From fd4a0bf95eaf8899c4c9260e480999e264e40ea0 Mon Sep 17 00:00:00 2001
From: ndrsnhs <andreas.neuhaus@openwb.de>
Date: Thu, 25 Jul 2024 12:16:18 +0200
Subject: [PATCH 001/205] add inverter component

---
 packages/modules/devices/varta/config.py   | 16 ++++++++++
 packages/modules/devices/varta/device.py   | 13 ++++++---
 packages/modules/devices/varta/inverter.py | 34 ++++++++++++++++++++++
 3 files changed, 59 insertions(+), 4 deletions(-)
 create mode 100644 packages/modules/devices/varta/inverter.py

diff --git a/packages/modules/devices/varta/config.py b/packages/modules/devices/varta/config.py
index 30066b73ec..d923c7dcbd 100644
--- a/packages/modules/devices/varta/config.py
+++ b/packages/modules/devices/varta/config.py
@@ -69,4 +69,20 @@ def __init__(self,
                  type: str = "counter",
                  id: int = 0,
                  configuration: VartaCounterConfiguration = None) -> None:
+        super().__init__(name, type, id, configuration or VartaCounterConfiguration())@auto_str
+
+
+@auto_str
+class VartaInverterConfiguration:
+    def __init__(self):
+        pass
+
+
+@auto_str
+class VartaInverterSetup(ComponentSetup[VartaInverterConfiguration]):
+    def __init__(self,
+                 name: str = "Varta Wechselrichter",
+                 type: str = "inverter",
+                 id: int = 0,
+                 configuration: VartaInverterConfiguration = None) -> None:
         super().__init__(name, type, id, configuration or VartaCounterConfiguration())
diff --git a/packages/modules/devices/varta/device.py b/packages/modules/devices/varta/device.py
index a027051bf0..053c58985a 100644
--- a/packages/modules/devices/varta/device.py
+++ b/packages/modules/devices/varta/device.py
@@ -13,8 +13,9 @@
 from modules.devices.varta.bat_api import VartaBatApi
 from modules.devices.varta.bat_modbus import VartaBatModbus
 from modules.devices.varta.config import (Varta, VartaConfiguration, VartaBatApiSetup, VartaBatModbusSetup,
-                                          VartaCounterSetup)
+                                          VartaCounterSetup, VartaInverterSetup)
 from modules.devices.varta.counter import VartaCounter
+from modules.devices.varta.inverter import VartaInverter
 
 log = logging.getLogger(__name__)
 
@@ -29,10 +30,13 @@ def create_bat_modbus_component(component_config: VartaBatModbusSetup):
     def create_counter_component(component_config: VartaCounterSetup):
         return VartaCounter(device_config.id, component_config, device_config.configuration.modbus_id)
 
-    def update_components(components: Iterable[Union[VartaBatApi, VartaBatModbus, VartaCounter]]):
+    def create_inverter_component(component_config: VartaInverterSetup):
+        return VartaInverter(device_config.id, component_config, device_config.configuration.modbus_id)
+
+    def update_components(components: Iterable[Union[VartaBatApi, VartaBatModbus, VartaCounter, VartaInverter]]):
         with client as c:
             for component in components:
-                if isinstance(component, (VartaBatModbus, VartaCounter)):
+                if isinstance(component, (VartaBatModbus, VartaCounter, VartaInverter)):
                     with SingleComponentUpdateContext(component.fault_state):
                         component.update(c)
         for component in components:
@@ -49,7 +53,8 @@ def update_components(components: Iterable[Union[VartaBatApi, VartaBatModbus, Va
         component_factory=ComponentFactoryByType(
             bat_api=create_bat_api_component,
             bat_modbus=create_bat_modbus_component,
-            counter=create_counter_component
+            counter=create_counter_component,
+            inverter=create_inverter_component
         ),
         component_updater=MultiComponentUpdater(update_components)
     )
diff --git a/packages/modules/devices/varta/inverter.py b/packages/modules/devices/varta/inverter.py
new file mode 100644
index 0000000000..1ff271e97a
--- /dev/null
+++ b/packages/modules/devices/varta/inverter.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+from dataclass_utils import dataclass_from_dict
+from modules.common.component_state import InverterState
+from modules.common.component_type import ComponentDescriptor
+from modules.common.fault_state import ComponentInfo, FaultState
+from modules.common.modbus import ModbusDataType, ModbusTcpClient_
+from modules.common.simcount import SimCounter
+from modules.common.store import get_counter_value_store
+from modules.devices.varta.config import VartaInverterSetup
+
+
+class VartaInverter:
+    def __init__(self, device_id: int,
+                 component_config: VartaInverterSetup,
+                 modbus_id: int) -> None:
+        self.__device_id = device_id
+        self.component_config = dataclass_from_dict(VartaInverterSetup, component_config)
+        self.__modbus_id = modbus_id
+        self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="pv")
+        self.store = get_counter_value_store(self.component_config.id)
+        self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
+
+    def update(self, client: ModbusTcpClient_):
+        power = client.read_holding_registers(1102, ModbusDataType.UINT_16, unit=self.__modbus_id) * -1
+        _, exported = self.sim_counter.sim_count(power)
+
+        inverter_state = InverterState(
+            power=power,
+            exported=exported
+        )
+        self.store.set(inverter_state)
+
+
+component_descriptor = ComponentDescriptor(configuration_factory=VartaInverterSetup)

From d16fd226bbd607f8dbd030be5198461f79c4b1ca Mon Sep 17 00:00:00 2001
From: ndrsnhs <andreas.neuhaus@openwb.de>
Date: Thu, 25 Jul 2024 12:34:21 +0200
Subject: [PATCH 002/205] minor changes

---
 packages/modules/devices/varta/config.py   | 2 +-
 packages/modules/devices/varta/inverter.py | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/packages/modules/devices/varta/config.py b/packages/modules/devices/varta/config.py
index d923c7dcbd..a838ed7c71 100644
--- a/packages/modules/devices/varta/config.py
+++ b/packages/modules/devices/varta/config.py
@@ -85,4 +85,4 @@ def __init__(self,
                  type: str = "inverter",
                  id: int = 0,
                  configuration: VartaInverterConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration or VartaCounterConfiguration())
+        super().__init__(name, type, id, configuration or VartaInverterConfiguration())
diff --git a/packages/modules/devices/varta/inverter.py b/packages/modules/devices/varta/inverter.py
index 1ff271e97a..264f9973d9 100644
--- a/packages/modules/devices/varta/inverter.py
+++ b/packages/modules/devices/varta/inverter.py
@@ -5,7 +5,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
-from modules.common.store import get_counter_value_store
+from modules.common.store import get_inverter_value_store
 from modules.devices.varta.config import VartaInverterSetup
 
 
@@ -17,7 +17,7 @@ def __init__(self, device_id: int,
         self.component_config = dataclass_from_dict(VartaInverterSetup, component_config)
         self.__modbus_id = modbus_id
         self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="pv")
-        self.store = get_counter_value_store(self.component_config.id)
+        self.store = get_inverter_value_store(self.component_config.id)
         self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
 
     def update(self, client: ModbusTcpClient_):

From 2b3305df50a34a8b5be41eb84ac4e8949298ec73 Mon Sep 17 00:00:00 2001
From: ndrsnhs <andreas.neuhaus@openwb.de>
Date: Thu, 25 Jul 2024 12:46:59 +0200
Subject: [PATCH 003/205] fix malformatted config

---
 packages/modules/devices/varta/config.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/modules/devices/varta/config.py b/packages/modules/devices/varta/config.py
index a838ed7c71..d49e005e0a 100644
--- a/packages/modules/devices/varta/config.py
+++ b/packages/modules/devices/varta/config.py
@@ -69,7 +69,7 @@ def __init__(self,
                  type: str = "counter",
                  id: int = 0,
                  configuration: VartaCounterConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration or VartaCounterConfiguration())@auto_str
+        super().__init__(name, type, id, configuration or VartaCounterConfiguration())
 
 
 @auto_str

From e3a744b91f0d00b71ba1fb64040bdcc78e9c2d4d Mon Sep 17 00:00:00 2001
From: ndrsnhs <andreas.neuhaus@openwb.de>
Date: Wed, 31 Jul 2024 12:40:27 +0200
Subject: [PATCH 004/205] add possibility to invert external inverter power

---
 packages/helpermodules/update_config.py             | 13 +++++++++++++
 packages/modules/devices/solaredge/config.py        |  3 ++-
 .../modules/devices/solaredge/external_inverter.py  |  3 ++-
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 8e7cd57256..81e6e3e0f8 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -1651,3 +1651,16 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: configuration_payload}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 54)
+
+
+def upgrade_datastore_54(self) -> None:
+    def upgrade(topic: str, payload) -> None:
+        if re.search("openWB/system/device/[0-9]+", topic) is not None:
+            payload = decode_payload(payload)
+            # update version and firmware of GoodWe
+            if payload.get("name") == "SolarEdge externer Wechselrichter"\
+                    and "factor" not in payload["configuration"]:
+                payload["configuration"].update({"factor": 1})
+            Pub().pub(topic, payload)
+    self._loop_all_received_topics(upgrade)
+    self.__update_topic("openWB/system/datastore_version", 55)
diff --git a/packages/modules/devices/solaredge/config.py b/packages/modules/devices/solaredge/config.py
index ad275811e0..e4d7a05cd0 100644
--- a/packages/modules/devices/solaredge/config.py
+++ b/packages/modules/devices/solaredge/config.py
@@ -51,9 +51,10 @@ def __init__(self,
 
 
 class SolaredgeExternalInverterConfiguration:
-    def __init__(self, modbus_id: int = 1, meter_id: int = 2):
+    def __init__(self, modbus_id: int = 1, meter_id: int = 2, factor: int = 1):
         self.modbus_id = modbus_id
         self.meter_id = meter_id
+        self.factor = factor
 
 
 class SolaredgeExternalInverterSetup(ComponentSetup[SolaredgeExternalInverterConfiguration]):
diff --git a/packages/modules/devices/solaredge/external_inverter.py b/packages/modules/devices/solaredge/external_inverter.py
index 4b9a438332..838efe486e 100644
--- a/packages/modules/devices/solaredge/external_inverter.py
+++ b/packages/modules/devices/solaredge/external_inverter.py
@@ -37,7 +37,8 @@ def update(self) -> None:
         self.store.set(self.read_state())
 
     def read_state(self) -> InverterState:
-        power = self._read_scaled_int16(self.registers.powers, 4)[0]
+        factor = self.component_config.configuration.factor
+        power = self._read_scaled_int16(self.registers.powers, 4)[0] * factor
         exported = self._read_scaled_uint32(self.registers.imp_exp, 8)[0]
         currents = self._read_scaled_int16(self.registers.currents, 3)
 

From 6b5827388e2a3d81ab41446aaaef28f651a2992b Mon Sep 17 00:00:00 2001
From: ndrsnhs <andreas.neuhaus@openwb.de>
Date: Wed, 31 Jul 2024 15:58:00 +0200
Subject: [PATCH 005/205] add Solis inverter

---
 packages/modules/devices/solis/bat.py      | 39 ++++++++++++
 packages/modules/devices/solis/config.py   | 72 ++++++++++++++++++++++
 packages/modules/devices/solis/counter.py  | 46 ++++++++++++++
 packages/modules/devices/solis/device.py   | 48 +++++++++++++++
 packages/modules/devices/solis/inverter.py | 41 ++++++++++++
 packages/modules/devices/solis/version.py  |  6 ++
 6 files changed, 252 insertions(+)
 create mode 100644 packages/modules/devices/solis/bat.py
 create mode 100644 packages/modules/devices/solis/config.py
 create mode 100644 packages/modules/devices/solis/counter.py
 create mode 100644 packages/modules/devices/solis/device.py
 create mode 100644 packages/modules/devices/solis/inverter.py
 create mode 100644 packages/modules/devices/solis/version.py

diff --git a/packages/modules/devices/solis/bat.py b/packages/modules/devices/solis/bat.py
new file mode 100644
index 0000000000..4ef463864b
--- /dev/null
+++ b/packages/modules/devices/solis/bat.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+import logging
+from dataclass_utils import dataclass_from_dict
+from modules.common.component_state import BatState
+from modules.common.component_type import ComponentDescriptor
+from modules.common.fault_state import ComponentInfo, FaultState
+from modules.common.modbus import ModbusDataType, ModbusTcpClient_
+from modules.common.store import get_bat_value_store
+from modules.devices.solis.config import SolisBatSetup
+
+log = logging.getLogger(__name__)
+
+
+class SolisBat:
+    def __init__(self, component_config: SolisBatSetup) -> None:
+        self.component_config = dataclass_from_dict(SolisBatSetup, component_config)
+        self.store = get_bat_value_store(self.component_config.id)
+        self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
+
+    def update(self, client: ModbusTcpClient_) -> None:
+        unit = self.component_config.configuration.modbus_id
+
+        power = client.read_holding_registers(33149, ModbusDataType.INT_32, unit=unit) * -1
+        soc = client.read_holding_registers(31038, ModbusDataType.UINT_16, unit=unit)
+        # Geladen in kWh
+        imported = client.read_holding_registers(33161, ModbusDataType.UINT_32, unit=unit) * 1000
+        # Entladen in kWh * 0,1
+        exported = client.read_holding_registers(33165, ModbusDataType.UINT_32, unit=unit) * 100
+
+        bat_state = BatState(
+            power=power,
+            soc=soc,
+            imported=imported,
+            exported=exported
+        )
+        self.store.set(bat_state)
+
+
+component_descriptor = ComponentDescriptor(configuration_factory=SolisBatSetup)
diff --git a/packages/modules/devices/solis/config.py b/packages/modules/devices/solis/config.py
new file mode 100644
index 0000000000..3d64cf8914
--- /dev/null
+++ b/packages/modules/devices/solis/config.py
@@ -0,0 +1,72 @@
+from typing import Optional
+from helpermodules.auto_str import auto_str
+
+from modules.common.component_setup import ComponentSetup
+
+
+class SolisConfiguration:
+    def __init__(self,
+                 ip_address: Optional[str] = None,
+                 port: int = 502):
+        self.ip_address = ip_address
+        self.port = port
+
+
+class Solis:
+    def __init__(self,
+                 name: str = "Solis",
+                 type: str = "solis",
+                 id: int = 0,
+                 configuration: SolisConfiguration = None) -> None:
+        self.name = name
+        self.type = type
+        self.id = id
+        self.configuration = configuration or SolisConfiguration()
+
+
+@auto_str
+class SolisBatConfiguration:
+    def __init__(self, modbus_id: int = 1):
+        self.modbus_id = modbus_id
+
+
+@auto_str
+class SolisBatSetup(ComponentSetup[SolisBatConfiguration]):
+    def __init__(self,
+                 name: str = "Solis Speicher",
+                 type: str = "bat",
+                 id: int = 0,
+                 configuration: SolisBatConfiguration = None) -> None:
+        super().__init__(name, type, id, configuration or SolisBatConfiguration())
+
+
+@auto_str
+class SolisCounterConfiguration:
+    def __init__(self, modbus_id: int = 1):
+        self.modbus_id = modbus_id
+
+
+@auto_str
+class SolisCounterSetup(ComponentSetup[SolisCounterConfiguration]):
+    def __init__(self,
+                 name: str = "Solis Zähler",
+                 type: str = "counter",
+                 id: int = 0,
+                 configuration: SolisCounterConfiguration = None) -> None:
+        super().__init__(name, type, id, configuration or SolisCounterConfiguration())
+
+
+@auto_str
+class SolisInverterConfiguration:
+    def __init__(self, modbus_id: int = 1):
+        self.modbus_id = modbus_id
+
+
+@auto_str
+class SolisInverterSetup(ComponentSetup[SolisInverterConfiguration]):
+    def __init__(self,
+                 name: str = "Solis Wechselrichter",
+                 type: str = "inverter",
+                 id: int = 0,
+                 configuration: SolisInverterConfiguration = None) -> None:
+        super().__init__(name, type, id, configuration or SolisInverterConfiguration())
diff --git a/packages/modules/devices/solis/counter.py b/packages/modules/devices/solis/counter.py
new file mode 100644
index 0000000000..aae42e7322
--- /dev/null
+++ b/packages/modules/devices/solis/counter.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python3
+from dataclass_utils import dataclass_from_dict
+from modules.common.component_state import CounterState
+from modules.common.component_type import ComponentDescriptor
+from modules.common.fault_state import ComponentInfo, FaultState
+from modules.common.modbus import ModbusDataType, ModbusTcpClient_
+from modules.common.store import get_counter_value_store
+from modules.devices.solis.config import SolisCounterSetup
+from modules.devices.solis.version import SolisVersion
+
+
+class SolisCounter:
+    def __init__(self, component_config: SolisCounterSetup,
+                 version: SolisVersion) -> None:
+        self.component_config = dataclass_from_dict(SolisCounterSetup, component_config)
+        self.store = get_counter_value_store(self.component_config.id)
+        self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
+        self.version = version
+
+    def update(self, client: ModbusTcpClient_):
+        unit = self.component_config.configuration.modbus_id
+        if self.version == SolisVersion.inverter:
+            # register offset -1
+            power = client.read_holding_registers(3262, ModbusDataType.INT_32, unit=unit)
+            powers = client.read_holding_registers(3256, [ModbusDataType.INT_32]*3, unit=unit)
+            frequency = client.read_holding_registers(3281, ModbusDataType.UINT_16, unit=unit) / 100
+            imported = client.read_holding_registers(3282, ModbusDataType.UINT_32, unit=unit) * 10
+            exported = client.read_holding_registers(3284, ModbusDataType.UINT_32, unit=unit) * 10
+        elif self.version == SolisVersion.hybrid:
+            power = client.read_holding_registers(33263, ModbusDataType.INT_32, unit=unit)
+            powers = client.read_holding_registers(33257, [ModbusDataType.INT_32]*3, unit=unit)
+            frequency = client.read_holding_registers(33282, ModbusDataType.UINT_16, unit=unit) / 100
+            imported = client.read_holding_registers(33283, ModbusDataType.UINT_32, unit=unit) * 10
+            exported = client.read_holding_registers(33285, ModbusDataType.UINT_32, unit=unit) * 10
+
+        counter_state = CounterState(
+            imported=imported,
+            exported=exported,
+            power=power,
+            powers=powers,
+            frequency=frequency
+        )
+        self.store.set(counter_state)
+
+
+component_descriptor = ComponentDescriptor(configuration_factory=SolisCounterSetup)
diff --git a/packages/modules/devices/solis/device.py b/packages/modules/devices/solis/device.py
new file mode 100644
index 0000000000..1f5553edd1
--- /dev/null
+++ b/packages/modules/devices/solis/device.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+import logging
+from typing import Iterable, Union
+
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
+from modules.common.modbus import ModbusTcpClient_
+from modules.devices.solis.bat import SolisBat
+from modules.devices.solis.counter import SolisCounter
+from modules.devices.solis.inverter import SolisInverter
+from modules.devices.solis.config import Solis, SolisBatSetup, SolisCounterSetup, SolisInverterSetup
+
+log = logging.getLogger(__name__)
+
+
+def create_device(device_config: Solis):
+    def create_bat_component(component_config: SolisBatSetup):
+        return SolisBat(component_config)
+
+    def create_counter_component(component_config: SolisCounterSetup):
+        return SolisCounter(component_config, device_config.configuration.version)
+
+    def create_inverter_component(component_config: SolisInverterSetup):
+        return SolisInverter(component_config, device_config.configuration.version)
+
+    def update_components(components: Iterable[Union[SolisBat, SolisCounter, SolisInverter]]):
+        with client as c:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update(c)
+
+    try:
+        client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=Solis)
diff --git a/packages/modules/devices/solis/inverter.py b/packages/modules/devices/solis/inverter.py
new file mode 100644
index 0000000000..ace20b837c
--- /dev/null
+++ b/packages/modules/devices/solis/inverter.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+from typing import Dict, Union
+
+from dataclass_utils import dataclass_from_dict
+from modules.common.component_state import InverterState
+from modules.common.component_type import ComponentDescriptor
+from modules.common.fault_state import ComponentInfo, FaultState
+from modules.common.modbus import ModbusDataType, ModbusTcpClient_
+from modules.common.store import get_inverter_value_store
+from modules.devices.solis.config import SolisInverterSetup
+from modules.devices.solis.version import SolisVersion
+
+
+class SolisInverter:
+    def __init__(self, component_config: Union[Dict, SolisInverterSetup],
+                 version: SolisVersion) -> None:
+        self.component_config = dataclass_from_dict(SolisInverterSetup, component_config)
+        self.store = get_inverter_value_store(self.component_config.id)
+        self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
+        self.version = version
+
+    def update(self, client: ModbusTcpClient_) -> None:
+        unit = self.component_config.configuration.modbus_id
+
+        if self.version == SolisVersion.inverter:
+            power = client.read_holding_registers(3004, ModbusDataType.UINT_32, unit=unit) * -1
+            # Unit 1kWh
+            exported = client.read_holding_registers(3008, ModbusDataType.UINT_32, unit=unit) * 1000
+        elif self.version == SolisVersion.hybrid:
+            power = client.read_holding_registers(33057, ModbusDataType.UINT_32, unit=unit) * -1
+            # Unit 1kWh
+            exported = client.read_holding_registers(33029, ModbusDataType.UINT_32, unit=unit) * 1000
+
+        inverter_state = InverterState(
+            power=power,
+            exported=exported
+        )
+        self.store.set(inverter_state)
+
+
+component_descriptor = ComponentDescriptor(configuration_factory=SolisInverterSetup)
diff --git a/packages/modules/devices/solis/version.py b/packages/modules/devices/solis/version.py
new file mode 100644
index 0000000000..f1a0fe5854
--- /dev/null
+++ b/packages/modules/devices/solis/version.py
@@ -0,0 +1,6 @@
+from enum import Enum
+
+
+class SolisVersion(Enum):
+    inverter = "inverter"
+    hybrid = "hybrid"

From 30c053f1507da6a1d440532fbdf8478c97709232 Mon Sep 17 00:00:00 2001
From: okaegi <okaegi@pinball4you.ch>
Date: Thu, 8 Aug 2024 13:53:38 +0200
Subject: [PATCH 006/205] =?UTF-8?q?steuerung=20=C3=BCber=20mqtt...?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Neu kann auch für Acthor und andere der Zu meldende Überschuss im Manuellen  Modus übergeben werden.
Alle möglichen MQTT Topics sind im mqtt modul besschrieben:
Generisches MQTT modul
Wenn Einschaltbedingung erreicht (Beispiel hier mit Device 2)
openWB/LegacySmartHome/Devices/2/ReqRelay = 1
openWB/LegacySmartHome/Devices/2/Ueberschuss = in Watt
Wenn Ausschaltbedingung erreicht
openWB/LegacySmartHome/Devices/2/ReqRelay = 0
openWB/LegacySmartHome/Devices/2/Ueberschuss = in Watt
ReqRelay gibt den Status vom Gerät aus Sicht openWb an (1 = eingeschaltet, 0 = ausgeschaltet)
Bei der periodischen Abfrage wird die aktuelle Leistung
openWB/set/LegacySmartHome/Devices/2/Aktpower = in Watt erwartet
openWB/set/LegacySmartHome/Devices/2/Tempa = Temperatur in C mit max 2 Nachkommastellen
openWB/set/LegacySmartHome/Devices/2/Tempb = Temperatur in C mit max 2 Nachkommastellen
openWB/set/LegacySmartHome/Devices/2/Tempc = Temperatur in C mit max 2 Nachkommastellen
und der aktuelle Zähler in Wattstunden wird hier erwartet
openWB/set/LegacySmartHome/Devices/2/Powerc
wenn kein Zähler übergeben oder 0 übergeben wird, wird der Zähler selber gerechnet
openWB/set/LegacySmartHome/Devices/2/Ueberschuss = in Watt
alle Geräte (nicht nur MQTT) können bezüglich manuell / automatisch von extern gesteuert werden.
openWB/set/LegacySmartHome/config/set/Devices/2/mode
Mode steuert das Gerät (1 = manueller Modus, 0 = automatischer Modus)
openWB/set/LegacySmartHome/config/set/Devices/2/device_manual_control
device_manual_control steuert das Ferät im manuellen Modus (1 = ein, 0 = aus)
openWB/set/LegacySmartHome/config/set/Devices/2/manueb = vorgebener Überschuss in Watt ohne Nachkommastellen
Dieser Wert wird wenn das Gerät auf Manueller Modus und ein geschaltet ist, als Überschuss an das jeweilige Gerät übergeben. (nur relevant für Acthor, Elwa, IDM, Lambda die mit überschuss gesteuert werden)
---
 packages/helpermodules/setdata.py |  4 ++++
 packages/smarthome/smartbase.py   |  6 +++++-
 packages/smarthome/smartbase0.py  |  1 +
 packages/smarthome/smartcommon.py | 14 ++++++++++++++
 4 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py
index ddc0329ea3..9d674b74c5 100644
--- a/packages/helpermodules/setdata.py
+++ b/packages/helpermodules/setdata.py
@@ -1117,6 +1117,10 @@ def process_legacy_smart_home_topic(self, msg):
                     if f"openWB/set/LegacySmartHome/config/set/Devices/{index}/device_manual_control" in msg.topic:
                         with open(self._get_ramdisk_path()/f"smarthome_device_manual_control_{index}", 'w') as f:
                             f.write(str(decode_payload(msg.payload)))
+                    if f"openWB/set/LegacySmartHome/config/set/Devices/{index}/manueb" in msg.topic:
+                        manueb = int(msg.payload)                            
+                        with open(self._get_ramdisk_path()/f"smarthome_device_manual_ueb_{index}", 'w') as f:
+                            f.write(str(manueb))
                 elif (f"openWB/set/LegacySmartHome/Devices/{index}/Ueberschuss" in msg.topic or
                         f"openWB/set/LegacySmartHome/Devices/{index}/ReqRelay" in msg.topic or
                         f"openWB/set/LegacySmartHome/Devices/{index}/Aktpower" in msg.topic or
diff --git a/packages/smarthome/smartbase.py b/packages/smarthome/smartbase.py
index db423658e9..1fd299f913 100644
--- a/packages/smarthome/smartbase.py
+++ b/packages/smarthome/smartbase.py
@@ -449,8 +449,10 @@ def getueb(self) -> None:
         #    (1 = mit Speicher, 2 = mit offset , 0 = manual eingeschaltet)
         if (self.ueberschussberechnung == 2):
             self.devuberschuss = self._uberschussoffset
-        else:
+        elif (self.ueberschussberechnung == 1):
             self.devuberschuss = self._uberschuss
+        else:
+            self.devuberschuss = self.device_manual_ueb
 
     def preturn(self, zustand: int, ueberschussberechnung: int, updatecnt: int) -> None:
         self.ueberschussberechnung = ueberschussberechnung
@@ -483,6 +485,8 @@ def sepwatt(self, newwatt: int, newwattk: int) -> Tuple[int, int]:
     def conditions(self, speichersoc: int) -> None:
         # do not do anything in case none type or can switch = no
         # or device manuam mode
+        if (self.device_manual == 1):
+            self.ueberschussberechnung = 0
         if ((self.device_canswitch == 0) or
            (self.device_manual == 1)):
             return
diff --git a/packages/smarthome/smartbase0.py b/packages/smarthome/smartbase0.py
index bb9a52678e..2d5664ebc6 100644
--- a/packages/smarthome/smartbase0.py
+++ b/packages/smarthome/smartbase0.py
@@ -102,6 +102,7 @@ def __init__(self) -> None:
         self._wpos = 0
         self._deviceconfigured = '1'
         self._deviceconfiguredold = '9'
+        self.device_manual_ueb = 0
         # not none !
         self._oldmeasuretype1 = 'empty'
         self.c_oldstampeinschaltdauer = 0
diff --git a/packages/smarthome/smartcommon.py b/packages/smarthome/smartcommon.py
index c110e0d0a1..5ab6395436 100644
--- a/packages/smarthome/smartcommon.py
+++ b/packages/smarthome/smartcommon.py
@@ -446,6 +446,14 @@ def loadregelvars(wattbezug: int, speicherleistung: int, speichersoc: int,
                             mydevice.device_manual_control = int(value.read())
             except Exception:
                 pass
+            try:
+                with open(bp+'/ramdisk/smarthome_device_manual_ueb_'
+                          + str(i), 'r') as value:
+                    for mydevice in mydevices:
+                        if (str(i) == str(mydevice.device_nummer)):
+                            mydevice.device_manual_ueb = int(value.read())
+            except Exception:
+                pass
     return uberschuss, uberschussoffset
 
 
@@ -489,6 +497,12 @@ def mainloop(wattbezug: int, speicherleistung: int, speichersoc: int, pvwatt: in
                             f.write(str(mydevice.device_manual_control))
                     log.info("File: " + str(fname) + " created. Content: " + str(mydevice.device_manual_control))
                     os.chmod(fname, 0o777)
+                    fname = bp+'/ramdisk/smarthome_device_manual_ueb_'+str(i)
+                    if not os.path.isfile(fname):
+                        with open(fname,  'w') as f:
+                            f.write(str(mydevice.device_manual_ueb))
+                    log.info("File: " + str(fname) + " created. Content: " + str(mydevice.device_manual_ueb))
+                    os.chmod(fname, 0o777)
     mqtt_man = {}
     sendmess = 0
     uberschuss, uberschussoffset = loadregelvars(wattbezug, speicherleistung, speichersoc, pvwatt, chargestatus)

From aaf70879ba13a905dd767d245919d2f12c2f2479 Mon Sep 17 00:00:00 2001
From: okaegi <okaegi@pinball4you.ch>
Date: Thu, 8 Aug 2024 13:57:43 +0200
Subject: [PATCH 007/205] flake8

..
---
 packages/helpermodules/setdata.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py
index 9d674b74c5..49f2a3cd32 100644
--- a/packages/helpermodules/setdata.py
+++ b/packages/helpermodules/setdata.py
@@ -1118,7 +1118,7 @@ def process_legacy_smart_home_topic(self, msg):
                         with open(self._get_ramdisk_path()/f"smarthome_device_manual_control_{index}", 'w') as f:
                             f.write(str(decode_payload(msg.payload)))
                     if f"openWB/set/LegacySmartHome/config/set/Devices/{index}/manueb" in msg.topic:
-                        manueb = int(msg.payload)                            
+                        manueb = int(msg.payload)
                         with open(self._get_ramdisk_path()/f"smarthome_device_manual_ueb_{index}", 'w') as f:
                             f.write(str(manueb))
                 elif (f"openWB/set/LegacySmartHome/Devices/{index}/Ueberschuss" in msg.topic or

From 6133732eb00273278d87cd77b2cb42833ce0d276 Mon Sep 17 00:00:00 2001
From: ndrsnhs <andreas.neuhaus@openwb.de>
Date: Wed, 14 Aug 2024 08:51:22 +0200
Subject: [PATCH 008/205] add version to config

---
 packages/modules/devices/solis/config.py  |  5 ++++-
 packages/modules/devices/solis/counter.py | 18 +++++++-----------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/packages/modules/devices/solis/config.py b/packages/modules/devices/solis/config.py
index 3d64cf8914..dcfac74cb2 100644
--- a/packages/modules/devices/solis/config.py
+++ b/packages/modules/devices/solis/config.py
@@ -2,14 +2,17 @@
 from helpermodules.auto_str import auto_str
 
 from modules.common.component_setup import ComponentSetup
+from modules.devices.solis.version import SolisVersion
 
 
 class SolisConfiguration:
     def __init__(self,
                  ip_address: Optional[str] = None,
-                 port: int = 502):
+                 port: int = 502,
+                 version: SolisVersion = SolisVersion.hybrid):
         self.ip_address = ip_address
         self.port = port
+        self.version = version
 
 
 class Solis:
diff --git a/packages/modules/devices/solis/counter.py b/packages/modules/devices/solis/counter.py
index aae42e7322..068439dfc0 100644
--- a/packages/modules/devices/solis/counter.py
+++ b/packages/modules/devices/solis/counter.py
@@ -20,18 +20,14 @@ def __init__(self, component_config: SolisCounterSetup,
     def update(self, client: ModbusTcpClient_):
         unit = self.component_config.configuration.modbus_id
         if self.version == SolisVersion.inverter:
-            # register offset -1
-            power = client.read_holding_registers(3262, ModbusDataType.INT_32, unit=unit)
-            powers = client.read_holding_registers(3256, [ModbusDataType.INT_32]*3, unit=unit)
-            frequency = client.read_holding_registers(3281, ModbusDataType.UINT_16, unit=unit) / 100
-            imported = client.read_holding_registers(3282, ModbusDataType.UINT_32, unit=unit) * 10
-            exported = client.read_holding_registers(3284, ModbusDataType.UINT_32, unit=unit) * 10
+            register_offset = -1
         elif self.version == SolisVersion.hybrid:
-            power = client.read_holding_registers(33263, ModbusDataType.INT_32, unit=unit)
-            powers = client.read_holding_registers(33257, [ModbusDataType.INT_32]*3, unit=unit)
-            frequency = client.read_holding_registers(33282, ModbusDataType.UINT_16, unit=unit) / 100
-            imported = client.read_holding_registers(33283, ModbusDataType.UINT_32, unit=unit) * 10
-            exported = client.read_holding_registers(33285, ModbusDataType.UINT_32, unit=unit) * 10
+            register_offset = 30000
+        power = client.read_holding_registers(3263 + register_offset, ModbusDataType.INT_32, unit=unit)
+        powers = client.read_holding_registers(3257 + register_offset, [ModbusDataType.INT_32]*3, unit=unit)
+        frequency = client.read_holding_registers(3282 + register_offset, ModbusDataType.UINT_16, unit=unit) / 100
+        imported = client.read_holding_registers(3283 + register_offset, ModbusDataType.UINT_32, unit=unit) * 10
+        exported = client.read_holding_registers(3285 + register_offset, ModbusDataType.UINT_32, unit=unit) * 10
 
         counter_state = CounterState(
             imported=imported,

From 675836840094d73c0bebb2f4dc2f8d4f321cb0ac Mon Sep 17 00:00:00 2001
From: ndrsnhs <andreas.neuhaus@openwb.de>
Date: Wed, 14 Aug 2024 10:27:12 +0200
Subject: [PATCH 009/205] check for type instead of name in update_config

---
 packages/helpermodules/update_config.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 81e6e3e0f8..cc342054af 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -1658,7 +1658,7 @@ def upgrade(topic: str, payload) -> None:
         if re.search("openWB/system/device/[0-9]+", topic) is not None:
             payload = decode_payload(payload)
             # update version and firmware of GoodWe
-            if payload.get("name") == "SolarEdge externer Wechselrichter"\
+            if payload.get("type") == "external_inverter"\
                     and "factor" not in payload["configuration"]:
                 payload["configuration"].update({"factor": 1})
             Pub().pub(topic, payload)

From c5a287443b1c921d15b40083e24223808a4ed566 Mon Sep 17 00:00:00 2001
From: Claus Hagen <cshagen@hagens.ch>
Date: Thu, 29 Aug 2024 07:54:24 +0200
Subject: [PATCH 010/205] additions to the display colors theme

---
 .../display_themes/colors/source/package.json |  10 +-
 .../colors/source/src/assets/css/style.css    |  20 +-
 .../source/src/assets/js/sendMessages.ts      |   8 +
 .../source/src/assets/js/themeConfig.ts       |   1 +
 .../chargePointList/CPChargeConfig.vue        | 168 ++++++++++
 .../chargePointList/CPChargePoint.vue         | 188 ++---------
 .../chargePointList/CPConfigInstant.vue       |  21 +-
 .../components/chargePointList/CPConfigPv.vue |  32 +-
 .../chargePointList/CPConfigScheduled.vue     | 107 +++++++
 .../chargePointList/CPConfigTimed.vue         | 104 ++++++
 .../components/chargePointList/CPVehicle.vue  | 200 ++++++++++++
 .../src/components/chargePointList/model.ts   |  41 ++-
 .../components/energyMeter/EnergyMeter.vue    |  84 ++---
 .../src/components/powerGraph/PowerGraph.vue  | 115 +++----
 .../src/components/powerMeter/PowerMeter.vue  | 296 +++++++++---------
 .../src/components/priceChart/PriceChart.vue  | 180 ++++++-----
 .../src/components/shared/ConfigItem.vue      |   6 +-
 .../src/components/shared/DisplayButton.vue   |   5 +-
 .../src/components/shared/RangeInput.vue      |  17 +-
 .../src/components/shared/SwitchInput.vue     |  28 +-
 .../source/src/components/shared/WBWidget.vue | 113 ++++---
 .../src/components/shared/WbSubwidget.vue     |  86 -----
 .../src/components/shared/WbWidgetFlex.vue    |   3 +
 .../colors/source/src/views/DisplayTheme.vue  |   4 +-
 .../colors/source/src/views/NavigationBar.vue |  26 +-
 .../colors/source/src/views/SettingsPage.vue  | 173 +++-------
 26 files changed, 1222 insertions(+), 814 deletions(-)
 create mode 100755 packages/modules/display_themes/colors/source/src/components/chargePointList/CPChargeConfig.vue
 create mode 100755 packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigScheduled.vue
 create mode 100755 packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigTimed.vue
 create mode 100644 packages/modules/display_themes/colors/source/src/components/chargePointList/CPVehicle.vue
 delete mode 100755 packages/modules/display_themes/colors/source/src/components/shared/WbSubwidget.vue

diff --git a/packages/modules/display_themes/colors/source/package.json b/packages/modules/display_themes/colors/source/package.json
index 4c8a6443c0..6994a1f101 100644
--- a/packages/modules/display_themes/colors/source/package.json
+++ b/packages/modules/display_themes/colors/source/package.json
@@ -15,19 +15,19 @@
   "dependencies": {
     "bootstrap": "^5.3.3",
     "d3": "^7.9.0",
-    "mqtt": "^5.9.1",
+    "mqtt": "^5.10.0",
     "rollup-plugin-polyfill-node": "^0.13.0",
     "vue": "^3.4.21"
   },
   "devDependencies": {
-    "@babel/types": "^7.25.2",
+    "@babel/types": "^7.25.4",
     "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
     "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
     "@rushstack/eslint-patch": "^1.10.4",
     "@tsconfig/node20": "^20.1.4",
     "@types/bootstrap": "^5.2.10",
     "@types/d3": "^7.4.3",
-    "@types/node": "^20.14.14",
+    "@types/node": "^20.16.1",
     "@vitejs/plugin-vue": "^5.1.2",
     "@vue/eslint-config-prettier": "^8.0.0",
     "@vue/eslint-config-typescript": "^12.0.0",
@@ -37,9 +37,9 @@
     "eslint-plugin-vue": "^9.27.0",
     "npm-run-all2": "^6.2.2",
     "prettier": "^3.3.3",
-    "rollup": "^4.20.0",
+    "rollup": "^4.21.0",
     "typescript": "~5.4.0",
-    "vite": "^5.1.7",
+    "vite": "^5.4.2",
     "vue-tsc": "^2.0.29"
   }
 }
diff --git a/packages/modules/display_themes/colors/source/src/assets/css/style.css b/packages/modules/display_themes/colors/source/src/assets/css/style.css
index 3e189d9588..d3b2cbf131 100755
--- a/packages/modules/display_themes/colors/source/src/assets/css/style.css
+++ b/packages/modules/display_themes/colors/source/src/assets/css/style.css
@@ -1,7 +1,7 @@
 /*
  * style.css
  * colors theme for openwb 2.0
- * Copyright (c) 2022-24 Claus Hagen
+ * Copyright (c) 2022 Claus Hagen
  */
 
 html {
@@ -213,24 +213,16 @@ body>.container-fluid {
 	background-color: var(--color-frame);
 }
 
-.wb-widget {
-	background-color: var(--color-bg);
-	border: 0.1px solid var(--color-frame);
-	align-self: stretch;
-	width: 100%;
-	border-radius: 30px;
-}
 
-.wb-subwidget {
-	border: 0px solid var(--color-subframe);
-	padding: var(--padding-widget);
-}
 
 .grid12 {
 	display: grid;
 	grid-template-columns: repeat(12, auto);
 	gap: .2em;
-	justify-items: center;
+	justify-items: left;
+}
+.grid-col-2 {
+	grid-column: span 2;
 }
 .grid-col-3 {
 	grid-column: span 3;
@@ -336,4 +328,4 @@ option {
 }
 .fa-sliders {
 	color: var(--color-pv);
-}
+}
\ No newline at end of file
diff --git a/packages/modules/display_themes/colors/source/src/assets/js/sendMessages.ts b/packages/modules/display_themes/colors/source/src/assets/js/sendMessages.ts
index 14e680880d..8f18815068 100755
--- a/packages/modules/display_themes/colors/source/src/assets/js/sendMessages.ts
+++ b/packages/modules/display_themes/colors/source/src/assets/js/sendMessages.ts
@@ -14,6 +14,10 @@ const topics: { [topic: string]: string } = {
 	cpPriority: 'openWB/set/vehicle/template/charge_template/%/prio',
 	cpTimedCharging:
 		'openWB/set/vehicle/template/charge_template/%/time_charging/active',
+	cpTimedPlanActive:
+		'openWB/set/vehicle/template/charge_template/%/time_charging/plans/@/active',
+	cpScheduledPlanActive:
+		'openWB/set/vehicle/template/charge_template/%/chargemode/scheduled_charging/plans/@/active',
 	pvBatteryPriority:
 		'openWB/set/general/chargemode_config/pv_charging/bat_mode',
 	cpVehicle: 'openWB/set/chargepoint/%/config/ev',
@@ -50,6 +54,7 @@ export function updateServer(
 	item: string,
 	value: string | number | boolean,
 	index: number = 0,
+	index2: number | undefined = undefined,
 ) {
 	if (isNaN(index)) {
 		console.warn('Invalid index')
@@ -79,6 +84,9 @@ export function updateServer(
 			break
 		default:
 			topic = topic.replace('%', String(index))
+			if (index2 != undefined) {
+				topic = topic.replace('@', String(index2))
+			}
 	}
 	switch (typeof value) {
 		case 'number':
diff --git a/packages/modules/display_themes/colors/source/src/assets/js/themeConfig.ts b/packages/modules/display_themes/colors/source/src/assets/js/themeConfig.ts
index 76c4316788..73785f1520 100755
--- a/packages/modules/display_themes/colors/source/src/assets/js/themeConfig.ts
+++ b/packages/modules/display_themes/colors/source/src/assets/js/themeConfig.ts
@@ -369,6 +369,7 @@ export const infotext: { [key: string]: string } = {
 	pricebased:
 		'Laden bei dynamischem Stromtarif, wenn eingestellter Maximalpreis unterboten wird.',
 }
+
 interface Preferences {
 	hideSH?: number[]
 	showLG?: boolean
diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/CPChargeConfig.vue b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPChargeConfig.vue
new file mode 100755
index 0000000000..6a01d1c6b9
--- /dev/null
+++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPChargeConfig.vue
@@ -0,0 +1,168 @@
+<template>
+	<div class="settingslist">
+		<ConfigItem
+			v-if="Object.keys(vehicles).length > 1"
+			title="Fahrzeug wechseln"
+			icon="fa-car"
+			:fullwidth="true"
+		>
+			<RadioInput
+				v-model.number="connectedVehicle"
+				:options="Object.values(vehicles).map((v) => [v.name, v.id])"
+			/>
+		</ConfigItem>
+		<ConfigItem
+			v-if="Object.keys(chargeTemplates).length > 1"
+			title="Ladeprofil"
+			icon="fa-sliders"
+			iconcolor="var(--color-pv)"
+		>
+			<RadioInput
+				v-if="vehicles[connectedVehicle]"
+				v-model.number="vehicles[connectedVehicle].chargeTemplateId"
+				:options="
+					Object.keys(chargeTemplates).map((v) => [chargeTemplates[+v].name, v])
+				"
+			/>
+		</ConfigItem>
+		<hr class="grid-col-12 my-2" />
+		<ConfigItem
+			title="Priorität"
+			icon="fa-star"
+			iconcolor="var(--color-evu)"
+			:fullwidth="true"
+		>
+			<SwitchInput v-model="cp.hasPriority" />
+		</ConfigItem>
+		<ConfigItem
+			title="Zeitplan aktivieren"
+			icon="fa-clock"
+			iconcolor="var(--color-battery)"
+		>
+			<SwitchInput v-model="timedCharging"></SwitchInput>
+		</ConfigItem>
+		<ConfigItem
+			title="Sperren"
+			icon="fa-lock"
+			iconcolor="var(--color-evu)"
+			:fullwidth="true"
+		>
+			<SwitchInput v-model="cp.isLocked" />
+		</ConfigItem>
+		<!-- Priority -->
+
+		<ConfigItem
+			title="Strompreisbasiert laden"
+			icon="fa-coins"
+			iconcolor="var(--color-battery)"
+		>
+			<SwitchInput v-model="etActive"></SwitchInput>
+		</ConfigItem>
+		<hr v-if="globalData.isBatteryConfigured" class="grid-col-12 my-2" />
+		<ConfigItem
+			v-if="globalData.isBatteryConfigured"
+			title="PV-Priorität (global)"
+			icon="fa-car-battery"
+			iconcolor="var(--color-battery)"
+			:fullwidth="true"
+		>
+			<RadioInput
+				v-model="globalData.pvBatteryPriority"
+				:options="evPriorityModes"
+			>
+			</RadioInput>
+		</ConfigItem>
+	</div>
+</template>
+
+<script setup lang="ts">
+import { vehicles, chargePoints, chargeTemplates } from './model'
+import ConfigItem from '@/components/shared/ConfigItem.vue'
+import SwitchInput from '@/components/shared/SwitchInput.vue'
+import RadioInput from '@/components/shared/RadioInput.vue'
+import { globalData } from '@/assets/js/model'
+import { evPriorityModes } from '@/assets/js/types'
+import { computed } from 'vue'
+
+const props = defineProps<{
+	chargepointId: number
+}>()
+
+//state
+const cp = computed(() => {
+	return chargePoints[props.chargepointId]
+})
+
+const connectedVehicle = computed({
+	get: () => cp.value.connectedVehicle,
+	set: (value: number) => {
+		chargePoints[cp.value.id].connectedVehicle = value
+	},
+})
+const etActive = computed({
+	get: () => cp.value.etActive,
+	set: (value: boolean) => {
+		chargePoints[cp.value.id].etActive = value
+	},
+})
+const timedCharging = computed({
+	get: () => cp.value.timedCharging,
+	set: (value: boolean) => {
+		chargePoints[cp.value.id].timedCharging = value
+	},
+})
+</script>
+
+<style scoped>
+.settingslist {
+	display: grid;
+	grid-template-columns: repeat(12, 1fr);
+	justify-content: center;
+	font-size: 16px;
+	color: var(--color-fg);
+	background-color: var(--color-bg);
+}
+.status-string {
+	font-size: var(--font-normal);
+	font-style: italic;
+	color: var(--color-battery);
+}
+
+.chargeConfigSelect {
+	background: var(--color-bg);
+	color: var(--color-fg);
+}
+
+.chargeModeOption {
+	background: green;
+	color: blue;
+}
+
+.nav-tabs .nav-link {
+	color: var(--color-menu);
+	opacity: 0.5;
+}
+
+.nav-tabs .nav-link.disabled {
+	color: var(--color-axis);
+	border: 0.5px solid var(--color-axis);
+}
+
+.nav-tabs .nav-link.active {
+	color: var(--color-fg);
+	background-color: var(--color-bg);
+	opacity: 1;
+	border: 1px solid var(--color-menu);
+	border-bottom: 1px solid var(--color-menu);
+}
+
+.settingsheader {
+	color: var(--color-charging);
+	font-size: 16px;
+	font-weight: bold;
+}
+
+hr {
+	color: var(--color-menu);
+}
+</style>
diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/CPChargePoint.vue b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPChargePoint.vue
index 39b29f8922..e08da4dbf5 100755
--- a/packages/modules/display_themes/colors/source/src/components/chargePointList/CPChargePoint.vue
+++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPChargePoint.vue
@@ -1,11 +1,12 @@
 <template>
-	<WBWidget v-if="!configmode" :variable-width="true">
+	<WBWidget>
 		<template #title>
 			<span :style="cpNameStyle">
 				<span class="fa-solid fa-charging-station">&nbsp;</span>
 				{{ props.chargepoint.name }}</span
 			>
 		</template>
+
 		<template #buttons>
 			<DisplayButton
 				color="var(--color-cp0)"
@@ -16,7 +17,7 @@
 			>
 		</template>
 		<!-- Chargepoint info -->
-		<div class="grid12">
+		<div class="subgrid">
 			<!-- Status information -->
 			<InfoItem heading="Status:" class="grid-col-4 grid-left">
 				<span :style="{ color: statusColor }">
@@ -67,132 +68,27 @@
 
 		<!-- Car information-->
 		<template #footer>
-			<h3
-				class="d-flex justify-content-left align-items-center"
-				@click="openSettings"
-			>
-				<i class="fa-solid fa-sm fa-car me-3" />
-				{{ chargepoint.vehicleName }}
-				<span
-					v-if="chargepoint.hasPriority"
-					class="ms-2 me-0 fa-solid fa-xs fa-star ps-1"
-				/>
-				<span
-					v-if="chargepoint.etActive"
-					class="ms-2 me-0 fa-solid fa-xs fa-coins ps-0"
-				/>
-			</h3>
-			<div class="grid12">
-				<!-- Car info -->
-				<InfoItem
-					v-if="chargepoint.isSocConfigured"
-					heading="Ladestand:"
-					class="grid-col-4 grid-left"
-				>
-					<BatterySymbol :soc="soc" class="me-2" />
-				</InfoItem>
-				<InfoItem
-					v-if="chargepoint.isSocConfigured"
-					heading="Reichweite:"
-					class="grid-col-4"
-				>
-					{{
-						vehicles[props.chargepoint.connectedVehicle]
-							? Math.round(vehicles[props.chargepoint.connectedVehicle].range)
-							: 0
-					}}
-					km
-				</InfoItem>
-				<InfoItem heading="Zeitplan:" class="grid-col-4 grid-right">
-					<span
-						v-if="chargepoint.timedCharging"
-						class="me-1 fa-solid fa-xs fa-clock ps-1"
-					/>
-					{{ props.chargepoint.timedCharging ? 'Ja' : 'Nein' }}
-				</InfoItem>
-
-				<!-- ET Information -->
-				<InfoItem
-					v-if="etData.active"
-					heading="Preisladen:"
-					class="grid-col-4 grid-left"
-				>
-					<!-- <SwitchInput v-model="cp.etActive" /> -->
-					{{ cp.etActive ? 'Ja' : 'Nein' }}
-				</InfoItem>
-				<InfoItem v-if="etData.active" heading="max. Preis:" class="grid-col-4">
-					<span type="button"
-						>{{
-							props.chargepoint.etActive
-								? (Math.round(props.chargepoint.etMaxPrice * 10) / 10).toFixed(
-										1,
-									) + ' ct'
-								: '-'
-						}}
-					</span>
-				</InfoItem>
-				<InfoItem
-					v-if="etData.active"
-					heading="akt. Preis:"
-					class="grid-col-4 grid-right"
-				>
-					<span :style="currentPriceStyle">{{ currentPrice }} ct </span>
-				</InfoItem>
-
-				<!-- Chargemode buttons -->
-				<RadioBarInput
-					:id="'chargemode-' + chargepoint.name"
-					v-model="chargeMode"
-					class="chargemodes mt-3 mb-3"
-					:options="
-						Object.keys(chargemodes).map((v) => {
-							return {
-								text: chargemodes[v].name,
-								value: v,
-								color: chargemodes[v].color,
-								icon: chargemodes[v].icon,
-								active: chargemodes[v].mode == chargepoint.chargeMode,
-							}
-						})
-					"
-				/>
-			</div>
+			<CPVehicle :chargepoint="props.chargepoint" />
 		</template>
 	</WBWidget>
 </template>
 
 <script setup lang="ts">
-import { computed, ref } from 'vue'
-import { Modal } from 'bootstrap'
+import { computed } from 'vue'
+import { Modal, Tab } from 'bootstrap'
 import { displayConfig, unlockDisplay } from '@/assets/js/model'
-import { type ChargePoint, vehicles, chargePoints } from './model'
-import { chargemodes } from '@/assets/js/themeConfig'
+import { type ChargePoint } from './model'
 import WBWidget from '@/components/shared/WBWidget.vue'
 import InfoItem from '@/components/shared/InfoItem.vue'
-import BatterySymbol from '@/components/shared/BatterySymbol.vue'
 import FormatWatt from '@/components/shared/FormatWatt.vue'
 import FormatWattH from '../shared/FormatWattH.vue'
-import RadioBarInput from '@/components/shared/RadioBarInput.vue'
 import DisplayButton from '@/components/shared/DisplayButton.vue'
-import { etData } from '../priceChart/model'
+import CPVehicle from './CPVehicle.vue'
 
 const props = defineProps<{
 	chargepoint: ChargePoint
 }>()
-const cp = ref(props.chargepoint)
 // computed
-const chargeMode = computed({
-	get() {
-		return props.chargepoint.chargeMode
-	},
-	set(newMode) {
-		if (!displayConfig.locked) {
-			chargePoints[props.chargepoint.id].chargeMode = newMode
-		} else {
-			unlockDisplay()
-		}
-	},
-})
 const chargeAmpereString = computed(() => {
 	return (
 		(Math.round(props.chargepoint.current * 10) / 10).toLocaleString(
@@ -257,38 +153,43 @@ const statusIcon = computed(() => {
 	return 'fa ' + icon
 })
 
-const soc = computed(() => {
-	return props.chargepoint.soc
-})
 const cpNameStyle = computed(() => {
 	return { color: props.chargepoint.color }
 	// return { color: 'var(--color-fg)' }
 })
-const currentPriceStyle = computed(() => {
-	return props.chargepoint.etMaxPrice >= +currentPrice.value
-		? { color: 'var(--color-charging)' }
-		: { color: 'var(--color-menu)' }
-})
-const configmode = ref(false)
-const currentPrice = computed(() => {
-	const [p] = etData.etPriceList.values()
-	return (Math.round(p * 10) / 10).toFixed(1)
-})
 function openSettings() {
 	if (displayConfig.locked) {
 		unlockDisplay()
+	}
+	const settingspage = new Modal('#settingspage')
+	settingspage.toggle()
+	let chargePanelName = ''
+	switch (props.chargepoint.chargeMode) {
+		case 'instant_charging':
+			chargePanelName = '#inSettings'
+			break
+		case 'pv_charging':
+			chargePanelName = '#phvSettings'
+			break
+		case 'scheduled_charging':
+			chargePanelName = '#scSettings'
+			break
+		default:
+			chargePanelName = '#chSettings'
+	}
+	const tabToActivate = document.querySelector(
+		chargePanelName + props.chargepoint.id,
+	)
+	if (tabToActivate) {
+		var tab = new Tab(tabToActivate)
+		tab.show()
 	} else {
-		const settingspage = new Modal('#settingspage')
-		settingspage.toggle()
+		console.error('no element found')
 	}
 }
 </script>
 
 <style scoped>
-.fa-star {
-	color: var(--color-evu);
-}
-
 .fa-clock {
 	color: var(--color-battery);
 }
@@ -313,32 +214,7 @@ function openSettings() {
 	color: var(--color-menu);
 }
 
-.socEditor {
-	border: 1px solid var(--color-menu);
-	justify-self: stretch;
-}
-
 .targetCurrent {
 	color: var(--color-menu);
 }
-
-.priceEditor {
-	border: 1px solid var(--color-menu);
-	justify-self: stretch;
-}
-
-.chargemodes {
-	grid-column: 1 / 13;
-	justify-self: center;
-}
-
-.chargeinfo {
-	display: grid;
-	grid-template-columns: repeat(12, auto);
-	justify-content: space-between;
-}
-
-.settingsbutton {
-	border-radius: 30%;
-}
 </style>
diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigInstant.vue b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigInstant.vue
index e54eda07ca..a1b6c5c0a5 100755
--- a/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigInstant.vue
+++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigInstant.vue
@@ -1,7 +1,5 @@
 <template>
-	<div class="mt-2 grid12">
-		<p class="heading ms-1">Sofortladen:</p>
-
+	<div class="instantsettings mt-5 grid12">
 		<!-- Ampere -->
 		<ConfigItem title="Stromstärke" icon="fa-bolt" :fullwidth="true">
 			<RangeInput
@@ -59,15 +57,20 @@
 
 <script setup lang="ts">
 // import { eventBus } from '@/main.js'
-import { computed, ref } from 'vue'
-import type { ChargePoint } from './model'
+import { computed } from 'vue'
+import { chargePoints } from './model'
 import ConfigItem from '../shared/ConfigItem.vue'
 import RangeInput from '@/components/shared/RangeInput.vue'
 import RadioInput from '@/components/shared/RadioInput.vue'
+
 const props = defineProps<{
-	chargepoint: ChargePoint
+	chargepointId: number
 }>()
-const cp = ref(props.chargepoint)
+
+const cp = computed(() => {
+	return chargePoints[props.chargepointId]
+})
+
 const instantChargeLimitModes = [
 	{ name: 'keine', id: 'none' },
 	{ name: 'EV-SoC', id: 'soc' },
@@ -85,6 +88,10 @@ const energyLimit = computed({
 </script>
 
 <style scoped>
+.instantsettings {
+	justify-content: center;
+	grid-gap: 20px;
+}
 .chargeConfigSelect {
 	background: var(--color-bg);
 	color: var(--color-fg);
diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigPv.vue b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigPv.vue
index e81d2b9e11..c9ac0f7c45 100755
--- a/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigPv.vue
+++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigPv.vue
@@ -1,14 +1,12 @@
 <template>
-	<div class="pt-2 grid12">
-		<p class="heading ms-1">PV-Laden:</p>
-
+	<div class="pvsettings pt-5 grid12">
 		<!-- Maximum SoC -->
 		<ConfigItem
 			title="Ladestand begrenzen"
 			icon="fa-battery-three-quarters"
 			:fullwidth="true"
 		>
-			<SwitchInput id="limitSoc" :v-model="limitSoc" :model-value="limitSoc" />
+			<SwitchInput id="limitSoc" v-model="limitSoc" />
 		</ConfigItem>
 		<ConfigItem
 			v-if="limitSoc"
@@ -36,7 +34,6 @@
 		<ConfigItem
 			title="Mindest-Ladestand"
 			icon="fa-battery-half"
-			:infotext="infotext['minsoc']"
 			:fullwidth="true"
 		>
 			<SwitchInput v-model="useMinSoc" />
@@ -44,9 +41,6 @@
 
 		<!-- Minimum SoC -->
 		<ConfigItem v-if="useMinSoc" title="...bis SoC" :fullwidth="true">
-			<template #info>
-				{{ infotext['minsoc'] }}
-			</template>
 			<RangeInput
 				id="minSoc"
 				v-model="cp.pvMinSoc"
@@ -69,12 +63,7 @@
 		</ConfigItem>
 
 		<!-- Min+PV-Laden -->
-		<ConfigItem
-			title="Minimaler Ladestrom"
-			icon="fa-bolt"
-			:infotext="infotext['minpv']"
-			:fullwidth="true"
-		>
+		<ConfigItem title="Minimaler Ladestrom" icon="fa-bolt" :fullwidth="true">
 			<SwitchInput v-model="useMinPv" />
 		</ConfigItem>
 		<!-- Minimum Current -->
@@ -96,16 +85,17 @@
 </template>
 
 <script setup lang="ts">
-import { ref, computed } from 'vue'
-import type { ChargePoint } from './model'
+import { computed } from 'vue'
+import { chargePoints } from './model'
 import ConfigItem from '../shared/ConfigItem.vue'
 import RangeInput from '@/components/shared/RangeInput.vue'
 import SwitchInput from '@/components/shared/SwitchInput.vue'
-import { infotext } from '@/assets/js/themeConfig'
 const props = defineProps<{
-	chargepoint: ChargePoint
+	chargepointId: number
 }>()
-const cp = ref(props.chargepoint)
+const cp = computed(() => {
+	return chargePoints[props.chargepointId]
+})
 
 // methods:
 
@@ -149,6 +139,10 @@ const limitSoc = computed({
 </script>
 
 <style scoped>
+.pvsettings {
+	justify-content: center;
+	grid-gap: 20px;
+}
 .chargeConfigSelect {
 	background: var(--color-bg);
 	color: var(--color-fg);
diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigScheduled.vue b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigScheduled.vue
new file mode 100755
index 0000000000..9cc42635d3
--- /dev/null
+++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigScheduled.vue
@@ -0,0 +1,107 @@
+<template>
+	<div class="schedulestable p-3 grid12">
+		<div class="subtitle grid-col-12">Pläne für Zielladen:</div>
+		<div v-if="plans.length == 0" class="warning grid-col-12 p-5">
+			Es sind noch keine Pläne definiert. Pläne für das Zielladen können in der
+			Web-App festgelegt werden.
+		</div>
+		<div class="subgrid tableheader">
+			<span class="grid-col-2 grid-left"></span>
+			<span class="grid-col-3 grid-left">Startzeit</span>
+			<span class="grid-col-2">SoC-Ziel</span>
+			<span class="grid-col-2">SoC-Limit</span>
+			<span class="grid-col-3">Wiederholung</span>
+		</div>
+		<div
+			v-for="(plan, i) in plans"
+			:key="i"
+			:style="cellStyle(i)"
+			class="subgrid tableline"
+		>
+			<span class="grid-col-2">
+				<SwitchInput
+					v-model="plan.active"
+					@update:model-value="updatePlanState(i)"
+				>
+				</SwitchInput>
+			</span>
+			<span class="grid-col-3 grid-left">{{ timeString(i) }}</span>
+			<span class="grid-col-2">{{ plan.limit.soc_scheduled }}%</span>
+			<span class="grid-col-2">{{ plan.limit.soc_limit }}%</span>
+			<span class="grid-col-3">{{ freqNames[plan.frequency.selected] }}</span>
+		</div>
+	</div>
+</template>
+
+<script setup lang="ts">
+import { computed } from 'vue'
+import { scheduledChargingPlans } from './model'
+import SwitchInput from '../shared/SwitchInput.vue'
+import { updateServer } from '@/assets/js/sendMessages'
+
+const freqNames: { [key: string]: string } = {
+	daily: 'Täglich',
+	once: 'Einmal',
+	weekly: 'Wöchentlich',
+}
+const props = defineProps<{
+	chargeTemplateId: number
+}>()
+//computed
+const plans = computed(() =>
+	scheduledChargingPlans[props.chargeTemplateId]
+		? Object.values(scheduledChargingPlans[props.chargeTemplateId])
+		: [],
+)
+
+function updatePlanState(i: number) {
+	console.log(`update ${i}`)
+	updateServer(
+		'cpScheduledPlanActive',
+		plans.value[i].active,
+		props.chargeTemplateId,
+		i,
+	)
+}
+
+//methods
+function timeString(key: number) {
+	return plans.value[key].time
+}
+function cellStyle(key: number) {
+	const style = plans.value[key].active ? 'bold' : 'regular'
+	return { 'font-weight': style }
+}
+</script>
+
+<style scoped>
+.schedulestable {
+	justify-content: center;
+	gap: 20px;
+}
+.tableline {
+	color: var(--color-fg);
+	background-color: var(--color-bg);
+	text-align: center;
+	font-size: var(--font-settings);
+	margin-top: 0px;
+	align-items: center;
+}
+.tableheader {
+	color: var(--color-menu);
+	background-color: var(--color-bg);
+	text-align: center;
+	font-style: normal;
+	font-size: var(--font-settings);
+	font-weight: bold;
+}
+.subtitle {
+	font-size: var(--font-large);
+	font-weight: bold;
+}
+.warning {
+	font-size: var(--font-large);
+	font-weight: bold;
+	color: var(--color-evu);
+}
+</style>
diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigTimed.vue b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigTimed.vue
new file mode 100755
index 0000000000..2869b080e3
--- /dev/null
+++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPConfigTimed.vue
@@ -0,0 +1,104 @@
+<template>
+	<div class="timeplantable p-3 grid12">
+		<div class="subtitle grid-col-12">Zeitpläne:</div>
+		<div v-if="plans.length == 0" class="warning grid-col-12 p-5">
+			Es sind noch keine Pläne definiert. Zeitpläne können in der Web-App
+			festgelegt werden.
+		</div>
+
+		<div class="subgrid tableheader">
+			<span class="grid-col-2"></span>
+			<span class="grid-col-3 grid-left">Von</span>
+			<span class="grid-col-2">Bis</span>
+			<span class="grid-col-2">Ladestrom</span>
+			<span class="grid-col-3">Wiederholung</span>
+		</div>
+		<div
+			v-for="(plan, i) in plans"
+			:key="i"
+			:style="cellStyle(i)"
+			class="subgrid tableline"
+		>
+			<span class="grid-col-2">
+				<SwitchInput
+					v-model="plan.active"
+					@update:model-value="updatePlanState(i)"
+				>
+				</SwitchInput>
+			</span>
+			<span class="grid-col-3 grid-left">{{ plan.time[0] }}</span>
+			<span class="grid-col-2">{{ plan.time[1] }}</span>
+			<span class="grid-col-2">{{ plan.current }}A</span>
+			<span class="grid-col-3">{{ freqNames[plan.frequency.selected] }}</span>
+		</div>
+	</div>
+</template>
+
+<script setup lang="ts">
+import { computed } from 'vue'
+import { timeChargingPlans } from './model'
+import { updateServer } from '@/assets/js/sendMessages'
+import SwitchInput from '../shared/SwitchInput.vue'
+
+const freqNames: { [key: string]: string } = {
+	daily: 'Täglich',
+	once: 'Einmal',
+	weekly: 'Wöchentlich',
+}
+const props = defineProps<{
+	chargeTemplateId: number
+}>()
+const plans = computed(() => {
+	if (timeChargingPlans[props.chargeTemplateId]) {
+		let result = Object.values(timeChargingPlans[props.chargeTemplateId])
+		return result ?? []
+	} else {
+		return []
+	}
+})
+function updatePlanState(i: number) {
+	console.log(`update ${i}`)
+	updateServer(
+		'cpTimedPlanActive',
+		plans.value[i].active,
+		props.chargeTemplateId,
+		i,
+	)
+}
+function cellStyle(key: number) {
+	const style = plans.value[key].active ? 'bold' : 'regular'
+	return { 'font-weight': style }
+}
+</script>
+
+<style scoped>
+.timeplantable {
+	justify-content: center;
+	gap: 20px;
+}
+.subtitle {
+	font-size: var(--font-large);
+	font-weight: bold;
+}
+.tableheader {
+	color: var(--color-menu);
+	background-color: var(--color-bg);
+	text-align: center;
+	font-style: normal;
+	font-size: var(--font-settings);
+	font-weight: bold;
+}
+.tableline {
+	color: var(--color-fg);
+	background-color: var(--color-bg);
+	text-align: center;
+	font-size: var(--font-settings);
+	margin-top: 0px;
+	align-items: center;
+}
+.warning {
+	font-size: var(--font-large);
+	font-weight: bold;
+	color: var(--color-evu);
+}
+</style>
diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/CPVehicle.vue b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPVehicle.vue
new file mode 100644
index 0000000000..7e662f3a14
--- /dev/null
+++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/CPVehicle.vue
@@ -0,0 +1,200 @@
+<template>
+	<div class="subgrid justify-content-left">
+		<div class="titleline grid-col-12 d-flex justify-content-left mb-3">
+			<DisplayButton @click="openSettings('#chSettings')">
+				<div
+					class="carname d-flex justify-content-left align-items-center px-2"
+				>
+					<i class="fa-solid fa-sm fa-car me-3" />
+					{{ chargepoint.vehicleName }}
+					<span
+						v-if="chargepoint.hasPriority"
+						class="ms-2 me-0 fa-solid fa-xs fa-star ps-1"
+					/>
+					<span
+						v-if="chargepoint.etActive"
+						class="ms-2 me-0 fa-solid fa-xs fa-coins ps-0"
+					/>
+				</div>
+			</DisplayButton>
+		</div>
+		<!-- Car info -->
+		<InfoItem
+			v-if="chargepoint.isSocConfigured"
+			heading="Ladestand:"
+			class="grid-col-4 grid-left"
+		>
+			<BatterySymbol :soc="soc" class="me-2" />
+		</InfoItem>
+		<InfoItem
+			v-if="chargepoint.isSocConfigured"
+			heading="Reichweite:"
+			class="grid-col-4"
+		>
+			{{
+				vehicles[props.chargepoint.connectedVehicle]
+					? Math.round(vehicles[props.chargepoint.connectedVehicle].range)
+					: 0
+			}}
+			km
+		</InfoItem>
+		<InfoItem heading="Zeitplan:" class="grid-col-4 grid-right">
+			<span
+				v-if="chargepoint.timedCharging"
+				class="me-1 fa-solid fa-xs fa-clock ps-1"
+			/>
+			{{ props.chargepoint.timedCharging ? 'Ja' : 'Nein' }}
+		</InfoItem>
+
+		<!-- ET Information -->
+		<InfoItem
+			v-if="etData.active"
+			heading="Preisladen:"
+			class="grid-col-4 grid-left"
+		>
+			<SwitchInput v-model="cp.etActive" />
+			<!--{{ cp.etActive ? 'Ja' : 'Nein' }}-->
+		</InfoItem>
+
+		<InfoItem v-if="etData.active" heading="max. Preis:" class="grid-col-4">
+			<DisplayButton v-if="cp.etActive" @click="openSettings('#prSettings')">
+				<span class="maxprice"
+					>{{
+						props.chargepoint.etActive
+							? (Math.round(props.chargepoint.etMaxPrice * 10) / 10).toFixed(
+									1,
+								) + ' ct'
+							: '-'
+					}}
+				</span>
+			</DisplayButton>
+			<span v-else>-</span>
+		</InfoItem>
+
+		<InfoItem
+			v-if="etData.active"
+			heading="akt. Preis:"
+			class="grid-col-4 grid-right"
+		>
+			<span :style="currentPriceStyle">{{ currentPrice }} ct </span>
+		</InfoItem>
+
+		<!-- Chargemode buttons -->
+		<RadioBarInput
+			:id="'chargemode-' + chargepoint.name"
+			v-model="chargeMode"
+			class="chargemodes mx-3 mt-4 mb-0"
+			:options="
+				Object.keys(chargemodes).map((v) => {
+					return {
+						text: chargemodes[v].name,
+						value: v,
+						color: chargemodes[v].color,
+						icon: chargemodes[v].icon,
+						active: chargemodes[v].mode == chargepoint.chargeMode,
+					}
+				})
+			"
+		/>
+	</div>
+</template>
+<script setup lang="ts">
+import { displayConfig, unlockDisplay } from '@/assets/js/model'
+import { type ChargePoint, chargePoints, vehicles } from './model'
+import { chargemodes } from '@/assets/js/themeConfig'
+import { ref } from 'vue'
+
+import InfoItem from '@/components/shared/InfoItem.vue'
+import BatterySymbol from '@/components/shared/BatterySymbol.vue'
+import RadioBarInput from '@/components/shared/RadioBarInput.vue'
+import DisplayButton from '@/components/shared/DisplayButton.vue'
+import SwitchInput from '../shared/SwitchInput.vue'
+import { etData } from '../priceChart/model'
+import { computed } from 'vue'
+import { Modal, Tab } from 'bootstrap'
+
+const props = defineProps<{
+	chargepoint: ChargePoint
+}>()
+const cp = ref(props.chargepoint)
+const soc = computed(() => {
+	return props.chargepoint.soc
+})
+const chargeMode = computed({
+	get() {
+		return props.chargepoint.chargeMode
+	},
+	set(newMode) {
+		if (!displayConfig.locked) {
+			chargePoints[props.chargepoint.id].chargeMode = newMode
+		} else {
+			unlockDisplay()
+		}
+	},
+})
+const currentPrice = computed(() => {
+	const [p] = etData.etPriceList.values()
+	return (Math.round(p * 10) / 10).toFixed(1)
+})
+function openSettings(target: string = '') {
+	if (displayConfig.locked) {
+		unlockDisplay()
+	}
+	const settingspage = new Modal('#settingspage')
+	settingspage.toggle()
+	let chargePanelName = target
+	if (target == '') {
+		switch (props.chargepoint.chargeMode) {
+			case 'instant_charging':
+				chargePanelName = '#inSettings'
+				break
+			case 'pv_charging':
+				chargePanelName = '#phvSettings'
+				break
+			case 'scheduled_charging':
+				chargePanelName = '#scSettings'
+				break
+			default:
+				chargePanelName = '#chSettings'
+		}
+	}
+	const tabToActivate = document.querySelector(
+		chargePanelName + props.chargepoint.id,
+	)
+	if (tabToActivate) {
+		var tab = new Tab(tabToActivate)
+		tab.show()
+	} else {
+		console.error('no element found')
+	}
+}
+const currentPriceStyle = computed(() => {
+	return props.chargepoint.etMaxPrice >= +currentPrice.value
+		? { color: 'var(--color-charging)' }
+		: { color: 'var(--color-menu)' }
+})
+</script>
+<style scoped>
+.titleline {
+	justify-content: left;
+}
+
+.chargemodes {
+	grid-column: 1 / 13;
+	justify-self: center;
+}
+
+.carname {
+	color: var(--color-fg);
+	font-size: var(--font-medium);
+}
+
+.maxprice {
+	font-size: var(--font-medium);
+	color: var(--color-fg);
+}
+
+.fa-star {
+	color: var(--color-evu);
+}
+</style>
diff --git a/packages/modules/display_themes/colors/source/src/components/chargePointList/model.ts b/packages/modules/display_themes/colors/source/src/components/chargePointList/model.ts
index b7eb79f73c..00f756a684 100755
--- a/packages/modules/display_themes/colors/source/src/components/chargePointList/model.ts
+++ b/packages/modules/display_themes/colors/source/src/components/chargePointList/model.ts
@@ -52,7 +52,7 @@ export class ChargePoint {
 	private _instantMaxEnergy = 0
 	private _pvFeedInLimit = false
 	private _pvMinCurrent = 0
-	private _pvMaxSoc = 0
+	private _pvMaxSoc = 101
 	private _pvMinSoc = 0
 	private _pvMinSocCurrent = 0
 	private _etActive = false
@@ -351,22 +351,29 @@ export interface ChargeTimePlan {
 	time: Array<string>
 	current: number
 }
-export interface ChargeSchedule {
-	name: string
-	active: boolean
-	timed: boolean
-	time: string
-	current: number
-	limit: {
-		selected: string
-		amount: number
-		soc_limit: number
-		soc_scheduled: number
-	}
-	frequency: {
-		once: Array<Date>
-		selected: string
-		weekly: boolean[]
+export class ChargeSchedule {
+	name = 'Schedule'
+	private _active = false
+	timed = false
+	time = ''
+	current = 6
+	limit = {
+		selected: '',
+		amount: 0,
+		soc_limit: 0,
+		soc_scheduled: 0,
+	}
+	frequency = {
+		once: <Array<Date>>[],
+		selected: '',
+		weekly: <boolean[]>[],
+	}
+	get active() {
+		return this._active
+	}
+	set active(val: boolean) {
+		console.log('set active')
+		this._active = val
 	}
 }
 export interface ChargeTemplate {
diff --git a/packages/modules/display_themes/colors/source/src/components/energyMeter/EnergyMeter.vue b/packages/modules/display_themes/colors/source/src/components/energyMeter/EnergyMeter.vue
index a7df803a42..8e7b581b7f 100755
--- a/packages/modules/display_themes/colors/source/src/components/energyMeter/EnergyMeter.vue
+++ b/packages/modules/display_themes/colors/source/src/components/energyMeter/EnergyMeter.vue
@@ -1,5 +1,5 @@
 <template>
-	<WBWidget :full-width="true">
+	<WBWidget>
 		<template #title>
 			{{ heading }}
 		</template>
@@ -15,43 +15,45 @@
 				@shift-down="shiftDown"
 			/>
 		</template>
-		<figure id="energymeter" class="p-0 m-0">
-			<svg viewBox="0 0 500 500">
-				<g :transform="'translate(' + margin.left + ',' + margin.top + ')'">
-					<!--  Bar Graph -->
-					<EMBarGraph
-						:plotdata="plotdata"
-						:x-scale="xScale"
-						:y-scale="yScale"
-						:height="height"
-						:margin="margin"
-					/>
-					<!-- Y Axis -->
-					<EMYAxis
-						:y-scale="yScale"
-						:width="width"
-						:fontsize="axisFontsize"
-						:config="globalConfig"
-					/>
-					<text
-						:x="-margin.left"
-						y="-15"
-						fill="var(--color-axis)"
-						:font-size="axisFontsize"
-					>
-						{{ graphData.graphMode == 'year' ? 'MWh' : 'kWh' }}
-					</text>
-					<EMLabels
-						:plotdata="plotdata"
-						:x-scale="xScale"
-						:y-scale="yScale"
-						:height="height"
-						:margin="margin"
-						:config="globalConfig"
-					/>
-				</g>
-			</svg>
-		</figure>
+		<div class="grid-col-12">
+			<figure id="energymeter" class="energymeter p-0 m-0 align-self-stretch">
+				<svg viewBox="0 0 500 500">
+					<g :transform="'translate(' + margin.left + ',' + margin.top + ')'">
+						<!--  Bar Graph -->
+						<EMBarGraph
+							:plotdata="plotdata"
+							:x-scale="xScale"
+							:y-scale="yScale"
+							:height="height"
+							:margin="margin"
+						/>
+						<!-- Y Axis -->
+						<EMYAxis
+							:y-scale="yScale"
+							:width="width"
+							:fontsize="axisFontsize"
+							:config="globalConfig"
+						/>
+						<text
+							:x="-margin.left"
+							y="-15"
+							fill="var(--color-axis)"
+							:font-size="axisFontsize"
+						>
+							{{ graphData.graphMode == 'year' ? 'MWh' : 'kWh' }}
+						</text>
+						<EMLabels
+							:plotdata="plotdata"
+							:x-scale="xScale"
+							:y-scale="yScale"
+							:height="height"
+							:margin="margin"
+							:config="globalConfig"
+						/>
+					</g>
+				</svg>
+			</figure>
+		</div>
 		<p v-if="noData">No data</p>
 	</WBWidget>
 </template>
@@ -164,4 +166,8 @@ const usageDetails = computed(() => {
 })
 </script>
 
-<style scoped></style>
+<style scoped>
+.energymeter {
+	width: 100%;
+}
+</style>
diff --git a/packages/modules/display_themes/colors/source/src/components/powerGraph/PowerGraph.vue b/packages/modules/display_themes/colors/source/src/components/powerGraph/PowerGraph.vue
index 0e67d80dde..2d6a133812 100755
--- a/packages/modules/display_themes/colors/source/src/components/powerGraph/PowerGraph.vue
+++ b/packages/modules/display_themes/colors/source/src/components/powerGraph/PowerGraph.vue
@@ -1,5 +1,5 @@
 <template>
-	<WBWidget :full-width="true">
+	<WBWidget>
 		<template #title>
 			{{ heading }}
 		</template>
@@ -17,71 +17,76 @@
 				/>
 			</div>
 		</template>
-
-		<figure id="powergraph" class="p-0 m-0" @click="changeStackOrder">
-			<svg :viewBox="'0 0 ' + width + ' ' + height">
-				<!-- Draw the source graph -->
-				<PGSourceGraph
-					:width="width - margin.left - 2 * margin.right"
-					:height="(height - margin.top - margin.bottom) / 2"
-					:margin="margin"
-				/>
-				<PGUsageGraph
-					:width="width - margin.left - 2 * margin.right"
-					:height="(height - margin.top - margin.bottom) / 2"
-					:margin="margin"
-					:stack-order="globalConfig.usageStackOrder"
-				/>
-				<PGXAxis
-					:width="width - margin.left - 2 * margin.right"
-					:height="height - margin.top - margin.bottom"
-					:margin="margin"
-					:graph-data="graphData"
-				/>
-				<g :transform="'translate(' + margin.left + ',' + margin.top + ')'">
-					<PgSoc
-						v-if="
-							(graphData.graphMode == 'day' ||
-								graphData.graphMode == 'today' ||
-								graphData.graphMode == 'live') &&
-							Object.values(chargePoints).length > 0
-						"
+		<div class="grid-col-12">
+			<figure
+				id="powergraph"
+				class="p-0 m-0 align-self-stretch"
+				@click="changeStackOrder"
+			>
+				<svg :viewBox="'0 0 ' + width + ' ' + height">
+					<!-- Draw the source graph -->
+					<PGSourceGraph
 						:width="width - margin.left - 2 * margin.right"
 						:height="(height - margin.top - margin.bottom) / 2"
 						:margin="margin"
-						:order="0"
 					/>
-					<PgSoc
-						v-if="
-							(graphData.graphMode == 'day' ||
-								graphData.graphMode == 'today' ||
-								graphData.graphMode == 'live') &&
-							Object.values(chargePoints).length > 1
-						"
+					<PGUsageGraph
 						:width="width - margin.left - 2 * margin.right"
 						:height="(height - margin.top - margin.bottom) / 2"
 						:margin="margin"
-						:order="1"
+						:stack-order="globalConfig.usageStackOrder"
 					/>
-					<PgSoc
-						v-if="
-							['day', 'today', 'live'].includes(graphData.graphMode) &&
-							globalData.isBatteryConfigured
-						"
+					<PGXAxis
 						:width="width - margin.left - 2 * margin.right"
-						:height="(height - margin.top - margin.bottom) / 2"
-						:margin="margin"
-						:order="2"
-					/>
-					<PgSocAxis
-						v-if="['day', 'today', 'live'].includes(graphData.graphMode)"
-						:width="width - margin.left - margin.right"
-						:height="(height - margin.top - margin.bottom) / 2"
+						:height="height - margin.top - margin.bottom"
 						:margin="margin"
+						:graph-data="graphData"
 					/>
-				</g>
-			</svg>
-		</figure>
+					<g :transform="'translate(' + margin.left + ',' + margin.top + ')'">
+						<PgSoc
+							v-if="
+								(graphData.graphMode == 'day' ||
+									graphData.graphMode == 'today' ||
+									graphData.graphMode == 'live') &&
+								Object.values(chargePoints).length > 0
+							"
+							:width="width - margin.left - 2 * margin.right"
+							:height="(height - margin.top - margin.bottom) / 2"
+							:margin="margin"
+							:order="0"
+						/>
+						<PgSoc
+							v-if="
+								(graphData.graphMode == 'day' ||
+									graphData.graphMode == 'today' ||
+									graphData.graphMode == 'live') &&
+								Object.values(chargePoints).length > 1
+							"
+							:width="width - margin.left - 2 * margin.right"
+							:height="(height - margin.top - margin.bottom) / 2"
+							:margin="margin"
+							:order="1"
+						/>
+						<PgSoc
+							v-if="
+								['day', 'today', 'live'].includes(graphData.graphMode) &&
+								globalData.isBatteryConfigured
+							"
+							:width="width - margin.left - 2 * margin.right"
+							:height="(height - margin.top - margin.bottom) / 2"
+							:margin="margin"
+							:order="2"
+						/>
+						<PgSocAxis
+							v-if="['day', 'today', 'live'].includes(graphData.graphMode)"
+							:width="width - margin.left - margin.right"
+							:height="(height - margin.top - margin.bottom) / 2"
+							:margin="margin"
+						/>
+					</g>
+				</svg>
+			</figure>
+		</div>
 	</WBWidget>
 </template>
 
diff --git a/packages/modules/display_themes/colors/source/src/components/powerMeter/PowerMeter.vue b/packages/modules/display_themes/colors/source/src/components/powerMeter/PowerMeter.vue
index c6903317b1..497beb00e0 100755
--- a/packages/modules/display_themes/colors/source/src/components/powerMeter/PowerMeter.vue
+++ b/packages/modules/display_themes/colors/source/src/components/powerMeter/PowerMeter.vue
@@ -1,153 +1,155 @@
 <template>
-	<WBWidget :full-width="true">
+	<WBWidget>
 		<template #title> Aktuelle Leistung </template>
-		<figure id="powermeter" class="p-0 m-0">
-			<svg :viewBox="'0 0 ' + width + ' ' + height">
-				<g :transform="'translate(' + width / 2 + ',' + height / 2 + ')'">
-					<g transform="scale(0.9294,1)">
-						<!-- Show the two arcs -->
-						<PMSourceArc
-							:radius="radius"
-							:corner-radius="cornerRadius"
-							:circle-gap-size="circleGapSize"
-							:empty-power="emptyPower"
-						/>
+		<div class="grid-col-12">
+			<figure id="powermeter" class="powermeter p-0 m-0 align-self-stretch">
+				<svg :viewBox="'0 0 ' + width + ' ' + height">
+					<g :transform="'translate(' + width / 2 + ',' + height / 2 + ')'">
+						<g transform="scale(0.9294,1)">
+							<!-- Show the two arcs -->
+							<PMSourceArc
+								:radius="radius"
+								:corner-radius="cornerRadius"
+								:circle-gap-size="circleGapSize"
+								:empty-power="emptyPower"
+							/>
 
-						<PMUsageArc
-							:sh-device="shDevices"
-							:radius="radius"
-							:corner-radius="cornerRadius"
-							:circle-gap-size="circleGapSize"
-							:empty-power="emptyPower"
-						/>
+							<PMUsageArc
+								:sh-device="shDevices"
+								:radius="radius"
+								:corner-radius="cornerRadius"
+								:circle-gap-size="circleGapSize"
+								:empty-power="emptyPower"
+							/>
 
-						<!-- Show the values for the different categories -->
-						<PMLabel
-							:x="0"
-							:y="(-height / 10) * 2"
-							:data="sourceSummary.pv"
-							:props="masterData.pv"
-							:anchor="'middle'"
-							:config="globalConfig"
-						/>
-						<PMLabel
-							:x="0"
-							:y="(-height / 10) * 3"
-							:data="sourceSummary.evuIn"
-							:props="masterData.evuIn"
-							:anchor="'middle'"
-							:config="globalConfig"
-						/>
-						<PMLabel
-							:x="0"
-							:y="-height / 10"
-							:data="sourceSummary.batOut"
-							:props="masterData.batOut"
-							:anchor="'middle'"
-							:config="globalConfig"
-						/>
-						<PMLabel
-							v-if="etData.active"
-							:x="0"
-							:y="-height / 10"
-							:data="sourceSummary.batOut"
-							:props="masterData.batOut"
-							:anchor="'middle'"
-							:config="globalConfig"
-						/>
-						<!-- iterate over all usage items-->
-						<PMLabel
-							v-for="(item, index) in valuesToDisplay"
-							:key="index"
-							:x="labelCoordinates(index).x"
-							:y="labelCoordinates(index).y"
-							:data="item"
-							:labelicon="item.icon"
-							:labelcolor="item.color"
-							:anchor="'middle'"
-							:config="globalConfig"
-						/>
+							<!-- Show the values for the different categories -->
+							<PMLabel
+								:x="0"
+								:y="(-height / 10) * 2"
+								:data="sourceSummary.pv"
+								:props="masterData.pv"
+								:anchor="'middle'"
+								:config="globalConfig"
+							/>
+							<PMLabel
+								:x="0"
+								:y="(-height / 10) * 3"
+								:data="sourceSummary.evuIn"
+								:props="masterData.evuIn"
+								:anchor="'middle'"
+								:config="globalConfig"
+							/>
+							<PMLabel
+								:x="0"
+								:y="-height / 10"
+								:data="sourceSummary.batOut"
+								:props="masterData.batOut"
+								:anchor="'middle'"
+								:config="globalConfig"
+							/>
+							<PMLabel
+								v-if="etData.active"
+								:x="0"
+								:y="-height / 10"
+								:data="sourceSummary.batOut"
+								:props="masterData.batOut"
+								:anchor="'middle'"
+								:config="globalConfig"
+							/>
+							<!-- iterate over all usage items-->
+							<PMLabel
+								v-for="(item, index) in valuesToDisplay"
+								:key="index"
+								:x="labelCoordinates(index).x"
+								:y="labelCoordinates(index).y"
+								:data="item"
+								:labelicon="item.icon"
+								:labelcolor="item.color"
+								:anchor="'middle'"
+								:config="globalConfig"
+							/>
 
-						<!-- Show the SoC for the first two cars -->
-						<PMLabel
-							v-if="
-								chargepoints.length > 0 &&
-								vehicles[chargepoints[0].connectedVehicle]
-							"
-							:x="-width / 2 - margin / 4 + 10"
-							:y="-height / 2 + margin + 5"
-							:labeltext="
-								trimName(vehicles[chargepoints[0].connectedVehicle].name) +
-								': ' +
-								soc(0) +
-								'%'
-							"
-							:labelcolor="chargepoints[0].color"
-							:anchor="'start'"
-							:config="globalConfig"
-						/>
-						<PMLabel
-							v-if="
-								chargepoints.length > 1 &&
-								vehicles[chargepoints[1].connectedVehicle]
-							"
-							:x="width / 2 + margin / 4 - 10"
-							:y="-height / 2 + margin + 5"
-							:labeltext="
-								trimName(vehicles[chargepoints[1].connectedVehicle].name) +
-								': ' +
-								soc(1) +
-								'%'
-							"
-							:labelcolor="chargepoints[1].color"
-							:anchor="'end'"
-							:config="globalConfig"
-						/>
-						<!-- Show the SoC of the batteries -->
-						<PMLabel
-							v-if="globalData.batterySoc > 0"
-							:x="-width / 2 - margin / 4 + 10"
-							:y="height / 2 - margin + 15"
-							:labeltext="'Speicher: ' + globalData.batterySoc + '%'"
-							:labelcolor="usageSummary.batIn.color"
-							:anchor="'start'"
-							:config="globalConfig"
-						/>
-						<!-- Show the current energy price -->
-						<PMLabel
-							v-if="etData.active"
-							:x="width / 2 + margin / 4 - 10"
-							:y="height / 2 - margin + 15"
-							:value="currentPrice"
-							:labeltext="etData.etCurrentPriceString"
-							labelcolor="var(--color-charging)"
-							:anchor="'end'"
-							:config="globalConfig"
-						/>
-						<!-- Show the current consumption -->
-						<PMLabel
-							:x="0"
-							:y="0"
-							:labeltext="currentConsumptionString"
-							labelcolor="var(--color-fg)"
-							anchor="middle"
-							:config="globalConfig"
-						/>
-						<!-- Show the Peak value if we use relative arc lengths -->
-						<text
-							v-if="globalConfig.showRelativeArcs"
-							:x="width / 2 - 44"
-							y="2"
-							text-anchor="middle"
-							fill="var(--color-axis)"
-							font-size="12"
-						>
-							Peak: {{ maxPowerString }}
-						</text>
+							<!-- Show the SoC for the first two cars -->
+							<PMLabel
+								v-if="
+									chargepoints.length > 0 &&
+									vehicles[chargepoints[0].connectedVehicle]
+								"
+								:x="-width / 2 - margin / 4 + 10"
+								:y="-height / 2 + margin + 5"
+								:labeltext="
+									trimName(vehicles[chargepoints[0].connectedVehicle].name) +
+									': ' +
+									soc(0) +
+									'%'
+								"
+								:labelcolor="chargepoints[0].color"
+								:anchor="'start'"
+								:config="globalConfig"
+							/>
+							<PMLabel
+								v-if="
+									chargepoints.length > 1 &&
+									vehicles[chargepoints[1].connectedVehicle]
+								"
+								:x="width / 2 + margin / 4 - 10"
+								:y="-height / 2 + margin + 5"
+								:labeltext="
+									trimName(vehicles[chargepoints[1].connectedVehicle].name) +
+									': ' +
+									soc(1) +
+									'%'
+								"
+								:labelcolor="chargepoints[1].color"
+								:anchor="'end'"
+								:config="globalConfig"
+							/>
+							<!-- Show the SoC of the batteries -->
+							<PMLabel
+								v-if="globalData.batterySoc > 0"
+								:x="-width / 2 - margin / 4 + 10"
+								:y="height / 2 - margin + 15"
+								:labeltext="'Speicher: ' + globalData.batterySoc + '%'"
+								:labelcolor="usageSummary.batIn.color"
+								:anchor="'start'"
+								:config="globalConfig"
+							/>
+							<!-- Show the current energy price -->
+							<PMLabel
+								v-if="etData.active"
+								:x="width / 2 + margin / 4 - 10"
+								:y="height / 2 - margin + 15"
+								:value="currentPrice"
+								:labeltext="etData.etCurrentPriceString"
+								labelcolor="var(--color-charging)"
+								:anchor="'end'"
+								:config="globalConfig"
+							/>
+							<!-- Show the current consumption -->
+							<PMLabel
+								:x="0"
+								:y="0"
+								:labeltext="currentConsumptionString"
+								labelcolor="var(--color-fg)"
+								anchor="middle"
+								:config="globalConfig"
+							/>
+							<!-- Show the Peak value if we use relative arc lengths -->
+							<text
+								v-if="globalConfig.showRelativeArcs"
+								:x="width / 2 - 44"
+								y="2"
+								text-anchor="middle"
+								fill="var(--color-axis)"
+								font-size="12"
+							>
+								Peak: {{ maxPowerString }}
+							</text>
+						</g>
 					</g>
-				</g>
-			</svg>
-		</figure>
+				</svg>
+			</figure>
+		</div>
 		<!-- <ModalComponent modal-id="themeconfig">
 			<template v-slot:title>Look & Feel</template>
 			<ThemeSettings @resetArcs="resetArcs"></ThemeSettings>
@@ -269,4 +271,8 @@ const currentPrice = computed(() => {
 })
 </script>
 
-<style></style>
+<style>
+.powermeter {
+	width: 100%;
+}
+</style>
diff --git a/packages/modules/display_themes/colors/source/src/components/priceChart/PriceChart.vue b/packages/modules/display_themes/colors/source/src/components/priceChart/PriceChart.vue
index 0a3b8e8361..a5da2acd8d 100755
--- a/packages/modules/display_themes/colors/source/src/components/priceChart/PriceChart.vue
+++ b/packages/modules/display_themes/colors/source/src/components/priceChart/PriceChart.vue
@@ -1,46 +1,57 @@
 <template>
-	<p class="settingsheader mt-2 ms-1">Preisbasiertes Laden:</p>
-	<p class="providername ms-1">Anbieter: {{ etData.etProvider }}</p>
-	<hr />
-	<div class="container">
-		<figure id="pricechart" class="p-0 m-0">
-			<svg viewBox="0 0 400 300">
-				<g
-					:id="chartId"
-					:origin="draw"
-					:transform="'translate(' + margin.top + ',' + margin.right + ')'"
-				/>
-			</svg>
-		</figure>
-	</div>
-	<div v-if="chargepoint != undefined" class="p-3">
-		<RangeInput
-			v-if="chargepoint.etActive"
-			id="foo"
-			v-model="maxPrice"
-			:min="-25"
-			:max="95"
-			:step="0.1"
-			:decimals="1"
-			unit="ct"
-		/>
-	</div>
-	<div v-if="chargepoint != undefined" class="d-flex justify-content-end">
-		<span class="me-3 pt-0" @click="setMaxPrice">
-			<button
-				type="button"
-				class="btn btn-secondary"
-				:style="confirmButtonStyle"
-				:disabled="!maxPriceEdited"
+	<div class="pricesettings grid12">
+		<div class="subtitle grid-col-12">Anbieter: {{ etData.etProvider }}</div>
+		<div class="grapharea">
+			<figure id="pricechart">
+				<svg viewBox="0 0 400 300">
+					<g
+						:id="chartId"
+						:origin="draw"
+						:transform="'translate(' + margin.top + ',' + margin.right + ')'"
+					/>
+				</svg>
+			</figure>
+		</div>
+		<div class="controlarea d-flex align-items-center">
+			<div
+				class="priceinput d-flex flex-column justify-content-center align-items-center"
 			>
-				Bestätigen
-			</button>
-		</span>
+				<div class="grid12 pb-5">
+					<ConfigItem
+						title="Strompreisbasiert laden"
+						icon="fa-coins"
+						iconcolor="var(--color-battery)"
+					>
+						<SwitchInput v-model="etActive"></SwitchInput>
+					</ConfigItem>
+				</div>
+				<RangeInput
+					id="etmaxprice"
+					v-model="maxPrice"
+					:min="-25"
+					:max="95"
+					:step="0.1"
+					:decimals="1"
+					unit="ct"
+				/>
+				<span class="pt-3" @click="setMaxPrice">
+					<button
+						type="button"
+						class="btn btn-lg btn-secondary"
+						:style="confirmButtonStyle"
+						:disabled="!maxPriceEdited"
+					>
+						Bestätigen
+					</button>
+				</span>
+			</div>
+		</div>
+		<span>{{ maxPrice }}</span>
 	</div>
 </template>
 
 <script setup lang="ts">
-import { computed, onMounted, ref } from 'vue'
+import { computed, onMounted, onUpdated, ref } from 'vue'
 import { etData } from './model'
 import {
 	extent,
@@ -53,29 +64,33 @@ import {
 	select,
 } from 'd3'
 import RangeInput from '../shared/RangeInput.vue'
-import { chargePoints, type ChargePoint } from '../chargePointList/model'
+import ConfigItem from '../shared/ConfigItem.vue'
+import SwitchInput from '../shared/SwitchInput.vue'
+import { chargePoints } from '../chargePointList/model'
+
 const props = defineProps<{
-	chargepoint?: ChargePoint
+	chargePointId: number
 	globalview?: boolean
 }>()
-
-let _maxPrice = props.chargepoint ? ref(props.chargepoint.etMaxPrice) : ref(0)
+const cp = computed(() => chargePoints[props.chargePointId])
+const _maxPrice = ref(cp.value.etMaxPrice)
 const maxPriceEdited = ref(false)
-const cp = ref(props.chargepoint)
 const maxPrice = computed({
-	get() {
-		return _maxPrice.value
-		// ref(props.chargepoint.etMaxPrice)
-	},
+	get: () => _maxPrice.value,
 	set(newmax) {
 		_maxPrice.value = newmax
 		maxPriceEdited.value = true
 	},
 })
-
+const etActive = computed({
+	get: () => cp.value.etActive,
+	set: (value: boolean) => {
+		cp.value.etActive = value
+	},
+})
 function setMaxPrice() {
 	if (cp.value) {
-		chargePoints[cp.value.id].etMaxPrice = maxPrice.value
+		cp.value.etMaxPrice = maxPrice.value
 	}
 	maxPriceEdited.value = false
 }
@@ -83,8 +98,9 @@ const needsUpdate = ref(false)
 let dummy = false
 const width = 400
 const height = 250
-const margin = { top: 0, bottom: 15, left: 20, right: 5 }
+const margin = { top: 0, bottom: 15, left: 20, right: 15 }
 const axisfontsize = 12
+
 const plotdata = computed(() => {
 	let valueArray: [Date, number][] = []
 	if (etData.etPriceList.size > 0) {
@@ -110,15 +126,18 @@ const confirmButtonStyle = computed(() => {
 })
 const xScale = computed(() => {
 	let xdomain = extent(plotdata.value, (d) => d[0]) as [Date, Date]
-
+	if (xdomain[1]) {
+		xdomain[1] = new Date(xdomain[1])
+		xdomain[1].setTime(xdomain[1].getTime() + 3600000)
+	}
 	return scaleTime()
-		.range([margin.left, width - margin.left - margin.right])
+		.range([margin.left, width - margin.right])
 		.domain(xdomain)
 })
 const yDomain = computed(() => {
 	let yd = extent(plotdata.value, (d) => d[1]) as [number, number]
-	yd[0] = Math.floor(yd[0] - 1)
-	yd[1] = Math.floor(yd[1] + 1)
+	yd[0] = yd[0] ? Math.floor(yd[0] - 1) : 0
+	yd[1] = yd[1] ? Math.floor(yd[1] + 1) : 0
 	return yd
 })
 const yScale = computed(() => {
@@ -130,24 +149,17 @@ const linePath = computed(() => {
 	const generator = line()
 	const points = [
 		[margin.left, yScale.value(maxPrice.value)],
-		[width - margin.right, yScale.value(maxPrice.value)],
-	]
-	return generator(points as [number, number][])
-})
-const zeroPath = computed(() => {
-	const generator = line()
-	const points = [
-		[margin.left, yScale.value(0)],
-		[width - margin.right, yScale.value(0)],
+		[width - margin.right - 1, yScale.value(maxPrice.value)],
 	]
 	return generator(points as [number, number][])
 })
 
 const xAxisGenerator = computed(() => {
 	return axisBottom<Date>(xScale.value)
-		.ticks(6)
+		.ticks(plotdata.value.length)
 		.tickSize(5)
-		.tickFormat(timeFormat('%H:%M'))
+		.tickSizeInner(-height)
+		.tickFormat((d) => (d.getHours() % 6 == 0 ? timeFormat('%H:%M')(d) : ''))
 })
 const yAxisGenerator = computed(() => {
 	return axisLeft<number>(yScale.value)
@@ -156,6 +168,7 @@ const yAxisGenerator = computed(() => {
 		.tickFormat((d) => d.toString())
 })
 const draw = computed(() => {
+	// force a redraw if needsUpdate is true
 	if (needsUpdate.value == true) {
 		dummy = !dummy
 	}
@@ -186,8 +199,10 @@ const draw = computed(() => {
 		.attr('color', 'var(--color-bg)')
 	xAxis
 		.selectAll('.tick line')
-		.attr('stroke', 'var(--color-fg)')
-		.attr('stroke-width', '0.5')
+		.attr('stroke', 'var(--color-bg)')
+		.attr('stroke-width', (d) =>
+			(d as Date).getHours() % 6 == 0 ? '2' : '0.5',
+		)
 	xAxis.select('.domain').attr('stroke', 'var(--color-bg')
 	// Y Axis
 	const yAxis = svg.append('g').attr('class', 'axis').call(yAxisGenerator.value)
@@ -200,23 +215,18 @@ const draw = computed(() => {
 	yAxis
 		.selectAll('.tick line')
 		.attr('stroke', 'var(--color-bg)')
-		.attr('stroke-width', '0.5')
+		.attr('stroke-width', (d) => ((d as number) % 5 == 0 ? '2' : '0.5'))
 	yAxis.select('.domain').attr('stroke', 'var(--color-bg)')
 	// zero line
-	if (yDomain.value[0] < 0) {
-		svg
-			.append('path')
-			.attr('d', zeroPath.value)
-			.attr('stroke', 'var(--color-fg)')
-	}
+
 	// Line for max price
 	svg.append('path').attr('d', linePath.value).attr('stroke', 'yellow')
 
 	return 'PriceChart.vue'
 })
 const chartId = computed(() => {
-	if (props.chargepoint) {
-		return 'priceChartCanvas' + props.chargepoint.id
+	if (cp.value) {
+		return 'priceChartCanvas' + cp.value.id
 	} else {
 		return 'priceChartCanvasGlobal'
 	}
@@ -224,9 +234,27 @@ const chartId = computed(() => {
 onMounted(() => {
 	needsUpdate.value = !needsUpdate.value
 })
+onUpdated(() => {
+	_maxPrice.value = cp.value.etMaxPrice
+})
 </script>
-
 <style scoped>
+.grapharea {
+	width: 100%;
+	grid-column: span 9;
+}
+.controlarea {
+	width: 100%;
+	grid-column: span 3;
+}
+.subtitle {
+	font-size: var(--font-settings);
+	font-weight: regular;
+}
+.priceinput {
+	width: 100%;
+}
+
 .color-charging {
 	color: var(--color-charging);
 }
diff --git a/packages/modules/display_themes/colors/source/src/components/shared/ConfigItem.vue b/packages/modules/display_themes/colors/source/src/components/shared/ConfigItem.vue
index 38c4dcfc41..4b757b60ae 100755
--- a/packages/modules/display_themes/colors/source/src/components/shared/ConfigItem.vue
+++ b/packages/modules/display_themes/colors/source/src/components/shared/ConfigItem.vue
@@ -1,6 +1,6 @@
 <template>
 	<div class="configitem subgrid">
-		<span class="d-flex align-items-baseline m-0 p-0 grid-col-4 scaled">
+		<span class="d-flex align-items-baseline m-0 p-0 grid-col-6 scaled">
 			<i
 				v-if="props.icon"
 				class="fa-solid fa-sm m-0 p-0 me-2 item-icon"
@@ -12,7 +12,7 @@
 			{{ title }}</span
 		>
 		<div
-			class="ms-1 mb-2 p-0 pt-2 d-flex justify-content-stretch align-items-center grid-col-4"
+			class="ms-1 mb-2 p-0 pt-2 d-flex justify-content-stretch align-items-center grid-col-6"
 		>
 			<span class="justify-content-stretch d-flex">
 				<slot />
@@ -54,7 +54,7 @@ const props = defineProps<{
 .configitem {
 	font-size: var(--font-settings);
 
-	align-items: center;
+	align-items: baseline;
 	justify-content: space-between;
 }
 </style>
diff --git a/packages/modules/display_themes/colors/source/src/components/shared/DisplayButton.vue b/packages/modules/display_themes/colors/source/src/components/shared/DisplayButton.vue
index e315eccf55..cdb55b1dfb 100755
--- a/packages/modules/display_themes/colors/source/src/components/shared/DisplayButton.vue
+++ b/packages/modules/display_themes/colors/source/src/components/shared/DisplayButton.vue
@@ -30,7 +30,10 @@ function buttonClicked() {
 <style scoped>
 .displaybutton {
 	border: 0.1px solid var(--color-frame);
-	padding: 8px;
+	padding-left: 8px;
+	padding-right: 8px;
+	padding-top: 6px;
+	padding-bottom: 6px;
 	align-self: top;
 	box-shadow: 1px 3px black;
 	font-weight: bold;
diff --git a/packages/modules/display_themes/colors/source/src/components/shared/RangeInput.vue b/packages/modules/display_themes/colors/source/src/components/shared/RangeInput.vue
index dacdfa1776..d8f6bb0396 100755
--- a/packages/modules/display_themes/colors/source/src/components/shared/RangeInput.vue
+++ b/packages/modules/display_themes/colors/source/src/components/shared/RangeInput.vue
@@ -1,6 +1,8 @@
 <template>
-	<span class="d-flex flex-column">
-		<span class="d-flex flex-fill justify-content-between align-items-center">
+	<span class="rangewidget d-flex flex-column">
+		<span
+			class="rangeslider d-flex flex-fill justify-content-between align-items-center"
+		>
 			<span type="button" class="minusButton" @click="stepDown">
 				<i class="fa fa-xl fa-minus-square me-2" />
 			</span>
@@ -63,23 +65,34 @@ function stepUp() {
 </script>
 
 <style scoped>
+.rangewidget {
+	width: 100%;
+}
+.rangeslider {
+	width: 100%;
+}
 .minlabel {
 	color: var(--color-menu);
+	font-size: var(--font-settings);
 }
 
 .maxlabel {
 	color: var(--color-menu);
+	font-size: var(--font-settings);
 }
 
 .valuelabel {
 	color: var(--color-fg);
+	font-size: var(--font-settings);
 }
 
 .minusButton {
 	color: var(--color-menu);
+	font-size: var(--font-extralarge);
 }
 
 .plusButton {
 	color: var(--color-menu);
+	font-size: var(--font-extralarge);
 }
 </style>
diff --git a/packages/modules/display_themes/colors/source/src/components/shared/SwitchInput.vue b/packages/modules/display_themes/colors/source/src/components/shared/SwitchInput.vue
index 9e1b7ffa90..e2097d3c58 100755
--- a/packages/modules/display_themes/colors/source/src/components/shared/SwitchInput.vue
+++ b/packages/modules/display_themes/colors/source/src/components/shared/SwitchInput.vue
@@ -1,11 +1,12 @@
 <template>
-	<div class="form-check form-switch">
+	<div
+		class="form-check form-switch d-flex align-items-center justify-content-center"
+	>
 		<input
 			v-model="flag"
 			class="form-check-input"
 			type="checkbox"
 			role="switch"
-			:style="switchStyle"
 		/>
 	</div>
 </template>
@@ -26,12 +27,19 @@ const flag = computed({
 		emit('update:modelValue', value)
 	},
 })
-const switchStyle = computed(() => {
-	if (flag.value) {
-		return { 'background-color': 'green', 'font-size': '20px' }
-	} else {
-		return { 'background-color': 'white', 'font-size': '20px' }
-	}
-})
 </script>
-<style scoped></style>
+<style scoped>
+.form-switch .form-check-input {
+	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='var(--color-fg)'/%3e%3c/svg%3e");
+	background-color: var(--color-evu);
+}
+.form-switch .form-check-input:checked {
+	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='white'/%3e%3c/svg%3e");
+	background-color: var(--color-pv);
+}
+.form-switch .form-check-input {
+	border: 0.1px dotted var(--color-fg);
+	font-size: 20px;
+	box-shadow: 2px 3px black;
+}
+</style>
diff --git a/packages/modules/display_themes/colors/source/src/components/shared/WBWidget.vue b/packages/modules/display_themes/colors/source/src/components/shared/WBWidget.vue
index 1e9ac4d62f..0f1d32d5ad 100755
--- a/packages/modules/display_themes/colors/source/src/components/shared/WBWidget.vue
+++ b/packages/modules/display_themes/colors/source/src/components/shared/WBWidget.vue
@@ -1,56 +1,79 @@
 <template>
-	<div class="p-2 m-0 d-flex" :class="widgetWidth">
-		<div class="wb-widget p-0 m-0 shadow">
-			<div class="d-flex justify-content-between">
-				<h3 class="m-4 me-0 mb-0">
-					<slot name="title">
-						<div class="p-0">(title goes here)</div>
-					</slot>
-					<slot name="subtitle" />
-				</h3>
-				<div class="p-4 pb-0 ps-0 m-0" style="text-align: right">
+	<div class="p-2 m-0">
+		<div class="wb-widget m-0 pb-4 shadow">
+			<div class="header mt-4 mx-2">
+				<div class="titles">
+					<div class="title">
+						<slot name="title">
+							<div class="p-0">(title goes here)</div>
+						</slot>
+					</div>
+					<div class="subtitle">
+						<slot name="subtitle" />
+					</div>
+				</div>
+				<div class="buttons">
 					<slot name="buttons" />
 				</div>
 			</div>
-			<div class="px-4 pt-4 pb-2 wb-subwidget">
-				<div class="row">
-					<div class="col m-0 p-0">
-						<div class="container-fluid m-0 p-0">
-							<slot />
-						</div>
-					</div>
-				</div>
+			<div class="wb-subwidget mx-2 subgrid">
+				<slot />
 			</div>
-			<div v-if="$slots.footer != undefined">
-				<hr />
-				<div class="px-4 py-2 wb-subwidget">
-					<div class="row">
-						<div class="col">
-							<div class="container-fluid m-0 p-0">
-								<slot name="footer" />
-							</div>
-						</div>
-					</div>
+			<div v-if="$slots.footer != undefined" class="subgrid">
+				<hr class="grid-col-12" />
+				<div class="wb-subwidget mx-2 subgrid">
+					<slot name="footer" />
 				</div>
 			</div>
 		</div>
 	</div>
 </template>
 
-<script setup lang="ts">
-import { computed } from 'vue'
-import { globalConfig } from '@/assets/js/themeConfig'
-const props = defineProps<{
-	variableWidth?: boolean
-	fullWidth?: boolean
-}>()
-const widgetWidth = computed(() => {
-	return props.fullWidth
-		? 'col-12'
-		: props.variableWidth && globalConfig.preferWideBoxes
-			? 'col-lg-6'
-			: 'col-lg-4'
-})
-</script>
-
-<style scoped></style>
+<script setup lang="ts"></script>
+
+<style scoped>
+.wb-widget {
+	background-color: var(--color-bg);
+	border: 0.1px solid var(--color-frame);
+	align-self: stretch;
+	width: 100%;
+	border-radius: 30px;
+	display: grid;
+	grid-template-columns: repeat(12, auto);
+	gap: 0.2em;
+	justify-content: stretch;
+}
+
+.wb-subwidget {
+	border: 0px solid var(--color-subframe);
+	padding: var(--padding-widget);
+	grid-column: span 12;
+}
+
+.header {
+	grid-column: span 12;
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+}
+
+.titles {
+	display: flex;
+	flex-direction: column;
+}
+
+.title {
+	font-size: var(--font-extralarge);
+	color: var(--color-title);
+	font-weight: bold;
+	transform: scaleX(0.9294);
+}
+
+.subtitle {
+	font-size: var(--font-medium);
+}
+
+.buttons {
+	grid-column: span 6;
+}
+</style>
diff --git a/packages/modules/display_themes/colors/source/src/components/shared/WbSubwidget.vue b/packages/modules/display_themes/colors/source/src/components/shared/WbSubwidget.vue
deleted file mode 100755
index e121800ef6..0000000000
--- a/packages/modules/display_themes/colors/source/src/components/shared/WbSubwidget.vue
+++ /dev/null
@@ -1,86 +0,0 @@
-<template>
-	<div class="wb-subwidget px-3 pt-2 my-0" :class="widgetwidth">
-		<div class="d-flex justify-content-between align-items-center titlerow">
-			<div class="d-flex widgetname p-0 m-0" :style="titlestyle">
-				<slot name="title" />
-			</div>
-
-			<div class="buttonarea grid-col-12" style="text-align: right">
-				<slot name="buttons" />
-			</div>
-		</div>
-		<div class="contentrow grid-col-12">
-			<slot />
-		</div>
-	</div>
-</template>
-<script setup lang="ts">
-import { computed } from 'vue'
-
-const props = defineProps<{
-	titlecolor?: string
-	fullwidth?: boolean
-	small?: boolean
-}>()
-const titlestyle = computed(() => {
-	let result = {
-		'font-weight': 'bold',
-		color: 'var(--color-fg)',
-		'font-size': 'var(--font-normal)',
-	}
-
-	if (props.titlecolor) {
-		result.color = props.titlecolor
-	}
-	if (props.small) {
-		result['font-size'] = 'var(--font-verysmall)'
-	}
-	return result
-})
-const widgetwidth = computed(() => {
-	return props.fullwidth ? 'grid-col-12' : 'grid-col-4'
-})
-</script>
-<style scoped>
-@supports (grid-template-columns: subgrid) {
-	.wb-subwidget {
-		border-top: 0.5px solid var(--color-scale);
-		display: grid;
-		grid-template-columns: subgrid;
-		grid-column: 1 / 13;
-	}
-}
-
-@supports not (grid-template-columns: subgrid) {
-	.wb-subwidget {
-		border-top: 0.5px solid var(--color-scale);
-		display: grid;
-		grid-template-columns: repeat(12, auto);
-		grid-column: 1 / 13;
-	}
-}
-
-.titlerow {
-	grid-column: 1 / 13;
-}
-
-@supports (grid-template-columns: subgrid) {
-	.contentrow {
-		display: grid;
-		grid-template-columns: subgrid;
-		grid-column: 1 / 13;
-		align-items: top;
-	}
-}
-@supports not (grid-template-columns: subgrid) {
-	.contentrow {
-		display: grid;
-		align-items: top;
-		grid-template-columns: repeat(12, auto);
-	}
-}
-
-.widgetname {
-	font-weight: bold;
-}
-</style>
diff --git a/packages/modules/display_themes/colors/source/src/components/shared/WbWidgetFlex.vue b/packages/modules/display_themes/colors/source/src/components/shared/WbWidgetFlex.vue
index cc48e04358..125eb4c345 100755
--- a/packages/modules/display_themes/colors/source/src/components/shared/WbWidgetFlex.vue
+++ b/packages/modules/display_themes/colors/source/src/components/shared/WbWidgetFlex.vue
@@ -37,6 +37,9 @@ const widgetWidth = computed(() => {
 
 <style scoped>
 .wb-widget {
+	background-color: var(--color-bg);
+	border: 0.1px solid var(--color-frame);
+	align-self: stretch;
 	width: 100%;
 	border-radius: 30px;
 }
diff --git a/packages/modules/display_themes/colors/source/src/views/DisplayTheme.vue b/packages/modules/display_themes/colors/source/src/views/DisplayTheme.vue
index 1a61e5595b..82c1a7d04a 100644
--- a/packages/modules/display_themes/colors/source/src/views/DisplayTheme.vue
+++ b/packages/modules/display_themes/colors/source/src/views/DisplayTheme.vue
@@ -16,7 +16,6 @@
 			<CPChargePoint
 				v-if="Object.values(chargePoints).length > globalConfig.cpToShow"
 				:chargepoint="Object.values(chargePoints)[globalConfig.cpToShow]"
-				:full-width="true"
 			></CPChargePoint>
 		</div>
 	</div>
@@ -35,8 +34,9 @@
 		<template #title
 			><span class="settingstitle"
 				>Einstellungen für
+				{{ Object.values(chargePoints)[globalConfig.cpToShow].vehicleName }}
+				an Ladepunkt
 				{{ Object.values(chargePoints)[globalConfig.cpToShow].name }}
-				({{ Object.values(chargePoints)[globalConfig.cpToShow].vehicleName }})
 			</span>
 		</template>
 		<SettingsPage
diff --git a/packages/modules/display_themes/colors/source/src/views/NavigationBar.vue b/packages/modules/display_themes/colors/source/src/views/NavigationBar.vue
index 3833e716e9..b9fa386590 100755
--- a/packages/modules/display_themes/colors/source/src/views/NavigationBar.vue
+++ b/packages/modules/display_themes/colors/source/src/views/NavigationBar.vue
@@ -3,7 +3,7 @@
 
 	<div class="navigation">
 		<span class="graphbuttons">
-			<span class="timedisplay">{{ formatCurrentTime(currentTime) }}</span>
+			<span class="brand me-4">openWB</span>
 			<DisplayButton icon="fa-chart-pie" @click="selectPowermeter"
 				>Leistung</DisplayButton
 			>
@@ -22,7 +22,11 @@
 			>Status</DisplayButton
 		>
 		<span class="cpbuttons">
-			<DisplayButton color="var(--color-cp0)" @click="cpLeft">
+			<DisplayButton
+				v-if="Object.values(chargePoints).length > 1"
+				color="var(--color-cp0)"
+				@click="cpLeft"
+			>
 				<span class="fas fa-arrow-left px-2" />
 				<span class="fas fa-charging-station pe-2" />
 			</DisplayButton>
@@ -32,10 +36,15 @@
 			>
 				<span class="fas fa-lock px-4" />
 			</DisplayButton>
-			<DisplayButton color="var(--color-cp0)" @click="cpRight">
+			<DisplayButton
+				v-if="Object.values(chargePoints).length > 1"
+				color="var(--color-cp0)"
+				@click="cpRight"
+			>
 				<span class="fas fa-charging-station px-2" />
 				<span class="fas fa-arrow-right pe-2" />
 			</DisplayButton>
+			<span class="timedisplay ms-4">{{ formatCurrentTime(currentTime) }}</span>
 		</span>
 	</div>
 </template>
@@ -82,8 +91,8 @@ onBeforeUnmount(() => {
 .navigation {
 	display: flex;
 	justify-content: space-between;
-	padding-left: 20px;
-	padding-right: 20px;
+	padding-left: 10px;
+	padding-right: 10px;
 	padding-top: 2px;
 	padding-bottom: 2px;
 	align-items: center;
@@ -95,7 +104,6 @@ onBeforeUnmount(() => {
 	font-size: var(--font-medium);
 	font-weight: bold;
 	color: var(--color-input);
-	margin-right: 12px;
 }
 
 .navbar {
@@ -114,6 +122,7 @@ onBeforeUnmount(() => {
 .cpbuttons {
 	display: flex;
 	justify-content: left;
+	align-items: center;
 	gap: 5px;
 }
 
@@ -156,4 +165,9 @@ onBeforeUnmount(() => {
 	color: var(--color-menu);
 	font-size: var(--font-normal);
 }
+.brand {
+	font-size: var(--font-medium);
+	font-weight: bold;
+	color: var(--color-input);
+}
 </style>
diff --git a/packages/modules/display_themes/colors/source/src/views/SettingsPage.vue b/packages/modules/display_themes/colors/source/src/views/SettingsPage.vue
index 0e0b6f8710..83159d9877 100644
--- a/packages/modules/display_themes/colors/source/src/views/SettingsPage.vue
+++ b/packages/modules/display_themes/colors/source/src/views/SettingsPage.vue
@@ -2,13 +2,15 @@
 	<div class="m-0 mt-1 p-0 grid-col-12 tabarea">
 		<nav class="nav nav-tabs nav-justified mx-1 mt-1" role="tablist">
 			<a
+				:id="'chSettings' + cpid"
 				class="nav-link active"
 				data-bs-toggle="tab"
 				:data-bs-target="'#chargeSettings' + cpid"
 			>
-				<i class="fa-solid fa-charging-station" />
+				<i class="fa-solid fa-charging-station" /> Allgemein
 			</a>
 			<a
+				:id="'inSettings' + cpid"
 				class="nav-link"
 				data-bs-toggle="tab"
 				:data-bs-target="'#instantSettings' + cpid"
@@ -16,6 +18,7 @@
 				<i class="fa-solid fa-lg fa-bolt" /> Sofort
 			</a>
 			<a
+				:id="'phvSettings' + cpid"
 				class="nav-link"
 				data-bs-toggle="tab"
 				:data-bs-target="'#pvSettings' + cpid"
@@ -23,6 +26,7 @@
 				<i class="fa-solid fa-solar-panel me-1" /> PV
 			</a>
 			<a
+				:id="'scSettings' + cpid"
 				class="nav-link"
 				data-bs-toggle="tab"
 				:data-bs-target="'#scheduledSettings' + cpid"
@@ -30,93 +34,32 @@
 				<i class="fa-solid fa-bullseye me-1" /> Zielladen
 			</a>
 			<a
+				:id="'tmSettings' + cpid"
 				class="nav-link"
 				data-bs-toggle="tab"
 				:data-bs-target="'#timeSettings' + cpid"
 			>
-				<i class="fa-solid fa-clock" /> Zeitladen
+				<i class="fa-solid fa-clock" /> Zeitpläne
 			</a>
 			<a
+				:id="'prSettings' + cpid"
 				class="nav-link"
 				data-bs-toggle="tab"
-				:data-bs-target="'#carSettings' + cpid"
+				:data-bs-target="'#priceSettings' + cpid"
 			>
-				<i class="fa-solid fa-rectangle-list" />
-			</a>
-			<a
-				v-if="etData.active && cp.etActive"
-				class="nav-link"
-				data-bs-toggle="tab"
-				:data-bs-target="'#priceChart' + cpid"
-			>
-				<i class="fa-solid fa-chart-line" />
+				<i class="fa-solid fa-coins" /> Strompreis
 			</a>
 		</nav>
 
 		<!-- Tab panes -->
-		<div id="settingsPanes" class="tab-content mx-1 p-1 pb-3">
+		<div id="settingsPanes" class="tab-content mt-2">
 			<div
 				:id="'chargeSettings' + cpid"
 				class="tab-pane active"
 				role="tabpanel"
 				aria-labelledby="instant-tab"
 			>
-				<CPChargeConfig :chargepoint="chargepoint" />
-				<div class="settingslist">
-					<ConfigItem
-						v-if="globalData.isBatteryConfigured"
-						title="PV-Priorität (global)"
-						icon="fa-car-battery"
-						iconcolor="var(--color-battery)"
-						infotext="Priority during PV production"
-						:fullwidth="true"
-					>
-						<RadioInput
-							v-model="globalData.pvBatteryPriority"
-							:options="evPriorityModes"
-						>
-						</RadioInput>
-					</ConfigItem>
-					<hr class="grid-col-12" />
-					<ConfigItem title="Fahrzeug wechseln" icon="fa-car" :fullwidth="true">
-						<RadioInput
-							v-model.number="connectedVehicle"
-							:options="Object.values(vehicles).map((v) => [v.name, v.id])"
-						/>
-					</ConfigItem>
-					<hr class="grid-col-12" />
-					<ConfigItem
-						title="Strompreisbasiert laden"
-						icon="fa-coins"
-						iconcolor="var(--color-battery)"
-						infotext="Settings"
-					>
-						<SwitchInput v-model="etActive"></SwitchInput>
-					</ConfigItem>
-					<ConfigItem
-						title="Zeitplan aktivieren"
-						icon="fa-clock"
-						iconcolor="var(--color-battery)"
-					>
-						<SwitchInput v-model="timedCharging"></SwitchInput>
-					</ConfigItem>
-					<ConfigItem
-						title="Ladeprofil"
-						icon="fa-sliders"
-						iconcolor="var(--color-pv)"
-					>
-						<RadioInput
-							v-if="vehicles[connectedVehicle]"
-							v-model.number="vehicles[connectedVehicle].chargeTemplateId"
-							:options="
-								Object.keys(chargeTemplates).map((v) => [
-									chargeTemplates[+v].name,
-									v,
-								])
-							"
-						/>
-					</ConfigItem>
-				</div>
+				<CPChargeConfig :chargepoint-id="cpid" />
 			</div>
 			<div
 				:id="'instantSettings' + cpid"
@@ -124,11 +67,7 @@
 				role="tabpanel"
 				aria-labelledby="instant-tab"
 			>
-				<CPConfigInstant
-					:chargepoint="cp as ChargePoint"
-					:vehicles="vehicles"
-					:charge-templates="chargeTemplates"
-				/>
+				<CPConfigInstant :chargepoint-id="cpid" />
 			</div>
 
 			<div
@@ -137,11 +76,7 @@
 				role="tabpanel"
 				aria-labelledby="pv-tab"
 			>
-				<CPConfigPv
-					:chargepoint="cp as ChargePoint"
-					:vehicles="vehicles"
-					:charge-templates="chargeTemplates"
-				/>
+				<CPConfigPv :chargepoint-id="cpid" />
 			</div>
 			<div
 				:id="'scheduledSettings' + cpid"
@@ -151,7 +86,7 @@
 			>
 				<CPConfigScheduled
 					v-if="chargeTemplate != undefined"
-					:charge-template-id="cp.chargeTemplate"
+					:charge-template-id="props.chargepoint.chargeTemplate"
 				/>
 			</div>
 			<div
@@ -162,30 +97,18 @@
 			>
 				<CPConfigTimed
 					v-if="chargeTemplate != undefined"
-					:charge-template-id="cp.chargeTemplate"
+					:charge-template-id="props.chargepoint.chargeTemplate"
 				/>
 			</div>
-
 			<div
-				:id="'carSettings' + cpid"
-				class="tab-pane"
-				role="tabpanel"
-				aria-labelledby="car-tab"
-			>
-				<CPConfigVehicle
-					v-if="vehicles[cp.connectedVehicle] != undefined"
-					:vehicle-id="cp.connectedVehicle"
-				/>
-			</div>
-			<div
-				:id="'priceChart' + cpid"
+				:id="'priceSettings' + cpid"
 				class="tab-pane"
 				role="tabpanel"
 				aria-labelledby="price-tab"
 			>
 				<PriceChart
-					v-if="vehicles[cp.connectedVehicle] != undefined"
-					:chargepoint="cp"
+					v-if="etData.active"
+					:charge-point-id="props.chargepoint.id"
 				/>
 			</div>
 		</div>
@@ -193,49 +116,27 @@
 </template>
 
 <script setup lang="ts">
-import { computed, ref } from 'vue'
-import { globalData } from '@/assets/js/model'
+import { computed } from 'vue'
 import {
-	chargePoints,
 	type ChargePoint,
-	vehicles,
 	chargeTemplates,
 } from '@/components/chargePointList/model'
-import { etData } from '@/components/priceChart/model'
-import ConfigItem from '@/components/shared/ConfigItem.vue'
-import RadioInput from '@/components/shared/RadioInput.vue'
-import SwitchInput from '@/components/shared/SwitchInput.vue'
 import CPConfigInstant from '@/components/chargePointList/CPConfigInstant.vue'
 import CPConfigPv from '@/components/chargePointList/CPConfigPv.vue'
-import { evPriorityModes } from '@/assets/js/types'
+import CPConfigScheduled from '@/components/chargePointList/CPConfigScheduled.vue'
+import CPConfigTimed from '@/components/chargePointList/CPConfigTimed.vue'
+import CPChargeConfig from '@/components/chargePointList/CPChargeConfig.vue'
+import PriceChart from '@/components/priceChart/PriceChart.vue'
+import { etData } from '@/components/priceChart/model'
 const props = defineProps<{
 	chargepoint: ChargePoint
 }>()
-const cp = ref(props.chargepoint)
 const chargeTemplate = computed(() => {
 	return chargeTemplates[props.chargepoint.chargeTemplate]
 })
 const cpid = computed(() => {
 	return props.chargepoint.id
 })
-const etActive = computed({
-	get: () => props.chargepoint.etActive,
-	set: (value: boolean) => {
-		chargePoints[props.chargepoint.id].etActive = value
-	},
-})
-const timedCharging = computed({
-	get: () => props.chargepoint.timedCharging,
-	set: (value: boolean) => {
-		chargePoints[props.chargepoint.id].timedCharging = value
-	},
-})
-const connectedVehicle = computed({
-	get: () => props.chargepoint.connectedVehicle,
-	set: (value: number) => {
-		chargePoints[props.chargepoint.id].connectedVehicle = value
-	},
-})
 </script>
 
 <style scoped>
@@ -246,17 +147,37 @@ const connectedVehicle = computed({
 	color: var(--color-fg);
 	background-color: var(--color-bg);
 }
+
 .nav-link {
-	font-size: var(--font-settings);
+	font-size: 14px;
 	color: var(--color-fg);
 }
+
+.nav-tabs .nav-link.active {
+	background-color: var(--color-fg);
+}
+
 .fa-bolt {
 	color: var(--color-charging);
 }
+
 .fa-charging-station {
-	color: var(--color-fg);
+	color: var(--color-charging);
 }
+
+.fa-bullseye {
+	color: var(--color-battery);
+}
+
 .fa-solar-panel {
 	color: var(--color-pv);
 }
+
+.fa-lock {
+	color: var(--color-evu);
+}
+
+.fa-coins {
+	color: var(--color-charging);
+}
 </style>

From c75275e92f309f0763754bfb31bbb8aca7417d81 Mon Sep 17 00:00:00 2001
From: ndrsnhs <andreas.neuhaus@openwb.de>
Date: Fri, 30 Aug 2024 09:31:14 +0200
Subject: [PATCH 011/205] add sigenergy components

---
 packages/modules/devices/sigenergy/bat.py     | 40 +++++++++++
 packages/modules/devices/sigenergy/config.py  | 72 +++++++++++++++++++
 packages/modules/devices/sigenergy/counter.py | 37 ++++++++++
 packages/modules/devices/sigenergy/device.py  | 48 +++++++++++++
 .../modules/devices/sigenergy/inverter.py     | 35 +++++++++
 5 files changed, 232 insertions(+)
 create mode 100644 packages/modules/devices/sigenergy/bat.py
 create mode 100644 packages/modules/devices/sigenergy/config.py
 create mode 100644 packages/modules/devices/sigenergy/counter.py
 create mode 100644 packages/modules/devices/sigenergy/device.py
 create mode 100644 packages/modules/devices/sigenergy/inverter.py

diff --git a/packages/modules/devices/sigenergy/bat.py b/packages/modules/devices/sigenergy/bat.py
new file mode 100644
index 0000000000..27e0d7a674
--- /dev/null
+++ b/packages/modules/devices/sigenergy/bat.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python3
+import logging
+from dataclass_utils import dataclass_from_dict
+from modules.common.component_state import BatState
+from modules.common.component_type import ComponentDescriptor
+from modules.common.fault_state import ComponentInfo, FaultState
+from modules.common.modbus import ModbusDataType, ModbusTcpClient_
+from modules.common.simcount import SimCounter
+from modules.common.store import get_bat_value_store
+from modules.devices.mtec.config import SigenergyBatSetup
+
+log = logging.getLogger(__name__)
+
+
+class SigenergyBat:
+    def __init__(self, device_id: int, component_config: SigenergyBatSetup) -> None:
+        self.component_config = dataclass_from_dict(SigenergyBatSetup, component_config)
+        self.store = get_bat_value_store(self.component_config.id)
+        self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
+        self.__device_id = device_id
+        self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="speicher")
+
+    def update(self, client: ModbusTcpClient_) -> None:
+        unit = self.component_config.configuration.modbus_id
+
+        power = client.read_holding_registers(30037, ModbusDataType.INT_32, unit=unit) * -1
+        # soc unit 0.01%
+        soc = client.read_holding_registers(30014, ModbusDataType.UINT_16, unit=unit) / 10
+        imported, exported = self.sim_counter.sim_count(power)
+
+        bat_state = BatState(
+            power=power,
+            soc=soc,
+            imported=imported,
+            exported=exported
+        )
+        self.store.set(bat_state)
+
+
+component_descriptor = ComponentDescriptor(configuration_factory=SigenergyBatSetup)
diff --git a/packages/modules/devices/sigenergy/config.py b/packages/modules/devices/sigenergy/config.py
new file mode 100644
index 0000000000..10d6959e0b
--- /dev/null
+++ b/packages/modules/devices/sigenergy/config.py
@@ -0,0 +1,72 @@
+from typing import Optional
+from helpermodules.auto_str import auto_str
+
+from modules.common.component_setup import ComponentSetup
+
+
+class SigenergyConfiguration:
+    def __init__(self,
+                 ip_address: Optional[str] = None,
+                 port: int = 502):
+        self.ip_address = ip_address
+        self.port = port
+
+
+class Sigenergy:
+    def __init__(self,
+                 name: str = "Sigenergy",
+                 type: str = "sigenergy",
+                 id: int = 0,
+                 configuration: SigenergyConfiguration = None) -> None:
+        self.name = name
+        self.type = type
+        self.id = id
+        self.configuration = configuration or SigenergyConfiguration()
+
+
+@auto_str
+class SigenergyBatConfiguration:
+    def __init__(self, modbus_id: int = 247):
+        self.modbus_id = modbus_id
+
+
+@auto_str
+class SigenergyBatSetup(ComponentSetup[SigenergyBatConfiguration]):
+    def __init__(self,
+                 name: str = "Sigenery Speicher",
+                 type: str = "bat",
+                 id: int = 0,
+                 configuration: SigenergyBatConfiguration = None) -> None:
+        super().__init__(name, type, id, configuration or SigenergyBatConfiguration())
+
+
+@auto_str
+class SigenergyCounterConfiguration:
+    def __init__(self, modbus_id: int = 247):
+        self.modbus_id = modbus_id
+
+
+@auto_str
+class SigenergyCounterSetup(ComponentSetup[SigenergyCounterConfiguration]):
+    def __init__(self,
+                 name: str = "Sigenergy Zähler",
+                 type: str = "counter",
+                 id: int = 0,
+                 configuration: SigenergyCounterConfiguration = None) -> None:
+        super().__init__(name, type, id, configuration or SigenergyCounterConfiguration())
+
+
+@auto_str
+class SigenergyInverterConfiguration:
+    def __init__(self, modbus_id: int = 247):
+        self.modbus_id = modbus_id
+
+
+@auto_str
+class SigenergyInverterSetup(ComponentSetup[SigenergyInverterConfiguration]):
+    def __init__(self,
+                 name: str = "Sigenergy Wechselrichter",
+                 type: str = "inverter",
+                 id: int = 0,
+                 configuration: SigenergyInverterConfiguration = None) -> None:
+        super().__init__(name, type, id, configuration or SigenergyInverterConfiguration())
diff --git a/packages/modules/devices/sigenergy/counter.py b/packages/modules/devices/sigenergy/counter.py
new file mode 100644
index 0000000000..3c2213bb98
--- /dev/null
+++ b/packages/modules/devices/sigenergy/counter.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+from dataclass_utils import dataclass_from_dict
+from modules.common.component_state import CounterState
+from modules.common.component_type import ComponentDescriptor
+from modules.common.fault_state import ComponentInfo, FaultState
+from modules.common.modbus import ModbusDataType, ModbusTcpClient_
+from modules.common.simcount import SimCounter
+from modules.common.store import get_counter_value_store
+from modules.devices.sigenergy.config import SigenergyCounterSetup
+
+
+class SigenergyCounter:
+    def __init__(self, device_id: int, component_config: SigenergyCounterSetup) -> None:
+        self.component_config = dataclass_from_dict(SigenergyCounterSetup, component_config)
+        self.store = get_counter_value_store(self.component_config.id)
+        self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
+        self.__device_id = device_id
+        self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="bezug")
+
+    def update(self, client: ModbusTcpClient_):
+        unit = self.component_config.configuration.modbus_id
+
+        power = client.read_holding_registers(30005, ModbusDataType.INT_32, unit=unit)
+        powers = client.read_holding_registers(30052, [ModbusDataType.INT_32]*3, unit=unit)
+        powers = [val / 1000 for val in powers]
+        imported, exported = self.sim_counter.sim_count(power)
+
+        counter_state = CounterState(
+            imported=imported,
+            exported=exported,
+            power=power,
+            powers=powers
+        )
+        self.store.set(counter_state)
+
+
+component_descriptor = ComponentDescriptor(configuration_factory=SigenergyCounterSetup)
diff --git a/packages/modules/devices/sigenergy/device.py b/packages/modules/devices/sigenergy/device.py
new file mode 100644
index 0000000000..eb389cf1db
--- /dev/null
+++ b/packages/modules/devices/sigenergy/device.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+import logging
+from typing import Iterable, Union
+
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
+from modules.common.modbus import ModbusTcpClient_
+from modules.devices.sigenergy.bat import SigenergyBat
+from modules.devices.sigenergy.counter import SigenergyCounter
+from modules.devices.sigenergy.inverter import SigenergyInverter
+from modules.devices.sigenergy.config import Sigenergy, SigenergyBatSetup, SigenergyCounterSetup, SigenergyInverterSetup
+
+log = logging.getLogger(__name__)
+
+
+def create_device(device_config: Sigenergy):
+    def create_bat_component(component_config: SigenergyBatSetup):
+        return SigenergyBat(device_config.id, component_config)
+
+    def create_counter_component(component_config: SigenergyCounterSetup):
+        return SigenergyCounter(device_config.id, component_config)
+
+    def create_inverter_component(component_config: SigenergyInverterSetup):
+        return SigenergyInverter(device_config.id, component_config)
+
+    def update_components(components: Iterable[Union[SigenergyBat, SigenergyCounter, SigenergyInverter]]):
+        with client as c:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update(c)
+
+    try:
+        client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=Sigenergy)
diff --git a/packages/modules/devices/sigenergy/inverter.py b/packages/modules/devices/sigenergy/inverter.py
new file mode 100644
index 0000000000..f075b7751c
--- /dev/null
+++ b/packages/modules/devices/sigenergy/inverter.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python3
+from typing import Dict, Union
+
+from dataclass_utils import dataclass_from_dict
+from modules.common.component_state import InverterState
+from modules.common.component_type import ComponentDescriptor
+from modules.common.fault_state import ComponentInfo, FaultState
+from modules.common.modbus import ModbusDataType, ModbusTcpClient_
+from modules.common.simcount import SimCounter
+from modules.common.store import get_inverter_value_store
+from modules.devices.sigenergy.config import SigenergyInverterSetup
+
+
+class SigenergyInverter:
+    def __init__(self, device_id: int, component_config: Union[Dict, SigenergyInverterSetup]) -> None:
+        self.component_config = dataclass_from_dict(SigenergyInverterSetup, component_config)
+        self.store = get_inverter_value_store(self.component_config.id)
+        self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
+        self.__device_id = device_id
+        self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="pv")
+
+    def update(self, client: ModbusTcpClient_) -> None:
+        unit = self.component_config.configuration.modbus_id
+
+        power = client.read_holding_registers(30035, ModbusDataType.INT_32, unit=unit) * -1
+        _, exported = self.sim_counter.sim_count(power)
+
+        inverter_state = InverterState(
+            power=power,
+            exported=exported,
+        )
+        self.store.set(inverter_state)
+
+
+component_descriptor = ComponentDescriptor(configuration_factory=SigenergyInverterSetup)

From c91e9812ecb66162b307cfb52943ec1fe5f4b86e Mon Sep 17 00:00:00 2001
From: ndrsnhs <andreas.neuhaus@openwb.de>
Date: Fri, 30 Aug 2024 10:18:58 +0200
Subject: [PATCH 012/205] fix in config

---
 packages/modules/devices/sigenergy/bat.py     | 4 ++--
 packages/modules/devices/sigenergy/config.py  | 2 +-
 packages/modules/devices/sigenergy/counter.py | 3 +--
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/packages/modules/devices/sigenergy/bat.py b/packages/modules/devices/sigenergy/bat.py
index 27e0d7a674..0d2317701c 100644
--- a/packages/modules/devices/sigenergy/bat.py
+++ b/packages/modules/devices/sigenergy/bat.py
@@ -7,7 +7,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.mtec.config import SigenergyBatSetup
+from modules.devices.sigenergy.config import SigenergyBatSetup
 
 log = logging.getLogger(__name__)
 
@@ -24,7 +24,7 @@ def update(self, client: ModbusTcpClient_) -> None:
         unit = self.component_config.configuration.modbus_id
 
         power = client.read_holding_registers(30037, ModbusDataType.INT_32, unit=unit) * -1
-        # soc unit 0.01%
+        # soc unit 0.1%
         soc = client.read_holding_registers(30014, ModbusDataType.UINT_16, unit=unit) / 10
         imported, exported = self.sim_counter.sim_count(power)
 
diff --git a/packages/modules/devices/sigenergy/config.py b/packages/modules/devices/sigenergy/config.py
index 10d6959e0b..48ae1deff1 100644
--- a/packages/modules/devices/sigenergy/config.py
+++ b/packages/modules/devices/sigenergy/config.py
@@ -33,7 +33,7 @@ def __init__(self, modbus_id: int = 247):
 @auto_str
 class SigenergyBatSetup(ComponentSetup[SigenergyBatConfiguration]):
     def __init__(self,
-                 name: str = "Sigenery Speicher",
+                 name: str = "Sigenergy Speicher",
                  type: str = "bat",
                  id: int = 0,
                  configuration: SigenergyBatConfiguration = None) -> None:
diff --git a/packages/modules/devices/sigenergy/counter.py b/packages/modules/devices/sigenergy/counter.py
index 3c2213bb98..7244e4429b 100644
--- a/packages/modules/devices/sigenergy/counter.py
+++ b/packages/modules/devices/sigenergy/counter.py
@@ -20,9 +20,8 @@ def __init__(self, device_id: int, component_config: SigenergyCounterSetup) -> N
     def update(self, client: ModbusTcpClient_):
         unit = self.component_config.configuration.modbus_id
 
-        power = client.read_holding_registers(30005, ModbusDataType.INT_32, unit=unit)
         powers = client.read_holding_registers(30052, [ModbusDataType.INT_32]*3, unit=unit)
-        powers = [val / 1000 for val in powers]
+        power = client.read_holding_registers(30005, ModbusDataType.INT_32, unit=unit)
         imported, exported = self.sim_counter.sim_count(power)
 
         counter_state = CounterState(

From 5eb88d6b2eef504c721ef1e92b309c7ed079d86f Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 3 Sep 2024 12:01:00 +0200
Subject: [PATCH 013/205] Update version 2.1.6-Alpha.1

---
 web/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/web/version b/web/version
index 026a7c4da7..398b99ff46 100644
--- a/web/version
+++ b/web/version
@@ -1 +1 @@
-2.1.5-Patch.1
+2.1.6-Alpha.1

From c8003c34f708fed69a6ddd98b152fccf5583b4ee Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 3 Sep 2024 12:01:30 +0200
Subject: [PATCH 014/205] thread handler: don't start multiple thread instances
 (#1809)

* thread handler: don't start multiple thread instances

* logging

* review: log message only if the thread was really started
---
 packages/control/chargepoint/chargepoint.py   | 15 ++++----
 .../chargepoint/chargepoint_state_update.py   |  3 +-
 packages/control/cp_interruption.py           | 34 -------------------
 packages/control/optional.py                  |  7 ++--
 packages/control/phase_switch.py              | 22 +++---------
 packages/control/process.py                   | 14 ++------
 .../data_migration/data_migration.py          |  8 ++---
 packages/helpermodules/system.py              |  8 ++---
 packages/helpermodules/utils/__init__.py      |  2 +-
 .../helpermodules/utils/_thread_handler.py    | 25 ++++++++++++--
 packages/main.py                              |  5 +--
 packages/modules/loadvars.py                  | 10 +++---
 packages/modules/update_soc.py                |  6 ++--
 packages/smarthome/smarthome.py               |  8 ++---
 14 files changed, 60 insertions(+), 107 deletions(-)
 delete mode 100644 packages/control/cp_interruption.py

diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index 6968e47da7..647b6d2c26 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -22,7 +22,6 @@
 from typing import Dict, Optional, Tuple
 
 from control.chargelog import chargelog
-from control import cp_interruption
 from control import data
 from control.chargemode import Chargemode
 from control.chargepoint.chargepoint_data import ChargepointData, ConnectedConfig, ConnectedInfo, ConnectedSoc, Get, Log
@@ -35,6 +34,7 @@
 from helpermodules.phase_mapping import convert_single_evu_phase_to_cp_phase
 from helpermodules.pub import Pub
 from helpermodules import timecheck
+from helpermodules.utils import thread_handler
 from modules.common.abstract_chargepoint import AbstractChargepoint
 from helpermodules.timecheck import create_timestamp
 
@@ -349,12 +349,13 @@ def initiate_control_pilot_interruption(self):
                 if self.data.config.control_pilot_interruption_hw:
                     # Wird die Ladung gestartet?
                     if self.set_current_prev == 0 and self.data.set.current != 0:
-                        cp_interruption.thread_cp_interruption(self.num,
-                                                               self.chargepoint_module,
-                                                               charging_ev.ev_template.data.
-                                                               control_pilot_interruption_duration)
-                        message = "Control-Pilot-Unterbrechung für " + str(
-                            charging_ev.ev_template.data.control_pilot_interruption_duration) + "s."
+                        # Die CP-Unterbrechung erfolgt in Threads, da diese länger als ein Zyklus dauert.
+                        if thread_handler(threading.Thread(
+                                target=self.chargepoint_module.interrupt_cp,
+                                args=(charging_ev.ev_template.data.control_pilot_interruption_duration,),
+                                name=f"cp{self.chargepoint_module.config.id}")):
+                            message = "Control-Pilot-Unterbrechung für " + str(
+                                charging_ev.ev_template.data.control_pilot_interruption_duration) + "s."
                         self.set_state_and_log(message)
                 else:
                     message = "CP-Unterbrechung nicht möglich, da der Ladepunkt keine CP-Unterbrechung unterstützt."
diff --git a/packages/control/chargepoint/chargepoint_state_update.py b/packages/control/chargepoint/chargepoint_state_update.py
index 4da7490743..1fbc9e3e4b 100644
--- a/packages/control/chargepoint/chargepoint_state_update.py
+++ b/packages/control/chargepoint/chargepoint_state_update.py
@@ -5,6 +5,7 @@
 from typing import Dict
 
 from control.chargepoint.chargepoint import Chargepoint
+from helpermodules.utils import thread_handler
 
 
 log = logging.getLogger(__name__)
@@ -27,7 +28,7 @@ def __init__(self,
         self.ev_data = ev_data
         self.ev_charge_template_data = ev_charge_template_data
         self.ev_template_data = ev_template_data
-        Thread(target=self.update, args=(), name=f"ChargepointStateUpdate cp {index}").start()
+        thread_handler(Thread(target=self.update, args=(), name=f"ChargepointStateUpdate cp {index}"))
 
     def update(self):
         self.event_global_data_initialized.wait()
diff --git a/packages/control/cp_interruption.py b/packages/control/cp_interruption.py
deleted file mode 100644
index f612f7a830..0000000000
--- a/packages/control/cp_interruption.py
+++ /dev/null
@@ -1,34 +0,0 @@
-""" Modul, das die CP-Unterbrechung durchführt.
-"""
-import logging
-import threading
-
-from modules.common.abstract_chargepoint import AbstractChargepoint
-
-log = logging.getLogger(__name__)
-
-cp_interruption_threads = {}
-
-
-def thread_cp_interruption(cp_num: int, chargepoint_module: AbstractChargepoint, duration: int):
-    """ startet einen Thread pro Ladepunkt, an dem eine CP-Unterbrechung durchgeführt werden soll.
-    Die CP-Unterbrechung erfolgt in Threads, da diese länger als ein Zyklus dauert.
-    """
-    try:
-        global cp_interruption_threads
-        # fertige Threads aus der Liste löschen:
-        cp_interruption_threads = {t: cp_interruption_threads[t]
-                                   for t in cp_interruption_threads if cp_interruption_threads[t].is_alive()}
-
-        # prüfen, ob Thread in der Liste ist. Dann ist noch eine CP-Unterbrechung aktiv und es darf keine neue
-        # gestartet werden.
-        if "thread_cp"+str(cp_num) not in cp_interruption_threads:
-            cp_interruption_threads["thread_cp"+str(cp_num)] = threading.Thread(
-                target=chargepoint_module.interrupt_cp, args=(duration,), name=f"cp{chargepoint_module.config.id}")
-            cp_interruption_threads["thread_cp"+str(cp_num)].start()
-            log.debug("Thread zur CP-Unterbrechung an LP"+str(cp_num)+" gestartet.")
-        else:
-            log.debug(f"Kein Thread zur CP-Unterbrechung an LP{cp_num} gestartet, da bereits eine CP-Unterbrechung "
-                      f"aktiv ist.")
-    except Exception:
-        log.exception("Fehler im Modul für die CP-Unterbrechung")
diff --git a/packages/control/optional.py b/packages/control/optional.py
index ec031c66b1..6b0bd1f347 100644
--- a/packages/control/optional.py
+++ b/packages/control/optional.py
@@ -10,6 +10,7 @@
 from helpermodules.constants import NO_ERROR
 from helpermodules.pub import Pub
 from helpermodules.timecheck import create_unix_timestamp_current_full_hour
+from helpermodules.utils import thread_handler
 from modules.common.configurable_tariff import ConfigurableElectricityTariff
 from modules.display_themes.cards.config import CardsDisplayTheme
 
@@ -141,11 +142,7 @@ def et_get_loading_hours(self, duration: float, remaining_time: float) -> List[i
     def et_get_prices(self):
         try:
             if self.et_module:
-                for thread in threading.enumerate():
-                    if thread.name == "electricity tariff":
-                        log.debug("Don't start multiple instances of electricity tariff thread.")
-                        return
-                threading.Thread(target=self.et_module.update, args=(), name="electricity tariff").start()
+                thread_handler(threading.Thread(target=self.et_module.update, args=(), name="electricity tariff"))
             else:
                 # Wenn kein Modul konfiguriert ist, Fehlerstatus zurücksetzen.
                 if self.data.et.get.fault_state != 0 or self.data.et.get.fault_str != NO_ERROR:
diff --git a/packages/control/phase_switch.py b/packages/control/phase_switch.py
index 83216079ab..afd19ef4e2 100644
--- a/packages/control/phase_switch.py
+++ b/packages/control/phase_switch.py
@@ -3,13 +3,12 @@
 import logging
 import threading
 import time
-from typing import Dict
 
 from control.ev import Ev
+from helpermodules.utils._thread_handler import is_thread_alive, thread_handler
 from modules.common.abstract_chargepoint import AbstractChargepoint
 
 log = logging.getLogger(__name__)
-phase_switch_threads: Dict[str, threading.Thread] = {}
 
 
 def thread_phase_switch(cp) -> None:
@@ -17,23 +16,13 @@ def thread_phase_switch(cp) -> None:
     Phasenumschaltung erfolgt in Threads, da diese länger als ein Zyklus dauert.
     """
     try:
-        global phase_switch_threads
-        # fertige Threads aus der Liste löschen:
-        phase_switch_threads = {
-            t: phase_switch_threads[t] for t in phase_switch_threads if phase_switch_threads[t].is_alive()}
-
-        # prüfen, ob Thread in der Liste ist. Dann ist noch eine Phasenumschaltung aktiv und es darf keine neue
-        # gestartet werden.
-        if "thread_cp"+str(cp.num) not in phase_switch_threads:
-            # Thread zur Phasenumschaltung erstellen, starten und der Liste hinzufügen.
-            phase_switch_threads["thread_cp"+str(cp.num)] = threading.Thread(
+        if thread_handler(threading.Thread(
                 target=_perform_phase_switch,
                 args=(cp.chargepoint_module,
                       cp.data.control_parameter.phases,
                       cp.data.set.charging_ev_data,
                       cp.data.get.charge_state),
-                name=f"phase switch cp{cp.chargepoint_module.config.id}")
-            phase_switch_threads["thread_cp"+str(cp.num)].start()
+                name=f"phase switch cp{cp.chargepoint_module.config.id}")):
             log.debug("Thread zur Phasenumschaltung an LP"+str(cp.num)+" gestartet.")
     except Exception:
         log.exception("Fehler im Phasenumschaltungs-Modul")
@@ -56,7 +45,4 @@ def _perform_phase_switch(chargepoint_module: AbstractChargepoint, phases: int,
 
 
 def phase_switch_thread_alive(cp_num):
-    if f"thread_cp{cp_num}" in phase_switch_threads:
-        return phase_switch_threads[f"thread_cp{cp_num}"].is_alive()
-    else:
-        return False
+    is_thread_alive(f"phase switch cp{cp_num}")
diff --git a/packages/control/process.py b/packages/control/process.py
index e89076e16c..d83b73872f 100644
--- a/packages/control/process.py
+++ b/packages/control/process.py
@@ -9,6 +9,7 @@
 from control import data
 from control.chargepoint.chargepoint_state import ChargepointState
 from helpermodules.pub import Pub
+from helpermodules.utils._thread_handler import joined_thread_handler
 
 log = logging.getLogger(__name__)
 
@@ -57,18 +58,7 @@ def process_algorithm_results(self) -> None:
                     log.exception("Fehler im Process-Modul für Ladepunkt "+str(cp))
 
             if modules_threads:
-                for thread in modules_threads:
-                    thread.start()
-
-                # Wait for all to complete
-                for thread in modules_threads:
-                    thread.join(timeout=3)
-
-                for thread in modules_threads:
-                    if thread.is_alive():
-                        log.error(
-                            thread.name +
-                            " konnte nicht innerhalb des Timeouts die Werte senden.")
+                joined_thread_handler(modules_threads, 3)
         except Exception:
             log.exception("Fehler im Process-Modul")
 
diff --git a/packages/helpermodules/data_migration/data_migration.py b/packages/helpermodules/data_migration/data_migration.py
index e42418d486..d24648e4f8 100644
--- a/packages/helpermodules/data_migration/data_migration.py
+++ b/packages/helpermodules/data_migration/data_migration.py
@@ -26,7 +26,7 @@
 from helpermodules.measurement_logging.process_log import get_totals, string_to_float, string_to_int
 from helpermodules.measurement_logging.write_log import LegacySmartHomeLogData, get_names
 from helpermodules.timecheck import convert_timedelta_to_time_string, get_difference
-from helpermodules.utils import thread_handler
+from helpermodules.utils import joined_thread_handler
 from helpermodules.pub import Pub
 from helpermodules.utils.json_file_handler import write_and_check
 from modules.ripple_control_receivers.gpio.config import GpioRcr
@@ -88,9 +88,9 @@ def migrate(self):
             log.info("Version wird geprüft...")
             self._check_version()
             log.info("Logdateien werden importiert...")
-            thread_handler(self.convert_csv_to_json_chargelog(), None)
-            thread_handler(self.convert_csv_to_json_measurement_log("daily"), None)
-            thread_handler(self.convert_csv_to_json_measurement_log("monthly"), None)
+            joined_thread_handler(self.convert_csv_to_json_chargelog(), None)
+            joined_thread_handler(self.convert_csv_to_json_measurement_log("daily"), None)
+            joined_thread_handler(self.convert_csv_to_json_measurement_log("monthly"), None)
             log.info("Seriennummer wird übernommen...")
             self._migrate_settings_from_openwb_conf()
         except Exception as e:
diff --git a/packages/helpermodules/system.py b/packages/helpermodules/system.py
index c49889e550..eb6fe059f0 100644
--- a/packages/helpermodules/system.py
+++ b/packages/helpermodules/system.py
@@ -11,6 +11,7 @@
 
 from helpermodules import pub
 from control import data
+from helpermodules.utils import thread_handler
 from helpermodules.utils.run_command import run_command
 from modules.common.configurable_backup_cloud import ConfigurableBackupCloud
 
@@ -84,12 +85,7 @@ def create():
                 self.create_backup_and_send_to_cloud()
             except Exception as e:
                 log.exception(f"Error in cloud backup: {e}")
-
-        for thread in threading.enumerate():
-            if thread.name == "cloud backup":
-                log.debug("Don't start multiple instances of cloud backup thread.")
-                return
-        threading.Thread(target=create, args=(), name="cloud backup").start()
+        thread_handler(threading.Thread(target=create, args=(), name="cloud backup"))
 
     def create_backup_and_send_to_cloud(self):
         if self.backup_cloud is not None:
diff --git a/packages/helpermodules/utils/__init__.py b/packages/helpermodules/utils/__init__.py
index 628e8d11f1..c87b48fb9a 100644
--- a/packages/helpermodules/utils/__init__.py
+++ b/packages/helpermodules/utils/__init__.py
@@ -1,2 +1,2 @@
 from helpermodules.utils._exit_after import exit_after
-from helpermodules.utils._thread_handler import thread_handler
+from helpermodules.utils._thread_handler import joined_thread_handler, thread_handler
diff --git a/packages/helpermodules/utils/_thread_handler.py b/packages/helpermodules/utils/_thread_handler.py
index 083a8bbf77..9536731959 100644
--- a/packages/helpermodules/utils/_thread_handler.py
+++ b/packages/helpermodules/utils/_thread_handler.py
@@ -5,14 +5,21 @@
 log = logging.getLogger(__name__)
 
 
-def thread_handler(threads: List[threading.Thread], timeout: Optional[int]) -> List[str]:
+def joined_thread_handler(threads: List[threading.Thread], timeout: Optional[int]) -> List[str]:
     def split_chunks(to_split, n):
         for i in range(0, len(to_split), n):
             yield to_split[i:i + n]
 
     not_finished_threads = []
     threads_splitted = list(split_chunks(threads, 50))
+
     for threads_chunk in threads_splitted:
+        for thread in threads_chunk:
+            if is_thread_alive(thread.name):
+                log.error(f"{thread.name} ist bereits aktiv und wird nicht erneut gestartet.")
+                not_finished_threads.append(thread.name)
+                threads_chunk.remove(thread)
+                break
         # Start them all
         for thread in threads_chunk:
             thread.start()
@@ -23,7 +30,19 @@ def split_chunks(to_split, n):
 
         for thread in threads_chunk:
             if thread.is_alive():
-                log.error(f"{thread.name} konnte nicht innerhalb des Timeouts die Werte abfragen, die abgefragten "
-                          "Werte werden nicht in der Regelung verwendet.")
+                log.error(f"{thread.name} konnte nicht innerhalb des Timeouts abgearbeitet werden.")
                 not_finished_threads.append(thread.name)
     return not_finished_threads
+
+
+def thread_handler(thread: threading.Thread) -> bool:
+    if is_thread_alive(thread.name):
+        log.error(f"Thread {thread.name} ist bereits aktiv und wird nicht erneut gestartet.")
+        return False
+    else:
+        thread.start()
+        return True
+
+
+def is_thread_alive(thread_name: str) -> bool:
+    return any(running_thread.name == thread_name for running_thread in threading.enumerate())
diff --git a/packages/main.py b/packages/main.py
index d32b8716d4..3e2ba93154 100755
--- a/packages/main.py
+++ b/packages/main.py
@@ -4,6 +4,7 @@
 # flake8: noqa: F402
 import logging
 from helpermodules import logger
+from helpermodules.utils import thread_handler
 # als erstes logging initalisieren, damit auch ImportError geloggt werden
 logger.setup_logging()
 log = logging.getLogger()
@@ -108,14 +109,14 @@ def handler5Min(self):
             if not sub.heartbeat:
                 log.error("Heartbeat für Subdata nicht zurückgesetzt.")
                 sub.disconnect()
-                Thread(target=sub.sub_topics, args=(), name="Subdata").start()
+                thread_handler(Thread(target=sub.sub_topics, args=(), name="Subdata"))
             else:
                 sub.heartbeat = False
 
             if not set.heartbeat:
                 log.error("Heartbeat für Setdata nicht zurückgesetzt.")
                 set.disconnect()
-                Thread(target=set.set_data, args=(), name="Setdata").start()
+                thread_handler(Thread(target=set.set_data, args=(), name="Setdata"))
             else:
                 set.heartbeat = False
 
diff --git a/packages/modules/loadvars.py b/packages/modules/loadvars.py
index c35ce53b93..4036c4e934 100644
--- a/packages/modules/loadvars.py
+++ b/packages/modules/loadvars.py
@@ -8,7 +8,7 @@
 from modules.common.component_type import ComponentType, type_to_topic_mapping
 from modules.common.store import update_values
 from modules.common.utils.component_parser import get_component_obj_by_id
-from helpermodules.utils import thread_handler
+from helpermodules.utils import joined_thread_handler
 
 log = logging.getLogger(__name__)
 
@@ -28,8 +28,8 @@ def get_values(self) -> None:
                 wait_for_module_update_completed(self.event_module_update_completed, topic)
                 data.data.copy_module_data()
             wait_for_module_update_completed(self.event_module_update_completed, topic)
-            thread_handler(self._get_general(), data.data.general_data.data.control_interval/3)
-            thread_handler(self._set_general(), data.data.general_data.data.control_interval/3)
+            joined_thread_handler(self._get_general(), data.data.general_data.data.control_interval/3)
+            joined_thread_handler(self._set_general(), data.data.general_data.data.control_interval/3)
             wait_for_module_update_completed(self.event_module_update_completed, topic)
         except Exception:
             log.exception("Fehler im loadvars-Modul")
@@ -50,7 +50,7 @@ def _set_values(self) -> List[str]:
                                        args=(), name=f"set values cp{cp.chargepoint_module.config.id}"))
             except Exception:
                 log.exception(f"Fehler im loadvars-Modul bei Element {cp.num}")
-        return thread_handler(modules_threads, data.data.general_data.data.control_interval/3)
+        return joined_thread_handler(modules_threads, data.data.general_data.data.control_interval/3)
 
     def _update_values_of_level(self, elements, not_finished_threads: List[str]) -> None:
         """Threads, um von der niedrigsten Ebene der Hierarchie Werte ggf. miteinander zu verrechnen und zu
@@ -73,7 +73,7 @@ def _update_values_of_level(self, elements, not_finished_threads: List[str]) ->
                         component,), name=f"component{component.component_config.id}"))
             except Exception:
                 log.exception(f"Fehler im loadvars-Modul bei Element {element}")
-        thread_handler(modules_threads, data.data.general_data.data.control_interval/3)
+        joined_thread_handler(modules_threads, data.data.general_data.data.control_interval/3)
 
     def thread_without_set_value(self,
                                  modules_threads: List[threading.Thread],
diff --git a/packages/modules/update_soc.py b/packages/modules/update_soc.py
index 4f041b153f..68dda5ce6b 100644
--- a/packages/modules/update_soc.py
+++ b/packages/modules/update_soc.py
@@ -10,7 +10,7 @@
 from helpermodules import timecheck
 from helpermodules.constants import NO_ERROR
 from helpermodules.pub import Pub
-from helpermodules.utils import thread_handler
+from helpermodules.utils import joined_thread_handler
 from modules.common.abstract_vehicle import VehicleUpdateData
 from modules.utils import wait_for_module_update_completed
 
@@ -32,10 +32,10 @@ def update(self) -> None:
             topic = "openWB/set/vehicle/set/vehicle_update_completed"
             try:
                 threads_update, threads_store = self._get_threads()
-                thread_handler(threads_update, 300)
+                joined_thread_handler(threads_update, 300)
                 wait_for_module_update_completed(self.event_vehicle_update_completed, topic)
                 # threads_store = self._filter_failed_store_threads(threads_store)
-                thread_handler(threads_store, data.data.general_data.data.control_interval/3)
+                joined_thread_handler(threads_store, data.data.general_data.data.control_interval/3)
                 wait_for_module_update_completed(self.event_vehicle_update_completed, topic)
             except Exception:
                 log.exception("Fehler im update_soc-Modul")
diff --git a/packages/smarthome/smarthome.py b/packages/smarthome/smarthome.py
index 80e65414a0..c07254231b 100644
--- a/packages/smarthome/smarthome.py
+++ b/packages/smarthome/smarthome.py
@@ -1,5 +1,5 @@
 #!/usr/bin/python3
-import threading
+from helpermodules.utils import thread_handler
 from smarthome.smartcommon import mainloop, initparam
 import logging
 from threading import Thread
@@ -51,8 +51,4 @@ def handler() -> None:
             log.exception("Fehler im Smarthome-Handler")
     # run as thread for logging reasons
     initparam(mqttcg, mqttcs, mqttsdevstat, mqttsglobstat, mqtttopicdisengageable, ramdiskwrite, mqttport)
-    for thread in threading.enumerate():
-        if thread.name == "smarthome":
-            log.debug("Don't start multiple instances of smarthome thread.")
-            return
-    Thread(target=handler, args=(), name="smarthome").start()
+    thread_handler(Thread(target=handler, args=(), name="smarthome"))

From 2b10bc2122434ee7e04be1a584d81c9bcac96029 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 3 Sep 2024 12:02:03 +0200
Subject: [PATCH 015/205] dc charging (#1660)

* DC charging

* fix test

* fix max current

* fix rebase

* DC charging

* draft

* draft

* fixes

* naming

* update config

* fix test

* fix test

* undo

* fix update config

* fix

* remove old code
---
 packages/conftest.py                          |   8 +-
 .../control/algorithm/additional_current.py   |  11 +-
 packages/control/algorithm/common.py          |  48 ++++---
 packages/control/algorithm/common_test.py     |  32 ++---
 .../algorithm/integration_test/conftest.py    |   3 +-
 .../integration_test/instant_charging_test.py |   4 +
 .../integration_test/pv_charging_test.py      |   4 +
 packages/control/algorithm/min_current.py     |  26 ++--
 .../control/algorithm/surplus_controlled.py   |   4 +-
 packages/control/chargepoint/chargepoint.py   |  42 ++++--
 .../control/chargepoint/chargepoint_data.py   |   3 +
 .../chargepoint/chargepoint_template.py       |   3 +
 packages/control/chargepoint/charging_type.py |   6 +
 .../control/chargepoint/control_parameter.py  |   3 +
 packages/control/counter.py                   |   2 +-
 packages/control/counter_all.py               |   4 +-
 packages/control/ev.py                        | 132 ++++++++++++------
 packages/control/ev_charge_template_test.py   |  14 +-
 packages/control/optional.py                  |   4 +
 packages/helpermodules/abstract_plans.py      |   2 +
 .../changed_values_handler_test.py            |  19 ++-
 .../helpermodules/hardware_configuration.py   |  19 ++-
 packages/helpermodules/setdata.py             |  31 +++-
 packages/helpermodules/subdata.py             |  19 ++-
 packages/helpermodules/update_config.py       |  31 +++-
 .../chargepoints/external_openwb/config.py    |   9 +-
 .../chargepoints/internal_openwb/config.py    |   9 +-
 packages/modules/chargepoints/mqtt/config.py  |  10 +-
 .../openwb_dc_adapter/__init__.py             |   0
 .../openwb_dc_adapter/chargepoint_module.py   | 125 +++++++++++++++++
 .../chargepoints/openwb_dc_adapter/config.py  |  20 +++
 .../modules/chargepoints/openwb_pro/config.py |   9 +-
 .../openwb_series2_satellit/config.py         |   9 +-
 .../modules/chargepoints/smartwb/config.py    |   9 +-
 .../modules/common/abstract_chargepoint.py    |  30 ++++
 packages/modules/common/component_state.py    |   6 +
 packages/modules/common/simcount/__init__.py  |   2 +-
 .../modules/common/simcount/_simcounter.py    |  10 ++
 packages/modules/common/store/_chargepoint.py |   5 +
 packages/modules/configuration.py             |   9 +-
 .../update_values_test.py                     |   2 +-
 packages/modules/update_soc.py                |   4 +
 .../web_themes/standard_legacy/web/index.html |  69 +++++++++
 .../standard_legacy/web/processAllMqttMsg.js  |  27 ++++
 .../standard_legacy/web/setupMqttServices.js  |   1 +
 45 files changed, 656 insertions(+), 183 deletions(-)
 create mode 100644 packages/control/chargepoint/charging_type.py
 create mode 100644 packages/modules/chargepoints/openwb_dc_adapter/__init__.py
 create mode 100644 packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
 create mode 100644 packages/modules/chargepoints/openwb_dc_adapter/config.py

diff --git a/packages/conftest.py b/packages/conftest.py
index 11bb3faba2..f757e29da9 100644
--- a/packages/conftest.py
+++ b/packages/conftest.py
@@ -14,7 +14,13 @@
 from control.counter_all import CounterAll
 from control.pv import Pv, PvData
 from control.pv import Get as PvGet
-from helpermodules import pub, timecheck
+from helpermodules import hardware_configuration, pub, timecheck
+
+
+@pytest.fixture(autouse=True)
+def mock_open_file(monkeypatch) -> None:
+    mock_config = Mock(return_value={"dc_charging": False, "openwb-version": 1, "max_c_socket": 32})
+    monkeypatch.setattr(hardware_configuration, "_read_configuration", mock_config)
 
 
 @pytest.fixture(autouse=True)
diff --git a/packages/control/algorithm/additional_current.py b/packages/control/algorithm/additional_current.py
index 4b5e6ddc1e..a57daa48a0 100644
--- a/packages/control/algorithm/additional_current.py
+++ b/packages/control/algorithm/additional_current.py
@@ -29,13 +29,15 @@ def set_additional_current(self) -> None:
                     cp = preferenced_chargepoints[0]
                     missing_currents, counts = common.get_missing_currents_left(preferenced_chargepoints)
                     available_currents, limit = Loadmanagement().get_available_currents(missing_currents, counter)
+                    log.debug(f"cp {cp.num} available currents {available_currents} missing currents "
+                              f"{missing_currents} limit {limit}")
                     cp.data.control_parameter.limit = limit
                     available_for_cp = common.available_current_for_cp(cp, counts, available_currents, missing_currents)
                     current = common.get_current_to_set(
                         cp.data.set.current, available_for_cp, cp.data.set.target_current)
                     self._set_loadmangement_message(current, limit, cp, counter)
                     common.set_current_counterdiff(
-                        current - cp.data.set.charging_ev_data.ev_template.data.min_current,
+                        cp.data.control_parameter.min_current,
                         current,
                         cp)
                     preferenced_chargepoints.pop(0)
@@ -50,9 +52,12 @@ def _set_loadmangement_message(self,
                                    chargepoint: Chargepoint,
                                    counter: Counter) -> None:
         # Strom muss an diesem Zähler geändert werden
+        log.debug(
+            f"current {current} target {chargepoint.data.set.target_current} set current {chargepoint.data.set.current}"
+            f" required currents {chargepoint.data.control_parameter.required_currents}")
         if (current != max(chargepoint.data.set.target_current, chargepoint.data.set.current or 0) and
                 # Strom erreicht nicht die vorgegebene Stromstärke
-                current != max(
-                    chargepoint.data.control_parameter.required_currents)):
+                round(current, 2) != round(max(
+                    chargepoint.data.control_parameter.required_currents), 2)):
             chargepoint.set_state_and_log(f"Es kann nicht mit der vorgegebenen Stromstärke geladen werden"
                                           f"{limit.value.format(get_component_name_by_id(counter.num))}")
diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py
index 9df5b2b9c6..72556dcc73 100644
--- a/packages/control/algorithm/common.py
+++ b/packages/control/algorithm/common.py
@@ -6,6 +6,7 @@
 from control.chargemode import Chargemode
 from control.chargepoint.chargepoint import Chargepoint
 from control.counter import Counter
+from helpermodules.timecheck import check_timestamp
 from modules.common.component_type import ComponentType
 
 log = logging.getLogger(__name__)
@@ -29,6 +30,8 @@
                (None, Chargemode.STOP, True),
                (None, Chargemode.STOP, False))
 
+LESS_CHARGING_TIMEOUT = 60
+
 # tested
 
 
@@ -62,12 +65,11 @@ def mode_and_counter_generator(chargemodes: List) -> Iterable[Tuple[Tuple[Option
 def get_min_current(chargepoint: Chargepoint) -> Tuple[List[float], List[int]]:
     min_currents = [0.0]*3
     counts = [0]*3
-    charging_ev_data = chargepoint.data.set.charging_ev_data
     required_currents = chargepoint.data.control_parameter.required_currents
     for i in range(3):
         if required_currents[i] != 0:
             counts[i] += 1
-            min_currents[i] = charging_ev_data.ev_template.data.min_current
+            min_currents[i] = chargepoint.data.control_parameter.min_current
         else:
             min_currents[i] = 0
     return min_currents, counts
@@ -75,8 +77,15 @@ def get_min_current(chargepoint: Chargepoint) -> Tuple[List[float], List[int]]:
 # tested
 
 
-def set_current_counterdiff(diff: float, current: float, chargepoint: Chargepoint, surplus: bool = False) -> None:
+def set_current_counterdiff(diff_curent: float,
+                            current: float,
+                            chargepoint: Chargepoint,
+                            surplus: bool = False) -> None:
     required_currents = chargepoint.data.control_parameter.required_currents
+    considered_current = consider_less_charging_chargepoint_in_loadmanagement(
+        chargepoint, current)
+    # gar nicht ladende Autos?
+    diff = max(considered_current - diff_curent, 0)
     diffs = [diff if required_currents[i] != 0 else 0 for i in range(3)]
     if max(diffs) > 0:
         counters = data.data.counter_all_data.get_counters_to_check(chargepoint.num)
@@ -129,21 +138,20 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint],
     """alle CP, die schon einen Sollstrom haben, wieder rausrechnen, da dieser neu gesetzt wird
         und die neue Differenz bei den Zählern eingetragen wird."""
     for chargepoint in preferenced_chargepoints:
-        if consider_not_charging_chargepoint_in_loadmanagement(chargepoint):
-            continue
-        charging_ev_data = chargepoint.data.set.charging_ev_data
         required_currents = chargepoint.data.control_parameter.required_currents
         max_target_set_current = max(chargepoint.data.set.target_current, chargepoint.data.set.current or 0)
+        max_target_set_current = consider_less_charging_chargepoint_in_loadmanagement(
+            chargepoint, max_target_set_current)
 
         if diff_to_zero is False:
-            if charging_ev_data.ev_template.data.min_current < max_target_set_current:
-                diffs = [charging_ev_data.ev_template.data.min_current -
+            if chargepoint.data.control_parameter.min_current < max_target_set_current:
+                diffs = [chargepoint.data.control_parameter.min_current -
                          max_target_set_current if required_currents[i] != 0 else 0 for i in range(3)]
             else:
                 continue
         else:
-            if charging_ev_data.ev_template.data.min_current <= max_target_set_current:
-                diffs = [-charging_ev_data.ev_template.data.min_current if required_currents[i]
+            if chargepoint.data.control_parameter.min_current <= max_target_set_current:
+                diffs = [-chargepoint.data.control_parameter.min_current if required_currents[i]
                          != 0 else 0 for i in range(3)]
             else:
                 continue
@@ -155,10 +163,17 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint],
                 data.data.counter_data[counter].update_values_left(diffs)
 
 
-def consider_not_charging_chargepoint_in_loadmanagement(cp: Chargepoint) -> bool:
-    # tested
-    return data.data.counter_all_data.data.config.reserve_for_not_charging is False and max(cp.data.get.currents) == 0
-
+def consider_less_charging_chargepoint_in_loadmanagement(cp: Chargepoint, set_current: float) -> bool:
+    if (data.data.counter_all_data.data.config.consider_less_charging and
+        ((set_current -
+          cp.data.set.charging_ev_data.ev_template.data.nominal_difference) > max(cp.data.get.currents) and
+         cp.data.control_parameter.timestamp_charge_start is not None and
+         check_timestamp(cp.data.control_parameter.timestamp_charge_start, LESS_CHARGING_TIMEOUT) is False)):
+        log.debug(
+            f"LP {cp.num} lädt deutlich unter dem Sollstrom und wird nur mit {cp.data.get.currents}A berücksichtigt.")
+        return max(cp.data.get.currents)
+    else:
+        return set_current
 # tested
 
 
@@ -166,15 +181,14 @@ def get_missing_currents_left(preferenced_chargepoints: List[Chargepoint]) -> Tu
     missing_currents = [0.0]*3
     counts = [0]*3
     for chargepoint in preferenced_chargepoints:
-        charging_ev_data = chargepoint.data.set.charging_ev_data
         required_currents = chargepoint.data.control_parameter.required_currents
         for i in range(0, 3):
             if required_currents[i] != 0:
                 counts[i] += 1
                 try:
-                    missing_currents[i] += required_currents[i] - charging_ev_data.ev_template.data.min_current
+                    missing_currents[i] += required_currents[i] - chargepoint.data.control_parameter.min_current
                 except KeyError:
-                    missing_currents[i] += max(required_currents) - charging_ev_data.ev_template.data.min_current
+                    missing_currents[i] += max(required_currents) - chargepoint.data.control_parameter.min_current
             else:
                 missing_currents[i] += 0
     return missing_currents, counts
diff --git a/packages/control/algorithm/common_test.py b/packages/control/algorithm/common_test.py
index 6028332a8e..21c23c8b88 100644
--- a/packages/control/algorithm/common_test.py
+++ b/packages/control/algorithm/common_test.py
@@ -34,10 +34,9 @@ def test_reset_current(set_current: int, expected_current: int):
 @pytest.mark.parametrize(
     "diff, required_currents, expected_set_current, expected_diffs",
     [
-        pytest.param(2, [10, 0, 0], 8, [2, 0, 0], id="set diff one phase"),
-        pytest.param(2, [12]*3, 8, [2]*3, id="set diff three phases"),
-        pytest.param(8, [8]*3, 8, [8]*3, id="set min current three phases"),
-        pytest.param(0, [8]*3, 8, [0]*3, id="min current is already set, three phases"),
+        pytest.param(10, [10, 0, 0], 10, [2, 0, 0], id="set diff one phase"),
+        pytest.param(10, [12]*3, 10, [2]*3, id="set diff three phases"),
+        pytest.param(8, [8]*3, 8, [0]*3, id="min current is already set, three phases"),
     ])
 def test_set_current_counterdiff(diff: float,
                                  required_currents: List[float],
@@ -55,11 +54,11 @@ def test_set_current_counterdiff(diff: float,
     data.data.counter_data = {"cp0": Mock(spec=Counter), "cp6": Mock(spec=Counter)}
 
     # evaluation
-    common.set_current_counterdiff(diff, 8, cp)
+    common.set_current_counterdiff(8, diff, cp)
 
     # assertion
     assert cp.data.set.current == expected_set_current
-    if diff != 0:
+    if max(expected_diffs) != 0:
         assert data.data._counter_data['cp0'].update_values_left.call_args_list[0][0][0] == expected_diffs
         assert data.data._counter_data['cp6'].update_values_left.call_args_list[0][0][0] == expected_diffs
 
@@ -152,23 +151,24 @@ def setup_cp(num: int, required_currents) -> Chargepoint:
 
 
 @pytest.mark.parametrize(
-    "reserve_for_not_charging, get_currents, expected_considered",
+    "consider_less_charging, get_currents, expected_considered",
     [
-        pytest.param(True, [0]*3, False, id="reserve_for_not_charging active"),
-        pytest.param(True, [6]*3, False, id="reserve_for_not_charging active"),
-        pytest.param(False, [0]*3, True, id="not charging"),
-        pytest.param(False, [6]*3, False, id="charging"),
+        pytest.param(True, [6]*3, 6, id="consider_less_charging active, charging less"),
+        pytest.param(True, [10]*3, 10, id="consider_less_charging active, charging with set current"),
+        pytest.param(False, [0]*3, 10, id="consider_less_charging inactive"),
     ])
-def test_consider_not_charging_chargepoint_in_loadmanagement(reserve_for_not_charging: bool,
-                                                             get_currents: List[float],
-                                                             expected_considered: bool):
+def test_consider_less_charging_chargepoint_in_loadmanagement(consider_less_charging: bool,
+                                                              get_currents: List[float],
+                                                              expected_considered: bool):
     # setup
     cp = Chargepoint(4, None)
     cp.data.get.currents = get_currents
-    data.data.counter_all_data.data.config.reserve_for_not_charging = reserve_for_not_charging
+    cp.data.set.current = 10
+    cp.data.control_parameter.timestamp_charge_start = 1652683152
+    data.data.counter_all_data.data.config.consider_less_charging = consider_less_charging
 
     # evaluation
-    considered = common.consider_not_charging_chargepoint_in_loadmanagement(cp)
+    considered = common.consider_less_charging_chargepoint_in_loadmanagement(cp, 10)
 
     # assertion
     assert considered == expected_considered
diff --git a/packages/control/algorithm/integration_test/conftest.py b/packages/control/algorithm/integration_test/conftest.py
index ac2f44d16f..9126cbcf59 100644
--- a/packages/control/algorithm/integration_test/conftest.py
+++ b/packages/control/algorithm/integration_test/conftest.py
@@ -31,6 +31,7 @@ def data_() -> None:
         data.data.cp_data[f"cp{i}"].data.set.plug_time = f"12/01/2022, 15:0{i}:11"
         data.data.cp_data[f"cp{i}"].data.set.charging_ev_data.ev_template.data.nominal_difference = 2
     data.data.cp_data["cp3"].data.set.charging_ev_data.ev_template.data.min_current = 10
+    data.data.cp_data["cp3"].data.control_parameter.min_current = 10
     data.data.bat_data.update({"bat2": Bat(2), "all": BatAll()})
     data.data.pv_data.update({"pv1": Pv(1)})
     data.data.counter_data.update({
@@ -46,7 +47,7 @@ def data_() -> None:
     data.data.counter_data["counter6"].data.config.max_total_power = 11000
     data.data.counter_all_data = CounterAll()
     data.data.counter_all_data.data.get.hierarchy = NESTED_HIERARCHY
-    data.data.counter_all_data.data.config.reserve_for_not_charging = True
+    data.data.counter_all_data.data.config.consider_less_charging = True
 
 
 @dataclass
diff --git a/packages/control/algorithm/integration_test/instant_charging_test.py b/packages/control/algorithm/integration_test/instant_charging_test.py
index c4bb4dfddc..f0582261d5 100644
--- a/packages/control/algorithm/integration_test/instant_charging_test.py
+++ b/packages/control/algorithm/integration_test/instant_charging_test.py
@@ -16,6 +16,8 @@
 def all_cp_instant_charging_1p():
     for i in range(3, 6):
         control_parameter = data.data.cp_data[f"cp{i}"].data.control_parameter
+        control_parameter.min_current = data.data.cp_data[
+            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [0]*3
         control_parameter.required_currents[i-3] = 16
         control_parameter.required_current = 16
@@ -34,6 +36,8 @@ def all_cp_charging_1p():
 def all_cp_instant_charging_3p():
     for i in range(3, 6):
         control_parameter = data.data.cp_data[f"cp{i}"].data.control_parameter
+        control_parameter.min_current = data.data.cp_data[
+            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [16]*3
         control_parameter.required_current = 16
         control_parameter.chargemode = Chargemode.INSTANT_CHARGING
diff --git a/packages/control/algorithm/integration_test/pv_charging_test.py b/packages/control/algorithm/integration_test/pv_charging_test.py
index eb866ce506..0b9eefb4f1 100644
--- a/packages/control/algorithm/integration_test/pv_charging_test.py
+++ b/packages/control/algorithm/integration_test/pv_charging_test.py
@@ -22,6 +22,8 @@ def all_cp_pv_charging_3p():
             f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [
             data.data.cp_data[f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current]*3
+        control_parameter.min_current = data.data.cp_data[
+            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.chargemode = Chargemode.PV_CHARGING
         control_parameter.submode = Chargemode.PV_CHARGING
         control_parameter.phases = 3
@@ -52,6 +54,8 @@ def all_cp_pv_charging_1p():
     for i in range(3, 6):
         control_parameter = data.data.cp_data[f"cp{i}"].data.control_parameter
         charging_ev_data = data.data.cp_data[f"cp{i}"].data.set.charging_ev_data
+        control_parameter.min_current = data.data.cp_data[
+            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_current = data.data.cp_data[
             f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [0]*3
diff --git a/packages/control/algorithm/min_current.py b/packages/control/algorithm/min_current.py
index ac5af0f213..2d1cd918b2 100644
--- a/packages/control/algorithm/min_current.py
+++ b/packages/control/algorithm/min_current.py
@@ -29,24 +29,16 @@ def set_min_current(self) -> None:
                             cp, counts, available_currents, missing_currents)
                         current = common.get_current_to_set(
                             cp.data.set.current, available_for_cp, cp.data.set.target_current)
-                        if common.consider_not_charging_chargepoint_in_loadmanagement(cp):
-                            cp.data.set.current = cp.data.set.charging_ev_data.ev_template.data.min_current
-                            log.debug(
-                                f"LP{cp.num}: Stromstärke {cp.data.set.charging_ev_data.ev_template.data.min_current}"
-                                "A. Zuteilung ohne Berücksichtigung im Lastmanagement, da kein Ladestart zu erwarten "
-                                "ist und Reserve für nicht-ladende inaktiv.")
+                        if current < cp.data.control_parameter.min_current:
+                            common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp)
+                            if limit:
+                                cp.set_state_and_log(
+                                    f"Ladung kann nicht gestartet werden{limit.value.format(counter.num)}")
                         else:
-                            if current < cp.data.set.charging_ev_data.ev_template.data.min_current:
-                                common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp)
-                                if limit:
-                                    cp.set_state_and_log(
-                                        f"Ladung kann nicht gestartet werden{limit.value.format(counter.num)}")
-                            else:
-                                common.set_current_counterdiff(
-                                    (cp.data.set.charging_ev_data.ev_template.data.min_current
-                                     - cp.data.set.target_current),
-                                    cp.data.set.charging_ev_data.ev_template.data.min_current,
-                                    cp)
+                            common.set_current_counterdiff(
+                                cp.data.set.target_current,
+                                cp.data.control_parameter.min_current,
+                                cp)
                     else:
                         cp.data.set.current = 0
                     preferenced_chargepoints.pop(0)
diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py
index 85c8fcda98..4909177c85 100644
--- a/packages/control/algorithm/surplus_controlled.py
+++ b/packages/control/algorithm/surplus_controlled.py
@@ -57,7 +57,7 @@ def _set(self,
             limited_current = self._limit_adjust_current(cp, current)
             limited_current = self._add_unused_evse_current(limited_current, cp)
             common.set_current_counterdiff(
-                limited_current - cp.data.set.charging_ev_data.ev_template.data.min_current,
+                cp.data.control_parameter.min_current,
                 limited_current,
                 cp,
                 surplus=True)
@@ -107,7 +107,7 @@ def _limit_adjust_current(self, chargepoint: Chargepoint, new_current: float) ->
                     current = max(chargepoint.data.get.currents) + MAX_CURRENT
                     msg = "Es darf um max 5A über den aktuell genutzten Strom geregelt werden."
             chargepoint.set_state_and_log(msg)
-            return max(current, chargepoint.data.set.charging_ev_data.ev_template.data.min_current)
+            return max(current, chargepoint.data.control_parameter.min_current)
 
     def _add_unused_evse_current(self, limited_current, chargepoint: Chargepoint) -> float:
         """Wenn Autos nicht die volle Ladeleistung nutzen, wird unnötig eingespeist. Dann kann um den noch nicht
diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index 647b6d2c26..ed3f65f7a5 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -27,6 +27,7 @@
 from control.chargepoint.chargepoint_data import ChargepointData, ConnectedConfig, ConnectedInfo, ConnectedSoc, Get, Log
 from control.chargepoint.chargepoint_template import CpTemplate
 from control.chargepoint.control_parameter import ControlParameter, control_parameter_factory
+from control.chargepoint.charging_type import ChargingType
 from control.chargepoint.rfid import ChargepointRfidMixin
 from control.ev import Ev
 from control import phase_switch
@@ -276,6 +277,10 @@ def set_control_parameter(self, submode: str, required_current: float):
                     self.data.set.charging_ev_data.charge_template.data.chargemode.selected)
             self.data.control_parameter.prio = self.data.set.charging_ev_data.charge_template.data.prio
             self.data.control_parameter.required_current = required_current
+            if self.template.data.charging_type == ChargingType.AC.value:
+                self.data.control_parameter.min_current = self.data.set.charging_ev_data.ev_template.data.min_current
+            else:
+                self.data.control_parameter.min_current = self.data.set.charging_ev_data.ev_template.data.dc_min_current
         except Exception:
             log.exception("Fehler im LP-Modul "+str(self.num))
 
@@ -584,14 +589,19 @@ def set_phases(self, phases: int) -> int:
 
     def check_min_max_current(self, required_current: float, phases: int, pv: bool = False) -> float:
         required_current_prev = required_current
-        required_current, msg = self.data.set.charging_ev_data.check_min_max_current(self.data.control_parameter,
-                                                                                     required_current,
-                                                                                     phases,
-                                                                                     pv)
-        if phases == 1:
-            required_current = min(required_current, self.template.data.max_current_single_phase)
+        required_current, msg = self.data.set.charging_ev_data.check_min_max_current(
+            self.data.control_parameter,
+            required_current,
+            phases,
+            self.template.data.charging_type,
+            pv)
+        if self.template.data.charging_type == ChargingType.AC.value:
+            if phases == 1:
+                required_current = min(required_current, self.template.data.max_current_single_phase)
+            else:
+                required_current = min(required_current, self.template.data.max_current_multi_phases)
         else:
-            required_current = min(required_current, self.template.data.max_current_multi_phases)
+            required_current = min(required_current, self.template.data.dc_max_current)
         if required_current != required_current_prev and msg is None:
             msg = ("Die Einstellungen in dem Ladepunkt-Profil beschränken den Strom auf "
                    f"maximal {required_current} A.")
@@ -611,6 +621,18 @@ def set_required_currents(self, required_current: float) -> None:
                                    "was ggf eine unnötige Reduktion der Ladeleistung zur Folge hat.")
         self.data.set.required_power = sum(control_parameter.required_currents) * 230
 
+    def handle_less_power(self):
+        if self.data.set.current != 0 and self.data.control_parameter.state == ChargepointState.CHARGING_ALLOWED:
+            nominal_difference = self.data.set.charging_ev_data.ev_template.data.nominal_difference
+            if self.data.set.current - nominal_difference > max(self.data.get.currents):
+                if self.data.control_parameter.timestamp_charge_start is None:
+                    self.data.control_parameter.timestamp_charge_start = create_timestamp()
+            else:
+                self.data.control_parameter.timestamp_charge_start = None
+        else:
+            # Beim Ladestart Timer laufen lassen, manche Fahrzeuge brauchen sehr lange.
+            self.data.control_parameter.timestamp_charge_start = None
+
     def update_ev(self, ev_list: Dict[str, Ev]) -> None:
         # Für Control-Pilot-Unterbrechung set current merken.
         self.set_current_prev = self.data.set.current
@@ -639,16 +661,20 @@ def update(self, ev_list: Dict[str, Ev]) -> None:
                         self.data.control_parameter,
                         self.data.get.imported,
                         max_phase_hw,
-                        self.cp_ev_support_phase_switch())
+                        self.cp_ev_support_phase_switch(),
+                        self.template.data.charging_type)
                     phases = self.set_phases(phases)
                     self._pub_connected_vehicle(charging_ev)
+                    required_current = self.chargepoint_module.add_conversion_loss_to_current(required_current)
                     # Einhaltung des Minimal- und Maximalstroms prüfen
                     required_current = self.check_min_max_current(
                         required_current, self.data.control_parameter.phases)
+                    required_current = self.chargepoint_module.add_conversion_loss_to_current(required_current)
                     charging_ev.set_chargemode_changed(self.data.control_parameter, submode)
                     charging_ev.set_submode_changed(self.data.control_parameter, submode)
                     self.set_control_parameter(submode, required_current)
                     self.set_required_currents(required_current)
+                    self.handle_less_power()
 
                     if charging_ev.chargemode_changed:
                         data.data.counter_all_data.get_evu_counter().reset_switch_on_off(
diff --git a/packages/control/chargepoint/chargepoint_data.py b/packages/control/chargepoint/chargepoint_data.py
index ca4fdf1728..15c9876330 100644
--- a/packages/control/chargepoint/chargepoint_data.py
+++ b/packages/control/chargepoint/chargepoint_data.py
@@ -90,6 +90,9 @@ def connected_vehicle_factory() -> ConnectedVehicle:
 @dataclass
 class Get:
     charge_state: bool = False
+    charging_current: Optional[float] = 0
+    charging_power: Optional[float] = 0
+    charging_voltage: Optional[float] = 0
     connected_vehicle: ConnectedVehicle = field(default_factory=connected_vehicle_factory)
     currents: List[float] = field(default_factory=currents_list_factory)
     daily_imported: float = 0
diff --git a/packages/control/chargepoint/chargepoint_template.py b/packages/control/chargepoint/chargepoint_template.py
index c2591de2a1..dd21bd5fb1 100644
--- a/packages/control/chargepoint/chargepoint_template.py
+++ b/packages/control/chargepoint/chargepoint_template.py
@@ -5,6 +5,7 @@
 
 from control import data
 from control import ev as ev_module
+from control.chargepoint.charging_type import ChargingType
 from dataclass_utils.factories import empty_dict_factory, empty_list_factory
 from helpermodules.abstract_plans import AutolockPlan
 from helpermodules import timecheck
@@ -37,9 +38,11 @@ def autolock_factory():
 @dataclass
 class CpTemplateData:
     autolock: Autolock = field(default_factory=autolock_factory, metadata={"topic": ""})
+    charging_type: str = ChargingType.AC.value
     id: int = 0
     max_current_multi_phases: int = 32
     max_current_single_phase: int = 32
+    dc_max_current: float = 435
     name: str = "neues Ladepunkt-Profil"
     disable_after_unplug: bool = False
     valid_tags: List = field(default_factory=empty_list_factory)
diff --git a/packages/control/chargepoint/charging_type.py b/packages/control/chargepoint/charging_type.py
new file mode 100644
index 0000000000..c49b54cf40
--- /dev/null
+++ b/packages/control/chargepoint/charging_type.py
@@ -0,0 +1,6 @@
+from enum import Enum
+
+
+class ChargingType(Enum):
+    DC = "DC"
+    AC = "AC"
diff --git a/packages/control/chargepoint/control_parameter.py b/packages/control/chargepoint/control_parameter.py
index de8daa2ed4..c1abeb035d 100644
--- a/packages/control/chargepoint/control_parameter.py
+++ b/packages/control/chargepoint/control_parameter.py
@@ -18,6 +18,7 @@ class ControlParameter:
     imported_instant_charging: Optional[float] = field(
         default=None, metadata={"topic": "control_parameter/imported_instant_charging"})
     limit: Optional[LimitingValue] = field(default=None, metadata={"topic": "control_parameter/limit"})
+    min_current: int = field(default=6, metadata={"topic": "control_parameter/min_current"})
     phases: int = field(default=0, metadata={"topic": "control_parameter/phases"})
     prio: bool = field(default=False, metadata={"topic": "control_parameter/prio"})
     required_current: float = field(default=0, metadata={"topic": "control_parameter/required_current"})
@@ -27,6 +28,8 @@ class ControlParameter:
     submode: Chargemode_enum = field(default=Chargemode_enum.STOP, metadata={"topic": "control_parameter/submode"})
     timestamp_auto_phase_switch: Optional[float] = field(
         default=None, metadata={"topic": "control_parameter/timestamp_auto_phase_switch"})
+    timestamp_charge_start: Optional[float] = field(
+        default=None, metadata={"topic": "control_parameter/timestamp_charge_start"})
     timestamp_perform_phase_switch: Optional[float] = field(
         default=None, metadata={"topic": "control_parameter/timestamp_perform_phase_switch"})
     timestamp_switch_on_off: Optional[float] = field(
diff --git a/packages/control/counter.py b/packages/control/counter.py
index 580b052dff..81da8a6dc3 100644
--- a/packages/control/counter.py
+++ b/packages/control/counter.py
@@ -420,7 +420,7 @@ def switch_off_check_threshold(self, chargepoint: Chargepoint) -> bool:
                 control_parameter.state = ChargepointState.CHARGING_ALLOWED
         else:
             # Wurde die Abschaltschwelle ggf. durch die Verzögerung anderer LP erreicht?
-            min_current = (charging_ev_data.ev_template.data.min_current
+            min_current = (chargepoint.data.control_parameter.min_current
                            + charging_ev_data.ev_template.data.nominal_difference)
             switch_off_condition = (power_in_use > threshold or
                                     # Wenn der Speicher hochregeln soll, muss auch abgeschaltet werden.
diff --git a/packages/control/counter_all.py b/packages/control/counter_all.py
index b8f2272527..0f1e919ad2 100644
--- a/packages/control/counter_all.py
+++ b/packages/control/counter_all.py
@@ -22,8 +22,8 @@
 class Config:
     home_consumption_source_id: Optional[str] = field(
         default=None, metadata={"topic": "config/home_consumption_source_id"})
-    reserve_for_not_charging: bool = field(
-        default=False, metadata={"topic": "config/reserve_for_not_charging"})
+    consider_less_charging: bool = field(
+        default=False, metadata={"topic": "config/consider_less_charging"})
 
 
 def config_factory() -> Config:
diff --git a/packages/control/ev.py b/packages/control/ev.py
index 0c312c6e37..5141e5dfa5 100644
--- a/packages/control/ev.py
+++ b/packages/control/ev.py
@@ -13,6 +13,7 @@
 
 from control import data
 from control.chargepoint.chargepoint_state import ChargepointState, PHASE_SWITCH_STATES
+from control.chargepoint.charging_type import ChargingType
 from control.chargepoint.control_parameter import ControlParameter
 from control.limiting_value import LimitingValue
 from dataclass_utils.factories import empty_dict_factory, empty_list_factory
@@ -67,11 +68,14 @@ class TimeCharging:
 @dataclass
 class InstantCharging:
     current: int = 10
+    dc_current: float = 145
     limit: Limit = field(default_factory=limit_factory)
 
 
 @dataclass
 class PvCharging:
+    dc_min_current: float = 145
+    dc_min_soc_current: float = 145
     min_soc_current: int = 10
     min_current: int = 0
     feed_in_limit: bool = False
@@ -133,6 +137,8 @@ def charge_template_data_factory() -> ChargeTemplateData:
 
 @dataclass
 class EvTemplateData:
+    dc_min_current: int = 0
+    dc_max_current: int = 0
     name: str = "neues Fahrzeug-Profil"
     max_current_multi_phases: int = 16
     max_phases: int = 3
@@ -243,7 +249,8 @@ def get_required_current(self,
                              control_parameter: ControlParameter,
                              imported: float,
                              max_phases_hw: int,
-                             phase_switch_supported: bool) -> Tuple[bool, Optional[str], str, float, int]:
+                             phase_switch_supported: bool,
+                             charging_type: str) -> Tuple[bool, Optional[str], str, float, int]:
         """ ermittelt, ob und mit welchem Strom das EV geladen werden soll (unabhängig vom Lastmanagement)
 
         Parameter
@@ -277,7 +284,8 @@ def get_required_current(self,
                     control_parameter.phases,
                     used_amount,
                     max_phases_hw,
-                    phase_switch_supported)
+                    phase_switch_supported,
+                    charging_type)
                 soc_request_intervall_offset = 0
                 if plan_data:
                     name = self.charge_template.data.chargemode.scheduled_charging.plans[plan_data.num].name
@@ -300,7 +308,7 @@ def get_required_current(self,
                     self.data.get.soc,
                     used_amount,
                     control_parameter.phases,
-                    self.ev_template.data.min_current,
+                    control_parameter.min_current,
                     soc_request_intervall_offset)
 
             # Wenn Zielladen auf Überschuss wartet, prüfen, ob Zeitladen aktiv ist.
@@ -311,7 +319,8 @@ def get_required_current(self,
                 used_amount = imported - control_parameter.imported_at_plan_start
                 tmp_current, tmp_submode, tmp_message, name = self.charge_template.time_charging(
                     self.data.get.soc,
-                    used_amount
+                    used_amount,
+                    charging_type
                 )
                 # Info vom Zielladen erhalten
                 message = f"{message or ''} {tmp_message or ''}".strip()
@@ -331,10 +340,11 @@ def get_required_current(self,
                     used_amount = imported - control_parameter.imported_instant_charging
                     required_current, submode, message = self.charge_template.instant_charging(
                         self.data.get.soc,
-                        used_amount)
+                        used_amount,
+                        charging_type)
                 elif self.charge_template.data.chargemode.selected == "pv_charging":
                     required_current, submode, message = self.charge_template.pv_charging(
-                        self.data.get.soc, self.ev_template.data.min_current)
+                        self.data.get.soc, control_parameter.min_current, charging_type)
                 elif self.charge_template.data.chargemode.selected == "standby":
                     # Text von Zeit-und Zielladen nicht überschreiben.
                     if message is None:
@@ -369,7 +379,8 @@ def check_min_max_current(self,
                               control_parameter: ControlParameter,
                               required_current: float,
                               phases: int,
-                              pv: bool = False) -> Tuple[float, Optional[str]]:
+                              charging_type: str,
+                              pv: bool = False,) -> Tuple[float, Optional[str]]:
         """ prüft, ob der gesetzte Ladestrom über dem Mindest-Ladestrom und unter dem Maximal-Ladestrom des EVs liegt.
         Falls nicht, wird der Ladestrom auf den Mindest-Ladestrom bzw. den Maximal-Ladestrom des EV gesetzt.
         Wenn PV-Laden aktiv ist, darf die Stromstärke nicht unter den PV-Mindeststrom gesetzt werden.
@@ -381,7 +392,10 @@ def check_min_max_current(self,
             # EV soll/darf nicht laden
             if required_current != 0:
                 if not pv:
-                    min_current = self.ev_template.data.min_current
+                    if charging_type == ChargingType.AC.value:
+                        min_current = self.ev_template.data.min_current
+                    else:
+                        min_current = self.ev_template.data.dc_min_current
                 else:
                     min_current = control_parameter.required_current
                 if required_current < min_current:
@@ -389,10 +403,13 @@ def check_min_max_current(self,
                     msg = ("Die Einstellungen in dem Fahrzeug-Profil beschränken den Strom auf "
                            f"mindestens {required_current} A.")
                 else:
-                    if phases == 1:
-                        max_current = self.ev_template.data.max_current_single_phase
+                    if charging_type == ChargingType.AC.value:
+                        if phases == 1:
+                            max_current = self.ev_template.data.max_current_single_phase
+                        else:
+                            max_current = self.ev_template.data.max_current_multi_phases
                     else:
-                        max_current = self.ev_template.data.max_current_multi_phases
+                        max_current = self.ev_template.data.dc_max_current
                     if required_current > max_current:
                         required_current = max_current
                         msg = ("Die Einstellungen in dem Fahrzeug-Profil beschränken den Strom auf "
@@ -411,7 +428,7 @@ def _check_phase_switch_conditions(self,
                                        max_current_cp: int,
                                        limit: LimitingValue) -> Tuple[bool, Optional[str]]:
         # Manche EV laden mit 6.1A bei 6A Sollstrom
-        min_current = self.ev_template.data.min_current + self.ev_template.data.nominal_difference
+        min_current = control_parameter.min_current + self.ev_template.data.nominal_difference
         max_current = (min(self.ev_template.data.max_current_single_phase, max_current_cp)
                        - self.ev_template.data.nominal_difference)
         phases_in_use = control_parameter.phases
@@ -422,7 +439,7 @@ def _check_phase_switch_conditions(self,
         else:
             feed_in_yield = 0
         all_surplus = data.data.counter_all_data.get_evu_counter().get_usable_surplus(feed_in_yield)
-        required_surplus = self.ev_template.data.min_current * max_phases_ev * 230 - get_power
+        required_surplus = control_parameter.min_current * max_phases_ev * 230 - get_power
         condition_1_to_3 = (((max(get_currents) > max_current and
                             all_surplus > required_surplus) or limit == LimitingValue.UNBALANCED_LOAD.value) and
                             phases_in_use == 1)
@@ -462,11 +479,11 @@ def auto_phase_switch(self,
         if phases_in_use == 1:
             direction_str = f"Umschaltung von 1 auf {max_phases}"
             delay = cm_config.phase_switch_delay * 60
-            required_reserved_power = (self.ev_template.data.min_current * max_phases * 230 -
+            required_reserved_power = (control_parameter.min_current * max_phases * 230 -
                                        self.ev_template.data.max_current_single_phase * 230)
 
             new_phase = max_phases
-            new_current = self.ev_template.data.min_current
+            new_current = control_parameter.min_current
         else:
             direction_str = f"Umschaltung von {max_phases} auf 1"
             delay = (16 - cm_config.phase_switch_delay) * 60
@@ -590,7 +607,8 @@ class ChargeTemplate:
 
     def time_charging(self,
                       soc: Optional[float],
-                      used_amount_time_charging: float) -> Tuple[int, str, Optional[str], Optional[str]]:
+                      used_amount_time_charging: float,
+                      charging_type: str) -> Tuple[int, str, Optional[str], Optional[str]]:
         """ prüft, ob ein Zeitfenster aktiv ist und setzt entsprechend den Ladestrom
         """
         message = None
@@ -598,22 +616,23 @@ def time_charging(self,
             if self.data.time_charging.plans:
                 plan = timecheck.check_plans_timeframe(self.data.time_charging.plans)
                 if plan is not None:
+                    current = plan.current if charging_type == ChargingType.AC.value else plan.dc_current
                     if self.data.et.active and data.data.optional_data.et_provider_availble():
                         if not data.data.optional_data.et_price_lower_than_limit(self.data.et.max_price):
                             return 0, "stop", self.CHARGING_PRICE_EXCEEDED, plan.name
                     if plan.limit.selected == "none":  # kein Limit konfiguriert, mit konfigurierter Stromstärke laden
-                        return plan.current, "time_charging", message, plan.name
+                        return current, "time_charging", message, plan.name
                     elif plan.limit.selected == "soc":  # SoC Limit konfiguriert
                         if soc:
                             if soc < plan.limit.soc:
-                                return plan.current, "time_charging", message, plan.name  # Limit nicht erreicht
+                                return current, "time_charging", message, plan.name  # Limit nicht erreicht
                             else:
                                 return 0, "stop", self.TIME_CHARGING_SOC_REACHED, plan.name  # Limit erreicht
                         else:
                             return plan.current, "time_charging", message, plan.name
                     elif plan.limit.selected == "amount":  # Energiemengenlimit konfiguriert
                         if used_amount_time_charging < plan.limit.amount:
-                            return plan.current, "time_charging", message, plan.name  # Limit nicht erreicht
+                            return current, "time_charging", message, plan.name  # Limit nicht erreicht
                         else:
                             return 0, "stop", self.TIME_CHARGING_AMOUNT_REACHED, plan.name  # Limit erreicht
                     else:
@@ -633,28 +652,33 @@ def time_charging(self,
 
     def instant_charging(self,
                          soc: Optional[float],
-                         imported_instant_charging: float) -> Tuple[int, str, Optional[str]]:
+                         imported_instant_charging: float,
+                         charging_type: str) -> Tuple[int, str, Optional[str]]:
         """ prüft, ob die Lademengenbegrenzung erreicht wurde und setzt entsprechend den Ladestrom.
         """
         message = None
         try:
             instant_charging = self.data.chargemode.instant_charging
+            if charging_type == ChargingType.AC.value:
+                current = instant_charging.current
+            else:
+                current = instant_charging.dc_current
             if self.data.et.active and data.data.optional_data.et_provider_availble():
                 if not data.data.optional_data.et_price_lower_than_limit(self.data.et.max_price):
                     return 0, "stop", self.CHARGING_PRICE_EXCEEDED
             if instant_charging.limit.selected == "none":
-                return instant_charging.current, "instant_charging", message
+                return current, "instant_charging", message
             elif instant_charging.limit.selected == "soc":
                 if soc:
                     if soc < instant_charging.limit.soc:
-                        return instant_charging.current, "instant_charging", message
+                        return current, "instant_charging", message
                     else:
                         return 0, "stop", self.INSTANT_CHARGING_SOC_REACHED
                 else:
-                    return instant_charging.current, "instant_charging", message
+                    return current, "instant_charging", message
             elif instant_charging.limit.selected == "amount":
                 if imported_instant_charging < self.data.chargemode.instant_charging.limit.amount:
-                    return instant_charging.current, "instant_charging", message
+                    return current, "instant_charging", message
                 else:
                     return 0, "stop", self.INSTANT_CHARGING_AMOUNT_REACHED
             else:
@@ -665,7 +689,7 @@ def instant_charging(self,
 
     PV_CHARGING_SOC_REACHED = "Keine Ladung, da der maximale Soc bereits erreicht wurde."
 
-    def pv_charging(self, soc: Optional[float], min_current: int) -> Tuple[int, str, Optional[str]]:
+    def pv_charging(self, soc: Optional[float], min_current: int, charging_type: str) -> Tuple[int, str, Optional[str]]:
         """ prüft, ob Min-oder Max-Soc erreicht wurden und setzt entsprechend den Ladestrom.
         """
         message = None
@@ -674,13 +698,21 @@ def pv_charging(self, soc: Optional[float], min_current: int) -> Tuple[int, str,
             if soc is None or soc < pv_charging.max_soc:
                 if pv_charging.min_soc != 0 and soc is not None:
                     if soc < pv_charging.min_soc:
-                        return pv_charging.min_soc_current, "instant_charging", message
-                if pv_charging.min_current == 0:
+                        if charging_type == ChargingType.AC.value:
+                            current = pv_charging.min_soc_current
+                        else:
+                            current = pv_charging.dc_min_soc_current
+                        return current, "instant_charging", message
+                if charging_type == ChargingType.AC.value:
+                    pv_min_current = pv_charging.min_current
+                else:
+                    pv_min_current = pv_charging.dc_min_current
+                if pv_min_current == 0:
                     # nur PV; Ampere darf nicht 0 sein, wenn geladen werden soll
                     return min_current, "pv_charging", message
                 else:
                     # Min PV
-                    return pv_charging.min_current, "instant_charging", message
+                    return pv_min_current, "instant_charging", message
             else:
                 return 0, "stop", self.PV_CHARGING_SOC_REACHED
         except Exception:
@@ -693,28 +725,36 @@ def scheduled_charging_recent_plan(self,
                                        phases: int,
                                        used_amount: float,
                                        max_phases: int,
-                                       phase_switch_supported: bool) -> Tuple[Optional[SelectedPlan], float]:
+                                       phase_switch_supported: bool,
+                                       charging_type: str) -> Tuple[Optional[SelectedPlan], float]:
         """ prüft, ob der Ziel-SoC oder die Ziel-Energiemenge erreicht wurde und stellt den zur Erreichung nötigen
         Ladestrom ein. Um etwas mehr Puffer zu haben, wird bis 20 Min nach dem Zieltermin noch geladen, wenn dieser
         nicht eingehalten werden konnte.
         """
         if phase_switch_supported and data.data.general_data.get_phases_chargemode("scheduled_charging",
                                                                                    "instant_charging") == 0:
-            max_current = ev_template.data.max_current_multi_phases
-            plan_data = self.search_plan(max_current, soc, ev_template, max_phases, used_amount)
-            if plan_data:
+            if charging_type == ChargingType.AC.value:
+                max_current = ev_template.data.max_current_multi_phases
+            else:
+                max_current = ev_template.data.dc_max_current
+            plan_data = self.search_plan(max_current, soc, ev_template, max_phases, used_amount, charging_type)
+            if plan_data and charging_type == ChargingType.AC.value:
                 if plan_data.remaining_time > 300 and self.data.et.active is False:
                     max_current = ev_template.data.max_current_single_phase
-                    plan_data_single_phase = self.search_plan(max_current, soc, ev_template, 1, used_amount)
+                    plan_data_single_phase = self.search_plan(
+                        max_current, soc, ev_template, 1, used_amount, charging_type)
                     if plan_data_single_phase:
                         if plan_data_single_phase.remaining_time > 300:
                             plan_data = plan_data_single_phase
         else:
-            if phases == 1:
-                max_current = ev_template.data.max_current_single_phase
+            if charging_type == ChargingType.AC.value:
+                if phases == 1:
+                    max_current = ev_template.data.max_current_single_phase
+                else:
+                    max_current = ev_template.data.max_current_multi_phases
             else:
-                max_current = ev_template.data.max_current_multi_phases
-            plan_data = self.search_plan(max_current, soc, ev_template, phases, used_amount)
+                max_current = ev_template.data.dc_max_current
+            plan_data = self.search_plan(max_current, soc, ev_template, phases, used_amount, charging_type)
         return plan_data
 
     def search_plan(self,
@@ -722,7 +762,8 @@ def search_plan(self,
                     soc: Optional[float],
                     ev_template: EvTemplate,
                     phases: int,
-                    used_amount: float) -> Optional[SelectedPlan]:
+                    used_amount: float,
+                    charging_type: str) -> Optional[SelectedPlan]:
         smallest_remaining_time = float("inf")
         missed_date_today_of_plan_with_smallest_remaining_time = False
         plan_data: Optional[SelectedPlan] = None
@@ -733,7 +774,8 @@ def search_plan(self,
                     raise ValueError("Um Zielladen mit SoC-Ziel nutzen zu können, bitte ein SoC-Modul konfigurieren "
                                      f"oder im Plan {plan.name} als Begrenzung Energie einstellen.")
                 try:
-                    duration, missing_amount = self.calculate_duration(plan, soc, battery_capacity, used_amount, phases)
+                    duration, missing_amount = self.calculate_duration(
+                        plan, soc, battery_capacity, used_amount, phases, charging_type)
                     remaining_time, missed_date_today = timecheck.check_duration(plan, duration, self.BUFFER)
                     if remaining_time:
                         # Wenn der Zeitpunkt vorüber, aber noch nicht abgelaufen ist oder
@@ -748,9 +790,13 @@ def search_plan(self,
                                     (missed_date_today_of_plan_with_smallest_remaining_time and 0 < remaining_time)):
                                 smallest_remaining_time = remaining_time
                                 missed_date_today_of_plan_with_smallest_remaining_time = missed_date_today
+                                if charging_type == ChargingType.AC.value:
+                                    available_current = plan.current
+                                else:
+                                    available_current = plan.dc_current
                                 plan_data = SelectedPlan(
                                     remaining_time=remaining_time,
-                                    available_current=plan.current,
+                                    available_current=available_current,
                                     max_current=max_current,
                                     phases=phases,
                                     num=num,
@@ -767,7 +813,8 @@ def calculate_duration(self,
                            soc: Optional[float],
                            battery_capacity: float,
                            used_amount: float,
-                           phases: int) -> Tuple[float, float]:
+                           phases: int,
+                           charging_type: str) -> Tuple[float, float]:
         if plan.limit.selected == "soc":
             if soc:
                 missing_amount = ((plan.limit.soc_scheduled - soc) / 100) * battery_capacity
@@ -775,7 +822,8 @@ def calculate_duration(self,
                 raise ValueError("Um Zielladen mit SoC-Ziel nutzen zu können, bitte ein SoC-Modul konfigurieren.")
         else:
             missing_amount = plan.limit.amount - used_amount
-        duration = missing_amount/(plan.current * phases*230) * 3600
+        current = plan.current if charging_type == ChargingType.AC.value else plan.dc_current
+        duration = missing_amount/(current * phases*230) * 3600
         return duration, missing_amount
 
     SCHEDULED_REACHED_LIMIT_SOC = ("Kein Zielladen, da noch Zeit bis zum Zieltermin ist. "
diff --git a/packages/control/ev_charge_template_test.py b/packages/control/ev_charge_template_test.py
index c83775471a..cb60b28657 100644
--- a/packages/control/ev_charge_template_test.py
+++ b/packages/control/ev_charge_template_test.py
@@ -5,6 +5,7 @@
 
 from control import data
 from control import optional
+from control.chargepoint.charging_type import ChargingType
 from control.ev import ChargeTemplate, EvTemplate, EvTemplateData, SelectedPlan
 from control.general import General
 from helpermodules import timecheck
@@ -60,7 +61,7 @@ def test_time_charging(plans: Dict[int, TimeChargingPlan], soc: float, used_amou
     monkeypatch.setattr(timecheck, "check_plans_timeframe", check_plans_timeframe_mock)
 
     # execution
-    ret = ct.time_charging(soc, used_amount_time_charging)
+    ret = ct.time_charging(soc, used_amount_time_charging, ChargingType.AC.value)
 
     # evaluation
     assert ret == expected
@@ -86,7 +87,7 @@ def test_instant_charging(selected: str, current_soc: float, used_amount: float,
     ct.data.chargemode.instant_charging.limit.selected = selected
 
     # execution
-    ret = ct.instant_charging(current_soc, used_amount)
+    ret = ct.instant_charging(current_soc, used_amount, ChargingType.AC.value)
 
     # evaluation
     assert ret == expected
@@ -110,7 +111,7 @@ def test_pv_charging(min_soc: int, min_current: int, current_soc: float,
     data.data.bat_all_data.data.config.configured = True
 
     # execution
-    ret = ct.pv_charging(current_soc, 6)
+    ret = ct.pv_charging(current_soc, 6, ChargingType.AC.value)
 
     # evaluation
     assert ret == expected
@@ -151,7 +152,8 @@ def test_scheduled_charging_recent_plan(params: Params, monkeypatch):
     evt = Mock(spec=EvTemplate, data=evt_data)
 
     # execution
-    ct.scheduled_charging_recent_plan(50, evt, params.phases, 5, params.max_phases, params.phase_switch_supported)
+    ct.scheduled_charging_recent_plan(50, evt, params.phases, 5, params.max_phases,
+                                      params.phase_switch_supported, ChargingType.AC.value)
 
     # evaluation
     assert search_plan_mock.call_args.args[0] == params.expected_max_current
@@ -170,7 +172,7 @@ def test_calculate_duration(selected: str, phases: int, expected_duration: float
     plan = ScheduledChargingPlan()
     plan.limit.selected = selected
     # execution
-    duration, missing_amount = ct.calculate_duration(plan, 60, 45000, 200, phases)
+    duration, missing_amount = ct.calculate_duration(plan, 60, 45000, 200, phases, ChargingType.AC.value)
 
     # evaluation
     assert duration == expected_duration
@@ -199,7 +201,7 @@ def test_search_plan(check_duration_return1: Tuple[Optional[float], bool],
     plan_mock = Mock(spec=ScheduledChargingPlan, active=True, current=14, limit=Limit(selected="amount"))
     ct.data.chargemode.scheduled_charging.plans = {0: plan_mock, 1: plan_mock}
     # execution
-    plan_data = ct.search_plan(14, 60, EvTemplate(), 3, 200)
+    plan_data = ct.search_plan(14, 60, EvTemplate(), 3, 200, ChargingType.AC.value)
 
     # evaluation
     if expected_plan_num is None:
diff --git a/packages/control/optional.py b/packages/control/optional.py
index 6b0bd1f347..d6e4456188 100644
--- a/packages/control/optional.py
+++ b/packages/control/optional.py
@@ -7,6 +7,7 @@
 from typing import Dict, List
 
 from dataclass_utils.factories import empty_dict_factory
+from helpermodules import hardware_configuration
 from helpermodules.constants import NO_ERROR
 from helpermodules.pub import Pub
 from helpermodules.timecheck import create_unix_timestamp_current_full_hour
@@ -75,6 +76,7 @@ class OptionalData:
     int_display: InternalDisplay = field(default_factory=int_display_factory)
     led: Led = field(default_factory=led_factory)
     rfid: Rfid = field(default_factory=rfid_factory)
+    dc_charging: bool = False
 
 
 class Optional:
@@ -82,6 +84,8 @@ def __init__(self):
         try:
             self.data = OptionalData()
             self.et_module: ConfigurableElectricityTariff = None
+            self.data.dc_charging = hardware_configuration.get_hardware_configuration_setting("dc_charging")
+            Pub().pub("openWB/optional/dc_charging", self.data.dc_charging)
         except Exception:
             log.exception("Fehler im Optional-Modul")
 
diff --git a/packages/helpermodules/abstract_plans.py b/packages/helpermodules/abstract_plans.py
index 0e2967cfe8..b690c0a20f 100644
--- a/packages/helpermodules/abstract_plans.py
+++ b/packages/helpermodules/abstract_plans.py
@@ -62,6 +62,7 @@ class TimeframePlan(PlanBase):
 @dataclass
 class ScheduledChargingPlan(PlanBase):
     current: int = 14
+    dc_current: float = 145
     name: str = "neuer Zielladen-Plan"
     limit: ScheduledLimit = field(default_factory=scheduled_limit_factory)
     time: str = "07:00"  # ToDo: aktuelle Zeit verwenden
@@ -71,6 +72,7 @@ class ScheduledChargingPlan(PlanBase):
 class TimeChargingPlan(TimeframePlan):
     name: str = "neuer Zeitladen-Plan"
     current: int = 16
+    dc_current: float = 145
     limit: Limit = field(default_factory=limit_factory)
 
 
diff --git a/packages/helpermodules/changed_values_handler_test.py b/packages/helpermodules/changed_values_handler_test.py
index 2e9225f435..189912e814 100644
--- a/packages/helpermodules/changed_values_handler_test.py
+++ b/packages/helpermodules/changed_values_handler_test.py
@@ -1,16 +1,21 @@
 from dataclasses import asdict, dataclass, field
+from enum import IntEnum
 from typing import Dict, List, Optional, Tuple
 from unittest.mock import Mock
 
 import pytest
 
-from control.chargepoint.chargepoint_state import ChargepointState
 from dataclass_utils.factories import currents_list_factory
 from helpermodules.changed_values_handler import ChangedValuesHandler
 
 NONE_TYPE = type(None)
 
 
+class SampleIntEnum(IntEnum):
+    VALUE1 = 1
+    VALUE2 = 2
+
+
 @dataclass
 class SampleClass:
     parameter1: bool = False
@@ -46,7 +51,7 @@ class SampleData:
         default_factory=sample_class, metadata={"topic": "get/field_class"})
     sample_field_dict: Dict = field(default_factory=sample_dict_factory, metadata={
         "topic": "get/field_dict"})
-    sample_field_enum: ChargepointState = field(default=ChargepointState.CHARGING_ALLOWED, metadata={
+    sample_field_enum: SampleIntEnum = field(default=SampleIntEnum.VALUE1, metadata={
         "topic": "get/field_enum"})
     sample_field_float: float = field(default=0, metadata={"topic": "get/field_float"})
     sample_field_int: int = field(default=0, metadata={"topic": "get/field_int"})
@@ -77,8 +82,8 @@ class Params:
            expected_pub_call=("openWB/get/field_class", asdict(SampleClass(parameter1=True)))),
     Params(name="change dict", sample_data=SampleData(sample_field_dict={"key": "another_value"}),
            expected_pub_call=("openWB/get/field_dict", {"key": "another_value"})),
-    Params(name="change enum", sample_data=SampleData(sample_field_enum=ChargepointState.NO_CHARGING_ALLOWED),
-           expected_pub_call=("openWB/get/field_enum", ChargepointState.NO_CHARGING_ALLOWED.value)),
+    Params(name="change enum", sample_data=SampleData(sample_field_enum=SampleIntEnum.VALUE2),
+           expected_pub_call=("openWB/get/field_enum", SampleIntEnum.VALUE2.value)),
     Params(name="change float", sample_data=SampleData(sample_field_float=2.5),
            expected_pub_call=("openWB/get/field_float", 2.5)),
     Params(name="change int", sample_data=SampleData(sample_field_int=2),
@@ -98,7 +103,7 @@ class Params:
 
 
 @pytest.mark.parametrize("params", cases, ids=[c.name for c in cases])
-def test_update_value(params: Params, mock_pub: Mock):
+def test_update_value(params: Params, mock_pub: Mock, monkeypatch):
     # setup
     handler = ChangedValuesHandler(Mock())
 
@@ -106,6 +111,6 @@ def test_update_value(params: Params, mock_pub: Mock):
     handler._update_value("openWB/", SampleData(), params.sample_data)
 
     # evaluation
-    assert len(mock_pub.method_calls) == params.expected_calls
+    assert len(mock_pub.method_calls) - 1 == params.expected_calls
     if params.expected_calls > 0:
-        assert mock_pub.method_calls[0].args == params.expected_pub_call
+        assert mock_pub.method_calls[1].args == params.expected_pub_call
diff --git a/packages/helpermodules/hardware_configuration.py b/packages/helpermodules/hardware_configuration.py
index cb81289693..cb439b7206 100644
--- a/packages/helpermodules/hardware_configuration.py
+++ b/packages/helpermodules/hardware_configuration.py
@@ -7,23 +7,28 @@
 HARDWARE_CONFIGURATION_FILE = "/home/openwb/configuration.json"
 
 
-def update_hardware_configuration(new_setting: Dict) -> None:
+def _read_configuration() -> Dict:
     with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
-        data = json.loads(f.read())
+        return json.loads(f.read())
+
+
+def update_hardware_configuration(new_setting: Dict) -> None:
+    data = _read_configuration()
     write_and_check(HARDWARE_CONFIGURATION_FILE, data.update(new_setting))
 
 
 def remove_setting_hardware_configuration(obsolet_setting: str) -> None:
-    with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
-        data = json.loads(f.read())
+    data = _read_configuration()
     if obsolet_setting in data:
         write_and_check(HARDWARE_CONFIGURATION_FILE, data.pop(obsolet_setting))
 
 
 def get_hardware_configuration_setting(name: str, default=None):
-    with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
-        configuration = json.loads(f.read())
-    return configuration.get(name, default)
+    return _read_configuration().get(name, default)
+
+
+def exists_hardware_configuration_setting(name: str) -> bool:
+    return name in _read_configuration()
 
 
 def get_serial_number() -> str:
diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py
index 1af3fe797b..27431294df 100644
--- a/packages/helpermodules/setdata.py
+++ b/packages/helpermodules/setdata.py
@@ -10,7 +10,7 @@
 import paho.mqtt.client as mqtt
 
 import logging
-from helpermodules import subdata
+from helpermodules import hardware_configuration, subdata
 from helpermodules.broker import InternalBrokerClient
 from helpermodules.pub import Pub, pub_single
 from helpermodules.utils.topic_parser import (decode_payload, get_index, get_index_position, get_second_index,
@@ -452,6 +452,8 @@ def _subprocess_vehicle_chargemode_topic(self, msg: mqtt.MQTTMessage):
                     self._validate_value(msg, str, pub_json=True)
                 elif "/chargemode/instant_charging/current" in msg.topic:
                     self._validate_value(msg, int, [(6, 32)], pub_json=True)
+                elif "/chargemode/instant_charging/dc_current" in msg.topic:
+                    self._validate_value(msg, float, [(4, 300)], pub_json=True)
                 elif "/chargemode/instant_charging/limit/selected" in msg.topic:
                     self._validate_value(msg, str, pub_json=True)
                 elif "/chargemode/instant_charging/limit/soc" in msg.topic:
@@ -463,10 +465,14 @@ def _subprocess_vehicle_chargemode_topic(self, msg: mqtt.MQTTMessage):
                 elif "/chargemode/pv_charging/min_current" in msg.topic:
                     self._validate_value(
                         msg, int, [(0, 0), (6, 16)], pub_json=True)
+                elif "/chargemode/pv_charging/dc_min_current" in msg.topic:
+                    self._validate_value(msg, float, [(0, 300)], pub_json=True)
                 elif "/chargemode/pv_charging/min_soc" in msg.topic:
                     self._validate_value(msg, int, [(0, 100)], pub_json=True)
                 elif "/chargemode/pv_charging/min_soc_current" in msg.topic:
                     self._validate_value(msg, int, [(6, 32)], pub_json=True)
+                elif "/chargemode/pv_charging/dc_min_soc_current" in msg.topic:
+                    self._validate_value(msg, float, [(4, 300)], pub_json=True)
                 elif "/chargemode/pv_charging/max_soc" in msg.topic:
                     self._validate_value(msg, int, [(0, 101)], pub_json=True)
                 elif "/chargemode/scheduled_charging/plans/" in msg.topic and "/active" in msg.topic:
@@ -521,7 +527,10 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                         "/set/charging_ev_prev" in msg.topic):
                     self._validate_value(msg, int, [(-1, float("inf"))])
                 elif "/set/current" in msg.topic:
-                    self._validate_value(msg, float, [(6, 32), (0, 0)])
+                    if hardware_configuration.get_hardware_configuration_setting("dc_charging"):
+                        self._validate_value(msg, float, [(0, 0), (6, 32), (0, 450)])
+                    else:
+                        self._validate_value(msg, float, [(6, 32), (0, 0)])
                 elif ("/set/energy_to_charge" in msg.topic or
                         "/set/required_power" in msg.topic):
                     self._validate_value(msg, float, [(0, float("inf"))])
@@ -545,7 +554,10 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                 elif "get" in msg.topic:
                     self.process_chargepoint_get_topics(msg)
                 elif "/control_parameter/required_current" in msg.topic:
-                    self._validate_value(msg, float, [(6, 32), (0, 0)])
+                    if hardware_configuration.get_hardware_configuration_setting("dc_charging"):
+                        self._validate_value(msg, float, [(0, 0), (6, 32), (0, 450)])
+                    else:
+                        self._validate_value(msg, float, [(6, 32), (0, 0)])
                 elif "/control_parameter/phases" in msg.topic:
                     self._validate_value(msg, int, [(0, 3)])
                 elif "/control_parameter/failed_phase_switches" in msg.topic:
@@ -560,8 +572,10 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                     self._validate_value(msg, str)
                 elif ("/control_parameter/imported_instant_charging" in msg.topic or
                         "/control_parameter/imported_at_plan_start" in msg.topic or
+                        "/control_parameter/min_current" in msg.topic or
                         "/control_parameter/timestamp_switch_on_off" in msg.topic or
                         "/control_parameter/timestamp_auto_phase_switch" in msg.topic or
+                        "/control_parameter/timestamp_charge_start" in msg.topic or
                         "/control_parameter/timestamp_perform_phase_switch" in msg.topic):
                     self._validate_value(msg, float, [(0, float("inf"))])
                 elif "/control_parameter/state" in msg.topic:
@@ -588,6 +602,9 @@ def process_chargepoint_get_topics(self, msg):
         elif ("/get/daily_imported" in msg.topic or
                 "/get/daily_exported" in msg.topic or
                 "/get/power" in msg.topic or
+                "/get/charging_current" in msg.topic or
+                "/get/charging_power" in msg.topic or
+                "/get/charging_voltage" in msg.topic or
                 "/get/imported" in msg.topic or
                 "/get/exported" in msg.topic or
                 "/get/soc_timestamp" in msg.topic):
@@ -610,10 +627,12 @@ def process_chargepoint_get_topics(self, msg):
                 "/get/vehicle_id" in msg.topic or
                 "/get/serial_number" in msg.topic):
             self._validate_value(msg, str)
-        elif "/get/rfid_timestamp" in msg.topic:
-            self._validate_value(msg, float)
         elif ("/get/soc" in msg.topic):
             self._validate_value(msg, float, [(0, 100)])
+        elif "/get/rfid_timestamp" in msg.topic:
+            self._validate_value(msg, float)
+        elif "/get/simulation" in msg.topic:
+            self._validate_value(msg, "json")
         else:
             self.__unknown_topic(msg)
 
@@ -866,7 +885,7 @@ def process_counter_topic(self, msg: mqtt.MQTTMessage):
             enthält Topic und Payload
         """
         try:
-            if ("openWB/set/counter/config/reserve_for_not_charging" in msg.topic or
+            if ("openWB/set/counter/config/consider_less_charging" in msg.topic or
                     "openWB/set/counter/set/loadmanagement_active" in msg.topic):
                 self._validate_value(msg, bool)
             elif "openWB/set/counter/set/invalid_home_consumption" in msg.topic:
diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py
index d8bc88df2b..728e2e3cab 100644
--- a/packages/helpermodules/subdata.py
+++ b/packages/helpermodules/subdata.py
@@ -425,13 +425,18 @@ def process_chargepoint_topic(self, var: Dict[str, chargepoint.Chargepoint], msg
                     elif re.search("/chargepoint/[0-9]+/get/", msg.topic) is not None:
                         if re.search("/chargepoint/[0-9]+/get/connected_vehicle/", msg.topic) is not None:
                             self.set_json_payload_class(var["cp"+index].chargepoint.data.get.connected_vehicle, msg)
-                        elif re.search("/chargepoint/[0-9]+/get/", msg.topic) is not None:
-                            if (re.search("/chargepoint/[0-9]+/get/soc$", msg.topic) is not None and
-                                    decode_payload(msg.payload) != var["cp"+index].chargepoint.data.get.soc):
-                                # Wenn das Auto noch nicht zugeordnet ist, wird der SoC nach der Zuordnung aktualisiert
-                                if var["cp"+index].chargepoint.data.set.charging_ev > -1:
-                                    Pub().pub(f'openWB/set/vehicle/{var["cp"+index].chargepoint.data.set.charging_ev}'
-                                              '/get/force_soc_update', True)
+                        elif (re.search("/chargepoint/[0-9]+/get/soc$", msg.topic) is not None and
+                              decode_payload(msg.payload) != var["cp"+index].chargepoint.data.get.soc):
+                            # Wenn das Auto noch nicht zugeordnet ist, wird der SoC nach der Zuordnung aktualisiert
+                            if var["cp"+index].chargepoint.data.set.charging_ev > -1:
+                                Pub().pub(f'openWB/set/vehicle/{var["cp"+index].chargepoint.data.set.charging_ev}'
+                                          '/get/force_soc_update', True)
+                            self.set_json_payload_class(var["cp"+index].chargepoint.data.get, msg)
+                        elif re.search("/chargepoint/[0-9]+/get/simulation$", msg.topic) is not None:
+                            var["cp"+index].chargepoint.chargepoint_module.sim_counter.data = dataclass_from_dict(
+                                SimCounterState,
+                                decode_payload(msg.payload))
+                        else:
                             self.set_json_payload_class(var["cp"+index].chargepoint.data.get, msg)
                     elif re.search("/chargepoint/[0-9]+/config$", msg.topic) is not None:
                         self.process_chargepoint_config_topic(var, msg)
diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index c636ba1c60..8a85a63b64 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -9,6 +9,7 @@
 from typing import List, Optional
 from paho.mqtt.client import Client as MqttClient, MQTTMessage
 from control.bat_all import BatConsiderationMode
+from control.chargepoint.charging_type import ChargingType
 from control.general import ChargemodeConfig
 import dataclass_utils
 
@@ -42,7 +43,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 54
+    DATASTORE_VERSION = 56
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -106,6 +107,7 @@ class UpdateConfig:
         "^openWB/chargepoint/[0-9]+/get/serial_number$",
         "^openWB/chargepoint/[0-9]+/get/soc$",
         "^openWB/chargepoint/[0-9]+/get/soc_timestamp$",
+        "^openWB/chargepoint/[0-9]+/get/simulation$",
         "^openWB/chargepoint/[0-9]+/get/state_str$",
         "^openWB/chargepoint/[0-9]+/get/connected_vehicle/soc$",
         "^openWB/chargepoint/[0-9]+/get/connected_vehicle/info$",
@@ -136,7 +138,7 @@ class UpdateConfig:
         "^openWB/command/[A-Za-z0-9_]+/error$",
         "^openWB/command/todo$",
 
-        "^openWB/counter/config/reserve_for_not_charging$",
+        "^openWB/counter/config/consider_less_charging$",
         "^openWB/counter/config/home_consumption_source_id$",
         "^openWB/counter/get/hierarchy$",
         "^openWB/counter/set/disengageable_smarthome_power$",
@@ -423,7 +425,7 @@ class UpdateConfig:
         ("openWB/chargepoint/get/power", 0),
         ("openWB/chargepoint/template/0", get_chargepoint_template_default()),
         ("openWB/counter/get/hierarchy", []),
-        ("openWB/counter/config/reserve_for_not_charging", counter_all.Config().reserve_for_not_charging),
+        ("openWB/counter/config/consider_less_charging", counter_all.Config().consider_less_charging),
         ("openWB/counter/config/home_consumption_source_id", counter_all.Config().home_consumption_source_id),
         ("openWB/vehicle/0/name", "Standard-Fahrzeug"),
         ("openWB/vehicle/0/charge_template", ev.Ev(0).charge_template.ct_num),
@@ -1353,7 +1355,6 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: updated_payload}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 39)
-        Pub().pub("openWB/system/datastore_version", 39)
 
     def upgrade_datastore_39(self) -> None:
         def upgrade(topic: str, payload) -> None:
@@ -1654,3 +1655,25 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: configuration_payload}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 54)
+
+    def upgrade_datastore_54(self) -> None:
+        def upgrade(topic: str, payload) -> Optional[dict]:
+            if "openWB/counter/config/reserve_for_less_charging" == topic:
+                payload = decode_payload(payload)
+                return {"openWB/counter/config/consider_less_charging": payload}
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 55)
+
+    def upgrade_datastore_55(self) -> None:
+        if hardware_configuration.exists_hardware_configuration_setting("dc_charging") is False:
+            hardware_configuration.update_hardware_configuration({"dc_charging": False})
+
+        def upgrade(topic: str, payload) -> Optional[dict]:
+            if re.search("openWB/chargepoint/template/[0-9]+", topic) is not None:
+                payload = decode_payload(payload)
+                if "charging_type" not in payload:
+                    updated_payload = payload
+                    updated_payload["charging_type"] = ChargingType.AC.value
+                    return {topic: updated_payload}
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 56)
diff --git a/packages/modules/chargepoints/external_openwb/config.py b/packages/modules/chargepoints/external_openwb/config.py
index 9f95f58ae9..50c322aeb5 100644
--- a/packages/modules/chargepoints/external_openwb/config.py
+++ b/packages/modules/chargepoints/external_openwb/config.py
@@ -1,5 +1,7 @@
 from typing import Optional
 
+from modules.common.abstract_chargepoint import SetupChargepoint
+
 
 class OpenWBSeriesConfiguration:
     def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
@@ -7,13 +9,10 @@ def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
         self.duo_num = duo_num
 
 
-class OpenWBSeries:
+class OpenWBSeries(SetupChargepoint[OpenWBSeriesConfiguration]):
     def __init__(self,
                  name: str = "Externe openWB",
                  type: str = "external_openwb",
                  id: int = 0,
                  configuration: OpenWBSeriesConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or OpenWBSeriesConfiguration()
+        super().__init__(name, type, id, configuration or OpenWBSeriesConfiguration())
diff --git a/packages/modules/chargepoints/internal_openwb/config.py b/packages/modules/chargepoints/internal_openwb/config.py
index e8899b15c3..94f7f6253d 100644
--- a/packages/modules/chargepoints/internal_openwb/config.py
+++ b/packages/modules/chargepoints/internal_openwb/config.py
@@ -1,5 +1,7 @@
 from enum import Enum
 
+from modules.common.abstract_chargepoint import SetupChargepoint
+
 
 class InternalChargepointMode(Enum):
     SOCKET = "socket"
@@ -14,13 +16,10 @@ def __init__(self, mode: str = InternalChargepointMode.SERIES.value, duo_num: in
         self.duo_num = duo_num
 
 
-class InternalOpenWB:
+class InternalOpenWB(SetupChargepoint[InternalOpenWBConfiguration]):
     def __init__(self,
                  name: str = "Interne openWB",
                  type: str = "internal_openwb",
                  id: int = 0,
                  configuration: InternalOpenWBConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or InternalOpenWBConfiguration()
+        super().__init__(name, type, id, configuration or InternalOpenWBConfiguration())
diff --git a/packages/modules/chargepoints/mqtt/config.py b/packages/modules/chargepoints/mqtt/config.py
index 0020bba750..7d96e7242f 100644
--- a/packages/modules/chargepoints/mqtt/config.py
+++ b/packages/modules/chargepoints/mqtt/config.py
@@ -1,15 +1,15 @@
+from modules.common.abstract_chargepoint import SetupChargepoint
+
+
 class MqttConfiguration:
     def __init__(self):
         pass
 
 
-class Mqtt:
+class Mqtt(SetupChargepoint[MqttConfiguration]):
     def __init__(self,
                  name: str = "MQTT-Ladepunkt",
                  type: str = "mqtt",
                  id: int = 0,
                  configuration: MqttConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or MqttConfiguration()
+        super().__init__(name, type, id, configuration or MqttConfiguration())
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/__init__.py b/packages/modules/chargepoints/openwb_dc_adapter/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
new file mode 100644
index 0000000000..3dcc7f4181
--- /dev/null
+++ b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
@@ -0,0 +1,125 @@
+
+from enum import IntEnum
+import logging
+
+from helpermodules import hardware_configuration
+from helpermodules.utils.error_counter import ErrorCounterContext
+from modules.chargepoints.openwb_dc_adapter.config import OpenWBDcAdapter
+from modules.common.abstract_chargepoint import AbstractChargepoint
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.fault_state import ComponentInfo, FaultState
+from modules.common.simcount import SimCounterChargepoint
+from modules.common.store import get_chargepoint_value_store
+from modules.common.component_state import ChargepointState
+from modules.common import req
+
+log = logging.getLogger(__name__)
+
+
+class ChargingStatus(IntEnum):
+    AVAILABLE = 0
+    PREPARING_TAGID_READY = 1
+    PREPARING_EV_READY = 2
+    CHARGING = 3
+    SUSPENDED_EV = 4
+    SUSPENDED_EVSE = 5
+    FINISHING = 6
+    RESERVED = 7
+    UNAVAILABLE = 8
+    UNAVAILABLE_FW_UPDATE = 9
+    FAULTED = 10
+    UNAVAILABLE_CONN_OBJ = 11
+
+
+class ChargepointModule(AbstractChargepoint):
+    def __init__(self, config: OpenWBDcAdapter) -> None:
+        self.config = config
+        self.store = get_chargepoint_value_store(self.config.id)
+        self.fault_state = FaultState(ComponentInfo(
+            self.config.id,
+            "Ladepunkt", "chargepoint"))
+        self.sim_counter = SimCounterChargepoint(self.config.id)
+        self.__session = req.get_http_session()
+        self.__client_error_context = ErrorCounterContext(
+            "Anhaltender Fehler beim Auslesen des Ladepunkts. Sollstromstärke wird zurückgesetzt.")
+        if hardware_configuration.get_hardware_configuration_setting("openwb_dc_adapter") is False:
+            raise Exception(
+                "DC-Laden muss durch den Support freigeschaltet werden. Bitte nehme Kontakt mit dem Support auf.")
+        self.efficiency = None
+
+        with SingleComponentUpdateContext(self.fault_state, False):
+            with self.__client_error_context:
+                self.__session.post(
+                    'http://' + self.config.configuration.ip_address + '/connect.php',
+                    data={'heartbeatenabled': '1'})
+
+    def set_current(self, current: float) -> None:
+        if self.__client_error_context.error_counter_exceeded():
+            current = 0
+        with SingleComponentUpdateContext(self.fault_state, False):
+            with self.__client_error_context:
+                ip_address = self.config.configuration.ip_address
+                raw_current = self.subtract_conversion_loss_from_current(current)
+                raw_power = raw_current * 3 * 230
+                log.debug(f"DC-Stromstärke: {raw_current}A ≙ {raw_power / 1000}kW")
+                self.__session.post('http://'+ip_address+'/connect.php', data={'power': raw_power})
+
+    def subtract_conversion_loss_from_current(self, current: float) -> float:
+        return current * (self.efficiency if self.efficiency else 0.9)
+
+    def add_conversion_loss_to_current(self, current: float) -> float:
+        return current / (self.efficiency if self.efficiency else 0.9)
+
+    def get_values(self) -> None:
+        with SingleComponentUpdateContext(self.fault_state):
+            with self.__client_error_context:
+                ip_address = self.config.configuration.ip_address
+                json_rsp = self.__session.get('http://'+ip_address+'/connect.php').json()
+
+                if json_rsp["fault_state"] == 1:
+                    self.fault_state.warning(json_rsp["fault_str"])
+                elif json_rsp["fault_state"] == 2:
+                    raise Exception(json_rsp["fault_str"])
+
+                charging_power = json_rsp["charging_power"]
+                imported, exported = self.sim_counter.sim_count(charging_power)
+                chargepoint_state = ChargepointState(
+                    charge_state=json_rsp["charge_state"],
+                    charging_current=json_rsp["charging_current"],
+                    charging_power=charging_power,
+                    charging_voltage=json_rsp["charging_voltage"],
+                    currents=json_rsp["currents"],
+                    exported=exported,
+                    imported=imported,
+                    phases_in_use=3,
+                    power=json_rsp["power_all"],
+                    powers=json_rsp["powers"],
+                    plug_state=json_rsp["plug_state"],
+                    rfid=json_rsp["rfid_tag"],
+                    soc=json_rsp["soc_value"],
+                    soc_timestamp=json_rsp["soc_timestamp"],
+                    vehicle_id=json_rsp["vehicle_id"],
+                    serial_number=json_rsp["serial"],
+                )
+
+                if chargepoint_state.charge_state:
+                    try:
+                        self.efficiency = chargepoint_state.charging_power / chargepoint_state.power
+                        log.debug(f"Effizienz: {self.efficiency}")
+                    except ZeroDivisionError:
+                        self.efficiency = None
+                else:
+                    self.efficiency = None
+                if not (json_rsp["state"] == ChargingStatus.AVAILABLE.value or
+                        json_rsp["state"] == ChargingStatus.PREPARING_TAGID_READY.value or
+                        json_rsp["state"] == ChargingStatus.PREPARING_EV_READY.value or
+                        json_rsp["state"] == ChargingStatus.CHARGING.value or
+                        json_rsp["state"] == ChargingStatus.FINISHING.value or
+                        json_rsp["state"] == ChargingStatus.UNAVAILABLE_CONN_OBJ.value):
+                    raise Exception(f"Ladepunkt nicht verfügbar. Status: {ChargingStatus(json_rsp['state'])}")
+                self.store.set(chargepoint_state)
+                self.__client_error_context.reset_error_counter()
+
+
+chargepoint_descriptor = DeviceDescriptor(configuration_factory=OpenWBDcAdapter)
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/config.py b/packages/modules/chargepoints/openwb_dc_adapter/config.py
new file mode 100644
index 0000000000..c29770895b
--- /dev/null
+++ b/packages/modules/chargepoints/openwb_dc_adapter/config.py
@@ -0,0 +1,20 @@
+from typing import Optional
+
+from helpermodules import hardware_configuration
+from modules.common.abstract_chargepoint import SetupChargepoint
+
+
+class OpenWBDcAdapterConfiguration:
+    def __init__(self, ip_address: Optional[str] = None):
+        self.ip_address = ip_address
+
+
+class OpenWBDcAdapter(SetupChargepoint[OpenWBDcAdapterConfiguration]):
+    def __init__(self,
+                 name: str = "openWB Adapter für DC-Lader",
+                 type: str = "openwb_dc_adapter",
+                 id: int = 0,
+                 configuration: OpenWBDcAdapterConfiguration = None) -> None:
+        super().__init__(name, type, id, configuration or OpenWBDcAdapterConfiguration())
+        self.visibility = hardware_configuration.get_hardware_configuration_setting("dc_charging")
+        self.charging_type = "DC"
diff --git a/packages/modules/chargepoints/openwb_pro/config.py b/packages/modules/chargepoints/openwb_pro/config.py
index b42a55be68..db54fe1672 100644
--- a/packages/modules/chargepoints/openwb_pro/config.py
+++ b/packages/modules/chargepoints/openwb_pro/config.py
@@ -1,5 +1,7 @@
 from typing import Optional
 
+from modules.common.abstract_chargepoint import SetupChargepoint
+
 
 class OpenWBProConfiguration:
     def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
@@ -7,13 +9,10 @@ def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
         self.duo_num = duo_num
 
 
-class OpenWBPro:
+class OpenWBPro(SetupChargepoint[OpenWBProConfiguration]):
     def __init__(self,
                  name: str = "openWB Pro",
                  type: str = "openwb_pro",
                  id: int = 0,
                  configuration: OpenWBProConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or OpenWBProConfiguration()
+        super().__init__(name, type, id, configuration or OpenWBProConfiguration())
diff --git a/packages/modules/chargepoints/openwb_series2_satellit/config.py b/packages/modules/chargepoints/openwb_series2_satellit/config.py
index 2dd674da6d..b331089349 100644
--- a/packages/modules/chargepoints/openwb_series2_satellit/config.py
+++ b/packages/modules/chargepoints/openwb_series2_satellit/config.py
@@ -1,5 +1,7 @@
 from typing import Optional
 
+from modules.common.abstract_chargepoint import SetupChargepoint
+
 
 class OpenWBseries2SatellitConfiguration:
     def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
@@ -7,13 +9,10 @@ def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
         self.duo_num = duo_num
 
 
-class OpenWBseries2Satellit:
+class OpenWBseries2Satellit(SetupChargepoint[OpenWBseries2SatellitConfiguration]):
     def __init__(self,
                  name: str = "openWB series2 satellit, openWB series2 satellit Duo",
                  type: str = "openwb_series2_satellit",
                  id: int = 0,
                  configuration: OpenWBseries2SatellitConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or OpenWBseries2SatellitConfiguration()
+        super().__init__(name, type, id, configuration or OpenWBseries2SatellitConfiguration())
diff --git a/packages/modules/chargepoints/smartwb/config.py b/packages/modules/chargepoints/smartwb/config.py
index 06c16e2dc9..8052737999 100644
--- a/packages/modules/chargepoints/smartwb/config.py
+++ b/packages/modules/chargepoints/smartwb/config.py
@@ -1,5 +1,7 @@
 from typing import Optional
 
+from modules.common.abstract_chargepoint import SetupChargepoint
+
 
 class SmartWBConfiguration:
     def __init__(self, ip_address: Optional[str] = None, timeout: int = 2):
@@ -7,13 +9,10 @@ def __init__(self, ip_address: Optional[str] = None, timeout: int = 2):
         self.timeout = timeout
 
 
-class SmartWB:
+class SmartWB(SetupChargepoint[SmartWBConfiguration]):
     def __init__(self,
                  name: str = "smartWB / EVSE-Wifi (>= v1.x.x/v2.x.x)",
                  type: str = "smartwb",
                  id: int = 0,
                  configuration: SmartWBConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or SmartWBConfiguration()
+        super().__init__(name, type, id, configuration or SmartWBConfiguration())
diff --git a/packages/modules/common/abstract_chargepoint.py b/packages/modules/common/abstract_chargepoint.py
index 1b7b1ac10f..140cdabc9e 100644
--- a/packages/modules/common/abstract_chargepoint.py
+++ b/packages/modules/common/abstract_chargepoint.py
@@ -1,4 +1,7 @@
 from abc import abstractmethod
+from typing import Generic, TypeVar
+
+from control.chargepoint.charging_type import ChargingType
 
 
 class AbstractChargepoint:
@@ -25,3 +28,30 @@ def interrupt_cp(self, duration: int) -> None:
     @abstractmethod
     def clear_rfid(self) -> None:
         pass
+
+    @abstractmethod
+    def add_conversion_loss_to_current(self, current: float) -> float:
+        return current
+
+    @abstractmethod
+    def subtract_conversion_loss_from_current(self, current: float) -> float:
+        return current
+
+
+T = TypeVar("T")
+
+
+class SetupChargepoint(Generic[T]):
+    def __init__(self,
+                 name: str,
+                 type: str,
+                 id: int,
+                 configuration: T,
+                 charging_type: str = ChargingType.AC.value,
+                 visibility: bool = True) -> None:
+        self.name = name
+        self.type = type
+        self.id = id
+        self.configuration = configuration
+        self.charging_type = charging_type
+        self.visibility = visibility
diff --git a/packages/modules/common/component_state.py b/packages/modules/common/component_state.py
index afcd76d0bf..fa2a904658 100644
--- a/packages/modules/common/component_state.py
+++ b/packages/modules/common/component_state.py
@@ -149,6 +149,9 @@ def __init__(self,
                  exported: float = 0,
                  power: float = 0,
                  serial_number: str = "",
+                 charging_current: Optional[float] = 0,
+                 charging_voltage: Optional[float] = 0,
+                 charging_power: Optional[float] = 0,
                  powers: Optional[List[Optional[float]]] = None,
                  voltages: Optional[List[Optional[float]]] = None,
                  currents: Optional[List[Optional[float]]] = None,
@@ -178,6 +181,9 @@ def __init__(self,
             self.rfid_timestamp = rfid_timestamp
         if _check_none(power_factors):
             power_factors = [0.0]*3
+        self.charging_current = charging_current
+        self.charging_power = charging_power
+        self.charging_voltage = charging_voltage
         self.power_factors = power_factors
         self.soc = soc
         self.soc_timestamp = soc_timestamp
diff --git a/packages/modules/common/simcount/__init__.py b/packages/modules/common/simcount/__init__.py
index add2e1ac5d..7c25745c47 100644
--- a/packages/modules/common/simcount/__init__.py
+++ b/packages/modules/common/simcount/__init__.py
@@ -1,3 +1,3 @@
 from modules.common.simcount._simcount import sim_count
-from modules.common.simcount._simcounter import SimCounter
+from modules.common.simcount._simcounter import SimCounter, SimCounterChargepoint
 from modules.common.simcount.simcounter_state import SimCounterState
diff --git a/packages/modules/common/simcount/_simcounter.py b/packages/modules/common/simcount/_simcounter.py
index 0e65dec191..5f196c7643 100644
--- a/packages/modules/common/simcount/_simcounter.py
+++ b/packages/modules/common/simcount/_simcounter.py
@@ -13,3 +13,13 @@ def __init__(self, device_id: int, component_id: int, prefix: str):
     def sim_count(self, power: float) -> Tuple[float, float]:
         self.data = sim_count(power, self.topic, self.data, self.prefix)
         return self.data.imported, self.data.exported
+
+
+class SimCounterChargepoint:
+    def __init__(self, chargepoint_id: int):
+        self.topic = f"openWB/set/chargepoint/{chargepoint_id}/get/"
+        self.data = None  # type: Optional[SimCounterState]
+
+    def sim_count(self, power: float) -> Tuple[float, float]:
+        self.data = sim_count(power, self.topic, self.data, "")
+        return self.data.imported, self.data.exported
diff --git a/packages/modules/common/store/_chargepoint.py b/packages/modules/common/store/_chargepoint.py
index 5f68602a9f..631040c511 100644
--- a/packages/modules/common/store/_chargepoint.py
+++ b/packages/modules/common/store/_chargepoint.py
@@ -28,6 +28,11 @@ def set(self, state: ChargepointState) -> None:
         self.state = state
 
     def update(self):
+        pub_to_broker("openWB/set/chargepoint/" + str(self.num) +
+                      "/get/charging_current", self.state.charging_current, 2)
+        pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/charging_power", self.state.charging_power, 2)
+        pub_to_broker("openWB/set/chargepoint/" + str(self.num) +
+                      "/get/charging_voltage", self.state.charging_voltage, 2)
         pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/voltages", self.state.voltages, 2)
         pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/currents", self.state.currents, 2)
         pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/power_factors", self.state.power_factors, 2)
diff --git a/packages/modules/configuration.py b/packages/modules/configuration.py
index a1708e2b3f..5d3959e83d 100644
--- a/packages/modules/configuration.py
+++ b/packages/modules/configuration.py
@@ -228,10 +228,11 @@ def create_chargepoints_list(path_list):
                     dev_defaults = importlib.import_module(
                         f".chargepoints.{path.parts[-2]}.chargepoint_module",
                         "modules").chargepoint_descriptor.configuration_factory()
-                    chargepoints.append({
-                        "value": dev_defaults.type,
-                        "text": dev_defaults.name
-                    })
+                    if dev_defaults.visibility:
+                        chargepoints.append({
+                            "value": dev_defaults.type,
+                            "text": dev_defaults.name
+                        })
                 except Exception:
                     log.exception("Fehler im configuration-Modul")
             chargepoints = sorted(chargepoints, key=lambda d: d['text'].upper())
diff --git a/packages/modules/internal_chargepoint_handler/update_values_test.py b/packages/modules/internal_chargepoint_handler/update_values_test.py
index 2360a31bcc..6fcd274076 100644
--- a/packages/modules/internal_chargepoint_handler/update_values_test.py
+++ b/packages/modules/internal_chargepoint_handler/update_values_test.py
@@ -24,7 +24,7 @@
 
 @pytest.mark.parametrize(
     "old_chargepoint_state, published_topics",
-    [(None, 36),
+    [(None, 42),
      (OLD_CHARGEPOINT_STATE, 2)]
 
 )
diff --git a/packages/modules/update_soc.py b/packages/modules/update_soc.py
index 68dda5ce6b..2b54411703 100644
--- a/packages/modules/update_soc.py
+++ b/packages/modules/update_soc.py
@@ -103,9 +103,12 @@ def _get_vehicle_update_data(self, ev_num: int) -> VehicleUpdateData:
                 if ev.soc_module.general_config.use_soc_from_cp:
                     soc_from_cp = cp.data.get.soc
                     timestamp_soc_from_cp = cp.data.get.soc_timestamp
+                    log.debug(f"cp.num {cp.num} cp.data.get {cp.data.get}")
+                    log.debug(f"1 soc_from_cp: {soc_from_cp}, timestamp_soc_from_cp: {timestamp_soc_from_cp}")
                 else:
                     soc_from_cp = None
                     timestamp_soc_from_cp = None
+                    log.debug(f"2 soc_from_cp: {soc_from_cp}, timestamp_soc_from_cp: {timestamp_soc_from_cp}")
                 break
         else:
             plug_state = False
@@ -115,6 +118,7 @@ def _get_vehicle_update_data(self, ev_num: int) -> VehicleUpdateData:
             efficiency = ev_template.data.efficiency
             soc_from_cp = None
             timestamp_soc_from_cp = None
+            log.debug(f"3 soc_from_cp: {soc_from_cp}, timestamp_soc_from_cp: {timestamp_soc_from_cp}")
         return VehicleUpdateData(plug_state=plug_state,
                                  charge_state=charge_state,
                                  efficiency=efficiency,
diff --git a/packages/modules/web_themes/standard_legacy/web/index.html b/packages/modules/web_themes/standard_legacy/web/index.html
index 6f0a09dd7e..e82a11b1ba 100644
--- a/packages/modules/web_themes/standard_legacy/web/index.html
+++ b/packages/modules/web_themes/standard_legacy/web/index.html
@@ -638,6 +638,29 @@ <h3>Einstellungen für "Sofortladen"</h3>
 											</div>
 										</div>
 									</div>
+									<div class="dc-charging-configured hide">
+										<div class="form-row vaRow mb-0">
+											<div class="col">
+												DC-Sollleistung
+											</div>
+											<div class="col-md-8">
+												<div class="form-row form-group mb-1 vaRow">
+													<div class="col">
+														<input type="range"
+															class="charge-point-instant-charge-dc-current form-control-range rangeInput"
+															id="dcCurrentInstantChargeCpT"
+															data-transformation='{ "in": "(<v> * 3 * 230) / 1000", "out": "(<v> * 1000) / 230 / 3" }'
+															data-topic="openWB/set/vehicle/template/charge_template/<ct>/chargemode/instant_charging/dc_current"
+															min="4" max="300" step="1">
+													</div>
+													<label for="dcCurrentInstantChargeCpT"
+														class="col-2 col-form-label valueLabel text-right" data-suffix="kW">
+														-- kW
+													</label>
+												</div>
+											</div>
+										</div>
+									</div>
 									<div class="form-row vaRow">
 										<div class="col">
 											<label class="col-form-label">Begrenzung</label>
@@ -720,6 +743,29 @@ <h3>Einstellungen für "PV"</h3>
 											</div>
 										</div>
 									</div>
+									<div class="dc-charging-configured hide">
+										<div class="form-row vaRow mb-0">
+											<div class="col">
+												Minimale DC-Dauerleistung
+											</div>
+											<div class="col-md-8">
+												<div class="form-row form-group mb-1 vaRow">
+													<div class="col">
+														<input type="range"
+															class="charge-point-pv-charge-dc-min-current form-control-range rangeInput"
+															id="minDcCurrentPvCpT"
+															data-transformation='{ "in": "(<v> * 3 * 230) / 1000", "out": "(<v> * 1000) / 230 / 3" }'
+															data-topic="openWB/set/vehicle/template/charge_template/<ct>/chargemode/pv_charging/dc_min_current"
+															min="0" max="300" step="1">
+													</div>
+													<label for="minDcCurrentPvCpT"
+														class="col-2 col-form-label valueLabel text-right" data-suffix="kW">
+														-- kW
+													</label>
+												</div>
+											</div>
+										</div>
+									</div>
 									<div class="form-row vaRow mb-0">
 										<div class="col">
 											Mindest-SoC
@@ -759,6 +805,29 @@ <h3>Einstellungen für "PV"</h3>
 											</div>
 										</div>
 									</div>
+									<div class="dc-charging-configured hide">
+										<div class="form-row vaRow mb-0">
+											<div class="col">
+												DC Mindest-SoC-Leistung
+											</div>
+											<div class="col-md-8">
+												<div class="form-row form-group mb-1 vaRow">
+													<div class="col">
+														<input type="range"
+															class="charge-point-pv-charge-dc-min-soc-current form-control-range rangeInput"
+															id="minSocDcCurrentPvCpT"
+															data-transformation='{ "in": "(<v> * 3 * 230) / 1000", "out": "(<v> * 1000) / 230 / 3" }'
+															data-topic="openWB/set/vehicle/template/charge_template/<ct>/chargemode/pv_charging/dc_min_soc_current"
+															min="4" max="300" step="1">
+													</div>
+													<label for="minSocDcCurrentPvCpT"
+														class="col-2 col-form-label valueLabel text-right" data-suffix="kW">
+														-- kW
+													</label>
+												</div>
+											</div>
+										</div>
+									</div>
 									<div class="form-row vaRow mb-0">
 										<div class="col">
 											SoC-Limit
diff --git a/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js b/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js
index 346b2229d4..3d31317d39 100644
--- a/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js
+++ b/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js
@@ -55,14 +55,20 @@ function createChargePoint(hierarchy) {
 				clonedElement.find('.card-body').attr('id', 'collapseChargepoint' + chargePointIndex).removeClass('show');
 				clonedElement.find('label[for=minCurrentPvCpT]').attr('for', 'minCurrentPvCp' + chargePointIndex);
 				clonedElement.find('#minCurrentPvCpT').attr('id', 'minCurrentPvCp' + chargePointIndex);
+				clonedElement.find('label[for=minDcCurrentPvCpT]').attr('for', 'minDcCurrentPvCp' + chargePointIndex);
+				clonedElement.find('#minDcCurrentPvCpT').attr('id', 'minDcCurrentPvCp' + chargePointIndex);
 				clonedElement.find('label[for=minSocPvCpT]').attr('for', 'minSocPvCp' + chargePointIndex);
 				clonedElement.find('#minSocPvCpT').attr('id', 'minSocPvCp' + chargePointIndex);
 				clonedElement.find('label[for=maxSocPvCpT]').attr('for', 'maxSocPvCp' + chargePointIndex);
 				clonedElement.find('#maxSocPvCpT').attr('id', 'maxSocPvCp' + chargePointIndex);
 				clonedElement.find('label[for=minSocCurrentPvCpT]').attr('for', 'minSocCurrentPvCp' + chargePointIndex);
 				clonedElement.find('#minSocCurrentPvCpT').attr('id', 'minSocCurrentPvCp' + chargePointIndex);
+				clonedElement.find('label[for=minSocDcCurrentPvCpT]').attr('for', 'minSocDcCurrentPvCp' + chargePointIndex);
+				clonedElement.find('#minSocDcCurrentPvCpT').attr('id', 'minSocDcCurrentPvCp' + chargePointIndex);
 				clonedElement.find('label[for=currentInstantChargeCpT]').attr('for', 'currentInstantChargeCp' + chargePointIndex);
 				clonedElement.find('#currentInstantChargeCpT').attr('id', 'currentInstantChargeCp' + chargePointIndex);
+				clonedElement.find('label[for=dcCurrentInstantChargeCpT]').attr('for', 'dcCurrentInstantChargeCpT' + chargePointIndex);
+				clonedElement.find('#dcCurrentInstantChargeCpT').attr('id', 'dcCurrentInstantChargeCpT' + chargePointIndex);
 				clonedElement.find('label[for=limitInstantChargeCpT]').attr('for', 'limitInstantChargeCp' + chargePointIndex);
 				clonedElement.find('#limitInstantChargeCpT').attr('id', 'limitInstantChargeCp' + chargePointIndex);
 				clonedElement.find('label[for=soclimitCpT]').attr('for', 'soclimitCp' + chargePointIndex);
@@ -115,6 +121,9 @@ function refreshChargeTemplate(templateIndex) {
 				// chargemode.instant_charging.current
 				element = parent.find('.charge-point-instant-charge-current');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.instant_charging.current);
+				// chargemode.instant_charging.dc_current
+				element = parent.find('.charge-point-instant-charge-dc-current');
+				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.instant_charging.dc_current);
 				// chargemode.instant_charging.limit.selected
 				element = parent.find('.charge-point-instant-charge-limit-selected');
 				setToggleBtnGroup(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.instant_charging.limit.selected);
@@ -145,6 +154,9 @@ function refreshChargeTemplate(templateIndex) {
 				// chargemode.pv_charging.min_current
 				element = parent.find('.charge-point-pv-charge-min-current');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.min_current);
+				// chargemode.pv_charging.dc_min_current
+				element = parent.find('.charge-point-pv-charge-dc-min-current');
+				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.dc_min_current);
 				// chargemode.pv_charging.min_soc
 				element = parent.find('.charge-point-pv-charge-min-soc');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.min_soc);
@@ -154,6 +166,9 @@ function refreshChargeTemplate(templateIndex) {
 				// chargemode.pv_charging.min_soc_current
 				element = parent.find('.charge-point-pv-charge-min-soc-current');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.min_soc_current);
+				// chargemode.pv_charging.dc_min_soc_current
+				element = parent.find('.charge-point-pv-charge-dc-min-soc-current');
+				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.dc_min_soc_current);
 				// chargemode.pv_charging.feed_in_limit
 				var element = parent.find('.charge-point-pv-charge-feed-in-limit'); // now get parents respective child element
 				if (chargeModeTemplate[templateIndex].chargemode.pv_charging.feed_in_limit == true) {
@@ -380,6 +395,7 @@ function handleMessage(mqttTopic, mqttPayload) {
 	else if (mqttTopic.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)) { processPvConfigMessages(mqttTopic, mqttPayload); }
 	else if (mqttTopic.match(/^openwb\/graph\//i)) { processGraphMessages(mqttTopic, mqttPayload); }
 	else if (mqttTopic.match(/^openwb\/optional\/et\//i)) { processETProviderMessages(mqttTopic, mqttPayload); }
+	else if (mqttTopic.match(/^openwb\/optional\//i)) { processOptionalMessages(mqttTopic, mqttPayload); }
 	else if (mqttTopic.match(/^openwb\/LegacySmartHome\//i)) { processSmartHomeDeviceMessages(mqttTopic, mqttPayload); }
 } // end handleMessage
 
@@ -1071,6 +1087,17 @@ function processETProviderMessages(mqttTopic, mqttPayload) {
 	}
 }
 
+function processOptionalMessages(mqttTopic, mqttPayload) {
+	if (mqttTopic == 'openWB/optional/dc_charging') {
+		data = JSON.parse(mqttPayload);
+		if (data == true) {
+			$('.dc-charging-configured').removeClass('hide');
+		} else {
+			$('.dc-charging-configured').addClass('hide');
+		}
+	}
+}
+
 function processSmartHomeDeviceMessages(mqttTopic, mqttPayload) {
 	processPreloader(mqttTopic);
 	var deviceIndex = getIndex(mqttTopic);  // extract number between two / /
diff --git a/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js b/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js
index e4f30f6cdb..7853d831e3 100644
--- a/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js
+++ b/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js
@@ -77,6 +77,7 @@ var topicsToSubscribe = [
 	["openWB/optional/et/active", 1], // et provider is configured
 	["openWB/optional/et/provider", 1], // et provider information
 	["openWB/optional/et/get/prices", 1], // current price list
+	["openWB/optional/dc_charging", 1], // dc charging is configured
 
 	// graph topics
 	["openWB/graph/config/duration", 1], // maximum duration to display in landing page

From 7212f15a47df933be6101b61a17a70b1283c1135 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 3 Sep 2024 12:07:18 +0200
Subject: [PATCH 016/205] build UI (#1862)

---
 .../assets/{ChargeLog-95b9ca4e.js => ChargeLog-582cb159.js}     | 2 +-
 web/settings/assets/ChargePointInstallation-6bdc7310.js         | 1 +
 web/settings/assets/ChargePointInstallation-9d7a4a26.js         | 1 -
 web/settings/assets/{Chart-b8b9286f.js => Chart-3fbd17e3.js}    | 2 +-
 .../assets/{CloudConfig-86ffb07e.js => CloudConfig-2dc63c4a.js} | 2 +-
 .../{DataManagement-9a695ef8.js => DataManagement-8e5bac9a.js}  | 2 +-
 .../assets/{DebugConfig-7dd5be5a.js => DebugConfig-c12bb15b.js} | 2 +-
 ...ChargeConfig-c98169ef.js => GeneralChargeConfig-7e106509.js} | 2 +-
 .../{GeneralConfig-216681e8.js => GeneralConfig-9cb055aa.js}    | 2 +-
 ...nstallation-dffcdd26.js => HardwareInstallation-b6072dfb.js} | 2 +-
 ...nstallAssistant-fcd9b404.js => InstallAssistant-3b33de2f.js} | 2 +-
 ...stantStep0-bf5662ea.js => InstallAssistantStep0-00bfcb75.js} | 2 +-
 ...stantStep1-2ce0f1e2.js => InstallAssistantStep1-e96672e3.js} | 2 +-
 ...antStep10-978add30.js => InstallAssistantStep10-509dd8d5.js} | 2 +-
 ...stantStep2-425e8e49.js => InstallAssistantStep2-d28f6b53.js} | 2 +-
 ...stantStep3-44132528.js => InstallAssistantStep3-0b86cf0f.js} | 2 +-
 ...stantStep4-e9fb5b4d.js => InstallAssistantStep4-cb68c0eb.js} | 2 +-
 ...stantStep5-90cd4d62.js => InstallAssistantStep5-411e6e9d.js} | 2 +-
 ...stantStep6-8faa26be.js => InstallAssistantStep6-cd1941b1.js} | 2 +-
 ...stantStep7-a45c2a67.js => InstallAssistantStep7-6d705988.js} | 2 +-
 ...stantStep8-eb2f2d0a.js => InstallAssistantStep8-e7350c4d.js} | 2 +-
 ...stantStep9-6bf810df.js => InstallAssistantStep9-ac8d21eb.js} | 2 +-
 ...ate-bf2dcd11.js => InstallAssistantStepTemplate-e18733fc.js} | 2 +-
 ...ChargeConfig-a80080eb.js => InstantChargeConfig-252a508f.js} | 2 +-
 .../{LegalSettings-bebb1715.js => LegalSettings-f66efb7a.js}    | 2 +-
 web/settings/assets/LoadManagementConfig-ad848400.js            | 1 +
 web/settings/assets/LoadManagementConfig-bd1cf7d0.js            | 1 -
 ...qttBridgeConfig-f4caf6ad.js => MqttBridgeConfig-a79c288e.js} | 2 +-
 ...nalComponents-555be33d.js => OptionalComponents-5a24a6aa.js} | 2 +-
 .../{PVChargeConfig-0c8008ce.js => PVChargeConfig-260d31b6.js}  | 2 +-
 ...argeConfig-71274181.js => ScheduledChargeConfig-b2a3d789.js} | 2 +-
 web/settings/assets/{Status-78365aec.js => Status-d562c100.js}  | 2 +-
 .../assets/{Support-ab239500.js => Support-56e00a88.js}         | 2 +-
 web/settings/assets/{System-77ceec43.js => System-5f853f95.js}  | 2 +-
 .../{TestingStore-89d6c156.js => TestingStore-5dd38b00.js}      | 2 +-
 ...imeChargeConfig-536957f1.js => TimeChargeConfig-7d17c070.js} | 2 +-
 web/settings/assets/VehicleConfig-0dfeda79.js                   | 1 -
 web/settings/assets/VehicleConfig-c67651ce.js                   | 1 +
 web/settings/assets/chargePoint-20a5e448.js                     | 1 +
 ...ricity_tariff-6c2d936c.js => electricity_tariff-b90a64df.js} | 2 +-
 web/settings/assets/{index-625b6e82.js => index-ba5cf04c.js}    | 2 +-
 .../assets/{vehicle-f7135917.js => vehicle-5eb1661e.js}         | 2 +-
 web/settings/index.html                                         | 2 +-
 43 files changed, 40 insertions(+), 39 deletions(-)
 rename web/settings/assets/{ChargeLog-95b9ca4e.js => ChargeLog-582cb159.js} (99%)
 create mode 100644 web/settings/assets/ChargePointInstallation-6bdc7310.js
 delete mode 100644 web/settings/assets/ChargePointInstallation-9d7a4a26.js
 rename web/settings/assets/{Chart-b8b9286f.js => Chart-3fbd17e3.js} (99%)
 rename web/settings/assets/{CloudConfig-86ffb07e.js => CloudConfig-2dc63c4a.js} (99%)
 rename web/settings/assets/{DataManagement-9a695ef8.js => DataManagement-8e5bac9a.js} (99%)
 rename web/settings/assets/{DebugConfig-7dd5be5a.js => DebugConfig-c12bb15b.js} (98%)
 rename web/settings/assets/{GeneralChargeConfig-c98169ef.js => GeneralChargeConfig-7e106509.js} (98%)
 rename web/settings/assets/{GeneralConfig-216681e8.js => GeneralConfig-9cb055aa.js} (99%)
 rename web/settings/assets/{HardwareInstallation-dffcdd26.js => HardwareInstallation-b6072dfb.js} (99%)
 rename web/settings/assets/{InstallAssistant-fcd9b404.js => InstallAssistant-3b33de2f.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-bf5662ea.js => InstallAssistantStep0-00bfcb75.js} (95%)
 rename web/settings/assets/{InstallAssistantStep1-2ce0f1e2.js => InstallAssistantStep1-e96672e3.js} (89%)
 rename web/settings/assets/{InstallAssistantStep10-978add30.js => InstallAssistantStep10-509dd8d5.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-425e8e49.js => InstallAssistantStep2-d28f6b53.js} (89%)
 rename web/settings/assets/{InstallAssistantStep3-44132528.js => InstallAssistantStep3-0b86cf0f.js} (92%)
 rename web/settings/assets/{InstallAssistantStep4-e9fb5b4d.js => InstallAssistantStep4-cb68c0eb.js} (92%)
 rename web/settings/assets/{InstallAssistantStep5-90cd4d62.js => InstallAssistantStep5-411e6e9d.js} (93%)
 rename web/settings/assets/{InstallAssistantStep6-8faa26be.js => InstallAssistantStep6-cd1941b1.js} (94%)
 rename web/settings/assets/{InstallAssistantStep7-a45c2a67.js => InstallAssistantStep7-6d705988.js} (93%)
 rename web/settings/assets/{InstallAssistantStep8-eb2f2d0a.js => InstallAssistantStep8-e7350c4d.js} (93%)
 rename web/settings/assets/{InstallAssistantStep9-6bf810df.js => InstallAssistantStep9-ac8d21eb.js} (91%)
 rename web/settings/assets/{InstallAssistantStepTemplate-bf2dcd11.js => InstallAssistantStepTemplate-e18733fc.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-a80080eb.js => InstantChargeConfig-252a508f.js} (96%)
 rename web/settings/assets/{LegalSettings-bebb1715.js => LegalSettings-f66efb7a.js} (97%)
 create mode 100644 web/settings/assets/LoadManagementConfig-ad848400.js
 delete mode 100644 web/settings/assets/LoadManagementConfig-bd1cf7d0.js
 rename web/settings/assets/{MqttBridgeConfig-f4caf6ad.js => MqttBridgeConfig-a79c288e.js} (99%)
 rename web/settings/assets/{OptionalComponents-555be33d.js => OptionalComponents-5a24a6aa.js} (99%)
 rename web/settings/assets/{PVChargeConfig-0c8008ce.js => PVChargeConfig-260d31b6.js} (99%)
 rename web/settings/assets/{ScheduledChargeConfig-71274181.js => ScheduledChargeConfig-b2a3d789.js} (97%)
 rename web/settings/assets/{Status-78365aec.js => Status-d562c100.js} (99%)
 rename web/settings/assets/{Support-ab239500.js => Support-56e00a88.js} (98%)
 rename web/settings/assets/{System-77ceec43.js => System-5f853f95.js} (98%)
 rename web/settings/assets/{TestingStore-89d6c156.js => TestingStore-5dd38b00.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-536957f1.js => TimeChargeConfig-7d17c070.js} (96%)
 delete mode 100644 web/settings/assets/VehicleConfig-0dfeda79.js
 create mode 100644 web/settings/assets/VehicleConfig-c67651ce.js
 create mode 100644 web/settings/assets/chargePoint-20a5e448.js
 rename web/settings/assets/{electricity_tariff-6c2d936c.js => electricity_tariff-b90a64df.js} (97%)
 rename web/settings/assets/{index-625b6e82.js => index-ba5cf04c.js} (56%)
 rename web/settings/assets/{vehicle-f7135917.js => vehicle-5eb1661e.js} (97%)

diff --git a/web/settings/assets/ChargeLog-95b9ca4e.js b/web/settings/assets/ChargeLog-582cb159.js
similarity index 99%
rename from web/settings/assets/ChargeLog-95b9ca4e.js
rename to web/settings/assets/ChargeLog-582cb159.js
index 45f53884b4..ee414842e7 100644
--- a/web/settings/assets/ChargeLog-95b9ca4e.js
+++ b/web/settings/assets/ChargeLog-582cb159.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-625b6e82.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-ba5cf04c.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},y=t=>(W("data-v-8607e7e7"),t=t(),F(),t),M={class:"chargeLog"},P={name:"chargeLogForm"},z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],K=["aria-valuenow"],J=["aria-valuenow"],G=["aria-valuenow"],H=["aria-valuenow"],Q={key:1,class:"td-center"},Y={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ce={class:"hide",ref:"downloadChargeLogLink"},he=y(()=>i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),ge={class:"td-end"},_e={class:"td-end"},ue={class:"td-end"},me={class:"td-end"};function pe(t,e,o,p,l,r){const C=h("openwb-base-text-input"),f=h("font-awesome-icon"),D=h("openwb-base-button-group-input"),m=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),b=h("openwb-base-alert"),L=h("vue3-table-lite"),N=h("openwb-base-click-button");return g(),_("div",M,[i("form",P,[d(v,{title:"Filter"},{default:s(()=>[d(C,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:l.currentMonth,modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())]},null,8,["max","modelValue"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),c(" Erweiterte Optionen ")]),default:s(()=>[d(D,{title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())]},null,8,["modelValue"]),d(m,{title:"Lademodus",multiple:"",options:r.chargeModeList,modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Ladepunkt",multiple:"",options:r.chargePointList,modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Fahrzeug",multiple:"",options:r.vehicleList,modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(q,{title:"ID-Tags",modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Tags als Filter verwendet werden. ")]),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,z)]),_:1}),r.chargeLogRead?(g(),_("div",O,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(g(),_("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:u({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:u({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:u({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G),i("div",{class:"progress-bar bg-success",role:"progressbar",style:u({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,H)],8,j)):(g(),_("div",Q,"-"))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Y,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(g(),_("div",le,[i("div",de,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[c(" Als CSV exportieren "),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ce,null,512)]),he,d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",ge,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",_e,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ue,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",me,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):V("",!0)])):(g(),I(b,{key:0,subtype:"info"},{default:s(()=>[c(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const qe=B(U,[["render",pe],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{qe as default};
diff --git a/web/settings/assets/ChargePointInstallation-6bdc7310.js b/web/settings/assets/ChargePointInstallation-6bdc7310.js
new file mode 100644
index 0000000000..05878b374d
--- /dev/null
+++ b/web/settings/assets/ChargePointInstallation-6bdc7310.js
@@ -0,0 +1 @@
+import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-ba5cf04c.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
diff --git a/web/settings/assets/ChargePointInstallation-9d7a4a26.js b/web/settings/assets/ChargePointInstallation-9d7a4a26.js
deleted file mode 100644
index ebf2f19874..0000000000
--- a/web/settings/assets/ChargePointInstallation-9d7a4a26.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as H,d as G,a0 as Q,A as X,a9 as Y,aa as K,K as ee,ab as te,F as ne,I as ae}from"./vendor-fortawesome-71546160.js";import{_ as B,C as oe}from"./index-625b6e82.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as h,k as l,l as m,A as k,N as o,y as i,z as v,D as n,x as p,a2 as D,a3 as M,J as A,K as I,B as b,q as F,a4 as N,P as ie,S as le,U as se}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const re={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},ue={key:1};function pe(e,a,s,P,c,u){const C=h("openwb-base-alert"),f=h("openwb-base-textarea");return l(),m("div",de,[Object.keys(s.configuration).length==0?(l(),k(C,{key:0,subtype:"info"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+v(s.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),m("div",ue,[n(C,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(s.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":a[0]||(a[0]=L=>u.updateConfiguration(L,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})]))])}const me=U(re,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ce={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function ge(e,a,s,P,c,u){const C=h("openwb-base-alert");return l(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[i(' Der Ladepunkt-Typ "'+v(s.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const fe=U(ce,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),be={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>B(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>B(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>B(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>B(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>B(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>B(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:me})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>B(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:fe})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},_e=p("hr",null,null,-1);function we(e,a,s,P,c,u){const C=h("openwb-base-heading");return l(),m(A,null,[n(C,null,{default:o(()=>[i(" Einstellungen für Ladepunkt "+v(s.moduleName),1)]),_:1}),(l(),k(M(u.myChargePointSettingsComponent),{configuration:s.configuration,chargePointId:s.chargePointId,chargePointType:s.chargePointType,"onUpdate:configuration":a[0]||(a[0]=f=>u.updateConfiguration(f))},null,40,["configuration","chargePointId","chargePointType"])),_e,n(C,null,{default:o(()=>[i(" Befehle für Ladepunkt "+v(s.moduleName),1)]),_:1}),(l(),k(M(u.myChargePointCommandsComponent),{configuration:s.configuration,chargePointId:s.chargePointId,chargePointType:s.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ke=U(be,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);H.add(G,Q,X,Y,K,ee,te);const ve={name:"OpenwbChargePointInstallationView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:ke},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[s,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[s]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let s=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+s].name;e.push({value:s,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let s=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:s}})},removeChargePointTemplateAutolockPlanModal(e,a,s){s.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,s){this.showChargePointTemplateAutolockPlanModal=!1,s=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(le("data-v-75fe5743"),e=e(),se(),e),Ce={class:"chargePointInstallation"},ye={name:"chargePointInstallationForm"},Pe={key:0},Ve=w(()=>p("hr",null,null,-1)),Le={key:1},Be=w(()=>p("hr",null,null,-1)),Te=w(()=>p("br",null,null,-1)),We=w(()=>p("br",null,null,-1)),Ae=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Ie={key:0},Ue={class:"col-1"},xe=w(()=>p("br",null,null,-1)),qe=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),ze=w(()=>p("hr",{class:"border-secondary"},null,-1)),Ee={key:0},De={key:1},Me=w(()=>p("hr",null,null,-1)),Fe={key:0},Ne=w(()=>p("hr",null,null,-1)),Oe=w(()=>p("br",null,null,-1)),je=w(()=>p("br",null,null,-1)),Re=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Ze={key:1},Je=w(()=>p("hr",null,null,-1)),$e=["onClick"],He={key:0},Ge={key:1},Qe={key:2},Xe={key:2};function Ye(e,a,s,P,c,u){const C=h("openwb-base-modal-dialog"),f=h("font-awesome-icon"),L=h("openwb-base-avatar"),V=h("openwb-base-text-input"),x=h("openwb-base-select-input"),O=h("openwb-charge-point-proxy"),T=h("openwb-base-heading"),y=h("openwb-base-button-group-input"),S=h("openwb-base-card"),j=h("openwb-base-click-button"),R=h("font-awesome-layers"),q=h("openwb-base-alert"),Z=h("openwb-base-array-input"),z=h("openwb-base-range-input"),J=h("openwb-base-submit-buttons");return l(),m(A,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=r=>u.removeChargePoint(c.modalChargePointIndex,r))},{default:o(()=>[i(' Wollen Sie den Ladepunkt "'+v(u.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=r=>u.removeChargePointTemplate(c.modalChargePointTemplateIndex,r))},{default:o(()=>[i(' Wollen Sie das Ladepunkt-Profil "'+v(u.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=r=>u.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,r))},{default:o(()=>[i(' Wollen Sie den Autolock Zeitplan "'+v(u.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",Ce,[p("form",ye,[n(S,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!s.installAssistantActive},{header:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),i(" Ladepunkte ")]),default:o(()=>[(l(!0),m(A,null,I(u.installedChargePoints,(r,d)=>(l(),k(S,{key:d,title:r.name+" (ID: "+r.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?b("",!0):(l(),k(L,{key:0,class:"bg-danger clickable",onClick:_=>u.removeChargePointModal(d,_)},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[d].type},null,8,["model-value"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),m("span",Pe,[n(x,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":e.$store.state.mqtt[d].template,"onUpdate:modelValue":t=>e.updateState(d,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):b("",!0),Ve,n(O,{chargePointId:r.id,chargePointType:e.$store.state.mqtt[d].type,moduleName:e.$store.state.mqtt[d].name,configuration:r.configuration,"onUpdate:configuration":t=>u.updateConfiguration(d,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),r.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),m("div",Le,[Be,n(T,null,{default:o(()=>[i("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(d,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_hw")},{help:o(()=>[i(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(T,null,{default:o(()=>[i(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":r.connected_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":r.phase_1,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_1")},{help:o(()=>[i(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),Te,i(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),We,i(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Ae,i(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Se,i(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):b("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(l(),m("hr",Ie)):b("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:u.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=r=>c.chargePointToAdd=r)},{append:o(()=>[p("span",Ue,[n(j,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:u.addChargePoint},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[i(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),xe,qe]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),ze,n(S,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(R,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(f,{"fixed-width":"",icon:["far","file"]}),n(f,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),i(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),k(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):b("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),m("div",Ee,[n(q,{subtype:"info"},{default:o(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),m("div",De,[(l(!0),m(A,null,I(u.chargePointTemplates,(r,d)=>(l(),k(S,{key:d,title:r.name+" (ID: "+u.getChargePointTemplateIndex(d)+")",collapsible:!0,collapsed:!0},N({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":r.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},N({_:2},[d.endsWith("/0")?{name:"help",fn:o(()=>[i(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),Me,n(T,null,{default:o(()=>[i(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(d,t,"disable_after_unplug")},{help:o(()=>[i(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!s.installAssistantActive?(l(),m("div",Fe,[r.disable_after_unplug?(l(),k(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":r.valid_tags,"onUpdate:modelValue":t=>e.updateState(d,t,"valid_tags")},{help:o(()=>[i(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):b("",!0)])):b("",!0),Ne,n(T,null,{default:o(()=>[i(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[i(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Oe,i(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen."),je,i(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Re,i(" beschrieben. ")]),_:1}),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":r.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":r.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),s.installAssistantActive?b("",!0):(l(),m("div",Ze,[Je,n(T,null,{default:o(()=>[i("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.active,"onUpdate:modelValue":t=>e.updateState(d,t,"autolock.active")},{help:o(()=>[i(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":r.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(d,t,"autolock.wait_for_charging_end")},{help:o(()=>[i(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(T,null,{actions:o(()=>[n(L,{class:"bg-success clickable",onClick:t=>u.addChargePointTemplateAutolockPlan(d,t)},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[i(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(l(!0),m(A,null,I(u.getChargePointTemplateAutolockPlans(d),(t,_)=>(l(),k(S,{key:_,title:t.name,collapsible:!0,collapsed:!0},{actions:o(g=>[g.collapsed==!0?(l(),m("span",{key:0,onClick:ie(W=>e.updateState(_,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(f,{"fixed-width":"",icon:["fas","clock"]}),i(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(l(),m("span",He,[n(f,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):b("",!0),t.frequency.selected=="daily"?(l(),m("span",Ge,[n(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):b("",!0),t.frequency.selected=="weekly"?(l(),m("span",Qe,[n(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):b("",!0)],10,$e)):b("",!0),g.collapsed==!1?(l(),k(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(d,_,W)},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):b("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":g=>e.updateState(_,g,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":g=>e.updateState(_,g,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":g=>e.updateState(_,g,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":g=>e.updateState(_,g,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":g=>e.updateState(_,g,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(l(),k(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":g=>e.updateState(_,g,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):b("",!0),t.frequency.selected=="once"?(l(),k(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":g=>e.updateState(_,g,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):b("",!0),t.frequency.selected=="weekly"?(l(),m("div",Xe,[(l(!0),m(A,null,I(e.weekdays,(g,W)=>(l(),k(y,{key:W,title:g,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":$=>e.updateState(_,$,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):b("",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?b("",!0):(l(),k(L,{key:0,class:"bg-danger clickable",onClick:_=>u.removeChargePointTemplateModal(d,_)},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(J,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=r=>e.$emit("save")),onReset:a[5]||(a[5]=r=>e.$emit("reset")),onDefaults:a[6]||(a[6]=r=>e.$emit("defaults"))})])])],64)}const st=U(ve,[["render",Ye],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{st as default};
diff --git a/web/settings/assets/Chart-b8b9286f.js b/web/settings/assets/Chart-3fbd17e3.js
similarity index 99%
rename from web/settings/assets/Chart-b8b9286f.js
rename to web/settings/assets/Chart-3fbd17e3.js
index f620710a45..3365f576e4 100644
--- a/web/settings/assets/Chart-b8b9286f.js
+++ b/web/settings/assets/Chart-3fbd17e3.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-625b6e82.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-ba5cf04c.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-86ffb07e.js b/web/settings/assets/CloudConfig-2dc63c4a.js
similarity index 99%
rename from web/settings/assets/CloudConfig-86ffb07e.js
rename to web/settings/assets/CloudConfig-2dc63c4a.js
index 3a5d935a75..a2560bdaf7 100644
--- a/web/settings/assets/CloudConfig-86ffb07e.js
+++ b/web/settings/assets/CloudConfig-2dc63c4a.js
@@ -1 +1 @@
-import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-625b6e82.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
+import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-ba5cf04c.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
diff --git a/web/settings/assets/DataManagement-9a695ef8.js b/web/settings/assets/DataManagement-8e5bac9a.js
similarity index 99%
rename from web/settings/assets/DataManagement-9a695ef8.js
rename to web/settings/assets/DataManagement-8e5bac9a.js
index 3b9ae9e503..a1ac278e57 100644
--- a/web/settings/assets/DataManagement-9a695ef8.js
+++ b/web/settings/assets/DataManagement-8e5bac9a.js
@@ -1 +1 @@
-import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-625b6e82.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as s,z as k,D as n,x as o,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,f,a,i){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[s(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[n(h,{subtype:"warning"},{default:l(()=>[s(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>i.updateConfiguration(y,"configuration"))},{help:l(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(h,{subtype:"info"},{default:l(()=>[o("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,f,a,i){const h=m("openwb-base-heading");return r(),b(O,null,[n(h,null,{default:l(()=>[s(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(i.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>i.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>i.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,f]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:f})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,f]of Object.entries(t))if(f==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(f=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),f(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),f(!1)})}else console.error("no file selected for upload"),f(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=o("h2",null,"Achtung!",-1),oe=o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),se={key:1},ie={name:"backupForm"},ae=o("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=o("hr",null,null,-1),ce=o("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},ge={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=o("hr",null,null,-1),Ce=o("br",null,null,-1),Be=o("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),De={key:0},Se={name:"dataMigrationForm"},Oe=o("br",null,null,-1),We=o("br",null,null,-1),Fe={class:"input-group"},Me={class:"input-group-prepend"},xe={class:"input-group-text"},Ae={class:"custom-file"},Te={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},Ve=["disabled"],ze={class:"row justify-content-center"},Re={class:"col-md-4 d-flex py-1 justify-content-center"},je={key:1,name:"resetForm"},He={class:"row justify-content-center"},Ee={class:"col-md-4 d-flex py-1 justify-content-center"};function Pe(t,e,u,f,a,i){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,n(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",se,[n(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,g;return[o("form",ie,[n(y,null,{default:l(()=>[s("Sicherung")]),_:1}),n(c,{subtype:"danger"},{default:l(()=>[s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n(c,{subtype:"info"},{default:l(()=>[s(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,s(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),o("div",le,[o("div",ue,[n(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[s(" Sicherung erstellen "),n(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,n(y,null,{default:l(()=>[s("Wiederherstellung")]),_:1}),n(c,{subtype:"danger"},{default:l(()=>[s(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o("div",pe,[o("div",me,[o("div",he,[n(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",be,[o("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>i.updateSelectedRestoreFile(d))},null,32),o("label",fe,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),o("div",ge,[o("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>i.uploadRestoreFile())},[s(" Hochladen "),n(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),o("div",ke,[o("div",ye,[n(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>i.restoreBackup())},{default:l(()=>[s(" Wiederherstellung starten "),n(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,n(y,null,{default:l(()=>[s(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),n(c,{subtype:"info"},{default:l(()=>[s(" Zwischen Mitternacht und 5:00 Uhr wird automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,s(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Be,s(" . ")]),_:1}),n(F,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>i.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(g=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&g.type?(r(),b("div",De,[n(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[s(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),n(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>i.sendSystemCommand("createCloudBackup",{}))}),n(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>i.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>i.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),n(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[o("form",Se,[n(c,{subtype:"info"},{default:l(()=>[s(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),n(c,{subtype:"danger"},{default:l(()=>[s(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),Oe,s(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),We,s(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),o("div",Fe,[o("div",Me,[o("div",xe,[n(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",Ae,[o("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>i.updateSelectedDataMigrationFile(p))},null,32),o("label",Te,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),o("div",Le,[o("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>i.uploadDataMigrationFile())},[s(" Hochladen "),n(_,{"fixed-width":"",icon:["fas","upload"]})],10,Ve)])]),n(y,null,{default:l(()=>[s("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[n(y,null,{default:l(()=>[s(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,g=>(r(),w(F,{key:g.key,title:g.label,options:i.getMigrationOptions(g.validTypes),modelValue:a.dataMigrationMapping[g.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[g.key]=d},I({_:2},[g.help?{name:"help",fn:l(()=>[s(k(g.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),o("div",ze,[o("div",Re,[n(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>i.dataMigration())},{default:l(()=>[s(" Datenübernahme starten "),n(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",je,[n(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[o("div",He,[o("div",Ee,[n(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>i.factoryReset())},{default:l(()=>[n(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),s(" Zurücksetzen "),n(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[n(c,{subtype:"danger"},{default:l(()=>[s(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Qe=W(ee,[["render",Pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Qe as default};
+import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-ba5cf04c.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as s,z as k,D as n,x as o,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,f,a,i){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[s(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[n(h,{subtype:"warning"},{default:l(()=>[s(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>i.updateConfiguration(y,"configuration"))},{help:l(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(h,{subtype:"info"},{default:l(()=>[o("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,f,a,i){const h=m("openwb-base-heading");return r(),b(O,null,[n(h,null,{default:l(()=>[s(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(i.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>i.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>i.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,f]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:f})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,f]of Object.entries(t))if(f==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(f=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),f(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),f(!1)})}else console.error("no file selected for upload"),f(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=o("h2",null,"Achtung!",-1),oe=o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),se={key:1},ie={name:"backupForm"},ae=o("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=o("hr",null,null,-1),ce=o("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},ge={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=o("hr",null,null,-1),Ce=o("br",null,null,-1),Be=o("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),De={key:0},Se={name:"dataMigrationForm"},Oe=o("br",null,null,-1),We=o("br",null,null,-1),Fe={class:"input-group"},Me={class:"input-group-prepend"},xe={class:"input-group-text"},Ae={class:"custom-file"},Te={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},Ve=["disabled"],ze={class:"row justify-content-center"},Re={class:"col-md-4 d-flex py-1 justify-content-center"},je={key:1,name:"resetForm"},He={class:"row justify-content-center"},Ee={class:"col-md-4 d-flex py-1 justify-content-center"};function Pe(t,e,u,f,a,i){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,n(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",se,[n(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,g;return[o("form",ie,[n(y,null,{default:l(()=>[s("Sicherung")]),_:1}),n(c,{subtype:"danger"},{default:l(()=>[s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n(c,{subtype:"info"},{default:l(()=>[s(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,s(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),o("div",le,[o("div",ue,[n(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[s(" Sicherung erstellen "),n(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,n(y,null,{default:l(()=>[s("Wiederherstellung")]),_:1}),n(c,{subtype:"danger"},{default:l(()=>[s(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o("div",pe,[o("div",me,[o("div",he,[n(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",be,[o("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>i.updateSelectedRestoreFile(d))},null,32),o("label",fe,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),o("div",ge,[o("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>i.uploadRestoreFile())},[s(" Hochladen "),n(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),o("div",ke,[o("div",ye,[n(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>i.restoreBackup())},{default:l(()=>[s(" Wiederherstellung starten "),n(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,n(y,null,{default:l(()=>[s(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),n(c,{subtype:"info"},{default:l(()=>[s(" Zwischen Mitternacht und 5:00 Uhr wird automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,s(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Be,s(" . ")]),_:1}),n(F,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>i.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(g=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&g.type?(r(),b("div",De,[n(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[s(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),n(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>i.sendSystemCommand("createCloudBackup",{}))}),n(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>i.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>i.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),n(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[o("form",Se,[n(c,{subtype:"info"},{default:l(()=>[s(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),n(c,{subtype:"danger"},{default:l(()=>[s(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),Oe,s(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),We,s(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),o("div",Fe,[o("div",Me,[o("div",xe,[n(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",Ae,[o("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>i.updateSelectedDataMigrationFile(p))},null,32),o("label",Te,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),o("div",Le,[o("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>i.uploadDataMigrationFile())},[s(" Hochladen "),n(_,{"fixed-width":"",icon:["fas","upload"]})],10,Ve)])]),n(y,null,{default:l(()=>[s("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[n(y,null,{default:l(()=>[s(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,g=>(r(),w(F,{key:g.key,title:g.label,options:i.getMigrationOptions(g.validTypes),modelValue:a.dataMigrationMapping[g.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[g.key]=d},I({_:2},[g.help?{name:"help",fn:l(()=>[s(k(g.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),o("div",ze,[o("div",Re,[n(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>i.dataMigration())},{default:l(()=>[s(" Datenübernahme starten "),n(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",je,[n(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[o("div",He,[o("div",Ee,[n(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>i.factoryReset())},{default:l(()=>[n(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),s(" Zurücksetzen "),n(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[n(c,{subtype:"danger"},{default:l(()=>[s(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Qe=W(ee,[["render",Pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Qe as default};
diff --git a/web/settings/assets/DebugConfig-7dd5be5a.js b/web/settings/assets/DebugConfig-c12bb15b.js
similarity index 98%
rename from web/settings/assets/DebugConfig-7dd5be5a.js
rename to web/settings/assets/DebugConfig-c12bb15b.js
index dac4c1212e..aae67c7f0b 100644
--- a/web/settings/assets/DebugConfig-7dd5be5a.js
+++ b/web/settings/assets/DebugConfig-c12bb15b.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-625b6e82.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-ba5cf04c.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),p=s("openwb-base-avatar"),m=s("openwb-base-card");return d(),w(m,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(p,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=f($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",mixins:[k],components:{OpenwbLogCard:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),p=s("openwb-base-alert"),m=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),_("div",z,[v("form",V,[i(m,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>[b(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')]),_:1},8,["model-value"]),i(p,{subtype:"warning"},{default:l(()=>[b(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')]),_:1})]),_:1}),i(c,{formName:"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),_(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=f(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-c98169ef.js b/web/settings/assets/GeneralChargeConfig-7e106509.js
similarity index 98%
rename from web/settings/assets/GeneralChargeConfig-c98169ef.js
rename to web/settings/assets/GeneralChargeConfig-7e106509.js
index 99afe0a657..49646c987e 100644
--- a/web/settings/assets/GeneralChargeConfig-c98169ef.js
+++ b/web/settings/assets/GeneralChargeConfig-7e106509.js
@@ -1 +1 @@
-import{_ as g,C as T}from"./index-625b6e82.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as s,l,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,d,v,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-textarea");return s(),l("div",q,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(d.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":d.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(d.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const O=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),U={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-6c2d936c.js"),["assets/electricity_tariff-6c2d936c.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:O})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function F(e,t,d,v,y,p){const u=o("openwb-base-heading");return s(),l(P,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(d.electricityTariff.name)+'" ',1)]),_:1}),(s(),k(V(p.myComponent),{electricityTariff:d.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const D=h(U,[["render",F],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),N={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(d=>d.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},I={class:"generalChargeConfig"},M={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,d,v,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return s(),l("div",I,[c("form",M,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),l("div",R,[n(u,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),l("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(s(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(s(),l("div",H,[n(u,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(s(),l("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),l("div",X,[n(u,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),l("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(u,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(s(),l("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(N,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
+import{_ as g,C as T}from"./index-ba5cf04c.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as s,l,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,d,v,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-textarea");return s(),l("div",q,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(d.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":d.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(d.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const O=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),U={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-b90a64df.js"),["assets/electricity_tariff-b90a64df.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:O})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function F(e,t,d,v,y,p){const u=o("openwb-base-heading");return s(),l(P,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(d.electricityTariff.name)+'" ',1)]),_:1}),(s(),k(V(p.myComponent),{electricityTariff:d.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const D=h(U,[["render",F],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),N={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(d=>d.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},I={class:"generalChargeConfig"},M={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,d,v,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return s(),l("div",I,[c("form",M,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),l("div",R,[n(u,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),l("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(s(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(s(),l("div",H,[n(u,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(s(),l("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),l("div",X,[n(u,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),l("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(u,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(s(),l("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(N,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
diff --git a/web/settings/assets/GeneralConfig-216681e8.js b/web/settings/assets/GeneralConfig-9cb055aa.js
similarity index 99%
rename from web/settings/assets/GeneralConfig-216681e8.js
rename to web/settings/assets/GeneralConfig-9cb055aa.js
index fc1cfe3827..d5cd906912 100644
--- a/web/settings/assets/GeneralConfig-216681e8.js
+++ b/web/settings/assets/GeneralConfig-9cb055aa.js
@@ -1 +1 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-625b6e82.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-ba5cf04c.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
diff --git a/web/settings/assets/HardwareInstallation-dffcdd26.js b/web/settings/assets/HardwareInstallation-b6072dfb.js
similarity index 99%
rename from web/settings/assets/HardwareInstallation-dffcdd26.js
rename to web/settings/assets/HardwareInstallation-b6072dfb.js
index 8920451266..d30efee257 100644
--- a/web/settings/assets/HardwareInstallation-dffcdd26.js
+++ b/web/settings/assets/HardwareInstallation-b6072dfb.js
@@ -1 +1 @@
-import{l as N,d as U,t as G,a7 as F,a0 as H,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-625b6e82.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,u as m,k as u,l as p,A as E,N as o,z as l,y as a,D as v,x as c,a2 as W,a3 as $,B as P,J as L,K as h,q as w,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,r,O,s,n){const T=m("openwb-base-alert"),g=m("openwb-base-textarea");return u(),p("div",oe,[Object.keys(r.configuration).length==0?(u(),E(T,{key:0,subtype:"info"},{default:o(()=>[r.componentType?(u(),p("span",ie,' Der Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",re,'Der Gerät-Typ "'+l(r.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(u(),p("div",ne,[v(T,{subtype:"warning"},{default:o(()=>[a(" Es wurde keine Konfigurationsseite für den "),r.componentType?(u(),p("span",ue,' Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",ve,'Geräte-Typ "'+l(r.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),v(g,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":i[0]||(i[0]=D=>n.updateConfiguration(D,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),v(T,{subtype:"info"},{default:o(()=>[c("pre",null,l(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const S=y(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-a7f7c6ed.js"),["assets/device-a7f7c6ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-6454a372.js"),["assets/device-6454a372.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-3069a051.js"),["assets/counter-3069a051.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-53c24f18.js"),["assets/external_inverter-53c24f18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-a7f7c6ed.js"),["assets/device-a7f7c6ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-6454a372.js"),["assets/device-6454a372.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,r,O,s,n){return u(),E($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":i[0]||(i[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=y(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,r){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:r}})},removeComponentModal(_,i,r,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:r},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(r=>r.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},A=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),ce={class:"hardwareInstallation"},Ee={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=A(()=>c("hr",null,null,-1)),Ae=A(()=>c("hr",null,null,-1)),De=A(()=>c("hr",null,null,-1)),Re=A(()=>c("hr",null,null,-1)),Oe={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=A(()=>c("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=A(()=>c("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=A(()=>c("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,r,O,s,n){const T=m("openwb-base-modal-dialog"),g=m("router-link"),D=m("openwb-base-alert"),V=m("font-awesome-icon"),f=m("openwb-base-avatar"),k=m("openwb-base-text-input"),C=m("openwb-config-proxy"),q=m("openwb-base-heading"),b=m("openwb-base-card"),x=m("openwb-base-click-button"),z=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return u(),p(L,null,[v(T,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:o(()=>[a(' Wollen Sie das Gerät "'+l(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),v(T,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:o(()=>[a(' Wollen Sie die Komponente "'+l(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",ce,[c("form",Ee,[r.installAssistantActive?P("",!0):(u(),E(D,{key:0,subtype:"info"},{default:o(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),v(g,{to:"/LoadManagementConfiguration"},{default:o(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),v(b,{title:"Geräte und Komponenten"},{default:o(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(u(),p("div",le,[v(D,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),p("div",Te,[(u(!0),p(L,null,h(n.installedDevices,(t,B)=>(u(),E(b,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:o(()=>[v(V,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+l(t.name),1)]),actions:o(d=>[d.collapsed?(u(),p("div",Ie,[(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),I=>(u(),E(f,{key:I.id,class:w("ml-1 bg-"+n.getComponentTypeClass(I.type))},{default:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(I.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(u(),E(f,{key:0,class:"bg-danger clickable",onClick:I=>n.removeDeviceModal(t.id,t.name,I)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,v(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>n.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,v(q,null,{default:o(()=>[a("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(t.id)?P("",!0):(u(),E(D,{key:0,subtype:"warning"},{default:o(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),(d,I)=>(u(),E(b,{key:d.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(d.type)},{header:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+l(d.name),1)]),actions:o(R=>[R.collapsed?P("",!0):(u(),E(f,{key:0,class:"bg-danger clickable",onClick:K=>n.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":R=>_.updateState(I,R,"name")},null,8,["model-value","onUpdate:modelValue"]),De,v(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":R=>n.updateConfiguration(I,R)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Re,n.getComponentList(t.type).length?(u(),E(z,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:o(()=>[c("span",Oe,[v(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>n.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:o(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(u(),E(D,{key:2,subtype:"info"},{default:o(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(u(),p("hr",Pe)):P("",!0),v(z,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:n.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=t=>s.deviceToAdd=t)},{append:o(()=>[c("span",Le,[v(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[ge,fe,be]),_:1},8,["options","model-value"])]))]),_:1}),v(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=t=>_.$emit("save")),onReset:i[2]||(i[2]=t=>_.$emit("reset")),onDefaults:i[3]||(i[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default};
+import{l as N,d as U,t as G,a7 as F,a0 as H,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-ba5cf04c.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,u as m,k as u,l as p,A as E,N as o,z as l,y as a,D as v,x as c,a2 as W,a3 as $,B as P,J as L,K as h,q as w,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,r,O,s,n){const T=m("openwb-base-alert"),g=m("openwb-base-textarea");return u(),p("div",oe,[Object.keys(r.configuration).length==0?(u(),E(T,{key:0,subtype:"info"},{default:o(()=>[r.componentType?(u(),p("span",ie,' Der Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",re,'Der Gerät-Typ "'+l(r.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(u(),p("div",ne,[v(T,{subtype:"warning"},{default:o(()=>[a(" Es wurde keine Konfigurationsseite für den "),r.componentType?(u(),p("span",ue,' Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",ve,'Geräte-Typ "'+l(r.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),v(g,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":i[0]||(i[0]=D=>n.updateConfiguration(D,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),v(T,{subtype:"info"},{default:o(()=>[c("pre",null,l(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const S=y(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-a7f7c6ed.js"),["assets/device-a7f7c6ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-6454a372.js"),["assets/device-6454a372.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-3069a051.js"),["assets/counter-3069a051.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-53c24f18.js"),["assets/external_inverter-53c24f18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-a7f7c6ed.js"),["assets/device-a7f7c6ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-6454a372.js"),["assets/device-6454a372.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,r,O,s,n){return u(),E($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":i[0]||(i[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=y(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,r){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:r}})},removeComponentModal(_,i,r,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:r},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(r=>r.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},A=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),ce={class:"hardwareInstallation"},Ee={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=A(()=>c("hr",null,null,-1)),Ae=A(()=>c("hr",null,null,-1)),De=A(()=>c("hr",null,null,-1)),Re=A(()=>c("hr",null,null,-1)),Oe={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=A(()=>c("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=A(()=>c("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=A(()=>c("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,r,O,s,n){const T=m("openwb-base-modal-dialog"),g=m("router-link"),D=m("openwb-base-alert"),V=m("font-awesome-icon"),f=m("openwb-base-avatar"),k=m("openwb-base-text-input"),C=m("openwb-config-proxy"),q=m("openwb-base-heading"),b=m("openwb-base-card"),x=m("openwb-base-click-button"),z=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return u(),p(L,null,[v(T,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:o(()=>[a(' Wollen Sie das Gerät "'+l(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),v(T,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:o(()=>[a(' Wollen Sie die Komponente "'+l(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",ce,[c("form",Ee,[r.installAssistantActive?P("",!0):(u(),E(D,{key:0,subtype:"info"},{default:o(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),v(g,{to:"/LoadManagementConfiguration"},{default:o(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),v(b,{title:"Geräte und Komponenten"},{default:o(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(u(),p("div",le,[v(D,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),p("div",Te,[(u(!0),p(L,null,h(n.installedDevices,(t,B)=>(u(),E(b,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:o(()=>[v(V,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+l(t.name),1)]),actions:o(d=>[d.collapsed?(u(),p("div",Ie,[(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),I=>(u(),E(f,{key:I.id,class:w("ml-1 bg-"+n.getComponentTypeClass(I.type))},{default:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(I.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(u(),E(f,{key:0,class:"bg-danger clickable",onClick:I=>n.removeDeviceModal(t.id,t.name,I)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,v(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>n.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,v(q,null,{default:o(()=>[a("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(t.id)?P("",!0):(u(),E(D,{key:0,subtype:"warning"},{default:o(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),(d,I)=>(u(),E(b,{key:d.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(d.type)},{header:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+l(d.name),1)]),actions:o(R=>[R.collapsed?P("",!0):(u(),E(f,{key:0,class:"bg-danger clickable",onClick:K=>n.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":R=>_.updateState(I,R,"name")},null,8,["model-value","onUpdate:modelValue"]),De,v(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":R=>n.updateConfiguration(I,R)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Re,n.getComponentList(t.type).length?(u(),E(z,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:o(()=>[c("span",Oe,[v(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>n.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:o(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(u(),E(D,{key:2,subtype:"info"},{default:o(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(u(),p("hr",Pe)):P("",!0),v(z,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:n.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=t=>s.deviceToAdd=t)},{append:o(()=>[c("span",Le,[v(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[ge,fe,be]),_:1},8,["options","model-value"])]))]),_:1}),v(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=t=>_.$emit("save")),onReset:i[2]||(i[2]=t=>_.$emit("reset")),onDefaults:i[3]||(i[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default};
diff --git a/web/settings/assets/InstallAssistant-fcd9b404.js b/web/settings/assets/InstallAssistant-3b33de2f.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-fcd9b404.js
rename to web/settings/assets/InstallAssistant-3b33de2f.js
index d8e5c069ee..b96c26414b 100644
--- a/web/settings/assets/InstallAssistant-fcd9b404.js
+++ b/web/settings/assets/InstallAssistant-3b33de2f.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-625b6e82.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-bf5662ea.js"),["assets/InstallAssistantStep0-bf5662ea.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-2ce0f1e2.js"),["assets/InstallAssistantStep1-2ce0f1e2.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-9a695ef8.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-978add30.js"),["assets/InstallAssistantStep10-978add30.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-425e8e49.js"),["assets/InstallAssistantStep2-425e8e49.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-77ceec43.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-44132528.js"),["assets/InstallAssistantStep3-44132528.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-216681e8.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-e9fb5b4d.js"),["assets/InstallAssistantStep4-e9fb5b4d.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-9d7a4a26.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-90cd4d62.js"),["assets/InstallAssistantStep5-90cd4d62.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-dffcdd26.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-8faa26be.js"),["assets/InstallAssistantStep6-8faa26be.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-9d7a4a26.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-a45c2a67.js"),["assets/InstallAssistantStep7-a45c2a67.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-bd1cf7d0.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-eb2f2d0a.js"),["assets/InstallAssistantStep8-eb2f2d0a.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-0dfeda79.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-6bf810df.js"),["assets/InstallAssistantStep9-6bf810df.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-9a695ef8.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-bf2dcd11.js"),["assets/InstallAssistantStepTemplate-bf2dcd11.js","assets/index-625b6e82.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-ba5cf04c.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-00bfcb75.js"),["assets/InstallAssistantStep0-00bfcb75.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-e96672e3.js"),["assets/InstallAssistantStep1-e96672e3.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-8e5bac9a.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-509dd8d5.js"),["assets/InstallAssistantStep10-509dd8d5.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-d28f6b53.js"),["assets/InstallAssistantStep2-d28f6b53.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-5f853f95.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-0b86cf0f.js"),["assets/InstallAssistantStep3-0b86cf0f.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-9cb055aa.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-cb68c0eb.js"),["assets/InstallAssistantStep4-cb68c0eb.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-6bdc7310.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-411e6e9d.js"),["assets/InstallAssistantStep5-411e6e9d.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-b6072dfb.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-cd1941b1.js"),["assets/InstallAssistantStep6-cd1941b1.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-6bdc7310.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-6d705988.js"),["assets/InstallAssistantStep7-6d705988.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-ad848400.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-e7350c4d.js"),["assets/InstallAssistantStep8-e7350c4d.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-c67651ce.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-ac8d21eb.js"),["assets/InstallAssistantStep9-ac8d21eb.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-8e5bac9a.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-e18733fc.js"),["assets/InstallAssistantStepTemplate-e18733fc.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-bf5662ea.js b/web/settings/assets/InstallAssistantStep0-00bfcb75.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-bf5662ea.js
rename to web/settings/assets/InstallAssistantStep0-00bfcb75.js
index 0317e59e63..9139f6b88d 100644
--- a/web/settings/assets/InstallAssistantStep0-bf5662ea.js
+++ b/web/settings/assets/InstallAssistantStep0-00bfcb75.js
@@ -1 +1 @@
-import{C as d}from"./index-625b6e82.js";import u from"./InstallAssistantStepTemplate-bf2dcd11.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
+import{C as d}from"./index-ba5cf04c.js";import u from"./InstallAssistantStepTemplate-e18733fc.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
diff --git a/web/settings/assets/InstallAssistantStep1-2ce0f1e2.js b/web/settings/assets/InstallAssistantStep1-e96672e3.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep1-2ce0f1e2.js
rename to web/settings/assets/InstallAssistantStep1-e96672e3.js
index ea923a45f7..ed680ef5ab 100644
--- a/web/settings/assets/InstallAssistantStep1-2ce0f1e2.js
+++ b/web/settings/assets/InstallAssistantStep1-e96672e3.js
@@ -1 +1 @@
-import{C as m}from"./index-625b6e82.js";import p from"./InstallAssistantStepTemplate-bf2dcd11.js";import l from"./DataManagement-9a695ef8.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
+import{C as m}from"./index-ba5cf04c.js";import p from"./InstallAssistantStepTemplate-e18733fc.js";import l from"./DataManagement-8e5bac9a.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
diff --git a/web/settings/assets/InstallAssistantStep10-978add30.js b/web/settings/assets/InstallAssistantStep10-509dd8d5.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-978add30.js
rename to web/settings/assets/InstallAssistantStep10-509dd8d5.js
index f3e47a174e..51a5ce5df4 100644
--- a/web/settings/assets/InstallAssistantStep10-978add30.js
+++ b/web/settings/assets/InstallAssistantStep10-509dd8d5.js
@@ -1 +1 @@
-import{C as i}from"./index-625b6e82.js";import a from"./InstallAssistantStepTemplate-bf2dcd11.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
+import{C as i}from"./index-ba5cf04c.js";import a from"./InstallAssistantStepTemplate-e18733fc.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
diff --git a/web/settings/assets/InstallAssistantStep2-425e8e49.js b/web/settings/assets/InstallAssistantStep2-d28f6b53.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-425e8e49.js
rename to web/settings/assets/InstallAssistantStep2-d28f6b53.js
index 159707c4a9..b06c2ae48e 100644
--- a/web/settings/assets/InstallAssistantStep2-425e8e49.js
+++ b/web/settings/assets/InstallAssistantStep2-d28f6b53.js
@@ -1 +1 @@
-import{C as d}from"./index-625b6e82.js";import p from"./InstallAssistantStepTemplate-bf2dcd11.js";import l from"./System-77ceec43.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
+import{C as d}from"./index-ba5cf04c.js";import p from"./InstallAssistantStepTemplate-e18733fc.js";import l from"./System-5f853f95.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep3-44132528.js b/web/settings/assets/InstallAssistantStep3-0b86cf0f.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep3-44132528.js
rename to web/settings/assets/InstallAssistantStep3-0b86cf0f.js
index ad79423bdc..a01d84acce 100644
--- a/web/settings/assets/InstallAssistantStep3-44132528.js
+++ b/web/settings/assets/InstallAssistantStep3-0b86cf0f.js
@@ -1 +1 @@
-import{C as d}from"./index-625b6e82.js";import p from"./InstallAssistantStepTemplate-bf2dcd11.js";import m from"./GeneralConfig-216681e8.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
+import{C as d}from"./index-ba5cf04c.js";import p from"./InstallAssistantStepTemplate-e18733fc.js";import m from"./GeneralConfig-9cb055aa.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep4-e9fb5b4d.js b/web/settings/assets/InstallAssistantStep4-cb68c0eb.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep4-e9fb5b4d.js
rename to web/settings/assets/InstallAssistantStep4-cb68c0eb.js
index e0c4233697..5cfa92012b 100644
--- a/web/settings/assets/InstallAssistantStep4-e9fb5b4d.js
+++ b/web/settings/assets/InstallAssistantStep4-cb68c0eb.js
@@ -1 +1 @@
-import{C as l}from"./index-625b6e82.js";import p from"./InstallAssistantStepTemplate-bf2dcd11.js";import u from"./ChargePointInstallation-9d7a4a26.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
+import{C as l}from"./index-ba5cf04c.js";import p from"./InstallAssistantStepTemplate-e18733fc.js";import u from"./ChargePointInstallation-6bdc7310.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
diff --git a/web/settings/assets/InstallAssistantStep5-90cd4d62.js b/web/settings/assets/InstallAssistantStep5-411e6e9d.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep5-90cd4d62.js
rename to web/settings/assets/InstallAssistantStep5-411e6e9d.js
index 49a21437b2..ae22575465 100644
--- a/web/settings/assets/InstallAssistantStep5-90cd4d62.js
+++ b/web/settings/assets/InstallAssistantStep5-411e6e9d.js
@@ -1 +1 @@
-import{C as l}from"./index-625b6e82.js";import m from"./InstallAssistantStepTemplate-bf2dcd11.js";import u from"./HardwareInstallation-dffcdd26.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
+import{C as l}from"./index-ba5cf04c.js";import m from"./InstallAssistantStepTemplate-e18733fc.js";import u from"./HardwareInstallation-b6072dfb.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstallAssistantStep6-8faa26be.js b/web/settings/assets/InstallAssistantStep6-cd1941b1.js
similarity index 94%
rename from web/settings/assets/InstallAssistantStep6-8faa26be.js
rename to web/settings/assets/InstallAssistantStep6-cd1941b1.js
index 82b7b3a0f6..3e8739e8fe 100644
--- a/web/settings/assets/InstallAssistantStep6-8faa26be.js
+++ b/web/settings/assets/InstallAssistantStep6-cd1941b1.js
@@ -1 +1 @@
-import{C as l}from"./index-625b6e82.js";import u from"./InstallAssistantStepTemplate-bf2dcd11.js";import p from"./ChargePointInstallation-9d7a4a26.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
+import{C as l}from"./index-ba5cf04c.js";import u from"./InstallAssistantStepTemplate-e18733fc.js";import p from"./ChargePointInstallation-6bdc7310.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep7-a45c2a67.js b/web/settings/assets/InstallAssistantStep7-6d705988.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-a45c2a67.js
rename to web/settings/assets/InstallAssistantStep7-6d705988.js
index 545e39fdc8..88925e2996 100644
--- a/web/settings/assets/InstallAssistantStep7-a45c2a67.js
+++ b/web/settings/assets/InstallAssistantStep7-6d705988.js
@@ -1 +1 @@
-import{C as l}from"./index-625b6e82.js";import m from"./InstallAssistantStepTemplate-bf2dcd11.js";import p from"./LoadManagementConfig-bd1cf7d0.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
+import{C as l}from"./index-ba5cf04c.js";import m from"./InstallAssistantStepTemplate-e18733fc.js";import p from"./LoadManagementConfig-ad848400.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep8-eb2f2d0a.js b/web/settings/assets/InstallAssistantStep8-e7350c4d.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep8-eb2f2d0a.js
rename to web/settings/assets/InstallAssistantStep8-e7350c4d.js
index 1f42c59085..6a6ef2130b 100644
--- a/web/settings/assets/InstallAssistantStep8-eb2f2d0a.js
+++ b/web/settings/assets/InstallAssistantStep8-e7350c4d.js
@@ -1 +1 @@
-import{C as l}from"./index-625b6e82.js";import u from"./InstallAssistantStepTemplate-bf2dcd11.js";import m from"./VehicleConfig-0dfeda79.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
+import{C as l}from"./index-ba5cf04c.js";import u from"./InstallAssistantStepTemplate-e18733fc.js";import m from"./VehicleConfig-c67651ce.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep9-6bf810df.js b/web/settings/assets/InstallAssistantStep9-ac8d21eb.js
similarity index 91%
rename from web/settings/assets/InstallAssistantStep9-6bf810df.js
rename to web/settings/assets/InstallAssistantStep9-ac8d21eb.js
index 3a232824ee..25fb00005d 100644
--- a/web/settings/assets/InstallAssistantStep9-6bf810df.js
+++ b/web/settings/assets/InstallAssistantStep9-ac8d21eb.js
@@ -1 +1 @@
-import{C as l}from"./index-625b6e82.js";import p from"./InstallAssistantStepTemplate-bf2dcd11.js";import u from"./DataManagement-9a695ef8.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
+import{C as l}from"./index-ba5cf04c.js";import p from"./InstallAssistantStepTemplate-e18733fc.js";import u from"./DataManagement-8e5bac9a.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-bf2dcd11.js b/web/settings/assets/InstallAssistantStepTemplate-e18733fc.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-bf2dcd11.js
rename to web/settings/assets/InstallAssistantStepTemplate-e18733fc.js
index 35266fec6d..bf781adef7 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-bf2dcd11.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-e18733fc.js
@@ -1 +1 @@
-import{C as v}from"./index-625b6e82.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
+import{C as v}from"./index-ba5cf04c.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstantChargeConfig-a80080eb.js b/web/settings/assets/InstantChargeConfig-252a508f.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-a80080eb.js
rename to web/settings/assets/InstantChargeConfig-252a508f.js
index 73a0ec689b..22bafa5227 100644
--- a/web/settings/assets/InstantChargeConfig-a80080eb.js
+++ b/web/settings/assets/InstantChargeConfig-252a508f.js
@@ -1 +1 @@
-import{C as l}from"./index-625b6e82.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-ba5cf04c.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-bebb1715.js b/web/settings/assets/LegalSettings-f66efb7a.js
similarity index 97%
rename from web/settings/assets/LegalSettings-bebb1715.js
rename to web/settings/assets/LegalSettings-f66efb7a.js
index a00ed47beb..e6cec05eab 100644
--- a/web/settings/assets/LegalSettings-bebb1715.js
+++ b/web/settings/assets/LegalSettings-f66efb7a.js
@@ -1 +1 @@
-import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-625b6e82.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
+import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-ba5cf04c.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
diff --git a/web/settings/assets/LoadManagementConfig-ad848400.js b/web/settings/assets/LoadManagementConfig-ad848400.js
new file mode 100644
index 0000000000..435a214561
--- /dev/null
+++ b/web/settings/assets/LoadManagementConfig-ad848400.js
@@ -0,0 +1 @@
+import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-ba5cf04c.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as r,N as i,y as s,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht ode nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[r(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[r(h,{subtype:"info"},{default:i(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[r(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),r(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[s(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,s(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),r(f,null,{default:i(()=>[s(" Vorhandene Zählermodule ")]),_:1}),r(h,{subtype:"info"},{default:i(()=>[s(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,s(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[r(b,{"fixed-width":"",icon:["fas","gauge-high"]}),s(" "+W(n.name),1)]),default:i(()=>[r(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[s(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[s(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[s(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[s(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),r(f,null,{default:i(()=>[s(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[r(b,{"fixed-width":"",icon:["fas","solar-panel"]}),s(" "+W(n.name),1)]),default:i(()=>[r(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[s(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),r(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[r(h,{subtype:"info"},{default:i(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[r(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[s(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,s(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,s(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,s(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),r(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
diff --git a/web/settings/assets/LoadManagementConfig-bd1cf7d0.js b/web/settings/assets/LoadManagementConfig-bd1cf7d0.js
deleted file mode 100644
index 8528b5e1d9..0000000000
--- a/web/settings/assets/LoadManagementConfig-bd1cf7d0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as S,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-625b6e82.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as M,u as l,k as u,l as m,x as d,D as s,N as r,y as i,J as _,K as v,A as w,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(C,x);const Z={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/reserve_for_not_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},q={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht laden, im Lastmanagement berücksichtigt werden, wird für diese der Fahrzeug-Mindeststrom bei vorliegender Ladefreigabe reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),N=d("br",null,null,-1),H={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),y=l("sortable-list"),z=l("openwb-base-submit-buttons");return u(),m("div",q,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Nicht-ladende Fahrzeuge",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/reserve_for_not_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/reserve_for_not_charging",n))},{help:r(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:r(()=>[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:r(()=>[i(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),N,i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,v(c.counterConfigs,n=>(u(),w(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+W(n.name),1)]),default:r(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[i(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,v(c.inverterConfigs,n=>(u(),w(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+W(n.name),1)]),default:r(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",H,[s(h,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(y,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:r(()=>[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(z,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const re=M(Z,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default};
diff --git a/web/settings/assets/MqttBridgeConfig-f4caf6ad.js b/web/settings/assets/MqttBridgeConfig-a79c288e.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-f4caf6ad.js
rename to web/settings/assets/MqttBridgeConfig-a79c288e.js
index 14ab0b7dfa..f43d71bfef 100644
--- a/web/settings/assets/MqttBridgeConfig-f4caf6ad.js
+++ b/web/settings/assets/MqttBridgeConfig-a79c288e.js
@@ -1 +1 @@
-import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-625b6e82.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
+import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-ba5cf04c.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
diff --git a/web/settings/assets/OptionalComponents-555be33d.js b/web/settings/assets/OptionalComponents-5a24a6aa.js
similarity index 99%
rename from web/settings/assets/OptionalComponents-555be33d.js
rename to web/settings/assets/OptionalComponents-5a24a6aa.js
index ed7be1caca..07ca5200f2 100644
--- a/web/settings/assets/OptionalComponents-555be33d.js
+++ b/web/settings/assets/OptionalComponents-5a24a6aa.js
@@ -1,2 +1,2 @@
-import{_ as $,C}from"./index-625b6e82.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as z,X as O,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as _,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function A(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),_(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>m.updateConfiguration(g,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const j=y(F,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(O,V);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:j})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),_(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen. Das Fahrzeug wird erst nach dem Anstecken zugeordnet."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
+import{_ as $,C}from"./index-ba5cf04c.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as z,X as O,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as _,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function A(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),_(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>m.updateConfiguration(g,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const j=y(F,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(O,V);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:j})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),_(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen. Das Fahrzeug wird erst nach dem Anstecken zugeordnet."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
 `)},{help:o(()=>[a(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(b,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/optional/int_display/active",i)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[a(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",te,[n(b,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/optional/int_display/rotation",i)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ne,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),oe,n(T,null,{default:o(()=>[a(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/optional/int_display/standby",i)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",ae,[ie,n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",se,[le,n(b,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/optional/int_display/only_local_charge_points",i)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[a(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),pe,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",re,[n(D,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=i=>m.updateSelectedDisplayTheme(i))},{help:o(()=>[a(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),_(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=i=>m.updateConfiguration("openWB/optional/int_display/theme",i))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=i=>e.$emit("save")),onReset:t[8]||(t[8]=i=>e.$emit("reset")),onDefaults:t[9]||(t[9]=i=>e.$emit("defaults"))})])])}const ye=y(H,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{ye as default};
diff --git a/web/settings/assets/PVChargeConfig-0c8008ce.js b/web/settings/assets/PVChargeConfig-260d31b6.js
similarity index 99%
rename from web/settings/assets/PVChargeConfig-0c8008ce.js
rename to web/settings/assets/PVChargeConfig-260d31b6.js
index 782d3c8c2e..a6d9e75ad7 100644
--- a/web/settings/assets/PVChargeConfig-0c8008ce.js
+++ b/web/settings/assets/PVChargeConfig-260d31b6.js
@@ -1 +1 @@
-import{C as B}from"./index-625b6e82.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
+import{C as B}from"./index-ba5cf04c.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-71274181.js b/web/settings/assets/ScheduledChargeConfig-b2a3d789.js
similarity index 97%
rename from web/settings/assets/ScheduledChargeConfig-71274181.js
rename to web/settings/assets/ScheduledChargeConfig-b2a3d789.js
index 34da84c663..67e8fa5642 100644
--- a/web/settings/assets/ScheduledChargeConfig-71274181.js
+++ b/web/settings/assets/ScheduledChargeConfig-b2a3d789.js
@@ -1 +1 @@
-import{C as p}from"./index-625b6e82.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
+import{C as p}from"./index-ba5cf04c.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
diff --git a/web/settings/assets/Status-78365aec.js b/web/settings/assets/Status-d562c100.js
similarity index 99%
rename from web/settings/assets/Status-78365aec.js
rename to web/settings/assets/Status-d562c100.js
index 708ef24277..4d11dde139 100644
--- a/web/settings/assets/Status-78365aec.js
+++ b/web/settings/assets/Status-d562c100.js
@@ -1 +1 @@
-import{C as y}from"./index-625b6e82.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
+import{C as y}from"./index-ba5cf04c.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
diff --git a/web/settings/assets/Support-ab239500.js b/web/settings/assets/Support-56e00a88.js
similarity index 98%
rename from web/settings/assets/Support-ab239500.js
rename to web/settings/assets/Support-56e00a88.js
index 8d6dd57034..d46ab0c09b 100644
--- a/web/settings/assets/Support-ab239500.js
+++ b/web/settings/assets/Support-56e00a88.js
@@ -1 +1 @@
-import{l as w,g as y,F as V}from"./vendor-fortawesome-71546160.js";import{C as B}from"./index-625b6e82.js";import{_ as v,u as a,k as l,l as c,x as r,A as h,N as t,D as s,a4 as F,B as g,y as e,q as x}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";w.add(y);const z={name:"OpenwbSupportView",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},C={class:"support"},A={name:"supportForm"},q={key:1},N={key:0},W=r("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stellen Sie beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),E=r("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),L=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),U={class:"row justify-content-center"};function G(d,o,T,H,n,_){const p=a("router-link"),u=a("openwb-base-alert"),f=a("FontAwesomeIcon"),b=a("openwb-base-text-input"),m=a("openwb-base-textarea"),S=a("openwb-base-click-button"),k=a("openwb-base-card"),D=a("font-awesome-icon");return l(),c("div",C,[r("form",A,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),h(u,{key:0,subtype:"danger"},{default:t(()=>[e(" Sie müssen der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(l(),c("div",q,[s(u,{subtype:"success"},{default:t(()=>[e(" Sie haben der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und können Systemberichte senden. ")]),_:1}),s(k,{title:"Systembericht"},F({default:t(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(l(),c("div",N,[s(u,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lesen Sie den Hilfetext, der durch Klick auf das "),s(f,{icon:["far","question-circle"]}),e(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),W,M,E,L])]),_:1}),s(b,{title:"E-Mail",required:"",subtype:"email",modelValue:n.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>n.sendDebugData.email=i)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(b,{title:"openWB Seriennummer",required:"",modelValue:n.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>n.sendDebugData.serialNumber=i)},{help:t(()=>[e(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),s(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>n.sendDebugData.installedComponents=i)},{help:t(()=>[e(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),s(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>n.sendDebugData.vehicles=i)},{help:t(()=>[e(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),s(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>n.sendDebugData.message=i)},null,8,["modelValue"])])):g("",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",U,[s(S,{class:x(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?g("",!0):(l(),h(u,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),s(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(z,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default};
+import{l as w,g as y,F as V}from"./vendor-fortawesome-71546160.js";import{C as B}from"./index-ba5cf04c.js";import{_ as v,u as a,k as l,l as c,x as r,A as h,N as t,D as s,a4 as F,B as g,y as e,q as x}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";w.add(y);const z={name:"OpenwbSupportView",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},C={class:"support"},A={name:"supportForm"},q={key:1},N={key:0},W=r("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stellen Sie beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),E=r("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),L=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),U={class:"row justify-content-center"};function G(d,o,T,H,n,_){const p=a("router-link"),u=a("openwb-base-alert"),f=a("FontAwesomeIcon"),b=a("openwb-base-text-input"),m=a("openwb-base-textarea"),S=a("openwb-base-click-button"),k=a("openwb-base-card"),D=a("font-awesome-icon");return l(),c("div",C,[r("form",A,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),h(u,{key:0,subtype:"danger"},{default:t(()=>[e(" Sie müssen der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(l(),c("div",q,[s(u,{subtype:"success"},{default:t(()=>[e(" Sie haben der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und können Systemberichte senden. ")]),_:1}),s(k,{title:"Systembericht"},F({default:t(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(l(),c("div",N,[s(u,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lesen Sie den Hilfetext, der durch Klick auf das "),s(f,{icon:["far","question-circle"]}),e(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),W,M,E,L])]),_:1}),s(b,{title:"E-Mail",required:"",subtype:"email",modelValue:n.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>n.sendDebugData.email=i)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(b,{title:"openWB Seriennummer",required:"",modelValue:n.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>n.sendDebugData.serialNumber=i)},{help:t(()=>[e(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),s(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>n.sendDebugData.installedComponents=i)},{help:t(()=>[e(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),s(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>n.sendDebugData.vehicles=i)},{help:t(()=>[e(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),s(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>n.sendDebugData.message=i)},null,8,["modelValue"])])):g("",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",U,[s(S,{class:x(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?g("",!0):(l(),h(u,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),s(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(z,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default};
diff --git a/web/settings/assets/System-77ceec43.js b/web/settings/assets/System-5f853f95.js
similarity index 98%
rename from web/settings/assets/System-77ceec43.js
rename to web/settings/assets/System-5f853f95.js
index d3a7a2a6ed..ac04063d3d 100644
--- a/web/settings/assets/System-77ceec43.js
+++ b/web/settings/assets/System-5f853f95.js
@@ -1 +1 @@
-import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-625b6e82.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
+import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-ba5cf04c.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
diff --git a/web/settings/assets/TestingStore-89d6c156.js b/web/settings/assets/TestingStore-5dd38b00.js
similarity index 99%
rename from web/settings/assets/TestingStore-89d6c156.js
rename to web/settings/assets/TestingStore-5dd38b00.js
index bb0e9900c6..2c50c7f845 100644
--- a/web/settings/assets/TestingStore-89d6c156.js
+++ b/web/settings/assets/TestingStore-5dd38b00.js
@@ -1 +1 @@
-import{C as V}from"./index-625b6e82.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
+import{C as V}from"./index-ba5cf04c.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
diff --git a/web/settings/assets/TimeChargeConfig-536957f1.js b/web/settings/assets/TimeChargeConfig-7d17c070.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-536957f1.js
rename to web/settings/assets/TimeChargeConfig-7d17c070.js
index 46570e69e9..d144bb4156 100644
--- a/web/settings/assets/TimeChargeConfig-536957f1.js
+++ b/web/settings/assets/TimeChargeConfig-7d17c070.js
@@ -1 +1 @@
-import{C as l}from"./index-625b6e82.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-ba5cf04c.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-0dfeda79.js b/web/settings/assets/VehicleConfig-0dfeda79.js
deleted file mode 100644
index 5ae8fce9ce..0000000000
--- a/web/settings/assets/VehicleConfig-0dfeda79.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as H,d as j,a0 as J,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as C,C as oe}from"./index-625b6e82.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as x,u as k,k as r,l as c,A as v,N as a,y as l,z as V,D as n,x as h,a2 as re,a3 as ue,J as L,B as m,K as E,a4 as q,P as N,q as I,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,o,s,F,_,g){const P=k("openwb-base-alert"),b=k("openwb-base-textarea");return r(),c("div",he,[Object.keys(s.configuration).length==0?(r(),v(P,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+V(s.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(P,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+V(s.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":s.configuration,"onUpdate:modelValue":o[0]||(o[0]=U=>g.updateConfiguration(U,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(P,{subtype:"info"},{default:a(()=>[h("pre",null,V(JSON.stringify(s.configuration,void 0,2)),1)]),_:1})]))])}const be=x(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>C(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>C(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>C(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>C(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>C(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>C(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>C(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>C(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>C(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>C(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>C(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>C(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>C(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>C(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>C(()=>import("./vehicle-f7135917.js"),["assets/vehicle-f7135917.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-625b6e82.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>C(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>C(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,o,s,F,_,g){const P=k("openwb-base-heading");return r(),c(L,null,[n(P,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+V(s.vehicle.name)+'" ',1)]),_:1}),(r(),v(ue(g.myComponent),{vehicleId:s.vehicleId,vehicle:s.vehicle,configuration:s.vehicle.configuration,vehicleType:s.vehicle.type,"onUpdate:configuration":o[0]||(o[0]=b=>g.updateConfiguration(b))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=x(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);H.add(j,J,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(o=>{let s=parseInt(o.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+s].name;e.push({value:s,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(o=>{let s=parseInt(o.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+s].name;e.push({value:s,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let o=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+o+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,o){o.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,o){this.showVehicleModal=!1,o=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const o=this.socModuleList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(o,"defaults")?{...JSON.parse(JSON.stringify(o.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,o){this.updateState("openWB/vehicle/"+e+"/soc_module/config",o,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(o))},updateConfiguration(e,o){console.debug("updateConfiguration",e,o),this.updateState(e,o.value,o.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,o){o.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,o){this.showEvTemplateModal=!1,o=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,o){o.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,o){this.showChargeTemplateModal=!1,o=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+o].name:"Zielladen Zeitplan "+e+"/"+o},addChargeTemplateSchedulePlan(e,o){o.stopPropagation(),console.info("requesting new charge template schedule plan...");let s=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:s}})},removeChargeTemplateSchedulePlanModal(e,o,s){s.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,o,s){this.showChargeTemplateSchedulePlanModal=!1,s=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:o}}))},getChargeTemplateTimeChargingPlanName(e,o){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+o].name:"Zeitladen Zeitplan "+e+"/"+o},addChargeTemplateTimeChargingPlan(e,o){o.stopPropagation(),console.info("requesting new charge template time charging plan...");let s=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:s}})},removeChargeTemplateTimeChargingPlanModal(e,o,s){s.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(o.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,o,s){this.showChargeTemplateTimeChargingPlanModal=!1,s=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+o+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:o}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>h("hr",null,null,-1)),Te={key:0},Ue=f(()=>h("br",null,null,-1)),Pe=["innerHTML"],We=f(()=>h("hr",null,null,-1)),ye=f(()=>h("br",null,null,-1)),Le=f(()=>h("br",null,null,-1)),Ae=f(()=>h("br",null,null,-1)),Be={key:1},Ee=f(()=>h("hr",{class:"border-secondary"},null,-1)),Fe={key:0},qe={key:1},Me={key:0},De={key:1},xe=f(()=>h("br",null,null,-1)),Ze=f(()=>h("br",null,null,-1)),Ne=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Oe={key:3},Re={key:0},$e={key:1},He=f(()=>h("br",null,null,-1)),je=f(()=>h("br",null,null,-1)),Je=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),Ge={key:0},Qe={key:0},Xe={key:0},Ye=f(()=>h("hr",null,null,-1)),Ke=f(()=>h("hr",null,null,-1)),et=f(()=>h("br",null,null,-1)),tt=f(()=>h("br",null,null,-1)),nt=f(()=>h("hr",null,null,-1)),at=f(()=>h("br",null,null,-1)),lt=f(()=>h("br",null,null,-1)),it=["onClick"],ot={key:0},dt={key:1},rt={key:2},ut={key:3},st={key:4},mt={key:4},ct={key:1},ht=f(()=>h("hr",null,null,-1)),gt=["onClick"],pt={key:0},bt={key:1},vt={key:2},ft={key:3},_t={key:4},wt={key:4};function kt(e,o,s,F,_,g){const P=k("openwb-base-modal-dialog"),b=k("font-awesome-icon"),U=k("openwb-base-avatar"),B=k("openwb-base-alert"),W=k("openwb-base-text-input"),M=k("openwb-base-select-input"),O=k("openwb-base-array-input"),w=k("openwb-base-button-group-input"),y=k("openwb-base-heading"),z=k("openwb-base-number-input"),R=k("openwb-vehicle-proxy"),A=k("openwb-base-card"),Z=k("font-awesome-layers"),S=k("openwb-base-range-input"),$=k("openwb-base-submit-buttons");return r(),c(L,null,[n(P,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[0]||(o[0]=i=>g.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+V(g.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(P,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[1]||(o[1]=i=>g.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+V(g.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(P,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[2]||(o[2]=i=>g.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+V(g.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(P,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[3]||(o[3]=i=>g.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+V(g.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(P,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:o[4]||(o[4]=i=>g.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+V(g.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",ke,[h("form",Ve,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:g.addVehicle},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(B,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(L,null,E(g.vehicleIndexes,i=>(r(),v(A,{key:i,title:g.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(W,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/name",d),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(B,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:g.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/ev_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:g.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/charge_template",d)},null,8,["options","model-value","onUpdate:modelValue"]),ze,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!s.installAssistantActive?(r(),c("div",Te,[n(O,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/tag_id",d)},null,8,["model-value","onUpdate:modelValue"]),n(B,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),Ue,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Pe)]),_:1}),We])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:g.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":d=>g.updateSelectedSocModule(i,d)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),ye,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Le,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Ae,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Be,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",d,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(z,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",d*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",d*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":d=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",d,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":d=>g.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",d)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(d=>[d.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:t=>g.removeVehicleModal(i,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Ee,n(y,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(Z,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:g.addEvTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Fe,[n(B,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",qe,[n(B,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(L,null,E(g.evTemplates,(i,d)=>(r(),v(A,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!0},q({default:a(()=>[n(W,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},q({_:2},[d.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(y,null,{default:a(()=>[l(" Angaben zum Ladestrom ")]),_:1}),n(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),s.installAssistantActive?m("",!0):(r(),c("div",Me,[n(z,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(d,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(y,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(z,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s.installAssistantActive?m("",!0):(r(),c("div",De,[n(z,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(d,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),xe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ze,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Ne,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(z,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),n(y,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen ")]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(d,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),v(z,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(d,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(d,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),s.installAssistantActive?m("",!0):(r(),c("div",Oe,[n(z,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(d,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>g.removeEvTemplateModal(d,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(Z,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:g.addChargeTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Re,[n(B,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",$e,[(r(!0),c(L,null,E(g.chargeTemplates,(i,d)=>(r(),v(A,{key:d,title:i.name?i.name:d,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==g.getChargeTemplateIndex(d))},q({default:a(()=>[n(W,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(d,t,"name"),disabled:d.endsWith("/0")},q({_:2},[d.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(y,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),He,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),je,Je]),_:2},1032,["model-value","onUpdate:modelValue"]),s.installAssistantActive?m("",!0):(r(),c("div",Ge,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(d,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(d,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(d,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(d,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",Qe,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",Xe,[n(B,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(z,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(d,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),Ye])),n(y,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(S,{title:"Soll-Ladestrom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.current")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Energie-Limit",unit:"kWh",min:1,max:100,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(d,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ke,n(y,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(S,{title:"Minimaler Dauerstrom",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),et,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),tt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(S,{title:"Mindest-SoC-Strom",min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(d,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),nt,n(y,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>g.addChargeTemplateSchedulePlan(d,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),at,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),lt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(L,null,E(g.getChargeTemplateScheduledChargingPlans(d),(t,p)=>(r(),v(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",ot,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+V(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",dt,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+V(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+V(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",rt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+V(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ut,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",st,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,it)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>g.removeChargeTemplateSchedulePlanModal(d,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(W,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(W,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(S,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(S,{key:0,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),v(S,{key:1,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(z,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(W,{key:3,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",mt,[(r(!0),c(L,null,E(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),s.installAssistantActive?m("",!0):(r(),c("div",ct,[ht,n(y,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>g.addChargeTemplateTimeChargingPlan(d,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(L,null,E(g.getChargeTemplateTimeChargingPlans(d),(t,p)=>(r(),v(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",pt,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+V(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",bt,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+V(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+V(t.time[0])+" - "+V(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",vt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+V(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ft,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",_t,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,gt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>g.removeChargeTemplateTimeChargingPlanModal(d,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(W,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(S,{title:"Ladestrom",min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(S,{key:0,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(z,{key:1,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(W,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(W,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(W,{key:2,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),v(W,{key:3,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",wt,[(r(!0),c(L,null,E(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[d.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>g.removeChargeTemplateModal(d,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n($,{formName:"vehicleConfigForm",onSave:o[5]||(o[5]=i=>e.$emit("save")),onReset:o[6]||(o[6]=i=>e.$emit("reset")),onDefaults:o[7]||(o[7]=i=>e.$emit("defaults"))})])])],64)}const yt=x(we,[["render",kt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{yt as default};
diff --git a/web/settings/assets/VehicleConfig-c67651ce.js b/web/settings/assets/VehicleConfig-c67651ce.js
new file mode 100644
index 0000000000..644eb9e463
--- /dev/null
+++ b/web/settings/assets/VehicleConfig-c67651ce.js
@@ -0,0 +1 @@
+import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as S,C as oe}from"./index-ba5cf04c.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as V,k as r,l as c,A as v,N as a,y as l,z as C,D as n,x as g,a2 as re,a3 as ue,J as A,B as m,K as B,a4 as q,P as N,q as I,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,h,F,_,s){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),c("div",he,[Object.keys(h.configuration).length==0?(r(),v(W,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+C(h.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(W,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(h.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":h.configuration,"onUpdate:modelValue":d[0]||(d[0]=U=>s.updateConfiguration(U,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(W,{subtype:"info"},{default:a(()=>[g("pre",null,C(JSON.stringify(h.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>S(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>S(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>S(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-5eb1661e.js"),["assets/vehicle-5eb1661e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-ba5cf04c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>S(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,d,h,F,_,s){const W=V("openwb-base-heading");return r(),c(A,null,[n(W,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+C(h.vehicle.name)+'" ',1)]),_:1}),(r(),v(ue(s.myComponent),{vehicleId:h.vehicleId,vehicle:h.vehicle,configuration:h.vehicle.configuration,vehicleType:h.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=b=>s.updateConfiguration(b))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=Z(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+h].name;e.push({value:h,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+h].name;e.push({value:h,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(h=>h.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:h}})},removeChargeTemplateSchedulePlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,h){this.showChargeTemplateSchedulePlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:h}})},removeChargeTemplateTimeChargingPlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,h){this.showChargeTemplateTimeChargingPlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>g("hr",null,null,-1)),Te={key:0},Ue=f(()=>g("br",null,null,-1)),We=["innerHTML"],Le=f(()=>g("hr",null,null,-1)),Pe=f(()=>g("br",null,null,-1)),Ae=f(()=>g("br",null,null,-1)),ye=f(()=>g("br",null,null,-1)),Ee={key:1},Be=f(()=>g("hr",{class:"border-secondary"},null,-1)),Fe={key:0},qe={key:1},Me=f(()=>g("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),De={key:0},Ze=f(()=>g("br",null,null,-1)),xe=f(()=>g("br",null,null,-1)),Ne=f(()=>g("br",null,null,-1)),Ie=f(()=>g("br",null,null,-1)),Oe={key:1},Re={key:0},He={key:0},je={key:3},Je={key:0},$e={key:1},Ge=f(()=>g("br",null,null,-1)),Qe=f(()=>g("br",null,null,-1)),Xe=f(()=>g("ol",null,[g("li",null," Zielladen (Sofortladen) mit Priorität "),g("li",null,"Zielladen (Sofortladen)"),g("li",null,"Zeitladen mit Priorität"),g("li",null,"Zeitladen"),g("li",null,"Sofortladen mit Priorität"),g("li",null,"Sofortladen"),g("li",null,"PV (Min-Anteil) mit Priorität"),g("li",null,"PV (Min-Anteil)"),g("li",null,"Zielladen (PV) mit Priorität"),g("li",null,"Zielladen (PV)"),g("li",null,"PV (PV-Anteil) mit Priorität"),g("li",null,"PV (PV-Anteil)")],-1)),Ye={key:0},Ke={key:0},et={key:0},tt=f(()=>g("hr",null,null,-1)),nt=f(()=>g("hr",null,null,-1)),at=f(()=>g("br",null,null,-1)),lt=f(()=>g("br",null,null,-1)),it=f(()=>g("hr",null,null,-1)),ot=f(()=>g("br",null,null,-1)),dt=f(()=>g("br",null,null,-1)),rt=["onClick"],ut={key:0},st={key:1},mt={key:2},ct={key:3},ht={key:4},gt={key:5},pt={key:4},bt=f(()=>g("hr",null,null,-1)),vt=["onClick"],ft={key:0},_t={key:1},wt={key:2},kt={key:3},Vt={key:4},Ct={key:5};function St(e,d,h,F,_,s){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),U=V("openwb-base-avatar"),E=V("openwb-base-alert"),L=V("openwb-base-text-input"),M=V("openwb-base-select-input"),O=V("openwb-base-array-input"),w=V("openwb-base-button-group-input"),P=V("openwb-base-heading"),k=V("openwb-base-number-input"),R=V("openwb-vehicle-proxy"),y=V("openwb-base-card"),x=V("font-awesome-layers"),z=V("openwb-base-range-input"),H=V("openwb-base-submit-buttons");return r(),c(A,null,[n(W,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+C(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),g("div",ke,[g("form",Ve,[n(y,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(A,null,B(s.vehicleIndexes,i=>(r(),v(y,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),ze,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!h.installAssistantActive?(r(),c("div",Te,[n(O,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),Ue,g("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,We)]),_:1}),Le])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),Pe,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),ye,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Ee,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Be,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(y,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Fe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),Me,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(A,null,B(s.evTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",De,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),Ze,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),xe,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Ne,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Oe,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",Re," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),v(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(y,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Je,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",$e,[(r(!0),c(A,null,B(s.chargeTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Ge,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Qe,Xe]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",Ye,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",Ke,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",et,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),tt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),nt,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),at,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),it,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),ot,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),dt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(A,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",ut,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+C(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",st,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+C(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+C(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",mt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+C(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ct,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",ht,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,rt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),v(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",gt,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),h.installAssistantActive?m("",!0):(r(),c("div",pt,[bt,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(A,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",ft,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+C(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",_t,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+C(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+C(t.time[0])+" - "+C(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",wt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+C(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",kt,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Vt,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,vt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(L,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",Ct,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Et=Z(we,[["render",St],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Et as default};
diff --git a/web/settings/assets/chargePoint-20a5e448.js b/web/settings/assets/chargePoint-20a5e448.js
new file mode 100644
index 0000000000..a6b4e450b6
--- /dev/null
+++ b/web/settings/assets/chargePoint-20a5e448.js
@@ -0,0 +1 @@
+import{_ as r,u as s,k as d,l as p,D as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"ChargePointOpenwbDcAdapter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},_={class:"charge-point-openwbdcadapter"};function l(t,e,o,f,m,n){const a=s("openwb-base-text-input");return d(),p("div",_,[u(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"ip_address"))},null,8,["model-value"])])}const v=r(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{v as default};
diff --git a/web/settings/assets/electricity_tariff-6c2d936c.js b/web/settings/assets/electricity_tariff-b90a64df.js
similarity index 97%
rename from web/settings/assets/electricity_tariff-6c2d936c.js
rename to web/settings/assets/electricity_tariff-b90a64df.js
index eb501b23d6..5857a1cade 100644
--- a/web/settings/assets/electricity_tariff-6c2d936c.js
+++ b/web/settings/assets/electricity_tariff-b90a64df.js
@@ -1 +1 @@
-import{C as p}from"./index-625b6e82.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
+import{C as p}from"./index-ba5cf04c.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
diff --git a/web/settings/assets/index-625b6e82.js b/web/settings/assets/index-ba5cf04c.js
similarity index 56%
rename from web/settings/assets/index-625b6e82.js
rename to web/settings/assets/index-ba5cf04c.js
index 872c5d7725..9f876f6997 100644
--- a/web/settings/assets/index-625b6e82.js
+++ b/web/settings/assets/index-ba5cf04c.js
@@ -1 +1 @@
-import{_ as w,k as r,l as d,m as h,q as k,u as _,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as f,O as ee,P as te,T as F,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as fe,i as _e,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Ue(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Fe=w(Ne,[["render",Ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},ft={class:"col-md-8"},_t={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ft,[o("div",_t,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=_("font-awesome-icon"),l=_("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(fe,_e);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ut={key:0,class:"form-row alert alert-info my-1 small"};function Ft(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ut,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},fs={class:"modal-title"},_s={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(F,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",fs,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",_s,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Us=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Fs={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Fs,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=_("openwb-base-modal-dialog"),l=_("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:f(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},fn={class:"col-md-8"},_n={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",fn,[o("div",_n,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Un={key:0,class:"form-row alert alert-info my-1 small"};function Fn(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Un,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Fn],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},fo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),_o={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=_("router-link"),l=_("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>[p(" Status ")]),_:1})]),o("li",mo,[fo,o("div",_o,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Uo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Fo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=_("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Uo,Fo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=_("font-awesome-icon"),l=_("font-awesome-layers-text"),v=_("font-awesome-layers"),$=_("openwb-base-alert"),M=_("openwb-base-click-button"),P=_("openwb-base-toast");return r(),d(x,null,[(r(),g(F,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:f(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:f(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:f(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:f(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=_("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:f(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=_("nav-bar"),l=_("router-view"),v=_("donation-banner"),$=_("page-footer"),M=_("messages"),P=_("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",fa=function(e){return"/openWB/web/settings/"+e},U={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=fa(s),s in U)return;U[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-78365aec.js"),["assets/Status-78365aec.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-95b9ca4e.js"),["assets/ChargeLog-95b9ca4e.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-b8b9286f.js"),["assets/Chart-b8b9286f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-216681e8.js"),["assets/GeneralConfig-216681e8.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-555be33d.js"),["assets/OptionalComponents-555be33d.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-c98169ef.js"),["assets/GeneralChargeConfig-c98169ef.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-a80080eb.js"),["assets/InstantChargeConfig-a80080eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-0c8008ce.js"),["assets/PVChargeConfig-0c8008ce.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-536957f1.js"),["assets/TimeChargeConfig-536957f1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-71274181.js"),["assets/ScheduledChargeConfig-71274181.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-dffcdd26.js"),["assets/HardwareInstallation-dffcdd26.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-bd1cf7d0.js"),["assets/LoadManagementConfig-bd1cf7d0.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-9d7a4a26.js"),["assets/ChargePointInstallation-9d7a4a26.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-0dfeda79.js"),["assets/VehicleConfig-0dfeda79.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-86ffb07e.js"),["assets/CloudConfig-86ffb07e.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-f4caf6ad.js"),["assets/MqttBridgeConfig-f4caf6ad.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-7dd5be5a.js"),["assets/DebugConfig-7dd5be5a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-ab239500.js"),["assets/Support-ab239500.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-bebb1715.js"),["assets/LegalSettings-bebb1715.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-77ceec43.js"),["assets/System-77ceec43.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-9a695ef8.js"),["assets/DataManagement-9a695ef8.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-fcd9b404.js"),["assets/InstallAssistant-fcd9b404.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-89d6c156.js"),["assets/TestingStore-89d6c156.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const _a=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Us,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(_a).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
+import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-d562c100.js"),["assets/Status-d562c100.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-582cb159.js"),["assets/ChargeLog-582cb159.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-3fbd17e3.js"),["assets/Chart-3fbd17e3.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-9cb055aa.js"),["assets/GeneralConfig-9cb055aa.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-5a24a6aa.js"),["assets/OptionalComponents-5a24a6aa.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-7e106509.js"),["assets/GeneralChargeConfig-7e106509.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-252a508f.js"),["assets/InstantChargeConfig-252a508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-260d31b6.js"),["assets/PVChargeConfig-260d31b6.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-7d17c070.js"),["assets/TimeChargeConfig-7d17c070.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-b2a3d789.js"),["assets/ScheduledChargeConfig-b2a3d789.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-b6072dfb.js"),["assets/HardwareInstallation-b6072dfb.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-ad848400.js"),["assets/LoadManagementConfig-ad848400.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-6bdc7310.js"),["assets/ChargePointInstallation-6bdc7310.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-c67651ce.js"),["assets/VehicleConfig-c67651ce.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-2dc63c4a.js"),["assets/CloudConfig-2dc63c4a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-a79c288e.js"),["assets/MqttBridgeConfig-a79c288e.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-c12bb15b.js"),["assets/DebugConfig-c12bb15b.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-56e00a88.js"),["assets/Support-56e00a88.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-f66efb7a.js"),["assets/LegalSettings-f66efb7a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-5f853f95.js"),["assets/System-5f853f95.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-8e5bac9a.js"),["assets/DataManagement-8e5bac9a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-3b33de2f.js"),["assets/InstallAssistant-3b33de2f.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-5dd38b00.js"),["assets/TestingStore-5dd38b00.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
diff --git a/web/settings/assets/vehicle-f7135917.js b/web/settings/assets/vehicle-5eb1661e.js
similarity index 97%
rename from web/settings/assets/vehicle-f7135917.js
rename to web/settings/assets/vehicle-5eb1661e.js
index 3bf4db48bf..f9275f052d 100644
--- a/web/settings/assets/vehicle-f7135917.js
+++ b/web/settings/assets/vehicle-5eb1661e.js
@@ -1 +1 @@
-import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-625b6e82.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
+import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-ba5cf04c.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/index.html b/web/settings/index.html
index 47ed2bf94c..d54ac433f7 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -7,7 +7,7 @@
 	<meta name="viewport" content="width=device-width,initial-scale=1.0">
 	<link rel="icon" href="/openWB/web/settings/favicon.ico">
 	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-625b6e82.js"></script>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-ba5cf04c.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-2f1828d0.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-f2b8aa6f.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-71546160.js">

From 0fc7b18741486504383467cbfcbbdc218d24c1f2 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 3 Sep 2024 12:26:41 +0200
Subject: [PATCH 017/205] Revert "dc charging (#1660)" (#1863)

This reverts commit 2b10bc2122434ee7e04be1a584d81c9bcac96029.
---
 packages/conftest.py                          |   8 +-
 .../control/algorithm/additional_current.py   |  11 +-
 packages/control/algorithm/common.py          |  48 +++----
 packages/control/algorithm/common_test.py     |  32 ++---
 .../algorithm/integration_test/conftest.py    |   3 +-
 .../integration_test/instant_charging_test.py |   4 -
 .../integration_test/pv_charging_test.py      |   4 -
 packages/control/algorithm/min_current.py     |  26 ++--
 .../control/algorithm/surplus_controlled.py   |   4 +-
 packages/control/chargepoint/chargepoint.py   |  42 ++----
 .../control/chargepoint/chargepoint_data.py   |   3 -
 .../chargepoint/chargepoint_template.py       |   3 -
 packages/control/chargepoint/charging_type.py |   6 -
 .../control/chargepoint/control_parameter.py  |   3 -
 packages/control/counter.py                   |   2 +-
 packages/control/counter_all.py               |   4 +-
 packages/control/ev.py                        | 132 ++++++------------
 packages/control/ev_charge_template_test.py   |  14 +-
 packages/control/optional.py                  |   4 -
 packages/helpermodules/abstract_plans.py      |   2 -
 .../changed_values_handler_test.py            |  19 +--
 .../helpermodules/hardware_configuration.py   |  19 +--
 packages/helpermodules/setdata.py             |  31 +---
 packages/helpermodules/subdata.py             |  19 +--
 packages/helpermodules/update_config.py       |  31 +---
 .../chargepoints/external_openwb/config.py    |   9 +-
 .../chargepoints/internal_openwb/config.py    |   9 +-
 packages/modules/chargepoints/mqtt/config.py  |  10 +-
 .../openwb_dc_adapter/__init__.py             |   0
 .../openwb_dc_adapter/chargepoint_module.py   | 125 -----------------
 .../chargepoints/openwb_dc_adapter/config.py  |  20 ---
 .../modules/chargepoints/openwb_pro/config.py |   9 +-
 .../openwb_series2_satellit/config.py         |   9 +-
 .../modules/chargepoints/smartwb/config.py    |   9 +-
 .../modules/common/abstract_chargepoint.py    |  30 ----
 packages/modules/common/component_state.py    |   6 -
 packages/modules/common/simcount/__init__.py  |   2 +-
 .../modules/common/simcount/_simcounter.py    |  10 --
 packages/modules/common/store/_chargepoint.py |   5 -
 packages/modules/configuration.py             |   9 +-
 .../update_values_test.py                     |   2 +-
 packages/modules/update_soc.py                |   4 -
 .../web_themes/standard_legacy/web/index.html |  69 ---------
 .../standard_legacy/web/processAllMqttMsg.js  |  27 ----
 .../standard_legacy/web/setupMqttServices.js  |   1 -
 45 files changed, 183 insertions(+), 656 deletions(-)
 delete mode 100644 packages/control/chargepoint/charging_type.py
 delete mode 100644 packages/modules/chargepoints/openwb_dc_adapter/__init__.py
 delete mode 100644 packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
 delete mode 100644 packages/modules/chargepoints/openwb_dc_adapter/config.py

diff --git a/packages/conftest.py b/packages/conftest.py
index f757e29da9..11bb3faba2 100644
--- a/packages/conftest.py
+++ b/packages/conftest.py
@@ -14,13 +14,7 @@
 from control.counter_all import CounterAll
 from control.pv import Pv, PvData
 from control.pv import Get as PvGet
-from helpermodules import hardware_configuration, pub, timecheck
-
-
-@pytest.fixture(autouse=True)
-def mock_open_file(monkeypatch) -> None:
-    mock_config = Mock(return_value={"dc_charging": False, "openwb-version": 1, "max_c_socket": 32})
-    monkeypatch.setattr(hardware_configuration, "_read_configuration", mock_config)
+from helpermodules import pub, timecheck
 
 
 @pytest.fixture(autouse=True)
diff --git a/packages/control/algorithm/additional_current.py b/packages/control/algorithm/additional_current.py
index a57daa48a0..4b5e6ddc1e 100644
--- a/packages/control/algorithm/additional_current.py
+++ b/packages/control/algorithm/additional_current.py
@@ -29,15 +29,13 @@ def set_additional_current(self) -> None:
                     cp = preferenced_chargepoints[0]
                     missing_currents, counts = common.get_missing_currents_left(preferenced_chargepoints)
                     available_currents, limit = Loadmanagement().get_available_currents(missing_currents, counter)
-                    log.debug(f"cp {cp.num} available currents {available_currents} missing currents "
-                              f"{missing_currents} limit {limit}")
                     cp.data.control_parameter.limit = limit
                     available_for_cp = common.available_current_for_cp(cp, counts, available_currents, missing_currents)
                     current = common.get_current_to_set(
                         cp.data.set.current, available_for_cp, cp.data.set.target_current)
                     self._set_loadmangement_message(current, limit, cp, counter)
                     common.set_current_counterdiff(
-                        cp.data.control_parameter.min_current,
+                        current - cp.data.set.charging_ev_data.ev_template.data.min_current,
                         current,
                         cp)
                     preferenced_chargepoints.pop(0)
@@ -52,12 +50,9 @@ def _set_loadmangement_message(self,
                                    chargepoint: Chargepoint,
                                    counter: Counter) -> None:
         # Strom muss an diesem Zähler geändert werden
-        log.debug(
-            f"current {current} target {chargepoint.data.set.target_current} set current {chargepoint.data.set.current}"
-            f" required currents {chargepoint.data.control_parameter.required_currents}")
         if (current != max(chargepoint.data.set.target_current, chargepoint.data.set.current or 0) and
                 # Strom erreicht nicht die vorgegebene Stromstärke
-                round(current, 2) != round(max(
-                    chargepoint.data.control_parameter.required_currents), 2)):
+                current != max(
+                    chargepoint.data.control_parameter.required_currents)):
             chargepoint.set_state_and_log(f"Es kann nicht mit der vorgegebenen Stromstärke geladen werden"
                                           f"{limit.value.format(get_component_name_by_id(counter.num))}")
diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py
index 72556dcc73..9df5b2b9c6 100644
--- a/packages/control/algorithm/common.py
+++ b/packages/control/algorithm/common.py
@@ -6,7 +6,6 @@
 from control.chargemode import Chargemode
 from control.chargepoint.chargepoint import Chargepoint
 from control.counter import Counter
-from helpermodules.timecheck import check_timestamp
 from modules.common.component_type import ComponentType
 
 log = logging.getLogger(__name__)
@@ -30,8 +29,6 @@
                (None, Chargemode.STOP, True),
                (None, Chargemode.STOP, False))
 
-LESS_CHARGING_TIMEOUT = 60
-
 # tested
 
 
@@ -65,11 +62,12 @@ def mode_and_counter_generator(chargemodes: List) -> Iterable[Tuple[Tuple[Option
 def get_min_current(chargepoint: Chargepoint) -> Tuple[List[float], List[int]]:
     min_currents = [0.0]*3
     counts = [0]*3
+    charging_ev_data = chargepoint.data.set.charging_ev_data
     required_currents = chargepoint.data.control_parameter.required_currents
     for i in range(3):
         if required_currents[i] != 0:
             counts[i] += 1
-            min_currents[i] = chargepoint.data.control_parameter.min_current
+            min_currents[i] = charging_ev_data.ev_template.data.min_current
         else:
             min_currents[i] = 0
     return min_currents, counts
@@ -77,15 +75,8 @@ def get_min_current(chargepoint: Chargepoint) -> Tuple[List[float], List[int]]:
 # tested
 
 
-def set_current_counterdiff(diff_curent: float,
-                            current: float,
-                            chargepoint: Chargepoint,
-                            surplus: bool = False) -> None:
+def set_current_counterdiff(diff: float, current: float, chargepoint: Chargepoint, surplus: bool = False) -> None:
     required_currents = chargepoint.data.control_parameter.required_currents
-    considered_current = consider_less_charging_chargepoint_in_loadmanagement(
-        chargepoint, current)
-    # gar nicht ladende Autos?
-    diff = max(considered_current - diff_curent, 0)
     diffs = [diff if required_currents[i] != 0 else 0 for i in range(3)]
     if max(diffs) > 0:
         counters = data.data.counter_all_data.get_counters_to_check(chargepoint.num)
@@ -138,20 +129,21 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint],
     """alle CP, die schon einen Sollstrom haben, wieder rausrechnen, da dieser neu gesetzt wird
         und die neue Differenz bei den Zählern eingetragen wird."""
     for chargepoint in preferenced_chargepoints:
+        if consider_not_charging_chargepoint_in_loadmanagement(chargepoint):
+            continue
+        charging_ev_data = chargepoint.data.set.charging_ev_data
         required_currents = chargepoint.data.control_parameter.required_currents
         max_target_set_current = max(chargepoint.data.set.target_current, chargepoint.data.set.current or 0)
-        max_target_set_current = consider_less_charging_chargepoint_in_loadmanagement(
-            chargepoint, max_target_set_current)
 
         if diff_to_zero is False:
-            if chargepoint.data.control_parameter.min_current < max_target_set_current:
-                diffs = [chargepoint.data.control_parameter.min_current -
+            if charging_ev_data.ev_template.data.min_current < max_target_set_current:
+                diffs = [charging_ev_data.ev_template.data.min_current -
                          max_target_set_current if required_currents[i] != 0 else 0 for i in range(3)]
             else:
                 continue
         else:
-            if chargepoint.data.control_parameter.min_current <= max_target_set_current:
-                diffs = [-chargepoint.data.control_parameter.min_current if required_currents[i]
+            if charging_ev_data.ev_template.data.min_current <= max_target_set_current:
+                diffs = [-charging_ev_data.ev_template.data.min_current if required_currents[i]
                          != 0 else 0 for i in range(3)]
             else:
                 continue
@@ -163,17 +155,10 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint],
                 data.data.counter_data[counter].update_values_left(diffs)
 
 
-def consider_less_charging_chargepoint_in_loadmanagement(cp: Chargepoint, set_current: float) -> bool:
-    if (data.data.counter_all_data.data.config.consider_less_charging and
-        ((set_current -
-          cp.data.set.charging_ev_data.ev_template.data.nominal_difference) > max(cp.data.get.currents) and
-         cp.data.control_parameter.timestamp_charge_start is not None and
-         check_timestamp(cp.data.control_parameter.timestamp_charge_start, LESS_CHARGING_TIMEOUT) is False)):
-        log.debug(
-            f"LP {cp.num} lädt deutlich unter dem Sollstrom und wird nur mit {cp.data.get.currents}A berücksichtigt.")
-        return max(cp.data.get.currents)
-    else:
-        return set_current
+def consider_not_charging_chargepoint_in_loadmanagement(cp: Chargepoint) -> bool:
+    # tested
+    return data.data.counter_all_data.data.config.reserve_for_not_charging is False and max(cp.data.get.currents) == 0
+
 # tested
 
 
@@ -181,14 +166,15 @@ def get_missing_currents_left(preferenced_chargepoints: List[Chargepoint]) -> Tu
     missing_currents = [0.0]*3
     counts = [0]*3
     for chargepoint in preferenced_chargepoints:
+        charging_ev_data = chargepoint.data.set.charging_ev_data
         required_currents = chargepoint.data.control_parameter.required_currents
         for i in range(0, 3):
             if required_currents[i] != 0:
                 counts[i] += 1
                 try:
-                    missing_currents[i] += required_currents[i] - chargepoint.data.control_parameter.min_current
+                    missing_currents[i] += required_currents[i] - charging_ev_data.ev_template.data.min_current
                 except KeyError:
-                    missing_currents[i] += max(required_currents) - chargepoint.data.control_parameter.min_current
+                    missing_currents[i] += max(required_currents) - charging_ev_data.ev_template.data.min_current
             else:
                 missing_currents[i] += 0
     return missing_currents, counts
diff --git a/packages/control/algorithm/common_test.py b/packages/control/algorithm/common_test.py
index 21c23c8b88..6028332a8e 100644
--- a/packages/control/algorithm/common_test.py
+++ b/packages/control/algorithm/common_test.py
@@ -34,9 +34,10 @@ def test_reset_current(set_current: int, expected_current: int):
 @pytest.mark.parametrize(
     "diff, required_currents, expected_set_current, expected_diffs",
     [
-        pytest.param(10, [10, 0, 0], 10, [2, 0, 0], id="set diff one phase"),
-        pytest.param(10, [12]*3, 10, [2]*3, id="set diff three phases"),
-        pytest.param(8, [8]*3, 8, [0]*3, id="min current is already set, three phases"),
+        pytest.param(2, [10, 0, 0], 8, [2, 0, 0], id="set diff one phase"),
+        pytest.param(2, [12]*3, 8, [2]*3, id="set diff three phases"),
+        pytest.param(8, [8]*3, 8, [8]*3, id="set min current three phases"),
+        pytest.param(0, [8]*3, 8, [0]*3, id="min current is already set, three phases"),
     ])
 def test_set_current_counterdiff(diff: float,
                                  required_currents: List[float],
@@ -54,11 +55,11 @@ def test_set_current_counterdiff(diff: float,
     data.data.counter_data = {"cp0": Mock(spec=Counter), "cp6": Mock(spec=Counter)}
 
     # evaluation
-    common.set_current_counterdiff(8, diff, cp)
+    common.set_current_counterdiff(diff, 8, cp)
 
     # assertion
     assert cp.data.set.current == expected_set_current
-    if max(expected_diffs) != 0:
+    if diff != 0:
         assert data.data._counter_data['cp0'].update_values_left.call_args_list[0][0][0] == expected_diffs
         assert data.data._counter_data['cp6'].update_values_left.call_args_list[0][0][0] == expected_diffs
 
@@ -151,24 +152,23 @@ def setup_cp(num: int, required_currents) -> Chargepoint:
 
 
 @pytest.mark.parametrize(
-    "consider_less_charging, get_currents, expected_considered",
+    "reserve_for_not_charging, get_currents, expected_considered",
     [
-        pytest.param(True, [6]*3, 6, id="consider_less_charging active, charging less"),
-        pytest.param(True, [10]*3, 10, id="consider_less_charging active, charging with set current"),
-        pytest.param(False, [0]*3, 10, id="consider_less_charging inactive"),
+        pytest.param(True, [0]*3, False, id="reserve_for_not_charging active"),
+        pytest.param(True, [6]*3, False, id="reserve_for_not_charging active"),
+        pytest.param(False, [0]*3, True, id="not charging"),
+        pytest.param(False, [6]*3, False, id="charging"),
     ])
-def test_consider_less_charging_chargepoint_in_loadmanagement(consider_less_charging: bool,
-                                                              get_currents: List[float],
-                                                              expected_considered: bool):
+def test_consider_not_charging_chargepoint_in_loadmanagement(reserve_for_not_charging: bool,
+                                                             get_currents: List[float],
+                                                             expected_considered: bool):
     # setup
     cp = Chargepoint(4, None)
     cp.data.get.currents = get_currents
-    cp.data.set.current = 10
-    cp.data.control_parameter.timestamp_charge_start = 1652683152
-    data.data.counter_all_data.data.config.consider_less_charging = consider_less_charging
+    data.data.counter_all_data.data.config.reserve_for_not_charging = reserve_for_not_charging
 
     # evaluation
-    considered = common.consider_less_charging_chargepoint_in_loadmanagement(cp, 10)
+    considered = common.consider_not_charging_chargepoint_in_loadmanagement(cp)
 
     # assertion
     assert considered == expected_considered
diff --git a/packages/control/algorithm/integration_test/conftest.py b/packages/control/algorithm/integration_test/conftest.py
index 9126cbcf59..ac2f44d16f 100644
--- a/packages/control/algorithm/integration_test/conftest.py
+++ b/packages/control/algorithm/integration_test/conftest.py
@@ -31,7 +31,6 @@ def data_() -> None:
         data.data.cp_data[f"cp{i}"].data.set.plug_time = f"12/01/2022, 15:0{i}:11"
         data.data.cp_data[f"cp{i}"].data.set.charging_ev_data.ev_template.data.nominal_difference = 2
     data.data.cp_data["cp3"].data.set.charging_ev_data.ev_template.data.min_current = 10
-    data.data.cp_data["cp3"].data.control_parameter.min_current = 10
     data.data.bat_data.update({"bat2": Bat(2), "all": BatAll()})
     data.data.pv_data.update({"pv1": Pv(1)})
     data.data.counter_data.update({
@@ -47,7 +46,7 @@ def data_() -> None:
     data.data.counter_data["counter6"].data.config.max_total_power = 11000
     data.data.counter_all_data = CounterAll()
     data.data.counter_all_data.data.get.hierarchy = NESTED_HIERARCHY
-    data.data.counter_all_data.data.config.consider_less_charging = True
+    data.data.counter_all_data.data.config.reserve_for_not_charging = True
 
 
 @dataclass
diff --git a/packages/control/algorithm/integration_test/instant_charging_test.py b/packages/control/algorithm/integration_test/instant_charging_test.py
index f0582261d5..c4bb4dfddc 100644
--- a/packages/control/algorithm/integration_test/instant_charging_test.py
+++ b/packages/control/algorithm/integration_test/instant_charging_test.py
@@ -16,8 +16,6 @@
 def all_cp_instant_charging_1p():
     for i in range(3, 6):
         control_parameter = data.data.cp_data[f"cp{i}"].data.control_parameter
-        control_parameter.min_current = data.data.cp_data[
-            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [0]*3
         control_parameter.required_currents[i-3] = 16
         control_parameter.required_current = 16
@@ -36,8 +34,6 @@ def all_cp_charging_1p():
 def all_cp_instant_charging_3p():
     for i in range(3, 6):
         control_parameter = data.data.cp_data[f"cp{i}"].data.control_parameter
-        control_parameter.min_current = data.data.cp_data[
-            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [16]*3
         control_parameter.required_current = 16
         control_parameter.chargemode = Chargemode.INSTANT_CHARGING
diff --git a/packages/control/algorithm/integration_test/pv_charging_test.py b/packages/control/algorithm/integration_test/pv_charging_test.py
index 0b9eefb4f1..eb866ce506 100644
--- a/packages/control/algorithm/integration_test/pv_charging_test.py
+++ b/packages/control/algorithm/integration_test/pv_charging_test.py
@@ -22,8 +22,6 @@ def all_cp_pv_charging_3p():
             f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [
             data.data.cp_data[f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current]*3
-        control_parameter.min_current = data.data.cp_data[
-            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.chargemode = Chargemode.PV_CHARGING
         control_parameter.submode = Chargemode.PV_CHARGING
         control_parameter.phases = 3
@@ -54,8 +52,6 @@ def all_cp_pv_charging_1p():
     for i in range(3, 6):
         control_parameter = data.data.cp_data[f"cp{i}"].data.control_parameter
         charging_ev_data = data.data.cp_data[f"cp{i}"].data.set.charging_ev_data
-        control_parameter.min_current = data.data.cp_data[
-            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_current = data.data.cp_data[
             f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [0]*3
diff --git a/packages/control/algorithm/min_current.py b/packages/control/algorithm/min_current.py
index 2d1cd918b2..ac5af0f213 100644
--- a/packages/control/algorithm/min_current.py
+++ b/packages/control/algorithm/min_current.py
@@ -29,16 +29,24 @@ def set_min_current(self) -> None:
                             cp, counts, available_currents, missing_currents)
                         current = common.get_current_to_set(
                             cp.data.set.current, available_for_cp, cp.data.set.target_current)
-                        if current < cp.data.control_parameter.min_current:
-                            common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp)
-                            if limit:
-                                cp.set_state_and_log(
-                                    f"Ladung kann nicht gestartet werden{limit.value.format(counter.num)}")
+                        if common.consider_not_charging_chargepoint_in_loadmanagement(cp):
+                            cp.data.set.current = cp.data.set.charging_ev_data.ev_template.data.min_current
+                            log.debug(
+                                f"LP{cp.num}: Stromstärke {cp.data.set.charging_ev_data.ev_template.data.min_current}"
+                                "A. Zuteilung ohne Berücksichtigung im Lastmanagement, da kein Ladestart zu erwarten "
+                                "ist und Reserve für nicht-ladende inaktiv.")
                         else:
-                            common.set_current_counterdiff(
-                                cp.data.set.target_current,
-                                cp.data.control_parameter.min_current,
-                                cp)
+                            if current < cp.data.set.charging_ev_data.ev_template.data.min_current:
+                                common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp)
+                                if limit:
+                                    cp.set_state_and_log(
+                                        f"Ladung kann nicht gestartet werden{limit.value.format(counter.num)}")
+                            else:
+                                common.set_current_counterdiff(
+                                    (cp.data.set.charging_ev_data.ev_template.data.min_current
+                                     - cp.data.set.target_current),
+                                    cp.data.set.charging_ev_data.ev_template.data.min_current,
+                                    cp)
                     else:
                         cp.data.set.current = 0
                     preferenced_chargepoints.pop(0)
diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py
index 4909177c85..85c8fcda98 100644
--- a/packages/control/algorithm/surplus_controlled.py
+++ b/packages/control/algorithm/surplus_controlled.py
@@ -57,7 +57,7 @@ def _set(self,
             limited_current = self._limit_adjust_current(cp, current)
             limited_current = self._add_unused_evse_current(limited_current, cp)
             common.set_current_counterdiff(
-                cp.data.control_parameter.min_current,
+                limited_current - cp.data.set.charging_ev_data.ev_template.data.min_current,
                 limited_current,
                 cp,
                 surplus=True)
@@ -107,7 +107,7 @@ def _limit_adjust_current(self, chargepoint: Chargepoint, new_current: float) ->
                     current = max(chargepoint.data.get.currents) + MAX_CURRENT
                     msg = "Es darf um max 5A über den aktuell genutzten Strom geregelt werden."
             chargepoint.set_state_and_log(msg)
-            return max(current, chargepoint.data.control_parameter.min_current)
+            return max(current, chargepoint.data.set.charging_ev_data.ev_template.data.min_current)
 
     def _add_unused_evse_current(self, limited_current, chargepoint: Chargepoint) -> float:
         """Wenn Autos nicht die volle Ladeleistung nutzen, wird unnötig eingespeist. Dann kann um den noch nicht
diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index ed3f65f7a5..647b6d2c26 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -27,7 +27,6 @@
 from control.chargepoint.chargepoint_data import ChargepointData, ConnectedConfig, ConnectedInfo, ConnectedSoc, Get, Log
 from control.chargepoint.chargepoint_template import CpTemplate
 from control.chargepoint.control_parameter import ControlParameter, control_parameter_factory
-from control.chargepoint.charging_type import ChargingType
 from control.chargepoint.rfid import ChargepointRfidMixin
 from control.ev import Ev
 from control import phase_switch
@@ -277,10 +276,6 @@ def set_control_parameter(self, submode: str, required_current: float):
                     self.data.set.charging_ev_data.charge_template.data.chargemode.selected)
             self.data.control_parameter.prio = self.data.set.charging_ev_data.charge_template.data.prio
             self.data.control_parameter.required_current = required_current
-            if self.template.data.charging_type == ChargingType.AC.value:
-                self.data.control_parameter.min_current = self.data.set.charging_ev_data.ev_template.data.min_current
-            else:
-                self.data.control_parameter.min_current = self.data.set.charging_ev_data.ev_template.data.dc_min_current
         except Exception:
             log.exception("Fehler im LP-Modul "+str(self.num))
 
@@ -589,19 +584,14 @@ def set_phases(self, phases: int) -> int:
 
     def check_min_max_current(self, required_current: float, phases: int, pv: bool = False) -> float:
         required_current_prev = required_current
-        required_current, msg = self.data.set.charging_ev_data.check_min_max_current(
-            self.data.control_parameter,
-            required_current,
-            phases,
-            self.template.data.charging_type,
-            pv)
-        if self.template.data.charging_type == ChargingType.AC.value:
-            if phases == 1:
-                required_current = min(required_current, self.template.data.max_current_single_phase)
-            else:
-                required_current = min(required_current, self.template.data.max_current_multi_phases)
+        required_current, msg = self.data.set.charging_ev_data.check_min_max_current(self.data.control_parameter,
+                                                                                     required_current,
+                                                                                     phases,
+                                                                                     pv)
+        if phases == 1:
+            required_current = min(required_current, self.template.data.max_current_single_phase)
         else:
-            required_current = min(required_current, self.template.data.dc_max_current)
+            required_current = min(required_current, self.template.data.max_current_multi_phases)
         if required_current != required_current_prev and msg is None:
             msg = ("Die Einstellungen in dem Ladepunkt-Profil beschränken den Strom auf "
                    f"maximal {required_current} A.")
@@ -621,18 +611,6 @@ def set_required_currents(self, required_current: float) -> None:
                                    "was ggf eine unnötige Reduktion der Ladeleistung zur Folge hat.")
         self.data.set.required_power = sum(control_parameter.required_currents) * 230
 
-    def handle_less_power(self):
-        if self.data.set.current != 0 and self.data.control_parameter.state == ChargepointState.CHARGING_ALLOWED:
-            nominal_difference = self.data.set.charging_ev_data.ev_template.data.nominal_difference
-            if self.data.set.current - nominal_difference > max(self.data.get.currents):
-                if self.data.control_parameter.timestamp_charge_start is None:
-                    self.data.control_parameter.timestamp_charge_start = create_timestamp()
-            else:
-                self.data.control_parameter.timestamp_charge_start = None
-        else:
-            # Beim Ladestart Timer laufen lassen, manche Fahrzeuge brauchen sehr lange.
-            self.data.control_parameter.timestamp_charge_start = None
-
     def update_ev(self, ev_list: Dict[str, Ev]) -> None:
         # Für Control-Pilot-Unterbrechung set current merken.
         self.set_current_prev = self.data.set.current
@@ -661,20 +639,16 @@ def update(self, ev_list: Dict[str, Ev]) -> None:
                         self.data.control_parameter,
                         self.data.get.imported,
                         max_phase_hw,
-                        self.cp_ev_support_phase_switch(),
-                        self.template.data.charging_type)
+                        self.cp_ev_support_phase_switch())
                     phases = self.set_phases(phases)
                     self._pub_connected_vehicle(charging_ev)
-                    required_current = self.chargepoint_module.add_conversion_loss_to_current(required_current)
                     # Einhaltung des Minimal- und Maximalstroms prüfen
                     required_current = self.check_min_max_current(
                         required_current, self.data.control_parameter.phases)
-                    required_current = self.chargepoint_module.add_conversion_loss_to_current(required_current)
                     charging_ev.set_chargemode_changed(self.data.control_parameter, submode)
                     charging_ev.set_submode_changed(self.data.control_parameter, submode)
                     self.set_control_parameter(submode, required_current)
                     self.set_required_currents(required_current)
-                    self.handle_less_power()
 
                     if charging_ev.chargemode_changed:
                         data.data.counter_all_data.get_evu_counter().reset_switch_on_off(
diff --git a/packages/control/chargepoint/chargepoint_data.py b/packages/control/chargepoint/chargepoint_data.py
index 15c9876330..ca4fdf1728 100644
--- a/packages/control/chargepoint/chargepoint_data.py
+++ b/packages/control/chargepoint/chargepoint_data.py
@@ -90,9 +90,6 @@ def connected_vehicle_factory() -> ConnectedVehicle:
 @dataclass
 class Get:
     charge_state: bool = False
-    charging_current: Optional[float] = 0
-    charging_power: Optional[float] = 0
-    charging_voltage: Optional[float] = 0
     connected_vehicle: ConnectedVehicle = field(default_factory=connected_vehicle_factory)
     currents: List[float] = field(default_factory=currents_list_factory)
     daily_imported: float = 0
diff --git a/packages/control/chargepoint/chargepoint_template.py b/packages/control/chargepoint/chargepoint_template.py
index dd21bd5fb1..c2591de2a1 100644
--- a/packages/control/chargepoint/chargepoint_template.py
+++ b/packages/control/chargepoint/chargepoint_template.py
@@ -5,7 +5,6 @@
 
 from control import data
 from control import ev as ev_module
-from control.chargepoint.charging_type import ChargingType
 from dataclass_utils.factories import empty_dict_factory, empty_list_factory
 from helpermodules.abstract_plans import AutolockPlan
 from helpermodules import timecheck
@@ -38,11 +37,9 @@ def autolock_factory():
 @dataclass
 class CpTemplateData:
     autolock: Autolock = field(default_factory=autolock_factory, metadata={"topic": ""})
-    charging_type: str = ChargingType.AC.value
     id: int = 0
     max_current_multi_phases: int = 32
     max_current_single_phase: int = 32
-    dc_max_current: float = 435
     name: str = "neues Ladepunkt-Profil"
     disable_after_unplug: bool = False
     valid_tags: List = field(default_factory=empty_list_factory)
diff --git a/packages/control/chargepoint/charging_type.py b/packages/control/chargepoint/charging_type.py
deleted file mode 100644
index c49b54cf40..0000000000
--- a/packages/control/chargepoint/charging_type.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from enum import Enum
-
-
-class ChargingType(Enum):
-    DC = "DC"
-    AC = "AC"
diff --git a/packages/control/chargepoint/control_parameter.py b/packages/control/chargepoint/control_parameter.py
index c1abeb035d..de8daa2ed4 100644
--- a/packages/control/chargepoint/control_parameter.py
+++ b/packages/control/chargepoint/control_parameter.py
@@ -18,7 +18,6 @@ class ControlParameter:
     imported_instant_charging: Optional[float] = field(
         default=None, metadata={"topic": "control_parameter/imported_instant_charging"})
     limit: Optional[LimitingValue] = field(default=None, metadata={"topic": "control_parameter/limit"})
-    min_current: int = field(default=6, metadata={"topic": "control_parameter/min_current"})
     phases: int = field(default=0, metadata={"topic": "control_parameter/phases"})
     prio: bool = field(default=False, metadata={"topic": "control_parameter/prio"})
     required_current: float = field(default=0, metadata={"topic": "control_parameter/required_current"})
@@ -28,8 +27,6 @@ class ControlParameter:
     submode: Chargemode_enum = field(default=Chargemode_enum.STOP, metadata={"topic": "control_parameter/submode"})
     timestamp_auto_phase_switch: Optional[float] = field(
         default=None, metadata={"topic": "control_parameter/timestamp_auto_phase_switch"})
-    timestamp_charge_start: Optional[float] = field(
-        default=None, metadata={"topic": "control_parameter/timestamp_charge_start"})
     timestamp_perform_phase_switch: Optional[float] = field(
         default=None, metadata={"topic": "control_parameter/timestamp_perform_phase_switch"})
     timestamp_switch_on_off: Optional[float] = field(
diff --git a/packages/control/counter.py b/packages/control/counter.py
index 81da8a6dc3..580b052dff 100644
--- a/packages/control/counter.py
+++ b/packages/control/counter.py
@@ -420,7 +420,7 @@ def switch_off_check_threshold(self, chargepoint: Chargepoint) -> bool:
                 control_parameter.state = ChargepointState.CHARGING_ALLOWED
         else:
             # Wurde die Abschaltschwelle ggf. durch die Verzögerung anderer LP erreicht?
-            min_current = (chargepoint.data.control_parameter.min_current
+            min_current = (charging_ev_data.ev_template.data.min_current
                            + charging_ev_data.ev_template.data.nominal_difference)
             switch_off_condition = (power_in_use > threshold or
                                     # Wenn der Speicher hochregeln soll, muss auch abgeschaltet werden.
diff --git a/packages/control/counter_all.py b/packages/control/counter_all.py
index 0f1e919ad2..b8f2272527 100644
--- a/packages/control/counter_all.py
+++ b/packages/control/counter_all.py
@@ -22,8 +22,8 @@
 class Config:
     home_consumption_source_id: Optional[str] = field(
         default=None, metadata={"topic": "config/home_consumption_source_id"})
-    consider_less_charging: bool = field(
-        default=False, metadata={"topic": "config/consider_less_charging"})
+    reserve_for_not_charging: bool = field(
+        default=False, metadata={"topic": "config/reserve_for_not_charging"})
 
 
 def config_factory() -> Config:
diff --git a/packages/control/ev.py b/packages/control/ev.py
index 5141e5dfa5..0c312c6e37 100644
--- a/packages/control/ev.py
+++ b/packages/control/ev.py
@@ -13,7 +13,6 @@
 
 from control import data
 from control.chargepoint.chargepoint_state import ChargepointState, PHASE_SWITCH_STATES
-from control.chargepoint.charging_type import ChargingType
 from control.chargepoint.control_parameter import ControlParameter
 from control.limiting_value import LimitingValue
 from dataclass_utils.factories import empty_dict_factory, empty_list_factory
@@ -68,14 +67,11 @@ class TimeCharging:
 @dataclass
 class InstantCharging:
     current: int = 10
-    dc_current: float = 145
     limit: Limit = field(default_factory=limit_factory)
 
 
 @dataclass
 class PvCharging:
-    dc_min_current: float = 145
-    dc_min_soc_current: float = 145
     min_soc_current: int = 10
     min_current: int = 0
     feed_in_limit: bool = False
@@ -137,8 +133,6 @@ def charge_template_data_factory() -> ChargeTemplateData:
 
 @dataclass
 class EvTemplateData:
-    dc_min_current: int = 0
-    dc_max_current: int = 0
     name: str = "neues Fahrzeug-Profil"
     max_current_multi_phases: int = 16
     max_phases: int = 3
@@ -249,8 +243,7 @@ def get_required_current(self,
                              control_parameter: ControlParameter,
                              imported: float,
                              max_phases_hw: int,
-                             phase_switch_supported: bool,
-                             charging_type: str) -> Tuple[bool, Optional[str], str, float, int]:
+                             phase_switch_supported: bool) -> Tuple[bool, Optional[str], str, float, int]:
         """ ermittelt, ob und mit welchem Strom das EV geladen werden soll (unabhängig vom Lastmanagement)
 
         Parameter
@@ -284,8 +277,7 @@ def get_required_current(self,
                     control_parameter.phases,
                     used_amount,
                     max_phases_hw,
-                    phase_switch_supported,
-                    charging_type)
+                    phase_switch_supported)
                 soc_request_intervall_offset = 0
                 if plan_data:
                     name = self.charge_template.data.chargemode.scheduled_charging.plans[plan_data.num].name
@@ -308,7 +300,7 @@ def get_required_current(self,
                     self.data.get.soc,
                     used_amount,
                     control_parameter.phases,
-                    control_parameter.min_current,
+                    self.ev_template.data.min_current,
                     soc_request_intervall_offset)
 
             # Wenn Zielladen auf Überschuss wartet, prüfen, ob Zeitladen aktiv ist.
@@ -319,8 +311,7 @@ def get_required_current(self,
                 used_amount = imported - control_parameter.imported_at_plan_start
                 tmp_current, tmp_submode, tmp_message, name = self.charge_template.time_charging(
                     self.data.get.soc,
-                    used_amount,
-                    charging_type
+                    used_amount
                 )
                 # Info vom Zielladen erhalten
                 message = f"{message or ''} {tmp_message or ''}".strip()
@@ -340,11 +331,10 @@ def get_required_current(self,
                     used_amount = imported - control_parameter.imported_instant_charging
                     required_current, submode, message = self.charge_template.instant_charging(
                         self.data.get.soc,
-                        used_amount,
-                        charging_type)
+                        used_amount)
                 elif self.charge_template.data.chargemode.selected == "pv_charging":
                     required_current, submode, message = self.charge_template.pv_charging(
-                        self.data.get.soc, control_parameter.min_current, charging_type)
+                        self.data.get.soc, self.ev_template.data.min_current)
                 elif self.charge_template.data.chargemode.selected == "standby":
                     # Text von Zeit-und Zielladen nicht überschreiben.
                     if message is None:
@@ -379,8 +369,7 @@ def check_min_max_current(self,
                               control_parameter: ControlParameter,
                               required_current: float,
                               phases: int,
-                              charging_type: str,
-                              pv: bool = False,) -> Tuple[float, Optional[str]]:
+                              pv: bool = False) -> Tuple[float, Optional[str]]:
         """ prüft, ob der gesetzte Ladestrom über dem Mindest-Ladestrom und unter dem Maximal-Ladestrom des EVs liegt.
         Falls nicht, wird der Ladestrom auf den Mindest-Ladestrom bzw. den Maximal-Ladestrom des EV gesetzt.
         Wenn PV-Laden aktiv ist, darf die Stromstärke nicht unter den PV-Mindeststrom gesetzt werden.
@@ -392,10 +381,7 @@ def check_min_max_current(self,
             # EV soll/darf nicht laden
             if required_current != 0:
                 if not pv:
-                    if charging_type == ChargingType.AC.value:
-                        min_current = self.ev_template.data.min_current
-                    else:
-                        min_current = self.ev_template.data.dc_min_current
+                    min_current = self.ev_template.data.min_current
                 else:
                     min_current = control_parameter.required_current
                 if required_current < min_current:
@@ -403,13 +389,10 @@ def check_min_max_current(self,
                     msg = ("Die Einstellungen in dem Fahrzeug-Profil beschränken den Strom auf "
                            f"mindestens {required_current} A.")
                 else:
-                    if charging_type == ChargingType.AC.value:
-                        if phases == 1:
-                            max_current = self.ev_template.data.max_current_single_phase
-                        else:
-                            max_current = self.ev_template.data.max_current_multi_phases
+                    if phases == 1:
+                        max_current = self.ev_template.data.max_current_single_phase
                     else:
-                        max_current = self.ev_template.data.dc_max_current
+                        max_current = self.ev_template.data.max_current_multi_phases
                     if required_current > max_current:
                         required_current = max_current
                         msg = ("Die Einstellungen in dem Fahrzeug-Profil beschränken den Strom auf "
@@ -428,7 +411,7 @@ def _check_phase_switch_conditions(self,
                                        max_current_cp: int,
                                        limit: LimitingValue) -> Tuple[bool, Optional[str]]:
         # Manche EV laden mit 6.1A bei 6A Sollstrom
-        min_current = control_parameter.min_current + self.ev_template.data.nominal_difference
+        min_current = self.ev_template.data.min_current + self.ev_template.data.nominal_difference
         max_current = (min(self.ev_template.data.max_current_single_phase, max_current_cp)
                        - self.ev_template.data.nominal_difference)
         phases_in_use = control_parameter.phases
@@ -439,7 +422,7 @@ def _check_phase_switch_conditions(self,
         else:
             feed_in_yield = 0
         all_surplus = data.data.counter_all_data.get_evu_counter().get_usable_surplus(feed_in_yield)
-        required_surplus = control_parameter.min_current * max_phases_ev * 230 - get_power
+        required_surplus = self.ev_template.data.min_current * max_phases_ev * 230 - get_power
         condition_1_to_3 = (((max(get_currents) > max_current and
                             all_surplus > required_surplus) or limit == LimitingValue.UNBALANCED_LOAD.value) and
                             phases_in_use == 1)
@@ -479,11 +462,11 @@ def auto_phase_switch(self,
         if phases_in_use == 1:
             direction_str = f"Umschaltung von 1 auf {max_phases}"
             delay = cm_config.phase_switch_delay * 60
-            required_reserved_power = (control_parameter.min_current * max_phases * 230 -
+            required_reserved_power = (self.ev_template.data.min_current * max_phases * 230 -
                                        self.ev_template.data.max_current_single_phase * 230)
 
             new_phase = max_phases
-            new_current = control_parameter.min_current
+            new_current = self.ev_template.data.min_current
         else:
             direction_str = f"Umschaltung von {max_phases} auf 1"
             delay = (16 - cm_config.phase_switch_delay) * 60
@@ -607,8 +590,7 @@ class ChargeTemplate:
 
     def time_charging(self,
                       soc: Optional[float],
-                      used_amount_time_charging: float,
-                      charging_type: str) -> Tuple[int, str, Optional[str], Optional[str]]:
+                      used_amount_time_charging: float) -> Tuple[int, str, Optional[str], Optional[str]]:
         """ prüft, ob ein Zeitfenster aktiv ist und setzt entsprechend den Ladestrom
         """
         message = None
@@ -616,23 +598,22 @@ def time_charging(self,
             if self.data.time_charging.plans:
                 plan = timecheck.check_plans_timeframe(self.data.time_charging.plans)
                 if plan is not None:
-                    current = plan.current if charging_type == ChargingType.AC.value else plan.dc_current
                     if self.data.et.active and data.data.optional_data.et_provider_availble():
                         if not data.data.optional_data.et_price_lower_than_limit(self.data.et.max_price):
                             return 0, "stop", self.CHARGING_PRICE_EXCEEDED, plan.name
                     if plan.limit.selected == "none":  # kein Limit konfiguriert, mit konfigurierter Stromstärke laden
-                        return current, "time_charging", message, plan.name
+                        return plan.current, "time_charging", message, plan.name
                     elif plan.limit.selected == "soc":  # SoC Limit konfiguriert
                         if soc:
                             if soc < plan.limit.soc:
-                                return current, "time_charging", message, plan.name  # Limit nicht erreicht
+                                return plan.current, "time_charging", message, plan.name  # Limit nicht erreicht
                             else:
                                 return 0, "stop", self.TIME_CHARGING_SOC_REACHED, plan.name  # Limit erreicht
                         else:
                             return plan.current, "time_charging", message, plan.name
                     elif plan.limit.selected == "amount":  # Energiemengenlimit konfiguriert
                         if used_amount_time_charging < plan.limit.amount:
-                            return current, "time_charging", message, plan.name  # Limit nicht erreicht
+                            return plan.current, "time_charging", message, plan.name  # Limit nicht erreicht
                         else:
                             return 0, "stop", self.TIME_CHARGING_AMOUNT_REACHED, plan.name  # Limit erreicht
                     else:
@@ -652,33 +633,28 @@ def time_charging(self,
 
     def instant_charging(self,
                          soc: Optional[float],
-                         imported_instant_charging: float,
-                         charging_type: str) -> Tuple[int, str, Optional[str]]:
+                         imported_instant_charging: float) -> Tuple[int, str, Optional[str]]:
         """ prüft, ob die Lademengenbegrenzung erreicht wurde und setzt entsprechend den Ladestrom.
         """
         message = None
         try:
             instant_charging = self.data.chargemode.instant_charging
-            if charging_type == ChargingType.AC.value:
-                current = instant_charging.current
-            else:
-                current = instant_charging.dc_current
             if self.data.et.active and data.data.optional_data.et_provider_availble():
                 if not data.data.optional_data.et_price_lower_than_limit(self.data.et.max_price):
                     return 0, "stop", self.CHARGING_PRICE_EXCEEDED
             if instant_charging.limit.selected == "none":
-                return current, "instant_charging", message
+                return instant_charging.current, "instant_charging", message
             elif instant_charging.limit.selected == "soc":
                 if soc:
                     if soc < instant_charging.limit.soc:
-                        return current, "instant_charging", message
+                        return instant_charging.current, "instant_charging", message
                     else:
                         return 0, "stop", self.INSTANT_CHARGING_SOC_REACHED
                 else:
-                    return current, "instant_charging", message
+                    return instant_charging.current, "instant_charging", message
             elif instant_charging.limit.selected == "amount":
                 if imported_instant_charging < self.data.chargemode.instant_charging.limit.amount:
-                    return current, "instant_charging", message
+                    return instant_charging.current, "instant_charging", message
                 else:
                     return 0, "stop", self.INSTANT_CHARGING_AMOUNT_REACHED
             else:
@@ -689,7 +665,7 @@ def instant_charging(self,
 
     PV_CHARGING_SOC_REACHED = "Keine Ladung, da der maximale Soc bereits erreicht wurde."
 
-    def pv_charging(self, soc: Optional[float], min_current: int, charging_type: str) -> Tuple[int, str, Optional[str]]:
+    def pv_charging(self, soc: Optional[float], min_current: int) -> Tuple[int, str, Optional[str]]:
         """ prüft, ob Min-oder Max-Soc erreicht wurden und setzt entsprechend den Ladestrom.
         """
         message = None
@@ -698,21 +674,13 @@ def pv_charging(self, soc: Optional[float], min_current: int, charging_type: str
             if soc is None or soc < pv_charging.max_soc:
                 if pv_charging.min_soc != 0 and soc is not None:
                     if soc < pv_charging.min_soc:
-                        if charging_type == ChargingType.AC.value:
-                            current = pv_charging.min_soc_current
-                        else:
-                            current = pv_charging.dc_min_soc_current
-                        return current, "instant_charging", message
-                if charging_type == ChargingType.AC.value:
-                    pv_min_current = pv_charging.min_current
-                else:
-                    pv_min_current = pv_charging.dc_min_current
-                if pv_min_current == 0:
+                        return pv_charging.min_soc_current, "instant_charging", message
+                if pv_charging.min_current == 0:
                     # nur PV; Ampere darf nicht 0 sein, wenn geladen werden soll
                     return min_current, "pv_charging", message
                 else:
                     # Min PV
-                    return pv_min_current, "instant_charging", message
+                    return pv_charging.min_current, "instant_charging", message
             else:
                 return 0, "stop", self.PV_CHARGING_SOC_REACHED
         except Exception:
@@ -725,36 +693,28 @@ def scheduled_charging_recent_plan(self,
                                        phases: int,
                                        used_amount: float,
                                        max_phases: int,
-                                       phase_switch_supported: bool,
-                                       charging_type: str) -> Tuple[Optional[SelectedPlan], float]:
+                                       phase_switch_supported: bool) -> Tuple[Optional[SelectedPlan], float]:
         """ prüft, ob der Ziel-SoC oder die Ziel-Energiemenge erreicht wurde und stellt den zur Erreichung nötigen
         Ladestrom ein. Um etwas mehr Puffer zu haben, wird bis 20 Min nach dem Zieltermin noch geladen, wenn dieser
         nicht eingehalten werden konnte.
         """
         if phase_switch_supported and data.data.general_data.get_phases_chargemode("scheduled_charging",
                                                                                    "instant_charging") == 0:
-            if charging_type == ChargingType.AC.value:
-                max_current = ev_template.data.max_current_multi_phases
-            else:
-                max_current = ev_template.data.dc_max_current
-            plan_data = self.search_plan(max_current, soc, ev_template, max_phases, used_amount, charging_type)
-            if plan_data and charging_type == ChargingType.AC.value:
+            max_current = ev_template.data.max_current_multi_phases
+            plan_data = self.search_plan(max_current, soc, ev_template, max_phases, used_amount)
+            if plan_data:
                 if plan_data.remaining_time > 300 and self.data.et.active is False:
                     max_current = ev_template.data.max_current_single_phase
-                    plan_data_single_phase = self.search_plan(
-                        max_current, soc, ev_template, 1, used_amount, charging_type)
+                    plan_data_single_phase = self.search_plan(max_current, soc, ev_template, 1, used_amount)
                     if plan_data_single_phase:
                         if plan_data_single_phase.remaining_time > 300:
                             plan_data = plan_data_single_phase
         else:
-            if charging_type == ChargingType.AC.value:
-                if phases == 1:
-                    max_current = ev_template.data.max_current_single_phase
-                else:
-                    max_current = ev_template.data.max_current_multi_phases
+            if phases == 1:
+                max_current = ev_template.data.max_current_single_phase
             else:
-                max_current = ev_template.data.dc_max_current
-            plan_data = self.search_plan(max_current, soc, ev_template, phases, used_amount, charging_type)
+                max_current = ev_template.data.max_current_multi_phases
+            plan_data = self.search_plan(max_current, soc, ev_template, phases, used_amount)
         return plan_data
 
     def search_plan(self,
@@ -762,8 +722,7 @@ def search_plan(self,
                     soc: Optional[float],
                     ev_template: EvTemplate,
                     phases: int,
-                    used_amount: float,
-                    charging_type: str) -> Optional[SelectedPlan]:
+                    used_amount: float) -> Optional[SelectedPlan]:
         smallest_remaining_time = float("inf")
         missed_date_today_of_plan_with_smallest_remaining_time = False
         plan_data: Optional[SelectedPlan] = None
@@ -774,8 +733,7 @@ def search_plan(self,
                     raise ValueError("Um Zielladen mit SoC-Ziel nutzen zu können, bitte ein SoC-Modul konfigurieren "
                                      f"oder im Plan {plan.name} als Begrenzung Energie einstellen.")
                 try:
-                    duration, missing_amount = self.calculate_duration(
-                        plan, soc, battery_capacity, used_amount, phases, charging_type)
+                    duration, missing_amount = self.calculate_duration(plan, soc, battery_capacity, used_amount, phases)
                     remaining_time, missed_date_today = timecheck.check_duration(plan, duration, self.BUFFER)
                     if remaining_time:
                         # Wenn der Zeitpunkt vorüber, aber noch nicht abgelaufen ist oder
@@ -790,13 +748,9 @@ def search_plan(self,
                                     (missed_date_today_of_plan_with_smallest_remaining_time and 0 < remaining_time)):
                                 smallest_remaining_time = remaining_time
                                 missed_date_today_of_plan_with_smallest_remaining_time = missed_date_today
-                                if charging_type == ChargingType.AC.value:
-                                    available_current = plan.current
-                                else:
-                                    available_current = plan.dc_current
                                 plan_data = SelectedPlan(
                                     remaining_time=remaining_time,
-                                    available_current=available_current,
+                                    available_current=plan.current,
                                     max_current=max_current,
                                     phases=phases,
                                     num=num,
@@ -813,8 +767,7 @@ def calculate_duration(self,
                            soc: Optional[float],
                            battery_capacity: float,
                            used_amount: float,
-                           phases: int,
-                           charging_type: str) -> Tuple[float, float]:
+                           phases: int) -> Tuple[float, float]:
         if plan.limit.selected == "soc":
             if soc:
                 missing_amount = ((plan.limit.soc_scheduled - soc) / 100) * battery_capacity
@@ -822,8 +775,7 @@ def calculate_duration(self,
                 raise ValueError("Um Zielladen mit SoC-Ziel nutzen zu können, bitte ein SoC-Modul konfigurieren.")
         else:
             missing_amount = plan.limit.amount - used_amount
-        current = plan.current if charging_type == ChargingType.AC.value else plan.dc_current
-        duration = missing_amount/(current * phases*230) * 3600
+        duration = missing_amount/(plan.current * phases*230) * 3600
         return duration, missing_amount
 
     SCHEDULED_REACHED_LIMIT_SOC = ("Kein Zielladen, da noch Zeit bis zum Zieltermin ist. "
diff --git a/packages/control/ev_charge_template_test.py b/packages/control/ev_charge_template_test.py
index cb60b28657..c83775471a 100644
--- a/packages/control/ev_charge_template_test.py
+++ b/packages/control/ev_charge_template_test.py
@@ -5,7 +5,6 @@
 
 from control import data
 from control import optional
-from control.chargepoint.charging_type import ChargingType
 from control.ev import ChargeTemplate, EvTemplate, EvTemplateData, SelectedPlan
 from control.general import General
 from helpermodules import timecheck
@@ -61,7 +60,7 @@ def test_time_charging(plans: Dict[int, TimeChargingPlan], soc: float, used_amou
     monkeypatch.setattr(timecheck, "check_plans_timeframe", check_plans_timeframe_mock)
 
     # execution
-    ret = ct.time_charging(soc, used_amount_time_charging, ChargingType.AC.value)
+    ret = ct.time_charging(soc, used_amount_time_charging)
 
     # evaluation
     assert ret == expected
@@ -87,7 +86,7 @@ def test_instant_charging(selected: str, current_soc: float, used_amount: float,
     ct.data.chargemode.instant_charging.limit.selected = selected
 
     # execution
-    ret = ct.instant_charging(current_soc, used_amount, ChargingType.AC.value)
+    ret = ct.instant_charging(current_soc, used_amount)
 
     # evaluation
     assert ret == expected
@@ -111,7 +110,7 @@ def test_pv_charging(min_soc: int, min_current: int, current_soc: float,
     data.data.bat_all_data.data.config.configured = True
 
     # execution
-    ret = ct.pv_charging(current_soc, 6, ChargingType.AC.value)
+    ret = ct.pv_charging(current_soc, 6)
 
     # evaluation
     assert ret == expected
@@ -152,8 +151,7 @@ def test_scheduled_charging_recent_plan(params: Params, monkeypatch):
     evt = Mock(spec=EvTemplate, data=evt_data)
 
     # execution
-    ct.scheduled_charging_recent_plan(50, evt, params.phases, 5, params.max_phases,
-                                      params.phase_switch_supported, ChargingType.AC.value)
+    ct.scheduled_charging_recent_plan(50, evt, params.phases, 5, params.max_phases, params.phase_switch_supported)
 
     # evaluation
     assert search_plan_mock.call_args.args[0] == params.expected_max_current
@@ -172,7 +170,7 @@ def test_calculate_duration(selected: str, phases: int, expected_duration: float
     plan = ScheduledChargingPlan()
     plan.limit.selected = selected
     # execution
-    duration, missing_amount = ct.calculate_duration(plan, 60, 45000, 200, phases, ChargingType.AC.value)
+    duration, missing_amount = ct.calculate_duration(plan, 60, 45000, 200, phases)
 
     # evaluation
     assert duration == expected_duration
@@ -201,7 +199,7 @@ def test_search_plan(check_duration_return1: Tuple[Optional[float], bool],
     plan_mock = Mock(spec=ScheduledChargingPlan, active=True, current=14, limit=Limit(selected="amount"))
     ct.data.chargemode.scheduled_charging.plans = {0: plan_mock, 1: plan_mock}
     # execution
-    plan_data = ct.search_plan(14, 60, EvTemplate(), 3, 200, ChargingType.AC.value)
+    plan_data = ct.search_plan(14, 60, EvTemplate(), 3, 200)
 
     # evaluation
     if expected_plan_num is None:
diff --git a/packages/control/optional.py b/packages/control/optional.py
index d6e4456188..6b0bd1f347 100644
--- a/packages/control/optional.py
+++ b/packages/control/optional.py
@@ -7,7 +7,6 @@
 from typing import Dict, List
 
 from dataclass_utils.factories import empty_dict_factory
-from helpermodules import hardware_configuration
 from helpermodules.constants import NO_ERROR
 from helpermodules.pub import Pub
 from helpermodules.timecheck import create_unix_timestamp_current_full_hour
@@ -76,7 +75,6 @@ class OptionalData:
     int_display: InternalDisplay = field(default_factory=int_display_factory)
     led: Led = field(default_factory=led_factory)
     rfid: Rfid = field(default_factory=rfid_factory)
-    dc_charging: bool = False
 
 
 class Optional:
@@ -84,8 +82,6 @@ def __init__(self):
         try:
             self.data = OptionalData()
             self.et_module: ConfigurableElectricityTariff = None
-            self.data.dc_charging = hardware_configuration.get_hardware_configuration_setting("dc_charging")
-            Pub().pub("openWB/optional/dc_charging", self.data.dc_charging)
         except Exception:
             log.exception("Fehler im Optional-Modul")
 
diff --git a/packages/helpermodules/abstract_plans.py b/packages/helpermodules/abstract_plans.py
index b690c0a20f..0e2967cfe8 100644
--- a/packages/helpermodules/abstract_plans.py
+++ b/packages/helpermodules/abstract_plans.py
@@ -62,7 +62,6 @@ class TimeframePlan(PlanBase):
 @dataclass
 class ScheduledChargingPlan(PlanBase):
     current: int = 14
-    dc_current: float = 145
     name: str = "neuer Zielladen-Plan"
     limit: ScheduledLimit = field(default_factory=scheduled_limit_factory)
     time: str = "07:00"  # ToDo: aktuelle Zeit verwenden
@@ -72,7 +71,6 @@ class ScheduledChargingPlan(PlanBase):
 class TimeChargingPlan(TimeframePlan):
     name: str = "neuer Zeitladen-Plan"
     current: int = 16
-    dc_current: float = 145
     limit: Limit = field(default_factory=limit_factory)
 
 
diff --git a/packages/helpermodules/changed_values_handler_test.py b/packages/helpermodules/changed_values_handler_test.py
index 189912e814..2e9225f435 100644
--- a/packages/helpermodules/changed_values_handler_test.py
+++ b/packages/helpermodules/changed_values_handler_test.py
@@ -1,21 +1,16 @@
 from dataclasses import asdict, dataclass, field
-from enum import IntEnum
 from typing import Dict, List, Optional, Tuple
 from unittest.mock import Mock
 
 import pytest
 
+from control.chargepoint.chargepoint_state import ChargepointState
 from dataclass_utils.factories import currents_list_factory
 from helpermodules.changed_values_handler import ChangedValuesHandler
 
 NONE_TYPE = type(None)
 
 
-class SampleIntEnum(IntEnum):
-    VALUE1 = 1
-    VALUE2 = 2
-
-
 @dataclass
 class SampleClass:
     parameter1: bool = False
@@ -51,7 +46,7 @@ class SampleData:
         default_factory=sample_class, metadata={"topic": "get/field_class"})
     sample_field_dict: Dict = field(default_factory=sample_dict_factory, metadata={
         "topic": "get/field_dict"})
-    sample_field_enum: SampleIntEnum = field(default=SampleIntEnum.VALUE1, metadata={
+    sample_field_enum: ChargepointState = field(default=ChargepointState.CHARGING_ALLOWED, metadata={
         "topic": "get/field_enum"})
     sample_field_float: float = field(default=0, metadata={"topic": "get/field_float"})
     sample_field_int: int = field(default=0, metadata={"topic": "get/field_int"})
@@ -82,8 +77,8 @@ class Params:
            expected_pub_call=("openWB/get/field_class", asdict(SampleClass(parameter1=True)))),
     Params(name="change dict", sample_data=SampleData(sample_field_dict={"key": "another_value"}),
            expected_pub_call=("openWB/get/field_dict", {"key": "another_value"})),
-    Params(name="change enum", sample_data=SampleData(sample_field_enum=SampleIntEnum.VALUE2),
-           expected_pub_call=("openWB/get/field_enum", SampleIntEnum.VALUE2.value)),
+    Params(name="change enum", sample_data=SampleData(sample_field_enum=ChargepointState.NO_CHARGING_ALLOWED),
+           expected_pub_call=("openWB/get/field_enum", ChargepointState.NO_CHARGING_ALLOWED.value)),
     Params(name="change float", sample_data=SampleData(sample_field_float=2.5),
            expected_pub_call=("openWB/get/field_float", 2.5)),
     Params(name="change int", sample_data=SampleData(sample_field_int=2),
@@ -103,7 +98,7 @@ class Params:
 
 
 @pytest.mark.parametrize("params", cases, ids=[c.name for c in cases])
-def test_update_value(params: Params, mock_pub: Mock, monkeypatch):
+def test_update_value(params: Params, mock_pub: Mock):
     # setup
     handler = ChangedValuesHandler(Mock())
 
@@ -111,6 +106,6 @@ def test_update_value(params: Params, mock_pub: Mock, monkeypatch):
     handler._update_value("openWB/", SampleData(), params.sample_data)
 
     # evaluation
-    assert len(mock_pub.method_calls) - 1 == params.expected_calls
+    assert len(mock_pub.method_calls) == params.expected_calls
     if params.expected_calls > 0:
-        assert mock_pub.method_calls[1].args == params.expected_pub_call
+        assert mock_pub.method_calls[0].args == params.expected_pub_call
diff --git a/packages/helpermodules/hardware_configuration.py b/packages/helpermodules/hardware_configuration.py
index cb439b7206..cb81289693 100644
--- a/packages/helpermodules/hardware_configuration.py
+++ b/packages/helpermodules/hardware_configuration.py
@@ -7,28 +7,23 @@
 HARDWARE_CONFIGURATION_FILE = "/home/openwb/configuration.json"
 
 
-def _read_configuration() -> Dict:
-    with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
-        return json.loads(f.read())
-
-
 def update_hardware_configuration(new_setting: Dict) -> None:
-    data = _read_configuration()
+    with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
+        data = json.loads(f.read())
     write_and_check(HARDWARE_CONFIGURATION_FILE, data.update(new_setting))
 
 
 def remove_setting_hardware_configuration(obsolet_setting: str) -> None:
-    data = _read_configuration()
+    with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
+        data = json.loads(f.read())
     if obsolet_setting in data:
         write_and_check(HARDWARE_CONFIGURATION_FILE, data.pop(obsolet_setting))
 
 
 def get_hardware_configuration_setting(name: str, default=None):
-    return _read_configuration().get(name, default)
-
-
-def exists_hardware_configuration_setting(name: str) -> bool:
-    return name in _read_configuration()
+    with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
+        configuration = json.loads(f.read())
+    return configuration.get(name, default)
 
 
 def get_serial_number() -> str:
diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py
index 27431294df..1af3fe797b 100644
--- a/packages/helpermodules/setdata.py
+++ b/packages/helpermodules/setdata.py
@@ -10,7 +10,7 @@
 import paho.mqtt.client as mqtt
 
 import logging
-from helpermodules import hardware_configuration, subdata
+from helpermodules import subdata
 from helpermodules.broker import InternalBrokerClient
 from helpermodules.pub import Pub, pub_single
 from helpermodules.utils.topic_parser import (decode_payload, get_index, get_index_position, get_second_index,
@@ -452,8 +452,6 @@ def _subprocess_vehicle_chargemode_topic(self, msg: mqtt.MQTTMessage):
                     self._validate_value(msg, str, pub_json=True)
                 elif "/chargemode/instant_charging/current" in msg.topic:
                     self._validate_value(msg, int, [(6, 32)], pub_json=True)
-                elif "/chargemode/instant_charging/dc_current" in msg.topic:
-                    self._validate_value(msg, float, [(4, 300)], pub_json=True)
                 elif "/chargemode/instant_charging/limit/selected" in msg.topic:
                     self._validate_value(msg, str, pub_json=True)
                 elif "/chargemode/instant_charging/limit/soc" in msg.topic:
@@ -465,14 +463,10 @@ def _subprocess_vehicle_chargemode_topic(self, msg: mqtt.MQTTMessage):
                 elif "/chargemode/pv_charging/min_current" in msg.topic:
                     self._validate_value(
                         msg, int, [(0, 0), (6, 16)], pub_json=True)
-                elif "/chargemode/pv_charging/dc_min_current" in msg.topic:
-                    self._validate_value(msg, float, [(0, 300)], pub_json=True)
                 elif "/chargemode/pv_charging/min_soc" in msg.topic:
                     self._validate_value(msg, int, [(0, 100)], pub_json=True)
                 elif "/chargemode/pv_charging/min_soc_current" in msg.topic:
                     self._validate_value(msg, int, [(6, 32)], pub_json=True)
-                elif "/chargemode/pv_charging/dc_min_soc_current" in msg.topic:
-                    self._validate_value(msg, float, [(4, 300)], pub_json=True)
                 elif "/chargemode/pv_charging/max_soc" in msg.topic:
                     self._validate_value(msg, int, [(0, 101)], pub_json=True)
                 elif "/chargemode/scheduled_charging/plans/" in msg.topic and "/active" in msg.topic:
@@ -527,10 +521,7 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                         "/set/charging_ev_prev" in msg.topic):
                     self._validate_value(msg, int, [(-1, float("inf"))])
                 elif "/set/current" in msg.topic:
-                    if hardware_configuration.get_hardware_configuration_setting("dc_charging"):
-                        self._validate_value(msg, float, [(0, 0), (6, 32), (0, 450)])
-                    else:
-                        self._validate_value(msg, float, [(6, 32), (0, 0)])
+                    self._validate_value(msg, float, [(6, 32), (0, 0)])
                 elif ("/set/energy_to_charge" in msg.topic or
                         "/set/required_power" in msg.topic):
                     self._validate_value(msg, float, [(0, float("inf"))])
@@ -554,10 +545,7 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                 elif "get" in msg.topic:
                     self.process_chargepoint_get_topics(msg)
                 elif "/control_parameter/required_current" in msg.topic:
-                    if hardware_configuration.get_hardware_configuration_setting("dc_charging"):
-                        self._validate_value(msg, float, [(0, 0), (6, 32), (0, 450)])
-                    else:
-                        self._validate_value(msg, float, [(6, 32), (0, 0)])
+                    self._validate_value(msg, float, [(6, 32), (0, 0)])
                 elif "/control_parameter/phases" in msg.topic:
                     self._validate_value(msg, int, [(0, 3)])
                 elif "/control_parameter/failed_phase_switches" in msg.topic:
@@ -572,10 +560,8 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                     self._validate_value(msg, str)
                 elif ("/control_parameter/imported_instant_charging" in msg.topic or
                         "/control_parameter/imported_at_plan_start" in msg.topic or
-                        "/control_parameter/min_current" in msg.topic or
                         "/control_parameter/timestamp_switch_on_off" in msg.topic or
                         "/control_parameter/timestamp_auto_phase_switch" in msg.topic or
-                        "/control_parameter/timestamp_charge_start" in msg.topic or
                         "/control_parameter/timestamp_perform_phase_switch" in msg.topic):
                     self._validate_value(msg, float, [(0, float("inf"))])
                 elif "/control_parameter/state" in msg.topic:
@@ -602,9 +588,6 @@ def process_chargepoint_get_topics(self, msg):
         elif ("/get/daily_imported" in msg.topic or
                 "/get/daily_exported" in msg.topic or
                 "/get/power" in msg.topic or
-                "/get/charging_current" in msg.topic or
-                "/get/charging_power" in msg.topic or
-                "/get/charging_voltage" in msg.topic or
                 "/get/imported" in msg.topic or
                 "/get/exported" in msg.topic or
                 "/get/soc_timestamp" in msg.topic):
@@ -627,12 +610,10 @@ def process_chargepoint_get_topics(self, msg):
                 "/get/vehicle_id" in msg.topic or
                 "/get/serial_number" in msg.topic):
             self._validate_value(msg, str)
-        elif ("/get/soc" in msg.topic):
-            self._validate_value(msg, float, [(0, 100)])
         elif "/get/rfid_timestamp" in msg.topic:
             self._validate_value(msg, float)
-        elif "/get/simulation" in msg.topic:
-            self._validate_value(msg, "json")
+        elif ("/get/soc" in msg.topic):
+            self._validate_value(msg, float, [(0, 100)])
         else:
             self.__unknown_topic(msg)
 
@@ -885,7 +866,7 @@ def process_counter_topic(self, msg: mqtt.MQTTMessage):
             enthält Topic und Payload
         """
         try:
-            if ("openWB/set/counter/config/consider_less_charging" in msg.topic or
+            if ("openWB/set/counter/config/reserve_for_not_charging" in msg.topic or
                     "openWB/set/counter/set/loadmanagement_active" in msg.topic):
                 self._validate_value(msg, bool)
             elif "openWB/set/counter/set/invalid_home_consumption" in msg.topic:
diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py
index 728e2e3cab..d8bc88df2b 100644
--- a/packages/helpermodules/subdata.py
+++ b/packages/helpermodules/subdata.py
@@ -425,18 +425,13 @@ def process_chargepoint_topic(self, var: Dict[str, chargepoint.Chargepoint], msg
                     elif re.search("/chargepoint/[0-9]+/get/", msg.topic) is not None:
                         if re.search("/chargepoint/[0-9]+/get/connected_vehicle/", msg.topic) is not None:
                             self.set_json_payload_class(var["cp"+index].chargepoint.data.get.connected_vehicle, msg)
-                        elif (re.search("/chargepoint/[0-9]+/get/soc$", msg.topic) is not None and
-                              decode_payload(msg.payload) != var["cp"+index].chargepoint.data.get.soc):
-                            # Wenn das Auto noch nicht zugeordnet ist, wird der SoC nach der Zuordnung aktualisiert
-                            if var["cp"+index].chargepoint.data.set.charging_ev > -1:
-                                Pub().pub(f'openWB/set/vehicle/{var["cp"+index].chargepoint.data.set.charging_ev}'
-                                          '/get/force_soc_update', True)
-                            self.set_json_payload_class(var["cp"+index].chargepoint.data.get, msg)
-                        elif re.search("/chargepoint/[0-9]+/get/simulation$", msg.topic) is not None:
-                            var["cp"+index].chargepoint.chargepoint_module.sim_counter.data = dataclass_from_dict(
-                                SimCounterState,
-                                decode_payload(msg.payload))
-                        else:
+                        elif re.search("/chargepoint/[0-9]+/get/", msg.topic) is not None:
+                            if (re.search("/chargepoint/[0-9]+/get/soc$", msg.topic) is not None and
+                                    decode_payload(msg.payload) != var["cp"+index].chargepoint.data.get.soc):
+                                # Wenn das Auto noch nicht zugeordnet ist, wird der SoC nach der Zuordnung aktualisiert
+                                if var["cp"+index].chargepoint.data.set.charging_ev > -1:
+                                    Pub().pub(f'openWB/set/vehicle/{var["cp"+index].chargepoint.data.set.charging_ev}'
+                                              '/get/force_soc_update', True)
                             self.set_json_payload_class(var["cp"+index].chargepoint.data.get, msg)
                     elif re.search("/chargepoint/[0-9]+/config$", msg.topic) is not None:
                         self.process_chargepoint_config_topic(var, msg)
diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 8a85a63b64..c636ba1c60 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -9,7 +9,6 @@
 from typing import List, Optional
 from paho.mqtt.client import Client as MqttClient, MQTTMessage
 from control.bat_all import BatConsiderationMode
-from control.chargepoint.charging_type import ChargingType
 from control.general import ChargemodeConfig
 import dataclass_utils
 
@@ -43,7 +42,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 56
+    DATASTORE_VERSION = 54
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -107,7 +106,6 @@ class UpdateConfig:
         "^openWB/chargepoint/[0-9]+/get/serial_number$",
         "^openWB/chargepoint/[0-9]+/get/soc$",
         "^openWB/chargepoint/[0-9]+/get/soc_timestamp$",
-        "^openWB/chargepoint/[0-9]+/get/simulation$",
         "^openWB/chargepoint/[0-9]+/get/state_str$",
         "^openWB/chargepoint/[0-9]+/get/connected_vehicle/soc$",
         "^openWB/chargepoint/[0-9]+/get/connected_vehicle/info$",
@@ -138,7 +136,7 @@ class UpdateConfig:
         "^openWB/command/[A-Za-z0-9_]+/error$",
         "^openWB/command/todo$",
 
-        "^openWB/counter/config/consider_less_charging$",
+        "^openWB/counter/config/reserve_for_not_charging$",
         "^openWB/counter/config/home_consumption_source_id$",
         "^openWB/counter/get/hierarchy$",
         "^openWB/counter/set/disengageable_smarthome_power$",
@@ -425,7 +423,7 @@ class UpdateConfig:
         ("openWB/chargepoint/get/power", 0),
         ("openWB/chargepoint/template/0", get_chargepoint_template_default()),
         ("openWB/counter/get/hierarchy", []),
-        ("openWB/counter/config/consider_less_charging", counter_all.Config().consider_less_charging),
+        ("openWB/counter/config/reserve_for_not_charging", counter_all.Config().reserve_for_not_charging),
         ("openWB/counter/config/home_consumption_source_id", counter_all.Config().home_consumption_source_id),
         ("openWB/vehicle/0/name", "Standard-Fahrzeug"),
         ("openWB/vehicle/0/charge_template", ev.Ev(0).charge_template.ct_num),
@@ -1355,6 +1353,7 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: updated_payload}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 39)
+        Pub().pub("openWB/system/datastore_version", 39)
 
     def upgrade_datastore_39(self) -> None:
         def upgrade(topic: str, payload) -> None:
@@ -1655,25 +1654,3 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: configuration_payload}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 54)
-
-    def upgrade_datastore_54(self) -> None:
-        def upgrade(topic: str, payload) -> Optional[dict]:
-            if "openWB/counter/config/reserve_for_less_charging" == topic:
-                payload = decode_payload(payload)
-                return {"openWB/counter/config/consider_less_charging": payload}
-        self._loop_all_received_topics(upgrade)
-        self.__update_topic("openWB/system/datastore_version", 55)
-
-    def upgrade_datastore_55(self) -> None:
-        if hardware_configuration.exists_hardware_configuration_setting("dc_charging") is False:
-            hardware_configuration.update_hardware_configuration({"dc_charging": False})
-
-        def upgrade(topic: str, payload) -> Optional[dict]:
-            if re.search("openWB/chargepoint/template/[0-9]+", topic) is not None:
-                payload = decode_payload(payload)
-                if "charging_type" not in payload:
-                    updated_payload = payload
-                    updated_payload["charging_type"] = ChargingType.AC.value
-                    return {topic: updated_payload}
-        self._loop_all_received_topics(upgrade)
-        self.__update_topic("openWB/system/datastore_version", 56)
diff --git a/packages/modules/chargepoints/external_openwb/config.py b/packages/modules/chargepoints/external_openwb/config.py
index 50c322aeb5..9f95f58ae9 100644
--- a/packages/modules/chargepoints/external_openwb/config.py
+++ b/packages/modules/chargepoints/external_openwb/config.py
@@ -1,7 +1,5 @@
 from typing import Optional
 
-from modules.common.abstract_chargepoint import SetupChargepoint
-
 
 class OpenWBSeriesConfiguration:
     def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
@@ -9,10 +7,13 @@ def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
         self.duo_num = duo_num
 
 
-class OpenWBSeries(SetupChargepoint[OpenWBSeriesConfiguration]):
+class OpenWBSeries:
     def __init__(self,
                  name: str = "Externe openWB",
                  type: str = "external_openwb",
                  id: int = 0,
                  configuration: OpenWBSeriesConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration or OpenWBSeriesConfiguration())
+        self.name = name
+        self.type = type
+        self.id = id
+        self.configuration = configuration or OpenWBSeriesConfiguration()
diff --git a/packages/modules/chargepoints/internal_openwb/config.py b/packages/modules/chargepoints/internal_openwb/config.py
index 94f7f6253d..e8899b15c3 100644
--- a/packages/modules/chargepoints/internal_openwb/config.py
+++ b/packages/modules/chargepoints/internal_openwb/config.py
@@ -1,7 +1,5 @@
 from enum import Enum
 
-from modules.common.abstract_chargepoint import SetupChargepoint
-
 
 class InternalChargepointMode(Enum):
     SOCKET = "socket"
@@ -16,10 +14,13 @@ def __init__(self, mode: str = InternalChargepointMode.SERIES.value, duo_num: in
         self.duo_num = duo_num
 
 
-class InternalOpenWB(SetupChargepoint[InternalOpenWBConfiguration]):
+class InternalOpenWB:
     def __init__(self,
                  name: str = "Interne openWB",
                  type: str = "internal_openwb",
                  id: int = 0,
                  configuration: InternalOpenWBConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration or InternalOpenWBConfiguration())
+        self.name = name
+        self.type = type
+        self.id = id
+        self.configuration = configuration or InternalOpenWBConfiguration()
diff --git a/packages/modules/chargepoints/mqtt/config.py b/packages/modules/chargepoints/mqtt/config.py
index 7d96e7242f..0020bba750 100644
--- a/packages/modules/chargepoints/mqtt/config.py
+++ b/packages/modules/chargepoints/mqtt/config.py
@@ -1,15 +1,15 @@
-from modules.common.abstract_chargepoint import SetupChargepoint
-
-
 class MqttConfiguration:
     def __init__(self):
         pass
 
 
-class Mqtt(SetupChargepoint[MqttConfiguration]):
+class Mqtt:
     def __init__(self,
                  name: str = "MQTT-Ladepunkt",
                  type: str = "mqtt",
                  id: int = 0,
                  configuration: MqttConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration or MqttConfiguration())
+        self.name = name
+        self.type = type
+        self.id = id
+        self.configuration = configuration or MqttConfiguration()
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/__init__.py b/packages/modules/chargepoints/openwb_dc_adapter/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
deleted file mode 100644
index 3dcc7f4181..0000000000
--- a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
+++ /dev/null
@@ -1,125 +0,0 @@
-
-from enum import IntEnum
-import logging
-
-from helpermodules import hardware_configuration
-from helpermodules.utils.error_counter import ErrorCounterContext
-from modules.chargepoints.openwb_dc_adapter.config import OpenWBDcAdapter
-from modules.common.abstract_chargepoint import AbstractChargepoint
-from modules.common.abstract_device import DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-from modules.common.fault_state import ComponentInfo, FaultState
-from modules.common.simcount import SimCounterChargepoint
-from modules.common.store import get_chargepoint_value_store
-from modules.common.component_state import ChargepointState
-from modules.common import req
-
-log = logging.getLogger(__name__)
-
-
-class ChargingStatus(IntEnum):
-    AVAILABLE = 0
-    PREPARING_TAGID_READY = 1
-    PREPARING_EV_READY = 2
-    CHARGING = 3
-    SUSPENDED_EV = 4
-    SUSPENDED_EVSE = 5
-    FINISHING = 6
-    RESERVED = 7
-    UNAVAILABLE = 8
-    UNAVAILABLE_FW_UPDATE = 9
-    FAULTED = 10
-    UNAVAILABLE_CONN_OBJ = 11
-
-
-class ChargepointModule(AbstractChargepoint):
-    def __init__(self, config: OpenWBDcAdapter) -> None:
-        self.config = config
-        self.store = get_chargepoint_value_store(self.config.id)
-        self.fault_state = FaultState(ComponentInfo(
-            self.config.id,
-            "Ladepunkt", "chargepoint"))
-        self.sim_counter = SimCounterChargepoint(self.config.id)
-        self.__session = req.get_http_session()
-        self.__client_error_context = ErrorCounterContext(
-            "Anhaltender Fehler beim Auslesen des Ladepunkts. Sollstromstärke wird zurückgesetzt.")
-        if hardware_configuration.get_hardware_configuration_setting("openwb_dc_adapter") is False:
-            raise Exception(
-                "DC-Laden muss durch den Support freigeschaltet werden. Bitte nehme Kontakt mit dem Support auf.")
-        self.efficiency = None
-
-        with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
-                self.__session.post(
-                    'http://' + self.config.configuration.ip_address + '/connect.php',
-                    data={'heartbeatenabled': '1'})
-
-    def set_current(self, current: float) -> None:
-        if self.__client_error_context.error_counter_exceeded():
-            current = 0
-        with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
-                ip_address = self.config.configuration.ip_address
-                raw_current = self.subtract_conversion_loss_from_current(current)
-                raw_power = raw_current * 3 * 230
-                log.debug(f"DC-Stromstärke: {raw_current}A ≙ {raw_power / 1000}kW")
-                self.__session.post('http://'+ip_address+'/connect.php', data={'power': raw_power})
-
-    def subtract_conversion_loss_from_current(self, current: float) -> float:
-        return current * (self.efficiency if self.efficiency else 0.9)
-
-    def add_conversion_loss_to_current(self, current: float) -> float:
-        return current / (self.efficiency if self.efficiency else 0.9)
-
-    def get_values(self) -> None:
-        with SingleComponentUpdateContext(self.fault_state):
-            with self.__client_error_context:
-                ip_address = self.config.configuration.ip_address
-                json_rsp = self.__session.get('http://'+ip_address+'/connect.php').json()
-
-                if json_rsp["fault_state"] == 1:
-                    self.fault_state.warning(json_rsp["fault_str"])
-                elif json_rsp["fault_state"] == 2:
-                    raise Exception(json_rsp["fault_str"])
-
-                charging_power = json_rsp["charging_power"]
-                imported, exported = self.sim_counter.sim_count(charging_power)
-                chargepoint_state = ChargepointState(
-                    charge_state=json_rsp["charge_state"],
-                    charging_current=json_rsp["charging_current"],
-                    charging_power=charging_power,
-                    charging_voltage=json_rsp["charging_voltage"],
-                    currents=json_rsp["currents"],
-                    exported=exported,
-                    imported=imported,
-                    phases_in_use=3,
-                    power=json_rsp["power_all"],
-                    powers=json_rsp["powers"],
-                    plug_state=json_rsp["plug_state"],
-                    rfid=json_rsp["rfid_tag"],
-                    soc=json_rsp["soc_value"],
-                    soc_timestamp=json_rsp["soc_timestamp"],
-                    vehicle_id=json_rsp["vehicle_id"],
-                    serial_number=json_rsp["serial"],
-                )
-
-                if chargepoint_state.charge_state:
-                    try:
-                        self.efficiency = chargepoint_state.charging_power / chargepoint_state.power
-                        log.debug(f"Effizienz: {self.efficiency}")
-                    except ZeroDivisionError:
-                        self.efficiency = None
-                else:
-                    self.efficiency = None
-                if not (json_rsp["state"] == ChargingStatus.AVAILABLE.value or
-                        json_rsp["state"] == ChargingStatus.PREPARING_TAGID_READY.value or
-                        json_rsp["state"] == ChargingStatus.PREPARING_EV_READY.value or
-                        json_rsp["state"] == ChargingStatus.CHARGING.value or
-                        json_rsp["state"] == ChargingStatus.FINISHING.value or
-                        json_rsp["state"] == ChargingStatus.UNAVAILABLE_CONN_OBJ.value):
-                    raise Exception(f"Ladepunkt nicht verfügbar. Status: {ChargingStatus(json_rsp['state'])}")
-                self.store.set(chargepoint_state)
-                self.__client_error_context.reset_error_counter()
-
-
-chargepoint_descriptor = DeviceDescriptor(configuration_factory=OpenWBDcAdapter)
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/config.py b/packages/modules/chargepoints/openwb_dc_adapter/config.py
deleted file mode 100644
index c29770895b..0000000000
--- a/packages/modules/chargepoints/openwb_dc_adapter/config.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from typing import Optional
-
-from helpermodules import hardware_configuration
-from modules.common.abstract_chargepoint import SetupChargepoint
-
-
-class OpenWBDcAdapterConfiguration:
-    def __init__(self, ip_address: Optional[str] = None):
-        self.ip_address = ip_address
-
-
-class OpenWBDcAdapter(SetupChargepoint[OpenWBDcAdapterConfiguration]):
-    def __init__(self,
-                 name: str = "openWB Adapter für DC-Lader",
-                 type: str = "openwb_dc_adapter",
-                 id: int = 0,
-                 configuration: OpenWBDcAdapterConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration or OpenWBDcAdapterConfiguration())
-        self.visibility = hardware_configuration.get_hardware_configuration_setting("dc_charging")
-        self.charging_type = "DC"
diff --git a/packages/modules/chargepoints/openwb_pro/config.py b/packages/modules/chargepoints/openwb_pro/config.py
index db54fe1672..b42a55be68 100644
--- a/packages/modules/chargepoints/openwb_pro/config.py
+++ b/packages/modules/chargepoints/openwb_pro/config.py
@@ -1,7 +1,5 @@
 from typing import Optional
 
-from modules.common.abstract_chargepoint import SetupChargepoint
-
 
 class OpenWBProConfiguration:
     def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
@@ -9,10 +7,13 @@ def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
         self.duo_num = duo_num
 
 
-class OpenWBPro(SetupChargepoint[OpenWBProConfiguration]):
+class OpenWBPro:
     def __init__(self,
                  name: str = "openWB Pro",
                  type: str = "openwb_pro",
                  id: int = 0,
                  configuration: OpenWBProConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration or OpenWBProConfiguration())
+        self.name = name
+        self.type = type
+        self.id = id
+        self.configuration = configuration or OpenWBProConfiguration()
diff --git a/packages/modules/chargepoints/openwb_series2_satellit/config.py b/packages/modules/chargepoints/openwb_series2_satellit/config.py
index b331089349..2dd674da6d 100644
--- a/packages/modules/chargepoints/openwb_series2_satellit/config.py
+++ b/packages/modules/chargepoints/openwb_series2_satellit/config.py
@@ -1,7 +1,5 @@
 from typing import Optional
 
-from modules.common.abstract_chargepoint import SetupChargepoint
-
 
 class OpenWBseries2SatellitConfiguration:
     def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
@@ -9,10 +7,13 @@ def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
         self.duo_num = duo_num
 
 
-class OpenWBseries2Satellit(SetupChargepoint[OpenWBseries2SatellitConfiguration]):
+class OpenWBseries2Satellit:
     def __init__(self,
                  name: str = "openWB series2 satellit, openWB series2 satellit Duo",
                  type: str = "openwb_series2_satellit",
                  id: int = 0,
                  configuration: OpenWBseries2SatellitConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration or OpenWBseries2SatellitConfiguration())
+        self.name = name
+        self.type = type
+        self.id = id
+        self.configuration = configuration or OpenWBseries2SatellitConfiguration()
diff --git a/packages/modules/chargepoints/smartwb/config.py b/packages/modules/chargepoints/smartwb/config.py
index 8052737999..06c16e2dc9 100644
--- a/packages/modules/chargepoints/smartwb/config.py
+++ b/packages/modules/chargepoints/smartwb/config.py
@@ -1,7 +1,5 @@
 from typing import Optional
 
-from modules.common.abstract_chargepoint import SetupChargepoint
-
 
 class SmartWBConfiguration:
     def __init__(self, ip_address: Optional[str] = None, timeout: int = 2):
@@ -9,10 +7,13 @@ def __init__(self, ip_address: Optional[str] = None, timeout: int = 2):
         self.timeout = timeout
 
 
-class SmartWB(SetupChargepoint[SmartWBConfiguration]):
+class SmartWB:
     def __init__(self,
                  name: str = "smartWB / EVSE-Wifi (>= v1.x.x/v2.x.x)",
                  type: str = "smartwb",
                  id: int = 0,
                  configuration: SmartWBConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration or SmartWBConfiguration())
+        self.name = name
+        self.type = type
+        self.id = id
+        self.configuration = configuration or SmartWBConfiguration()
diff --git a/packages/modules/common/abstract_chargepoint.py b/packages/modules/common/abstract_chargepoint.py
index 140cdabc9e..1b7b1ac10f 100644
--- a/packages/modules/common/abstract_chargepoint.py
+++ b/packages/modules/common/abstract_chargepoint.py
@@ -1,7 +1,4 @@
 from abc import abstractmethod
-from typing import Generic, TypeVar
-
-from control.chargepoint.charging_type import ChargingType
 
 
 class AbstractChargepoint:
@@ -28,30 +25,3 @@ def interrupt_cp(self, duration: int) -> None:
     @abstractmethod
     def clear_rfid(self) -> None:
         pass
-
-    @abstractmethod
-    def add_conversion_loss_to_current(self, current: float) -> float:
-        return current
-
-    @abstractmethod
-    def subtract_conversion_loss_from_current(self, current: float) -> float:
-        return current
-
-
-T = TypeVar("T")
-
-
-class SetupChargepoint(Generic[T]):
-    def __init__(self,
-                 name: str,
-                 type: str,
-                 id: int,
-                 configuration: T,
-                 charging_type: str = ChargingType.AC.value,
-                 visibility: bool = True) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration
-        self.charging_type = charging_type
-        self.visibility = visibility
diff --git a/packages/modules/common/component_state.py b/packages/modules/common/component_state.py
index fa2a904658..afcd76d0bf 100644
--- a/packages/modules/common/component_state.py
+++ b/packages/modules/common/component_state.py
@@ -149,9 +149,6 @@ def __init__(self,
                  exported: float = 0,
                  power: float = 0,
                  serial_number: str = "",
-                 charging_current: Optional[float] = 0,
-                 charging_voltage: Optional[float] = 0,
-                 charging_power: Optional[float] = 0,
                  powers: Optional[List[Optional[float]]] = None,
                  voltages: Optional[List[Optional[float]]] = None,
                  currents: Optional[List[Optional[float]]] = None,
@@ -181,9 +178,6 @@ def __init__(self,
             self.rfid_timestamp = rfid_timestamp
         if _check_none(power_factors):
             power_factors = [0.0]*3
-        self.charging_current = charging_current
-        self.charging_power = charging_power
-        self.charging_voltage = charging_voltage
         self.power_factors = power_factors
         self.soc = soc
         self.soc_timestamp = soc_timestamp
diff --git a/packages/modules/common/simcount/__init__.py b/packages/modules/common/simcount/__init__.py
index 7c25745c47..add2e1ac5d 100644
--- a/packages/modules/common/simcount/__init__.py
+++ b/packages/modules/common/simcount/__init__.py
@@ -1,3 +1,3 @@
 from modules.common.simcount._simcount import sim_count
-from modules.common.simcount._simcounter import SimCounter, SimCounterChargepoint
+from modules.common.simcount._simcounter import SimCounter
 from modules.common.simcount.simcounter_state import SimCounterState
diff --git a/packages/modules/common/simcount/_simcounter.py b/packages/modules/common/simcount/_simcounter.py
index 5f196c7643..0e65dec191 100644
--- a/packages/modules/common/simcount/_simcounter.py
+++ b/packages/modules/common/simcount/_simcounter.py
@@ -13,13 +13,3 @@ def __init__(self, device_id: int, component_id: int, prefix: str):
     def sim_count(self, power: float) -> Tuple[float, float]:
         self.data = sim_count(power, self.topic, self.data, self.prefix)
         return self.data.imported, self.data.exported
-
-
-class SimCounterChargepoint:
-    def __init__(self, chargepoint_id: int):
-        self.topic = f"openWB/set/chargepoint/{chargepoint_id}/get/"
-        self.data = None  # type: Optional[SimCounterState]
-
-    def sim_count(self, power: float) -> Tuple[float, float]:
-        self.data = sim_count(power, self.topic, self.data, "")
-        return self.data.imported, self.data.exported
diff --git a/packages/modules/common/store/_chargepoint.py b/packages/modules/common/store/_chargepoint.py
index 631040c511..5f68602a9f 100644
--- a/packages/modules/common/store/_chargepoint.py
+++ b/packages/modules/common/store/_chargepoint.py
@@ -28,11 +28,6 @@ def set(self, state: ChargepointState) -> None:
         self.state = state
 
     def update(self):
-        pub_to_broker("openWB/set/chargepoint/" + str(self.num) +
-                      "/get/charging_current", self.state.charging_current, 2)
-        pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/charging_power", self.state.charging_power, 2)
-        pub_to_broker("openWB/set/chargepoint/" + str(self.num) +
-                      "/get/charging_voltage", self.state.charging_voltage, 2)
         pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/voltages", self.state.voltages, 2)
         pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/currents", self.state.currents, 2)
         pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/power_factors", self.state.power_factors, 2)
diff --git a/packages/modules/configuration.py b/packages/modules/configuration.py
index 5d3959e83d..a1708e2b3f 100644
--- a/packages/modules/configuration.py
+++ b/packages/modules/configuration.py
@@ -228,11 +228,10 @@ def create_chargepoints_list(path_list):
                     dev_defaults = importlib.import_module(
                         f".chargepoints.{path.parts[-2]}.chargepoint_module",
                         "modules").chargepoint_descriptor.configuration_factory()
-                    if dev_defaults.visibility:
-                        chargepoints.append({
-                            "value": dev_defaults.type,
-                            "text": dev_defaults.name
-                        })
+                    chargepoints.append({
+                        "value": dev_defaults.type,
+                        "text": dev_defaults.name
+                    })
                 except Exception:
                     log.exception("Fehler im configuration-Modul")
             chargepoints = sorted(chargepoints, key=lambda d: d['text'].upper())
diff --git a/packages/modules/internal_chargepoint_handler/update_values_test.py b/packages/modules/internal_chargepoint_handler/update_values_test.py
index 6fcd274076..2360a31bcc 100644
--- a/packages/modules/internal_chargepoint_handler/update_values_test.py
+++ b/packages/modules/internal_chargepoint_handler/update_values_test.py
@@ -24,7 +24,7 @@
 
 @pytest.mark.parametrize(
     "old_chargepoint_state, published_topics",
-    [(None, 42),
+    [(None, 36),
      (OLD_CHARGEPOINT_STATE, 2)]
 
 )
diff --git a/packages/modules/update_soc.py b/packages/modules/update_soc.py
index 2b54411703..68dda5ce6b 100644
--- a/packages/modules/update_soc.py
+++ b/packages/modules/update_soc.py
@@ -103,12 +103,9 @@ def _get_vehicle_update_data(self, ev_num: int) -> VehicleUpdateData:
                 if ev.soc_module.general_config.use_soc_from_cp:
                     soc_from_cp = cp.data.get.soc
                     timestamp_soc_from_cp = cp.data.get.soc_timestamp
-                    log.debug(f"cp.num {cp.num} cp.data.get {cp.data.get}")
-                    log.debug(f"1 soc_from_cp: {soc_from_cp}, timestamp_soc_from_cp: {timestamp_soc_from_cp}")
                 else:
                     soc_from_cp = None
                     timestamp_soc_from_cp = None
-                    log.debug(f"2 soc_from_cp: {soc_from_cp}, timestamp_soc_from_cp: {timestamp_soc_from_cp}")
                 break
         else:
             plug_state = False
@@ -118,7 +115,6 @@ def _get_vehicle_update_data(self, ev_num: int) -> VehicleUpdateData:
             efficiency = ev_template.data.efficiency
             soc_from_cp = None
             timestamp_soc_from_cp = None
-            log.debug(f"3 soc_from_cp: {soc_from_cp}, timestamp_soc_from_cp: {timestamp_soc_from_cp}")
         return VehicleUpdateData(plug_state=plug_state,
                                  charge_state=charge_state,
                                  efficiency=efficiency,
diff --git a/packages/modules/web_themes/standard_legacy/web/index.html b/packages/modules/web_themes/standard_legacy/web/index.html
index e82a11b1ba..6f0a09dd7e 100644
--- a/packages/modules/web_themes/standard_legacy/web/index.html
+++ b/packages/modules/web_themes/standard_legacy/web/index.html
@@ -638,29 +638,6 @@ <h3>Einstellungen für "Sofortladen"</h3>
 											</div>
 										</div>
 									</div>
-									<div class="dc-charging-configured hide">
-										<div class="form-row vaRow mb-0">
-											<div class="col">
-												DC-Sollleistung
-											</div>
-											<div class="col-md-8">
-												<div class="form-row form-group mb-1 vaRow">
-													<div class="col">
-														<input type="range"
-															class="charge-point-instant-charge-dc-current form-control-range rangeInput"
-															id="dcCurrentInstantChargeCpT"
-															data-transformation='{ "in": "(<v> * 3 * 230) / 1000", "out": "(<v> * 1000) / 230 / 3" }'
-															data-topic="openWB/set/vehicle/template/charge_template/<ct>/chargemode/instant_charging/dc_current"
-															min="4" max="300" step="1">
-													</div>
-													<label for="dcCurrentInstantChargeCpT"
-														class="col-2 col-form-label valueLabel text-right" data-suffix="kW">
-														-- kW
-													</label>
-												</div>
-											</div>
-										</div>
-									</div>
 									<div class="form-row vaRow">
 										<div class="col">
 											<label class="col-form-label">Begrenzung</label>
@@ -743,29 +720,6 @@ <h3>Einstellungen für "PV"</h3>
 											</div>
 										</div>
 									</div>
-									<div class="dc-charging-configured hide">
-										<div class="form-row vaRow mb-0">
-											<div class="col">
-												Minimale DC-Dauerleistung
-											</div>
-											<div class="col-md-8">
-												<div class="form-row form-group mb-1 vaRow">
-													<div class="col">
-														<input type="range"
-															class="charge-point-pv-charge-dc-min-current form-control-range rangeInput"
-															id="minDcCurrentPvCpT"
-															data-transformation='{ "in": "(<v> * 3 * 230) / 1000", "out": "(<v> * 1000) / 230 / 3" }'
-															data-topic="openWB/set/vehicle/template/charge_template/<ct>/chargemode/pv_charging/dc_min_current"
-															min="0" max="300" step="1">
-													</div>
-													<label for="minDcCurrentPvCpT"
-														class="col-2 col-form-label valueLabel text-right" data-suffix="kW">
-														-- kW
-													</label>
-												</div>
-											</div>
-										</div>
-									</div>
 									<div class="form-row vaRow mb-0">
 										<div class="col">
 											Mindest-SoC
@@ -805,29 +759,6 @@ <h3>Einstellungen für "PV"</h3>
 											</div>
 										</div>
 									</div>
-									<div class="dc-charging-configured hide">
-										<div class="form-row vaRow mb-0">
-											<div class="col">
-												DC Mindest-SoC-Leistung
-											</div>
-											<div class="col-md-8">
-												<div class="form-row form-group mb-1 vaRow">
-													<div class="col">
-														<input type="range"
-															class="charge-point-pv-charge-dc-min-soc-current form-control-range rangeInput"
-															id="minSocDcCurrentPvCpT"
-															data-transformation='{ "in": "(<v> * 3 * 230) / 1000", "out": "(<v> * 1000) / 230 / 3" }'
-															data-topic="openWB/set/vehicle/template/charge_template/<ct>/chargemode/pv_charging/dc_min_soc_current"
-															min="4" max="300" step="1">
-													</div>
-													<label for="minSocDcCurrentPvCpT"
-														class="col-2 col-form-label valueLabel text-right" data-suffix="kW">
-														-- kW
-													</label>
-												</div>
-											</div>
-										</div>
-									</div>
 									<div class="form-row vaRow mb-0">
 										<div class="col">
 											SoC-Limit
diff --git a/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js b/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js
index 3d31317d39..346b2229d4 100644
--- a/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js
+++ b/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js
@@ -55,20 +55,14 @@ function createChargePoint(hierarchy) {
 				clonedElement.find('.card-body').attr('id', 'collapseChargepoint' + chargePointIndex).removeClass('show');
 				clonedElement.find('label[for=minCurrentPvCpT]').attr('for', 'minCurrentPvCp' + chargePointIndex);
 				clonedElement.find('#minCurrentPvCpT').attr('id', 'minCurrentPvCp' + chargePointIndex);
-				clonedElement.find('label[for=minDcCurrentPvCpT]').attr('for', 'minDcCurrentPvCp' + chargePointIndex);
-				clonedElement.find('#minDcCurrentPvCpT').attr('id', 'minDcCurrentPvCp' + chargePointIndex);
 				clonedElement.find('label[for=minSocPvCpT]').attr('for', 'minSocPvCp' + chargePointIndex);
 				clonedElement.find('#minSocPvCpT').attr('id', 'minSocPvCp' + chargePointIndex);
 				clonedElement.find('label[for=maxSocPvCpT]').attr('for', 'maxSocPvCp' + chargePointIndex);
 				clonedElement.find('#maxSocPvCpT').attr('id', 'maxSocPvCp' + chargePointIndex);
 				clonedElement.find('label[for=minSocCurrentPvCpT]').attr('for', 'minSocCurrentPvCp' + chargePointIndex);
 				clonedElement.find('#minSocCurrentPvCpT').attr('id', 'minSocCurrentPvCp' + chargePointIndex);
-				clonedElement.find('label[for=minSocDcCurrentPvCpT]').attr('for', 'minSocDcCurrentPvCp' + chargePointIndex);
-				clonedElement.find('#minSocDcCurrentPvCpT').attr('id', 'minSocDcCurrentPvCp' + chargePointIndex);
 				clonedElement.find('label[for=currentInstantChargeCpT]').attr('for', 'currentInstantChargeCp' + chargePointIndex);
 				clonedElement.find('#currentInstantChargeCpT').attr('id', 'currentInstantChargeCp' + chargePointIndex);
-				clonedElement.find('label[for=dcCurrentInstantChargeCpT]').attr('for', 'dcCurrentInstantChargeCpT' + chargePointIndex);
-				clonedElement.find('#dcCurrentInstantChargeCpT').attr('id', 'dcCurrentInstantChargeCpT' + chargePointIndex);
 				clonedElement.find('label[for=limitInstantChargeCpT]').attr('for', 'limitInstantChargeCp' + chargePointIndex);
 				clonedElement.find('#limitInstantChargeCpT').attr('id', 'limitInstantChargeCp' + chargePointIndex);
 				clonedElement.find('label[for=soclimitCpT]').attr('for', 'soclimitCp' + chargePointIndex);
@@ -121,9 +115,6 @@ function refreshChargeTemplate(templateIndex) {
 				// chargemode.instant_charging.current
 				element = parent.find('.charge-point-instant-charge-current');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.instant_charging.current);
-				// chargemode.instant_charging.dc_current
-				element = parent.find('.charge-point-instant-charge-dc-current');
-				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.instant_charging.dc_current);
 				// chargemode.instant_charging.limit.selected
 				element = parent.find('.charge-point-instant-charge-limit-selected');
 				setToggleBtnGroup(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.instant_charging.limit.selected);
@@ -154,9 +145,6 @@ function refreshChargeTemplate(templateIndex) {
 				// chargemode.pv_charging.min_current
 				element = parent.find('.charge-point-pv-charge-min-current');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.min_current);
-				// chargemode.pv_charging.dc_min_current
-				element = parent.find('.charge-point-pv-charge-dc-min-current');
-				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.dc_min_current);
 				// chargemode.pv_charging.min_soc
 				element = parent.find('.charge-point-pv-charge-min-soc');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.min_soc);
@@ -166,9 +154,6 @@ function refreshChargeTemplate(templateIndex) {
 				// chargemode.pv_charging.min_soc_current
 				element = parent.find('.charge-point-pv-charge-min-soc-current');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.min_soc_current);
-				// chargemode.pv_charging.dc_min_soc_current
-				element = parent.find('.charge-point-pv-charge-dc-min-soc-current');
-				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.dc_min_soc_current);
 				// chargemode.pv_charging.feed_in_limit
 				var element = parent.find('.charge-point-pv-charge-feed-in-limit'); // now get parents respective child element
 				if (chargeModeTemplate[templateIndex].chargemode.pv_charging.feed_in_limit == true) {
@@ -395,7 +380,6 @@ function handleMessage(mqttTopic, mqttPayload) {
 	else if (mqttTopic.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)) { processPvConfigMessages(mqttTopic, mqttPayload); }
 	else if (mqttTopic.match(/^openwb\/graph\//i)) { processGraphMessages(mqttTopic, mqttPayload); }
 	else if (mqttTopic.match(/^openwb\/optional\/et\//i)) { processETProviderMessages(mqttTopic, mqttPayload); }
-	else if (mqttTopic.match(/^openwb\/optional\//i)) { processOptionalMessages(mqttTopic, mqttPayload); }
 	else if (mqttTopic.match(/^openwb\/LegacySmartHome\//i)) { processSmartHomeDeviceMessages(mqttTopic, mqttPayload); }
 } // end handleMessage
 
@@ -1087,17 +1071,6 @@ function processETProviderMessages(mqttTopic, mqttPayload) {
 	}
 }
 
-function processOptionalMessages(mqttTopic, mqttPayload) {
-	if (mqttTopic == 'openWB/optional/dc_charging') {
-		data = JSON.parse(mqttPayload);
-		if (data == true) {
-			$('.dc-charging-configured').removeClass('hide');
-		} else {
-			$('.dc-charging-configured').addClass('hide');
-		}
-	}
-}
-
 function processSmartHomeDeviceMessages(mqttTopic, mqttPayload) {
 	processPreloader(mqttTopic);
 	var deviceIndex = getIndex(mqttTopic);  // extract number between two / /
diff --git a/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js b/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js
index 7853d831e3..e4f30f6cdb 100644
--- a/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js
+++ b/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js
@@ -77,7 +77,6 @@ var topicsToSubscribe = [
 	["openWB/optional/et/active", 1], // et provider is configured
 	["openWB/optional/et/provider", 1], // et provider information
 	["openWB/optional/et/get/prices", 1], // current price list
-	["openWB/optional/dc_charging", 1], // dc charging is configured
 
 	// graph topics
 	["openWB/graph/config/duration", 1], // maximum duration to display in landing page

From 14cfd696cb55fed1c1276171a0031ae48e32e75b Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 3 Sep 2024 12:38:50 +0200
Subject: [PATCH 018/205] Feature dc adapter (#1864)

* DC charging

* fix test

* fix max current

* fix rebase

* DC charging

* draft

* draft

* fixes

* naming

* update config

* fix test

* fix test

* undo

* fix update config

* fix

* remove old code

* fix configuration.json
---
 packages/conftest.py                          |   8 +-
 .../control/algorithm/additional_current.py   |  11 +-
 packages/control/algorithm/common.py          |  48 ++++---
 packages/control/algorithm/common_test.py     |  32 ++---
 .../algorithm/integration_test/conftest.py    |   3 +-
 .../integration_test/instant_charging_test.py |   4 +
 .../integration_test/pv_charging_test.py      |   4 +
 packages/control/algorithm/min_current.py     |  26 ++--
 .../control/algorithm/surplus_controlled.py   |   4 +-
 packages/control/chargepoint/chargepoint.py   |  42 ++++--
 .../control/chargepoint/chargepoint_data.py   |   3 +
 .../chargepoint/chargepoint_template.py       |   3 +
 packages/control/chargepoint/charging_type.py |   6 +
 .../control/chargepoint/control_parameter.py  |   3 +
 packages/control/counter.py                   |   2 +-
 packages/control/counter_all.py               |   4 +-
 packages/control/ev.py                        | 132 ++++++++++++------
 packages/control/ev_charge_template_test.py   |  14 +-
 packages/control/optional.py                  |   4 +
 packages/helpermodules/abstract_plans.py      |   2 +
 .../changed_values_handler_test.py            |  19 ++-
 .../helpermodules/hardware_configuration.py   |  25 ++--
 packages/helpermodules/setdata.py             |  31 +++-
 packages/helpermodules/subdata.py             |  19 ++-
 packages/helpermodules/update_config.py       |  31 +++-
 .../chargepoints/external_openwb/config.py    |   9 +-
 .../chargepoints/internal_openwb/config.py    |   9 +-
 packages/modules/chargepoints/mqtt/config.py  |  10 +-
 .../openwb_dc_adapter/__init__.py             |   0
 .../openwb_dc_adapter/chargepoint_module.py   | 125 +++++++++++++++++
 .../chargepoints/openwb_dc_adapter/config.py  |  20 +++
 .../modules/chargepoints/openwb_pro/config.py |   9 +-
 .../openwb_series2_satellit/config.py         |   9 +-
 .../modules/chargepoints/smartwb/config.py    |   9 +-
 .../modules/common/abstract_chargepoint.py    |  30 ++++
 packages/modules/common/component_state.py    |   6 +
 packages/modules/common/simcount/__init__.py  |   2 +-
 .../modules/common/simcount/_simcounter.py    |  10 ++
 packages/modules/common/store/_chargepoint.py |   5 +
 packages/modules/configuration.py             |   9 +-
 .../update_values_test.py                     |   2 +-
 packages/modules/update_soc.py                |   4 +
 .../web_themes/standard_legacy/web/index.html |  69 +++++++++
 .../standard_legacy/web/processAllMqttMsg.js  |  27 ++++
 .../standard_legacy/web/setupMqttServices.js  |   1 +
 45 files changed, 660 insertions(+), 185 deletions(-)
 create mode 100644 packages/control/chargepoint/charging_type.py
 create mode 100644 packages/modules/chargepoints/openwb_dc_adapter/__init__.py
 create mode 100644 packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
 create mode 100644 packages/modules/chargepoints/openwb_dc_adapter/config.py

diff --git a/packages/conftest.py b/packages/conftest.py
index 11bb3faba2..f757e29da9 100644
--- a/packages/conftest.py
+++ b/packages/conftest.py
@@ -14,7 +14,13 @@
 from control.counter_all import CounterAll
 from control.pv import Pv, PvData
 from control.pv import Get as PvGet
-from helpermodules import pub, timecheck
+from helpermodules import hardware_configuration, pub, timecheck
+
+
+@pytest.fixture(autouse=True)
+def mock_open_file(monkeypatch) -> None:
+    mock_config = Mock(return_value={"dc_charging": False, "openwb-version": 1, "max_c_socket": 32})
+    monkeypatch.setattr(hardware_configuration, "_read_configuration", mock_config)
 
 
 @pytest.fixture(autouse=True)
diff --git a/packages/control/algorithm/additional_current.py b/packages/control/algorithm/additional_current.py
index 4b5e6ddc1e..a57daa48a0 100644
--- a/packages/control/algorithm/additional_current.py
+++ b/packages/control/algorithm/additional_current.py
@@ -29,13 +29,15 @@ def set_additional_current(self) -> None:
                     cp = preferenced_chargepoints[0]
                     missing_currents, counts = common.get_missing_currents_left(preferenced_chargepoints)
                     available_currents, limit = Loadmanagement().get_available_currents(missing_currents, counter)
+                    log.debug(f"cp {cp.num} available currents {available_currents} missing currents "
+                              f"{missing_currents} limit {limit}")
                     cp.data.control_parameter.limit = limit
                     available_for_cp = common.available_current_for_cp(cp, counts, available_currents, missing_currents)
                     current = common.get_current_to_set(
                         cp.data.set.current, available_for_cp, cp.data.set.target_current)
                     self._set_loadmangement_message(current, limit, cp, counter)
                     common.set_current_counterdiff(
-                        current - cp.data.set.charging_ev_data.ev_template.data.min_current,
+                        cp.data.control_parameter.min_current,
                         current,
                         cp)
                     preferenced_chargepoints.pop(0)
@@ -50,9 +52,12 @@ def _set_loadmangement_message(self,
                                    chargepoint: Chargepoint,
                                    counter: Counter) -> None:
         # Strom muss an diesem Zähler geändert werden
+        log.debug(
+            f"current {current} target {chargepoint.data.set.target_current} set current {chargepoint.data.set.current}"
+            f" required currents {chargepoint.data.control_parameter.required_currents}")
         if (current != max(chargepoint.data.set.target_current, chargepoint.data.set.current or 0) and
                 # Strom erreicht nicht die vorgegebene Stromstärke
-                current != max(
-                    chargepoint.data.control_parameter.required_currents)):
+                round(current, 2) != round(max(
+                    chargepoint.data.control_parameter.required_currents), 2)):
             chargepoint.set_state_and_log(f"Es kann nicht mit der vorgegebenen Stromstärke geladen werden"
                                           f"{limit.value.format(get_component_name_by_id(counter.num))}")
diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py
index 9df5b2b9c6..72556dcc73 100644
--- a/packages/control/algorithm/common.py
+++ b/packages/control/algorithm/common.py
@@ -6,6 +6,7 @@
 from control.chargemode import Chargemode
 from control.chargepoint.chargepoint import Chargepoint
 from control.counter import Counter
+from helpermodules.timecheck import check_timestamp
 from modules.common.component_type import ComponentType
 
 log = logging.getLogger(__name__)
@@ -29,6 +30,8 @@
                (None, Chargemode.STOP, True),
                (None, Chargemode.STOP, False))
 
+LESS_CHARGING_TIMEOUT = 60
+
 # tested
 
 
@@ -62,12 +65,11 @@ def mode_and_counter_generator(chargemodes: List) -> Iterable[Tuple[Tuple[Option
 def get_min_current(chargepoint: Chargepoint) -> Tuple[List[float], List[int]]:
     min_currents = [0.0]*3
     counts = [0]*3
-    charging_ev_data = chargepoint.data.set.charging_ev_data
     required_currents = chargepoint.data.control_parameter.required_currents
     for i in range(3):
         if required_currents[i] != 0:
             counts[i] += 1
-            min_currents[i] = charging_ev_data.ev_template.data.min_current
+            min_currents[i] = chargepoint.data.control_parameter.min_current
         else:
             min_currents[i] = 0
     return min_currents, counts
@@ -75,8 +77,15 @@ def get_min_current(chargepoint: Chargepoint) -> Tuple[List[float], List[int]]:
 # tested
 
 
-def set_current_counterdiff(diff: float, current: float, chargepoint: Chargepoint, surplus: bool = False) -> None:
+def set_current_counterdiff(diff_curent: float,
+                            current: float,
+                            chargepoint: Chargepoint,
+                            surplus: bool = False) -> None:
     required_currents = chargepoint.data.control_parameter.required_currents
+    considered_current = consider_less_charging_chargepoint_in_loadmanagement(
+        chargepoint, current)
+    # gar nicht ladende Autos?
+    diff = max(considered_current - diff_curent, 0)
     diffs = [diff if required_currents[i] != 0 else 0 for i in range(3)]
     if max(diffs) > 0:
         counters = data.data.counter_all_data.get_counters_to_check(chargepoint.num)
@@ -129,21 +138,20 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint],
     """alle CP, die schon einen Sollstrom haben, wieder rausrechnen, da dieser neu gesetzt wird
         und die neue Differenz bei den Zählern eingetragen wird."""
     for chargepoint in preferenced_chargepoints:
-        if consider_not_charging_chargepoint_in_loadmanagement(chargepoint):
-            continue
-        charging_ev_data = chargepoint.data.set.charging_ev_data
         required_currents = chargepoint.data.control_parameter.required_currents
         max_target_set_current = max(chargepoint.data.set.target_current, chargepoint.data.set.current or 0)
+        max_target_set_current = consider_less_charging_chargepoint_in_loadmanagement(
+            chargepoint, max_target_set_current)
 
         if diff_to_zero is False:
-            if charging_ev_data.ev_template.data.min_current < max_target_set_current:
-                diffs = [charging_ev_data.ev_template.data.min_current -
+            if chargepoint.data.control_parameter.min_current < max_target_set_current:
+                diffs = [chargepoint.data.control_parameter.min_current -
                          max_target_set_current if required_currents[i] != 0 else 0 for i in range(3)]
             else:
                 continue
         else:
-            if charging_ev_data.ev_template.data.min_current <= max_target_set_current:
-                diffs = [-charging_ev_data.ev_template.data.min_current if required_currents[i]
+            if chargepoint.data.control_parameter.min_current <= max_target_set_current:
+                diffs = [-chargepoint.data.control_parameter.min_current if required_currents[i]
                          != 0 else 0 for i in range(3)]
             else:
                 continue
@@ -155,10 +163,17 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint],
                 data.data.counter_data[counter].update_values_left(diffs)
 
 
-def consider_not_charging_chargepoint_in_loadmanagement(cp: Chargepoint) -> bool:
-    # tested
-    return data.data.counter_all_data.data.config.reserve_for_not_charging is False and max(cp.data.get.currents) == 0
-
+def consider_less_charging_chargepoint_in_loadmanagement(cp: Chargepoint, set_current: float) -> bool:
+    if (data.data.counter_all_data.data.config.consider_less_charging and
+        ((set_current -
+          cp.data.set.charging_ev_data.ev_template.data.nominal_difference) > max(cp.data.get.currents) and
+         cp.data.control_parameter.timestamp_charge_start is not None and
+         check_timestamp(cp.data.control_parameter.timestamp_charge_start, LESS_CHARGING_TIMEOUT) is False)):
+        log.debug(
+            f"LP {cp.num} lädt deutlich unter dem Sollstrom und wird nur mit {cp.data.get.currents}A berücksichtigt.")
+        return max(cp.data.get.currents)
+    else:
+        return set_current
 # tested
 
 
@@ -166,15 +181,14 @@ def get_missing_currents_left(preferenced_chargepoints: List[Chargepoint]) -> Tu
     missing_currents = [0.0]*3
     counts = [0]*3
     for chargepoint in preferenced_chargepoints:
-        charging_ev_data = chargepoint.data.set.charging_ev_data
         required_currents = chargepoint.data.control_parameter.required_currents
         for i in range(0, 3):
             if required_currents[i] != 0:
                 counts[i] += 1
                 try:
-                    missing_currents[i] += required_currents[i] - charging_ev_data.ev_template.data.min_current
+                    missing_currents[i] += required_currents[i] - chargepoint.data.control_parameter.min_current
                 except KeyError:
-                    missing_currents[i] += max(required_currents) - charging_ev_data.ev_template.data.min_current
+                    missing_currents[i] += max(required_currents) - chargepoint.data.control_parameter.min_current
             else:
                 missing_currents[i] += 0
     return missing_currents, counts
diff --git a/packages/control/algorithm/common_test.py b/packages/control/algorithm/common_test.py
index 6028332a8e..21c23c8b88 100644
--- a/packages/control/algorithm/common_test.py
+++ b/packages/control/algorithm/common_test.py
@@ -34,10 +34,9 @@ def test_reset_current(set_current: int, expected_current: int):
 @pytest.mark.parametrize(
     "diff, required_currents, expected_set_current, expected_diffs",
     [
-        pytest.param(2, [10, 0, 0], 8, [2, 0, 0], id="set diff one phase"),
-        pytest.param(2, [12]*3, 8, [2]*3, id="set diff three phases"),
-        pytest.param(8, [8]*3, 8, [8]*3, id="set min current three phases"),
-        pytest.param(0, [8]*3, 8, [0]*3, id="min current is already set, three phases"),
+        pytest.param(10, [10, 0, 0], 10, [2, 0, 0], id="set diff one phase"),
+        pytest.param(10, [12]*3, 10, [2]*3, id="set diff three phases"),
+        pytest.param(8, [8]*3, 8, [0]*3, id="min current is already set, three phases"),
     ])
 def test_set_current_counterdiff(diff: float,
                                  required_currents: List[float],
@@ -55,11 +54,11 @@ def test_set_current_counterdiff(diff: float,
     data.data.counter_data = {"cp0": Mock(spec=Counter), "cp6": Mock(spec=Counter)}
 
     # evaluation
-    common.set_current_counterdiff(diff, 8, cp)
+    common.set_current_counterdiff(8, diff, cp)
 
     # assertion
     assert cp.data.set.current == expected_set_current
-    if diff != 0:
+    if max(expected_diffs) != 0:
         assert data.data._counter_data['cp0'].update_values_left.call_args_list[0][0][0] == expected_diffs
         assert data.data._counter_data['cp6'].update_values_left.call_args_list[0][0][0] == expected_diffs
 
@@ -152,23 +151,24 @@ def setup_cp(num: int, required_currents) -> Chargepoint:
 
 
 @pytest.mark.parametrize(
-    "reserve_for_not_charging, get_currents, expected_considered",
+    "consider_less_charging, get_currents, expected_considered",
     [
-        pytest.param(True, [0]*3, False, id="reserve_for_not_charging active"),
-        pytest.param(True, [6]*3, False, id="reserve_for_not_charging active"),
-        pytest.param(False, [0]*3, True, id="not charging"),
-        pytest.param(False, [6]*3, False, id="charging"),
+        pytest.param(True, [6]*3, 6, id="consider_less_charging active, charging less"),
+        pytest.param(True, [10]*3, 10, id="consider_less_charging active, charging with set current"),
+        pytest.param(False, [0]*3, 10, id="consider_less_charging inactive"),
     ])
-def test_consider_not_charging_chargepoint_in_loadmanagement(reserve_for_not_charging: bool,
-                                                             get_currents: List[float],
-                                                             expected_considered: bool):
+def test_consider_less_charging_chargepoint_in_loadmanagement(consider_less_charging: bool,
+                                                              get_currents: List[float],
+                                                              expected_considered: bool):
     # setup
     cp = Chargepoint(4, None)
     cp.data.get.currents = get_currents
-    data.data.counter_all_data.data.config.reserve_for_not_charging = reserve_for_not_charging
+    cp.data.set.current = 10
+    cp.data.control_parameter.timestamp_charge_start = 1652683152
+    data.data.counter_all_data.data.config.consider_less_charging = consider_less_charging
 
     # evaluation
-    considered = common.consider_not_charging_chargepoint_in_loadmanagement(cp)
+    considered = common.consider_less_charging_chargepoint_in_loadmanagement(cp, 10)
 
     # assertion
     assert considered == expected_considered
diff --git a/packages/control/algorithm/integration_test/conftest.py b/packages/control/algorithm/integration_test/conftest.py
index ac2f44d16f..9126cbcf59 100644
--- a/packages/control/algorithm/integration_test/conftest.py
+++ b/packages/control/algorithm/integration_test/conftest.py
@@ -31,6 +31,7 @@ def data_() -> None:
         data.data.cp_data[f"cp{i}"].data.set.plug_time = f"12/01/2022, 15:0{i}:11"
         data.data.cp_data[f"cp{i}"].data.set.charging_ev_data.ev_template.data.nominal_difference = 2
     data.data.cp_data["cp3"].data.set.charging_ev_data.ev_template.data.min_current = 10
+    data.data.cp_data["cp3"].data.control_parameter.min_current = 10
     data.data.bat_data.update({"bat2": Bat(2), "all": BatAll()})
     data.data.pv_data.update({"pv1": Pv(1)})
     data.data.counter_data.update({
@@ -46,7 +47,7 @@ def data_() -> None:
     data.data.counter_data["counter6"].data.config.max_total_power = 11000
     data.data.counter_all_data = CounterAll()
     data.data.counter_all_data.data.get.hierarchy = NESTED_HIERARCHY
-    data.data.counter_all_data.data.config.reserve_for_not_charging = True
+    data.data.counter_all_data.data.config.consider_less_charging = True
 
 
 @dataclass
diff --git a/packages/control/algorithm/integration_test/instant_charging_test.py b/packages/control/algorithm/integration_test/instant_charging_test.py
index c4bb4dfddc..f0582261d5 100644
--- a/packages/control/algorithm/integration_test/instant_charging_test.py
+++ b/packages/control/algorithm/integration_test/instant_charging_test.py
@@ -16,6 +16,8 @@
 def all_cp_instant_charging_1p():
     for i in range(3, 6):
         control_parameter = data.data.cp_data[f"cp{i}"].data.control_parameter
+        control_parameter.min_current = data.data.cp_data[
+            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [0]*3
         control_parameter.required_currents[i-3] = 16
         control_parameter.required_current = 16
@@ -34,6 +36,8 @@ def all_cp_charging_1p():
 def all_cp_instant_charging_3p():
     for i in range(3, 6):
         control_parameter = data.data.cp_data[f"cp{i}"].data.control_parameter
+        control_parameter.min_current = data.data.cp_data[
+            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [16]*3
         control_parameter.required_current = 16
         control_parameter.chargemode = Chargemode.INSTANT_CHARGING
diff --git a/packages/control/algorithm/integration_test/pv_charging_test.py b/packages/control/algorithm/integration_test/pv_charging_test.py
index eb866ce506..0b9eefb4f1 100644
--- a/packages/control/algorithm/integration_test/pv_charging_test.py
+++ b/packages/control/algorithm/integration_test/pv_charging_test.py
@@ -22,6 +22,8 @@ def all_cp_pv_charging_3p():
             f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [
             data.data.cp_data[f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current]*3
+        control_parameter.min_current = data.data.cp_data[
+            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.chargemode = Chargemode.PV_CHARGING
         control_parameter.submode = Chargemode.PV_CHARGING
         control_parameter.phases = 3
@@ -52,6 +54,8 @@ def all_cp_pv_charging_1p():
     for i in range(3, 6):
         control_parameter = data.data.cp_data[f"cp{i}"].data.control_parameter
         charging_ev_data = data.data.cp_data[f"cp{i}"].data.set.charging_ev_data
+        control_parameter.min_current = data.data.cp_data[
+            f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_current = data.data.cp_data[
             f"cp{i}"].data.set.charging_ev_data.ev_template.data.min_current
         control_parameter.required_currents = [0]*3
diff --git a/packages/control/algorithm/min_current.py b/packages/control/algorithm/min_current.py
index ac5af0f213..2d1cd918b2 100644
--- a/packages/control/algorithm/min_current.py
+++ b/packages/control/algorithm/min_current.py
@@ -29,24 +29,16 @@ def set_min_current(self) -> None:
                             cp, counts, available_currents, missing_currents)
                         current = common.get_current_to_set(
                             cp.data.set.current, available_for_cp, cp.data.set.target_current)
-                        if common.consider_not_charging_chargepoint_in_loadmanagement(cp):
-                            cp.data.set.current = cp.data.set.charging_ev_data.ev_template.data.min_current
-                            log.debug(
-                                f"LP{cp.num}: Stromstärke {cp.data.set.charging_ev_data.ev_template.data.min_current}"
-                                "A. Zuteilung ohne Berücksichtigung im Lastmanagement, da kein Ladestart zu erwarten "
-                                "ist und Reserve für nicht-ladende inaktiv.")
+                        if current < cp.data.control_parameter.min_current:
+                            common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp)
+                            if limit:
+                                cp.set_state_and_log(
+                                    f"Ladung kann nicht gestartet werden{limit.value.format(counter.num)}")
                         else:
-                            if current < cp.data.set.charging_ev_data.ev_template.data.min_current:
-                                common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp)
-                                if limit:
-                                    cp.set_state_and_log(
-                                        f"Ladung kann nicht gestartet werden{limit.value.format(counter.num)}")
-                            else:
-                                common.set_current_counterdiff(
-                                    (cp.data.set.charging_ev_data.ev_template.data.min_current
-                                     - cp.data.set.target_current),
-                                    cp.data.set.charging_ev_data.ev_template.data.min_current,
-                                    cp)
+                            common.set_current_counterdiff(
+                                cp.data.set.target_current,
+                                cp.data.control_parameter.min_current,
+                                cp)
                     else:
                         cp.data.set.current = 0
                     preferenced_chargepoints.pop(0)
diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py
index 85c8fcda98..4909177c85 100644
--- a/packages/control/algorithm/surplus_controlled.py
+++ b/packages/control/algorithm/surplus_controlled.py
@@ -57,7 +57,7 @@ def _set(self,
             limited_current = self._limit_adjust_current(cp, current)
             limited_current = self._add_unused_evse_current(limited_current, cp)
             common.set_current_counterdiff(
-                limited_current - cp.data.set.charging_ev_data.ev_template.data.min_current,
+                cp.data.control_parameter.min_current,
                 limited_current,
                 cp,
                 surplus=True)
@@ -107,7 +107,7 @@ def _limit_adjust_current(self, chargepoint: Chargepoint, new_current: float) ->
                     current = max(chargepoint.data.get.currents) + MAX_CURRENT
                     msg = "Es darf um max 5A über den aktuell genutzten Strom geregelt werden."
             chargepoint.set_state_and_log(msg)
-            return max(current, chargepoint.data.set.charging_ev_data.ev_template.data.min_current)
+            return max(current, chargepoint.data.control_parameter.min_current)
 
     def _add_unused_evse_current(self, limited_current, chargepoint: Chargepoint) -> float:
         """Wenn Autos nicht die volle Ladeleistung nutzen, wird unnötig eingespeist. Dann kann um den noch nicht
diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index 647b6d2c26..ed3f65f7a5 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -27,6 +27,7 @@
 from control.chargepoint.chargepoint_data import ChargepointData, ConnectedConfig, ConnectedInfo, ConnectedSoc, Get, Log
 from control.chargepoint.chargepoint_template import CpTemplate
 from control.chargepoint.control_parameter import ControlParameter, control_parameter_factory
+from control.chargepoint.charging_type import ChargingType
 from control.chargepoint.rfid import ChargepointRfidMixin
 from control.ev import Ev
 from control import phase_switch
@@ -276,6 +277,10 @@ def set_control_parameter(self, submode: str, required_current: float):
                     self.data.set.charging_ev_data.charge_template.data.chargemode.selected)
             self.data.control_parameter.prio = self.data.set.charging_ev_data.charge_template.data.prio
             self.data.control_parameter.required_current = required_current
+            if self.template.data.charging_type == ChargingType.AC.value:
+                self.data.control_parameter.min_current = self.data.set.charging_ev_data.ev_template.data.min_current
+            else:
+                self.data.control_parameter.min_current = self.data.set.charging_ev_data.ev_template.data.dc_min_current
         except Exception:
             log.exception("Fehler im LP-Modul "+str(self.num))
 
@@ -584,14 +589,19 @@ def set_phases(self, phases: int) -> int:
 
     def check_min_max_current(self, required_current: float, phases: int, pv: bool = False) -> float:
         required_current_prev = required_current
-        required_current, msg = self.data.set.charging_ev_data.check_min_max_current(self.data.control_parameter,
-                                                                                     required_current,
-                                                                                     phases,
-                                                                                     pv)
-        if phases == 1:
-            required_current = min(required_current, self.template.data.max_current_single_phase)
+        required_current, msg = self.data.set.charging_ev_data.check_min_max_current(
+            self.data.control_parameter,
+            required_current,
+            phases,
+            self.template.data.charging_type,
+            pv)
+        if self.template.data.charging_type == ChargingType.AC.value:
+            if phases == 1:
+                required_current = min(required_current, self.template.data.max_current_single_phase)
+            else:
+                required_current = min(required_current, self.template.data.max_current_multi_phases)
         else:
-            required_current = min(required_current, self.template.data.max_current_multi_phases)
+            required_current = min(required_current, self.template.data.dc_max_current)
         if required_current != required_current_prev and msg is None:
             msg = ("Die Einstellungen in dem Ladepunkt-Profil beschränken den Strom auf "
                    f"maximal {required_current} A.")
@@ -611,6 +621,18 @@ def set_required_currents(self, required_current: float) -> None:
                                    "was ggf eine unnötige Reduktion der Ladeleistung zur Folge hat.")
         self.data.set.required_power = sum(control_parameter.required_currents) * 230
 
+    def handle_less_power(self):
+        if self.data.set.current != 0 and self.data.control_parameter.state == ChargepointState.CHARGING_ALLOWED:
+            nominal_difference = self.data.set.charging_ev_data.ev_template.data.nominal_difference
+            if self.data.set.current - nominal_difference > max(self.data.get.currents):
+                if self.data.control_parameter.timestamp_charge_start is None:
+                    self.data.control_parameter.timestamp_charge_start = create_timestamp()
+            else:
+                self.data.control_parameter.timestamp_charge_start = None
+        else:
+            # Beim Ladestart Timer laufen lassen, manche Fahrzeuge brauchen sehr lange.
+            self.data.control_parameter.timestamp_charge_start = None
+
     def update_ev(self, ev_list: Dict[str, Ev]) -> None:
         # Für Control-Pilot-Unterbrechung set current merken.
         self.set_current_prev = self.data.set.current
@@ -639,16 +661,20 @@ def update(self, ev_list: Dict[str, Ev]) -> None:
                         self.data.control_parameter,
                         self.data.get.imported,
                         max_phase_hw,
-                        self.cp_ev_support_phase_switch())
+                        self.cp_ev_support_phase_switch(),
+                        self.template.data.charging_type)
                     phases = self.set_phases(phases)
                     self._pub_connected_vehicle(charging_ev)
+                    required_current = self.chargepoint_module.add_conversion_loss_to_current(required_current)
                     # Einhaltung des Minimal- und Maximalstroms prüfen
                     required_current = self.check_min_max_current(
                         required_current, self.data.control_parameter.phases)
+                    required_current = self.chargepoint_module.add_conversion_loss_to_current(required_current)
                     charging_ev.set_chargemode_changed(self.data.control_parameter, submode)
                     charging_ev.set_submode_changed(self.data.control_parameter, submode)
                     self.set_control_parameter(submode, required_current)
                     self.set_required_currents(required_current)
+                    self.handle_less_power()
 
                     if charging_ev.chargemode_changed:
                         data.data.counter_all_data.get_evu_counter().reset_switch_on_off(
diff --git a/packages/control/chargepoint/chargepoint_data.py b/packages/control/chargepoint/chargepoint_data.py
index ca4fdf1728..15c9876330 100644
--- a/packages/control/chargepoint/chargepoint_data.py
+++ b/packages/control/chargepoint/chargepoint_data.py
@@ -90,6 +90,9 @@ def connected_vehicle_factory() -> ConnectedVehicle:
 @dataclass
 class Get:
     charge_state: bool = False
+    charging_current: Optional[float] = 0
+    charging_power: Optional[float] = 0
+    charging_voltage: Optional[float] = 0
     connected_vehicle: ConnectedVehicle = field(default_factory=connected_vehicle_factory)
     currents: List[float] = field(default_factory=currents_list_factory)
     daily_imported: float = 0
diff --git a/packages/control/chargepoint/chargepoint_template.py b/packages/control/chargepoint/chargepoint_template.py
index c2591de2a1..dd21bd5fb1 100644
--- a/packages/control/chargepoint/chargepoint_template.py
+++ b/packages/control/chargepoint/chargepoint_template.py
@@ -5,6 +5,7 @@
 
 from control import data
 from control import ev as ev_module
+from control.chargepoint.charging_type import ChargingType
 from dataclass_utils.factories import empty_dict_factory, empty_list_factory
 from helpermodules.abstract_plans import AutolockPlan
 from helpermodules import timecheck
@@ -37,9 +38,11 @@ def autolock_factory():
 @dataclass
 class CpTemplateData:
     autolock: Autolock = field(default_factory=autolock_factory, metadata={"topic": ""})
+    charging_type: str = ChargingType.AC.value
     id: int = 0
     max_current_multi_phases: int = 32
     max_current_single_phase: int = 32
+    dc_max_current: float = 435
     name: str = "neues Ladepunkt-Profil"
     disable_after_unplug: bool = False
     valid_tags: List = field(default_factory=empty_list_factory)
diff --git a/packages/control/chargepoint/charging_type.py b/packages/control/chargepoint/charging_type.py
new file mode 100644
index 0000000000..c49b54cf40
--- /dev/null
+++ b/packages/control/chargepoint/charging_type.py
@@ -0,0 +1,6 @@
+from enum import Enum
+
+
+class ChargingType(Enum):
+    DC = "DC"
+    AC = "AC"
diff --git a/packages/control/chargepoint/control_parameter.py b/packages/control/chargepoint/control_parameter.py
index de8daa2ed4..c1abeb035d 100644
--- a/packages/control/chargepoint/control_parameter.py
+++ b/packages/control/chargepoint/control_parameter.py
@@ -18,6 +18,7 @@ class ControlParameter:
     imported_instant_charging: Optional[float] = field(
         default=None, metadata={"topic": "control_parameter/imported_instant_charging"})
     limit: Optional[LimitingValue] = field(default=None, metadata={"topic": "control_parameter/limit"})
+    min_current: int = field(default=6, metadata={"topic": "control_parameter/min_current"})
     phases: int = field(default=0, metadata={"topic": "control_parameter/phases"})
     prio: bool = field(default=False, metadata={"topic": "control_parameter/prio"})
     required_current: float = field(default=0, metadata={"topic": "control_parameter/required_current"})
@@ -27,6 +28,8 @@ class ControlParameter:
     submode: Chargemode_enum = field(default=Chargemode_enum.STOP, metadata={"topic": "control_parameter/submode"})
     timestamp_auto_phase_switch: Optional[float] = field(
         default=None, metadata={"topic": "control_parameter/timestamp_auto_phase_switch"})
+    timestamp_charge_start: Optional[float] = field(
+        default=None, metadata={"topic": "control_parameter/timestamp_charge_start"})
     timestamp_perform_phase_switch: Optional[float] = field(
         default=None, metadata={"topic": "control_parameter/timestamp_perform_phase_switch"})
     timestamp_switch_on_off: Optional[float] = field(
diff --git a/packages/control/counter.py b/packages/control/counter.py
index 580b052dff..81da8a6dc3 100644
--- a/packages/control/counter.py
+++ b/packages/control/counter.py
@@ -420,7 +420,7 @@ def switch_off_check_threshold(self, chargepoint: Chargepoint) -> bool:
                 control_parameter.state = ChargepointState.CHARGING_ALLOWED
         else:
             # Wurde die Abschaltschwelle ggf. durch die Verzögerung anderer LP erreicht?
-            min_current = (charging_ev_data.ev_template.data.min_current
+            min_current = (chargepoint.data.control_parameter.min_current
                            + charging_ev_data.ev_template.data.nominal_difference)
             switch_off_condition = (power_in_use > threshold or
                                     # Wenn der Speicher hochregeln soll, muss auch abgeschaltet werden.
diff --git a/packages/control/counter_all.py b/packages/control/counter_all.py
index b8f2272527..0f1e919ad2 100644
--- a/packages/control/counter_all.py
+++ b/packages/control/counter_all.py
@@ -22,8 +22,8 @@
 class Config:
     home_consumption_source_id: Optional[str] = field(
         default=None, metadata={"topic": "config/home_consumption_source_id"})
-    reserve_for_not_charging: bool = field(
-        default=False, metadata={"topic": "config/reserve_for_not_charging"})
+    consider_less_charging: bool = field(
+        default=False, metadata={"topic": "config/consider_less_charging"})
 
 
 def config_factory() -> Config:
diff --git a/packages/control/ev.py b/packages/control/ev.py
index 0c312c6e37..5141e5dfa5 100644
--- a/packages/control/ev.py
+++ b/packages/control/ev.py
@@ -13,6 +13,7 @@
 
 from control import data
 from control.chargepoint.chargepoint_state import ChargepointState, PHASE_SWITCH_STATES
+from control.chargepoint.charging_type import ChargingType
 from control.chargepoint.control_parameter import ControlParameter
 from control.limiting_value import LimitingValue
 from dataclass_utils.factories import empty_dict_factory, empty_list_factory
@@ -67,11 +68,14 @@ class TimeCharging:
 @dataclass
 class InstantCharging:
     current: int = 10
+    dc_current: float = 145
     limit: Limit = field(default_factory=limit_factory)
 
 
 @dataclass
 class PvCharging:
+    dc_min_current: float = 145
+    dc_min_soc_current: float = 145
     min_soc_current: int = 10
     min_current: int = 0
     feed_in_limit: bool = False
@@ -133,6 +137,8 @@ def charge_template_data_factory() -> ChargeTemplateData:
 
 @dataclass
 class EvTemplateData:
+    dc_min_current: int = 0
+    dc_max_current: int = 0
     name: str = "neues Fahrzeug-Profil"
     max_current_multi_phases: int = 16
     max_phases: int = 3
@@ -243,7 +249,8 @@ def get_required_current(self,
                              control_parameter: ControlParameter,
                              imported: float,
                              max_phases_hw: int,
-                             phase_switch_supported: bool) -> Tuple[bool, Optional[str], str, float, int]:
+                             phase_switch_supported: bool,
+                             charging_type: str) -> Tuple[bool, Optional[str], str, float, int]:
         """ ermittelt, ob und mit welchem Strom das EV geladen werden soll (unabhängig vom Lastmanagement)
 
         Parameter
@@ -277,7 +284,8 @@ def get_required_current(self,
                     control_parameter.phases,
                     used_amount,
                     max_phases_hw,
-                    phase_switch_supported)
+                    phase_switch_supported,
+                    charging_type)
                 soc_request_intervall_offset = 0
                 if plan_data:
                     name = self.charge_template.data.chargemode.scheduled_charging.plans[plan_data.num].name
@@ -300,7 +308,7 @@ def get_required_current(self,
                     self.data.get.soc,
                     used_amount,
                     control_parameter.phases,
-                    self.ev_template.data.min_current,
+                    control_parameter.min_current,
                     soc_request_intervall_offset)
 
             # Wenn Zielladen auf Überschuss wartet, prüfen, ob Zeitladen aktiv ist.
@@ -311,7 +319,8 @@ def get_required_current(self,
                 used_amount = imported - control_parameter.imported_at_plan_start
                 tmp_current, tmp_submode, tmp_message, name = self.charge_template.time_charging(
                     self.data.get.soc,
-                    used_amount
+                    used_amount,
+                    charging_type
                 )
                 # Info vom Zielladen erhalten
                 message = f"{message or ''} {tmp_message or ''}".strip()
@@ -331,10 +340,11 @@ def get_required_current(self,
                     used_amount = imported - control_parameter.imported_instant_charging
                     required_current, submode, message = self.charge_template.instant_charging(
                         self.data.get.soc,
-                        used_amount)
+                        used_amount,
+                        charging_type)
                 elif self.charge_template.data.chargemode.selected == "pv_charging":
                     required_current, submode, message = self.charge_template.pv_charging(
-                        self.data.get.soc, self.ev_template.data.min_current)
+                        self.data.get.soc, control_parameter.min_current, charging_type)
                 elif self.charge_template.data.chargemode.selected == "standby":
                     # Text von Zeit-und Zielladen nicht überschreiben.
                     if message is None:
@@ -369,7 +379,8 @@ def check_min_max_current(self,
                               control_parameter: ControlParameter,
                               required_current: float,
                               phases: int,
-                              pv: bool = False) -> Tuple[float, Optional[str]]:
+                              charging_type: str,
+                              pv: bool = False,) -> Tuple[float, Optional[str]]:
         """ prüft, ob der gesetzte Ladestrom über dem Mindest-Ladestrom und unter dem Maximal-Ladestrom des EVs liegt.
         Falls nicht, wird der Ladestrom auf den Mindest-Ladestrom bzw. den Maximal-Ladestrom des EV gesetzt.
         Wenn PV-Laden aktiv ist, darf die Stromstärke nicht unter den PV-Mindeststrom gesetzt werden.
@@ -381,7 +392,10 @@ def check_min_max_current(self,
             # EV soll/darf nicht laden
             if required_current != 0:
                 if not pv:
-                    min_current = self.ev_template.data.min_current
+                    if charging_type == ChargingType.AC.value:
+                        min_current = self.ev_template.data.min_current
+                    else:
+                        min_current = self.ev_template.data.dc_min_current
                 else:
                     min_current = control_parameter.required_current
                 if required_current < min_current:
@@ -389,10 +403,13 @@ def check_min_max_current(self,
                     msg = ("Die Einstellungen in dem Fahrzeug-Profil beschränken den Strom auf "
                            f"mindestens {required_current} A.")
                 else:
-                    if phases == 1:
-                        max_current = self.ev_template.data.max_current_single_phase
+                    if charging_type == ChargingType.AC.value:
+                        if phases == 1:
+                            max_current = self.ev_template.data.max_current_single_phase
+                        else:
+                            max_current = self.ev_template.data.max_current_multi_phases
                     else:
-                        max_current = self.ev_template.data.max_current_multi_phases
+                        max_current = self.ev_template.data.dc_max_current
                     if required_current > max_current:
                         required_current = max_current
                         msg = ("Die Einstellungen in dem Fahrzeug-Profil beschränken den Strom auf "
@@ -411,7 +428,7 @@ def _check_phase_switch_conditions(self,
                                        max_current_cp: int,
                                        limit: LimitingValue) -> Tuple[bool, Optional[str]]:
         # Manche EV laden mit 6.1A bei 6A Sollstrom
-        min_current = self.ev_template.data.min_current + self.ev_template.data.nominal_difference
+        min_current = control_parameter.min_current + self.ev_template.data.nominal_difference
         max_current = (min(self.ev_template.data.max_current_single_phase, max_current_cp)
                        - self.ev_template.data.nominal_difference)
         phases_in_use = control_parameter.phases
@@ -422,7 +439,7 @@ def _check_phase_switch_conditions(self,
         else:
             feed_in_yield = 0
         all_surplus = data.data.counter_all_data.get_evu_counter().get_usable_surplus(feed_in_yield)
-        required_surplus = self.ev_template.data.min_current * max_phases_ev * 230 - get_power
+        required_surplus = control_parameter.min_current * max_phases_ev * 230 - get_power
         condition_1_to_3 = (((max(get_currents) > max_current and
                             all_surplus > required_surplus) or limit == LimitingValue.UNBALANCED_LOAD.value) and
                             phases_in_use == 1)
@@ -462,11 +479,11 @@ def auto_phase_switch(self,
         if phases_in_use == 1:
             direction_str = f"Umschaltung von 1 auf {max_phases}"
             delay = cm_config.phase_switch_delay * 60
-            required_reserved_power = (self.ev_template.data.min_current * max_phases * 230 -
+            required_reserved_power = (control_parameter.min_current * max_phases * 230 -
                                        self.ev_template.data.max_current_single_phase * 230)
 
             new_phase = max_phases
-            new_current = self.ev_template.data.min_current
+            new_current = control_parameter.min_current
         else:
             direction_str = f"Umschaltung von {max_phases} auf 1"
             delay = (16 - cm_config.phase_switch_delay) * 60
@@ -590,7 +607,8 @@ class ChargeTemplate:
 
     def time_charging(self,
                       soc: Optional[float],
-                      used_amount_time_charging: float) -> Tuple[int, str, Optional[str], Optional[str]]:
+                      used_amount_time_charging: float,
+                      charging_type: str) -> Tuple[int, str, Optional[str], Optional[str]]:
         """ prüft, ob ein Zeitfenster aktiv ist und setzt entsprechend den Ladestrom
         """
         message = None
@@ -598,22 +616,23 @@ def time_charging(self,
             if self.data.time_charging.plans:
                 plan = timecheck.check_plans_timeframe(self.data.time_charging.plans)
                 if plan is not None:
+                    current = plan.current if charging_type == ChargingType.AC.value else plan.dc_current
                     if self.data.et.active and data.data.optional_data.et_provider_availble():
                         if not data.data.optional_data.et_price_lower_than_limit(self.data.et.max_price):
                             return 0, "stop", self.CHARGING_PRICE_EXCEEDED, plan.name
                     if plan.limit.selected == "none":  # kein Limit konfiguriert, mit konfigurierter Stromstärke laden
-                        return plan.current, "time_charging", message, plan.name
+                        return current, "time_charging", message, plan.name
                     elif plan.limit.selected == "soc":  # SoC Limit konfiguriert
                         if soc:
                             if soc < plan.limit.soc:
-                                return plan.current, "time_charging", message, plan.name  # Limit nicht erreicht
+                                return current, "time_charging", message, plan.name  # Limit nicht erreicht
                             else:
                                 return 0, "stop", self.TIME_CHARGING_SOC_REACHED, plan.name  # Limit erreicht
                         else:
                             return plan.current, "time_charging", message, plan.name
                     elif plan.limit.selected == "amount":  # Energiemengenlimit konfiguriert
                         if used_amount_time_charging < plan.limit.amount:
-                            return plan.current, "time_charging", message, plan.name  # Limit nicht erreicht
+                            return current, "time_charging", message, plan.name  # Limit nicht erreicht
                         else:
                             return 0, "stop", self.TIME_CHARGING_AMOUNT_REACHED, plan.name  # Limit erreicht
                     else:
@@ -633,28 +652,33 @@ def time_charging(self,
 
     def instant_charging(self,
                          soc: Optional[float],
-                         imported_instant_charging: float) -> Tuple[int, str, Optional[str]]:
+                         imported_instant_charging: float,
+                         charging_type: str) -> Tuple[int, str, Optional[str]]:
         """ prüft, ob die Lademengenbegrenzung erreicht wurde und setzt entsprechend den Ladestrom.
         """
         message = None
         try:
             instant_charging = self.data.chargemode.instant_charging
+            if charging_type == ChargingType.AC.value:
+                current = instant_charging.current
+            else:
+                current = instant_charging.dc_current
             if self.data.et.active and data.data.optional_data.et_provider_availble():
                 if not data.data.optional_data.et_price_lower_than_limit(self.data.et.max_price):
                     return 0, "stop", self.CHARGING_PRICE_EXCEEDED
             if instant_charging.limit.selected == "none":
-                return instant_charging.current, "instant_charging", message
+                return current, "instant_charging", message
             elif instant_charging.limit.selected == "soc":
                 if soc:
                     if soc < instant_charging.limit.soc:
-                        return instant_charging.current, "instant_charging", message
+                        return current, "instant_charging", message
                     else:
                         return 0, "stop", self.INSTANT_CHARGING_SOC_REACHED
                 else:
-                    return instant_charging.current, "instant_charging", message
+                    return current, "instant_charging", message
             elif instant_charging.limit.selected == "amount":
                 if imported_instant_charging < self.data.chargemode.instant_charging.limit.amount:
-                    return instant_charging.current, "instant_charging", message
+                    return current, "instant_charging", message
                 else:
                     return 0, "stop", self.INSTANT_CHARGING_AMOUNT_REACHED
             else:
@@ -665,7 +689,7 @@ def instant_charging(self,
 
     PV_CHARGING_SOC_REACHED = "Keine Ladung, da der maximale Soc bereits erreicht wurde."
 
-    def pv_charging(self, soc: Optional[float], min_current: int) -> Tuple[int, str, Optional[str]]:
+    def pv_charging(self, soc: Optional[float], min_current: int, charging_type: str) -> Tuple[int, str, Optional[str]]:
         """ prüft, ob Min-oder Max-Soc erreicht wurden und setzt entsprechend den Ladestrom.
         """
         message = None
@@ -674,13 +698,21 @@ def pv_charging(self, soc: Optional[float], min_current: int) -> Tuple[int, str,
             if soc is None or soc < pv_charging.max_soc:
                 if pv_charging.min_soc != 0 and soc is not None:
                     if soc < pv_charging.min_soc:
-                        return pv_charging.min_soc_current, "instant_charging", message
-                if pv_charging.min_current == 0:
+                        if charging_type == ChargingType.AC.value:
+                            current = pv_charging.min_soc_current
+                        else:
+                            current = pv_charging.dc_min_soc_current
+                        return current, "instant_charging", message
+                if charging_type == ChargingType.AC.value:
+                    pv_min_current = pv_charging.min_current
+                else:
+                    pv_min_current = pv_charging.dc_min_current
+                if pv_min_current == 0:
                     # nur PV; Ampere darf nicht 0 sein, wenn geladen werden soll
                     return min_current, "pv_charging", message
                 else:
                     # Min PV
-                    return pv_charging.min_current, "instant_charging", message
+                    return pv_min_current, "instant_charging", message
             else:
                 return 0, "stop", self.PV_CHARGING_SOC_REACHED
         except Exception:
@@ -693,28 +725,36 @@ def scheduled_charging_recent_plan(self,
                                        phases: int,
                                        used_amount: float,
                                        max_phases: int,
-                                       phase_switch_supported: bool) -> Tuple[Optional[SelectedPlan], float]:
+                                       phase_switch_supported: bool,
+                                       charging_type: str) -> Tuple[Optional[SelectedPlan], float]:
         """ prüft, ob der Ziel-SoC oder die Ziel-Energiemenge erreicht wurde und stellt den zur Erreichung nötigen
         Ladestrom ein. Um etwas mehr Puffer zu haben, wird bis 20 Min nach dem Zieltermin noch geladen, wenn dieser
         nicht eingehalten werden konnte.
         """
         if phase_switch_supported and data.data.general_data.get_phases_chargemode("scheduled_charging",
                                                                                    "instant_charging") == 0:
-            max_current = ev_template.data.max_current_multi_phases
-            plan_data = self.search_plan(max_current, soc, ev_template, max_phases, used_amount)
-            if plan_data:
+            if charging_type == ChargingType.AC.value:
+                max_current = ev_template.data.max_current_multi_phases
+            else:
+                max_current = ev_template.data.dc_max_current
+            plan_data = self.search_plan(max_current, soc, ev_template, max_phases, used_amount, charging_type)
+            if plan_data and charging_type == ChargingType.AC.value:
                 if plan_data.remaining_time > 300 and self.data.et.active is False:
                     max_current = ev_template.data.max_current_single_phase
-                    plan_data_single_phase = self.search_plan(max_current, soc, ev_template, 1, used_amount)
+                    plan_data_single_phase = self.search_plan(
+                        max_current, soc, ev_template, 1, used_amount, charging_type)
                     if plan_data_single_phase:
                         if plan_data_single_phase.remaining_time > 300:
                             plan_data = plan_data_single_phase
         else:
-            if phases == 1:
-                max_current = ev_template.data.max_current_single_phase
+            if charging_type == ChargingType.AC.value:
+                if phases == 1:
+                    max_current = ev_template.data.max_current_single_phase
+                else:
+                    max_current = ev_template.data.max_current_multi_phases
             else:
-                max_current = ev_template.data.max_current_multi_phases
-            plan_data = self.search_plan(max_current, soc, ev_template, phases, used_amount)
+                max_current = ev_template.data.dc_max_current
+            plan_data = self.search_plan(max_current, soc, ev_template, phases, used_amount, charging_type)
         return plan_data
 
     def search_plan(self,
@@ -722,7 +762,8 @@ def search_plan(self,
                     soc: Optional[float],
                     ev_template: EvTemplate,
                     phases: int,
-                    used_amount: float) -> Optional[SelectedPlan]:
+                    used_amount: float,
+                    charging_type: str) -> Optional[SelectedPlan]:
         smallest_remaining_time = float("inf")
         missed_date_today_of_plan_with_smallest_remaining_time = False
         plan_data: Optional[SelectedPlan] = None
@@ -733,7 +774,8 @@ def search_plan(self,
                     raise ValueError("Um Zielladen mit SoC-Ziel nutzen zu können, bitte ein SoC-Modul konfigurieren "
                                      f"oder im Plan {plan.name} als Begrenzung Energie einstellen.")
                 try:
-                    duration, missing_amount = self.calculate_duration(plan, soc, battery_capacity, used_amount, phases)
+                    duration, missing_amount = self.calculate_duration(
+                        plan, soc, battery_capacity, used_amount, phases, charging_type)
                     remaining_time, missed_date_today = timecheck.check_duration(plan, duration, self.BUFFER)
                     if remaining_time:
                         # Wenn der Zeitpunkt vorüber, aber noch nicht abgelaufen ist oder
@@ -748,9 +790,13 @@ def search_plan(self,
                                     (missed_date_today_of_plan_with_smallest_remaining_time and 0 < remaining_time)):
                                 smallest_remaining_time = remaining_time
                                 missed_date_today_of_plan_with_smallest_remaining_time = missed_date_today
+                                if charging_type == ChargingType.AC.value:
+                                    available_current = plan.current
+                                else:
+                                    available_current = plan.dc_current
                                 plan_data = SelectedPlan(
                                     remaining_time=remaining_time,
-                                    available_current=plan.current,
+                                    available_current=available_current,
                                     max_current=max_current,
                                     phases=phases,
                                     num=num,
@@ -767,7 +813,8 @@ def calculate_duration(self,
                            soc: Optional[float],
                            battery_capacity: float,
                            used_amount: float,
-                           phases: int) -> Tuple[float, float]:
+                           phases: int,
+                           charging_type: str) -> Tuple[float, float]:
         if plan.limit.selected == "soc":
             if soc:
                 missing_amount = ((plan.limit.soc_scheduled - soc) / 100) * battery_capacity
@@ -775,7 +822,8 @@ def calculate_duration(self,
                 raise ValueError("Um Zielladen mit SoC-Ziel nutzen zu können, bitte ein SoC-Modul konfigurieren.")
         else:
             missing_amount = plan.limit.amount - used_amount
-        duration = missing_amount/(plan.current * phases*230) * 3600
+        current = plan.current if charging_type == ChargingType.AC.value else plan.dc_current
+        duration = missing_amount/(current * phases*230) * 3600
         return duration, missing_amount
 
     SCHEDULED_REACHED_LIMIT_SOC = ("Kein Zielladen, da noch Zeit bis zum Zieltermin ist. "
diff --git a/packages/control/ev_charge_template_test.py b/packages/control/ev_charge_template_test.py
index c83775471a..cb60b28657 100644
--- a/packages/control/ev_charge_template_test.py
+++ b/packages/control/ev_charge_template_test.py
@@ -5,6 +5,7 @@
 
 from control import data
 from control import optional
+from control.chargepoint.charging_type import ChargingType
 from control.ev import ChargeTemplate, EvTemplate, EvTemplateData, SelectedPlan
 from control.general import General
 from helpermodules import timecheck
@@ -60,7 +61,7 @@ def test_time_charging(plans: Dict[int, TimeChargingPlan], soc: float, used_amou
     monkeypatch.setattr(timecheck, "check_plans_timeframe", check_plans_timeframe_mock)
 
     # execution
-    ret = ct.time_charging(soc, used_amount_time_charging)
+    ret = ct.time_charging(soc, used_amount_time_charging, ChargingType.AC.value)
 
     # evaluation
     assert ret == expected
@@ -86,7 +87,7 @@ def test_instant_charging(selected: str, current_soc: float, used_amount: float,
     ct.data.chargemode.instant_charging.limit.selected = selected
 
     # execution
-    ret = ct.instant_charging(current_soc, used_amount)
+    ret = ct.instant_charging(current_soc, used_amount, ChargingType.AC.value)
 
     # evaluation
     assert ret == expected
@@ -110,7 +111,7 @@ def test_pv_charging(min_soc: int, min_current: int, current_soc: float,
     data.data.bat_all_data.data.config.configured = True
 
     # execution
-    ret = ct.pv_charging(current_soc, 6)
+    ret = ct.pv_charging(current_soc, 6, ChargingType.AC.value)
 
     # evaluation
     assert ret == expected
@@ -151,7 +152,8 @@ def test_scheduled_charging_recent_plan(params: Params, monkeypatch):
     evt = Mock(spec=EvTemplate, data=evt_data)
 
     # execution
-    ct.scheduled_charging_recent_plan(50, evt, params.phases, 5, params.max_phases, params.phase_switch_supported)
+    ct.scheduled_charging_recent_plan(50, evt, params.phases, 5, params.max_phases,
+                                      params.phase_switch_supported, ChargingType.AC.value)
 
     # evaluation
     assert search_plan_mock.call_args.args[0] == params.expected_max_current
@@ -170,7 +172,7 @@ def test_calculate_duration(selected: str, phases: int, expected_duration: float
     plan = ScheduledChargingPlan()
     plan.limit.selected = selected
     # execution
-    duration, missing_amount = ct.calculate_duration(plan, 60, 45000, 200, phases)
+    duration, missing_amount = ct.calculate_duration(plan, 60, 45000, 200, phases, ChargingType.AC.value)
 
     # evaluation
     assert duration == expected_duration
@@ -199,7 +201,7 @@ def test_search_plan(check_duration_return1: Tuple[Optional[float], bool],
     plan_mock = Mock(spec=ScheduledChargingPlan, active=True, current=14, limit=Limit(selected="amount"))
     ct.data.chargemode.scheduled_charging.plans = {0: plan_mock, 1: plan_mock}
     # execution
-    plan_data = ct.search_plan(14, 60, EvTemplate(), 3, 200)
+    plan_data = ct.search_plan(14, 60, EvTemplate(), 3, 200, ChargingType.AC.value)
 
     # evaluation
     if expected_plan_num is None:
diff --git a/packages/control/optional.py b/packages/control/optional.py
index 6b0bd1f347..d6e4456188 100644
--- a/packages/control/optional.py
+++ b/packages/control/optional.py
@@ -7,6 +7,7 @@
 from typing import Dict, List
 
 from dataclass_utils.factories import empty_dict_factory
+from helpermodules import hardware_configuration
 from helpermodules.constants import NO_ERROR
 from helpermodules.pub import Pub
 from helpermodules.timecheck import create_unix_timestamp_current_full_hour
@@ -75,6 +76,7 @@ class OptionalData:
     int_display: InternalDisplay = field(default_factory=int_display_factory)
     led: Led = field(default_factory=led_factory)
     rfid: Rfid = field(default_factory=rfid_factory)
+    dc_charging: bool = False
 
 
 class Optional:
@@ -82,6 +84,8 @@ def __init__(self):
         try:
             self.data = OptionalData()
             self.et_module: ConfigurableElectricityTariff = None
+            self.data.dc_charging = hardware_configuration.get_hardware_configuration_setting("dc_charging")
+            Pub().pub("openWB/optional/dc_charging", self.data.dc_charging)
         except Exception:
             log.exception("Fehler im Optional-Modul")
 
diff --git a/packages/helpermodules/abstract_plans.py b/packages/helpermodules/abstract_plans.py
index 0e2967cfe8..b690c0a20f 100644
--- a/packages/helpermodules/abstract_plans.py
+++ b/packages/helpermodules/abstract_plans.py
@@ -62,6 +62,7 @@ class TimeframePlan(PlanBase):
 @dataclass
 class ScheduledChargingPlan(PlanBase):
     current: int = 14
+    dc_current: float = 145
     name: str = "neuer Zielladen-Plan"
     limit: ScheduledLimit = field(default_factory=scheduled_limit_factory)
     time: str = "07:00"  # ToDo: aktuelle Zeit verwenden
@@ -71,6 +72,7 @@ class ScheduledChargingPlan(PlanBase):
 class TimeChargingPlan(TimeframePlan):
     name: str = "neuer Zeitladen-Plan"
     current: int = 16
+    dc_current: float = 145
     limit: Limit = field(default_factory=limit_factory)
 
 
diff --git a/packages/helpermodules/changed_values_handler_test.py b/packages/helpermodules/changed_values_handler_test.py
index 2e9225f435..189912e814 100644
--- a/packages/helpermodules/changed_values_handler_test.py
+++ b/packages/helpermodules/changed_values_handler_test.py
@@ -1,16 +1,21 @@
 from dataclasses import asdict, dataclass, field
+from enum import IntEnum
 from typing import Dict, List, Optional, Tuple
 from unittest.mock import Mock
 
 import pytest
 
-from control.chargepoint.chargepoint_state import ChargepointState
 from dataclass_utils.factories import currents_list_factory
 from helpermodules.changed_values_handler import ChangedValuesHandler
 
 NONE_TYPE = type(None)
 
 
+class SampleIntEnum(IntEnum):
+    VALUE1 = 1
+    VALUE2 = 2
+
+
 @dataclass
 class SampleClass:
     parameter1: bool = False
@@ -46,7 +51,7 @@ class SampleData:
         default_factory=sample_class, metadata={"topic": "get/field_class"})
     sample_field_dict: Dict = field(default_factory=sample_dict_factory, metadata={
         "topic": "get/field_dict"})
-    sample_field_enum: ChargepointState = field(default=ChargepointState.CHARGING_ALLOWED, metadata={
+    sample_field_enum: SampleIntEnum = field(default=SampleIntEnum.VALUE1, metadata={
         "topic": "get/field_enum"})
     sample_field_float: float = field(default=0, metadata={"topic": "get/field_float"})
     sample_field_int: int = field(default=0, metadata={"topic": "get/field_int"})
@@ -77,8 +82,8 @@ class Params:
            expected_pub_call=("openWB/get/field_class", asdict(SampleClass(parameter1=True)))),
     Params(name="change dict", sample_data=SampleData(sample_field_dict={"key": "another_value"}),
            expected_pub_call=("openWB/get/field_dict", {"key": "another_value"})),
-    Params(name="change enum", sample_data=SampleData(sample_field_enum=ChargepointState.NO_CHARGING_ALLOWED),
-           expected_pub_call=("openWB/get/field_enum", ChargepointState.NO_CHARGING_ALLOWED.value)),
+    Params(name="change enum", sample_data=SampleData(sample_field_enum=SampleIntEnum.VALUE2),
+           expected_pub_call=("openWB/get/field_enum", SampleIntEnum.VALUE2.value)),
     Params(name="change float", sample_data=SampleData(sample_field_float=2.5),
            expected_pub_call=("openWB/get/field_float", 2.5)),
     Params(name="change int", sample_data=SampleData(sample_field_int=2),
@@ -98,7 +103,7 @@ class Params:
 
 
 @pytest.mark.parametrize("params", cases, ids=[c.name for c in cases])
-def test_update_value(params: Params, mock_pub: Mock):
+def test_update_value(params: Params, mock_pub: Mock, monkeypatch):
     # setup
     handler = ChangedValuesHandler(Mock())
 
@@ -106,6 +111,6 @@ def test_update_value(params: Params, mock_pub: Mock):
     handler._update_value("openWB/", SampleData(), params.sample_data)
 
     # evaluation
-    assert len(mock_pub.method_calls) == params.expected_calls
+    assert len(mock_pub.method_calls) - 1 == params.expected_calls
     if params.expected_calls > 0:
-        assert mock_pub.method_calls[0].args == params.expected_pub_call
+        assert mock_pub.method_calls[1].args == params.expected_pub_call
diff --git a/packages/helpermodules/hardware_configuration.py b/packages/helpermodules/hardware_configuration.py
index cb81289693..179a88eb18 100644
--- a/packages/helpermodules/hardware_configuration.py
+++ b/packages/helpermodules/hardware_configuration.py
@@ -7,23 +7,30 @@
 HARDWARE_CONFIGURATION_FILE = "/home/openwb/configuration.json"
 
 
-def update_hardware_configuration(new_setting: Dict) -> None:
+def _read_configuration() -> Dict:
     with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
-        data = json.loads(f.read())
-    write_and_check(HARDWARE_CONFIGURATION_FILE, data.update(new_setting))
+        return json.loads(f.read())
+
+
+def update_hardware_configuration(new_setting: Dict) -> None:
+    data = _read_configuration()
+    data.update(new_setting)
+    write_and_check(HARDWARE_CONFIGURATION_FILE, data)
 
 
 def remove_setting_hardware_configuration(obsolet_setting: str) -> None:
-    with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
-        data = json.loads(f.read())
+    data = _read_configuration()
     if obsolet_setting in data:
-        write_and_check(HARDWARE_CONFIGURATION_FILE, data.pop(obsolet_setting))
+        data.pop(obsolet_setting)
+        write_and_check(HARDWARE_CONFIGURATION_FILE, data)
 
 
 def get_hardware_configuration_setting(name: str, default=None):
-    with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
-        configuration = json.loads(f.read())
-    return configuration.get(name, default)
+    return _read_configuration().get(name, default)
+
+
+def exists_hardware_configuration_setting(name: str) -> bool:
+    return name in _read_configuration()
 
 
 def get_serial_number() -> str:
diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py
index 1af3fe797b..27431294df 100644
--- a/packages/helpermodules/setdata.py
+++ b/packages/helpermodules/setdata.py
@@ -10,7 +10,7 @@
 import paho.mqtt.client as mqtt
 
 import logging
-from helpermodules import subdata
+from helpermodules import hardware_configuration, subdata
 from helpermodules.broker import InternalBrokerClient
 from helpermodules.pub import Pub, pub_single
 from helpermodules.utils.topic_parser import (decode_payload, get_index, get_index_position, get_second_index,
@@ -452,6 +452,8 @@ def _subprocess_vehicle_chargemode_topic(self, msg: mqtt.MQTTMessage):
                     self._validate_value(msg, str, pub_json=True)
                 elif "/chargemode/instant_charging/current" in msg.topic:
                     self._validate_value(msg, int, [(6, 32)], pub_json=True)
+                elif "/chargemode/instant_charging/dc_current" in msg.topic:
+                    self._validate_value(msg, float, [(4, 300)], pub_json=True)
                 elif "/chargemode/instant_charging/limit/selected" in msg.topic:
                     self._validate_value(msg, str, pub_json=True)
                 elif "/chargemode/instant_charging/limit/soc" in msg.topic:
@@ -463,10 +465,14 @@ def _subprocess_vehicle_chargemode_topic(self, msg: mqtt.MQTTMessage):
                 elif "/chargemode/pv_charging/min_current" in msg.topic:
                     self._validate_value(
                         msg, int, [(0, 0), (6, 16)], pub_json=True)
+                elif "/chargemode/pv_charging/dc_min_current" in msg.topic:
+                    self._validate_value(msg, float, [(0, 300)], pub_json=True)
                 elif "/chargemode/pv_charging/min_soc" in msg.topic:
                     self._validate_value(msg, int, [(0, 100)], pub_json=True)
                 elif "/chargemode/pv_charging/min_soc_current" in msg.topic:
                     self._validate_value(msg, int, [(6, 32)], pub_json=True)
+                elif "/chargemode/pv_charging/dc_min_soc_current" in msg.topic:
+                    self._validate_value(msg, float, [(4, 300)], pub_json=True)
                 elif "/chargemode/pv_charging/max_soc" in msg.topic:
                     self._validate_value(msg, int, [(0, 101)], pub_json=True)
                 elif "/chargemode/scheduled_charging/plans/" in msg.topic and "/active" in msg.topic:
@@ -521,7 +527,10 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                         "/set/charging_ev_prev" in msg.topic):
                     self._validate_value(msg, int, [(-1, float("inf"))])
                 elif "/set/current" in msg.topic:
-                    self._validate_value(msg, float, [(6, 32), (0, 0)])
+                    if hardware_configuration.get_hardware_configuration_setting("dc_charging"):
+                        self._validate_value(msg, float, [(0, 0), (6, 32), (0, 450)])
+                    else:
+                        self._validate_value(msg, float, [(6, 32), (0, 0)])
                 elif ("/set/energy_to_charge" in msg.topic or
                         "/set/required_power" in msg.topic):
                     self._validate_value(msg, float, [(0, float("inf"))])
@@ -545,7 +554,10 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                 elif "get" in msg.topic:
                     self.process_chargepoint_get_topics(msg)
                 elif "/control_parameter/required_current" in msg.topic:
-                    self._validate_value(msg, float, [(6, 32), (0, 0)])
+                    if hardware_configuration.get_hardware_configuration_setting("dc_charging"):
+                        self._validate_value(msg, float, [(0, 0), (6, 32), (0, 450)])
+                    else:
+                        self._validate_value(msg, float, [(6, 32), (0, 0)])
                 elif "/control_parameter/phases" in msg.topic:
                     self._validate_value(msg, int, [(0, 3)])
                 elif "/control_parameter/failed_phase_switches" in msg.topic:
@@ -560,8 +572,10 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                     self._validate_value(msg, str)
                 elif ("/control_parameter/imported_instant_charging" in msg.topic or
                         "/control_parameter/imported_at_plan_start" in msg.topic or
+                        "/control_parameter/min_current" in msg.topic or
                         "/control_parameter/timestamp_switch_on_off" in msg.topic or
                         "/control_parameter/timestamp_auto_phase_switch" in msg.topic or
+                        "/control_parameter/timestamp_charge_start" in msg.topic or
                         "/control_parameter/timestamp_perform_phase_switch" in msg.topic):
                     self._validate_value(msg, float, [(0, float("inf"))])
                 elif "/control_parameter/state" in msg.topic:
@@ -588,6 +602,9 @@ def process_chargepoint_get_topics(self, msg):
         elif ("/get/daily_imported" in msg.topic or
                 "/get/daily_exported" in msg.topic or
                 "/get/power" in msg.topic or
+                "/get/charging_current" in msg.topic or
+                "/get/charging_power" in msg.topic or
+                "/get/charging_voltage" in msg.topic or
                 "/get/imported" in msg.topic or
                 "/get/exported" in msg.topic or
                 "/get/soc_timestamp" in msg.topic):
@@ -610,10 +627,12 @@ def process_chargepoint_get_topics(self, msg):
                 "/get/vehicle_id" in msg.topic or
                 "/get/serial_number" in msg.topic):
             self._validate_value(msg, str)
-        elif "/get/rfid_timestamp" in msg.topic:
-            self._validate_value(msg, float)
         elif ("/get/soc" in msg.topic):
             self._validate_value(msg, float, [(0, 100)])
+        elif "/get/rfid_timestamp" in msg.topic:
+            self._validate_value(msg, float)
+        elif "/get/simulation" in msg.topic:
+            self._validate_value(msg, "json")
         else:
             self.__unknown_topic(msg)
 
@@ -866,7 +885,7 @@ def process_counter_topic(self, msg: mqtt.MQTTMessage):
             enthält Topic und Payload
         """
         try:
-            if ("openWB/set/counter/config/reserve_for_not_charging" in msg.topic or
+            if ("openWB/set/counter/config/consider_less_charging" in msg.topic or
                     "openWB/set/counter/set/loadmanagement_active" in msg.topic):
                 self._validate_value(msg, bool)
             elif "openWB/set/counter/set/invalid_home_consumption" in msg.topic:
diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py
index d8bc88df2b..728e2e3cab 100644
--- a/packages/helpermodules/subdata.py
+++ b/packages/helpermodules/subdata.py
@@ -425,13 +425,18 @@ def process_chargepoint_topic(self, var: Dict[str, chargepoint.Chargepoint], msg
                     elif re.search("/chargepoint/[0-9]+/get/", msg.topic) is not None:
                         if re.search("/chargepoint/[0-9]+/get/connected_vehicle/", msg.topic) is not None:
                             self.set_json_payload_class(var["cp"+index].chargepoint.data.get.connected_vehicle, msg)
-                        elif re.search("/chargepoint/[0-9]+/get/", msg.topic) is not None:
-                            if (re.search("/chargepoint/[0-9]+/get/soc$", msg.topic) is not None and
-                                    decode_payload(msg.payload) != var["cp"+index].chargepoint.data.get.soc):
-                                # Wenn das Auto noch nicht zugeordnet ist, wird der SoC nach der Zuordnung aktualisiert
-                                if var["cp"+index].chargepoint.data.set.charging_ev > -1:
-                                    Pub().pub(f'openWB/set/vehicle/{var["cp"+index].chargepoint.data.set.charging_ev}'
-                                              '/get/force_soc_update', True)
+                        elif (re.search("/chargepoint/[0-9]+/get/soc$", msg.topic) is not None and
+                              decode_payload(msg.payload) != var["cp"+index].chargepoint.data.get.soc):
+                            # Wenn das Auto noch nicht zugeordnet ist, wird der SoC nach der Zuordnung aktualisiert
+                            if var["cp"+index].chargepoint.data.set.charging_ev > -1:
+                                Pub().pub(f'openWB/set/vehicle/{var["cp"+index].chargepoint.data.set.charging_ev}'
+                                          '/get/force_soc_update', True)
+                            self.set_json_payload_class(var["cp"+index].chargepoint.data.get, msg)
+                        elif re.search("/chargepoint/[0-9]+/get/simulation$", msg.topic) is not None:
+                            var["cp"+index].chargepoint.chargepoint_module.sim_counter.data = dataclass_from_dict(
+                                SimCounterState,
+                                decode_payload(msg.payload))
+                        else:
                             self.set_json_payload_class(var["cp"+index].chargepoint.data.get, msg)
                     elif re.search("/chargepoint/[0-9]+/config$", msg.topic) is not None:
                         self.process_chargepoint_config_topic(var, msg)
diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index c636ba1c60..8a85a63b64 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -9,6 +9,7 @@
 from typing import List, Optional
 from paho.mqtt.client import Client as MqttClient, MQTTMessage
 from control.bat_all import BatConsiderationMode
+from control.chargepoint.charging_type import ChargingType
 from control.general import ChargemodeConfig
 import dataclass_utils
 
@@ -42,7 +43,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 54
+    DATASTORE_VERSION = 56
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -106,6 +107,7 @@ class UpdateConfig:
         "^openWB/chargepoint/[0-9]+/get/serial_number$",
         "^openWB/chargepoint/[0-9]+/get/soc$",
         "^openWB/chargepoint/[0-9]+/get/soc_timestamp$",
+        "^openWB/chargepoint/[0-9]+/get/simulation$",
         "^openWB/chargepoint/[0-9]+/get/state_str$",
         "^openWB/chargepoint/[0-9]+/get/connected_vehicle/soc$",
         "^openWB/chargepoint/[0-9]+/get/connected_vehicle/info$",
@@ -136,7 +138,7 @@ class UpdateConfig:
         "^openWB/command/[A-Za-z0-9_]+/error$",
         "^openWB/command/todo$",
 
-        "^openWB/counter/config/reserve_for_not_charging$",
+        "^openWB/counter/config/consider_less_charging$",
         "^openWB/counter/config/home_consumption_source_id$",
         "^openWB/counter/get/hierarchy$",
         "^openWB/counter/set/disengageable_smarthome_power$",
@@ -423,7 +425,7 @@ class UpdateConfig:
         ("openWB/chargepoint/get/power", 0),
         ("openWB/chargepoint/template/0", get_chargepoint_template_default()),
         ("openWB/counter/get/hierarchy", []),
-        ("openWB/counter/config/reserve_for_not_charging", counter_all.Config().reserve_for_not_charging),
+        ("openWB/counter/config/consider_less_charging", counter_all.Config().consider_less_charging),
         ("openWB/counter/config/home_consumption_source_id", counter_all.Config().home_consumption_source_id),
         ("openWB/vehicle/0/name", "Standard-Fahrzeug"),
         ("openWB/vehicle/0/charge_template", ev.Ev(0).charge_template.ct_num),
@@ -1353,7 +1355,6 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: updated_payload}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 39)
-        Pub().pub("openWB/system/datastore_version", 39)
 
     def upgrade_datastore_39(self) -> None:
         def upgrade(topic: str, payload) -> None:
@@ -1654,3 +1655,25 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: configuration_payload}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 54)
+
+    def upgrade_datastore_54(self) -> None:
+        def upgrade(topic: str, payload) -> Optional[dict]:
+            if "openWB/counter/config/reserve_for_less_charging" == topic:
+                payload = decode_payload(payload)
+                return {"openWB/counter/config/consider_less_charging": payload}
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 55)
+
+    def upgrade_datastore_55(self) -> None:
+        if hardware_configuration.exists_hardware_configuration_setting("dc_charging") is False:
+            hardware_configuration.update_hardware_configuration({"dc_charging": False})
+
+        def upgrade(topic: str, payload) -> Optional[dict]:
+            if re.search("openWB/chargepoint/template/[0-9]+", topic) is not None:
+                payload = decode_payload(payload)
+                if "charging_type" not in payload:
+                    updated_payload = payload
+                    updated_payload["charging_type"] = ChargingType.AC.value
+                    return {topic: updated_payload}
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 56)
diff --git a/packages/modules/chargepoints/external_openwb/config.py b/packages/modules/chargepoints/external_openwb/config.py
index 9f95f58ae9..50c322aeb5 100644
--- a/packages/modules/chargepoints/external_openwb/config.py
+++ b/packages/modules/chargepoints/external_openwb/config.py
@@ -1,5 +1,7 @@
 from typing import Optional
 
+from modules.common.abstract_chargepoint import SetupChargepoint
+
 
 class OpenWBSeriesConfiguration:
     def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
@@ -7,13 +9,10 @@ def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
         self.duo_num = duo_num
 
 
-class OpenWBSeries:
+class OpenWBSeries(SetupChargepoint[OpenWBSeriesConfiguration]):
     def __init__(self,
                  name: str = "Externe openWB",
                  type: str = "external_openwb",
                  id: int = 0,
                  configuration: OpenWBSeriesConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or OpenWBSeriesConfiguration()
+        super().__init__(name, type, id, configuration or OpenWBSeriesConfiguration())
diff --git a/packages/modules/chargepoints/internal_openwb/config.py b/packages/modules/chargepoints/internal_openwb/config.py
index e8899b15c3..94f7f6253d 100644
--- a/packages/modules/chargepoints/internal_openwb/config.py
+++ b/packages/modules/chargepoints/internal_openwb/config.py
@@ -1,5 +1,7 @@
 from enum import Enum
 
+from modules.common.abstract_chargepoint import SetupChargepoint
+
 
 class InternalChargepointMode(Enum):
     SOCKET = "socket"
@@ -14,13 +16,10 @@ def __init__(self, mode: str = InternalChargepointMode.SERIES.value, duo_num: in
         self.duo_num = duo_num
 
 
-class InternalOpenWB:
+class InternalOpenWB(SetupChargepoint[InternalOpenWBConfiguration]):
     def __init__(self,
                  name: str = "Interne openWB",
                  type: str = "internal_openwb",
                  id: int = 0,
                  configuration: InternalOpenWBConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or InternalOpenWBConfiguration()
+        super().__init__(name, type, id, configuration or InternalOpenWBConfiguration())
diff --git a/packages/modules/chargepoints/mqtt/config.py b/packages/modules/chargepoints/mqtt/config.py
index 0020bba750..7d96e7242f 100644
--- a/packages/modules/chargepoints/mqtt/config.py
+++ b/packages/modules/chargepoints/mqtt/config.py
@@ -1,15 +1,15 @@
+from modules.common.abstract_chargepoint import SetupChargepoint
+
+
 class MqttConfiguration:
     def __init__(self):
         pass
 
 
-class Mqtt:
+class Mqtt(SetupChargepoint[MqttConfiguration]):
     def __init__(self,
                  name: str = "MQTT-Ladepunkt",
                  type: str = "mqtt",
                  id: int = 0,
                  configuration: MqttConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or MqttConfiguration()
+        super().__init__(name, type, id, configuration or MqttConfiguration())
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/__init__.py b/packages/modules/chargepoints/openwb_dc_adapter/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
new file mode 100644
index 0000000000..3dcc7f4181
--- /dev/null
+++ b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
@@ -0,0 +1,125 @@
+
+from enum import IntEnum
+import logging
+
+from helpermodules import hardware_configuration
+from helpermodules.utils.error_counter import ErrorCounterContext
+from modules.chargepoints.openwb_dc_adapter.config import OpenWBDcAdapter
+from modules.common.abstract_chargepoint import AbstractChargepoint
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.fault_state import ComponentInfo, FaultState
+from modules.common.simcount import SimCounterChargepoint
+from modules.common.store import get_chargepoint_value_store
+from modules.common.component_state import ChargepointState
+from modules.common import req
+
+log = logging.getLogger(__name__)
+
+
+class ChargingStatus(IntEnum):
+    AVAILABLE = 0
+    PREPARING_TAGID_READY = 1
+    PREPARING_EV_READY = 2
+    CHARGING = 3
+    SUSPENDED_EV = 4
+    SUSPENDED_EVSE = 5
+    FINISHING = 6
+    RESERVED = 7
+    UNAVAILABLE = 8
+    UNAVAILABLE_FW_UPDATE = 9
+    FAULTED = 10
+    UNAVAILABLE_CONN_OBJ = 11
+
+
+class ChargepointModule(AbstractChargepoint):
+    def __init__(self, config: OpenWBDcAdapter) -> None:
+        self.config = config
+        self.store = get_chargepoint_value_store(self.config.id)
+        self.fault_state = FaultState(ComponentInfo(
+            self.config.id,
+            "Ladepunkt", "chargepoint"))
+        self.sim_counter = SimCounterChargepoint(self.config.id)
+        self.__session = req.get_http_session()
+        self.__client_error_context = ErrorCounterContext(
+            "Anhaltender Fehler beim Auslesen des Ladepunkts. Sollstromstärke wird zurückgesetzt.")
+        if hardware_configuration.get_hardware_configuration_setting("openwb_dc_adapter") is False:
+            raise Exception(
+                "DC-Laden muss durch den Support freigeschaltet werden. Bitte nehme Kontakt mit dem Support auf.")
+        self.efficiency = None
+
+        with SingleComponentUpdateContext(self.fault_state, False):
+            with self.__client_error_context:
+                self.__session.post(
+                    'http://' + self.config.configuration.ip_address + '/connect.php',
+                    data={'heartbeatenabled': '1'})
+
+    def set_current(self, current: float) -> None:
+        if self.__client_error_context.error_counter_exceeded():
+            current = 0
+        with SingleComponentUpdateContext(self.fault_state, False):
+            with self.__client_error_context:
+                ip_address = self.config.configuration.ip_address
+                raw_current = self.subtract_conversion_loss_from_current(current)
+                raw_power = raw_current * 3 * 230
+                log.debug(f"DC-Stromstärke: {raw_current}A ≙ {raw_power / 1000}kW")
+                self.__session.post('http://'+ip_address+'/connect.php', data={'power': raw_power})
+
+    def subtract_conversion_loss_from_current(self, current: float) -> float:
+        return current * (self.efficiency if self.efficiency else 0.9)
+
+    def add_conversion_loss_to_current(self, current: float) -> float:
+        return current / (self.efficiency if self.efficiency else 0.9)
+
+    def get_values(self) -> None:
+        with SingleComponentUpdateContext(self.fault_state):
+            with self.__client_error_context:
+                ip_address = self.config.configuration.ip_address
+                json_rsp = self.__session.get('http://'+ip_address+'/connect.php').json()
+
+                if json_rsp["fault_state"] == 1:
+                    self.fault_state.warning(json_rsp["fault_str"])
+                elif json_rsp["fault_state"] == 2:
+                    raise Exception(json_rsp["fault_str"])
+
+                charging_power = json_rsp["charging_power"]
+                imported, exported = self.sim_counter.sim_count(charging_power)
+                chargepoint_state = ChargepointState(
+                    charge_state=json_rsp["charge_state"],
+                    charging_current=json_rsp["charging_current"],
+                    charging_power=charging_power,
+                    charging_voltage=json_rsp["charging_voltage"],
+                    currents=json_rsp["currents"],
+                    exported=exported,
+                    imported=imported,
+                    phases_in_use=3,
+                    power=json_rsp["power_all"],
+                    powers=json_rsp["powers"],
+                    plug_state=json_rsp["plug_state"],
+                    rfid=json_rsp["rfid_tag"],
+                    soc=json_rsp["soc_value"],
+                    soc_timestamp=json_rsp["soc_timestamp"],
+                    vehicle_id=json_rsp["vehicle_id"],
+                    serial_number=json_rsp["serial"],
+                )
+
+                if chargepoint_state.charge_state:
+                    try:
+                        self.efficiency = chargepoint_state.charging_power / chargepoint_state.power
+                        log.debug(f"Effizienz: {self.efficiency}")
+                    except ZeroDivisionError:
+                        self.efficiency = None
+                else:
+                    self.efficiency = None
+                if not (json_rsp["state"] == ChargingStatus.AVAILABLE.value or
+                        json_rsp["state"] == ChargingStatus.PREPARING_TAGID_READY.value or
+                        json_rsp["state"] == ChargingStatus.PREPARING_EV_READY.value or
+                        json_rsp["state"] == ChargingStatus.CHARGING.value or
+                        json_rsp["state"] == ChargingStatus.FINISHING.value or
+                        json_rsp["state"] == ChargingStatus.UNAVAILABLE_CONN_OBJ.value):
+                    raise Exception(f"Ladepunkt nicht verfügbar. Status: {ChargingStatus(json_rsp['state'])}")
+                self.store.set(chargepoint_state)
+                self.__client_error_context.reset_error_counter()
+
+
+chargepoint_descriptor = DeviceDescriptor(configuration_factory=OpenWBDcAdapter)
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/config.py b/packages/modules/chargepoints/openwb_dc_adapter/config.py
new file mode 100644
index 0000000000..c29770895b
--- /dev/null
+++ b/packages/modules/chargepoints/openwb_dc_adapter/config.py
@@ -0,0 +1,20 @@
+from typing import Optional
+
+from helpermodules import hardware_configuration
+from modules.common.abstract_chargepoint import SetupChargepoint
+
+
+class OpenWBDcAdapterConfiguration:
+    def __init__(self, ip_address: Optional[str] = None):
+        self.ip_address = ip_address
+
+
+class OpenWBDcAdapter(SetupChargepoint[OpenWBDcAdapterConfiguration]):
+    def __init__(self,
+                 name: str = "openWB Adapter für DC-Lader",
+                 type: str = "openwb_dc_adapter",
+                 id: int = 0,
+                 configuration: OpenWBDcAdapterConfiguration = None) -> None:
+        super().__init__(name, type, id, configuration or OpenWBDcAdapterConfiguration())
+        self.visibility = hardware_configuration.get_hardware_configuration_setting("dc_charging")
+        self.charging_type = "DC"
diff --git a/packages/modules/chargepoints/openwb_pro/config.py b/packages/modules/chargepoints/openwb_pro/config.py
index b42a55be68..db54fe1672 100644
--- a/packages/modules/chargepoints/openwb_pro/config.py
+++ b/packages/modules/chargepoints/openwb_pro/config.py
@@ -1,5 +1,7 @@
 from typing import Optional
 
+from modules.common.abstract_chargepoint import SetupChargepoint
+
 
 class OpenWBProConfiguration:
     def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
@@ -7,13 +9,10 @@ def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
         self.duo_num = duo_num
 
 
-class OpenWBPro:
+class OpenWBPro(SetupChargepoint[OpenWBProConfiguration]):
     def __init__(self,
                  name: str = "openWB Pro",
                  type: str = "openwb_pro",
                  id: int = 0,
                  configuration: OpenWBProConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or OpenWBProConfiguration()
+        super().__init__(name, type, id, configuration or OpenWBProConfiguration())
diff --git a/packages/modules/chargepoints/openwb_series2_satellit/config.py b/packages/modules/chargepoints/openwb_series2_satellit/config.py
index 2dd674da6d..b331089349 100644
--- a/packages/modules/chargepoints/openwb_series2_satellit/config.py
+++ b/packages/modules/chargepoints/openwb_series2_satellit/config.py
@@ -1,5 +1,7 @@
 from typing import Optional
 
+from modules.common.abstract_chargepoint import SetupChargepoint
+
 
 class OpenWBseries2SatellitConfiguration:
     def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
@@ -7,13 +9,10 @@ def __init__(self, ip_address: Optional[str] = None, duo_num: int = 0):
         self.duo_num = duo_num
 
 
-class OpenWBseries2Satellit:
+class OpenWBseries2Satellit(SetupChargepoint[OpenWBseries2SatellitConfiguration]):
     def __init__(self,
                  name: str = "openWB series2 satellit, openWB series2 satellit Duo",
                  type: str = "openwb_series2_satellit",
                  id: int = 0,
                  configuration: OpenWBseries2SatellitConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or OpenWBseries2SatellitConfiguration()
+        super().__init__(name, type, id, configuration or OpenWBseries2SatellitConfiguration())
diff --git a/packages/modules/chargepoints/smartwb/config.py b/packages/modules/chargepoints/smartwb/config.py
index 06c16e2dc9..8052737999 100644
--- a/packages/modules/chargepoints/smartwb/config.py
+++ b/packages/modules/chargepoints/smartwb/config.py
@@ -1,5 +1,7 @@
 from typing import Optional
 
+from modules.common.abstract_chargepoint import SetupChargepoint
+
 
 class SmartWBConfiguration:
     def __init__(self, ip_address: Optional[str] = None, timeout: int = 2):
@@ -7,13 +9,10 @@ def __init__(self, ip_address: Optional[str] = None, timeout: int = 2):
         self.timeout = timeout
 
 
-class SmartWB:
+class SmartWB(SetupChargepoint[SmartWBConfiguration]):
     def __init__(self,
                  name: str = "smartWB / EVSE-Wifi (>= v1.x.x/v2.x.x)",
                  type: str = "smartwb",
                  id: int = 0,
                  configuration: SmartWBConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or SmartWBConfiguration()
+        super().__init__(name, type, id, configuration or SmartWBConfiguration())
diff --git a/packages/modules/common/abstract_chargepoint.py b/packages/modules/common/abstract_chargepoint.py
index 1b7b1ac10f..140cdabc9e 100644
--- a/packages/modules/common/abstract_chargepoint.py
+++ b/packages/modules/common/abstract_chargepoint.py
@@ -1,4 +1,7 @@
 from abc import abstractmethod
+from typing import Generic, TypeVar
+
+from control.chargepoint.charging_type import ChargingType
 
 
 class AbstractChargepoint:
@@ -25,3 +28,30 @@ def interrupt_cp(self, duration: int) -> None:
     @abstractmethod
     def clear_rfid(self) -> None:
         pass
+
+    @abstractmethod
+    def add_conversion_loss_to_current(self, current: float) -> float:
+        return current
+
+    @abstractmethod
+    def subtract_conversion_loss_from_current(self, current: float) -> float:
+        return current
+
+
+T = TypeVar("T")
+
+
+class SetupChargepoint(Generic[T]):
+    def __init__(self,
+                 name: str,
+                 type: str,
+                 id: int,
+                 configuration: T,
+                 charging_type: str = ChargingType.AC.value,
+                 visibility: bool = True) -> None:
+        self.name = name
+        self.type = type
+        self.id = id
+        self.configuration = configuration
+        self.charging_type = charging_type
+        self.visibility = visibility
diff --git a/packages/modules/common/component_state.py b/packages/modules/common/component_state.py
index afcd76d0bf..fa2a904658 100644
--- a/packages/modules/common/component_state.py
+++ b/packages/modules/common/component_state.py
@@ -149,6 +149,9 @@ def __init__(self,
                  exported: float = 0,
                  power: float = 0,
                  serial_number: str = "",
+                 charging_current: Optional[float] = 0,
+                 charging_voltage: Optional[float] = 0,
+                 charging_power: Optional[float] = 0,
                  powers: Optional[List[Optional[float]]] = None,
                  voltages: Optional[List[Optional[float]]] = None,
                  currents: Optional[List[Optional[float]]] = None,
@@ -178,6 +181,9 @@ def __init__(self,
             self.rfid_timestamp = rfid_timestamp
         if _check_none(power_factors):
             power_factors = [0.0]*3
+        self.charging_current = charging_current
+        self.charging_power = charging_power
+        self.charging_voltage = charging_voltage
         self.power_factors = power_factors
         self.soc = soc
         self.soc_timestamp = soc_timestamp
diff --git a/packages/modules/common/simcount/__init__.py b/packages/modules/common/simcount/__init__.py
index add2e1ac5d..7c25745c47 100644
--- a/packages/modules/common/simcount/__init__.py
+++ b/packages/modules/common/simcount/__init__.py
@@ -1,3 +1,3 @@
 from modules.common.simcount._simcount import sim_count
-from modules.common.simcount._simcounter import SimCounter
+from modules.common.simcount._simcounter import SimCounter, SimCounterChargepoint
 from modules.common.simcount.simcounter_state import SimCounterState
diff --git a/packages/modules/common/simcount/_simcounter.py b/packages/modules/common/simcount/_simcounter.py
index 0e65dec191..5f196c7643 100644
--- a/packages/modules/common/simcount/_simcounter.py
+++ b/packages/modules/common/simcount/_simcounter.py
@@ -13,3 +13,13 @@ def __init__(self, device_id: int, component_id: int, prefix: str):
     def sim_count(self, power: float) -> Tuple[float, float]:
         self.data = sim_count(power, self.topic, self.data, self.prefix)
         return self.data.imported, self.data.exported
+
+
+class SimCounterChargepoint:
+    def __init__(self, chargepoint_id: int):
+        self.topic = f"openWB/set/chargepoint/{chargepoint_id}/get/"
+        self.data = None  # type: Optional[SimCounterState]
+
+    def sim_count(self, power: float) -> Tuple[float, float]:
+        self.data = sim_count(power, self.topic, self.data, "")
+        return self.data.imported, self.data.exported
diff --git a/packages/modules/common/store/_chargepoint.py b/packages/modules/common/store/_chargepoint.py
index 5f68602a9f..631040c511 100644
--- a/packages/modules/common/store/_chargepoint.py
+++ b/packages/modules/common/store/_chargepoint.py
@@ -28,6 +28,11 @@ def set(self, state: ChargepointState) -> None:
         self.state = state
 
     def update(self):
+        pub_to_broker("openWB/set/chargepoint/" + str(self.num) +
+                      "/get/charging_current", self.state.charging_current, 2)
+        pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/charging_power", self.state.charging_power, 2)
+        pub_to_broker("openWB/set/chargepoint/" + str(self.num) +
+                      "/get/charging_voltage", self.state.charging_voltage, 2)
         pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/voltages", self.state.voltages, 2)
         pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/currents", self.state.currents, 2)
         pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/power_factors", self.state.power_factors, 2)
diff --git a/packages/modules/configuration.py b/packages/modules/configuration.py
index a1708e2b3f..5d3959e83d 100644
--- a/packages/modules/configuration.py
+++ b/packages/modules/configuration.py
@@ -228,10 +228,11 @@ def create_chargepoints_list(path_list):
                     dev_defaults = importlib.import_module(
                         f".chargepoints.{path.parts[-2]}.chargepoint_module",
                         "modules").chargepoint_descriptor.configuration_factory()
-                    chargepoints.append({
-                        "value": dev_defaults.type,
-                        "text": dev_defaults.name
-                    })
+                    if dev_defaults.visibility:
+                        chargepoints.append({
+                            "value": dev_defaults.type,
+                            "text": dev_defaults.name
+                        })
                 except Exception:
                     log.exception("Fehler im configuration-Modul")
             chargepoints = sorted(chargepoints, key=lambda d: d['text'].upper())
diff --git a/packages/modules/internal_chargepoint_handler/update_values_test.py b/packages/modules/internal_chargepoint_handler/update_values_test.py
index 2360a31bcc..6fcd274076 100644
--- a/packages/modules/internal_chargepoint_handler/update_values_test.py
+++ b/packages/modules/internal_chargepoint_handler/update_values_test.py
@@ -24,7 +24,7 @@
 
 @pytest.mark.parametrize(
     "old_chargepoint_state, published_topics",
-    [(None, 36),
+    [(None, 42),
      (OLD_CHARGEPOINT_STATE, 2)]
 
 )
diff --git a/packages/modules/update_soc.py b/packages/modules/update_soc.py
index 68dda5ce6b..2b54411703 100644
--- a/packages/modules/update_soc.py
+++ b/packages/modules/update_soc.py
@@ -103,9 +103,12 @@ def _get_vehicle_update_data(self, ev_num: int) -> VehicleUpdateData:
                 if ev.soc_module.general_config.use_soc_from_cp:
                     soc_from_cp = cp.data.get.soc
                     timestamp_soc_from_cp = cp.data.get.soc_timestamp
+                    log.debug(f"cp.num {cp.num} cp.data.get {cp.data.get}")
+                    log.debug(f"1 soc_from_cp: {soc_from_cp}, timestamp_soc_from_cp: {timestamp_soc_from_cp}")
                 else:
                     soc_from_cp = None
                     timestamp_soc_from_cp = None
+                    log.debug(f"2 soc_from_cp: {soc_from_cp}, timestamp_soc_from_cp: {timestamp_soc_from_cp}")
                 break
         else:
             plug_state = False
@@ -115,6 +118,7 @@ def _get_vehicle_update_data(self, ev_num: int) -> VehicleUpdateData:
             efficiency = ev_template.data.efficiency
             soc_from_cp = None
             timestamp_soc_from_cp = None
+            log.debug(f"3 soc_from_cp: {soc_from_cp}, timestamp_soc_from_cp: {timestamp_soc_from_cp}")
         return VehicleUpdateData(plug_state=plug_state,
                                  charge_state=charge_state,
                                  efficiency=efficiency,
diff --git a/packages/modules/web_themes/standard_legacy/web/index.html b/packages/modules/web_themes/standard_legacy/web/index.html
index 6f0a09dd7e..e82a11b1ba 100644
--- a/packages/modules/web_themes/standard_legacy/web/index.html
+++ b/packages/modules/web_themes/standard_legacy/web/index.html
@@ -638,6 +638,29 @@ <h3>Einstellungen für "Sofortladen"</h3>
 											</div>
 										</div>
 									</div>
+									<div class="dc-charging-configured hide">
+										<div class="form-row vaRow mb-0">
+											<div class="col">
+												DC-Sollleistung
+											</div>
+											<div class="col-md-8">
+												<div class="form-row form-group mb-1 vaRow">
+													<div class="col">
+														<input type="range"
+															class="charge-point-instant-charge-dc-current form-control-range rangeInput"
+															id="dcCurrentInstantChargeCpT"
+															data-transformation='{ "in": "(<v> * 3 * 230) / 1000", "out": "(<v> * 1000) / 230 / 3" }'
+															data-topic="openWB/set/vehicle/template/charge_template/<ct>/chargemode/instant_charging/dc_current"
+															min="4" max="300" step="1">
+													</div>
+													<label for="dcCurrentInstantChargeCpT"
+														class="col-2 col-form-label valueLabel text-right" data-suffix="kW">
+														-- kW
+													</label>
+												</div>
+											</div>
+										</div>
+									</div>
 									<div class="form-row vaRow">
 										<div class="col">
 											<label class="col-form-label">Begrenzung</label>
@@ -720,6 +743,29 @@ <h3>Einstellungen für "PV"</h3>
 											</div>
 										</div>
 									</div>
+									<div class="dc-charging-configured hide">
+										<div class="form-row vaRow mb-0">
+											<div class="col">
+												Minimale DC-Dauerleistung
+											</div>
+											<div class="col-md-8">
+												<div class="form-row form-group mb-1 vaRow">
+													<div class="col">
+														<input type="range"
+															class="charge-point-pv-charge-dc-min-current form-control-range rangeInput"
+															id="minDcCurrentPvCpT"
+															data-transformation='{ "in": "(<v> * 3 * 230) / 1000", "out": "(<v> * 1000) / 230 / 3" }'
+															data-topic="openWB/set/vehicle/template/charge_template/<ct>/chargemode/pv_charging/dc_min_current"
+															min="0" max="300" step="1">
+													</div>
+													<label for="minDcCurrentPvCpT"
+														class="col-2 col-form-label valueLabel text-right" data-suffix="kW">
+														-- kW
+													</label>
+												</div>
+											</div>
+										</div>
+									</div>
 									<div class="form-row vaRow mb-0">
 										<div class="col">
 											Mindest-SoC
@@ -759,6 +805,29 @@ <h3>Einstellungen für "PV"</h3>
 											</div>
 										</div>
 									</div>
+									<div class="dc-charging-configured hide">
+										<div class="form-row vaRow mb-0">
+											<div class="col">
+												DC Mindest-SoC-Leistung
+											</div>
+											<div class="col-md-8">
+												<div class="form-row form-group mb-1 vaRow">
+													<div class="col">
+														<input type="range"
+															class="charge-point-pv-charge-dc-min-soc-current form-control-range rangeInput"
+															id="minSocDcCurrentPvCpT"
+															data-transformation='{ "in": "(<v> * 3 * 230) / 1000", "out": "(<v> * 1000) / 230 / 3" }'
+															data-topic="openWB/set/vehicle/template/charge_template/<ct>/chargemode/pv_charging/dc_min_soc_current"
+															min="4" max="300" step="1">
+													</div>
+													<label for="minSocDcCurrentPvCpT"
+														class="col-2 col-form-label valueLabel text-right" data-suffix="kW">
+														-- kW
+													</label>
+												</div>
+											</div>
+										</div>
+									</div>
 									<div class="form-row vaRow mb-0">
 										<div class="col">
 											SoC-Limit
diff --git a/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js b/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js
index 346b2229d4..3d31317d39 100644
--- a/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js
+++ b/packages/modules/web_themes/standard_legacy/web/processAllMqttMsg.js
@@ -55,14 +55,20 @@ function createChargePoint(hierarchy) {
 				clonedElement.find('.card-body').attr('id', 'collapseChargepoint' + chargePointIndex).removeClass('show');
 				clonedElement.find('label[for=minCurrentPvCpT]').attr('for', 'minCurrentPvCp' + chargePointIndex);
 				clonedElement.find('#minCurrentPvCpT').attr('id', 'minCurrentPvCp' + chargePointIndex);
+				clonedElement.find('label[for=minDcCurrentPvCpT]').attr('for', 'minDcCurrentPvCp' + chargePointIndex);
+				clonedElement.find('#minDcCurrentPvCpT').attr('id', 'minDcCurrentPvCp' + chargePointIndex);
 				clonedElement.find('label[for=minSocPvCpT]').attr('for', 'minSocPvCp' + chargePointIndex);
 				clonedElement.find('#minSocPvCpT').attr('id', 'minSocPvCp' + chargePointIndex);
 				clonedElement.find('label[for=maxSocPvCpT]').attr('for', 'maxSocPvCp' + chargePointIndex);
 				clonedElement.find('#maxSocPvCpT').attr('id', 'maxSocPvCp' + chargePointIndex);
 				clonedElement.find('label[for=minSocCurrentPvCpT]').attr('for', 'minSocCurrentPvCp' + chargePointIndex);
 				clonedElement.find('#minSocCurrentPvCpT').attr('id', 'minSocCurrentPvCp' + chargePointIndex);
+				clonedElement.find('label[for=minSocDcCurrentPvCpT]').attr('for', 'minSocDcCurrentPvCp' + chargePointIndex);
+				clonedElement.find('#minSocDcCurrentPvCpT').attr('id', 'minSocDcCurrentPvCp' + chargePointIndex);
 				clonedElement.find('label[for=currentInstantChargeCpT]').attr('for', 'currentInstantChargeCp' + chargePointIndex);
 				clonedElement.find('#currentInstantChargeCpT').attr('id', 'currentInstantChargeCp' + chargePointIndex);
+				clonedElement.find('label[for=dcCurrentInstantChargeCpT]').attr('for', 'dcCurrentInstantChargeCpT' + chargePointIndex);
+				clonedElement.find('#dcCurrentInstantChargeCpT').attr('id', 'dcCurrentInstantChargeCpT' + chargePointIndex);
 				clonedElement.find('label[for=limitInstantChargeCpT]').attr('for', 'limitInstantChargeCp' + chargePointIndex);
 				clonedElement.find('#limitInstantChargeCpT').attr('id', 'limitInstantChargeCp' + chargePointIndex);
 				clonedElement.find('label[for=soclimitCpT]').attr('for', 'soclimitCp' + chargePointIndex);
@@ -115,6 +121,9 @@ function refreshChargeTemplate(templateIndex) {
 				// chargemode.instant_charging.current
 				element = parent.find('.charge-point-instant-charge-current');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.instant_charging.current);
+				// chargemode.instant_charging.dc_current
+				element = parent.find('.charge-point-instant-charge-dc-current');
+				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.instant_charging.dc_current);
 				// chargemode.instant_charging.limit.selected
 				element = parent.find('.charge-point-instant-charge-limit-selected');
 				setToggleBtnGroup(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.instant_charging.limit.selected);
@@ -145,6 +154,9 @@ function refreshChargeTemplate(templateIndex) {
 				// chargemode.pv_charging.min_current
 				element = parent.find('.charge-point-pv-charge-min-current');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.min_current);
+				// chargemode.pv_charging.dc_min_current
+				element = parent.find('.charge-point-pv-charge-dc-min-current');
+				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.dc_min_current);
 				// chargemode.pv_charging.min_soc
 				element = parent.find('.charge-point-pv-charge-min-soc');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.min_soc);
@@ -154,6 +166,9 @@ function refreshChargeTemplate(templateIndex) {
 				// chargemode.pv_charging.min_soc_current
 				element = parent.find('.charge-point-pv-charge-min-soc-current');
 				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.min_soc_current);
+				// chargemode.pv_charging.dc_min_soc_current
+				element = parent.find('.charge-point-pv-charge-dc-min-soc-current');
+				setInputValue(element.attr('id'), chargeModeTemplate[templateIndex].chargemode.pv_charging.dc_min_soc_current);
 				// chargemode.pv_charging.feed_in_limit
 				var element = parent.find('.charge-point-pv-charge-feed-in-limit'); // now get parents respective child element
 				if (chargeModeTemplate[templateIndex].chargemode.pv_charging.feed_in_limit == true) {
@@ -380,6 +395,7 @@ function handleMessage(mqttTopic, mqttPayload) {
 	else if (mqttTopic.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)) { processPvConfigMessages(mqttTopic, mqttPayload); }
 	else if (mqttTopic.match(/^openwb\/graph\//i)) { processGraphMessages(mqttTopic, mqttPayload); }
 	else if (mqttTopic.match(/^openwb\/optional\/et\//i)) { processETProviderMessages(mqttTopic, mqttPayload); }
+	else if (mqttTopic.match(/^openwb\/optional\//i)) { processOptionalMessages(mqttTopic, mqttPayload); }
 	else if (mqttTopic.match(/^openwb\/LegacySmartHome\//i)) { processSmartHomeDeviceMessages(mqttTopic, mqttPayload); }
 } // end handleMessage
 
@@ -1071,6 +1087,17 @@ function processETProviderMessages(mqttTopic, mqttPayload) {
 	}
 }
 
+function processOptionalMessages(mqttTopic, mqttPayload) {
+	if (mqttTopic == 'openWB/optional/dc_charging') {
+		data = JSON.parse(mqttPayload);
+		if (data == true) {
+			$('.dc-charging-configured').removeClass('hide');
+		} else {
+			$('.dc-charging-configured').addClass('hide');
+		}
+	}
+}
+
 function processSmartHomeDeviceMessages(mqttTopic, mqttPayload) {
 	processPreloader(mqttTopic);
 	var deviceIndex = getIndex(mqttTopic);  // extract number between two / /
diff --git a/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js b/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js
index e4f30f6cdb..7853d831e3 100644
--- a/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js
+++ b/packages/modules/web_themes/standard_legacy/web/setupMqttServices.js
@@ -77,6 +77,7 @@ var topicsToSubscribe = [
 	["openWB/optional/et/active", 1], // et provider is configured
 	["openWB/optional/et/provider", 1], // et provider information
 	["openWB/optional/et/get/prices", 1], // current price list
+	["openWB/optional/dc_charging", 1], // dc charging is configured
 
 	// graph topics
 	["openWB/graph/config/duration", 1], // maximum duration to display in landing page

From e4dd143a2266814d11b002295c10b32e40ace3c9 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 4 Sep 2024 10:39:34 +0200
Subject: [PATCH 019/205] fix consider less charging (#1866)

* fix consider less charging

* fix test
---
 packages/control/algorithm/common.py      | 2 +-
 packages/control/algorithm/common_test.py | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py
index 72556dcc73..255a051975 100644
--- a/packages/control/algorithm/common.py
+++ b/packages/control/algorithm/common.py
@@ -164,7 +164,7 @@ def update_raw_data(preferenced_chargepoints: List[Chargepoint],
 
 
 def consider_less_charging_chargepoint_in_loadmanagement(cp: Chargepoint, set_current: float) -> bool:
-    if (data.data.counter_all_data.data.config.consider_less_charging and
+    if (data.data.counter_all_data.data.config.consider_less_charging is False and
         ((set_current -
           cp.data.set.charging_ev_data.ev_template.data.nominal_difference) > max(cp.data.get.currents) and
          cp.data.control_parameter.timestamp_charge_start is not None and
diff --git a/packages/control/algorithm/common_test.py b/packages/control/algorithm/common_test.py
index 21c23c8b88..f422613edd 100644
--- a/packages/control/algorithm/common_test.py
+++ b/packages/control/algorithm/common_test.py
@@ -153,9 +153,9 @@ def setup_cp(num: int, required_currents) -> Chargepoint:
 @pytest.mark.parametrize(
     "consider_less_charging, get_currents, expected_considered",
     [
-        pytest.param(True, [6]*3, 6, id="consider_less_charging active, charging less"),
-        pytest.param(True, [10]*3, 10, id="consider_less_charging active, charging with set current"),
-        pytest.param(False, [0]*3, 10, id="consider_less_charging inactive"),
+        pytest.param(False, [6]*3, 6, id="not consider_less_charging, charging less"),
+        pytest.param(False, [10]*3, 10, id="not consider_less_charging, charging with set current"),
+        pytest.param(True, [0]*3, 10, id="consider_less_charging"),
     ])
 def test_consider_less_charging_chargepoint_in_loadmanagement(consider_less_charging: bool,
                                                               get_currents: List[float],

From 1a5977b67a5343c0d7e8ea8355c7d453b88b2278 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 4 Sep 2024 11:27:48 +0200
Subject: [PATCH 020/205] Bump aiohttp from 3.9.4 to 3.10.2 (#1852)

Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.9.4 to 3.10.2.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.9.4...v3.10.2)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 requirements.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements.txt b/requirements.txt
index f73b9e6592..e6a804f8e2 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,7 +5,7 @@ pymodbus==2.5.2
 pytest==6.2.5
 requests_mock==1.9.3
 lxml==4.9.1
-aiohttp==3.9.4
+aiohttp==3.10.2
 schedule==1.1.0
 PyJWT==2.6.0
 ipparser==0.3.8

From 873021ab624d8ed6770f8de8d77a1bec7153d459 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 4 Sep 2024 11:57:38 +0200
Subject: [PATCH 021/205] rename Sdm630 to Sdm630_72 (#1835)

* rename Sdm630 to Sdm630_72

* naming soc for vehicle

* feed in limit in message

* unneeded log message removed
---
 packages/control/chargepoint/chargepoint.py      |  4 ----
 packages/control/counter.py                      |  2 ++
 packages/modules/common/hardware_check_test.py   |  8 ++++----
 packages/modules/common/sdm.py                   |  2 +-
 packages/modules/devices/openwb_flex/bat.py      |  4 ++--
 packages/modules/devices/openwb_flex/versions.py | 16 ++++++++--------
 .../internal_chargepoint_handler/clients.py      |  6 +++---
 .../web_themes/standard_legacy/web/index.html    |  8 ++++----
 packages/smarthome/smartmeas.py                  |  2 +-
 9 files changed, 25 insertions(+), 27 deletions(-)

diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index ed3f65f7a5..0feffe5e6a 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -502,10 +502,6 @@ def initiate_phase_switch(self):
                         # Wenn keine Phasenumschaltung durchgeführt wird, Status auf CHARGING_ALLOWED setzen, sonst
                         # bleibt PHASE_SWITCH_DELAY_EXPIRED stehen.
                         self.data.control_parameter.state = ChargepointState.CHARGING_ALLOWED
-                else:
-                    log.error(
-                        "Phasenumschaltung an Ladepunkt" + str(self.num) +
-                        " nicht möglich, da der Ladepunkt keine Phasenumschaltung unterstützt.")
         except Exception:
             log.exception("Fehler in der Ladepunkt-Klasse von "+str(self.num))
 
diff --git a/packages/control/counter.py b/packages/control/counter.py
index 81da8a6dc3..0cd88e3358 100644
--- a/packages/control/counter.py
+++ b/packages/control/counter.py
@@ -289,6 +289,8 @@ def switch_on_threshold_reached(self, chargepoint: Chargepoint) -> None:
                     self.data.set.reserved_surplus += power_to_reserve
                     message = self.SWITCH_ON_WAITING.format(timecheck.convert_timestamp_delta_to_time_string(
                         timestamp_switch_on_off, pv_config.switch_on_delay))
+                    if feed_in_limit:
+                        message += "Die Einspeisegrenze wird berücksichtigt."
                     control_parameter.state = ChargepointState.SWITCH_ON_DELAY
                 else:
                     # Einschaltschwelle nicht erreicht
diff --git a/packages/modules/common/hardware_check_test.py b/packages/modules/common/hardware_check_test.py
index 27bc555174..76a9968c30 100644
--- a/packages/modules/common/hardware_check_test.py
+++ b/packages/modules/common/hardware_check_test.py
@@ -47,9 +47,9 @@ def test_hardware_check_fails(evse_side_effect,
     mock_evse_facotry = Mock(spec=Evse, return_value=mock_evse_client)
     monkeypatch.setattr(ClientHandler, "_evse_factory", mock_evse_facotry)
 
-    mock_meter_client = Mock(spec=sdm.Sdm630, get_voltages=Mock(
+    mock_meter_client = Mock(spec=sdm.Sdm630_72, get_voltages=Mock(
         side_effect=meter_side_effect, return_value=meter_return_value))
-    mock_find_meter_client = Mock(spec=sdm.Sdm630, return_value=mock_meter_client)
+    mock_find_meter_client = Mock(spec=sdm.Sdm630_72, return_value=mock_meter_client)
     monkeypatch.setattr(ClientHandler, "find_meter_client", mock_find_meter_client)
 
     handle_exception_mock = Mock(side_effect=handle_exception_side_effect, return_value=handle_exception_return_value)
@@ -69,8 +69,8 @@ def test_hardware_check_succeeds(monkeypatch):
     mock_evse_facotry = Mock(spec=Evse, return_value=mock_evse_client)
     monkeypatch.setattr(ClientHandler, "_evse_factory", mock_evse_facotry)
 
-    mock_meter_client = Mock(spec=sdm.Sdm630, get_voltages=Mock(return_value=[230]*3))
-    mock_find_meter_client = Mock(spec=sdm.Sdm630, return_value=mock_meter_client)
+    mock_meter_client = Mock(spec=sdm.Sdm630_72, get_voltages=Mock(return_value=[230]*3))
+    mock_find_meter_client = Mock(spec=sdm.Sdm630_72, return_value=mock_meter_client)
     monkeypatch.setattr(ClientHandler, "find_meter_client", mock_find_meter_client)
 
     mock_modbus_client = MagicMock(spec=ModbusClient)
diff --git a/packages/modules/common/sdm.py b/packages/modules/common/sdm.py
index a37a607a93..5f3ffd053e 100644
--- a/packages/modules/common/sdm.py
+++ b/packages/modules/common/sdm.py
@@ -27,7 +27,7 @@ def get_serial_number(self) -> str:
         return str(self.client.read_holding_registers(0xFC00, ModbusDataType.UINT_32, unit=self.id))
 
 
-class Sdm630(Sdm):
+class Sdm630_72(Sdm):
     def __init__(self, modbus_id: int, client: modbus.ModbusTcpClient_) -> None:
         super().__init__(modbus_id, client)
 
diff --git a/packages/modules/devices/openwb_flex/bat.py b/packages/modules/devices/openwb_flex/bat.py
index b362006f2a..ae01821059 100644
--- a/packages/modules/devices/openwb_flex/bat.py
+++ b/packages/modules/devices/openwb_flex/bat.py
@@ -7,7 +7,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.lovato import Lovato
-from modules.common.sdm import Sdm630
+from modules.common.sdm import Sdm630_72
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
 from modules.devices.openwb_flex.config import BatKitFlexSetup
@@ -34,7 +34,7 @@ def update(self):
         # TCP-Verbindung schließen möglichst bevor etwas anderes gemacht wird, um im Fehlerfall zu verhindern,
         # dass offene Verbindungen den Modbus-Adapter blockieren.
         with self.__tcp_client:
-            if isinstance(self.__client, Sdm630):
+            if isinstance(self.__client, Sdm630_72):
                 _, power = self.__client.get_power()
                 power = power * -1
             else:
diff --git a/packages/modules/devices/openwb_flex/versions.py b/packages/modules/devices/openwb_flex/versions.py
index 3e532b7657..73b5356244 100644
--- a/packages/modules/devices/openwb_flex/versions.py
+++ b/packages/modules/devices/openwb_flex/versions.py
@@ -6,13 +6,13 @@
 
 
 def kit_counter_version_factory(
-        version: int) -> Type[Union[mpm3pm.Mpm3pm, lovato.Lovato, sdm.Sdm630, b23.B23]]:
+        version: int) -> Type[Union[mpm3pm.Mpm3pm, lovato.Lovato, sdm.Sdm630_72, b23.B23]]:
     if version == 0:
         return mpm3pm.Mpm3pm
     elif version == 1:
         return lovato.Lovato
     elif version == 2:
-        return sdm.Sdm630
+        return sdm.Sdm630_72
     elif version == 3:
         return b23.B23
     else:
@@ -20,35 +20,35 @@ def kit_counter_version_factory(
 
 
 def kit_inverter_version_factory(
-        version: int) -> Type[Union[mpm3pm.Mpm3pm, lovato.Lovato, sdm.Sdm630, sdm.Sdm120]]:
+        version: int) -> Type[Union[mpm3pm.Mpm3pm, lovato.Lovato, sdm.Sdm630_72, sdm.Sdm120]]:
     if version == 0:
         return mpm3pm.Mpm3pm
     elif version == 1:
         return lovato.Lovato
     elif version == 2:
-        return sdm.Sdm630
+        return sdm.Sdm630_72
     elif version == 3:
         return sdm.Sdm120
     else:
         raise ValueError("Version "+str(version) + " unbekannt.")
 
 
-def kit_bat_version_factory(version: int) -> Type[Union[mpm3pm.Mpm3pm, sdm.Sdm630, sdm.Sdm120]]:
+def kit_bat_version_factory(version: int) -> Type[Union[mpm3pm.Mpm3pm, sdm.Sdm630_72, sdm.Sdm120]]:
     if version == 0:
         return mpm3pm.Mpm3pm
     elif version == 1:
         return sdm.Sdm120
     elif version == 2:
-        return sdm.Sdm630
+        return sdm.Sdm630_72
     else:
         raise ValueError("Version "+str(version) + " unbekannt.")
 
 
-def consumption_counter_factory(type: str) -> Type[Union[sdm.Sdm120, sdm.Sdm630, b23.B23]]:
+def consumption_counter_factory(type: str) -> Type[Union[sdm.Sdm120, sdm.Sdm630_72, b23.B23]]:
     if type == "sdm120":
         return sdm.Sdm120
     elif type == "sdm630":
-        return sdm.Sdm630
+        return sdm.Sdm630_72
     elif type == "b23":
         return b23.B23
     else:
diff --git a/packages/modules/internal_chargepoint_handler/clients.py b/packages/modules/internal_chargepoint_handler/clients.py
index 7f0f10c029..011963c772 100644
--- a/packages/modules/internal_chargepoint_handler/clients.py
+++ b/packages/modules/internal_chargepoint_handler/clients.py
@@ -15,13 +15,13 @@
 
 BUS_SOURCES = ("/dev/ttyUSB0", "/dev/ttyUSB1", "/dev/ttyACM0", "/dev/serial0")
 
-METERS = Union[mpm3pm.Mpm3pm, sdm.Sdm630, b23.B23]
+METERS = Union[mpm3pm.Mpm3pm, sdm.Sdm630_72, b23.B23]
 meter_config = NamedTuple("meter_config", [('type', METERS), ('modbus_id', int)])
 CP0_METERS = [meter_config(mpm3pm.Mpm3pm, modbus_id=5),
-              meter_config(sdm.Sdm630, modbus_id=105),
+              meter_config(sdm.Sdm630_72, modbus_id=105),
               meter_config(b23.B23, modbus_id=201)]
 
-CP1_METERS = [meter_config(mpm3pm.Mpm3pm, modbus_id=6), meter_config(sdm.Sdm630, modbus_id=106)]
+CP1_METERS = [meter_config(mpm3pm.Mpm3pm, modbus_id=6), meter_config(sdm.Sdm630_72, modbus_id=106)]
 
 EVSE_ID_CP0 = [1]
 EVSE_ID_TWO_BUSSES_CP1 = [1, 2]
diff --git a/packages/modules/web_themes/standard_legacy/web/index.html b/packages/modules/web_themes/standard_legacy/web/index.html
index e82a11b1ba..670a7f24cc 100644
--- a/packages/modules/web_themes/standard_legacy/web/index.html
+++ b/packages/modules/web_themes/standard_legacy/web/index.html
@@ -683,7 +683,7 @@ <h3>Einstellungen für "Sofortladen"</h3>
 										<div
 											class="form-row form-group mb-1 vaRow regularTextSize chargemode-limit-option chargemode-limit-option-soc">
 											<div class="col">
-												Maximaler SoC
+												SoC-Limit für das Fahrzeug
 											</div>
 											<div class="col-md-8">
 												<div class="form-row form-group mb-1 vaRow">
@@ -702,7 +702,7 @@ <h3>Einstellungen für "Sofortladen"</h3>
 										<div
 											class="form-row form-group mb-1 vaRow regularTextSize chargemode-limit-option chargemode-limit-option-amount">
 											<div class="col">
-												Zu ladende Energie
+												Energie-Limit
 											</div>
 											<div class="col-md-8">
 												<div class="form-row form-group mb-1 vaRow">
@@ -768,7 +768,7 @@ <h3>Einstellungen für "PV"</h3>
 									</div>
 									<div class="form-row vaRow mb-0">
 										<div class="col">
-											Mindest-SoC
+											Mindest-SoC für das Fahrzeug
 										</div>
 										<div class="col-md-8">
 											<div class="form-row form-group mb-1 vaRow">
@@ -830,7 +830,7 @@ <h3>Einstellungen für "PV"</h3>
 									</div>
 									<div class="form-row vaRow mb-0">
 										<div class="col">
-											SoC-Limit
+											SoC-Limit für das Fahrzeug
 										</div>
 										<div class="col-md-8">
 											<div class="form-row form-group mb-1 vaRow">
diff --git a/packages/smarthome/smartmeas.py b/packages/smarthome/smartmeas.py
index b07952ef4f..3c49bf9255 100644
--- a/packages/smarthome/smartmeas.py
+++ b/packages/smarthome/smartmeas.py
@@ -512,7 +512,7 @@ def sepwattread(self) -> Tuple[int, int]:
         try:
             # neu aus openwb 2.0
             with modbus.ModbusTcpClient_(self._device_measureip, self._device_measureportsdm) as tcp_client:
-                sdm630 = sdm.Sdm630(self._device_measureid, tcp_client)
+                sdm630 = sdm.Sdm630_72(self._device_measureid, tcp_client)
                 # log.warning(" sdm630 id %s " % ( str(id(sdm630))))
                 _, newwatt = sdm630.get_power()
                 self.newwatt = int(newwatt)

From 582cad7b9d16490a1b3497ed1bd9f8a01d143948 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 4 Sep 2024 12:24:26 +0200
Subject: [PATCH 022/205] error timestamp for pro, external, satellit and
 smartwb (#1817)

* error timestamp for pro, external, satelllit and smartwb

* fix rebase

* fix pytest
---
 .../control/chargepoint/chargepoint_data.py   |  1 +
 packages/helpermodules/setdata.py             |  5 ++--
 packages/helpermodules/subdata.py             |  6 +++++
 packages/helpermodules/utils/error_counter.py | 26 ++++++++++++------
 .../external_openwb/chargepoint_module.py     | 20 +++++++-------
 .../openwb_dc_adapter/chargepoint_module.py   | 16 +++++------
 .../openwb_pro/chargepoint_module.py          | 27 ++++++++++++-------
 .../chargepoint_module.py                     | 17 ++++++------
 .../smartwb/chargepoint_module.py             | 18 ++++++-------
 9 files changed, 81 insertions(+), 55 deletions(-)

diff --git a/packages/control/chargepoint/chargepoint_data.py b/packages/control/chargepoint/chargepoint_data.py
index 15c9876330..489088db77 100644
--- a/packages/control/chargepoint/chargepoint_data.py
+++ b/packages/control/chargepoint/chargepoint_data.py
@@ -97,6 +97,7 @@ class Get:
     currents: List[float] = field(default_factory=currents_list_factory)
     daily_imported: float = 0
     daily_exported: float = 0
+    error_timestamp: int = 0
     evse_current: Optional[float] = None
     exported: float = 0
     fault_str: str = NO_ERROR
diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py
index 27431294df..5bb7e7e897 100644
--- a/packages/helpermodules/setdata.py
+++ b/packages/helpermodules/setdata.py
@@ -618,8 +618,6 @@ def process_chargepoint_get_topics(self, msg):
             self._validate_value(msg, int, [(0, 2)])
         elif "/get/evse_current" in msg.topic:
             self._validate_value(msg, float, [(0, 0), (6, 32), (600, 3200)])
-        elif "/get/rfid_timestamp" in msg.topic:
-            self._validate_value(msg, float)
         elif ("/get/fault_str" in msg.topic or
                 "/get/state_str" in msg.topic or
                 "/get/heartbeat" in msg.topic or
@@ -627,6 +625,9 @@ def process_chargepoint_get_topics(self, msg):
                 "/get/vehicle_id" in msg.topic or
                 "/get/serial_number" in msg.topic):
             self._validate_value(msg, str)
+        elif ("/get/error_timestamp" in msg.topic or
+                "/get/rfid_timestamp" in msg.topic):
+            self._validate_value(msg, float)
         elif ("/get/soc" in msg.topic):
             self._validate_value(msg, float, [(0, 100)])
         elif "/get/rfid_timestamp" in msg.topic:
diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py
index 728e2e3cab..fb832842a0 100644
--- a/packages/helpermodules/subdata.py
+++ b/packages/helpermodules/subdata.py
@@ -432,6 +432,12 @@ def process_chargepoint_topic(self, var: Dict[str, chargepoint.Chargepoint], msg
                                 Pub().pub(f'openWB/set/vehicle/{var["cp"+index].chargepoint.data.set.charging_ev}'
                                           '/get/force_soc_update', True)
                             self.set_json_payload_class(var["cp"+index].chargepoint.data.get, msg)
+                        elif re.search("/chargepoint/[0-9]+/get/error_timestamp$", msg.topic) is not None:
+                            var["cp" +
+                                index].chargepoint.chargepoint_module.client_error_context.error_timestamp = (
+                                decode_payload(msg.payload)
+                            )
+                            self.set_json_payload_class(var["cp"+index].chargepoint.data.get, msg)
                         elif re.search("/chargepoint/[0-9]+/get/simulation$", msg.topic) is not None:
                             var["cp"+index].chargepoint.chargepoint_module.sim_counter.data = dataclass_from_dict(
                                 SimCounterState,
diff --git a/packages/helpermodules/utils/error_counter.py b/packages/helpermodules/utils/error_counter.py
index c72940258f..e6d1c0c423 100644
--- a/packages/helpermodules/utils/error_counter.py
+++ b/packages/helpermodules/utils/error_counter.py
@@ -1,14 +1,21 @@
 import logging
 
+from helpermodules import timecheck
+from helpermodules.pub import Pub
+
 
 log = logging.getLogger(__name__)
 
+CP_ERROR = ("Anhaltender Fehler beim Auslesen des Ladepunkts. Sollstromstärke, Lade- und Stecker-Status wird "
+            "zurückgesetzt.")
+
 
-class ErrorCounterContext:
-    def __init__(self, exceeded_msg: str, max_errors: int = 2, hide_exception: bool = False):
-        self.max_errors = max_errors
+class ErrorTimerContext:
+    def __init__(self, topic: str, exceeded_msg: str, timeout: int = 60, hide_exception: bool = False):
+        self.topic = topic
+        self.timeout = timeout
         self.hide_exception = hide_exception
-        self.__error_counter = 0
+        self.error_timestamp = None
         self.__exceeded_msg = exceeded_msg
 
     def __enter__(self):
@@ -16,18 +23,21 @@ def __enter__(self):
 
     def __exit__(self, exception_type, exception, exception_traceback) -> bool:
         if exception:
-            self.__error_counter += 1
+            if self.error_timestamp is None:
+                self.error_timestamp = timecheck.create_timestamp()
+                Pub().pub(self.topic, self.error_timestamp)
             log.error(exception)
-            if self.hide_exception is False or self.__error_counter >= self.max_errors:
+            if self.hide_exception is False or timecheck.check_timestamp(self.error_timestamp, self.timeout) is False:
                 raise exception
         return True
 
     def error_counter_exceeded(self) -> bool:
-        if self.__error_counter > self.max_errors:
+        if self.error_timestamp and timecheck.check_timestamp(self.error_timestamp, self.timeout):
             log.error(self.__exceeded_msg)
             return True
         else:
             return False
 
     def reset_error_counter(self):
-        self.__error_counter = 0
+        Pub().pub(self.topic, self.error_timestamp)
+        self.error_timestamp = None
diff --git a/packages/modules/chargepoints/external_openwb/chargepoint_module.py b/packages/modules/chargepoints/external_openwb/chargepoint_module.py
index 304171a0b7..f9b29f1bc1 100644
--- a/packages/modules/chargepoints/external_openwb/chargepoint_module.py
+++ b/packages/modules/chargepoints/external_openwb/chargepoint_module.py
@@ -2,7 +2,7 @@
 
 from control import data
 from helpermodules import pub, timecheck
-from helpermodules.utils.error_counter import ErrorCounterContext
+from helpermodules.utils.error_counter import CP_ERROR, ErrorTimerContext
 from modules.chargepoints.external_openwb.config import OpenWBSeries
 from modules.common.abstract_chargepoint import AbstractChargepoint
 from modules.common.abstract_device import DeviceDescriptor
@@ -16,14 +16,14 @@ def __init__(self, config: OpenWBSeries) -> None:
         self.fault_state = FaultState(ComponentInfo(
             self.config.id,
             "Ladepunkt", "chargepoint"))
-        self.__client_error_context = ErrorCounterContext(
-            "Anhaltender Fehler beim Auslesen des Ladepunkts. Soll-Stromstärke wird zurückgesetzt.")
+        self.client_error_context = ErrorTimerContext(
+            f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True)
 
     def set_current(self, current: float) -> None:
-        if self.__client_error_context.error_counter_exceeded():
+        if self.client_error_context.error_counter_exceeded():
             current = 0
         with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 if self.config.configuration.duo_num == 0:
                     pub.pub_single("openWB/set/internal_chargepoint/0/data/set_current", current,
                                    hostname=self.config.configuration.ip_address)
@@ -37,7 +37,7 @@ def set_current(self, current: float) -> None:
 
     def get_values(self) -> None:
         with SingleComponentUpdateContext(self.fault_state, update_always=False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 num = self.config.id
                 if ip_address == "localhost":
@@ -56,11 +56,11 @@ def get_values(self) -> None:
                 else:
                     pub.pub_single("openWB/set/internal_chargepoint/0/data/parent_cp", str(num), hostname=ip_address)
                     pub.pub_single("openWB/set/isss/parentCPlp1", str(num), hostname=ip_address)
-                self.__client_error_context.reset_error_counter()
+                self.client_error_context.reset_error_counter()
 
     def switch_phases(self, phases_to_use: int, duration: int) -> None:
         with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 pub.pub_single(
                     f"openWB/set/internal_chargepoint/{self.config.configuration.duo_num}/data/phases_to_use",
                     phases_to_use,
@@ -75,7 +75,7 @@ def switch_phases(self, phases_to_use: int, duration: int) -> None:
 
     def interrupt_cp(self, duration: int) -> None:
         with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 if (self.config.configuration.duo_num == 1):
                     pub.pub_single("openWB/set/internal_chargepoint/1/data/cp_interruption_duration",
@@ -89,7 +89,7 @@ def interrupt_cp(self, duration: int) -> None:
 
     def clear_rfid(self) -> None:
         with SingleComponentUpdateContext(self.fault_state):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 pub.pub_single("openWB/set/isss/ClearRfid", 1, hostname=ip_address)
                 pub.pub_single("openWB/set/internal_chargepoint/last_tag", None, hostname=ip_address)
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
index 3dcc7f4181..006e7d984c 100644
--- a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
+++ b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
@@ -3,7 +3,7 @@
 import logging
 
 from helpermodules import hardware_configuration
-from helpermodules.utils.error_counter import ErrorCounterContext
+from helpermodules.utils.error_counter import CP_ERROR, ErrorTimerContext
 from modules.chargepoints.openwb_dc_adapter.config import OpenWBDcAdapter
 from modules.common.abstract_chargepoint import AbstractChargepoint
 from modules.common.abstract_device import DeviceDescriptor
@@ -41,24 +41,24 @@ def __init__(self, config: OpenWBDcAdapter) -> None:
             "Ladepunkt", "chargepoint"))
         self.sim_counter = SimCounterChargepoint(self.config.id)
         self.__session = req.get_http_session()
-        self.__client_error_context = ErrorCounterContext(
-            "Anhaltender Fehler beim Auslesen des Ladepunkts. Sollstromstärke wird zurückgesetzt.")
+        self.client_error_context = ErrorTimerContext(
+            f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True)
         if hardware_configuration.get_hardware_configuration_setting("openwb_dc_adapter") is False:
             raise Exception(
                 "DC-Laden muss durch den Support freigeschaltet werden. Bitte nehme Kontakt mit dem Support auf.")
         self.efficiency = None
 
         with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 self.__session.post(
                     'http://' + self.config.configuration.ip_address + '/connect.php',
                     data={'heartbeatenabled': '1'})
 
     def set_current(self, current: float) -> None:
-        if self.__client_error_context.error_counter_exceeded():
+        if self.client_error_context.error_counter_exceeded():
             current = 0
         with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 raw_current = self.subtract_conversion_loss_from_current(current)
                 raw_power = raw_current * 3 * 230
@@ -73,7 +73,7 @@ def add_conversion_loss_to_current(self, current: float) -> float:
 
     def get_values(self) -> None:
         with SingleComponentUpdateContext(self.fault_state):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 json_rsp = self.__session.get('http://'+ip_address+'/connect.php').json()
 
@@ -119,7 +119,7 @@ def get_values(self) -> None:
                         json_rsp["state"] == ChargingStatus.UNAVAILABLE_CONN_OBJ.value):
                     raise Exception(f"Ladepunkt nicht verfügbar. Status: {ChargingStatus(json_rsp['state'])}")
                 self.store.set(chargepoint_state)
-                self.__client_error_context.reset_error_counter()
+                self.client_error_context.reset_error_counter()
 
 
 chargepoint_descriptor = DeviceDescriptor(configuration_factory=OpenWBDcAdapter)
diff --git a/packages/modules/chargepoints/openwb_pro/chargepoint_module.py b/packages/modules/chargepoints/openwb_pro/chargepoint_module.py
index 992199cc20..317c3a8515 100644
--- a/packages/modules/chargepoints/openwb_pro/chargepoint_module.py
+++ b/packages/modules/chargepoints/openwb_pro/chargepoint_module.py
@@ -2,7 +2,7 @@
 import logging
 import time
 
-from helpermodules.utils.error_counter import ErrorCounterContext
+from helpermodules.utils.error_counter import CP_ERROR, ErrorTimerContext
 from modules.chargepoints.openwb_pro.config import OpenWBPro
 from modules.common.abstract_chargepoint import AbstractChargepoint
 from modules.common.abstract_device import DeviceDescriptor
@@ -27,26 +27,27 @@ def __init__(self, config: OpenWBPro) -> None:
             self.config.id,
             "Ladepunkt", "chargepoint"))
         self.__session = req.get_http_session()
-        self.__client_error_context = ErrorCounterContext(
-            "Anhaltender Fehler beim Auslesen des Ladepunkts. Sollstromstärke wird zurückgesetzt.")
+        self.client_error_context = ErrorTimerContext(
+            f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True)
+        self.old_chargepoint_state = ChargepointState()
 
         with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 self.__session.post(
                     'http://' + self.config.configuration.ip_address + '/connect.php',
                     data={'heartbeatenabled': '1'})
 
     def set_current(self, current: float) -> None:
-        if self.__client_error_context.error_counter_exceeded():
+        if self.client_error_context.error_counter_exceeded():
             current = 0
         with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 self.__session.post('http://'+ip_address+'/connect.php', data={'ampere': current})
 
     def get_values(self) -> None:
         with SingleComponentUpdateContext(self.fault_state):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 json_rsp = self.__session.get('http://'+ip_address+'/connect.php').json()
 
@@ -82,7 +83,15 @@ def get_values(self) -> None:
 
                 self.validate_values(chargepoint_state)
                 self.store.set(chargepoint_state)
-                self.__client_error_context.reset_error_counter()
+                self.old_chargepoint_state = chargepoint_state
+                self.client_error_context.reset_error_counter()
+            if self.client_error_context.error_counter_exceeded():
+                chargepoint_state = ChargepointState()
+                chargepoint_state.plug_state = False
+                chargepoint_state.charge_state = False
+                chargepoint_state.imported = self.old_chargepoint_state.imported
+                chargepoint_state.exported = self.old_chargepoint_state.exported
+                self.store.set(chargepoint_state)
 
     def validate_values(self, chargepoint_state: ChargepointState) -> None:
         if chargepoint_state.charge_state is False and max(chargepoint_state.currents) > 1:
@@ -92,7 +101,7 @@ def validate_values(self, chargepoint_state: ChargepointState) -> None:
 
     def switch_phases(self, phases_to_use: int, duration: int) -> None:
         with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 response = self.__session.get('http://'+ip_address+'/connect.php')
                 if response.json()["phases_target"] != phases_to_use:
diff --git a/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py b/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py
index 768bc0a93f..ed60b443dc 100644
--- a/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py
+++ b/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py
@@ -3,7 +3,7 @@
 import time
 from typing import Optional
 
-from helpermodules.utils.error_counter import ErrorCounterContext
+from helpermodules.utils.error_counter import CP_ERROR, ErrorTimerContext
 from modules.chargepoints.openwb_series2_satellit.config import OpenWBseries2Satellit
 from modules.common import modbus
 from modules.common.abstract_chargepoint import AbstractChargepoint
@@ -34,9 +34,8 @@ def __init__(self, config: OpenWBseries2Satellit) -> None:
         with SingleComponentUpdateContext(self.fault_state):
             self.delay_second_cp(self.CP0_DELAY_STARTUP)
             self.store = get_chargepoint_value_store(self.config.id)
-            self.__client_error_context = ErrorCounterContext(
-                "Anhaltender Fehler beim Auslesen des Ladepunkts. Soll-Stromstärke wird zurückgesetzt.",
-                hide_exception=True)
+            self.client_error_context = ErrorTimerContext(
+                f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True)
             self._create_client()
             self._validate_version()
 
@@ -72,7 +71,7 @@ def _validate_version(self):
     def get_values(self) -> None:
         with SingleComponentUpdateContext(self.fault_state):
             if self.version is not None:
-                with self.__client_error_context:
+                with self.client_error_context:
                     try:
                         self.delay_second_cp(self.CP0_DELAY)
                         with self._client.client:
@@ -97,7 +96,7 @@ def get_values(self) -> None:
                                 serial_number=self._client.meter_client.get_serial_number()
                             )
                         self.store.set(chargepoint_state)
-                        self.__client_error_context.reset_error_counter()
+                        self.client_error_context.reset_error_counter()
                     except AttributeError:
                         self._create_client()
                         self._validate_version()
@@ -107,10 +106,10 @@ def get_values(self) -> None:
 
     def set_current(self, current: float) -> None:
         if self.version is not None:
-            if self.__client_error_context.error_counter_exceeded():
+            if self.client_error_context.error_counter_exceeded():
                 current = 0
             with SingleComponentUpdateContext(self.fault_state, update_always=False):
-                with self.__client_error_context:
+                with self.client_error_context:
                     try:
                         self.delay_second_cp(self.CP0_DELAY)
                         with self._client.client:
@@ -126,7 +125,7 @@ def set_current(self, current: float) -> None:
     def switch_phases(self, phases_to_use: int, duration: int) -> None:
         if self.version is not None:
             with SingleComponentUpdateContext(self.fault_state, update_always=False):
-                with self.__client_error_context:
+                with self.client_error_context:
                     try:
                         with self._client.client:
                             self._client.check_hardware(self.fault_state)
diff --git a/packages/modules/chargepoints/smartwb/chargepoint_module.py b/packages/modules/chargepoints/smartwb/chargepoint_module.py
index f3dcb335e2..25752b8ec3 100644
--- a/packages/modules/chargepoints/smartwb/chargepoint_module.py
+++ b/packages/modules/chargepoints/smartwb/chargepoint_module.py
@@ -1,6 +1,6 @@
 
 import time
-from helpermodules.utils.error_counter import ErrorCounterContext
+from helpermodules.utils.error_counter import CP_ERROR, ErrorTimerContext
 from modules.chargepoints.smartwb.config import SmartWB
 from modules.common.abstract_chargepoint import AbstractChargepoint
 from modules.common.abstract_device import DeviceDescriptor
@@ -18,16 +18,16 @@ def __init__(self, config: SmartWB) -> None:
         self.fault_state = FaultState(ComponentInfo(
             self.config.id,
             "Ladepunkt", "chargepoint"))
-        self.__client_error_context = ErrorCounterContext(
-            "Anhaltender Fehler beim Auslesen des Ladepunkts. Soll-Stromstärke wird zurückgesetzt.")
+        self.client_error_context = ErrorTimerContext(
+            f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True)
         self.phases_in_use = 1
         self.session = req.get_http_session()
 
     def set_current(self, current: float) -> None:
-        if self.__client_error_context.error_counter_exceeded():
+        if self.client_error_context.error_counter_exceeded():
             current = 0
         with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 timeout = self.config.configuration.timeout
                 # Stromvorgabe in Hundertstel Ampere
@@ -36,7 +36,7 @@ def set_current(self, current: float) -> None:
 
     def get_values(self) -> None:
         with SingleComponentUpdateContext(self.fault_state):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 timeout = self.config.configuration.timeout
                 response = self.session.get('http://'+ip_address+'/getParameters', timeout=timeout)
@@ -91,18 +91,18 @@ def get_values(self) -> None:
                 )
 
                 self.store.set(chargepoint_state)
-                self.__client_error_context.reset_error_counter()
+                self.client_error_context.reset_error_counter()
 
     def clear_rfid(self) -> None:
         with SingleComponentUpdateContext(self.fault_state):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 timeout = self.config.configuration.timeout
                 req.get_http_session().get('http://'+ip_address+'/clearRfid', timeout=(timeout, None))
 
     def interrupt_cp(self, duration: int) -> None:
         with SingleComponentUpdateContext(self.fault_state, False):
-            with self.__client_error_context:
+            with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 timeout = self.config.configuration.timeout
                 req.get_http_session().get(

From b12314780458e82e6239663c29ebf34bbeda078f Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Wed, 4 Sep 2024 12:31:59 +0200
Subject: [PATCH 023/205] Spelling fixes (#1801)

* et_provider_available

* fix ev.py

* typos in strings

* fix component_initializer

* fix local variable names

* markdown fixes

* fix data types
---
 SECURITY.md                                   |  2 +-
 packages/control/algorithm/algorithm.py       |  4 +--
 packages/control/algorithm/common.py          |  4 +--
 .../algorithm/filter_chargepoints_test.py     |  2 +-
 .../integration_test/pv_charging_test.py      |  4 +--
 .../control/algorithm/surplus_controlled.py   |  4 +--
 .../algorithm/surplus_controlled_test.py      |  8 +++---
 packages/control/bat_all.py                   |  2 +-
 packages/control/chargepoint/chargepoint.py   |  4 +--
 .../control/chargepoint/chargepoint_data.py   |  2 +-
 packages/control/ev.py                        | 28 +++++++++----------
 packages/control/ev_charge_template_test.py   |  6 ++--
 packages/control/optional.py                  |  2 +-
 packages/control/process.py                   |  2 +-
 packages/helpermodules/create_debug.py        |  2 +-
 packages/helpermodules/subdata.py             |  2 +-
 packages/helpermodules/utils/error_counter.py |  2 +-
 packages/main.py                              |  2 +-
 .../modules/backup_clouds/nfs/backup_cloud.py |  2 +-
 .../modules/backup_clouds/onedrive/api.py     |  6 ++--
 .../backup_clouds/onedrive/backup_cloud.py    |  6 ++--
 .../common/configurable_backup_cloud.py       |  4 +--
 .../modules/common/configurable_device.py     |  2 +-
 .../configurable_ripple_control_receiver.py   |  4 +--
 .../modules/common/configurable_tariff.py     |  4 +--
 .../common/configurable_vehicle_test.py       |  6 ++--
 packages/modules/common/hardware_check.py     |  6 ++--
 .../modules/common/hardware_check_test.py     | 10 +++----
 .../modules/common/simcount/_simcounter.py    |  2 +-
 .../electricity_tariffs/tibber/tariff.py      | 12 ++++----
 30 files changed, 73 insertions(+), 73 deletions(-)

diff --git a/SECURITY.md b/SECURITY.md
index b024ec8516..9b2b7d584e 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -13,4 +13,4 @@ The following versions are maintained and supported:
 ## Reporting a Vulnerability
 
 Please use the contact form at openwb.de for reporting a found vulnerability:
-https://openwb.de/main/?page_id=484
+<https://openwb.de/main/?page_id=484>
diff --git a/packages/control/algorithm/algorithm.py b/packages/control/algorithm/algorithm.py
index d795583339..6c4af1008f 100644
--- a/packages/control/algorithm/algorithm.py
+++ b/packages/control/algorithm/algorithm.py
@@ -29,7 +29,7 @@ def calc_current(self) -> None:
             common.reset_current()
             log.info("**Mindestrom setzen**")
             self.min_current.set_min_current()
-            log.info("**Sollstrom setzen**")
+            log.info("**Soll-Strom setzen**")
             common.reset_current_to_target_current()
             self.additional_current.set_additional_current()
             counter.limit_raw_power_left_to_surplus(self.evu_counter.calc_raw_surplus())
@@ -48,7 +48,7 @@ def calc_current(self) -> None:
 
     def _check_auto_phase_switch_delay(self) -> None:
         """ geht alle LP durch und prüft, ob eine Ladung aktiv ist, ob automatische Phasenumschaltung
-        möglich ist und ob ob ein Timer gestartet oder geChargemode.STOPpt werden muss oder ob
+        möglich ist und ob ob ein Timer gestartet oder gestoppt werden muss oder ob
         ein Timer abgelaufen ist.
         """
         for cp in data.data.cp_data.values():
diff --git a/packages/control/algorithm/common.py b/packages/control/algorithm/common.py
index 255a051975..d4f72bd251 100644
--- a/packages/control/algorithm/common.py
+++ b/packages/control/algorithm/common.py
@@ -108,7 +108,7 @@ def get_current_to_set(set_current: float, diff: float, prev_current: float) ->
     new_current = prev_current + diff
     if set_current is not None:
         if new_current > set_current:
-            log.debug("Neuer Sollstrom darf nicht höher als bisher gesetzter sein: "
+            log.debug("Neuer Soll-Strom darf nicht höher als bisher gesetzter sein: "
                       f"bisher {set_current}A, neuer {new_current}")
             return set_current
     return new_current
@@ -135,7 +135,7 @@ def available_current_for_cp(chargepoint: Chargepoint,
 def update_raw_data(preferenced_chargepoints: List[Chargepoint],
                     diff_to_zero: bool = False,
                     surplus: bool = False) -> None:
-    """alle CP, die schon einen Sollstrom haben, wieder rausrechnen, da dieser neu gesetzt wird
+    """alle CP, die schon einen Soll-Strom haben, wieder herausrechnen, da dieser neu gesetzt wird
         und die neue Differenz bei den Zählern eingetragen wird."""
     for chargepoint in preferenced_chargepoints:
         required_currents = chargepoint.data.control_parameter.required_currents
diff --git a/packages/control/algorithm/filter_chargepoints_test.py b/packages/control/algorithm/filter_chargepoints_test.py
index f278afcf4f..003df60ee4 100644
--- a/packages/control/algorithm/filter_chargepoints_test.py
+++ b/packages/control/algorithm/filter_chargepoints_test.py
@@ -114,7 +114,7 @@ def mock_cp(cp: Chargepoint, num: int):
                          Chargemode.INSTANT_CHARGING, False),
                      1, (Chargemode.SCHEDULED_CHARGING,
                          Chargemode.INSTANT_CHARGING, True),
-                     [mock_cp1], id="cp2 is prioritised")
+                     [mock_cp1], id="cp2 is prioritized")
     ])
 def test_get_chargepoints_by_mode(set_mode_tuple: Tuple[Optional[str], str, bool],
                                   charging_ev_1: int,
diff --git a/packages/control/algorithm/integration_test/pv_charging_test.py b/packages/control/algorithm/integration_test/pv_charging_test.py
index 0b9eefb4f1..44acefa461 100644
--- a/packages/control/algorithm/integration_test/pv_charging_test.py
+++ b/packages/control/algorithm/integration_test/pv_charging_test.py
@@ -115,7 +115,7 @@ def assert_counter_set(params: ParamsExpectedCounterSet):
 
 
 def test_start_pv_delay(all_cp_pv_charging_3p, all_cp_not_charging, monkeypatch):
-    # alle 3 im PV-laden, keine Ladung -> bei zweien die Verz starten, für den 3 reichts nicht
+    # alle 3 im PV-laden, keine Ladung -> bei zwei die Verzögerung starten, für den 3. reicht es nicht
     # setup
     data.data.counter_data["counter0"].data.set.raw_power_left = 31775
     data.data.counter_data["counter0"].data.set.raw_currents_left = [32, 30, 31]
@@ -142,7 +142,7 @@ def test_start_pv_delay(all_cp_pv_charging_3p, all_cp_not_charging, monkeypatch)
 
 
 def test_pv_delay_expired(all_cp_pv_charging_3p, all_cp_not_charging, monkeypatch):
-    # alle 3 im PV-laden, keine Ladung -> bei einem die Verz abgelaufen, erhält minstrom
+    # alle 3 im PV-laden, keine Ladung -> bei einem die Verzögerung abgelaufen, erhält Mindeststrom
     # setup
     data.data.counter_data["counter0"].data.set.raw_power_left = 31200
     data.data.counter_data["counter0"].data.set.raw_currents_left = [32, 30, 31]
diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py
index 4909177c85..22ea742680 100644
--- a/packages/control/algorithm/surplus_controlled.py
+++ b/packages/control/algorithm/surplus_controlled.py
@@ -111,14 +111,14 @@ def _limit_adjust_current(self, chargepoint: Chargepoint, new_current: float) ->
 
     def _add_unused_evse_current(self, limited_current, chargepoint: Chargepoint) -> float:
         """Wenn Autos nicht die volle Ladeleistung nutzen, wird unnötig eingespeist. Dann kann um den noch nicht
-        genutzten Sollstrom hochgeregelt werden."""
+        genutzten Soll-Strom hoch geregelt werden."""
         evse_current = chargepoint.data.get.evse_current
         if evse_current:
             formatted_evse_current = evse_current if evse_current < 32 else evse_current / 100
             current_with_offset = limited_current + max(formatted_evse_current - max(chargepoint.data.get.currents), 0)
             current = min(current_with_offset, chargepoint.data.control_parameter.required_current)
             if current != limited_current:
-                log.debug(f"Ungenutzten Sollstrom aufschlagen ergibt {current}A.")
+                log.debug(f"Ungenutzten Soll-Strom aufschlagen ergibt {current}A.")
             return current
         else:
             return limited_current
diff --git a/packages/control/algorithm/surplus_controlled_test.py b/packages/control/algorithm/surplus_controlled_test.py
index a364bdd460..c20186ca09 100644
--- a/packages/control/algorithm/surplus_controlled_test.py
+++ b/packages/control/algorithm/surplus_controlled_test.py
@@ -99,11 +99,11 @@ def test_set_required_current_to_max(phases: int,
 @pytest.mark.parametrize(
     "evse_current, limited_current, expected_current",
     [
-        pytest.param(None, 6, 6, id="Kein Sollstrom aus der EVSE ausgelesen"),
-        pytest.param(15, 15, 15, id="Auto lädt mit Sollstromstärke"),
-        pytest.param(15.5, 15.5, 16, id="Auto lädt mit weniger als Sollstromstärke"),
+        pytest.param(None, 6, 6, id="Kein Soll-Strom aus der EVSE ausgelesen"),
+        pytest.param(15, 15, 15, id="Auto lädt mit Soll-Stromstärke"),
+        pytest.param(15.5, 15.5, 16, id="Auto lädt mit weniger als Soll-Stromstärke"),
         pytest.param(16, 16, 16,
-                     id="Auto lädt mit weniger als Sollstromstärke, aber EVSE-Begrenzung ist erreicht.")
+                     id="Auto lädt mit weniger als Soll-Stromstärke, aber EVSE-Begrenzung ist erreicht.")
     ])
 def test_add_unused_evse_current(evse_current: float, limited_current: float, expected_current: float):
     # setup
diff --git a/packages/control/bat_all.py b/packages/control/bat_all.py
index a6b9e28edf..620c8bb6ca 100644
--- a/packages/control/bat_all.py
+++ b/packages/control/bat_all.py
@@ -181,7 +181,7 @@ def setup_bat(self):
                     self._get_charging_power_left()
                     log.info(f"{self.data.set.charging_power_left}W verbleibende Speicher-Leistung")
                 else:
-                    # Bei Warnung oder Fehlerfall, zB durch Kalibierungs-Meldung, Speicher-Leistung nicht in der
+                    # Bei Warnung oder Fehlerfall, zB durch Kalibrierung, Speicher-Leistung nicht in der
                     # Regelung berücksichtigen.
                     self.data.set.charging_power_left = 0
             else:
diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index 0feffe5e6a..9146955c2c 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -378,7 +378,7 @@ def _is_phase_switch_required(self) -> bool:
             if ((self.data.set.phases_to_use != self.data.get.phases_in_use or
                 # Vorgegebene Phasenzahl hat sich geändert
                  self.data.set.phases_to_use != self.data.control_parameter.phases) and
-                # Wenn ein Sollstrom vorgegeben ist, muss das Auto auch laden, damit umgeschaltet wird, sonst
+                # Wenn ein Soll-Strom vorgegeben ist, muss das Auto auch laden, damit umgeschaltet wird, sonst
                 # wird zB bei automatischer Umschaltung ständig versucht auf 1 Phase zurück zu schalten, wenn
                 # das Auto bei 3 Phasen voll ist.
                     ((self.data.set.current != 0 and self.data.get.power != 0) or
@@ -407,7 +407,7 @@ def _is_phase_switch_required(self) -> bool:
                     phase_switch_required = False
                     self.set_state_and_log(
                         "Keine Phasenumschaltung, da wiederholtes Anstoßen der Umschaltung in den übergreifenden "
-                        "Ladeinstellungen deaktiviert wurde. Die aktuelle "
+                        "Ladeeinstellungen deaktiviert wurde. Die aktuelle "
                         "Phasenzahl wird bis zum Abstecken beibehalten.")
         return phase_switch_required
 
diff --git a/packages/control/chargepoint/chargepoint_data.py b/packages/control/chargepoint/chargepoint_data.py
index 489088db77..d7807f0eda 100644
--- a/packages/control/chargepoint/chargepoint_data.py
+++ b/packages/control/chargepoint/chargepoint_data.py
@@ -138,7 +138,7 @@ class Set:
     plug_time: Optional[float] = None
     required_power: float = 0
     rfid: Optional[str] = None
-    target_current: float = 0  # Sollstrom aus fest vorgegebener Stromstärke
+    target_current: float = 0  # Soll-Strom aus fest vorgegebener Stromstärke
     charging_ev_data: Ev = field(default_factory=ev_factory)
 
 
diff --git a/packages/control/ev.py b/packages/control/ev.py
index 5141e5dfa5..f19842d783 100644
--- a/packages/control/ev.py
+++ b/packages/control/ev.py
@@ -286,7 +286,7 @@ def get_required_current(self,
                     max_phases_hw,
                     phase_switch_supported,
                     charging_type)
-                soc_request_intervall_offset = 0
+                soc_request_interval_offset = 0
                 if plan_data:
                     name = self.charge_template.data.chargemode.scheduled_charging.plans[plan_data.num].name
                     # Wenn mit einem neuen Plan geladen wird, muss auch die Energiemenge von neuem gezählt werden.
@@ -295,11 +295,11 @@ def get_required_current(self,
                             name != control_parameter.current_plan):
                         control_parameter.imported_at_plan_start = imported
                     # Wenn der SoC ein paar Minuten alt ist, kann der Termin trotzdem gehalten werden.
-                    # Zielladen kannn nicht genauer arbeiten, als das Abfrageintervall vom SoC.
+                    # Zielladen kann nicht genauer arbeiten, als das Abfrageintervall vom SoC.
                     if (self.soc_module and
                             self.charge_template.data.chargemode.
                             scheduled_charging.plans[plan_data.num].limit.selected == "soc"):
-                        soc_request_intervall_offset = self.soc_module.general_config.request_interval_charging
+                        soc_request_interval_offset = self.soc_module.general_config.request_interval_charging
                     control_parameter.current_plan = name
                 else:
                     control_parameter.current_plan = None
@@ -309,7 +309,7 @@ def get_required_current(self,
                     used_amount,
                     control_parameter.phases,
                     control_parameter.min_current,
-                    soc_request_intervall_offset)
+                    soc_request_interval_offset)
 
             # Wenn Zielladen auf Überschuss wartet, prüfen, ob Zeitladen aktiv ist.
             if (submode != "instant_charging" and
@@ -427,7 +427,7 @@ def _check_phase_switch_conditions(self,
                                        get_power: float,
                                        max_current_cp: int,
                                        limit: LimitingValue) -> Tuple[bool, Optional[str]]:
-        # Manche EV laden mit 6.1A bei 6A Sollstrom
+        # Manche EV laden mit 6.1A bei 6A Soll-Strom
         min_current = control_parameter.min_current + self.ev_template.data.nominal_difference
         max_current = (min(self.ev_template.data.max_current_single_phase, max_current_cp)
                        - self.ev_template.data.nominal_difference)
@@ -617,7 +617,7 @@ def time_charging(self,
                 plan = timecheck.check_plans_timeframe(self.data.time_charging.plans)
                 if plan is not None:
                     current = plan.current if charging_type == ChargingType.AC.value else plan.dc_current
-                    if self.data.et.active and data.data.optional_data.et_provider_availble():
+                    if self.data.et.active and data.data.optional_data.et_provider_available():
                         if not data.data.optional_data.et_price_lower_than_limit(self.data.et.max_price):
                             return 0, "stop", self.CHARGING_PRICE_EXCEEDED, plan.name
                     if plan.limit.selected == "none":  # kein Limit konfiguriert, mit konfigurierter Stromstärke laden
@@ -663,7 +663,7 @@ def instant_charging(self,
                 current = instant_charging.current
             else:
                 current = instant_charging.dc_current
-            if self.data.et.active and data.data.optional_data.et_provider_availble():
+            if self.data.et.active and data.data.optional_data.et_provider_available():
                 if not data.data.optional_data.et_price_lower_than_limit(self.data.et.max_price):
                     return 0, "stop", self.CHARGING_PRICE_EXCEEDED
             if instant_charging.limit.selected == "none":
@@ -854,7 +854,7 @@ def scheduled_charging_calc_current(self,
                                         used_amount: float,
                                         control_parameter_phases: int,
                                         min_current: int,
-                                        soc_request_intervall_offset: int) -> Tuple[float, str, str, int]:
+                                        soc_request_interval_offset: int) -> Tuple[float, str, str, int]:
         current = 0
         submode = "stop"
         if plan_data is None:
@@ -877,7 +877,7 @@ def scheduled_charging_calc_current(self,
             phases = control_parameter_phases
         elif limit.selected == "amount" and used_amount >= limit.amount:
             message = self.SCHEDULED_CHARGING_REACHED_AMOUNT
-        elif 0 - soc_request_intervall_offset < plan_data.remaining_time < 300 + soc_request_intervall_offset:
+        elif 0 - soc_request_interval_offset < plan_data.remaining_time < 300 + soc_request_interval_offset:
             # 5 Min vor spätestem Ladestart
             if limit.selected == "soc":
                 limit_string = self.SCHEDULED_CHARGING_LIMITED_BY_SOC.format(limit.soc_scheduled)
@@ -889,7 +889,7 @@ def scheduled_charging_calc_current(self,
             submode = "instant_charging"
         # weniger als die berechnete Zeit verfügbar
         # Ladestart wurde um maximal 20 Min verpasst.
-        elif plan_data.remaining_time <= 0 - soc_request_intervall_offset:
+        elif plan_data.remaining_time <= 0 - soc_request_interval_offset:
             if plan_data.duration + plan_data.remaining_time < 0:
                 current = plan_data.max_current
             else:
@@ -900,10 +900,10 @@ def scheduled_charging_calc_current(self,
         else:
             # Wenn Elektronische Tarife aktiv sind, prüfen, ob jetzt ein günstiger Zeitpunkt zum Laden
             # ist.
-            if self.data.et.active and data.data.optional_data.et_provider_availble():
-                hourlist = data.data.optional_data.et_get_loading_hours(plan_data.duration, plan_data.remaining_time)
-                log.debug(f"Günstige Ladezeiten: {hourlist}")
-                if timecheck.is_list_valid(hourlist):
+            if self.data.et.active and data.data.optional_data.et_provider_available():
+                hour_list = data.data.optional_data.et_get_loading_hours(plan_data.duration, plan_data.remaining_time)
+                log.debug(f"Günstige Ladezeiten: {hour_list}")
+                if timecheck.is_list_valid(hour_list):
                     message = self.SCHEDULED_CHARGING_CHEAP_HOUR
                     current = plan_data.available_current
                     submode = "instant_charging"
diff --git a/packages/control/ev_charge_template_test.py b/packages/control/ev_charge_template_test.py
index cb60b28657..dea3c8a24a 100644
--- a/packages/control/ev_charge_template_test.py
+++ b/packages/control/ev_charge_template_test.py
@@ -190,7 +190,7 @@ def test_calculate_duration(selected: str, phases: int, expected_duration: float
     ])
 def test_search_plan(check_duration_return1: Tuple[Optional[float], bool],
                      check_duration_return2: Tuple[Optional[float], bool],
-                     expected_plan_num: int,
+                     expected_plan_num: Optional[int],
                      monkeypatch):
     # setup
     calculate_duration_mock = Mock(return_value=(100, 200))
@@ -285,8 +285,8 @@ def test_scheduled_charging_calc_current_electricity_tariff(loading_hour, expect
     ct.data.et.active = True
     mock_et_get_loading_hours = Mock(return_value=[])
     monkeypatch.setattr(data.data.optional_data, "et_get_loading_hours", mock_et_get_loading_hours)
-    mock_et_provider_availble = Mock(return_value=True)
-    monkeypatch.setattr(data.data.optional_data, "et_provider_availble", mock_et_provider_availble)
+    mock_et_provider_available = Mock(return_value=True)
+    monkeypatch.setattr(data.data.optional_data, "et_provider_available", mock_et_provider_available)
     mock_is_list_valid = Mock(return_value=loading_hour)
     monkeypatch.setattr(timecheck, "is_list_valid", mock_is_list_valid)
 
diff --git a/packages/control/optional.py b/packages/control/optional.py
index d6e4456188..6b6f0d2f22 100644
--- a/packages/control/optional.py
+++ b/packages/control/optional.py
@@ -89,7 +89,7 @@ def __init__(self):
         except Exception:
             log.exception("Fehler im Optional-Modul")
 
-    def et_provider_availble(self) -> bool:
+    def et_provider_available(self) -> bool:
         return self.et_module is not None and self.data.et.get.fault_state != 2
 
     def et_price_lower_than_limit(self, max_price: float):
diff --git a/packages/control/process.py b/packages/control/process.py
index d83b73872f..5831b01c08 100644
--- a/packages/control/process.py
+++ b/packages/control/process.py
@@ -20,7 +20,7 @@ def __init__(self) -> None:
 
     def process_algorithm_results(self) -> None:
         try:
-            modules_threads = []  # type: List[threading.Thread]
+            modules_threads: List[threading.Thread] = []
             log.info("# Ladung starten.")
             for cp in data.data.cp_data.values():
                 try:
diff --git a/packages/helpermodules/create_debug.py b/packages/helpermodules/create_debug.py
index 9b2455a51c..1b7b8a2149 100644
--- a/packages/helpermodules/create_debug.py
+++ b/packages/helpermodules/create_debug.py
@@ -119,7 +119,7 @@ def get_parsed_cp_data(cp: Chargepoint) -> str:
                         f"{ip}; Stecker-Status: {cp.data.get.plug_state}, Leistung: "
                         f"{cp.data.get.power/1000}kW, {cp.data.get.currents}A, {cp.data.get.voltages}V, Lademodus: "
                         f"{cp.data.control_parameter.chargemode}, Submode: "
-                        f"{cp.data.control_parameter.submode}, Sollstrom: "
+                        f"{cp.data.control_parameter.submode}, Soll-Strom: "
                         f"{cp.data.set.current}A, Status: {cp.data.get.state_str}, "
                         f"Fehlerstatus: {cp.data.get.fault_str}\n")
         if cp.chargepoint_module.config.type == "openwb_pro":
diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py
index fb832842a0..7de17af1d2 100644
--- a/packages/helpermodules/subdata.py
+++ b/packages/helpermodules/subdata.py
@@ -593,7 +593,7 @@ def process_general_topic(self, var: general.General, msg: mqtt.MQTTMessage):
                         config = dataclass_from_dict(mod.device_descriptor.configuration_factory, config_dict)
                         var.data.ripple_control_receiver.module = config_dict
                         var.ripple_control_receiver = ConfigurableRcr(
-                            config=config, component_initialiser=mod.create_ripple_control_receiver)
+                            config=config, component_initializer=mod.create_ripple_control_receiver)
                 elif re.search("/general/ripple_control_receiver/get/", msg.topic) is not None:
                     self.set_json_payload_class(var.data.ripple_control_receiver.get, msg)
                 elif re.search("/general/ripple_control_receiver/", msg.topic) is not None:
diff --git a/packages/helpermodules/utils/error_counter.py b/packages/helpermodules/utils/error_counter.py
index e6d1c0c423..c303ecc90b 100644
--- a/packages/helpermodules/utils/error_counter.py
+++ b/packages/helpermodules/utils/error_counter.py
@@ -6,7 +6,7 @@
 
 log = logging.getLogger(__name__)
 
-CP_ERROR = ("Anhaltender Fehler beim Auslesen des Ladepunkts. Sollstromstärke, Lade- und Stecker-Status wird "
+CP_ERROR = ("Anhaltender Fehler beim Auslesen des Ladepunkts. Soll-Stromstärke, Lade- und Stecker-Status wird "
             "zurückgesetzt.")
 
 
diff --git a/packages/main.py b/packages/main.py
index 3e2ba93154..b2ae3f1c22 100755
--- a/packages/main.py
+++ b/packages/main.py
@@ -5,7 +5,7 @@
 import logging
 from helpermodules import logger
 from helpermodules.utils import thread_handler
-# als erstes logging initalisieren, damit auch ImportError geloggt werden
+# als erstes logging initialisieren, damit auch ImportError geloggt werden
 logger.setup_logging()
 log = logging.getLogger()
 
diff --git a/packages/modules/backup_clouds/nfs/backup_cloud.py b/packages/modules/backup_clouds/nfs/backup_cloud.py
index 6e84f3c088..8322b13518 100644
--- a/packages/modules/backup_clouds/nfs/backup_cloud.py
+++ b/packages/modules/backup_clouds/nfs/backup_cloud.py
@@ -17,7 +17,7 @@ def _run(_cmd: str, _timeout: float, _shell: bool) -> bool:
         p = run([_cmd], timeout=_timeout, stdout=PIPE, stderr=PIPE, shell=_shell)
         p.check_returncode()
     except CalledProcessError as e:
-        log.exception('backup-nfs: cmd ' + _cmd + ', Faii: errorcode: '
+        log.exception('backup-nfs: cmd ' + _cmd + ', Fail: error code: '
                       + str(e.returncode) + ', stderr: ' + p.stderr.decode('utf-8'))
         raise e
         return False
diff --git a/packages/modules/backup_clouds/onedrive/api.py b/packages/modules/backup_clouds/onedrive/api.py
index e380de7cc4..fb3b93eb3e 100644
--- a/packages/modules/backup_clouds/onedrive/api.py
+++ b/packages/modules/backup_clouds/onedrive/api.py
@@ -107,8 +107,8 @@ def generateMSALAuthCode(cloudbackup: OneDriveBackupCloud) -> dict:
         "openWB/set/system/backup_cloud/config", cloudbackupconfig_to_mqtt, retain=True, hostname="localhost"
         )
 
-    result["message"] = """Authorisierung gestartet, bitte den Link öffen, Code eingeben,
-        und Zugang authorisieren. Anschließend Zugangsberechtigung abrufen."""
+    result["message"] = """Autorisierung gestartet, bitte den Link öffnen, Code eingeben,
+        und Zugang autorisieren. Anschließend Zugangsberechtigung abrufen."""
     result["MessageType"] = MessageType.SUCCESS
 
     return result
@@ -134,7 +134,7 @@ def retrieveMSALTokens(cloudbackup: OneDriveBackupCloud) -> dict:
     f = cloudbackup.configuration.flow
     if f is None:
         result["message"] = """Es ist wurde kein Auth-Code erstellt.
-                            Bitte zunächst Auth-Code erstellen und den Authorisierungsprozess beenden.<br />"""
+                            Bitte zunächst Auth-Code erstellen und den Autorisierungsprozess beenden.<br />"""
         result["MessageType"] = MessageType.WARNING
         return result
     flow = pickle.loads(bytes(f, encoding='latin1'))
diff --git a/packages/modules/backup_clouds/onedrive/backup_cloud.py b/packages/modules/backup_clouds/onedrive/backup_cloud.py
index d45bb70778..196c92b70a 100644
--- a/packages/modules/backup_clouds/onedrive/backup_cloud.py
+++ b/packages/modules/backup_clouds/onedrive/backup_cloud.py
@@ -13,14 +13,14 @@
 
 
 def upload_backup(config: OneDriveBackupCloudConfiguration, backup_filename: str, backup_file: bytes) -> None:
-    # upload a single file to onedrive useing credentials from OneDriveBackupCloudConfiguration
+    # upload a single file to onedrive using credentials from OneDriveBackupCloudConfiguration
     # https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_put_content?view=odsp-graph-online
     tokens = get_tokens(config)  # type: ignore
     log.debug("token object retrieved, access_token: %s", tokens.__len__)
     log.debug("instantiate OneDrive connection")
     onedrive = OneDrive(access_token=tokens["access_token"])
 
-    localbackup = os.path.join(pathlib.Path().resolve(), 'data', 'backup', backup_filename)
+    local_backup = os.path.join(pathlib.Path().resolve(), 'data', 'backup', backup_filename)
     remote_filename = backup_filename.replace(':', '-')  # file won't upload when name contains ':'
 
     if not config.backuppath.endswith("/"):
@@ -28,7 +28,7 @@ def upload_backup(config: OneDriveBackupCloudConfiguration, backup_filename: str
         config.backuppath = config.backuppath + "/"
 
     log.debug("uploading file %s to OneDrive", backup_filename)
-    onedrive.upload_item(item_path=(config.backuppath+remote_filename), file_path=localbackup,
+    onedrive.upload_item(item_path=(config.backuppath+remote_filename), file_path=local_backup,
                          conflict_behavior="replace")
 
 
diff --git a/packages/modules/common/configurable_backup_cloud.py b/packages/modules/common/configurable_backup_cloud.py
index c29ba2c764..ce126d5d31 100644
--- a/packages/modules/common/configurable_backup_cloud.py
+++ b/packages/modules/common/configurable_backup_cloud.py
@@ -11,12 +11,12 @@
 class ConfigurableBackupCloud(Generic[T_BACKUP_CLOUD_CONFIG]):
     def __init__(self,
                  config: T_BACKUP_CLOUD_CONFIG,
-                 component_initialiser: Callable[[], float]) -> None:
+                 component_initializer: Callable[[], float]) -> None:
         self.config = config
         self.fault_state = FaultState(ComponentInfo(None, self.config.name,
                                                     ComponentType.BACKUP_CLOUD.value))
         with SingleComponentUpdateContext(self.fault_state):
-            self._component_updater = component_initialiser(config)
+            self._component_updater = component_initializer(config)
 
     def update(self, backup_filename: str, backup_file: bytes):
         if hasattr(self, "_component_updater"):
diff --git a/packages/modules/common/configurable_device.py b/packages/modules/common/configurable_device.py
index 4f9d289deb..cfa5963f96 100644
--- a/packages/modules/common/configurable_device.py
+++ b/packages/modules/common/configurable_device.py
@@ -66,7 +66,7 @@ def __init__(self,
         self.__component_factory = component_factory
         self.__component_updater = component_updater
         self.device_config = device_config
-        self.components = {}  # type: Dict[str, T_COMPONENT]
+        self.components: Dict[str, T_COMPONENT] = {}
 
     def add_component(self, component_config: T_COMPONENT_CONFIG) -> None:
         self.components["component" + str(component_config.id)] = self.__component_factory(component_config)
diff --git a/packages/modules/common/configurable_ripple_control_receiver.py b/packages/modules/common/configurable_ripple_control_receiver.py
index d238fccec5..e15475604b 100644
--- a/packages/modules/common/configurable_ripple_control_receiver.py
+++ b/packages/modules/common/configurable_ripple_control_receiver.py
@@ -12,12 +12,12 @@
 class ConfigurableRcr(Generic[T_RCR_CONFIG]):
     def __init__(self,
                  config: T_RCR_CONFIG,
-                 component_initialiser: Callable[[], float]) -> None:
+                 component_initializer: Callable[[], float]) -> None:
         self.config = config
         self.fault_state = FaultState(ComponentInfo(None, self.config.name,
                                       ComponentType.RIPPLE_CONTROL_RECEIVER.value))
         with SingleComponentUpdateContext(self.fault_state):
-            self._component_updater = component_initialiser(config)
+            self._component_updater = component_initializer(config)
         self.store = store.get_ripple_control_receiver_value_store()
 
     def update(self):
diff --git a/packages/modules/common/configurable_tariff.py b/packages/modules/common/configurable_tariff.py
index 6c83747861..e8c06b2e3a 100644
--- a/packages/modules/common/configurable_tariff.py
+++ b/packages/modules/common/configurable_tariff.py
@@ -13,12 +13,12 @@
 class ConfigurableElectricityTariff(Generic[T_TARIFF_CONFIG]):
     def __init__(self,
                  config: T_TARIFF_CONFIG,
-                 component_initialiser: Callable[[], float]) -> None:
+                 component_initializer: Callable[[], float]) -> None:
         self.config = config
         self.store = store.get_electricity_tariff_value_store()
         self.fault_state = FaultState(ComponentInfo(None, self.config.name, ComponentType.ELECTRICITY_TARIFF.value))
         with SingleComponentUpdateContext(self.fault_state):
-            self._component_updater = component_initialiser(config)
+            self._component_updater = component_initializer(config)
 
     def update(self):
         if hasattr(self, "_component_updater"):
diff --git a/packages/modules/common/configurable_vehicle_test.py b/packages/modules/common/configurable_vehicle_test.py
index 617396334b..bea4e2068a 100644
--- a/packages/modules/common/configurable_vehicle_test.py
+++ b/packages/modules/common/configurable_vehicle_test.py
@@ -87,7 +87,7 @@ def conf_vehicle_mqtt():
 
 
 @pytest.mark.parametrize(
-    "conf_vehicle, use_soc_from_cp, vehicle_update_data, calclulated_soc_state, expected_source",
+    "conf_vehicle, use_soc_from_cp, vehicle_update_data, calculated_soc_state, expected_source",
     [
         pytest.param(conf_vehicle_manual(), False, VehicleUpdateData(), CalculatedSocState(
             manual_soc=34), SocSource.MANUAL, id="Manuell, neuer Start-SoC"),
@@ -125,11 +125,11 @@ def conf_vehicle_mqtt():
 def test_get_carstate_source(conf_vehicle: ConfigurableVehicle,
                              use_soc_from_cp,
                              vehicle_update_data,
-                             calclulated_soc_state,
+                             calculated_soc_state,
                              expected_source):
     # setup
     conf_vehicle.general_config.use_soc_from_cp = use_soc_from_cp
-    conf_vehicle.calculated_soc_state = calclulated_soc_state
+    conf_vehicle.calculated_soc_state = calculated_soc_state
     # execution
     source = conf_vehicle._get_carstate_source(vehicle_update_data)
 
diff --git a/packages/modules/common/hardware_check.py b/packages/modules/common/hardware_check.py
index a4700baba7..3652dbc220 100644
--- a/packages/modules/common/hardware_check.py
+++ b/packages/modules/common/hardware_check.py
@@ -9,10 +9,10 @@
 
 OPEN_TICKET = (" Bitte nehme bei anhaltenden Problemen über die Support-Funktion in den Einstellungen Kontakt mit " +
                "uns auf.")
-RS485_ADPATER_BROKEN = ("Auslesen von Zähler UND Evse nicht möglich. Vermutlich ist {} defekt oder zwei "
+RS485_ADAPTER_BROKEN = ("Auslesen von Zähler UND Evse nicht möglich. Vermutlich ist {} defekt oder zwei "
                         "Busteilnehmer haben die gleiche Modbus-ID. Bitte die Zähler-ID prüfen.")
-USB_ADAPTER_BROKEN = RS485_ADPATER_BROKEN.format('der USB-Adapter')
-LAN_ADAPTER_BROKEN = (f"{RS485_ADPATER_BROKEN.format('der LAN-Konverter abgestürzt,')} "
+USB_ADAPTER_BROKEN = RS485_ADAPTER_BROKEN.format('der USB-Adapter')
+LAN_ADAPTER_BROKEN = (f"{RS485_ADAPTER_BROKEN.format('der LAN-Konverter abgestürzt,')} "
                       "Bitte den openWB series2 satellit stromlos machen.")
 METER_PROBLEM = "Der Zähler konnte nicht ausgelesen werden. Vermutlich ist der Zähler falsch konfiguriert oder defekt."
 METER_BROKEN = "Die Spannungen des Zählers konnten nicht korrekt ausgelesen werden: {}V Der Zähler ist defekt."
diff --git a/packages/modules/common/hardware_check_test.py b/packages/modules/common/hardware_check_test.py
index 76a9968c30..b88dac6464 100644
--- a/packages/modules/common/hardware_check_test.py
+++ b/packages/modules/common/hardware_check_test.py
@@ -22,7 +22,7 @@
                   EVSE_BROKEN + " " + METER_BROKEN.format([230, 0, 230]) + OPEN_TICKET,
                   id="EVSE defekt und Zähler eine Phase defekt"),
      pytest.param(None, 18, Exception("Modbus"), None, None, None,
-                  ModbusSerialClient_, METER_PROBLEM, id="Zähler verkonfiguriert"),
+                  ModbusSerialClient_, METER_PROBLEM, id="Zähler falsch konfiguriert"),
      pytest.param(Exception("Modbus"), None, Exception("Modbus"), None, None, False, ModbusSerialClient_,
                   USB_ADAPTER_BROKEN, id="USB-Adapter defekt"),
      pytest.param(Exception("Modbus"), None, Exception("Modbus"), None, None, False, ModbusTcpClient_,
@@ -44,8 +44,8 @@ def test_hardware_check_fails(evse_side_effect,
     # setup
     mock_evse_client = Mock(spec=Evse, get_firmware_version=Mock(
         side_effect=evse_side_effect, return_value=evse_return_value))
-    mock_evse_facotry = Mock(spec=Evse, return_value=mock_evse_client)
-    monkeypatch.setattr(ClientHandler, "_evse_factory", mock_evse_facotry)
+    mock_evse_factory = Mock(spec=Evse, return_value=mock_evse_client)
+    monkeypatch.setattr(ClientHandler, "_evse_factory", mock_evse_factory)
 
     mock_meter_client = Mock(spec=sdm.Sdm630_72, get_voltages=Mock(
         side_effect=meter_side_effect, return_value=meter_return_value))
@@ -66,8 +66,8 @@ def test_hardware_check_fails(evse_side_effect,
 def test_hardware_check_succeeds(monkeypatch):
     # setup
     mock_evse_client = Mock(spec=Evse, get_firmware_version=Mock(return_value=18))
-    mock_evse_facotry = Mock(spec=Evse, return_value=mock_evse_client)
-    monkeypatch.setattr(ClientHandler, "_evse_factory", mock_evse_facotry)
+    mock_evse_factory = Mock(spec=Evse, return_value=mock_evse_client)
+    monkeypatch.setattr(ClientHandler, "_evse_factory", mock_evse_factory)
 
     mock_meter_client = Mock(spec=sdm.Sdm630_72, get_voltages=Mock(return_value=[230]*3))
     mock_find_meter_client = Mock(spec=sdm.Sdm630_72, return_value=mock_meter_client)
diff --git a/packages/modules/common/simcount/_simcounter.py b/packages/modules/common/simcount/_simcounter.py
index 5f196c7643..d4dbd83069 100644
--- a/packages/modules/common/simcount/_simcounter.py
+++ b/packages/modules/common/simcount/_simcounter.py
@@ -8,7 +8,7 @@ class SimCounter:
     def __init__(self, device_id: int, component_id: int, prefix: str):
         self.topic = "openWB/set/system/device/{}/component/{}/".format(device_id, component_id)
         self.prefix = "pv2" if prefix == "pv" and component_id != 1 else prefix
-        self.data = None  # type: Optional[SimCounterState]
+        self.data: Optional[SimCounterState] = None
 
     def sim_count(self, power: float) -> Tuple[float, float]:
         self.data = sim_count(power, self.topic, self.data, self.prefix)
diff --git a/packages/modules/electricity_tariffs/tibber/tariff.py b/packages/modules/electricity_tariffs/tibber/tariff.py
index c3bac5f61b..311ec918c2 100644
--- a/packages/modules/electricity_tariffs/tibber/tariff.py
+++ b/packages/modules/electricity_tariffs/tibber/tariff.py
@@ -28,17 +28,17 @@ def fetch_prices(config: TibberTariffConfiguration) -> Dict[int, float]:
     if response_json.get("errors") is None:
         today_prices = _get_sorted_price_data(response_json, 'today')
         tomorrow_prices = _get_sorted_price_data(response_json, 'tomorrow')
-        sorted_marketprices = today_prices + tomorrow_prices
+        sorted_market_prices = today_prices + tomorrow_prices
         prices: Dict[int, float] = {}
         i = 0
-        for price_data in sorted_marketprices:
+        for price_data in sorted_market_prices:
             # konvertiere Time-String (Format 2021-02-06T00:00:00+01:00) ()':' nicht von strptime unterstützt)
             time_str = ''.join(price_data['startsAt'].rsplit(':', 1))
-            startzeit_localized = datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S.%f%z')
-            starttime_utc = int(startzeit_localized.astimezone(timezone.utc).timestamp())
-            if timecheck.create_unix_timestamp_current_full_hour() <= starttime_utc:
+            start_time_localized = datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S.%f%z')
+            start_time_utc = int(start_time_localized.astimezone(timezone.utc).timestamp())
+            if timecheck.create_unix_timestamp_current_full_hour() <= start_time_utc:
                 if i < 24:
-                    prices.update({starttime_utc: price_data['total'] / 1000})
+                    prices.update({start_time_utc: price_data['total'] / 1000})
                     i += 1
                 else:
                     break

From 079b8f90bdc13ca06e5218eb35bb7b71d27b1cac Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 4 Sep 2024 12:49:01 +0200
Subject: [PATCH 024/205] consider disnegable smarthome power for pv charging
 and phase switch (#1853)

---
 packages/control/counter.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/packages/control/counter.py b/packages/control/counter.py
index 0cd88e3358..eb5a8f700e 100644
--- a/packages/control/counter.py
+++ b/packages/control/counter.py
@@ -189,9 +189,10 @@ def update_surplus_values_left(self, diffs) -> None:
     def calc_surplus(self):
         # reservierte Leistung wird nicht berücksichtigt, weil diese noch verwendet werden kann, bis die EV
         # eingeschaltet werden. Es darf bloß nicht für zu viele zB die Einschaltverzögerung gestartet werden.
+        disengageable_smarthome_power = data.data.counter_all_data.data.set.disengageable_smarthome_power
         evu_counter = data.data.counter_all_data.get_evu_counter()
         bat_surplus = data.data.bat_all_data.power_for_bat_charging()
-        surplus = evu_counter.data.get.power - bat_surplus
+        surplus = evu_counter.data.get.power - bat_surplus - disengageable_smarthome_power
         return surplus
 
     def calc_raw_surplus(self):

From 7607cf359de08d30be4a0159fe18b063a45a405c Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 4 Sep 2024 12:49:56 +0200
Subject: [PATCH 025/205] remove obsolet component topics of deleted devices
 (#1780)

fix

logging
---
 packages/helpermodules/update_config.py | 26 ++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 8a85a63b64..d87c9acb14 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -43,7 +43,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 56
+    DATASTORE_VERSION = 57
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -1677,3 +1677,27 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: updated_payload}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 56)
+
+    def upgrade_datastore_56(self) -> None:
+        # es gibt noch Topics von Komponenten gelöschter Geräte
+        def upgrade(topic: str, payload) -> Optional[dict]:
+            if re.search("openWB/system/device/[0-9]+/component/[0-9]+", topic) is not None:
+                device_index = get_index(topic)
+                for device_topic in self.all_received_topics.keys():
+                    if f"openWB/system/device/{device_index}/config" == device_topic:
+                        return
+                else:
+                    log.debug(f"Entferne Topic von gelöschter Komponente {topic}")
+                    return {topic: ""}
+            elif re.search("openWB/(counter|pv|bat)/[0-9]+", topic) is not None:
+                for component_topic in self.all_received_topics.keys():
+                    if re.search(f"openWB/system/device/[0-9]+/component/{get_index(topic)}",
+                                 component_topic) is not None:
+                        device_index = get_index(component_topic)
+                        if f"openWB/system/device/{device_index}/config" in self.all_received_topics.keys():
+                            return
+                else:
+                    log.debug(f"Entferne Topic von gelöschter Komponente {topic}")
+                    return {topic: ""}
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 57)

From 450fc420c9470f5fc65fbae3bfd74ba7bcf220f3 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Thu, 5 Sep 2024 10:00:24 +0200
Subject: [PATCH 026/205] delay for satellite duo depends on control interval
 (#1871)

---
 .../openwb_series2_satellit/chargepoint_module.py    | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py b/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py
index ed60b443dc..27345b3358 100644
--- a/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py
+++ b/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py
@@ -3,6 +3,7 @@
 import time
 from typing import Optional
 
+from control import data
 from helpermodules.utils.error_counter import CP_ERROR, ErrorTimerContext
 from modules.chargepoints.openwb_series2_satellit.config import OpenWBseries2Satellit
 from modules.common import modbus
@@ -23,8 +24,9 @@ class ChargepointModule(AbstractChargepoint):
         "type": "openWB Satellit",
         "versions": ["2.0"]
     }
-    CP0_DELAY = 1
-    CP0_DELAY_STARTUP = 4
+    # 1/3 des Regelintervalls für Abfrage der Werte, davon die Hälfte je Duo-LP
+    CP1_DELAY = data.data.general_data.data.control_interval / 6
+    CP1_DELAY_STARTUP = 4
     ID_PHASE_SWITCH_UNIT = 3
 
     def __init__(self, config: OpenWBseries2Satellit) -> None:
@@ -32,7 +34,7 @@ def __init__(self, config: OpenWBseries2Satellit) -> None:
         self.fault_state = FaultState(ComponentInfo(self.config.id, "Ladepunkt", "chargepoint"))
         self.version: Optional[bool] = None
         with SingleComponentUpdateContext(self.fault_state):
-            self.delay_second_cp(self.CP0_DELAY_STARTUP)
+            self.delay_second_cp(self.CP1_DELAY_STARTUP)
             self.store = get_chargepoint_value_store(self.config.id)
             self.client_error_context = ErrorTimerContext(
                 f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True)
@@ -73,7 +75,7 @@ def get_values(self) -> None:
             if self.version is not None:
                 with self.client_error_context:
                     try:
-                        self.delay_second_cp(self.CP0_DELAY)
+                        self.delay_second_cp(self.CP1_DELAY)
                         with self._client.client:
                             self._client.check_hardware(self.fault_state)
                             if self.version is False:
@@ -111,7 +113,7 @@ def set_current(self, current: float) -> None:
             with SingleComponentUpdateContext(self.fault_state, update_always=False):
                 with self.client_error_context:
                     try:
-                        self.delay_second_cp(self.CP0_DELAY)
+                        self.delay_second_cp(self.CP1_DELAY)
                         with self._client.client:
                             self._client.check_hardware(self.fault_state)
                             if self.version:

From eebefae62c6af6005a46e682304903e491cfd563 Mon Sep 17 00:00:00 2001
From: ndrsnhs <156670705+ndrsnhs@users.noreply.github.com>
Date: Thu, 5 Sep 2024 10:34:51 +0200
Subject: [PATCH 027/205] open and close ModbusClient (#1772)

* open and close ModbusClient

* do not establish new connection on exception in huawai and qcells module
---
 packages/modules/common/modbus.py         | 5 +++++
 packages/modules/devices/huawei/device.py | 7 +------
 packages/modules/devices/qcells/device.py | 8 ++------
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/packages/modules/common/modbus.py b/packages/modules/common/modbus.py
index ff2fc9e36d..f81f28b41e 100644
--- a/packages/modules/common/modbus.py
+++ b/packages/modules/common/modbus.py
@@ -88,6 +88,8 @@ def __read_registers(self, read_register_method: Callable,
                          byteorder: Endian = Endian.Big,
                          wordorder: Endian = Endian.Big,
                          **kwargs):
+        if self.is_socket_open() is False:
+            self.connect()
         try:
             multi_request = isinstance(types, Iterable)
             if not multi_request:
@@ -107,12 +109,15 @@ def divide_rounding_up(numerator: int, denominator: int):
                       ModbusDataType.FLOAT_16 else getattr(decoder, t.decoding_method)() for t in types]
             return result if multi_request else result[0]
         except pymodbus.exceptions.ConnectionException as e:
+            self.close()
             e.args += (NO_CONNECTION.format(self.address, self.port),)
             raise e
         except pymodbus.exceptions.ModbusIOException as e:
+            self.close()
             e.args += (NO_VALUES.format(self.address, self.port),)
             raise e
         except Exception as e:
+            self.close()
             raise Exception(__name__+" "+str(type(e))+" " + str(e)) from e
 
     @overload
diff --git a/packages/modules/devices/huawei/device.py b/packages/modules/devices/huawei/device.py
index d21ecd1557..853df71ba7 100644
--- a/packages/modules/devices/huawei/device.py
+++ b/packages/modules/devices/huawei/device.py
@@ -25,15 +25,10 @@ def create_inverter_component(component_config: HuaweiInverterSetup):
         return HuaweiInverter(device_config.id, component_config, device_config.configuration.modbus_id)
 
     def update_components(components: Iterable[Union[HuaweiBat, HuaweiCounter, HuaweiInverter]]):
-        if client.is_socket_open() is False:
-            client.connect()
-        try:
+        with client:
             for component in components:
                 with SingleComponentUpdateContext(component.fault_state):
                     component.update(client)
-        except Exception as e:
-            client.close()
-            raise e
 
     try:
         client = ModbusTcpClient_(device_config.configuration.ip_address,
diff --git a/packages/modules/devices/qcells/device.py b/packages/modules/devices/qcells/device.py
index b2abe736c5..889579d491 100644
--- a/packages/modules/devices/qcells/device.py
+++ b/packages/modules/devices/qcells/device.py
@@ -28,18 +28,14 @@ def create_inverter_component(component_config: QCellsInverterSetup):
                               device_config.configuration.modbus_id)
 
     def update_components(components: Iterable[Union[QCellsBat, QCellsCounter, QCellsInverter]]):
-        if client.is_socket_open() is False:
-            client.connect()
-        try:
+        with client:
             for component in components:
                 with SingleComponentUpdateContext(component.fault_state):
                     component.update(client)
-        except Exception as e:
-            client.close()
-            raise e
 
     try:
         client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+
     except Exception:
         log.exception("Fehler in create_device")
     return ConfigurableDevice(

From 50146fbc37be5ace0d028c862875e716a41222a6 Mon Sep 17 00:00:00 2001
From: hurraxdax <104155477+hurraxdax@users.noreply.github.com>
Date: Thu, 5 Sep 2024 10:35:14 +0200
Subject: [PATCH 028/205] Update requirements.txt for BMW (Bimmer) (#1789)

bimmer_connected was updated for MyBMW App 4.7.2
---
 requirements.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements.txt b/requirements.txt
index e6a804f8e2..b149fa5b43 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -22,4 +22,4 @@ pysmb==1.2.9.1
 pytz==2023.3.post1
 grpcio==1.60.1
 protobuf==4.25.3
-bimmer_connected==0.15.1
+bimmer_connected==0.16.1

From 8d894744696dee92074c4bbd53adbdb9d7b92a2e Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Fri, 6 Sep 2024 11:28:19 +0200
Subject: [PATCH 029/205] fix chargepoint state / pv switch off (#1873)

---
 packages/control/phase_switch.py                         | 2 +-
 packages/modules/chargepoints/mqtt/chargepoint_module.py | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/packages/control/phase_switch.py b/packages/control/phase_switch.py
index afd19ef4e2..4b4df1a51e 100644
--- a/packages/control/phase_switch.py
+++ b/packages/control/phase_switch.py
@@ -45,4 +45,4 @@ def _perform_phase_switch(chargepoint_module: AbstractChargepoint, phases: int,
 
 
 def phase_switch_thread_alive(cp_num):
-    is_thread_alive(f"phase switch cp{cp_num}")
+    return is_thread_alive(f"phase switch cp{cp_num}")
diff --git a/packages/modules/chargepoints/mqtt/chargepoint_module.py b/packages/modules/chargepoints/mqtt/chargepoint_module.py
index 46df6b6ea2..65c7af517b 100644
--- a/packages/modules/chargepoints/mqtt/chargepoint_module.py
+++ b/packages/modules/chargepoints/mqtt/chargepoint_module.py
@@ -1,5 +1,6 @@
 import logging
 
+from helpermodules.utils.error_counter import CP_ERROR, ErrorTimerContext
 from modules.chargepoints.mqtt.config import Mqtt
 from modules.common.abstract_chargepoint import AbstractChargepoint
 from modules.common.abstract_device import DeviceDescriptor
@@ -15,7 +16,8 @@ def __init__(self, config: Mqtt) -> None:
         self.fault_state = FaultState(ComponentInfo(
             self.config.id,
             "Ladepunkt", "chargepoint"))
-        self.a = 5
+        self.client_error_context = ErrorTimerContext(
+            f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True)
 
     def set_current(self, current: float) -> None:
         with SingleComponentUpdateContext(self.fault_state):

From 33fb5b46b010eb242d743713e37abdb2aa92ae84 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Tue, 10 Sep 2024 08:39:52 +0200
Subject: [PATCH 030/205] fix migration without bat values

---
 .../helpermodules/data_migration/data_migration.py     | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/packages/helpermodules/data_migration/data_migration.py b/packages/helpermodules/data_migration/data_migration.py
index d24648e4f8..810b0d0e51 100644
--- a/packages/helpermodules/data_migration/data_migration.py
+++ b/packages/helpermodules/data_migration/data_migration.py
@@ -305,7 +305,7 @@ def convert(old_file_name: str) -> None:
     def _daily_log_entry(self, file: str):
         """ Generator-Funktion, die einen Eintrag aus dem Tages-Log konvertiert.
         alte Spaltenbelegung:
-            15, 23 oder 39 Felder! Wurde in 1.9 nie vereinheitlicht!
+            8, 15, 23 oder 39 Felder! Wurde in 1.9 nie vereinheitlicht!
         Allgemein:
             0: Datum "HHMM"
         EVU:
@@ -385,12 +385,12 @@ def _daily_log_entry(self, file: str):
                             )
                         if self.id_map.bat is not None:
                             new_entry["bat"].update({"all": {
-                                "imported": string_to_float(row[8]),
-                                "exported": string_to_float(row[9]),
+                                "imported": string_to_float(row[8]) if len(row) >= 9 else 0,
+                                "exported": string_to_float(row[9]) if len(row) >= 10 else 0,
                                 "soc": string_to_int(row[20]) if len(row) >= 23 else 0
                             }, f"bat{self.map_to_new_ids('bat')}": {
-                                "imported": string_to_float(row[8]),
-                                "exported": string_to_float(row[9]),
+                                "imported": string_to_float(row[8]) if len(row) >= 9 else 0,
+                                "exported": string_to_float(row[9]) if len(row) >= 10 else 0,
                                 "soc": string_to_int(row[20]) if len(row) >= 23 else 0
                             }})
                         # SmartHome Devices 1+2 with temperatures

From bc576faacf932432d71d23ee9220609c74c1d7b9 Mon Sep 17 00:00:00 2001
From: Thomas Papendieck <14850347+tpd-opitz@users.noreply.github.com>
Date: Tue, 10 Sep 2024 08:53:23 +0200
Subject: [PATCH 031/205] enhancement: show all available tibber prices in UI
 (#1814)

* do not cut prices list after 24 entries
---
 packages/control/optional.py                          | 3 +--
 packages/modules/electricity_tariffs/tibber/tariff.py | 7 +------
 2 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/packages/control/optional.py b/packages/control/optional.py
index 6b6f0d2f22..a4007408d1 100644
--- a/packages/control/optional.py
+++ b/packages/control/optional.py
@@ -116,8 +116,7 @@ def et_get_current_price(self):
         return self.data.et.get.prices[str(create_unix_timestamp_current_full_hour())]
 
     def et_get_loading_hours(self, duration: float, remaining_time: float) -> List[int]:
-        """ geht die Preise der nächsten 24h durch und liefert eine Liste der Uhrzeiten, zu denen geladen werden soll
-
+        """
         Parameter
         ---------
         duration: float
diff --git a/packages/modules/electricity_tariffs/tibber/tariff.py b/packages/modules/electricity_tariffs/tibber/tariff.py
index 311ec918c2..67513e6af7 100644
--- a/packages/modules/electricity_tariffs/tibber/tariff.py
+++ b/packages/modules/electricity_tariffs/tibber/tariff.py
@@ -30,18 +30,13 @@ def fetch_prices(config: TibberTariffConfiguration) -> Dict[int, float]:
         tomorrow_prices = _get_sorted_price_data(response_json, 'tomorrow')
         sorted_market_prices = today_prices + tomorrow_prices
         prices: Dict[int, float] = {}
-        i = 0
         for price_data in sorted_market_prices:
             # konvertiere Time-String (Format 2021-02-06T00:00:00+01:00) ()':' nicht von strptime unterstützt)
             time_str = ''.join(price_data['startsAt'].rsplit(':', 1))
             start_time_localized = datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S.%f%z')
             start_time_utc = int(start_time_localized.astimezone(timezone.utc).timestamp())
             if timecheck.create_unix_timestamp_current_full_hour() <= start_time_utc:
-                if i < 24:
-                    prices.update({start_time_utc: price_data['total'] / 1000})
-                    i += 1
-                else:
-                    break
+                prices.update({start_time_utc: price_data['total'] / 1000})
     else:
         error = response_json['errors'][0]['message']
         raise Exception(error)

From 57a43af605d477e585dc5b78c2cbe14d85900592 Mon Sep 17 00:00:00 2001
From: cshagen <cshagen@hagens.ch>
Date: Tue, 10 Sep 2024 12:39:14 +0200
Subject: [PATCH 032/205] Colors theme (web): Fixes and improvements (#1860)

* fixes and improvements
* fix energygraph colors for chargepoints
* fix chargepointlist width
* add inverter_secondary type
* link to manifest.json
---
 .../web_themes/colors/source/index.html       |   1 +
 .../web_themes/colors/source/package.json     |  30 +--
 .../colors/source/src/assets/js/model.ts      |   2 +-
 .../source/src/assets/js/processMessages.ts   |  29 ++-
 .../source/src/assets/js/themeConfig.ts       |  34 ++-
 .../colors/source/src/assets/js/types.ts      |  33 +--
 .../src/components/batteryList/BLBattery.vue  |  18 +-
 .../components/batteryList/BatteryList.vue    |   1 -
 .../src/components/buttonBar/BBSelect.vue     |   2 +-
 .../components/buttonBar/BbChargeButton.vue   |   3 +-
 .../chargePointList/CPChargePoint.vue         | 193 +++++++++++-------
 .../chargePointList/ChargePointList.vue       |  22 +-
 .../cpConfig/CPChargeConfig.vue               |   6 +-
 .../chargePointList/cpConfig/CPConfigPv.vue   |   2 +-
 .../src/components/chargePointList/model.ts   |  34 ++-
 .../chargePointList/processMessages.ts        |   8 +-
 .../components/inverterList/IlInverter.vue    |   4 +-
 .../components/powerGraph/PGSourceGraph.vue   |  17 +-
 .../components/powerGraph/PGUsageGraph.vue    |  27 ++-
 .../powerGraph/processDayGraphData.ts         |  13 +-
 .../src/components/powerMeter/PowerMeter.vue  |  51 +++--
 .../src/components/priceChart/PriceChart.vue  |  19 +-
 .../src/components/shared/BatterySymbol.vue   |  12 +-
 .../source/src/components/shared/WbBadge.vue  |   3 +
 .../colors/source/src/views/ColorsTheme.vue   |   8 +-
 .../colors/web/assets/index-B0iSk9lM.js       |   6 -
 .../colors/web/assets/index-BXxsmrtl.js       |   6 +
 ...{index-D3pPSkWs.css => index-DO1I-sJT.css} |   2 +-
 .../colors/web/assets/manifest-DEQalSKE.json  |  20 ++
 .../colors/web/assets/vendor-Cj6hjtXS.js      |  62 ++++++
 .../colors/web/assets/vendor-DS6WeUU7.js      |  62 ------
 .../modules/web_themes/colors/web/index.html  |   7 +-
 32 files changed, 434 insertions(+), 303 deletions(-)
 delete mode 100644 packages/modules/web_themes/colors/web/assets/index-B0iSk9lM.js
 create mode 100644 packages/modules/web_themes/colors/web/assets/index-BXxsmrtl.js
 rename packages/modules/web_themes/colors/web/assets/{index-D3pPSkWs.css => index-DO1I-sJT.css} (73%)
 create mode 100644 packages/modules/web_themes/colors/web/assets/manifest-DEQalSKE.json
 create mode 100644 packages/modules/web_themes/colors/web/assets/vendor-Cj6hjtXS.js
 delete mode 100644 packages/modules/web_themes/colors/web/assets/vendor-DS6WeUU7.js

diff --git a/packages/modules/web_themes/colors/source/index.html b/packages/modules/web_themes/colors/source/index.html
index 5750e06132..503e97c75a 100755
--- a/packages/modules/web_themes/colors/source/index.html
+++ b/packages/modules/web_themes/colors/source/index.html
@@ -22,6 +22,7 @@
 	<link rel="icon" type="image/png" sizes="16x16" href="/openWB/web/img/favicons/favicon-16x16.png">
 	<link rel="apple-touch-icon" sizes="57x57" href="/openWB/web/img/favicons/apple-touch-icon-57x57.png">
 	<link rel="apple-touch-icon" sizes="60x60" href="/openWB/web/img/favicons/apple-touch-icon-60x60.png">
+	<link rel="manifest" href="/openWB/web/manifest.json">
 	<title>openWB</title>
 </head>
 
diff --git a/packages/modules/web_themes/colors/source/package.json b/packages/modules/web_themes/colors/source/package.json
index 84094ebbf3..e3e5342c5f 100755
--- a/packages/modules/web_themes/colors/source/package.json
+++ b/packages/modules/web_themes/colors/source/package.json
@@ -17,35 +17,35 @@
     "@popperjs/core": "^2.11.8",
     "bootstrap": "^5.3.3",
     "d3": "^7.9.0",
-    "mqtt": "^5.7.2",
+    "mqtt": "^5.10.1",
     "process": "^0.11.10",
-    "swiper": "^11.1.4",
+    "swiper": "^11.1.12",
     "vue": "^3.3.4"
   },
   "devDependencies": {
-    "@babel/types": "^7.24.7",
+    "@babel/types": "^7.25.6",
     "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
     "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
-    "@rushstack/eslint-patch": "^1.10.3",
+    "@rushstack/eslint-patch": "^1.10.4",
     "@tsconfig/node20": "^20.1.4",
     "@types/bootstrap": "^5.2.10",
     "@types/d3": "^7.4.3",
-    "@types/node": "^20.14.7",
-    "@typescript-eslint/eslint-plugin": "^7.13.1",
-    "@typescript-eslint/parser": "^7.13.1",
-    "@vitejs/plugin-vue": "^5.0.5",
+    "@types/node": "^20.16.3",
+    "@typescript-eslint/eslint-plugin": "^7.18.0",
+    "@typescript-eslint/parser": "^7.18.0",
+    "@vitejs/plugin-vue": "^5.1.3",
     "@vue/eslint-config-prettier": "^9.0.0",
     "@vue/eslint-config-typescript": "^13.0.0",
     "@vue/tsconfig": "^0.5.1",
     "esbuild": "^0.21.5",
     "eslint": "^8.57.0",
-    "eslint-plugin-vue": "^9.26.0",
-    "npm-run-all2": "^6.2.0",
-    "prettier": "^3.3.2",
-    "rollup": "^4.18.0",
+    "eslint-plugin-vue": "^9.27.0",
+    "npm-run-all2": "^6.2.2",
+    "prettier": "^3.3.3",
+    "rollup": "^4.21.2",
     "rollup-plugin-polyfill-node": "^0.13.0",
-    "typescript": "^5.5.2",
-    "vite": "^5.3.1",
-    "vue-tsc": "^2.0.21"
+    "typescript": "^5.5.4",
+    "vite": "^5.4.2",
+    "vue-tsc": "^2.1.4"
   }
 }
diff --git a/packages/modules/web_themes/colors/source/src/assets/js/model.ts b/packages/modules/web_themes/colors/source/src/assets/js/model.ts
index 0c9198819e..ea269112ef 100644
--- a/packages/modules/web_themes/colors/source/src/assets/js/model.ts
+++ b/packages/modules/web_themes/colors/source/src/assets/js/model.ts
@@ -8,7 +8,7 @@
 // Components have their local model
 
 import { reactive, ref } from 'vue'
-import { GlobalData } from './types'
+import { GlobalData } from './themeConfig'
 import type { PowerItem, ItemProps } from './types'
 import { PvSystem } from './types'
 
diff --git a/packages/modules/web_themes/colors/source/src/assets/js/processMessages.ts b/packages/modules/web_themes/colors/source/src/assets/js/processMessages.ts
index 91e8752253..e5b50532b1 100755
--- a/packages/modules/web_themes/colors/source/src/assets/js/processMessages.ts
+++ b/packages/modules/web_themes/colors/source/src/assets/js/processMessages.ts
@@ -188,7 +188,7 @@ function processHierarchy(hierarchy: Hierarchy) {
 function processPvMessages(topic: string, message: string) {
 	const index = getIndex(topic)
 	if (index && !pvSystems.value.has(index)) {
-		console.warn('Creating PV system: ' + index)
+		// console.warn('Creating PV system: ' + index)
 		addPvSystem(index)
 	}
 	if (topic == 'openWB/pv/get/power') {
@@ -250,12 +250,33 @@ function processSystemMessages(topic: string, message: string) {
 		topic.match(/^openWB\/system\/device\/[0-9]+\/component\/[0-9]+\/config$/i)
 	) {
 		const config = JSON.parse(message)
-		if (
+		switch (config.type) {
+			case 'counter':
+			case 'consumption_counter':
+				if (counters[config.id]) {
+					counters[config.id].name = config.name
+			}
+				break
+			case 'inverter':
+			case 'inverter_secondary':
+				if (!pvSystems.value.has(config.id)) {
+					pvSystems.value.set(config.id, new PvSystem(config.id))
+				}
+				pvSystems.value.get(config.id)!.name = config.name
+				break
+			case 'bat':
+				if (!batteries.value.has(config.id)) {
+					addBattery(config.id)
+				}
+				batteries.value.get(config.id)!.name = config.name	
+		}
+		
+	/* 	if (
 			(config.type == 'counter' || config.type == 'consumption_counter') &&
 			counters[config.id]
 		) {
 			counters[config.id].name = config.name
-		} else if (config.type == 'inverter') {
+		} else if (config.type == 'inverter' ) {
 			if (!pvSystems.value.has(config.id)) {
 				pvSystems.value.set(config.id, new PvSystem(config.id))
 			}
@@ -265,7 +286,7 @@ function processSystemMessages(topic: string, message: string) {
 				addBattery(config.id)
 			}
 			batteries.value.get(config.id)!.name = config.name
-		}
+		} */
 	}
 }
 
diff --git a/packages/modules/web_themes/colors/source/src/assets/js/themeConfig.ts b/packages/modules/web_themes/colors/source/src/assets/js/themeConfig.ts
index 4bf93b2a8b..ff02e05393 100644
--- a/packages/modules/web_themes/colors/source/src/assets/js/themeConfig.ts
+++ b/packages/modules/web_themes/colors/source/src/assets/js/themeConfig.ts
@@ -6,11 +6,14 @@
 
 import { computed, reactive } from 'vue'
 import { select } from 'd3'
-import type { ChargeModeInfo } from './types'
+import { ChargeMode, type ChargeModeInfo } from './types'
 import { addShDevice, shDevices } from '@/components/smartHome/model'
-import { ChargeMode, vehicles } from '@/components/chargePointList/model'
 import { sourceSummary } from './model'
-import { sourceGraphIsNotInitialized, usageGraphIsNotInitialized } from '@/components/powerGraph/model'
+import {
+	sourceGraphIsNotInitialized,
+	usageGraphIsNotInitialized,
+} from '@/components/powerGraph/model'
+import { updateServer } from './sendMessages'
 export class Config {
 	private _showRelativeArcs = false
 	showTodayGraph = true
@@ -241,7 +244,6 @@ export class Config {
 	}
 	set showStandardVehicle(show: boolean) {
 		this._showStandardVehicle = show
-		vehicles[0].visible = show
 		savePrefs()
 	}
 	setShowStandardVehicle(show: boolean) {
@@ -334,6 +336,30 @@ export const chargemodes: { [key: string]: ChargeModeInfo } = {
 		icon: 'fa-bolt',
 	},
 }
+export class GlobalData {
+	batterySoc = 0
+	isBatteryConfigured = true
+	chargeMode = '0'
+	private _pvBatteryPriority = 'ev_mode' // 'ev_mode' | 'bat_mode' | 'min_soc_bat_mode'
+	displayLiveGraph = true
+	isEtEnabled = true
+	etMaxPrice = 0
+	etCurrentPrice = 0
+	cpDailyExported = 0
+	evuId = 0
+	etProvider = ''
+	get pvBatteryPriority() {
+		return this._pvBatteryPriority
+	}
+	set pvBatteryPriority(prio: string) {
+		this._pvBatteryPriority = prio
+		updateServer('pvBatteryPriority', prio)
+	}
+	updatePvBatteryPriority(prio: string) {
+		this._pvBatteryPriority = prio
+	}
+}
+
 // methods
 export function savePrefs() {
 	writeCookie()
diff --git a/packages/modules/web_themes/colors/source/src/assets/js/types.ts b/packages/modules/web_themes/colors/source/src/assets/js/types.ts
index b1f51ecc4e..06f354ed25 100644
--- a/packages/modules/web_themes/colors/source/src/assets/js/types.ts
+++ b/packages/modules/web_themes/colors/source/src/assets/js/types.ts
@@ -5,8 +5,6 @@
  */
 
 // Type definitions for all components
-import { updateServer } from '@/assets/js/sendMessages'
-import { ChargeMode } from '@/components/chargePointList/model'
 
 export class ShDevice implements PowerItem {
 	id: number
@@ -26,35 +24,18 @@ export class ShDevice implements PowerItem {
 	}
 }
 
-export class GlobalData {
-	batterySoc = 0
-	isBatteryConfigured = true
-	chargeMode = '0'
-	private _pvBatteryPriority = 'ev_mode' // 'ev_mode' | 'bat_mode' | 'min_soc_bat_mode'
-	displayLiveGraph = true
-	isEtEnabled = true
-	etMaxPrice = 0
-	etCurrentPrice = 0
-	cpDailyExported = 0
-	evuId = 0
-	etProvider = ''
-	get pvBatteryPriority() {
-		return this._pvBatteryPriority
-	}
-	set pvBatteryPriority(prio: string) {
-		this._pvBatteryPriority = prio
-		updateServer('pvBatteryPriority', prio)
-	}
-	updatePvBatteryPriority(prio: string) {
-		this._pvBatteryPriority = prio
-	}
-}
-
 export interface Hierarchy {
 	id: number
 	type: string
 	children: [Hierarchy]
 }
+export enum ChargeMode {
+	instant_charging = 'instant_charging',
+	pv_charging = 'pv_charging',
+	scheduled_charging = 'scheduled_charging',
+	standby = 'standby',
+	stop = 'stop',
+}
 
 export interface ChargeModeInfo {
 	mode: ChargeMode
diff --git a/packages/modules/web_themes/colors/source/src/components/batteryList/BLBattery.vue b/packages/modules/web_themes/colors/source/src/components/batteryList/BLBattery.vue
index d3616321d3..326a0d2f76 100755
--- a/packages/modules/web_themes/colors/source/src/components/batteryList/BLBattery.vue
+++ b/packages/modules/web_themes/colors/source/src/components/batteryList/BLBattery.vue
@@ -10,20 +10,20 @@ Hagen */
 			<WbBadge :bgcolor="statusbg">{{ batteryState }}</WbBadge>
 		</template>
 		<div class="subgrid pt-1">
+			<InfoItem heading="Ladestand:" :small="true" class="grid-left grid-col-4">
+				<BatterySymbol :soc="props.bat.soc"></BatterySymbol>
+			</InfoItem>
+
+			<InfoItem heading="Geladen:" :small="true" class="grid-col-4">
+				<FormatWattH :watt-h="props.bat.dailyYieldImport"></FormatWattH>
+			</InfoItem>
 			<InfoItem
-				heading="Ladestand:"
+				heading="Geliefert:"
 				:small="true"
-				class="grid-left grid-col-4"
+				class="grid-right grid-col-4"
 			>
-				<BatterySymbol :soc="props.bat.soc"></BatterySymbol>
-			</InfoItem>
-			<InfoItem heading="Geliefert:" :small="true" class="grid-col-4">
 				<FormatWattH :watt-h="props.bat.dailyYieldExport"></FormatWattH>
 			</InfoItem>
-			<InfoItem heading="Geladen:" :small="true" class="grid-right grid-col-4">
-				<FormatWattH :watt-h="props.bat.dailyYieldImport"></FormatWattH>
-			</InfoItem>
-			
 		</div>
 	</WbSubwidget>
 </template>
diff --git a/packages/modules/web_themes/colors/source/src/components/batteryList/BatteryList.vue b/packages/modules/web_themes/colors/source/src/components/batteryList/BatteryList.vue
index 2db25ca77a..5201342a18 100755
--- a/packages/modules/web_themes/colors/source/src/components/batteryList/BatteryList.vue
+++ b/packages/modules/web_themes/colors/source/src/components/batteryList/BatteryList.vue
@@ -61,7 +61,6 @@ const batteryState = computed(() => {
 	}
 })
 
-
 const statusbg = computed(() => {
 	return sourceSummary.batOut.power > 0
 		? 'var(--color-pv)'
diff --git a/packages/modules/web_themes/colors/source/src/components/buttonBar/BBSelect.vue b/packages/modules/web_themes/colors/source/src/components/buttonBar/BBSelect.vue
index 9158992211..9e1aafd653 100755
--- a/packages/modules/web_themes/colors/source/src/components/buttonBar/BBSelect.vue
+++ b/packages/modules/web_themes/colors/source/src/components/buttonBar/BBSelect.vue
@@ -103,7 +103,7 @@
 <script setup lang="ts">
 import { computed } from 'vue'
 import { globalData } from '@/assets/js/model'
-import type { ChargeMode } from '../chargePointList/model'
+import { ChargeMode } from '@/assets/js/types'
 import { chargePoints } from '@/components/chargePointList/model'
 
 const props = defineProps<{
diff --git a/packages/modules/web_themes/colors/source/src/components/buttonBar/BbChargeButton.vue b/packages/modules/web_themes/colors/source/src/components/buttonBar/BbChargeButton.vue
index a621501f52..fcfa6dcf5a 100644
--- a/packages/modules/web_themes/colors/source/src/components/buttonBar/BbChargeButton.vue
+++ b/packages/modules/web_themes/colors/source/src/components/buttonBar/BbChargeButton.vue
@@ -54,7 +54,8 @@ Hagen */
 
 <script setup lang="ts">
 import { globalData } from '@/assets/js/model'
-import { ChargePoint, ChargeMode } from '@/components/chargePointList/model'
+import { ChargePoint } from '@/components/chargePointList/model'
+import { ChargeMode } from '@/assets/js/types'
 import { chargemodes } from '@/assets/js/themeConfig'
 import { computed } from 'vue'
 import { formatWatt } from '@/assets/js/helpers'
diff --git a/packages/modules/web_themes/colors/source/src/components/chargePointList/CPChargePoint.vue b/packages/modules/web_themes/colors/source/src/components/chargePointList/CPChargePoint.vue
index 66e96f0596..a17c9bb4bb 100755
--- a/packages/modules/web_themes/colors/source/src/components/chargePointList/CPChargePoint.vue
+++ b/packages/modules/web_themes/colors/source/src/components/chargePointList/CPChargePoint.vue
@@ -21,7 +21,7 @@
 		<template #buttons>
 			<span
 				type="button"
-				class="ms-2 ps-5 pt-1"
+				class="ms-2 ps-1 pt-1"
 				:style="modePillStyle"
 				@click="configmode = !configmode"
 			>
@@ -39,44 +39,10 @@
 						{{ statusString }}
 					</span>
 				</InfoItem>
-
 				<!-- Ladung -->
-				<InfoItem heading="Geladen:" class="grid-col-4">
+				<InfoItem heading="Geladen:" class="grid-col-4 grid-left">
 					<FormatWattH :watt-h="chargepoint.dailyYield" />
 				</InfoItem>
-				<!-- geladene Reichweite-->
-				<InfoItem heading="gel. Reichw.:" class="grid-col-4 grid-right">
-					{{ chargedRangeString }}
-				</InfoItem>
-				<!-- Leistung -->
-				<InfoItem
-					v-if="props.chargepoint.power > 0"
-					heading="Leistung:"
-					class="grid-col-3 grid-left"
-				>
-					<FormatWatt :watt="props.chargepoint.power" />
-				</InfoItem>
-				<InfoItem
-					v-if="props.chargepoint.power > 0"
-					heading="Strom:"
-					class="grid-col-3"
-				>
-					{{ realChargeAmpereString }}
-				</InfoItem>
-				<InfoItem
-					v-if="props.chargepoint.power > 0"
-					heading="Phasen:"
-					class="grid-col-3"
-				>
-					{{ props.chargepoint.phasesInUse }}
-				</InfoItem>
-				<InfoItem
-					v-if="props.chargepoint.power > 0"
-					heading="Sollstrom:"
-					class="grid-col-3 grid-right"
-				>
-					<span class="targetCurrent">{{ chargeAmpereString }}</span>
-				</InfoItem>
 			</div>
 		</div>
 		<div v-if="configmode" class="row m-0 mt-0 p-0">
@@ -92,18 +58,49 @@
 			<div v-if="!configmode">
 				<div class="row" @click="configmode = !configmode">
 					<div class="col">
-						<h3>
-							<i class="fa-solid fa-sm fa-car me-2" />
-							{{ chargepoint.vehicleName }}
-							<span
-								v-if="chargepoint.hasPriority"
-								class="me-1 fa-solid fa-xs fa-star ps-1"
-							/>
-							<span
-								v-if="chargepoint.etActive"
-								class="me-0 fa-solid fa-xs fa-coins ps-0"
-							/>
-						</h3>
+						<div
+							class="carTitleLine d-flex justify-content-between align-items-center"
+						>
+							<h3>
+								<i class="fa-solid fa-sm fa-car me-2" />
+								{{ chargepoint.vehicleName }}
+								<span
+									v-if="chargepoint.hasPriority"
+									class="me-1 fa-solid fa-xs fa-star ps-1"
+								/>
+								<span
+									v-if="chargepoint.etActive"
+									class="me-1 fa-solid fa-xs fa-coins ps-0"
+								/>
+								<span
+									v-if="chargepoint.timedCharging"
+									class="me-0 fa-solid fa-xs fa-clock ps-1"
+								/>
+							</h3>
+							<WbBadge :bgcolor="batcolor">
+								<BatterySymbol
+									:soc="soc"
+									color="var(--color-bg)"
+									class="me-2"
+								/>
+								<i
+									v-if="chargepoint.isSocConfigured && chargepoint.isSocManual"
+									class="fa-solid fa-sm fas fa-edit"
+									:style="{ color: 'var(--color-menu)' }"
+									@click="editSoc = !editSoc"
+								/>
+
+								<i
+									v-if="chargepoint.isSocConfigured && !chargepoint.isSocManual"
+									type="button"
+									class="fa-solid fa-sm"
+									:class="
+										chargepoint.waitingForSoc ? 'fa-spinner fa-spin' : 'fa-sync'
+									"
+									@click="loadSoc"
+								/>
+							</WbBadge>
+						</div>
 					</div>
 				</div>
 				<div class="grid12">
@@ -125,34 +122,59 @@
 						"
 					/>
 					<!-- Car info -->
+					<!-- Leistung -->
 					<InfoItem
-						v-if="chargepoint.isSocConfigured"
-						heading="Ladestand:"
-						class="grid-col-4 grid-left"
+						v-if="props.chargepoint.power > 0"
+						heading="Leistung:"
+						class="grid-col-3 grid-left mb-3"
 					>
-						<BatterySymbol :soc="soc" class="me-2" />
-						<i
-							v-if="chargepoint.isSocConfigured && chargepoint.isSocManual"
-							class="fa-solid fa-sm fas fa-edit"
-							:style="{ color: 'var(--color-menu)' }"
-							@click="editSoc = !editSoc"
-						/>
+						<span style="color: var(--color-charging)">
+							<FormatWatt :watt="props.chargepoint.power" /> </span
+					></InfoItem>
+					<InfoItem
+						v-if="props.chargepoint.power > 0"
+						heading="Strom:"
+						class="grid-col-3"
+					>
+						<span style="color: var(--color-charging)">
+							{{ realChargeAmpereString }}
+						</span>
+					</InfoItem>
+					<InfoItem
+						v-if="props.chargepoint.power > 0"
+						heading="Phasen:"
+						class="grid-col-3"
+					>
+						<span style="color: var(--color-charging)">
+							{{ props.chargepoint.phasesInUse }}
+						</span>
+					</InfoItem>
+					<InfoItem
+						v-if="props.chargepoint.power > 0"
+						heading="Sollstrom:"
+						class="grid-col-3 grid-right"
+					>
+						<span class="targetCurrent">{{ chargeAmpereString }}</span>
+					</InfoItem>
 
-						<i
-							v-if="chargepoint.isSocConfigured && !chargepoint.isSocManual"
-							type="button"
-							class="fa-solid fa-sm"
-							:class="
-								chargepoint.waitingForSoc ? 'fa-spinner fa-spin' : 'fa-sync'
-							"
-							:style="{ color: 'var(--color-menu)' }"
-							@click="loadSoc"
-						/>
+					<!-- Ladung -->
+					<!-- <InfoItem heading="Geladen:" class="grid-col-4 grid-left">
+						<FormatWattH :watt-h="chargepoint.dailyYield" />
+					</InfoItem>
+					 --><!-- geladene Reichweite-->
+					<InfoItem heading="letzte Ladung:" class="grid-col-4 grid-left">
+						<FormatWattH
+							:watt-h="Math.max(chargepoint.chargedSincePlugged, 0)"
+						></FormatWattH>
+					</InfoItem>
+					<InfoItem heading="gel. Reichw.:" class="grid-col-4">
+						{{ chargedRangeString }}
 					</InfoItem>
+
 					<InfoItem
 						v-if="chargepoint.isSocConfigured"
 						heading="Reichweite:"
-						class="grid-col-4"
+						class="grid-col-4 grid-right"
 					>
 						{{
 							vehicles[props.chargepoint.connectedVehicle]
@@ -161,13 +183,10 @@
 						}}
 						km
 					</InfoItem>
-					<InfoItem heading="Zeitplan:" class="grid-col-4 grid-right">
-						<span
-							v-if="chargepoint.timedCharging"
-							class="me-1 fa-solid fa-xs fa-clock ps-1"
-						/>
+					<!-- <InfoItem heading="Zeitplan:" class="grid-col-4 grid-right">
+						<span v-if="chargepoint.timedCharging" class="me-1 fa-solid fa-xs fa-clock ps-1" />
 						{{ props.chargepoint.timedCharging ? 'Ja' : 'Nein' }}
-					</InfoItem>
+					</InfoItem> -->
 
 					<div
 						v-if="editSoc"
@@ -195,6 +214,7 @@
 						/>
 					</div>
 					<!-- ET Information -->
+					<hr class="divider grid-col-12" />
 					<InfoItem
 						v-if="etData.active"
 						heading="Preisladen:"
@@ -290,6 +310,7 @@ import FormatWatt from '@/components/shared/FormatWatt.vue'
 import FormatWattH from '../shared/FormatWattH.vue'
 import RadioBarInput from '@/components/shared/RadioBarInput.vue'
 import WbWidgetFlex from '../shared/WbWidgetFlex.vue'
+import WbBadge from '../shared/WbBadge.vue'
 import { updateServer } from '@/assets/js/sendMessages'
 import RangeInput from '../shared/RangeInput.vue'
 import PriceChart from '../priceChart/PriceChart.vue'
@@ -337,7 +358,7 @@ const chargedRangeString = computed(() => {
 			props.chargepoint.rangeUnit
 		)
 	} else {
-		return '0'
+		return '0 km'
 	}
 })
 const statusString = computed(() => {
@@ -395,6 +416,15 @@ const currentPriceStyle = computed(() => {
 		? { color: 'var(--color-charging)' }
 		: { color: 'var(--color-menu)' }
 })
+const batcolor = computed(() => {
+	if (props.chargepoint.soc < 20) {
+		return 'var(--color-evu)'
+	} else if (props.chargepoint.soc >= 80) {
+		return 'var(--color-pv)'
+	} else {
+		return 'var(--color-battery)'
+	}
+})
 const configmode = ref(false)
 const editSoc = ref(false)
 function loadSoc() {
@@ -427,7 +457,7 @@ const editPrice = ref(false)
 }
 
 .fa-clock {
-	color: var(--color-battery);
+	color: var(--color-charging);
 }
 
 .fa-car {
@@ -474,9 +504,18 @@ const editPrice = ref(false)
 	grid-template-columns: repeat(12, auto);
 	justify-content: space-between;
 }
+
 .errorWbBadge {
 	color: var(--color-bg);
 	background-color: var(--color-evu);
 	font-size: var(--font-small);
 }
+
+.divider {
+	color: var(--color-fg);
+}
+
+.blue {
+	color: var(--color-charging);
+}
 </style>
diff --git a/packages/modules/web_themes/colors/source/src/components/chargePointList/ChargePointList.vue b/packages/modules/web_themes/colors/source/src/components/chargePointList/ChargePointList.vue
index f28f626e2c..568986fdb0 100755
--- a/packages/modules/web_themes/colors/source/src/components/chargePointList/ChargePointList.vue
+++ b/packages/modules/web_themes/colors/source/src/components/chargePointList/ChargePointList.vue
@@ -1,11 +1,11 @@
 <template>
 	<swiper-container
-		v-if="!props.shortlist"
+		v-if="!props.compact"
 		:space-between="0"
 		:slides-per-view="1"
 		:pagination="{ clickable: true }"
-		class="cplist m-0 p-0 swiper-chargepoints d-flex align-items-stretch"
-		:class="totalWidth"
+		class="cplist m-0 p-0 d-flex align-items-stretch"
+		:class="cplistclasses" 
 	>
 		<swiper-slide
 			v-for="chargepoint in chargepointsToDisplay"
@@ -19,7 +19,7 @@
 			</div>
 		</swiper-slide>
 	</swiper-container>
-	<CpSimpleList2 v-if="props.shortlist" />
+	<CpSimpleList2 v-if="props.compact" />
 </template>
 
 <script setup lang="ts">
@@ -37,7 +37,8 @@ let swiper: Swiper
 let swiperEl: SwiperContainer
 //props
 const props = defineProps<{
-	shortlist: boolean
+	id: string
+	compact: boolean
 }>()
 
 const chargepointsToDisplay = computed(() => {
@@ -45,7 +46,9 @@ const chargepointsToDisplay = computed(() => {
 	updateLayout()
 	return cpArray
 })
-
+const cplistclasses = computed(() => {
+	return (totalWidth.value + ' ' + widgetId.value)
+})
 const totalWidth = computed(() => {
 	switch (Object.values(chargePoints).length) {
 		case 0:
@@ -58,9 +61,12 @@ const totalWidth = computed(() => {
 			return 'col-lg-12'
 	}
 })
+const widgetId = computed(()=> {
+	return 'swiper-chargepoints-'+props.id
+})
 function updateLayout() {
 	// update swiper layout
-	let tmp = document.querySelector('.swiper-chargepoints')
+	let tmp = document.querySelector('.'+ widgetId.value)
 	if (tmp) {
 		swiperEl = tmp as SwiperContainer
 		swiper = swiperEl.swiper
@@ -86,7 +92,7 @@ function updateLayout() {
 }
 
 onMounted(() => {
-	let tmp = document.querySelector('.swiper-chargepoints')
+	let tmp = document.querySelector('.'+ widgetId.value)
 	if (tmp) {
 		swiperEl = tmp as SwiperContainer
 		swiper = swiperEl.swiper
diff --git a/packages/modules/web_themes/colors/source/src/components/chargePointList/cpConfig/CPChargeConfig.vue b/packages/modules/web_themes/colors/source/src/components/chargePointList/cpConfig/CPChargeConfig.vue
index d306c2ab25..0998e3b47a 100755
--- a/packages/modules/web_themes/colors/source/src/components/chargePointList/cpConfig/CPChargeConfig.vue
+++ b/packages/modules/web_themes/colors/source/src/components/chargePointList/cpConfig/CPChargeConfig.vue
@@ -30,7 +30,11 @@
 	>
 		<RadioInput
 			v-model.number="cp.connectedVehicle"
-			:options="Object.values(vehicles).map((v) => [v.name, v.id])"
+			:options="
+				Object.values(vehicles)
+					.filter((v) => v.visible)
+					.map((v) => [v.name, v.id])
+			"
 		/>
 	</ConfigItem>
 	<ConfigItem
diff --git a/packages/modules/web_themes/colors/source/src/components/chargePointList/cpConfig/CPConfigPv.vue b/packages/modules/web_themes/colors/source/src/components/chargePointList/cpConfig/CPConfigPv.vue
index 0e360ba32a..12240501fc 100755
--- a/packages/modules/web_themes/colors/source/src/components/chargePointList/cpConfig/CPConfigPv.vue
+++ b/packages/modules/web_themes/colors/source/src/components/chargePointList/cpConfig/CPConfigPv.vue
@@ -8,7 +8,7 @@
 			icon="fa-battery-three-quarters"
 			:fullwidth="true"
 		>
-			<SwitchInput id="limitSoc" v-model="limitSoc" model-value="limitSoc" />
+			<SwitchInput id="limitSoc" v-model="limitSoc" />
 		</ConfigItem>
 		<ConfigItem
 			v-if="limitSoc"
diff --git a/packages/modules/web_themes/colors/source/src/components/chargePointList/model.ts b/packages/modules/web_themes/colors/source/src/components/chargePointList/model.ts
index 9ceda5729d..2a9d4ad4a1 100755
--- a/packages/modules/web_themes/colors/source/src/components/chargePointList/model.ts
+++ b/packages/modules/web_themes/colors/source/src/components/chargePointList/model.ts
@@ -1,6 +1,8 @@
 import { reactive } from 'vue'
 import { updateServer } from '@/assets/js/sendMessages'
-import type { PowerItem } from '@/assets/js/types'
+import { ChargeMode, type PowerItem } from '@/assets/js/types'
+import { globalConfig } from '@/assets/js/themeConfig'
+import { masterData } from '@/assets/js/model'
 export class ChargePoint {
 	id: number
 	name = 'Ladepunkt'
@@ -245,7 +247,6 @@ export class ChargePoint {
 		return vehicles[this.connectedVehicle].etMaxPrice ?? 0
 	}
 	set etMaxPrice(newPrice: number) {
-		console.log('Setting et max price needs to be implemented')
 		updateServer('cpEtMaxPrice', Math.round(newPrice * 10) / 1000000, this.id)
 	}
 	toPowerItem(): PowerItem {
@@ -264,19 +265,15 @@ export class ChargePoint {
 }
 export class Vehicle {
 	id: number
-	name = ''
-	visible = true
-	private _chargeTemplateId = 0
-	private _evTemplateId = 0
+	name = '__invalid'
 	tags: Array<string> = []
 	config = {}
 	soc = 0
 	range = 0
-	private _etActive = false
-	private _etMaxPrice = 20
 	constructor(index: number) {
 		this.id = index
 	}
+	private _chargeTemplateId = 0
 	get chargeTemplateId() {
 		return this._chargeTemplateId
 	}
@@ -287,6 +284,7 @@ export class Vehicle {
 	updateChargeTemplateId(id: number) {
 		this._chargeTemplateId = id
 	}
+	private _evTemplateId = 0
 	get evTemplateId() {
 		return this._evTemplateId
 	}
@@ -307,8 +305,6 @@ export class Vehicle {
 	set etActive(val) {
 		if (chargeTemplates[this.chargeTemplateId]) {
 			updateServer('priceCharging', val, this.chargeTemplateId)
-
-			// openWB/set/vehicle/template/charge_template/2/et/active -> false
 		}
 	}
 	get etMaxPrice() {
@@ -326,6 +322,12 @@ export class Vehicle {
 		}
 		return undefined
 	}
+	get visible(): boolean {
+		return (
+			this.name != '__invalid' &&
+			(this.id != 0 || globalConfig.showStandardVehicle)
+		)
+	}
 }
 export interface ConnectedVehicleConfig {
 	average_consumption: number
@@ -335,13 +337,6 @@ export interface ConnectedVehicleConfig {
 	ev_template: number
 	priority: boolean
 }
-export enum ChargeMode {
-	instant_charging = 'instant_charging',
-	pv_charging = 'pv_charging',
-	scheduled_charging = 'scheduled_charging',
-	standby = 'standby',
-	stop = 'stop',
-}
 export interface ChargeTimePlan {
 	active: boolean
 	frequency: {
@@ -433,8 +428,11 @@ export const evTemplates: { [key: number]: EvTemplate } = reactive({})
 export function addChargePoint(chargePointIndex: number) {
 	if (!(chargePointIndex in chargePoints)) {
 		chargePoints[chargePointIndex] = new ChargePoint(chargePointIndex)
-		chargePoints[chargePointIndex].color =
+		const cpcolor =
 			'var(--color-cp' + (Object.values(chargePoints).length - 1) + ')'
+		chargePoints[chargePointIndex].color = cpcolor
+
+		masterData['cp' + chargePointIndex].color = cpcolor
 		// console.info('Added chargepoint ' + chargePointIndex)
 	} else {
 		// console.info('Duplicate chargepoint message: ' + chargePointIndex)
diff --git a/packages/modules/web_themes/colors/source/src/components/chargePointList/processMessages.ts b/packages/modules/web_themes/colors/source/src/components/chargePointList/processMessages.ts
index 832e2e5961..7f806d5b6d 100755
--- a/packages/modules/web_themes/colors/source/src/components/chargePointList/processMessages.ts
+++ b/packages/modules/web_themes/colors/source/src/components/chargePointList/processMessages.ts
@@ -5,7 +5,6 @@ import {
 	chargeTemplates,
 	evTemplates,
 	Vehicle,
-	ChargeMode,
 	type ChargeTimePlan,
 	scheduledChargingPlans,
 	timeChargingPlans,
@@ -16,7 +15,7 @@ import type {
 	EvTemplate,
 	ChargeSchedule,
 } from './model'
-import { globalConfig } from '@/assets/js/themeConfig'
+import { ChargeMode } from '@/assets/js/types'
 
 export function processChargepointMessages(topic: string, message: string) {
 	const index = getIndex(topic)
@@ -142,11 +141,8 @@ export function processVehicleMessages(topic: string, message: string) {
 	if (index != undefined) {
 		if (!(index in vehicles)) {
 			const v = new Vehicle(index)
-			if (index == 0 && !globalConfig.showStandardVehicle) {
-				v.visible = false
-			}
 			vehicles[index] = v
-			console.info('New vehicle created: ' + index)
+			// console.info('New vehicle created: ' + index)
 		}
 		if (topic.match(/^openwb\/vehicle\/[0-9]+\/name$/i)) {
 			// set car Name for charge point
diff --git a/packages/modules/web_themes/colors/source/src/components/inverterList/IlInverter.vue b/packages/modules/web_themes/colors/source/src/components/inverterList/IlInverter.vue
index 279b7e946f..0065b46268 100755
--- a/packages/modules/web_themes/colors/source/src/components/inverterList/IlInverter.vue
+++ b/packages/modules/web_themes/colors/source/src/components/inverterList/IlInverter.vue
@@ -11,10 +11,10 @@
 			</WbBadge>
 		</template>
 		<div class="subgrid pt-1">
-			<InfoItem heading="Heute:" :small="false" class="grid-col-4">
+			<InfoItem heading="Heute:" :small="false" class="grid-col-4 grid-left">
 				<FormatWattH :watt-h="props.inverter.energy"></FormatWattH>
 			</InfoItem>
-			<InfoItem heading="Monat:" :small="false" class="grid-right grid-col-4">
+			<InfoItem heading="Monat:" :small="false" class="grid-col-4">
 				<FormatWattH :watt-h="props.inverter.energy_month"></FormatWattH>
 			</InfoItem>
 			<InfoItem heading="Jahr:" :small="false" class="grid-right grid-col-4">
diff --git a/packages/modules/web_themes/colors/source/src/components/powerGraph/PGSourceGraph.vue b/packages/modules/web_themes/colors/source/src/components/powerGraph/PGSourceGraph.vue
index 529ccc72f4..7665b7da8f 100755
--- a/packages/modules/web_themes/colors/source/src/components/powerGraph/PGSourceGraph.vue
+++ b/packages/modules/web_themes/colors/source/src/components/powerGraph/PGSourceGraph.vue
@@ -1,7 +1,10 @@
 <template>
 	<g
-id="pgSourceGraph" :origin="draw" :origin2="autozoom"
-		:transform="'translate(' + margin.left + ',' + margin.top + ')'" />
+		id="pgSourceGraph"
+		:origin="draw"
+		:origin2="autozoom"
+		:transform="'translate(' + margin.left + ',' + margin.top + ')'"
+	/>
 </template>
 
 <script setup lang="ts">
@@ -106,7 +109,9 @@ const keysToUse = computed(() => {
 						list.push(element)
 					}
 					return list
-				}, [])
+				},
+				[],
+			)
 		}
 	}
 	switch (graphData.graphMode) {
@@ -117,11 +122,13 @@ const keysToUse = computed(() => {
 				return ['selfUsage', 'evuOut', 'batOut', 'evuIn']
 			}
 		case 'today':
-		case 'day':			
+		case 'day':
 			additionalKeys.forEach((key, i) => {
 				colors[key] = 'var(--color-pv' + (i + 1) + ')'
 			})
-			return (globalConfig.showInverters) ? [...additionalKeys, ...k] : ['selfUsage', 'evuOut', 'batOut', 'evuIn']
+			return globalConfig.showInverters
+				? [...additionalKeys, ...k]
+				: ['selfUsage', 'evuOut', 'batOut', 'evuIn']
 		default:
 			return ['evuIn', 'batOut', 'selfUsage', 'evuOut']
 	}
diff --git a/packages/modules/web_themes/colors/source/src/components/powerGraph/PGUsageGraph.vue b/packages/modules/web_themes/colors/source/src/components/powerGraph/PGUsageGraph.vue
index fbaceb5e45..a1be410916 100755
--- a/packages/modules/web_themes/colors/source/src/components/powerGraph/PGUsageGraph.vue
+++ b/packages/modules/web_themes/colors/source/src/components/powerGraph/PGUsageGraph.vue
@@ -29,6 +29,7 @@ import {
 	xScale,
 	zoomedRange,
 } from './model'
+import { chargePoints } from '../chargePointList/model'
 const props = defineProps<{
 	width: number
 	height: number
@@ -37,18 +38,20 @@ const props = defineProps<{
 }>()
 
 //state
-const keys = computed (() => {
+const keys = computed(() => {
 	if (globalConfig.showInverters) {
 		return [
-	['house', 'charging', 'devices', 'batIn'],
-	['charging', 'devices', 'house', 'batIn'],
-	['devices', 'charging', 'house', 'batIn'],
-	]
+			['house', 'charging', 'devices', 'batIn'],
+			['charging', 'devices', 'batIn', 'house'],
+			['devices', 'batIn', 'charging', 'house'],
+			['batIn', 'charging', 'house', 'devices'],
+		]
 	} else {
 		return [
-		['house', 'charging', 'devices', 'batIn', 'evuOut'],
-		['charging', 'devices', 'house', 'batIn', 'evuOut'],
-		['devices', 'charging', 'house', 'batIn', 'evuOut'],
+			['house', 'charging', 'devices', 'batIn', 'evuOut'],
+			['charging', 'devices', 'batIn', 'house', 'evuOut'],
+			['devices', 'batIn', 'charging', 'house', 'evuOut'],
+			['batIn', 'charging', 'house', 'devices', 'evuOut'],
 		]
 	}
 })
@@ -123,7 +126,11 @@ const yScale = computed(() => {
 })
 
 const keysToUse = computed(() => {
-	if (graphData.graphMode != 'today' && graphData.graphMode != 'day') {
+	if (
+		graphData.graphMode != 'today' &&
+		graphData.graphMode != 'day' &&
+		graphData.graphMode != 'live'
+	) {
 		return keys.value[props.stackOrder]
 	} else {
 		const k = keys.value[props.stackOrder].slice()
@@ -144,7 +151,7 @@ const keysToUse = computed(() => {
 		}
 		additionalKeys.forEach((key, i) => {
 			k.splice(idx + i, 0, key)
-			colors[key] = 'var(--color-cp' + i + ')'
+			colors[key] = chargePoints[+key.slice(2)]?.color ?? 'black'
 		})
 		if (globalConfig.showInverters) {
 			k.push('evuOut')
diff --git a/packages/modules/web_themes/colors/source/src/components/powerGraph/processDayGraphData.ts b/packages/modules/web_themes/colors/source/src/components/powerGraph/processDayGraphData.ts
index 3d861230de..d8e3457f62 100755
--- a/packages/modules/web_themes/colors/source/src/components/powerGraph/processDayGraphData.ts
+++ b/packages/modules/web_themes/colors/source/src/components/powerGraph/processDayGraphData.ts
@@ -25,9 +25,6 @@ const noAutarchyCalculation = [
 let gridCounters: string[] = []
 
 export function processDayGraphMessages(topic: string, message: string) {
-	//const inputTable: RawDayGraphDataItem[] = JSON.parse(message).entries
-	//const energyValues: RawDayGraphDataItem = JSON.parse(message).totals
-	//const itemNames = JSON.parse(message).itemNames
 	const {
 		entries: inputTable,
 		names: itemNames2,
@@ -119,23 +116,29 @@ function transformRow(currentRow: RawDayGraphDataItem): GraphDataItem {
 	})
 	// Devices
 	currentItem.devices = 0
+	let shEnergyToBeExtractedFromHouse = 0
 	Object.entries(currentRow.sh).forEach(([id, values]) => {
 		if (id != 'all') {
 			currentItem[id] = values.power_imported ?? 0
-			currentItem.devices += values.power_imported ?? 0
 			if (!historicSummary.keys().includes(id)) {
 				historicSummary.addItem(id)
 				historicSummary.items[id].showInGraph = shDevices.get(
 					+id.slice(2),
 				)!.showInGraph
 			}
+			if (shDevices.get(+id.slice(2))?.countAsHouse) {
+				shEnergyToBeExtractedFromHouse += currentItem[id]
+			} else {
+				currentItem.devices += values.power_imported ?? 0
+			}
 		}
 	})
 	// Self Usage
 	currentItem.selfUsage = Math.max(0, currentItem.pv - currentItem.evuOut)
 	// House
 	if (currentRow.hc && currentRow.hc.all) {
-		currentItem.house = currentRow.hc.all.power_imported // (seems this is now centrally computed) - currentItem.devices
+		currentItem.house =
+			currentRow.hc.all.power_imported - shEnergyToBeExtractedFromHouse
 	} else {
 		currentItem.house =
 			currentItem.evuIn +
diff --git a/packages/modules/web_themes/colors/source/src/components/powerMeter/PowerMeter.vue b/packages/modules/web_themes/colors/source/src/components/powerMeter/PowerMeter.vue
index 91629208d3..48bf5aed70 100755
--- a/packages/modules/web_themes/colors/source/src/components/powerMeter/PowerMeter.vue
+++ b/packages/modules/web_themes/colors/source/src/components/powerMeter/PowerMeter.vue
@@ -69,34 +69,22 @@
 
 					<!-- Show the SoC for the first two cars -->
 					<PMLabel
-						v-if="
-							chargepoints.length > 0 &&
-							vehicles[chargepoints[0].connectedVehicle]
-						"
+						v-if="vehicle1"
 						:x="-width / 2 - margin / 4 + 10"
 						:y="-height / 2 + margin + 5"
 						:labeltext="
-							trimName(vehicles[chargepoints[0].connectedVehicle].name) +
-							': ' +
-							soc(0) +
-							'%'
+							trimName(vehicle1.name) + ': ' + Math.round(vehicle1.soc) + '%'
 						"
 						:labelcolor="chargepoints[0].color"
 						:anchor="'start'"
 						:config="globalConfig"
 					/>
 					<PMLabel
-						v-if="
-							chargepoints.length > 1 &&
-							vehicles[chargepoints[1].connectedVehicle]
-						"
+						v-if="vehicle2"
 						:x="width / 2 + margin / 4 - 10"
 						:y="-height / 2 + margin + 5"
 						:labeltext="
-							trimName(vehicles[chargepoints[1].connectedVehicle].name) +
-							': ' +
-							soc(1) +
-							'%'
+							trimName(vehicle2.name) + ': ' + Math.round(vehicle2.soc) + '%'
 						"
 						:labelcolor="chargepoints[1].color"
 						:anchor="'end'"
@@ -251,16 +239,37 @@ function labelCoordinates(item: number) {
 	return labelPositions[scheme.value[item]]
 }
 
-// methods
+const vehicle1 = computed(() => {
+	if (chargepoints.value.length < 1) {
+		return undefined
+	} else {
+		return vehicles[chargepoints.value[0].connectedVehicle] ?? undefined
+	}
+})
+const vehicle2 = computed(() => {
+	if (chargepoints.value.length < 1) {
+		return undefined
+	} else if (chargepoints.value.length == 1) {
+		if (Object.values(vehicles).filter((v) => v.visible).length > 1) {
+			const cars = Object.values(vehicles).filter((v) => v.visible)
+			if (cars[0].id == chargepoints.value[0].connectedVehicle) {
+				return cars[1]
+			} else {
+				return cars[0]
+			}
+		} else {
+			return undefined
+		}
+	} else {
+		return vehicles[chargepoints.value[1].connectedVehicle] ?? undefined
+	}
+})
 
-function soc(i: number) {
-	return Math.round(chargepoints.value[i].soc)
-}
+// methods
 function trimName(name: string) {
 	const maxlen = 12
 	return name.length > maxlen ? name.slice(0, maxlen - 1) + '.' : name
 }
-
 const currentPrice = computed(() => {
 	const [p] = etData.etPriceList.values()
 	return Math.round(p * 10) / 10
diff --git a/packages/modules/web_themes/colors/source/src/components/priceChart/PriceChart.vue b/packages/modules/web_themes/colors/source/src/components/priceChart/PriceChart.vue
index 0a3b8e8361..d41cda3991 100755
--- a/packages/modules/web_themes/colors/source/src/components/priceChart/PriceChart.vue
+++ b/packages/modules/web_themes/colors/source/src/components/priceChart/PriceChart.vue
@@ -110,15 +110,23 @@ const confirmButtonStyle = computed(() => {
 })
 const xScale = computed(() => {
 	let xdomain = extent(plotdata.value, (d) => d[0]) as [Date, Date]
-
+	if (xdomain[1]) {
+		xdomain[1] = new Date(xdomain[1])
+		xdomain[1].setTime(xdomain[1].getTime() + 3600000)
+	}
 	return scaleTime()
-		.range([margin.left, width - margin.left - margin.right])
+		.range([margin.left, width - margin.right])
 		.domain(xdomain)
 })
 const yDomain = computed(() => {
-	let yd = extent(plotdata.value, (d) => d[1]) as [number, number]
-	yd[0] = Math.floor(yd[0] - 1)
-	yd[1] = Math.floor(yd[1] + 1)
+	let yd = [0, 0]
+	if (plotdata.value.length > 0) {
+		yd = extent(plotdata.value, (d) => d[1]) as [number, number]
+		yd[0] = Math.floor(yd[0] - 1)
+		yd[1] = Math.floor(yd[1] + 1)
+	} else {
+		yd = [0, 0]
+	}
 	return yd
 })
 const yScale = computed(() => {
@@ -128,6 +136,7 @@ const yScale = computed(() => {
 })
 const linePath = computed(() => {
 	const generator = line()
+
 	const points = [
 		[margin.left, yScale.value(maxPrice.value)],
 		[width - margin.right, yScale.value(maxPrice.value)],
diff --git a/packages/modules/web_themes/colors/source/src/components/shared/BatterySymbol.vue b/packages/modules/web_themes/colors/source/src/components/shared/BatterySymbol.vue
index 388c4edd75..3c3fa8fbe8 100755
--- a/packages/modules/web_themes/colors/source/src/components/shared/BatterySymbol.vue
+++ b/packages/modules/web_themes/colors/source/src/components/shared/BatterySymbol.vue
@@ -1,6 +1,6 @@
 <template>
-	<span>
-		<i class="fa" :class="batterySymbol" :style="batStyle" />
+	<span class="d-flex justify-content-center align-items-center">
+		<i class="fa me-1" :class="batterySymbol" :style="batStyle" />
 		{{ Math.round(soc) + '%' }}
 	</span>
 </template>
@@ -12,13 +12,13 @@ const props = defineProps<{
 }>()
 
 const batterySymbol = computed(() => {
-	if (props.soc <= 10) {
+	if (props.soc <= 12) {
 		return 'fa-battery-empty'
-	} else if (props.soc < 50) {
+	} else if (props.soc < 38) {
 		return 'fa-battery-quarter'
-	} else if (props.soc < 75) {
+	} else if (props.soc < 62) {
 		return 'fa-battery-half'
-	} else if (props.soc < 95) {
+	} else if (props.soc < 87) {
 		return 'fa-battery-three-quarters'
 	} else {
 		return 'fa-battery-full'
diff --git a/packages/modules/web_themes/colors/source/src/components/shared/WbBadge.vue b/packages/modules/web_themes/colors/source/src/components/shared/WbBadge.vue
index f3ec8ab4a8..190e532c93 100644
--- a/packages/modules/web_themes/colors/source/src/components/shared/WbBadge.vue
+++ b/packages/modules/web_themes/colors/source/src/components/shared/WbBadge.vue
@@ -25,5 +25,8 @@ const WbBadgestyle = computed(() => {
 .pillWbBadge {
 	font-size: (var--font-small);
 	font-weight: regular;
+	display: flex;
+	justify-content: center;
+	align-items: center;
 }
 </style>
diff --git a/packages/modules/web_themes/colors/source/src/views/ColorsTheme.vue b/packages/modules/web_themes/colors/source/src/views/ColorsTheme.vue
index 5c274f50df..3950b7f507 100644
--- a/packages/modules/web_themes/colors/source/src/views/ColorsTheme.vue
+++ b/packages/modules/web_themes/colors/source/src/views/ColorsTheme.vue
@@ -15,7 +15,7 @@ Hagen */
 			<PowerMeter />
 			<PowerGraph />
 			<EnergyMeter />
-			<ChargePointList :shortlist="globalConfig.shortCpList == 'always'" />
+			<ChargePointList id="0" :compact="globalConfig.shortCpList == 'always'" />
 			<GlobalPriceChart id="Hidden" />
 			<VehicleList />
 			<CounterList />
@@ -39,7 +39,7 @@ Hagen */
 			v-if="!globalConfig.showQuickAccess"
 			class="row py-0 m-0 d-flex justify-content-center"
 		>
-			<ChargePointList :shortlist="globalConfig.shortCpList == 'always'" />
+			<ChargePointList id="1" :compact="globalConfig.shortCpList == 'always'" />
 			<GlobalPriceChart
 				v-if="globalConfig.showPrices"
 				id="NoTabs"
@@ -136,7 +136,7 @@ Hagen */
 				aria-labelledby="showall-tab"
 			>
 				<div class="row py-0 m-0 d-flex justify-content-center">
-					<ChargePointList :shortlist="globalConfig.shortCpList != 'no'" />
+					<ChargePointList id="2" :compact="globalConfig.shortCpList != 'no'" />
 					<GlobalPriceChart v-if="globalConfig.showPrices" id="Overview" />
 					<VehicleList v-if="globalConfig.showVehicles" />
 					<BatteryList />
@@ -152,7 +152,7 @@ Hagen */
 				aria-labelledby="chargepoint-tab"
 			>
 				<div class="row py-0 m-0 d-flex justify-content-center">
-					<ChargePointList :shortlist="globalConfig.shortCpList == 'always'" />
+					<ChargePointList id="3" :compact="globalConfig.shortCpList == 'always'" />
 				</div>
 			</div>
 			<div
diff --git a/packages/modules/web_themes/colors/web/assets/index-B0iSk9lM.js b/packages/modules/web_themes/colors/web/assets/index-B0iSk9lM.js
deleted file mode 100644
index f9cb4f0b54..0000000000
--- a/packages/modules/web_themes/colors/web/assets/index-B0iSk9lM.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var Za=Object.defineProperty;var Xa=(t,e,a)=>e in t?Za(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var f=(t,e,a)=>Xa(t,typeof e!="symbol"?e+"":e,a);import{m as Ka,r as se,a as Z,c as g,i as eo,e as Pe,u as Ut,t as Ye,b as Ft,s as ce,d as B,p as ma,f as va,w as to,o as l,g as m,h as $,j as n,n as N,k as M,l as w,q as he,v as y,x as D,y as r,z as b,F as G,A as X,B as fa,C as Qe,D as pt,E as et,G as tt,H as st,I as it,J as ot,K as ao,L as bt,M as Q,N as oo,O as Ve,P as ae,Q as oe,R as gt,S as no,T as ro,U as so,V as io,W as _a,X as lo,Y as co,Z as uo,_ as ho,$ as po,a0 as go,a1 as mo,a2 as vo,a3 as fo}from"./vendor-DS6WeUU7.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const h of i.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&o(h)}).observe(document,{childList:!0,subtree:!0});function a(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function o(s){if(s.ep)return;s.ep=!0;const i=a(s);fetch(s.href,i)}})();const _o=0,ba={host:location.hostname,port:location.protocol=="https:"?443:80,endpoint:"/ws",protocol:location.protocol=="https:"?"wss":"ws",connectTimeout:4e3,reconnectPeriod:4e3,clean:!1,clientId:Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,6)},yt={topic:"",qos:_o};let Ie;const{host:bo,port:yo,endpoint:wo,...ya}=ba,na=`${ya.protocol}://${bo}:${yo}${wo}`;try{console.debug("connectURL",na),Ie=Ka.connect(na,ya),Ie.on("connect",()=>{console.info("MQTT connection successful")}),Ie.on("disconnect",()=>{console.info("MQTT disconnected")}),Ie.on("error",t=>{console.error("MQTT connection failed: ",t)})}catch(t){console.error("MQTT connect error: ",t)}function ko(t){Ie?Ie.on("message",t):console.error("MqttRegister: MQTT client not available")}function Je(t){yt.topic=t;const{topic:e,qos:a}=yt;Ie.subscribe(e,{qos:a},o=>{if(o){console.error("MQTT Subscription error: "+o);return}})}function at(t){yt.topic=t;const{topic:e}=yt;Ie.unsubscribe(e,a=>{if(a){console.error("MQTT Unsubscribe from "+t+" failed: "+a);return}})}async function Nt(t,e){let o=Ie.connected,s=0;for(;!o&&s<20;)console.warn("MQTT publish: Not connected. Waiting 0.1 seconds"),await So(100),o=Ie.connected,s+=1;if(s<20)try{Ie.publish(t,e,{qos:0},i=>{i&&console.warn("MQTT publish error: ",i),console.info("MQTT publish: Message sent: ["+t+"]("+e+")")})}catch(i){console.warn("MQTT publish: caught error: "+i)}else console.error("MQTT publish: Lost connection to MQTT server. Please reload the page")}function qt(){return ba.clientId}function So(t){return new Promise(e=>setTimeout(e,t))}class xo{constructor(e){f(this,"id");f(this,"name","Ladepunkt");f(this,"icon","Ladepunkt");f(this,"type","");f(this,"ev",0);f(this,"template",0);f(this,"connectedPhases",0);f(this,"phase_1",0);f(this,"autoPhaseSwitchHw",!1);f(this,"controlPilotInterruptionHw",!1);f(this,"isEnabled",!0);f(this,"isPluggedIn",!1);f(this,"isCharging",!1);f(this,"_isLocked",!1);f(this,"_connectedVehicle",0);f(this,"chargeTemplate",0);f(this,"evTemplate",0);f(this,"_chargeMode","pv_charging");f(this,"_hasPriority",!1);f(this,"currentPlan","");f(this,"averageConsumption",0);f(this,"vehicleName","");f(this,"rangeCharged",0);f(this,"rangeUnit","");f(this,"counter",0);f(this,"dailyYield",0);f(this,"energyPv",0);f(this,"energyBat",0);f(this,"pvPercentage",0);f(this,"faultState",0);f(this,"faultStr","");f(this,"phasesInUse",0);f(this,"power",0);f(this,"chargedSincePlugged",0);f(this,"stateStr","");f(this,"current",0);f(this,"currents",[0,0,0]);f(this,"phasesToUse",0);f(this,"isSocConfigured",!0);f(this,"isSocManual",!1);f(this,"waitingForSoc",!1);f(this,"color","white");f(this,"_timedCharging",!1);f(this,"_instantChargeLimitMode","");f(this,"_instantTargetCurrent",0);f(this,"_instantTargetSoc",0);f(this,"_instantMaxEnergy",0);f(this,"_pvFeedInLimit",!1);f(this,"_pvMinCurrent",0);f(this,"_pvMaxSoc",0);f(this,"_pvMinSoc",0);f(this,"_pvMinSocCurrent",0);f(this,"_etActive",!1);f(this,"_etMaxPrice",20);this.id=e}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e,ee("cpLock",e,this.id)}updateIsLocked(e){this._isLocked=e}get connectedVehicle(){return this._connectedVehicle}set connectedVehicle(e){this._connectedVehicle=e,ee("cpVehicle",e,this.id)}updateConnectedVehicle(e){this._connectedVehicle=e}get soc(){return q[this.connectedVehicle]?q[this.connectedVehicle].soc:0}set soc(e){q[this.connectedVehicle]&&(q[this.connectedVehicle].soc=e)}get chargeMode(){return this._chargeMode}set chargeMode(e){this._chargeMode=e,ee("chargeMode",e,this.id)}updateChargeMode(e){this._chargeMode=e}get hasPriority(){return this._hasPriority}set hasPriority(e){this._hasPriority=e,ee("cpPriority",e,this.id)}updateCpPriority(e){this._hasPriority=e}get timedCharging(){return be[this.chargeTemplate]?be[this.chargeTemplate].time_charging.active:!1}set timedCharging(e){be[this.chargeTemplate].time_charging.active=e,ee("cpTimedCharging",e,this.chargeTemplate)}get instantTargetCurrent(){return this._instantTargetCurrent}set instantTargetCurrent(e){this._instantTargetCurrent=e,ee("cpInstantTargetCurrent",e,this.id)}updateInstantTargetCurrent(e){this._instantTargetCurrent=e}get instantChargeLimitMode(){return this._instantChargeLimitMode}set instantChargeLimitMode(e){this._instantChargeLimitMode=e,ee("cpInstantChargeLimitMode",e,this.id)}updateInstantChargeLimitMode(e){this._instantChargeLimitMode=e}get instantTargetSoc(){return this._instantTargetSoc}set instantTargetSoc(e){this._instantTargetSoc=e,ee("cpInstantTargetSoc",e,this.id)}updateInstantTargetSoc(e){this._instantTargetSoc=e}get instantMaxEnergy(){return this._instantMaxEnergy}set instantMaxEnergy(e){this._instantMaxEnergy=e,ee("cpInstantMaxEnergy",e,this.id)}updateInstantMaxEnergy(e){this._instantMaxEnergy=e}get pvFeedInLimit(){return this._pvFeedInLimit}set pvFeedInLimit(e){this._pvFeedInLimit=e,ee("cpPvFeedInLimit",e,this.id)}updatePvFeedInLimit(e){this._pvFeedInLimit=e}get pvMinCurrent(){return this._pvMinCurrent}set pvMinCurrent(e){this._pvMinCurrent=e,ee("cpPvMinCurrent",e,this.id)}updatePvMinCurrent(e){this._pvMinCurrent=e}get pvMaxSoc(){return this._pvMaxSoc}set pvMaxSoc(e){this._pvMaxSoc=e,ee("cpPvMaxSoc",e,this.id)}updatePvMaxSoc(e){this._pvMaxSoc=e}get pvMinSoc(){return this._pvMinSoc}set pvMinSoc(e){this._pvMinSoc=e,ee("cpPvMinSoc",e,this.id)}updatePvMinSoc(e){this._pvMinSoc=e}get pvMinSocCurrent(){return this._pvMinSocCurrent}set pvMinSocCurrent(e){this._pvMinSocCurrent=e,ee("cpPvMinSocCurrent",e,this.id)}updatePvMinSocCurrent(e){this._pvMinSocCurrent=e}get realCurrent(){switch(this.phasesInUse){case 0:return 0;case 1:return this.currents[0];case 2:return(this.currents[0]+this.currents[1])/2;case 3:return(this.currents[0]+this.currents[1]+this.currents[2])/3;default:return 0}}get etActive(){return q[this.connectedVehicle]?q[this.connectedVehicle].etActive:!1}set etActive(e){q[this.connectedVehicle]&&(q[this.connectedVehicle].etActive=e)}get etMaxPrice(){return q[this.connectedVehicle].etMaxPrice??0}set etMaxPrice(e){console.log("Setting et max price needs to be implemented"),ee("cpEtMaxPrice",Math.round(e*10)/1e6,this.id)}toPowerItem(){return{name:this.name,power:this.power,energy:this.dailyYield,energyPv:this.energyPv,energyBat:this.energyBat,pvPercentage:this.pvPercentage,color:this.color,icon:this.icon,showInGraph:!0}}}class $o{constructor(e){f(this,"id");f(this,"name","");f(this,"visible",!0);f(this,"_chargeTemplateId",0);f(this,"_evTemplateId",0);f(this,"tags",[]);f(this,"config",{});f(this,"soc",0);f(this,"range",0);f(this,"_etActive",!1);f(this,"_etMaxPrice",20);this.id=e}get chargeTemplateId(){return this._chargeTemplateId}set chargeTemplateId(e){this._chargeTemplateId=e,ee("vhChargeTemplateId",e,this.id)}updateChargeTemplateId(e){this._chargeTemplateId=e}get evTemplateId(){return this._evTemplateId}set evTemplateId(e){this._evTemplateId=e,ee("vhEvTemplateId",e,this.id)}updateEvTemplateId(e){this._evTemplateId=e}get etActive(){return be[this.chargeTemplateId]?be[this.chargeTemplateId].et.active:!1}set etActive(e){be[this.chargeTemplateId]&&ee("priceCharging",e,this.chargeTemplateId)}get etMaxPrice(){if(be[this.chargeTemplateId]&&be[this.chargeTemplateId].et.active)return be[this.chargeTemplateId].et.max_price*1e5}get chargepoint(){for(const e of Object.values(P))if(e.connectedVehicle==this.id)return e}}var fe=(t=>(t.instant_charging="instant_charging",t.pv_charging="pv_charging",t.scheduled_charging="scheduled_charging",t.standby="standby",t.stop="stop",t))(fe||{});const P=se({}),q=se({}),be=se({}),lt=se({}),ct=se({}),Ht=se({});function Mo(t){t in P||(P[t]=new xo(t),P[t].color="var(--color-cp"+(Object.values(P).length-1)+")")}function Io(){Object.keys(P).forEach(t=>{delete P[parseInt(t)]})}const Co={cpLock:"openWB/set/chargepoint/%/set/manual_lock",chargeMode:"openWB/set/vehicle/template/charge_template/%/chargemode/selected",cpPriority:"openWB/set/vehicle/template/charge_template/%/prio",cpTimedCharging:"openWB/set/vehicle/template/charge_template/%/time_charging/active",pvBatteryPriority:"openWB/set/general/chargemode_config/pv_charging/bat_mode",cpVehicle:"openWB/set/chargepoint/%/config/ev",cpInstantChargeLimitMode:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/selected",cpInstantTargetCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/current",cpInstantTargetSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/soc",cpInstantMaxEnergy:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/amount",cpPvFeedInLimit:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/feed_in_limit",cpPvMinCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_current",cpPvMaxSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/max_soc",cpPvMinSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc",cpPvMinSocCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc_current",cpEtMaxPrice:"openWB/set/vehicle/template/charge_template/%/et/max_price",vhChargeTemplateId:"openWB/set/vehicle/%/charge_template",vhEvTemplateId:"openWB/set/vehicle/%/ev_template",shSetManual:"openWB/set/LegacySmartHome/config/set/Devices/%/mode",shSwitchOn:"openWB/set/LegacySmartHome/config/set/Devices/%/device_manual_control",socUpdate:"openWB/set/vehicle/%/get/force_soc_update",setSoc:"openWB/set/vehicle/%/soc_module/calculated_soc_state/manual_soc",priceCharging:"openWB/set/vehicle/template/charge_template/%/et/active"};function ee(t,e,a=0){if(isNaN(a)){console.warn("Invalid index");return}let o=Co[t];if(!o){console.warn("No topic for update type "+t);return}switch(t){case"chargeMode":case"cpPriority":case"cpScheduledCharging":case"cpInstantTargetCurrent":case"cpInstantChargeLimitMode":case"cpInstantTargetSoc":case"cpInstantMaxEnergy":case"cpPvFeedInLimit":case"cpPvMinCurrent":case"cpPvMaxSoc":case"cpPvMinSoc":case"cpEtMaxPrice":case"cpPvMinSocCurrent":o=o.replace("%",P[a].chargeTemplate.toString());break;default:o=o.replace("%",String(a))}switch(typeof e){case"number":Nt(o,JSON.stringify(+e));break;default:Nt(o,JSON.stringify(e))}}function Yt(t){Nt("openWB/set/command/"+qt()+"/todo",JSON.stringify(t))}class Po{constructor(){f(this,"batterySoc",0);f(this,"isBatteryConfigured",!0);f(this,"chargeMode","0");f(this,"_pvBatteryPriority","ev_mode");f(this,"displayLiveGraph",!0);f(this,"isEtEnabled",!0);f(this,"etMaxPrice",0);f(this,"etCurrentPrice",0);f(this,"cpDailyExported",0);f(this,"evuId",0);f(this,"etProvider","")}get pvBatteryPriority(){return this._pvBatteryPriority}set pvBatteryPriority(e){this._pvBatteryPriority=e,ee("pvBatteryPriority",e)}updatePvBatteryPriority(e){this._pvBatteryPriority=e}}class wa{constructor(e){f(this,"id");f(this,"name","Wechselrichter");f(this,"color","var(--color-pv)");f(this,"power",0);f(this,"energy",0);f(this,"energy_month",0);f(this,"energy_year",0);f(this,"energy_total",0);this.id=e}}const Bo=[["EV","ev_mode"],["Speicher","bat_mode"],["MinSoc","min_soc_bat_mode"]],ue=se({evuIn:{name:"Netz",color:"var(--color-evu)",icon:""},pv:{name:"PV",color:"var(--color-pv",icon:""},batOut:{name:"Bat >",color:"var(--color-battery)",icon:""},evuOut:{name:"Export",color:"var(--color-export)",icon:""},charging:{name:"Laden",color:"var(--color-charging)",icon:""},devices:{name:"Geräte",color:"var(--color-devices)",icon:""},batIn:{name:"> Bat",color:"var(--color-battery)",icon:""},house:{name:"Haus",color:"var(--color-house)",icon:""},cp1:{name:"Ladepunkt",color:"var(--color-cp1)",icon:"Ladepunkt"},cp2:{name:"Ladepunkt",color:"var(--color-cp2)",icon:"Ladepunkt"},cp3:{name:"Ladepunkt",color:"var(--color-cp3)",icon:"Ladepunkt"},cp4:{name:"Ladepunkt",color:"var(--color-cp4)",icon:"Ladepunkt"},cp5:{name:"Ladepunkt",color:"var(--color-cp5)",icon:"Ladepunkt"},cp6:{name:"Ladepunkt",color:"var(--color-cp6)",icon:"Ladepunkt"},cp7:{name:"Ladepunkt",color:"var(--color-cp7)",icon:"Ladepunkt"},cp8:{name:"Ladepunkt",color:"var(--color-cp8)",icon:"Ladepunkt"},sh1:{name:"Gerät",color:"var(--color-sh1)",icon:"Gerät"},sh2:{name:"Gerät",color:"var(--color-sh2)",icon:"Gerät"},sh3:{name:"Gerät",color:"var(--color-sh3)",icon:"Gerät"},sh4:{name:"Gerät",color:"var(--color-sh4)",icon:"Gerät"},sh5:{name:"Gerät",color:"var(--color-sh5)",icon:"Gerät"},sh6:{name:"Gerät",color:"var(--color-sh6)",icon:"Gerät"},sh7:{name:"Gerät",color:"var(--color-sh7)",icon:"Gerät"},sh8:{name:"Gerät",color:"var(--color-sh8)",icon:"Gerät"},sh9:{name:"Gerät",color:"var(--color-sh9)",icon:"Gerät"},pv1:{name:"PV",color:"var(--color-pv1)",icon:"Wechselrichter"},pv2:{name:"PV",color:"var(--color-pv2)",icon:"Wechselrichter"},pv3:{name:"PV",color:"var(--color-pv3)",icon:"Wechselrichter"},pv4:{name:"PV",color:"var(--color-pv4)",icon:"Wechselrichter"},pv5:{name:"PV",color:"var(--color-pv5)",icon:"Wechselrichter"},pv6:{name:"PV",color:"var(--color-pv6)",icon:"Wechselrichter"},pv7:{name:"PV",color:"var(--color-pv7)",icon:"Wechselrichter"},pv8:{name:"PV",color:"var(--color-pv8)",icon:"Wechselrichter"},pv9:{name:"PV",color:"var(--color-pv9)",icon:"Wechselrichter"},bat1:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat2:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat3:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat4:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat5:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat6:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat7:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat8:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat9:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"}});class ka{constructor(){f(this,"_items",{});this.addItem("evuIn"),this.addItem("pv"),this.addItem("batOut"),this.addItem("evuOut"),this.addItem("charging"),this.addItem("devices"),this.addItem("batIn"),this.addItem("house")}get items(){return this._items}keys(){return Object.keys(this._items)}values(){return Object.values(this._items)}addItem(e,a){this._items[e]=a?Ae(e,a):Ae(e)}setEnergy(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energy=a}setEnergyPv(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyPv=a}setEnergyBat(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyBat=a}setPvPercentage(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].pvPercentage=a<=100?a:100}calculateHouseEnergy(){this._items.house.energy=this._items.evuIn.energy+this._items.pv.energy+this._items.batOut.energy-this._items.evuOut.energy-this._items.batIn.energy-this._items.charging.energy-this._items.devices.energy}}let O=se(new ka);function Qt(){O=new ka}const R=se({evuIn:Ae("evuIn"),pv:Ae("pv"),batOut:Ae("batOut")}),j=se({evuOut:Ae("evuOut"),charging:Ae("charging"),devices:Ae("devices"),batIn:Ae("batIn"),house:Ae("house")}),de=se(new Po);Z("");const wt=Z(!1);function Ae(t,e){return{name:ue[t]?ue[t].name:"item",power:0,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:e||(ue[t]?ue[t].color:"var(--color-charging)"),icon:ue[t]?ue[t].icon:"",showInGraph:!0}}const Rt=Z(new Date),ke=Z(new Map),Vo=t=>{ke.value.set(t,new wa(t)),ke.value.get(t).color=ue["pv"+ke.value.size].color},_e=500,xe=500,z={top:15,right:20,bottom:10,left:25},Zt=["charging","house","batIn","devices"];class Lo{constructor(){f(this,"data",[]);f(this,"_graphMode","");f(this,"waitForData",!0)}get graphMode(){return this._graphMode}set graphMode(e){this._graphMode=e}}const _=se(new Lo),Sa=Z(eo),He=g(()=>[0,_e-z.left-2*z.right].map(t=>Sa.value.applyX(t)));let ut=!0,nt=!0;function ra(){ut=!1}function Oo(){ut=!0}function sa(){nt=!1}function Ao(){nt=!0}function To(t){nt=t}function mt(t){_.data=t,_.waitForData=!1}const pe=se({refreshTopicPrefix:"openWB/graph/alllivevaluesJson",updateTopic:"openWB/graph/lastlivevaluesJson",configTopic:"openWB/graph/config/#",initialized:!1,initCounter:0,graphRefreshCounter:0,rawDataPacks:[],duration:0,activate(t){this.unsubscribeUpdates(),this.subscribeRefresh(),t&&(_.data=[]),_.waitForData=!0,Je(this.configTopic),this.initialized=!1,this.initCounter=0,this.graphRefreshCounter=0,this.rawDataPacks=[],Eo(),wt.value=!0},deactivate(){this.unsubscribeRefresh(),this.unsubscribeUpdates(),at(this.configTopic)},subscribeRefresh(){for(let t=1;t<17;t++)Je(this.refreshTopicPrefix+t)},unsubscribeRefresh(){for(let t=1;t<17;t++)at(this.refreshTopicPrefix+t)},subscribeUpdates(){Je(this.updateTopic)},unsubscribeUpdates(){at(this.updateTopic)}}),le=se({topic:"openWB/log/daily/#",date:new Date,activate(t){if(_.graphMode=="day"||_.graphMode=="today"){_.graphMode=="today"&&(this.date=new Date);const e=this.date.getFullYear().toString()+(this.date.getMonth()+1).toString().padStart(2,"0")+this.date.getDate().toString().padStart(2,"0");this.topic="openWB/log/daily/"+e,Je(this.topic),t&&(_.data=[]),_.waitForData=!0,Yt({command:"getDailyLog",data:{day:e}})}},deactivate(){at(this.topic)},back(){this.date=new Date(this.date.setTime(this.date.getTime()-864e5))},forward(){this.date=new Date(this.date.setTime(this.date.getTime()+864e5))},setDate(t){this.date=t},getDate(){return this.date}}),Te=se({topic:"openWB/log/monthly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(t){const e=this.year.toString()+this.month.toString().padStart(2,"0");_.data=[],Je(this.topic),t&&(_.data=[]),_.waitForData=!0,Yt({command:"getMonthlyLog",data:{month:e}})},deactivate(){at(this.topic)},back(){this.month-=1,this.month<1&&(this.month=12,this.year-=1),this.activate()},forward(){const t=new Date;t.getFullYear()==this.year?this.month-1<t.getMonth()&&(this.month=this.month+1):(this.month=this.month+1,this.month>12&&(this.month=1,this.year+=1)),this.activate()},getDate(){return new Date(this.year,this.month)}}),Fe=se({topic:"openWB/log/yearly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(t){const e=this.year.toString();Je(this.topic),t&&(_.data=[]),_.waitForData=!0,Yt({command:"getYearlyLog",data:{year:e}})},deactivate(){at(this.topic)},back(){this.year-=1,this.activate()},forward(){this.year<new Date().getFullYear()&&(this.year=this.year+1,this.activate())},getDate(){return new Date(this.year,this.month)}});function me(t=!1){switch(_.graphMode==""?Wo(v.graphPreference):_.graphMode=="live"?v.graphPreference="live":v.graphPreference="today",t||(ut=!0,nt=!0),_.graphMode){case"live":le.deactivate(),Te.deactivate(),Fe.deactivate(),pe.activate(!t);break;case"today":pe.deactivate(),Te.deactivate(),Fe.deactivate(),le.activate(!t);break;case"day":pe.deactivate(),Te.deactivate(),Fe.deactivate(),le.activate(!t);break;case"month":pe.deactivate(),le.deactivate(),Fe.deactivate(),Te.activate(!t);break;case"year":pe.deactivate(),le.deactivate(),Te.deactivate(),Fe.activate(!t);break}}function Wo(t){_.graphMode=t}function Do(t,e){e[t]>0&&(O.items[t].energyPv+=1e3/12*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),O.items[t].energyBat+=1e3/12*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}function zo(t,e){e[t]>0&&(O.items[t].energyPv+=1e3*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),O.items[t].energyBat+=1e3*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}const Go=["evuIn","pv","batOut","evuOut"],dt=Z(!1);function Xt(t,e){Object.entries(t).length>0?(dt.value=!1,Object.entries(t.counter).forEach(([a,o])=>{(e.length==0||e.includes(a))&&(O.items.evuIn.energy+=o.energy_imported,O.items.evuOut.energy+=o.energy_exported)}),O.items.pv.energy=t.pv.all.energy_exported,t.bat.all&&(O.items.batIn.energy=t.bat.all.energy_imported,O.items.batOut.energy=t.bat.all.energy_exported),Object.entries(t.cp).forEach(([a,o])=>{a=="all"?(O.setEnergy("charging",o.energy_imported),o.energy_imported_pv!=null&&(O.setEnergyPv("charging",o.energy_imported_pv),O.setEnergyBat("charging",o.energy_imported_bat))):O.setEnergy(a,o.energy_imported)}),O.setEnergy("devices",0),Object.entries(t.sh).forEach(([a,o])=>{O.setEnergy(a,o.energy_imported);const s=a.substring(2);ne.get(+s).countAsHouse||(O.items.devices.energy+=o.energy_imported)}),t.hc&&t.hc.all?(O.setEnergy("house",t.hc.all.energy_imported),t.hc.all.energy_imported_pv!=null&&(O.setEnergyPv("house",t.hc.all.energy_imported_pv),O.setEnergyBat("house",t.hc.all.energy_imported_bat))):O.calculateHouseEnergy(),O.keys().forEach(a=>{Go.includes(a)||(O.setPvPercentage(a,Math.round((O.items[a].energyPv+O.items[a].energyBat)/O.items[a].energy*100)),Zt.includes(a)&&(j[a].energy=O.items[a].energy,j[a].energyPv=O.items[a].energyPv,j[a].energyBat=O.items[a].energyBat,j[a].pvPercentage=O.items[a].pvPercentage))}),_.graphMode=="today"&&(Object.values(P).forEach(a=>{const o=O.items["cp"+a.id];o&&(a.energyPv=o.energyPv,a.energyBat=o.energyBat,a.pvPercentage=o.pvPercentage)}),ne.forEach(a=>{const o=O.items["sh"+a.id];o&&(a.energy=o.energy,a.energyPv=o.energyPv,a.energyBat=o.energyBat,a.pvPercentage=o.pvPercentage)}))):dt.value=!0,wt.value=!0}const Ce=g(()=>{const t=Pe(_.data,e=>new Date(e.date));return t[0]&&t[1]?Ut().domain(t).range([0,_e-z.left-2*z.right]):Ye().range([0,0])});function Eo(){O.keys().forEach(t=>{Zt.includes(t)&&(j[t].energy=O.items[t].energy,j[t].energyPv=0,j[t].energyBat=0,j[t].pvPercentage=0)}),Object.values(P).forEach(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0}),ne.forEach(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0})}const Ne=g(()=>{const t=Pe(_.data,e=>e.date);return t[1]?Ft().domain(Array.from({length:t[1]},(e,a)=>a+1)).paddingInner(.4).range([0,_e-z.left-2]):Ft().range([0,0])});function Kt(){switch(_.graphMode){case"live":_.graphMode="today",v.showRightButton=!0,me();break;case"today":_.graphMode="day",le.deactivate(),le.back(),le.activate(),me();break;case"day":le.back(),me();break;case"month":Te.back();break;case"year":Fe.back();break}}function xa(){const t=new Date;switch(_.graphMode){case"live":break;case"today":_.graphMode="live",v.showRightButton=!1,me();break;case"day":le.forward(),le.date.getDate()==t.getDate()&&le.date.getMonth()==t.getMonth()&&le.date.getFullYear()==t.getFullYear()&&(_.graphMode="today"),me();break;case"month":Te.forward();break;case"year":Fe.forward();break}}function $a(){switch(_.graphMode){case"live":Kt();break;case"day":case"today":_.graphMode="month",me();break;case"month":_.graphMode="year",me();break}}function Ma(){switch(_.graphMode){case"year":_.graphMode="month",me();break;case"month":_.graphMode="today",me();break;case"today":case"day":_.graphMode="live",me();break}}function ia(t){if(_.graphMode=="day"||_.graphMode=="today"){le.setDate(t);const e=new Date;le.date.getDate()==e.getDate()&&le.date.getMonth()==e.getMonth()&&le.date.getFullYear()==e.getFullYear()?_.graphMode="today":_.graphMode="day",me()}}const je=Z(new Map);class jo{constructor(){f(this,"_showRelativeArcs",!1);f(this,"showTodayGraph",!0);f(this,"_graphPreference","today");f(this,"_usageStackOrder",0);f(this,"_displayMode","dark");f(this,"_showGrid",!1);f(this,"_smartHomeColors","normal");f(this,"_decimalPlaces",1);f(this,"_showQuickAccess",!0);f(this,"_simpleCpList",!1);f(this,"_shortCpList","no");f(this,"_showAnimations",!0);f(this,"_preferWideBoxes",!1);f(this,"_maxPower",4e3);f(this,"_fluidDisplay",!1);f(this,"_showClock","no");f(this,"_showButtonBar",!0);f(this,"_showCounters",!1);f(this,"_showVehicles",!1);f(this,"_showStandardVehicle",!0);f(this,"_showPrices",!1);f(this,"_showInverters",!1);f(this,"_debug",!1);f(this,"isEtEnabled",!1);f(this,"etPrice",20.5);f(this,"showRightButton",!0);f(this,"showLeftButton",!0);f(this,"animationDuration",300);f(this,"animationDelay",100);f(this,"zoomGraph",!1)}get showRelativeArcs(){return this._showRelativeArcs}set showRelativeArcs(e){this._showRelativeArcs=e,re()}setShowRelativeArcs(e){this._showRelativeArcs=e}get graphPreference(){return this._graphPreference}set graphPreference(e){this._graphPreference=e,re()}setGraphPreference(e){this._graphPreference=e}get usageStackOrder(){return this._usageStackOrder}set usageStackOrder(e){this._usageStackOrder=e,re()}setUsageStackOrder(e){this._usageStackOrder=e}get displayMode(){return this._displayMode}set displayMode(e){this._displayMode=e,No(e)}setDisplayMode(e){this._displayMode=e}get showGrid(){return this._showGrid}set showGrid(e){this._showGrid=e,re()}setShowGrid(e){this._showGrid=e}get decimalPlaces(){return this._decimalPlaces}set decimalPlaces(e){this._decimalPlaces=e,re()}setDecimalPlaces(e){this._decimalPlaces=e}get smartHomeColors(){return this._smartHomeColors}set smartHomeColors(e){this._smartHomeColors=e,la(e),re()}setSmartHomeColors(e){this._smartHomeColors=e,la(e)}get showQuickAccess(){return this._showQuickAccess}set showQuickAccess(e){this._showQuickAccess=e,re()}setShowQuickAccess(e){this._showQuickAccess=e}get simpleCpList(){return this._simpleCpList}set simpleCpList(e){this._simpleCpList=e,re()}setSimpleCpList(e){this._simpleCpList=e}get shortCpList(){return this._shortCpList}set shortCpList(e){this._shortCpList=e,re()}setShortCpList(e){this._shortCpList=e}get showAnimations(){return this._showAnimations}set showAnimations(e){this._showAnimations=e,re()}setShowAnimations(e){this._showAnimations=e}get preferWideBoxes(){return this._preferWideBoxes}set preferWideBoxes(e){this._preferWideBoxes=e,re()}setPreferWideBoxes(e){this._preferWideBoxes=e}get maxPower(){return this._maxPower}set maxPower(e){this._maxPower=e,re()}setMaxPower(e){this._maxPower=e}get fluidDisplay(){return this._fluidDisplay}set fluidDisplay(e){this._fluidDisplay=e,re()}setFluidDisplay(e){this._fluidDisplay=e}get showClock(){return this._showClock}set showClock(e){this._showClock=e,re()}setShowClock(e){this._showClock=e}get debug(){return this._debug}set debug(e){this._debug=e,re()}setDebug(e){this._debug=e}get showButtonBar(){return this._showButtonBar}set showButtonBar(e){this._showButtonBar=e,re()}setShowButtonBar(e){this._showButtonBar=e}get showCounters(){return this._showCounters}set showCounters(e){this._showCounters=e,re()}setShowCounters(e){this._showCounters=e}get showVehicles(){return this._showVehicles}set showVehicles(e){this._showVehicles=e,re()}setShowVehicles(e){this._showVehicles=e}get showStandardVehicle(){return this._showStandardVehicle}set showStandardVehicle(e){this._showStandardVehicle=e,q[0].visible=e,re()}setShowStandardVehicle(e){this._showStandardVehicle=e}get showPrices(){return this._showPrices}set showPrices(e){this._showPrices=e,re()}setShowPrices(e){this._showPrices=e}get showInverters(){return this._showInverters}set showInverters(e){this._showInverters=e,Oo(),Ao(),re()}setShowInverters(e){this._showInverters=e}}const v=se(new jo);function Ia(){Jo();const t=ce("html");t.classed("theme-dark",v.displayMode=="dark"),t.classed("theme-light",v.displayMode=="light"),t.classed("theme-blue",v.displayMode=="blue"),t.classed("shcolors-standard",v.smartHomeColors=="standard"),t.classed("shcolors-advanced",v.smartHomeColors=="advanced"),t.classed("shcolors-normal",v.smartHomeColors=="normal")}const Uo=992,kt=se({x:document.documentElement.clientWidth,y:document.documentElement.clientHeight});function Fo(){kt.x=document.documentElement.clientWidth,kt.y=document.documentElement.clientHeight,Ia()}const Re=g(()=>kt.x>=Uo),ge={stop:{mode:fe.stop,name:"Stop",color:"var(--color-fg)",icon:"fa-power-off"},standby:{mode:fe.standby,name:"Standby",color:"var(--color-axis",icon:"fa-pause"},pv_charging:{mode:fe.pv_charging,name:"PV",color:"var(--color-pv",icon:"fa-solar-panel"},scheduled_charging:{mode:fe.scheduled_charging,name:"Zielladen",color:"var(--color-battery)",icon:"fa-bullseye"},instant_charging:{mode:fe.instant_charging,name:"Sofort",color:"var(--color-charging)",icon:"fa-bolt"}};function re(){Ro()}function No(t){const e=ce("html");e.classed("theme-dark",t=="dark"),e.classed("theme-light",t=="light"),e.classed("theme-blue",t=="blue"),re()}function Ho(){v.maxPower=R.evuIn.power+R.pv.power+R.batOut.power,re()}function la(t){const e=ce("html");e.classed("shcolors-normal",t=="normal"),e.classed("shcolors-standard",t=="standard"),e.classed("shcolors-advanced",t=="advanced")}const Oe={chargemode:"Der Lademodus für das Fahrzeug an diesem Ladepunkt",vehicle:"Das Fahrzeug, das an diesem Ladepounkt geladen wird",locked:"Für das Laden sperren",priority:"Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar",timeplan:"Das Laden nach Zeitplan für dieses Fahrzeug aktivieren",minsoc:"Immer mindestens bis zum eingestellten Ladestand laden. Wenn notwendig mit Netzstrom.",minpv:"Durchgehend mit mindestens dem eingestellten Strom laden. Wenn notwendig mit Netzstrom.",pricebased:"Laden bei dynamischem Stromtarif, wenn eingestellter Maximalpreis unterboten wird.",pvpriority:"Ladepriorität bei PV-Produktion. Bevorzung von Fahzeugen, Speicher, oder Fahrzeugen bis zum eingestellten Mindest-Ladestand. Die Einstellung ist für alle Ladepunkte gleich."};function Ro(){const t={};t.hideSH=[...ne.values()].filter(e=>!e.showInGraph).map(e=>e.id),t.showLG=v.graphPreference=="live",t.displayM=v.displayMode,t.stackO=v.usageStackOrder,t.showGr=v.showGrid,t.decimalP=v.decimalPlaces,t.smartHomeC=v.smartHomeColors,t.relPM=v.showRelativeArcs,t.maxPow=v.maxPower,t.showQA=v.showQuickAccess,t.simpleCP=v.simpleCpList,t.shortCP=v.shortCpList,t.animation=v.showAnimations,t.wideB=v.preferWideBoxes,t.fluidD=v.fluidDisplay,t.clock=v.showClock,t.showButtonBar=v.showButtonBar,t.showCounters=v.showCounters,t.showVehicles=v.showVehicles,t.showStandardV=v.showStandardVehicle,t.showPrices=v.showPrices,t.showInv=v.showInverters,t.debug=v.debug,document.cookie="openWBColorTheme="+JSON.stringify(t)+";max-age=16000000;samesite=strict"}function Jo(){const e=document.cookie.split(";").filter(a=>a.split("=")[0]==="openWBColorTheme");if(e.length>0){const a=JSON.parse(e[0].split("=")[1]);a.decimalP!==void 0&&v.setDecimalPlaces(+a.decimalP),a.smartHomeC!==void 0&&v.setSmartHomeColors(a.smartHomeC),a.hideSH!==void 0&&a.hideSH.forEach(o=>{ne.get(o)==null&&ea(o),ne.get(o).setShowInGraph(!1)}),a.showLG!==void 0&&v.setGraphPreference(a.showLG?"live":"today"),a.maxPow!==void 0&&v.setMaxPower(+a.maxPow),a.relPM!==void 0&&v.setShowRelativeArcs(a.relPM),a.displayM!==void 0&&v.setDisplayMode(a.displayM),a.stackO!==void 0&&v.setUsageStackOrder(a.stackO),a.showGr!==void 0&&v.setShowGrid(a.showGr),a.showQA!==void 0&&v.setShowQuickAccess(a.showQA),a.simpleCP!==void 0&&v.setSimpleCpList(a.simpleCP),a.shortCP!==void 0&&v.setShortCpList(a.shortCP),a.animation!=null&&v.setShowAnimations(a.animation),a.wideB!=null&&v.setPreferWideBoxes(a.wideB),a.fluidD!=null&&v.setFluidDisplay(a.fluidD),a.clock!=null&&v.setShowClock(a.clock),a.showButtonBar!==void 0&&v.setShowButtonBar(a.showButtonBar),a.showCounters!==void 0&&v.setShowCounters(a.showCounters),a.showVehicles!==void 0&&v.setShowVehicles(a.showVehicles),a.showStandardV!==void 0&&v.setShowStandardVehicle(a.showStandardV),a.showPrices!==void 0&&v.setShowPrices(a.showPrices),a.showInv!==void 0&&v.setShowInverters(a.showInv),a.debug!==void 0&&v.setDebug(a.debug)}}class qo{constructor(e){f(this,"id");f(this,"name","Gerät");f(this,"power",0);f(this,"status","off");f(this,"energy",0);f(this,"runningTime",0);f(this,"configured",!1);f(this,"_showInGraph",!0);f(this,"color","white");f(this,"canSwitch",!1);f(this,"countAsHouse",!1);f(this,"energyPv",0);f(this,"energyBat",0);f(this,"pvPercentage",0);f(this,"tempConfigured",0);f(this,"temp",[300,300,300]);f(this,"on",!1);f(this,"isAutomatic",!0);f(this,"icon","");this.id=e}get showInGraph(){return this._showInGraph}set showInGraph(e){this._showInGraph=e,O.items["sh"+this.id].showInGraph=e,re()}setShowInGraph(e){this._showInGraph=e}}const ne=se(new Map);function ea(t){ne.has(t)?console.info("Duplicate sh device message: "+t):(ne.set(t,new qo(t)),ne.get(t).color="var(--color-sh"+ne.size+")")}const Yo=["origin"],Qo=B({__name:"PMSourceArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=g(()=>{let o={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:"",showInGraph:!0},s=R;s["zz-empty"]=o;const i=Object.values(R).length-1,h=ma().value(u=>u.power).startAngle(-Math.PI/2+e.circleGapSize).endAngle(Math.PI/2-e.circleGapSize).sort(null),p=va().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius).padAngle(0),c=ce("g#pmSourceArc");return c.selectAll("*").remove(),c.selectAll("sources").data(h(Object.values(s))).enter().append("path").attr("d",p).attr("fill",u=>u.data.color).attr("stroke",(u,d)=>d==i?u.data.power>0?"var(--color-scale)":"null":u.data.color),"pmSourceArc.vue"});return to(()=>{let o=R.pv.power+R.evuIn.power+R.batOut.power;o>v.maxPower&&(v.maxPower=o)}),(o,s)=>(l(),m("g",{id:"pmSourceArc",origin:a.value},null,8,Yo))}}),Zo=["origin"],Xo=B({__name:"PMUsageArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=g(()=>{let o={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:"",showInGraph:!0};const s=[j.evuOut,j.charging].concat([...ne.values()].filter(u=>u.configured&&!u.countAsHouse).sort((u,d)=>d.power-u.power)).concat([j.batIn,j.house]).concat(o),i=s.length-1,h=ma().value(u=>u.power).startAngle(Math.PI*1.5-e.circleGapSize).endAngle(Math.PI/2+e.circleGapSize).sort(null),p=va().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius),c=ce("g#pmUsageArc");return c.selectAll("*").remove(),c.selectAll("consumers").data(h(s)).enter().append("path").attr("d",p).attr("fill",u=>u.data.color).attr("stroke",(u,d)=>d==i?u.data.power>0?"var(--color-scale)":"null":u.data.color),"pmUsageArc.vue"});return(o,s)=>(l(),m("g",{id:"pmUsageArc",origin:a.value},null,8,Zo))}});function $e(t,e=1){let a;if(t>=1e3&&e<4){switch(e){case 0:a=Math.round(t/1e3);break;case 1:a=Math.round(t/100)/10;break;case 2:a=Math.round(t/10)/100;break;case 3:a=Math.round(t)/1e3;break;default:a=Math.round(t/100)/10;break}return(a==null?void 0:a.toLocaleString(void 0,{minimumFractionDigits:e}))+" kW"}else return Math.round(t).toLocaleString(void 0)+" W"}function ht(t,e=1,a=!1){let o;if(t>1e6&&(a=!0,t=t/1e3),t>=1e3&&e<4){switch(e){case 0:o=Math.round(t/1e3);break;case 1:o=(Math.round(t/100)/10).toFixed(1);break;case 2:o=(Math.round(t/10)/100).toFixed(2);break;case 3:o=(Math.round(t)/1e3).toFixed(3);break;default:o=Math.round(t/100)/10;break}return o.toLocaleString(void 0,{minimumFractionDigits:e})+(a?" MWh":" kWh")}else return Math.round(t).toLocaleString(void 0)+(a?" kWh":" Wh")}function Ko(t){const e=Math.floor(t/3600),a=(t%3600/60).toFixed(0);return e>0?e+"h "+a+" min":a+" min"}function Ca(t){return t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function en(t,e){return["Jan","Feb","März","April","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Dez"][t]+" "+e}function tn(t){return t!=999?(Math.round(t*10)/10).toLocaleString(void 0,{minimumFractionDigits:1})+"°":"-"}const vt=B({__name:"FormatWatt",props:{watt:{}},setup(t){const e=t,a=g(()=>$e(e.watt,v.decimalPlaces));return(o,s)=>$(a.value)}}),an={key:0,id:"pmLabel"},on=["x","y","fill","text-anchor"],nn=22,Le=B({__name:"PMLabel",props:{x:{},y:{},data:{},props:{},anchor:{},labeltext:{},labelicon:{},labelcolor:{}},setup(t){const e=t,a=g(()=>e.labeltext?e.labeltext:e.props?e.props.icon+" ":e.labelicon?e.labelicon+" ":""),o=g(()=>e.labelcolor?e.labelcolor:e.props?e.props.color:""),s=g(()=>!e.data||e.data.power>0),i=g(()=>e.labeltext?"":"fas");return(h,p)=>s.value?(l(),m("g",an,[n("text",{x:h.x,y:h.y,fill:o.value,"text-anchor":h.anchor,"font-size":nn,class:"pmLabel"},[n("tspan",{class:N(i.value)},$(a.value),3),n("tspan",null,[h.data!==void 0?(l(),M(vt,{key:0,watt:h.data.power},null,8,["watt"])):w("",!0)])],8,on)])):w("",!0)}}),rn={class:"wb-widget p-0 m-0 shadow"},sn={class:"d-flex justify-content-between"},ln={class:"m-4 me-0 mb-0"},cn=n("div",{class:"p-0"},"(title goes here)",-1),dn={class:"p-4 pb-0 ps-0 m-0",style:{"text-align":"right"}},un={class:"px-4 pt-4 pb-2 wb-subwidget"},hn={class:"row"},pn={class:"col m-0 p-0"},gn={class:"container-fluid m-0 p-0"},mn={key:0},vn=n("hr",null,null,-1),fn={class:"px-4 py-2 wb-subwidget"},_n={class:"row"},bn={class:"col"},yn={class:"container-fluid m-0 p-0"},$t=B({__name:"WBWidget",props:{variableWidth:{type:Boolean},fullWidth:{type:Boolean}},setup(t){const e=t,a=g(()=>e.fullWidth?"col-12":e.variableWidth&&v.preferWideBoxes?"col-lg-6":"col-lg-4");return(o,s)=>(l(),m("div",{class:N(["p-2 m-0 d-flex",a.value])},[n("div",rn,[n("div",sn,[n("h3",ln,[he(o.$slots,"title",{},()=>[cn]),he(o.$slots,"subtitle")]),n("div",dn,[he(o.$slots,"buttons")])]),n("div",un,[n("div",hn,[n("div",pn,[n("div",gn,[he(o.$slots,"default")])])])]),o.$slots.footer!=null?(l(),m("div",mn,[vn,n("div",fn,[n("div",_n,[n("div",bn,[n("div",yn,[he(o.$slots,"footer")])])])])])):w("",!0)])],2))}});class wn{constructor(){f(this,"active",!1);f(this,"etPriceList",new Map);f(this,"etProvider","");f(this,"etMaxPrice",0)}get etCurrentPriceString(){const[e]=te.etPriceList.values();return(Math.round(e*10)/10).toFixed(1)+" ct"}}const te=se(new wn),kn={id:"powermeter",class:"p-0 m-0"},Sn=["viewBox"],xn=["transform"],$n=["x"],Ge=500,Ee=20,ca=1,Mn=B({__name:"PowerMeter",setup(t){const e=Ge,a=Math.PI/40,o=[[4],[4,6],[1,4,6],[0,2,4,6],[0,2,3,5,6]],s=[{x:-85,y:e/2*1/5},{x:0,y:e/2*1/5},{x:85,y:e/2*1/5},{x:-85,y:e/2*2/5},{x:0,y:e/2*2/5},{x:85,y:e/2*2/5},{x:0,y:e/2*3/5}],i=g(()=>Ge/2-Ee),h=g(()=>{let W="",A=Object.values(R).filter(H=>H.power>0);return A.length==1&&A[0].name=="PV"?W="Aktueller Verbrauch: ":W="Bezug/Verbrauch: ",W+$e(j.house.power+j.charging.power+j.devices.power+j.batIn.power,v.decimalPlaces)}),p=g(()=>{let W=R.pv.power+R.evuIn.power+R.batOut.power;return v.maxPower>W?$e(v.maxPower,v.decimalPlaces):$e(W,v.decimalPlaces)}),c=g(()=>Object.values(P)),u=g(()=>{let W=0;return v.showRelativeArcs&&(W=v.maxPower-(R.pv.power+R.evuIn.power+R.batOut.power)),W<0?0:W}),d=g(()=>[j.evuOut,j.charging,j.devices,j.batIn,j.house].filter(W=>W.power>0)),I=g(()=>o[d.value.length-1]);function J(W){return s[I.value[W]]}function V(W){return Math.round(c.value[W].soc)}function T(W){return W.length>12?W.slice(0,11)+".":W}const E=g(()=>{const[W]=te.etPriceList.values();return Math.round(W*10)/10});return(W,A)=>(l(),M($t,{"full-width":!0},{title:y(()=>[D(" Aktuelle Leistung ")]),default:y(()=>[n("figure",kn,[(l(),m("svg",{viewBox:"0 0 "+Ge+" "+r(e)},[n("g",{transform:"translate("+Ge/2+","+r(e)/2+")"},[b(Qo,{radius:i.value,"corner-radius":ca,"circle-gap-size":a,"empty-power":u.value},null,8,["radius","empty-power"]),b(Xo,{"sh-device":r(ne),radius:i.value,"corner-radius":ca,"circle-gap-size":a,"empty-power":u.value},null,8,["sh-device","radius","empty-power"]),b(Le,{x:0,y:-r(e)/10*2,data:r(R).pv,props:r(ue).pv,anchor:"middle",config:r(v)},null,8,["y","data","props","config"]),b(Le,{x:0,y:-r(e)/10*3,data:r(R).evuIn,props:r(ue).evuIn,anchor:"middle",config:r(v)},null,8,["y","data","props","config"]),b(Le,{x:0,y:-r(e)/10,data:r(R).batOut,props:r(ue).batOut,anchor:"middle",config:r(v)},null,8,["y","data","props","config"]),r(te).active?(l(),M(Le,{key:0,x:0,y:-r(e)/10,data:r(R).batOut,props:r(ue).batOut,anchor:"middle",config:r(v)},null,8,["y","data","props","config"])):w("",!0),(l(!0),m(G,null,X(d.value,(H,C)=>(l(),M(Le,{key:C,x:J(C).x,y:J(C).y,data:H,labelicon:H.icon,labelcolor:H.color,anchor:"middle",config:r(v)},null,8,["x","y","data","labelicon","labelcolor","config"]))),128)),c.value.length>0&&r(q)[c.value[0].connectedVehicle]?(l(),M(Le,{key:1,x:-Ge/2-Ee/4+10,y:-r(e)/2+Ee+5,labeltext:T(r(q)[c.value[0].connectedVehicle].name)+": "+V(0)+"%",labelcolor:c.value[0].color,anchor:"start",config:r(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),c.value.length>1&&r(q)[c.value[1].connectedVehicle]?(l(),M(Le,{key:2,x:Ge/2+Ee/4-10,y:-r(e)/2+Ee+5,labeltext:T(r(q)[c.value[1].connectedVehicle].name)+": "+V(1)+"%",labelcolor:c.value[1].color,anchor:"end",config:r(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),r(de).batterySoc>0?(l(),M(Le,{key:3,x:-Ge/2-Ee/4+10,y:r(e)/2-Ee+15,labeltext:"Speicher: "+r(de).batterySoc+"%",labelcolor:r(j).batIn.color,anchor:"start",config:r(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),r(te).active?(l(),M(Le,{key:4,x:Ge/2+Ee/4-10,y:r(e)/2-Ee+15,value:E.value,labeltext:r(te).etCurrentPriceString,labelcolor:"var(--color-charging)",anchor:"end",config:r(v)},null,8,["x","y","value","labeltext","config"])):w("",!0),b(Le,{x:0,y:0,labeltext:h.value,labelcolor:"var(--color-fg)",anchor:"middle",config:r(v)},null,8,["labeltext","config"]),r(v).showRelativeArcs?(l(),m("text",{key:5,x:Ge/2-44,y:"2","text-anchor":"middle",fill:"var(--color-axis)","font-size":"12"}," Peak: "+$(p.value),9,$n)):w("",!0)],8,xn)],8,Sn))])]),_:1}))}}),In=["origin","origin2","transform"],Cn=B({__name:"PGSourceGraph",props:{width:{},height:{},margin:{}},setup(t){const e=t,a={house:"var(--color-house)",batIn:"var(--color-battery)",inverter:"var(--color-pv)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",pv:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)"};var o,s;const i=v.showAnimations?v.animationDuration:0,h=v.showAnimations?v.animationDelay:0,p=g(()=>{const k=ce("g#pgSourceGraph");if(_.data.length>0){_.graphMode=="month"||_.graphMode=="year"?H(k,Ne.value):A(k,Ce.value),k.selectAll(".axis").remove();const S=k.append("g").attr("class","axis");S.call(T.value),S.selectAll(".tick").attr("font-size",12),S.selectAll(".tick line").attr("stroke",W.value).attr("stroke-width",E.value),S.select(".domain").attr("stroke","var(--color-bg)")}return"pgSourceGraph.vue"}),c=g(()=>fa().value((k,S)=>k[S]??0).keys(I.value)),u=g(()=>c.value(_.data)),d=g(()=>Qe().range([e.height-10,0]).domain(_.graphMode=="year"?[0,Math.ceil(J.value[1]*10)/10]:[0,Math.ceil(J.value[1])])),I=g(()=>{let k=[];const S=["batOut","evuIn"];if(v.showInverters){const x=/pv\d+/;_.data.length>0&&(k=Object.keys(_.data[0]).reduce((L,K)=>(K.match(x)&&L.push(K),L),[]))}switch(_.graphMode){case"live":return v.showInverters?["pv","batOut","evuIn"]:["selfUsage","evuOut","batOut","evuIn"];case"today":case"day":return k.forEach((x,L)=>{a[x]="var(--color-pv"+(L+1)+")"}),v.showInverters?[...k,...S]:["selfUsage","evuOut","batOut","evuIn"];default:return["evuIn","batOut","selfUsage","evuOut"]}}),J=g(()=>{let k=Pe(_.data,S=>Math.max(S.pv+S.evuIn+S.batOut,S.selfUsage+S.evuOut));return k[0]!=null&&k[1]!=null?(_.graphMode=="year"&&(k[0]=k[0]/1e3,k[1]=k[1]/1e3),k):[0,0]}),V=g(()=>_.graphMode=="month"||_.graphMode=="year"?-e.width-e.margin.right-22:-e.width),T=g(()=>pt(d.value).tickSizeInner(V.value).ticks(4).tickFormat(k=>(k==0?"":Math.round(k*10)/10).toLocaleString(void 0))),E=g(()=>v.showGrid?"0.5":"1"),W=g(()=>v.showGrid?"var(--color-grid)":"var(--color-bg)");function A(k,S){const x=et().x((K,we)=>S(_.data[we].date)).y(d.value(0)).curve(tt),L=et().x((K,we)=>S(_.data[we].date)).y0(K=>d.value(_.graphMode=="year"?K[0]/1e3:K[0])).y1(K=>d.value(_.graphMode=="year"?K[1]/1e3:K[1])).curve(tt);ut?(k.selectAll("*").remove(),o=k.selectAll(".sourceareas").data(u.value).enter().append("path").attr("fill",(K,we)=>a[I.value[we]]).attr("d",K=>x(K)),o.transition().duration(i).delay(h).ease(st).attr("d",K=>L(K)),ra()):o.data(u.value).transition().duration(0).ease(st).attr("d",K=>L(K))}function H(k,S){_.data.length>0&&(ut?(k.selectAll("*").remove(),s=k.selectAll(".sourcebar").data(u.value).enter().append("g").attr("fill",(x,L)=>a[I.value[L]]).selectAll("rect").data(x=>x).enter().append("rect").attr("x",(x,L)=>S(_.data[L].date)??0).attr("y",()=>d.value(0)).attr("height",0).attr("width",S.bandwidth()),s.transition().duration(i).delay(h).ease(st).attr("height",x=>_.graphMode=="year"?d.value(x[0]/1e3)-d.value(x[1]/1e3):d.value(x[0])-d.value(x[1])).attr("y",x=>_.graphMode=="year"?d.value(x[1]/1e3):d.value(x[1])),ra()):(k.selectAll("*").remove(),s=k.selectAll(".sourcebar").data(u.value).enter().append("g").attr("fill",(x,L)=>a[I.value[L]]).selectAll("rect").data(x=>x).enter().append("rect").attr("x",(x,L)=>S(_.data[L].date)??0).attr("y",x=>_.graphMode=="year"?d.value(x[1]/1e3):d.value(x[1])).attr("width",S.bandwidth()).attr("height",x=>_.graphMode=="year"?d.value(x[0]/1e3)-d.value(x[1]/1e3):d.value(x[0])-d.value(x[1]))))}const C=g(()=>{const k=ce("g#pgSourceGraph");if(_.graphMode!="month"&&_.graphMode!="year"&&_.data.length>0){Ce.value.range(He.value);const S=et().x((x,L)=>Ce.value(_.data[L].date)).y0(x=>d.value(x[0])).y1(x=>d.value(x[1])).curve(tt);k.selectAll("path").attr("d",x=>x?S(x):""),k.selectAll("g#sourceToolTips").select("rect").attr("x",x=>Ce.value(x.date)).attr("width",e.width/_.data.length)}return"zoomed"});return(k,S)=>(l(),m("g",{id:"pgSourceGraph",origin:p.value,origin2:C.value,transform:"translate("+k.margin.left+","+k.margin.top+")"},null,8,In))}}),Pn=["origin","origin2","transform"],Bn=B({__name:"PGUsageGraph",props:{width:{},height:{},margin:{},stackOrder:{}},setup(t){const e=t,a=g(()=>v.showInverters?[["house","charging","devices","batIn"],["charging","devices","house","batIn"],["devices","charging","house","batIn"]]:[["house","charging","devices","batIn","evuOut"],["charging","devices","house","batIn","evuOut"],["devices","charging","house","batIn","evuOut"]]),o={house:"var(--color-house)",charging:"var(--color-charging)",batIn:"var(--color-battery)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)",cp0:"var(--color-cp0)",cp1:"var(--color-cp1)",cp2:"var(--color-cp2)",cp3:"var(--color-cp3)",sh1:"var(--color-sh1)",sh2:"var(--color-sh2)",sh3:"var(--color-sh3)",sh4:"var(--color-sh4)",devices:"var(--color-devices)"};var s,i;const h=v.showAnimations?v.animationDuration:0,p=v.showAnimations?v.animationDelay:0,c=g(()=>{const C=ce("g#pgUsageGraph");_.graphMode=="month"||_.graphMode=="year"?A(C):W(C),C.selectAll(".axis").remove();const k=C.append("g").attr("class","axis");return k.call(E.value),k.selectAll(".tick").attr("font-size",12).attr("color","var(--color-axis)"),v.showGrid?k.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):k.selectAll(".tick line").attr("stroke","var(--color-bg)"),k.select(".domain").attr("stroke","var(--color-bg)"),"pgUsageGraph.vue"}),u=g(()=>fa().value((C,k)=>C[k]??0).keys(J.value)),d=g(()=>u.value(_.data)),I=g(()=>Qe().range([e.height+10,2*e.height]).domain(_.graphMode=="year"?[0,Math.ceil(V.value[1]*10)/10]:[0,Math.ceil(V.value[1])])),J=g(()=>{if(_.graphMode!="today"&&_.graphMode!="day")return a.value[e.stackOrder];{const C=a.value[e.stackOrder].slice(),k=C.indexOf("charging");C.splice(k,1);const S=/cp\d+/;let x=[];return _.data.length>0&&(x=Object.keys(_.data[0]).reduce((L,K)=>(K.match(S)&&L.push(K),L),[])),x.forEach((L,K)=>{C.splice(k+K,0,L),o[L]="var(--color-cp"+K+")"}),v.showInverters&&C.push("evuOut"),C}}),V=g(()=>{let C=Pe(_.data,k=>k.house+k.charging+k.batIn+k.devices+k.evuOut);return C[0]!=null&&C[1]!=null?(_.graphMode=="year"&&(C[0]=C[0]/1e3,C[1]=C[1]/1e3),C):[0,0]}),T=g(()=>_.graphMode=="month"||_.graphMode=="year"?-e.width-e.margin.right-22:-e.width),E=g(()=>pt(I.value).tickSizeInner(T.value).ticks(4).tickFormat(C=>(C==0?"":Math.round(C*10)/10).toLocaleString(void 0)));function W(C){const k=et().x((x,L)=>Ce.value(_.data[L].date)).y(I.value(0)).curve(tt),S=et().x((x,L)=>Ce.value(_.data[L].date)).y0(x=>I.value(x[0])).y1(x=>I.value(x[1])).curve(tt);v.showAnimations?nt?(C.selectAll("*").remove(),s=C.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",x=>k(x)).attr("fill",(x,L)=>o[J.value[L]]),s.transition().duration(300).delay(100).ease(st).attr("d",x=>S(x)),sa()):(C.selectAll("*").remove(),C.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",x=>S(x)).attr("fill",(x,L)=>o[J.value[L]])):(C.selectAll("*").remove(),C.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",x=>S(x)).attr("fill",(x,L)=>o[J.value[L]]))}function A(C){nt?(C.selectAll("*").remove(),i=C.selectAll(".usagebar").data(d.value).enter().append("g").attr("fill",(k,S)=>o[a.value[e.stackOrder][S]]).selectAll("rect").data(k=>k).enter().append("rect").attr("x",(k,S)=>Ne.value(_.data[S].date)??0).attr("y",()=>I.value(0)).attr("height",0).attr("width",Ne.value.bandwidth()),i.transition().duration(h).delay(p).ease(st).attr("y",k=>_.graphMode=="year"?I.value(k[0]/1e3):I.value(k[0])).attr("height",k=>_.graphMode=="year"?I.value(k[1]/1e3)-I.value(k[0]/1e3):I.value(k[1])-I.value(k[0])),sa()):(C.selectAll("*").remove(),i=C.selectAll(".usagebar").data(d.value).enter().append("g").attr("fill",(k,S)=>o[a.value[e.stackOrder][S]]).selectAll("rect").data(k=>k).enter().append("rect").attr("x",(k,S)=>Ne.value(_.data[S].date)??0).attr("y",k=>_.graphMode=="year"?I.value(k[0]/1e3):I.value(k[0])).attr("height",k=>_.graphMode=="year"?I.value(k[1]/1e3)-I.value(k[0]/1e3):I.value(k[1])-I.value(k[0])).attr("width",Ne.value.bandwidth()))}const H=g(()=>{const C=ce("g#pgUsageGraph");if(_.graphMode!="month"&&_.graphMode!="year"){Ce.value.range(He.value);const k=et().x((S,x)=>Ce.value(_.data[x].date)).y0(S=>I.value(S[0])).y1(S=>I.value(S[1])).curve(tt);C.selectAll("path").attr("d",S=>S?k(S):"")}return"zoomed"});return(C,k)=>(l(),m("g",{id:"pgUsageGraph",origin:c.value,origin2:H.value,transform:"translate("+C.margin.left+","+C.margin.top+")"},null,8,Pn))}}),Vn=["transform"],Ln=["origin","origin2","transform"],On=["origin","transform"],An={key:0},Tn=["width","height"],Wn={key:1},Dn=["y","width","height"],Pt=12,zn=B({__name:"PGXAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=g(()=>it(Ce.value).ticks(6).tickSizeInner(h.value).tickFormat(ot("%H:%M"))),o=g(()=>ao(Ce.value).ticks(6).tickSizeInner(h.value+3).tickFormat(ot(""))),s=g(()=>it(Ne.value).ticks(4).tickSizeInner(h.value).tickFormat(d=>d.toString())),i=g(()=>it(Ne.value).ticks(4).tickSizeInner(h.value).tickFormat(()=>"")),h=g(()=>_.graphMode!=="month"&&_.graphMode!=="year"?v.showGrid?-(e.height/2-7):-10:0),p=g(()=>{let d=ce("g#PGXAxis");return d.selectAll("*").remove(),_.graphMode=="month"||_.graphMode=="year"?d.call(s.value):d.call(a.value),d.selectAll(".tick > text").attr("fill",(I,J)=>J>=0||_.graphMode=="month"||_.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",Pt),v.showGrid?d.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):d.selectAll(".tick line").attr("stroke","var(--color-bg)"),d.select(".domain").attr("stroke","var(--color-bg)"),d.append("text").attr("x",-e.margin.left).attr("y",12).attr("fill","var(--color-axis)").attr("font-size",Pt).text(_.graphMode=="year"?"MW":"kW").attr("text-anchor","start"),"PGXAxis.vue"}),c=g(()=>{let d=ce("g#PGXAxis2");return d.selectAll("*").remove(),_.graphMode=="month"||_.graphMode=="year"?d.call(i.value):d.call(o.value),d.selectAll(".tick > text").attr("fill",(I,J)=>J>=0||_.graphMode=="month"||_.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",Pt),v.showGrid?(d.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"),d.select(".domain").attr("stroke","var(--color-bg)")):d.selectAll(".tick line").attr("stroke","var(--color-bg)"),d.select(".domain").attr("stroke","var(--color-bg)"),"PGXAxis2.vue"}),u=g(()=>{if(_.graphMode!="month"&&_.graphMode!="year"){const d=ce("g#PGXAxis"),I=ce("g#PGXAxis2");_.graphMode=="month"||_.graphMode=="year"?(Ne.value.range(He.value),d.call(s.value),I.call(i.value)):(Ce.value.range(He.value),d.call(a.value),I.call(o.value))}return"zoomed"});return(d,I)=>(l(),m("g",{transform:"translate("+d.margin.left+","+d.margin.top+")"},[n("g",{id:"PGXAxis",class:"axis",origin:p.value,origin2:u.value,transform:"translate(0,"+(d.height/2-6)+")"},null,8,Ln),n("g",{id:"PGXAxis2",class:"axis",origin:c.value,transform:"translate(0,"+(d.height/2+10)+")"},null,8,On),r(v).showGrid?(l(),m("g",An,[n("rect",{x:"0",y:"0",width:d.width,height:d.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Tn)])):w("",!0),r(v).showGrid?(l(),m("g",Wn,[n("rect",{x:"0",y:d.height/2+10,width:d.width,height:d.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Dn)])):w("",!0)],8,Vn))}}),Gn=["id",".origin","d"],En=["id","d","stroke"],jn=["x","y","text-anchor"],Bt=B({__name:"PgSoc",props:{width:{},height:{},margin:{},order:{}},setup(t){const e=t,a=g(()=>{let V=Pe(_.data,T=>T.date);return V[0]&&V[1]?Ye().domain(V).range([0,e.width]):Ye().range([0,0])}),o=g(()=>Qe().range([e.height-10,0]).domain([0,100])),s=g(()=>{let T=bt().x(E=>a.value(E.date)).y(E=>o.value(e.order==2?E.batSoc:E["soc"+u.value.connectedVehicle])??o.value(0))(_.data);return T||""}),i=g(()=>e.order==2?"Speicher":u.value.connectedVehicle),h=g(()=>e.order==2?"Speicher":u.value.vehicleName),p=g(()=>{switch(e.order){case 0:return"var(--color-cp1)";case 1:return"var(--color-cp2)";case 2:return"var(--color-battery)";default:return"red"}}),c=g(()=>{switch(e.order){case 0:return e.width-3;case 1:return 3;case 2:return e.width/2;default:return 0}}),u=g(()=>{const V=e.order==2?0:e.order;return Object.values(P)[V]}),d=g(()=>{if(_.data.length>0){let V;switch(e.order){case 0:return V=_.data.length-1,o.value(_.data[V]["soc"+i.value]+2);case 1:return V=0,o.value(_.data[V]["soc"+i.value]+2);case 2:return V=Math.round(_.data.length/2),o.value(_.data[V].batSoc+2);default:return 0}}else return 0}),I=g(()=>{switch(e.order){case 0:return"end";case 1:return"start";case 2:return"middle";default:return"middle"}}),J=g(()=>{if(_.graphMode!="month"&&_.graphMode!="year"){const V=ce("path#soc-"+i.value),T=ce("path#socdashes-"+i.value);a.value.range(He.value);const E=bt().x(W=>a.value(W.date)).y(W=>o.value(e.order==2?W.batSoc:W["soc"+u.value.connectedVehicle])??o.value(0));V.attr("d",E(_.data)),T.attr("d",E(_.data))}return"zoomed"});return(V,T)=>(l(),m(G,null,[n("path",{id:"soc-"+i.value,".origin":J.value,class:"soc-baseline",d:s.value,stroke:"var(--color-bg)","stroke-width":"1",fill:"none"},null,40,Gn),n("path",{id:"socdashes-"+i.value,class:"soc-dashes",d:s.value,stroke:p.value,"stroke-width":"1",style:{strokeDasharray:"3,3"},fill:"none"},null,8,En),n("text",{class:"cpname",x:c.value,y:d.value,style:Q({fill:p.value,fontSize:10}),"text-anchor":I.value},$(h.value),13,jn)],64))}}),Un=["transform"],Fn=B({__name:"PgSocAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=g(()=>Qe().range([e.height-10,0]).domain([0,100])),o=g(()=>oo(a.value).ticks(5).tickFormat(i=>i.toString()+"%"));function s(){let i=ce("g#PGSocAxis");i.call(o.value),i.selectAll(".tick").attr("font-size",12),i.selectAll(".tick line").attr("stroke","var(--color-bg)"),i.select(".domain").attr("stroke","var(--color-bg)")}return Ve(()=>{s()}),(i,h)=>(l(),m("g",{id:"PGSocAxis",class:"axis",transform:"translate("+(i.width-20)+",0)"},null,8,Un))}}),Nn=t=>(ae("data-v-7b8949f3"),t=t(),oe(),t),Hn={class:"d-flex align-self-top justify-content-center align-items-center"},Rn={class:"input-group input-group-xs"},Jn={key:0,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},qn={class:"dropdown-menu"},Yn={class:"table optiontable"},Qn=["onClick"],Zn={key:1,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},Xn={class:"dropdown-menu"},Kn={class:"table optiontable"},er=["onClick"],tr={key:2,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},ar={class:"dropdown-menu"},or={class:"table optiontable"},nr=["onClick"],rr=Nn(()=>n("span",{class:"fa-solid fa-circle-check"},null,-1)),sr=[rr],ir=B({__name:"DateInput",props:{modelValue:{type:Date,required:!0},mode:{type:String,default:"day"}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,o=new Date().getFullYear();let s=Array.from({length:10},(V,T)=>o-T);const i=Z(!0),h=e,p=[[0,1,2,3],[4,5,6,7],[8,9,10,11]],c=Z(a.modelValue.getDate()),u=Z(a.modelValue.getMonth()),d=Z(a.modelValue.getFullYear()),I=g(()=>{const T=new Date(d.value,u.value,1).getDay();let E=0;switch(u.value){case 1:case 3:case 5:case 7:case 8:case 10:case 12:E=31;break;case 4:case 6:case 9:case 11:E=30;break;case 2:Math.trunc(d.value/4)*4==d.value&&(E=29)}let W=[],A=[0,0,0,0,0,0,0],H=T;for(let C=0;C<E;C++)A[H]=C+1,H==6?(W.push(A),A=[0,0,0,0,0,0,0],H=0):H++;return H<8&&W.push(A),W});function J(){h("update:modelValue",new Date(d.value,u.value,c.value)),i.value=!1}return(V,T)=>(l(),m("span",Hn,[n("div",Rn,[a.mode=="day"||a.mode=="today"?(l(),m("button",Jn,$(c.value),1)):w("",!0),n("div",qn,[n("table",Yn,[(l(!0),m(G,null,X(I.value,(E,W)=>(l(),m("tr",{key:W,class:""},[(l(!0),m(G,null,X(E,(A,H)=>(l(),m("td",{key:H},[A!=0?(l(),m("span",{key:0,type:"button",class:"btn optionbutton",onClick:C=>c.value=A},$(A),9,Qn)):w("",!0)]))),128))]))),128))])]),a.mode!="year"&&a.mode!="live"?(l(),m("button",Zn,$(u.value+1),1)):w("",!0),n("div",Xn,[n("table",Kn,[(l(),m(G,null,X(p,(E,W)=>n("tr",{key:W,class:""},[(l(!0),m(G,null,X(E,(A,H)=>(l(),m("td",{key:H,class:"p-0 m-0"},[n("span",{type:"button",class:"btn btn-sm optionbutton",onClick:C=>u.value=A},$(A+1),9,er)]))),128))])),64))])]),a.mode!="live"?(l(),m("button",tr,$(d.value),1)):w("",!0),n("div",ar,[n("table",or,[(l(!0),m(G,null,X(r(s),(E,W)=>(l(),m("tr",{key:W,class:""},[n("td",null,[n("span",{type:"button",class:"btn optionbutton",onClick:A=>d.value=E},$(E),9,nr)])]))),128))])]),a.mode!="live"?(l(),m("button",{key:3,class:"button-outline-secondary",type:"button",onClick:J},sr)):w("",!0)])]))}}),U=(t,e)=>{const a=t.__vccOpts||t;for(const[o,s]of e)a[o]=s;return a},lr=U(ir,[["__scopeId","data-v-7b8949f3"]]),cr={class:"btn-group m-0",role:"group","aria-label":"radiobar"},dr=["id","value"],ur=B({__name:"RadioBarInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,o=e,s=g({get(){return a.modelValue},set(p){o("update:modelValue",p)}});function i(p){let c=a.options[p].color?a.options[p].color:"var(--color-fg)";return a.options[p].active?{color:"var(--color-bg)",background:c}:{color:c}}function h(p){let c=p.target;for(;c&&!c.value&&c.parentElement;)c=c.parentElement;c.value&&(s.value=c.value)}return(p,c)=>(l(),m("div",null,[n("div",cr,[(l(!0),m(G,null,X(p.options,(u,d)=>(l(),m("button",{id:"radio-"+u.value,key:d,class:N(["btn btn-outline-secondary btn-sm radiobutton mx-0 mb-0 px-2",u.value==s.value?"active":""]),value:u.value,style:Q(i(d)),onClick:h},[n("span",{style:Q(i(d))},[u.icon?(l(),m("i",{key:0,class:N(["fa-solid",u.icon])},null,2)):w("",!0),D(" "+$(u.text),1)],4)],14,dr))),128))])]))}}),Pa=U(ur,[["__scopeId","data-v-82ab6829"]]),Mt=t=>(ae("data-v-d75ec1a4"),t=t(),oe(),t),hr=Mt(()=>n("i",{class:"fa-solid fa-xl fa-chevron-circle-up"},null,-1)),pr=[hr],gr=Mt(()=>n("span",{class:"fa-solid fa-xl fa-chevron-circle-left arrowButton"},null,-1)),mr=[gr],vr=Mt(()=>n("span",{class:"fa-solid fa-xl fa-gear"},null,-1)),fr=[vr],_r=Mt(()=>n("span",{class:"fa-solid fa-xl fa-circle-check"},null,-1)),br=[_r],yr=B({__name:"PgSelector",props:{widgetid:{},showLeftButton:{type:Boolean},showRightButton:{type:Boolean},ignoreLive:{type:Boolean}},emits:["shiftLeft","shiftRight","shiftUp","shiftDown"],setup(t){const e=t,a=Z(0),o=g(()=>{if(_.waitForData)return"Lädt";switch(_.graphMode){case"live":return e.ignoreLive?"heute":`${pe.duration} min`;case"today":return"heute";case"day":return le.date.getDate()+"."+(le.date.getMonth()+1)+".";case"month":return en(Te.month-1,Te.year);case"year":return Fe.year.toString();default:return"???"}}),s=["live","today","day","month","year"],i=["Live","Heute","Tag","Monat","Jahr"],h=g({get(){return _.graphMode},set(H){switch(H){case"day":I();break;case"today":J();break;case"live":d();break;case"month":V();break;case"year":T()}}}),p=g(()=>{switch(_.graphMode){case"live":case"today":return le.getDate();case"month":return Te.getDate();default:return le.getDate()}});function c(H){ia(H)}function u(){a.value+=1,a.value>2&&(a.value=0)}function d(){_.graphMode!="live"&&(_.graphMode="live",me())}function I(){_.graphMode!="day"&&_.graphMode!="today"&&(_.graphMode="day",me())}function J(){_.graphMode!="today"&&(_.graphMode="today",ia(new Date),me())}function V(){_.graphMode!="month"&&(_.graphMode="month",me())}function T(){_.graphMode!="year"&&(_.graphMode="year",me())}const E=g(()=>a.value>0?{border:"1px solid var(--color-frame)"}:""),W=g(()=>a.value==1?"justify-content-between":"justify-content-end"),A=g(()=>a.value==1?"justify-content-between":"justify-content-center");return(H,C)=>(l(),m("div",{class:"d-flex flex-column justify-content-center pgselector rounded",style:Q(E.value)},[a.value==2?(l(),M(Pa,{key:0,id:"pgm2",modelValue:h.value,"onUpdate:modelValue":C[0]||(C[0]=k=>h.value=k),class:"m-2",options:s.map((k,S)=>({text:i[S],value:k,color:"var(--color-menu)",active:k==r(_).graphMode}))},null,8,["modelValue","options"])):w("",!0),a.value==1?(l(),m("span",{key:1,type:"button",class:N(["arrowButton d-flex align-self-center mb-3 mt-3",{disabled:!e.showLeftButton}]),onClick:C[1]||(C[1]=k=>H.$emit("shiftUp"))},pr,2)):w("",!0),n("div",{class:N(["d-flex align-items-center",A.value])},[a.value==1?(l(),m("span",{key:0,type:"button",class:N(["p-1",{disabled:!e.showLeftButton}]),onClick:C[2]||(C[2]=k=>H.$emit("shiftLeft"))},mr,2)):w("",!0),a.value<2?(l(),m("span",{key:1,type:"button",class:"btn-outline-secondary p-2 px-3 badge rounded-pill datebadge",onClick:u},$(o.value),1)):w("",!0),a.value==2?(l(),M(lr,{key:2,"model-value":p.value,mode:r(_).graphMode,"onUpdate:modelValue":c},null,8,["model-value","mode"])):w("",!0),a.value==1?(l(),m("span",{key:3,id:"graphRightButton",type:"button",class:N(["arrowButton fa-solid fa-xl fa-chevron-circle-right p-1",{disabled:!e.showRightButton}]),onClick:C[3]||(C[3]=k=>H.$emit("shiftRight"))},null,2)):w("",!0)],2),n("div",{class:N(["d-flex align-items-center",W.value])},[a.value==1?(l(),m("span",{key:0,type:"button",class:"p-1",onClick:u},fr)):w("",!0),a.value==1?(l(),m("span",{key:1,id:"graphLeftButton",type:"button",class:N(["arrowButton fa-solid fa-xl fa-chevron-circle-down p-1",{disabled:!e.showLeftButton}]),onClick:C[4]||(C[4]=k=>H.$emit("shiftDown"))},null,2)):w("",!0),a.value>0?(l(),m("span",{key:2,type:"button",class:"p-1",onClick:C[5]||(C[5]=k=>a.value=0)},br)):w("",!0)],2)],4))}}),Ba=U(yr,[["__scopeId","data-v-d75ec1a4"]]),wr=["x","fill"],kr=["x"],Me=B({__name:"PgToolTipLine",props:{cat:{},name:{},indent:{},power:{},width:{}},setup(t){const e=t;return(a,o)=>(l(),m(G,null,[a.power>0?(l(),m("tspan",{key:0,x:a.indent,dy:"1.3em",class:N(a.name?"":"fas"),fill:r(ue)[a.cat].color},$(a.name?a.name:r(ue)[a.cat].icon)+"   ",11,wr)):w("",!0),n("tspan",{"text-anchor":"end",x:a.width-a.indent},[e.power>0?(l(),M(vt,{key:0,watt:a.power*1e3},null,8,["watt"])):w("",!0)],8,kr)],64))}}),Sr=["transform"],xr=["width","height"],$r={"text-anchor":"start",x:"5",y:"20","font-size":"16",fill:"var(--color-fg)"},Mr=["x"],Ir=n("line",{y:"120",x1:"5",x2:"100",stroke:"var(--color-fg)","stroke-width":"1"},null,-1),Cr=B({__name:"PgToolTipItem",props:{entry:{},boxwidth:{},xScale:{type:[Function,Object]}},setup(t){const e=t,a=g(()=>Object.values(e.entry).filter(c=>c>0).length),o=g(()=>a.value*16),s=g(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("pv")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:je.value.get(c)?p(je.value.get(c)):"Wechselr.",id:c}))),i=g(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("cp")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:je.value.get(c)?p(je.value.get(c)):"Ladep.",id:c}))),h=g(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("sh")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:je.value.get(c)?p(je.value.get(c)):"Gerät",id:c})));function p(c){return c.length>6?c.slice(0,6)+"...":c}return(c,u)=>(l(),m("g",{class:"ttmessage",transform:"translate("+c.xScale(c.entry.date)+",0)"},[n("rect",{rx:"5",width:c.boxwidth,height:o.value,fill:"var(--color-bg)",opacity:"80%",stroke:"var(--color-menu)"},null,8,xr),n("text",$r,[n("tspan",{"text-anchor":"middle",x:c.boxwidth/2,dy:"0em"},$(r(ot)("%H:%M")(new Date(c.entry.date))),9,Mr),Ir,b(Me,{cat:"evuIn",indent:5,power:c.entry.evuIn,width:c.boxwidth},null,8,["power","width"]),b(Me,{cat:"batOut",indent:5,power:c.entry.batOut,width:c.boxwidth},null,8,["power","width"]),b(Me,{cat:"pv",indent:5,power:c.entry.pv,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,X(s.value,d=>(l(),M(Me,{key:d.id,cat:"pv",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Me,{cat:"house",indent:5,power:c.entry.house,width:c.boxwidth},null,8,["power","width"]),b(Me,{cat:"charging",indent:5,power:c.entry.charging,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,X(i.value,d=>(l(),M(Me,{key:d.id,cat:"charging",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Me,{cat:"devices",indent:5,power:c.entry.devices,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,X(h.value,d=>(l(),M(Me,{key:d.id,cat:"devices",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Me,{cat:"batIn",indent:5,power:c.entry.batIn,width:c.boxwidth},null,8,["power","width"]),b(Me,{cat:"evuOut",indent:5,power:c.entry.evuOut,width:c.boxwidth},null,8,["power","width"])])],8,Sr))}}),Pr=["origin","transform"],Br=["x","height","width"],da=140,Vr=B({__name:"PgToolTips",props:{width:{},height:{},margin:{},data:{}},setup(t){const e=t,a=g(()=>{const i=Pe(e.data,h=>new Date(h.date));return i[0]&&i[1]?Ut().domain(i).range([0,e.width-e.margin.right]):Ye().range([0,0])}),o=g(()=>{const i=Pe(e.data,h=>new Date(h.date));return i[0]&&i[1]?Ut().domain(i).range([0,e.width-e.margin.right-da]):Ye().range([0,0])}),s=g(()=>((_.graphMode=="day"||_.graphMode=="today")&&(a.value.range(He.value),ce("g#pgToolTips").selectAll("g.ttarea").select("rect").attr("x",(i,h)=>e.data.length>h?a.value(e.data[h].date):0).attr("width",e.data.length>0?(He.value[1]-He.value[0])/e.data.length:0)),"PgToolTips.vue:autozoom"));return(i,h)=>(l(),m("g",{id:"pgToolTips",origin:s.value,transform:"translate("+i.margin.left+","+i.margin.top+")"},[(l(!0),m(G,null,X(i.data,p=>(l(),m("g",{key:p.date,class:"ttarea"},[n("rect",{x:a.value(p.date),y:"0",height:i.height,class:"ttrect",width:r(_).data.length>0?i.width/r(_).data.length:0,opacity:"1%",fill:"var(--color-charging)"},null,8,Br),b(Cr,{entry:p,boxwidth:da,"x-scale":o.value},null,8,["entry","x-scale"])]))),128))],8,Pr))}}),Va=t=>(ae("data-v-9dcdaf2b"),t=t(),oe(),t),Lr={class:"d-flex justify-content-end"},Or=Va(()=>n("span",{class:"fa-solid fa-lg ps-1 fa-magnifying-glass"},null,-1)),Ar=[Or],Tr={id:"powergraph",class:"p-0 m-0"},Wr=["viewBox"],Dr=["transform"],zr=["x","y"],Gr=Va(()=>n("tspan",{fill:"var(--color-menu)",class:"fas fa-lg"},$(""),-1)),Er=[Gr],jr=2,Ur="Leistung / Ladestand ",Fr=B({__name:"PowerGraph",setup(t){function e(){let h=v.usageStackOrder+1;h>jr&&(h=0),v.usageStackOrder=h,To(!0)}function a(h){const p=[[0,z.top],[_e,xe-z.top]];h.call(ro().scaleExtent([1,8]).translateExtent([[0,0],[_e,xe]]).extent(p).filter(s).on("zoom",o))}function o(h){Sa.value=h.transform}function s(h){return h.preventDefault(),(!h.ctrlKey||h.type==="wheel")&&!h.button}function i(){v.zoomGraph=!v.zoomGraph}return Ve(()=>{const h=ce("svg#powergraph");a(h)}),(h,p)=>(l(),M($t,{"full-width":!0},{title:y(()=>[D($(Ur))]),buttons:y(()=>[n("div",Lr,[b(Ba,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!1,onShiftLeft:r(Kt),onShiftRight:r(xa),onShiftUp:r($a),onShiftDown:r(Ma)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"]),r(Re)?(l(),m("span",{key:0,type:"button",class:"ms-1 p-0 pt-1",onClick:i},Ar)):w("",!0)])]),default:y(()=>[gt(n("figure",Tr,[(l(),m("svg",{id:"powergraph",viewBox:"0 0 "+r(_e)+" "+r(xe)},[b(Cn,{width:r(_e)-r(z).left-2*r(z).right,height:(r(xe)-r(z).top-r(z).bottom)/2,margin:r(z)},null,8,["width","height","margin"]),b(Bn,{width:r(_e)-r(z).left-2*r(z).right,height:(r(xe)-r(z).top-r(z).bottom)/2,margin:r(z),"stack-order":r(v).usageStackOrder},null,8,["width","height","margin","stack-order"]),b(zn,{width:r(_e)-r(z).left-2*r(z).right,height:r(xe)-r(z).top-r(z).bottom,margin:r(z),"graph-data":r(_)},null,8,["width","height","margin","graph-data"]),n("g",{transform:"translate("+r(z).left+","+r(z).top+")"},[(r(_).graphMode=="day"||r(_).graphMode=="today"||r(_).graphMode=="live")&&Object.values(r(P)).length>0?(l(),M(Bt,{key:0,width:r(_e)-r(z).left-2*r(z).right,height:(r(xe)-r(z).top-r(z).bottom)/2,margin:r(z),order:0},null,8,["width","height","margin"])):w("",!0),(r(_).graphMode=="day"||r(_).graphMode=="today"||r(_).graphMode=="live")&&Object.values(r(P)).length>1?(l(),M(Bt,{key:1,width:r(_e)-r(z).left-2*r(z).right,height:(r(xe)-r(z).top-r(z).bottom)/2,margin:r(z),order:1},null,8,["width","height","margin"])):w("",!0),(r(_).graphMode=="day"||r(_).graphMode=="today"||r(_).graphMode=="live")&&r(de).isBatteryConfigured?(l(),M(Bt,{key:2,width:r(_e)-r(z).left-2*r(z).right,height:(r(xe)-r(z).top-r(z).bottom)/2,margin:r(z),order:2},null,8,["width","height","margin"])):w("",!0),r(_).graphMode=="day"||r(_).graphMode=="today"||r(_).graphMode=="live"?(l(),M(Fn,{key:3,width:r(_e)-r(z).left-r(z).right,height:(r(xe)-r(z).top-r(z).bottom)/2,margin:r(z)},null,8,["width","height","margin"])):w("",!0)],8,Dr),r(_).graphMode=="day"||r(_).graphMode=="today"?(l(),M(Vr,{key:0,width:r(_e)-r(z).left-r(z).right,height:r(xe)-r(z).top-r(z).bottom,margin:r(z),data:r(_).data},null,8,["width","height","margin","data"])):w("",!0),n("g",{id:"button",onClick:e},[n("text",{x:r(_e)-10,y:r(xe)-10,color:"var(--color-menu)","text-anchor":"end"},Er,8,zr)])],8,Wr))],512),[[no,r(_).data.length>0]])]),_:1}))}}),Nr=U(Fr,[["__scopeId","data-v-9dcdaf2b"]]),Hr=["id"],Rr=["x","width","height","fill"],Jr=["x","width","height"],qr=["x","y","width","height"],Yr=B({__name:"EmBar",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=g(()=>e.height-e.yScale(e.item.energy)-e.margin.top-e.margin.bottom),o=g(()=>{let i=0;return e.item.energyPv>0&&(i=e.height-e.yScale(e.item.energyPv)-e.margin.top-e.margin.bottom),i>a.value&&(i=a.value),i}),s=g(()=>{let i=0;return e.item.energyBat>0&&(i=e.height-e.yScale(e.item.energyBat)-e.margin.top-e.margin.bottom),i>a.value&&(i=a.value),i});return(i,h)=>(l(),m("g",{id:"bar-"+e.item.name,transform:"scale(1,-1) translate (0,-445)"},[n("rect",{class:"bar",x:e.xScale(i.item.name),y:"0",width:e.xScale.bandwidth(),height:a.value,fill:i.item.color},null,8,Rr),n("rect",{class:"bar",x:e.xScale(i.item.name)+e.xScale.bandwidth()/6,y:"0",width:e.xScale.bandwidth()*2/3,height:o.value,fill:"var(--color-pv)","fill-opacity":"66%"},null,8,Jr),n("rect",{class:"bar",x:e.xScale(i.item.name)+e.xScale.bandwidth()/6,y:o.value,width:e.xScale.bandwidth()*2/3,height:s.value,fill:"var(--color-battery)","fill-opacity":"66%"},null,8,qr)],8,Hr))}}),Qr={id:"emBargraph"},Zr=n("animateTransform",{"attribute-name":"transform",type:"scale",from:"1 0",to:"1 1",begin:"0s",dur:"2s"},null,-1),Xr=B({__name:"EMBarGraph",props:{plotdata:{},xScale:{},yScale:{},margin:{},height:{}},setup(t){const e=t;function a(s){if(s.name=="PV"){const i=_.graphMode=="live"||_.graphMode=="day"?R:O.items,p=(_.graphMode=="live"||_.graphMode=="day"?j:O.items).evuOut.energy,c=i.pv.energy;return Math.round((c-p)/c*100)}else if(s.name=="Netz"){const i=_.graphMode=="live"||_.graphMode=="day"?R:O.items,h=_.graphMode=="live"||_.graphMode=="day"?j:O.items,p=h.evuOut.energy,c=i.evuIn.energy,u=i.pv.energy,d=i.batOut.energy,I=h.batIn.energy;return Math.round((u+d-p-I)/(u+d+c-p-I)*100)}else return s.pvPercentage}function o(s){return s.name=="PV"?"Eigen":"Aut"}return(s,i)=>(l(),m("g",Qr,[(l(!0),m(G,null,X(e.plotdata,(h,p)=>(l(),m("g",{key:p},[b(Yr,{item:h,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":o(h),autarchy:a(h)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128)),Zr]))}}),Kr=["origin"],es=B({__name:"EMYAxis",props:{yScale:{type:[Function,Object]},width:{},fontsize:{}},setup(t){const e=t,a=g(()=>pt(e.yScale).tickFormat(i=>s(i)).ticks(6).tickSizeInner(-e.width)),o=g(()=>{const i=ce("g#emYAxis");return i.attr("class","axis").call(a.value),i.append("text").attr("y",6).attr("dy","0.71em").attr("text-anchor","end").text("energy"),i.selectAll(".tick").attr("font-size",e.fontsize),v.showGrid?i.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):i.selectAll(".tick line").attr("stroke","var(--color-bg)"),i.select(".domain").attr("stroke","var(--color-bg)"),"emYAxis.vue"});function s(i){return i>0?_.graphMode=="year"?(i/1e6).toString():(i/1e3).toString():""}return(i,h)=>(l(),m("g",{id:"emYAxis",class:"axis",origin:o.value},null,8,Kr))}}),ts=["id"],as=["x","y","font-size"],os=["x","y","font-size","fill"],ns=["x","y","font-size","fill"],rs=B({__name:"EmLabel",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=g(()=>e.autarchy?e.yScale(e.item.energy)-25:e.yScale(e.item.energy)-10),o=g(()=>{let c=16,u=e.barcount;return u<=5?c=16:u==6?c=14:u>6&&u<=8?c=13:u==9?c=11:u==10?c=10:c=9,c}),s=g(()=>{let c=12,u=e.barcount;return u<=5?c=12:u==6?c=11:u>6&&u<=8||u==9?c=8:u==10?c=7:c=6,c});function i(c,u){return u.length>s.value?u.substring(0,s.value)+".":u}function h(){return e.autarchy?e.autText+": "+e.autarchy.toLocaleString(void 0)+" %":""}function p(){return"var(--color-pv)"}return(c,u)=>(l(),m("g",{id:"barlabel-"+e.item.name},[n("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:a.value,"font-size":o.value,"text-anchor":"middle",fill:"var(--color-menu)"},$(r(ht)(c.item.energy,r(v).decimalPlaces,!1)),9,as),n("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:e.yScale(c.item.energy)-10,"font-size":o.value-2,"text-anchor":"middle",fill:p()},$(h()),9,os),n("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:e.height-e.margin.bottom-5,"font-size":o.value,"text-anchor":"middle",fill:c.item.color,class:N(c.item.icon.length<=2?"fas":"")},$(i(c.item.name,c.item.icon)),11,ns)],8,ts))}}),ss={id:"emBarLabels"},is=B({__name:"EMLabels",props:{plotdata:{},xScale:{},yScale:{},height:{},margin:{}},setup(t){const e=t;function a(s){if(s.name=="PV"){const i=_.graphMode=="live"||_.graphMode=="today"?R:O.items,p=(_.graphMode=="live"||_.graphMode=="today"?j:O.items).evuOut.energy,c=i.pv.energy;return Math.round((c-p)/c*100)}else if(s.name=="Netz"){const i=_.graphMode=="live"||_.graphMode=="today"?R:O.items,h=_.graphMode=="live"||_.graphMode=="today"?j:O.items,p=h.evuOut.energy,c=i.evuIn.energy,u=i.pv.energy,d=i.batOut.energy,I=h.batIn.energy;return u+d-p-I>0?Math.round((u+d-p-I)/(u+d+c-p-I)*100):0}else return s.pvPercentage}function o(s){return s.name=="PV"?"Eigen":"Aut"}return(s,i)=>(l(),m("g",ss,[(l(!0),m(G,null,X(e.plotdata,(h,p)=>(l(),m("g",{key:p},[b(rs,{item:h,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":o(h),autarchy:a(h)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128))]))}}),ls={id:"energymeter",class:"p-0 m-0"},cs={viewBox:"0 0 500 500"},ds=["transform"],us=["x"],hs={key:0},ua=500,Vt=500,ha=12,ps="Energie",gs=B({__name:"EnergyMeter",setup(t){const e={top:25,bottom:30,left:25,right:0},a=g(()=>{let p=Object.values(R),c=i.value;const u=O.items;let d=[];switch(v.debug&&h(),wt.value==!0&&(wt.value=!1),_.graphMode){default:case"live":case"today":d=p.concat(c);break;case"day":case"month":case"year":Object.values(u).length==0?dt.value=!0:(dt.value=!1,d=[u.evuIn,u.pv,u.evuOut,u.batOut,u.charging],Object.values(P).length>1&&Object.keys(P).forEach(I=>{u["cp"+I]&&d.push(u["cp"+I])}),d.push(u.devices),ne.forEach((I,J)=>{I.showInGraph&&u["sh"+J]&&d.push(u["sh"+J])}),d=d.concat([u.batIn,u.house]))}return d.filter(I=>I.energy&&I.energy>0)}),o=g(()=>Ft().range([0,ua-e.left-e.right]).domain(a.value.map(p=>p.name)).padding(.4)),s=g(()=>Qe().range([Vt-e.bottom-e.top,15]).domain([0,so(a.value,p=>p.energy)])),i=g(()=>{const p=Object.values(P).length,c=[...ne.values()].filter(d=>d.configured).length;let u=j;return[...[u.evuOut,u.charging].concat(p>1?Object.values(P).map(d=>d.toPowerItem()):[]),...[u.devices].concat(c>1?[...ne.values()].filter(d=>d.configured&&d.showInGraph):[]).concat([j.batIn,j.house])]});function h(){console.debug(["source summary:",R]),console.debug(["usage details:",i.value]),console.debug(["historic summary:",O])}return(p,c)=>(l(),M($t,{"full-width":!0},{title:y(()=>[D($(ps))]),buttons:y(()=>[b(Ba,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!0,onShiftLeft:r(Kt),onShiftRight:r(xa),onShiftUp:r($a),onShiftDown:r(Ma)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])]),default:y(()=>[n("figure",ls,[(l(),m("svg",cs,[n("g",{transform:"translate("+e.left+","+e.top+")"},[b(Xr,{plotdata:a.value,"x-scale":o.value,"y-scale":s.value,height:Vt,margin:e},null,8,["plotdata","x-scale","y-scale"]),b(es,{"y-scale":s.value,width:ua,fontsize:ha,config:r(v)},null,8,["y-scale","config"]),n("text",{x:-e.left,y:"-15",fill:"var(--color-axis)","font-size":ha},$(r(_).graphMode=="year"?"MWh":"kWh"),9,us),b(is,{plotdata:a.value,"x-scale":o.value,"y-scale":s.value,height:Vt,margin:e,config:r(v)},null,8,["plotdata","x-scale","y-scale","config"])],8,ds)]))]),r(dt)?(l(),m("p",hs,"No data")):w("",!0)]),_:1}))}}),ms={class:"d-flex flex-column align-items-center justify-content-start infoitem"},vs=B({__name:"InfoItem",props:{heading:{},small:{type:Boolean}},setup(t){const e=t,a=g(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-small)"}),o=g(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-normal)"}),s=g(()=>e.small?"mt-0":"mt-1");return(i,h)=>(l(),m("span",ms,[n("span",{class:N(["d-flex heading",s.value]),style:Q(a.value)},$(e.heading),7),n("span",{class:"d-flex my-0 me-0 align-items-center content",style:Q(o.value)},[he(i.$slots,"default",{},void 0,!0)],4)]))}}),Y=U(vs,[["__scopeId","data-v-f6af00e8"]]),fs={class:"d-flex justify-content-between align-items-center titlerow"},_s={class:"buttonrea d-flex float-right justify-content-end align-items-center"},bs={class:"contentrow grid-col-12"},ys=B({__name:"WbSubwidget",props:{titlecolor:{},fullwidth:{type:Boolean},small:{type:Boolean}},setup(t){const e=t,a=g(()=>{let s={"font-weight":"bold",color:"var(--color-fg)","font-size":"var(--font-normal)"};return e.titlecolor&&(s.color=e.titlecolor),e.small&&(s["font-size"]="var(--font-verysmall)"),s}),o=g(()=>e.fullwidth?"grid-col-12":"grid-col-4");return(s,i)=>(l(),m("div",{class:N(["wb-subwidget px-3 pt-2 my-0",o.value])},[n("div",fs,[n("div",{class:"d-flex widgetname p-0 m-0",style:Q(a.value)},[he(s.$slots,"title",{},void 0,!0)],4),n("div",_s,[he(s.$slots,"buttons",{},void 0,!0)])]),n("div",bs,[he(s.$slots,"default",{},void 0,!0)])],2))}}),Ze=U(ys,[["__scopeId","data-v-e989060d"]]),ws=t=>(ae("data-v-b935eb33"),t=t(),oe(),t),ks={class:"grid-col-12 mt-2 mb-0 px-0 py-0 configitem"},Ss={class:"titlecolumn m-0 p-0 d-flex align-items-center"},xs=ws(()=>n("i",{class:"me-1 fa-solid fa-sm fa-circle-info"},null,-1)),$s={class:"ms-1 mb-2 p-0 pt-2 d-flex justify-content-stretch align-items-center"},Ms={class:"justify-content-stretch d-flex"},Is=B({__name:"ConfigItem",props:{title:{},infotext:{},icon:{},fullwidth:{type:Boolean}},setup(t){const e=t,a=Z(!1);function o(){a.value=!a.value}const s=g(()=>{let i={color:"var(--color-charging)"};return a.value&&(i.color="var(--color-battery)"),i});return(i,h)=>(l(),M(Ze,{fullwidth:!!i.fullwidth},{default:y(()=>[n("div",ks,[n("div",Ss,[n("span",{class:"d-flex align-items-baseline m-0 p-0",onClick:o},[e.icon?(l(),m("i",{key:0,class:N(["fa-solid fa-sm m-0 p-0 me-2 item-icon",e.icon])},null,2)):w("",!0),D(" "+$(i.title),1)]),n("span",null,[e.infotext?(l(),m("i",{key:0,class:"fa-solid fa-sm fa-circle-question ms-4 me-2",style:Q(s.value),onClick:o},null,4)):w("",!0)])]),a.value?(l(),m("p",{key:0,class:"infotext shadow m-0 ps-2 mb-1 p-1",onClick:o},[xs,D(" "+$(i.infotext),1)])):w("",!0),n("div",$s,[n("span",Ms,[he(i.$slots,"default",{},void 0,!0)])])])]),_:3},8,["fullwidth"]))}}),F=U(Is,[["__scopeId","data-v-b935eb33"]]),La=t=>(ae("data-v-17a828b1"),t=t(),oe(),t),Cs={class:"d-flex flex-column"},Ps={class:"d-flex flex-fill justify-content-between align-items-center"},Bs=La(()=>n("i",{class:"fa fa-xl fa-minus-square me-2"},null,-1)),Vs=[Bs],Ls=["id","min","max","step"],Os=La(()=>n("i",{class:"fa fa-xl fa-plus-square ms-2"},null,-1)),As=[Os],Ts={class:"d-flex justify-content-between align-items-center"},Ws={class:"minlabel ps-4"},Ds={class:"valuelabel"},zs={class:"maxlabel pe-4"},Gs=B({__name:"RangeInput",props:{id:{},min:{},max:{},step:{},unit:{},decimals:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,o=a.decimals??0,s=e,i=g({get(){return Math.round(a.modelValue*Math.pow(10,o))/Math.pow(10,o)},set(c){s("update:modelValue",c)}});function h(){i.value>a.min&&(i.value=Math.round((i.value-a.step)*Math.pow(10,o))/Math.pow(10,o))}function p(){i.value<a.max&&(i.value=Math.round((i.value+a.step)*Math.pow(10,o))/Math.pow(10,o))}return(c,u)=>(l(),m("span",Cs,[n("span",Ps,[n("span",{type:"button",class:"minusButton",onClick:h},Vs),gt(n("input",{id:c.id,"onUpdate:modelValue":u[0]||(u[0]=d=>i.value=d),type:"range",class:"form-range flex-fill",min:c.min,max:c.max,step:c.step},null,8,Ls),[[io,i.value,void 0,{number:!0}]]),n("span",{type:"button",class:"plusButton",onClick:p},As)]),n("span",Ts,[n("span",Ws,$(c.min),1),n("span",Ds,$(i.value)+" "+$(c.unit),1),n("span",zs,$(c.max),1)])]))}}),We=U(Gs,[["__scopeId","data-v-17a828b1"]]),Es=["id","value"],js=B({__name:"RadioInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,o=e,s=g({get(){return a.modelValue},set(p){o("update:modelValue",p)}});function i(p){return a.options[p][2]?{color:a.options[p][2]}:{color:"var(--color-fg)"}}function h(p){let c=p.target;for(;c&&!c.value&&c.parentElement;)c=c.parentElement;c.value&&(s.value=c.value)}return(p,c)=>(l(),m("div",null,[(l(!0),m(G,null,X(p.options,(u,d)=>(l(),m("button",{id:"radio-"+u[1],key:d,class:N(["btn btn-outline-secondary radiobutton me-2 mb-0 px-2",u[1]==s.value?"active":""]),value:u[1],style:Q(i(d)),onClick:h},[n("span",{style:Q(i(d))},[u[3]?(l(),m("i",{key:0,class:N(["fa-solid",u[3]])},null,2)):w("",!0),D(" "+$(u[0]),1)],4)],14,Es))),128))]))}}),De=U(js,[["__scopeId","data-v-df222cbe"]]),Us=t=>(ae("data-v-0303d179"),t=t(),oe(),t),Fs={class:"mt-2"},Ns=Us(()=>n("p",{class:"heading ms-1"},"Sofortladen:",-1)),Hs={key:0},Rs=B({__name:"CPConfigInstant",props:{chargepoint:{}},setup(t){const a=Z(t.chargepoint),o=[{name:"keine",id:"none"},{name:"EV-SoC",id:"soc"},{name:"Energiemenge",id:"amount"}],s=g({get(){return a.value.instantMaxEnergy/1e3},set(i){a.value.instantMaxEnergy=i*1e3}});return(i,h)=>(l(),m("div",Fs,[Ns,b(F,{title:"Stromstärke",icon:"fa-bolt",fullwidth:!0},{default:y(()=>[b(We,{id:"targetCurrent",modelValue:a.value.instantTargetCurrent,"onUpdate:modelValue":h[0]||(h[0]=p=>a.value.instantTargetCurrent=p),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1}),a.value.instantChargeLimitMode!="none"?(l(),m("hr",Hs)):w("",!0),b(F,{title:"Begrenzung",icon:"fa-hand",fullwidth:!0},{default:y(()=>[b(De,{modelValue:a.value.instantChargeLimitMode,"onUpdate:modelValue":h[1]||(h[1]=p=>a.value.instantChargeLimitMode=p),options:o.map(p=>[p.name,p.id])},null,8,["modelValue","options"])]),_:1}),a.value.instantChargeLimitMode=="soc"?(l(),M(F,{key:1,title:"Maximaler SoC",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(We,{id:"maxSoc",modelValue:a.value.instantTargetSoc,"onUpdate:modelValue":h[2]||(h[2]=p=>a.value.instantTargetSoc=p),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),a.value.instantChargeLimitMode=="amount"?(l(),M(F,{key:2,title:"Zu ladende Energie",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(We,{id:"maxEnergy",modelValue:s.value,"onUpdate:modelValue":h[3]||(h[3]=p=>s.value=p),min:0,max:100,step:1,unit:"kWh"},null,8,["modelValue"])]),_:1})):w("",!0)]))}}),Js=U(Rs,[["__scopeId","data-v-0303d179"]]),qs={class:"form-check form-switch"},ie=B({__name:"SwitchInput",props:{modelValue:{type:Boolean},onColor:{},offColor:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,o=e,s=g({get(){return a.modelValue},set(h){o("update:modelValue",h)}}),i=g(()=>s.value?{"background-color":"green"}:{"background-color":"white"});return(h,p)=>(l(),m("div",qs,[gt(n("input",{"onUpdate:modelValue":p[0]||(p[0]=c=>s.value=c),class:"form-check-input",type:"checkbox",role:"switch",style:Q(i.value)},null,4),[[_a,s.value]])]))}}),Ys=t=>(ae("data-v-eeab85c5"),t=t(),oe(),t),Qs={class:"pt-2"},Zs=Ys(()=>n("p",{class:"heading ms-1"},"PV-Laden:",-1)),Xs={key:3},Ks=B({__name:"CPConfigPv",props:{chargepoint:{}},setup(t){const a=Z(t.chargepoint),o=g({get(){return a.value.pvMinCurrent>5},set(h){h?a.value.pvMinCurrent=6:a.value.pvMinCurrent=0}}),s=g({get(){return a.value.pvMinSoc>0},set(h){h?a.value.pvMinSoc=50:a.value.pvMinSoc=0}}),i=g({get(){return a.value.pvMaxSoc<=100},set(h){h?a.value.pvMaxSoc=100:a.value.pvMaxSoc=101}});return(h,p)=>(l(),m("div",Qs,[Zs,b(F,{title:"Ladestand begrenzen",icon:"fa-battery-three-quarters",fullwidth:!0},{default:y(()=>[b(ie,{id:"limitSoc",modelValue:i.value,"onUpdate:modelValue":p[0]||(p[0]=c=>i.value=c),"model-value":"limitSoc"},null,8,["modelValue"])]),_:1}),i.value?(l(),M(F,{key:0,title:"...auf maximal...",icon:"fa-battery-three-quarters",fullwidth:!0},{default:y(()=>[b(We,{id:"maxSoc",modelValue:a.value.pvMaxSoc,"onUpdate:modelValue":p[1]||(p[1]=c=>a.value.pvMaxSoc=c),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),b(F,{title:"Einspeisegrenze beachten",icon:"fa-hand",fullwidth:!0},{default:y(()=>[b(ie,{modelValue:a.value.pvFeedInLimit,"onUpdate:modelValue":p[2]||(p[2]=c=>a.value.pvFeedInLimit=c)},null,8,["modelValue"])]),_:1}),b(F,{title:"Mindest-Ladestand",icon:"fa-battery-half",infotext:r(Oe).minsoc,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:s.value,"onUpdate:modelValue":p[3]||(p[3]=c=>s.value=c)},null,8,["modelValue"])]),_:1},8,["infotext"]),s.value?(l(),M(F,{key:1,title:"...bis SoC",fullwidth:!0},{info:y(()=>[D($(r(Oe).minsoc),1)]),default:y(()=>[b(We,{id:"minSoc",modelValue:a.value.pvMinSoc,"onUpdate:modelValue":p[4]||(p[4]=c=>a.value.pvMinSoc=c),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),s.value?(l(),M(F,{key:2,title:"...mit Ladestrom",fullwidth:!0},{default:y(()=>[b(We,{id:"minSocCurrent",modelValue:a.value.pvMinSocCurrent,"onUpdate:modelValue":p[5]||(p[5]=c=>a.value.pvMinSocCurrent=c),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):w("",!0),o.value||s.value?(l(),m("hr",Xs)):w("",!0),b(F,{title:"Minimaler Ladestrom",icon:"fa-bolt",infotext:r(Oe).minpv,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:o.value,"onUpdate:modelValue":p[6]||(p[6]=c=>o.value=c)},null,8,["modelValue"])]),_:1},8,["infotext"]),o.value?(l(),M(F,{key:4,title:"...bei Ladestrom (minimal)",fullwidth:!0},{default:y(()=>[b(We,{id:"minCurrent",modelValue:a.value.pvMinCurrent,"onUpdate:modelValue":p[7]||(p[7]=c=>a.value.pvMinCurrent=c),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):w("",!0)]))}}),ei=U(Ks,[["__scopeId","data-v-eeab85c5"]]),Oa=t=>(ae("data-v-e8f5ad9d"),t=t(),oe(),t),ti=Oa(()=>n("p",{class:"heading ms-1 pt-2"},"Zielladen:",-1)),ai={class:"table table-borderless"},oi=Oa(()=>n("thead",null,[n("tr",null,[n("th",{class:"tableheader"},"Ziel"),n("th",{class:"tableheader"},"Limit"),n("th",{class:"tableheader"},"Zeit"),n("th",{class:"tableheader"},"Wiederholung"),n("th",{class:"tableheader"})])],-1)),ni={class:"tablecell"},ri={class:"tablecell"},si={class:"tablecell"},ii={class:"tablecell"},li={class:"tablecell left"},ci=["href"],di=B({__name:"CPConfigScheduled",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,o=g(()=>{let p=[];return lt[a.chargeTemplateId]&&(p=Object.values(lt[a.chargeTemplateId])),p});function s(p){return o.value[p].time}function i(p){return{color:o.value[p].active?"var(--color-switchGreen)":"var(--color-switchRed)"}}function h(p){return{"font-weight":o.value[p].active?"bold":"regular"}}return(p,c)=>(l(),m(G,null,[ti,n("table",ai,[oi,n("tbody",null,[(l(!0),m(G,null,X(o.value,(u,d)=>(l(),m("tr",{key:d,style:Q(h(d))},[n("td",ni,$(u.limit.soc_scheduled)+"%",1),n("td",ri,$(u.limit.soc_limit)+"%",1),n("td",si,$(s(d)),1),n("td",ii,$(e[u.frequency.selected]),1),n("td",li,[n("a",{href:"../../settings/#/VehicleConfiguration/charge_template/"+a.chargeTemplateId},[n("span",{class:N([u.active?"fa-toggle-on":"fa-toggle-off","fa"]),style:Q(i(d)),type:"button"},null,6)],8,ci)])],4))),128))])])],64))}}),ui=U(di,[["__scopeId","data-v-e8f5ad9d"]]),Aa=t=>(ae("data-v-192e287b"),t=t(),oe(),t),hi=Aa(()=>n("p",{class:"heading ms-1 pt-2"},"Zeitpläne:",-1)),pi={class:"table table-borderless"},gi=Aa(()=>n("thead",null,[n("tr",null,[n("th",{class:"tableheader"},"Von"),n("th",{class:"tableheader"},"Bis"),n("th",{class:"tableheader"},"Ladestrom"),n("th",{class:"tableheader"},"Wiederholung"),n("th",{class:"tableheader right"})])],-1)),mi={class:"tablecell"},vi={class:"tablecell"},fi={class:"tablecell"},_i={class:"tablecell"},bi={class:"tablecell left"},yi=["href"],wi=B({__name:"CPConfigTimed",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,o=g(()=>ct[a.chargeTemplateId]?Object.values(ct[a.chargeTemplateId])??[]:[]);function s(h){return{color:o.value[h].active?"var(--color-switchGreen)":"var(--color-switchRed)"}}function i(h){return{"font-weight":o.value[h].active?"bold":"regular"}}return(h,p)=>(l(),m(G,null,[hi,n("table",pi,[gi,n("tbody",null,[(l(!0),m(G,null,X(o.value,(c,u)=>(l(),m("tr",{key:u,style:Q(i(u))},[n("td",mi,$(c.time[0]),1),n("td",vi,$(c.time[1]),1),n("td",fi,$(c.current)+" A",1),n("td",_i,$(e[c.frequency.selected]),1),n("td",bi,[n("a",{href:"../../settings/#/VehicleConfiguration/charge_template/"+a.chargeTemplateId},[n("span",{class:N([c.active?"fa-toggle-on":"fa-toggle-off","fa"]),style:Q(s(u)),type:"button"},null,6)],8,yi)])],4))),128))])])],64))}}),ki=U(wi,[["__scopeId","data-v-192e287b"]]),Si={class:"settingsheader mt-2 ms-1"},xi=B({__name:"CPConfigVehicle",props:{vehicleId:{}},setup(t){const e=t;return(a,o)=>(l(),m(G,null,[n("p",Si," Profile für "+$(r(q)[e.vehicleId].name)+": ",1),b(F,{title:"Ladeprofil",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(De,{modelValue:r(q)[e.vehicleId].chargeTemplateId,"onUpdate:modelValue":o[0]||(o[0]=s=>r(q)[e.vehicleId].chargeTemplateId=s),modelModifiers:{number:!0},options:Object.keys(r(be)).map(s=>[r(be)[+s].name,s])},null,8,["modelValue","options"])]),_:1}),b(F,{title:"Fahrzeug-Vorlage",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(De,{modelValue:r(q)[e.vehicleId].evTemplateId,"onUpdate:modelValue":o[1]||(o[1]=s=>r(q)[e.vehicleId].evTemplateId=s),modelModifiers:{number:!0},options:Object.keys(r(Ht)).map(s=>[r(Ht)[+s].name,s])},null,8,["modelValue","options"])]),_:1})],64))}}),$i=U(xi,[["__scopeId","data-v-fcb57a44"]]),Mi={class:"settingsheader mt-2 ms-1"},Ii=B({__name:"CPChargeConfig",props:{chargepoint:{}},emits:["closeConfig"],setup(t){const a=t.chargepoint;return(o,s)=>(l(),m(G,null,[n("p",Mi," Ladeeinstellungen für "+$(r(a).vehicleName)+": ",1),b(F,{title:"Lademodus",icon:"fa-charging-station",infotext:r(Oe).chargemode,fullwidth:!0},{default:y(()=>[b(De,{modelValue:r(a).chargeMode,"onUpdate:modelValue":s[0]||(s[0]=i=>r(a).chargeMode=i),options:Object.keys(r(ge)).map(i=>[r(ge)[i].name,i,r(ge)[i].color,r(ge)[i].icon])},null,8,["modelValue","options"])]),_:1},8,["infotext"]),b(F,{title:"Fahrzeug wechseln",icon:"fa-car",infotext:r(Oe).vehicle,fullwidth:!0},{default:y(()=>[b(De,{modelValue:r(a).connectedVehicle,"onUpdate:modelValue":s[1]||(s[1]=i=>r(a).connectedVehicle=i),modelModifiers:{number:!0},options:Object.values(r(q)).map(i=>[i.name,i.id])},null,8,["modelValue","options"])]),_:1},8,["infotext"]),b(F,{title:"Sperren",icon:"fa-lock",infotext:r(Oe).locked,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:r(a).isLocked,"onUpdate:modelValue":s[2]||(s[2]=i=>r(a).isLocked=i)},null,8,["modelValue"])]),_:1},8,["infotext"]),b(F,{title:"Priorität",icon:"fa-star",infotext:r(Oe).priority,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:r(a).hasPriority,"onUpdate:modelValue":s[3]||(s[3]=i=>r(a).hasPriority=i)},null,8,["modelValue"])]),_:1},8,["infotext"]),b(F,{title:"Zeitplan",icon:"fa-clock",infotext:r(Oe).timeplan,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:r(a).timedCharging,"onUpdate:modelValue":s[4]||(s[4]=i=>r(a).timedCharging=i)},null,8,["modelValue"])]),_:1},8,["infotext"]),r(de).isBatteryConfigured?(l(),M(F,{key:0,title:"PV-Priorität",icon:"fa-car-battery",infotext:r(Oe).pvpriority,fullwidth:!0},{default:y(()=>[b(De,{modelValue:r(de).pvBatteryPriority,"onUpdate:modelValue":s[5]||(s[5]=i=>r(de).pvBatteryPriority=i),options:r(Bo)},null,8,["modelValue","options"])]),_:1},8,["infotext"])):w("",!0),r(te).active?(l(),M(F,{key:1,title:"Strompreisbasiert laden",icon:"fa-money-bill",infotext:r(Oe).pricebased,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:r(a).etActive,"onUpdate:modelValue":s[6]||(s[6]=i=>r(a).etActive=i)},null,8,["modelValue"])]),_:1},8,["infotext"])):w("",!0)],64))}}),Ci=U(Ii,[["__scopeId","data-v-f0d31d6f"]]),Ta=t=>(ae("data-v-5286b19d"),t=t(),oe(),t),Pi=Ta(()=>n("p",{class:"settingsheader mt-2 ms-1"},"Preisbasiertes Laden:",-1)),Bi={class:"providername ms-1"},Vi=Ta(()=>n("hr",null,null,-1)),Li={class:"container"},Oi={id:"pricechart",class:"p-0 m-0"},Ai={viewBox:"0 0 400 300"},Ti=["id","origin","transform"],Wi={key:0,class:"p-3"},Di={key:1,class:"d-flex justify-content-end"},zi=["disabled"],rt=400,pa=250,ga=12,Gi=B({__name:"PriceChart",props:{chargepoint:{},globalview:{type:Boolean}},setup(t){const e=t;let a=e.chargepoint?Z(e.chargepoint.etMaxPrice):Z(0);const o=Z(!1),s=Z(e.chargepoint),i=g({get(){return a.value},set(S){a.value=S,o.value=!0}});function h(){s.value&&(P[s.value.id].etMaxPrice=i.value),o.value=!1}const p=Z(!1),c={top:0,bottom:15,left:20,right:5},u=g(()=>{let S=[];return te.etPriceList.size>0&&te.etPriceList.forEach((x,L)=>{S.push([L,x])}),S}),d=g(()=>u.value.length>1?(rt-c.left-c.right)/u.value.length-1:0),I=g(()=>o.value?{background:"var(--color-charging)"}:{background:"var(--color-menu)"}),J=g(()=>{let S=Pe(u.value,x=>x[0]);return Ye().range([c.left,rt-c.left-c.right]).domain(S)}),V=g(()=>{let S=Pe(u.value,x=>x[1]);return S[0]=Math.floor(S[0]-1),S[1]=Math.floor(S[1]+1),S}),T=g(()=>Qe().range([pa-c.bottom,0]).domain(V.value)),E=g(()=>{const S=bt(),x=[[c.left,T.value(i.value)],[rt-c.right,T.value(i.value)]];return S(x)}),W=g(()=>{const S=bt(),x=[[c.left,T.value(0)],[rt-c.right,T.value(0)]];return S(x)}),A=g(()=>it(J.value).ticks(6).tickSize(5).tickFormat(ot("%H:%M"))),H=g(()=>pt(T.value).ticks(6).tickSizeInner(-(rt-c.right-c.left)).tickFormat(S=>S.toString())),C=g(()=>{p.value==!0;const S=ce("g#"+k.value);S.selectAll("*").remove(),S.selectAll("bar").data(u.value).enter().append("g").append("rect").attr("class","bar").attr("x",we=>J.value(we[0])).attr("y",we=>T.value(we[1])).attr("width",d.value).attr("height",we=>T.value(V.value[0])-T.value(we[1])).attr("fill",we=>we[1]<=i.value?"var(--color-charging)":"var(--color-axis)");const L=S.append("g").attr("class","axis").call(A.value);L.attr("transform","translate(0,"+(pa-c.bottom)+")"),L.selectAll(".tick").attr("font-size",ga).attr("color","var(--color-bg)"),L.selectAll(".tick line").attr("stroke","var(--color-fg)").attr("stroke-width","0.5"),L.select(".domain").attr("stroke","var(--color-bg");const K=S.append("g").attr("class","axis").call(H.value);return K.attr("transform","translate("+c.left+",0)"),K.selectAll(".tick").attr("font-size",ga).attr("color","var(--color-bg)"),K.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width","0.5"),K.select(".domain").attr("stroke","var(--color-bg)"),V.value[0]<0&&S.append("path").attr("d",W.value).attr("stroke","var(--color-fg)"),S.append("path").attr("d",E.value).attr("stroke","yellow"),"PriceChart.vue"}),k=g(()=>e.chargepoint?"priceChartCanvas"+e.chargepoint.id:"priceChartCanvasGlobal");return Ve(()=>{p.value=!p.value}),(S,x)=>(l(),m(G,null,[Pi,n("p",Bi,"Anbieter: "+$(r(te).etProvider),1),Vi,n("div",Li,[n("figure",Oi,[(l(),m("svg",Ai,[n("g",{id:k.value,origin:C.value,transform:"translate("+c.top+","+c.right+")"},null,8,Ti)]))])]),S.chargepoint!=null?(l(),m("div",Wi,[S.chargepoint.etActive?(l(),M(We,{key:0,id:"foo",modelValue:i.value,"onUpdate:modelValue":x[0]||(x[0]=L=>i.value=L),min:-25,max:95,step:.1,decimals:1,unit:"ct"},null,8,["modelValue"])):w("",!0)])):w("",!0),S.chargepoint!=null?(l(),m("div",Di,[n("span",{class:"me-3 pt-0",onClick:h},[n("button",{type:"button",class:"btn btn-secondary",style:Q(I.value),disabled:!o.value}," Bestätigen ",12,zi)])])):w("",!0)],64))}}),Wa=U(Gi,[["__scopeId","data-v-5286b19d"]]),Xe=t=>(ae("data-v-1164316d"),t=t(),oe(),t),Ei={class:"status-string"},ji={style:{color:"red"}},Ui={class:"m-0 mt-4 p-0 grid-col-12 tabarea"},Fi={class:"nav nav-tabs nav-justified mx-1 mt-1",role:"tablist"},Ni=["data-bs-target"],Hi=Xe(()=>n("i",{class:"fa-solid fa-charging-station"},null,-1)),Ri=[Hi],Ji=["data-bs-target"],qi=Xe(()=>n("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),Yi=[qi],Qi=["data-bs-target"],Zi=Xe(()=>n("i",{class:"fa-solid fa-solar-panel me-1"},null,-1)),Xi=[Zi],Ki=["data-bs-target"],el=Xe(()=>n("i",{class:"fa-solid fa-bullseye me-1"},null,-1)),tl=[el],al=["data-bs-target"],ol=Xe(()=>n("i",{class:"fa-solid fa-clock"},null,-1)),nl=[ol],rl=["data-bs-target"],sl=Xe(()=>n("i",{class:"fa-solid fa-rectangle-list"},null,-1)),il=[sl],ll=["data-bs-target"],cl=Xe(()=>n("i",{class:"fa-solid fa-chart-line"},null,-1)),dl=[cl],ul={id:"settingsPanes",class:"tab-content mx-1 p-1 pb-3"},hl=["id"],pl=["id"],gl=["id"],ml=["id"],vl=["id"],fl=["id"],_l=["id"],bl=B({__name:"CPChargeConfigPanel",props:{chargepoint:{}},emits:["closeConfig"],setup(t){const a=t.chargepoint,o=g(()=>be[a.chargeTemplate]),s=g(()=>a.id);return Ve(()=>{}),(i,h)=>(l(),m(G,null,[b(F,{title:"Status",icon:"fa-info-circle",fullwidth:!0,class:"item"},{default:y(()=>[n("span",Ei,$(r(a).stateStr),1)]),_:1}),r(a).faultState!=0?(l(),M(F,{key:0,title:"Fehler",class:"grid-col-12",icon:"fa-triangle-exclamation"},{default:y(()=>[n("span",ji,$(r(a).faultStr),1)]),_:1})):w("",!0),n("div",Ui,[n("nav",Fi,[n("a",{class:"nav-link active","data-bs-toggle":"tab","data-bs-target":"#chargeSettings"+s.value},Ri,8,Ni),i.chargepoint.chargeMode=="instant_charging"?(l(),m("a",{key:0,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#instantSettings"+s.value},Yi,8,Ji)):w("",!0),i.chargepoint.chargeMode=="pv_charging"?(l(),m("a",{key:1,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pvSettings"+s.value},Xi,8,Qi)):w("",!0),i.chargepoint.chargeMode=="scheduled_charging"?(l(),m("a",{key:2,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#scheduledSettings"+s.value},tl,8,Ki)):w("",!0),i.chargepoint.timedCharging?(l(),m("a",{key:3,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#timeSettings"+s.value},nl,8,al)):w("",!0),n("a",{class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#carSettings"+s.value},il,8,rl),r(te).active&&r(a).etActive?(l(),m("a",{key:4,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#priceChart"+s.value},dl,8,ll)):w("",!0)]),n("div",ul,[n("div",{id:"chargeSettings"+s.value,class:"tab-pane active",role:"tabpanel","aria-labelledby":"instant-tab"},[b(Ci,{chargepoint:i.chargepoint},null,8,["chargepoint"])],8,hl),n("div",{id:"instantSettings"+s.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"instant-tab"},[b(Js,{chargepoint:r(a),vehicles:r(q),"charge-templates":r(be)},null,8,["chargepoint","vehicles","charge-templates"])],8,pl),n("div",{id:"pvSettings"+s.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"pv-tab"},[b(ei,{chargepoint:r(a),vehicles:r(q),"charge-templates":r(be)},null,8,["chargepoint","vehicles","charge-templates"])],8,gl),n("div",{id:"scheduledSettings"+s.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"scheduled-tab"},[o.value!=null?(l(),M(ui,{key:0,"charge-template-id":r(a).chargeTemplate},null,8,["charge-template-id"])):w("",!0)],8,ml),n("div",{id:"timeSettings"+s.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"time-tab"},[o.value!=null?(l(),M(ki,{key:0,"charge-template-id":r(a).chargeTemplate},null,8,["charge-template-id"])):w("",!0)],8,vl),n("div",{id:"carSettings"+s.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"car-tab"},[r(q)[r(a).connectedVehicle]!=null?(l(),M($i,{key:0,"vehicle-id":r(a).connectedVehicle},null,8,["vehicle-id"])):w("",!0)],8,fl),n("div",{id:"priceChart"+s.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},[r(q)[r(a).connectedVehicle]!=null?(l(),M(Wa,{key:0,chargepoint:r(a)},null,8,["chargepoint"])):w("",!0)],8,_l)])])],64))}}),Jt=U(bl,[["__scopeId","data-v-1164316d"]]),yl=B({__name:"BatterySymbol",props:{soc:{},color:{}},setup(t){const e=t,a=g(()=>e.soc<=10?"fa-battery-empty":e.soc<50?"fa-battery-quarter":e.soc<75?"fa-battery-half":e.soc<95?"fa-battery-three-quarters":"fa-battery-full"),o=g(()=>({color:e.color??"var(--color-menu)"}));return(s,i)=>(l(),m("span",null,[n("i",{class:N(["fa",a.value]),style:Q(o.value)},null,6),D(" "+$(Math.round(s.soc)+"%"),1)]))}}),It=U(yl,[["__scopeId","data-v-c2024ec8"]]),Ue=B({__name:"FormatWattH",props:{wattH:{}},setup(t){const e=t,a=g(()=>ht(e.wattH,v.decimalPlaces));return(o,s)=>(l(),m("span",null,$(a.value),1))}}),wl=t=>(ae("data-v-1d5bc1d9"),t=t(),oe(),t),kl={class:"wb-widget p-0 m-0 shadow widgetWidth"},Sl={class:"py-4 px-3 d-flex justify-content-between align-items-center titlerow"},xl={class:"d-flex align-items-center widgetname p-0 m-0"},$l=wl(()=>n("div",{class:"p-0"},"(title goes here)",-1)),Ml={class:"buttonrea d-flex float-right justify-content-end align-items-center"},Il={class:"grid12 pb-3"},Cl=B({__name:"WbWidgetFlex",props:{variableWidth:{type:Boolean},fullWidth:{type:Boolean}},setup(t){const e=t,a=g(()=>e.fullWidth?"col-12":e.variableWidth&&v.preferWideBoxes?"col-lg-6":"col-lg-4");return(o,s)=>(l(),m("div",{class:N(["p-2 m-0",a.value])},[n("div",kl,[n("div",Sl,[n("div",xl,[he(o.$slots,"title",{},()=>[$l],!0),he(o.$slots,"subtitle",{},void 0,!0)]),n("div",Ml,[he(o.$slots,"buttons",{},void 0,!0)])]),n("div",Il,[he(o.$slots,"default",{},void 0,!0)])])],2))}}),ze=U(Cl,[["__scopeId","data-v-1d5bc1d9"]]),Ke=t=>(ae("data-v-c32ef31e"),t=t(),oe(),t),Pl={class:"d-flex justify-content-center align-items-center"},Bl=Ke(()=>n("span",{class:"fa-solid fa-charging-station"}," ",-1)),Vl={key:0,class:"WbBadge rounded-pill errorWbBadge ms-3"},Ll=Ke(()=>n("span",{class:"fa-solid fa-lg ps-1 fa-ellipsis-vertical"},null,-1)),Ol=[Ll],Al={key:0},Tl={class:"targetCurrent"},Wl={key:1,class:"row m-0 mt-0 p-0"},Dl={class:"col m-0 p-0"},zl={key:0},Gl={class:"col"},El=Ke(()=>n("i",{class:"fa-solid fa-sm fa-car me-2"},null,-1)),jl={key:0,class:"me-1 fa-solid fa-xs fa-star ps-1"},Ul={key:1,class:"me-0 fa-solid fa-xs fa-coins ps-0"},Fl={class:"grid12"},Nl={key:0,class:"me-1 fa-solid fa-xs fa-clock ps-1"},Hl={key:2,class:"socEditor rounded mt-2 d-flex flex-column align-items-center grid-col-12 grid-left"},Rl=Ke(()=>n("span",{class:"d-flex m-1 p-0 socEditTitle"},"Ladestand einstellen:",-1)),Jl={class:"d-flex justify-content-stretch align-items-center"},ql={key:0,class:"fa-solid fa-sm fas fa-edit ms-2"},Yl=["id"],Ql=Ke(()=>n("span",{type:"button",class:"d-flex fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),Zl=[Ql],Xl=Ke(()=>n("span",{class:"fas fa-gear"}," ",-1)),Kl=Ke(()=>n("span",{class:"fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),ec=[Kl],tc=B({__name:"CPChargePoint",props:{chargepoint:{},fullWidth:{type:Boolean}},setup(t){const e=t,a=Z(e.chargepoint),o=g({get(){return e.chargepoint.chargeMode},set(S){P[e.chargepoint.id].chargeMode=S}}),s=g(()=>(Math.round(e.chargepoint.current*10)/10).toLocaleString(void 0)+" A"),i=g(()=>(Math.round(e.chargepoint.realCurrent*10)/10).toLocaleString(void 0)+" A"),h=g(()=>{const S=e.chargepoint.rangeCharged,x=e.chargepoint.chargedSincePlugged,L=e.chargepoint.dailyYield;return x>0?Math.round(S/x*L).toString()+" "+e.chargepoint.rangeUnit:"0"}),p=g(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei"),c=g(()=>e.chargepoint.isLocked?"var(--color-evu)":e.chargepoint.isCharging?"var(--color-charging)":e.chargepoint.isPluggedIn?"var(--color-battery)":"var(--color-axis)"),u=g(()=>{let S="";return e.chargepoint.isLocked?S="fa-lock":e.chargepoint.isCharging?S=" fa-bolt":e.chargepoint.isPluggedIn&&(S="fa-plug"),"fa "+S}),d=g(()=>{switch(e.chargepoint.chargeMode){case"stop":return{color:"var(--fg)"};default:return{color:ge[e.chargepoint.chargeMode].color}}}),I=g(()=>e.chargepoint.soc),J=g(()=>({color:e.chargepoint.color})),V=g(()=>e.chargepoint.etMaxPrice>=+C.value?{color:"var(--color-charging)"}:{color:"var(--color-menu)"}),T=Z(!1),E=Z(!1);function W(){ee("socUpdate",1,e.chargepoint.connectedVehicle),P[e.chargepoint.id].waitingForSoc=!0}function A(){ee("setSoc",H.value,e.chargepoint.connectedVehicle),E.value=!1}const H=g({get(){return e.chargepoint.soc},set(S){P[e.chargepoint.id].soc=S}}),C=g(()=>{const[S]=te.etPriceList.values();return(Math.round(S*10)/10).toFixed(1)}),k=Z(!1);return(S,x)=>(l(),m(G,null,[T.value?w("",!0):(l(),M($t,{key:0,"variable-width":!0,"full-width":e.fullWidth},{title:y(()=>[n("span",Pl,[n("span",{style:Q(J.value),onClick:x[0]||(x[0]=L=>T.value=!T.value)},[Bl,D(" "+$(e.chargepoint.name),1)],4),a.value.faultState==2?(l(),m("span",Vl,"Fehler")):w("",!0)])]),buttons:y(()=>[n("span",{type:"button",class:"ms-2 ps-5 pt-1",style:Q(d.value),onClick:x[1]||(x[1]=L=>T.value=!T.value)},Ol,4)]),footer:y(()=>[T.value?w("",!0):(l(),m("div",zl,[n("div",{class:"row",onClick:x[3]||(x[3]=L=>T.value=!T.value)},[n("div",Gl,[n("h3",null,[El,D(" "+$(S.chargepoint.vehicleName)+" ",1),S.chargepoint.hasPriority?(l(),m("span",jl)):w("",!0),S.chargepoint.etActive?(l(),m("span",Ul)):w("",!0)])])]),n("div",Fl,[b(Pa,{id:"chargemode-"+S.chargepoint.name,modelValue:o.value,"onUpdate:modelValue":x[4]||(x[4]=L=>o.value=L),class:"chargemodes mt-3 mb-3",options:Object.keys(r(ge)).map(L=>({text:r(ge)[L].name,value:L,color:r(ge)[L].color,icon:r(ge)[L].icon,active:r(ge)[L].mode==S.chargepoint.chargeMode}))},null,8,["id","modelValue","options"]),S.chargepoint.isSocConfigured?(l(),M(Y,{key:0,heading:"Ladestand:",class:"grid-col-4 grid-left"},{default:y(()=>[b(It,{soc:I.value,class:"me-2"},null,8,["soc"]),S.chargepoint.isSocConfigured&&S.chargepoint.isSocManual?(l(),m("i",{key:0,class:"fa-solid fa-sm fas fa-edit",style:{color:"var(--color-menu)"},onClick:x[5]||(x[5]=L=>E.value=!E.value)})):w("",!0),S.chargepoint.isSocConfigured&&!S.chargepoint.isSocManual?(l(),m("i",{key:1,type:"button",class:N(["fa-solid fa-sm",S.chargepoint.waitingForSoc?"fa-spinner fa-spin":"fa-sync"]),style:{color:"var(--color-menu)"},onClick:W},null,2)):w("",!0)]),_:1})):w("",!0),S.chargepoint.isSocConfigured?(l(),M(Y,{key:1,heading:"Reichweite:",class:"grid-col-4"},{default:y(()=>[D($(r(q)[e.chargepoint.connectedVehicle]?Math.round(r(q)[e.chargepoint.connectedVehicle].range):0)+" km ",1)]),_:1})):w("",!0),b(Y,{heading:"Zeitplan:",class:"grid-col-4 grid-right"},{default:y(()=>[S.chargepoint.timedCharging?(l(),m("span",Nl)):w("",!0),D(" "+$(e.chargepoint.timedCharging?"Ja":"Nein"),1)]),_:1}),E.value?(l(),m("div",Hl,[Rl,n("span",Jl,[n("span",null,[b(We,{id:"manualSoc",modelValue:H.value,"onUpdate:modelValue":x[6]||(x[6]=L=>H.value=L),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])])]),n("span",{type:"button",class:"fa-solid d-flex fa-lg me-2 mb-3 align-self-end fa-circle-check",onClick:A})])):w("",!0),r(te).active?(l(),M(Y,{key:3,heading:"Preisladen:",class:"grid-col-4 grid-left"},{default:y(()=>[b(ie,{modelValue:a.value.etActive,"onUpdate:modelValue":x[7]||(x[7]=L=>a.value.etActive=L)},null,8,["modelValue"])]),_:1})):w("",!0),r(te).active?(l(),M(Y,{key:4,heading:"max. Preis:",class:"grid-col-4"},{default:y(()=>[n("span",{type:"button",onClick:x[8]||(x[8]=L=>k.value=!k.value)},[D($(e.chargepoint.etActive?(Math.round(e.chargepoint.etMaxPrice*10)/10).toFixed(1)+" ct":"-")+" ",1),e.chargepoint.etActive?(l(),m("i",ql)):w("",!0)])]),_:1})):w("",!0),r(te).active?(l(),M(Y,{key:5,heading:"akt. Preis:",class:"grid-col-4 grid-right"},{default:y(()=>[n("span",{style:Q(V.value)},$(C.value)+" ct ",5)]),_:1})):w("",!0),k.value?(l(),m("div",{key:6,id:"priceChartInline"+e.chargepoint.id,class:"d-flex flex-column rounded priceEditor grid-col-12"},[r(q)[e.chargepoint.connectedVehicle]!=null?(l(),M(Wa,{key:0,chargepoint:e.chargepoint},null,8,["chargepoint"])):w("",!0),n("span",{class:"d-flex ms-2 my-4 pe-3 pt-1 d-flex align-self-end",style:Q(d.value),onClick:x[9]||(x[9]=L=>k.value=!1)},Zl,4)],8,Yl)):w("",!0)])]))]),default:y(()=>[T.value?w("",!0):(l(),m("div",Al,[n("div",{class:"grid12",onClick:x[2]||(x[2]=L=>T.value=!T.value)},[b(Y,{heading:"Status:",class:"grid-col-4 grid-left"},{default:y(()=>[n("span",{style:Q({color:c.value})},[n("i",{class:N(u.value)},null,2),D(" "+$(p.value),1)],4)]),_:1}),b(Y,{heading:"Geladen:",class:"grid-col-4"},{default:y(()=>[b(Ue,{"watt-h":S.chargepoint.dailyYield},null,8,["watt-h"])]),_:1}),b(Y,{heading:"gel. Reichw.:",class:"grid-col-4 grid-right"},{default:y(()=>[D($(h.value),1)]),_:1}),e.chargepoint.power>0?(l(),M(Y,{key:0,heading:"Leistung:",class:"grid-col-3 grid-left"},{default:y(()=>[b(vt,{watt:e.chargepoint.power},null,8,["watt"])]),_:1})):w("",!0),e.chargepoint.power>0?(l(),M(Y,{key:1,heading:"Strom:",class:"grid-col-3"},{default:y(()=>[D($(i.value),1)]),_:1})):w("",!0),e.chargepoint.power>0?(l(),M(Y,{key:2,heading:"Phasen:",class:"grid-col-3"},{default:y(()=>[D($(e.chargepoint.phasesInUse),1)]),_:1})):w("",!0),e.chargepoint.power>0?(l(),M(Y,{key:3,heading:"Sollstrom:",class:"grid-col-3 grid-right"},{default:y(()=>[n("span",Tl,$(s.value),1)]),_:1})):w("",!0)])])),T.value?(l(),m("div",Wl,[n("div",Dl,[S.chargepoint!=null?(l(),M(Jt,{key:0,chargepoint:S.chargepoint},null,8,["chargepoint"])):w("",!0)])])):w("",!0)]),_:1},8,["full-width"])),T.value?(l(),M(ze,{key:1,"full-width":e.fullWidth},{title:y(()=>[n("span",{style:Q(J.value),onClick:x[10]||(x[10]=L=>T.value=!T.value)},[Xl,D(" Einstellungen "+$(e.chargepoint.name),1)],4)]),buttons:y(()=>[n("span",{class:"ms-2 pt-1",style:Q(d.value),onClick:x[11]||(x[11]=L=>T.value=!T.value)},ec,4)]),default:y(()=>[S.chargepoint!=null?(l(),M(Jt,{key:0,chargepoint:S.chargepoint},null,8,["chargepoint"])):w("",!0)]),_:1},8,["full-width"])):w("",!0)],64))}}),ac=U(tc,[["__scopeId","data-v-c32ef31e"]]),Da=t=>(ae("data-v-eaefae30"),t=t(),oe(),t),oc=["id"],nc={class:"modal-dialog modal-lg modal-fullscreen-lg-down"},rc={class:"modal-content"},sc={class:"modal-header"},ic={class:"modal-title"},lc=Da(()=>n("button",{type:"button",class:"btn-close buttonTextSize d-flex justify-content-center pt-3 pb-0","data-bs-dismiss":"modal"},[n("i",{class:"fa-solid fa-lg fa-rectangle-xmark m-0 p-0"})],-1)),cc={class:"modal-body",style:{"background-color":"var(--color-bg)"}},dc=Da(()=>n("button",{class:"btn btn-secondary float-end mt-3 ms-1","data-bs-dismiss":"modal"}," Schließen ",-1)),uc=B({__name:"ModalComponent",props:{modalId:{}},setup(t){const e=t;return Ve(()=>{}),(a,o)=>(l(),m("div",{id:e.modalId,class:"modal fade"},[n("div",nc,[n("div",rc,[n("div",sc,[n("h3",ic,[he(a.$slots,"title",{},void 0,!0)]),lc]),n("div",cc,[he(a.$slots,"default",{},void 0,!0),dc])])])],8,oc))}}),za=U(uc,[["__scopeId","data-v-eaefae30"]]),hc=t=>(ae("data-v-2f1df729"),t=t(),oe(),t),pc={class:"d-flex align-items-center"},gc={class:"cpname"},mc={class:"d-flex float-right justify-content-end align-items-center"},vc=["data-bs-target"],fc=["data-bs-target"],_c={class:"subgrid"},bc={key:0,class:"d-flex justify-content-center align-items-center vehiclestatus"},yc={class:"d-flex flex-column align-items-center px-0"},wc={class:"d-flex justify-content-center flex-wrap"},kc={class:"d-flex align-items-center"},Sc={class:"badge phasesInUse rounded-pill"},xc={class:"d-flex flex-wrap justify-content-center chargeinfo"},$c={class:"me-1"},Mc={key:0,class:"subgrid socEditRow m-0 p-0"},Ic={class:"socEditor rounded mt-2 d-flex flex-column align-items-center grid-col-12"},Cc=hc(()=>n("span",{class:"d-flex m-1 p-0 socEditTitle"},"Ladestand einstellen:",-1)),Pc={class:"d-flex justify-content-stretch align-items-center"},Bc=B({__name:"CpsListItem2",props:{chargepoint:{}},setup(t){const e=t,a=Z(!1),o=g(()=>ge[e.chargepoint.chargeMode].icon),s=g(()=>{let A="";return e.chargepoint.isLocked?A="fa-lock":e.chargepoint.isCharging?A=" fa-bolt":e.chargepoint.isPluggedIn&&(A="fa-plug"),"fa "+A}),i=g(()=>{let A="var(--color-axis)";return e.chargepoint.isLocked?A="var(--color-evu)":e.chargepoint.isCharging?A="var(--color-charging)":e.chargepoint.isPluggedIn&&(A="var(--color-battery)"),{color:A,border:`0.5px solid ${A} `}}),h=g(()=>{switch(e.chargepoint.chargeMode){case"stop":return{"background-color":"var(--fg)"};default:return{"background-color":ge[e.chargepoint.chargeMode].color}}}),p=g(()=>$e(e.chargepoint.power,v.decimalPlaces)),c=g(()=>e.chargepoint.current+" A"),u=g(()=>e.chargepoint.phasesInUse),d=g(()=>e.chargepoint.dailyYield>0?ht(e.chargepoint.dailyYield,v.decimalPlaces):"0 Wh"),I=g(()=>"("+Math.round(e.chargepoint.rangeCharged).toString()+" "+e.chargepoint.rangeUnit+")"),J=g(()=>ge[e.chargepoint.chargeMode].name);function V(){ee("socUpdate",1,e.chargepoint.connectedVehicle),P[e.chargepoint.id].waitingForSoc=!0}function T(){ee("setSoc",E.value,e.chargepoint.connectedVehicle),a.value=!1}const E=g({get(){return e.chargepoint.soc},set(A){P[e.chargepoint.id].soc=A}}),W=g(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei");return(A,H)=>(l(),m(G,null,[b(Ze,{titlecolor:A.chargepoint.color,fullwidth:!0,small:!0},{title:y(()=>[n("div",pc,[n("span",gc,$(A.chargepoint.name),1),n("span",{class:"badge rounded-pill statusbadge mx-2",style:Q(i.value)},[n("i",{class:N([s.value,"me-1"])},null,2),D(" "+$(W.value),1)],4)])]),buttons:y(()=>[n("div",mc,[n("span",{class:"badge rounded-pill modebadge mx-2",type:"button",style:Q(h.value),"data-bs-toggle":"modal","data-bs-target":"#cpsconfig-"+A.chargepoint.id},[n("i",{class:N(["fa me-1",o.value])},null,2),D(" "+$(J.value),1)],12,vc),n("span",{class:"fa-solid ms-2 fa-lg fa-edit ps-1",type:"button","data-bs-toggle":"modal","data-bs-target":"#cpsconfig-"+A.chargepoint.id},null,8,fc)])]),default:y(()=>[n("div",_c,[b(Y,{heading:A.chargepoint.vehicleName,small:!0,class:"grid-left grid-col-4"},{default:y(()=>[A.chargepoint.isSocConfigured?(l(),m("span",bc,[b(It,{class:"me-1",soc:A.chargepoint.soc},null,8,["soc"]),A.chargepoint.isSocConfigured&&A.chargepoint.isSocManual?(l(),m("i",{key:0,type:"button",class:"fa-solid fa-sm fas fa-edit",style:{color:"var(--color-menu)"},onClick:H[0]||(H[0]=C=>a.value=!a.value)})):w("",!0),A.chargepoint.isSocConfigured&&!A.chargepoint.isSocManual?(l(),m("i",{key:1,type:"button",class:N(["fa-solid fa-sm me-2",A.chargepoint.waitingForSoc?"fa-spinner fa-spin":"fa-sync"]),style:{color:"var(--color-menu)"},onClick:V},null,2)):w("",!0)])):w("",!0)]),_:1},8,["heading"]),b(Y,{heading:"Parameter:",small:!0,class:"grid-col-4"},{default:y(()=>[n("div",yc,[n("span",wc,[n("span",null,$(p.value),1),n("span",kc,[n("span",Sc,$(u.value),1),n("span",null,$(c.value),1)])])])]),_:1}),b(Y,{heading:"Geladen:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[n("div",xc,[n("span",$c,$(d.value),1),n("span",null,$(I.value),1)])]),_:1})]),a.value?(l(),m("div",Mc,[n("div",Ic,[Cc,n("span",Pc,[n("span",null,[b(We,{id:"manualSoc",modelValue:E.value,"onUpdate:modelValue":H[1]||(H[1]=C=>E.value=C),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])])]),n("span",{type:"button",class:"fa-solid d-flex fa-lg me-2 mb-3 align-self-end fa-circle-check",onClick:T})])])):w("",!0)]),_:1},8,["titlecolor"]),(l(),M(lo,{to:"body"},[(l(),M(za,{key:A.chargepoint.id,"modal-id":"cpsconfig-"+A.chargepoint.id},{title:y(()=>[D(" Konfiguration: "+$(A.chargepoint.name),1)]),default:y(()=>[A.chargepoint!=null?(l(),M(Jt,{key:0,chargepoint:A.chargepoint},null,8,["chargepoint"])):w("",!0)]),_:1},8,["modal-id"]))]))],64))}}),Vc=U(Bc,[["__scopeId","data-v-2f1df729"]]),Lc=B({__name:"WbBadge",props:{color:{},bgcolor:{}},setup(t){const e=t,a=g(()=>({color:e.color??"var(--color-bg)","background-color":e.bgcolor??"var(--color-menu)"}));return(o,s)=>(l(),m("span",{class:"pillWbBadge rounded-pill ms-2 px-2",style:Q(a.value)},[he(o.$slots,"default",{},void 0,!0)],4))}}),Be=U(Lc,[["__scopeId","data-v-28220a9a"]]),Oc=t=>(ae("data-v-b8c6b557"),t=t(),oe(),t),Ac=Oc(()=>n("span",{class:"fa-solid fa-charging-station"}," ",-1)),Tc=B({__name:"CpSimpleList2",setup(t){const e=g(()=>Object.values(P));return(a,o)=>(l(),M(ze,{"variable-width":!0},{title:y(()=>[Ac,D(" Ladepunkte ")]),buttons:y(()=>[r(te).active?(l(),M(Be,{key:0,bgcolor:"var(--color-menu)"},{default:y(()=>[D("Strompreis: "+$(r(te).etCurrentPriceString),1)]),_:1})):w("",!0)]),default:y(()=>[(l(!0),m(G,null,X(e.value,(s,i)=>(l(),m("div",{key:i,class:"subgrid pb-2"},[b(Vc,{chargepoint:s},null,8,["chargepoint"])]))),128))]),_:1}))}}),Wc=U(Tc,[["__scopeId","data-v-b8c6b557"]]),Lt=B({__name:"ChargePointList",props:{shortlist:{type:Boolean}},setup(t){let e,a;const o=t,s=g(()=>{let p=Object.values(P);return h(),p}),i=g(()=>{switch(Object.values(P).length){case 0:return v.preferWideBoxes?"col-lg-6":"col-lg-4";case 1:return v.preferWideBoxes?"col-lg-6":"col-lg-4";case 2:return v.preferWideBoxes?"col-lg-12":"col-lg-8 ";default:return"col-lg-12"}});function h(){let p=document.querySelector(".swiper-chargepoints");if(p&&(a=p,e=a.swiper),e){let c="1";if(Re.value)switch(Object.values(P).length){case 0:case 1:c="1";break;case 2:c="2";break;default:c="3"}a.setAttribute("slides-per-view",c),e.update()}}return Ve(()=>{let p=document.querySelector(".swiper-chargepoints");p&&(a=p,e=a.swiper),window.addEventListener("resize",h),window.document.addEventListener("visibilitychange",h)}),(p,c)=>(l(),m(G,null,[o.shortlist?w("",!0):(l(),m("swiper-container",{key:0,"space-between":0,"slides-per-view":1,pagination:{clickable:!0},class:N(["cplist m-0 p-0 swiper-chargepoints d-flex align-items-stretch",i.value])},[(l(!0),m(G,null,X(s.value,u=>(l(),m("swiper-slide",{key:u.id},[n("div",{class:N([r(Re)?"mb-0":"mb-5","d-flex align-items-stretch flex-fill"])},[b(ac,{chargepoint:u,"full-width":!0},null,8,["chargepoint"])],2)]))),128))],2)),o.shortlist?(l(),M(Wc,{key:1})):w("",!0)],64))}}),Dc={class:"container-fluid p-0 m-0"},zc={class:"row p-0 m-0"},Gc={class:"d-grid gap-2"},Ec=["onClick"],jc={class:"col-md-4 p-1"},Uc={class:"d-grid gap-2"},Fc={key:0},Nc=n("hr",null,null,-1),Hc=n("div",{class:"row"},[n("div",{class:"col text-center"},"Vorrang im Lademodus PV-Laden:")],-1),Rc={class:"row justify-content-center m-1 p-0"},Jc={class:"col-lg-4 p-1 m-0"},qc={class:"d-grid gap-2"},Yc=n("span",{class:"fas fa-car ms-2"}," ",-1),Qc={class:"col-lg-4 p-1 m-0"},Zc={class:"d-grid gap-2"},Xc=n("span",{class:"fas fa-car-battery ms-2"}," ",-1),Kc={class:"col-lg-4 p-1 m-0"},ed={class:"d-grid gap-2"},td=n("span",{class:"fas fa-battery-half"}," ",-1),ad=B({__name:"BBSelect",props:{cpId:{}},setup(t){const e=t,a=[{mode:"instant_charging",name:"Sofort",color:"var(--color-charging)"},{mode:"pv_charging",name:"PV",color:"var(--color-pv)"},{mode:"scheduled_charging",name:"Zielladen",color:"var(--color-battery)"},{mode:"standby",name:"Standby",color:"var(--color-axis)"},{mode:"stop",name:"Stop",color:"var(--color-axis)"}],o=g(()=>P[e.cpId]);function s(u){return u==o.value.chargeMode?"btn btn-success buttonTextSize":"btn btn-secondary buttonTextSize"}function i(u){return de.pvBatteryPriority==u?"btn-success":"btn-secondary"}function h(u){o.value.chargeMode=u}function p(u){o.value.isLocked=u}function c(u){de.pvBatteryPriority=u}return(u,d)=>(l(),m("div",Dc,[n("div",zc,[(l(),m(G,null,X(a,(I,J)=>n("div",{key:J,class:"col-md-4 p-1"},[n("div",Gc,[n("button",{type:"button",class:N(s(I.mode)),style:{},onClick:V=>h(I.mode)},$(I.name),11,Ec)])])),64)),n("div",jc,[n("div",Uc,[o.value.isLocked?(l(),m("button",{key:0,type:"button",class:"btn btn-outline-success buttonTextSize","data-bs-dismiss":"modal",onClick:d[0]||(d[0]=I=>p(!1))}," Entsperren ")):w("",!0),o.value.isLocked?w("",!0):(l(),m("button",{key:1,type:"button",class:"btn btn-outline-danger buttonTextSize","data-bs-dismiss":"modal",onClick:d[1]||(d[1]=I=>p(!0))}," Sperren "))])])]),r(de).isBatteryConfigured?(l(),m("div",Fc,[Nc,Hc,n("div",Rc,[n("div",Jc,[n("div",qc,[n("button",{id:"evPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",i("ev_mode")]),"data-dismiss":"modal",priority:"1",onClick:d[2]||(d[2]=I=>c("ev_mode"))},[D(" EV "),Yc],2)])]),n("div",Qc,[n("div",Zc,[n("button",{id:"batteryPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",i("bat_mode")]),"data-dismiss":"modal",priority:"0",onClick:d[3]||(d[3]=I=>c("bat_mode"))},[D(" Speicher "),Xc],2)])]),n("div",Kc,[n("div",ed,[n("button",{id:"minsocPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",i("min_soc_bat_mode")]),"data-dismiss":"modal",priority:"0",onClick:d[4]||(d[4]=I=>c("min_soc_bat_mode"))},[D(" MinSoc "),td],2)])])])])):w("",!0)]))}}),od={class:"col-lg-4 p-0 m-0 mt-1"},nd={class:"d-grid gap-2"},rd=["data-bs-target"],sd={class:"m-0 p-0 d-flex justify-content-between align-items-center"},id={class:"mx-1 badge rounded-pill smallTextSize plugIndicator"},ld={key:0,class:"ms-2"},cd={class:"m-0 p-0"},dd={key:0,class:"ps-1"},ud=B({__name:"BbChargeButton",props:{chargepoint:{}},setup(t){const e=t,a="chargeSelectModal"+e.chargepoint.id,o=g(()=>ge[e.chargepoint.chargeMode].name),s=g(()=>{let d={background:"var(--color-menu)"};return e.chargepoint.isLocked?d.background="var(--color-evu)":e.chargepoint.isCharging?d.background="var(--color-charging)":e.chargepoint.isPluggedIn&&(d.background="var(--color-battery)"),d}),i=g(()=>{if(ge){let d={background:ge[e.chargepoint.chargeMode].color,color:"white"};switch(e.chargepoint.chargeMode){case fe.instant_charging:e.chargepoint.isCharging&&!e.chargepoint.isLocked&&(d=u(d));break;case fe.standby:case fe.stop:d.background="darkgrey",d.color="black";break;case fe.scheduled_charging:e.chargepoint.isPluggedIn&&!e.chargepoint.isCharging&&!e.chargepoint.isLocked&&(d=u(d));break}return d}else return{background:"var(--color-bg)",color:"var(--color-bg)"}}),h=g(()=>ge?ge[e.chargepoint.chargeMode].icon:""),p=g(()=>{switch(de.pvBatteryPriority){case"ev_mode":return"fa-car";case"bat_mode":return"fa-car-battery";case"min_soc_bat_mode":return"fa-battery-half";default:return console.log("default"),""}}),c=g(()=>{let d="fa-ellipsis";return e.chargepoint.isLocked?d="fa-lock":e.chargepoint.isCharging?d=" fa-bolt":e.chargepoint.isPluggedIn&&(d="fa-plug"),"fa "+d});function u(d){let I=d.color;return d.color=d.background,d.background=I,d}return(d,I)=>(l(),m("div",od,[n("div",nd,[n("button",{type:"button",class:"btn mx-1 mb-0 p-1 mediumTextSize chargeButton shadow",style:Q(s.value),"data-bs-toggle":"modal","data-bs-target":"#"+a},[n("div",sd,[n("span",id,[n("i",{class:N(c.value)},null,2),d.chargepoint.isCharging?(l(),m("span",ld,$(r($e)(d.chargepoint.power)),1)):w("",!0)]),n("span",cd,$(d.chargepoint.name),1),n("span",{class:"mx-2 m-0 badge rounded-pill smallTextSize modeIndicator",style:Q(i.value)},[n("i",{class:N(["fa me-1",h.value])},null,2),D(" "+$(o.value)+" ",1),d.chargepoint.chargeMode==r(fe).pv_charging&&r(de).isBatteryConfigured?(l(),m("span",dd,[D(" ( "),n("i",{class:N(["fa m-0",p.value])},null,2),D(") ")])):w("",!0)],4)])],12,rd)]),b(za,{"modal-id":a},{title:y(()=>[D(" Lademodus für "+$(d.chargepoint.vehicleName),1)]),default:y(()=>[b(ad,{"cp-id":d.chargepoint.id},null,8,["cp-id"])]),_:1})]))}}),hd=U(ud,[["__scopeId","data-v-bde17905"]]),pd={class:"row p-0 mt-0 mb-1 m-0"},gd={class:"col p-0 m-0"},md={class:"container-fluid p-0 m-0"},vd={class:"row p-0 m-0 d-flex justify-content-center align-items-center"},fd={key:0,class:"col time-display"},_d=B({__name:"ButtonBar",setup(t){return(e,a)=>(l(),m("div",pd,[n("div",gd,[n("div",md,[n("div",vd,[r(v).showClock=="buttonbar"?(l(),m("span",fd,$(r(Ca)(r(Rt))),1)):w("",!0),(l(!0),m(G,null,X(r(P),(o,s)=>(l(),M(hd,{key:s,chargepoint:o,"charge-point-count":Object.values(r(P)).length},null,8,["chargepoint","charge-point-count"]))),128))])])])]))}}),bd=U(_d,[["__scopeId","data-v-791e4be0"]]);class yd{constructor(e){f(this,"id");f(this,"name","Speicher");f(this,"color","var(--color-battery)");f(this,"dailyYieldExport",0);f(this,"dailyYieldImport",0);f(this,"monthlyYieldExport",0);f(this,"monthlyYieldImport",0);f(this,"yearlyYieldExport",0);f(this,"yearlyYieldImport",0);f(this,"exported",0);f(this,"faultState",0);f(this,"faultStr","");f(this,"imported",0);f(this,"power",0);f(this,"soc",0);this.id=e}}class wd{constructor(){f(this,"dailyExport",0);f(this,"dailyImport",0);f(this,"exported",0);f(this,"imported",0);f(this,"power",0);f(this,"soc",0)}}se(new wd);const ve=Z(new Map),Ga=t=>{ve.value.set(t,new yd(t)),ve.value.get(t).color=ue["bat"+ve.value.size].color};function kd(){ve.value=new Map}const Sd={class:"battery-title"},xd={class:"subgrid pt-1"},$d=B({__name:"BLBattery",props:{bat:{}},setup(t){const e=t,a=g(()=>e.bat.power<0?`Liefert (${$e(-e.bat.power)})`:e.bat.power>0?`Lädt (${$e(e.bat.power)})`:"Bereit"),o=g(()=>e.bat.power<0?"var(--color-pv)":e.bat.power>0?"var(--color-battery)":"var(--color-menu)");return(s,i)=>(l(),M(Ze,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[n("span",Sd,$(s.bat.name),1)]),buttons:y(()=>[b(Be,{bgcolor:o.value},{default:y(()=>[D($(a.value),1)]),_:1},8,["bgcolor"])]),default:y(()=>[n("div",xd,[b(Y,{heading:"Ladestand:",small:!0,class:"grid-left grid-col-4"},{default:y(()=>[b(It,{soc:e.bat.soc},null,8,["soc"])]),_:1}),b(Y,{heading:"Geliefert:",small:!0,class:"grid-col-4"},{default:y(()=>[b(Ue,{"watt-h":e.bat.dailyYieldExport},null,8,["watt-h"])]),_:1}),b(Y,{heading:"Geladen:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[b(Ue,{"watt-h":e.bat.dailyYieldImport},null,8,["watt-h"])]),_:1})])]),_:1}))}}),Md=U($d,[["__scopeId","data-v-4b8dfbb9"]]),Ea=t=>(ae("data-v-8e4dd779"),t=t(),oe(),t),Id=Ea(()=>n("span",{class:"fas fa-car-battery me-2",style:{color:"var(--color-battery)"}}," ",-1)),Cd=Ea(()=>n("span",null,"Speicher",-1)),Pd={class:"px-3 subgrid grid-12"},Bd=B({__name:"BatteryList",setup(t){const e=g(()=>R.batOut.power>0?`Liefert (${$e(R.batOut.power)})`:j.batIn.power>0?`Lädt (${$e(j.batIn.power)})`:"Bereit:"),a=g(()=>R.batOut.power>0?"var(--color-pv)":j.batIn.power>0?"var(--color-battery)":"var(--color-menu)");return(o,s)=>r(de).isBatteryConfigured?(l(),M(ze,{key:0,"variable-width":!0,"full-width":!1},{title:y(()=>[Id,Cd]),buttons:y(()=>[b(Be,{bgcolor:a.value},{default:y(()=>[D($(e.value),1)]),_:1},8,["bgcolor"])]),default:y(()=>[n("div",Pd,[b(Y,{heading:"Ladestand:",class:"grid-left grid-col-4"},{default:y(()=>[b(It,{color:"var(--color-battery)",soc:r(de).batterySoc},null,8,["soc"])]),_:1}),b(Y,{heading:"Geladen:",class:"grid-col-4"},{default:y(()=>[n("span",null,$(r(ht)(r(j).batIn.energy)),1)]),_:1}),b(Y,{heading:"Geliefert",class:"grid-right grid-col-4"},{default:y(()=>[n("span",null,$(r(ht)(r(R).batOut.energy)),1)]),_:1})]),(l(!0),m(G,null,X(r(ve),([i,h])=>(l(),M(Md,{key:i,bat:h},null,8,["bat"]))),128))]),_:1})):w("",!0)}}),Ot=U(Bd,[["__scopeId","data-v-8e4dd779"]]),Vd={class:"subgrid"},Ld=B({__name:"SHListItem",props:{device:{}},setup(t){const e=t,a=g(()=>e.device.status=="on"?"fa-toggle-on fa-xl":e.device.status=="waiting"?"fa-spinner fa-spin":"fa-toggle-off fa-xl"),o=g(()=>{let p="var(--color-switchRed)";switch(e.device.status){case"on":p="var(--color-switchGreen)";break;case"detection":p="var(--color-switchBlue)";break;case"timeout":p="var(--color-switchWhite)";break;case"waiting":p="var(--color-menu)";break;default:p="var(--color-switchRed)"}return{color:p}});function s(){e.device.isAutomatic||(e.device.status=="on"?ee("shSwitchOn",0,e.device.id):ee("shSwitchOn",1,e.device.id),ne.get(e.device.id).status="waiting")}function i(){e.device.isAutomatic?ee("shSetManual",1,e.device.id):ee("shSetManual",0,e.device.id)}const h=g(()=>e.device.isAutomatic?"Auto":"Man");return(p,c)=>(l(),M(Ze,{titlecolor:p.device.color,fullwidth:!0},{title:y(()=>[D($(p.device.name),1)]),buttons:y(()=>[(l(!0),m(G,null,X(p.device.temp,(u,d)=>(l(),m("span",{key:d},[u<300?(l(),M(Be,{key:0,bgcolor:"var(--color-battery)"},{default:y(()=>[n("span",null,$(r(tn)(u)),1)]),_:2},1024)):w("",!0)]))),128)),e.device.canSwitch?(l(),m("span",{key:0,class:N([a.value,"fa-solid statusbutton mr-2 ms-2"]),style:Q(o.value),onClick:s},null,6)):w("",!0),e.device.canSwitch?(l(),M(Be,{key:1,type:"button",onClick:i},{default:y(()=>[D($(h.value),1)]),_:1})):w("",!0)]),default:y(()=>[n("div",Vd,[b(Y,{heading:"Leistung:",class:"grid-col-4 grid-left"},{default:y(()=>[b(vt,{watt:p.device.power},null,8,["watt"])]),_:1}),b(Y,{heading:"Energie:",class:"grid-col-4"},{default:y(()=>[b(Ue,{"watt-h":p.device.energy},null,8,["watt-h"])]),_:1}),b(Y,{heading:"Laufzeit:",class:"grid-col-4 grid-right"},{default:y(()=>[D($(r(Ko)(p.device.runningTime)),1)]),_:1})])]),_:1},8,["titlecolor"]))}}),Od=U(Ld,[["__scopeId","data-v-92893218"]]),ft=t=>(ae("data-v-5b5cf6b3"),t=t(),oe(),t),Ad=ft(()=>n("span",{class:"fas fa-plug me-2",style:{color:"var(--color-devices)"}}," ",-1)),Td={class:"sh-title py-4"},Wd=ft(()=>n("span",{class:"fa-solid fa-lg ps-1 fa-ellipsis-vertical"},null,-1)),Dd=[Wd],zd=ft(()=>n("span",{class:"fas fa-gear"}," ",-1)),Gd=ft(()=>n("span",{class:"fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),Ed=[Gd],jd=["id","onUpdate:modelValue","value"],Ud=["for"],Fd=ft(()=>n("div",{class:"col-12 mb-3 pe-3 mt-0"},[n("button",{class:"btn btn-sm btn-secondary float-end"},"Schließen")],-1)),Nd=[Fd],Hd=3,Rd=B({__name:"SmartHomeList",setup(t){const e=g(()=>Re.value?a.value.reduce((h,p)=>{const c=h;let u=h[h.length-1];return u.length>=Hd?h.push([p]):u.push(p),c},[[]]):[a.value]),a=g(()=>[...ne.values()].filter(h=>h.configured));function o(h){return"Geräte"+(Re.value&&e.value.length>1?"("+(h+1)+")":"")}function s(){i.value=!i.value}const i=Z(!1);return(h,p)=>(l(),m(G,null,[(l(!0),m(G,null,X(e.value,(c,u)=>(l(),M(ze,{key:u,"variable-width":!0},{title:y(()=>[n("span",{onClick:s},[Ad,n("span",Td,$(o(u)),1)])]),buttons:y(()=>[n("span",{class:"ms-2 pt-1",onClick:s},Dd)]),default:y(()=>[(l(!0),m(G,null,X(c,d=>(l(),M(Od,{key:d.id,device:d,class:"subgrid pb-2"},null,8,["device"]))),128))]),_:2},1024))),128)),i.value?(l(),M(ze,{key:0},{title:y(()=>[n("span",{class:"smarthome",onClick:s},[zd,D(" Einstellungen")])]),buttons:y(()=>[n("span",{class:"ms-2 pt-1",onClick:s},Ed)]),default:y(()=>[b(F,{title:"Im Energie-Graph anzeigen:",icon:"fa-chart-column",fullwidth:!0},{default:y(()=>[(l(!0),m(G,null,X(a.value,(c,u)=>(l(),m("div",{key:u},[gt(n("input",{id:"check"+u,"onUpdate:modelValue":d=>c.showInGraph=d,class:"form-check-input",type:"checkbox",value:c},null,8,jd),[[_a,c.showInGraph]]),n("label",{class:"form-check-label px-2",for:"check"+u},$(c.name),9,Ud)]))),128))]),_:1}),n("div",{class:"row p-0 m-0",onClick:s},Nd)]),_:1})):w("",!0)],64))}}),At=U(Rd,[["__scopeId","data-v-5b5cf6b3"]]),Jd={class:"countername"},qd={class:"subgrid pt-1"},Yd=B({__name:"ClCounter",props:{counter:{}},setup(t){const e=t,a=g(()=>e.counter.power>0?"Bezug":"Export"),o=g(()=>e.counter.power>0?"var(--color-evu)":"var(--color-pv)");return(s,i)=>(l(),M(Ze,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[n("span",Jd,$(s.counter.name),1)]),buttons:y(()=>[e.counter.power!=0?(l(),M(Be,{key:0,bgcolor:o.value},{default:y(()=>[D($(a.value),1)]),_:1},8,["bgcolor"])):w("",!0),b(Be,{color:"var(--color-bg)"},{default:y(()=>[D(" ID: "+$(e.counter.id),1)]),_:1})]),default:y(()=>[n("div",qd,[b(Y,{heading:"Leistung:",small:!0,class:"grid-left grid-col-4"},{default:y(()=>[b(vt,{watt:Math.abs(e.counter.power)},null,8,["watt"])]),_:1}),b(Y,{heading:"Bezogen:",small:!0,class:"grid-col-4"},{default:y(()=>[b(Ue,{"watt-h":e.counter.energy_imported},null,8,["watt-h"])]),_:1}),b(Y,{heading:"Exportiert:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[b(Ue,{"watt-h":e.counter.energy_exported},null,8,["watt-h"])]),_:1})])]),_:1}))}}),Qd=U(Yd,[["__scopeId","data-v-01dd8c4d"]]);class Zd{constructor(e){f(this,"id");f(this,"name","Zähler");f(this,"power",0);f(this,"energy_imported",0);f(this,"energy_exported",0);f(this,"grid",!1);f(this,"type","counter");f(this,"color","var(--color-evu)");f(this,"energyPv",0);f(this,"energyBat",0);f(this,"pvPercentage",0);f(this,"icon","");this.id=e}}const ye=se({});function Xd(t,e){if(t in ye)console.info("Duplicate counter message: "+t);else switch(ye[t]=new Zd(t),ye[t].type=e,e){case"counter":ye[t].color="var(--color-evu)";break;case"inverter":ye[t].color="var(--color-pv)";break;case"cp":ye[t].color="var(--color-charging)";break;case"bat":ye[t].color="var(--color-bat)";break}}const ja=t=>(ae("data-v-5f059284"),t=t(),oe(),t),Kd=ja(()=>n("span",{class:"fas fa-bolt me-2",style:{color:"var(--color-evu)"}}," ",-1)),eu=ja(()=>n("span",null,"Zähler",-1)),tu=B({__name:"CounterList",setup(t){return(e,a)=>(l(),M(ze,{"variable-width":!0},{title:y(()=>[Kd,eu]),default:y(()=>[(l(!0),m(G,null,X(r(ye),(o,s)=>(l(),m("div",{key:s,class:"subgrid pb-2"},[b(Qd,{counter:o},null,8,["counter"])]))),128))]),_:1}))}}),Tt=U(tu,[["__scopeId","data-v-5f059284"]]),au={class:"subgrid"},ou=B({__name:"VlVehicle",props:{vehicle:{}},setup(t){const e=t,a=g(()=>{let s="Unterwegs",i=e.vehicle.chargepoint;return i!=null&&(i.isCharging?s="Lädt ("+i.name+")":i.isPluggedIn&&(s="Bereit ("+i.name+")")),s}),o=g(()=>{let s=e.vehicle.chargepoint;return s!=null?s.isLocked?"var(--color-evu)":s.isCharging?"var(--color-charging)":s.isPluggedIn?"var(--color-battery)":"var(--color-axis)":"var(--color-axis)"});return(s,i)=>(l(),M(Ze,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[D($(e.vehicle.name),1)]),default:y(()=>[n("div",au,[b(Y,{heading:"Status:",small:!1,class:"grid-left grid-col-4"},{default:y(()=>[n("span",{style:Q({color:o.value}),class:"d-flex justify-content-center align-items-center status-string"},$(a.value),5)]),_:1}),b(Y,{heading:"Ladestand:",small:!1,class:"grid-col-4"},{default:y(()=>[D($(Math.round(e.vehicle.soc))+" % ",1)]),_:1}),b(Y,{heading:"Reichweite:",small:!1,class:"grid-right grid-col-4"},{default:y(()=>[D($(Math.round(e.vehicle.range))+" km ",1)]),_:1})])]),_:1}))}}),nu=U(ou,[["__scopeId","data-v-f92f4f7b"]]),Ua=t=>(ae("data-v-23b437ea"),t=t(),oe(),t),ru=Ua(()=>n("span",{class:"fas fa-car me-2",style:{color:"var(--color-charging)"}}," ",-1)),su=Ua(()=>n("span",null,"Fahrzeuge",-1)),iu=B({__name:"VehicleList",setup(t){return(e,a)=>(l(),M(ze,{"variable-width":!0},{title:y(()=>[ru,su]),default:y(()=>[(l(!0),m(G,null,X(Object.values(r(q)).filter(o=>o.visible),(o,s)=>(l(),m("div",{key:s,class:"subgrid"},[b(nu,{vehicle:o},null,8,["vehicle"])]))),128))]),_:1}))}}),Wt=U(iu,[["__scopeId","data-v-23b437ea"]]),Fa=t=>(ae("data-v-3ecadd9f"),t=t(),oe(),t),lu=Fa(()=>n("span",{class:"fas fa-coins me-2",style:{color:"var(--color-battery)"}}," ",-1)),cu=Fa(()=>n("span",null,"Strompreis",-1)),du={class:"grapharea"},uu={id:"pricechart",class:"p-1 m-0 pricefigure"},hu={viewBox:"0 0 400 280"},pu=["id","origin","transform"],Dt=380,zt=250,Gt=12,gu=B({__name:"GlobalPriceChart",props:{id:{}},setup(t){const e=t,a=Z(!1),o={top:0,bottom:15,left:20,right:0},s=g(()=>{let V=[];return te.etPriceList.size>0&&te.etPriceList.forEach((T,E)=>{V.push([E,T])}),V}),i=g(()=>s.value.length>1?(Dt-o.left-o.right)/s.value.length:0),h=g(()=>{let V=Pe(s.value,T=>T[0]);return V[1]&&(V[1]=new Date(V[1]),V[1].setTime(V[1].getTime()+36e5)),Ye().range([o.left,Dt-o.right]).domain(V)}),p=g(()=>{let V=Pe(s.value,T=>T[1]);return V[0]=Math.floor(V[0])-1,V[1]=Math.floor(V[1])+1,V}),c=g(()=>Qe().range([zt-o.bottom,0]).domain(p.value)),u=g(()=>it(h.value).ticks(s.value.length).tickSize(5).tickSizeInner(-zt).tickFormat(V=>V.getHours()%6==0?ot("%H:%M")(V):"")),d=g(()=>pt(c.value).ticks(15).tickSize(0).tickSizeInner(-(Dt-o.right-o.left)).tickFormat(V=>V.toString())),I=g(()=>{a.value==!0;const V=ce("g#"+J.value);V.selectAll("*").remove(),V.selectAll("bar").data(s.value).enter().append("g").append("rect").attr("class","bar").attr("x",k=>h.value(k[0])).attr("y",k=>c.value(k[1])).attr("width",i.value).attr("height",k=>c.value(p.value[0])-c.value(k[1])).attr("fill","var(--color-charging)");const E=V.append("g").attr("class","axis").call(u.value);E.attr("transform","translate(0,"+(zt-o.bottom)+")"),E.selectAll(".tick").attr("font-size",Gt).attr("color","var(--color-bg)"),E.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",k=>k.getHours()%6==0?"2":"0.5"),E.select(".domain").attr("stroke","var(--color-bg");const W=V.append("g").attr("class","axis").call(d.value);W.attr("transform","translate("+o.left+",0)"),W.selectAll(".tick").attr("font-size",Gt).attr("color","var(--color-bg)"),W.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",k=>k%5==0?"2":"0.5"),W.select(".domain").attr("stroke","var(--color-bg)");const A=V.selectAll("ttip").data(s.value).enter().append("g").attr("class","ttarea");A.append("rect").attr("x",k=>h.value(k[0])).attr("y",k=>c.value(k[1])).attr("height",k=>c.value(p.value[0])-c.value(k[1])).attr("class","ttrect").attr("width",i.value).attr("opacity","1%").attr("fill","var(--color-charging)");const H=A.append("g").attr("class","ttmessage").attr("transform",k=>"translate("+(h.value(k[0])-30+i.value/2)+","+(c.value(k[1])-16)+")");H.append("rect").attr("rx",5).attr("width","60").attr("height","30").attr("fill","var(--color-menu)");const C=H.append("text").attr("text-anchor","middle").attr("x",30).attr("y",12).attr("font-size",Gt).attr("fill","var(--color-bg)");return C.append("tspan").attr("x",30).attr("dy","0em").text(k=>ot("%H:%M")(k[0])),C.append("tspan").attr("x",30).attr("dy","1.1em").text(k=>Math.round(k[1]*10)/10+" ct"),"PriceChart.vue"}),J=g(()=>"priceChartCanvas"+e.id);return Ve(()=>{a.value=!a.value}),(V,T)=>(l(),M(ze,{"variable-width":!0},{title:y(()=>[lu,cu]),buttons:y(()=>[r(te).active?(l(),M(Be,{key:0,bgcolor:"var(--color-charging)"},{default:y(()=>[D($(r(te).etCurrentPriceString),1)]),_:1})):w("",!0),r(te).active?(l(),M(Be,{key:1,bgcolor:"var(--color-menu)"},{default:y(()=>[D($(r(te).etProvider),1)]),_:1})):w("",!0)]),default:y(()=>[n("div",du,[n("figure",uu,[(l(),m("svg",hu,[n("g",{id:J.value,origin:I.value,transform:"translate("+o.top+","+o.left+") "},null,8,pu)]))])])]),_:1}))}}),Et=U(gu,[["__scopeId","data-v-3ecadd9f"]]),mu={class:"subgrid pt-1"},vu=B({__name:"IlInverter",props:{inverter:{}},setup(t){const e=t,a=g(()=>({color:e.inverter.color}));return(o,s)=>(l(),M(Ze,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[n("span",{class:"invertername",style:Q(a.value)},$(o.inverter.name),5)]),buttons:y(()=>[e.inverter.power<0?(l(),M(Be,{key:0,bgcolor:"var(--color-pv)"},{default:y(()=>[D($(r($e)(-e.inverter.power)),1)]),_:1})):w("",!0)]),default:y(()=>[n("div",mu,[b(Y,{heading:"Heute:",small:!1,class:"grid-col-4"},{default:y(()=>[b(Ue,{"watt-h":e.inverter.energy},null,8,["watt-h"])]),_:1}),b(Y,{heading:"Monat:",small:!1,class:"grid-right grid-col-4"},{default:y(()=>[b(Ue,{"watt-h":e.inverter.energy_month},null,8,["watt-h"])]),_:1}),b(Y,{heading:"Jahr:",small:!1,class:"grid-right grid-col-4"},{default:y(()=>[b(Ue,{"watt-h":e.inverter.energy_year},null,8,["watt-h"])]),_:1})])]),_:1}))}}),fu=U(vu,[["__scopeId","data-v-5a6c3d06"]]),Na=t=>(ae("data-v-b7a71f81"),t=t(),oe(),t),_u=Na(()=>n("span",{class:"fas fa-solar-panel me-2",style:{color:"var(--color-pv)"}}," ",-1)),bu=Na(()=>n("span",null,"Wechselrichter",-1)),yu=B({__name:"InverterList",setup(t){return(e,a)=>(l(),M(ze,{"variable-width":!0},{title:y(()=>[_u,bu]),buttons:y(()=>[r(R).pv.power>0?(l(),M(Be,{key:0,bgcolor:"var(--color-pv)"},{default:y(()=>[D($(r($e)(r(R).pv.power)),1)]),_:1})):w("",!0)]),default:y(()=>[(l(!0),m(G,null,X(r(ke),([o,s])=>(l(),m("div",{key:o,class:"subgrid pb-2"},[b(fu,{inverter:s},null,8,["inverter"])]))),128))]),_:1}))}}),jt=U(yu,[["__scopeId","data-v-b7a71f81"]]),wu={class:"row py-0 px-0 m-0"},ku=["breakpoints"],Su=B({__name:"CarouselFix",setup(t){let e,a;const o=Z(!1),s=g(()=>o.value?{992:{slidesPerView:1,spaceBetween:0}}:{992:{slidesPerView:3,spaceBetween:0}});return co(()=>v.zoomGraph,i=>{if(e){let h=i?"1":"3";a.setAttribute("slides-per-view",h),e.activeIndex=1,e.update()}}),Ve(()=>{let i=document.querySelector(".swiper-carousel");i&&(a=i,e=a.swiper)}),(i,h)=>(l(),m("div",wu,[n("swiper-container",{"space-between":0,pagination:{clickable:!0},"slides-per-view":"1",class:"p-0 m-0 swiper-carousel",breakpoints:s.value},[n("swiper-slide",null,[n("div",{class:N([r(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(i.$slots,"item1",{},void 0,!0)],2)]),n("swiper-slide",null,[n("div",{class:N([r(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(i.$slots,"item2",{},void 0,!0)],2)]),n("swiper-slide",null,[n("div",{class:N([r(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(i.$slots,"item3",{},void 0,!0)],2)])],8,ku)]))}}),xu=U(Su,[["__scopeId","data-v-dc35b0f6"]]);function $u(t,e){t=="openWB/graph/boolDisplayLiveGraph"?de.displayLiveGraph=+e==1:t.match(/^openwb\/graph\/alllivevaluesJson[1-9][0-9]*$/i)?Mu(t,e):t=="openWB/graph/lastlivevaluesJson"?Iu(t,e):t=="openWB/graph/config/duration"&&(pe.duration=JSON.parse(e))}function Mu(t,e){if(!pe.initialized){let a=[];const o=e.toString().split(`
-`);o.length>1?a=o.map(h=>JSON.parse(h)):a=[];const s=t.match(/(\d+)$/g),i=s?s[0]:"";i!=""&&typeof pe.rawDataPacks[+i-1]>"u"&&(pe.rawDataPacks[+i-1]=a,pe.initCounter++)}if(pe.initCounter==16){const a=[];pe.unsubscribeRefresh(),pe.initialized=!0,pe.rawDataPacks.forEach(o=>{o.forEach(s=>{const i=Ha(s);a.push(i)})}),mt(a),pe.subscribeUpdates()}}function Iu(t,e){const a=JSON.parse(e),o=Ha(a);pe.graphRefreshCounter++,mt(_.data.concat(o)),pe.graphRefreshCounter>60&&pe.activate()}function Ha(t){const e=Object.values(P).length>0?Object.values(P)[0].connectedVehicle:0,a=Object.values(P).length>1?Object.values(P)[1].connectedVehicle:1,o="ev"+e+"-soc",s="ev"+a+"-soc",i={};i.date=+t.timestamp*1e3,+t.grid>0?(i.evuIn=+t.grid,i.evuOut=0):+t.grid<=0?(i.evuIn=0,i.evuOut=-t.grid):(i.evuIn=0,i.evuOut=0),+t["pv-all"]>=0?(i.pv=+t["pv-all"],i.inverter=0):(i.pv=0,i.inverter=-t["pv-all"]),i.house=+t["house-power"],+t["bat-all-power"]>0?(i.batOut=0,i.batIn=+t["bat-all-power"]):+t["bat-all-power"]<0?(i.batOut=-t["bat-all-power"],i.batIn=0):(i.batOut=0,i.batIn=0),t["bat-all-soc"]?i.batSoc=+t["bat-all-soc"]:i.batSoc=0,t[o]&&(i["soc"+e]=+t[o]),t[s]&&(i["soc"+a]=+t[s]),i.charging=+t["charging-all"];for(let h=0;h<10;h++){const p="cp"+h;i[p]=+(t[p+"-power"]??0)}return i.selfUsage=i.pv-i.evuOut,i.selfUsage<0&&(i.selfUsage=0),i.devices=0,i}const Cu=["evuIn","pv","batOut","evuOut","charging","house"];let St=[];function Pu(t,e){const{entries:a,names:o,totals:s}=JSON.parse(e);je.value=new Map(Object.entries(o)),Qt(),St=[],Zt.forEach(h=>{O.setEnergyPv(h,0),O.setEnergyBat(h,0)});const i=Bu(a);mt(i),Xt(s,St),v.debug&&Lu(a,s,i),_.graphMode=="today"&&setTimeout(()=>le.activate(),3e5)}function Bu(t){const e=[];let a={};return t.forEach(o=>{a=Vu(o);const s=a;e.push(s)}),e}function Vu(t){const e={};return e.date=t.timestamp*1e3,e.evuOut=0,e.evuIn=0,Object.entries(t.counter).forEach(([o,s])=>{s.grid&&(e.evuOut+=s.power_exported,e.evuIn+=s.power_imported,St.includes(o)||St.push(o))}),e.evuOut==0&&e.evuIn==0&&Object.entries(t.counter).forEach(o=>{e.evuOut+=o[1].power_exported,e.evuIn+=o[1].power_imported}),Object.entries(t.pv).forEach(([o,s])=>{o!="all"?e[o]=s.power_exported:e.pv=s.power_exported}),Object.entries(t.bat).length>0?(e.batIn=t.bat.all.power_imported,e.batOut=t.bat.all.power_exported,e.batSoc=t.bat.all.soc??0):(e.batIn=0,e.batOut=0,e.batSoc=0),Object.entries(t.cp).forEach(([o,s])=>{o!="all"?(e[o]=s.power_imported,O.keys().includes(o)||O.addItem(o)):e.charging=s.power_imported}),Object.entries(t.ev).forEach(([o,s])=>{o!="all"&&(e["soc"+o.substring(2)]=s.soc)}),e.devices=0,Object.entries(t.sh).forEach(([o,s])=>{o!="all"&&(e[o]=s.power_imported??0,e.devices+=s.power_imported??0,O.keys().includes(o)||(O.addItem(o),O.items[o].showInGraph=ne.get(+o.slice(2)).showInGraph))}),e.selfUsage=Math.max(0,e.pv-e.evuOut),t.hc&&t.hc.all?e.house=t.hc.all.power_imported:e.house=e.evuIn+e.batOut+e.pv-e.evuOut-e.charging-e.devices-e.batOut,e.evuIn+e.batOut+e.pv>0?O.keys().filter(o=>!Cu.includes(o)&&o!="charging").forEach(o=>{Do(o,e)}):Object.keys(e).forEach(o=>{e[o+"Pv"]=0,e[o+"Bat"]=0}),e}function Lu(t,e,a){console.debug("---------------------------------------- Graph Data -"),console.debug(["--- Incoming graph data:",t]),console.debug(["--- Incoming energy data:",e]),console.debug(["--- Data to be displayed:",a]),console.debug("-----------------------------------------------------")}let _t={};const ta=["charging","house","batIn","devices"],Ou=["evuIn","pv","batOut","batIn","evuOut","devices","sh1","sh2","sh3","sh4","sh5","sh6","sh7","sh8","sh9"];let qe=[];function Au(t,e){const{entries:a,names:o,totals:s}=JSON.parse(e);je.value=new Map(Object.entries(o)),Qt(),qe=[],ta.forEach(i=>{O.items[i].energyPv=0,O.items[i].energyBat=0}),a.length>0&&mt(Ra(a)),Xt(s,qe)}function Tu(t,e){const{entries:a,names:o,totals:s}=JSON.parse(e);je.value=new Map(Object.entries(o)),Qt(),qe=[],ta.forEach(i=>{O.items[i].energyPv=0,O.items[i].energyBat=0}),a.length>0&&mt(Ra(a)),Xt(s,qe)}function Ra(t){const e=[];let a={};return _t={},t.forEach(o=>{a=Wu(o),e.push(a),Object.keys(a).forEach(s=>{s!="date"&&(a[s]<0&&(console.warn(`Negative energy value for ${s} in row ${a.date}. Ignoring the value.`),a[s]=0),_t[s]?_t[s]+=a[s]:_t[s]=a[s])})}),e}function Wu(t){const e={},a=uo("%Y%m%d")(t.date);a&&(e.date=_.graphMode=="month"?a.getDate():a.getMonth()+1),e.evuOut=0,e.evuIn=0;let o=0,s=0;return Object.entries(t.counter).forEach(([h,p])=>{o+=p.energy_exported,s+=p.energy_imported,p.grid&&(e.evuOut+=p.energy_exported,e.evuIn+=p.energy_imported,qe.includes(h)||qe.push(h))}),qe.length==0&&(e.evuOut=o,e.evuIn=s),e.pv=t.pv.all.energy_exported,Object.entries(t.bat).length>0?(t.bat.all.energy_imported>=0?e.batIn=t.bat.all.energy_imported:(console.warn("ignoring negative value for batIn on day "+e.date),e.batIn=0),t.bat.all.energy_exported>=0?e.batOut=t.bat.all.energy_exported:(console.warn("ignoring negative value for batOut on day "+e.date),e.batOut=0)):(e.batIn=0,e.batOut=0),Object.entries(t.cp).forEach(([h,p])=>{h!="all"?(O.keys().includes(h)||O.addItem(h,P[+h.slice(2)].color),e[h]=p.energy_imported):e.charging=p.energy_imported}),Object.entries(t.ev).forEach(([h,p])=>{h!="all"&&(e["soc-"+h]=p.soc)}),e.devices=Object.entries(t.sh).reduce((h,p)=>(O.keys().includes(p[0])||O.addItem(p[0]),p[1].energy_imported>=0?h+=p[1].energy_imported:console.warn(`Negative energy value for device ${p[0]} in row ${e.date}. Ignoring this value`),h),0),t.hc&&t.hc.all?e.house=t.hc.all.energy_imported:e.house=e.pv+e.evuIn+e.batOut-e.evuOut-e.batIn-e.charging,e.selfUsage=e.pv-e.evuOut,e.evuIn+e.batOut+e.pv>0?O.keys().filter(h=>!Ou.includes(h)).forEach(h=>{zo(h,e)}):ta.map(h=>{e[h+"Pv"]=0,e[h+"Bat"]=0}),e}function Du(t,e){const a=zu(t);if(a&&!ve.value.has(a)){console.warn("Invalid battery index: ",a);return}t=="openWB/bat/config/configured"?de.isBatteryConfigured=e=="true":t=="openWB/bat/get/power"?+e>0?(j.batIn.power=+e,R.batOut.power=0):(j.batIn.power=0,R.batOut.power=-e):t=="openWB/bat/get/soc"?de.batterySoc=+e:t=="openWB/bat/get/daily_exported"?R.batOut.energy=+e:t=="openWB/bat/get/daily_imported"?j.batIn.energy=+e:a&&ve.value.has(a)&&(t.match(/^openwb\/bat\/[0-9]+\/get\/daily_exported$/i)?ve.value.get(a).dailyYieldExport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/daily_imported$/i)?ve.value.get(a).dailyYieldImport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/exported$/i)?ve.value.get(a).exported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_state$/i)?ve.value.get(a).faultState=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_str$/i)?ve.value.get(a).faultStr=e:t.match(/^openwb\/bat\/[0-9]+\/get\/imported$/i)?ve.value.get(a).imported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/power$/i)?ve.value.get(a).power=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/soc$/i)?ve.value.get(a).soc=+e:console.log(t,e))}function zu(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Gu(t,e){if(t=="openWB/optional/et/provider")JSON.parse(e).type==null?te.active=!1:(te.active=!0,te.etProvider=JSON.parse(e).name);else if(t=="openWB/optional/et/get/prices"){const a=JSON.parse(e);te.etPriceList=new Map,Object.keys(a).forEach(o=>{te.etPriceList.set(new Date(+o*1e3),a[o]*1e5)})}}function Eu(t,e){const a=Ja(t);if(a&&!(a in P)){console.warn("Invalid chargepoint id received: "+a);return}if(t=="openWB/chargepoint/get/power"?j.charging.power=+e:t=="openWB/chargepoint/get/daily_imported"&&(j.charging.energy=+e),t=="openWB/chargepoint/get/daily_exported")de.cpDailyExported=+e;else if(a){if(t.match(/^openwb\/chargepoint\/[0-9]+\/config$/i))if(P[a]){const o=JSON.parse(e);P[a].name=o.name,P[a].icon=o.name,ue["cp"+a]?(ue["cp"+a].name=o.name,ue["cp"+a].icon=o.name):ue["cp"+a]={name:o.name,icon:o.name,color:"var(--color-charging)"}}else console.warn("invalid chargepoint index: "+a);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/state_str$/i))P[a].stateStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_str$/i))P[a].faultStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_state$/i))P[a].faultState=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/power$/i))P[a].power=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/daily_imported$/i))P[a].dailyYield=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/plug_state$/i))P[a].isPluggedIn=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/charge_state$/i))P[a].isCharging=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/manual_lock$/i))P[a].updateIsLocked(e=="true");else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/enabled$/i))P[a].isEnabled=e=="1";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/phases_in_use/i))P[a].phasesInUse=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/current/i))P[a].current=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/currents/i))P[a].currents=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/log/i)){const o=JSON.parse(e);P[a].chargedSincePlugged=o.imported_since_plugged}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/soc$/i)){const o=JSON.parse(e);P[a].soc=o.soc,P[a].waitingForSoc=!1,P[a].rangeCharged=o.range_charged,P[a].rangeUnit=o.range_unit}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/info$/i)){const o=JSON.parse(e);P[a].vehicleName=String(o.name),P[a].updateConnectedVehicle(+o.id)}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/config$/i)){const o=JSON.parse(e);switch(o.chargemode){case"instant_charging":P[a].updateChargeMode(fe.instant_charging);break;case"pv_charging":P[a].updateChargeMode(fe.pv_charging);break;case"scheduled_charging":P[a].updateChargeMode(fe.scheduled_charging);break;case"standby":P[a].updateChargeMode(fe.standby);break;case"stop":P[a].updateChargeMode(fe.stop);break}P[a].chargeTemplate=o.charge_template,P[a].averageConsumption=o.average_consumption}}}function ju(t,e){const a=Ja(t);if(a!=null){if(!(a in q)){const o=new $o(a);a==0&&!v.showStandardVehicle&&(o.visible=!1),q[a]=o,console.info("New vehicle created: "+a)}if(t.match(/^openwb\/vehicle\/[0-9]+\/name$/i))Object.values(P).forEach(o=>{o.connectedVehicle==a&&(o.vehicleName=JSON.parse(e))}),q[a].name=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/soc$/i))q[a].soc=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/range$/i))isNaN(+e)?q[a].range=0:q[a].range=+e;else if(t.match(/^openwb\/vehicle\/[0-9]+\/charge_template$/i))q[a].updateChargeTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/ev_template$/i))q[a].updateEvTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/soc_module\/config$/i)){const o=JSON.parse(e);Object.values(P).forEach(s=>{s.connectedVehicle==a&&(s.isSocConfigured=o.type!==null,s.isSocManual=o.type=="manual")})}}}function Uu(t,e){if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const o=+a[0],s=JSON.parse(e);be[o]=s,Fu(o,s)}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/time_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),o=t.match(/[0-9]+$/i);if(a&&o){const s=+a[0].replace(/[^0-9]+/g,""),i=+o[0],h=JSON.parse(e);s in ct||(ct[s]=[]),ct[s][i]=h}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/chargemode\/scheduled_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),o=t.match(/[0-9]+$/i);if(a&&o){const s=+a[0].replace(/[^0-9]+/g,""),i=+o[0],h=JSON.parse(e);s in lt||(lt[s]=[]),lt[s][i]=h}}else if(t.match(/^openwb\/vehicle\/template\/ev_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const o=+a[0],s=JSON.parse(e);Ht[o]=s}}}function Fu(t,e){Object.values(P).forEach(a=>{a.chargeTemplate==t&&(a.updateCpPriority(e.prio),a.updateInstantChargeLimitMode(e.chargemode.instant_charging.limit.selected),a.updateInstantTargetCurrent(e.chargemode.instant_charging.current),a.updateInstantTargetSoc(e.chargemode.instant_charging.limit.soc),a.updateInstantMaxEnergy(e.chargemode.instant_charging.limit.amount),a.updatePvFeedInLimit(e.chargemode.pv_charging.feed_in_limit),a.updatePvMinCurrent(e.chargemode.pv_charging.min_current),a.updatePvMaxSoc(e.chargemode.pv_charging.max_soc),a.updatePvMinSoc(e.chargemode.pv_charging.min_soc),a.updatePvMinSocCurrent(e.chargemode.pv_charging.min_soc_current))})}function Ja(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Nu(t,e){t.match(/^openWB\/LegacySmarthome\/config\//i)?Hu(t,e):t.match(/^openWB\/LegacySmarthome\/Devices\//i)&&Ru(t,e)}function Hu(t,e){const a=qa(t);if(a==null)return;ne.has(a)||ea(a);const o=ne.get(a);t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_configured$/i)?o.configured=e!="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_name$/i)?(o.name=e.toString(),o.icon=e.toString(),ue["sh"+a].name=e.toString(),ue["sh"+a].icon=e.toString()):t.match(/^openWB\/LegacySmarthome\/config\/set\/Devices\/[0-9]+\/mode$/i)?o.isAutomatic=e=="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_canSwitch$/i)?o.canSwitch=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_homeConsumtion$/i)?o.countAsHouse=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_temperatur_configured$/i)&&(o.tempConfigured=+e)}function Ru(t,e){const a=qa(t);if(a==null){console.warn("Smarthome: Missing index in "+t);return}ne.has(a)||ea(a);const o=ne.get(a);if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Watt$/i))o.power=+e,Ju("power");else if(!t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Wh$/i)){if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/RunningTimeToday$/i))o.runningTime=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor0$/i))o.temp[0]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor1$/i))o.temp[1]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor2$/i))o.temp[2]=+e;else if(t.match(/^openWB\/LegacySmartHome\/Devices\/[0-9]+\/Status$/i))switch(+e){case 10:o.status="off";break;case 11:o.status="on";break;case 20:o.status="detection";break;case 30:o.status="timeout";break;default:o.status="off"}}}function Ju(t){switch(t){case"power":j.devices.power=[...ne.values()].filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.power,0);break;case"energy":j.devices.energy=[...ne.values()].filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.energy,0);break;default:console.error("Unknown category")}}function qa(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}const xt=se([]);class aa{constructor(e,a,o,s){f(this,"name");f(this,"children");f(this,"count");f(this,"lastValue");this.name=e,this.children=a,this.count=o,this.lastValue=s}insert(e,a){if(e.length){const o=e.splice(1);if(e[0]==this.name)if(o.length){let s=!1;if(this.children.forEach(i=>{i.name==o[0]&&(i.insert(o,a),s=!0)}),!s){const i=new aa(o[0],[],0,"");i.insert(o,a),this.children.push(i)}}else this.count=this.count+1,this.lastValue=a}}}function qu(t,e){const a=t.split("/");if(a.length){let o=!1;if(xt.forEach(s=>{s.name==a[0]&&(s.insert(a,e),o=!0)}),!o){const s=new aa(a[0],[],0,"");xt.push(s),s.insert(a,e)}}}const Yu=["openWB/counter/#","openWB/bat/#","openWB/pv/#","openWB/chargepoint/#","openWB/vehicle/#","openWB/general/chargemode_config/pv_charging/#","openWB/optional/et/#","openWB/system/#","openWB/LegacySmartHome/#","openWB/command/"+qt()+"/#"];function Qu(){ko(Zu),Yu.forEach(t=>{Je(t)}),me()}function Zu(t,e){qu(t,e.toString());const a=e.toString();t.match(/^openwb\/counter\/[0-9]+\//i)?Xu(t,a):t.match(/^openwb\/counter\//i)?Ku(t,a):t.match(/^openwb\/bat\//i)?Du(t,a):t.match(/^openwb\/pv\//i)?eh(t,a):t.match(/^openwb\/chargepoint\//i)?Eu(t,a):t.match(/^openwb\/vehicle\/template\//i)?Uu(t,a):t.match(/^openwb\/vehicle\//i)?ju(t,a):t.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)?th(t,a):t.match(/^openwb\/graph\//i)?$u(t,a):t.match(/^openwb\/log\/daily\//i)?Pu(t,a):t.match(/^openwb\/log\/monthly\//i)?Au(t,a):t.match(/^openwb\/log\/yearly\//i)?Tu(t,a):t.match(/^openwb\/optional\/et\//i)?Gu(t,a):t.match(/^openwb\/system\//i)?oh(t,a):t.match(/^openwb\/LegacySmartHome\//i)?Nu(t,a):t.match(/^openwb\/command\//i)&&nh(t,a)}function Xu(t,e){const a=t.split("/"),o=+a[2];if(o==de.evuId?ah(t,e):a[3]=="config",a[3]=="get"&&o in ye)switch(a[4]){case"power":ye[o].power=+e;break;case"config":break;case"fault_str":break;case"fault_state":break;case"power_factors":break;case"imported":break;case"exported":break;case"frequency":break;case"daily_imported":ye[o].energy_imported=+e;break;case"daily_exported":ye[o].energy_exported=+e;break}}function Ku(t,e){if(t.match(/^openwb\/counter\/get\/hierarchy$/i)){const a=JSON.parse(e);if(a.length){Io(),kd();for(const o of a)o.type=="counter"&&(de.evuId=o.id);Ya(a[0])}}else t.match(/^openwb\/counter\/set\/home_consumption$/i)?j.house.power=+e:t.match(/^openwb\/counter\/set\/daily_yield_home_consumption$/i)&&(j.house.energy=+e)}function Ya(t){switch(t.type){case"counter":Xd(t.id,t.type);break;case"cp":Mo(t.id);break;case"bat":Ga(t.id);break}t.children.forEach(e=>Ya(e))}function eh(t,e){const a=rh(t);a&&!ke.value.has(a)&&(console.warn("Creating PV system: "+a),Vo(a)),t=="openWB/pv/get/power"?R.pv.power=-e:t=="openWB/pv/get/daily_exported"?R.pv.energy=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/power$/i)?ke.value.get(a).power=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/daily_exported$/i)?ke.value.get(a).energy=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/monthly_exported$/i)?ke.value.get(a).energy_month=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/yearly_exported$/i)?ke.value.get(a).energy_year=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/exported$/i)&&(ke.value.get(a).energy_total=+e)}function th(t,e){const a=t.split("/");if(a.length>0)switch(a[4]){case"bat_mode":de.updatePvBatteryPriority(JSON.parse(e));break}}function ah(t,e){switch(t.split("/")[4]){case"power":+e>0?(R.evuIn.power=+e,j.evuOut.power=0):(R.evuIn.power=0,j.evuOut.power=-e);break;case"daily_imported":R.evuIn.energy=+e;break;case"daily_exported":j.evuOut.energy=+e;break}}function oh(t,e){if(t.match(/^openWB\/system\/device\/[0-9]+\/component\/[0-9]+\/config$/i)){const a=JSON.parse(e);(a.type=="counter"||a.type=="consumption_counter")&&ye[a.id]?ye[a.id].name=a.name:a.type=="inverter"?(ke.value.has(a.id)||ke.value.set(a.id,new wa(a.id)),ke.value.get(a.id).name=a.name):a.type=="bat"&&(ve.value.has(a.id)||Ga(a.id),ve.value.get(a.id).name=a.name)}}function nh(t,e){const a=t.split("/");if(t.match(/^openWB\/command\/[a-z]+\/error$/i)&&a[2]==qt()){const o=JSON.parse(e);console.error(`Error message from openWB: 
-Command: ${o.command}
-Data: JSON.stringify(err.data)
-Error:
- ${o.error}`)}}function rh(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}const sh={key:0,class:"fas fa-caret-down"},ih={key:1,class:"fas fa-caret-right"},lh={key:0,class:"content p-2 m-2"},ch={key:1,class:"sublist col-md-9 m-0 p-0 ps-2"},dh=B({__name:"MqttNode",props:{node:{},level:{},hide:{type:Boolean},expandAll:{type:Boolean}},setup(t){const e=t;let a=Z(!e.hide),o=Z(!1);const s=g(()=>e.node.name),i=g(()=>[...e.node.children].sort((d,I)=>d.name<I.name?-1:1)),h=g(()=>e.node.count>0?"("+e.node.count+")":""),p=g(()=>e.node.children.length),c=g(()=>e.node.lastValue!=""?{"font-style":"italic","grid-column-start":e.level,"grid-column-end":-1}:{"grid-column-start":e.level,"grid-column-end":-1});function u(){p.value>0&&(a.value=!a.value),e.node.lastValue!=""&&(o.value=!o.value)}return(d,I)=>{const J=ho("MqttNode",!0);return l(),m(G,null,[n("div",{class:"name py-2 px-2 m-0",style:Q(c.value),onClick:u},[(r(a)||e.expandAll)&&p.value>0||r(o)?(l(),m("span",sh)):(l(),m("span",ih)),D(" "+$(s.value)+$(h.value),1)],4),r(o)?(l(),m("div",lh,[n("code",null,$(e.node.lastValue),1)])):w("",!0),(r(a)||e.expandAll)&&p.value>0?(l(),m("div",ch,[(l(!0),m(G,null,X(i.value,(V,T)=>(l(),M(J,{key:T,level:e.level+1,node:V,hide:!0,"expand-all":e.expandAll},null,8,["level","node","expand-all"]))),128))])):w("",!0)],64)}}}),uh=U(dh,[["__scopeId","data-v-df7e578a"]]),oa=t=>(ae("data-v-a349646d"),t=t(),oe(),t),hh={class:"mqviewer"},ph={class:"row pt-2"},gh={class:"col"},mh=oa(()=>n("h3",{class:"mqtitle ps-2"},"MQTT Message Viewer",-1)),vh=oa(()=>n("hr",null,null,-1)),fh=oa(()=>n("hr",null,null,-1)),_h={key:0,class:"topiclist"},bh=B({__name:"MQTTViewer",setup(t){Ve(()=>{});const e=Z(!1);function a(){e.value=!e.value}const o=g(()=>e.value?"active":"");return(s,i)=>(l(),m("div",hh,[n("div",ph,[n("div",gh,[mh,vh,n("button",{class:N(["btn btn-small btn-outline-primary ms-2",o.value]),onClick:a}," Expand All ",2),fh])]),r(xt)[0]?(l(),m("div",_h,[(l(!0),m(G,null,X(r(xt)[0].children.sort((h,p)=>h.name<p.name?-1:1),(h,p)=>(l(),M(uh,{key:p,node:h,level:1,hide:!0,"expand-all":e.value},null,8,["node","expand-all"]))),128))])):w("",!0)]))}}),yh=U(bh,[["__scopeId","data-v-a349646d"]]),wh=["value"],kh=B({__name:"SelectInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,o=e,s=g({get(){return a.modelValue},set(i){o("update:modelValue",i)}});return(i,h)=>gt((l(),m("select",{id:"selectme","onUpdate:modelValue":h[0]||(h[0]=p=>s.value=p),class:"form-select"},[(l(!0),m(G,null,X(i.options,(p,c)=>(l(),m("option",{key:c,value:p[1]},$(p[0]),9,wh))),128))],512)),[[po,s.value]])}}),Sh=U(kh,[["__scopeId","data-v-5e33ce1f"]]),Qa=t=>(ae("data-v-01b18db3"),t=t(),oe(),t),xh=Qa(()=>n("span",{type:"button",class:"float-end mt-0 ms-1","data-bs-toggle":"collapse","data-bs-target":"#themesettings"},[n("span",null,[n("i",{class:"fa-solid fa-circle-check"})])],-1)),$h={class:"subgrid m-0 p-0"},Mh={class:"settingscolumn"},Ih={class:"settingscolumn"},Ch={class:"settingscolumn"},Ph=Qa(()=>n("div",{class:"grid-col-12 mb-3 me-3"},[n("button",{class:"btn btn-sm btn-secondary float-end","data-bs-toggle":"collapse","data-bs-target":"#themesettings"}," Schließen ")],-1)),Bh=B({__name:"ThemeSettings",emits:["reset-arcs"],setup(t,{emit:e}){const a=e,o=[["Dunkel","dark"],["Hell","light"],["Blau","blue"]],s=[["3 kW","0"],["3,1 kW","1"],["3,14 kW","2"],["3,141 kW","3"],["3141 W","4"]],i=[["Orange","normal"],["Grün/Violett","standard"],["Bunt","advanced"]],h=[["Aus","off"],["Menü","navbar"],["Buttonleiste","buttonbar"]],p=[["Aus","no"],['"Alles"-Reiter',"infoview"],["Immer","always"]];return(c,u)=>(l(),M(ze,{"full-width":!0},{title:y(()=>[D(" Look & Feel ")]),buttons:y(()=>[xh]),default:y(()=>[n("div",$h,[n("div",Mh,[b(F,{fullwidth:!0,title:"Farbschema",icon:"fa-adjust",infotext:"Hintergrundfarbe"},{default:y(()=>[b(De,{modelValue:r(v).displayMode,"onUpdate:modelValue":u[0]||(u[0]=d=>r(v).displayMode=d),options:o},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Farbschema Smart-Home-Geräte",icon:"fa-palette",infotext:"Für die Smart-Home-Geräte stehen mehrere Schemata zur Verfügung."},{default:y(()=>[b(De,{modelValue:r(v).smartHomeColors,"onUpdate:modelValue":u[1]||(u[1]=d=>r(v).smartHomeColors=d),options:i},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Grafik: Raster",icon:"fa-th",infotext:"Verwende ein Hintergrundraster in den Grafiken"},{default:y(()=>[b(ie,{modelValue:r(v).showGrid,"onUpdate:modelValue":u[2]||(u[2]=d=>r(v).showGrid=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Variable Bogenlänge",icon:"fa-chart-area",infotext:"Im Graph 'Aktuelle Leistung' können die Bögen immer die volle Länge haben, oder entsprechend des aktuellen Gesamtleistung verkürzt dargestellt werden."},{default:y(()=>[b(ie,{modelValue:r(v).showRelativeArcs,"onUpdate:modelValue":u[3]||(u[3]=d=>r(v).showRelativeArcs=d)},null,8,["modelValue"])]),_:1}),r(v).showRelativeArcs?(l(),M(F,{key:0,fullwidth:!0,title:"Bögen zurücksetzen",icon:"fa-undo",infotext:"Durch Click auf den Button wird die Maximallänge der Bögen auf den aktuellen Wert gesetzt."},{default:y(()=>[r(v).showRelativeArcs?(l(),m("button",{key:0,class:"btn btn-secondary",onClick:u[4]||(u[4]=d=>a("reset-arcs"))}," Reset ")):w("",!0)]),_:1})):w("",!0),b(F,{fullwidth:!0,title:"Anzahl Dezimalstellen",icon:"fa-sliders-h",infotext:"Alle kW- und kWh-Werte werden mit der gewählten Anzahl an Stellen angezeigt."},{default:y(()=>[b(Sh,{modelValue:r(v).decimalPlaces,"onUpdate:modelValue":u[5]||(u[5]=d=>r(v).decimalPlaces=d),options:s},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Uhrzeit anzeigen",icon:"fa-clock",infotext:"Zeige die aktuelle Uhrzeit an. In der Menüleiste oder neben den Lade-Buttons."},{default:y(()=>[b(De,{modelValue:r(v).showClock,"onUpdate:modelValue":u[6]||(u[6]=d=>r(v).showClock=d),options:h},null,8,["modelValue"])]),_:1})]),n("div",Ih,[b(F,{fullwidth:!0,title:"Kompakte Ladepunktliste",icon:"fa-list",infotext:"Zeige eine einzelne Ladepunktliste statt separater Element pro Ladepunkt."},{default:y(()=>[b(De,{modelValue:r(v).shortCpList,"onUpdate:modelValue":u[7]||(u[7]=d=>r(v).shortCpList=d),options:p},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Buttonleiste für Ladepunkte",icon:"fa-window-maximize",infotext:"Informationen zu Ladepunkten über den Diagrammen anzeigen."},{default:y(()=>[b(ie,{modelValue:r(v).showButtonBar,"onUpdate:modelValue":u[8]||(u[8]=d=>r(v).showButtonBar=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Filter-Buttons",icon:"fa-filter",infotext:"Hauptseite mit Buttons zur Auswahl der Kategorie."},{default:y(()=>[b(ie,{modelValue:r(v).showQuickAccess,"onUpdate:modelValue":u[9]||(u[9]=d=>r(v).showQuickAccess=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Breite Widgets",icon:"fa-desktop",infotext:"Widgets immer breit machen"},{default:y(()=>[b(ie,{modelValue:r(v).preferWideBoxes,"onUpdate:modelValue":u[10]||(u[10]=d=>r(v).preferWideBoxes=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Stufenlose Displaybreite",icon:"fa-maximize",infotext:"Die Breite des Displays wird immer voll ausgenutzt. Dies kann in einigen Fällen zu inkorrekter Darstellung führen."},{default:y(()=>[b(ie,{modelValue:r(v).fluidDisplay,"onUpdate:modelValue":u[11]||(u[11]=d=>r(v).fluidDisplay=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Animationen",icon:"fa-film",infotext:"Animationen anzeigen"},{default:y(()=>[b(ie,{modelValue:r(v).showAnimations,"onUpdate:modelValue":u[12]||(u[12]=d=>r(v).showAnimations=d)},null,8,["modelValue"])]),_:1})]),n("div",Ch,[b(F,{fullwidth:!0,title:"Zähler anzeigen",icon:"fa-chart-bar",infotext:"Zeige die Werte zusätzlich angelegter Zähler"},{default:y(()=>[b(ie,{modelValue:r(v).showCounters,"onUpdate:modelValue":u[13]||(u[13]=d=>r(v).showCounters=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Fahrzeuge anzeigen",icon:"fa-car",infotext:"Zeige alle Fahrzeuge mit Ladestand und Reichweite"},{default:y(()=>[b(ie,{modelValue:r(v).showVehicles,"onUpdate:modelValue":u[14]||(u[14]=d=>r(v).showVehicles=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Standardfahrzeug anzeigen",icon:"fa-car",infotext:"Zeige das Standard-Fahrzeug in der Fahzeugliste"},{default:y(()=>[b(ie,{modelValue:r(v).showStandardVehicle,"onUpdate:modelValue":u[15]||(u[15]=d=>r(v).showStandardVehicle=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Preistabelle anzeigen",icon:"fa-car",infotext:"Zeige die Strompreistabelle in einer separaten Box an"},{default:y(()=>[b(ie,{modelValue:r(v).showPrices,"onUpdate:modelValue":u[16]||(u[16]=d=>r(v).showPrices=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Wechselrichter-Details anzeigen",icon:"fa-solar-panel",infotext:"Zeige Details zu den einzelnen Wechselrichtern"},{default:y(()=>[b(ie,{modelValue:r(v).showInverters,"onUpdate:modelValue":u[17]||(u[17]=d=>r(v).showInverters=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Debug-Modus",icon:"fa-bug-slash",infotext:"Kontrollausgaben in der Console sowie Anzeige von Bildschirmbreite und MQ-Viewer"},{default:y(()=>[b(ie,{modelValue:r(v).debug,"onUpdate:modelValue":u[18]||(u[18]=d=>r(v).debug=d)},null,8,["modelValue"])]),_:1})]),Ph])]),_:1}))}}),Vh=U(Bh,[["__scopeId","data-v-01b18db3"]]),Se=t=>(ae("data-v-733ad1cd"),t=t(),oe(),t),Lh={class:"container-fluid px-2 m-0 theme-colors"},Oh={id:"themesettings",class:"collapse"},Ah={key:2,class:"row py-0 px-0 m-0"},Th={key:3,class:"row py-0 m-0 d-flex justify-content-center"},Wh={key:4,class:"nav nav-tabs nav-justified mx-1 mt-2",role:"tablist"},Dh=go('<a class="nav-link active" data-bs-toggle="tab" data-bs-target="#showAll" data-v-733ad1cd><i class="fa-solid fa-lg fa-circle-info me-1" data-v-733ad1cd></i><span class="d-none d-md-inline ms-2" data-v-733ad1cd>Alles</span></a><a class="nav-link" data-bs-toggle="tab" data-bs-target="#chargepointlist" data-v-733ad1cd><i class="fa-solid fa-lg fa-charging-station" data-v-733ad1cd></i><span class="d-none d-md-inline ms-2" data-v-733ad1cd>Ladepunkte</span></a>',2),zh={key:0,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pricecharttabbed"},Gh=Se(()=>n("i",{class:"fa-solid fa-lg fa-coins"},null,-1)),Eh=Se(()=>n("span",{class:"d-none d-md-inline ms-2"},"Strompreis",-1)),jh=[Gh,Eh],Uh={key:1,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#vehiclelist"},Fh=Se(()=>n("i",{class:"fa-solid fa-lg fa-car"},null,-1)),Nh=Se(()=>n("span",{class:"d-none d-md-inline ms-2"},"Fahrzeuge",-1)),Hh=[Fh,Nh],Rh={key:2,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#batterylist"},Jh=Se(()=>n("i",{class:"fa-solid fa-lg fa-car-battery"},null,-1)),qh=Se(()=>n("span",{class:"d-none d-md-inline ms-2"},"Speicher",-1)),Yh=[Jh,qh],Qh={key:3,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#smarthomelist"},Zh=Se(()=>n("i",{class:"fa-solid fa-lg fa-plug"},null,-1)),Xh=Se(()=>n("span",{class:"d-none d-md-inline ms-2"},"Smart Home",-1)),Kh=[Zh,Xh],ep={key:4,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#counterlist"},tp=Se(()=>n("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),ap=Se(()=>n("span",{class:"d-none d-md-inline ms-2"},"Zähler",-1)),op=[tp,ap],np={key:5,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#inverterlist"},rp=Se(()=>n("i",{class:"fa-solid fa-lg fa-solar-panel"},null,-1)),sp=Se(()=>n("span",{class:"d-none d-md-inline ms-2"},"Wechselrichter",-1)),ip=[rp,sp],lp={key:5,id:"cpContent",class:"tab-content mx-0 pt-1"},cp={id:"showAll",class:"tab-pane active",role:"tabpanel","aria-labelledby":"showall-tab"},dp={class:"row py-0 m-0 d-flex justify-content-center"},up={id:"chargepointlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"chargepoint-tab"},hp={class:"row py-0 m-0 d-flex justify-content-center"},pp={id:"vehiclelist",class:"tab-pane",role:"tabpanel","aria-labelledby":"vehicle-tab"},gp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},mp={id:"batterylist",class:"tab-pane",role:"tabpanel","aria-labelledby":"battery-tab"},vp={class:"row py-0 m-0 d-flex justify-content-center"},fp={id:"smarthomelist",class:"tab-pane",role:"tabpanel","aria-labelledby":"smarthome-tab"},_p={key:0,class:"row py-0 m-0 d-flex justify-content-center"},bp={id:"counterlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"counter-tab"},yp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},wp={id:"inverterlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"inverter-tab"},kp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},Sp={id:"pricecharttabbed",class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},xp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},$p={key:0,class:"row p-2 mt-5"},Mp={class:"col p-2"},Ip=Se(()=>n("hr",null,null,-1)),Cp={class:"d-flex justify-content-between"},Pp={class:"mx-4"},Bp={key:0},Vp=B({__name:"ColorsTheme",setup(t){const e=Z(!1),a=g(()=>[...ne.values()].filter(h=>h.configured).length>0);function o(){Ia()}function s(){e.value=!e.value}Ve(()=>{o(),window.addEventListener("resize",Fo),window.addEventListener("focus",i),Qu()});function i(){document.hasFocus()&&me(!0)}return(h,p)=>(l(),m(G,null,[n("div",Lh,[n("div",Oh,[b(Vh,{onResetArcs:r(Ho)},null,8,["onResetArcs"])]),r(v).showButtonBar?(l(),M(bd,{key:0})):w("",!0),w("",!0),(l(),m("div",Ah,[b(xu,null,{item1:y(()=>[b(Mn)]),item2:y(()=>[b(Nr)]),item3:y(()=>[b(gs)]),_:1})])),r(v).showQuickAccess?w("",!0):(l(),m("div",Th,[b(Lt,{shortlist:r(v).shortCpList=="always"},null,8,["shortlist"]),r(v).showPrices?(l(),M(Et,{key:0,id:"NoTabs"})):w("",!0),r(v).showVehicles?(l(),M(Wt,{key:1})):w("",!0),b(Ot),a.value?(l(),M(At,{key:2})):w("",!0),r(v).showCounters?(l(),M(Tt,{key:3})):w("",!0),r(v).showInverters?(l(),M(jt,{key:4})):w("",!0)])),r(v).showQuickAccess?(l(),m("nav",Wh,[Dh,r(v).showPrices?(l(),m("a",zh,jh)):w("",!0),r(v).showVehicles?(l(),m("a",Uh,Hh)):w("",!0),r(de).isBatteryConfigured?(l(),m("a",Rh,Yh)):w("",!0),a.value?(l(),m("a",Qh,Kh)):w("",!0),r(v).showCounters?(l(),m("a",ep,op)):w("",!0),r(v).showInverters?(l(),m("a",np,ip)):w("",!0)])):w("",!0),r(v).showQuickAccess?(l(),m("div",lp,[n("div",cp,[n("div",dp,[b(Lt,{shortlist:r(v).shortCpList!="no"},null,8,["shortlist"]),r(v).showPrices?(l(),M(Et,{key:0,id:"Overview"})):w("",!0),r(v).showVehicles?(l(),M(Wt,{key:1})):w("",!0),b(Ot),a.value?(l(),M(At,{key:2})):w("",!0),r(v).showCounters?(l(),M(Tt,{key:3})):w("",!0),r(v).showInverters?(l(),M(jt,{key:4})):w("",!0)])]),n("div",up,[n("div",hp,[b(Lt,{shortlist:r(v).shortCpList=="always"},null,8,["shortlist"])])]),n("div",pp,[r(v).showVehicles?(l(),m("div",gp,[b(Wt)])):w("",!0)]),n("div",mp,[n("div",vp,[b(Ot)])]),n("div",fp,[a.value?(l(),m("div",_p,[b(At)])):w("",!0)]),n("div",bp,[r(v).showCounters?(l(),m("div",yp,[b(Tt)])):w("",!0)]),n("div",wp,[r(v).showInverters?(l(),m("div",kp,[b(jt)])):w("",!0)]),n("div",Sp,[r(v).showPrices?(l(),m("div",xp,[b(Et,{id:"Tabbed"})])):w("",!0)])])):w("",!0)]),r(v).debug?(l(),m("div",$p,[n("div",Mp,[Ip,n("div",Cp,[n("p",Pp,"Screen Width: "+$(r(kt).x),1),n("button",{class:"btn btn-sm btn-secondary mx-4",onClick:s}," MQ Viewer ")]),e.value?(l(),m("hr",Bp)):w("",!0),e.value?(l(),M(yh,{key:1})):w("",!0)])])):w("",!0)],64))}}),Lp=U(Vp,[["__scopeId","data-v-733ad1cd"]]),Ct=t=>(ae("data-v-ed619966"),t=t(),oe(),t),Op={class:"navbar navbar-expand-lg px-0 mb-0"},Ap=Ct(()=>n("a",{href:"/",class:"navbar-brand"},[n("span",null,"openWB")],-1)),Tp={key:0,class:"position-absolute-50 navbar-text ms-4 navbar-time",style:{color:"var(--color-menu)"}},Wp=Ct(()=>n("button",{class:"navbar-toggler togglebutton ps-5",type:"button","data-bs-toggle":"collapse","data-bs-target":"#mainNavbar","aria-controls":"mainNavbar","aria-expanded":"false","aria-label":"Toggle navigation"},[n("span",{class:"fa-solid fa-ellipsis-vertical"})],-1)),Dp=Ct(()=>n("div",{id:"mainNavbar",class:"collapse navbar-collapse justify-content-end"},[n("div",{class:"nav navbar-nav"},[n("a",{id:"navStatus",class:"nav-link",href:"../../settings/#/Status"},"Status"),n("div",{class:"nav-item dropdown"},[n("a",{id:"loggingDropdown",class:"nav-link",href:"#",role:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[D("Auswertungen "),n("i",{class:"fa-solid fa-caret-down"})]),n("div",{class:"dropdown-menu","aria-labelledby":"loggingDropdown"},[n("a",{href:"../../settings/#/Logging/ChargeLog",class:"dropdown-item"},"Ladeprotokoll"),n("a",{href:"../../settings/#/Logging/Chart",class:"dropdown-item"},"Diagramme")])]),n("div",{class:"nav-item dropdown"},[n("a",{id:"settingsDropdown",class:"nav-link",href:"#",role:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[D("Einstellungen "),n("span",{class:"fa-solid fa-caret-down"})]),n("div",{class:"dropdown-menu","aria-labelledby":"settingsDropdown"},[n("a",{id:"navSettings",class:"nav-link",href:"../../settings/index.html"},"openWB"),n("a",{class:"nav-link","data-bs-toggle":"collapse","data-bs-target":"#themesettings","aria-expanded":"false","aria-controls":"themeSettings"},[n("span",null,[D("Look&Feel"),n("span",{class:"fa-solid fa-caret-down"})])])])])])],-1)),zp=Ct(()=>n("hr",{class:"m-0 p-0 mb-2"},null,-1)),Gp=[zp],Ep=B({__name:"NavigationBar",setup(t){let e;const a=g(()=>v.fluidDisplay?"container-fluid":"container-lg");return Ve(()=>{e=setInterval(()=>{Rt.value=new Date},1e3)}),mo(()=>{clearInterval(e)}),(o,s)=>(l(),m(G,null,[n("nav",Op,[n("div",{class:N(a.value)},[Ap,r(v).showClock=="navbar"?(l(),m("span",Tp,$(r(Ca)(r(Rt))),1)):w("",!0),Wp,Dp],2)]),n("div",{class:N(a.value)},Gp,2)],64))}}),jp=U(Ep,[["__scopeId","data-v-ed619966"]]),Up={id:"app",class:"m-0 p-0"},Fp={class:"row p-0 m-0"},Np={class:"col-12 p-0 m-0"},Hp=B({__name:"App",setup(t){const e=g(()=>v.fluidDisplay?"container-fluid":"container-lg");return(a,o)=>(l(),m("div",Up,[b(jp),n("div",{class:N(["p-0",e.value])},[n("div",Fp,[n("div",Np,[b(Lp)])])],2)]))}}),Rp=vo(Hp);fo();Rp.mount("#app");
diff --git a/packages/modules/web_themes/colors/web/assets/index-BXxsmrtl.js b/packages/modules/web_themes/colors/web/assets/index-BXxsmrtl.js
new file mode 100644
index 0000000000..b2cbf46cb3
--- /dev/null
+++ b/packages/modules/web_themes/colors/web/assets/index-BXxsmrtl.js
@@ -0,0 +1,6 @@
+var Za=Object.defineProperty;var Xa=(t,e,a)=>e in t?Za(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var _=(t,e,a)=>Xa(t,typeof e!="symbol"?e+"":e,a);import{r as se,m as Ka,a as X,c as p,i as eo,e as Be,u as Ut,t as Qe,b as Ft,s as de,d as O,p as ma,f as va,w as to,o as l,g as m,h as x,j as o,n as N,k as $,l as w,q as he,v as y,x as z,y as i,z as b,F as G,A as K,B as fa,C as Ze,D as pt,E as et,G as tt,H as st,I as it,J as ot,K as ao,L as bt,M as Z,N as oo,O as Ve,P as oe,Q as re,R as gt,S as ro,T as no,U as so,V as io,W as _a,X as lo,Y as co,Z as uo,_ as ho,$ as po,a0 as go,a1 as mo,a2 as vo,a3 as fo}from"./vendor-Cj6hjtXS.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))r(n);new MutationObserver(n=>{for(const s of n)if(s.type==="childList")for(const h of s.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&r(h)}).observe(document,{childList:!0,subtree:!0});function a(n){const s={};return n.integrity&&(s.integrity=n.integrity),n.referrerPolicy&&(s.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?s.credentials="include":n.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(n){if(n.ep)return;n.ep=!0;const s=a(n);fetch(n.href,s)}})();var fe=(t=>(t.instant_charging="instant_charging",t.pv_charging="pv_charging",t.scheduled_charging="scheduled_charging",t.standby="standby",t.stop="stop",t))(fe||{});class ba{constructor(e){_(this,"id");_(this,"name","Wechselrichter");_(this,"color","var(--color-pv)");_(this,"power",0);_(this,"energy",0);_(this,"energy_month",0);_(this,"energy_year",0);_(this,"energy_total",0);this.id=e}}const _o=[["EV","ev_mode"],["Speicher","bat_mode"],["MinSoc","min_soc_bat_mode"]];class bo{constructor(e){_(this,"id");_(this,"name","Gerät");_(this,"power",0);_(this,"status","off");_(this,"energy",0);_(this,"runningTime",0);_(this,"configured",!1);_(this,"_showInGraph",!0);_(this,"color","white");_(this,"canSwitch",!1);_(this,"countAsHouse",!1);_(this,"energyPv",0);_(this,"energyBat",0);_(this,"pvPercentage",0);_(this,"tempConfigured",0);_(this,"temp",[300,300,300]);_(this,"on",!1);_(this,"isAutomatic",!0);_(this,"icon","");this.id=e}get showInGraph(){return this._showInGraph}set showInGraph(e){this._showInGraph=e,A.items["sh"+this.id].showInGraph=e,ne()}setShowInGraph(e){this._showInGraph=e}}const ae=se(new Map);function qt(t){ae.has(t)?console.info("Duplicate sh device message: "+t):(ae.set(t,new bo(t)),ae.get(t).color="var(--color-sh"+ae.size+")")}const yo=0,ya={host:location.hostname,port:location.protocol=="https:"?443:80,endpoint:"/ws",protocol:location.protocol=="https:"?"wss":"ws",connectTimeout:4e3,reconnectPeriod:4e3,clean:!1,clientId:Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,6)},yt={topic:"",qos:yo};let Ce;const{host:wo,port:ko,endpoint:So,...wa}=ya,ra=`${wa.protocol}://${wo}:${ko}${So}`;try{console.debug("connectURL",ra),Ce=Ka.connect(ra,wa),Ce.on("connect",()=>{console.info("MQTT connection successful")}),Ce.on("disconnect",()=>{console.info("MQTT disconnected")}),Ce.on("error",t=>{console.error("MQTT connection failed: ",t)})}catch(t){console.error("MQTT connect error: ",t)}function xo(t){Ce?Ce.on("message",t):console.error("MqttRegister: MQTT client not available")}function qe(t){yt.topic=t;const{topic:e,qos:a}=yt;Ce.subscribe(e,{qos:a},r=>{if(r){console.error("MQTT Subscription error: "+r);return}})}function at(t){yt.topic=t;const{topic:e}=yt;Ce.unsubscribe(e,a=>{if(a){console.error("MQTT Unsubscribe from "+t+" failed: "+a);return}})}async function Nt(t,e){let r=Ce.connected,n=0;for(;!r&&n<20;)console.warn("MQTT publish: Not connected. Waiting 0.1 seconds"),await $o(100),r=Ce.connected,n+=1;if(n<20)try{Ce.publish(t,e,{qos:0},s=>{s&&console.warn("MQTT publish error: ",s),console.info("MQTT publish: Message sent: ["+t+"]("+e+")")})}catch(s){console.warn("MQTT publish: caught error: "+s)}else console.error("MQTT publish: Lost connection to MQTT server. Please reload the page")}function Yt(){return ya.clientId}function $o(t){return new Promise(e=>setTimeout(e,t))}class Mo{constructor(e){_(this,"id");_(this,"name","Ladepunkt");_(this,"icon","Ladepunkt");_(this,"type","");_(this,"ev",0);_(this,"template",0);_(this,"connectedPhases",0);_(this,"phase_1",0);_(this,"autoPhaseSwitchHw",!1);_(this,"controlPilotInterruptionHw",!1);_(this,"isEnabled",!0);_(this,"isPluggedIn",!1);_(this,"isCharging",!1);_(this,"_isLocked",!1);_(this,"_connectedVehicle",0);_(this,"chargeTemplate",0);_(this,"evTemplate",0);_(this,"_chargeMode",fe.pv_charging);_(this,"_hasPriority",!1);_(this,"currentPlan","");_(this,"averageConsumption",0);_(this,"vehicleName","");_(this,"rangeCharged",0);_(this,"rangeUnit","");_(this,"counter",0);_(this,"dailyYield",0);_(this,"energyPv",0);_(this,"energyBat",0);_(this,"pvPercentage",0);_(this,"faultState",0);_(this,"faultStr","");_(this,"phasesInUse",0);_(this,"power",0);_(this,"chargedSincePlugged",0);_(this,"stateStr","");_(this,"current",0);_(this,"currents",[0,0,0]);_(this,"phasesToUse",0);_(this,"isSocConfigured",!0);_(this,"isSocManual",!1);_(this,"waitingForSoc",!1);_(this,"color","white");_(this,"_timedCharging",!1);_(this,"_instantChargeLimitMode","");_(this,"_instantTargetCurrent",0);_(this,"_instantTargetSoc",0);_(this,"_instantMaxEnergy",0);_(this,"_pvFeedInLimit",!1);_(this,"_pvMinCurrent",0);_(this,"_pvMaxSoc",0);_(this,"_pvMinSoc",0);_(this,"_pvMinSocCurrent",0);_(this,"_etActive",!1);_(this,"_etMaxPrice",20);this.id=e}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e,ee("cpLock",e,this.id)}updateIsLocked(e){this._isLocked=e}get connectedVehicle(){return this._connectedVehicle}set connectedVehicle(e){this._connectedVehicle=e,ee("cpVehicle",e,this.id)}updateConnectedVehicle(e){this._connectedVehicle=e}get soc(){return Y[this.connectedVehicle]?Y[this.connectedVehicle].soc:0}set soc(e){Y[this.connectedVehicle]&&(Y[this.connectedVehicle].soc=e)}get chargeMode(){return this._chargeMode}set chargeMode(e){this._chargeMode=e,ee("chargeMode",e,this.id)}updateChargeMode(e){this._chargeMode=e}get hasPriority(){return this._hasPriority}set hasPriority(e){this._hasPriority=e,ee("cpPriority",e,this.id)}updateCpPriority(e){this._hasPriority=e}get timedCharging(){return ye[this.chargeTemplate]?ye[this.chargeTemplate].time_charging.active:!1}set timedCharging(e){ye[this.chargeTemplate].time_charging.active=e,ee("cpTimedCharging",e,this.chargeTemplate)}get instantTargetCurrent(){return this._instantTargetCurrent}set instantTargetCurrent(e){this._instantTargetCurrent=e,ee("cpInstantTargetCurrent",e,this.id)}updateInstantTargetCurrent(e){this._instantTargetCurrent=e}get instantChargeLimitMode(){return this._instantChargeLimitMode}set instantChargeLimitMode(e){this._instantChargeLimitMode=e,ee("cpInstantChargeLimitMode",e,this.id)}updateInstantChargeLimitMode(e){this._instantChargeLimitMode=e}get instantTargetSoc(){return this._instantTargetSoc}set instantTargetSoc(e){this._instantTargetSoc=e,ee("cpInstantTargetSoc",e,this.id)}updateInstantTargetSoc(e){this._instantTargetSoc=e}get instantMaxEnergy(){return this._instantMaxEnergy}set instantMaxEnergy(e){this._instantMaxEnergy=e,ee("cpInstantMaxEnergy",e,this.id)}updateInstantMaxEnergy(e){this._instantMaxEnergy=e}get pvFeedInLimit(){return this._pvFeedInLimit}set pvFeedInLimit(e){this._pvFeedInLimit=e,ee("cpPvFeedInLimit",e,this.id)}updatePvFeedInLimit(e){this._pvFeedInLimit=e}get pvMinCurrent(){return this._pvMinCurrent}set pvMinCurrent(e){this._pvMinCurrent=e,ee("cpPvMinCurrent",e,this.id)}updatePvMinCurrent(e){this._pvMinCurrent=e}get pvMaxSoc(){return this._pvMaxSoc}set pvMaxSoc(e){this._pvMaxSoc=e,ee("cpPvMaxSoc",e,this.id)}updatePvMaxSoc(e){this._pvMaxSoc=e}get pvMinSoc(){return this._pvMinSoc}set pvMinSoc(e){this._pvMinSoc=e,ee("cpPvMinSoc",e,this.id)}updatePvMinSoc(e){this._pvMinSoc=e}get pvMinSocCurrent(){return this._pvMinSocCurrent}set pvMinSocCurrent(e){this._pvMinSocCurrent=e,ee("cpPvMinSocCurrent",e,this.id)}updatePvMinSocCurrent(e){this._pvMinSocCurrent=e}get realCurrent(){switch(this.phasesInUse){case 0:return 0;case 1:return this.currents[0];case 2:return(this.currents[0]+this.currents[1])/2;case 3:return(this.currents[0]+this.currents[1]+this.currents[2])/3;default:return 0}}get etActive(){return Y[this.connectedVehicle]?Y[this.connectedVehicle].etActive:!1}set etActive(e){Y[this.connectedVehicle]&&(Y[this.connectedVehicle].etActive=e)}get etMaxPrice(){return Y[this.connectedVehicle].etMaxPrice??0}set etMaxPrice(e){ee("cpEtMaxPrice",Math.round(e*10)/1e6,this.id)}toPowerItem(){return{name:this.name,power:this.power,energy:this.dailyYield,energyPv:this.energyPv,energyBat:this.energyBat,pvPercentage:this.pvPercentage,color:this.color,icon:this.icon,showInGraph:!0}}}class Io{constructor(e){_(this,"id");_(this,"name","__invalid");_(this,"tags",[]);_(this,"config",{});_(this,"soc",0);_(this,"range",0);_(this,"_chargeTemplateId",0);_(this,"_evTemplateId",0);this.id=e}get chargeTemplateId(){return this._chargeTemplateId}set chargeTemplateId(e){this._chargeTemplateId=e,ee("vhChargeTemplateId",e,this.id)}updateChargeTemplateId(e){this._chargeTemplateId=e}get evTemplateId(){return this._evTemplateId}set evTemplateId(e){this._evTemplateId=e,ee("vhEvTemplateId",e,this.id)}updateEvTemplateId(e){this._evTemplateId=e}get etActive(){return ye[this.chargeTemplateId]?ye[this.chargeTemplateId].et.active:!1}set etActive(e){ye[this.chargeTemplateId]&&ee("priceCharging",e,this.chargeTemplateId)}get etMaxPrice(){if(ye[this.chargeTemplateId]&&ye[this.chargeTemplateId].et.active)return ye[this.chargeTemplateId].et.max_price*1e5}get chargepoint(){for(const e of Object.values(V))if(e.connectedVehicle==this.id)return e}get visible(){return this.name!="__invalid"&&(this.id!=0||v.showStandardVehicle)}}const V=se({}),Y=se({}),ye=se({}),lt=se({}),ct=se({}),Ht=se({});function Co(t){if(!(t in V)){V[t]=new Mo(t);const e="var(--color-cp"+(Object.values(V).length-1)+")";V[t].color=e,ce["cp"+t].color=e}}function Po(){Object.keys(V).forEach(t=>{delete V[parseInt(t)]})}const Bo={cpLock:"openWB/set/chargepoint/%/set/manual_lock",chargeMode:"openWB/set/vehicle/template/charge_template/%/chargemode/selected",cpPriority:"openWB/set/vehicle/template/charge_template/%/prio",cpTimedCharging:"openWB/set/vehicle/template/charge_template/%/time_charging/active",pvBatteryPriority:"openWB/set/general/chargemode_config/pv_charging/bat_mode",cpVehicle:"openWB/set/chargepoint/%/config/ev",cpInstantChargeLimitMode:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/selected",cpInstantTargetCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/current",cpInstantTargetSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/soc",cpInstantMaxEnergy:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/amount",cpPvFeedInLimit:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/feed_in_limit",cpPvMinCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_current",cpPvMaxSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/max_soc",cpPvMinSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc",cpPvMinSocCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc_current",cpEtMaxPrice:"openWB/set/vehicle/template/charge_template/%/et/max_price",vhChargeTemplateId:"openWB/set/vehicle/%/charge_template",vhEvTemplateId:"openWB/set/vehicle/%/ev_template",shSetManual:"openWB/set/LegacySmartHome/config/set/Devices/%/mode",shSwitchOn:"openWB/set/LegacySmartHome/config/set/Devices/%/device_manual_control",socUpdate:"openWB/set/vehicle/%/get/force_soc_update",setSoc:"openWB/set/vehicle/%/soc_module/calculated_soc_state/manual_soc",priceCharging:"openWB/set/vehicle/template/charge_template/%/et/active"};function ee(t,e,a=0){if(isNaN(a)){console.warn("Invalid index");return}let r=Bo[t];if(!r){console.warn("No topic for update type "+t);return}switch(t){case"chargeMode":case"cpPriority":case"cpScheduledCharging":case"cpInstantTargetCurrent":case"cpInstantChargeLimitMode":case"cpInstantTargetSoc":case"cpInstantMaxEnergy":case"cpPvFeedInLimit":case"cpPvMinCurrent":case"cpPvMaxSoc":case"cpPvMinSoc":case"cpEtMaxPrice":case"cpPvMinSocCurrent":r=r.replace("%",V[a].chargeTemplate.toString());break;default:r=r.replace("%",String(a))}switch(typeof e){case"number":Nt(r,JSON.stringify(+e));break;default:Nt(r,JSON.stringify(e))}}function Qt(t){Nt("openWB/set/command/"+Yt()+"/todo",JSON.stringify(t))}const be=500,xe=500,W={top:15,right:20,bottom:10,left:25},Zt=["charging","house","batIn","devices"];class Vo{constructor(){_(this,"data",[]);_(this,"_graphMode","");_(this,"waitForData",!0)}get graphMode(){return this._graphMode}set graphMode(e){this._graphMode=e}}const f=se(new Vo),ka=X(eo),He=p(()=>[0,be-W.left-2*W.right].map(t=>ka.value.applyX(t)));let ut=!0,rt=!0;function na(){ut=!1}function Lo(){ut=!0}function sa(){rt=!1}function Oo(){rt=!0}function Ao(t){rt=t}function mt(t){f.data=t,f.waitForData=!1}const pe=se({refreshTopicPrefix:"openWB/graph/alllivevaluesJson",updateTopic:"openWB/graph/lastlivevaluesJson",configTopic:"openWB/graph/config/#",initialized:!1,initCounter:0,graphRefreshCounter:0,rawDataPacks:[],duration:0,activate(t){this.unsubscribeUpdates(),this.subscribeRefresh(),t&&(f.data=[]),f.waitForData=!0,qe(this.configTopic),this.initialized=!1,this.initCounter=0,this.graphRefreshCounter=0,this.rawDataPacks=[],Go(),kt.value=!0},deactivate(){this.unsubscribeRefresh(),this.unsubscribeUpdates(),at(this.configTopic)},subscribeRefresh(){for(let t=1;t<17;t++)qe(this.refreshTopicPrefix+t)},unsubscribeRefresh(){for(let t=1;t<17;t++)at(this.refreshTopicPrefix+t)},subscribeUpdates(){qe(this.updateTopic)},unsubscribeUpdates(){at(this.updateTopic)}}),le=se({topic:"openWB/log/daily/#",date:new Date,activate(t){if(f.graphMode=="day"||f.graphMode=="today"){f.graphMode=="today"&&(this.date=new Date);const e=this.date.getFullYear().toString()+(this.date.getMonth()+1).toString().padStart(2,"0")+this.date.getDate().toString().padStart(2,"0");this.topic="openWB/log/daily/"+e,qe(this.topic),t&&(f.data=[]),f.waitForData=!0,Qt({command:"getDailyLog",data:{day:e}})}},deactivate(){at(this.topic)},back(){this.date=new Date(this.date.setTime(this.date.getTime()-864e5))},forward(){this.date=new Date(this.date.setTime(this.date.getTime()+864e5))},setDate(t){this.date=t},getDate(){return this.date}}),Ae=se({topic:"openWB/log/monthly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(t){const e=this.year.toString()+this.month.toString().padStart(2,"0");f.data=[],qe(this.topic),t&&(f.data=[]),f.waitForData=!0,Qt({command:"getMonthlyLog",data:{month:e}})},deactivate(){at(this.topic)},back(){this.month-=1,this.month<1&&(this.month=12,this.year-=1),this.activate()},forward(){const t=new Date;t.getFullYear()==this.year?this.month-1<t.getMonth()&&(this.month=this.month+1):(this.month=this.month+1,this.month>12&&(this.month=1,this.year+=1)),this.activate()},getDate(){return new Date(this.year,this.month)}}),Fe=se({topic:"openWB/log/yearly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(t){const e=this.year.toString();qe(this.topic),t&&(f.data=[]),f.waitForData=!0,Qt({command:"getYearlyLog",data:{year:e}})},deactivate(){at(this.topic)},back(){this.year-=1,this.activate()},forward(){this.year<new Date().getFullYear()&&(this.year=this.year+1,this.activate())},getDate(){return new Date(this.year,this.month)}});function me(t=!1){switch(f.graphMode==""?To(v.graphPreference):f.graphMode=="live"?v.graphPreference="live":v.graphPreference="today",t||(ut=!0,rt=!0),f.graphMode){case"live":le.deactivate(),Ae.deactivate(),Fe.deactivate(),pe.activate(!t);break;case"today":pe.deactivate(),Ae.deactivate(),Fe.deactivate(),le.activate(!t);break;case"day":pe.deactivate(),Ae.deactivate(),Fe.deactivate(),le.activate(!t);break;case"month":pe.deactivate(),le.deactivate(),Fe.deactivate(),Ae.activate(!t);break;case"year":pe.deactivate(),le.deactivate(),Ae.deactivate(),Fe.activate(!t);break}}function To(t){f.graphMode=t}function Do(t,e){e[t]>0&&(A.items[t].energyPv+=1e3/12*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),A.items[t].energyBat+=1e3/12*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}function Wo(t,e){e[t]>0&&(A.items[t].energyPv+=1e3*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),A.items[t].energyBat+=1e3*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}const zo=["evuIn","pv","batOut","evuOut"],dt=X(!1);function Xt(t,e){Object.entries(t).length>0?(dt.value=!1,Object.entries(t.counter).forEach(([a,r])=>{(e.length==0||e.includes(a))&&(A.items.evuIn.energy+=r.energy_imported,A.items.evuOut.energy+=r.energy_exported)}),A.items.pv.energy=t.pv.all.energy_exported,t.bat.all&&(A.items.batIn.energy=t.bat.all.energy_imported,A.items.batOut.energy=t.bat.all.energy_exported),Object.entries(t.cp).forEach(([a,r])=>{a=="all"?(A.setEnergy("charging",r.energy_imported),r.energy_imported_pv!=null&&(A.setEnergyPv("charging",r.energy_imported_pv),A.setEnergyBat("charging",r.energy_imported_bat))):A.setEnergy(a,r.energy_imported)}),A.setEnergy("devices",0),Object.entries(t.sh).forEach(([a,r])=>{A.setEnergy(a,r.energy_imported);const n=a.substring(2);ae.get(+n).countAsHouse||(A.items.devices.energy+=r.energy_imported)}),t.hc&&t.hc.all?(A.setEnergy("house",t.hc.all.energy_imported),t.hc.all.energy_imported_pv!=null&&(A.setEnergyPv("house",t.hc.all.energy_imported_pv),A.setEnergyBat("house",t.hc.all.energy_imported_bat))):A.calculateHouseEnergy(),A.keys().forEach(a=>{zo.includes(a)||(A.setPvPercentage(a,Math.round((A.items[a].energyPv+A.items[a].energyBat)/A.items[a].energy*100)),Zt.includes(a)&&(j[a].energy=A.items[a].energy,j[a].energyPv=A.items[a].energyPv,j[a].energyBat=A.items[a].energyBat,j[a].pvPercentage=A.items[a].pvPercentage))}),f.graphMode=="today"&&(Object.values(V).forEach(a=>{const r=A.items["cp"+a.id];r&&(a.energyPv=r.energyPv,a.energyBat=r.energyBat,a.pvPercentage=r.pvPercentage)}),ae.forEach(a=>{const r=A.items["sh"+a.id];r&&(a.energy=r.energy,a.energyPv=r.energyPv,a.energyBat=r.energyBat,a.pvPercentage=r.pvPercentage)}))):dt.value=!0,kt.value=!0}const Pe=p(()=>{const t=Be(f.data,e=>new Date(e.date));return t[0]&&t[1]?Ut().domain(t).range([0,be-W.left-2*W.right]):Qe().range([0,0])});function Go(){A.keys().forEach(t=>{Zt.includes(t)&&(j[t].energy=A.items[t].energy,j[t].energyPv=0,j[t].energyBat=0,j[t].pvPercentage=0)}),Object.values(V).forEach(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0}),ae.forEach(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0})}const Ne=p(()=>{const t=Be(f.data,e=>e.date);return t[1]?Ft().domain(Array.from({length:t[1]},(e,a)=>a+1)).paddingInner(.4).range([0,be-W.left-2]):Ft().range([0,0])});function Kt(){switch(f.graphMode){case"live":f.graphMode="today",v.showRightButton=!0,me();break;case"today":f.graphMode="day",le.deactivate(),le.back(),le.activate(),me();break;case"day":le.back(),me();break;case"month":Ae.back();break;case"year":Fe.back();break}}function Sa(){const t=new Date;switch(f.graphMode){case"live":break;case"today":f.graphMode="live",v.showRightButton=!1,me();break;case"day":le.forward(),le.date.getDate()==t.getDate()&&le.date.getMonth()==t.getMonth()&&le.date.getFullYear()==t.getFullYear()&&(f.graphMode="today"),me();break;case"month":Ae.forward();break;case"year":Fe.forward();break}}function xa(){switch(f.graphMode){case"live":Kt();break;case"day":case"today":f.graphMode="month",me();break;case"month":f.graphMode="year",me();break}}function $a(){switch(f.graphMode){case"year":f.graphMode="month",me();break;case"month":f.graphMode="today",me();break;case"today":case"day":f.graphMode="live",me();break}}function ia(t){if(f.graphMode=="day"||f.graphMode=="today"){le.setDate(t);const e=new Date;le.date.getDate()==e.getDate()&&le.date.getMonth()==e.getMonth()&&le.date.getFullYear()==e.getFullYear()?f.graphMode="today":f.graphMode="day",me()}}const Ue=X(new Map);class Eo{constructor(){_(this,"_showRelativeArcs",!1);_(this,"showTodayGraph",!0);_(this,"_graphPreference","today");_(this,"_usageStackOrder",0);_(this,"_displayMode","dark");_(this,"_showGrid",!1);_(this,"_smartHomeColors","normal");_(this,"_decimalPlaces",1);_(this,"_showQuickAccess",!0);_(this,"_simpleCpList",!1);_(this,"_shortCpList","no");_(this,"_showAnimations",!0);_(this,"_preferWideBoxes",!1);_(this,"_maxPower",4e3);_(this,"_fluidDisplay",!1);_(this,"_showClock","no");_(this,"_showButtonBar",!0);_(this,"_showCounters",!1);_(this,"_showVehicles",!1);_(this,"_showStandardVehicle",!0);_(this,"_showPrices",!1);_(this,"_showInverters",!1);_(this,"_debug",!1);_(this,"isEtEnabled",!1);_(this,"etPrice",20.5);_(this,"showRightButton",!0);_(this,"showLeftButton",!0);_(this,"animationDuration",300);_(this,"animationDelay",100);_(this,"zoomGraph",!1)}get showRelativeArcs(){return this._showRelativeArcs}set showRelativeArcs(e){this._showRelativeArcs=e,ne()}setShowRelativeArcs(e){this._showRelativeArcs=e}get graphPreference(){return this._graphPreference}set graphPreference(e){this._graphPreference=e,ne()}setGraphPreference(e){this._graphPreference=e}get usageStackOrder(){return this._usageStackOrder}set usageStackOrder(e){this._usageStackOrder=e,ne()}setUsageStackOrder(e){this._usageStackOrder=e}get displayMode(){return this._displayMode}set displayMode(e){this._displayMode=e,No(e)}setDisplayMode(e){this._displayMode=e}get showGrid(){return this._showGrid}set showGrid(e){this._showGrid=e,ne()}setShowGrid(e){this._showGrid=e}get decimalPlaces(){return this._decimalPlaces}set decimalPlaces(e){this._decimalPlaces=e,ne()}setDecimalPlaces(e){this._decimalPlaces=e}get smartHomeColors(){return this._smartHomeColors}set smartHomeColors(e){this._smartHomeColors=e,la(e),ne()}setSmartHomeColors(e){this._smartHomeColors=e,la(e)}get showQuickAccess(){return this._showQuickAccess}set showQuickAccess(e){this._showQuickAccess=e,ne()}setShowQuickAccess(e){this._showQuickAccess=e}get simpleCpList(){return this._simpleCpList}set simpleCpList(e){this._simpleCpList=e,ne()}setSimpleCpList(e){this._simpleCpList=e}get shortCpList(){return this._shortCpList}set shortCpList(e){this._shortCpList=e,ne()}setShortCpList(e){this._shortCpList=e}get showAnimations(){return this._showAnimations}set showAnimations(e){this._showAnimations=e,ne()}setShowAnimations(e){this._showAnimations=e}get preferWideBoxes(){return this._preferWideBoxes}set preferWideBoxes(e){this._preferWideBoxes=e,ne()}setPreferWideBoxes(e){this._preferWideBoxes=e}get maxPower(){return this._maxPower}set maxPower(e){this._maxPower=e,ne()}setMaxPower(e){this._maxPower=e}get fluidDisplay(){return this._fluidDisplay}set fluidDisplay(e){this._fluidDisplay=e,ne()}setFluidDisplay(e){this._fluidDisplay=e}get showClock(){return this._showClock}set showClock(e){this._showClock=e,ne()}setShowClock(e){this._showClock=e}get debug(){return this._debug}set debug(e){this._debug=e,ne()}setDebug(e){this._debug=e}get showButtonBar(){return this._showButtonBar}set showButtonBar(e){this._showButtonBar=e,ne()}setShowButtonBar(e){this._showButtonBar=e}get showCounters(){return this._showCounters}set showCounters(e){this._showCounters=e,ne()}setShowCounters(e){this._showCounters=e}get showVehicles(){return this._showVehicles}set showVehicles(e){this._showVehicles=e,ne()}setShowVehicles(e){this._showVehicles=e}get showStandardVehicle(){return this._showStandardVehicle}set showStandardVehicle(e){this._showStandardVehicle=e,ne()}setShowStandardVehicle(e){this._showStandardVehicle=e}get showPrices(){return this._showPrices}set showPrices(e){this._showPrices=e,ne()}setShowPrices(e){this._showPrices=e}get showInverters(){return this._showInverters}set showInverters(e){this._showInverters=e,Lo(),Oo(),ne()}setShowInverters(e){this._showInverters=e}}const v=se(new Eo);function Ma(){Jo();const t=de("html");t.classed("theme-dark",v.displayMode=="dark"),t.classed("theme-light",v.displayMode=="light"),t.classed("theme-blue",v.displayMode=="blue"),t.classed("shcolors-standard",v.smartHomeColors=="standard"),t.classed("shcolors-advanced",v.smartHomeColors=="advanced"),t.classed("shcolors-normal",v.smartHomeColors=="normal")}const jo=992,wt=se({x:document.documentElement.clientWidth,y:document.documentElement.clientHeight});function Uo(){wt.x=document.documentElement.clientWidth,wt.y=document.documentElement.clientHeight,Ma()}const Re=p(()=>wt.x>=jo),ge={stop:{mode:fe.stop,name:"Stop",color:"var(--color-fg)",icon:"fa-power-off"},standby:{mode:fe.standby,name:"Standby",color:"var(--color-axis",icon:"fa-pause"},pv_charging:{mode:fe.pv_charging,name:"PV",color:"var(--color-pv",icon:"fa-solar-panel"},scheduled_charging:{mode:fe.scheduled_charging,name:"Zielladen",color:"var(--color-battery)",icon:"fa-bullseye"},instant_charging:{mode:fe.instant_charging,name:"Sofort",color:"var(--color-charging)",icon:"fa-bolt"}};class Fo{constructor(){_(this,"batterySoc",0);_(this,"isBatteryConfigured",!0);_(this,"chargeMode","0");_(this,"_pvBatteryPriority","ev_mode");_(this,"displayLiveGraph",!0);_(this,"isEtEnabled",!0);_(this,"etMaxPrice",0);_(this,"etCurrentPrice",0);_(this,"cpDailyExported",0);_(this,"evuId",0);_(this,"etProvider","")}get pvBatteryPriority(){return this._pvBatteryPriority}set pvBatteryPriority(e){this._pvBatteryPriority=e,ee("pvBatteryPriority",e)}updatePvBatteryPriority(e){this._pvBatteryPriority=e}}function ne(){Ro()}function No(t){const e=de("html");e.classed("theme-dark",t=="dark"),e.classed("theme-light",t=="light"),e.classed("theme-blue",t=="blue"),ne()}function Ho(){v.maxPower=R.evuIn.power+R.pv.power+R.batOut.power,ne()}function la(t){const e=de("html");e.classed("shcolors-normal",t=="normal"),e.classed("shcolors-standard",t=="standard"),e.classed("shcolors-advanced",t=="advanced")}const Oe={chargemode:"Der Lademodus für das Fahrzeug an diesem Ladepunkt",vehicle:"Das Fahrzeug, das an diesem Ladepounkt geladen wird",locked:"Für das Laden sperren",priority:"Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar",timeplan:"Das Laden nach Zeitplan für dieses Fahrzeug aktivieren",minsoc:"Immer mindestens bis zum eingestellten Ladestand laden. Wenn notwendig mit Netzstrom.",minpv:"Durchgehend mit mindestens dem eingestellten Strom laden. Wenn notwendig mit Netzstrom.",pricebased:"Laden bei dynamischem Stromtarif, wenn eingestellter Maximalpreis unterboten wird.",pvpriority:"Ladepriorität bei PV-Produktion. Bevorzung von Fahzeugen, Speicher, oder Fahrzeugen bis zum eingestellten Mindest-Ladestand. Die Einstellung ist für alle Ladepunkte gleich."};function Ro(){const t={};t.hideSH=[...ae.values()].filter(e=>!e.showInGraph).map(e=>e.id),t.showLG=v.graphPreference=="live",t.displayM=v.displayMode,t.stackO=v.usageStackOrder,t.showGr=v.showGrid,t.decimalP=v.decimalPlaces,t.smartHomeC=v.smartHomeColors,t.relPM=v.showRelativeArcs,t.maxPow=v.maxPower,t.showQA=v.showQuickAccess,t.simpleCP=v.simpleCpList,t.shortCP=v.shortCpList,t.animation=v.showAnimations,t.wideB=v.preferWideBoxes,t.fluidD=v.fluidDisplay,t.clock=v.showClock,t.showButtonBar=v.showButtonBar,t.showCounters=v.showCounters,t.showVehicles=v.showVehicles,t.showStandardV=v.showStandardVehicle,t.showPrices=v.showPrices,t.showInv=v.showInverters,t.debug=v.debug,document.cookie="openWBColorTheme="+JSON.stringify(t)+";max-age=16000000;samesite=strict"}function Jo(){const e=document.cookie.split(";").filter(a=>a.split("=")[0]==="openWBColorTheme");if(e.length>0){const a=JSON.parse(e[0].split("=")[1]);a.decimalP!==void 0&&v.setDecimalPlaces(+a.decimalP),a.smartHomeC!==void 0&&v.setSmartHomeColors(a.smartHomeC),a.hideSH!==void 0&&a.hideSH.forEach(r=>{ae.get(r)==null&&qt(r),ae.get(r).setShowInGraph(!1)}),a.showLG!==void 0&&v.setGraphPreference(a.showLG?"live":"today"),a.maxPow!==void 0&&v.setMaxPower(+a.maxPow),a.relPM!==void 0&&v.setShowRelativeArcs(a.relPM),a.displayM!==void 0&&v.setDisplayMode(a.displayM),a.stackO!==void 0&&v.setUsageStackOrder(a.stackO),a.showGr!==void 0&&v.setShowGrid(a.showGr),a.showQA!==void 0&&v.setShowQuickAccess(a.showQA),a.simpleCP!==void 0&&v.setSimpleCpList(a.simpleCP),a.shortCP!==void 0&&v.setShortCpList(a.shortCP),a.animation!=null&&v.setShowAnimations(a.animation),a.wideB!=null&&v.setPreferWideBoxes(a.wideB),a.fluidD!=null&&v.setFluidDisplay(a.fluidD),a.clock!=null&&v.setShowClock(a.clock),a.showButtonBar!==void 0&&v.setShowButtonBar(a.showButtonBar),a.showCounters!==void 0&&v.setShowCounters(a.showCounters),a.showVehicles!==void 0&&v.setShowVehicles(a.showVehicles),a.showStandardV!==void 0&&v.setShowStandardVehicle(a.showStandardV),a.showPrices!==void 0&&v.setShowPrices(a.showPrices),a.showInv!==void 0&&v.setShowInverters(a.showInv),a.debug!==void 0&&v.setDebug(a.debug)}}const ce=se({evuIn:{name:"Netz",color:"var(--color-evu)",icon:""},pv:{name:"PV",color:"var(--color-pv",icon:""},batOut:{name:"Bat >",color:"var(--color-battery)",icon:""},evuOut:{name:"Export",color:"var(--color-export)",icon:""},charging:{name:"Laden",color:"var(--color-charging)",icon:""},devices:{name:"Geräte",color:"var(--color-devices)",icon:""},batIn:{name:"> Bat",color:"var(--color-battery)",icon:""},house:{name:"Haus",color:"var(--color-house)",icon:""},cp1:{name:"Ladepunkt",color:"var(--color-cp1)",icon:"Ladepunkt"},cp2:{name:"Ladepunkt",color:"var(--color-cp2)",icon:"Ladepunkt"},cp3:{name:"Ladepunkt",color:"var(--color-cp3)",icon:"Ladepunkt"},cp4:{name:"Ladepunkt",color:"var(--color-cp4)",icon:"Ladepunkt"},cp5:{name:"Ladepunkt",color:"var(--color-cp5)",icon:"Ladepunkt"},cp6:{name:"Ladepunkt",color:"var(--color-cp6)",icon:"Ladepunkt"},cp7:{name:"Ladepunkt",color:"var(--color-cp7)",icon:"Ladepunkt"},cp8:{name:"Ladepunkt",color:"var(--color-cp8)",icon:"Ladepunkt"},sh1:{name:"Gerät",color:"var(--color-sh1)",icon:"Gerät"},sh2:{name:"Gerät",color:"var(--color-sh2)",icon:"Gerät"},sh3:{name:"Gerät",color:"var(--color-sh3)",icon:"Gerät"},sh4:{name:"Gerät",color:"var(--color-sh4)",icon:"Gerät"},sh5:{name:"Gerät",color:"var(--color-sh5)",icon:"Gerät"},sh6:{name:"Gerät",color:"var(--color-sh6)",icon:"Gerät"},sh7:{name:"Gerät",color:"var(--color-sh7)",icon:"Gerät"},sh8:{name:"Gerät",color:"var(--color-sh8)",icon:"Gerät"},sh9:{name:"Gerät",color:"var(--color-sh9)",icon:"Gerät"},pv1:{name:"PV",color:"var(--color-pv1)",icon:"Wechselrichter"},pv2:{name:"PV",color:"var(--color-pv2)",icon:"Wechselrichter"},pv3:{name:"PV",color:"var(--color-pv3)",icon:"Wechselrichter"},pv4:{name:"PV",color:"var(--color-pv4)",icon:"Wechselrichter"},pv5:{name:"PV",color:"var(--color-pv5)",icon:"Wechselrichter"},pv6:{name:"PV",color:"var(--color-pv6)",icon:"Wechselrichter"},pv7:{name:"PV",color:"var(--color-pv7)",icon:"Wechselrichter"},pv8:{name:"PV",color:"var(--color-pv8)",icon:"Wechselrichter"},pv9:{name:"PV",color:"var(--color-pv9)",icon:"Wechselrichter"},bat1:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat2:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat3:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat4:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat5:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat6:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat7:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat8:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat9:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"}});class Ia{constructor(){_(this,"_items",{});this.addItem("evuIn"),this.addItem("pv"),this.addItem("batOut"),this.addItem("evuOut"),this.addItem("charging"),this.addItem("devices"),this.addItem("batIn"),this.addItem("house")}get items(){return this._items}keys(){return Object.keys(this._items)}values(){return Object.values(this._items)}addItem(e,a){this._items[e]=a?Te(e,a):Te(e)}setEnergy(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energy=a}setEnergyPv(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyPv=a}setEnergyBat(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyBat=a}setPvPercentage(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].pvPercentage=a<=100?a:100}calculateHouseEnergy(){this._items.house.energy=this._items.evuIn.energy+this._items.pv.energy+this._items.batOut.energy-this._items.evuOut.energy-this._items.batIn.energy-this._items.charging.energy-this._items.devices.energy}}let A=se(new Ia);function ea(){A=new Ia}const R=se({evuIn:Te("evuIn"),pv:Te("pv"),batOut:Te("batOut")}),j=se({evuOut:Te("evuOut"),charging:Te("charging"),devices:Te("devices"),batIn:Te("batIn"),house:Te("house")}),ue=se(new Fo);X("");const kt=X(!1);function Te(t,e){return{name:ce[t]?ce[t].name:"item",power:0,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:e||(ce[t]?ce[t].color:"var(--color-charging)"),icon:ce[t]?ce[t].icon:"",showInGraph:!0}}const Rt=X(new Date),ke=X(new Map),qo=t=>{ke.value.set(t,new ba(t)),ke.value.get(t).color=ce["pv"+ke.value.size].color},Yo=["origin"],Qo=O({__name:"PMSourceArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=p(()=>{let r={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:"",showInGraph:!0},n=R;n["zz-empty"]=r;const s=Object.values(R).length-1,h=ma().value(u=>u.power).startAngle(-Math.PI/2+e.circleGapSize).endAngle(Math.PI/2-e.circleGapSize).sort(null),g=va().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius).padAngle(0),c=de("g#pmSourceArc");return c.selectAll("*").remove(),c.selectAll("sources").data(h(Object.values(n))).enter().append("path").attr("d",g).attr("fill",u=>u.data.color).attr("stroke",(u,d)=>d==s?u.data.power>0?"var(--color-scale)":"null":u.data.color),"pmSourceArc.vue"});return to(()=>{let r=R.pv.power+R.evuIn.power+R.batOut.power;r>v.maxPower&&(v.maxPower=r)}),(r,n)=>(l(),m("g",{id:"pmSourceArc",origin:a.value},null,8,Yo))}}),Zo=["origin"],Xo=O({__name:"PMUsageArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=p(()=>{let r={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:"",showInGraph:!0};const n=[j.evuOut,j.charging].concat([...ae.values()].filter(u=>u.configured&&!u.countAsHouse).sort((u,d)=>d.power-u.power)).concat([j.batIn,j.house]).concat(r),s=n.length-1,h=ma().value(u=>u.power).startAngle(Math.PI*1.5-e.circleGapSize).endAngle(Math.PI/2+e.circleGapSize).sort(null),g=va().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius),c=de("g#pmUsageArc");return c.selectAll("*").remove(),c.selectAll("consumers").data(h(n)).enter().append("path").attr("d",g).attr("fill",u=>u.data.color).attr("stroke",(u,d)=>d==s?u.data.power>0?"var(--color-scale)":"null":u.data.color),"pmUsageArc.vue"});return(r,n)=>(l(),m("g",{id:"pmUsageArc",origin:a.value},null,8,Zo))}});function $e(t,e=1){let a;if(t>=1e3&&e<4){switch(e){case 0:a=Math.round(t/1e3);break;case 1:a=Math.round(t/100)/10;break;case 2:a=Math.round(t/10)/100;break;case 3:a=Math.round(t)/1e3;break;default:a=Math.round(t/100)/10;break}return(a==null?void 0:a.toLocaleString(void 0,{minimumFractionDigits:e}))+" kW"}else return Math.round(t).toLocaleString(void 0)+" W"}function ht(t,e=1,a=!1){let r;if(t>1e6&&(a=!0,t=t/1e3),t>=1e3&&e<4){switch(e){case 0:r=Math.round(t/1e3);break;case 1:r=(Math.round(t/100)/10).toFixed(1);break;case 2:r=(Math.round(t/10)/100).toFixed(2);break;case 3:r=(Math.round(t)/1e3).toFixed(3);break;default:r=Math.round(t/100)/10;break}return r.toLocaleString(void 0,{minimumFractionDigits:e})+(a?" MWh":" kWh")}else return Math.round(t).toLocaleString(void 0)+(a?" kWh":" Wh")}function Ko(t){const e=Math.floor(t/3600),a=(t%3600/60).toFixed(0);return e>0?e+"h "+a+" min":a+" min"}function Ca(t){return t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function er(t,e){return["Jan","Feb","März","April","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Dez"][t]+" "+e}function tr(t){return t!=999?(Math.round(t*10)/10).toLocaleString(void 0,{minimumFractionDigits:1})+"°":"-"}const vt=O({__name:"FormatWatt",props:{watt:{}},setup(t){const e=t,a=p(()=>$e(e.watt,v.decimalPlaces));return(r,n)=>x(a.value)}}),ar={key:0,id:"pmLabel"},or=["x","y","fill","text-anchor"],rr=22,Le=O({__name:"PMLabel",props:{x:{},y:{},data:{},props:{},anchor:{},labeltext:{},labelicon:{},labelcolor:{}},setup(t){const e=t,a=p(()=>e.labeltext?e.labeltext:e.props?e.props.icon+" ":e.labelicon?e.labelicon+" ":""),r=p(()=>e.labelcolor?e.labelcolor:e.props?e.props.color:""),n=p(()=>!e.data||e.data.power>0),s=p(()=>e.labeltext?"":"fas");return(h,g)=>n.value?(l(),m("g",ar,[o("text",{x:h.x,y:h.y,fill:r.value,"text-anchor":h.anchor,"font-size":rr,class:"pmLabel"},[o("tspan",{class:N(s.value)},x(a.value),3),o("tspan",null,[h.data!==void 0?(l(),$(vt,{key:0,watt:h.data.power},null,8,["watt"])):w("",!0)])],8,or)])):w("",!0)}}),nr={class:"wb-widget p-0 m-0 shadow"},sr={class:"d-flex justify-content-between"},ir={class:"m-4 me-0 mb-0"},lr=o("div",{class:"p-0"},"(title goes here)",-1),cr={class:"p-4 pb-0 ps-0 m-0",style:{"text-align":"right"}},dr={class:"px-4 pt-4 pb-2 wb-subwidget"},ur={class:"row"},hr={class:"col m-0 p-0"},pr={class:"container-fluid m-0 p-0"},gr={key:0},mr=o("hr",null,null,-1),vr={class:"px-4 py-2 wb-subwidget"},fr={class:"row"},_r={class:"col"},br={class:"container-fluid m-0 p-0"},$t=O({__name:"WBWidget",props:{variableWidth:{type:Boolean},fullWidth:{type:Boolean}},setup(t){const e=t,a=p(()=>e.fullWidth?"col-12":e.variableWidth&&v.preferWideBoxes?"col-lg-6":"col-lg-4");return(r,n)=>(l(),m("div",{class:N(["p-2 m-0 d-flex",a.value])},[o("div",nr,[o("div",sr,[o("h3",ir,[he(r.$slots,"title",{},()=>[lr]),he(r.$slots,"subtitle")]),o("div",cr,[he(r.$slots,"buttons")])]),o("div",dr,[o("div",ur,[o("div",hr,[o("div",pr,[he(r.$slots,"default")])])])]),r.$slots.footer!=null?(l(),m("div",gr,[mr,o("div",vr,[o("div",fr,[o("div",_r,[o("div",br,[he(r.$slots,"footer")])])])])])):w("",!0)])],2))}});class yr{constructor(){_(this,"active",!1);_(this,"etPriceList",new Map);_(this,"etProvider","");_(this,"etMaxPrice",0)}get etCurrentPriceString(){const[e]=te.etPriceList.values();return(Math.round(e*10)/10).toFixed(1)+" ct"}}const te=se(new yr),wr={id:"powermeter",class:"p-0 m-0"},kr=["viewBox"],Sr=["transform"],xr=["x"],Ee=500,je=20,ca=1,$r=O({__name:"PowerMeter",setup(t){const e=Ee,a=Math.PI/40,r=[[4],[4,6],[1,4,6],[0,2,4,6],[0,2,3,5,6]],n=[{x:-85,y:e/2*1/5},{x:0,y:e/2*1/5},{x:85,y:e/2*1/5},{x:-85,y:e/2*2/5},{x:0,y:e/2*2/5},{x:85,y:e/2*2/5},{x:0,y:e/2*3/5}],s=p(()=>Ee/2-je),h=p(()=>{let I="",H=Object.values(R).filter(P=>P.power>0);return H.length==1&&H[0].name=="PV"?I="Aktueller Verbrauch: ":I="Bezug/Verbrauch: ",I+$e(j.house.power+j.charging.power+j.devices.power+j.batIn.power,v.decimalPlaces)}),g=p(()=>{let I=R.pv.power+R.evuIn.power+R.batOut.power;return v.maxPower>I?$e(v.maxPower,v.decimalPlaces):$e(I,v.decimalPlaces)}),c=p(()=>Object.values(V)),u=p(()=>{let I=0;return v.showRelativeArcs&&(I=v.maxPower-(R.pv.power+R.evuIn.power+R.batOut.power)),I<0?0:I}),d=p(()=>[j.evuOut,j.charging,j.devices,j.batIn,j.house].filter(I=>I.power>0)),C=p(()=>r[d.value.length-1]);function J(I){return n[C.value[I]]}const L=p(()=>{if(!(c.value.length<1))return Y[c.value[0].connectedVehicle]??void 0}),E=p(()=>{if(!(c.value.length<1))if(c.value.length==1)if(Object.values(Y).filter(I=>I.visible).length>1){const I=Object.values(Y).filter(H=>H.visible);return I[0].id==c.value[0].connectedVehicle?I[1]:I[0]}else return;else return Y[c.value[1].connectedVehicle]??void 0});function T(I){return I.length>12?I.slice(0,11)+".":I}const q=p(()=>{const[I]=te.etPriceList.values();return Math.round(I*10)/10});return(I,H)=>(l(),$($t,{"full-width":!0},{title:y(()=>[z(" Aktuelle Leistung ")]),default:y(()=>[o("figure",wr,[(l(),m("svg",{viewBox:"0 0 "+Ee+" "+i(e)},[o("g",{transform:"translate("+Ee/2+","+i(e)/2+")"},[b(Qo,{radius:s.value,"corner-radius":ca,"circle-gap-size":a,"empty-power":u.value},null,8,["radius","empty-power"]),b(Xo,{"sh-device":i(ae),radius:s.value,"corner-radius":ca,"circle-gap-size":a,"empty-power":u.value},null,8,["sh-device","radius","empty-power"]),b(Le,{x:0,y:-i(e)/10*2,data:i(R).pv,props:i(ce).pv,anchor:"middle",config:i(v)},null,8,["y","data","props","config"]),b(Le,{x:0,y:-i(e)/10*3,data:i(R).evuIn,props:i(ce).evuIn,anchor:"middle",config:i(v)},null,8,["y","data","props","config"]),b(Le,{x:0,y:-i(e)/10,data:i(R).batOut,props:i(ce).batOut,anchor:"middle",config:i(v)},null,8,["y","data","props","config"]),i(te).active?(l(),$(Le,{key:0,x:0,y:-i(e)/10,data:i(R).batOut,props:i(ce).batOut,anchor:"middle",config:i(v)},null,8,["y","data","props","config"])):w("",!0),(l(!0),m(G,null,K(d.value,(P,k)=>(l(),$(Le,{key:k,x:J(k).x,y:J(k).y,data:P,labelicon:P.icon,labelcolor:P.color,anchor:"middle",config:i(v)},null,8,["x","y","data","labelicon","labelcolor","config"]))),128)),L.value?(l(),$(Le,{key:1,x:-Ee/2-je/4+10,y:-i(e)/2+je+5,labeltext:T(L.value.name)+": "+Math.round(L.value.soc)+"%",labelcolor:c.value[0].color,anchor:"start",config:i(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),E.value?(l(),$(Le,{key:2,x:Ee/2+je/4-10,y:-i(e)/2+je+5,labeltext:T(E.value.name)+": "+Math.round(E.value.soc)+"%",labelcolor:c.value[1].color,anchor:"end",config:i(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),i(ue).batterySoc>0?(l(),$(Le,{key:3,x:-Ee/2-je/4+10,y:i(e)/2-je+15,labeltext:"Speicher: "+i(ue).batterySoc+"%",labelcolor:i(j).batIn.color,anchor:"start",config:i(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),i(te).active?(l(),$(Le,{key:4,x:Ee/2+je/4-10,y:i(e)/2-je+15,value:q.value,labeltext:i(te).etCurrentPriceString,labelcolor:"var(--color-charging)",anchor:"end",config:i(v)},null,8,["x","y","value","labeltext","config"])):w("",!0),b(Le,{x:0,y:0,labeltext:h.value,labelcolor:"var(--color-fg)",anchor:"middle",config:i(v)},null,8,["labeltext","config"]),i(v).showRelativeArcs?(l(),m("text",{key:5,x:Ee/2-44,y:"2","text-anchor":"middle",fill:"var(--color-axis)","font-size":"12"}," Peak: "+x(g.value),9,xr)):w("",!0)],8,Sr)],8,kr))])]),_:1}))}}),Mr=["origin","origin2","transform"],Ir=O({__name:"PGSourceGraph",props:{width:{},height:{},margin:{}},setup(t){const e=t,a={house:"var(--color-house)",batIn:"var(--color-battery)",inverter:"var(--color-pv)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",pv:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)"};var r,n;const s=v.showAnimations?v.animationDuration:0,h=v.showAnimations?v.animationDelay:0,g=p(()=>{const k=de("g#pgSourceGraph");if(f.data.length>0){f.graphMode=="month"||f.graphMode=="year"?H(k,Ne.value):I(k,Pe.value),k.selectAll(".axis").remove();const M=k.append("g").attr("class","axis");M.call(E.value),M.selectAll(".tick").attr("font-size",12),M.selectAll(".tick line").attr("stroke",q.value).attr("stroke-width",T.value),M.select(".domain").attr("stroke","var(--color-bg)")}return"pgSourceGraph.vue"}),c=p(()=>fa().value((k,M)=>k[M]??0).keys(C.value)),u=p(()=>c.value(f.data)),d=p(()=>Ze().range([e.height-10,0]).domain(f.graphMode=="year"?[0,Math.ceil(J.value[1]*10)/10]:[0,Math.ceil(J.value[1])])),C=p(()=>{let k=[];const M=["batOut","evuIn"];if(v.showInverters){const S=/pv\d+/;f.data.length>0&&(k=Object.keys(f.data[0]).reduce((B,D)=>(D.match(S)&&B.push(D),B),[]))}switch(f.graphMode){case"live":return v.showInverters?["pv","batOut","evuIn"]:["selfUsage","evuOut","batOut","evuIn"];case"today":case"day":return k.forEach((S,B)=>{a[S]="var(--color-pv"+(B+1)+")"}),v.showInverters?[...k,...M]:["selfUsage","evuOut","batOut","evuIn"];default:return["evuIn","batOut","selfUsage","evuOut"]}}),J=p(()=>{let k=Be(f.data,M=>Math.max(M.pv+M.evuIn+M.batOut,M.selfUsage+M.evuOut));return k[0]!=null&&k[1]!=null?(f.graphMode=="year"&&(k[0]=k[0]/1e3,k[1]=k[1]/1e3),k):[0,0]}),L=p(()=>f.graphMode=="month"||f.graphMode=="year"?-e.width-e.margin.right-22:-e.width),E=p(()=>pt(d.value).tickSizeInner(L.value).ticks(4).tickFormat(k=>(k==0?"":Math.round(k*10)/10).toLocaleString(void 0))),T=p(()=>v.showGrid?"0.5":"1"),q=p(()=>v.showGrid?"var(--color-grid)":"var(--color-bg)");function I(k,M){const S=et().x((D,_e)=>M(f.data[_e].date)).y(d.value(0)).curve(tt),B=et().x((D,_e)=>M(f.data[_e].date)).y0(D=>d.value(f.graphMode=="year"?D[0]/1e3:D[0])).y1(D=>d.value(f.graphMode=="year"?D[1]/1e3:D[1])).curve(tt);ut?(k.selectAll("*").remove(),r=k.selectAll(".sourceareas").data(u.value).enter().append("path").attr("fill",(D,_e)=>a[C.value[_e]]).attr("d",D=>S(D)),r.transition().duration(s).delay(h).ease(st).attr("d",D=>B(D)),na()):r.data(u.value).transition().duration(0).ease(st).attr("d",D=>B(D))}function H(k,M){f.data.length>0&&(ut?(k.selectAll("*").remove(),n=k.selectAll(".sourcebar").data(u.value).enter().append("g").attr("fill",(S,B)=>a[C.value[B]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,B)=>M(f.data[B].date)??0).attr("y",()=>d.value(0)).attr("height",0).attr("width",M.bandwidth()),n.transition().duration(s).delay(h).ease(st).attr("height",S=>f.graphMode=="year"?d.value(S[0]/1e3)-d.value(S[1]/1e3):d.value(S[0])-d.value(S[1])).attr("y",S=>f.graphMode=="year"?d.value(S[1]/1e3):d.value(S[1])),na()):(k.selectAll("*").remove(),n=k.selectAll(".sourcebar").data(u.value).enter().append("g").attr("fill",(S,B)=>a[C.value[B]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,B)=>M(f.data[B].date)??0).attr("y",S=>f.graphMode=="year"?d.value(S[1]/1e3):d.value(S[1])).attr("width",M.bandwidth()).attr("height",S=>f.graphMode=="year"?d.value(S[0]/1e3)-d.value(S[1]/1e3):d.value(S[0])-d.value(S[1]))))}const P=p(()=>{const k=de("g#pgSourceGraph");if(f.graphMode!="month"&&f.graphMode!="year"&&f.data.length>0){Pe.value.range(He.value);const M=et().x((S,B)=>Pe.value(f.data[B].date)).y0(S=>d.value(S[0])).y1(S=>d.value(S[1])).curve(tt);k.selectAll("path").attr("d",S=>S?M(S):""),k.selectAll("g#sourceToolTips").select("rect").attr("x",S=>Pe.value(S.date)).attr("width",e.width/f.data.length)}return"zoomed"});return(k,M)=>(l(),m("g",{id:"pgSourceGraph",origin:g.value,origin2:P.value,transform:"translate("+k.margin.left+","+k.margin.top+")"},null,8,Mr))}}),Cr=["origin","origin2","transform"],Pr=O({__name:"PGUsageGraph",props:{width:{},height:{},margin:{},stackOrder:{}},setup(t){const e=t,a=p(()=>v.showInverters?[["house","charging","devices","batIn"],["charging","devices","batIn","house"],["devices","batIn","charging","house"],["batIn","charging","house","devices"]]:[["house","charging","devices","batIn","evuOut"],["charging","devices","batIn","house","evuOut"],["devices","batIn","charging","house","evuOut"],["batIn","charging","house","devices","evuOut"]]),r={house:"var(--color-house)",charging:"var(--color-charging)",batIn:"var(--color-battery)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)",cp0:"var(--color-cp0)",cp1:"var(--color-cp1)",cp2:"var(--color-cp2)",cp3:"var(--color-cp3)",sh1:"var(--color-sh1)",sh2:"var(--color-sh2)",sh3:"var(--color-sh3)",sh4:"var(--color-sh4)",devices:"var(--color-devices)"};var n,s;const h=v.showAnimations?v.animationDuration:0,g=v.showAnimations?v.animationDelay:0,c=p(()=>{const P=de("g#pgUsageGraph");f.graphMode=="month"||f.graphMode=="year"?I(P):q(P),P.selectAll(".axis").remove();const k=P.append("g").attr("class","axis");return k.call(T.value),k.selectAll(".tick").attr("font-size",12).attr("color","var(--color-axis)"),v.showGrid?k.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):k.selectAll(".tick line").attr("stroke","var(--color-bg)"),k.select(".domain").attr("stroke","var(--color-bg)"),"pgUsageGraph.vue"}),u=p(()=>fa().value((P,k)=>P[k]??0).keys(J.value)),d=p(()=>u.value(f.data)),C=p(()=>Ze().range([e.height+10,2*e.height]).domain(f.graphMode=="year"?[0,Math.ceil(L.value[1]*10)/10]:[0,Math.ceil(L.value[1])])),J=p(()=>{if(f.graphMode!="today"&&f.graphMode!="day"&&f.graphMode!="live")return a.value[e.stackOrder];{const P=a.value[e.stackOrder].slice(),k=P.indexOf("charging");P.splice(k,1);const M=/cp\d+/;let S=[];return f.data.length>0&&(S=Object.keys(f.data[0]).reduce((B,D)=>(D.match(M)&&B.push(D),B),[])),S.forEach((B,D)=>{var _e;P.splice(k+D,0,B),r[B]=((_e=V[+B.slice(2)])==null?void 0:_e.color)??"black"}),v.showInverters&&P.push("evuOut"),P}}),L=p(()=>{let P=Be(f.data,k=>k.house+k.charging+k.batIn+k.devices+k.evuOut);return P[0]!=null&&P[1]!=null?(f.graphMode=="year"&&(P[0]=P[0]/1e3,P[1]=P[1]/1e3),P):[0,0]}),E=p(()=>f.graphMode=="month"||f.graphMode=="year"?-e.width-e.margin.right-22:-e.width),T=p(()=>pt(C.value).tickSizeInner(E.value).ticks(4).tickFormat(P=>(P==0?"":Math.round(P*10)/10).toLocaleString(void 0)));function q(P){const k=et().x((S,B)=>Pe.value(f.data[B].date)).y(C.value(0)).curve(tt),M=et().x((S,B)=>Pe.value(f.data[B].date)).y0(S=>C.value(S[0])).y1(S=>C.value(S[1])).curve(tt);v.showAnimations?rt?(P.selectAll("*").remove(),n=P.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",S=>k(S)).attr("fill",(S,B)=>r[J.value[B]]),n.transition().duration(300).delay(100).ease(st).attr("d",S=>M(S)),sa()):(P.selectAll("*").remove(),P.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",S=>M(S)).attr("fill",(S,B)=>r[J.value[B]])):(P.selectAll("*").remove(),P.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",S=>M(S)).attr("fill",(S,B)=>r[J.value[B]]))}function I(P){rt?(P.selectAll("*").remove(),s=P.selectAll(".usagebar").data(d.value).enter().append("g").attr("fill",(k,M)=>r[a.value[e.stackOrder][M]]).selectAll("rect").data(k=>k).enter().append("rect").attr("x",(k,M)=>Ne.value(f.data[M].date)??0).attr("y",()=>C.value(0)).attr("height",0).attr("width",Ne.value.bandwidth()),s.transition().duration(h).delay(g).ease(st).attr("y",k=>f.graphMode=="year"?C.value(k[0]/1e3):C.value(k[0])).attr("height",k=>f.graphMode=="year"?C.value(k[1]/1e3)-C.value(k[0]/1e3):C.value(k[1])-C.value(k[0])),sa()):(P.selectAll("*").remove(),s=P.selectAll(".usagebar").data(d.value).enter().append("g").attr("fill",(k,M)=>r[a.value[e.stackOrder][M]]).selectAll("rect").data(k=>k).enter().append("rect").attr("x",(k,M)=>Ne.value(f.data[M].date)??0).attr("y",k=>f.graphMode=="year"?C.value(k[0]/1e3):C.value(k[0])).attr("height",k=>f.graphMode=="year"?C.value(k[1]/1e3)-C.value(k[0]/1e3):C.value(k[1])-C.value(k[0])).attr("width",Ne.value.bandwidth()))}const H=p(()=>{const P=de("g#pgUsageGraph");if(f.graphMode!="month"&&f.graphMode!="year"){Pe.value.range(He.value);const k=et().x((M,S)=>Pe.value(f.data[S].date)).y0(M=>C.value(M[0])).y1(M=>C.value(M[1])).curve(tt);P.selectAll("path").attr("d",M=>M?k(M):"")}return"zoomed"});return(P,k)=>(l(),m("g",{id:"pgUsageGraph",origin:c.value,origin2:H.value,transform:"translate("+P.margin.left+","+P.margin.top+")"},null,8,Cr))}}),Br=["transform"],Vr=["origin","origin2","transform"],Lr=["origin","transform"],Or={key:0},Ar=["width","height"],Tr={key:1},Dr=["y","width","height"],Pt=12,Wr=O({__name:"PGXAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=p(()=>it(Pe.value).ticks(6).tickSizeInner(h.value).tickFormat(ot("%H:%M"))),r=p(()=>ao(Pe.value).ticks(6).tickSizeInner(h.value+3).tickFormat(ot(""))),n=p(()=>it(Ne.value).ticks(4).tickSizeInner(h.value).tickFormat(d=>d.toString())),s=p(()=>it(Ne.value).ticks(4).tickSizeInner(h.value).tickFormat(()=>"")),h=p(()=>f.graphMode!=="month"&&f.graphMode!=="year"?v.showGrid?-(e.height/2-7):-10:0),g=p(()=>{let d=de("g#PGXAxis");return d.selectAll("*").remove(),f.graphMode=="month"||f.graphMode=="year"?d.call(n.value):d.call(a.value),d.selectAll(".tick > text").attr("fill",(C,J)=>J>=0||f.graphMode=="month"||f.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",Pt),v.showGrid?d.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):d.selectAll(".tick line").attr("stroke","var(--color-bg)"),d.select(".domain").attr("stroke","var(--color-bg)"),d.append("text").attr("x",-e.margin.left).attr("y",12).attr("fill","var(--color-axis)").attr("font-size",Pt).text(f.graphMode=="year"?"MW":"kW").attr("text-anchor","start"),"PGXAxis.vue"}),c=p(()=>{let d=de("g#PGXAxis2");return d.selectAll("*").remove(),f.graphMode=="month"||f.graphMode=="year"?d.call(s.value):d.call(r.value),d.selectAll(".tick > text").attr("fill",(C,J)=>J>=0||f.graphMode=="month"||f.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",Pt),v.showGrid?(d.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"),d.select(".domain").attr("stroke","var(--color-bg)")):d.selectAll(".tick line").attr("stroke","var(--color-bg)"),d.select(".domain").attr("stroke","var(--color-bg)"),"PGXAxis2.vue"}),u=p(()=>{if(f.graphMode!="month"&&f.graphMode!="year"){const d=de("g#PGXAxis"),C=de("g#PGXAxis2");f.graphMode=="month"||f.graphMode=="year"?(Ne.value.range(He.value),d.call(n.value),C.call(s.value)):(Pe.value.range(He.value),d.call(a.value),C.call(r.value))}return"zoomed"});return(d,C)=>(l(),m("g",{transform:"translate("+d.margin.left+","+d.margin.top+")"},[o("g",{id:"PGXAxis",class:"axis",origin:g.value,origin2:u.value,transform:"translate(0,"+(d.height/2-6)+")"},null,8,Vr),o("g",{id:"PGXAxis2",class:"axis",origin:c.value,transform:"translate(0,"+(d.height/2+10)+")"},null,8,Lr),i(v).showGrid?(l(),m("g",Or,[o("rect",{x:"0",y:"0",width:d.width,height:d.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Ar)])):w("",!0),i(v).showGrid?(l(),m("g",Tr,[o("rect",{x:"0",y:d.height/2+10,width:d.width,height:d.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Dr)])):w("",!0)],8,Br))}}),zr=["id",".origin","d"],Gr=["id","d","stroke"],Er=["x","y","text-anchor"],Bt=O({__name:"PgSoc",props:{width:{},height:{},margin:{},order:{}},setup(t){const e=t,a=p(()=>{let L=Be(f.data,E=>E.date);return L[0]&&L[1]?Qe().domain(L).range([0,e.width]):Qe().range([0,0])}),r=p(()=>Ze().range([e.height-10,0]).domain([0,100])),n=p(()=>{let E=bt().x(T=>a.value(T.date)).y(T=>r.value(e.order==2?T.batSoc:T["soc"+u.value.connectedVehicle])??r.value(0))(f.data);return E||""}),s=p(()=>e.order==2?"Speicher":u.value.connectedVehicle),h=p(()=>e.order==2?"Speicher":u.value.vehicleName),g=p(()=>{switch(e.order){case 0:return"var(--color-cp1)";case 1:return"var(--color-cp2)";case 2:return"var(--color-battery)";default:return"red"}}),c=p(()=>{switch(e.order){case 0:return e.width-3;case 1:return 3;case 2:return e.width/2;default:return 0}}),u=p(()=>{const L=e.order==2?0:e.order;return Object.values(V)[L]}),d=p(()=>{if(f.data.length>0){let L;switch(e.order){case 0:return L=f.data.length-1,r.value(f.data[L]["soc"+s.value]+2);case 1:return L=0,r.value(f.data[L]["soc"+s.value]+2);case 2:return L=Math.round(f.data.length/2),r.value(f.data[L].batSoc+2);default:return 0}}else return 0}),C=p(()=>{switch(e.order){case 0:return"end";case 1:return"start";case 2:return"middle";default:return"middle"}}),J=p(()=>{if(f.graphMode!="month"&&f.graphMode!="year"){const L=de("path#soc-"+s.value),E=de("path#socdashes-"+s.value);a.value.range(He.value);const T=bt().x(q=>a.value(q.date)).y(q=>r.value(e.order==2?q.batSoc:q["soc"+u.value.connectedVehicle])??r.value(0));L.attr("d",T(f.data)),E.attr("d",T(f.data))}return"zoomed"});return(L,E)=>(l(),m(G,null,[o("path",{id:"soc-"+s.value,".origin":J.value,class:"soc-baseline",d:n.value,stroke:"var(--color-bg)","stroke-width":"1",fill:"none"},null,40,zr),o("path",{id:"socdashes-"+s.value,class:"soc-dashes",d:n.value,stroke:g.value,"stroke-width":"1",style:{strokeDasharray:"3,3"},fill:"none"},null,8,Gr),o("text",{class:"cpname",x:c.value,y:d.value,style:Z({fill:g.value,fontSize:10}),"text-anchor":C.value},x(h.value),13,Er)],64))}}),jr=["transform"],Ur=O({__name:"PgSocAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=p(()=>Ze().range([e.height-10,0]).domain([0,100])),r=p(()=>oo(a.value).ticks(5).tickFormat(s=>s.toString()+"%"));function n(){let s=de("g#PGSocAxis");s.call(r.value),s.selectAll(".tick").attr("font-size",12),s.selectAll(".tick line").attr("stroke","var(--color-bg)"),s.select(".domain").attr("stroke","var(--color-bg)")}return Ve(()=>{n()}),(s,h)=>(l(),m("g",{id:"PGSocAxis",class:"axis",transform:"translate("+(s.width-20)+",0)"},null,8,jr))}}),Fr=t=>(oe("data-v-7b8949f3"),t=t(),re(),t),Nr={class:"d-flex align-self-top justify-content-center align-items-center"},Hr={class:"input-group input-group-xs"},Rr={key:0,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},Jr={class:"dropdown-menu"},qr={class:"table optiontable"},Yr=["onClick"],Qr={key:1,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},Zr={class:"dropdown-menu"},Xr={class:"table optiontable"},Kr=["onClick"],en={key:2,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},tn={class:"dropdown-menu"},an={class:"table optiontable"},on=["onClick"],rn=Fr(()=>o("span",{class:"fa-solid fa-circle-check"},null,-1)),nn=[rn],sn=O({__name:"DateInput",props:{modelValue:{type:Date,required:!0},mode:{type:String,default:"day"}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=new Date().getFullYear();let n=Array.from({length:10},(L,E)=>r-E);const s=X(!0),h=e,g=[[0,1,2,3],[4,5,6,7],[8,9,10,11]],c=X(a.modelValue.getDate()),u=X(a.modelValue.getMonth()),d=X(a.modelValue.getFullYear()),C=p(()=>{const E=new Date(d.value,u.value,1).getDay();let T=0;switch(u.value){case 1:case 3:case 5:case 7:case 8:case 10:case 12:T=31;break;case 4:case 6:case 9:case 11:T=30;break;case 2:Math.trunc(d.value/4)*4==d.value&&(T=29)}let q=[],I=[0,0,0,0,0,0,0],H=E;for(let P=0;P<T;P++)I[H]=P+1,H==6?(q.push(I),I=[0,0,0,0,0,0,0],H=0):H++;return H<8&&q.push(I),q});function J(){h("update:modelValue",new Date(d.value,u.value,c.value)),s.value=!1}return(L,E)=>(l(),m("span",Nr,[o("div",Hr,[a.mode=="day"||a.mode=="today"?(l(),m("button",Rr,x(c.value),1)):w("",!0),o("div",Jr,[o("table",qr,[(l(!0),m(G,null,K(C.value,(T,q)=>(l(),m("tr",{key:q,class:""},[(l(!0),m(G,null,K(T,(I,H)=>(l(),m("td",{key:H},[I!=0?(l(),m("span",{key:0,type:"button",class:"btn optionbutton",onClick:P=>c.value=I},x(I),9,Yr)):w("",!0)]))),128))]))),128))])]),a.mode!="year"&&a.mode!="live"?(l(),m("button",Qr,x(u.value+1),1)):w("",!0),o("div",Zr,[o("table",Xr,[(l(),m(G,null,K(g,(T,q)=>o("tr",{key:q,class:""},[(l(!0),m(G,null,K(T,(I,H)=>(l(),m("td",{key:H,class:"p-0 m-0"},[o("span",{type:"button",class:"btn btn-sm optionbutton",onClick:P=>u.value=I},x(I+1),9,Kr)]))),128))])),64))])]),a.mode!="live"?(l(),m("button",en,x(d.value),1)):w("",!0),o("div",tn,[o("table",an,[(l(!0),m(G,null,K(i(n),(T,q)=>(l(),m("tr",{key:q,class:""},[o("td",null,[o("span",{type:"button",class:"btn optionbutton",onClick:I=>d.value=T},x(T),9,on)])]))),128))])]),a.mode!="live"?(l(),m("button",{key:3,class:"button-outline-secondary",type:"button",onClick:J},nn)):w("",!0)])]))}}),U=(t,e)=>{const a=t.__vccOpts||t;for(const[r,n]of e)a[r]=n;return a},ln=U(sn,[["__scopeId","data-v-7b8949f3"]]),cn={class:"btn-group m-0",role:"group","aria-label":"radiobar"},dn=["id","value"],un=O({__name:"RadioBarInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=p({get(){return a.modelValue},set(g){r("update:modelValue",g)}});function s(g){let c=a.options[g].color?a.options[g].color:"var(--color-fg)";return a.options[g].active?{color:"var(--color-bg)",background:c}:{color:c}}function h(g){let c=g.target;for(;c&&!c.value&&c.parentElement;)c=c.parentElement;c.value&&(n.value=c.value)}return(g,c)=>(l(),m("div",null,[o("div",cn,[(l(!0),m(G,null,K(g.options,(u,d)=>(l(),m("button",{id:"radio-"+u.value,key:d,class:N(["btn btn-outline-secondary btn-sm radiobutton mx-0 mb-0 px-2",u.value==n.value?"active":""]),value:u.value,style:Z(s(d)),onClick:h},[o("span",{style:Z(s(d))},[u.icon?(l(),m("i",{key:0,class:N(["fa-solid",u.icon])},null,2)):w("",!0),z(" "+x(u.text),1)],4)],14,dn))),128))])]))}}),Pa=U(un,[["__scopeId","data-v-82ab6829"]]),Mt=t=>(oe("data-v-d75ec1a4"),t=t(),re(),t),hn=Mt(()=>o("i",{class:"fa-solid fa-xl fa-chevron-circle-up"},null,-1)),pn=[hn],gn=Mt(()=>o("span",{class:"fa-solid fa-xl fa-chevron-circle-left arrowButton"},null,-1)),mn=[gn],vn=Mt(()=>o("span",{class:"fa-solid fa-xl fa-gear"},null,-1)),fn=[vn],_n=Mt(()=>o("span",{class:"fa-solid fa-xl fa-circle-check"},null,-1)),bn=[_n],yn=O({__name:"PgSelector",props:{widgetid:{},showLeftButton:{type:Boolean},showRightButton:{type:Boolean},ignoreLive:{type:Boolean}},emits:["shiftLeft","shiftRight","shiftUp","shiftDown"],setup(t){const e=t,a=X(0),r=p(()=>{if(f.waitForData)return"Lädt";switch(f.graphMode){case"live":return e.ignoreLive?"heute":`${pe.duration} min`;case"today":return"heute";case"day":return le.date.getDate()+"."+(le.date.getMonth()+1)+".";case"month":return er(Ae.month-1,Ae.year);case"year":return Fe.year.toString();default:return"???"}}),n=["live","today","day","month","year"],s=["Live","Heute","Tag","Monat","Jahr"],h=p({get(){return f.graphMode},set(H){switch(H){case"day":C();break;case"today":J();break;case"live":d();break;case"month":L();break;case"year":E()}}}),g=p(()=>{switch(f.graphMode){case"live":case"today":return le.getDate();case"month":return Ae.getDate();default:return le.getDate()}});function c(H){ia(H)}function u(){a.value+=1,a.value>2&&(a.value=0)}function d(){f.graphMode!="live"&&(f.graphMode="live",me())}function C(){f.graphMode!="day"&&f.graphMode!="today"&&(f.graphMode="day",me())}function J(){f.graphMode!="today"&&(f.graphMode="today",ia(new Date),me())}function L(){f.graphMode!="month"&&(f.graphMode="month",me())}function E(){f.graphMode!="year"&&(f.graphMode="year",me())}const T=p(()=>a.value>0?{border:"1px solid var(--color-frame)"}:""),q=p(()=>a.value==1?"justify-content-between":"justify-content-end"),I=p(()=>a.value==1?"justify-content-between":"justify-content-center");return(H,P)=>(l(),m("div",{class:"d-flex flex-column justify-content-center pgselector rounded",style:Z(T.value)},[a.value==2?(l(),$(Pa,{key:0,id:"pgm2",modelValue:h.value,"onUpdate:modelValue":P[0]||(P[0]=k=>h.value=k),class:"m-2",options:n.map((k,M)=>({text:s[M],value:k,color:"var(--color-menu)",active:k==i(f).graphMode}))},null,8,["modelValue","options"])):w("",!0),a.value==1?(l(),m("span",{key:1,type:"button",class:N(["arrowButton d-flex align-self-center mb-3 mt-3",{disabled:!e.showLeftButton}]),onClick:P[1]||(P[1]=k=>H.$emit("shiftUp"))},pn,2)):w("",!0),o("div",{class:N(["d-flex align-items-center",I.value])},[a.value==1?(l(),m("span",{key:0,type:"button",class:N(["p-1",{disabled:!e.showLeftButton}]),onClick:P[2]||(P[2]=k=>H.$emit("shiftLeft"))},mn,2)):w("",!0),a.value<2?(l(),m("span",{key:1,type:"button",class:"btn-outline-secondary p-2 px-3 badge rounded-pill datebadge",onClick:u},x(r.value),1)):w("",!0),a.value==2?(l(),$(ln,{key:2,"model-value":g.value,mode:i(f).graphMode,"onUpdate:modelValue":c},null,8,["model-value","mode"])):w("",!0),a.value==1?(l(),m("span",{key:3,id:"graphRightButton",type:"button",class:N(["arrowButton fa-solid fa-xl fa-chevron-circle-right p-1",{disabled:!e.showRightButton}]),onClick:P[3]||(P[3]=k=>H.$emit("shiftRight"))},null,2)):w("",!0)],2),o("div",{class:N(["d-flex align-items-center",q.value])},[a.value==1?(l(),m("span",{key:0,type:"button",class:"p-1",onClick:u},fn)):w("",!0),a.value==1?(l(),m("span",{key:1,id:"graphLeftButton",type:"button",class:N(["arrowButton fa-solid fa-xl fa-chevron-circle-down p-1",{disabled:!e.showLeftButton}]),onClick:P[4]||(P[4]=k=>H.$emit("shiftDown"))},null,2)):w("",!0),a.value>0?(l(),m("span",{key:2,type:"button",class:"p-1",onClick:P[5]||(P[5]=k=>a.value=0)},bn)):w("",!0)],2)],4))}}),Ba=U(yn,[["__scopeId","data-v-d75ec1a4"]]),wn=["x","fill"],kn=["x"],Ie=O({__name:"PgToolTipLine",props:{cat:{},name:{},indent:{},power:{},width:{}},setup(t){const e=t;return(a,r)=>(l(),m(G,null,[a.power>0?(l(),m("tspan",{key:0,x:a.indent,dy:"1.3em",class:N(a.name?"":"fas"),fill:i(ce)[a.cat].color},x(a.name?a.name:i(ce)[a.cat].icon)+"   ",11,wn)):w("",!0),o("tspan",{"text-anchor":"end",x:a.width-a.indent},[e.power>0?(l(),$(vt,{key:0,watt:a.power*1e3},null,8,["watt"])):w("",!0)],8,kn)],64))}}),Sn=["transform"],xn=["width","height"],$n={"text-anchor":"start",x:"5",y:"20","font-size":"16",fill:"var(--color-fg)"},Mn=["x"],In=o("line",{y:"120",x1:"5",x2:"100",stroke:"var(--color-fg)","stroke-width":"1"},null,-1),Cn=O({__name:"PgToolTipItem",props:{entry:{},boxwidth:{},xScale:{type:[Function,Object]}},setup(t){const e=t,a=p(()=>Object.values(e.entry).filter(c=>c>0).length),r=p(()=>a.value*16),n=p(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("pv")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:Ue.value.get(c)?g(Ue.value.get(c)):"Wechselr.",id:c}))),s=p(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("cp")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:Ue.value.get(c)?g(Ue.value.get(c)):"Ladep.",id:c}))),h=p(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("sh")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:Ue.value.get(c)?g(Ue.value.get(c)):"Gerät",id:c})));function g(c){return c.length>6?c.slice(0,6)+"...":c}return(c,u)=>(l(),m("g",{class:"ttmessage",transform:"translate("+c.xScale(c.entry.date)+",0)"},[o("rect",{rx:"5",width:c.boxwidth,height:r.value,fill:"var(--color-bg)",opacity:"80%",stroke:"var(--color-menu)"},null,8,xn),o("text",$n,[o("tspan",{"text-anchor":"middle",x:c.boxwidth/2,dy:"0em"},x(i(ot)("%H:%M")(new Date(c.entry.date))),9,Mn),In,b(Ie,{cat:"evuIn",indent:5,power:c.entry.evuIn,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"batOut",indent:5,power:c.entry.batOut,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"pv",indent:5,power:c.entry.pv,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,K(n.value,d=>(l(),$(Ie,{key:d.id,cat:"pv",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Ie,{cat:"house",indent:5,power:c.entry.house,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"charging",indent:5,power:c.entry.charging,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,K(s.value,d=>(l(),$(Ie,{key:d.id,cat:"charging",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Ie,{cat:"devices",indent:5,power:c.entry.devices,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,K(h.value,d=>(l(),$(Ie,{key:d.id,cat:"devices",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Ie,{cat:"batIn",indent:5,power:c.entry.batIn,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"evuOut",indent:5,power:c.entry.evuOut,width:c.boxwidth},null,8,["power","width"])])],8,Sn))}}),Pn=["origin","transform"],Bn=["x","height","width"],da=140,Vn=O({__name:"PgToolTips",props:{width:{},height:{},margin:{},data:{}},setup(t){const e=t,a=p(()=>{const s=Be(e.data,h=>new Date(h.date));return s[0]&&s[1]?Ut().domain(s).range([0,e.width-e.margin.right]):Qe().range([0,0])}),r=p(()=>{const s=Be(e.data,h=>new Date(h.date));return s[0]&&s[1]?Ut().domain(s).range([0,e.width-e.margin.right-da]):Qe().range([0,0])}),n=p(()=>((f.graphMode=="day"||f.graphMode=="today")&&(a.value.range(He.value),de("g#pgToolTips").selectAll("g.ttarea").select("rect").attr("x",(s,h)=>e.data.length>h?a.value(e.data[h].date):0).attr("width",e.data.length>0?(He.value[1]-He.value[0])/e.data.length:0)),"PgToolTips.vue:autozoom"));return(s,h)=>(l(),m("g",{id:"pgToolTips",origin:n.value,transform:"translate("+s.margin.left+","+s.margin.top+")"},[(l(!0),m(G,null,K(s.data,g=>(l(),m("g",{key:g.date,class:"ttarea"},[o("rect",{x:a.value(g.date),y:"0",height:s.height,class:"ttrect",width:i(f).data.length>0?s.width/i(f).data.length:0,opacity:"1%",fill:"var(--color-charging)"},null,8,Bn),b(Cn,{entry:g,boxwidth:da,"x-scale":r.value},null,8,["entry","x-scale"])]))),128))],8,Pn))}}),Va=t=>(oe("data-v-9dcdaf2b"),t=t(),re(),t),Ln={class:"d-flex justify-content-end"},On=Va(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-magnifying-glass"},null,-1)),An=[On],Tn={id:"powergraph",class:"p-0 m-0"},Dn=["viewBox"],Wn=["transform"],zn=["x","y"],Gn=Va(()=>o("tspan",{fill:"var(--color-menu)",class:"fas fa-lg"},x(""),-1)),En=[Gn],jn=2,Un="Leistung / Ladestand ",Fn=O({__name:"PowerGraph",setup(t){function e(){let h=v.usageStackOrder+1;h>jn&&(h=0),v.usageStackOrder=h,Ao(!0)}function a(h){const g=[[0,W.top],[be,xe-W.top]];h.call(no().scaleExtent([1,8]).translateExtent([[0,0],[be,xe]]).extent(g).filter(n).on("zoom",r))}function r(h){ka.value=h.transform}function n(h){return h.preventDefault(),(!h.ctrlKey||h.type==="wheel")&&!h.button}function s(){v.zoomGraph=!v.zoomGraph}return Ve(()=>{const h=de("svg#powergraph");a(h)}),(h,g)=>(l(),$($t,{"full-width":!0},{title:y(()=>[z(x(Un))]),buttons:y(()=>[o("div",Ln,[b(Ba,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!1,onShiftLeft:i(Kt),onShiftRight:i(Sa),onShiftUp:i(xa),onShiftDown:i($a)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"]),i(Re)?(l(),m("span",{key:0,type:"button",class:"ms-1 p-0 pt-1",onClick:s},An)):w("",!0)])]),default:y(()=>[gt(o("figure",Tn,[(l(),m("svg",{id:"powergraph",viewBox:"0 0 "+i(be)+" "+i(xe)},[b(Ir,{width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W)},null,8,["width","height","margin"]),b(Pr,{width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),"stack-order":i(v).usageStackOrder},null,8,["width","height","margin","stack-order"]),b(Wr,{width:i(be)-i(W).left-2*i(W).right,height:i(xe)-i(W).top-i(W).bottom,margin:i(W),"graph-data":i(f)},null,8,["width","height","margin","graph-data"]),o("g",{transform:"translate("+i(W).left+","+i(W).top+")"},[(i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live")&&Object.values(i(V)).length>0?(l(),$(Bt,{key:0,width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),order:0},null,8,["width","height","margin"])):w("",!0),(i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live")&&Object.values(i(V)).length>1?(l(),$(Bt,{key:1,width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),order:1},null,8,["width","height","margin"])):w("",!0),(i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live")&&i(ue).isBatteryConfigured?(l(),$(Bt,{key:2,width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),order:2},null,8,["width","height","margin"])):w("",!0),i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live"?(l(),$(Ur,{key:3,width:i(be)-i(W).left-i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W)},null,8,["width","height","margin"])):w("",!0)],8,Wn),i(f).graphMode=="day"||i(f).graphMode=="today"?(l(),$(Vn,{key:0,width:i(be)-i(W).left-i(W).right,height:i(xe)-i(W).top-i(W).bottom,margin:i(W),data:i(f).data},null,8,["width","height","margin","data"])):w("",!0),o("g",{id:"button",onClick:e},[o("text",{x:i(be)-10,y:i(xe)-10,color:"var(--color-menu)","text-anchor":"end"},En,8,zn)])],8,Dn))],512),[[ro,i(f).data.length>0]])]),_:1}))}}),Nn=U(Fn,[["__scopeId","data-v-9dcdaf2b"]]),Hn=["id"],Rn=["x","width","height","fill"],Jn=["x","width","height"],qn=["x","y","width","height"],Yn=O({__name:"EmBar",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=p(()=>e.height-e.yScale(e.item.energy)-e.margin.top-e.margin.bottom),r=p(()=>{let s=0;return e.item.energyPv>0&&(s=e.height-e.yScale(e.item.energyPv)-e.margin.top-e.margin.bottom),s>a.value&&(s=a.value),s}),n=p(()=>{let s=0;return e.item.energyBat>0&&(s=e.height-e.yScale(e.item.energyBat)-e.margin.top-e.margin.bottom),s>a.value&&(s=a.value),s});return(s,h)=>(l(),m("g",{id:"bar-"+e.item.name,transform:"scale(1,-1) translate (0,-445)"},[o("rect",{class:"bar",x:e.xScale(s.item.name),y:"0",width:e.xScale.bandwidth(),height:a.value,fill:s.item.color},null,8,Rn),o("rect",{class:"bar",x:e.xScale(s.item.name)+e.xScale.bandwidth()/6,y:"0",width:e.xScale.bandwidth()*2/3,height:r.value,fill:"var(--color-pv)","fill-opacity":"66%"},null,8,Jn),o("rect",{class:"bar",x:e.xScale(s.item.name)+e.xScale.bandwidth()/6,y:r.value,width:e.xScale.bandwidth()*2/3,height:n.value,fill:"var(--color-battery)","fill-opacity":"66%"},null,8,qn)],8,Hn))}}),Qn={id:"emBargraph"},Zn=o("animateTransform",{"attribute-name":"transform",type:"scale",from:"1 0",to:"1 1",begin:"0s",dur:"2s"},null,-1),Xn=O({__name:"EMBarGraph",props:{plotdata:{},xScale:{},yScale:{},margin:{},height:{}},setup(t){const e=t;function a(n){if(n.name=="PV"){const s=f.graphMode=="live"||f.graphMode=="day"?R:A.items,g=(f.graphMode=="live"||f.graphMode=="day"?j:A.items).evuOut.energy,c=s.pv.energy;return Math.round((c-g)/c*100)}else if(n.name=="Netz"){const s=f.graphMode=="live"||f.graphMode=="day"?R:A.items,h=f.graphMode=="live"||f.graphMode=="day"?j:A.items,g=h.evuOut.energy,c=s.evuIn.energy,u=s.pv.energy,d=s.batOut.energy,C=h.batIn.energy;return Math.round((u+d-g-C)/(u+d+c-g-C)*100)}else return n.pvPercentage}function r(n){return n.name=="PV"?"Eigen":"Aut"}return(n,s)=>(l(),m("g",Qn,[(l(!0),m(G,null,K(e.plotdata,(h,g)=>(l(),m("g",{key:g},[b(Yn,{item:h,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":r(h),autarchy:a(h)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128)),Zn]))}}),Kn=["origin"],es=O({__name:"EMYAxis",props:{yScale:{type:[Function,Object]},width:{},fontsize:{}},setup(t){const e=t,a=p(()=>pt(e.yScale).tickFormat(s=>n(s)).ticks(6).tickSizeInner(-e.width)),r=p(()=>{const s=de("g#emYAxis");return s.attr("class","axis").call(a.value),s.append("text").attr("y",6).attr("dy","0.71em").attr("text-anchor","end").text("energy"),s.selectAll(".tick").attr("font-size",e.fontsize),v.showGrid?s.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):s.selectAll(".tick line").attr("stroke","var(--color-bg)"),s.select(".domain").attr("stroke","var(--color-bg)"),"emYAxis.vue"});function n(s){return s>0?f.graphMode=="year"?(s/1e6).toString():(s/1e3).toString():""}return(s,h)=>(l(),m("g",{id:"emYAxis",class:"axis",origin:r.value},null,8,Kn))}}),ts=["id"],as=["x","y","font-size"],os=["x","y","font-size","fill"],rs=["x","y","font-size","fill"],ns=O({__name:"EmLabel",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=p(()=>e.autarchy?e.yScale(e.item.energy)-25:e.yScale(e.item.energy)-10),r=p(()=>{let c=16,u=e.barcount;return u<=5?c=16:u==6?c=14:u>6&&u<=8?c=13:u==9?c=11:u==10?c=10:c=9,c}),n=p(()=>{let c=12,u=e.barcount;return u<=5?c=12:u==6?c=11:u>6&&u<=8||u==9?c=8:u==10?c=7:c=6,c});function s(c,u){return u.length>n.value?u.substring(0,n.value)+".":u}function h(){return e.autarchy?e.autText+": "+e.autarchy.toLocaleString(void 0)+" %":""}function g(){return"var(--color-pv)"}return(c,u)=>(l(),m("g",{id:"barlabel-"+e.item.name},[o("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:a.value,"font-size":r.value,"text-anchor":"middle",fill:"var(--color-menu)"},x(i(ht)(c.item.energy,i(v).decimalPlaces,!1)),9,as),o("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:e.yScale(c.item.energy)-10,"font-size":r.value-2,"text-anchor":"middle",fill:g()},x(h()),9,os),o("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:e.height-e.margin.bottom-5,"font-size":r.value,"text-anchor":"middle",fill:c.item.color,class:N(c.item.icon.length<=2?"fas":"")},x(s(c.item.name,c.item.icon)),11,rs)],8,ts))}}),ss={id:"emBarLabels"},is=O({__name:"EMLabels",props:{plotdata:{},xScale:{},yScale:{},height:{},margin:{}},setup(t){const e=t;function a(n){if(n.name=="PV"){const s=f.graphMode=="live"||f.graphMode=="today"?R:A.items,g=(f.graphMode=="live"||f.graphMode=="today"?j:A.items).evuOut.energy,c=s.pv.energy;return Math.round((c-g)/c*100)}else if(n.name=="Netz"){const s=f.graphMode=="live"||f.graphMode=="today"?R:A.items,h=f.graphMode=="live"||f.graphMode=="today"?j:A.items,g=h.evuOut.energy,c=s.evuIn.energy,u=s.pv.energy,d=s.batOut.energy,C=h.batIn.energy;return u+d-g-C>0?Math.round((u+d-g-C)/(u+d+c-g-C)*100):0}else return n.pvPercentage}function r(n){return n.name=="PV"?"Eigen":"Aut"}return(n,s)=>(l(),m("g",ss,[(l(!0),m(G,null,K(e.plotdata,(h,g)=>(l(),m("g",{key:g},[b(ns,{item:h,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":r(h),autarchy:a(h)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128))]))}}),ls={id:"energymeter",class:"p-0 m-0"},cs={viewBox:"0 0 500 500"},ds=["transform"],us=["x"],hs={key:0},ua=500,Vt=500,ha=12,ps="Energie",gs=O({__name:"EnergyMeter",setup(t){const e={top:25,bottom:30,left:25,right:0},a=p(()=>{let g=Object.values(R),c=s.value;const u=A.items;let d=[];switch(v.debug&&h(),kt.value==!0&&(kt.value=!1),f.graphMode){default:case"live":case"today":d=g.concat(c);break;case"day":case"month":case"year":Object.values(u).length==0?dt.value=!0:(dt.value=!1,d=[u.evuIn,u.pv,u.evuOut,u.batOut,u.charging],Object.values(V).length>1&&Object.keys(V).forEach(C=>{u["cp"+C]&&d.push(u["cp"+C])}),d.push(u.devices),ae.forEach((C,J)=>{C.showInGraph&&u["sh"+J]&&d.push(u["sh"+J])}),d=d.concat([u.batIn,u.house]))}return d.filter(C=>C.energy&&C.energy>0)}),r=p(()=>Ft().range([0,ua-e.left-e.right]).domain(a.value.map(g=>g.name)).padding(.4)),n=p(()=>Ze().range([Vt-e.bottom-e.top,15]).domain([0,so(a.value,g=>g.energy)])),s=p(()=>{const g=Object.values(V).length,c=[...ae.values()].filter(d=>d.configured).length;let u=j;return[...[u.evuOut,u.charging].concat(g>1?Object.values(V).map(d=>d.toPowerItem()):[]),...[u.devices].concat(c>1?[...ae.values()].filter(d=>d.configured&&d.showInGraph):[]).concat([j.batIn,j.house])]});function h(){console.debug(["source summary:",R]),console.debug(["usage details:",s.value]),console.debug(["historic summary:",A])}return(g,c)=>(l(),$($t,{"full-width":!0},{title:y(()=>[z(x(ps))]),buttons:y(()=>[b(Ba,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!0,onShiftLeft:i(Kt),onShiftRight:i(Sa),onShiftUp:i(xa),onShiftDown:i($a)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])]),default:y(()=>[o("figure",ls,[(l(),m("svg",cs,[o("g",{transform:"translate("+e.left+","+e.top+")"},[b(Xn,{plotdata:a.value,"x-scale":r.value,"y-scale":n.value,height:Vt,margin:e},null,8,["plotdata","x-scale","y-scale"]),b(es,{"y-scale":n.value,width:ua,fontsize:ha,config:i(v)},null,8,["y-scale","config"]),o("text",{x:-e.left,y:"-15",fill:"var(--color-axis)","font-size":ha},x(i(f).graphMode=="year"?"MWh":"kWh"),9,us),b(is,{plotdata:a.value,"x-scale":r.value,"y-scale":n.value,height:Vt,margin:e,config:i(v)},null,8,["plotdata","x-scale","y-scale","config"])],8,ds)]))]),i(dt)?(l(),m("p",hs,"No data")):w("",!0)]),_:1}))}}),ms={class:"d-flex flex-column align-items-center justify-content-start infoitem"},vs=O({__name:"InfoItem",props:{heading:{},small:{type:Boolean}},setup(t){const e=t,a=p(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-small)"}),r=p(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-normal)"}),n=p(()=>e.small?"mt-0":"mt-1");return(s,h)=>(l(),m("span",ms,[o("span",{class:N(["d-flex heading",n.value]),style:Z(a.value)},x(e.heading),7),o("span",{class:"d-flex my-0 me-0 align-items-center content",style:Z(r.value)},[he(s.$slots,"default",{},void 0,!0)],4)]))}}),Q=U(vs,[["__scopeId","data-v-f6af00e8"]]),fs={class:"d-flex justify-content-between align-items-center titlerow"},_s={class:"buttonrea d-flex float-right justify-content-end align-items-center"},bs={class:"contentrow grid-col-12"},ys=O({__name:"WbSubwidget",props:{titlecolor:{},fullwidth:{type:Boolean},small:{type:Boolean}},setup(t){const e=t,a=p(()=>{let n={"font-weight":"bold",color:"var(--color-fg)","font-size":"var(--font-normal)"};return e.titlecolor&&(n.color=e.titlecolor),e.small&&(n["font-size"]="var(--font-verysmall)"),n}),r=p(()=>e.fullwidth?"grid-col-12":"grid-col-4");return(n,s)=>(l(),m("div",{class:N(["wb-subwidget px-3 pt-2 my-0",r.value])},[o("div",fs,[o("div",{class:"d-flex widgetname p-0 m-0",style:Z(a.value)},[he(n.$slots,"title",{},void 0,!0)],4),o("div",_s,[he(n.$slots,"buttons",{},void 0,!0)])]),o("div",bs,[he(n.$slots,"default",{},void 0,!0)])],2))}}),Xe=U(ys,[["__scopeId","data-v-e989060d"]]),ws=t=>(oe("data-v-b935eb33"),t=t(),re(),t),ks={class:"grid-col-12 mt-2 mb-0 px-0 py-0 configitem"},Ss={class:"titlecolumn m-0 p-0 d-flex align-items-center"},xs=ws(()=>o("i",{class:"me-1 fa-solid fa-sm fa-circle-info"},null,-1)),$s={class:"ms-1 mb-2 p-0 pt-2 d-flex justify-content-stretch align-items-center"},Ms={class:"justify-content-stretch d-flex"},Is=O({__name:"ConfigItem",props:{title:{},infotext:{},icon:{},fullwidth:{type:Boolean}},setup(t){const e=t,a=X(!1);function r(){a.value=!a.value}const n=p(()=>{let s={color:"var(--color-charging)"};return a.value&&(s.color="var(--color-battery)"),s});return(s,h)=>(l(),$(Xe,{fullwidth:!!s.fullwidth},{default:y(()=>[o("div",ks,[o("div",Ss,[o("span",{class:"d-flex align-items-baseline m-0 p-0",onClick:r},[e.icon?(l(),m("i",{key:0,class:N(["fa-solid fa-sm m-0 p-0 me-2 item-icon",e.icon])},null,2)):w("",!0),z(" "+x(s.title),1)]),o("span",null,[e.infotext?(l(),m("i",{key:0,class:"fa-solid fa-sm fa-circle-question ms-4 me-2",style:Z(n.value),onClick:r},null,4)):w("",!0)])]),a.value?(l(),m("p",{key:0,class:"infotext shadow m-0 ps-2 mb-1 p-1",onClick:r},[xs,z(" "+x(s.infotext),1)])):w("",!0),o("div",$s,[o("span",Ms,[he(s.$slots,"default",{},void 0,!0)])])])]),_:3},8,["fullwidth"]))}}),F=U(Is,[["__scopeId","data-v-b935eb33"]]),La=t=>(oe("data-v-17a828b1"),t=t(),re(),t),Cs={class:"d-flex flex-column"},Ps={class:"d-flex flex-fill justify-content-between align-items-center"},Bs=La(()=>o("i",{class:"fa fa-xl fa-minus-square me-2"},null,-1)),Vs=[Bs],Ls=["id","min","max","step"],Os=La(()=>o("i",{class:"fa fa-xl fa-plus-square ms-2"},null,-1)),As=[Os],Ts={class:"d-flex justify-content-between align-items-center"},Ds={class:"minlabel ps-4"},Ws={class:"valuelabel"},zs={class:"maxlabel pe-4"},Gs=O({__name:"RangeInput",props:{id:{},min:{},max:{},step:{},unit:{},decimals:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=a.decimals??0,n=e,s=p({get(){return Math.round(a.modelValue*Math.pow(10,r))/Math.pow(10,r)},set(c){n("update:modelValue",c)}});function h(){s.value>a.min&&(s.value=Math.round((s.value-a.step)*Math.pow(10,r))/Math.pow(10,r))}function g(){s.value<a.max&&(s.value=Math.round((s.value+a.step)*Math.pow(10,r))/Math.pow(10,r))}return(c,u)=>(l(),m("span",Cs,[o("span",Ps,[o("span",{type:"button",class:"minusButton",onClick:h},Vs),gt(o("input",{id:c.id,"onUpdate:modelValue":u[0]||(u[0]=d=>s.value=d),type:"range",class:"form-range flex-fill",min:c.min,max:c.max,step:c.step},null,8,Ls),[[io,s.value,void 0,{number:!0}]]),o("span",{type:"button",class:"plusButton",onClick:g},As)]),o("span",Ts,[o("span",Ds,x(c.min),1),o("span",Ws,x(s.value)+" "+x(c.unit),1),o("span",zs,x(c.max),1)])]))}}),De=U(Gs,[["__scopeId","data-v-17a828b1"]]),Es=["id","value"],js=O({__name:"RadioInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=p({get(){return a.modelValue},set(g){r("update:modelValue",g)}});function s(g){return a.options[g][2]?{color:a.options[g][2]}:{color:"var(--color-fg)"}}function h(g){let c=g.target;for(;c&&!c.value&&c.parentElement;)c=c.parentElement;c.value&&(n.value=c.value)}return(g,c)=>(l(),m("div",null,[(l(!0),m(G,null,K(g.options,(u,d)=>(l(),m("button",{id:"radio-"+u[1],key:d,class:N(["btn btn-outline-secondary radiobutton me-2 mb-0 px-2",u[1]==n.value?"active":""]),value:u[1],style:Z(s(d)),onClick:h},[o("span",{style:Z(s(d))},[u[3]?(l(),m("i",{key:0,class:N(["fa-solid",u[3]])},null,2)):w("",!0),z(" "+x(u[0]),1)],4)],14,Es))),128))]))}}),We=U(js,[["__scopeId","data-v-df222cbe"]]),Us=t=>(oe("data-v-0303d179"),t=t(),re(),t),Fs={class:"mt-2"},Ns=Us(()=>o("p",{class:"heading ms-1"},"Sofortladen:",-1)),Hs={key:0},Rs=O({__name:"CPConfigInstant",props:{chargepoint:{}},setup(t){const a=X(t.chargepoint),r=[{name:"keine",id:"none"},{name:"EV-SoC",id:"soc"},{name:"Energiemenge",id:"amount"}],n=p({get(){return a.value.instantMaxEnergy/1e3},set(s){a.value.instantMaxEnergy=s*1e3}});return(s,h)=>(l(),m("div",Fs,[Ns,b(F,{title:"Stromstärke",icon:"fa-bolt",fullwidth:!0},{default:y(()=>[b(De,{id:"targetCurrent",modelValue:a.value.instantTargetCurrent,"onUpdate:modelValue":h[0]||(h[0]=g=>a.value.instantTargetCurrent=g),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1}),a.value.instantChargeLimitMode!="none"?(l(),m("hr",Hs)):w("",!0),b(F,{title:"Begrenzung",icon:"fa-hand",fullwidth:!0},{default:y(()=>[b(We,{modelValue:a.value.instantChargeLimitMode,"onUpdate:modelValue":h[1]||(h[1]=g=>a.value.instantChargeLimitMode=g),options:r.map(g=>[g.name,g.id])},null,8,["modelValue","options"])]),_:1}),a.value.instantChargeLimitMode=="soc"?(l(),$(F,{key:1,title:"Maximaler SoC",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(De,{id:"maxSoc",modelValue:a.value.instantTargetSoc,"onUpdate:modelValue":h[2]||(h[2]=g=>a.value.instantTargetSoc=g),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),a.value.instantChargeLimitMode=="amount"?(l(),$(F,{key:2,title:"Zu ladende Energie",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(De,{id:"maxEnergy",modelValue:n.value,"onUpdate:modelValue":h[3]||(h[3]=g=>n.value=g),min:0,max:100,step:1,unit:"kWh"},null,8,["modelValue"])]),_:1})):w("",!0)]))}}),Js=U(Rs,[["__scopeId","data-v-0303d179"]]),qs={class:"form-check form-switch"},ie=O({__name:"SwitchInput",props:{modelValue:{type:Boolean},onColor:{},offColor:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=p({get(){return a.modelValue},set(h){r("update:modelValue",h)}}),s=p(()=>n.value?{"background-color":"green"}:{"background-color":"white"});return(h,g)=>(l(),m("div",qs,[gt(o("input",{"onUpdate:modelValue":g[0]||(g[0]=c=>n.value=c),class:"form-check-input",type:"checkbox",role:"switch",style:Z(s.value)},null,4),[[_a,n.value]])]))}}),Ys=t=>(oe("data-v-faa69015"),t=t(),re(),t),Qs={class:"pt-2"},Zs=Ys(()=>o("p",{class:"heading ms-1"},"PV-Laden:",-1)),Xs={key:3},Ks=O({__name:"CPConfigPv",props:{chargepoint:{}},setup(t){const a=X(t.chargepoint),r=p({get(){return a.value.pvMinCurrent>5},set(h){h?a.value.pvMinCurrent=6:a.value.pvMinCurrent=0}}),n=p({get(){return a.value.pvMinSoc>0},set(h){h?a.value.pvMinSoc=50:a.value.pvMinSoc=0}}),s=p({get(){return a.value.pvMaxSoc<=100},set(h){h?a.value.pvMaxSoc=100:a.value.pvMaxSoc=101}});return(h,g)=>(l(),m("div",Qs,[Zs,b(F,{title:"Ladestand begrenzen",icon:"fa-battery-three-quarters",fullwidth:!0},{default:y(()=>[b(ie,{id:"limitSoc",modelValue:s.value,"onUpdate:modelValue":g[0]||(g[0]=c=>s.value=c)},null,8,["modelValue"])]),_:1}),s.value?(l(),$(F,{key:0,title:"...auf maximal...",icon:"fa-battery-three-quarters",fullwidth:!0},{default:y(()=>[b(De,{id:"maxSoc",modelValue:a.value.pvMaxSoc,"onUpdate:modelValue":g[1]||(g[1]=c=>a.value.pvMaxSoc=c),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),b(F,{title:"Einspeisegrenze beachten",icon:"fa-hand",fullwidth:!0},{default:y(()=>[b(ie,{modelValue:a.value.pvFeedInLimit,"onUpdate:modelValue":g[2]||(g[2]=c=>a.value.pvFeedInLimit=c)},null,8,["modelValue"])]),_:1}),b(F,{title:"Mindest-Ladestand",icon:"fa-battery-half",infotext:i(Oe).minsoc,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:n.value,"onUpdate:modelValue":g[3]||(g[3]=c=>n.value=c)},null,8,["modelValue"])]),_:1},8,["infotext"]),n.value?(l(),$(F,{key:1,title:"...bis SoC",fullwidth:!0},{info:y(()=>[z(x(i(Oe).minsoc),1)]),default:y(()=>[b(De,{id:"minSoc",modelValue:a.value.pvMinSoc,"onUpdate:modelValue":g[4]||(g[4]=c=>a.value.pvMinSoc=c),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),n.value?(l(),$(F,{key:2,title:"...mit Ladestrom",fullwidth:!0},{default:y(()=>[b(De,{id:"minSocCurrent",modelValue:a.value.pvMinSocCurrent,"onUpdate:modelValue":g[5]||(g[5]=c=>a.value.pvMinSocCurrent=c),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):w("",!0),r.value||n.value?(l(),m("hr",Xs)):w("",!0),b(F,{title:"Minimaler Ladestrom",icon:"fa-bolt",infotext:i(Oe).minpv,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:r.value,"onUpdate:modelValue":g[6]||(g[6]=c=>r.value=c)},null,8,["modelValue"])]),_:1},8,["infotext"]),r.value?(l(),$(F,{key:4,title:"...bei Ladestrom (minimal)",fullwidth:!0},{default:y(()=>[b(De,{id:"minCurrent",modelValue:a.value.pvMinCurrent,"onUpdate:modelValue":g[7]||(g[7]=c=>a.value.pvMinCurrent=c),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):w("",!0)]))}}),ei=U(Ks,[["__scopeId","data-v-faa69015"]]),Oa=t=>(oe("data-v-e8f5ad9d"),t=t(),re(),t),ti=Oa(()=>o("p",{class:"heading ms-1 pt-2"},"Zielladen:",-1)),ai={class:"table table-borderless"},oi=Oa(()=>o("thead",null,[o("tr",null,[o("th",{class:"tableheader"},"Ziel"),o("th",{class:"tableheader"},"Limit"),o("th",{class:"tableheader"},"Zeit"),o("th",{class:"tableheader"},"Wiederholung"),o("th",{class:"tableheader"})])],-1)),ri={class:"tablecell"},ni={class:"tablecell"},si={class:"tablecell"},ii={class:"tablecell"},li={class:"tablecell left"},ci=["href"],di=O({__name:"CPConfigScheduled",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,r=p(()=>{let g=[];return lt[a.chargeTemplateId]&&(g=Object.values(lt[a.chargeTemplateId])),g});function n(g){return r.value[g].time}function s(g){return{color:r.value[g].active?"var(--color-switchGreen)":"var(--color-switchRed)"}}function h(g){return{"font-weight":r.value[g].active?"bold":"regular"}}return(g,c)=>(l(),m(G,null,[ti,o("table",ai,[oi,o("tbody",null,[(l(!0),m(G,null,K(r.value,(u,d)=>(l(),m("tr",{key:d,style:Z(h(d))},[o("td",ri,x(u.limit.soc_scheduled)+"%",1),o("td",ni,x(u.limit.soc_limit)+"%",1),o("td",si,x(n(d)),1),o("td",ii,x(e[u.frequency.selected]),1),o("td",li,[o("a",{href:"../../settings/#/VehicleConfiguration/charge_template/"+a.chargeTemplateId},[o("span",{class:N([u.active?"fa-toggle-on":"fa-toggle-off","fa"]),style:Z(s(d)),type:"button"},null,6)],8,ci)])],4))),128))])])],64))}}),ui=U(di,[["__scopeId","data-v-e8f5ad9d"]]),Aa=t=>(oe("data-v-192e287b"),t=t(),re(),t),hi=Aa(()=>o("p",{class:"heading ms-1 pt-2"},"Zeitpläne:",-1)),pi={class:"table table-borderless"},gi=Aa(()=>o("thead",null,[o("tr",null,[o("th",{class:"tableheader"},"Von"),o("th",{class:"tableheader"},"Bis"),o("th",{class:"tableheader"},"Ladestrom"),o("th",{class:"tableheader"},"Wiederholung"),o("th",{class:"tableheader right"})])],-1)),mi={class:"tablecell"},vi={class:"tablecell"},fi={class:"tablecell"},_i={class:"tablecell"},bi={class:"tablecell left"},yi=["href"],wi=O({__name:"CPConfigTimed",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,r=p(()=>ct[a.chargeTemplateId]?Object.values(ct[a.chargeTemplateId])??[]:[]);function n(h){return{color:r.value[h].active?"var(--color-switchGreen)":"var(--color-switchRed)"}}function s(h){return{"font-weight":r.value[h].active?"bold":"regular"}}return(h,g)=>(l(),m(G,null,[hi,o("table",pi,[gi,o("tbody",null,[(l(!0),m(G,null,K(r.value,(c,u)=>(l(),m("tr",{key:u,style:Z(s(u))},[o("td",mi,x(c.time[0]),1),o("td",vi,x(c.time[1]),1),o("td",fi,x(c.current)+" A",1),o("td",_i,x(e[c.frequency.selected]),1),o("td",bi,[o("a",{href:"../../settings/#/VehicleConfiguration/charge_template/"+a.chargeTemplateId},[o("span",{class:N([c.active?"fa-toggle-on":"fa-toggle-off","fa"]),style:Z(n(u)),type:"button"},null,6)],8,yi)])],4))),128))])])],64))}}),ki=U(wi,[["__scopeId","data-v-192e287b"]]),Si={class:"settingsheader mt-2 ms-1"},xi=O({__name:"CPConfigVehicle",props:{vehicleId:{}},setup(t){const e=t;return(a,r)=>(l(),m(G,null,[o("p",Si," Profile für "+x(i(Y)[e.vehicleId].name)+": ",1),b(F,{title:"Ladeprofil",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(Y)[e.vehicleId].chargeTemplateId,"onUpdate:modelValue":r[0]||(r[0]=n=>i(Y)[e.vehicleId].chargeTemplateId=n),modelModifiers:{number:!0},options:Object.keys(i(ye)).map(n=>[i(ye)[+n].name,n])},null,8,["modelValue","options"])]),_:1}),b(F,{title:"Fahrzeug-Vorlage",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(Y)[e.vehicleId].evTemplateId,"onUpdate:modelValue":r[1]||(r[1]=n=>i(Y)[e.vehicleId].evTemplateId=n),modelModifiers:{number:!0},options:Object.keys(i(Ht)).map(n=>[i(Ht)[+n].name,n])},null,8,["modelValue","options"])]),_:1})],64))}}),$i=U(xi,[["__scopeId","data-v-fcb57a44"]]),Mi={class:"settingsheader mt-2 ms-1"},Ii=O({__name:"CPChargeConfig",props:{chargepoint:{}},emits:["closeConfig"],setup(t){const a=t.chargepoint;return(r,n)=>(l(),m(G,null,[o("p",Mi," Ladeeinstellungen für "+x(i(a).vehicleName)+": ",1),b(F,{title:"Lademodus",icon:"fa-charging-station",infotext:i(Oe).chargemode,fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(a).chargeMode,"onUpdate:modelValue":n[0]||(n[0]=s=>i(a).chargeMode=s),options:Object.keys(i(ge)).map(s=>[i(ge)[s].name,s,i(ge)[s].color,i(ge)[s].icon])},null,8,["modelValue","options"])]),_:1},8,["infotext"]),b(F,{title:"Fahrzeug wechseln",icon:"fa-car",infotext:i(Oe).vehicle,fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(a).connectedVehicle,"onUpdate:modelValue":n[1]||(n[1]=s=>i(a).connectedVehicle=s),modelModifiers:{number:!0},options:Object.values(i(Y)).filter(s=>s.visible).map(s=>[s.name,s.id])},null,8,["modelValue","options"])]),_:1},8,["infotext"]),b(F,{title:"Sperren",icon:"fa-lock",infotext:i(Oe).locked,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:i(a).isLocked,"onUpdate:modelValue":n[2]||(n[2]=s=>i(a).isLocked=s)},null,8,["modelValue"])]),_:1},8,["infotext"]),b(F,{title:"Priorität",icon:"fa-star",infotext:i(Oe).priority,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:i(a).hasPriority,"onUpdate:modelValue":n[3]||(n[3]=s=>i(a).hasPriority=s)},null,8,["modelValue"])]),_:1},8,["infotext"]),b(F,{title:"Zeitplan",icon:"fa-clock",infotext:i(Oe).timeplan,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:i(a).timedCharging,"onUpdate:modelValue":n[4]||(n[4]=s=>i(a).timedCharging=s)},null,8,["modelValue"])]),_:1},8,["infotext"]),i(ue).isBatteryConfigured?(l(),$(F,{key:0,title:"PV-Priorität",icon:"fa-car-battery",infotext:i(Oe).pvpriority,fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(ue).pvBatteryPriority,"onUpdate:modelValue":n[5]||(n[5]=s=>i(ue).pvBatteryPriority=s),options:i(_o)},null,8,["modelValue","options"])]),_:1},8,["infotext"])):w("",!0),i(te).active?(l(),$(F,{key:1,title:"Strompreisbasiert laden",icon:"fa-money-bill",infotext:i(Oe).pricebased,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:i(a).etActive,"onUpdate:modelValue":n[6]||(n[6]=s=>i(a).etActive=s)},null,8,["modelValue"])]),_:1},8,["infotext"])):w("",!0)],64))}}),Ci=U(Ii,[["__scopeId","data-v-e348a34c"]]),Ta=t=>(oe("data-v-0a5353c2"),t=t(),re(),t),Pi=Ta(()=>o("p",{class:"settingsheader mt-2 ms-1"},"Preisbasiertes Laden:",-1)),Bi={class:"providername ms-1"},Vi=Ta(()=>o("hr",null,null,-1)),Li={class:"container"},Oi={id:"pricechart",class:"p-0 m-0"},Ai={viewBox:"0 0 400 300"},Ti=["id","origin","transform"],Di={key:0,class:"p-3"},Wi={key:1,class:"d-flex justify-content-end"},zi=["disabled"],nt=400,pa=250,ga=12,Gi=O({__name:"PriceChart",props:{chargepoint:{},globalview:{type:Boolean}},setup(t){const e=t;let a=e.chargepoint?X(e.chargepoint.etMaxPrice):X(0);const r=X(!1),n=X(e.chargepoint),s=p({get(){return a.value},set(M){a.value=M,r.value=!0}});function h(){n.value&&(V[n.value.id].etMaxPrice=s.value),r.value=!1}const g=X(!1),c={top:0,bottom:15,left:20,right:5},u=p(()=>{let M=[];return te.etPriceList.size>0&&te.etPriceList.forEach((S,B)=>{M.push([B,S])}),M}),d=p(()=>u.value.length>1?(nt-c.left-c.right)/u.value.length-1:0),C=p(()=>r.value?{background:"var(--color-charging)"}:{background:"var(--color-menu)"}),J=p(()=>{let M=Be(u.value,S=>S[0]);return M[1]&&(M[1]=new Date(M[1]),M[1].setTime(M[1].getTime()+36e5)),Qe().range([c.left,nt-c.right]).domain(M)}),L=p(()=>{let M=[0,0];return u.value.length>0?(M=Be(u.value,S=>S[1]),M[0]=Math.floor(M[0]-1),M[1]=Math.floor(M[1]+1)):M=[0,0],M}),E=p(()=>Ze().range([pa-c.bottom,0]).domain(L.value)),T=p(()=>{const M=bt(),S=[[c.left,E.value(s.value)],[nt-c.right,E.value(s.value)]];return M(S)}),q=p(()=>{const M=bt(),S=[[c.left,E.value(0)],[nt-c.right,E.value(0)]];return M(S)}),I=p(()=>it(J.value).ticks(6).tickSize(5).tickFormat(ot("%H:%M"))),H=p(()=>pt(E.value).ticks(6).tickSizeInner(-(nt-c.right-c.left)).tickFormat(M=>M.toString())),P=p(()=>{g.value==!0;const M=de("g#"+k.value);M.selectAll("*").remove(),M.selectAll("bar").data(u.value).enter().append("g").append("rect").attr("class","bar").attr("x",_e=>J.value(_e[0])).attr("y",_e=>E.value(_e[1])).attr("width",d.value).attr("height",_e=>E.value(L.value[0])-E.value(_e[1])).attr("fill",_e=>_e[1]<=s.value?"var(--color-charging)":"var(--color-axis)");const B=M.append("g").attr("class","axis").call(I.value);B.attr("transform","translate(0,"+(pa-c.bottom)+")"),B.selectAll(".tick").attr("font-size",ga).attr("color","var(--color-bg)"),B.selectAll(".tick line").attr("stroke","var(--color-fg)").attr("stroke-width","0.5"),B.select(".domain").attr("stroke","var(--color-bg");const D=M.append("g").attr("class","axis").call(H.value);return D.attr("transform","translate("+c.left+",0)"),D.selectAll(".tick").attr("font-size",ga).attr("color","var(--color-bg)"),D.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width","0.5"),D.select(".domain").attr("stroke","var(--color-bg)"),L.value[0]<0&&M.append("path").attr("d",q.value).attr("stroke","var(--color-fg)"),M.append("path").attr("d",T.value).attr("stroke","yellow"),"PriceChart.vue"}),k=p(()=>e.chargepoint?"priceChartCanvas"+e.chargepoint.id:"priceChartCanvasGlobal");return Ve(()=>{g.value=!g.value}),(M,S)=>(l(),m(G,null,[Pi,o("p",Bi,"Anbieter: "+x(i(te).etProvider),1),Vi,o("div",Li,[o("figure",Oi,[(l(),m("svg",Ai,[o("g",{id:k.value,origin:P.value,transform:"translate("+c.top+","+c.right+")"},null,8,Ti)]))])]),M.chargepoint!=null?(l(),m("div",Di,[M.chargepoint.etActive?(l(),$(De,{key:0,id:"foo",modelValue:s.value,"onUpdate:modelValue":S[0]||(S[0]=B=>s.value=B),min:-25,max:95,step:.1,decimals:1,unit:"ct"},null,8,["modelValue"])):w("",!0)])):w("",!0),M.chargepoint!=null?(l(),m("div",Wi,[o("span",{class:"me-3 pt-0",onClick:h},[o("button",{type:"button",class:"btn btn-secondary",style:Z(C.value),disabled:!r.value}," Bestätigen ",12,zi)])])):w("",!0)],64))}}),Da=U(Gi,[["__scopeId","data-v-0a5353c2"]]),Ke=t=>(oe("data-v-1164316d"),t=t(),re(),t),Ei={class:"status-string"},ji={style:{color:"red"}},Ui={class:"m-0 mt-4 p-0 grid-col-12 tabarea"},Fi={class:"nav nav-tabs nav-justified mx-1 mt-1",role:"tablist"},Ni=["data-bs-target"],Hi=Ke(()=>o("i",{class:"fa-solid fa-charging-station"},null,-1)),Ri=[Hi],Ji=["data-bs-target"],qi=Ke(()=>o("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),Yi=[qi],Qi=["data-bs-target"],Zi=Ke(()=>o("i",{class:"fa-solid fa-solar-panel me-1"},null,-1)),Xi=[Zi],Ki=["data-bs-target"],el=Ke(()=>o("i",{class:"fa-solid fa-bullseye me-1"},null,-1)),tl=[el],al=["data-bs-target"],ol=Ke(()=>o("i",{class:"fa-solid fa-clock"},null,-1)),rl=[ol],nl=["data-bs-target"],sl=Ke(()=>o("i",{class:"fa-solid fa-rectangle-list"},null,-1)),il=[sl],ll=["data-bs-target"],cl=Ke(()=>o("i",{class:"fa-solid fa-chart-line"},null,-1)),dl=[cl],ul={id:"settingsPanes",class:"tab-content mx-1 p-1 pb-3"},hl=["id"],pl=["id"],gl=["id"],ml=["id"],vl=["id"],fl=["id"],_l=["id"],bl=O({__name:"CPChargeConfigPanel",props:{chargepoint:{}},emits:["closeConfig"],setup(t){const a=t.chargepoint,r=p(()=>ye[a.chargeTemplate]),n=p(()=>a.id);return Ve(()=>{}),(s,h)=>(l(),m(G,null,[b(F,{title:"Status",icon:"fa-info-circle",fullwidth:!0,class:"item"},{default:y(()=>[o("span",Ei,x(i(a).stateStr),1)]),_:1}),i(a).faultState!=0?(l(),$(F,{key:0,title:"Fehler",class:"grid-col-12",icon:"fa-triangle-exclamation"},{default:y(()=>[o("span",ji,x(i(a).faultStr),1)]),_:1})):w("",!0),o("div",Ui,[o("nav",Fi,[o("a",{class:"nav-link active","data-bs-toggle":"tab","data-bs-target":"#chargeSettings"+n.value},Ri,8,Ni),s.chargepoint.chargeMode=="instant_charging"?(l(),m("a",{key:0,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#instantSettings"+n.value},Yi,8,Ji)):w("",!0),s.chargepoint.chargeMode=="pv_charging"?(l(),m("a",{key:1,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pvSettings"+n.value},Xi,8,Qi)):w("",!0),s.chargepoint.chargeMode=="scheduled_charging"?(l(),m("a",{key:2,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#scheduledSettings"+n.value},tl,8,Ki)):w("",!0),s.chargepoint.timedCharging?(l(),m("a",{key:3,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#timeSettings"+n.value},rl,8,al)):w("",!0),o("a",{class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#carSettings"+n.value},il,8,nl),i(te).active&&i(a).etActive?(l(),m("a",{key:4,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#priceChart"+n.value},dl,8,ll)):w("",!0)]),o("div",ul,[o("div",{id:"chargeSettings"+n.value,class:"tab-pane active",role:"tabpanel","aria-labelledby":"instant-tab"},[b(Ci,{chargepoint:s.chargepoint},null,8,["chargepoint"])],8,hl),o("div",{id:"instantSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"instant-tab"},[b(Js,{chargepoint:i(a),vehicles:i(Y),"charge-templates":i(ye)},null,8,["chargepoint","vehicles","charge-templates"])],8,pl),o("div",{id:"pvSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"pv-tab"},[b(ei,{chargepoint:i(a),vehicles:i(Y),"charge-templates":i(ye)},null,8,["chargepoint","vehicles","charge-templates"])],8,gl),o("div",{id:"scheduledSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"scheduled-tab"},[r.value!=null?(l(),$(ui,{key:0,"charge-template-id":i(a).chargeTemplate},null,8,["charge-template-id"])):w("",!0)],8,ml),o("div",{id:"timeSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"time-tab"},[r.value!=null?(l(),$(ki,{key:0,"charge-template-id":i(a).chargeTemplate},null,8,["charge-template-id"])):w("",!0)],8,vl),o("div",{id:"carSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"car-tab"},[i(Y)[i(a).connectedVehicle]!=null?(l(),$($i,{key:0,"vehicle-id":i(a).connectedVehicle},null,8,["vehicle-id"])):w("",!0)],8,fl),o("div",{id:"priceChart"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},[i(Y)[i(a).connectedVehicle]!=null?(l(),$(Da,{key:0,chargepoint:i(a)},null,8,["chargepoint"])):w("",!0)],8,_l)])])],64))}}),Jt=U(bl,[["__scopeId","data-v-1164316d"]]),yl={class:"d-flex justify-content-center align-items-center"},wl=O({__name:"BatterySymbol",props:{soc:{},color:{}},setup(t){const e=t,a=p(()=>e.soc<=12?"fa-battery-empty":e.soc<38?"fa-battery-quarter":e.soc<62?"fa-battery-half":e.soc<87?"fa-battery-three-quarters":"fa-battery-full"),r=p(()=>({color:e.color??"var(--color-menu)"}));return(n,s)=>(l(),m("span",yl,[o("i",{class:N(["fa me-1",a.value]),style:Z(r.value)},null,6),z(" "+x(Math.round(n.soc)+"%"),1)]))}}),It=U(wl,[["__scopeId","data-v-a68c844a"]]),ze=O({__name:"FormatWattH",props:{wattH:{}},setup(t){const e=t,a=p(()=>ht(e.wattH,v.decimalPlaces));return(r,n)=>(l(),m("span",null,x(a.value),1))}}),kl=t=>(oe("data-v-1d5bc1d9"),t=t(),re(),t),Sl={class:"wb-widget p-0 m-0 shadow widgetWidth"},xl={class:"py-4 px-3 d-flex justify-content-between align-items-center titlerow"},$l={class:"d-flex align-items-center widgetname p-0 m-0"},Ml=kl(()=>o("div",{class:"p-0"},"(title goes here)",-1)),Il={class:"buttonrea d-flex float-right justify-content-end align-items-center"},Cl={class:"grid12 pb-3"},Pl=O({__name:"WbWidgetFlex",props:{variableWidth:{type:Boolean},fullWidth:{type:Boolean}},setup(t){const e=t,a=p(()=>e.fullWidth?"col-12":e.variableWidth&&v.preferWideBoxes?"col-lg-6":"col-lg-4");return(r,n)=>(l(),m("div",{class:N(["p-2 m-0",a.value])},[o("div",Sl,[o("div",xl,[o("div",$l,[he(r.$slots,"title",{},()=>[Ml],!0),he(r.$slots,"subtitle",{},void 0,!0)]),o("div",Il,[he(r.$slots,"buttons",{},void 0,!0)])]),o("div",Cl,[he(r.$slots,"default",{},void 0,!0)])])],2))}}),Ge=U(Pl,[["__scopeId","data-v-1d5bc1d9"]]),Bl=O({__name:"WbBadge",props:{color:{},bgcolor:{}},setup(t){const e=t,a=p(()=>({color:e.color??"var(--color-bg)","background-color":e.bgcolor??"var(--color-menu)"}));return(r,n)=>(l(),m("span",{class:"pillWbBadge rounded-pill ms-2 px-2",style:Z(a.value)},[he(r.$slots,"default",{},void 0,!0)],4))}}),Me=U(Bl,[["__scopeId","data-v-36112fa3"]]),Je=t=>(oe("data-v-62e55097"),t=t(),re(),t),Vl={class:"d-flex justify-content-center align-items-center"},Ll=Je(()=>o("span",{class:"fa-solid fa-charging-station"}," ",-1)),Ol={key:0,class:"WbBadge rounded-pill errorWbBadge ms-3"},Al=Je(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-ellipsis-vertical"},null,-1)),Tl=[Al],Dl={key:0},Wl={key:1,class:"row m-0 mt-0 p-0"},zl={class:"col m-0 p-0"},Gl={key:0},El={class:"col"},jl={class:"carTitleLine d-flex justify-content-between align-items-center"},Ul=Je(()=>o("i",{class:"fa-solid fa-sm fa-car me-2"},null,-1)),Fl={key:0,class:"me-1 fa-solid fa-xs fa-star ps-1"},Nl={key:1,class:"me-1 fa-solid fa-xs fa-coins ps-0"},Hl={key:2,class:"me-0 fa-solid fa-xs fa-clock ps-1"},Rl={class:"grid12"},Jl={style:{color:"var(--color-charging)"}},ql={style:{color:"var(--color-charging)"}},Yl={style:{color:"var(--color-charging)"}},Ql={class:"targetCurrent"},Zl={key:5,class:"socEditor rounded mt-2 d-flex flex-column align-items-center grid-col-12 grid-left"},Xl=Je(()=>o("span",{class:"d-flex m-1 p-0 socEditTitle"},"Ladestand einstellen:",-1)),Kl={class:"d-flex justify-content-stretch align-items-center"},ec=Je(()=>o("hr",{class:"divider grid-col-12"},null,-1)),tc={key:0,class:"fa-solid fa-sm fas fa-edit ms-2"},ac=["id"],oc=Je(()=>o("span",{type:"button",class:"d-flex fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),rc=[oc],nc=Je(()=>o("span",{class:"fas fa-gear"}," ",-1)),sc=Je(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),ic=[sc],lc=O({__name:"CPChargePoint",props:{chargepoint:{},fullWidth:{type:Boolean}},setup(t){const e=t,a=X(e.chargepoint),r=p({get(){return e.chargepoint.chargeMode},set(S){V[e.chargepoint.id].chargeMode=S}}),n=p(()=>(Math.round(e.chargepoint.current*10)/10).toLocaleString(void 0)+" A"),s=p(()=>(Math.round(e.chargepoint.realCurrent*10)/10).toLocaleString(void 0)+" A"),h=p(()=>{const S=e.chargepoint.rangeCharged,B=e.chargepoint.chargedSincePlugged,D=e.chargepoint.dailyYield;return B>0?Math.round(S/B*D).toString()+" "+e.chargepoint.rangeUnit:"0 km"}),g=p(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei"),c=p(()=>e.chargepoint.isLocked?"var(--color-evu)":e.chargepoint.isCharging?"var(--color-charging)":e.chargepoint.isPluggedIn?"var(--color-battery)":"var(--color-axis)"),u=p(()=>{let S="";return e.chargepoint.isLocked?S="fa-lock":e.chargepoint.isCharging?S=" fa-bolt":e.chargepoint.isPluggedIn&&(S="fa-plug"),"fa "+S}),d=p(()=>{switch(e.chargepoint.chargeMode){case"stop":return{color:"var(--fg)"};default:return{color:ge[e.chargepoint.chargeMode].color}}}),C=p(()=>e.chargepoint.soc),J=p(()=>({color:e.chargepoint.color})),L=p(()=>e.chargepoint.etMaxPrice>=+k.value?{color:"var(--color-charging)"}:{color:"var(--color-menu)"}),E=p(()=>e.chargepoint.soc<20?"var(--color-evu)":e.chargepoint.soc>=80?"var(--color-pv)":"var(--color-battery)"),T=X(!1),q=X(!1);function I(){ee("socUpdate",1,e.chargepoint.connectedVehicle),V[e.chargepoint.id].waitingForSoc=!0}function H(){ee("setSoc",P.value,e.chargepoint.connectedVehicle),q.value=!1}const P=p({get(){return e.chargepoint.soc},set(S){V[e.chargepoint.id].soc=S}}),k=p(()=>{const[S]=te.etPriceList.values();return(Math.round(S*10)/10).toFixed(1)}),M=X(!1);return(S,B)=>(l(),m(G,null,[T.value?w("",!0):(l(),$($t,{key:0,"variable-width":!0,"full-width":e.fullWidth},{title:y(()=>[o("span",Vl,[o("span",{style:Z(J.value),onClick:B[0]||(B[0]=D=>T.value=!T.value)},[Ll,z(" "+x(e.chargepoint.name),1)],4),a.value.faultState==2?(l(),m("span",Ol,"Fehler")):w("",!0)])]),buttons:y(()=>[o("span",{type:"button",class:"ms-2 ps-1 pt-1",style:Z(d.value),onClick:B[1]||(B[1]=D=>T.value=!T.value)},Tl,4)]),footer:y(()=>[T.value?w("",!0):(l(),m("div",Gl,[o("div",{class:"row",onClick:B[4]||(B[4]=D=>T.value=!T.value)},[o("div",El,[o("div",jl,[o("h3",null,[Ul,z(" "+x(S.chargepoint.vehicleName)+" ",1),S.chargepoint.hasPriority?(l(),m("span",Fl)):w("",!0),S.chargepoint.etActive?(l(),m("span",Nl)):w("",!0),S.chargepoint.timedCharging?(l(),m("span",Hl)):w("",!0)]),b(Me,{bgcolor:E.value},{default:y(()=>[b(It,{soc:C.value,color:"var(--color-bg)",class:"me-2"},null,8,["soc"]),S.chargepoint.isSocConfigured&&S.chargepoint.isSocManual?(l(),m("i",{key:0,class:"fa-solid fa-sm fas fa-edit",style:{color:"var(--color-menu)"},onClick:B[3]||(B[3]=D=>q.value=!q.value)})):w("",!0),S.chargepoint.isSocConfigured&&!S.chargepoint.isSocManual?(l(),m("i",{key:1,type:"button",class:N(["fa-solid fa-sm",S.chargepoint.waitingForSoc?"fa-spinner fa-spin":"fa-sync"]),onClick:I},null,2)):w("",!0)]),_:1},8,["bgcolor"])])])]),o("div",Rl,[b(Pa,{id:"chargemode-"+S.chargepoint.name,modelValue:r.value,"onUpdate:modelValue":B[5]||(B[5]=D=>r.value=D),class:"chargemodes mt-3 mb-3",options:Object.keys(i(ge)).map(D=>({text:i(ge)[D].name,value:D,color:i(ge)[D].color,icon:i(ge)[D].icon,active:i(ge)[D].mode==S.chargepoint.chargeMode}))},null,8,["id","modelValue","options"]),e.chargepoint.power>0?(l(),$(Q,{key:0,heading:"Leistung:",class:"grid-col-3 grid-left mb-3"},{default:y(()=>[o("span",Jl,[b(vt,{watt:e.chargepoint.power},null,8,["watt"])])]),_:1})):w("",!0),e.chargepoint.power>0?(l(),$(Q,{key:1,heading:"Strom:",class:"grid-col-3"},{default:y(()=>[o("span",ql,x(s.value),1)]),_:1})):w("",!0),e.chargepoint.power>0?(l(),$(Q,{key:2,heading:"Phasen:",class:"grid-col-3"},{default:y(()=>[o("span",Yl,x(e.chargepoint.phasesInUse),1)]),_:1})):w("",!0),e.chargepoint.power>0?(l(),$(Q,{key:3,heading:"Sollstrom:",class:"grid-col-3 grid-right"},{default:y(()=>[o("span",Ql,x(n.value),1)]),_:1})):w("",!0),b(Q,{heading:"letzte Ladung:",class:"grid-col-4 grid-left"},{default:y(()=>[b(ze,{"watt-h":Math.max(S.chargepoint.chargedSincePlugged,0)},null,8,["watt-h"])]),_:1}),b(Q,{heading:"gel. Reichw.:",class:"grid-col-4"},{default:y(()=>[z(x(h.value),1)]),_:1}),S.chargepoint.isSocConfigured?(l(),$(Q,{key:4,heading:"Reichweite:",class:"grid-col-4 grid-right"},{default:y(()=>[z(x(i(Y)[e.chargepoint.connectedVehicle]?Math.round(i(Y)[e.chargepoint.connectedVehicle].range):0)+" km ",1)]),_:1})):w("",!0),q.value?(l(),m("div",Zl,[Xl,o("span",Kl,[o("span",null,[b(De,{id:"manualSoc",modelValue:P.value,"onUpdate:modelValue":B[6]||(B[6]=D=>P.value=D),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])])]),o("span",{type:"button",class:"fa-solid d-flex fa-lg me-2 mb-3 align-self-end fa-circle-check",onClick:H})])):w("",!0),ec,i(te).active?(l(),$(Q,{key:6,heading:"Preisladen:",class:"grid-col-4 grid-left"},{default:y(()=>[b(ie,{modelValue:a.value.etActive,"onUpdate:modelValue":B[7]||(B[7]=D=>a.value.etActive=D)},null,8,["modelValue"])]),_:1})):w("",!0),i(te).active?(l(),$(Q,{key:7,heading:"max. Preis:",class:"grid-col-4"},{default:y(()=>[o("span",{type:"button",onClick:B[8]||(B[8]=D=>M.value=!M.value)},[z(x(e.chargepoint.etActive?(Math.round(e.chargepoint.etMaxPrice*10)/10).toFixed(1)+" ct":"-")+" ",1),e.chargepoint.etActive?(l(),m("i",tc)):w("",!0)])]),_:1})):w("",!0),i(te).active?(l(),$(Q,{key:8,heading:"akt. Preis:",class:"grid-col-4 grid-right"},{default:y(()=>[o("span",{style:Z(L.value)},x(k.value)+" ct ",5)]),_:1})):w("",!0),M.value?(l(),m("div",{key:9,id:"priceChartInline"+e.chargepoint.id,class:"d-flex flex-column rounded priceEditor grid-col-12"},[i(Y)[e.chargepoint.connectedVehicle]!=null?(l(),$(Da,{key:0,chargepoint:e.chargepoint},null,8,["chargepoint"])):w("",!0),o("span",{class:"d-flex ms-2 my-4 pe-3 pt-1 d-flex align-self-end",style:Z(d.value),onClick:B[9]||(B[9]=D=>M.value=!1)},rc,4)],8,ac)):w("",!0)])]))]),default:y(()=>[T.value?w("",!0):(l(),m("div",Dl,[o("div",{class:"grid12",onClick:B[2]||(B[2]=D=>T.value=!T.value)},[b(Q,{heading:"Status:",class:"grid-col-4 grid-left"},{default:y(()=>[o("span",{style:Z({color:c.value})},[o("i",{class:N(u.value)},null,2),z(" "+x(g.value),1)],4)]),_:1}),b(Q,{heading:"Geladen:",class:"grid-col-4 grid-left"},{default:y(()=>[b(ze,{"watt-h":S.chargepoint.dailyYield},null,8,["watt-h"])]),_:1})])])),T.value?(l(),m("div",Wl,[o("div",zl,[S.chargepoint!=null?(l(),$(Jt,{key:0,chargepoint:S.chargepoint},null,8,["chargepoint"])):w("",!0)])])):w("",!0)]),_:1},8,["full-width"])),T.value?(l(),$(Ge,{key:1,"full-width":e.fullWidth},{title:y(()=>[o("span",{style:Z(J.value),onClick:B[10]||(B[10]=D=>T.value=!T.value)},[nc,z(" Einstellungen "+x(e.chargepoint.name),1)],4)]),buttons:y(()=>[o("span",{class:"ms-2 pt-1",style:Z(d.value),onClick:B[11]||(B[11]=D=>T.value=!T.value)},ic,4)]),default:y(()=>[S.chargepoint!=null?(l(),$(Jt,{key:0,chargepoint:S.chargepoint},null,8,["chargepoint"])):w("",!0)]),_:1},8,["full-width"])):w("",!0)],64))}}),cc=U(lc,[["__scopeId","data-v-62e55097"]]),Wa=t=>(oe("data-v-eaefae30"),t=t(),re(),t),dc=["id"],uc={class:"modal-dialog modal-lg modal-fullscreen-lg-down"},hc={class:"modal-content"},pc={class:"modal-header"},gc={class:"modal-title"},mc=Wa(()=>o("button",{type:"button",class:"btn-close buttonTextSize d-flex justify-content-center pt-3 pb-0","data-bs-dismiss":"modal"},[o("i",{class:"fa-solid fa-lg fa-rectangle-xmark m-0 p-0"})],-1)),vc={class:"modal-body",style:{"background-color":"var(--color-bg)"}},fc=Wa(()=>o("button",{class:"btn btn-secondary float-end mt-3 ms-1","data-bs-dismiss":"modal"}," Schließen ",-1)),_c=O({__name:"ModalComponent",props:{modalId:{}},setup(t){const e=t;return Ve(()=>{}),(a,r)=>(l(),m("div",{id:e.modalId,class:"modal fade"},[o("div",uc,[o("div",hc,[o("div",pc,[o("h3",gc,[he(a.$slots,"title",{},void 0,!0)]),mc]),o("div",vc,[he(a.$slots,"default",{},void 0,!0),fc])])])],8,dc))}}),za=U(_c,[["__scopeId","data-v-eaefae30"]]),bc=t=>(oe("data-v-2f1df729"),t=t(),re(),t),yc={class:"d-flex align-items-center"},wc={class:"cpname"},kc={class:"d-flex float-right justify-content-end align-items-center"},Sc=["data-bs-target"],xc=["data-bs-target"],$c={class:"subgrid"},Mc={key:0,class:"d-flex justify-content-center align-items-center vehiclestatus"},Ic={class:"d-flex flex-column align-items-center px-0"},Cc={class:"d-flex justify-content-center flex-wrap"},Pc={class:"d-flex align-items-center"},Bc={class:"badge phasesInUse rounded-pill"},Vc={class:"d-flex flex-wrap justify-content-center chargeinfo"},Lc={class:"me-1"},Oc={key:0,class:"subgrid socEditRow m-0 p-0"},Ac={class:"socEditor rounded mt-2 d-flex flex-column align-items-center grid-col-12"},Tc=bc(()=>o("span",{class:"d-flex m-1 p-0 socEditTitle"},"Ladestand einstellen:",-1)),Dc={class:"d-flex justify-content-stretch align-items-center"},Wc=O({__name:"CpsListItem2",props:{chargepoint:{}},setup(t){const e=t,a=X(!1),r=p(()=>ge[e.chargepoint.chargeMode].icon),n=p(()=>{let I="";return e.chargepoint.isLocked?I="fa-lock":e.chargepoint.isCharging?I=" fa-bolt":e.chargepoint.isPluggedIn&&(I="fa-plug"),"fa "+I}),s=p(()=>{let I="var(--color-axis)";return e.chargepoint.isLocked?I="var(--color-evu)":e.chargepoint.isCharging?I="var(--color-charging)":e.chargepoint.isPluggedIn&&(I="var(--color-battery)"),{color:I,border:`0.5px solid ${I} `}}),h=p(()=>{switch(e.chargepoint.chargeMode){case"stop":return{"background-color":"var(--fg)"};default:return{"background-color":ge[e.chargepoint.chargeMode].color}}}),g=p(()=>$e(e.chargepoint.power,v.decimalPlaces)),c=p(()=>e.chargepoint.current+" A"),u=p(()=>e.chargepoint.phasesInUse),d=p(()=>e.chargepoint.dailyYield>0?ht(e.chargepoint.dailyYield,v.decimalPlaces):"0 Wh"),C=p(()=>"("+Math.round(e.chargepoint.rangeCharged).toString()+" "+e.chargepoint.rangeUnit+")"),J=p(()=>ge[e.chargepoint.chargeMode].name);function L(){ee("socUpdate",1,e.chargepoint.connectedVehicle),V[e.chargepoint.id].waitingForSoc=!0}function E(){ee("setSoc",T.value,e.chargepoint.connectedVehicle),a.value=!1}const T=p({get(){return e.chargepoint.soc},set(I){V[e.chargepoint.id].soc=I}}),q=p(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei");return(I,H)=>(l(),m(G,null,[b(Xe,{titlecolor:I.chargepoint.color,fullwidth:!0,small:!0},{title:y(()=>[o("div",yc,[o("span",wc,x(I.chargepoint.name),1),o("span",{class:"badge rounded-pill statusbadge mx-2",style:Z(s.value)},[o("i",{class:N([n.value,"me-1"])},null,2),z(" "+x(q.value),1)],4)])]),buttons:y(()=>[o("div",kc,[o("span",{class:"badge rounded-pill modebadge mx-2",type:"button",style:Z(h.value),"data-bs-toggle":"modal","data-bs-target":"#cpsconfig-"+I.chargepoint.id},[o("i",{class:N(["fa me-1",r.value])},null,2),z(" "+x(J.value),1)],12,Sc),o("span",{class:"fa-solid ms-2 fa-lg fa-edit ps-1",type:"button","data-bs-toggle":"modal","data-bs-target":"#cpsconfig-"+I.chargepoint.id},null,8,xc)])]),default:y(()=>[o("div",$c,[b(Q,{heading:I.chargepoint.vehicleName,small:!0,class:"grid-left grid-col-4"},{default:y(()=>[I.chargepoint.isSocConfigured?(l(),m("span",Mc,[b(It,{class:"me-1",soc:I.chargepoint.soc},null,8,["soc"]),I.chargepoint.isSocConfigured&&I.chargepoint.isSocManual?(l(),m("i",{key:0,type:"button",class:"fa-solid fa-sm fas fa-edit",style:{color:"var(--color-menu)"},onClick:H[0]||(H[0]=P=>a.value=!a.value)})):w("",!0),I.chargepoint.isSocConfigured&&!I.chargepoint.isSocManual?(l(),m("i",{key:1,type:"button",class:N(["fa-solid fa-sm me-2",I.chargepoint.waitingForSoc?"fa-spinner fa-spin":"fa-sync"]),style:{color:"var(--color-menu)"},onClick:L},null,2)):w("",!0)])):w("",!0)]),_:1},8,["heading"]),b(Q,{heading:"Parameter:",small:!0,class:"grid-col-4"},{default:y(()=>[o("div",Ic,[o("span",Cc,[o("span",null,x(g.value),1),o("span",Pc,[o("span",Bc,x(u.value),1),o("span",null,x(c.value),1)])])])]),_:1}),b(Q,{heading:"Geladen:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[o("div",Vc,[o("span",Lc,x(d.value),1),o("span",null,x(C.value),1)])]),_:1})]),a.value?(l(),m("div",Oc,[o("div",Ac,[Tc,o("span",Dc,[o("span",null,[b(De,{id:"manualSoc",modelValue:T.value,"onUpdate:modelValue":H[1]||(H[1]=P=>T.value=P),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])])]),o("span",{type:"button",class:"fa-solid d-flex fa-lg me-2 mb-3 align-self-end fa-circle-check",onClick:E})])])):w("",!0)]),_:1},8,["titlecolor"]),(l(),$(lo,{to:"body"},[(l(),$(za,{key:I.chargepoint.id,"modal-id":"cpsconfig-"+I.chargepoint.id},{title:y(()=>[z(" Konfiguration: "+x(I.chargepoint.name),1)]),default:y(()=>[I.chargepoint!=null?(l(),$(Jt,{key:0,chargepoint:I.chargepoint},null,8,["chargepoint"])):w("",!0)]),_:1},8,["modal-id"]))]))],64))}}),zc=U(Wc,[["__scopeId","data-v-2f1df729"]]),Gc=t=>(oe("data-v-b8c6b557"),t=t(),re(),t),Ec=Gc(()=>o("span",{class:"fa-solid fa-charging-station"}," ",-1)),jc=O({__name:"CpSimpleList2",setup(t){const e=p(()=>Object.values(V));return(a,r)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[Ec,z(" Ladepunkte ")]),buttons:y(()=>[i(te).active?(l(),$(Me,{key:0,bgcolor:"var(--color-menu)"},{default:y(()=>[z("Strompreis: "+x(i(te).etCurrentPriceString),1)]),_:1})):w("",!0)]),default:y(()=>[(l(!0),m(G,null,K(e.value,(n,s)=>(l(),m("div",{key:s,class:"subgrid pb-2"},[b(zc,{chargepoint:n},null,8,["chargepoint"])]))),128))]),_:1}))}}),Uc=U(jc,[["__scopeId","data-v-b8c6b557"]]),Lt=O({__name:"ChargePointList",props:{id:{},compact:{type:Boolean}},setup(t){let e,a;const r=t,n=p(()=>{let u=Object.values(V);return c(),u}),s=p(()=>h.value+" "+g.value),h=p(()=>{switch(Object.values(V).length){case 0:return v.preferWideBoxes?"col-lg-6":"col-lg-4";case 1:return v.preferWideBoxes?"col-lg-6":"col-lg-4";case 2:return v.preferWideBoxes?"col-lg-12":"col-lg-8 ";default:return"col-lg-12"}}),g=p(()=>"swiper-chargepoints-"+r.id);function c(){let u=document.querySelector("."+g.value);if(u&&(a=u,e=a.swiper),e){let d="1";if(Re.value)switch(Object.values(V).length){case 0:case 1:d="1";break;case 2:d="2";break;default:d="3"}a.setAttribute("slides-per-view",d),e.update()}}return Ve(()=>{let u=document.querySelector("."+g.value);u&&(a=u,e=a.swiper),window.addEventListener("resize",c),window.document.addEventListener("visibilitychange",c)}),(u,d)=>(l(),m(G,null,[r.compact?w("",!0):(l(),m("swiper-container",{key:0,"space-between":0,"slides-per-view":1,pagination:{clickable:!0},class:N(["cplist m-0 p-0 d-flex align-items-stretch",s.value])},[(l(!0),m(G,null,K(n.value,C=>(l(),m("swiper-slide",{key:C.id},[o("div",{class:N([i(Re)?"mb-0":"mb-5","d-flex align-items-stretch flex-fill"])},[b(cc,{chargepoint:C,"full-width":!0},null,8,["chargepoint"])],2)]))),128))],2)),r.compact?(l(),$(Uc,{key:1})):w("",!0)],64))}}),Fc={class:"container-fluid p-0 m-0"},Nc={class:"row p-0 m-0"},Hc={class:"d-grid gap-2"},Rc=["onClick"],Jc={class:"col-md-4 p-1"},qc={class:"d-grid gap-2"},Yc={key:0},Qc=o("hr",null,null,-1),Zc=o("div",{class:"row"},[o("div",{class:"col text-center"},"Vorrang im Lademodus PV-Laden:")],-1),Xc={class:"row justify-content-center m-1 p-0"},Kc={class:"col-lg-4 p-1 m-0"},ed={class:"d-grid gap-2"},td=o("span",{class:"fas fa-car ms-2"}," ",-1),ad={class:"col-lg-4 p-1 m-0"},od={class:"d-grid gap-2"},rd=o("span",{class:"fas fa-car-battery ms-2"}," ",-1),nd={class:"col-lg-4 p-1 m-0"},sd={class:"d-grid gap-2"},id=o("span",{class:"fas fa-battery-half"}," ",-1),ld=O({__name:"BBSelect",props:{cpId:{}},setup(t){const e=t,a=[{mode:"instant_charging",name:"Sofort",color:"var(--color-charging)"},{mode:"pv_charging",name:"PV",color:"var(--color-pv)"},{mode:"scheduled_charging",name:"Zielladen",color:"var(--color-battery)"},{mode:"standby",name:"Standby",color:"var(--color-axis)"},{mode:"stop",name:"Stop",color:"var(--color-axis)"}],r=p(()=>V[e.cpId]);function n(u){return u==r.value.chargeMode?"btn btn-success buttonTextSize":"btn btn-secondary buttonTextSize"}function s(u){return ue.pvBatteryPriority==u?"btn-success":"btn-secondary"}function h(u){r.value.chargeMode=u}function g(u){r.value.isLocked=u}function c(u){ue.pvBatteryPriority=u}return(u,d)=>(l(),m("div",Fc,[o("div",Nc,[(l(),m(G,null,K(a,(C,J)=>o("div",{key:J,class:"col-md-4 p-1"},[o("div",Hc,[o("button",{type:"button",class:N(n(C.mode)),style:{},onClick:L=>h(C.mode)},x(C.name),11,Rc)])])),64)),o("div",Jc,[o("div",qc,[r.value.isLocked?(l(),m("button",{key:0,type:"button",class:"btn btn-outline-success buttonTextSize","data-bs-dismiss":"modal",onClick:d[0]||(d[0]=C=>g(!1))}," Entsperren ")):w("",!0),r.value.isLocked?w("",!0):(l(),m("button",{key:1,type:"button",class:"btn btn-outline-danger buttonTextSize","data-bs-dismiss":"modal",onClick:d[1]||(d[1]=C=>g(!0))}," Sperren "))])])]),i(ue).isBatteryConfigured?(l(),m("div",Yc,[Qc,Zc,o("div",Xc,[o("div",Kc,[o("div",ed,[o("button",{id:"evPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",s("ev_mode")]),"data-dismiss":"modal",priority:"1",onClick:d[2]||(d[2]=C=>c("ev_mode"))},[z(" EV "),td],2)])]),o("div",ad,[o("div",od,[o("button",{id:"batteryPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",s("bat_mode")]),"data-dismiss":"modal",priority:"0",onClick:d[3]||(d[3]=C=>c("bat_mode"))},[z(" Speicher "),rd],2)])]),o("div",nd,[o("div",sd,[o("button",{id:"minsocPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",s("min_soc_bat_mode")]),"data-dismiss":"modal",priority:"0",onClick:d[4]||(d[4]=C=>c("min_soc_bat_mode"))},[z(" MinSoc "),id],2)])])])])):w("",!0)]))}}),cd={class:"col-lg-4 p-0 m-0 mt-1"},dd={class:"d-grid gap-2"},ud=["data-bs-target"],hd={class:"m-0 p-0 d-flex justify-content-between align-items-center"},pd={class:"mx-1 badge rounded-pill smallTextSize plugIndicator"},gd={key:0,class:"ms-2"},md={class:"m-0 p-0"},vd={key:0,class:"ps-1"},fd=O({__name:"BbChargeButton",props:{chargepoint:{}},setup(t){const e=t,a="chargeSelectModal"+e.chargepoint.id,r=p(()=>ge[e.chargepoint.chargeMode].name),n=p(()=>{let d={background:"var(--color-menu)"};return e.chargepoint.isLocked?d.background="var(--color-evu)":e.chargepoint.isCharging?d.background="var(--color-charging)":e.chargepoint.isPluggedIn&&(d.background="var(--color-battery)"),d}),s=p(()=>{if(ge){let d={background:ge[e.chargepoint.chargeMode].color,color:"white"};switch(e.chargepoint.chargeMode){case fe.instant_charging:e.chargepoint.isCharging&&!e.chargepoint.isLocked&&(d=u(d));break;case fe.standby:case fe.stop:d.background="darkgrey",d.color="black";break;case fe.scheduled_charging:e.chargepoint.isPluggedIn&&!e.chargepoint.isCharging&&!e.chargepoint.isLocked&&(d=u(d));break}return d}else return{background:"var(--color-bg)",color:"var(--color-bg)"}}),h=p(()=>ge?ge[e.chargepoint.chargeMode].icon:""),g=p(()=>{switch(ue.pvBatteryPriority){case"ev_mode":return"fa-car";case"bat_mode":return"fa-car-battery";case"min_soc_bat_mode":return"fa-battery-half";default:return console.log("default"),""}}),c=p(()=>{let d="fa-ellipsis";return e.chargepoint.isLocked?d="fa-lock":e.chargepoint.isCharging?d=" fa-bolt":e.chargepoint.isPluggedIn&&(d="fa-plug"),"fa "+d});function u(d){let C=d.color;return d.color=d.background,d.background=C,d}return(d,C)=>(l(),m("div",cd,[o("div",dd,[o("button",{type:"button",class:"btn mx-1 mb-0 p-1 mediumTextSize chargeButton shadow",style:Z(n.value),"data-bs-toggle":"modal","data-bs-target":"#"+a},[o("div",hd,[o("span",pd,[o("i",{class:N(c.value)},null,2),d.chargepoint.isCharging?(l(),m("span",gd,x(i($e)(d.chargepoint.power)),1)):w("",!0)]),o("span",md,x(d.chargepoint.name),1),o("span",{class:"mx-2 m-0 badge rounded-pill smallTextSize modeIndicator",style:Z(s.value)},[o("i",{class:N(["fa me-1",h.value])},null,2),z(" "+x(r.value)+" ",1),d.chargepoint.chargeMode==i(fe).pv_charging&&i(ue).isBatteryConfigured?(l(),m("span",vd,[z(" ( "),o("i",{class:N(["fa m-0",g.value])},null,2),z(") ")])):w("",!0)],4)])],12,ud)]),b(za,{"modal-id":a},{title:y(()=>[z(" Lademodus für "+x(d.chargepoint.vehicleName),1)]),default:y(()=>[b(ld,{"cp-id":d.chargepoint.id},null,8,["cp-id"])]),_:1})]))}}),_d=U(fd,[["__scopeId","data-v-31df6764"]]),bd={class:"row p-0 mt-0 mb-1 m-0"},yd={class:"col p-0 m-0"},wd={class:"container-fluid p-0 m-0"},kd={class:"row p-0 m-0 d-flex justify-content-center align-items-center"},Sd={key:0,class:"col time-display"},xd=O({__name:"ButtonBar",setup(t){return(e,a)=>(l(),m("div",bd,[o("div",yd,[o("div",wd,[o("div",kd,[i(v).showClock=="buttonbar"?(l(),m("span",Sd,x(i(Ca)(i(Rt))),1)):w("",!0),(l(!0),m(G,null,K(i(V),(r,n)=>(l(),$(_d,{key:n,chargepoint:r,"charge-point-count":Object.values(i(V)).length},null,8,["chargepoint","charge-point-count"]))),128))])])])]))}}),$d=U(xd,[["__scopeId","data-v-791e4be0"]]);class Md{constructor(e){_(this,"id");_(this,"name","Speicher");_(this,"color","var(--color-battery)");_(this,"dailyYieldExport",0);_(this,"dailyYieldImport",0);_(this,"monthlyYieldExport",0);_(this,"monthlyYieldImport",0);_(this,"yearlyYieldExport",0);_(this,"yearlyYieldImport",0);_(this,"exported",0);_(this,"faultState",0);_(this,"faultStr","");_(this,"imported",0);_(this,"power",0);_(this,"soc",0);this.id=e}}class Id{constructor(){_(this,"dailyExport",0);_(this,"dailyImport",0);_(this,"exported",0);_(this,"imported",0);_(this,"power",0);_(this,"soc",0)}}se(new Id);const ve=X(new Map),Ga=t=>{ve.value.set(t,new Md(t)),ve.value.get(t).color=ce["bat"+ve.value.size].color};function Cd(){ve.value=new Map}const Pd={class:"battery-title"},Bd={class:"subgrid pt-1"},Vd=O({__name:"BLBattery",props:{bat:{}},setup(t){const e=t,a=p(()=>e.bat.power<0?`Liefert (${$e(-e.bat.power)})`:e.bat.power>0?`Lädt (${$e(e.bat.power)})`:"Bereit"),r=p(()=>e.bat.power<0?"var(--color-pv)":e.bat.power>0?"var(--color-battery)":"var(--color-menu)");return(n,s)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[o("span",Pd,x(n.bat.name),1)]),buttons:y(()=>[b(Me,{bgcolor:r.value},{default:y(()=>[z(x(a.value),1)]),_:1},8,["bgcolor"])]),default:y(()=>[o("div",Bd,[b(Q,{heading:"Ladestand:",small:!0,class:"grid-left grid-col-4"},{default:y(()=>[b(It,{soc:e.bat.soc},null,8,["soc"])]),_:1}),b(Q,{heading:"Geladen:",small:!0,class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.bat.dailyYieldImport},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Geliefert:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.bat.dailyYieldExport},null,8,["watt-h"])]),_:1})])]),_:1}))}}),Ld=U(Vd,[["__scopeId","data-v-f7f825f7"]]),Ea=t=>(oe("data-v-463638db"),t=t(),re(),t),Od=Ea(()=>o("span",{class:"fas fa-car-battery me-2",style:{color:"var(--color-battery)"}}," ",-1)),Ad=Ea(()=>o("span",null,"Speicher",-1)),Td={class:"px-3 subgrid grid-12"},Dd=O({__name:"BatteryList",setup(t){const e=p(()=>R.batOut.power>0?`Liefert (${$e(R.batOut.power)})`:j.batIn.power>0?`Lädt (${$e(j.batIn.power)})`:"Bereit:"),a=p(()=>R.batOut.power>0?"var(--color-pv)":j.batIn.power>0?"var(--color-battery)":"var(--color-menu)");return(r,n)=>i(ue).isBatteryConfigured?(l(),$(Ge,{key:0,"variable-width":!0,"full-width":!1},{title:y(()=>[Od,Ad]),buttons:y(()=>[b(Me,{bgcolor:a.value},{default:y(()=>[z(x(e.value),1)]),_:1},8,["bgcolor"])]),default:y(()=>[o("div",Td,[b(Q,{heading:"Ladestand:",class:"grid-left grid-col-4"},{default:y(()=>[b(It,{color:"var(--color-battery)",soc:i(ue).batterySoc},null,8,["soc"])]),_:1}),b(Q,{heading:"Geladen:",class:"grid-col-4"},{default:y(()=>[o("span",null,x(i(ht)(i(j).batIn.energy)),1)]),_:1}),b(Q,{heading:"Geliefert",class:"grid-right grid-col-4"},{default:y(()=>[o("span",null,x(i(ht)(i(R).batOut.energy)),1)]),_:1})]),(l(!0),m(G,null,K(i(ve),([s,h])=>(l(),$(Ld,{key:s,bat:h},null,8,["bat"]))),128))]),_:1})):w("",!0)}}),Ot=U(Dd,[["__scopeId","data-v-463638db"]]),Wd={class:"subgrid"},zd=O({__name:"SHListItem",props:{device:{}},setup(t){const e=t,a=p(()=>e.device.status=="on"?"fa-toggle-on fa-xl":e.device.status=="waiting"?"fa-spinner fa-spin":"fa-toggle-off fa-xl"),r=p(()=>{let g="var(--color-switchRed)";switch(e.device.status){case"on":g="var(--color-switchGreen)";break;case"detection":g="var(--color-switchBlue)";break;case"timeout":g="var(--color-switchWhite)";break;case"waiting":g="var(--color-menu)";break;default:g="var(--color-switchRed)"}return{color:g}});function n(){e.device.isAutomatic||(e.device.status=="on"?ee("shSwitchOn",0,e.device.id):ee("shSwitchOn",1,e.device.id),ae.get(e.device.id).status="waiting")}function s(){e.device.isAutomatic?ee("shSetManual",1,e.device.id):ee("shSetManual",0,e.device.id)}const h=p(()=>e.device.isAutomatic?"Auto":"Man");return(g,c)=>(l(),$(Xe,{titlecolor:g.device.color,fullwidth:!0},{title:y(()=>[z(x(g.device.name),1)]),buttons:y(()=>[(l(!0),m(G,null,K(g.device.temp,(u,d)=>(l(),m("span",{key:d},[u<300?(l(),$(Me,{key:0,bgcolor:"var(--color-battery)"},{default:y(()=>[o("span",null,x(i(tr)(u)),1)]),_:2},1024)):w("",!0)]))),128)),e.device.canSwitch?(l(),m("span",{key:0,class:N([a.value,"fa-solid statusbutton mr-2 ms-2"]),style:Z(r.value),onClick:n},null,6)):w("",!0),e.device.canSwitch?(l(),$(Me,{key:1,type:"button",onClick:s},{default:y(()=>[z(x(h.value),1)]),_:1})):w("",!0)]),default:y(()=>[o("div",Wd,[b(Q,{heading:"Leistung:",class:"grid-col-4 grid-left"},{default:y(()=>[b(vt,{watt:g.device.power},null,8,["watt"])]),_:1}),b(Q,{heading:"Energie:",class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":g.device.energy},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Laufzeit:",class:"grid-col-4 grid-right"},{default:y(()=>[z(x(i(Ko)(g.device.runningTime)),1)]),_:1})])]),_:1},8,["titlecolor"]))}}),Gd=U(zd,[["__scopeId","data-v-92893218"]]),ft=t=>(oe("data-v-5b5cf6b3"),t=t(),re(),t),Ed=ft(()=>o("span",{class:"fas fa-plug me-2",style:{color:"var(--color-devices)"}}," ",-1)),jd={class:"sh-title py-4"},Ud=ft(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-ellipsis-vertical"},null,-1)),Fd=[Ud],Nd=ft(()=>o("span",{class:"fas fa-gear"}," ",-1)),Hd=ft(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),Rd=[Hd],Jd=["id","onUpdate:modelValue","value"],qd=["for"],Yd=ft(()=>o("div",{class:"col-12 mb-3 pe-3 mt-0"},[o("button",{class:"btn btn-sm btn-secondary float-end"},"Schließen")],-1)),Qd=[Yd],Zd=3,Xd=O({__name:"SmartHomeList",setup(t){const e=p(()=>Re.value?a.value.reduce((h,g)=>{const c=h;let u=h[h.length-1];return u.length>=Zd?h.push([g]):u.push(g),c},[[]]):[a.value]),a=p(()=>[...ae.values()].filter(h=>h.configured));function r(h){return"Geräte"+(Re.value&&e.value.length>1?"("+(h+1)+")":"")}function n(){s.value=!s.value}const s=X(!1);return(h,g)=>(l(),m(G,null,[(l(!0),m(G,null,K(e.value,(c,u)=>(l(),$(Ge,{key:u,"variable-width":!0},{title:y(()=>[o("span",{onClick:n},[Ed,o("span",jd,x(r(u)),1)])]),buttons:y(()=>[o("span",{class:"ms-2 pt-1",onClick:n},Fd)]),default:y(()=>[(l(!0),m(G,null,K(c,d=>(l(),$(Gd,{key:d.id,device:d,class:"subgrid pb-2"},null,8,["device"]))),128))]),_:2},1024))),128)),s.value?(l(),$(Ge,{key:0},{title:y(()=>[o("span",{class:"smarthome",onClick:n},[Nd,z(" Einstellungen")])]),buttons:y(()=>[o("span",{class:"ms-2 pt-1",onClick:n},Rd)]),default:y(()=>[b(F,{title:"Im Energie-Graph anzeigen:",icon:"fa-chart-column",fullwidth:!0},{default:y(()=>[(l(!0),m(G,null,K(a.value,(c,u)=>(l(),m("div",{key:u},[gt(o("input",{id:"check"+u,"onUpdate:modelValue":d=>c.showInGraph=d,class:"form-check-input",type:"checkbox",value:c},null,8,Jd),[[_a,c.showInGraph]]),o("label",{class:"form-check-label px-2",for:"check"+u},x(c.name),9,qd)]))),128))]),_:1}),o("div",{class:"row p-0 m-0",onClick:n},Qd)]),_:1})):w("",!0)],64))}}),At=U(Xd,[["__scopeId","data-v-5b5cf6b3"]]),Kd={class:"countername"},eu={class:"subgrid pt-1"},tu=O({__name:"ClCounter",props:{counter:{}},setup(t){const e=t,a=p(()=>e.counter.power>0?"Bezug":"Export"),r=p(()=>e.counter.power>0?"var(--color-evu)":"var(--color-pv)");return(n,s)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[o("span",Kd,x(n.counter.name),1)]),buttons:y(()=>[e.counter.power!=0?(l(),$(Me,{key:0,bgcolor:r.value},{default:y(()=>[z(x(a.value),1)]),_:1},8,["bgcolor"])):w("",!0),b(Me,{color:"var(--color-bg)"},{default:y(()=>[z(" ID: "+x(e.counter.id),1)]),_:1})]),default:y(()=>[o("div",eu,[b(Q,{heading:"Leistung:",small:!0,class:"grid-left grid-col-4"},{default:y(()=>[b(vt,{watt:Math.abs(e.counter.power)},null,8,["watt"])]),_:1}),b(Q,{heading:"Bezogen:",small:!0,class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.counter.energy_imported},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Exportiert:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.counter.energy_exported},null,8,["watt-h"])]),_:1})])]),_:1}))}}),au=U(tu,[["__scopeId","data-v-01dd8c4d"]]);class ou{constructor(e){_(this,"id");_(this,"name","Zähler");_(this,"power",0);_(this,"energy_imported",0);_(this,"energy_exported",0);_(this,"grid",!1);_(this,"type","counter");_(this,"color","var(--color-evu)");_(this,"energyPv",0);_(this,"energyBat",0);_(this,"pvPercentage",0);_(this,"icon","");this.id=e}}const we=se({});function ru(t,e){if(t in we)console.info("Duplicate counter message: "+t);else switch(we[t]=new ou(t),we[t].type=e,e){case"counter":we[t].color="var(--color-evu)";break;case"inverter":we[t].color="var(--color-pv)";break;case"cp":we[t].color="var(--color-charging)";break;case"bat":we[t].color="var(--color-bat)";break}}const ja=t=>(oe("data-v-5f059284"),t=t(),re(),t),nu=ja(()=>o("span",{class:"fas fa-bolt me-2",style:{color:"var(--color-evu)"}}," ",-1)),su=ja(()=>o("span",null,"Zähler",-1)),iu=O({__name:"CounterList",setup(t){return(e,a)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[nu,su]),default:y(()=>[(l(!0),m(G,null,K(i(we),(r,n)=>(l(),m("div",{key:n,class:"subgrid pb-2"},[b(au,{counter:r},null,8,["counter"])]))),128))]),_:1}))}}),Tt=U(iu,[["__scopeId","data-v-5f059284"]]),lu={class:"subgrid"},cu=O({__name:"VlVehicle",props:{vehicle:{}},setup(t){const e=t,a=p(()=>{let n="Unterwegs",s=e.vehicle.chargepoint;return s!=null&&(s.isCharging?n="Lädt ("+s.name+")":s.isPluggedIn&&(n="Bereit ("+s.name+")")),n}),r=p(()=>{let n=e.vehicle.chargepoint;return n!=null?n.isLocked?"var(--color-evu)":n.isCharging?"var(--color-charging)":n.isPluggedIn?"var(--color-battery)":"var(--color-axis)":"var(--color-axis)"});return(n,s)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[z(x(e.vehicle.name),1)]),default:y(()=>[o("div",lu,[b(Q,{heading:"Status:",small:!1,class:"grid-left grid-col-4"},{default:y(()=>[o("span",{style:Z({color:r.value}),class:"d-flex justify-content-center align-items-center status-string"},x(a.value),5)]),_:1}),b(Q,{heading:"Ladestand:",small:!1,class:"grid-col-4"},{default:y(()=>[z(x(Math.round(e.vehicle.soc))+" % ",1)]),_:1}),b(Q,{heading:"Reichweite:",small:!1,class:"grid-right grid-col-4"},{default:y(()=>[z(x(Math.round(e.vehicle.range))+" km ",1)]),_:1})])]),_:1}))}}),du=U(cu,[["__scopeId","data-v-f92f4f7b"]]),Ua=t=>(oe("data-v-23b437ea"),t=t(),re(),t),uu=Ua(()=>o("span",{class:"fas fa-car me-2",style:{color:"var(--color-charging)"}}," ",-1)),hu=Ua(()=>o("span",null,"Fahrzeuge",-1)),pu=O({__name:"VehicleList",setup(t){return(e,a)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[uu,hu]),default:y(()=>[(l(!0),m(G,null,K(Object.values(i(Y)).filter(r=>r.visible),(r,n)=>(l(),m("div",{key:n,class:"subgrid"},[b(du,{vehicle:r},null,8,["vehicle"])]))),128))]),_:1}))}}),Dt=U(pu,[["__scopeId","data-v-23b437ea"]]),Fa=t=>(oe("data-v-3ecadd9f"),t=t(),re(),t),gu=Fa(()=>o("span",{class:"fas fa-coins me-2",style:{color:"var(--color-battery)"}}," ",-1)),mu=Fa(()=>o("span",null,"Strompreis",-1)),vu={class:"grapharea"},fu={id:"pricechart",class:"p-1 m-0 pricefigure"},_u={viewBox:"0 0 400 280"},bu=["id","origin","transform"],Wt=380,zt=250,Gt=12,yu=O({__name:"GlobalPriceChart",props:{id:{}},setup(t){const e=t,a=X(!1),r={top:0,bottom:15,left:20,right:0},n=p(()=>{let L=[];return te.etPriceList.size>0&&te.etPriceList.forEach((E,T)=>{L.push([T,E])}),L}),s=p(()=>n.value.length>1?(Wt-r.left-r.right)/n.value.length:0),h=p(()=>{let L=Be(n.value,E=>E[0]);return L[1]&&(L[1]=new Date(L[1]),L[1].setTime(L[1].getTime()+36e5)),Qe().range([r.left,Wt-r.right]).domain(L)}),g=p(()=>{let L=Be(n.value,E=>E[1]);return L[0]=Math.floor(L[0])-1,L[1]=Math.floor(L[1])+1,L}),c=p(()=>Ze().range([zt-r.bottom,0]).domain(g.value)),u=p(()=>it(h.value).ticks(n.value.length).tickSize(5).tickSizeInner(-zt).tickFormat(L=>L.getHours()%6==0?ot("%H:%M")(L):"")),d=p(()=>pt(c.value).ticks(15).tickSize(0).tickSizeInner(-(Wt-r.right-r.left)).tickFormat(L=>L.toString())),C=p(()=>{a.value==!0;const L=de("g#"+J.value);L.selectAll("*").remove(),L.selectAll("bar").data(n.value).enter().append("g").append("rect").attr("class","bar").attr("x",k=>h.value(k[0])).attr("y",k=>c.value(k[1])).attr("width",s.value).attr("height",k=>c.value(g.value[0])-c.value(k[1])).attr("fill","var(--color-charging)");const T=L.append("g").attr("class","axis").call(u.value);T.attr("transform","translate(0,"+(zt-r.bottom)+")"),T.selectAll(".tick").attr("font-size",Gt).attr("color","var(--color-bg)"),T.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",k=>k.getHours()%6==0?"2":"0.5"),T.select(".domain").attr("stroke","var(--color-bg");const q=L.append("g").attr("class","axis").call(d.value);q.attr("transform","translate("+r.left+",0)"),q.selectAll(".tick").attr("font-size",Gt).attr("color","var(--color-bg)"),q.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",k=>k%5==0?"2":"0.5"),q.select(".domain").attr("stroke","var(--color-bg)");const I=L.selectAll("ttip").data(n.value).enter().append("g").attr("class","ttarea");I.append("rect").attr("x",k=>h.value(k[0])).attr("y",k=>c.value(k[1])).attr("height",k=>c.value(g.value[0])-c.value(k[1])).attr("class","ttrect").attr("width",s.value).attr("opacity","1%").attr("fill","var(--color-charging)");const H=I.append("g").attr("class","ttmessage").attr("transform",k=>"translate("+(h.value(k[0])-30+s.value/2)+","+(c.value(k[1])-16)+")");H.append("rect").attr("rx",5).attr("width","60").attr("height","30").attr("fill","var(--color-menu)");const P=H.append("text").attr("text-anchor","middle").attr("x",30).attr("y",12).attr("font-size",Gt).attr("fill","var(--color-bg)");return P.append("tspan").attr("x",30).attr("dy","0em").text(k=>ot("%H:%M")(k[0])),P.append("tspan").attr("x",30).attr("dy","1.1em").text(k=>Math.round(k[1]*10)/10+" ct"),"PriceChart.vue"}),J=p(()=>"priceChartCanvas"+e.id);return Ve(()=>{a.value=!a.value}),(L,E)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[gu,mu]),buttons:y(()=>[i(te).active?(l(),$(Me,{key:0,bgcolor:"var(--color-charging)"},{default:y(()=>[z(x(i(te).etCurrentPriceString),1)]),_:1})):w("",!0),i(te).active?(l(),$(Me,{key:1,bgcolor:"var(--color-menu)"},{default:y(()=>[z(x(i(te).etProvider),1)]),_:1})):w("",!0)]),default:y(()=>[o("div",vu,[o("figure",fu,[(l(),m("svg",_u,[o("g",{id:J.value,origin:C.value,transform:"translate("+r.top+","+r.left+") "},null,8,bu)]))])])]),_:1}))}}),Et=U(yu,[["__scopeId","data-v-3ecadd9f"]]),wu={class:"subgrid pt-1"},ku=O({__name:"IlInverter",props:{inverter:{}},setup(t){const e=t,a=p(()=>({color:e.inverter.color}));return(r,n)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[o("span",{class:"invertername",style:Z(a.value)},x(r.inverter.name),5)]),buttons:y(()=>[e.inverter.power<0?(l(),$(Me,{key:0,bgcolor:"var(--color-pv)"},{default:y(()=>[z(x(i($e)(-e.inverter.power)),1)]),_:1})):w("",!0)]),default:y(()=>[o("div",wu,[b(Q,{heading:"Heute:",small:!1,class:"grid-col-4 grid-left"},{default:y(()=>[b(ze,{"watt-h":e.inverter.energy},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Monat:",small:!1,class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.inverter.energy_month},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Jahr:",small:!1,class:"grid-right grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.inverter.energy_year},null,8,["watt-h"])]),_:1})])]),_:1}))}}),Su=U(ku,[["__scopeId","data-v-ee748919"]]),Na=t=>(oe("data-v-b7a71f81"),t=t(),re(),t),xu=Na(()=>o("span",{class:"fas fa-solar-panel me-2",style:{color:"var(--color-pv)"}}," ",-1)),$u=Na(()=>o("span",null,"Wechselrichter",-1)),Mu=O({__name:"InverterList",setup(t){return(e,a)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[xu,$u]),buttons:y(()=>[i(R).pv.power>0?(l(),$(Me,{key:0,bgcolor:"var(--color-pv)"},{default:y(()=>[z(x(i($e)(i(R).pv.power)),1)]),_:1})):w("",!0)]),default:y(()=>[(l(!0),m(G,null,K(i(ke),([r,n])=>(l(),m("div",{key:r,class:"subgrid pb-2"},[b(Su,{inverter:n},null,8,["inverter"])]))),128))]),_:1}))}}),jt=U(Mu,[["__scopeId","data-v-b7a71f81"]]),Iu={class:"row py-0 px-0 m-0"},Cu=["breakpoints"],Pu=O({__name:"CarouselFix",setup(t){let e,a;const r=X(!1),n=p(()=>r.value?{992:{slidesPerView:1,spaceBetween:0}}:{992:{slidesPerView:3,spaceBetween:0}});return co(()=>v.zoomGraph,s=>{if(e){let h=s?"1":"3";a.setAttribute("slides-per-view",h),e.activeIndex=1,e.update()}}),Ve(()=>{let s=document.querySelector(".swiper-carousel");s&&(a=s,e=a.swiper)}),(s,h)=>(l(),m("div",Iu,[o("swiper-container",{"space-between":0,pagination:{clickable:!0},"slides-per-view":"1",class:"p-0 m-0 swiper-carousel",breakpoints:n.value},[o("swiper-slide",null,[o("div",{class:N([i(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(s.$slots,"item1",{},void 0,!0)],2)]),o("swiper-slide",null,[o("div",{class:N([i(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(s.$slots,"item2",{},void 0,!0)],2)]),o("swiper-slide",null,[o("div",{class:N([i(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(s.$slots,"item3",{},void 0,!0)],2)])],8,Cu)]))}}),Bu=U(Pu,[["__scopeId","data-v-dc35b0f6"]]);function Vu(t,e){t=="openWB/graph/boolDisplayLiveGraph"?ue.displayLiveGraph=+e==1:t.match(/^openwb\/graph\/alllivevaluesJson[1-9][0-9]*$/i)?Lu(t,e):t=="openWB/graph/lastlivevaluesJson"?Ou(t,e):t=="openWB/graph/config/duration"&&(pe.duration=JSON.parse(e))}function Lu(t,e){if(!pe.initialized){let a=[];const r=e.toString().split(`
+`);r.length>1?a=r.map(h=>JSON.parse(h)):a=[];const n=t.match(/(\d+)$/g),s=n?n[0]:"";s!=""&&typeof pe.rawDataPacks[+s-1]>"u"&&(pe.rawDataPacks[+s-1]=a,pe.initCounter++)}if(pe.initCounter==16){const a=[];pe.unsubscribeRefresh(),pe.initialized=!0,pe.rawDataPacks.forEach(r=>{r.forEach(n=>{const s=Ha(n);a.push(s)})}),mt(a),pe.subscribeUpdates()}}function Ou(t,e){const a=JSON.parse(e),r=Ha(a);pe.graphRefreshCounter++,mt(f.data.concat(r)),pe.graphRefreshCounter>60&&pe.activate()}function Ha(t){const e=Object.values(V).length>0?Object.values(V)[0].connectedVehicle:0,a=Object.values(V).length>1?Object.values(V)[1].connectedVehicle:1,r="ev"+e+"-soc",n="ev"+a+"-soc",s={};s.date=+t.timestamp*1e3,+t.grid>0?(s.evuIn=+t.grid,s.evuOut=0):+t.grid<=0?(s.evuIn=0,s.evuOut=-t.grid):(s.evuIn=0,s.evuOut=0),+t["pv-all"]>=0?(s.pv=+t["pv-all"],s.inverter=0):(s.pv=0,s.inverter=-t["pv-all"]),s.house=+t["house-power"],+t["bat-all-power"]>0?(s.batOut=0,s.batIn=+t["bat-all-power"]):+t["bat-all-power"]<0?(s.batOut=-t["bat-all-power"],s.batIn=0):(s.batOut=0,s.batIn=0),t["bat-all-soc"]?s.batSoc=+t["bat-all-soc"]:s.batSoc=0,t[r]&&(s["soc"+e]=+t[r]),t[n]&&(s["soc"+a]=+t[n]),s.charging=+t["charging-all"];for(let h=0;h<10;h++){const g="cp"+h;s[g]=+(t[g+"-power"]??0)}return s.selfUsage=s.pv-s.evuOut,s.selfUsage<0&&(s.selfUsage=0),s.devices=0,s}const Au=["evuIn","pv","batOut","evuOut","charging","house"];let St=[];function Tu(t,e){const{entries:a,names:r,totals:n}=JSON.parse(e);Ue.value=new Map(Object.entries(r)),ea(),St=[],Zt.forEach(h=>{A.setEnergyPv(h,0),A.setEnergyBat(h,0)});const s=Du(a);mt(s),Xt(n,St),v.debug&&zu(a,n,s),f.graphMode=="today"&&setTimeout(()=>le.activate(),3e5)}function Du(t){const e=[];let a={};return t.forEach(r=>{a=Wu(r);const n=a;e.push(n)}),e}function Wu(t){const e={};e.date=t.timestamp*1e3,e.evuOut=0,e.evuIn=0,Object.entries(t.counter).forEach(([n,s])=>{s.grid&&(e.evuOut+=s.power_exported,e.evuIn+=s.power_imported,St.includes(n)||St.push(n))}),e.evuOut==0&&e.evuIn==0&&Object.entries(t.counter).forEach(n=>{e.evuOut+=n[1].power_exported,e.evuIn+=n[1].power_imported}),Object.entries(t.pv).forEach(([n,s])=>{n!="all"?e[n]=s.power_exported:e.pv=s.power_exported}),Object.entries(t.bat).length>0?(e.batIn=t.bat.all.power_imported,e.batOut=t.bat.all.power_exported,e.batSoc=t.bat.all.soc??0):(e.batIn=0,e.batOut=0,e.batSoc=0),Object.entries(t.cp).forEach(([n,s])=>{n!="all"?(e[n]=s.power_imported,A.keys().includes(n)||A.addItem(n)):e.charging=s.power_imported}),Object.entries(t.ev).forEach(([n,s])=>{n!="all"&&(e["soc"+n.substring(2)]=s.soc)}),e.devices=0;let a=0;return Object.entries(t.sh).forEach(([n,s])=>{var h;n!="all"&&(e[n]=s.power_imported??0,A.keys().includes(n)||(A.addItem(n),A.items[n].showInGraph=ae.get(+n.slice(2)).showInGraph),(h=ae.get(+n.slice(2)))!=null&&h.countAsHouse?a+=e[n]:e.devices+=s.power_imported??0)}),e.selfUsage=Math.max(0,e.pv-e.evuOut),t.hc&&t.hc.all?e.house=t.hc.all.power_imported-a:e.house=e.evuIn+e.batOut+e.pv-e.evuOut-e.charging-e.devices-e.batOut,e.evuIn+e.batOut+e.pv>0?A.keys().filter(n=>!Au.includes(n)&&n!="charging").forEach(n=>{Do(n,e)}):Object.keys(e).forEach(n=>{e[n+"Pv"]=0,e[n+"Bat"]=0}),e}function zu(t,e,a){console.debug("---------------------------------------- Graph Data -"),console.debug(["--- Incoming graph data:",t]),console.debug(["--- Incoming energy data:",e]),console.debug(["--- Data to be displayed:",a]),console.debug("-----------------------------------------------------")}let _t={};const ta=["charging","house","batIn","devices"],Gu=["evuIn","pv","batOut","batIn","evuOut","devices","sh1","sh2","sh3","sh4","sh5","sh6","sh7","sh8","sh9"];let Ye=[];function Eu(t,e){const{entries:a,names:r,totals:n}=JSON.parse(e);Ue.value=new Map(Object.entries(r)),ea(),Ye=[],ta.forEach(s=>{A.items[s].energyPv=0,A.items[s].energyBat=0}),a.length>0&&mt(Ra(a)),Xt(n,Ye)}function ju(t,e){const{entries:a,names:r,totals:n}=JSON.parse(e);Ue.value=new Map(Object.entries(r)),ea(),Ye=[],ta.forEach(s=>{A.items[s].energyPv=0,A.items[s].energyBat=0}),a.length>0&&mt(Ra(a)),Xt(n,Ye)}function Ra(t){const e=[];let a={};return _t={},t.forEach(r=>{a=Uu(r),e.push(a),Object.keys(a).forEach(n=>{n!="date"&&(a[n]<0&&(console.warn(`Negative energy value for ${n} in row ${a.date}. Ignoring the value.`),a[n]=0),_t[n]?_t[n]+=a[n]:_t[n]=a[n])})}),e}function Uu(t){const e={},a=uo("%Y%m%d")(t.date);a&&(e.date=f.graphMode=="month"?a.getDate():a.getMonth()+1),e.evuOut=0,e.evuIn=0;let r=0,n=0;return Object.entries(t.counter).forEach(([h,g])=>{r+=g.energy_exported,n+=g.energy_imported,g.grid&&(e.evuOut+=g.energy_exported,e.evuIn+=g.energy_imported,Ye.includes(h)||Ye.push(h))}),Ye.length==0&&(e.evuOut=r,e.evuIn=n),e.pv=t.pv.all.energy_exported,Object.entries(t.bat).length>0?(t.bat.all.energy_imported>=0?e.batIn=t.bat.all.energy_imported:(console.warn("ignoring negative value for batIn on day "+e.date),e.batIn=0),t.bat.all.energy_exported>=0?e.batOut=t.bat.all.energy_exported:(console.warn("ignoring negative value for batOut on day "+e.date),e.batOut=0)):(e.batIn=0,e.batOut=0),Object.entries(t.cp).forEach(([h,g])=>{h!="all"?(A.keys().includes(h)||A.addItem(h,V[+h.slice(2)].color),e[h]=g.energy_imported):e.charging=g.energy_imported}),Object.entries(t.ev).forEach(([h,g])=>{h!="all"&&(e["soc-"+h]=g.soc)}),e.devices=Object.entries(t.sh).reduce((h,g)=>(A.keys().includes(g[0])||A.addItem(g[0]),g[1].energy_imported>=0?h+=g[1].energy_imported:console.warn(`Negative energy value for device ${g[0]} in row ${e.date}. Ignoring this value`),h),0),t.hc&&t.hc.all?e.house=t.hc.all.energy_imported:e.house=e.pv+e.evuIn+e.batOut-e.evuOut-e.batIn-e.charging,e.selfUsage=e.pv-e.evuOut,e.evuIn+e.batOut+e.pv>0?A.keys().filter(h=>!Gu.includes(h)).forEach(h=>{Wo(h,e)}):ta.map(h=>{e[h+"Pv"]=0,e[h+"Bat"]=0}),e}function Fu(t,e){const a=Nu(t);if(a&&!ve.value.has(a)){console.warn("Invalid battery index: ",a);return}t=="openWB/bat/config/configured"?ue.isBatteryConfigured=e=="true":t=="openWB/bat/get/power"?+e>0?(j.batIn.power=+e,R.batOut.power=0):(j.batIn.power=0,R.batOut.power=-e):t=="openWB/bat/get/soc"?ue.batterySoc=+e:t=="openWB/bat/get/daily_exported"?R.batOut.energy=+e:t=="openWB/bat/get/daily_imported"?j.batIn.energy=+e:a&&ve.value.has(a)&&(t.match(/^openwb\/bat\/[0-9]+\/get\/daily_exported$/i)?ve.value.get(a).dailyYieldExport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/daily_imported$/i)?ve.value.get(a).dailyYieldImport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/exported$/i)?ve.value.get(a).exported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_state$/i)?ve.value.get(a).faultState=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_str$/i)?ve.value.get(a).faultStr=e:t.match(/^openwb\/bat\/[0-9]+\/get\/imported$/i)?ve.value.get(a).imported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/power$/i)?ve.value.get(a).power=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/soc$/i)?ve.value.get(a).soc=+e:console.log(t,e))}function Nu(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Hu(t,e){if(t=="openWB/optional/et/provider")JSON.parse(e).type==null?te.active=!1:(te.active=!0,te.etProvider=JSON.parse(e).name);else if(t=="openWB/optional/et/get/prices"){const a=JSON.parse(e);te.etPriceList=new Map,Object.keys(a).forEach(r=>{te.etPriceList.set(new Date(+r*1e3),a[r]*1e5)})}}function Ru(t,e){const a=Ja(t);if(a&&!(a in V)){console.warn("Invalid chargepoint id received: "+a);return}if(t=="openWB/chargepoint/get/power"?j.charging.power=+e:t=="openWB/chargepoint/get/daily_imported"&&(j.charging.energy=+e),t=="openWB/chargepoint/get/daily_exported")ue.cpDailyExported=+e;else if(a){if(t.match(/^openwb\/chargepoint\/[0-9]+\/config$/i))if(V[a]){const r=JSON.parse(e);V[a].name=r.name,V[a].icon=r.name,ce["cp"+a]?(ce["cp"+a].name=r.name,ce["cp"+a].icon=r.name):ce["cp"+a]={name:r.name,icon:r.name,color:"var(--color-charging)"}}else console.warn("invalid chargepoint index: "+a);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/state_str$/i))V[a].stateStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_str$/i))V[a].faultStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_state$/i))V[a].faultState=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/power$/i))V[a].power=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/daily_imported$/i))V[a].dailyYield=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/plug_state$/i))V[a].isPluggedIn=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/charge_state$/i))V[a].isCharging=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/manual_lock$/i))V[a].updateIsLocked(e=="true");else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/enabled$/i))V[a].isEnabled=e=="1";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/phases_in_use/i))V[a].phasesInUse=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/current/i))V[a].current=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/currents/i))V[a].currents=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/log/i)){const r=JSON.parse(e);V[a].chargedSincePlugged=r.imported_since_plugged}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/soc$/i)){const r=JSON.parse(e);V[a].soc=r.soc,V[a].waitingForSoc=!1,V[a].rangeCharged=r.range_charged,V[a].rangeUnit=r.range_unit}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/info$/i)){const r=JSON.parse(e);V[a].vehicleName=String(r.name),V[a].updateConnectedVehicle(+r.id)}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/config$/i)){const r=JSON.parse(e);switch(r.chargemode){case"instant_charging":V[a].updateChargeMode(fe.instant_charging);break;case"pv_charging":V[a].updateChargeMode(fe.pv_charging);break;case"scheduled_charging":V[a].updateChargeMode(fe.scheduled_charging);break;case"standby":V[a].updateChargeMode(fe.standby);break;case"stop":V[a].updateChargeMode(fe.stop);break}V[a].chargeTemplate=r.charge_template,V[a].averageConsumption=r.average_consumption}}}function Ju(t,e){const a=Ja(t);if(a!=null){if(!(a in Y)){const r=new Io(a);Y[a]=r}if(t.match(/^openwb\/vehicle\/[0-9]+\/name$/i))Object.values(V).forEach(r=>{r.connectedVehicle==a&&(r.vehicleName=JSON.parse(e))}),Y[a].name=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/soc$/i))Y[a].soc=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/range$/i))isNaN(+e)?Y[a].range=0:Y[a].range=+e;else if(t.match(/^openwb\/vehicle\/[0-9]+\/charge_template$/i))Y[a].updateChargeTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/ev_template$/i))Y[a].updateEvTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/soc_module\/config$/i)){const r=JSON.parse(e);Object.values(V).forEach(n=>{n.connectedVehicle==a&&(n.isSocConfigured=r.type!==null,n.isSocManual=r.type=="manual")})}}}function qu(t,e){if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const r=+a[0],n=JSON.parse(e);ye[r]=n,Yu(r,n)}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/time_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),r=t.match(/[0-9]+$/i);if(a&&r){const n=+a[0].replace(/[^0-9]+/g,""),s=+r[0],h=JSON.parse(e);n in ct||(ct[n]=[]),ct[n][s]=h}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/chargemode\/scheduled_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),r=t.match(/[0-9]+$/i);if(a&&r){const n=+a[0].replace(/[^0-9]+/g,""),s=+r[0],h=JSON.parse(e);n in lt||(lt[n]=[]),lt[n][s]=h}}else if(t.match(/^openwb\/vehicle\/template\/ev_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const r=+a[0],n=JSON.parse(e);Ht[r]=n}}}function Yu(t,e){Object.values(V).forEach(a=>{a.chargeTemplate==t&&(a.updateCpPriority(e.prio),a.updateInstantChargeLimitMode(e.chargemode.instant_charging.limit.selected),a.updateInstantTargetCurrent(e.chargemode.instant_charging.current),a.updateInstantTargetSoc(e.chargemode.instant_charging.limit.soc),a.updateInstantMaxEnergy(e.chargemode.instant_charging.limit.amount),a.updatePvFeedInLimit(e.chargemode.pv_charging.feed_in_limit),a.updatePvMinCurrent(e.chargemode.pv_charging.min_current),a.updatePvMaxSoc(e.chargemode.pv_charging.max_soc),a.updatePvMinSoc(e.chargemode.pv_charging.min_soc),a.updatePvMinSocCurrent(e.chargemode.pv_charging.min_soc_current))})}function Ja(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Qu(t,e){t.match(/^openWB\/LegacySmarthome\/config\//i)?Zu(t,e):t.match(/^openWB\/LegacySmarthome\/Devices\//i)&&Xu(t,e)}function Zu(t,e){const a=qa(t);if(a==null)return;ae.has(a)||qt(a);const r=ae.get(a);t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_configured$/i)?r.configured=e!="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_name$/i)?(r.name=e.toString(),r.icon=e.toString(),ce["sh"+a].name=e.toString(),ce["sh"+a].icon=e.toString()):t.match(/^openWB\/LegacySmarthome\/config\/set\/Devices\/[0-9]+\/mode$/i)?r.isAutomatic=e=="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_canSwitch$/i)?r.canSwitch=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_homeConsumtion$/i)?r.countAsHouse=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_temperatur_configured$/i)&&(r.tempConfigured=+e)}function Xu(t,e){const a=qa(t);if(a==null){console.warn("Smarthome: Missing index in "+t);return}ae.has(a)||qt(a);const r=ae.get(a);if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Watt$/i))r.power=+e,Ku("power");else if(!t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Wh$/i)){if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/RunningTimeToday$/i))r.runningTime=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor0$/i))r.temp[0]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor1$/i))r.temp[1]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor2$/i))r.temp[2]=+e;else if(t.match(/^openWB\/LegacySmartHome\/Devices\/[0-9]+\/Status$/i))switch(+e){case 10:r.status="off";break;case 11:r.status="on";break;case 20:r.status="detection";break;case 30:r.status="timeout";break;default:r.status="off"}}}function Ku(t){switch(t){case"power":j.devices.power=[...ae.values()].filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.power,0);break;case"energy":j.devices.energy=[...ae.values()].filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.energy,0);break;default:console.error("Unknown category")}}function qa(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}const xt=se([]);class aa{constructor(e,a,r,n){_(this,"name");_(this,"children");_(this,"count");_(this,"lastValue");this.name=e,this.children=a,this.count=r,this.lastValue=n}insert(e,a){if(e.length){const r=e.splice(1);if(e[0]==this.name)if(r.length){let n=!1;if(this.children.forEach(s=>{s.name==r[0]&&(s.insert(r,a),n=!0)}),!n){const s=new aa(r[0],[],0,"");s.insert(r,a),this.children.push(s)}}else this.count=this.count+1,this.lastValue=a}}}function eh(t,e){const a=t.split("/");if(a.length){let r=!1;if(xt.forEach(n=>{n.name==a[0]&&(n.insert(a,e),r=!0)}),!r){const n=new aa(a[0],[],0,"");xt.push(n),n.insert(a,e)}}}const th=["openWB/counter/#","openWB/bat/#","openWB/pv/#","openWB/chargepoint/#","openWB/vehicle/#","openWB/general/chargemode_config/pv_charging/#","openWB/optional/et/#","openWB/system/#","openWB/LegacySmartHome/#","openWB/command/"+Yt()+"/#"];function ah(){xo(oh),th.forEach(t=>{qe(t)}),me()}function oh(t,e){eh(t,e.toString());const a=e.toString();t.match(/^openwb\/counter\/[0-9]+\//i)?rh(t,a):t.match(/^openwb\/counter\//i)?nh(t,a):t.match(/^openwb\/bat\//i)?Fu(t,a):t.match(/^openwb\/pv\//i)?sh(t,a):t.match(/^openwb\/chargepoint\//i)?Ru(t,a):t.match(/^openwb\/vehicle\/template\//i)?qu(t,a):t.match(/^openwb\/vehicle\//i)?Ju(t,a):t.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)?ih(t,a):t.match(/^openwb\/graph\//i)?Vu(t,a):t.match(/^openwb\/log\/daily\//i)?Tu(t,a):t.match(/^openwb\/log\/monthly\//i)?Eu(t,a):t.match(/^openwb\/log\/yearly\//i)?ju(t,a):t.match(/^openwb\/optional\/et\//i)?Hu(t,a):t.match(/^openwb\/system\//i)?ch(t,a):t.match(/^openwb\/LegacySmartHome\//i)?Qu(t,a):t.match(/^openwb\/command\//i)&&dh(t,a)}function rh(t,e){const a=t.split("/"),r=+a[2];if(r==ue.evuId?lh(t,e):a[3]=="config",a[3]=="get"&&r in we)switch(a[4]){case"power":we[r].power=+e;break;case"config":break;case"fault_str":break;case"fault_state":break;case"power_factors":break;case"imported":break;case"exported":break;case"frequency":break;case"daily_imported":we[r].energy_imported=+e;break;case"daily_exported":we[r].energy_exported=+e;break}}function nh(t,e){if(t.match(/^openwb\/counter\/get\/hierarchy$/i)){const a=JSON.parse(e);if(a.length){Po(),Cd();for(const r of a)r.type=="counter"&&(ue.evuId=r.id);Ya(a[0])}}else t.match(/^openwb\/counter\/set\/home_consumption$/i)?j.house.power=+e:t.match(/^openwb\/counter\/set\/daily_yield_home_consumption$/i)&&(j.house.energy=+e)}function Ya(t){switch(t.type){case"counter":ru(t.id,t.type);break;case"cp":Co(t.id);break;case"bat":Ga(t.id);break}t.children.forEach(e=>Ya(e))}function sh(t,e){const a=uh(t);a&&!ke.value.has(a)&&qo(a),t=="openWB/pv/get/power"?R.pv.power=-e:t=="openWB/pv/get/daily_exported"?R.pv.energy=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/power$/i)?ke.value.get(a).power=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/daily_exported$/i)?ke.value.get(a).energy=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/monthly_exported$/i)?ke.value.get(a).energy_month=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/yearly_exported$/i)?ke.value.get(a).energy_year=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/exported$/i)&&(ke.value.get(a).energy_total=+e)}function ih(t,e){const a=t.split("/");if(a.length>0)switch(a[4]){case"bat_mode":ue.updatePvBatteryPriority(JSON.parse(e));break}}function lh(t,e){switch(t.split("/")[4]){case"power":+e>0?(R.evuIn.power=+e,j.evuOut.power=0):(R.evuIn.power=0,j.evuOut.power=-e);break;case"daily_imported":R.evuIn.energy=+e;break;case"daily_exported":j.evuOut.energy=+e;break}}function ch(t,e){if(t.match(/^openWB\/system\/device\/[0-9]+\/component\/[0-9]+\/config$/i)){const a=JSON.parse(e);switch(a.type){case"counter":case"consumption_counter":we[a.id]&&(we[a.id].name=a.name);break;case"inverter":case"inverter_secondary":ke.value.has(a.id)||ke.value.set(a.id,new ba(a.id)),ke.value.get(a.id).name=a.name;break;case"bat":ve.value.has(a.id)||Ga(a.id),ve.value.get(a.id).name=a.name}}}function dh(t,e){const a=t.split("/");if(t.match(/^openWB\/command\/[a-z]+\/error$/i)&&a[2]==Yt()){const r=JSON.parse(e);console.error(`Error message from openWB: 
+Command: ${r.command}
+Data: JSON.stringify(err.data)
+Error:
+ ${r.error}`)}}function uh(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}const hh={key:0,class:"fas fa-caret-down"},ph={key:1,class:"fas fa-caret-right"},gh={key:0,class:"content p-2 m-2"},mh={key:1,class:"sublist col-md-9 m-0 p-0 ps-2"},vh=O({__name:"MqttNode",props:{node:{},level:{},hide:{type:Boolean},expandAll:{type:Boolean}},setup(t){const e=t;let a=X(!e.hide),r=X(!1);const n=p(()=>e.node.name),s=p(()=>[...e.node.children].sort((d,C)=>d.name<C.name?-1:1)),h=p(()=>e.node.count>0?"("+e.node.count+")":""),g=p(()=>e.node.children.length),c=p(()=>e.node.lastValue!=""?{"font-style":"italic","grid-column-start":e.level,"grid-column-end":-1}:{"grid-column-start":e.level,"grid-column-end":-1});function u(){g.value>0&&(a.value=!a.value),e.node.lastValue!=""&&(r.value=!r.value)}return(d,C)=>{const J=ho("MqttNode",!0);return l(),m(G,null,[o("div",{class:"name py-2 px-2 m-0",style:Z(c.value),onClick:u},[(i(a)||e.expandAll)&&g.value>0||i(r)?(l(),m("span",hh)):(l(),m("span",ph)),z(" "+x(n.value)+x(h.value),1)],4),i(r)?(l(),m("div",gh,[o("code",null,x(e.node.lastValue),1)])):w("",!0),(i(a)||e.expandAll)&&g.value>0?(l(),m("div",mh,[(l(!0),m(G,null,K(s.value,(L,E)=>(l(),$(J,{key:E,level:e.level+1,node:L,hide:!0,"expand-all":e.expandAll},null,8,["level","node","expand-all"]))),128))])):w("",!0)],64)}}}),fh=U(vh,[["__scopeId","data-v-df7e578a"]]),oa=t=>(oe("data-v-a349646d"),t=t(),re(),t),_h={class:"mqviewer"},bh={class:"row pt-2"},yh={class:"col"},wh=oa(()=>o("h3",{class:"mqtitle ps-2"},"MQTT Message Viewer",-1)),kh=oa(()=>o("hr",null,null,-1)),Sh=oa(()=>o("hr",null,null,-1)),xh={key:0,class:"topiclist"},$h=O({__name:"MQTTViewer",setup(t){Ve(()=>{});const e=X(!1);function a(){e.value=!e.value}const r=p(()=>e.value?"active":"");return(n,s)=>(l(),m("div",_h,[o("div",bh,[o("div",yh,[wh,kh,o("button",{class:N(["btn btn-small btn-outline-primary ms-2",r.value]),onClick:a}," Expand All ",2),Sh])]),i(xt)[0]?(l(),m("div",xh,[(l(!0),m(G,null,K(i(xt)[0].children.sort((h,g)=>h.name<g.name?-1:1),(h,g)=>(l(),$(fh,{key:g,node:h,level:1,hide:!0,"expand-all":e.value},null,8,["node","expand-all"]))),128))])):w("",!0)]))}}),Mh=U($h,[["__scopeId","data-v-a349646d"]]),Ih=["value"],Ch=O({__name:"SelectInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=p({get(){return a.modelValue},set(s){r("update:modelValue",s)}});return(s,h)=>gt((l(),m("select",{id:"selectme","onUpdate:modelValue":h[0]||(h[0]=g=>n.value=g),class:"form-select"},[(l(!0),m(G,null,K(s.options,(g,c)=>(l(),m("option",{key:c,value:g[1]},x(g[0]),9,Ih))),128))],512)),[[po,n.value]])}}),Ph=U(Ch,[["__scopeId","data-v-5e33ce1f"]]),Qa=t=>(oe("data-v-01b18db3"),t=t(),re(),t),Bh=Qa(()=>o("span",{type:"button",class:"float-end mt-0 ms-1","data-bs-toggle":"collapse","data-bs-target":"#themesettings"},[o("span",null,[o("i",{class:"fa-solid fa-circle-check"})])],-1)),Vh={class:"subgrid m-0 p-0"},Lh={class:"settingscolumn"},Oh={class:"settingscolumn"},Ah={class:"settingscolumn"},Th=Qa(()=>o("div",{class:"grid-col-12 mb-3 me-3"},[o("button",{class:"btn btn-sm btn-secondary float-end","data-bs-toggle":"collapse","data-bs-target":"#themesettings"}," Schließen ")],-1)),Dh=O({__name:"ThemeSettings",emits:["reset-arcs"],setup(t,{emit:e}){const a=e,r=[["Dunkel","dark"],["Hell","light"],["Blau","blue"]],n=[["3 kW","0"],["3,1 kW","1"],["3,14 kW","2"],["3,141 kW","3"],["3141 W","4"]],s=[["Orange","normal"],["Grün/Violett","standard"],["Bunt","advanced"]],h=[["Aus","off"],["Menü","navbar"],["Buttonleiste","buttonbar"]],g=[["Aus","no"],['"Alles"-Reiter',"infoview"],["Immer","always"]];return(c,u)=>(l(),$(Ge,{"full-width":!0},{title:y(()=>[z(" Look & Feel ")]),buttons:y(()=>[Bh]),default:y(()=>[o("div",Vh,[o("div",Lh,[b(F,{fullwidth:!0,title:"Farbschema",icon:"fa-adjust",infotext:"Hintergrundfarbe"},{default:y(()=>[b(We,{modelValue:i(v).displayMode,"onUpdate:modelValue":u[0]||(u[0]=d=>i(v).displayMode=d),options:r},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Farbschema Smart-Home-Geräte",icon:"fa-palette",infotext:"Für die Smart-Home-Geräte stehen mehrere Schemata zur Verfügung."},{default:y(()=>[b(We,{modelValue:i(v).smartHomeColors,"onUpdate:modelValue":u[1]||(u[1]=d=>i(v).smartHomeColors=d),options:s},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Grafik: Raster",icon:"fa-th",infotext:"Verwende ein Hintergrundraster in den Grafiken"},{default:y(()=>[b(ie,{modelValue:i(v).showGrid,"onUpdate:modelValue":u[2]||(u[2]=d=>i(v).showGrid=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Variable Bogenlänge",icon:"fa-chart-area",infotext:"Im Graph 'Aktuelle Leistung' können die Bögen immer die volle Länge haben, oder entsprechend des aktuellen Gesamtleistung verkürzt dargestellt werden."},{default:y(()=>[b(ie,{modelValue:i(v).showRelativeArcs,"onUpdate:modelValue":u[3]||(u[3]=d=>i(v).showRelativeArcs=d)},null,8,["modelValue"])]),_:1}),i(v).showRelativeArcs?(l(),$(F,{key:0,fullwidth:!0,title:"Bögen zurücksetzen",icon:"fa-undo",infotext:"Durch Click auf den Button wird die Maximallänge der Bögen auf den aktuellen Wert gesetzt."},{default:y(()=>[i(v).showRelativeArcs?(l(),m("button",{key:0,class:"btn btn-secondary",onClick:u[4]||(u[4]=d=>a("reset-arcs"))}," Reset ")):w("",!0)]),_:1})):w("",!0),b(F,{fullwidth:!0,title:"Anzahl Dezimalstellen",icon:"fa-sliders-h",infotext:"Alle kW- und kWh-Werte werden mit der gewählten Anzahl an Stellen angezeigt."},{default:y(()=>[b(Ph,{modelValue:i(v).decimalPlaces,"onUpdate:modelValue":u[5]||(u[5]=d=>i(v).decimalPlaces=d),options:n},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Uhrzeit anzeigen",icon:"fa-clock",infotext:"Zeige die aktuelle Uhrzeit an. In der Menüleiste oder neben den Lade-Buttons."},{default:y(()=>[b(We,{modelValue:i(v).showClock,"onUpdate:modelValue":u[6]||(u[6]=d=>i(v).showClock=d),options:h},null,8,["modelValue"])]),_:1})]),o("div",Oh,[b(F,{fullwidth:!0,title:"Kompakte Ladepunktliste",icon:"fa-list",infotext:"Zeige eine einzelne Ladepunktliste statt separater Element pro Ladepunkt."},{default:y(()=>[b(We,{modelValue:i(v).shortCpList,"onUpdate:modelValue":u[7]||(u[7]=d=>i(v).shortCpList=d),options:g},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Buttonleiste für Ladepunkte",icon:"fa-window-maximize",infotext:"Informationen zu Ladepunkten über den Diagrammen anzeigen."},{default:y(()=>[b(ie,{modelValue:i(v).showButtonBar,"onUpdate:modelValue":u[8]||(u[8]=d=>i(v).showButtonBar=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Filter-Buttons",icon:"fa-filter",infotext:"Hauptseite mit Buttons zur Auswahl der Kategorie."},{default:y(()=>[b(ie,{modelValue:i(v).showQuickAccess,"onUpdate:modelValue":u[9]||(u[9]=d=>i(v).showQuickAccess=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Breite Widgets",icon:"fa-desktop",infotext:"Widgets immer breit machen"},{default:y(()=>[b(ie,{modelValue:i(v).preferWideBoxes,"onUpdate:modelValue":u[10]||(u[10]=d=>i(v).preferWideBoxes=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Stufenlose Displaybreite",icon:"fa-maximize",infotext:"Die Breite des Displays wird immer voll ausgenutzt. Dies kann in einigen Fällen zu inkorrekter Darstellung führen."},{default:y(()=>[b(ie,{modelValue:i(v).fluidDisplay,"onUpdate:modelValue":u[11]||(u[11]=d=>i(v).fluidDisplay=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Animationen",icon:"fa-film",infotext:"Animationen anzeigen"},{default:y(()=>[b(ie,{modelValue:i(v).showAnimations,"onUpdate:modelValue":u[12]||(u[12]=d=>i(v).showAnimations=d)},null,8,["modelValue"])]),_:1})]),o("div",Ah,[b(F,{fullwidth:!0,title:"Zähler anzeigen",icon:"fa-chart-bar",infotext:"Zeige die Werte zusätzlich angelegter Zähler"},{default:y(()=>[b(ie,{modelValue:i(v).showCounters,"onUpdate:modelValue":u[13]||(u[13]=d=>i(v).showCounters=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Fahrzeuge anzeigen",icon:"fa-car",infotext:"Zeige alle Fahrzeuge mit Ladestand und Reichweite"},{default:y(()=>[b(ie,{modelValue:i(v).showVehicles,"onUpdate:modelValue":u[14]||(u[14]=d=>i(v).showVehicles=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Standardfahrzeug anzeigen",icon:"fa-car",infotext:"Zeige das Standard-Fahrzeug in der Fahzeugliste"},{default:y(()=>[b(ie,{modelValue:i(v).showStandardVehicle,"onUpdate:modelValue":u[15]||(u[15]=d=>i(v).showStandardVehicle=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Preistabelle anzeigen",icon:"fa-car",infotext:"Zeige die Strompreistabelle in einer separaten Box an"},{default:y(()=>[b(ie,{modelValue:i(v).showPrices,"onUpdate:modelValue":u[16]||(u[16]=d=>i(v).showPrices=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Wechselrichter-Details anzeigen",icon:"fa-solar-panel",infotext:"Zeige Details zu den einzelnen Wechselrichtern"},{default:y(()=>[b(ie,{modelValue:i(v).showInverters,"onUpdate:modelValue":u[17]||(u[17]=d=>i(v).showInverters=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Debug-Modus",icon:"fa-bug-slash",infotext:"Kontrollausgaben in der Console sowie Anzeige von Bildschirmbreite und MQ-Viewer"},{default:y(()=>[b(ie,{modelValue:i(v).debug,"onUpdate:modelValue":u[18]||(u[18]=d=>i(v).debug=d)},null,8,["modelValue"])]),_:1})]),Th])]),_:1}))}}),Wh=U(Dh,[["__scopeId","data-v-01b18db3"]]),Se=t=>(oe("data-v-616f0180"),t=t(),re(),t),zh={class:"container-fluid px-2 m-0 theme-colors"},Gh={id:"themesettings",class:"collapse"},Eh={key:2,class:"row py-0 px-0 m-0"},jh={key:3,class:"row py-0 m-0 d-flex justify-content-center"},Uh={key:4,class:"nav nav-tabs nav-justified mx-1 mt-2",role:"tablist"},Fh=go('<a class="nav-link active" data-bs-toggle="tab" data-bs-target="#showAll" data-v-616f0180><i class="fa-solid fa-lg fa-circle-info me-1" data-v-616f0180></i><span class="d-none d-md-inline ms-2" data-v-616f0180>Alles</span></a><a class="nav-link" data-bs-toggle="tab" data-bs-target="#chargepointlist" data-v-616f0180><i class="fa-solid fa-lg fa-charging-station" data-v-616f0180></i><span class="d-none d-md-inline ms-2" data-v-616f0180>Ladepunkte</span></a>',2),Nh={key:0,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pricecharttabbed"},Hh=Se(()=>o("i",{class:"fa-solid fa-lg fa-coins"},null,-1)),Rh=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Strompreis",-1)),Jh=[Hh,Rh],qh={key:1,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#vehiclelist"},Yh=Se(()=>o("i",{class:"fa-solid fa-lg fa-car"},null,-1)),Qh=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Fahrzeuge",-1)),Zh=[Yh,Qh],Xh={key:2,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#batterylist"},Kh=Se(()=>o("i",{class:"fa-solid fa-lg fa-car-battery"},null,-1)),ep=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Speicher",-1)),tp=[Kh,ep],ap={key:3,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#smarthomelist"},op=Se(()=>o("i",{class:"fa-solid fa-lg fa-plug"},null,-1)),rp=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Smart Home",-1)),np=[op,rp],sp={key:4,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#counterlist"},ip=Se(()=>o("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),lp=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Zähler",-1)),cp=[ip,lp],dp={key:5,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#inverterlist"},up=Se(()=>o("i",{class:"fa-solid fa-lg fa-solar-panel"},null,-1)),hp=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Wechselrichter",-1)),pp=[up,hp],gp={key:5,id:"cpContent",class:"tab-content mx-0 pt-1"},mp={id:"showAll",class:"tab-pane active",role:"tabpanel","aria-labelledby":"showall-tab"},vp={class:"row py-0 m-0 d-flex justify-content-center"},fp={id:"chargepointlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"chargepoint-tab"},_p={class:"row py-0 m-0 d-flex justify-content-center"},bp={id:"vehiclelist",class:"tab-pane",role:"tabpanel","aria-labelledby":"vehicle-tab"},yp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},wp={id:"batterylist",class:"tab-pane",role:"tabpanel","aria-labelledby":"battery-tab"},kp={class:"row py-0 m-0 d-flex justify-content-center"},Sp={id:"smarthomelist",class:"tab-pane",role:"tabpanel","aria-labelledby":"smarthome-tab"},xp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},$p={id:"counterlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"counter-tab"},Mp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},Ip={id:"inverterlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"inverter-tab"},Cp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},Pp={id:"pricecharttabbed",class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},Bp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},Vp={key:0,class:"row p-2 mt-5"},Lp={class:"col p-2"},Op=Se(()=>o("hr",null,null,-1)),Ap={class:"d-flex justify-content-between"},Tp={class:"mx-4"},Dp={key:0},Wp=O({__name:"ColorsTheme",setup(t){const e=X(!1),a=p(()=>[...ae.values()].filter(h=>h.configured).length>0);function r(){Ma()}function n(){e.value=!e.value}Ve(()=>{r(),window.addEventListener("resize",Uo),window.addEventListener("focus",s),ah()});function s(){document.hasFocus()&&me(!0)}return(h,g)=>(l(),m(G,null,[o("div",zh,[o("div",Gh,[b(Wh,{onResetArcs:i(Ho)},null,8,["onResetArcs"])]),i(v).showButtonBar?(l(),$($d,{key:0})):w("",!0),w("",!0),(l(),m("div",Eh,[b(Bu,null,{item1:y(()=>[b($r)]),item2:y(()=>[b(Nn)]),item3:y(()=>[b(gs)]),_:1})])),i(v).showQuickAccess?w("",!0):(l(),m("div",jh,[b(Lt,{id:"1",compact:i(v).shortCpList=="always"},null,8,["compact"]),i(v).showPrices?(l(),$(Et,{key:0,id:"NoTabs"})):w("",!0),i(v).showVehicles?(l(),$(Dt,{key:1})):w("",!0),b(Ot),a.value?(l(),$(At,{key:2})):w("",!0),i(v).showCounters?(l(),$(Tt,{key:3})):w("",!0),i(v).showInverters?(l(),$(jt,{key:4})):w("",!0)])),i(v).showQuickAccess?(l(),m("nav",Uh,[Fh,i(v).showPrices?(l(),m("a",Nh,Jh)):w("",!0),i(v).showVehicles?(l(),m("a",qh,Zh)):w("",!0),i(ue).isBatteryConfigured?(l(),m("a",Xh,tp)):w("",!0),a.value?(l(),m("a",ap,np)):w("",!0),i(v).showCounters?(l(),m("a",sp,cp)):w("",!0),i(v).showInverters?(l(),m("a",dp,pp)):w("",!0)])):w("",!0),i(v).showQuickAccess?(l(),m("div",gp,[o("div",mp,[o("div",vp,[b(Lt,{id:"2",compact:i(v).shortCpList!="no"},null,8,["compact"]),i(v).showPrices?(l(),$(Et,{key:0,id:"Overview"})):w("",!0),i(v).showVehicles?(l(),$(Dt,{key:1})):w("",!0),b(Ot),a.value?(l(),$(At,{key:2})):w("",!0),i(v).showCounters?(l(),$(Tt,{key:3})):w("",!0),i(v).showInverters?(l(),$(jt,{key:4})):w("",!0)])]),o("div",fp,[o("div",_p,[b(Lt,{id:"3",compact:i(v).shortCpList=="always"},null,8,["compact"])])]),o("div",bp,[i(v).showVehicles?(l(),m("div",yp,[b(Dt)])):w("",!0)]),o("div",wp,[o("div",kp,[b(Ot)])]),o("div",Sp,[a.value?(l(),m("div",xp,[b(At)])):w("",!0)]),o("div",$p,[i(v).showCounters?(l(),m("div",Mp,[b(Tt)])):w("",!0)]),o("div",Ip,[i(v).showInverters?(l(),m("div",Cp,[b(jt)])):w("",!0)]),o("div",Pp,[i(v).showPrices?(l(),m("div",Bp,[b(Et,{id:"Tabbed"})])):w("",!0)])])):w("",!0)]),i(v).debug?(l(),m("div",Vp,[o("div",Lp,[Op,o("div",Ap,[o("p",Tp,"Screen Width: "+x(i(wt).x),1),o("button",{class:"btn btn-sm btn-secondary mx-4",onClick:n}," MQ Viewer ")]),e.value?(l(),m("hr",Dp)):w("",!0),e.value?(l(),$(Mh,{key:1})):w("",!0)])])):w("",!0)],64))}}),zp=U(Wp,[["__scopeId","data-v-616f0180"]]),Ct=t=>(oe("data-v-ed619966"),t=t(),re(),t),Gp={class:"navbar navbar-expand-lg px-0 mb-0"},Ep=Ct(()=>o("a",{href:"/",class:"navbar-brand"},[o("span",null,"openWB")],-1)),jp={key:0,class:"position-absolute-50 navbar-text ms-4 navbar-time",style:{color:"var(--color-menu)"}},Up=Ct(()=>o("button",{class:"navbar-toggler togglebutton ps-5",type:"button","data-bs-toggle":"collapse","data-bs-target":"#mainNavbar","aria-controls":"mainNavbar","aria-expanded":"false","aria-label":"Toggle navigation"},[o("span",{class:"fa-solid fa-ellipsis-vertical"})],-1)),Fp=Ct(()=>o("div",{id:"mainNavbar",class:"collapse navbar-collapse justify-content-end"},[o("div",{class:"nav navbar-nav"},[o("a",{id:"navStatus",class:"nav-link",href:"../../settings/#/Status"},"Status"),o("div",{class:"nav-item dropdown"},[o("a",{id:"loggingDropdown",class:"nav-link",href:"#",role:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[z("Auswertungen "),o("i",{class:"fa-solid fa-caret-down"})]),o("div",{class:"dropdown-menu","aria-labelledby":"loggingDropdown"},[o("a",{href:"../../settings/#/Logging/ChargeLog",class:"dropdown-item"},"Ladeprotokoll"),o("a",{href:"../../settings/#/Logging/Chart",class:"dropdown-item"},"Diagramme")])]),o("div",{class:"nav-item dropdown"},[o("a",{id:"settingsDropdown",class:"nav-link",href:"#",role:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[z("Einstellungen "),o("span",{class:"fa-solid fa-caret-down"})]),o("div",{class:"dropdown-menu","aria-labelledby":"settingsDropdown"},[o("a",{id:"navSettings",class:"nav-link",href:"../../settings/index.html"},"openWB"),o("a",{class:"nav-link","data-bs-toggle":"collapse","data-bs-target":"#themesettings","aria-expanded":"false","aria-controls":"themeSettings"},[o("span",null,[z("Look&Feel"),o("span",{class:"fa-solid fa-caret-down"})])])])])])],-1)),Np=Ct(()=>o("hr",{class:"m-0 p-0 mb-2"},null,-1)),Hp=[Np],Rp=O({__name:"NavigationBar",setup(t){let e;const a=p(()=>v.fluidDisplay?"container-fluid":"container-lg");return Ve(()=>{e=setInterval(()=>{Rt.value=new Date},1e3)}),mo(()=>{clearInterval(e)}),(r,n)=>(l(),m(G,null,[o("nav",Gp,[o("div",{class:N(a.value)},[Ep,i(v).showClock=="navbar"?(l(),m("span",jp,x(i(Ca)(i(Rt))),1)):w("",!0),Up,Fp],2)]),o("div",{class:N(a.value)},Hp,2)],64))}}),Jp=U(Rp,[["__scopeId","data-v-ed619966"]]),qp={id:"app",class:"m-0 p-0"},Yp={class:"row p-0 m-0"},Qp={class:"col-12 p-0 m-0"},Zp=O({__name:"App",setup(t){const e=p(()=>v.fluidDisplay?"container-fluid":"container-lg");return(a,r)=>(l(),m("div",qp,[b(Jp),o("div",{class:N(["p-0",e.value])},[o("div",Yp,[o("div",Qp,[b(zp)])])],2)]))}}),Xp=vo(Zp);fo();Xp.mount("#app");
diff --git a/packages/modules/web_themes/colors/web/assets/index-D3pPSkWs.css b/packages/modules/web_themes/colors/web/assets/index-DO1I-sJT.css
similarity index 73%
rename from packages/modules/web_themes/colors/web/assets/index-D3pPSkWs.css
rename to packages/modules/web_themes/colors/web/assets/index-DO1I-sJT.css
index 70c1cd6a65..19356ca5c4 100644
--- a/packages/modules/web_themes/colors/web/assets/index-D3pPSkWs.css
+++ b/packages/modules/web_themes/colors/web/assets/index-DO1I-sJT.css
@@ -1,4 +1,4 @@
-@charset "UTF-8";.form-select[data-v-7b8949f3]{background-color:var(--color-input);border:1;border-color:var(--color-bg);color:var(--color-bg);text-align:start;font-size:var(--font-small)}.commitbutton[data-v-7b8949f3]{background-color:var(--color-bg);color:var(--color-input)}option[data-v-7b8949f3]{color:green}.form-select[data-v-7b8949f3]{font-size:var(--font-verysmall);background-color:var(--color-menu);color:var(--color-fg)}.optiontable[data-v-7b8949f3]{background-color:var(--color-menu)}.optionbutton[data-v-7b8949f3]{font-size:var(--font-small);color:#fff;background-color:var(--color-menu);font-size:var(--font-verysmall);text-align:center}.dropdown-menu[data-v-7b8949f3]{background-color:var(--color-menu)}.dropdown-toggle[data-v-7b8949f3]{background-color:var(--color-menu);color:#fff;border:1px solid var(--color-bg);font-size:var(--font-verysmall)}.radiobutton[data-v-82ab6829]{border:0px solid var(--color-menu);opacity:1}.btn-outline-secondary.active[data-v-82ab6829]{background-color:var(--color-bg);border:0px solid var(--color-fg);opacity:.8}.btn-group[data-v-82ab6829]{border:1px solid var(--color-menu)}.rounded-pill[data-v-d75ec1a4]{background-color:var(--color-menu)}.arrowButton[data-v-d75ec1a4]{border:0}.datebadge[data-v-d75ec1a4]{background-color:var(--color-bg);color:var(--color-menu);border:1px solid var(--color-menu);font-size:var(--font-small);font-weight:400}.arrowButton[data-v-d75ec1a4],.fa-magnifying-glass[data-v-9dcdaf2b]{color:var(--color-menu)}.dateWbBadge[data-v-9dcdaf2b]{background-color:var(--color-menu);color:var(--color-bg);font-size:var(--font-medium);font-weight:400}.waitsign[data-v-9dcdaf2b]{text-align:center;font-size:var(--font-medium);color:var(--color-fg);border:1px solid var(--color-bg);padding:2em;margin:4em 2em 2em;background-color:var(--color-bg)}.heading[data-v-f6af00e8]{color:var(--color-menu);font-weight:400;text-align:center}.content[data-v-f6af00e8]{color:var(--color-fg);font-weight:700}@supports (grid-template-columns: subgrid){.wb-subwidget[data-v-e989060d]{border-top:.5px solid var(--color-scale);display:grid;grid-template-columns:subgrid;grid-column:1 / 13}}@supports not (grid-template-columns: subgrid){.wb-subwidget[data-v-e989060d]{border-top:.5px solid var(--color-scale);display:grid;grid-template-columns:repeat(12,auto);grid-column:1 / 13}}.titlerow[data-v-e989060d]{grid-column:1 / 13}@supports (grid-template-columns: subgrid){.contentrow[data-v-e989060d]{display:grid;grid-template-columns:subgrid;grid-column:1 / 13;align-items:top}}@supports not (grid-template-columns: subgrid){.contentrow[data-v-e989060d]{display:grid;align-items:top;grid-template-columns:repeat(12,auto)}}.widgetname[data-v-e989060d]{font-weight:700;font-size:var(--font-large)}.infotext[data-v-b935eb33]{font-size:var(--font-settings);color:var(--color-battery)}.item-icon[data-v-b935eb33]{color:var(--color-menu);font-size:var(--font-settings)}.titlecolumn[data-v-b935eb33]{color:var(--color-fg);font-size:var(--font-settings)}.selectors[data-v-b935eb33],.configitem[data-v-b935eb33]{font-size:var(--font-settings)}.minlabel[data-v-17a828b1],.maxlabel[data-v-17a828b1]{color:var(--color-menu)}.valuelabel[data-v-17a828b1]{color:var(--color-fg)}.minusButton[data-v-17a828b1],.plusButton[data-v-17a828b1]{color:var(--color-menu)}.radiobutton[data-v-df222cbe]{border:.5px solid var(--color-input);opacity:.5;font-size:var(--font-settings)}.btn-outline-secondary.active[data-v-df222cbe]{background-color:var(--color-bg);border:1px solid var(--color-fg);box-shadow:0 .5rem 1rem #00000026;opacity:1}.chargeConfigSelect[data-v-0303d179]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-0303d179]{color:var(--color-charging)}.chargeConfigSelect[data-v-eeab85c5]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-eeab85c5]{color:var(--color-pv)}.tablecell[data-v-e8f5ad9d]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;font-size:var(--font-medium)}.tableheader[data-v-e8f5ad9d]{color:var(--color-menu);background-color:var(--color-bg);text-align:center;font-style:normal}.heading[data-v-e8f5ad9d]{color:var(--color-battery)}.left[data-v-e8f5ad9d]{text-align:left}.tablecell[data-v-192e287b]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;font-size:var(--font-medium)}.tableheader[data-v-192e287b]{color:var(--color-menu);background-color:var(--color-bg);text-align:center;font-style:normal}.heading[data-v-192e287b]{color:var(--color-battery)}.left[data-v-192e287b]{text-align:left}.right[data-v-192e287b]{text-align:right}.status-string[data-v-fcb57a44]{font-size:var(--font-normal);font-style:italic;color:var(--color-battery)}.chargeConfigSelect[data-v-fcb57a44]{background:var(--color-bg);color:var(--color-fg)}.chargeModeOption[data-v-fcb57a44]{background:green;color:#00f}.nav-tabs .nav-link[data-v-fcb57a44]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-fcb57a44]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-fcb57a44]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:1px solid var(--color-menu)}.settingsheader[data-v-fcb57a44]{color:var(--color-charging)}.status-string[data-v-f0d31d6f]{font-size:var(--font-normal);font-style:italic;color:var(--color-battery)}.chargeConfigSelect[data-v-f0d31d6f]{background:var(--color-bg);color:var(--color-fg)}.chargeModeOption[data-v-f0d31d6f]{background:green;color:#00f}.nav-tabs .nav-link[data-v-f0d31d6f]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-f0d31d6f]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-f0d31d6f]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:1px solid var(--color-menu)}.settingsheader[data-v-f0d31d6f]{color:var(--color-charging);font-size:16px;font-weight:700}hr[data-v-f0d31d6f]{color:var(--color-menu)}.color-charging[data-v-5286b19d]{color:var(--color-charging)}.fa-circle-check[data-v-5286b19d]{color:var(--color-menu)}.settingsheader[data-v-5286b19d]{color:var(--color-charging);font-size:16px;font-weight:700}.providername[data-v-5286b19d]{color:var(--color-axis);font-size:16px}.status-string[data-v-1164316d]{font-size:var(--font-settings);font-style:italic;color:var(--color-battery)}.nav-tabs .nav-link[data-v-1164316d]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-1164316d]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-1164316d]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:0px solid var(--color-menu)}.heading[data-v-1164316d]{color:var(--color-menu)}.item[data-v-1164316d]{grid-column:span 12}.tabarea[data-v-1164316d]{justify-self:stretch}.batIcon[data-v-c2024ec8]{color:var(--color-menu)}.wb-widget[data-v-1d5bc1d9]{width:100%;height:100%;border-radius:30px}.widgetname[data-v-1d5bc1d9]{font-weight:700;color:var(--color-fg);font-size:var(--font-large)}.fa-star[data-v-c32ef31e]{color:var(--color-evu)}.fa-clock[data-v-c32ef31e]{color:var(--color-battery)}.fa-car[data-v-c32ef31e],.fa-ellipsis-vertical[data-v-c32ef31e],.fa-circle-check[data-v-c32ef31e]{color:var(--color-menu)}.fa-coins[data-v-c32ef31e]{color:var(--color-battery)}.fa-edit[data-v-c32ef31e]{color:var(--color-menu)}.socEditor[data-v-c32ef31e]{border:1px solid var(--color-menu);justify-self:stretch}.targetCurrent[data-v-c32ef31e]{color:var(--color-menu)}.priceEditor[data-v-c32ef31e]{border:1px solid var(--color-menu);justify-self:stretch}.chargemodes[data-v-c32ef31e]{grid-column:1 / 13;justify-self:center}.chargeinfo[data-v-c32ef31e]{display:grid;grid-template-columns:repeat(12,auto);justify-content:space-between}.errorWbBadge[data-v-c32ef31e]{color:var(--color-bg);background-color:var(--color-evu);font-size:var(--font-small)}@font-face{font-family:swiper-icons;src:url(data:application/font-woff;charset=utf-8;base64,\ d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA);font-weight:400;font-style:normal}:root{--swiper-theme-color: #007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function, initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-slide,.swiper-3d .swiper-cube-shadow{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-slide-shadow-bottom{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:#00000026}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,#00000080,#0000)}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color, var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color: #fff}.swiper-lazy-preloader-black{--swiper-preloader-color: #000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-pagination-fraction,.swiper-pagination-custom,.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal{bottom:var(--swiper-pagination-bottom, 8px);top:var(--swiper-pagination-top, auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));height:var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius, 50%);background:var(--swiper-pagination-bullet-inactive-color, #000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color, var(--swiper-theme-color))}.swiper-vertical>.swiper-pagination-bullets,.swiper-pagination-vertical.swiper-pagination-bullets{right:var(--swiper-pagination-right, 8px);left:var(--swiper-pagination-left, auto);top:50%;transform:translate3d(0,-50%,0)}.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap, 6px) 0;display:block}.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap, 4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translate(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color, inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, .25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color, var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size, 4px);left:0;top:0}.swiper-vertical>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite{width:var(--swiper-pagination-progressbar-size, 4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.modal-footer[data-v-eaefae30],.modal-header[data-v-eaefae30],.modal-body[data-v-eaefae30]{background:var(--color-bg)}.btn-close[data-v-eaefae30]{color:var(--color-fg)}.modal-footer[data-v-eaefae30]{text-align:right}.modal-header .btn-close[data-v-eaefae30]{color:var(--color-fg);background:var(--color-bg);border:0px}.modal.fade .modal-dialog[data-v-eaefae30]{transition:transform 1s ease-out;transform:none;scale:.6}.modal.show .modal-dialog[data-v-eaefae30]{transition:transform .3s ease-in;transform:none;scale:1}.tablerow[data-v-2f1df729]{margin:14px;border-top:.1px solid var(--color-scale)}.tablecell[data-v-2f1df729]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;padding-top:2px;padding-left:2px;padding-right:2px;vertical-align:baseline;line-height:1.4rem;font-size:var(--font-small)}.buttoncell[data-v-2f1df729]{background-color:var(--color-bg);padding:0;margin:0}.left[data-v-2f1df729]{text-align:left}.tablecell.right[data-v-2f1df729]{text-align:right}.tablecolum1[data-v-2f1df729]{color:var(--color-fg);text-align:left;margin:0;padding:0}.tableicon[data-v-2f1df729]{color:var(--color-menu)}.fa-star[data-v-2f1df729]{color:var(--color-evu)}.fa-clock[data-v-2f1df729]{color:var(--color-battery)}.socEditor[data-v-2f1df729]{border:1px solid var(--color-menu);background-color:var(--color-bg)}.socEditRow td[data-v-2f1df729]{background-color:var(--color-bg)}.fa-circle-check[data-v-2f1df729]{color:var(--color-menu)}.socEditTitle[data-v-2f1df729]{color:var(--color-fg)}.statusbadge[data-v-2f1df729]{background-color:var(--color-bg);font-weight:700;font-size:var(--font-verysmall)}.modebadge[data-v-2f1df729]{color:var(--color-bg)}.cpname[data-v-2f1df729]{font-size:var(--font-small)}.fa-edit[data-v-2f1df729]{color:var(--color-menu)}.infolist[data-v-2f1df729]{justify-content:center}.pillWbBadge[data-v-28220a9a]{font-size:(var--font-small);font-weight:regular}.tableheader[data-v-b8c6b557]{margin:0;padding-left:0;background-color:var(--color-bg);color:var(--color-menu)}.alignleft[data-v-b8c6b557]{text-align:left}.aligncenter[data-v-b8c6b557]{text-align:center}.alignright[data-v-b8c6b557]{text-align:right}.table[data-v-b8c6b557]{border-spacing:1rem;background-color:var(--color-bg)}.priceWbBadge[data-v-b8c6b557]{background-color:var(--color-menu);font-weight:400}.fa-charging-station[data-v-b8c6b557]{color:var(--color-charging)}.plugIndicator[data-v-bde17905]{color:#fff;border:1px solid white}.chargeButton[data-v-bde17905]{color:#fff}.left[data-v-bde17905]{float:left}.right[data-v-bde17905]{float:right}.center[data-v-bde17905]{margin:auto}.time-display[data-v-791e4be0]{font-weight:700;color:var(--color-menu);font-size:var(--font-normal)}.battery-title[data-v-4b8dfbb9]{color:var(--color-battery);font-size:var(--font-medium)}.battery-color[data-v-8e4dd779]{color:var(--color-battery)}.fg-color[data-v-8e4dd779]{color:var(--color-fg)}.menu-color[data-v-8e4dd779],.todaystring[data-v-8e4dd779]{color:var(--color-menu)}.statusbutton[data-v-92893218]{font-size:var(--font-extralarge)}.sh-title[data-v-5b5cf6b3]{color:var(--color-title)}.tableheader[data-v-5b5cf6b3]{background-color:var(--color-bg);color:var(--color-menu)}.fa-ellipsis-vertical[data-v-5b5cf6b3],.fa-circle-check[data-v-5b5cf6b3]{color:var(--color-menu)}.smarthome[data-v-5b5cf6b3]{color:var(--color-devices)}.idWbBadge[data-v-01dd8c4d]{background-color:var(--color-menu);font-weight:400}.countername[data-v-01dd8c4d]{font-size:var(--font-medium)}.statusbutton[data-v-5f059284]{font-size:var(--font-large)}.modebutton[data-v-5f059284]{background-color:var(--color-menu);font-size:var(--font-verysmall);font-weight:400}.tempWbBadge[data-v-5f059284]{background-color:var(--color-battery);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.idWbBadge[data-v-f92f4f7b]{background-color:var(--color-menu);font-weight:400}.status-string[data-v-f92f4f7b]{text-align:center}.statusbutton[data-v-23b437ea]{font-size:var(--font-large)}.modebutton[data-v-23b437ea]{background-color:var(--color-menu);font-size:var(--font-verysmall);font-weight:400}.tempWbBadge[data-v-23b437ea]{background-color:var(--color-battery);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.priceWbBadge[data-v-3ecadd9f]{background-color:var(--color-charging);font-weight:400}.providerWbBadge[data-v-3ecadd9f]{background-color:var(--color-menu);font-weight:400}.grapharea[data-v-3ecadd9f]{grid-column-start:1;grid-column-end:13;width:100%;object-fit:cover;max-height:100%;justify-items:stretch}.pricefigure[data-v-3ecadd9f]{justify-self:stretch}.modeWbBadge[data-v-5a6c3d06]{background-color:var(--color-pv);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.invertername[data-v-5a6c3d06]{font-size:var(--font-normal)}.powerWbBadge[data-v-b7a71f81]{background-color:var(--color-pv);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.button[data-v-dc35b0f6]{color:var(--color-fg)}.name[data-v-df7e578a]{font-size:1rem;color:#000;border:1px solid white}.content[data-v-df7e578a]{grid-column:1 / -1;border:solid 1px black;border-radius:10px}.sublist[data-v-df7e578a]{grid-column:1 / -1;display:grid;grid-template-columns:subgrid}.mqviewer[data-v-a349646d]{background-color:#fff;color:#000}.topiclist[data-v-a349646d]{display:grid;grid-template-columns:repeat(40,1fr)}.topnode[data-v-a349646d]{grid-column-start:1;grid-column-end:-1}.mqtitle[data-v-a349646d]{color:#000}.form-select[data-v-5e33ce1f]{background-color:var(--color-input);color:#000;border:1px solid var(--color-bg);font-size:var(--font-settings)}.fa-circle-check[data-v-01b18db3]{font-size:var(--font-large);background-color:var(--color-bg);color:var(--color-menu)}.closebutton[data-v-01b18db3]{justify-self:end}.nav-tabs[data-v-733ad1cd]{border-bottom:.5px solid var(--color-menu);background-color:var(--color-bg)}.nav-tabs .nav-link[data-v-733ad1cd]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-733ad1cd]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-733ad1cd]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:.5px solid var(--color-menu);border-bottom:0px solid var(--color-menu);box-shadow:0 .5rem 1rem #00000026}.fa-circle-info[data-v-733ad1cd]{color:var(--color-fg)}.fa-charging-station[data-v-733ad1cd]{color:var(--color-charging)}.fa-car-battery[data-v-733ad1cd]{color:var(--color-battery)}.fa-plug[data-v-733ad1cd]{color:var(--color-devices)}.fa-bolt[data-v-733ad1cd]{color:var(--color-evu)}.fa-car[data-v-733ad1cd]{color:var(--color-charging)}.fa-coins[data-v-733ad1cd]{color:var(--color-battery)}.fa-solar-panel[data-v-733ad1cd]{color:var(--color-pv)}.navbar[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.dropdown-menu[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg)}.dropdown-item[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.btn[data-v-ed619966]{font-size:var(--font-medium);background-color:var(--color-bg);color:var(--color-fg)}.navbar-brand[data-v-ed619966]{font-weight:700;color:var(--color-fg);font-size:var(--font-normal)}.nav-link[data-v-ed619966]{color:var(--color-fg);border-color:red;font-size:var(--font-normal)}.navbar-toggler[data-v-ed619966]{color:var(--color-fg);border-color:var(--color-bg)}.navbar-time[data-v-ed619966]{font-weight:700;color:var(--color-menu);font-size:var(--font-normal)}.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius, .1em);border:var(--fa-border-width, .08em) var(--fa-border-style, solid) var(--fa-border-color, #eee);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) )}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration, 2s);animation-duration:var(--fa-animation-duration, 2s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, steps(8));animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle, none));transform:rotate(var(--fa-rotate-angle, none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0:before{content:"0"}.fa-1:before{content:"1"}.fa-2:before{content:"2"}.fa-3:before{content:"3"}.fa-4:before{content:"4"}.fa-5:before{content:"5"}.fa-6:before{content:"6"}.fa-7:before{content:"7"}.fa-8:before{content:"8"}.fa-9:before{content:"9"}.fa-a:before{content:"A"}.fa-address-book:before,.fa-contact-book:before{content:""}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:""}.fa-align-center:before{content:""}.fa-align-justify:before{content:""}.fa-align-left:before{content:""}.fa-align-right:before{content:""}.fa-anchor:before{content:""}.fa-angle-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-double-down:before,.fa-angles-down:before{content:""}.fa-angle-double-left:before,.fa-angles-left:before{content:""}.fa-angle-double-right:before,.fa-angles-right:before{content:""}.fa-angle-double-up:before,.fa-angles-up:before{content:""}.fa-ankh:before{content:""}.fa-apple-alt:before,.fa-apple-whole:before{content:""}.fa-archway:before{content:""}.fa-arrow-down:before{content:""}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:""}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:""}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:""}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:""}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:""}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:""}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:""}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:""}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:""}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:""}.fa-arrow-trend-down:before{content:""}.fa-arrow-trend-up:before{content:""}.fa-arrow-turn-down:before,.fa-level-down:before{content:""}.fa-arrow-turn-up:before,.fa-level-up:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:""}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:""}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:""}.fa-arrow-up-from-bracket:before{content:""}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:""}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:""}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:""}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:""}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:""}.fa-arrows-h:before,.fa-arrows-left-right:before{content:""}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:""}.fa-arrows-up-down:before,.fa-arrows-v:before{content:""}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:""}.fa-asterisk:before{content:"*"}.fa-at:before{content:"@"}.fa-atom:before{content:""}.fa-audio-description:before{content:""}.fa-austral-sign:before{content:""}.fa-award:before{content:""}.fa-b:before{content:"B"}.fa-baby:before{content:""}.fa-baby-carriage:before,.fa-carriage-baby:before{content:""}.fa-backward:before{content:""}.fa-backward-fast:before,.fa-fast-backward:before{content:""}.fa-backward-step:before,.fa-step-backward:before{content:""}.fa-bacon:before{content:""}.fa-bacteria:before{content:""}.fa-bacterium:before{content:""}.fa-bag-shopping:before,.fa-shopping-bag:before{content:""}.fa-bahai:before{content:""}.fa-baht-sign:before{content:""}.fa-ban:before,.fa-cancel:before{content:""}.fa-ban-smoking:before,.fa-smoking-ban:before{content:""}.fa-band-aid:before,.fa-bandage:before{content:""}.fa-barcode:before{content:""}.fa-bars:before,.fa-navicon:before{content:""}.fa-bars-progress:before,.fa-tasks-alt:before{content:""}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:""}.fa-baseball-ball:before,.fa-baseball:before{content:""}.fa-baseball-bat-ball:before{content:""}.fa-basket-shopping:before,.fa-shopping-basket:before{content:""}.fa-basketball-ball:before,.fa-basketball:before{content:""}.fa-bath:before,.fa-bathtub:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-half:before{content:""}.fa-battery-2:before,.fa-battery-quarter:before{content:""}.fa-battery-4:before,.fa-battery-three-quarters:before{content:""}.fa-bed:before{content:""}.fa-bed-pulse:before,.fa-procedures:before{content:""}.fa-beer-mug-empty:before,.fa-beer:before{content:""}.fa-bell:before{content:""}.fa-bell-concierge:before,.fa-concierge-bell:before{content:""}.fa-bell-slash:before{content:""}.fa-bezier-curve:before{content:""}.fa-bicycle:before{content:""}.fa-binoculars:before{content:""}.fa-biohazard:before{content:""}.fa-bitcoin-sign:before{content:""}.fa-blender:before{content:""}.fa-blender-phone:before{content:""}.fa-blog:before{content:""}.fa-bold:before{content:""}.fa-bolt:before,.fa-zap:before{content:""}.fa-bolt-lightning:before{content:""}.fa-bomb:before{content:""}.fa-bone:before{content:""}.fa-bong:before{content:""}.fa-book:before{content:""}.fa-atlas:before,.fa-book-atlas:before{content:""}.fa-bible:before,.fa-book-bible:before{content:""}.fa-book-journal-whills:before,.fa-journal-whills:before{content:""}.fa-book-medical:before{content:""}.fa-book-open:before{content:""}.fa-book-open-reader:before,.fa-book-reader:before{content:""}.fa-book-quran:before,.fa-quran:before{content:""}.fa-book-dead:before,.fa-book-skull:before{content:""}.fa-bookmark:before{content:""}.fa-border-all:before{content:""}.fa-border-none:before{content:""}.fa-border-style:before,.fa-border-top-left:before{content:""}.fa-bowling-ball:before{content:""}.fa-box:before{content:""}.fa-archive:before,.fa-box-archive:before{content:""}.fa-box-open:before{content:""}.fa-box-tissue:before{content:""}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:""}.fa-braille:before{content:""}.fa-brain:before{content:""}.fa-brazilian-real-sign:before{content:""}.fa-bread-slice:before{content:""}.fa-briefcase:before{content:""}.fa-briefcase-medical:before{content:""}.fa-broom:before{content:""}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:""}.fa-brush:before{content:""}.fa-bug:before{content:""}.fa-bug-slash:before{content:""}.fa-building:before{content:""}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:""}.fa-bullhorn:before{content:""}.fa-bullseye:before{content:""}.fa-burger:before,.fa-hamburger:before{content:""}.fa-bus:before{content:""}.fa-bus-alt:before,.fa-bus-simple:before{content:""}.fa-briefcase-clock:before,.fa-business-time:before{content:""}.fa-c:before{content:"C"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:""}.fa-calculator:before{content:""}.fa-calendar:before{content:""}.fa-calendar-check:before{content:""}.fa-calendar-day:before{content:""}.fa-calendar-alt:before,.fa-calendar-days:before{content:""}.fa-calendar-minus:before{content:""}.fa-calendar-plus:before{content:""}.fa-calendar-week:before{content:""}.fa-calendar-times:before,.fa-calendar-xmark:before{content:""}.fa-camera-alt:before,.fa-camera:before{content:""}.fa-camera-retro:before{content:""}.fa-camera-rotate:before{content:""}.fa-campground:before{content:""}.fa-candy-cane:before{content:""}.fa-cannabis:before{content:""}.fa-capsules:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-battery-car:before,.fa-car-battery:before{content:""}.fa-car-crash:before{content:""}.fa-car-alt:before,.fa-car-rear:before{content:""}.fa-car-side:before{content:""}.fa-caravan:before{content:""}.fa-caret-down:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-caret-up:before{content:""}.fa-carrot:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:""}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-shopping:before,.fa-shopping-cart:before{content:""}.fa-cash-register:before{content:""}.fa-cat:before{content:""}.fa-cedi-sign:before{content:""}.fa-cent-sign:before{content:""}.fa-certificate:before{content:""}.fa-chair:before{content:""}.fa-blackboard:before,.fa-chalkboard:before{content:""}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:""}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:""}.fa-charging-station:before{content:""}.fa-area-chart:before,.fa-chart-area:before{content:""}.fa-bar-chart:before,.fa-chart-bar:before{content:""}.fa-chart-column:before{content:""}.fa-chart-gantt:before{content:""}.fa-chart-line:before,.fa-line-chart:before{content:""}.fa-chart-pie:before,.fa-pie-chart:before{content:""}.fa-check:before{content:""}.fa-check-double:before{content:""}.fa-check-to-slot:before,.fa-vote-yea:before{content:""}.fa-cheese:before{content:""}.fa-chess:before{content:""}.fa-chess-bishop:before{content:""}.fa-chess-board:before{content:""}.fa-chess-king:before{content:""}.fa-chess-knight:before{content:""}.fa-chess-pawn:before{content:""}.fa-chess-queen:before{content:""}.fa-chess-rook:before{content:""}.fa-chevron-down:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-chevron-up:before{content:""}.fa-child:before{content:""}.fa-church:before{content:""}.fa-circle:before{content:""}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:""}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:""}.fa-check-circle:before,.fa-circle-check:before{content:""}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:""}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:""}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:""}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:""}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:""}.fa-circle-dot:before,.fa-dot-circle:before{content:""}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:""}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:""}.fa-circle-h:before,.fa-hospital-symbol:before{content:""}.fa-adjust:before,.fa-circle-half-stroke:before{content:""}.fa-circle-info:before,.fa-info-circle:before{content:""}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:""}.fa-circle-minus:before,.fa-minus-circle:before{content:""}.fa-circle-notch:before{content:""}.fa-circle-pause:before,.fa-pause-circle:before{content:""}.fa-circle-play:before,.fa-play-circle:before{content:""}.fa-circle-plus:before,.fa-plus-circle:before{content:""}.fa-circle-question:before,.fa-question-circle:before{content:""}.fa-circle-radiation:before,.fa-radiation-alt:before{content:""}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:""}.fa-circle-stop:before,.fa-stop-circle:before{content:""}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:""}.fa-circle-user:before,.fa-user-circle:before{content:""}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:""}.fa-city:before{content:""}.fa-clapperboard:before{content:""}.fa-clipboard:before{content:""}.fa-clipboard-check:before{content:""}.fa-clipboard-list:before{content:""}.fa-clock-four:before,.fa-clock:before{content:""}.fa-clock-rotate-left:before,.fa-history:before{content:""}.fa-clone:before{content:""}.fa-closed-captioning:before{content:""}.fa-cloud:before{content:""}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:""}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:""}.fa-cloud-meatball:before{content:""}.fa-cloud-moon:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-cloud-rain:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-cloud-sun:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-clover:before{content:""}.fa-code:before{content:""}.fa-code-branch:before{content:""}.fa-code-commit:before{content:""}.fa-code-compare:before{content:""}.fa-code-fork:before{content:""}.fa-code-merge:before{content:""}.fa-code-pull-request:before{content:""}.fa-coins:before{content:""}.fa-colon-sign:before{content:""}.fa-comment:before{content:""}.fa-comment-dollar:before{content:""}.fa-comment-dots:before,.fa-commenting:before{content:""}.fa-comment-medical:before{content:""}.fa-comment-slash:before{content:""}.fa-comment-sms:before,.fa-sms:before{content:""}.fa-comments:before{content:""}.fa-comments-dollar:before{content:""}.fa-compact-disc:before{content:""}.fa-compass:before{content:""}.fa-compass-drafting:before,.fa-drafting-compass:before{content:""}.fa-compress:before{content:""}.fa-computer-mouse:before,.fa-mouse:before{content:""}.fa-cookie:before{content:""}.fa-cookie-bite:before{content:""}.fa-copy:before{content:""}.fa-copyright:before{content:""}.fa-couch:before{content:""}.fa-credit-card-alt:before,.fa-credit-card:before{content:""}.fa-crop:before{content:""}.fa-crop-alt:before,.fa-crop-simple:before{content:""}.fa-cross:before{content:""}.fa-crosshairs:before{content:""}.fa-crow:before{content:""}.fa-crown:before{content:""}.fa-crutch:before{content:""}.fa-cruzeiro-sign:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-d:before{content:"D"}.fa-database:before{content:""}.fa-backspace:before,.fa-delete-left:before{content:""}.fa-democrat:before{content:""}.fa-desktop-alt:before,.fa-desktop:before{content:""}.fa-dharmachakra:before{content:""}.fa-diagram-next:before{content:""}.fa-diagram-predecessor:before{content:""}.fa-diagram-project:before,.fa-project-diagram:before{content:""}.fa-diagram-successor:before{content:""}.fa-diamond:before{content:""}.fa-diamond-turn-right:before,.fa-directions:before{content:""}.fa-dice:before{content:""}.fa-dice-d20:before{content:""}.fa-dice-d6:before{content:""}.fa-dice-five:before{content:""}.fa-dice-four:before{content:""}.fa-dice-one:before{content:""}.fa-dice-six:before{content:""}.fa-dice-three:before{content:""}.fa-dice-two:before{content:""}.fa-disease:before{content:""}.fa-divide:before{content:""}.fa-dna:before{content:""}.fa-dog:before{content:""}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"$"}.fa-dolly-box:before,.fa-dolly:before{content:""}.fa-dong-sign:before{content:""}.fa-door-closed:before{content:""}.fa-door-open:before{content:""}.fa-dove:before{content:""}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:""}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:""}.fa-download:before{content:""}.fa-dragon:before{content:""}.fa-draw-polygon:before{content:""}.fa-droplet:before,.fa-tint:before{content:""}.fa-droplet-slash:before,.fa-tint-slash:before{content:""}.fa-drum:before{content:""}.fa-drum-steelpan:before{content:""}.fa-drumstick-bite:before{content:""}.fa-dumbbell:before{content:""}.fa-dumpster:before{content:""}.fa-dumpster-fire:before{content:""}.fa-dungeon:before{content:""}.fa-e:before{content:"E"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:""}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:""}.fa-earth-africa:before,.fa-globe-africa:before{content:""}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:""}.fa-earth-asia:before,.fa-globe-asia:before{content:""}.fa-earth-europe:before,.fa-globe-europe:before{content:""}.fa-earth-oceania:before,.fa-globe-oceania:before{content:""}.fa-egg:before{content:""}.fa-eject:before{content:""}.fa-elevator:before{content:""}.fa-ellipsis-h:before,.fa-ellipsis:before{content:""}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:""}.fa-envelope:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-text:before{content:""}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:""}.fa-equals:before{content:"="}.fa-eraser:before{content:""}.fa-ethernet:before{content:""}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:""}.fa-exclamation:before{content:"!"}.fa-expand:before{content:""}.fa-eye:before{content:""}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:""}.fa-eye-low-vision:before,.fa-low-vision:before{content:""}.fa-eye-slash:before{content:""}.fa-f:before{content:"F"}.fa-angry:before,.fa-face-angry:before{content:""}.fa-dizzy:before,.fa-face-dizzy:before{content:""}.fa-face-flushed:before,.fa-flushed:before{content:""}.fa-face-frown:before,.fa-frown:before{content:""}.fa-face-frown-open:before,.fa-frown-open:before{content:""}.fa-face-grimace:before,.fa-grimace:before{content:""}.fa-face-grin:before,.fa-grin:before{content:""}.fa-face-grin-beam:before,.fa-grin-beam:before{content:""}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:""}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:""}.fa-face-grin-squint:before,.fa-grin-squint:before{content:""}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:""}.fa-face-grin-stars:before,.fa-grin-stars:before{content:""}.fa-face-grin-tears:before,.fa-grin-tears:before{content:""}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:""}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:""}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:""}.fa-face-grin-wide:before,.fa-grin-alt:before{content:""}.fa-face-grin-wink:before,.fa-grin-wink:before{content:""}.fa-face-kiss:before,.fa-kiss:before{content:""}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:""}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:""}.fa-face-laugh:before,.fa-laugh:before{content:""}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:""}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:""}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:""}.fa-face-meh:before,.fa-meh:before{content:""}.fa-face-meh-blank:before,.fa-meh-blank:before{content:""}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:""}.fa-face-sad-cry:before,.fa-sad-cry:before{content:""}.fa-face-sad-tear:before,.fa-sad-tear:before{content:""}.fa-face-smile:before,.fa-smile:before{content:""}.fa-face-smile-beam:before,.fa-smile-beam:before{content:""}.fa-face-smile-wink:before,.fa-smile-wink:before{content:""}.fa-face-surprise:before,.fa-surprise:before{content:""}.fa-face-tired:before,.fa-tired:before{content:""}.fa-fan:before{content:""}.fa-faucet:before{content:""}.fa-fax:before{content:""}.fa-feather:before{content:""}.fa-feather-alt:before,.fa-feather-pointed:before{content:""}.fa-file:before{content:""}.fa-file-arrow-down:before,.fa-file-download:before{content:""}.fa-file-arrow-up:before,.fa-file-upload:before{content:""}.fa-file-audio:before{content:""}.fa-file-code:before{content:""}.fa-file-contract:before{content:""}.fa-file-csv:before{content:""}.fa-file-excel:before{content:""}.fa-arrow-right-from-file:before,.fa-file-export:before{content:""}.fa-file-image:before{content:""}.fa-arrow-right-to-file:before,.fa-file-import:before{content:""}.fa-file-invoice:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:""}.fa-file-medical:before{content:""}.fa-file-pdf:before{content:""}.fa-file-powerpoint:before{content:""}.fa-file-prescription:before{content:""}.fa-file-signature:before{content:""}.fa-file-video:before{content:""}.fa-file-medical-alt:before,.fa-file-waveform:before{content:""}.fa-file-word:before{content:""}.fa-file-archive:before,.fa-file-zipper:before{content:""}.fa-fill:before{content:""}.fa-fill-drip:before{content:""}.fa-film:before{content:""}.fa-filter:before{content:""}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:""}.fa-filter-circle-xmark:before{content:""}.fa-fingerprint:before{content:""}.fa-fire:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:""}.fa-burn:before,.fa-fire-flame-simple:before{content:""}.fa-fish:before{content:""}.fa-flag:before{content:""}.fa-flag-checkered:before{content:""}.fa-flag-usa:before{content:""}.fa-flask:before{content:""}.fa-floppy-disk:before,.fa-save:before{content:""}.fa-florin-sign:before{content:""}.fa-folder:before{content:""}.fa-folder-minus:before{content:""}.fa-folder-open:before{content:""}.fa-folder-plus:before{content:""}.fa-folder-tree:before{content:""}.fa-font:before{content:""}.fa-football-ball:before,.fa-football:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before,.fa-forward-fast:before{content:""}.fa-forward-step:before,.fa-step-forward:before{content:""}.fa-franc-sign:before{content:""}.fa-frog:before{content:""}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:""}.fa-g:before{content:"G"}.fa-gamepad:before{content:""}.fa-gas-pump:before{content:""}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:""}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:""}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:""}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-gem:before{content:""}.fa-genderless:before{content:""}.fa-ghost:before{content:""}.fa-gift:before{content:""}.fa-gifts:before{content:""}.fa-glasses:before{content:""}.fa-globe:before{content:""}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:""}.fa-gopuram:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-greater-than:before{content:">"}.fa-greater-than-equal:before{content:""}.fa-grip-horizontal:before,.fa-grip:before{content:""}.fa-grip-lines:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-grip-vertical:before{content:""}.fa-guarani-sign:before{content:""}.fa-guitar:before{content:""}.fa-gun:before{content:""}.fa-h:before{content:"H"}.fa-hammer:before{content:""}.fa-hamsa:before{content:""}.fa-hand-paper:before,.fa-hand:before{content:""}.fa-hand-back-fist:before,.fa-hand-rock:before{content:""}.fa-allergies:before,.fa-hand-dots:before{content:""}.fa-fist-raised:before,.fa-hand-fist:before{content:""}.fa-hand-holding:before{content:""}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:""}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-hand-holding-medical:before{content:""}.fa-hand-lizard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-hand-peace:before{content:""}.fa-hand-point-down:before{content:""}.fa-hand-point-left:before{content:""}.fa-hand-point-right:before{content:""}.fa-hand-point-up:before{content:""}.fa-hand-pointer:before{content:""}.fa-hand-scissors:before{content:""}.fa-hand-sparkles:before{content:""}.fa-hand-spock:before{content:""}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:""}.fa-hands-bubbles:before,.fa-hands-wash:before{content:""}.fa-hands-clapping:before{content:""}.fa-hands-holding:before{content:""}.fa-hands-praying:before,.fa-praying-hands:before{content:""}.fa-handshake:before{content:""}.fa-hands-helping:before,.fa-handshake-angle:before{content:""}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:""}.fa-handshake-slash:before{content:""}.fa-hanukiah:before{content:""}.fa-hard-drive:before,.fa-hdd:before{content:""}.fa-hashtag:before{content:"#"}.fa-hat-cowboy:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-hat-wizard:before{content:""}.fa-head-side-cough:before{content:""}.fa-head-side-cough-slash:before{content:""}.fa-head-side-mask:before{content:""}.fa-head-side-virus:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-headphones:before{content:""}.fa-headphones-alt:before,.fa-headphones-simple:before{content:""}.fa-headset:before{content:""}.fa-heart:before{content:""}.fa-heart-broken:before,.fa-heart-crack:before{content:""}.fa-heart-pulse:before,.fa-heartbeat:before{content:""}.fa-helicopter:before{content:""}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:""}.fa-highlighter:before{content:""}.fa-hippo:before{content:""}.fa-hockey-puck:before{content:""}.fa-holly-berry:before{content:""}.fa-horse:before{content:""}.fa-horse-head:before{content:""}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:""}.fa-hospital-user:before{content:""}.fa-hot-tub-person:before,.fa-hot-tub:before{content:""}.fa-hotdog:before{content:""}.fa-hotel:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before,.fa-hourglass:before{content:""}.fa-hourglass-empty:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:""}.fa-home-lg:before,.fa-house-chimney:before{content:""}.fa-house-chimney-crack:before,.fa-house-damage:before{content:""}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:""}.fa-house-chimney-user:before{content:""}.fa-house-chimney-window:before{content:""}.fa-house-crack:before{content:""}.fa-house-laptop:before,.fa-laptop-house:before{content:""}.fa-house-medical:before{content:""}.fa-home-user:before,.fa-house-user:before{content:""}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:""}.fa-i:before{content:"I"}.fa-i-cursor:before{content:""}.fa-ice-cream:before{content:""}.fa-icicles:before{content:""}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-id-card-alt:before,.fa-id-card-clip:before{content:""}.fa-igloo:before{content:""}.fa-image:before{content:""}.fa-image-portrait:before,.fa-portrait:before{content:""}.fa-images:before{content:""}.fa-inbox:before{content:""}.fa-indent:before{content:""}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:""}.fa-industry:before{content:""}.fa-infinity:before{content:""}.fa-info:before{content:""}.fa-italic:before{content:""}.fa-j:before{content:"J"}.fa-jedi:before{content:""}.fa-fighter-jet:before,.fa-jet-fighter:before{content:""}.fa-joint:before{content:""}.fa-k:before{content:"K"}.fa-kaaba:before{content:""}.fa-key:before{content:""}.fa-keyboard:before{content:""}.fa-khanda:before{content:""}.fa-kip-sign:before{content:""}.fa-first-aid:before,.fa-kit-medical:before{content:""}.fa-kiwi-bird:before{content:""}.fa-l:before{content:"L"}.fa-landmark:before{content:""}.fa-language:before{content:""}.fa-laptop:before{content:""}.fa-laptop-code:before{content:""}.fa-laptop-medical:before{content:""}.fa-lari-sign:before{content:""}.fa-layer-group:before{content:""}.fa-leaf:before{content:""}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:""}.fa-arrows-alt-h:before,.fa-left-right:before{content:""}.fa-lemon:before{content:""}.fa-less-than:before{content:"<"}.fa-less-than-equal:before{content:""}.fa-life-ring:before{content:""}.fa-lightbulb:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:""}.fa-lira-sign:before{content:""}.fa-list-squares:before,.fa-list:before{content:""}.fa-list-check:before,.fa-tasks:before{content:""}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:""}.fa-list-dots:before,.fa-list-ul:before{content:""}.fa-litecoin-sign:before{content:""}.fa-location-arrow:before{content:""}.fa-location-crosshairs:before,.fa-location:before{content:""}.fa-location-dot:before,.fa-map-marker-alt:before{content:""}.fa-location-pin:before,.fa-map-marker:before{content:""}.fa-lock:before{content:""}.fa-lock-open:before{content:""}.fa-lungs:before{content:""}.fa-lungs-virus:before{content:""}.fa-m:before{content:"M"}.fa-magnet:before{content:""}.fa-magnifying-glass:before,.fa-search:before{content:""}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:""}.fa-magnifying-glass-location:before,.fa-search-location:before{content:""}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:""}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:""}.fa-manat-sign:before{content:""}.fa-map:before{content:""}.fa-map-location:before,.fa-map-marked:before{content:""}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:""}.fa-map-pin:before{content:""}.fa-marker:before{content:""}.fa-mars:before{content:""}.fa-mars-and-venus:before{content:""}.fa-mars-double:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:""}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:""}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:""}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:""}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:""}.fa-mask:before{content:""}.fa-mask-face:before{content:""}.fa-masks-theater:before,.fa-theater-masks:before{content:""}.fa-expand-arrows-alt:before,.fa-maximize:before{content:""}.fa-medal:before{content:""}.fa-memory:before{content:""}.fa-menorah:before{content:""}.fa-mercury:before{content:""}.fa-comment-alt:before,.fa-message:before{content:""}.fa-meteor:before{content:""}.fa-microchip:before{content:""}.fa-microphone:before{content:""}.fa-microphone-alt:before,.fa-microphone-lines:before{content:""}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:""}.fa-microphone-slash:before{content:""}.fa-microscope:before{content:""}.fa-mill-sign:before{content:""}.fa-compress-arrows-alt:before,.fa-minimize:before{content:""}.fa-minus:before,.fa-subtract:before{content:""}.fa-mitten:before{content:""}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-mobile-button:before{content:""}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:""}.fa-money-bill:before{content:""}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:""}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:""}.fa-money-bill-wave:before{content:""}.fa-money-check:before{content:""}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:""}.fa-monument:before{content:""}.fa-moon:before{content:""}.fa-mortar-pestle:before{content:""}.fa-mosque:before{content:""}.fa-motorcycle:before{content:""}.fa-mountain:before{content:""}.fa-mug-hot:before{content:""}.fa-coffee:before,.fa-mug-saucer:before{content:""}.fa-music:before{content:""}.fa-n:before{content:"N"}.fa-naira-sign:before{content:""}.fa-network-wired:before{content:""}.fa-neuter:before{content:""}.fa-newspaper:before{content:""}.fa-not-equal:before{content:""}.fa-note-sticky:before,.fa-sticky-note:before{content:""}.fa-notes-medical:before{content:""}.fa-o:before{content:"O"}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-oil-can:before{content:""}.fa-om:before{content:""}.fa-otter:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-p:before{content:"P"}.fa-pager:before{content:""}.fa-paint-roller:before{content:""}.fa-paint-brush:before,.fa-paintbrush:before{content:""}.fa-palette:before{content:""}.fa-pallet:before{content:""}.fa-panorama:before{content:""}.fa-paper-plane:before{content:""}.fa-paperclip:before{content:""}.fa-parachute-box:before{content:""}.fa-paragraph:before{content:""}.fa-passport:before{content:""}.fa-file-clipboard:before,.fa-paste:before{content:""}.fa-pause:before{content:""}.fa-paw:before{content:""}.fa-peace:before{content:""}.fa-pen:before{content:""}.fa-pen-alt:before,.fa-pen-clip:before{content:""}.fa-pen-fancy:before{content:""}.fa-pen-nib:before{content:""}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:""}.fa-edit:before,.fa-pen-to-square:before{content:""}.fa-pencil-alt:before,.fa-pencil:before{content:""}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:""}.fa-people-carry-box:before,.fa-people-carry:before{content:""}.fa-pepper-hot:before{content:""}.fa-percent:before,.fa-percentage:before{content:"%"}.fa-male:before,.fa-person:before{content:""}.fa-biking:before,.fa-person-biking:before{content:""}.fa-person-booth:before{content:""}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:""}.fa-female:before,.fa-person-dress:before{content:""}.fa-hiking:before,.fa-person-hiking:before{content:""}.fa-person-praying:before,.fa-pray:before{content:""}.fa-person-running:before,.fa-running:before{content:""}.fa-person-skating:before,.fa-skating:before{content:""}.fa-person-skiing:before,.fa-skiing:before{content:""}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:""}.fa-person-snowboarding:before,.fa-snowboarding:before{content:""}.fa-person-swimming:before,.fa-swimmer:before{content:""}.fa-person-walking:before,.fa-walking:before{content:""}.fa-blind:before,.fa-person-walking-with-cane:before{content:""}.fa-peseta-sign:before{content:""}.fa-peso-sign:before{content:""}.fa-phone:before{content:""}.fa-phone-alt:before,.fa-phone-flip:before{content:""}.fa-phone-slash:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-photo-film:before,.fa-photo-video:before{content:""}.fa-piggy-bank:before{content:""}.fa-pills:before{content:""}.fa-pizza-slice:before{content:""}.fa-place-of-worship:before{content:""}.fa-plane:before{content:""}.fa-plane-arrival:before{content:""}.fa-plane-departure:before{content:""}.fa-plane-slash:before{content:""}.fa-play:before{content:""}.fa-plug:before{content:""}.fa-add:before,.fa-plus:before{content:"+"}.fa-plus-minus:before{content:""}.fa-podcast:before{content:""}.fa-poo:before{content:""}.fa-poo-bolt:before,.fa-poo-storm:before{content:""}.fa-poop:before{content:""}.fa-power-off:before{content:""}.fa-prescription:before{content:""}.fa-prescription-bottle:before{content:""}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:""}.fa-print:before{content:""}.fa-pump-medical:before{content:""}.fa-pump-soap:before{content:""}.fa-puzzle-piece:before{content:""}.fa-q:before{content:"Q"}.fa-qrcode:before{content:""}.fa-question:before{content:"?"}.fa-quote-left-alt:before,.fa-quote-left:before{content:""}.fa-quote-right-alt:before,.fa-quote-right:before{content:""}.fa-r:before{content:"R"}.fa-radiation:before{content:""}.fa-rainbow:before{content:""}.fa-receipt:before{content:""}.fa-record-vinyl:before{content:""}.fa-ad:before,.fa-rectangle-ad:before{content:""}.fa-list-alt:before,.fa-rectangle-list:before{content:""}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-recycle:before{content:""}.fa-registered:before{content:""}.fa-repeat:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-republican:before{content:""}.fa-restroom:before{content:""}.fa-retweet:before{content:""}.fa-ribbon:before{content:""}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:""}.fa-exchange-alt:before,.fa-right-left:before{content:""}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:""}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:""}.fa-ring:before{content:""}.fa-road:before{content:""}.fa-robot:before{content:""}.fa-rocket:before{content:""}.fa-rotate:before,.fa-sync-alt:before{content:""}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:""}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:""}.fa-route:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:""}.fa-ruler:before{content:""}.fa-ruler-combined:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-ruler-vertical:before{content:""}.fa-rupee-sign:before,.fa-rupee:before{content:""}.fa-rupiah-sign:before{content:""}.fa-s:before{content:"S"}.fa-sailboat:before{content:""}.fa-satellite:before{content:""}.fa-satellite-dish:before{content:""}.fa-balance-scale:before,.fa-scale-balanced:before{content:""}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:""}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:""}.fa-school:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-screwdriver:before{content:""}.fa-screwdriver-wrench:before,.fa-tools:before{content:""}.fa-scroll:before{content:""}.fa-scroll-torah:before,.fa-torah:before{content:""}.fa-sd-card:before{content:""}.fa-section:before{content:""}.fa-seedling:before,.fa-sprout:before{content:""}.fa-server:before{content:""}.fa-shapes:before,.fa-triangle-circle-square:before{content:""}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:""}.fa-share-from-square:before,.fa-share-square:before{content:""}.fa-share-alt:before,.fa-share-nodes:before{content:""}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:""}.fa-shield:before{content:""}.fa-shield-alt:before,.fa-shield-blank:before{content:""}.fa-shield-virus:before{content:""}.fa-ship:before{content:""}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:""}.fa-shoe-prints:before{content:""}.fa-shop:before,.fa-store-alt:before{content:""}.fa-shop-slash:before,.fa-store-alt-slash:before{content:""}.fa-shower:before{content:""}.fa-shrimp:before{content:""}.fa-random:before,.fa-shuffle:before{content:""}.fa-shuttle-space:before,.fa-space-shuttle:before{content:""}.fa-sign-hanging:before,.fa-sign:before{content:""}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:""}.fa-signature:before{content:""}.fa-map-signs:before,.fa-signs-post:before{content:""}.fa-sim-card:before{content:""}.fa-sink:before{content:""}.fa-sitemap:before{content:""}.fa-skull:before{content:""}.fa-skull-crossbones:before{content:""}.fa-slash:before{content:""}.fa-sleigh:before{content:""}.fa-sliders-h:before,.fa-sliders:before{content:""}.fa-smog:before{content:""}.fa-smoking:before{content:""}.fa-snowflake:before{content:""}.fa-snowman:before{content:""}.fa-snowplow:before{content:""}.fa-soap:before{content:""}.fa-socks:before{content:""}.fa-solar-panel:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-spa:before{content:""}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:""}.fa-spell-check:before{content:""}.fa-spider:before{content:""}.fa-spinner:before{content:""}.fa-splotch:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-spray-can:before{content:""}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:""}.fa-square:before{content:""}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:""}.fa-caret-square-down:before,.fa-square-caret-down:before{content:""}.fa-caret-square-left:before,.fa-square-caret-left:before{content:""}.fa-caret-square-right:before,.fa-square-caret-right:before{content:""}.fa-caret-square-up:before,.fa-square-caret-up:before{content:""}.fa-check-square:before,.fa-square-check:before{content:""}.fa-envelope-square:before,.fa-square-envelope:before{content:""}.fa-square-full:before{content:""}.fa-h-square:before,.fa-square-h:before{content:""}.fa-minus-square:before,.fa-square-minus:before{content:""}.fa-parking:before,.fa-square-parking:before{content:""}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:""}.fa-phone-square:before,.fa-square-phone:before{content:""}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:""}.fa-plus-square:before,.fa-square-plus:before{content:""}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:""}.fa-poll:before,.fa-square-poll-vertical:before{content:""}.fa-square-root-alt:before,.fa-square-root-variable:before{content:""}.fa-rss-square:before,.fa-square-rss:before{content:""}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:""}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:""}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:""}.fa-stairs:before{content:""}.fa-stamp:before{content:""}.fa-star:before{content:""}.fa-star-and-crescent:before{content:""}.fa-star-half:before{content:""}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:""}.fa-star-of-david:before{content:""}.fa-star-of-life:before{content:""}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:""}.fa-stethoscope:before{content:""}.fa-stop:before{content:""}.fa-stopwatch:before{content:""}.fa-stopwatch-20:before{content:""}.fa-store:before{content:""}.fa-store-slash:before{content:""}.fa-street-view:before{content:""}.fa-strikethrough:before{content:""}.fa-stroopwafel:before{content:""}.fa-subscript:before{content:""}.fa-suitcase:before{content:""}.fa-medkit:before,.fa-suitcase-medical:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-sun:before{content:""}.fa-superscript:before{content:""}.fa-swatchbook:before{content:""}.fa-synagogue:before{content:""}.fa-syringe:before{content:""}.fa-t:before{content:"T"}.fa-table:before{content:""}.fa-table-cells:before,.fa-th:before{content:""}.fa-table-cells-large:before,.fa-th-large:before{content:""}.fa-columns:before,.fa-table-columns:before{content:""}.fa-table-list:before,.fa-th-list:before{content:""}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:""}.fa-tablet-android:before,.fa-tablet:before{content:""}.fa-tablet-button:before{content:""}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:""}.fa-tablets:before{content:""}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-tape:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-teeth:before{content:""}.fa-teeth-open:before{content:""}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:""}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-temperature-high:before{content:""}.fa-temperature-low:before{content:""}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-tenge-sign:before,.fa-tenge:before{content:""}.fa-terminal:before{content:""}.fa-text-height:before{content:""}.fa-remove-format:before,.fa-text-slash:before{content:""}.fa-text-width:before{content:""}.fa-thermometer:before{content:""}.fa-thumbs-down:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumb-tack:before,.fa-thumbtack:before{content:""}.fa-ticket:before{content:""}.fa-ticket-alt:before,.fa-ticket-simple:before{content:""}.fa-timeline:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-toilet:before{content:""}.fa-toilet-paper:before{content:""}.fa-toilet-paper-slash:before{content:""}.fa-toolbox:before{content:""}.fa-tooth:before{content:""}.fa-torii-gate:before{content:""}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:""}.fa-tractor:before{content:""}.fa-trademark:before{content:""}.fa-traffic-light:before{content:""}.fa-trailer:before{content:""}.fa-train:before{content:""}.fa-subway:before,.fa-train-subway:before{content:""}.fa-train-tram:before,.fa-tram:before{content:""}.fa-transgender-alt:before,.fa-transgender:before{content:""}.fa-trash:before{content:""}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:""}.fa-trash-alt:before,.fa-trash-can:before{content:""}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:""}.fa-tree:before{content:""}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:""}.fa-trophy:before{content:""}.fa-truck:before{content:""}.fa-shipping-fast:before,.fa-truck-fast:before{content:""}.fa-ambulance:before,.fa-truck-medical:before{content:""}.fa-truck-monster:before{content:""}.fa-truck-moving:before{content:""}.fa-truck-pickup:before{content:""}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:""}.fa-teletype:before,.fa-tty:before{content:""}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:""}.fa-level-down-alt:before,.fa-turn-down:before{content:""}.fa-level-up-alt:before,.fa-turn-up:before{content:""}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:""}.fa-u:before{content:"U"}.fa-umbrella:before{content:""}.fa-umbrella-beach:before{content:""}.fa-underline:before{content:""}.fa-universal-access:before{content:""}.fa-unlock:before{content:""}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:""}.fa-arrows-alt-v:before,.fa-up-down:before{content:""}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:""}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:""}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:""}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:""}.fa-upload:before{content:""}.fa-user:before{content:""}.fa-user-astronaut:before{content:""}.fa-user-check:before{content:""}.fa-user-clock:before{content:""}.fa-user-doctor:before,.fa-user-md:before{content:""}.fa-user-cog:before,.fa-user-gear:before{content:""}.fa-user-graduate:before{content:""}.fa-user-friends:before,.fa-user-group:before{content:""}.fa-user-injured:before{content:""}.fa-user-alt:before,.fa-user-large:before{content:""}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:""}.fa-user-lock:before{content:""}.fa-user-minus:before{content:""}.fa-user-ninja:before{content:""}.fa-user-nurse:before{content:""}.fa-user-edit:before,.fa-user-pen:before{content:""}.fa-user-plus:before{content:""}.fa-user-secret:before{content:""}.fa-user-shield:before{content:""}.fa-user-slash:before{content:""}.fa-user-tag:before{content:""}.fa-user-tie:before{content:""}.fa-user-times:before,.fa-user-xmark:before{content:""}.fa-users:before{content:""}.fa-users-cog:before,.fa-users-gear:before{content:""}.fa-users-slash:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-v:before{content:"V"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:""}.fa-vault:before{content:""}.fa-vector-square:before{content:""}.fa-venus:before{content:""}.fa-venus-double:before{content:""}.fa-venus-mars:before{content:""}.fa-vest:before{content:""}.fa-vest-patches:before{content:""}.fa-vial:before{content:""}.fa-vials:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-video-slash:before{content:""}.fa-vihara:before{content:""}.fa-virus:before{content:""}.fa-virus-covid:before{content:""}.fa-virus-covid-slash:before{content:""}.fa-virus-slash:before{content:""}.fa-viruses:before{content:""}.fa-voicemail:before{content:""}.fa-volleyball-ball:before,.fa-volleyball:before{content:""}.fa-volume-high:before,.fa-volume-up:before{content:""}.fa-volume-down:before,.fa-volume-low:before{content:""}.fa-volume-off:before{content:""}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:""}.fa-vr-cardboard:before{content:""}.fa-w:before{content:"W"}.fa-wallet:before{content:""}.fa-magic:before,.fa-wand-magic:before{content:""}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:""}.fa-wand-sparkles:before{content:""}.fa-warehouse:before{content:""}.fa-water:before{content:""}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:""}.fa-wave-square:before{content:""}.fa-weight-hanging:before{content:""}.fa-weight-scale:before,.fa-weight:before{content:""}.fa-wheelchair:before{content:""}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:""}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:""}.fa-wind:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-wine-bottle:before{content:""}.fa-wine-glass:before{content:""}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:""}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:""}.fa-wrench:before{content:""}.fa-x:before{content:"X"}.fa-x-ray:before{content:""}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:""}.fa-y:before{content:"Y"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:""}.fa-yin-yang:before{content:""}.fa-z:before{content:"Z"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}/*!
+@charset "UTF-8";.form-select[data-v-7b8949f3]{background-color:var(--color-input);border:1;border-color:var(--color-bg);color:var(--color-bg);text-align:start;font-size:var(--font-small)}.commitbutton[data-v-7b8949f3]{background-color:var(--color-bg);color:var(--color-input)}option[data-v-7b8949f3]{color:green}.form-select[data-v-7b8949f3]{font-size:var(--font-verysmall);background-color:var(--color-menu);color:var(--color-fg)}.optiontable[data-v-7b8949f3]{background-color:var(--color-menu)}.optionbutton[data-v-7b8949f3]{font-size:var(--font-small);color:#fff;background-color:var(--color-menu);font-size:var(--font-verysmall);text-align:center}.dropdown-menu[data-v-7b8949f3]{background-color:var(--color-menu)}.dropdown-toggle[data-v-7b8949f3]{background-color:var(--color-menu);color:#fff;border:1px solid var(--color-bg);font-size:var(--font-verysmall)}.radiobutton[data-v-82ab6829]{border:0px solid var(--color-menu);opacity:1}.btn-outline-secondary.active[data-v-82ab6829]{background-color:var(--color-bg);border:0px solid var(--color-fg);opacity:.8}.btn-group[data-v-82ab6829]{border:1px solid var(--color-menu)}.rounded-pill[data-v-d75ec1a4]{background-color:var(--color-menu)}.arrowButton[data-v-d75ec1a4]{border:0}.datebadge[data-v-d75ec1a4]{background-color:var(--color-bg);color:var(--color-menu);border:1px solid var(--color-menu);font-size:var(--font-small);font-weight:400}.arrowButton[data-v-d75ec1a4],.fa-magnifying-glass[data-v-9dcdaf2b]{color:var(--color-menu)}.dateWbBadge[data-v-9dcdaf2b]{background-color:var(--color-menu);color:var(--color-bg);font-size:var(--font-medium);font-weight:400}.waitsign[data-v-9dcdaf2b]{text-align:center;font-size:var(--font-medium);color:var(--color-fg);border:1px solid var(--color-bg);padding:2em;margin:4em 2em 2em;background-color:var(--color-bg)}.heading[data-v-f6af00e8]{color:var(--color-menu);font-weight:400;text-align:center}.content[data-v-f6af00e8]{color:var(--color-fg);font-weight:700}@supports (grid-template-columns: subgrid){.wb-subwidget[data-v-e989060d]{border-top:.5px solid var(--color-scale);display:grid;grid-template-columns:subgrid;grid-column:1 / 13}}@supports not (grid-template-columns: subgrid){.wb-subwidget[data-v-e989060d]{border-top:.5px solid var(--color-scale);display:grid;grid-template-columns:repeat(12,auto);grid-column:1 / 13}}.titlerow[data-v-e989060d]{grid-column:1 / 13}@supports (grid-template-columns: subgrid){.contentrow[data-v-e989060d]{display:grid;grid-template-columns:subgrid;grid-column:1 / 13;align-items:top}}@supports not (grid-template-columns: subgrid){.contentrow[data-v-e989060d]{display:grid;align-items:top;grid-template-columns:repeat(12,auto)}}.widgetname[data-v-e989060d]{font-weight:700;font-size:var(--font-large)}.infotext[data-v-b935eb33]{font-size:var(--font-settings);color:var(--color-battery)}.item-icon[data-v-b935eb33]{color:var(--color-menu);font-size:var(--font-settings)}.titlecolumn[data-v-b935eb33]{color:var(--color-fg);font-size:var(--font-settings)}.selectors[data-v-b935eb33],.configitem[data-v-b935eb33]{font-size:var(--font-settings)}.minlabel[data-v-17a828b1],.maxlabel[data-v-17a828b1]{color:var(--color-menu)}.valuelabel[data-v-17a828b1]{color:var(--color-fg)}.minusButton[data-v-17a828b1],.plusButton[data-v-17a828b1]{color:var(--color-menu)}.radiobutton[data-v-df222cbe]{border:.5px solid var(--color-input);opacity:.5;font-size:var(--font-settings)}.btn-outline-secondary.active[data-v-df222cbe]{background-color:var(--color-bg);border:1px solid var(--color-fg);box-shadow:0 .5rem 1rem #00000026;opacity:1}.chargeConfigSelect[data-v-0303d179]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-0303d179]{color:var(--color-charging)}.chargeConfigSelect[data-v-faa69015]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-faa69015]{color:var(--color-pv)}.tablecell[data-v-e8f5ad9d]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;font-size:var(--font-medium)}.tableheader[data-v-e8f5ad9d]{color:var(--color-menu);background-color:var(--color-bg);text-align:center;font-style:normal}.heading[data-v-e8f5ad9d]{color:var(--color-battery)}.left[data-v-e8f5ad9d]{text-align:left}.tablecell[data-v-192e287b]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;font-size:var(--font-medium)}.tableheader[data-v-192e287b]{color:var(--color-menu);background-color:var(--color-bg);text-align:center;font-style:normal}.heading[data-v-192e287b]{color:var(--color-battery)}.left[data-v-192e287b]{text-align:left}.right[data-v-192e287b]{text-align:right}.status-string[data-v-fcb57a44]{font-size:var(--font-normal);font-style:italic;color:var(--color-battery)}.chargeConfigSelect[data-v-fcb57a44]{background:var(--color-bg);color:var(--color-fg)}.chargeModeOption[data-v-fcb57a44]{background:green;color:#00f}.nav-tabs .nav-link[data-v-fcb57a44]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-fcb57a44]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-fcb57a44]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:1px solid var(--color-menu)}.settingsheader[data-v-fcb57a44]{color:var(--color-charging)}.status-string[data-v-e348a34c]{font-size:var(--font-normal);font-style:italic;color:var(--color-battery)}.chargeConfigSelect[data-v-e348a34c]{background:var(--color-bg);color:var(--color-fg)}.chargeModeOption[data-v-e348a34c]{background:green;color:#00f}.nav-tabs .nav-link[data-v-e348a34c]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-e348a34c]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-e348a34c]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:1px solid var(--color-menu)}.settingsheader[data-v-e348a34c]{color:var(--color-charging);font-size:16px;font-weight:700}hr[data-v-e348a34c]{color:var(--color-menu)}.color-charging[data-v-0a5353c2]{color:var(--color-charging)}.fa-circle-check[data-v-0a5353c2]{color:var(--color-menu)}.settingsheader[data-v-0a5353c2]{color:var(--color-charging);font-size:16px;font-weight:700}.providername[data-v-0a5353c2]{color:var(--color-axis);font-size:16px}.status-string[data-v-1164316d]{font-size:var(--font-settings);font-style:italic;color:var(--color-battery)}.nav-tabs .nav-link[data-v-1164316d]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-1164316d]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-1164316d]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:0px solid var(--color-menu)}.heading[data-v-1164316d]{color:var(--color-menu)}.item[data-v-1164316d]{grid-column:span 12}.tabarea[data-v-1164316d]{justify-self:stretch}.batIcon[data-v-a68c844a]{color:var(--color-menu)}.wb-widget[data-v-1d5bc1d9]{width:100%;height:100%;border-radius:30px}.widgetname[data-v-1d5bc1d9]{font-weight:700;color:var(--color-fg);font-size:var(--font-large)}.pillWbBadge[data-v-36112fa3]{font-size:(var--font-small);font-weight:regular;display:flex;justify-content:center;align-items:center}.fa-star[data-v-62e55097]{color:var(--color-evu)}.fa-clock[data-v-62e55097]{color:var(--color-charging)}.fa-car[data-v-62e55097],.fa-ellipsis-vertical[data-v-62e55097],.fa-circle-check[data-v-62e55097]{color:var(--color-menu)}.fa-coins[data-v-62e55097]{color:var(--color-battery)}.fa-edit[data-v-62e55097]{color:var(--color-menu)}.socEditor[data-v-62e55097]{border:1px solid var(--color-menu);justify-self:stretch}.targetCurrent[data-v-62e55097]{color:var(--color-menu)}.priceEditor[data-v-62e55097]{border:1px solid var(--color-menu);justify-self:stretch}.chargemodes[data-v-62e55097]{grid-column:1 / 13;justify-self:center}.chargeinfo[data-v-62e55097]{display:grid;grid-template-columns:repeat(12,auto);justify-content:space-between}.errorWbBadge[data-v-62e55097]{color:var(--color-bg);background-color:var(--color-evu);font-size:var(--font-small)}.divider[data-v-62e55097]{color:var(--color-fg)}.blue[data-v-62e55097]{color:var(--color-charging)}@font-face{font-family:swiper-icons;src:url(data:application/font-woff;charset=utf-8;base64,\ d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA);font-weight:400;font-style:normal}:root{--swiper-theme-color: #007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function, initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-slide,.swiper-3d .swiper-cube-shadow{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-slide-shadow-bottom{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:#00000026}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,#00000080,#0000)}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color, var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color: #fff}.swiper-lazy-preloader-black{--swiper-preloader-color: #000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-pagination-fraction,.swiper-pagination-custom,.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal{bottom:var(--swiper-pagination-bottom, 8px);top:var(--swiper-pagination-top, auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));height:var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius, 50%);background:var(--swiper-pagination-bullet-inactive-color, #000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color, var(--swiper-theme-color))}.swiper-vertical>.swiper-pagination-bullets,.swiper-pagination-vertical.swiper-pagination-bullets{right:var(--swiper-pagination-right, 8px);left:var(--swiper-pagination-left, auto);top:50%;transform:translate3d(0,-50%,0)}.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap, 6px) 0;display:block}.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap, 4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translate(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color, inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, .25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color, var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size, 4px);left:0;top:0}.swiper-vertical>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite{width:var(--swiper-pagination-progressbar-size, 4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.modal-footer[data-v-eaefae30],.modal-header[data-v-eaefae30],.modal-body[data-v-eaefae30]{background:var(--color-bg)}.btn-close[data-v-eaefae30]{color:var(--color-fg)}.modal-footer[data-v-eaefae30]{text-align:right}.modal-header .btn-close[data-v-eaefae30]{color:var(--color-fg);background:var(--color-bg);border:0px}.modal.fade .modal-dialog[data-v-eaefae30]{transition:transform 1s ease-out;transform:none;scale:.6}.modal.show .modal-dialog[data-v-eaefae30]{transition:transform .3s ease-in;transform:none;scale:1}.tablerow[data-v-2f1df729]{margin:14px;border-top:.1px solid var(--color-scale)}.tablecell[data-v-2f1df729]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;padding-top:2px;padding-left:2px;padding-right:2px;vertical-align:baseline;line-height:1.4rem;font-size:var(--font-small)}.buttoncell[data-v-2f1df729]{background-color:var(--color-bg);padding:0;margin:0}.left[data-v-2f1df729]{text-align:left}.tablecell.right[data-v-2f1df729]{text-align:right}.tablecolum1[data-v-2f1df729]{color:var(--color-fg);text-align:left;margin:0;padding:0}.tableicon[data-v-2f1df729]{color:var(--color-menu)}.fa-star[data-v-2f1df729]{color:var(--color-evu)}.fa-clock[data-v-2f1df729]{color:var(--color-battery)}.socEditor[data-v-2f1df729]{border:1px solid var(--color-menu);background-color:var(--color-bg)}.socEditRow td[data-v-2f1df729]{background-color:var(--color-bg)}.fa-circle-check[data-v-2f1df729]{color:var(--color-menu)}.socEditTitle[data-v-2f1df729]{color:var(--color-fg)}.statusbadge[data-v-2f1df729]{background-color:var(--color-bg);font-weight:700;font-size:var(--font-verysmall)}.modebadge[data-v-2f1df729]{color:var(--color-bg)}.cpname[data-v-2f1df729]{font-size:var(--font-small)}.fa-edit[data-v-2f1df729]{color:var(--color-menu)}.infolist[data-v-2f1df729]{justify-content:center}.tableheader[data-v-b8c6b557]{margin:0;padding-left:0;background-color:var(--color-bg);color:var(--color-menu)}.alignleft[data-v-b8c6b557]{text-align:left}.aligncenter[data-v-b8c6b557]{text-align:center}.alignright[data-v-b8c6b557]{text-align:right}.table[data-v-b8c6b557]{border-spacing:1rem;background-color:var(--color-bg)}.priceWbBadge[data-v-b8c6b557]{background-color:var(--color-menu);font-weight:400}.fa-charging-station[data-v-b8c6b557]{color:var(--color-charging)}.plugIndicator[data-v-31df6764]{color:#fff;border:1px solid white}.chargeButton[data-v-31df6764]{color:#fff}.left[data-v-31df6764]{float:left}.right[data-v-31df6764]{float:right}.center[data-v-31df6764]{margin:auto}.time-display[data-v-791e4be0]{font-weight:700;color:var(--color-menu);font-size:var(--font-normal)}.battery-title[data-v-f7f825f7]{color:var(--color-battery);font-size:var(--font-medium)}.battery-color[data-v-463638db]{color:var(--color-battery)}.fg-color[data-v-463638db]{color:var(--color-fg)}.menu-color[data-v-463638db],.todaystring[data-v-463638db]{color:var(--color-menu)}.statusbutton[data-v-92893218]{font-size:var(--font-extralarge)}.sh-title[data-v-5b5cf6b3]{color:var(--color-title)}.tableheader[data-v-5b5cf6b3]{background-color:var(--color-bg);color:var(--color-menu)}.fa-ellipsis-vertical[data-v-5b5cf6b3],.fa-circle-check[data-v-5b5cf6b3]{color:var(--color-menu)}.smarthome[data-v-5b5cf6b3]{color:var(--color-devices)}.idWbBadge[data-v-01dd8c4d]{background-color:var(--color-menu);font-weight:400}.countername[data-v-01dd8c4d]{font-size:var(--font-medium)}.statusbutton[data-v-5f059284]{font-size:var(--font-large)}.modebutton[data-v-5f059284]{background-color:var(--color-menu);font-size:var(--font-verysmall);font-weight:400}.tempWbBadge[data-v-5f059284]{background-color:var(--color-battery);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.idWbBadge[data-v-f92f4f7b]{background-color:var(--color-menu);font-weight:400}.status-string[data-v-f92f4f7b]{text-align:center}.statusbutton[data-v-23b437ea]{font-size:var(--font-large)}.modebutton[data-v-23b437ea]{background-color:var(--color-menu);font-size:var(--font-verysmall);font-weight:400}.tempWbBadge[data-v-23b437ea]{background-color:var(--color-battery);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.priceWbBadge[data-v-3ecadd9f]{background-color:var(--color-charging);font-weight:400}.providerWbBadge[data-v-3ecadd9f]{background-color:var(--color-menu);font-weight:400}.grapharea[data-v-3ecadd9f]{grid-column-start:1;grid-column-end:13;width:100%;object-fit:cover;max-height:100%;justify-items:stretch}.pricefigure[data-v-3ecadd9f]{justify-self:stretch}.modeWbBadge[data-v-ee748919]{background-color:var(--color-pv);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.invertername[data-v-ee748919]{font-size:var(--font-normal)}.powerWbBadge[data-v-b7a71f81]{background-color:var(--color-pv);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.button[data-v-dc35b0f6]{color:var(--color-fg)}.name[data-v-df7e578a]{font-size:1rem;color:#000;border:1px solid white}.content[data-v-df7e578a]{grid-column:1 / -1;border:solid 1px black;border-radius:10px}.sublist[data-v-df7e578a]{grid-column:1 / -1;display:grid;grid-template-columns:subgrid}.mqviewer[data-v-a349646d]{background-color:#fff;color:#000}.topiclist[data-v-a349646d]{display:grid;grid-template-columns:repeat(40,1fr)}.topnode[data-v-a349646d]{grid-column-start:1;grid-column-end:-1}.mqtitle[data-v-a349646d]{color:#000}.form-select[data-v-5e33ce1f]{background-color:var(--color-input);color:#000;border:1px solid var(--color-bg);font-size:var(--font-settings)}.fa-circle-check[data-v-01b18db3]{font-size:var(--font-large);background-color:var(--color-bg);color:var(--color-menu)}.closebutton[data-v-01b18db3]{justify-self:end}.nav-tabs[data-v-616f0180]{border-bottom:.5px solid var(--color-menu);background-color:var(--color-bg)}.nav-tabs .nav-link[data-v-616f0180]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-616f0180]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-616f0180]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:.5px solid var(--color-menu);border-bottom:0px solid var(--color-menu);box-shadow:0 .5rem 1rem #00000026}.fa-circle-info[data-v-616f0180]{color:var(--color-fg)}.fa-charging-station[data-v-616f0180]{color:var(--color-charging)}.fa-car-battery[data-v-616f0180]{color:var(--color-battery)}.fa-plug[data-v-616f0180]{color:var(--color-devices)}.fa-bolt[data-v-616f0180]{color:var(--color-evu)}.fa-car[data-v-616f0180]{color:var(--color-charging)}.fa-coins[data-v-616f0180]{color:var(--color-battery)}.fa-solar-panel[data-v-616f0180]{color:var(--color-pv)}.navbar[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.dropdown-menu[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg)}.dropdown-item[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.btn[data-v-ed619966]{font-size:var(--font-medium);background-color:var(--color-bg);color:var(--color-fg)}.navbar-brand[data-v-ed619966]{font-weight:700;color:var(--color-fg);font-size:var(--font-normal)}.nav-link[data-v-ed619966]{color:var(--color-fg);border-color:red;font-size:var(--font-normal)}.navbar-toggler[data-v-ed619966]{color:var(--color-fg);border-color:var(--color-bg)}.navbar-time[data-v-ed619966]{font-weight:700;color:var(--color-menu);font-size:var(--font-normal)}.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius, .1em);border:var(--fa-border-width, .08em) var(--fa-border-style, solid) var(--fa-border-color, #eee);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) )}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration, 2s);animation-duration:var(--fa-animation-duration, 2s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, steps(8));animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle, none));transform:rotate(var(--fa-rotate-angle, none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0:before{content:"0"}.fa-1:before{content:"1"}.fa-2:before{content:"2"}.fa-3:before{content:"3"}.fa-4:before{content:"4"}.fa-5:before{content:"5"}.fa-6:before{content:"6"}.fa-7:before{content:"7"}.fa-8:before{content:"8"}.fa-9:before{content:"9"}.fa-a:before{content:"A"}.fa-address-book:before,.fa-contact-book:before{content:""}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:""}.fa-align-center:before{content:""}.fa-align-justify:before{content:""}.fa-align-left:before{content:""}.fa-align-right:before{content:""}.fa-anchor:before{content:""}.fa-angle-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-double-down:before,.fa-angles-down:before{content:""}.fa-angle-double-left:before,.fa-angles-left:before{content:""}.fa-angle-double-right:before,.fa-angles-right:before{content:""}.fa-angle-double-up:before,.fa-angles-up:before{content:""}.fa-ankh:before{content:""}.fa-apple-alt:before,.fa-apple-whole:before{content:""}.fa-archway:before{content:""}.fa-arrow-down:before{content:""}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:""}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:""}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:""}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:""}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:""}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:""}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:""}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:""}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:""}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:""}.fa-arrow-trend-down:before{content:""}.fa-arrow-trend-up:before{content:""}.fa-arrow-turn-down:before,.fa-level-down:before{content:""}.fa-arrow-turn-up:before,.fa-level-up:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:""}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:""}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:""}.fa-arrow-up-from-bracket:before{content:""}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:""}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:""}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:""}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:""}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:""}.fa-arrows-h:before,.fa-arrows-left-right:before{content:""}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:""}.fa-arrows-up-down:before,.fa-arrows-v:before{content:""}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:""}.fa-asterisk:before{content:"*"}.fa-at:before{content:"@"}.fa-atom:before{content:""}.fa-audio-description:before{content:""}.fa-austral-sign:before{content:""}.fa-award:before{content:""}.fa-b:before{content:"B"}.fa-baby:before{content:""}.fa-baby-carriage:before,.fa-carriage-baby:before{content:""}.fa-backward:before{content:""}.fa-backward-fast:before,.fa-fast-backward:before{content:""}.fa-backward-step:before,.fa-step-backward:before{content:""}.fa-bacon:before{content:""}.fa-bacteria:before{content:""}.fa-bacterium:before{content:""}.fa-bag-shopping:before,.fa-shopping-bag:before{content:""}.fa-bahai:before{content:""}.fa-baht-sign:before{content:""}.fa-ban:before,.fa-cancel:before{content:""}.fa-ban-smoking:before,.fa-smoking-ban:before{content:""}.fa-band-aid:before,.fa-bandage:before{content:""}.fa-barcode:before{content:""}.fa-bars:before,.fa-navicon:before{content:""}.fa-bars-progress:before,.fa-tasks-alt:before{content:""}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:""}.fa-baseball-ball:before,.fa-baseball:before{content:""}.fa-baseball-bat-ball:before{content:""}.fa-basket-shopping:before,.fa-shopping-basket:before{content:""}.fa-basketball-ball:before,.fa-basketball:before{content:""}.fa-bath:before,.fa-bathtub:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-half:before{content:""}.fa-battery-2:before,.fa-battery-quarter:before{content:""}.fa-battery-4:before,.fa-battery-three-quarters:before{content:""}.fa-bed:before{content:""}.fa-bed-pulse:before,.fa-procedures:before{content:""}.fa-beer-mug-empty:before,.fa-beer:before{content:""}.fa-bell:before{content:""}.fa-bell-concierge:before,.fa-concierge-bell:before{content:""}.fa-bell-slash:before{content:""}.fa-bezier-curve:before{content:""}.fa-bicycle:before{content:""}.fa-binoculars:before{content:""}.fa-biohazard:before{content:""}.fa-bitcoin-sign:before{content:""}.fa-blender:before{content:""}.fa-blender-phone:before{content:""}.fa-blog:before{content:""}.fa-bold:before{content:""}.fa-bolt:before,.fa-zap:before{content:""}.fa-bolt-lightning:before{content:""}.fa-bomb:before{content:""}.fa-bone:before{content:""}.fa-bong:before{content:""}.fa-book:before{content:""}.fa-atlas:before,.fa-book-atlas:before{content:""}.fa-bible:before,.fa-book-bible:before{content:""}.fa-book-journal-whills:before,.fa-journal-whills:before{content:""}.fa-book-medical:before{content:""}.fa-book-open:before{content:""}.fa-book-open-reader:before,.fa-book-reader:before{content:""}.fa-book-quran:before,.fa-quran:before{content:""}.fa-book-dead:before,.fa-book-skull:before{content:""}.fa-bookmark:before{content:""}.fa-border-all:before{content:""}.fa-border-none:before{content:""}.fa-border-style:before,.fa-border-top-left:before{content:""}.fa-bowling-ball:before{content:""}.fa-box:before{content:""}.fa-archive:before,.fa-box-archive:before{content:""}.fa-box-open:before{content:""}.fa-box-tissue:before{content:""}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:""}.fa-braille:before{content:""}.fa-brain:before{content:""}.fa-brazilian-real-sign:before{content:""}.fa-bread-slice:before{content:""}.fa-briefcase:before{content:""}.fa-briefcase-medical:before{content:""}.fa-broom:before{content:""}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:""}.fa-brush:before{content:""}.fa-bug:before{content:""}.fa-bug-slash:before{content:""}.fa-building:before{content:""}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:""}.fa-bullhorn:before{content:""}.fa-bullseye:before{content:""}.fa-burger:before,.fa-hamburger:before{content:""}.fa-bus:before{content:""}.fa-bus-alt:before,.fa-bus-simple:before{content:""}.fa-briefcase-clock:before,.fa-business-time:before{content:""}.fa-c:before{content:"C"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:""}.fa-calculator:before{content:""}.fa-calendar:before{content:""}.fa-calendar-check:before{content:""}.fa-calendar-day:before{content:""}.fa-calendar-alt:before,.fa-calendar-days:before{content:""}.fa-calendar-minus:before{content:""}.fa-calendar-plus:before{content:""}.fa-calendar-week:before{content:""}.fa-calendar-times:before,.fa-calendar-xmark:before{content:""}.fa-camera-alt:before,.fa-camera:before{content:""}.fa-camera-retro:before{content:""}.fa-camera-rotate:before{content:""}.fa-campground:before{content:""}.fa-candy-cane:before{content:""}.fa-cannabis:before{content:""}.fa-capsules:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-battery-car:before,.fa-car-battery:before{content:""}.fa-car-crash:before{content:""}.fa-car-alt:before,.fa-car-rear:before{content:""}.fa-car-side:before{content:""}.fa-caravan:before{content:""}.fa-caret-down:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-caret-up:before{content:""}.fa-carrot:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:""}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-shopping:before,.fa-shopping-cart:before{content:""}.fa-cash-register:before{content:""}.fa-cat:before{content:""}.fa-cedi-sign:before{content:""}.fa-cent-sign:before{content:""}.fa-certificate:before{content:""}.fa-chair:before{content:""}.fa-blackboard:before,.fa-chalkboard:before{content:""}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:""}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:""}.fa-charging-station:before{content:""}.fa-area-chart:before,.fa-chart-area:before{content:""}.fa-bar-chart:before,.fa-chart-bar:before{content:""}.fa-chart-column:before{content:""}.fa-chart-gantt:before{content:""}.fa-chart-line:before,.fa-line-chart:before{content:""}.fa-chart-pie:before,.fa-pie-chart:before{content:""}.fa-check:before{content:""}.fa-check-double:before{content:""}.fa-check-to-slot:before,.fa-vote-yea:before{content:""}.fa-cheese:before{content:""}.fa-chess:before{content:""}.fa-chess-bishop:before{content:""}.fa-chess-board:before{content:""}.fa-chess-king:before{content:""}.fa-chess-knight:before{content:""}.fa-chess-pawn:before{content:""}.fa-chess-queen:before{content:""}.fa-chess-rook:before{content:""}.fa-chevron-down:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-chevron-up:before{content:""}.fa-child:before{content:""}.fa-church:before{content:""}.fa-circle:before{content:""}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:""}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:""}.fa-check-circle:before,.fa-circle-check:before{content:""}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:""}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:""}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:""}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:""}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:""}.fa-circle-dot:before,.fa-dot-circle:before{content:""}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:""}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:""}.fa-circle-h:before,.fa-hospital-symbol:before{content:""}.fa-adjust:before,.fa-circle-half-stroke:before{content:""}.fa-circle-info:before,.fa-info-circle:before{content:""}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:""}.fa-circle-minus:before,.fa-minus-circle:before{content:""}.fa-circle-notch:before{content:""}.fa-circle-pause:before,.fa-pause-circle:before{content:""}.fa-circle-play:before,.fa-play-circle:before{content:""}.fa-circle-plus:before,.fa-plus-circle:before{content:""}.fa-circle-question:before,.fa-question-circle:before{content:""}.fa-circle-radiation:before,.fa-radiation-alt:before{content:""}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:""}.fa-circle-stop:before,.fa-stop-circle:before{content:""}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:""}.fa-circle-user:before,.fa-user-circle:before{content:""}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:""}.fa-city:before{content:""}.fa-clapperboard:before{content:""}.fa-clipboard:before{content:""}.fa-clipboard-check:before{content:""}.fa-clipboard-list:before{content:""}.fa-clock-four:before,.fa-clock:before{content:""}.fa-clock-rotate-left:before,.fa-history:before{content:""}.fa-clone:before{content:""}.fa-closed-captioning:before{content:""}.fa-cloud:before{content:""}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:""}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:""}.fa-cloud-meatball:before{content:""}.fa-cloud-moon:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-cloud-rain:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-cloud-sun:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-clover:before{content:""}.fa-code:before{content:""}.fa-code-branch:before{content:""}.fa-code-commit:before{content:""}.fa-code-compare:before{content:""}.fa-code-fork:before{content:""}.fa-code-merge:before{content:""}.fa-code-pull-request:before{content:""}.fa-coins:before{content:""}.fa-colon-sign:before{content:""}.fa-comment:before{content:""}.fa-comment-dollar:before{content:""}.fa-comment-dots:before,.fa-commenting:before{content:""}.fa-comment-medical:before{content:""}.fa-comment-slash:before{content:""}.fa-comment-sms:before,.fa-sms:before{content:""}.fa-comments:before{content:""}.fa-comments-dollar:before{content:""}.fa-compact-disc:before{content:""}.fa-compass:before{content:""}.fa-compass-drafting:before,.fa-drafting-compass:before{content:""}.fa-compress:before{content:""}.fa-computer-mouse:before,.fa-mouse:before{content:""}.fa-cookie:before{content:""}.fa-cookie-bite:before{content:""}.fa-copy:before{content:""}.fa-copyright:before{content:""}.fa-couch:before{content:""}.fa-credit-card-alt:before,.fa-credit-card:before{content:""}.fa-crop:before{content:""}.fa-crop-alt:before,.fa-crop-simple:before{content:""}.fa-cross:before{content:""}.fa-crosshairs:before{content:""}.fa-crow:before{content:""}.fa-crown:before{content:""}.fa-crutch:before{content:""}.fa-cruzeiro-sign:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-d:before{content:"D"}.fa-database:before{content:""}.fa-backspace:before,.fa-delete-left:before{content:""}.fa-democrat:before{content:""}.fa-desktop-alt:before,.fa-desktop:before{content:""}.fa-dharmachakra:before{content:""}.fa-diagram-next:before{content:""}.fa-diagram-predecessor:before{content:""}.fa-diagram-project:before,.fa-project-diagram:before{content:""}.fa-diagram-successor:before{content:""}.fa-diamond:before{content:""}.fa-diamond-turn-right:before,.fa-directions:before{content:""}.fa-dice:before{content:""}.fa-dice-d20:before{content:""}.fa-dice-d6:before{content:""}.fa-dice-five:before{content:""}.fa-dice-four:before{content:""}.fa-dice-one:before{content:""}.fa-dice-six:before{content:""}.fa-dice-three:before{content:""}.fa-dice-two:before{content:""}.fa-disease:before{content:""}.fa-divide:before{content:""}.fa-dna:before{content:""}.fa-dog:before{content:""}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"$"}.fa-dolly-box:before,.fa-dolly:before{content:""}.fa-dong-sign:before{content:""}.fa-door-closed:before{content:""}.fa-door-open:before{content:""}.fa-dove:before{content:""}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:""}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:""}.fa-download:before{content:""}.fa-dragon:before{content:""}.fa-draw-polygon:before{content:""}.fa-droplet:before,.fa-tint:before{content:""}.fa-droplet-slash:before,.fa-tint-slash:before{content:""}.fa-drum:before{content:""}.fa-drum-steelpan:before{content:""}.fa-drumstick-bite:before{content:""}.fa-dumbbell:before{content:""}.fa-dumpster:before{content:""}.fa-dumpster-fire:before{content:""}.fa-dungeon:before{content:""}.fa-e:before{content:"E"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:""}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:""}.fa-earth-africa:before,.fa-globe-africa:before{content:""}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:""}.fa-earth-asia:before,.fa-globe-asia:before{content:""}.fa-earth-europe:before,.fa-globe-europe:before{content:""}.fa-earth-oceania:before,.fa-globe-oceania:before{content:""}.fa-egg:before{content:""}.fa-eject:before{content:""}.fa-elevator:before{content:""}.fa-ellipsis-h:before,.fa-ellipsis:before{content:""}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:""}.fa-envelope:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-text:before{content:""}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:""}.fa-equals:before{content:"="}.fa-eraser:before{content:""}.fa-ethernet:before{content:""}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:""}.fa-exclamation:before{content:"!"}.fa-expand:before{content:""}.fa-eye:before{content:""}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:""}.fa-eye-low-vision:before,.fa-low-vision:before{content:""}.fa-eye-slash:before{content:""}.fa-f:before{content:"F"}.fa-angry:before,.fa-face-angry:before{content:""}.fa-dizzy:before,.fa-face-dizzy:before{content:""}.fa-face-flushed:before,.fa-flushed:before{content:""}.fa-face-frown:before,.fa-frown:before{content:""}.fa-face-frown-open:before,.fa-frown-open:before{content:""}.fa-face-grimace:before,.fa-grimace:before{content:""}.fa-face-grin:before,.fa-grin:before{content:""}.fa-face-grin-beam:before,.fa-grin-beam:before{content:""}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:""}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:""}.fa-face-grin-squint:before,.fa-grin-squint:before{content:""}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:""}.fa-face-grin-stars:before,.fa-grin-stars:before{content:""}.fa-face-grin-tears:before,.fa-grin-tears:before{content:""}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:""}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:""}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:""}.fa-face-grin-wide:before,.fa-grin-alt:before{content:""}.fa-face-grin-wink:before,.fa-grin-wink:before{content:""}.fa-face-kiss:before,.fa-kiss:before{content:""}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:""}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:""}.fa-face-laugh:before,.fa-laugh:before{content:""}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:""}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:""}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:""}.fa-face-meh:before,.fa-meh:before{content:""}.fa-face-meh-blank:before,.fa-meh-blank:before{content:""}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:""}.fa-face-sad-cry:before,.fa-sad-cry:before{content:""}.fa-face-sad-tear:before,.fa-sad-tear:before{content:""}.fa-face-smile:before,.fa-smile:before{content:""}.fa-face-smile-beam:before,.fa-smile-beam:before{content:""}.fa-face-smile-wink:before,.fa-smile-wink:before{content:""}.fa-face-surprise:before,.fa-surprise:before{content:""}.fa-face-tired:before,.fa-tired:before{content:""}.fa-fan:before{content:""}.fa-faucet:before{content:""}.fa-fax:before{content:""}.fa-feather:before{content:""}.fa-feather-alt:before,.fa-feather-pointed:before{content:""}.fa-file:before{content:""}.fa-file-arrow-down:before,.fa-file-download:before{content:""}.fa-file-arrow-up:before,.fa-file-upload:before{content:""}.fa-file-audio:before{content:""}.fa-file-code:before{content:""}.fa-file-contract:before{content:""}.fa-file-csv:before{content:""}.fa-file-excel:before{content:""}.fa-arrow-right-from-file:before,.fa-file-export:before{content:""}.fa-file-image:before{content:""}.fa-arrow-right-to-file:before,.fa-file-import:before{content:""}.fa-file-invoice:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:""}.fa-file-medical:before{content:""}.fa-file-pdf:before{content:""}.fa-file-powerpoint:before{content:""}.fa-file-prescription:before{content:""}.fa-file-signature:before{content:""}.fa-file-video:before{content:""}.fa-file-medical-alt:before,.fa-file-waveform:before{content:""}.fa-file-word:before{content:""}.fa-file-archive:before,.fa-file-zipper:before{content:""}.fa-fill:before{content:""}.fa-fill-drip:before{content:""}.fa-film:before{content:""}.fa-filter:before{content:""}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:""}.fa-filter-circle-xmark:before{content:""}.fa-fingerprint:before{content:""}.fa-fire:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:""}.fa-burn:before,.fa-fire-flame-simple:before{content:""}.fa-fish:before{content:""}.fa-flag:before{content:""}.fa-flag-checkered:before{content:""}.fa-flag-usa:before{content:""}.fa-flask:before{content:""}.fa-floppy-disk:before,.fa-save:before{content:""}.fa-florin-sign:before{content:""}.fa-folder:before{content:""}.fa-folder-minus:before{content:""}.fa-folder-open:before{content:""}.fa-folder-plus:before{content:""}.fa-folder-tree:before{content:""}.fa-font:before{content:""}.fa-football-ball:before,.fa-football:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before,.fa-forward-fast:before{content:""}.fa-forward-step:before,.fa-step-forward:before{content:""}.fa-franc-sign:before{content:""}.fa-frog:before{content:""}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:""}.fa-g:before{content:"G"}.fa-gamepad:before{content:""}.fa-gas-pump:before{content:""}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:""}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:""}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:""}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-gem:before{content:""}.fa-genderless:before{content:""}.fa-ghost:before{content:""}.fa-gift:before{content:""}.fa-gifts:before{content:""}.fa-glasses:before{content:""}.fa-globe:before{content:""}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:""}.fa-gopuram:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-greater-than:before{content:">"}.fa-greater-than-equal:before{content:""}.fa-grip-horizontal:before,.fa-grip:before{content:""}.fa-grip-lines:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-grip-vertical:before{content:""}.fa-guarani-sign:before{content:""}.fa-guitar:before{content:""}.fa-gun:before{content:""}.fa-h:before{content:"H"}.fa-hammer:before{content:""}.fa-hamsa:before{content:""}.fa-hand-paper:before,.fa-hand:before{content:""}.fa-hand-back-fist:before,.fa-hand-rock:before{content:""}.fa-allergies:before,.fa-hand-dots:before{content:""}.fa-fist-raised:before,.fa-hand-fist:before{content:""}.fa-hand-holding:before{content:""}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:""}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-hand-holding-medical:before{content:""}.fa-hand-lizard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-hand-peace:before{content:""}.fa-hand-point-down:before{content:""}.fa-hand-point-left:before{content:""}.fa-hand-point-right:before{content:""}.fa-hand-point-up:before{content:""}.fa-hand-pointer:before{content:""}.fa-hand-scissors:before{content:""}.fa-hand-sparkles:before{content:""}.fa-hand-spock:before{content:""}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:""}.fa-hands-bubbles:before,.fa-hands-wash:before{content:""}.fa-hands-clapping:before{content:""}.fa-hands-holding:before{content:""}.fa-hands-praying:before,.fa-praying-hands:before{content:""}.fa-handshake:before{content:""}.fa-hands-helping:before,.fa-handshake-angle:before{content:""}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:""}.fa-handshake-slash:before{content:""}.fa-hanukiah:before{content:""}.fa-hard-drive:before,.fa-hdd:before{content:""}.fa-hashtag:before{content:"#"}.fa-hat-cowboy:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-hat-wizard:before{content:""}.fa-head-side-cough:before{content:""}.fa-head-side-cough-slash:before{content:""}.fa-head-side-mask:before{content:""}.fa-head-side-virus:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-headphones:before{content:""}.fa-headphones-alt:before,.fa-headphones-simple:before{content:""}.fa-headset:before{content:""}.fa-heart:before{content:""}.fa-heart-broken:before,.fa-heart-crack:before{content:""}.fa-heart-pulse:before,.fa-heartbeat:before{content:""}.fa-helicopter:before{content:""}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:""}.fa-highlighter:before{content:""}.fa-hippo:before{content:""}.fa-hockey-puck:before{content:""}.fa-holly-berry:before{content:""}.fa-horse:before{content:""}.fa-horse-head:before{content:""}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:""}.fa-hospital-user:before{content:""}.fa-hot-tub-person:before,.fa-hot-tub:before{content:""}.fa-hotdog:before{content:""}.fa-hotel:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before,.fa-hourglass:before{content:""}.fa-hourglass-empty:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:""}.fa-home-lg:before,.fa-house-chimney:before{content:""}.fa-house-chimney-crack:before,.fa-house-damage:before{content:""}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:""}.fa-house-chimney-user:before{content:""}.fa-house-chimney-window:before{content:""}.fa-house-crack:before{content:""}.fa-house-laptop:before,.fa-laptop-house:before{content:""}.fa-house-medical:before{content:""}.fa-home-user:before,.fa-house-user:before{content:""}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:""}.fa-i:before{content:"I"}.fa-i-cursor:before{content:""}.fa-ice-cream:before{content:""}.fa-icicles:before{content:""}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-id-card-alt:before,.fa-id-card-clip:before{content:""}.fa-igloo:before{content:""}.fa-image:before{content:""}.fa-image-portrait:before,.fa-portrait:before{content:""}.fa-images:before{content:""}.fa-inbox:before{content:""}.fa-indent:before{content:""}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:""}.fa-industry:before{content:""}.fa-infinity:before{content:""}.fa-info:before{content:""}.fa-italic:before{content:""}.fa-j:before{content:"J"}.fa-jedi:before{content:""}.fa-fighter-jet:before,.fa-jet-fighter:before{content:""}.fa-joint:before{content:""}.fa-k:before{content:"K"}.fa-kaaba:before{content:""}.fa-key:before{content:""}.fa-keyboard:before{content:""}.fa-khanda:before{content:""}.fa-kip-sign:before{content:""}.fa-first-aid:before,.fa-kit-medical:before{content:""}.fa-kiwi-bird:before{content:""}.fa-l:before{content:"L"}.fa-landmark:before{content:""}.fa-language:before{content:""}.fa-laptop:before{content:""}.fa-laptop-code:before{content:""}.fa-laptop-medical:before{content:""}.fa-lari-sign:before{content:""}.fa-layer-group:before{content:""}.fa-leaf:before{content:""}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:""}.fa-arrows-alt-h:before,.fa-left-right:before{content:""}.fa-lemon:before{content:""}.fa-less-than:before{content:"<"}.fa-less-than-equal:before{content:""}.fa-life-ring:before{content:""}.fa-lightbulb:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:""}.fa-lira-sign:before{content:""}.fa-list-squares:before,.fa-list:before{content:""}.fa-list-check:before,.fa-tasks:before{content:""}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:""}.fa-list-dots:before,.fa-list-ul:before{content:""}.fa-litecoin-sign:before{content:""}.fa-location-arrow:before{content:""}.fa-location-crosshairs:before,.fa-location:before{content:""}.fa-location-dot:before,.fa-map-marker-alt:before{content:""}.fa-location-pin:before,.fa-map-marker:before{content:""}.fa-lock:before{content:""}.fa-lock-open:before{content:""}.fa-lungs:before{content:""}.fa-lungs-virus:before{content:""}.fa-m:before{content:"M"}.fa-magnet:before{content:""}.fa-magnifying-glass:before,.fa-search:before{content:""}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:""}.fa-magnifying-glass-location:before,.fa-search-location:before{content:""}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:""}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:""}.fa-manat-sign:before{content:""}.fa-map:before{content:""}.fa-map-location:before,.fa-map-marked:before{content:""}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:""}.fa-map-pin:before{content:""}.fa-marker:before{content:""}.fa-mars:before{content:""}.fa-mars-and-venus:before{content:""}.fa-mars-double:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:""}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:""}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:""}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:""}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:""}.fa-mask:before{content:""}.fa-mask-face:before{content:""}.fa-masks-theater:before,.fa-theater-masks:before{content:""}.fa-expand-arrows-alt:before,.fa-maximize:before{content:""}.fa-medal:before{content:""}.fa-memory:before{content:""}.fa-menorah:before{content:""}.fa-mercury:before{content:""}.fa-comment-alt:before,.fa-message:before{content:""}.fa-meteor:before{content:""}.fa-microchip:before{content:""}.fa-microphone:before{content:""}.fa-microphone-alt:before,.fa-microphone-lines:before{content:""}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:""}.fa-microphone-slash:before{content:""}.fa-microscope:before{content:""}.fa-mill-sign:before{content:""}.fa-compress-arrows-alt:before,.fa-minimize:before{content:""}.fa-minus:before,.fa-subtract:before{content:""}.fa-mitten:before{content:""}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-mobile-button:before{content:""}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:""}.fa-money-bill:before{content:""}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:""}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:""}.fa-money-bill-wave:before{content:""}.fa-money-check:before{content:""}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:""}.fa-monument:before{content:""}.fa-moon:before{content:""}.fa-mortar-pestle:before{content:""}.fa-mosque:before{content:""}.fa-motorcycle:before{content:""}.fa-mountain:before{content:""}.fa-mug-hot:before{content:""}.fa-coffee:before,.fa-mug-saucer:before{content:""}.fa-music:before{content:""}.fa-n:before{content:"N"}.fa-naira-sign:before{content:""}.fa-network-wired:before{content:""}.fa-neuter:before{content:""}.fa-newspaper:before{content:""}.fa-not-equal:before{content:""}.fa-note-sticky:before,.fa-sticky-note:before{content:""}.fa-notes-medical:before{content:""}.fa-o:before{content:"O"}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-oil-can:before{content:""}.fa-om:before{content:""}.fa-otter:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-p:before{content:"P"}.fa-pager:before{content:""}.fa-paint-roller:before{content:""}.fa-paint-brush:before,.fa-paintbrush:before{content:""}.fa-palette:before{content:""}.fa-pallet:before{content:""}.fa-panorama:before{content:""}.fa-paper-plane:before{content:""}.fa-paperclip:before{content:""}.fa-parachute-box:before{content:""}.fa-paragraph:before{content:""}.fa-passport:before{content:""}.fa-file-clipboard:before,.fa-paste:before{content:""}.fa-pause:before{content:""}.fa-paw:before{content:""}.fa-peace:before{content:""}.fa-pen:before{content:""}.fa-pen-alt:before,.fa-pen-clip:before{content:""}.fa-pen-fancy:before{content:""}.fa-pen-nib:before{content:""}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:""}.fa-edit:before,.fa-pen-to-square:before{content:""}.fa-pencil-alt:before,.fa-pencil:before{content:""}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:""}.fa-people-carry-box:before,.fa-people-carry:before{content:""}.fa-pepper-hot:before{content:""}.fa-percent:before,.fa-percentage:before{content:"%"}.fa-male:before,.fa-person:before{content:""}.fa-biking:before,.fa-person-biking:before{content:""}.fa-person-booth:before{content:""}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:""}.fa-female:before,.fa-person-dress:before{content:""}.fa-hiking:before,.fa-person-hiking:before{content:""}.fa-person-praying:before,.fa-pray:before{content:""}.fa-person-running:before,.fa-running:before{content:""}.fa-person-skating:before,.fa-skating:before{content:""}.fa-person-skiing:before,.fa-skiing:before{content:""}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:""}.fa-person-snowboarding:before,.fa-snowboarding:before{content:""}.fa-person-swimming:before,.fa-swimmer:before{content:""}.fa-person-walking:before,.fa-walking:before{content:""}.fa-blind:before,.fa-person-walking-with-cane:before{content:""}.fa-peseta-sign:before{content:""}.fa-peso-sign:before{content:""}.fa-phone:before{content:""}.fa-phone-alt:before,.fa-phone-flip:before{content:""}.fa-phone-slash:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-photo-film:before,.fa-photo-video:before{content:""}.fa-piggy-bank:before{content:""}.fa-pills:before{content:""}.fa-pizza-slice:before{content:""}.fa-place-of-worship:before{content:""}.fa-plane:before{content:""}.fa-plane-arrival:before{content:""}.fa-plane-departure:before{content:""}.fa-plane-slash:before{content:""}.fa-play:before{content:""}.fa-plug:before{content:""}.fa-add:before,.fa-plus:before{content:"+"}.fa-plus-minus:before{content:""}.fa-podcast:before{content:""}.fa-poo:before{content:""}.fa-poo-bolt:before,.fa-poo-storm:before{content:""}.fa-poop:before{content:""}.fa-power-off:before{content:""}.fa-prescription:before{content:""}.fa-prescription-bottle:before{content:""}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:""}.fa-print:before{content:""}.fa-pump-medical:before{content:""}.fa-pump-soap:before{content:""}.fa-puzzle-piece:before{content:""}.fa-q:before{content:"Q"}.fa-qrcode:before{content:""}.fa-question:before{content:"?"}.fa-quote-left-alt:before,.fa-quote-left:before{content:""}.fa-quote-right-alt:before,.fa-quote-right:before{content:""}.fa-r:before{content:"R"}.fa-radiation:before{content:""}.fa-rainbow:before{content:""}.fa-receipt:before{content:""}.fa-record-vinyl:before{content:""}.fa-ad:before,.fa-rectangle-ad:before{content:""}.fa-list-alt:before,.fa-rectangle-list:before{content:""}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-recycle:before{content:""}.fa-registered:before{content:""}.fa-repeat:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-republican:before{content:""}.fa-restroom:before{content:""}.fa-retweet:before{content:""}.fa-ribbon:before{content:""}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:""}.fa-exchange-alt:before,.fa-right-left:before{content:""}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:""}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:""}.fa-ring:before{content:""}.fa-road:before{content:""}.fa-robot:before{content:""}.fa-rocket:before{content:""}.fa-rotate:before,.fa-sync-alt:before{content:""}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:""}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:""}.fa-route:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:""}.fa-ruler:before{content:""}.fa-ruler-combined:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-ruler-vertical:before{content:""}.fa-rupee-sign:before,.fa-rupee:before{content:""}.fa-rupiah-sign:before{content:""}.fa-s:before{content:"S"}.fa-sailboat:before{content:""}.fa-satellite:before{content:""}.fa-satellite-dish:before{content:""}.fa-balance-scale:before,.fa-scale-balanced:before{content:""}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:""}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:""}.fa-school:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-screwdriver:before{content:""}.fa-screwdriver-wrench:before,.fa-tools:before{content:""}.fa-scroll:before{content:""}.fa-scroll-torah:before,.fa-torah:before{content:""}.fa-sd-card:before{content:""}.fa-section:before{content:""}.fa-seedling:before,.fa-sprout:before{content:""}.fa-server:before{content:""}.fa-shapes:before,.fa-triangle-circle-square:before{content:""}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:""}.fa-share-from-square:before,.fa-share-square:before{content:""}.fa-share-alt:before,.fa-share-nodes:before{content:""}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:""}.fa-shield:before{content:""}.fa-shield-alt:before,.fa-shield-blank:before{content:""}.fa-shield-virus:before{content:""}.fa-ship:before{content:""}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:""}.fa-shoe-prints:before{content:""}.fa-shop:before,.fa-store-alt:before{content:""}.fa-shop-slash:before,.fa-store-alt-slash:before{content:""}.fa-shower:before{content:""}.fa-shrimp:before{content:""}.fa-random:before,.fa-shuffle:before{content:""}.fa-shuttle-space:before,.fa-space-shuttle:before{content:""}.fa-sign-hanging:before,.fa-sign:before{content:""}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:""}.fa-signature:before{content:""}.fa-map-signs:before,.fa-signs-post:before{content:""}.fa-sim-card:before{content:""}.fa-sink:before{content:""}.fa-sitemap:before{content:""}.fa-skull:before{content:""}.fa-skull-crossbones:before{content:""}.fa-slash:before{content:""}.fa-sleigh:before{content:""}.fa-sliders-h:before,.fa-sliders:before{content:""}.fa-smog:before{content:""}.fa-smoking:before{content:""}.fa-snowflake:before{content:""}.fa-snowman:before{content:""}.fa-snowplow:before{content:""}.fa-soap:before{content:""}.fa-socks:before{content:""}.fa-solar-panel:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-spa:before{content:""}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:""}.fa-spell-check:before{content:""}.fa-spider:before{content:""}.fa-spinner:before{content:""}.fa-splotch:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-spray-can:before{content:""}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:""}.fa-square:before{content:""}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:""}.fa-caret-square-down:before,.fa-square-caret-down:before{content:""}.fa-caret-square-left:before,.fa-square-caret-left:before{content:""}.fa-caret-square-right:before,.fa-square-caret-right:before{content:""}.fa-caret-square-up:before,.fa-square-caret-up:before{content:""}.fa-check-square:before,.fa-square-check:before{content:""}.fa-envelope-square:before,.fa-square-envelope:before{content:""}.fa-square-full:before{content:""}.fa-h-square:before,.fa-square-h:before{content:""}.fa-minus-square:before,.fa-square-minus:before{content:""}.fa-parking:before,.fa-square-parking:before{content:""}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:""}.fa-phone-square:before,.fa-square-phone:before{content:""}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:""}.fa-plus-square:before,.fa-square-plus:before{content:""}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:""}.fa-poll:before,.fa-square-poll-vertical:before{content:""}.fa-square-root-alt:before,.fa-square-root-variable:before{content:""}.fa-rss-square:before,.fa-square-rss:before{content:""}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:""}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:""}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:""}.fa-stairs:before{content:""}.fa-stamp:before{content:""}.fa-star:before{content:""}.fa-star-and-crescent:before{content:""}.fa-star-half:before{content:""}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:""}.fa-star-of-david:before{content:""}.fa-star-of-life:before{content:""}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:""}.fa-stethoscope:before{content:""}.fa-stop:before{content:""}.fa-stopwatch:before{content:""}.fa-stopwatch-20:before{content:""}.fa-store:before{content:""}.fa-store-slash:before{content:""}.fa-street-view:before{content:""}.fa-strikethrough:before{content:""}.fa-stroopwafel:before{content:""}.fa-subscript:before{content:""}.fa-suitcase:before{content:""}.fa-medkit:before,.fa-suitcase-medical:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-sun:before{content:""}.fa-superscript:before{content:""}.fa-swatchbook:before{content:""}.fa-synagogue:before{content:""}.fa-syringe:before{content:""}.fa-t:before{content:"T"}.fa-table:before{content:""}.fa-table-cells:before,.fa-th:before{content:""}.fa-table-cells-large:before,.fa-th-large:before{content:""}.fa-columns:before,.fa-table-columns:before{content:""}.fa-table-list:before,.fa-th-list:before{content:""}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:""}.fa-tablet-android:before,.fa-tablet:before{content:""}.fa-tablet-button:before{content:""}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:""}.fa-tablets:before{content:""}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-tape:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-teeth:before{content:""}.fa-teeth-open:before{content:""}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:""}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-temperature-high:before{content:""}.fa-temperature-low:before{content:""}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-tenge-sign:before,.fa-tenge:before{content:""}.fa-terminal:before{content:""}.fa-text-height:before{content:""}.fa-remove-format:before,.fa-text-slash:before{content:""}.fa-text-width:before{content:""}.fa-thermometer:before{content:""}.fa-thumbs-down:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumb-tack:before,.fa-thumbtack:before{content:""}.fa-ticket:before{content:""}.fa-ticket-alt:before,.fa-ticket-simple:before{content:""}.fa-timeline:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-toilet:before{content:""}.fa-toilet-paper:before{content:""}.fa-toilet-paper-slash:before{content:""}.fa-toolbox:before{content:""}.fa-tooth:before{content:""}.fa-torii-gate:before{content:""}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:""}.fa-tractor:before{content:""}.fa-trademark:before{content:""}.fa-traffic-light:before{content:""}.fa-trailer:before{content:""}.fa-train:before{content:""}.fa-subway:before,.fa-train-subway:before{content:""}.fa-train-tram:before,.fa-tram:before{content:""}.fa-transgender-alt:before,.fa-transgender:before{content:""}.fa-trash:before{content:""}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:""}.fa-trash-alt:before,.fa-trash-can:before{content:""}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:""}.fa-tree:before{content:""}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:""}.fa-trophy:before{content:""}.fa-truck:before{content:""}.fa-shipping-fast:before,.fa-truck-fast:before{content:""}.fa-ambulance:before,.fa-truck-medical:before{content:""}.fa-truck-monster:before{content:""}.fa-truck-moving:before{content:""}.fa-truck-pickup:before{content:""}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:""}.fa-teletype:before,.fa-tty:before{content:""}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:""}.fa-level-down-alt:before,.fa-turn-down:before{content:""}.fa-level-up-alt:before,.fa-turn-up:before{content:""}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:""}.fa-u:before{content:"U"}.fa-umbrella:before{content:""}.fa-umbrella-beach:before{content:""}.fa-underline:before{content:""}.fa-universal-access:before{content:""}.fa-unlock:before{content:""}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:""}.fa-arrows-alt-v:before,.fa-up-down:before{content:""}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:""}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:""}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:""}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:""}.fa-upload:before{content:""}.fa-user:before{content:""}.fa-user-astronaut:before{content:""}.fa-user-check:before{content:""}.fa-user-clock:before{content:""}.fa-user-doctor:before,.fa-user-md:before{content:""}.fa-user-cog:before,.fa-user-gear:before{content:""}.fa-user-graduate:before{content:""}.fa-user-friends:before,.fa-user-group:before{content:""}.fa-user-injured:before{content:""}.fa-user-alt:before,.fa-user-large:before{content:""}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:""}.fa-user-lock:before{content:""}.fa-user-minus:before{content:""}.fa-user-ninja:before{content:""}.fa-user-nurse:before{content:""}.fa-user-edit:before,.fa-user-pen:before{content:""}.fa-user-plus:before{content:""}.fa-user-secret:before{content:""}.fa-user-shield:before{content:""}.fa-user-slash:before{content:""}.fa-user-tag:before{content:""}.fa-user-tie:before{content:""}.fa-user-times:before,.fa-user-xmark:before{content:""}.fa-users:before{content:""}.fa-users-cog:before,.fa-users-gear:before{content:""}.fa-users-slash:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-v:before{content:"V"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:""}.fa-vault:before{content:""}.fa-vector-square:before{content:""}.fa-venus:before{content:""}.fa-venus-double:before{content:""}.fa-venus-mars:before{content:""}.fa-vest:before{content:""}.fa-vest-patches:before{content:""}.fa-vial:before{content:""}.fa-vials:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-video-slash:before{content:""}.fa-vihara:before{content:""}.fa-virus:before{content:""}.fa-virus-covid:before{content:""}.fa-virus-covid-slash:before{content:""}.fa-virus-slash:before{content:""}.fa-viruses:before{content:""}.fa-voicemail:before{content:""}.fa-volleyball-ball:before,.fa-volleyball:before{content:""}.fa-volume-high:before,.fa-volume-up:before{content:""}.fa-volume-down:before,.fa-volume-low:before{content:""}.fa-volume-off:before{content:""}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:""}.fa-vr-cardboard:before{content:""}.fa-w:before{content:"W"}.fa-wallet:before{content:""}.fa-magic:before,.fa-wand-magic:before{content:""}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:""}.fa-wand-sparkles:before{content:""}.fa-warehouse:before{content:""}.fa-water:before{content:""}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:""}.fa-wave-square:before{content:""}.fa-weight-hanging:before{content:""}.fa-weight-scale:before,.fa-weight:before{content:""}.fa-wheelchair:before{content:""}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:""}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:""}.fa-wind:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-wine-bottle:before{content:""}.fa-wine-glass:before{content:""}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:""}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:""}.fa-wrench:before{content:""}.fa-x:before{content:"X"}.fa-x-ray:before{content:""}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:""}.fa-y:before{content:"Y"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:""}.fa-yin-yang:before{content:""}.fa-z:before{content:"Z"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}/*!
  * Font Awesome Free 6.0.0 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
  * Copyright 2022 Fonticons, Inc.
diff --git a/packages/modules/web_themes/colors/web/assets/manifest-DEQalSKE.json b/packages/modules/web_themes/colors/web/assets/manifest-DEQalSKE.json
new file mode 100644
index 0000000000..1cb99cc40d
--- /dev/null
+++ b/packages/modules/web_themes/colors/web/assets/manifest-DEQalSKE.json
@@ -0,0 +1,20 @@
+{
+  "short_name": "openWB",
+  "name": "openWB",
+  "icons": [
+    {
+      "src": "/favicon-192x192.png",
+      "sizes": "192x192",
+      "type": "image/png"
+    },
+    {
+      "src": "/favicon-512x512.png",
+      "sizes": "512x512",
+      "type": "image/png"
+    }
+  ],
+  "start_url": ".",
+  "display": "standalone",
+  "theme_color": "#000000",
+  "background_color": "#ffffff"
+}
\ No newline at end of file
diff --git a/packages/modules/web_themes/colors/web/assets/vendor-Cj6hjtXS.js b/packages/modules/web_themes/colors/web/assets/vendor-Cj6hjtXS.js
new file mode 100644
index 0000000000..83ba8e41ae
--- /dev/null
+++ b/packages/modules/web_themes/colors/web/assets/vendor-Cj6hjtXS.js
@@ -0,0 +1,62 @@
+var JS=Object.defineProperty;var qg=t=>{throw TypeError(t)};var ZS=(t,e,r)=>e in t?JS(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var nt=(t,e,r)=>ZS(t,typeof e!="symbol"?e+"":e,r),pc=(t,e,r)=>e.has(t)||qg("Cannot "+r);var le=(t,e,r)=>(pc(t,e,"read from private field"),r?r.call(t):e.get(t)),je=(t,e,r)=>e.has(t)?qg("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),Ne=(t,e,r,n)=>(pc(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),ke=(t,e,r)=>(pc(t,e,"access private method"),r);var Ia=(t,e,r,n)=>({set _(s){Ne(t,e,s,r)},get _(){return le(t,e,n)}});const Vi=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};/**
+* @vue/shared v3.4.38
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**//*! #__NO_SIDE_EFFECTS__ */function op(t,e){const r=new Set(t.split(","));return n=>r.has(n)}const rt={},Os=[],lr=()=>{},eT=()=>!1,gu=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),ap=t=>t.startsWith("onUpdate:"),Rt=Object.assign,lp=(t,e)=>{const r=t.indexOf(e);r>-1&&t.splice(r,1)},tT=Object.prototype.hasOwnProperty,Ue=(t,e)=>tT.call(t,e),De=Array.isArray,Rs=t=>fa(t)==="[object Map]",no=t=>fa(t)==="[object Set]",Yg=t=>fa(t)==="[object Date]",Be=t=>typeof t=="function",dt=t=>typeof t=="string",Hr=t=>typeof t=="symbol",Qe=t=>t!==null&&typeof t=="object",Wy=t=>(Qe(t)||Be(t))&&Be(t.then)&&Be(t.catch),zy=Object.prototype.toString,fa=t=>zy.call(t),rT=t=>fa(t).slice(8,-1),Hy=t=>fa(t)==="[object Object]",up=t=>dt(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,jo=op(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),mu=t=>{const e=Object.create(null);return r=>e[r]||(e[r]=t(r))},nT=/-(\w)/g,Ar=mu(t=>t.replace(nT,(e,r)=>r?r.toUpperCase():"")),iT=/\B([A-Z])/g,Zi=mu(t=>t.replace(iT,"-$1").toLowerCase()),bu=mu(t=>t.charAt(0).toUpperCase()+t.slice(1)),gc=mu(t=>t?`on${bu(t)}`:""),Qn=(t,e)=>!Object.is(t,e),sl=(t,...e)=>{for(let r=0;r<t.length;r++)t[r](...e)},Vy=(t,e,r,n=!1)=>{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:n,value:r})},Dl=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let Gg;const qy=()=>Gg||(Gg=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof Vi<"u"?Vi:{});function cp(t){if(De(t)){const e={};for(let r=0;r<t.length;r++){const n=t[r],s=dt(n)?lT(n):cp(n);if(s)for(const i in s)e[i]=s[i]}return e}else if(dt(t)||Qe(t))return t}const sT=/;(?![^(]*\))/g,oT=/:([^]+)/,aT=/\/\*[^]*?\*\//g;function lT(t){const e={};return t.replace(aT,"").split(sT).forEach(r=>{if(r){const n=r.split(oT);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}function fp(t){let e="";if(dt(t))e=t;else if(De(t))for(let r=0;r<t.length;r++){const n=fp(t[r]);n&&(e+=n+" ")}else if(Qe(t))for(const r in t)t[r]&&(e+=r+" ");return e.trim()}const uT="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",cT=op(uT);function Yy(t){return!!t||t===""}function fT(t,e){if(t.length!==e.length)return!1;let r=!0;for(let n=0;r&&n<t.length;n++)r=da(t[n],e[n]);return r}function da(t,e){if(t===e)return!0;let r=Yg(t),n=Yg(e);if(r||n)return r&&n?t.getTime()===e.getTime():!1;if(r=Hr(t),n=Hr(e),r||n)return t===e;if(r=De(t),n=De(e),r||n)return r&&n?fT(t,e):!1;if(r=Qe(t),n=Qe(e),r||n){if(!r||!n)return!1;const s=Object.keys(t).length,i=Object.keys(e).length;if(s!==i)return!1;for(const o in t){const a=t.hasOwnProperty(o),l=e.hasOwnProperty(o);if(a&&!l||!a&&l||!da(t[o],e[o]))return!1}}return String(t)===String(e)}function dp(t,e){return t.findIndex(r=>da(r,e))}const Gy=t=>!!(t&&t.__v_isRef===!0),dT=t=>dt(t)?t:t==null?"":De(t)||Qe(t)&&(t.toString===zy||!Be(t.toString))?Gy(t)?dT(t.value):JSON.stringify(t,Ky,2):String(t),Ky=(t,e)=>Gy(e)?Ky(t,e.value):Rs(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((r,[n,s],i)=>(r[mc(n,i)+" =>"]=s,r),{})}:no(e)?{[`Set(${e.size})`]:[...e.values()].map(r=>mc(r))}:Hr(e)?mc(e):Qe(e)&&!De(e)&&!Hy(e)?String(e):e,mc=(t,e="")=>{var r;return Hr(t)?`Symbol(${(r=t.description)!=null?r:e})`:t};/**
+* @vue/reactivity v3.4.38
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let yr;class hT{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=yr,!e&&yr&&(this.index=(yr.scopes||(yr.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const r=yr;try{return yr=this,e()}finally{yr=r}}}on(){yr=this}off(){yr=this.parent}stop(e){if(this._active){let r,n;for(r=0,n=this.effects.length;r<n;r++)this.effects[r].stop();for(r=0,n=this.cleanups.length;r<n;r++)this.cleanups[r]();if(this.scopes)for(r=0,n=this.scopes.length;r<n;r++)this.scopes[r].stop(!0);if(!this.detached&&this.parent&&!e){const s=this.parent.scopes.pop();s&&s!==this&&(this.parent.scopes[this.index]=s,s.index=this.index)}this.parent=void 0,this._active=!1}}}function pT(t,e=yr){e&&e.active&&e.effects.push(t)}function gT(){return yr}let Di;class hp{constructor(e,r,n,s){this.fn=e,this.trigger=r,this.scheduler=n,this.active=!0,this.deps=[],this._dirtyLevel=4,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,pT(this,s)}get dirty(){if(this._dirtyLevel===2||this._dirtyLevel===3){this._dirtyLevel=1,ri();for(let e=0;e<this._depsLength;e++){const r=this.deps[e];if(r.computed&&(mT(r.computed),this._dirtyLevel>=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),ni()}return this._dirtyLevel>=4}set dirty(e){this._dirtyLevel=e?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=Kn,r=Di;try{return Kn=!0,Di=this,this._runnings++,Kg(this),this.fn()}finally{Xg(this),this._runnings--,Di=r,Kn=e}}stop(){this.active&&(Kg(this),Xg(this),this.onStop&&this.onStop(),this.active=!1)}}function mT(t){return t.value}function Kg(t){t._trackId++,t._depsLength=0}function Xg(t){if(t.deps.length>t._depsLength){for(let e=t._depsLength;e<t.deps.length;e++)Xy(t.deps[e],t);t.deps.length=t._depsLength}}function Xy(t,e){const r=t.get(e);r!==void 0&&e._trackId!==r&&(t.delete(e),t.size===0&&t.cleanup())}let Kn=!0,Df=0;const Qy=[];function ri(){Qy.push(Kn),Kn=!1}function ni(){const t=Qy.pop();Kn=t===void 0?!0:t}function pp(){Df++}function gp(){for(Df--;!Df&&Bf.length;)Bf.shift()()}function Jy(t,e,r){if(e.get(t)!==t._trackId){e.set(t,t._trackId);const n=t.deps[t._depsLength];n!==e?(n&&Xy(n,t),t.deps[t._depsLength++]=e):t._depsLength++}}const Bf=[];function Zy(t,e,r){pp();for(const n of t.keys()){let s;n._dirtyLevel<e&&(s??(s=t.get(n)===n._trackId))&&(n._shouldSchedule||(n._shouldSchedule=n._dirtyLevel===0),n._dirtyLevel=e),n._shouldSchedule&&(s??(s=t.get(n)===n._trackId))&&(n.trigger(),(!n._runnings||n.allowRecurse)&&n._dirtyLevel!==2&&(n._shouldSchedule=!1,n.scheduler&&Bf.push(n.scheduler)))}gp()}const ew=(t,e)=>{const r=new Map;return r.cleanup=t,r.computed=e,r},$f=new WeakMap,Bi=Symbol(""),Ff=Symbol("");function Wt(t,e,r){if(Kn&&Di){let n=$f.get(t);n||$f.set(t,n=new Map);let s=n.get(r);s||n.set(r,s=ew(()=>n.delete(r))),Jy(Di,s)}}function hn(t,e,r,n,s,i){const o=$f.get(t);if(!o)return;let a=[];if(e==="clear")a=[...o.values()];else if(r==="length"&&De(t)){const l=Number(n);o.forEach((u,c)=>{(c==="length"||!Hr(c)&&c>=l)&&a.push(u)})}else switch(r!==void 0&&a.push(o.get(r)),e){case"add":De(t)?up(r)&&a.push(o.get("length")):(a.push(o.get(Bi)),Rs(t)&&a.push(o.get(Ff)));break;case"delete":De(t)||(a.push(o.get(Bi)),Rs(t)&&a.push(o.get(Ff)));break;case"set":Rs(t)&&a.push(o.get(Bi));break}pp();for(const l of a)l&&Zy(l,4);gp()}const bT=op("__proto__,__v_isRef,__isVue"),tw=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(Hr)),Qg=yT();function yT(){const t={};return["includes","indexOf","lastIndexOf"].forEach(e=>{t[e]=function(...r){const n=He(this);for(let i=0,o=this.length;i<o;i++)Wt(n,"get",i+"");const s=n[e](...r);return s===-1||s===!1?n[e](...r.map(He)):s}}),["push","pop","shift","unshift","splice"].forEach(e=>{t[e]=function(...r){ri(),pp();const n=He(this)[e].apply(this,r);return gp(),ni(),n}}),t}function wT(t){Hr(t)||(t=String(t));const e=He(this);return Wt(e,"has",t),e.hasOwnProperty(t)}class rw{constructor(e=!1,r=!1){this._isReadonly=e,this._isShallow=r}get(e,r,n){const s=this._isReadonly,i=this._isShallow;if(r==="__v_isReactive")return!s;if(r==="__v_isReadonly")return s;if(r==="__v_isShallow")return i;if(r==="__v_raw")return n===(s?i?PT:ow:i?sw:iw).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const o=De(e);if(!s){if(o&&Ue(Qg,r))return Reflect.get(Qg,r,n);if(r==="hasOwnProperty")return wT}const a=Reflect.get(e,r,n);return(Hr(r)?tw.has(r):bT(r))||(s||Wt(e,"get",r),i)?a:zt(a)?o&&up(r)?a:a.value:Qe(a)?s?aw(a):yp(a):a}}class nw extends rw{constructor(e=!1){super(!1,e)}set(e,r,n,s){let i=e[r];if(!this._isShallow){const l=qi(i);if(!Fs(n)&&!qi(n)&&(i=He(i),n=He(n)),!De(e)&&zt(i)&&!zt(n))return l?!1:(i.value=n,!0)}const o=De(e)&&up(r)?Number(r)<e.length:Ue(e,r),a=Reflect.set(e,r,n,s);return e===He(s)&&(o?Qn(n,i)&&hn(e,"set",r,n):hn(e,"add",r,n)),a}deleteProperty(e,r){const n=Ue(e,r);e[r];const s=Reflect.deleteProperty(e,r);return s&&n&&hn(e,"delete",r,void 0),s}has(e,r){const n=Reflect.has(e,r);return(!Hr(r)||!tw.has(r))&&Wt(e,"has",r),n}ownKeys(e){return Wt(e,"iterate",De(e)?"length":Bi),Reflect.ownKeys(e)}}class vT extends rw{constructor(e=!1){super(!0,e)}set(e,r){return!0}deleteProperty(e,r){return!0}}const _T=new nw,ET=new vT,ST=new nw(!0);const mp=t=>t,yu=t=>Reflect.getPrototypeOf(t);function Ma(t,e,r=!1,n=!1){t=t.__v_raw;const s=He(t),i=He(e);r||(Qn(e,i)&&Wt(s,"get",e),Wt(s,"get",i));const{has:o}=yu(s),a=n?mp:r?vp:Zo;if(o.call(s,e))return a(t.get(e));if(o.call(s,i))return a(t.get(i));t!==s&&t.get(e)}function Oa(t,e=!1){const r=this.__v_raw,n=He(r),s=He(t);return e||(Qn(t,s)&&Wt(n,"has",t),Wt(n,"has",s)),t===s?r.has(t):r.has(t)||r.has(s)}function Ra(t,e=!1){return t=t.__v_raw,!e&&Wt(He(t),"iterate",Bi),Reflect.get(t,"size",t)}function Jg(t,e=!1){!e&&!Fs(t)&&!qi(t)&&(t=He(t));const r=He(this);return yu(r).has.call(r,t)||(r.add(t),hn(r,"add",t,t)),this}function Zg(t,e,r=!1){!r&&!Fs(e)&&!qi(e)&&(e=He(e));const n=He(this),{has:s,get:i}=yu(n);let o=s.call(n,t);o||(t=He(t),o=s.call(n,t));const a=i.call(n,t);return n.set(t,e),o?Qn(e,a)&&hn(n,"set",t,e):hn(n,"add",t,e),this}function em(t){const e=He(this),{has:r,get:n}=yu(e);let s=r.call(e,t);s||(t=He(t),s=r.call(e,t)),n&&n.call(e,t);const i=e.delete(t);return s&&hn(e,"delete",t,void 0),i}function tm(){const t=He(this),e=t.size!==0,r=t.clear();return e&&hn(t,"clear",void 0,void 0),r}function Pa(t,e){return function(n,s){const i=this,o=i.__v_raw,a=He(o),l=e?mp:t?vp:Zo;return!t&&Wt(a,"iterate",Bi),o.forEach((u,c)=>n.call(s,l(u),l(c),i))}}function ka(t,e,r){return function(...n){const s=this.__v_raw,i=He(s),o=Rs(i),a=t==="entries"||t===Symbol.iterator&&o,l=t==="keys"&&o,u=s[t](...n),c=r?mp:e?vp:Zo;return!e&&Wt(i,"iterate",l?Ff:Bi),{next(){const{value:f,done:d}=u.next();return d?{value:f,done:d}:{value:a?[c(f[0]),c(f[1])]:c(f),done:d}},[Symbol.iterator](){return this}}}}function Ln(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function TT(){const t={get(i){return Ma(this,i)},get size(){return Ra(this)},has:Oa,add:Jg,set:Zg,delete:em,clear:tm,forEach:Pa(!1,!1)},e={get(i){return Ma(this,i,!1,!0)},get size(){return Ra(this)},has:Oa,add(i){return Jg.call(this,i,!0)},set(i,o){return Zg.call(this,i,o,!0)},delete:em,clear:tm,forEach:Pa(!1,!0)},r={get(i){return Ma(this,i,!0)},get size(){return Ra(this,!0)},has(i){return Oa.call(this,i,!0)},add:Ln("add"),set:Ln("set"),delete:Ln("delete"),clear:Ln("clear"),forEach:Pa(!0,!1)},n={get(i){return Ma(this,i,!0,!0)},get size(){return Ra(this,!0)},has(i){return Oa.call(this,i,!0)},add:Ln("add"),set:Ln("set"),delete:Ln("delete"),clear:Ln("clear"),forEach:Pa(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{t[i]=ka(i,!1,!1),r[i]=ka(i,!0,!1),e[i]=ka(i,!1,!0),n[i]=ka(i,!0,!0)}),[t,r,e,n]}const[xT,AT,CT,IT]=TT();function bp(t,e){const r=e?t?IT:CT:t?AT:xT;return(n,s,i)=>s==="__v_isReactive"?!t:s==="__v_isReadonly"?t:s==="__v_raw"?n:Reflect.get(Ue(r,s)&&s in n?r:n,s,i)}const MT={get:bp(!1,!1)},OT={get:bp(!1,!0)},RT={get:bp(!0,!1)};const iw=new WeakMap,sw=new WeakMap,ow=new WeakMap,PT=new WeakMap;function kT(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function LT(t){return t.__v_skip||!Object.isExtensible(t)?0:kT(rT(t))}function yp(t){return qi(t)?t:wp(t,!1,_T,MT,iw)}function NT(t){return wp(t,!1,ST,OT,sw)}function aw(t){return wp(t,!0,ET,RT,ow)}function wp(t,e,r,n,s){if(!Qe(t)||t.__v_raw&&!(e&&t.__v_isReactive))return t;const i=s.get(t);if(i)return i;const o=LT(t);if(o===0)return t;const a=new Proxy(t,o===2?n:r);return s.set(t,a),a}function Wo(t){return qi(t)?Wo(t.__v_raw):!!(t&&t.__v_isReactive)}function qi(t){return!!(t&&t.__v_isReadonly)}function Fs(t){return!!(t&&t.__v_isShallow)}function lw(t){return t?!!t.__v_raw:!1}function He(t){const e=t&&t.__v_raw;return e?He(e):t}function DT(t){return Object.isExtensible(t)&&Vy(t,"__v_skip",!0),t}const Zo=t=>Qe(t)?yp(t):t,vp=t=>Qe(t)?aw(t):t;class uw{constructor(e,r,n,s){this.getter=e,this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new hp(()=>e(this._value),()=>ol(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=n}get value(){const e=He(this);return(!e._cacheable||e.effect.dirty)&&Qn(e._value,e._value=e.effect.run())&&ol(e,4),cw(e),e.effect._dirtyLevel>=2&&ol(e,2),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function BT(t,e,r=!1){let n,s;const i=Be(t);return i?(n=t,s=lr):(n=t.get,s=t.set),new uw(n,s,i||!s,r)}function cw(t){var e;Kn&&Di&&(t=He(t),Jy(Di,(e=t.dep)!=null?e:t.dep=ew(()=>t.dep=void 0,t instanceof uw?t:void 0)))}function ol(t,e=4,r,n){t=He(t);const s=t.dep;s&&Zy(s,e)}function zt(t){return!!(t&&t.__v_isRef===!0)}function Dj(t){return $T(t,!1)}function $T(t,e){return zt(t)?t:new FT(t,e)}class FT{constructor(e,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?e:He(e),this._value=r?e:Zo(e)}get value(){return cw(this),this._value}set value(e){const r=this.__v_isShallow||Fs(e)||qi(e);e=r?e:He(e),Qn(e,this._rawValue)&&(this._rawValue,this._rawValue=e,this._value=r?e:Zo(e),ol(this,4))}}function UT(t){return zt(t)?t.value:t}const jT={get:(t,e,r)=>UT(Reflect.get(t,e,r)),set:(t,e,r,n)=>{const s=t[e];return zt(s)&&!zt(r)?(s.value=r,!0):Reflect.set(t,e,r,n)}};function fw(t){return Wo(t)?t:new Proxy(t,jT)}/**
+* @vue/runtime-core v3.4.38
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function Xn(t,e,r,n){try{return n?t(...n):t()}catch(s){wu(s,e,r)}}function Tr(t,e,r,n){if(Be(t)){const s=Xn(t,e,r,n);return s&&Wy(s)&&s.catch(i=>{wu(i,e,r)}),s}if(De(t)){const s=[];for(let i=0;i<t.length;i++)s.push(Tr(t[i],e,r,n));return s}}function wu(t,e,r,n=!0){const s=e?e.vnode:null;if(e){let i=e.parent;const o=e.proxy,a=`https://vuejs.org/error-reference/#runtime-${r}`;for(;i;){const u=i.ec;if(u){for(let c=0;c<u.length;c++)if(u[c](t,o,a)===!1)return}i=i.parent}const l=e.appContext.config.errorHandler;if(l){ri(),Xn(l,null,10,[t,o,a]),ni();return}}WT(t,r,s,n)}function WT(t,e,r,n=!0){console.error(t)}let ea=!1,Uf=!1;const It=[];let Dr=0;const Ps=[];let zn=null,xi=0;const dw=Promise.resolve();let _p=null;function hw(t){const e=_p||dw;return t?e.then(this?t.bind(this):t):e}function zT(t){let e=Dr+1,r=It.length;for(;e<r;){const n=e+r>>>1,s=It[n],i=ta(s);i<t||i===t&&s.pre?e=n+1:r=n}return e}function Ep(t){(!It.length||!It.includes(t,ea&&t.allowRecurse?Dr+1:Dr))&&(t.id==null?It.push(t):It.splice(zT(t.id),0,t),pw())}function pw(){!ea&&!Uf&&(Uf=!0,_p=dw.then(mw))}function HT(t){const e=It.indexOf(t);e>Dr&&It.splice(e,1)}function VT(t){De(t)?Ps.push(...t):(!zn||!zn.includes(t,t.allowRecurse?xi+1:xi))&&Ps.push(t),pw()}function rm(t,e,r=ea?Dr+1:0){for(;r<It.length;r++){const n=It[r];if(n&&n.pre){if(t&&n.id!==t.uid)continue;It.splice(r,1),r--,n()}}}function gw(t){if(Ps.length){const e=[...new Set(Ps)].sort((r,n)=>ta(r)-ta(n));if(Ps.length=0,zn){zn.push(...e);return}for(zn=e,xi=0;xi<zn.length;xi++){const r=zn[xi];r.active!==!1&&r()}zn=null,xi=0}}const ta=t=>t.id==null?1/0:t.id,qT=(t,e)=>{const r=ta(t)-ta(e);if(r===0){if(t.pre&&!e.pre)return-1;if(e.pre&&!t.pre)return 1}return r};function mw(t){Uf=!1,ea=!0,It.sort(qT);try{for(Dr=0;Dr<It.length;Dr++){const e=It[Dr];e&&e.active!==!1&&Xn(e,e.i,e.i?15:14)}}finally{Dr=0,It.length=0,gw(),ea=!1,_p=null,(It.length||Ps.length)&&mw()}}let yt=null,vu=null;function Bl(t){const e=yt;return yt=t,vu=t&&t.type.__scopeId||null,e}function Bj(t){vu=t}function $j(){vu=null}function YT(t,e=yt,r){if(!e||t._n)return t;const n=(...s)=>{n._d&&hm(-1);const i=Bl(e);let o;try{o=t(...s)}finally{Bl(i),n._d&&hm(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Fj(t,e){if(yt===null)return t;const r=xu(yt),n=t.dirs||(t.dirs=[]);for(let s=0;s<e.length;s++){let[i,o,a,l=rt]=e[s];i&&(Be(i)&&(i={mounted:i,updated:i}),i.deep&&qn(o),n.push({dir:i,instance:r,value:o,oldValue:void 0,arg:a,modifiers:l}))}return t}function fi(t,e,r,n){const s=t.dirs,i=e&&e.dirs;for(let o=0;o<s.length;o++){const a=s[o];i&&(a.oldValue=i[o].value);let l=a.dir[n];l&&(ri(),Tr(l,r,8,[t.el,a,t,e]),ni())}}function bw(t,e){t.shapeFlag&6&&t.component?bw(t.component.subTree,e):t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}/*! #__NO_SIDE_EFFECTS__ */function Uj(t,e){return Be(t)?Rt({name:t.name},e,{setup:t}):t}const zo=t=>!!t.type.__asyncLoader,yw=t=>t.type.__isKeepAlive;function GT(t,e){ww(t,"a",e)}function KT(t,e){ww(t,"da",e)}function ww(t,e,r=Mt){const n=t.__wdc||(t.__wdc=()=>{let s=r;for(;s;){if(s.isDeactivated)return;s=s.parent}return t()});if(_u(e,n,r),r){let s=r.parent;for(;s&&s.parent;)yw(s.parent.vnode)&&XT(n,e,r,s),s=s.parent}}function XT(t,e,r,n){const s=_u(e,t,n,!0);vw(()=>{lp(n[e],s)},r)}function _u(t,e,r=Mt,n=!1){if(r){const s=r[t]||(r[t]=[]),i=e.__weh||(e.__weh=(...o)=>{ri();const a=ha(r),l=Tr(e,r,t,o);return a(),ni(),l});return n?s.unshift(i):s.push(i),i}}const Cn=t=>(e,r=Mt)=>{(!Tu||t==="sp")&&_u(t,(...n)=>e(...n),r)},QT=Cn("bm"),JT=Cn("m"),ZT=Cn("bu"),ex=Cn("u"),tx=Cn("bum"),vw=Cn("um"),rx=Cn("sp"),nx=Cn("rtg"),ix=Cn("rtc");function sx(t,e=Mt){_u("ec",t,e)}const ox="components";function jj(t,e){return lx(ox,t,!0,e)||t}const ax=Symbol.for("v-ndc");function lx(t,e,r=!0,n=!1){const s=yt||Mt;if(s){const i=s.type;{const a=tA(i,!1);if(a&&(a===e||a===Ar(e)||a===bu(Ar(e))))return i}const o=nm(s[t]||i[t],e)||nm(s.appContext[t],e);return!o&&n?i:o}}function nm(t,e){return t&&(t[e]||t[Ar(e)]||t[bu(Ar(e))])}function Wj(t,e,r,n){let s;const i=r;if(De(t)||dt(t)){s=new Array(t.length);for(let o=0,a=t.length;o<a;o++)s[o]=e(t[o],o,void 0,i)}else if(typeof t=="number"){s=new Array(t);for(let o=0;o<t;o++)s[o]=e(o+1,o,void 0,i)}else if(Qe(t))if(t[Symbol.iterator])s=Array.from(t,(o,a)=>e(o,a,void 0,i));else{const o=Object.keys(t);s=new Array(o.length);for(let a=0,l=o.length;a<l;a++){const u=o[a];s[a]=e(t[u],u,a,i)}}else s=[];return s}function zj(t,e,r={},n,s){if(yt.isCE||yt.parent&&zo(yt.parent)&&yt.parent.isCE)return e!=="default"&&(r.name=e),xr("slot",r,n&&n());let i=t[e];i&&i._c&&(i._d=!1),Fw();const o=i&&_w(i(r)),a=jw(vr,{key:(r.key||o&&o.key||`_${e}`)+(!o&&n?"_fb":"")},o||(n?n():[]),o&&t._===1?64:-2);return!s&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),i&&i._c&&(i._d=!0),a}function _w(t){return t.some(e=>Ww(e)?!(e.type===Jn||e.type===vr&&!_w(e.children)):!0)?t:null}const jf=t=>t?Vw(t)?xu(t):jf(t.parent):null,Ho=Rt(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>jf(t.parent),$root:t=>jf(t.root),$emit:t=>t.emit,$options:t=>Sp(t),$forceUpdate:t=>t.f||(t.f=()=>{t.effect.dirty=!0,Ep(t.update)}),$nextTick:t=>t.n||(t.n=hw.bind(t.proxy)),$watch:t=>Lx.bind(t)}),bc=(t,e)=>t!==rt&&!t.__isScriptSetup&&Ue(t,e),ux={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:r,setupState:n,data:s,props:i,accessCache:o,type:a,appContext:l}=t;let u;if(e[0]!=="$"){const g=o[e];if(g!==void 0)switch(g){case 1:return n[e];case 2:return s[e];case 4:return r[e];case 3:return i[e]}else{if(bc(n,e))return o[e]=1,n[e];if(s!==rt&&Ue(s,e))return o[e]=2,s[e];if((u=t.propsOptions[0])&&Ue(u,e))return o[e]=3,i[e];if(r!==rt&&Ue(r,e))return o[e]=4,r[e];Wf&&(o[e]=0)}}const c=Ho[e];let f,d;if(c)return e==="$attrs"&&Wt(t.attrs,"get",""),c(t);if((f=a.__cssModules)&&(f=f[e]))return f;if(r!==rt&&Ue(r,e))return o[e]=4,r[e];if(d=l.config.globalProperties,Ue(d,e))return d[e]},set({_:t},e,r){const{data:n,setupState:s,ctx:i}=t;return bc(s,e)?(s[e]=r,!0):n!==rt&&Ue(n,e)?(n[e]=r,!0):Ue(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(i[e]=r,!0)},has({_:{data:t,setupState:e,accessCache:r,ctx:n,appContext:s,propsOptions:i}},o){let a;return!!r[o]||t!==rt&&Ue(t,o)||bc(e,o)||(a=i[0])&&Ue(a,o)||Ue(n,o)||Ue(Ho,o)||Ue(s.config.globalProperties,o)},defineProperty(t,e,r){return r.get!=null?t._.accessCache[e]=0:Ue(r,"value")&&this.set(t,e,r.value,null),Reflect.defineProperty(t,e,r)}};function im(t){return De(t)?t.reduce((e,r)=>(e[r]=null,e),{}):t}let Wf=!0;function cx(t){const e=Sp(t),r=t.proxy,n=t.ctx;Wf=!1,e.beforeCreate&&sm(e.beforeCreate,t,"bc");const{data:s,computed:i,methods:o,watch:a,provide:l,inject:u,created:c,beforeMount:f,mounted:d,beforeUpdate:g,updated:m,activated:y,deactivated:_,beforeDestroy:S,beforeUnmount:E,destroyed:v,unmounted:x,render:M,renderTracked:A,renderTriggered:L,errorCaptured:D,serverPrefetch:B,expose:q,inheritAttrs:Y,components:R,directives:I,filters:N}=e;if(u&&fx(u,n,null),o)for(const H in o){const $=o[H];Be($)&&(n[H]=$.bind(r))}if(s){const H=s.call(r,r);Qe(H)&&(t.data=yp(H))}if(Wf=!0,i)for(const H in i){const $=i[H],ne=Be($)?$.bind(r,r):Be($.get)?$.get.bind(r,r):lr,ue=!Be($)&&Be($.set)?$.set.bind(r):lr,re=nA({get:ne,set:ue});Object.defineProperty(n,H,{enumerable:!0,configurable:!0,get:()=>re.value,set:k=>re.value=k})}if(a)for(const H in a)Ew(a[H],n,r,H);if(l){const H=Be(l)?l.call(r):l;Reflect.ownKeys(H).forEach($=>{bx($,H[$])})}c&&sm(c,t,"c");function G(H,$){De($)?$.forEach(ne=>H(ne.bind(r))):$&&H($.bind(r))}if(G(QT,f),G(JT,d),G(ZT,g),G(ex,m),G(GT,y),G(KT,_),G(sx,D),G(ix,A),G(nx,L),G(tx,E),G(vw,x),G(rx,B),De(q))if(q.length){const H=t.exposed||(t.exposed={});q.forEach($=>{Object.defineProperty(H,$,{get:()=>r[$],set:ne=>r[$]=ne})})}else t.exposed||(t.exposed={});M&&t.render===lr&&(t.render=M),Y!=null&&(t.inheritAttrs=Y),R&&(t.components=R),I&&(t.directives=I)}function fx(t,e,r=lr){De(t)&&(t=zf(t));for(const n in t){const s=t[n];let i;Qe(s)?"default"in s?i=al(s.from||n,s.default,!0):i=al(s.from||n):i=al(s),zt(i)?Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):e[n]=i}}function sm(t,e,r){Tr(De(t)?t.map(n=>n.bind(e.proxy)):t.bind(e.proxy),e,r)}function Ew(t,e,r,n){const s=n.includes(".")?Bw(r,n):()=>r[n];if(dt(t)){const i=e[t];Be(i)&&wc(s,i)}else if(Be(t))wc(s,t.bind(r));else if(Qe(t))if(De(t))t.forEach(i=>Ew(i,e,r,n));else{const i=Be(t.handler)?t.handler.bind(r):e[t.handler];Be(i)&&wc(s,i,t)}}function Sp(t){const e=t.type,{mixins:r,extends:n}=e,{mixins:s,optionsCache:i,config:{optionMergeStrategies:o}}=t.appContext,a=i.get(e);let l;return a?l=a:!s.length&&!r&&!n?l=e:(l={},s.length&&s.forEach(u=>$l(l,u,o,!0)),$l(l,e,o)),Qe(e)&&i.set(e,l),l}function $l(t,e,r,n=!1){const{mixins:s,extends:i}=e;i&&$l(t,i,r,!0),s&&s.forEach(o=>$l(t,o,r,!0));for(const o in e)if(!(n&&o==="expose")){const a=dx[o]||r&&r[o];t[o]=a?a(t[o],e[o]):e[o]}return t}const dx={data:om,props:am,emits:am,methods:Ro,computed:Ro,beforeCreate:kt,created:kt,beforeMount:kt,mounted:kt,beforeUpdate:kt,updated:kt,beforeDestroy:kt,beforeUnmount:kt,destroyed:kt,unmounted:kt,activated:kt,deactivated:kt,errorCaptured:kt,serverPrefetch:kt,components:Ro,directives:Ro,watch:px,provide:om,inject:hx};function om(t,e){return e?t?function(){return Rt(Be(t)?t.call(this,this):t,Be(e)?e.call(this,this):e)}:e:t}function hx(t,e){return Ro(zf(t),zf(e))}function zf(t){if(De(t)){const e={};for(let r=0;r<t.length;r++)e[t[r]]=t[r];return e}return t}function kt(t,e){return t?[...new Set([].concat(t,e))]:e}function Ro(t,e){return t?Rt(Object.create(null),t,e):e}function am(t,e){return t?De(t)&&De(e)?[...new Set([...t,...e])]:Rt(Object.create(null),im(t),im(e??{})):e}function px(t,e){if(!t)return e;if(!e)return t;const r=Rt(Object.create(null),t);for(const n in e)r[n]=kt(t[n],e[n]);return r}function Sw(){return{app:null,config:{isNativeTag:eT,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let gx=0;function mx(t,e){return function(n,s=null){Be(n)||(n=Rt({},n)),s!=null&&!Qe(s)&&(s=null);const i=Sw(),o=new WeakSet;let a=!1;const l=i.app={_uid:gx++,_component:n,_props:s,_container:null,_context:i,_instance:null,version:iA,get config(){return i.config},set config(u){},use(u,...c){return o.has(u)||(u&&Be(u.install)?(o.add(u),u.install(l,...c)):Be(u)&&(o.add(u),u(l,...c))),l},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),l},component(u,c){return c?(i.components[u]=c,l):i.components[u]},directive(u,c){return c?(i.directives[u]=c,l):i.directives[u]},mount(u,c,f){if(!a){const d=xr(n,s);return d.appContext=i,f===!0?f="svg":f===!1&&(f=void 0),c&&e?e(d,u):t(d,u,f),a=!0,l._container=u,u.__vue_app__=l,xu(d.component)}},unmount(){a&&(t(null,l._container),delete l._container.__vue_app__)},provide(u,c){return i.provides[u]=c,l},runWithContext(u){const c=ks;ks=l;try{return u()}finally{ks=c}}};return l}}let ks=null;function bx(t,e){if(Mt){let r=Mt.provides;const n=Mt.parent&&Mt.parent.provides;n===r&&(r=Mt.provides=Object.create(n)),r[t]=e}}function al(t,e,r=!1){const n=Mt||yt;if(n||ks){const s=ks?ks._context.provides:n?n.parent==null?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(s&&t in s)return s[t];if(arguments.length>1)return r&&Be(e)?e.call(n&&n.proxy):e}}const Tw={},xw=()=>Object.create(Tw),Aw=t=>Object.getPrototypeOf(t)===Tw;function yx(t,e,r,n=!1){const s={},i=xw();t.propsDefaults=Object.create(null),Cw(t,e,s,i);for(const o in t.propsOptions[0])o in s||(s[o]=void 0);r?t.props=n?s:NT(s):t.type.props?t.props=s:t.props=i,t.attrs=i}function vx(t,e,r,n){const{props:s,attrs:i,vnode:{patchFlag:o}}=t,a=He(s),[l]=t.propsOptions;let u=!1;if((n||o>0)&&!(o&16)){if(o&8){const c=t.vnode.dynamicProps;for(let f=0;f<c.length;f++){let d=c[f];if(Eu(t.emitsOptions,d))continue;const g=e[d];if(l)if(Ue(i,d))g!==i[d]&&(i[d]=g,u=!0);else{const m=Ar(d);s[m]=Hf(l,a,m,g,t,!1)}else g!==i[d]&&(i[d]=g,u=!0)}}}else{Cw(t,e,s,i)&&(u=!0);let c;for(const f in a)(!e||!Ue(e,f)&&((c=Zi(f))===f||!Ue(e,c)))&&(l?r&&(r[f]!==void 0||r[c]!==void 0)&&(s[f]=Hf(l,a,f,void 0,t,!0)):delete s[f]);if(i!==a)for(const f in i)(!e||!Ue(e,f))&&(delete i[f],u=!0)}u&&hn(t.attrs,"set","")}function Cw(t,e,r,n){const[s,i]=t.propsOptions;let o=!1,a;if(e)for(let l in e){if(jo(l))continue;const u=e[l];let c;s&&Ue(s,c=Ar(l))?!i||!i.includes(c)?r[c]=u:(a||(a={}))[c]=u:Eu(t.emitsOptions,l)||(!(l in n)||u!==n[l])&&(n[l]=u,o=!0)}if(i){const l=He(r),u=a||rt;for(let c=0;c<i.length;c++){const f=i[c];r[f]=Hf(s,l,f,u[f],t,!Ue(u,f))}}return o}function Hf(t,e,r,n,s,i){const o=t[r];if(o!=null){const a=Ue(o,"default");if(a&&n===void 0){const l=o.default;if(o.type!==Function&&!o.skipFactory&&Be(l)){const{propsDefaults:u}=s;if(r in u)n=u[r];else{const c=ha(s);n=u[r]=l.call(null,e),c()}}else n=l}o[0]&&(i&&!a?n=!1:o[1]&&(n===""||n===Zi(r))&&(n=!0))}return n}const _x=new WeakMap;function Iw(t,e,r=!1){const n=r?_x:e.propsCache,s=n.get(t);if(s)return s;const i=t.props,o={},a=[];let l=!1;if(!Be(t)){const c=f=>{l=!0;const[d,g]=Iw(f,e,!0);Rt(o,d),g&&a.push(...g)};!r&&e.mixins.length&&e.mixins.forEach(c),t.extends&&c(t.extends),t.mixins&&t.mixins.forEach(c)}if(!i&&!l)return Qe(t)&&n.set(t,Os),Os;if(De(i))for(let c=0;c<i.length;c++){const f=Ar(i[c]);lm(f)&&(o[f]=rt)}else if(i)for(const c in i){const f=Ar(c);if(lm(f)){const d=i[c],g=o[f]=De(d)||Be(d)?{type:d}:Rt({},d),m=g.type;let y=!1,_=!0;if(De(m))for(let S=0;S<m.length;++S){const E=m[S],v=Be(E)&&E.name;if(v==="Boolean"){y=!0;break}else v==="String"&&(_=!1)}else y=Be(m)&&m.name==="Boolean";g[0]=y,g[1]=_,(y||Ue(g,"default"))&&a.push(f)}}const u=[o,a];return Qe(t)&&n.set(t,u),u}function lm(t){return t[0]!=="$"&&!jo(t)}const Mw=t=>t[0]==="_"||t==="$stable",Tp=t=>De(t)?t.map(Nr):[Nr(t)],Ex=(t,e,r)=>{if(e._n)return e;const n=YT((...s)=>Tp(e(...s)),r);return n._c=!1,n},Ow=(t,e,r)=>{const n=t._ctx;for(const s in t){if(Mw(s))continue;const i=t[s];if(Be(i))e[s]=Ex(s,i,n);else if(i!=null){const o=Tp(i);e[s]=()=>o}}},Rw=(t,e)=>{const r=Tp(e);t.slots.default=()=>r},Pw=(t,e,r)=>{for(const n in e)(r||n!=="_")&&(t[n]=e[n])},Sx=(t,e,r)=>{const n=t.slots=xw();if(t.vnode.shapeFlag&32){const s=e._;s?(Pw(n,e,r),r&&Vy(n,"_",s,!0)):Ow(e,n)}else e&&Rw(t,e)},Tx=(t,e,r)=>{const{vnode:n,slots:s}=t;let i=!0,o=rt;if(n.shapeFlag&32){const a=e._;a?r&&a===1?i=!1:Pw(s,e,r):(i=!e.$stable,Ow(e,s)),o=e}else e&&(Rw(t,e),o={default:1});if(i)for(const a in s)!Mw(a)&&o[a]==null&&delete s[a]};function Vf(t,e,r,n,s=!1){if(De(t)){t.forEach((d,g)=>Vf(d,e&&(De(e)?e[g]:e),r,n,s));return}if(zo(n)&&!s)return;const i=n.shapeFlag&4?xu(n.component):n.el,o=s?null:i,{i:a,r:l}=t,u=e&&e.r,c=a.refs===rt?a.refs={}:a.refs,f=a.setupState;if(u!=null&&u!==l&&(dt(u)?(c[u]=null,Ue(f,u)&&(f[u]=null)):zt(u)&&(u.value=null)),Be(l))Xn(l,a,12,[o,c]);else{const d=dt(l),g=zt(l);if(d||g){const m=()=>{if(t.f){const y=d?Ue(f,l)?f[l]:c[l]:l.value;s?De(y)&&lp(y,i):De(y)?y.includes(i)||y.push(i):d?(c[l]=[i],Ue(f,l)&&(f[l]=c[l])):(l.value=[i],t.k&&(c[t.k]=l.value))}else d?(c[l]=o,Ue(f,l)&&(f[l]=o)):g&&(l.value=o,t.k&&(c[t.k]=o))};o?(m.id=-1,Ft(m,r)):m()}}}const kw=Symbol("_vte"),xx=t=>t.__isTeleport,Vo=t=>t&&(t.disabled||t.disabled===""),um=t=>typeof SVGElement<"u"&&t instanceof SVGElement,cm=t=>typeof MathMLElement=="function"&&t instanceof MathMLElement,qf=(t,e)=>{const r=t&&t.to;return dt(r)?e?e(r):null:r},Ax={name:"Teleport",__isTeleport:!0,process(t,e,r,n,s,i,o,a,l,u){const{mc:c,pc:f,pbc:d,o:{insert:g,querySelector:m,createText:y,createComment:_}}=u,S=Vo(e.props);let{shapeFlag:E,children:v,dynamicChildren:x}=e;if(t==null){const M=e.el=y(""),A=e.anchor=y("");g(M,r,n),g(A,r,n);const L=e.target=qf(e.props,m),D=Nw(L,e,y,g);L&&(o==="svg"||um(L)?o="svg":(o==="mathml"||cm(L))&&(o="mathml"));const B=(q,Y)=>{E&16&&c(v,q,Y,s,i,o,a,l)};S?B(r,A):L&&B(L,D)}else{e.el=t.el,e.targetStart=t.targetStart;const M=e.anchor=t.anchor,A=e.target=t.target,L=e.targetAnchor=t.targetAnchor,D=Vo(t.props),B=D?r:A,q=D?M:L;if(o==="svg"||um(A)?o="svg":(o==="mathml"||cm(A))&&(o="mathml"),x?(d(t.dynamicChildren,x,B,s,i,o,a),xp(t,e,!0)):l||f(t,e,B,q,s,i,o,a,!1),S)D?e.props&&t.props&&e.props.to!==t.props.to&&(e.props.to=t.props.to):La(e,r,M,u,1);else if((e.props&&e.props.to)!==(t.props&&t.props.to)){const Y=e.target=qf(e.props,m);Y&&La(e,Y,null,u,0)}else D&&La(e,A,L,u,1)}Lw(e)},remove(t,e,r,{um:n,o:{remove:s}},i){const{shapeFlag:o,children:a,anchor:l,targetStart:u,targetAnchor:c,target:f,props:d}=t;if(f&&(s(u),s(c)),i&&s(l),o&16){const g=i||!Vo(d);for(let m=0;m<a.length;m++){const y=a[m];n(y,e,r,g,!!y.dynamicChildren)}}},move:La,hydrate:Cx};function La(t,e,r,{o:{insert:n},m:s},i=2){i===0&&n(t.targetAnchor,e,r);const{el:o,anchor:a,shapeFlag:l,children:u,props:c}=t,f=i===2;if(f&&n(o,e,r),(!f||Vo(c))&&l&16)for(let d=0;d<u.length;d++)s(u[d],e,r,2);f&&n(a,e,r)}function Cx(t,e,r,n,s,i,{o:{nextSibling:o,parentNode:a,querySelector:l,insert:u,createText:c}},f){const d=e.target=qf(e.props,l);if(d){const g=d._lpa||d.firstChild;if(e.shapeFlag&16)if(Vo(e.props))e.anchor=f(o(t),e,a(t),r,n,s,i),e.targetStart=g,e.targetAnchor=g&&o(g);else{e.anchor=o(t);let m=g;for(;m;){if(m&&m.nodeType===8){if(m.data==="teleport start anchor")e.targetStart=m;else if(m.data==="teleport anchor"){e.targetAnchor=m,d._lpa=e.targetAnchor&&o(e.targetAnchor);break}}m=o(m)}e.targetAnchor||Nw(d,e,c,u),f(g&&o(g),e,d,r,n,s,i)}Lw(e)}return e.anchor&&o(e.anchor)}const Hj=Ax;function Lw(t){const e=t.ctx;if(e&&e.ut){let r=t.children[0].el;for(;r&&r!==t.targetAnchor;)r.nodeType===1&&r.setAttribute("data-v-owner",e.uid),r=r.nextSibling;e.ut()}}function Nw(t,e,r,n){const s=e.targetStart=r(""),i=e.targetAnchor=r("");return s[kw]=i,t&&(n(s,t),n(i,t)),i}const Ft=Wx;function Ix(t){return Mx(t)}function Mx(t,e){const r=qy();r.__VUE__=!0;const{insert:n,remove:s,patchProp:i,createElement:o,createText:a,createComment:l,setText:u,setElementText:c,parentNode:f,nextSibling:d,setScopeId:g=lr,insertStaticContent:m}=t,y=(C,P,O,j=null,z=null,oe=null,fe=void 0,V=null,te=!!P.dynamicChildren)=>{if(C===P)return;C&&!bo(C,P)&&(j=X(C),k(C,z,oe,!0),C=null),P.patchFlag===-2&&(te=!1,P.dynamicChildren=null);const{type:F,ref:J,shapeFlag:se}=P;switch(F){case Su:_(C,P,O,j);break;case Jn:S(C,P,O,j);break;case ll:C==null&&E(P,O,j,fe);break;case vr:R(C,P,O,j,z,oe,fe,V,te);break;default:se&1?M(C,P,O,j,z,oe,fe,V,te):se&6?I(C,P,O,j,z,oe,fe,V,te):(se&64||se&128)&&F.process(C,P,O,j,z,oe,fe,V,te,be)}J!=null&&z&&Vf(J,C&&C.ref,oe,P||C,!P)},_=(C,P,O,j)=>{if(C==null)n(P.el=a(P.children),O,j);else{const z=P.el=C.el;P.children!==C.children&&u(z,P.children)}},S=(C,P,O,j)=>{C==null?n(P.el=l(P.children||""),O,j):P.el=C.el},E=(C,P,O,j)=>{[C.el,C.anchor]=m(C.children,P,O,j,C.el,C.anchor)},v=({el:C,anchor:P},O,j)=>{let z;for(;C&&C!==P;)z=d(C),n(C,O,j),C=z;n(P,O,j)},x=({el:C,anchor:P})=>{let O;for(;C&&C!==P;)O=d(C),s(C),C=O;s(P)},M=(C,P,O,j,z,oe,fe,V,te)=>{P.type==="svg"?fe="svg":P.type==="math"&&(fe="mathml"),C==null?A(P,O,j,z,oe,fe,V,te):B(C,P,z,oe,fe,V,te)},A=(C,P,O,j,z,oe,fe,V)=>{let te,F;const{props:J,shapeFlag:se,transition:pe,dirs:w}=C;if(te=C.el=o(C.type,oe,J&&J.is,J),se&8?c(te,C.children):se&16&&D(C.children,te,null,j,z,yc(C,oe),fe,V),w&&fi(C,null,j,"created"),L(te,C,C.scopeId,fe,j),J){for(const h in J)h!=="value"&&!jo(h)&&i(te,h,null,J[h],oe,j);"value"in J&&i(te,"value",null,J.value,oe),(F=J.onVnodeBeforeMount)&&Mr(F,j,C)}w&&fi(C,null,j,"beforeMount");const p=Ox(z,pe);p&&pe.beforeEnter(te),n(te,P,O),((F=J&&J.onVnodeMounted)||p||w)&&Ft(()=>{F&&Mr(F,j,C),p&&pe.enter(te),w&&fi(C,null,j,"mounted")},z)},L=(C,P,O,j,z)=>{if(O&&g(C,O),j)for(let oe=0;oe<j.length;oe++)g(C,j[oe]);if(z){let oe=z.subTree;if(P===oe){const fe=z.vnode;L(C,fe,fe.scopeId,fe.slotScopeIds,z.parent)}}},D=(C,P,O,j,z,oe,fe,V,te=0)=>{for(let F=te;F<C.length;F++){const J=C[F]=V?Hn(C[F]):Nr(C[F]);y(null,J,P,O,j,z,oe,fe,V)}},B=(C,P,O,j,z,oe,fe)=>{const V=P.el=C.el;let{patchFlag:te,dynamicChildren:F,dirs:J}=P;te|=C.patchFlag&16;const se=C.props||rt,pe=P.props||rt;let w;if(O&&di(O,!1),(w=pe.onVnodeBeforeUpdate)&&Mr(w,O,P,C),J&&fi(P,C,O,"beforeUpdate"),O&&di(O,!0),(se.innerHTML&&pe.innerHTML==null||se.textContent&&pe.textContent==null)&&c(V,""),F?q(C.dynamicChildren,F,V,O,j,yc(P,z),oe):fe||$(C,P,V,null,O,j,yc(P,z),oe,!1),te>0){if(te&16)Y(V,se,pe,O,z);else if(te&2&&se.class!==pe.class&&i(V,"class",null,pe.class,z),te&4&&i(V,"style",se.style,pe.style,z),te&8){const p=P.dynamicProps;for(let h=0;h<p.length;h++){const b=p[h],T=se[b],U=pe[b];(U!==T||b==="value")&&i(V,b,T,U,z,O)}}te&1&&C.children!==P.children&&c(V,P.children)}else!fe&&F==null&&Y(V,se,pe,O,z);((w=pe.onVnodeUpdated)||J)&&Ft(()=>{w&&Mr(w,O,P,C),J&&fi(P,C,O,"updated")},j)},q=(C,P,O,j,z,oe,fe)=>{for(let V=0;V<P.length;V++){const te=C[V],F=P[V],J=te.el&&(te.type===vr||!bo(te,F)||te.shapeFlag&70)?f(te.el):O;y(te,F,J,null,j,z,oe,fe,!0)}},Y=(C,P,O,j,z)=>{if(P!==O){if(P!==rt)for(const oe in P)!jo(oe)&&!(oe in O)&&i(C,oe,P[oe],null,z,j);for(const oe in O){if(jo(oe))continue;const fe=O[oe],V=P[oe];fe!==V&&oe!=="value"&&i(C,oe,V,fe,z,j)}"value"in O&&i(C,"value",P.value,O.value,z)}},R=(C,P,O,j,z,oe,fe,V,te)=>{const F=P.el=C?C.el:a(""),J=P.anchor=C?C.anchor:a("");let{patchFlag:se,dynamicChildren:pe,slotScopeIds:w}=P;w&&(V=V?V.concat(w):w),C==null?(n(F,O,j),n(J,O,j),D(P.children||[],O,J,z,oe,fe,V,te)):se>0&&se&64&&pe&&C.dynamicChildren?(q(C.dynamicChildren,pe,O,z,oe,fe,V),(P.key!=null||z&&P===z.subTree)&&xp(C,P,!0)):$(C,P,O,J,z,oe,fe,V,te)},I=(C,P,O,j,z,oe,fe,V,te)=>{P.slotScopeIds=V,C==null?P.shapeFlag&512?z.ctx.activate(P,O,j,fe,te):N(P,O,j,z,oe,fe,te):W(C,P,te)},N=(C,P,O,j,z,oe,fe)=>{const V=C.component=Xx(C,j,z);if(yw(C)&&(V.ctx.renderer=be),Qx(V,!1,fe),V.asyncDep){if(z&&z.registerDep(V,G,fe),!C.el){const te=V.subTree=xr(Jn);S(null,te,P,O)}}else G(V,C,P,O,z,oe,fe)},W=(C,P,O)=>{const j=P.component=C.component;if(Fx(C,P,O))if(j.asyncDep&&!j.asyncResolved){H(j,P,O);return}else j.next=P,HT(j.update),j.effect.dirty=!0,j.update();else P.el=C.el,j.vnode=P},G=(C,P,O,j,z,oe,fe)=>{const V=()=>{if(C.isMounted){let{next:J,bu:se,u:pe,parent:w,vnode:p}=C;{const ee=Dw(C);if(ee){J&&(J.el=p.el,H(C,J,fe)),ee.asyncDep.then(()=>{C.isUnmounted||V()});return}}let h=J,b;di(C,!1),J?(J.el=p.el,H(C,J,fe)):J=p,se&&sl(se),(b=J.props&&J.props.onVnodeBeforeUpdate)&&Mr(b,w,J,p),di(C,!0);const T=vc(C),U=C.subTree;C.subTree=T,y(U,T,f(U.el),X(U),C,z,oe),J.el=T.el,h===null&&Ux(C,T.el),pe&&Ft(pe,z),(b=J.props&&J.props.onVnodeUpdated)&&Ft(()=>Mr(b,w,J,p),z)}else{let J;const{el:se,props:pe}=P,{bm:w,m:p,parent:h}=C,b=zo(P);if(di(C,!1),w&&sl(w),!b&&(J=pe&&pe.onVnodeBeforeMount)&&Mr(J,h,P),di(C,!0),se&&ce){const T=()=>{C.subTree=vc(C),ce(se,C.subTree,C,z,null)};b?P.type.__asyncLoader().then(()=>!C.isUnmounted&&T()):T()}else{const T=C.subTree=vc(C);y(null,T,O,j,C,z,oe),P.el=T.el}if(p&&Ft(p,z),!b&&(J=pe&&pe.onVnodeMounted)){const T=P;Ft(()=>Mr(J,h,T),z)}(P.shapeFlag&256||h&&zo(h.vnode)&&h.vnode.shapeFlag&256)&&C.a&&Ft(C.a,z),C.isMounted=!0,P=O=j=null}},te=C.effect=new hp(V,lr,()=>Ep(F),C.scope),F=C.update=()=>{te.dirty&&te.run()};F.i=C,F.id=C.uid,di(C,!0),F()},H=(C,P,O)=>{P.component=C;const j=C.vnode.props;C.vnode=P,C.next=null,vx(C,P.props,j,O),Tx(C,P.children,O),ri(),rm(C),ni()},$=(C,P,O,j,z,oe,fe,V,te=!1)=>{const F=C&&C.children,J=C?C.shapeFlag:0,se=P.children,{patchFlag:pe,shapeFlag:w}=P;if(pe>0){if(pe&128){ue(F,se,O,j,z,oe,fe,V,te);return}else if(pe&256){ne(F,se,O,j,z,oe,fe,V,te);return}}w&8?(J&16&&me(F,z,oe),se!==F&&c(O,se)):J&16?w&16?ue(F,se,O,j,z,oe,fe,V,te):me(F,z,oe,!0):(J&8&&c(O,""),w&16&&D(se,O,j,z,oe,fe,V,te))},ne=(C,P,O,j,z,oe,fe,V,te)=>{C=C||Os,P=P||Os;const F=C.length,J=P.length,se=Math.min(F,J);let pe;for(pe=0;pe<se;pe++){const w=P[pe]=te?Hn(P[pe]):Nr(P[pe]);y(C[pe],w,O,null,z,oe,fe,V,te)}F>J?me(C,z,oe,!0,!1,se):D(P,O,j,z,oe,fe,V,te,se)},ue=(C,P,O,j,z,oe,fe,V,te)=>{let F=0;const J=P.length;let se=C.length-1,pe=J-1;for(;F<=se&&F<=pe;){const w=C[F],p=P[F]=te?Hn(P[F]):Nr(P[F]);if(bo(w,p))y(w,p,O,null,z,oe,fe,V,te);else break;F++}for(;F<=se&&F<=pe;){const w=C[se],p=P[pe]=te?Hn(P[pe]):Nr(P[pe]);if(bo(w,p))y(w,p,O,null,z,oe,fe,V,te);else break;se--,pe--}if(F>se){if(F<=pe){const w=pe+1,p=w<J?P[w].el:j;for(;F<=pe;)y(null,P[F]=te?Hn(P[F]):Nr(P[F]),O,p,z,oe,fe,V,te),F++}}else if(F>pe)for(;F<=se;)k(C[F],z,oe,!0),F++;else{const w=F,p=F,h=new Map;for(F=p;F<=pe;F++){const xe=P[F]=te?Hn(P[F]):Nr(P[F]);xe.key!=null&&h.set(xe.key,F)}let b,T=0;const U=pe-p+1;let ee=!1,ye=0;const Ae=new Array(U);for(F=0;F<U;F++)Ae[F]=0;for(F=w;F<=se;F++){const xe=C[F];if(T>=U){k(xe,z,oe,!0);continue}let Oe;if(xe.key!=null)Oe=h.get(xe.key);else for(b=p;b<=pe;b++)if(Ae[b-p]===0&&bo(xe,P[b])){Oe=b;break}Oe===void 0?k(xe,z,oe,!0):(Ae[Oe-p]=F+1,Oe>=ye?ye=Oe:ee=!0,y(xe,P[Oe],O,null,z,oe,fe,V,te),T++)}const Re=ee?Rx(Ae):Os;for(b=Re.length-1,F=U-1;F>=0;F--){const xe=p+F,Oe=P[xe],Me=xe+1<J?P[xe+1].el:j;Ae[F]===0?y(null,Oe,O,Me,z,oe,fe,V,te):ee&&(b<0||F!==Re[b]?re(Oe,O,Me,2):b--)}}},re=(C,P,O,j,z=null)=>{const{el:oe,type:fe,transition:V,children:te,shapeFlag:F}=C;if(F&6){re(C.component.subTree,P,O,j);return}if(F&128){C.suspense.move(P,O,j);return}if(F&64){fe.move(C,P,O,be);return}if(fe===vr){n(oe,P,O);for(let se=0;se<te.length;se++)re(te[se],P,O,j);n(C.anchor,P,O);return}if(fe===ll){v(C,P,O);return}if(j!==2&&F&1&&V)if(j===0)V.beforeEnter(oe),n(oe,P,O),Ft(()=>V.enter(oe),z);else{const{leave:se,delayLeave:pe,afterLeave:w}=V,p=()=>n(oe,P,O),h=()=>{se(oe,()=>{p(),w&&w()})};pe?pe(oe,p,h):h()}else n(oe,P,O)},k=(C,P,O,j=!1,z=!1)=>{const{type:oe,props:fe,ref:V,children:te,dynamicChildren:F,shapeFlag:J,patchFlag:se,dirs:pe,cacheIndex:w}=C;if(se===-2&&(z=!1),V!=null&&Vf(V,null,O,C,!0),w!=null&&(P.renderCache[w]=void 0),J&256){P.ctx.deactivate(C);return}const p=J&1&&pe,h=!zo(C);let b;if(h&&(b=fe&&fe.onVnodeBeforeUnmount)&&Mr(b,P,C),J&6)ge(C.component,O,j);else{if(J&128){C.suspense.unmount(O,j);return}p&&fi(C,null,P,"beforeUnmount"),J&64?C.type.remove(C,P,O,be,j):F&&!F.hasOnce&&(oe!==vr||se>0&&se&64)?me(F,P,O,!1,!0):(oe===vr&&se&384||!z&&J&16)&&me(te,P,O),j&&Q(C)}(h&&(b=fe&&fe.onVnodeUnmounted)||p)&&Ft(()=>{b&&Mr(b,P,C),p&&fi(C,null,P,"unmounted")},O)},Q=C=>{const{type:P,el:O,anchor:j,transition:z}=C;if(P===vr){de(O,j);return}if(P===ll){x(C);return}const oe=()=>{s(O),z&&!z.persisted&&z.afterLeave&&z.afterLeave()};if(C.shapeFlag&1&&z&&!z.persisted){const{leave:fe,delayLeave:V}=z,te=()=>fe(O,oe);V?V(C.el,oe,te):te()}else oe()},de=(C,P)=>{let O;for(;C!==P;)O=d(C),s(C),C=O;s(P)},ge=(C,P,O)=>{const{bum:j,scope:z,update:oe,subTree:fe,um:V,m:te,a:F}=C;fm(te),fm(F),j&&sl(j),z.stop(),oe&&(oe.active=!1,k(fe,C,P,O)),V&&Ft(V,P),Ft(()=>{C.isUnmounted=!0},P),P&&P.pendingBranch&&!P.isUnmounted&&C.asyncDep&&!C.asyncResolved&&C.suspenseId===P.pendingId&&(P.deps--,P.deps===0&&P.resolve())},me=(C,P,O,j=!1,z=!1,oe=0)=>{for(let fe=oe;fe<C.length;fe++)k(C[fe],P,O,j,z)},X=C=>{if(C.shapeFlag&6)return X(C.component.subTree);if(C.shapeFlag&128)return C.suspense.next();const P=d(C.anchor||C.el),O=P&&P[kw];return O?d(O):P};let K=!1;const ie=(C,P,O)=>{C==null?P._vnode&&k(P._vnode,null,null,!0):y(P._vnode||null,C,P,null,null,null,O),P._vnode=C,K||(K=!0,rm(),gw(),K=!1)},be={p:y,um:k,m:re,r:Q,mt:N,mc:D,pc:$,pbc:q,n:X,o:t};let he,ce;return{render:ie,hydrate:he,createApp:mx(ie,he)}}function yc({type:t,props:e},r){return r==="svg"&&t==="foreignObject"||r==="mathml"&&t==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:r}function di({effect:t,update:e},r){t.allowRecurse=e.allowRecurse=r}function Ox(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function xp(t,e,r=!1){const n=t.children,s=e.children;if(De(n)&&De(s))for(let i=0;i<n.length;i++){const o=n[i];let a=s[i];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=s[i]=Hn(s[i]),a.el=o.el),!r&&a.patchFlag!==-2&&xp(o,a)),a.type===Su&&(a.el=o.el)}}function Rx(t){const e=t.slice(),r=[0];let n,s,i,o,a;const l=t.length;for(n=0;n<l;n++){const u=t[n];if(u!==0){if(s=r[r.length-1],t[s]<u){e[n]=s,r.push(n);continue}for(i=0,o=r.length-1;i<o;)a=i+o>>1,t[r[a]]<u?i=a+1:o=a;u<t[r[i]]&&(i>0&&(e[n]=r[i-1]),r[i]=n)}}for(i=r.length,o=r[i-1];i-- >0;)r[i]=o,o=e[o];return r}function Dw(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Dw(e)}function fm(t){if(t)for(let e=0;e<t.length;e++)t[e].active=!1}const Px=Symbol.for("v-scx"),kx=()=>al(Px);function Vj(t,e){return Ap(t,null,e)}const Na={};function wc(t,e,r){return Ap(t,e,r)}function Ap(t,e,{immediate:r,deep:n,flush:s,once:i,onTrack:o,onTrigger:a}=rt){if(e&&i){const A=e;e=(...L)=>{A(...L),M()}}const l=Mt,u=A=>n===!0?A:qn(A,n===!1?1:void 0);let c,f=!1,d=!1;if(zt(t)?(c=()=>t.value,f=Fs(t)):Wo(t)?(c=()=>u(t),f=!0):De(t)?(d=!0,f=t.some(A=>Wo(A)||Fs(A)),c=()=>t.map(A=>{if(zt(A))return A.value;if(Wo(A))return u(A);if(Be(A))return Xn(A,l,2)})):Be(t)?e?c=()=>Xn(t,l,2):c=()=>(g&&g(),Tr(t,l,3,[m])):c=lr,e&&n){const A=c;c=()=>qn(A())}let g,m=A=>{g=v.onStop=()=>{Xn(A,l,4),g=v.onStop=void 0}},y;if(Tu)if(m=lr,e?r&&Tr(e,l,3,[c(),d?[]:void 0,m]):c(),s==="sync"){const A=kx();y=A.__watcherHandles||(A.__watcherHandles=[])}else return lr;let _=d?new Array(t.length).fill(Na):Na;const S=()=>{if(!(!v.active||!v.dirty))if(e){const A=v.run();(n||f||(d?A.some((L,D)=>Qn(L,_[D])):Qn(A,_)))&&(g&&g(),Tr(e,l,3,[A,_===Na?void 0:d&&_[0]===Na?[]:_,m]),_=A)}else v.run()};S.allowRecurse=!!e;let E;s==="sync"?E=S:s==="post"?E=()=>Ft(S,l&&l.suspense):(S.pre=!0,l&&(S.id=l.uid),E=()=>Ep(S));const v=new hp(c,lr,E),x=gT(),M=()=>{v.stop(),x&&lp(x.effects,v)};return e?r?S():_=v.run():s==="post"?Ft(v.run.bind(v),l&&l.suspense):v.run(),y&&y.push(M),M}function Lx(t,e,r){const n=this.proxy,s=dt(t)?t.includes(".")?Bw(n,t):()=>n[t]:t.bind(n,n);let i;Be(e)?i=e:(i=e.handler,r=e);const o=ha(this),a=Ap(s,i.bind(n),r);return o(),a}function Bw(t,e){const r=e.split(".");return()=>{let n=t;for(let s=0;s<r.length&&n;s++)n=n[r[s]];return n}}function qn(t,e=1/0,r){if(e<=0||!Qe(t)||t.__v_skip||(r=r||new Set,r.has(t)))return t;if(r.add(t),e--,zt(t))qn(t.value,e,r);else if(De(t))for(let n=0;n<t.length;n++)qn(t[n],e,r);else if(no(t)||Rs(t))t.forEach(n=>{qn(n,e,r)});else if(Hy(t)){for(const n in t)qn(t[n],e,r);for(const n of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,n)&&qn(t[n],e,r)}return t}const Nx=(t,e)=>e==="modelValue"||e==="model-value"?t.modelModifiers:t[`${e}Modifiers`]||t[`${Ar(e)}Modifiers`]||t[`${Zi(e)}Modifiers`];function Dx(t,e,...r){if(t.isUnmounted)return;const n=t.vnode.props||rt;let s=r;const i=e.startsWith("update:"),o=i&&Nx(n,e.slice(7));o&&(o.trim&&(s=r.map(c=>dt(c)?c.trim():c)),o.number&&(s=r.map(Dl)));let a,l=n[a=gc(e)]||n[a=gc(Ar(e))];!l&&i&&(l=n[a=gc(Zi(e))]),l&&Tr(l,t,6,s);const u=n[a+"Once"];if(u){if(!t.emitted)t.emitted={};else if(t.emitted[a])return;t.emitted[a]=!0,Tr(u,t,6,s)}}function $w(t,e,r=!1){const n=e.emitsCache,s=n.get(t);if(s!==void 0)return s;const i=t.emits;let o={},a=!1;if(!Be(t)){const l=u=>{const c=$w(u,e,!0);c&&(a=!0,Rt(o,c))};!r&&e.mixins.length&&e.mixins.forEach(l),t.extends&&l(t.extends),t.mixins&&t.mixins.forEach(l)}return!i&&!a?(Qe(t)&&n.set(t,null),null):(De(i)?i.forEach(l=>o[l]=null):Rt(o,i),Qe(t)&&n.set(t,o),o)}function Eu(t,e){return!t||!gu(e)?!1:(e=e.slice(2).replace(/Once$/,""),Ue(t,e[0].toLowerCase()+e.slice(1))||Ue(t,Zi(e))||Ue(t,e))}function vc(t){const{type:e,vnode:r,proxy:n,withProxy:s,propsOptions:[i],slots:o,attrs:a,emit:l,render:u,renderCache:c,props:f,data:d,setupState:g,ctx:m,inheritAttrs:y}=t,_=Bl(t);let S,E;try{if(r.shapeFlag&4){const x=s||n,M=x;S=Nr(u.call(M,x,c,f,g,d,m)),E=a}else{const x=e;S=Nr(x.length>1?x(f,{attrs:a,slots:o,emit:l}):x(f,null)),E=e.props?a:Bx(a)}}catch(x){qo.length=0,wu(x,t,1),S=xr(Jn)}let v=S;if(E&&y!==!1){const x=Object.keys(E),{shapeFlag:M}=v;x.length&&M&7&&(i&&x.some(ap)&&(E=$x(E,i)),v=Us(v,E,!1,!0))}return r.dirs&&(v=Us(v,null,!1,!0),v.dirs=v.dirs?v.dirs.concat(r.dirs):r.dirs),r.transition&&(v.transition=r.transition),S=v,Bl(_),S}const Bx=t=>{let e;for(const r in t)(r==="class"||r==="style"||gu(r))&&((e||(e={}))[r]=t[r]);return e},$x=(t,e)=>{const r={};for(const n in t)(!ap(n)||!(n.slice(9)in e))&&(r[n]=t[n]);return r};function Fx(t,e,r){const{props:n,children:s,component:i}=t,{props:o,children:a,patchFlag:l}=e,u=i.emitsOptions;if(e.dirs||e.transition)return!0;if(r&&l>=0){if(l&1024)return!0;if(l&16)return n?dm(n,o,u):!!o;if(l&8){const c=e.dynamicProps;for(let f=0;f<c.length;f++){const d=c[f];if(o[d]!==n[d]&&!Eu(u,d))return!0}}}else return(s||a)&&(!a||!a.$stable)?!0:n===o?!1:n?o?dm(n,o,u):!0:!!o;return!1}function dm(t,e,r){const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!0;for(let s=0;s<n.length;s++){const i=n[s];if(e[i]!==t[i]&&!Eu(r,i))return!0}return!1}function Ux({vnode:t,parent:e},r){for(;e;){const n=e.subTree;if(n.suspense&&n.suspense.activeBranch===t&&(n.el=t.el),n===t)(t=e.vnode).el=r,e=e.parent;else break}}const jx=t=>t.__isSuspense;function Wx(t,e){e&&e.pendingBranch?De(t)?e.effects.push(...t):e.effects.push(t):VT(t)}const vr=Symbol.for("v-fgt"),Su=Symbol.for("v-txt"),Jn=Symbol.for("v-cmt"),ll=Symbol.for("v-stc"),qo=[];let Qt=null;function Fw(t=!1){qo.push(Qt=t?null:[])}function zx(){qo.pop(),Qt=qo[qo.length-1]||null}let ra=1;function hm(t){ra+=t,t<0&&Qt&&(Qt.hasOnce=!0)}function Uw(t){return t.dynamicChildren=ra>0?Qt||Os:null,zx(),ra>0&&Qt&&Qt.push(t),t}function qj(t,e,r,n,s,i){return Uw(Hw(t,e,r,n,s,i,!0))}function jw(t,e,r,n,s){return Uw(xr(t,e,r,n,s,!0))}function Ww(t){return t?t.__v_isVNode===!0:!1}function bo(t,e){return t.type===e.type&&t.key===e.key}const zw=({key:t})=>t??null,ul=({ref:t,ref_key:e,ref_for:r})=>(typeof t=="number"&&(t=""+t),t!=null?dt(t)||zt(t)||Be(t)?{i:yt,r:t,k:e,f:!!r}:t:null);function Hw(t,e=null,r=null,n=0,s=null,i=t===vr?0:1,o=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&zw(e),ref:e&&ul(e),scopeId:vu,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:yt};return a?(Cp(l,r),i&128&&t.normalize(l)):r&&(l.shapeFlag|=dt(r)?8:16),ra>0&&!o&&Qt&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&Qt.push(l),l}const xr=Hx;function Hx(t,e=null,r=null,n=0,s=null,i=!1){if((!t||t===ax)&&(t=Jn),Ww(t)){const a=Us(t,e,!0);return r&&Cp(a,r),ra>0&&!i&&Qt&&(a.shapeFlag&6?Qt[Qt.indexOf(t)]=a:Qt.push(a)),a.patchFlag=-2,a}if(rA(t)&&(t=t.__vccOpts),e){e=Vx(e);let{class:a,style:l}=e;a&&!dt(a)&&(e.class=fp(a)),Qe(l)&&(lw(l)&&!De(l)&&(l=Rt({},l)),e.style=cp(l))}const o=dt(t)?1:jx(t)?128:xx(t)?64:Qe(t)?4:Be(t)?2:0;return Hw(t,e,r,n,s,o,i,!0)}function Vx(t){return t?lw(t)||Aw(t)?Rt({},t):t:null}function Us(t,e,r=!1,n=!1){const{props:s,ref:i,patchFlag:o,children:a,transition:l}=t,u=e?Yx(s||{},e):s,c={__v_isVNode:!0,__v_skip:!0,type:t.type,props:u,key:u&&zw(u),ref:e&&e.ref?r&&i?De(i)?i.concat(ul(e)):[i,ul(e)]:ul(e):i,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:a,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==vr?o===-1?16:o|16:o,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:l,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Us(t.ssContent),ssFallback:t.ssFallback&&Us(t.ssFallback),el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce};return l&&n&&bw(c,l.clone(c)),c}function qx(t=" ",e=0){return xr(Su,null,t,e)}function Yj(t,e){const r=xr(ll,null,t);return r.staticCount=e,r}function Gj(t="",e=!1){return e?(Fw(),jw(Jn,null,t)):xr(Jn,null,t)}function Nr(t){return t==null||typeof t=="boolean"?xr(Jn):De(t)?xr(vr,null,t.slice()):typeof t=="object"?Hn(t):xr(Su,null,String(t))}function Hn(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Us(t)}function Cp(t,e){let r=0;const{shapeFlag:n}=t;if(e==null)e=null;else if(De(e))r=16;else if(typeof e=="object")if(n&65){const s=e.default;s&&(s._c&&(s._d=!1),Cp(t,s()),s._c&&(s._d=!0));return}else{r=32;const s=e._;!s&&!Aw(e)?e._ctx=yt:s===3&&yt&&(yt.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else Be(e)?(e={default:e,_ctx:yt},r=32):(e=String(e),n&64?(r=16,e=[qx(e)]):r=8);t.children=e,t.shapeFlag|=r}function Yx(...t){const e={};for(let r=0;r<t.length;r++){const n=t[r];for(const s in n)if(s==="class")e.class!==n.class&&(e.class=fp([e.class,n.class]));else if(s==="style")e.style=cp([e.style,n.style]);else if(gu(s)){const i=e[s],o=n[s];o&&i!==o&&!(De(i)&&i.includes(o))&&(e[s]=i?[].concat(i,o):o)}else s!==""&&(e[s]=n[s])}return e}function Mr(t,e,r,n=null){Tr(t,e,7,[r,n])}const Gx=Sw();let Kx=0;function Xx(t,e,r){const n=t.type,s=(e?e.appContext:t.appContext)||Gx,i={uid:Kx++,vnode:t,type:n,parent:e,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new hT(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:e?e.provides:Object.create(s.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Iw(n,s),emitsOptions:$w(n,s),emit:null,emitted:null,propsDefaults:rt,inheritAttrs:n.inheritAttrs,ctx:rt,data:rt,props:rt,attrs:rt,slots:rt,refs:rt,setupState:rt,setupContext:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=e?e.root:i,i.emit=Dx.bind(null,i),t.ce&&t.ce(i),i}let Mt=null,Fl,Yf;{const t=qy(),e=(r,n)=>{let s;return(s=t[r])||(s=t[r]=[]),s.push(n),i=>{s.length>1?s.forEach(o=>o(i)):s[0](i)}};Fl=e("__VUE_INSTANCE_SETTERS__",r=>Mt=r),Yf=e("__VUE_SSR_SETTERS__",r=>Tu=r)}const ha=t=>{const e=Mt;return Fl(t),t.scope.on(),()=>{t.scope.off(),Fl(e)}},pm=()=>{Mt&&Mt.scope.off(),Fl(null)};function Vw(t){return t.vnode.shapeFlag&4}let Tu=!1;function Qx(t,e=!1,r=!1){e&&Yf(e);const{props:n,children:s}=t.vnode,i=Vw(t);yx(t,n,i,e),Sx(t,s,r);const o=i?Jx(t,e):void 0;return e&&Yf(!1),o}function Jx(t,e){const r=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,ux);const{setup:n}=r;if(n){const s=t.setupContext=n.length>1?eA(t):null,i=ha(t);ri();const o=Xn(n,t,0,[t.props,s]);if(ni(),i(),Wy(o)){if(o.then(pm,pm),e)return o.then(a=>{gm(t,a,e)}).catch(a=>{wu(a,t,0)});t.asyncDep=o}else gm(t,o,e)}else qw(t,e)}function gm(t,e,r){Be(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:Qe(e)&&(t.setupState=fw(e)),qw(t,r)}let mm;function qw(t,e,r){const n=t.type;if(!t.render){if(!e&&mm&&!n.render){const s=n.template||Sp(t).template;if(s){const{isCustomElement:i,compilerOptions:o}=t.appContext.config,{delimiters:a,compilerOptions:l}=n,u=Rt(Rt({isCustomElement:i,delimiters:a},o),l);n.render=mm(s,u)}}t.render=n.render||lr}{const s=ha(t);ri();try{cx(t)}finally{ni(),s()}}}const Zx={get(t,e){return Wt(t,"get",""),t[e]}};function eA(t){const e=r=>{t.exposed=r||{}};return{attrs:new Proxy(t.attrs,Zx),slots:t.slots,emit:t.emit,expose:e}}function xu(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(fw(DT(t.exposed)),{get(e,r){if(r in e)return e[r];if(r in Ho)return Ho[r](t)},has(e,r){return r in e||r in Ho}})):t.proxy}function tA(t,e=!0){return Be(t)?t.displayName||t.name:t.name||e&&t.__name}function rA(t){return Be(t)&&"__vccOpts"in t}const nA=(t,e)=>BT(t,e,Tu),iA="3.4.38";/**
+* @vue/runtime-dom v3.4.38
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/const sA="http://www.w3.org/2000/svg",oA="http://www.w3.org/1998/Math/MathML",en=typeof document<"u"?document:null,bm=en&&en.createElement("template"),aA={insert:(t,e,r)=>{e.insertBefore(t,r||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,r,n)=>{const s=e==="svg"?en.createElementNS(sA,t):e==="mathml"?en.createElementNS(oA,t):r?en.createElement(t,{is:r}):en.createElement(t);return t==="select"&&n&&n.multiple!=null&&s.setAttribute("multiple",n.multiple),s},createText:t=>en.createTextNode(t),createComment:t=>en.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>en.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,r,n,s,i){const o=r?r.previousSibling:e.lastChild;if(s&&(s===i||s.nextSibling))for(;e.insertBefore(s.cloneNode(!0),r),!(s===i||!(s=s.nextSibling)););else{bm.innerHTML=n==="svg"?`<svg>${t}</svg>`:n==="mathml"?`<math>${t}</math>`:t;const a=bm.content;if(n==="svg"||n==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}e.insertBefore(a,r)}return[o?o.nextSibling:e.firstChild,r?r.previousSibling:e.lastChild]}},lA=Symbol("_vtc");function uA(t,e,r){const n=t[lA];n&&(e=(e?[e,...n]:[...n]).join(" ")),e==null?t.removeAttribute("class"):r?t.setAttribute("class",e):t.className=e}const Ul=Symbol("_vod"),Yw=Symbol("_vsh"),Kj={beforeMount(t,{value:e},{transition:r}){t[Ul]=t.style.display==="none"?"":t.style.display,r&&e?r.beforeEnter(t):yo(t,e)},mounted(t,{value:e},{transition:r}){r&&e&&r.enter(t)},updated(t,{value:e,oldValue:r},{transition:n}){!e!=!r&&(n?e?(n.beforeEnter(t),yo(t,!0),n.enter(t)):n.leave(t,()=>{yo(t,!1)}):yo(t,e))},beforeUnmount(t,{value:e}){yo(t,e)}};function yo(t,e){t.style.display=e?t[Ul]:"none",t[Yw]=!e}const cA=Symbol(""),fA=/(^|;)\s*display\s*:/;function dA(t,e,r){const n=t.style,s=dt(r);let i=!1;if(r&&!s){if(e)if(dt(e))for(const o of e.split(";")){const a=o.slice(0,o.indexOf(":")).trim();r[a]==null&&cl(n,a,"")}else for(const o in e)r[o]==null&&cl(n,o,"");for(const o in r)o==="display"&&(i=!0),cl(n,o,r[o])}else if(s){if(e!==r){const o=n[cA];o&&(r+=";"+o),n.cssText=r,i=fA.test(r)}}else e&&t.removeAttribute("style");Ul in t&&(t[Ul]=i?n.display:"",t[Yw]&&(n.display="none"))}const ym=/\s*!important$/;function cl(t,e,r){if(De(r))r.forEach(n=>cl(t,e,n));else if(r==null&&(r=""),e.startsWith("--"))t.setProperty(e,r);else{const n=hA(t,e);ym.test(r)?t.setProperty(Zi(n),r.replace(ym,""),"important"):t[n]=r}}const wm=["Webkit","Moz","ms"],_c={};function hA(t,e){const r=_c[e];if(r)return r;let n=Ar(e);if(n!=="filter"&&n in t)return _c[e]=n;n=bu(n);for(let s=0;s<wm.length;s++){const i=wm[s]+n;if(i in t)return _c[e]=i}return e}const vm="http://www.w3.org/1999/xlink";function _m(t,e,r,n,s,i=cT(e)){n&&e.startsWith("xlink:")?r==null?t.removeAttributeNS(vm,e.slice(6,e.length)):t.setAttributeNS(vm,e,r):r==null||i&&!Yy(r)?t.removeAttribute(e):t.setAttribute(e,i?"":Hr(r)?String(r):r)}function pA(t,e,r,n){if(e==="innerHTML"||e==="textContent"){if(r==null)return;t[e]=r;return}const s=t.tagName;if(e==="value"&&s!=="PROGRESS"&&!s.includes("-")){const o=s==="OPTION"?t.getAttribute("value")||"":t.value,a=r==null?"":String(r);(o!==a||!("_value"in t))&&(t.value=a),r==null&&t.removeAttribute(e),t._value=r;return}let i=!1;if(r===""||r==null){const o=typeof t[e];o==="boolean"?r=Yy(r):r==null&&o==="string"?(r="",i=!0):o==="number"&&(r=0,i=!0)}try{t[e]=r}catch{}i&&t.removeAttribute(e)}function Yn(t,e,r,n){t.addEventListener(e,r,n)}function gA(t,e,r,n){t.removeEventListener(e,r,n)}const Em=Symbol("_vei");function mA(t,e,r,n,s=null){const i=t[Em]||(t[Em]={}),o=i[e];if(n&&o)o.value=n;else{const[a,l]=bA(e);if(n){const u=i[e]=vA(n,s);Yn(t,a,u,l)}else o&&(gA(t,a,o,l),i[e]=void 0)}}const Sm=/(?:Once|Passive|Capture)$/;function bA(t){let e;if(Sm.test(t)){e={};let n;for(;n=t.match(Sm);)t=t.slice(0,t.length-n[0].length),e[n[0].toLowerCase()]=!0}return[t[2]===":"?t.slice(3):Zi(t.slice(2)),e]}let Ec=0;const yA=Promise.resolve(),wA=()=>Ec||(yA.then(()=>Ec=0),Ec=Date.now());function vA(t,e){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;Tr(_A(n,r.value),e,5,[n])};return r.value=t,r.attached=wA(),r}function _A(t,e){if(De(e)){const r=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{r.call(t),t._stopped=!0},e.map(n=>s=>!s._stopped&&n&&n(s))}else return e}const Tm=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,EA=(t,e,r,n,s,i)=>{const o=s==="svg";e==="class"?uA(t,n,o):e==="style"?dA(t,r,n):gu(e)?ap(e)||mA(t,e,r,n,i):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):SA(t,e,n,o))?(pA(t,e,n),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&_m(t,e,n,o,i,e!=="value")):(e==="true-value"?t._trueValue=n:e==="false-value"&&(t._falseValue=n),_m(t,e,n,o))};function SA(t,e,r,n){if(n)return!!(e==="innerHTML"||e==="textContent"||e in t&&Tm(e)&&Be(r));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const s=t.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Tm(e)&&dt(r)?!1:e in t}const js=t=>{const e=t.props["onUpdate:modelValue"]||!1;return De(e)?r=>sl(e,r):e};function TA(t){t.target.composing=!0}function xm(t){const e=t.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const pn=Symbol("_assign"),Xj={created(t,{modifiers:{lazy:e,trim:r,number:n}},s){t[pn]=js(s);const i=n||s.props&&s.props.type==="number";Yn(t,e?"change":"input",o=>{if(o.target.composing)return;let a=t.value;r&&(a=a.trim()),i&&(a=Dl(a)),t[pn](a)}),r&&Yn(t,"change",()=>{t.value=t.value.trim()}),e||(Yn(t,"compositionstart",TA),Yn(t,"compositionend",xm),Yn(t,"change",xm))},mounted(t,{value:e}){t.value=e??""},beforeUpdate(t,{value:e,oldValue:r,modifiers:{lazy:n,trim:s,number:i}},o){if(t[pn]=js(o),t.composing)return;const a=(i||t.type==="number")&&!/^0\d/.test(t.value)?Dl(t.value):t.value,l=e??"";a!==l&&(document.activeElement===t&&t.type!=="range"&&(n&&e===r||s&&t.value.trim()===l)||(t.value=l))}},Qj={deep:!0,created(t,e,r){t[pn]=js(r),Yn(t,"change",()=>{const n=t._modelValue,s=na(t),i=t.checked,o=t[pn];if(De(n)){const a=dp(n,s),l=a!==-1;if(i&&!l)o(n.concat(s));else if(!i&&l){const u=[...n];u.splice(a,1),o(u)}}else if(no(n)){const a=new Set(n);i?a.add(s):a.delete(s),o(a)}else o(Gw(t,i))})},mounted:Am,beforeUpdate(t,e,r){t[pn]=js(r),Am(t,e,r)}};function Am(t,{value:e,oldValue:r},n){t._modelValue=e,De(e)?t.checked=dp(e,n.props.value)>-1:no(e)?t.checked=e.has(n.props.value):e!==r&&(t.checked=da(e,Gw(t,!0)))}const Jj={deep:!0,created(t,{value:e,modifiers:{number:r}},n){const s=no(e);Yn(t,"change",()=>{const i=Array.prototype.filter.call(t.options,o=>o.selected).map(o=>r?Dl(na(o)):na(o));t[pn](t.multiple?s?new Set(i):i:i[0]),t._assigning=!0,hw(()=>{t._assigning=!1})}),t[pn]=js(n)},mounted(t,{value:e,modifiers:{number:r}}){Cm(t,e)},beforeUpdate(t,e,r){t[pn]=js(r)},updated(t,{value:e,modifiers:{number:r}}){t._assigning||Cm(t,e)}};function Cm(t,e,r){const n=t.multiple,s=De(e);if(!(n&&!s&&!no(e))){for(let i=0,o=t.options.length;i<o;i++){const a=t.options[i],l=na(a);if(n)if(s){const u=typeof l;u==="string"||u==="number"?a.selected=e.some(c=>String(c)===String(l)):a.selected=dp(e,l)>-1}else a.selected=e.has(l);else if(da(na(a),e)){t.selectedIndex!==i&&(t.selectedIndex=i);return}}!n&&t.selectedIndex!==-1&&(t.selectedIndex=-1)}}function na(t){return"_value"in t?t._value:t.value}function Gw(t,e){const r=e?"_trueValue":"_falseValue";return r in t?t[r]:e}const xA=Rt({patchProp:EA},aA);let Im;function AA(){return Im||(Im=Ix(xA))}const Zj=(...t)=>{const e=AA().createApp(...t),{mount:r}=e;return e.mount=n=>{const s=IA(n);if(!s)return;const i=e._component;!Be(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.innerHTML="";const o=r(s,!1,CA(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},e};function CA(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function IA(t){return dt(t)?document.querySelector(t):t}function fl(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function MA(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Ip(t){let e,r,n;t.length!==2?(e=fl,r=(a,l)=>fl(t(a),l),n=(a,l)=>t(a)-l):(e=t===fl||t===MA?t:OA,r=t,n=t);function s(a,l,u=0,c=a.length){if(u<c){if(e(l,l)!==0)return c;do{const f=u+c>>>1;r(a[f],l)<0?u=f+1:c=f}while(u<c)}return u}function i(a,l,u=0,c=a.length){if(u<c){if(e(l,l)!==0)return c;do{const f=u+c>>>1;r(a[f],l)<=0?u=f+1:c=f}while(u<c)}return u}function o(a,l,u=0,c=a.length){const f=s(a,l,u,c-1);return f>u&&n(a[f-1],l)>-n(a[f],l)?f-1:f}return{left:s,center:o,right:i}}function OA(){return 0}function RA(t){return t===null?NaN:+t}const PA=Ip(fl),kA=PA.right;Ip(RA).center;function e4(t,e){let r,n;if(e===void 0)for(const s of t)s!=null&&(r===void 0?s>=s&&(r=n=s):(r>s&&(r=s),n<s&&(n=s)));else{let s=-1;for(let i of t)(i=e(i,++s,t))!=null&&(r===void 0?i>=i&&(r=n=i):(r>i&&(r=i),n<i&&(n=i)))}return[r,n]}class Mm extends Map{constructor(e,r=DA){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(const[n,s]of e)this.set(n,s)}get(e){return super.get(Om(this,e))}has(e){return super.has(Om(this,e))}set(e,r){return super.set(LA(this,e),r)}delete(e){return super.delete(NA(this,e))}}function Om({_intern:t,_key:e},r){const n=e(r);return t.has(n)?t.get(n):r}function LA({_intern:t,_key:e},r){const n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function NA({_intern:t,_key:e},r){const n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function DA(t){return t!==null&&typeof t=="object"?t.valueOf():t}const BA=Math.sqrt(50),$A=Math.sqrt(10),FA=Math.sqrt(2);function jl(t,e,r){const n=(e-t)/Math.max(0,r),s=Math.floor(Math.log10(n)),i=n/Math.pow(10,s),o=i>=BA?10:i>=$A?5:i>=FA?2:1;let a,l,u;return s<0?(u=Math.pow(10,-s)/o,a=Math.round(t*u),l=Math.round(e*u),a/u<t&&++a,l/u>e&&--l,u=-u):(u=Math.pow(10,s)*o,a=Math.round(t/u),l=Math.round(e/u),a*u<t&&++a,l*u>e&&--l),l<a&&.5<=r&&r<2?jl(t,e,r*2):[a,l,u]}function UA(t,e,r){if(e=+e,t=+t,r=+r,!(r>0))return[];if(t===e)return[t];const n=e<t,[s,i,o]=n?jl(e,t,r):jl(t,e,r);if(!(i>=s))return[];const a=i-s+1,l=new Array(a);if(n)if(o<0)for(let u=0;u<a;++u)l[u]=(i-u)/-o;else for(let u=0;u<a;++u)l[u]=(i-u)*o;else if(o<0)for(let u=0;u<a;++u)l[u]=(s+u)/-o;else for(let u=0;u<a;++u)l[u]=(s+u)*o;return l}function Gf(t,e,r){return e=+e,t=+t,r=+r,jl(t,e,r)[2]}function Kf(t,e,r){e=+e,t=+t,r=+r;const n=e<t,s=n?Gf(e,t,r):Gf(t,e,r);return(n?-1:1)*(s<0?1/-s:s)}function t4(t,e){let r;if(e===void 0)for(const n of t)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let s of t)(s=e(s,++n,t))!=null&&(r<s||r===void 0&&s>=s)&&(r=s)}return r}function jA(t,e,r){t=+t,e=+e,r=(s=arguments.length)<2?(e=t,t=0,1):s<3?1:+r;for(var n=-1,s=Math.max(0,Math.ceil((e-t)/r))|0,i=new Array(s);++n<s;)i[n]=t+n*r;return i}function WA(t){return t}var dl=1,hl=2,Xf=3,Po=4,Rm=1e-6;function zA(t){return"translate("+t+",0)"}function HA(t){return"translate(0,"+t+")"}function VA(t){return e=>+t(e)}function qA(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function YA(){return!this.__axis}function Au(t,e){var r=[],n=null,s=null,i=6,o=6,a=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=t===dl||t===Po?-1:1,c=t===Po||t===hl?"x":"y",f=t===dl||t===Xf?zA:HA;function d(g){var m=n??(e.ticks?e.ticks.apply(e,r):e.domain()),y=s??(e.tickFormat?e.tickFormat.apply(e,r):WA),_=Math.max(i,0)+a,S=e.range(),E=+S[0]+l,v=+S[S.length-1]+l,x=(e.bandwidth?qA:VA)(e.copy(),l),M=g.selection?g.selection():g,A=M.selectAll(".domain").data([null]),L=M.selectAll(".tick").data(m,e).order(),D=L.exit(),B=L.enter().append("g").attr("class","tick"),q=L.select("line"),Y=L.select("text");A=A.merge(A.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),L=L.merge(B),q=q.merge(B.append("line").attr("stroke","currentColor").attr(c+"2",u*i)),Y=Y.merge(B.append("text").attr("fill","currentColor").attr(c,u*_).attr("dy",t===dl?"0em":t===Xf?"0.71em":"0.32em")),g!==M&&(A=A.transition(g),L=L.transition(g),q=q.transition(g),Y=Y.transition(g),D=D.transition(g).attr("opacity",Rm).attr("transform",function(R){return isFinite(R=x(R))?f(R+l):this.getAttribute("transform")}),B.attr("opacity",Rm).attr("transform",function(R){var I=this.parentNode.__axis;return f((I&&isFinite(I=I(R))?I:x(R))+l)})),D.remove(),A.attr("d",t===Po||t===hl?o?"M"+u*o+","+E+"H"+l+"V"+v+"H"+u*o:"M"+l+","+E+"V"+v:o?"M"+E+","+u*o+"V"+l+"H"+v+"V"+u*o:"M"+E+","+l+"H"+v),L.attr("opacity",1).attr("transform",function(R){return f(x(R)+l)}),q.attr(c+"2",u*i),Y.attr(c,u*_).text(y),M.filter(YA).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===hl?"start":t===Po?"end":"middle"),M.each(function(){this.__axis=x})}return d.scale=function(g){return arguments.length?(e=g,d):e},d.ticks=function(){return r=Array.from(arguments),d},d.tickArguments=function(g){return arguments.length?(r=g==null?[]:Array.from(g),d):r.slice()},d.tickValues=function(g){return arguments.length?(n=g==null?null:Array.from(g),d):n&&n.slice()},d.tickFormat=function(g){return arguments.length?(s=g,d):s},d.tickSize=function(g){return arguments.length?(i=o=+g,d):i},d.tickSizeInner=function(g){return arguments.length?(i=+g,d):i},d.tickSizeOuter=function(g){return arguments.length?(o=+g,d):o},d.tickPadding=function(g){return arguments.length?(a=+g,d):a},d.offset=function(g){return arguments.length?(l=+g,d):l},d}function r4(t){return Au(dl,t)}function n4(t){return Au(hl,t)}function i4(t){return Au(Xf,t)}function s4(t){return Au(Po,t)}var GA={value:()=>{}};function Mp(){for(var t=0,e=arguments.length,r={},n;t<e;++t){if(!(n=arguments[t]+"")||n in r||/[\s.]/.test(n))throw new Error("illegal type: "+n);r[n]=[]}return new pl(r)}function pl(t){this._=t}function KA(t,e){return t.trim().split(/^|\s+/).map(function(r){var n="",s=r.indexOf(".");if(s>=0&&(n=r.slice(s+1),r=r.slice(0,s)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}pl.prototype=Mp.prototype={constructor:pl,on:function(t,e){var r=this._,n=KA(t+"",r),s,i=-1,o=n.length;if(arguments.length<2){for(;++i<o;)if((s=(t=n[i]).type)&&(s=XA(r[s],t.name)))return s;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++i<o;)if(s=(t=n[i]).type)r[s]=Pm(r[s],t.name,e);else if(e==null)for(s in r)r[s]=Pm(r[s],t.name,null);return this},copy:function(){var t={},e=this._;for(var r in e)t[r]=e[r].slice();return new pl(t)},call:function(t,e){if((s=arguments.length-2)>0)for(var r=new Array(s),n=0,s,i;n<s;++n)r[n]=arguments[n+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(i=this._[t],n=0,s=i.length;n<s;++n)i[n].value.apply(e,r)},apply:function(t,e,r){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var n=this._[t],s=0,i=n.length;s<i;++s)n[s].value.apply(e,r)}};function XA(t,e){for(var r=0,n=t.length,s;r<n;++r)if((s=t[r]).name===e)return s.value}function Pm(t,e,r){for(var n=0,s=t.length;n<s;++n)if(t[n].name===e){t[n]=GA,t=t.slice(0,n).concat(t.slice(n+1));break}return r!=null&&t.push({name:e,value:r}),t}var Qf="http://www.w3.org/1999/xhtml";const km={svg:"http://www.w3.org/2000/svg",xhtml:Qf,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Cu(t){var e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),km.hasOwnProperty(e)?{space:km[e],local:t}:t}function QA(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===Qf&&e.documentElement.namespaceURI===Qf?e.createElement(t):e.createElementNS(r,t)}}function JA(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Kw(t){var e=Cu(t);return(e.local?JA:QA)(e)}function ZA(){}function Op(t){return t==null?ZA:function(){return this.querySelector(t)}}function eC(t){typeof t!="function"&&(t=Op(t));for(var e=this._groups,r=e.length,n=new Array(r),s=0;s<r;++s)for(var i=e[s],o=i.length,a=n[s]=new Array(o),l,u,c=0;c<o;++c)(l=i[c])&&(u=t.call(l,l.__data__,c,i))&&("__data__"in l&&(u.__data__=l.__data__),a[c]=u);return new Zt(n,this._parents)}function tC(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function rC(){return[]}function Xw(t){return t==null?rC:function(){return this.querySelectorAll(t)}}function nC(t){return function(){return tC(t.apply(this,arguments))}}function iC(t){typeof t=="function"?t=nC(t):t=Xw(t);for(var e=this._groups,r=e.length,n=[],s=[],i=0;i<r;++i)for(var o=e[i],a=o.length,l,u=0;u<a;++u)(l=o[u])&&(n.push(t.call(l,l.__data__,u,o)),s.push(l));return new Zt(n,s)}function Qw(t){return function(){return this.matches(t)}}function Jw(t){return function(e){return e.matches(t)}}var sC=Array.prototype.find;function oC(t){return function(){return sC.call(this.children,t)}}function aC(){return this.firstElementChild}function lC(t){return this.select(t==null?aC:oC(typeof t=="function"?t:Jw(t)))}var uC=Array.prototype.filter;function cC(){return Array.from(this.children)}function fC(t){return function(){return uC.call(this.children,t)}}function dC(t){return this.selectAll(t==null?cC:fC(typeof t=="function"?t:Jw(t)))}function hC(t){typeof t!="function"&&(t=Qw(t));for(var e=this._groups,r=e.length,n=new Array(r),s=0;s<r;++s)for(var i=e[s],o=i.length,a=n[s]=[],l,u=0;u<o;++u)(l=i[u])&&t.call(l,l.__data__,u,i)&&a.push(l);return new Zt(n,this._parents)}function Zw(t){return new Array(t.length)}function pC(){return new Zt(this._enter||this._groups.map(Zw),this._parents)}function Wl(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Wl.prototype={constructor:Wl,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function gC(t){return function(){return t}}function mC(t,e,r,n,s,i){for(var o=0,a,l=e.length,u=i.length;o<u;++o)(a=e[o])?(a.__data__=i[o],n[o]=a):r[o]=new Wl(t,i[o]);for(;o<l;++o)(a=e[o])&&(s[o]=a)}function bC(t,e,r,n,s,i,o){var a,l,u=new Map,c=e.length,f=i.length,d=new Array(c),g;for(a=0;a<c;++a)(l=e[a])&&(d[a]=g=o.call(l,l.__data__,a,e)+"",u.has(g)?s[a]=l:u.set(g,l));for(a=0;a<f;++a)g=o.call(t,i[a],a,i)+"",(l=u.get(g))?(n[a]=l,l.__data__=i[a],u.delete(g)):r[a]=new Wl(t,i[a]);for(a=0;a<c;++a)(l=e[a])&&u.get(d[a])===l&&(s[a]=l)}function yC(t){return t.__data__}function wC(t,e){if(!arguments.length)return Array.from(this,yC);var r=e?bC:mC,n=this._parents,s=this._groups;typeof t!="function"&&(t=gC(t));for(var i=s.length,o=new Array(i),a=new Array(i),l=new Array(i),u=0;u<i;++u){var c=n[u],f=s[u],d=f.length,g=vC(t.call(c,c&&c.__data__,u,n)),m=g.length,y=a[u]=new Array(m),_=o[u]=new Array(m),S=l[u]=new Array(d);r(c,f,y,_,S,g,e);for(var E=0,v=0,x,M;E<m;++E)if(x=y[E]){for(E>=v&&(v=E+1);!(M=_[v])&&++v<m;);x._next=M||null}}return o=new Zt(o,n),o._enter=a,o._exit=l,o}function vC(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function _C(){return new Zt(this._exit||this._groups.map(Zw),this._parents)}function EC(t,e,r){var n=this.enter(),s=this,i=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),e!=null&&(s=e(s),s&&(s=s.selection())),r==null?i.remove():r(i),n&&s?n.merge(s).order():s}function SC(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,s=r.length,i=n.length,o=Math.min(s,i),a=new Array(s),l=0;l<o;++l)for(var u=r[l],c=n[l],f=u.length,d=a[l]=new Array(f),g,m=0;m<f;++m)(g=u[m]||c[m])&&(d[m]=g);for(;l<s;++l)a[l]=r[l];return new Zt(a,this._parents)}function TC(){for(var t=this._groups,e=-1,r=t.length;++e<r;)for(var n=t[e],s=n.length-1,i=n[s],o;--s>=0;)(o=n[s])&&(i&&o.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(o,i),i=o);return this}function xC(t){t||(t=AC);function e(f,d){return f&&d?t(f.__data__,d.__data__):!f-!d}for(var r=this._groups,n=r.length,s=new Array(n),i=0;i<n;++i){for(var o=r[i],a=o.length,l=s[i]=new Array(a),u,c=0;c<a;++c)(u=o[c])&&(l[c]=u);l.sort(e)}return new Zt(s,this._parents).order()}function AC(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function CC(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function IC(){return Array.from(this)}function MC(){for(var t=this._groups,e=0,r=t.length;e<r;++e)for(var n=t[e],s=0,i=n.length;s<i;++s){var o=n[s];if(o)return o}return null}function OC(){let t=0;for(const e of this)++t;return t}function RC(){return!this.node()}function PC(t){for(var e=this._groups,r=0,n=e.length;r<n;++r)for(var s=e[r],i=0,o=s.length,a;i<o;++i)(a=s[i])&&t.call(a,a.__data__,i,s);return this}function kC(t){return function(){this.removeAttribute(t)}}function LC(t){return function(){this.removeAttributeNS(t.space,t.local)}}function NC(t,e){return function(){this.setAttribute(t,e)}}function DC(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function BC(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function $C(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function FC(t,e){var r=Cu(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?LC:kC:typeof e=="function"?r.local?$C:BC:r.local?DC:NC)(r,e))}function ev(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function UC(t){return function(){this.style.removeProperty(t)}}function jC(t,e,r){return function(){this.style.setProperty(t,e,r)}}function WC(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function zC(t,e,r){return arguments.length>1?this.each((e==null?UC:typeof e=="function"?WC:jC)(t,e,r??"")):Ws(this.node(),t)}function Ws(t,e){return t.style.getPropertyValue(e)||ev(t).getComputedStyle(t,null).getPropertyValue(e)}function HC(t){return function(){delete this[t]}}function VC(t,e){return function(){this[t]=e}}function qC(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function YC(t,e){return arguments.length>1?this.each((e==null?HC:typeof e=="function"?qC:VC)(t,e)):this.node()[t]}function tv(t){return t.trim().split(/^|\s+/)}function Rp(t){return t.classList||new rv(t)}function rv(t){this._node=t,this._names=tv(t.getAttribute("class")||"")}rv.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function nv(t,e){for(var r=Rp(t),n=-1,s=e.length;++n<s;)r.add(e[n])}function iv(t,e){for(var r=Rp(t),n=-1,s=e.length;++n<s;)r.remove(e[n])}function GC(t){return function(){nv(this,t)}}function KC(t){return function(){iv(this,t)}}function XC(t,e){return function(){(e.apply(this,arguments)?nv:iv)(this,t)}}function QC(t,e){var r=tv(t+"");if(arguments.length<2){for(var n=Rp(this.node()),s=-1,i=r.length;++s<i;)if(!n.contains(r[s]))return!1;return!0}return this.each((typeof e=="function"?XC:e?GC:KC)(r,e))}function JC(){this.textContent=""}function ZC(t){return function(){this.textContent=t}}function eI(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function tI(t){return arguments.length?this.each(t==null?JC:(typeof t=="function"?eI:ZC)(t)):this.node().textContent}function rI(){this.innerHTML=""}function nI(t){return function(){this.innerHTML=t}}function iI(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function sI(t){return arguments.length?this.each(t==null?rI:(typeof t=="function"?iI:nI)(t)):this.node().innerHTML}function oI(){this.nextSibling&&this.parentNode.appendChild(this)}function aI(){return this.each(oI)}function lI(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function uI(){return this.each(lI)}function cI(t){var e=typeof t=="function"?t:Kw(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function fI(){return null}function dI(t,e){var r=typeof t=="function"?t:Kw(t),n=e==null?fI:typeof e=="function"?e:Op(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}function hI(){var t=this.parentNode;t&&t.removeChild(this)}function pI(){return this.each(hI)}function gI(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function mI(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function bI(t){return this.select(t?mI:gI)}function yI(t){return arguments.length?this.property("__data__",t):this.node().__data__}function wI(t){return function(e){t.call(this,e,this.__data__)}}function vI(t){return t.trim().split(/^|\s+/).map(function(e){var r="",n=e.indexOf(".");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function _I(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,s=e.length,i;r<s;++r)i=e[r],(!t.type||i.type===t.type)&&i.name===t.name?this.removeEventListener(i.type,i.listener,i.options):e[++n]=i;++n?e.length=n:delete this.__on}}}function EI(t,e,r){return function(){var n=this.__on,s,i=wI(e);if(n){for(var o=0,a=n.length;o<a;++o)if((s=n[o]).type===t.type&&s.name===t.name){this.removeEventListener(s.type,s.listener,s.options),this.addEventListener(s.type,s.listener=i,s.options=r),s.value=e;return}}this.addEventListener(t.type,i,r),s={type:t.type,name:t.name,value:e,listener:i,options:r},n?n.push(s):this.__on=[s]}}function SI(t,e,r){var n=vI(t+""),s,i=n.length,o;if(arguments.length<2){var a=this.node().__on;if(a){for(var l=0,u=a.length,c;l<u;++l)for(s=0,c=a[l];s<i;++s)if((o=n[s]).type===c.type&&o.name===c.name)return c.value}return}for(a=e?EI:_I,s=0;s<i;++s)this.each(a(n[s],e,r));return this}function sv(t,e,r){var n=ev(t),s=n.CustomEvent;typeof s=="function"?s=new s(e,r):(s=n.document.createEvent("Event"),r?(s.initEvent(e,r.bubbles,r.cancelable),s.detail=r.detail):s.initEvent(e,!1,!1)),t.dispatchEvent(s)}function TI(t,e){return function(){return sv(this,t,e)}}function xI(t,e){return function(){return sv(this,t,e.apply(this,arguments))}}function AI(t,e){return this.each((typeof e=="function"?xI:TI)(t,e))}function*CI(){for(var t=this._groups,e=0,r=t.length;e<r;++e)for(var n=t[e],s=0,i=n.length,o;s<i;++s)(o=n[s])&&(yield o)}var ov=[null];function Zt(t,e){this._groups=t,this._parents=e}function pa(){return new Zt([[document.documentElement]],ov)}function II(){return this}Zt.prototype=pa.prototype={constructor:Zt,select:eC,selectAll:iC,selectChild:lC,selectChildren:dC,filter:hC,data:wC,enter:pC,exit:_C,join:EC,merge:SC,selection:II,order:TC,sort:xC,call:CC,nodes:IC,node:MC,size:OC,empty:RC,each:PC,attr:FC,style:zC,property:YC,classed:QC,text:tI,html:sI,raise:aI,lower:uI,append:cI,insert:dI,remove:pI,clone:bI,datum:yI,on:SI,dispatch:AI,[Symbol.iterator]:CI};function Ai(t){return typeof t=="string"?new Zt([[document.querySelector(t)]],[document.documentElement]):new Zt([[t]],ov)}function MI(t){let e;for(;e=t.sourceEvent;)t=e;return t}function hi(t,e){if(t=MI(t),e===void 0&&(e=t.currentTarget),e){var r=e.ownerSVGElement||e;if(r.createSVGPoint){var n=r.createSVGPoint();return n.x=t.clientX,n.y=t.clientY,n=n.matrixTransform(e.getScreenCTM().inverse()),[n.x,n.y]}if(e.getBoundingClientRect){var s=e.getBoundingClientRect();return[t.clientX-s.left-e.clientLeft,t.clientY-s.top-e.clientTop]}}return[t.pageX,t.pageY]}const Jf={capture:!0,passive:!1};function Zf(t){t.preventDefault(),t.stopImmediatePropagation()}function OI(t){var e=t.document.documentElement,r=Ai(t).on("dragstart.drag",Zf,Jf);"onselectstart"in e?r.on("selectstart.drag",Zf,Jf):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function RI(t,e){var r=t.document.documentElement,n=Ai(t).on("dragstart.drag",null);e&&(n.on("click.drag",Zf,Jf),setTimeout(function(){n.on("click.drag",null)},0)),"onselectstart"in r?n.on("selectstart.drag",null):(r.style.MozUserSelect=r.__noselect,delete r.__noselect)}function Pp(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function av(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function ga(){}var ia=.7,zl=1/ia,Ls="\\s*([+-]?\\d+)\\s*",sa="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ur="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",PI=/^#([0-9a-f]{3,8})$/,kI=new RegExp(`^rgb\\(${Ls},${Ls},${Ls}\\)$`),LI=new RegExp(`^rgb\\(${Ur},${Ur},${Ur}\\)$`),NI=new RegExp(`^rgba\\(${Ls},${Ls},${Ls},${sa}\\)$`),DI=new RegExp(`^rgba\\(${Ur},${Ur},${Ur},${sa}\\)$`),BI=new RegExp(`^hsl\\(${sa},${Ur},${Ur}\\)$`),$I=new RegExp(`^hsla\\(${sa},${Ur},${Ur},${sa}\\)$`),Lm={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Pp(ga,Yi,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Nm,formatHex:Nm,formatHex8:FI,formatHsl:UI,formatRgb:Dm,toString:Dm});function Nm(){return this.rgb().formatHex()}function FI(){return this.rgb().formatHex8()}function UI(){return lv(this).formatHsl()}function Dm(){return this.rgb().formatRgb()}function Yi(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=PI.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?Bm(e):r===3?new jt(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?Da(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?Da(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=kI.exec(t))?new jt(e[1],e[2],e[3],1):(e=LI.exec(t))?new jt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=NI.exec(t))?Da(e[1],e[2],e[3],e[4]):(e=DI.exec(t))?Da(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=BI.exec(t))?Um(e[1],e[2]/100,e[3]/100,1):(e=$I.exec(t))?Um(e[1],e[2]/100,e[3]/100,e[4]):Lm.hasOwnProperty(t)?Bm(Lm[t]):t==="transparent"?new jt(NaN,NaN,NaN,0):null}function Bm(t){return new jt(t>>16&255,t>>8&255,t&255,1)}function Da(t,e,r,n){return n<=0&&(t=e=r=NaN),new jt(t,e,r,n)}function jI(t){return t instanceof ga||(t=Yi(t)),t?(t=t.rgb(),new jt(t.r,t.g,t.b,t.opacity)):new jt}function ed(t,e,r,n){return arguments.length===1?jI(t):new jt(t,e,r,n??1)}function jt(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}Pp(jt,ed,av(ga,{brighter(t){return t=t==null?zl:Math.pow(zl,t),new jt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?ia:Math.pow(ia,t),new jt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new jt($i(this.r),$i(this.g),$i(this.b),Hl(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:$m,formatHex:$m,formatHex8:WI,formatRgb:Fm,toString:Fm}));function $m(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}`}function WI(){return`#${Ii(this.r)}${Ii(this.g)}${Ii(this.b)}${Ii((isNaN(this.opacity)?1:this.opacity)*255)}`}function Fm(){const t=Hl(this.opacity);return`${t===1?"rgb(":"rgba("}${$i(this.r)}, ${$i(this.g)}, ${$i(this.b)}${t===1?")":`, ${t})`}`}function Hl(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function $i(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ii(t){return t=$i(t),(t<16?"0":"")+t.toString(16)}function Um(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new Er(t,e,r,n)}function lv(t){if(t instanceof Er)return new Er(t.h,t.s,t.l,t.opacity);if(t instanceof ga||(t=Yi(t)),!t)return new Er;if(t instanceof Er)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,s=Math.min(e,r,n),i=Math.max(e,r,n),o=NaN,a=i-s,l=(i+s)/2;return a?(e===i?o=(r-n)/a+(r<n)*6:r===i?o=(n-e)/a+2:o=(e-r)/a+4,a/=l<.5?i+s:2-i-s,o*=60):a=l>0&&l<1?0:o,new Er(o,a,l,t.opacity)}function zI(t,e,r,n){return arguments.length===1?lv(t):new Er(t,e,r,n??1)}function Er(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}Pp(Er,zI,av(ga,{brighter(t){return t=t==null?zl:Math.pow(zl,t),new Er(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?ia:Math.pow(ia,t),new Er(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,s=2*r-n;return new jt(Sc(t>=240?t-240:t+120,s,n),Sc(t,s,n),Sc(t<120?t+240:t-120,s,n),this.opacity)},clamp(){return new Er(jm(this.h),Ba(this.s),Ba(this.l),Hl(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Hl(this.opacity);return`${t===1?"hsl(":"hsla("}${jm(this.h)}, ${Ba(this.s)*100}%, ${Ba(this.l)*100}%${t===1?")":`, ${t})`}`}}));function jm(t){return t=(t||0)%360,t<0?t+360:t}function Ba(t){return Math.max(0,Math.min(1,t||0))}function Sc(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}const kp=t=>()=>t;function HI(t,e){return function(r){return t+r*e}}function VI(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function qI(t){return(t=+t)==1?uv:function(e,r){return r-e?VI(e,r,t):kp(isNaN(e)?r:e)}}function uv(t,e){var r=e-t;return r?HI(t,r):kp(isNaN(t)?e:t)}const Vl=function t(e){var r=qI(e);function n(s,i){var o=r((s=ed(s)).r,(i=ed(i)).r),a=r(s.g,i.g),l=r(s.b,i.b),u=uv(s.opacity,i.opacity);return function(c){return s.r=o(c),s.g=a(c),s.b=l(c),s.opacity=u(c),s+""}}return n.gamma=t,n}(1);function YI(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),s;return function(i){for(s=0;s<r;++s)n[s]=t[s]*(1-i)+e[s]*i;return n}}function GI(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function KI(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,s=new Array(n),i=new Array(r),o;for(o=0;o<n;++o)s[o]=Lp(t[o],e[o]);for(;o<r;++o)i[o]=e[o];return function(a){for(o=0;o<n;++o)i[o]=s[o](a);return i}}function XI(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}function _r(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}function QI(t,e){var r={},n={},s;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(s in e)s in t?r[s]=Lp(t[s],e[s]):n[s]=e[s];return function(i){for(s in r)n[s]=r[s](i);return n}}var td=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Tc=new RegExp(td.source,"g");function JI(t){return function(){return t}}function ZI(t){return function(e){return t(e)+""}}function cv(t,e){var r=td.lastIndex=Tc.lastIndex=0,n,s,i,o=-1,a=[],l=[];for(t=t+"",e=e+"";(n=td.exec(t))&&(s=Tc.exec(e));)(i=s.index)>r&&(i=e.slice(r,i),a[o]?a[o]+=i:a[++o]=i),(n=n[0])===(s=s[0])?a[o]?a[o]+=s:a[++o]=s:(a[++o]=null,l.push({i:o,x:_r(n,s)})),r=Tc.lastIndex;return r<e.length&&(i=e.slice(r),a[o]?a[o]+=i:a[++o]=i),a.length<2?l[0]?ZI(l[0].x):JI(e):(e=l.length,function(u){for(var c=0,f;c<e;++c)a[(f=l[c]).i]=f.x(u);return a.join("")})}function Lp(t,e){var r=typeof e,n;return e==null||r==="boolean"?kp(e):(r==="number"?_r:r==="string"?(n=Yi(e))?(e=n,Vl):cv:e instanceof Yi?Vl:e instanceof Date?XI:GI(e)?YI:Array.isArray(e)?KI:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?QI:_r)(t,e)}function eM(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var Wm=180/Math.PI,rd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function fv(t,e,r,n,s,i){var o,a,l;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(l=t*r+e*n)&&(r-=t*l,n-=e*l),(a=Math.sqrt(r*r+n*n))&&(r/=a,n/=a,l/=a),t*n<e*r&&(t=-t,e=-e,l=-l,o=-o),{translateX:s,translateY:i,rotate:Math.atan2(e,t)*Wm,skewX:Math.atan(l)*Wm,scaleX:o,scaleY:a}}var $a;function tM(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?rd:fv(e.a,e.b,e.c,e.d,e.e,e.f)}function rM(t){return t==null||($a||($a=document.createElementNS("http://www.w3.org/2000/svg","g")),$a.setAttribute("transform",t),!(t=$a.transform.baseVal.consolidate()))?rd:(t=t.matrix,fv(t.a,t.b,t.c,t.d,t.e,t.f))}function dv(t,e,r,n){function s(u){return u.length?u.pop()+" ":""}function i(u,c,f,d,g,m){if(u!==f||c!==d){var y=g.push("translate(",null,e,null,r);m.push({i:y-4,x:_r(u,f)},{i:y-2,x:_r(c,d)})}else(f||d)&&g.push("translate("+f+e+d+r)}function o(u,c,f,d){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),d.push({i:f.push(s(f)+"rotate(",null,n)-2,x:_r(u,c)})):c&&f.push(s(f)+"rotate("+c+n)}function a(u,c,f,d){u!==c?d.push({i:f.push(s(f)+"skewX(",null,n)-2,x:_r(u,c)}):c&&f.push(s(f)+"skewX("+c+n)}function l(u,c,f,d,g,m){if(u!==f||c!==d){var y=g.push(s(g)+"scale(",null,",",null,")");m.push({i:y-4,x:_r(u,f)},{i:y-2,x:_r(c,d)})}else(f!==1||d!==1)&&g.push(s(g)+"scale("+f+","+d+")")}return function(u,c){var f=[],d=[];return u=t(u),c=t(c),i(u.translateX,u.translateY,c.translateX,c.translateY,f,d),o(u.rotate,c.rotate,f,d),a(u.skewX,c.skewX,f,d),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,d),u=c=null,function(g){for(var m=-1,y=d.length,_;++m<y;)f[(_=d[m]).i]=_.x(g);return f.join("")}}}var nM=dv(tM,"px, ","px)","deg)"),iM=dv(rM,", ",")",")"),sM=1e-12;function zm(t){return((t=Math.exp(t))+1/t)/2}function oM(t){return((t=Math.exp(t))-1/t)/2}function aM(t){return((t=Math.exp(2*t))-1)/(t+1)}const lM=function t(e,r,n){function s(i,o){var a=i[0],l=i[1],u=i[2],c=o[0],f=o[1],d=o[2],g=c-a,m=f-l,y=g*g+m*m,_,S;if(y<sM)S=Math.log(d/u)/e,_=function(L){return[a+L*g,l+L*m,u*Math.exp(e*L*S)]};else{var E=Math.sqrt(y),v=(d*d-u*u+n*y)/(2*u*r*E),x=(d*d-u*u-n*y)/(2*d*r*E),M=Math.log(Math.sqrt(v*v+1)-v),A=Math.log(Math.sqrt(x*x+1)-x);S=(A-M)/e,_=function(L){var D=L*S,B=zm(M),q=u/(r*E)*(B*aM(e*D+M)-oM(M));return[a+q*g,l+q*m,u*B/zm(e*D+M)]}}return _.duration=S*1e3*e/Math.SQRT2,_}return s.rho=function(i){var o=Math.max(.001,+i),a=o*o,l=a*a;return t(o,a,l)},s}(Math.SQRT2,2,4);var zs=0,ko=0,wo=0,hv=1e3,ql,Lo,Yl=0,Gi=0,Iu=0,oa=typeof performance=="object"&&performance.now?performance:Date,pv=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Np(){return Gi||(pv(uM),Gi=oa.now()+Iu)}function uM(){Gi=0}function Gl(){this._call=this._time=this._next=null}Gl.prototype=gv.prototype={constructor:Gl,restart:function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?Np():+r)+(e==null?0:+e),!this._next&&Lo!==this&&(Lo?Lo._next=this:ql=this,Lo=this),this._call=t,this._time=r,nd()},stop:function(){this._call&&(this._call=null,this._time=1/0,nd())}};function gv(t,e,r){var n=new Gl;return n.restart(t,e,r),n}function cM(){Np(),++zs;for(var t=ql,e;t;)(e=Gi-t._time)>=0&&t._call.call(void 0,e),t=t._next;--zs}function Hm(){Gi=(Yl=oa.now())+Iu,zs=ko=0;try{cM()}finally{zs=0,dM(),Gi=0}}function fM(){var t=oa.now(),e=t-Yl;e>hv&&(Iu-=e,Yl=t)}function dM(){for(var t,e=ql,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:ql=r);Lo=t,nd(n)}function nd(t){if(!zs){ko&&(ko=clearTimeout(ko));var e=t-Gi;e>24?(t<1/0&&(ko=setTimeout(Hm,t-oa.now()-Iu)),wo&&(wo=clearInterval(wo))):(wo||(Yl=oa.now(),wo=setInterval(fM,hv)),zs=1,pv(Hm))}}function Vm(t,e,r){var n=new Gl;return e=e==null?0:+e,n.restart(s=>{n.stop(),t(s+e)},e,r),n}var hM=Mp("start","end","cancel","interrupt"),pM=[],mv=0,qm=1,id=2,gl=3,Ym=4,sd=5,ml=6;function Mu(t,e,r,n,s,i){var o=t.__transition;if(!o)t.__transition={};else if(r in o)return;gM(t,r,{name:e,index:n,group:s,on:hM,tween:pM,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:mv})}function Dp(t,e){var r=Cr(t,e);if(r.state>mv)throw new Error("too late; already scheduled");return r}function Yr(t,e){var r=Cr(t,e);if(r.state>gl)throw new Error("too late; already running");return r}function Cr(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function gM(t,e,r){var n=t.__transition,s;n[e]=r,r.timer=gv(i,0,r.time);function i(u){r.state=qm,r.timer.restart(o,r.delay,r.time),r.delay<=u&&o(u-r.delay)}function o(u){var c,f,d,g;if(r.state!==qm)return l();for(c in n)if(g=n[c],g.name===r.name){if(g.state===gl)return Vm(o);g.state===Ym?(g.state=ml,g.timer.stop(),g.on.call("interrupt",t,t.__data__,g.index,g.group),delete n[c]):+c<e&&(g.state=ml,g.timer.stop(),g.on.call("cancel",t,t.__data__,g.index,g.group),delete n[c])}if(Vm(function(){r.state===gl&&(r.state=Ym,r.timer.restart(a,r.delay,r.time),a(u))}),r.state=id,r.on.call("start",t,t.__data__,r.index,r.group),r.state===id){for(r.state=gl,s=new Array(d=r.tween.length),c=0,f=-1;c<d;++c)(g=r.tween[c].value.call(t,t.__data__,r.index,r.group))&&(s[++f]=g);s.length=f+1}}function a(u){for(var c=u<r.duration?r.ease.call(null,u/r.duration):(r.timer.restart(l),r.state=sd,1),f=-1,d=s.length;++f<d;)s[f].call(t,c);r.state===sd&&(r.on.call("end",t,t.__data__,r.index,r.group),l())}function l(){r.state=ml,r.timer.stop(),delete n[e];for(var u in n)return;delete t.__transition}}function bl(t,e){var r=t.__transition,n,s,i=!0,o;if(r){e=e==null?null:e+"";for(o in r){if((n=r[o]).name!==e){i=!1;continue}s=n.state>id&&n.state<sd,n.state=ml,n.timer.stop(),n.on.call(s?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete r[o]}i&&delete t.__transition}}function mM(t){return this.each(function(){bl(this,t)})}function bM(t,e){var r,n;return function(){var s=Yr(this,t),i=s.tween;if(i!==r){n=r=i;for(var o=0,a=n.length;o<a;++o)if(n[o].name===e){n=n.slice(),n.splice(o,1);break}}s.tween=n}}function yM(t,e,r){var n,s;if(typeof r!="function")throw new Error;return function(){var i=Yr(this,t),o=i.tween;if(o!==n){s=(n=o).slice();for(var a={name:e,value:r},l=0,u=s.length;l<u;++l)if(s[l].name===e){s[l]=a;break}l===u&&s.push(a)}i.tween=s}}function wM(t,e){var r=this._id;if(t+="",arguments.length<2){for(var n=Cr(this.node(),r).tween,s=0,i=n.length,o;s<i;++s)if((o=n[s]).name===t)return o.value;return null}return this.each((e==null?bM:yM)(r,t,e))}function Bp(t,e,r){var n=t._id;return t.each(function(){var s=Yr(this,n);(s.value||(s.value={}))[e]=r.apply(this,arguments)}),function(s){return Cr(s,n).value[e]}}function bv(t,e){var r;return(typeof e=="number"?_r:e instanceof Yi?Vl:(r=Yi(e))?(e=r,Vl):cv)(t,e)}function vM(t){return function(){this.removeAttribute(t)}}function _M(t){return function(){this.removeAttributeNS(t.space,t.local)}}function EM(t,e,r){var n,s=r+"",i;return function(){var o=this.getAttribute(t);return o===s?null:o===n?i:i=e(n=o,r)}}function SM(t,e,r){var n,s=r+"",i;return function(){var o=this.getAttributeNS(t.space,t.local);return o===s?null:o===n?i:i=e(n=o,r)}}function TM(t,e,r){var n,s,i;return function(){var o,a=r(this),l;return a==null?void this.removeAttribute(t):(o=this.getAttribute(t),l=a+"",o===l?null:o===n&&l===s?i:(s=l,i=e(n=o,a)))}}function xM(t,e,r){var n,s,i;return function(){var o,a=r(this),l;return a==null?void this.removeAttributeNS(t.space,t.local):(o=this.getAttributeNS(t.space,t.local),l=a+"",o===l?null:o===n&&l===s?i:(s=l,i=e(n=o,a)))}}function AM(t,e){var r=Cu(t),n=r==="transform"?iM:bv;return this.attrTween(t,typeof e=="function"?(r.local?xM:TM)(r,n,Bp(this,"attr."+t,e)):e==null?(r.local?_M:vM)(r):(r.local?SM:EM)(r,n,e))}function CM(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function IM(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function MM(t,e){var r,n;function s(){var i=e.apply(this,arguments);return i!==n&&(r=(n=i)&&IM(t,i)),r}return s._value=e,s}function OM(t,e){var r,n;function s(){var i=e.apply(this,arguments);return i!==n&&(r=(n=i)&&CM(t,i)),r}return s._value=e,s}function RM(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;var n=Cu(t);return this.tween(r,(n.local?MM:OM)(n,e))}function PM(t,e){return function(){Dp(this,t).delay=+e.apply(this,arguments)}}function kM(t,e){return e=+e,function(){Dp(this,t).delay=e}}function LM(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?PM:kM)(e,t)):Cr(this.node(),e).delay}function NM(t,e){return function(){Yr(this,t).duration=+e.apply(this,arguments)}}function DM(t,e){return e=+e,function(){Yr(this,t).duration=e}}function BM(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?NM:DM)(e,t)):Cr(this.node(),e).duration}function $M(t,e){if(typeof e!="function")throw new Error;return function(){Yr(this,t).ease=e}}function FM(t){var e=this._id;return arguments.length?this.each($M(e,t)):Cr(this.node(),e).ease}function UM(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;Yr(this,t).ease=r}}function jM(t){if(typeof t!="function")throw new Error;return this.each(UM(this._id,t))}function WM(t){typeof t!="function"&&(t=Qw(t));for(var e=this._groups,r=e.length,n=new Array(r),s=0;s<r;++s)for(var i=e[s],o=i.length,a=n[s]=[],l,u=0;u<o;++u)(l=i[u])&&t.call(l,l.__data__,u,i)&&a.push(l);return new bn(n,this._parents,this._name,this._id)}function zM(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,s=r.length,i=Math.min(n,s),o=new Array(n),a=0;a<i;++a)for(var l=e[a],u=r[a],c=l.length,f=o[a]=new Array(c),d,g=0;g<c;++g)(d=l[g]||u[g])&&(f[g]=d);for(;a<n;++a)o[a]=e[a];return new bn(o,this._parents,this._name,this._id)}function HM(t){return(t+"").trim().split(/^|\s+/).every(function(e){var r=e.indexOf(".");return r>=0&&(e=e.slice(0,r)),!e||e==="start"})}function VM(t,e,r){var n,s,i=HM(e)?Dp:Yr;return function(){var o=i(this,t),a=o.on;a!==n&&(s=(n=a).copy()).on(e,r),o.on=s}}function qM(t,e){var r=this._id;return arguments.length<2?Cr(this.node(),r).on.on(t):this.each(VM(r,t,e))}function YM(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function GM(){return this.on("end.remove",YM(this._id))}function KM(t){var e=this._name,r=this._id;typeof t!="function"&&(t=Op(t));for(var n=this._groups,s=n.length,i=new Array(s),o=0;o<s;++o)for(var a=n[o],l=a.length,u=i[o]=new Array(l),c,f,d=0;d<l;++d)(c=a[d])&&(f=t.call(c,c.__data__,d,a))&&("__data__"in c&&(f.__data__=c.__data__),u[d]=f,Mu(u[d],e,r,d,u,Cr(c,r)));return new bn(i,this._parents,e,r)}function XM(t){var e=this._name,r=this._id;typeof t!="function"&&(t=Xw(t));for(var n=this._groups,s=n.length,i=[],o=[],a=0;a<s;++a)for(var l=n[a],u=l.length,c,f=0;f<u;++f)if(c=l[f]){for(var d=t.call(c,c.__data__,f,l),g,m=Cr(c,r),y=0,_=d.length;y<_;++y)(g=d[y])&&Mu(g,e,r,y,d,m);i.push(d),o.push(c)}return new bn(i,o,e,r)}var QM=pa.prototype.constructor;function JM(){return new QM(this._groups,this._parents)}function ZM(t,e){var r,n,s;return function(){var i=Ws(this,t),o=(this.style.removeProperty(t),Ws(this,t));return i===o?null:i===r&&o===n?s:s=e(r=i,n=o)}}function yv(t){return function(){this.style.removeProperty(t)}}function eO(t,e,r){var n,s=r+"",i;return function(){var o=Ws(this,t);return o===s?null:o===n?i:i=e(n=o,r)}}function tO(t,e,r){var n,s,i;return function(){var o=Ws(this,t),a=r(this),l=a+"";return a==null&&(l=a=(this.style.removeProperty(t),Ws(this,t))),o===l?null:o===n&&l===s?i:(s=l,i=e(n=o,a))}}function rO(t,e){var r,n,s,i="style."+e,o="end."+i,a;return function(){var l=Yr(this,t),u=l.on,c=l.value[i]==null?a||(a=yv(e)):void 0;(u!==r||s!==c)&&(n=(r=u).copy()).on(o,s=c),l.on=n}}function nO(t,e,r){var n=(t+="")=="transform"?nM:bv;return e==null?this.styleTween(t,ZM(t,n)).on("end.style."+t,yv(t)):typeof e=="function"?this.styleTween(t,tO(t,n,Bp(this,"style."+t,e))).each(rO(this._id,t)):this.styleTween(t,eO(t,n,e),r).on("end.style."+t,null)}function iO(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function sO(t,e,r){var n,s;function i(){var o=e.apply(this,arguments);return o!==s&&(n=(s=o)&&iO(t,o,r)),n}return i._value=e,i}function oO(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;return this.tween(n,sO(t,e,r??""))}function aO(t){return function(){this.textContent=t}}function lO(t){return function(){var e=t(this);this.textContent=e??""}}function uO(t){return this.tween("text",typeof t=="function"?lO(Bp(this,"text",t)):aO(t==null?"":t+""))}function cO(t){return function(e){this.textContent=t.call(this,e)}}function fO(t){var e,r;function n(){var s=t.apply(this,arguments);return s!==r&&(e=(r=s)&&cO(s)),e}return n._value=t,n}function dO(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,fO(t))}function hO(){for(var t=this._name,e=this._id,r=wv(),n=this._groups,s=n.length,i=0;i<s;++i)for(var o=n[i],a=o.length,l,u=0;u<a;++u)if(l=o[u]){var c=Cr(l,e);Mu(l,t,r,u,o,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new bn(n,this._parents,t,r)}function pO(){var t,e,r=this,n=r._id,s=r.size();return new Promise(function(i,o){var a={value:o},l={value:function(){--s===0&&i()}};r.each(function(){var u=Yr(this,n),c=u.on;c!==t&&(e=(t=c).copy(),e._.cancel.push(a),e._.interrupt.push(a),e._.end.push(l)),u.on=e}),s===0&&i()})}var gO=0;function bn(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function wv(){return++gO}var Xr=pa.prototype;bn.prototype={constructor:bn,select:KM,selectAll:XM,selectChild:Xr.selectChild,selectChildren:Xr.selectChildren,filter:WM,merge:zM,selection:JM,transition:hO,call:Xr.call,nodes:Xr.nodes,node:Xr.node,size:Xr.size,empty:Xr.empty,each:Xr.each,on:qM,attr:AM,attrTween:RM,style:nO,styleTween:oO,text:uO,textTween:dO,remove:GM,tween:wM,delay:LM,duration:BM,ease:FM,easeVarying:jM,end:pO,[Symbol.iterator]:Xr[Symbol.iterator]};const o4=t=>+t;function mO(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var bO={time:null,delay:0,duration:250,ease:mO};function yO(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function wO(t){var e,r;t instanceof bn?(e=t._id,t=t._name):(e=wv(),(r=bO).time=Np(),t=t==null?null:t+"");for(var n=this._groups,s=n.length,i=0;i<s;++i)for(var o=n[i],a=o.length,l,u=0;u<a;++u)(l=o[u])&&Mu(l,t,e,u,o,r||yO(l,e));return new bn(n,this._parents,t,e)}pa.prototype.interrupt=mM;pa.prototype.transition=wO;const od=Math.PI,ad=2*od,Ei=1e-6,vO=ad-Ei;function vv(t){this._+=t[0];for(let e=1,r=t.length;e<r;++e)this._+=arguments[e]+t[e]}function _O(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return vv;const r=10**e;return function(n){this._+=n[0];for(let s=1,i=n.length;s<i;++s)this._+=Math.round(arguments[s]*r)/r+n[s]}}class EO{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?vv:_O(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,s){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+s}`}bezierCurveTo(e,r,n,s,i,o){this._append`C${+e},${+r},${+n},${+s},${this._x1=+i},${this._y1=+o}`}arcTo(e,r,n,s,i){if(e=+e,r=+r,n=+n,s=+s,i=+i,i<0)throw new Error(`negative radius: ${i}`);let o=this._x1,a=this._y1,l=n-e,u=s-r,c=o-e,f=a-r,d=c*c+f*f;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(d>Ei)if(!(Math.abs(f*l-u*c)>Ei)||!i)this._append`L${this._x1=e},${this._y1=r}`;else{let g=n-o,m=s-a,y=l*l+u*u,_=g*g+m*m,S=Math.sqrt(y),E=Math.sqrt(d),v=i*Math.tan((od-Math.acos((y+d-_)/(2*S*E)))/2),x=v/E,M=v/S;Math.abs(x-1)>Ei&&this._append`L${e+x*c},${r+x*f}`,this._append`A${i},${i},0,0,${+(f*g>c*m)},${this._x1=e+M*l},${this._y1=r+M*u}`}}arc(e,r,n,s,i,o){if(e=+e,r=+r,n=+n,o=!!o,n<0)throw new Error(`negative radius: ${n}`);let a=n*Math.cos(s),l=n*Math.sin(s),u=e+a,c=r+l,f=1^o,d=o?s-i:i-s;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>Ei||Math.abs(this._y1-c)>Ei)&&this._append`L${u},${c}`,n&&(d<0&&(d=d%ad+ad),d>vO?this._append`A${n},${n},0,1,${f},${e-a},${r-l}A${n},${n},0,1,${f},${this._x1=u},${this._y1=c}`:d>Ei&&this._append`A${n},${n},0,${+(d>=od)},${f},${this._x1=e+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(e,r,n,s){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+s}h${-n}Z`}toString(){return this._}}function SO(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Kl(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function Hs(t){return t=Kl(Math.abs(t)),t?t[1]:NaN}function TO(t,e){return function(r,n){for(var s=r.length,i=[],o=0,a=t[0],l=0;s>0&&a>0&&(l+a+1>n&&(a=Math.max(1,n-l)),i.push(r.substring(s-=a,s+a)),!((l+=a+1)>n));)a=t[o=(o+1)%t.length];return i.reverse().join(e)}}function xO(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var AO=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Xl(t){if(!(e=AO.exec(t)))throw new Error("invalid format: "+t);var e;return new $p({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Xl.prototype=$p.prototype;function $p(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}$p.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function CO(t){e:for(var e=t.length,r=1,n=-1,s;r<e;++r)switch(t[r]){case".":n=s=r;break;case"0":n===0&&(n=r),s=r;break;default:if(!+t[r])break e;n>0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(s+1):t}var _v;function IO(t,e){var r=Kl(t,e);if(!r)return t+"";var n=r[0],s=r[1],i=s-(_v=Math.max(-8,Math.min(8,Math.floor(s/3)))*3)+1,o=n.length;return i===o?n:i>o?n+new Array(i-o+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+Kl(t,Math.max(0,e+i-1))[0]}function Gm(t,e){var r=Kl(t,e);if(!r)return t+"";var n=r[0],s=r[1];return s<0?"0."+new Array(-s).join("0")+n:n.length>s+1?n.slice(0,s+1)+"."+n.slice(s+1):n+new Array(s-n.length+2).join("0")}const Km={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:SO,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Gm(t*100,e),r:Gm,s:IO,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Xm(t){return t}var Qm=Array.prototype.map,Jm=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function MO(t){var e=t.grouping===void 0||t.thousands===void 0?Xm:TO(Qm.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",s=t.decimal===void 0?".":t.decimal+"",i=t.numerals===void 0?Xm:xO(Qm.call(t.numerals,String)),o=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"−":t.minus+"",l=t.nan===void 0?"NaN":t.nan+"";function u(f){f=Xl(f);var d=f.fill,g=f.align,m=f.sign,y=f.symbol,_=f.zero,S=f.width,E=f.comma,v=f.precision,x=f.trim,M=f.type;M==="n"?(E=!0,M="g"):Km[M]||(v===void 0&&(v=12),x=!0,M="g"),(_||d==="0"&&g==="=")&&(_=!0,d="0",g="=");var A=y==="$"?r:y==="#"&&/[boxX]/.test(M)?"0"+M.toLowerCase():"",L=y==="$"?n:/[%p]/.test(M)?o:"",D=Km[M],B=/[defgprs%]/.test(M);v=v===void 0?6:/[gprs]/.test(M)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function q(Y){var R=A,I=L,N,W,G;if(M==="c")I=D(Y)+I,Y="";else{Y=+Y;var H=Y<0||1/Y<0;if(Y=isNaN(Y)?l:D(Math.abs(Y),v),x&&(Y=CO(Y)),H&&+Y==0&&m!=="+"&&(H=!1),R=(H?m==="("?m:a:m==="-"||m==="("?"":m)+R,I=(M==="s"?Jm[8+_v/3]:"")+I+(H&&m==="("?")":""),B){for(N=-1,W=Y.length;++N<W;)if(G=Y.charCodeAt(N),48>G||G>57){I=(G===46?s+Y.slice(N+1):Y.slice(N))+I,Y=Y.slice(0,N);break}}}E&&!_&&(Y=e(Y,1/0));var $=R.length+Y.length+I.length,ne=$<S?new Array(S-$+1).join(d):"";switch(E&&_&&(Y=e(ne+Y,ne.length?S-I.length:1/0),ne=""),g){case"<":Y=R+Y+I+ne;break;case"=":Y=R+ne+Y+I;break;case"^":Y=ne.slice(0,$=ne.length>>1)+R+Y+I+ne.slice($);break;default:Y=ne+R+Y+I;break}return i(Y)}return q.toString=function(){return f+""},q}function c(f,d){var g=u((f=Xl(f),f.type="f",f)),m=Math.max(-8,Math.min(8,Math.floor(Hs(d)/3)))*3,y=Math.pow(10,-m),_=Jm[8+m/3];return function(S){return g(y*S)+_}}return{format:u,formatPrefix:c}}var Fa,Ev,Sv;OO({thousands:",",grouping:[3],currency:["$",""]});function OO(t){return Fa=MO(t),Ev=Fa.format,Sv=Fa.formatPrefix,Fa}function RO(t){return Math.max(0,-Hs(Math.abs(t)))}function PO(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Hs(e)/3)))*3-Hs(Math.abs(t)))}function kO(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Hs(e)-Hs(t))+1}function ma(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}const Zm=Symbol("implicit");function Tv(){var t=new Mm,e=[],r=[],n=Zm;function s(i){let o=t.get(i);if(o===void 0){if(n!==Zm)return n;t.set(i,o=e.push(i)-1)}return r[o%r.length]}return s.domain=function(i){if(!arguments.length)return e.slice();e=[],t=new Mm;for(const o of i)t.has(o)||t.set(o,e.push(o)-1);return s},s.range=function(i){return arguments.length?(r=Array.from(i),s):r.slice()},s.unknown=function(i){return arguments.length?(n=i,s):n},s.copy=function(){return Tv(e,r).unknown(n)},ma.apply(s,arguments),s}function LO(){var t=Tv().unknown(void 0),e=t.domain,r=t.range,n=0,s=1,i,o,a=!1,l=0,u=0,c=.5;delete t.unknown;function f(){var d=e().length,g=s<n,m=g?s:n,y=g?n:s;i=(y-m)/Math.max(1,d-l+u*2),a&&(i=Math.floor(i)),m+=(y-m-i*(d-l))*c,o=i*(1-l),a&&(m=Math.round(m),o=Math.round(o));var _=jA(d).map(function(S){return m+i*S});return r(g?_.reverse():_)}return t.domain=function(d){return arguments.length?(e(d),f()):e()},t.range=function(d){return arguments.length?([n,s]=d,n=+n,s=+s,f()):[n,s]},t.rangeRound=function(d){return[n,s]=d,n=+n,s=+s,a=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(d){return arguments.length?(a=!!d,f()):a},t.padding=function(d){return arguments.length?(l=Math.min(1,u=+d),f()):l},t.paddingInner=function(d){return arguments.length?(l=Math.min(1,d),f()):l},t.paddingOuter=function(d){return arguments.length?(u=+d,f()):u},t.align=function(d){return arguments.length?(c=Math.max(0,Math.min(1,d)),f()):c},t.copy=function(){return LO(e(),[n,s]).round(a).paddingInner(l).paddingOuter(u).align(c)},ma.apply(f(),arguments)}function NO(t){return function(){return t}}function DO(t){return+t}var e0=[0,1];function As(t){return t}function ld(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:NO(isNaN(e)?NaN:.5)}function BO(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function $O(t,e,r){var n=t[0],s=t[1],i=e[0],o=e[1];return s<n?(n=ld(s,n),i=r(o,i)):(n=ld(n,s),i=r(i,o)),function(a){return i(n(a))}}function FO(t,e,r){var n=Math.min(t.length,e.length)-1,s=new Array(n),i=new Array(n),o=-1;for(t[n]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++o<n;)s[o]=ld(t[o],t[o+1]),i[o]=r(e[o],e[o+1]);return function(a){var l=kA(t,a,1,n)-1;return i[l](s[l](a))}}function xv(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function UO(){var t=e0,e=e0,r=Lp,n,s,i,o=As,a,l,u;function c(){var d=Math.min(t.length,e.length);return o!==As&&(o=BO(t[0],t[d-1])),a=d>2?FO:$O,l=u=null,f}function f(d){return d==null||isNaN(d=+d)?i:(l||(l=a(t.map(n),e,r)))(n(o(d)))}return f.invert=function(d){return o(s((u||(u=a(e,t.map(n),_r)))(d)))},f.domain=function(d){return arguments.length?(t=Array.from(d,DO),c()):t.slice()},f.range=function(d){return arguments.length?(e=Array.from(d),c()):e.slice()},f.rangeRound=function(d){return e=Array.from(d),r=eM,c()},f.clamp=function(d){return arguments.length?(o=d?!0:As,c()):o!==As},f.interpolate=function(d){return arguments.length?(r=d,c()):r},f.unknown=function(d){return arguments.length?(i=d,f):i},function(d,g){return n=d,s=g,c()}}function Av(){return UO()(As,As)}function jO(t,e,r,n){var s=Kf(t,e,r),i;switch(n=Xl(n??",f"),n.type){case"s":{var o=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(i=PO(s,o))&&(n.precision=i),Sv(n,o)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=kO(s,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=RO(s))&&(n.precision=i-(n.type==="%")*2);break}}return Ev(n)}function WO(t){var e=t.domain;return t.ticks=function(r){var n=e();return UA(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var s=e();return jO(s[0],s[s.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),s=0,i=n.length-1,o=n[s],a=n[i],l,u,c=10;for(a<o&&(u=o,o=a,a=u,u=s,s=i,i=u);c-- >0;){if(u=Gf(o,a,r),u===l)return n[s]=o,n[i]=a,e(n);if(u>0)o=Math.floor(o/u)*u,a=Math.ceil(a/u)*u;else if(u<0)o=Math.ceil(o*u)/u,a=Math.floor(a*u)/u;else break;l=u}return t},t}function zO(){var t=Av();return t.copy=function(){return xv(t,zO())},ma.apply(t,arguments),WO(t)}function HO(t,e){t=t.slice();var r=0,n=t.length-1,s=t[r],i=t[n],o;return i<s&&(o=r,r=n,n=o,o=s,s=i,i=o),t[r]=e.floor(s),t[n]=e.ceil(i),t}const xc=new Date,Ac=new Date;function pt(t,e,r,n){function s(i){return t(i=arguments.length===0?new Date:new Date(+i)),i}return s.floor=i=>(t(i=new Date(+i)),i),s.ceil=i=>(t(i=new Date(i-1)),e(i,1),t(i),i),s.round=i=>{const o=s(i),a=s.ceil(i);return i-o<a-i?o:a},s.offset=(i,o)=>(e(i=new Date(+i),o==null?1:Math.floor(o)),i),s.range=(i,o,a)=>{const l=[];if(i=s.ceil(i),a=a==null?1:Math.floor(a),!(i<o)||!(a>0))return l;let u;do l.push(u=new Date(+i)),e(i,a),t(i);while(u<i&&i<o);return l},s.filter=i=>pt(o=>{if(o>=o)for(;t(o),!i(o);)o.setTime(o-1)},(o,a)=>{if(o>=o)if(a<0)for(;++a<=0;)for(;e(o,-1),!i(o););else for(;--a>=0;)for(;e(o,1),!i(o););}),r&&(s.count=(i,o)=>(xc.setTime(+i),Ac.setTime(+o),t(xc),t(Ac),Math.floor(r(xc,Ac))),s.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?s.filter(n?o=>n(o)%i===0:o=>s.count(0,o)%i===0):s)),s}const Ql=pt(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);Ql.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?pt(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):Ql);Ql.range;const on=1e3,ur=on*60,an=ur*60,yn=an*24,Fp=yn*7,t0=yn*30,Cc=yn*365,Mi=pt(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*on)},(t,e)=>(e-t)/on,t=>t.getUTCSeconds());Mi.range;const Up=pt(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*on)},(t,e)=>{t.setTime(+t+e*ur)},(t,e)=>(e-t)/ur,t=>t.getMinutes());Up.range;const jp=pt(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*ur)},(t,e)=>(e-t)/ur,t=>t.getUTCMinutes());jp.range;const Wp=pt(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*on-t.getMinutes()*ur)},(t,e)=>{t.setTime(+t+e*an)},(t,e)=>(e-t)/an,t=>t.getHours());Wp.range;const zp=pt(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*an)},(t,e)=>(e-t)/an,t=>t.getUTCHours());zp.range;const ba=pt(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*ur)/yn,t=>t.getDate()-1);ba.range;const Ou=pt(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/yn,t=>t.getUTCDate()-1);Ou.range;const Cv=pt(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/yn,t=>Math.floor(t/yn));Cv.range;function es(t){return pt(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*ur)/Fp)}const Ru=es(0),Jl=es(1),VO=es(2),qO=es(3),Vs=es(4),YO=es(5),GO=es(6);Ru.range;Jl.range;VO.range;qO.range;Vs.range;YO.range;GO.range;function ts(t){return pt(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/Fp)}const Pu=ts(0),Zl=ts(1),KO=ts(2),XO=ts(3),qs=ts(4),QO=ts(5),JO=ts(6);Pu.range;Zl.range;KO.range;XO.range;qs.range;QO.range;JO.range;const Hp=pt(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth());Hp.range;const Vp=pt(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth());Vp.range;const wn=pt(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());wn.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:pt(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});wn.range;const vn=pt(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());vn.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:pt(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});vn.range;function Iv(t,e,r,n,s,i){const o=[[Mi,1,on],[Mi,5,5*on],[Mi,15,15*on],[Mi,30,30*on],[i,1,ur],[i,5,5*ur],[i,15,15*ur],[i,30,30*ur],[s,1,an],[s,3,3*an],[s,6,6*an],[s,12,12*an],[n,1,yn],[n,2,2*yn],[r,1,Fp],[e,1,t0],[e,3,3*t0],[t,1,Cc]];function a(u,c,f){const d=c<u;d&&([u,c]=[c,u]);const g=f&&typeof f.range=="function"?f:l(u,c,f),m=g?g.range(u,+c+1):[];return d?m.reverse():m}function l(u,c,f){const d=Math.abs(c-u)/f,g=Ip(([,,_])=>_).right(o,d);if(g===o.length)return t.every(Kf(u/Cc,c/Cc,f));if(g===0)return Ql.every(Math.max(Kf(u,c,f),1));const[m,y]=o[d/o[g-1][2]<o[g][2]/d?g-1:g];return m.every(y)}return[a,l]}const[ZO,eR]=Iv(vn,Vp,Pu,Cv,zp,jp),[tR,rR]=Iv(wn,Hp,Ru,ba,Wp,Up);function Ic(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Mc(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function vo(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function nR(t){var e=t.dateTime,r=t.date,n=t.time,s=t.periods,i=t.days,o=t.shortDays,a=t.months,l=t.shortMonths,u=_o(s),c=Eo(s),f=_o(i),d=Eo(i),g=_o(o),m=Eo(o),y=_o(a),_=Eo(a),S=_o(l),E=Eo(l),v={a:H,A:$,b:ne,B:ue,c:null,d:a0,e:a0,f:AR,g:DR,G:$R,H:SR,I:TR,j:xR,L:Mv,m:CR,M:IR,p:re,q:k,Q:c0,s:f0,S:MR,u:OR,U:RR,V:PR,w:kR,W:LR,x:null,X:null,y:NR,Y:BR,Z:FR,"%":u0},x={a:Q,A:de,b:ge,B:me,c:null,d:l0,e:l0,f:zR,g:ZR,G:tP,H:UR,I:jR,j:WR,L:Rv,m:HR,M:VR,p:X,q:K,Q:c0,s:f0,S:qR,u:YR,U:GR,V:KR,w:XR,W:QR,x:null,X:null,y:JR,Y:eP,Z:rP,"%":u0},M={a:q,A:Y,b:R,B:I,c:N,d:s0,e:s0,f:wR,g:i0,G:n0,H:o0,I:o0,j:gR,L:yR,m:pR,M:mR,p:B,q:hR,Q:_R,s:ER,S:bR,u:lR,U:uR,V:cR,w:aR,W:fR,x:W,X:G,y:i0,Y:n0,Z:dR,"%":vR};v.x=A(r,v),v.X=A(n,v),v.c=A(e,v),x.x=A(r,x),x.X=A(n,x),x.c=A(e,x);function A(ie,be){return function(he){var ce=[],C=-1,P=0,O=ie.length,j,z,oe;for(he instanceof Date||(he=new Date(+he));++C<O;)ie.charCodeAt(C)===37&&(ce.push(ie.slice(P,C)),(z=r0[j=ie.charAt(++C)])!=null?j=ie.charAt(++C):z=j==="e"?" ":"0",(oe=be[j])&&(j=oe(he,z)),ce.push(j),P=C+1);return ce.push(ie.slice(P,C)),ce.join("")}}function L(ie,be){return function(he){var ce=vo(1900,void 0,1),C=D(ce,ie,he+="",0),P,O;if(C!=he.length)return null;if("Q"in ce)return new Date(ce.Q);if("s"in ce)return new Date(ce.s*1e3+("L"in ce?ce.L:0));if(be&&!("Z"in ce)&&(ce.Z=0),"p"in ce&&(ce.H=ce.H%12+ce.p*12),ce.m===void 0&&(ce.m="q"in ce?ce.q:0),"V"in ce){if(ce.V<1||ce.V>53)return null;"w"in ce||(ce.w=1),"Z"in ce?(P=Mc(vo(ce.y,0,1)),O=P.getUTCDay(),P=O>4||O===0?Zl.ceil(P):Zl(P),P=Ou.offset(P,(ce.V-1)*7),ce.y=P.getUTCFullYear(),ce.m=P.getUTCMonth(),ce.d=P.getUTCDate()+(ce.w+6)%7):(P=Ic(vo(ce.y,0,1)),O=P.getDay(),P=O>4||O===0?Jl.ceil(P):Jl(P),P=ba.offset(P,(ce.V-1)*7),ce.y=P.getFullYear(),ce.m=P.getMonth(),ce.d=P.getDate()+(ce.w+6)%7)}else("W"in ce||"U"in ce)&&("w"in ce||(ce.w="u"in ce?ce.u%7:"W"in ce?1:0),O="Z"in ce?Mc(vo(ce.y,0,1)).getUTCDay():Ic(vo(ce.y,0,1)).getDay(),ce.m=0,ce.d="W"in ce?(ce.w+6)%7+ce.W*7-(O+5)%7:ce.w+ce.U*7-(O+6)%7);return"Z"in ce?(ce.H+=ce.Z/100|0,ce.M+=ce.Z%100,Mc(ce)):Ic(ce)}}function D(ie,be,he,ce){for(var C=0,P=be.length,O=he.length,j,z;C<P;){if(ce>=O)return-1;if(j=be.charCodeAt(C++),j===37){if(j=be.charAt(C++),z=M[j in r0?be.charAt(C++):j],!z||(ce=z(ie,he,ce))<0)return-1}else if(j!=he.charCodeAt(ce++))return-1}return ce}function B(ie,be,he){var ce=u.exec(be.slice(he));return ce?(ie.p=c.get(ce[0].toLowerCase()),he+ce[0].length):-1}function q(ie,be,he){var ce=g.exec(be.slice(he));return ce?(ie.w=m.get(ce[0].toLowerCase()),he+ce[0].length):-1}function Y(ie,be,he){var ce=f.exec(be.slice(he));return ce?(ie.w=d.get(ce[0].toLowerCase()),he+ce[0].length):-1}function R(ie,be,he){var ce=S.exec(be.slice(he));return ce?(ie.m=E.get(ce[0].toLowerCase()),he+ce[0].length):-1}function I(ie,be,he){var ce=y.exec(be.slice(he));return ce?(ie.m=_.get(ce[0].toLowerCase()),he+ce[0].length):-1}function N(ie,be,he){return D(ie,e,be,he)}function W(ie,be,he){return D(ie,r,be,he)}function G(ie,be,he){return D(ie,n,be,he)}function H(ie){return o[ie.getDay()]}function $(ie){return i[ie.getDay()]}function ne(ie){return l[ie.getMonth()]}function ue(ie){return a[ie.getMonth()]}function re(ie){return s[+(ie.getHours()>=12)]}function k(ie){return 1+~~(ie.getMonth()/3)}function Q(ie){return o[ie.getUTCDay()]}function de(ie){return i[ie.getUTCDay()]}function ge(ie){return l[ie.getUTCMonth()]}function me(ie){return a[ie.getUTCMonth()]}function X(ie){return s[+(ie.getUTCHours()>=12)]}function K(ie){return 1+~~(ie.getUTCMonth()/3)}return{format:function(ie){var be=A(ie+="",v);return be.toString=function(){return ie},be},parse:function(ie){var be=L(ie+="",!1);return be.toString=function(){return ie},be},utcFormat:function(ie){var be=A(ie+="",x);return be.toString=function(){return ie},be},utcParse:function(ie){var be=L(ie+="",!0);return be.toString=function(){return ie},be}}}var r0={"-":"",_:" ",0:"0"},mt=/^\s*\d+/,iR=/^%/,sR=/[\\^$*+?|[\]().{}]/g;function We(t,e,r){var n=t<0?"-":"",s=(n?-t:t)+"",i=s.length;return n+(i<r?new Array(r-i+1).join(e)+s:s)}function oR(t){return t.replace(sR,"\\$&")}function _o(t){return new RegExp("^(?:"+t.map(oR).join("|")+")","i")}function Eo(t){return new Map(t.map((e,r)=>[e.toLowerCase(),r]))}function aR(t,e,r){var n=mt.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function lR(t,e,r){var n=mt.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function uR(t,e,r){var n=mt.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function cR(t,e,r){var n=mt.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function fR(t,e,r){var n=mt.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function n0(t,e,r){var n=mt.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function i0(t,e,r){var n=mt.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function dR(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function hR(t,e,r){var n=mt.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function pR(t,e,r){var n=mt.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function s0(t,e,r){var n=mt.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function gR(t,e,r){var n=mt.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function o0(t,e,r){var n=mt.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function mR(t,e,r){var n=mt.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function bR(t,e,r){var n=mt.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function yR(t,e,r){var n=mt.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function wR(t,e,r){var n=mt.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function vR(t,e,r){var n=iR.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function _R(t,e,r){var n=mt.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function ER(t,e,r){var n=mt.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function a0(t,e){return We(t.getDate(),e,2)}function SR(t,e){return We(t.getHours(),e,2)}function TR(t,e){return We(t.getHours()%12||12,e,2)}function xR(t,e){return We(1+ba.count(wn(t),t),e,3)}function Mv(t,e){return We(t.getMilliseconds(),e,3)}function AR(t,e){return Mv(t,e)+"000"}function CR(t,e){return We(t.getMonth()+1,e,2)}function IR(t,e){return We(t.getMinutes(),e,2)}function MR(t,e){return We(t.getSeconds(),e,2)}function OR(t){var e=t.getDay();return e===0?7:e}function RR(t,e){return We(Ru.count(wn(t)-1,t),e,2)}function Ov(t){var e=t.getDay();return e>=4||e===0?Vs(t):Vs.ceil(t)}function PR(t,e){return t=Ov(t),We(Vs.count(wn(t),t)+(wn(t).getDay()===4),e,2)}function kR(t){return t.getDay()}function LR(t,e){return We(Jl.count(wn(t)-1,t),e,2)}function NR(t,e){return We(t.getFullYear()%100,e,2)}function DR(t,e){return t=Ov(t),We(t.getFullYear()%100,e,2)}function BR(t,e){return We(t.getFullYear()%1e4,e,4)}function $R(t,e){var r=t.getDay();return t=r>=4||r===0?Vs(t):Vs.ceil(t),We(t.getFullYear()%1e4,e,4)}function FR(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+We(e/60|0,"0",2)+We(e%60,"0",2)}function l0(t,e){return We(t.getUTCDate(),e,2)}function UR(t,e){return We(t.getUTCHours(),e,2)}function jR(t,e){return We(t.getUTCHours()%12||12,e,2)}function WR(t,e){return We(1+Ou.count(vn(t),t),e,3)}function Rv(t,e){return We(t.getUTCMilliseconds(),e,3)}function zR(t,e){return Rv(t,e)+"000"}function HR(t,e){return We(t.getUTCMonth()+1,e,2)}function VR(t,e){return We(t.getUTCMinutes(),e,2)}function qR(t,e){return We(t.getUTCSeconds(),e,2)}function YR(t){var e=t.getUTCDay();return e===0?7:e}function GR(t,e){return We(Pu.count(vn(t)-1,t),e,2)}function Pv(t){var e=t.getUTCDay();return e>=4||e===0?qs(t):qs.ceil(t)}function KR(t,e){return t=Pv(t),We(qs.count(vn(t),t)+(vn(t).getUTCDay()===4),e,2)}function XR(t){return t.getUTCDay()}function QR(t,e){return We(Zl.count(vn(t)-1,t),e,2)}function JR(t,e){return We(t.getUTCFullYear()%100,e,2)}function ZR(t,e){return t=Pv(t),We(t.getUTCFullYear()%100,e,2)}function eP(t,e){return We(t.getUTCFullYear()%1e4,e,4)}function tP(t,e){var r=t.getUTCDay();return t=r>=4||r===0?qs(t):qs.ceil(t),We(t.getUTCFullYear()%1e4,e,4)}function rP(){return"+0000"}function u0(){return"%"}function c0(t){return+t}function f0(t){return Math.floor(+t/1e3)}var gs,kv,nP,Lv;iP({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function iP(t){return gs=nR(t),kv=gs.format,nP=gs.parse,Lv=gs.utcFormat,gs.utcParse,gs}function sP(t){return new Date(t)}function oP(t){return t instanceof Date?+t:+new Date(+t)}function qp(t,e,r,n,s,i,o,a,l,u){var c=Av(),f=c.invert,d=c.domain,g=u(".%L"),m=u(":%S"),y=u("%I:%M"),_=u("%I %p"),S=u("%a %d"),E=u("%b %d"),v=u("%B"),x=u("%Y");function M(A){return(l(A)<A?g:a(A)<A?m:o(A)<A?y:i(A)<A?_:n(A)<A?s(A)<A?S:E:r(A)<A?v:x)(A)}return c.invert=function(A){return new Date(f(A))},c.domain=function(A){return arguments.length?d(Array.from(A,oP)):d().map(sP)},c.ticks=function(A){var L=d();return t(L[0],L[L.length-1],A??10)},c.tickFormat=function(A,L){return L==null?M:u(L)},c.nice=function(A){var L=d();return(!A||typeof A.range!="function")&&(A=e(L[0],L[L.length-1],A??10)),A?d(HO(L,A)):c},c.copy=function(){return xv(c,qp(t,e,r,n,s,i,o,a,l,u))},c}function a4(){return ma.apply(qp(tR,rR,wn,Hp,Ru,ba,Wp,Up,Mi,kv).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function l4(){return ma.apply(qp(ZO,eR,vn,Vp,Pu,Ou,zp,jp,Mi,Lv).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Fe(t){return function(){return t}}const d0=Math.abs,At=Math.atan2,pi=Math.cos,aP=Math.max,Oc=Math.min,Or=Math.sin,Cs=Math.sqrt,$t=1e-12,aa=Math.PI,eu=aa/2,yl=2*aa;function lP(t){return t>1?0:t<-1?aa:Math.acos(t)}function h0(t){return t>=1?eu:t<=-1?-eu:Math.asin(t)}function Yp(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new EO(e)}function uP(t){return t.innerRadius}function cP(t){return t.outerRadius}function fP(t){return t.startAngle}function dP(t){return t.endAngle}function hP(t){return t&&t.padAngle}function pP(t,e,r,n,s,i,o,a){var l=r-t,u=n-e,c=o-s,f=a-i,d=f*l-c*u;if(!(d*d<$t))return d=(c*(e-i)-f*(t-s))/d,[t+d*l,e+d*u]}function Ua(t,e,r,n,s,i,o){var a=t-r,l=e-n,u=(o?i:-i)/Cs(a*a+l*l),c=u*l,f=-u*a,d=t+c,g=e+f,m=r+c,y=n+f,_=(d+m)/2,S=(g+y)/2,E=m-d,v=y-g,x=E*E+v*v,M=s-i,A=d*y-m*g,L=(v<0?-1:1)*Cs(aP(0,M*M*x-A*A)),D=(A*v-E*L)/x,B=(-A*E-v*L)/x,q=(A*v+E*L)/x,Y=(-A*E+v*L)/x,R=D-_,I=B-S,N=q-_,W=Y-S;return R*R+I*I>N*N+W*W&&(D=q,B=Y),{cx:D,cy:B,x01:-c,y01:-f,x11:D*(s/M-1),y11:B*(s/M-1)}}function u4(){var t=uP,e=cP,r=Fe(0),n=null,s=fP,i=dP,o=hP,a=null,l=Yp(u);function u(){var c,f,d=+t.apply(this,arguments),g=+e.apply(this,arguments),m=s.apply(this,arguments)-eu,y=i.apply(this,arguments)-eu,_=d0(y-m),S=y>m;if(a||(a=c=l()),g<d&&(f=g,g=d,d=f),!(g>$t))a.moveTo(0,0);else if(_>yl-$t)a.moveTo(g*pi(m),g*Or(m)),a.arc(0,0,g,m,y,!S),d>$t&&(a.moveTo(d*pi(y),d*Or(y)),a.arc(0,0,d,y,m,S));else{var E=m,v=y,x=m,M=y,A=_,L=_,D=o.apply(this,arguments)/2,B=D>$t&&(n?+n.apply(this,arguments):Cs(d*d+g*g)),q=Oc(d0(g-d)/2,+r.apply(this,arguments)),Y=q,R=q,I,N;if(B>$t){var W=h0(B/d*Or(D)),G=h0(B/g*Or(D));(A-=W*2)>$t?(W*=S?1:-1,x+=W,M-=W):(A=0,x=M=(m+y)/2),(L-=G*2)>$t?(G*=S?1:-1,E+=G,v-=G):(L=0,E=v=(m+y)/2)}var H=g*pi(E),$=g*Or(E),ne=d*pi(M),ue=d*Or(M);if(q>$t){var re=g*pi(v),k=g*Or(v),Q=d*pi(x),de=d*Or(x),ge;if(_<aa)if(ge=pP(H,$,Q,de,re,k,ne,ue)){var me=H-ge[0],X=$-ge[1],K=re-ge[0],ie=k-ge[1],be=1/Or(lP((me*K+X*ie)/(Cs(me*me+X*X)*Cs(K*K+ie*ie)))/2),he=Cs(ge[0]*ge[0]+ge[1]*ge[1]);Y=Oc(q,(d-he)/(be-1)),R=Oc(q,(g-he)/(be+1))}else Y=R=0}L>$t?R>$t?(I=Ua(Q,de,H,$,g,R,S),N=Ua(re,k,ne,ue,g,R,S),a.moveTo(I.cx+I.x01,I.cy+I.y01),R<q?a.arc(I.cx,I.cy,R,At(I.y01,I.x01),At(N.y01,N.x01),!S):(a.arc(I.cx,I.cy,R,At(I.y01,I.x01),At(I.y11,I.x11),!S),a.arc(0,0,g,At(I.cy+I.y11,I.cx+I.x11),At(N.cy+N.y11,N.cx+N.x11),!S),a.arc(N.cx,N.cy,R,At(N.y11,N.x11),At(N.y01,N.x01),!S))):(a.moveTo(H,$),a.arc(0,0,g,E,v,!S)):a.moveTo(H,$),!(d>$t)||!(A>$t)?a.lineTo(ne,ue):Y>$t?(I=Ua(ne,ue,re,k,d,-Y,S),N=Ua(H,$,Q,de,d,-Y,S),a.lineTo(I.cx+I.x01,I.cy+I.y01),Y<q?a.arc(I.cx,I.cy,Y,At(I.y01,I.x01),At(N.y01,N.x01),!S):(a.arc(I.cx,I.cy,Y,At(I.y01,I.x01),At(I.y11,I.x11),!S),a.arc(0,0,d,At(I.cy+I.y11,I.cx+I.x11),At(N.cy+N.y11,N.cx+N.x11),S),a.arc(N.cx,N.cy,Y,At(N.y11,N.x11),At(N.y01,N.x01),!S))):a.arc(0,0,d,M,x,S)}if(a.closePath(),c)return a=null,c+""||null}return u.centroid=function(){var c=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,f=(+s.apply(this,arguments)+ +i.apply(this,arguments))/2-aa/2;return[pi(f)*c,Or(f)*c]},u.innerRadius=function(c){return arguments.length?(t=typeof c=="function"?c:Fe(+c),u):t},u.outerRadius=function(c){return arguments.length?(e=typeof c=="function"?c:Fe(+c),u):e},u.cornerRadius=function(c){return arguments.length?(r=typeof c=="function"?c:Fe(+c),u):r},u.padRadius=function(c){return arguments.length?(n=c==null?null:typeof c=="function"?c:Fe(+c),u):n},u.startAngle=function(c){return arguments.length?(s=typeof c=="function"?c:Fe(+c),u):s},u.endAngle=function(c){return arguments.length?(i=typeof c=="function"?c:Fe(+c),u):i},u.padAngle=function(c){return arguments.length?(o=typeof c=="function"?c:Fe(+c),u):o},u.context=function(c){return arguments.length?(a=c??null,u):a},u}function ku(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Nv(t){this._context=t}Nv.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function Dv(t){return new Nv(t)}function Bv(t){return t[0]}function $v(t){return t[1]}function gP(t,e){var r=Fe(!0),n=null,s=Dv,i=null,o=Yp(a);t=typeof t=="function"?t:t===void 0?Bv:Fe(t),e=typeof e=="function"?e:e===void 0?$v:Fe(e);function a(l){var u,c=(l=ku(l)).length,f,d=!1,g;for(n==null&&(i=s(g=o())),u=0;u<=c;++u)!(u<c&&r(f=l[u],u,l))===d&&((d=!d)?i.lineStart():i.lineEnd()),d&&i.point(+t(f,u,l),+e(f,u,l));if(g)return i=null,g+""||null}return a.x=function(l){return arguments.length?(t=typeof l=="function"?l:Fe(+l),a):t},a.y=function(l){return arguments.length?(e=typeof l=="function"?l:Fe(+l),a):e},a.defined=function(l){return arguments.length?(r=typeof l=="function"?l:Fe(!!l),a):r},a.curve=function(l){return arguments.length?(s=l,n!=null&&(i=s(n)),a):s},a.context=function(l){return arguments.length?(l==null?n=i=null:i=s(n=l),a):n},a}function c4(t,e,r){var n=null,s=Fe(!0),i=null,o=Dv,a=null,l=Yp(u);t=typeof t=="function"?t:t===void 0?Bv:Fe(+t),e=typeof e=="function"?e:Fe(e===void 0?0:+e),r=typeof r=="function"?r:r===void 0?$v:Fe(+r);function u(f){var d,g,m,y=(f=ku(f)).length,_,S=!1,E,v=new Array(y),x=new Array(y);for(i==null&&(a=o(E=l())),d=0;d<=y;++d){if(!(d<y&&s(_=f[d],d,f))===S)if(S=!S)g=d,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),m=d-1;m>=g;--m)a.point(v[m],x[m]);a.lineEnd(),a.areaEnd()}S&&(v[d]=+t(_,d,f),x[d]=+e(_,d,f),a.point(n?+n(_,d,f):v[d],r?+r(_,d,f):x[d]))}if(E)return a=null,E+""||null}function c(){return gP().defined(s).curve(o).context(i)}return u.x=function(f){return arguments.length?(t=typeof f=="function"?f:Fe(+f),n=null,u):t},u.x0=function(f){return arguments.length?(t=typeof f=="function"?f:Fe(+f),u):t},u.x1=function(f){return arguments.length?(n=f==null?null:typeof f=="function"?f:Fe(+f),u):n},u.y=function(f){return arguments.length?(e=typeof f=="function"?f:Fe(+f),r=null,u):e},u.y0=function(f){return arguments.length?(e=typeof f=="function"?f:Fe(+f),u):e},u.y1=function(f){return arguments.length?(r=f==null?null:typeof f=="function"?f:Fe(+f),u):r},u.lineX0=u.lineY0=function(){return c().x(t).y(e)},u.lineY1=function(){return c().x(t).y(r)},u.lineX1=function(){return c().x(n).y(e)},u.defined=function(f){return arguments.length?(s=typeof f=="function"?f:Fe(!!f),u):s},u.curve=function(f){return arguments.length?(o=f,i!=null&&(a=o(i)),u):o},u.context=function(f){return arguments.length?(f==null?i=a=null:a=o(i=f),u):i},u}function mP(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function bP(t){return t}function f4(){var t=bP,e=mP,r=null,n=Fe(0),s=Fe(yl),i=Fe(0);function o(a){var l,u=(a=ku(a)).length,c,f,d=0,g=new Array(u),m=new Array(u),y=+n.apply(this,arguments),_=Math.min(yl,Math.max(-yl,s.apply(this,arguments)-y)),S,E=Math.min(Math.abs(_)/u,i.apply(this,arguments)),v=E*(_<0?-1:1),x;for(l=0;l<u;++l)(x=m[g[l]=l]=+t(a[l],l,a))>0&&(d+=x);for(e!=null?g.sort(function(M,A){return e(m[M],m[A])}):r!=null&&g.sort(function(M,A){return r(a[M],a[A])}),l=0,f=d?(_-u*v)/d:0;l<u;++l,y=S)c=g[l],x=m[c],S=y+(x>0?x*f:0)+v,m[c]={data:a[c],index:l,value:x,startAngle:y,endAngle:S,padAngle:E};return m}return o.value=function(a){return arguments.length?(t=typeof a=="function"?a:Fe(+a),o):t},o.sortValues=function(a){return arguments.length?(e=a,r=null,o):e},o.sort=function(a){return arguments.length?(r=a,e=null,o):r},o.startAngle=function(a){return arguments.length?(n=typeof a=="function"?a:Fe(+a),o):n},o.endAngle=function(a){return arguments.length?(s=typeof a=="function"?a:Fe(+a),o):s},o.padAngle=function(a){return arguments.length?(i=typeof a=="function"?a:Fe(+a),o):i},o}class yP{constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}}function d4(t){return new yP(t,!0)}function p0(t,e){if((o=t.length)>1)for(var r=1,n,s,i=t[e[0]],o,a=i.length;r<o;++r)for(s=i,i=t[e[r]],n=0;n<a;++n)i[n][1]+=i[n][0]=isNaN(s[n][1])?s[n][0]:s[n][1]}function g0(t){for(var e=t.length,r=new Array(e);--e>=0;)r[e]=e;return r}function wP(t,e){return t[e]}function vP(t){const e=[];return e.key=t,e}function h4(){var t=Fe([]),e=g0,r=p0,n=wP;function s(i){var o=Array.from(t.apply(this,arguments),vP),a,l=o.length,u=-1,c;for(const f of i)for(a=0,++u;a<l;++a)(o[a][u]=[0,+n(f,o[a].key,u,i)]).data=f;for(a=0,c=ku(e(o));a<l;++a)o[c[a]].index=a;return r(o,c),o}return s.keys=function(i){return arguments.length?(t=typeof i=="function"?i:Fe(Array.from(i)),s):t},s.value=function(i){return arguments.length?(n=typeof i=="function"?i:Fe(+i),s):n},s.order=function(i){return arguments.length?(e=i==null?g0:typeof i=="function"?i:Fe(Array.from(i)),s):e},s.offset=function(i){return arguments.length?(r=i??p0,s):r},s}const ja=t=>()=>t;function _P(t,{sourceEvent:e,target:r,transform:n,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:n,enumerable:!0,configurable:!0},_:{value:s}})}function ln(t,e,r){this.k=t,this.x=e,this.y=r}ln.prototype={constructor:ln,scale:function(t){return t===1?this:new ln(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new ln(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Fv=new ln(1,0,0);ln.prototype;function Rc(t){t.stopImmediatePropagation()}function So(t){t.preventDefault(),t.stopImmediatePropagation()}function EP(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function SP(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function m0(){return this.__zoom||Fv}function TP(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function xP(){return navigator.maxTouchPoints||"ontouchstart"in this}function AP(t,e,r){var n=t.invertX(e[0][0])-r[0][0],s=t.invertX(e[1][0])-r[1][0],i=t.invertY(e[0][1])-r[0][1],o=t.invertY(e[1][1])-r[1][1];return t.translate(s>n?(n+s)/2:Math.min(0,n)||Math.max(0,s),o>i?(i+o)/2:Math.min(0,i)||Math.max(0,o))}function p4(){var t=EP,e=SP,r=AP,n=TP,s=xP,i=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],a=250,l=lM,u=Mp("start","zoom","end"),c,f,d,g=500,m=150,y=0,_=10;function S(N){N.property("__zoom",m0).on("wheel.zoom",D,{passive:!1}).on("mousedown.zoom",B).on("dblclick.zoom",q).filter(s).on("touchstart.zoom",Y).on("touchmove.zoom",R).on("touchend.zoom touchcancel.zoom",I).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}S.transform=function(N,W,G,H){var $=N.selection?N.selection():N;$.property("__zoom",m0),N!==$?M(N,W,G,H):$.interrupt().each(function(){A(this,arguments).event(H).start().zoom(null,typeof W=="function"?W.apply(this,arguments):W).end()})},S.scaleBy=function(N,W,G,H){S.scaleTo(N,function(){var $=this.__zoom.k,ne=typeof W=="function"?W.apply(this,arguments):W;return $*ne},G,H)},S.scaleTo=function(N,W,G,H){S.transform(N,function(){var $=e.apply(this,arguments),ne=this.__zoom,ue=G==null?x($):typeof G=="function"?G.apply(this,arguments):G,re=ne.invert(ue),k=typeof W=="function"?W.apply(this,arguments):W;return r(v(E(ne,k),ue,re),$,o)},G,H)},S.translateBy=function(N,W,G,H){S.transform(N,function(){return r(this.__zoom.translate(typeof W=="function"?W.apply(this,arguments):W,typeof G=="function"?G.apply(this,arguments):G),e.apply(this,arguments),o)},null,H)},S.translateTo=function(N,W,G,H,$){S.transform(N,function(){var ne=e.apply(this,arguments),ue=this.__zoom,re=H==null?x(ne):typeof H=="function"?H.apply(this,arguments):H;return r(Fv.translate(re[0],re[1]).scale(ue.k).translate(typeof W=="function"?-W.apply(this,arguments):-W,typeof G=="function"?-G.apply(this,arguments):-G),ne,o)},H,$)};function E(N,W){return W=Math.max(i[0],Math.min(i[1],W)),W===N.k?N:new ln(W,N.x,N.y)}function v(N,W,G){var H=W[0]-G[0]*N.k,$=W[1]-G[1]*N.k;return H===N.x&&$===N.y?N:new ln(N.k,H,$)}function x(N){return[(+N[0][0]+ +N[1][0])/2,(+N[0][1]+ +N[1][1])/2]}function M(N,W,G,H){N.on("start.zoom",function(){A(this,arguments).event(H).start()}).on("interrupt.zoom end.zoom",function(){A(this,arguments).event(H).end()}).tween("zoom",function(){var $=this,ne=arguments,ue=A($,ne).event(H),re=e.apply($,ne),k=G==null?x(re):typeof G=="function"?G.apply($,ne):G,Q=Math.max(re[1][0]-re[0][0],re[1][1]-re[0][1]),de=$.__zoom,ge=typeof W=="function"?W.apply($,ne):W,me=l(de.invert(k).concat(Q/de.k),ge.invert(k).concat(Q/ge.k));return function(X){if(X===1)X=ge;else{var K=me(X),ie=Q/K[2];X=new ln(ie,k[0]-K[0]*ie,k[1]-K[1]*ie)}ue.zoom(null,X)}})}function A(N,W,G){return!G&&N.__zooming||new L(N,W)}function L(N,W){this.that=N,this.args=W,this.active=0,this.sourceEvent=null,this.extent=e.apply(N,W),this.taps=0}L.prototype={event:function(N){return N&&(this.sourceEvent=N),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(N,W){return this.mouse&&N!=="mouse"&&(this.mouse[1]=W.invert(this.mouse[0])),this.touch0&&N!=="touch"&&(this.touch0[1]=W.invert(this.touch0[0])),this.touch1&&N!=="touch"&&(this.touch1[1]=W.invert(this.touch1[0])),this.that.__zoom=W,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(N){var W=Ai(this.that).datum();u.call(N,this.that,new _P(N,{sourceEvent:this.sourceEvent,target:S,type:N,transform:this.that.__zoom,dispatch:u}),W)}};function D(N,...W){if(!t.apply(this,arguments))return;var G=A(this,W).event(N),H=this.__zoom,$=Math.max(i[0],Math.min(i[1],H.k*Math.pow(2,n.apply(this,arguments)))),ne=hi(N);if(G.wheel)(G.mouse[0][0]!==ne[0]||G.mouse[0][1]!==ne[1])&&(G.mouse[1]=H.invert(G.mouse[0]=ne)),clearTimeout(G.wheel);else{if(H.k===$)return;G.mouse=[ne,H.invert(ne)],bl(this),G.start()}So(N),G.wheel=setTimeout(ue,m),G.zoom("mouse",r(v(E(H,$),G.mouse[0],G.mouse[1]),G.extent,o));function ue(){G.wheel=null,G.end()}}function B(N,...W){if(d||!t.apply(this,arguments))return;var G=N.currentTarget,H=A(this,W,!0).event(N),$=Ai(N.view).on("mousemove.zoom",k,!0).on("mouseup.zoom",Q,!0),ne=hi(N,G),ue=N.clientX,re=N.clientY;OI(N.view),Rc(N),H.mouse=[ne,this.__zoom.invert(ne)],bl(this),H.start();function k(de){if(So(de),!H.moved){var ge=de.clientX-ue,me=de.clientY-re;H.moved=ge*ge+me*me>y}H.event(de).zoom("mouse",r(v(H.that.__zoom,H.mouse[0]=hi(de,G),H.mouse[1]),H.extent,o))}function Q(de){$.on("mousemove.zoom mouseup.zoom",null),RI(de.view,H.moved),So(de),H.event(de).end()}}function q(N,...W){if(t.apply(this,arguments)){var G=this.__zoom,H=hi(N.changedTouches?N.changedTouches[0]:N,this),$=G.invert(H),ne=G.k*(N.shiftKey?.5:2),ue=r(v(E(G,ne),H,$),e.apply(this,W),o);So(N),a>0?Ai(this).transition().duration(a).call(M,ue,H,N):Ai(this).call(S.transform,ue,H,N)}}function Y(N,...W){if(t.apply(this,arguments)){var G=N.touches,H=G.length,$=A(this,W,N.changedTouches.length===H).event(N),ne,ue,re,k;for(Rc(N),ue=0;ue<H;++ue)re=G[ue],k=hi(re,this),k=[k,this.__zoom.invert(k),re.identifier],$.touch0?!$.touch1&&$.touch0[2]!==k[2]&&($.touch1=k,$.taps=0):($.touch0=k,ne=!0,$.taps=1+!!c);c&&(c=clearTimeout(c)),ne&&($.taps<2&&(f=k[0],c=setTimeout(function(){c=null},g)),bl(this),$.start())}}function R(N,...W){if(this.__zooming){var G=A(this,W).event(N),H=N.changedTouches,$=H.length,ne,ue,re,k;for(So(N),ne=0;ne<$;++ne)ue=H[ne],re=hi(ue,this),G.touch0&&G.touch0[2]===ue.identifier?G.touch0[0]=re:G.touch1&&G.touch1[2]===ue.identifier&&(G.touch1[0]=re);if(ue=G.that.__zoom,G.touch1){var Q=G.touch0[0],de=G.touch0[1],ge=G.touch1[0],me=G.touch1[1],X=(X=ge[0]-Q[0])*X+(X=ge[1]-Q[1])*X,K=(K=me[0]-de[0])*K+(K=me[1]-de[1])*K;ue=E(ue,Math.sqrt(X/K)),re=[(Q[0]+ge[0])/2,(Q[1]+ge[1])/2],k=[(de[0]+me[0])/2,(de[1]+me[1])/2]}else if(G.touch0)re=G.touch0[0],k=G.touch0[1];else return;G.zoom("touch",r(v(ue,re,k),G.extent,o))}}function I(N,...W){if(this.__zooming){var G=A(this,W).event(N),H=N.changedTouches,$=H.length,ne,ue;for(Rc(N),d&&clearTimeout(d),d=setTimeout(function(){d=null},g),ne=0;ne<$;++ne)ue=H[ne],G.touch0&&G.touch0[2]===ue.identifier?delete G.touch0:G.touch1&&G.touch1[2]===ue.identifier&&delete G.touch1;if(G.touch1&&!G.touch0&&(G.touch0=G.touch1,delete G.touch1),G.touch0)G.touch0[1]=this.__zoom.invert(G.touch0[0]);else if(G.end(),G.taps===2&&(ue=hi(ue,this),Math.hypot(f[0]-ue[0],f[1]-ue[1])<_)){var re=Ai(this).on("dblclick.zoom");re&&re.apply(this,arguments)}}}return S.wheelDelta=function(N){return arguments.length?(n=typeof N=="function"?N:ja(+N),S):n},S.filter=function(N){return arguments.length?(t=typeof N=="function"?N:ja(!!N),S):t},S.touchable=function(N){return arguments.length?(s=typeof N=="function"?N:ja(!!N),S):s},S.extent=function(N){return arguments.length?(e=typeof N=="function"?N:ja([[+N[0][0],+N[0][1]],[+N[1][0],+N[1][1]]]),S):e},S.scaleExtent=function(N){return arguments.length?(i[0]=+N[0],i[1]=+N[1],S):[i[0],i[1]]},S.translateExtent=function(N){return arguments.length?(o[0][0]=+N[0][0],o[1][0]=+N[1][0],o[0][1]=+N[0][1],o[1][1]=+N[1][1],S):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},S.constrain=function(N){return arguments.length?(r=N,S):r},S.duration=function(N){return arguments.length?(a=+N,S):a},S.interpolate=function(N){return arguments.length?(l=N,S):l},S.on=function(){var N=u.on.apply(u,arguments);return N===u?S:N},S.clickDistance=function(N){return arguments.length?(y=(N=+N)*N,S):Math.sqrt(y)},S.tapDistance=function(N){return arguments.length?(_=+N,S):_},S}var Gp=Object.defineProperty,CP=Object.getOwnPropertyDescriptor,IP=Object.getOwnPropertyNames,MP=Object.prototype.hasOwnProperty,_t=(t,e)=>()=>(t&&(e=t(t=0)),e),Te=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),rs=(t,e)=>{for(var r in e)Gp(t,r,{get:e[r],enumerable:!0})},OP=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of IP(e))!MP.call(t,s)&&s!==r&&Gp(t,s,{get:()=>e[s],enumerable:!(n=CP(e,s))||n.enumerable});return t},Ke=t=>OP(Gp({},"__esModule",{value:!0}),t),we=_t(()=>{}),ze={};rs(ze,{_debugEnd:()=>jd,_debugProcess:()=>Ud,_events:()=>rh,_eventsCount:()=>nh,_exiting:()=>Ad,_fatalExceptions:()=>Bd,_getActiveHandles:()=>qv,_getActiveRequests:()=>Vv,_kill:()=>Md,_linkedBinding:()=>zv,_maxListeners:()=>th,_preload_modules:()=>Zd,_rawDebug:()=>Sd,_startProfilerIdleNotifier:()=>Wd,_stopProfilerIdleNotifier:()=>zd,_tickCallback:()=>Fd,abort:()=>Yd,addListener:()=>ih,allowedNodeEnvironmentFlags:()=>Nd,arch:()=>cd,argv:()=>hd,argv0:()=>Jd,assert:()=>Yv,binding:()=>yd,chdir:()=>_d,config:()=>Cd,cpuUsage:()=>No,cwd:()=>vd,debugPort:()=>Qd,default:()=>Xp,dlopen:()=>Hv,domain:()=>xd,emit:()=>uh,emitWarning:()=>bd,env:()=>dd,execArgv:()=>pd,execPath:()=>Xd,exit:()=>kd,features:()=>Dd,hasUncaughtExceptionCaptureCallback:()=>Gv,hrtime:()=>wl,kill:()=>Pd,listeners:()=>Xv,memoryUsage:()=>Rd,moduleLoadList:()=>Td,nextTick:()=>jv,off:()=>oh,on:()=>Jr,once:()=>sh,openStdin:()=>Ld,pid:()=>Gd,platform:()=>fd,ppid:()=>Kd,prependListener:()=>ch,prependOnceListener:()=>fh,reallyExit:()=>Id,release:()=>Ed,removeAllListeners:()=>lh,removeListener:()=>ah,resourceUsage:()=>Od,setSourceMapsEnabled:()=>eh,setUncaughtExceptionCaptureCallback:()=>$d,stderr:()=>Vd,stdin:()=>qd,stdout:()=>Hd,title:()=>ud,umask:()=>wd,uptime:()=>Kv,version:()=>gd,versions:()=>md});function Kp(t){throw new Error("Node.js process "+t+" is not supported by JSPM core outside of Node.js")}function RP(){!Fi||!Oi||(Fi=!1,Oi.length?$r=Oi.concat($r):Yo=-1,$r.length&&Uv())}function Uv(){if(!Fi){var t=setTimeout(RP,0);Fi=!0;for(var e=$r.length;e;){for(Oi=$r,$r=[];++Yo<e;)Oi&&Oi[Yo].run();Yo=-1,e=$r.length}Oi=null,Fi=!1,clearTimeout(t)}}function jv(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];$r.push(new Wv(t,e)),$r.length===1&&!Fi&&setTimeout(Uv,0)}function Wv(t,e){this.fun=t,this.array=e}function Ct(){}function zv(t){Kp("_linkedBinding")}function Hv(t){Kp("dlopen")}function Vv(){return[]}function qv(){return[]}function Yv(t,e){if(!t)throw new Error(e||"assertion error")}function Gv(){return!1}function Kv(){return nn.now()/1e3}function wl(t){var e=Math.floor((Date.now()-nn.now())*.001),r=nn.now()*.001,n=Math.floor(r)+e,s=Math.floor(r%1*1e9);return t&&(n=n-t[0],s=s-t[1],s<0&&(n--,s+=vl)),[n,s]}function Jr(){return Xp}function Xv(t){return[]}var $r,Fi,Oi,Yo,ud,cd,fd,dd,hd,pd,gd,md,bd,yd,wd,vd,_d,Ed,Sd,Td,xd,Ad,Cd,Id,Md,No,Od,Rd,Pd,kd,Ld,Nd,Dd,Bd,$d,Fd,Ud,jd,Wd,zd,Hd,Vd,qd,Yd,Gd,Kd,Xd,Qd,Jd,Zd,eh,nn,Pc,vl,th,rh,nh,ih,sh,oh,ah,lh,uh,ch,fh,Xp,PP=_t(()=>{we(),_e(),ve(),$r=[],Fi=!1,Yo=-1,Wv.prototype.run=function(){this.fun.apply(null,this.array)},ud="browser",cd="x64",fd="browser",dd={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},hd=["/usr/bin/node"],pd=[],gd="v16.8.0",md={},bd=function(t,e){console.warn((e?e+": ":"")+t)},yd=function(t){Kp("binding")},wd=function(t){return 0},vd=function(){return"/"},_d=function(t){},Ed={name:"node",sourceUrl:"",headersUrl:"",libUrl:""},Sd=Ct,Td=[],xd={},Ad=!1,Cd={},Id=Ct,Md=Ct,No=function(){return{}},Od=No,Rd=No,Pd=Ct,kd=Ct,Ld=Ct,Nd={},Dd={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},Bd=Ct,$d=Ct,Fd=Ct,Ud=Ct,jd=Ct,Wd=Ct,zd=Ct,Hd=void 0,Vd=void 0,qd=void 0,Yd=Ct,Gd=2,Kd=1,Xd="/bin/usr/node",Qd=9229,Jd="node",Zd=[],eh=Ct,nn={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0},nn.now===void 0&&(Pc=Date.now(),nn.timing&&nn.timing.navigationStart&&(Pc=nn.timing.navigationStart),nn.now=()=>Date.now()-Pc),vl=1e9,wl.bigint=function(t){var e=wl(t);return typeof BigInt>"u"?e[0]*vl+e[1]:BigInt(e[0]*vl)+BigInt(e[1])},th=10,rh={},nh=0,ih=Jr,sh=Jr,oh=Jr,ah=Jr,lh=Jr,uh=Ct,ch=Jr,fh=Jr,Xp={version:gd,versions:md,arch:cd,platform:fd,release:Ed,_rawDebug:Sd,moduleLoadList:Td,binding:yd,_linkedBinding:zv,_events:rh,_eventsCount:nh,_maxListeners:th,on:Jr,addListener:ih,once:sh,off:oh,removeListener:ah,removeAllListeners:lh,emit:uh,prependListener:ch,prependOnceListener:fh,listeners:Xv,domain:xd,_exiting:Ad,config:Cd,dlopen:Hv,uptime:Kv,_getActiveRequests:Vv,_getActiveHandles:qv,reallyExit:Id,_kill:Md,cpuUsage:No,resourceUsage:Od,memoryUsage:Rd,kill:Pd,exit:kd,openStdin:Ld,allowedNodeEnvironmentFlags:Nd,assert:Yv,features:Dd,_fatalExceptions:Bd,setUncaughtExceptionCaptureCallback:$d,hasUncaughtExceptionCaptureCallback:Gv,emitWarning:bd,nextTick:jv,_tickCallback:Fd,_debugProcess:Ud,_debugEnd:jd,_startProfilerIdleNotifier:Wd,_stopProfilerIdleNotifier:zd,stdout:Hd,stdin:qd,stderr:Vd,abort:Yd,umask:wd,chdir:_d,cwd:vd,env:dd,title:ud,argv:hd,execArgv:pd,pid:Gd,ppid:Kd,execPath:Xd,debugPort:Qd,hrtime:wl,argv0:Jd,_preload_modules:Zd,setSourceMapsEnabled:eh}}),ve=_t(()=>{PP()}),Et={};rs(Et,{Buffer:()=>tu,INSPECT_MAX_BYTES:()=>Qv,default:()=>Zr,kMaxLength:()=>Jv});function kP(){if(dh)return vs;dh=!0,vs.byteLength=a,vs.toByteArray=u,vs.fromByteArray=d;for(var t=[],e=[],r=typeof Uint8Array<"u"?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,i=n.length;s<i;++s)t[s]=n[s],e[n.charCodeAt(s)]=s;e[45]=62,e[95]=63;function o(g){var m=g.length;if(m%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var y=g.indexOf("=");y===-1&&(y=m);var _=y===m?0:4-y%4;return[y,_]}function a(g){var m=o(g),y=m[0],_=m[1];return(y+_)*3/4-_}function l(g,m,y){return(m+y)*3/4-y}function u(g){var m,y=o(g),_=y[0],S=y[1],E=new r(l(g,_,S)),v=0,x=S>0?_-4:_,M;for(M=0;M<x;M+=4)m=e[g.charCodeAt(M)]<<18|e[g.charCodeAt(M+1)]<<12|e[g.charCodeAt(M+2)]<<6|e[g.charCodeAt(M+3)],E[v++]=m>>16&255,E[v++]=m>>8&255,E[v++]=m&255;return S===2&&(m=e[g.charCodeAt(M)]<<2|e[g.charCodeAt(M+1)]>>4,E[v++]=m&255),S===1&&(m=e[g.charCodeAt(M)]<<10|e[g.charCodeAt(M+1)]<<4|e[g.charCodeAt(M+2)]>>2,E[v++]=m>>8&255,E[v++]=m&255),E}function c(g){return t[g>>18&63]+t[g>>12&63]+t[g>>6&63]+t[g&63]}function f(g,m,y){for(var _,S=[],E=m;E<y;E+=3)_=(g[E]<<16&16711680)+(g[E+1]<<8&65280)+(g[E+2]&255),S.push(c(_));return S.join("")}function d(g){for(var m,y=g.length,_=y%3,S=[],E=16383,v=0,x=y-_;v<x;v+=E)S.push(f(g,v,v+E>x?x:v+E));return _===1?(m=g[y-1],S.push(t[m>>2]+t[m<<4&63]+"==")):_===2&&(m=(g[y-2]<<8)+g[y-1],S.push(t[m>>10]+t[m>>4&63]+t[m<<2&63]+"=")),S.join("")}return vs}function LP(){return hh?Do:(hh=!0,Do.read=function(t,e,r,n,s){var i,o,a=s*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,f=r?s-1:0,d=r?-1:1,g=t[e+f];for(f+=d,i=g&(1<<-c)-1,g>>=-c,c+=a;c>0;i=i*256+t[e+f],f+=d,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=o*256+t[e+f],f+=d,c-=8);if(i===0)i=1-u;else{if(i===l)return o?NaN:(g?-1:1)*(1/0);o=o+Math.pow(2,n),i=i-u}return(g?-1:1)*o*Math.pow(2,i-n)},Do.write=function(t,e,r,n,s,i){var o,a,l,u=i*8-s-1,c=(1<<u)-1,f=c>>1,d=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:i-1,m=n?1:-1,y=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?e+=d/l:e+=d*Math.pow(2,1-f),e*l>=2&&(o++,l/=2),o+f>=c?(a=0,o=c):o+f>=1?(a=(e*l-1)*Math.pow(2,s),o=o+f):(a=e*Math.pow(2,f-1)*Math.pow(2,s),o=0));s>=8;t[r+g]=a&255,g+=m,a/=256,s-=8);for(o=o<<s|a,u+=s;u>0;t[r+g]=o&255,g+=m,o/=256,u-=8);t[r+g-m]|=y*128},Do)}function NP(){if(ph)return Dn;ph=!0;let t=kP(),e=LP(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Dn.Buffer=o,Dn.SlowBuffer=S,Dn.INSPECT_MAX_BYTES=50;let n=2147483647;Dn.kMaxLength=n,o.TYPED_ARRAY_SUPPORT=s(),!o.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function s(){try{let w=new Uint8Array(1),p={foo:function(){return 42}};return Object.setPrototypeOf(p,Uint8Array.prototype),Object.setPrototypeOf(w,p),w.foo()===42}catch{return!1}}Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.buffer}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.byteOffset}});function i(w){if(w>n)throw new RangeError('The value "'+w+'" is invalid for option "size"');let p=new Uint8Array(w);return Object.setPrototypeOf(p,o.prototype),p}function o(w,p,h){if(typeof w=="number"){if(typeof p=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(w)}return a(w,p,h)}o.poolSize=8192;function a(w,p,h){if(typeof w=="string")return f(w,p);if(ArrayBuffer.isView(w))return g(w);if(w==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof w);if(te(w,ArrayBuffer)||w&&te(w.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(te(w,SharedArrayBuffer)||w&&te(w.buffer,SharedArrayBuffer)))return m(w,p,h);if(typeof w=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let b=w.valueOf&&w.valueOf();if(b!=null&&b!==w)return o.from(b,p,h);let T=y(w);if(T)return T;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof w[Symbol.toPrimitive]=="function")return o.from(w[Symbol.toPrimitive]("string"),p,h);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof w)}o.from=function(w,p,h){return a(w,p,h)},Object.setPrototypeOf(o.prototype,Uint8Array.prototype),Object.setPrototypeOf(o,Uint8Array);function l(w){if(typeof w!="number")throw new TypeError('"size" argument must be of type number');if(w<0)throw new RangeError('The value "'+w+'" is invalid for option "size"')}function u(w,p,h){return l(w),w<=0?i(w):p!==void 0?typeof h=="string"?i(w).fill(p,h):i(w).fill(p):i(w)}o.alloc=function(w,p,h){return u(w,p,h)};function c(w){return l(w),i(w<0?0:_(w)|0)}o.allocUnsafe=function(w){return c(w)},o.allocUnsafeSlow=function(w){return c(w)};function f(w,p){if((typeof p!="string"||p==="")&&(p="utf8"),!o.isEncoding(p))throw new TypeError("Unknown encoding: "+p);let h=E(w,p)|0,b=i(h),T=b.write(w,p);return T!==h&&(b=b.slice(0,T)),b}function d(w){let p=w.length<0?0:_(w.length)|0,h=i(p);for(let b=0;b<p;b+=1)h[b]=w[b]&255;return h}function g(w){if(te(w,Uint8Array)){let p=new Uint8Array(w);return m(p.buffer,p.byteOffset,p.byteLength)}return d(w)}function m(w,p,h){if(p<0||w.byteLength<p)throw new RangeError('"offset" is outside of buffer bounds');if(w.byteLength<p+(h||0))throw new RangeError('"length" is outside of buffer bounds');let b;return p===void 0&&h===void 0?b=new Uint8Array(w):h===void 0?b=new Uint8Array(w,p):b=new Uint8Array(w,p,h),Object.setPrototypeOf(b,o.prototype),b}function y(w){if(o.isBuffer(w)){let p=_(w.length)|0,h=i(p);return h.length===0||w.copy(h,0,0,p),h}if(w.length!==void 0)return typeof w.length!="number"||F(w.length)?i(0):d(w);if(w.type==="Buffer"&&Array.isArray(w.data))return d(w.data)}function _(w){if(w>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return w|0}function S(w){return+w!=w&&(w=0),o.alloc(+w)}o.isBuffer=function(w){return w!=null&&w._isBuffer===!0&&w!==o.prototype},o.compare=function(w,p){if(te(w,Uint8Array)&&(w=o.from(w,w.offset,w.byteLength)),te(p,Uint8Array)&&(p=o.from(p,p.offset,p.byteLength)),!o.isBuffer(w)||!o.isBuffer(p))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(w===p)return 0;let h=w.length,b=p.length;for(let T=0,U=Math.min(h,b);T<U;++T)if(w[T]!==p[T]){h=w[T],b=p[T];break}return h<b?-1:b<h?1:0},o.isEncoding=function(w){switch(String(w).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(w,p){if(!Array.isArray(w))throw new TypeError('"list" argument must be an Array of Buffers');if(w.length===0)return o.alloc(0);let h;if(p===void 0)for(p=0,h=0;h<w.length;++h)p+=w[h].length;let b=o.allocUnsafe(p),T=0;for(h=0;h<w.length;++h){let U=w[h];if(te(U,Uint8Array))T+U.length>b.length?(o.isBuffer(U)||(U=o.from(U)),U.copy(b,T)):Uint8Array.prototype.set.call(b,U,T);else if(o.isBuffer(U))U.copy(b,T);else throw new TypeError('"list" argument must be an Array of Buffers');T+=U.length}return b};function E(w,p){if(o.isBuffer(w))return w.length;if(ArrayBuffer.isView(w)||te(w,ArrayBuffer))return w.byteLength;if(typeof w!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof w);let h=w.length,b=arguments.length>2&&arguments[2]===!0;if(!b&&h===0)return 0;let T=!1;for(;;)switch(p){case"ascii":case"latin1":case"binary":return h;case"utf8":case"utf-8":return j(w).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return h*2;case"hex":return h>>>1;case"base64":return fe(w).length;default:if(T)return b?-1:j(w).length;p=(""+p).toLowerCase(),T=!0}}o.byteLength=E;function v(w,p,h){let b=!1;if((p===void 0||p<0)&&(p=0),p>this.length||((h===void 0||h>this.length)&&(h=this.length),h<=0)||(h>>>=0,p>>>=0,h<=p))return"";for(w||(w="utf8");;)switch(w){case"hex":return $(this,p,h);case"utf8":case"utf-8":return I(this,p,h);case"ascii":return G(this,p,h);case"latin1":case"binary":return H(this,p,h);case"base64":return R(this,p,h);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ne(this,p,h);default:if(b)throw new TypeError("Unknown encoding: "+w);w=(w+"").toLowerCase(),b=!0}}o.prototype._isBuffer=!0;function x(w,p,h){let b=w[p];w[p]=w[h],w[h]=b}o.prototype.swap16=function(){let w=this.length;if(w%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let p=0;p<w;p+=2)x(this,p,p+1);return this},o.prototype.swap32=function(){let w=this.length;if(w%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let p=0;p<w;p+=4)x(this,p,p+3),x(this,p+1,p+2);return this},o.prototype.swap64=function(){let w=this.length;if(w%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let p=0;p<w;p+=8)x(this,p,p+7),x(this,p+1,p+6),x(this,p+2,p+5),x(this,p+3,p+4);return this},o.prototype.toString=function(){let w=this.length;return w===0?"":arguments.length===0?I(this,0,w):v.apply(this,arguments)},o.prototype.toLocaleString=o.prototype.toString,o.prototype.equals=function(w){if(!o.isBuffer(w))throw new TypeError("Argument must be a Buffer");return this===w?!0:o.compare(this,w)===0},o.prototype.inspect=function(){let w="",p=Dn.INSPECT_MAX_BYTES;return w=this.toString("hex",0,p).replace(/(.{2})/g,"$1 ").trim(),this.length>p&&(w+=" ... "),"<Buffer "+w+">"},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(w,p,h,b,T){if(te(w,Uint8Array)&&(w=o.from(w,w.offset,w.byteLength)),!o.isBuffer(w))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof w);if(p===void 0&&(p=0),h===void 0&&(h=w?w.length:0),b===void 0&&(b=0),T===void 0&&(T=this.length),p<0||h>w.length||b<0||T>this.length)throw new RangeError("out of range index");if(b>=T&&p>=h)return 0;if(b>=T)return-1;if(p>=h)return 1;if(p>>>=0,h>>>=0,b>>>=0,T>>>=0,this===w)return 0;let U=T-b,ee=h-p,ye=Math.min(U,ee),Ae=this.slice(b,T),Re=w.slice(p,h);for(let xe=0;xe<ye;++xe)if(Ae[xe]!==Re[xe]){U=Ae[xe],ee=Re[xe];break}return U<ee?-1:ee<U?1:0};function M(w,p,h,b,T){if(w.length===0)return-1;if(typeof h=="string"?(b=h,h=0):h>2147483647?h=2147483647:h<-2147483648&&(h=-2147483648),h=+h,F(h)&&(h=T?0:w.length-1),h<0&&(h=w.length+h),h>=w.length){if(T)return-1;h=w.length-1}else if(h<0)if(T)h=0;else return-1;if(typeof p=="string"&&(p=o.from(p,b)),o.isBuffer(p))return p.length===0?-1:A(w,p,h,b,T);if(typeof p=="number")return p=p&255,typeof Uint8Array.prototype.indexOf=="function"?T?Uint8Array.prototype.indexOf.call(w,p,h):Uint8Array.prototype.lastIndexOf.call(w,p,h):A(w,[p],h,b,T);throw new TypeError("val must be string, number or Buffer")}function A(w,p,h,b,T){let U=1,ee=w.length,ye=p.length;if(b!==void 0&&(b=String(b).toLowerCase(),b==="ucs2"||b==="ucs-2"||b==="utf16le"||b==="utf-16le")){if(w.length<2||p.length<2)return-1;U=2,ee/=2,ye/=2,h/=2}function Ae(xe,Oe){return U===1?xe[Oe]:xe.readUInt16BE(Oe*U)}let Re;if(T){let xe=-1;for(Re=h;Re<ee;Re++)if(Ae(w,Re)===Ae(p,xe===-1?0:Re-xe)){if(xe===-1&&(xe=Re),Re-xe+1===ye)return xe*U}else xe!==-1&&(Re-=Re-xe),xe=-1}else for(h+ye>ee&&(h=ee-ye),Re=h;Re>=0;Re--){let xe=!0;for(let Oe=0;Oe<ye;Oe++)if(Ae(w,Re+Oe)!==Ae(p,Oe)){xe=!1;break}if(xe)return Re}return-1}o.prototype.includes=function(w,p,h){return this.indexOf(w,p,h)!==-1},o.prototype.indexOf=function(w,p,h){return M(this,w,p,h,!0)},o.prototype.lastIndexOf=function(w,p,h){return M(this,w,p,h,!1)};function L(w,p,h,b){h=Number(h)||0;let T=w.length-h;b?(b=Number(b),b>T&&(b=T)):b=T;let U=p.length;b>U/2&&(b=U/2);let ee;for(ee=0;ee<b;++ee){let ye=parseInt(p.substr(ee*2,2),16);if(F(ye))return ee;w[h+ee]=ye}return ee}function D(w,p,h,b){return V(j(p,w.length-h),w,h,b)}function B(w,p,h,b){return V(z(p),w,h,b)}function q(w,p,h,b){return V(fe(p),w,h,b)}function Y(w,p,h,b){return V(oe(p,w.length-h),w,h,b)}o.prototype.write=function(w,p,h,b){if(p===void 0)b="utf8",h=this.length,p=0;else if(h===void 0&&typeof p=="string")b=p,h=this.length,p=0;else if(isFinite(p))p=p>>>0,isFinite(h)?(h=h>>>0,b===void 0&&(b="utf8")):(b=h,h=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let T=this.length-p;if((h===void 0||h>T)&&(h=T),w.length>0&&(h<0||p<0)||p>this.length)throw new RangeError("Attempt to write outside buffer bounds");b||(b="utf8");let U=!1;for(;;)switch(b){case"hex":return L(this,w,p,h);case"utf8":case"utf-8":return D(this,w,p,h);case"ascii":case"latin1":case"binary":return B(this,w,p,h);case"base64":return q(this,w,p,h);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Y(this,w,p,h);default:if(U)throw new TypeError("Unknown encoding: "+b);b=(""+b).toLowerCase(),U=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function R(w,p,h){return p===0&&h===w.length?t.fromByteArray(w):t.fromByteArray(w.slice(p,h))}function I(w,p,h){h=Math.min(w.length,h);let b=[],T=p;for(;T<h;){let U=w[T],ee=null,ye=U>239?4:U>223?3:U>191?2:1;if(T+ye<=h){let Ae,Re,xe,Oe;switch(ye){case 1:U<128&&(ee=U);break;case 2:Ae=w[T+1],(Ae&192)===128&&(Oe=(U&31)<<6|Ae&63,Oe>127&&(ee=Oe));break;case 3:Ae=w[T+1],Re=w[T+2],(Ae&192)===128&&(Re&192)===128&&(Oe=(U&15)<<12|(Ae&63)<<6|Re&63,Oe>2047&&(Oe<55296||Oe>57343)&&(ee=Oe));break;case 4:Ae=w[T+1],Re=w[T+2],xe=w[T+3],(Ae&192)===128&&(Re&192)===128&&(xe&192)===128&&(Oe=(U&15)<<18|(Ae&63)<<12|(Re&63)<<6|xe&63,Oe>65535&&Oe<1114112&&(ee=Oe))}}ee===null?(ee=65533,ye=1):ee>65535&&(ee-=65536,b.push(ee>>>10&1023|55296),ee=56320|ee&1023),b.push(ee),T+=ye}return W(b)}let N=4096;function W(w){let p=w.length;if(p<=N)return String.fromCharCode.apply(String,w);let h="",b=0;for(;b<p;)h+=String.fromCharCode.apply(String,w.slice(b,b+=N));return h}function G(w,p,h){let b="";h=Math.min(w.length,h);for(let T=p;T<h;++T)b+=String.fromCharCode(w[T]&127);return b}function H(w,p,h){let b="";h=Math.min(w.length,h);for(let T=p;T<h;++T)b+=String.fromCharCode(w[T]);return b}function $(w,p,h){let b=w.length;(!p||p<0)&&(p=0),(!h||h<0||h>b)&&(h=b);let T="";for(let U=p;U<h;++U)T+=J[w[U]];return T}function ne(w,p,h){let b=w.slice(p,h),T="";for(let U=0;U<b.length-1;U+=2)T+=String.fromCharCode(b[U]+b[U+1]*256);return T}o.prototype.slice=function(w,p){let h=this.length;w=~~w,p=p===void 0?h:~~p,w<0?(w+=h,w<0&&(w=0)):w>h&&(w=h),p<0?(p+=h,p<0&&(p=0)):p>h&&(p=h),p<w&&(p=w);let b=this.subarray(w,p);return Object.setPrototypeOf(b,o.prototype),b};function ue(w,p,h){if(w%1!==0||w<0)throw new RangeError("offset is not uint");if(w+p>h)throw new RangeError("Trying to access beyond buffer length")}o.prototype.readUintLE=o.prototype.readUIntLE=function(w,p,h){w=w>>>0,p=p>>>0,h||ue(w,p,this.length);let b=this[w],T=1,U=0;for(;++U<p&&(T*=256);)b+=this[w+U]*T;return b},o.prototype.readUintBE=o.prototype.readUIntBE=function(w,p,h){w=w>>>0,p=p>>>0,h||ue(w,p,this.length);let b=this[w+--p],T=1;for(;p>0&&(T*=256);)b+=this[w+--p]*T;return b},o.prototype.readUint8=o.prototype.readUInt8=function(w,p){return w=w>>>0,p||ue(w,1,this.length),this[w]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(w,p){return w=w>>>0,p||ue(w,2,this.length),this[w]|this[w+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(w,p){return w=w>>>0,p||ue(w,2,this.length),this[w]<<8|this[w+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(w,p){return w=w>>>0,p||ue(w,4,this.length),(this[w]|this[w+1]<<8|this[w+2]<<16)+this[w+3]*16777216},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(w,p){return w=w>>>0,p||ue(w,4,this.length),this[w]*16777216+(this[w+1]<<16|this[w+2]<<8|this[w+3])},o.prototype.readBigUInt64LE=se(function(w){w=w>>>0,ce(w,"offset");let p=this[w],h=this[w+7];(p===void 0||h===void 0)&&C(w,this.length-8);let b=p+this[++w]*2**8+this[++w]*2**16+this[++w]*2**24,T=this[++w]+this[++w]*2**8+this[++w]*2**16+h*2**24;return BigInt(b)+(BigInt(T)<<BigInt(32))}),o.prototype.readBigUInt64BE=se(function(w){w=w>>>0,ce(w,"offset");let p=this[w],h=this[w+7];(p===void 0||h===void 0)&&C(w,this.length-8);let b=p*2**24+this[++w]*2**16+this[++w]*2**8+this[++w],T=this[++w]*2**24+this[++w]*2**16+this[++w]*2**8+h;return(BigInt(b)<<BigInt(32))+BigInt(T)}),o.prototype.readIntLE=function(w,p,h){w=w>>>0,p=p>>>0,h||ue(w,p,this.length);let b=this[w],T=1,U=0;for(;++U<p&&(T*=256);)b+=this[w+U]*T;return T*=128,b>=T&&(b-=Math.pow(2,8*p)),b},o.prototype.readIntBE=function(w,p,h){w=w>>>0,p=p>>>0,h||ue(w,p,this.length);let b=p,T=1,U=this[w+--b];for(;b>0&&(T*=256);)U+=this[w+--b]*T;return T*=128,U>=T&&(U-=Math.pow(2,8*p)),U},o.prototype.readInt8=function(w,p){return w=w>>>0,p||ue(w,1,this.length),this[w]&128?(255-this[w]+1)*-1:this[w]},o.prototype.readInt16LE=function(w,p){w=w>>>0,p||ue(w,2,this.length);let h=this[w]|this[w+1]<<8;return h&32768?h|4294901760:h},o.prototype.readInt16BE=function(w,p){w=w>>>0,p||ue(w,2,this.length);let h=this[w+1]|this[w]<<8;return h&32768?h|4294901760:h},o.prototype.readInt32LE=function(w,p){return w=w>>>0,p||ue(w,4,this.length),this[w]|this[w+1]<<8|this[w+2]<<16|this[w+3]<<24},o.prototype.readInt32BE=function(w,p){return w=w>>>0,p||ue(w,4,this.length),this[w]<<24|this[w+1]<<16|this[w+2]<<8|this[w+3]},o.prototype.readBigInt64LE=se(function(w){w=w>>>0,ce(w,"offset");let p=this[w],h=this[w+7];(p===void 0||h===void 0)&&C(w,this.length-8);let b=this[w+4]+this[w+5]*2**8+this[w+6]*2**16+(h<<24);return(BigInt(b)<<BigInt(32))+BigInt(p+this[++w]*2**8+this[++w]*2**16+this[++w]*2**24)}),o.prototype.readBigInt64BE=se(function(w){w=w>>>0,ce(w,"offset");let p=this[w],h=this[w+7];(p===void 0||h===void 0)&&C(w,this.length-8);let b=(p<<24)+this[++w]*2**16+this[++w]*2**8+this[++w];return(BigInt(b)<<BigInt(32))+BigInt(this[++w]*2**24+this[++w]*2**16+this[++w]*2**8+h)}),o.prototype.readFloatLE=function(w,p){return w=w>>>0,p||ue(w,4,this.length),e.read(this,w,!0,23,4)},o.prototype.readFloatBE=function(w,p){return w=w>>>0,p||ue(w,4,this.length),e.read(this,w,!1,23,4)},o.prototype.readDoubleLE=function(w,p){return w=w>>>0,p||ue(w,8,this.length),e.read(this,w,!0,52,8)},o.prototype.readDoubleBE=function(w,p){return w=w>>>0,p||ue(w,8,this.length),e.read(this,w,!1,52,8)};function re(w,p,h,b,T,U){if(!o.isBuffer(w))throw new TypeError('"buffer" argument must be a Buffer instance');if(p>T||p<U)throw new RangeError('"value" argument is out of bounds');if(h+b>w.length)throw new RangeError("Index out of range")}o.prototype.writeUintLE=o.prototype.writeUIntLE=function(w,p,h,b){if(w=+w,p=p>>>0,h=h>>>0,!b){let ee=Math.pow(2,8*h)-1;re(this,w,p,h,ee,0)}let T=1,U=0;for(this[p]=w&255;++U<h&&(T*=256);)this[p+U]=w/T&255;return p+h},o.prototype.writeUintBE=o.prototype.writeUIntBE=function(w,p,h,b){if(w=+w,p=p>>>0,h=h>>>0,!b){let ee=Math.pow(2,8*h)-1;re(this,w,p,h,ee,0)}let T=h-1,U=1;for(this[p+T]=w&255;--T>=0&&(U*=256);)this[p+T]=w/U&255;return p+h},o.prototype.writeUint8=o.prototype.writeUInt8=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,1,255,0),this[p]=w&255,p+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,2,65535,0),this[p]=w&255,this[p+1]=w>>>8,p+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,2,65535,0),this[p]=w>>>8,this[p+1]=w&255,p+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,4,4294967295,0),this[p+3]=w>>>24,this[p+2]=w>>>16,this[p+1]=w>>>8,this[p]=w&255,p+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,4,4294967295,0),this[p]=w>>>24,this[p+1]=w>>>16,this[p+2]=w>>>8,this[p+3]=w&255,p+4};function k(w,p,h,b,T){he(p,b,T,w,h,7);let U=Number(p&BigInt(4294967295));w[h++]=U,U=U>>8,w[h++]=U,U=U>>8,w[h++]=U,U=U>>8,w[h++]=U;let ee=Number(p>>BigInt(32)&BigInt(4294967295));return w[h++]=ee,ee=ee>>8,w[h++]=ee,ee=ee>>8,w[h++]=ee,ee=ee>>8,w[h++]=ee,h}function Q(w,p,h,b,T){he(p,b,T,w,h,7);let U=Number(p&BigInt(4294967295));w[h+7]=U,U=U>>8,w[h+6]=U,U=U>>8,w[h+5]=U,U=U>>8,w[h+4]=U;let ee=Number(p>>BigInt(32)&BigInt(4294967295));return w[h+3]=ee,ee=ee>>8,w[h+2]=ee,ee=ee>>8,w[h+1]=ee,ee=ee>>8,w[h]=ee,h+8}o.prototype.writeBigUInt64LE=se(function(w,p=0){return k(this,w,p,BigInt(0),BigInt("0xffffffffffffffff"))}),o.prototype.writeBigUInt64BE=se(function(w,p=0){return Q(this,w,p,BigInt(0),BigInt("0xffffffffffffffff"))}),o.prototype.writeIntLE=function(w,p,h,b){if(w=+w,p=p>>>0,!b){let ye=Math.pow(2,8*h-1);re(this,w,p,h,ye-1,-ye)}let T=0,U=1,ee=0;for(this[p]=w&255;++T<h&&(U*=256);)w<0&&ee===0&&this[p+T-1]!==0&&(ee=1),this[p+T]=(w/U>>0)-ee&255;return p+h},o.prototype.writeIntBE=function(w,p,h,b){if(w=+w,p=p>>>0,!b){let ye=Math.pow(2,8*h-1);re(this,w,p,h,ye-1,-ye)}let T=h-1,U=1,ee=0;for(this[p+T]=w&255;--T>=0&&(U*=256);)w<0&&ee===0&&this[p+T+1]!==0&&(ee=1),this[p+T]=(w/U>>0)-ee&255;return p+h},o.prototype.writeInt8=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,1,127,-128),w<0&&(w=255+w+1),this[p]=w&255,p+1},o.prototype.writeInt16LE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,2,32767,-32768),this[p]=w&255,this[p+1]=w>>>8,p+2},o.prototype.writeInt16BE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,2,32767,-32768),this[p]=w>>>8,this[p+1]=w&255,p+2},o.prototype.writeInt32LE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,4,2147483647,-2147483648),this[p]=w&255,this[p+1]=w>>>8,this[p+2]=w>>>16,this[p+3]=w>>>24,p+4},o.prototype.writeInt32BE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,4,2147483647,-2147483648),w<0&&(w=4294967295+w+1),this[p]=w>>>24,this[p+1]=w>>>16,this[p+2]=w>>>8,this[p+3]=w&255,p+4},o.prototype.writeBigInt64LE=se(function(w,p=0){return k(this,w,p,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),o.prototype.writeBigInt64BE=se(function(w,p=0){return Q(this,w,p,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function de(w,p,h,b,T,U){if(h+b>w.length)throw new RangeError("Index out of range");if(h<0)throw new RangeError("Index out of range")}function ge(w,p,h,b,T){return p=+p,h=h>>>0,T||de(w,p,h,4),e.write(w,p,h,b,23,4),h+4}o.prototype.writeFloatLE=function(w,p,h){return ge(this,w,p,!0,h)},o.prototype.writeFloatBE=function(w,p,h){return ge(this,w,p,!1,h)};function me(w,p,h,b,T){return p=+p,h=h>>>0,T||de(w,p,h,8),e.write(w,p,h,b,52,8),h+8}o.prototype.writeDoubleLE=function(w,p,h){return me(this,w,p,!0,h)},o.prototype.writeDoubleBE=function(w,p,h){return me(this,w,p,!1,h)},o.prototype.copy=function(w,p,h,b){if(!o.isBuffer(w))throw new TypeError("argument should be a Buffer");if(h||(h=0),!b&&b!==0&&(b=this.length),p>=w.length&&(p=w.length),p||(p=0),b>0&&b<h&&(b=h),b===h||w.length===0||this.length===0)return 0;if(p<0)throw new RangeError("targetStart out of bounds");if(h<0||h>=this.length)throw new RangeError("Index out of range");if(b<0)throw new RangeError("sourceEnd out of bounds");b>this.length&&(b=this.length),w.length-p<b-h&&(b=w.length-p+h);let T=b-h;return this===w&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(p,h,b):Uint8Array.prototype.set.call(w,this.subarray(h,b),p),T},o.prototype.fill=function(w,p,h,b){if(typeof w=="string"){if(typeof p=="string"?(b=p,p=0,h=this.length):typeof h=="string"&&(b=h,h=this.length),b!==void 0&&typeof b!="string")throw new TypeError("encoding must be a string");if(typeof b=="string"&&!o.isEncoding(b))throw new TypeError("Unknown encoding: "+b);if(w.length===1){let U=w.charCodeAt(0);(b==="utf8"&&U<128||b==="latin1")&&(w=U)}}else typeof w=="number"?w=w&255:typeof w=="boolean"&&(w=Number(w));if(p<0||this.length<p||this.length<h)throw new RangeError("Out of range index");if(h<=p)return this;p=p>>>0,h=h===void 0?this.length:h>>>0,w||(w=0);let T;if(typeof w=="number")for(T=p;T<h;++T)this[T]=w;else{let U=o.isBuffer(w)?w:o.from(w,b),ee=U.length;if(ee===0)throw new TypeError('The value "'+w+'" is invalid for argument "value"');for(T=0;T<h-p;++T)this[T+p]=U[T%ee]}return this};let X={};function K(w,p,h){X[w]=class extends h{constructor(){super(),Object.defineProperty(this,"message",{value:p.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${w}]`,this.stack,delete this.name}get code(){return w}set code(b){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:b,writable:!0})}toString(){return`${this.name} [${w}]: ${this.message}`}}}K("ERR_BUFFER_OUT_OF_BOUNDS",function(w){return w?`${w} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),K("ERR_INVALID_ARG_TYPE",function(w,p){return`The "${w}" argument must be of type number. Received type ${typeof p}`},TypeError),K("ERR_OUT_OF_RANGE",function(w,p,h){let b=`The value of "${w}" is out of range.`,T=h;return Number.isInteger(h)&&Math.abs(h)>2**32?T=ie(String(h)):typeof h=="bigint"&&(T=String(h),(h>BigInt(2)**BigInt(32)||h<-(BigInt(2)**BigInt(32)))&&(T=ie(T)),T+="n"),b+=` It must be ${p}. Received ${T}`,b},RangeError);function ie(w){let p="",h=w.length,b=w[0]==="-"?1:0;for(;h>=b+4;h-=3)p=`_${w.slice(h-3,h)}${p}`;return`${w.slice(0,h)}${p}`}function be(w,p,h){ce(p,"offset"),(w[p]===void 0||w[p+h]===void 0)&&C(p,w.length-(h+1))}function he(w,p,h,b,T,U){if(w>h||w<p){let ee=typeof p=="bigint"?"n":"",ye;throw p===0||p===BigInt(0)?ye=`>= 0${ee} and < 2${ee} ** ${(U+1)*8}${ee}`:ye=`>= -(2${ee} ** ${(U+1)*8-1}${ee}) and < 2 ** ${(U+1)*8-1}${ee}`,new X.ERR_OUT_OF_RANGE("value",ye,w)}be(b,T,U)}function ce(w,p){if(typeof w!="number")throw new X.ERR_INVALID_ARG_TYPE(p,"number",w)}function C(w,p,h){throw Math.floor(w)!==w?(ce(w,h),new X.ERR_OUT_OF_RANGE("offset","an integer",w)):p<0?new X.ERR_BUFFER_OUT_OF_BOUNDS:new X.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${p}`,w)}let P=/[^+/0-9A-Za-z-_]/g;function O(w){if(w=w.split("=")[0],w=w.trim().replace(P,""),w.length<2)return"";for(;w.length%4!==0;)w=w+"=";return w}function j(w,p){p=p||1/0;let h,b=w.length,T=null,U=[];for(let ee=0;ee<b;++ee){if(h=w.charCodeAt(ee),h>55295&&h<57344){if(!T){if(h>56319){(p-=3)>-1&&U.push(239,191,189);continue}else if(ee+1===b){(p-=3)>-1&&U.push(239,191,189);continue}T=h;continue}if(h<56320){(p-=3)>-1&&U.push(239,191,189),T=h;continue}h=(T-55296<<10|h-56320)+65536}else T&&(p-=3)>-1&&U.push(239,191,189);if(T=null,h<128){if((p-=1)<0)break;U.push(h)}else if(h<2048){if((p-=2)<0)break;U.push(h>>6|192,h&63|128)}else if(h<65536){if((p-=3)<0)break;U.push(h>>12|224,h>>6&63|128,h&63|128)}else if(h<1114112){if((p-=4)<0)break;U.push(h>>18|240,h>>12&63|128,h>>6&63|128,h&63|128)}else throw new Error("Invalid code point")}return U}function z(w){let p=[];for(let h=0;h<w.length;++h)p.push(w.charCodeAt(h)&255);return p}function oe(w,p){let h,b,T,U=[];for(let ee=0;ee<w.length&&!((p-=2)<0);++ee)h=w.charCodeAt(ee),b=h>>8,T=h%256,U.push(T),U.push(b);return U}function fe(w){return t.toByteArray(O(w))}function V(w,p,h,b){let T;for(T=0;T<b&&!(T+h>=p.length||T>=w.length);++T)p[T+h]=w[T];return T}function te(w,p){return w instanceof p||w!=null&&w.constructor!=null&&w.constructor.name!=null&&w.constructor.name===p.name}function F(w){return w!==w}let J=function(){let w="0123456789abcdef",p=new Array(256);for(let h=0;h<16;++h){let b=h*16;for(let T=0;T<16;++T)p[b+T]=w[h]+w[T]}return p}();function se(w){return typeof BigInt>"u"?pe:w}function pe(){throw new Error("BigInt not supported")}return Dn}var vs,dh,Do,hh,Dn,ph,Zr,tu,Qv,Jv,St=_t(()=>{we(),_e(),ve(),vs={},dh=!1,Do={},hh=!1,Dn={},ph=!1,Zr=NP(),Zr.Buffer,Zr.SlowBuffer,Zr.INSPECT_MAX_BYTES,Zr.kMaxLength,tu=Zr.Buffer,Qv=Zr.INSPECT_MAX_BYTES,Jv=Zr.kMaxLength}),_e=_t(()=>{St()}),DP=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0});var e=class{constructor(r){this.aliasToTopic={},this.max=r}put(r,n){return n===0||n>this.max?!1:(this.aliasToTopic[n]=r,this.length=Object.keys(this.aliasToTopic).length,!0)}getTopicByAlias(r){return this.aliasToTopic[r]}clear(){this.aliasToTopic={}}};t.default=e}),ht=Te((t,e)=>{we(),_e(),ve(),e.exports={ArrayIsArray(r){return Array.isArray(r)},ArrayPrototypeIncludes(r,n){return r.includes(n)},ArrayPrototypeIndexOf(r,n){return r.indexOf(n)},ArrayPrototypeJoin(r,n){return r.join(n)},ArrayPrototypeMap(r,n){return r.map(n)},ArrayPrototypePop(r,n){return r.pop(n)},ArrayPrototypePush(r,n){return r.push(n)},ArrayPrototypeSlice(r,n,s){return r.slice(n,s)},Error,FunctionPrototypeCall(r,n,...s){return r.call(n,...s)},FunctionPrototypeSymbolHasInstance(r,n){return Function.prototype[Symbol.hasInstance].call(r,n)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(r,n){return Object.defineProperties(r,n)},ObjectDefineProperty(r,n,s){return Object.defineProperty(r,n,s)},ObjectGetOwnPropertyDescriptor(r,n){return Object.getOwnPropertyDescriptor(r,n)},ObjectKeys(r){return Object.keys(r)},ObjectSetPrototypeOf(r,n){return Object.setPrototypeOf(r,n)},Promise,PromisePrototypeCatch(r,n){return r.catch(n)},PromisePrototypeThen(r,n,s){return r.then(n,s)},PromiseReject(r){return Promise.reject(r)},ReflectApply:Reflect.apply,RegExpPrototypeTest(r,n){return r.test(n)},SafeSet:Set,String,StringPrototypeSlice(r,n,s){return r.slice(n,s)},StringPrototypeToLowerCase(r){return r.toLowerCase()},StringPrototypeToUpperCase(r){return r.toUpperCase()},StringPrototypeTrim(r){return r.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,TypedArrayPrototypeSet(r,n,s){return r.set(n,s)},Uint8Array}}),_n=Te((t,e)=>{we(),_e(),ve();var r=(St(),Ke(Et)),n=Object.getPrototypeOf(async function(){}).constructor,s=globalThis.Blob||r.Blob,i=typeof s<"u"?function(a){return a instanceof s}:function(a){return!1},o=class extends Error{constructor(a){if(!Array.isArray(a))throw new TypeError(`Expected input to be an Array, got ${typeof a}`);let l="";for(let u=0;u<a.length;u++)l+=`    ${a[u].stack}
+`;super(l),this.name="AggregateError",this.errors=a}};e.exports={AggregateError:o,kEmptyObject:Object.freeze({}),once(a){let l=!1;return function(...u){l||(l=!0,a.apply(this,u))}},createDeferredPromise:function(){let a,l;return{promise:new Promise((u,c)=>{a=u,l=c}),resolve:a,reject:l}},promisify(a){return new Promise((l,u)=>{a((c,...f)=>c?u(c):l(...f))})},debuglog(){return function(){}},format(a,...l){return a.replace(/%([sdifj])/g,function(...[u,c]){let f=l.shift();return c==="f"?f.toFixed(6):c==="j"?JSON.stringify(f):c==="s"&&typeof f=="object"?`${f.constructor!==Object?f.constructor.name:""} {}`.trim():f.toString()})},inspect(a){switch(typeof a){case"string":if(a.includes("'"))if(a.includes('"')){if(!a.includes("`")&&!a.includes("${"))return`\`${a}\``}else return`"${a}"`;return`'${a}'`;case"number":return isNaN(a)?"NaN":Object.is(a,-0)?String(a):a;case"bigint":return`${String(a)}n`;case"boolean":case"undefined":return String(a);case"object":return"{}"}},types:{isAsyncFunction(a){return a instanceof n},isArrayBufferView(a){return ArrayBuffer.isView(a)}},isBlob:i},e.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),Qp=Te((t,e)=>{we(),_e(),ve();var{AbortController:r,AbortSignal:n}=typeof self<"u"?self:typeof window<"u"?window:void 0;e.exports=r,e.exports.AbortSignal=n,e.exports.default=r}),Ht=Te((t,e)=>{we(),_e(),ve();var{format:r,inspect:n,AggregateError:s}=_n(),i=globalThis.AggregateError||s,o=Symbol("kIsNodeError"),a=["string","function","number","object","Function","Object","boolean","bigint","symbol"],l=/^([A-Z][a-z0-9]*)+$/,u="__node_internal_",c={};function f(E,v){if(!E)throw new c.ERR_INTERNAL_ASSERTION(v)}function d(E){let v="",x=E.length,M=E[0]==="-"?1:0;for(;x>=M+4;x-=3)v=`_${E.slice(x-3,x)}${v}`;return`${E.slice(0,x)}${v}`}function g(E,v,x){if(typeof v=="function")return f(v.length<=x.length,`Code: ${E}; The provided arguments length (${x.length}) does not match the required ones (${v.length}).`),v(...x);let M=(v.match(/%[dfijoOs]/g)||[]).length;return f(M===x.length,`Code: ${E}; The provided arguments length (${x.length}) does not match the required ones (${M}).`),x.length===0?v:r(v,...x)}function m(E,v,x){x||(x=Error);class M extends x{constructor(...L){super(g(E,v,L))}toString(){return`${this.name} [${E}]: ${this.message}`}}Object.defineProperties(M.prototype,{name:{value:x.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${E}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),M.prototype.code=E,M.prototype[o]=!0,c[E]=M}function y(E){let v=u+E.name;return Object.defineProperty(E,"name",{value:v}),E}function _(E,v){if(E&&v&&E!==v){if(Array.isArray(v.errors))return v.errors.push(E),v;let x=new i([v,E],v.message);return x.code=v.code,x}return E||v}var S=class extends Error{constructor(E="The operation was aborted",v=void 0){if(v!==void 0&&typeof v!="object")throw new c.ERR_INVALID_ARG_TYPE("options","Object",v);super(E,v),this.code="ABORT_ERR",this.name="AbortError"}};m("ERR_ASSERTION","%s",Error),m("ERR_INVALID_ARG_TYPE",(E,v,x)=>{f(typeof E=="string","'name' must be a string"),Array.isArray(v)||(v=[v]);let M="The ";E.endsWith(" argument")?M+=`${E} `:M+=`"${E}" ${E.includes(".")?"property":"argument"} `,M+="must be ";let A=[],L=[],D=[];for(let q of v)f(typeof q=="string","All expected entries have to be of type string"),a.includes(q)?A.push(q.toLowerCase()):l.test(q)?L.push(q):(f(q!=="object",'The value "object" should be written as "Object"'),D.push(q));if(L.length>0){let q=A.indexOf("object");q!==-1&&(A.splice(A,q,1),L.push("Object"))}if(A.length>0){switch(A.length){case 1:M+=`of type ${A[0]}`;break;case 2:M+=`one of type ${A[0]} or ${A[1]}`;break;default:{let q=A.pop();M+=`one of type ${A.join(", ")}, or ${q}`}}(L.length>0||D.length>0)&&(M+=" or ")}if(L.length>0){switch(L.length){case 1:M+=`an instance of ${L[0]}`;break;case 2:M+=`an instance of ${L[0]} or ${L[1]}`;break;default:{let q=L.pop();M+=`an instance of ${L.join(", ")}, or ${q}`}}D.length>0&&(M+=" or ")}switch(D.length){case 0:break;case 1:D[0].toLowerCase()!==D[0]&&(M+="an "),M+=`${D[0]}`;break;case 2:M+=`one of ${D[0]} or ${D[1]}`;break;default:{let q=D.pop();M+=`one of ${D.join(", ")}, or ${q}`}}if(x==null)M+=`. Received ${x}`;else if(typeof x=="function"&&x.name)M+=`. Received function ${x.name}`;else if(typeof x=="object"){var B;if((B=x.constructor)!==null&&B!==void 0&&B.name)M+=`. Received an instance of ${x.constructor.name}`;else{let q=n(x,{depth:-1});M+=`. Received ${q}`}}else{let q=n(x,{colors:!1});q.length>25&&(q=`${q.slice(0,25)}...`),M+=`. Received type ${typeof x} (${q})`}return M},TypeError),m("ERR_INVALID_ARG_VALUE",(E,v,x="is invalid")=>{let M=n(v);return M.length>128&&(M=M.slice(0,128)+"..."),`The ${E.includes(".")?"property":"argument"} '${E}' ${x}. Received ${M}`},TypeError),m("ERR_INVALID_RETURN_VALUE",(E,v,x)=>{var M;let A=x!=null&&(M=x.constructor)!==null&&M!==void 0&&M.name?`instance of ${x.constructor.name}`:`type ${typeof x}`;return`Expected ${E} to be returned from the "${v}" function but got ${A}.`},TypeError),m("ERR_MISSING_ARGS",(...E)=>{f(E.length>0,"At least one arg needs to be specified");let v,x=E.length;switch(E=(Array.isArray(E)?E:[E]).map(M=>`"${M}"`).join(" or "),x){case 1:v+=`The ${E[0]} argument`;break;case 2:v+=`The ${E[0]} and ${E[1]} arguments`;break;default:{let M=E.pop();v+=`The ${E.join(", ")}, and ${M} arguments`}break}return`${v} must be specified`},TypeError),m("ERR_OUT_OF_RANGE",(E,v,x)=>{f(v,'Missing "range" argument');let M;return Number.isInteger(x)&&Math.abs(x)>2**32?M=d(String(x)):typeof x=="bigint"?(M=String(x),(x>2n**32n||x<-(2n**32n))&&(M=d(M)),M+="n"):M=n(x),`The value of "${E}" is out of range. It must be ${v}. Received ${M}`},RangeError),m("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),m("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),m("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),m("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),m("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),m("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),m("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),m("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),m("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),m("ERR_STREAM_WRITE_AFTER_END","write after end",Error),m("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),e.exports={AbortError:S,aggregateTwoErrors:y(_),hideStackFrames:y,codes:c}}),Lu=Te((t,e)=>{we(),_e(),ve();var{ArrayIsArray:r,ArrayPrototypeIncludes:n,ArrayPrototypeJoin:s,ArrayPrototypeMap:i,NumberIsInteger:o,NumberIsNaN:a,NumberMAX_SAFE_INTEGER:l,NumberMIN_SAFE_INTEGER:u,NumberParseInt:c,ObjectPrototypeHasOwnProperty:f,RegExpPrototypeExec:d,String:g,StringPrototypeToUpperCase:m,StringPrototypeTrim:y}=ht(),{hideStackFrames:_,codes:{ERR_SOCKET_BAD_PORT:S,ERR_INVALID_ARG_TYPE:E,ERR_INVALID_ARG_VALUE:v,ERR_OUT_OF_RANGE:x,ERR_UNKNOWN_SIGNAL:M}}=Ht(),{normalizeEncoding:A}=_n(),{isAsyncFunction:L,isArrayBufferView:D}=_n().types,B={};function q(V){return V===(V|0)}function Y(V){return V===V>>>0}var R=/^[0-7]+$/,I="must be a 32-bit unsigned integer or an octal string";function N(V,te,F){if(typeof V>"u"&&(V=F),typeof V=="string"){if(d(R,V)===null)throw new v(te,V,I);V=c(V,8)}return H(V,te),V}var W=_((V,te,F=u,J=l)=>{if(typeof V!="number")throw new E(te,"number",V);if(!o(V))throw new x(te,"an integer",V);if(V<F||V>J)throw new x(te,`>= ${F} && <= ${J}`,V)}),G=_((V,te,F=-2147483648,J=2147483647)=>{if(typeof V!="number")throw new E(te,"number",V);if(!o(V))throw new x(te,"an integer",V);if(V<F||V>J)throw new x(te,`>= ${F} && <= ${J}`,V)}),H=_((V,te,F=!1)=>{if(typeof V!="number")throw new E(te,"number",V);if(!o(V))throw new x(te,"an integer",V);let J=F?1:0,se=4294967295;if(V<J||V>se)throw new x(te,`>= ${J} && <= ${se}`,V)});function $(V,te){if(typeof V!="string")throw new E(te,"string",V)}function ne(V,te,F=void 0,J){if(typeof V!="number")throw new E(te,"number",V);if(F!=null&&V<F||J!=null&&V>J||(F!=null||J!=null)&&a(V))throw new x(te,`${F!=null?`>= ${F}`:""}${F!=null&&J!=null?" && ":""}${J!=null?`<= ${J}`:""}`,V)}var ue=_((V,te,F)=>{if(!n(F,V)){let J="must be one of: "+s(i(F,se=>typeof se=="string"?`'${se}'`:g(se)),", ");throw new v(te,V,J)}});function re(V,te){if(typeof V!="boolean")throw new E(te,"boolean",V)}function k(V,te,F){return V==null||!f(V,te)?F:V[te]}var Q=_((V,te,F=null)=>{let J=k(F,"allowArray",!1),se=k(F,"allowFunction",!1);if(!k(F,"nullable",!1)&&V===null||!J&&r(V)||typeof V!="object"&&(!se||typeof V!="function"))throw new E(te,"Object",V)}),de=_((V,te)=>{if(V!=null&&typeof V!="object"&&typeof V!="function")throw new E(te,"a dictionary",V)}),ge=_((V,te,F=0)=>{if(!r(V))throw new E(te,"Array",V);if(V.length<F){let J=`must be longer than ${F}`;throw new v(te,V,J)}});function me(V,te){ge(V,te);for(let F=0;F<V.length;F++)$(V[F],`${te}[${F}]`)}function X(V,te){ge(V,te);for(let F=0;F<V.length;F++)re(V[F],`${te}[${F}]`)}function K(V,te="signal"){if($(V,te),B[V]===void 0)throw B[m(V)]!==void 0?new M(V+" (signals must use all capital letters)"):new M(V)}var ie=_((V,te="buffer")=>{if(!D(V))throw new E(te,["Buffer","TypedArray","DataView"],V)});function be(V,te){let F=A(te),J=V.length;if(F==="hex"&&J%2!==0)throw new v("encoding",te,`is invalid for data of length ${J}`)}function he(V,te="Port",F=!0){if(typeof V!="number"&&typeof V!="string"||typeof V=="string"&&y(V).length===0||+V!==+V>>>0||V>65535||V===0&&!F)throw new S(te,V,F);return V|0}var ce=_((V,te)=>{if(V!==void 0&&(V===null||typeof V!="object"||!("aborted"in V)))throw new E(te,"AbortSignal",V)}),C=_((V,te)=>{if(typeof V!="function")throw new E(te,"Function",V)}),P=_((V,te)=>{if(typeof V!="function"||L(V))throw new E(te,"Function",V)}),O=_((V,te)=>{if(V!==void 0)throw new E(te,"undefined",V)});function j(V,te,F){if(!n(F,V))throw new E(te,`('${s(F,"|")}')`,V)}var z=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function oe(V,te){if(typeof V>"u"||!d(z,V))throw new v(te,V,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function fe(V){if(typeof V=="string")return oe(V,"hints"),V;if(r(V)){let te=V.length,F="";if(te===0)return F;for(let J=0;J<te;J++){let se=V[J];oe(se,"hints"),F+=se,J!==te-1&&(F+=", ")}return F}throw new v("hints",V,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}e.exports={isInt32:q,isUint32:Y,parseFileMode:N,validateArray:ge,validateStringArray:me,validateBooleanArray:X,validateBoolean:re,validateBuffer:ie,validateDictionary:de,validateEncoding:be,validateFunction:C,validateInt32:G,validateInteger:W,validateNumber:ne,validateObject:Q,validateOneOf:ue,validatePlainFunction:P,validatePort:he,validateSignalName:K,validateString:$,validateUint32:H,validateUndefined:O,validateUnion:j,validateAbortSignal:ce,validateLinkHeaderValue:fe}}),ns=Te((t,e)=>{we(),_e(),ve();var r=e.exports={},n,s;function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?n=setTimeout:n=i}catch{n=i}try{typeof clearTimeout=="function"?s=clearTimeout:s=o}catch{s=o}})();function a(S){if(n===setTimeout)return setTimeout(S,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(S,0);try{return n(S,0)}catch{try{return n.call(null,S,0)}catch{return n.call(this,S,0)}}}function l(S){if(s===clearTimeout)return clearTimeout(S);if((s===o||!s)&&clearTimeout)return s=clearTimeout,clearTimeout(S);try{return s(S)}catch{try{return s.call(null,S)}catch{return s.call(this,S)}}}var u=[],c=!1,f,d=-1;function g(){!c||!f||(c=!1,f.length?u=f.concat(u):d=-1,u.length&&m())}function m(){if(!c){var S=a(g);c=!0;for(var E=u.length;E;){for(f=u,u=[];++d<E;)f&&f[d].run();d=-1,E=u.length}f=null,c=!1,l(S)}}r.nextTick=function(S){var E=new Array(arguments.length-1);if(arguments.length>1)for(var v=1;v<arguments.length;v++)E[v-1]=arguments[v];u.push(new y(S,E)),u.length===1&&!c&&a(m)};function y(S,E){this.fun=S,this.array=E}y.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={};function _(){}r.on=_,r.addListener=_,r.once=_,r.off=_,r.removeListener=_,r.removeAllListeners=_,r.emit=_,r.prependListener=_,r.prependOnceListener=_,r.listeners=function(S){return[]},r.binding=function(S){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(S){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}}),In=Te((t,e)=>{we(),_e(),ve();var{Symbol:r,SymbolAsyncIterator:n,SymbolIterator:s,SymbolFor:i}=ht(),o=r("kDestroyed"),a=r("kIsErrored"),l=r("kIsReadable"),u=r("kIsDisturbed"),c=i("nodejs.webstream.isClosedPromise"),f=i("nodejs.webstream.controllerErrorFunction");function d(k,Q=!1){var de;return!!(k&&typeof k.pipe=="function"&&typeof k.on=="function"&&(!Q||typeof k.pause=="function"&&typeof k.resume=="function")&&(!k._writableState||((de=k._readableState)===null||de===void 0?void 0:de.readable)!==!1)&&(!k._writableState||k._readableState))}function g(k){var Q;return!!(k&&typeof k.write=="function"&&typeof k.on=="function"&&(!k._readableState||((Q=k._writableState)===null||Q===void 0?void 0:Q.writable)!==!1))}function m(k){return!!(k&&typeof k.pipe=="function"&&k._readableState&&typeof k.on=="function"&&typeof k.write=="function")}function y(k){return k&&(k._readableState||k._writableState||typeof k.write=="function"&&typeof k.on=="function"||typeof k.pipe=="function"&&typeof k.on=="function")}function _(k){return!!(k&&!y(k)&&typeof k.pipeThrough=="function"&&typeof k.getReader=="function"&&typeof k.cancel=="function")}function S(k){return!!(k&&!y(k)&&typeof k.getWriter=="function"&&typeof k.abort=="function")}function E(k){return!!(k&&!y(k)&&typeof k.readable=="object"&&typeof k.writable=="object")}function v(k){return _(k)||S(k)||E(k)}function x(k,Q){return k==null?!1:Q===!0?typeof k[n]=="function":Q===!1?typeof k[s]=="function":typeof k[n]=="function"||typeof k[s]=="function"}function M(k){if(!y(k))return null;let Q=k._writableState,de=k._readableState,ge=Q||de;return!!(k.destroyed||k[o]||ge!=null&&ge.destroyed)}function A(k){if(!g(k))return null;if(k.writableEnded===!0)return!0;let Q=k._writableState;return Q!=null&&Q.errored?!1:typeof(Q==null?void 0:Q.ended)!="boolean"?null:Q.ended}function L(k,Q){if(!g(k))return null;if(k.writableFinished===!0)return!0;let de=k._writableState;return de!=null&&de.errored?!1:typeof(de==null?void 0:de.finished)!="boolean"?null:!!(de.finished||Q===!1&&de.ended===!0&&de.length===0)}function D(k){if(!d(k))return null;if(k.readableEnded===!0)return!0;let Q=k._readableState;return!Q||Q.errored?!1:typeof(Q==null?void 0:Q.ended)!="boolean"?null:Q.ended}function B(k,Q){if(!d(k))return null;let de=k._readableState;return de!=null&&de.errored?!1:typeof(de==null?void 0:de.endEmitted)!="boolean"?null:!!(de.endEmitted||Q===!1&&de.ended===!0&&de.length===0)}function q(k){return k&&k[l]!=null?k[l]:typeof(k==null?void 0:k.readable)!="boolean"?null:M(k)?!1:d(k)&&k.readable&&!B(k)}function Y(k){return typeof(k==null?void 0:k.writable)!="boolean"?null:M(k)?!1:g(k)&&k.writable&&!A(k)}function R(k,Q){return y(k)?M(k)?!0:!((Q==null?void 0:Q.readable)!==!1&&q(k)||(Q==null?void 0:Q.writable)!==!1&&Y(k)):null}function I(k){var Q,de;return y(k)?k.writableErrored?k.writableErrored:(Q=(de=k._writableState)===null||de===void 0?void 0:de.errored)!==null&&Q!==void 0?Q:null:null}function N(k){var Q,de;return y(k)?k.readableErrored?k.readableErrored:(Q=(de=k._readableState)===null||de===void 0?void 0:de.errored)!==null&&Q!==void 0?Q:null:null}function W(k){if(!y(k))return null;if(typeof k.closed=="boolean")return k.closed;let Q=k._writableState,de=k._readableState;return typeof(Q==null?void 0:Q.closed)=="boolean"||typeof(de==null?void 0:de.closed)=="boolean"?(Q==null?void 0:Q.closed)||(de==null?void 0:de.closed):typeof k._closed=="boolean"&&G(k)?k._closed:null}function G(k){return typeof k._closed=="boolean"&&typeof k._defaultKeepAlive=="boolean"&&typeof k._removedConnection=="boolean"&&typeof k._removedContLen=="boolean"}function H(k){return typeof k._sent100=="boolean"&&G(k)}function $(k){var Q;return typeof k._consuming=="boolean"&&typeof k._dumped=="boolean"&&((Q=k.req)===null||Q===void 0?void 0:Q.upgradeOrConnect)===void 0}function ne(k){if(!y(k))return null;let Q=k._writableState,de=k._readableState,ge=Q||de;return!ge&&H(k)||!!(ge&&ge.autoDestroy&&ge.emitClose&&ge.closed===!1)}function ue(k){var Q;return!!(k&&((Q=k[u])!==null&&Q!==void 0?Q:k.readableDidRead||k.readableAborted))}function re(k){var Q,de,ge,me,X,K,ie,be,he,ce;return!!(k&&((Q=(de=(ge=(me=(X=(K=k[a])!==null&&K!==void 0?K:k.readableErrored)!==null&&X!==void 0?X:k.writableErrored)!==null&&me!==void 0?me:(ie=k._readableState)===null||ie===void 0?void 0:ie.errorEmitted)!==null&&ge!==void 0?ge:(be=k._writableState)===null||be===void 0?void 0:be.errorEmitted)!==null&&de!==void 0?de:(he=k._readableState)===null||he===void 0?void 0:he.errored)!==null&&Q!==void 0?Q:!((ce=k._writableState)===null||ce===void 0)&&ce.errored))}e.exports={kDestroyed:o,isDisturbed:ue,kIsDisturbed:u,isErrored:re,kIsErrored:a,isReadable:q,kIsReadable:l,kIsClosedPromise:c,kControllerErrorFunction:f,isClosed:W,isDestroyed:M,isDuplexNodeStream:m,isFinished:R,isIterable:x,isReadableNodeStream:d,isReadableStream:_,isReadableEnded:D,isReadableFinished:B,isReadableErrored:N,isNodeStream:y,isWebStream:v,isWritable:Y,isWritableNodeStream:g,isWritableStream:S,isWritableEnded:A,isWritableFinished:L,isWritableErrored:I,isServerRequest:$,isServerResponse:H,willEmitClose:ne,isTransformStream:E}}),ii=Te((t,e)=>{we(),_e(),ve();var r=ns(),{AbortError:n,codes:s}=Ht(),{ERR_INVALID_ARG_TYPE:i,ERR_STREAM_PREMATURE_CLOSE:o}=s,{kEmptyObject:a,once:l}=_n(),{validateAbortSignal:u,validateFunction:c,validateObject:f,validateBoolean:d}=Lu(),{Promise:g,PromisePrototypeThen:m}=ht(),{isClosed:y,isReadable:_,isReadableNodeStream:S,isReadableStream:E,isReadableFinished:v,isReadableErrored:x,isWritable:M,isWritableNodeStream:A,isWritableStream:L,isWritableFinished:D,isWritableErrored:B,isNodeStream:q,willEmitClose:Y,kIsClosedPromise:R}=In();function I($){return $.setHeader&&typeof $.abort=="function"}var N=()=>{};function W($,ne,ue){var re,k;if(arguments.length===2?(ue=ne,ne=a):ne==null?ne=a:f(ne,"options"),c(ue,"callback"),u(ne.signal,"options.signal"),ue=l(ue),E($)||L($))return G($,ne,ue);if(!q($))throw new i("stream",["ReadableStream","WritableStream","Stream"],$);let Q=(re=ne.readable)!==null&&re!==void 0?re:S($),de=(k=ne.writable)!==null&&k!==void 0?k:A($),ge=$._writableState,me=$._readableState,X=()=>{$.writable||be()},K=Y($)&&S($)===Q&&A($)===de,ie=D($,!1),be=()=>{ie=!0,$.destroyed&&(K=!1),!(K&&(!$.readable||Q))&&(!Q||he)&&ue.call($)},he=v($,!1),ce=()=>{he=!0,$.destroyed&&(K=!1),!(K&&(!$.writable||de))&&(!de||ie)&&ue.call($)},C=fe=>{ue.call($,fe)},P=y($),O=()=>{P=!0;let fe=B($)||x($);if(fe&&typeof fe!="boolean")return ue.call($,fe);if(Q&&!he&&S($,!0)&&!v($,!1))return ue.call($,new o);if(de&&!ie&&!D($,!1))return ue.call($,new o);ue.call($)},j=()=>{P=!0;let fe=B($)||x($);if(fe&&typeof fe!="boolean")return ue.call($,fe);ue.call($)},z=()=>{$.req.on("finish",be)};I($)?($.on("complete",be),K||$.on("abort",O),$.req?z():$.on("request",z)):de&&!ge&&($.on("end",X),$.on("close",X)),!K&&typeof $.aborted=="boolean"&&$.on("aborted",O),$.on("end",ce),$.on("finish",be),ne.error!==!1&&$.on("error",C),$.on("close",O),P?r.nextTick(O):ge!=null&&ge.errorEmitted||me!=null&&me.errorEmitted?K||r.nextTick(j):(!Q&&(!K||_($))&&(ie||M($)===!1)||!de&&(!K||M($))&&(he||_($)===!1)||me&&$.req&&$.aborted)&&r.nextTick(j);let oe=()=>{ue=N,$.removeListener("aborted",O),$.removeListener("complete",be),$.removeListener("abort",O),$.removeListener("request",z),$.req&&$.req.removeListener("finish",be),$.removeListener("end",X),$.removeListener("close",X),$.removeListener("finish",be),$.removeListener("end",ce),$.removeListener("error",C),$.removeListener("close",O)};if(ne.signal&&!P){let fe=()=>{let V=ue;oe(),V.call($,new n(void 0,{cause:ne.signal.reason}))};if(ne.signal.aborted)r.nextTick(fe);else{let V=ue;ue=l((...te)=>{ne.signal.removeEventListener("abort",fe),V.apply($,te)}),ne.signal.addEventListener("abort",fe)}}return oe}function G($,ne,ue){let re=!1,k=N;if(ne.signal)if(k=()=>{re=!0,ue.call($,new n(void 0,{cause:ne.signal.reason}))},ne.signal.aborted)r.nextTick(k);else{let de=ue;ue=l((...ge)=>{ne.signal.removeEventListener("abort",k),de.apply($,ge)}),ne.signal.addEventListener("abort",k)}let Q=(...de)=>{re||r.nextTick(()=>ue.apply($,de))};return m($[R].promise,Q,Q),N}function H($,ne){var ue;let re=!1;return ne===null&&(ne=a),(ue=ne)!==null&&ue!==void 0&&ue.cleanup&&(d(ne.cleanup,"cleanup"),re=ne.cleanup),new g((k,Q)=>{let de=W($,ne,ge=>{re&&de(),ge?Q(ge):k()})})}e.exports=W,e.exports.finished=H}),io=Te((t,e)=>{we(),_e(),ve();var r=ns(),{aggregateTwoErrors:n,codes:{ERR_MULTIPLE_CALLBACK:s},AbortError:i}=Ht(),{Symbol:o}=ht(),{kDestroyed:a,isDestroyed:l,isFinished:u,isServerRequest:c}=In(),f=o("kDestroy"),d=o("kConstruct");function g(R,I,N){R&&(R.stack,I&&!I.errored&&(I.errored=R),N&&!N.errored&&(N.errored=R))}function m(R,I){let N=this._readableState,W=this._writableState,G=W||N;return W!=null&&W.destroyed||N!=null&&N.destroyed?(typeof I=="function"&&I(),this):(g(R,W,N),W&&(W.destroyed=!0),N&&(N.destroyed=!0),G.constructed?y(this,R,I):this.once(f,function(H){y(this,n(H,R),I)}),this)}function y(R,I,N){let W=!1;function G(H){if(W)return;W=!0;let $=R._readableState,ne=R._writableState;g(H,ne,$),ne&&(ne.closed=!0),$&&($.closed=!0),typeof N=="function"&&N(H),H?r.nextTick(_,R,H):r.nextTick(S,R)}try{R._destroy(I||null,G)}catch(H){G(H)}}function _(R,I){E(R,I),S(R)}function S(R){let I=R._readableState,N=R._writableState;N&&(N.closeEmitted=!0),I&&(I.closeEmitted=!0),(N!=null&&N.emitClose||I!=null&&I.emitClose)&&R.emit("close")}function E(R,I){let N=R._readableState,W=R._writableState;W!=null&&W.errorEmitted||N!=null&&N.errorEmitted||(W&&(W.errorEmitted=!0),N&&(N.errorEmitted=!0),R.emit("error",I))}function v(){let R=this._readableState,I=this._writableState;R&&(R.constructed=!0,R.closed=!1,R.closeEmitted=!1,R.destroyed=!1,R.errored=null,R.errorEmitted=!1,R.reading=!1,R.ended=R.readable===!1,R.endEmitted=R.readable===!1),I&&(I.constructed=!0,I.destroyed=!1,I.closed=!1,I.closeEmitted=!1,I.errored=null,I.errorEmitted=!1,I.finalCalled=!1,I.prefinished=!1,I.ended=I.writable===!1,I.ending=I.writable===!1,I.finished=I.writable===!1)}function x(R,I,N){let W=R._readableState,G=R._writableState;if(G!=null&&G.destroyed||W!=null&&W.destroyed)return this;W!=null&&W.autoDestroy||G!=null&&G.autoDestroy?R.destroy(I):I&&(I.stack,G&&!G.errored&&(G.errored=I),W&&!W.errored&&(W.errored=I),N?r.nextTick(E,R,I):E(R,I))}function M(R,I){if(typeof R._construct!="function")return;let N=R._readableState,W=R._writableState;N&&(N.constructed=!1),W&&(W.constructed=!1),R.once(d,I),!(R.listenerCount(d)>1)&&r.nextTick(A,R)}function A(R){let I=!1;function N(W){if(I){x(R,W??new s);return}I=!0;let G=R._readableState,H=R._writableState,$=H||G;G&&(G.constructed=!0),H&&(H.constructed=!0),$.destroyed?R.emit(f,W):W?x(R,W,!0):r.nextTick(L,R)}try{R._construct(W=>{r.nextTick(N,W)})}catch(W){r.nextTick(N,W)}}function L(R){R.emit(d)}function D(R){return(R==null?void 0:R.setHeader)&&typeof R.abort=="function"}function B(R){R.emit("close")}function q(R,I){R.emit("error",I),r.nextTick(B,R)}function Y(R,I){!R||l(R)||(!I&&!u(R)&&(I=new i),c(R)?(R.socket=null,R.destroy(I)):D(R)?R.abort():D(R.req)?R.req.abort():typeof R.destroy=="function"?R.destroy(I):typeof R.close=="function"?R.close():I?r.nextTick(q,R,I):r.nextTick(B,R),R.destroyed||(R[a]=!0))}e.exports={construct:M,destroyer:Y,destroy:m,undestroy:v,errorOrDestroy:x}});function Ye(){Ye.init.call(this)}function _l(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function Zv(t){return t._maxListeners===void 0?Ye.defaultMaxListeners:t._maxListeners}function b0(t,e,r,n){var s,i,o,a;if(_l(r),(i=t._events)===void 0?(i=t._events=Object.create(null),t._eventsCount=0):(i.newListener!==void 0&&(t.emit("newListener",e,r.listener?r.listener:r),i=t._events),o=i[e]),o===void 0)o=i[e]=r,++t._eventsCount;else if(typeof o=="function"?o=i[e]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(s=Zv(t))>0&&o.length>s&&!o.warned){o.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=o.length,a=l,console&&console.warn&&console.warn(a)}return t}function BP(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function y0(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},s=BP.bind(n);return s.listener=r,n.wrapFn=s,s}function w0(t,e,r){var n=t._events;if(n===void 0)return[];var s=n[e];return s===void 0?[]:typeof s=="function"?r?[s.listener||s]:[s]:r?function(i){for(var o=new Array(i.length),a=0;a<o.length;++a)o[a]=i[a].listener||i[a];return o}(s):e_(s,s.length)}function v0(t){var e=this._events;if(e!==void 0){var r=e[t];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}function e_(t,e){for(var r=new Array(e),n=0;n<e;++n)r[n]=t[n];return r}var _0,E0,gi,kc,Lc,Nc,Yt,S0=_t(()=>{we(),_e(),ve(),gi=typeof Reflect=="object"?Reflect:null,kc=gi&&typeof gi.apply=="function"?gi.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)},E0=gi&&typeof gi.ownKeys=="function"?gi.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)},Lc=Number.isNaN||function(t){return t!=t},_0=Ye,Ye.EventEmitter=Ye,Ye.prototype._events=void 0,Ye.prototype._eventsCount=0,Ye.prototype._maxListeners=void 0,Nc=10,Object.defineProperty(Ye,"defaultMaxListeners",{enumerable:!0,get:function(){return Nc},set:function(t){if(typeof t!="number"||t<0||Lc(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");Nc=t}}),Ye.init=function(){this._events!==void 0&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ye.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||Lc(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this},Ye.prototype.getMaxListeners=function(){return Zv(this)},Ye.prototype.emit=function(t){for(var e=[],r=1;r<arguments.length;r++)e.push(arguments[r]);var n=t==="error",s=this._events;if(s!==void 0)n=n&&s.error===void 0;else if(!n)return!1;if(n){var i;if(e.length>0&&(i=e[0]),i instanceof Error)throw i;var o=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw o.context=i,o}var a=s[t];if(a===void 0)return!1;if(typeof a=="function")kc(a,this,e);else{var l=a.length,u=e_(a,l);for(r=0;r<l;++r)kc(u[r],this,e)}return!0},Ye.prototype.addListener=function(t,e){return b0(this,t,e,!1)},Ye.prototype.on=Ye.prototype.addListener,Ye.prototype.prependListener=function(t,e){return b0(this,t,e,!0)},Ye.prototype.once=function(t,e){return _l(e),this.on(t,y0(this,t,e)),this},Ye.prototype.prependOnceListener=function(t,e){return _l(e),this.prependListener(t,y0(this,t,e)),this},Ye.prototype.removeListener=function(t,e){var r,n,s,i,o;if(_l(e),(n=this._events)===void 0)return this;if((r=n[t])===void 0)return this;if(r===e||r.listener===e)--this._eventsCount==0?this._events=Object.create(null):(delete n[t],n.removeListener&&this.emit("removeListener",t,r.listener||e));else if(typeof r!="function"){for(s=-1,i=r.length-1;i>=0;i--)if(r[i]===e||r[i].listener===e){o=r[i].listener,s=i;break}if(s<0)return this;s===0?r.shift():function(a,l){for(;l+1<a.length;l++)a[l]=a[l+1];a.pop()}(r,s),r.length===1&&(n[t]=r[0]),n.removeListener!==void 0&&this.emit("removeListener",t,o||e)}return this},Ye.prototype.off=Ye.prototype.removeListener,Ye.prototype.removeAllListeners=function(t){var e,r,n;if((r=this._events)===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[t]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete r[t]),this;if(arguments.length===0){var s,i=Object.keys(r);for(n=0;n<i.length;++n)(s=i[n])!=="removeListener"&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(typeof(e=r[t])=="function")this.removeListener(t,e);else if(e!==void 0)for(n=e.length-1;n>=0;n--)this.removeListener(t,e[n]);return this},Ye.prototype.listeners=function(t){return w0(this,t,!0)},Ye.prototype.rawListeners=function(t){return w0(this,t,!1)},Ye.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):v0.call(t,e)},Ye.prototype.listenerCount=v0,Ye.prototype.eventNames=function(){return this._eventsCount>0?E0(this._events):[]},Yt=_0,Yt.EventEmitter,Yt.defaultMaxListeners,Yt.init,Yt.listenerCount,Yt.EventEmitter,Yt.defaultMaxListeners,Yt.init,Yt.listenerCount}),is={};rs(is,{EventEmitter:()=>t_,default:()=>Yt,defaultMaxListeners:()=>r_,init:()=>n_,listenerCount:()=>i_,on:()=>s_,once:()=>o_});var t_,r_,n_,i_,s_,o_,so=_t(()=>{we(),_e(),ve(),S0(),S0(),Yt.once=function(t,e){return new Promise((r,n)=>{function s(...o){i!==void 0&&t.removeListener("error",i),r(o)}let i;e!=="error"&&(i=o=>{t.removeListener(name,s),n(o)},t.once("error",i)),t.once(e,s)})},Yt.on=function(t,e){let r=[],n=[],s=null,i=!1,o={async next(){let u=r.shift();if(u)return createIterResult(u,!1);if(s){let c=Promise.reject(s);return s=null,c}return i?createIterResult(void 0,!0):new Promise((c,f)=>n.push({resolve:c,reject:f}))},async return(){t.removeListener(e,a),t.removeListener("error",l),i=!0;for(let u of n)u.resolve(createIterResult(void 0,!0));return createIterResult(void 0,!0)},throw(u){s=u,t.removeListener(e,a),t.removeListener("error",l)},[Symbol.asyncIterator](){return this}};return t.on(e,a),t.on("error",l),o;function a(...u){let c=n.shift();c?c.resolve(createIterResult(u,!1)):r.push(u)}function l(u){i=!0;let c=n.shift();c?c.reject(u):s=u,o.return()}},{EventEmitter:t_,defaultMaxListeners:r_,init:n_,listenerCount:i_,on:s_,once:o_}=Yt}),Jp=Te((t,e)=>{we(),_e(),ve();var{ArrayIsArray:r,ObjectSetPrototypeOf:n}=ht(),{EventEmitter:s}=(so(),Ke(is));function i(a){s.call(this,a)}n(i.prototype,s.prototype),n(i,s),i.prototype.pipe=function(a,l){let u=this;function c(S){a.writable&&a.write(S)===!1&&u.pause&&u.pause()}u.on("data",c);function f(){u.readable&&u.resume&&u.resume()}a.on("drain",f),!a._isStdio&&(!l||l.end!==!1)&&(u.on("end",g),u.on("close",m));let d=!1;function g(){d||(d=!0,a.end())}function m(){d||(d=!0,typeof a.destroy=="function"&&a.destroy())}function y(S){_(),s.listenerCount(this,"error")===0&&this.emit("error",S)}o(u,"error",y),o(a,"error",y);function _(){u.removeListener("data",c),a.removeListener("drain",f),u.removeListener("end",g),u.removeListener("close",m),u.removeListener("error",y),a.removeListener("error",y),u.removeListener("end",_),u.removeListener("close",_),a.removeListener("close",_)}return u.on("end",_),u.on("close",_),a.on("close",_),a.emit("pipe",u),a};function o(a,l,u){if(typeof a.prependListener=="function")return a.prependListener(l,u);!a._events||!a._events[l]?a.on(l,u):r(a._events[l])?a._events[l].unshift(u):a._events[l]=[u,a._events[l]]}e.exports={Stream:i,prependListener:o}}),Nu=Te((t,e)=>{we(),_e(),ve();var{AbortError:r,codes:n}=Ht(),{isNodeStream:s,isWebStream:i,kControllerErrorFunction:o}=In(),a=ii(),{ERR_INVALID_ARG_TYPE:l}=n,u=(c,f)=>{if(typeof c!="object"||!("aborted"in c))throw new l(f,"AbortSignal",c)};e.exports.addAbortSignal=function(c,f){if(u(c,"signal"),!s(f)&&!i(f))throw new l("stream",["ReadableStream","WritableStream","Stream"],f);return e.exports.addAbortSignalNoValidate(c,f)},e.exports.addAbortSignalNoValidate=function(c,f){if(typeof c!="object"||!("aborted"in c))return f;let d=s(f)?()=>{f.destroy(new r(void 0,{cause:c.reason}))}:()=>{f[o](new r(void 0,{cause:c.reason}))};return c.aborted?d():(c.addEventListener("abort",d),a(f,()=>c.removeEventListener("abort",d))),f}}),$P=Te((t,e)=>{we(),_e(),ve();var{StringPrototypeSlice:r,SymbolIterator:n,TypedArrayPrototypeSet:s,Uint8Array:i}=ht(),{Buffer:o}=(St(),Ke(Et)),{inspect:a}=_n();e.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(l){let u={data:l,next:null};this.length>0?this.tail.next=u:this.head=u,this.tail=u,++this.length}unshift(l){let u={data:l,next:this.head};this.length===0&&(this.tail=u),this.head=u,++this.length}shift(){if(this.length===0)return;let l=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,l}clear(){this.head=this.tail=null,this.length=0}join(l){if(this.length===0)return"";let u=this.head,c=""+u.data;for(;(u=u.next)!==null;)c+=l+u.data;return c}concat(l){if(this.length===0)return o.alloc(0);let u=o.allocUnsafe(l>>>0),c=this.head,f=0;for(;c;)s(u,c.data,f),f+=c.data.length,c=c.next;return u}consume(l,u){let c=this.head.data;if(l<c.length){let f=c.slice(0,l);return this.head.data=c.slice(l),f}return l===c.length?this.shift():u?this._getString(l):this._getBuffer(l)}first(){return this.head.data}*[n](){for(let l=this.head;l;l=l.next)yield l.data}_getString(l){let u="",c=this.head,f=0;do{let d=c.data;if(l>d.length)u+=d,l-=d.length;else{l===d.length?(u+=d,++f,c.next?this.head=c.next:this.head=this.tail=null):(u+=r(d,0,l),this.head=c,c.data=r(d,l));break}++f}while((c=c.next)!==null);return this.length-=f,u}_getBuffer(l){let u=o.allocUnsafe(l),c=l,f=this.head,d=0;do{let g=f.data;if(l>g.length)s(u,g,c-l),l-=g.length;else{l===g.length?(s(u,g,c-l),++d,f.next?this.head=f.next:this.head=this.tail=null):(s(u,new i(g.buffer,g.byteOffset,l),c-l),this.head=f,f.data=g.slice(l));break}++d}while((f=f.next)!==null);return this.length-=d,u}[Symbol.for("nodejs.util.inspect.custom")](l,u){return a(this,{...u,depth:0,customInspect:!1})}}}),Zp=Te((t,e)=>{we(),_e(),ve();var{MathFloor:r,NumberIsInteger:n}=ht(),{ERR_INVALID_ARG_VALUE:s}=Ht().codes;function i(l,u,c){return l.highWaterMark!=null?l.highWaterMark:u?l[c]:null}function o(l){return l?16:16*1024}function a(l,u,c,f){let d=i(u,f,c);if(d!=null){if(!n(d)||d<0){let g=f?`options.${c}`:"options.highWaterMark";throw new s(g,d)}return r(d)}return o(l.objectMode)}e.exports={getHighWaterMark:a,getDefaultHighWaterMark:o}});function T0(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return r===-1&&(r=e),[r,r===e?0:4-r%4]}function FP(t,e,r){for(var n,s,i=[],o=e;o<r;o+=3)n=(t[o]<<16&16711680)+(t[o+1]<<8&65280)+(255&t[o+2]),i.push(wr[(s=n)>>18&63]+wr[s>>12&63]+wr[s>>6&63]+wr[63&s]);return i.join("")}function un(t){if(t>2147483647)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,Ee.prototype),e}function Ee(t,e,r){if(typeof t=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return gh(t)}return a_(t,e,r)}function a_(t,e,r){if(typeof t=="string")return function(i,o){if(typeof o=="string"&&o!==""||(o="utf8"),!Ee.isEncoding(o))throw new TypeError("Unknown encoding: "+o);var a=0|u_(i,o),l=un(a),u=l.write(i,o);return u!==a&&(l=l.slice(0,u)),l}(t,e);if(ArrayBuffer.isView(t))return Dc(t);if(t==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(cn(t,ArrayBuffer)||t&&cn(t.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(cn(t,SharedArrayBuffer)||t&&cn(t.buffer,SharedArrayBuffer)))return UP(t,e,r);if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(n!=null&&n!==t)return Ee.from(n,e,r);var s=function(i){if(Ee.isBuffer(i)){var o=0|eg(i.length),a=un(o);return a.length===0||i.copy(a,0,0,o),a}if(i.length!==void 0)return typeof i.length!="number"||tg(i.length)?un(0):Dc(i);if(i.type==="Buffer"&&Array.isArray(i.data))return Dc(i.data)}(t);if(s)return s;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof t[Symbol.toPrimitive]=="function")return Ee.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function l_(t){if(typeof t!="number")throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function gh(t){return l_(t),un(t<0?0:0|eg(t))}function Dc(t){for(var e=t.length<0?0:0|eg(t.length),r=un(e),n=0;n<e;n+=1)r[n]=255&t[n];return r}function UP(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=e===void 0&&r===void 0?new Uint8Array(t):r===void 0?new Uint8Array(t,e):new Uint8Array(t,e,r),Object.setPrototypeOf(n,Ee.prototype),n}function eg(t){if(t>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|t}function u_(t,e){if(Ee.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||cn(t,ArrayBuffer))return t.byteLength;if(typeof t!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;for(var s=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return mh(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return h_(t).length;default:if(s)return n?-1:mh(t).length;e=(""+e).toLowerCase(),s=!0}}function jP(t,e,r){var n=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return XP(this,e,r);case"utf8":case"utf-8":return f_(this,e,r);case"ascii":return GP(this,e,r);case"latin1":case"binary":return KP(this,e,r);case"base64":return YP(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return QP(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function mi(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function x0(t,e,r,n,s){if(t.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),tg(r=+r)&&(r=s?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(s)return-1;r=t.length-1}else if(r<0){if(!s)return-1;r=0}if(typeof e=="string"&&(e=Ee.from(e,n)),Ee.isBuffer(e))return e.length===0?-1:A0(t,e,r,n,s);if(typeof e=="number")return e&=255,typeof Uint8Array.prototype.indexOf=="function"?s?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):A0(t,[e],r,n,s);throw new TypeError("val must be string, number or Buffer")}function A0(t,e,r,n,s){var i,o=1,a=t.length,l=e.length;if(n!==void 0&&((n=String(n).toLowerCase())==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(t.length<2||e.length<2)return-1;o=2,a/=2,l/=2,r/=2}function u(g,m){return o===1?g[m]:g.readUInt16BE(m*o)}if(s){var c=-1;for(i=r;i<a;i++)if(u(t,i)===u(e,c===-1?0:i-c)){if(c===-1&&(c=i),i-c+1===l)return c*o}else c!==-1&&(i-=i-c),c=-1}else for(r+l>a&&(r=a-l),i=r;i>=0;i--){for(var f=!0,d=0;d<l;d++)if(u(t,i+d)!==u(e,d)){f=!1;break}if(f)return i}return-1}function WP(t,e,r,n){r=Number(r)||0;var s=t.length-r;n?(n=Number(n))>s&&(n=s):n=s;var i=e.length;n>i/2&&(n=i/2);for(var o=0;o<n;++o){var a=parseInt(e.substr(2*o,2),16);if(tg(a))return o;t[r+o]=a}return o}function zP(t,e,r,n){return Du(mh(e,t.length-r),t,r,n)}function c_(t,e,r,n){return Du(function(s){for(var i=[],o=0;o<s.length;++o)i.push(255&s.charCodeAt(o));return i}(e),t,r,n)}function HP(t,e,r,n){return c_(t,e,r,n)}function VP(t,e,r,n){return Du(h_(e),t,r,n)}function qP(t,e,r,n){return Du(function(s,i){for(var o,a,l,u=[],c=0;c<s.length&&!((i-=2)<0);++c)o=s.charCodeAt(c),a=o>>8,l=o%256,u.push(l),u.push(a);return u}(e,t.length-r),t,r,n)}function YP(t,e,r){return e===0&&r===t.length?ru.fromByteArray(t):ru.fromByteArray(t.slice(e,r))}function f_(t,e,r){r=Math.min(t.length,r);for(var n=[],s=e;s<r;){var i,o,a,l,u=t[s],c=null,f=u>239?4:u>223?3:u>191?2:1;if(s+f<=r)switch(f){case 1:u<128&&(c=u);break;case 2:(192&(i=t[s+1]))==128&&(l=(31&u)<<6|63&i)>127&&(c=l);break;case 3:i=t[s+1],o=t[s+2],(192&i)==128&&(192&o)==128&&(l=(15&u)<<12|(63&i)<<6|63&o)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:i=t[s+1],o=t[s+2],a=t[s+3],(192&i)==128&&(192&o)==128&&(192&a)==128&&(l=(15&u)<<18|(63&i)<<12|(63&o)<<6|63&a)>65535&&l<1114112&&(c=l)}c===null?(c=65533,f=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),s+=f}return function(d){var g=d.length;if(g<=4096)return String.fromCharCode.apply(String,d);for(var m="",y=0;y<g;)m+=String.fromCharCode.apply(String,d.slice(y,y+=4096));return m}(n)}function GP(t,e,r){var n="";r=Math.min(t.length,r);for(var s=e;s<r;++s)n+=String.fromCharCode(127&t[s]);return n}function KP(t,e,r){var n="";r=Math.min(t.length,r);for(var s=e;s<r;++s)n+=String.fromCharCode(t[s]);return n}function XP(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var s="",i=e;i<r;++i)s+=g_[t[i]];return s}function QP(t,e,r){for(var n=t.slice(e,r),s="",i=0;i<n.length;i+=2)s+=String.fromCharCode(n[i]+256*n[i+1]);return s}function gt(t,e,r){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>r)throw new RangeError("Trying to access beyond buffer length")}function Bt(t,e,r,n,s,i){if(!Ee.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>s||e<i)throw new RangeError('"value" argument is out of bounds');if(r+n>t.length)throw new RangeError("Index out of range")}function d_(t,e,r,n,s,i){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function C0(t,e,r,n,s){return e=+e,r>>>=0,s||d_(t,0,r,4),Ci.write(t,e,r,n,23,4),r+4}function I0(t,e,r,n,s){return e=+e,r>>>=0,s||d_(t,0,r,8),Ci.write(t,e,r,n,52,8),r+8}function mh(t,e){var r;e=e||1/0;for(var n=t.length,s=null,i=[],o=0;o<n;++o){if((r=t.charCodeAt(o))>55295&&r<57344){if(!s){if(r>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&i.push(239,191,189);continue}s=r;continue}if(r<56320){(e-=3)>-1&&i.push(239,191,189),s=r;continue}r=65536+(s-55296<<10|r-56320)}else s&&(e-=3)>-1&&i.push(239,191,189);if(s=null,r<128){if((e-=1)<0)break;i.push(r)}else if(r<2048){if((e-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function h_(t){return ru.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(p_,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(t))}function Du(t,e,r,n){for(var s=0;s<n&&!(s+r>=e.length||s>=t.length);++s)e[s+r]=t[s];return s}function cn(t,e){return t instanceof e||t!=null&&t.constructor!=null&&t.constructor.name!=null&&t.constructor.name===e.name}function tg(t){return t!=t}function M0(t,e){for(var r in t)e[r]=t[r]}function bi(t,e,r){return mr(t,e,r)}function To(t){var e;switch(this.encoding=function(r){var n=function(s){if(!s)return"utf8";for(var i;;)switch(s){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return s;default:if(i)return;s=(""+s).toLowerCase(),i=!0}}(r);if(typeof n!="string"&&(nu.isEncoding===bh||!bh(r)))throw new Error("Unknown encoding: "+r);return n||r}(t),this.encoding){case"utf16le":this.text=ZP,this.end=ek,e=4;break;case"utf8":this.fillLast=JP,e=4;break;case"base64":this.text=tk,this.end=rk,e=3;break;default:return this.write=nk,this.end=ik,void 0}this.lastNeed=0,this.lastTotal=0,this.lastChar=nu.allocUnsafe(e)}function Bc(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function JP(t){var e=this.lastTotal-this.lastNeed,r=function(n,s,i){if((192&s[0])!=128)return n.lastNeed=0,"�";if(n.lastNeed>1&&s.length>1){if((192&s[1])!=128)return n.lastNeed=1,"�";if(n.lastNeed>2&&s.length>2&&(192&s[2])!=128)return n.lastNeed=2,"�"}}(this,t);return r!==void 0?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length,void 0)}function ZP(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function ek(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function tk(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function rk(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function nk(t){return t.toString(this.encoding)}function ik(t){return t&&t.length?this.write(t):""}var O0,wr,qt,R0,Wa,yi,P0,k0,Rr,ru,Ci,$c,p_,g_,xo,Ao,mr,L0,Is,nu,bh,N0=_t(()=>{for(we(),_e(),ve(),O0={byteLength:function(t){var e=T0(t),r=e[0],n=e[1];return 3*(r+n)/4-n},toByteArray:function(t){var e,r,n=T0(t),s=n[0],i=n[1],o=new R0(function(u,c,f){return 3*(c+f)/4-f}(0,s,i)),a=0,l=i>0?s-4:s;for(r=0;r<l;r+=4)e=qt[t.charCodeAt(r)]<<18|qt[t.charCodeAt(r+1)]<<12|qt[t.charCodeAt(r+2)]<<6|qt[t.charCodeAt(r+3)],o[a++]=e>>16&255,o[a++]=e>>8&255,o[a++]=255&e;return i===2&&(e=qt[t.charCodeAt(r)]<<2|qt[t.charCodeAt(r+1)]>>4,o[a++]=255&e),i===1&&(e=qt[t.charCodeAt(r)]<<10|qt[t.charCodeAt(r+1)]<<4|qt[t.charCodeAt(r+2)]>>2,o[a++]=e>>8&255,o[a++]=255&e),o},fromByteArray:function(t){for(var e,r=t.length,n=r%3,s=[],i=0,o=r-n;i<o;i+=16383)s.push(FP(t,i,i+16383>o?o:i+16383));return n===1?(e=t[r-1],s.push(wr[e>>2]+wr[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],s.push(wr[e>>10]+wr[e>>4&63]+wr[e<<2&63]+"=")),s.join("")}},wr=[],qt=[],R0=typeof Uint8Array<"u"?Uint8Array:Array,Wa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",yi=0,P0=Wa.length;yi<P0;++yi)wr[yi]=Wa[yi],qt[Wa.charCodeAt(yi)]=yi;qt[45]=62,qt[95]=63,k0={read:function(t,e,r,n,s){var i,o,a=8*s-n-1,l=(1<<a)-1,u=l>>1,c=-7,f=r?s-1:0,d=r?-1:1,g=t[e+f];for(f+=d,i=g&(1<<-c)-1,g>>=-c,c+=a;c>0;i=256*i+t[e+f],f+=d,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=256*o+t[e+f],f+=d,c-=8);if(i===0)i=1-u;else{if(i===l)return o?NaN:1/0*(g?-1:1);o+=Math.pow(2,n),i-=u}return(g?-1:1)*o*Math.pow(2,i-n)},write:function(t,e,r,n,s,i){var o,a,l,u=8*i-s-1,c=(1<<u)-1,f=c>>1,d=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:i-1,m=n?1:-1,y=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?d/l:d*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=c?(a=0,o=c):o+f>=1?(a=(e*l-1)*Math.pow(2,s),o+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,s),o=0));s>=8;t[r+g]=255&a,g+=m,a/=256,s-=8);for(o=o<<s|a,u+=s;u>0;t[r+g]=255&o,g+=m,o/=256,u-=8);t[r+g-m]|=128*y}},Rr={},ru=O0,Ci=k0,$c=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null,Rr.Buffer=Ee,Rr.SlowBuffer=function(t){return+t!=t&&(t=0),Ee.alloc(+t)},Rr.INSPECT_MAX_BYTES=50,Rr.kMaxLength=2147483647,Ee.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),t.foo()===42}catch{return!1}}(),Ee.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Ee.prototype,"parent",{enumerable:!0,get:function(){if(Ee.isBuffer(this))return this.buffer}}),Object.defineProperty(Ee.prototype,"offset",{enumerable:!0,get:function(){if(Ee.isBuffer(this))return this.byteOffset}}),Ee.poolSize=8192,Ee.from=function(t,e,r){return a_(t,e,r)},Object.setPrototypeOf(Ee.prototype,Uint8Array.prototype),Object.setPrototypeOf(Ee,Uint8Array),Ee.alloc=function(t,e,r){return function(n,s,i){return l_(n),n<=0?un(n):s!==void 0?typeof i=="string"?un(n).fill(s,i):un(n).fill(s):un(n)}(t,e,r)},Ee.allocUnsafe=function(t){return gh(t)},Ee.allocUnsafeSlow=function(t){return gh(t)},Ee.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==Ee.prototype},Ee.compare=function(t,e){if(cn(t,Uint8Array)&&(t=Ee.from(t,t.offset,t.byteLength)),cn(e,Uint8Array)&&(e=Ee.from(e,e.offset,e.byteLength)),!Ee.isBuffer(t)||!Ee.isBuffer(e))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var r=t.length,n=e.length,s=0,i=Math.min(r,n);s<i;++s)if(t[s]!==e[s]){r=t[s],n=e[s];break}return r<n?-1:n<r?1:0},Ee.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Ee.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('"list" argument must be an Array of Buffers');if(t.length===0)return Ee.alloc(0);var r;if(e===void 0)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var n=Ee.allocUnsafe(e),s=0;for(r=0;r<t.length;++r){var i=t[r];if(cn(i,Uint8Array)&&(i=Ee.from(i)),!Ee.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,s),s+=i.length}return n},Ee.byteLength=u_,Ee.prototype._isBuffer=!0,Ee.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)mi(this,e,e+1);return this},Ee.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)mi(this,e,e+3),mi(this,e+1,e+2);return this},Ee.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)mi(this,e,e+7),mi(this,e+1,e+6),mi(this,e+2,e+5),mi(this,e+3,e+4);return this},Ee.prototype.toString=function(){var t=this.length;return t===0?"":arguments.length===0?f_(this,0,t):jP.apply(this,arguments)},Ee.prototype.toLocaleString=Ee.prototype.toString,Ee.prototype.equals=function(t){if(!Ee.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||Ee.compare(this,t)===0},Ee.prototype.inspect=function(){var t="",e=Rr.INSPECT_MAX_BYTES;return t=this.toString("hex",0,e).replace(/(.{2})/g,"$1 ").trim(),this.length>e&&(t+=" ... "),"<Buffer "+t+">"},$c&&(Ee.prototype[$c]=Ee.prototype.inspect),Ee.prototype.compare=function(t,e,r,n,s){if(cn(t,Uint8Array)&&(t=Ee.from(t,t.offset,t.byteLength)),!Ee.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(e===void 0&&(e=0),r===void 0&&(r=t?t.length:0),n===void 0&&(n=0),s===void 0&&(s=this.length),e<0||r>t.length||n<0||s>this.length)throw new RangeError("out of range index");if(n>=s&&e>=r)return 0;if(n>=s)return-1;if(e>=r)return 1;if(this===t)return 0;for(var i=(s>>>=0)-(n>>>=0),o=(r>>>=0)-(e>>>=0),a=Math.min(i,o),l=this.slice(n,s),u=t.slice(e,r),c=0;c<a;++c)if(l[c]!==u[c]){i=l[c],o=u[c];break}return i<o?-1:o<i?1:0},Ee.prototype.includes=function(t,e,r){return this.indexOf(t,e,r)!==-1},Ee.prototype.indexOf=function(t,e,r){return x0(this,t,e,r,!0)},Ee.prototype.lastIndexOf=function(t,e,r){return x0(this,t,e,r,!1)},Ee.prototype.write=function(t,e,r,n){if(e===void 0)n="utf8",r=this.length,e=0;else if(r===void 0&&typeof e=="string")n=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e>>>=0,isFinite(r)?(r>>>=0,n===void 0&&(n="utf8")):(n=r,r=void 0)}var s=this.length-e;if((r===void 0||r>s)&&(r=s),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return WP(this,t,e,r);case"utf8":case"utf-8":return zP(this,t,e,r);case"ascii":return c_(this,t,e,r);case"latin1":case"binary":return HP(this,t,e,r);case"base64":return VP(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return qP(this,t,e,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},Ee.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},Ee.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=e===void 0?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t);var n=this.subarray(t,e);return Object.setPrototypeOf(n,Ee.prototype),n},Ee.prototype.readUIntLE=function(t,e,r){t>>>=0,e>>>=0,r||gt(t,e,this.length);for(var n=this[t],s=1,i=0;++i<e&&(s*=256);)n+=this[t+i]*s;return n},Ee.prototype.readUIntBE=function(t,e,r){t>>>=0,e>>>=0,r||gt(t,e,this.length);for(var n=this[t+--e],s=1;e>0&&(s*=256);)n+=this[t+--e]*s;return n},Ee.prototype.readUInt8=function(t,e){return t>>>=0,e||gt(t,1,this.length),this[t]},Ee.prototype.readUInt16LE=function(t,e){return t>>>=0,e||gt(t,2,this.length),this[t]|this[t+1]<<8},Ee.prototype.readUInt16BE=function(t,e){return t>>>=0,e||gt(t,2,this.length),this[t]<<8|this[t+1]},Ee.prototype.readUInt32LE=function(t,e){return t>>>=0,e||gt(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},Ee.prototype.readUInt32BE=function(t,e){return t>>>=0,e||gt(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},Ee.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||gt(t,e,this.length);for(var n=this[t],s=1,i=0;++i<e&&(s*=256);)n+=this[t+i]*s;return n>=(s*=128)&&(n-=Math.pow(2,8*e)),n},Ee.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||gt(t,e,this.length);for(var n=e,s=1,i=this[t+--n];n>0&&(s*=256);)i+=this[t+--n]*s;return i>=(s*=128)&&(i-=Math.pow(2,8*e)),i},Ee.prototype.readInt8=function(t,e){return t>>>=0,e||gt(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},Ee.prototype.readInt16LE=function(t,e){t>>>=0,e||gt(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},Ee.prototype.readInt16BE=function(t,e){t>>>=0,e||gt(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},Ee.prototype.readInt32LE=function(t,e){return t>>>=0,e||gt(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},Ee.prototype.readInt32BE=function(t,e){return t>>>=0,e||gt(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},Ee.prototype.readFloatLE=function(t,e){return t>>>=0,e||gt(t,4,this.length),Ci.read(this,t,!0,23,4)},Ee.prototype.readFloatBE=function(t,e){return t>>>=0,e||gt(t,4,this.length),Ci.read(this,t,!1,23,4)},Ee.prototype.readDoubleLE=function(t,e){return t>>>=0,e||gt(t,8,this.length),Ci.read(this,t,!0,52,8)},Ee.prototype.readDoubleBE=function(t,e){return t>>>=0,e||gt(t,8,this.length),Ci.read(this,t,!1,52,8)},Ee.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||Bt(this,t,e,r,Math.pow(2,8*r)-1,0);var s=1,i=0;for(this[e]=255&t;++i<r&&(s*=256);)this[e+i]=t/s&255;return e+r},Ee.prototype.writeUIntBE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||Bt(this,t,e,r,Math.pow(2,8*r)-1,0);var s=r-1,i=1;for(this[e+s]=255&t;--s>=0&&(i*=256);)this[e+s]=t/i&255;return e+r},Ee.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||Bt(this,t,e,1,255,0),this[e]=255&t,e+1},Ee.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||Bt(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},Ee.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||Bt(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},Ee.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||Bt(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},Ee.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||Bt(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},Ee.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var s=Math.pow(2,8*r-1);Bt(this,t,e,r,s-1,-s)}var i=0,o=1,a=0;for(this[e]=255&t;++i<r&&(o*=256);)t<0&&a===0&&this[e+i-1]!==0&&(a=1),this[e+i]=(t/o>>0)-a&255;return e+r},Ee.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var s=Math.pow(2,8*r-1);Bt(this,t,e,r,s-1,-s)}var i=r-1,o=1,a=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&a===0&&this[e+i+1]!==0&&(a=1),this[e+i]=(t/o>>0)-a&255;return e+r},Ee.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||Bt(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},Ee.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||Bt(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},Ee.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||Bt(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},Ee.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||Bt(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},Ee.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||Bt(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},Ee.prototype.writeFloatLE=function(t,e,r){return C0(this,t,e,!0,r)},Ee.prototype.writeFloatBE=function(t,e,r){return C0(this,t,e,!1,r)},Ee.prototype.writeDoubleLE=function(t,e,r){return I0(this,t,e,!0,r)},Ee.prototype.writeDoubleBE=function(t,e,r){return I0(this,t,e,!1,r)},Ee.prototype.copy=function(t,e,r,n){if(!Ee.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||n===0||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<r&&(n=r),n===r||t.length===0||this.length===0)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var s=n-r;if(this===t&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(e,r,n);else if(this===t&&r<e&&e<n)for(var i=s-1;i>=0;--i)t[i+e]=this[i+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return s},Ee.prototype.fill=function(t,e,r,n){if(typeof t=="string"){if(typeof e=="string"?(n=e,e=0,r=this.length):typeof r=="string"&&(n=r,r=this.length),n!==void 0&&typeof n!="string")throw new TypeError("encoding must be a string");if(typeof n=="string"&&!Ee.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(t.length===1){var s=t.charCodeAt(0);(n==="utf8"&&s<128||n==="latin1")&&(t=s)}}else typeof t=="number"?t&=255:typeof t=="boolean"&&(t=Number(t));if(e<0||this.length<e||this.length<r)throw new RangeError("Out of range index");if(r<=e)return this;var i;if(e>>>=0,r=r===void 0?this.length:r>>>0,t||(t=0),typeof t=="number")for(i=e;i<r;++i)this[i]=t;else{var o=Ee.isBuffer(t)?t:Ee.from(t,n),a=o.length;if(a===0)throw new TypeError('The value "'+t+'" is invalid for argument "value"');for(i=0;i<r-e;++i)this[i+e]=o[i%a]}return this},p_=/[^+/0-9A-Za-z-_]/g,g_=function(){for(var t=new Array(256),e=0;e<16;++e)for(var r=16*e,n=0;n<16;++n)t[r+n]="0123456789abcdef"[e]+"0123456789abcdef"[n];return t}(),Rr.Buffer,Rr.INSPECT_MAX_BYTES,Rr.kMaxLength,xo={},Ao=Rr,mr=Ao.Buffer,mr.from&&mr.alloc&&mr.allocUnsafe&&mr.allocUnsafeSlow?xo=Ao:(M0(Ao,xo),xo.Buffer=bi),bi.prototype=Object.create(mr.prototype),M0(mr,bi),bi.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return mr(t,e,r)},bi.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var n=mr(t);return e!==void 0?typeof r=="string"?n.fill(e,r):n.fill(e):n.fill(0),n},bi.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return mr(t)},bi.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Ao.SlowBuffer(t)},L0=xo,Is={},nu=L0.Buffer,bh=nu.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},Is.StringDecoder=To,To.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if((e=this.fillLast(t))===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||""},To.prototype.end=function(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e},To.prototype.text=function(t,e){var r=function(s,i,o){var a=i.length-1;if(a<o)return 0;var l=Bc(i[a]);return l>=0?(l>0&&(s.lastNeed=l-1),l):--a<o||l===-2?0:(l=Bc(i[a]))>=0?(l>0&&(s.lastNeed=l-2),l):--a<o||l===-2?0:(l=Bc(i[a]))>=0?(l>0&&(l===2?l=0:s.lastNeed=l-3),l):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)},To.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length},Is.StringDecoder,Is.StringDecoder}),m_={};rs(m_,{StringDecoder:()=>b_,default:()=>Is});var b_,sk=_t(()=>{we(),_e(),ve(),N0(),N0(),b_=Is.StringDecoder}),y_=Te((t,e)=>{we(),_e(),ve();var r=ns(),{PromisePrototypeThen:n,SymbolAsyncIterator:s,SymbolIterator:i}=ht(),{Buffer:o}=(St(),Ke(Et)),{ERR_INVALID_ARG_TYPE:a,ERR_STREAM_NULL_VALUES:l}=Ht().codes;function u(c,f,d){let g;if(typeof f=="string"||f instanceof o)return new c({objectMode:!0,...d,read(){this.push(f),this.push(null)}});let m;if(f&&f[s])m=!0,g=f[s]();else if(f&&f[i])m=!1,g=f[i]();else throw new a("iterable",["Iterable"],f);let y=new c({objectMode:!0,highWaterMark:1,...d}),_=!1;y._read=function(){_||(_=!0,E())},y._destroy=function(v,x){n(S(v),()=>r.nextTick(x,v),M=>r.nextTick(x,M||v))};async function S(v){let x=v!=null,M=typeof g.throw=="function";if(x&&M){let{value:A,done:L}=await g.throw(v);if(await A,L)return}if(typeof g.return=="function"){let{value:A}=await g.return();await A}}async function E(){for(;;){try{let{value:v,done:x}=m?await g.next():g.next();if(x)y.push(null);else{let M=v&&typeof v.then=="function"?await v:v;if(M===null)throw _=!1,new l;if(y.push(M))continue;_=!1}}catch(v){y.destroy(v)}break}}return y}e.exports=u}),Bu=Te((t,e)=>{we(),_e(),ve();var r=ns(),{ArrayPrototypeIndexOf:n,NumberIsInteger:s,NumberIsNaN:i,NumberParseInt:o,ObjectDefineProperties:a,ObjectKeys:l,ObjectSetPrototypeOf:u,Promise:c,SafeSet:f,SymbolAsyncIterator:d,Symbol:g}=ht();e.exports=k,k.ReadableState=re;var{EventEmitter:m}=(so(),Ke(is)),{Stream:y,prependListener:_}=Jp(),{Buffer:S}=(St(),Ke(Et)),{addAbortSignal:E}=Nu(),v=ii(),x=_n().debuglog("stream",p=>{x=p}),M=$P(),A=io(),{getHighWaterMark:L,getDefaultHighWaterMark:D}=Zp(),{aggregateTwoErrors:B,codes:{ERR_INVALID_ARG_TYPE:q,ERR_METHOD_NOT_IMPLEMENTED:Y,ERR_OUT_OF_RANGE:R,ERR_STREAM_PUSH_AFTER_EOF:I,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:N}}=Ht(),{validateObject:W}=Lu(),G=g("kPaused"),{StringDecoder:H}=(sk(),Ke(m_)),$=y_();u(k.prototype,y.prototype),u(k,y);var ne=()=>{},{errorOrDestroy:ue}=A;function re(p,h,b){typeof b!="boolean"&&(b=h instanceof En()),this.objectMode=!!(p&&p.objectMode),b&&(this.objectMode=this.objectMode||!!(p&&p.readableObjectMode)),this.highWaterMark=p?L(this,p,"readableHighWaterMark",b):D(!1),this.buffer=new M,this.length=0,this.pipes=[],this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.constructed=!0,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this[G]=null,this.errorEmitted=!1,this.emitClose=!p||p.emitClose!==!1,this.autoDestroy=!p||p.autoDestroy!==!1,this.destroyed=!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this.defaultEncoding=p&&p.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.multiAwaitDrain=!1,this.readingMore=!1,this.dataEmitted=!1,this.decoder=null,this.encoding=null,p&&p.encoding&&(this.decoder=new H(p.encoding),this.encoding=p.encoding)}function k(p){if(!(this instanceof k))return new k(p);let h=this instanceof En();this._readableState=new re(p,this,h),p&&(typeof p.read=="function"&&(this._read=p.read),typeof p.destroy=="function"&&(this._destroy=p.destroy),typeof p.construct=="function"&&(this._construct=p.construct),p.signal&&!h&&E(p.signal,this)),y.call(this,p),A.construct(this,()=>{this._readableState.needReadable&&he(this,this._readableState)})}k.prototype.destroy=A.destroy,k.prototype._undestroy=A.undestroy,k.prototype._destroy=function(p,h){h(p)},k.prototype[m.captureRejectionSymbol]=function(p){this.destroy(p)},k.prototype.push=function(p,h){return Q(this,p,h,!1)},k.prototype.unshift=function(p,h){return Q(this,p,h,!0)};function Q(p,h,b,T){x("readableAddChunk",h);let U=p._readableState,ee;if(U.objectMode||(typeof h=="string"?(b=b||U.defaultEncoding,U.encoding!==b&&(T&&U.encoding?h=S.from(h,b).toString(U.encoding):(h=S.from(h,b),b=""))):h instanceof S?b="":y._isUint8Array(h)?(h=y._uint8ArrayToBuffer(h),b=""):h!=null&&(ee=new q("chunk",["string","Buffer","Uint8Array"],h))),ee)ue(p,ee);else if(h===null)U.reading=!1,K(p,U);else if(U.objectMode||h&&h.length>0)if(T)if(U.endEmitted)ue(p,new N);else{if(U.destroyed||U.errored)return!1;de(p,U,h,!0)}else if(U.ended)ue(p,new I);else{if(U.destroyed||U.errored)return!1;U.reading=!1,U.decoder&&!b?(h=U.decoder.write(h),U.objectMode||h.length!==0?de(p,U,h,!1):he(p,U)):de(p,U,h,!1)}else T||(U.reading=!1,he(p,U));return!U.ended&&(U.length<U.highWaterMark||U.length===0)}function de(p,h,b,T){h.flowing&&h.length===0&&!h.sync&&p.listenerCount("data")>0?(h.multiAwaitDrain?h.awaitDrainWriters.clear():h.awaitDrainWriters=null,h.dataEmitted=!0,p.emit("data",b)):(h.length+=h.objectMode?1:b.length,T?h.buffer.unshift(b):h.buffer.push(b),h.needReadable&&ie(p)),he(p,h)}k.prototype.isPaused=function(){let p=this._readableState;return p[G]===!0||p.flowing===!1},k.prototype.setEncoding=function(p){let h=new H(p);this._readableState.decoder=h,this._readableState.encoding=this._readableState.decoder.encoding;let b=this._readableState.buffer,T="";for(let U of b)T+=h.write(U);return b.clear(),T!==""&&b.push(T),this._readableState.length=T.length,this};var ge=1073741824;function me(p){if(p>ge)throw new R("size","<= 1GiB",p);return p--,p|=p>>>1,p|=p>>>2,p|=p>>>4,p|=p>>>8,p|=p>>>16,p++,p}function X(p,h){return p<=0||h.length===0&&h.ended?0:h.objectMode?1:i(p)?h.flowing&&h.length?h.buffer.first().length:h.length:p<=h.length?p:h.ended?h.length:0}k.prototype.read=function(p){x("read",p),p===void 0?p=NaN:s(p)||(p=o(p,10));let h=this._readableState,b=p;if(p>h.highWaterMark&&(h.highWaterMark=me(p)),p!==0&&(h.emittedReadable=!1),p===0&&h.needReadable&&((h.highWaterMark!==0?h.length>=h.highWaterMark:h.length>0)||h.ended))return x("read: emitReadable",h.length,h.ended),h.length===0&&h.ended?F(this):ie(this),null;if(p=X(p,h),p===0&&h.ended)return h.length===0&&F(this),null;let T=h.needReadable;if(x("need readable",T),(h.length===0||h.length-p<h.highWaterMark)&&(T=!0,x("length less than watermark",T)),h.ended||h.reading||h.destroyed||h.errored||!h.constructed)T=!1,x("reading, ended or constructing",T);else if(T){x("do read"),h.reading=!0,h.sync=!0,h.length===0&&(h.needReadable=!0);try{this._read(h.highWaterMark)}catch(ee){ue(this,ee)}h.sync=!1,h.reading||(p=X(b,h))}let U;return p>0?U=te(p,h):U=null,U===null?(h.needReadable=h.length<=h.highWaterMark,p=0):(h.length-=p,h.multiAwaitDrain?h.awaitDrainWriters.clear():h.awaitDrainWriters=null),h.length===0&&(h.ended||(h.needReadable=!0),b!==p&&h.ended&&F(this)),U!==null&&!h.errorEmitted&&!h.closeEmitted&&(h.dataEmitted=!0,this.emit("data",U)),U};function K(p,h){if(x("onEofChunk"),!h.ended){if(h.decoder){let b=h.decoder.end();b&&b.length&&(h.buffer.push(b),h.length+=h.objectMode?1:b.length)}h.ended=!0,h.sync?ie(p):(h.needReadable=!1,h.emittedReadable=!0,be(p))}}function ie(p){let h=p._readableState;x("emitReadable",h.needReadable,h.emittedReadable),h.needReadable=!1,h.emittedReadable||(x("emitReadable",h.flowing),h.emittedReadable=!0,r.nextTick(be,p))}function be(p){let h=p._readableState;x("emitReadable_",h.destroyed,h.length,h.ended),!h.destroyed&&!h.errored&&(h.length||h.ended)&&(p.emit("readable"),h.emittedReadable=!1),h.needReadable=!h.flowing&&!h.ended&&h.length<=h.highWaterMark,oe(p)}function he(p,h){!h.readingMore&&h.constructed&&(h.readingMore=!0,r.nextTick(ce,p,h))}function ce(p,h){for(;!h.reading&&!h.ended&&(h.length<h.highWaterMark||h.flowing&&h.length===0);){let b=h.length;if(x("maybeReadMore read 0"),p.read(0),b===h.length)break}h.readingMore=!1}k.prototype._read=function(p){throw new Y("_read()")},k.prototype.pipe=function(p,h){let b=this,T=this._readableState;T.pipes.length===1&&(T.multiAwaitDrain||(T.multiAwaitDrain=!0,T.awaitDrainWriters=new f(T.awaitDrainWriters?[T.awaitDrainWriters]:[]))),T.pipes.push(p),x("pipe count=%d opts=%j",T.pipes.length,h);let U=(!h||h.end!==!1)&&p!==r.stdout&&p!==r.stderr?ye:lt;T.endEmitted?r.nextTick(U):b.once("end",U),p.on("unpipe",ee);function ee(bt,ft){x("onunpipe"),bt===b&&ft&&ft.hasUnpiped===!1&&(ft.hasUnpiped=!0,xe())}function ye(){x("onend"),p.end()}let Ae,Re=!1;function xe(){x("cleanup"),p.removeListener("close",ct),p.removeListener("finish",Je),Ae&&p.removeListener("drain",Ae),p.removeListener("error",Ve),p.removeListener("unpipe",ee),b.removeListener("end",ye),b.removeListener("end",lt),b.removeListener("data",Me),Re=!0,Ae&&T.awaitDrainWriters&&(!p._writableState||p._writableState.needDrain)&&Ae()}function Oe(){Re||(T.pipes.length===1&&T.pipes[0]===p?(x("false write response, pause",0),T.awaitDrainWriters=p,T.multiAwaitDrain=!1):T.pipes.length>1&&T.pipes.includes(p)&&(x("false write response, pause",T.awaitDrainWriters.size),T.awaitDrainWriters.add(p)),b.pause()),Ae||(Ae=C(b,p),p.on("drain",Ae))}b.on("data",Me);function Me(bt){x("ondata");let ft=p.write(bt);x("dest.write",ft),ft===!1&&Oe()}function Ve(bt){if(x("onerror",bt),lt(),p.removeListener("error",Ve),p.listenerCount("error")===0){let ft=p._writableState||p._readableState;ft&&!ft.errorEmitted?ue(p,bt):p.emit("error",bt)}}_(p,"error",Ve);function ct(){p.removeListener("finish",Je),lt()}p.once("close",ct);function Je(){x("onfinish"),p.removeListener("close",ct),lt()}p.once("finish",Je);function lt(){x("unpipe"),b.unpipe(p)}return p.emit("pipe",b),p.writableNeedDrain===!0?T.flowing&&Oe():T.flowing||(x("pipe resume"),b.resume()),p};function C(p,h){return function(){let b=p._readableState;b.awaitDrainWriters===h?(x("pipeOnDrain",1),b.awaitDrainWriters=null):b.multiAwaitDrain&&(x("pipeOnDrain",b.awaitDrainWriters.size),b.awaitDrainWriters.delete(h)),(!b.awaitDrainWriters||b.awaitDrainWriters.size===0)&&p.listenerCount("data")&&p.resume()}}k.prototype.unpipe=function(p){let h=this._readableState,b={hasUnpiped:!1};if(h.pipes.length===0)return this;if(!p){let U=h.pipes;h.pipes=[],this.pause();for(let ee=0;ee<U.length;ee++)U[ee].emit("unpipe",this,{hasUnpiped:!1});return this}let T=n(h.pipes,p);return T===-1?this:(h.pipes.splice(T,1),h.pipes.length===0&&this.pause(),p.emit("unpipe",this,b),this)},k.prototype.on=function(p,h){let b=y.prototype.on.call(this,p,h),T=this._readableState;return p==="data"?(T.readableListening=this.listenerCount("readable")>0,T.flowing!==!1&&this.resume()):p==="readable"&&!T.endEmitted&&!T.readableListening&&(T.readableListening=T.needReadable=!0,T.flowing=!1,T.emittedReadable=!1,x("on readable",T.length,T.reading),T.length?ie(this):T.reading||r.nextTick(O,this)),b},k.prototype.addListener=k.prototype.on,k.prototype.removeListener=function(p,h){let b=y.prototype.removeListener.call(this,p,h);return p==="readable"&&r.nextTick(P,this),b},k.prototype.off=k.prototype.removeListener,k.prototype.removeAllListeners=function(p){let h=y.prototype.removeAllListeners.apply(this,arguments);return(p==="readable"||p===void 0)&&r.nextTick(P,this),h};function P(p){let h=p._readableState;h.readableListening=p.listenerCount("readable")>0,h.resumeScheduled&&h[G]===!1?h.flowing=!0:p.listenerCount("data")>0?p.resume():h.readableListening||(h.flowing=null)}function O(p){x("readable nexttick read 0"),p.read(0)}k.prototype.resume=function(){let p=this._readableState;return p.flowing||(x("resume"),p.flowing=!p.readableListening,j(this,p)),p[G]=!1,this};function j(p,h){h.resumeScheduled||(h.resumeScheduled=!0,r.nextTick(z,p,h))}function z(p,h){x("resume",h.reading),h.reading||p.read(0),h.resumeScheduled=!1,p.emit("resume"),oe(p),h.flowing&&!h.reading&&p.read(0)}k.prototype.pause=function(){return x("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(x("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[G]=!0,this};function oe(p){let h=p._readableState;for(x("flow",h.flowing);h.flowing&&p.read()!==null;);}k.prototype.wrap=function(p){let h=!1;p.on("data",T=>{!this.push(T)&&p.pause&&(h=!0,p.pause())}),p.on("end",()=>{this.push(null)}),p.on("error",T=>{ue(this,T)}),p.on("close",()=>{this.destroy()}),p.on("destroy",()=>{this.destroy()}),this._read=()=>{h&&p.resume&&(h=!1,p.resume())};let b=l(p);for(let T=1;T<b.length;T++){let U=b[T];this[U]===void 0&&typeof p[U]=="function"&&(this[U]=p[U].bind(p))}return this},k.prototype[d]=function(){return fe(this)},k.prototype.iterator=function(p){return p!==void 0&&W(p,"options"),fe(this,p)};function fe(p,h){typeof p.read!="function"&&(p=k.wrap(p,{objectMode:!0}));let b=V(p,h);return b.stream=p,b}async function*V(p,h){let b=ne;function T(ye){this===p?(b(),b=ne):b=ye}p.on("readable",T);let U,ee=v(p,{writable:!1},ye=>{U=ye?B(U,ye):null,b(),b=ne});try{for(;;){let ye=p.destroyed?null:p.read();if(ye!==null)yield ye;else{if(U)throw U;if(U===null)return;await new c(T)}}}catch(ye){throw U=B(U,ye),U}finally{(U||(h==null?void 0:h.destroyOnReturn)!==!1)&&(U===void 0||p._readableState.autoDestroy)?A.destroyer(p,null):(p.off("readable",T),ee())}}a(k.prototype,{readable:{__proto__:null,get(){let p=this._readableState;return!!p&&p.readable!==!1&&!p.destroyed&&!p.errorEmitted&&!p.endEmitted},set(p){this._readableState&&(this._readableState.readable=!!p)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(p){this._readableState&&(this._readableState.flowing=p)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(p){this._readableState&&(this._readableState.destroyed=p)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),a(re.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[G]!==!1},set(p){this[G]=!!p}}}),k._fromList=te;function te(p,h){if(h.length===0)return null;let b;return h.objectMode?b=h.buffer.shift():!p||p>=h.length?(h.decoder?b=h.buffer.join(""):h.buffer.length===1?b=h.buffer.first():b=h.buffer.concat(h.length),h.buffer.clear()):b=h.buffer.consume(p,h.decoder),b}function F(p){let h=p._readableState;x("endReadable",h.endEmitted),h.endEmitted||(h.ended=!0,r.nextTick(J,h,p))}function J(p,h){if(x("endReadableNT",p.endEmitted,p.length),!p.errored&&!p.closeEmitted&&!p.endEmitted&&p.length===0){if(p.endEmitted=!0,h.emit("end"),h.writable&&h.allowHalfOpen===!1)r.nextTick(se,h);else if(p.autoDestroy){let b=h._writableState;(!b||b.autoDestroy&&(b.finished||b.writable===!1))&&h.destroy()}}}function se(p){p.writable&&!p.writableEnded&&!p.destroyed&&p.end()}k.from=function(p,h){return $(k,p,h)};var pe;function w(){return pe===void 0&&(pe={}),pe}k.fromWeb=function(p,h){return w().newStreamReadableFromReadableStream(p,h)},k.toWeb=function(p,h){return w().newReadableStreamFromStreamReadable(p,h)},k.wrap=function(p,h){var b,T;return new k({objectMode:(b=(T=p.readableObjectMode)!==null&&T!==void 0?T:p.objectMode)!==null&&b!==void 0?b:!0,...h,destroy(U,ee){A.destroyer(p,U),ee(U)}}).wrap(p)}}),w_=Te((t,e)=>{we(),_e(),ve();var r=ns(),{ArrayPrototypeSlice:n,Error:s,FunctionPrototypeSymbolHasInstance:i,ObjectDefineProperty:o,ObjectDefineProperties:a,ObjectSetPrototypeOf:l,StringPrototypeToLowerCase:u,Symbol:c,SymbolHasInstance:f}=ht();e.exports=H,H.WritableState=W;var{EventEmitter:d}=(so(),Ke(is)),g=Jp().Stream,{Buffer:m}=(St(),Ke(Et)),y=io(),{addAbortSignal:_}=Nu(),{getHighWaterMark:S,getDefaultHighWaterMark:E}=Zp(),{ERR_INVALID_ARG_TYPE:v,ERR_METHOD_NOT_IMPLEMENTED:x,ERR_MULTIPLE_CALLBACK:M,ERR_STREAM_CANNOT_PIPE:A,ERR_STREAM_DESTROYED:L,ERR_STREAM_ALREADY_FINISHED:D,ERR_STREAM_NULL_VALUES:B,ERR_STREAM_WRITE_AFTER_END:q,ERR_UNKNOWN_ENCODING:Y}=Ht().codes,{errorOrDestroy:R}=y;l(H.prototype,g.prototype),l(H,g);function I(){}var N=c("kOnFinished");function W(O,j,z){typeof z!="boolean"&&(z=j instanceof En()),this.objectMode=!!(O&&O.objectMode),z&&(this.objectMode=this.objectMode||!!(O&&O.writableObjectMode)),this.highWaterMark=O?S(this,O,"writableHighWaterMark",z):E(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let oe=!!(O&&O.decodeStrings===!1);this.decodeStrings=!oe,this.defaultEncoding=O&&O.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=k.bind(void 0,j),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,G(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!O||O.emitClose!==!1,this.autoDestroy=!O||O.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[N]=[]}function G(O){O.buffered=[],O.bufferedIndex=0,O.allBuffers=!0,O.allNoop=!0}W.prototype.getBuffer=function(){return n(this.buffered,this.bufferedIndex)},o(W.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function H(O){let j=this instanceof En();if(!j&&!i(H,this))return new H(O);this._writableState=new W(O,this,j),O&&(typeof O.write=="function"&&(this._write=O.write),typeof O.writev=="function"&&(this._writev=O.writev),typeof O.destroy=="function"&&(this._destroy=O.destroy),typeof O.final=="function"&&(this._final=O.final),typeof O.construct=="function"&&(this._construct=O.construct),O.signal&&_(O.signal,this)),g.call(this,O),y.construct(this,()=>{let z=this._writableState;z.writing||me(this,z),be(this,z)})}o(H,f,{__proto__:null,value:function(O){return i(this,O)?!0:this!==H?!1:O&&O._writableState instanceof W}}),H.prototype.pipe=function(){R(this,new A)};function $(O,j,z,oe){let fe=O._writableState;if(typeof z=="function")oe=z,z=fe.defaultEncoding;else{if(!z)z=fe.defaultEncoding;else if(z!=="buffer"&&!m.isEncoding(z))throw new Y(z);typeof oe!="function"&&(oe=I)}if(j===null)throw new B;if(!fe.objectMode)if(typeof j=="string")fe.decodeStrings!==!1&&(j=m.from(j,z),z="buffer");else if(j instanceof m)z="buffer";else if(g._isUint8Array(j))j=g._uint8ArrayToBuffer(j),z="buffer";else throw new v("chunk",["string","Buffer","Uint8Array"],j);let V;return fe.ending?V=new q:fe.destroyed&&(V=new L("write")),V?(r.nextTick(oe,V),R(O,V,!0),V):(fe.pendingcb++,ne(O,fe,j,z,oe))}H.prototype.write=function(O,j,z){return $(this,O,j,z)===!0},H.prototype.cork=function(){this._writableState.corked++},H.prototype.uncork=function(){let O=this._writableState;O.corked&&(O.corked--,O.writing||me(this,O))},H.prototype.setDefaultEncoding=function(O){if(typeof O=="string"&&(O=u(O)),!m.isEncoding(O))throw new Y(O);return this._writableState.defaultEncoding=O,this};function ne(O,j,z,oe,fe){let V=j.objectMode?1:z.length;j.length+=V;let te=j.length<j.highWaterMark;return te||(j.needDrain=!0),j.writing||j.corked||j.errored||!j.constructed?(j.buffered.push({chunk:z,encoding:oe,callback:fe}),j.allBuffers&&oe!=="buffer"&&(j.allBuffers=!1),j.allNoop&&fe!==I&&(j.allNoop=!1)):(j.writelen=V,j.writecb=fe,j.writing=!0,j.sync=!0,O._write(z,oe,j.onwrite),j.sync=!1),te&&!j.errored&&!j.destroyed}function ue(O,j,z,oe,fe,V,te){j.writelen=oe,j.writecb=te,j.writing=!0,j.sync=!0,j.destroyed?j.onwrite(new L("write")):z?O._writev(fe,j.onwrite):O._write(fe,V,j.onwrite),j.sync=!1}function re(O,j,z,oe){--j.pendingcb,oe(z),ge(j),R(O,z)}function k(O,j){let z=O._writableState,oe=z.sync,fe=z.writecb;if(typeof fe!="function"){R(O,new M);return}z.writing=!1,z.writecb=null,z.length-=z.writelen,z.writelen=0,j?(j.stack,z.errored||(z.errored=j),O._readableState&&!O._readableState.errored&&(O._readableState.errored=j),oe?r.nextTick(re,O,z,j,fe):re(O,z,j,fe)):(z.buffered.length>z.bufferedIndex&&me(O,z),oe?z.afterWriteTickInfo!==null&&z.afterWriteTickInfo.cb===fe?z.afterWriteTickInfo.count++:(z.afterWriteTickInfo={count:1,cb:fe,stream:O,state:z},r.nextTick(Q,z.afterWriteTickInfo)):de(O,z,1,fe))}function Q({stream:O,state:j,count:z,cb:oe}){return j.afterWriteTickInfo=null,de(O,j,z,oe)}function de(O,j,z,oe){for(!j.ending&&!O.destroyed&&j.length===0&&j.needDrain&&(j.needDrain=!1,O.emit("drain"));z-- >0;)j.pendingcb--,oe();j.destroyed&&ge(j),be(O,j)}function ge(O){if(O.writing)return;for(let fe=O.bufferedIndex;fe<O.buffered.length;++fe){var j;let{chunk:V,callback:te}=O.buffered[fe],F=O.objectMode?1:V.length;O.length-=F,te((j=O.errored)!==null&&j!==void 0?j:new L("write"))}let z=O[N].splice(0);for(let fe=0;fe<z.length;fe++){var oe;z[fe]((oe=O.errored)!==null&&oe!==void 0?oe:new L("end"))}G(O)}function me(O,j){if(j.corked||j.bufferProcessing||j.destroyed||!j.constructed)return;let{buffered:z,bufferedIndex:oe,objectMode:fe}=j,V=z.length-oe;if(!V)return;let te=oe;if(j.bufferProcessing=!0,V>1&&O._writev){j.pendingcb-=V-1;let F=j.allNoop?I:se=>{for(let pe=te;pe<z.length;++pe)z[pe].callback(se)},J=j.allNoop&&te===0?z:n(z,te);J.allBuffers=j.allBuffers,ue(O,j,!0,j.length,J,"",F),G(j)}else{do{let{chunk:F,encoding:J,callback:se}=z[te];z[te++]=null;let pe=fe?1:F.length;ue(O,j,!1,pe,F,J,se)}while(te<z.length&&!j.writing);te===z.length?G(j):te>256?(z.splice(0,te),j.bufferedIndex=0):j.bufferedIndex=te}j.bufferProcessing=!1}H.prototype._write=function(O,j,z){if(this._writev)this._writev([{chunk:O,encoding:j}],z);else throw new x("_write()")},H.prototype._writev=null,H.prototype.end=function(O,j,z){let oe=this._writableState;typeof O=="function"?(z=O,O=null,j=null):typeof j=="function"&&(z=j,j=null);let fe;if(O!=null){let V=$(this,O,j);V instanceof s&&(fe=V)}return oe.corked&&(oe.corked=1,this.uncork()),fe||(!oe.errored&&!oe.ending?(oe.ending=!0,be(this,oe,!0),oe.ended=!0):oe.finished?fe=new D("end"):oe.destroyed&&(fe=new L("end"))),typeof z=="function"&&(fe||oe.finished?r.nextTick(z,fe):oe[N].push(z)),this};function X(O){return O.ending&&!O.destroyed&&O.constructed&&O.length===0&&!O.errored&&O.buffered.length===0&&!O.finished&&!O.writing&&!O.errorEmitted&&!O.closeEmitted}function K(O,j){let z=!1;function oe(fe){if(z){R(O,fe??M());return}if(z=!0,j.pendingcb--,fe){let V=j[N].splice(0);for(let te=0;te<V.length;te++)V[te](fe);R(O,fe,j.sync)}else X(j)&&(j.prefinished=!0,O.emit("prefinish"),j.pendingcb++,r.nextTick(he,O,j))}j.sync=!0,j.pendingcb++;try{O._final(oe)}catch(fe){oe(fe)}j.sync=!1}function ie(O,j){!j.prefinished&&!j.finalCalled&&(typeof O._final=="function"&&!j.destroyed?(j.finalCalled=!0,K(O,j)):(j.prefinished=!0,O.emit("prefinish")))}function be(O,j,z){X(j)&&(ie(O,j),j.pendingcb===0&&(z?(j.pendingcb++,r.nextTick((oe,fe)=>{X(fe)?he(oe,fe):fe.pendingcb--},O,j)):X(j)&&(j.pendingcb++,he(O,j))))}function he(O,j){j.pendingcb--,j.finished=!0;let z=j[N].splice(0);for(let oe=0;oe<z.length;oe++)z[oe]();if(O.emit("finish"),j.autoDestroy){let oe=O._readableState;(!oe||oe.autoDestroy&&(oe.endEmitted||oe.readable===!1))&&O.destroy()}}a(H.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(O){this._writableState&&(this._writableState.destroyed=O)}},writable:{__proto__:null,get(){let O=this._writableState;return!!O&&O.writable!==!1&&!O.destroyed&&!O.errored&&!O.ending&&!O.ended},set(O){this._writableState&&(this._writableState.writable=!!O)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){let O=this._writableState;return O?!O.destroyed&&!O.ending&&O.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});var ce=y.destroy;H.prototype.destroy=function(O,j){let z=this._writableState;return!z.destroyed&&(z.bufferedIndex<z.buffered.length||z[N].length)&&r.nextTick(ge,z),ce.call(this,O,j),this},H.prototype._undestroy=y.undestroy,H.prototype._destroy=function(O,j){j(O)},H.prototype[d.captureRejectionSymbol]=function(O){this.destroy(O)};var C;function P(){return C===void 0&&(C={}),C}H.fromWeb=function(O,j){return P().newStreamWritableFromWritableStream(O,j)},H.toWeb=function(O){return P().newWritableStreamFromStreamWritable(O)}}),ok=Te((t,e)=>{we(),_e(),ve();var r=ns(),n=(St(),Ke(Et)),{isReadable:s,isWritable:i,isIterable:o,isNodeStream:a,isReadableNodeStream:l,isWritableNodeStream:u,isDuplexNodeStream:c}=In(),f=ii(),{AbortError:d,codes:{ERR_INVALID_ARG_TYPE:g,ERR_INVALID_RETURN_VALUE:m}}=Ht(),{destroyer:y}=io(),_=En(),S=Bu(),{createDeferredPromise:E}=_n(),v=y_(),x=globalThis.Blob||n.Blob,M=typeof x<"u"?function(Y){return Y instanceof x}:function(Y){return!1},A=globalThis.AbortController||Qp().AbortController,{FunctionPrototypeCall:L}=ht(),D=class extends _{constructor(Y){super(Y),(Y==null?void 0:Y.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(Y==null?void 0:Y.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}};e.exports=function Y(R,I){if(c(R))return R;if(l(R))return q({readable:R});if(u(R))return q({writable:R});if(a(R))return q({writable:!1,readable:!1});if(typeof R=="function"){let{value:W,write:G,final:H,destroy:$}=B(R);if(o(W))return v(D,W,{objectMode:!0,write:G,final:H,destroy:$});let ne=W==null?void 0:W.then;if(typeof ne=="function"){let ue,re=L(ne,W,k=>{if(k!=null)throw new m("nully","body",k)},k=>{y(ue,k)});return ue=new D({objectMode:!0,readable:!1,write:G,final(k){H(async()=>{try{await re,r.nextTick(k,null)}catch(Q){r.nextTick(k,Q)}})},destroy:$})}throw new m("Iterable, AsyncIterable or AsyncFunction",I,W)}if(M(R))return Y(R.arrayBuffer());if(o(R))return v(D,R,{objectMode:!0,writable:!1});if(typeof(R==null?void 0:R.writable)=="object"||typeof(R==null?void 0:R.readable)=="object"){let W=R!=null&&R.readable?l(R==null?void 0:R.readable)?R==null?void 0:R.readable:Y(R.readable):void 0,G=R!=null&&R.writable?u(R==null?void 0:R.writable)?R==null?void 0:R.writable:Y(R.writable):void 0;return q({readable:W,writable:G})}let N=R==null?void 0:R.then;if(typeof N=="function"){let W;return L(N,R,G=>{G!=null&&W.push(G),W.push(null)},G=>{y(W,G)}),W=new D({objectMode:!0,writable:!1,read(){}})}throw new g(I,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],R)};function B(Y){let{promise:R,resolve:I}=E(),N=new A,W=N.signal;return{value:Y(async function*(){for(;;){let G=R;R=null;let{chunk:H,done:$,cb:ne}=await G;if(r.nextTick(ne),$)return;if(W.aborted)throw new d(void 0,{cause:W.reason});({promise:R,resolve:I}=E()),yield H}}(),{signal:W}),write(G,H,$){let ne=I;I=null,ne({chunk:G,done:!1,cb:$})},final(G){let H=I;I=null,H({done:!0,cb:G})},destroy(G,H){N.abort(),H(G)}}}function q(Y){let R=Y.readable&&typeof Y.readable.read!="function"?S.wrap(Y.readable):Y.readable,I=Y.writable,N=!!s(R),W=!!i(I),G,H,$,ne,ue;function re(k){let Q=ne;ne=null,Q?Q(k):k&&ue.destroy(k)}return ue=new D({readableObjectMode:!!(R!=null&&R.readableObjectMode),writableObjectMode:!!(I!=null&&I.writableObjectMode),readable:N,writable:W}),W&&(f(I,k=>{W=!1,k&&y(R,k),re(k)}),ue._write=function(k,Q,de){I.write(k,Q)?de():G=de},ue._final=function(k){I.end(),H=k},I.on("drain",function(){if(G){let k=G;G=null,k()}}),I.on("finish",function(){if(H){let k=H;H=null,k()}})),N&&(f(R,k=>{N=!1,k&&y(R,k),re(k)}),R.on("readable",function(){if($){let k=$;$=null,k()}}),R.on("end",function(){ue.push(null)}),ue._read=function(){for(;;){let k=R.read();if(k===null){$=ue._read;return}if(!ue.push(k))return}}),ue._destroy=function(k,Q){!k&&ne!==null&&(k=new d),$=null,G=null,H=null,ne===null?Q(k):(ne=Q,y(I,k),y(R,k))},ue}}),En=Te((t,e)=>{we(),_e(),ve();var{ObjectDefineProperties:r,ObjectGetOwnPropertyDescriptor:n,ObjectKeys:s,ObjectSetPrototypeOf:i}=ht();e.exports=l;var o=Bu(),a=w_();i(l.prototype,o.prototype),i(l,o);{let d=s(a.prototype);for(let g=0;g<d.length;g++){let m=d[g];l.prototype[m]||(l.prototype[m]=a.prototype[m])}}function l(d){if(!(this instanceof l))return new l(d);o.call(this,d),a.call(this,d),d?(this.allowHalfOpen=d.allowHalfOpen!==!1,d.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),d.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}r(l.prototype,{writable:{__proto__:null,...n(a.prototype,"writable")},writableHighWaterMark:{__proto__:null,...n(a.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...n(a.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...n(a.prototype,"writableBuffer")},writableLength:{__proto__:null,...n(a.prototype,"writableLength")},writableFinished:{__proto__:null,...n(a.prototype,"writableFinished")},writableCorked:{__proto__:null,...n(a.prototype,"writableCorked")},writableEnded:{__proto__:null,...n(a.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...n(a.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(d){this._readableState&&this._writableState&&(this._readableState.destroyed=d,this._writableState.destroyed=d)}}});var u;function c(){return u===void 0&&(u={}),u}l.fromWeb=function(d,g){return c().newStreamDuplexFromReadableWritablePair(d,g)},l.toWeb=function(d){return c().newReadableWritablePairFromDuplex(d)};var f;l.from=function(d){return f||(f=ok()),f(d,"body")}}),v_=Te((t,e)=>{we(),_e(),ve();var{ObjectSetPrototypeOf:r,Symbol:n}=ht();e.exports=l;var{ERR_METHOD_NOT_IMPLEMENTED:s}=Ht().codes,i=En(),{getHighWaterMark:o}=Zp();r(l.prototype,i.prototype),r(l,i);var a=n("kCallback");function l(f){if(!(this instanceof l))return new l(f);let d=f?o(this,f,"readableHighWaterMark",!0):null;d===0&&(f={...f,highWaterMark:null,readableHighWaterMark:d,writableHighWaterMark:f.writableHighWaterMark||0}),i.call(this,f),this._readableState.sync=!1,this[a]=null,f&&(typeof f.transform=="function"&&(this._transform=f.transform),typeof f.flush=="function"&&(this._flush=f.flush)),this.on("prefinish",c)}function u(f){typeof this._flush=="function"&&!this.destroyed?this._flush((d,g)=>{if(d){f?f(d):this.destroy(d);return}g!=null&&this.push(g),this.push(null),f&&f()}):(this.push(null),f&&f())}function c(){this._final!==u&&u.call(this)}l.prototype._final=u,l.prototype._transform=function(f,d,g){throw new s("_transform()")},l.prototype._write=function(f,d,g){let m=this._readableState,y=this._writableState,_=m.length;this._transform(f,d,(S,E)=>{if(S){g(S);return}E!=null&&this.push(E),y.ended||_===m.length||m.length<m.highWaterMark?g():this[a]=g})},l.prototype._read=function(){if(this[a]){let f=this[a];this[a]=null,f()}}}),__=Te((t,e)=>{we(),_e(),ve();var{ObjectSetPrototypeOf:r}=ht();e.exports=s;var n=v_();r(s.prototype,n.prototype),r(s,n);function s(i){if(!(this instanceof s))return new s(i);n.call(this,i)}s.prototype._transform=function(i,o,a){a(null,i)}}),rg=Te((t,e)=>{we(),_e(),ve();var r=ns(),{ArrayIsArray:n,Promise:s,SymbolAsyncIterator:i}=ht(),o=ii(),{once:a}=_n(),l=io(),u=En(),{aggregateTwoErrors:c,codes:{ERR_INVALID_ARG_TYPE:f,ERR_INVALID_RETURN_VALUE:d,ERR_MISSING_ARGS:g,ERR_STREAM_DESTROYED:m,ERR_STREAM_PREMATURE_CLOSE:y},AbortError:_}=Ht(),{validateFunction:S,validateAbortSignal:E}=Lu(),{isIterable:v,isReadable:x,isReadableNodeStream:M,isNodeStream:A,isTransformStream:L,isWebStream:D,isReadableStream:B,isReadableEnded:q}=In(),Y=globalThis.AbortController||Qp().AbortController,R,I;function N(Q,de,ge){let me=!1;Q.on("close",()=>{me=!0});let X=o(Q,{readable:de,writable:ge},K=>{me=!K});return{destroy:K=>{me||(me=!0,l.destroyer(Q,K||new m("pipe")))},cleanup:X}}function W(Q){return S(Q[Q.length-1],"streams[stream.length - 1]"),Q.pop()}function G(Q){if(v(Q))return Q;if(M(Q))return H(Q);throw new f("val",["Readable","Iterable","AsyncIterable"],Q)}async function*H(Q){I||(I=Bu()),yield*I.prototype[i].call(Q)}async function $(Q,de,ge,{end:me}){let X,K=null,ie=ce=>{if(ce&&(X=ce),K){let C=K;K=null,C()}},be=()=>new s((ce,C)=>{X?C(X):K=()=>{X?C(X):ce()}});de.on("drain",ie);let he=o(de,{readable:!1},ie);try{de.writableNeedDrain&&await be();for await(let ce of Q)de.write(ce)||await be();me&&de.end(),await be(),ge()}catch(ce){ge(X!==ce?c(X,ce):ce)}finally{he(),de.off("drain",ie)}}async function ne(Q,de,ge,{end:me}){L(de)&&(de=de.writable);let X=de.getWriter();try{for await(let K of Q)await X.ready,X.write(K).catch(()=>{});await X.ready,me&&await X.close(),ge()}catch(K){try{await X.abort(K),ge(K)}catch(ie){ge(ie)}}}function ue(...Q){return re(Q,a(W(Q)))}function re(Q,de,ge){if(Q.length===1&&n(Q[0])&&(Q=Q[0]),Q.length<2)throw new g("streams");let me=new Y,X=me.signal,K=ge==null?void 0:ge.signal,ie=[];E(K,"options.signal");function be(){j(new _)}K==null||K.addEventListener("abort",be);let he,ce,C=[],P=0;function O(V){j(V,--P===0)}function j(V,te){if(V&&(!he||he.code==="ERR_STREAM_PREMATURE_CLOSE")&&(he=V),!(!he&&!te)){for(;C.length;)C.shift()(he);K==null||K.removeEventListener("abort",be),me.abort(),te&&(he||ie.forEach(F=>F()),r.nextTick(de,he,ce))}}let z;for(let V=0;V<Q.length;V++){let te=Q[V],F=V<Q.length-1,J=V>0,se=F||(ge==null?void 0:ge.end)!==!1,pe=V===Q.length-1;if(A(te)){let w=function(p){p&&p.name!=="AbortError"&&p.code!=="ERR_STREAM_PREMATURE_CLOSE"&&O(p)};if(se){let{destroy:p,cleanup:h}=N(te,F,J);C.push(p),x(te)&&pe&&ie.push(h)}te.on("error",w),x(te)&&pe&&ie.push(()=>{te.removeListener("error",w)})}if(V===0)if(typeof te=="function"){if(z=te({signal:X}),!v(z))throw new d("Iterable, AsyncIterable or Stream","source",z)}else v(te)||M(te)||L(te)?z=te:z=u.from(te);else if(typeof te=="function"){if(L(z)){var oe;z=G((oe=z)===null||oe===void 0?void 0:oe.readable)}else z=G(z);if(z=te(z,{signal:X}),F){if(!v(z,!0))throw new d("AsyncIterable",`transform[${V-1}]`,z)}else{var fe;R||(R=__());let w=new R({objectMode:!0}),p=(fe=z)===null||fe===void 0?void 0:fe.then;if(typeof p=="function")P++,p.call(z,T=>{ce=T,T!=null&&w.write(T),se&&w.end(),r.nextTick(O)},T=>{w.destroy(T),r.nextTick(O,T)});else if(v(z,!0))P++,$(z,w,O,{end:se});else if(B(z)||L(z)){let T=z.readable||z;P++,$(T,w,O,{end:se})}else throw new d("AsyncIterable or Promise","destination",z);z=w;let{destroy:h,cleanup:b}=N(z,!1,!0);C.push(h),pe&&ie.push(b)}}else if(A(te)){if(M(z)){P+=2;let w=k(z,te,O,{end:se});x(te)&&pe&&ie.push(w)}else if(L(z)||B(z)){let w=z.readable||z;P++,$(w,te,O,{end:se})}else if(v(z))P++,$(z,te,O,{end:se});else throw new f("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],z);z=te}else if(D(te)){if(M(z))P++,ne(G(z),te,O,{end:se});else if(B(z)||v(z))P++,ne(z,te,O,{end:se});else if(L(z))P++,ne(z.readable,te,O,{end:se});else throw new f("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],z);z=te}else z=u.from(te)}return(X!=null&&X.aborted||K!=null&&K.aborted)&&r.nextTick(be),z}function k(Q,de,ge,{end:me}){let X=!1;if(de.on("close",()=>{X||ge(new y)}),Q.pipe(de,{end:!1}),me){let K=function(){X=!0,de.end()};q(Q)?r.nextTick(K):Q.once("end",K)}else ge();return o(Q,{readable:!0,writable:!1},K=>{let ie=Q._readableState;K&&K.code==="ERR_STREAM_PREMATURE_CLOSE"&&ie&&ie.ended&&!ie.errored&&!ie.errorEmitted?Q.once("end",ge).once("error",ge):ge(K)}),o(de,{readable:!1,writable:!0},ge)}e.exports={pipelineImpl:re,pipeline:ue}}),E_=Te((t,e)=>{we(),_e(),ve();var{pipeline:r}=rg(),n=En(),{destroyer:s}=io(),{isNodeStream:i,isReadable:o,isWritable:a,isWebStream:l,isTransformStream:u,isWritableStream:c,isReadableStream:f}=In(),{AbortError:d,codes:{ERR_INVALID_ARG_VALUE:g,ERR_MISSING_ARGS:m}}=Ht(),y=ii();e.exports=function(..._){if(_.length===0)throw new m("streams");if(_.length===1)return n.from(_[0]);let S=[..._];if(typeof _[0]=="function"&&(_[0]=n.from(_[0])),typeof _[_.length-1]=="function"){let R=_.length-1;_[R]=n.from(_[R])}for(let R=0;R<_.length;++R)if(!(!i(_[R])&&!l(_[R]))){if(R<_.length-1&&!(o(_[R])||f(_[R])||u(_[R])))throw new g(`streams[${R}]`,S[R],"must be readable");if(R>0&&!(a(_[R])||c(_[R])||u(_[R])))throw new g(`streams[${R}]`,S[R],"must be writable")}let E,v,x,M,A;function L(R){let I=M;M=null,I?I(R):R?A.destroy(R):!Y&&!q&&A.destroy()}let D=_[0],B=r(_,L),q=!!(a(D)||c(D)||u(D)),Y=!!(o(B)||f(B)||u(B));if(A=new n({writableObjectMode:!!(D!=null&&D.writableObjectMode),readableObjectMode:!!(B!=null&&B.writableObjectMode),writable:q,readable:Y}),q){if(i(D))A._write=function(I,N,W){D.write(I,N)?W():E=W},A._final=function(I){D.end(),v=I},D.on("drain",function(){if(E){let I=E;E=null,I()}});else if(l(D)){let I=(u(D)?D.writable:D).getWriter();A._write=async function(N,W,G){try{await I.ready,I.write(N).catch(()=>{}),G()}catch(H){G(H)}},A._final=async function(N){try{await I.ready,I.close().catch(()=>{}),v=N}catch(W){N(W)}}}let R=u(B)?B.readable:B;y(R,()=>{if(v){let I=v;v=null,I()}})}if(Y){if(i(B))B.on("readable",function(){if(x){let R=x;x=null,R()}}),B.on("end",function(){A.push(null)}),A._read=function(){for(;;){let R=B.read();if(R===null){x=A._read;return}if(!A.push(R))return}};else if(l(B)){let R=(u(B)?B.readable:B).getReader();A._read=async function(){for(;;)try{let{value:I,done:N}=await R.read();if(!A.push(I))return;if(N){A.push(null);return}}catch{return}}}}return A._destroy=function(R,I){!R&&M!==null&&(R=new d),x=null,E=null,v=null,M===null?I(R):(M=I,i(B)&&s(B,R))},A}}),ak=Te((t,e)=>{we(),_e(),ve();var r=globalThis.AbortController||Qp().AbortController,{codes:{ERR_INVALID_ARG_VALUE:n,ERR_INVALID_ARG_TYPE:s,ERR_MISSING_ARGS:i,ERR_OUT_OF_RANGE:o},AbortError:a}=Ht(),{validateAbortSignal:l,validateInteger:u,validateObject:c}=Lu(),f=ht().Symbol("kWeak"),{finished:d}=ii(),g=E_(),{addAbortSignalNoValidate:m}=Nu(),{isWritable:y,isNodeStream:_}=In(),{ArrayPrototypePush:S,MathFloor:E,Number:v,NumberIsNaN:x,Promise:M,PromiseReject:A,PromisePrototypeThen:L,Symbol:D}=ht(),B=D("kEmpty"),q=D("kEof");function Y(me,X){if(X!=null&&c(X,"options"),(X==null?void 0:X.signal)!=null&&l(X.signal,"options.signal"),_(me)&&!y(me))throw new n("stream",me,"must be writable");let K=g(this,me);return X!=null&&X.signal&&m(X.signal,K),K}function R(me,X){if(typeof me!="function")throw new s("fn",["Function","AsyncFunction"],me);X!=null&&c(X,"options"),(X==null?void 0:X.signal)!=null&&l(X.signal,"options.signal");let K=1;return(X==null?void 0:X.concurrency)!=null&&(K=E(X.concurrency)),u(K,"concurrency",1),(async function*(){var ie,be;let he=new r,ce=this,C=[],P=he.signal,O={signal:P},j=()=>he.abort();X!=null&&(ie=X.signal)!==null&&ie!==void 0&&ie.aborted&&j(),X==null||(be=X.signal)===null||be===void 0||be.addEventListener("abort",j);let z,oe,fe=!1;function V(){fe=!0}async function te(){try{for await(let se of ce){var F;if(fe)return;if(P.aborted)throw new a;try{se=me(se,O)}catch(pe){se=A(pe)}se!==B&&(typeof((F=se)===null||F===void 0?void 0:F.catch)=="function"&&se.catch(V),C.push(se),z&&(z(),z=null),!fe&&C.length&&C.length>=K&&await new M(pe=>{oe=pe}))}C.push(q)}catch(se){let pe=A(se);L(pe,void 0,V),C.push(pe)}finally{var J;fe=!0,z&&(z(),z=null),X==null||(J=X.signal)===null||J===void 0||J.removeEventListener("abort",j)}}te();try{for(;;){for(;C.length>0;){let F=await C[0];if(F===q)return;if(P.aborted)throw new a;F!==B&&(yield F),C.shift(),oe&&(oe(),oe=null)}await new M(F=>{z=F})}}finally{he.abort(),fe=!0,oe&&(oe(),oe=null)}}).call(this)}function I(me=void 0){return me!=null&&c(me,"options"),(me==null?void 0:me.signal)!=null&&l(me.signal,"options.signal"),(async function*(){let X=0;for await(let ie of this){var K;if(me!=null&&(K=me.signal)!==null&&K!==void 0&&K.aborted)throw new a({cause:me.signal.reason});yield[X++,ie]}}).call(this)}async function N(me,X=void 0){for await(let K of $.call(this,me,X))return!0;return!1}async function W(me,X=void 0){if(typeof me!="function")throw new s("fn",["Function","AsyncFunction"],me);return!await N.call(this,async(...K)=>!await me(...K),X)}async function G(me,X){for await(let K of $.call(this,me,X))return K}async function H(me,X){if(typeof me!="function")throw new s("fn",["Function","AsyncFunction"],me);async function K(ie,be){return await me(ie,be),B}for await(let ie of R.call(this,K,X));}function $(me,X){if(typeof me!="function")throw new s("fn",["Function","AsyncFunction"],me);async function K(ie,be){return await me(ie,be)?ie:B}return R.call(this,K,X)}var ne=class extends i{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}};async function ue(me,X,K){var ie;if(typeof me!="function")throw new s("reducer",["Function","AsyncFunction"],me);K!=null&&c(K,"options"),(K==null?void 0:K.signal)!=null&&l(K.signal,"options.signal");let be=arguments.length>1;if(K!=null&&(ie=K.signal)!==null&&ie!==void 0&&ie.aborted){let O=new a(void 0,{cause:K.signal.reason});throw this.once("error",()=>{}),await d(this.destroy(O)),O}let he=new r,ce=he.signal;if(K!=null&&K.signal){let O={once:!0,[f]:this};K.signal.addEventListener("abort",()=>he.abort(),O)}let C=!1;try{for await(let O of this){var P;if(C=!0,K!=null&&(P=K.signal)!==null&&P!==void 0&&P.aborted)throw new a;be?X=await me(X,O,{signal:ce}):(X=O,be=!0)}if(!C&&!be)throw new ne}finally{he.abort()}return X}async function re(me){me!=null&&c(me,"options"),(me==null?void 0:me.signal)!=null&&l(me.signal,"options.signal");let X=[];for await(let ie of this){var K;if(me!=null&&(K=me.signal)!==null&&K!==void 0&&K.aborted)throw new a(void 0,{cause:me.signal.reason});S(X,ie)}return X}function k(me,X){let K=R.call(this,me,X);return(async function*(){for await(let ie of K)yield*ie}).call(this)}function Q(me){if(me=v(me),x(me))return 0;if(me<0)throw new o("number",">= 0",me);return me}function de(me,X=void 0){return X!=null&&c(X,"options"),(X==null?void 0:X.signal)!=null&&l(X.signal,"options.signal"),me=Q(me),(async function*(){var K;if(X!=null&&(K=X.signal)!==null&&K!==void 0&&K.aborted)throw new a;for await(let be of this){var ie;if(X!=null&&(ie=X.signal)!==null&&ie!==void 0&&ie.aborted)throw new a;me--<=0&&(yield be)}}).call(this)}function ge(me,X=void 0){return X!=null&&c(X,"options"),(X==null?void 0:X.signal)!=null&&l(X.signal,"options.signal"),me=Q(me),(async function*(){var K;if(X!=null&&(K=X.signal)!==null&&K!==void 0&&K.aborted)throw new a;for await(let be of this){var ie;if(X!=null&&(ie=X.signal)!==null&&ie!==void 0&&ie.aborted)throw new a;if(me-- >0)yield be;else return}}).call(this)}e.exports.streamReturningOperators={asIndexedPairs:I,drop:de,filter:$,flatMap:k,map:R,take:ge,compose:Y},e.exports.promiseReturningOperators={every:W,forEach:H,reduce:ue,toArray:re,some:N,find:G}}),S_=Te((t,e)=>{we(),_e(),ve();var{ArrayPrototypePop:r,Promise:n}=ht(),{isIterable:s,isNodeStream:i,isWebStream:o}=In(),{pipelineImpl:a}=rg(),{finished:l}=ii();T_();function u(...c){return new n((f,d)=>{let g,m,y=c[c.length-1];if(y&&typeof y=="object"&&!i(y)&&!s(y)&&!o(y)){let _=r(c);g=_.signal,m=_.end}a(c,(_,S)=>{_?d(_):f(S)},{signal:g,end:m})})}e.exports={finished:l,pipeline:u}}),T_=Te((t,e)=>{we(),_e(),ve();var{Buffer:r}=(St(),Ke(Et)),{ObjectDefineProperty:n,ObjectKeys:s,ReflectApply:i}=ht(),{promisify:{custom:o}}=_n(),{streamReturningOperators:a,promiseReturningOperators:l}=ak(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:u}}=Ht(),c=E_(),{pipeline:f}=rg(),{destroyer:d}=io(),g=ii(),m=S_(),y=In(),_=e.exports=Jp().Stream;_.isDisturbed=y.isDisturbed,_.isErrored=y.isErrored,_.isReadable=y.isReadable,_.Readable=Bu();for(let E of s(a)){let v=function(...M){if(new.target)throw u();return _.Readable.from(i(x,this,M))},x=a[E];n(v,"name",{__proto__:null,value:x.name}),n(v,"length",{__proto__:null,value:x.length}),n(_.Readable.prototype,E,{__proto__:null,value:v,enumerable:!1,configurable:!0,writable:!0})}for(let E of s(l)){let v=function(...M){if(new.target)throw u();return i(x,this,M)},x=l[E];n(v,"name",{__proto__:null,value:x.name}),n(v,"length",{__proto__:null,value:x.length}),n(_.Readable.prototype,E,{__proto__:null,value:v,enumerable:!1,configurable:!0,writable:!0})}_.Writable=w_(),_.Duplex=En(),_.Transform=v_(),_.PassThrough=__(),_.pipeline=f;var{addAbortSignal:S}=Nu();_.addAbortSignal=S,_.finished=g,_.destroy=d,_.compose=c,n(_,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return m}}),n(f,o,{__proto__:null,enumerable:!0,get(){return m.pipeline}}),n(g,o,{__proto__:null,enumerable:!0,get(){return m.finished}}),_.Stream=_,_._isUint8Array=function(E){return E instanceof Uint8Array},_._uint8ArrayToBuffer=function(E){return r.from(E.buffer,E.byteOffset,E.byteLength)}}),ss=Te((t,e)=>{we(),_e(),ve();var r=T_(),n=S_(),s=r.Readable.destroy;e.exports=r.Readable,e.exports._uint8ArrayToBuffer=r._uint8ArrayToBuffer,e.exports._isUint8Array=r._isUint8Array,e.exports.isDisturbed=r.isDisturbed,e.exports.isErrored=r.isErrored,e.exports.isReadable=r.isReadable,e.exports.Readable=r.Readable,e.exports.Writable=r.Writable,e.exports.Duplex=r.Duplex,e.exports.Transform=r.Transform,e.exports.PassThrough=r.PassThrough,e.exports.addAbortSignal=r.addAbortSignal,e.exports.finished=r.finished,e.exports.destroy=r.destroy,e.exports.destroy=s,e.exports.pipeline=r.pipeline,e.exports.compose=r.compose,Object.defineProperty(r,"promises",{configurable:!0,enumerable:!0,get(){return n}}),e.exports.Stream=r.Stream,e.exports.default=e.exports}),lk=Te((t,e)=>{we(),_e(),ve(),typeof Object.create=="function"?e.exports=function(r,n){n&&(r.super_=n,r.prototype=Object.create(n.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(r,n){if(n){r.super_=n;var s=function(){};s.prototype=n.prototype,r.prototype=new s,r.prototype.constructor=r}}}),uk=Te((t,e)=>{we(),_e(),ve();var{Buffer:r}=(St(),Ke(Et)),n=Symbol.for("BufferList");function s(i){if(!(this instanceof s))return new s(i);s._init.call(this,i)}s._init=function(i){Object.defineProperty(this,n,{value:!0}),this._bufs=[],this.length=0,i&&this.append(i)},s.prototype._new=function(i){return new s(i)},s.prototype._offset=function(i){if(i===0)return[0,0];let o=0;for(let a=0;a<this._bufs.length;a++){let l=o+this._bufs[a].length;if(i<l||a===this._bufs.length-1)return[a,i-o];o=l}},s.prototype._reverseOffset=function(i){let o=i[0],a=i[1];for(let l=0;l<o;l++)a+=this._bufs[l].length;return a},s.prototype.get=function(i){if(i>this.length||i<0)return;let o=this._offset(i);return this._bufs[o[0]][o[1]]},s.prototype.slice=function(i,o){return typeof i=="number"&&i<0&&(i+=this.length),typeof o=="number"&&o<0&&(o+=this.length),this.copy(null,0,i,o)},s.prototype.copy=function(i,o,a,l){if((typeof a!="number"||a<0)&&(a=0),(typeof l!="number"||l>this.length)&&(l=this.length),a>=this.length||l<=0)return i||r.alloc(0);let u=!!i,c=this._offset(a),f=l-a,d=f,g=u&&o||0,m=c[1];if(a===0&&l===this.length){if(!u)return this._bufs.length===1?this._bufs[0]:r.concat(this._bufs,this.length);for(let y=0;y<this._bufs.length;y++)this._bufs[y].copy(i,g),g+=this._bufs[y].length;return i}if(d<=this._bufs[c[0]].length-m)return u?this._bufs[c[0]].copy(i,o,m,m+d):this._bufs[c[0]].slice(m,m+d);u||(i=r.allocUnsafe(f));for(let y=c[0];y<this._bufs.length;y++){let _=this._bufs[y].length-m;if(d>_)this._bufs[y].copy(i,g,m),g+=_;else{this._bufs[y].copy(i,g,m,m+d),g+=_;break}d-=_,m&&(m=0)}return i.length>g?i.slice(0,g):i},s.prototype.shallowSlice=function(i,o){if(i=i||0,o=typeof o!="number"?this.length:o,i<0&&(i+=this.length),o<0&&(o+=this.length),i===o)return this._new();let a=this._offset(i),l=this._offset(o),u=this._bufs.slice(a[0],l[0]+1);return l[1]===0?u.pop():u[u.length-1]=u[u.length-1].slice(0,l[1]),a[1]!==0&&(u[0]=u[0].slice(a[1])),this._new(u)},s.prototype.toString=function(i,o,a){return this.slice(o,a).toString(i)},s.prototype.consume=function(i){if(i=Math.trunc(i),Number.isNaN(i)||i<=0)return this;for(;this._bufs.length;)if(i>=this._bufs[0].length)i-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(i),this.length-=i;break}return this},s.prototype.duplicate=function(){let i=this._new();for(let o=0;o<this._bufs.length;o++)i.append(this._bufs[o]);return i},s.prototype.append=function(i){if(i==null)return this;if(i.buffer)this._appendBuffer(r.from(i.buffer,i.byteOffset,i.byteLength));else if(Array.isArray(i))for(let o=0;o<i.length;o++)this.append(i[o]);else if(this._isBufferList(i))for(let o=0;o<i._bufs.length;o++)this.append(i._bufs[o]);else typeof i=="number"&&(i=i.toString()),this._appendBuffer(r.from(i));return this},s.prototype._appendBuffer=function(i){this._bufs.push(i),this.length+=i.length},s.prototype.indexOf=function(i,o,a){if(a===void 0&&typeof o=="string"&&(a=o,o=void 0),typeof i=="function"||Array.isArray(i))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof i=="number"?i=r.from([i]):typeof i=="string"?i=r.from(i,a):this._isBufferList(i)?i=i.slice():Array.isArray(i.buffer)?i=r.from(i.buffer,i.byteOffset,i.byteLength):r.isBuffer(i)||(i=r.from(i)),o=Number(o||0),isNaN(o)&&(o=0),o<0&&(o=this.length+o),o<0&&(o=0),i.length===0)return o>this.length?this.length:o;let l=this._offset(o),u=l[0],c=l[1];for(;u<this._bufs.length;u++){let f=this._bufs[u];for(;c<f.length;)if(f.length-c>=i.length){let d=f.indexOf(i,c);if(d!==-1)return this._reverseOffset([u,d]);c=f.length-i.length+1}else{let d=this._reverseOffset([u,c]);if(this._match(d,i))return d;c++}c=0}return-1},s.prototype._match=function(i,o){if(this.length-i<o.length)return!1;for(let a=0;a<o.length;a++)if(this.get(i+a)!==o[a])return!1;return!0},function(){let i={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let o in i)(function(a){i[a]===null?s.prototype[a]=function(l,u){return this.slice(l,l+u)[a](0,u)}:s.prototype[a]=function(l=0){return this.slice(l,l+i[a])[a](0)}})(o)}(),s.prototype._isBufferList=function(i){return i instanceof s||s.isBufferList(i)},s.isBufferList=function(i){return i!=null&&i[n]},e.exports=s}),ck=Te((t,e)=>{we(),_e(),ve();var r=ss().Duplex,n=lk(),s=uk();function i(o){if(!(this instanceof i))return new i(o);if(typeof o=="function"){this._callback=o;let a=(function(l){this._callback&&(this._callback(l),this._callback=null)}).bind(this);this.on("pipe",function(l){l.on("error",a)}),this.on("unpipe",function(l){l.removeListener("error",a)}),o=null}s._init.call(this,o),r.call(this)}n(i,r),Object.assign(i.prototype,s.prototype),i.prototype._new=function(o){return new i(o)},i.prototype._write=function(o,a,l){this._appendBuffer(o),typeof l=="function"&&l()},i.prototype._read=function(o){if(!this.length)return this.push(null);o=Math.min(o,this.length),this.push(this.slice(0,o)),this.consume(o)},i.prototype.end=function(o){r.prototype.end.call(this,o),this._callback&&(this._callback(null,this.slice()),this._callback=null)},i.prototype._destroy=function(o,a){this._bufs.length=0,this.length=0,a(o)},i.prototype._isBufferList=function(o){return o instanceof i||o instanceof s||i.isBufferList(o)},i.isBufferList=s.isBufferList,e.exports=i,e.exports.BufferListStream=i,e.exports.BufferList=s}),fk=Te((t,e)=>{we(),_e(),ve();var r=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};e.exports=r}),x_=Te((t,e)=>{we(),_e(),ve();var r=e.exports,{Buffer:n}=(St(),Ke(Et));r.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},r.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},r.requiredHeaderFlagsErrors={};for(let i in r.requiredHeaderFlags){let o=r.requiredHeaderFlags[i];r.requiredHeaderFlagsErrors[i]="Invalid header flag bits, must be 0x"+o.toString(16)+" for "+r.types[i]+" packet"}r.codes={};for(let i in r.types){let o=r.types[i];r.codes[o]=i}r.CMD_SHIFT=4,r.CMD_MASK=240,r.DUP_MASK=8,r.QOS_MASK=3,r.QOS_SHIFT=1,r.RETAIN_MASK=1,r.VARBYTEINT_MASK=127,r.VARBYTEINT_FIN_MASK=128,r.VARBYTEINT_MAX=268435455,r.SESSIONPRESENT_MASK=1,r.SESSIONPRESENT_HEADER=n.from([r.SESSIONPRESENT_MASK]),r.CONNACK_HEADER=n.from([r.codes.connack<<r.CMD_SHIFT]),r.USERNAME_MASK=128,r.PASSWORD_MASK=64,r.WILL_RETAIN_MASK=32,r.WILL_QOS_MASK=24,r.WILL_QOS_SHIFT=3,r.WILL_FLAG_MASK=4,r.CLEAN_SESSION_MASK=2,r.CONNECT_HEADER=n.from([r.codes.connect<<r.CMD_SHIFT]),r.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},r.propertiesCodes={};for(let i in r.properties){let o=r.properties[i];r.propertiesCodes[o]=i}r.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function s(i){return[0,1,2].map(o=>[0,1].map(a=>[0,1].map(l=>{let u=n.alloc(1);return u.writeUInt8(r.codes[i]<<r.CMD_SHIFT|(a?r.DUP_MASK:0)|o<<r.QOS_SHIFT|l,0,!0),u})))}r.PUBLISH_HEADER=s("publish"),r.SUBSCRIBE_HEADER=s("subscribe"),r.SUBSCRIBE_OPTIONS_QOS_MASK=3,r.SUBSCRIBE_OPTIONS_NL_MASK=1,r.SUBSCRIBE_OPTIONS_NL_SHIFT=2,r.SUBSCRIBE_OPTIONS_RAP_MASK=1,r.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,r.SUBSCRIBE_OPTIONS_RH_MASK=3,r.SUBSCRIBE_OPTIONS_RH_SHIFT=4,r.SUBSCRIBE_OPTIONS_RH=[0,16,32],r.SUBSCRIBE_OPTIONS_NL=4,r.SUBSCRIBE_OPTIONS_RAP=8,r.SUBSCRIBE_OPTIONS_QOS=[0,1,2],r.UNSUBSCRIBE_HEADER=s("unsubscribe"),r.ACKS={unsuback:s("unsuback"),puback:s("puback"),pubcomp:s("pubcomp"),pubrel:s("pubrel"),pubrec:s("pubrec")},r.SUBACK_HEADER=n.from([r.codes.suback<<r.CMD_SHIFT]),r.VERSION3=n.from([3]),r.VERSION4=n.from([4]),r.VERSION5=n.from([5]),r.VERSION131=n.from([131]),r.VERSION132=n.from([132]),r.QOS=[0,1,2].map(i=>n.from([i])),r.EMPTY={pingreq:n.from([r.codes.pingreq<<4,0]),pingresp:n.from([r.codes.pingresp<<4,0]),disconnect:n.from([r.codes.disconnect<<4,0])},r.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},r.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},r.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},r.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}}),dk=Te((t,e)=>{we(),_e(),ve();var r=1e3,n=r*60,s=n*60,i=s*24,o=i*7,a=i*365.25;e.exports=function(d,g){g=g||{};var m=typeof d;if(m==="string"&&d.length>0)return l(d);if(m==="number"&&isFinite(d))return g.long?c(d):u(d);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(d))};function l(d){if(d=String(d),!(d.length>100)){var g=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(d);if(g){var m=parseFloat(g[1]),y=(g[2]||"ms").toLowerCase();switch(y){case"years":case"year":case"yrs":case"yr":case"y":return m*a;case"weeks":case"week":case"w":return m*o;case"days":case"day":case"d":return m*i;case"hours":case"hour":case"hrs":case"hr":case"h":return m*s;case"minutes":case"minute":case"mins":case"min":case"m":return m*n;case"seconds":case"second":case"secs":case"sec":case"s":return m*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return m;default:return}}}}function u(d){var g=Math.abs(d);return g>=i?Math.round(d/i)+"d":g>=s?Math.round(d/s)+"h":g>=n?Math.round(d/n)+"m":g>=r?Math.round(d/r)+"s":d+"ms"}function c(d){var g=Math.abs(d);return g>=i?f(d,g,i,"day"):g>=s?f(d,g,s,"hour"):g>=n?f(d,g,n,"minute"):g>=r?f(d,g,r,"second"):d+" ms"}function f(d,g,m,y){var _=g>=m*1.5;return Math.round(d/m)+" "+y+(_?"s":"")}}),hk=Te((t,e)=>{we(),_e(),ve();function r(n){i.debug=i,i.default=i,i.coerce=f,i.disable=l,i.enable=a,i.enabled=u,i.humanize=dk(),i.destroy=d,Object.keys(n).forEach(g=>{i[g]=n[g]}),i.names=[],i.skips=[],i.formatters={};function s(g){let m=0;for(let y=0;y<g.length;y++)m=(m<<5)-m+g.charCodeAt(y),m|=0;return i.colors[Math.abs(m)%i.colors.length]}i.selectColor=s;function i(g){let m,y=null,_,S;function E(...v){if(!E.enabled)return;let x=E,M=Number(new Date),A=M-(m||M);x.diff=A,x.prev=m,x.curr=M,m=M,v[0]=i.coerce(v[0]),typeof v[0]!="string"&&v.unshift("%O");let L=0;v[0]=v[0].replace(/%([a-zA-Z%])/g,(D,B)=>{if(D==="%%")return"%";L++;let q=i.formatters[B];if(typeof q=="function"){let Y=v[L];D=q.call(x,Y),v.splice(L,1),L--}return D}),i.formatArgs.call(x,v),(x.log||i.log).apply(x,v)}return E.namespace=g,E.useColors=i.useColors(),E.color=i.selectColor(g),E.extend=o,E.destroy=i.destroy,Object.defineProperty(E,"enabled",{enumerable:!0,configurable:!1,get:()=>y!==null?y:(_!==i.namespaces&&(_=i.namespaces,S=i.enabled(g)),S),set:v=>{y=v}}),typeof i.init=="function"&&i.init(E),E}function o(g,m){let y=i(this.namespace+(typeof m>"u"?":":m)+g);return y.log=this.log,y}function a(g){i.save(g),i.namespaces=g,i.names=[],i.skips=[];let m,y=(typeof g=="string"?g:"").split(/[\s,]+/),_=y.length;for(m=0;m<_;m++)y[m]&&(g=y[m].replace(/\*/g,".*?"),g[0]==="-"?i.skips.push(new RegExp("^"+g.slice(1)+"$")):i.names.push(new RegExp("^"+g+"$")))}function l(){let g=[...i.names.map(c),...i.skips.map(c).map(m=>"-"+m)].join(",");return i.enable(""),g}function u(g){if(g[g.length-1]==="*")return!0;let m,y;for(m=0,y=i.skips.length;m<y;m++)if(i.skips[m].test(g))return!1;for(m=0,y=i.names.length;m<y;m++)if(i.names[m].test(g))return!0;return!1}function c(g){return g.toString().substring(2,g.toString().length-2).replace(/\.\*\?$/,"*")}function f(g){return g instanceof Error?g.stack||g.message:g}function d(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return i.enable(i.load()),i}e.exports=r}),Sn=Te((t,e)=>{we(),_e(),ve(),t.formatArgs=n,t.save=s,t.load=i,t.useColors=r,t.storage=o(),t.destroy=(()=>{let l=!1;return()=>{l||(l=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function n(l){if(l[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+l[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;let u="color: "+this.color;l.splice(1,0,u,"color: inherit");let c=0,f=0;l[0].replace(/%[a-zA-Z%]/g,d=>{d!=="%%"&&(c++,d==="%c"&&(f=c))}),l.splice(f,0,u)}t.log=console.debug||console.log||(()=>{});function s(l){try{l?t.storage.setItem("debug",l):t.storage.removeItem("debug")}catch{}}function i(){let l;try{l=t.storage.getItem("debug")}catch{}return!l&&typeof ze<"u"&&"env"in ze&&(l=ze.env.DEBUG),l}function o(){try{return localStorage}catch{}}e.exports=hk()(t);var{formatters:a}=e.exports;a.j=function(l){try{return JSON.stringify(l)}catch(u){return"[UnexpectedJSONParseError]: "+u.message}}}),pk=Te((t,e)=>{we(),_e(),ve();var r=ck(),{EventEmitter:n}=(so(),Ke(is)),s=fk(),i=x_(),o=Sn()("mqtt-packet:parser"),a=class yh extends n{constructor(){super(),this.parser=this.constructor.parser}static parser(u){return this instanceof yh?(this.settings=u||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new yh().parser(u)}_resetState(){o("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new s,this.error=null,this._list=r(),this._stateCounter=0}parse(u){for(this.error&&this._resetState(),this._list.append(u),o("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,o("parse: state complete. _stateCounter is now: %d",this._stateCounter),o("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return o("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){let u=this._list.readUInt8(0),c=u>>i.CMD_SHIFT;this.packet.cmd=i.types[c];let f=u&15,d=i.requiredHeaderFlags[c];return d!=null&&f!==d?this._emitError(new Error(i.requiredHeaderFlagsErrors[c])):(this.packet.retain=(u&i.RETAIN_MASK)!==0,this.packet.qos=u>>i.QOS_SHIFT&i.QOS_MASK,this.packet.qos>2?this._emitError(new Error("Packet must not have both QoS bits set to 1")):(this.packet.dup=(u&i.DUP_MASK)!==0,o("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0))}_parseLength(){let u=this._parseVarByteNum(!0);return u&&(this.packet.length=u.value,this._list.consume(u.bytes)),o("_parseLength %d",u.value),!!u}_parsePayload(){o("_parsePayload: payload %O",this._list);let u=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}u=!0}return o("_parsePayload complete result: %s",u),u}_parseConnect(){o("_parseConnect");let u,c,f,d,g={},m=this.packet,y=this._parseString();if(y===null)return this._emitError(new Error("Cannot parse protocolId"));if(y!=="MQTT"&&y!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(m.protocolId=y,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(m.protocolVersion=this._list.readUInt8(this._pos),m.protocolVersion>=128&&(m.bridgeMode=!0,m.protocolVersion=m.protocolVersion-128),m.protocolVersion!==3&&m.protocolVersion!==4&&m.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(this._list.readUInt8(this._pos)&1)return this._emitError(new Error("Connect flag bit 0 must be 0, but got 1"));g.username=this._list.readUInt8(this._pos)&i.USERNAME_MASK,g.password=this._list.readUInt8(this._pos)&i.PASSWORD_MASK,g.will=this._list.readUInt8(this._pos)&i.WILL_FLAG_MASK;let _=!!(this._list.readUInt8(this._pos)&i.WILL_RETAIN_MASK),S=(this._list.readUInt8(this._pos)&i.WILL_QOS_MASK)>>i.WILL_QOS_SHIFT;if(g.will)m.will={},m.will.retain=_,m.will.qos=S;else{if(_)return this._emitError(new Error("Will Retain Flag must be set to zero when Will Flag is set to 0"));if(S)return this._emitError(new Error("Will QoS must be set to zero when Will Flag is set to 0"))}if(m.clean=(this._list.readUInt8(this._pos)&i.CLEAN_SESSION_MASK)!==0,this._pos++,m.keepalive=this._parseNum(),m.keepalive===-1)return this._emitError(new Error("Packet too short"));if(m.protocolVersion===5){let v=this._parseProperties();Object.getOwnPropertyNames(v).length&&(m.properties=v)}let E=this._parseString();if(E===null)return this._emitError(new Error("Packet too short"));if(m.clientId=E,o("_parseConnect: packet.clientId: %s",m.clientId),g.will){if(m.protocolVersion===5){let v=this._parseProperties();Object.getOwnPropertyNames(v).length&&(m.will.properties=v)}if(u=this._parseString(),u===null)return this._emitError(new Error("Cannot parse will topic"));if(m.will.topic=u,o("_parseConnect: packet.will.topic: %s",m.will.topic),c=this._parseBuffer(),c===null)return this._emitError(new Error("Cannot parse will payload"));m.will.payload=c,o("_parseConnect: packet.will.paylaod: %s",m.will.payload)}if(g.username){if(d=this._parseString(),d===null)return this._emitError(new Error("Cannot parse username"));m.username=d,o("_parseConnect: packet.username: %s",m.username)}if(g.password){if(f=this._parseBuffer(),f===null)return this._emitError(new Error("Cannot parse password"));m.password=f}return this.settings=m,o("_parseConnect: complete"),m}_parseConnack(){o("_parseConnack");let u=this.packet;if(this._list.length<1)return null;let c=this._list.readUInt8(this._pos++);if(c>1)return this._emitError(new Error("Invalid connack flags, bits 7-1 must be set to 0"));if(u.sessionPresent=!!(c&i.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?u.reasonCode=this._list.readUInt8(this._pos++):u.reasonCode=0;else{if(this._list.length<2)return null;u.returnCode=this._list.readUInt8(this._pos++)}if(u.returnCode===-1||u.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){let f=this._parseProperties();Object.getOwnPropertyNames(f).length&&(u.properties=f)}o("_parseConnack: complete")}_parsePublish(){o("_parsePublish");let u=this.packet;if(u.topic=this._parseString(),u.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(u.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}u.payload=this._list.slice(this._pos,u.length),o("_parsePublish: payload from buffer list: %o",u.payload)}}_parseSubscribe(){o("_parseSubscribe");let u=this.packet,c,f,d,g,m,y,_;if(u.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let S=this._parseProperties();Object.getOwnPropertyNames(S).length&&(u.properties=S)}if(u.length<=0)return this._emitError(new Error("Malformed subscribe, no payload specified"));for(;this._pos<u.length;){if(c=this._parseString(),c===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=u.length)return this._emitError(new Error("Malformed Subscribe Payload"));if(f=this._parseByte(),this.settings.protocolVersion===5){if(f&192)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-6 must be 0"))}else if(f&252)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-2 must be 0"));if(d=f&i.SUBSCRIBE_OPTIONS_QOS_MASK,d>2)return this._emitError(new Error("Invalid subscribe QoS, must be <= 2"));if(y=(f>>i.SUBSCRIBE_OPTIONS_NL_SHIFT&i.SUBSCRIBE_OPTIONS_NL_MASK)!==0,m=(f>>i.SUBSCRIBE_OPTIONS_RAP_SHIFT&i.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,g=f>>i.SUBSCRIBE_OPTIONS_RH_SHIFT&i.SUBSCRIBE_OPTIONS_RH_MASK,g>2)return this._emitError(new Error("Invalid retain handling, must be <= 2"));_={topic:c,qos:d},this.settings.protocolVersion===5?(_.nl=y,_.rap=m,_.rh=g):this.settings.bridgeMode&&(_.rh=0,_.rap=!0,_.nl=!0),o("_parseSubscribe: push subscription `%s` to subscription",_),u.subscriptions.push(_)}}}_parseSuback(){o("_parseSuback");let u=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed suback, no payload specified"));for(;this._pos<this.packet.length;){let c=this._list.readUInt8(this._pos++);if(this.settings.protocolVersion===5){if(!i.MQTT5_SUBACK_CODES[c])return this._emitError(new Error("Invalid suback code"))}else if(c>2&&c!==128)return this._emitError(new Error("Invalid suback QoS, must be 0, 1, 2 or 128"));this.packet.granted.push(c)}}}_parseUnsubscribe(){o("_parseUnsubscribe");let u=this.packet;if(u.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed unsubscribe, no payload specified"));for(;this._pos<u.length;){let c=this._parseString();if(c===null)return this._emitError(new Error("Cannot parse topic"));o("_parseUnsubscribe: push topic `%s` to unsubscriptions",c),u.unsubscriptions.push(c)}}}_parseUnsuback(){o("_parseUnsuback");let u=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if((this.settings.protocolVersion===3||this.settings.protocolVersion===4)&&u.length!==2)return this._emitError(new Error("Malformed unsuback, payload length must be 2"));if(u.length<=0)return this._emitError(new Error("Malformed unsuback, no payload specified"));if(this.settings.protocolVersion===5){let c=this._parseProperties();for(Object.getOwnPropertyNames(c).length&&(u.properties=c),u.granted=[];this._pos<this.packet.length;){let f=this._list.readUInt8(this._pos++);if(!i.MQTT5_UNSUBACK_CODES[f])return this._emitError(new Error("Invalid unsuback code"));this.packet.granted.push(f)}}}_parseConfirmation(){o("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);let u=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5){if(u.length>2){switch(u.reasonCode=this._parseByte(),this.packet.cmd){case"puback":case"pubrec":if(!i.MQTT5_PUBACK_PUBREC_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break;case"pubrel":case"pubcomp":if(!i.MQTT5_PUBREL_PUBCOMP_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break}o("_parseConfirmation: packet.reasonCode `%d`",u.reasonCode)}else u.reasonCode=0;if(u.length>3){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}}return!0}_parseDisconnect(){let u=this.packet;if(o("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?(u.reasonCode=this._parseByte(),i.MQTT5_DISCONNECT_CODES[u.reasonCode]||this._emitError(new Error("Invalid disconnect reason code"))):u.reasonCode=0;let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}return o("_parseDisconnect result: true"),!0}_parseAuth(){o("_parseAuth");let u=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));if(u.reasonCode=this._parseByte(),!i.MQTT5_AUTH_CODES[u.reasonCode])return this._emitError(new Error("Invalid auth reason code"));let c=this._parseProperties();return Object.getOwnPropertyNames(c).length&&(u.properties=c),o("_parseAuth: result: true"),!0}_parseMessageId(){let u=this.packet;return u.messageId=this._parseNum(),u.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(o("_parseMessageId: packet.messageId %d",u.messageId),!0)}_parseString(u){let c=this._parseNum(),f=c+this._pos;if(c===-1||f>this._list.length||f>this.packet.length)return null;let d=this._list.toString("utf8",this._pos,f);return this._pos+=c,o("_parseString: result: %s",d),d}_parseStringPair(){return o("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){let u=this._parseNum(),c=u+this._pos;if(u===-1||c>this._list.length||c>this.packet.length)return null;let f=this._list.slice(this._pos,c);return this._pos+=u,o("_parseBuffer: result: %o",f),f}_parseNum(){if(this._list.length-this._pos<2)return-1;let u=this._list.readUInt16BE(this._pos);return this._pos+=2,o("_parseNum: result: %s",u),u}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;let u=this._list.readUInt32BE(this._pos);return this._pos+=4,o("_parse4ByteNum: result: %s",u),u}_parseVarByteNum(u){o("_parseVarByteNum");let c=4,f=0,d=1,g=0,m=!1,y,_=this._pos?this._pos:0;for(;f<c&&_+f<this._list.length;){if(y=this._list.readUInt8(_+f++),g+=d*(y&i.VARBYTEINT_MASK),d*=128,!(y&i.VARBYTEINT_FIN_MASK)){m=!0;break}if(this._list.length<=f)break}return!m&&f===c&&this._list.length>=f&&this._emitError(new Error("Invalid variable byte integer")),_&&(this._pos+=f),m?u?m={bytes:f,value:g}:m=g:m=!1,o("_parseVarByteNum: result: %o",m),m}_parseByte(){let u;return this._pos<this._list.length&&(u=this._list.readUInt8(this._pos),this._pos++),o("_parseByte: result: %o",u),u}_parseByType(u){switch(o("_parseByType: type: %s",u),u){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){o("_parseProperties");let u=this._parseVarByteNum(),c=this._pos+u,f={};for(;this._pos<c;){let d=this._parseByte();if(!d)return this._emitError(new Error("Cannot parse property code type")),!1;let g=i.propertiesCodes[d];if(!g)return this._emitError(new Error("Unknown property")),!1;if(g==="userProperties"){f[g]||(f[g]=Object.create(null));let m=this._parseByType(i.propertiesTypes[g]);if(f[g][m.name])if(Array.isArray(f[g][m.name]))f[g][m.name].push(m.value);else{let y=f[g][m.name];f[g][m.name]=[y],f[g][m.name].push(m.value)}else f[g][m.name]=m.value;continue}f[g]?Array.isArray(f[g])?f[g].push(this._parseByType(i.propertiesTypes[g])):(f[g]=[f[g]],f[g].push(this._parseByType(i.propertiesTypes[g]))):f[g]=this._parseByType(i.propertiesTypes[g])}return f}_newPacket(){return o("_newPacket"),this.packet&&(this._list.consume(this.packet.length),o("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),o("_newPacket: new packet"),this.packet=new s,this._pos=0,!0}_emitError(u){o("_emitError",u),this.error=u,this.emit("error",u)}};e.exports=a}),gk=Te((t,e)=>{we(),_e(),ve();var{Buffer:r}=(St(),Ke(Et)),n=65536,s={},i=r.isBuffer(r.from([1,2]).subarray(0,1));function o(c){let f=r.allocUnsafe(2);return f.writeUInt8(c>>8,0),f.writeUInt8(c&255,1),f}function a(){for(let c=0;c<n;c++)s[c]=o(c)}function l(c){let f=0,d=0,g=r.allocUnsafe(4);do f=c%128|0,c=c/128|0,c>0&&(f=f|128),g.writeUInt8(f,d++);while(c>0&&d<4);return c>0&&(d=0),i?g.subarray(0,d):g.slice(0,d)}function u(c){let f=r.allocUnsafe(4);return f.writeUInt32BE(c,0),f}e.exports={cache:s,generateCache:a,generateNumber:o,genBufVariableByteInt:l,generate4ByteBuffer:u}}),mk=Te((t,e)=>{we(),_e(),ve(),typeof ze>"u"||!ze.version||ze.version.indexOf("v0.")===0||ze.version.indexOf("v1.")===0&&ze.version.indexOf("v1.8.")!==0?e.exports={nextTick:r}:e.exports=ze;function r(n,s,i,o){if(typeof n!="function")throw new TypeError('"callback" argument must be a function');var a=arguments.length,l,u;switch(a){case 0:case 1:return ze.nextTick(n);case 2:return ze.nextTick(function(){n.call(null,s)});case 3:return ze.nextTick(function(){n.call(null,s,i)});case 4:return ze.nextTick(function(){n.call(null,s,i,o)});default:for(l=new Array(a-1),u=0;u<l.length;)l[u++]=arguments[u];return ze.nextTick(function(){n.apply(null,l)})}}}),A_=Te((t,e)=>{we(),_e(),ve();var r=x_(),{Buffer:n}=(St(),Ke(Et)),s=n.allocUnsafe(0),i=n.from([0]),o=gk(),a=mk().nextTick,l=Sn()("mqtt-packet:writeToStream"),u=o.cache,c=o.generateNumber,f=o.generateCache,d=o.genBufVariableByteInt,g=o.generate4ByteBuffer,m=H,y=!0;function _(X,K,ie){switch(l("generate called"),K.cork&&(K.cork(),a(S,K)),y&&(y=!1,f()),l("generate: packet.cmd: %s",X.cmd),X.cmd){case"connect":return E(X,K);case"connack":return v(X,K,ie);case"publish":return x(X,K,ie);case"puback":case"pubrec":case"pubrel":case"pubcomp":return M(X,K,ie);case"subscribe":return A(X,K,ie);case"suback":return L(X,K,ie);case"unsubscribe":return D(X,K,ie);case"unsuback":return B(X,K,ie);case"pingreq":case"pingresp":return q(X,K);case"disconnect":return Y(X,K,ie);case"auth":return R(X,K,ie);default:return K.destroy(new Error("Unknown command")),!1}}Object.defineProperty(_,"cacheNumbers",{get(){return m===H},set(X){X?((!u||Object.keys(u).length===0)&&(y=!0),m=H):(y=!1,m=$)}});function S(X){X.uncork()}function E(X,K,ie){let be=X||{},he=be.protocolId||"MQTT",ce=be.protocolVersion||4,C=be.will,P=be.clean,O=be.keepalive||0,j=be.clientId||"",z=be.username,oe=be.password,fe=be.properties;P===void 0&&(P=!0);let V=0;if(!he||typeof he!="string"&&!n.isBuffer(he))return K.destroy(new Error("Invalid protocolId")),!1;if(V+=he.length+2,ce!==3&&ce!==4&&ce!==5)return K.destroy(new Error("Invalid protocol version")),!1;if(V+=1,(typeof j=="string"||n.isBuffer(j))&&(j||ce>=4)&&(j||P))V+=n.byteLength(j)+2;else{if(ce<4)return K.destroy(new Error("clientId must be supplied before 3.1.1")),!1;if(P*1===0)return K.destroy(new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof O!="number"||O<0||O>65535||O%1!==0)return K.destroy(new Error("Invalid keepalive")),!1;V+=2,V+=1;let te,F;if(ce===5){if(te=re(K,fe),!te)return!1;V+=te.length}if(C){if(typeof C!="object")return K.destroy(new Error("Invalid will")),!1;if(!C.topic||typeof C.topic!="string")return K.destroy(new Error("Invalid will topic")),!1;if(V+=n.byteLength(C.topic)+2,V+=2,C.payload)if(C.payload.length>=0)typeof C.payload=="string"?V+=n.byteLength(C.payload):V+=C.payload.length;else return K.destroy(new Error("Invalid will payload")),!1;if(F={},ce===5){if(F=re(K,C.properties),!F)return!1;V+=F.length}}let J=!1;if(z!=null)if(me(z))J=!0,V+=n.byteLength(z)+2;else return K.destroy(new Error("Invalid username")),!1;if(oe!=null){if(!J)return K.destroy(new Error("Username is required to use password")),!1;if(me(oe))V+=ge(oe)+2;else return K.destroy(new Error("Invalid password")),!1}K.write(r.CONNECT_HEADER),N(K,V),ue(K,he),be.bridgeMode&&(ce+=128),K.write(ce===131?r.VERSION131:ce===132?r.VERSION132:ce===4?r.VERSION4:ce===5?r.VERSION5:r.VERSION3);let se=0;return se|=z!=null?r.USERNAME_MASK:0,se|=oe!=null?r.PASSWORD_MASK:0,se|=C&&C.retain?r.WILL_RETAIN_MASK:0,se|=C&&C.qos?C.qos<<r.WILL_QOS_SHIFT:0,se|=C?r.WILL_FLAG_MASK:0,se|=P?r.CLEAN_SESSION_MASK:0,K.write(n.from([se])),m(K,O),ce===5&&te.write(),ue(K,j),C&&(ce===5&&F.write(),W(K,C.topic),ue(K,C.payload)),z!=null&&ue(K,z),oe!=null&&ue(K,oe),!0}function v(X,K,ie){let be=ie?ie.protocolVersion:4,he=X||{},ce=be===5?he.reasonCode:he.returnCode,C=he.properties,P=2;if(typeof ce!="number")return K.destroy(new Error("Invalid return code")),!1;let O=null;if(be===5){if(O=re(K,C),!O)return!1;P+=O.length}return K.write(r.CONNACK_HEADER),N(K,P),K.write(he.sessionPresent?r.SESSIONPRESENT_HEADER:i),K.write(n.from([ce])),O==null||O.write(),!0}function x(X,K,ie){l("publish: packet: %o",X);let be=ie?ie.protocolVersion:4,he=X||{},ce=he.qos||0,C=he.retain?r.RETAIN_MASK:0,P=he.topic,O=he.payload||s,j=he.messageId,z=he.properties,oe=0;if(typeof P=="string")oe+=n.byteLength(P)+2;else if(n.isBuffer(P))oe+=P.length+2;else return K.destroy(new Error("Invalid topic")),!1;if(n.isBuffer(O)?oe+=O.length:oe+=n.byteLength(O),ce&&typeof j!="number")return K.destroy(new Error("Invalid messageId")),!1;ce&&(oe+=2);let fe=null;if(be===5){if(fe=re(K,z),!fe)return!1;oe+=fe.length}return K.write(r.PUBLISH_HEADER[ce][he.dup?1:0][C?1:0]),N(K,oe),m(K,ge(P)),K.write(P),ce>0&&m(K,j),fe==null||fe.write(),l("publish: payload: %o",O),K.write(O)}function M(X,K,ie){let be=ie?ie.protocolVersion:4,he=X||{},ce=he.cmd||"puback",C=he.messageId,P=he.dup&&ce==="pubrel"?r.DUP_MASK:0,O=0,j=he.reasonCode,z=he.properties,oe=be===5?3:2;if(ce==="pubrel"&&(O=1),typeof C!="number")return K.destroy(new Error("Invalid messageId")),!1;let fe=null;if(be===5&&typeof z=="object"){if(fe=k(K,z,ie,oe),!fe)return!1;oe+=fe.length}return K.write(r.ACKS[ce][O][P][0]),oe===3&&(oe+=j!==0?1:-1),N(K,oe),m(K,C),be===5&&oe!==2&&K.write(n.from([j])),fe!==null?fe.write():oe===4&&K.write(n.from([0])),!0}function A(X,K,ie){l("subscribe: packet: ");let be=ie?ie.protocolVersion:4,he=X||{},ce=he.dup?r.DUP_MASK:0,C=he.messageId,P=he.subscriptions,O=he.properties,j=0;if(typeof C!="number")return K.destroy(new Error("Invalid messageId")),!1;j+=2;let z=null;if(be===5){if(z=re(K,O),!z)return!1;j+=z.length}if(typeof P=="object"&&P.length)for(let fe=0;fe<P.length;fe+=1){let V=P[fe].topic,te=P[fe].qos;if(typeof V!="string")return K.destroy(new Error("Invalid subscriptions - invalid topic")),!1;if(typeof te!="number")return K.destroy(new Error("Invalid subscriptions - invalid qos")),!1;if(be===5){if(typeof(P[fe].nl||!1)!="boolean")return K.destroy(new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(P[fe].rap||!1)!="boolean")return K.destroy(new Error("Invalid subscriptions - invalid Retain as Published")),!1;let F=P[fe].rh||0;if(typeof F!="number"||F>2)return K.destroy(new Error("Invalid subscriptions - invalid Retain Handling")),!1}j+=n.byteLength(V)+2+1}else return K.destroy(new Error("Invalid subscriptions")),!1;l("subscribe: writing to stream: %o",r.SUBSCRIBE_HEADER),K.write(r.SUBSCRIBE_HEADER[1][ce?1:0][0]),N(K,j),m(K,C),z!==null&&z.write();let oe=!0;for(let fe of P){let V=fe.topic,te=fe.qos,F=+fe.nl,J=+fe.rap,se=fe.rh,pe;W(K,V),pe=r.SUBSCRIBE_OPTIONS_QOS[te],be===5&&(pe|=F?r.SUBSCRIBE_OPTIONS_NL:0,pe|=J?r.SUBSCRIBE_OPTIONS_RAP:0,pe|=se?r.SUBSCRIBE_OPTIONS_RH[se]:0),oe=K.write(n.from([pe]))}return oe}function L(X,K,ie){let be=ie?ie.protocolVersion:4,he=X||{},ce=he.messageId,C=he.granted,P=he.properties,O=0;if(typeof ce!="number")return K.destroy(new Error("Invalid messageId")),!1;if(O+=2,typeof C=="object"&&C.length)for(let z=0;z<C.length;z+=1){if(typeof C[z]!="number")return K.destroy(new Error("Invalid qos vector")),!1;O+=1}else return K.destroy(new Error("Invalid qos vector")),!1;let j=null;if(be===5){if(j=k(K,P,ie,O),!j)return!1;O+=j.length}return K.write(r.SUBACK_HEADER),N(K,O),m(K,ce),j!==null&&j.write(),K.write(n.from(C))}function D(X,K,ie){let be=ie?ie.protocolVersion:4,he=X||{},ce=he.messageId,C=he.dup?r.DUP_MASK:0,P=he.unsubscriptions,O=he.properties,j=0;if(typeof ce!="number")return K.destroy(new Error("Invalid messageId")),!1;if(j+=2,typeof P=="object"&&P.length)for(let fe=0;fe<P.length;fe+=1){if(typeof P[fe]!="string")return K.destroy(new Error("Invalid unsubscriptions")),!1;j+=n.byteLength(P[fe])+2}else return K.destroy(new Error("Invalid unsubscriptions")),!1;let z=null;if(be===5){if(z=re(K,O),!z)return!1;j+=z.length}K.write(r.UNSUBSCRIBE_HEADER[1][C?1:0][0]),N(K,j),m(K,ce),z!==null&&z.write();let oe=!0;for(let fe=0;fe<P.length;fe++)oe=W(K,P[fe]);return oe}function B(X,K,ie){let be=ie?ie.protocolVersion:4,he=X||{},ce=he.messageId,C=he.dup?r.DUP_MASK:0,P=he.granted,O=he.properties,j=he.cmd,z=0,oe=2;if(typeof ce!="number")return K.destroy(new Error("Invalid messageId")),!1;if(be===5)if(typeof P=="object"&&P.length)for(let V=0;V<P.length;V+=1){if(typeof P[V]!="number")return K.destroy(new Error("Invalid qos vector")),!1;oe+=1}else return K.destroy(new Error("Invalid qos vector")),!1;let fe=null;if(be===5){if(fe=k(K,O,ie,oe),!fe)return!1;oe+=fe.length}return K.write(r.ACKS[j][z][C][0]),N(K,oe),m(K,ce),fe!==null&&fe.write(),be===5&&K.write(n.from(P)),!0}function q(X,K,ie){return K.write(r.EMPTY[X.cmd])}function Y(X,K,ie){let be=ie?ie.protocolVersion:4,he=X||{},ce=he.reasonCode,C=he.properties,P=be===5?1:0,O=null;if(be===5){if(O=k(K,C,ie,P),!O)return!1;P+=O.length}return K.write(n.from([r.codes.disconnect<<4])),N(K,P),be===5&&K.write(n.from([ce])),O!==null&&O.write(),!0}function R(X,K,ie){let be=ie?ie.protocolVersion:4,he=X||{},ce=he.reasonCode,C=he.properties,P=be===5?1:0;be!==5&&K.destroy(new Error("Invalid mqtt version for auth packet"));let O=k(K,C,ie,P);return O?(P+=O.length,K.write(n.from([r.codes.auth<<4])),N(K,P),K.write(n.from([ce])),O!==null&&O.write(),!0):!1}var I={};function N(X,K){if(K>r.VARBYTEINT_MAX)return X.destroy(new Error(`Invalid variable byte integer: ${K}`)),!1;let ie=I[K];return ie||(ie=d(K),K<16384&&(I[K]=ie)),l("writeVarByteInt: writing to stream: %o",ie),X.write(ie)}function W(X,K){let ie=n.byteLength(K);return m(X,ie),l("writeString: %s",K),X.write(K,"utf8")}function G(X,K,ie){W(X,K),W(X,ie)}function H(X,K){return l("writeNumberCached: number: %d",K),l("writeNumberCached: %o",u[K]),X.write(u[K])}function $(X,K){let ie=c(K);return l("writeNumberGenerated: %o",ie),X.write(ie)}function ne(X,K){let ie=g(K);return l("write4ByteNumber: %o",ie),X.write(ie)}function ue(X,K){typeof K=="string"?W(X,K):K?(m(X,K.length),X.write(K)):m(X,0)}function re(X,K){if(typeof K!="object"||K.length!=null)return{length:1,write(){de(X,{},0)}};let ie=0;function be(he,ce){let C=r.propertiesTypes[he],P=0;switch(C){case"byte":{if(typeof ce!="boolean")return X.destroy(new Error(`Invalid ${he}: ${ce}`)),!1;P+=2;break}case"int8":{if(typeof ce!="number"||ce<0||ce>255)return X.destroy(new Error(`Invalid ${he}: ${ce}`)),!1;P+=2;break}case"binary":{if(ce&&ce===null)return X.destroy(new Error(`Invalid ${he}: ${ce}`)),!1;P+=1+n.byteLength(ce)+2;break}case"int16":{if(typeof ce!="number"||ce<0||ce>65535)return X.destroy(new Error(`Invalid ${he}: ${ce}`)),!1;P+=3;break}case"int32":{if(typeof ce!="number"||ce<0||ce>4294967295)return X.destroy(new Error(`Invalid ${he}: ${ce}`)),!1;P+=5;break}case"var":{if(typeof ce!="number"||ce<0||ce>268435455)return X.destroy(new Error(`Invalid ${he}: ${ce}`)),!1;P+=1+n.byteLength(d(ce));break}case"string":{if(typeof ce!="string")return X.destroy(new Error(`Invalid ${he}: ${ce}`)),!1;P+=3+n.byteLength(ce.toString());break}case"pair":{if(typeof ce!="object")return X.destroy(new Error(`Invalid ${he}: ${ce}`)),!1;P+=Object.getOwnPropertyNames(ce).reduce((O,j)=>{let z=ce[j];return Array.isArray(z)?O+=z.reduce((oe,fe)=>(oe+=3+n.byteLength(j.toString())+2+n.byteLength(fe.toString()),oe),0):O+=3+n.byteLength(j.toString())+2+n.byteLength(ce[j].toString()),O},0);break}default:return X.destroy(new Error(`Invalid property ${he}: ${ce}`)),!1}return P}if(K)for(let he in K){let ce=0,C=0,P=K[he];if(Array.isArray(P))for(let O=0;O<P.length;O++){if(C=be(he,P[O]),!C)return!1;ce+=C}else{if(C=be(he,P),!C)return!1;ce=C}if(!ce)return!1;ie+=ce}return{length:n.byteLength(d(ie))+ie,write(){de(X,K,ie)}}}function k(X,K,ie,be){let he=["reasonString","userProperties"],ce=ie&&ie.properties&&ie.properties.maximumPacketSize?ie.properties.maximumPacketSize:0,C=re(X,K);if(ce)for(;be+C.length>ce;){let P=he.shift();if(P&&K[P])delete K[P],C=re(X,K);else return!1}return C}function Q(X,K,ie){switch(r.propertiesTypes[K]){case"byte":{X.write(n.from([r.properties[K]])),X.write(n.from([+ie]));break}case"int8":{X.write(n.from([r.properties[K]])),X.write(n.from([ie]));break}case"binary":{X.write(n.from([r.properties[K]])),ue(X,ie);break}case"int16":{X.write(n.from([r.properties[K]])),m(X,ie);break}case"int32":{X.write(n.from([r.properties[K]])),ne(X,ie);break}case"var":{X.write(n.from([r.properties[K]])),N(X,ie);break}case"string":{X.write(n.from([r.properties[K]])),W(X,ie);break}case"pair":{Object.getOwnPropertyNames(ie).forEach(be=>{let he=ie[be];Array.isArray(he)?he.forEach(ce=>{X.write(n.from([r.properties[K]])),G(X,be.toString(),ce.toString())}):(X.write(n.from([r.properties[K]])),G(X,be.toString(),he.toString()))});break}default:return X.destroy(new Error(`Invalid property ${K} value: ${ie}`)),!1}}function de(X,K,ie){N(X,ie);for(let be in K)if(Object.prototype.hasOwnProperty.call(K,be)&&K[be]!==null){let he=K[be];if(Array.isArray(he))for(let ce=0;ce<he.length;ce++)Q(X,be,he[ce]);else Q(X,be,he)}}function ge(X){return X?X instanceof n?X.length:n.byteLength(X):0}function me(X){return typeof X=="string"||X instanceof n}e.exports=_}),bk=Te((t,e)=>{we(),_e(),ve();var r=A_(),{EventEmitter:n}=(so(),Ke(is)),{Buffer:s}=(St(),Ke(Et));function i(a,l){let u=new o;return r(a,u,l),u.concat()}var o=class extends n{constructor(){super(),this._array=new Array(20),this._i=0}write(a){return this._array[this._i++]=a,!0}concat(){let a=0,l=new Array(this._array.length),u=this._array,c=0,f;for(f=0;f<u.length&&u[f]!==void 0;f++)typeof u[f]!="string"?l[f]=u[f].length:l[f]=s.byteLength(u[f]),a+=l[f];let d=s.allocUnsafe(a);for(f=0;f<u.length&&u[f]!==void 0;f++)typeof u[f]!="string"?(u[f].copy(d,c),c+=l[f]):(d.write(u[f],c),c+=l[f]);return d}destroy(a){a&&this.emit("error",a)}};e.exports=i}),yk=Te(t=>{we(),_e(),ve(),t.parser=pk().parser,t.generate=bk(),t.writeToStream=A_()}),C_=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0});var e=class{constructor(){this.nextId=Math.max(1,Math.floor(Math.random()*65535))}allocate(){let r=this.nextId++;return this.nextId===65536&&(this.nextId=1),r}getLastAllocated(){return this.nextId===1?65535:this.nextId-1}register(r){return!0}deallocate(r){}clear(){}};t.default=e}),wk=Te((t,e)=>{we(),_e(),ve(),e.exports=n;function r(i){return i instanceof tu?tu.from(i):new i.constructor(i.buffer.slice(),i.byteOffset,i.length)}function n(i){if(i=i||{},i.circles)return s(i);return i.proto?l:a;function o(u,c){for(var f=Object.keys(u),d=new Array(f.length),g=0;g<f.length;g++){var m=f[g],y=u[m];typeof y!="object"||y===null?d[m]=y:y instanceof Date?d[m]=new Date(y):ArrayBuffer.isView(y)?d[m]=r(y):d[m]=c(y)}return d}function a(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return o(u,a);if(u instanceof Map)return new Map(o(Array.from(u),a));if(u instanceof Set)return new Set(o(Array.from(u),a));var c={};for(var f in u)if(Object.hasOwnProperty.call(u,f)!==!1){var d=u[f];typeof d!="object"||d===null?c[f]=d:d instanceof Date?c[f]=new Date(d):d instanceof Map?c[f]=new Map(o(Array.from(d),a)):d instanceof Set?c[f]=new Set(o(Array.from(d),a)):ArrayBuffer.isView(d)?c[f]=r(d):c[f]=a(d)}return c}function l(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return o(u,l);if(u instanceof Map)return new Map(o(Array.from(u),l));if(u instanceof Set)return new Set(o(Array.from(u),l));var c={};for(var f in u){var d=u[f];typeof d!="object"||d===null?c[f]=d:d instanceof Date?c[f]=new Date(d):d instanceof Map?c[f]=new Map(o(Array.from(d),l)):d instanceof Set?c[f]=new Set(o(Array.from(d),l)):ArrayBuffer.isView(d)?c[f]=r(d):c[f]=l(d)}return c}}function s(i){var o=[],a=[];return i.proto?c:u;function l(f,d){for(var g=Object.keys(f),m=new Array(g.length),y=0;y<g.length;y++){var _=g[y],S=f[_];if(typeof S!="object"||S===null)m[_]=S;else if(S instanceof Date)m[_]=new Date(S);else if(ArrayBuffer.isView(S))m[_]=r(S);else{var E=o.indexOf(S);E!==-1?m[_]=a[E]:m[_]=d(S)}}return m}function u(f){if(typeof f!="object"||f===null)return f;if(f instanceof Date)return new Date(f);if(Array.isArray(f))return l(f,u);if(f instanceof Map)return new Map(l(Array.from(f),u));if(f instanceof Set)return new Set(l(Array.from(f),u));var d={};o.push(f),a.push(d);for(var g in f)if(Object.hasOwnProperty.call(f,g)!==!1){var m=f[g];if(typeof m!="object"||m===null)d[g]=m;else if(m instanceof Date)d[g]=new Date(m);else if(m instanceof Map)d[g]=new Map(l(Array.from(m),u));else if(m instanceof Set)d[g]=new Set(l(Array.from(m),u));else if(ArrayBuffer.isView(m))d[g]=r(m);else{var y=o.indexOf(m);y!==-1?d[g]=a[y]:d[g]=u(m)}}return o.pop(),a.pop(),d}function c(f){if(typeof f!="object"||f===null)return f;if(f instanceof Date)return new Date(f);if(Array.isArray(f))return l(f,c);if(f instanceof Map)return new Map(l(Array.from(f),c));if(f instanceof Set)return new Set(l(Array.from(f),c));var d={};o.push(f),a.push(d);for(var g in f){var m=f[g];if(typeof m!="object"||m===null)d[g]=m;else if(m instanceof Date)d[g]=new Date(m);else if(m instanceof Map)d[g]=new Map(l(Array.from(m),c));else if(m instanceof Set)d[g]=new Set(l(Array.from(m),c));else if(ArrayBuffer.isView(m))d[g]=r(m);else{var y=o.indexOf(m);y!==-1?d[g]=a[y]:d[g]=c(m)}}return o.pop(),a.pop(),d}}}),vk=Te((t,e)=>{we(),_e(),ve(),e.exports=wk()()}),_k=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0}),t.validateTopics=t.validateTopic=void 0;function e(n){let s=n.split("/");for(let i=0;i<s.length;i++)if(s[i]!=="+"){if(s[i]==="#")return i===s.length-1;if(s[i].indexOf("+")!==-1||s[i].indexOf("#")!==-1)return!1}return!0}t.validateTopic=e;function r(n){if(n.length===0)return"empty_topic_list";for(let s=0;s<n.length;s++)if(!e(n[s]))return n[s];return null}t.validateTopics=r}),I_=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0});var e=ss(),r={objectMode:!0},n={clean:!0},s=class{constructor(i){this.options=i||{},this.options=Object.assign(Object.assign({},n),i),this._inflights=new Map}put(i,o){return this._inflights.set(i.messageId,i),o&&o(),this}createStream(){let i=new e.Readable(r),o=[],a=!1,l=0;return this._inflights.forEach((u,c)=>{o.push(u)}),i._read=()=>{!a&&l<o.length?i.push(o[l++]):i.push(null)},i.destroy=u=>{if(!a)return a=!0,setTimeout(()=>{i.emit("close")},0),i},i}del(i,o){let a=this._inflights.get(i.messageId);return a?(this._inflights.delete(i.messageId),o(null,a)):o&&o(new Error("missing packet")),this}get(i,o){let a=this._inflights.get(i.messageId);return a?o(null,a):o&&o(new Error("missing packet")),this}close(i){this.options.clean&&(this._inflights=null),i&&i()}};t.default=s}),Ek=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0});var e=[0,16,128,131,135,144,145,151,153],r=(n,s,i)=>{n.log("handlePublish: packet %o",s),i=typeof i<"u"?i:n.noop;let o=s.topic.toString(),a=s.payload,{qos:l}=s,{messageId:u}=s,{options:c}=n;if(n.options.protocolVersion===5){let f;if(s.properties&&(f=s.properties.topicAlias),typeof f<"u")if(o.length===0)if(f>0&&f<=65535){let d=n.topicAliasRecv.getTopicByAlias(f);if(d)o=d,n.log("handlePublish :: topic complemented by alias. topic: %s - alias: %d",o,f);else{n.log("handlePublish :: unregistered topic alias. alias: %d",f),n.emit("error",new Error("Received unregistered Topic Alias"));return}}else{n.log("handlePublish :: topic alias out of range. alias: %d",f),n.emit("error",new Error("Received Topic Alias is out of range"));return}else if(n.topicAliasRecv.put(o,f))n.log("handlePublish :: registered topic: %s - alias: %d",o,f);else{n.log("handlePublish :: topic alias out of range. alias: %d",f),n.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(n.log("handlePublish: qos %d",l),l){case 2:{c.customHandleAcks(o,a,s,(f,d)=>{if(typeof f=="number"&&(d=f,f=null),f)return n.emit("error",f);if(e.indexOf(d)===-1)return n.emit("error",new Error("Wrong reason code for pubrec"));d?n._sendPacket({cmd:"pubrec",messageId:u,reasonCode:d},i):n.incomingStore.put(s,()=>{n._sendPacket({cmd:"pubrec",messageId:u},i)})});break}case 1:{c.customHandleAcks(o,a,s,(f,d)=>{if(typeof f=="number"&&(d=f,f=null),f)return n.emit("error",f);if(e.indexOf(d)===-1)return n.emit("error",new Error("Wrong reason code for puback"));d||n.emit("message",o,a,s),n.handleMessage(s,g=>{if(g)return i&&i(g);n._sendPacket({cmd:"puback",messageId:u,reasonCode:d},i)})});break}case 0:n.emit("message",o,a,s),n.handleMessage(s,i);break;default:n.log("handlePublish: unknown QoS. Doing nothing.");break}};t.default=r}),Sk=Te((t,e)=>{e.exports={version:"5.10.1"}}),oo=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0}),t.MQTTJS_VERSION=t.nextTick=t.applyMixin=t.ErrorWithReasonCode=void 0;var e=class M_ extends Error{constructor(s,i){super(s),this.code=i,Object.setPrototypeOf(this,M_.prototype),Object.getPrototypeOf(this).name="ErrorWithReasonCode"}};t.ErrorWithReasonCode=e;function r(n,s,i=!1){var o;let a=[s];for(;;){let l=a[0],u=Object.getPrototypeOf(l);if(u!=null&&u.prototype)a.unshift(u);else break}for(let l of a)for(let u of Object.getOwnPropertyNames(l.prototype))(i||u!=="constructor")&&Object.defineProperty(n.prototype,u,(o=Object.getOwnPropertyDescriptor(l.prototype,u))!==null&&o!==void 0?o:Object.create(null))}t.applyMixin=r,t.nextTick=typeof(ze==null?void 0:ze.nextTick)=="function"?ze.nextTick:n=>{setTimeout(n,0)},t.MQTTJS_VERSION=Sk().version}),$u=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0}),t.ReasonCodes=void 0;var e=oo();t.ReasonCodes={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};var r=(n,s)=>{let{messageId:i}=s,o=s.cmd,a=null,l=n.outgoing[i]?n.outgoing[i].cb:null,u=null;if(!l){n.log("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(n.log("_handleAck :: packet type",o),o){case"pubcomp":case"puback":{let c=s.reasonCode;c&&c>0&&c!==16?(u=new e.ErrorWithReasonCode(`Publish error: ${t.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{l(u,s)})):n._removeOutgoingAndStoreMessage(i,l);break}case"pubrec":{a={cmd:"pubrel",qos:2,messageId:i};let c=s.reasonCode;c&&c>0&&c!==16?(u=new e.ErrorWithReasonCode(`Publish error: ${t.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{l(u,s)})):n._sendPacket(a);break}case"suback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i);let c=s.granted;for(let f=0;f<c.length;f++){let d=c[f];if(d&128){u=new Error(`Subscribe error: ${t.ReasonCodes[d]}`),u.code=d;let g=n.messageIdToTopic[i];g&&g.forEach(m=>{delete n._resubscribeTopics[m]})}}delete n.messageIdToTopic[i],n._invokeStoreProcessingQueue(),l(u,s);break}case"unsuback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i),n._invokeStoreProcessingQueue(),l(null,s);break}default:n.emit("error",new Error("unrecognized packet type"))}n.disconnecting&&Object.keys(n.outgoing).length===0&&n.emit("outgoingEmpty")};t.default=r}),Tk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0});var e=oo(),r=$u(),n=(s,i)=>{let{options:o}=s,a=o.protocolVersion,l=a===5?i.reasonCode:i.returnCode;if(a!==5){let u=new e.ErrorWithReasonCode(`Protocol error: Auth packets are only supported in MQTT 5. Your version:${a}`,l);s.emit("error",u);return}s.handleAuth(i,(u,c)=>{if(u){s.emit("error",u);return}if(l===24)s.reconnecting=!1,s._sendPacket(c);else{let f=new e.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[l]}`,l);s.emit("error",f)}})};t.default=n}),xk=Te(t=>{var g,m,y,_,S,E,v,x,M,A,L,D,B,q,Y,R,I,N,W,G,H,$,ne,ue,re,k,wh,de,ge,me,X,O_,ie,be,he,Bn,$n,vh,El,Sl,Ze,_h,Bo,V;we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0}),t.LRUCache=void 0;var e=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,r=new Set,n=typeof ze=="object"&&ze?ze:{},s=(te,F,J,se)=>{typeof n.emitWarning=="function"?n.emitWarning(te,F,J,se):console.error(`[${J}] ${F}: ${te}`)},i=globalThis.AbortController,o=globalThis.AbortSignal;if(typeof i>"u"){o=class{constructor(){nt(this,"onabort");nt(this,"_onabort",[]);nt(this,"reason");nt(this,"aborted",!1)}addEventListener(J,se){this._onabort.push(se)}},i=class{constructor(){nt(this,"signal",new o);F()}abort(J){var se,pe;if(!this.signal.aborted){this.signal.reason=J,this.signal.aborted=!0;for(let w of this.signal._onabort)w(J);(pe=(se=this.signal).onabort)==null||pe.call(se,J)}}};let te=((g=n.env)==null?void 0:g.LRU_CACHE_IGNORE_AC_WARNING)!=="1",F=()=>{te&&(te=!1,s("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",F))}}var a=te=>!r.has(te),l=te=>te&&te===Math.floor(te)&&te>0&&isFinite(te),u=te=>l(te)?te<=Math.pow(2,8)?Uint8Array:te<=Math.pow(2,16)?Uint16Array:te<=Math.pow(2,32)?Uint32Array:te<=Number.MAX_SAFE_INTEGER?c:null:null,c=class extends Array{constructor(te){super(te),this.fill(0)}},f=(m=class{constructor(F,J){nt(this,"heap");nt(this,"length");if(!le(m,y))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new J(F),this.length=0}static create(F){let J=u(F);if(!J)return[];Ne(m,y,!0);let se=new m(F,J);return Ne(m,y,!1),se}push(F){this.heap[this.length++]=F}pop(){return this.heap[--this.length]}},y=new WeakMap,je(m,y,!1),m),d=(V=class{constructor(F){je(this,k);je(this,_);je(this,S);je(this,E);je(this,v);je(this,x);nt(this,"ttl");nt(this,"ttlResolution");nt(this,"ttlAutopurge");nt(this,"updateAgeOnGet");nt(this,"updateAgeOnHas");nt(this,"allowStale");nt(this,"noDisposeOnSet");nt(this,"noUpdateTTL");nt(this,"maxEntrySize");nt(this,"sizeCalculation");nt(this,"noDeleteOnFetchRejection");nt(this,"noDeleteOnStaleGet");nt(this,"allowStaleOnFetchAbort");nt(this,"allowStaleOnFetchRejection");nt(this,"ignoreFetchAbort");je(this,M);je(this,A);je(this,L);je(this,D);je(this,B);je(this,q);je(this,Y);je(this,R);je(this,I);je(this,N);je(this,W);je(this,G);je(this,H);je(this,$);je(this,ne);je(this,ue);je(this,re);je(this,de,()=>{});je(this,ge,()=>{});je(this,me,()=>{});je(this,X,()=>!1);je(this,ie,F=>{});je(this,be,(F,J,se)=>{});je(this,he,(F,J,se,pe)=>{if(se||pe)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});let{max:J=0,ttl:se,ttlResolution:pe=1,ttlAutopurge:w,updateAgeOnGet:p,updateAgeOnHas:h,allowStale:b,dispose:T,disposeAfter:U,noDisposeOnSet:ee,noUpdateTTL:ye,maxSize:Ae=0,maxEntrySize:Re=0,sizeCalculation:xe,fetchMethod:Oe,noDeleteOnFetchRejection:Me,noDeleteOnStaleGet:Ve,allowStaleOnFetchRejection:ct,allowStaleOnFetchAbort:Je,ignoreFetchAbort:lt}=F;if(J!==0&&!l(J))throw new TypeError("max option must be a nonnegative integer");let bt=J?u(J):Array;if(!bt)throw new Error("invalid max value: "+J);if(Ne(this,_,J),Ne(this,S,Ae),this.maxEntrySize=Re||le(this,S),this.sizeCalculation=xe,this.sizeCalculation){if(!le(this,S)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(Oe!==void 0&&typeof Oe!="function")throw new TypeError("fetchMethod must be a function if specified");if(Ne(this,x,Oe),Ne(this,ue,!!Oe),Ne(this,L,new Map),Ne(this,D,new Array(J).fill(void 0)),Ne(this,B,new Array(J).fill(void 0)),Ne(this,q,new bt(J)),Ne(this,Y,new bt(J)),Ne(this,R,0),Ne(this,I,0),Ne(this,N,f.create(J)),Ne(this,M,0),Ne(this,A,0),typeof T=="function"&&Ne(this,E,T),typeof U=="function"?(Ne(this,v,U),Ne(this,W,[])):(Ne(this,v,void 0),Ne(this,W,void 0)),Ne(this,ne,!!le(this,E)),Ne(this,re,!!le(this,v)),this.noDisposeOnSet=!!ee,this.noUpdateTTL=!!ye,this.noDeleteOnFetchRejection=!!Me,this.allowStaleOnFetchRejection=!!ct,this.allowStaleOnFetchAbort=!!Je,this.ignoreFetchAbort=!!lt,this.maxEntrySize!==0){if(le(this,S)!==0&&!l(le(this,S)))throw new TypeError("maxSize must be a positive integer if specified");if(!l(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");ke(this,k,O_).call(this)}if(this.allowStale=!!b,this.noDeleteOnStaleGet=!!Ve,this.updateAgeOnGet=!!p,this.updateAgeOnHas=!!h,this.ttlResolution=l(pe)||pe===0?pe:1,this.ttlAutopurge=!!w,this.ttl=se||0,this.ttl){if(!l(this.ttl))throw new TypeError("ttl must be a positive integer if specified");ke(this,k,wh).call(this)}if(le(this,_)===0&&this.ttl===0&&le(this,S)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!le(this,_)&&!le(this,S)){let ft="LRU_CACHE_UNBOUNDED";a(ft)&&(r.add(ft),s("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",ft,V))}}static unsafeExposeInternals(F){return{starts:le(F,H),ttls:le(F,$),sizes:le(F,G),keyMap:le(F,L),keyList:le(F,D),valList:le(F,B),next:le(F,q),prev:le(F,Y),get head(){return le(F,R)},get tail(){return le(F,I)},free:le(F,N),isBackgroundFetch:J=>{var se;return ke(se=F,k,Ze).call(se,J)},backgroundFetch:(J,se,pe,w)=>{var p;return ke(p=F,k,Sl).call(p,J,se,pe,w)},moveToTail:J=>{var se;return ke(se=F,k,Bo).call(se,J)},indexes:J=>{var se;return ke(se=F,k,Bn).call(se,J)},rindexes:J=>{var se;return ke(se=F,k,$n).call(se,J)},isStale:J=>{var se;return le(se=F,X).call(se,J)}}}get max(){return le(this,_)}get maxSize(){return le(this,S)}get calculatedSize(){return le(this,A)}get size(){return le(this,M)}get fetchMethod(){return le(this,x)}get dispose(){return le(this,E)}get disposeAfter(){return le(this,v)}getRemainingTTL(F){return le(this,L).has(F)?1/0:0}*entries(){for(let F of ke(this,k,Bn).call(this))le(this,B)[F]!==void 0&&le(this,D)[F]!==void 0&&!ke(this,k,Ze).call(this,le(this,B)[F])&&(yield[le(this,D)[F],le(this,B)[F]])}*rentries(){for(let F of ke(this,k,$n).call(this))le(this,B)[F]!==void 0&&le(this,D)[F]!==void 0&&!ke(this,k,Ze).call(this,le(this,B)[F])&&(yield[le(this,D)[F],le(this,B)[F]])}*keys(){for(let F of ke(this,k,Bn).call(this)){let J=le(this,D)[F];J!==void 0&&!ke(this,k,Ze).call(this,le(this,B)[F])&&(yield J)}}*rkeys(){for(let F of ke(this,k,$n).call(this)){let J=le(this,D)[F];J!==void 0&&!ke(this,k,Ze).call(this,le(this,B)[F])&&(yield J)}}*values(){for(let F of ke(this,k,Bn).call(this))le(this,B)[F]!==void 0&&!ke(this,k,Ze).call(this,le(this,B)[F])&&(yield le(this,B)[F])}*rvalues(){for(let F of ke(this,k,$n).call(this))le(this,B)[F]!==void 0&&!ke(this,k,Ze).call(this,le(this,B)[F])&&(yield le(this,B)[F])}[Symbol.iterator](){return this.entries()}find(F,J={}){for(let se of ke(this,k,Bn).call(this)){let pe=le(this,B)[se],w=ke(this,k,Ze).call(this,pe)?pe.__staleWhileFetching:pe;if(w!==void 0&&F(w,le(this,D)[se],this))return this.get(le(this,D)[se],J)}}forEach(F,J=this){for(let se of ke(this,k,Bn).call(this)){let pe=le(this,B)[se],w=ke(this,k,Ze).call(this,pe)?pe.__staleWhileFetching:pe;w!==void 0&&F.call(J,w,le(this,D)[se],this)}}rforEach(F,J=this){for(let se of ke(this,k,$n).call(this)){let pe=le(this,B)[se],w=ke(this,k,Ze).call(this,pe)?pe.__staleWhileFetching:pe;w!==void 0&&F.call(J,w,le(this,D)[se],this)}}purgeStale(){let F=!1;for(let J of ke(this,k,$n).call(this,{allowStale:!0}))le(this,X).call(this,J)&&(this.delete(le(this,D)[J]),F=!0);return F}dump(){let F=[];for(let J of ke(this,k,Bn).call(this,{allowStale:!0})){let se=le(this,D)[J],pe=le(this,B)[J],w=ke(this,k,Ze).call(this,pe)?pe.__staleWhileFetching:pe;if(w===void 0||se===void 0)continue;let p={value:w};if(le(this,$)&&le(this,H)){p.ttl=le(this,$)[J];let h=e.now()-le(this,H)[J];p.start=Math.floor(Date.now()-h)}le(this,G)&&(p.size=le(this,G)[J]),F.unshift([se,p])}return F}load(F){this.clear();for(let[J,se]of F){if(se.start){let pe=Date.now()-se.start;se.start=e.now()-pe}this.set(J,se.value,se)}}set(F,J,se={}){var ye,Ae,Re,xe,Oe;if(J===void 0)return this.delete(F),this;let{ttl:pe=this.ttl,start:w,noDisposeOnSet:p=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:b}=se,{noUpdateTTL:T=this.noUpdateTTL}=se,U=le(this,he).call(this,F,J,se.size||0,h);if(this.maxEntrySize&&U>this.maxEntrySize)return b&&(b.set="miss",b.maxEntrySizeExceeded=!0),this.delete(F),this;let ee=le(this,M)===0?void 0:le(this,L).get(F);if(ee===void 0)ee=le(this,M)===0?le(this,I):le(this,N).length!==0?le(this,N).pop():le(this,M)===le(this,_)?ke(this,k,El).call(this,!1):le(this,M),le(this,D)[ee]=F,le(this,B)[ee]=J,le(this,L).set(F,ee),le(this,q)[le(this,I)]=ee,le(this,Y)[ee]=le(this,I),Ne(this,I,ee),Ia(this,M)._++,le(this,be).call(this,ee,U,b),b&&(b.set="add"),T=!1;else{ke(this,k,Bo).call(this,ee);let Me=le(this,B)[ee];if(J!==Me){if(le(this,ue)&&ke(this,k,Ze).call(this,Me)){Me.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:Ve}=Me;Ve!==void 0&&!p&&(le(this,ne)&&((ye=le(this,E))==null||ye.call(this,Ve,F,"set")),le(this,re)&&((Ae=le(this,W))==null||Ae.push([Ve,F,"set"])))}else p||(le(this,ne)&&((Re=le(this,E))==null||Re.call(this,Me,F,"set")),le(this,re)&&((xe=le(this,W))==null||xe.push([Me,F,"set"])));if(le(this,ie).call(this,ee),le(this,be).call(this,ee,U,b),le(this,B)[ee]=J,b){b.set="replace";let Ve=Me&&ke(this,k,Ze).call(this,Me)?Me.__staleWhileFetching:Me;Ve!==void 0&&(b.oldValue=Ve)}}else b&&(b.set="update")}if(pe!==0&&!le(this,$)&&ke(this,k,wh).call(this),le(this,$)&&(T||le(this,me).call(this,ee,pe,w),b&&le(this,ge).call(this,b,ee)),!p&&le(this,re)&&le(this,W)){let Me=le(this,W),Ve;for(;Ve=Me==null?void 0:Me.shift();)(Oe=le(this,v))==null||Oe.call(this,...Ve)}return this}pop(){var F;try{for(;le(this,M);){let J=le(this,B)[le(this,R)];if(ke(this,k,El).call(this,!0),ke(this,k,Ze).call(this,J)){if(J.__staleWhileFetching)return J.__staleWhileFetching}else if(J!==void 0)return J}}finally{if(le(this,re)&&le(this,W)){let J=le(this,W),se;for(;se=J==null?void 0:J.shift();)(F=le(this,v))==null||F.call(this,...se)}}}has(F,J={}){let{updateAgeOnHas:se=this.updateAgeOnHas,status:pe}=J,w=le(this,L).get(F);if(w!==void 0){let p=le(this,B)[w];if(ke(this,k,Ze).call(this,p)&&p.__staleWhileFetching===void 0)return!1;if(le(this,X).call(this,w))pe&&(pe.has="stale",le(this,ge).call(this,pe,w));else return se&&le(this,de).call(this,w),pe&&(pe.has="hit",le(this,ge).call(this,pe,w)),!0}else pe&&(pe.has="miss");return!1}peek(F,J={}){let{allowStale:se=this.allowStale}=J,pe=le(this,L).get(F);if(pe!==void 0&&(se||!le(this,X).call(this,pe))){let w=le(this,B)[pe];return ke(this,k,Ze).call(this,w)?w.__staleWhileFetching:w}}async fetch(F,J={}){let{allowStale:se=this.allowStale,updateAgeOnGet:pe=this.updateAgeOnGet,noDeleteOnStaleGet:w=this.noDeleteOnStaleGet,ttl:p=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:b=0,sizeCalculation:T=this.sizeCalculation,noUpdateTTL:U=this.noUpdateTTL,noDeleteOnFetchRejection:ee=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:ye=this.allowStaleOnFetchRejection,ignoreFetchAbort:Ae=this.ignoreFetchAbort,allowStaleOnFetchAbort:Re=this.allowStaleOnFetchAbort,context:xe,forceRefresh:Oe=!1,status:Me,signal:Ve}=J;if(!le(this,ue))return Me&&(Me.fetch="get"),this.get(F,{allowStale:se,updateAgeOnGet:pe,noDeleteOnStaleGet:w,status:Me});let ct={allowStale:se,updateAgeOnGet:pe,noDeleteOnStaleGet:w,ttl:p,noDisposeOnSet:h,size:b,sizeCalculation:T,noUpdateTTL:U,noDeleteOnFetchRejection:ee,allowStaleOnFetchRejection:ye,allowStaleOnFetchAbort:Re,ignoreFetchAbort:Ae,status:Me,signal:Ve},Je=le(this,L).get(F);if(Je===void 0){Me&&(Me.fetch="miss");let lt=ke(this,k,Sl).call(this,F,Je,ct,xe);return lt.__returned=lt}else{let lt=le(this,B)[Je];if(ke(this,k,Ze).call(this,lt)){let go=se&&lt.__staleWhileFetching!==void 0;return Me&&(Me.fetch="inflight",go&&(Me.returnedStale=!0)),go?lt.__staleWhileFetching:lt.__returned=lt}let bt=le(this,X).call(this,Je);if(!Oe&&!bt)return Me&&(Me.fetch="hit"),ke(this,k,Bo).call(this,Je),pe&&le(this,de).call(this,Je),Me&&le(this,ge).call(this,Me,Je),lt;let ft=ke(this,k,Sl).call(this,F,Je,ct,xe),ps=ft.__staleWhileFetching!==void 0&&se;return Me&&(Me.fetch=bt?"stale":"refresh",ps&&bt&&(Me.returnedStale=!0)),ps?ft.__staleWhileFetching:ft.__returned=ft}}get(F,J={}){let{allowStale:se=this.allowStale,updateAgeOnGet:pe=this.updateAgeOnGet,noDeleteOnStaleGet:w=this.noDeleteOnStaleGet,status:p}=J,h=le(this,L).get(F);if(h!==void 0){let b=le(this,B)[h],T=ke(this,k,Ze).call(this,b);return p&&le(this,ge).call(this,p,h),le(this,X).call(this,h)?(p&&(p.get="stale"),T?(p&&se&&b.__staleWhileFetching!==void 0&&(p.returnedStale=!0),se?b.__staleWhileFetching:void 0):(w||this.delete(F),p&&se&&(p.returnedStale=!0),se?b:void 0)):(p&&(p.get="hit"),T?b.__staleWhileFetching:(ke(this,k,Bo).call(this,h),pe&&le(this,de).call(this,h),b))}else p&&(p.get="miss")}delete(F){var se,pe,w,p;let J=!1;if(le(this,M)!==0){let h=le(this,L).get(F);if(h!==void 0)if(J=!0,le(this,M)===1)this.clear();else{le(this,ie).call(this,h);let b=le(this,B)[h];ke(this,k,Ze).call(this,b)?b.__abortController.abort(new Error("deleted")):(le(this,ne)||le(this,re))&&(le(this,ne)&&((se=le(this,E))==null||se.call(this,b,F,"delete")),le(this,re)&&((pe=le(this,W))==null||pe.push([b,F,"delete"]))),le(this,L).delete(F),le(this,D)[h]=void 0,le(this,B)[h]=void 0,h===le(this,I)?Ne(this,I,le(this,Y)[h]):h===le(this,R)?Ne(this,R,le(this,q)[h]):(le(this,q)[le(this,Y)[h]]=le(this,q)[h],le(this,Y)[le(this,q)[h]]=le(this,Y)[h]),Ia(this,M)._--,le(this,N).push(h)}}if(le(this,re)&&((w=le(this,W))!=null&&w.length)){let h=le(this,W),b;for(;b=h==null?void 0:h.shift();)(p=le(this,v))==null||p.call(this,...b)}return J}clear(){var F,J,se;for(let pe of ke(this,k,$n).call(this,{allowStale:!0})){let w=le(this,B)[pe];if(ke(this,k,Ze).call(this,w))w.__abortController.abort(new Error("deleted"));else{let p=le(this,D)[pe];le(this,ne)&&((F=le(this,E))==null||F.call(this,w,p,"delete")),le(this,re)&&((J=le(this,W))==null||J.push([w,p,"delete"]))}}if(le(this,L).clear(),le(this,B).fill(void 0),le(this,D).fill(void 0),le(this,$)&&le(this,H)&&(le(this,$).fill(0),le(this,H).fill(0)),le(this,G)&&le(this,G).fill(0),Ne(this,R,0),Ne(this,I,0),le(this,N).length=0,Ne(this,A,0),Ne(this,M,0),le(this,re)&&le(this,W)){let pe=le(this,W),w;for(;w=pe==null?void 0:pe.shift();)(se=le(this,v))==null||se.call(this,...w)}}},_=new WeakMap,S=new WeakMap,E=new WeakMap,v=new WeakMap,x=new WeakMap,M=new WeakMap,A=new WeakMap,L=new WeakMap,D=new WeakMap,B=new WeakMap,q=new WeakMap,Y=new WeakMap,R=new WeakMap,I=new WeakMap,N=new WeakMap,W=new WeakMap,G=new WeakMap,H=new WeakMap,$=new WeakMap,ne=new WeakMap,ue=new WeakMap,re=new WeakMap,k=new WeakSet,wh=function(){let F=new c(le(this,_)),J=new c(le(this,_));Ne(this,$,F),Ne(this,H,J),Ne(this,me,(w,p,h=e.now())=>{if(J[w]=p!==0?h:0,F[w]=p,p!==0&&this.ttlAutopurge){let b=setTimeout(()=>{le(this,X).call(this,w)&&this.delete(le(this,D)[w])},p+1);b.unref&&b.unref()}}),Ne(this,de,w=>{J[w]=F[w]!==0?e.now():0}),Ne(this,ge,(w,p)=>{if(F[p]){let h=F[p],b=J[p];w.ttl=h,w.start=b,w.now=se||pe();let T=w.now-b;w.remainingTTL=h-T}});let se=0,pe=()=>{let w=e.now();if(this.ttlResolution>0){se=w;let p=setTimeout(()=>se=0,this.ttlResolution);p.unref&&p.unref()}return w};this.getRemainingTTL=w=>{let p=le(this,L).get(w);if(p===void 0)return 0;let h=F[p],b=J[p];if(h===0||b===0)return 1/0;let T=(se||pe())-b;return h-T},Ne(this,X,w=>F[w]!==0&&J[w]!==0&&(se||pe())-J[w]>F[w])},de=new WeakMap,ge=new WeakMap,me=new WeakMap,X=new WeakMap,O_=function(){let F=new c(le(this,_));Ne(this,A,0),Ne(this,G,F),Ne(this,ie,J=>{Ne(this,A,le(this,A)-F[J]),F[J]=0}),Ne(this,he,(J,se,pe,w)=>{if(ke(this,k,Ze).call(this,se))return 0;if(!l(pe))if(w){if(typeof w!="function")throw new TypeError("sizeCalculation must be a function");if(pe=w(se,J),!l(pe))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return pe}),Ne(this,be,(J,se,pe)=>{if(F[J]=se,le(this,S)){let w=le(this,S)-F[J];for(;le(this,A)>w;)ke(this,k,El).call(this,!0)}Ne(this,A,le(this,A)+F[J]),pe&&(pe.entrySize=se,pe.totalCalculatedSize=le(this,A))})},ie=new WeakMap,be=new WeakMap,he=new WeakMap,Bn=function*({allowStale:F=this.allowStale}={}){if(le(this,M))for(let J=le(this,I);!(!ke(this,k,vh).call(this,J)||((F||!le(this,X).call(this,J))&&(yield J),J===le(this,R)));)J=le(this,Y)[J]},$n=function*({allowStale:F=this.allowStale}={}){if(le(this,M))for(let J=le(this,R);!(!ke(this,k,vh).call(this,J)||((F||!le(this,X).call(this,J))&&(yield J),J===le(this,I)));)J=le(this,q)[J]},vh=function(F){return F!==void 0&&le(this,L).get(le(this,D)[F])===F},El=function(F){var w,p;let J=le(this,R),se=le(this,D)[J],pe=le(this,B)[J];return le(this,ue)&&ke(this,k,Ze).call(this,pe)?pe.__abortController.abort(new Error("evicted")):(le(this,ne)||le(this,re))&&(le(this,ne)&&((w=le(this,E))==null||w.call(this,pe,se,"evict")),le(this,re)&&((p=le(this,W))==null||p.push([pe,se,"evict"]))),le(this,ie).call(this,J),F&&(le(this,D)[J]=void 0,le(this,B)[J]=void 0,le(this,N).push(J)),le(this,M)===1?(Ne(this,R,Ne(this,I,0)),le(this,N).length=0):Ne(this,R,le(this,q)[J]),le(this,L).delete(se),Ia(this,M)._--,J},Sl=function(F,J,se,pe){let w=J===void 0?void 0:le(this,B)[J];if(ke(this,k,Ze).call(this,w))return w;let p=new i,{signal:h}=se;h==null||h.addEventListener("abort",()=>p.abort(h.reason),{signal:p.signal});let b={signal:p.signal,options:se,context:pe},T=(xe,Oe=!1)=>{let{aborted:Me}=p.signal,Ve=se.ignoreFetchAbort&&xe!==void 0;if(se.status&&(Me&&!Oe?(se.status.fetchAborted=!0,se.status.fetchError=p.signal.reason,Ve&&(se.status.fetchAbortIgnored=!0)):se.status.fetchResolved=!0),Me&&!Ve&&!Oe)return ee(p.signal.reason);let ct=Ae;return le(this,B)[J]===Ae&&(xe===void 0?ct.__staleWhileFetching?le(this,B)[J]=ct.__staleWhileFetching:this.delete(F):(se.status&&(se.status.fetchUpdated=!0),this.set(F,xe,b.options))),xe},U=xe=>(se.status&&(se.status.fetchRejected=!0,se.status.fetchError=xe),ee(xe)),ee=xe=>{let{aborted:Oe}=p.signal,Me=Oe&&se.allowStaleOnFetchAbort,Ve=Me||se.allowStaleOnFetchRejection,ct=Ve||se.noDeleteOnFetchRejection,Je=Ae;if(le(this,B)[J]===Ae&&(!ct||Je.__staleWhileFetching===void 0?this.delete(F):Me||(le(this,B)[J]=Je.__staleWhileFetching)),Ve)return se.status&&Je.__staleWhileFetching!==void 0&&(se.status.returnedStale=!0),Je.__staleWhileFetching;if(Je.__returned===Je)throw xe},ye=(xe,Oe)=>{var Ve;let Me=(Ve=le(this,x))==null?void 0:Ve.call(this,F,w,b);Me&&Me instanceof Promise&&Me.then(ct=>xe(ct===void 0?void 0:ct),Oe),p.signal.addEventListener("abort",()=>{(!se.ignoreFetchAbort||se.allowStaleOnFetchAbort)&&(xe(void 0),se.allowStaleOnFetchAbort&&(xe=ct=>T(ct,!0)))})};se.status&&(se.status.fetchDispatched=!0);let Ae=new Promise(ye).then(T,U),Re=Object.assign(Ae,{__abortController:p,__staleWhileFetching:w,__returned:void 0});return J===void 0?(this.set(F,Re,{...b.options,status:void 0}),J=le(this,L).get(F)):le(this,B)[J]=Re,Re},Ze=function(F){if(!le(this,ue))return!1;let J=F;return!!J&&J instanceof Promise&&J.hasOwnProperty("__staleWhileFetching")&&J.__abortController instanceof i},_h=function(F,J){le(this,Y)[J]=F,le(this,q)[F]=J},Bo=function(F){F!==le(this,I)&&(F===le(this,R)?Ne(this,R,le(this,q)[F]):ke(this,k,_h).call(this,le(this,Y)[F],le(this,q)[F]),ke(this,k,_h).call(this,le(this,I),F),Ne(this,I,F))},V);t.LRUCache=d}),Mn=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.ContainerIterator=t.Container=t.Base=void 0;var e=class{constructor(s=0){this.iteratorType=s}equals(s){return this.o===s.o}};t.ContainerIterator=e;var r=class{constructor(){this.i=0}get length(){return this.i}size(){return this.i}empty(){return this.i===0}};t.Base=r;var n=class extends r{};t.Container=n}),Ak=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=Mn(),r=class extends e.Base{constructor(s=[]){super(),this.S=[];let i=this;s.forEach(function(o){i.push(o)})}clear(){this.i=0,this.S=[]}push(s){return this.S.push(s),this.i+=1,this.i}pop(){if(this.i!==0)return this.i-=1,this.S.pop()}top(){return this.S[this.i-1]}},n=r;t.default=n}),Ck=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=Mn(),r=class extends e.Base{constructor(s=[]){super(),this.j=0,this.q=[];let i=this;s.forEach(function(o){i.push(o)})}clear(){this.q=[],this.i=this.j=0}push(s){let i=this.q.length;if(this.j/i>.5&&this.j+this.i>=i&&i>4096){let o=this.i;for(let a=0;a<o;++a)this.q[a]=this.q[this.j+a];this.j=0,this.q[this.i]=s}else this.q[this.j+this.i]=s;return++this.i}pop(){if(this.i===0)return;let s=this.q[this.j++];return this.i-=1,s}front(){if(this.i!==0)return this.q[this.j]}},n=r;t.default=n}),Ik=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=Mn(),r=class extends e.Base{constructor(s=[],i=function(a,l){return a>l?-1:a<l?1:0},o=!0){if(super(),this.v=i,Array.isArray(s))this.C=o?[...s]:s;else{this.C=[];let l=this;s.forEach(function(u){l.C.push(u)})}this.i=this.C.length;let a=this.i>>1;for(let l=this.i-1>>1;l>=0;--l)this.k(l,a)}m(s){let i=this.C[s];for(;s>0;){let o=s-1>>1,a=this.C[o];if(this.v(a,i)<=0)break;this.C[s]=a,s=o}this.C[s]=i}k(s,i){let o=this.C[s];for(;s<i;){let a=s<<1|1,l=a+1,u=this.C[a];if(l<this.i&&this.v(u,this.C[l])>0&&(a=l,u=this.C[l]),this.v(u,o)>=0)break;this.C[s]=u,s=a}this.C[s]=o}clear(){this.i=0,this.C.length=0}push(s){this.C.push(s),this.m(this.i),this.i+=1}pop(){if(this.i===0)return;let s=this.C[0],i=this.C.pop();return this.i-=1,this.i&&(this.C[0]=i,this.k(0,this.i>>1)),s}top(){return this.C[0]}find(s){return this.C.indexOf(s)>=0}remove(s){let i=this.C.indexOf(s);return i<0?!1:(i===0?this.pop():i===this.i-1?(this.C.pop(),this.i-=1):(this.C.splice(i,1,this.C.pop()),this.i-=1,this.m(i),this.k(i,this.i>>1)),!0)}updateItem(s){let i=this.C.indexOf(s);return i<0?!1:(this.m(i),this.k(i,this.i>>1),!0)}toArray(){return[...this.C]}},n=r;t.default=n}),ng=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=Mn(),r=class extends e.Container{},n=r;t.default=n}),On=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.throwIteratorAccessError=e;function e(){throw new RangeError("Iterator access denied!")}}),R_=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.RandomIterator=void 0;var e=Mn(),r=On(),n=class extends e.ContainerIterator{constructor(s,i){super(i),this.o=s,this.iteratorType===0?(this.pre=function(){return this.o===0&&(0,r.throwIteratorAccessError)(),this.o-=1,this},this.next=function(){return this.o===this.container.size()&&(0,r.throwIteratorAccessError)(),this.o+=1,this}):(this.pre=function(){return this.o===this.container.size()-1&&(0,r.throwIteratorAccessError)(),this.o+=1,this},this.next=function(){return this.o===-1&&(0,r.throwIteratorAccessError)(),this.o-=1,this})}get pointer(){return this.container.getElementByPos(this.o)}set pointer(s){this.container.setElementByPos(this.o,s)}};t.RandomIterator=n}),Mk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=n(ng()),r=R_();function n(a){return a&&a.t?a:{default:a}}var s=class P_ extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new P_(this.o,this.container,this.iteratorType)}},i=class extends e.default{constructor(a=[],l=!0){if(super(),Array.isArray(a))this.J=l?[...a]:a,this.i=a.length;else{this.J=[];let u=this;a.forEach(function(c){u.pushBack(c)})}}clear(){this.i=0,this.J.length=0}begin(){return new s(0,this)}end(){return new s(this.i,this)}rBegin(){return new s(this.i-1,this,1)}rEnd(){return new s(-1,this,1)}front(){return this.J[0]}back(){return this.J[this.i-1]}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J[a]}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J.splice(a,1),this.i-=1,this.i}eraseElementByValue(a){let l=0;for(let u=0;u<this.i;++u)this.J[u]!==a&&(this.J[l++]=this.J[u]);return this.i=this.J.length=l,this.i}eraseElementByIterator(a){let l=a.o;return a=a.next(),this.eraseElementByPos(l),a}pushBack(a){return this.J.push(a),this.i+=1,this.i}popBack(){if(this.i!==0)return this.i-=1,this.J.pop()}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;this.J[a]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;return this.J.splice(a,0,...new Array(u).fill(l)),this.i+=u,this.i}find(a){for(let l=0;l<this.i;++l)if(this.J[l]===a)return new s(l,this);return this.end()}reverse(){this.J.reverse()}unique(){let a=1;for(let l=1;l<this.i;++l)this.J[l]!==this.J[l-1]&&(this.J[a++]=this.J[l]);return this.i=this.J.length=a,this.i}sort(a){this.J.sort(a)}forEach(a){for(let l=0;l<this.i;++l)a(this.J[l],l,this)}[Symbol.iterator](){return(function*(){yield*this.J}).bind(this)()}},o=i;t.default=o}),Ok=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=s(ng()),r=Mn(),n=On();function s(l){return l&&l.t?l:{default:l}}var i=class k_ extends r.ContainerIterator{constructor(u,c,f,d){super(d),this.o=u,this.h=c,this.container=f,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l}set pointer(u){this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l=u}copy(){return new k_(this.o,this.h,this.container,this.iteratorType)}},o=class extends e.default{constructor(l=[]){super(),this.h={},this.p=this._=this.h.L=this.h.B=this.h;let u=this;l.forEach(function(c){u.pushBack(c)})}V(l){let{L:u,B:c}=l;u.B=c,c.L=u,l===this.p&&(this.p=c),l===this._&&(this._=u),this.i-=1}G(l,u){let c=u.B,f={l,L:u,B:c};u.B=f,c.L=f,u===this.h&&(this.p=f),c===this.h&&(this._=f),this.i+=1}clear(){this.i=0,this.p=this._=this.h.L=this.h.B=this.h}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.p.l}back(){return this._.l}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return u.l}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return this.V(u),this.i}eraseElementByValue(l){let u=this.p;for(;u!==this.h;)u.l===l&&this.V(u),u=u.B;return this.i}eraseElementByIterator(l){let u=l.o;return u===this.h&&(0,n.throwIteratorAccessError)(),l=l.next(),this.V(u),l}pushBack(l){return this.G(l,this._),this.i}popBack(){if(this.i===0)return;let l=this._.l;return this.V(this._),l}pushFront(l){return this.G(l,this.h),this.i}popFront(){if(this.i===0)return;let l=this.p.l;return this.V(this.p),l}setElementByPos(l,u){if(l<0||l>this.i-1)throw new RangeError;let c=this.p;for(;l--;)c=c.B;c.l=u}insert(l,u,c=1){if(l<0||l>this.i)throw new RangeError;if(c<=0)return this.i;if(l===0)for(;c--;)this.pushFront(u);else if(l===this.i)for(;c--;)this.pushBack(u);else{let f=this.p;for(let g=1;g<l;++g)f=f.B;let d=f.B;for(this.i+=c;c--;)f.B={l:u,L:f},f.B.L=f,f=f.B;f.B=d,d.L=f}return this.i}find(l){let u=this.p;for(;u!==this.h;){if(u.l===l)return new i(u,this.h,this);u=u.B}return this.end()}reverse(){if(this.i<=1)return;let l=this.p,u=this._,c=0;for(;c<<1<this.i;){let f=l.l;l.l=u.l,u.l=f,l=l.B,u=u.L,c+=1}}unique(){if(this.i<=1)return this.i;let l=this.p;for(;l!==this.h;){let u=l;for(;u.B!==this.h&&u.l===u.B.l;)u=u.B,this.i-=1;l.B=u.B,l.B.L=l,l=l.B}return this.i}sort(l){if(this.i<=1)return;let u=[];this.forEach(function(f){u.push(f)}),u.sort(l);let c=this.p;u.forEach(function(f){c.l=f,c=c.B})}merge(l){let u=this;if(this.i===0)l.forEach(function(c){u.pushBack(c)});else{let c=this.p;l.forEach(function(f){for(;c!==u.h&&c.l<=f;)c=c.B;u.G(f,c.L)})}return this.i}forEach(l){let u=this.p,c=0;for(;u!==this.h;)l(u.l,c++,this),u=u.B}[Symbol.iterator](){return(function*(){if(this.i===0)return;let l=this.p;for(;l!==this.h;)yield l.l,l=l.B}).bind(this)()}},a=o;t.default=a}),Rk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=n(ng()),r=R_();function n(a){return a&&a.t?a:{default:a}}var s=class L_ extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new L_(this.o,this.container,this.iteratorType)}},i=class extends e.default{constructor(a=[],l=4096){super(),this.j=0,this.D=0,this.R=0,this.N=0,this.P=0,this.A=[];let u=(()=>{if(typeof a.length=="number")return a.length;if(typeof a.size=="number")return a.size;if(typeof a.size=="function")return a.size();throw new TypeError("Cannot get the length or size of the container")})();this.F=l,this.P=Math.max(Math.ceil(u/this.F),1);for(let d=0;d<this.P;++d)this.A.push(new Array(this.F));let c=Math.ceil(u/this.F);this.j=this.R=(this.P>>1)-(c>>1),this.D=this.N=this.F-u%this.F>>1;let f=this;a.forEach(function(d){f.pushBack(d)})}T(){let a=[],l=Math.max(this.P>>1,1);for(let u=0;u<l;++u)a[u]=new Array(this.F);for(let u=this.j;u<this.P;++u)a[a.length]=this.A[u];for(let u=0;u<this.R;++u)a[a.length]=this.A[u];a[a.length]=[...this.A[this.R]],this.j=l,this.R=a.length-1;for(let u=0;u<l;++u)a[a.length]=new Array(this.F);this.A=a,this.P=a.length}O(a){let l=this.D+a+1,u=l%this.F,c=u-1,f=this.j+(l-u)/this.F;return u===0&&(f-=1),f%=this.P,c<0&&(c+=this.F),{curNodeBucketIndex:f,curNodePointerIndex:c}}clear(){this.A=[new Array(this.F)],this.P=1,this.j=this.R=this.i=0,this.D=this.N=this.F>>1}begin(){return new s(0,this)}end(){return new s(this.i,this)}rBegin(){return new s(this.i-1,this,1)}rEnd(){return new s(-1,this,1)}front(){if(this.i!==0)return this.A[this.j][this.D]}back(){if(this.i!==0)return this.A[this.R][this.N]}pushBack(a){return this.i&&(this.N<this.F-1?this.N+=1:this.R<this.P-1?(this.R+=1,this.N=0):(this.R=0,this.N=0),this.R===this.j&&this.N===this.D&&this.T()),this.i+=1,this.A[this.R][this.N]=a,this.i}popBack(){if(this.i===0)return;let a=this.A[this.R][this.N];return this.i!==1&&(this.N>0?this.N-=1:this.R>0?(this.R-=1,this.N=this.F-1):(this.R=this.P-1,this.N=this.F-1)),this.i-=1,a}pushFront(a){return this.i&&(this.D>0?this.D-=1:this.j>0?(this.j-=1,this.D=this.F-1):(this.j=this.P-1,this.D=this.F-1),this.j===this.R&&this.D===this.N&&this.T()),this.i+=1,this.A[this.j][this.D]=a,this.i}popFront(){if(this.i===0)return;let a=this.A[this.j][this.D];return this.i!==1&&(this.D<this.F-1?this.D+=1:this.j<this.P-1?(this.j+=1,this.D=0):(this.j=0,this.D=0)),this.i-=1,a}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.A[l][u]}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:u,curNodePointerIndex:c}=this.O(a);this.A[u][c]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;if(a===0)for(;u--;)this.pushFront(l);else if(a===this.i)for(;u--;)this.pushBack(l);else{let c=[];for(let f=a;f<this.i;++f)c.push(this.getElementByPos(f));this.cut(a-1);for(let f=0;f<u;++f)this.pushBack(l);for(let f=0;f<c.length;++f)this.pushBack(c[f])}return this.i}cut(a){if(a<0)return this.clear(),0;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.R=l,this.N=u,this.i=a+1,this.i}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;if(a===0)this.popFront();else if(a===this.i-1)this.popBack();else{let l=[];for(let c=a+1;c<this.i;++c)l.push(this.getElementByPos(c));this.cut(a),this.popBack();let u=this;l.forEach(function(c){u.pushBack(c)})}return this.i}eraseElementByValue(a){if(this.i===0)return 0;let l=[];for(let c=0;c<this.i;++c){let f=this.getElementByPos(c);f!==a&&l.push(f)}let u=l.length;for(let c=0;c<u;++c)this.setElementByPos(c,l[c]);return this.cut(u-1)}eraseElementByIterator(a){let l=a.o;return this.eraseElementByPos(l),a=a.next(),a}find(a){for(let l=0;l<this.i;++l)if(this.getElementByPos(l)===a)return new s(l,this);return this.end()}reverse(){let a=0,l=this.i-1;for(;a<l;){let u=this.getElementByPos(a);this.setElementByPos(a,this.getElementByPos(l)),this.setElementByPos(l,u),a+=1,l-=1}}unique(){if(this.i<=1)return this.i;let a=1,l=this.getElementByPos(0);for(let u=1;u<this.i;++u){let c=this.getElementByPos(u);c!==l&&(l=c,this.setElementByPos(a++,c))}for(;this.i>a;)this.popBack();return this.i}sort(a){let l=[];for(let u=0;u<this.i;++u)l.push(this.getElementByPos(u));l.sort(a);for(let u=0;u<this.i;++u)this.setElementByPos(u,l[u])}shrinkToFit(){if(this.i===0)return;let a=[];this.forEach(function(l){a.push(l)}),this.P=Math.max(Math.ceil(this.i/this.F),1),this.i=this.j=this.R=this.D=this.N=0,this.A=[];for(let l=0;l<this.P;++l)this.A.push(new Array(this.F));for(let l=0;l<a.length;++l)this.pushBack(a[l])}forEach(a){for(let l=0;l<this.i;++l)a(this.getElementByPos(l),l,this)}[Symbol.iterator](){return(function*(){for(let a=0;a<this.i;++a)yield this.getElementByPos(a)}).bind(this)()}},o=i;t.default=o}),Pk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.TreeNodeEnableIndex=t.TreeNode=void 0;var e=class{constructor(n,s){this.ee=1,this.u=void 0,this.l=void 0,this.U=void 0,this.W=void 0,this.tt=void 0,this.u=n,this.l=s}L(){let n=this;if(n.ee===1&&n.tt.tt===n)n=n.W;else if(n.U)for(n=n.U;n.W;)n=n.W;else{let s=n.tt;for(;s.U===n;)n=s,s=n.tt;n=s}return n}B(){let n=this;if(n.W){for(n=n.W;n.U;)n=n.U;return n}else{let s=n.tt;for(;s.W===n;)n=s,s=n.tt;return n.W!==s?s:n}}te(){let n=this.tt,s=this.W,i=s.U;return n.tt===this?n.tt=s:n.U===this?n.U=s:n.W=s,s.tt=n,s.U=this,this.tt=s,this.W=i,i&&(i.tt=this),s}se(){let n=this.tt,s=this.U,i=s.W;return n.tt===this?n.tt=s:n.U===this?n.U=s:n.W=s,s.tt=n,s.W=this,this.tt=s,this.U=i,i&&(i.tt=this),s}};t.TreeNode=e;var r=class extends e{constructor(){super(...arguments),this.rt=1}te(){let n=super.te();return this.ie(),n.ie(),n}se(){let n=super.se();return this.ie(),n.ie(),n}ie(){this.rt=1,this.U&&(this.rt+=this.U.rt),this.W&&(this.rt+=this.W.rt)}};t.TreeNodeEnableIndex=r}),N_=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=Pk(),r=Mn(),n=On(),s=class extends r.Container{constructor(o=function(l,u){return l<u?-1:l>u?1:0},a=!1){super(),this.Y=void 0,this.v=o,a?(this.re=e.TreeNodeEnableIndex,this.M=function(l,u,c){let f=this.ne(l,u,c);if(f){let d=f.tt;for(;d!==this.h;)d.rt+=1,d=d.tt;let g=this.he(f);if(g){let{parentNode:m,grandParent:y,curNode:_}=g;m.ie(),y.ie(),_.ie()}}return this.i},this.V=function(l){let u=this.fe(l);for(;u!==this.h;)u.rt-=1,u=u.tt}):(this.re=e.TreeNode,this.M=function(l,u,c){let f=this.ne(l,u,c);return f&&this.he(f),this.i},this.V=this.fe),this.h=new this.re}X(o,a){let l=this.h;for(;o;){let u=this.v(o.u,a);if(u<0)o=o.W;else if(u>0)l=o,o=o.U;else return o}return l}Z(o,a){let l=this.h;for(;o;)this.v(o.u,a)<=0?o=o.W:(l=o,o=o.U);return l}$(o,a){let l=this.h;for(;o;){let u=this.v(o.u,a);if(u<0)l=o,o=o.W;else if(u>0)o=o.U;else return o}return l}rr(o,a){let l=this.h;for(;o;)this.v(o.u,a)<0?(l=o,o=o.W):o=o.U;return l}ue(o){for(;;){let a=o.tt;if(a===this.h)return;if(o.ee===1){o.ee=0;return}if(o===a.U){let l=a.W;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.te():a.te();else if(l.W&&l.W.ee===1){l.ee=a.ee,a.ee=0,l.W.ee=0,a===this.Y?this.Y=a.te():a.te();return}else l.U&&l.U.ee===1?(l.ee=1,l.U.ee=0,l.se()):(l.ee=1,o=a)}else{let l=a.U;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.se():a.se();else if(l.U&&l.U.ee===1){l.ee=a.ee,a.ee=0,l.U.ee=0,a===this.Y?this.Y=a.se():a.se();return}else l.W&&l.W.ee===1?(l.ee=1,l.W.ee=0,l.te()):(l.ee=1,o=a)}}}fe(o){if(this.i===1)return this.clear(),this.h;let a=o;for(;a.U||a.W;){if(a.W)for(a=a.W;a.U;)a=a.U;else a=a.U;[o.u,a.u]=[a.u,o.u],[o.l,a.l]=[a.l,o.l],o=a}this.h.U===a?this.h.U=a.tt:this.h.W===a&&(this.h.W=a.tt),this.ue(a);let l=a.tt;return a===l.U?l.U=void 0:l.W=void 0,this.i-=1,this.Y.ee=0,l}oe(o,a){return o===void 0?!1:this.oe(o.U,a)||a(o)?!0:this.oe(o.W,a)}he(o){for(;;){let a=o.tt;if(a.ee===0)return;let l=a.tt;if(a===l.U){let u=l.W;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,o=l;continue}else if(o===a.W){if(o.ee=0,o.U&&(o.U.tt=a),o.W&&(o.W.tt=l),a.W=o.U,l.U=o.W,o.U=a,o.W=l,l===this.Y)this.Y=o,this.h.tt=o;else{let c=l.tt;c.U===l?c.U=o:c.W=o}return o.tt=l.tt,a.tt=o,l.tt=o,l.ee=1,{parentNode:a,grandParent:l,curNode:o}}else a.ee=0,l===this.Y?this.Y=l.se():l.se(),l.ee=1}else{let u=l.U;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,o=l;continue}else if(o===a.U){if(o.ee=0,o.U&&(o.U.tt=l),o.W&&(o.W.tt=a),l.W=o.U,a.U=o.W,o.U=l,o.W=a,l===this.Y)this.Y=o,this.h.tt=o;else{let c=l.tt;c.U===l?c.U=o:c.W=o}return o.tt=l.tt,a.tt=o,l.tt=o,l.ee=1,{parentNode:a,grandParent:l,curNode:o}}else a.ee=0,l===this.Y?this.Y=l.te():l.te(),l.ee=1}return}}ne(o,a,l){if(this.Y===void 0){this.i+=1,this.Y=new this.re(o,a),this.Y.ee=0,this.Y.tt=this.h,this.h.tt=this.Y,this.h.U=this.Y,this.h.W=this.Y;return}let u,c=this.h.U,f=this.v(c.u,o);if(f===0){c.l=a;return}else if(f>0)c.U=new this.re(o,a),c.U.tt=c,u=c.U,this.h.U=u;else{let d=this.h.W,g=this.v(d.u,o);if(g===0){d.l=a;return}else if(g<0)d.W=new this.re(o,a),d.W.tt=d,u=d.W,this.h.W=u;else{if(l!==void 0){let m=l.o;if(m!==this.h){let y=this.v(m.u,o);if(y===0){m.l=a;return}else if(y>0){let _=m.L(),S=this.v(_.u,o);if(S===0){_.l=a;return}else S<0&&(u=new this.re(o,a),_.W===void 0?(_.W=u,u.tt=_):(m.U=u,u.tt=m))}}}if(u===void 0)for(u=this.Y;;){let m=this.v(u.u,o);if(m>0){if(u.U===void 0){u.U=new this.re(o,a),u.U.tt=u,u=u.U;break}u=u.U}else if(m<0){if(u.W===void 0){u.W=new this.re(o,a),u.W.tt=u,u=u.W;break}u=u.W}else{u.l=a;return}}}}return this.i+=1,u}I(o,a){for(;o;){let l=this.v(o.u,a);if(l<0)o=o.W;else if(l>0)o=o.U;else return o}return o||this.h}clear(){this.i=0,this.Y=void 0,this.h.tt=void 0,this.h.U=this.h.W=void 0}updateKeyByIterator(o,a){let l=o.o;if(l===this.h&&(0,n.throwIteratorAccessError)(),this.i===1)return l.u=a,!0;if(l===this.h.U)return this.v(l.B().u,a)>0?(l.u=a,!0):!1;if(l===this.h.W)return this.v(l.L().u,a)<0?(l.u=a,!0):!1;let u=l.L().u;if(this.v(u,a)>=0)return!1;let c=l.B().u;return this.v(c,a)<=0?!1:(l.u=a,!0)}eraseElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let a=0,l=this;return this.oe(this.Y,function(u){return o===a?(l.V(u),!0):(a+=1,!1)}),this.i}eraseElementByKey(o){if(this.i===0)return!1;let a=this.I(this.Y,o);return a===this.h?!1:(this.V(a),!0)}eraseElementByIterator(o){let a=o.o;a===this.h&&(0,n.throwIteratorAccessError)();let l=a.W===void 0;return o.iteratorType===0?l&&o.next():(!l||a.U===void 0)&&o.next(),this.V(a),o}forEach(o){let a=0;for(let l of this)o(l,a++,this)}getElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let a,l=0;for(let u of this){if(l===o){a=u;break}l+=1}return a}getHeight(){if(this.i===0)return 0;let o=function(a){return a?Math.max(o(a.U),o(a.W))+1:0};return o(this.Y)}},i=s;t.default=i}),D_=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=Mn(),r=On(),n=class extends e.ContainerIterator{constructor(i,o,a){super(a),this.o=i,this.h=o,this.iteratorType===0?(this.pre=function(){return this.o===this.h.U&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this}):(this.pre=function(){return this.o===this.h.W&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this})}get index(){let i=this.o,o=this.h.tt;if(i===this.h)return o?o.rt-1:0;let a=0;for(i.U&&(a+=i.U.rt);i!==o;){let l=i.tt;i===l.W&&(a+=1,l.U&&(a+=l.U.rt)),i=l}return a}},s=n;t.default=s}),kk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=s(N_()),r=s(D_()),n=On();function s(l){return l&&l.t?l:{default:l}}var i=class B_ extends r.default{constructor(u,c,f,d){super(u,c,d),this.container=f}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.u}copy(){return new B_(this.o,this.h,this.container,this.iteratorType)}},o=class extends e.default{constructor(l=[],u,c){super(u,c);let f=this;l.forEach(function(d){f.insert(d)})}*K(l){l!==void 0&&(yield*this.K(l.U),yield l.u,yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.h.U?this.h.U.u:void 0}back(){return this.h.W?this.h.W.u:void 0}insert(l,u){return this.M(l,void 0,u)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}union(l){let u=this;return l.forEach(function(c){u.insert(c)}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=o;t.default=a}),Lk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=s(N_()),r=s(D_()),n=On();function s(l){return l&&l.t?l:{default:l}}var i=class $_ extends r.default{constructor(u,c,f,d){super(u,c,d),this.container=f}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,f){if(f==="0")return u.o.u;if(f==="1")return u.o.l},set(c,f,d){if(f!=="1")throw new TypeError("props must be 1");return u.o.l=d,!0}})}copy(){return new $_(this.o,this.h,this.container,this.iteratorType)}},o=class extends e.default{constructor(l=[],u,c){super(u,c);let f=this;l.forEach(function(d){f.setElement(d[0],d[1])})}*K(l){l!==void 0&&(yield*this.K(l.U),yield[l.u,l.l],yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i===0)return;let l=this.h.U;return[l.u,l.l]}back(){if(this.i===0)return;let l=this.h.W;return[l.u,l.l]}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}setElement(l,u,c){return this.M(l,u,c)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}getElementByKey(l){return this.I(this.Y,l).l}union(l){let u=this;return l.forEach(function(c){u.setElement(c[0],c[1])}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=o;t.default=a}),F_=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=e;function e(r){let n=typeof r;return n==="object"&&r!==null||n==="function"}}),U_=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.HashContainerIterator=t.HashContainer=void 0;var e=Mn(),r=s(F_()),n=On();function s(a){return a&&a.t?a:{default:a}}var i=class extends e.ContainerIterator{constructor(a,l,u){super(u),this.o=a,this.h=l,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}};t.HashContainerIterator=i;var o=class extends e.Container{constructor(){super(),this.H=[],this.g={},this.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(this.g,null),this.h={},this.h.L=this.h.B=this.p=this._=this.h}V(a){let{L:l,B:u}=a;l.B=u,u.L=l,a===this.p&&(this.p=u),a===this._&&(this._=l),this.i-=1}M(a,l,u){u===void 0&&(u=(0,r.default)(a));let c;if(u){let f=a[this.HASH_TAG];if(f!==void 0)return this.H[f].l=l,this.i;Object.defineProperty(a,this.HASH_TAG,{value:this.H.length,configurable:!0}),c={u:a,l,L:this._,B:this.h},this.H.push(c)}else{let f=this.g[a];if(f)return f.l=l,this.i;c={u:a,l,L:this._,B:this.h},this.g[a]=c}return this.i===0?(this.p=c,this.h.B=c):this._.B=c,this._=c,this.h.L=c,++this.i}I(a,l){if(l===void 0&&(l=(0,r.default)(a)),l){let u=a[this.HASH_TAG];return u===void 0?this.h:this.H[u]}else return this.g[a]||this.h}clear(){let a=this.HASH_TAG;this.H.forEach(function(l){delete l.u[a]}),this.H=[],this.g={},Object.setPrototypeOf(this.g,null),this.i=0,this.p=this._=this.h.L=this.h.B=this.h}eraseElementByKey(a,l){let u;if(l===void 0&&(l=(0,r.default)(a)),l){let c=a[this.HASH_TAG];if(c===void 0)return!1;delete a[this.HASH_TAG],u=this.H[c],delete this.H[c]}else{if(u=this.g[a],u===void 0)return!1;delete this.g[a]}return this.V(u),!0}eraseElementByIterator(a){let l=a.o;return l===this.h&&(0,n.throwIteratorAccessError)(),this.V(l),a.next()}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let l=this.p;for(;a--;)l=l.B;return this.V(l),this.i}};t.HashContainer=o}),Nk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=U_(),r=On(),n=class j_ extends e.HashContainerIterator{constructor(a,l,u,c){super(a,l,c),this.container=u}get pointer(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o.u}copy(){return new j_(this.o,this.h,this.container,this.iteratorType)}},s=class extends e.HashContainer{constructor(o=[]){super();let a=this;o.forEach(function(l){a.insert(l)})}begin(){return new n(this.p,this.h,this)}end(){return new n(this.h,this.h,this)}rBegin(){return new n(this._,this.h,this,1)}rEnd(){return new n(this.h,this.h,this,1)}front(){return this.p.u}back(){return this._.u}insert(o,a){return this.M(o,void 0,a)}getElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let a=this.p;for(;o--;)a=a.B;return a.u}find(o,a){let l=this.I(o,a);return new n(l,this.h,this)}forEach(o){let a=0,l=this.p;for(;l!==this.h;)o(l.u,a++,this),l=l.B}[Symbol.iterator](){return(function*(){let o=this.p;for(;o!==this.h;)yield o.u,o=o.B}).bind(this)()}},i=s;t.default=i}),Dk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=U_(),r=s(F_()),n=On();function s(l){return l&&l.t?l:{default:l}}var i=class W_ extends e.HashContainerIterator{constructor(u,c,f,d){super(u,c,d),this.container=f}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,f){if(f==="0")return u.o.u;if(f==="1")return u.o.l},set(c,f,d){if(f!=="1")throw new TypeError("props must be 1");return u.o.l=d,!0}})}copy(){return new W_(this.o,this.h,this.container,this.iteratorType)}},o=class extends e.HashContainer{constructor(l=[]){super();let u=this;l.forEach(function(c){u.setElement(c[0],c[1])})}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i!==0)return[this.p.u,this.p.l]}back(){if(this.i!==0)return[this._.u,this._.l]}setElement(l,u,c){return this.M(l,u,c)}getElementByKey(l,u){if(u===void 0&&(u=(0,r.default)(l)),u){let f=l[this.HASH_TAG];return f!==void 0?this.H[f].l:void 0}let c=this.g[l];return c?c.l:void 0}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return[u.u,u.l]}find(l,u){let c=this.I(l,u);return new i(c,this.h,this)}forEach(l){let u=0,c=this.p;for(;c!==this.h;)l([c.u,c.l],u++,this),c=c.B}[Symbol.iterator](){return(function*(){let l=this.p;for(;l!==this.h;)yield[l.u,l.l],l=l.B}).bind(this)()}},a=o;t.default=a}),Bk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"t",{value:!0}),Object.defineProperty(t,"Deque",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"HashMap",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(t,"HashSet",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"LinkList",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"OrderedMap",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"OrderedSet",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"PriorityQueue",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"Queue",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(t,"Stack",{enumerable:!0,get:function(){return e.default}}),Object.defineProperty(t,"Vector",{enumerable:!0,get:function(){return s.default}});var e=f(Ak()),r=f(Ck()),n=f(Ik()),s=f(Mk()),i=f(Ok()),o=f(Rk()),a=f(kk()),l=f(Lk()),u=f(Nk()),c=f(Dk());function f(d){return d&&d.t?d:{default:d}}}),$k=Te((t,e)=>{we(),_e(),ve();var r=Bk().OrderedSet,n=Sn()("number-allocator:trace"),s=Sn()("number-allocator:error");function i(a,l){this.low=a,this.high=l}i.prototype.equals=function(a){return this.low===a.low&&this.high===a.high},i.prototype.compare=function(a){return this.low<a.low&&this.high<a.low?-1:a.low<this.low&&a.high<this.low?1:0};function o(a,l){if(!(this instanceof o))return new o(a,l);this.min=a,this.max=l,this.ss=new r([],(u,c)=>u.compare(c)),n("Create"),this.clear()}o.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low},o.prototype.alloc=function(){if(this.ss.size()===0)return n("alloc():empty"),null;let a=this.ss.begin(),l=a.pointer.low,u=a.pointer.high,c=l;return c+1<=u?this.ss.updateKeyByIterator(a,new i(l+1,u)):this.ss.eraseElementByPos(0),n("alloc():"+c),c},o.prototype.use=function(a){let l=new i(a,a),u=this.ss.lowerBound(l);if(!u.equals(this.ss.end())){let c=u.pointer.low,f=u.pointer.high;return u.pointer.equals(l)?(this.ss.eraseElementByIterator(u),n("use():"+a),!0):c>a?!1:c===a?(this.ss.updateKeyByIterator(u,new i(c+1,f)),n("use():"+a),!0):f===a?(this.ss.updateKeyByIterator(u,new i(c,f-1)),n("use():"+a),!0):(this.ss.updateKeyByIterator(u,new i(a+1,f)),this.ss.insert(new i(c,a-1)),n("use():"+a),!0)}return n("use():failed"),!1},o.prototype.free=function(a){if(a<this.min||a>this.max){s("free():"+a+" is out of range");return}let l=new i(a,a),u=this.ss.upperBound(l);if(u.equals(this.ss.end())){if(u.equals(this.ss.begin())){this.ss.insert(l);return}u.pre();let c=u.pointer.high;u.pointer.high+1===a?this.ss.updateKeyByIterator(u,new i(c,a)):this.ss.insert(l)}else if(u.equals(this.ss.begin()))if(a+1===u.pointer.low){let c=u.pointer.high;this.ss.updateKeyByIterator(u,new i(a,c))}else this.ss.insert(l);else{let c=u.pointer.low,f=u.pointer.high;u.pre();let d=u.pointer.low;u.pointer.high+1===a?a+1===c?(this.ss.eraseElementByIterator(u),this.ss.updateKeyByIterator(u,new i(d,f))):this.ss.updateKeyByIterator(u,new i(d,a)):a+1===c?(this.ss.eraseElementByIterator(u.next()),this.ss.insert(new i(a,f))):this.ss.insert(l)}n("free():"+a)},o.prototype.clear=function(){n("clear()"),this.ss.clear(),this.ss.insert(new i(this.min,this.max))},o.prototype.intervalCount=function(){return this.ss.size()},o.prototype.dump=function(){console.log("length:"+this.ss.size());for(let a of this.ss)console.log(a)},e.exports=o}),z_=Te((t,e)=>{we(),_e(),ve();var r=$k();e.exports.NumberAllocator=r}),Fk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0});var e=xk(),r=z_(),n=class{constructor(s){s>0&&(this.aliasToTopic=new e.LRUCache({max:s}),this.topicToAlias={},this.numberAllocator=new r.NumberAllocator(1,s),this.max=s,this.length=0)}put(s,i){if(i===0||i>this.max)return!1;let o=this.aliasToTopic.get(i);return o&&delete this.topicToAlias[o],this.aliasToTopic.set(i,s),this.topicToAlias[s]=i,this.numberAllocator.use(i),this.length=this.aliasToTopic.size,!0}getTopicByAlias(s){return this.aliasToTopic.get(s)}getAliasByTopic(s){let i=this.topicToAlias[s];return typeof i<"u"&&this.aliasToTopic.get(i),i}clear(){this.aliasToTopic.clear(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0}getLruAlias(){return this.numberAllocator.firstVacant()||[...this.aliasToTopic.keys()][this.aliasToTopic.size-1]}};t.default=n}),Uk=Te(t=>{we(),_e(),ve();var e=t&&t.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(t,"__esModule",{value:!0});var r=$u(),n=e(Fk()),s=oo(),i=(o,a)=>{o.log("_handleConnack");let{options:l}=o,u=l.protocolVersion===5?a.reasonCode:a.returnCode;if(clearTimeout(o.connackTimer),delete o.topicAliasSend,a.properties){if(a.properties.topicAliasMaximum){if(a.properties.topicAliasMaximum>65535){o.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}a.properties.topicAliasMaximum>0&&(o.topicAliasSend=new n.default(a.properties.topicAliasMaximum))}a.properties.serverKeepAlive&&l.keepalive&&(l.keepalive=a.properties.serverKeepAlive),a.properties.maximumPacketSize&&(l.properties||(l.properties={}),l.properties.maximumPacketSize=a.properties.maximumPacketSize)}if(u===0)o.reconnecting=!1,o._onConnect(a);else if(u>0){let c=new s.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[u]}`,u);o.emit("error",c)}};t.default=i}),jk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0});var e=(r,n,s)=>{r.log("handling pubrel packet");let i=typeof s<"u"?s:r.noop,{messageId:o}=n,a={cmd:"pubcomp",messageId:o};r.incomingStore.get(n,(l,u)=>{l?r._sendPacket(a,i):(r.emit("message",u.topic,u.payload,u),r.handleMessage(u,c=>{if(c)return i(c);r.incomingStore.del(u,r.noop),r._sendPacket(a,i)}))})};t.default=e}),Wk=Te(t=>{we(),_e(),ve();var e=t&&t.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(t,"__esModule",{value:!0});var r=e(Ek()),n=e(Tk()),s=e(Uk()),i=e($u()),o=e(jk()),a=(l,u,c)=>{let{options:f}=l;if(f.protocolVersion===5&&f.properties&&f.properties.maximumPacketSize&&f.properties.maximumPacketSize<u.length)return l.emit("error",new Error(`exceeding packets size ${u.cmd}`)),l.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),l;switch(l.log("_handlePacket :: emitting packetreceive"),l.emit("packetreceive",u),u.cmd){case"publish":(0,r.default)(l,u,c);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":l.reschedulePing(),(0,i.default)(l,u),c();break;case"pubrel":l.reschedulePing(),(0,o.default)(l,u,c);break;case"connack":(0,s.default)(l,u),c();break;case"auth":l.reschedulePing(),(0,n.default)(l,u),c();break;case"pingresp":l.log("_handlePacket :: received pingresp"),l.reschedulePing(!0),c();break;case"disconnect":l.emit("disconnect",u),c();break;default:l.log("_handlePacket :: unknown command"),c();break}};t.default=a}),zk=Te(t=>{we(),_e(),ve();var e=t&&t.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(t,"__esModule",{value:!0}),t.TypedEventEmitter=void 0;var r=e((so(),Ke(is))),n=oo(),s=class{};t.TypedEventEmitter=s,(0,n.applyMixin)(s,r.default)}),Fu=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0}),t.isReactNativeBrowser=t.isWebWorker=void 0;var e=()=>{var i;return typeof window<"u"?typeof navigator<"u"&&((i=navigator.userAgent)===null||i===void 0?void 0:i.toLowerCase().indexOf(" electron/"))>-1&&ze!=null&&ze.versions?!Object.prototype.hasOwnProperty.call(ze.versions,"electron"):typeof window.document<"u":!1},r=()=>{var i,o;return!!(typeof self=="object"&&!((o=(i=self==null?void 0:self.constructor)===null||i===void 0?void 0:i.name)===null||o===void 0)&&o.includes("WorkerGlobalScope"))},n=()=>typeof navigator<"u"&&navigator.product==="ReactNative",s=e()||r()||n();t.isWebWorker=r(),t.isReactNativeBrowser=n(),t.default=s}),Hk=Te((t,e)=>{we(),_e(),ve(),function(r,n){typeof t=="object"&&typeof e<"u"?n(t):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.fastUniqueNumbers={}))}(t,function(r){var n=function(g){return function(m){var y=g(m);return m.add(y),y}},s=function(g){return function(m,y){return g.set(m,y),y}},i=Number.MAX_SAFE_INTEGER===void 0?9007199254740991:Number.MAX_SAFE_INTEGER,o=536870912,a=o*2,l=function(g,m){return function(y){var _=m.get(y),S=_===void 0?y.size:_<a?_+1:0;if(!y.has(S))return g(y,S);if(y.size<o){for(;y.has(S);)S=Math.floor(Math.random()*a);return g(y,S)}if(y.size>i)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;y.has(S);)S=Math.floor(Math.random()*i);return g(y,S)}},u=new WeakMap,c=s(u),f=l(c,u),d=n(f);r.addUniqueNumber=d,r.generateUniqueNumber=f})}),Vk=Te((t,e)=>{we(),_e(),ve(),function(r,n){typeof t=="object"&&typeof e<"u"?n(t,Hk()):typeof define=="function"&&define.amd?define(["exports","fast-unique-numbers"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimersBroker={},r.fastUniqueNumbers))}(t,function(r,n){var s=function(a){return a.method!==void 0&&a.method==="call"},i=function(a){return a.error===null&&typeof a.id=="number"},o=function(a){var l=new Map([[0,function(){}]]),u=new Map([[0,function(){}]]),c=new Map,f=new Worker(a);f.addEventListener("message",function(_){var S=_.data;if(s(S)){var E=S.params,v=E.timerId,x=E.timerType;if(x==="interval"){var M=l.get(v);if(typeof M=="number"){var A=c.get(M);if(A===void 0||A.timerId!==v||A.timerType!==x)throw new Error("The timer is in an undefined state.")}else if(typeof M<"u")M();else throw new Error("The timer is in an undefined state.")}else if(x==="timeout"){var L=u.get(v);if(typeof L=="number"){var D=c.get(L);if(D===void 0||D.timerId!==v||D.timerType!==x)throw new Error("The timer is in an undefined state.")}else if(typeof L<"u")L(),u.delete(v);else throw new Error("The timer is in an undefined state.")}}else if(i(S)){var B=S.id,q=c.get(B);if(q===void 0)throw new Error("The timer is in an undefined state.");var Y=q.timerId,R=q.timerType;c.delete(B),R==="interval"?l.delete(Y):u.delete(Y)}else{var I=S.error.message;throw new Error(I)}});var d=function(_){var S=n.generateUniqueNumber(c);c.set(S,{timerId:_,timerType:"interval"}),l.set(_,S),f.postMessage({id:S,method:"clear",params:{timerId:_,timerType:"interval"}})},g=function(_){var S=n.generateUniqueNumber(c);c.set(S,{timerId:_,timerType:"timeout"}),u.set(_,S),f.postMessage({id:S,method:"clear",params:{timerId:_,timerType:"timeout"}})},m=function(_){var S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,E=n.generateUniqueNumber(l);return l.set(E,function(){_(),typeof l.get(E)=="function"&&f.postMessage({id:null,method:"set",params:{delay:S,now:performance.now(),timerId:E,timerType:"interval"}})}),f.postMessage({id:null,method:"set",params:{delay:S,now:performance.now(),timerId:E,timerType:"interval"}}),E},y=function(_){var S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,E=n.generateUniqueNumber(u);return u.set(E,_),f.postMessage({id:null,method:"set",params:{delay:S,now:performance.now(),timerId:E,timerType:"timeout"}}),E};return{clearInterval:d,clearTimeout:g,setInterval:m,setTimeout:y}};r.load=o})}),qk=Te((t,e)=>{we(),_e(),ve(),function(r,n){typeof t=="object"&&typeof e<"u"?n(t,Vk()):typeof define=="function"&&define.amd?define(["exports","worker-timers-broker"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimers={},r.workerTimersBroker))}(t,function(r,n){var s=function(f,d){var g=null;return function(){if(g!==null)return g;var m=new Blob([d],{type:"application/javascript; charset=utf-8"}),y=URL.createObjectURL(m);return g=f(y),setTimeout(function(){return URL.revokeObjectURL(y)}),g}},i=`(()=>{var e={472:(e,t,r)=>{var o,i;void 0===(i="function"==typeof(o=function(){"use strict";var e=new Map,t=new Map,r=function(t){var r=e.get(t);if(void 0===r)throw new Error('There is no interval scheduled with the given id "'.concat(t,'".'));clearTimeout(r),e.delete(t)},o=function(e){var r=t.get(e);if(void 0===r)throw new Error('There is no timeout scheduled with the given id "'.concat(e,'".'));clearTimeout(r),t.delete(e)},i=function(e,t){var r,o=performance.now();return{expected:o+(r=e-Math.max(0,o-t)),remainingDelay:r}},n=function e(t,r,o,i){var n=performance.now();n>o?postMessage({id:null,method:"call",params:{timerId:r,timerType:i}}):t.set(r,setTimeout(e,o-n,t,r,o,i))},a=function(t,r,o){var a=i(t,o),s=a.expected,d=a.remainingDelay;e.set(r,setTimeout(n,d,e,r,s,"interval"))},s=function(e,r,o){var a=i(e,o),s=a.expected,d=a.remainingDelay;t.set(r,setTimeout(n,d,t,r,s,"timeout"))};addEventListener("message",(function(e){var t=e.data;try{if("clear"===t.method){var i=t.id,n=t.params,d=n.timerId,c=n.timerType;if("interval"===c)r(d),postMessage({error:null,id:i});else{if("timeout"!==c)throw new Error('The given type "'.concat(c,'" is not supported'));o(d),postMessage({error:null,id:i})}}else{if("set"!==t.method)throw new Error('The given method "'.concat(t.method,'" is not supported'));var u=t.params,l=u.delay,p=u.now,m=u.timerId,v=u.timerType;if("interval"===v)a(l,m,p);else{if("timeout"!==v)throw new Error('The given type "'.concat(v,'" is not supported'));s(l,m,p)}}}catch(e){postMessage({error:{message:e.message},id:t.id,result:null})}}))})?o.call(t,r,t,e):o)||(e.exports=i)}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(472)})()})();`,o=s(n.load,i),a=function(f){return o().clearInterval(f)},l=function(f){return o().clearTimeout(f)},u=function(){var f;return(f=o()).setInterval.apply(f,arguments)},c=function(){var f;return(f=o()).setTimeout.apply(f,arguments)};r.clearInterval=a,r.clearTimeout=l,r.setInterval=u,r.setTimeout=c})}),Yk=Te(t=>{we(),_e(),ve();var e=t&&t.__createBinding||(Object.create?function(u,c,f,d){d===void 0&&(d=f);var g=Object.getOwnPropertyDescriptor(c,f);(!g||("get"in g?!c.__esModule:g.writable||g.configurable))&&(g={enumerable:!0,get:function(){return c[f]}}),Object.defineProperty(u,d,g)}:function(u,c,f,d){d===void 0&&(d=f),u[d]=c[f]}),r=t&&t.__setModuleDefault||(Object.create?function(u,c){Object.defineProperty(u,"default",{enumerable:!0,value:c})}:function(u,c){u.default=c}),n=t&&t.__importStar||function(u){if(u&&u.__esModule)return u;var c={};if(u!=null)for(var f in u)f!=="default"&&Object.prototype.hasOwnProperty.call(u,f)&&e(c,u,f);return r(c,u),c};Object.defineProperty(t,"__esModule",{value:!0});var s=n(Fu()),i=qk(),o={set:i.setInterval,clear:i.clearInterval},a={set:(u,c)=>setInterval(u,c),clear:u=>clearInterval(u)},l=u=>{switch(u){case"native":return a;case"worker":return o;case"auto":default:return s.default&&!s.isWebWorker&&!s.isReactNativeBrowser?o:a}};t.default=l}),H_=Te(t=>{we(),_e(),ve();var e=t&&t.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(t,"__esModule",{value:!0});var r=e(Yk()),n=class{get keepaliveTimeoutTimestamp(){return this._keepaliveTimeoutTimestamp}get intervalEvery(){return this._intervalEvery}get keepalive(){return this._keepalive}constructor(s,i){this.destroyed=!1,this.client=s,this.timer=typeof i=="object"&&"set"in i&&"clear"in i?i:(0,r.default)(i),this.setKeepalive(s.options.keepalive)}clear(){this.timerId&&(this.timer.clear(this.timerId),this.timerId=null)}setKeepalive(s){if(s*=1e3,isNaN(s)||s<=0||s>2147483647)throw new Error(`Keepalive value must be an integer between 0 and 2147483647. Provided value is ${s}`);this._keepalive=s,this.reschedule(),this.client.log(`KeepaliveManager: set keepalive to ${s}ms`)}destroy(){this.clear(),this.destroyed=!0}reschedule(){if(this.destroyed)return;this.clear(),this.counter=0;let s=Math.ceil(this._keepalive*1.5);this._keepaliveTimeoutTimestamp=Date.now()+s,this._intervalEvery=Math.ceil(this._keepalive/2),this.timerId=this.timer.set(()=>{this.destroyed||(this.counter+=1,this.counter===2?this.client.sendPing():this.counter>2&&this.client.onKeepaliveTimeout())},this._intervalEvery)}};t.default=n}),Eh=Te(t=>{we(),_e(),ve();var e=t&&t.__createBinding||(Object.create?function(M,A,L,D){D===void 0&&(D=L);var B=Object.getOwnPropertyDescriptor(A,L);(!B||("get"in B?!A.__esModule:B.writable||B.configurable))&&(B={enumerable:!0,get:function(){return A[L]}}),Object.defineProperty(M,D,B)}:function(M,A,L,D){D===void 0&&(D=L),M[D]=A[L]}),r=t&&t.__setModuleDefault||(Object.create?function(M,A){Object.defineProperty(M,"default",{enumerable:!0,value:A})}:function(M,A){M.default=A}),n=t&&t.__importStar||function(M){if(M&&M.__esModule)return M;var A={};if(M!=null)for(var L in M)L!=="default"&&Object.prototype.hasOwnProperty.call(M,L)&&e(A,M,L);return r(A,M),A},s=t&&t.__importDefault||function(M){return M&&M.__esModule?M:{default:M}};Object.defineProperty(t,"__esModule",{value:!0});var i=s(DP()),o=s(yk()),a=s(C_()),l=ss(),u=s(vk()),c=n(_k()),f=s(Sn()),d=s(I_()),g=s(Wk()),m=oo(),y=zk(),_=s(H_()),S=n(Fu()),E=globalThis.setImmediate||((...M)=>{let A=M.shift();(0,m.nextTick)(()=>{A(...M)})}),v={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0,writeCache:!0,timerVariant:"auto"},x=class Sh extends y.TypedEventEmitter{static defaultId(){return`mqttjs_${Math.random().toString(16).substr(2,8)}`}constructor(A,L){super(),this.options=L||{};for(let D in v)typeof this.options[D]>"u"?this.options[D]=v[D]:this.options[D]=L[D];this.log=this.options.log||(0,f.default)("mqttjs:client"),this.noop=this._noop.bind(this),this.log("MqttClient :: version:",Sh.VERSION),S.isWebWorker?this.log("MqttClient :: environment","webworker"):this.log("MqttClient :: environment",S.default?"browser":"node"),this.log("MqttClient :: options.protocol",L.protocol),this.log("MqttClient :: options.protocolVersion",L.protocolVersion),this.log("MqttClient :: options.username",L.username),this.log("MqttClient :: options.keepalive",L.keepalive),this.log("MqttClient :: options.reconnectPeriod",L.reconnectPeriod),this.log("MqttClient :: options.rejectUnauthorized",L.rejectUnauthorized),this.log("MqttClient :: options.properties.topicAliasMaximum",L.properties?L.properties.topicAliasMaximum:void 0),this.options.clientId=typeof L.clientId=="string"?L.clientId:Sh.defaultId(),this.log("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=L.protocolVersion===5&&L.customHandleAcks?L.customHandleAcks:(...D)=>{D[3](null,0)},this.options.writeCache||(o.default.writeToStream.cacheNumbers=!1),this.streamBuilder=A,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new a.default:this.options.messageIdProvider,this.outgoingStore=L.outgoingStore||new d.default,this.incomingStore=L.incomingStore||new d.default,this.queueQoSZero=L.queueQoSZero===void 0?!0:L.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.keepaliveManager=null,this.connected=!1,this.disconnecting=!1,this.reconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,L.properties&&L.properties.topicAliasMaximum>0&&(L.properties.topicAliasMaximum>65535?this.log("MqttClient :: options.properties.topicAliasMaximum is out of range"):this.topicAliasRecv=new i.default(L.properties.topicAliasMaximum)),this.on("connect",()=>{let{queue:D}=this,B=()=>{let q=D.shift();this.log("deliver :: entry %o",q);let Y=null;if(!q){this._resubscribe();return}Y=q.packet,this.log("deliver :: call _sendPacket for %o",Y);let R=!0;Y.messageId&&Y.messageId!==0&&(this.messageIdProvider.register(Y.messageId)||(R=!1)),R?this._sendPacket(Y,I=>{q.cb&&q.cb(I),B()}):(this.log("messageId: %d has already used. The message is skipped and removed.",Y.messageId),B())};this.log("connect :: sending queued packets"),B()}),this.on("close",()=>{this.log("close :: connected set to `false`"),this.connected=!1,this.log("close :: clearing connackTimer"),clearTimeout(this.connackTimer),this._destroyKeepaliveManager(),this.topicAliasRecv&&this.topicAliasRecv.clear(),this.log("close :: calling _setupReconnect"),this._setupReconnect()}),this.options.manualConnect||(this.log("MqttClient :: setting up stream"),this.connect())}handleAuth(A,L){L()}handleMessage(A,L){L()}_nextId(){return this.messageIdProvider.allocate()}getLastMessageId(){return this.messageIdProvider.getLastAllocated()}connect(){var A;let L=new l.Writable,D=o.default.parser(this.options),B=null,q=[];this.log("connect :: calling method to clear reconnect"),this._clearReconnect(),this.disconnected&&!this.reconnecting&&(this.incomingStore=this.options.incomingStore||new d.default,this.outgoingStore=this.options.outgoingStore||new d.default,this.disconnecting=!1,this.disconnected=!1),this.log("connect :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),D.on("packet",W=>{this.log("parser :: on packet push to packets array."),q.push(W)});let Y=()=>{this.log("work :: getting next packet in queue");let W=q.shift();if(W)this.log("work :: packet pulled from queue"),(0,g.default)(this,W,R);else{this.log("work :: no packets in queue");let G=B;B=null,this.log("work :: done flag is %s",!!G),G&&G()}},R=()=>{if(q.length)(0,m.nextTick)(Y);else{let W=B;B=null,W()}};L._write=(W,G,H)=>{B=H,this.log("writable stream :: parsing buffer"),D.parse(W),Y()};let I=W=>{this.log("streamErrorHandler :: error",W.message),W.code?(this.log("streamErrorHandler :: emitting error"),this.emit("error",W)):this.noop(W)};this.log("connect :: pipe stream to writable stream"),this.stream.pipe(L),this.stream.on("error",I),this.stream.on("close",()=>{this.log("(%s)stream :: on close",this.options.clientId),this._flushVolatile(),this.log("stream: emit close to MqttClient"),this.emit("close")}),this.log("connect: sending packet `connect`");let N={cmd:"connect",protocolId:this.options.protocolId,protocolVersion:this.options.protocolVersion,clean:this.options.clean,clientId:this.options.clientId,keepalive:this.options.keepalive,username:this.options.username,password:this.options.password,properties:this.options.properties};if(this.options.will&&(N.will=Object.assign(Object.assign({},this.options.will),{payload:(A=this.options.will)===null||A===void 0?void 0:A.payload})),this.topicAliasRecv&&(N.properties||(N.properties={}),this.topicAliasRecv&&(N.properties.topicAliasMaximum=this.topicAliasRecv.max)),this._writePacket(N),D.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return this.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){let W=Object.assign({cmd:"auth",reasonCode:0},this.options.authPacket);this._writePacket(W)}}return this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(()=>{this.log("!!connectTimeout hit!! Calling _cleanUp with force `true`"),this.emit("error",new Error("connack timeout")),this._cleanUp(!0)},this.options.connectTimeout),this}publish(A,L,D,B){this.log("publish :: message `%s` to topic `%s`",L,A);let{options:q}=this;typeof D=="function"&&(B=D,D=null),D=D||{},D=Object.assign(Object.assign({},{qos:0,retain:!1,dup:!1}),D);let{qos:Y,retain:R,dup:I,properties:N,cbStorePut:W}=D;if(this._checkDisconnecting(B))return this;let G=()=>{let H=0;if((Y===1||Y===2)&&(H=this._nextId(),H===null))return this.log("No messageId left"),!1;let $={cmd:"publish",topic:A,payload:L,qos:Y,retain:R,messageId:H,dup:I};switch(q.protocolVersion===5&&($.properties=N),this.log("publish :: qos",Y),Y){case 1:case 2:this.outgoing[$.messageId]={volatile:!1,cb:B||this.noop},this.log("MqttClient:publish: packet cmd: %s",$.cmd),this._sendPacket($,void 0,W);break;default:this.log("MqttClient:publish: packet cmd: %s",$.cmd),this._sendPacket($,B,W);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!G())&&this._storeProcessingQueue.push({invoke:G,cbStorePut:D.cbStorePut,callback:B}),this}publishAsync(A,L,D){return new Promise((B,q)=>{this.publish(A,L,D,(Y,R)=>{Y?q(Y):B(R)})})}subscribe(A,L,D){let B=this.options.protocolVersion;typeof L=="function"&&(D=L),D=D||this.noop;let q=!1,Y=[];typeof A=="string"?(A=[A],Y=A):Array.isArray(A)?Y=A:typeof A=="object"&&(q=A.resubscribe,delete A.resubscribe,Y=Object.keys(A));let R=c.validateTopics(Y);if(R!==null)return E(D,new Error(`Invalid topic ${R}`)),this;if(this._checkDisconnecting(D))return this.log("subscribe: discconecting true"),this;let I={qos:0};B===5&&(I.nl=!1,I.rap=!1,I.rh=0),L=Object.assign(Object.assign({},I),L);let N=L.properties,W=[],G=($,ne)=>{if(ne=ne||L,!Object.prototype.hasOwnProperty.call(this._resubscribeTopics,$)||this._resubscribeTopics[$].qos<ne.qos||q){let ue={topic:$,qos:ne.qos};B===5&&(ue.nl=ne.nl,ue.rap=ne.rap,ue.rh=ne.rh,ue.properties=N),this.log("subscribe: pushing topic `%s` and qos `%s` to subs list",ue.topic,ue.qos),W.push(ue)}};if(Array.isArray(A)?A.forEach($=>{this.log("subscribe: array topic %s",$),G($)}):Object.keys(A).forEach($=>{this.log("subscribe: object topic %s, %o",$,A[$]),G($,A[$])}),!W.length)return D(null,[]),this;let H=()=>{let $=this._nextId();if($===null)return this.log("No messageId left"),!1;let ne={cmd:"subscribe",subscriptions:W,messageId:$};if(N&&(ne.properties=N),this.options.resubscribe){this.log("subscribe :: resubscribe true");let ue=[];W.forEach(re=>{if(this.options.reconnectPeriod>0){let k={qos:re.qos};B===5&&(k.nl=re.nl||!1,k.rap=re.rap||!1,k.rh=re.rh||0,k.properties=re.properties),this._resubscribeTopics[re.topic]=k,ue.push(re.topic)}}),this.messageIdToTopic[ne.messageId]=ue}return this.outgoing[ne.messageId]={volatile:!0,cb(ue,re){if(!ue){let{granted:k}=re;for(let Q=0;Q<k.length;Q+=1)W[Q].qos=k[Q]}D(ue,W,re)}},this.log("subscribe :: call _sendPacket"),this._sendPacket(ne),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!H())&&this._storeProcessingQueue.push({invoke:H,callback:D}),this}subscribeAsync(A,L){return new Promise((D,B)=>{this.subscribe(A,L,(q,Y)=>{q?B(q):D(Y)})})}unsubscribe(A,L,D){typeof A=="string"&&(A=[A]),typeof L=="function"&&(D=L),D=D||this.noop;let B=c.validateTopics(A);if(B!==null)return E(D,new Error(`Invalid topic ${B}`)),this;if(this._checkDisconnecting(D))return this;let q=()=>{let Y=this._nextId();if(Y===null)return this.log("No messageId left"),!1;let R={cmd:"unsubscribe",messageId:Y,unsubscriptions:[]};return typeof A=="string"?R.unsubscriptions=[A]:Array.isArray(A)&&(R.unsubscriptions=A),this.options.resubscribe&&R.unsubscriptions.forEach(I=>{delete this._resubscribeTopics[I]}),typeof L=="object"&&L.properties&&(R.properties=L.properties),this.outgoing[R.messageId]={volatile:!0,cb:D},this.log("unsubscribe: call _sendPacket"),this._sendPacket(R),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!q())&&this._storeProcessingQueue.push({invoke:q,callback:D}),this}unsubscribeAsync(A,L){return new Promise((D,B)=>{this.unsubscribe(A,L,(q,Y)=>{q?B(q):D(Y)})})}end(A,L,D){this.log("end :: (%s)",this.options.clientId),(A==null||typeof A!="boolean")&&(D=D||L,L=A,A=!1),typeof L!="object"&&(D=D||L,L=null),this.log("end :: cb? %s",!!D),(!D||typeof D!="function")&&(D=this.noop);let B=()=>{this.log("end :: closeStores: closing incoming and outgoing stores"),this.disconnected=!0,this.incomingStore.close(Y=>{this.outgoingStore.close(R=>{if(this.log("end :: closeStores: emitting end"),this.emit("end"),D){let I=Y||R;this.log("end :: closeStores: invoking callback with args"),D(I)}})}),this._deferredReconnect?this._deferredReconnect():(this.options.reconnectPeriod===0||this.options.manualConnect)&&(this.disconnecting=!1)},q=()=>{this.log("end :: (%s) :: finish :: calling _cleanUp with force %s",this.options.clientId,A),this._cleanUp(A,()=>{this.log("end :: finish :: calling process.nextTick on closeStores"),(0,m.nextTick)(B)},L)};return this.disconnecting?(D(),this):(this._clearReconnect(),this.disconnecting=!0,!A&&Object.keys(this.outgoing).length>0?(this.log("end :: (%s) :: calling finish in 10ms once outgoing is empty",this.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,q,10))):(this.log("end :: (%s) :: immediately calling finish",this.options.clientId),q()),this)}endAsync(A,L){return new Promise((D,B)=>{this.end(A,L,q=>{q?B(q):D()})})}removeOutgoingMessage(A){if(this.outgoing[A]){let{cb:L}=this.outgoing[A];this._removeOutgoingAndStoreMessage(A,()=>{L(new Error("Message removed"))})}return this}reconnect(A){this.log("client reconnect");let L=()=>{A?(this.options.incomingStore=A.incomingStore,this.options.outgoingStore=A.outgoingStore):(this.options.incomingStore=null,this.options.outgoingStore=null),this.incomingStore=this.options.incomingStore||new d.default,this.outgoingStore=this.options.outgoingStore||new d.default,this.disconnecting=!1,this.disconnected=!1,this._deferredReconnect=null,this._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=L:L(),this}_flushVolatile(){this.outgoing&&(this.log("_flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(this.outgoing).forEach(A=>{this.outgoing[A].volatile&&typeof this.outgoing[A].cb=="function"&&(this.outgoing[A].cb(new Error("Connection closed")),delete this.outgoing[A])}))}_flush(){this.outgoing&&(this.log("_flush: queue exists? %b",!!this.outgoing),Object.keys(this.outgoing).forEach(A=>{typeof this.outgoing[A].cb=="function"&&(this.outgoing[A].cb(new Error("Connection closed")),delete this.outgoing[A])}))}_removeTopicAliasAndRecoverTopicName(A){let L;A.properties&&(L=A.properties.topicAlias);let D=A.topic.toString();if(this.log("_removeTopicAliasAndRecoverTopicName :: alias %d, topic %o",L,D),D.length===0){if(typeof L>"u")return new Error("Unregistered Topic Alias");if(D=this.topicAliasSend.getTopicByAlias(L),typeof D>"u")return new Error("Unregistered Topic Alias");A.topic=D}L&&delete A.properties.topicAlias}_checkDisconnecting(A){return this.disconnecting&&(A&&A!==this.noop?A(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting}_reconnect(){this.log("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this.connect()}),this.log("client already connected. disconnecting first.")):(this.log("_reconnect: calling connect"),this.connect())}_setupReconnect(){!this.disconnecting&&!this.reconnectTimer&&this.options.reconnectPeriod>0?(this.reconnecting||(this.log("_setupReconnect :: emit `offline` state"),this.emit("offline"),this.log("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),this.log("_setupReconnect :: setting reconnectTimer for %d ms",this.options.reconnectPeriod),this.reconnectTimer=setInterval(()=>{this.log("reconnectTimer :: reconnect triggered!"),this._reconnect()},this.options.reconnectPeriod)):this.log("_setupReconnect :: doing nothing...")}_clearReconnect(){this.log("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)}_cleanUp(A,L,D={}){if(L&&(this.log("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",L)),this.log("_cleanUp :: forced? %s",A),A)this.options.reconnectPeriod===0&&this.options.clean&&this._flush(),this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{let B=Object.assign({cmd:"disconnect"},D);this.log("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(B,()=>{this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),E(()=>{this.stream.end(()=>{this.log("_cleanUp :: (%s) :: stream destroyed",this.options.clientId)})})})}!this.disconnecting&&!this.reconnecting&&(this.log("_cleanUp :: client not disconnecting/reconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this._destroyKeepaliveManager(),L&&!this.connected&&(this.log("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",L),L())}_storeAndSend(A,L,D){this.log("storeAndSend :: store packet with cmd %s to outgoingStore",A.cmd);let B=A,q;if(B.cmd==="publish"&&(B=(0,u.default)(A),q=this._removeTopicAliasAndRecoverTopicName(B),q))return L&&L(q);this.outgoingStore.put(B,Y=>{if(Y)return L&&L(Y);D(),this._writePacket(A,L)})}_applyTopicAlias(A){if(this.options.protocolVersion===5&&A.cmd==="publish"){let L;A.properties&&(L=A.properties.topicAlias);let D=A.topic.toString();if(this.topicAliasSend)if(L){if(D.length!==0&&(this.log("applyTopicAlias :: register topic: %s - alias: %d",D,L),!this.topicAliasSend.put(D,L)))return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",D,L),new Error("Sending Topic Alias out of range")}else D.length!==0&&(this.options.autoAssignTopicAlias?(L=this.topicAliasSend.getAliasByTopic(D),L?(A.topic="",A.properties=Object.assign(Object.assign({},A.properties),{topicAlias:L}),this.log("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",D,L)):(L=this.topicAliasSend.getLruAlias(),this.topicAliasSend.put(D,L),A.properties=Object.assign(Object.assign({},A.properties),{topicAlias:L}),this.log("applyTopicAlias :: auto assign topic: %s - alias: %d",D,L))):this.options.autoUseTopicAlias&&(L=this.topicAliasSend.getAliasByTopic(D),L&&(A.topic="",A.properties=Object.assign(Object.assign({},A.properties),{topicAlias:L}),this.log("applyTopicAlias :: auto use topic: %s - alias: %d",D,L))));else if(L)return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",D,L),new Error("Sending Topic Alias out of range")}}_noop(A){this.log("noop ::",A)}_writePacket(A,L){this.log("_writePacket :: packet: %O",A),this.log("_writePacket :: emitting `packetsend`"),this.emit("packetsend",A),this.log("_writePacket :: writing to stream");let D=o.default.writeToStream(A,this.stream,this.options);this.log("_writePacket :: writeToStream result %s",D),!D&&L&&L!==this.noop?(this.log("_writePacket :: handle events on `drain` once through callback."),this.stream.once("drain",L)):L&&(this.log("_writePacket :: invoking cb"),L())}_sendPacket(A,L,D,B){this.log("_sendPacket :: (%s) ::  start",this.options.clientId),D=D||this.noop,L=L||this.noop;let q=this._applyTopicAlias(A);if(q){L(q);return}if(!this.connected){if(A.cmd==="auth"){this._writePacket(A,L);return}this.log("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(A,L,D);return}if(B){this._writePacket(A,L);return}switch(A.cmd){case"publish":break;case"pubrel":this._storeAndSend(A,L,D);return;default:this._writePacket(A,L);return}switch(A.qos){case 2:case 1:this._storeAndSend(A,L,D);break;case 0:default:this._writePacket(A,L);break}this.log("_sendPacket :: (%s) ::  end",this.options.clientId)}_storePacket(A,L,D){this.log("_storePacket :: packet: %o",A),this.log("_storePacket :: cb? %s",!!L),D=D||this.noop;let B=A;if(B.cmd==="publish"){B=(0,u.default)(A);let Y=this._removeTopicAliasAndRecoverTopicName(B);if(Y)return L&&L(Y)}let q=B.qos||0;q===0&&this.queueQoSZero||B.cmd!=="publish"?this.queue.push({packet:B,cb:L}):q>0?(L=this.outgoing[B.messageId]?this.outgoing[B.messageId].cb:null,this.outgoingStore.put(B,Y=>{if(Y)return L&&L(Y);D()})):L&&L(new Error("No connection to broker"))}_setupKeepaliveManager(){this.log("_setupKeepaliveManager :: keepalive %d (seconds)",this.options.keepalive),!this.keepaliveManager&&this.options.keepalive&&(this.keepaliveManager=new _.default(this,this.options.timerVariant))}_destroyKeepaliveManager(){this.keepaliveManager&&(this.log("_destroyKeepaliveManager :: destroying keepalive manager"),this.keepaliveManager.destroy(),this.keepaliveManager=null)}reschedulePing(A=!1){this.keepaliveManager&&this.options.keepalive&&(A||this.options.reschedulePings)&&this._reschedulePing()}_reschedulePing(){this.log("_reschedulePing :: rescheduling ping"),this.keepaliveManager.reschedule()}sendPing(){this.log("_sendPing :: sending pingreq"),this._sendPacket({cmd:"pingreq"})}onKeepaliveTimeout(){this.emit("error",new Error("Keepalive timeout")),this.log("onKeepaliveTimeout :: calling _cleanUp with force true"),this._cleanUp(!0)}_resubscribe(){this.log("_resubscribe");let A=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion>=4&&!this.connackPacket.sessionPresent)&&A.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){this.log("_resubscribe: protocolVersion 5");for(let L=0;L<A.length;L++){let D={};D[A[L]]=this._resubscribeTopics[A[L]],D.resubscribe=!0,this.subscribe(D,{properties:D[A[L]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1}_onConnect(A){if(this.disconnected){this.emit("connect",A);return}this.connackPacket=A,this.messageIdProvider.clear(),this._setupKeepaliveManager(),this.connected=!0;let L=()=>{let D=this.outgoingStore.createStream(),B=()=>{D.destroy(),D=null,this._flushStoreProcessingQueue(),q()},q=()=>{this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={}};this.once("close",B),D.on("error",R=>{q(),this._flushStoreProcessingQueue(),this.removeListener("close",B),this.emit("error",R)});let Y=()=>{if(!D)return;let R=D.read(1),I;if(!R){D.once("readable",Y);return}if(this._storeProcessing=!0,this._packetIdsDuringStoreProcessing[R.messageId]){Y();return}!this.disconnecting&&!this.reconnectTimer?(I=this.outgoing[R.messageId]?this.outgoing[R.messageId].cb:null,this.outgoing[R.messageId]={volatile:!1,cb(N,W){I&&I(N,W),Y()}},this._packetIdsDuringStoreProcessing[R.messageId]=!0,this.messageIdProvider.register(R.messageId)?this._sendPacket(R,void 0,void 0,!0):this.log("messageId: %d has already used.",R.messageId)):D.destroy&&D.destroy()};D.on("end",()=>{let R=!0;for(let I in this._packetIdsDuringStoreProcessing)if(!this._packetIdsDuringStoreProcessing[I]){R=!1;break}this.removeListener("close",B),R?(q(),this._invokeAllStoreProcessingQueue(),this.emit("connect",A)):L()}),Y()};L()}_invokeStoreProcessingQueue(){if(!this._storeProcessing&&this._storeProcessingQueue.length>0){let A=this._storeProcessingQueue[0];if(A&&A.invoke())return this._storeProcessingQueue.shift(),!0}return!1}_invokeAllStoreProcessingQueue(){for(;this._invokeStoreProcessingQueue(););}_flushStoreProcessingQueue(){for(let A of this._storeProcessingQueue)A.cbStorePut&&A.cbStorePut(new Error("Connection closed")),A.callback&&A.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)}_removeOutgoingAndStoreMessage(A,L){delete this.outgoing[A],this.outgoingStore.del({messageId:A},(D,B)=>{L(D,B),this.messageIdProvider.deallocate(A),this._invokeStoreProcessingQueue()})}};x.VERSION=m.MQTTJS_VERSION,t.default=x}),Gk=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0});var e=z_(),r=class{constructor(){this.numberAllocator=new e.NumberAllocator(1,65535)}allocate(){return this.lastId=this.numberAllocator.alloc(),this.lastId}getLastAllocated(){return this.lastId}register(n){return this.numberAllocator.use(n)}deallocate(n){this.numberAllocator.free(n)}clear(){this.numberAllocator.clear()}};t.default=r});function wi(t){throw new RangeError(q_[t])}function D0(t,e){let r=t.split("@"),n="";r.length>1&&(n=r[0]+"@",t=r[1]);let s=function(i,o){let a=[],l=i.length;for(;l--;)a[l]=o(i[l]);return a}((t=t.replace(V_,".")).split("."),e).join(".");return n+s}function B0(t){let e=[],r=0,n=t.length;for(;r<n;){let s=t.charCodeAt(r++);if(s>=55296&&s<=56319&&r<n){let i=t.charCodeAt(r++);(64512&i)==56320?e.push(((1023&s)<<10)+(1023&i)+65536):(e.push(s),r--)}else e.push(s)}return e}var $0,F0,V_,q_,gr,za,Fc,Uc,jc,Wc,Fn,Kk=_t(()=>{we(),_e(),ve(),$0=/^xn--/,F0=/[^\0-\x7E]/,V_=/[\x2E\u3002\uFF0E\uFF61]/g,q_={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},gr=Math.floor,za=String.fromCharCode,Fc=function(t,e){return t+22+75*(t<26)-((e!=0)<<5)},Uc=function(t,e,r){let n=0;for(t=r?gr(t/700):t>>1,t+=gr(t/e);t>455;n+=36)t=gr(t/35);return gr(n+36*t/(t+38))},jc=function(t){let e=[],r=t.length,n=0,s=128,i=72,o=t.lastIndexOf("-");o<0&&(o=0);for(let l=0;l<o;++l)t.charCodeAt(l)>=128&&wi("not-basic"),e.push(t.charCodeAt(l));for(let l=o>0?o+1:0;l<r;){let u=n;for(let f=1,d=36;;d+=36){l>=r&&wi("invalid-input");let g=(a=t.charCodeAt(l++))-48<10?a-22:a-65<26?a-65:a-97<26?a-97:36;(g>=36||g>gr((2147483647-n)/f))&&wi("overflow"),n+=g*f;let m=d<=i?1:d>=i+26?26:d-i;if(g<m)break;let y=36-m;f>gr(2147483647/y)&&wi("overflow"),f*=y}let c=e.length+1;i=Uc(n-u,c,u==0),gr(n/c)>2147483647-s&&wi("overflow"),s+=gr(n/c),n%=c,e.splice(n++,0,s)}var a;return String.fromCodePoint(...e)},Wc=function(t){let e=[],r=(t=B0(t)).length,n=128,s=0,i=72;for(let l of t)l<128&&e.push(za(l));let o=e.length,a=o;for(o&&e.push("-");a<r;){let l=2147483647;for(let c of t)c>=n&&c<l&&(l=c);let u=a+1;l-n>gr((2147483647-s)/u)&&wi("overflow"),s+=(l-n)*u,n=l;for(let c of t)if(c<n&&++s>2147483647&&wi("overflow"),c==n){let f=s;for(let d=36;;d+=36){let g=d<=i?1:d>=i+26?26:d-i;if(f<g)break;let m=f-g,y=36-g;e.push(za(Fc(g+m%y,0))),f=gr(m/y)}e.push(za(Fc(f,0))),i=Uc(s,u,a==o),s=0,++a}++s,++n}return e.join("")},Fn={version:"2.1.0",ucs2:{decode:B0,encode:t=>String.fromCodePoint(...t)},decode:jc,encode:Wc,toASCII:function(t){return D0(t,function(e){return F0.test(e)?"xn--"+Wc(e):e})},toUnicode:function(t){return D0(t,function(e){return $0.test(e)?jc(e.slice(4).toLowerCase()):e})}},Fn.decode,Fn.encode,Fn.toASCII,Fn.toUnicode,Fn.ucs2,Fn.version});function Xk(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var U0,ms,j0,Pr,Qk=_t(()=>{we(),_e(),ve(),U0=function(t,e,r,n){e=e||"&",r=r||"=";var s={};if(typeof t!="string"||t.length===0)return s;var i=/\+/g;t=t.split(e);var o=1e3;n&&typeof n.maxKeys=="number"&&(o=n.maxKeys);var a=t.length;o>0&&a>o&&(a=o);for(var l=0;l<a;++l){var u,c,f,d,g=t[l].replace(i,"%20"),m=g.indexOf(r);m>=0?(u=g.substr(0,m),c=g.substr(m+1)):(u=g,c=""),f=decodeURIComponent(u),d=decodeURIComponent(c),Xk(s,f)?Array.isArray(s[f])?s[f].push(d):s[f]=[s[f],d]:s[f]=d}return s},ms=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}},j0=function(t,e,r,n){return e=e||"&",r=r||"=",t===null&&(t=void 0),typeof t=="object"?Object.keys(t).map(function(s){var i=encodeURIComponent(ms(s))+r;return Array.isArray(t[s])?t[s].map(function(o){return i+encodeURIComponent(ms(o))}).join(e):i+encodeURIComponent(ms(t[s]))}).join(e):n?encodeURIComponent(ms(n))+r+encodeURIComponent(ms(t)):""},Pr={},Pr.decode=Pr.parse=U0,Pr.encode=Pr.stringify=j0,Pr.decode,Pr.encode,Pr.parse,Pr.stringify});function Th(){throw new Error("setTimeout has not been defined")}function xh(){throw new Error("clearTimeout has not been defined")}function Y_(t){if(tn===setTimeout)return setTimeout(t,0);if((tn===Th||!tn)&&setTimeout)return tn=setTimeout,setTimeout(t,0);try{return tn(t,0)}catch{try{return tn.call(null,t,0)}catch{return tn.call(this||Ui,t,0)}}}function Jk(){ji&&Ri&&(ji=!1,Ri.length?Fr=Ri.concat(Fr):Go=-1,Fr.length&&G_())}function G_(){if(!ji){var t=Y_(Jk);ji=!0;for(var e=Fr.length;e;){for(Ri=Fr,Fr=[];++Go<e;)Ri&&Ri[Go].run();Go=-1,e=Fr.length}Ri=null,ji=!1,function(r){if(rn===clearTimeout)return clearTimeout(r);if((rn===xh||!rn)&&clearTimeout)return rn=clearTimeout,clearTimeout(r);try{rn(r)}catch{try{return rn.call(null,r)}catch{return rn.call(this||Ui,r)}}}(t)}}function W0(t,e){(this||Ui).fun=t,(this||Ui).array=e}function Qr(){}var z0,tn,rn,Ui,st,Ri,Fr,ji,Go,it,Zk=_t(()=>{we(),_e(),ve(),Ui=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Vi,st=z0={},function(){try{tn=typeof setTimeout=="function"?setTimeout:Th}catch{tn=Th}try{rn=typeof clearTimeout=="function"?clearTimeout:xh}catch{rn=xh}}(),Fr=[],ji=!1,Go=-1,st.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];Fr.push(new W0(t,e)),Fr.length!==1||ji||Y_(G_)},W0.prototype.run=function(){(this||Ui).fun.apply(null,(this||Ui).array)},st.title="browser",st.browser=!0,st.env={},st.argv=[],st.version="",st.versions={},st.on=Qr,st.addListener=Qr,st.once=Qr,st.off=Qr,st.removeListener=Qr,st.removeAllListeners=Qr,st.emit=Qr,st.prependListener=Qr,st.prependOnceListener=Qr,st.listeners=function(t){return[]},st.binding=function(t){throw new Error("process.binding is not supported")},st.cwd=function(){return"/"},st.chdir=function(t){throw new Error("process.chdir is not supported")},st.umask=function(){return 0},it=z0,it.addListener,it.argv,it.binding,it.browser,it.chdir,it.cwd,it.emit,it.env,it.listeners,it.nextTick,it.off,it.on,it.once,it.prependListener,it.prependOnceListener,it.removeAllListeners,it.removeListener,it.title,it.umask,it.version,it.versions});function eL(){if(Ah)return Tl;Ah=!0;var t=Tl={},e,r;function n(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?e=setTimeout:e=n}catch{e=n}try{typeof clearTimeout=="function"?r=clearTimeout:r=s}catch{r=s}})();function i(y){if(e===setTimeout)return setTimeout(y,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(y,0);try{return e(y,0)}catch{try{return e.call(null,y,0)}catch{return e.call(this||Si,y,0)}}}function o(y){if(r===clearTimeout)return clearTimeout(y);if((r===s||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(y);try{return r(y)}catch{try{return r.call(null,y)}catch{return r.call(this||Si,y)}}}var a=[],l=!1,u,c=-1;function f(){!l||!u||(l=!1,u.length?a=u.concat(a):c=-1,a.length&&d())}function d(){if(!l){var y=i(f);l=!0;for(var _=a.length;_;){for(u=a,a=[];++c<_;)u&&u[c].run();c=-1,_=a.length}u=null,l=!1,o(y)}}t.nextTick=function(y){var _=new Array(arguments.length-1);if(arguments.length>1)for(var S=1;S<arguments.length;S++)_[S-1]=arguments[S];a.push(new g(y,_)),a.length===1&&!l&&i(d)};function g(y,_){(this||Si).fun=y,(this||Si).array=_}g.prototype.run=function(){(this||Si).fun.apply(null,(this||Si).array)},t.title="browser",t.browser=!0,t.env={},t.argv=[],t.version="",t.versions={};function m(){}return t.on=m,t.addListener=m,t.once=m,t.off=m,t.removeListener=m,t.removeAllListeners=m,t.emit=m,t.prependListener=m,t.prependOnceListener=m,t.listeners=function(y){return[]},t.binding=function(y){throw new Error("process.binding is not supported")},t.cwd=function(){return"/"},t.chdir=function(y){throw new Error("process.chdir is not supported")},t.umask=function(){return 0},Tl}var Tl,Ah,Si,et,K_=_t(()=>{we(),_e(),ve(),Tl={},Ah=!1,Si=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Vi,et=eL(),et.platform="browser",et.addListener,et.argv,et.binding,et.browser,et.chdir,et.cwd,et.emit,et.env,et.listeners,et.nextTick,et.off,et.on,et.once,et.prependListener,et.prependOnceListener,et.removeAllListeners,et.removeListener,et.title,et.umask,et.version,et.versions});function tL(){if(Ch)return xl;Ch=!0;var t=et;function e(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,o){for(var a="",l=0,u=-1,c=0,f,d=0;d<=i.length;++d){if(d<i.length)f=i.charCodeAt(d);else{if(f===47)break;f=47}if(f===47){if(!(u===d-1||c===1))if(u!==d-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var g=a.lastIndexOf("/");if(g!==a.length-1){g===-1?(a="",l=0):(a=a.slice(0,g),l=a.length-1-a.lastIndexOf("/")),u=d,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=d,c=0;continue}}o&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,d):a=i.slice(u+1,d),l=d-u-1;u=d,c=0}else f===46&&c!==-1?++c:c=-1}return a}function n(i,o){var a=o.dir||o.root,l=o.base||(o.name||"")+(o.ext||"");return a?a===o.root?a+l:a+i+l:l}var s={resolve:function(){for(var i="",o=!1,a,l=arguments.length-1;l>=-1&&!o;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=t.cwd()),u=a),e(u),u.length!==0&&(i=u+"/"+i,o=u.charCodeAt(0)===47)}return i=r(i,!o),o?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(e(i),i.length===0)return".";var o=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!o),i.length===0&&!o&&(i="."),i.length>0&&a&&(i+="/"),o?"/"+i:i},isAbsolute:function(i){return e(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,o=0;o<arguments.length;++o){var a=arguments[o];e(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":s.normalize(i)},relative:function(i,o){if(e(i),e(o),i===o||(i=s.resolve(i),o=s.resolve(o),i===o))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<o.length&&o.charCodeAt(c)===47;++c);for(var f=o.length,d=f-c,g=u<d?u:d,m=-1,y=0;y<=g;++y){if(y===g){if(d>g){if(o.charCodeAt(c+y)===47)return o.slice(c+y+1);if(y===0)return o.slice(c+y)}else u>g&&(i.charCodeAt(a+y)===47?m=y:y===0&&(m=0));break}var _=i.charCodeAt(a+y),S=o.charCodeAt(c+y);if(_!==S)break;_===47&&(m=y)}var E="";for(y=a+m+1;y<=l;++y)(y===l||i.charCodeAt(y)===47)&&(E.length===0?E+="..":E+="/..");return E.length>0?E+o.slice(c+m):(c+=m,o.charCodeAt(c)===47&&++c,o.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(e(i),i.length===0)return".";for(var o=i.charCodeAt(0),a=o===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(o=i.charCodeAt(c),o===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,o){if(o!==void 0&&typeof o!="string")throw new TypeError('"ext" argument must be a string');e(i);var a=0,l=-1,u=!0,c;if(o!==void 0&&o.length>0&&o.length<=i.length){if(o.length===i.length&&o===i)return"";var f=o.length-1,d=-1;for(c=i.length-1;c>=0;--c){var g=i.charCodeAt(c);if(g===47){if(!u){a=c+1;break}}else d===-1&&(u=!1,d=c+1),f>=0&&(g===o.charCodeAt(f)?--f===-1&&(l=c):(f=-1,l=d))}return a===l?l=d:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){e(i);for(var o=-1,a=0,l=-1,u=!0,c=0,f=i.length-1;f>=0;--f){var d=i.charCodeAt(f);if(d===47){if(!u){a=f+1;break}continue}l===-1&&(u=!1,l=f+1),d===46?o===-1?o=f:c!==1&&(c=1):o!==-1&&(c=-1)}return o===-1||l===-1||c===0||c===1&&o===l-1&&o===a+1?"":i.slice(o,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){e(i);var o={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return o;var a=i.charCodeAt(0),l=a===47,u;l?(o.root="/",u=1):u=0;for(var c=-1,f=0,d=-1,g=!0,m=i.length-1,y=0;m>=u;--m){if(a=i.charCodeAt(m),a===47){if(!g){f=m+1;break}continue}d===-1&&(g=!1,d=m+1),a===46?c===-1?c=m:y!==1&&(y=1):c!==-1&&(y=-1)}return c===-1||d===-1||y===0||y===1&&c===d-1&&c===f+1?d!==-1&&(f===0&&l?o.base=o.name=i.slice(1,d):o.base=o.name=i.slice(f,d)):(f===0&&l?(o.name=i.slice(1,c),o.base=i.slice(1,d)):(o.name=i.slice(f,c),o.base=i.slice(f,d)),o.ext=i.slice(c,d)),f>0?o.dir=i.slice(0,f-1):l&&(o.dir="/"),o},sep:"/",delimiter:":",win32:null,posix:null};return s.posix=s,xl=s,xl}var xl,Ch,Ih,rL=_t(()=>{we(),_e(),ve(),K_(),xl={},Ch=!1,Ih=tL()}),X_={};rs(X_,{URL:()=>pE,Url:()=>uE,default:()=>qe,fileURLToPath:()=>Q_,format:()=>cE,parse:()=>hE,pathToFileURL:()=>J_,resolve:()=>fE,resolveObject:()=>dE});function sr(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function Co(t,e,r){if(t&&br.isObject(t)&&t instanceof sr)return t;var n=new sr;return n.parse(t,e,r),n}function nL(){if(Mh)return Al;Mh=!0;var t=it;function e(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,o){for(var a="",l=0,u=-1,c=0,f,d=0;d<=i.length;++d){if(d<i.length)f=i.charCodeAt(d);else{if(f===47)break;f=47}if(f===47){if(!(u===d-1||c===1))if(u!==d-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var g=a.lastIndexOf("/");if(g!==a.length-1){g===-1?(a="",l=0):(a=a.slice(0,g),l=a.length-1-a.lastIndexOf("/")),u=d,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=d,c=0;continue}}o&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,d):a=i.slice(u+1,d),l=d-u-1;u=d,c=0}else f===46&&c!==-1?++c:c=-1}return a}function n(i,o){var a=o.dir||o.root,l=o.base||(o.name||"")+(o.ext||"");return a?a===o.root?a+l:a+i+l:l}var s={resolve:function(){for(var i="",o=!1,a,l=arguments.length-1;l>=-1&&!o;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=t.cwd()),u=a),e(u),u.length!==0&&(i=u+"/"+i,o=u.charCodeAt(0)===47)}return i=r(i,!o),o?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(e(i),i.length===0)return".";var o=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!o),i.length===0&&!o&&(i="."),i.length>0&&a&&(i+="/"),o?"/"+i:i},isAbsolute:function(i){return e(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,o=0;o<arguments.length;++o){var a=arguments[o];e(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":s.normalize(i)},relative:function(i,o){if(e(i),e(o),i===o||(i=s.resolve(i),o=s.resolve(o),i===o))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<o.length&&o.charCodeAt(c)===47;++c);for(var f=o.length,d=f-c,g=u<d?u:d,m=-1,y=0;y<=g;++y){if(y===g){if(d>g){if(o.charCodeAt(c+y)===47)return o.slice(c+y+1);if(y===0)return o.slice(c+y)}else u>g&&(i.charCodeAt(a+y)===47?m=y:y===0&&(m=0));break}var _=i.charCodeAt(a+y),S=o.charCodeAt(c+y);if(_!==S)break;_===47&&(m=y)}var E="";for(y=a+m+1;y<=l;++y)(y===l||i.charCodeAt(y)===47)&&(E.length===0?E+="..":E+="/..");return E.length>0?E+o.slice(c+m):(c+=m,o.charCodeAt(c)===47&&++c,o.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(e(i),i.length===0)return".";for(var o=i.charCodeAt(0),a=o===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(o=i.charCodeAt(c),o===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,o){if(o!==void 0&&typeof o!="string")throw new TypeError('"ext" argument must be a string');e(i);var a=0,l=-1,u=!0,c;if(o!==void 0&&o.length>0&&o.length<=i.length){if(o.length===i.length&&o===i)return"";var f=o.length-1,d=-1;for(c=i.length-1;c>=0;--c){var g=i.charCodeAt(c);if(g===47){if(!u){a=c+1;break}}else d===-1&&(u=!1,d=c+1),f>=0&&(g===o.charCodeAt(f)?--f===-1&&(l=c):(f=-1,l=d))}return a===l?l=d:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){e(i);for(var o=-1,a=0,l=-1,u=!0,c=0,f=i.length-1;f>=0;--f){var d=i.charCodeAt(f);if(d===47){if(!u){a=f+1;break}continue}l===-1&&(u=!1,l=f+1),d===46?o===-1?o=f:c!==1&&(c=1):o!==-1&&(c=-1)}return o===-1||l===-1||c===0||c===1&&o===l-1&&o===a+1?"":i.slice(o,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){e(i);var o={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return o;var a=i.charCodeAt(0),l=a===47,u;l?(o.root="/",u=1):u=0;for(var c=-1,f=0,d=-1,g=!0,m=i.length-1,y=0;m>=u;--m){if(a=i.charCodeAt(m),a===47){if(!g){f=m+1;break}continue}d===-1&&(g=!1,d=m+1),a===46?c===-1?c=m:y!==1&&(y=1):c!==-1&&(y=-1)}return c===-1||d===-1||y===0||y===1&&c===d-1&&c===f+1?d!==-1&&(f===0&&l?o.base=o.name=i.slice(1,d):o.base=o.name=i.slice(f,d)):(f===0&&l?(o.name=i.slice(1,c),o.base=i.slice(1,d)):(o.name=i.slice(f,c),o.base=i.slice(f,d)),o.ext=i.slice(c,d)),f>0?o.dir=i.slice(0,f-1):l&&(o.dir="/"),o},sep:"/",delimiter:":",win32:null,posix:null};return s.posix=s,Al=s,Al}function iL(t){if(typeof t=="string")t=new URL(t);else if(!(t instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(t.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return iu?sL(t):oL(t)}function sL(t){let e=t.hostname,r=t.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let s=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&s===102||r[n+1]==="5"&&s===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(nE,"\\"),r=decodeURIComponent(r),e!=="")return`\\\\${e}${r}`;{let n=r.codePointAt(1)|32,s=r[2];if(n<tE||n>rE||s!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function oL(t){if(t.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let e=t.pathname;for(let r=0;r<e.length;r++)if(e[r]==="%"){let n=e.codePointAt(r+2)||32;if(e[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(e)}function aL(t){let e=Oh.resolve(t),r=t.charCodeAt(t.length-1);(r===eE||iu&&r===Z_)&&e[e.length-1]!==Oh.sep&&(e+="/");let n=new URL("file://");return e.includes("%")&&(e=e.replace(iE,"%25")),!iu&&e.includes("\\")&&(e=e.replace(sE,"%5C")),e.includes(`
+`)&&(e=e.replace(oE,"%0A")),e.includes("\r")&&(e=e.replace(aE,"%0D")),e.includes("	")&&(e=e.replace(lE,"%09")),n.pathname=e,n}function Q_(t){if(typeof t=="string")t=new URL(t);else if(!(t instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(t.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return su?lL(t):uL(t)}function lL(t){let e=t.hostname,r=t.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let s=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&s===102||r[n+1]==="5"&&s===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(wE,"\\"),r=decodeURIComponent(r),e!=="")return`\\\\${e}${r}`;{let n=r.codePointAt(1)|32,s=r[2];if(n<bE||n>yE||s!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function uL(t){if(t.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let e=t.pathname;for(let r=0;r<e.length;r++)if(e[r]==="%"){let n=e.codePointAt(r+2)||32;if(e[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(e)}function J_(t){let e=Ih.resolve(t),r=t.charCodeAt(t.length-1);(r===mE||su&&r===gE)&&e[e.length-1]!==Ih.sep&&(e+="/");let n=new URL("file://");return e.includes("%")&&(e=e.replace(vE,"%25")),!su&&e.includes("\\")&&(e=e.replace(_E,"%5C")),e.includes(`
+`)&&(e=e.replace(EE,"%0A")),e.includes("\r")&&(e=e.replace(SE,"%0D")),e.includes("	")&&(e=e.replace(TE,"%09")),n.pathname=e,n}var qe,H0,br,V0,q0,Y0,G0,Ha,zc,Hc,Vc,K0,X0,Va,vi,qa,Al,Mh,Oh,Q0,Z_,eE,tE,rE,iu,nE,iE,sE,oE,aE,lE,J0,uE,cE,fE,dE,hE,pE,gE,mE,bE,yE,su,wE,vE,_E,EE,SE,TE,cL=_t(()=>{we(),_e(),ve(),Kk(),Qk(),Zk(),rL(),K_(),qe={},H0=Fn,br={isString:function(t){return typeof t=="string"},isObject:function(t){return typeof t=="object"&&t!==null},isNull:function(t){return t===null},isNullOrUndefined:function(t){return t==null}},qe.parse=Co,qe.resolve=function(t,e){return Co(t,!1,!0).resolve(e)},qe.resolveObject=function(t,e){return t?Co(t,!1,!0).resolveObject(e):e},qe.format=function(t){return br.isString(t)&&(t=Co(t)),t instanceof sr?t.format():sr.prototype.format.call(t)},qe.Url=sr,V0=/^([a-z0-9.+-]+:)/i,q0=/:[0-9]*$/,Y0=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,G0=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r",`
+`,"	"]),Ha=["'"].concat(G0),zc=["%","/","?",";","#"].concat(Ha),Hc=["/","?","#"],Vc=/^[+a-z0-9A-Z_-]{0,63}$/,K0=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,X0={javascript:!0,"javascript:":!0},Va={javascript:!0,"javascript:":!0},vi={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},qa=Pr,sr.prototype.parse=function(t,e,r){if(!br.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var n=t.indexOf("?"),s=n!==-1&&n<t.indexOf("#")?"?":"#",i=t.split(s);i[0]=i[0].replace(/\\/g,"/");var o=t=i.join(s);if(o=o.trim(),!r&&t.split("#").length===1){var a=Y0.exec(o);if(a)return this.path=o,this.href=o,this.pathname=a[1],a[2]?(this.search=a[2],this.query=e?qa.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var l=V0.exec(o);if(l){var u=(l=l[0]).toLowerCase();this.protocol=u,o=o.substr(l.length)}if(r||l||o.match(/^\/\/[^@\/]+@[^@\/]+/)){var c=o.substr(0,2)==="//";!c||l&&Va[l]||(o=o.substr(2),this.slashes=!0)}if(!Va[l]&&(c||l&&!vi[l])){for(var f,d,g=-1,m=0;m<Hc.length;m++)(y=o.indexOf(Hc[m]))!==-1&&(g===-1||y<g)&&(g=y);for((d=g===-1?o.lastIndexOf("@"):o.lastIndexOf("@",g))!==-1&&(f=o.slice(0,d),o=o.slice(d+1),this.auth=decodeURIComponent(f)),g=-1,m=0;m<zc.length;m++){var y;(y=o.indexOf(zc[m]))!==-1&&(g===-1||y<g)&&(g=y)}g===-1&&(g=o.length),this.host=o.slice(0,g),o=o.slice(g),this.parseHost(),this.hostname=this.hostname||"";var _=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!_)for(var S=this.hostname.split(/\./),E=(m=0,S.length);m<E;m++){var v=S[m];if(v&&!v.match(Vc)){for(var x="",M=0,A=v.length;M<A;M++)v.charCodeAt(M)>127?x+="x":x+=v[M];if(!x.match(Vc)){var L=S.slice(0,m),D=S.slice(m+1),B=v.match(K0);B&&(L.push(B[1]),D.unshift(B[2])),D.length&&(o="/"+D.join(".")+o),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),_||(this.hostname=H0.toASCII(this.hostname));var q=this.port?":"+this.port:"",Y=this.hostname||"";this.host=Y+q,this.href+=this.host,_&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),o[0]!=="/"&&(o="/"+o))}if(!X0[u])for(m=0,E=Ha.length;m<E;m++){var R=Ha[m];if(o.indexOf(R)!==-1){var I=encodeURIComponent(R);I===R&&(I=escape(R)),o=o.split(R).join(I)}}var N=o.indexOf("#");N!==-1&&(this.hash=o.substr(N),o=o.slice(0,N));var W=o.indexOf("?");if(W!==-1?(this.search=o.substr(W),this.query=o.substr(W+1),e&&(this.query=qa.parse(this.query)),o=o.slice(0,W)):e&&(this.search="",this.query={}),o&&(this.pathname=o),vi[u]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){q=this.pathname||"";var G=this.search||"";this.path=q+G}return this.href=this.format(),this},sr.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",r=this.pathname||"",n=this.hash||"",s=!1,i="";this.host?s=t+this.host:this.hostname&&(s=t+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(s+=":"+this.port)),this.query&&br.isObject(this.query)&&Object.keys(this.query).length&&(i=qa.stringify(this.query));var o=this.search||i&&"?"+i||"";return e&&e.substr(-1)!==":"&&(e+=":"),this.slashes||(!e||vi[e])&&s!==!1?(s="//"+(s||""),r&&r.charAt(0)!=="/"&&(r="/"+r)):s||(s=""),n&&n.charAt(0)!=="#"&&(n="#"+n),o&&o.charAt(0)!=="?"&&(o="?"+o),e+s+(r=r.replace(/[?#]/g,function(a){return encodeURIComponent(a)}))+(o=o.replace("#","%23"))+n},sr.prototype.resolve=function(t){return this.resolveObject(Co(t,!1,!0)).format()},sr.prototype.resolveObject=function(t){if(br.isString(t)){var e=new sr;e.parse(t,!1,!0),t=e}for(var r=new sr,n=Object.keys(this),s=0;s<n.length;s++){var i=n[s];r[i]=this[i]}if(r.hash=t.hash,t.href==="")return r.href=r.format(),r;if(t.slashes&&!t.protocol){for(var o=Object.keys(t),a=0;a<o.length;a++){var l=o[a];l!=="protocol"&&(r[l]=t[l])}return vi[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(t.protocol&&t.protocol!==r.protocol){if(!vi[t.protocol]){for(var u=Object.keys(t),c=0;c<u.length;c++){var f=u[c];r[f]=t[f]}return r.href=r.format(),r}if(r.protocol=t.protocol,t.host||Va[t.protocol])r.pathname=t.pathname;else{for(var d=(t.pathname||"").split("/");d.length&&!(t.host=d.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),d[0]!==""&&d.unshift(""),d.length<2&&d.unshift(""),r.pathname=d.join("/")}if(r.search=t.search,r.query=t.query,r.host=t.host||"",r.auth=t.auth,r.hostname=t.hostname||t.host,r.port=t.port,r.pathname||r.search){var g=r.pathname||"",m=r.search||"";r.path=g+m}return r.slashes=r.slashes||t.slashes,r.href=r.format(),r}var y=r.pathname&&r.pathname.charAt(0)==="/",_=t.host||t.pathname&&t.pathname.charAt(0)==="/",S=_||y||r.host&&t.pathname,E=S,v=r.pathname&&r.pathname.split("/")||[],x=(d=t.pathname&&t.pathname.split("/")||[],r.protocol&&!vi[r.protocol]);if(x&&(r.hostname="",r.port=null,r.host&&(v[0]===""?v[0]=r.host:v.unshift(r.host)),r.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(d[0]===""?d[0]=t.host:d.unshift(t.host)),t.host=null),S=S&&(d[0]===""||v[0]==="")),_)r.host=t.host||t.host===""?t.host:r.host,r.hostname=t.hostname||t.hostname===""?t.hostname:r.hostname,r.search=t.search,r.query=t.query,v=d;else if(d.length)v||(v=[]),v.pop(),v=v.concat(d),r.search=t.search,r.query=t.query;else if(!br.isNullOrUndefined(t.search))return x&&(r.hostname=r.host=v.shift(),(B=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=B.shift(),r.host=r.hostname=B.shift())),r.search=t.search,r.query=t.query,br.isNull(r.pathname)&&br.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!v.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var M=v.slice(-1)[0],A=(r.host||t.host||v.length>1)&&(M==="."||M==="..")||M==="",L=0,D=v.length;D>=0;D--)(M=v[D])==="."?v.splice(D,1):M===".."?(v.splice(D,1),L++):L&&(v.splice(D,1),L--);if(!S&&!E)for(;L--;L)v.unshift("..");!S||v[0]===""||v[0]&&v[0].charAt(0)==="/"||v.unshift(""),A&&v.join("/").substr(-1)!=="/"&&v.push("");var B,q=v[0]===""||v[0]&&v[0].charAt(0)==="/";return x&&(r.hostname=r.host=q?"":v.length?v.shift():"",(B=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=B.shift(),r.host=r.hostname=B.shift())),(S=S||r.host&&v.length)&&!q&&v.unshift(""),v.length?r.pathname=v.join("/"):(r.pathname=null,r.path=null),br.isNull(r.pathname)&&br.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},sr.prototype.parseHost=function(){var t=this.host,e=q0.exec(t);e&&((e=e[0])!==":"&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},qe.Url,qe.format,qe.resolve,qe.resolveObject,Al={},Mh=!1,Oh=nL(),Q0=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=aL,qe.fileURLToPath=iL,qe.Url,qe.format,qe.resolve,qe.resolveObject,qe.URL,Z_=92,eE=47,tE=97,rE=122,iu=Q0==="win32",nE=/\//g,iE=/%/g,sE=/\\/g,oE=/\n/g,aE=/\r/g,lE=/\t/g,J0=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=J_,qe.fileURLToPath=Q_,uE=qe.Url,cE=qe.format,fE=qe.resolve,dE=qe.resolveObject,hE=qe.parse,pE=qe.URL,gE=92,mE=47,bE=97,yE=122,su=J0==="win32",wE=/\//g,vE=/%/g,_E=/\\/g,EE=/\n/g,SE=/\r/g,TE=/\t/g}),fL=Te((t,e)=>{we(),_e(),ve(),e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),ig=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0}),t.BufferedDuplex=t.writev=void 0;var e=ss(),r=(St(),Ke(Et));function n(i,o){let a=new Array(i.length);for(let l=0;l<i.length;l++)typeof i[l].chunk=="string"?a[l]=r.Buffer.from(i[l].chunk,"utf8"):a[l]=i[l].chunk;this._write(r.Buffer.concat(a),"binary",o)}t.writev=n;var s=class extends e.Duplex{constructor(i,o,a){super({objectMode:!0}),this.proxy=o,this.socket=a,this.writeQueue=[],i.objectMode||(this._writev=n.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",l=>{this.destroyed||this.push(l)})}_read(i){this.proxy.read(i)}_write(i,o,a){this.isSocketOpen?this.writeToProxy(i,o,a):this.writeQueue.push({chunk:i,encoding:o,cb:a})}_final(i){this.writeQueue=[],this.proxy.end(i)}_destroy(i,o){this.writeQueue=[],this.proxy.destroy(),o(i)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(i,o,a){this.proxy.write(i,o)===!1?this.proxy.once("drain",a):a()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:i,encoding:o,cb:a}=this.writeQueue.shift();this.writeToProxy(i,o,a)}}};t.BufferedDuplex=s}),Ya=Te(t=>{we(),_e(),ve();var e=t&&t.__importDefault||function(S){return S&&S.__esModule?S:{default:S}};Object.defineProperty(t,"__esModule",{value:!0}),t.streamBuilder=t.browserStreamBuilder=void 0;var r=(St(),Ke(Et)),n=e(fL()),s=e(Sn()),i=ss(),o=e(Fu()),a=ig(),l=(0,s.default)("mqttjs:ws"),u=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function c(S,E){let v=`${S.protocol}://${S.hostname}:${S.port}${S.path}`;return typeof S.transformWsUrl=="function"&&(v=S.transformWsUrl(v,S,E)),v}function f(S){let E=S;return S.port||(S.protocol==="wss"?E.port=443:E.port=80),S.path||(E.path="/"),S.wsOptions||(E.wsOptions={}),!o.default&&!S.forceNativeWebSocket&&S.protocol==="wss"&&u.forEach(v=>{Object.prototype.hasOwnProperty.call(S,v)&&!Object.prototype.hasOwnProperty.call(S.wsOptions,v)&&(E.wsOptions[v]=S[v])}),E}function d(S){let E=f(S);if(E.hostname||(E.hostname=E.host),!E.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let v=new URL(document.URL);E.hostname=v.hostname,E.port||(E.port=Number(v.port))}return E.objectMode===void 0&&(E.objectMode=!(E.binary===!0||E.binary===void 0)),E}function g(S,E,v){l("createWebSocket"),l(`protocol: ${v.protocolId} ${v.protocolVersion}`);let x=v.protocolId==="MQIsdp"&&v.protocolVersion===3?"mqttv3.1":"mqtt";l(`creating new Websocket for url: ${E} and protocol: ${x}`);let M;return v.createWebsocket?M=v.createWebsocket(E,[x],v):M=new n.default(E,[x],v.wsOptions),M}function m(S,E){let v=E.protocolId==="MQIsdp"&&E.protocolVersion===3?"mqttv3.1":"mqtt",x=c(E,S),M;return E.createWebsocket?M=E.createWebsocket(x,[v],E):M=new WebSocket(x,[v]),M.binaryType="arraybuffer",M}var y=(S,E)=>{l("streamBuilder");let v=f(E);v.hostname=v.hostname||v.host||"localhost";let x=c(v,S),M=g(S,x,v),A=n.default.createWebSocketStream(M,v.wsOptions);return A.url=x,M.on("close",()=>{A.destroy()}),A};t.streamBuilder=y;var _=(S,E)=>{l("browserStreamBuilder");let v,x=d(E).browserBufferSize||1024*512,M=E.browserBufferTimeout||1e3,A=!E.objectMode,L=m(S,E),D=q(E,W,G);E.objectMode||(D._writev=a.writev.bind(D)),D.on("close",()=>{L.close()});let B=typeof L.addEventListener<"u";L.readyState===L.OPEN?(v=D,v.socket=L):(v=new a.BufferedDuplex(E,D,L),B?L.addEventListener("open",Y):L.onopen=Y),B?(L.addEventListener("close",R),L.addEventListener("error",I),L.addEventListener("message",N)):(L.onclose=R,L.onerror=I,L.onmessage=N);function q(H,$,ne){let ue=new i.Transform({objectMode:H.objectMode});return ue._write=$,ue._flush=ne,ue}function Y(){l("WebSocket onOpen"),v instanceof a.BufferedDuplex&&v.socketReady()}function R(H){l("WebSocket onClose",H),v.end(),v.destroy()}function I(H){l("WebSocket onError",H);let $=new Error("WebSocket error");$.event=H,v.destroy($)}async function N(H){let{data:$}=H;$ instanceof ArrayBuffer?$=r.Buffer.from($):$ instanceof Blob?$=r.Buffer.from(await new Response($).arrayBuffer()):$=r.Buffer.from($,"utf8"),D&&!D.destroyed&&D.push($)}function W(H,$,ne){if(L.bufferedAmount>x){setTimeout(W,M,H,$,ne);return}A&&typeof H=="string"&&(H=r.Buffer.from(H,"utf8"));try{L.send(H)}catch(ue){return ne(ue)}ne()}function G(H){L.close(),H()}return v};t.browserStreamBuilder=_}),sg={};rs(sg,{Server:()=>tt,Socket:()=>tt,Stream:()=>tt,_createServerHandle:()=>tt,_normalizeArgs:()=>tt,_setSimultaneousAccepts:()=>tt,connect:()=>tt,createConnection:()=>tt,createServer:()=>tt,default:()=>xE,isIP:()=>tt,isIPv4:()=>tt,isIPv6:()=>tt});function tt(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var xE,AE=_t(()=>{we(),_e(),ve(),xE={_createServerHandle:tt,_normalizeArgs:tt,_setSimultaneousAccepts:tt,connect:tt,createConnection:tt,createServer:tt,isIP:tt,isIPv4:tt,isIPv6:tt,Server:tt,Socket:tt,Stream:tt}}),Z0=Te(t=>{we(),_e(),ve();var e=t&&t.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(t,"__esModule",{value:!0});var r=e((AE(),Ke(sg))),n=e(Sn()),s=(0,n.default)("mqttjs:tcp"),i=(o,a)=>{a.port=a.port||1883,a.hostname=a.hostname||a.host||"localhost";let{port:l,path:u}=a,c=a.hostname;return s("port %d and host %s",l,c),r.default.createConnection({port:l,host:c,path:u})};t.default=i}),CE={};rs(CE,{default:()=>IE});var IE,dL=_t(()=>{we(),_e(),ve(),IE={}}),eb=Te(t=>{we(),_e(),ve();var e=t&&t.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(t,"__esModule",{value:!0});var r=e((dL(),Ke(CE))),n=e((AE(),Ke(sg))),s=e(Sn()),i=(0,s.default)("mqttjs:tls"),o=(a,l)=>{l.port=l.port||8883,l.host=l.hostname||l.host||"localhost",n.default.isIP(l.host)===0&&(l.servername=l.host),l.rejectUnauthorized=l.rejectUnauthorized!==!1,delete l.path,i("port %d host %s rejectUnauthorized %b",l.port,l.host,l.rejectUnauthorized);let u=r.default.connect(l);u.on("secureConnect",()=>{l.rejectUnauthorized&&!u.authorized?u.emit("error",new Error("TLS not authorized")):u.removeListener("error",c)});function c(f){l.rejectUnauthorized&&a.emit("error",f),u.end()}return u.on("error",c),u};t.default=o}),tb=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0});var e=(St(),Ke(Et)),r=ss(),n=ig(),s,i,o;function a(){let d=new r.Transform;return d._write=(g,m,y)=>{s.send({data:g.buffer,success(){y()},fail(_){y(new Error(_))}})},d._flush=g=>{s.close({success(){g()}})},d}function l(d){d.hostname||(d.hostname="localhost"),d.path||(d.path="/"),d.wsOptions||(d.wsOptions={})}function u(d,g){let m=d.protocol==="wxs"?"wss":"ws",y=`${m}://${d.hostname}${d.path}`;return d.port&&d.port!==80&&d.port!==443&&(y=`${m}://${d.hostname}:${d.port}${d.path}`),typeof d.transformWsUrl=="function"&&(y=d.transformWsUrl(y,d,g)),y}function c(){s.onOpen(()=>{o.socketReady()}),s.onMessage(d=>{let{data:g}=d;g instanceof ArrayBuffer?g=e.Buffer.from(g):g=e.Buffer.from(g,"utf8"),i.push(g)}),s.onClose(()=>{o.emit("close"),o.end(),o.destroy()}),s.onError(d=>{let g=new Error(d.errMsg);o.destroy(g)})}var f=(d,g)=>{if(g.hostname=g.hostname||g.host,!g.hostname)throw new Error("Could not determine host. Specify host manually.");let m=g.protocolId==="MQIsdp"&&g.protocolVersion===3?"mqttv3.1":"mqtt";l(g);let y=u(g,d);s=wx.connectSocket({url:y,protocols:[m]}),i=a(),o=new n.BufferedDuplex(g,i,s),o._destroy=(S,E)=>{s.close({success(){E&&E(S)}})};let _=o.destroy;return o.destroy=(S,E)=>(o.destroy=_,setTimeout(()=>{s.close({fail(){o._destroy(S,E)}})},0),o),c(),o};t.default=f}),rb=Te(t=>{we(),_e(),ve(),Object.defineProperty(t,"__esModule",{value:!0});var e=(St(),Ke(Et)),r=ss(),n=ig(),s,i,o,a=!1;function l(){let g=new r.Transform;return g._write=(m,y,_)=>{s.sendSocketMessage({data:m.buffer,success(){_()},fail(){_(new Error)}})},g._flush=m=>{s.closeSocket({success(){m()}})},g}function u(g){g.hostname||(g.hostname="localhost"),g.path||(g.path="/"),g.wsOptions||(g.wsOptions={})}function c(g,m){let y=g.protocol==="alis"?"wss":"ws",_=`${y}://${g.hostname}${g.path}`;return g.port&&g.port!==80&&g.port!==443&&(_=`${y}://${g.hostname}:${g.port}${g.path}`),typeof g.transformWsUrl=="function"&&(_=g.transformWsUrl(_,g,m)),_}function f(){a||(a=!0,s.onSocketOpen(()=>{o.socketReady()}),s.onSocketMessage(g=>{if(typeof g.data=="string"){let m=e.Buffer.from(g.data,"base64");i.push(m)}else{let m=new FileReader;m.addEventListener("load",()=>{let y=m.result;y instanceof ArrayBuffer?y=e.Buffer.from(y):y=e.Buffer.from(y,"utf8"),i.push(y)}),m.readAsArrayBuffer(g.data)}}),s.onSocketClose(()=>{o.end(),o.destroy()}),s.onSocketError(g=>{o.destroy(g)}))}var d=(g,m)=>{if(m.hostname=m.hostname||m.host,!m.hostname)throw new Error("Could not determine host. Specify host manually.");let y=m.protocolId==="MQIsdp"&&m.protocolVersion===3?"mqttv3.1":"mqtt";u(m);let _=c(m,g);return s=m.my,s.connectSocket({url:_,protocols:y}),i=l(),o=new n.BufferedDuplex(m,i,s),f(),o};t.default=d}),hL=Te(t=>{we(),_e(),ve();var e=t&&t.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(t,"__esModule",{value:!0}),t.connectAsync=void 0;var r=e(Sn()),n=e((cL(),Ke(X_))),s=e(Eh()),i=e(Fu());typeof(ze==null?void 0:ze.nextTick)!="function"&&(ze.nextTick=setImmediate);var o=(0,r.default)("mqttjs"),a=null;function l(f){let d;f.auth&&(d=f.auth.match(/^(.+):(.+)$/),d?(f.username=d[1],f.password=d[2]):f.username=f.auth)}function u(f,d){var g,m,y,_;if(o("connecting to an MQTT broker..."),typeof f=="object"&&!d&&(d=f,f=""),d=d||{},f&&typeof f=="string"){let v=n.default.parse(f,!0),x={};if(v.port!=null&&(x.port=Number(v.port)),x.host=v.hostname,x.query=v.query,x.auth=v.auth,x.protocol=v.protocol,x.path=v.path,x.protocol=(g=x.protocol)===null||g===void 0?void 0:g.replace(/:$/,""),d=Object.assign(Object.assign({},x),d),!d.protocol)throw new Error("Missing protocol")}if(d.unixSocket=d.unixSocket||((m=d.protocol)===null||m===void 0?void 0:m.includes("+unix")),d.unixSocket?d.protocol=d.protocol.replace("+unix",""):!(!((y=d.protocol)===null||y===void 0)&&y.startsWith("ws"))&&!(!((_=d.protocol)===null||_===void 0)&&_.startsWith("wx"))&&delete d.path,l(d),d.query&&typeof d.query.clientId=="string"&&(d.clientId=d.query.clientId),d.cert&&d.key)if(d.protocol){if(["mqtts","wss","wxs","alis"].indexOf(d.protocol)===-1)switch(d.protocol){case"mqtt":d.protocol="mqtts";break;case"ws":d.protocol="wss";break;case"wx":d.protocol="wxs";break;case"ali":d.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${d.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(a||(a={},!i.default&&!d.forceNativeWebSocket?(a.ws=Ya().streamBuilder,a.wss=Ya().streamBuilder,a.mqtt=Z0().default,a.tcp=Z0().default,a.ssl=eb().default,a.tls=a.ssl,a.mqtts=eb().default):(a.ws=Ya().browserStreamBuilder,a.wss=Ya().browserStreamBuilder,a.wx=tb().default,a.wxs=tb().default,a.ali=rb().default,a.alis=rb().default)),!a[d.protocol]){let v=["mqtts","wss"].indexOf(d.protocol)!==-1;d.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((x,M)=>v&&M%2===0?!1:typeof a[x]=="function")[0]}if(d.clean===!1&&!d.clientId)throw new Error("Missing clientId for unclean clients");d.protocol&&(d.defaultProtocol=d.protocol);function S(v){return d.servers&&((!v._reconnectCount||v._reconnectCount===d.servers.length)&&(v._reconnectCount=0),d.host=d.servers[v._reconnectCount].host,d.port=d.servers[v._reconnectCount].port,d.protocol=d.servers[v._reconnectCount].protocol?d.servers[v._reconnectCount].protocol:d.defaultProtocol,d.hostname=d.host,v._reconnectCount++),o("calling streambuilder for",d.protocol),a[d.protocol](v,d)}let E=new s.default(S,d);return E.on("error",()=>{}),E}function c(f,d,g=!0){return new Promise((m,y)=>{let _=u(f,d),S={connect:v=>{E(),m(_)},end:()=>{E(),m(_)},error:v=>{E(),_.end(),y(v)}};g===!1&&(S.close=()=>{S.error(new Error("Couldn't connect to server"))});function E(){Object.keys(S).forEach(v=>{_.off(v,S[v])})}Object.keys(S).forEach(v=>{_.on(v,S[v])})})}t.connectAsync=c,t.default=u}),nb=Te(t=>{we(),_e(),ve();var e=t&&t.__createBinding||(Object.create?function(g,m,y,_){_===void 0&&(_=y);var S=Object.getOwnPropertyDescriptor(m,y);(!S||("get"in S?!m.__esModule:S.writable||S.configurable))&&(S={enumerable:!0,get:function(){return m[y]}}),Object.defineProperty(g,_,S)}:function(g,m,y,_){_===void 0&&(_=y),g[_]=m[y]}),r=t&&t.__setModuleDefault||(Object.create?function(g,m){Object.defineProperty(g,"default",{enumerable:!0,value:m})}:function(g,m){g.default=m}),n=t&&t.__importStar||function(g){if(g&&g.__esModule)return g;var m={};if(g!=null)for(var y in g)y!=="default"&&Object.prototype.hasOwnProperty.call(g,y)&&e(m,g,y);return r(m,g),m},s=t&&t.__exportStar||function(g,m){for(var y in g)y!=="default"&&!Object.prototype.hasOwnProperty.call(m,y)&&e(m,g,y)},i=t&&t.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(t,"__esModule",{value:!0}),t.ReasonCodes=t.KeepaliveManager=t.UniqueMessageIdProvider=t.DefaultMessageIdProvider=t.Store=t.MqttClient=t.connectAsync=t.connect=t.Client=void 0;var o=i(Eh());t.MqttClient=o.default;var a=i(C_());t.DefaultMessageIdProvider=a.default;var l=i(Gk());t.UniqueMessageIdProvider=l.default;var u=i(I_());t.Store=u.default;var c=n(hL());t.connect=c.default,Object.defineProperty(t,"connectAsync",{enumerable:!0,get:function(){return c.connectAsync}});var f=i(H_());t.KeepaliveManager=f.default,t.Client=o.default,s(Eh(),t),s(oo(),t);var d=$u();Object.defineProperty(t,"ReasonCodes",{enumerable:!0,get:function(){return d.ReasonCodes}})}),pL=Te(t=>{we(),_e(),ve();var e=t&&t.__createBinding||(Object.create?function(o,a,l,u){u===void 0&&(u=l);var c=Object.getOwnPropertyDescriptor(a,l);(!c||("get"in c?!a.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return a[l]}}),Object.defineProperty(o,u,c)}:function(o,a,l,u){u===void 0&&(u=l),o[u]=a[l]}),r=t&&t.__setModuleDefault||(Object.create?function(o,a){Object.defineProperty(o,"default",{enumerable:!0,value:a})}:function(o,a){o.default=a}),n=t&&t.__importStar||function(o){if(o&&o.__esModule)return o;var a={};if(o!=null)for(var l in o)l!=="default"&&Object.prototype.hasOwnProperty.call(o,l)&&e(a,o,l);return r(a,o),a},s=t&&t.__exportStar||function(o,a){for(var l in o)l!=="default"&&!Object.prototype.hasOwnProperty.call(a,l)&&e(a,o,l)};Object.defineProperty(t,"__esModule",{value:!0});var i=n(nb());t.default=i,s(nb(),t)});const g4=pL();/*! Bundled license information:
+
+@jspm/core/nodelibs/browser/buffer.js:
+  (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
+*/var og={exports:{}},ME={exports:{}},qc={exports:{}},nr={},Uu={};Uu.byteLength=bL;Uu.toByteArray=wL;Uu.fromByteArray=EL;var Br=[],or=[],gL=typeof Uint8Array<"u"?Uint8Array:Array,Yc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var bs=0,mL=Yc.length;bs<mL;++bs)Br[bs]=Yc[bs],or[Yc.charCodeAt(bs)]=bs;or[45]=62;or[95]=63;function OE(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var n=r===e?0:4-r%4;return[r,n]}function bL(t){var e=OE(t),r=e[0],n=e[1];return(r+n)*3/4-n}function yL(t,e,r){return(e+r)*3/4-r}function wL(t){var e,r=OE(t),n=r[0],s=r[1],i=new gL(yL(t,n,s)),o=0,a=s>0?n-4:n,l;for(l=0;l<a;l+=4)e=or[t.charCodeAt(l)]<<18|or[t.charCodeAt(l+1)]<<12|or[t.charCodeAt(l+2)]<<6|or[t.charCodeAt(l+3)],i[o++]=e>>16&255,i[o++]=e>>8&255,i[o++]=e&255;return s===2&&(e=or[t.charCodeAt(l)]<<2|or[t.charCodeAt(l+1)]>>4,i[o++]=e&255),s===1&&(e=or[t.charCodeAt(l)]<<10|or[t.charCodeAt(l+1)]<<4|or[t.charCodeAt(l+2)]>>2,i[o++]=e>>8&255,i[o++]=e&255),i}function vL(t){return Br[t>>18&63]+Br[t>>12&63]+Br[t>>6&63]+Br[t&63]}function _L(t,e,r){for(var n,s=[],i=e;i<r;i+=3)n=(t[i]<<16&16711680)+(t[i+1]<<8&65280)+(t[i+2]&255),s.push(vL(n));return s.join("")}function EL(t){for(var e,r=t.length,n=r%3,s=[],i=16383,o=0,a=r-n;o<a;o+=i)s.push(_L(t,o,o+i>a?a:o+i));return n===1?(e=t[r-1],s.push(Br[e>>2]+Br[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],s.push(Br[e>>10]+Br[e>>4&63]+Br[e<<2&63]+"=")),s.join("")}var ag={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */ag.read=function(t,e,r,n,s){var i,o,a=s*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,f=r?s-1:0,d=r?-1:1,g=t[e+f];for(f+=d,i=g&(1<<-c)-1,g>>=-c,c+=a;c>0;i=i*256+t[e+f],f+=d,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=o*256+t[e+f],f+=d,c-=8);if(i===0)i=1-u;else{if(i===l)return o?NaN:(g?-1:1)*(1/0);o=o+Math.pow(2,n),i=i-u}return(g?-1:1)*o*Math.pow(2,i-n)};ag.write=function(t,e,r,n,s,i){var o,a,l,u=i*8-s-1,c=(1<<u)-1,f=c>>1,d=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:i-1,m=n?1:-1,y=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?e+=d/l:e+=d*Math.pow(2,1-f),e*l>=2&&(o++,l/=2),o+f>=c?(a=0,o=c):o+f>=1?(a=(e*l-1)*Math.pow(2,s),o=o+f):(a=e*Math.pow(2,f-1)*Math.pow(2,s),o=0));s>=8;t[r+g]=a&255,g+=m,a/=256,s-=8);for(o=o<<s|a,u+=s;u>0;t[r+g]=o&255,g+=m,o/=256,u-=8);t[r+g-m]|=y*128};/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <https://feross.org>
+ * @license  MIT
+ */(function(t){const e=Uu,r=ag,n=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=a,t.SlowBuffer=E,t.INSPECT_MAX_BYTES=50;const s=2147483647;t.kMaxLength=s,a.TYPED_ARRAY_SUPPORT=i(),!a.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function i(){try{const p=new Uint8Array(1),h={foo:function(){return 42}};return Object.setPrototypeOf(h,Uint8Array.prototype),Object.setPrototypeOf(p,h),p.foo()===42}catch{return!1}}Object.defineProperty(a.prototype,"parent",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}});function o(p){if(p>s)throw new RangeError('The value "'+p+'" is invalid for option "size"');const h=new Uint8Array(p);return Object.setPrototypeOf(h,a.prototype),h}function a(p,h,b){if(typeof p=="number"){if(typeof h=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return f(p)}return l(p,h,b)}a.poolSize=8192;function l(p,h,b){if(typeof p=="string")return d(p,h);if(ArrayBuffer.isView(p))return m(p);if(p==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof p);if(F(p,ArrayBuffer)||p&&F(p.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(F(p,SharedArrayBuffer)||p&&F(p.buffer,SharedArrayBuffer)))return y(p,h,b);if(typeof p=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const T=p.valueOf&&p.valueOf();if(T!=null&&T!==p)return a.from(T,h,b);const U=_(p);if(U)return U;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof p[Symbol.toPrimitive]=="function")return a.from(p[Symbol.toPrimitive]("string"),h,b);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof p)}a.from=function(p,h,b){return l(p,h,b)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array);function u(p){if(typeof p!="number")throw new TypeError('"size" argument must be of type number');if(p<0)throw new RangeError('The value "'+p+'" is invalid for option "size"')}function c(p,h,b){return u(p),p<=0?o(p):h!==void 0?typeof b=="string"?o(p).fill(h,b):o(p).fill(h):o(p)}a.alloc=function(p,h,b){return c(p,h,b)};function f(p){return u(p),o(p<0?0:S(p)|0)}a.allocUnsafe=function(p){return f(p)},a.allocUnsafeSlow=function(p){return f(p)};function d(p,h){if((typeof h!="string"||h==="")&&(h="utf8"),!a.isEncoding(h))throw new TypeError("Unknown encoding: "+h);const b=v(p,h)|0;let T=o(b);const U=T.write(p,h);return U!==b&&(T=T.slice(0,U)),T}function g(p){const h=p.length<0?0:S(p.length)|0,b=o(h);for(let T=0;T<h;T+=1)b[T]=p[T]&255;return b}function m(p){if(F(p,Uint8Array)){const h=new Uint8Array(p);return y(h.buffer,h.byteOffset,h.byteLength)}return g(p)}function y(p,h,b){if(h<0||p.byteLength<h)throw new RangeError('"offset" is outside of buffer bounds');if(p.byteLength<h+(b||0))throw new RangeError('"length" is outside of buffer bounds');let T;return h===void 0&&b===void 0?T=new Uint8Array(p):b===void 0?T=new Uint8Array(p,h):T=new Uint8Array(p,h,b),Object.setPrototypeOf(T,a.prototype),T}function _(p){if(a.isBuffer(p)){const h=S(p.length)|0,b=o(h);return b.length===0||p.copy(b,0,0,h),b}if(p.length!==void 0)return typeof p.length!="number"||J(p.length)?o(0):g(p);if(p.type==="Buffer"&&Array.isArray(p.data))return g(p.data)}function S(p){if(p>=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return p|0}function E(p){return+p!=p&&(p=0),a.alloc(+p)}a.isBuffer=function(h){return h!=null&&h._isBuffer===!0&&h!==a.prototype},a.compare=function(h,b){if(F(h,Uint8Array)&&(h=a.from(h,h.offset,h.byteLength)),F(b,Uint8Array)&&(b=a.from(b,b.offset,b.byteLength)),!a.isBuffer(h)||!a.isBuffer(b))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(h===b)return 0;let T=h.length,U=b.length;for(let ee=0,ye=Math.min(T,U);ee<ye;++ee)if(h[ee]!==b[ee]){T=h[ee],U=b[ee];break}return T<U?-1:U<T?1:0},a.isEncoding=function(h){switch(String(h).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},a.concat=function(h,b){if(!Array.isArray(h))throw new TypeError('"list" argument must be an Array of Buffers');if(h.length===0)return a.alloc(0);let T;if(b===void 0)for(b=0,T=0;T<h.length;++T)b+=h[T].length;const U=a.allocUnsafe(b);let ee=0;for(T=0;T<h.length;++T){let ye=h[T];if(F(ye,Uint8Array))ee+ye.length>U.length?(a.isBuffer(ye)||(ye=a.from(ye)),ye.copy(U,ee)):Uint8Array.prototype.set.call(U,ye,ee);else if(a.isBuffer(ye))ye.copy(U,ee);else throw new TypeError('"list" argument must be an Array of Buffers');ee+=ye.length}return U};function v(p,h){if(a.isBuffer(p))return p.length;if(ArrayBuffer.isView(p)||F(p,ArrayBuffer))return p.byteLength;if(typeof p!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof p);const b=p.length,T=arguments.length>2&&arguments[2]===!0;if(!T&&b===0)return 0;let U=!1;for(;;)switch(h){case"ascii":case"latin1":case"binary":return b;case"utf8":case"utf-8":return z(p).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b*2;case"hex":return b>>>1;case"base64":return V(p).length;default:if(U)return T?-1:z(p).length;h=(""+h).toLowerCase(),U=!0}}a.byteLength=v;function x(p,h,b){let T=!1;if((h===void 0||h<0)&&(h=0),h>this.length||((b===void 0||b>this.length)&&(b=this.length),b<=0)||(b>>>=0,h>>>=0,b<=h))return"";for(p||(p="utf8");;)switch(p){case"hex":return ne(this,h,b);case"utf8":case"utf-8":return N(this,h,b);case"ascii":return H(this,h,b);case"latin1":case"binary":return $(this,h,b);case"base64":return I(this,h,b);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ue(this,h,b);default:if(T)throw new TypeError("Unknown encoding: "+p);p=(p+"").toLowerCase(),T=!0}}a.prototype._isBuffer=!0;function M(p,h,b){const T=p[h];p[h]=p[b],p[b]=T}a.prototype.swap16=function(){const h=this.length;if(h%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let b=0;b<h;b+=2)M(this,b,b+1);return this},a.prototype.swap32=function(){const h=this.length;if(h%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let b=0;b<h;b+=4)M(this,b,b+3),M(this,b+1,b+2);return this},a.prototype.swap64=function(){const h=this.length;if(h%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let b=0;b<h;b+=8)M(this,b,b+7),M(this,b+1,b+6),M(this,b+2,b+5),M(this,b+3,b+4);return this},a.prototype.toString=function(){const h=this.length;return h===0?"":arguments.length===0?N(this,0,h):x.apply(this,arguments)},a.prototype.toLocaleString=a.prototype.toString,a.prototype.equals=function(h){if(!a.isBuffer(h))throw new TypeError("Argument must be a Buffer");return this===h?!0:a.compare(this,h)===0},a.prototype.inspect=function(){let h="";const b=t.INSPECT_MAX_BYTES;return h=this.toString("hex",0,b).replace(/(.{2})/g,"$1 ").trim(),this.length>b&&(h+=" ... "),"<Buffer "+h+">"},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(h,b,T,U,ee){if(F(h,Uint8Array)&&(h=a.from(h,h.offset,h.byteLength)),!a.isBuffer(h))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof h);if(b===void 0&&(b=0),T===void 0&&(T=h?h.length:0),U===void 0&&(U=0),ee===void 0&&(ee=this.length),b<0||T>h.length||U<0||ee>this.length)throw new RangeError("out of range index");if(U>=ee&&b>=T)return 0;if(U>=ee)return-1;if(b>=T)return 1;if(b>>>=0,T>>>=0,U>>>=0,ee>>>=0,this===h)return 0;let ye=ee-U,Ae=T-b;const Re=Math.min(ye,Ae),xe=this.slice(U,ee),Oe=h.slice(b,T);for(let Me=0;Me<Re;++Me)if(xe[Me]!==Oe[Me]){ye=xe[Me],Ae=Oe[Me];break}return ye<Ae?-1:Ae<ye?1:0};function A(p,h,b,T,U){if(p.length===0)return-1;if(typeof b=="string"?(T=b,b=0):b>2147483647?b=2147483647:b<-2147483648&&(b=-2147483648),b=+b,J(b)&&(b=U?0:p.length-1),b<0&&(b=p.length+b),b>=p.length){if(U)return-1;b=p.length-1}else if(b<0)if(U)b=0;else return-1;if(typeof h=="string"&&(h=a.from(h,T)),a.isBuffer(h))return h.length===0?-1:L(p,h,b,T,U);if(typeof h=="number")return h=h&255,typeof Uint8Array.prototype.indexOf=="function"?U?Uint8Array.prototype.indexOf.call(p,h,b):Uint8Array.prototype.lastIndexOf.call(p,h,b):L(p,[h],b,T,U);throw new TypeError("val must be string, number or Buffer")}function L(p,h,b,T,U){let ee=1,ye=p.length,Ae=h.length;if(T!==void 0&&(T=String(T).toLowerCase(),T==="ucs2"||T==="ucs-2"||T==="utf16le"||T==="utf-16le")){if(p.length<2||h.length<2)return-1;ee=2,ye/=2,Ae/=2,b/=2}function Re(Oe,Me){return ee===1?Oe[Me]:Oe.readUInt16BE(Me*ee)}let xe;if(U){let Oe=-1;for(xe=b;xe<ye;xe++)if(Re(p,xe)===Re(h,Oe===-1?0:xe-Oe)){if(Oe===-1&&(Oe=xe),xe-Oe+1===Ae)return Oe*ee}else Oe!==-1&&(xe-=xe-Oe),Oe=-1}else for(b+Ae>ye&&(b=ye-Ae),xe=b;xe>=0;xe--){let Oe=!0;for(let Me=0;Me<Ae;Me++)if(Re(p,xe+Me)!==Re(h,Me)){Oe=!1;break}if(Oe)return xe}return-1}a.prototype.includes=function(h,b,T){return this.indexOf(h,b,T)!==-1},a.prototype.indexOf=function(h,b,T){return A(this,h,b,T,!0)},a.prototype.lastIndexOf=function(h,b,T){return A(this,h,b,T,!1)};function D(p,h,b,T){b=Number(b)||0;const U=p.length-b;T?(T=Number(T),T>U&&(T=U)):T=U;const ee=h.length;T>ee/2&&(T=ee/2);let ye;for(ye=0;ye<T;++ye){const Ae=parseInt(h.substr(ye*2,2),16);if(J(Ae))return ye;p[b+ye]=Ae}return ye}function B(p,h,b,T){return te(z(h,p.length-b),p,b,T)}function q(p,h,b,T){return te(oe(h),p,b,T)}function Y(p,h,b,T){return te(V(h),p,b,T)}function R(p,h,b,T){return te(fe(h,p.length-b),p,b,T)}a.prototype.write=function(h,b,T,U){if(b===void 0)U="utf8",T=this.length,b=0;else if(T===void 0&&typeof b=="string")U=b,T=this.length,b=0;else if(isFinite(b))b=b>>>0,isFinite(T)?(T=T>>>0,U===void 0&&(U="utf8")):(U=T,T=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const ee=this.length-b;if((T===void 0||T>ee)&&(T=ee),h.length>0&&(T<0||b<0)||b>this.length)throw new RangeError("Attempt to write outside buffer bounds");U||(U="utf8");let ye=!1;for(;;)switch(U){case"hex":return D(this,h,b,T);case"utf8":case"utf-8":return B(this,h,b,T);case"ascii":case"latin1":case"binary":return q(this,h,b,T);case"base64":return Y(this,h,b,T);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,h,b,T);default:if(ye)throw new TypeError("Unknown encoding: "+U);U=(""+U).toLowerCase(),ye=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function I(p,h,b){return h===0&&b===p.length?e.fromByteArray(p):e.fromByteArray(p.slice(h,b))}function N(p,h,b){b=Math.min(p.length,b);const T=[];let U=h;for(;U<b;){const ee=p[U];let ye=null,Ae=ee>239?4:ee>223?3:ee>191?2:1;if(U+Ae<=b){let Re,xe,Oe,Me;switch(Ae){case 1:ee<128&&(ye=ee);break;case 2:Re=p[U+1],(Re&192)===128&&(Me=(ee&31)<<6|Re&63,Me>127&&(ye=Me));break;case 3:Re=p[U+1],xe=p[U+2],(Re&192)===128&&(xe&192)===128&&(Me=(ee&15)<<12|(Re&63)<<6|xe&63,Me>2047&&(Me<55296||Me>57343)&&(ye=Me));break;case 4:Re=p[U+1],xe=p[U+2],Oe=p[U+3],(Re&192)===128&&(xe&192)===128&&(Oe&192)===128&&(Me=(ee&15)<<18|(Re&63)<<12|(xe&63)<<6|Oe&63,Me>65535&&Me<1114112&&(ye=Me))}}ye===null?(ye=65533,Ae=1):ye>65535&&(ye-=65536,T.push(ye>>>10&1023|55296),ye=56320|ye&1023),T.push(ye),U+=Ae}return G(T)}const W=4096;function G(p){const h=p.length;if(h<=W)return String.fromCharCode.apply(String,p);let b="",T=0;for(;T<h;)b+=String.fromCharCode.apply(String,p.slice(T,T+=W));return b}function H(p,h,b){let T="";b=Math.min(p.length,b);for(let U=h;U<b;++U)T+=String.fromCharCode(p[U]&127);return T}function $(p,h,b){let T="";b=Math.min(p.length,b);for(let U=h;U<b;++U)T+=String.fromCharCode(p[U]);return T}function ne(p,h,b){const T=p.length;(!h||h<0)&&(h=0),(!b||b<0||b>T)&&(b=T);let U="";for(let ee=h;ee<b;++ee)U+=se[p[ee]];return U}function ue(p,h,b){const T=p.slice(h,b);let U="";for(let ee=0;ee<T.length-1;ee+=2)U+=String.fromCharCode(T[ee]+T[ee+1]*256);return U}a.prototype.slice=function(h,b){const T=this.length;h=~~h,b=b===void 0?T:~~b,h<0?(h+=T,h<0&&(h=0)):h>T&&(h=T),b<0?(b+=T,b<0&&(b=0)):b>T&&(b=T),b<h&&(b=h);const U=this.subarray(h,b);return Object.setPrototypeOf(U,a.prototype),U};function re(p,h,b){if(p%1!==0||p<0)throw new RangeError("offset is not uint");if(p+h>b)throw new RangeError("Trying to access beyond buffer length")}a.prototype.readUintLE=a.prototype.readUIntLE=function(h,b,T){h=h>>>0,b=b>>>0,T||re(h,b,this.length);let U=this[h],ee=1,ye=0;for(;++ye<b&&(ee*=256);)U+=this[h+ye]*ee;return U},a.prototype.readUintBE=a.prototype.readUIntBE=function(h,b,T){h=h>>>0,b=b>>>0,T||re(h,b,this.length);let U=this[h+--b],ee=1;for(;b>0&&(ee*=256);)U+=this[h+--b]*ee;return U},a.prototype.readUint8=a.prototype.readUInt8=function(h,b){return h=h>>>0,b||re(h,1,this.length),this[h]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(h,b){return h=h>>>0,b||re(h,2,this.length),this[h]|this[h+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(h,b){return h=h>>>0,b||re(h,2,this.length),this[h]<<8|this[h+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(h,b){return h=h>>>0,b||re(h,4,this.length),(this[h]|this[h+1]<<8|this[h+2]<<16)+this[h+3]*16777216},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(h,b){return h=h>>>0,b||re(h,4,this.length),this[h]*16777216+(this[h+1]<<16|this[h+2]<<8|this[h+3])},a.prototype.readBigUInt64LE=pe(function(h){h=h>>>0,C(h,"offset");const b=this[h],T=this[h+7];(b===void 0||T===void 0)&&P(h,this.length-8);const U=b+this[++h]*2**8+this[++h]*2**16+this[++h]*2**24,ee=this[++h]+this[++h]*2**8+this[++h]*2**16+T*2**24;return BigInt(U)+(BigInt(ee)<<BigInt(32))}),a.prototype.readBigUInt64BE=pe(function(h){h=h>>>0,C(h,"offset");const b=this[h],T=this[h+7];(b===void 0||T===void 0)&&P(h,this.length-8);const U=b*2**24+this[++h]*2**16+this[++h]*2**8+this[++h],ee=this[++h]*2**24+this[++h]*2**16+this[++h]*2**8+T;return(BigInt(U)<<BigInt(32))+BigInt(ee)}),a.prototype.readIntLE=function(h,b,T){h=h>>>0,b=b>>>0,T||re(h,b,this.length);let U=this[h],ee=1,ye=0;for(;++ye<b&&(ee*=256);)U+=this[h+ye]*ee;return ee*=128,U>=ee&&(U-=Math.pow(2,8*b)),U},a.prototype.readIntBE=function(h,b,T){h=h>>>0,b=b>>>0,T||re(h,b,this.length);let U=b,ee=1,ye=this[h+--U];for(;U>0&&(ee*=256);)ye+=this[h+--U]*ee;return ee*=128,ye>=ee&&(ye-=Math.pow(2,8*b)),ye},a.prototype.readInt8=function(h,b){return h=h>>>0,b||re(h,1,this.length),this[h]&128?(255-this[h]+1)*-1:this[h]},a.prototype.readInt16LE=function(h,b){h=h>>>0,b||re(h,2,this.length);const T=this[h]|this[h+1]<<8;return T&32768?T|4294901760:T},a.prototype.readInt16BE=function(h,b){h=h>>>0,b||re(h,2,this.length);const T=this[h+1]|this[h]<<8;return T&32768?T|4294901760:T},a.prototype.readInt32LE=function(h,b){return h=h>>>0,b||re(h,4,this.length),this[h]|this[h+1]<<8|this[h+2]<<16|this[h+3]<<24},a.prototype.readInt32BE=function(h,b){return h=h>>>0,b||re(h,4,this.length),this[h]<<24|this[h+1]<<16|this[h+2]<<8|this[h+3]},a.prototype.readBigInt64LE=pe(function(h){h=h>>>0,C(h,"offset");const b=this[h],T=this[h+7];(b===void 0||T===void 0)&&P(h,this.length-8);const U=this[h+4]+this[h+5]*2**8+this[h+6]*2**16+(T<<24);return(BigInt(U)<<BigInt(32))+BigInt(b+this[++h]*2**8+this[++h]*2**16+this[++h]*2**24)}),a.prototype.readBigInt64BE=pe(function(h){h=h>>>0,C(h,"offset");const b=this[h],T=this[h+7];(b===void 0||T===void 0)&&P(h,this.length-8);const U=(b<<24)+this[++h]*2**16+this[++h]*2**8+this[++h];return(BigInt(U)<<BigInt(32))+BigInt(this[++h]*2**24+this[++h]*2**16+this[++h]*2**8+T)}),a.prototype.readFloatLE=function(h,b){return h=h>>>0,b||re(h,4,this.length),r.read(this,h,!0,23,4)},a.prototype.readFloatBE=function(h,b){return h=h>>>0,b||re(h,4,this.length),r.read(this,h,!1,23,4)},a.prototype.readDoubleLE=function(h,b){return h=h>>>0,b||re(h,8,this.length),r.read(this,h,!0,52,8)},a.prototype.readDoubleBE=function(h,b){return h=h>>>0,b||re(h,8,this.length),r.read(this,h,!1,52,8)};function k(p,h,b,T,U,ee){if(!a.isBuffer(p))throw new TypeError('"buffer" argument must be a Buffer instance');if(h>U||h<ee)throw new RangeError('"value" argument is out of bounds');if(b+T>p.length)throw new RangeError("Index out of range")}a.prototype.writeUintLE=a.prototype.writeUIntLE=function(h,b,T,U){if(h=+h,b=b>>>0,T=T>>>0,!U){const Ae=Math.pow(2,8*T)-1;k(this,h,b,T,Ae,0)}let ee=1,ye=0;for(this[b]=h&255;++ye<T&&(ee*=256);)this[b+ye]=h/ee&255;return b+T},a.prototype.writeUintBE=a.prototype.writeUIntBE=function(h,b,T,U){if(h=+h,b=b>>>0,T=T>>>0,!U){const Ae=Math.pow(2,8*T)-1;k(this,h,b,T,Ae,0)}let ee=T-1,ye=1;for(this[b+ee]=h&255;--ee>=0&&(ye*=256);)this[b+ee]=h/ye&255;return b+T},a.prototype.writeUint8=a.prototype.writeUInt8=function(h,b,T){return h=+h,b=b>>>0,T||k(this,h,b,1,255,0),this[b]=h&255,b+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(h,b,T){return h=+h,b=b>>>0,T||k(this,h,b,2,65535,0),this[b]=h&255,this[b+1]=h>>>8,b+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(h,b,T){return h=+h,b=b>>>0,T||k(this,h,b,2,65535,0),this[b]=h>>>8,this[b+1]=h&255,b+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(h,b,T){return h=+h,b=b>>>0,T||k(this,h,b,4,4294967295,0),this[b+3]=h>>>24,this[b+2]=h>>>16,this[b+1]=h>>>8,this[b]=h&255,b+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(h,b,T){return h=+h,b=b>>>0,T||k(this,h,b,4,4294967295,0),this[b]=h>>>24,this[b+1]=h>>>16,this[b+2]=h>>>8,this[b+3]=h&255,b+4};function Q(p,h,b,T,U){ce(h,T,U,p,b,7);let ee=Number(h&BigInt(4294967295));p[b++]=ee,ee=ee>>8,p[b++]=ee,ee=ee>>8,p[b++]=ee,ee=ee>>8,p[b++]=ee;let ye=Number(h>>BigInt(32)&BigInt(4294967295));return p[b++]=ye,ye=ye>>8,p[b++]=ye,ye=ye>>8,p[b++]=ye,ye=ye>>8,p[b++]=ye,b}function de(p,h,b,T,U){ce(h,T,U,p,b,7);let ee=Number(h&BigInt(4294967295));p[b+7]=ee,ee=ee>>8,p[b+6]=ee,ee=ee>>8,p[b+5]=ee,ee=ee>>8,p[b+4]=ee;let ye=Number(h>>BigInt(32)&BigInt(4294967295));return p[b+3]=ye,ye=ye>>8,p[b+2]=ye,ye=ye>>8,p[b+1]=ye,ye=ye>>8,p[b]=ye,b+8}a.prototype.writeBigUInt64LE=pe(function(h,b=0){return Q(this,h,b,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeBigUInt64BE=pe(function(h,b=0){return de(this,h,b,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeIntLE=function(h,b,T,U){if(h=+h,b=b>>>0,!U){const Re=Math.pow(2,8*T-1);k(this,h,b,T,Re-1,-Re)}let ee=0,ye=1,Ae=0;for(this[b]=h&255;++ee<T&&(ye*=256);)h<0&&Ae===0&&this[b+ee-1]!==0&&(Ae=1),this[b+ee]=(h/ye>>0)-Ae&255;return b+T},a.prototype.writeIntBE=function(h,b,T,U){if(h=+h,b=b>>>0,!U){const Re=Math.pow(2,8*T-1);k(this,h,b,T,Re-1,-Re)}let ee=T-1,ye=1,Ae=0;for(this[b+ee]=h&255;--ee>=0&&(ye*=256);)h<0&&Ae===0&&this[b+ee+1]!==0&&(Ae=1),this[b+ee]=(h/ye>>0)-Ae&255;return b+T},a.prototype.writeInt8=function(h,b,T){return h=+h,b=b>>>0,T||k(this,h,b,1,127,-128),h<0&&(h=255+h+1),this[b]=h&255,b+1},a.prototype.writeInt16LE=function(h,b,T){return h=+h,b=b>>>0,T||k(this,h,b,2,32767,-32768),this[b]=h&255,this[b+1]=h>>>8,b+2},a.prototype.writeInt16BE=function(h,b,T){return h=+h,b=b>>>0,T||k(this,h,b,2,32767,-32768),this[b]=h>>>8,this[b+1]=h&255,b+2},a.prototype.writeInt32LE=function(h,b,T){return h=+h,b=b>>>0,T||k(this,h,b,4,2147483647,-2147483648),this[b]=h&255,this[b+1]=h>>>8,this[b+2]=h>>>16,this[b+3]=h>>>24,b+4},a.prototype.writeInt32BE=function(h,b,T){return h=+h,b=b>>>0,T||k(this,h,b,4,2147483647,-2147483648),h<0&&(h=4294967295+h+1),this[b]=h>>>24,this[b+1]=h>>>16,this[b+2]=h>>>8,this[b+3]=h&255,b+4},a.prototype.writeBigInt64LE=pe(function(h,b=0){return Q(this,h,b,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),a.prototype.writeBigInt64BE=pe(function(h,b=0){return de(this,h,b,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ge(p,h,b,T,U,ee){if(b+T>p.length)throw new RangeError("Index out of range");if(b<0)throw new RangeError("Index out of range")}function me(p,h,b,T,U){return h=+h,b=b>>>0,U||ge(p,h,b,4),r.write(p,h,b,T,23,4),b+4}a.prototype.writeFloatLE=function(h,b,T){return me(this,h,b,!0,T)},a.prototype.writeFloatBE=function(h,b,T){return me(this,h,b,!1,T)};function X(p,h,b,T,U){return h=+h,b=b>>>0,U||ge(p,h,b,8),r.write(p,h,b,T,52,8),b+8}a.prototype.writeDoubleLE=function(h,b,T){return X(this,h,b,!0,T)},a.prototype.writeDoubleBE=function(h,b,T){return X(this,h,b,!1,T)},a.prototype.copy=function(h,b,T,U){if(!a.isBuffer(h))throw new TypeError("argument should be a Buffer");if(T||(T=0),!U&&U!==0&&(U=this.length),b>=h.length&&(b=h.length),b||(b=0),U>0&&U<T&&(U=T),U===T||h.length===0||this.length===0)return 0;if(b<0)throw new RangeError("targetStart out of bounds");if(T<0||T>=this.length)throw new RangeError("Index out of range");if(U<0)throw new RangeError("sourceEnd out of bounds");U>this.length&&(U=this.length),h.length-b<U-T&&(U=h.length-b+T);const ee=U-T;return this===h&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(b,T,U):Uint8Array.prototype.set.call(h,this.subarray(T,U),b),ee},a.prototype.fill=function(h,b,T,U){if(typeof h=="string"){if(typeof b=="string"?(U=b,b=0,T=this.length):typeof T=="string"&&(U=T,T=this.length),U!==void 0&&typeof U!="string")throw new TypeError("encoding must be a string");if(typeof U=="string"&&!a.isEncoding(U))throw new TypeError("Unknown encoding: "+U);if(h.length===1){const ye=h.charCodeAt(0);(U==="utf8"&&ye<128||U==="latin1")&&(h=ye)}}else typeof h=="number"?h=h&255:typeof h=="boolean"&&(h=Number(h));if(b<0||this.length<b||this.length<T)throw new RangeError("Out of range index");if(T<=b)return this;b=b>>>0,T=T===void 0?this.length:T>>>0,h||(h=0);let ee;if(typeof h=="number")for(ee=b;ee<T;++ee)this[ee]=h;else{const ye=a.isBuffer(h)?h:a.from(h,U),Ae=ye.length;if(Ae===0)throw new TypeError('The value "'+h+'" is invalid for argument "value"');for(ee=0;ee<T-b;++ee)this[ee+b]=ye[ee%Ae]}return this};const K={};function ie(p,h,b){K[p]=class extends b{constructor(){super(),Object.defineProperty(this,"message",{value:h.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${p}]`,this.stack,delete this.name}get code(){return p}set code(U){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:U,writable:!0})}toString(){return`${this.name} [${p}]: ${this.message}`}}}ie("ERR_BUFFER_OUT_OF_BOUNDS",function(p){return p?`${p} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),ie("ERR_INVALID_ARG_TYPE",function(p,h){return`The "${p}" argument must be of type number. Received type ${typeof h}`},TypeError),ie("ERR_OUT_OF_RANGE",function(p,h,b){let T=`The value of "${p}" is out of range.`,U=b;return Number.isInteger(b)&&Math.abs(b)>2**32?U=be(String(b)):typeof b=="bigint"&&(U=String(b),(b>BigInt(2)**BigInt(32)||b<-(BigInt(2)**BigInt(32)))&&(U=be(U)),U+="n"),T+=` It must be ${h}. Received ${U}`,T},RangeError);function be(p){let h="",b=p.length;const T=p[0]==="-"?1:0;for(;b>=T+4;b-=3)h=`_${p.slice(b-3,b)}${h}`;return`${p.slice(0,b)}${h}`}function he(p,h,b){C(h,"offset"),(p[h]===void 0||p[h+b]===void 0)&&P(h,p.length-(b+1))}function ce(p,h,b,T,U,ee){if(p>b||p<h){const ye=typeof h=="bigint"?"n":"";let Ae;throw h===0||h===BigInt(0)?Ae=`>= 0${ye} and < 2${ye} ** ${(ee+1)*8}${ye}`:Ae=`>= -(2${ye} ** ${(ee+1)*8-1}${ye}) and < 2 ** ${(ee+1)*8-1}${ye}`,new K.ERR_OUT_OF_RANGE("value",Ae,p)}he(T,U,ee)}function C(p,h){if(typeof p!="number")throw new K.ERR_INVALID_ARG_TYPE(h,"number",p)}function P(p,h,b){throw Math.floor(p)!==p?(C(p,b),new K.ERR_OUT_OF_RANGE("offset","an integer",p)):h<0?new K.ERR_BUFFER_OUT_OF_BOUNDS:new K.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${h}`,p)}const O=/[^+/0-9A-Za-z-_]/g;function j(p){if(p=p.split("=")[0],p=p.trim().replace(O,""),p.length<2)return"";for(;p.length%4!==0;)p=p+"=";return p}function z(p,h){h=h||1/0;let b;const T=p.length;let U=null;const ee=[];for(let ye=0;ye<T;++ye){if(b=p.charCodeAt(ye),b>55295&&b<57344){if(!U){if(b>56319){(h-=3)>-1&&ee.push(239,191,189);continue}else if(ye+1===T){(h-=3)>-1&&ee.push(239,191,189);continue}U=b;continue}if(b<56320){(h-=3)>-1&&ee.push(239,191,189),U=b;continue}b=(U-55296<<10|b-56320)+65536}else U&&(h-=3)>-1&&ee.push(239,191,189);if(U=null,b<128){if((h-=1)<0)break;ee.push(b)}else if(b<2048){if((h-=2)<0)break;ee.push(b>>6|192,b&63|128)}else if(b<65536){if((h-=3)<0)break;ee.push(b>>12|224,b>>6&63|128,b&63|128)}else if(b<1114112){if((h-=4)<0)break;ee.push(b>>18|240,b>>12&63|128,b>>6&63|128,b&63|128)}else throw new Error("Invalid code point")}return ee}function oe(p){const h=[];for(let b=0;b<p.length;++b)h.push(p.charCodeAt(b)&255);return h}function fe(p,h){let b,T,U;const ee=[];for(let ye=0;ye<p.length&&!((h-=2)<0);++ye)b=p.charCodeAt(ye),T=b>>8,U=b%256,ee.push(U),ee.push(T);return ee}function V(p){return e.toByteArray(j(p))}function te(p,h,b,T){let U;for(U=0;U<T&&!(U+b>=h.length||U>=p.length);++U)h[U+b]=p[U];return U}function F(p,h){return p instanceof h||p!=null&&p.constructor!=null&&p.constructor.name!=null&&p.constructor.name===h.name}function J(p){return p!==p}const se=function(){const p="0123456789abcdef",h=new Array(256);for(let b=0;b<16;++b){const T=b*16;for(let U=0;U<16;++U)h[T+U]=p[b]+p[U]}return h}();function pe(p){return typeof BigInt>"u"?w:p}function w(){throw new Error("BigInt not supported")}})(nr);var at={ArrayIsArray(t){return Array.isArray(t)},ArrayPrototypeIncludes(t,e){return t.includes(e)},ArrayPrototypeIndexOf(t,e){return t.indexOf(e)},ArrayPrototypeJoin(t,e){return t.join(e)},ArrayPrototypeMap(t,e){return t.map(e)},ArrayPrototypePop(t,e){return t.pop(e)},ArrayPrototypePush(t,e){return t.push(e)},ArrayPrototypeSlice(t,e,r){return t.slice(e,r)},Error,FunctionPrototypeCall(t,e,...r){return t.call(e,...r)},FunctionPrototypeSymbolHasInstance(t,e){return Function.prototype[Symbol.hasInstance].call(t,e)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(t,e){return Object.defineProperties(t,e)},ObjectDefineProperty(t,e,r){return Object.defineProperty(t,e,r)},ObjectGetOwnPropertyDescriptor(t,e){return Object.getOwnPropertyDescriptor(t,e)},ObjectKeys(t){return Object.keys(t)},ObjectSetPrototypeOf(t,e){return Object.setPrototypeOf(t,e)},Promise,PromisePrototypeCatch(t,e){return t.catch(e)},PromisePrototypeThen(t,e,r){return t.then(e,r)},PromiseReject(t){return Promise.reject(t)},PromiseResolve(t){return Promise.resolve(t)},ReflectApply:Reflect.apply,RegExpPrototypeTest(t,e){return t.test(e)},SafeSet:Set,String,StringPrototypeSlice(t,e,r){return t.slice(e,r)},StringPrototypeToLowerCase(t){return t.toLowerCase()},StringPrototypeToUpperCase(t){return t.toUpperCase()},StringPrototypeTrim(t){return t.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol("Symbol.dispose"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol("Symbol.asyncDispose"),TypedArrayPrototypeSet(t,e,r){return t.set(e,r)},Boolean,Uint8Array},RE={exports:{}},Io={exports:{}},ib;function la(){if(ib)return Io.exports;ib=1;const{AbortController:t,AbortSignal:e}=typeof self<"u"?self:typeof window<"u"?window:void 0;return Io.exports=t,Io.exports.AbortSignal=e,Io.exports.default=t,Io.exports}var lg={exports:{}},Ns=typeof Reflect=="object"?Reflect:null,sb=Ns&&typeof Ns.apply=="function"?Ns.apply:function(e,r,n){return Function.prototype.apply.call(e,r,n)},Cl;Ns&&typeof Ns.ownKeys=="function"?Cl=Ns.ownKeys:Object.getOwnPropertySymbols?Cl=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Cl=function(e){return Object.getOwnPropertyNames(e)};function SL(t){console&&console.warn&&console.warn(t)}var PE=Number.isNaN||function(e){return e!==e};function Ge(){Ge.init.call(this)}lg.exports=Ge;lg.exports.once=CL;Ge.EventEmitter=Ge;Ge.prototype._events=void 0;Ge.prototype._eventsCount=0;Ge.prototype._maxListeners=void 0;var ob=10;function ju(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(Ge,"defaultMaxListeners",{enumerable:!0,get:function(){return ob},set:function(t){if(typeof t!="number"||t<0||PE(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");ob=t}});Ge.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ge.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||PE(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function kE(t){return t._maxListeners===void 0?Ge.defaultMaxListeners:t._maxListeners}Ge.prototype.getMaxListeners=function(){return kE(this)};Ge.prototype.emit=function(e){for(var r=[],n=1;n<arguments.length;n++)r.push(arguments[n]);var s=e==="error",i=this._events;if(i!==void 0)s=s&&i.error===void 0;else if(!s)return!1;if(s){var o;if(r.length>0&&(o=r[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var l=i[e];if(l===void 0)return!1;if(typeof l=="function")sb(l,this,r);else for(var u=l.length,c=$E(l,u),n=0;n<u;++n)sb(c[n],this,r);return!0};function LE(t,e,r,n){var s,i,o;if(ju(r),i=t._events,i===void 0?(i=t._events=Object.create(null),t._eventsCount=0):(i.newListener!==void 0&&(t.emit("newListener",e,r.listener?r.listener:r),i=t._events),o=i[e]),o===void 0)o=i[e]=r,++t._eventsCount;else if(typeof o=="function"?o=i[e]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),s=kE(t),s>0&&o.length>s&&!o.warned){o.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=t,a.type=e,a.count=o.length,SL(a)}return t}Ge.prototype.addListener=function(e,r){return LE(this,e,r,!1)};Ge.prototype.on=Ge.prototype.addListener;Ge.prototype.prependListener=function(e,r){return LE(this,e,r,!0)};function TL(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function NE(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},s=TL.bind(n);return s.listener=r,n.wrapFn=s,s}Ge.prototype.once=function(e,r){return ju(r),this.on(e,NE(this,e,r)),this};Ge.prototype.prependOnceListener=function(e,r){return ju(r),this.prependListener(e,NE(this,e,r)),this};Ge.prototype.removeListener=function(e,r){var n,s,i,o,a;if(ju(r),s=this._events,s===void 0)return this;if(n=s[e],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete s[e],s.removeListener&&this.emit("removeListener",e,n.listener||r));else if(typeof n!="function"){for(i=-1,o=n.length-1;o>=0;o--)if(n[o]===r||n[o].listener===r){a=n[o].listener,i=o;break}if(i<0)return this;i===0?n.shift():xL(n,i),n.length===1&&(s[e]=n[0]),s.removeListener!==void 0&&this.emit("removeListener",e,a||r)}return this};Ge.prototype.off=Ge.prototype.removeListener;Ge.prototype.removeAllListeners=function(e){var r,n,s;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var i=Object.keys(n),o;for(s=0;s<i.length;++s)o=i[s],o!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=n[e],typeof r=="function")this.removeListener(e,r);else if(r!==void 0)for(s=r.length-1;s>=0;s--)this.removeListener(e,r[s]);return this};function DE(t,e,r){var n=t._events;if(n===void 0)return[];var s=n[e];return s===void 0?[]:typeof s=="function"?r?[s.listener||s]:[s]:r?AL(s):$E(s,s.length)}Ge.prototype.listeners=function(e){return DE(this,e,!0)};Ge.prototype.rawListeners=function(e){return DE(this,e,!1)};Ge.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):BE.call(t,e)};Ge.prototype.listenerCount=BE;function BE(t){var e=this._events;if(e!==void 0){var r=e[t];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Ge.prototype.eventNames=function(){return this._eventsCount>0?Cl(this._events):[]};function $E(t,e){for(var r=new Array(e),n=0;n<e;++n)r[n]=t[n];return r}function xL(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}function AL(t){for(var e=new Array(t.length),r=0;r<e.length;++r)e[r]=t[r].listener||t[r];return e}function CL(t,e){return new Promise(function(r,n){function s(o){t.removeListener(e,i),n(o)}function i(){typeof t.removeListener=="function"&&t.removeListener("error",s),r([].slice.call(arguments))}FE(t,e,i,{once:!0}),e!=="error"&&IL(t,s,{once:!0})})}function IL(t,e,r){typeof t.on=="function"&&FE(t,"error",e,r)}function FE(t,e,r,n){if(typeof t.on=="function")n.once?t.once(e,r):t.on(e,r);else if(typeof t.addEventListener=="function")t.addEventListener(e,function s(i){n.once&&t.removeEventListener(e,s),r(i)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof t)}var Wu=lg.exports;(function(t){const e=nr,{kResistStopPropagation:r,SymbolDispose:n}=at,s=globalThis.AbortSignal||la().AbortSignal,i=globalThis.AbortController||la().AbortController,o=Object.getPrototypeOf(async function(){}).constructor,a=globalThis.Blob||e.Blob,l=typeof a<"u"?function(g){return g instanceof a}:function(g){return!1},u=(d,g)=>{if(d!==void 0&&(d===null||typeof d!="object"||!("aborted"in d)))throw new ERR_INVALID_ARG_TYPE(g,"AbortSignal",d)},c=(d,g)=>{if(typeof d!="function")throw new ERR_INVALID_ARG_TYPE(g,"Function",d)};class f extends Error{constructor(g){if(!Array.isArray(g))throw new TypeError(`Expected input to be an Array, got ${typeof g}`);let m="";for(let y=0;y<g.length;y++)m+=`    ${g[y].stack}
+`;super(m),this.name="AggregateError",this.errors=g}}t.exports={AggregateError:f,kEmptyObject:Object.freeze({}),once(d){let g=!1;return function(...m){g||(g=!0,d.apply(this,m))}},createDeferredPromise:function(){let d,g;return{promise:new Promise((y,_)=>{d=y,g=_}),resolve:d,reject:g}},promisify(d){return new Promise((g,m)=>{d((y,..._)=>y?m(y):g(..._))})},debuglog(){return function(){}},format(d,...g){return d.replace(/%([sdifj])/g,function(...[m,y]){const _=g.shift();return y==="f"?_.toFixed(6):y==="j"?JSON.stringify(_):y==="s"&&typeof _=="object"?`${_.constructor!==Object?_.constructor.name:""} {}`.trim():_.toString()})},inspect(d){switch(typeof d){case"string":if(d.includes("'"))if(d.includes('"')){if(!d.includes("`")&&!d.includes("${"))return`\`${d}\``}else return`"${d}"`;return`'${d}'`;case"number":return isNaN(d)?"NaN":Object.is(d,-0)?String(d):d;case"bigint":return`${String(d)}n`;case"boolean":case"undefined":return String(d);case"object":return"{}"}},types:{isAsyncFunction(d){return d instanceof o},isArrayBufferView(d){return ArrayBuffer.isView(d)}},isBlob:l,deprecate(d,g){return d},addAbortListener:Wu.addAbortListener||function(g,m){if(g===void 0)throw new ERR_INVALID_ARG_TYPE("signal","AbortSignal",g);u(g,"signal"),c(m,"listener");let y;return g.aborted?queueMicrotask(()=>m()):(g.addEventListener("abort",m,{__proto__:null,once:!0,[r]:!0}),y=()=>{g.removeEventListener("abort",m)}),{__proto__:null,[n](){var _;(_=y)===null||_===void 0||_()}}},AbortSignalAny:s.any||function(g){if(g.length===1)return g[0];const m=new i,y=()=>m.abort();return g.forEach(_=>{u(_,"signals"),_.addEventListener("abort",y,{once:!0})}),m.signal.addEventListener("abort",()=>{g.forEach(_=>_.removeEventListener("abort",y))},{once:!0}),m.signal}},t.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")})(RE);var Dt=RE.exports,ug={};const{format:ML,inspect:ou,AggregateError:OL}=Dt,RL=globalThis.AggregateError||OL,PL=Symbol("kIsNodeError"),kL=["string","function","number","object","Function","Object","boolean","bigint","symbol"],LL=/^([A-Z][a-z0-9]*)+$/,NL="__node_internal_",zu={};function Wi(t,e){if(!t)throw new zu.ERR_INTERNAL_ASSERTION(e)}function ab(t){let e="",r=t.length;const n=t[0]==="-"?1:0;for(;r>=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function DL(t,e,r){if(typeof e=="function")return Wi(e.length<=r.length,`Code: ${t}; The provided arguments length (${r.length}) does not match the required ones (${e.length}).`),e(...r);const n=(e.match(/%[dfijoOs]/g)||[]).length;return Wi(n===r.length,`Code: ${t}; The provided arguments length (${r.length}) does not match the required ones (${n}).`),r.length===0?e:ML(e,...r)}function Tt(t,e,r){r||(r=Error);class n extends r{constructor(...i){super(DL(t,e,i))}toString(){return`${this.name} [${t}]: ${this.message}`}}Object.defineProperties(n.prototype,{name:{value:r.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${t}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),n.prototype.code=t,n.prototype[PL]=!0,zu[t]=n}function lb(t){const e=NL+t.name;return Object.defineProperty(t,"name",{value:e}),t}function BL(t,e){if(t&&e&&t!==e){if(Array.isArray(e.errors))return e.errors.push(t),e;const r=new RL([e,t],e.message);return r.code=e.code,r}return t||e}let $L=class extends Error{constructor(e="The operation was aborted",r=void 0){if(r!==void 0&&typeof r!="object")throw new zu.ERR_INVALID_ARG_TYPE("options","Object",r);super(e,r),this.code="ABORT_ERR",this.name="AbortError"}};Tt("ERR_ASSERTION","%s",Error);Tt("ERR_INVALID_ARG_TYPE",(t,e,r)=>{Wi(typeof t=="string","'name' must be a string"),Array.isArray(e)||(e=[e]);let n="The ";t.endsWith(" argument")?n+=`${t} `:n+=`"${t}" ${t.includes(".")?"property":"argument"} `,n+="must be ";const s=[],i=[],o=[];for(const l of e)Wi(typeof l=="string","All expected entries have to be of type string"),kL.includes(l)?s.push(l.toLowerCase()):LL.test(l)?i.push(l):(Wi(l!=="object",'The value "object" should be written as "Object"'),o.push(l));if(i.length>0){const l=s.indexOf("object");l!==-1&&(s.splice(s,l,1),i.push("Object"))}if(s.length>0){switch(s.length){case 1:n+=`of type ${s[0]}`;break;case 2:n+=`one of type ${s[0]} or ${s[1]}`;break;default:{const l=s.pop();n+=`one of type ${s.join(", ")}, or ${l}`}}(i.length>0||o.length>0)&&(n+=" or ")}if(i.length>0){switch(i.length){case 1:n+=`an instance of ${i[0]}`;break;case 2:n+=`an instance of ${i[0]} or ${i[1]}`;break;default:{const l=i.pop();n+=`an instance of ${i.join(", ")}, or ${l}`}}o.length>0&&(n+=" or ")}switch(o.length){case 0:break;case 1:o[0].toLowerCase()!==o[0]&&(n+="an "),n+=`${o[0]}`;break;case 2:n+=`one of ${o[0]} or ${o[1]}`;break;default:{const l=o.pop();n+=`one of ${o.join(", ")}, or ${l}`}}if(r==null)n+=`. Received ${r}`;else if(typeof r=="function"&&r.name)n+=`. Received function ${r.name}`;else if(typeof r=="object"){var a;if((a=r.constructor)!==null&&a!==void 0&&a.name)n+=`. Received an instance of ${r.constructor.name}`;else{const l=ou(r,{depth:-1});n+=`. Received ${l}`}}else{let l=ou(r,{colors:!1});l.length>25&&(l=`${l.slice(0,25)}...`),n+=`. Received type ${typeof r} (${l})`}return n},TypeError);Tt("ERR_INVALID_ARG_VALUE",(t,e,r="is invalid")=>{let n=ou(e);return n.length>128&&(n=n.slice(0,128)+"..."),`The ${t.includes(".")?"property":"argument"} '${t}' ${r}. Received ${n}`},TypeError);Tt("ERR_INVALID_RETURN_VALUE",(t,e,r)=>{var n;const s=r!=null&&(n=r.constructor)!==null&&n!==void 0&&n.name?`instance of ${r.constructor.name}`:`type ${typeof r}`;return`Expected ${t} to be returned from the "${e}" function but got ${s}.`},TypeError);Tt("ERR_MISSING_ARGS",(...t)=>{Wi(t.length>0,"At least one arg needs to be specified");let e;const r=t.length;switch(t=(Array.isArray(t)?t:[t]).map(n=>`"${n}"`).join(" or "),r){case 1:e+=`The ${t[0]} argument`;break;case 2:e+=`The ${t[0]} and ${t[1]} arguments`;break;default:{const n=t.pop();e+=`The ${t.join(", ")}, and ${n} arguments`}break}return`${e} must be specified`},TypeError);Tt("ERR_OUT_OF_RANGE",(t,e,r)=>{Wi(e,'Missing "range" argument');let n;return Number.isInteger(r)&&Math.abs(r)>2**32?n=ab(String(r)):typeof r=="bigint"?(n=String(r),(r>2n**32n||r<-(2n**32n))&&(n=ab(n)),n+="n"):n=ou(r),`The value of "${t}" is out of range. It must be ${e}. Received ${n}`},RangeError);Tt("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error);Tt("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error);Tt("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error);Tt("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error);Tt("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error);Tt("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Tt("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error);Tt("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error);Tt("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error);Tt("ERR_STREAM_WRITE_AFTER_END","write after end",Error);Tt("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError);var Vt={AbortError:$L,aggregateTwoErrors:lb(BL),hideStackFrames:lb,codes:zu};const{ArrayIsArray:cg,ArrayPrototypeIncludes:UE,ArrayPrototypeJoin:jE,ArrayPrototypeMap:FL,NumberIsInteger:fg,NumberIsNaN:UL,NumberMAX_SAFE_INTEGER:jL,NumberMIN_SAFE_INTEGER:WL,NumberParseInt:zL,ObjectPrototypeHasOwnProperty:HL,RegExpPrototypeExec:WE,String:VL,StringPrototypeToUpperCase:qL,StringPrototypeTrim:YL}=at,{hideStackFrames:hr,codes:{ERR_SOCKET_BAD_PORT:GL,ERR_INVALID_ARG_TYPE:Pt,ERR_INVALID_ARG_VALUE:ao,ERR_OUT_OF_RANGE:Ki,ERR_UNKNOWN_SIGNAL:ub}}=Vt,{normalizeEncoding:KL}=Dt,{isAsyncFunction:XL,isArrayBufferView:QL}=Dt.types,cb={};function JL(t){return t===(t|0)}function ZL(t){return t===t>>>0}const eN=/^[0-7]+$/,tN="must be a 32-bit unsigned integer or an octal string";function rN(t,e,r){if(typeof t>"u"&&(t=r),typeof t=="string"){if(WE(eN,t)===null)throw new ao(e,t,tN);t=zL(t,8)}return zE(t,e),t}const nN=hr((t,e,r=WL,n=jL)=>{if(typeof t!="number")throw new Pt(e,"number",t);if(!fg(t))throw new Ki(e,"an integer",t);if(t<r||t>n)throw new Ki(e,`>= ${r} && <= ${n}`,t)}),iN=hr((t,e,r=-2147483648,n=2147483647)=>{if(typeof t!="number")throw new Pt(e,"number",t);if(!fg(t))throw new Ki(e,"an integer",t);if(t<r||t>n)throw new Ki(e,`>= ${r} && <= ${n}`,t)}),zE=hr((t,e,r=!1)=>{if(typeof t!="number")throw new Pt(e,"number",t);if(!fg(t))throw new Ki(e,"an integer",t);const n=r?1:0,s=4294967295;if(t<n||t>s)throw new Ki(e,`>= ${n} && <= ${s}`,t)});function dg(t,e){if(typeof t!="string")throw new Pt(e,"string",t)}function sN(t,e,r=void 0,n){if(typeof t!="number")throw new Pt(e,"number",t);if(r!=null&&t<r||n!=null&&t>n||(r!=null||n!=null)&&UL(t))throw new Ki(e,`${r!=null?`>= ${r}`:""}${r!=null&&n!=null?" && ":""}${n!=null?`<= ${n}`:""}`,t)}const oN=hr((t,e,r)=>{if(!UE(r,t)){const s="must be one of: "+jE(FL(r,i=>typeof i=="string"?`'${i}'`:VL(i)),", ");throw new ao(e,t,s)}});function HE(t,e){if(typeof t!="boolean")throw new Pt(e,"boolean",t)}function Gc(t,e,r){return t==null||!HL(t,e)?r:t[e]}const aN=hr((t,e,r=null)=>{const n=Gc(r,"allowArray",!1),s=Gc(r,"allowFunction",!1);if(!Gc(r,"nullable",!1)&&t===null||!n&&cg(t)||typeof t!="object"&&(!s||typeof t!="function"))throw new Pt(e,"Object",t)}),lN=hr((t,e)=>{if(t!=null&&typeof t!="object"&&typeof t!="function")throw new Pt(e,"a dictionary",t)}),Hu=hr((t,e,r=0)=>{if(!cg(t))throw new Pt(e,"Array",t);if(t.length<r){const n=`must be longer than ${r}`;throw new ao(e,t,n)}});function uN(t,e){Hu(t,e);for(let r=0;r<t.length;r++)dg(t[r],`${e}[${r}]`)}function cN(t,e){Hu(t,e);for(let r=0;r<t.length;r++)HE(t[r],`${e}[${r}]`)}function fN(t,e){Hu(t,e);for(let r=0;r<t.length;r++){const n=t[r],s=`${e}[${r}]`;if(n==null)throw new Pt(s,"AbortSignal",n);VE(n,s)}}function dN(t,e="signal"){if(dg(t,e),cb[t]===void 0)throw cb[qL(t)]!==void 0?new ub(t+" (signals must use all capital letters)"):new ub(t)}const hN=hr((t,e="buffer")=>{if(!QL(t))throw new Pt(e,["Buffer","TypedArray","DataView"],t)});function pN(t,e){const r=KL(e),n=t.length;if(r==="hex"&&n%2!==0)throw new ao("encoding",e,`is invalid for data of length ${n}`)}function gN(t,e="Port",r=!0){if(typeof t!="number"&&typeof t!="string"||typeof t=="string"&&YL(t).length===0||+t!==+t>>>0||t>65535||t===0&&!r)throw new GL(e,t,r);return t|0}const VE=hr((t,e)=>{if(t!==void 0&&(t===null||typeof t!="object"||!("aborted"in t)))throw new Pt(e,"AbortSignal",t)}),mN=hr((t,e)=>{if(typeof t!="function")throw new Pt(e,"Function",t)}),bN=hr((t,e)=>{if(typeof t!="function"||XL(t))throw new Pt(e,"Function",t)}),yN=hr((t,e)=>{if(t!==void 0)throw new Pt(e,"undefined",t)});function wN(t,e,r){if(!UE(r,t))throw new Pt(e,`('${jE(r,"|")}')`,t)}const vN=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function fb(t,e){if(typeof t>"u"||!WE(vN,t))throw new ao(e,t,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function _N(t){if(typeof t=="string")return fb(t,"hints"),t;if(cg(t)){const e=t.length;let r="";if(e===0)return r;for(let n=0;n<e;n++){const s=t[n];fb(s,"hints"),r+=s,n!==e-1&&(r+=", ")}return r}throw new ao("hints",t,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}var ya={isInt32:JL,isUint32:ZL,parseFileMode:rN,validateArray:Hu,validateStringArray:uN,validateBooleanArray:cN,validateAbortSignalArray:fN,validateBoolean:HE,validateBuffer:hN,validateDictionary:lN,validateEncoding:pN,validateFunction:mN,validateInt32:iN,validateInteger:nN,validateNumber:sN,validateObject:aN,validateOneOf:oN,validatePlainFunction:bN,validatePort:gN,validateSignalName:dN,validateString:dg,validateUint32:zE,validateUndefined:yN,validateUnion:wN,validateAbortSignal:VE,validateLinkHeaderValue:_N},hg={exports:{}},qE={exports:{}},ut=qE.exports={},kr,Lr;function Rh(){throw new Error("setTimeout has not been defined")}function Ph(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?kr=setTimeout:kr=Rh}catch{kr=Rh}try{typeof clearTimeout=="function"?Lr=clearTimeout:Lr=Ph}catch{Lr=Ph}})();function YE(t){if(kr===setTimeout)return setTimeout(t,0);if((kr===Rh||!kr)&&setTimeout)return kr=setTimeout,setTimeout(t,0);try{return kr(t,0)}catch{try{return kr.call(null,t,0)}catch{return kr.call(this,t,0)}}}function EN(t){if(Lr===clearTimeout)return clearTimeout(t);if((Lr===Ph||!Lr)&&clearTimeout)return Lr=clearTimeout,clearTimeout(t);try{return Lr(t)}catch{try{return Lr.call(null,t)}catch{return Lr.call(this,t)}}}var fn=[],Ds=!1,Pi,Il=-1;function SN(){!Ds||!Pi||(Ds=!1,Pi.length?fn=Pi.concat(fn):Il=-1,fn.length&&GE())}function GE(){if(!Ds){var t=YE(SN);Ds=!0;for(var e=fn.length;e;){for(Pi=fn,fn=[];++Il<e;)Pi&&Pi[Il].run();Il=-1,e=fn.length}Pi=null,Ds=!1,EN(t)}}ut.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];fn.push(new KE(t,e)),fn.length===1&&!Ds&&YE(GE)};function KE(t,e){this.fun=t,this.array=e}KE.prototype.run=function(){this.fun.apply(null,this.array)};ut.title="browser";ut.browser=!0;ut.env={};ut.argv=[];ut.version="";ut.versions={};function Rn(){}ut.on=Rn;ut.addListener=Rn;ut.once=Rn;ut.off=Rn;ut.removeListener=Rn;ut.removeAllListeners=Rn;ut.emit=Rn;ut.prependListener=Rn;ut.prependOnceListener=Rn;ut.listeners=function(t){return[]};ut.binding=function(t){throw new Error("process.binding is not supported")};ut.cwd=function(){return"/"};ut.chdir=function(t){throw new Error("process.chdir is not supported")};ut.umask=function(){return 0};var os=qE.exports;const{SymbolAsyncIterator:db,SymbolIterator:hb,SymbolFor:as}=at,XE=as("nodejs.stream.destroyed"),QE=as("nodejs.stream.errored"),kh=as("nodejs.stream.readable"),Lh=as("nodejs.stream.writable"),JE=as("nodejs.stream.disturbed"),TN=as("nodejs.webstream.isClosedPromise"),xN=as("nodejs.webstream.controllerErrorFunction");function Vu(t,e=!1){var r;return!!(t&&typeof t.pipe=="function"&&typeof t.on=="function"&&(!e||typeof t.pause=="function"&&typeof t.resume=="function")&&(!t._writableState||((r=t._readableState)===null||r===void 0?void 0:r.readable)!==!1)&&(!t._writableState||t._readableState))}function qu(t){var e;return!!(t&&typeof t.write=="function"&&typeof t.on=="function"&&(!t._readableState||((e=t._writableState)===null||e===void 0?void 0:e.writable)!==!1))}function AN(t){return!!(t&&typeof t.pipe=="function"&&t._readableState&&typeof t.on=="function"&&typeof t.write=="function")}function Gr(t){return t&&(t._readableState||t._writableState||typeof t.write=="function"&&typeof t.on=="function"||typeof t.pipe=="function"&&typeof t.on=="function")}function ZE(t){return!!(t&&!Gr(t)&&typeof t.pipeThrough=="function"&&typeof t.getReader=="function"&&typeof t.cancel=="function")}function e1(t){return!!(t&&!Gr(t)&&typeof t.getWriter=="function"&&typeof t.abort=="function")}function t1(t){return!!(t&&!Gr(t)&&typeof t.readable=="object"&&typeof t.writable=="object")}function CN(t){return ZE(t)||e1(t)||t1(t)}function IN(t,e){return t==null?!1:e===!0?typeof t[db]=="function":e===!1?typeof t[hb]=="function":typeof t[db]=="function"||typeof t[hb]=="function"}function Yu(t){if(!Gr(t))return null;const e=t._writableState,r=t._readableState,n=e||r;return!!(t.destroyed||t[XE]||n!=null&&n.destroyed)}function r1(t){if(!qu(t))return null;if(t.writableEnded===!0)return!0;const e=t._writableState;return e!=null&&e.errored?!1:typeof(e==null?void 0:e.ended)!="boolean"?null:e.ended}function MN(t,e){if(!qu(t))return null;if(t.writableFinished===!0)return!0;const r=t._writableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.finished)!="boolean"?null:!!(r.finished||e===!1&&r.ended===!0&&r.length===0)}function ON(t){if(!Vu(t))return null;if(t.readableEnded===!0)return!0;const e=t._readableState;return!e||e.errored?!1:typeof(e==null?void 0:e.ended)!="boolean"?null:e.ended}function n1(t,e){if(!Vu(t))return null;const r=t._readableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.endEmitted)!="boolean"?null:!!(r.endEmitted||e===!1&&r.ended===!0&&r.length===0)}function i1(t){return t&&t[kh]!=null?t[kh]:typeof(t==null?void 0:t.readable)!="boolean"?null:Yu(t)?!1:Vu(t)&&t.readable&&!n1(t)}function s1(t){return t&&t[Lh]!=null?t[Lh]:typeof(t==null?void 0:t.writable)!="boolean"?null:Yu(t)?!1:qu(t)&&t.writable&&!r1(t)}function RN(t,e){return Gr(t)?Yu(t)?!0:!((e==null?void 0:e.readable)!==!1&&i1(t)||(e==null?void 0:e.writable)!==!1&&s1(t)):null}function PN(t){var e,r;return Gr(t)?t.writableErrored?t.writableErrored:(e=(r=t._writableState)===null||r===void 0?void 0:r.errored)!==null&&e!==void 0?e:null:null}function kN(t){var e,r;return Gr(t)?t.readableErrored?t.readableErrored:(e=(r=t._readableState)===null||r===void 0?void 0:r.errored)!==null&&e!==void 0?e:null:null}function LN(t){if(!Gr(t))return null;if(typeof t.closed=="boolean")return t.closed;const e=t._writableState,r=t._readableState;return typeof(e==null?void 0:e.closed)=="boolean"||typeof(r==null?void 0:r.closed)=="boolean"?(e==null?void 0:e.closed)||(r==null?void 0:r.closed):typeof t._closed=="boolean"&&o1(t)?t._closed:null}function o1(t){return typeof t._closed=="boolean"&&typeof t._defaultKeepAlive=="boolean"&&typeof t._removedConnection=="boolean"&&typeof t._removedContLen=="boolean"}function a1(t){return typeof t._sent100=="boolean"&&o1(t)}function NN(t){var e;return typeof t._consuming=="boolean"&&typeof t._dumped=="boolean"&&((e=t.req)===null||e===void 0?void 0:e.upgradeOrConnect)===void 0}function DN(t){if(!Gr(t))return null;const e=t._writableState,r=t._readableState,n=e||r;return!n&&a1(t)||!!(n&&n.autoDestroy&&n.emitClose&&n.closed===!1)}function BN(t){var e;return!!(t&&((e=t[JE])!==null&&e!==void 0?e:t.readableDidRead||t.readableAborted))}function $N(t){var e,r,n,s,i,o,a,l,u,c;return!!(t&&((e=(r=(n=(s=(i=(o=t[QE])!==null&&o!==void 0?o:t.readableErrored)!==null&&i!==void 0?i:t.writableErrored)!==null&&s!==void 0?s:(a=t._readableState)===null||a===void 0?void 0:a.errorEmitted)!==null&&n!==void 0?n:(l=t._writableState)===null||l===void 0?void 0:l.errorEmitted)!==null&&r!==void 0?r:(u=t._readableState)===null||u===void 0?void 0:u.errored)!==null&&e!==void 0?e:!((c=t._writableState)===null||c===void 0)&&c.errored))}var Pn={isDestroyed:Yu,kIsDestroyed:XE,isDisturbed:BN,kIsDisturbed:JE,isErrored:$N,kIsErrored:QE,isReadable:i1,kIsReadable:kh,kIsClosedPromise:TN,kControllerErrorFunction:xN,kIsWritable:Lh,isClosed:LN,isDuplexNodeStream:AN,isFinished:RN,isIterable:IN,isReadableNodeStream:Vu,isReadableStream:ZE,isReadableEnded:ON,isReadableFinished:n1,isReadableErrored:kN,isNodeStream:Gr,isWebStream:CN,isWritable:s1,isWritableNodeStream:qu,isWritableStream:e1,isWritableEnded:r1,isWritableFinished:MN,isWritableErrored:PN,isServerRequest:NN,isServerResponse:a1,willEmitClose:DN,isTransformStream:t1};const Vn=os,{AbortError:l1,codes:FN}=Vt,{ERR_INVALID_ARG_TYPE:UN,ERR_STREAM_PREMATURE_CLOSE:pb}=FN,{kEmptyObject:Nh,once:Dh}=Dt,{validateAbortSignal:jN,validateFunction:WN,validateObject:zN,validateBoolean:HN}=ya,{Promise:VN,PromisePrototypeThen:qN,SymbolDispose:u1}=at,{isClosed:YN,isReadable:gb,isReadableNodeStream:Kc,isReadableStream:GN,isReadableFinished:mb,isReadableErrored:bb,isWritable:yb,isWritableNodeStream:wb,isWritableStream:KN,isWritableFinished:vb,isWritableErrored:_b,isNodeStream:XN,willEmitClose:QN,kIsClosedPromise:JN}=Pn;let Bs;function ZN(t){return t.setHeader&&typeof t.abort=="function"}const Bh=()=>{};function c1(t,e,r){var n,s;if(arguments.length===2?(r=e,e=Nh):e==null?e=Nh:zN(e,"options"),WN(r,"callback"),jN(e.signal,"options.signal"),r=Dh(r),GN(t)||KN(t))return e2(t,e,r);if(!XN(t))throw new UN("stream",["ReadableStream","WritableStream","Stream"],t);const i=(n=e.readable)!==null&&n!==void 0?n:Kc(t),o=(s=e.writable)!==null&&s!==void 0?s:wb(t),a=t._writableState,l=t._readableState,u=()=>{t.writable||d()};let c=QN(t)&&Kc(t)===i&&wb(t)===o,f=vb(t,!1);const d=()=>{f=!0,t.destroyed&&(c=!1),!(c&&(!t.readable||i))&&(!i||g)&&r.call(t)};let g=mb(t,!1);const m=()=>{g=!0,t.destroyed&&(c=!1),!(c&&(!t.writable||o))&&(!o||f)&&r.call(t)},y=M=>{r.call(t,M)};let _=YN(t);const S=()=>{_=!0;const M=_b(t)||bb(t);if(M&&typeof M!="boolean")return r.call(t,M);if(i&&!g&&Kc(t,!0)&&!mb(t,!1))return r.call(t,new pb);if(o&&!f&&!vb(t,!1))return r.call(t,new pb);r.call(t)},E=()=>{_=!0;const M=_b(t)||bb(t);if(M&&typeof M!="boolean")return r.call(t,M);r.call(t)},v=()=>{t.req.on("finish",d)};ZN(t)?(t.on("complete",d),c||t.on("abort",S),t.req?v():t.on("request",v)):o&&!a&&(t.on("end",u),t.on("close",u)),!c&&typeof t.aborted=="boolean"&&t.on("aborted",S),t.on("end",m),t.on("finish",d),e.error!==!1&&t.on("error",y),t.on("close",S),_?Vn.nextTick(S):a!=null&&a.errorEmitted||l!=null&&l.errorEmitted?c||Vn.nextTick(E):(!i&&(!c||gb(t))&&(f||yb(t)===!1)||!o&&(!c||yb(t))&&(g||gb(t)===!1)||l&&t.req&&t.aborted)&&Vn.nextTick(E);const x=()=>{r=Bh,t.removeListener("aborted",S),t.removeListener("complete",d),t.removeListener("abort",S),t.removeListener("request",v),t.req&&t.req.removeListener("finish",d),t.removeListener("end",u),t.removeListener("close",u),t.removeListener("finish",d),t.removeListener("end",m),t.removeListener("error",y),t.removeListener("close",S)};if(e.signal&&!_){const M=()=>{const A=r;x(),A.call(t,new l1(void 0,{cause:e.signal.reason}))};if(e.signal.aborted)Vn.nextTick(M);else{Bs=Bs||Dt.addAbortListener;const A=Bs(e.signal,M),L=r;r=Dh((...D)=>{A[u1](),L.apply(t,D)})}}return x}function e2(t,e,r){let n=!1,s=Bh;if(e.signal)if(s=()=>{n=!0,r.call(t,new l1(void 0,{cause:e.signal.reason}))},e.signal.aborted)Vn.nextTick(s);else{Bs=Bs||Dt.addAbortListener;const o=Bs(e.signal,s),a=r;r=Dh((...l)=>{o[u1](),a.apply(t,l)})}const i=(...o)=>{n||Vn.nextTick(()=>r.apply(t,o))};return qN(t[JN].promise,i,i),Bh}function t2(t,e){var r;let n=!1;return e===null&&(e=Nh),(r=e)!==null&&r!==void 0&&r.cleanup&&(HN(e.cleanup,"cleanup"),n=e.cleanup),new VN((s,i)=>{const o=c1(t,e,a=>{n&&o(),a?i(a):s()})})}hg.exports=c1;hg.exports.finished=t2;var si=hg.exports;const jr=os,{aggregateTwoErrors:r2,codes:{ERR_MULTIPLE_CALLBACK:n2},AbortError:i2}=Vt,{Symbol:f1}=at,{kIsDestroyed:s2,isDestroyed:o2,isFinished:a2,isServerRequest:l2}=Pn,d1=f1("kDestroy"),$h=f1("kConstruct");function h1(t,e,r){t&&(t.stack,e&&!e.errored&&(e.errored=t),r&&!r.errored&&(r.errored=t))}function u2(t,e){const r=this._readableState,n=this._writableState,s=n||r;return n!=null&&n.destroyed||r!=null&&r.destroyed?(typeof e=="function"&&e(),this):(h1(t,n,r),n&&(n.destroyed=!0),r&&(r.destroyed=!0),s.constructed?Eb(this,t,e):this.once(d1,function(i){Eb(this,r2(i,t),e)}),this)}function Eb(t,e,r){let n=!1;function s(i){if(n)return;n=!0;const o=t._readableState,a=t._writableState;h1(i,a,o),a&&(a.closed=!0),o&&(o.closed=!0),typeof r=="function"&&r(i),i?jr.nextTick(c2,t,i):jr.nextTick(p1,t)}try{t._destroy(e||null,s)}catch(i){s(i)}}function c2(t,e){Fh(t,e),p1(t)}function p1(t){const e=t._readableState,r=t._writableState;r&&(r.closeEmitted=!0),e&&(e.closeEmitted=!0),(r!=null&&r.emitClose||e!=null&&e.emitClose)&&t.emit("close")}function Fh(t,e){const r=t._readableState,n=t._writableState;n!=null&&n.errorEmitted||r!=null&&r.errorEmitted||(n&&(n.errorEmitted=!0),r&&(r.errorEmitted=!0),t.emit("error",e))}function f2(){const t=this._readableState,e=this._writableState;t&&(t.constructed=!0,t.closed=!1,t.closeEmitted=!1,t.destroyed=!1,t.errored=null,t.errorEmitted=!1,t.reading=!1,t.ended=t.readable===!1,t.endEmitted=t.readable===!1),e&&(e.constructed=!0,e.destroyed=!1,e.closed=!1,e.closeEmitted=!1,e.errored=null,e.errorEmitted=!1,e.finalCalled=!1,e.prefinished=!1,e.ended=e.writable===!1,e.ending=e.writable===!1,e.finished=e.writable===!1)}function Uh(t,e,r){const n=t._readableState,s=t._writableState;if(s!=null&&s.destroyed||n!=null&&n.destroyed)return this;n!=null&&n.autoDestroy||s!=null&&s.autoDestroy?t.destroy(e):e&&(e.stack,s&&!s.errored&&(s.errored=e),n&&!n.errored&&(n.errored=e),r?jr.nextTick(Fh,t,e):Fh(t,e))}function d2(t,e){if(typeof t._construct!="function")return;const r=t._readableState,n=t._writableState;r&&(r.constructed=!1),n&&(n.constructed=!1),t.once($h,e),!(t.listenerCount($h)>1)&&jr.nextTick(h2,t)}function h2(t){let e=!1;function r(n){if(e){Uh(t,n??new n2);return}e=!0;const s=t._readableState,i=t._writableState,o=i||s;s&&(s.constructed=!0),i&&(i.constructed=!0),o.destroyed?t.emit(d1,n):n?Uh(t,n,!0):jr.nextTick(p2,t)}try{t._construct(n=>{jr.nextTick(r,n)})}catch(n){jr.nextTick(r,n)}}function p2(t){t.emit($h)}function Sb(t){return(t==null?void 0:t.setHeader)&&typeof t.abort=="function"}function g1(t){t.emit("close")}function g2(t,e){t.emit("error",e),jr.nextTick(g1,t)}function m2(t,e){!t||o2(t)||(!e&&!a2(t)&&(e=new i2),l2(t)?(t.socket=null,t.destroy(e)):Sb(t)?t.abort():Sb(t.req)?t.req.abort():typeof t.destroy=="function"?t.destroy(e):typeof t.close=="function"?t.close():e?jr.nextTick(g2,t,e):jr.nextTick(g1,t),t.destroyed||(t[s2]=!0))}var lo={construct:d2,destroyer:m2,destroy:u2,undestroy:f2,errorOrDestroy:Uh};const{ArrayIsArray:b2,ObjectSetPrototypeOf:m1}=at,{EventEmitter:Gu}=Wu;function Ku(t){Gu.call(this,t)}m1(Ku.prototype,Gu.prototype);m1(Ku,Gu);Ku.prototype.pipe=function(t,e){const r=this;function n(c){t.writable&&t.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function s(){r.readable&&r.resume&&r.resume()}t.on("drain",s),!t._isStdio&&(!e||e.end!==!1)&&(r.on("end",o),r.on("close",a));let i=!1;function o(){i||(i=!0,t.end())}function a(){i||(i=!0,typeof t.destroy=="function"&&t.destroy())}function l(c){u(),Gu.listenerCount(this,"error")===0&&this.emit("error",c)}jh(r,"error",l),jh(t,"error",l);function u(){r.removeListener("data",n),t.removeListener("drain",s),r.removeListener("end",o),r.removeListener("close",a),r.removeListener("error",l),t.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),t.removeListener("close",u)}return r.on("end",u),r.on("close",u),t.on("close",u),t.emit("pipe",r),t};function jh(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):b2(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}var pg={Stream:Ku,prependListener:jh},b1={exports:{}};(function(t){const{SymbolDispose:e}=at,{AbortError:r,codes:n}=Vt,{isNodeStream:s,isWebStream:i,kControllerErrorFunction:o}=Pn,a=si,{ERR_INVALID_ARG_TYPE:l}=n;let u;const c=(f,d)=>{if(typeof f!="object"||!("aborted"in f))throw new l(d,"AbortSignal",f)};t.exports.addAbortSignal=function(d,g){if(c(d,"signal"),!s(g)&&!i(g))throw new l("stream",["ReadableStream","WritableStream","Stream"],g);return t.exports.addAbortSignalNoValidate(d,g)},t.exports.addAbortSignalNoValidate=function(f,d){if(typeof f!="object"||!("aborted"in f))return d;const g=s(d)?()=>{d.destroy(new r(void 0,{cause:f.reason}))}:()=>{d[o](new r(void 0,{cause:f.reason}))};if(f.aborted)g();else{u=u||Dt.addAbortListener;const m=u(f,g);a(d,m[e])}return d}})(b1);var Xu=b1.exports;const{StringPrototypeSlice:Tb,SymbolIterator:y2,TypedArrayPrototypeSet:Ga,Uint8Array:w2}=at,{Buffer:Xc}=nr,{inspect:v2}=Dt;var _2=class{constructor(){this.head=null,this.tail=null,this.length=0}push(e){const r={data:e,next:null};this.length>0?this.tail.next=r:this.head=r,this.tail=r,++this.length}unshift(e){const r={data:e,next:this.head};this.length===0&&(this.tail=r),this.head=r,++this.length}shift(){if(this.length===0)return;const e=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,e}clear(){this.head=this.tail=null,this.length=0}join(e){if(this.length===0)return"";let r=this.head,n=""+r.data;for(;(r=r.next)!==null;)n+=e+r.data;return n}concat(e){if(this.length===0)return Xc.alloc(0);const r=Xc.allocUnsafe(e>>>0);let n=this.head,s=0;for(;n;)Ga(r,n.data,s),s+=n.data.length,n=n.next;return r}consume(e,r){const n=this.head.data;if(e<n.length){const s=n.slice(0,e);return this.head.data=n.slice(e),s}return e===n.length?this.shift():r?this._getString(e):this._getBuffer(e)}first(){return this.head.data}*[y2](){for(let e=this.head;e;e=e.next)yield e.data}_getString(e){let r="",n=this.head,s=0;do{const i=n.data;if(e>i.length)r+=i,e-=i.length;else{e===i.length?(r+=i,++s,n.next?this.head=n.next:this.head=this.tail=null):(r+=Tb(i,0,e),this.head=n,n.data=Tb(i,e));break}++s}while((n=n.next)!==null);return this.length-=s,r}_getBuffer(e){const r=Xc.allocUnsafe(e),n=e;let s=this.head,i=0;do{const o=s.data;if(e>o.length)Ga(r,o,n-e),e-=o.length;else{e===o.length?(Ga(r,o,n-e),++i,s.next?this.head=s.next:this.head=this.tail=null):(Ga(r,new w2(o.buffer,o.byteOffset,e),n-e),this.head=s,s.data=o.slice(e));break}++i}while((s=s.next)!==null);return this.length-=i,r}[Symbol.for("nodejs.util.inspect.custom")](e,r){return v2(this,{...r,depth:0,customInspect:!1})}};const{MathFloor:E2,NumberIsInteger:S2}=at,{validateInteger:T2}=ya,{ERR_INVALID_ARG_VALUE:x2}=Vt.codes;let y1=16*1024,w1=16;function A2(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function v1(t){return t?w1:y1}function C2(t,e){T2(e,"value",0),t?w1=e:y1=e}function I2(t,e,r,n){const s=A2(e,n,r);if(s!=null){if(!S2(s)||s<0){const i=n?`options.${r}`:"options.highWaterMark";throw new x2(i,s)}return E2(s)}return v1(t.objectMode)}var Qu={getHighWaterMark:I2,getDefaultHighWaterMark:v1,setDefaultHighWaterMark:C2},_1={},Wh={exports:{}};/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */(function(t,e){var r=nr,n=r.Buffer;function s(o,a){for(var l in o)a[l]=o[l]}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=r:(s(r,e),e.Buffer=i);function i(o,a,l){return n(o,a,l)}i.prototype=Object.create(n.prototype),s(n,i),i.from=function(o,a,l){if(typeof o=="number")throw new TypeError("Argument must not be a number");return n(o,a,l)},i.alloc=function(o,a,l){if(typeof o!="number")throw new TypeError("Argument must be a number");var u=n(o);return a!==void 0?typeof l=="string"?u.fill(a,l):u.fill(a):u.fill(0),u},i.allocUnsafe=function(o){if(typeof o!="number")throw new TypeError("Argument must be a number");return n(o)},i.allocUnsafeSlow=function(o){if(typeof o!="number")throw new TypeError("Argument must be a number");return r.SlowBuffer(o)}})(Wh,Wh.exports);var M2=Wh.exports,gg=M2.Buffer,xb=gg.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function O2(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function R2(t){var e=O2(t);if(typeof e!="string"&&(gg.isEncoding===xb||!xb(t)))throw new Error("Unknown encoding: "+t);return e||t}_1.StringDecoder=wa;function wa(t){this.encoding=R2(t);var e;switch(this.encoding){case"utf16le":this.text=B2,this.end=$2,e=4;break;case"utf8":this.fillLast=L2,e=4;break;case"base64":this.text=F2,this.end=U2,e=3;break;default:this.write=j2,this.end=W2;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=gg.allocUnsafe(e)}wa.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||""};wa.prototype.end=D2;wa.prototype.text=N2;wa.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length};function Qc(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function P2(t,e,r){var n=e.length-1;if(n<r)return 0;var s=Qc(e[n]);return s>=0?(s>0&&(t.lastNeed=s-1),s):--n<r||s===-2?0:(s=Qc(e[n]),s>=0?(s>0&&(t.lastNeed=s-2),s):--n<r||s===-2?0:(s=Qc(e[n]),s>=0?(s>0&&(s===2?s=0:t.lastNeed=s-3),s):0))}function k2(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"�"}}function L2(t){var e=this.lastTotal-this.lastNeed,r=k2(this,t);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function N2(t,e){var r=P2(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)}function D2(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e}function B2(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function $2(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function F2(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function U2(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function j2(t){return t.toString(this.encoding)}function W2(t){return t&&t.length?this.write(t):""}const Ab=os,{PromisePrototypeThen:z2,SymbolAsyncIterator:Cb,SymbolIterator:Ib}=at,{Buffer:H2}=nr,{ERR_INVALID_ARG_TYPE:V2,ERR_STREAM_NULL_VALUES:q2}=Vt.codes;function Y2(t,e,r){let n;if(typeof e=="string"||e instanceof H2)return new t({objectMode:!0,...r,read(){this.push(e),this.push(null)}});let s;if(e&&e[Cb])s=!0,n=e[Cb]();else if(e&&e[Ib])s=!1,n=e[Ib]();else throw new V2("iterable",["Iterable"],e);const i=new t({objectMode:!0,highWaterMark:1,...r});let o=!1;i._read=function(){o||(o=!0,l())},i._destroy=function(u,c){z2(a(u),()=>Ab.nextTick(c,u),f=>Ab.nextTick(c,f||u))};async function a(u){const c=u!=null,f=typeof n.throw=="function";if(c&&f){const{value:d,done:g}=await n.throw(u);if(await d,g)return}if(typeof n.return=="function"){const{value:d}=await n.return();await d}}async function l(){for(;;){try{const{value:u,done:c}=s?await n.next():n.next();if(c)i.push(null);else{const f=u&&typeof u.then=="function"?await u:u;if(f===null)throw o=!1,new q2;if(i.push(f))continue;o=!1}}catch(u){i.destroy(u)}break}}return i}var E1=Y2,Jc,Mb;function Ju(){if(Mb)return Jc;Mb=1;const t=os,{ArrayPrototypeIndexOf:e,NumberIsInteger:r,NumberIsNaN:n,NumberParseInt:s,ObjectDefineProperties:i,ObjectKeys:o,ObjectSetPrototypeOf:a,Promise:l,SafeSet:u,SymbolAsyncDispose:c,SymbolAsyncIterator:f,Symbol:d}=at;Jc=F,F.ReadableState=te;const{EventEmitter:g}=Wu,{Stream:m,prependListener:y}=pg,{Buffer:_}=nr,{addAbortSignal:S}=Xu,E=si;let v=Dt.debuglog("stream",Z=>{v=Z});const x=_2,M=lo,{getHighWaterMark:A,getDefaultHighWaterMark:L}=Qu,{aggregateTwoErrors:D,codes:{ERR_INVALID_ARG_TYPE:B,ERR_METHOD_NOT_IMPLEMENTED:q,ERR_OUT_OF_RANGE:Y,ERR_STREAM_PUSH_AFTER_EOF:R,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:I},AbortError:N}=Vt,{validateObject:W}=ya,G=d("kPaused"),{StringDecoder:H}=_1,$=E1;a(F.prototype,m.prototype),a(F,m);const ne=()=>{},{errorOrDestroy:ue}=M,re=1,k=2,Q=4,de=8,ge=16,me=32,X=64,K=128,ie=256,be=512,he=1024,ce=2048,C=4096,P=8192,O=16384,j=32768,z=65536,oe=1<<17,fe=1<<18;function V(Z){return{enumerable:!1,get(){return(this.state&Z)!==0},set(ae){ae?this.state|=Z:this.state&=~Z}}}i(te.prototype,{objectMode:V(re),ended:V(k),endEmitted:V(Q),reading:V(de),constructed:V(ge),sync:V(me),needReadable:V(X),emittedReadable:V(K),readableListening:V(ie),resumeScheduled:V(be),errorEmitted:V(he),emitClose:V(ce),autoDestroy:V(C),destroyed:V(P),closed:V(O),closeEmitted:V(j),multiAwaitDrain:V(z),readingMore:V(oe),dataEmitted:V(fe)});function te(Z,ae,Ce){typeof Ce!="boolean"&&(Ce=ae instanceof Tn()),this.state=ce|C|ge|me,Z&&Z.objectMode&&(this.state|=re),Ce&&Z&&Z.readableObjectMode&&(this.state|=re),this.highWaterMark=Z?A(this,Z,"readableHighWaterMark",Ce):L(!1),this.buffer=new x,this.length=0,this.pipes=[],this.flowing=null,this[G]=null,Z&&Z.emitClose===!1&&(this.state&=~ce),Z&&Z.autoDestroy===!1&&(this.state&=~C),this.errored=null,this.defaultEncoding=Z&&Z.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,Z&&Z.encoding&&(this.decoder=new H(Z.encoding),this.encoding=Z.encoding)}function F(Z){if(!(this instanceof F))return new F(Z);const ae=this instanceof Tn();this._readableState=new te(Z,this,ae),Z&&(typeof Z.read=="function"&&(this._read=Z.read),typeof Z.destroy=="function"&&(this._destroy=Z.destroy),typeof Z.construct=="function"&&(this._construct=Z.construct),Z.signal&&!ae&&S(Z.signal,this)),m.call(this,Z),M.construct(this,()=>{this._readableState.needReadable&&U(this,this._readableState)})}F.prototype.destroy=M.destroy,F.prototype._undestroy=M.undestroy,F.prototype._destroy=function(Z,ae){ae(Z)},F.prototype[g.captureRejectionSymbol]=function(Z){this.destroy(Z)},F.prototype[c]=function(){let Z;return this.destroyed||(Z=this.readableEnded?null:new N,this.destroy(Z)),new l((ae,Ce)=>E(this,Ie=>Ie&&Ie!==Z?Ce(Ie):ae(null)))},F.prototype.push=function(Z,ae){return J(this,Z,ae,!1)},F.prototype.unshift=function(Z,ae){return J(this,Z,ae,!0)};function J(Z,ae,Ce,Ie){v("readableAddChunk",ae);const Pe=Z._readableState;let xt;if(Pe.state&re||(typeof ae=="string"?(Ce=Ce||Pe.defaultEncoding,Pe.encoding!==Ce&&(Ie&&Pe.encoding?ae=_.from(ae,Ce).toString(Pe.encoding):(ae=_.from(ae,Ce),Ce=""))):ae instanceof _?Ce="":m._isUint8Array(ae)?(ae=m._uint8ArrayToBuffer(ae),Ce=""):ae!=null&&(xt=new B("chunk",["string","Buffer","Uint8Array"],ae))),xt)ue(Z,xt);else if(ae===null)Pe.state&=~de,h(Z,Pe);else if(Pe.state&re||ae&&ae.length>0)if(Ie)if(Pe.state&Q)ue(Z,new I);else{if(Pe.destroyed||Pe.errored)return!1;se(Z,Pe,ae,!0)}else if(Pe.ended)ue(Z,new R);else{if(Pe.destroyed||Pe.errored)return!1;Pe.state&=~de,Pe.decoder&&!Ce?(ae=Pe.decoder.write(ae),Pe.objectMode||ae.length!==0?se(Z,Pe,ae,!1):U(Z,Pe)):se(Z,Pe,ae,!1)}else Ie||(Pe.state&=~de,U(Z,Pe));return!Pe.ended&&(Pe.length<Pe.highWaterMark||Pe.length===0)}function se(Z,ae,Ce,Ie){ae.flowing&&ae.length===0&&!ae.sync&&Z.listenerCount("data")>0?(ae.state&z?ae.awaitDrainWriters.clear():ae.awaitDrainWriters=null,ae.dataEmitted=!0,Z.emit("data",Ce)):(ae.length+=ae.objectMode?1:Ce.length,Ie?ae.buffer.unshift(Ce):ae.buffer.push(Ce),ae.state&X&&b(Z)),U(Z,ae)}F.prototype.isPaused=function(){const Z=this._readableState;return Z[G]===!0||Z.flowing===!1},F.prototype.setEncoding=function(Z){const ae=new H(Z);this._readableState.decoder=ae,this._readableState.encoding=this._readableState.decoder.encoding;const Ce=this._readableState.buffer;let Ie="";for(const Pe of Ce)Ie+=ae.write(Pe);return Ce.clear(),Ie!==""&&Ce.push(Ie),this._readableState.length=Ie.length,this};const pe=1073741824;function w(Z){if(Z>pe)throw new Y("size","<= 1GiB",Z);return Z--,Z|=Z>>>1,Z|=Z>>>2,Z|=Z>>>4,Z|=Z>>>8,Z|=Z>>>16,Z++,Z}function p(Z,ae){return Z<=0||ae.length===0&&ae.ended?0:ae.state&re?1:n(Z)?ae.flowing&&ae.length?ae.buffer.first().length:ae.length:Z<=ae.length?Z:ae.ended?ae.length:0}F.prototype.read=function(Z){v("read",Z),Z===void 0?Z=NaN:r(Z)||(Z=s(Z,10));const ae=this._readableState,Ce=Z;if(Z>ae.highWaterMark&&(ae.highWaterMark=w(Z)),Z!==0&&(ae.state&=~K),Z===0&&ae.needReadable&&((ae.highWaterMark!==0?ae.length>=ae.highWaterMark:ae.length>0)||ae.ended))return v("read: emitReadable",ae.length,ae.ended),ae.length===0&&ae.ended?lt(this):b(this),null;if(Z=p(Z,ae),Z===0&&ae.ended)return ae.length===0&&lt(this),null;let Ie=(ae.state&X)!==0;if(v("need readable",Ie),(ae.length===0||ae.length-Z<ae.highWaterMark)&&(Ie=!0,v("length less than watermark",Ie)),ae.ended||ae.reading||ae.destroyed||ae.errored||!ae.constructed)Ie=!1,v("reading, ended or constructing",Ie);else if(Ie){v("do read"),ae.state|=de|me,ae.length===0&&(ae.state|=X);try{this._read(ae.highWaterMark)}catch(xt){ue(this,xt)}ae.state&=~me,ae.reading||(Z=p(Ce,ae))}let Pe;return Z>0?Pe=Je(Z,ae):Pe=null,Pe===null?(ae.needReadable=ae.length<=ae.highWaterMark,Z=0):(ae.length-=Z,ae.multiAwaitDrain?ae.awaitDrainWriters.clear():ae.awaitDrainWriters=null),ae.length===0&&(ae.ended||(ae.needReadable=!0),Ce!==Z&&ae.ended&&lt(this)),Pe!==null&&!ae.errorEmitted&&!ae.closeEmitted&&(ae.dataEmitted=!0,this.emit("data",Pe)),Pe};function h(Z,ae){if(v("onEofChunk"),!ae.ended){if(ae.decoder){const Ce=ae.decoder.end();Ce&&Ce.length&&(ae.buffer.push(Ce),ae.length+=ae.objectMode?1:Ce.length)}ae.ended=!0,ae.sync?b(Z):(ae.needReadable=!1,ae.emittedReadable=!0,T(Z))}}function b(Z){const ae=Z._readableState;v("emitReadable",ae.needReadable,ae.emittedReadable),ae.needReadable=!1,ae.emittedReadable||(v("emitReadable",ae.flowing),ae.emittedReadable=!0,t.nextTick(T,Z))}function T(Z){const ae=Z._readableState;v("emitReadable_",ae.destroyed,ae.length,ae.ended),!ae.destroyed&&!ae.errored&&(ae.length||ae.ended)&&(Z.emit("readable"),ae.emittedReadable=!1),ae.needReadable=!ae.flowing&&!ae.ended&&ae.length<=ae.highWaterMark,Me(Z)}function U(Z,ae){!ae.readingMore&&ae.constructed&&(ae.readingMore=!0,t.nextTick(ee,Z,ae))}function ee(Z,ae){for(;!ae.reading&&!ae.ended&&(ae.length<ae.highWaterMark||ae.flowing&&ae.length===0);){const Ce=ae.length;if(v("maybeReadMore read 0"),Z.read(0),Ce===ae.length)break}ae.readingMore=!1}F.prototype._read=function(Z){throw new q("_read()")},F.prototype.pipe=function(Z,ae){const Ce=this,Ie=this._readableState;Ie.pipes.length===1&&(Ie.multiAwaitDrain||(Ie.multiAwaitDrain=!0,Ie.awaitDrainWriters=new u(Ie.awaitDrainWriters?[Ie.awaitDrainWriters]:[]))),Ie.pipes.push(Z),v("pipe count=%d opts=%j",Ie.pipes.length,ae);const xt=(!ae||ae.end!==!1)&&Z!==t.stdout&&Z!==t.stderr?Wg:mo;Ie.endEmitted?t.nextTick(xt):Ce.once("end",xt),Z.on("unpipe",ir);function ir(ci,Kr){v("onunpipe"),ci===Ce&&Kr&&Kr.hasUnpiped===!1&&(Kr.hasUnpiped=!0,QS())}function Wg(){v("onend"),Z.end()}let ui,zg=!1;function QS(){v("cleanup"),Z.removeListener("close",dc),Z.removeListener("finish",hc),ui&&Z.removeListener("drain",ui),Z.removeListener("error",fc),Z.removeListener("unpipe",ir),Ce.removeListener("end",Wg),Ce.removeListener("end",mo),Ce.removeListener("data",Vg),zg=!0,ui&&Ie.awaitDrainWriters&&(!Z._writableState||Z._writableState.needDrain)&&ui()}function Hg(){zg||(Ie.pipes.length===1&&Ie.pipes[0]===Z?(v("false write response, pause",0),Ie.awaitDrainWriters=Z,Ie.multiAwaitDrain=!1):Ie.pipes.length>1&&Ie.pipes.includes(Z)&&(v("false write response, pause",Ie.awaitDrainWriters.size),Ie.awaitDrainWriters.add(Z)),Ce.pause()),ui||(ui=ye(Ce,Z),Z.on("drain",ui))}Ce.on("data",Vg);function Vg(ci){v("ondata");const Kr=Z.write(ci);v("dest.write",Kr),Kr===!1&&Hg()}function fc(ci){if(v("onerror",ci),mo(),Z.removeListener("error",fc),Z.listenerCount("error")===0){const Kr=Z._writableState||Z._readableState;Kr&&!Kr.errorEmitted?ue(Z,ci):Z.emit("error",ci)}}y(Z,"error",fc);function dc(){Z.removeListener("finish",hc),mo()}Z.once("close",dc);function hc(){v("onfinish"),Z.removeListener("close",dc),mo()}Z.once("finish",hc);function mo(){v("unpipe"),Ce.unpipe(Z)}return Z.emit("pipe",Ce),Z.writableNeedDrain===!0?Hg():Ie.flowing||(v("pipe resume"),Ce.resume()),Z};function ye(Z,ae){return function(){const Ie=Z._readableState;Ie.awaitDrainWriters===ae?(v("pipeOnDrain",1),Ie.awaitDrainWriters=null):Ie.multiAwaitDrain&&(v("pipeOnDrain",Ie.awaitDrainWriters.size),Ie.awaitDrainWriters.delete(ae)),(!Ie.awaitDrainWriters||Ie.awaitDrainWriters.size===0)&&Z.listenerCount("data")&&Z.resume()}}F.prototype.unpipe=function(Z){const ae=this._readableState,Ce={hasUnpiped:!1};if(ae.pipes.length===0)return this;if(!Z){const Pe=ae.pipes;ae.pipes=[],this.pause();for(let xt=0;xt<Pe.length;xt++)Pe[xt].emit("unpipe",this,{hasUnpiped:!1});return this}const Ie=e(ae.pipes,Z);return Ie===-1?this:(ae.pipes.splice(Ie,1),ae.pipes.length===0&&this.pause(),Z.emit("unpipe",this,Ce),this)},F.prototype.on=function(Z,ae){const Ce=m.prototype.on.call(this,Z,ae),Ie=this._readableState;return Z==="data"?(Ie.readableListening=this.listenerCount("readable")>0,Ie.flowing!==!1&&this.resume()):Z==="readable"&&!Ie.endEmitted&&!Ie.readableListening&&(Ie.readableListening=Ie.needReadable=!0,Ie.flowing=!1,Ie.emittedReadable=!1,v("on readable",Ie.length,Ie.reading),Ie.length?b(this):Ie.reading||t.nextTick(Re,this)),Ce},F.prototype.addListener=F.prototype.on,F.prototype.removeListener=function(Z,ae){const Ce=m.prototype.removeListener.call(this,Z,ae);return Z==="readable"&&t.nextTick(Ae,this),Ce},F.prototype.off=F.prototype.removeListener,F.prototype.removeAllListeners=function(Z){const ae=m.prototype.removeAllListeners.apply(this,arguments);return(Z==="readable"||Z===void 0)&&t.nextTick(Ae,this),ae};function Ae(Z){const ae=Z._readableState;ae.readableListening=Z.listenerCount("readable")>0,ae.resumeScheduled&&ae[G]===!1?ae.flowing=!0:Z.listenerCount("data")>0?Z.resume():ae.readableListening||(ae.flowing=null)}function Re(Z){v("readable nexttick read 0"),Z.read(0)}F.prototype.resume=function(){const Z=this._readableState;return Z.flowing||(v("resume"),Z.flowing=!Z.readableListening,xe(this,Z)),Z[G]=!1,this};function xe(Z,ae){ae.resumeScheduled||(ae.resumeScheduled=!0,t.nextTick(Oe,Z,ae))}function Oe(Z,ae){v("resume",ae.reading),ae.reading||Z.read(0),ae.resumeScheduled=!1,Z.emit("resume"),Me(Z),ae.flowing&&!ae.reading&&Z.read(0)}F.prototype.pause=function(){return v("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(v("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[G]=!0,this};function Me(Z){const ae=Z._readableState;for(v("flow",ae.flowing);ae.flowing&&Z.read()!==null;);}F.prototype.wrap=function(Z){let ae=!1;Z.on("data",Ie=>{!this.push(Ie)&&Z.pause&&(ae=!0,Z.pause())}),Z.on("end",()=>{this.push(null)}),Z.on("error",Ie=>{ue(this,Ie)}),Z.on("close",()=>{this.destroy()}),Z.on("destroy",()=>{this.destroy()}),this._read=()=>{ae&&Z.resume&&(ae=!1,Z.resume())};const Ce=o(Z);for(let Ie=1;Ie<Ce.length;Ie++){const Pe=Ce[Ie];this[Pe]===void 0&&typeof Z[Pe]=="function"&&(this[Pe]=Z[Pe].bind(Z))}return this},F.prototype[f]=function(){return Ve(this)},F.prototype.iterator=function(Z){return Z!==void 0&&W(Z,"options"),Ve(this,Z)};function Ve(Z,ae){typeof Z.read!="function"&&(Z=F.wrap(Z,{objectMode:!0}));const Ce=ct(Z,ae);return Ce.stream=Z,Ce}async function*ct(Z,ae){let Ce=ne;function Ie(ir){this===Z?(Ce(),Ce=ne):Ce=ir}Z.on("readable",Ie);let Pe;const xt=E(Z,{writable:!1},ir=>{Pe=ir?D(Pe,ir):null,Ce(),Ce=ne});try{for(;;){const ir=Z.destroyed?null:Z.read();if(ir!==null)yield ir;else{if(Pe)throw Pe;if(Pe===null)return;await new l(Ie)}}}catch(ir){throw Pe=D(Pe,ir),Pe}finally{(Pe||(ae==null?void 0:ae.destroyOnReturn)!==!1)&&(Pe===void 0||Z._readableState.autoDestroy)?M.destroyer(Z,null):(Z.off("readable",Ie),xt())}}i(F.prototype,{readable:{__proto__:null,get(){const Z=this._readableState;return!!Z&&Z.readable!==!1&&!Z.destroyed&&!Z.errorEmitted&&!Z.endEmitted},set(Z){this._readableState&&(this._readableState.readable=!!Z)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(Z){this._readableState&&(this._readableState.flowing=Z)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(Z){this._readableState&&(this._readableState.destroyed=Z)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),i(te.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[G]!==!1},set(Z){this[G]=!!Z}}}),F._fromList=Je;function Je(Z,ae){if(ae.length===0)return null;let Ce;return ae.objectMode?Ce=ae.buffer.shift():!Z||Z>=ae.length?(ae.decoder?Ce=ae.buffer.join(""):ae.buffer.length===1?Ce=ae.buffer.first():Ce=ae.buffer.concat(ae.length),ae.buffer.clear()):Ce=ae.buffer.consume(Z,ae.decoder),Ce}function lt(Z){const ae=Z._readableState;v("endReadable",ae.endEmitted),ae.endEmitted||(ae.ended=!0,t.nextTick(bt,ae,Z))}function bt(Z,ae){if(v("endReadableNT",Z.endEmitted,Z.length),!Z.errored&&!Z.closeEmitted&&!Z.endEmitted&&Z.length===0){if(Z.endEmitted=!0,ae.emit("end"),ae.writable&&ae.allowHalfOpen===!1)t.nextTick(ft,ae);else if(Z.autoDestroy){const Ce=ae._writableState;(!Ce||Ce.autoDestroy&&(Ce.finished||Ce.writable===!1))&&ae.destroy()}}}function ft(Z){Z.writable&&!Z.writableEnded&&!Z.destroyed&&Z.end()}F.from=function(Z,ae){return $(F,Z,ae)};let ps;function go(){return ps===void 0&&(ps={}),ps}return F.fromWeb=function(Z,ae){return go().newStreamReadableFromReadableStream(Z,ae)},F.toWeb=function(Z,ae){return go().newReadableStreamFromStreamReadable(Z,ae)},F.wrap=function(Z,ae){var Ce,Ie;return new F({objectMode:(Ce=(Ie=Z.readableObjectMode)!==null&&Ie!==void 0?Ie:Z.objectMode)!==null&&Ce!==void 0?Ce:!0,...ae,destroy(Pe,xt){M.destroyer(Z,Pe),xt(Pe)}}).wrap(Z)},Jc}var Zc,Ob;function mg(){if(Ob)return Zc;Ob=1;const t=os,{ArrayPrototypeSlice:e,Error:r,FunctionPrototypeSymbolHasInstance:n,ObjectDefineProperty:s,ObjectDefineProperties:i,ObjectSetPrototypeOf:o,StringPrototypeToLowerCase:a,Symbol:l,SymbolHasInstance:u}=at;Zc=W,W.WritableState=I;const{EventEmitter:c}=Wu,f=pg.Stream,{Buffer:d}=nr,g=lo,{addAbortSignal:m}=Xu,{getHighWaterMark:y,getDefaultHighWaterMark:_}=Qu,{ERR_INVALID_ARG_TYPE:S,ERR_METHOD_NOT_IMPLEMENTED:E,ERR_MULTIPLE_CALLBACK:v,ERR_STREAM_CANNOT_PIPE:x,ERR_STREAM_DESTROYED:M,ERR_STREAM_ALREADY_FINISHED:A,ERR_STREAM_NULL_VALUES:L,ERR_STREAM_WRITE_AFTER_END:D,ERR_UNKNOWN_ENCODING:B}=Vt.codes,{errorOrDestroy:q}=g;o(W.prototype,f.prototype),o(W,f);function Y(){}const R=l("kOnFinished");function I(C,P,O){typeof O!="boolean"&&(O=P instanceof Tn()),this.objectMode=!!(C&&C.objectMode),O&&(this.objectMode=this.objectMode||!!(C&&C.writableObjectMode)),this.highWaterMark=C?y(this,C,"writableHighWaterMark",O):_(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;const j=!!(C&&C.decodeStrings===!1);this.decodeStrings=!j,this.defaultEncoding=C&&C.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=ue.bind(void 0,P),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,N(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!C||C.emitClose!==!1,this.autoDestroy=!C||C.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[R]=[]}function N(C){C.buffered=[],C.bufferedIndex=0,C.allBuffers=!0,C.allNoop=!0}I.prototype.getBuffer=function(){return e(this.buffered,this.bufferedIndex)},s(I.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function W(C){const P=this instanceof Tn();if(!P&&!n(W,this))return new W(C);this._writableState=new I(C,this,P),C&&(typeof C.write=="function"&&(this._write=C.write),typeof C.writev=="function"&&(this._writev=C.writev),typeof C.destroy=="function"&&(this._destroy=C.destroy),typeof C.final=="function"&&(this._final=C.final),typeof C.construct=="function"&&(this._construct=C.construct),C.signal&&m(C.signal,this)),f.call(this,C),g.construct(this,()=>{const O=this._writableState;O.writing||de(this,O),K(this,O)})}s(W,u,{__proto__:null,value:function(C){return n(this,C)?!0:this!==W?!1:C&&C._writableState instanceof I}}),W.prototype.pipe=function(){q(this,new x)};function G(C,P,O,j){const z=C._writableState;if(typeof O=="function")j=O,O=z.defaultEncoding;else{if(!O)O=z.defaultEncoding;else if(O!=="buffer"&&!d.isEncoding(O))throw new B(O);typeof j!="function"&&(j=Y)}if(P===null)throw new L;if(!z.objectMode)if(typeof P=="string")z.decodeStrings!==!1&&(P=d.from(P,O),O="buffer");else if(P instanceof d)O="buffer";else if(f._isUint8Array(P))P=f._uint8ArrayToBuffer(P),O="buffer";else throw new S("chunk",["string","Buffer","Uint8Array"],P);let oe;return z.ending?oe=new D:z.destroyed&&(oe=new M("write")),oe?(t.nextTick(j,oe),q(C,oe,!0),oe):(z.pendingcb++,H(C,z,P,O,j))}W.prototype.write=function(C,P,O){return G(this,C,P,O)===!0},W.prototype.cork=function(){this._writableState.corked++},W.prototype.uncork=function(){const C=this._writableState;C.corked&&(C.corked--,C.writing||de(this,C))},W.prototype.setDefaultEncoding=function(P){if(typeof P=="string"&&(P=a(P)),!d.isEncoding(P))throw new B(P);return this._writableState.defaultEncoding=P,this};function H(C,P,O,j,z){const oe=P.objectMode?1:O.length;P.length+=oe;const fe=P.length<P.highWaterMark;return fe||(P.needDrain=!0),P.writing||P.corked||P.errored||!P.constructed?(P.buffered.push({chunk:O,encoding:j,callback:z}),P.allBuffers&&j!=="buffer"&&(P.allBuffers=!1),P.allNoop&&z!==Y&&(P.allNoop=!1)):(P.writelen=oe,P.writecb=z,P.writing=!0,P.sync=!0,C._write(O,j,P.onwrite),P.sync=!1),fe&&!P.errored&&!P.destroyed}function $(C,P,O,j,z,oe,fe){P.writelen=j,P.writecb=fe,P.writing=!0,P.sync=!0,P.destroyed?P.onwrite(new M("write")):O?C._writev(z,P.onwrite):C._write(z,oe,P.onwrite),P.sync=!1}function ne(C,P,O,j){--P.pendingcb,j(O),Q(P),q(C,O)}function ue(C,P){const O=C._writableState,j=O.sync,z=O.writecb;if(typeof z!="function"){q(C,new v);return}O.writing=!1,O.writecb=null,O.length-=O.writelen,O.writelen=0,P?(P.stack,O.errored||(O.errored=P),C._readableState&&!C._readableState.errored&&(C._readableState.errored=P),j?t.nextTick(ne,C,O,P,z):ne(C,O,P,z)):(O.buffered.length>O.bufferedIndex&&de(C,O),j?O.afterWriteTickInfo!==null&&O.afterWriteTickInfo.cb===z?O.afterWriteTickInfo.count++:(O.afterWriteTickInfo={count:1,cb:z,stream:C,state:O},t.nextTick(re,O.afterWriteTickInfo)):k(C,O,1,z))}function re({stream:C,state:P,count:O,cb:j}){return P.afterWriteTickInfo=null,k(C,P,O,j)}function k(C,P,O,j){for(!P.ending&&!C.destroyed&&P.length===0&&P.needDrain&&(P.needDrain=!1,C.emit("drain"));O-- >0;)P.pendingcb--,j();P.destroyed&&Q(P),K(C,P)}function Q(C){if(C.writing)return;for(let z=C.bufferedIndex;z<C.buffered.length;++z){var P;const{chunk:oe,callback:fe}=C.buffered[z],V=C.objectMode?1:oe.length;C.length-=V,fe((P=C.errored)!==null&&P!==void 0?P:new M("write"))}const O=C[R].splice(0);for(let z=0;z<O.length;z++){var j;O[z]((j=C.errored)!==null&&j!==void 0?j:new M("end"))}N(C)}function de(C,P){if(P.corked||P.bufferProcessing||P.destroyed||!P.constructed)return;const{buffered:O,bufferedIndex:j,objectMode:z}=P,oe=O.length-j;if(!oe)return;let fe=j;if(P.bufferProcessing=!0,oe>1&&C._writev){P.pendingcb-=oe-1;const V=P.allNoop?Y:F=>{for(let J=fe;J<O.length;++J)O[J].callback(F)},te=P.allNoop&&fe===0?O:e(O,fe);te.allBuffers=P.allBuffers,$(C,P,!0,P.length,te,"",V),N(P)}else{do{const{chunk:V,encoding:te,callback:F}=O[fe];O[fe++]=null;const J=z?1:V.length;$(C,P,!1,J,V,te,F)}while(fe<O.length&&!P.writing);fe===O.length?N(P):fe>256?(O.splice(0,fe),P.bufferedIndex=0):P.bufferedIndex=fe}P.bufferProcessing=!1}W.prototype._write=function(C,P,O){if(this._writev)this._writev([{chunk:C,encoding:P}],O);else throw new E("_write()")},W.prototype._writev=null,W.prototype.end=function(C,P,O){const j=this._writableState;typeof C=="function"?(O=C,C=null,P=null):typeof P=="function"&&(O=P,P=null);let z;if(C!=null){const oe=G(this,C,P);oe instanceof r&&(z=oe)}return j.corked&&(j.corked=1,this.uncork()),z||(!j.errored&&!j.ending?(j.ending=!0,K(this,j,!0),j.ended=!0):j.finished?z=new A("end"):j.destroyed&&(z=new M("end"))),typeof O=="function"&&(z||j.finished?t.nextTick(O,z):j[R].push(O)),this};function ge(C){return C.ending&&!C.destroyed&&C.constructed&&C.length===0&&!C.errored&&C.buffered.length===0&&!C.finished&&!C.writing&&!C.errorEmitted&&!C.closeEmitted}function me(C,P){let O=!1;function j(z){if(O){q(C,z??v());return}if(O=!0,P.pendingcb--,z){const oe=P[R].splice(0);for(let fe=0;fe<oe.length;fe++)oe[fe](z);q(C,z,P.sync)}else ge(P)&&(P.prefinished=!0,C.emit("prefinish"),P.pendingcb++,t.nextTick(ie,C,P))}P.sync=!0,P.pendingcb++;try{C._final(j)}catch(z){j(z)}P.sync=!1}function X(C,P){!P.prefinished&&!P.finalCalled&&(typeof C._final=="function"&&!P.destroyed?(P.finalCalled=!0,me(C,P)):(P.prefinished=!0,C.emit("prefinish")))}function K(C,P,O){ge(P)&&(X(C,P),P.pendingcb===0&&(O?(P.pendingcb++,t.nextTick((j,z)=>{ge(z)?ie(j,z):z.pendingcb--},C,P)):ge(P)&&(P.pendingcb++,ie(C,P))))}function ie(C,P){P.pendingcb--,P.finished=!0;const O=P[R].splice(0);for(let j=0;j<O.length;j++)O[j]();if(C.emit("finish"),P.autoDestroy){const j=C._readableState;(!j||j.autoDestroy&&(j.endEmitted||j.readable===!1))&&C.destroy()}}i(W.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(C){this._writableState&&(this._writableState.destroyed=C)}},writable:{__proto__:null,get(){const C=this._writableState;return!!C&&C.writable!==!1&&!C.destroyed&&!C.errored&&!C.ending&&!C.ended},set(C){this._writableState&&(this._writableState.writable=!!C)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){const C=this._writableState;return C?!C.destroyed&&!C.ending&&C.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});const be=g.destroy;W.prototype.destroy=function(C,P){const O=this._writableState;return!O.destroyed&&(O.bufferedIndex<O.buffered.length||O[R].length)&&t.nextTick(Q,O),be.call(this,C,P),this},W.prototype._undestroy=g.undestroy,W.prototype._destroy=function(C,P){P(C)},W.prototype[c.captureRejectionSymbol]=function(C){this.destroy(C)};let he;function ce(){return he===void 0&&(he={}),he}return W.fromWeb=function(C,P){return ce().newStreamWritableFromWritableStream(C,P)},W.toWeb=function(C){return ce().newWritableStreamFromStreamWritable(C)},Zc}var ef,Rb;function G2(){if(Rb)return ef;Rb=1;const t=os,e=nr,{isReadable:r,isWritable:n,isIterable:s,isNodeStream:i,isReadableNodeStream:o,isWritableNodeStream:a,isDuplexNodeStream:l,isReadableStream:u,isWritableStream:c}=Pn,f=si,{AbortError:d,codes:{ERR_INVALID_ARG_TYPE:g,ERR_INVALID_RETURN_VALUE:m}}=Vt,{destroyer:y}=lo,_=Tn(),S=Ju(),E=mg(),{createDeferredPromise:v}=Dt,x=E1,M=globalThis.Blob||e.Blob,A=typeof M<"u"?function(I){return I instanceof M}:function(I){return!1},L=globalThis.AbortController||la().AbortController,{FunctionPrototypeCall:D}=at;class B extends _{constructor(I){super(I),(I==null?void 0:I.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(I==null?void 0:I.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}}ef=function R(I,N){if(l(I))return I;if(o(I))return Y({readable:I});if(a(I))return Y({writable:I});if(i(I))return Y({writable:!1,readable:!1});if(u(I))return Y({readable:S.fromWeb(I)});if(c(I))return Y({writable:E.fromWeb(I)});if(typeof I=="function"){const{value:G,write:H,final:$,destroy:ne}=q(I);if(s(G))return x(B,G,{objectMode:!0,write:H,final:$,destroy:ne});const ue=G==null?void 0:G.then;if(typeof ue=="function"){let re;const k=D(ue,G,Q=>{if(Q!=null)throw new m("nully","body",Q)},Q=>{y(re,Q)});return re=new B({objectMode:!0,readable:!1,write:H,final(Q){$(async()=>{try{await k,t.nextTick(Q,null)}catch(de){t.nextTick(Q,de)}})},destroy:ne})}throw new m("Iterable, AsyncIterable or AsyncFunction",N,G)}if(A(I))return R(I.arrayBuffer());if(s(I))return x(B,I,{objectMode:!0,writable:!1});if(u(I==null?void 0:I.readable)&&c(I==null?void 0:I.writable))return B.fromWeb(I);if(typeof(I==null?void 0:I.writable)=="object"||typeof(I==null?void 0:I.readable)=="object"){const G=I!=null&&I.readable?o(I==null?void 0:I.readable)?I==null?void 0:I.readable:R(I.readable):void 0,H=I!=null&&I.writable?a(I==null?void 0:I.writable)?I==null?void 0:I.writable:R(I.writable):void 0;return Y({readable:G,writable:H})}const W=I==null?void 0:I.then;if(typeof W=="function"){let G;return D(W,I,H=>{H!=null&&G.push(H),G.push(null)},H=>{y(G,H)}),G=new B({objectMode:!0,writable:!1,read(){}})}throw new g(N,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],I)};function q(R){let{promise:I,resolve:N}=v();const W=new L,G=W.signal;return{value:R(async function*(){for(;;){const $=I;I=null;const{chunk:ne,done:ue,cb:re}=await $;if(t.nextTick(re),ue)return;if(G.aborted)throw new d(void 0,{cause:G.reason});({promise:I,resolve:N}=v()),yield ne}}(),{signal:G}),write($,ne,ue){const re=N;N=null,re({chunk:$,done:!1,cb:ue})},final($){const ne=N;N=null,ne({done:!0,cb:$})},destroy($,ne){W.abort(),ne($)}}}function Y(R){const I=R.readable&&typeof R.readable.read!="function"?S.wrap(R.readable):R.readable,N=R.writable;let W=!!r(I),G=!!n(N),H,$,ne,ue,re;function k(Q){const de=ue;ue=null,de?de(Q):Q&&re.destroy(Q)}return re=new B({readableObjectMode:!!(I!=null&&I.readableObjectMode),writableObjectMode:!!(N!=null&&N.writableObjectMode),readable:W,writable:G}),G&&(f(N,Q=>{G=!1,Q&&y(I,Q),k(Q)}),re._write=function(Q,de,ge){N.write(Q,de)?ge():H=ge},re._final=function(Q){N.end(),$=Q},N.on("drain",function(){if(H){const Q=H;H=null,Q()}}),N.on("finish",function(){if($){const Q=$;$=null,Q()}})),W&&(f(I,Q=>{W=!1,Q&&y(I,Q),k(Q)}),I.on("readable",function(){if(ne){const Q=ne;ne=null,Q()}}),I.on("end",function(){re.push(null)}),re._read=function(){for(;;){const Q=I.read();if(Q===null){ne=re._read;return}if(!re.push(Q))return}}),re._destroy=function(Q,de){!Q&&ue!==null&&(Q=new d),ne=null,H=null,$=null,ue===null?de(Q):(ue=de,y(N,Q),y(I,Q))},re}return ef}var tf,Pb;function Tn(){if(Pb)return tf;Pb=1;const{ObjectDefineProperties:t,ObjectGetOwnPropertyDescriptor:e,ObjectKeys:r,ObjectSetPrototypeOf:n}=at;tf=o;const s=Ju(),i=mg();n(o.prototype,s.prototype),n(o,s);{const c=r(i.prototype);for(let f=0;f<c.length;f++){const d=c[f];o.prototype[d]||(o.prototype[d]=i.prototype[d])}}function o(c){if(!(this instanceof o))return new o(c);s.call(this,c),i.call(this,c),c?(this.allowHalfOpen=c.allowHalfOpen!==!1,c.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),c.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}t(o.prototype,{writable:{__proto__:null,...e(i.prototype,"writable")},writableHighWaterMark:{__proto__:null,...e(i.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...e(i.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...e(i.prototype,"writableBuffer")},writableLength:{__proto__:null,...e(i.prototype,"writableLength")},writableFinished:{__proto__:null,...e(i.prototype,"writableFinished")},writableCorked:{__proto__:null,...e(i.prototype,"writableCorked")},writableEnded:{__proto__:null,...e(i.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...e(i.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(c){this._readableState&&this._writableState&&(this._readableState.destroyed=c,this._writableState.destroyed=c)}}});let a;function l(){return a===void 0&&(a={}),a}o.fromWeb=function(c,f){return l().newStreamDuplexFromReadableWritablePair(c,f)},o.toWeb=function(c){return l().newReadableWritablePairFromDuplex(c)};let u;return o.from=function(c){return u||(u=G2()),u(c,"body")},tf}const{ObjectSetPrototypeOf:S1,Symbol:K2}=at;var T1=xn;const{ERR_METHOD_NOT_IMPLEMENTED:X2}=Vt.codes,bg=Tn(),{getHighWaterMark:Q2}=Qu;S1(xn.prototype,bg.prototype);S1(xn,bg);const Ko=K2("kCallback");function xn(t){if(!(this instanceof xn))return new xn(t);const e=t?Q2(this,t,"readableHighWaterMark",!0):null;e===0&&(t={...t,highWaterMark:null,readableHighWaterMark:e,writableHighWaterMark:t.writableHighWaterMark||0}),bg.call(this,t),this._readableState.sync=!1,this[Ko]=null,t&&(typeof t.transform=="function"&&(this._transform=t.transform),typeof t.flush=="function"&&(this._flush=t.flush)),this.on("prefinish",J2)}function zh(t){typeof this._flush=="function"&&!this.destroyed?this._flush((e,r)=>{if(e){t?t(e):this.destroy(e);return}r!=null&&this.push(r),this.push(null),t&&t()}):(this.push(null),t&&t())}function J2(){this._final!==zh&&zh.call(this)}xn.prototype._final=zh;xn.prototype._transform=function(t,e,r){throw new X2("_transform()")};xn.prototype._write=function(t,e,r){const n=this._readableState,s=this._writableState,i=n.length;this._transform(t,e,(o,a)=>{if(o){r(o);return}a!=null&&this.push(a),s.ended||i===n.length||n.length<n.highWaterMark?r():this[Ko]=r})};xn.prototype._read=function(){if(this[Ko]){const t=this[Ko];this[Ko]=null,t()}};const{ObjectSetPrototypeOf:x1}=at;var A1=Ys;const yg=T1;x1(Ys.prototype,yg.prototype);x1(Ys,yg);function Ys(t){if(!(this instanceof Ys))return new Ys(t);yg.call(this,t)}Ys.prototype._transform=function(t,e,r){r(null,t)};const $o=os,{ArrayIsArray:Z2,Promise:eD,SymbolAsyncIterator:tD,SymbolDispose:rD}=at,au=si,{once:nD}=Dt,iD=lo,kb=Tn(),{aggregateTwoErrors:sD,codes:{ERR_INVALID_ARG_TYPE:Hh,ERR_INVALID_RETURN_VALUE:rf,ERR_MISSING_ARGS:oD,ERR_STREAM_DESTROYED:aD,ERR_STREAM_PREMATURE_CLOSE:lD},AbortError:uD}=Vt,{validateFunction:cD,validateAbortSignal:fD}=ya,{isIterable:Ti,isReadable:nf,isReadableNodeStream:Ml,isNodeStream:Lb,isTransformStream:_s,isWebStream:dD,isReadableStream:sf,isReadableFinished:hD}=Pn,pD=globalThis.AbortController||la().AbortController;let of,af,lf;function Nb(t,e,r){let n=!1;t.on("close",()=>{n=!0});const s=au(t,{readable:e,writable:r},i=>{n=!i});return{destroy:i=>{n||(n=!0,iD.destroyer(t,i||new aD("pipe")))},cleanup:s}}function gD(t){return cD(t[t.length-1],"streams[stream.length - 1]"),t.pop()}function uf(t){if(Ti(t))return t;if(Ml(t))return mD(t);throw new Hh("val",["Readable","Iterable","AsyncIterable"],t)}async function*mD(t){af||(af=Ju()),yield*af.prototype[tD].call(t)}async function Ka(t,e,r,{end:n}){let s,i=null;const o=u=>{if(u&&(s=u),i){const c=i;i=null,c()}},a=()=>new eD((u,c)=>{s?c(s):i=()=>{s?c(s):u()}});e.on("drain",o);const l=au(e,{readable:!1},o);try{e.writableNeedDrain&&await a();for await(const u of t)e.write(u)||await a();n&&(e.end(),await a()),r()}catch(u){r(s!==u?sD(s,u):u)}finally{l(),e.off("drain",o)}}async function cf(t,e,r,{end:n}){_s(e)&&(e=e.writable);const s=e.getWriter();try{for await(const i of t)await s.ready,s.write(i).catch(()=>{});await s.ready,n&&await s.close(),r()}catch(i){try{await s.abort(i),r(i)}catch(o){r(o)}}}function bD(...t){return C1(t,nD(gD(t)))}function C1(t,e,r){if(t.length===1&&Z2(t[0])&&(t=t[0]),t.length<2)throw new oD("streams");const n=new pD,s=n.signal,i=r==null?void 0:r.signal,o=[];fD(i,"options.signal");function a(){m(new uD)}lf=lf||Dt.addAbortListener;let l;i&&(l=lf(i,a));let u,c;const f=[];let d=0;function g(E){m(E,--d===0)}function m(E,v){var x;if(E&&(!u||u.code==="ERR_STREAM_PREMATURE_CLOSE")&&(u=E),!(!u&&!v)){for(;f.length;)f.shift()(u);(x=l)===null||x===void 0||x[rD](),n.abort(),v&&(u||o.forEach(M=>M()),$o.nextTick(e,u,c))}}let y;for(let E=0;E<t.length;E++){const v=t[E],x=E<t.length-1,M=E>0,A=x||(r==null?void 0:r.end)!==!1,L=E===t.length-1;if(Lb(v)){let D=function(B){B&&B.name!=="AbortError"&&B.code!=="ERR_STREAM_PREMATURE_CLOSE"&&g(B)};if(A){const{destroy:B,cleanup:q}=Nb(v,x,M);f.push(B),nf(v)&&L&&o.push(q)}v.on("error",D),nf(v)&&L&&o.push(()=>{v.removeListener("error",D)})}if(E===0)if(typeof v=="function"){if(y=v({signal:s}),!Ti(y))throw new rf("Iterable, AsyncIterable or Stream","source",y)}else Ti(v)||Ml(v)||_s(v)?y=v:y=kb.from(v);else if(typeof v=="function"){if(_s(y)){var _;y=uf((_=y)===null||_===void 0?void 0:_.readable)}else y=uf(y);if(y=v(y,{signal:s}),x){if(!Ti(y,!0))throw new rf("AsyncIterable",`transform[${E-1}]`,y)}else{var S;of||(of=A1);const D=new of({objectMode:!0}),B=(S=y)===null||S===void 0?void 0:S.then;if(typeof B=="function")d++,B.call(y,R=>{c=R,R!=null&&D.write(R),A&&D.end(),$o.nextTick(g)},R=>{D.destroy(R),$o.nextTick(g,R)});else if(Ti(y,!0))d++,Ka(y,D,g,{end:A});else if(sf(y)||_s(y)){const R=y.readable||y;d++,Ka(R,D,g,{end:A})}else throw new rf("AsyncIterable or Promise","destination",y);y=D;const{destroy:q,cleanup:Y}=Nb(y,!1,!0);f.push(q),L&&o.push(Y)}}else if(Lb(v)){if(Ml(y)){d+=2;const D=yD(y,v,g,{end:A});nf(v)&&L&&o.push(D)}else if(_s(y)||sf(y)){const D=y.readable||y;d++,Ka(D,v,g,{end:A})}else if(Ti(y))d++,Ka(y,v,g,{end:A});else throw new Hh("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],y);y=v}else if(dD(v)){if(Ml(y))d++,cf(uf(y),v,g,{end:A});else if(sf(y)||Ti(y))d++,cf(y,v,g,{end:A});else if(_s(y))d++,cf(y.readable,v,g,{end:A});else throw new Hh("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],y);y=v}else y=kb.from(v)}return(s!=null&&s.aborted||i!=null&&i.aborted)&&$o.nextTick(a),y}function yD(t,e,r,{end:n}){let s=!1;if(e.on("close",()=>{s||r(new lD)}),t.pipe(e,{end:!1}),n){let i=function(){s=!0,e.end()};hD(t)?$o.nextTick(i):t.once("end",i)}else r();return au(t,{readable:!0,writable:!1},i=>{const o=t._readableState;i&&i.code==="ERR_STREAM_PREMATURE_CLOSE"&&o&&o.ended&&!o.errored&&!o.errorEmitted?t.once("end",r).once("error",r):r(i)}),au(e,{readable:!1,writable:!0},r)}var wg={pipelineImpl:C1,pipeline:bD};const{pipeline:wD}=wg,Xa=Tn(),{destroyer:vD}=lo,{isNodeStream:Qa,isReadable:Db,isWritable:Bb,isWebStream:ff,isTransformStream:_i,isWritableStream:$b,isReadableStream:Fb}=Pn,{AbortError:_D,codes:{ERR_INVALID_ARG_VALUE:Ub,ERR_MISSING_ARGS:ED}}=Vt,SD=si;var I1=function(...e){if(e.length===0)throw new ED("streams");if(e.length===1)return Xa.from(e[0]);const r=[...e];if(typeof e[0]=="function"&&(e[0]=Xa.from(e[0])),typeof e[e.length-1]=="function"){const g=e.length-1;e[g]=Xa.from(e[g])}for(let g=0;g<e.length;++g)if(!(!Qa(e[g])&&!ff(e[g]))){if(g<e.length-1&&!(Db(e[g])||Fb(e[g])||_i(e[g])))throw new Ub(`streams[${g}]`,r[g],"must be readable");if(g>0&&!(Bb(e[g])||$b(e[g])||_i(e[g])))throw new Ub(`streams[${g}]`,r[g],"must be writable")}let n,s,i,o,a;function l(g){const m=o;o=null,m?m(g):g?a.destroy(g):!d&&!f&&a.destroy()}const u=e[0],c=wD(e,l),f=!!(Bb(u)||$b(u)||_i(u)),d=!!(Db(c)||Fb(c)||_i(c));if(a=new Xa({writableObjectMode:!!(u!=null&&u.writableObjectMode),readableObjectMode:!!(c!=null&&c.readableObjectMode),writable:f,readable:d}),f){if(Qa(u))a._write=function(m,y,_){u.write(m,y)?_():n=_},a._final=function(m){u.end(),s=m},u.on("drain",function(){if(n){const m=n;n=null,m()}});else if(ff(u)){const y=(_i(u)?u.writable:u).getWriter();a._write=async function(_,S,E){try{await y.ready,y.write(_).catch(()=>{}),E()}catch(v){E(v)}},a._final=async function(_){try{await y.ready,y.close().catch(()=>{}),s=_}catch(S){_(S)}}}const g=_i(c)?c.readable:c;SD(g,()=>{if(s){const m=s;s=null,m()}})}if(d){if(Qa(c))c.on("readable",function(){if(i){const g=i;i=null,g()}}),c.on("end",function(){a.push(null)}),a._read=function(){for(;;){const g=c.read();if(g===null){i=a._read;return}if(!a.push(g))return}};else if(ff(c)){const m=(_i(c)?c.readable:c).getReader();a._read=async function(){for(;;)try{const{value:y,done:_}=await m.read();if(!a.push(y))return;if(_){a.push(null);return}}catch{return}}}}return a._destroy=function(g,m){!g&&o!==null&&(g=new _D),i=null,n=null,s=null,o===null?m(g):(o=m,Qa(c)&&vD(c,g))},a};const TD=globalThis.AbortController||la().AbortController,{codes:{ERR_INVALID_ARG_VALUE:xD,ERR_INVALID_ARG_TYPE:va,ERR_MISSING_ARGS:AD,ERR_OUT_OF_RANGE:CD},AbortError:Vr}=Vt,{validateAbortSignal:ls,validateInteger:jb,validateObject:us}=ya,ID=at.Symbol("kWeak"),MD=at.Symbol("kResistStopPropagation"),{finished:OD}=si,RD=I1,{addAbortSignalNoValidate:PD}=Xu,{isWritable:kD,isNodeStream:LD}=Pn,{deprecate:ND}=Dt,{ArrayPrototypePush:DD,Boolean:BD,MathFloor:Wb,Number:$D,NumberIsNaN:FD,Promise:zb,PromiseReject:Hb,PromiseResolve:UD,PromisePrototypeThen:Vb,Symbol:M1}=at,lu=M1("kEmpty"),qb=M1("kEof");function jD(t,e){if(e!=null&&us(e,"options"),(e==null?void 0:e.signal)!=null&&ls(e.signal,"options.signal"),LD(t)&&!kD(t))throw new xD("stream",t,"must be writable");const r=RD(this,t);return e!=null&&e.signal&&PD(e.signal,r),r}function Zu(t,e){if(typeof t!="function")throw new va("fn",["Function","AsyncFunction"],t);e!=null&&us(e,"options"),(e==null?void 0:e.signal)!=null&&ls(e.signal,"options.signal");let r=1;(e==null?void 0:e.concurrency)!=null&&(r=Wb(e.concurrency));let n=r-1;return(e==null?void 0:e.highWaterMark)!=null&&(n=Wb(e.highWaterMark)),jb(r,"options.concurrency",1),jb(n,"options.highWaterMark",0),n+=r,(async function*(){const i=Dt.AbortSignalAny([e==null?void 0:e.signal].filter(BD)),o=this,a=[],l={signal:i};let u,c,f=!1,d=0;function g(){f=!0,m()}function m(){d-=1,y()}function y(){c&&!f&&d<r&&a.length<n&&(c(),c=null)}async function _(){try{for await(let S of o){if(f)return;if(i.aborted)throw new Vr;try{if(S=t(S,l),S===lu)continue;S=UD(S)}catch(E){S=Hb(E)}d+=1,Vb(S,m,g),a.push(S),u&&(u(),u=null),!f&&(a.length>=n||d>=r)&&await new zb(E=>{c=E})}a.push(qb)}catch(S){const E=Hb(S);Vb(E,m,g),a.push(E)}finally{f=!0,u&&(u(),u=null)}}_();try{for(;;){for(;a.length>0;){const S=await a[0];if(S===qb)return;if(i.aborted)throw new Vr;S!==lu&&(yield S),a.shift(),y()}await new zb(S=>{u=S})}}finally{f=!0,c&&(c(),c=null)}}).call(this)}function WD(t=void 0){return t!=null&&us(t,"options"),(t==null?void 0:t.signal)!=null&&ls(t.signal,"options.signal"),(async function*(){let r=0;for await(const s of this){var n;if(t!=null&&(n=t.signal)!==null&&n!==void 0&&n.aborted)throw new Vr({cause:t.signal.reason});yield[r++,s]}}).call(this)}async function O1(t,e=void 0){for await(const r of vg.call(this,t,e))return!0;return!1}async function zD(t,e=void 0){if(typeof t!="function")throw new va("fn",["Function","AsyncFunction"],t);return!await O1.call(this,async(...r)=>!await t(...r),e)}async function HD(t,e){for await(const r of vg.call(this,t,e))return r}async function VD(t,e){if(typeof t!="function")throw new va("fn",["Function","AsyncFunction"],t);async function r(n,s){return await t(n,s),lu}for await(const n of Zu.call(this,r,e));}function vg(t,e){if(typeof t!="function")throw new va("fn",["Function","AsyncFunction"],t);async function r(n,s){return await t(n,s)?n:lu}return Zu.call(this,r,e)}class qD extends AD{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}}async function YD(t,e,r){var n;if(typeof t!="function")throw new va("reducer",["Function","AsyncFunction"],t);r!=null&&us(r,"options"),(r==null?void 0:r.signal)!=null&&ls(r.signal,"options.signal");let s=arguments.length>1;if(r!=null&&(n=r.signal)!==null&&n!==void 0&&n.aborted){const u=new Vr(void 0,{cause:r.signal.reason});throw this.once("error",()=>{}),await OD(this.destroy(u)),u}const i=new TD,o=i.signal;if(r!=null&&r.signal){const u={once:!0,[ID]:this,[MD]:!0};r.signal.addEventListener("abort",()=>i.abort(),u)}let a=!1;try{for await(const u of this){var l;if(a=!0,r!=null&&(l=r.signal)!==null&&l!==void 0&&l.aborted)throw new Vr;s?e=await t(e,u,{signal:o}):(e=u,s=!0)}if(!a&&!s)throw new qD}finally{i.abort()}return e}async function GD(t){t!=null&&us(t,"options"),(t==null?void 0:t.signal)!=null&&ls(t.signal,"options.signal");const e=[];for await(const n of this){var r;if(t!=null&&(r=t.signal)!==null&&r!==void 0&&r.aborted)throw new Vr(void 0,{cause:t.signal.reason});DD(e,n)}return e}function KD(t,e){const r=Zu.call(this,t,e);return(async function*(){for await(const s of r)yield*s}).call(this)}function R1(t){if(t=$D(t),FD(t))return 0;if(t<0)throw new CD("number",">= 0",t);return t}function XD(t,e=void 0){return e!=null&&us(e,"options"),(e==null?void 0:e.signal)!=null&&ls(e.signal,"options.signal"),t=R1(t),(async function*(){var n;if(e!=null&&(n=e.signal)!==null&&n!==void 0&&n.aborted)throw new Vr;for await(const i of this){var s;if(e!=null&&(s=e.signal)!==null&&s!==void 0&&s.aborted)throw new Vr;t--<=0&&(yield i)}}).call(this)}function QD(t,e=void 0){return e!=null&&us(e,"options"),(e==null?void 0:e.signal)!=null&&ls(e.signal,"options.signal"),t=R1(t),(async function*(){var n;if(e!=null&&(n=e.signal)!==null&&n!==void 0&&n.aborted)throw new Vr;for await(const i of this){var s;if(e!=null&&(s=e.signal)!==null&&s!==void 0&&s.aborted)throw new Vr;if(t-- >0&&(yield i),t<=0)return}}).call(this)}ug.streamReturningOperators={asIndexedPairs:ND(WD,"readable.asIndexedPairs will be removed in a future version."),drop:XD,filter:vg,flatMap:KD,map:Zu,take:QD,compose:jD};ug.promiseReturningOperators={every:zD,forEach:VD,reduce:YD,toArray:GD,some:O1,find:HD};var df,Yb;function P1(){if(Yb)return df;Yb=1;const{ArrayPrototypePop:t,Promise:e}=at,{isIterable:r,isNodeStream:n,isWebStream:s}=Pn,{pipelineImpl:i}=wg,{finished:o}=si;k1();function a(...l){return new e((u,c)=>{let f,d;const g=l[l.length-1];if(g&&typeof g=="object"&&!n(g)&&!r(g)&&!s(g)){const m=t(l);f=m.signal,d=m.end}i(l,(m,y)=>{m?c(m):u(y)},{signal:f,end:d})})}return df={finished:o,pipeline:a},df}var Gb;function k1(){if(Gb)return qc.exports;Gb=1;const{Buffer:t}=nr,{ObjectDefineProperty:e,ObjectKeys:r,ReflectApply:n}=at,{promisify:{custom:s}}=Dt,{streamReturningOperators:i,promiseReturningOperators:o}=ug,{codes:{ERR_ILLEGAL_CONSTRUCTOR:a}}=Vt,l=I1,{setDefaultHighWaterMark:u,getDefaultHighWaterMark:c}=Qu,{pipeline:f}=wg,{destroyer:d}=lo,g=si,m=P1(),y=Pn,_=qc.exports=pg.Stream;_.isDestroyed=y.isDestroyed,_.isDisturbed=y.isDisturbed,_.isErrored=y.isErrored,_.isReadable=y.isReadable,_.isWritable=y.isWritable,_.Readable=Ju();for(const E of r(i)){let x=function(...M){if(new.target)throw a();return _.Readable.from(n(v,this,M))};const v=i[E];e(x,"name",{__proto__:null,value:v.name}),e(x,"length",{__proto__:null,value:v.length}),e(_.Readable.prototype,E,{__proto__:null,value:x,enumerable:!1,configurable:!0,writable:!0})}for(const E of r(o)){let x=function(...M){if(new.target)throw a();return n(v,this,M)};const v=o[E];e(x,"name",{__proto__:null,value:v.name}),e(x,"length",{__proto__:null,value:v.length}),e(_.Readable.prototype,E,{__proto__:null,value:x,enumerable:!1,configurable:!0,writable:!0})}_.Writable=mg(),_.Duplex=Tn(),_.Transform=T1,_.PassThrough=A1,_.pipeline=f;const{addAbortSignal:S}=Xu;return _.addAbortSignal=S,_.finished=g,_.destroy=d,_.compose=l,_.setDefaultHighWaterMark=u,_.getDefaultHighWaterMark=c,e(_,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return m}}),e(f,s,{__proto__:null,enumerable:!0,get(){return m.pipeline}}),e(g,s,{__proto__:null,enumerable:!0,get(){return m.finished}}),_.Stream=_,_._isUint8Array=function(v){return v instanceof Uint8Array},_._uint8ArrayToBuffer=function(v){return t.from(v.buffer,v.byteOffset,v.byteLength)},qc.exports}(function(t){const e=k1(),r=P1(),n=e.Readable.destroy;t.exports=e.Readable,t.exports._uint8ArrayToBuffer=e._uint8ArrayToBuffer,t.exports._isUint8Array=e._isUint8Array,t.exports.isDisturbed=e.isDisturbed,t.exports.isErrored=e.isErrored,t.exports.isReadable=e.isReadable,t.exports.Readable=e.Readable,t.exports.Writable=e.Writable,t.exports.Duplex=e.Duplex,t.exports.Transform=e.Transform,t.exports.PassThrough=e.PassThrough,t.exports.addAbortSignal=e.addAbortSignal,t.exports.finished=e.finished,t.exports.destroy=e.destroy,t.exports.destroy=n,t.exports.pipeline=e.pipeline,t.exports.compose=e.compose,Object.defineProperty(e,"promises",{configurable:!0,enumerable:!0,get(){return r}}),t.exports.Stream=e.Stream,t.exports.default=t.exports})(ME);var JD=ME.exports,Vh={exports:{}};typeof Object.create=="function"?Vh.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Vh.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}};var ZD=Vh.exports;const{Buffer:Sr}=nr,L1=Symbol.for("BufferList");function Xe(t){if(!(this instanceof Xe))return new Xe(t);Xe._init.call(this,t)}Xe._init=function(e){Object.defineProperty(this,L1,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};Xe.prototype._new=function(e){return new Xe(e)};Xe.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let n=0;n<this._bufs.length;n++){const s=r+this._bufs[n].length;if(e<s||n===this._bufs.length-1)return[n,e-r];r=s}};Xe.prototype._reverseOffset=function(t){const e=t[0];let r=t[1];for(let n=0;n<e;n++)r+=this._bufs[n].length;return r};Xe.prototype.get=function(e){if(e>this.length||e<0)return;const r=this._offset(e);return this._bufs[r[0]][r[1]]};Xe.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};Xe.prototype.copy=function(e,r,n,s){if((typeof n!="number"||n<0)&&(n=0),(typeof s!="number"||s>this.length)&&(s=this.length),n>=this.length||s<=0)return e||Sr.alloc(0);const i=!!e,o=this._offset(n),a=s-n;let l=a,u=i&&r||0,c=o[1];if(n===0&&s===this.length){if(!i)return this._bufs.length===1?this._bufs[0]:Sr.concat(this._bufs,this.length);for(let f=0;f<this._bufs.length;f++)this._bufs[f].copy(e,u),u+=this._bufs[f].length;return e}if(l<=this._bufs[o[0]].length-c)return i?this._bufs[o[0]].copy(e,r,c,c+l):this._bufs[o[0]].slice(c,c+l);i||(e=Sr.allocUnsafe(a));for(let f=o[0];f<this._bufs.length;f++){const d=this._bufs[f].length-c;if(l>d)this._bufs[f].copy(e,u,c),u+=d;else{this._bufs[f].copy(e,u,c,c+l),u+=d;break}l-=d,c&&(c=0)}return e.length>u?e.slice(0,u):e};Xe.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();const n=this._offset(e),s=this._offset(r),i=this._bufs.slice(n[0],s[0]+1);return s[1]===0?i.pop():i[i.length-1]=i[i.length-1].slice(0,s[1]),n[1]!==0&&(i[0]=i[0].slice(n[1])),this._new(i)};Xe.prototype.toString=function(e,r,n){return this.slice(r,n).toString(e)};Xe.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};Xe.prototype.duplicate=function(){const e=this._new();for(let r=0;r<this._bufs.length;r++)e.append(this._bufs[r]);return e};Xe.prototype.append=function(e){if(e==null)return this;if(e.buffer)this._appendBuffer(Sr.from(e.buffer,e.byteOffset,e.byteLength));else if(Array.isArray(e))for(let r=0;r<e.length;r++)this.append(e[r]);else if(this._isBufferList(e))for(let r=0;r<e._bufs.length;r++)this.append(e._bufs[r]);else typeof e=="number"&&(e=e.toString()),this._appendBuffer(Sr.from(e));return this};Xe.prototype._appendBuffer=function(e){this._bufs.push(e),this.length+=e.length};Xe.prototype.indexOf=function(t,e,r){if(r===void 0&&typeof e=="string"&&(r=e,e=void 0),typeof t=="function"||Array.isArray(t))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof t=="number"?t=Sr.from([t]):typeof t=="string"?t=Sr.from(t,r):this._isBufferList(t)?t=t.slice():Array.isArray(t.buffer)?t=Sr.from(t.buffer,t.byteOffset,t.byteLength):Sr.isBuffer(t)||(t=Sr.from(t)),e=Number(e||0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;const n=this._offset(e);let s=n[0],i=n[1];for(;s<this._bufs.length;s++){const o=this._bufs[s];for(;i<o.length;)if(o.length-i>=t.length){const l=o.indexOf(t,i);if(l!==-1)return this._reverseOffset([s,l]);i=o.length-t.length+1}else{const l=this._reverseOffset([s,i]);if(this._match(l,t))return l;i++}i=0}return-1};Xe.prototype._match=function(t,e){if(this.length-t<e.length)return!1;for(let r=0;r<e.length;r++)if(this.get(t+r)!==e[r])return!1;return!0};(function(){const t={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(const e in t)(function(r){t[r]===null?Xe.prototype[r]=function(n,s){return this.slice(n,n+s)[r](0,s)}:Xe.prototype[r]=function(n=0){return this.slice(n,n+t[r])[r](0)}})(e)})();Xe.prototype._isBufferList=function(e){return e instanceof Xe||Xe.isBufferList(e)};Xe.isBufferList=function(e){return e!=null&&e[L1]};var eB=Xe;const _g=JD.Duplex,tB=ZD,_a=eB;function Ot(t){if(!(this instanceof Ot))return new Ot(t);if(typeof t=="function"){this._callback=t;const e=(function(n){this._callback&&(this._callback(n),this._callback=null)}).bind(this);this.on("pipe",function(n){n.on("error",e)}),this.on("unpipe",function(n){n.removeListener("error",e)}),t=null}_a._init.call(this,t),_g.call(this)}tB(Ot,_g);Object.assign(Ot.prototype,_a.prototype);Ot.prototype._new=function(e){return new Ot(e)};Ot.prototype._write=function(e,r,n){this._appendBuffer(e),typeof n=="function"&&n()};Ot.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Ot.prototype.end=function(e){_g.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Ot.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Ot.prototype._isBufferList=function(e){return e instanceof Ot||e instanceof _a||Ot.isBufferList(e)};Ot.isBufferList=_a.isBufferList;og.exports=Ot;og.exports.BufferListStream=Ot;og.exports.BufferList=_a;var rB={exports:{}};(function(t){const e=t.exports,{Buffer:r}=nr;e.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},e.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},e.requiredHeaderFlagsErrors={};for(const s in e.requiredHeaderFlags){const i=e.requiredHeaderFlags[s];e.requiredHeaderFlagsErrors[s]="Invalid header flag bits, must be 0x"+i.toString(16)+" for "+e.types[s]+" packet"}e.codes={};for(const s in e.types){const i=e.types[s];e.codes[i]=s}e.CMD_SHIFT=4,e.CMD_MASK=240,e.DUP_MASK=8,e.QOS_MASK=3,e.QOS_SHIFT=1,e.RETAIN_MASK=1,e.VARBYTEINT_MASK=127,e.VARBYTEINT_FIN_MASK=128,e.VARBYTEINT_MAX=268435455,e.SESSIONPRESENT_MASK=1,e.SESSIONPRESENT_HEADER=r.from([e.SESSIONPRESENT_MASK]),e.CONNACK_HEADER=r.from([e.codes.connack<<e.CMD_SHIFT]),e.USERNAME_MASK=128,e.PASSWORD_MASK=64,e.WILL_RETAIN_MASK=32,e.WILL_QOS_MASK=24,e.WILL_QOS_SHIFT=3,e.WILL_FLAG_MASK=4,e.CLEAN_SESSION_MASK=2,e.CONNECT_HEADER=r.from([e.codes.connect<<e.CMD_SHIFT]),e.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},e.propertiesCodes={};for(const s in e.properties){const i=e.properties[s];e.propertiesCodes[i]=s}e.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function n(s){return[0,1,2].map(i=>[0,1].map(o=>[0,1].map(a=>{const l=r.alloc(1);return l.writeUInt8(e.codes[s]<<e.CMD_SHIFT|(o?e.DUP_MASK:0)|i<<e.QOS_SHIFT|a,0,!0),l})))}e.PUBLISH_HEADER=n("publish"),e.SUBSCRIBE_HEADER=n("subscribe"),e.SUBSCRIBE_OPTIONS_QOS_MASK=3,e.SUBSCRIBE_OPTIONS_NL_MASK=1,e.SUBSCRIBE_OPTIONS_NL_SHIFT=2,e.SUBSCRIBE_OPTIONS_RAP_MASK=1,e.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,e.SUBSCRIBE_OPTIONS_RH_MASK=3,e.SUBSCRIBE_OPTIONS_RH_SHIFT=4,e.SUBSCRIBE_OPTIONS_RH=[0,16,32],e.SUBSCRIBE_OPTIONS_NL=4,e.SUBSCRIBE_OPTIONS_RAP=8,e.SUBSCRIBE_OPTIONS_QOS=[0,1,2],e.UNSUBSCRIBE_HEADER=n("unsubscribe"),e.ACKS={unsuback:n("unsuback"),puback:n("puback"),pubcomp:n("pubcomp"),pubrel:n("pubrel"),pubrec:n("pubrec")},e.SUBACK_HEADER=r.from([e.codes.suback<<e.CMD_SHIFT]),e.VERSION3=r.from([3]),e.VERSION4=r.from([4]),e.VERSION5=r.from([5]),e.VERSION131=r.from([131]),e.VERSION132=r.from([132]),e.QOS=[0,1,2].map(s=>r.from([s])),e.EMPTY={pingreq:r.from([e.codes.pingreq<<4,0]),pingresp:r.from([e.codes.pingresp<<4,0]),disconnect:r.from([e.codes.disconnect<<4,0])},e.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},e.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},e.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},e.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},e.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},e.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}})(rB);function N1(){throw new Error("setTimeout has not been defined")}function D1(){throw new Error("clearTimeout has not been defined")}var Un=N1,jn=D1;typeof Vi.setTimeout=="function"&&(Un=setTimeout);typeof Vi.clearTimeout=="function"&&(jn=clearTimeout);function B1(t){if(Un===setTimeout)return setTimeout(t,0);if((Un===N1||!Un)&&setTimeout)return Un=setTimeout,setTimeout(t,0);try{return Un(t,0)}catch{try{return Un.call(null,t,0)}catch{return Un.call(this,t,0)}}}function nB(t){if(jn===clearTimeout)return clearTimeout(t);if((jn===D1||!jn)&&clearTimeout)return jn=clearTimeout,clearTimeout(t);try{return jn(t)}catch{try{return jn.call(null,t)}catch{return jn.call(this,t)}}}var dn=[],$s=!1,ki,Ol=-1;function iB(){!$s||!ki||($s=!1,ki.length?dn=ki.concat(dn):Ol=-1,dn.length&&$1())}function $1(){if(!$s){var t=B1(iB);$s=!0;for(var e=dn.length;e;){for(ki=dn,dn=[];++Ol<e;)ki&&ki[Ol].run();Ol=-1,e=dn.length}ki=null,$s=!1,nB(t)}}function sB(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];dn.push(new F1(t,e)),dn.length===1&&!$s&&B1($1)}function F1(t,e){this.fun=t,this.array=e}F1.prototype.run=function(){this.fun.apply(null,this.array)};var oB="browser",aB="browser",lB=!0,uB={},cB=[],fB="",dB={},hB={},pB={};function cs(){}var gB=cs,mB=cs,bB=cs,yB=cs,wB=cs,vB=cs,_B=cs;function EB(t){throw new Error("process.binding is not supported")}function SB(){return"/"}function TB(t){throw new Error("process.chdir is not supported")}function xB(){return 0}var Es=Vi.performance||{},AB=Es.now||Es.mozNow||Es.msNow||Es.oNow||Es.webkitNow||function(){return new Date().getTime()};function CB(t){var e=AB.call(Es)*.001,r=Math.floor(e),n=Math.floor(e%1*1e9);return t&&(r=r-t[0],n=n-t[1],n<0&&(r--,n+=1e9)),[r,n]}var IB=new Date;function MB(){var t=new Date,e=t-IB;return e/1e3}var Xt={nextTick:sB,title:oB,browser:lB,env:uB,argv:cB,version:fB,versions:dB,on:gB,addListener:mB,once:bB,off:yB,removeListener:wB,removeAllListeners:vB,emit:_B,binding:EB,cwd:SB,chdir:TB,umask:xB,hrtime:CB,platform:aB,release:hB,config:pB,uptime:MB},qh={exports:{}},hf,Kb;function OB(){if(Kb)return hf;Kb=1;var t=1e3,e=t*60,r=e*60,n=r*24,s=n*7,i=n*365.25;hf=function(c,f){f=f||{};var d=typeof c;if(d==="string"&&c.length>0)return o(c);if(d==="number"&&isFinite(c))return f.long?l(c):a(c);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(c))};function o(c){if(c=String(c),!(c.length>100)){var f=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(c);if(f){var d=parseFloat(f[1]),g=(f[2]||"ms").toLowerCase();switch(g){case"years":case"year":case"yrs":case"yr":case"y":return d*i;case"weeks":case"week":case"w":return d*s;case"days":case"day":case"d":return d*n;case"hours":case"hour":case"hrs":case"hr":case"h":return d*r;case"minutes":case"minute":case"mins":case"min":case"m":return d*e;case"seconds":case"second":case"secs":case"sec":case"s":return d*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return d;default:return}}}}function a(c){var f=Math.abs(c);return f>=n?Math.round(c/n)+"d":f>=r?Math.round(c/r)+"h":f>=e?Math.round(c/e)+"m":f>=t?Math.round(c/t)+"s":c+"ms"}function l(c){var f=Math.abs(c);return f>=n?u(c,f,n,"day"):f>=r?u(c,f,r,"hour"):f>=e?u(c,f,e,"minute"):f>=t?u(c,f,t,"second"):c+" ms"}function u(c,f,d,g){var m=f>=d*1.5;return Math.round(c/d)+" "+g+(m?"s":"")}return hf}function RB(t){r.debug=r,r.default=r,r.coerce=l,r.disable=i,r.enable=s,r.enabled=o,r.humanize=OB(),r.destroy=u,Object.keys(t).forEach(c=>{r[c]=t[c]}),r.names=[],r.skips=[],r.formatters={};function e(c){let f=0;for(let d=0;d<c.length;d++)f=(f<<5)-f+c.charCodeAt(d),f|=0;return r.colors[Math.abs(f)%r.colors.length]}r.selectColor=e;function r(c){let f,d=null,g,m;function y(..._){if(!y.enabled)return;const S=y,E=Number(new Date),v=E-(f||E);S.diff=v,S.prev=f,S.curr=E,f=E,_[0]=r.coerce(_[0]),typeof _[0]!="string"&&_.unshift("%O");let x=0;_[0]=_[0].replace(/%([a-zA-Z%])/g,(A,L)=>{if(A==="%%")return"%";x++;const D=r.formatters[L];if(typeof D=="function"){const B=_[x];A=D.call(S,B),_.splice(x,1),x--}return A}),r.formatArgs.call(S,_),(S.log||r.log).apply(S,_)}return y.namespace=c,y.useColors=r.useColors(),y.color=r.selectColor(c),y.extend=n,y.destroy=r.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(g!==r.namespaces&&(g=r.namespaces,m=r.enabled(c)),m),set:_=>{d=_}}),typeof r.init=="function"&&r.init(y),y}function n(c,f){const d=r(this.namespace+(typeof f>"u"?":":f)+c);return d.log=this.log,d}function s(c){r.save(c),r.namespaces=c,r.names=[],r.skips=[];let f;const d=(typeof c=="string"?c:"").split(/[\s,]+/),g=d.length;for(f=0;f<g;f++)d[f]&&(c=d[f].replace(/\*/g,".*?"),c[0]==="-"?r.skips.push(new RegExp("^"+c.slice(1)+"$")):r.names.push(new RegExp("^"+c+"$")))}function i(){const c=[...r.names.map(a),...r.skips.map(a).map(f=>"-"+f)].join(",");return r.enable(""),c}function o(c){if(c[c.length-1]==="*")return!0;let f,d;for(f=0,d=r.skips.length;f<d;f++)if(r.skips[f].test(c))return!1;for(f=0,d=r.names.length;f<d;f++)if(r.names[f].test(c))return!0;return!1}function a(c){return c.toString().substring(2,c.toString().length-2).replace(/\.\*\?$/,"*")}function l(c){return c instanceof Error?c.stack||c.message:c}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}var PB=RB;(function(t,e){var r={};e.formatArgs=s,e.save=i,e.load=o,e.useColors=n,e.storage=a(),e.destroy=(()=>{let u=!1;return()=>{u||(u=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let u;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(u=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(u[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function s(u){if(u[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+u[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;const c="color: "+this.color;u.splice(1,0,c,"color: inherit");let f=0,d=0;u[0].replace(/%[a-zA-Z%]/g,g=>{g!=="%%"&&(f++,g==="%c"&&(d=f))}),u.splice(d,0,c)}e.log=console.debug||console.log||(()=>{});function i(u){try{u?e.storage.setItem("debug",u):e.storage.removeItem("debug")}catch{}}function o(){let u;try{u=e.storage.getItem("debug")}catch{}return!u&&typeof Xt<"u"&&"env"in Xt&&(u=r.DEBUG),u}function a(){try{return localStorage}catch{}}t.exports=PB(e);const{formatters:l}=t.exports;l.j=function(u){try{return JSON.stringify(u)}catch(c){return"[UnexpectedJSONParseError]: "+c.message}}})(qh,qh.exports);var U1=qh.exports;U1("mqtt-packet:parser");const{Buffer:Xb}=nr;Xb.isBuffer(Xb.from([1,2]).subarray(0,1));var Yh={exports:{}};typeof Xt>"u"||!Xt.version||Xt.version.indexOf("v0.")===0||Xt.version.indexOf("v1.")===0&&Xt.version.indexOf("v1.8.")!==0?Yh.exports={nextTick:kB}:Yh.exports=Xt;function kB(t,e,r,n){if(typeof t!="function")throw new TypeError('"callback" argument must be a function');var s=arguments.length,i,o;switch(s){case 0:case 1:return Xt.nextTick(t);case 2:return Xt.nextTick(function(){t.call(null,e)});case 3:return Xt.nextTick(function(){t.call(null,e,r)});case 4:return Xt.nextTick(function(){t.call(null,e,r,n)});default:for(i=new Array(s-1),o=0;o<i.length;)i[o++]=arguments[o];return Xt.nextTick(function(){t.apply(null,i)})}}var LB=Yh.exports;const{Buffer:j1}=nr;j1.allocUnsafe(0);j1.from([0]);LB.nextTick;U1("mqtt-packet:writeToStream");function Qb(t){return t!==null&&typeof t=="object"&&"constructor"in t&&t.constructor===Object}function Eg(t,e){t===void 0&&(t={}),e===void 0&&(e={}),Object.keys(e).forEach(r=>{typeof t[r]>"u"?t[r]=e[r]:Qb(e[r])&&Qb(t[r])&&Object.keys(e[r]).length>0&&Eg(t[r],e[r])})}const W1={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector(){return null},querySelectorAll(){return[]},getElementById(){return null},createEvent(){return{initEvent(){}}},createElement(){return{children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName(){return[]}}},createElementNS(){return{}},importNode(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function vt(){const t=typeof document<"u"?document:{};return Eg(t,W1),t}const NB={document:W1,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle(){return{getPropertyValue(){return""}}},Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia(){return{}},requestAnimationFrame(t){return typeof setTimeout>"u"?(t(),null):setTimeout(t,0)},cancelAnimationFrame(t){typeof setTimeout>"u"||clearTimeout(t)}};function ot(){const t=typeof window<"u"?window:{};return Eg(t,NB),t}function Wn(t){return t===void 0&&(t=""),t.trim().split(" ").filter(e=>!!e.trim())}function DB(t){const e=t;Object.keys(e).forEach(r=>{try{e[r]=null}catch{}try{delete e[r]}catch{}})}function Xi(t,e){return e===void 0&&(e=0),setTimeout(t,e)}function ar(){return Date.now()}function BB(t){const e=ot();let r;return e.getComputedStyle&&(r=e.getComputedStyle(t,null)),!r&&t.currentStyle&&(r=t.currentStyle),r||(r=t.style),r}function Gh(t,e){e===void 0&&(e="x");const r=ot();let n,s,i;const o=BB(t);return r.WebKitCSSMatrix?(s=o.transform||o.webkitTransform,s.split(",").length>6&&(s=s.split(", ").map(a=>a.replace(",",".")).join(", ")),i=new r.WebKitCSSMatrix(s==="none"?"":s)):(i=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),n=i.toString().split(",")),e==="x"&&(r.WebKitCSSMatrix?s=i.m41:n.length===16?s=parseFloat(n[12]):s=parseFloat(n[4])),e==="y"&&(r.WebKitCSSMatrix?s=i.m42:n.length===16?s=parseFloat(n[13]):s=parseFloat(n[5])),s||0}function Fo(t){return typeof t=="object"&&t!==null&&t.constructor&&Object.prototype.toString.call(t).slice(8,-1)==="Object"}function $B(t){return typeof window<"u"&&typeof window.HTMLElement<"u"?t instanceof HTMLElement:t&&(t.nodeType===1||t.nodeType===11)}function Kt(){const t=Object(arguments.length<=0?void 0:arguments[0]),e=["__proto__","constructor","prototype"];for(let r=1;r<arguments.length;r+=1){const n=r<0||arguments.length<=r?void 0:arguments[r];if(n!=null&&!$B(n)){const s=Object.keys(Object(n)).filter(i=>e.indexOf(i)<0);for(let i=0,o=s.length;i<o;i+=1){const a=s[i],l=Object.getOwnPropertyDescriptor(n,a);l!==void 0&&l.enumerable&&(Fo(t[a])&&Fo(n[a])?n[a].__swiper__?t[a]=n[a]:Kt(t[a],n[a]):!Fo(t[a])&&Fo(n[a])?(t[a]={},n[a].__swiper__?t[a]=n[a]:Kt(t[a],n[a])):t[a]=n[a])}}}return t}function Uo(t,e,r){t.style.setProperty(e,r)}function z1(t){let{swiper:e,targetPosition:r,side:n}=t;const s=ot(),i=-e.translate;let o=null,a;const l=e.params.speed;e.wrapperEl.style.scrollSnapType="none",s.cancelAnimationFrame(e.cssModeFrameID);const u=r>i?"next":"prev",c=(d,g)=>u==="next"&&d>=g||u==="prev"&&d<=g,f=()=>{a=new Date().getTime(),o===null&&(o=a);const d=Math.max(Math.min((a-o)/l,1),0),g=.5-Math.cos(d*Math.PI)/2;let m=i+g*(r-i);if(c(m,r)&&(m=r),e.wrapperEl.scrollTo({[n]:m}),c(m,r)){e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[n]:m})}),s.cancelAnimationFrame(e.cssModeFrameID);return}e.cssModeFrameID=s.requestAnimationFrame(f)};f()}function fs(t){return t.querySelector(".swiper-slide-transform")||t.shadowRoot&&t.shadowRoot.querySelector(".swiper-slide-transform")||t}function wt(t,e){e===void 0&&(e="");const r=[...t.children];return t instanceof HTMLSlotElement&&r.push(...t.assignedElements()),e?r.filter(n=>n.matches(e)):r}function FB(t,e){const r=e.contains(t);return!r&&e instanceof HTMLSlotElement?[...e.assignedElements()].includes(t):r}function uu(t){try{console.warn(t);return}catch{}}function Jt(t,e){e===void 0&&(e=[]);const r=document.createElement(t);return r.classList.add(...Array.isArray(e)?e:Wn(e)),r}function cu(t){const e=ot(),r=vt(),n=t.getBoundingClientRect(),s=r.body,i=t.clientTop||s.clientTop||0,o=t.clientLeft||s.clientLeft||0,a=t===e?e.scrollY:t.scrollTop,l=t===e?e.scrollX:t.scrollLeft;return{top:n.top+a-i,left:n.left+l-o}}function UB(t,e){const r=[];for(;t.previousElementSibling;){const n=t.previousElementSibling;e?n.matches(e)&&r.push(n):r.push(n),t=n}return r}function jB(t,e){const r=[];for(;t.nextElementSibling;){const n=t.nextElementSibling;e?n.matches(e)&&r.push(n):r.push(n),t=n}return r}function Gn(t,e){return ot().getComputedStyle(t,null).getPropertyValue(e)}function ua(t){let e=t,r;if(e){for(r=0;(e=e.previousSibling)!==null;)e.nodeType===1&&(r+=1);return r}}function zi(t,e){const r=[];let n=t.parentElement;for(;n;)e?n.matches(e)&&r.push(n):r.push(n),n=n.parentElement;return r}function Xo(t,e){function r(n){n.target===t&&(e.call(t,n),t.removeEventListener("transitionend",r))}e&&t.addEventListener("transitionend",r)}function Kh(t,e,r){const n=ot();return t[e==="width"?"offsetWidth":"offsetHeight"]+parseFloat(n.getComputedStyle(t,null).getPropertyValue(e==="width"?"margin-right":"margin-top"))+parseFloat(n.getComputedStyle(t,null).getPropertyValue(e==="width"?"margin-left":"margin-bottom"))}function $e(t){return(Array.isArray(t)?t:[t]).filter(e=>!!e)}function ec(t){return e=>Math.abs(e)>0&&t.browser&&t.browser.need3dFix&&Math.abs(e)%90===0?e+.001:e}let pf;function WB(){const t=ot(),e=vt();return{smoothScroll:e.documentElement&&e.documentElement.style&&"scrollBehavior"in e.documentElement.style,touch:!!("ontouchstart"in t||t.DocumentTouch&&e instanceof t.DocumentTouch)}}function H1(){return pf||(pf=WB()),pf}let gf;function zB(t){let{userAgent:e}=t===void 0?{}:t;const r=H1(),n=ot(),s=n.navigator.platform,i=e||n.navigator.userAgent,o={ios:!1,android:!1},a=n.screen.width,l=n.screen.height,u=i.match(/(Android);?[\s\/]+([\d.]+)?/);let c=i.match(/(iPad).*OS\s([\d_]+)/);const f=i.match(/(iPod)(.*OS\s([\d_]+))?/),d=!c&&i.match(/(iPhone\sOS|iOS)\s([\d_]+)/),g=s==="Win32";let m=s==="MacIntel";const y=["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"];return!c&&m&&r.touch&&y.indexOf(`${a}x${l}`)>=0&&(c=i.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),m=!1),u&&!g&&(o.os="android",o.android=!0),(c||d||f)&&(o.os="ios",o.ios=!0),o}function V1(t){return t===void 0&&(t={}),gf||(gf=zB(t)),gf}let mf;function HB(){const t=ot(),e=V1();let r=!1;function n(){const a=t.navigator.userAgent.toLowerCase();return a.indexOf("safari")>=0&&a.indexOf("chrome")<0&&a.indexOf("android")<0}if(n()){const a=String(t.navigator.userAgent);if(a.includes("Version/")){const[l,u]=a.split("Version/")[1].split(" ")[0].split(".").map(c=>Number(c));r=l<16||l===16&&u<2}}const s=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(t.navigator.userAgent),i=n(),o=i||s&&e.ios;return{isSafari:r||i,needPerspectiveFix:r,need3dFix:o,isWebView:s}}function VB(){return mf||(mf=HB()),mf}function qB(t){let{swiper:e,on:r,emit:n}=t;const s=ot();let i=null,o=null;const a=()=>{!e||e.destroyed||!e.initialized||(n("beforeResize"),n("resize"))},l=()=>{!e||e.destroyed||!e.initialized||(i=new ResizeObserver(f=>{o=s.requestAnimationFrame(()=>{const{width:d,height:g}=e;let m=d,y=g;f.forEach(_=>{let{contentBoxSize:S,contentRect:E,target:v}=_;v&&v!==e.el||(m=E?E.width:(S[0]||S).inlineSize,y=E?E.height:(S[0]||S).blockSize)}),(m!==d||y!==g)&&a()})}),i.observe(e.el))},u=()=>{o&&s.cancelAnimationFrame(o),i&&i.unobserve&&e.el&&(i.unobserve(e.el),i=null)},c=()=>{!e||e.destroyed||!e.initialized||n("orientationchange")};r("init",()=>{if(e.params.resizeObserver&&typeof s.ResizeObserver<"u"){l();return}s.addEventListener("resize",a),s.addEventListener("orientationchange",c)}),r("destroy",()=>{u(),s.removeEventListener("resize",a),s.removeEventListener("orientationchange",c)})}function YB(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i=[],o=ot(),a=function(c,f){f===void 0&&(f={});const d=o.MutationObserver||o.WebkitMutationObserver,g=new d(m=>{if(e.__preventObserver__)return;if(m.length===1){s("observerUpdate",m[0]);return}const y=function(){s("observerUpdate",m[0])};o.requestAnimationFrame?o.requestAnimationFrame(y):o.setTimeout(y,0)});g.observe(c,{attributes:typeof f.attributes>"u"?!0:f.attributes,childList:e.isElement||(typeof f.childList>"u"?!0:f).childList,characterData:typeof f.characterData>"u"?!0:f.characterData}),i.push(g)},l=()=>{if(e.params.observer){if(e.params.observeParents){const c=zi(e.hostEl);for(let f=0;f<c.length;f+=1)a(c[f])}a(e.hostEl,{childList:e.params.observeSlideChildren}),a(e.wrapperEl,{attributes:!1})}},u=()=>{i.forEach(c=>{c.disconnect()}),i.splice(0,i.length)};r({observer:!1,observeParents:!1,observeSlideChildren:!1}),n("init",l),n("destroy",u)}var GB={on(t,e,r){const n=this;if(!n.eventsListeners||n.destroyed||typeof e!="function")return n;const s=r?"unshift":"push";return t.split(" ").forEach(i=>{n.eventsListeners[i]||(n.eventsListeners[i]=[]),n.eventsListeners[i][s](e)}),n},once(t,e,r){const n=this;if(!n.eventsListeners||n.destroyed||typeof e!="function")return n;function s(){n.off(t,s),s.__emitterProxy&&delete s.__emitterProxy;for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];e.apply(n,o)}return s.__emitterProxy=e,n.on(t,s,r)},onAny(t,e){const r=this;if(!r.eventsListeners||r.destroyed||typeof t!="function")return r;const n=e?"unshift":"push";return r.eventsAnyListeners.indexOf(t)<0&&r.eventsAnyListeners[n](t),r},offAny(t){const e=this;if(!e.eventsListeners||e.destroyed||!e.eventsAnyListeners)return e;const r=e.eventsAnyListeners.indexOf(t);return r>=0&&e.eventsAnyListeners.splice(r,1),e},off(t,e){const r=this;return!r.eventsListeners||r.destroyed||!r.eventsListeners||t.split(" ").forEach(n=>{typeof e>"u"?r.eventsListeners[n]=[]:r.eventsListeners[n]&&r.eventsListeners[n].forEach((s,i)=>{(s===e||s.__emitterProxy&&s.__emitterProxy===e)&&r.eventsListeners[n].splice(i,1)})}),r},emit(){const t=this;if(!t.eventsListeners||t.destroyed||!t.eventsListeners)return t;let e,r,n;for(var s=arguments.length,i=new Array(s),o=0;o<s;o++)i[o]=arguments[o];return typeof i[0]=="string"||Array.isArray(i[0])?(e=i[0],r=i.slice(1,i.length),n=t):(e=i[0].events,r=i[0].data,n=i[0].context||t),r.unshift(n),(Array.isArray(e)?e:e.split(" ")).forEach(l=>{t.eventsAnyListeners&&t.eventsAnyListeners.length&&t.eventsAnyListeners.forEach(u=>{u.apply(n,[l,...r])}),t.eventsListeners&&t.eventsListeners[l]&&t.eventsListeners[l].forEach(u=>{u.apply(n,r)})}),t}};function KB(){const t=this;let e,r;const n=t.el;typeof t.params.width<"u"&&t.params.width!==null?e=t.params.width:e=n.clientWidth,typeof t.params.height<"u"&&t.params.height!==null?r=t.params.height:r=n.clientHeight,!(e===0&&t.isHorizontal()||r===0&&t.isVertical())&&(e=e-parseInt(Gn(n,"padding-left")||0,10)-parseInt(Gn(n,"padding-right")||0,10),r=r-parseInt(Gn(n,"padding-top")||0,10)-parseInt(Gn(n,"padding-bottom")||0,10),Number.isNaN(e)&&(e=0),Number.isNaN(r)&&(r=0),Object.assign(t,{width:e,height:r,size:t.isHorizontal()?e:r}))}function XB(){const t=this;function e(q,Y){return parseFloat(q.getPropertyValue(t.getDirectionLabel(Y))||0)}const r=t.params,{wrapperEl:n,slidesEl:s,size:i,rtlTranslate:o,wrongRTL:a}=t,l=t.virtual&&r.virtual.enabled,u=l?t.virtual.slides.length:t.slides.length,c=wt(s,`.${t.params.slideClass}, swiper-slide`),f=l?t.virtual.slides.length:c.length;let d=[];const g=[],m=[];let y=r.slidesOffsetBefore;typeof y=="function"&&(y=r.slidesOffsetBefore.call(t));let _=r.slidesOffsetAfter;typeof _=="function"&&(_=r.slidesOffsetAfter.call(t));const S=t.snapGrid.length,E=t.slidesGrid.length;let v=r.spaceBetween,x=-y,M=0,A=0;if(typeof i>"u")return;typeof v=="string"&&v.indexOf("%")>=0?v=parseFloat(v.replace("%",""))/100*i:typeof v=="string"&&(v=parseFloat(v)),t.virtualSize=-v,c.forEach(q=>{o?q.style.marginLeft="":q.style.marginRight="",q.style.marginBottom="",q.style.marginTop=""}),r.centeredSlides&&r.cssMode&&(Uo(n,"--swiper-centered-offset-before",""),Uo(n,"--swiper-centered-offset-after",""));const L=r.grid&&r.grid.rows>1&&t.grid;L?t.grid.initSlides(c):t.grid&&t.grid.unsetSlides();let D;const B=r.slidesPerView==="auto"&&r.breakpoints&&Object.keys(r.breakpoints).filter(q=>typeof r.breakpoints[q].slidesPerView<"u").length>0;for(let q=0;q<f;q+=1){D=0;let Y;if(c[q]&&(Y=c[q]),L&&t.grid.updateSlide(q,Y,c),!(c[q]&&Gn(Y,"display")==="none")){if(r.slidesPerView==="auto"){B&&(c[q].style[t.getDirectionLabel("width")]="");const R=getComputedStyle(Y),I=Y.style.transform,N=Y.style.webkitTransform;if(I&&(Y.style.transform="none"),N&&(Y.style.webkitTransform="none"),r.roundLengths)D=t.isHorizontal()?Kh(Y,"width"):Kh(Y,"height");else{const W=e(R,"width"),G=e(R,"padding-left"),H=e(R,"padding-right"),$=e(R,"margin-left"),ne=e(R,"margin-right"),ue=R.getPropertyValue("box-sizing");if(ue&&ue==="border-box")D=W+$+ne;else{const{clientWidth:re,offsetWidth:k}=Y;D=W+G+H+$+ne+(k-re)}}I&&(Y.style.transform=I),N&&(Y.style.webkitTransform=N),r.roundLengths&&(D=Math.floor(D))}else D=(i-(r.slidesPerView-1)*v)/r.slidesPerView,r.roundLengths&&(D=Math.floor(D)),c[q]&&(c[q].style[t.getDirectionLabel("width")]=`${D}px`);c[q]&&(c[q].swiperSlideSize=D),m.push(D),r.centeredSlides?(x=x+D/2+M/2+v,M===0&&q!==0&&(x=x-i/2-v),q===0&&(x=x-i/2-v),Math.abs(x)<1/1e3&&(x=0),r.roundLengths&&(x=Math.floor(x)),A%r.slidesPerGroup===0&&d.push(x),g.push(x)):(r.roundLengths&&(x=Math.floor(x)),(A-Math.min(t.params.slidesPerGroupSkip,A))%t.params.slidesPerGroup===0&&d.push(x),g.push(x),x=x+D+v),t.virtualSize+=D+v,M=D,A+=1}}if(t.virtualSize=Math.max(t.virtualSize,i)+_,o&&a&&(r.effect==="slide"||r.effect==="coverflow")&&(n.style.width=`${t.virtualSize+v}px`),r.setWrapperSize&&(n.style[t.getDirectionLabel("width")]=`${t.virtualSize+v}px`),L&&t.grid.updateWrapperSize(D,d),!r.centeredSlides){const q=[];for(let Y=0;Y<d.length;Y+=1){let R=d[Y];r.roundLengths&&(R=Math.floor(R)),d[Y]<=t.virtualSize-i&&q.push(R)}d=q,Math.floor(t.virtualSize-i)-Math.floor(d[d.length-1])>1&&d.push(t.virtualSize-i)}if(l&&r.loop){const q=m[0]+v;if(r.slidesPerGroup>1){const Y=Math.ceil((t.virtual.slidesBefore+t.virtual.slidesAfter)/r.slidesPerGroup),R=q*r.slidesPerGroup;for(let I=0;I<Y;I+=1)d.push(d[d.length-1]+R)}for(let Y=0;Y<t.virtual.slidesBefore+t.virtual.slidesAfter;Y+=1)r.slidesPerGroup===1&&d.push(d[d.length-1]+q),g.push(g[g.length-1]+q),t.virtualSize+=q}if(d.length===0&&(d=[0]),v!==0){const q=t.isHorizontal()&&o?"marginLeft":t.getDirectionLabel("marginRight");c.filter((Y,R)=>!r.cssMode||r.loop?!0:R!==c.length-1).forEach(Y=>{Y.style[q]=`${v}px`})}if(r.centeredSlides&&r.centeredSlidesBounds){let q=0;m.forEach(R=>{q+=R+(v||0)}),q-=v;const Y=q>i?q-i:0;d=d.map(R=>R<=0?-y:R>Y?Y+_:R)}if(r.centerInsufficientSlides){let q=0;m.forEach(R=>{q+=R+(v||0)}),q-=v;const Y=(r.slidesOffsetBefore||0)+(r.slidesOffsetAfter||0);if(q+Y<i){const R=(i-q-Y)/2;d.forEach((I,N)=>{d[N]=I-R}),g.forEach((I,N)=>{g[N]=I+R})}}if(Object.assign(t,{slides:c,snapGrid:d,slidesGrid:g,slidesSizesGrid:m}),r.centeredSlides&&r.cssMode&&!r.centeredSlidesBounds){Uo(n,"--swiper-centered-offset-before",`${-d[0]}px`),Uo(n,"--swiper-centered-offset-after",`${t.size/2-m[m.length-1]/2}px`);const q=-t.snapGrid[0],Y=-t.slidesGrid[0];t.snapGrid=t.snapGrid.map(R=>R+q),t.slidesGrid=t.slidesGrid.map(R=>R+Y)}if(f!==u&&t.emit("slidesLengthChange"),d.length!==S&&(t.params.watchOverflow&&t.checkOverflow(),t.emit("snapGridLengthChange")),g.length!==E&&t.emit("slidesGridLengthChange"),r.watchSlidesProgress&&t.updateSlidesOffset(),t.emit("slidesUpdated"),!l&&!r.cssMode&&(r.effect==="slide"||r.effect==="fade")){const q=`${r.containerModifierClass}backface-hidden`,Y=t.el.classList.contains(q);f<=r.maxBackfaceHiddenSlides?Y||t.el.classList.add(q):Y&&t.el.classList.remove(q)}}function QB(t){const e=this,r=[],n=e.virtual&&e.params.virtual.enabled;let s=0,i;typeof t=="number"?e.setTransition(t):t===!0&&e.setTransition(e.params.speed);const o=a=>n?e.slides[e.getSlideIndexByData(a)]:e.slides[a];if(e.params.slidesPerView!=="auto"&&e.params.slidesPerView>1)if(e.params.centeredSlides)(e.visibleSlides||[]).forEach(a=>{r.push(a)});else for(i=0;i<Math.ceil(e.params.slidesPerView);i+=1){const a=e.activeIndex+i;if(a>e.slides.length&&!n)break;r.push(o(a))}else r.push(o(e.activeIndex));for(i=0;i<r.length;i+=1)if(typeof r[i]<"u"){const a=r[i].offsetHeight;s=a>s?a:s}(s||s===0)&&(e.wrapperEl.style.height=`${s}px`)}function JB(){const t=this,e=t.slides,r=t.isElement?t.isHorizontal()?t.wrapperEl.offsetLeft:t.wrapperEl.offsetTop:0;for(let n=0;n<e.length;n+=1)e[n].swiperSlideOffset=(t.isHorizontal()?e[n].offsetLeft:e[n].offsetTop)-r-t.cssOverflowAdjustment()}const Jb=(t,e,r)=>{e&&!t.classList.contains(r)?t.classList.add(r):!e&&t.classList.contains(r)&&t.classList.remove(r)};function ZB(t){t===void 0&&(t=this&&this.translate||0);const e=this,r=e.params,{slides:n,rtlTranslate:s,snapGrid:i}=e;if(n.length===0)return;typeof n[0].swiperSlideOffset>"u"&&e.updateSlidesOffset();let o=-t;s&&(o=t),e.visibleSlidesIndexes=[],e.visibleSlides=[];let a=r.spaceBetween;typeof a=="string"&&a.indexOf("%")>=0?a=parseFloat(a.replace("%",""))/100*e.size:typeof a=="string"&&(a=parseFloat(a));for(let l=0;l<n.length;l+=1){const u=n[l];let c=u.swiperSlideOffset;r.cssMode&&r.centeredSlides&&(c-=n[0].swiperSlideOffset);const f=(o+(r.centeredSlides?e.minTranslate():0)-c)/(u.swiperSlideSize+a),d=(o-i[0]+(r.centeredSlides?e.minTranslate():0)-c)/(u.swiperSlideSize+a),g=-(o-c),m=g+e.slidesSizesGrid[l],y=g>=0&&g<=e.size-e.slidesSizesGrid[l],_=g>=0&&g<e.size-1||m>1&&m<=e.size||g<=0&&m>=e.size;_&&(e.visibleSlides.push(u),e.visibleSlidesIndexes.push(l)),Jb(u,_,r.slideVisibleClass),Jb(u,y,r.slideFullyVisibleClass),u.progress=s?-f:f,u.originalProgress=s?-d:d}}function e$(t){const e=this;if(typeof t>"u"){const c=e.rtlTranslate?-1:1;t=e&&e.translate&&e.translate*c||0}const r=e.params,n=e.maxTranslate()-e.minTranslate();let{progress:s,isBeginning:i,isEnd:o,progressLoop:a}=e;const l=i,u=o;if(n===0)s=0,i=!0,o=!0;else{s=(t-e.minTranslate())/n;const c=Math.abs(t-e.minTranslate())<1,f=Math.abs(t-e.maxTranslate())<1;i=c||s<=0,o=f||s>=1,c&&(s=0),f&&(s=1)}if(r.loop){const c=e.getSlideIndexByData(0),f=e.getSlideIndexByData(e.slides.length-1),d=e.slidesGrid[c],g=e.slidesGrid[f],m=e.slidesGrid[e.slidesGrid.length-1],y=Math.abs(t);y>=d?a=(y-d)/m:a=(y+m-g)/m,a>1&&(a-=1)}Object.assign(e,{progress:s,progressLoop:a,isBeginning:i,isEnd:o}),(r.watchSlidesProgress||r.centeredSlides&&r.autoHeight)&&e.updateSlidesProgress(t),i&&!l&&e.emit("reachBeginning toEdge"),o&&!u&&e.emit("reachEnd toEdge"),(l&&!i||u&&!o)&&e.emit("fromEdge"),e.emit("progress",s)}const bf=(t,e,r)=>{e&&!t.classList.contains(r)?t.classList.add(r):!e&&t.classList.contains(r)&&t.classList.remove(r)};function t$(){const t=this,{slides:e,params:r,slidesEl:n,activeIndex:s}=t,i=t.virtual&&r.virtual.enabled,o=t.grid&&r.grid&&r.grid.rows>1,a=f=>wt(n,`.${r.slideClass}${f}, swiper-slide${f}`)[0];let l,u,c;if(i)if(r.loop){let f=s-t.virtual.slidesBefore;f<0&&(f=t.virtual.slides.length+f),f>=t.virtual.slides.length&&(f-=t.virtual.slides.length),l=a(`[data-swiper-slide-index="${f}"]`)}else l=a(`[data-swiper-slide-index="${s}"]`);else o?(l=e.filter(f=>f.column===s)[0],c=e.filter(f=>f.column===s+1)[0],u=e.filter(f=>f.column===s-1)[0]):l=e[s];l&&(o||(c=jB(l,`.${r.slideClass}, swiper-slide`)[0],r.loop&&!c&&(c=e[0]),u=UB(l,`.${r.slideClass}, swiper-slide`)[0],r.loop&&!u===0&&(u=e[e.length-1]))),e.forEach(f=>{bf(f,f===l,r.slideActiveClass),bf(f,f===c,r.slideNextClass),bf(f,f===u,r.slidePrevClass)}),t.emitSlidesClasses()}const Rl=(t,e)=>{if(!t||t.destroyed||!t.params)return;const r=()=>t.isElement?"swiper-slide":`.${t.params.slideClass}`,n=e.closest(r());if(n){let s=n.querySelector(`.${t.params.lazyPreloaderClass}`);!s&&t.isElement&&(n.shadowRoot?s=n.shadowRoot.querySelector(`.${t.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{n.shadowRoot&&(s=n.shadowRoot.querySelector(`.${t.params.lazyPreloaderClass}`),s&&s.remove())})),s&&s.remove()}},yf=(t,e)=>{if(!t.slides[e])return;const r=t.slides[e].querySelector('[loading="lazy"]');r&&r.removeAttribute("loading")},Xh=t=>{if(!t||t.destroyed||!t.params)return;let e=t.params.lazyPreloadPrevNext;const r=t.slides.length;if(!r||!e||e<0)return;e=Math.min(e,r);const n=t.params.slidesPerView==="auto"?t.slidesPerViewDynamic():Math.ceil(t.params.slidesPerView),s=t.activeIndex;if(t.params.grid&&t.params.grid.rows>1){const o=s,a=[o-e];a.push(...Array.from({length:e}).map((l,u)=>o+n+u)),t.slides.forEach((l,u)=>{a.includes(l.column)&&yf(t,u)});return}const i=s+n-1;if(t.params.rewind||t.params.loop)for(let o=s-e;o<=i+e;o+=1){const a=(o%r+r)%r;(a<s||a>i)&&yf(t,a)}else for(let o=Math.max(s-e,0);o<=Math.min(i+e,r-1);o+=1)o!==s&&(o>i||o<s)&&yf(t,o)};function r$(t){const{slidesGrid:e,params:r}=t,n=t.rtlTranslate?t.translate:-t.translate;let s;for(let i=0;i<e.length;i+=1)typeof e[i+1]<"u"?n>=e[i]&&n<e[i+1]-(e[i+1]-e[i])/2?s=i:n>=e[i]&&n<e[i+1]&&(s=i+1):n>=e[i]&&(s=i);return r.normalizeSlideIndex&&(s<0||typeof s>"u")&&(s=0),s}function n$(t){const e=this,r=e.rtlTranslate?e.translate:-e.translate,{snapGrid:n,params:s,activeIndex:i,realIndex:o,snapIndex:a}=e;let l=t,u;const c=g=>{let m=g-e.virtual.slidesBefore;return m<0&&(m=e.virtual.slides.length+m),m>=e.virtual.slides.length&&(m-=e.virtual.slides.length),m};if(typeof l>"u"&&(l=r$(e)),n.indexOf(r)>=0)u=n.indexOf(r);else{const g=Math.min(s.slidesPerGroupSkip,l);u=g+Math.floor((l-g)/s.slidesPerGroup)}if(u>=n.length&&(u=n.length-1),l===i&&!e.params.loop){u!==a&&(e.snapIndex=u,e.emit("snapIndexChange"));return}if(l===i&&e.params.loop&&e.virtual&&e.params.virtual.enabled){e.realIndex=c(l);return}const f=e.grid&&s.grid&&s.grid.rows>1;let d;if(e.virtual&&s.virtual.enabled&&s.loop)d=c(l);else if(f){const g=e.slides.filter(y=>y.column===l)[0];let m=parseInt(g.getAttribute("data-swiper-slide-index"),10);Number.isNaN(m)&&(m=Math.max(e.slides.indexOf(g),0)),d=Math.floor(m/s.grid.rows)}else if(e.slides[l]){const g=e.slides[l].getAttribute("data-swiper-slide-index");g?d=parseInt(g,10):d=l}else d=l;Object.assign(e,{previousSnapIndex:a,snapIndex:u,previousRealIndex:o,realIndex:d,previousIndex:i,activeIndex:l}),e.initialized&&Xh(e),e.emit("activeIndexChange"),e.emit("snapIndexChange"),(e.initialized||e.params.runCallbacksOnInit)&&(o!==d&&e.emit("realIndexChange"),e.emit("slideChange"))}function i$(t,e){const r=this,n=r.params;let s=t.closest(`.${n.slideClass}, swiper-slide`);!s&&r.isElement&&e&&e.length>1&&e.includes(t)&&[...e.slice(e.indexOf(t)+1,e.length)].forEach(a=>{!s&&a.matches&&a.matches(`.${n.slideClass}, swiper-slide`)&&(s=a)});let i=!1,o;if(s){for(let a=0;a<r.slides.length;a+=1)if(r.slides[a]===s){i=!0,o=a;break}}if(s&&i)r.clickedSlide=s,r.virtual&&r.params.virtual.enabled?r.clickedIndex=parseInt(s.getAttribute("data-swiper-slide-index"),10):r.clickedIndex=o;else{r.clickedSlide=void 0,r.clickedIndex=void 0;return}n.slideToClickedSlide&&r.clickedIndex!==void 0&&r.clickedIndex!==r.activeIndex&&r.slideToClickedSlide()}var s$={updateSize:KB,updateSlides:XB,updateAutoHeight:QB,updateSlidesOffset:JB,updateSlidesProgress:ZB,updateProgress:e$,updateSlidesClasses:t$,updateActiveIndex:n$,updateClickedSlide:i$};function o$(t){t===void 0&&(t=this.isHorizontal()?"x":"y");const e=this,{params:r,rtlTranslate:n,translate:s,wrapperEl:i}=e;if(r.virtualTranslate)return n?-s:s;if(r.cssMode)return s;let o=Gh(i,t);return o+=e.cssOverflowAdjustment(),n&&(o=-o),o||0}function a$(t,e){const r=this,{rtlTranslate:n,params:s,wrapperEl:i,progress:o}=r;let a=0,l=0;const u=0;r.isHorizontal()?a=n?-t:t:l=t,s.roundLengths&&(a=Math.floor(a),l=Math.floor(l)),r.previousTranslate=r.translate,r.translate=r.isHorizontal()?a:l,s.cssMode?i[r.isHorizontal()?"scrollLeft":"scrollTop"]=r.isHorizontal()?-a:-l:s.virtualTranslate||(r.isHorizontal()?a-=r.cssOverflowAdjustment():l-=r.cssOverflowAdjustment(),i.style.transform=`translate3d(${a}px, ${l}px, ${u}px)`);let c;const f=r.maxTranslate()-r.minTranslate();f===0?c=0:c=(t-r.minTranslate())/f,c!==o&&r.updateProgress(t),r.emit("setTranslate",r.translate,e)}function l$(){return-this.snapGrid[0]}function u$(){return-this.snapGrid[this.snapGrid.length-1]}function c$(t,e,r,n,s){t===void 0&&(t=0),e===void 0&&(e=this.params.speed),r===void 0&&(r=!0),n===void 0&&(n=!0);const i=this,{params:o,wrapperEl:a}=i;if(i.animating&&o.preventInteractionOnTransition)return!1;const l=i.minTranslate(),u=i.maxTranslate();let c;if(n&&t>l?c=l:n&&t<u?c=u:c=t,i.updateProgress(c),o.cssMode){const f=i.isHorizontal();if(e===0)a[f?"scrollLeft":"scrollTop"]=-c;else{if(!i.support.smoothScroll)return z1({swiper:i,targetPosition:-c,side:f?"left":"top"}),!0;a.scrollTo({[f?"left":"top"]:-c,behavior:"smooth"})}return!0}return e===0?(i.setTransition(0),i.setTranslate(c),r&&(i.emit("beforeTransitionStart",e,s),i.emit("transitionEnd"))):(i.setTransition(e),i.setTranslate(c),r&&(i.emit("beforeTransitionStart",e,s),i.emit("transitionStart")),i.animating||(i.animating=!0,i.onTranslateToWrapperTransitionEnd||(i.onTranslateToWrapperTransitionEnd=function(d){!i||i.destroyed||d.target===this&&(i.wrapperEl.removeEventListener("transitionend",i.onTranslateToWrapperTransitionEnd),i.onTranslateToWrapperTransitionEnd=null,delete i.onTranslateToWrapperTransitionEnd,i.animating=!1,r&&i.emit("transitionEnd"))}),i.wrapperEl.addEventListener("transitionend",i.onTranslateToWrapperTransitionEnd))),!0}var f$={getTranslate:o$,setTranslate:a$,minTranslate:l$,maxTranslate:u$,translateTo:c$};function d$(t,e){const r=this;r.params.cssMode||(r.wrapperEl.style.transitionDuration=`${t}ms`,r.wrapperEl.style.transitionDelay=t===0?"0ms":""),r.emit("setTransition",t,e)}function q1(t){let{swiper:e,runCallbacks:r,direction:n,step:s}=t;const{activeIndex:i,previousIndex:o}=e;let a=n;if(a||(i>o?a="next":i<o?a="prev":a="reset"),e.emit(`transition${s}`),r&&i!==o){if(a==="reset"){e.emit(`slideResetTransition${s}`);return}e.emit(`slideChangeTransition${s}`),a==="next"?e.emit(`slideNextTransition${s}`):e.emit(`slidePrevTransition${s}`)}}function h$(t,e){t===void 0&&(t=!0);const r=this,{params:n}=r;n.cssMode||(n.autoHeight&&r.updateAutoHeight(),q1({swiper:r,runCallbacks:t,direction:e,step:"Start"}))}function p$(t,e){t===void 0&&(t=!0);const r=this,{params:n}=r;r.animating=!1,!n.cssMode&&(r.setTransition(0),q1({swiper:r,runCallbacks:t,direction:e,step:"End"}))}var g$={setTransition:d$,transitionStart:h$,transitionEnd:p$};function m$(t,e,r,n,s){t===void 0&&(t=0),r===void 0&&(r=!0),typeof t=="string"&&(t=parseInt(t,10));const i=this;let o=t;o<0&&(o=0);const{params:a,snapGrid:l,slidesGrid:u,previousIndex:c,activeIndex:f,rtlTranslate:d,wrapperEl:g,enabled:m}=i;if(!m&&!n&&!s||i.destroyed||i.animating&&a.preventInteractionOnTransition)return!1;typeof e>"u"&&(e=i.params.speed);const y=Math.min(i.params.slidesPerGroupSkip,o);let _=y+Math.floor((o-y)/i.params.slidesPerGroup);_>=l.length&&(_=l.length-1);const S=-l[_];if(a.normalizeSlideIndex)for(let M=0;M<u.length;M+=1){const A=-Math.floor(S*100),L=Math.floor(u[M]*100),D=Math.floor(u[M+1]*100);typeof u[M+1]<"u"?A>=L&&A<D-(D-L)/2?o=M:A>=L&&A<D&&(o=M+1):A>=L&&(o=M)}if(i.initialized&&o!==f&&(!i.allowSlideNext&&(d?S>i.translate&&S>i.minTranslate():S<i.translate&&S<i.minTranslate())||!i.allowSlidePrev&&S>i.translate&&S>i.maxTranslate()&&(f||0)!==o))return!1;o!==(c||0)&&r&&i.emit("beforeSlideChangeStart"),i.updateProgress(S);let E;o>f?E="next":o<f?E="prev":E="reset";const v=i.virtual&&i.params.virtual.enabled;if(!(v&&s)&&(d&&-S===i.translate||!d&&S===i.translate))return i.updateActiveIndex(o),a.autoHeight&&i.updateAutoHeight(),i.updateSlidesClasses(),a.effect!=="slide"&&i.setTranslate(S),E!=="reset"&&(i.transitionStart(r,E),i.transitionEnd(r,E)),!1;if(a.cssMode){const M=i.isHorizontal(),A=d?S:-S;if(e===0)v&&(i.wrapperEl.style.scrollSnapType="none",i._immediateVirtual=!0),v&&!i._cssModeVirtualInitialSet&&i.params.initialSlide>0?(i._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{g[M?"scrollLeft":"scrollTop"]=A})):g[M?"scrollLeft":"scrollTop"]=A,v&&requestAnimationFrame(()=>{i.wrapperEl.style.scrollSnapType="",i._immediateVirtual=!1});else{if(!i.support.smoothScroll)return z1({swiper:i,targetPosition:A,side:M?"left":"top"}),!0;g.scrollTo({[M?"left":"top"]:A,behavior:"smooth"})}return!0}return i.setTransition(e),i.setTranslate(S),i.updateActiveIndex(o),i.updateSlidesClasses(),i.emit("beforeTransitionStart",e,n),i.transitionStart(r,E),e===0?i.transitionEnd(r,E):i.animating||(i.animating=!0,i.onSlideToWrapperTransitionEnd||(i.onSlideToWrapperTransitionEnd=function(A){!i||i.destroyed||A.target===this&&(i.wrapperEl.removeEventListener("transitionend",i.onSlideToWrapperTransitionEnd),i.onSlideToWrapperTransitionEnd=null,delete i.onSlideToWrapperTransitionEnd,i.transitionEnd(r,E))}),i.wrapperEl.addEventListener("transitionend",i.onSlideToWrapperTransitionEnd)),!0}function b$(t,e,r,n){t===void 0&&(t=0),r===void 0&&(r=!0),typeof t=="string"&&(t=parseInt(t,10));const s=this;if(s.destroyed)return;typeof e>"u"&&(e=s.params.speed);const i=s.grid&&s.params.grid&&s.params.grid.rows>1;let o=t;if(s.params.loop)if(s.virtual&&s.params.virtual.enabled)o=o+s.virtual.slidesBefore;else{let a;if(i){const d=o*s.params.grid.rows;a=s.slides.filter(g=>g.getAttribute("data-swiper-slide-index")*1===d)[0].column}else a=s.getSlideIndexByData(o);const l=i?Math.ceil(s.slides.length/s.params.grid.rows):s.slides.length,{centeredSlides:u}=s.params;let c=s.params.slidesPerView;c==="auto"?c=s.slidesPerViewDynamic():(c=Math.ceil(parseFloat(s.params.slidesPerView,10)),u&&c%2===0&&(c=c+1));let f=l-a<c;if(u&&(f=f||a<Math.ceil(c/2)),n&&u&&s.params.slidesPerView!=="auto"&&!i&&(f=!1),f){const d=u?a<s.activeIndex?"prev":"next":a-s.activeIndex-1<s.params.slidesPerView?"next":"prev";s.loopFix({direction:d,slideTo:!0,activeSlideIndex:d==="next"?a+1:a-l+1,slideRealIndex:d==="next"?s.realIndex:void 0})}if(i){const d=o*s.params.grid.rows;o=s.slides.filter(g=>g.getAttribute("data-swiper-slide-index")*1===d)[0].column}else o=s.getSlideIndexByData(o)}return requestAnimationFrame(()=>{s.slideTo(o,e,r,n)}),s}function y$(t,e,r){e===void 0&&(e=!0);const n=this,{enabled:s,params:i,animating:o}=n;if(!s||n.destroyed)return n;typeof t>"u"&&(t=n.params.speed);let a=i.slidesPerGroup;i.slidesPerView==="auto"&&i.slidesPerGroup===1&&i.slidesPerGroupAuto&&(a=Math.max(n.slidesPerViewDynamic("current",!0),1));const l=n.activeIndex<i.slidesPerGroupSkip?1:a,u=n.virtual&&i.virtual.enabled;if(i.loop){if(o&&!u&&i.loopPreventsSliding)return!1;if(n.loopFix({direction:"next"}),n._clientLeft=n.wrapperEl.clientLeft,n.activeIndex===n.slides.length-1&&i.cssMode)return requestAnimationFrame(()=>{n.slideTo(n.activeIndex+l,t,e,r)}),!0}return i.rewind&&n.isEnd?n.slideTo(0,t,e,r):n.slideTo(n.activeIndex+l,t,e,r)}function w$(t,e,r){e===void 0&&(e=!0);const n=this,{params:s,snapGrid:i,slidesGrid:o,rtlTranslate:a,enabled:l,animating:u}=n;if(!l||n.destroyed)return n;typeof t>"u"&&(t=n.params.speed);const c=n.virtual&&s.virtual.enabled;if(s.loop){if(u&&!c&&s.loopPreventsSliding)return!1;n.loopFix({direction:"prev"}),n._clientLeft=n.wrapperEl.clientLeft}const f=a?n.translate:-n.translate;function d(S){return S<0?-Math.floor(Math.abs(S)):Math.floor(S)}const g=d(f),m=i.map(S=>d(S));let y=i[m.indexOf(g)-1];if(typeof y>"u"&&s.cssMode){let S;i.forEach((E,v)=>{g>=E&&(S=v)}),typeof S<"u"&&(y=i[S>0?S-1:S])}let _=0;if(typeof y<"u"&&(_=o.indexOf(y),_<0&&(_=n.activeIndex-1),s.slidesPerView==="auto"&&s.slidesPerGroup===1&&s.slidesPerGroupAuto&&(_=_-n.slidesPerViewDynamic("previous",!0)+1,_=Math.max(_,0))),s.rewind&&n.isBeginning){const S=n.params.virtual&&n.params.virtual.enabled&&n.virtual?n.virtual.slides.length-1:n.slides.length-1;return n.slideTo(S,t,e,r)}else if(s.loop&&n.activeIndex===0&&s.cssMode)return requestAnimationFrame(()=>{n.slideTo(_,t,e,r)}),!0;return n.slideTo(_,t,e,r)}function v$(t,e,r){e===void 0&&(e=!0);const n=this;if(!n.destroyed)return typeof t>"u"&&(t=n.params.speed),n.slideTo(n.activeIndex,t,e,r)}function _$(t,e,r,n){e===void 0&&(e=!0),n===void 0&&(n=.5);const s=this;if(s.destroyed)return;typeof t>"u"&&(t=s.params.speed);let i=s.activeIndex;const o=Math.min(s.params.slidesPerGroupSkip,i),a=o+Math.floor((i-o)/s.params.slidesPerGroup),l=s.rtlTranslate?s.translate:-s.translate;if(l>=s.snapGrid[a]){const u=s.snapGrid[a],c=s.snapGrid[a+1];l-u>(c-u)*n&&(i+=s.params.slidesPerGroup)}else{const u=s.snapGrid[a-1],c=s.snapGrid[a];l-u<=(c-u)*n&&(i-=s.params.slidesPerGroup)}return i=Math.max(i,0),i=Math.min(i,s.slidesGrid.length-1),s.slideTo(i,t,e,r)}function E$(){const t=this;if(t.destroyed)return;const{params:e,slidesEl:r}=t,n=e.slidesPerView==="auto"?t.slidesPerViewDynamic():e.slidesPerView;let s=t.clickedIndex,i;const o=t.isElement?"swiper-slide":`.${e.slideClass}`;if(e.loop){if(t.animating)return;i=parseInt(t.clickedSlide.getAttribute("data-swiper-slide-index"),10),e.centeredSlides?s<t.loopedSlides-n/2||s>t.slides.length-t.loopedSlides+n/2?(t.loopFix(),s=t.getSlideIndex(wt(r,`${o}[data-swiper-slide-index="${i}"]`)[0]),Xi(()=>{t.slideTo(s)})):t.slideTo(s):s>t.slides.length-n?(t.loopFix(),s=t.getSlideIndex(wt(r,`${o}[data-swiper-slide-index="${i}"]`)[0]),Xi(()=>{t.slideTo(s)})):t.slideTo(s)}else t.slideTo(s)}var S$={slideTo:m$,slideToLoop:b$,slideNext:y$,slidePrev:w$,slideReset:v$,slideToClosest:_$,slideToClickedSlide:E$};function T$(t){const e=this,{params:r,slidesEl:n}=e;if(!r.loop||e.virtual&&e.params.virtual.enabled)return;const s=()=>{wt(n,`.${r.slideClass}, swiper-slide`).forEach((f,d)=>{f.setAttribute("data-swiper-slide-index",d)})},i=e.grid&&r.grid&&r.grid.rows>1,o=r.slidesPerGroup*(i?r.grid.rows:1),a=e.slides.length%o!==0,l=i&&e.slides.length%r.grid.rows!==0,u=c=>{for(let f=0;f<c;f+=1){const d=e.isElement?Jt("swiper-slide",[r.slideBlankClass]):Jt("div",[r.slideClass,r.slideBlankClass]);e.slidesEl.append(d)}};if(a){if(r.loopAddBlankSlides){const c=o-e.slides.length%o;u(c),e.recalcSlides(),e.updateSlides()}else uu("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");s()}else if(l){if(r.loopAddBlankSlides){const c=r.grid.rows-e.slides.length%r.grid.rows;u(c),e.recalcSlides(),e.updateSlides()}else uu("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");s()}else s();e.loopFix({slideRealIndex:t,direction:r.centeredSlides?void 0:"next"})}function x$(t){let{slideRealIndex:e,slideTo:r=!0,direction:n,setTranslate:s,activeSlideIndex:i,byController:o,byMousewheel:a}=t===void 0?{}:t;const l=this;if(!l.params.loop)return;l.emit("beforeLoopFix");const{slides:u,allowSlidePrev:c,allowSlideNext:f,slidesEl:d,params:g}=l,{centeredSlides:m}=g;if(l.allowSlidePrev=!0,l.allowSlideNext=!0,l.virtual&&g.virtual.enabled){r&&(!g.centeredSlides&&l.snapIndex===0?l.slideTo(l.virtual.slides.length,0,!1,!0):g.centeredSlides&&l.snapIndex<g.slidesPerView?l.slideTo(l.virtual.slides.length+l.snapIndex,0,!1,!0):l.snapIndex===l.snapGrid.length-1&&l.slideTo(l.virtual.slidesBefore,0,!1,!0)),l.allowSlidePrev=c,l.allowSlideNext=f,l.emit("loopFix");return}let y=g.slidesPerView;y==="auto"?y=l.slidesPerViewDynamic():(y=Math.ceil(parseFloat(g.slidesPerView,10)),m&&y%2===0&&(y=y+1));const _=g.slidesPerGroupAuto?y:g.slidesPerGroup;let S=_;S%_!==0&&(S+=_-S%_),S+=g.loopAdditionalSlides,l.loopedSlides=S;const E=l.grid&&g.grid&&g.grid.rows>1;u.length<y+S?uu("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters"):E&&g.grid.fill==="row"&&uu("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");const v=[],x=[];let M=l.activeIndex;typeof i>"u"?i=l.getSlideIndex(u.filter(I=>I.classList.contains(g.slideActiveClass))[0]):M=i;const A=n==="next"||!n,L=n==="prev"||!n;let D=0,B=0;const q=E?Math.ceil(u.length/g.grid.rows):u.length,R=(E?u[i].column:i)+(m&&typeof s>"u"?-y/2+.5:0);if(R<S){D=Math.max(S-R,_);for(let I=0;I<S-R;I+=1){const N=I-Math.floor(I/q)*q;if(E){const W=q-N-1;for(let G=u.length-1;G>=0;G-=1)u[G].column===W&&v.push(G)}else v.push(q-N-1)}}else if(R+y>q-S){B=Math.max(R-(q-S*2),_);for(let I=0;I<B;I+=1){const N=I-Math.floor(I/q)*q;E?u.forEach((W,G)=>{W.column===N&&x.push(G)}):x.push(N)}}if(l.__preventObserver__=!0,requestAnimationFrame(()=>{l.__preventObserver__=!1}),L&&v.forEach(I=>{u[I].swiperLoopMoveDOM=!0,d.prepend(u[I]),u[I].swiperLoopMoveDOM=!1}),A&&x.forEach(I=>{u[I].swiperLoopMoveDOM=!0,d.append(u[I]),u[I].swiperLoopMoveDOM=!1}),l.recalcSlides(),g.slidesPerView==="auto"?l.updateSlides():E&&(v.length>0&&L||x.length>0&&A)&&l.slides.forEach((I,N)=>{l.grid.updateSlide(N,I,l.slides)}),g.watchSlidesProgress&&l.updateSlidesOffset(),r){if(v.length>0&&L){if(typeof e>"u"){const I=l.slidesGrid[M],W=l.slidesGrid[M+D]-I;a?l.setTranslate(l.translate-W):(l.slideTo(M+Math.ceil(D),0,!1,!0),s&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-W,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-W))}else if(s){const I=E?v.length/g.grid.rows:v.length;l.slideTo(l.activeIndex+I,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(x.length>0&&A)if(typeof e>"u"){const I=l.slidesGrid[M],W=l.slidesGrid[M-B]-I;a?l.setTranslate(l.translate-W):(l.slideTo(M-B,0,!1,!0),s&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-W,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-W))}else{const I=E?x.length/g.grid.rows:x.length;l.slideTo(l.activeIndex-I,0,!1,!0)}}if(l.allowSlidePrev=c,l.allowSlideNext=f,l.controller&&l.controller.control&&!o){const I={slideRealIndex:e,direction:n,setTranslate:s,activeSlideIndex:i,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach(N=>{!N.destroyed&&N.params.loop&&N.loopFix({...I,slideTo:N.params.slidesPerView===g.slidesPerView?r:!1})}):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...I,slideTo:l.controller.control.params.slidesPerView===g.slidesPerView?r:!1})}l.emit("loopFix")}function A$(){const t=this,{params:e,slidesEl:r}=t;if(!e.loop||t.virtual&&t.params.virtual.enabled)return;t.recalcSlides();const n=[];t.slides.forEach(s=>{const i=typeof s.swiperSlideIndex>"u"?s.getAttribute("data-swiper-slide-index")*1:s.swiperSlideIndex;n[i]=s}),t.slides.forEach(s=>{s.removeAttribute("data-swiper-slide-index")}),n.forEach(s=>{r.append(s)}),t.recalcSlides(),t.slideTo(t.realIndex,0)}var C$={loopCreate:T$,loopFix:x$,loopDestroy:A$};function I$(t){const e=this;if(!e.params.simulateTouch||e.params.watchOverflow&&e.isLocked||e.params.cssMode)return;const r=e.params.touchEventsTarget==="container"?e.el:e.wrapperEl;e.isElement&&(e.__preventObserver__=!0),r.style.cursor="move",r.style.cursor=t?"grabbing":"grab",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1})}function M$(){const t=this;t.params.watchOverflow&&t.isLocked||t.params.cssMode||(t.isElement&&(t.__preventObserver__=!0),t[t.params.touchEventsTarget==="container"?"el":"wrapperEl"].style.cursor="",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1}))}var O$={setGrabCursor:I$,unsetGrabCursor:M$};function R$(t,e){e===void 0&&(e=this);function r(n){if(!n||n===vt()||n===ot())return null;n.assignedSlot&&(n=n.assignedSlot);const s=n.closest(t);return!s&&!n.getRootNode?null:s||r(n.getRootNode().host)}return r(e)}function Zb(t,e,r){const n=ot(),{params:s}=t,i=s.edgeSwipeDetection,o=s.edgeSwipeThreshold;return i&&(r<=o||r>=n.innerWidth-o)?i==="prevent"?(e.preventDefault(),!0):!1:!0}function P$(t){const e=this,r=vt();let n=t;n.originalEvent&&(n=n.originalEvent);const s=e.touchEventsData;if(n.type==="pointerdown"){if(s.pointerId!==null&&s.pointerId!==n.pointerId)return;s.pointerId=n.pointerId}else n.type==="touchstart"&&n.targetTouches.length===1&&(s.touchId=n.targetTouches[0].identifier);if(n.type==="touchstart"){Zb(e,n,n.targetTouches[0].pageX);return}const{params:i,touches:o,enabled:a}=e;if(!a||!i.simulateTouch&&n.pointerType==="mouse"||e.animating&&i.preventInteractionOnTransition)return;!e.animating&&i.cssMode&&i.loop&&e.loopFix();let l=n.target;if(i.touchEventsTarget==="wrapper"&&!FB(l,e.wrapperEl)||"which"in n&&n.which===3||"button"in n&&n.button>0||s.isTouched&&s.isMoved)return;const u=!!i.noSwipingClass&&i.noSwipingClass!=="",c=n.composedPath?n.composedPath():n.path;u&&n.target&&n.target.shadowRoot&&c&&(l=c[0]);const f=i.noSwipingSelector?i.noSwipingSelector:`.${i.noSwipingClass}`,d=!!(n.target&&n.target.shadowRoot);if(i.noSwiping&&(d?R$(f,l):l.closest(f))){e.allowClick=!0;return}if(i.swipeHandler&&!l.closest(i.swipeHandler))return;o.currentX=n.pageX,o.currentY=n.pageY;const g=o.currentX,m=o.currentY;if(!Zb(e,n,g))return;Object.assign(s,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=g,o.startY=m,s.touchStartTime=ar(),e.allowClick=!0,e.updateSize(),e.swipeDirection=void 0,i.threshold>0&&(s.allowThresholdMove=!1);let y=!0;l.matches(s.focusableElements)&&(y=!1,l.nodeName==="SELECT"&&(s.isTouched=!1)),r.activeElement&&r.activeElement.matches(s.focusableElements)&&r.activeElement!==l&&r.activeElement.blur();const _=y&&e.allowTouchMove&&i.touchStartPreventDefault;(i.touchStartForcePreventDefault||_)&&!l.isContentEditable&&n.preventDefault(),i.freeMode&&i.freeMode.enabled&&e.freeMode&&e.animating&&!i.cssMode&&e.freeMode.onTouchStart(),e.emit("touchStart",n)}function k$(t){const e=vt(),r=this,n=r.touchEventsData,{params:s,touches:i,rtlTranslate:o,enabled:a}=r;if(!a||!s.simulateTouch&&t.pointerType==="mouse")return;let l=t;if(l.originalEvent&&(l=l.originalEvent),l.type==="pointermove"&&(n.touchId!==null||l.pointerId!==n.pointerId))return;let u;if(l.type==="touchmove"){if(u=[...l.changedTouches].filter(A=>A.identifier===n.touchId)[0],!u||u.identifier!==n.touchId)return}else u=l;if(!n.isTouched){n.startMoving&&n.isScrolling&&r.emit("touchMoveOpposite",l);return}const c=u.pageX,f=u.pageY;if(l.preventedByNestedSwiper){i.startX=c,i.startY=f;return}if(!r.allowTouchMove){l.target.matches(n.focusableElements)||(r.allowClick=!1),n.isTouched&&(Object.assign(i,{startX:c,startY:f,currentX:c,currentY:f}),n.touchStartTime=ar());return}if(s.touchReleaseOnEdges&&!s.loop){if(r.isVertical()){if(f<i.startY&&r.translate<=r.maxTranslate()||f>i.startY&&r.translate>=r.minTranslate()){n.isTouched=!1,n.isMoved=!1;return}}else if(c<i.startX&&r.translate<=r.maxTranslate()||c>i.startX&&r.translate>=r.minTranslate())return}if(e.activeElement&&l.target===e.activeElement&&l.target.matches(n.focusableElements)){n.isMoved=!0,r.allowClick=!1;return}n.allowTouchCallbacks&&r.emit("touchMove",l),i.previousX=i.currentX,i.previousY=i.currentY,i.currentX=c,i.currentY=f;const d=i.currentX-i.startX,g=i.currentY-i.startY;if(r.params.threshold&&Math.sqrt(d**2+g**2)<r.params.threshold)return;if(typeof n.isScrolling>"u"){let A;r.isHorizontal()&&i.currentY===i.startY||r.isVertical()&&i.currentX===i.startX?n.isScrolling=!1:d*d+g*g>=25&&(A=Math.atan2(Math.abs(g),Math.abs(d))*180/Math.PI,n.isScrolling=r.isHorizontal()?A>s.touchAngle:90-A>s.touchAngle)}if(n.isScrolling&&r.emit("touchMoveOpposite",l),typeof n.startMoving>"u"&&(i.currentX!==i.startX||i.currentY!==i.startY)&&(n.startMoving=!0),n.isScrolling||l.type==="touchmove"&&n.preventTouchMoveFromPointerMove){n.isTouched=!1;return}if(!n.startMoving)return;r.allowClick=!1,!s.cssMode&&l.cancelable&&l.preventDefault(),s.touchMoveStopPropagation&&!s.nested&&l.stopPropagation();let m=r.isHorizontal()?d:g,y=r.isHorizontal()?i.currentX-i.previousX:i.currentY-i.previousY;s.oneWayMovement&&(m=Math.abs(m)*(o?1:-1),y=Math.abs(y)*(o?1:-1)),i.diff=m,m*=s.touchRatio,o&&(m=-m,y=-y);const _=r.touchesDirection;r.swipeDirection=m>0?"prev":"next",r.touchesDirection=y>0?"prev":"next";const S=r.params.loop&&!s.cssMode,E=r.touchesDirection==="next"&&r.allowSlideNext||r.touchesDirection==="prev"&&r.allowSlidePrev;if(!n.isMoved){if(S&&E&&r.loopFix({direction:r.swipeDirection}),n.startTranslate=r.getTranslate(),r.setTransition(0),r.animating){const A=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});r.wrapperEl.dispatchEvent(A)}n.allowMomentumBounce=!1,s.grabCursor&&(r.allowSlideNext===!0||r.allowSlidePrev===!0)&&r.setGrabCursor(!0),r.emit("sliderFirstMove",l)}let v;if(new Date().getTime(),n.isMoved&&n.allowThresholdMove&&_!==r.touchesDirection&&S&&E&&Math.abs(m)>=1){Object.assign(i,{startX:c,startY:f,currentX:c,currentY:f,startTranslate:n.currentTranslate}),n.loopSwapReset=!0,n.startTranslate=n.currentTranslate;return}r.emit("sliderMove",l),n.isMoved=!0,n.currentTranslate=m+n.startTranslate;let x=!0,M=s.resistanceRatio;if(s.touchReleaseOnEdges&&(M=0),m>0?(S&&E&&!v&&n.allowThresholdMove&&n.currentTranslate>(s.centeredSlides?r.minTranslate()-r.slidesSizesGrid[r.activeIndex+1]-(s.slidesPerView!=="auto"&&r.slides.length-s.slidesPerView>=2?r.slidesSizesGrid[r.activeIndex+1]+r.params.spaceBetween:0)-r.params.spaceBetween:r.minTranslate())&&r.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),n.currentTranslate>r.minTranslate()&&(x=!1,s.resistance&&(n.currentTranslate=r.minTranslate()-1+(-r.minTranslate()+n.startTranslate+m)**M))):m<0&&(S&&E&&!v&&n.allowThresholdMove&&n.currentTranslate<(s.centeredSlides?r.maxTranslate()+r.slidesSizesGrid[r.slidesSizesGrid.length-1]+r.params.spaceBetween+(s.slidesPerView!=="auto"&&r.slides.length-s.slidesPerView>=2?r.slidesSizesGrid[r.slidesSizesGrid.length-1]+r.params.spaceBetween:0):r.maxTranslate())&&r.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:r.slides.length-(s.slidesPerView==="auto"?r.slidesPerViewDynamic():Math.ceil(parseFloat(s.slidesPerView,10)))}),n.currentTranslate<r.maxTranslate()&&(x=!1,s.resistance&&(n.currentTranslate=r.maxTranslate()+1-(r.maxTranslate()-n.startTranslate-m)**M))),x&&(l.preventedByNestedSwiper=!0),!r.allowSlideNext&&r.swipeDirection==="next"&&n.currentTranslate<n.startTranslate&&(n.currentTranslate=n.startTranslate),!r.allowSlidePrev&&r.swipeDirection==="prev"&&n.currentTranslate>n.startTranslate&&(n.currentTranslate=n.startTranslate),!r.allowSlidePrev&&!r.allowSlideNext&&(n.currentTranslate=n.startTranslate),s.threshold>0)if(Math.abs(m)>s.threshold||n.allowThresholdMove){if(!n.allowThresholdMove){n.allowThresholdMove=!0,i.startX=i.currentX,i.startY=i.currentY,n.currentTranslate=n.startTranslate,i.diff=r.isHorizontal()?i.currentX-i.startX:i.currentY-i.startY;return}}else{n.currentTranslate=n.startTranslate;return}!s.followFinger||s.cssMode||((s.freeMode&&s.freeMode.enabled&&r.freeMode||s.watchSlidesProgress)&&(r.updateActiveIndex(),r.updateSlidesClasses()),s.freeMode&&s.freeMode.enabled&&r.freeMode&&r.freeMode.onTouchMove(),r.updateProgress(n.currentTranslate),r.setTranslate(n.currentTranslate))}function L$(t){const e=this,r=e.touchEventsData;let n=t;n.originalEvent&&(n=n.originalEvent);let s;if(n.type==="touchend"||n.type==="touchcancel"){if(s=[...n.changedTouches].filter(M=>M.identifier===r.touchId)[0],!s||s.identifier!==r.touchId)return}else{if(r.touchId!==null||n.pointerId!==r.pointerId)return;s=n}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(n.type)&&!(["pointercancel","contextmenu"].includes(n.type)&&(e.browser.isSafari||e.browser.isWebView)))return;r.pointerId=null,r.touchId=null;const{params:o,touches:a,rtlTranslate:l,slidesGrid:u,enabled:c}=e;if(!c||!o.simulateTouch&&n.pointerType==="mouse")return;if(r.allowTouchCallbacks&&e.emit("touchEnd",n),r.allowTouchCallbacks=!1,!r.isTouched){r.isMoved&&o.grabCursor&&e.setGrabCursor(!1),r.isMoved=!1,r.startMoving=!1;return}o.grabCursor&&r.isMoved&&r.isTouched&&(e.allowSlideNext===!0||e.allowSlidePrev===!0)&&e.setGrabCursor(!1);const f=ar(),d=f-r.touchStartTime;if(e.allowClick){const M=n.path||n.composedPath&&n.composedPath();e.updateClickedSlide(M&&M[0]||n.target,M),e.emit("tap click",n),d<300&&f-r.lastClickTime<300&&e.emit("doubleTap doubleClick",n)}if(r.lastClickTime=ar(),Xi(()=>{e.destroyed||(e.allowClick=!0)}),!r.isTouched||!r.isMoved||!e.swipeDirection||a.diff===0&&!r.loopSwapReset||r.currentTranslate===r.startTranslate&&!r.loopSwapReset){r.isTouched=!1,r.isMoved=!1,r.startMoving=!1;return}r.isTouched=!1,r.isMoved=!1,r.startMoving=!1;let g;if(o.followFinger?g=l?e.translate:-e.translate:g=-r.currentTranslate,o.cssMode)return;if(o.freeMode&&o.freeMode.enabled){e.freeMode.onTouchEnd({currentPos:g});return}const m=g>=-e.maxTranslate()&&!e.params.loop;let y=0,_=e.slidesSizesGrid[0];for(let M=0;M<u.length;M+=M<o.slidesPerGroupSkip?1:o.slidesPerGroup){const A=M<o.slidesPerGroupSkip-1?1:o.slidesPerGroup;typeof u[M+A]<"u"?(m||g>=u[M]&&g<u[M+A])&&(y=M,_=u[M+A]-u[M]):(m||g>=u[M])&&(y=M,_=u[u.length-1]-u[u.length-2])}let S=null,E=null;o.rewind&&(e.isBeginning?E=o.virtual&&o.virtual.enabled&&e.virtual?e.virtual.slides.length-1:e.slides.length-1:e.isEnd&&(S=0));const v=(g-u[y])/_,x=y<o.slidesPerGroupSkip-1?1:o.slidesPerGroup;if(d>o.longSwipesMs){if(!o.longSwipes){e.slideTo(e.activeIndex);return}e.swipeDirection==="next"&&(v>=o.longSwipesRatio?e.slideTo(o.rewind&&e.isEnd?S:y+x):e.slideTo(y)),e.swipeDirection==="prev"&&(v>1-o.longSwipesRatio?e.slideTo(y+x):E!==null&&v<0&&Math.abs(v)>o.longSwipesRatio?e.slideTo(E):e.slideTo(y))}else{if(!o.shortSwipes){e.slideTo(e.activeIndex);return}e.navigation&&(n.target===e.navigation.nextEl||n.target===e.navigation.prevEl)?n.target===e.navigation.nextEl?e.slideTo(y+x):e.slideTo(y):(e.swipeDirection==="next"&&e.slideTo(S!==null?S:y+x),e.swipeDirection==="prev"&&e.slideTo(E!==null?E:y))}}function ey(){const t=this,{params:e,el:r}=t;if(r&&r.offsetWidth===0)return;e.breakpoints&&t.setBreakpoint();const{allowSlideNext:n,allowSlidePrev:s,snapGrid:i}=t,o=t.virtual&&t.params.virtual.enabled;t.allowSlideNext=!0,t.allowSlidePrev=!0,t.updateSize(),t.updateSlides(),t.updateSlidesClasses();const a=o&&e.loop;(e.slidesPerView==="auto"||e.slidesPerView>1)&&t.isEnd&&!t.isBeginning&&!t.params.centeredSlides&&!a?t.slideTo(t.slides.length-1,0,!1,!0):t.params.loop&&!o?t.slideToLoop(t.realIndex,0,!1,!0):t.slideTo(t.activeIndex,0,!1,!0),t.autoplay&&t.autoplay.running&&t.autoplay.paused&&(clearTimeout(t.autoplay.resizeTimeout),t.autoplay.resizeTimeout=setTimeout(()=>{t.autoplay&&t.autoplay.running&&t.autoplay.paused&&t.autoplay.resume()},500)),t.allowSlidePrev=s,t.allowSlideNext=n,t.params.watchOverflow&&i!==t.snapGrid&&t.checkOverflow()}function N$(t){const e=this;e.enabled&&(e.allowClick||(e.params.preventClicks&&t.preventDefault(),e.params.preventClicksPropagation&&e.animating&&(t.stopPropagation(),t.stopImmediatePropagation())))}function D$(){const t=this,{wrapperEl:e,rtlTranslate:r,enabled:n}=t;if(!n)return;t.previousTranslate=t.translate,t.isHorizontal()?t.translate=-e.scrollLeft:t.translate=-e.scrollTop,t.translate===0&&(t.translate=0),t.updateActiveIndex(),t.updateSlidesClasses();let s;const i=t.maxTranslate()-t.minTranslate();i===0?s=0:s=(t.translate-t.minTranslate())/i,s!==t.progress&&t.updateProgress(r?-t.translate:t.translate),t.emit("setTranslate",t.translate,!1)}function B$(t){const e=this;Rl(e,t.target),!(e.params.cssMode||e.params.slidesPerView!=="auto"&&!e.params.autoHeight)&&e.update()}function $$(){const t=this;t.documentTouchHandlerProceeded||(t.documentTouchHandlerProceeded=!0,t.params.touchReleaseOnEdges&&(t.el.style.touchAction="auto"))}const Y1=(t,e)=>{const r=vt(),{params:n,el:s,wrapperEl:i,device:o}=t,a=!!n.nested,l=e==="on"?"addEventListener":"removeEventListener",u=e;!s||typeof s=="string"||(r[l]("touchstart",t.onDocumentTouchStart,{passive:!1,capture:a}),s[l]("touchstart",t.onTouchStart,{passive:!1}),s[l]("pointerdown",t.onTouchStart,{passive:!1}),r[l]("touchmove",t.onTouchMove,{passive:!1,capture:a}),r[l]("pointermove",t.onTouchMove,{passive:!1,capture:a}),r[l]("touchend",t.onTouchEnd,{passive:!0}),r[l]("pointerup",t.onTouchEnd,{passive:!0}),r[l]("pointercancel",t.onTouchEnd,{passive:!0}),r[l]("touchcancel",t.onTouchEnd,{passive:!0}),r[l]("pointerout",t.onTouchEnd,{passive:!0}),r[l]("pointerleave",t.onTouchEnd,{passive:!0}),r[l]("contextmenu",t.onTouchEnd,{passive:!0}),(n.preventClicks||n.preventClicksPropagation)&&s[l]("click",t.onClick,!0),n.cssMode&&i[l]("scroll",t.onScroll),n.updateOnWindowResize?t[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",ey,!0):t[u]("observerUpdate",ey,!0),s[l]("load",t.onLoad,{capture:!0}))};function F$(){const t=this,{params:e}=t;t.onTouchStart=P$.bind(t),t.onTouchMove=k$.bind(t),t.onTouchEnd=L$.bind(t),t.onDocumentTouchStart=$$.bind(t),e.cssMode&&(t.onScroll=D$.bind(t)),t.onClick=N$.bind(t),t.onLoad=B$.bind(t),Y1(t,"on")}function U$(){Y1(this,"off")}var j$={attachEvents:F$,detachEvents:U$};const ty=(t,e)=>t.grid&&e.grid&&e.grid.rows>1;function W$(){const t=this,{realIndex:e,initialized:r,params:n,el:s}=t,i=n.breakpoints;if(!i||i&&Object.keys(i).length===0)return;const o=t.getBreakpoint(i,t.params.breakpointsBase,t.el);if(!o||t.currentBreakpoint===o)return;const l=(o in i?i[o]:void 0)||t.originalParams,u=ty(t,n),c=ty(t,l),f=t.params.grabCursor,d=l.grabCursor,g=n.enabled;u&&!c?(s.classList.remove(`${n.containerModifierClass}grid`,`${n.containerModifierClass}grid-column`),t.emitContainerClasses()):!u&&c&&(s.classList.add(`${n.containerModifierClass}grid`),(l.grid.fill&&l.grid.fill==="column"||!l.grid.fill&&n.grid.fill==="column")&&s.classList.add(`${n.containerModifierClass}grid-column`),t.emitContainerClasses()),f&&!d?t.unsetGrabCursor():!f&&d&&t.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(v=>{if(typeof l[v]>"u")return;const x=n[v]&&n[v].enabled,M=l[v]&&l[v].enabled;x&&!M&&t[v].disable(),!x&&M&&t[v].enable()});const m=l.direction&&l.direction!==n.direction,y=n.loop&&(l.slidesPerView!==n.slidesPerView||m),_=n.loop;m&&r&&t.changeDirection(),Kt(t.params,l);const S=t.params.enabled,E=t.params.loop;Object.assign(t,{allowTouchMove:t.params.allowTouchMove,allowSlideNext:t.params.allowSlideNext,allowSlidePrev:t.params.allowSlidePrev}),g&&!S?t.disable():!g&&S&&t.enable(),t.currentBreakpoint=o,t.emit("_beforeBreakpoint",l),r&&(y?(t.loopDestroy(),t.loopCreate(e),t.updateSlides()):!_&&E?(t.loopCreate(e),t.updateSlides()):_&&!E&&t.loopDestroy()),t.emit("breakpoint",l)}function z$(t,e,r){if(e===void 0&&(e="window"),!t||e==="container"&&!r)return;let n=!1;const s=ot(),i=e==="window"?s.innerHeight:r.clientHeight,o=Object.keys(t).map(a=>{if(typeof a=="string"&&a.indexOf("@")===0){const l=parseFloat(a.substr(1));return{value:i*l,point:a}}return{value:a,point:a}});o.sort((a,l)=>parseInt(a.value,10)-parseInt(l.value,10));for(let a=0;a<o.length;a+=1){const{point:l,value:u}=o[a];e==="window"?s.matchMedia(`(min-width: ${u}px)`).matches&&(n=l):u<=r.clientWidth&&(n=l)}return n||"max"}var H$={setBreakpoint:W$,getBreakpoint:z$};function V$(t,e){const r=[];return t.forEach(n=>{typeof n=="object"?Object.keys(n).forEach(s=>{n[s]&&r.push(e+s)}):typeof n=="string"&&r.push(e+n)}),r}function q$(){const t=this,{classNames:e,params:r,rtl:n,el:s,device:i}=t,o=V$(["initialized",r.direction,{"free-mode":t.params.freeMode&&r.freeMode.enabled},{autoheight:r.autoHeight},{rtl:n},{grid:r.grid&&r.grid.rows>1},{"grid-column":r.grid&&r.grid.rows>1&&r.grid.fill==="column"},{android:i.android},{ios:i.ios},{"css-mode":r.cssMode},{centered:r.cssMode&&r.centeredSlides},{"watch-progress":r.watchSlidesProgress}],r.containerModifierClass);e.push(...o),s.classList.add(...e),t.emitContainerClasses()}function Y$(){const t=this,{el:e,classNames:r}=t;!e||typeof e=="string"||(e.classList.remove(...r),t.emitContainerClasses())}var G$={addClasses:q$,removeClasses:Y$};function K$(){const t=this,{isLocked:e,params:r}=t,{slidesOffsetBefore:n}=r;if(n){const s=t.slides.length-1,i=t.slidesGrid[s]+t.slidesSizesGrid[s]+n*2;t.isLocked=t.size>i}else t.isLocked=t.snapGrid.length===1;r.allowSlideNext===!0&&(t.allowSlideNext=!t.isLocked),r.allowSlidePrev===!0&&(t.allowSlidePrev=!t.isLocked),e&&e!==t.isLocked&&(t.isEnd=!1),e!==t.isLocked&&t.emit(t.isLocked?"lock":"unlock")}var X$={checkOverflow:K$},Qh={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Q$(t,e){return function(n){n===void 0&&(n={});const s=Object.keys(n)[0],i=n[s];if(typeof i!="object"||i===null){Kt(e,n);return}if(t[s]===!0&&(t[s]={enabled:!0}),s==="navigation"&&t[s]&&t[s].enabled&&!t[s].prevEl&&!t[s].nextEl&&(t[s].auto=!0),["pagination","scrollbar"].indexOf(s)>=0&&t[s]&&t[s].enabled&&!t[s].el&&(t[s].auto=!0),!(s in t&&"enabled"in i)){Kt(e,n);return}typeof t[s]=="object"&&!("enabled"in t[s])&&(t[s].enabled=!0),t[s]||(t[s]={enabled:!1}),Kt(e,n)}}const wf={eventsEmitter:GB,update:s$,translate:f$,transition:g$,slide:S$,loop:C$,grabCursor:O$,events:j$,breakpoints:H$,checkOverflow:X$,classes:G$},vf={};class Gt{constructor(){let e,r;for(var n=arguments.length,s=new Array(n),i=0;i<n;i++)s[i]=arguments[i];s.length===1&&s[0].constructor&&Object.prototype.toString.call(s[0]).slice(8,-1)==="Object"?r=s[0]:[e,r]=s,r||(r={}),r=Kt({},r),e&&!r.el&&(r.el=e);const o=vt();if(r.el&&typeof r.el=="string"&&o.querySelectorAll(r.el).length>1){const c=[];return o.querySelectorAll(r.el).forEach(f=>{const d=Kt({},r,{el:f});c.push(new Gt(d))}),c}const a=this;a.__swiper__=!0,a.support=H1(),a.device=V1({userAgent:r.userAgent}),a.browser=VB(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],r.modules&&Array.isArray(r.modules)&&a.modules.push(...r.modules);const l={};a.modules.forEach(c=>{c({params:r,swiper:a,extendParams:Q$(r,l),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})});const u=Kt({},Qh,l);return a.params=Kt({},u,vf,r),a.originalParams=Kt({},a.params),a.passedParams=Kt({},r),a.params&&a.params.on&&Object.keys(a.params.on).forEach(c=>{a.on(c,a.params.on[c])}),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal(){return a.params.direction==="horizontal"},isVertical(){return a.params.direction==="vertical"},activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:r,params:n}=this,s=wt(r,`.${n.slideClass}, swiper-slide`),i=ua(s[0]);return ua(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter(r=>r.getAttribute("data-swiper-slide-index")*1===e)[0])}recalcSlides(){const e=this,{slidesEl:r,params:n}=e;e.slides=wt(r,`.${n.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,r){const n=this;e=Math.min(Math.max(e,0),1);const s=n.minTranslate(),o=(n.maxTranslate()-s)*e+s;n.translateTo(o,typeof r>"u"?0:r),n.updateActiveIndex(),n.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const r=e.el.className.split(" ").filter(n=>n.indexOf("swiper")===0||n.indexOf(e.params.containerModifierClass)===0);e.emit("_containerClasses",r.join(" "))}getSlideClasses(e){const r=this;return r.destroyed?"":e.className.split(" ").filter(n=>n.indexOf("swiper-slide")===0||n.indexOf(r.params.slideClass)===0).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const r=[];e.slides.forEach(n=>{const s=e.getSlideClasses(n);r.push({slideEl:n,classNames:s}),e.emit("_slideClass",n,s)}),e.emit("_slideClasses",r)}slidesPerViewDynamic(e,r){e===void 0&&(e="current"),r===void 0&&(r=!1);const n=this,{params:s,slides:i,slidesGrid:o,slidesSizesGrid:a,size:l,activeIndex:u}=n;let c=1;if(typeof s.slidesPerView=="number")return s.slidesPerView;if(s.centeredSlides){let f=i[u]?Math.ceil(i[u].swiperSlideSize):0,d;for(let g=u+1;g<i.length;g+=1)i[g]&&!d&&(f+=Math.ceil(i[g].swiperSlideSize),c+=1,f>l&&(d=!0));for(let g=u-1;g>=0;g-=1)i[g]&&!d&&(f+=i[g].swiperSlideSize,c+=1,f>l&&(d=!0))}else if(e==="current")for(let f=u+1;f<i.length;f+=1)(r?o[f]+a[f]-o[u]<l:o[f]-o[u]<l)&&(c+=1);else for(let f=u-1;f>=0;f-=1)o[u]-o[f]<l&&(c+=1);return c}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:r,params:n}=e;n.breakpoints&&e.setBreakpoint(),[...e.el.querySelectorAll('[loading="lazy"]')].forEach(o=>{o.complete&&Rl(e,o)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses();function s(){const o=e.rtlTranslate?e.translate*-1:e.translate,a=Math.min(Math.max(o,e.maxTranslate()),e.minTranslate());e.setTranslate(a),e.updateActiveIndex(),e.updateSlidesClasses()}let i;if(n.freeMode&&n.freeMode.enabled&&!n.cssMode)s(),n.autoHeight&&e.updateAutoHeight();else{if((n.slidesPerView==="auto"||n.slidesPerView>1)&&e.isEnd&&!n.centeredSlides){const o=e.virtual&&n.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(o.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||s()}n.watchOverflow&&r!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,r){r===void 0&&(r=!0);const n=this,s=n.params.direction;return e||(e=s==="horizontal"?"vertical":"horizontal"),e===s||e!=="horizontal"&&e!=="vertical"||(n.el.classList.remove(`${n.params.containerModifierClass}${s}`),n.el.classList.add(`${n.params.containerModifierClass}${e}`),n.emitContainerClasses(),n.params.direction=e,n.slides.forEach(i=>{e==="vertical"?i.style.width="":i.style.height=""}),n.emit("changeDirection"),r&&n.update()),n}changeLanguageDirection(e){const r=this;r.rtl&&e==="rtl"||!r.rtl&&e==="ltr"||(r.rtl=e==="rtl",r.rtlTranslate=r.params.direction==="horizontal"&&r.rtl,r.rtl?(r.el.classList.add(`${r.params.containerModifierClass}rtl`),r.el.dir="rtl"):(r.el.classList.remove(`${r.params.containerModifierClass}rtl`),r.el.dir="ltr"),r.update())}mount(e){const r=this;if(r.mounted)return!0;let n=e||r.params.el;if(typeof n=="string"&&(n=document.querySelector(n)),!n)return!1;n.swiper=r,n.parentNode&&n.parentNode.host&&n.parentNode.host.nodeName===r.params.swiperElementNodeName.toUpperCase()&&(r.isElement=!0);const s=()=>`.${(r.params.wrapperClass||"").trim().split(" ").join(".")}`;let o=n&&n.shadowRoot&&n.shadowRoot.querySelector?n.shadowRoot.querySelector(s()):wt(n,s())[0];return!o&&r.params.createElements&&(o=Jt("div",r.params.wrapperClass),n.append(o),wt(n,`.${r.params.slideClass}`).forEach(a=>{o.append(a)})),Object.assign(r,{el:n,wrapperEl:o,slidesEl:r.isElement&&!n.parentNode.host.slideSlots?n.parentNode.host:o,hostEl:r.isElement?n.parentNode.host:n,mounted:!0,rtl:n.dir.toLowerCase()==="rtl"||Gn(n,"direction")==="rtl",rtlTranslate:r.params.direction==="horizontal"&&(n.dir.toLowerCase()==="rtl"||Gn(n,"direction")==="rtl"),wrongRTL:Gn(o,"display")==="-webkit-box"}),!0}init(e){const r=this;if(r.initialized||r.mount(e)===!1)return r;r.emit("beforeInit"),r.params.breakpoints&&r.setBreakpoint(),r.addClasses(),r.updateSize(),r.updateSlides(),r.params.watchOverflow&&r.checkOverflow(),r.params.grabCursor&&r.enabled&&r.setGrabCursor(),r.params.loop&&r.virtual&&r.params.virtual.enabled?r.slideTo(r.params.initialSlide+r.virtual.slidesBefore,0,r.params.runCallbacksOnInit,!1,!0):r.slideTo(r.params.initialSlide,0,r.params.runCallbacksOnInit,!1,!0),r.params.loop&&r.loopCreate(),r.attachEvents();const s=[...r.el.querySelectorAll('[loading="lazy"]')];return r.isElement&&s.push(...r.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach(i=>{i.complete?Rl(r,i):i.addEventListener("load",o=>{Rl(r,o.target)})}),Xh(r),r.initialized=!0,Xh(r),r.emit("init"),r.emit("afterInit"),r}destroy(e,r){e===void 0&&(e=!0),r===void 0&&(r=!0);const n=this,{params:s,el:i,wrapperEl:o,slides:a}=n;return typeof n.params>"u"||n.destroyed||(n.emit("beforeDestroy"),n.initialized=!1,n.detachEvents(),s.loop&&n.loopDestroy(),r&&(n.removeClasses(),i&&typeof i!="string"&&i.removeAttribute("style"),o&&o.removeAttribute("style"),a&&a.length&&a.forEach(l=>{l.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass,s.slideActiveClass,s.slideNextClass,s.slidePrevClass),l.removeAttribute("style"),l.removeAttribute("data-swiper-slide-index")})),n.emit("destroy"),Object.keys(n.eventsListeners).forEach(l=>{n.off(l)}),e!==!1&&(n.el&&typeof n.el!="string"&&(n.el.swiper=null),DB(n)),n.destroyed=!0),null}static extendDefaults(e){Kt(vf,e)}static get extendedDefaults(){return vf}static get defaults(){return Qh}static installModule(e){Gt.prototype.__modules__||(Gt.prototype.__modules__=[]);const r=Gt.prototype.__modules__;typeof e=="function"&&r.indexOf(e)<0&&r.push(e)}static use(e){return Array.isArray(e)?(e.forEach(r=>Gt.installModule(r)),Gt):(Gt.installModule(e),Gt)}}Object.keys(wf).forEach(t=>{Object.keys(wf[t]).forEach(e=>{Gt.prototype[e]=wf[t][e]})});Gt.use([qB,YB]);var Lt="top",er="bottom",tr="right",Nt="left",tc="auto",uo=[Lt,er,tr,Nt],Qi="start",Gs="end",G1="clippingParents",Sg="viewport",Ss="popper",K1="reference",Jh=uo.reduce(function(t,e){return t.concat([e+"-"+Qi,e+"-"+Gs])},[]),Tg=[].concat(uo,[tc]).reduce(function(t,e){return t.concat([e,e+"-"+Qi,e+"-"+Gs])},[]),X1="beforeRead",Q1="read",J1="afterRead",Z1="beforeMain",eS="main",tS="afterMain",rS="beforeWrite",nS="write",iS="afterWrite",sS=[X1,Q1,J1,Z1,eS,tS,rS,nS,iS];function qr(t){return t?(t.nodeName||"").toLowerCase():null}function rr(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ji(t){var e=rr(t).Element;return t instanceof e||t instanceof Element}function cr(t){var e=rr(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function xg(t){if(typeof ShadowRoot>"u")return!1;var e=rr(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function J$(t){var e=t.state;Object.keys(e.elements).forEach(function(r){var n=e.styles[r]||{},s=e.attributes[r]||{},i=e.elements[r];!cr(i)||!qr(i)||(Object.assign(i.style,n),Object.keys(s).forEach(function(o){var a=s[o];a===!1?i.removeAttribute(o):i.setAttribute(o,a===!0?"":a)}))})}function Z$(t){var e=t.state,r={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,r.popper),e.styles=r,e.elements.arrow&&Object.assign(e.elements.arrow.style,r.arrow),function(){Object.keys(e.elements).forEach(function(n){var s=e.elements[n],i=e.attributes[n]||{},o=Object.keys(e.styles.hasOwnProperty(n)?e.styles[n]:r[n]),a=o.reduce(function(l,u){return l[u]="",l},{});!cr(s)||!qr(s)||(Object.assign(s.style,a),Object.keys(i).forEach(function(l){s.removeAttribute(l)}))})}}const Ag={name:"applyStyles",enabled:!0,phase:"write",fn:J$,effect:Z$,requires:["computeStyles"]};function Wr(t){return t.split("-")[0]}var Hi=Math.max,fu=Math.min,Ks=Math.round;function Zh(){var t=navigator.userAgentData;return t!=null&&t.brands&&Array.isArray(t.brands)?t.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function oS(){return!/^((?!chrome|android).)*safari/i.test(Zh())}function Xs(t,e,r){e===void 0&&(e=!1),r===void 0&&(r=!1);var n=t.getBoundingClientRect(),s=1,i=1;e&&cr(t)&&(s=t.offsetWidth>0&&Ks(n.width)/t.offsetWidth||1,i=t.offsetHeight>0&&Ks(n.height)/t.offsetHeight||1);var o=Ji(t)?rr(t):window,a=o.visualViewport,l=!oS()&&r,u=(n.left+(l&&a?a.offsetLeft:0))/s,c=(n.top+(l&&a?a.offsetTop:0))/i,f=n.width/s,d=n.height/i;return{width:f,height:d,top:c,right:u+f,bottom:c+d,left:u,x:u,y:c}}function Cg(t){var e=Xs(t),r=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-r)<=1&&(r=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:r,height:n}}function aS(t,e){var r=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(r&&xg(r)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function An(t){return rr(t).getComputedStyle(t)}function eF(t){return["table","td","th"].indexOf(qr(t))>=0}function oi(t){return((Ji(t)?t.ownerDocument:t.document)||window.document).documentElement}function rc(t){return qr(t)==="html"?t:t.assignedSlot||t.parentNode||(xg(t)?t.host:null)||oi(t)}function ry(t){return!cr(t)||An(t).position==="fixed"?null:t.offsetParent}function tF(t){var e=/firefox/i.test(Zh()),r=/Trident/i.test(Zh());if(r&&cr(t)){var n=An(t);if(n.position==="fixed")return null}var s=rc(t);for(xg(s)&&(s=s.host);cr(s)&&["html","body"].indexOf(qr(s))<0;){var i=An(s);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||e&&i.willChange==="filter"||e&&i.filter&&i.filter!=="none")return s;s=s.parentNode}return null}function Ea(t){for(var e=rr(t),r=ry(t);r&&eF(r)&&An(r).position==="static";)r=ry(r);return r&&(qr(r)==="html"||qr(r)==="body"&&An(r).position==="static")?e:r||tF(t)||e}function Ig(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Qo(t,e,r){return Hi(t,fu(e,r))}function rF(t,e,r){var n=Qo(t,e,r);return n>r?r:n}function lS(){return{top:0,right:0,bottom:0,left:0}}function uS(t){return Object.assign({},lS(),t)}function cS(t,e){return e.reduce(function(r,n){return r[n]=t,r},{})}var nF=function(e,r){return e=typeof e=="function"?e(Object.assign({},r.rects,{placement:r.placement})):e,uS(typeof e!="number"?e:cS(e,uo))};function iF(t){var e,r=t.state,n=t.name,s=t.options,i=r.elements.arrow,o=r.modifiersData.popperOffsets,a=Wr(r.placement),l=Ig(a),u=[Nt,tr].indexOf(a)>=0,c=u?"height":"width";if(!(!i||!o)){var f=nF(s.padding,r),d=Cg(i),g=l==="y"?Lt:Nt,m=l==="y"?er:tr,y=r.rects.reference[c]+r.rects.reference[l]-o[l]-r.rects.popper[c],_=o[l]-r.rects.reference[l],S=Ea(i),E=S?l==="y"?S.clientHeight||0:S.clientWidth||0:0,v=y/2-_/2,x=f[g],M=E-d[c]-f[m],A=E/2-d[c]/2+v,L=Qo(x,A,M),D=l;r.modifiersData[n]=(e={},e[D]=L,e.centerOffset=L-A,e)}}function sF(t){var e=t.state,r=t.options,n=r.element,s=n===void 0?"[data-popper-arrow]":n;s!=null&&(typeof s=="string"&&(s=e.elements.popper.querySelector(s),!s)||aS(e.elements.popper,s)&&(e.elements.arrow=s))}const fS={name:"arrow",enabled:!0,phase:"main",fn:iF,effect:sF,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qs(t){return t.split("-")[1]}var oF={top:"auto",right:"auto",bottom:"auto",left:"auto"};function aF(t,e){var r=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:Ks(r*s)/s||0,y:Ks(n*s)/s||0}}function ny(t){var e,r=t.popper,n=t.popperRect,s=t.placement,i=t.variation,o=t.offsets,a=t.position,l=t.gpuAcceleration,u=t.adaptive,c=t.roundOffsets,f=t.isFixed,d=o.x,g=d===void 0?0:d,m=o.y,y=m===void 0?0:m,_=typeof c=="function"?c({x:g,y}):{x:g,y};g=_.x,y=_.y;var S=o.hasOwnProperty("x"),E=o.hasOwnProperty("y"),v=Nt,x=Lt,M=window;if(u){var A=Ea(r),L="clientHeight",D="clientWidth";if(A===rr(r)&&(A=oi(r),An(A).position!=="static"&&a==="absolute"&&(L="scrollHeight",D="scrollWidth")),A=A,s===Lt||(s===Nt||s===tr)&&i===Gs){x=er;var B=f&&A===M&&M.visualViewport?M.visualViewport.height:A[L];y-=B-n.height,y*=l?1:-1}if(s===Nt||(s===Lt||s===er)&&i===Gs){v=tr;var q=f&&A===M&&M.visualViewport?M.visualViewport.width:A[D];g-=q-n.width,g*=l?1:-1}}var Y=Object.assign({position:a},u&&oF),R=c===!0?aF({x:g,y},rr(r)):{x:g,y};if(g=R.x,y=R.y,l){var I;return Object.assign({},Y,(I={},I[x]=E?"0":"",I[v]=S?"0":"",I.transform=(M.devicePixelRatio||1)<=1?"translate("+g+"px, "+y+"px)":"translate3d("+g+"px, "+y+"px, 0)",I))}return Object.assign({},Y,(e={},e[x]=E?y+"px":"",e[v]=S?g+"px":"",e.transform="",e))}function lF(t){var e=t.state,r=t.options,n=r.gpuAcceleration,s=n===void 0?!0:n,i=r.adaptive,o=i===void 0?!0:i,a=r.roundOffsets,l=a===void 0?!0:a,u={placement:Wr(e.placement),variation:Qs(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,ny(Object.assign({},u,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,ny(Object.assign({},u,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const Mg={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:lF,data:{}};var Ja={passive:!0};function uF(t){var e=t.state,r=t.instance,n=t.options,s=n.scroll,i=s===void 0?!0:s,o=n.resize,a=o===void 0?!0:o,l=rr(e.elements.popper),u=[].concat(e.scrollParents.reference,e.scrollParents.popper);return i&&u.forEach(function(c){c.addEventListener("scroll",r.update,Ja)}),a&&l.addEventListener("resize",r.update,Ja),function(){i&&u.forEach(function(c){c.removeEventListener("scroll",r.update,Ja)}),a&&l.removeEventListener("resize",r.update,Ja)}}const Og={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:uF,data:{}};var cF={left:"right",right:"left",bottom:"top",top:"bottom"};function Pl(t){return t.replace(/left|right|bottom|top/g,function(e){return cF[e]})}var fF={start:"end",end:"start"};function iy(t){return t.replace(/start|end/g,function(e){return fF[e]})}function Rg(t){var e=rr(t),r=e.pageXOffset,n=e.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Pg(t){return Xs(oi(t)).left+Rg(t).scrollLeft}function dF(t,e){var r=rr(t),n=oi(t),s=r.visualViewport,i=n.clientWidth,o=n.clientHeight,a=0,l=0;if(s){i=s.width,o=s.height;var u=oS();(u||!u&&e==="fixed")&&(a=s.offsetLeft,l=s.offsetTop)}return{width:i,height:o,x:a+Pg(t),y:l}}function hF(t){var e,r=oi(t),n=Rg(t),s=(e=t.ownerDocument)==null?void 0:e.body,i=Hi(r.scrollWidth,r.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),o=Hi(r.scrollHeight,r.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Pg(t),l=-n.scrollTop;return An(s||r).direction==="rtl"&&(a+=Hi(r.clientWidth,s?s.clientWidth:0)-i),{width:i,height:o,x:a,y:l}}function kg(t){var e=An(t),r=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(r+s+n)}function dS(t){return["html","body","#document"].indexOf(qr(t))>=0?t.ownerDocument.body:cr(t)&&kg(t)?t:dS(rc(t))}function Jo(t,e){var r;e===void 0&&(e=[]);var n=dS(t),s=n===((r=t.ownerDocument)==null?void 0:r.body),i=rr(n),o=s?[i].concat(i.visualViewport||[],kg(n)?n:[]):n,a=e.concat(o);return s?a:a.concat(Jo(rc(o)))}function ep(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function pF(t,e){var r=Xs(t,!1,e==="fixed");return r.top=r.top+t.clientTop,r.left=r.left+t.clientLeft,r.bottom=r.top+t.clientHeight,r.right=r.left+t.clientWidth,r.width=t.clientWidth,r.height=t.clientHeight,r.x=r.left,r.y=r.top,r}function sy(t,e,r){return e===Sg?ep(dF(t,r)):Ji(e)?pF(e,r):ep(hF(oi(t)))}function gF(t){var e=Jo(rc(t)),r=["absolute","fixed"].indexOf(An(t).position)>=0,n=r&&cr(t)?Ea(t):t;return Ji(n)?e.filter(function(s){return Ji(s)&&aS(s,n)&&qr(s)!=="body"}):[]}function mF(t,e,r,n){var s=e==="clippingParents"?gF(t):[].concat(e),i=[].concat(s,[r]),o=i[0],a=i.reduce(function(l,u){var c=sy(t,u,n);return l.top=Hi(c.top,l.top),l.right=fu(c.right,l.right),l.bottom=fu(c.bottom,l.bottom),l.left=Hi(c.left,l.left),l},sy(t,o,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function hS(t){var e=t.reference,r=t.element,n=t.placement,s=n?Wr(n):null,i=n?Qs(n):null,o=e.x+e.width/2-r.width/2,a=e.y+e.height/2-r.height/2,l;switch(s){case Lt:l={x:o,y:e.y-r.height};break;case er:l={x:o,y:e.y+e.height};break;case tr:l={x:e.x+e.width,y:a};break;case Nt:l={x:e.x-r.width,y:a};break;default:l={x:e.x,y:e.y}}var u=s?Ig(s):null;if(u!=null){var c=u==="y"?"height":"width";switch(i){case Qi:l[u]=l[u]-(e[c]/2-r[c]/2);break;case Gs:l[u]=l[u]+(e[c]/2-r[c]/2);break}}return l}function Js(t,e){e===void 0&&(e={});var r=e,n=r.placement,s=n===void 0?t.placement:n,i=r.strategy,o=i===void 0?t.strategy:i,a=r.boundary,l=a===void 0?G1:a,u=r.rootBoundary,c=u===void 0?Sg:u,f=r.elementContext,d=f===void 0?Ss:f,g=r.altBoundary,m=g===void 0?!1:g,y=r.padding,_=y===void 0?0:y,S=uS(typeof _!="number"?_:cS(_,uo)),E=d===Ss?K1:Ss,v=t.rects.popper,x=t.elements[m?E:d],M=mF(Ji(x)?x:x.contextElement||oi(t.elements.popper),l,c,o),A=Xs(t.elements.reference),L=hS({reference:A,element:v,strategy:"absolute",placement:s}),D=ep(Object.assign({},v,L)),B=d===Ss?D:A,q={top:M.top-B.top+S.top,bottom:B.bottom-M.bottom+S.bottom,left:M.left-B.left+S.left,right:B.right-M.right+S.right},Y=t.modifiersData.offset;if(d===Ss&&Y){var R=Y[s];Object.keys(q).forEach(function(I){var N=[tr,er].indexOf(I)>=0?1:-1,W=[Lt,er].indexOf(I)>=0?"y":"x";q[I]+=R[W]*N})}return q}function bF(t,e){e===void 0&&(e={});var r=e,n=r.placement,s=r.boundary,i=r.rootBoundary,o=r.padding,a=r.flipVariations,l=r.allowedAutoPlacements,u=l===void 0?Tg:l,c=Qs(n),f=c?a?Jh:Jh.filter(function(m){return Qs(m)===c}):uo,d=f.filter(function(m){return u.indexOf(m)>=0});d.length===0&&(d=f);var g=d.reduce(function(m,y){return m[y]=Js(t,{placement:y,boundary:s,rootBoundary:i,padding:o})[Wr(y)],m},{});return Object.keys(g).sort(function(m,y){return g[m]-g[y]})}function yF(t){if(Wr(t)===tc)return[];var e=Pl(t);return[iy(t),e,iy(e)]}function wF(t){var e=t.state,r=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=r.mainAxis,i=s===void 0?!0:s,o=r.altAxis,a=o===void 0?!0:o,l=r.fallbackPlacements,u=r.padding,c=r.boundary,f=r.rootBoundary,d=r.altBoundary,g=r.flipVariations,m=g===void 0?!0:g,y=r.allowedAutoPlacements,_=e.options.placement,S=Wr(_),E=S===_,v=l||(E||!m?[Pl(_)]:yF(_)),x=[_].concat(v).reduce(function(de,ge){return de.concat(Wr(ge)===tc?bF(e,{placement:ge,boundary:c,rootBoundary:f,padding:u,flipVariations:m,allowedAutoPlacements:y}):ge)},[]),M=e.rects.reference,A=e.rects.popper,L=new Map,D=!0,B=x[0],q=0;q<x.length;q++){var Y=x[q],R=Wr(Y),I=Qs(Y)===Qi,N=[Lt,er].indexOf(R)>=0,W=N?"width":"height",G=Js(e,{placement:Y,boundary:c,rootBoundary:f,altBoundary:d,padding:u}),H=N?I?tr:Nt:I?er:Lt;M[W]>A[W]&&(H=Pl(H));var $=Pl(H),ne=[];if(i&&ne.push(G[R]<=0),a&&ne.push(G[H]<=0,G[$]<=0),ne.every(function(de){return de})){B=Y,D=!1;break}L.set(Y,ne)}if(D)for(var ue=m?3:1,re=function(ge){var me=x.find(function(X){var K=L.get(X);if(K)return K.slice(0,ge).every(function(ie){return ie})});if(me)return B=me,"break"},k=ue;k>0;k--){var Q=re(k);if(Q==="break")break}e.placement!==B&&(e.modifiersData[n]._skip=!0,e.placement=B,e.reset=!0)}}const pS={name:"flip",enabled:!0,phase:"main",fn:wF,requiresIfExists:["offset"],data:{_skip:!1}};function oy(t,e,r){return r===void 0&&(r={x:0,y:0}),{top:t.top-e.height-r.y,right:t.right-e.width+r.x,bottom:t.bottom-e.height+r.y,left:t.left-e.width-r.x}}function ay(t){return[Lt,tr,er,Nt].some(function(e){return t[e]>=0})}function vF(t){var e=t.state,r=t.name,n=e.rects.reference,s=e.rects.popper,i=e.modifiersData.preventOverflow,o=Js(e,{elementContext:"reference"}),a=Js(e,{altBoundary:!0}),l=oy(o,n),u=oy(a,s,i),c=ay(l),f=ay(u);e.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":f})}const gS={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:vF};function _F(t,e,r){var n=Wr(t),s=[Nt,Lt].indexOf(n)>=0?-1:1,i=typeof r=="function"?r(Object.assign({},e,{placement:t})):r,o=i[0],a=i[1];return o=o||0,a=(a||0)*s,[Nt,tr].indexOf(n)>=0?{x:a,y:o}:{x:o,y:a}}function EF(t){var e=t.state,r=t.options,n=t.name,s=r.offset,i=s===void 0?[0,0]:s,o=Tg.reduce(function(c,f){return c[f]=_F(f,e.rects,i),c},{}),a=o[e.placement],l=a.x,u=a.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=u),e.modifiersData[n]=o}const mS={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:EF};function SF(t){var e=t.state,r=t.name;e.modifiersData[r]=hS({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const Lg={name:"popperOffsets",enabled:!0,phase:"read",fn:SF,data:{}};function TF(t){return t==="x"?"y":"x"}function xF(t){var e=t.state,r=t.options,n=t.name,s=r.mainAxis,i=s===void 0?!0:s,o=r.altAxis,a=o===void 0?!1:o,l=r.boundary,u=r.rootBoundary,c=r.altBoundary,f=r.padding,d=r.tether,g=d===void 0?!0:d,m=r.tetherOffset,y=m===void 0?0:m,_=Js(e,{boundary:l,rootBoundary:u,padding:f,altBoundary:c}),S=Wr(e.placement),E=Qs(e.placement),v=!E,x=Ig(S),M=TF(x),A=e.modifiersData.popperOffsets,L=e.rects.reference,D=e.rects.popper,B=typeof y=="function"?y(Object.assign({},e.rects,{placement:e.placement})):y,q=typeof B=="number"?{mainAxis:B,altAxis:B}:Object.assign({mainAxis:0,altAxis:0},B),Y=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,R={x:0,y:0};if(A){if(i){var I,N=x==="y"?Lt:Nt,W=x==="y"?er:tr,G=x==="y"?"height":"width",H=A[x],$=H+_[N],ne=H-_[W],ue=g?-D[G]/2:0,re=E===Qi?L[G]:D[G],k=E===Qi?-D[G]:-L[G],Q=e.elements.arrow,de=g&&Q?Cg(Q):{width:0,height:0},ge=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:lS(),me=ge[N],X=ge[W],K=Qo(0,L[G],de[G]),ie=v?L[G]/2-ue-K-me-q.mainAxis:re-K-me-q.mainAxis,be=v?-L[G]/2+ue+K+X+q.mainAxis:k+K+X+q.mainAxis,he=e.elements.arrow&&Ea(e.elements.arrow),ce=he?x==="y"?he.clientTop||0:he.clientLeft||0:0,C=(I=Y==null?void 0:Y[x])!=null?I:0,P=H+ie-C-ce,O=H+be-C,j=Qo(g?fu($,P):$,H,g?Hi(ne,O):ne);A[x]=j,R[x]=j-H}if(a){var z,oe=x==="x"?Lt:Nt,fe=x==="x"?er:tr,V=A[M],te=M==="y"?"height":"width",F=V+_[oe],J=V-_[fe],se=[Lt,Nt].indexOf(S)!==-1,pe=(z=Y==null?void 0:Y[M])!=null?z:0,w=se?F:V-L[te]-D[te]-pe+q.altAxis,p=se?V+L[te]+D[te]-pe-q.altAxis:J,h=g&&se?rF(w,V,p):Qo(g?w:F,V,g?p:J);A[M]=h,R[M]=h-V}e.modifiersData[n]=R}}const bS={name:"preventOverflow",enabled:!0,phase:"main",fn:xF,requiresIfExists:["offset"]};function AF(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function CF(t){return t===rr(t)||!cr(t)?Rg(t):AF(t)}function IF(t){var e=t.getBoundingClientRect(),r=Ks(e.width)/t.offsetWidth||1,n=Ks(e.height)/t.offsetHeight||1;return r!==1||n!==1}function MF(t,e,r){r===void 0&&(r=!1);var n=cr(e),s=cr(e)&&IF(e),i=oi(e),o=Xs(t,s,r),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!r)&&((qr(e)!=="body"||kg(i))&&(a=CF(e)),cr(e)?(l=Xs(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):i&&(l.x=Pg(i))),{x:o.left+a.scrollLeft-l.x,y:o.top+a.scrollTop-l.y,width:o.width,height:o.height}}function OF(t){var e=new Map,r=new Set,n=[];t.forEach(function(i){e.set(i.name,i)});function s(i){r.add(i.name);var o=[].concat(i.requires||[],i.requiresIfExists||[]);o.forEach(function(a){if(!r.has(a)){var l=e.get(a);l&&s(l)}}),n.push(i)}return t.forEach(function(i){r.has(i.name)||s(i)}),n}function RF(t){var e=OF(t);return sS.reduce(function(r,n){return r.concat(e.filter(function(s){return s.phase===n}))},[])}function PF(t){var e;return function(){return e||(e=new Promise(function(r){Promise.resolve().then(function(){e=void 0,r(t())})})),e}}function kF(t){var e=t.reduce(function(r,n){var s=r[n.name];return r[n.name]=s?Object.assign({},s,n,{options:Object.assign({},s.options,n.options),data:Object.assign({},s.data,n.data)}):n,r},{});return Object.keys(e).map(function(r){return e[r]})}var ly={placement:"bottom",modifiers:[],strategy:"absolute"};function uy(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return!e.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function nc(t){t===void 0&&(t={});var e=t,r=e.defaultModifiers,n=r===void 0?[]:r,s=e.defaultOptions,i=s===void 0?ly:s;return function(a,l,u){u===void 0&&(u=i);var c={placement:"bottom",orderedModifiers:[],options:Object.assign({},ly,i),modifiersData:{},elements:{reference:a,popper:l},attributes:{},styles:{}},f=[],d=!1,g={state:c,setOptions:function(S){var E=typeof S=="function"?S(c.options):S;y(),c.options=Object.assign({},i,c.options,E),c.scrollParents={reference:Ji(a)?Jo(a):a.contextElement?Jo(a.contextElement):[],popper:Jo(l)};var v=RF(kF([].concat(n,c.options.modifiers)));return c.orderedModifiers=v.filter(function(x){return x.enabled}),m(),g.update()},forceUpdate:function(){if(!d){var S=c.elements,E=S.reference,v=S.popper;if(uy(E,v)){c.rects={reference:MF(E,Ea(v),c.options.strategy==="fixed"),popper:Cg(v)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(q){return c.modifiersData[q.name]=Object.assign({},q.data)});for(var x=0;x<c.orderedModifiers.length;x++){if(c.reset===!0){c.reset=!1,x=-1;continue}var M=c.orderedModifiers[x],A=M.fn,L=M.options,D=L===void 0?{}:L,B=M.name;typeof A=="function"&&(c=A({state:c,options:D,name:B,instance:g})||c)}}}},update:PF(function(){return new Promise(function(_){g.forceUpdate(),_(c)})}),destroy:function(){y(),d=!0}};if(!uy(a,l))return g;g.setOptions(u).then(function(_){!d&&u.onFirstUpdate&&u.onFirstUpdate(_)});function m(){c.orderedModifiers.forEach(function(_){var S=_.name,E=_.options,v=E===void 0?{}:E,x=_.effect;if(typeof x=="function"){var M=x({state:c,name:S,instance:g,options:v}),A=function(){};f.push(M||A)}})}function y(){f.forEach(function(_){return _()}),f=[]}return g}}var LF=nc(),NF=[Og,Lg,Mg,Ag],DF=nc({defaultModifiers:NF}),BF=[Og,Lg,Mg,Ag,mS,pS,bS,fS,gS],Ng=nc({defaultModifiers:BF});const yS=Object.freeze(Object.defineProperty({__proto__:null,afterMain:tS,afterRead:J1,afterWrite:iS,applyStyles:Ag,arrow:fS,auto:tc,basePlacements:uo,beforeMain:Z1,beforeRead:X1,beforeWrite:rS,bottom:er,clippingParents:G1,computeStyles:Mg,createPopper:Ng,createPopperBase:LF,createPopperLite:DF,detectOverflow:Js,end:Gs,eventListeners:Og,flip:pS,hide:gS,left:Nt,main:eS,modifierPhases:sS,offset:mS,placements:Tg,popper:Ss,popperGenerator:nc,popperOffsets:Lg,preventOverflow:bS,read:Q1,reference:K1,right:tr,start:Qi,top:Lt,variationPlacements:Jh,viewport:Sg,write:nS},Symbol.toStringTag,{value:"Module"}));/*!
+  * Bootstrap v5.3.3 (https://getbootstrap.com/)
+  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */const Nn=new Map,_f={set(t,e,r){Nn.has(t)||Nn.set(t,new Map);const n=Nn.get(t);if(!n.has(e)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(e,r)},get(t,e){return Nn.has(t)&&Nn.get(t).get(e)||null},remove(t,e){if(!Nn.has(t))return;const r=Nn.get(t);r.delete(e),r.size===0&&Nn.delete(t)}},$F=1e6,FF=1e3,tp="transitionend",wS=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(e,r)=>`#${CSS.escape(r)}`)),t),UF=t=>t==null?`${t}`:Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),jF=t=>{do t+=Math.floor(Math.random()*$F);while(document.getElementById(t));return t},WF=t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:r}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(r);return!n&&!s?0:(e=e.split(",")[0],r=r.split(",")[0],(Number.parseFloat(e)+Number.parseFloat(r))*FF)},vS=t=>{t.dispatchEvent(new Event(tp))},gn=t=>!t||typeof t!="object"?!1:(typeof t.jquery<"u"&&(t=t[0]),typeof t.nodeType<"u"),Zn=t=>gn(t)?t.jquery?t[0]:t:typeof t=="string"&&t.length>0?document.querySelector(wS(t)):null,co=t=>{if(!gn(t)||t.getClientRects().length===0)return!1;const e=getComputedStyle(t).getPropertyValue("visibility")==="visible",r=t.closest("details:not([open])");if(!r)return e;if(r!==t){const n=t.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return e},ei=t=>!t||t.nodeType!==Node.ELEMENT_NODE||t.classList.contains("disabled")?!0:typeof t.disabled<"u"?t.disabled:t.hasAttribute("disabled")&&t.getAttribute("disabled")!=="false",_S=t=>{if(!document.documentElement.attachShadow)return null;if(typeof t.getRootNode=="function"){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?_S(t.parentNode):null},du=()=>{},Sa=t=>{t.offsetHeight},ES=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Ef=[],zF=t=>{document.readyState==="loading"?(Ef.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of Ef)e()}),Ef.push(t)):t()},fr=()=>document.documentElement.dir==="rtl",pr=t=>{zF(()=>{const e=ES();if(e){const r=t.NAME,n=e.fn[r];e.fn[r]=t.jQueryInterface,e.fn[r].Constructor=t,e.fn[r].noConflict=()=>(e.fn[r]=n,t.jQueryInterface)}})},Ut=(t,e=[],r=t)=>typeof t=="function"?t(...e):r,SS=(t,e,r=!0)=>{if(!r){Ut(t);return}const s=WF(e)+5;let i=!1;const o=({target:a})=>{a===e&&(i=!0,e.removeEventListener(tp,o),Ut(t))};e.addEventListener(tp,o),setTimeout(()=>{i||vS(e)},s)},Dg=(t,e,r,n)=>{const s=t.length;let i=t.indexOf(e);return i===-1?!r&&n?t[s-1]:t[0]:(i+=r?1:-1,n&&(i=(i+s)%s),t[Math.max(0,Math.min(i,s-1))])},HF=/[^.]*(?=\..*)\.|.*/,VF=/\..*/,qF=/::\d+$/,Sf={};let cy=1;const TS={mouseenter:"mouseover",mouseleave:"mouseout"},YF=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function xS(t,e){return e&&`${e}::${cy++}`||t.uidEvent||cy++}function AS(t){const e=xS(t);return t.uidEvent=e,Sf[e]=Sf[e]||{},Sf[e]}function GF(t,e){return function r(n){return Bg(n,{delegateTarget:t}),r.oneOff&&Se.off(t,n.type,e),e.apply(t,[n])}}function KF(t,e,r){return function n(s){const i=t.querySelectorAll(e);for(let{target:o}=s;o&&o!==this;o=o.parentNode)for(const a of i)if(a===o)return Bg(s,{delegateTarget:o}),n.oneOff&&Se.off(t,s.type,e,r),r.apply(o,[s])}}function CS(t,e,r=null){return Object.values(t).find(n=>n.callable===e&&n.delegationSelector===r)}function IS(t,e,r){const n=typeof e=="string",s=n?r:e||r;let i=MS(t);return YF.has(i)||(i=t),[n,s,i]}function fy(t,e,r,n,s){if(typeof e!="string"||!t)return;let[i,o,a]=IS(e,r,n);e in TS&&(o=(m=>function(y){if(!y.relatedTarget||y.relatedTarget!==y.delegateTarget&&!y.delegateTarget.contains(y.relatedTarget))return m.call(this,y)})(o));const l=AS(t),u=l[a]||(l[a]={}),c=CS(u,o,i?r:null);if(c){c.oneOff=c.oneOff&&s;return}const f=xS(o,e.replace(HF,"")),d=i?KF(t,r,o):GF(t,o);d.delegationSelector=i?r:null,d.callable=o,d.oneOff=s,d.uidEvent=f,u[f]=d,t.addEventListener(a,d,i)}function rp(t,e,r,n,s){const i=CS(e[r],n,s);i&&(t.removeEventListener(r,i,!!s),delete e[r][i.uidEvent])}function XF(t,e,r,n){const s=e[r]||{};for(const[i,o]of Object.entries(s))i.includes(n)&&rp(t,e,r,o.callable,o.delegationSelector)}function MS(t){return t=t.replace(VF,""),TS[t]||t}const Se={on(t,e,r,n){fy(t,e,r,n,!1)},one(t,e,r,n){fy(t,e,r,n,!0)},off(t,e,r,n){if(typeof e!="string"||!t)return;const[s,i,o]=IS(e,r,n),a=o!==e,l=AS(t),u=l[o]||{},c=e.startsWith(".");if(typeof i<"u"){if(!Object.keys(u).length)return;rp(t,l,o,i,s?r:null);return}if(c)for(const f of Object.keys(l))XF(t,l,f,e.slice(1));for(const[f,d]of Object.entries(u)){const g=f.replace(qF,"");(!a||e.includes(g))&&rp(t,l,o,d.callable,d.delegationSelector)}},trigger(t,e,r){if(typeof e!="string"||!t)return null;const n=ES(),s=MS(e),i=e!==s;let o=null,a=!0,l=!0,u=!1;i&&n&&(o=n.Event(e,r),n(t).trigger(o),a=!o.isPropagationStopped(),l=!o.isImmediatePropagationStopped(),u=o.isDefaultPrevented());const c=Bg(new Event(e,{bubbles:a,cancelable:!0}),r);return u&&c.preventDefault(),l&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function Bg(t,e={}){for(const[r,n]of Object.entries(e))try{t[r]=n}catch{Object.defineProperty(t,r,{configurable:!0,get(){return n}})}return t}function dy(t){if(t==="true")return!0;if(t==="false")return!1;if(t===Number(t).toString())return Number(t);if(t===""||t==="null")return null;if(typeof t!="string")return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function Tf(t){return t.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const mn={setDataAttribute(t,e,r){t.setAttribute(`data-bs-${Tf(e)}`,r)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${Tf(e)}`)},getDataAttributes(t){if(!t)return{};const e={},r=Object.keys(t.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(const n of r){let s=n.replace(/^bs/,"");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),e[s]=dy(t.dataset[n])}return e},getDataAttribute(t,e){return dy(t.getAttribute(`data-bs-${Tf(e)}`))}};class Ta{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,r){const n=gn(r)?mn.getDataAttribute(r,"config"):{};return{...this.constructor.Default,...typeof n=="object"?n:{},...gn(r)?mn.getDataAttributes(r):{},...typeof e=="object"?e:{}}}_typeCheckConfig(e,r=this.constructor.DefaultType){for(const[n,s]of Object.entries(r)){const i=e[n],o=gn(i)?"element":UF(i);if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}}}const QF="5.3.3";class Ir extends Ta{constructor(e,r){super(),e=Zn(e),e&&(this._element=e,this._config=this._getConfig(r),_f.set(this._element,this.constructor.DATA_KEY,this))}dispose(){_f.remove(this._element,this.constructor.DATA_KEY),Se.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,r,n=!0){SS(e,r,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return _f.get(Zn(e),this.DATA_KEY)}static getOrCreateInstance(e,r={}){return this.getInstance(e)||new this(e,typeof r=="object"?r:null)}static get VERSION(){return QF}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const xf=t=>{let e=t.getAttribute("data-bs-target");if(!e||e==="#"){let r=t.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),e=r&&r!=="#"?r.trim():null}return e?e.split(",").map(r=>wS(r)).join(","):null},Le={find(t,e=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t,e=document.documentElement){return Element.prototype.querySelector.call(e,t)},children(t,e){return[].concat(...t.children).filter(r=>r.matches(e))},parents(t,e){const r=[];let n=t.parentNode.closest(e);for(;n;)r.push(n),n=n.parentNode.closest(e);return r},prev(t,e){let r=t.previousElementSibling;for(;r;){if(r.matches(e))return[r];r=r.previousElementSibling}return[]},next(t,e){let r=t.nextElementSibling;for(;r;){if(r.matches(e))return[r];r=r.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(e,t).filter(r=>!ei(r)&&co(r))},getSelectorFromElement(t){const e=xf(t);return e&&Le.findOne(e)?e:null},getElementFromSelector(t){const e=xf(t);return e?Le.findOne(e):null},getMultipleElementsFromSelector(t){const e=xf(t);return e?Le.find(e):[]}},ic=(t,e="hide")=>{const r=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;Se.on(document,r,`[data-bs-dismiss="${n}"]`,function(s){if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),ei(this))return;const i=Le.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(i)[e]()})},JF="alert",ZF="bs.alert",OS=`.${ZF}`,eU=`close${OS}`,tU=`closed${OS}`,rU="fade",nU="show";class sc extends Ir{static get NAME(){return JF}close(){if(Se.trigger(this._element,eU).defaultPrevented)return;this._element.classList.remove(nU);const r=this._element.classList.contains(rU);this._queueCallback(()=>this._destroyElement(),this._element,r)}_destroyElement(){this._element.remove(),Se.trigger(this._element,tU),this.dispose()}static jQueryInterface(e){return this.each(function(){const r=sc.getOrCreateInstance(this);if(typeof e=="string"){if(r[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);r[e](this)}})}}ic(sc,"close");pr(sc);const iU="button",sU="bs.button",oU=`.${sU}`,aU=".data-api",lU="active",hy='[data-bs-toggle="button"]',uU=`click${oU}${aU}`;class oc extends Ir{static get NAME(){return iU}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(lU))}static jQueryInterface(e){return this.each(function(){const r=oc.getOrCreateInstance(this);e==="toggle"&&r[e]()})}}Se.on(document,uU,hy,t=>{t.preventDefault();const e=t.target.closest(hy);oc.getOrCreateInstance(e).toggle()});pr(oc);const cU="swipe",fo=".bs.swipe",fU=`touchstart${fo}`,dU=`touchmove${fo}`,hU=`touchend${fo}`,pU=`pointerdown${fo}`,gU=`pointerup${fo}`,mU="touch",bU="pen",yU="pointer-event",wU=40,vU={endCallback:null,leftCallback:null,rightCallback:null},_U={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class hu extends Ta{constructor(e,r){super(),this._element=e,!(!e||!hu.isSupported())&&(this._config=this._getConfig(r),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return vU}static get DefaultType(){return _U}static get NAME(){return cU}dispose(){Se.off(this._element,fo)}_start(e){if(!this._supportPointerEvents){this._deltaX=e.touches[0].clientX;return}this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),Ut(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=wU)return;const r=e/this._deltaX;this._deltaX=0,r&&Ut(r>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(Se.on(this._element,pU,e=>this._start(e)),Se.on(this._element,gU,e=>this._end(e)),this._element.classList.add(yU)):(Se.on(this._element,fU,e=>this._start(e)),Se.on(this._element,dU,e=>this._move(e)),Se.on(this._element,hU,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&(e.pointerType===bU||e.pointerType===mU)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const EU="carousel",SU="bs.carousel",ai=`.${SU}`,RS=".data-api",TU="ArrowLeft",xU="ArrowRight",AU=500,Mo="next",ys="prev",Ts="left",kl="right",CU=`slide${ai}`,Af=`slid${ai}`,IU=`keydown${ai}`,MU=`mouseenter${ai}`,OU=`mouseleave${ai}`,RU=`dragstart${ai}`,PU=`load${ai}${RS}`,kU=`click${ai}${RS}`,PS="carousel",Za="active",LU="slide",NU="carousel-item-end",DU="carousel-item-start",BU="carousel-item-next",$U="carousel-item-prev",kS=".active",LS=".carousel-item",FU=kS+LS,UU=".carousel-item img",jU=".carousel-indicators",WU="[data-bs-slide], [data-bs-slide-to]",zU='[data-bs-ride="carousel"]',HU={[TU]:kl,[xU]:Ts},VU={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},qU={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xa extends Ir{constructor(e,r){super(e,r),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Le.findOne(jU,this._element),this._addEventListeners(),this._config.ride===PS&&this.cycle()}static get Default(){return VU}static get DefaultType(){return qU}static get NAME(){return EU}next(){this._slide(Mo)}nextWhenVisible(){!document.hidden&&co(this._element)&&this.next()}prev(){this._slide(ys)}pause(){this._isSliding&&vS(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){Se.one(this._element,Af,()=>this.cycle());return}this.cycle()}}to(e){const r=this._getItems();if(e>r.length-1||e<0)return;if(this._isSliding){Se.one(this._element,Af,()=>this.to(e));return}const n=this._getItemIndex(this._getActive());if(n===e)return;const s=e>n?Mo:ys;this._slide(s,r[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&Se.on(this._element,IU,e=>this._keydown(e)),this._config.pause==="hover"&&(Se.on(this._element,MU,()=>this.pause()),Se.on(this._element,OU,()=>this._maybeEnableCycle())),this._config.touch&&hu.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const n of Le.find(UU,this._element))Se.on(n,RU,s=>s.preventDefault());const r={leftCallback:()=>this._slide(this._directionToOrder(Ts)),rightCallback:()=>this._slide(this._directionToOrder(kl)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),AU+this._config.interval))}};this._swipeHelper=new hu(this._element,r)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const r=HU[e.key];r&&(e.preventDefault(),this._slide(this._directionToOrder(r)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const r=Le.findOne(kS,this._indicatorsElement);r.classList.remove(Za),r.removeAttribute("aria-current");const n=Le.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add(Za),n.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const r=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=r||this._config.defaultInterval}_slide(e,r=null){if(this._isSliding)return;const n=this._getActive(),s=e===Mo,i=r||Dg(this._getItems(),n,s,this._config.wrap);if(i===n)return;const o=this._getItemIndex(i),a=g=>Se.trigger(this._element,g,{relatedTarget:i,direction:this._orderToDirection(e),from:this._getItemIndex(n),to:o});if(a(CU).defaultPrevented||!n||!i)return;const u=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=i;const c=s?DU:NU,f=s?BU:$U;i.classList.add(f),Sa(i),n.classList.add(c),i.classList.add(c);const d=()=>{i.classList.remove(c,f),i.classList.add(Za),n.classList.remove(Za,f,c),this._isSliding=!1,a(Af)};this._queueCallback(d,n,this._isAnimated()),u&&this.cycle()}_isAnimated(){return this._element.classList.contains(LU)}_getActive(){return Le.findOne(FU,this._element)}_getItems(){return Le.find(LS,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return fr()?e===Ts?ys:Mo:e===Ts?Mo:ys}_orderToDirection(e){return fr()?e===ys?Ts:kl:e===ys?kl:Ts}static jQueryInterface(e){return this.each(function(){const r=xa.getOrCreateInstance(this,e);if(typeof e=="number"){r.to(e);return}if(typeof e=="string"){if(r[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);r[e]()}})}}Se.on(document,kU,WU,function(t){const e=Le.getElementFromSelector(this);if(!e||!e.classList.contains(PS))return;t.preventDefault();const r=xa.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");if(n){r.to(n),r._maybeEnableCycle();return}if(mn.getDataAttribute(this,"slide")==="next"){r.next(),r._maybeEnableCycle();return}r.prev(),r._maybeEnableCycle()});Se.on(window,PU,()=>{const t=Le.find(zU);for(const e of t)xa.getOrCreateInstance(e)});pr(xa);const YU="collapse",GU="bs.collapse",Aa=`.${GU}`,KU=".data-api",XU=`show${Aa}`,QU=`shown${Aa}`,JU=`hide${Aa}`,ZU=`hidden${Aa}`,e3=`click${Aa}${KU}`,Cf="show",Ms="collapse",el="collapsing",t3="collapsed",r3=`:scope .${Ms} .${Ms}`,n3="collapse-horizontal",i3="width",s3="height",o3=".collapse.show, .collapse.collapsing",np='[data-bs-toggle="collapse"]',a3={parent:null,toggle:!0},l3={parent:"(null|element)",toggle:"boolean"};class ca extends Ir{constructor(e,r){super(e,r),this._isTransitioning=!1,this._triggerArray=[];const n=Le.find(np);for(const s of n){const i=Le.getSelectorFromElement(s),o=Le.find(i).filter(a=>a===this._element);i!==null&&o.length&&this._triggerArray.push(s)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return a3}static get DefaultType(){return l3}static get NAME(){return YU}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(o3).filter(a=>a!==this._element).map(a=>ca.getOrCreateInstance(a,{toggle:!1}))),e.length&&e[0]._isTransitioning||Se.trigger(this._element,XU).defaultPrevented)return;for(const a of e)a.hide();const n=this._getDimension();this._element.classList.remove(Ms),this._element.classList.add(el),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=()=>{this._isTransitioning=!1,this._element.classList.remove(el),this._element.classList.add(Ms,Cf),this._element.style[n]="",Se.trigger(this._element,QU)},o=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(s,this._element,!0),this._element.style[n]=`${this._element[o]}px`}hide(){if(this._isTransitioning||!this._isShown()||Se.trigger(this._element,JU).defaultPrevented)return;const r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,Sa(this._element),this._element.classList.add(el),this._element.classList.remove(Ms,Cf);for(const s of this._triggerArray){const i=Le.getElementFromSelector(s);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([s],!1)}this._isTransitioning=!0;const n=()=>{this._isTransitioning=!1,this._element.classList.remove(el),this._element.classList.add(Ms),Se.trigger(this._element,ZU)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(e=this._element){return e.classList.contains(Cf)}_configAfterMerge(e){return e.toggle=!!e.toggle,e.parent=Zn(e.parent),e}_getDimension(){return this._element.classList.contains(n3)?i3:s3}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(np);for(const r of e){const n=Le.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(e){const r=Le.find(r3,this._config.parent);return Le.find(e,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(e,r){if(e.length)for(const n of e)n.classList.toggle(t3,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(e){const r={};return typeof e=="string"&&/show|hide/.test(e)&&(r.toggle=!1),this.each(function(){const n=ca.getOrCreateInstance(this,r);if(typeof e=="string"){if(typeof n[e]>"u")throw new TypeError(`No method named "${e}"`);n[e]()}})}}Se.on(document,e3,np,function(t){(t.target.tagName==="A"||t.delegateTarget&&t.delegateTarget.tagName==="A")&&t.preventDefault();for(const e of Le.getMultipleElementsFromSelector(this))ca.getOrCreateInstance(e,{toggle:!1}).toggle()});pr(ca);const py="dropdown",u3="bs.dropdown",ds=`.${u3}`,$g=".data-api",c3="Escape",gy="Tab",f3="ArrowUp",my="ArrowDown",d3=2,h3=`hide${ds}`,p3=`hidden${ds}`,g3=`show${ds}`,m3=`shown${ds}`,NS=`click${ds}${$g}`,DS=`keydown${ds}${$g}`,b3=`keyup${ds}${$g}`,xs="show",y3="dropup",w3="dropend",v3="dropstart",_3="dropup-center",E3="dropdown-center",Li='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',S3=`${Li}.${xs}`,Ll=".dropdown-menu",T3=".navbar",x3=".navbar-nav",A3=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",C3=fr()?"top-end":"top-start",I3=fr()?"top-start":"top-end",M3=fr()?"bottom-end":"bottom-start",O3=fr()?"bottom-start":"bottom-end",R3=fr()?"left-start":"right-start",P3=fr()?"right-start":"left-start",k3="top",L3="bottom",N3={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},D3={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class zr extends Ir{constructor(e,r){super(e,r),this._popper=null,this._parent=this._element.parentNode,this._menu=Le.next(this._element,Ll)[0]||Le.prev(this._element,Ll)[0]||Le.findOne(Ll,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return N3}static get DefaultType(){return D3}static get NAME(){return py}toggle(){return this._isShown()?this.hide():this.show()}show(){if(ei(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!Se.trigger(this._element,g3,e).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(x3))for(const n of[].concat(...document.body.children))Se.on(n,"mouseover",du);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(xs),this._element.classList.add(xs),Se.trigger(this._element,m3,e)}}hide(){if(ei(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){if(!Se.trigger(this._element,h3,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))Se.off(n,"mouseover",du);this._popper&&this._popper.destroy(),this._menu.classList.remove(xs),this._element.classList.remove(xs),this._element.setAttribute("aria-expanded","false"),mn.removeDataAttribute(this._menu,"popper"),Se.trigger(this._element,p3,e)}}_getConfig(e){if(e=super._getConfig(e),typeof e.reference=="object"&&!gn(e.reference)&&typeof e.reference.getBoundingClientRect!="function")throw new TypeError(`${py.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){if(typeof yS>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;this._config.reference==="parent"?e=this._parent:gn(this._config.reference)?e=Zn(this._config.reference):typeof this._config.reference=="object"&&(e=this._config.reference);const r=this._getPopperConfig();this._popper=Ng(e,this._menu,r)}_isShown(){return this._menu.classList.contains(xs)}_getPlacement(){const e=this._parent;if(e.classList.contains(w3))return R3;if(e.classList.contains(v3))return P3;if(e.classList.contains(_3))return k3;if(e.classList.contains(E3))return L3;const r=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return e.classList.contains(y3)?r?I3:C3:r?O3:M3}_detectNavbar(){return this._element.closest(T3)!==null}_getOffset(){const{offset:e}=this._config;return typeof e=="string"?e.split(",").map(r=>Number.parseInt(r,10)):typeof e=="function"?r=>e(r,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(mn.setDataAttribute(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,...Ut(this._config.popperConfig,[e])}}_selectMenuItem({key:e,target:r}){const n=Le.find(A3,this._menu).filter(s=>co(s));n.length&&Dg(n,r,e===my,!n.includes(r)).focus()}static jQueryInterface(e){return this.each(function(){const r=zr.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof r[e]>"u")throw new TypeError(`No method named "${e}"`);r[e]()}})}static clearMenus(e){if(e.button===d3||e.type==="keyup"&&e.key!==gy)return;const r=Le.find(S3);for(const n of r){const s=zr.getInstance(n);if(!s||s._config.autoClose===!1)continue;const i=e.composedPath(),o=i.includes(s._menu);if(i.includes(s._element)||s._config.autoClose==="inside"&&!o||s._config.autoClose==="outside"&&o||s._menu.contains(e.target)&&(e.type==="keyup"&&e.key===gy||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const a={relatedTarget:s._element};e.type==="click"&&(a.clickEvent=e),s._completeHide(a)}}static dataApiKeydownHandler(e){const r=/input|textarea/i.test(e.target.tagName),n=e.key===c3,s=[f3,my].includes(e.key);if(!s&&!n||r&&!n)return;e.preventDefault();const i=this.matches(Li)?this:Le.prev(this,Li)[0]||Le.next(this,Li)[0]||Le.findOne(Li,e.delegateTarget.parentNode),o=zr.getOrCreateInstance(i);if(s){e.stopPropagation(),o.show(),o._selectMenuItem(e);return}o._isShown()&&(e.stopPropagation(),o.hide(),i.focus())}}Se.on(document,DS,Li,zr.dataApiKeydownHandler);Se.on(document,DS,Ll,zr.dataApiKeydownHandler);Se.on(document,NS,zr.clearMenus);Se.on(document,b3,zr.clearMenus);Se.on(document,NS,Li,function(t){t.preventDefault(),zr.getOrCreateInstance(this).toggle()});pr(zr);const BS="backdrop",B3="fade",by="show",yy=`mousedown.bs.${BS}`,$3={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},F3={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class $S extends Ta{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return $3}static get DefaultType(){return F3}static get NAME(){return BS}show(e){if(!this._config.isVisible){Ut(e);return}this._append();const r=this._getElement();this._config.isAnimated&&Sa(r),r.classList.add(by),this._emulateAnimation(()=>{Ut(e)})}hide(e){if(!this._config.isVisible){Ut(e);return}this._getElement().classList.remove(by),this._emulateAnimation(()=>{this.dispose(),Ut(e)})}dispose(){this._isAppended&&(Se.off(this._element,yy),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add(B3),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=Zn(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),Se.on(e,yy,()=>{Ut(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){SS(e,this._getElement(),this._config.isAnimated)}}const U3="focustrap",j3="bs.focustrap",pu=`.${j3}`,W3=`focusin${pu}`,z3=`keydown.tab${pu}`,H3="Tab",V3="forward",wy="backward",q3={autofocus:!0,trapElement:null},Y3={autofocus:"boolean",trapElement:"element"};class FS extends Ta{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return q3}static get DefaultType(){return Y3}static get NAME(){return U3}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),Se.off(document,pu),Se.on(document,W3,e=>this._handleFocusin(e)),Se.on(document,z3,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,Se.off(document,pu))}_handleFocusin(e){const{trapElement:r}=this._config;if(e.target===document||e.target===r||r.contains(e.target))return;const n=Le.focusableChildren(r);n.length===0?r.focus():this._lastTabNavDirection===wy?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){e.key===H3&&(this._lastTabNavDirection=e.shiftKey?wy:V3)}}const vy=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",_y=".sticky-top",tl="padding-right",Ey="margin-right";class ip{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,tl,r=>r+e),this._setElementAttributes(vy,tl,r=>r+e),this._setElementAttributes(_y,Ey,r=>r-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,tl),this._resetElementAttributes(vy,tl),this._resetElementAttributes(_y,Ey)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,r,n){const s=this.getWidth(),i=o=>{if(o!==this._element&&window.innerWidth>o.clientWidth+s)return;this._saveInitialAttribute(o,r);const a=window.getComputedStyle(o).getPropertyValue(r);o.style.setProperty(r,`${n(Number.parseFloat(a))}px`)};this._applyManipulationCallback(e,i)}_saveInitialAttribute(e,r){const n=e.style.getPropertyValue(r);n&&mn.setDataAttribute(e,r,n)}_resetElementAttributes(e,r){const n=s=>{const i=mn.getDataAttribute(s,r);if(i===null){s.style.removeProperty(r);return}mn.removeDataAttribute(s,r),s.style.setProperty(r,i)};this._applyManipulationCallback(e,n)}_applyManipulationCallback(e,r){if(gn(e)){r(e);return}for(const n of Le.find(e,this._element))r(n)}}const G3="modal",K3="bs.modal",dr=`.${K3}`,X3=".data-api",Q3="Escape",J3=`hide${dr}`,Z3=`hidePrevented${dr}`,US=`hidden${dr}`,jS=`show${dr}`,e8=`shown${dr}`,t8=`resize${dr}`,r8=`click.dismiss${dr}`,n8=`mousedown.dismiss${dr}`,i8=`keydown.dismiss${dr}`,s8=`click${dr}${X3}`,Sy="modal-open",o8="fade",Ty="show",If="modal-static",a8=".modal.show",l8=".modal-dialog",u8=".modal-body",c8='[data-bs-toggle="modal"]',f8={backdrop:!0,focus:!0,keyboard:!0},d8={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Zs extends Ir{constructor(e,r){super(e,r),this._dialog=Le.findOne(l8,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new ip,this._addEventListeners()}static get Default(){return f8}static get DefaultType(){return d8}static get NAME(){return G3}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||this._isTransitioning||Se.trigger(this._element,jS,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Sy),this._adjustDialog(),this._backdrop.show(()=>this._showElement(e)))}hide(){!this._isShown||this._isTransitioning||Se.trigger(this._element,J3).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Ty),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){Se.off(window,dr),Se.off(this._dialog,dr),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new $S({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new FS({trapElement:this._element})}_showElement(e){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const r=Le.findOne(u8,this._dialog);r&&(r.scrollTop=0),Sa(this._element),this._element.classList.add(Ty);const n=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,Se.trigger(this._element,e8,{relatedTarget:e})};this._queueCallback(n,this._dialog,this._isAnimated())}_addEventListeners(){Se.on(this._element,i8,e=>{if(e.key===Q3){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),Se.on(window,t8,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),Se.on(this._element,n8,e=>{Se.one(this._element,r8,r=>{if(!(this._element!==e.target||this._element!==r.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Sy),this._resetAdjustments(),this._scrollBar.reset(),Se.trigger(this._element,US)})}_isAnimated(){return this._element.classList.contains(o8)}_triggerBackdropTransition(){if(Se.trigger(this._element,Z3).defaultPrevented)return;const r=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;n==="hidden"||this._element.classList.contains(If)||(r||(this._element.style.overflowY="hidden"),this._element.classList.add(If),this._queueCallback(()=>{this._element.classList.remove(If),this._queueCallback(()=>{this._element.style.overflowY=n},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,r=this._scrollBar.getWidth(),n=r>0;if(n&&!e){const s=fr()?"paddingLeft":"paddingRight";this._element.style[s]=`${r}px`}if(!n&&e){const s=fr()?"paddingRight":"paddingLeft";this._element.style[s]=`${r}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,r){return this.each(function(){const n=Zs.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof n[e]>"u")throw new TypeError(`No method named "${e}"`);n[e](r)}})}}Se.on(document,s8,c8,function(t){const e=Le.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),Se.one(e,jS,s=>{s.defaultPrevented||Se.one(e,US,()=>{co(this)&&this.focus()})});const r=Le.findOne(a8);r&&Zs.getInstance(r).hide(),Zs.getOrCreateInstance(e).toggle(this)});ic(Zs);pr(Zs);const h8="offcanvas",p8="bs.offcanvas",kn=`.${p8}`,WS=".data-api",g8=`load${kn}${WS}`,m8="Escape",xy="show",Ay="showing",Cy="hiding",b8="offcanvas-backdrop",zS=".offcanvas.show",y8=`show${kn}`,w8=`shown${kn}`,v8=`hide${kn}`,Iy=`hidePrevented${kn}`,HS=`hidden${kn}`,_8=`resize${kn}`,E8=`click${kn}${WS}`,S8=`keydown.dismiss${kn}`,T8='[data-bs-toggle="offcanvas"]',x8={backdrop:!0,keyboard:!0,scroll:!1},A8={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class ti extends Ir{constructor(e,r){super(e,r),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return x8}static get DefaultType(){return A8}static get NAME(){return h8}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown||Se.trigger(this._element,y8,{relatedTarget:e}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new ip().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Ay);const n=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(xy),this._element.classList.remove(Ay),Se.trigger(this._element,w8,{relatedTarget:e})};this._queueCallback(n,this._element,!0)}hide(){if(!this._isShown||Se.trigger(this._element,v8).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Cy),this._backdrop.hide();const r=()=>{this._element.classList.remove(xy,Cy),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new ip().reset(),Se.trigger(this._element,HS)};this._queueCallback(r,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=()=>{if(this._config.backdrop==="static"){Se.trigger(this._element,Iy);return}this.hide()},r=!!this._config.backdrop;return new $S({className:b8,isVisible:r,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:r?e:null})}_initializeFocusTrap(){return new FS({trapElement:this._element})}_addEventListeners(){Se.on(this._element,S8,e=>{if(e.key===m8){if(this._config.keyboard){this.hide();return}Se.trigger(this._element,Iy)}})}static jQueryInterface(e){return this.each(function(){const r=ti.getOrCreateInstance(this,e);if(typeof e=="string"){if(r[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);r[e](this)}})}}Se.on(document,E8,T8,function(t){const e=Le.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),ei(this))return;Se.one(e,HS,()=>{co(this)&&this.focus()});const r=Le.findOne(zS);r&&r!==e&&ti.getInstance(r).hide(),ti.getOrCreateInstance(e).toggle(this)});Se.on(window,g8,()=>{for(const t of Le.find(zS))ti.getOrCreateInstance(t).show()});Se.on(window,_8,()=>{for(const t of Le.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(t).position!=="fixed"&&ti.getOrCreateInstance(t).hide()});ic(ti);pr(ti);const C8=/^aria-[\w-]*$/i,VS={"*":["class","dir","id","lang","role",C8],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},I8=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),M8=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,O8=(t,e)=>{const r=t.nodeName.toLowerCase();return e.includes(r)?I8.has(r)?!!M8.test(t.nodeValue):!0:e.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function R8(t,e,r){if(!t.length)return t;if(r&&typeof r=="function")return r(t);const s=new window.DOMParser().parseFromString(t,"text/html"),i=[].concat(...s.body.querySelectorAll("*"));for(const o of i){const a=o.nodeName.toLowerCase();if(!Object.keys(e).includes(a)){o.remove();continue}const l=[].concat(...o.attributes),u=[].concat(e["*"]||[],e[a]||[]);for(const c of l)O8(c,u)||o.removeAttribute(c.nodeName)}return s.body.innerHTML}const P8="TemplateFactory",k8={allowList:VS,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},L8={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},N8={entry:"(string|element|function|null)",selector:"(string|element)"};class D8 extends Ta{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return k8}static get DefaultType(){return L8}static get NAME(){return P8}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[s,i]of Object.entries(this._config.content))this._setContent(e,i,s);const r=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[r,n]of Object.entries(e))super._typeCheckConfig({selector:r,entry:n},N8)}_setContent(e,r,n){const s=Le.findOne(n,e);if(s){if(r=this._resolvePossibleFunction(r),!r){s.remove();return}if(gn(r)){this._putElementInTemplate(Zn(r),s);return}if(this._config.html){s.innerHTML=this._maybeSanitize(r);return}s.textContent=r}}_maybeSanitize(e){return this._config.sanitize?R8(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return Ut(e,[this])}_putElementInTemplate(e,r){if(this._config.html){r.innerHTML="",r.append(e);return}r.textContent=e.textContent}}const B8="tooltip",$8=new Set(["sanitize","allowList","sanitizeFn"]),Mf="fade",F8="modal",rl="show",U8=".tooltip-inner",My=`.${F8}`,Oy="hide.bs.modal",Oo="hover",Of="focus",j8="click",W8="manual",z8="hide",H8="hidden",V8="show",q8="shown",Y8="inserted",G8="click",K8="focusin",X8="focusout",Q8="mouseenter",J8="mouseleave",Z8={AUTO:"auto",TOP:"top",RIGHT:fr()?"left":"right",BOTTOM:"bottom",LEFT:fr()?"right":"left"},e6={allowList:VS,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},t6={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class ho extends Ir{constructor(e,r){if(typeof yS>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return e6}static get DefaultType(){return t6}static get NAME(){return B8}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),Se.off(this._element.closest(My),Oy,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const e=Se.trigger(this._element,this.constructor.eventName(V8)),n=(_S(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!n)return;this._disposePopper();const s=this._getTipElement();this._element.setAttribute("aria-describedby",s.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(s),Se.trigger(this._element,this.constructor.eventName(Y8))),this._popper=this._createPopper(s),s.classList.add(rl),"ontouchstart"in document.documentElement)for(const a of[].concat(...document.body.children))Se.on(a,"mouseover",du);const o=()=>{Se.trigger(this._element,this.constructor.eventName(q8)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(o,this.tip,this._isAnimated())}hide(){if(!this._isShown()||Se.trigger(this._element,this.constructor.eventName(z8)).defaultPrevented)return;if(this._getTipElement().classList.remove(rl),"ontouchstart"in document.documentElement)for(const s of[].concat(...document.body.children))Se.off(s,"mouseover",du);this._activeTrigger[j8]=!1,this._activeTrigger[Of]=!1,this._activeTrigger[Oo]=!1,this._isHovered=null;const n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),Se.trigger(this._element,this.constructor.eventName(H8)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const r=this._getTemplateFactory(e).toHtml();if(!r)return null;r.classList.remove(Mf,rl),r.classList.add(`bs-${this.constructor.NAME}-auto`);const n=jF(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(Mf),r}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new D8({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[U8]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Mf)}_isShown(){return this.tip&&this.tip.classList.contains(rl)}_createPopper(e){const r=Ut(this._config.placement,[this,e,this._element]),n=Z8[r.toUpperCase()];return Ng(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return typeof e=="string"?e.split(",").map(r=>Number.parseInt(r,10)):typeof e=="function"?r=>e(r,this._element):e}_resolvePossibleFunction(e){return Ut(e,[this._element])}_getPopperConfig(e){const r={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return{...r,...Ut(this._config.popperConfig,[r])}}_setListeners(){const e=this._config.trigger.split(" ");for(const r of e)if(r==="click")Se.on(this._element,this.constructor.eventName(G8),this._config.selector,n=>{this._initializeOnDelegatedTarget(n).toggle()});else if(r!==W8){const n=r===Oo?this.constructor.eventName(Q8):this.constructor.eventName(K8),s=r===Oo?this.constructor.eventName(J8):this.constructor.eventName(X8);Se.on(this._element,n,this._config.selector,i=>{const o=this._initializeOnDelegatedTarget(i);o._activeTrigger[i.type==="focusin"?Of:Oo]=!0,o._enter()}),Se.on(this._element,s,this._config.selector,i=>{const o=this._initializeOnDelegatedTarget(i);o._activeTrigger[i.type==="focusout"?Of:Oo]=o._element.contains(i.relatedTarget),o._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},Se.on(this._element.closest(My),Oy,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,r){clearTimeout(this._timeout),this._timeout=setTimeout(e,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const r=mn.getDataAttributes(this._element);for(const n of Object.keys(r))$8.has(n)&&delete r[n];return e={...r,...typeof e=="object"&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=e.container===!1?document.body:Zn(e.container),typeof e.delay=="number"&&(e.delay={show:e.delay,hide:e.delay}),typeof e.title=="number"&&(e.title=e.title.toString()),typeof e.content=="number"&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(e[r]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each(function(){const r=ho.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof r[e]>"u")throw new TypeError(`No method named "${e}"`);r[e]()}})}}pr(ho);const r6="popover",n6=".popover-header",i6=".popover-body",s6={...ho.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},o6={...ho.DefaultType,content:"(null|string|element|function)"};class Fg extends ho{static get Default(){return s6}static get DefaultType(){return o6}static get NAME(){return r6}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[n6]:this._getTitle(),[i6]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(e){return this.each(function(){const r=Fg.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof r[e]>"u")throw new TypeError(`No method named "${e}"`);r[e]()}})}}pr(Fg);const a6="scrollspy",l6="bs.scrollspy",Ug=`.${l6}`,u6=".data-api",c6=`activate${Ug}`,Ry=`click${Ug}`,f6=`load${Ug}${u6}`,d6="dropdown-item",ws="active",h6='[data-bs-spy="scroll"]',Rf="[href]",p6=".nav, .list-group",Py=".nav-link",g6=".nav-item",m6=".list-group-item",b6=`${Py}, ${g6} > ${Py}, ${m6}`,y6=".dropdown",w6=".dropdown-toggle",v6={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},_6={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class ac extends Ir{constructor(e,r){super(e,r),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return v6}static get DefaultType(){return _6}static get NAME(){return a6}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=Zn(e.target)||document.body,e.rootMargin=e.offset?`${e.offset}px 0px -30%`:e.rootMargin,typeof e.threshold=="string"&&(e.threshold=e.threshold.split(",").map(r=>Number.parseFloat(r))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(Se.off(this._config.target,Ry),Se.on(this._config.target,Ry,Rf,e=>{const r=this._observableSections.get(e.target.hash);if(r){e.preventDefault();const n=this._rootElement||window,s=r.offsetTop-this._element.offsetTop;if(n.scrollTo){n.scrollTo({top:s,behavior:"smooth"});return}n.scrollTop=s}}))}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(r=>this._observerCallback(r),e)}_observerCallback(e){const r=o=>this._targetLinks.get(`#${o.target.id}`),n=o=>{this._previousScrollData.visibleEntryTop=o.target.offsetTop,this._process(r(o))},s=(this._rootElement||document.documentElement).scrollTop,i=s>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=s;for(const o of e){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(r(o));continue}const a=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(i&&a){if(n(o),!s)return;continue}!i&&!a&&n(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=Le.find(Rf,this._config.target);for(const r of e){if(!r.hash||ei(r))continue;const n=Le.findOne(decodeURI(r.hash),this._element);co(n)&&(this._targetLinks.set(decodeURI(r.hash),r),this._observableSections.set(r.hash,n))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add(ws),this._activateParents(e),Se.trigger(this._element,c6,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains(d6)){Le.findOne(w6,e.closest(y6)).classList.add(ws);return}for(const r of Le.parents(e,p6))for(const n of Le.prev(r,b6))n.classList.add(ws)}_clearActiveClass(e){e.classList.remove(ws);const r=Le.find(`${Rf}.${ws}`,e);for(const n of r)n.classList.remove(ws)}static jQueryInterface(e){return this.each(function(){const r=ac.getOrCreateInstance(this,e);if(typeof e=="string"){if(r[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);r[e]()}})}}Se.on(window,f6,()=>{for(const t of Le.find(h6))ac.getOrCreateInstance(t)});pr(ac);const E6="tab",S6="bs.tab",hs=`.${S6}`,T6=`hide${hs}`,x6=`hidden${hs}`,A6=`show${hs}`,C6=`shown${hs}`,I6=`click${hs}`,M6=`keydown${hs}`,O6=`load${hs}`,R6="ArrowLeft",ky="ArrowRight",P6="ArrowUp",Ly="ArrowDown",Pf="Home",Ny="End",Ni="active",Dy="fade",kf="show",k6="dropdown",qS=".dropdown-toggle",L6=".dropdown-menu",Lf=`:not(${qS})`,N6='.list-group, .nav, [role="tablist"]',D6=".nav-item, .list-group-item",B6=`.nav-link${Lf}, .list-group-item${Lf}, [role="tab"]${Lf}`,YS='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Nf=`${B6}, ${YS}`,$6=`.${Ni}[data-bs-toggle="tab"], .${Ni}[data-bs-toggle="pill"], .${Ni}[data-bs-toggle="list"]`;class eo extends Ir{constructor(e){super(e),this._parent=this._element.closest(N6),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),Se.on(this._element,M6,r=>this._keydown(r)))}static get NAME(){return E6}show(){const e=this._element;if(this._elemIsActive(e))return;const r=this._getActiveElem(),n=r?Se.trigger(r,T6,{relatedTarget:e}):null;Se.trigger(e,A6,{relatedTarget:r}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(r,e),this._activate(e,r))}_activate(e,r){if(!e)return;e.classList.add(Ni),this._activate(Le.getElementFromSelector(e));const n=()=>{if(e.getAttribute("role")!=="tab"){e.classList.add(kf);return}e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleDropDown(e,!0),Se.trigger(e,C6,{relatedTarget:r})};this._queueCallback(n,e,e.classList.contains(Dy))}_deactivate(e,r){if(!e)return;e.classList.remove(Ni),e.blur(),this._deactivate(Le.getElementFromSelector(e));const n=()=>{if(e.getAttribute("role")!=="tab"){e.classList.remove(kf);return}e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleDropDown(e,!1),Se.trigger(e,x6,{relatedTarget:r})};this._queueCallback(n,e,e.classList.contains(Dy))}_keydown(e){if(![R6,ky,P6,Ly,Pf,Ny].includes(e.key))return;e.stopPropagation(),e.preventDefault();const r=this._getChildren().filter(s=>!ei(s));let n;if([Pf,Ny].includes(e.key))n=r[e.key===Pf?0:r.length-1];else{const s=[ky,Ly].includes(e.key);n=Dg(r,e.target,s,!0)}n&&(n.focus({preventScroll:!0}),eo.getOrCreateInstance(n).show())}_getChildren(){return Le.find(Nf,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,r){this._setAttributeIfNotExists(e,"role","tablist");for(const n of r)this._setInitialAttributesOnChild(n)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const r=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",r),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),r||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const r=Le.getElementFromSelector(e);r&&(this._setAttributeIfNotExists(r,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(r,"aria-labelledby",`${e.id}`))}_toggleDropDown(e,r){const n=this._getOuterElement(e);if(!n.classList.contains(k6))return;const s=(i,o)=>{const a=Le.findOne(i,n);a&&a.classList.toggle(o,r)};s(qS,Ni),s(L6,kf),n.setAttribute("aria-expanded",r)}_setAttributeIfNotExists(e,r,n){e.hasAttribute(r)||e.setAttribute(r,n)}_elemIsActive(e){return e.classList.contains(Ni)}_getInnerElement(e){return e.matches(Nf)?e:Le.findOne(Nf,e)}_getOuterElement(e){return e.closest(D6)||e}static jQueryInterface(e){return this.each(function(){const r=eo.getOrCreateInstance(this);if(typeof e=="string"){if(r[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);r[e]()}})}}Se.on(document,I6,YS,function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),!ei(this)&&eo.getOrCreateInstance(this).show()});Se.on(window,O6,()=>{for(const t of Le.find($6))eo.getOrCreateInstance(t)});pr(eo);const F6="toast",U6="bs.toast",li=`.${U6}`,j6=`mouseover${li}`,W6=`mouseout${li}`,z6=`focusin${li}`,H6=`focusout${li}`,V6=`hide${li}`,q6=`hidden${li}`,Y6=`show${li}`,G6=`shown${li}`,K6="fade",By="hide",nl="show",il="showing",X6={animation:"boolean",autohide:"boolean",delay:"number"},Q6={animation:!0,autohide:!0,delay:5e3};class lc extends Ir{constructor(e,r){super(e,r),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Q6}static get DefaultType(){return X6}static get NAME(){return F6}show(){if(Se.trigger(this._element,Y6).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(K6);const r=()=>{this._element.classList.remove(il),Se.trigger(this._element,G6),this._maybeScheduleHide()};this._element.classList.remove(By),Sa(this._element),this._element.classList.add(nl,il),this._queueCallback(r,this._element,this._config.animation)}hide(){if(!this.isShown()||Se.trigger(this._element,V6).defaultPrevented)return;const r=()=>{this._element.classList.add(By),this._element.classList.remove(il,nl),Se.trigger(this._element,q6)};this._element.classList.add(il),this._queueCallback(r,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(nl),super.dispose()}isShown(){return this._element.classList.contains(nl)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,r){switch(e.type){case"mouseover":case"mouseout":{this._hasMouseInteraction=r;break}case"focusin":case"focusout":{this._hasKeyboardInteraction=r;break}}if(r){this._clearTimeout();return}const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){Se.on(this._element,j6,e=>this._onInteraction(e,!0)),Se.on(this._element,W6,e=>this._onInteraction(e,!1)),Se.on(this._element,z6,e=>this._onInteraction(e,!0)),Se.on(this._element,H6,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){const r=lc.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof r[e]>"u")throw new TypeError(`No method named "${e}"`);r[e](this)}})}}ic(lc);pr(lc);function J6(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;r({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});let i;const o=vt();e.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const a=o.createElement("div");function l(m,y){const _=e.params.virtual;if(_.cache&&e.virtual.cache[y])return e.virtual.cache[y];let S;return _.renderSlide?(S=_.renderSlide.call(e,m,y),typeof S=="string"&&(a.innerHTML=S,S=a.children[0])):e.isElement?S=Jt("swiper-slide"):S=Jt("div",e.params.slideClass),S.setAttribute("data-swiper-slide-index",y),_.renderSlide||(S.innerHTML=m),_.cache&&(e.virtual.cache[y]=S),S}function u(m,y){const{slidesPerView:_,slidesPerGroup:S,centeredSlides:E,loop:v,initialSlide:x}=e.params;if(y&&!v&&x>0)return;const{addSlidesBefore:M,addSlidesAfter:A}=e.params.virtual,{from:L,to:D,slides:B,slidesGrid:q,offset:Y}=e.virtual;e.params.cssMode||e.updateActiveIndex();const R=e.activeIndex||0;let I;e.rtlTranslate?I="right":I=e.isHorizontal()?"left":"top";let N,W;E?(N=Math.floor(_/2)+S+A,W=Math.floor(_/2)+S+M):(N=_+(S-1)+A,W=(v?_:S)+M);let G=R-W,H=R+N;v||(G=Math.max(G,0),H=Math.min(H,B.length-1));let $=(e.slidesGrid[G]||0)-(e.slidesGrid[0]||0);v&&R>=W?(G-=W,E||($+=e.slidesGrid[0])):v&&R<W&&(G=-W,E&&($+=e.slidesGrid[0])),Object.assign(e.virtual,{from:G,to:H,offset:$,slidesGrid:e.slidesGrid,slidesBefore:W,slidesAfter:N});function ne(){e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s("virtualUpdate")}if(L===G&&D===H&&!m){e.slidesGrid!==q&&$!==Y&&e.slides.forEach(ge=>{ge.style[I]=`${$-Math.abs(e.cssOverflowAdjustment())}px`}),e.updateProgress(),s("virtualUpdate");return}if(e.params.virtual.renderExternal){e.params.virtual.renderExternal.call(e,{offset:$,from:G,to:H,slides:function(){const me=[];for(let X=G;X<=H;X+=1)me.push(B[X]);return me}()}),e.params.virtual.renderExternalUpdate?ne():s("virtualUpdate");return}const ue=[],re=[],k=ge=>{let me=ge;return ge<0?me=B.length+ge:me>=B.length&&(me=me-B.length),me};if(m)e.slides.filter(ge=>ge.matches(`.${e.params.slideClass}, swiper-slide`)).forEach(ge=>{ge.remove()});else for(let ge=L;ge<=D;ge+=1)if(ge<G||ge>H){const me=k(ge);e.slides.filter(X=>X.matches(`.${e.params.slideClass}[data-swiper-slide-index="${me}"], swiper-slide[data-swiper-slide-index="${me}"]`)).forEach(X=>{X.remove()})}const Q=v?-B.length:0,de=v?B.length*2:B.length;for(let ge=Q;ge<de;ge+=1)if(ge>=G&&ge<=H){const me=k(ge);typeof D>"u"||m?re.push(me):(ge>D&&re.push(me),ge<L&&ue.push(me))}if(re.forEach(ge=>{e.slidesEl.append(l(B[ge],ge))}),v)for(let ge=ue.length-1;ge>=0;ge-=1){const me=ue[ge];e.slidesEl.prepend(l(B[me],me))}else ue.sort((ge,me)=>me-ge),ue.forEach(ge=>{e.slidesEl.prepend(l(B[ge],ge))});wt(e.slidesEl,".swiper-slide, swiper-slide").forEach(ge=>{ge.style[I]=`${$-Math.abs(e.cssOverflowAdjustment())}px`}),ne()}function c(m){if(typeof m=="object"&&"length"in m)for(let y=0;y<m.length;y+=1)m[y]&&e.virtual.slides.push(m[y]);else e.virtual.slides.push(m);u(!0)}function f(m){const y=e.activeIndex;let _=y+1,S=1;if(Array.isArray(m)){for(let E=0;E<m.length;E+=1)m[E]&&e.virtual.slides.unshift(m[E]);_=y+m.length,S=m.length}else e.virtual.slides.unshift(m);if(e.params.virtual.cache){const E=e.virtual.cache,v={};Object.keys(E).forEach(x=>{const M=E[x],A=M.getAttribute("data-swiper-slide-index");A&&M.setAttribute("data-swiper-slide-index",parseInt(A,10)+S),v[parseInt(x,10)+S]=M}),e.virtual.cache=v}u(!0),e.slideTo(_,0)}function d(m){if(typeof m>"u"||m===null)return;let y=e.activeIndex;if(Array.isArray(m))for(let _=m.length-1;_>=0;_-=1)e.params.virtual.cache&&(delete e.virtual.cache[m[_]],Object.keys(e.virtual.cache).forEach(S=>{S>m&&(e.virtual.cache[S-1]=e.virtual.cache[S],e.virtual.cache[S-1].setAttribute("data-swiper-slide-index",S-1),delete e.virtual.cache[S])})),e.virtual.slides.splice(m[_],1),m[_]<y&&(y-=1),y=Math.max(y,0);else e.params.virtual.cache&&(delete e.virtual.cache[m],Object.keys(e.virtual.cache).forEach(_=>{_>m&&(e.virtual.cache[_-1]=e.virtual.cache[_],e.virtual.cache[_-1].setAttribute("data-swiper-slide-index",_-1),delete e.virtual.cache[_])})),e.virtual.slides.splice(m,1),m<y&&(y-=1),y=Math.max(y,0);u(!0),e.slideTo(y,0)}function g(){e.virtual.slides=[],e.params.virtual.cache&&(e.virtual.cache={}),u(!0),e.slideTo(0,0)}n("beforeInit",()=>{if(!e.params.virtual.enabled)return;let m;if(typeof e.passedParams.virtual.slides>"u"){const y=[...e.slidesEl.children].filter(_=>_.matches(`.${e.params.slideClass}, swiper-slide`));y&&y.length&&(e.virtual.slides=[...y],m=!0,y.forEach((_,S)=>{_.setAttribute("data-swiper-slide-index",S),e.virtual.cache[S]=_,_.remove()}))}m||(e.virtual.slides=e.params.virtual.slides),e.classNames.push(`${e.params.containerModifierClass}virtual`),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0,u(!1,!0)}),n("setTranslate",()=>{e.params.virtual.enabled&&(e.params.cssMode&&!e._immediateVirtual?(clearTimeout(i),i=setTimeout(()=>{u()},100)):u())}),n("init update resize",()=>{e.params.virtual.enabled&&e.params.cssMode&&Uo(e.wrapperEl,"--swiper-virtual-size",`${e.virtualSize}px`)}),Object.assign(e.virtual,{appendSlide:c,prependSlide:f,removeSlide:d,removeAllSlides:g,update:u})}function Z6(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i=vt(),o=ot();e.keyboard={enabled:!1},r({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}});function a(c){if(!e.enabled)return;const{rtlTranslate:f}=e;let d=c;d.originalEvent&&(d=d.originalEvent);const g=d.keyCode||d.charCode,m=e.params.keyboard.pageUpDown,y=m&&g===33,_=m&&g===34,S=g===37,E=g===39,v=g===38,x=g===40;if(!e.allowSlideNext&&(e.isHorizontal()&&E||e.isVertical()&&x||_)||!e.allowSlidePrev&&(e.isHorizontal()&&S||e.isVertical()&&v||y))return!1;if(!(d.shiftKey||d.altKey||d.ctrlKey||d.metaKey)&&!(i.activeElement&&i.activeElement.nodeName&&(i.activeElement.nodeName.toLowerCase()==="input"||i.activeElement.nodeName.toLowerCase()==="textarea"))){if(e.params.keyboard.onlyInViewport&&(y||_||S||E||v||x)){let M=!1;if(zi(e.el,`.${e.params.slideClass}, swiper-slide`).length>0&&zi(e.el,`.${e.params.slideActiveClass}`).length===0)return;const A=e.el,L=A.clientWidth,D=A.clientHeight,B=o.innerWidth,q=o.innerHeight,Y=cu(A);f&&(Y.left-=A.scrollLeft);const R=[[Y.left,Y.top],[Y.left+L,Y.top],[Y.left,Y.top+D],[Y.left+L,Y.top+D]];for(let I=0;I<R.length;I+=1){const N=R[I];if(N[0]>=0&&N[0]<=B&&N[1]>=0&&N[1]<=q){if(N[0]===0&&N[1]===0)continue;M=!0}}if(!M)return}e.isHorizontal()?((y||_||S||E)&&(d.preventDefault?d.preventDefault():d.returnValue=!1),((_||E)&&!f||(y||S)&&f)&&e.slideNext(),((y||S)&&!f||(_||E)&&f)&&e.slidePrev()):((y||_||v||x)&&(d.preventDefault?d.preventDefault():d.returnValue=!1),(_||x)&&e.slideNext(),(y||v)&&e.slidePrev()),s("keyPress",g)}}function l(){e.keyboard.enabled||(i.addEventListener("keydown",a),e.keyboard.enabled=!0)}function u(){e.keyboard.enabled&&(i.removeEventListener("keydown",a),e.keyboard.enabled=!1)}n("init",()=>{e.params.keyboard.enabled&&l()}),n("destroy",()=>{e.keyboard.enabled&&u()}),Object.assign(e.keyboard,{enable:l,disable:u})}function ej(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i=ot();r({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),e.mousewheel={enabled:!1};let o,a=ar(),l;const u=[];function c(v){let L=0,D=0,B=0,q=0;return"detail"in v&&(D=v.detail),"wheelDelta"in v&&(D=-v.wheelDelta/120),"wheelDeltaY"in v&&(D=-v.wheelDeltaY/120),"wheelDeltaX"in v&&(L=-v.wheelDeltaX/120),"axis"in v&&v.axis===v.HORIZONTAL_AXIS&&(L=D,D=0),B=L*10,q=D*10,"deltaY"in v&&(q=v.deltaY),"deltaX"in v&&(B=v.deltaX),v.shiftKey&&!B&&(B=q,q=0),(B||q)&&v.deltaMode&&(v.deltaMode===1?(B*=40,q*=40):(B*=800,q*=800)),B&&!L&&(L=B<1?-1:1),q&&!D&&(D=q<1?-1:1),{spinX:L,spinY:D,pixelX:B,pixelY:q}}function f(){e.enabled&&(e.mouseEntered=!0)}function d(){e.enabled&&(e.mouseEntered=!1)}function g(v){return e.params.mousewheel.thresholdDelta&&v.delta<e.params.mousewheel.thresholdDelta||e.params.mousewheel.thresholdTime&&ar()-a<e.params.mousewheel.thresholdTime?!1:v.delta>=6&&ar()-a<60?!0:(v.direction<0?(!e.isEnd||e.params.loop)&&!e.animating&&(e.slideNext(),s("scroll",v.raw)):(!e.isBeginning||e.params.loop)&&!e.animating&&(e.slidePrev(),s("scroll",v.raw)),a=new i.Date().getTime(),!1)}function m(v){const x=e.params.mousewheel;if(v.direction<0){if(e.isEnd&&!e.params.loop&&x.releaseOnEdges)return!0}else if(e.isBeginning&&!e.params.loop&&x.releaseOnEdges)return!0;return!1}function y(v){let x=v,M=!0;if(!e.enabled||v.target.closest(`.${e.params.mousewheel.noMousewheelClass}`))return;const A=e.params.mousewheel;e.params.cssMode&&x.preventDefault();let L=e.el;e.params.mousewheel.eventsTarget!=="container"&&(L=document.querySelector(e.params.mousewheel.eventsTarget));const D=L&&L.contains(x.target);if(!e.mouseEntered&&!D&&!A.releaseOnEdges)return!0;x.originalEvent&&(x=x.originalEvent);let B=0;const q=e.rtlTranslate?-1:1,Y=c(x);if(A.forceToAxis)if(e.isHorizontal())if(Math.abs(Y.pixelX)>Math.abs(Y.pixelY))B=-Y.pixelX*q;else return!0;else if(Math.abs(Y.pixelY)>Math.abs(Y.pixelX))B=-Y.pixelY;else return!0;else B=Math.abs(Y.pixelX)>Math.abs(Y.pixelY)?-Y.pixelX*q:-Y.pixelY;if(B===0)return!0;A.invert&&(B=-B);let R=e.getTranslate()+B*A.sensitivity;if(R>=e.minTranslate()&&(R=e.minTranslate()),R<=e.maxTranslate()&&(R=e.maxTranslate()),M=e.params.loop?!0:!(R===e.minTranslate()||R===e.maxTranslate()),M&&e.params.nested&&x.stopPropagation(),!e.params.freeMode||!e.params.freeMode.enabled){const I={time:ar(),delta:Math.abs(B),direction:Math.sign(B),raw:v};u.length>=2&&u.shift();const N=u.length?u[u.length-1]:void 0;if(u.push(I),N?(I.direction!==N.direction||I.delta>N.delta||I.time>N.time+150)&&g(I):g(I),m(I))return!0}else{const I={time:ar(),delta:Math.abs(B),direction:Math.sign(B)},N=l&&I.time<l.time+500&&I.delta<=l.delta&&I.direction===l.direction;if(!N){l=void 0;let W=e.getTranslate()+B*A.sensitivity;const G=e.isBeginning,H=e.isEnd;if(W>=e.minTranslate()&&(W=e.minTranslate()),W<=e.maxTranslate()&&(W=e.maxTranslate()),e.setTransition(0),e.setTranslate(W),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses(),(!G&&e.isBeginning||!H&&e.isEnd)&&e.updateSlidesClasses(),e.params.loop&&e.loopFix({direction:I.direction<0?"next":"prev",byMousewheel:!0}),e.params.freeMode.sticky){clearTimeout(o),o=void 0,u.length>=15&&u.shift();const $=u.length?u[u.length-1]:void 0,ne=u[0];if(u.push(I),$&&(I.delta>$.delta||I.direction!==$.direction))u.splice(0);else if(u.length>=15&&I.time-ne.time<500&&ne.delta-I.delta>=1&&I.delta<=6){const ue=B>0?.8:.2;l=I,u.splice(0),o=Xi(()=>{e.destroyed||!e.params||e.slideToClosest(e.params.speed,!0,void 0,ue)},0)}o||(o=Xi(()=>{if(e.destroyed||!e.params)return;const ue=.5;l=I,u.splice(0),e.slideToClosest(e.params.speed,!0,void 0,ue)},500))}if(N||s("scroll",x),e.params.autoplay&&e.params.autoplayDisableOnInteraction&&e.autoplay.stop(),A.releaseOnEdges&&(W===e.minTranslate()||W===e.maxTranslate()))return!0}}return x.preventDefault?x.preventDefault():x.returnValue=!1,!1}function _(v){let x=e.el;e.params.mousewheel.eventsTarget!=="container"&&(x=document.querySelector(e.params.mousewheel.eventsTarget)),x[v]("mouseenter",f),x[v]("mouseleave",d),x[v]("wheel",y)}function S(){return e.params.cssMode?(e.wrapperEl.removeEventListener("wheel",y),!0):e.mousewheel.enabled?!1:(_("addEventListener"),e.mousewheel.enabled=!0,!0)}function E(){return e.params.cssMode?(e.wrapperEl.addEventListener(event,y),!0):e.mousewheel.enabled?(_("removeEventListener"),e.mousewheel.enabled=!1,!0):!1}n("init",()=>{!e.params.mousewheel.enabled&&e.params.cssMode&&E(),e.params.mousewheel.enabled&&S()}),n("destroy",()=>{e.params.cssMode&&S(),e.mousewheel.enabled&&E()}),Object.assign(e.mousewheel,{enable:S,disable:E})}function jg(t,e,r,n){return t.params.createElements&&Object.keys(n).forEach(s=>{if(!r[s]&&r.auto===!0){let i=wt(t.el,`.${n[s]}`)[0];i||(i=Jt("div",n[s]),i.className=n[s],t.el.append(i)),r[s]=i,e[s]=i}}),r}function tj(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;r({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null};function i(m){let y;return m&&typeof m=="string"&&e.isElement&&(y=e.el.querySelector(m),y)?y:(m&&(typeof m=="string"&&(y=[...document.querySelectorAll(m)]),e.params.uniqueNavElements&&typeof m=="string"&&y&&y.length>1&&e.el.querySelectorAll(m).length===1?y=e.el.querySelector(m):y&&y.length===1&&(y=y[0])),m&&!y?m:y)}function o(m,y){const _=e.params.navigation;m=$e(m),m.forEach(S=>{S&&(S.classList[y?"add":"remove"](..._.disabledClass.split(" ")),S.tagName==="BUTTON"&&(S.disabled=y),e.params.watchOverflow&&e.enabled&&S.classList[e.isLocked?"add":"remove"](_.lockClass))})}function a(){const{nextEl:m,prevEl:y}=e.navigation;if(e.params.loop){o(y,!1),o(m,!1);return}o(y,e.isBeginning&&!e.params.rewind),o(m,e.isEnd&&!e.params.rewind)}function l(m){m.preventDefault(),!(e.isBeginning&&!e.params.loop&&!e.params.rewind)&&(e.slidePrev(),s("navigationPrev"))}function u(m){m.preventDefault(),!(e.isEnd&&!e.params.loop&&!e.params.rewind)&&(e.slideNext(),s("navigationNext"))}function c(){const m=e.params.navigation;if(e.params.navigation=jg(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!(m.nextEl||m.prevEl))return;let y=i(m.nextEl),_=i(m.prevEl);Object.assign(e.navigation,{nextEl:y,prevEl:_}),y=$e(y),_=$e(_);const S=(E,v)=>{E&&E.addEventListener("click",v==="next"?u:l),!e.enabled&&E&&E.classList.add(...m.lockClass.split(" "))};y.forEach(E=>S(E,"next")),_.forEach(E=>S(E,"prev"))}function f(){let{nextEl:m,prevEl:y}=e.navigation;m=$e(m),y=$e(y);const _=(S,E)=>{S.removeEventListener("click",E==="next"?u:l),S.classList.remove(...e.params.navigation.disabledClass.split(" "))};m.forEach(S=>_(S,"next")),y.forEach(S=>_(S,"prev"))}n("init",()=>{e.params.navigation.enabled===!1?g():(c(),a())}),n("toEdge fromEdge lock unlock",()=>{a()}),n("destroy",()=>{f()}),n("enable disable",()=>{let{nextEl:m,prevEl:y}=e.navigation;if(m=$e(m),y=$e(y),e.enabled){a();return}[...m,...y].filter(_=>!!_).forEach(_=>_.classList.add(e.params.navigation.lockClass))}),n("click",(m,y)=>{let{nextEl:_,prevEl:S}=e.navigation;_=$e(_),S=$e(S);const E=y.target;let v=S.includes(E)||_.includes(E);if(e.isElement&&!v){const x=y.path||y.composedPath&&y.composedPath();x&&(v=x.find(M=>_.includes(M)||S.includes(M)))}if(e.params.navigation.hideOnClick&&!v){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===E||e.pagination.el.contains(E)))return;let x;_.length?x=_[0].classList.contains(e.params.navigation.hiddenClass):S.length&&(x=S[0].classList.contains(e.params.navigation.hiddenClass)),s(x===!0?"navigationShow":"navigationHide"),[..._,...S].filter(M=>!!M).forEach(M=>M.classList.toggle(e.params.navigation.hiddenClass))}});const d=()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),c(),a()},g=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),f()};Object.assign(e.navigation,{enable:d,disable:g,update:a,init:c,destroy:f})}function sn(t){return t===void 0&&(t=""),`.${t.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function rj(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i="swiper-pagination";r({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:E=>E,formatFractionTotal:E=>E,bulletClass:`${i}-bullet`,bulletActiveClass:`${i}-bullet-active`,modifierClass:`${i}-`,currentClass:`${i}-current`,totalClass:`${i}-total`,hiddenClass:`${i}-hidden`,progressbarFillClass:`${i}-progressbar-fill`,progressbarOppositeClass:`${i}-progressbar-opposite`,clickableClass:`${i}-clickable`,lockClass:`${i}-lock`,horizontalClass:`${i}-horizontal`,verticalClass:`${i}-vertical`,paginationDisabledClass:`${i}-disabled`}}),e.pagination={el:null,bullets:[]};let o,a=0;function l(){return!e.params.pagination.el||!e.pagination.el||Array.isArray(e.pagination.el)&&e.pagination.el.length===0}function u(E,v){const{bulletActiveClass:x}=e.params.pagination;E&&(E=E[`${v==="prev"?"previous":"next"}ElementSibling`],E&&(E.classList.add(`${x}-${v}`),E=E[`${v==="prev"?"previous":"next"}ElementSibling`],E&&E.classList.add(`${x}-${v}-${v}`)))}function c(E,v,x){if(E=E%x,v=v%x,v===E+1)return"next";if(v===E-1)return"previous"}function f(E){const v=E.target.closest(sn(e.params.pagination.bulletClass));if(!v)return;E.preventDefault();const x=ua(v)*e.params.slidesPerGroup;if(e.params.loop){if(e.realIndex===x)return;const M=c(e.realIndex,x,e.slides.length);M==="next"?e.slideNext():M==="previous"?e.slidePrev():e.slideToLoop(x)}else e.slideTo(x)}function d(){const E=e.rtl,v=e.params.pagination;if(l())return;let x=e.pagination.el;x=$e(x);let M,A;const L=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,D=e.params.loop?Math.ceil(L/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(A=e.previousRealIndex||0,M=e.params.slidesPerGroup>1?Math.floor(e.realIndex/e.params.slidesPerGroup):e.realIndex):typeof e.snapIndex<"u"?(M=e.snapIndex,A=e.previousSnapIndex):(A=e.previousIndex||0,M=e.activeIndex||0),v.type==="bullets"&&e.pagination.bullets&&e.pagination.bullets.length>0){const B=e.pagination.bullets;let q,Y,R;if(v.dynamicBullets&&(o=Kh(B[0],e.isHorizontal()?"width":"height"),x.forEach(I=>{I.style[e.isHorizontal()?"width":"height"]=`${o*(v.dynamicMainBullets+4)}px`}),v.dynamicMainBullets>1&&A!==void 0&&(a+=M-(A||0),a>v.dynamicMainBullets-1?a=v.dynamicMainBullets-1:a<0&&(a=0)),q=Math.max(M-a,0),Y=q+(Math.min(B.length,v.dynamicMainBullets)-1),R=(Y+q)/2),B.forEach(I=>{const N=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(W=>`${v.bulletActiveClass}${W}`)].map(W=>typeof W=="string"&&W.includes(" ")?W.split(" "):W).flat();I.classList.remove(...N)}),x.length>1)B.forEach(I=>{const N=ua(I);N===M?I.classList.add(...v.bulletActiveClass.split(" ")):e.isElement&&I.setAttribute("part","bullet"),v.dynamicBullets&&(N>=q&&N<=Y&&I.classList.add(...`${v.bulletActiveClass}-main`.split(" ")),N===q&&u(I,"prev"),N===Y&&u(I,"next"))});else{const I=B[M];if(I&&I.classList.add(...v.bulletActiveClass.split(" ")),e.isElement&&B.forEach((N,W)=>{N.setAttribute("part",W===M?"bullet-active":"bullet")}),v.dynamicBullets){const N=B[q],W=B[Y];for(let G=q;G<=Y;G+=1)B[G]&&B[G].classList.add(...`${v.bulletActiveClass}-main`.split(" "));u(N,"prev"),u(W,"next")}}if(v.dynamicBullets){const I=Math.min(B.length,v.dynamicMainBullets+4),N=(o*I-o)/2-R*o,W=E?"right":"left";B.forEach(G=>{G.style[e.isHorizontal()?W:"top"]=`${N}px`})}}x.forEach((B,q)=>{if(v.type==="fraction"&&(B.querySelectorAll(sn(v.currentClass)).forEach(Y=>{Y.textContent=v.formatFractionCurrent(M+1)}),B.querySelectorAll(sn(v.totalClass)).forEach(Y=>{Y.textContent=v.formatFractionTotal(D)})),v.type==="progressbar"){let Y;v.progressbarOpposite?Y=e.isHorizontal()?"vertical":"horizontal":Y=e.isHorizontal()?"horizontal":"vertical";const R=(M+1)/D;let I=1,N=1;Y==="horizontal"?I=R:N=R,B.querySelectorAll(sn(v.progressbarFillClass)).forEach(W=>{W.style.transform=`translate3d(0,0,0) scaleX(${I}) scaleY(${N})`,W.style.transitionDuration=`${e.params.speed}ms`})}v.type==="custom"&&v.renderCustom?(B.innerHTML=v.renderCustom(e,M+1,D),q===0&&s("paginationRender",B)):(q===0&&s("paginationRender",B),s("paginationUpdate",B)),e.params.watchOverflow&&e.enabled&&B.classList[e.isLocked?"add":"remove"](v.lockClass)})}function g(){const E=e.params.pagination;if(l())return;const v=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.grid&&e.params.grid.rows>1?e.slides.length/Math.ceil(e.params.grid.rows):e.slides.length;let x=e.pagination.el;x=$e(x);let M="";if(E.type==="bullets"){let A=e.params.loop?Math.ceil(v/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&A>v&&(A=v);for(let L=0;L<A;L+=1)E.renderBullet?M+=E.renderBullet.call(e,L,E.bulletClass):M+=`<${E.bulletElement} ${e.isElement?'part="bullet"':""} class="${E.bulletClass}"></${E.bulletElement}>`}E.type==="fraction"&&(E.renderFraction?M=E.renderFraction.call(e,E.currentClass,E.totalClass):M=`<span class="${E.currentClass}"></span> / <span class="${E.totalClass}"></span>`),E.type==="progressbar"&&(E.renderProgressbar?M=E.renderProgressbar.call(e,E.progressbarFillClass):M=`<span class="${E.progressbarFillClass}"></span>`),e.pagination.bullets=[],x.forEach(A=>{E.type!=="custom"&&(A.innerHTML=M||""),E.type==="bullets"&&e.pagination.bullets.push(...A.querySelectorAll(sn(E.bulletClass)))}),E.type!=="custom"&&s("paginationRender",x[0])}function m(){e.params.pagination=jg(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const E=e.params.pagination;if(!E.el)return;let v;typeof E.el=="string"&&e.isElement&&(v=e.el.querySelector(E.el)),!v&&typeof E.el=="string"&&(v=[...document.querySelectorAll(E.el)]),v||(v=E.el),!(!v||v.length===0)&&(e.params.uniqueNavElements&&typeof E.el=="string"&&Array.isArray(v)&&v.length>1&&(v=[...e.el.querySelectorAll(E.el)],v.length>1&&(v=v.filter(x=>zi(x,".swiper")[0]===e.el)[0])),Array.isArray(v)&&v.length===1&&(v=v[0]),Object.assign(e.pagination,{el:v}),v=$e(v),v.forEach(x=>{E.type==="bullets"&&E.clickable&&x.classList.add(...(E.clickableClass||"").split(" ")),x.classList.add(E.modifierClass+E.type),x.classList.add(e.isHorizontal()?E.horizontalClass:E.verticalClass),E.type==="bullets"&&E.dynamicBullets&&(x.classList.add(`${E.modifierClass}${E.type}-dynamic`),a=0,E.dynamicMainBullets<1&&(E.dynamicMainBullets=1)),E.type==="progressbar"&&E.progressbarOpposite&&x.classList.add(E.progressbarOppositeClass),E.clickable&&x.addEventListener("click",f),e.enabled||x.classList.add(E.lockClass)}))}function y(){const E=e.params.pagination;if(l())return;let v=e.pagination.el;v&&(v=$e(v),v.forEach(x=>{x.classList.remove(E.hiddenClass),x.classList.remove(E.modifierClass+E.type),x.classList.remove(e.isHorizontal()?E.horizontalClass:E.verticalClass),E.clickable&&(x.classList.remove(...(E.clickableClass||"").split(" ")),x.removeEventListener("click",f))})),e.pagination.bullets&&e.pagination.bullets.forEach(x=>x.classList.remove(...E.bulletActiveClass.split(" ")))}n("changeDirection",()=>{if(!e.pagination||!e.pagination.el)return;const E=e.params.pagination;let{el:v}=e.pagination;v=$e(v),v.forEach(x=>{x.classList.remove(E.horizontalClass,E.verticalClass),x.classList.add(e.isHorizontal()?E.horizontalClass:E.verticalClass)})}),n("init",()=>{e.params.pagination.enabled===!1?S():(m(),g(),d())}),n("activeIndexChange",()=>{typeof e.snapIndex>"u"&&d()}),n("snapIndexChange",()=>{d()}),n("snapGridLengthChange",()=>{g(),d()}),n("destroy",()=>{y()}),n("enable disable",()=>{let{el:E}=e.pagination;E&&(E=$e(E),E.forEach(v=>v.classList[e.enabled?"remove":"add"](e.params.pagination.lockClass)))}),n("lock unlock",()=>{d()}),n("click",(E,v)=>{const x=v.target,M=$e(e.pagination.el);if(e.params.pagination.el&&e.params.pagination.hideOnClick&&M&&M.length>0&&!x.classList.contains(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&x===e.navigation.nextEl||e.navigation.prevEl&&x===e.navigation.prevEl))return;const A=M[0].classList.contains(e.params.pagination.hiddenClass);s(A===!0?"paginationShow":"paginationHide"),M.forEach(L=>L.classList.toggle(e.params.pagination.hiddenClass))}});const _=()=>{e.el.classList.remove(e.params.pagination.paginationDisabledClass);let{el:E}=e.pagination;E&&(E=$e(E),E.forEach(v=>v.classList.remove(e.params.pagination.paginationDisabledClass))),m(),g(),d()},S=()=>{e.el.classList.add(e.params.pagination.paginationDisabledClass);let{el:E}=e.pagination;E&&(E=$e(E),E.forEach(v=>v.classList.add(e.params.pagination.paginationDisabledClass))),y()};Object.assign(e.pagination,{enable:_,disable:S,render:g,update:d,init:m,destroy:y})}function nj(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i=vt();let o=!1,a=null,l=null,u,c,f,d;r({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),e.scrollbar={el:null,dragEl:null};function g(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:R,rtlTranslate:I}=e,{dragEl:N,el:W}=R,G=e.params.scrollbar,H=e.params.loop?e.progressLoop:e.progress;let $=c,ne=(f-c)*H;I?(ne=-ne,ne>0?($=c-ne,ne=0):-ne+c>f&&($=f+ne)):ne<0?($=c+ne,ne=0):ne+c>f&&($=f-ne),e.isHorizontal()?(N.style.transform=`translate3d(${ne}px, 0, 0)`,N.style.width=`${$}px`):(N.style.transform=`translate3d(0px, ${ne}px, 0)`,N.style.height=`${$}px`),G.hide&&(clearTimeout(a),W.style.opacity=1,a=setTimeout(()=>{W.style.opacity=0,W.style.transitionDuration="400ms"},1e3))}function m(R){!e.params.scrollbar.el||!e.scrollbar.el||(e.scrollbar.dragEl.style.transitionDuration=`${R}ms`)}function y(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:R}=e,{dragEl:I,el:N}=R;I.style.width="",I.style.height="",f=e.isHorizontal()?N.offsetWidth:N.offsetHeight,d=e.size/(e.virtualSize+e.params.slidesOffsetBefore-(e.params.centeredSlides?e.snapGrid[0]:0)),e.params.scrollbar.dragSize==="auto"?c=f*d:c=parseInt(e.params.scrollbar.dragSize,10),e.isHorizontal()?I.style.width=`${c}px`:I.style.height=`${c}px`,d>=1?N.style.display="none":N.style.display="",e.params.scrollbar.hide&&(N.style.opacity=0),e.params.watchOverflow&&e.enabled&&R.el.classList[e.isLocked?"add":"remove"](e.params.scrollbar.lockClass)}function _(R){return e.isHorizontal()?R.clientX:R.clientY}function S(R){const{scrollbar:I,rtlTranslate:N}=e,{el:W}=I;let G;G=(_(R)-cu(W)[e.isHorizontal()?"left":"top"]-(u!==null?u:c/2))/(f-c),G=Math.max(Math.min(G,1),0),N&&(G=1-G);const H=e.minTranslate()+(e.maxTranslate()-e.minTranslate())*G;e.updateProgress(H),e.setTranslate(H),e.updateActiveIndex(),e.updateSlidesClasses()}function E(R){const I=e.params.scrollbar,{scrollbar:N,wrapperEl:W}=e,{el:G,dragEl:H}=N;o=!0,u=R.target===H?_(R)-R.target.getBoundingClientRect()[e.isHorizontal()?"left":"top"]:null,R.preventDefault(),R.stopPropagation(),W.style.transitionDuration="100ms",H.style.transitionDuration="100ms",S(R),clearTimeout(l),G.style.transitionDuration="0ms",I.hide&&(G.style.opacity=1),e.params.cssMode&&(e.wrapperEl.style["scroll-snap-type"]="none"),s("scrollbarDragStart",R)}function v(R){const{scrollbar:I,wrapperEl:N}=e,{el:W,dragEl:G}=I;o&&(R.preventDefault&&R.cancelable?R.preventDefault():R.returnValue=!1,S(R),N.style.transitionDuration="0ms",W.style.transitionDuration="0ms",G.style.transitionDuration="0ms",s("scrollbarDragMove",R))}function x(R){const I=e.params.scrollbar,{scrollbar:N,wrapperEl:W}=e,{el:G}=N;o&&(o=!1,e.params.cssMode&&(e.wrapperEl.style["scroll-snap-type"]="",W.style.transitionDuration=""),I.hide&&(clearTimeout(l),l=Xi(()=>{G.style.opacity=0,G.style.transitionDuration="400ms"},1e3)),s("scrollbarDragEnd",R),I.snapOnRelease&&e.slideToClosest())}function M(R){const{scrollbar:I,params:N}=e,W=I.el;if(!W)return;const G=W,H=N.passiveListeners?{passive:!1,capture:!1}:!1,$=N.passiveListeners?{passive:!0,capture:!1}:!1;if(!G)return;const ne=R==="on"?"addEventListener":"removeEventListener";G[ne]("pointerdown",E,H),i[ne]("pointermove",v,H),i[ne]("pointerup",x,$)}function A(){!e.params.scrollbar.el||!e.scrollbar.el||M("on")}function L(){!e.params.scrollbar.el||!e.scrollbar.el||M("off")}function D(){const{scrollbar:R,el:I}=e;e.params.scrollbar=jg(e,e.originalParams.scrollbar,e.params.scrollbar,{el:"swiper-scrollbar"});const N=e.params.scrollbar;if(!N.el)return;let W;if(typeof N.el=="string"&&e.isElement&&(W=e.el.querySelector(N.el)),!W&&typeof N.el=="string"){if(W=i.querySelectorAll(N.el),!W.length)return}else W||(W=N.el);e.params.uniqueNavElements&&typeof N.el=="string"&&W.length>1&&I.querySelectorAll(N.el).length===1&&(W=I.querySelector(N.el)),W.length>0&&(W=W[0]),W.classList.add(e.isHorizontal()?N.horizontalClass:N.verticalClass);let G;W&&(G=W.querySelector(sn(e.params.scrollbar.dragClass)),G||(G=Jt("div",e.params.scrollbar.dragClass),W.append(G))),Object.assign(R,{el:W,dragEl:G}),N.draggable&&A(),W&&W.classList[e.enabled?"remove":"add"](...Wn(e.params.scrollbar.lockClass))}function B(){const R=e.params.scrollbar,I=e.scrollbar.el;I&&I.classList.remove(...Wn(e.isHorizontal()?R.horizontalClass:R.verticalClass)),L()}n("changeDirection",()=>{if(!e.scrollbar||!e.scrollbar.el)return;const R=e.params.scrollbar;let{el:I}=e.scrollbar;I=$e(I),I.forEach(N=>{N.classList.remove(R.horizontalClass,R.verticalClass),N.classList.add(e.isHorizontal()?R.horizontalClass:R.verticalClass)})}),n("init",()=>{e.params.scrollbar.enabled===!1?Y():(D(),y(),g())}),n("update resize observerUpdate lock unlock changeDirection",()=>{y()}),n("setTranslate",()=>{g()}),n("setTransition",(R,I)=>{m(I)}),n("enable disable",()=>{const{el:R}=e.scrollbar;R&&R.classList[e.enabled?"remove":"add"](...Wn(e.params.scrollbar.lockClass))}),n("destroy",()=>{B()});const q=()=>{e.el.classList.remove(...Wn(e.params.scrollbar.scrollbarDisabledClass)),e.scrollbar.el&&e.scrollbar.el.classList.remove(...Wn(e.params.scrollbar.scrollbarDisabledClass)),D(),y(),g()},Y=()=>{e.el.classList.add(...Wn(e.params.scrollbar.scrollbarDisabledClass)),e.scrollbar.el&&e.scrollbar.el.classList.add(...Wn(e.params.scrollbar.scrollbarDisabledClass)),B()};Object.assign(e.scrollbar,{enable:q,disable:Y,updateSize:y,setTranslate:g,init:D,destroy:B})}function ij(t){let{swiper:e,extendParams:r,on:n}=t;r({parallax:{enabled:!1}});const s="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",i=(l,u)=>{const{rtl:c}=e,f=c?-1:1,d=l.getAttribute("data-swiper-parallax")||"0";let g=l.getAttribute("data-swiper-parallax-x"),m=l.getAttribute("data-swiper-parallax-y");const y=l.getAttribute("data-swiper-parallax-scale"),_=l.getAttribute("data-swiper-parallax-opacity"),S=l.getAttribute("data-swiper-parallax-rotate");if(g||m?(g=g||"0",m=m||"0"):e.isHorizontal()?(g=d,m="0"):(m=d,g="0"),g.indexOf("%")>=0?g=`${parseInt(g,10)*u*f}%`:g=`${g*u*f}px`,m.indexOf("%")>=0?m=`${parseInt(m,10)*u}%`:m=`${m*u}px`,typeof _<"u"&&_!==null){const v=_-(_-1)*(1-Math.abs(u));l.style.opacity=v}let E=`translate3d(${g}, ${m}, 0px)`;if(typeof y<"u"&&y!==null){const v=y-(y-1)*(1-Math.abs(u));E+=` scale(${v})`}if(S&&typeof S<"u"&&S!==null){const v=S*u*-1;E+=` rotate(${v}deg)`}l.style.transform=E},o=()=>{const{el:l,slides:u,progress:c,snapGrid:f,isElement:d}=e,g=wt(l,s);e.isElement&&g.push(...wt(e.hostEl,s)),g.forEach(m=>{i(m,c)}),u.forEach((m,y)=>{let _=m.progress;e.params.slidesPerGroup>1&&e.params.slidesPerView!=="auto"&&(_+=Math.ceil(y/2)-c*(f.length-1)),_=Math.min(Math.max(_,-1),1),m.querySelectorAll(`${s}, [data-swiper-parallax-rotate]`).forEach(S=>{i(S,_)})})},a=function(l){l===void 0&&(l=e.params.speed);const{el:u,hostEl:c}=e,f=[...u.querySelectorAll(s)];e.isElement&&f.push(...c.querySelectorAll(s)),f.forEach(d=>{let g=parseInt(d.getAttribute("data-swiper-parallax-duration"),10)||l;l===0&&(g=0),d.style.transitionDuration=`${g}ms`})};n("beforeInit",()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)}),n("init",()=>{e.params.parallax.enabled&&o()}),n("setTranslate",()=>{e.params.parallax.enabled&&o()}),n("setTransition",(l,u)=>{e.params.parallax.enabled&&a(u)})}function sj(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i=ot();r({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),e.zoom={enabled:!1};let o=1,a=!1,l,u;const c=[],f={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},d={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let m=1;Object.defineProperty(e.zoom,"scale",{get(){return m},set(re){if(m!==re){const k=f.imageEl,Q=f.slideEl;s("zoomChange",re,k,Q)}m=re}});function y(){if(c.length<2)return 1;const re=c[0].pageX,k=c[0].pageY,Q=c[1].pageX,de=c[1].pageY;return Math.sqrt((Q-re)**2+(de-k)**2)}function _(){const re=e.params.zoom,k=f.imageWrapEl.getAttribute("data-swiper-zoom")||re.maxRatio;if(re.limitToOriginalSize&&f.imageEl&&f.imageEl.naturalWidth){const Q=f.imageEl.naturalWidth/f.imageEl.offsetWidth;return Math.min(Q,k)}return k}function S(){if(c.length<2)return{x:null,y:null};const re=f.imageEl.getBoundingClientRect();return[(c[0].pageX+(c[1].pageX-c[0].pageX)/2-re.x-i.scrollX)/o,(c[0].pageY+(c[1].pageY-c[0].pageY)/2-re.y-i.scrollY)/o]}function E(){return e.isElement?"swiper-slide":`.${e.params.slideClass}`}function v(re){const k=E();return!!(re.target.matches(k)||e.slides.filter(Q=>Q.contains(re.target)).length>0)}function x(re){const k=`.${e.params.zoom.containerClass}`;return!!(re.target.matches(k)||[...e.hostEl.querySelectorAll(k)].filter(Q=>Q.contains(re.target)).length>0)}function M(re){if(re.pointerType==="mouse"&&c.splice(0,c.length),!v(re))return;const k=e.params.zoom;if(l=!1,u=!1,c.push(re),!(c.length<2)){if(l=!0,f.scaleStart=y(),!f.slideEl){f.slideEl=re.target.closest(`.${e.params.slideClass}, swiper-slide`),f.slideEl||(f.slideEl=e.slides[e.activeIndex]);let Q=f.slideEl.querySelector(`.${k.containerClass}`);if(Q&&(Q=Q.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),f.imageEl=Q,Q?f.imageWrapEl=zi(f.imageEl,`.${k.containerClass}`)[0]:f.imageWrapEl=void 0,!f.imageWrapEl){f.imageEl=void 0;return}f.maxRatio=_()}if(f.imageEl){const[Q,de]=S();f.originX=Q,f.originY=de,f.imageEl.style.transitionDuration="0ms"}a=!0}}function A(re){if(!v(re))return;const k=e.params.zoom,Q=e.zoom,de=c.findIndex(ge=>ge.pointerId===re.pointerId);de>=0&&(c[de]=re),!(c.length<2)&&(u=!0,f.scaleMove=y(),f.imageEl&&(Q.scale=f.scaleMove/f.scaleStart*o,Q.scale>f.maxRatio&&(Q.scale=f.maxRatio-1+(Q.scale-f.maxRatio+1)**.5),Q.scale<k.minRatio&&(Q.scale=k.minRatio+1-(k.minRatio-Q.scale+1)**.5),f.imageEl.style.transform=`translate3d(0,0,0) scale(${Q.scale})`))}function L(re){if(!v(re)||re.pointerType==="mouse"&&re.type==="pointerout")return;const k=e.params.zoom,Q=e.zoom,de=c.findIndex(ge=>ge.pointerId===re.pointerId);de>=0&&c.splice(de,1),!(!l||!u)&&(l=!1,u=!1,f.imageEl&&(Q.scale=Math.max(Math.min(Q.scale,f.maxRatio),k.minRatio),f.imageEl.style.transitionDuration=`${e.params.speed}ms`,f.imageEl.style.transform=`translate3d(0,0,0) scale(${Q.scale})`,o=Q.scale,a=!1,Q.scale>1&&f.slideEl?f.slideEl.classList.add(`${k.zoomedSlideClass}`):Q.scale<=1&&f.slideEl&&f.slideEl.classList.remove(`${k.zoomedSlideClass}`),Q.scale===1&&(f.originX=0,f.originY=0,f.slideEl=void 0)))}let D;function B(){e.touchEventsData.preventTouchMoveFromPointerMove=!1}function q(){clearTimeout(D),e.touchEventsData.preventTouchMoveFromPointerMove=!0,D=setTimeout(()=>{B()})}function Y(re){const k=e.device;if(!f.imageEl||d.isTouched)return;k.android&&re.cancelable&&re.preventDefault(),d.isTouched=!0;const Q=c.length>0?c[0]:re;d.touchesStart.x=Q.pageX,d.touchesStart.y=Q.pageY}function R(re){if(!v(re)||!x(re))return;const k=e.zoom;if(!f.imageEl||!d.isTouched||!f.slideEl)return;d.isMoved||(d.width=f.imageEl.offsetWidth||f.imageEl.clientWidth,d.height=f.imageEl.offsetHeight||f.imageEl.clientHeight,d.startX=Gh(f.imageWrapEl,"x")||0,d.startY=Gh(f.imageWrapEl,"y")||0,f.slideWidth=f.slideEl.offsetWidth,f.slideHeight=f.slideEl.offsetHeight,f.imageWrapEl.style.transitionDuration="0ms");const Q=d.width*k.scale,de=d.height*k.scale;if(d.minX=Math.min(f.slideWidth/2-Q/2,0),d.maxX=-d.minX,d.minY=Math.min(f.slideHeight/2-de/2,0),d.maxY=-d.minY,d.touchesCurrent.x=c.length>0?c[0].pageX:re.pageX,d.touchesCurrent.y=c.length>0?c[0].pageY:re.pageY,Math.max(Math.abs(d.touchesCurrent.x-d.touchesStart.x),Math.abs(d.touchesCurrent.y-d.touchesStart.y))>5&&(e.allowClick=!1),!d.isMoved&&!a){if(e.isHorizontal()&&(Math.floor(d.minX)===Math.floor(d.startX)&&d.touchesCurrent.x<d.touchesStart.x||Math.floor(d.maxX)===Math.floor(d.startX)&&d.touchesCurrent.x>d.touchesStart.x)){d.isTouched=!1,B();return}if(!e.isHorizontal()&&(Math.floor(d.minY)===Math.floor(d.startY)&&d.touchesCurrent.y<d.touchesStart.y||Math.floor(d.maxY)===Math.floor(d.startY)&&d.touchesCurrent.y>d.touchesStart.y)){d.isTouched=!1,B();return}}re.cancelable&&re.preventDefault(),re.stopPropagation(),q(),d.isMoved=!0;const me=(k.scale-o)/(f.maxRatio-e.params.zoom.minRatio),{originX:X,originY:K}=f;d.currentX=d.touchesCurrent.x-d.touchesStart.x+d.startX+me*(d.width-X*2),d.currentY=d.touchesCurrent.y-d.touchesStart.y+d.startY+me*(d.height-K*2),d.currentX<d.minX&&(d.currentX=d.minX+1-(d.minX-d.currentX+1)**.8),d.currentX>d.maxX&&(d.currentX=d.maxX-1+(d.currentX-d.maxX+1)**.8),d.currentY<d.minY&&(d.currentY=d.minY+1-(d.minY-d.currentY+1)**.8),d.currentY>d.maxY&&(d.currentY=d.maxY-1+(d.currentY-d.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=d.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=d.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(d.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(d.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(d.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(d.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=d.touchesCurrent.x,g.prevPositionY=d.touchesCurrent.y,g.prevTime=Date.now(),f.imageWrapEl.style.transform=`translate3d(${d.currentX}px, ${d.currentY}px,0)`}function I(){const re=e.zoom;if(!f.imageEl)return;if(!d.isTouched||!d.isMoved){d.isTouched=!1,d.isMoved=!1;return}d.isTouched=!1,d.isMoved=!1;let k=300,Q=300;const de=g.x*k,ge=d.currentX+de,me=g.y*Q,X=d.currentY+me;g.x!==0&&(k=Math.abs((ge-d.currentX)/g.x)),g.y!==0&&(Q=Math.abs((X-d.currentY)/g.y));const K=Math.max(k,Q);d.currentX=ge,d.currentY=X;const ie=d.width*re.scale,be=d.height*re.scale;d.minX=Math.min(f.slideWidth/2-ie/2,0),d.maxX=-d.minX,d.minY=Math.min(f.slideHeight/2-be/2,0),d.maxY=-d.minY,d.currentX=Math.max(Math.min(d.currentX,d.maxX),d.minX),d.currentY=Math.max(Math.min(d.currentY,d.maxY),d.minY),f.imageWrapEl.style.transitionDuration=`${K}ms`,f.imageWrapEl.style.transform=`translate3d(${d.currentX}px, ${d.currentY}px,0)`}function N(){const re=e.zoom;f.slideEl&&e.activeIndex!==e.slides.indexOf(f.slideEl)&&(f.imageEl&&(f.imageEl.style.transform="translate3d(0,0,0) scale(1)"),f.imageWrapEl&&(f.imageWrapEl.style.transform="translate3d(0,0,0)"),f.slideEl.classList.remove(`${e.params.zoom.zoomedSlideClass}`),re.scale=1,o=1,f.slideEl=void 0,f.imageEl=void 0,f.imageWrapEl=void 0,f.originX=0,f.originY=0)}function W(re){const k=e.zoom,Q=e.params.zoom;if(!f.slideEl){re&&re.target&&(f.slideEl=re.target.closest(`.${e.params.slideClass}, swiper-slide`)),f.slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?f.slideEl=wt(e.slidesEl,`.${e.params.slideActiveClass}`)[0]:f.slideEl=e.slides[e.activeIndex]);let se=f.slideEl.querySelector(`.${Q.containerClass}`);se&&(se=se.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),f.imageEl=se,se?f.imageWrapEl=zi(f.imageEl,`.${Q.containerClass}`)[0]:f.imageWrapEl=void 0}if(!f.imageEl||!f.imageWrapEl)return;e.params.cssMode&&(e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.touchAction="none"),f.slideEl.classList.add(`${Q.zoomedSlideClass}`);let de,ge,me,X,K,ie,be,he,ce,C,P,O,j,z,oe,fe,V,te;typeof d.touchesStart.x>"u"&&re?(de=re.pageX,ge=re.pageY):(de=d.touchesStart.x,ge=d.touchesStart.y);const F=typeof re=="number"?re:null;o===1&&F&&(de=void 0,ge=void 0,d.touchesStart.x=void 0,d.touchesStart.y=void 0);const J=_();k.scale=F||J,o=F||J,re&&!(o===1&&F)?(V=f.slideEl.offsetWidth,te=f.slideEl.offsetHeight,me=cu(f.slideEl).left+i.scrollX,X=cu(f.slideEl).top+i.scrollY,K=me+V/2-de,ie=X+te/2-ge,ce=f.imageEl.offsetWidth||f.imageEl.clientWidth,C=f.imageEl.offsetHeight||f.imageEl.clientHeight,P=ce*k.scale,O=C*k.scale,j=Math.min(V/2-P/2,0),z=Math.min(te/2-O/2,0),oe=-j,fe=-z,be=K*k.scale,he=ie*k.scale,be<j&&(be=j),be>oe&&(be=oe),he<z&&(he=z),he>fe&&(he=fe)):(be=0,he=0),F&&k.scale===1&&(f.originX=0,f.originY=0),f.imageWrapEl.style.transitionDuration="300ms",f.imageWrapEl.style.transform=`translate3d(${be}px, ${he}px,0)`,f.imageEl.style.transitionDuration="300ms",f.imageEl.style.transform=`translate3d(0,0,0) scale(${k.scale})`}function G(){const re=e.zoom,k=e.params.zoom;if(!f.slideEl){e.params.virtual&&e.params.virtual.enabled&&e.virtual?f.slideEl=wt(e.slidesEl,`.${e.params.slideActiveClass}`)[0]:f.slideEl=e.slides[e.activeIndex];let Q=f.slideEl.querySelector(`.${k.containerClass}`);Q&&(Q=Q.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),f.imageEl=Q,Q?f.imageWrapEl=zi(f.imageEl,`.${k.containerClass}`)[0]:f.imageWrapEl=void 0}!f.imageEl||!f.imageWrapEl||(e.params.cssMode&&(e.wrapperEl.style.overflow="",e.wrapperEl.style.touchAction=""),re.scale=1,o=1,d.touchesStart.x=void 0,d.touchesStart.y=void 0,f.imageWrapEl.style.transitionDuration="300ms",f.imageWrapEl.style.transform="translate3d(0,0,0)",f.imageEl.style.transitionDuration="300ms",f.imageEl.style.transform="translate3d(0,0,0) scale(1)",f.slideEl.classList.remove(`${k.zoomedSlideClass}`),f.slideEl=void 0,f.originX=0,f.originY=0)}function H(re){const k=e.zoom;k.scale&&k.scale!==1?G():W(re)}function $(){const re=e.params.passiveListeners?{passive:!0,capture:!1}:!1,k=e.params.passiveListeners?{passive:!1,capture:!0}:!0;return{passiveListener:re,activeListenerWithCapture:k}}function ne(){const re=e.zoom;if(re.enabled)return;re.enabled=!0;const{passiveListener:k,activeListenerWithCapture:Q}=$();e.wrapperEl.addEventListener("pointerdown",M,k),e.wrapperEl.addEventListener("pointermove",A,Q),["pointerup","pointercancel","pointerout"].forEach(de=>{e.wrapperEl.addEventListener(de,L,k)}),e.wrapperEl.addEventListener("pointermove",R,Q)}function ue(){const re=e.zoom;if(!re.enabled)return;re.enabled=!1;const{passiveListener:k,activeListenerWithCapture:Q}=$();e.wrapperEl.removeEventListener("pointerdown",M,k),e.wrapperEl.removeEventListener("pointermove",A,Q),["pointerup","pointercancel","pointerout"].forEach(de=>{e.wrapperEl.removeEventListener(de,L,k)}),e.wrapperEl.removeEventListener("pointermove",R,Q)}n("init",()=>{e.params.zoom.enabled&&ne()}),n("destroy",()=>{ue()}),n("touchStart",(re,k)=>{e.zoom.enabled&&Y(k)}),n("touchEnd",(re,k)=>{e.zoom.enabled&&I()}),n("doubleTap",(re,k)=>{!e.animating&&e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&H(k)}),n("transitionEnd",()=>{e.zoom.enabled&&e.params.zoom.enabled&&N()}),n("slideChange",()=>{e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&N()}),Object.assign(e.zoom,{enable:ne,disable:ue,in:W,out:G,toggle:H})}function oj(t){let{swiper:e,extendParams:r,on:n}=t;r({controller:{control:void 0,inverse:!1,by:"slide"}}),e.controller={control:void 0};function s(u,c){const f=function(){let y,_,S;return(E,v)=>{for(_=-1,y=E.length;y-_>1;)S=y+_>>1,E[S]<=v?_=S:y=S;return y}}();this.x=u,this.y=c,this.lastIndex=u.length-1;let d,g;return this.interpolate=function(y){return y?(g=f(this.x,y),d=g-1,(y-this.x[d])*(this.y[g]-this.y[d])/(this.x[g]-this.x[d])+this.y[d]):0},this}function i(u){e.controller.spline=e.params.loop?new s(e.slidesGrid,u.slidesGrid):new s(e.snapGrid,u.snapGrid)}function o(u,c){const f=e.controller.control;let d,g;const m=e.constructor;function y(_){if(_.destroyed)return;const S=e.rtlTranslate?-e.translate:e.translate;e.params.controller.by==="slide"&&(i(_),g=-e.controller.spline.interpolate(-S)),(!g||e.params.controller.by==="container")&&(d=(_.maxTranslate()-_.minTranslate())/(e.maxTranslate()-e.minTranslate()),(Number.isNaN(d)||!Number.isFinite(d))&&(d=1),g=(S-e.minTranslate())*d+_.minTranslate()),e.params.controller.inverse&&(g=_.maxTranslate()-g),_.updateProgress(g),_.setTranslate(g,e),_.updateActiveIndex(),_.updateSlidesClasses()}if(Array.isArray(f))for(let _=0;_<f.length;_+=1)f[_]!==c&&f[_]instanceof m&&y(f[_]);else f instanceof m&&c!==f&&y(f)}function a(u,c){const f=e.constructor,d=e.controller.control;let g;function m(y){y.destroyed||(y.setTransition(u,e),u!==0&&(y.transitionStart(),y.params.autoHeight&&Xi(()=>{y.updateAutoHeight()}),Xo(y.wrapperEl,()=>{d&&y.transitionEnd()})))}if(Array.isArray(d))for(g=0;g<d.length;g+=1)d[g]!==c&&d[g]instanceof f&&m(d[g]);else d instanceof f&&c!==d&&m(d)}function l(){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)}n("beforeInit",()=>{if(typeof window<"u"&&(typeof e.params.controller.control=="string"||e.params.controller.control instanceof HTMLElement)){(typeof e.params.controller.control=="string"?[...document.querySelectorAll(e.params.controller.control)]:[e.params.controller.control]).forEach(c=>{if(e.controller.control||(e.controller.control=[]),c&&c.swiper)e.controller.control.push(c.swiper);else if(c){const f=`${e.params.eventsPrefix}init`,d=g=>{e.controller.control.push(g.detail[0]),e.update(),c.removeEventListener(f,d)};c.addEventListener(f,d)}});return}e.controller.control=e.params.controller.control}),n("update",()=>{l()}),n("resize",()=>{l()}),n("observerUpdate",()=>{l()}),n("setTranslate",(u,c,f)=>{!e.controller.control||e.controller.control.destroyed||e.controller.setTranslate(c,f)}),n("setTransition",(u,c,f)=>{!e.controller.control||e.controller.control.destroyed||e.controller.setTransition(c,f)}),Object.assign(e.controller,{setTranslate:o,setTransition:a})}function aj(t){let{swiper:e,extendParams:r,on:n}=t;r({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,containerRole:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null,scrollOnFocus:!0}}),e.a11y={clicked:!1};let s=null,i,o,a=new Date().getTime();function l(H){const $=s;$.length!==0&&($.innerHTML="",$.innerHTML=H)}function u(H){const $=()=>Math.round(16*Math.random()).toString(16);return"x".repeat(H).replace(/x/g,$)}function c(H){H=$e(H),H.forEach($=>{$.setAttribute("tabIndex","0")})}function f(H){H=$e(H),H.forEach($=>{$.setAttribute("tabIndex","-1")})}function d(H,$){H=$e(H),H.forEach(ne=>{ne.setAttribute("role",$)})}function g(H,$){H=$e(H),H.forEach(ne=>{ne.setAttribute("aria-roledescription",$)})}function m(H,$){H=$e(H),H.forEach(ne=>{ne.setAttribute("aria-controls",$)})}function y(H,$){H=$e(H),H.forEach(ne=>{ne.setAttribute("aria-label",$)})}function _(H,$){H=$e(H),H.forEach(ne=>{ne.setAttribute("id",$)})}function S(H,$){H=$e(H),H.forEach(ne=>{ne.setAttribute("aria-live",$)})}function E(H){H=$e(H),H.forEach($=>{$.setAttribute("aria-disabled",!0)})}function v(H){H=$e(H),H.forEach($=>{$.setAttribute("aria-disabled",!1)})}function x(H){if(H.keyCode!==13&&H.keyCode!==32)return;const $=e.params.a11y,ne=H.target;if(!(e.pagination&&e.pagination.el&&(ne===e.pagination.el||e.pagination.el.contains(H.target))&&!H.target.matches(sn(e.params.pagination.bulletClass)))){if(e.navigation&&e.navigation.prevEl&&e.navigation.nextEl){const ue=$e(e.navigation.prevEl);$e(e.navigation.nextEl).includes(ne)&&(e.isEnd&&!e.params.loop||e.slideNext(),e.isEnd?l($.lastSlideMessage):l($.nextSlideMessage)),ue.includes(ne)&&(e.isBeginning&&!e.params.loop||e.slidePrev(),e.isBeginning?l($.firstSlideMessage):l($.prevSlideMessage))}e.pagination&&ne.matches(sn(e.params.pagination.bulletClass))&&ne.click()}}function M(){if(e.params.loop||e.params.rewind||!e.navigation)return;const{nextEl:H,prevEl:$}=e.navigation;$&&(e.isBeginning?(E($),f($)):(v($),c($))),H&&(e.isEnd?(E(H),f(H)):(v(H),c(H)))}function A(){return e.pagination&&e.pagination.bullets&&e.pagination.bullets.length}function L(){return A()&&e.params.pagination.clickable}function D(){const H=e.params.a11y;A()&&e.pagination.bullets.forEach($=>{e.params.pagination.clickable&&(c($),e.params.pagination.renderBullet||(d($,"button"),y($,H.paginationBulletMessage.replace(/\{\{index\}\}/,ua($)+1)))),$.matches(sn(e.params.pagination.bulletActiveClass))?$.setAttribute("aria-current","true"):$.removeAttribute("aria-current")})}const B=(H,$,ne)=>{c(H),H.tagName!=="BUTTON"&&(d(H,"button"),H.addEventListener("keydown",x)),y(H,ne),m(H,$)},q=H=>{o&&o!==H.target&&!o.contains(H.target)&&(i=!0),e.a11y.clicked=!0},Y=()=>{i=!1,requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.destroyed||(e.a11y.clicked=!1)})})},R=H=>{a=new Date().getTime()},I=H=>{if(e.a11y.clicked||!e.params.a11y.scrollOnFocus||new Date().getTime()-a<100)return;const $=H.target.closest(`.${e.params.slideClass}, swiper-slide`);if(!$||!e.slides.includes($))return;o=$;const ne=e.slides.indexOf($)===e.activeIndex,ue=e.params.watchSlidesProgress&&e.visibleSlides&&e.visibleSlides.includes($);ne||ue||H.sourceCapabilities&&H.sourceCapabilities.firesTouchEvents||(e.isHorizontal()?e.el.scrollLeft=0:e.el.scrollTop=0,requestAnimationFrame(()=>{i||(e.params.loop?e.slideToLoop(parseInt($.getAttribute("data-swiper-slide-index")),0):e.slideTo(e.slides.indexOf($),0),i=!1)}))},N=()=>{const H=e.params.a11y;H.itemRoleDescriptionMessage&&g(e.slides,H.itemRoleDescriptionMessage),H.slideRole&&d(e.slides,H.slideRole);const $=e.slides.length;H.slideLabelMessage&&e.slides.forEach((ne,ue)=>{const re=e.params.loop?parseInt(ne.getAttribute("data-swiper-slide-index"),10):ue,k=H.slideLabelMessage.replace(/\{\{index\}\}/,re+1).replace(/\{\{slidesLength\}\}/,$);y(ne,k)})},W=()=>{const H=e.params.a11y;e.el.append(s);const $=e.el;H.containerRoleDescriptionMessage&&g($,H.containerRoleDescriptionMessage),H.containerMessage&&y($,H.containerMessage),H.containerRole&&d($,H.containerRole);const ne=e.wrapperEl,ue=H.id||ne.getAttribute("id")||`swiper-wrapper-${u(16)}`,re=e.params.autoplay&&e.params.autoplay.enabled?"off":"polite";_(ne,ue),S(ne,re),N();let{nextEl:k,prevEl:Q}=e.navigation?e.navigation:{};k=$e(k),Q=$e(Q),k&&k.forEach(ge=>B(ge,ue,H.nextSlideMessage)),Q&&Q.forEach(ge=>B(ge,ue,H.prevSlideMessage)),L()&&$e(e.pagination.el).forEach(me=>{me.addEventListener("keydown",x)}),vt().addEventListener("visibilitychange",R),e.el.addEventListener("focus",I,!0),e.el.addEventListener("focus",I,!0),e.el.addEventListener("pointerdown",q,!0),e.el.addEventListener("pointerup",Y,!0)};function G(){s&&s.remove();let{nextEl:H,prevEl:$}=e.navigation?e.navigation:{};H=$e(H),$=$e($),H&&H.forEach(ue=>ue.removeEventListener("keydown",x)),$&&$.forEach(ue=>ue.removeEventListener("keydown",x)),L()&&$e(e.pagination.el).forEach(re=>{re.removeEventListener("keydown",x)}),vt().removeEventListener("visibilitychange",R),e.el&&typeof e.el!="string"&&(e.el.removeEventListener("focus",I,!0),e.el.removeEventListener("pointerdown",q,!0),e.el.removeEventListener("pointerup",Y,!0))}n("beforeInit",()=>{s=Jt("span",e.params.a11y.notificationClass),s.setAttribute("aria-live","assertive"),s.setAttribute("aria-atomic","true")}),n("afterInit",()=>{e.params.a11y.enabled&&W()}),n("slidesLengthChange snapGridLengthChange slidesGridLengthChange",()=>{e.params.a11y.enabled&&N()}),n("fromEdge toEdge afterInit lock unlock",()=>{e.params.a11y.enabled&&M()}),n("paginationUpdate",()=>{e.params.a11y.enabled&&D()}),n("destroy",()=>{e.params.a11y.enabled&&G()})}function lj(t){let{swiper:e,extendParams:r,on:n}=t;r({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let s=!1,i={};const o=g=>g.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),a=g=>{const m=ot();let y;g?y=new URL(g):y=m.location;const _=y.pathname.slice(1).split("/").filter(x=>x!==""),S=_.length,E=_[S-2],v=_[S-1];return{key:E,value:v}},l=(g,m)=>{const y=ot();if(!s||!e.params.history.enabled)return;let _;e.params.url?_=new URL(e.params.url):_=y.location;const S=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${m}"]`):e.slides[m];let E=o(S.getAttribute("data-history"));if(e.params.history.root.length>0){let x=e.params.history.root;x[x.length-1]==="/"&&(x=x.slice(0,x.length-1)),E=`${x}/${g?`${g}/`:""}${E}`}else _.pathname.includes(g)||(E=`${g?`${g}/`:""}${E}`);e.params.history.keepQuery&&(E+=_.search);const v=y.history.state;v&&v.value===E||(e.params.history.replaceState?y.history.replaceState({value:E},null,E):y.history.pushState({value:E},null,E))},u=(g,m,y)=>{if(m)for(let _=0,S=e.slides.length;_<S;_+=1){const E=e.slides[_];if(o(E.getAttribute("data-history"))===m){const x=e.getSlideIndex(E);e.slideTo(x,g,y)}}else e.slideTo(0,g,y)},c=()=>{i=a(e.params.url),u(e.params.speed,i.value,!1)},f=()=>{const g=ot();if(e.params.history){if(!g.history||!g.history.pushState){e.params.history.enabled=!1,e.params.hashNavigation.enabled=!0;return}if(s=!0,i=a(e.params.url),!i.key&&!i.value){e.params.history.replaceState||g.addEventListener("popstate",c);return}u(0,i.value,e.params.runCallbacksOnInit),e.params.history.replaceState||g.addEventListener("popstate",c)}},d=()=>{const g=ot();e.params.history.replaceState||g.removeEventListener("popstate",c)};n("init",()=>{e.params.history.enabled&&f()}),n("destroy",()=>{e.params.history.enabled&&d()}),n("transitionEnd _freeModeNoMomentumRelease",()=>{s&&l(e.params.history.key,e.activeIndex)}),n("slideChange",()=>{s&&e.params.cssMode&&l(e.params.history.key,e.activeIndex)})}function uj(t){let{swiper:e,extendParams:r,emit:n,on:s}=t,i=!1;const o=vt(),a=ot();r({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(d,g){if(e.virtual&&e.params.virtual.enabled){const m=e.slides.filter(_=>_.getAttribute("data-hash")===g)[0];return m?parseInt(m.getAttribute("data-swiper-slide-index"),10):0}return e.getSlideIndex(wt(e.slidesEl,`.${e.params.slideClass}[data-hash="${g}"], swiper-slide[data-hash="${g}"]`)[0])}}});const l=()=>{n("hashChange");const d=o.location.hash.replace("#",""),g=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],m=g?g.getAttribute("data-hash"):"";if(d!==m){const y=e.params.hashNavigation.getSlideIndex(e,d);if(typeof y>"u"||Number.isNaN(y))return;e.slideTo(y)}},u=()=>{if(!i||!e.params.hashNavigation.enabled)return;const d=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],g=d?d.getAttribute("data-hash")||d.getAttribute("data-history"):"";e.params.hashNavigation.replaceState&&a.history&&a.history.replaceState?(a.history.replaceState(null,null,`#${g}`||""),n("hashSet")):(o.location.hash=g||"",n("hashSet"))},c=()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;i=!0;const d=o.location.hash.replace("#","");if(d){const m=e.params.hashNavigation.getSlideIndex(e,d);e.slideTo(m||0,0,e.params.runCallbacksOnInit,!0)}e.params.hashNavigation.watchState&&a.addEventListener("hashchange",l)},f=()=>{e.params.hashNavigation.watchState&&a.removeEventListener("hashchange",l)};s("init",()=>{e.params.hashNavigation.enabled&&c()}),s("destroy",()=>{e.params.hashNavigation.enabled&&f()}),s("transitionEnd _freeModeNoMomentumRelease",()=>{i&&u()}),s("slideChange",()=>{i&&e.params.cssMode&&u()})}function cj(t){let{swiper:e,extendParams:r,on:n,emit:s,params:i}=t;e.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let o,a,l=i&&i.autoplay?i.autoplay.delay:3e3,u=i&&i.autoplay?i.autoplay.delay:3e3,c,f=new Date().getTime(),d,g,m,y,_,S,E;function v($){!e||e.destroyed||!e.wrapperEl||$.target===e.wrapperEl&&(e.wrapperEl.removeEventListener("transitionend",v),!(E||$.detail&&$.detail.bySwiperTouchMove)&&q())}const x=()=>{if(e.destroyed||!e.autoplay.running)return;e.autoplay.paused?d=!0:d&&(u=c,d=!1);const $=e.autoplay.paused?c:f+u-new Date().getTime();e.autoplay.timeLeft=$,s("autoplayTimeLeft",$,$/l),a=requestAnimationFrame(()=>{x()})},M=()=>{let $;return e.virtual&&e.params.virtual.enabled?$=e.slides.filter(ue=>ue.classList.contains("swiper-slide-active"))[0]:$=e.slides[e.activeIndex],$?parseInt($.getAttribute("data-swiper-autoplay"),10):void 0},A=$=>{if(e.destroyed||!e.autoplay.running)return;cancelAnimationFrame(a),x();let ne=typeof $>"u"?e.params.autoplay.delay:$;l=e.params.autoplay.delay,u=e.params.autoplay.delay;const ue=M();!Number.isNaN(ue)&&ue>0&&typeof $>"u"&&(ne=ue,l=ue,u=ue),c=ne;const re=e.params.speed,k=()=>{!e||e.destroyed||(e.params.autoplay.reverseDirection?!e.isBeginning||e.params.loop||e.params.rewind?(e.slidePrev(re,!0,!0),s("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(e.slides.length-1,re,!0,!0),s("autoplay")):!e.isEnd||e.params.loop||e.params.rewind?(e.slideNext(re,!0,!0),s("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(0,re,!0,!0),s("autoplay")),e.params.cssMode&&(f=new Date().getTime(),requestAnimationFrame(()=>{A()})))};return ne>0?(clearTimeout(o),o=setTimeout(()=>{k()},ne)):requestAnimationFrame(()=>{k()}),ne},L=()=>{f=new Date().getTime(),e.autoplay.running=!0,A(),s("autoplayStart")},D=()=>{e.autoplay.running=!1,clearTimeout(o),cancelAnimationFrame(a),s("autoplayStop")},B=($,ne)=>{if(e.destroyed||!e.autoplay.running)return;clearTimeout(o),$||(S=!0);const ue=()=>{s("autoplayPause"),e.params.autoplay.waitForTransition?e.wrapperEl.addEventListener("transitionend",v):q()};if(e.autoplay.paused=!0,ne){_&&(c=e.params.autoplay.delay),_=!1,ue();return}c=(c||e.params.autoplay.delay)-(new Date().getTime()-f),!(e.isEnd&&c<0&&!e.params.loop)&&(c<0&&(c=0),ue())},q=()=>{e.isEnd&&c<0&&!e.params.loop||e.destroyed||!e.autoplay.running||(f=new Date().getTime(),S?(S=!1,A(c)):A(),e.autoplay.paused=!1,s("autoplayResume"))},Y=()=>{if(e.destroyed||!e.autoplay.running)return;const $=vt();$.visibilityState==="hidden"&&(S=!0,B(!0)),$.visibilityState==="visible"&&q()},R=$=>{$.pointerType==="mouse"&&(S=!0,E=!0,!(e.animating||e.autoplay.paused)&&B(!0))},I=$=>{$.pointerType==="mouse"&&(E=!1,e.autoplay.paused&&q())},N=()=>{e.params.autoplay.pauseOnMouseEnter&&(e.el.addEventListener("pointerenter",R),e.el.addEventListener("pointerleave",I))},W=()=>{e.el&&typeof e.el!="string"&&(e.el.removeEventListener("pointerenter",R),e.el.removeEventListener("pointerleave",I))},G=()=>{vt().addEventListener("visibilitychange",Y)},H=()=>{vt().removeEventListener("visibilitychange",Y)};n("init",()=>{e.params.autoplay.enabled&&(N(),G(),L())}),n("destroy",()=>{W(),H(),e.autoplay.running&&D()}),n("_freeModeStaticRelease",()=>{(m||S)&&q()}),n("_freeModeNoMomentumRelease",()=>{e.params.autoplay.disableOnInteraction?D():B(!0,!0)}),n("beforeTransitionStart",($,ne,ue)=>{e.destroyed||!e.autoplay.running||(ue||!e.params.autoplay.disableOnInteraction?B(!0,!0):D())}),n("sliderFirstMove",()=>{if(!(e.destroyed||!e.autoplay.running)){if(e.params.autoplay.disableOnInteraction){D();return}g=!0,m=!1,S=!1,y=setTimeout(()=>{S=!0,m=!0,B(!0)},200)}}),n("touchEnd",()=>{if(!(e.destroyed||!e.autoplay.running||!g)){if(clearTimeout(y),clearTimeout(o),e.params.autoplay.disableOnInteraction){m=!1,g=!1;return}m&&e.params.cssMode&&q(),m=!1,g=!1}}),n("slideChange",()=>{e.destroyed||!e.autoplay.running||(_=!0)}),Object.assign(e.autoplay,{start:L,stop:D,pause:B,resume:q})}function fj(t){let{swiper:e,extendParams:r,on:n}=t;r({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let s=!1,i=!1;e.thumbs={swiper:null};function o(){const u=e.thumbs.swiper;if(!u||u.destroyed)return;const c=u.clickedIndex,f=u.clickedSlide;if(f&&f.classList.contains(e.params.thumbs.slideThumbActiveClass)||typeof c>"u"||c===null)return;let d;u.params.loop?d=parseInt(u.clickedSlide.getAttribute("data-swiper-slide-index"),10):d=c,e.params.loop?e.slideToLoop(d):e.slideTo(d)}function a(){const{thumbs:u}=e.params;if(s)return!1;s=!0;const c=e.constructor;if(u.swiper instanceof c)e.thumbs.swiper=u.swiper,Object.assign(e.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(e.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper.update();else if(Fo(u.swiper)){const f=Object.assign({},u.swiper);Object.assign(f,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper=new c(f),i=!0}return e.thumbs.swiper.el.classList.add(e.params.thumbs.thumbsContainerClass),e.thumbs.swiper.on("tap",o),!0}function l(u){const c=e.thumbs.swiper;if(!c||c.destroyed)return;const f=c.params.slidesPerView==="auto"?c.slidesPerViewDynamic():c.params.slidesPerView;let d=1;const g=e.params.thumbs.slideThumbActiveClass;if(e.params.slidesPerView>1&&!e.params.centeredSlides&&(d=e.params.slidesPerView),e.params.thumbs.multipleActiveThumbs||(d=1),d=Math.floor(d),c.slides.forEach(_=>_.classList.remove(g)),c.params.loop||c.params.virtual&&c.params.virtual.enabled)for(let _=0;_<d;_+=1)wt(c.slidesEl,`[data-swiper-slide-index="${e.realIndex+_}"]`).forEach(S=>{S.classList.add(g)});else for(let _=0;_<d;_+=1)c.slides[e.realIndex+_]&&c.slides[e.realIndex+_].classList.add(g);const m=e.params.thumbs.autoScrollOffset,y=m&&!c.params.loop;if(e.realIndex!==c.realIndex||y){const _=c.activeIndex;let S,E;if(c.params.loop){const v=c.slides.filter(x=>x.getAttribute("data-swiper-slide-index")===`${e.realIndex}`)[0];S=c.slides.indexOf(v),E=e.activeIndex>e.previousIndex?"next":"prev"}else S=e.realIndex,E=S>e.previousIndex?"next":"prev";y&&(S+=E==="next"?m:-1*m),c.visibleSlidesIndexes&&c.visibleSlidesIndexes.indexOf(S)<0&&(c.params.centeredSlides?S>_?S=S-Math.floor(f/2)+1:S=S+Math.floor(f/2)-1:S>_&&c.params.slidesPerGroup,c.slideTo(S,u?0:void 0))}}n("beforeInit",()=>{const{thumbs:u}=e.params;if(!(!u||!u.swiper))if(typeof u.swiper=="string"||u.swiper instanceof HTMLElement){const c=vt(),f=()=>{const g=typeof u.swiper=="string"?c.querySelector(u.swiper):u.swiper;if(g&&g.swiper)u.swiper=g.swiper,a(),l(!0);else if(g){const m=`${e.params.eventsPrefix}init`,y=_=>{u.swiper=_.detail[0],g.removeEventListener(m,y),a(),l(!0),u.swiper.update(),e.update()};g.addEventListener(m,y)}return g},d=()=>{if(e.destroyed)return;f()||requestAnimationFrame(d)};requestAnimationFrame(d)}else a(),l(!0)}),n("slideChange update resize observerUpdate",()=>{l()}),n("setTransition",(u,c)=>{const f=e.thumbs.swiper;!f||f.destroyed||f.setTransition(c)}),n("beforeDestroy",()=>{const u=e.thumbs.swiper;!u||u.destroyed||i&&u.destroy()}),Object.assign(e.thumbs,{init:a,update:l})}function dj(t){let{swiper:e,extendParams:r,emit:n,once:s}=t;r({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}});function i(){if(e.params.cssMode)return;const l=e.getTranslate();e.setTranslate(l),e.setTransition(0),e.touchEventsData.velocities.length=0,e.freeMode.onTouchEnd({currentPos:e.rtl?e.translate:-e.translate})}function o(){if(e.params.cssMode)return;const{touchEventsData:l,touches:u}=e;l.velocities.length===0&&l.velocities.push({position:u[e.isHorizontal()?"startX":"startY"],time:l.touchStartTime}),l.velocities.push({position:u[e.isHorizontal()?"currentX":"currentY"],time:ar()})}function a(l){let{currentPos:u}=l;if(e.params.cssMode)return;const{params:c,wrapperEl:f,rtlTranslate:d,snapGrid:g,touchEventsData:m}=e,_=ar()-m.touchStartTime;if(u<-e.minTranslate()){e.slideTo(e.activeIndex);return}if(u>-e.maxTranslate()){e.slides.length<g.length?e.slideTo(g.length-1):e.slideTo(e.slides.length-1);return}if(c.freeMode.momentum){if(m.velocities.length>1){const D=m.velocities.pop(),B=m.velocities.pop(),q=D.position-B.position,Y=D.time-B.time;e.velocity=q/Y,e.velocity/=2,Math.abs(e.velocity)<c.freeMode.minimumVelocity&&(e.velocity=0),(Y>150||ar()-D.time>300)&&(e.velocity=0)}else e.velocity=0;e.velocity*=c.freeMode.momentumVelocityRatio,m.velocities.length=0;let S=1e3*c.freeMode.momentumRatio;const E=e.velocity*S;let v=e.translate+E;d&&(v=-v);let x=!1,M;const A=Math.abs(e.velocity)*20*c.freeMode.momentumBounceRatio;let L;if(v<e.maxTranslate())c.freeMode.momentumBounce?(v+e.maxTranslate()<-A&&(v=e.maxTranslate()-A),M=e.maxTranslate(),x=!0,m.allowMomentumBounce=!0):v=e.maxTranslate(),c.loop&&c.centeredSlides&&(L=!0);else if(v>e.minTranslate())c.freeMode.momentumBounce?(v-e.minTranslate()>A&&(v=e.minTranslate()+A),M=e.minTranslate(),x=!0,m.allowMomentumBounce=!0):v=e.minTranslate(),c.loop&&c.centeredSlides&&(L=!0);else if(c.freeMode.sticky){let D;for(let B=0;B<g.length;B+=1)if(g[B]>-v){D=B;break}Math.abs(g[D]-v)<Math.abs(g[D-1]-v)||e.swipeDirection==="next"?v=g[D]:v=g[D-1],v=-v}if(L&&s("transitionEnd",()=>{e.loopFix()}),e.velocity!==0){if(d?S=Math.abs((-v-e.translate)/e.velocity):S=Math.abs((v-e.translate)/e.velocity),c.freeMode.sticky){const D=Math.abs((d?-v:v)-e.translate),B=e.slidesSizesGrid[e.activeIndex];D<B?S=c.speed:D<2*B?S=c.speed*1.5:S=c.speed*2.5}}else if(c.freeMode.sticky){e.slideToClosest();return}c.freeMode.momentumBounce&&x?(e.updateProgress(M),e.setTransition(S),e.setTranslate(v),e.transitionStart(!0,e.swipeDirection),e.animating=!0,Xo(f,()=>{!e||e.destroyed||!m.allowMomentumBounce||(n("momentumBounce"),e.setTransition(c.speed),setTimeout(()=>{e.setTranslate(M),Xo(f,()=>{!e||e.destroyed||e.transitionEnd()})},0))})):e.velocity?(n("_freeModeNoMomentumRelease"),e.updateProgress(v),e.setTransition(S),e.setTranslate(v),e.transitionStart(!0,e.swipeDirection),e.animating||(e.animating=!0,Xo(f,()=>{!e||e.destroyed||e.transitionEnd()}))):e.updateProgress(v),e.updateActiveIndex(),e.updateSlidesClasses()}else if(c.freeMode.sticky){e.slideToClosest();return}else c.freeMode&&n("_freeModeNoMomentumRelease");(!c.freeMode.momentum||_>=c.longSwipesMs)&&(n("_freeModeStaticRelease"),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses())}Object.assign(e,{freeMode:{onTouchStart:i,onTouchMove:o,onTouchEnd:a}})}function hj(t){let{swiper:e,extendParams:r,on:n}=t;r({grid:{rows:1,fill:"column"}});let s,i,o,a;const l=()=>{let y=e.params.spaceBetween;return typeof y=="string"&&y.indexOf("%")>=0?y=parseFloat(y.replace("%",""))/100*e.size:typeof y=="string"&&(y=parseFloat(y)),y},u=y=>{const{slidesPerView:_}=e.params,{rows:S,fill:E}=e.params.grid,v=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:y.length;o=Math.floor(v/S),Math.floor(v/S)===v/S?s=v:s=Math.ceil(v/S)*S,_!=="auto"&&E==="row"&&(s=Math.max(s,_*S)),i=s/S},c=()=>{e.slides&&e.slides.forEach(y=>{y.swiperSlideGridSet&&(y.style.height="",y.style[e.getDirectionLabel("margin-top")]="")})},f=(y,_,S)=>{const{slidesPerGroup:E}=e.params,v=l(),{rows:x,fill:M}=e.params.grid,A=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:S.length;let L,D,B;if(M==="row"&&E>1){const q=Math.floor(y/(E*x)),Y=y-x*E*q,R=q===0?E:Math.min(Math.ceil((A-q*x*E)/x),E);B=Math.floor(Y/R),D=Y-B*R+q*E,L=D+B*s/x,_.style.order=L}else M==="column"?(D=Math.floor(y/x),B=y-D*x,(D>o||D===o&&B===x-1)&&(B+=1,B>=x&&(B=0,D+=1))):(B=Math.floor(y/i),D=y-B*i);_.row=B,_.column=D,_.style.height=`calc((100% - ${(x-1)*v}px) / ${x})`,_.style[e.getDirectionLabel("margin-top")]=B!==0?v&&`${v}px`:"",_.swiperSlideGridSet=!0},d=(y,_)=>{const{centeredSlides:S,roundLengths:E}=e.params,v=l(),{rows:x}=e.params.grid;if(e.virtualSize=(y+v)*s,e.virtualSize=Math.ceil(e.virtualSize/x)-v,e.params.cssMode||(e.wrapperEl.style[e.getDirectionLabel("width")]=`${e.virtualSize+v}px`),S){const M=[];for(let A=0;A<_.length;A+=1){let L=_[A];E&&(L=Math.floor(L)),_[A]<e.virtualSize+_[0]&&M.push(L)}_.splice(0,_.length),_.push(...M)}},g=()=>{a=e.params.grid&&e.params.grid.rows>1},m=()=>{const{params:y,el:_}=e,S=y.grid&&y.grid.rows>1;a&&!S?(_.classList.remove(`${y.containerModifierClass}grid`,`${y.containerModifierClass}grid-column`),o=1,e.emitContainerClasses()):!a&&S&&(_.classList.add(`${y.containerModifierClass}grid`),y.grid.fill==="column"&&_.classList.add(`${y.containerModifierClass}grid-column`),e.emitContainerClasses()),a=S};n("init",g),n("update",m),e.grid={initSlides:u,unsetSlides:c,updateSlide:f,updateWrapperSize:d}}function pj(t){const e=this,{params:r,slidesEl:n}=e;r.loop&&e.loopDestroy();const s=i=>{if(typeof i=="string"){const o=document.createElement("div");o.innerHTML=i,n.append(o.children[0]),o.innerHTML=""}else n.append(i)};if(typeof t=="object"&&"length"in t)for(let i=0;i<t.length;i+=1)t[i]&&s(t[i]);else s(t);e.recalcSlides(),r.loop&&e.loopCreate(),(!r.observer||e.isElement)&&e.update()}function gj(t){const e=this,{params:r,activeIndex:n,slidesEl:s}=e;r.loop&&e.loopDestroy();let i=n+1;const o=a=>{if(typeof a=="string"){const l=document.createElement("div");l.innerHTML=a,s.prepend(l.children[0]),l.innerHTML=""}else s.prepend(a)};if(typeof t=="object"&&"length"in t){for(let a=0;a<t.length;a+=1)t[a]&&o(t[a]);i=n+t.length}else o(t);e.recalcSlides(),r.loop&&e.loopCreate(),(!r.observer||e.isElement)&&e.update(),e.slideTo(i,0,!1)}function mj(t,e){const r=this,{params:n,activeIndex:s,slidesEl:i}=r;let o=s;n.loop&&(o-=r.loopedSlides,r.loopDestroy(),r.recalcSlides());const a=r.slides.length;if(t<=0){r.prependSlide(e);return}if(t>=a){r.appendSlide(e);return}let l=o>t?o+1:o;const u=[];for(let c=a-1;c>=t;c-=1){const f=r.slides[c];f.remove(),u.unshift(f)}if(typeof e=="object"&&"length"in e){for(let c=0;c<e.length;c+=1)e[c]&&i.append(e[c]);l=o>t?o+e.length:o}else i.append(e);for(let c=0;c<u.length;c+=1)i.append(u[c]);r.recalcSlides(),n.loop&&r.loopCreate(),(!n.observer||r.isElement)&&r.update(),n.loop?r.slideTo(l+r.loopedSlides,0,!1):r.slideTo(l,0,!1)}function bj(t){const e=this,{params:r,activeIndex:n}=e;let s=n;r.loop&&(s-=e.loopedSlides,e.loopDestroy());let i=s,o;if(typeof t=="object"&&"length"in t){for(let a=0;a<t.length;a+=1)o=t[a],e.slides[o]&&e.slides[o].remove(),o<i&&(i-=1);i=Math.max(i,0)}else o=t,e.slides[o]&&e.slides[o].remove(),o<i&&(i-=1),i=Math.max(i,0);e.recalcSlides(),r.loop&&e.loopCreate(),(!r.observer||e.isElement)&&e.update(),r.loop?e.slideTo(i+e.loopedSlides,0,!1):e.slideTo(i,0,!1)}function yj(){const t=this,e=[];for(let r=0;r<t.slides.length;r+=1)e.push(r);t.removeSlide(e)}function wj(t){let{swiper:e}=t;Object.assign(e,{appendSlide:pj.bind(e),prependSlide:gj.bind(e),addSlide:mj.bind(e),removeSlide:bj.bind(e),removeAllSlides:yj.bind(e)})}function po(t){const{effect:e,swiper:r,on:n,setTranslate:s,setTransition:i,overwriteParams:o,perspective:a,recreateShadows:l,getEffectParams:u}=t;n("beforeInit",()=>{if(r.params.effect!==e)return;r.classNames.push(`${r.params.containerModifierClass}${e}`),a&&a()&&r.classNames.push(`${r.params.containerModifierClass}3d`);const f=o?o():{};Object.assign(r.params,f),Object.assign(r.originalParams,f)}),n("setTranslate",()=>{r.params.effect===e&&s()}),n("setTransition",(f,d)=>{r.params.effect===e&&i(d)}),n("transitionEnd",()=>{if(r.params.effect===e&&l){if(!u||!u().slideShadows)return;r.slides.forEach(f=>{f.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(d=>d.remove())}),l()}});let c;n("virtualUpdate",()=>{r.params.effect===e&&(r.slides.length||(c=!0),requestAnimationFrame(()=>{c&&r.slides&&r.slides.length&&(s(),c=!1)}))})}function Ca(t,e){const r=fs(e);return r!==e&&(r.style.backfaceVisibility="hidden",r.style["-webkit-backface-visibility"]="hidden"),r}function uc(t){let{swiper:e,duration:r,transformElements:n,allSlides:s}=t;const{activeIndex:i}=e,o=a=>a.parentElement?a.parentElement:e.slides.filter(u=>u.shadowRoot&&u.shadowRoot===a.parentNode)[0];if(e.params.virtualTranslate&&r!==0){let a=!1,l;s?l=n:l=n.filter(u=>{const c=u.classList.contains("swiper-slide-transform")?o(u):u;return e.getSlideIndex(c)===i}),l.forEach(u=>{Xo(u,()=>{if(a||!e||e.destroyed)return;a=!0,e.animating=!1;const c=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});e.wrapperEl.dispatchEvent(c)})})}}function vj(t){let{swiper:e,extendParams:r,on:n}=t;r({fadeEffect:{crossFade:!1}}),po({effect:"fade",swiper:e,on:n,setTranslate:()=>{const{slides:o}=e,a=e.params.fadeEffect;for(let l=0;l<o.length;l+=1){const u=e.slides[l];let f=-u.swiperSlideOffset;e.params.virtualTranslate||(f-=e.translate);let d=0;e.isHorizontal()||(d=f,f=0);const g=e.params.fadeEffect.crossFade?Math.max(1-Math.abs(u.progress),0):1+Math.min(Math.max(u.progress,-1),0),m=Ca(a,u);m.style.opacity=g,m.style.transform=`translate3d(${f}px, ${d}px, 0px)`}},setTransition:o=>{const a=e.slides.map(l=>fs(l));a.forEach(l=>{l.style.transitionDuration=`${o}ms`}),uc({swiper:e,duration:o,transformElements:a,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})}function _j(t){let{swiper:e,extendParams:r,on:n}=t;r({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const s=(l,u,c)=>{let f=c?l.querySelector(".swiper-slide-shadow-left"):l.querySelector(".swiper-slide-shadow-top"),d=c?l.querySelector(".swiper-slide-shadow-right"):l.querySelector(".swiper-slide-shadow-bottom");f||(f=Jt("div",`swiper-slide-shadow-cube swiper-slide-shadow-${c?"left":"top"}`.split(" ")),l.append(f)),d||(d=Jt("div",`swiper-slide-shadow-cube swiper-slide-shadow-${c?"right":"bottom"}`.split(" ")),l.append(d)),f&&(f.style.opacity=Math.max(-u,0)),d&&(d.style.opacity=Math.max(u,0))};po({effect:"cube",swiper:e,on:n,setTranslate:()=>{const{el:l,wrapperEl:u,slides:c,width:f,height:d,rtlTranslate:g,size:m,browser:y}=e,_=ec(e),S=e.params.cubeEffect,E=e.isHorizontal(),v=e.virtual&&e.params.virtual.enabled;let x=0,M;S.shadow&&(E?(M=e.wrapperEl.querySelector(".swiper-cube-shadow"),M||(M=Jt("div","swiper-cube-shadow"),e.wrapperEl.append(M)),M.style.height=`${f}px`):(M=l.querySelector(".swiper-cube-shadow"),M||(M=Jt("div","swiper-cube-shadow"),l.append(M))));for(let L=0;L<c.length;L+=1){const D=c[L];let B=L;v&&(B=parseInt(D.getAttribute("data-swiper-slide-index"),10));let q=B*90,Y=Math.floor(q/360);g&&(q=-q,Y=Math.floor(-q/360));const R=Math.max(Math.min(D.progress,1),-1);let I=0,N=0,W=0;B%4===0?(I=-Y*4*m,W=0):(B-1)%4===0?(I=0,W=-Y*4*m):(B-2)%4===0?(I=m+Y*4*m,W=m):(B-3)%4===0&&(I=-m,W=3*m+m*4*Y),g&&(I=-I),E||(N=I,I=0);const G=`rotateX(${_(E?0:-q)}deg) rotateY(${_(E?q:0)}deg) translate3d(${I}px, ${N}px, ${W}px)`;R<=1&&R>-1&&(x=B*90+R*90,g&&(x=-B*90-R*90)),D.style.transform=G,S.slideShadows&&s(D,R,E)}if(u.style.transformOrigin=`50% 50% -${m/2}px`,u.style["-webkit-transform-origin"]=`50% 50% -${m/2}px`,S.shadow)if(E)M.style.transform=`translate3d(0px, ${f/2+S.shadowOffset}px, ${-f/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${S.shadowScale})`;else{const L=Math.abs(x)-Math.floor(Math.abs(x)/90)*90,D=1.5-(Math.sin(L*2*Math.PI/360)/2+Math.cos(L*2*Math.PI/360)/2),B=S.shadowScale,q=S.shadowScale/D,Y=S.shadowOffset;M.style.transform=`scale3d(${B}, 1, ${q}) translate3d(0px, ${d/2+Y}px, ${-d/2/q}px) rotateX(-89.99deg)`}const A=(y.isSafari||y.isWebView)&&y.needPerspectiveFix?-m/2:0;u.style.transform=`translate3d(0px,0,${A}px) rotateX(${_(e.isHorizontal()?0:x)}deg) rotateY(${_(e.isHorizontal()?-x:0)}deg)`,u.style.setProperty("--swiper-cube-translate-z",`${A}px`)},setTransition:l=>{const{el:u,slides:c}=e;if(c.forEach(f=>{f.style.transitionDuration=`${l}ms`,f.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(d=>{d.style.transitionDuration=`${l}ms`})}),e.params.cubeEffect.shadow&&!e.isHorizontal()){const f=u.querySelector(".swiper-cube-shadow");f&&(f.style.transitionDuration=`${l}ms`)}},recreateShadows:()=>{const l=e.isHorizontal();e.slides.forEach(u=>{const c=Math.max(Math.min(u.progress,1),-1);s(u,c,l)})},getEffectParams:()=>e.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}function to(t,e,r){const n=`swiper-slide-shadow${r?`-${r}`:""}${t?` swiper-slide-shadow-${t}`:""}`,s=fs(e);let i=s.querySelector(`.${n.split(" ").join(".")}`);return i||(i=Jt("div",n.split(" ")),s.append(i)),i}function Ej(t){let{swiper:e,extendParams:r,on:n}=t;r({flipEffect:{slideShadows:!0,limitRotation:!0}});const s=(l,u)=>{let c=e.isHorizontal()?l.querySelector(".swiper-slide-shadow-left"):l.querySelector(".swiper-slide-shadow-top"),f=e.isHorizontal()?l.querySelector(".swiper-slide-shadow-right"):l.querySelector(".swiper-slide-shadow-bottom");c||(c=to("flip",l,e.isHorizontal()?"left":"top")),f||(f=to("flip",l,e.isHorizontal()?"right":"bottom")),c&&(c.style.opacity=Math.max(-u,0)),f&&(f.style.opacity=Math.max(u,0))};po({effect:"flip",swiper:e,on:n,setTranslate:()=>{const{slides:l,rtlTranslate:u}=e,c=e.params.flipEffect,f=ec(e);for(let d=0;d<l.length;d+=1){const g=l[d];let m=g.progress;e.params.flipEffect.limitRotation&&(m=Math.max(Math.min(g.progress,1),-1));const y=g.swiperSlideOffset;let S=-180*m,E=0,v=e.params.cssMode?-y-e.translate:-y,x=0;e.isHorizontal()?u&&(S=-S):(x=v,v=0,E=-S,S=0),g.style.zIndex=-Math.abs(Math.round(m))+l.length,c.slideShadows&&s(g,m);const M=`translate3d(${v}px, ${x}px, 0px) rotateX(${f(E)}deg) rotateY(${f(S)}deg)`,A=Ca(c,g);A.style.transform=M}},setTransition:l=>{const u=e.slides.map(c=>fs(c));u.forEach(c=>{c.style.transitionDuration=`${l}ms`,c.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(f=>{f.style.transitionDuration=`${l}ms`})}),uc({swiper:e,duration:l,transformElements:u})},recreateShadows:()=>{e.params.flipEffect,e.slides.forEach(l=>{let u=l.progress;e.params.flipEffect.limitRotation&&(u=Math.max(Math.min(l.progress,1),-1)),s(l,u)})},getEffectParams:()=>e.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})}function Sj(t){let{swiper:e,extendParams:r,on:n}=t;r({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),po({effect:"coverflow",swiper:e,on:n,setTranslate:()=>{const{width:o,height:a,slides:l,slidesSizesGrid:u}=e,c=e.params.coverflowEffect,f=e.isHorizontal(),d=e.translate,g=f?-d+o/2:-d+a/2,m=f?c.rotate:-c.rotate,y=c.depth,_=ec(e);for(let S=0,E=l.length;S<E;S+=1){const v=l[S],x=u[S],M=v.swiperSlideOffset,A=(g-M-x/2)/x,L=typeof c.modifier=="function"?c.modifier(A):A*c.modifier;let D=f?m*L:0,B=f?0:m*L,q=-y*Math.abs(L),Y=c.stretch;typeof Y=="string"&&Y.indexOf("%")!==-1&&(Y=parseFloat(c.stretch)/100*x);let R=f?0:Y*L,I=f?Y*L:0,N=1-(1-c.scale)*Math.abs(L);Math.abs(I)<.001&&(I=0),Math.abs(R)<.001&&(R=0),Math.abs(q)<.001&&(q=0),Math.abs(D)<.001&&(D=0),Math.abs(B)<.001&&(B=0),Math.abs(N)<.001&&(N=0);const W=`translate3d(${I}px,${R}px,${q}px)  rotateX(${_(B)}deg) rotateY(${_(D)}deg) scale(${N})`,G=Ca(c,v);if(G.style.transform=W,v.style.zIndex=-Math.abs(Math.round(L))+1,c.slideShadows){let H=f?v.querySelector(".swiper-slide-shadow-left"):v.querySelector(".swiper-slide-shadow-top"),$=f?v.querySelector(".swiper-slide-shadow-right"):v.querySelector(".swiper-slide-shadow-bottom");H||(H=to("coverflow",v,f?"left":"top")),$||($=to("coverflow",v,f?"right":"bottom")),H&&(H.style.opacity=L>0?L:0),$&&($.style.opacity=-L>0?-L:0)}}},setTransition:o=>{e.slides.map(l=>fs(l)).forEach(l=>{l.style.transitionDuration=`${o}ms`,l.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(u=>{u.style.transitionDuration=`${o}ms`})})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}function Tj(t){let{swiper:e,extendParams:r,on:n}=t;r({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const s=a=>typeof a=="string"?a:`${a}px`;po({effect:"creative",swiper:e,on:n,setTranslate:()=>{const{slides:a,wrapperEl:l,slidesSizesGrid:u}=e,c=e.params.creativeEffect,{progressMultiplier:f}=c,d=e.params.centeredSlides,g=ec(e);if(d){const m=u[0]/2-e.params.slidesOffsetBefore||0;l.style.transform=`translateX(calc(50% - ${m}px))`}for(let m=0;m<a.length;m+=1){const y=a[m],_=y.progress,S=Math.min(Math.max(y.progress,-c.limitProgress),c.limitProgress);let E=S;d||(E=Math.min(Math.max(y.originalProgress,-c.limitProgress),c.limitProgress));const v=y.swiperSlideOffset,x=[e.params.cssMode?-v-e.translate:-v,0,0],M=[0,0,0];let A=!1;e.isHorizontal()||(x[1]=x[0],x[0]=0);let L={translate:[0,0,0],rotate:[0,0,0],scale:1,opacity:1};S<0?(L=c.next,A=!0):S>0&&(L=c.prev,A=!0),x.forEach((N,W)=>{x[W]=`calc(${N}px + (${s(L.translate[W])} * ${Math.abs(S*f)}))`}),M.forEach((N,W)=>{let G=L.rotate[W]*Math.abs(S*f);M[W]=G}),y.style.zIndex=-Math.abs(Math.round(_))+a.length;const D=x.join(", "),B=`rotateX(${g(M[0])}deg) rotateY(${g(M[1])}deg) rotateZ(${g(M[2])}deg)`,q=E<0?`scale(${1+(1-L.scale)*E*f})`:`scale(${1-(1-L.scale)*E*f})`,Y=E<0?1+(1-L.opacity)*E*f:1-(1-L.opacity)*E*f,R=`translate3d(${D}) ${B} ${q}`;if(A&&L.shadow||!A){let N=y.querySelector(".swiper-slide-shadow");if(!N&&L.shadow&&(N=to("creative",y)),N){const W=c.shadowPerProgress?S*(1/c.limitProgress):S;N.style.opacity=Math.min(Math.max(Math.abs(W),0),1)}}const I=Ca(c,y);I.style.transform=R,I.style.opacity=Y,L.origin&&(I.style.transformOrigin=L.origin)}},setTransition:a=>{const l=e.slides.map(u=>fs(u));l.forEach(u=>{u.style.transitionDuration=`${a}ms`,u.querySelectorAll(".swiper-slide-shadow").forEach(c=>{c.style.transitionDuration=`${a}ms`})}),uc({swiper:e,duration:a,transformElements:l,allSlides:!0})},perspective:()=>e.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})}function xj(t){let{swiper:e,extendParams:r,on:n}=t;r({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),po({effect:"cards",swiper:e,on:n,setTranslate:()=>{const{slides:o,activeIndex:a,rtlTranslate:l}=e,u=e.params.cardsEffect,{startTranslate:c,isTouched:f}=e.touchEventsData,d=l?-e.translate:e.translate;for(let g=0;g<o.length;g+=1){const m=o[g],y=m.progress,_=Math.min(Math.max(y,-4),4);let S=m.swiperSlideOffset;e.params.centeredSlides&&!e.params.cssMode&&(e.wrapperEl.style.transform=`translateX(${e.minTranslate()}px)`),e.params.centeredSlides&&e.params.cssMode&&(S-=o[0].swiperSlideOffset);let E=e.params.cssMode?-S-e.translate:-S,v=0;const x=-100*Math.abs(_);let M=1,A=-u.perSlideRotate*_,L=u.perSlideOffset-Math.abs(_)*.75;const D=e.virtual&&e.params.virtual.enabled?e.virtual.from+g:g,B=(D===a||D===a-1)&&_>0&&_<1&&(f||e.params.cssMode)&&d<c,q=(D===a||D===a+1)&&_<0&&_>-1&&(f||e.params.cssMode)&&d>c;if(B||q){const N=(1-Math.abs((Math.abs(_)-.5)/.5))**.5;A+=-28*_*N,M+=-.5*N,L+=96*N,v=`${-25*N*Math.abs(_)}%`}if(_<0?E=`calc(${E}px ${l?"-":"+"} (${L*Math.abs(_)}%))`:_>0?E=`calc(${E}px ${l?"-":"+"} (-${L*Math.abs(_)}%))`:E=`${E}px`,!e.isHorizontal()){const N=v;v=E,E=N}const Y=_<0?`${1+(1-M)*_}`:`${1-(1-M)*_}`,R=`
+        translate3d(${E}, ${v}, ${x}px)
+        rotateZ(${u.rotate?l?-A:A:0}deg)
+        scale(${Y})
+      `;if(u.slideShadows){let N=m.querySelector(".swiper-slide-shadow");N||(N=to("cards",m)),N&&(N.style.opacity=Math.min(Math.max((Math.abs(_)-.5)/.5,0),1))}m.style.zIndex=-Math.abs(Math.round(y))+o.length;const I=Ca(u,m);I.style.transform=R}},setTransition:o=>{const a=e.slides.map(l=>fs(l));a.forEach(l=>{l.style.transitionDuration=`${o}ms`,l.querySelectorAll(".swiper-slide-shadow").forEach(u=>{u.style.transitionDuration=`${o}ms`})}),uc({swiper:e,duration:o,transformElements:a})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})}const Aj=[J6,Z6,ej,tj,rj,nj,ij,sj,oj,aj,lj,uj,cj,fj,dj,hj,wj,vj,_j,Ej,Sj,Tj,xj];Gt.use(Aj);const cc=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function ro(t){return typeof t=="object"&&t!==null&&t.constructor&&Object.prototype.toString.call(t).slice(8,-1)==="Object"&&!t.__swiper__}function sp(t,e){const r=["__proto__","constructor","prototype"];Object.keys(e).filter(n=>r.indexOf(n)<0).forEach(n=>{typeof t[n]>"u"?t[n]=e[n]:ro(e[n])&&ro(t[n])&&Object.keys(e[n]).length>0?e[n].__swiper__?t[n]=e[n]:sp(t[n],e[n]):t[n]=e[n]})}function Cj(t){return t===void 0&&(t={}),t.navigation&&typeof t.navigation.nextEl>"u"&&typeof t.navigation.prevEl>"u"}function Ij(t){return t===void 0&&(t={}),t.pagination&&typeof t.pagination.el>"u"}function Mj(t){return t===void 0&&(t={}),t.scrollbar&&typeof t.scrollbar.el>"u"}function Nl(t){return t===void 0&&(t=""),t.replace(/-[a-z]/g,e=>e.toUpperCase().replace("-",""))}function Oj(t){let{swiper:e,slides:r,passedParams:n,changedParams:s,nextEl:i,prevEl:o,scrollbarEl:a,paginationEl:l}=t;const u=s.filter(B=>B!=="children"&&B!=="direction"&&B!=="wrapperClass"),{params:c,pagination:f,navigation:d,scrollbar:g,virtual:m,thumbs:y}=e;let _,S,E,v,x,M,A,L;s.includes("thumbs")&&n.thumbs&&n.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(_=!0),s.includes("controller")&&n.controller&&n.controller.control&&c.controller&&!c.controller.control&&(S=!0),s.includes("pagination")&&n.pagination&&(n.pagination.el||l)&&(c.pagination||c.pagination===!1)&&f&&!f.el&&(E=!0),s.includes("scrollbar")&&n.scrollbar&&(n.scrollbar.el||a)&&(c.scrollbar||c.scrollbar===!1)&&g&&!g.el&&(v=!0),s.includes("navigation")&&n.navigation&&(n.navigation.prevEl||o)&&(n.navigation.nextEl||i)&&(c.navigation||c.navigation===!1)&&d&&!d.prevEl&&!d.nextEl&&(x=!0);const D=B=>{e[B]&&(e[B].destroy(),B==="navigation"?(e.isElement&&(e[B].prevEl.remove(),e[B].nextEl.remove()),c[B].prevEl=void 0,c[B].nextEl=void 0,e[B].prevEl=void 0,e[B].nextEl=void 0):(e.isElement&&e[B].el.remove(),c[B].el=void 0,e[B].el=void 0))};s.includes("loop")&&e.isElement&&(c.loop&&!n.loop?M=!0:!c.loop&&n.loop?A=!0:L=!0),u.forEach(B=>{if(ro(c[B])&&ro(n[B]))Object.assign(c[B],n[B]),(B==="navigation"||B==="pagination"||B==="scrollbar")&&"enabled"in n[B]&&!n[B].enabled&&D(B);else{const q=n[B];(q===!0||q===!1)&&(B==="navigation"||B==="pagination"||B==="scrollbar")?q===!1&&D(B):c[B]=n[B]}}),u.includes("controller")&&!S&&e.controller&&e.controller.control&&c.controller&&c.controller.control&&(e.controller.control=c.controller.control),s.includes("children")&&r&&m&&c.virtual.enabled?(m.slides=r,m.update(!0)):s.includes("virtual")&&m&&c.virtual.enabled&&(r&&(m.slides=r),m.update(!0)),s.includes("children")&&r&&c.loop&&(L=!0),_&&y.init()&&y.update(!0),S&&(e.controller.control=c.controller.control),E&&(e.isElement&&(!l||typeof l=="string")&&(l=document.createElement("div"),l.classList.add("swiper-pagination"),l.part.add("pagination"),e.el.appendChild(l)),l&&(c.pagination.el=l),f.init(),f.render(),f.update()),v&&(e.isElement&&(!a||typeof a=="string")&&(a=document.createElement("div"),a.classList.add("swiper-scrollbar"),a.part.add("scrollbar"),e.el.appendChild(a)),a&&(c.scrollbar.el=a),g.init(),g.updateSize(),g.setTranslate()),x&&(e.isElement&&((!i||typeof i=="string")&&(i=document.createElement("div"),i.classList.add("swiper-button-next"),i.innerHTML=e.hostEl.constructor.nextButtonSvg,i.part.add("button-next"),e.el.appendChild(i)),(!o||typeof o=="string")&&(o=document.createElement("div"),o.classList.add("swiper-button-prev"),o.innerHTML=e.hostEl.constructor.prevButtonSvg,o.part.add("button-prev"),e.el.appendChild(o))),i&&(c.navigation.nextEl=i),o&&(c.navigation.prevEl=o),d.init(),d.update()),s.includes("allowSlideNext")&&(e.allowSlideNext=n.allowSlideNext),s.includes("allowSlidePrev")&&(e.allowSlidePrev=n.allowSlidePrev),s.includes("direction")&&e.changeDirection(n.direction,!1),(M||L)&&e.loopDestroy(),(A||L)&&e.loopCreate(),e.update()}const $y=t=>{if(parseFloat(t)===Number(t))return Number(t);if(t==="true"||t==="")return!0;if(t==="false")return!1;if(t==="null")return null;if(t!=="undefined"){if(typeof t=="string"&&t.includes("{")&&t.includes("}")&&t.includes('"')){let e;try{e=JSON.parse(t)}catch{e=t}return e}return t}},Fy=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function Uy(t,e,r){const n={},s={};sp(n,Qh);const i=[...cc,"on"],o=i.map(l=>l.replace(/_/,""));i.forEach(l=>{l=l.replace("_",""),typeof t[l]<"u"&&(s[l]=t[l])});const a=[...t.attributes];return typeof e=="string"&&typeof r<"u"&&a.push({name:e,value:ro(r)?{...r}:r}),a.forEach(l=>{const u=Fy.filter(c=>l.name.indexOf(`${c}-`)===0)[0];if(u){const c=Nl(u),f=Nl(l.name.split(`${u}-`)[1]);typeof s[c]>"u"&&(s[c]={}),s[c]===!0&&(s[c]={enabled:!0}),s[c][f]=$y(l.value)}else{const c=Nl(l.name);if(!o.includes(c))return;const f=$y(l.value);s[c]&&Fy.includes(l.name)&&!ro(f)?(s[c].constructor!==Object&&(s[c]={}),s[c].enabled=!!f):s[c]=f}}),sp(n,s),n.navigation?n.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...n.navigation!==!0?n.navigation:{}}:n.navigation===!1&&delete n.navigation,n.scrollbar?n.scrollbar={el:".swiper-scrollbar",...n.scrollbar!==!0?n.scrollbar:{}}:n.scrollbar===!1&&delete n.scrollbar,n.pagination?n.pagination={el:".swiper-pagination",...n.pagination!==!0?n.pagination:{}}:n.pagination===!1&&delete n.pagination,{params:n,passedParams:s}}const Rj=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}",Pj="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class kj{}const GS=typeof window>"u"||typeof HTMLElement>"u"?kj:HTMLElement,jy=`<svg width="11" height="20" viewBox="0 0 11 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z" fill="currentColor"/></svg>
+    `,KS=(t,e)=>{if(typeof CSSStyleSheet<"u"&&t.adoptedStyleSheets){const r=new CSSStyleSheet;r.replaceSync(e),t.adoptedStyleSheets=[r]}else{const r=document.createElement("style");r.rel="stylesheet",r.textContent=e,t.appendChild(r)}};class XS extends GS{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return jy}static get prevButtonSvg(){return jy.replace("/></svg>",' transform-origin="center" transform="rotate(180)"/></svg>')}cssStyles(){return[Rj,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join(`
+`)}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,r=[...this.querySelectorAll("[slot^=slide-]")].map(n=>parseInt(n.getAttribute("slot").split("slide-")[1],10));if(this.slideSlots=r.length?Math.max(...r)+1:0,!!this.rendered){if(this.slideSlots>e)for(let n=e;n<this.slideSlots;n+=1){const s=document.createElement("swiper-slide");s.setAttribute("part",`slide slide-${n+1}`);const i=document.createElement("slot");i.setAttribute("name",`slide-${n+1}`),s.appendChild(i),this.shadowRoot.querySelector(".swiper-wrapper").appendChild(s)}else if(this.slideSlots<e){const n=this.swiper.slides;for(let s=n.length-1;s>=0;s-=1)s>this.slideSlots&&n[s].remove()}}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&KS(this.shadowRoot,e),this.cssLinks().forEach(n=>{if(this.shadowRoot.querySelector(`link[href="${n}"]`))return;const i=document.createElement("link");i.rel="stylesheet",i.href=n,this.shadowRoot.appendChild(i)});const r=document.createElement("div");r.classList.add("swiper"),r.part="container",r.innerHTML=`
+      <slot name="container-start"></slot>
+      <div class="swiper-wrapper" part="wrapper">
+        <slot></slot>
+        ${Array.from({length:this.slideSlots}).map((n,s)=>`
+        <swiper-slide part="slide slide-${s}">
+          <slot name="slide-${s}"></slot>
+        </swiper-slide>
+        `).join("")}
+      </div>
+      <slot name="container-end"></slot>
+      ${Cj(this.passedParams)?`
+        <div part="button-prev" class="swiper-button-prev">${this.constructor.prevButtonSvg}</div>
+        <div part="button-next" class="swiper-button-next">${this.constructor.nextButtonSvg}</div>
+      `:""}
+      ${Ij(this.passedParams)?`
+        <div part="pagination" class="swiper-pagination"></div>
+      `:""}
+      ${Mj(this.passedParams)?`
+        <div part="scrollbar" class="swiper-scrollbar"></div>
+      `:""}
+    `,this.shadowRoot.appendChild(r),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:r,passedParams:n}=Uy(this);this.swiperParams=r,this.passedParams=n,delete this.swiperParams.init,this.render(),this.swiper=new Gt(this.shadowRoot.querySelector(".swiper"),{...r.virtual?{}:{observer:!0},...r,touchEventsTarget:"container",onAny:function(s){s==="observerUpdate"&&e.calcSlideSlots();const i=r.eventsPrefix?`${r.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var o=arguments.length,a=new Array(o>1?o-1:0),l=1;l<o;l++)a[l-1]=arguments[l];const u=new CustomEvent(i,{detail:a,bubbles:s!=="hashChange",cancelable:!0});e.dispatchEvent(u)}})}connectedCallback(){this.initialized&&this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||this.init===!1||this.getAttribute("init")==="false"||this.initialize()}disconnectedCallback(){this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||(this.swiper&&this.swiper.destroy&&this.swiper.destroy(),this.initialized=!1)}updateSwiperOnPropChange(e,r){const{params:n,passedParams:s}=Uy(this,e,r);this.passedParams=s,this.swiperParams=n,!(this.swiper&&this.swiper.params[e]===r)&&Oj({swiper:this.swiper,passedParams:this.passedParams,changedParams:[Nl(e)],...e==="navigation"&&s[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},...e==="pagination"&&s[e]?{paginationEl:".swiper-pagination"}:{},...e==="scrollbar"&&s[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,r,n){this.initialized&&(r==="true"&&n===null&&(n=!1),this.updateSwiperOnPropChange(e,n))}static get observedAttributes(){return cc.filter(r=>r.includes("_")).map(r=>r.replace(/[A-Z]/g,n=>`-${n}`).replace("_","").toLowerCase())}}cc.forEach(t=>{t!=="init"&&(t=t.replace("_",""),Object.defineProperty(XS.prototype,t,{configurable:!0,get(){return(this.passedParams||{})[t]},set(e){this.passedParams||(this.passedParams={}),this.passedParams[t]=e,this.initialized&&this.updateSwiperOnPropChange(t,e)}}))});class Lj extends GS{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||this.getAttribute("lazy")===""||this.getAttribute("lazy")==="true";if(KS(this.shadowRoot,Pj),this.shadowRoot.appendChild(document.createElement("slot")),e){const r=document.createElement("div");r.classList.add("swiper-lazy-preloader"),r.part.add("preloader"),this.shadowRoot.appendChild(r)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const w4=()=>{typeof window>"u"||(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",XS),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",Lj))};typeof window<"u"&&(window.SwiperElementRegisterParams=t=>{cc.push(...t)});export{Jj as $,Wj as A,h4 as B,zO as C,s4 as D,c4 as E,vr as F,d4 as G,o4 as H,i4 as I,kv as J,r4 as K,gP as L,cp as M,n4 as N,JT as O,Bj as P,$j as Q,Fj as R,Kj as S,p4 as T,t4 as U,Xj as V,Qj as W,Hj as X,wc as Y,nP as Z,jj as _,Dj as a,Yj as a0,tx as a1,Zj as a2,w4 as a3,LO as b,nA as c,Uj as d,e4 as e,u4 as f,qj as g,dT as h,Fv as i,Hw as j,jw as k,Gj as l,g4 as m,fp as n,Fw as o,f4 as p,zj as q,yp as r,Ai as s,a4 as t,l4 as u,YT as v,Vj as w,qx as x,UT as y,xr as z};
diff --git a/packages/modules/web_themes/colors/web/assets/vendor-DS6WeUU7.js b/packages/modules/web_themes/colors/web/assets/vendor-DS6WeUU7.js
deleted file mode 100644
index 6989eac5e8..0000000000
--- a/packages/modules/web_themes/colors/web/assets/vendor-DS6WeUU7.js
+++ /dev/null
@@ -1,62 +0,0 @@
-var QS=Object.defineProperty;var Vg=t=>{throw TypeError(t)};var JS=(t,e,r)=>e in t?QS(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var nt=(t,e,r)=>JS(t,typeof e!="symbol"?e+"":e,r),hc=(t,e,r)=>e.has(t)||Vg("Cannot "+r);var oe=(t,e,r)=>(hc(t,e,"read from private field"),r?r.call(t):e.get(t)),je=(t,e,r)=>e.has(t)?Vg("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),Ne=(t,e,r,n)=>(hc(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),ke=(t,e,r)=>(hc(t,e,"access private method"),r);var Ia=(t,e,r,n)=>({set _(s){Ne(t,e,s,r)},get _(){return oe(t,e,n)}});const qi=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};/**
-* @vue/shared v3.4.29
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**//*! #__NO_SIDE_EFFECTS__ */function sp(t,e){const r=new Set(t.split(","));return n=>r.has(n)}const Qe={},Ms=[],lr=()=>{},ZS=()=>!1,gu=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),op=t=>t.startsWith("onUpdate:"),mt=Object.assign,ap=(t,e)=>{const r=t.indexOf(e);r>-1&&t.splice(r,1)},eT=Object.prototype.hasOwnProperty,Ue=(t,e)=>eT.call(t,e),De=Array.isArray,Os=t=>ca(t)==="[object Map]",eo=t=>ca(t)==="[object Set]",qg=t=>ca(t)==="[object Date]",Be=t=>typeof t=="function",dt=t=>typeof t=="string",bn=t=>typeof t=="symbol",Je=t=>t!==null&&typeof t=="object",Vy=t=>(Je(t)||Be(t))&&Be(t.then)&&Be(t.catch),qy=Object.prototype.toString,ca=t=>qy.call(t),tT=t=>ca(t).slice(8,-1),Yy=t=>ca(t)==="[object Object]",lp=t=>dt(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,$o=sp(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),mu=t=>{const e=Object.create(null);return r=>e[r]||(e[r]=t(r))},rT=/-(\w)/g,Hr=mu(t=>t.replace(rT,(e,r)=>r?r.toUpperCase():"")),nT=/\B([A-Z])/g,to=mu(t=>t.replace(nT,"-$1").toLowerCase()),bu=mu(t=>t.charAt(0).toUpperCase()+t.slice(1)),pc=mu(t=>t?`on${bu(t)}`:""),Jn=(t,e)=>!Object.is(t,e),il=(t,...e)=>{for(let r=0;r<t.length;r++)t[r](...e)},Gy=(t,e,r,n=!1)=>{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:n,value:r})},Nl=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let Yg;const Ky=()=>Yg||(Yg=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof qi<"u"?qi:{});function up(t){if(De(t)){const e={};for(let r=0;r<t.length;r++){const n=t[r],s=dt(n)?aT(n):up(n);if(s)for(const i in s)e[i]=s[i]}return e}else if(dt(t)||Je(t))return t}const iT=/;(?![^(]*\))/g,sT=/:([^]+)/,oT=/\/\*[^]*?\*\//g;function aT(t){const e={};return t.replace(oT,"").split(iT).forEach(r=>{if(r){const n=r.split(sT);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}function cp(t){let e="";if(dt(t))e=t;else if(De(t))for(let r=0;r<t.length;r++){const n=cp(t[r]);n&&(e+=n+" ")}else if(Je(t))for(const r in t)t[r]&&(e+=r+" ");return e.trim()}const lT="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",uT=sp(lT);function Xy(t){return!!t||t===""}function cT(t,e){if(t.length!==e.length)return!1;let r=!0;for(let n=0;r&&n<t.length;n++)r=fa(t[n],e[n]);return r}function fa(t,e){if(t===e)return!0;let r=qg(t),n=qg(e);if(r||n)return r&&n?t.getTime()===e.getTime():!1;if(r=bn(t),n=bn(e),r||n)return t===e;if(r=De(t),n=De(e),r||n)return r&&n?cT(t,e):!1;if(r=Je(t),n=Je(e),r||n){if(!r||!n)return!1;const s=Object.keys(t).length,i=Object.keys(e).length;if(s!==i)return!1;for(const o in t){const a=t.hasOwnProperty(o),l=e.hasOwnProperty(o);if(a&&!l||!a&&l||!fa(t[o],e[o]))return!1}}return String(t)===String(e)}function fp(t,e){return t.findIndex(r=>fa(r,e))}const Rj=t=>dt(t)?t:t==null?"":De(t)||Je(t)&&(t.toString===qy||!Be(t.toString))?JSON.stringify(t,Qy,2):String(t),Qy=(t,e)=>e&&e.__v_isRef?Qy(t,e.value):Os(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((r,[n,s],i)=>(r[gc(n,i)+" =>"]=s,r),{})}:eo(e)?{[`Set(${e.size})`]:[...e.values()].map(r=>gc(r))}:bn(e)?gc(e):Je(e)&&!De(e)&&!Yy(e)?String(e):e,gc=(t,e="")=>{var r;return bn(t)?`Symbol(${(r=t.description)!=null?r:e})`:t};/**
-* @vue/reactivity v3.4.29
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let yr;class fT{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=yr,!e&&yr&&(this.index=(yr.scopes||(yr.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const r=yr;try{return yr=this,e()}finally{yr=r}}}on(){yr=this}off(){yr=this.parent}stop(e){if(this._active){let r,n;for(r=0,n=this.effects.length;r<n;r++)this.effects[r].stop();for(r=0,n=this.cleanups.length;r<n;r++)this.cleanups[r]();if(this.scopes)for(r=0,n=this.scopes.length;r<n;r++)this.scopes[r].stop(!0);if(!this.detached&&this.parent&&!e){const s=this.parent.scopes.pop();s&&s!==this&&(this.parent.scopes[this.index]=s,s.index=this.index)}this.parent=void 0,this._active=!1}}}function dT(t,e=yr){e&&e.active&&e.effects.push(t)}function hT(){return yr}let Bi;class dp{constructor(e,r,n,s){this.fn=e,this.trigger=r,this.scheduler=n,this.active=!0,this.deps=[],this._dirtyLevel=5,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,dT(this,s)}get dirty(){if(this._dirtyLevel===2)return!1;if(this._dirtyLevel===3||this._dirtyLevel===4){this._dirtyLevel=1,ni();for(let e=0;e<this._depsLength;e++){const r=this.deps[e];if(r.computed){if(r.computed.effect._dirtyLevel===2)return!0;if(pT(r.computed),this._dirtyLevel>=5)break}}this._dirtyLevel===1&&(this._dirtyLevel=0),ii()}return this._dirtyLevel>=5}set dirty(e){this._dirtyLevel=e?5:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=Xn,r=Bi;try{return Xn=!0,Bi=this,this._runnings++,Gg(this),this.fn()}finally{Kg(this),this._runnings--,Bi=r,Xn=e}}stop(){this.active&&(Gg(this),Kg(this),this.onStop&&this.onStop(),this.active=!1)}}function pT(t){return t.value}function Gg(t){t._trackId++,t._depsLength=0}function Kg(t){if(t.deps.length>t._depsLength){for(let e=t._depsLength;e<t.deps.length;e++)Jy(t.deps[e],t);t.deps.length=t._depsLength}}function Jy(t,e){const r=t.get(e);r!==void 0&&e._trackId!==r&&(t.delete(e),t.size===0&&t.cleanup())}let Xn=!0,Nf=0;const Zy=[];function ni(){Zy.push(Xn),Xn=!1}function ii(){const t=Zy.pop();Xn=t===void 0?!0:t}function hp(){Nf++}function pp(){for(Nf--;!Nf&&Df.length;)Df.shift()()}function ew(t,e,r){if(e.get(t)!==t._trackId){e.set(t,t._trackId);const n=t.deps[t._depsLength];n!==e?(n&&Jy(n,t),t.deps[t._depsLength++]=e):t._depsLength++}}const Df=[];function tw(t,e,r){hp();for(const n of t.keys()){if(!t.computed&&n.computed&&t.get(n)===n._trackId&&n._runnings>0){n._dirtyLevel=2;continue}let s;n._dirtyLevel<e&&(s??(s=t.get(n)===n._trackId))&&(n._shouldSchedule||(n._shouldSchedule=n._dirtyLevel===0),n.computed&&n._dirtyLevel===2&&(n._shouldSchedule=!0),n._dirtyLevel=e),n._shouldSchedule&&(s??(s=t.get(n)===n._trackId))&&(n.trigger(),(!n._runnings||n.allowRecurse)&&n._dirtyLevel!==3&&(n._shouldSchedule=!1,n.scheduler&&Df.push(n.scheduler)))}pp()}const rw=(t,e)=>{const r=new Map;return r.cleanup=t,r.computed=e,r},Bf=new WeakMap,$i=Symbol(""),$f=Symbol("");function zt(t,e,r){if(Xn&&Bi){let n=Bf.get(t);n||Bf.set(t,n=new Map);let s=n.get(r);s||n.set(r,s=rw(()=>n.delete(r))),ew(Bi,s)}}function hn(t,e,r,n,s,i){const o=Bf.get(t);if(!o)return;let a=[];if(e==="clear")a=[...o.values()];else if(r==="length"&&De(t)){const l=Number(n);o.forEach((u,c)=>{(c==="length"||!bn(c)&&c>=l)&&a.push(u)})}else switch(r!==void 0&&a.push(o.get(r)),e){case"add":De(t)?lp(r)&&a.push(o.get("length")):(a.push(o.get($i)),Os(t)&&a.push(o.get($f)));break;case"delete":De(t)||(a.push(o.get($i)),Os(t)&&a.push(o.get($f)));break;case"set":Os(t)&&a.push(o.get($i));break}hp();for(const l of a)l&&tw(l,5);pp()}const gT=sp("__proto__,__v_isRef,__isVue"),nw=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(bn)),Xg=mT();function mT(){const t={};return["includes","indexOf","lastIndexOf"].forEach(e=>{t[e]=function(...r){const n=He(this);for(let i=0,o=this.length;i<o;i++)zt(n,"get",i+"");const s=n[e](...r);return s===-1||s===!1?n[e](...r.map(He)):s}}),["push","pop","shift","unshift","splice"].forEach(e=>{t[e]=function(...r){ni(),hp();const n=He(this)[e].apply(this,r);return pp(),ii(),n}}),t}function bT(t){bn(t)||(t=String(t));const e=He(this);return zt(e,"has",t),e.hasOwnProperty(t)}class iw{constructor(e=!1,r=!1){this._isReadonly=e,this._isShallow=r}get(e,r,n){const s=this._isReadonly,i=this._isShallow;if(r==="__v_isReactive")return!s;if(r==="__v_isReadonly")return s;if(r==="__v_isShallow")return i;if(r==="__v_raw")return n===(s?i?OT:lw:i?aw:ow).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const o=De(e);if(!s){if(o&&Ue(Xg,r))return Reflect.get(Xg,r,n);if(r==="hasOwnProperty")return bT}const a=Reflect.get(e,r,n);return(bn(r)?nw.has(r):gT(r))||(s||zt(e,"get",r),i)?a:Ht(a)?o&&lp(r)?a:a.value:Je(a)?s?uw(a):bp(a):a}}class sw extends iw{constructor(e=!1){super(!1,e)}set(e,r,n,s){let i=e[r];if(!this._isShallow){const l=Qo(i);if(!Dl(n)&&!Qo(n)&&(i=He(i),n=He(n)),!De(e)&&Ht(i)&&!Ht(n))return l?!1:(i.value=n,!0)}const o=De(e)&&lp(r)?Number(r)<e.length:Ue(e,r),a=Reflect.set(e,r,n,s);return e===He(s)&&(o?Jn(n,i)&&hn(e,"set",r,n):hn(e,"add",r,n)),a}deleteProperty(e,r){const n=Ue(e,r);e[r];const s=Reflect.deleteProperty(e,r);return s&&n&&hn(e,"delete",r,void 0),s}has(e,r){const n=Reflect.has(e,r);return(!bn(r)||!nw.has(r))&&zt(e,"has",r),n}ownKeys(e){return zt(e,"iterate",De(e)?"length":$i),Reflect.ownKeys(e)}}class yT extends iw{constructor(e=!1){super(!0,e)}set(e,r){return!0}deleteProperty(e,r){return!0}}const wT=new sw,vT=new yT,_T=new sw(!0);const gp=t=>t,yu=t=>Reflect.getPrototypeOf(t);function Ma(t,e,r=!1,n=!1){t=t.__v_raw;const s=He(t),i=He(e);r||(Jn(e,i)&&zt(s,"get",e),zt(s,"get",i));const{has:o}=yu(s),a=n?gp:r?wp:Jo;if(o.call(s,e))return a(t.get(e));if(o.call(s,i))return a(t.get(i));t!==s&&t.get(e)}function Oa(t,e=!1){const r=this.__v_raw,n=He(r),s=He(t);return e||(Jn(t,s)&&zt(n,"has",t),zt(n,"has",s)),t===s?r.has(t):r.has(t)||r.has(s)}function Ra(t,e=!1){return t=t.__v_raw,!e&&zt(He(t),"iterate",$i),Reflect.get(t,"size",t)}function Qg(t){t=He(t);const e=He(this);return yu(e).has.call(e,t)||(e.add(t),hn(e,"add",t,t)),this}function Jg(t,e){e=He(e);const r=He(this),{has:n,get:s}=yu(r);let i=n.call(r,t);i||(t=He(t),i=n.call(r,t));const o=s.call(r,t);return r.set(t,e),i?Jn(e,o)&&hn(r,"set",t,e):hn(r,"add",t,e),this}function Zg(t){const e=He(this),{has:r,get:n}=yu(e);let s=r.call(e,t);s||(t=He(t),s=r.call(e,t)),n&&n.call(e,t);const i=e.delete(t);return s&&hn(e,"delete",t,void 0),i}function em(){const t=He(this),e=t.size!==0,r=t.clear();return e&&hn(t,"clear",void 0,void 0),r}function Pa(t,e){return function(n,s){const i=this,o=i.__v_raw,a=He(o),l=e?gp:t?wp:Jo;return!t&&zt(a,"iterate",$i),o.forEach((u,c)=>n.call(s,l(u),l(c),i))}}function ka(t,e,r){return function(...n){const s=this.__v_raw,i=He(s),o=Os(i),a=t==="entries"||t===Symbol.iterator&&o,l=t==="keys"&&o,u=s[t](...n),c=r?gp:e?wp:Jo;return!e&&zt(i,"iterate",l?$f:$i),{next(){const{value:f,done:d}=u.next();return d?{value:f,done:d}:{value:a?[c(f[0]),c(f[1])]:c(f),done:d}},[Symbol.iterator](){return this}}}}function Nn(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function ET(){const t={get(i){return Ma(this,i)},get size(){return Ra(this)},has:Oa,add:Qg,set:Jg,delete:Zg,clear:em,forEach:Pa(!1,!1)},e={get(i){return Ma(this,i,!1,!0)},get size(){return Ra(this)},has:Oa,add:Qg,set:Jg,delete:Zg,clear:em,forEach:Pa(!1,!0)},r={get(i){return Ma(this,i,!0)},get size(){return Ra(this,!0)},has(i){return Oa.call(this,i,!0)},add:Nn("add"),set:Nn("set"),delete:Nn("delete"),clear:Nn("clear"),forEach:Pa(!0,!1)},n={get(i){return Ma(this,i,!0,!0)},get size(){return Ra(this,!0)},has(i){return Oa.call(this,i,!0)},add:Nn("add"),set:Nn("set"),delete:Nn("delete"),clear:Nn("clear"),forEach:Pa(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{t[i]=ka(i,!1,!1),r[i]=ka(i,!0,!1),e[i]=ka(i,!1,!0),n[i]=ka(i,!0,!0)}),[t,r,e,n]}const[ST,TT,xT,AT]=ET();function mp(t,e){const r=e?t?AT:xT:t?TT:ST;return(n,s,i)=>s==="__v_isReactive"?!t:s==="__v_isReadonly"?t:s==="__v_raw"?n:Reflect.get(Ue(r,s)&&s in n?r:n,s,i)}const CT={get:mp(!1,!1)},IT={get:mp(!1,!0)},MT={get:mp(!0,!1)};const ow=new WeakMap,aw=new WeakMap,lw=new WeakMap,OT=new WeakMap;function RT(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function PT(t){return t.__v_skip||!Object.isExtensible(t)?0:RT(tT(t))}function bp(t){return Qo(t)?t:yp(t,!1,wT,CT,ow)}function kT(t){return yp(t,!1,_T,IT,aw)}function uw(t){return yp(t,!0,vT,MT,lw)}function yp(t,e,r,n,s){if(!Je(t)||t.__v_raw&&!(e&&t.__v_isReactive))return t;const i=s.get(t);if(i)return i;const o=PT(t);if(o===0)return t;const a=new Proxy(t,o===2?n:r);return s.set(t,a),a}function Fo(t){return Qo(t)?Fo(t.__v_raw):!!(t&&t.__v_isReactive)}function Qo(t){return!!(t&&t.__v_isReadonly)}function Dl(t){return!!(t&&t.__v_isShallow)}function cw(t){return t?!!t.__v_raw:!1}function He(t){const e=t&&t.__v_raw;return e?He(e):t}function LT(t){return Object.isExtensible(t)&&Gy(t,"__v_skip",!0),t}const Jo=t=>Je(t)?bp(t):t,wp=t=>Je(t)?uw(t):t;class fw{constructor(e,r,n,s){this.getter=e,this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new dp(()=>e(this._value),()=>sl(this,this.effect._dirtyLevel===3?3:4)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=n}get value(){const e=He(this);return(!e._cacheable||e.effect.dirty)&&Jn(e._value,e._value=e.effect.run())&&sl(e,5),dw(e),e.effect._dirtyLevel>=2&&sl(e,3),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function NT(t,e,r=!1){let n,s;const i=Be(t);return i?(n=t,s=lr):(n=t.get,s=t.set),new fw(n,s,i||!s,r)}function dw(t){var e;Xn&&Bi&&(t=He(t),ew(Bi,(e=t.dep)!=null?e:t.dep=rw(()=>t.dep=void 0,t instanceof fw?t:void 0)))}function sl(t,e=5,r,n){t=He(t);const s=t.dep;s&&tw(s,e)}function Ht(t){return!!(t&&t.__v_isRef===!0)}function Pj(t){return DT(t,!1)}function DT(t,e){return Ht(t)?t:new BT(t,e)}class BT{constructor(e,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?e:He(e),this._value=r?e:Jo(e)}get value(){return dw(this),this._value}set value(e){const r=this.__v_isShallow||Dl(e)||Qo(e);e=r?e:He(e),Jn(e,this._rawValue)&&(this._rawValue,this._rawValue=e,this._value=r?e:Jo(e),sl(this,5))}}function $T(t){return Ht(t)?t.value:t}const FT={get:(t,e,r)=>$T(Reflect.get(t,e,r)),set:(t,e,r,n)=>{const s=t[e];return Ht(s)&&!Ht(r)?(s.value=r,!0):Reflect.set(t,e,r,n)}};function hw(t){return Fo(t)?t:new Proxy(t,FT)}/**
-* @vue/runtime-core v3.4.29
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function Qn(t,e,r,n){try{return n?t(...n):t()}catch(s){wu(s,e,r)}}function xr(t,e,r,n){if(Be(t)){const s=Qn(t,e,r,n);return s&&Vy(s)&&s.catch(i=>{wu(i,e,r)}),s}if(De(t)){const s=[];for(let i=0;i<t.length;i++)s.push(xr(t[i],e,r,n));return s}}function wu(t,e,r,n=!0){const s=e?e.vnode:null;if(e){let i=e.parent;const o=e.proxy,a=`https://vuejs.org/error-reference/#runtime-${r}`;for(;i;){const u=i.ec;if(u){for(let c=0;c<u.length;c++)if(u[c](t,o,a)===!1)return}i=i.parent}const l=e.appContext.config.errorHandler;if(l){ni(),Qn(l,null,10,[t,o,a]),ii();return}}UT(t,r,s,n)}function UT(t,e,r,n=!0){console.error(t)}let Zo=!1,Ff=!1;const Mt=[];let Dr=0;const Rs=[];let Hn=null,Ai=0;const pw=Promise.resolve();let vp=null;function gw(t){const e=vp||pw;return t?e.then(this?t.bind(this):t):e}function jT(t){let e=Dr+1,r=Mt.length;for(;e<r;){const n=e+r>>>1,s=Mt[n],i=ea(s);i<t||i===t&&s.pre?e=n+1:r=n}return e}function _p(t){(!Mt.length||!Mt.includes(t,Zo&&t.allowRecurse?Dr+1:Dr))&&(t.id==null?Mt.push(t):Mt.splice(jT(t.id),0,t),mw())}function mw(){!Zo&&!Ff&&(Ff=!0,vp=pw.then(yw))}function WT(t){const e=Mt.indexOf(t);e>Dr&&Mt.splice(e,1)}function zT(t){De(t)?Rs.push(...t):(!Hn||!Hn.includes(t,t.allowRecurse?Ai+1:Ai))&&Rs.push(t),mw()}function tm(t,e,r=Zo?Dr+1:0){for(;r<Mt.length;r++){const n=Mt[r];if(n&&n.pre){if(t&&n.id!==t.uid)continue;Mt.splice(r,1),r--,n()}}}function bw(t){if(Rs.length){const e=[...new Set(Rs)].sort((r,n)=>ea(r)-ea(n));if(Rs.length=0,Hn){Hn.push(...e);return}for(Hn=e,Ai=0;Ai<Hn.length;Ai++){const r=Hn[Ai];r.active!==!1&&r()}Hn=null,Ai=0}}const ea=t=>t.id==null?1/0:t.id,HT=(t,e)=>{const r=ea(t)-ea(e);if(r===0){if(t.pre&&!e.pre)return-1;if(e.pre&&!t.pre)return 1}return r};function yw(t){Ff=!1,Zo=!0,Mt.sort(HT);try{for(Dr=0;Dr<Mt.length;Dr++){const e=Mt[Dr];e&&e.active!==!1&&Qn(e,null,14)}}finally{Dr=0,Mt.length=0,bw(),Zo=!1,vp=null,(Mt.length||Rs.length)&&yw()}}function VT(t,e,...r){if(t.isUnmounted)return;const n=t.vnode.props||Qe;let s=r;const i=e.startsWith("update:"),o=i&&e.slice(7);if(o&&o in n){const c=`${o==="modelValue"?"model":o}Modifiers`,{number:f,trim:d}=n[c]||Qe;d&&(s=r.map(g=>dt(g)?g.trim():g)),f&&(s=r.map(Nl))}let a,l=n[a=pc(e)]||n[a=pc(Hr(e))];!l&&i&&(l=n[a=pc(to(e))]),l&&xr(l,t,6,s);const u=n[a+"Once"];if(u){if(!t.emitted)t.emitted={};else if(t.emitted[a])return;t.emitted[a]=!0,xr(u,t,6,s)}}function ww(t,e,r=!1){const n=e.emitsCache,s=n.get(t);if(s!==void 0)return s;const i=t.emits;let o={},a=!1;if(!Be(t)){const l=u=>{const c=ww(u,e,!0);c&&(a=!0,mt(o,c))};!r&&e.mixins.length&&e.mixins.forEach(l),t.extends&&l(t.extends),t.mixins&&t.mixins.forEach(l)}return!i&&!a?(Je(t)&&n.set(t,null),null):(De(i)?i.forEach(l=>o[l]=null):mt(o,i),Je(t)&&n.set(t,o),o)}function vu(t,e){return!t||!gu(e)?!1:(e=e.slice(2).replace(/Once$/,""),Ue(t,e[0].toLowerCase()+e.slice(1))||Ue(t,to(e))||Ue(t,e))}let wt=null,_u=null;function Bl(t){const e=wt;return wt=t,_u=t&&t.type.__scopeId||null,e}function kj(t){_u=t}function Lj(){_u=null}function qT(t,e=wt,r){if(!e||t._n)return t;const n=(...s)=>{n._d&&gm(-1);const i=Bl(e);let o;try{o=t(...s)}finally{Bl(i),n._d&&gm(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function mc(t){const{type:e,vnode:r,proxy:n,withProxy:s,propsOptions:[i],slots:o,attrs:a,emit:l,render:u,renderCache:c,props:f,data:d,setupState:g,ctx:m,inheritAttrs:y}=t,E=Bl(t);let _,S;try{if(r.shapeFlag&4){const A=s||n,k=A;_=Nr(u.call(k,A,c,f,g,d,m)),S=a}else{const A=e;_=Nr(A.length>1?A(f,{attrs:a,slots:o,emit:l}):A(f,null)),S=e.props?a:YT(a)}}catch(A){Ho.length=0,wu(A,t,1),_=Ar(Zn)}let v=_;if(S&&y!==!1){const A=Object.keys(S),{shapeFlag:k}=v;A.length&&k&7&&(i&&A.some(op)&&(S=GT(S,i)),v=Bs(v,S,!1,!0))}return r.dirs&&(v=Bs(v,null,!1,!0),v.dirs=v.dirs?v.dirs.concat(r.dirs):r.dirs),r.transition&&(v.transition=r.transition),_=v,Bl(E),_}const YT=t=>{let e;for(const r in t)(r==="class"||r==="style"||gu(r))&&((e||(e={}))[r]=t[r]);return e},GT=(t,e)=>{const r={};for(const n in t)(!op(n)||!(n.slice(9)in e))&&(r[n]=t[n]);return r};function KT(t,e,r){const{props:n,children:s,component:i}=t,{props:o,children:a,patchFlag:l}=e,u=i.emitsOptions;if(e.dirs||e.transition)return!0;if(r&&l>=0){if(l&1024)return!0;if(l&16)return n?rm(n,o,u):!!o;if(l&8){const c=e.dynamicProps;for(let f=0;f<c.length;f++){const d=c[f];if(o[d]!==n[d]&&!vu(u,d))return!0}}}else return(s||a)&&(!a||!a.$stable)?!0:n===o?!1:n?o?rm(n,o,u):!0:!!o;return!1}function rm(t,e,r){const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!0;for(let s=0;s<n.length;s++){const i=n[s];if(e[i]!==t[i]&&!vu(r,i))return!0}return!1}function XT({vnode:t,parent:e},r){for(;e;){const n=e.subTree;if(n.suspense&&n.suspense.activeBranch===t&&(n.el=t.el),n===t)(t=e.vnode).el=r,e=e.parent;else break}}const QT="components";function Nj(t,e){return ZT(QT,t,!0,e)||t}const JT=Symbol.for("v-ndc");function ZT(t,e,r=!0,n=!1){const s=wt||Ot;if(s){const i=s.type;{const a=Qx(i,!1);if(a&&(a===e||a===Hr(e)||a===bu(Hr(e))))return i}const o=nm(s[t]||i[t],e)||nm(s.appContext[t],e);return!o&&n?i:o}}function nm(t,e){return t&&(t[e]||t[Hr(e)]||t[bu(Hr(e))])}const ex=t=>t.__isSuspense;function tx(t,e){e&&e.pendingBranch?De(t)?e.effects.push(...t):e.effects.push(t):zT(t)}function Eu(t,e,r=Ot,n=!1){if(r){const s=r[t]||(r[t]=[]),i=e.__weh||(e.__weh=(...o)=>{ni();const a=da(r),l=xr(e,r,t,o);return a(),ii(),l});return n?s.unshift(i):s.push(i),i}}const In=t=>(e,r=Ot)=>{(!Tu||t==="sp")&&Eu(t,(...n)=>e(...n),r)},rx=In("bm"),nx=In("m"),ix=In("bu"),sx=In("u"),ox=In("bum"),vw=In("um"),ax=In("sp"),lx=In("rtg"),ux=In("rtc");function cx(t,e=Ot){Eu("ec",t,e)}function Dj(t,e){if(wt===null)return t;const r=xu(wt),n=t.dirs||(t.dirs=[]);for(let s=0;s<e.length;s++){let[i,o,a,l=Qe]=e[s];i&&(Be(i)&&(i={mounted:i,updated:i}),i.deep&&Yn(o),n.push({dir:i,instance:r,value:o,oldValue:void 0,arg:a,modifiers:l}))}return t}function di(t,e,r,n){const s=t.dirs,i=e&&e.dirs;for(let o=0;o<s.length;o++){const a=s[o];i&&(a.oldValue=i[o].value);let l=a.dir[n];l&&(ni(),xr(l,r,8,[t.el,a,t,e]),ii())}}function Bj(t,e,r,n){let s;const i=r;if(De(t)||dt(t)){s=new Array(t.length);for(let o=0,a=t.length;o<a;o++)s[o]=e(t[o],o,void 0,i)}else if(typeof t=="number"){s=new Array(t);for(let o=0;o<t;o++)s[o]=e(o+1,o,void 0,i)}else if(Je(t))if(t[Symbol.iterator])s=Array.from(t,(o,a)=>e(o,a,void 0,i));else{const o=Object.keys(t);s=new Array(o.length);for(let a=0,l=o.length;a<l;a++){const u=o[a];s[a]=e(t[u],u,a,i)}}else s=[];return s}/*! #__NO_SIDE_EFFECTS__ */function $j(t,e){return Be(t)?mt({name:t.name},e,{setup:t}):t}const Uo=t=>!!t.type.__asyncLoader;function Fj(t,e,r={},n,s){if(wt.isCE||wt.parent&&Uo(wt.parent)&&wt.parent.isCE)return e!=="default"&&(r.name=e),Ar("slot",r,n&&n());let i=t[e];i&&i._c&&(i._d=!1),$w();const o=i&&_w(i(r)),a=Uw(vr,{key:r.key||o&&o.key||`_${e}`},o||(n?n():[]),o&&t._===1?64:-2);return!s&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),i&&i._c&&(i._d=!0),a}function _w(t){return t.some(e=>jw(e)?!(e.type===Zn||e.type===vr&&!_w(e.children)):!0)?t:null}const Uf=t=>t?Hw(t)?xu(t):Uf(t.parent):null,jo=mt(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>Uf(t.parent),$root:t=>Uf(t.root),$emit:t=>t.emit,$options:t=>Ep(t),$forceUpdate:t=>t.f||(t.f=()=>{t.effect.dirty=!0,_p(t.update)}),$nextTick:t=>t.n||(t.n=gw.bind(t.proxy)),$watch:t=>Px.bind(t)}),bc=(t,e)=>t!==Qe&&!t.__isScriptSetup&&Ue(t,e),fx={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:r,setupState:n,data:s,props:i,accessCache:o,type:a,appContext:l}=t;let u;if(e[0]!=="$"){const g=o[e];if(g!==void 0)switch(g){case 1:return n[e];case 2:return s[e];case 4:return r[e];case 3:return i[e]}else{if(bc(n,e))return o[e]=1,n[e];if(s!==Qe&&Ue(s,e))return o[e]=2,s[e];if((u=t.propsOptions[0])&&Ue(u,e))return o[e]=3,i[e];if(r!==Qe&&Ue(r,e))return o[e]=4,r[e];jf&&(o[e]=0)}}const c=jo[e];let f,d;if(c)return e==="$attrs"&&zt(t.attrs,"get",""),c(t);if((f=a.__cssModules)&&(f=f[e]))return f;if(r!==Qe&&Ue(r,e))return o[e]=4,r[e];if(d=l.config.globalProperties,Ue(d,e))return d[e]},set({_:t},e,r){const{data:n,setupState:s,ctx:i}=t;return bc(s,e)?(s[e]=r,!0):n!==Qe&&Ue(n,e)?(n[e]=r,!0):Ue(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(i[e]=r,!0)},has({_:{data:t,setupState:e,accessCache:r,ctx:n,appContext:s,propsOptions:i}},o){let a;return!!r[o]||t!==Qe&&Ue(t,o)||bc(e,o)||(a=i[0])&&Ue(a,o)||Ue(n,o)||Ue(jo,o)||Ue(s.config.globalProperties,o)},defineProperty(t,e,r){return r.get!=null?t._.accessCache[e]=0:Ue(r,"value")&&this.set(t,e,r.value,null),Reflect.defineProperty(t,e,r)}};function im(t){return De(t)?t.reduce((e,r)=>(e[r]=null,e),{}):t}let jf=!0;function dx(t){const e=Ep(t),r=t.proxy,n=t.ctx;jf=!1,e.beforeCreate&&sm(e.beforeCreate,t,"bc");const{data:s,computed:i,methods:o,watch:a,provide:l,inject:u,created:c,beforeMount:f,mounted:d,beforeUpdate:g,updated:m,activated:y,deactivated:E,beforeDestroy:_,beforeUnmount:S,destroyed:v,unmounted:A,render:k,renderTracked:x,renderTriggered:D,errorCaptured:N,serverPrefetch:B,expose:q,inheritAttrs:K,components:C,directives:M,filters:L}=e;if(u&&hx(u,n,null),o)for(const z in o){const F=o[z];Be(F)&&(n[z]=F.bind(r))}if(s){const z=s.call(r,r);Je(z)&&(t.data=bp(z))}if(jf=!0,i)for(const z in i){const F=i[z],ne=Be(F)?F.bind(r,r):Be(F.get)?F.get.bind(r,r):lr,ce=!Be(F)&&Be(F.set)?F.set.bind(r):lr,re=Zx({get:ne,set:ce});Object.defineProperty(n,z,{enumerable:!0,configurable:!0,get:()=>re.value,set:R=>re.value=R})}if(a)for(const z in a)Ew(a[z],n,r,z);if(l){const z=Be(l)?l.call(r):l;Reflect.ownKeys(z).forEach(F=>{vx(F,z[F])})}c&&sm(c,t,"c");function G(z,F){De(F)?F.forEach(ne=>z(ne.bind(r))):F&&z(F.bind(r))}if(G(rx,f),G(nx,d),G(ix,g),G(sx,m),G(kx,y),G(Lx,E),G(cx,N),G(ux,x),G(lx,D),G(ox,S),G(vw,A),G(ax,B),De(q))if(q.length){const z=t.exposed||(t.exposed={});q.forEach(F=>{Object.defineProperty(z,F,{get:()=>r[F],set:ne=>r[F]=ne})})}else t.exposed||(t.exposed={});k&&t.render===lr&&(t.render=k),K!=null&&(t.inheritAttrs=K),C&&(t.components=C),M&&(t.directives=M)}function hx(t,e,r=lr){De(t)&&(t=Wf(t));for(const n in t){const s=t[n];let i;Je(s)?"default"in s?i=ol(s.from||n,s.default,!0):i=ol(s.from||n):i=ol(s),Ht(i)?Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):e[n]=i}}function sm(t,e,r){xr(De(t)?t.map(n=>n.bind(e.proxy)):t.bind(e.proxy),e,r)}function Ew(t,e,r,n){const s=n.includes(".")?kw(r,n):()=>r[n];if(dt(t)){const i=e[t];Be(i)&&wc(s,i)}else if(Be(t))wc(s,t.bind(r));else if(Je(t))if(De(t))t.forEach(i=>Ew(i,e,r,n));else{const i=Be(t.handler)?t.handler.bind(r):e[t.handler];Be(i)&&wc(s,i,t)}}function Ep(t){const e=t.type,{mixins:r,extends:n}=e,{mixins:s,optionsCache:i,config:{optionMergeStrategies:o}}=t.appContext,a=i.get(e);let l;return a?l=a:!s.length&&!r&&!n?l=e:(l={},s.length&&s.forEach(u=>$l(l,u,o,!0)),$l(l,e,o)),Je(e)&&i.set(e,l),l}function $l(t,e,r,n=!1){const{mixins:s,extends:i}=e;i&&$l(t,i,r,!0),s&&s.forEach(o=>$l(t,o,r,!0));for(const o in e)if(!(n&&o==="expose")){const a=px[o]||r&&r[o];t[o]=a?a(t[o],e[o]):e[o]}return t}const px={data:om,props:am,emits:am,methods:Io,computed:Io,beforeCreate:kt,created:kt,beforeMount:kt,mounted:kt,beforeUpdate:kt,updated:kt,beforeDestroy:kt,beforeUnmount:kt,destroyed:kt,unmounted:kt,activated:kt,deactivated:kt,errorCaptured:kt,serverPrefetch:kt,components:Io,directives:Io,watch:mx,provide:om,inject:gx};function om(t,e){return e?t?function(){return mt(Be(t)?t.call(this,this):t,Be(e)?e.call(this,this):e)}:e:t}function gx(t,e){return Io(Wf(t),Wf(e))}function Wf(t){if(De(t)){const e={};for(let r=0;r<t.length;r++)e[t[r]]=t[r];return e}return t}function kt(t,e){return t?[...new Set([].concat(t,e))]:e}function Io(t,e){return t?mt(Object.create(null),t,e):e}function am(t,e){return t?De(t)&&De(e)?[...new Set([...t,...e])]:mt(Object.create(null),im(t),im(e??{})):e}function mx(t,e){if(!t)return e;if(!e)return t;const r=mt(Object.create(null),t);for(const n in e)r[n]=kt(t[n],e[n]);return r}function Sw(){return{app:null,config:{isNativeTag:ZS,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let bx=0;function yx(t,e){return function(n,s=null){Be(n)||(n=mt({},n)),s!=null&&!Je(s)&&(s=null);const i=Sw(),o=new WeakSet;let a=!1;const l=i.app={_uid:bx++,_component:n,_props:s,_container:null,_context:i,_instance:null,version:eA,get config(){return i.config},set config(u){},use(u,...c){return o.has(u)||(u&&Be(u.install)?(o.add(u),u.install(l,...c)):Be(u)&&(o.add(u),u(l,...c))),l},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),l},component(u,c){return c?(i.components[u]=c,l):i.components[u]},directive(u,c){return c?(i.directives[u]=c,l):i.directives[u]},mount(u,c,f){if(!a){const d=Ar(n,s);return d.appContext=i,f===!0?f="svg":f===!1&&(f=void 0),c&&e?e(d,u):t(d,u,f),a=!0,l._container=u,u.__vue_app__=l,xu(d.component)}},unmount(){a&&(t(null,l._container),delete l._container.__vue_app__)},provide(u,c){return i.provides[u]=c,l},runWithContext(u){const c=Wo;Wo=l;try{return u()}finally{Wo=c}}};return l}}let Wo=null;function vx(t,e){if(Ot){let r=Ot.provides;const n=Ot.parent&&Ot.parent.provides;n===r&&(r=Ot.provides=Object.create(n)),r[t]=e}}function ol(t,e,r=!1){const n=Ot||wt;if(n||Wo){const s=n?n.parent==null?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:Wo._context.provides;if(s&&t in s)return s[t];if(arguments.length>1)return r&&Be(e)?e.call(n&&n.proxy):e}}const Tw={},xw=()=>Object.create(Tw),Aw=t=>Object.getPrototypeOf(t)===Tw;function _x(t,e,r,n=!1){const s={},i=xw();t.propsDefaults=Object.create(null),Cw(t,e,s,i);for(const o in t.propsOptions[0])o in s||(s[o]=void 0);r?t.props=n?s:kT(s):t.type.props?t.props=s:t.props=i,t.attrs=i}function Ex(t,e,r,n){const{props:s,attrs:i,vnode:{patchFlag:o}}=t,a=He(s),[l]=t.propsOptions;let u=!1;if((n||o>0)&&!(o&16)){if(o&8){const c=t.vnode.dynamicProps;for(let f=0;f<c.length;f++){let d=c[f];if(vu(t.emitsOptions,d))continue;const g=e[d];if(l)if(Ue(i,d))g!==i[d]&&(i[d]=g,u=!0);else{const m=Hr(d);s[m]=zf(l,a,m,g,t,!1)}else g!==i[d]&&(i[d]=g,u=!0)}}}else{Cw(t,e,s,i)&&(u=!0);let c;for(const f in a)(!e||!Ue(e,f)&&((c=to(f))===f||!Ue(e,c)))&&(l?r&&(r[f]!==void 0||r[c]!==void 0)&&(s[f]=zf(l,a,f,void 0,t,!0)):delete s[f]);if(i!==a)for(const f in i)(!e||!Ue(e,f))&&(delete i[f],u=!0)}u&&hn(t.attrs,"set","")}function Cw(t,e,r,n){const[s,i]=t.propsOptions;let o=!1,a;if(e)for(let l in e){if($o(l))continue;const u=e[l];let c;s&&Ue(s,c=Hr(l))?!i||!i.includes(c)?r[c]=u:(a||(a={}))[c]=u:vu(t.emitsOptions,l)||(!(l in n)||u!==n[l])&&(n[l]=u,o=!0)}if(i){const l=He(r),u=a||Qe;for(let c=0;c<i.length;c++){const f=i[c];r[f]=zf(s,l,f,u[f],t,!Ue(u,f))}}return o}function zf(t,e,r,n,s,i){const o=t[r];if(o!=null){const a=Ue(o,"default");if(a&&n===void 0){const l=o.default;if(o.type!==Function&&!o.skipFactory&&Be(l)){const{propsDefaults:u}=s;if(r in u)n=u[r];else{const c=da(s);n=u[r]=l.call(null,e),c()}}else n=l}o[0]&&(i&&!a?n=!1:o[1]&&(n===""||n===to(r))&&(n=!0))}return n}function Iw(t,e,r=!1){const n=e.propsCache,s=n.get(t);if(s)return s;const i=t.props,o={},a=[];let l=!1;if(!Be(t)){const c=f=>{l=!0;const[d,g]=Iw(f,e,!0);mt(o,d),g&&a.push(...g)};!r&&e.mixins.length&&e.mixins.forEach(c),t.extends&&c(t.extends),t.mixins&&t.mixins.forEach(c)}if(!i&&!l)return Je(t)&&n.set(t,Ms),Ms;if(De(i))for(let c=0;c<i.length;c++){const f=Hr(i[c]);lm(f)&&(o[f]=Qe)}else if(i)for(const c in i){const f=Hr(c);if(lm(f)){const d=i[c],g=o[f]=De(d)||Be(d)?{type:d}:mt({},d);if(g){const m=fm(Boolean,g.type),y=fm(String,g.type);g[0]=m>-1,g[1]=y<0||m<y,(m>-1||Ue(g,"default"))&&a.push(f)}}}const u=[o,a];return Je(t)&&n.set(t,u),u}function lm(t){return t[0]!=="$"&&!$o(t)}function um(t){return t===null?"null":typeof t=="function"?t.name||"":typeof t=="object"&&t.constructor&&t.constructor.name||""}function cm(t,e){return um(t)===um(e)}function fm(t,e){return De(e)?e.findIndex(r=>cm(r,t)):Be(e)&&cm(e,t)?0:-1}const Mw=t=>t[0]==="_"||t==="$stable",Sp=t=>De(t)?t.map(Nr):[Nr(t)],Sx=(t,e,r)=>{if(e._n)return e;const n=qT((...s)=>Sp(e(...s)),r);return n._c=!1,n},Ow=(t,e,r)=>{const n=t._ctx;for(const s in t){if(Mw(s))continue;const i=t[s];if(Be(i))e[s]=Sx(s,i,n);else if(i!=null){const o=Sp(i);e[s]=()=>o}}},Rw=(t,e)=>{const r=Sp(e);t.slots.default=()=>r},Tx=(t,e)=>{const r=t.slots=xw();if(t.vnode.shapeFlag&32){const n=e._;n?(mt(r,e),Gy(r,"_",n,!0)):Ow(e,r)}else e&&Rw(t,e)},xx=(t,e,r)=>{const{vnode:n,slots:s}=t;let i=!0,o=Qe;if(n.shapeFlag&32){const a=e._;a?r&&a===1?i=!1:(mt(s,e),!r&&a===1&&delete s._):(i=!e.$stable,Ow(e,s)),o=e}else e&&(Rw(t,e),o={default:1});if(i)for(const a in s)!Mw(a)&&o[a]==null&&delete s[a]};function Hf(t,e,r,n,s=!1){if(De(t)){t.forEach((d,g)=>Hf(d,e&&(De(e)?e[g]:e),r,n,s));return}if(Uo(n)&&!s)return;const i=n.shapeFlag&4?xu(n.component):n.el,o=s?null:i,{i:a,r:l}=t,u=e&&e.r,c=a.refs===Qe?a.refs={}:a.refs,f=a.setupState;if(u!=null&&u!==l&&(dt(u)?(c[u]=null,Ue(f,u)&&(f[u]=null)):Ht(u)&&(u.value=null)),Be(l))Qn(l,a,12,[o,c]);else{const d=dt(l),g=Ht(l);if(d||g){const m=()=>{if(t.f){const y=d?Ue(f,l)?f[l]:c[l]:l.value;s?De(y)&&ap(y,i):De(y)?y.includes(i)||y.push(i):d?(c[l]=[i],Ue(f,l)&&(f[l]=c[l])):(l.value=[i],t.k&&(c[t.k]=l.value))}else d?(c[l]=o,Ue(f,l)&&(f[l]=o)):g&&(l.value=o,t.k&&(c[t.k]=o))};o?(m.id=-1,Ut(m,r)):m()}}}const Ut=tx;function Ax(t){return Cx(t)}function Cx(t,e){const r=Ky();r.__VUE__=!0;const{insert:n,remove:s,patchProp:i,createElement:o,createText:a,createComment:l,setText:u,setElementText:c,parentNode:f,nextSibling:d,setScopeId:g=lr,insertStaticContent:m}=t,y=(I,P,O,j=null,W=null,le=null,fe=void 0,V=null,te=!!P.dynamicChildren)=>{if(I===P)return;I&&!po(I,P)&&(j=X(I),R(I,W,le,!0),I=null),P.patchFlag===-2&&(te=!1,P.dynamicChildren=null);const{type:$,ref:J,shapeFlag:ae}=P;switch($){case Su:E(I,P,O,j);break;case Zn:_(I,P,O,j);break;case al:I==null&&S(P,O,j,fe);break;case vr:C(I,P,O,j,W,le,fe,V,te);break;default:ae&1?k(I,P,O,j,W,le,fe,V,te):ae&6?M(I,P,O,j,W,le,fe,V,te):(ae&64||ae&128)&&$.process(I,P,O,j,W,le,fe,V,te,be)}J!=null&&W&&Hf(J,I&&I.ref,le,P||I,!P)},E=(I,P,O,j)=>{if(I==null)n(P.el=a(P.children),O,j);else{const W=P.el=I.el;P.children!==I.children&&u(W,P.children)}},_=(I,P,O,j)=>{I==null?n(P.el=l(P.children||""),O,j):P.el=I.el},S=(I,P,O,j)=>{[I.el,I.anchor]=m(I.children,P,O,j,I.el,I.anchor)},v=({el:I,anchor:P},O,j)=>{let W;for(;I&&I!==P;)W=d(I),n(I,O,j),I=W;n(P,O,j)},A=({el:I,anchor:P})=>{let O;for(;I&&I!==P;)O=d(I),s(I),I=O;s(P)},k=(I,P,O,j,W,le,fe,V,te)=>{P.type==="svg"?fe="svg":P.type==="math"&&(fe="mathml"),I==null?x(P,O,j,W,le,fe,V,te):B(I,P,W,le,fe,V,te)},x=(I,P,O,j,W,le,fe,V)=>{let te,$;const{props:J,shapeFlag:ae,transition:me,dirs:w}=I;if(te=I.el=o(I.type,le,J&&J.is,J),ae&8?c(te,I.children):ae&16&&N(I.children,te,null,j,W,yc(I,le),fe,V),w&&di(I,null,j,"created"),D(te,I,I.scopeId,fe,j),J){for(const h in J)h!=="value"&&!$o(h)&&i(te,h,null,J[h],le,I.children,j,W,pe);"value"in J&&i(te,"value",null,J.value,le),($=J.onVnodeBeforeMount)&&Mr($,j,I)}w&&di(I,null,j,"beforeMount");const p=Ix(W,me);p&&me.beforeEnter(te),n(te,P,O),(($=J&&J.onVnodeMounted)||p||w)&&Ut(()=>{$&&Mr($,j,I),p&&me.enter(te),w&&di(I,null,j,"mounted")},W)},D=(I,P,O,j,W)=>{if(O&&g(I,O),j)for(let le=0;le<j.length;le++)g(I,j[le]);if(W){let le=W.subTree;if(P===le){const fe=W.vnode;D(I,fe,fe.scopeId,fe.slotScopeIds,W.parent)}}},N=(I,P,O,j,W,le,fe,V,te=0)=>{for(let $=te;$<I.length;$++){const J=I[$]=V?Vn(I[$]):Nr(I[$]);y(null,J,P,O,j,W,le,fe,V)}},B=(I,P,O,j,W,le,fe)=>{const V=P.el=I.el;let{patchFlag:te,dynamicChildren:$,dirs:J}=P;te|=I.patchFlag&16;const ae=I.props||Qe,me=P.props||Qe;let w;if(O&&hi(O,!1),(w=me.onVnodeBeforeUpdate)&&Mr(w,O,P,I),J&&di(P,I,O,"beforeUpdate"),O&&hi(O,!0),$?q(I.dynamicChildren,$,V,O,j,yc(P,W),le):fe||F(I,P,V,null,O,j,yc(P,W),le,!1),te>0){if(te&16)K(V,P,ae,me,O,j,W);else if(te&2&&ae.class!==me.class&&i(V,"class",null,me.class,W),te&4&&i(V,"style",ae.style,me.style,W),te&8){const p=P.dynamicProps;for(let h=0;h<p.length;h++){const b=p[h],T=ae[b],U=me[b];(U!==T||b==="value")&&i(V,b,T,U,W,I.children,O,j,pe)}}te&1&&I.children!==P.children&&c(V,P.children)}else!fe&&$==null&&K(V,P,ae,me,O,j,W);((w=me.onVnodeUpdated)||J)&&Ut(()=>{w&&Mr(w,O,P,I),J&&di(P,I,O,"updated")},j)},q=(I,P,O,j,W,le,fe)=>{for(let V=0;V<P.length;V++){const te=I[V],$=P[V],J=te.el&&(te.type===vr||!po(te,$)||te.shapeFlag&70)?f(te.el):O;y(te,$,J,null,j,W,le,fe,!0)}},K=(I,P,O,j,W,le,fe)=>{if(O!==j){if(O!==Qe)for(const V in O)!$o(V)&&!(V in j)&&i(I,V,O[V],null,fe,P.children,W,le,pe);for(const V in j){if($o(V))continue;const te=j[V],$=O[V];te!==$&&V!=="value"&&i(I,V,$,te,fe,P.children,W,le,pe)}"value"in j&&i(I,"value",O.value,j.value,fe)}},C=(I,P,O,j,W,le,fe,V,te)=>{const $=P.el=I?I.el:a(""),J=P.anchor=I?I.anchor:a("");let{patchFlag:ae,dynamicChildren:me,slotScopeIds:w}=P;w&&(V=V?V.concat(w):w),I==null?(n($,O,j),n(J,O,j),N(P.children||[],O,J,W,le,fe,V,te)):ae>0&&ae&64&&me&&I.dynamicChildren?(q(I.dynamicChildren,me,O,W,le,fe,V),(P.key!=null||W&&P===W.subTree)&&Tp(I,P,!0)):F(I,P,O,J,W,le,fe,V,te)},M=(I,P,O,j,W,le,fe,V,te)=>{P.slotScopeIds=V,I==null?P.shapeFlag&512?W.ctx.activate(P,O,j,fe,te):L(P,O,j,W,le,fe,te):H(I,P,te)},L=(I,P,O,j,W,le,fe)=>{const V=I.component=qx(I,j,W);if(Lw(I)&&(V.ctx.renderer=be),Yx(V),V.asyncDep){if(W&&W.registerDep(V,G,fe),!I.el){const te=V.subTree=Ar(Zn);_(null,te,P,O)}}else G(V,I,P,O,W,le,fe)},H=(I,P,O)=>{const j=P.component=I.component;if(KT(I,P,O))if(j.asyncDep&&!j.asyncResolved){z(j,P,O);return}else j.next=P,WT(j.update),j.effect.dirty=!0,j.update();else P.el=I.el,j.vnode=P},G=(I,P,O,j,W,le,fe)=>{const V=()=>{if(I.isMounted){let{next:J,bu:ae,u:me,parent:w,vnode:p}=I;{const ee=Pw(I);if(ee){J&&(J.el=p.el,z(I,J,fe)),ee.asyncDep.then(()=>{I.isUnmounted||V()});return}}let h=J,b;hi(I,!1),J?(J.el=p.el,z(I,J,fe)):J=p,ae&&il(ae),(b=J.props&&J.props.onVnodeBeforeUpdate)&&Mr(b,w,J,p),hi(I,!0);const T=mc(I),U=I.subTree;I.subTree=T,y(U,T,f(U.el),X(U),I,W,le),J.el=T.el,h===null&&XT(I,T.el),me&&Ut(me,W),(b=J.props&&J.props.onVnodeUpdated)&&Ut(()=>Mr(b,w,J,p),W)}else{let J;const{el:ae,props:me}=P,{bm:w,m:p,parent:h}=I,b=Uo(P);if(hi(I,!1),w&&il(w),!b&&(J=me&&me.onVnodeBeforeMount)&&Mr(J,h,P),hi(I,!0),ae&&ue){const T=()=>{I.subTree=mc(I),ue(ae,I.subTree,I,W,null)};b?P.type.__asyncLoader().then(()=>!I.isUnmounted&&T()):T()}else{const T=I.subTree=mc(I);y(null,T,O,j,I,W,le),P.el=T.el}if(p&&Ut(p,W),!b&&(J=me&&me.onVnodeMounted)){const T=P;Ut(()=>Mr(J,h,T),W)}(P.shapeFlag&256||h&&Uo(h.vnode)&&h.vnode.shapeFlag&256)&&I.a&&Ut(I.a,W),I.isMounted=!0,P=O=j=null}},te=I.effect=new dp(V,lr,()=>_p($),I.scope),$=I.update=()=>{te.dirty&&te.run()};$.id=I.uid,hi(I,!0),$()},z=(I,P,O)=>{P.component=I;const j=I.vnode.props;I.vnode=P,I.next=null,Ex(I,P.props,j,O),xx(I,P.children,O),ni(),tm(I),ii()},F=(I,P,O,j,W,le,fe,V,te=!1)=>{const $=I&&I.children,J=I?I.shapeFlag:0,ae=P.children,{patchFlag:me,shapeFlag:w}=P;if(me>0){if(me&128){ce($,ae,O,j,W,le,fe,V,te);return}else if(me&256){ne($,ae,O,j,W,le,fe,V,te);return}}w&8?(J&16&&pe($,W,le),ae!==$&&c(O,ae)):J&16?w&16?ce($,ae,O,j,W,le,fe,V,te):pe($,W,le,!0):(J&8&&c(O,""),w&16&&N(ae,O,j,W,le,fe,V,te))},ne=(I,P,O,j,W,le,fe,V,te)=>{I=I||Ms,P=P||Ms;const $=I.length,J=P.length,ae=Math.min($,J);let me;for(me=0;me<ae;me++){const w=P[me]=te?Vn(P[me]):Nr(P[me]);y(I[me],w,O,null,W,le,fe,V,te)}$>J?pe(I,W,le,!0,!1,ae):N(P,O,j,W,le,fe,V,te,ae)},ce=(I,P,O,j,W,le,fe,V,te)=>{let $=0;const J=P.length;let ae=I.length-1,me=J-1;for(;$<=ae&&$<=me;){const w=I[$],p=P[$]=te?Vn(P[$]):Nr(P[$]);if(po(w,p))y(w,p,O,null,W,le,fe,V,te);else break;$++}for(;$<=ae&&$<=me;){const w=I[ae],p=P[me]=te?Vn(P[me]):Nr(P[me]);if(po(w,p))y(w,p,O,null,W,le,fe,V,te);else break;ae--,me--}if($>ae){if($<=me){const w=me+1,p=w<J?P[w].el:j;for(;$<=me;)y(null,P[$]=te?Vn(P[$]):Nr(P[$]),O,p,W,le,fe,V,te),$++}}else if($>me)for(;$<=ae;)R(I[$],W,le,!0),$++;else{const w=$,p=$,h=new Map;for($=p;$<=me;$++){const xe=P[$]=te?Vn(P[$]):Nr(P[$]);xe.key!=null&&h.set(xe.key,$)}let b,T=0;const U=me-p+1;let ee=!1,ye=0;const Ae=new Array(U);for($=0;$<U;$++)Ae[$]=0;for($=w;$<=ae;$++){const xe=I[$];if(T>=U){R(xe,W,le,!0);continue}let Oe;if(xe.key!=null)Oe=h.get(xe.key);else for(b=p;b<=me;b++)if(Ae[b-p]===0&&po(xe,P[b])){Oe=b;break}Oe===void 0?R(xe,W,le,!0):(Ae[Oe-p]=$+1,Oe>=ye?ye=Oe:ee=!0,y(xe,P[Oe],O,null,W,le,fe,V,te),T++)}const Re=ee?Mx(Ae):Ms;for(b=Re.length-1,$=U-1;$>=0;$--){const xe=p+$,Oe=P[xe],Me=xe+1<J?P[xe+1].el:j;Ae[$]===0?y(null,Oe,O,Me,W,le,fe,V,te):ee&&(b<0||$!==Re[b]?re(Oe,O,Me,2):b--)}}},re=(I,P,O,j,W=null)=>{const{el:le,type:fe,transition:V,children:te,shapeFlag:$}=I;if($&6){re(I.component.subTree,P,O,j);return}if($&128){I.suspense.move(P,O,j);return}if($&64){fe.move(I,P,O,be);return}if(fe===vr){n(le,P,O);for(let ae=0;ae<te.length;ae++)re(te[ae],P,O,j);n(I.anchor,P,O);return}if(fe===al){v(I,P,O);return}if(j!==2&&$&1&&V)if(j===0)V.beforeEnter(le),n(le,P,O),Ut(()=>V.enter(le),W);else{const{leave:ae,delayLeave:me,afterLeave:w}=V,p=()=>n(le,P,O),h=()=>{ae(le,()=>{p(),w&&w()})};me?me(le,p,h):h()}else n(le,P,O)},R=(I,P,O,j=!1,W=!1)=>{const{type:le,props:fe,ref:V,children:te,dynamicChildren:$,shapeFlag:J,patchFlag:ae,dirs:me,memoIndex:w}=I;if(V!=null&&Hf(V,null,O,I,!0),w!=null&&(P.renderCache[w]=void 0),J&256){P.ctx.deactivate(I);return}const p=J&1&&me,h=!Uo(I);let b;if(h&&(b=fe&&fe.onVnodeBeforeUnmount)&&Mr(b,P,I),J&6)ge(I.component,O,j);else{if(J&128){I.suspense.unmount(O,j);return}p&&di(I,null,P,"beforeUnmount"),J&64?I.type.remove(I,P,O,W,be,j):$&&(le!==vr||ae>0&&ae&64)?pe($,P,O,!1,!0):(le===vr&&ae&384||!W&&J&16)&&pe(te,P,O),j&&Q(I)}(h&&(b=fe&&fe.onVnodeUnmounted)||p)&&Ut(()=>{b&&Mr(b,P,I),p&&di(I,null,P,"unmounted")},O)},Q=I=>{const{type:P,el:O,anchor:j,transition:W}=I;if(P===vr){de(O,j);return}if(P===al){A(I);return}const le=()=>{s(O),W&&!W.persisted&&W.afterLeave&&W.afterLeave()};if(I.shapeFlag&1&&W&&!W.persisted){const{leave:fe,delayLeave:V}=W,te=()=>fe(O,le);V?V(I.el,le,te):te()}else le()},de=(I,P)=>{let O;for(;I!==P;)O=d(I),s(I),I=O;s(P)},ge=(I,P,O)=>{const{bum:j,scope:W,update:le,subTree:fe,um:V,m:te,a:$}=I;dm(te),dm($),j&&il(j),W.stop(),le&&(le.active=!1,R(fe,I,P,O)),V&&Ut(V,P),Ut(()=>{I.isUnmounted=!0},P),P&&P.pendingBranch&&!P.isUnmounted&&I.asyncDep&&!I.asyncResolved&&I.suspenseId===P.pendingId&&(P.deps--,P.deps===0&&P.resolve())},pe=(I,P,O,j=!1,W=!1,le=0)=>{for(let fe=le;fe<I.length;fe++)R(I[fe],P,O,j,W)},X=I=>I.shapeFlag&6?X(I.component.subTree):I.shapeFlag&128?I.suspense.next():d(I.anchor||I.el);let Y=!1;const ie=(I,P,O)=>{I==null?P._vnode&&R(P._vnode,null,null,!0):y(P._vnode||null,I,P,null,null,null,O),Y||(Y=!0,tm(),bw(),Y=!1),P._vnode=I},be={p:y,um:R,m:re,r:Q,mt:L,mc:N,pc:F,pbc:q,n:X,o:t};let he,ue;return{render:ie,hydrate:he,createApp:yx(ie,he)}}function yc({type:t,props:e},r){return r==="svg"&&t==="foreignObject"||r==="mathml"&&t==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:r}function hi({effect:t,update:e},r){t.allowRecurse=e.allowRecurse=r}function Ix(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function Tp(t,e,r=!1){const n=t.children,s=e.children;if(De(n)&&De(s))for(let i=0;i<n.length;i++){const o=n[i];let a=s[i];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=s[i]=Vn(s[i]),a.el=o.el),!r&&a.patchFlag!==-2&&Tp(o,a)),a.type===Su&&(a.el=o.el)}}function Mx(t){const e=t.slice(),r=[0];let n,s,i,o,a;const l=t.length;for(n=0;n<l;n++){const u=t[n];if(u!==0){if(s=r[r.length-1],t[s]<u){e[n]=s,r.push(n);continue}for(i=0,o=r.length-1;i<o;)a=i+o>>1,t[r[a]]<u?i=a+1:o=a;u<t[r[i]]&&(i>0&&(e[n]=r[i-1]),r[i]=n)}}for(i=r.length,o=r[i-1];i-- >0;)r[i]=o,o=e[o];return r}function Pw(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Pw(e)}function dm(t){if(t)for(let e=0;e<t.length;e++)t[e].active=!1}const Ox=Symbol.for("v-scx"),Rx=()=>ol(Ox);function Uj(t,e){return xp(t,null,e)}const La={};function wc(t,e,r){return xp(t,e,r)}function xp(t,e,{immediate:r,deep:n,flush:s,once:i,onTrack:o,onTrigger:a}=Qe){if(e&&i){const x=e;e=(...D)=>{x(...D),k()}}const l=Ot,u=x=>n===!0?x:Yn(x,n===!1?1:void 0);let c,f=!1,d=!1;if(Ht(t)?(c=()=>t.value,f=Dl(t)):Fo(t)?(c=()=>u(t),f=!0):De(t)?(d=!0,f=t.some(x=>Fo(x)||Dl(x)),c=()=>t.map(x=>{if(Ht(x))return x.value;if(Fo(x))return u(x);if(Be(x))return Qn(x,l,2)})):Be(t)?e?c=()=>Qn(t,l,2):c=()=>(g&&g(),xr(t,l,3,[m])):c=lr,e&&n){const x=c;c=()=>Yn(x())}let g,m=x=>{g=v.onStop=()=>{Qn(x,l,4),g=v.onStop=void 0}},y;if(Tu)if(m=lr,e?r&&xr(e,l,3,[c(),d?[]:void 0,m]):c(),s==="sync"){const x=Rx();y=x.__watcherHandles||(x.__watcherHandles=[])}else return lr;let E=d?new Array(t.length).fill(La):La;const _=()=>{if(!(!v.active||!v.dirty))if(e){const x=v.run();(n||f||(d?x.some((D,N)=>Jn(D,E[N])):Jn(x,E)))&&(g&&g(),xr(e,l,3,[x,E===La?void 0:d&&E[0]===La?[]:E,m]),E=x)}else v.run()};_.allowRecurse=!!e;let S;s==="sync"?S=_:s==="post"?S=()=>Ut(_,l&&l.suspense):(_.pre=!0,l&&(_.id=l.uid),S=()=>_p(_));const v=new dp(c,lr,S),A=hT(),k=()=>{v.stop(),A&&ap(A.effects,v)};return e?r?_():E=v.run():s==="post"?Ut(v.run.bind(v),l&&l.suspense):v.run(),y&&y.push(k),k}function Px(t,e,r){const n=this.proxy,s=dt(t)?t.includes(".")?kw(n,t):()=>n[t]:t.bind(n,n);let i;Be(e)?i=e:(i=e.handler,r=e);const o=da(this),a=xp(s,i.bind(n),r);return o(),a}function kw(t,e){const r=e.split(".");return()=>{let n=t;for(let s=0;s<r.length&&n;s++)n=n[r[s]];return n}}function Yn(t,e=1/0,r){if(e<=0||!Je(t)||t.__v_skip||(r=r||new Set,r.has(t)))return t;if(r.add(t),e--,Ht(t))Yn(t.value,e,r);else if(De(t))for(let n=0;n<t.length;n++)Yn(t[n],e,r);else if(eo(t)||Os(t))t.forEach(n=>{Yn(n,e,r)});else if(Yy(t)){for(const n in t)Yn(t[n],e,r);for(const n of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,n)&&Yn(t[n],e,r)}return t}const Lw=t=>t.type.__isKeepAlive;function kx(t,e){Nw(t,"a",e)}function Lx(t,e){Nw(t,"da",e)}function Nw(t,e,r=Ot){const n=t.__wdc||(t.__wdc=()=>{let s=r;for(;s;){if(s.isDeactivated)return;s=s.parent}return t()});if(Eu(e,n,r),r){let s=r.parent;for(;s&&s.parent;)Lw(s.parent.vnode)&&Nx(n,e,r,s),s=s.parent}}function Nx(t,e,r,n){const s=Eu(e,t,n,!0);vw(()=>{ap(n[e],s)},r)}function Dw(t,e){t.shapeFlag&6&&t.component?Dw(t.component.subTree,e):t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}const Dx=t=>t.__isTeleport,zo=t=>t&&(t.disabled||t.disabled===""),hm=t=>typeof SVGElement<"u"&&t instanceof SVGElement,pm=t=>typeof MathMLElement=="function"&&t instanceof MathMLElement,Vf=(t,e)=>{const r=t&&t.to;return dt(r)?e?e(r):null:r},Bx={name:"Teleport",__isTeleport:!0,process(t,e,r,n,s,i,o,a,l,u){const{mc:c,pc:f,pbc:d,o:{insert:g,querySelector:m,createText:y,createComment:E}}=u,_=zo(e.props);let{shapeFlag:S,children:v,dynamicChildren:A}=e;if(t==null){const k=e.el=y(""),x=e.anchor=y("");g(k,r,n),g(x,r,n);const D=e.target=Vf(e.props,m),N=e.targetAnchor=y("");D&&(g(N,D),o==="svg"||hm(D)?o="svg":(o==="mathml"||pm(D))&&(o="mathml"));const B=(q,K)=>{S&16&&c(v,q,K,s,i,o,a,l)};_?B(r,x):D&&B(D,N)}else{e.el=t.el;const k=e.anchor=t.anchor,x=e.target=t.target,D=e.targetAnchor=t.targetAnchor,N=zo(t.props),B=N?r:x,q=N?k:D;if(o==="svg"||hm(x)?o="svg":(o==="mathml"||pm(x))&&(o="mathml"),A?(d(t.dynamicChildren,A,B,s,i,o,a),Tp(t,e,!0)):l||f(t,e,B,q,s,i,o,a,!1),_)N?e.props&&t.props&&e.props.to!==t.props.to&&(e.props.to=t.props.to):Na(e,r,k,u,1);else if((e.props&&e.props.to)!==(t.props&&t.props.to)){const K=e.target=Vf(e.props,m);K&&Na(e,K,null,u,0)}else N&&Na(e,x,D,u,1)}Bw(e)},remove(t,e,r,n,{um:s,o:{remove:i}},o){const{shapeFlag:a,children:l,anchor:u,targetAnchor:c,target:f,props:d}=t;if(f&&i(c),o&&i(u),a&16){const g=o||!zo(d);for(let m=0;m<l.length;m++){const y=l[m];s(y,e,r,g,!!y.dynamicChildren)}}},move:Na,hydrate:$x};function Na(t,e,r,{o:{insert:n},m:s},i=2){i===0&&n(t.targetAnchor,e,r);const{el:o,anchor:a,shapeFlag:l,children:u,props:c}=t,f=i===2;if(f&&n(o,e,r),(!f||zo(c))&&l&16)for(let d=0;d<u.length;d++)s(u[d],e,r,2);f&&n(a,e,r)}function $x(t,e,r,n,s,i,{o:{nextSibling:o,parentNode:a,querySelector:l}},u){const c=e.target=Vf(e.props,l);if(c){const f=c._lpa||c.firstChild;if(e.shapeFlag&16)if(zo(e.props))e.anchor=u(o(t),e,a(t),r,n,s,i),e.targetAnchor=f;else{e.anchor=o(t);let d=f;for(;d;)if(d=o(d),d&&d.nodeType===8&&d.data==="teleport anchor"){e.targetAnchor=d,c._lpa=e.targetAnchor&&o(e.targetAnchor);break}u(f,e,c,r,n,s,i)}Bw(e)}return e.anchor&&o(e.anchor)}const jj=Bx;function Bw(t){const e=t.ctx;if(e&&e.ut){let r=t.children[0].el;for(;r&&r!==t.targetAnchor;)r.nodeType===1&&r.setAttribute("data-v-owner",e.uid),r=r.nextSibling;e.ut()}}const vr=Symbol.for("v-fgt"),Su=Symbol.for("v-txt"),Zn=Symbol.for("v-cmt"),al=Symbol.for("v-stc"),Ho=[];let Tr=null;function $w(t=!1){Ho.push(Tr=t?null:[])}function Fx(){Ho.pop(),Tr=Ho[Ho.length-1]||null}let ta=1;function gm(t){ta+=t}function Fw(t){return t.dynamicChildren=ta>0?Tr||Ms:null,Fx(),ta>0&&Tr&&Tr.push(t),t}function Wj(t,e,r,n,s,i){return Fw(zw(t,e,r,n,s,i,!0))}function Uw(t,e,r,n,s){return Fw(Ar(t,e,r,n,s,!0))}function jw(t){return t?t.__v_isVNode===!0:!1}function po(t,e){return t.type===e.type&&t.key===e.key}const Ww=({key:t})=>t??null,ll=({ref:t,ref_key:e,ref_for:r})=>(typeof t=="number"&&(t=""+t),t!=null?dt(t)||Ht(t)||Be(t)?{i:wt,r:t,k:e,f:!!r}:t:null);function zw(t,e=null,r=null,n=0,s=null,i=t===vr?0:1,o=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&Ww(e),ref:e&&ll(e),scopeId:_u,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:wt};return a?(Ap(l,r),i&128&&t.normalize(l)):r&&(l.shapeFlag|=dt(r)?8:16),ta>0&&!o&&Tr&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&Tr.push(l),l}const Ar=Ux;function Ux(t,e=null,r=null,n=0,s=null,i=!1){if((!t||t===JT)&&(t=Zn),jw(t)){const a=Bs(t,e,!0);return r&&Ap(a,r),ta>0&&!i&&Tr&&(a.shapeFlag&6?Tr[Tr.indexOf(t)]=a:Tr.push(a)),a.patchFlag=-2,a}if(Jx(t)&&(t=t.__vccOpts),e){e=jx(e);let{class:a,style:l}=e;a&&!dt(a)&&(e.class=cp(a)),Je(l)&&(cw(l)&&!De(l)&&(l=mt({},l)),e.style=up(l))}const o=dt(t)?1:ex(t)?128:Dx(t)?64:Je(t)?4:Be(t)?2:0;return zw(t,e,r,n,s,o,i,!0)}function jx(t){return t?cw(t)||Aw(t)?mt({},t):t:null}function Bs(t,e,r=!1,n=!1){const{props:s,ref:i,patchFlag:o,children:a,transition:l}=t,u=e?zx(s||{},e):s,c={__v_isVNode:!0,__v_skip:!0,type:t.type,props:u,key:u&&Ww(u),ref:e&&e.ref?r&&i?De(i)?i.concat(ll(e)):[i,ll(e)]:ll(e):i,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:a,target:t.target,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==vr?o===-1?16:o|16:o,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:l,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Bs(t.ssContent),ssFallback:t.ssFallback&&Bs(t.ssFallback),el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce};return l&&n&&Dw(c,l.clone(c)),c}function Wx(t=" ",e=0){return Ar(Su,null,t,e)}function zj(t,e){const r=Ar(al,null,t);return r.staticCount=e,r}function Hj(t="",e=!1){return e?($w(),Uw(Zn,null,t)):Ar(Zn,null,t)}function Nr(t){return t==null||typeof t=="boolean"?Ar(Zn):De(t)?Ar(vr,null,t.slice()):typeof t=="object"?Vn(t):Ar(Su,null,String(t))}function Vn(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Bs(t)}function Ap(t,e){let r=0;const{shapeFlag:n}=t;if(e==null)e=null;else if(De(e))r=16;else if(typeof e=="object")if(n&65){const s=e.default;s&&(s._c&&(s._d=!1),Ap(t,s()),s._c&&(s._d=!0));return}else{r=32;const s=e._;!s&&!Aw(e)?e._ctx=wt:s===3&&wt&&(wt.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else Be(e)?(e={default:e,_ctx:wt},r=32):(e=String(e),n&64?(r=16,e=[Wx(e)]):r=8);t.children=e,t.shapeFlag|=r}function zx(...t){const e={};for(let r=0;r<t.length;r++){const n=t[r];for(const s in n)if(s==="class")e.class!==n.class&&(e.class=cp([e.class,n.class]));else if(s==="style")e.style=up([e.style,n.style]);else if(gu(s)){const i=e[s],o=n[s];o&&i!==o&&!(De(i)&&i.includes(o))&&(e[s]=i?[].concat(i,o):o)}else s!==""&&(e[s]=n[s])}return e}function Mr(t,e,r,n=null){xr(t,e,7,[r,n])}const Hx=Sw();let Vx=0;function qx(t,e,r){const n=t.type,s=(e?e.appContext:t.appContext)||Hx,i={uid:Vx++,vnode:t,type:n,parent:e,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new fT(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:e?e.provides:Object.create(s.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Iw(n,s),emitsOptions:ww(n,s),emit:null,emitted:null,propsDefaults:Qe,inheritAttrs:n.inheritAttrs,ctx:Qe,data:Qe,props:Qe,attrs:Qe,slots:Qe,refs:Qe,setupState:Qe,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=e?e.root:i,i.emit=VT.bind(null,i),t.ce&&t.ce(i),i}let Ot=null,Fl,qf;{const t=Ky(),e=(r,n)=>{let s;return(s=t[r])||(s=t[r]=[]),s.push(n),i=>{s.length>1?s.forEach(o=>o(i)):s[0](i)}};Fl=e("__VUE_INSTANCE_SETTERS__",r=>Ot=r),qf=e("__VUE_SSR_SETTERS__",r=>Tu=r)}const da=t=>{const e=Ot;return Fl(t),t.scope.on(),()=>{t.scope.off(),Fl(e)}},mm=()=>{Ot&&Ot.scope.off(),Fl(null)};function Hw(t){return t.vnode.shapeFlag&4}let Tu=!1;function Yx(t,e=!1){e&&qf(e);const{props:r,children:n}=t.vnode,s=Hw(t);_x(t,r,s,e),Tx(t,n);const i=s?Gx(t,e):void 0;return e&&qf(!1),i}function Gx(t,e){const r=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,fx);const{setup:n}=r;if(n){const s=t.setupContext=n.length>1?Xx(t):null,i=da(t);ni();const o=Qn(n,t,0,[t.props,s]);if(ii(),i(),Vy(o)){if(o.then(mm,mm),e)return o.then(a=>{bm(t,a,e)}).catch(a=>{wu(a,t,0)});t.asyncDep=o}else bm(t,o,e)}else Vw(t,e)}function bm(t,e,r){Be(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:Je(e)&&(t.setupState=hw(e)),Vw(t,r)}let ym;function Vw(t,e,r){const n=t.type;if(!t.render){if(!e&&ym&&!n.render){const s=n.template||Ep(t).template;if(s){const{isCustomElement:i,compilerOptions:o}=t.appContext.config,{delimiters:a,compilerOptions:l}=n,u=mt(mt({isCustomElement:i,delimiters:a},o),l);n.render=ym(s,u)}}t.render=n.render||lr}{const s=da(t);ni();try{dx(t)}finally{ii(),s()}}}const Kx={get(t,e){return zt(t,"get",""),t[e]}};function Xx(t){const e=r=>{t.exposed=r||{}};return{attrs:new Proxy(t.attrs,Kx),slots:t.slots,emit:t.emit,expose:e}}function xu(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(hw(LT(t.exposed)),{get(e,r){if(r in e)return e[r];if(r in jo)return jo[r](t)},has(e,r){return r in e||r in jo}})):t.proxy}function Qx(t,e=!0){return Be(t)?t.displayName||t.name:t.name||e&&t.__name}function Jx(t){return Be(t)&&"__vccOpts"in t}const Zx=(t,e)=>NT(t,e,Tu),eA="3.4.29";/**
-* @vue/runtime-dom v3.4.29
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/const tA="http://www.w3.org/2000/svg",rA="http://www.w3.org/1998/Math/MathML",en=typeof document<"u"?document:null,wm=en&&en.createElement("template"),nA={insert:(t,e,r)=>{e.insertBefore(t,r||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,r,n)=>{const s=e==="svg"?en.createElementNS(tA,t):e==="mathml"?en.createElementNS(rA,t):r?en.createElement(t,{is:r}):en.createElement(t);return t==="select"&&n&&n.multiple!=null&&s.setAttribute("multiple",n.multiple),s},createText:t=>en.createTextNode(t),createComment:t=>en.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>en.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,r,n,s,i){const o=r?r.previousSibling:e.lastChild;if(s&&(s===i||s.nextSibling))for(;e.insertBefore(s.cloneNode(!0),r),!(s===i||!(s=s.nextSibling)););else{wm.innerHTML=n==="svg"?`<svg>${t}</svg>`:n==="mathml"?`<math>${t}</math>`:t;const a=wm.content;if(n==="svg"||n==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}e.insertBefore(a,r)}return[o?o.nextSibling:e.firstChild,r?r.previousSibling:e.lastChild]}},iA=Symbol("_vtc");function sA(t,e,r){const n=t[iA];n&&(e=(e?[e,...n]:[...n]).join(" ")),e==null?t.removeAttribute("class"):r?t.setAttribute("class",e):t.className=e}const Ul=Symbol("_vod"),qw=Symbol("_vsh"),Vj={beforeMount(t,{value:e},{transition:r}){t[Ul]=t.style.display==="none"?"":t.style.display,r&&e?r.beforeEnter(t):go(t,e)},mounted(t,{value:e},{transition:r}){r&&e&&r.enter(t)},updated(t,{value:e,oldValue:r},{transition:n}){!e!=!r&&(n?e?(n.beforeEnter(t),go(t,!0),n.enter(t)):n.leave(t,()=>{go(t,!1)}):go(t,e))},beforeUnmount(t,{value:e}){go(t,e)}};function go(t,e){t.style.display=e?t[Ul]:"none",t[qw]=!e}const oA=Symbol(""),aA=/(^|;)\s*display\s*:/;function lA(t,e,r){const n=t.style,s=dt(r);let i=!1;if(r&&!s){if(e)if(dt(e))for(const o of e.split(";")){const a=o.slice(0,o.indexOf(":")).trim();r[a]==null&&ul(n,a,"")}else for(const o in e)r[o]==null&&ul(n,o,"");for(const o in r)o==="display"&&(i=!0),ul(n,o,r[o])}else if(s){if(e!==r){const o=n[oA];o&&(r+=";"+o),n.cssText=r,i=aA.test(r)}}else e&&t.removeAttribute("style");Ul in t&&(t[Ul]=i?n.display:"",t[qw]&&(n.display="none"))}const vm=/\s*!important$/;function ul(t,e,r){if(De(r))r.forEach(n=>ul(t,e,n));else if(r==null&&(r=""),e.startsWith("--"))t.setProperty(e,r);else{const n=uA(t,e);vm.test(r)?t.setProperty(to(n),r.replace(vm,""),"important"):t[n]=r}}const _m=["Webkit","Moz","ms"],vc={};function uA(t,e){const r=vc[e];if(r)return r;let n=Hr(e);if(n!=="filter"&&n in t)return vc[e]=n;n=bu(n);for(let s=0;s<_m.length;s++){const i=_m[s]+n;if(i in t)return vc[e]=i}return e}const Em="http://www.w3.org/1999/xlink";function Sm(t,e,r,n,s,i=uT(e)){n&&e.startsWith("xlink:")?r==null?t.removeAttributeNS(Em,e.slice(6,e.length)):t.setAttributeNS(Em,e,r):r==null||i&&!Xy(r)?t.removeAttribute(e):t.setAttribute(e,i?"":String(r))}function cA(t,e,r,n,s,i,o){if(e==="innerHTML"||e==="textContent"){n&&o(n,s,i),t[e]=r??"";return}const a=t.tagName;if(e==="value"&&a!=="PROGRESS"&&!a.includes("-")){const u=a==="OPTION"?t.getAttribute("value")||"":t.value,c=r==null?"":String(r);(u!==c||!("_value"in t))&&(t.value=c),r==null&&t.removeAttribute(e),t._value=r;return}let l=!1;if(r===""||r==null){const u=typeof t[e];u==="boolean"?r=Xy(r):r==null&&u==="string"?(r="",l=!0):u==="number"&&(r=0,l=!0)}try{t[e]=r}catch{}l&&t.removeAttribute(e)}function Gn(t,e,r,n){t.addEventListener(e,r,n)}function fA(t,e,r,n){t.removeEventListener(e,r,n)}const Tm=Symbol("_vei");function dA(t,e,r,n,s=null){const i=t[Tm]||(t[Tm]={}),o=i[e];if(n&&o)o.value=n;else{const[a,l]=hA(e);if(n){const u=i[e]=mA(n,s);Gn(t,a,u,l)}else o&&(fA(t,a,o,l),i[e]=void 0)}}const xm=/(?:Once|Passive|Capture)$/;function hA(t){let e;if(xm.test(t)){e={};let n;for(;n=t.match(xm);)t=t.slice(0,t.length-n[0].length),e[n[0].toLowerCase()]=!0}return[t[2]===":"?t.slice(3):to(t.slice(2)),e]}let _c=0;const pA=Promise.resolve(),gA=()=>_c||(pA.then(()=>_c=0),_c=Date.now());function mA(t,e){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;xr(bA(n,r.value),e,5,[n])};return r.value=t,r.attached=gA(),r}function bA(t,e){if(De(e)){const r=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{r.call(t),t._stopped=!0},e.map(n=>s=>!s._stopped&&n&&n(s))}else return e}const Am=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,yA=(t,e,r,n,s,i,o,a,l)=>{const u=s==="svg";e==="class"?sA(t,n,u):e==="style"?lA(t,r,n):gu(e)?op(e)||dA(t,e,r,n,o):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):wA(t,e,n,u))?(cA(t,e,n,i,o,a,l),(e==="value"||e==="checked"||e==="selected")&&Sm(t,e,n,u,o,e!=="value")):(e==="true-value"?t._trueValue=n:e==="false-value"&&(t._falseValue=n),Sm(t,e,n,u))};function wA(t,e,r,n){if(n)return!!(e==="innerHTML"||e==="textContent"||e in t&&Am(e)&&Be(r));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const s=t.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Am(e)&&dt(r)?!1:e in t}const $s=t=>{const e=t.props["onUpdate:modelValue"]||!1;return De(e)?r=>il(e,r):e};function vA(t){t.target.composing=!0}function Cm(t){const e=t.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const pn=Symbol("_assign"),qj={created(t,{modifiers:{lazy:e,trim:r,number:n}},s){t[pn]=$s(s);const i=n||s.props&&s.props.type==="number";Gn(t,e?"change":"input",o=>{if(o.target.composing)return;let a=t.value;r&&(a=a.trim()),i&&(a=Nl(a)),t[pn](a)}),r&&Gn(t,"change",()=>{t.value=t.value.trim()}),e||(Gn(t,"compositionstart",vA),Gn(t,"compositionend",Cm),Gn(t,"change",Cm))},mounted(t,{value:e}){t.value=e??""},beforeUpdate(t,{value:e,oldValue:r,modifiers:{lazy:n,trim:s,number:i}},o){if(t[pn]=$s(o),t.composing)return;const a=(i||t.type==="number")&&!/^0\d/.test(t.value)?Nl(t.value):t.value,l=e??"";a!==l&&(document.activeElement===t&&t.type!=="range"&&(n&&e===r||s&&t.value.trim()===l)||(t.value=l))}},Yj={deep:!0,created(t,e,r){t[pn]=$s(r),Gn(t,"change",()=>{const n=t._modelValue,s=ra(t),i=t.checked,o=t[pn];if(De(n)){const a=fp(n,s),l=a!==-1;if(i&&!l)o(n.concat(s));else if(!i&&l){const u=[...n];u.splice(a,1),o(u)}}else if(eo(n)){const a=new Set(n);i?a.add(s):a.delete(s),o(a)}else o(Yw(t,i))})},mounted:Im,beforeUpdate(t,e,r){t[pn]=$s(r),Im(t,e,r)}};function Im(t,{value:e,oldValue:r},n){t._modelValue=e,De(e)?t.checked=fp(e,n.props.value)>-1:eo(e)?t.checked=e.has(n.props.value):e!==r&&(t.checked=fa(e,Yw(t,!0)))}const Gj={deep:!0,created(t,{value:e,modifiers:{number:r}},n){const s=eo(e);Gn(t,"change",()=>{const i=Array.prototype.filter.call(t.options,o=>o.selected).map(o=>r?Nl(ra(o)):ra(o));t[pn](t.multiple?s?new Set(i):i:i[0]),t._assigning=!0,gw(()=>{t._assigning=!1})}),t[pn]=$s(n)},mounted(t,{value:e,modifiers:{number:r}}){Mm(t,e)},beforeUpdate(t,e,r){t[pn]=$s(r)},updated(t,{value:e,modifiers:{number:r}}){t._assigning||Mm(t,e)}};function Mm(t,e,r){const n=t.multiple,s=De(e);if(!(n&&!s&&!eo(e))){for(let i=0,o=t.options.length;i<o;i++){const a=t.options[i],l=ra(a);if(n)if(s){const u=typeof l;u==="string"||u==="number"?a.selected=e.some(c=>String(c)===String(l)):a.selected=fp(e,l)>-1}else a.selected=e.has(l);else if(fa(ra(a),e)){t.selectedIndex!==i&&(t.selectedIndex=i);return}}!n&&t.selectedIndex!==-1&&(t.selectedIndex=-1)}}function ra(t){return"_value"in t?t._value:t.value}function Yw(t,e){const r=e?"_trueValue":"_falseValue";return r in t?t[r]:e}const _A=mt({patchProp:yA},nA);let Om;function EA(){return Om||(Om=Ax(_A))}const Kj=(...t)=>{const e=EA().createApp(...t),{mount:r}=e;return e.mount=n=>{const s=TA(n);if(!s)return;const i=e._component;!Be(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.innerHTML="";const o=r(s,!1,SA(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},e};function SA(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function TA(t){return dt(t)?document.querySelector(t):t}var Cp=Object.defineProperty,xA=Object.getOwnPropertyDescriptor,AA=Object.getOwnPropertyNames,CA=Object.prototype.hasOwnProperty,Et=(t,e)=>()=>(t&&(e=t(t=0)),e),Te=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Zi=(t,e)=>{for(var r in e)Cp(t,r,{get:e[r],enumerable:!0})},IA=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of AA(e))!CA.call(t,s)&&s!==r&&Cp(t,s,{get:()=>e[s],enumerable:!(n=xA(e,s))||n.enumerable});return t},Ke=t=>IA(Cp({},"__esModule",{value:!0}),t),Lt,we=Et(()=>{Lt={deviceMemory:8,hardwareConcurrency:8,language:"en-US"}}),ze={};Zi(ze,{_debugEnd:()=>xd,_debugProcess:()=>Td,_events:()=>Ud,_eventsCount:()=>jd,_exiting:()=>cd,_fatalExceptions:()=>_d,_getActiveHandles:()=>ev,_getActiveRequests:()=>Zw,_kill:()=>hd,_linkedBinding:()=>Qw,_maxListeners:()=>Fd,_preload_modules:()=>Bd,_rawDebug:()=>ad,_startProfilerIdleNotifier:()=>Ad,_stopProfilerIdleNotifier:()=>Cd,_tickCallback:()=>Sd,abort:()=>Rd,addListener:()=>Wd,allowedNodeEnvironmentFlags:()=>wd,arch:()=>Gf,argv:()=>Qf,argv0:()=>Dd,assert:()=>tv,binding:()=>rd,chdir:()=>sd,config:()=>fd,cpuUsage:()=>Mo,cwd:()=>id,debugPort:()=>Nd,default:()=>Mp,dlopen:()=>Jw,domain:()=>ud,emit:()=>Yd,emitWarning:()=>td,env:()=>Xf,execArgv:()=>Jf,execPath:()=>Ld,exit:()=>bd,features:()=>vd,hasUncaughtExceptionCaptureCallback:()=>rv,hrtime:()=>cl,kill:()=>md,listeners:()=>iv,memoryUsage:()=>gd,moduleLoadList:()=>ld,nextTick:()=>Kw,off:()=>Hd,on:()=>Jr,once:()=>zd,openStdin:()=>yd,pid:()=>Pd,platform:()=>Kf,ppid:()=>kd,prependListener:()=>Gd,prependOnceListener:()=>Kd,reallyExit:()=>dd,release:()=>od,removeAllListeners:()=>qd,removeListener:()=>Vd,resourceUsage:()=>pd,setSourceMapsEnabled:()=>$d,setUncaughtExceptionCaptureCallback:()=>Ed,stderr:()=>Md,stdin:()=>Od,stdout:()=>Id,title:()=>Yf,umask:()=>nd,uptime:()=>nv,version:()=>Zf,versions:()=>ed});function Ip(t){throw new Error("Node.js process "+t+" is not supported by JSPM core outside of Node.js")}function MA(){!Fi||!Mi||(Fi=!1,Mi.length?$r=Mi.concat($r):Vo=-1,$r.length&&Gw())}function Gw(){if(!Fi){var t=setTimeout(MA,0);Fi=!0;for(var e=$r.length;e;){for(Mi=$r,$r=[];++Vo<e;)Mi&&Mi[Vo].run();Vo=-1,e=$r.length}Mi=null,Fi=!1,clearTimeout(t)}}function Kw(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];$r.push(new Xw(t,e)),$r.length===1&&!Fi&&setTimeout(Gw,0)}function Xw(t,e){this.fun=t,this.array=e}function Ct(){}function Qw(t){Ip("_linkedBinding")}function Jw(t){Ip("dlopen")}function Zw(){return[]}function ev(){return[]}function tv(t,e){if(!t)throw new Error(e||"assertion error")}function rv(){return!1}function nv(){return nn.now()/1e3}function cl(t){var e=Math.floor((Date.now()-nn.now())*.001),r=nn.now()*.001,n=Math.floor(r)+e,s=Math.floor(r%1*1e9);return t&&(n=n-t[0],s=s-t[1],s<0&&(n--,s+=fl)),[n,s]}function Jr(){return Mp}function iv(t){return[]}var $r,Fi,Mi,Vo,Yf,Gf,Kf,Xf,Qf,Jf,Zf,ed,td,rd,nd,id,sd,od,ad,ld,ud,cd,fd,dd,hd,Mo,pd,gd,md,bd,yd,wd,vd,_d,Ed,Sd,Td,xd,Ad,Cd,Id,Md,Od,Rd,Pd,kd,Ld,Nd,Dd,Bd,$d,nn,Ec,fl,Fd,Ud,jd,Wd,zd,Hd,Vd,qd,Yd,Gd,Kd,Mp,OA=Et(()=>{_e(),ve(),we(),$r=[],Fi=!1,Vo=-1,Xw.prototype.run=function(){this.fun.apply(null,this.array)},Yf="browser",Gf="x64",Kf="browser",Xf={PATH:"/usr/bin",LANG:Lt.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},Qf=["/usr/bin/node"],Jf=[],Zf="v16.8.0",ed={},td=function(t,e){console.warn((e?e+": ":"")+t)},rd=function(t){Ip("binding")},nd=function(t){return 0},id=function(){return"/"},sd=function(t){},od={name:"node",sourceUrl:"",headersUrl:"",libUrl:""},ad=Ct,ld=[],ud={},cd=!1,fd={},dd=Ct,hd=Ct,Mo=function(){return{}},pd=Mo,gd=Mo,md=Ct,bd=Ct,yd=Ct,wd={},vd={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},_d=Ct,Ed=Ct,Sd=Ct,Td=Ct,xd=Ct,Ad=Ct,Cd=Ct,Id=void 0,Md=void 0,Od=void 0,Rd=Ct,Pd=2,kd=1,Ld="/bin/usr/node",Nd=9229,Dd="node",Bd=[],$d=Ct,nn={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0},nn.now===void 0&&(Ec=Date.now(),nn.timing&&nn.timing.navigationStart&&(Ec=nn.timing.navigationStart),nn.now=()=>Date.now()-Ec),fl=1e9,cl.bigint=function(t){var e=cl(t);return typeof BigInt>"u"?e[0]*fl+e[1]:BigInt(e[0]*fl)+BigInt(e[1])},Fd=10,Ud={},jd=0,Wd=Jr,zd=Jr,Hd=Jr,Vd=Jr,qd=Jr,Yd=Ct,Gd=Jr,Kd=Jr,Mp={version:Zf,versions:ed,arch:Gf,platform:Kf,release:od,_rawDebug:ad,moduleLoadList:ld,binding:rd,_linkedBinding:Qw,_events:Ud,_eventsCount:jd,_maxListeners:Fd,on:Jr,addListener:Wd,once:zd,off:Hd,removeListener:Vd,removeAllListeners:qd,emit:Yd,prependListener:Gd,prependOnceListener:Kd,listeners:iv,domain:ud,_exiting:cd,config:fd,dlopen:Jw,uptime:nv,_getActiveRequests:Zw,_getActiveHandles:ev,reallyExit:dd,_kill:hd,cpuUsage:Mo,resourceUsage:pd,memoryUsage:gd,kill:md,exit:bd,openStdin:yd,allowedNodeEnvironmentFlags:wd,assert:tv,features:vd,_fatalExceptions:_d,setUncaughtExceptionCaptureCallback:Ed,hasUncaughtExceptionCaptureCallback:rv,emitWarning:td,nextTick:Kw,_tickCallback:Sd,_debugProcess:Td,_debugEnd:xd,_startProfilerIdleNotifier:Ad,_stopProfilerIdleNotifier:Cd,stdout:Id,stdin:Od,stderr:Md,abort:Rd,umask:nd,chdir:sd,cwd:id,env:Xf,title:Yf,argv:Qf,execArgv:Jf,pid:Pd,ppid:kd,execPath:Ld,debugPort:Nd,hrtime:cl,argv0:Dd,_preload_modules:Bd,setSourceMapsEnabled:$d}}),ve=Et(()=>{OA()}),St={};Zi(St,{Buffer:()=>jl,INSPECT_MAX_BYTES:()=>sv,default:()=>Zr,kMaxLength:()=>ov});function RA(){if(Xd)return ws;Xd=!0,ws.byteLength=a,ws.toByteArray=u,ws.fromByteArray=d;for(var t=[],e=[],r=typeof Uint8Array<"u"?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,i=n.length;s<i;++s)t[s]=n[s],e[n.charCodeAt(s)]=s;e[45]=62,e[95]=63;function o(g){var m=g.length;if(m%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var y=g.indexOf("=");y===-1&&(y=m);var E=y===m?0:4-y%4;return[y,E]}function a(g){var m=o(g),y=m[0],E=m[1];return(y+E)*3/4-E}function l(g,m,y){return(m+y)*3/4-y}function u(g){var m,y=o(g),E=y[0],_=y[1],S=new r(l(g,E,_)),v=0,A=_>0?E-4:E,k;for(k=0;k<A;k+=4)m=e[g.charCodeAt(k)]<<18|e[g.charCodeAt(k+1)]<<12|e[g.charCodeAt(k+2)]<<6|e[g.charCodeAt(k+3)],S[v++]=m>>16&255,S[v++]=m>>8&255,S[v++]=m&255;return _===2&&(m=e[g.charCodeAt(k)]<<2|e[g.charCodeAt(k+1)]>>4,S[v++]=m&255),_===1&&(m=e[g.charCodeAt(k)]<<10|e[g.charCodeAt(k+1)]<<4|e[g.charCodeAt(k+2)]>>2,S[v++]=m>>8&255,S[v++]=m&255),S}function c(g){return t[g>>18&63]+t[g>>12&63]+t[g>>6&63]+t[g&63]}function f(g,m,y){for(var E,_=[],S=m;S<y;S+=3)E=(g[S]<<16&16711680)+(g[S+1]<<8&65280)+(g[S+2]&255),_.push(c(E));return _.join("")}function d(g){for(var m,y=g.length,E=y%3,_=[],S=16383,v=0,A=y-E;v<A;v+=S)_.push(f(g,v,v+S>A?A:v+S));return E===1?(m=g[y-1],_.push(t[m>>2]+t[m<<4&63]+"==")):E===2&&(m=(g[y-2]<<8)+g[y-1],_.push(t[m>>10]+t[m>>4&63]+t[m<<2&63]+"=")),_.join("")}return ws}function PA(){return Qd?Oo:(Qd=!0,Oo.read=function(t,e,r,n,s){var i,o,a=s*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,f=r?s-1:0,d=r?-1:1,g=t[e+f];for(f+=d,i=g&(1<<-c)-1,g>>=-c,c+=a;c>0;i=i*256+t[e+f],f+=d,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=o*256+t[e+f],f+=d,c-=8);if(i===0)i=1-u;else{if(i===l)return o?NaN:(g?-1:1)*(1/0);o=o+Math.pow(2,n),i=i-u}return(g?-1:1)*o*Math.pow(2,i-n)},Oo.write=function(t,e,r,n,s,i){var o,a,l,u=i*8-s-1,c=(1<<u)-1,f=c>>1,d=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:i-1,m=n?1:-1,y=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?e+=d/l:e+=d*Math.pow(2,1-f),e*l>=2&&(o++,l/=2),o+f>=c?(a=0,o=c):o+f>=1?(a=(e*l-1)*Math.pow(2,s),o=o+f):(a=e*Math.pow(2,f-1)*Math.pow(2,s),o=0));s>=8;t[r+g]=a&255,g+=m,a/=256,s-=8);for(o=o<<s|a,u+=s;u>0;t[r+g]=o&255,g+=m,o/=256,u-=8);t[r+g-m]|=y*128},Oo)}function kA(){if(Jd)return Bn;Jd=!0;let t=RA(),e=PA(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Bn.Buffer=o,Bn.SlowBuffer=_,Bn.INSPECT_MAX_BYTES=50;let n=2147483647;Bn.kMaxLength=n,o.TYPED_ARRAY_SUPPORT=s(),!o.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function s(){try{let w=new Uint8Array(1),p={foo:function(){return 42}};return Object.setPrototypeOf(p,Uint8Array.prototype),Object.setPrototypeOf(w,p),w.foo()===42}catch{return!1}}Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.buffer}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.byteOffset}});function i(w){if(w>n)throw new RangeError('The value "'+w+'" is invalid for option "size"');let p=new Uint8Array(w);return Object.setPrototypeOf(p,o.prototype),p}function o(w,p,h){if(typeof w=="number"){if(typeof p=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(w)}return a(w,p,h)}o.poolSize=8192;function a(w,p,h){if(typeof w=="string")return f(w,p);if(ArrayBuffer.isView(w))return g(w);if(w==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof w);if(te(w,ArrayBuffer)||w&&te(w.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(te(w,SharedArrayBuffer)||w&&te(w.buffer,SharedArrayBuffer)))return m(w,p,h);if(typeof w=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let b=w.valueOf&&w.valueOf();if(b!=null&&b!==w)return o.from(b,p,h);let T=y(w);if(T)return T;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof w[Symbol.toPrimitive]=="function")return o.from(w[Symbol.toPrimitive]("string"),p,h);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof w)}o.from=function(w,p,h){return a(w,p,h)},Object.setPrototypeOf(o.prototype,Uint8Array.prototype),Object.setPrototypeOf(o,Uint8Array);function l(w){if(typeof w!="number")throw new TypeError('"size" argument must be of type number');if(w<0)throw new RangeError('The value "'+w+'" is invalid for option "size"')}function u(w,p,h){return l(w),w<=0?i(w):p!==void 0?typeof h=="string"?i(w).fill(p,h):i(w).fill(p):i(w)}o.alloc=function(w,p,h){return u(w,p,h)};function c(w){return l(w),i(w<0?0:E(w)|0)}o.allocUnsafe=function(w){return c(w)},o.allocUnsafeSlow=function(w){return c(w)};function f(w,p){if((typeof p!="string"||p==="")&&(p="utf8"),!o.isEncoding(p))throw new TypeError("Unknown encoding: "+p);let h=S(w,p)|0,b=i(h),T=b.write(w,p);return T!==h&&(b=b.slice(0,T)),b}function d(w){let p=w.length<0?0:E(w.length)|0,h=i(p);for(let b=0;b<p;b+=1)h[b]=w[b]&255;return h}function g(w){if(te(w,Uint8Array)){let p=new Uint8Array(w);return m(p.buffer,p.byteOffset,p.byteLength)}return d(w)}function m(w,p,h){if(p<0||w.byteLength<p)throw new RangeError('"offset" is outside of buffer bounds');if(w.byteLength<p+(h||0))throw new RangeError('"length" is outside of buffer bounds');let b;return p===void 0&&h===void 0?b=new Uint8Array(w):h===void 0?b=new Uint8Array(w,p):b=new Uint8Array(w,p,h),Object.setPrototypeOf(b,o.prototype),b}function y(w){if(o.isBuffer(w)){let p=E(w.length)|0,h=i(p);return h.length===0||w.copy(h,0,0,p),h}if(w.length!==void 0)return typeof w.length!="number"||$(w.length)?i(0):d(w);if(w.type==="Buffer"&&Array.isArray(w.data))return d(w.data)}function E(w){if(w>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return w|0}function _(w){return+w!=w&&(w=0),o.alloc(+w)}o.isBuffer=function(w){return w!=null&&w._isBuffer===!0&&w!==o.prototype},o.compare=function(w,p){if(te(w,Uint8Array)&&(w=o.from(w,w.offset,w.byteLength)),te(p,Uint8Array)&&(p=o.from(p,p.offset,p.byteLength)),!o.isBuffer(w)||!o.isBuffer(p))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(w===p)return 0;let h=w.length,b=p.length;for(let T=0,U=Math.min(h,b);T<U;++T)if(w[T]!==p[T]){h=w[T],b=p[T];break}return h<b?-1:b<h?1:0},o.isEncoding=function(w){switch(String(w).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(w,p){if(!Array.isArray(w))throw new TypeError('"list" argument must be an Array of Buffers');if(w.length===0)return o.alloc(0);let h;if(p===void 0)for(p=0,h=0;h<w.length;++h)p+=w[h].length;let b=o.allocUnsafe(p),T=0;for(h=0;h<w.length;++h){let U=w[h];if(te(U,Uint8Array))T+U.length>b.length?(o.isBuffer(U)||(U=o.from(U)),U.copy(b,T)):Uint8Array.prototype.set.call(b,U,T);else if(o.isBuffer(U))U.copy(b,T);else throw new TypeError('"list" argument must be an Array of Buffers');T+=U.length}return b};function S(w,p){if(o.isBuffer(w))return w.length;if(ArrayBuffer.isView(w)||te(w,ArrayBuffer))return w.byteLength;if(typeof w!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof w);let h=w.length,b=arguments.length>2&&arguments[2]===!0;if(!b&&h===0)return 0;let T=!1;for(;;)switch(p){case"ascii":case"latin1":case"binary":return h;case"utf8":case"utf-8":return j(w).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return h*2;case"hex":return h>>>1;case"base64":return fe(w).length;default:if(T)return b?-1:j(w).length;p=(""+p).toLowerCase(),T=!0}}o.byteLength=S;function v(w,p,h){let b=!1;if((p===void 0||p<0)&&(p=0),p>this.length||((h===void 0||h>this.length)&&(h=this.length),h<=0)||(h>>>=0,p>>>=0,h<=p))return"";for(w||(w="utf8");;)switch(w){case"hex":return F(this,p,h);case"utf8":case"utf-8":return M(this,p,h);case"ascii":return G(this,p,h);case"latin1":case"binary":return z(this,p,h);case"base64":return C(this,p,h);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ne(this,p,h);default:if(b)throw new TypeError("Unknown encoding: "+w);w=(w+"").toLowerCase(),b=!0}}o.prototype._isBuffer=!0;function A(w,p,h){let b=w[p];w[p]=w[h],w[h]=b}o.prototype.swap16=function(){let w=this.length;if(w%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let p=0;p<w;p+=2)A(this,p,p+1);return this},o.prototype.swap32=function(){let w=this.length;if(w%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let p=0;p<w;p+=4)A(this,p,p+3),A(this,p+1,p+2);return this},o.prototype.swap64=function(){let w=this.length;if(w%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let p=0;p<w;p+=8)A(this,p,p+7),A(this,p+1,p+6),A(this,p+2,p+5),A(this,p+3,p+4);return this},o.prototype.toString=function(){let w=this.length;return w===0?"":arguments.length===0?M(this,0,w):v.apply(this,arguments)},o.prototype.toLocaleString=o.prototype.toString,o.prototype.equals=function(w){if(!o.isBuffer(w))throw new TypeError("Argument must be a Buffer");return this===w?!0:o.compare(this,w)===0},o.prototype.inspect=function(){let w="",p=Bn.INSPECT_MAX_BYTES;return w=this.toString("hex",0,p).replace(/(.{2})/g,"$1 ").trim(),this.length>p&&(w+=" ... "),"<Buffer "+w+">"},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(w,p,h,b,T){if(te(w,Uint8Array)&&(w=o.from(w,w.offset,w.byteLength)),!o.isBuffer(w))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof w);if(p===void 0&&(p=0),h===void 0&&(h=w?w.length:0),b===void 0&&(b=0),T===void 0&&(T=this.length),p<0||h>w.length||b<0||T>this.length)throw new RangeError("out of range index");if(b>=T&&p>=h)return 0;if(b>=T)return-1;if(p>=h)return 1;if(p>>>=0,h>>>=0,b>>>=0,T>>>=0,this===w)return 0;let U=T-b,ee=h-p,ye=Math.min(U,ee),Ae=this.slice(b,T),Re=w.slice(p,h);for(let xe=0;xe<ye;++xe)if(Ae[xe]!==Re[xe]){U=Ae[xe],ee=Re[xe];break}return U<ee?-1:ee<U?1:0};function k(w,p,h,b,T){if(w.length===0)return-1;if(typeof h=="string"?(b=h,h=0):h>2147483647?h=2147483647:h<-2147483648&&(h=-2147483648),h=+h,$(h)&&(h=T?0:w.length-1),h<0&&(h=w.length+h),h>=w.length){if(T)return-1;h=w.length-1}else if(h<0)if(T)h=0;else return-1;if(typeof p=="string"&&(p=o.from(p,b)),o.isBuffer(p))return p.length===0?-1:x(w,p,h,b,T);if(typeof p=="number")return p=p&255,typeof Uint8Array.prototype.indexOf=="function"?T?Uint8Array.prototype.indexOf.call(w,p,h):Uint8Array.prototype.lastIndexOf.call(w,p,h):x(w,[p],h,b,T);throw new TypeError("val must be string, number or Buffer")}function x(w,p,h,b,T){let U=1,ee=w.length,ye=p.length;if(b!==void 0&&(b=String(b).toLowerCase(),b==="ucs2"||b==="ucs-2"||b==="utf16le"||b==="utf-16le")){if(w.length<2||p.length<2)return-1;U=2,ee/=2,ye/=2,h/=2}function Ae(xe,Oe){return U===1?xe[Oe]:xe.readUInt16BE(Oe*U)}let Re;if(T){let xe=-1;for(Re=h;Re<ee;Re++)if(Ae(w,Re)===Ae(p,xe===-1?0:Re-xe)){if(xe===-1&&(xe=Re),Re-xe+1===ye)return xe*U}else xe!==-1&&(Re-=Re-xe),xe=-1}else for(h+ye>ee&&(h=ee-ye),Re=h;Re>=0;Re--){let xe=!0;for(let Oe=0;Oe<ye;Oe++)if(Ae(w,Re+Oe)!==Ae(p,Oe)){xe=!1;break}if(xe)return Re}return-1}o.prototype.includes=function(w,p,h){return this.indexOf(w,p,h)!==-1},o.prototype.indexOf=function(w,p,h){return k(this,w,p,h,!0)},o.prototype.lastIndexOf=function(w,p,h){return k(this,w,p,h,!1)};function D(w,p,h,b){h=Number(h)||0;let T=w.length-h;b?(b=Number(b),b>T&&(b=T)):b=T;let U=p.length;b>U/2&&(b=U/2);let ee;for(ee=0;ee<b;++ee){let ye=parseInt(p.substr(ee*2,2),16);if($(ye))return ee;w[h+ee]=ye}return ee}function N(w,p,h,b){return V(j(p,w.length-h),w,h,b)}function B(w,p,h,b){return V(W(p),w,h,b)}function q(w,p,h,b){return V(fe(p),w,h,b)}function K(w,p,h,b){return V(le(p,w.length-h),w,h,b)}o.prototype.write=function(w,p,h,b){if(p===void 0)b="utf8",h=this.length,p=0;else if(h===void 0&&typeof p=="string")b=p,h=this.length,p=0;else if(isFinite(p))p=p>>>0,isFinite(h)?(h=h>>>0,b===void 0&&(b="utf8")):(b=h,h=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let T=this.length-p;if((h===void 0||h>T)&&(h=T),w.length>0&&(h<0||p<0)||p>this.length)throw new RangeError("Attempt to write outside buffer bounds");b||(b="utf8");let U=!1;for(;;)switch(b){case"hex":return D(this,w,p,h);case"utf8":case"utf-8":return N(this,w,p,h);case"ascii":case"latin1":case"binary":return B(this,w,p,h);case"base64":return q(this,w,p,h);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return K(this,w,p,h);default:if(U)throw new TypeError("Unknown encoding: "+b);b=(""+b).toLowerCase(),U=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function C(w,p,h){return p===0&&h===w.length?t.fromByteArray(w):t.fromByteArray(w.slice(p,h))}function M(w,p,h){h=Math.min(w.length,h);let b=[],T=p;for(;T<h;){let U=w[T],ee=null,ye=U>239?4:U>223?3:U>191?2:1;if(T+ye<=h){let Ae,Re,xe,Oe;switch(ye){case 1:U<128&&(ee=U);break;case 2:Ae=w[T+1],(Ae&192)===128&&(Oe=(U&31)<<6|Ae&63,Oe>127&&(ee=Oe));break;case 3:Ae=w[T+1],Re=w[T+2],(Ae&192)===128&&(Re&192)===128&&(Oe=(U&15)<<12|(Ae&63)<<6|Re&63,Oe>2047&&(Oe<55296||Oe>57343)&&(ee=Oe));break;case 4:Ae=w[T+1],Re=w[T+2],xe=w[T+3],(Ae&192)===128&&(Re&192)===128&&(xe&192)===128&&(Oe=(U&15)<<18|(Ae&63)<<12|(Re&63)<<6|xe&63,Oe>65535&&Oe<1114112&&(ee=Oe))}}ee===null?(ee=65533,ye=1):ee>65535&&(ee-=65536,b.push(ee>>>10&1023|55296),ee=56320|ee&1023),b.push(ee),T+=ye}return H(b)}let L=4096;function H(w){let p=w.length;if(p<=L)return String.fromCharCode.apply(String,w);let h="",b=0;for(;b<p;)h+=String.fromCharCode.apply(String,w.slice(b,b+=L));return h}function G(w,p,h){let b="";h=Math.min(w.length,h);for(let T=p;T<h;++T)b+=String.fromCharCode(w[T]&127);return b}function z(w,p,h){let b="";h=Math.min(w.length,h);for(let T=p;T<h;++T)b+=String.fromCharCode(w[T]);return b}function F(w,p,h){let b=w.length;(!p||p<0)&&(p=0),(!h||h<0||h>b)&&(h=b);let T="";for(let U=p;U<h;++U)T+=J[w[U]];return T}function ne(w,p,h){let b=w.slice(p,h),T="";for(let U=0;U<b.length-1;U+=2)T+=String.fromCharCode(b[U]+b[U+1]*256);return T}o.prototype.slice=function(w,p){let h=this.length;w=~~w,p=p===void 0?h:~~p,w<0?(w+=h,w<0&&(w=0)):w>h&&(w=h),p<0?(p+=h,p<0&&(p=0)):p>h&&(p=h),p<w&&(p=w);let b=this.subarray(w,p);return Object.setPrototypeOf(b,o.prototype),b};function ce(w,p,h){if(w%1!==0||w<0)throw new RangeError("offset is not uint");if(w+p>h)throw new RangeError("Trying to access beyond buffer length")}o.prototype.readUintLE=o.prototype.readUIntLE=function(w,p,h){w=w>>>0,p=p>>>0,h||ce(w,p,this.length);let b=this[w],T=1,U=0;for(;++U<p&&(T*=256);)b+=this[w+U]*T;return b},o.prototype.readUintBE=o.prototype.readUIntBE=function(w,p,h){w=w>>>0,p=p>>>0,h||ce(w,p,this.length);let b=this[w+--p],T=1;for(;p>0&&(T*=256);)b+=this[w+--p]*T;return b},o.prototype.readUint8=o.prototype.readUInt8=function(w,p){return w=w>>>0,p||ce(w,1,this.length),this[w]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(w,p){return w=w>>>0,p||ce(w,2,this.length),this[w]|this[w+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(w,p){return w=w>>>0,p||ce(w,2,this.length),this[w]<<8|this[w+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(w,p){return w=w>>>0,p||ce(w,4,this.length),(this[w]|this[w+1]<<8|this[w+2]<<16)+this[w+3]*16777216},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(w,p){return w=w>>>0,p||ce(w,4,this.length),this[w]*16777216+(this[w+1]<<16|this[w+2]<<8|this[w+3])},o.prototype.readBigUInt64LE=ae(function(w){w=w>>>0,ue(w,"offset");let p=this[w],h=this[w+7];(p===void 0||h===void 0)&&I(w,this.length-8);let b=p+this[++w]*2**8+this[++w]*2**16+this[++w]*2**24,T=this[++w]+this[++w]*2**8+this[++w]*2**16+h*2**24;return BigInt(b)+(BigInt(T)<<BigInt(32))}),o.prototype.readBigUInt64BE=ae(function(w){w=w>>>0,ue(w,"offset");let p=this[w],h=this[w+7];(p===void 0||h===void 0)&&I(w,this.length-8);let b=p*2**24+this[++w]*2**16+this[++w]*2**8+this[++w],T=this[++w]*2**24+this[++w]*2**16+this[++w]*2**8+h;return(BigInt(b)<<BigInt(32))+BigInt(T)}),o.prototype.readIntLE=function(w,p,h){w=w>>>0,p=p>>>0,h||ce(w,p,this.length);let b=this[w],T=1,U=0;for(;++U<p&&(T*=256);)b+=this[w+U]*T;return T*=128,b>=T&&(b-=Math.pow(2,8*p)),b},o.prototype.readIntBE=function(w,p,h){w=w>>>0,p=p>>>0,h||ce(w,p,this.length);let b=p,T=1,U=this[w+--b];for(;b>0&&(T*=256);)U+=this[w+--b]*T;return T*=128,U>=T&&(U-=Math.pow(2,8*p)),U},o.prototype.readInt8=function(w,p){return w=w>>>0,p||ce(w,1,this.length),this[w]&128?(255-this[w]+1)*-1:this[w]},o.prototype.readInt16LE=function(w,p){w=w>>>0,p||ce(w,2,this.length);let h=this[w]|this[w+1]<<8;return h&32768?h|4294901760:h},o.prototype.readInt16BE=function(w,p){w=w>>>0,p||ce(w,2,this.length);let h=this[w+1]|this[w]<<8;return h&32768?h|4294901760:h},o.prototype.readInt32LE=function(w,p){return w=w>>>0,p||ce(w,4,this.length),this[w]|this[w+1]<<8|this[w+2]<<16|this[w+3]<<24},o.prototype.readInt32BE=function(w,p){return w=w>>>0,p||ce(w,4,this.length),this[w]<<24|this[w+1]<<16|this[w+2]<<8|this[w+3]},o.prototype.readBigInt64LE=ae(function(w){w=w>>>0,ue(w,"offset");let p=this[w],h=this[w+7];(p===void 0||h===void 0)&&I(w,this.length-8);let b=this[w+4]+this[w+5]*2**8+this[w+6]*2**16+(h<<24);return(BigInt(b)<<BigInt(32))+BigInt(p+this[++w]*2**8+this[++w]*2**16+this[++w]*2**24)}),o.prototype.readBigInt64BE=ae(function(w){w=w>>>0,ue(w,"offset");let p=this[w],h=this[w+7];(p===void 0||h===void 0)&&I(w,this.length-8);let b=(p<<24)+this[++w]*2**16+this[++w]*2**8+this[++w];return(BigInt(b)<<BigInt(32))+BigInt(this[++w]*2**24+this[++w]*2**16+this[++w]*2**8+h)}),o.prototype.readFloatLE=function(w,p){return w=w>>>0,p||ce(w,4,this.length),e.read(this,w,!0,23,4)},o.prototype.readFloatBE=function(w,p){return w=w>>>0,p||ce(w,4,this.length),e.read(this,w,!1,23,4)},o.prototype.readDoubleLE=function(w,p){return w=w>>>0,p||ce(w,8,this.length),e.read(this,w,!0,52,8)},o.prototype.readDoubleBE=function(w,p){return w=w>>>0,p||ce(w,8,this.length),e.read(this,w,!1,52,8)};function re(w,p,h,b,T,U){if(!o.isBuffer(w))throw new TypeError('"buffer" argument must be a Buffer instance');if(p>T||p<U)throw new RangeError('"value" argument is out of bounds');if(h+b>w.length)throw new RangeError("Index out of range")}o.prototype.writeUintLE=o.prototype.writeUIntLE=function(w,p,h,b){if(w=+w,p=p>>>0,h=h>>>0,!b){let ee=Math.pow(2,8*h)-1;re(this,w,p,h,ee,0)}let T=1,U=0;for(this[p]=w&255;++U<h&&(T*=256);)this[p+U]=w/T&255;return p+h},o.prototype.writeUintBE=o.prototype.writeUIntBE=function(w,p,h,b){if(w=+w,p=p>>>0,h=h>>>0,!b){let ee=Math.pow(2,8*h)-1;re(this,w,p,h,ee,0)}let T=h-1,U=1;for(this[p+T]=w&255;--T>=0&&(U*=256);)this[p+T]=w/U&255;return p+h},o.prototype.writeUint8=o.prototype.writeUInt8=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,1,255,0),this[p]=w&255,p+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,2,65535,0),this[p]=w&255,this[p+1]=w>>>8,p+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,2,65535,0),this[p]=w>>>8,this[p+1]=w&255,p+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,4,4294967295,0),this[p+3]=w>>>24,this[p+2]=w>>>16,this[p+1]=w>>>8,this[p]=w&255,p+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,4,4294967295,0),this[p]=w>>>24,this[p+1]=w>>>16,this[p+2]=w>>>8,this[p+3]=w&255,p+4};function R(w,p,h,b,T){he(p,b,T,w,h,7);let U=Number(p&BigInt(4294967295));w[h++]=U,U=U>>8,w[h++]=U,U=U>>8,w[h++]=U,U=U>>8,w[h++]=U;let ee=Number(p>>BigInt(32)&BigInt(4294967295));return w[h++]=ee,ee=ee>>8,w[h++]=ee,ee=ee>>8,w[h++]=ee,ee=ee>>8,w[h++]=ee,h}function Q(w,p,h,b,T){he(p,b,T,w,h,7);let U=Number(p&BigInt(4294967295));w[h+7]=U,U=U>>8,w[h+6]=U,U=U>>8,w[h+5]=U,U=U>>8,w[h+4]=U;let ee=Number(p>>BigInt(32)&BigInt(4294967295));return w[h+3]=ee,ee=ee>>8,w[h+2]=ee,ee=ee>>8,w[h+1]=ee,ee=ee>>8,w[h]=ee,h+8}o.prototype.writeBigUInt64LE=ae(function(w,p=0){return R(this,w,p,BigInt(0),BigInt("0xffffffffffffffff"))}),o.prototype.writeBigUInt64BE=ae(function(w,p=0){return Q(this,w,p,BigInt(0),BigInt("0xffffffffffffffff"))}),o.prototype.writeIntLE=function(w,p,h,b){if(w=+w,p=p>>>0,!b){let ye=Math.pow(2,8*h-1);re(this,w,p,h,ye-1,-ye)}let T=0,U=1,ee=0;for(this[p]=w&255;++T<h&&(U*=256);)w<0&&ee===0&&this[p+T-1]!==0&&(ee=1),this[p+T]=(w/U>>0)-ee&255;return p+h},o.prototype.writeIntBE=function(w,p,h,b){if(w=+w,p=p>>>0,!b){let ye=Math.pow(2,8*h-1);re(this,w,p,h,ye-1,-ye)}let T=h-1,U=1,ee=0;for(this[p+T]=w&255;--T>=0&&(U*=256);)w<0&&ee===0&&this[p+T+1]!==0&&(ee=1),this[p+T]=(w/U>>0)-ee&255;return p+h},o.prototype.writeInt8=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,1,127,-128),w<0&&(w=255+w+1),this[p]=w&255,p+1},o.prototype.writeInt16LE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,2,32767,-32768),this[p]=w&255,this[p+1]=w>>>8,p+2},o.prototype.writeInt16BE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,2,32767,-32768),this[p]=w>>>8,this[p+1]=w&255,p+2},o.prototype.writeInt32LE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,4,2147483647,-2147483648),this[p]=w&255,this[p+1]=w>>>8,this[p+2]=w>>>16,this[p+3]=w>>>24,p+4},o.prototype.writeInt32BE=function(w,p,h){return w=+w,p=p>>>0,h||re(this,w,p,4,2147483647,-2147483648),w<0&&(w=4294967295+w+1),this[p]=w>>>24,this[p+1]=w>>>16,this[p+2]=w>>>8,this[p+3]=w&255,p+4},o.prototype.writeBigInt64LE=ae(function(w,p=0){return R(this,w,p,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),o.prototype.writeBigInt64BE=ae(function(w,p=0){return Q(this,w,p,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function de(w,p,h,b,T,U){if(h+b>w.length)throw new RangeError("Index out of range");if(h<0)throw new RangeError("Index out of range")}function ge(w,p,h,b,T){return p=+p,h=h>>>0,T||de(w,p,h,4),e.write(w,p,h,b,23,4),h+4}o.prototype.writeFloatLE=function(w,p,h){return ge(this,w,p,!0,h)},o.prototype.writeFloatBE=function(w,p,h){return ge(this,w,p,!1,h)};function pe(w,p,h,b,T){return p=+p,h=h>>>0,T||de(w,p,h,8),e.write(w,p,h,b,52,8),h+8}o.prototype.writeDoubleLE=function(w,p,h){return pe(this,w,p,!0,h)},o.prototype.writeDoubleBE=function(w,p,h){return pe(this,w,p,!1,h)},o.prototype.copy=function(w,p,h,b){if(!o.isBuffer(w))throw new TypeError("argument should be a Buffer");if(h||(h=0),!b&&b!==0&&(b=this.length),p>=w.length&&(p=w.length),p||(p=0),b>0&&b<h&&(b=h),b===h||w.length===0||this.length===0)return 0;if(p<0)throw new RangeError("targetStart out of bounds");if(h<0||h>=this.length)throw new RangeError("Index out of range");if(b<0)throw new RangeError("sourceEnd out of bounds");b>this.length&&(b=this.length),w.length-p<b-h&&(b=w.length-p+h);let T=b-h;return this===w&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(p,h,b):Uint8Array.prototype.set.call(w,this.subarray(h,b),p),T},o.prototype.fill=function(w,p,h,b){if(typeof w=="string"){if(typeof p=="string"?(b=p,p=0,h=this.length):typeof h=="string"&&(b=h,h=this.length),b!==void 0&&typeof b!="string")throw new TypeError("encoding must be a string");if(typeof b=="string"&&!o.isEncoding(b))throw new TypeError("Unknown encoding: "+b);if(w.length===1){let U=w.charCodeAt(0);(b==="utf8"&&U<128||b==="latin1")&&(w=U)}}else typeof w=="number"?w=w&255:typeof w=="boolean"&&(w=Number(w));if(p<0||this.length<p||this.length<h)throw new RangeError("Out of range index");if(h<=p)return this;p=p>>>0,h=h===void 0?this.length:h>>>0,w||(w=0);let T;if(typeof w=="number")for(T=p;T<h;++T)this[T]=w;else{let U=o.isBuffer(w)?w:o.from(w,b),ee=U.length;if(ee===0)throw new TypeError('The value "'+w+'" is invalid for argument "value"');for(T=0;T<h-p;++T)this[T+p]=U[T%ee]}return this};let X={};function Y(w,p,h){X[w]=class extends h{constructor(){super(),Object.defineProperty(this,"message",{value:p.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${w}]`,this.stack,delete this.name}get code(){return w}set code(b){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:b,writable:!0})}toString(){return`${this.name} [${w}]: ${this.message}`}}}Y("ERR_BUFFER_OUT_OF_BOUNDS",function(w){return w?`${w} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Y("ERR_INVALID_ARG_TYPE",function(w,p){return`The "${w}" argument must be of type number. Received type ${typeof p}`},TypeError),Y("ERR_OUT_OF_RANGE",function(w,p,h){let b=`The value of "${w}" is out of range.`,T=h;return Number.isInteger(h)&&Math.abs(h)>2**32?T=ie(String(h)):typeof h=="bigint"&&(T=String(h),(h>BigInt(2)**BigInt(32)||h<-(BigInt(2)**BigInt(32)))&&(T=ie(T)),T+="n"),b+=` It must be ${p}. Received ${T}`,b},RangeError);function ie(w){let p="",h=w.length,b=w[0]==="-"?1:0;for(;h>=b+4;h-=3)p=`_${w.slice(h-3,h)}${p}`;return`${w.slice(0,h)}${p}`}function be(w,p,h){ue(p,"offset"),(w[p]===void 0||w[p+h]===void 0)&&I(p,w.length-(h+1))}function he(w,p,h,b,T,U){if(w>h||w<p){let ee=typeof p=="bigint"?"n":"",ye;throw p===0||p===BigInt(0)?ye=`>= 0${ee} and < 2${ee} ** ${(U+1)*8}${ee}`:ye=`>= -(2${ee} ** ${(U+1)*8-1}${ee}) and < 2 ** ${(U+1)*8-1}${ee}`,new X.ERR_OUT_OF_RANGE("value",ye,w)}be(b,T,U)}function ue(w,p){if(typeof w!="number")throw new X.ERR_INVALID_ARG_TYPE(p,"number",w)}function I(w,p,h){throw Math.floor(w)!==w?(ue(w,h),new X.ERR_OUT_OF_RANGE("offset","an integer",w)):p<0?new X.ERR_BUFFER_OUT_OF_BOUNDS:new X.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${p}`,w)}let P=/[^+/0-9A-Za-z-_]/g;function O(w){if(w=w.split("=")[0],w=w.trim().replace(P,""),w.length<2)return"";for(;w.length%4!==0;)w=w+"=";return w}function j(w,p){p=p||1/0;let h,b=w.length,T=null,U=[];for(let ee=0;ee<b;++ee){if(h=w.charCodeAt(ee),h>55295&&h<57344){if(!T){if(h>56319){(p-=3)>-1&&U.push(239,191,189);continue}else if(ee+1===b){(p-=3)>-1&&U.push(239,191,189);continue}T=h;continue}if(h<56320){(p-=3)>-1&&U.push(239,191,189),T=h;continue}h=(T-55296<<10|h-56320)+65536}else T&&(p-=3)>-1&&U.push(239,191,189);if(T=null,h<128){if((p-=1)<0)break;U.push(h)}else if(h<2048){if((p-=2)<0)break;U.push(h>>6|192,h&63|128)}else if(h<65536){if((p-=3)<0)break;U.push(h>>12|224,h>>6&63|128,h&63|128)}else if(h<1114112){if((p-=4)<0)break;U.push(h>>18|240,h>>12&63|128,h>>6&63|128,h&63|128)}else throw new Error("Invalid code point")}return U}function W(w){let p=[];for(let h=0;h<w.length;++h)p.push(w.charCodeAt(h)&255);return p}function le(w,p){let h,b,T,U=[];for(let ee=0;ee<w.length&&!((p-=2)<0);++ee)h=w.charCodeAt(ee),b=h>>8,T=h%256,U.push(T),U.push(b);return U}function fe(w){return t.toByteArray(O(w))}function V(w,p,h,b){let T;for(T=0;T<b&&!(T+h>=p.length||T>=w.length);++T)p[T+h]=w[T];return T}function te(w,p){return w instanceof p||w!=null&&w.constructor!=null&&w.constructor.name!=null&&w.constructor.name===p.name}function $(w){return w!==w}let J=function(){let w="0123456789abcdef",p=new Array(256);for(let h=0;h<16;++h){let b=h*16;for(let T=0;T<16;++T)p[b+T]=w[h]+w[T]}return p}();function ae(w){return typeof BigInt>"u"?me:w}function me(){throw new Error("BigInt not supported")}return Bn}var ws,Xd,Oo,Qd,Bn,Jd,Zr,jl,sv,ov,Tt=Et(()=>{_e(),ve(),we(),ws={},Xd=!1,Oo={},Qd=!1,Bn={},Jd=!1,Zr=kA(),Zr.Buffer,Zr.SlowBuffer,Zr.INSPECT_MAX_BYTES,Zr.kMaxLength,jl=Zr.Buffer,sv=Zr.INSPECT_MAX_BYTES,ov=Zr.kMaxLength}),_e=Et(()=>{Tt()}),LA=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0});var e=class{constructor(r){this.aliasToTopic={},this.max=r}put(r,n){return n===0||n>this.max?!1:(this.aliasToTopic[n]=r,this.length=Object.keys(this.aliasToTopic).length,!0)}getTopicByAlias(r){return this.aliasToTopic[r]}clear(){this.aliasToTopic={}}};t.default=e}),ht=Te((t,e)=>{_e(),ve(),we(),e.exports={ArrayIsArray(r){return Array.isArray(r)},ArrayPrototypeIncludes(r,n){return r.includes(n)},ArrayPrototypeIndexOf(r,n){return r.indexOf(n)},ArrayPrototypeJoin(r,n){return r.join(n)},ArrayPrototypeMap(r,n){return r.map(n)},ArrayPrototypePop(r,n){return r.pop(n)},ArrayPrototypePush(r,n){return r.push(n)},ArrayPrototypeSlice(r,n,s){return r.slice(n,s)},Error,FunctionPrototypeCall(r,n,...s){return r.call(n,...s)},FunctionPrototypeSymbolHasInstance(r,n){return Function.prototype[Symbol.hasInstance].call(r,n)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(r,n){return Object.defineProperties(r,n)},ObjectDefineProperty(r,n,s){return Object.defineProperty(r,n,s)},ObjectGetOwnPropertyDescriptor(r,n){return Object.getOwnPropertyDescriptor(r,n)},ObjectKeys(r){return Object.keys(r)},ObjectSetPrototypeOf(r,n){return Object.setPrototypeOf(r,n)},Promise,PromisePrototypeCatch(r,n){return r.catch(n)},PromisePrototypeThen(r,n,s){return r.then(n,s)},PromiseReject(r){return Promise.reject(r)},ReflectApply:Reflect.apply,RegExpPrototypeTest(r,n){return r.test(n)},SafeSet:Set,String,StringPrototypeSlice(r,n,s){return r.slice(n,s)},StringPrototypeToLowerCase(r){return r.toLowerCase()},StringPrototypeToUpperCase(r){return r.toUpperCase()},StringPrototypeTrim(r){return r.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,TypedArrayPrototypeSet(r,n,s){return r.set(n,s)},Uint8Array}}),yn=Te((t,e)=>{_e(),ve(),we();var r=(Tt(),Ke(St)),n=Object.getPrototypeOf(async function(){}).constructor,s=globalThis.Blob||r.Blob,i=typeof s<"u"?function(a){return a instanceof s}:function(a){return!1},o=class extends Error{constructor(a){if(!Array.isArray(a))throw new TypeError(`Expected input to be an Array, got ${typeof a}`);let l="";for(let u=0;u<a.length;u++)l+=`    ${a[u].stack}
-`;super(l),this.name="AggregateError",this.errors=a}};e.exports={AggregateError:o,kEmptyObject:Object.freeze({}),once(a){let l=!1;return function(...u){l||(l=!0,a.apply(this,u))}},createDeferredPromise:function(){let a,l;return{promise:new Promise((u,c)=>{a=u,l=c}),resolve:a,reject:l}},promisify(a){return new Promise((l,u)=>{a((c,...f)=>c?u(c):l(...f))})},debuglog(){return function(){}},format(a,...l){return a.replace(/%([sdifj])/g,function(...[u,c]){let f=l.shift();return c==="f"?f.toFixed(6):c==="j"?JSON.stringify(f):c==="s"&&typeof f=="object"?`${f.constructor!==Object?f.constructor.name:""} {}`.trim():f.toString()})},inspect(a){switch(typeof a){case"string":if(a.includes("'"))if(a.includes('"')){if(!a.includes("`")&&!a.includes("${"))return`\`${a}\``}else return`"${a}"`;return`'${a}'`;case"number":return isNaN(a)?"NaN":Object.is(a,-0)?String(a):a;case"bigint":return`${String(a)}n`;case"boolean":case"undefined":return String(a);case"object":return"{}"}},types:{isAsyncFunction(a){return a instanceof n},isArrayBufferView(a){return ArrayBuffer.isView(a)}},isBlob:i},e.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),Op=Te((t,e)=>{_e(),ve(),we();var{AbortController:r,AbortSignal:n}=typeof self<"u"?self:typeof window<"u"?window:void 0;e.exports=r,e.exports.AbortSignal=n,e.exports.default=r}),Vt=Te((t,e)=>{_e(),ve(),we();var{format:r,inspect:n,AggregateError:s}=yn(),i=globalThis.AggregateError||s,o=Symbol("kIsNodeError"),a=["string","function","number","object","Function","Object","boolean","bigint","symbol"],l=/^([A-Z][a-z0-9]*)+$/,u="__node_internal_",c={};function f(S,v){if(!S)throw new c.ERR_INTERNAL_ASSERTION(v)}function d(S){let v="",A=S.length,k=S[0]==="-"?1:0;for(;A>=k+4;A-=3)v=`_${S.slice(A-3,A)}${v}`;return`${S.slice(0,A)}${v}`}function g(S,v,A){if(typeof v=="function")return f(v.length<=A.length,`Code: ${S}; The provided arguments length (${A.length}) does not match the required ones (${v.length}).`),v(...A);let k=(v.match(/%[dfijoOs]/g)||[]).length;return f(k===A.length,`Code: ${S}; The provided arguments length (${A.length}) does not match the required ones (${k}).`),A.length===0?v:r(v,...A)}function m(S,v,A){A||(A=Error);class k extends A{constructor(...D){super(g(S,v,D))}toString(){return`${this.name} [${S}]: ${this.message}`}}Object.defineProperties(k.prototype,{name:{value:A.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${S}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),k.prototype.code=S,k.prototype[o]=!0,c[S]=k}function y(S){let v=u+S.name;return Object.defineProperty(S,"name",{value:v}),S}function E(S,v){if(S&&v&&S!==v){if(Array.isArray(v.errors))return v.errors.push(S),v;let A=new i([v,S],v.message);return A.code=v.code,A}return S||v}var _=class extends Error{constructor(S="The operation was aborted",v=void 0){if(v!==void 0&&typeof v!="object")throw new c.ERR_INVALID_ARG_TYPE("options","Object",v);super(S,v),this.code="ABORT_ERR",this.name="AbortError"}};m("ERR_ASSERTION","%s",Error),m("ERR_INVALID_ARG_TYPE",(S,v,A)=>{f(typeof S=="string","'name' must be a string"),Array.isArray(v)||(v=[v]);let k="The ";S.endsWith(" argument")?k+=`${S} `:k+=`"${S}" ${S.includes(".")?"property":"argument"} `,k+="must be ";let x=[],D=[],N=[];for(let q of v)f(typeof q=="string","All expected entries have to be of type string"),a.includes(q)?x.push(q.toLowerCase()):l.test(q)?D.push(q):(f(q!=="object",'The value "object" should be written as "Object"'),N.push(q));if(D.length>0){let q=x.indexOf("object");q!==-1&&(x.splice(x,q,1),D.push("Object"))}if(x.length>0){switch(x.length){case 1:k+=`of type ${x[0]}`;break;case 2:k+=`one of type ${x[0]} or ${x[1]}`;break;default:{let q=x.pop();k+=`one of type ${x.join(", ")}, or ${q}`}}(D.length>0||N.length>0)&&(k+=" or ")}if(D.length>0){switch(D.length){case 1:k+=`an instance of ${D[0]}`;break;case 2:k+=`an instance of ${D[0]} or ${D[1]}`;break;default:{let q=D.pop();k+=`an instance of ${D.join(", ")}, or ${q}`}}N.length>0&&(k+=" or ")}switch(N.length){case 0:break;case 1:N[0].toLowerCase()!==N[0]&&(k+="an "),k+=`${N[0]}`;break;case 2:k+=`one of ${N[0]} or ${N[1]}`;break;default:{let q=N.pop();k+=`one of ${N.join(", ")}, or ${q}`}}if(A==null)k+=`. Received ${A}`;else if(typeof A=="function"&&A.name)k+=`. Received function ${A.name}`;else if(typeof A=="object"){var B;if((B=A.constructor)!==null&&B!==void 0&&B.name)k+=`. Received an instance of ${A.constructor.name}`;else{let q=n(A,{depth:-1});k+=`. Received ${q}`}}else{let q=n(A,{colors:!1});q.length>25&&(q=`${q.slice(0,25)}...`),k+=`. Received type ${typeof A} (${q})`}return k},TypeError),m("ERR_INVALID_ARG_VALUE",(S,v,A="is invalid")=>{let k=n(v);return k.length>128&&(k=k.slice(0,128)+"..."),`The ${S.includes(".")?"property":"argument"} '${S}' ${A}. Received ${k}`},TypeError),m("ERR_INVALID_RETURN_VALUE",(S,v,A)=>{var k;let x=A!=null&&(k=A.constructor)!==null&&k!==void 0&&k.name?`instance of ${A.constructor.name}`:`type ${typeof A}`;return`Expected ${S} to be returned from the "${v}" function but got ${x}.`},TypeError),m("ERR_MISSING_ARGS",(...S)=>{f(S.length>0,"At least one arg needs to be specified");let v,A=S.length;switch(S=(Array.isArray(S)?S:[S]).map(k=>`"${k}"`).join(" or "),A){case 1:v+=`The ${S[0]} argument`;break;case 2:v+=`The ${S[0]} and ${S[1]} arguments`;break;default:{let k=S.pop();v+=`The ${S.join(", ")}, and ${k} arguments`}break}return`${v} must be specified`},TypeError),m("ERR_OUT_OF_RANGE",(S,v,A)=>{f(v,'Missing "range" argument');let k;return Number.isInteger(A)&&Math.abs(A)>2**32?k=d(String(A)):typeof A=="bigint"?(k=String(A),(A>2n**32n||A<-(2n**32n))&&(k=d(k)),k+="n"):k=n(A),`The value of "${S}" is out of range. It must be ${v}. Received ${k}`},RangeError),m("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),m("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),m("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),m("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),m("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),m("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),m("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),m("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),m("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),m("ERR_STREAM_WRITE_AFTER_END","write after end",Error),m("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),e.exports={AbortError:_,aggregateTwoErrors:y(E),hideStackFrames:y,codes:c}}),Au=Te((t,e)=>{_e(),ve(),we();var{ArrayIsArray:r,ArrayPrototypeIncludes:n,ArrayPrototypeJoin:s,ArrayPrototypeMap:i,NumberIsInteger:o,NumberIsNaN:a,NumberMAX_SAFE_INTEGER:l,NumberMIN_SAFE_INTEGER:u,NumberParseInt:c,ObjectPrototypeHasOwnProperty:f,RegExpPrototypeExec:d,String:g,StringPrototypeToUpperCase:m,StringPrototypeTrim:y}=ht(),{hideStackFrames:E,codes:{ERR_SOCKET_BAD_PORT:_,ERR_INVALID_ARG_TYPE:S,ERR_INVALID_ARG_VALUE:v,ERR_OUT_OF_RANGE:A,ERR_UNKNOWN_SIGNAL:k}}=Vt(),{normalizeEncoding:x}=yn(),{isAsyncFunction:D,isArrayBufferView:N}=yn().types,B={};function q(V){return V===(V|0)}function K(V){return V===V>>>0}var C=/^[0-7]+$/,M="must be a 32-bit unsigned integer or an octal string";function L(V,te,$){if(typeof V>"u"&&(V=$),typeof V=="string"){if(d(C,V)===null)throw new v(te,V,M);V=c(V,8)}return z(V,te),V}var H=E((V,te,$=u,J=l)=>{if(typeof V!="number")throw new S(te,"number",V);if(!o(V))throw new A(te,"an integer",V);if(V<$||V>J)throw new A(te,`>= ${$} && <= ${J}`,V)}),G=E((V,te,$=-2147483648,J=2147483647)=>{if(typeof V!="number")throw new S(te,"number",V);if(!o(V))throw new A(te,"an integer",V);if(V<$||V>J)throw new A(te,`>= ${$} && <= ${J}`,V)}),z=E((V,te,$=!1)=>{if(typeof V!="number")throw new S(te,"number",V);if(!o(V))throw new A(te,"an integer",V);let J=$?1:0,ae=4294967295;if(V<J||V>ae)throw new A(te,`>= ${J} && <= ${ae}`,V)});function F(V,te){if(typeof V!="string")throw new S(te,"string",V)}function ne(V,te,$=void 0,J){if(typeof V!="number")throw new S(te,"number",V);if($!=null&&V<$||J!=null&&V>J||($!=null||J!=null)&&a(V))throw new A(te,`${$!=null?`>= ${$}`:""}${$!=null&&J!=null?" && ":""}${J!=null?`<= ${J}`:""}`,V)}var ce=E((V,te,$)=>{if(!n($,V)){let J="must be one of: "+s(i($,ae=>typeof ae=="string"?`'${ae}'`:g(ae)),", ");throw new v(te,V,J)}});function re(V,te){if(typeof V!="boolean")throw new S(te,"boolean",V)}function R(V,te,$){return V==null||!f(V,te)?$:V[te]}var Q=E((V,te,$=null)=>{let J=R($,"allowArray",!1),ae=R($,"allowFunction",!1);if(!R($,"nullable",!1)&&V===null||!J&&r(V)||typeof V!="object"&&(!ae||typeof V!="function"))throw new S(te,"Object",V)}),de=E((V,te)=>{if(V!=null&&typeof V!="object"&&typeof V!="function")throw new S(te,"a dictionary",V)}),ge=E((V,te,$=0)=>{if(!r(V))throw new S(te,"Array",V);if(V.length<$){let J=`must be longer than ${$}`;throw new v(te,V,J)}});function pe(V,te){ge(V,te);for(let $=0;$<V.length;$++)F(V[$],`${te}[${$}]`)}function X(V,te){ge(V,te);for(let $=0;$<V.length;$++)re(V[$],`${te}[${$}]`)}function Y(V,te="signal"){if(F(V,te),B[V]===void 0)throw B[m(V)]!==void 0?new k(V+" (signals must use all capital letters)"):new k(V)}var ie=E((V,te="buffer")=>{if(!N(V))throw new S(te,["Buffer","TypedArray","DataView"],V)});function be(V,te){let $=x(te),J=V.length;if($==="hex"&&J%2!==0)throw new v("encoding",te,`is invalid for data of length ${J}`)}function he(V,te="Port",$=!0){if(typeof V!="number"&&typeof V!="string"||typeof V=="string"&&y(V).length===0||+V!==+V>>>0||V>65535||V===0&&!$)throw new _(te,V,$);return V|0}var ue=E((V,te)=>{if(V!==void 0&&(V===null||typeof V!="object"||!("aborted"in V)))throw new S(te,"AbortSignal",V)}),I=E((V,te)=>{if(typeof V!="function")throw new S(te,"Function",V)}),P=E((V,te)=>{if(typeof V!="function"||D(V))throw new S(te,"Function",V)}),O=E((V,te)=>{if(V!==void 0)throw new S(te,"undefined",V)});function j(V,te,$){if(!n($,V))throw new S(te,`('${s($,"|")}')`,V)}var W=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function le(V,te){if(typeof V>"u"||!d(W,V))throw new v(te,V,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function fe(V){if(typeof V=="string")return le(V,"hints"),V;if(r(V)){let te=V.length,$="";if(te===0)return $;for(let J=0;J<te;J++){let ae=V[J];le(ae,"hints"),$+=ae,J!==te-1&&($+=", ")}return $}throw new v("hints",V,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}e.exports={isInt32:q,isUint32:K,parseFileMode:L,validateArray:ge,validateStringArray:pe,validateBooleanArray:X,validateBoolean:re,validateBuffer:ie,validateDictionary:de,validateEncoding:be,validateFunction:I,validateInt32:G,validateInteger:H,validateNumber:ne,validateObject:Q,validateOneOf:ce,validatePlainFunction:P,validatePort:he,validateSignalName:Y,validateString:F,validateUint32:z,validateUndefined:O,validateUnion:j,validateAbortSignal:ue,validateLinkHeaderValue:fe}}),es=Te((t,e)=>{_e(),ve(),we();var r=e.exports={},n,s;function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?n=setTimeout:n=i}catch{n=i}try{typeof clearTimeout=="function"?s=clearTimeout:s=o}catch{s=o}})();function a(_){if(n===setTimeout)return setTimeout(_,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(_,0);try{return n(_,0)}catch{try{return n.call(null,_,0)}catch{return n.call(this,_,0)}}}function l(_){if(s===clearTimeout)return clearTimeout(_);if((s===o||!s)&&clearTimeout)return s=clearTimeout,clearTimeout(_);try{return s(_)}catch{try{return s.call(null,_)}catch{return s.call(this,_)}}}var u=[],c=!1,f,d=-1;function g(){!c||!f||(c=!1,f.length?u=f.concat(u):d=-1,u.length&&m())}function m(){if(!c){var _=a(g);c=!0;for(var S=u.length;S;){for(f=u,u=[];++d<S;)f&&f[d].run();d=-1,S=u.length}f=null,c=!1,l(_)}}r.nextTick=function(_){var S=new Array(arguments.length-1);if(arguments.length>1)for(var v=1;v<arguments.length;v++)S[v-1]=arguments[v];u.push(new y(_,S)),u.length===1&&!c&&a(m)};function y(_,S){this.fun=_,this.array=S}y.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={};function E(){}r.on=E,r.addListener=E,r.once=E,r.off=E,r.removeListener=E,r.removeAllListeners=E,r.emit=E,r.prependListener=E,r.prependOnceListener=E,r.listeners=function(_){return[]},r.binding=function(_){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(_){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}}),Mn=Te((t,e)=>{_e(),ve(),we();var{Symbol:r,SymbolAsyncIterator:n,SymbolIterator:s,SymbolFor:i}=ht(),o=r("kDestroyed"),a=r("kIsErrored"),l=r("kIsReadable"),u=r("kIsDisturbed"),c=i("nodejs.webstream.isClosedPromise"),f=i("nodejs.webstream.controllerErrorFunction");function d(R,Q=!1){var de;return!!(R&&typeof R.pipe=="function"&&typeof R.on=="function"&&(!Q||typeof R.pause=="function"&&typeof R.resume=="function")&&(!R._writableState||((de=R._readableState)===null||de===void 0?void 0:de.readable)!==!1)&&(!R._writableState||R._readableState))}function g(R){var Q;return!!(R&&typeof R.write=="function"&&typeof R.on=="function"&&(!R._readableState||((Q=R._writableState)===null||Q===void 0?void 0:Q.writable)!==!1))}function m(R){return!!(R&&typeof R.pipe=="function"&&R._readableState&&typeof R.on=="function"&&typeof R.write=="function")}function y(R){return R&&(R._readableState||R._writableState||typeof R.write=="function"&&typeof R.on=="function"||typeof R.pipe=="function"&&typeof R.on=="function")}function E(R){return!!(R&&!y(R)&&typeof R.pipeThrough=="function"&&typeof R.getReader=="function"&&typeof R.cancel=="function")}function _(R){return!!(R&&!y(R)&&typeof R.getWriter=="function"&&typeof R.abort=="function")}function S(R){return!!(R&&!y(R)&&typeof R.readable=="object"&&typeof R.writable=="object")}function v(R){return E(R)||_(R)||S(R)}function A(R,Q){return R==null?!1:Q===!0?typeof R[n]=="function":Q===!1?typeof R[s]=="function":typeof R[n]=="function"||typeof R[s]=="function"}function k(R){if(!y(R))return null;let Q=R._writableState,de=R._readableState,ge=Q||de;return!!(R.destroyed||R[o]||ge!=null&&ge.destroyed)}function x(R){if(!g(R))return null;if(R.writableEnded===!0)return!0;let Q=R._writableState;return Q!=null&&Q.errored?!1:typeof(Q==null?void 0:Q.ended)!="boolean"?null:Q.ended}function D(R,Q){if(!g(R))return null;if(R.writableFinished===!0)return!0;let de=R._writableState;return de!=null&&de.errored?!1:typeof(de==null?void 0:de.finished)!="boolean"?null:!!(de.finished||Q===!1&&de.ended===!0&&de.length===0)}function N(R){if(!d(R))return null;if(R.readableEnded===!0)return!0;let Q=R._readableState;return!Q||Q.errored?!1:typeof(Q==null?void 0:Q.ended)!="boolean"?null:Q.ended}function B(R,Q){if(!d(R))return null;let de=R._readableState;return de!=null&&de.errored?!1:typeof(de==null?void 0:de.endEmitted)!="boolean"?null:!!(de.endEmitted||Q===!1&&de.ended===!0&&de.length===0)}function q(R){return R&&R[l]!=null?R[l]:typeof(R==null?void 0:R.readable)!="boolean"?null:k(R)?!1:d(R)&&R.readable&&!B(R)}function K(R){return typeof(R==null?void 0:R.writable)!="boolean"?null:k(R)?!1:g(R)&&R.writable&&!x(R)}function C(R,Q){return y(R)?k(R)?!0:!((Q==null?void 0:Q.readable)!==!1&&q(R)||(Q==null?void 0:Q.writable)!==!1&&K(R)):null}function M(R){var Q,de;return y(R)?R.writableErrored?R.writableErrored:(Q=(de=R._writableState)===null||de===void 0?void 0:de.errored)!==null&&Q!==void 0?Q:null:null}function L(R){var Q,de;return y(R)?R.readableErrored?R.readableErrored:(Q=(de=R._readableState)===null||de===void 0?void 0:de.errored)!==null&&Q!==void 0?Q:null:null}function H(R){if(!y(R))return null;if(typeof R.closed=="boolean")return R.closed;let Q=R._writableState,de=R._readableState;return typeof(Q==null?void 0:Q.closed)=="boolean"||typeof(de==null?void 0:de.closed)=="boolean"?(Q==null?void 0:Q.closed)||(de==null?void 0:de.closed):typeof R._closed=="boolean"&&G(R)?R._closed:null}function G(R){return typeof R._closed=="boolean"&&typeof R._defaultKeepAlive=="boolean"&&typeof R._removedConnection=="boolean"&&typeof R._removedContLen=="boolean"}function z(R){return typeof R._sent100=="boolean"&&G(R)}function F(R){var Q;return typeof R._consuming=="boolean"&&typeof R._dumped=="boolean"&&((Q=R.req)===null||Q===void 0?void 0:Q.upgradeOrConnect)===void 0}function ne(R){if(!y(R))return null;let Q=R._writableState,de=R._readableState,ge=Q||de;return!ge&&z(R)||!!(ge&&ge.autoDestroy&&ge.emitClose&&ge.closed===!1)}function ce(R){var Q;return!!(R&&((Q=R[u])!==null&&Q!==void 0?Q:R.readableDidRead||R.readableAborted))}function re(R){var Q,de,ge,pe,X,Y,ie,be,he,ue;return!!(R&&((Q=(de=(ge=(pe=(X=(Y=R[a])!==null&&Y!==void 0?Y:R.readableErrored)!==null&&X!==void 0?X:R.writableErrored)!==null&&pe!==void 0?pe:(ie=R._readableState)===null||ie===void 0?void 0:ie.errorEmitted)!==null&&ge!==void 0?ge:(be=R._writableState)===null||be===void 0?void 0:be.errorEmitted)!==null&&de!==void 0?de:(he=R._readableState)===null||he===void 0?void 0:he.errored)!==null&&Q!==void 0?Q:!((ue=R._writableState)===null||ue===void 0)&&ue.errored))}e.exports={kDestroyed:o,isDisturbed:ce,kIsDisturbed:u,isErrored:re,kIsErrored:a,isReadable:q,kIsReadable:l,kIsClosedPromise:c,kControllerErrorFunction:f,isClosed:H,isDestroyed:k,isDuplexNodeStream:m,isFinished:C,isIterable:A,isReadableNodeStream:d,isReadableStream:E,isReadableEnded:N,isReadableFinished:B,isReadableErrored:L,isNodeStream:y,isWebStream:v,isWritable:K,isWritableNodeStream:g,isWritableStream:_,isWritableEnded:x,isWritableFinished:D,isWritableErrored:M,isServerRequest:F,isServerResponse:z,willEmitClose:ne,isTransformStream:S}}),si=Te((t,e)=>{_e(),ve(),we();var r=es(),{AbortError:n,codes:s}=Vt(),{ERR_INVALID_ARG_TYPE:i,ERR_STREAM_PREMATURE_CLOSE:o}=s,{kEmptyObject:a,once:l}=yn(),{validateAbortSignal:u,validateFunction:c,validateObject:f,validateBoolean:d}=Au(),{Promise:g,PromisePrototypeThen:m}=ht(),{isClosed:y,isReadable:E,isReadableNodeStream:_,isReadableStream:S,isReadableFinished:v,isReadableErrored:A,isWritable:k,isWritableNodeStream:x,isWritableStream:D,isWritableFinished:N,isWritableErrored:B,isNodeStream:q,willEmitClose:K,kIsClosedPromise:C}=Mn();function M(F){return F.setHeader&&typeof F.abort=="function"}var L=()=>{};function H(F,ne,ce){var re,R;if(arguments.length===2?(ce=ne,ne=a):ne==null?ne=a:f(ne,"options"),c(ce,"callback"),u(ne.signal,"options.signal"),ce=l(ce),S(F)||D(F))return G(F,ne,ce);if(!q(F))throw new i("stream",["ReadableStream","WritableStream","Stream"],F);let Q=(re=ne.readable)!==null&&re!==void 0?re:_(F),de=(R=ne.writable)!==null&&R!==void 0?R:x(F),ge=F._writableState,pe=F._readableState,X=()=>{F.writable||be()},Y=K(F)&&_(F)===Q&&x(F)===de,ie=N(F,!1),be=()=>{ie=!0,F.destroyed&&(Y=!1),!(Y&&(!F.readable||Q))&&(!Q||he)&&ce.call(F)},he=v(F,!1),ue=()=>{he=!0,F.destroyed&&(Y=!1),!(Y&&(!F.writable||de))&&(!de||ie)&&ce.call(F)},I=fe=>{ce.call(F,fe)},P=y(F),O=()=>{P=!0;let fe=B(F)||A(F);if(fe&&typeof fe!="boolean")return ce.call(F,fe);if(Q&&!he&&_(F,!0)&&!v(F,!1))return ce.call(F,new o);if(de&&!ie&&!N(F,!1))return ce.call(F,new o);ce.call(F)},j=()=>{P=!0;let fe=B(F)||A(F);if(fe&&typeof fe!="boolean")return ce.call(F,fe);ce.call(F)},W=()=>{F.req.on("finish",be)};M(F)?(F.on("complete",be),Y||F.on("abort",O),F.req?W():F.on("request",W)):de&&!ge&&(F.on("end",X),F.on("close",X)),!Y&&typeof F.aborted=="boolean"&&F.on("aborted",O),F.on("end",ue),F.on("finish",be),ne.error!==!1&&F.on("error",I),F.on("close",O),P?r.nextTick(O):ge!=null&&ge.errorEmitted||pe!=null&&pe.errorEmitted?Y||r.nextTick(j):(!Q&&(!Y||E(F))&&(ie||k(F)===!1)||!de&&(!Y||k(F))&&(he||E(F)===!1)||pe&&F.req&&F.aborted)&&r.nextTick(j);let le=()=>{ce=L,F.removeListener("aborted",O),F.removeListener("complete",be),F.removeListener("abort",O),F.removeListener("request",W),F.req&&F.req.removeListener("finish",be),F.removeListener("end",X),F.removeListener("close",X),F.removeListener("finish",be),F.removeListener("end",ue),F.removeListener("error",I),F.removeListener("close",O)};if(ne.signal&&!P){let fe=()=>{let V=ce;le(),V.call(F,new n(void 0,{cause:ne.signal.reason}))};if(ne.signal.aborted)r.nextTick(fe);else{let V=ce;ce=l((...te)=>{ne.signal.removeEventListener("abort",fe),V.apply(F,te)}),ne.signal.addEventListener("abort",fe)}}return le}function G(F,ne,ce){let re=!1,R=L;if(ne.signal)if(R=()=>{re=!0,ce.call(F,new n(void 0,{cause:ne.signal.reason}))},ne.signal.aborted)r.nextTick(R);else{let de=ce;ce=l((...ge)=>{ne.signal.removeEventListener("abort",R),de.apply(F,ge)}),ne.signal.addEventListener("abort",R)}let Q=(...de)=>{re||r.nextTick(()=>ce.apply(F,de))};return m(F[C].promise,Q,Q),L}function z(F,ne){var ce;let re=!1;return ne===null&&(ne=a),(ce=ne)!==null&&ce!==void 0&&ce.cleanup&&(d(ne.cleanup,"cleanup"),re=ne.cleanup),new g((R,Q)=>{let de=H(F,ne,ge=>{re&&de(),ge?Q(ge):R()})})}e.exports=H,e.exports.finished=z}),ro=Te((t,e)=>{_e(),ve(),we();var r=es(),{aggregateTwoErrors:n,codes:{ERR_MULTIPLE_CALLBACK:s},AbortError:i}=Vt(),{Symbol:o}=ht(),{kDestroyed:a,isDestroyed:l,isFinished:u,isServerRequest:c}=Mn(),f=o("kDestroy"),d=o("kConstruct");function g(C,M,L){C&&(C.stack,M&&!M.errored&&(M.errored=C),L&&!L.errored&&(L.errored=C))}function m(C,M){let L=this._readableState,H=this._writableState,G=H||L;return H!=null&&H.destroyed||L!=null&&L.destroyed?(typeof M=="function"&&M(),this):(g(C,H,L),H&&(H.destroyed=!0),L&&(L.destroyed=!0),G.constructed?y(this,C,M):this.once(f,function(z){y(this,n(z,C),M)}),this)}function y(C,M,L){let H=!1;function G(z){if(H)return;H=!0;let F=C._readableState,ne=C._writableState;g(z,ne,F),ne&&(ne.closed=!0),F&&(F.closed=!0),typeof L=="function"&&L(z),z?r.nextTick(E,C,z):r.nextTick(_,C)}try{C._destroy(M||null,G)}catch(z){G(z)}}function E(C,M){S(C,M),_(C)}function _(C){let M=C._readableState,L=C._writableState;L&&(L.closeEmitted=!0),M&&(M.closeEmitted=!0),(L!=null&&L.emitClose||M!=null&&M.emitClose)&&C.emit("close")}function S(C,M){let L=C._readableState,H=C._writableState;H!=null&&H.errorEmitted||L!=null&&L.errorEmitted||(H&&(H.errorEmitted=!0),L&&(L.errorEmitted=!0),C.emit("error",M))}function v(){let C=this._readableState,M=this._writableState;C&&(C.constructed=!0,C.closed=!1,C.closeEmitted=!1,C.destroyed=!1,C.errored=null,C.errorEmitted=!1,C.reading=!1,C.ended=C.readable===!1,C.endEmitted=C.readable===!1),M&&(M.constructed=!0,M.destroyed=!1,M.closed=!1,M.closeEmitted=!1,M.errored=null,M.errorEmitted=!1,M.finalCalled=!1,M.prefinished=!1,M.ended=M.writable===!1,M.ending=M.writable===!1,M.finished=M.writable===!1)}function A(C,M,L){let H=C._readableState,G=C._writableState;if(G!=null&&G.destroyed||H!=null&&H.destroyed)return this;H!=null&&H.autoDestroy||G!=null&&G.autoDestroy?C.destroy(M):M&&(M.stack,G&&!G.errored&&(G.errored=M),H&&!H.errored&&(H.errored=M),L?r.nextTick(S,C,M):S(C,M))}function k(C,M){if(typeof C._construct!="function")return;let L=C._readableState,H=C._writableState;L&&(L.constructed=!1),H&&(H.constructed=!1),C.once(d,M),!(C.listenerCount(d)>1)&&r.nextTick(x,C)}function x(C){let M=!1;function L(H){if(M){A(C,H??new s);return}M=!0;let G=C._readableState,z=C._writableState,F=z||G;G&&(G.constructed=!0),z&&(z.constructed=!0),F.destroyed?C.emit(f,H):H?A(C,H,!0):r.nextTick(D,C)}try{C._construct(H=>{r.nextTick(L,H)})}catch(H){r.nextTick(L,H)}}function D(C){C.emit(d)}function N(C){return(C==null?void 0:C.setHeader)&&typeof C.abort=="function"}function B(C){C.emit("close")}function q(C,M){C.emit("error",M),r.nextTick(B,C)}function K(C,M){!C||l(C)||(!M&&!u(C)&&(M=new i),c(C)?(C.socket=null,C.destroy(M)):N(C)?C.abort():N(C.req)?C.req.abort():typeof C.destroy=="function"?C.destroy(M):typeof C.close=="function"?C.close():M?r.nextTick(q,C,M):r.nextTick(B,C),C.destroyed||(C[a]=!0))}e.exports={construct:k,destroyer:K,destroy:m,undestroy:v,errorOrDestroy:A}});function Ye(){Ye.init.call(this)}function dl(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function av(t){return t._maxListeners===void 0?Ye.defaultMaxListeners:t._maxListeners}function Rm(t,e,r,n){var s,i,o,a;if(dl(r),(i=t._events)===void 0?(i=t._events=Object.create(null),t._eventsCount=0):(i.newListener!==void 0&&(t.emit("newListener",e,r.listener?r.listener:r),i=t._events),o=i[e]),o===void 0)o=i[e]=r,++t._eventsCount;else if(typeof o=="function"?o=i[e]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(s=av(t))>0&&o.length>s&&!o.warned){o.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=o.length,a=l,console&&console.warn&&console.warn(a)}return t}function NA(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Pm(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},s=NA.bind(n);return s.listener=r,n.wrapFn=s,s}function km(t,e,r){var n=t._events;if(n===void 0)return[];var s=n[e];return s===void 0?[]:typeof s=="function"?r?[s.listener||s]:[s]:r?function(i){for(var o=new Array(i.length),a=0;a<o.length;++a)o[a]=i[a].listener||i[a];return o}(s):lv(s,s.length)}function Lm(t){var e=this._events;if(e!==void 0){var r=e[t];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}function lv(t,e){for(var r=new Array(e),n=0;n<e;++n)r[n]=t[n];return r}var Nm,Dm,pi,Sc,Tc,xc,Gt,Bm=Et(()=>{_e(),ve(),we(),pi=typeof Reflect=="object"?Reflect:null,Sc=pi&&typeof pi.apply=="function"?pi.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)},Dm=pi&&typeof pi.ownKeys=="function"?pi.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)},Tc=Number.isNaN||function(t){return t!=t},Nm=Ye,Ye.EventEmitter=Ye,Ye.prototype._events=void 0,Ye.prototype._eventsCount=0,Ye.prototype._maxListeners=void 0,xc=10,Object.defineProperty(Ye,"defaultMaxListeners",{enumerable:!0,get:function(){return xc},set:function(t){if(typeof t!="number"||t<0||Tc(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");xc=t}}),Ye.init=function(){this._events!==void 0&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ye.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||Tc(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this},Ye.prototype.getMaxListeners=function(){return av(this)},Ye.prototype.emit=function(t){for(var e=[],r=1;r<arguments.length;r++)e.push(arguments[r]);var n=t==="error",s=this._events;if(s!==void 0)n=n&&s.error===void 0;else if(!n)return!1;if(n){var i;if(e.length>0&&(i=e[0]),i instanceof Error)throw i;var o=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw o.context=i,o}var a=s[t];if(a===void 0)return!1;if(typeof a=="function")Sc(a,this,e);else{var l=a.length,u=lv(a,l);for(r=0;r<l;++r)Sc(u[r],this,e)}return!0},Ye.prototype.addListener=function(t,e){return Rm(this,t,e,!1)},Ye.prototype.on=Ye.prototype.addListener,Ye.prototype.prependListener=function(t,e){return Rm(this,t,e,!0)},Ye.prototype.once=function(t,e){return dl(e),this.on(t,Pm(this,t,e)),this},Ye.prototype.prependOnceListener=function(t,e){return dl(e),this.prependListener(t,Pm(this,t,e)),this},Ye.prototype.removeListener=function(t,e){var r,n,s,i,o;if(dl(e),(n=this._events)===void 0)return this;if((r=n[t])===void 0)return this;if(r===e||r.listener===e)--this._eventsCount==0?this._events=Object.create(null):(delete n[t],n.removeListener&&this.emit("removeListener",t,r.listener||e));else if(typeof r!="function"){for(s=-1,i=r.length-1;i>=0;i--)if(r[i]===e||r[i].listener===e){o=r[i].listener,s=i;break}if(s<0)return this;s===0?r.shift():function(a,l){for(;l+1<a.length;l++)a[l]=a[l+1];a.pop()}(r,s),r.length===1&&(n[t]=r[0]),n.removeListener!==void 0&&this.emit("removeListener",t,o||e)}return this},Ye.prototype.off=Ye.prototype.removeListener,Ye.prototype.removeAllListeners=function(t){var e,r,n;if((r=this._events)===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[t]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete r[t]),this;if(arguments.length===0){var s,i=Object.keys(r);for(n=0;n<i.length;++n)(s=i[n])!=="removeListener"&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(typeof(e=r[t])=="function")this.removeListener(t,e);else if(e!==void 0)for(n=e.length-1;n>=0;n--)this.removeListener(t,e[n]);return this},Ye.prototype.listeners=function(t){return km(this,t,!0)},Ye.prototype.rawListeners=function(t){return km(this,t,!1)},Ye.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):Lm.call(t,e)},Ye.prototype.listenerCount=Lm,Ye.prototype.eventNames=function(){return this._eventsCount>0?Dm(this._events):[]},Gt=Nm,Gt.EventEmitter,Gt.defaultMaxListeners,Gt.init,Gt.listenerCount,Gt.EventEmitter,Gt.defaultMaxListeners,Gt.init,Gt.listenerCount}),ts={};Zi(ts,{EventEmitter:()=>uv,default:()=>Gt,defaultMaxListeners:()=>cv,init:()=>fv,listenerCount:()=>dv,on:()=>hv,once:()=>pv});var uv,cv,fv,dv,hv,pv,no=Et(()=>{_e(),ve(),we(),Bm(),Bm(),Gt.once=function(t,e){return new Promise((r,n)=>{function s(...o){i!==void 0&&t.removeListener("error",i),r(o)}let i;e!=="error"&&(i=o=>{t.removeListener(name,s),n(o)},t.once("error",i)),t.once(e,s)})},Gt.on=function(t,e){let r=[],n=[],s=null,i=!1,o={async next(){let u=r.shift();if(u)return createIterResult(u,!1);if(s){let c=Promise.reject(s);return s=null,c}return i?createIterResult(void 0,!0):new Promise((c,f)=>n.push({resolve:c,reject:f}))},async return(){t.removeListener(e,a),t.removeListener("error",l),i=!0;for(let u of n)u.resolve(createIterResult(void 0,!0));return createIterResult(void 0,!0)},throw(u){s=u,t.removeListener(e,a),t.removeListener("error",l)},[Symbol.asyncIterator](){return this}};return t.on(e,a),t.on("error",l),o;function a(...u){let c=n.shift();c?c.resolve(createIterResult(u,!1)):r.push(u)}function l(u){i=!0;let c=n.shift();c?c.reject(u):s=u,o.return()}},{EventEmitter:uv,defaultMaxListeners:cv,init:fv,listenerCount:dv,on:hv,once:pv}=Gt}),Rp=Te((t,e)=>{_e(),ve(),we();var{ArrayIsArray:r,ObjectSetPrototypeOf:n}=ht(),{EventEmitter:s}=(no(),Ke(ts));function i(a){s.call(this,a)}n(i.prototype,s.prototype),n(i,s),i.prototype.pipe=function(a,l){let u=this;function c(_){a.writable&&a.write(_)===!1&&u.pause&&u.pause()}u.on("data",c);function f(){u.readable&&u.resume&&u.resume()}a.on("drain",f),!a._isStdio&&(!l||l.end!==!1)&&(u.on("end",g),u.on("close",m));let d=!1;function g(){d||(d=!0,a.end())}function m(){d||(d=!0,typeof a.destroy=="function"&&a.destroy())}function y(_){E(),s.listenerCount(this,"error")===0&&this.emit("error",_)}o(u,"error",y),o(a,"error",y);function E(){u.removeListener("data",c),a.removeListener("drain",f),u.removeListener("end",g),u.removeListener("close",m),u.removeListener("error",y),a.removeListener("error",y),u.removeListener("end",E),u.removeListener("close",E),a.removeListener("close",E)}return u.on("end",E),u.on("close",E),a.on("close",E),a.emit("pipe",u),a};function o(a,l,u){if(typeof a.prependListener=="function")return a.prependListener(l,u);!a._events||!a._events[l]?a.on(l,u):r(a._events[l])?a._events[l].unshift(u):a._events[l]=[u,a._events[l]]}e.exports={Stream:i,prependListener:o}}),Cu=Te((t,e)=>{_e(),ve(),we();var{AbortError:r,codes:n}=Vt(),{isNodeStream:s,isWebStream:i,kControllerErrorFunction:o}=Mn(),a=si(),{ERR_INVALID_ARG_TYPE:l}=n,u=(c,f)=>{if(typeof c!="object"||!("aborted"in c))throw new l(f,"AbortSignal",c)};e.exports.addAbortSignal=function(c,f){if(u(c,"signal"),!s(f)&&!i(f))throw new l("stream",["ReadableStream","WritableStream","Stream"],f);return e.exports.addAbortSignalNoValidate(c,f)},e.exports.addAbortSignalNoValidate=function(c,f){if(typeof c!="object"||!("aborted"in c))return f;let d=s(f)?()=>{f.destroy(new r(void 0,{cause:c.reason}))}:()=>{f[o](new r(void 0,{cause:c.reason}))};return c.aborted?d():(c.addEventListener("abort",d),a(f,()=>c.removeEventListener("abort",d))),f}}),DA=Te((t,e)=>{_e(),ve(),we();var{StringPrototypeSlice:r,SymbolIterator:n,TypedArrayPrototypeSet:s,Uint8Array:i}=ht(),{Buffer:o}=(Tt(),Ke(St)),{inspect:a}=yn();e.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(l){let u={data:l,next:null};this.length>0?this.tail.next=u:this.head=u,this.tail=u,++this.length}unshift(l){let u={data:l,next:this.head};this.length===0&&(this.tail=u),this.head=u,++this.length}shift(){if(this.length===0)return;let l=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,l}clear(){this.head=this.tail=null,this.length=0}join(l){if(this.length===0)return"";let u=this.head,c=""+u.data;for(;(u=u.next)!==null;)c+=l+u.data;return c}concat(l){if(this.length===0)return o.alloc(0);let u=o.allocUnsafe(l>>>0),c=this.head,f=0;for(;c;)s(u,c.data,f),f+=c.data.length,c=c.next;return u}consume(l,u){let c=this.head.data;if(l<c.length){let f=c.slice(0,l);return this.head.data=c.slice(l),f}return l===c.length?this.shift():u?this._getString(l):this._getBuffer(l)}first(){return this.head.data}*[n](){for(let l=this.head;l;l=l.next)yield l.data}_getString(l){let u="",c=this.head,f=0;do{let d=c.data;if(l>d.length)u+=d,l-=d.length;else{l===d.length?(u+=d,++f,c.next?this.head=c.next:this.head=this.tail=null):(u+=r(d,0,l),this.head=c,c.data=r(d,l));break}++f}while((c=c.next)!==null);return this.length-=f,u}_getBuffer(l){let u=o.allocUnsafe(l),c=l,f=this.head,d=0;do{let g=f.data;if(l>g.length)s(u,g,c-l),l-=g.length;else{l===g.length?(s(u,g,c-l),++d,f.next?this.head=f.next:this.head=this.tail=null):(s(u,new i(g.buffer,g.byteOffset,l),c-l),this.head=f,f.data=g.slice(l));break}++d}while((f=f.next)!==null);return this.length-=d,u}[Symbol.for("nodejs.util.inspect.custom")](l,u){return a(this,{...u,depth:0,customInspect:!1})}}}),Pp=Te((t,e)=>{_e(),ve(),we();var{MathFloor:r,NumberIsInteger:n}=ht(),{ERR_INVALID_ARG_VALUE:s}=Vt().codes;function i(l,u,c){return l.highWaterMark!=null?l.highWaterMark:u?l[c]:null}function o(l){return l?16:16*1024}function a(l,u,c,f){let d=i(u,f,c);if(d!=null){if(!n(d)||d<0){let g=f?`options.${c}`:"options.highWaterMark";throw new s(g,d)}return r(d)}return o(l.objectMode)}e.exports={getHighWaterMark:a,getDefaultHighWaterMark:o}});function $m(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return r===-1&&(r=e),[r,r===e?0:4-r%4]}function BA(t,e,r){for(var n,s,i=[],o=e;o<r;o+=3)n=(t[o]<<16&16711680)+(t[o+1]<<8&65280)+(255&t[o+2]),i.push(wr[(s=n)>>18&63]+wr[s>>12&63]+wr[s>>6&63]+wr[63&s]);return i.join("")}function on(t){if(t>2147483647)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,Ee.prototype),e}function Ee(t,e,r){if(typeof t=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return Zd(t)}return gv(t,e,r)}function gv(t,e,r){if(typeof t=="string")return function(i,o){if(typeof o=="string"&&o!==""||(o="utf8"),!Ee.isEncoding(o))throw new TypeError("Unknown encoding: "+o);var a=0|bv(i,o),l=on(a),u=l.write(i,o);return u!==a&&(l=l.slice(0,u)),l}(t,e);if(ArrayBuffer.isView(t))return Ac(t);if(t==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(an(t,ArrayBuffer)||t&&an(t.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(an(t,SharedArrayBuffer)||t&&an(t.buffer,SharedArrayBuffer)))return $A(t,e,r);if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(n!=null&&n!==t)return Ee.from(n,e,r);var s=function(i){if(Ee.isBuffer(i)){var o=0|kp(i.length),a=on(o);return a.length===0||i.copy(a,0,0,o),a}if(i.length!==void 0)return typeof i.length!="number"||Lp(i.length)?on(0):Ac(i);if(i.type==="Buffer"&&Array.isArray(i.data))return Ac(i.data)}(t);if(s)return s;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof t[Symbol.toPrimitive]=="function")return Ee.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function mv(t){if(typeof t!="number")throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function Zd(t){return mv(t),on(t<0?0:0|kp(t))}function Ac(t){for(var e=t.length<0?0:0|kp(t.length),r=on(e),n=0;n<e;n+=1)r[n]=255&t[n];return r}function $A(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=e===void 0&&r===void 0?new Uint8Array(t):r===void 0?new Uint8Array(t,e):new Uint8Array(t,e,r),Object.setPrototypeOf(n,Ee.prototype),n}function kp(t){if(t>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|t}function bv(t,e){if(Ee.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||an(t,ArrayBuffer))return t.byteLength;if(typeof t!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;for(var s=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return eh(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return _v(t).length;default:if(s)return n?-1:eh(t).length;e=(""+e).toLowerCase(),s=!0}}function FA(t,e,r){var n=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return GA(this,e,r);case"utf8":case"utf-8":return wv(this,e,r);case"ascii":return qA(this,e,r);case"latin1":case"binary":return YA(this,e,r);case"base64":return VA(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return KA(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function gi(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function Fm(t,e,r,n,s){if(t.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Lp(r=+r)&&(r=s?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(s)return-1;r=t.length-1}else if(r<0){if(!s)return-1;r=0}if(typeof e=="string"&&(e=Ee.from(e,n)),Ee.isBuffer(e))return e.length===0?-1:Um(t,e,r,n,s);if(typeof e=="number")return e&=255,typeof Uint8Array.prototype.indexOf=="function"?s?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):Um(t,[e],r,n,s);throw new TypeError("val must be string, number or Buffer")}function Um(t,e,r,n,s){var i,o=1,a=t.length,l=e.length;if(n!==void 0&&((n=String(n).toLowerCase())==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(t.length<2||e.length<2)return-1;o=2,a/=2,l/=2,r/=2}function u(g,m){return o===1?g[m]:g.readUInt16BE(m*o)}if(s){var c=-1;for(i=r;i<a;i++)if(u(t,i)===u(e,c===-1?0:i-c)){if(c===-1&&(c=i),i-c+1===l)return c*o}else c!==-1&&(i-=i-c),c=-1}else for(r+l>a&&(r=a-l),i=r;i>=0;i--){for(var f=!0,d=0;d<l;d++)if(u(t,i+d)!==u(e,d)){f=!1;break}if(f)return i}return-1}function UA(t,e,r,n){r=Number(r)||0;var s=t.length-r;n?(n=Number(n))>s&&(n=s):n=s;var i=e.length;n>i/2&&(n=i/2);for(var o=0;o<n;++o){var a=parseInt(e.substr(2*o,2),16);if(Lp(a))return o;t[r+o]=a}return o}function jA(t,e,r,n){return Iu(eh(e,t.length-r),t,r,n)}function yv(t,e,r,n){return Iu(function(s){for(var i=[],o=0;o<s.length;++o)i.push(255&s.charCodeAt(o));return i}(e),t,r,n)}function WA(t,e,r,n){return yv(t,e,r,n)}function zA(t,e,r,n){return Iu(_v(e),t,r,n)}function HA(t,e,r,n){return Iu(function(s,i){for(var o,a,l,u=[],c=0;c<s.length&&!((i-=2)<0);++c)o=s.charCodeAt(c),a=o>>8,l=o%256,u.push(l),u.push(a);return u}(e,t.length-r),t,r,n)}function VA(t,e,r){return e===0&&r===t.length?Wl.fromByteArray(t):Wl.fromByteArray(t.slice(e,r))}function wv(t,e,r){r=Math.min(t.length,r);for(var n=[],s=e;s<r;){var i,o,a,l,u=t[s],c=null,f=u>239?4:u>223?3:u>191?2:1;if(s+f<=r)switch(f){case 1:u<128&&(c=u);break;case 2:(192&(i=t[s+1]))==128&&(l=(31&u)<<6|63&i)>127&&(c=l);break;case 3:i=t[s+1],o=t[s+2],(192&i)==128&&(192&o)==128&&(l=(15&u)<<12|(63&i)<<6|63&o)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:i=t[s+1],o=t[s+2],a=t[s+3],(192&i)==128&&(192&o)==128&&(192&a)==128&&(l=(15&u)<<18|(63&i)<<12|(63&o)<<6|63&a)>65535&&l<1114112&&(c=l)}c===null?(c=65533,f=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),s+=f}return function(d){var g=d.length;if(g<=4096)return String.fromCharCode.apply(String,d);for(var m="",y=0;y<g;)m+=String.fromCharCode.apply(String,d.slice(y,y+=4096));return m}(n)}function qA(t,e,r){var n="";r=Math.min(t.length,r);for(var s=e;s<r;++s)n+=String.fromCharCode(127&t[s]);return n}function YA(t,e,r){var n="";r=Math.min(t.length,r);for(var s=e;s<r;++s)n+=String.fromCharCode(t[s]);return n}function GA(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var s="",i=e;i<r;++i)s+=Sv[t[i]];return s}function KA(t,e,r){for(var n=t.slice(e,r),s="",i=0;i<n.length;i+=2)s+=String.fromCharCode(n[i]+256*n[i+1]);return s}function gt(t,e,r){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>r)throw new RangeError("Trying to access beyond buffer length")}function $t(t,e,r,n,s,i){if(!Ee.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>s||e<i)throw new RangeError('"value" argument is out of bounds');if(r+n>t.length)throw new RangeError("Index out of range")}function vv(t,e,r,n,s,i){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function jm(t,e,r,n,s){return e=+e,r>>>=0,s||vv(t,0,r,4),Ci.write(t,e,r,n,23,4),r+4}function Wm(t,e,r,n,s){return e=+e,r>>>=0,s||vv(t,0,r,8),Ci.write(t,e,r,n,52,8),r+8}function eh(t,e){var r;e=e||1/0;for(var n=t.length,s=null,i=[],o=0;o<n;++o){if((r=t.charCodeAt(o))>55295&&r<57344){if(!s){if(r>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&i.push(239,191,189);continue}s=r;continue}if(r<56320){(e-=3)>-1&&i.push(239,191,189),s=r;continue}r=65536+(s-55296<<10|r-56320)}else s&&(e-=3)>-1&&i.push(239,191,189);if(s=null,r<128){if((e-=1)<0)break;i.push(r)}else if(r<2048){if((e-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function _v(t){return Wl.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(Ev,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(t))}function Iu(t,e,r,n){for(var s=0;s<n&&!(s+r>=e.length||s>=t.length);++s)e[s+r]=t[s];return s}function an(t,e){return t instanceof e||t!=null&&t.constructor!=null&&t.constructor.name!=null&&t.constructor.name===e.name}function Lp(t){return t!=t}function zm(t,e){for(var r in t)e[r]=t[r]}function mi(t,e,r){return mr(t,e,r)}function mo(t){var e;switch(this.encoding=function(r){var n=function(s){if(!s)return"utf8";for(var i;;)switch(s){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return s;default:if(i)return;s=(""+s).toLowerCase(),i=!0}}(r);if(typeof n!="string"&&(zl.isEncoding===th||!th(r)))throw new Error("Unknown encoding: "+r);return n||r}(t),this.encoding){case"utf16le":this.text=QA,this.end=JA,e=4;break;case"utf8":this.fillLast=XA,e=4;break;case"base64":this.text=ZA,this.end=eC,e=3;break;default:return this.write=tC,this.end=rC,void 0}this.lastNeed=0,this.lastTotal=0,this.lastChar=zl.allocUnsafe(e)}function Cc(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function XA(t){var e=this.lastTotal-this.lastNeed,r=function(n,s,i){if((192&s[0])!=128)return n.lastNeed=0,"�";if(n.lastNeed>1&&s.length>1){if((192&s[1])!=128)return n.lastNeed=1,"�";if(n.lastNeed>2&&s.length>2&&(192&s[2])!=128)return n.lastNeed=2,"�"}}(this,t);return r!==void 0?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length,void 0)}function QA(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function JA(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function ZA(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function eC(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function tC(t){return t.toString(this.encoding)}function rC(t){return t&&t.length?this.write(t):""}var Hm,wr,Yt,Vm,Da,bi,qm,Ym,Or,Wl,Ci,Ic,Ev,Sv,bo,yo,mr,Gm,xs,zl,th,Km=Et(()=>{for(_e(),ve(),we(),Hm={byteLength:function(t){var e=$m(t),r=e[0],n=e[1];return 3*(r+n)/4-n},toByteArray:function(t){var e,r,n=$m(t),s=n[0],i=n[1],o=new Vm(function(u,c,f){return 3*(c+f)/4-f}(0,s,i)),a=0,l=i>0?s-4:s;for(r=0;r<l;r+=4)e=Yt[t.charCodeAt(r)]<<18|Yt[t.charCodeAt(r+1)]<<12|Yt[t.charCodeAt(r+2)]<<6|Yt[t.charCodeAt(r+3)],o[a++]=e>>16&255,o[a++]=e>>8&255,o[a++]=255&e;return i===2&&(e=Yt[t.charCodeAt(r)]<<2|Yt[t.charCodeAt(r+1)]>>4,o[a++]=255&e),i===1&&(e=Yt[t.charCodeAt(r)]<<10|Yt[t.charCodeAt(r+1)]<<4|Yt[t.charCodeAt(r+2)]>>2,o[a++]=e>>8&255,o[a++]=255&e),o},fromByteArray:function(t){for(var e,r=t.length,n=r%3,s=[],i=0,o=r-n;i<o;i+=16383)s.push(BA(t,i,i+16383>o?o:i+16383));return n===1?(e=t[r-1],s.push(wr[e>>2]+wr[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],s.push(wr[e>>10]+wr[e>>4&63]+wr[e<<2&63]+"=")),s.join("")}},wr=[],Yt=[],Vm=typeof Uint8Array<"u"?Uint8Array:Array,Da="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bi=0,qm=Da.length;bi<qm;++bi)wr[bi]=Da[bi],Yt[Da.charCodeAt(bi)]=bi;Yt[45]=62,Yt[95]=63,Ym={read:function(t,e,r,n,s){var i,o,a=8*s-n-1,l=(1<<a)-1,u=l>>1,c=-7,f=r?s-1:0,d=r?-1:1,g=t[e+f];for(f+=d,i=g&(1<<-c)-1,g>>=-c,c+=a;c>0;i=256*i+t[e+f],f+=d,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=256*o+t[e+f],f+=d,c-=8);if(i===0)i=1-u;else{if(i===l)return o?NaN:1/0*(g?-1:1);o+=Math.pow(2,n),i-=u}return(g?-1:1)*o*Math.pow(2,i-n)},write:function(t,e,r,n,s,i){var o,a,l,u=8*i-s-1,c=(1<<u)-1,f=c>>1,d=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:i-1,m=n?1:-1,y=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?d/l:d*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=c?(a=0,o=c):o+f>=1?(a=(e*l-1)*Math.pow(2,s),o+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,s),o=0));s>=8;t[r+g]=255&a,g+=m,a/=256,s-=8);for(o=o<<s|a,u+=s;u>0;t[r+g]=255&o,g+=m,o/=256,u-=8);t[r+g-m]|=128*y}},Or={},Wl=Hm,Ci=Ym,Ic=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null,Or.Buffer=Ee,Or.SlowBuffer=function(t){return+t!=t&&(t=0),Ee.alloc(+t)},Or.INSPECT_MAX_BYTES=50,Or.kMaxLength=2147483647,Ee.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),t.foo()===42}catch{return!1}}(),Ee.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Ee.prototype,"parent",{enumerable:!0,get:function(){if(Ee.isBuffer(this))return this.buffer}}),Object.defineProperty(Ee.prototype,"offset",{enumerable:!0,get:function(){if(Ee.isBuffer(this))return this.byteOffset}}),Ee.poolSize=8192,Ee.from=function(t,e,r){return gv(t,e,r)},Object.setPrototypeOf(Ee.prototype,Uint8Array.prototype),Object.setPrototypeOf(Ee,Uint8Array),Ee.alloc=function(t,e,r){return function(n,s,i){return mv(n),n<=0?on(n):s!==void 0?typeof i=="string"?on(n).fill(s,i):on(n).fill(s):on(n)}(t,e,r)},Ee.allocUnsafe=function(t){return Zd(t)},Ee.allocUnsafeSlow=function(t){return Zd(t)},Ee.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==Ee.prototype},Ee.compare=function(t,e){if(an(t,Uint8Array)&&(t=Ee.from(t,t.offset,t.byteLength)),an(e,Uint8Array)&&(e=Ee.from(e,e.offset,e.byteLength)),!Ee.isBuffer(t)||!Ee.isBuffer(e))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var r=t.length,n=e.length,s=0,i=Math.min(r,n);s<i;++s)if(t[s]!==e[s]){r=t[s],n=e[s];break}return r<n?-1:n<r?1:0},Ee.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Ee.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('"list" argument must be an Array of Buffers');if(t.length===0)return Ee.alloc(0);var r;if(e===void 0)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var n=Ee.allocUnsafe(e),s=0;for(r=0;r<t.length;++r){var i=t[r];if(an(i,Uint8Array)&&(i=Ee.from(i)),!Ee.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,s),s+=i.length}return n},Ee.byteLength=bv,Ee.prototype._isBuffer=!0,Ee.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)gi(this,e,e+1);return this},Ee.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)gi(this,e,e+3),gi(this,e+1,e+2);return this},Ee.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)gi(this,e,e+7),gi(this,e+1,e+6),gi(this,e+2,e+5),gi(this,e+3,e+4);return this},Ee.prototype.toString=function(){var t=this.length;return t===0?"":arguments.length===0?wv(this,0,t):FA.apply(this,arguments)},Ee.prototype.toLocaleString=Ee.prototype.toString,Ee.prototype.equals=function(t){if(!Ee.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||Ee.compare(this,t)===0},Ee.prototype.inspect=function(){var t="",e=Or.INSPECT_MAX_BYTES;return t=this.toString("hex",0,e).replace(/(.{2})/g,"$1 ").trim(),this.length>e&&(t+=" ... "),"<Buffer "+t+">"},Ic&&(Ee.prototype[Ic]=Ee.prototype.inspect),Ee.prototype.compare=function(t,e,r,n,s){if(an(t,Uint8Array)&&(t=Ee.from(t,t.offset,t.byteLength)),!Ee.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(e===void 0&&(e=0),r===void 0&&(r=t?t.length:0),n===void 0&&(n=0),s===void 0&&(s=this.length),e<0||r>t.length||n<0||s>this.length)throw new RangeError("out of range index");if(n>=s&&e>=r)return 0;if(n>=s)return-1;if(e>=r)return 1;if(this===t)return 0;for(var i=(s>>>=0)-(n>>>=0),o=(r>>>=0)-(e>>>=0),a=Math.min(i,o),l=this.slice(n,s),u=t.slice(e,r),c=0;c<a;++c)if(l[c]!==u[c]){i=l[c],o=u[c];break}return i<o?-1:o<i?1:0},Ee.prototype.includes=function(t,e,r){return this.indexOf(t,e,r)!==-1},Ee.prototype.indexOf=function(t,e,r){return Fm(this,t,e,r,!0)},Ee.prototype.lastIndexOf=function(t,e,r){return Fm(this,t,e,r,!1)},Ee.prototype.write=function(t,e,r,n){if(e===void 0)n="utf8",r=this.length,e=0;else if(r===void 0&&typeof e=="string")n=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e>>>=0,isFinite(r)?(r>>>=0,n===void 0&&(n="utf8")):(n=r,r=void 0)}var s=this.length-e;if((r===void 0||r>s)&&(r=s),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return UA(this,t,e,r);case"utf8":case"utf-8":return jA(this,t,e,r);case"ascii":return yv(this,t,e,r);case"latin1":case"binary":return WA(this,t,e,r);case"base64":return zA(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return HA(this,t,e,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},Ee.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},Ee.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=e===void 0?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t);var n=this.subarray(t,e);return Object.setPrototypeOf(n,Ee.prototype),n},Ee.prototype.readUIntLE=function(t,e,r){t>>>=0,e>>>=0,r||gt(t,e,this.length);for(var n=this[t],s=1,i=0;++i<e&&(s*=256);)n+=this[t+i]*s;return n},Ee.prototype.readUIntBE=function(t,e,r){t>>>=0,e>>>=0,r||gt(t,e,this.length);for(var n=this[t+--e],s=1;e>0&&(s*=256);)n+=this[t+--e]*s;return n},Ee.prototype.readUInt8=function(t,e){return t>>>=0,e||gt(t,1,this.length),this[t]},Ee.prototype.readUInt16LE=function(t,e){return t>>>=0,e||gt(t,2,this.length),this[t]|this[t+1]<<8},Ee.prototype.readUInt16BE=function(t,e){return t>>>=0,e||gt(t,2,this.length),this[t]<<8|this[t+1]},Ee.prototype.readUInt32LE=function(t,e){return t>>>=0,e||gt(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},Ee.prototype.readUInt32BE=function(t,e){return t>>>=0,e||gt(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},Ee.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||gt(t,e,this.length);for(var n=this[t],s=1,i=0;++i<e&&(s*=256);)n+=this[t+i]*s;return n>=(s*=128)&&(n-=Math.pow(2,8*e)),n},Ee.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||gt(t,e,this.length);for(var n=e,s=1,i=this[t+--n];n>0&&(s*=256);)i+=this[t+--n]*s;return i>=(s*=128)&&(i-=Math.pow(2,8*e)),i},Ee.prototype.readInt8=function(t,e){return t>>>=0,e||gt(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},Ee.prototype.readInt16LE=function(t,e){t>>>=0,e||gt(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},Ee.prototype.readInt16BE=function(t,e){t>>>=0,e||gt(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},Ee.prototype.readInt32LE=function(t,e){return t>>>=0,e||gt(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},Ee.prototype.readInt32BE=function(t,e){return t>>>=0,e||gt(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},Ee.prototype.readFloatLE=function(t,e){return t>>>=0,e||gt(t,4,this.length),Ci.read(this,t,!0,23,4)},Ee.prototype.readFloatBE=function(t,e){return t>>>=0,e||gt(t,4,this.length),Ci.read(this,t,!1,23,4)},Ee.prototype.readDoubleLE=function(t,e){return t>>>=0,e||gt(t,8,this.length),Ci.read(this,t,!0,52,8)},Ee.prototype.readDoubleBE=function(t,e){return t>>>=0,e||gt(t,8,this.length),Ci.read(this,t,!1,52,8)},Ee.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||$t(this,t,e,r,Math.pow(2,8*r)-1,0);var s=1,i=0;for(this[e]=255&t;++i<r&&(s*=256);)this[e+i]=t/s&255;return e+r},Ee.prototype.writeUIntBE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||$t(this,t,e,r,Math.pow(2,8*r)-1,0);var s=r-1,i=1;for(this[e+s]=255&t;--s>=0&&(i*=256);)this[e+s]=t/i&255;return e+r},Ee.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||$t(this,t,e,1,255,0),this[e]=255&t,e+1},Ee.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||$t(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},Ee.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||$t(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},Ee.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||$t(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},Ee.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||$t(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},Ee.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var s=Math.pow(2,8*r-1);$t(this,t,e,r,s-1,-s)}var i=0,o=1,a=0;for(this[e]=255&t;++i<r&&(o*=256);)t<0&&a===0&&this[e+i-1]!==0&&(a=1),this[e+i]=(t/o>>0)-a&255;return e+r},Ee.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var s=Math.pow(2,8*r-1);$t(this,t,e,r,s-1,-s)}var i=r-1,o=1,a=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&a===0&&this[e+i+1]!==0&&(a=1),this[e+i]=(t/o>>0)-a&255;return e+r},Ee.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||$t(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},Ee.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||$t(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},Ee.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||$t(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},Ee.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||$t(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},Ee.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||$t(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},Ee.prototype.writeFloatLE=function(t,e,r){return jm(this,t,e,!0,r)},Ee.prototype.writeFloatBE=function(t,e,r){return jm(this,t,e,!1,r)},Ee.prototype.writeDoubleLE=function(t,e,r){return Wm(this,t,e,!0,r)},Ee.prototype.writeDoubleBE=function(t,e,r){return Wm(this,t,e,!1,r)},Ee.prototype.copy=function(t,e,r,n){if(!Ee.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||n===0||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<r&&(n=r),n===r||t.length===0||this.length===0)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var s=n-r;if(this===t&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(e,r,n);else if(this===t&&r<e&&e<n)for(var i=s-1;i>=0;--i)t[i+e]=this[i+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return s},Ee.prototype.fill=function(t,e,r,n){if(typeof t=="string"){if(typeof e=="string"?(n=e,e=0,r=this.length):typeof r=="string"&&(n=r,r=this.length),n!==void 0&&typeof n!="string")throw new TypeError("encoding must be a string");if(typeof n=="string"&&!Ee.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(t.length===1){var s=t.charCodeAt(0);(n==="utf8"&&s<128||n==="latin1")&&(t=s)}}else typeof t=="number"?t&=255:typeof t=="boolean"&&(t=Number(t));if(e<0||this.length<e||this.length<r)throw new RangeError("Out of range index");if(r<=e)return this;var i;if(e>>>=0,r=r===void 0?this.length:r>>>0,t||(t=0),typeof t=="number")for(i=e;i<r;++i)this[i]=t;else{var o=Ee.isBuffer(t)?t:Ee.from(t,n),a=o.length;if(a===0)throw new TypeError('The value "'+t+'" is invalid for argument "value"');for(i=0;i<r-e;++i)this[i+e]=o[i%a]}return this},Ev=/[^+/0-9A-Za-z-_]/g,Sv=function(){for(var t=new Array(256),e=0;e<16;++e)for(var r=16*e,n=0;n<16;++n)t[r+n]="0123456789abcdef"[e]+"0123456789abcdef"[n];return t}(),Or.Buffer,Or.INSPECT_MAX_BYTES,Or.kMaxLength,bo={},yo=Or,mr=yo.Buffer,mr.from&&mr.alloc&&mr.allocUnsafe&&mr.allocUnsafeSlow?bo=yo:(zm(yo,bo),bo.Buffer=mi),mi.prototype=Object.create(mr.prototype),zm(mr,mi),mi.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return mr(t,e,r)},mi.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var n=mr(t);return e!==void 0?typeof r=="string"?n.fill(e,r):n.fill(e):n.fill(0),n},mi.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return mr(t)},mi.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return yo.SlowBuffer(t)},Gm=bo,xs={},zl=Gm.Buffer,th=zl.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},xs.StringDecoder=mo,mo.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if((e=this.fillLast(t))===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||""},mo.prototype.end=function(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e},mo.prototype.text=function(t,e){var r=function(s,i,o){var a=i.length-1;if(a<o)return 0;var l=Cc(i[a]);return l>=0?(l>0&&(s.lastNeed=l-1),l):--a<o||l===-2?0:(l=Cc(i[a]))>=0?(l>0&&(s.lastNeed=l-2),l):--a<o||l===-2?0:(l=Cc(i[a]))>=0?(l>0&&(l===2?l=0:s.lastNeed=l-3),l):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)},mo.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length},xs.StringDecoder,xs.StringDecoder}),Tv={};Zi(Tv,{StringDecoder:()=>xv,default:()=>xs});var xv,nC=Et(()=>{_e(),ve(),we(),Km(),Km(),xv=xs.StringDecoder}),Av=Te((t,e)=>{_e(),ve(),we();var r=es(),{PromisePrototypeThen:n,SymbolAsyncIterator:s,SymbolIterator:i}=ht(),{Buffer:o}=(Tt(),Ke(St)),{ERR_INVALID_ARG_TYPE:a,ERR_STREAM_NULL_VALUES:l}=Vt().codes;function u(c,f,d){let g;if(typeof f=="string"||f instanceof o)return new c({objectMode:!0,...d,read(){this.push(f),this.push(null)}});let m;if(f&&f[s])m=!0,g=f[s]();else if(f&&f[i])m=!1,g=f[i]();else throw new a("iterable",["Iterable"],f);let y=new c({objectMode:!0,highWaterMark:1,...d}),E=!1;y._read=function(){E||(E=!0,S())},y._destroy=function(v,A){n(_(v),()=>r.nextTick(A,v),k=>r.nextTick(A,k||v))};async function _(v){let A=v!=null,k=typeof g.throw=="function";if(A&&k){let{value:x,done:D}=await g.throw(v);if(await x,D)return}if(typeof g.return=="function"){let{value:x}=await g.return();await x}}async function S(){for(;;){try{let{value:v,done:A}=m?await g.next():g.next();if(A)y.push(null);else{let k=v&&typeof v.then=="function"?await v:v;if(k===null)throw E=!1,new l;if(y.push(k))continue;E=!1}}catch(v){y.destroy(v)}break}}return y}e.exports=u}),Mu=Te((t,e)=>{_e(),ve(),we();var r=es(),{ArrayPrototypeIndexOf:n,NumberIsInteger:s,NumberIsNaN:i,NumberParseInt:o,ObjectDefineProperties:a,ObjectKeys:l,ObjectSetPrototypeOf:u,Promise:c,SafeSet:f,SymbolAsyncIterator:d,Symbol:g}=ht();e.exports=R,R.ReadableState=re;var{EventEmitter:m}=(no(),Ke(ts)),{Stream:y,prependListener:E}=Rp(),{Buffer:_}=(Tt(),Ke(St)),{addAbortSignal:S}=Cu(),v=si(),A=yn().debuglog("stream",p=>{A=p}),k=DA(),x=ro(),{getHighWaterMark:D,getDefaultHighWaterMark:N}=Pp(),{aggregateTwoErrors:B,codes:{ERR_INVALID_ARG_TYPE:q,ERR_METHOD_NOT_IMPLEMENTED:K,ERR_OUT_OF_RANGE:C,ERR_STREAM_PUSH_AFTER_EOF:M,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:L}}=Vt(),{validateObject:H}=Au(),G=g("kPaused"),{StringDecoder:z}=(nC(),Ke(Tv)),F=Av();u(R.prototype,y.prototype),u(R,y);var ne=()=>{},{errorOrDestroy:ce}=x;function re(p,h,b){typeof b!="boolean"&&(b=h instanceof wn()),this.objectMode=!!(p&&p.objectMode),b&&(this.objectMode=this.objectMode||!!(p&&p.readableObjectMode)),this.highWaterMark=p?D(this,p,"readableHighWaterMark",b):N(!1),this.buffer=new k,this.length=0,this.pipes=[],this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.constructed=!0,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this[G]=null,this.errorEmitted=!1,this.emitClose=!p||p.emitClose!==!1,this.autoDestroy=!p||p.autoDestroy!==!1,this.destroyed=!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this.defaultEncoding=p&&p.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.multiAwaitDrain=!1,this.readingMore=!1,this.dataEmitted=!1,this.decoder=null,this.encoding=null,p&&p.encoding&&(this.decoder=new z(p.encoding),this.encoding=p.encoding)}function R(p){if(!(this instanceof R))return new R(p);let h=this instanceof wn();this._readableState=new re(p,this,h),p&&(typeof p.read=="function"&&(this._read=p.read),typeof p.destroy=="function"&&(this._destroy=p.destroy),typeof p.construct=="function"&&(this._construct=p.construct),p.signal&&!h&&S(p.signal,this)),y.call(this,p),x.construct(this,()=>{this._readableState.needReadable&&he(this,this._readableState)})}R.prototype.destroy=x.destroy,R.prototype._undestroy=x.undestroy,R.prototype._destroy=function(p,h){h(p)},R.prototype[m.captureRejectionSymbol]=function(p){this.destroy(p)},R.prototype.push=function(p,h){return Q(this,p,h,!1)},R.prototype.unshift=function(p,h){return Q(this,p,h,!0)};function Q(p,h,b,T){A("readableAddChunk",h);let U=p._readableState,ee;if(U.objectMode||(typeof h=="string"?(b=b||U.defaultEncoding,U.encoding!==b&&(T&&U.encoding?h=_.from(h,b).toString(U.encoding):(h=_.from(h,b),b=""))):h instanceof _?b="":y._isUint8Array(h)?(h=y._uint8ArrayToBuffer(h),b=""):h!=null&&(ee=new q("chunk",["string","Buffer","Uint8Array"],h))),ee)ce(p,ee);else if(h===null)U.reading=!1,Y(p,U);else if(U.objectMode||h&&h.length>0)if(T)if(U.endEmitted)ce(p,new L);else{if(U.destroyed||U.errored)return!1;de(p,U,h,!0)}else if(U.ended)ce(p,new M);else{if(U.destroyed||U.errored)return!1;U.reading=!1,U.decoder&&!b?(h=U.decoder.write(h),U.objectMode||h.length!==0?de(p,U,h,!1):he(p,U)):de(p,U,h,!1)}else T||(U.reading=!1,he(p,U));return!U.ended&&(U.length<U.highWaterMark||U.length===0)}function de(p,h,b,T){h.flowing&&h.length===0&&!h.sync&&p.listenerCount("data")>0?(h.multiAwaitDrain?h.awaitDrainWriters.clear():h.awaitDrainWriters=null,h.dataEmitted=!0,p.emit("data",b)):(h.length+=h.objectMode?1:b.length,T?h.buffer.unshift(b):h.buffer.push(b),h.needReadable&&ie(p)),he(p,h)}R.prototype.isPaused=function(){let p=this._readableState;return p[G]===!0||p.flowing===!1},R.prototype.setEncoding=function(p){let h=new z(p);this._readableState.decoder=h,this._readableState.encoding=this._readableState.decoder.encoding;let b=this._readableState.buffer,T="";for(let U of b)T+=h.write(U);return b.clear(),T!==""&&b.push(T),this._readableState.length=T.length,this};var ge=1073741824;function pe(p){if(p>ge)throw new C("size","<= 1GiB",p);return p--,p|=p>>>1,p|=p>>>2,p|=p>>>4,p|=p>>>8,p|=p>>>16,p++,p}function X(p,h){return p<=0||h.length===0&&h.ended?0:h.objectMode?1:i(p)?h.flowing&&h.length?h.buffer.first().length:h.length:p<=h.length?p:h.ended?h.length:0}R.prototype.read=function(p){A("read",p),p===void 0?p=NaN:s(p)||(p=o(p,10));let h=this._readableState,b=p;if(p>h.highWaterMark&&(h.highWaterMark=pe(p)),p!==0&&(h.emittedReadable=!1),p===0&&h.needReadable&&((h.highWaterMark!==0?h.length>=h.highWaterMark:h.length>0)||h.ended))return A("read: emitReadable",h.length,h.ended),h.length===0&&h.ended?$(this):ie(this),null;if(p=X(p,h),p===0&&h.ended)return h.length===0&&$(this),null;let T=h.needReadable;if(A("need readable",T),(h.length===0||h.length-p<h.highWaterMark)&&(T=!0,A("length less than watermark",T)),h.ended||h.reading||h.destroyed||h.errored||!h.constructed)T=!1,A("reading, ended or constructing",T);else if(T){A("do read"),h.reading=!0,h.sync=!0,h.length===0&&(h.needReadable=!0);try{this._read(h.highWaterMark)}catch(ee){ce(this,ee)}h.sync=!1,h.reading||(p=X(b,h))}let U;return p>0?U=te(p,h):U=null,U===null?(h.needReadable=h.length<=h.highWaterMark,p=0):(h.length-=p,h.multiAwaitDrain?h.awaitDrainWriters.clear():h.awaitDrainWriters=null),h.length===0&&(h.ended||(h.needReadable=!0),b!==p&&h.ended&&$(this)),U!==null&&!h.errorEmitted&&!h.closeEmitted&&(h.dataEmitted=!0,this.emit("data",U)),U};function Y(p,h){if(A("onEofChunk"),!h.ended){if(h.decoder){let b=h.decoder.end();b&&b.length&&(h.buffer.push(b),h.length+=h.objectMode?1:b.length)}h.ended=!0,h.sync?ie(p):(h.needReadable=!1,h.emittedReadable=!0,be(p))}}function ie(p){let h=p._readableState;A("emitReadable",h.needReadable,h.emittedReadable),h.needReadable=!1,h.emittedReadable||(A("emitReadable",h.flowing),h.emittedReadable=!0,r.nextTick(be,p))}function be(p){let h=p._readableState;A("emitReadable_",h.destroyed,h.length,h.ended),!h.destroyed&&!h.errored&&(h.length||h.ended)&&(p.emit("readable"),h.emittedReadable=!1),h.needReadable=!h.flowing&&!h.ended&&h.length<=h.highWaterMark,le(p)}function he(p,h){!h.readingMore&&h.constructed&&(h.readingMore=!0,r.nextTick(ue,p,h))}function ue(p,h){for(;!h.reading&&!h.ended&&(h.length<h.highWaterMark||h.flowing&&h.length===0);){let b=h.length;if(A("maybeReadMore read 0"),p.read(0),b===h.length)break}h.readingMore=!1}R.prototype._read=function(p){throw new K("_read()")},R.prototype.pipe=function(p,h){let b=this,T=this._readableState;T.pipes.length===1&&(T.multiAwaitDrain||(T.multiAwaitDrain=!0,T.awaitDrainWriters=new f(T.awaitDrainWriters?[T.awaitDrainWriters]:[]))),T.pipes.push(p),A("pipe count=%d opts=%j",T.pipes.length,h);let U=(!h||h.end!==!1)&&p!==r.stdout&&p!==r.stderr?ye:lt;T.endEmitted?r.nextTick(U):b.once("end",U),p.on("unpipe",ee);function ee(yt,ft){A("onunpipe"),yt===b&&ft&&ft.hasUnpiped===!1&&(ft.hasUnpiped=!0,xe())}function ye(){A("onend"),p.end()}let Ae,Re=!1;function xe(){A("cleanup"),p.removeListener("close",ct),p.removeListener("finish",Ze),Ae&&p.removeListener("drain",Ae),p.removeListener("error",Ve),p.removeListener("unpipe",ee),b.removeListener("end",ye),b.removeListener("end",lt),b.removeListener("data",Me),Re=!0,Ae&&T.awaitDrainWriters&&(!p._writableState||p._writableState.needDrain)&&Ae()}function Oe(){Re||(T.pipes.length===1&&T.pipes[0]===p?(A("false write response, pause",0),T.awaitDrainWriters=p,T.multiAwaitDrain=!1):T.pipes.length>1&&T.pipes.includes(p)&&(A("false write response, pause",T.awaitDrainWriters.size),T.awaitDrainWriters.add(p)),b.pause()),Ae||(Ae=I(b,p),p.on("drain",Ae))}b.on("data",Me);function Me(yt){A("ondata");let ft=p.write(yt);A("dest.write",ft),ft===!1&&Oe()}function Ve(yt){if(A("onerror",yt),lt(),p.removeListener("error",Ve),p.listenerCount("error")===0){let ft=p._writableState||p._readableState;ft&&!ft.errorEmitted?ce(p,yt):p.emit("error",yt)}}E(p,"error",Ve);function ct(){p.removeListener("finish",Ze),lt()}p.once("close",ct);function Ze(){A("onfinish"),p.removeListener("close",ct),lt()}p.once("finish",Ze);function lt(){A("unpipe"),b.unpipe(p)}return p.emit("pipe",b),p.writableNeedDrain===!0?T.flowing&&Oe():T.flowing||(A("pipe resume"),b.resume()),p};function I(p,h){return function(){let b=p._readableState;b.awaitDrainWriters===h?(A("pipeOnDrain",1),b.awaitDrainWriters=null):b.multiAwaitDrain&&(A("pipeOnDrain",b.awaitDrainWriters.size),b.awaitDrainWriters.delete(h)),(!b.awaitDrainWriters||b.awaitDrainWriters.size===0)&&p.listenerCount("data")&&p.resume()}}R.prototype.unpipe=function(p){let h=this._readableState,b={hasUnpiped:!1};if(h.pipes.length===0)return this;if(!p){let U=h.pipes;h.pipes=[],this.pause();for(let ee=0;ee<U.length;ee++)U[ee].emit("unpipe",this,{hasUnpiped:!1});return this}let T=n(h.pipes,p);return T===-1?this:(h.pipes.splice(T,1),h.pipes.length===0&&this.pause(),p.emit("unpipe",this,b),this)},R.prototype.on=function(p,h){let b=y.prototype.on.call(this,p,h),T=this._readableState;return p==="data"?(T.readableListening=this.listenerCount("readable")>0,T.flowing!==!1&&this.resume()):p==="readable"&&!T.endEmitted&&!T.readableListening&&(T.readableListening=T.needReadable=!0,T.flowing=!1,T.emittedReadable=!1,A("on readable",T.length,T.reading),T.length?ie(this):T.reading||r.nextTick(O,this)),b},R.prototype.addListener=R.prototype.on,R.prototype.removeListener=function(p,h){let b=y.prototype.removeListener.call(this,p,h);return p==="readable"&&r.nextTick(P,this),b},R.prototype.off=R.prototype.removeListener,R.prototype.removeAllListeners=function(p){let h=y.prototype.removeAllListeners.apply(this,arguments);return(p==="readable"||p===void 0)&&r.nextTick(P,this),h};function P(p){let h=p._readableState;h.readableListening=p.listenerCount("readable")>0,h.resumeScheduled&&h[G]===!1?h.flowing=!0:p.listenerCount("data")>0?p.resume():h.readableListening||(h.flowing=null)}function O(p){A("readable nexttick read 0"),p.read(0)}R.prototype.resume=function(){let p=this._readableState;return p.flowing||(A("resume"),p.flowing=!p.readableListening,j(this,p)),p[G]=!1,this};function j(p,h){h.resumeScheduled||(h.resumeScheduled=!0,r.nextTick(W,p,h))}function W(p,h){A("resume",h.reading),h.reading||p.read(0),h.resumeScheduled=!1,p.emit("resume"),le(p),h.flowing&&!h.reading&&p.read(0)}R.prototype.pause=function(){return A("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(A("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[G]=!0,this};function le(p){let h=p._readableState;for(A("flow",h.flowing);h.flowing&&p.read()!==null;);}R.prototype.wrap=function(p){let h=!1;p.on("data",T=>{!this.push(T)&&p.pause&&(h=!0,p.pause())}),p.on("end",()=>{this.push(null)}),p.on("error",T=>{ce(this,T)}),p.on("close",()=>{this.destroy()}),p.on("destroy",()=>{this.destroy()}),this._read=()=>{h&&p.resume&&(h=!1,p.resume())};let b=l(p);for(let T=1;T<b.length;T++){let U=b[T];this[U]===void 0&&typeof p[U]=="function"&&(this[U]=p[U].bind(p))}return this},R.prototype[d]=function(){return fe(this)},R.prototype.iterator=function(p){return p!==void 0&&H(p,"options"),fe(this,p)};function fe(p,h){typeof p.read!="function"&&(p=R.wrap(p,{objectMode:!0}));let b=V(p,h);return b.stream=p,b}async function*V(p,h){let b=ne;function T(ye){this===p?(b(),b=ne):b=ye}p.on("readable",T);let U,ee=v(p,{writable:!1},ye=>{U=ye?B(U,ye):null,b(),b=ne});try{for(;;){let ye=p.destroyed?null:p.read();if(ye!==null)yield ye;else{if(U)throw U;if(U===null)return;await new c(T)}}}catch(ye){throw U=B(U,ye),U}finally{(U||(h==null?void 0:h.destroyOnReturn)!==!1)&&(U===void 0||p._readableState.autoDestroy)?x.destroyer(p,null):(p.off("readable",T),ee())}}a(R.prototype,{readable:{__proto__:null,get(){let p=this._readableState;return!!p&&p.readable!==!1&&!p.destroyed&&!p.errorEmitted&&!p.endEmitted},set(p){this._readableState&&(this._readableState.readable=!!p)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(p){this._readableState&&(this._readableState.flowing=p)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(p){this._readableState&&(this._readableState.destroyed=p)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),a(re.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[G]!==!1},set(p){this[G]=!!p}}}),R._fromList=te;function te(p,h){if(h.length===0)return null;let b;return h.objectMode?b=h.buffer.shift():!p||p>=h.length?(h.decoder?b=h.buffer.join(""):h.buffer.length===1?b=h.buffer.first():b=h.buffer.concat(h.length),h.buffer.clear()):b=h.buffer.consume(p,h.decoder),b}function $(p){let h=p._readableState;A("endReadable",h.endEmitted),h.endEmitted||(h.ended=!0,r.nextTick(J,h,p))}function J(p,h){if(A("endReadableNT",p.endEmitted,p.length),!p.errored&&!p.closeEmitted&&!p.endEmitted&&p.length===0){if(p.endEmitted=!0,h.emit("end"),h.writable&&h.allowHalfOpen===!1)r.nextTick(ae,h);else if(p.autoDestroy){let b=h._writableState;(!b||b.autoDestroy&&(b.finished||b.writable===!1))&&h.destroy()}}}function ae(p){p.writable&&!p.writableEnded&&!p.destroyed&&p.end()}R.from=function(p,h){return F(R,p,h)};var me;function w(){return me===void 0&&(me={}),me}R.fromWeb=function(p,h){return w().newStreamReadableFromReadableStream(p,h)},R.toWeb=function(p,h){return w().newReadableStreamFromStreamReadable(p,h)},R.wrap=function(p,h){var b,T;return new R({objectMode:(b=(T=p.readableObjectMode)!==null&&T!==void 0?T:p.objectMode)!==null&&b!==void 0?b:!0,...h,destroy(U,ee){x.destroyer(p,U),ee(U)}}).wrap(p)}}),Cv=Te((t,e)=>{_e(),ve(),we();var r=es(),{ArrayPrototypeSlice:n,Error:s,FunctionPrototypeSymbolHasInstance:i,ObjectDefineProperty:o,ObjectDefineProperties:a,ObjectSetPrototypeOf:l,StringPrototypeToLowerCase:u,Symbol:c,SymbolHasInstance:f}=ht();e.exports=z,z.WritableState=H;var{EventEmitter:d}=(no(),Ke(ts)),g=Rp().Stream,{Buffer:m}=(Tt(),Ke(St)),y=ro(),{addAbortSignal:E}=Cu(),{getHighWaterMark:_,getDefaultHighWaterMark:S}=Pp(),{ERR_INVALID_ARG_TYPE:v,ERR_METHOD_NOT_IMPLEMENTED:A,ERR_MULTIPLE_CALLBACK:k,ERR_STREAM_CANNOT_PIPE:x,ERR_STREAM_DESTROYED:D,ERR_STREAM_ALREADY_FINISHED:N,ERR_STREAM_NULL_VALUES:B,ERR_STREAM_WRITE_AFTER_END:q,ERR_UNKNOWN_ENCODING:K}=Vt().codes,{errorOrDestroy:C}=y;l(z.prototype,g.prototype),l(z,g);function M(){}var L=c("kOnFinished");function H(O,j,W){typeof W!="boolean"&&(W=j instanceof wn()),this.objectMode=!!(O&&O.objectMode),W&&(this.objectMode=this.objectMode||!!(O&&O.writableObjectMode)),this.highWaterMark=O?_(this,O,"writableHighWaterMark",W):S(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let le=!!(O&&O.decodeStrings===!1);this.decodeStrings=!le,this.defaultEncoding=O&&O.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=R.bind(void 0,j),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,G(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!O||O.emitClose!==!1,this.autoDestroy=!O||O.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[L]=[]}function G(O){O.buffered=[],O.bufferedIndex=0,O.allBuffers=!0,O.allNoop=!0}H.prototype.getBuffer=function(){return n(this.buffered,this.bufferedIndex)},o(H.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function z(O){let j=this instanceof wn();if(!j&&!i(z,this))return new z(O);this._writableState=new H(O,this,j),O&&(typeof O.write=="function"&&(this._write=O.write),typeof O.writev=="function"&&(this._writev=O.writev),typeof O.destroy=="function"&&(this._destroy=O.destroy),typeof O.final=="function"&&(this._final=O.final),typeof O.construct=="function"&&(this._construct=O.construct),O.signal&&E(O.signal,this)),g.call(this,O),y.construct(this,()=>{let W=this._writableState;W.writing||pe(this,W),be(this,W)})}o(z,f,{__proto__:null,value:function(O){return i(this,O)?!0:this!==z?!1:O&&O._writableState instanceof H}}),z.prototype.pipe=function(){C(this,new x)};function F(O,j,W,le){let fe=O._writableState;if(typeof W=="function")le=W,W=fe.defaultEncoding;else{if(!W)W=fe.defaultEncoding;else if(W!=="buffer"&&!m.isEncoding(W))throw new K(W);typeof le!="function"&&(le=M)}if(j===null)throw new B;if(!fe.objectMode)if(typeof j=="string")fe.decodeStrings!==!1&&(j=m.from(j,W),W="buffer");else if(j instanceof m)W="buffer";else if(g._isUint8Array(j))j=g._uint8ArrayToBuffer(j),W="buffer";else throw new v("chunk",["string","Buffer","Uint8Array"],j);let V;return fe.ending?V=new q:fe.destroyed&&(V=new D("write")),V?(r.nextTick(le,V),C(O,V,!0),V):(fe.pendingcb++,ne(O,fe,j,W,le))}z.prototype.write=function(O,j,W){return F(this,O,j,W)===!0},z.prototype.cork=function(){this._writableState.corked++},z.prototype.uncork=function(){let O=this._writableState;O.corked&&(O.corked--,O.writing||pe(this,O))},z.prototype.setDefaultEncoding=function(O){if(typeof O=="string"&&(O=u(O)),!m.isEncoding(O))throw new K(O);return this._writableState.defaultEncoding=O,this};function ne(O,j,W,le,fe){let V=j.objectMode?1:W.length;j.length+=V;let te=j.length<j.highWaterMark;return te||(j.needDrain=!0),j.writing||j.corked||j.errored||!j.constructed?(j.buffered.push({chunk:W,encoding:le,callback:fe}),j.allBuffers&&le!=="buffer"&&(j.allBuffers=!1),j.allNoop&&fe!==M&&(j.allNoop=!1)):(j.writelen=V,j.writecb=fe,j.writing=!0,j.sync=!0,O._write(W,le,j.onwrite),j.sync=!1),te&&!j.errored&&!j.destroyed}function ce(O,j,W,le,fe,V,te){j.writelen=le,j.writecb=te,j.writing=!0,j.sync=!0,j.destroyed?j.onwrite(new D("write")):W?O._writev(fe,j.onwrite):O._write(fe,V,j.onwrite),j.sync=!1}function re(O,j,W,le){--j.pendingcb,le(W),ge(j),C(O,W)}function R(O,j){let W=O._writableState,le=W.sync,fe=W.writecb;if(typeof fe!="function"){C(O,new k);return}W.writing=!1,W.writecb=null,W.length-=W.writelen,W.writelen=0,j?(j.stack,W.errored||(W.errored=j),O._readableState&&!O._readableState.errored&&(O._readableState.errored=j),le?r.nextTick(re,O,W,j,fe):re(O,W,j,fe)):(W.buffered.length>W.bufferedIndex&&pe(O,W),le?W.afterWriteTickInfo!==null&&W.afterWriteTickInfo.cb===fe?W.afterWriteTickInfo.count++:(W.afterWriteTickInfo={count:1,cb:fe,stream:O,state:W},r.nextTick(Q,W.afterWriteTickInfo)):de(O,W,1,fe))}function Q({stream:O,state:j,count:W,cb:le}){return j.afterWriteTickInfo=null,de(O,j,W,le)}function de(O,j,W,le){for(!j.ending&&!O.destroyed&&j.length===0&&j.needDrain&&(j.needDrain=!1,O.emit("drain"));W-- >0;)j.pendingcb--,le();j.destroyed&&ge(j),be(O,j)}function ge(O){if(O.writing)return;for(let fe=O.bufferedIndex;fe<O.buffered.length;++fe){var j;let{chunk:V,callback:te}=O.buffered[fe],$=O.objectMode?1:V.length;O.length-=$,te((j=O.errored)!==null&&j!==void 0?j:new D("write"))}let W=O[L].splice(0);for(let fe=0;fe<W.length;fe++){var le;W[fe]((le=O.errored)!==null&&le!==void 0?le:new D("end"))}G(O)}function pe(O,j){if(j.corked||j.bufferProcessing||j.destroyed||!j.constructed)return;let{buffered:W,bufferedIndex:le,objectMode:fe}=j,V=W.length-le;if(!V)return;let te=le;if(j.bufferProcessing=!0,V>1&&O._writev){j.pendingcb-=V-1;let $=j.allNoop?M:ae=>{for(let me=te;me<W.length;++me)W[me].callback(ae)},J=j.allNoop&&te===0?W:n(W,te);J.allBuffers=j.allBuffers,ce(O,j,!0,j.length,J,"",$),G(j)}else{do{let{chunk:$,encoding:J,callback:ae}=W[te];W[te++]=null;let me=fe?1:$.length;ce(O,j,!1,me,$,J,ae)}while(te<W.length&&!j.writing);te===W.length?G(j):te>256?(W.splice(0,te),j.bufferedIndex=0):j.bufferedIndex=te}j.bufferProcessing=!1}z.prototype._write=function(O,j,W){if(this._writev)this._writev([{chunk:O,encoding:j}],W);else throw new A("_write()")},z.prototype._writev=null,z.prototype.end=function(O,j,W){let le=this._writableState;typeof O=="function"?(W=O,O=null,j=null):typeof j=="function"&&(W=j,j=null);let fe;if(O!=null){let V=F(this,O,j);V instanceof s&&(fe=V)}return le.corked&&(le.corked=1,this.uncork()),fe||(!le.errored&&!le.ending?(le.ending=!0,be(this,le,!0),le.ended=!0):le.finished?fe=new N("end"):le.destroyed&&(fe=new D("end"))),typeof W=="function"&&(fe||le.finished?r.nextTick(W,fe):le[L].push(W)),this};function X(O){return O.ending&&!O.destroyed&&O.constructed&&O.length===0&&!O.errored&&O.buffered.length===0&&!O.finished&&!O.writing&&!O.errorEmitted&&!O.closeEmitted}function Y(O,j){let W=!1;function le(fe){if(W){C(O,fe??k());return}if(W=!0,j.pendingcb--,fe){let V=j[L].splice(0);for(let te=0;te<V.length;te++)V[te](fe);C(O,fe,j.sync)}else X(j)&&(j.prefinished=!0,O.emit("prefinish"),j.pendingcb++,r.nextTick(he,O,j))}j.sync=!0,j.pendingcb++;try{O._final(le)}catch(fe){le(fe)}j.sync=!1}function ie(O,j){!j.prefinished&&!j.finalCalled&&(typeof O._final=="function"&&!j.destroyed?(j.finalCalled=!0,Y(O,j)):(j.prefinished=!0,O.emit("prefinish")))}function be(O,j,W){X(j)&&(ie(O,j),j.pendingcb===0&&(W?(j.pendingcb++,r.nextTick((le,fe)=>{X(fe)?he(le,fe):fe.pendingcb--},O,j)):X(j)&&(j.pendingcb++,he(O,j))))}function he(O,j){j.pendingcb--,j.finished=!0;let W=j[L].splice(0);for(let le=0;le<W.length;le++)W[le]();if(O.emit("finish"),j.autoDestroy){let le=O._readableState;(!le||le.autoDestroy&&(le.endEmitted||le.readable===!1))&&O.destroy()}}a(z.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(O){this._writableState&&(this._writableState.destroyed=O)}},writable:{__proto__:null,get(){let O=this._writableState;return!!O&&O.writable!==!1&&!O.destroyed&&!O.errored&&!O.ending&&!O.ended},set(O){this._writableState&&(this._writableState.writable=!!O)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){let O=this._writableState;return O?!O.destroyed&&!O.ending&&O.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});var ue=y.destroy;z.prototype.destroy=function(O,j){let W=this._writableState;return!W.destroyed&&(W.bufferedIndex<W.buffered.length||W[L].length)&&r.nextTick(ge,W),ue.call(this,O,j),this},z.prototype._undestroy=y.undestroy,z.prototype._destroy=function(O,j){j(O)},z.prototype[d.captureRejectionSymbol]=function(O){this.destroy(O)};var I;function P(){return I===void 0&&(I={}),I}z.fromWeb=function(O,j){return P().newStreamWritableFromWritableStream(O,j)},z.toWeb=function(O){return P().newWritableStreamFromStreamWritable(O)}}),iC=Te((t,e)=>{_e(),ve(),we();var r=es(),n=(Tt(),Ke(St)),{isReadable:s,isWritable:i,isIterable:o,isNodeStream:a,isReadableNodeStream:l,isWritableNodeStream:u,isDuplexNodeStream:c}=Mn(),f=si(),{AbortError:d,codes:{ERR_INVALID_ARG_TYPE:g,ERR_INVALID_RETURN_VALUE:m}}=Vt(),{destroyer:y}=ro(),E=wn(),_=Mu(),{createDeferredPromise:S}=yn(),v=Av(),A=globalThis.Blob||n.Blob,k=typeof A<"u"?function(K){return K instanceof A}:function(K){return!1},x=globalThis.AbortController||Op().AbortController,{FunctionPrototypeCall:D}=ht(),N=class extends E{constructor(K){super(K),(K==null?void 0:K.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(K==null?void 0:K.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}};e.exports=function K(C,M){if(c(C))return C;if(l(C))return q({readable:C});if(u(C))return q({writable:C});if(a(C))return q({writable:!1,readable:!1});if(typeof C=="function"){let{value:H,write:G,final:z,destroy:F}=B(C);if(o(H))return v(N,H,{objectMode:!0,write:G,final:z,destroy:F});let ne=H==null?void 0:H.then;if(typeof ne=="function"){let ce,re=D(ne,H,R=>{if(R!=null)throw new m("nully","body",R)},R=>{y(ce,R)});return ce=new N({objectMode:!0,readable:!1,write:G,final(R){z(async()=>{try{await re,r.nextTick(R,null)}catch(Q){r.nextTick(R,Q)}})},destroy:F})}throw new m("Iterable, AsyncIterable or AsyncFunction",M,H)}if(k(C))return K(C.arrayBuffer());if(o(C))return v(N,C,{objectMode:!0,writable:!1});if(typeof(C==null?void 0:C.writable)=="object"||typeof(C==null?void 0:C.readable)=="object"){let H=C!=null&&C.readable?l(C==null?void 0:C.readable)?C==null?void 0:C.readable:K(C.readable):void 0,G=C!=null&&C.writable?u(C==null?void 0:C.writable)?C==null?void 0:C.writable:K(C.writable):void 0;return q({readable:H,writable:G})}let L=C==null?void 0:C.then;if(typeof L=="function"){let H;return D(L,C,G=>{G!=null&&H.push(G),H.push(null)},G=>{y(H,G)}),H=new N({objectMode:!0,writable:!1,read(){}})}throw new g(M,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],C)};function B(K){let{promise:C,resolve:M}=S(),L=new x,H=L.signal;return{value:K(async function*(){for(;;){let G=C;C=null;let{chunk:z,done:F,cb:ne}=await G;if(r.nextTick(ne),F)return;if(H.aborted)throw new d(void 0,{cause:H.reason});({promise:C,resolve:M}=S()),yield z}}(),{signal:H}),write(G,z,F){let ne=M;M=null,ne({chunk:G,done:!1,cb:F})},final(G){let z=M;M=null,z({done:!0,cb:G})},destroy(G,z){L.abort(),z(G)}}}function q(K){let C=K.readable&&typeof K.readable.read!="function"?_.wrap(K.readable):K.readable,M=K.writable,L=!!s(C),H=!!i(M),G,z,F,ne,ce;function re(R){let Q=ne;ne=null,Q?Q(R):R&&ce.destroy(R)}return ce=new N({readableObjectMode:!!(C!=null&&C.readableObjectMode),writableObjectMode:!!(M!=null&&M.writableObjectMode),readable:L,writable:H}),H&&(f(M,R=>{H=!1,R&&y(C,R),re(R)}),ce._write=function(R,Q,de){M.write(R,Q)?de():G=de},ce._final=function(R){M.end(),z=R},M.on("drain",function(){if(G){let R=G;G=null,R()}}),M.on("finish",function(){if(z){let R=z;z=null,R()}})),L&&(f(C,R=>{L=!1,R&&y(C,R),re(R)}),C.on("readable",function(){if(F){let R=F;F=null,R()}}),C.on("end",function(){ce.push(null)}),ce._read=function(){for(;;){let R=C.read();if(R===null){F=ce._read;return}if(!ce.push(R))return}}),ce._destroy=function(R,Q){!R&&ne!==null&&(R=new d),F=null,G=null,z=null,ne===null?Q(R):(ne=Q,y(M,R),y(C,R))},ce}}),wn=Te((t,e)=>{_e(),ve(),we();var{ObjectDefineProperties:r,ObjectGetOwnPropertyDescriptor:n,ObjectKeys:s,ObjectSetPrototypeOf:i}=ht();e.exports=l;var o=Mu(),a=Cv();i(l.prototype,o.prototype),i(l,o);{let d=s(a.prototype);for(let g=0;g<d.length;g++){let m=d[g];l.prototype[m]||(l.prototype[m]=a.prototype[m])}}function l(d){if(!(this instanceof l))return new l(d);o.call(this,d),a.call(this,d),d?(this.allowHalfOpen=d.allowHalfOpen!==!1,d.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),d.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}r(l.prototype,{writable:{__proto__:null,...n(a.prototype,"writable")},writableHighWaterMark:{__proto__:null,...n(a.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...n(a.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...n(a.prototype,"writableBuffer")},writableLength:{__proto__:null,...n(a.prototype,"writableLength")},writableFinished:{__proto__:null,...n(a.prototype,"writableFinished")},writableCorked:{__proto__:null,...n(a.prototype,"writableCorked")},writableEnded:{__proto__:null,...n(a.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...n(a.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(d){this._readableState&&this._writableState&&(this._readableState.destroyed=d,this._writableState.destroyed=d)}}});var u;function c(){return u===void 0&&(u={}),u}l.fromWeb=function(d,g){return c().newStreamDuplexFromReadableWritablePair(d,g)},l.toWeb=function(d){return c().newReadableWritablePairFromDuplex(d)};var f;l.from=function(d){return f||(f=iC()),f(d,"body")}}),Iv=Te((t,e)=>{_e(),ve(),we();var{ObjectSetPrototypeOf:r,Symbol:n}=ht();e.exports=l;var{ERR_METHOD_NOT_IMPLEMENTED:s}=Vt().codes,i=wn(),{getHighWaterMark:o}=Pp();r(l.prototype,i.prototype),r(l,i);var a=n("kCallback");function l(f){if(!(this instanceof l))return new l(f);let d=f?o(this,f,"readableHighWaterMark",!0):null;d===0&&(f={...f,highWaterMark:null,readableHighWaterMark:d,writableHighWaterMark:f.writableHighWaterMark||0}),i.call(this,f),this._readableState.sync=!1,this[a]=null,f&&(typeof f.transform=="function"&&(this._transform=f.transform),typeof f.flush=="function"&&(this._flush=f.flush)),this.on("prefinish",c)}function u(f){typeof this._flush=="function"&&!this.destroyed?this._flush((d,g)=>{if(d){f?f(d):this.destroy(d);return}g!=null&&this.push(g),this.push(null),f&&f()}):(this.push(null),f&&f())}function c(){this._final!==u&&u.call(this)}l.prototype._final=u,l.prototype._transform=function(f,d,g){throw new s("_transform()")},l.prototype._write=function(f,d,g){let m=this._readableState,y=this._writableState,E=m.length;this._transform(f,d,(_,S)=>{if(_){g(_);return}S!=null&&this.push(S),y.ended||E===m.length||m.length<m.highWaterMark?g():this[a]=g})},l.prototype._read=function(){if(this[a]){let f=this[a];this[a]=null,f()}}}),Mv=Te((t,e)=>{_e(),ve(),we();var{ObjectSetPrototypeOf:r}=ht();e.exports=s;var n=Iv();r(s.prototype,n.prototype),r(s,n);function s(i){if(!(this instanceof s))return new s(i);n.call(this,i)}s.prototype._transform=function(i,o,a){a(null,i)}}),Np=Te((t,e)=>{_e(),ve(),we();var r=es(),{ArrayIsArray:n,Promise:s,SymbolAsyncIterator:i}=ht(),o=si(),{once:a}=yn(),l=ro(),u=wn(),{aggregateTwoErrors:c,codes:{ERR_INVALID_ARG_TYPE:f,ERR_INVALID_RETURN_VALUE:d,ERR_MISSING_ARGS:g,ERR_STREAM_DESTROYED:m,ERR_STREAM_PREMATURE_CLOSE:y},AbortError:E}=Vt(),{validateFunction:_,validateAbortSignal:S}=Au(),{isIterable:v,isReadable:A,isReadableNodeStream:k,isNodeStream:x,isTransformStream:D,isWebStream:N,isReadableStream:B,isReadableEnded:q}=Mn(),K=globalThis.AbortController||Op().AbortController,C,M;function L(Q,de,ge){let pe=!1;Q.on("close",()=>{pe=!0});let X=o(Q,{readable:de,writable:ge},Y=>{pe=!Y});return{destroy:Y=>{pe||(pe=!0,l.destroyer(Q,Y||new m("pipe")))},cleanup:X}}function H(Q){return _(Q[Q.length-1],"streams[stream.length - 1]"),Q.pop()}function G(Q){if(v(Q))return Q;if(k(Q))return z(Q);throw new f("val",["Readable","Iterable","AsyncIterable"],Q)}async function*z(Q){M||(M=Mu()),yield*M.prototype[i].call(Q)}async function F(Q,de,ge,{end:pe}){let X,Y=null,ie=ue=>{if(ue&&(X=ue),Y){let I=Y;Y=null,I()}},be=()=>new s((ue,I)=>{X?I(X):Y=()=>{X?I(X):ue()}});de.on("drain",ie);let he=o(de,{readable:!1},ie);try{de.writableNeedDrain&&await be();for await(let ue of Q)de.write(ue)||await be();pe&&de.end(),await be(),ge()}catch(ue){ge(X!==ue?c(X,ue):ue)}finally{he(),de.off("drain",ie)}}async function ne(Q,de,ge,{end:pe}){D(de)&&(de=de.writable);let X=de.getWriter();try{for await(let Y of Q)await X.ready,X.write(Y).catch(()=>{});await X.ready,pe&&await X.close(),ge()}catch(Y){try{await X.abort(Y),ge(Y)}catch(ie){ge(ie)}}}function ce(...Q){return re(Q,a(H(Q)))}function re(Q,de,ge){if(Q.length===1&&n(Q[0])&&(Q=Q[0]),Q.length<2)throw new g("streams");let pe=new K,X=pe.signal,Y=ge==null?void 0:ge.signal,ie=[];S(Y,"options.signal");function be(){j(new E)}Y==null||Y.addEventListener("abort",be);let he,ue,I=[],P=0;function O(V){j(V,--P===0)}function j(V,te){if(V&&(!he||he.code==="ERR_STREAM_PREMATURE_CLOSE")&&(he=V),!(!he&&!te)){for(;I.length;)I.shift()(he);Y==null||Y.removeEventListener("abort",be),pe.abort(),te&&(he||ie.forEach($=>$()),r.nextTick(de,he,ue))}}let W;for(let V=0;V<Q.length;V++){let te=Q[V],$=V<Q.length-1,J=V>0,ae=$||(ge==null?void 0:ge.end)!==!1,me=V===Q.length-1;if(x(te)){let w=function(p){p&&p.name!=="AbortError"&&p.code!=="ERR_STREAM_PREMATURE_CLOSE"&&O(p)};if(ae){let{destroy:p,cleanup:h}=L(te,$,J);I.push(p),A(te)&&me&&ie.push(h)}te.on("error",w),A(te)&&me&&ie.push(()=>{te.removeListener("error",w)})}if(V===0)if(typeof te=="function"){if(W=te({signal:X}),!v(W))throw new d("Iterable, AsyncIterable or Stream","source",W)}else v(te)||k(te)||D(te)?W=te:W=u.from(te);else if(typeof te=="function"){if(D(W)){var le;W=G((le=W)===null||le===void 0?void 0:le.readable)}else W=G(W);if(W=te(W,{signal:X}),$){if(!v(W,!0))throw new d("AsyncIterable",`transform[${V-1}]`,W)}else{var fe;C||(C=Mv());let w=new C({objectMode:!0}),p=(fe=W)===null||fe===void 0?void 0:fe.then;if(typeof p=="function")P++,p.call(W,T=>{ue=T,T!=null&&w.write(T),ae&&w.end(),r.nextTick(O)},T=>{w.destroy(T),r.nextTick(O,T)});else if(v(W,!0))P++,F(W,w,O,{end:ae});else if(B(W)||D(W)){let T=W.readable||W;P++,F(T,w,O,{end:ae})}else throw new d("AsyncIterable or Promise","destination",W);W=w;let{destroy:h,cleanup:b}=L(W,!1,!0);I.push(h),me&&ie.push(b)}}else if(x(te)){if(k(W)){P+=2;let w=R(W,te,O,{end:ae});A(te)&&me&&ie.push(w)}else if(D(W)||B(W)){let w=W.readable||W;P++,F(w,te,O,{end:ae})}else if(v(W))P++,F(W,te,O,{end:ae});else throw new f("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],W);W=te}else if(N(te)){if(k(W))P++,ne(G(W),te,O,{end:ae});else if(B(W)||v(W))P++,ne(W,te,O,{end:ae});else if(D(W))P++,ne(W.readable,te,O,{end:ae});else throw new f("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],W);W=te}else W=u.from(te)}return(X!=null&&X.aborted||Y!=null&&Y.aborted)&&r.nextTick(be),W}function R(Q,de,ge,{end:pe}){let X=!1;if(de.on("close",()=>{X||ge(new y)}),Q.pipe(de,{end:!1}),pe){let Y=function(){X=!0,de.end()};q(Q)?r.nextTick(Y):Q.once("end",Y)}else ge();return o(Q,{readable:!0,writable:!1},Y=>{let ie=Q._readableState;Y&&Y.code==="ERR_STREAM_PREMATURE_CLOSE"&&ie&&ie.ended&&!ie.errored&&!ie.errorEmitted?Q.once("end",ge).once("error",ge):ge(Y)}),o(de,{readable:!1,writable:!0},ge)}e.exports={pipelineImpl:re,pipeline:ce}}),Ov=Te((t,e)=>{_e(),ve(),we();var{pipeline:r}=Np(),n=wn(),{destroyer:s}=ro(),{isNodeStream:i,isReadable:o,isWritable:a,isWebStream:l,isTransformStream:u,isWritableStream:c,isReadableStream:f}=Mn(),{AbortError:d,codes:{ERR_INVALID_ARG_VALUE:g,ERR_MISSING_ARGS:m}}=Vt(),y=si();e.exports=function(...E){if(E.length===0)throw new m("streams");if(E.length===1)return n.from(E[0]);let _=[...E];if(typeof E[0]=="function"&&(E[0]=n.from(E[0])),typeof E[E.length-1]=="function"){let C=E.length-1;E[C]=n.from(E[C])}for(let C=0;C<E.length;++C)if(!(!i(E[C])&&!l(E[C]))){if(C<E.length-1&&!(o(E[C])||f(E[C])||u(E[C])))throw new g(`streams[${C}]`,_[C],"must be readable");if(C>0&&!(a(E[C])||c(E[C])||u(E[C])))throw new g(`streams[${C}]`,_[C],"must be writable")}let S,v,A,k,x;function D(C){let M=k;k=null,M?M(C):C?x.destroy(C):!K&&!q&&x.destroy()}let N=E[0],B=r(E,D),q=!!(a(N)||c(N)||u(N)),K=!!(o(B)||f(B)||u(B));if(x=new n({writableObjectMode:!!(N!=null&&N.writableObjectMode),readableObjectMode:!!(B!=null&&B.writableObjectMode),writable:q,readable:K}),q){if(i(N))x._write=function(M,L,H){N.write(M,L)?H():S=H},x._final=function(M){N.end(),v=M},N.on("drain",function(){if(S){let M=S;S=null,M()}});else if(l(N)){let M=(u(N)?N.writable:N).getWriter();x._write=async function(L,H,G){try{await M.ready,M.write(L).catch(()=>{}),G()}catch(z){G(z)}},x._final=async function(L){try{await M.ready,M.close().catch(()=>{}),v=L}catch(H){L(H)}}}let C=u(B)?B.readable:B;y(C,()=>{if(v){let M=v;v=null,M()}})}if(K){if(i(B))B.on("readable",function(){if(A){let C=A;A=null,C()}}),B.on("end",function(){x.push(null)}),x._read=function(){for(;;){let C=B.read();if(C===null){A=x._read;return}if(!x.push(C))return}};else if(l(B)){let C=(u(B)?B.readable:B).getReader();x._read=async function(){for(;;)try{let{value:M,done:L}=await C.read();if(!x.push(M))return;if(L){x.push(null);return}}catch{return}}}}return x._destroy=function(C,M){!C&&k!==null&&(C=new d),A=null,S=null,v=null,k===null?M(C):(k=M,i(B)&&s(B,C))},x}}),sC=Te((t,e)=>{_e(),ve(),we();var r=globalThis.AbortController||Op().AbortController,{codes:{ERR_INVALID_ARG_VALUE:n,ERR_INVALID_ARG_TYPE:s,ERR_MISSING_ARGS:i,ERR_OUT_OF_RANGE:o},AbortError:a}=Vt(),{validateAbortSignal:l,validateInteger:u,validateObject:c}=Au(),f=ht().Symbol("kWeak"),{finished:d}=si(),g=Ov(),{addAbortSignalNoValidate:m}=Cu(),{isWritable:y,isNodeStream:E}=Mn(),{ArrayPrototypePush:_,MathFloor:S,Number:v,NumberIsNaN:A,Promise:k,PromiseReject:x,PromisePrototypeThen:D,Symbol:N}=ht(),B=N("kEmpty"),q=N("kEof");function K(pe,X){if(X!=null&&c(X,"options"),(X==null?void 0:X.signal)!=null&&l(X.signal,"options.signal"),E(pe)&&!y(pe))throw new n("stream",pe,"must be writable");let Y=g(this,pe);return X!=null&&X.signal&&m(X.signal,Y),Y}function C(pe,X){if(typeof pe!="function")throw new s("fn",["Function","AsyncFunction"],pe);X!=null&&c(X,"options"),(X==null?void 0:X.signal)!=null&&l(X.signal,"options.signal");let Y=1;return(X==null?void 0:X.concurrency)!=null&&(Y=S(X.concurrency)),u(Y,"concurrency",1),(async function*(){var ie,be;let he=new r,ue=this,I=[],P=he.signal,O={signal:P},j=()=>he.abort();X!=null&&(ie=X.signal)!==null&&ie!==void 0&&ie.aborted&&j(),X==null||(be=X.signal)===null||be===void 0||be.addEventListener("abort",j);let W,le,fe=!1;function V(){fe=!0}async function te(){try{for await(let ae of ue){var $;if(fe)return;if(P.aborted)throw new a;try{ae=pe(ae,O)}catch(me){ae=x(me)}ae!==B&&(typeof(($=ae)===null||$===void 0?void 0:$.catch)=="function"&&ae.catch(V),I.push(ae),W&&(W(),W=null),!fe&&I.length&&I.length>=Y&&await new k(me=>{le=me}))}I.push(q)}catch(ae){let me=x(ae);D(me,void 0,V),I.push(me)}finally{var J;fe=!0,W&&(W(),W=null),X==null||(J=X.signal)===null||J===void 0||J.removeEventListener("abort",j)}}te();try{for(;;){for(;I.length>0;){let $=await I[0];if($===q)return;if(P.aborted)throw new a;$!==B&&(yield $),I.shift(),le&&(le(),le=null)}await new k($=>{W=$})}}finally{he.abort(),fe=!0,le&&(le(),le=null)}}).call(this)}function M(pe=void 0){return pe!=null&&c(pe,"options"),(pe==null?void 0:pe.signal)!=null&&l(pe.signal,"options.signal"),(async function*(){let X=0;for await(let ie of this){var Y;if(pe!=null&&(Y=pe.signal)!==null&&Y!==void 0&&Y.aborted)throw new a({cause:pe.signal.reason});yield[X++,ie]}}).call(this)}async function L(pe,X=void 0){for await(let Y of F.call(this,pe,X))return!0;return!1}async function H(pe,X=void 0){if(typeof pe!="function")throw new s("fn",["Function","AsyncFunction"],pe);return!await L.call(this,async(...Y)=>!await pe(...Y),X)}async function G(pe,X){for await(let Y of F.call(this,pe,X))return Y}async function z(pe,X){if(typeof pe!="function")throw new s("fn",["Function","AsyncFunction"],pe);async function Y(ie,be){return await pe(ie,be),B}for await(let ie of C.call(this,Y,X));}function F(pe,X){if(typeof pe!="function")throw new s("fn",["Function","AsyncFunction"],pe);async function Y(ie,be){return await pe(ie,be)?ie:B}return C.call(this,Y,X)}var ne=class extends i{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}};async function ce(pe,X,Y){var ie;if(typeof pe!="function")throw new s("reducer",["Function","AsyncFunction"],pe);Y!=null&&c(Y,"options"),(Y==null?void 0:Y.signal)!=null&&l(Y.signal,"options.signal");let be=arguments.length>1;if(Y!=null&&(ie=Y.signal)!==null&&ie!==void 0&&ie.aborted){let O=new a(void 0,{cause:Y.signal.reason});throw this.once("error",()=>{}),await d(this.destroy(O)),O}let he=new r,ue=he.signal;if(Y!=null&&Y.signal){let O={once:!0,[f]:this};Y.signal.addEventListener("abort",()=>he.abort(),O)}let I=!1;try{for await(let O of this){var P;if(I=!0,Y!=null&&(P=Y.signal)!==null&&P!==void 0&&P.aborted)throw new a;be?X=await pe(X,O,{signal:ue}):(X=O,be=!0)}if(!I&&!be)throw new ne}finally{he.abort()}return X}async function re(pe){pe!=null&&c(pe,"options"),(pe==null?void 0:pe.signal)!=null&&l(pe.signal,"options.signal");let X=[];for await(let ie of this){var Y;if(pe!=null&&(Y=pe.signal)!==null&&Y!==void 0&&Y.aborted)throw new a(void 0,{cause:pe.signal.reason});_(X,ie)}return X}function R(pe,X){let Y=C.call(this,pe,X);return(async function*(){for await(let ie of Y)yield*ie}).call(this)}function Q(pe){if(pe=v(pe),A(pe))return 0;if(pe<0)throw new o("number",">= 0",pe);return pe}function de(pe,X=void 0){return X!=null&&c(X,"options"),(X==null?void 0:X.signal)!=null&&l(X.signal,"options.signal"),pe=Q(pe),(async function*(){var Y;if(X!=null&&(Y=X.signal)!==null&&Y!==void 0&&Y.aborted)throw new a;for await(let be of this){var ie;if(X!=null&&(ie=X.signal)!==null&&ie!==void 0&&ie.aborted)throw new a;pe--<=0&&(yield be)}}).call(this)}function ge(pe,X=void 0){return X!=null&&c(X,"options"),(X==null?void 0:X.signal)!=null&&l(X.signal,"options.signal"),pe=Q(pe),(async function*(){var Y;if(X!=null&&(Y=X.signal)!==null&&Y!==void 0&&Y.aborted)throw new a;for await(let be of this){var ie;if(X!=null&&(ie=X.signal)!==null&&ie!==void 0&&ie.aborted)throw new a;if(pe-- >0)yield be;else return}}).call(this)}e.exports.streamReturningOperators={asIndexedPairs:M,drop:de,filter:F,flatMap:R,map:C,take:ge,compose:K},e.exports.promiseReturningOperators={every:H,forEach:z,reduce:ce,toArray:re,some:L,find:G}}),Rv=Te((t,e)=>{_e(),ve(),we();var{ArrayPrototypePop:r,Promise:n}=ht(),{isIterable:s,isNodeStream:i,isWebStream:o}=Mn(),{pipelineImpl:a}=Np(),{finished:l}=si();Pv();function u(...c){return new n((f,d)=>{let g,m,y=c[c.length-1];if(y&&typeof y=="object"&&!i(y)&&!s(y)&&!o(y)){let E=r(c);g=E.signal,m=E.end}a(c,(E,_)=>{E?d(E):f(_)},{signal:g,end:m})})}e.exports={finished:l,pipeline:u}}),Pv=Te((t,e)=>{_e(),ve(),we();var{Buffer:r}=(Tt(),Ke(St)),{ObjectDefineProperty:n,ObjectKeys:s,ReflectApply:i}=ht(),{promisify:{custom:o}}=yn(),{streamReturningOperators:a,promiseReturningOperators:l}=sC(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:u}}=Vt(),c=Ov(),{pipeline:f}=Np(),{destroyer:d}=ro(),g=si(),m=Rv(),y=Mn(),E=e.exports=Rp().Stream;E.isDisturbed=y.isDisturbed,E.isErrored=y.isErrored,E.isReadable=y.isReadable,E.Readable=Mu();for(let S of s(a)){let v=function(...k){if(new.target)throw u();return E.Readable.from(i(A,this,k))},A=a[S];n(v,"name",{__proto__:null,value:A.name}),n(v,"length",{__proto__:null,value:A.length}),n(E.Readable.prototype,S,{__proto__:null,value:v,enumerable:!1,configurable:!0,writable:!0})}for(let S of s(l)){let v=function(...k){if(new.target)throw u();return i(A,this,k)},A=l[S];n(v,"name",{__proto__:null,value:A.name}),n(v,"length",{__proto__:null,value:A.length}),n(E.Readable.prototype,S,{__proto__:null,value:v,enumerable:!1,configurable:!0,writable:!0})}E.Writable=Cv(),E.Duplex=wn(),E.Transform=Iv(),E.PassThrough=Mv(),E.pipeline=f;var{addAbortSignal:_}=Cu();E.addAbortSignal=_,E.finished=g,E.destroy=d,E.compose=c,n(E,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return m}}),n(f,o,{__proto__:null,enumerable:!0,get(){return m.pipeline}}),n(g,o,{__proto__:null,enumerable:!0,get(){return m.finished}}),E.Stream=E,E._isUint8Array=function(S){return S instanceof Uint8Array},E._uint8ArrayToBuffer=function(S){return r.from(S.buffer,S.byteOffset,S.byteLength)}}),rs=Te((t,e)=>{_e(),ve(),we();var r=Pv(),n=Rv(),s=r.Readable.destroy;e.exports=r.Readable,e.exports._uint8ArrayToBuffer=r._uint8ArrayToBuffer,e.exports._isUint8Array=r._isUint8Array,e.exports.isDisturbed=r.isDisturbed,e.exports.isErrored=r.isErrored,e.exports.isReadable=r.isReadable,e.exports.Readable=r.Readable,e.exports.Writable=r.Writable,e.exports.Duplex=r.Duplex,e.exports.Transform=r.Transform,e.exports.PassThrough=r.PassThrough,e.exports.addAbortSignal=r.addAbortSignal,e.exports.finished=r.finished,e.exports.destroy=r.destroy,e.exports.destroy=s,e.exports.pipeline=r.pipeline,e.exports.compose=r.compose,Object.defineProperty(r,"promises",{configurable:!0,enumerable:!0,get(){return n}}),e.exports.Stream=r.Stream,e.exports.default=e.exports}),oC=Te((t,e)=>{_e(),ve(),we(),typeof Object.create=="function"?e.exports=function(r,n){n&&(r.super_=n,r.prototype=Object.create(n.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(r,n){if(n){r.super_=n;var s=function(){};s.prototype=n.prototype,r.prototype=new s,r.prototype.constructor=r}}}),aC=Te((t,e)=>{_e(),ve(),we();var{Buffer:r}=(Tt(),Ke(St)),n=Symbol.for("BufferList");function s(i){if(!(this instanceof s))return new s(i);s._init.call(this,i)}s._init=function(i){Object.defineProperty(this,n,{value:!0}),this._bufs=[],this.length=0,i&&this.append(i)},s.prototype._new=function(i){return new s(i)},s.prototype._offset=function(i){if(i===0)return[0,0];let o=0;for(let a=0;a<this._bufs.length;a++){let l=o+this._bufs[a].length;if(i<l||a===this._bufs.length-1)return[a,i-o];o=l}},s.prototype._reverseOffset=function(i){let o=i[0],a=i[1];for(let l=0;l<o;l++)a+=this._bufs[l].length;return a},s.prototype.get=function(i){if(i>this.length||i<0)return;let o=this._offset(i);return this._bufs[o[0]][o[1]]},s.prototype.slice=function(i,o){return typeof i=="number"&&i<0&&(i+=this.length),typeof o=="number"&&o<0&&(o+=this.length),this.copy(null,0,i,o)},s.prototype.copy=function(i,o,a,l){if((typeof a!="number"||a<0)&&(a=0),(typeof l!="number"||l>this.length)&&(l=this.length),a>=this.length||l<=0)return i||r.alloc(0);let u=!!i,c=this._offset(a),f=l-a,d=f,g=u&&o||0,m=c[1];if(a===0&&l===this.length){if(!u)return this._bufs.length===1?this._bufs[0]:r.concat(this._bufs,this.length);for(let y=0;y<this._bufs.length;y++)this._bufs[y].copy(i,g),g+=this._bufs[y].length;return i}if(d<=this._bufs[c[0]].length-m)return u?this._bufs[c[0]].copy(i,o,m,m+d):this._bufs[c[0]].slice(m,m+d);u||(i=r.allocUnsafe(f));for(let y=c[0];y<this._bufs.length;y++){let E=this._bufs[y].length-m;if(d>E)this._bufs[y].copy(i,g,m),g+=E;else{this._bufs[y].copy(i,g,m,m+d),g+=E;break}d-=E,m&&(m=0)}return i.length>g?i.slice(0,g):i},s.prototype.shallowSlice=function(i,o){if(i=i||0,o=typeof o!="number"?this.length:o,i<0&&(i+=this.length),o<0&&(o+=this.length),i===o)return this._new();let a=this._offset(i),l=this._offset(o),u=this._bufs.slice(a[0],l[0]+1);return l[1]===0?u.pop():u[u.length-1]=u[u.length-1].slice(0,l[1]),a[1]!==0&&(u[0]=u[0].slice(a[1])),this._new(u)},s.prototype.toString=function(i,o,a){return this.slice(o,a).toString(i)},s.prototype.consume=function(i){if(i=Math.trunc(i),Number.isNaN(i)||i<=0)return this;for(;this._bufs.length;)if(i>=this._bufs[0].length)i-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(i),this.length-=i;break}return this},s.prototype.duplicate=function(){let i=this._new();for(let o=0;o<this._bufs.length;o++)i.append(this._bufs[o]);return i},s.prototype.append=function(i){if(i==null)return this;if(i.buffer)this._appendBuffer(r.from(i.buffer,i.byteOffset,i.byteLength));else if(Array.isArray(i))for(let o=0;o<i.length;o++)this.append(i[o]);else if(this._isBufferList(i))for(let o=0;o<i._bufs.length;o++)this.append(i._bufs[o]);else typeof i=="number"&&(i=i.toString()),this._appendBuffer(r.from(i));return this},s.prototype._appendBuffer=function(i){this._bufs.push(i),this.length+=i.length},s.prototype.indexOf=function(i,o,a){if(a===void 0&&typeof o=="string"&&(a=o,o=void 0),typeof i=="function"||Array.isArray(i))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof i=="number"?i=r.from([i]):typeof i=="string"?i=r.from(i,a):this._isBufferList(i)?i=i.slice():Array.isArray(i.buffer)?i=r.from(i.buffer,i.byteOffset,i.byteLength):r.isBuffer(i)||(i=r.from(i)),o=Number(o||0),isNaN(o)&&(o=0),o<0&&(o=this.length+o),o<0&&(o=0),i.length===0)return o>this.length?this.length:o;let l=this._offset(o),u=l[0],c=l[1];for(;u<this._bufs.length;u++){let f=this._bufs[u];for(;c<f.length;)if(f.length-c>=i.length){let d=f.indexOf(i,c);if(d!==-1)return this._reverseOffset([u,d]);c=f.length-i.length+1}else{let d=this._reverseOffset([u,c]);if(this._match(d,i))return d;c++}c=0}return-1},s.prototype._match=function(i,o){if(this.length-i<o.length)return!1;for(let a=0;a<o.length;a++)if(this.get(i+a)!==o[a])return!1;return!0},function(){let i={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let o in i)(function(a){i[a]===null?s.prototype[a]=function(l,u){return this.slice(l,l+u)[a](0,u)}:s.prototype[a]=function(l=0){return this.slice(l,l+i[a])[a](0)}})(o)}(),s.prototype._isBufferList=function(i){return i instanceof s||s.isBufferList(i)},s.isBufferList=function(i){return i!=null&&i[n]},e.exports=s}),lC=Te((t,e)=>{_e(),ve(),we();var r=rs().Duplex,n=oC(),s=aC();function i(o){if(!(this instanceof i))return new i(o);if(typeof o=="function"){this._callback=o;let a=(function(l){this._callback&&(this._callback(l),this._callback=null)}).bind(this);this.on("pipe",function(l){l.on("error",a)}),this.on("unpipe",function(l){l.removeListener("error",a)}),o=null}s._init.call(this,o),r.call(this)}n(i,r),Object.assign(i.prototype,s.prototype),i.prototype._new=function(o){return new i(o)},i.prototype._write=function(o,a,l){this._appendBuffer(o),typeof l=="function"&&l()},i.prototype._read=function(o){if(!this.length)return this.push(null);o=Math.min(o,this.length),this.push(this.slice(0,o)),this.consume(o)},i.prototype.end=function(o){r.prototype.end.call(this,o),this._callback&&(this._callback(null,this.slice()),this._callback=null)},i.prototype._destroy=function(o,a){this._bufs.length=0,this.length=0,a(o)},i.prototype._isBufferList=function(o){return o instanceof i||o instanceof s||i.isBufferList(o)},i.isBufferList=s.isBufferList,e.exports=i,e.exports.BufferListStream=i,e.exports.BufferList=s}),uC=Te((t,e)=>{_e(),ve(),we();var r=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};e.exports=r}),kv=Te((t,e)=>{_e(),ve(),we();var r=e.exports,{Buffer:n}=(Tt(),Ke(St));r.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},r.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},r.requiredHeaderFlagsErrors={};for(let i in r.requiredHeaderFlags){let o=r.requiredHeaderFlags[i];r.requiredHeaderFlagsErrors[i]="Invalid header flag bits, must be 0x"+o.toString(16)+" for "+r.types[i]+" packet"}r.codes={};for(let i in r.types){let o=r.types[i];r.codes[o]=i}r.CMD_SHIFT=4,r.CMD_MASK=240,r.DUP_MASK=8,r.QOS_MASK=3,r.QOS_SHIFT=1,r.RETAIN_MASK=1,r.VARBYTEINT_MASK=127,r.VARBYTEINT_FIN_MASK=128,r.VARBYTEINT_MAX=268435455,r.SESSIONPRESENT_MASK=1,r.SESSIONPRESENT_HEADER=n.from([r.SESSIONPRESENT_MASK]),r.CONNACK_HEADER=n.from([r.codes.connack<<r.CMD_SHIFT]),r.USERNAME_MASK=128,r.PASSWORD_MASK=64,r.WILL_RETAIN_MASK=32,r.WILL_QOS_MASK=24,r.WILL_QOS_SHIFT=3,r.WILL_FLAG_MASK=4,r.CLEAN_SESSION_MASK=2,r.CONNECT_HEADER=n.from([r.codes.connect<<r.CMD_SHIFT]),r.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},r.propertiesCodes={};for(let i in r.properties){let o=r.properties[i];r.propertiesCodes[o]=i}r.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function s(i){return[0,1,2].map(o=>[0,1].map(a=>[0,1].map(l=>{let u=n.alloc(1);return u.writeUInt8(r.codes[i]<<r.CMD_SHIFT|(a?r.DUP_MASK:0)|o<<r.QOS_SHIFT|l,0,!0),u})))}r.PUBLISH_HEADER=s("publish"),r.SUBSCRIBE_HEADER=s("subscribe"),r.SUBSCRIBE_OPTIONS_QOS_MASK=3,r.SUBSCRIBE_OPTIONS_NL_MASK=1,r.SUBSCRIBE_OPTIONS_NL_SHIFT=2,r.SUBSCRIBE_OPTIONS_RAP_MASK=1,r.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,r.SUBSCRIBE_OPTIONS_RH_MASK=3,r.SUBSCRIBE_OPTIONS_RH_SHIFT=4,r.SUBSCRIBE_OPTIONS_RH=[0,16,32],r.SUBSCRIBE_OPTIONS_NL=4,r.SUBSCRIBE_OPTIONS_RAP=8,r.SUBSCRIBE_OPTIONS_QOS=[0,1,2],r.UNSUBSCRIBE_HEADER=s("unsubscribe"),r.ACKS={unsuback:s("unsuback"),puback:s("puback"),pubcomp:s("pubcomp"),pubrel:s("pubrel"),pubrec:s("pubrec")},r.SUBACK_HEADER=n.from([r.codes.suback<<r.CMD_SHIFT]),r.VERSION3=n.from([3]),r.VERSION4=n.from([4]),r.VERSION5=n.from([5]),r.VERSION131=n.from([131]),r.VERSION132=n.from([132]),r.QOS=[0,1,2].map(i=>n.from([i])),r.EMPTY={pingreq:n.from([r.codes.pingreq<<4,0]),pingresp:n.from([r.codes.pingresp<<4,0]),disconnect:n.from([r.codes.disconnect<<4,0])},r.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},r.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},r.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},r.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}}),cC=Te((t,e)=>{_e(),ve(),we();var r=1e3,n=r*60,s=n*60,i=s*24,o=i*7,a=i*365.25;e.exports=function(d,g){g=g||{};var m=typeof d;if(m==="string"&&d.length>0)return l(d);if(m==="number"&&isFinite(d))return g.long?c(d):u(d);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(d))};function l(d){if(d=String(d),!(d.length>100)){var g=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(d);if(g){var m=parseFloat(g[1]),y=(g[2]||"ms").toLowerCase();switch(y){case"years":case"year":case"yrs":case"yr":case"y":return m*a;case"weeks":case"week":case"w":return m*o;case"days":case"day":case"d":return m*i;case"hours":case"hour":case"hrs":case"hr":case"h":return m*s;case"minutes":case"minute":case"mins":case"min":case"m":return m*n;case"seconds":case"second":case"secs":case"sec":case"s":return m*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return m;default:return}}}}function u(d){var g=Math.abs(d);return g>=i?Math.round(d/i)+"d":g>=s?Math.round(d/s)+"h":g>=n?Math.round(d/n)+"m":g>=r?Math.round(d/r)+"s":d+"ms"}function c(d){var g=Math.abs(d);return g>=i?f(d,g,i,"day"):g>=s?f(d,g,s,"hour"):g>=n?f(d,g,n,"minute"):g>=r?f(d,g,r,"second"):d+" ms"}function f(d,g,m,y){var E=g>=m*1.5;return Math.round(d/m)+" "+y+(E?"s":"")}}),fC=Te((t,e)=>{_e(),ve(),we();function r(n){i.debug=i,i.default=i,i.coerce=f,i.disable=l,i.enable=a,i.enabled=u,i.humanize=cC(),i.destroy=d,Object.keys(n).forEach(g=>{i[g]=n[g]}),i.names=[],i.skips=[],i.formatters={};function s(g){let m=0;for(let y=0;y<g.length;y++)m=(m<<5)-m+g.charCodeAt(y),m|=0;return i.colors[Math.abs(m)%i.colors.length]}i.selectColor=s;function i(g){let m,y=null,E,_;function S(...v){if(!S.enabled)return;let A=S,k=Number(new Date),x=k-(m||k);A.diff=x,A.prev=m,A.curr=k,m=k,v[0]=i.coerce(v[0]),typeof v[0]!="string"&&v.unshift("%O");let D=0;v[0]=v[0].replace(/%([a-zA-Z%])/g,(N,B)=>{if(N==="%%")return"%";D++;let q=i.formatters[B];if(typeof q=="function"){let K=v[D];N=q.call(A,K),v.splice(D,1),D--}return N}),i.formatArgs.call(A,v),(A.log||i.log).apply(A,v)}return S.namespace=g,S.useColors=i.useColors(),S.color=i.selectColor(g),S.extend=o,S.destroy=i.destroy,Object.defineProperty(S,"enabled",{enumerable:!0,configurable:!1,get:()=>y!==null?y:(E!==i.namespaces&&(E=i.namespaces,_=i.enabled(g)),_),set:v=>{y=v}}),typeof i.init=="function"&&i.init(S),S}function o(g,m){let y=i(this.namespace+(typeof m>"u"?":":m)+g);return y.log=this.log,y}function a(g){i.save(g),i.namespaces=g,i.names=[],i.skips=[];let m,y=(typeof g=="string"?g:"").split(/[\s,]+/),E=y.length;for(m=0;m<E;m++)y[m]&&(g=y[m].replace(/\*/g,".*?"),g[0]==="-"?i.skips.push(new RegExp("^"+g.slice(1)+"$")):i.names.push(new RegExp("^"+g+"$")))}function l(){let g=[...i.names.map(c),...i.skips.map(c).map(m=>"-"+m)].join(",");return i.enable(""),g}function u(g){if(g[g.length-1]==="*")return!0;let m,y;for(m=0,y=i.skips.length;m<y;m++)if(i.skips[m].test(g))return!1;for(m=0,y=i.names.length;m<y;m++)if(i.names[m].test(g))return!0;return!1}function c(g){return g.toString().substring(2,g.toString().length-2).replace(/\.\*\?$/,"*")}function f(g){return g instanceof Error?g.stack||g.message:g}function d(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return i.enable(i.load()),i}e.exports=r}),vn=Te((t,e)=>{_e(),ve(),we(),t.formatArgs=n,t.save=s,t.load=i,t.useColors=r,t.storage=o(),t.destroy=(()=>{let l=!1;return()=>{l||(l=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof Lt<"u"&&Lt.userAgent&&Lt.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof Lt<"u"&&Lt.userAgent&&Lt.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof Lt<"u"&&Lt.userAgent&&Lt.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function n(l){if(l[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+l[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;let u="color: "+this.color;l.splice(1,0,u,"color: inherit");let c=0,f=0;l[0].replace(/%[a-zA-Z%]/g,d=>{d!=="%%"&&(c++,d==="%c"&&(f=c))}),l.splice(f,0,u)}t.log=console.debug||console.log||(()=>{});function s(l){try{l?t.storage.setItem("debug",l):t.storage.removeItem("debug")}catch{}}function i(){let l;try{l=t.storage.getItem("debug")}catch{}return!l&&typeof ze<"u"&&"env"in ze&&(l=ze.env.DEBUG),l}function o(){try{return localStorage}catch{}}e.exports=fC()(t);var{formatters:a}=e.exports;a.j=function(l){try{return JSON.stringify(l)}catch(u){return"[UnexpectedJSONParseError]: "+u.message}}}),dC=Te((t,e)=>{_e(),ve(),we();var r=lC(),{EventEmitter:n}=(no(),Ke(ts)),s=uC(),i=kv(),o=vn()("mqtt-packet:parser"),a=class rh extends n{constructor(){super(),this.parser=this.constructor.parser}static parser(u){return this instanceof rh?(this.settings=u||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new rh().parser(u)}_resetState(){o("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new s,this.error=null,this._list=r(),this._stateCounter=0}parse(u){for(this.error&&this._resetState(),this._list.append(u),o("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,o("parse: state complete. _stateCounter is now: %d",this._stateCounter),o("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return o("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){let u=this._list.readUInt8(0),c=u>>i.CMD_SHIFT;this.packet.cmd=i.types[c];let f=u&15,d=i.requiredHeaderFlags[c];return d!=null&&f!==d?this._emitError(new Error(i.requiredHeaderFlagsErrors[c])):(this.packet.retain=(u&i.RETAIN_MASK)!==0,this.packet.qos=u>>i.QOS_SHIFT&i.QOS_MASK,this.packet.qos>2?this._emitError(new Error("Packet must not have both QoS bits set to 1")):(this.packet.dup=(u&i.DUP_MASK)!==0,o("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0))}_parseLength(){let u=this._parseVarByteNum(!0);return u&&(this.packet.length=u.value,this._list.consume(u.bytes)),o("_parseLength %d",u.value),!!u}_parsePayload(){o("_parsePayload: payload %O",this._list);let u=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}u=!0}return o("_parsePayload complete result: %s",u),u}_parseConnect(){o("_parseConnect");let u,c,f,d,g={},m=this.packet,y=this._parseString();if(y===null)return this._emitError(new Error("Cannot parse protocolId"));if(y!=="MQTT"&&y!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(m.protocolId=y,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(m.protocolVersion=this._list.readUInt8(this._pos),m.protocolVersion>=128&&(m.bridgeMode=!0,m.protocolVersion=m.protocolVersion-128),m.protocolVersion!==3&&m.protocolVersion!==4&&m.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(this._list.readUInt8(this._pos)&1)return this._emitError(new Error("Connect flag bit 0 must be 0, but got 1"));g.username=this._list.readUInt8(this._pos)&i.USERNAME_MASK,g.password=this._list.readUInt8(this._pos)&i.PASSWORD_MASK,g.will=this._list.readUInt8(this._pos)&i.WILL_FLAG_MASK;let E=!!(this._list.readUInt8(this._pos)&i.WILL_RETAIN_MASK),_=(this._list.readUInt8(this._pos)&i.WILL_QOS_MASK)>>i.WILL_QOS_SHIFT;if(g.will)m.will={},m.will.retain=E,m.will.qos=_;else{if(E)return this._emitError(new Error("Will Retain Flag must be set to zero when Will Flag is set to 0"));if(_)return this._emitError(new Error("Will QoS must be set to zero when Will Flag is set to 0"))}if(m.clean=(this._list.readUInt8(this._pos)&i.CLEAN_SESSION_MASK)!==0,this._pos++,m.keepalive=this._parseNum(),m.keepalive===-1)return this._emitError(new Error("Packet too short"));if(m.protocolVersion===5){let v=this._parseProperties();Object.getOwnPropertyNames(v).length&&(m.properties=v)}let S=this._parseString();if(S===null)return this._emitError(new Error("Packet too short"));if(m.clientId=S,o("_parseConnect: packet.clientId: %s",m.clientId),g.will){if(m.protocolVersion===5){let v=this._parseProperties();Object.getOwnPropertyNames(v).length&&(m.will.properties=v)}if(u=this._parseString(),u===null)return this._emitError(new Error("Cannot parse will topic"));if(m.will.topic=u,o("_parseConnect: packet.will.topic: %s",m.will.topic),c=this._parseBuffer(),c===null)return this._emitError(new Error("Cannot parse will payload"));m.will.payload=c,o("_parseConnect: packet.will.paylaod: %s",m.will.payload)}if(g.username){if(d=this._parseString(),d===null)return this._emitError(new Error("Cannot parse username"));m.username=d,o("_parseConnect: packet.username: %s",m.username)}if(g.password){if(f=this._parseBuffer(),f===null)return this._emitError(new Error("Cannot parse password"));m.password=f}return this.settings=m,o("_parseConnect: complete"),m}_parseConnack(){o("_parseConnack");let u=this.packet;if(this._list.length<1)return null;let c=this._list.readUInt8(this._pos++);if(c>1)return this._emitError(new Error("Invalid connack flags, bits 7-1 must be set to 0"));if(u.sessionPresent=!!(c&i.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?u.reasonCode=this._list.readUInt8(this._pos++):u.reasonCode=0;else{if(this._list.length<2)return null;u.returnCode=this._list.readUInt8(this._pos++)}if(u.returnCode===-1||u.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){let f=this._parseProperties();Object.getOwnPropertyNames(f).length&&(u.properties=f)}o("_parseConnack: complete")}_parsePublish(){o("_parsePublish");let u=this.packet;if(u.topic=this._parseString(),u.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(u.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}u.payload=this._list.slice(this._pos,u.length),o("_parsePublish: payload from buffer list: %o",u.payload)}}_parseSubscribe(){o("_parseSubscribe");let u=this.packet,c,f,d,g,m,y,E;if(u.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let _=this._parseProperties();Object.getOwnPropertyNames(_).length&&(u.properties=_)}if(u.length<=0)return this._emitError(new Error("Malformed subscribe, no payload specified"));for(;this._pos<u.length;){if(c=this._parseString(),c===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=u.length)return this._emitError(new Error("Malformed Subscribe Payload"));if(f=this._parseByte(),this.settings.protocolVersion===5){if(f&192)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-6 must be 0"))}else if(f&252)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-2 must be 0"));if(d=f&i.SUBSCRIBE_OPTIONS_QOS_MASK,d>2)return this._emitError(new Error("Invalid subscribe QoS, must be <= 2"));if(y=(f>>i.SUBSCRIBE_OPTIONS_NL_SHIFT&i.SUBSCRIBE_OPTIONS_NL_MASK)!==0,m=(f>>i.SUBSCRIBE_OPTIONS_RAP_SHIFT&i.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,g=f>>i.SUBSCRIBE_OPTIONS_RH_SHIFT&i.SUBSCRIBE_OPTIONS_RH_MASK,g>2)return this._emitError(new Error("Invalid retain handling, must be <= 2"));E={topic:c,qos:d},this.settings.protocolVersion===5?(E.nl=y,E.rap=m,E.rh=g):this.settings.bridgeMode&&(E.rh=0,E.rap=!0,E.nl=!0),o("_parseSubscribe: push subscription `%s` to subscription",E),u.subscriptions.push(E)}}}_parseSuback(){o("_parseSuback");let u=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed suback, no payload specified"));for(;this._pos<this.packet.length;){let c=this._list.readUInt8(this._pos++);if(this.settings.protocolVersion===5){if(!i.MQTT5_SUBACK_CODES[c])return this._emitError(new Error("Invalid suback code"))}else if(c>2&&c!==128)return this._emitError(new Error("Invalid suback QoS, must be 0, 1, 2 or 128"));this.packet.granted.push(c)}}}_parseUnsubscribe(){o("_parseUnsubscribe");let u=this.packet;if(u.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed unsubscribe, no payload specified"));for(;this._pos<u.length;){let c=this._parseString();if(c===null)return this._emitError(new Error("Cannot parse topic"));o("_parseUnsubscribe: push topic `%s` to unsubscriptions",c),u.unsubscriptions.push(c)}}}_parseUnsuback(){o("_parseUnsuback");let u=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if((this.settings.protocolVersion===3||this.settings.protocolVersion===4)&&u.length!==2)return this._emitError(new Error("Malformed unsuback, payload length must be 2"));if(u.length<=0)return this._emitError(new Error("Malformed unsuback, no payload specified"));if(this.settings.protocolVersion===5){let c=this._parseProperties();for(Object.getOwnPropertyNames(c).length&&(u.properties=c),u.granted=[];this._pos<this.packet.length;){let f=this._list.readUInt8(this._pos++);if(!i.MQTT5_UNSUBACK_CODES[f])return this._emitError(new Error("Invalid unsuback code"));this.packet.granted.push(f)}}}_parseConfirmation(){o("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);let u=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5){if(u.length>2){switch(u.reasonCode=this._parseByte(),this.packet.cmd){case"puback":case"pubrec":if(!i.MQTT5_PUBACK_PUBREC_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break;case"pubrel":case"pubcomp":if(!i.MQTT5_PUBREL_PUBCOMP_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break}o("_parseConfirmation: packet.reasonCode `%d`",u.reasonCode)}else u.reasonCode=0;if(u.length>3){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}}return!0}_parseDisconnect(){let u=this.packet;if(o("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?(u.reasonCode=this._parseByte(),i.MQTT5_DISCONNECT_CODES[u.reasonCode]||this._emitError(new Error("Invalid disconnect reason code"))):u.reasonCode=0;let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}return o("_parseDisconnect result: true"),!0}_parseAuth(){o("_parseAuth");let u=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));if(u.reasonCode=this._parseByte(),!i.MQTT5_AUTH_CODES[u.reasonCode])return this._emitError(new Error("Invalid auth reason code"));let c=this._parseProperties();return Object.getOwnPropertyNames(c).length&&(u.properties=c),o("_parseAuth: result: true"),!0}_parseMessageId(){let u=this.packet;return u.messageId=this._parseNum(),u.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(o("_parseMessageId: packet.messageId %d",u.messageId),!0)}_parseString(u){let c=this._parseNum(),f=c+this._pos;if(c===-1||f>this._list.length||f>this.packet.length)return null;let d=this._list.toString("utf8",this._pos,f);return this._pos+=c,o("_parseString: result: %s",d),d}_parseStringPair(){return o("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){let u=this._parseNum(),c=u+this._pos;if(u===-1||c>this._list.length||c>this.packet.length)return null;let f=this._list.slice(this._pos,c);return this._pos+=u,o("_parseBuffer: result: %o",f),f}_parseNum(){if(this._list.length-this._pos<2)return-1;let u=this._list.readUInt16BE(this._pos);return this._pos+=2,o("_parseNum: result: %s",u),u}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;let u=this._list.readUInt32BE(this._pos);return this._pos+=4,o("_parse4ByteNum: result: %s",u),u}_parseVarByteNum(u){o("_parseVarByteNum");let c=4,f=0,d=1,g=0,m=!1,y,E=this._pos?this._pos:0;for(;f<c&&E+f<this._list.length;){if(y=this._list.readUInt8(E+f++),g+=d*(y&i.VARBYTEINT_MASK),d*=128,!(y&i.VARBYTEINT_FIN_MASK)){m=!0;break}if(this._list.length<=f)break}return!m&&f===c&&this._list.length>=f&&this._emitError(new Error("Invalid variable byte integer")),E&&(this._pos+=f),m?u?m={bytes:f,value:g}:m=g:m=!1,o("_parseVarByteNum: result: %o",m),m}_parseByte(){let u;return this._pos<this._list.length&&(u=this._list.readUInt8(this._pos),this._pos++),o("_parseByte: result: %o",u),u}_parseByType(u){switch(o("_parseByType: type: %s",u),u){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){o("_parseProperties");let u=this._parseVarByteNum(),c=this._pos+u,f={};for(;this._pos<c;){let d=this._parseByte();if(!d)return this._emitError(new Error("Cannot parse property code type")),!1;let g=i.propertiesCodes[d];if(!g)return this._emitError(new Error("Unknown property")),!1;if(g==="userProperties"){f[g]||(f[g]=Object.create(null));let m=this._parseByType(i.propertiesTypes[g]);if(f[g][m.name])if(Array.isArray(f[g][m.name]))f[g][m.name].push(m.value);else{let y=f[g][m.name];f[g][m.name]=[y],f[g][m.name].push(m.value)}else f[g][m.name]=m.value;continue}f[g]?Array.isArray(f[g])?f[g].push(this._parseByType(i.propertiesTypes[g])):(f[g]=[f[g]],f[g].push(this._parseByType(i.propertiesTypes[g]))):f[g]=this._parseByType(i.propertiesTypes[g])}return f}_newPacket(){return o("_newPacket"),this.packet&&(this._list.consume(this.packet.length),o("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),o("_newPacket: new packet"),this.packet=new s,this._pos=0,!0}_emitError(u){o("_emitError",u),this.error=u,this.emit("error",u)}};e.exports=a}),hC=Te((t,e)=>{_e(),ve(),we();var{Buffer:r}=(Tt(),Ke(St)),n=65536,s={},i=r.isBuffer(r.from([1,2]).subarray(0,1));function o(c){let f=r.allocUnsafe(2);return f.writeUInt8(c>>8,0),f.writeUInt8(c&255,1),f}function a(){for(let c=0;c<n;c++)s[c]=o(c)}function l(c){let f=0,d=0,g=r.allocUnsafe(4);do f=c%128|0,c=c/128|0,c>0&&(f=f|128),g.writeUInt8(f,d++);while(c>0&&d<4);return c>0&&(d=0),i?g.subarray(0,d):g.slice(0,d)}function u(c){let f=r.allocUnsafe(4);return f.writeUInt32BE(c,0),f}e.exports={cache:s,generateCache:a,generateNumber:o,genBufVariableByteInt:l,generate4ByteBuffer:u}}),pC=Te((t,e)=>{_e(),ve(),we(),typeof ze>"u"||!ze.version||ze.version.indexOf("v0.")===0||ze.version.indexOf("v1.")===0&&ze.version.indexOf("v1.8.")!==0?e.exports={nextTick:r}:e.exports=ze;function r(n,s,i,o){if(typeof n!="function")throw new TypeError('"callback" argument must be a function');var a=arguments.length,l,u;switch(a){case 0:case 1:return ze.nextTick(n);case 2:return ze.nextTick(function(){n.call(null,s)});case 3:return ze.nextTick(function(){n.call(null,s,i)});case 4:return ze.nextTick(function(){n.call(null,s,i,o)});default:for(l=new Array(a-1),u=0;u<l.length;)l[u++]=arguments[u];return ze.nextTick(function(){n.apply(null,l)})}}}),Lv=Te((t,e)=>{_e(),ve(),we();var r=kv(),{Buffer:n}=(Tt(),Ke(St)),s=n.allocUnsafe(0),i=n.from([0]),o=hC(),a=pC().nextTick,l=vn()("mqtt-packet:writeToStream"),u=o.cache,c=o.generateNumber,f=o.generateCache,d=o.genBufVariableByteInt,g=o.generate4ByteBuffer,m=z,y=!0;function E(X,Y,ie){switch(l("generate called"),Y.cork&&(Y.cork(),a(_,Y)),y&&(y=!1,f()),l("generate: packet.cmd: %s",X.cmd),X.cmd){case"connect":return S(X,Y);case"connack":return v(X,Y,ie);case"publish":return A(X,Y,ie);case"puback":case"pubrec":case"pubrel":case"pubcomp":return k(X,Y,ie);case"subscribe":return x(X,Y,ie);case"suback":return D(X,Y,ie);case"unsubscribe":return N(X,Y,ie);case"unsuback":return B(X,Y,ie);case"pingreq":case"pingresp":return q(X,Y);case"disconnect":return K(X,Y,ie);case"auth":return C(X,Y,ie);default:return Y.destroy(new Error("Unknown command")),!1}}Object.defineProperty(E,"cacheNumbers",{get(){return m===z},set(X){X?((!u||Object.keys(u).length===0)&&(y=!0),m=z):(y=!1,m=F)}});function _(X){X.uncork()}function S(X,Y,ie){let be=X||{},he=be.protocolId||"MQTT",ue=be.protocolVersion||4,I=be.will,P=be.clean,O=be.keepalive||0,j=be.clientId||"",W=be.username,le=be.password,fe=be.properties;P===void 0&&(P=!0);let V=0;if(!he||typeof he!="string"&&!n.isBuffer(he))return Y.destroy(new Error("Invalid protocolId")),!1;if(V+=he.length+2,ue!==3&&ue!==4&&ue!==5)return Y.destroy(new Error("Invalid protocol version")),!1;if(V+=1,(typeof j=="string"||n.isBuffer(j))&&(j||ue>=4)&&(j||P))V+=n.byteLength(j)+2;else{if(ue<4)return Y.destroy(new Error("clientId must be supplied before 3.1.1")),!1;if(P*1===0)return Y.destroy(new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof O!="number"||O<0||O>65535||O%1!==0)return Y.destroy(new Error("Invalid keepalive")),!1;V+=2,V+=1;let te,$;if(ue===5){if(te=re(Y,fe),!te)return!1;V+=te.length}if(I){if(typeof I!="object")return Y.destroy(new Error("Invalid will")),!1;if(!I.topic||typeof I.topic!="string")return Y.destroy(new Error("Invalid will topic")),!1;if(V+=n.byteLength(I.topic)+2,V+=2,I.payload)if(I.payload.length>=0)typeof I.payload=="string"?V+=n.byteLength(I.payload):V+=I.payload.length;else return Y.destroy(new Error("Invalid will payload")),!1;if($={},ue===5){if($=re(Y,I.properties),!$)return!1;V+=$.length}}let J=!1;if(W!=null)if(pe(W))J=!0,V+=n.byteLength(W)+2;else return Y.destroy(new Error("Invalid username")),!1;if(le!=null){if(!J)return Y.destroy(new Error("Username is required to use password")),!1;if(pe(le))V+=ge(le)+2;else return Y.destroy(new Error("Invalid password")),!1}Y.write(r.CONNECT_HEADER),L(Y,V),ce(Y,he),be.bridgeMode&&(ue+=128),Y.write(ue===131?r.VERSION131:ue===132?r.VERSION132:ue===4?r.VERSION4:ue===5?r.VERSION5:r.VERSION3);let ae=0;return ae|=W!=null?r.USERNAME_MASK:0,ae|=le!=null?r.PASSWORD_MASK:0,ae|=I&&I.retain?r.WILL_RETAIN_MASK:0,ae|=I&&I.qos?I.qos<<r.WILL_QOS_SHIFT:0,ae|=I?r.WILL_FLAG_MASK:0,ae|=P?r.CLEAN_SESSION_MASK:0,Y.write(n.from([ae])),m(Y,O),ue===5&&te.write(),ce(Y,j),I&&(ue===5&&$.write(),H(Y,I.topic),ce(Y,I.payload)),W!=null&&ce(Y,W),le!=null&&ce(Y,le),!0}function v(X,Y,ie){let be=ie?ie.protocolVersion:4,he=X||{},ue=be===5?he.reasonCode:he.returnCode,I=he.properties,P=2;if(typeof ue!="number")return Y.destroy(new Error("Invalid return code")),!1;let O=null;if(be===5){if(O=re(Y,I),!O)return!1;P+=O.length}return Y.write(r.CONNACK_HEADER),L(Y,P),Y.write(he.sessionPresent?r.SESSIONPRESENT_HEADER:i),Y.write(n.from([ue])),O==null||O.write(),!0}function A(X,Y,ie){l("publish: packet: %o",X);let be=ie?ie.protocolVersion:4,he=X||{},ue=he.qos||0,I=he.retain?r.RETAIN_MASK:0,P=he.topic,O=he.payload||s,j=he.messageId,W=he.properties,le=0;if(typeof P=="string")le+=n.byteLength(P)+2;else if(n.isBuffer(P))le+=P.length+2;else return Y.destroy(new Error("Invalid topic")),!1;if(n.isBuffer(O)?le+=O.length:le+=n.byteLength(O),ue&&typeof j!="number")return Y.destroy(new Error("Invalid messageId")),!1;ue&&(le+=2);let fe=null;if(be===5){if(fe=re(Y,W),!fe)return!1;le+=fe.length}return Y.write(r.PUBLISH_HEADER[ue][he.dup?1:0][I?1:0]),L(Y,le),m(Y,ge(P)),Y.write(P),ue>0&&m(Y,j),fe==null||fe.write(),l("publish: payload: %o",O),Y.write(O)}function k(X,Y,ie){let be=ie?ie.protocolVersion:4,he=X||{},ue=he.cmd||"puback",I=he.messageId,P=he.dup&&ue==="pubrel"?r.DUP_MASK:0,O=0,j=he.reasonCode,W=he.properties,le=be===5?3:2;if(ue==="pubrel"&&(O=1),typeof I!="number")return Y.destroy(new Error("Invalid messageId")),!1;let fe=null;if(be===5&&typeof W=="object"){if(fe=R(Y,W,ie,le),!fe)return!1;le+=fe.length}return Y.write(r.ACKS[ue][O][P][0]),le===3&&(le+=j!==0?1:-1),L(Y,le),m(Y,I),be===5&&le!==2&&Y.write(n.from([j])),fe!==null?fe.write():le===4&&Y.write(n.from([0])),!0}function x(X,Y,ie){l("subscribe: packet: ");let be=ie?ie.protocolVersion:4,he=X||{},ue=he.dup?r.DUP_MASK:0,I=he.messageId,P=he.subscriptions,O=he.properties,j=0;if(typeof I!="number")return Y.destroy(new Error("Invalid messageId")),!1;j+=2;let W=null;if(be===5){if(W=re(Y,O),!W)return!1;j+=W.length}if(typeof P=="object"&&P.length)for(let fe=0;fe<P.length;fe+=1){let V=P[fe].topic,te=P[fe].qos;if(typeof V!="string")return Y.destroy(new Error("Invalid subscriptions - invalid topic")),!1;if(typeof te!="number")return Y.destroy(new Error("Invalid subscriptions - invalid qos")),!1;if(be===5){if(typeof(P[fe].nl||!1)!="boolean")return Y.destroy(new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(P[fe].rap||!1)!="boolean")return Y.destroy(new Error("Invalid subscriptions - invalid Retain as Published")),!1;let $=P[fe].rh||0;if(typeof $!="number"||$>2)return Y.destroy(new Error("Invalid subscriptions - invalid Retain Handling")),!1}j+=n.byteLength(V)+2+1}else return Y.destroy(new Error("Invalid subscriptions")),!1;l("subscribe: writing to stream: %o",r.SUBSCRIBE_HEADER),Y.write(r.SUBSCRIBE_HEADER[1][ue?1:0][0]),L(Y,j),m(Y,I),W!==null&&W.write();let le=!0;for(let fe of P){let V=fe.topic,te=fe.qos,$=+fe.nl,J=+fe.rap,ae=fe.rh,me;H(Y,V),me=r.SUBSCRIBE_OPTIONS_QOS[te],be===5&&(me|=$?r.SUBSCRIBE_OPTIONS_NL:0,me|=J?r.SUBSCRIBE_OPTIONS_RAP:0,me|=ae?r.SUBSCRIBE_OPTIONS_RH[ae]:0),le=Y.write(n.from([me]))}return le}function D(X,Y,ie){let be=ie?ie.protocolVersion:4,he=X||{},ue=he.messageId,I=he.granted,P=he.properties,O=0;if(typeof ue!="number")return Y.destroy(new Error("Invalid messageId")),!1;if(O+=2,typeof I=="object"&&I.length)for(let W=0;W<I.length;W+=1){if(typeof I[W]!="number")return Y.destroy(new Error("Invalid qos vector")),!1;O+=1}else return Y.destroy(new Error("Invalid qos vector")),!1;let j=null;if(be===5){if(j=R(Y,P,ie,O),!j)return!1;O+=j.length}return Y.write(r.SUBACK_HEADER),L(Y,O),m(Y,ue),j!==null&&j.write(),Y.write(n.from(I))}function N(X,Y,ie){let be=ie?ie.protocolVersion:4,he=X||{},ue=he.messageId,I=he.dup?r.DUP_MASK:0,P=he.unsubscriptions,O=he.properties,j=0;if(typeof ue!="number")return Y.destroy(new Error("Invalid messageId")),!1;if(j+=2,typeof P=="object"&&P.length)for(let fe=0;fe<P.length;fe+=1){if(typeof P[fe]!="string")return Y.destroy(new Error("Invalid unsubscriptions")),!1;j+=n.byteLength(P[fe])+2}else return Y.destroy(new Error("Invalid unsubscriptions")),!1;let W=null;if(be===5){if(W=re(Y,O),!W)return!1;j+=W.length}Y.write(r.UNSUBSCRIBE_HEADER[1][I?1:0][0]),L(Y,j),m(Y,ue),W!==null&&W.write();let le=!0;for(let fe=0;fe<P.length;fe++)le=H(Y,P[fe]);return le}function B(X,Y,ie){let be=ie?ie.protocolVersion:4,he=X||{},ue=he.messageId,I=he.dup?r.DUP_MASK:0,P=he.granted,O=he.properties,j=he.cmd,W=0,le=2;if(typeof ue!="number")return Y.destroy(new Error("Invalid messageId")),!1;if(be===5)if(typeof P=="object"&&P.length)for(let V=0;V<P.length;V+=1){if(typeof P[V]!="number")return Y.destroy(new Error("Invalid qos vector")),!1;le+=1}else return Y.destroy(new Error("Invalid qos vector")),!1;let fe=null;if(be===5){if(fe=R(Y,O,ie,le),!fe)return!1;le+=fe.length}return Y.write(r.ACKS[j][W][I][0]),L(Y,le),m(Y,ue),fe!==null&&fe.write(),be===5&&Y.write(n.from(P)),!0}function q(X,Y,ie){return Y.write(r.EMPTY[X.cmd])}function K(X,Y,ie){let be=ie?ie.protocolVersion:4,he=X||{},ue=he.reasonCode,I=he.properties,P=be===5?1:0,O=null;if(be===5){if(O=R(Y,I,ie,P),!O)return!1;P+=O.length}return Y.write(n.from([r.codes.disconnect<<4])),L(Y,P),be===5&&Y.write(n.from([ue])),O!==null&&O.write(),!0}function C(X,Y,ie){let be=ie?ie.protocolVersion:4,he=X||{},ue=he.reasonCode,I=he.properties,P=be===5?1:0;be!==5&&Y.destroy(new Error("Invalid mqtt version for auth packet"));let O=R(Y,I,ie,P);return O?(P+=O.length,Y.write(n.from([r.codes.auth<<4])),L(Y,P),Y.write(n.from([ue])),O!==null&&O.write(),!0):!1}var M={};function L(X,Y){if(Y>r.VARBYTEINT_MAX)return X.destroy(new Error(`Invalid variable byte integer: ${Y}`)),!1;let ie=M[Y];return ie||(ie=d(Y),Y<16384&&(M[Y]=ie)),l("writeVarByteInt: writing to stream: %o",ie),X.write(ie)}function H(X,Y){let ie=n.byteLength(Y);return m(X,ie),l("writeString: %s",Y),X.write(Y,"utf8")}function G(X,Y,ie){H(X,Y),H(X,ie)}function z(X,Y){return l("writeNumberCached: number: %d",Y),l("writeNumberCached: %o",u[Y]),X.write(u[Y])}function F(X,Y){let ie=c(Y);return l("writeNumberGenerated: %o",ie),X.write(ie)}function ne(X,Y){let ie=g(Y);return l("write4ByteNumber: %o",ie),X.write(ie)}function ce(X,Y){typeof Y=="string"?H(X,Y):Y?(m(X,Y.length),X.write(Y)):m(X,0)}function re(X,Y){if(typeof Y!="object"||Y.length!=null)return{length:1,write(){de(X,{},0)}};let ie=0;function be(he,ue){let I=r.propertiesTypes[he],P=0;switch(I){case"byte":{if(typeof ue!="boolean")return X.destroy(new Error(`Invalid ${he}: ${ue}`)),!1;P+=2;break}case"int8":{if(typeof ue!="number"||ue<0||ue>255)return X.destroy(new Error(`Invalid ${he}: ${ue}`)),!1;P+=2;break}case"binary":{if(ue&&ue===null)return X.destroy(new Error(`Invalid ${he}: ${ue}`)),!1;P+=1+n.byteLength(ue)+2;break}case"int16":{if(typeof ue!="number"||ue<0||ue>65535)return X.destroy(new Error(`Invalid ${he}: ${ue}`)),!1;P+=3;break}case"int32":{if(typeof ue!="number"||ue<0||ue>4294967295)return X.destroy(new Error(`Invalid ${he}: ${ue}`)),!1;P+=5;break}case"var":{if(typeof ue!="number"||ue<0||ue>268435455)return X.destroy(new Error(`Invalid ${he}: ${ue}`)),!1;P+=1+n.byteLength(d(ue));break}case"string":{if(typeof ue!="string")return X.destroy(new Error(`Invalid ${he}: ${ue}`)),!1;P+=3+n.byteLength(ue.toString());break}case"pair":{if(typeof ue!="object")return X.destroy(new Error(`Invalid ${he}: ${ue}`)),!1;P+=Object.getOwnPropertyNames(ue).reduce((O,j)=>{let W=ue[j];return Array.isArray(W)?O+=W.reduce((le,fe)=>(le+=3+n.byteLength(j.toString())+2+n.byteLength(fe.toString()),le),0):O+=3+n.byteLength(j.toString())+2+n.byteLength(ue[j].toString()),O},0);break}default:return X.destroy(new Error(`Invalid property ${he}: ${ue}`)),!1}return P}if(Y)for(let he in Y){let ue=0,I=0,P=Y[he];if(Array.isArray(P))for(let O=0;O<P.length;O++){if(I=be(he,P[O]),!I)return!1;ue+=I}else{if(I=be(he,P),!I)return!1;ue=I}if(!ue)return!1;ie+=ue}return{length:n.byteLength(d(ie))+ie,write(){de(X,Y,ie)}}}function R(X,Y,ie,be){let he=["reasonString","userProperties"],ue=ie&&ie.properties&&ie.properties.maximumPacketSize?ie.properties.maximumPacketSize:0,I=re(X,Y);if(ue)for(;be+I.length>ue;){let P=he.shift();if(P&&Y[P])delete Y[P],I=re(X,Y);else return!1}return I}function Q(X,Y,ie){switch(r.propertiesTypes[Y]){case"byte":{X.write(n.from([r.properties[Y]])),X.write(n.from([+ie]));break}case"int8":{X.write(n.from([r.properties[Y]])),X.write(n.from([ie]));break}case"binary":{X.write(n.from([r.properties[Y]])),ce(X,ie);break}case"int16":{X.write(n.from([r.properties[Y]])),m(X,ie);break}case"int32":{X.write(n.from([r.properties[Y]])),ne(X,ie);break}case"var":{X.write(n.from([r.properties[Y]])),L(X,ie);break}case"string":{X.write(n.from([r.properties[Y]])),H(X,ie);break}case"pair":{Object.getOwnPropertyNames(ie).forEach(be=>{let he=ie[be];Array.isArray(he)?he.forEach(ue=>{X.write(n.from([r.properties[Y]])),G(X,be.toString(),ue.toString())}):(X.write(n.from([r.properties[Y]])),G(X,be.toString(),he.toString()))});break}default:return X.destroy(new Error(`Invalid property ${Y} value: ${ie}`)),!1}}function de(X,Y,ie){L(X,ie);for(let be in Y)if(Object.prototype.hasOwnProperty.call(Y,be)&&Y[be]!==null){let he=Y[be];if(Array.isArray(he))for(let ue=0;ue<he.length;ue++)Q(X,be,he[ue]);else Q(X,be,he)}}function ge(X){return X?X instanceof n?X.length:n.byteLength(X):0}function pe(X){return typeof X=="string"||X instanceof n}e.exports=E}),gC=Te((t,e)=>{_e(),ve(),we();var r=Lv(),{EventEmitter:n}=(no(),Ke(ts)),{Buffer:s}=(Tt(),Ke(St));function i(a,l){let u=new o;return r(a,u,l),u.concat()}var o=class extends n{constructor(){super(),this._array=new Array(20),this._i=0}write(a){return this._array[this._i++]=a,!0}concat(){let a=0,l=new Array(this._array.length),u=this._array,c=0,f;for(f=0;f<u.length&&u[f]!==void 0;f++)typeof u[f]!="string"?l[f]=u[f].length:l[f]=s.byteLength(u[f]),a+=l[f];let d=s.allocUnsafe(a);for(f=0;f<u.length&&u[f]!==void 0;f++)typeof u[f]!="string"?(u[f].copy(d,c),c+=l[f]):(d.write(u[f],c),c+=l[f]);return d}destroy(a){a&&this.emit("error",a)}};e.exports=i}),mC=Te(t=>{_e(),ve(),we(),t.parser=dC().parser,t.generate=gC(),t.writeToStream=Lv()}),Nv=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0});var e=class{constructor(){this.nextId=Math.max(1,Math.floor(Math.random()*65535))}allocate(){let r=this.nextId++;return this.nextId===65536&&(this.nextId=1),r}getLastAllocated(){return this.nextId===1?65535:this.nextId-1}register(r){return!0}deallocate(r){}clear(){}};t.default=e}),bC=Te((t,e)=>{_e(),ve(),we(),e.exports=n;function r(i){return i instanceof jl?jl.from(i):new i.constructor(i.buffer.slice(),i.byteOffset,i.length)}function n(i){if(i=i||{},i.circles)return s(i);return i.proto?l:a;function o(u,c){for(var f=Object.keys(u),d=new Array(f.length),g=0;g<f.length;g++){var m=f[g],y=u[m];typeof y!="object"||y===null?d[m]=y:y instanceof Date?d[m]=new Date(y):ArrayBuffer.isView(y)?d[m]=r(y):d[m]=c(y)}return d}function a(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return o(u,a);if(u instanceof Map)return new Map(o(Array.from(u),a));if(u instanceof Set)return new Set(o(Array.from(u),a));var c={};for(var f in u)if(Object.hasOwnProperty.call(u,f)!==!1){var d=u[f];typeof d!="object"||d===null?c[f]=d:d instanceof Date?c[f]=new Date(d):d instanceof Map?c[f]=new Map(o(Array.from(d),a)):d instanceof Set?c[f]=new Set(o(Array.from(d),a)):ArrayBuffer.isView(d)?c[f]=r(d):c[f]=a(d)}return c}function l(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return o(u,l);if(u instanceof Map)return new Map(o(Array.from(u),l));if(u instanceof Set)return new Set(o(Array.from(u),l));var c={};for(var f in u){var d=u[f];typeof d!="object"||d===null?c[f]=d:d instanceof Date?c[f]=new Date(d):d instanceof Map?c[f]=new Map(o(Array.from(d),l)):d instanceof Set?c[f]=new Set(o(Array.from(d),l)):ArrayBuffer.isView(d)?c[f]=r(d):c[f]=l(d)}return c}}function s(i){var o=[],a=[];return i.proto?c:u;function l(f,d){for(var g=Object.keys(f),m=new Array(g.length),y=0;y<g.length;y++){var E=g[y],_=f[E];if(typeof _!="object"||_===null)m[E]=_;else if(_ instanceof Date)m[E]=new Date(_);else if(ArrayBuffer.isView(_))m[E]=r(_);else{var S=o.indexOf(_);S!==-1?m[E]=a[S]:m[E]=d(_)}}return m}function u(f){if(typeof f!="object"||f===null)return f;if(f instanceof Date)return new Date(f);if(Array.isArray(f))return l(f,u);if(f instanceof Map)return new Map(l(Array.from(f),u));if(f instanceof Set)return new Set(l(Array.from(f),u));var d={};o.push(f),a.push(d);for(var g in f)if(Object.hasOwnProperty.call(f,g)!==!1){var m=f[g];if(typeof m!="object"||m===null)d[g]=m;else if(m instanceof Date)d[g]=new Date(m);else if(m instanceof Map)d[g]=new Map(l(Array.from(m),u));else if(m instanceof Set)d[g]=new Set(l(Array.from(m),u));else if(ArrayBuffer.isView(m))d[g]=r(m);else{var y=o.indexOf(m);y!==-1?d[g]=a[y]:d[g]=u(m)}}return o.pop(),a.pop(),d}function c(f){if(typeof f!="object"||f===null)return f;if(f instanceof Date)return new Date(f);if(Array.isArray(f))return l(f,c);if(f instanceof Map)return new Map(l(Array.from(f),c));if(f instanceof Set)return new Set(l(Array.from(f),c));var d={};o.push(f),a.push(d);for(var g in f){var m=f[g];if(typeof m!="object"||m===null)d[g]=m;else if(m instanceof Date)d[g]=new Date(m);else if(m instanceof Map)d[g]=new Map(l(Array.from(m),c));else if(m instanceof Set)d[g]=new Set(l(Array.from(m),c));else if(ArrayBuffer.isView(m))d[g]=r(m);else{var y=o.indexOf(m);y!==-1?d[g]=a[y]:d[g]=c(m)}}return o.pop(),a.pop(),d}}}),yC=Te((t,e)=>{_e(),ve(),we(),e.exports=bC()()}),wC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0}),t.validateTopics=t.validateTopic=void 0;function e(n){let s=n.split("/");for(let i=0;i<s.length;i++)if(s[i]!=="+"){if(s[i]==="#")return i===s.length-1;if(s[i].indexOf("+")!==-1||s[i].indexOf("#")!==-1)return!1}return!0}t.validateTopic=e;function r(n){if(n.length===0)return"empty_topic_list";for(let s=0;s<n.length;s++)if(!e(n[s]))return n[s];return null}t.validateTopics=r}),Dv=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0});var e=rs(),r={objectMode:!0},n={clean:!0},s=class{constructor(i){this.options=i||{},this.options=Object.assign(Object.assign({},n),i),this._inflights=new Map}put(i,o){return this._inflights.set(i.messageId,i),o&&o(),this}createStream(){let i=new e.Readable(r),o=[],a=!1,l=0;return this._inflights.forEach((u,c)=>{o.push(u)}),i._read=()=>{!a&&l<o.length?i.push(o[l++]):i.push(null)},i.destroy=u=>{if(!a)return a=!0,setTimeout(()=>{i.emit("close")},0),i},i}del(i,o){let a=this._inflights.get(i.messageId);return a?(this._inflights.delete(i.messageId),o(null,a)):o&&o(new Error("missing packet")),this}get(i,o){let a=this._inflights.get(i.messageId);return a?o(null,a):o&&o(new Error("missing packet")),this}close(i){this.options.clean&&(this._inflights=null),i&&i()}};t.default=s}),vC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0});var e=[0,16,128,131,135,144,145,151,153],r=(n,s,i)=>{n.log("handlePublish: packet %o",s),i=typeof i<"u"?i:n.noop;let o=s.topic.toString(),a=s.payload,{qos:l}=s,{messageId:u}=s,{options:c}=n;if(n.options.protocolVersion===5){let f;if(s.properties&&(f=s.properties.topicAlias),typeof f<"u")if(o.length===0)if(f>0&&f<=65535){let d=n.topicAliasRecv.getTopicByAlias(f);if(d)o=d,n.log("handlePublish :: topic complemented by alias. topic: %s - alias: %d",o,f);else{n.log("handlePublish :: unregistered topic alias. alias: %d",f),n.emit("error",new Error("Received unregistered Topic Alias"));return}}else{n.log("handlePublish :: topic alias out of range. alias: %d",f),n.emit("error",new Error("Received Topic Alias is out of range"));return}else if(n.topicAliasRecv.put(o,f))n.log("handlePublish :: registered topic: %s - alias: %d",o,f);else{n.log("handlePublish :: topic alias out of range. alias: %d",f),n.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(n.log("handlePublish: qos %d",l),l){case 2:{c.customHandleAcks(o,a,s,(f,d)=>{if(typeof f=="number"&&(d=f,f=null),f)return n.emit("error",f);if(e.indexOf(d)===-1)return n.emit("error",new Error("Wrong reason code for pubrec"));d?n._sendPacket({cmd:"pubrec",messageId:u,reasonCode:d},i):n.incomingStore.put(s,()=>{n._sendPacket({cmd:"pubrec",messageId:u},i)})});break}case 1:{c.customHandleAcks(o,a,s,(f,d)=>{if(typeof f=="number"&&(d=f,f=null),f)return n.emit("error",f);if(e.indexOf(d)===-1)return n.emit("error",new Error("Wrong reason code for puback"));d||n.emit("message",o,a,s),n.handleMessage(s,g=>{if(g)return i&&i(g);n._sendPacket({cmd:"puback",messageId:u,reasonCode:d},i)})});break}case 0:n.emit("message",o,a,s),n.handleMessage(s,i);break;default:n.log("handlePublish: unknown QoS. Doing nothing.");break}};t.default=r}),_C=Te((t,e)=>{e.exports={version:"5.7.2"}}),ha=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0}),t.MQTTJS_VERSION=t.nextTick=t.applyMixin=t.ErrorWithReasonCode=void 0;var e=class Bv extends Error{constructor(s,i){super(s),this.code=i,Object.setPrototypeOf(this,Bv.prototype),Object.getPrototypeOf(this).name="ErrorWithReasonCode"}};t.ErrorWithReasonCode=e;function r(n,s,i=!1){var o;let a=[s];for(;;){let l=a[0],u=Object.getPrototypeOf(l);if(u!=null&&u.prototype)a.unshift(u);else break}for(let l of a)for(let u of Object.getOwnPropertyNames(l.prototype))(i||u!=="constructor")&&Object.defineProperty(n.prototype,u,(o=Object.getOwnPropertyDescriptor(l.prototype,u))!==null&&o!==void 0?o:Object.create(null))}t.applyMixin=r,t.nextTick=typeof(ze==null?void 0:ze.nextTick)=="function"?ze.nextTick:n=>{setTimeout(n,0)},t.MQTTJS_VERSION=_C().version}),Ou=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0}),t.ReasonCodes=void 0,t.ReasonCodes={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};var e=(r,n)=>{let{messageId:s}=n,i=n.cmd,o=null,a=r.outgoing[s]?r.outgoing[s].cb:null,l=null;if(!a){r.log("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(r.log("_handleAck :: packet type",i),i){case"pubcomp":case"puback":{let u=n.reasonCode;u&&u>0&&u!==16?(l=new Error(`Publish error: ${t.ReasonCodes[u]}`),l.code=u,r._removeOutgoingAndStoreMessage(s,()=>{a(l,n)})):r._removeOutgoingAndStoreMessage(s,a);break}case"pubrec":{o={cmd:"pubrel",qos:2,messageId:s};let u=n.reasonCode;u&&u>0&&u!==16?(l=new Error(`Publish error: ${t.ReasonCodes[u]}`),l.code=u,r._removeOutgoingAndStoreMessage(s,()=>{a(l,n)})):r._sendPacket(o);break}case"suback":{delete r.outgoing[s],r.messageIdProvider.deallocate(s);let u=n.granted;for(let c=0;c<u.length;c++){let f=u[c];if(f&128){l=new Error(`Subscribe error: ${t.ReasonCodes[f]}`),l.code=f;let d=r.messageIdToTopic[s];d&&d.forEach(g=>{delete r._resubscribeTopics[g]})}}delete r.messageIdToTopic[s],r._invokeStoreProcessingQueue(),a(l,n);break}case"unsuback":{delete r.outgoing[s],r.messageIdProvider.deallocate(s),r._invokeStoreProcessingQueue(),a(null);break}default:r.emit("error",new Error("unrecognized packet type"))}r.disconnecting&&Object.keys(r.outgoing).length===0&&r.emit("outgoingEmpty")};t.default=e}),EC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0});var e=ha(),r=Ou(),n=(s,i)=>{let{options:o}=s,a=o.protocolVersion,l=a===5?i.reasonCode:i.returnCode;if(a!==5){let u=new e.ErrorWithReasonCode(`Protocol error: Auth packets are only supported in MQTT 5. Your version:${a}`,l);s.emit("error",u);return}s.handleAuth(i,(u,c)=>{if(u){s.emit("error",u);return}if(l===24)s.reconnecting=!1,s._sendPacket(c);else{let f=new e.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[l]}`,l);s.emit("error",f)}})};t.default=n}),SC=Te(t=>{var g,m,y,E,_,S,v,A,k,x,D,N,B,q,K,C,M,L,H,G,z,F,ne,ce,re,R,nh,de,ge,pe,X,$v,ie,be,he,$n,Fn,ih,hl,pl,et,sh,Ro,V;_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0}),t.LRUCache=void 0;var e=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,r=new Set,n=typeof ze=="object"&&ze?ze:{},s=(te,$,J,ae)=>{typeof n.emitWarning=="function"?n.emitWarning(te,$,J,ae):console.error(`[${J}] ${$}: ${te}`)},i=globalThis.AbortController,o=globalThis.AbortSignal;if(typeof i>"u"){o=class{constructor(){nt(this,"onabort");nt(this,"_onabort",[]);nt(this,"reason");nt(this,"aborted",!1)}addEventListener(J,ae){this._onabort.push(ae)}},i=class{constructor(){nt(this,"signal",new o);$()}abort(J){var ae,me;if(!this.signal.aborted){this.signal.reason=J,this.signal.aborted=!0;for(let w of this.signal._onabort)w(J);(me=(ae=this.signal).onabort)==null||me.call(ae,J)}}};let te=((g=n.env)==null?void 0:g.LRU_CACHE_IGNORE_AC_WARNING)!=="1",$=()=>{te&&(te=!1,s("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",$))}}var a=te=>!r.has(te),l=te=>te&&te===Math.floor(te)&&te>0&&isFinite(te),u=te=>l(te)?te<=Math.pow(2,8)?Uint8Array:te<=Math.pow(2,16)?Uint16Array:te<=Math.pow(2,32)?Uint32Array:te<=Number.MAX_SAFE_INTEGER?c:null:null,c=class extends Array{constructor(te){super(te),this.fill(0)}},f=(m=class{constructor($,J){nt(this,"heap");nt(this,"length");if(!oe(m,y))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new J($),this.length=0}static create($){let J=u($);if(!J)return[];Ne(m,y,!0);let ae=new m($,J);return Ne(m,y,!1),ae}push($){this.heap[this.length++]=$}pop(){return this.heap[--this.length]}},y=new WeakMap,je(m,y,!1),m),d=(V=class{constructor($){je(this,R);je(this,E);je(this,_);je(this,S);je(this,v);je(this,A);nt(this,"ttl");nt(this,"ttlResolution");nt(this,"ttlAutopurge");nt(this,"updateAgeOnGet");nt(this,"updateAgeOnHas");nt(this,"allowStale");nt(this,"noDisposeOnSet");nt(this,"noUpdateTTL");nt(this,"maxEntrySize");nt(this,"sizeCalculation");nt(this,"noDeleteOnFetchRejection");nt(this,"noDeleteOnStaleGet");nt(this,"allowStaleOnFetchAbort");nt(this,"allowStaleOnFetchRejection");nt(this,"ignoreFetchAbort");je(this,k);je(this,x);je(this,D);je(this,N);je(this,B);je(this,q);je(this,K);je(this,C);je(this,M);je(this,L);je(this,H);je(this,G);je(this,z);je(this,F);je(this,ne);je(this,ce);je(this,re);je(this,de,()=>{});je(this,ge,()=>{});je(this,pe,()=>{});je(this,X,()=>!1);je(this,ie,$=>{});je(this,be,($,J,ae)=>{});je(this,he,($,J,ae,me)=>{if(ae||me)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});let{max:J=0,ttl:ae,ttlResolution:me=1,ttlAutopurge:w,updateAgeOnGet:p,updateAgeOnHas:h,allowStale:b,dispose:T,disposeAfter:U,noDisposeOnSet:ee,noUpdateTTL:ye,maxSize:Ae=0,maxEntrySize:Re=0,sizeCalculation:xe,fetchMethod:Oe,noDeleteOnFetchRejection:Me,noDeleteOnStaleGet:Ve,allowStaleOnFetchRejection:ct,allowStaleOnFetchAbort:Ze,ignoreFetchAbort:lt}=$;if(J!==0&&!l(J))throw new TypeError("max option must be a nonnegative integer");let yt=J?u(J):Array;if(!yt)throw new Error("invalid max value: "+J);if(Ne(this,E,J),Ne(this,_,Ae),this.maxEntrySize=Re||oe(this,_),this.sizeCalculation=xe,this.sizeCalculation){if(!oe(this,_)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(Oe!==void 0&&typeof Oe!="function")throw new TypeError("fetchMethod must be a function if specified");if(Ne(this,A,Oe),Ne(this,ce,!!Oe),Ne(this,D,new Map),Ne(this,N,new Array(J).fill(void 0)),Ne(this,B,new Array(J).fill(void 0)),Ne(this,q,new yt(J)),Ne(this,K,new yt(J)),Ne(this,C,0),Ne(this,M,0),Ne(this,L,f.create(J)),Ne(this,k,0),Ne(this,x,0),typeof T=="function"&&Ne(this,S,T),typeof U=="function"?(Ne(this,v,U),Ne(this,H,[])):(Ne(this,v,void 0),Ne(this,H,void 0)),Ne(this,ne,!!oe(this,S)),Ne(this,re,!!oe(this,v)),this.noDisposeOnSet=!!ee,this.noUpdateTTL=!!ye,this.noDeleteOnFetchRejection=!!Me,this.allowStaleOnFetchRejection=!!ct,this.allowStaleOnFetchAbort=!!Ze,this.ignoreFetchAbort=!!lt,this.maxEntrySize!==0){if(oe(this,_)!==0&&!l(oe(this,_)))throw new TypeError("maxSize must be a positive integer if specified");if(!l(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");ke(this,R,$v).call(this)}if(this.allowStale=!!b,this.noDeleteOnStaleGet=!!Ve,this.updateAgeOnGet=!!p,this.updateAgeOnHas=!!h,this.ttlResolution=l(me)||me===0?me:1,this.ttlAutopurge=!!w,this.ttl=ae||0,this.ttl){if(!l(this.ttl))throw new TypeError("ttl must be a positive integer if specified");ke(this,R,nh).call(this)}if(oe(this,E)===0&&this.ttl===0&&oe(this,_)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!oe(this,E)&&!oe(this,_)){let ft="LRU_CACHE_UNBOUNDED";a(ft)&&(r.add(ft),s("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",ft,V))}}static unsafeExposeInternals($){return{starts:oe($,z),ttls:oe($,F),sizes:oe($,G),keyMap:oe($,D),keyList:oe($,N),valList:oe($,B),next:oe($,q),prev:oe($,K),get head(){return oe($,C)},get tail(){return oe($,M)},free:oe($,L),isBackgroundFetch:J=>{var ae;return ke(ae=$,R,et).call(ae,J)},backgroundFetch:(J,ae,me,w)=>{var p;return ke(p=$,R,pl).call(p,J,ae,me,w)},moveToTail:J=>{var ae;return ke(ae=$,R,Ro).call(ae,J)},indexes:J=>{var ae;return ke(ae=$,R,$n).call(ae,J)},rindexes:J=>{var ae;return ke(ae=$,R,Fn).call(ae,J)},isStale:J=>{var ae;return oe(ae=$,X).call(ae,J)}}}get max(){return oe(this,E)}get maxSize(){return oe(this,_)}get calculatedSize(){return oe(this,x)}get size(){return oe(this,k)}get fetchMethod(){return oe(this,A)}get dispose(){return oe(this,S)}get disposeAfter(){return oe(this,v)}getRemainingTTL($){return oe(this,D).has($)?1/0:0}*entries(){for(let $ of ke(this,R,$n).call(this))oe(this,B)[$]!==void 0&&oe(this,N)[$]!==void 0&&!ke(this,R,et).call(this,oe(this,B)[$])&&(yield[oe(this,N)[$],oe(this,B)[$]])}*rentries(){for(let $ of ke(this,R,Fn).call(this))oe(this,B)[$]!==void 0&&oe(this,N)[$]!==void 0&&!ke(this,R,et).call(this,oe(this,B)[$])&&(yield[oe(this,N)[$],oe(this,B)[$]])}*keys(){for(let $ of ke(this,R,$n).call(this)){let J=oe(this,N)[$];J!==void 0&&!ke(this,R,et).call(this,oe(this,B)[$])&&(yield J)}}*rkeys(){for(let $ of ke(this,R,Fn).call(this)){let J=oe(this,N)[$];J!==void 0&&!ke(this,R,et).call(this,oe(this,B)[$])&&(yield J)}}*values(){for(let $ of ke(this,R,$n).call(this))oe(this,B)[$]!==void 0&&!ke(this,R,et).call(this,oe(this,B)[$])&&(yield oe(this,B)[$])}*rvalues(){for(let $ of ke(this,R,Fn).call(this))oe(this,B)[$]!==void 0&&!ke(this,R,et).call(this,oe(this,B)[$])&&(yield oe(this,B)[$])}[Symbol.iterator](){return this.entries()}find($,J={}){for(let ae of ke(this,R,$n).call(this)){let me=oe(this,B)[ae],w=ke(this,R,et).call(this,me)?me.__staleWhileFetching:me;if(w!==void 0&&$(w,oe(this,N)[ae],this))return this.get(oe(this,N)[ae],J)}}forEach($,J=this){for(let ae of ke(this,R,$n).call(this)){let me=oe(this,B)[ae],w=ke(this,R,et).call(this,me)?me.__staleWhileFetching:me;w!==void 0&&$.call(J,w,oe(this,N)[ae],this)}}rforEach($,J=this){for(let ae of ke(this,R,Fn).call(this)){let me=oe(this,B)[ae],w=ke(this,R,et).call(this,me)?me.__staleWhileFetching:me;w!==void 0&&$.call(J,w,oe(this,N)[ae],this)}}purgeStale(){let $=!1;for(let J of ke(this,R,Fn).call(this,{allowStale:!0}))oe(this,X).call(this,J)&&(this.delete(oe(this,N)[J]),$=!0);return $}dump(){let $=[];for(let J of ke(this,R,$n).call(this,{allowStale:!0})){let ae=oe(this,N)[J],me=oe(this,B)[J],w=ke(this,R,et).call(this,me)?me.__staleWhileFetching:me;if(w===void 0||ae===void 0)continue;let p={value:w};if(oe(this,F)&&oe(this,z)){p.ttl=oe(this,F)[J];let h=e.now()-oe(this,z)[J];p.start=Math.floor(Date.now()-h)}oe(this,G)&&(p.size=oe(this,G)[J]),$.unshift([ae,p])}return $}load($){this.clear();for(let[J,ae]of $){if(ae.start){let me=Date.now()-ae.start;ae.start=e.now()-me}this.set(J,ae.value,ae)}}set($,J,ae={}){var ye,Ae,Re,xe,Oe;if(J===void 0)return this.delete($),this;let{ttl:me=this.ttl,start:w,noDisposeOnSet:p=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:b}=ae,{noUpdateTTL:T=this.noUpdateTTL}=ae,U=oe(this,he).call(this,$,J,ae.size||0,h);if(this.maxEntrySize&&U>this.maxEntrySize)return b&&(b.set="miss",b.maxEntrySizeExceeded=!0),this.delete($),this;let ee=oe(this,k)===0?void 0:oe(this,D).get($);if(ee===void 0)ee=oe(this,k)===0?oe(this,M):oe(this,L).length!==0?oe(this,L).pop():oe(this,k)===oe(this,E)?ke(this,R,hl).call(this,!1):oe(this,k),oe(this,N)[ee]=$,oe(this,B)[ee]=J,oe(this,D).set($,ee),oe(this,q)[oe(this,M)]=ee,oe(this,K)[ee]=oe(this,M),Ne(this,M,ee),Ia(this,k)._++,oe(this,be).call(this,ee,U,b),b&&(b.set="add"),T=!1;else{ke(this,R,Ro).call(this,ee);let Me=oe(this,B)[ee];if(J!==Me){if(oe(this,ce)&&ke(this,R,et).call(this,Me)){Me.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:Ve}=Me;Ve!==void 0&&!p&&(oe(this,ne)&&((ye=oe(this,S))==null||ye.call(this,Ve,$,"set")),oe(this,re)&&((Ae=oe(this,H))==null||Ae.push([Ve,$,"set"])))}else p||(oe(this,ne)&&((Re=oe(this,S))==null||Re.call(this,Me,$,"set")),oe(this,re)&&((xe=oe(this,H))==null||xe.push([Me,$,"set"])));if(oe(this,ie).call(this,ee),oe(this,be).call(this,ee,U,b),oe(this,B)[ee]=J,b){b.set="replace";let Ve=Me&&ke(this,R,et).call(this,Me)?Me.__staleWhileFetching:Me;Ve!==void 0&&(b.oldValue=Ve)}}else b&&(b.set="update")}if(me!==0&&!oe(this,F)&&ke(this,R,nh).call(this),oe(this,F)&&(T||oe(this,pe).call(this,ee,me,w),b&&oe(this,ge).call(this,b,ee)),!p&&oe(this,re)&&oe(this,H)){let Me=oe(this,H),Ve;for(;Ve=Me==null?void 0:Me.shift();)(Oe=oe(this,v))==null||Oe.call(this,...Ve)}return this}pop(){var $;try{for(;oe(this,k);){let J=oe(this,B)[oe(this,C)];if(ke(this,R,hl).call(this,!0),ke(this,R,et).call(this,J)){if(J.__staleWhileFetching)return J.__staleWhileFetching}else if(J!==void 0)return J}}finally{if(oe(this,re)&&oe(this,H)){let J=oe(this,H),ae;for(;ae=J==null?void 0:J.shift();)($=oe(this,v))==null||$.call(this,...ae)}}}has($,J={}){let{updateAgeOnHas:ae=this.updateAgeOnHas,status:me}=J,w=oe(this,D).get($);if(w!==void 0){let p=oe(this,B)[w];if(ke(this,R,et).call(this,p)&&p.__staleWhileFetching===void 0)return!1;if(oe(this,X).call(this,w))me&&(me.has="stale",oe(this,ge).call(this,me,w));else return ae&&oe(this,de).call(this,w),me&&(me.has="hit",oe(this,ge).call(this,me,w)),!0}else me&&(me.has="miss");return!1}peek($,J={}){let{allowStale:ae=this.allowStale}=J,me=oe(this,D).get($);if(me!==void 0&&(ae||!oe(this,X).call(this,me))){let w=oe(this,B)[me];return ke(this,R,et).call(this,w)?w.__staleWhileFetching:w}}async fetch($,J={}){let{allowStale:ae=this.allowStale,updateAgeOnGet:me=this.updateAgeOnGet,noDeleteOnStaleGet:w=this.noDeleteOnStaleGet,ttl:p=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:b=0,sizeCalculation:T=this.sizeCalculation,noUpdateTTL:U=this.noUpdateTTL,noDeleteOnFetchRejection:ee=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:ye=this.allowStaleOnFetchRejection,ignoreFetchAbort:Ae=this.ignoreFetchAbort,allowStaleOnFetchAbort:Re=this.allowStaleOnFetchAbort,context:xe,forceRefresh:Oe=!1,status:Me,signal:Ve}=J;if(!oe(this,ce))return Me&&(Me.fetch="get"),this.get($,{allowStale:ae,updateAgeOnGet:me,noDeleteOnStaleGet:w,status:Me});let ct={allowStale:ae,updateAgeOnGet:me,noDeleteOnStaleGet:w,ttl:p,noDisposeOnSet:h,size:b,sizeCalculation:T,noUpdateTTL:U,noDeleteOnFetchRejection:ee,allowStaleOnFetchRejection:ye,allowStaleOnFetchAbort:Re,ignoreFetchAbort:Ae,status:Me,signal:Ve},Ze=oe(this,D).get($);if(Ze===void 0){Me&&(Me.fetch="miss");let lt=ke(this,R,pl).call(this,$,Ze,ct,xe);return lt.__returned=lt}else{let lt=oe(this,B)[Ze];if(ke(this,R,et).call(this,lt)){let fo=ae&&lt.__staleWhileFetching!==void 0;return Me&&(Me.fetch="inflight",fo&&(Me.returnedStale=!0)),fo?lt.__staleWhileFetching:lt.__returned=lt}let yt=oe(this,X).call(this,Ze);if(!Oe&&!yt)return Me&&(Me.fetch="hit"),ke(this,R,Ro).call(this,Ze),me&&oe(this,de).call(this,Ze),Me&&oe(this,ge).call(this,Me,Ze),lt;let ft=ke(this,R,pl).call(this,$,Ze,ct,xe),hs=ft.__staleWhileFetching!==void 0&&ae;return Me&&(Me.fetch=yt?"stale":"refresh",hs&&yt&&(Me.returnedStale=!0)),hs?ft.__staleWhileFetching:ft.__returned=ft}}get($,J={}){let{allowStale:ae=this.allowStale,updateAgeOnGet:me=this.updateAgeOnGet,noDeleteOnStaleGet:w=this.noDeleteOnStaleGet,status:p}=J,h=oe(this,D).get($);if(h!==void 0){let b=oe(this,B)[h],T=ke(this,R,et).call(this,b);return p&&oe(this,ge).call(this,p,h),oe(this,X).call(this,h)?(p&&(p.get="stale"),T?(p&&ae&&b.__staleWhileFetching!==void 0&&(p.returnedStale=!0),ae?b.__staleWhileFetching:void 0):(w||this.delete($),p&&ae&&(p.returnedStale=!0),ae?b:void 0)):(p&&(p.get="hit"),T?b.__staleWhileFetching:(ke(this,R,Ro).call(this,h),me&&oe(this,de).call(this,h),b))}else p&&(p.get="miss")}delete($){var ae,me,w,p;let J=!1;if(oe(this,k)!==0){let h=oe(this,D).get($);if(h!==void 0)if(J=!0,oe(this,k)===1)this.clear();else{oe(this,ie).call(this,h);let b=oe(this,B)[h];ke(this,R,et).call(this,b)?b.__abortController.abort(new Error("deleted")):(oe(this,ne)||oe(this,re))&&(oe(this,ne)&&((ae=oe(this,S))==null||ae.call(this,b,$,"delete")),oe(this,re)&&((me=oe(this,H))==null||me.push([b,$,"delete"]))),oe(this,D).delete($),oe(this,N)[h]=void 0,oe(this,B)[h]=void 0,h===oe(this,M)?Ne(this,M,oe(this,K)[h]):h===oe(this,C)?Ne(this,C,oe(this,q)[h]):(oe(this,q)[oe(this,K)[h]]=oe(this,q)[h],oe(this,K)[oe(this,q)[h]]=oe(this,K)[h]),Ia(this,k)._--,oe(this,L).push(h)}}if(oe(this,re)&&((w=oe(this,H))!=null&&w.length)){let h=oe(this,H),b;for(;b=h==null?void 0:h.shift();)(p=oe(this,v))==null||p.call(this,...b)}return J}clear(){var $,J,ae;for(let me of ke(this,R,Fn).call(this,{allowStale:!0})){let w=oe(this,B)[me];if(ke(this,R,et).call(this,w))w.__abortController.abort(new Error("deleted"));else{let p=oe(this,N)[me];oe(this,ne)&&(($=oe(this,S))==null||$.call(this,w,p,"delete")),oe(this,re)&&((J=oe(this,H))==null||J.push([w,p,"delete"]))}}if(oe(this,D).clear(),oe(this,B).fill(void 0),oe(this,N).fill(void 0),oe(this,F)&&oe(this,z)&&(oe(this,F).fill(0),oe(this,z).fill(0)),oe(this,G)&&oe(this,G).fill(0),Ne(this,C,0),Ne(this,M,0),oe(this,L).length=0,Ne(this,x,0),Ne(this,k,0),oe(this,re)&&oe(this,H)){let me=oe(this,H),w;for(;w=me==null?void 0:me.shift();)(ae=oe(this,v))==null||ae.call(this,...w)}}},E=new WeakMap,_=new WeakMap,S=new WeakMap,v=new WeakMap,A=new WeakMap,k=new WeakMap,x=new WeakMap,D=new WeakMap,N=new WeakMap,B=new WeakMap,q=new WeakMap,K=new WeakMap,C=new WeakMap,M=new WeakMap,L=new WeakMap,H=new WeakMap,G=new WeakMap,z=new WeakMap,F=new WeakMap,ne=new WeakMap,ce=new WeakMap,re=new WeakMap,R=new WeakSet,nh=function(){let $=new c(oe(this,E)),J=new c(oe(this,E));Ne(this,F,$),Ne(this,z,J),Ne(this,pe,(w,p,h=e.now())=>{if(J[w]=p!==0?h:0,$[w]=p,p!==0&&this.ttlAutopurge){let b=setTimeout(()=>{oe(this,X).call(this,w)&&this.delete(oe(this,N)[w])},p+1);b.unref&&b.unref()}}),Ne(this,de,w=>{J[w]=$[w]!==0?e.now():0}),Ne(this,ge,(w,p)=>{if($[p]){let h=$[p],b=J[p];w.ttl=h,w.start=b,w.now=ae||me();let T=w.now-b;w.remainingTTL=h-T}});let ae=0,me=()=>{let w=e.now();if(this.ttlResolution>0){ae=w;let p=setTimeout(()=>ae=0,this.ttlResolution);p.unref&&p.unref()}return w};this.getRemainingTTL=w=>{let p=oe(this,D).get(w);if(p===void 0)return 0;let h=$[p],b=J[p];if(h===0||b===0)return 1/0;let T=(ae||me())-b;return h-T},Ne(this,X,w=>$[w]!==0&&J[w]!==0&&(ae||me())-J[w]>$[w])},de=new WeakMap,ge=new WeakMap,pe=new WeakMap,X=new WeakMap,$v=function(){let $=new c(oe(this,E));Ne(this,x,0),Ne(this,G,$),Ne(this,ie,J=>{Ne(this,x,oe(this,x)-$[J]),$[J]=0}),Ne(this,he,(J,ae,me,w)=>{if(ke(this,R,et).call(this,ae))return 0;if(!l(me))if(w){if(typeof w!="function")throw new TypeError("sizeCalculation must be a function");if(me=w(ae,J),!l(me))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return me}),Ne(this,be,(J,ae,me)=>{if($[J]=ae,oe(this,_)){let w=oe(this,_)-$[J];for(;oe(this,x)>w;)ke(this,R,hl).call(this,!0)}Ne(this,x,oe(this,x)+$[J]),me&&(me.entrySize=ae,me.totalCalculatedSize=oe(this,x))})},ie=new WeakMap,be=new WeakMap,he=new WeakMap,$n=function*({allowStale:$=this.allowStale}={}){if(oe(this,k))for(let J=oe(this,M);!(!ke(this,R,ih).call(this,J)||(($||!oe(this,X).call(this,J))&&(yield J),J===oe(this,C)));)J=oe(this,K)[J]},Fn=function*({allowStale:$=this.allowStale}={}){if(oe(this,k))for(let J=oe(this,C);!(!ke(this,R,ih).call(this,J)||(($||!oe(this,X).call(this,J))&&(yield J),J===oe(this,M)));)J=oe(this,q)[J]},ih=function($){return $!==void 0&&oe(this,D).get(oe(this,N)[$])===$},hl=function($){var w,p;let J=oe(this,C),ae=oe(this,N)[J],me=oe(this,B)[J];return oe(this,ce)&&ke(this,R,et).call(this,me)?me.__abortController.abort(new Error("evicted")):(oe(this,ne)||oe(this,re))&&(oe(this,ne)&&((w=oe(this,S))==null||w.call(this,me,ae,"evict")),oe(this,re)&&((p=oe(this,H))==null||p.push([me,ae,"evict"]))),oe(this,ie).call(this,J),$&&(oe(this,N)[J]=void 0,oe(this,B)[J]=void 0,oe(this,L).push(J)),oe(this,k)===1?(Ne(this,C,Ne(this,M,0)),oe(this,L).length=0):Ne(this,C,oe(this,q)[J]),oe(this,D).delete(ae),Ia(this,k)._--,J},pl=function($,J,ae,me){let w=J===void 0?void 0:oe(this,B)[J];if(ke(this,R,et).call(this,w))return w;let p=new i,{signal:h}=ae;h==null||h.addEventListener("abort",()=>p.abort(h.reason),{signal:p.signal});let b={signal:p.signal,options:ae,context:me},T=(xe,Oe=!1)=>{let{aborted:Me}=p.signal,Ve=ae.ignoreFetchAbort&&xe!==void 0;if(ae.status&&(Me&&!Oe?(ae.status.fetchAborted=!0,ae.status.fetchError=p.signal.reason,Ve&&(ae.status.fetchAbortIgnored=!0)):ae.status.fetchResolved=!0),Me&&!Ve&&!Oe)return ee(p.signal.reason);let ct=Ae;return oe(this,B)[J]===Ae&&(xe===void 0?ct.__staleWhileFetching?oe(this,B)[J]=ct.__staleWhileFetching:this.delete($):(ae.status&&(ae.status.fetchUpdated=!0),this.set($,xe,b.options))),xe},U=xe=>(ae.status&&(ae.status.fetchRejected=!0,ae.status.fetchError=xe),ee(xe)),ee=xe=>{let{aborted:Oe}=p.signal,Me=Oe&&ae.allowStaleOnFetchAbort,Ve=Me||ae.allowStaleOnFetchRejection,ct=Ve||ae.noDeleteOnFetchRejection,Ze=Ae;if(oe(this,B)[J]===Ae&&(!ct||Ze.__staleWhileFetching===void 0?this.delete($):Me||(oe(this,B)[J]=Ze.__staleWhileFetching)),Ve)return ae.status&&Ze.__staleWhileFetching!==void 0&&(ae.status.returnedStale=!0),Ze.__staleWhileFetching;if(Ze.__returned===Ze)throw xe},ye=(xe,Oe)=>{var Ve;let Me=(Ve=oe(this,A))==null?void 0:Ve.call(this,$,w,b);Me&&Me instanceof Promise&&Me.then(ct=>xe(ct===void 0?void 0:ct),Oe),p.signal.addEventListener("abort",()=>{(!ae.ignoreFetchAbort||ae.allowStaleOnFetchAbort)&&(xe(void 0),ae.allowStaleOnFetchAbort&&(xe=ct=>T(ct,!0)))})};ae.status&&(ae.status.fetchDispatched=!0);let Ae=new Promise(ye).then(T,U),Re=Object.assign(Ae,{__abortController:p,__staleWhileFetching:w,__returned:void 0});return J===void 0?(this.set($,Re,{...b.options,status:void 0}),J=oe(this,D).get($)):oe(this,B)[J]=Re,Re},et=function($){if(!oe(this,ce))return!1;let J=$;return!!J&&J instanceof Promise&&J.hasOwnProperty("__staleWhileFetching")&&J.__abortController instanceof i},sh=function($,J){oe(this,K)[J]=$,oe(this,q)[$]=J},Ro=function($){$!==oe(this,M)&&($===oe(this,C)?Ne(this,C,oe(this,q)[$]):ke(this,R,sh).call(this,oe(this,K)[$],oe(this,q)[$]),ke(this,R,sh).call(this,oe(this,M),$),Ne(this,M,$))},V);t.LRUCache=d}),On=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.ContainerIterator=t.Container=t.Base=void 0;var e=class{constructor(s=0){this.iteratorType=s}equals(s){return this.o===s.o}};t.ContainerIterator=e;var r=class{constructor(){this.i=0}get length(){return this.i}size(){return this.i}empty(){return this.i===0}};t.Base=r;var n=class extends r{};t.Container=n}),TC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=On(),r=class extends e.Base{constructor(s=[]){super(),this.S=[];let i=this;s.forEach(function(o){i.push(o)})}clear(){this.i=0,this.S=[]}push(s){return this.S.push(s),this.i+=1,this.i}pop(){if(this.i!==0)return this.i-=1,this.S.pop()}top(){return this.S[this.i-1]}},n=r;t.default=n}),xC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=On(),r=class extends e.Base{constructor(s=[]){super(),this.j=0,this.q=[];let i=this;s.forEach(function(o){i.push(o)})}clear(){this.q=[],this.i=this.j=0}push(s){let i=this.q.length;if(this.j/i>.5&&this.j+this.i>=i&&i>4096){let o=this.i;for(let a=0;a<o;++a)this.q[a]=this.q[this.j+a];this.j=0,this.q[this.i]=s}else this.q[this.j+this.i]=s;return++this.i}pop(){if(this.i===0)return;let s=this.q[this.j++];return this.i-=1,s}front(){if(this.i!==0)return this.q[this.j]}},n=r;t.default=n}),AC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=On(),r=class extends e.Base{constructor(s=[],i=function(a,l){return a>l?-1:a<l?1:0},o=!0){if(super(),this.v=i,Array.isArray(s))this.C=o?[...s]:s;else{this.C=[];let l=this;s.forEach(function(u){l.C.push(u)})}this.i=this.C.length;let a=this.i>>1;for(let l=this.i-1>>1;l>=0;--l)this.k(l,a)}m(s){let i=this.C[s];for(;s>0;){let o=s-1>>1,a=this.C[o];if(this.v(a,i)<=0)break;this.C[s]=a,s=o}this.C[s]=i}k(s,i){let o=this.C[s];for(;s<i;){let a=s<<1|1,l=a+1,u=this.C[a];if(l<this.i&&this.v(u,this.C[l])>0&&(a=l,u=this.C[l]),this.v(u,o)>=0)break;this.C[s]=u,s=a}this.C[s]=o}clear(){this.i=0,this.C.length=0}push(s){this.C.push(s),this.m(this.i),this.i+=1}pop(){if(this.i===0)return;let s=this.C[0],i=this.C.pop();return this.i-=1,this.i&&(this.C[0]=i,this.k(0,this.i>>1)),s}top(){return this.C[0]}find(s){return this.C.indexOf(s)>=0}remove(s){let i=this.C.indexOf(s);return i<0?!1:(i===0?this.pop():i===this.i-1?(this.C.pop(),this.i-=1):(this.C.splice(i,1,this.C.pop()),this.i-=1,this.m(i),this.k(i,this.i>>1)),!0)}updateItem(s){let i=this.C.indexOf(s);return i<0?!1:(this.m(i),this.k(i,this.i>>1),!0)}toArray(){return[...this.C]}},n=r;t.default=n}),Dp=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=On(),r=class extends e.Container{},n=r;t.default=n}),Rn=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.throwIteratorAccessError=e;function e(){throw new RangeError("Iterator access denied!")}}),Fv=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.RandomIterator=void 0;var e=On(),r=Rn(),n=class extends e.ContainerIterator{constructor(s,i){super(i),this.o=s,this.iteratorType===0?(this.pre=function(){return this.o===0&&(0,r.throwIteratorAccessError)(),this.o-=1,this},this.next=function(){return this.o===this.container.size()&&(0,r.throwIteratorAccessError)(),this.o+=1,this}):(this.pre=function(){return this.o===this.container.size()-1&&(0,r.throwIteratorAccessError)(),this.o+=1,this},this.next=function(){return this.o===-1&&(0,r.throwIteratorAccessError)(),this.o-=1,this})}get pointer(){return this.container.getElementByPos(this.o)}set pointer(s){this.container.setElementByPos(this.o,s)}};t.RandomIterator=n}),CC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=n(Dp()),r=Fv();function n(a){return a&&a.t?a:{default:a}}var s=class Uv extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new Uv(this.o,this.container,this.iteratorType)}},i=class extends e.default{constructor(a=[],l=!0){if(super(),Array.isArray(a))this.J=l?[...a]:a,this.i=a.length;else{this.J=[];let u=this;a.forEach(function(c){u.pushBack(c)})}}clear(){this.i=0,this.J.length=0}begin(){return new s(0,this)}end(){return new s(this.i,this)}rBegin(){return new s(this.i-1,this,1)}rEnd(){return new s(-1,this,1)}front(){return this.J[0]}back(){return this.J[this.i-1]}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J[a]}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J.splice(a,1),this.i-=1,this.i}eraseElementByValue(a){let l=0;for(let u=0;u<this.i;++u)this.J[u]!==a&&(this.J[l++]=this.J[u]);return this.i=this.J.length=l,this.i}eraseElementByIterator(a){let l=a.o;return a=a.next(),this.eraseElementByPos(l),a}pushBack(a){return this.J.push(a),this.i+=1,this.i}popBack(){if(this.i!==0)return this.i-=1,this.J.pop()}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;this.J[a]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;return this.J.splice(a,0,...new Array(u).fill(l)),this.i+=u,this.i}find(a){for(let l=0;l<this.i;++l)if(this.J[l]===a)return new s(l,this);return this.end()}reverse(){this.J.reverse()}unique(){let a=1;for(let l=1;l<this.i;++l)this.J[l]!==this.J[l-1]&&(this.J[a++]=this.J[l]);return this.i=this.J.length=a,this.i}sort(a){this.J.sort(a)}forEach(a){for(let l=0;l<this.i;++l)a(this.J[l],l,this)}[Symbol.iterator](){return(function*(){yield*this.J}).bind(this)()}},o=i;t.default=o}),IC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=s(Dp()),r=On(),n=Rn();function s(l){return l&&l.t?l:{default:l}}var i=class jv extends r.ContainerIterator{constructor(u,c,f,d){super(d),this.o=u,this.h=c,this.container=f,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l}set pointer(u){this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l=u}copy(){return new jv(this.o,this.h,this.container,this.iteratorType)}},o=class extends e.default{constructor(l=[]){super(),this.h={},this.p=this._=this.h.L=this.h.B=this.h;let u=this;l.forEach(function(c){u.pushBack(c)})}V(l){let{L:u,B:c}=l;u.B=c,c.L=u,l===this.p&&(this.p=c),l===this._&&(this._=u),this.i-=1}G(l,u){let c=u.B,f={l,L:u,B:c};u.B=f,c.L=f,u===this.h&&(this.p=f),c===this.h&&(this._=f),this.i+=1}clear(){this.i=0,this.p=this._=this.h.L=this.h.B=this.h}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.p.l}back(){return this._.l}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return u.l}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return this.V(u),this.i}eraseElementByValue(l){let u=this.p;for(;u!==this.h;)u.l===l&&this.V(u),u=u.B;return this.i}eraseElementByIterator(l){let u=l.o;return u===this.h&&(0,n.throwIteratorAccessError)(),l=l.next(),this.V(u),l}pushBack(l){return this.G(l,this._),this.i}popBack(){if(this.i===0)return;let l=this._.l;return this.V(this._),l}pushFront(l){return this.G(l,this.h),this.i}popFront(){if(this.i===0)return;let l=this.p.l;return this.V(this.p),l}setElementByPos(l,u){if(l<0||l>this.i-1)throw new RangeError;let c=this.p;for(;l--;)c=c.B;c.l=u}insert(l,u,c=1){if(l<0||l>this.i)throw new RangeError;if(c<=0)return this.i;if(l===0)for(;c--;)this.pushFront(u);else if(l===this.i)for(;c--;)this.pushBack(u);else{let f=this.p;for(let g=1;g<l;++g)f=f.B;let d=f.B;for(this.i+=c;c--;)f.B={l:u,L:f},f.B.L=f,f=f.B;f.B=d,d.L=f}return this.i}find(l){let u=this.p;for(;u!==this.h;){if(u.l===l)return new i(u,this.h,this);u=u.B}return this.end()}reverse(){if(this.i<=1)return;let l=this.p,u=this._,c=0;for(;c<<1<this.i;){let f=l.l;l.l=u.l,u.l=f,l=l.B,u=u.L,c+=1}}unique(){if(this.i<=1)return this.i;let l=this.p;for(;l!==this.h;){let u=l;for(;u.B!==this.h&&u.l===u.B.l;)u=u.B,this.i-=1;l.B=u.B,l.B.L=l,l=l.B}return this.i}sort(l){if(this.i<=1)return;let u=[];this.forEach(function(f){u.push(f)}),u.sort(l);let c=this.p;u.forEach(function(f){c.l=f,c=c.B})}merge(l){let u=this;if(this.i===0)l.forEach(function(c){u.pushBack(c)});else{let c=this.p;l.forEach(function(f){for(;c!==u.h&&c.l<=f;)c=c.B;u.G(f,c.L)})}return this.i}forEach(l){let u=this.p,c=0;for(;u!==this.h;)l(u.l,c++,this),u=u.B}[Symbol.iterator](){return(function*(){if(this.i===0)return;let l=this.p;for(;l!==this.h;)yield l.l,l=l.B}).bind(this)()}},a=o;t.default=a}),MC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=n(Dp()),r=Fv();function n(a){return a&&a.t?a:{default:a}}var s=class Wv extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new Wv(this.o,this.container,this.iteratorType)}},i=class extends e.default{constructor(a=[],l=4096){super(),this.j=0,this.D=0,this.R=0,this.N=0,this.P=0,this.A=[];let u=(()=>{if(typeof a.length=="number")return a.length;if(typeof a.size=="number")return a.size;if(typeof a.size=="function")return a.size();throw new TypeError("Cannot get the length or size of the container")})();this.F=l,this.P=Math.max(Math.ceil(u/this.F),1);for(let d=0;d<this.P;++d)this.A.push(new Array(this.F));let c=Math.ceil(u/this.F);this.j=this.R=(this.P>>1)-(c>>1),this.D=this.N=this.F-u%this.F>>1;let f=this;a.forEach(function(d){f.pushBack(d)})}T(){let a=[],l=Math.max(this.P>>1,1);for(let u=0;u<l;++u)a[u]=new Array(this.F);for(let u=this.j;u<this.P;++u)a[a.length]=this.A[u];for(let u=0;u<this.R;++u)a[a.length]=this.A[u];a[a.length]=[...this.A[this.R]],this.j=l,this.R=a.length-1;for(let u=0;u<l;++u)a[a.length]=new Array(this.F);this.A=a,this.P=a.length}O(a){let l=this.D+a+1,u=l%this.F,c=u-1,f=this.j+(l-u)/this.F;return u===0&&(f-=1),f%=this.P,c<0&&(c+=this.F),{curNodeBucketIndex:f,curNodePointerIndex:c}}clear(){this.A=[new Array(this.F)],this.P=1,this.j=this.R=this.i=0,this.D=this.N=this.F>>1}begin(){return new s(0,this)}end(){return new s(this.i,this)}rBegin(){return new s(this.i-1,this,1)}rEnd(){return new s(-1,this,1)}front(){if(this.i!==0)return this.A[this.j][this.D]}back(){if(this.i!==0)return this.A[this.R][this.N]}pushBack(a){return this.i&&(this.N<this.F-1?this.N+=1:this.R<this.P-1?(this.R+=1,this.N=0):(this.R=0,this.N=0),this.R===this.j&&this.N===this.D&&this.T()),this.i+=1,this.A[this.R][this.N]=a,this.i}popBack(){if(this.i===0)return;let a=this.A[this.R][this.N];return this.i!==1&&(this.N>0?this.N-=1:this.R>0?(this.R-=1,this.N=this.F-1):(this.R=this.P-1,this.N=this.F-1)),this.i-=1,a}pushFront(a){return this.i&&(this.D>0?this.D-=1:this.j>0?(this.j-=1,this.D=this.F-1):(this.j=this.P-1,this.D=this.F-1),this.j===this.R&&this.D===this.N&&this.T()),this.i+=1,this.A[this.j][this.D]=a,this.i}popFront(){if(this.i===0)return;let a=this.A[this.j][this.D];return this.i!==1&&(this.D<this.F-1?this.D+=1:this.j<this.P-1?(this.j+=1,this.D=0):(this.j=0,this.D=0)),this.i-=1,a}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.A[l][u]}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:u,curNodePointerIndex:c}=this.O(a);this.A[u][c]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;if(a===0)for(;u--;)this.pushFront(l);else if(a===this.i)for(;u--;)this.pushBack(l);else{let c=[];for(let f=a;f<this.i;++f)c.push(this.getElementByPos(f));this.cut(a-1);for(let f=0;f<u;++f)this.pushBack(l);for(let f=0;f<c.length;++f)this.pushBack(c[f])}return this.i}cut(a){if(a<0)return this.clear(),0;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.R=l,this.N=u,this.i=a+1,this.i}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;if(a===0)this.popFront();else if(a===this.i-1)this.popBack();else{let l=[];for(let c=a+1;c<this.i;++c)l.push(this.getElementByPos(c));this.cut(a),this.popBack();let u=this;l.forEach(function(c){u.pushBack(c)})}return this.i}eraseElementByValue(a){if(this.i===0)return 0;let l=[];for(let c=0;c<this.i;++c){let f=this.getElementByPos(c);f!==a&&l.push(f)}let u=l.length;for(let c=0;c<u;++c)this.setElementByPos(c,l[c]);return this.cut(u-1)}eraseElementByIterator(a){let l=a.o;return this.eraseElementByPos(l),a=a.next(),a}find(a){for(let l=0;l<this.i;++l)if(this.getElementByPos(l)===a)return new s(l,this);return this.end()}reverse(){let a=0,l=this.i-1;for(;a<l;){let u=this.getElementByPos(a);this.setElementByPos(a,this.getElementByPos(l)),this.setElementByPos(l,u),a+=1,l-=1}}unique(){if(this.i<=1)return this.i;let a=1,l=this.getElementByPos(0);for(let u=1;u<this.i;++u){let c=this.getElementByPos(u);c!==l&&(l=c,this.setElementByPos(a++,c))}for(;this.i>a;)this.popBack();return this.i}sort(a){let l=[];for(let u=0;u<this.i;++u)l.push(this.getElementByPos(u));l.sort(a);for(let u=0;u<this.i;++u)this.setElementByPos(u,l[u])}shrinkToFit(){if(this.i===0)return;let a=[];this.forEach(function(l){a.push(l)}),this.P=Math.max(Math.ceil(this.i/this.F),1),this.i=this.j=this.R=this.D=this.N=0,this.A=[];for(let l=0;l<this.P;++l)this.A.push(new Array(this.F));for(let l=0;l<a.length;++l)this.pushBack(a[l])}forEach(a){for(let l=0;l<this.i;++l)a(this.getElementByPos(l),l,this)}[Symbol.iterator](){return(function*(){for(let a=0;a<this.i;++a)yield this.getElementByPos(a)}).bind(this)()}},o=i;t.default=o}),OC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.TreeNodeEnableIndex=t.TreeNode=void 0;var e=class{constructor(n,s){this.ee=1,this.u=void 0,this.l=void 0,this.U=void 0,this.W=void 0,this.tt=void 0,this.u=n,this.l=s}L(){let n=this;if(n.ee===1&&n.tt.tt===n)n=n.W;else if(n.U)for(n=n.U;n.W;)n=n.W;else{let s=n.tt;for(;s.U===n;)n=s,s=n.tt;n=s}return n}B(){let n=this;if(n.W){for(n=n.W;n.U;)n=n.U;return n}else{let s=n.tt;for(;s.W===n;)n=s,s=n.tt;return n.W!==s?s:n}}te(){let n=this.tt,s=this.W,i=s.U;return n.tt===this?n.tt=s:n.U===this?n.U=s:n.W=s,s.tt=n,s.U=this,this.tt=s,this.W=i,i&&(i.tt=this),s}se(){let n=this.tt,s=this.U,i=s.W;return n.tt===this?n.tt=s:n.U===this?n.U=s:n.W=s,s.tt=n,s.W=this,this.tt=s,this.U=i,i&&(i.tt=this),s}};t.TreeNode=e;var r=class extends e{constructor(){super(...arguments),this.rt=1}te(){let n=super.te();return this.ie(),n.ie(),n}se(){let n=super.se();return this.ie(),n.ie(),n}ie(){this.rt=1,this.U&&(this.rt+=this.U.rt),this.W&&(this.rt+=this.W.rt)}};t.TreeNodeEnableIndex=r}),zv=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=OC(),r=On(),n=Rn(),s=class extends r.Container{constructor(o=function(l,u){return l<u?-1:l>u?1:0},a=!1){super(),this.Y=void 0,this.v=o,a?(this.re=e.TreeNodeEnableIndex,this.M=function(l,u,c){let f=this.ne(l,u,c);if(f){let d=f.tt;for(;d!==this.h;)d.rt+=1,d=d.tt;let g=this.he(f);if(g){let{parentNode:m,grandParent:y,curNode:E}=g;m.ie(),y.ie(),E.ie()}}return this.i},this.V=function(l){let u=this.fe(l);for(;u!==this.h;)u.rt-=1,u=u.tt}):(this.re=e.TreeNode,this.M=function(l,u,c){let f=this.ne(l,u,c);return f&&this.he(f),this.i},this.V=this.fe),this.h=new this.re}X(o,a){let l=this.h;for(;o;){let u=this.v(o.u,a);if(u<0)o=o.W;else if(u>0)l=o,o=o.U;else return o}return l}Z(o,a){let l=this.h;for(;o;)this.v(o.u,a)<=0?o=o.W:(l=o,o=o.U);return l}$(o,a){let l=this.h;for(;o;){let u=this.v(o.u,a);if(u<0)l=o,o=o.W;else if(u>0)o=o.U;else return o}return l}rr(o,a){let l=this.h;for(;o;)this.v(o.u,a)<0?(l=o,o=o.W):o=o.U;return l}ue(o){for(;;){let a=o.tt;if(a===this.h)return;if(o.ee===1){o.ee=0;return}if(o===a.U){let l=a.W;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.te():a.te();else if(l.W&&l.W.ee===1){l.ee=a.ee,a.ee=0,l.W.ee=0,a===this.Y?this.Y=a.te():a.te();return}else l.U&&l.U.ee===1?(l.ee=1,l.U.ee=0,l.se()):(l.ee=1,o=a)}else{let l=a.U;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.se():a.se();else if(l.U&&l.U.ee===1){l.ee=a.ee,a.ee=0,l.U.ee=0,a===this.Y?this.Y=a.se():a.se();return}else l.W&&l.W.ee===1?(l.ee=1,l.W.ee=0,l.te()):(l.ee=1,o=a)}}}fe(o){if(this.i===1)return this.clear(),this.h;let a=o;for(;a.U||a.W;){if(a.W)for(a=a.W;a.U;)a=a.U;else a=a.U;[o.u,a.u]=[a.u,o.u],[o.l,a.l]=[a.l,o.l],o=a}this.h.U===a?this.h.U=a.tt:this.h.W===a&&(this.h.W=a.tt),this.ue(a);let l=a.tt;return a===l.U?l.U=void 0:l.W=void 0,this.i-=1,this.Y.ee=0,l}oe(o,a){return o===void 0?!1:this.oe(o.U,a)||a(o)?!0:this.oe(o.W,a)}he(o){for(;;){let a=o.tt;if(a.ee===0)return;let l=a.tt;if(a===l.U){let u=l.W;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,o=l;continue}else if(o===a.W){if(o.ee=0,o.U&&(o.U.tt=a),o.W&&(o.W.tt=l),a.W=o.U,l.U=o.W,o.U=a,o.W=l,l===this.Y)this.Y=o,this.h.tt=o;else{let c=l.tt;c.U===l?c.U=o:c.W=o}return o.tt=l.tt,a.tt=o,l.tt=o,l.ee=1,{parentNode:a,grandParent:l,curNode:o}}else a.ee=0,l===this.Y?this.Y=l.se():l.se(),l.ee=1}else{let u=l.U;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,o=l;continue}else if(o===a.U){if(o.ee=0,o.U&&(o.U.tt=l),o.W&&(o.W.tt=a),l.W=o.U,a.U=o.W,o.U=l,o.W=a,l===this.Y)this.Y=o,this.h.tt=o;else{let c=l.tt;c.U===l?c.U=o:c.W=o}return o.tt=l.tt,a.tt=o,l.tt=o,l.ee=1,{parentNode:a,grandParent:l,curNode:o}}else a.ee=0,l===this.Y?this.Y=l.te():l.te(),l.ee=1}return}}ne(o,a,l){if(this.Y===void 0){this.i+=1,this.Y=new this.re(o,a),this.Y.ee=0,this.Y.tt=this.h,this.h.tt=this.Y,this.h.U=this.Y,this.h.W=this.Y;return}let u,c=this.h.U,f=this.v(c.u,o);if(f===0){c.l=a;return}else if(f>0)c.U=new this.re(o,a),c.U.tt=c,u=c.U,this.h.U=u;else{let d=this.h.W,g=this.v(d.u,o);if(g===0){d.l=a;return}else if(g<0)d.W=new this.re(o,a),d.W.tt=d,u=d.W,this.h.W=u;else{if(l!==void 0){let m=l.o;if(m!==this.h){let y=this.v(m.u,o);if(y===0){m.l=a;return}else if(y>0){let E=m.L(),_=this.v(E.u,o);if(_===0){E.l=a;return}else _<0&&(u=new this.re(o,a),E.W===void 0?(E.W=u,u.tt=E):(m.U=u,u.tt=m))}}}if(u===void 0)for(u=this.Y;;){let m=this.v(u.u,o);if(m>0){if(u.U===void 0){u.U=new this.re(o,a),u.U.tt=u,u=u.U;break}u=u.U}else if(m<0){if(u.W===void 0){u.W=new this.re(o,a),u.W.tt=u,u=u.W;break}u=u.W}else{u.l=a;return}}}}return this.i+=1,u}I(o,a){for(;o;){let l=this.v(o.u,a);if(l<0)o=o.W;else if(l>0)o=o.U;else return o}return o||this.h}clear(){this.i=0,this.Y=void 0,this.h.tt=void 0,this.h.U=this.h.W=void 0}updateKeyByIterator(o,a){let l=o.o;if(l===this.h&&(0,n.throwIteratorAccessError)(),this.i===1)return l.u=a,!0;if(l===this.h.U)return this.v(l.B().u,a)>0?(l.u=a,!0):!1;if(l===this.h.W)return this.v(l.L().u,a)<0?(l.u=a,!0):!1;let u=l.L().u;if(this.v(u,a)>=0)return!1;let c=l.B().u;return this.v(c,a)<=0?!1:(l.u=a,!0)}eraseElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let a=0,l=this;return this.oe(this.Y,function(u){return o===a?(l.V(u),!0):(a+=1,!1)}),this.i}eraseElementByKey(o){if(this.i===0)return!1;let a=this.I(this.Y,o);return a===this.h?!1:(this.V(a),!0)}eraseElementByIterator(o){let a=o.o;a===this.h&&(0,n.throwIteratorAccessError)();let l=a.W===void 0;return o.iteratorType===0?l&&o.next():(!l||a.U===void 0)&&o.next(),this.V(a),o}forEach(o){let a=0;for(let l of this)o(l,a++,this)}getElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let a,l=0;for(let u of this){if(l===o){a=u;break}l+=1}return a}getHeight(){if(this.i===0)return 0;let o=function(a){return a?Math.max(o(a.U),o(a.W))+1:0};return o(this.Y)}},i=s;t.default=i}),Hv=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=On(),r=Rn(),n=class extends e.ContainerIterator{constructor(i,o,a){super(a),this.o=i,this.h=o,this.iteratorType===0?(this.pre=function(){return this.o===this.h.U&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this}):(this.pre=function(){return this.o===this.h.W&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this})}get index(){let i=this.o,o=this.h.tt;if(i===this.h)return o?o.rt-1:0;let a=0;for(i.U&&(a+=i.U.rt);i!==o;){let l=i.tt;i===l.W&&(a+=1,l.U&&(a+=l.U.rt)),i=l}return a}},s=n;t.default=s}),RC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=s(zv()),r=s(Hv()),n=Rn();function s(l){return l&&l.t?l:{default:l}}var i=class Vv extends r.default{constructor(u,c,f,d){super(u,c,d),this.container=f}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.u}copy(){return new Vv(this.o,this.h,this.container,this.iteratorType)}},o=class extends e.default{constructor(l=[],u,c){super(u,c);let f=this;l.forEach(function(d){f.insert(d)})}*K(l){l!==void 0&&(yield*this.K(l.U),yield l.u,yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.h.U?this.h.U.u:void 0}back(){return this.h.W?this.h.W.u:void 0}insert(l,u){return this.M(l,void 0,u)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}union(l){let u=this;return l.forEach(function(c){u.insert(c)}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=o;t.default=a}),PC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=s(zv()),r=s(Hv()),n=Rn();function s(l){return l&&l.t?l:{default:l}}var i=class qv extends r.default{constructor(u,c,f,d){super(u,c,d),this.container=f}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,f){if(f==="0")return u.o.u;if(f==="1")return u.o.l},set(c,f,d){if(f!=="1")throw new TypeError("props must be 1");return u.o.l=d,!0}})}copy(){return new qv(this.o,this.h,this.container,this.iteratorType)}},o=class extends e.default{constructor(l=[],u,c){super(u,c);let f=this;l.forEach(function(d){f.setElement(d[0],d[1])})}*K(l){l!==void 0&&(yield*this.K(l.U),yield[l.u,l.l],yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i===0)return;let l=this.h.U;return[l.u,l.l]}back(){if(this.i===0)return;let l=this.h.W;return[l.u,l.l]}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}setElement(l,u,c){return this.M(l,u,c)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}getElementByKey(l){return this.I(this.Y,l).l}union(l){let u=this;return l.forEach(function(c){u.setElement(c[0],c[1])}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=o;t.default=a}),Yv=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=e;function e(r){let n=typeof r;return n==="object"&&r!==null||n==="function"}}),Gv=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.HashContainerIterator=t.HashContainer=void 0;var e=On(),r=s(Yv()),n=Rn();function s(a){return a&&a.t?a:{default:a}}var i=class extends e.ContainerIterator{constructor(a,l,u){super(u),this.o=a,this.h=l,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}};t.HashContainerIterator=i;var o=class extends e.Container{constructor(){super(),this.H=[],this.g={},this.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(this.g,null),this.h={},this.h.L=this.h.B=this.p=this._=this.h}V(a){let{L:l,B:u}=a;l.B=u,u.L=l,a===this.p&&(this.p=u),a===this._&&(this._=l),this.i-=1}M(a,l,u){u===void 0&&(u=(0,r.default)(a));let c;if(u){let f=a[this.HASH_TAG];if(f!==void 0)return this.H[f].l=l,this.i;Object.defineProperty(a,this.HASH_TAG,{value:this.H.length,configurable:!0}),c={u:a,l,L:this._,B:this.h},this.H.push(c)}else{let f=this.g[a];if(f)return f.l=l,this.i;c={u:a,l,L:this._,B:this.h},this.g[a]=c}return this.i===0?(this.p=c,this.h.B=c):this._.B=c,this._=c,this.h.L=c,++this.i}I(a,l){if(l===void 0&&(l=(0,r.default)(a)),l){let u=a[this.HASH_TAG];return u===void 0?this.h:this.H[u]}else return this.g[a]||this.h}clear(){let a=this.HASH_TAG;this.H.forEach(function(l){delete l.u[a]}),this.H=[],this.g={},Object.setPrototypeOf(this.g,null),this.i=0,this.p=this._=this.h.L=this.h.B=this.h}eraseElementByKey(a,l){let u;if(l===void 0&&(l=(0,r.default)(a)),l){let c=a[this.HASH_TAG];if(c===void 0)return!1;delete a[this.HASH_TAG],u=this.H[c],delete this.H[c]}else{if(u=this.g[a],u===void 0)return!1;delete this.g[a]}return this.V(u),!0}eraseElementByIterator(a){let l=a.o;return l===this.h&&(0,n.throwIteratorAccessError)(),this.V(l),a.next()}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let l=this.p;for(;a--;)l=l.B;return this.V(l),this.i}};t.HashContainer=o}),kC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=Gv(),r=Rn(),n=class Kv extends e.HashContainerIterator{constructor(a,l,u,c){super(a,l,c),this.container=u}get pointer(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o.u}copy(){return new Kv(this.o,this.h,this.container,this.iteratorType)}},s=class extends e.HashContainer{constructor(o=[]){super();let a=this;o.forEach(function(l){a.insert(l)})}begin(){return new n(this.p,this.h,this)}end(){return new n(this.h,this.h,this)}rBegin(){return new n(this._,this.h,this,1)}rEnd(){return new n(this.h,this.h,this,1)}front(){return this.p.u}back(){return this._.u}insert(o,a){return this.M(o,void 0,a)}getElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let a=this.p;for(;o--;)a=a.B;return a.u}find(o,a){let l=this.I(o,a);return new n(l,this.h,this)}forEach(o){let a=0,l=this.p;for(;l!==this.h;)o(l.u,a++,this),l=l.B}[Symbol.iterator](){return(function*(){let o=this.p;for(;o!==this.h;)yield o.u,o=o.B}).bind(this)()}},i=s;t.default=i}),LC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),t.default=void 0;var e=Gv(),r=s(Yv()),n=Rn();function s(l){return l&&l.t?l:{default:l}}var i=class Xv extends e.HashContainerIterator{constructor(u,c,f,d){super(u,c,d),this.container=f}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,f){if(f==="0")return u.o.u;if(f==="1")return u.o.l},set(c,f,d){if(f!=="1")throw new TypeError("props must be 1");return u.o.l=d,!0}})}copy(){return new Xv(this.o,this.h,this.container,this.iteratorType)}},o=class extends e.HashContainer{constructor(l=[]){super();let u=this;l.forEach(function(c){u.setElement(c[0],c[1])})}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i!==0)return[this.p.u,this.p.l]}back(){if(this.i!==0)return[this._.u,this._.l]}setElement(l,u,c){return this.M(l,u,c)}getElementByKey(l,u){if(u===void 0&&(u=(0,r.default)(l)),u){let f=l[this.HASH_TAG];return f!==void 0?this.H[f].l:void 0}let c=this.g[l];return c?c.l:void 0}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return[u.u,u.l]}find(l,u){let c=this.I(l,u);return new i(c,this.h,this)}forEach(l){let u=0,c=this.p;for(;c!==this.h;)l([c.u,c.l],u++,this),c=c.B}[Symbol.iterator](){return(function*(){let l=this.p;for(;l!==this.h;)yield[l.u,l.l],l=l.B}).bind(this)()}},a=o;t.default=a}),NC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"t",{value:!0}),Object.defineProperty(t,"Deque",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"HashMap",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(t,"HashSet",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"LinkList",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"OrderedMap",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"OrderedSet",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"PriorityQueue",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"Queue",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(t,"Stack",{enumerable:!0,get:function(){return e.default}}),Object.defineProperty(t,"Vector",{enumerable:!0,get:function(){return s.default}});var e=f(TC()),r=f(xC()),n=f(AC()),s=f(CC()),i=f(IC()),o=f(MC()),a=f(RC()),l=f(PC()),u=f(kC()),c=f(LC());function f(d){return d&&d.t?d:{default:d}}}),DC=Te((t,e)=>{_e(),ve(),we();var r=NC().OrderedSet,n=vn()("number-allocator:trace"),s=vn()("number-allocator:error");function i(a,l){this.low=a,this.high=l}i.prototype.equals=function(a){return this.low===a.low&&this.high===a.high},i.prototype.compare=function(a){return this.low<a.low&&this.high<a.low?-1:a.low<this.low&&a.high<this.low?1:0};function o(a,l){if(!(this instanceof o))return new o(a,l);this.min=a,this.max=l,this.ss=new r([],(u,c)=>u.compare(c)),n("Create"),this.clear()}o.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low},o.prototype.alloc=function(){if(this.ss.size()===0)return n("alloc():empty"),null;let a=this.ss.begin(),l=a.pointer.low,u=a.pointer.high,c=l;return c+1<=u?this.ss.updateKeyByIterator(a,new i(l+1,u)):this.ss.eraseElementByPos(0),n("alloc():"+c),c},o.prototype.use=function(a){let l=new i(a,a),u=this.ss.lowerBound(l);if(!u.equals(this.ss.end())){let c=u.pointer.low,f=u.pointer.high;return u.pointer.equals(l)?(this.ss.eraseElementByIterator(u),n("use():"+a),!0):c>a?!1:c===a?(this.ss.updateKeyByIterator(u,new i(c+1,f)),n("use():"+a),!0):f===a?(this.ss.updateKeyByIterator(u,new i(c,f-1)),n("use():"+a),!0):(this.ss.updateKeyByIterator(u,new i(a+1,f)),this.ss.insert(new i(c,a-1)),n("use():"+a),!0)}return n("use():failed"),!1},o.prototype.free=function(a){if(a<this.min||a>this.max){s("free():"+a+" is out of range");return}let l=new i(a,a),u=this.ss.upperBound(l);if(u.equals(this.ss.end())){if(u.equals(this.ss.begin())){this.ss.insert(l);return}u.pre();let c=u.pointer.high;u.pointer.high+1===a?this.ss.updateKeyByIterator(u,new i(c,a)):this.ss.insert(l)}else if(u.equals(this.ss.begin()))if(a+1===u.pointer.low){let c=u.pointer.high;this.ss.updateKeyByIterator(u,new i(a,c))}else this.ss.insert(l);else{let c=u.pointer.low,f=u.pointer.high;u.pre();let d=u.pointer.low;u.pointer.high+1===a?a+1===c?(this.ss.eraseElementByIterator(u),this.ss.updateKeyByIterator(u,new i(d,f))):this.ss.updateKeyByIterator(u,new i(d,a)):a+1===c?(this.ss.eraseElementByIterator(u.next()),this.ss.insert(new i(a,f))):this.ss.insert(l)}n("free():"+a)},o.prototype.clear=function(){n("clear()"),this.ss.clear(),this.ss.insert(new i(this.min,this.max))},o.prototype.intervalCount=function(){return this.ss.size()},o.prototype.dump=function(){console.log("length:"+this.ss.size());for(let a of this.ss)console.log(a)},e.exports=o}),Qv=Te((t,e)=>{_e(),ve(),we();var r=DC();e.exports.NumberAllocator=r}),BC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0});var e=SC(),r=Qv(),n=class{constructor(s){s>0&&(this.aliasToTopic=new e.LRUCache({max:s}),this.topicToAlias={},this.numberAllocator=new r.NumberAllocator(1,s),this.max=s,this.length=0)}put(s,i){if(i===0||i>this.max)return!1;let o=this.aliasToTopic.get(i);return o&&delete this.topicToAlias[o],this.aliasToTopic.set(i,s),this.topicToAlias[s]=i,this.numberAllocator.use(i),this.length=this.aliasToTopic.size,!0}getTopicByAlias(s){return this.aliasToTopic.get(s)}getAliasByTopic(s){let i=this.topicToAlias[s];return typeof i<"u"&&this.aliasToTopic.get(i),i}clear(){this.aliasToTopic.clear(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0}getLruAlias(){return this.numberAllocator.firstVacant()||[...this.aliasToTopic.keys()][this.aliasToTopic.size-1]}};t.default=n}),$C=Te(t=>{_e(),ve(),we();var e=t&&t.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(t,"__esModule",{value:!0});var r=Ou(),n=e(BC()),s=ha(),i=(o,a)=>{o.log("_handleConnack");let{options:l}=o,u=l.protocolVersion===5?a.reasonCode:a.returnCode;if(clearTimeout(o.connackTimer),delete o.topicAliasSend,a.properties){if(a.properties.topicAliasMaximum){if(a.properties.topicAliasMaximum>65535){o.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}a.properties.topicAliasMaximum>0&&(o.topicAliasSend=new n.default(a.properties.topicAliasMaximum))}a.properties.serverKeepAlive&&l.keepalive&&(l.keepalive=a.properties.serverKeepAlive),a.properties.maximumPacketSize&&(l.properties||(l.properties={}),l.properties.maximumPacketSize=a.properties.maximumPacketSize)}if(u===0)o.reconnecting=!1,o._onConnect(a);else if(u>0){let c=new s.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[u]}`,u);o.emit("error",c)}};t.default=i}),FC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0});var e=(r,n,s)=>{r.log("handling pubrel packet");let i=typeof s<"u"?s:r.noop,{messageId:o}=n,a={cmd:"pubcomp",messageId:o};r.incomingStore.get(n,(l,u)=>{l?r._sendPacket(a,i):(r.emit("message",u.topic,u.payload,u),r.handleMessage(u,c=>{if(c)return i(c);r.incomingStore.del(u,r.noop),r._sendPacket(a,i)}))})};t.default=e}),UC=Te(t=>{_e(),ve(),we();var e=t&&t.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(t,"__esModule",{value:!0});var r=e(vC()),n=e(EC()),s=e($C()),i=e(Ou()),o=e(FC()),a=(l,u,c)=>{let{options:f}=l;if(f.protocolVersion===5&&f.properties&&f.properties.maximumPacketSize&&f.properties.maximumPacketSize<u.length)return l.emit("error",new Error(`exceeding packets size ${u.cmd}`)),l.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),l;switch(l.log("_handlePacket :: emitting packetreceive"),l.emit("packetreceive",u),u.cmd){case"publish":(0,r.default)(l,u,c);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":l.reschedulePing(),(0,i.default)(l,u),c();break;case"pubrel":l.reschedulePing(),(0,o.default)(l,u,c);break;case"connack":(0,s.default)(l,u),c();break;case"auth":l.reschedulePing(),(0,n.default)(l,u),c();break;case"pingresp":l.log("_handlePacket :: received pingresp"),l.reschedulePing(),c();break;case"disconnect":l.emit("disconnect",u),c();break;default:l.log("_handlePacket :: unknown command"),c();break}};t.default=a}),jC=Te(t=>{_e(),ve(),we();var e=t&&t.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(t,"__esModule",{value:!0}),t.TypedEventEmitter=void 0;var r=e((no(),Ke(ts))),n=ha(),s=class{};t.TypedEventEmitter=s,(0,n.applyMixin)(s,r.default)}),Ru=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0}),t.isReactNativeBrowser=t.isWebWorker=void 0;var e=()=>{var i;return typeof window<"u"?typeof Lt<"u"&&((i=Lt.userAgent)===null||i===void 0?void 0:i.toLowerCase().indexOf(" electron/"))>-1&&ze!=null&&ze.versions?!Object.prototype.hasOwnProperty.call(ze.versions,"electron"):typeof window.document<"u":!1},r=()=>{var i,o;return!!(typeof self=="object"&&!((o=(i=self==null?void 0:self.constructor)===null||i===void 0?void 0:i.name)===null||o===void 0)&&o.includes("WorkerGlobalScope"))},n=()=>typeof Lt<"u"&&Lt.product==="ReactNative",s=e()||r()||n();t.isWebWorker=r(),t.isReactNativeBrowser=n(),t.default=s}),WC=Te((t,e)=>{_e(),ve(),we(),function(r,n){typeof t=="object"&&typeof e<"u"?n(t):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.fastUniqueNumbers={}))}(t,function(r){var n=function(g){return function(m){var y=g(m);return m.add(y),y}},s=function(g){return function(m,y){return g.set(m,y),y}},i=Number.MAX_SAFE_INTEGER===void 0?9007199254740991:Number.MAX_SAFE_INTEGER,o=536870912,a=o*2,l=function(g,m){return function(y){var E=m.get(y),_=E===void 0?y.size:E<a?E+1:0;if(!y.has(_))return g(y,_);if(y.size<o){for(;y.has(_);)_=Math.floor(Math.random()*a);return g(y,_)}if(y.size>i)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;y.has(_);)_=Math.floor(Math.random()*i);return g(y,_)}},u=new WeakMap,c=s(u),f=l(c,u),d=n(f);r.addUniqueNumber=d,r.generateUniqueNumber=f})}),zC=Te((t,e)=>{_e(),ve(),we(),function(r,n){typeof t=="object"&&typeof e<"u"?n(t,WC()):typeof define=="function"&&define.amd?define(["exports","fast-unique-numbers"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimersBroker={},r.fastUniqueNumbers))}(t,function(r,n){var s=function(a){return a.method!==void 0&&a.method==="call"},i=function(a){return a.error===null&&typeof a.id=="number"},o=function(a){var l=new Map([[0,function(){}]]),u=new Map([[0,function(){}]]),c=new Map,f=new Worker(a);f.addEventListener("message",function(E){var _=E.data;if(s(_)){var S=_.params,v=S.timerId,A=S.timerType;if(A==="interval"){var k=l.get(v);if(typeof k=="number"){var x=c.get(k);if(x===void 0||x.timerId!==v||x.timerType!==A)throw new Error("The timer is in an undefined state.")}else if(typeof k<"u")k();else throw new Error("The timer is in an undefined state.")}else if(A==="timeout"){var D=u.get(v);if(typeof D=="number"){var N=c.get(D);if(N===void 0||N.timerId!==v||N.timerType!==A)throw new Error("The timer is in an undefined state.")}else if(typeof D<"u")D(),u.delete(v);else throw new Error("The timer is in an undefined state.")}}else if(i(_)){var B=_.id,q=c.get(B);if(q===void 0)throw new Error("The timer is in an undefined state.");var K=q.timerId,C=q.timerType;c.delete(B),C==="interval"?l.delete(K):u.delete(K)}else{var M=_.error.message;throw new Error(M)}});var d=function(E){var _=n.generateUniqueNumber(c);c.set(_,{timerId:E,timerType:"interval"}),l.set(E,_),f.postMessage({id:_,method:"clear",params:{timerId:E,timerType:"interval"}})},g=function(E){var _=n.generateUniqueNumber(c);c.set(_,{timerId:E,timerType:"timeout"}),u.set(E,_),f.postMessage({id:_,method:"clear",params:{timerId:E,timerType:"timeout"}})},m=function(E){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,S=n.generateUniqueNumber(l);return l.set(S,function(){E(),typeof l.get(S)=="function"&&f.postMessage({id:null,method:"set",params:{delay:_,now:performance.now(),timerId:S,timerType:"interval"}})}),f.postMessage({id:null,method:"set",params:{delay:_,now:performance.now(),timerId:S,timerType:"interval"}}),S},y=function(E){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,S=n.generateUniqueNumber(u);return u.set(S,E),f.postMessage({id:null,method:"set",params:{delay:_,now:performance.now(),timerId:S,timerType:"timeout"}}),S};return{clearInterval:d,clearTimeout:g,setInterval:m,setTimeout:y}};r.load=o})}),HC=Te((t,e)=>{_e(),ve(),we(),function(r,n){typeof t=="object"&&typeof e<"u"?n(t,zC()):typeof define=="function"&&define.amd?define(["exports","worker-timers-broker"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimers={},r.workerTimersBroker))}(t,function(r,n){var s=function(f,d){var g=null;return function(){if(g!==null)return g;var m=new Blob([d],{type:"application/javascript; charset=utf-8"}),y=URL.createObjectURL(m);return g=f(y),setTimeout(function(){return URL.revokeObjectURL(y)}),g}},i=`(()=>{var e={472:(e,t,r)=>{var o,i;void 0===(i="function"==typeof(o=function(){"use strict";var e=new Map,t=new Map,r=function(t){var r=e.get(t);if(void 0===r)throw new Error('There is no interval scheduled with the given id "'.concat(t,'".'));clearTimeout(r),e.delete(t)},o=function(e){var r=t.get(e);if(void 0===r)throw new Error('There is no timeout scheduled with the given id "'.concat(e,'".'));clearTimeout(r),t.delete(e)},i=function(e,t){var r,o=performance.now();return{expected:o+(r=e-Math.max(0,o-t)),remainingDelay:r}},n=function e(t,r,o,i){var n=performance.now();n>o?postMessage({id:null,method:"call",params:{timerId:r,timerType:i}}):t.set(r,setTimeout(e,o-n,t,r,o,i))},a=function(t,r,o){var a=i(t,o),s=a.expected,d=a.remainingDelay;e.set(r,setTimeout(n,d,e,r,s,"interval"))},s=function(e,r,o){var a=i(e,o),s=a.expected,d=a.remainingDelay;t.set(r,setTimeout(n,d,t,r,s,"timeout"))};addEventListener("message",(function(e){var t=e.data;try{if("clear"===t.method){var i=t.id,n=t.params,d=n.timerId,c=n.timerType;if("interval"===c)r(d),postMessage({error:null,id:i});else{if("timeout"!==c)throw new Error('The given type "'.concat(c,'" is not supported'));o(d),postMessage({error:null,id:i})}}else{if("set"!==t.method)throw new Error('The given method "'.concat(t.method,'" is not supported'));var u=t.params,l=u.delay,p=u.now,m=u.timerId,v=u.timerType;if("interval"===v)a(l,m,p);else{if("timeout"!==v)throw new Error('The given type "'.concat(v,'" is not supported'));s(l,m,p)}}}catch(e){postMessage({error:{message:e.message},id:t.id,result:null})}}))})?o.call(t,r,t,e):o)||(e.exports=i)}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(472)})()})();`,o=s(n.load,i),a=function(f){return o().clearInterval(f)},l=function(f){return o().clearTimeout(f)},u=function(){var f;return(f=o()).setInterval.apply(f,arguments)},c=function(){var f;return(f=o()).setTimeout.apply(f,arguments)};r.clearInterval=a,r.clearTimeout=l,r.setInterval=u,r.setTimeout=c})}),VC=Te(t=>{_e(),ve(),we();var e=t&&t.__createBinding||(Object.create?function(u,c,f,d){d===void 0&&(d=f);var g=Object.getOwnPropertyDescriptor(c,f);(!g||("get"in g?!c.__esModule:g.writable||g.configurable))&&(g={enumerable:!0,get:function(){return c[f]}}),Object.defineProperty(u,d,g)}:function(u,c,f,d){d===void 0&&(d=f),u[d]=c[f]}),r=t&&t.__setModuleDefault||(Object.create?function(u,c){Object.defineProperty(u,"default",{enumerable:!0,value:c})}:function(u,c){u.default=c}),n=t&&t.__importStar||function(u){if(u&&u.__esModule)return u;var c={};if(u!=null)for(var f in u)f!=="default"&&Object.prototype.hasOwnProperty.call(u,f)&&e(c,u,f);return r(c,u),c};Object.defineProperty(t,"__esModule",{value:!0});var s=n(Ru()),i=HC(),o={set:i.setInterval,clear:i.clearInterval},a={set:(u,c)=>setInterval(u,c),clear:u=>clearInterval(u)},l=u=>{switch(u){case"native":return a;case"worker":return o;case"auto":default:return s.default&&!s.isWebWorker&&!s.isReactNativeBrowser?o:a}};t.default=l}),Jv=Te(t=>{_e(),ve(),we();var e=t&&t.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(t,"__esModule",{value:!0});var r=e(VC()),n=class{get keepaliveTimeoutTimestamp(){return this._keepaliveTimeoutTimestamp}get intervalEvery(){return this._intervalEvery}get keepalive(){return this._keepalive}constructor(s,i){this.destroyed=!1,this.client=s,this.timer=(0,r.default)(i),this.setKeepalive(s.options.keepalive)}clear(){this.timerId&&(this.timer.clear(this.timerId),this.timerId=null)}setKeepalive(s){if(s*=1e3,isNaN(s)||s<=0||s>2147483647)throw new Error(`Keepalive value must be an integer between 0 and 2147483647. Provided value is ${s}`);this._keepalive=s,this.reschedule(),this.client.log(`KeepaliveManager: set keepalive to ${s}ms`)}destroy(){this.clear(),this.destroyed=!0}reschedule(){if(this.destroyed)return;this.clear(),this.counter=0;let s=Math.ceil(this._keepalive*1.5);this._keepaliveTimeoutTimestamp=Date.now()+s,this._intervalEvery=Math.ceil(this._keepalive/2),this.timerId=this.timer.set(()=>{this.destroyed||(this.counter+=1,this.counter===2?this.client.sendPing():this.counter>2&&this.client.onKeepaliveTimeout())},this._intervalEvery)}};t.default=n}),oh=Te(t=>{_e(),ve(),we();var e=t&&t.__createBinding||(Object.create?function(k,x,D,N){N===void 0&&(N=D);var B=Object.getOwnPropertyDescriptor(x,D);(!B||("get"in B?!x.__esModule:B.writable||B.configurable))&&(B={enumerable:!0,get:function(){return x[D]}}),Object.defineProperty(k,N,B)}:function(k,x,D,N){N===void 0&&(N=D),k[N]=x[D]}),r=t&&t.__setModuleDefault||(Object.create?function(k,x){Object.defineProperty(k,"default",{enumerable:!0,value:x})}:function(k,x){k.default=x}),n=t&&t.__importStar||function(k){if(k&&k.__esModule)return k;var x={};if(k!=null)for(var D in k)D!=="default"&&Object.prototype.hasOwnProperty.call(k,D)&&e(x,k,D);return r(x,k),x},s=t&&t.__importDefault||function(k){return k&&k.__esModule?k:{default:k}};Object.defineProperty(t,"__esModule",{value:!0});var i=s(LA()),o=s(mC()),a=s(Nv()),l=rs(),u=s(yC()),c=n(wC()),f=s(vn()),d=s(Dv()),g=s(UC()),m=ha(),y=jC(),E=s(Jv()),_=n(Ru()),S=globalThis.setImmediate||((...k)=>{let x=k.shift();(0,m.nextTick)(()=>{x(...k)})}),v={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0,writeCache:!0,timerVariant:"auto"},A=class ah extends y.TypedEventEmitter{static defaultId(){return`mqttjs_${Math.random().toString(16).substr(2,8)}`}constructor(x,D){super(),this.options=D||{};for(let N in v)typeof this.options[N]>"u"?this.options[N]=v[N]:this.options[N]=D[N];this.log=this.options.log||(0,f.default)("mqttjs:client"),this.noop=this._noop.bind(this),this.log("MqttClient :: version:",ah.VERSION),_.isWebWorker?this.log("MqttClient :: environment","webworker"):this.log("MqttClient :: environment",_.default?"browser":"node"),this.log("MqttClient :: options.protocol",D.protocol),this.log("MqttClient :: options.protocolVersion",D.protocolVersion),this.log("MqttClient :: options.username",D.username),this.log("MqttClient :: options.keepalive",D.keepalive),this.log("MqttClient :: options.reconnectPeriod",D.reconnectPeriod),this.log("MqttClient :: options.rejectUnauthorized",D.rejectUnauthorized),this.log("MqttClient :: options.properties.topicAliasMaximum",D.properties?D.properties.topicAliasMaximum:void 0),this.options.clientId=typeof D.clientId=="string"?D.clientId:ah.defaultId(),this.log("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=D.protocolVersion===5&&D.customHandleAcks?D.customHandleAcks:(...N)=>{N[3](null,0)},this.options.writeCache||(o.default.writeToStream.cacheNumbers=!1),this.streamBuilder=x,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new a.default:this.options.messageIdProvider,this.outgoingStore=D.outgoingStore||new d.default,this.incomingStore=D.incomingStore||new d.default,this.queueQoSZero=D.queueQoSZero===void 0?!0:D.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.keepaliveManager=null,this.connected=!1,this.disconnecting=!1,this.reconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,D.properties&&D.properties.topicAliasMaximum>0&&(D.properties.topicAliasMaximum>65535?this.log("MqttClient :: options.properties.topicAliasMaximum is out of range"):this.topicAliasRecv=new i.default(D.properties.topicAliasMaximum)),this.on("connect",()=>{let{queue:N}=this,B=()=>{let q=N.shift();this.log("deliver :: entry %o",q);let K=null;if(!q){this._resubscribe();return}K=q.packet,this.log("deliver :: call _sendPacket for %o",K);let C=!0;K.messageId&&K.messageId!==0&&(this.messageIdProvider.register(K.messageId)||(C=!1)),C?this._sendPacket(K,M=>{q.cb&&q.cb(M),B()}):(this.log("messageId: %d has already used. The message is skipped and removed.",K.messageId),B())};this.log("connect :: sending queued packets"),B()}),this.on("close",()=>{this.log("close :: connected set to `false`"),this.connected=!1,this.log("close :: clearing connackTimer"),clearTimeout(this.connackTimer),this._destroyKeepaliveManager(),this.topicAliasRecv&&this.topicAliasRecv.clear(),this.log("close :: calling _setupReconnect"),this._setupReconnect()}),this.options.manualConnect||(this.log("MqttClient :: setting up stream"),this.connect())}handleAuth(x,D){D()}handleMessage(x,D){D()}_nextId(){return this.messageIdProvider.allocate()}getLastMessageId(){return this.messageIdProvider.getLastAllocated()}connect(){var x;let D=new l.Writable,N=o.default.parser(this.options),B=null,q=[];this.log("connect :: calling method to clear reconnect"),this._clearReconnect(),this.log("connect :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),N.on("packet",H=>{this.log("parser :: on packet push to packets array."),q.push(H)});let K=()=>{this.log("work :: getting next packet in queue");let H=q.shift();if(H)this.log("work :: packet pulled from queue"),(0,g.default)(this,H,C);else{this.log("work :: no packets in queue");let G=B;B=null,this.log("work :: done flag is %s",!!G),G&&G()}},C=()=>{if(q.length)(0,m.nextTick)(K);else{let H=B;B=null,H()}};D._write=(H,G,z)=>{B=z,this.log("writable stream :: parsing buffer"),N.parse(H),K()};let M=H=>{this.log("streamErrorHandler :: error",H.message),H.code?(this.log("streamErrorHandler :: emitting error"),this.emit("error",H)):this.noop(H)};this.log("connect :: pipe stream to writable stream"),this.stream.pipe(D),this.stream.on("error",M),this.stream.on("close",()=>{this.log("(%s)stream :: on close",this.options.clientId),this._flushVolatile(),this.log("stream: emit close to MqttClient"),this.emit("close")}),this.log("connect: sending packet `connect`");let L={cmd:"connect",protocolId:this.options.protocolId,protocolVersion:this.options.protocolVersion,clean:this.options.clean,clientId:this.options.clientId,keepalive:this.options.keepalive,username:this.options.username,password:this.options.password,properties:this.options.properties};if(this.options.will&&(L.will=Object.assign(Object.assign({},this.options.will),{payload:(x=this.options.will)===null||x===void 0?void 0:x.payload})),this.topicAliasRecv&&(L.properties||(L.properties={}),this.topicAliasRecv&&(L.properties.topicAliasMaximum=this.topicAliasRecv.max)),this._writePacket(L),N.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return this.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){let H=Object.assign({cmd:"auth",reasonCode:0},this.options.authPacket);this._writePacket(H)}}return this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(()=>{this.log("!!connectTimeout hit!! Calling _cleanUp with force `true`"),this.emit("error",new Error("connack timeout")),this._cleanUp(!0)},this.options.connectTimeout),this}publish(x,D,N,B){this.log("publish :: message `%s` to topic `%s`",D,x);let{options:q}=this;typeof N=="function"&&(B=N,N=null),N=N||{},N=Object.assign(Object.assign({},{qos:0,retain:!1,dup:!1}),N);let{qos:K,retain:C,dup:M,properties:L,cbStorePut:H}=N;if(this._checkDisconnecting(B))return this;let G=()=>{let z=0;if((K===1||K===2)&&(z=this._nextId(),z===null))return this.log("No messageId left"),!1;let F={cmd:"publish",topic:x,payload:D,qos:K,retain:C,messageId:z,dup:M};switch(q.protocolVersion===5&&(F.properties=L),this.log("publish :: qos",K),K){case 1:case 2:this.outgoing[F.messageId]={volatile:!1,cb:B||this.noop},this.log("MqttClient:publish: packet cmd: %s",F.cmd),this._sendPacket(F,void 0,H);break;default:this.log("MqttClient:publish: packet cmd: %s",F.cmd),this._sendPacket(F,B,H);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!G())&&this._storeProcessingQueue.push({invoke:G,cbStorePut:N.cbStorePut,callback:B}),this}publishAsync(x,D,N){return new Promise((B,q)=>{this.publish(x,D,N,(K,C)=>{K?q(K):B(C)})})}subscribe(x,D,N){let B=this.options.protocolVersion;typeof D=="function"&&(N=D),N=N||this.noop;let q=!1,K=[];typeof x=="string"?(x=[x],K=x):Array.isArray(x)?K=x:typeof x=="object"&&(q=x.resubscribe,delete x.resubscribe,K=Object.keys(x));let C=c.validateTopics(K);if(C!==null)return S(N,new Error(`Invalid topic ${C}`)),this;if(this._checkDisconnecting(N))return this.log("subscribe: discconecting true"),this;let M={qos:0};B===5&&(M.nl=!1,M.rap=!1,M.rh=0),D=Object.assign(Object.assign({},M),D);let L=D.properties,H=[],G=(F,ne)=>{if(ne=ne||D,!Object.prototype.hasOwnProperty.call(this._resubscribeTopics,F)||this._resubscribeTopics[F].qos<ne.qos||q){let ce={topic:F,qos:ne.qos};B===5&&(ce.nl=ne.nl,ce.rap=ne.rap,ce.rh=ne.rh,ce.properties=L),this.log("subscribe: pushing topic `%s` and qos `%s` to subs list",ce.topic,ce.qos),H.push(ce)}};if(Array.isArray(x)?x.forEach(F=>{this.log("subscribe: array topic %s",F),G(F)}):Object.keys(x).forEach(F=>{this.log("subscribe: object topic %s, %o",F,x[F]),G(F,x[F])}),!H.length)return N(null,[]),this;let z=()=>{let F=this._nextId();if(F===null)return this.log("No messageId left"),!1;let ne={cmd:"subscribe",subscriptions:H,messageId:F};if(L&&(ne.properties=L),this.options.resubscribe){this.log("subscribe :: resubscribe true");let ce=[];H.forEach(re=>{if(this.options.reconnectPeriod>0){let R={qos:re.qos};B===5&&(R.nl=re.nl||!1,R.rap=re.rap||!1,R.rh=re.rh||0,R.properties=re.properties),this._resubscribeTopics[re.topic]=R,ce.push(re.topic)}}),this.messageIdToTopic[ne.messageId]=ce}return this.outgoing[ne.messageId]={volatile:!0,cb(ce,re){if(!ce){let{granted:R}=re;for(let Q=0;Q<R.length;Q+=1)H[Q].qos=R[Q]}N(ce,H)}},this.log("subscribe :: call _sendPacket"),this._sendPacket(ne),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!z())&&this._storeProcessingQueue.push({invoke:z,callback:N}),this}subscribeAsync(x,D){return new Promise((N,B)=>{this.subscribe(x,D,(q,K)=>{q?B(q):N(K)})})}unsubscribe(x,D,N){typeof x=="string"&&(x=[x]),typeof D=="function"&&(N=D),N=N||this.noop;let B=c.validateTopics(x);if(B!==null)return S(N,new Error(`Invalid topic ${B}`)),this;if(this._checkDisconnecting(N))return this;let q=()=>{let K=this._nextId();if(K===null)return this.log("No messageId left"),!1;let C={cmd:"unsubscribe",messageId:K,unsubscriptions:[]};return typeof x=="string"?C.unsubscriptions=[x]:Array.isArray(x)&&(C.unsubscriptions=x),this.options.resubscribe&&C.unsubscriptions.forEach(M=>{delete this._resubscribeTopics[M]}),typeof D=="object"&&D.properties&&(C.properties=D.properties),this.outgoing[C.messageId]={volatile:!0,cb:N},this.log("unsubscribe: call _sendPacket"),this._sendPacket(C),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!q())&&this._storeProcessingQueue.push({invoke:q,callback:N}),this}unsubscribeAsync(x,D){return new Promise((N,B)=>{this.unsubscribe(x,D,(q,K)=>{q?B(q):N(K)})})}end(x,D,N){this.log("end :: (%s)",this.options.clientId),(x==null||typeof x!="boolean")&&(N=N||D,D=x,x=!1),typeof D!="object"&&(N=N||D,D=null),this.log("end :: cb? %s",!!N),(!N||typeof N!="function")&&(N=this.noop);let B=()=>{this.log("end :: closeStores: closing incoming and outgoing stores"),this.disconnected=!0,this.incomingStore.close(K=>{this.outgoingStore.close(C=>{if(this.log("end :: closeStores: emitting end"),this.emit("end"),N){let M=K||C;this.log("end :: closeStores: invoking callback with args"),N(M)}})}),this._deferredReconnect&&this._deferredReconnect()},q=()=>{this.log("end :: (%s) :: finish :: calling _cleanUp with force %s",this.options.clientId,x),this._cleanUp(x,()=>{this.log("end :: finish :: calling process.nextTick on closeStores"),(0,m.nextTick)(B)},D)};return this.disconnecting?(N(),this):(this._clearReconnect(),this.disconnecting=!0,!x&&Object.keys(this.outgoing).length>0?(this.log("end :: (%s) :: calling finish in 10ms once outgoing is empty",this.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,q,10))):(this.log("end :: (%s) :: immediately calling finish",this.options.clientId),q()),this)}endAsync(x,D){return new Promise((N,B)=>{this.end(x,D,q=>{q?B(q):N()})})}removeOutgoingMessage(x){if(this.outgoing[x]){let{cb:D}=this.outgoing[x];this._removeOutgoingAndStoreMessage(x,()=>{D(new Error("Message removed"))})}return this}reconnect(x){this.log("client reconnect");let D=()=>{x?(this.options.incomingStore=x.incomingStore,this.options.outgoingStore=x.outgoingStore):(this.options.incomingStore=null,this.options.outgoingStore=null),this.incomingStore=this.options.incomingStore||new d.default,this.outgoingStore=this.options.outgoingStore||new d.default,this.disconnecting=!1,this.disconnected=!1,this._deferredReconnect=null,this._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=D:D(),this}_flushVolatile(){this.outgoing&&(this.log("_flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(this.outgoing).forEach(x=>{this.outgoing[x].volatile&&typeof this.outgoing[x].cb=="function"&&(this.outgoing[x].cb(new Error("Connection closed")),delete this.outgoing[x])}))}_flush(){this.outgoing&&(this.log("_flush: queue exists? %b",!!this.outgoing),Object.keys(this.outgoing).forEach(x=>{typeof this.outgoing[x].cb=="function"&&(this.outgoing[x].cb(new Error("Connection closed")),delete this.outgoing[x])}))}_removeTopicAliasAndRecoverTopicName(x){let D;x.properties&&(D=x.properties.topicAlias);let N=x.topic.toString();if(this.log("_removeTopicAliasAndRecoverTopicName :: alias %d, topic %o",D,N),N.length===0){if(typeof D>"u")return new Error("Unregistered Topic Alias");if(N=this.topicAliasSend.getTopicByAlias(D),typeof N>"u")return new Error("Unregistered Topic Alias");x.topic=N}D&&delete x.properties.topicAlias}_checkDisconnecting(x){return this.disconnecting&&(x&&x!==this.noop?x(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting}_reconnect(){this.log("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this.connect()}),this.log("client already connected. disconnecting first.")):(this.log("_reconnect: calling connect"),this.connect())}_setupReconnect(){!this.disconnecting&&!this.reconnectTimer&&this.options.reconnectPeriod>0?(this.reconnecting||(this.log("_setupReconnect :: emit `offline` state"),this.emit("offline"),this.log("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),this.log("_setupReconnect :: setting reconnectTimer for %d ms",this.options.reconnectPeriod),this.reconnectTimer=setInterval(()=>{this.log("reconnectTimer :: reconnect triggered!"),this._reconnect()},this.options.reconnectPeriod)):this.log("_setupReconnect :: doing nothing...")}_clearReconnect(){this.log("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)}_cleanUp(x,D,N={}){if(D&&(this.log("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",D)),this.log("_cleanUp :: forced? %s",x),x)this.options.reconnectPeriod===0&&this.options.clean&&this._flush(),this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{let B=Object.assign({cmd:"disconnect"},N);this.log("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(B,()=>{this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),S(()=>{this.stream.end(()=>{this.log("_cleanUp :: (%s) :: stream destroyed",this.options.clientId)})})})}!this.disconnecting&&!this.reconnecting&&(this.log("_cleanUp :: client not disconnecting/reconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this._destroyKeepaliveManager(),D&&!this.connected&&(this.log("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",D),D())}_storeAndSend(x,D,N){this.log("storeAndSend :: store packet with cmd %s to outgoingStore",x.cmd);let B=x,q;if(B.cmd==="publish"&&(B=(0,u.default)(x),q=this._removeTopicAliasAndRecoverTopicName(B),q))return D&&D(q);this.outgoingStore.put(B,K=>{if(K)return D&&D(K);N(),this._writePacket(x,D)})}_applyTopicAlias(x){if(this.options.protocolVersion===5&&x.cmd==="publish"){let D;x.properties&&(D=x.properties.topicAlias);let N=x.topic.toString();if(this.topicAliasSend)if(D){if(N.length!==0&&(this.log("applyTopicAlias :: register topic: %s - alias: %d",N,D),!this.topicAliasSend.put(N,D)))return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",N,D),new Error("Sending Topic Alias out of range")}else N.length!==0&&(this.options.autoAssignTopicAlias?(D=this.topicAliasSend.getAliasByTopic(N),D?(x.topic="",x.properties=Object.assign(Object.assign({},x.properties),{topicAlias:D}),this.log("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",N,D)):(D=this.topicAliasSend.getLruAlias(),this.topicAliasSend.put(N,D),x.properties=Object.assign(Object.assign({},x.properties),{topicAlias:D}),this.log("applyTopicAlias :: auto assign topic: %s - alias: %d",N,D))):this.options.autoUseTopicAlias&&(D=this.topicAliasSend.getAliasByTopic(N),D&&(x.topic="",x.properties=Object.assign(Object.assign({},x.properties),{topicAlias:D}),this.log("applyTopicAlias :: auto use topic: %s - alias: %d",N,D))));else if(D)return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",N,D),new Error("Sending Topic Alias out of range")}}_noop(x){this.log("noop ::",x)}_writePacket(x,D){this.log("_writePacket :: packet: %O",x),this.log("_writePacket :: emitting `packetsend`"),this.emit("packetsend",x),this.log("_writePacket :: writing to stream");let N=o.default.writeToStream(x,this.stream,this.options);this.log("_writePacket :: writeToStream result %s",N),!N&&D&&D!==this.noop?(this.log("_writePacket :: handle events on `drain` once through callback."),this.stream.once("drain",D)):D&&(this.log("_writePacket :: invoking cb"),D())}_sendPacket(x,D,N,B){this.log("_sendPacket :: (%s) ::  start",this.options.clientId),N=N||this.noop,D=D||this.noop;let q=this._applyTopicAlias(x);if(q){D(q);return}if(!this.connected){if(x.cmd==="auth"){this._writePacket(x,D);return}this.log("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(x,D,N);return}if(B){this._writePacket(x,D);return}switch(x.cmd){case"publish":break;case"pubrel":this._storeAndSend(x,D,N);return;default:this._writePacket(x,D);return}switch(x.qos){case 2:case 1:this._storeAndSend(x,D,N);break;case 0:default:this._writePacket(x,D);break}this.log("_sendPacket :: (%s) ::  end",this.options.clientId)}_storePacket(x,D,N){this.log("_storePacket :: packet: %o",x),this.log("_storePacket :: cb? %s",!!D),N=N||this.noop;let B=x;if(B.cmd==="publish"){B=(0,u.default)(x);let K=this._removeTopicAliasAndRecoverTopicName(B);if(K)return D&&D(K)}let q=B.qos||0;q===0&&this.queueQoSZero||B.cmd!=="publish"?this.queue.push({packet:B,cb:D}):q>0?(D=this.outgoing[B.messageId]?this.outgoing[B.messageId].cb:null,this.outgoingStore.put(B,K=>{if(K)return D&&D(K);N()})):D&&D(new Error("No connection to broker"))}_setupKeepaliveManager(){this.log("_setupKeepaliveManager :: keepalive %d (seconds)",this.options.keepalive),!this.keepaliveManager&&this.options.keepalive&&(this.keepaliveManager=new E.default(this,this.options.timerVariant))}_destroyKeepaliveManager(){this.keepaliveManager&&(this.log("_destroyKeepaliveManager :: destroying keepalive manager"),this.keepaliveManager.destroy(),this.keepaliveManager=null)}reschedulePing(){this.keepaliveManager&&this.options.keepalive&&this.options.reschedulePings&&this._reschedulePing()}_reschedulePing(){this.log("_reschedulePing :: rescheduling ping"),this.keepaliveManager.reschedule()}sendPing(){this.log("_sendPing :: sending pingreq"),this._sendPacket({cmd:"pingreq"})}onKeepaliveTimeout(){this.emit("error",new Error("Keepalive timeout")),this.log("onKeepaliveTimeout :: calling _cleanUp with force true"),this._cleanUp(!0)}_resubscribe(){this.log("_resubscribe");let x=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion>=4&&!this.connackPacket.sessionPresent)&&x.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){this.log("_resubscribe: protocolVersion 5");for(let D=0;D<x.length;D++){let N={};N[x[D]]=this._resubscribeTopics[x[D]],N.resubscribe=!0,this.subscribe(N,{properties:N[x[D]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1}_onConnect(x){if(this.disconnected){this.emit("connect",x);return}this.connackPacket=x,this.messageIdProvider.clear(),this._setupKeepaliveManager(),this.connected=!0;let D=()=>{let N=this.outgoingStore.createStream(),B=()=>{N.destroy(),N=null,this._flushStoreProcessingQueue(),q()},q=()=>{this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={}};this.once("close",B),N.on("error",C=>{q(),this._flushStoreProcessingQueue(),this.removeListener("close",B),this.emit("error",C)});let K=()=>{if(!N)return;let C=N.read(1),M;if(!C){N.once("readable",K);return}if(this._storeProcessing=!0,this._packetIdsDuringStoreProcessing[C.messageId]){K();return}!this.disconnecting&&!this.reconnectTimer?(M=this.outgoing[C.messageId]?this.outgoing[C.messageId].cb:null,this.outgoing[C.messageId]={volatile:!1,cb(L,H){M&&M(L,H),K()}},this._packetIdsDuringStoreProcessing[C.messageId]=!0,this.messageIdProvider.register(C.messageId)?this._sendPacket(C,void 0,void 0,!0):this.log("messageId: %d has already used.",C.messageId)):N.destroy&&N.destroy()};N.on("end",()=>{let C=!0;for(let M in this._packetIdsDuringStoreProcessing)if(!this._packetIdsDuringStoreProcessing[M]){C=!1;break}this.removeListener("close",B),C?(q(),this._invokeAllStoreProcessingQueue(),this.emit("connect",x)):D()}),K()};D()}_invokeStoreProcessingQueue(){if(!this._storeProcessing&&this._storeProcessingQueue.length>0){let x=this._storeProcessingQueue[0];if(x&&x.invoke())return this._storeProcessingQueue.shift(),!0}return!1}_invokeAllStoreProcessingQueue(){for(;this._invokeStoreProcessingQueue(););}_flushStoreProcessingQueue(){for(let x of this._storeProcessingQueue)x.cbStorePut&&x.cbStorePut(new Error("Connection closed")),x.callback&&x.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)}_removeOutgoingAndStoreMessage(x,D){delete this.outgoing[x],this.outgoingStore.del({messageId:x},(N,B)=>{D(N,B),this.messageIdProvider.deallocate(x),this._invokeStoreProcessingQueue()})}};A.VERSION=m.MQTTJS_VERSION,t.default=A}),qC=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0});var e=Qv(),r=class{constructor(){this.numberAllocator=new e.NumberAllocator(1,65535)}allocate(){return this.lastId=this.numberAllocator.alloc(),this.lastId}getLastAllocated(){return this.lastId}register(n){return this.numberAllocator.use(n)}deallocate(n){this.numberAllocator.free(n)}clear(){this.numberAllocator.clear()}};t.default=r});function yi(t){throw new RangeError(e_[t])}function Xm(t,e){let r=t.split("@"),n="";r.length>1&&(n=r[0]+"@",t=r[1]);let s=function(i,o){let a=[],l=i.length;for(;l--;)a[l]=o(i[l]);return a}((t=t.replace(Zv,".")).split("."),e).join(".");return n+s}function Qm(t){let e=[],r=0,n=t.length;for(;r<n;){let s=t.charCodeAt(r++);if(s>=55296&&s<=56319&&r<n){let i=t.charCodeAt(r++);(64512&i)==56320?e.push(((1023&s)<<10)+(1023&i)+65536):(e.push(s),r--)}else e.push(s)}return e}var Jm,Zm,Zv,e_,gr,Ba,Mc,Oc,Rc,Pc,Un,YC=Et(()=>{_e(),ve(),we(),Jm=/^xn--/,Zm=/[^\0-\x7E]/,Zv=/[\x2E\u3002\uFF0E\uFF61]/g,e_={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},gr=Math.floor,Ba=String.fromCharCode,Mc=function(t,e){return t+22+75*(t<26)-((e!=0)<<5)},Oc=function(t,e,r){let n=0;for(t=r?gr(t/700):t>>1,t+=gr(t/e);t>455;n+=36)t=gr(t/35);return gr(n+36*t/(t+38))},Rc=function(t){let e=[],r=t.length,n=0,s=128,i=72,o=t.lastIndexOf("-");o<0&&(o=0);for(let l=0;l<o;++l)t.charCodeAt(l)>=128&&yi("not-basic"),e.push(t.charCodeAt(l));for(let l=o>0?o+1:0;l<r;){let u=n;for(let f=1,d=36;;d+=36){l>=r&&yi("invalid-input");let g=(a=t.charCodeAt(l++))-48<10?a-22:a-65<26?a-65:a-97<26?a-97:36;(g>=36||g>gr((2147483647-n)/f))&&yi("overflow"),n+=g*f;let m=d<=i?1:d>=i+26?26:d-i;if(g<m)break;let y=36-m;f>gr(2147483647/y)&&yi("overflow"),f*=y}let c=e.length+1;i=Oc(n-u,c,u==0),gr(n/c)>2147483647-s&&yi("overflow"),s+=gr(n/c),n%=c,e.splice(n++,0,s)}var a;return String.fromCodePoint(...e)},Pc=function(t){let e=[],r=(t=Qm(t)).length,n=128,s=0,i=72;for(let l of t)l<128&&e.push(Ba(l));let o=e.length,a=o;for(o&&e.push("-");a<r;){let l=2147483647;for(let c of t)c>=n&&c<l&&(l=c);let u=a+1;l-n>gr((2147483647-s)/u)&&yi("overflow"),s+=(l-n)*u,n=l;for(let c of t)if(c<n&&++s>2147483647&&yi("overflow"),c==n){let f=s;for(let d=36;;d+=36){let g=d<=i?1:d>=i+26?26:d-i;if(f<g)break;let m=f-g,y=36-g;e.push(Ba(Mc(g+m%y,0))),f=gr(m/y)}e.push(Ba(Mc(f,0))),i=Oc(s,u,a==o),s=0,++a}++s,++n}return e.join("")},Un={version:"2.1.0",ucs2:{decode:Qm,encode:t=>String.fromCodePoint(...t)},decode:Rc,encode:Pc,toASCII:function(t){return Xm(t,function(e){return Zm.test(e)?"xn--"+Pc(e):e})},toUnicode:function(t){return Xm(t,function(e){return Jm.test(e)?Rc(e.slice(4).toLowerCase()):e})}},Un.decode,Un.encode,Un.toASCII,Un.toUnicode,Un.ucs2,Un.version});function GC(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var e0,ps,t0,Pr,KC=Et(()=>{_e(),ve(),we(),e0=function(t,e,r,n){e=e||"&",r=r||"=";var s={};if(typeof t!="string"||t.length===0)return s;var i=/\+/g;t=t.split(e);var o=1e3;n&&typeof n.maxKeys=="number"&&(o=n.maxKeys);var a=t.length;o>0&&a>o&&(a=o);for(var l=0;l<a;++l){var u,c,f,d,g=t[l].replace(i,"%20"),m=g.indexOf(r);m>=0?(u=g.substr(0,m),c=g.substr(m+1)):(u=g,c=""),f=decodeURIComponent(u),d=decodeURIComponent(c),GC(s,f)?Array.isArray(s[f])?s[f].push(d):s[f]=[s[f],d]:s[f]=d}return s},ps=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}},t0=function(t,e,r,n){return e=e||"&",r=r||"=",t===null&&(t=void 0),typeof t=="object"?Object.keys(t).map(function(s){var i=encodeURIComponent(ps(s))+r;return Array.isArray(t[s])?t[s].map(function(o){return i+encodeURIComponent(ps(o))}).join(e):i+encodeURIComponent(ps(t[s]))}).join(e):n?encodeURIComponent(ps(n))+r+encodeURIComponent(ps(t)):""},Pr={},Pr.decode=Pr.parse=e0,Pr.encode=Pr.stringify=t0,Pr.decode,Pr.encode,Pr.parse,Pr.stringify});function lh(){throw new Error("setTimeout has not been defined")}function uh(){throw new Error("clearTimeout has not been defined")}function t_(t){if(tn===setTimeout)return setTimeout(t,0);if((tn===lh||!tn)&&setTimeout)return tn=setTimeout,setTimeout(t,0);try{return tn(t,0)}catch{try{return tn.call(null,t,0)}catch{return tn.call(this||Ui,t,0)}}}function XC(){ji&&Oi&&(ji=!1,Oi.length?Fr=Oi.concat(Fr):qo=-1,Fr.length&&r_())}function r_(){if(!ji){var t=t_(XC);ji=!0;for(var e=Fr.length;e;){for(Oi=Fr,Fr=[];++qo<e;)Oi&&Oi[qo].run();qo=-1,e=Fr.length}Oi=null,ji=!1,function(r){if(rn===clearTimeout)return clearTimeout(r);if((rn===uh||!rn)&&clearTimeout)return rn=clearTimeout,clearTimeout(r);try{rn(r)}catch{try{return rn.call(null,r)}catch{return rn.call(this||Ui,r)}}}(t)}}function r0(t,e){(this||Ui).fun=t,(this||Ui).array=e}function Xr(){}var n0,tn,rn,Ui,st,Oi,Fr,ji,qo,it,QC=Et(()=>{_e(),ve(),we(),Ui=typeof globalThis<"u"?globalThis:typeof self<"u"?self:qi,st=n0={},function(){try{tn=typeof setTimeout=="function"?setTimeout:lh}catch{tn=lh}try{rn=typeof clearTimeout=="function"?clearTimeout:uh}catch{rn=uh}}(),Fr=[],ji=!1,qo=-1,st.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];Fr.push(new r0(t,e)),Fr.length!==1||ji||t_(r_)},r0.prototype.run=function(){(this||Ui).fun.apply(null,(this||Ui).array)},st.title="browser",st.browser=!0,st.env={},st.argv=[],st.version="",st.versions={},st.on=Xr,st.addListener=Xr,st.once=Xr,st.off=Xr,st.removeListener=Xr,st.removeAllListeners=Xr,st.emit=Xr,st.prependListener=Xr,st.prependOnceListener=Xr,st.listeners=function(t){return[]},st.binding=function(t){throw new Error("process.binding is not supported")},st.cwd=function(){return"/"},st.chdir=function(t){throw new Error("process.chdir is not supported")},st.umask=function(){return 0},it=n0,it.addListener,it.argv,it.binding,it.browser,it.chdir,it.cwd,it.emit,it.env,it.listeners,it.nextTick,it.off,it.on,it.once,it.prependListener,it.prependOnceListener,it.removeAllListeners,it.removeListener,it.title,it.umask,it.version,it.versions});function JC(){if(ch)return gl;ch=!0;var t=gl={},e,r;function n(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?e=setTimeout:e=n}catch{e=n}try{typeof clearTimeout=="function"?r=clearTimeout:r=s}catch{r=s}})();function i(y){if(e===setTimeout)return setTimeout(y,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(y,0);try{return e(y,0)}catch{try{return e.call(null,y,0)}catch{return e.call(this||Si,y,0)}}}function o(y){if(r===clearTimeout)return clearTimeout(y);if((r===s||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(y);try{return r(y)}catch{try{return r.call(null,y)}catch{return r.call(this||Si,y)}}}var a=[],l=!1,u,c=-1;function f(){!l||!u||(l=!1,u.length?a=u.concat(a):c=-1,a.length&&d())}function d(){if(!l){var y=i(f);l=!0;for(var E=a.length;E;){for(u=a,a=[];++c<E;)u&&u[c].run();c=-1,E=a.length}u=null,l=!1,o(y)}}t.nextTick=function(y){var E=new Array(arguments.length-1);if(arguments.length>1)for(var _=1;_<arguments.length;_++)E[_-1]=arguments[_];a.push(new g(y,E)),a.length===1&&!l&&i(d)};function g(y,E){(this||Si).fun=y,(this||Si).array=E}g.prototype.run=function(){(this||Si).fun.apply(null,(this||Si).array)},t.title="browser",t.browser=!0,t.env={},t.argv=[],t.version="",t.versions={};function m(){}return t.on=m,t.addListener=m,t.once=m,t.off=m,t.removeListener=m,t.removeAllListeners=m,t.emit=m,t.prependListener=m,t.prependOnceListener=m,t.listeners=function(y){return[]},t.binding=function(y){throw new Error("process.binding is not supported")},t.cwd=function(){return"/"},t.chdir=function(y){throw new Error("process.chdir is not supported")},t.umask=function(){return 0},gl}var gl,ch,Si,tt,n_=Et(()=>{_e(),ve(),we(),gl={},ch=!1,Si=typeof globalThis<"u"?globalThis:typeof self<"u"?self:qi,tt=JC(),tt.platform="browser",tt.addListener,tt.argv,tt.binding,tt.browser,tt.chdir,tt.cwd,tt.emit,tt.env,tt.listeners,tt.nextTick,tt.off,tt.on,tt.once,tt.prependListener,tt.prependOnceListener,tt.removeAllListeners,tt.removeListener,tt.title,tt.umask,tt.version,tt.versions});function ZC(){if(fh)return ml;fh=!0;var t=tt;function e(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,o){for(var a="",l=0,u=-1,c=0,f,d=0;d<=i.length;++d){if(d<i.length)f=i.charCodeAt(d);else{if(f===47)break;f=47}if(f===47){if(!(u===d-1||c===1))if(u!==d-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var g=a.lastIndexOf("/");if(g!==a.length-1){g===-1?(a="",l=0):(a=a.slice(0,g),l=a.length-1-a.lastIndexOf("/")),u=d,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=d,c=0;continue}}o&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,d):a=i.slice(u+1,d),l=d-u-1;u=d,c=0}else f===46&&c!==-1?++c:c=-1}return a}function n(i,o){var a=o.dir||o.root,l=o.base||(o.name||"")+(o.ext||"");return a?a===o.root?a+l:a+i+l:l}var s={resolve:function(){for(var i="",o=!1,a,l=arguments.length-1;l>=-1&&!o;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=t.cwd()),u=a),e(u),u.length!==0&&(i=u+"/"+i,o=u.charCodeAt(0)===47)}return i=r(i,!o),o?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(e(i),i.length===0)return".";var o=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!o),i.length===0&&!o&&(i="."),i.length>0&&a&&(i+="/"),o?"/"+i:i},isAbsolute:function(i){return e(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,o=0;o<arguments.length;++o){var a=arguments[o];e(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":s.normalize(i)},relative:function(i,o){if(e(i),e(o),i===o||(i=s.resolve(i),o=s.resolve(o),i===o))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<o.length&&o.charCodeAt(c)===47;++c);for(var f=o.length,d=f-c,g=u<d?u:d,m=-1,y=0;y<=g;++y){if(y===g){if(d>g){if(o.charCodeAt(c+y)===47)return o.slice(c+y+1);if(y===0)return o.slice(c+y)}else u>g&&(i.charCodeAt(a+y)===47?m=y:y===0&&(m=0));break}var E=i.charCodeAt(a+y),_=o.charCodeAt(c+y);if(E!==_)break;E===47&&(m=y)}var S="";for(y=a+m+1;y<=l;++y)(y===l||i.charCodeAt(y)===47)&&(S.length===0?S+="..":S+="/..");return S.length>0?S+o.slice(c+m):(c+=m,o.charCodeAt(c)===47&&++c,o.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(e(i),i.length===0)return".";for(var o=i.charCodeAt(0),a=o===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(o=i.charCodeAt(c),o===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,o){if(o!==void 0&&typeof o!="string")throw new TypeError('"ext" argument must be a string');e(i);var a=0,l=-1,u=!0,c;if(o!==void 0&&o.length>0&&o.length<=i.length){if(o.length===i.length&&o===i)return"";var f=o.length-1,d=-1;for(c=i.length-1;c>=0;--c){var g=i.charCodeAt(c);if(g===47){if(!u){a=c+1;break}}else d===-1&&(u=!1,d=c+1),f>=0&&(g===o.charCodeAt(f)?--f===-1&&(l=c):(f=-1,l=d))}return a===l?l=d:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){e(i);for(var o=-1,a=0,l=-1,u=!0,c=0,f=i.length-1;f>=0;--f){var d=i.charCodeAt(f);if(d===47){if(!u){a=f+1;break}continue}l===-1&&(u=!1,l=f+1),d===46?o===-1?o=f:c!==1&&(c=1):o!==-1&&(c=-1)}return o===-1||l===-1||c===0||c===1&&o===l-1&&o===a+1?"":i.slice(o,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){e(i);var o={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return o;var a=i.charCodeAt(0),l=a===47,u;l?(o.root="/",u=1):u=0;for(var c=-1,f=0,d=-1,g=!0,m=i.length-1,y=0;m>=u;--m){if(a=i.charCodeAt(m),a===47){if(!g){f=m+1;break}continue}d===-1&&(g=!1,d=m+1),a===46?c===-1?c=m:y!==1&&(y=1):c!==-1&&(y=-1)}return c===-1||d===-1||y===0||y===1&&c===d-1&&c===f+1?d!==-1&&(f===0&&l?o.base=o.name=i.slice(1,d):o.base=o.name=i.slice(f,d)):(f===0&&l?(o.name=i.slice(1,c),o.base=i.slice(1,d)):(o.name=i.slice(f,c),o.base=i.slice(f,d)),o.ext=i.slice(c,d)),f>0?o.dir=i.slice(0,f-1):l&&(o.dir="/"),o},sep:"/",delimiter:":",win32:null,posix:null};return s.posix=s,ml=s,ml}var ml,fh,dh,eI=Et(()=>{_e(),ve(),we(),n_(),ml={},fh=!1,dh=ZC()}),i_={};Zi(i_,{URL:()=>E_,Url:()=>b_,default:()=>qe,fileURLToPath:()=>s_,format:()=>y_,parse:()=>__,pathToFileURL:()=>o_,resolve:()=>w_,resolveObject:()=>v_});function sr(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function wo(t,e,r){if(t&&br.isObject(t)&&t instanceof sr)return t;var n=new sr;return n.parse(t,e,r),n}function tI(){if(hh)return bl;hh=!0;var t=it;function e(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,o){for(var a="",l=0,u=-1,c=0,f,d=0;d<=i.length;++d){if(d<i.length)f=i.charCodeAt(d);else{if(f===47)break;f=47}if(f===47){if(!(u===d-1||c===1))if(u!==d-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var g=a.lastIndexOf("/");if(g!==a.length-1){g===-1?(a="",l=0):(a=a.slice(0,g),l=a.length-1-a.lastIndexOf("/")),u=d,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=d,c=0;continue}}o&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,d):a=i.slice(u+1,d),l=d-u-1;u=d,c=0}else f===46&&c!==-1?++c:c=-1}return a}function n(i,o){var a=o.dir||o.root,l=o.base||(o.name||"")+(o.ext||"");return a?a===o.root?a+l:a+i+l:l}var s={resolve:function(){for(var i="",o=!1,a,l=arguments.length-1;l>=-1&&!o;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=t.cwd()),u=a),e(u),u.length!==0&&(i=u+"/"+i,o=u.charCodeAt(0)===47)}return i=r(i,!o),o?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(e(i),i.length===0)return".";var o=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!o),i.length===0&&!o&&(i="."),i.length>0&&a&&(i+="/"),o?"/"+i:i},isAbsolute:function(i){return e(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,o=0;o<arguments.length;++o){var a=arguments[o];e(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":s.normalize(i)},relative:function(i,o){if(e(i),e(o),i===o||(i=s.resolve(i),o=s.resolve(o),i===o))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<o.length&&o.charCodeAt(c)===47;++c);for(var f=o.length,d=f-c,g=u<d?u:d,m=-1,y=0;y<=g;++y){if(y===g){if(d>g){if(o.charCodeAt(c+y)===47)return o.slice(c+y+1);if(y===0)return o.slice(c+y)}else u>g&&(i.charCodeAt(a+y)===47?m=y:y===0&&(m=0));break}var E=i.charCodeAt(a+y),_=o.charCodeAt(c+y);if(E!==_)break;E===47&&(m=y)}var S="";for(y=a+m+1;y<=l;++y)(y===l||i.charCodeAt(y)===47)&&(S.length===0?S+="..":S+="/..");return S.length>0?S+o.slice(c+m):(c+=m,o.charCodeAt(c)===47&&++c,o.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(e(i),i.length===0)return".";for(var o=i.charCodeAt(0),a=o===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(o=i.charCodeAt(c),o===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,o){if(o!==void 0&&typeof o!="string")throw new TypeError('"ext" argument must be a string');e(i);var a=0,l=-1,u=!0,c;if(o!==void 0&&o.length>0&&o.length<=i.length){if(o.length===i.length&&o===i)return"";var f=o.length-1,d=-1;for(c=i.length-1;c>=0;--c){var g=i.charCodeAt(c);if(g===47){if(!u){a=c+1;break}}else d===-1&&(u=!1,d=c+1),f>=0&&(g===o.charCodeAt(f)?--f===-1&&(l=c):(f=-1,l=d))}return a===l?l=d:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){e(i);for(var o=-1,a=0,l=-1,u=!0,c=0,f=i.length-1;f>=0;--f){var d=i.charCodeAt(f);if(d===47){if(!u){a=f+1;break}continue}l===-1&&(u=!1,l=f+1),d===46?o===-1?o=f:c!==1&&(c=1):o!==-1&&(c=-1)}return o===-1||l===-1||c===0||c===1&&o===l-1&&o===a+1?"":i.slice(o,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){e(i);var o={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return o;var a=i.charCodeAt(0),l=a===47,u;l?(o.root="/",u=1):u=0;for(var c=-1,f=0,d=-1,g=!0,m=i.length-1,y=0;m>=u;--m){if(a=i.charCodeAt(m),a===47){if(!g){f=m+1;break}continue}d===-1&&(g=!1,d=m+1),a===46?c===-1?c=m:y!==1&&(y=1):c!==-1&&(y=-1)}return c===-1||d===-1||y===0||y===1&&c===d-1&&c===f+1?d!==-1&&(f===0&&l?o.base=o.name=i.slice(1,d):o.base=o.name=i.slice(f,d)):(f===0&&l?(o.name=i.slice(1,c),o.base=i.slice(1,d)):(o.name=i.slice(f,c),o.base=i.slice(f,d)),o.ext=i.slice(c,d)),f>0?o.dir=i.slice(0,f-1):l&&(o.dir="/"),o},sep:"/",delimiter:":",win32:null,posix:null};return s.posix=s,bl=s,bl}function rI(t){if(typeof t=="string")t=new URL(t);else if(!(t instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(t.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return Hl?nI(t):iI(t)}function nI(t){let e=t.hostname,r=t.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let s=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&s===102||r[n+1]==="5"&&s===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(f_,"\\"),r=decodeURIComponent(r),e!=="")return`\\\\${e}${r}`;{let n=r.codePointAt(1)|32,s=r[2];if(n<u_||n>c_||s!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function iI(t){if(t.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let e=t.pathname;for(let r=0;r<e.length;r++)if(e[r]==="%"){let n=e.codePointAt(r+2)||32;if(e[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(e)}function sI(t){let e=ph.resolve(t),r=t.charCodeAt(t.length-1);(r===l_||Hl&&r===a_)&&e[e.length-1]!==ph.sep&&(e+="/");let n=new URL("file://");return e.includes("%")&&(e=e.replace(d_,"%25")),!Hl&&e.includes("\\")&&(e=e.replace(h_,"%5C")),e.includes(`
-`)&&(e=e.replace(p_,"%0A")),e.includes("\r")&&(e=e.replace(g_,"%0D")),e.includes("	")&&(e=e.replace(m_,"%09")),n.pathname=e,n}function s_(t){if(typeof t=="string")t=new URL(t);else if(!(t instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(t.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return Vl?oI(t):aI(t)}function oI(t){let e=t.hostname,r=t.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let s=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&s===102||r[n+1]==="5"&&s===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(C_,"\\"),r=decodeURIComponent(r),e!=="")return`\\\\${e}${r}`;{let n=r.codePointAt(1)|32,s=r[2];if(n<x_||n>A_||s!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function aI(t){if(t.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let e=t.pathname;for(let r=0;r<e.length;r++)if(e[r]==="%"){let n=e.codePointAt(r+2)||32;if(e[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(e)}function o_(t){let e=dh.resolve(t),r=t.charCodeAt(t.length-1);(r===T_||Vl&&r===S_)&&e[e.length-1]!==dh.sep&&(e+="/");let n=new URL("file://");return e.includes("%")&&(e=e.replace(I_,"%25")),!Vl&&e.includes("\\")&&(e=e.replace(M_,"%5C")),e.includes(`
-`)&&(e=e.replace(O_,"%0A")),e.includes("\r")&&(e=e.replace(R_,"%0D")),e.includes("	")&&(e=e.replace(P_,"%09")),n.pathname=e,n}var qe,i0,br,s0,o0,a0,l0,$a,kc,Lc,Nc,u0,c0,Fa,wi,Ua,bl,hh,ph,f0,a_,l_,u_,c_,Hl,f_,d_,h_,p_,g_,m_,d0,b_,y_,w_,v_,__,E_,S_,T_,x_,A_,Vl,C_,I_,M_,O_,R_,P_,lI=Et(()=>{_e(),ve(),we(),YC(),KC(),QC(),eI(),n_(),qe={},i0=Un,br={isString:function(t){return typeof t=="string"},isObject:function(t){return typeof t=="object"&&t!==null},isNull:function(t){return t===null},isNullOrUndefined:function(t){return t==null}},qe.parse=wo,qe.resolve=function(t,e){return wo(t,!1,!0).resolve(e)},qe.resolveObject=function(t,e){return t?wo(t,!1,!0).resolveObject(e):e},qe.format=function(t){return br.isString(t)&&(t=wo(t)),t instanceof sr?t.format():sr.prototype.format.call(t)},qe.Url=sr,s0=/^([a-z0-9.+-]+:)/i,o0=/:[0-9]*$/,a0=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l0=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r",`
-`,"	"]),$a=["'"].concat(l0),kc=["%","/","?",";","#"].concat($a),Lc=["/","?","#"],Nc=/^[+a-z0-9A-Z_-]{0,63}$/,u0=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,c0={javascript:!0,"javascript:":!0},Fa={javascript:!0,"javascript:":!0},wi={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},Ua=Pr,sr.prototype.parse=function(t,e,r){if(!br.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var n=t.indexOf("?"),s=n!==-1&&n<t.indexOf("#")?"?":"#",i=t.split(s);i[0]=i[0].replace(/\\/g,"/");var o=t=i.join(s);if(o=o.trim(),!r&&t.split("#").length===1){var a=a0.exec(o);if(a)return this.path=o,this.href=o,this.pathname=a[1],a[2]?(this.search=a[2],this.query=e?Ua.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var l=s0.exec(o);if(l){var u=(l=l[0]).toLowerCase();this.protocol=u,o=o.substr(l.length)}if(r||l||o.match(/^\/\/[^@\/]+@[^@\/]+/)){var c=o.substr(0,2)==="//";!c||l&&Fa[l]||(o=o.substr(2),this.slashes=!0)}if(!Fa[l]&&(c||l&&!wi[l])){for(var f,d,g=-1,m=0;m<Lc.length;m++)(y=o.indexOf(Lc[m]))!==-1&&(g===-1||y<g)&&(g=y);for((d=g===-1?o.lastIndexOf("@"):o.lastIndexOf("@",g))!==-1&&(f=o.slice(0,d),o=o.slice(d+1),this.auth=decodeURIComponent(f)),g=-1,m=0;m<kc.length;m++){var y;(y=o.indexOf(kc[m]))!==-1&&(g===-1||y<g)&&(g=y)}g===-1&&(g=o.length),this.host=o.slice(0,g),o=o.slice(g),this.parseHost(),this.hostname=this.hostname||"";var E=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!E)for(var _=this.hostname.split(/\./),S=(m=0,_.length);m<S;m++){var v=_[m];if(v&&!v.match(Nc)){for(var A="",k=0,x=v.length;k<x;k++)v.charCodeAt(k)>127?A+="x":A+=v[k];if(!A.match(Nc)){var D=_.slice(0,m),N=_.slice(m+1),B=v.match(u0);B&&(D.push(B[1]),N.unshift(B[2])),N.length&&(o="/"+N.join(".")+o),this.hostname=D.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),E||(this.hostname=i0.toASCII(this.hostname));var q=this.port?":"+this.port:"",K=this.hostname||"";this.host=K+q,this.href+=this.host,E&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),o[0]!=="/"&&(o="/"+o))}if(!c0[u])for(m=0,S=$a.length;m<S;m++){var C=$a[m];if(o.indexOf(C)!==-1){var M=encodeURIComponent(C);M===C&&(M=escape(C)),o=o.split(C).join(M)}}var L=o.indexOf("#");L!==-1&&(this.hash=o.substr(L),o=o.slice(0,L));var H=o.indexOf("?");if(H!==-1?(this.search=o.substr(H),this.query=o.substr(H+1),e&&(this.query=Ua.parse(this.query)),o=o.slice(0,H)):e&&(this.search="",this.query={}),o&&(this.pathname=o),wi[u]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){q=this.pathname||"";var G=this.search||"";this.path=q+G}return this.href=this.format(),this},sr.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",r=this.pathname||"",n=this.hash||"",s=!1,i="";this.host?s=t+this.host:this.hostname&&(s=t+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(s+=":"+this.port)),this.query&&br.isObject(this.query)&&Object.keys(this.query).length&&(i=Ua.stringify(this.query));var o=this.search||i&&"?"+i||"";return e&&e.substr(-1)!==":"&&(e+=":"),this.slashes||(!e||wi[e])&&s!==!1?(s="//"+(s||""),r&&r.charAt(0)!=="/"&&(r="/"+r)):s||(s=""),n&&n.charAt(0)!=="#"&&(n="#"+n),o&&o.charAt(0)!=="?"&&(o="?"+o),e+s+(r=r.replace(/[?#]/g,function(a){return encodeURIComponent(a)}))+(o=o.replace("#","%23"))+n},sr.prototype.resolve=function(t){return this.resolveObject(wo(t,!1,!0)).format()},sr.prototype.resolveObject=function(t){if(br.isString(t)){var e=new sr;e.parse(t,!1,!0),t=e}for(var r=new sr,n=Object.keys(this),s=0;s<n.length;s++){var i=n[s];r[i]=this[i]}if(r.hash=t.hash,t.href==="")return r.href=r.format(),r;if(t.slashes&&!t.protocol){for(var o=Object.keys(t),a=0;a<o.length;a++){var l=o[a];l!=="protocol"&&(r[l]=t[l])}return wi[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(t.protocol&&t.protocol!==r.protocol){if(!wi[t.protocol]){for(var u=Object.keys(t),c=0;c<u.length;c++){var f=u[c];r[f]=t[f]}return r.href=r.format(),r}if(r.protocol=t.protocol,t.host||Fa[t.protocol])r.pathname=t.pathname;else{for(var d=(t.pathname||"").split("/");d.length&&!(t.host=d.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),d[0]!==""&&d.unshift(""),d.length<2&&d.unshift(""),r.pathname=d.join("/")}if(r.search=t.search,r.query=t.query,r.host=t.host||"",r.auth=t.auth,r.hostname=t.hostname||t.host,r.port=t.port,r.pathname||r.search){var g=r.pathname||"",m=r.search||"";r.path=g+m}return r.slashes=r.slashes||t.slashes,r.href=r.format(),r}var y=r.pathname&&r.pathname.charAt(0)==="/",E=t.host||t.pathname&&t.pathname.charAt(0)==="/",_=E||y||r.host&&t.pathname,S=_,v=r.pathname&&r.pathname.split("/")||[],A=(d=t.pathname&&t.pathname.split("/")||[],r.protocol&&!wi[r.protocol]);if(A&&(r.hostname="",r.port=null,r.host&&(v[0]===""?v[0]=r.host:v.unshift(r.host)),r.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(d[0]===""?d[0]=t.host:d.unshift(t.host)),t.host=null),_=_&&(d[0]===""||v[0]==="")),E)r.host=t.host||t.host===""?t.host:r.host,r.hostname=t.hostname||t.hostname===""?t.hostname:r.hostname,r.search=t.search,r.query=t.query,v=d;else if(d.length)v||(v=[]),v.pop(),v=v.concat(d),r.search=t.search,r.query=t.query;else if(!br.isNullOrUndefined(t.search))return A&&(r.hostname=r.host=v.shift(),(B=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=B.shift(),r.host=r.hostname=B.shift())),r.search=t.search,r.query=t.query,br.isNull(r.pathname)&&br.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!v.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var k=v.slice(-1)[0],x=(r.host||t.host||v.length>1)&&(k==="."||k==="..")||k==="",D=0,N=v.length;N>=0;N--)(k=v[N])==="."?v.splice(N,1):k===".."?(v.splice(N,1),D++):D&&(v.splice(N,1),D--);if(!_&&!S)for(;D--;D)v.unshift("..");!_||v[0]===""||v[0]&&v[0].charAt(0)==="/"||v.unshift(""),x&&v.join("/").substr(-1)!=="/"&&v.push("");var B,q=v[0]===""||v[0]&&v[0].charAt(0)==="/";return A&&(r.hostname=r.host=q?"":v.length?v.shift():"",(B=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=B.shift(),r.host=r.hostname=B.shift())),(_=_||r.host&&v.length)&&!q&&v.unshift(""),v.length?r.pathname=v.join("/"):(r.pathname=null,r.path=null),br.isNull(r.pathname)&&br.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},sr.prototype.parseHost=function(){var t=this.host,e=o0.exec(t);e&&((e=e[0])!==":"&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},qe.Url,qe.format,qe.resolve,qe.resolveObject,bl={},hh=!1,ph=tI(),f0=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=sI,qe.fileURLToPath=rI,qe.Url,qe.format,qe.resolve,qe.resolveObject,qe.URL,a_=92,l_=47,u_=97,c_=122,Hl=f0==="win32",f_=/\//g,d_=/%/g,h_=/\\/g,p_=/\n/g,g_=/\r/g,m_=/\t/g,d0=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=o_,qe.fileURLToPath=s_,b_=qe.Url,y_=qe.format,w_=qe.resolve,v_=qe.resolveObject,__=qe.parse,E_=qe.URL,S_=92,T_=47,x_=97,A_=122,Vl=d0==="win32",C_=/\//g,I_=/%/g,M_=/\\/g,O_=/\n/g,R_=/\r/g,P_=/\t/g}),Bp={};Zi(Bp,{Server:()=>rt,Socket:()=>rt,Stream:()=>rt,_createServerHandle:()=>rt,_normalizeArgs:()=>rt,_setSimultaneousAccepts:()=>rt,connect:()=>rt,createConnection:()=>rt,createServer:()=>rt,default:()=>k_,isIP:()=>rt,isIPv4:()=>rt,isIPv6:()=>rt});function rt(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var k_,L_=Et(()=>{_e(),ve(),we(),k_={_createServerHandle:rt,_normalizeArgs:rt,_setSimultaneousAccepts:rt,connect:rt,createConnection:rt,createServer:rt,isIP:rt,isIPv4:rt,isIPv6:rt,Server:rt,Socket:rt,Stream:rt}}),h0=Te(t=>{_e(),ve(),we();var e=t&&t.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(t,"__esModule",{value:!0});var r=e((L_(),Ke(Bp))),n=e(vn()),s=(0,n.default)("mqttjs:tcp"),i=(o,a)=>{a.port=a.port||1883,a.hostname=a.hostname||a.host||"localhost";let{port:l,path:u}=a,c=a.hostname;return s("port %d and host %s",l,c),r.default.createConnection({port:l,host:c,path:u})};t.default=i}),N_={};Zi(N_,{default:()=>D_});var D_,uI=Et(()=>{_e(),ve(),we(),D_={}}),p0=Te(t=>{_e(),ve(),we();var e=t&&t.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(t,"__esModule",{value:!0});var r=e((uI(),Ke(N_))),n=e((L_(),Ke(Bp))),s=e(vn()),i=(0,s.default)("mqttjs:tls"),o=(a,l)=>{l.port=l.port||8883,l.host=l.hostname||l.host||"localhost",n.default.isIP(l.host)===0&&(l.servername=l.host),l.rejectUnauthorized=l.rejectUnauthorized!==!1,delete l.path,i("port %d host %s rejectUnauthorized %b",l.port,l.host,l.rejectUnauthorized);let u=r.default.connect(l);u.on("secureConnect",()=>{l.rejectUnauthorized&&!u.authorized?u.emit("error",new Error("TLS not authorized")):u.removeListener("error",c)});function c(f){l.rejectUnauthorized&&a.emit("error",f),u.end()}return u.on("error",c),u};t.default=o}),$p=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0}),t.BufferedDuplex=t.writev=void 0;var e=rs(),r=(Tt(),Ke(St));function n(i,o){let a=new Array(i.length);for(let l=0;l<i.length;l++)typeof i[l].chunk=="string"?a[l]=r.Buffer.from(i[l].chunk,"utf8"):a[l]=i[l].chunk;this._write(r.Buffer.concat(a),"binary",o)}t.writev=n;var s=class extends e.Duplex{constructor(i,o,a){super({objectMode:!0}),this.proxy=o,this.socket=a,this.writeQueue=[],i.objectMode||(this._writev=n.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",l=>{this.push(l)})}_read(i){this.proxy.read(i)}_write(i,o,a){this.isSocketOpen?this.writeToProxy(i,o,a):this.writeQueue.push({chunk:i,encoding:o,cb:a})}_final(i){this.writeQueue=[],this.proxy.end(i)}_destroy(i,o){this.writeQueue=[],this.proxy.destroy(),o(i)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(i,o,a){this.proxy.write(i,o)===!1?this.proxy.once("drain",a):a()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:i,encoding:o,cb:a}=this.writeQueue.shift();this.writeToProxy(i,o,a)}}};t.BufferedDuplex=s}),g0=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0});var e=(Tt(),Ke(St)),r=rs(),n=$p(),s,i,o;function a(){let d=new r.Transform;return d._write=(g,m,y)=>{s.send({data:g.buffer,success(){y()},fail(E){y(new Error(E))}})},d._flush=g=>{s.close({success(){g()}})},d}function l(d){d.hostname||(d.hostname="localhost"),d.path||(d.path="/"),d.wsOptions||(d.wsOptions={})}function u(d,g){let m=d.protocol==="wxs"?"wss":"ws",y=`${m}://${d.hostname}${d.path}`;return d.port&&d.port!==80&&d.port!==443&&(y=`${m}://${d.hostname}:${d.port}${d.path}`),typeof d.transformWsUrl=="function"&&(y=d.transformWsUrl(y,d,g)),y}function c(){s.onOpen(()=>{o.socketReady()}),s.onMessage(d=>{let{data:g}=d;g instanceof ArrayBuffer?g=e.Buffer.from(g):g=e.Buffer.from(g,"utf8"),i.push(g)}),s.onClose(()=>{o.emit("close"),o.end(),o.destroy()}),s.onError(d=>{let g=new Error(d.errMsg);o.destroy(g)})}var f=(d,g)=>{if(g.hostname=g.hostname||g.host,!g.hostname)throw new Error("Could not determine host. Specify host manually.");let m=g.protocolId==="MQIsdp"&&g.protocolVersion===3?"mqttv3.1":"mqtt";l(g);let y=u(g,d);s=wx.connectSocket({url:y,protocols:[m]}),i=a(),o=new n.BufferedDuplex(g,i,s),o._destroy=(_,S)=>{s.close({success(){S&&S(_)}})};let E=o.destroy;return o.destroy=(_,S)=>(o.destroy=E,setTimeout(()=>{s.close({fail(){o._destroy(_,S)}})},0),o),c(),o};t.default=f}),m0=Te(t=>{_e(),ve(),we(),Object.defineProperty(t,"__esModule",{value:!0});var e=(Tt(),Ke(St)),r=rs(),n=$p(),s,i,o,a=!1;function l(){let g=new r.Transform;return g._write=(m,y,E)=>{s.sendSocketMessage({data:m.buffer,success(){E()},fail(){E(new Error)}})},g._flush=m=>{s.closeSocket({success(){m()}})},g}function u(g){g.hostname||(g.hostname="localhost"),g.path||(g.path="/"),g.wsOptions||(g.wsOptions={})}function c(g,m){let y=g.protocol==="alis"?"wss":"ws",E=`${y}://${g.hostname}${g.path}`;return g.port&&g.port!==80&&g.port!==443&&(E=`${y}://${g.hostname}:${g.port}${g.path}`),typeof g.transformWsUrl=="function"&&(E=g.transformWsUrl(E,g,m)),E}function f(){a||(a=!0,s.onSocketOpen(()=>{o.socketReady()}),s.onSocketMessage(g=>{if(typeof g.data=="string"){let m=e.Buffer.from(g.data,"base64");i.push(m)}else{let m=new FileReader;m.addEventListener("load",()=>{let y=m.result;y instanceof ArrayBuffer?y=e.Buffer.from(y):y=e.Buffer.from(y,"utf8"),i.push(y)}),m.readAsArrayBuffer(g.data)}}),s.onSocketClose(()=>{o.end(),o.destroy()}),s.onSocketError(g=>{o.destroy(g)}))}var d=(g,m)=>{if(m.hostname=m.hostname||m.host,!m.hostname)throw new Error("Could not determine host. Specify host manually.");let y=m.protocolId==="MQIsdp"&&m.protocolVersion===3?"mqttv3.1":"mqtt";u(m);let E=c(m,g);return s=m.my,s.connectSocket({url:E,protocols:y}),i=l(),o=new n.BufferedDuplex(m,i,s),f(),o};t.default=d}),cI=Te((t,e)=>{_e(),ve(),we(),e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),b0=Te(t=>{_e(),ve(),we();var e=t&&t.__importDefault||function(_){return _&&_.__esModule?_:{default:_}};Object.defineProperty(t,"__esModule",{value:!0});var r=(Tt(),Ke(St)),n=e(cI()),s=e(vn()),i=rs(),o=e(Ru()),a=$p(),l=(0,s.default)("mqttjs:ws"),u=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function c(_,S){let v=`${_.protocol}://${_.hostname}:${_.port}${_.path}`;return typeof _.transformWsUrl=="function"&&(v=_.transformWsUrl(v,_,S)),v}function f(_){let S=_;return _.port||(_.protocol==="wss"?S.port=443:S.port=80),_.path||(S.path="/"),_.wsOptions||(S.wsOptions={}),!o.default&&_.protocol==="wss"&&u.forEach(v=>{Object.prototype.hasOwnProperty.call(_,v)&&!Object.prototype.hasOwnProperty.call(_.wsOptions,v)&&(S.wsOptions[v]=_[v])}),S}function d(_){let S=f(_);if(S.hostname||(S.hostname=S.host),!S.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let v=new URL(document.URL);S.hostname=v.hostname,S.port||(S.port=Number(v.port))}return S.objectMode===void 0&&(S.objectMode=!(S.binary===!0||S.binary===void 0)),S}function g(_,S,v){l("createWebSocket"),l(`protocol: ${v.protocolId} ${v.protocolVersion}`);let A=v.protocolId==="MQIsdp"&&v.protocolVersion===3?"mqttv3.1":"mqtt";l(`creating new Websocket for url: ${S} and protocol: ${A}`);let k;return v.createWebsocket?k=v.createWebsocket(S,[A],v):k=new n.default(S,[A],v.wsOptions),k}function m(_,S){let v=S.protocolId==="MQIsdp"&&S.protocolVersion===3?"mqttv3.1":"mqtt",A=c(S,_),k;return S.createWebsocket?k=S.createWebsocket(A,[v],S):k=new WebSocket(A,[v]),k.binaryType="arraybuffer",k}var y=(_,S)=>{l("streamBuilder");let v=f(S);v.hostname=v.hostname||v.host||"localhost";let A=c(v,_),k=g(_,A,v),x=n.default.createWebSocketStream(k,v.wsOptions);return x.url=A,k.on("close",()=>{x.destroy()}),x},E=(_,S)=>{l("browserStreamBuilder");let v,A=d(S).browserBufferSize||1024*512,k=S.browserBufferTimeout||1e3,x=!S.objectMode,D=m(_,S),N=q(S,H,G);S.objectMode||(N._writev=a.writev.bind(N)),N.on("close",()=>{D.close()});let B=typeof D.addEventListener<"u";D.readyState===D.OPEN?(v=N,v.socket=D):(v=new a.BufferedDuplex(S,N,D),B?D.addEventListener("open",K):D.onopen=K),B?(D.addEventListener("close",C),D.addEventListener("error",M),D.addEventListener("message",L)):(D.onclose=C,D.onerror=M,D.onmessage=L);function q(z,F,ne){let ce=new i.Transform({objectMode:z.objectMode});return ce._write=F,ce._flush=ne,ce}function K(){l("WebSocket onOpen"),v instanceof a.BufferedDuplex&&v.socketReady()}function C(z){l("WebSocket onClose",z),v.end(),v.destroy()}function M(z){l("WebSocket onError",z);let F=new Error("WebSocket error");F.event=z,v.destroy(F)}function L(z){let{data:F}=z;F instanceof ArrayBuffer?F=r.Buffer.from(F):F=r.Buffer.from(F,"utf8"),N.push(F)}function H(z,F,ne){if(D.bufferedAmount>A){setTimeout(H,k,z,F,ne);return}x&&typeof z=="string"&&(z=r.Buffer.from(z,"utf8"));try{D.send(z)}catch(ce){return ne(ce)}ne()}function G(z){D.close(),z()}return v};t.default=o.default?E:y}),fI=Te(t=>{_e(),ve(),we();var e=t&&t.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(t,"__esModule",{value:!0}),t.connectAsync=void 0;var r=e(vn()),n=e((lI(),Ke(i_))),s=e(oh()),i=e(Ru());typeof(ze==null?void 0:ze.nextTick)!="function"&&(ze.nextTick=setImmediate);var o=(0,r.default)("mqttjs"),a={};i.default?(a.wx=g0().default,a.wxs=g0().default,a.ali=m0().default,a.alis=m0().default):(a.mqtt=h0().default,a.tcp=h0().default,a.ssl=p0().default,a.tls=a.ssl,a.mqtts=p0().default),a.ws=b0().default,a.wss=b0().default;function l(f){let d;f.auth&&(d=f.auth.match(/^(.+):(.+)$/),d?(f.username=d[1],f.password=d[2]):f.username=f.auth)}function u(f,d){var g,m,y;if(o("connecting to an MQTT broker..."),typeof f=="object"&&!d&&(d=f,f=""),d=d||{},f&&typeof f=="string"){let S=n.default.parse(f,!0),v={};if(S.port!=null&&(v.port=Number(S.port)),v.host=S.hostname,v.query=S.query,v.auth=S.auth,v.protocol=S.protocol,v.path=S.path,v.protocol=(g=v.protocol)===null||g===void 0?void 0:g.replace(/:$/,""),d=Object.assign(Object.assign({},v),d),!d.protocol)throw new Error("Missing protocol")}if(d.unixSocket=d.unixSocket||((m=d.protocol)===null||m===void 0?void 0:m.includes("+unix")),d.unixSocket?d.protocol=d.protocol.replace("+unix",""):!((y=d.protocol)===null||y===void 0)&&y.startsWith("ws")||delete d.path,l(d),d.query&&typeof d.query.clientId=="string"&&(d.clientId=d.query.clientId),d.cert&&d.key)if(d.protocol){if(["mqtts","wss","wxs","alis"].indexOf(d.protocol)===-1)switch(d.protocol){case"mqtt":d.protocol="mqtts";break;case"ws":d.protocol="wss";break;case"wx":d.protocol="wxs";break;case"ali":d.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${d.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(!a[d.protocol]){let S=["mqtts","wss"].indexOf(d.protocol)!==-1;d.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((v,A)=>S&&A%2===0?!1:typeof a[v]=="function")[0]}if(d.clean===!1&&!d.clientId)throw new Error("Missing clientId for unclean clients");d.protocol&&(d.defaultProtocol=d.protocol);function E(S){return d.servers&&((!S._reconnectCount||S._reconnectCount===d.servers.length)&&(S._reconnectCount=0),d.host=d.servers[S._reconnectCount].host,d.port=d.servers[S._reconnectCount].port,d.protocol=d.servers[S._reconnectCount].protocol?d.servers[S._reconnectCount].protocol:d.defaultProtocol,d.hostname=d.host,S._reconnectCount++),o("calling streambuilder for",d.protocol),a[d.protocol](S,d)}let _=new s.default(E,d);return _.on("error",()=>{}),_}function c(f,d,g=!0){return new Promise((m,y)=>{let E=u(f,d),_={connect:v=>{S(),m(E)},end:()=>{S(),m(E)},error:v=>{S(),E.end(),y(v)}};g===!1&&(_.close=()=>{_.error(new Error("Couldn't connect to server"))});function S(){Object.keys(_).forEach(v=>{E.off(v,_[v])})}Object.keys(_).forEach(v=>{E.on(v,_[v])})})}t.connectAsync=c,t.default=u}),y0=Te(t=>{_e(),ve(),we();var e=t&&t.__createBinding||(Object.create?function(g,m,y,E){E===void 0&&(E=y);var _=Object.getOwnPropertyDescriptor(m,y);(!_||("get"in _?!m.__esModule:_.writable||_.configurable))&&(_={enumerable:!0,get:function(){return m[y]}}),Object.defineProperty(g,E,_)}:function(g,m,y,E){E===void 0&&(E=y),g[E]=m[y]}),r=t&&t.__setModuleDefault||(Object.create?function(g,m){Object.defineProperty(g,"default",{enumerable:!0,value:m})}:function(g,m){g.default=m}),n=t&&t.__importStar||function(g){if(g&&g.__esModule)return g;var m={};if(g!=null)for(var y in g)y!=="default"&&Object.prototype.hasOwnProperty.call(g,y)&&e(m,g,y);return r(m,g),m},s=t&&t.__exportStar||function(g,m){for(var y in g)y!=="default"&&!Object.prototype.hasOwnProperty.call(m,y)&&e(m,g,y)},i=t&&t.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(t,"__esModule",{value:!0}),t.ReasonCodes=t.KeepaliveManager=t.UniqueMessageIdProvider=t.DefaultMessageIdProvider=t.Store=t.MqttClient=t.connectAsync=t.connect=t.Client=void 0;var o=i(oh());t.MqttClient=o.default;var a=i(Nv());t.DefaultMessageIdProvider=a.default;var l=i(qC());t.UniqueMessageIdProvider=l.default;var u=i(Dv());t.Store=u.default;var c=n(fI());t.connect=c.default,Object.defineProperty(t,"connectAsync",{enumerable:!0,get:function(){return c.connectAsync}});var f=i(Jv());t.KeepaliveManager=f.default,t.Client=o.default,s(oh(),t),s(ha(),t);var d=Ou();Object.defineProperty(t,"ReasonCodes",{enumerable:!0,get:function(){return d.ReasonCodes}})}),dI=Te(t=>{_e(),ve(),we();var e=t&&t.__createBinding||(Object.create?function(o,a,l,u){u===void 0&&(u=l);var c=Object.getOwnPropertyDescriptor(a,l);(!c||("get"in c?!a.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return a[l]}}),Object.defineProperty(o,u,c)}:function(o,a,l,u){u===void 0&&(u=l),o[u]=a[l]}),r=t&&t.__setModuleDefault||(Object.create?function(o,a){Object.defineProperty(o,"default",{enumerable:!0,value:a})}:function(o,a){o.default=a}),n=t&&t.__importStar||function(o){if(o&&o.__esModule)return o;var a={};if(o!=null)for(var l in o)l!=="default"&&Object.prototype.hasOwnProperty.call(o,l)&&e(a,o,l);return r(a,o),a},s=t&&t.__exportStar||function(o,a){for(var l in o)l!=="default"&&!Object.prototype.hasOwnProperty.call(a,l)&&e(a,o,l)};Object.defineProperty(t,"__esModule",{value:!0});var i=n(y0());t.default=i,s(y0(),t)});const Xj=dI();/*! Bundled license information:
-
-@jspm/core/nodelibs/browser/buffer.js:
-  (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
-*/var Fp={exports:{}},B_={exports:{}},Dc={exports:{}},nr={},Pu={};Pu.byteLength=gI;Pu.toByteArray=bI;Pu.fromByteArray=vI;var Br=[],or=[],hI=typeof Uint8Array<"u"?Uint8Array:Array,Bc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var gs=0,pI=Bc.length;gs<pI;++gs)Br[gs]=Bc[gs],or[Bc.charCodeAt(gs)]=gs;or[45]=62;or[95]=63;function $_(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var n=r===e?0:4-r%4;return[r,n]}function gI(t){var e=$_(t),r=e[0],n=e[1];return(r+n)*3/4-n}function mI(t,e,r){return(e+r)*3/4-r}function bI(t){var e,r=$_(t),n=r[0],s=r[1],i=new hI(mI(t,n,s)),o=0,a=s>0?n-4:n,l;for(l=0;l<a;l+=4)e=or[t.charCodeAt(l)]<<18|or[t.charCodeAt(l+1)]<<12|or[t.charCodeAt(l+2)]<<6|or[t.charCodeAt(l+3)],i[o++]=e>>16&255,i[o++]=e>>8&255,i[o++]=e&255;return s===2&&(e=or[t.charCodeAt(l)]<<2|or[t.charCodeAt(l+1)]>>4,i[o++]=e&255),s===1&&(e=or[t.charCodeAt(l)]<<10|or[t.charCodeAt(l+1)]<<4|or[t.charCodeAt(l+2)]>>2,i[o++]=e>>8&255,i[o++]=e&255),i}function yI(t){return Br[t>>18&63]+Br[t>>12&63]+Br[t>>6&63]+Br[t&63]}function wI(t,e,r){for(var n,s=[],i=e;i<r;i+=3)n=(t[i]<<16&16711680)+(t[i+1]<<8&65280)+(t[i+2]&255),s.push(yI(n));return s.join("")}function vI(t){for(var e,r=t.length,n=r%3,s=[],i=16383,o=0,a=r-n;o<a;o+=i)s.push(wI(t,o,o+i>a?a:o+i));return n===1?(e=t[r-1],s.push(Br[e>>2]+Br[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],s.push(Br[e>>10]+Br[e>>4&63]+Br[e<<2&63]+"=")),s.join("")}var Up={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */Up.read=function(t,e,r,n,s){var i,o,a=s*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,f=r?s-1:0,d=r?-1:1,g=t[e+f];for(f+=d,i=g&(1<<-c)-1,g>>=-c,c+=a;c>0;i=i*256+t[e+f],f+=d,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=o*256+t[e+f],f+=d,c-=8);if(i===0)i=1-u;else{if(i===l)return o?NaN:(g?-1:1)*(1/0);o=o+Math.pow(2,n),i=i-u}return(g?-1:1)*o*Math.pow(2,i-n)};Up.write=function(t,e,r,n,s,i){var o,a,l,u=i*8-s-1,c=(1<<u)-1,f=c>>1,d=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:i-1,m=n?1:-1,y=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?e+=d/l:e+=d*Math.pow(2,1-f),e*l>=2&&(o++,l/=2),o+f>=c?(a=0,o=c):o+f>=1?(a=(e*l-1)*Math.pow(2,s),o=o+f):(a=e*Math.pow(2,f-1)*Math.pow(2,s),o=0));s>=8;t[r+g]=a&255,g+=m,a/=256,s-=8);for(o=o<<s|a,u+=s;u>0;t[r+g]=o&255,g+=m,o/=256,u-=8);t[r+g-m]|=y*128};/*!
- * The buffer module from node.js, for the browser.
- *
- * @author   Feross Aboukhadijeh <https://feross.org>
- * @license  MIT
- */(function(t){const e=Pu,r=Up,n=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=a,t.SlowBuffer=S,t.INSPECT_MAX_BYTES=50;const s=2147483647;t.kMaxLength=s,a.TYPED_ARRAY_SUPPORT=i(),!a.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function i(){try{const p=new Uint8Array(1),h={foo:function(){return 42}};return Object.setPrototypeOf(h,Uint8Array.prototype),Object.setPrototypeOf(p,h),p.foo()===42}catch{return!1}}Object.defineProperty(a.prototype,"parent",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}});function o(p){if(p>s)throw new RangeError('The value "'+p+'" is invalid for option "size"');const h=new Uint8Array(p);return Object.setPrototypeOf(h,a.prototype),h}function a(p,h,b){if(typeof p=="number"){if(typeof h=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return f(p)}return l(p,h,b)}a.poolSize=8192;function l(p,h,b){if(typeof p=="string")return d(p,h);if(ArrayBuffer.isView(p))return m(p);if(p==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof p);if($(p,ArrayBuffer)||p&&$(p.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&($(p,SharedArrayBuffer)||p&&$(p.buffer,SharedArrayBuffer)))return y(p,h,b);if(typeof p=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const T=p.valueOf&&p.valueOf();if(T!=null&&T!==p)return a.from(T,h,b);const U=E(p);if(U)return U;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof p[Symbol.toPrimitive]=="function")return a.from(p[Symbol.toPrimitive]("string"),h,b);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof p)}a.from=function(p,h,b){return l(p,h,b)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array);function u(p){if(typeof p!="number")throw new TypeError('"size" argument must be of type number');if(p<0)throw new RangeError('The value "'+p+'" is invalid for option "size"')}function c(p,h,b){return u(p),p<=0?o(p):h!==void 0?typeof b=="string"?o(p).fill(h,b):o(p).fill(h):o(p)}a.alloc=function(p,h,b){return c(p,h,b)};function f(p){return u(p),o(p<0?0:_(p)|0)}a.allocUnsafe=function(p){return f(p)},a.allocUnsafeSlow=function(p){return f(p)};function d(p,h){if((typeof h!="string"||h==="")&&(h="utf8"),!a.isEncoding(h))throw new TypeError("Unknown encoding: "+h);const b=v(p,h)|0;let T=o(b);const U=T.write(p,h);return U!==b&&(T=T.slice(0,U)),T}function g(p){const h=p.length<0?0:_(p.length)|0,b=o(h);for(let T=0;T<h;T+=1)b[T]=p[T]&255;return b}function m(p){if($(p,Uint8Array)){const h=new Uint8Array(p);return y(h.buffer,h.byteOffset,h.byteLength)}return g(p)}function y(p,h,b){if(h<0||p.byteLength<h)throw new RangeError('"offset" is outside of buffer bounds');if(p.byteLength<h+(b||0))throw new RangeError('"length" is outside of buffer bounds');let T;return h===void 0&&b===void 0?T=new Uint8Array(p):b===void 0?T=new Uint8Array(p,h):T=new Uint8Array(p,h,b),Object.setPrototypeOf(T,a.prototype),T}function E(p){if(a.isBuffer(p)){const h=_(p.length)|0,b=o(h);return b.length===0||p.copy(b,0,0,h),b}if(p.length!==void 0)return typeof p.length!="number"||J(p.length)?o(0):g(p);if(p.type==="Buffer"&&Array.isArray(p.data))return g(p.data)}function _(p){if(p>=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return p|0}function S(p){return+p!=p&&(p=0),a.alloc(+p)}a.isBuffer=function(h){return h!=null&&h._isBuffer===!0&&h!==a.prototype},a.compare=function(h,b){if($(h,Uint8Array)&&(h=a.from(h,h.offset,h.byteLength)),$(b,Uint8Array)&&(b=a.from(b,b.offset,b.byteLength)),!a.isBuffer(h)||!a.isBuffer(b))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(h===b)return 0;let T=h.length,U=b.length;for(let ee=0,ye=Math.min(T,U);ee<ye;++ee)if(h[ee]!==b[ee]){T=h[ee],U=b[ee];break}return T<U?-1:U<T?1:0},a.isEncoding=function(h){switch(String(h).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},a.concat=function(h,b){if(!Array.isArray(h))throw new TypeError('"list" argument must be an Array of Buffers');if(h.length===0)return a.alloc(0);let T;if(b===void 0)for(b=0,T=0;T<h.length;++T)b+=h[T].length;const U=a.allocUnsafe(b);let ee=0;for(T=0;T<h.length;++T){let ye=h[T];if($(ye,Uint8Array))ee+ye.length>U.length?(a.isBuffer(ye)||(ye=a.from(ye)),ye.copy(U,ee)):Uint8Array.prototype.set.call(U,ye,ee);else if(a.isBuffer(ye))ye.copy(U,ee);else throw new TypeError('"list" argument must be an Array of Buffers');ee+=ye.length}return U};function v(p,h){if(a.isBuffer(p))return p.length;if(ArrayBuffer.isView(p)||$(p,ArrayBuffer))return p.byteLength;if(typeof p!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof p);const b=p.length,T=arguments.length>2&&arguments[2]===!0;if(!T&&b===0)return 0;let U=!1;for(;;)switch(h){case"ascii":case"latin1":case"binary":return b;case"utf8":case"utf-8":return W(p).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b*2;case"hex":return b>>>1;case"base64":return V(p).length;default:if(U)return T?-1:W(p).length;h=(""+h).toLowerCase(),U=!0}}a.byteLength=v;function A(p,h,b){let T=!1;if((h===void 0||h<0)&&(h=0),h>this.length||((b===void 0||b>this.length)&&(b=this.length),b<=0)||(b>>>=0,h>>>=0,b<=h))return"";for(p||(p="utf8");;)switch(p){case"hex":return ne(this,h,b);case"utf8":case"utf-8":return L(this,h,b);case"ascii":return z(this,h,b);case"latin1":case"binary":return F(this,h,b);case"base64":return M(this,h,b);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ce(this,h,b);default:if(T)throw new TypeError("Unknown encoding: "+p);p=(p+"").toLowerCase(),T=!0}}a.prototype._isBuffer=!0;function k(p,h,b){const T=p[h];p[h]=p[b],p[b]=T}a.prototype.swap16=function(){const h=this.length;if(h%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let b=0;b<h;b+=2)k(this,b,b+1);return this},a.prototype.swap32=function(){const h=this.length;if(h%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let b=0;b<h;b+=4)k(this,b,b+3),k(this,b+1,b+2);return this},a.prototype.swap64=function(){const h=this.length;if(h%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let b=0;b<h;b+=8)k(this,b,b+7),k(this,b+1,b+6),k(this,b+2,b+5),k(this,b+3,b+4);return this},a.prototype.toString=function(){const h=this.length;return h===0?"":arguments.length===0?L(this,0,h):A.apply(this,arguments)},a.prototype.toLocaleString=a.prototype.toString,a.prototype.equals=function(h){if(!a.isBuffer(h))throw new TypeError("Argument must be a Buffer");return this===h?!0:a.compare(this,h)===0},a.prototype.inspect=function(){let h="";const b=t.INSPECT_MAX_BYTES;return h=this.toString("hex",0,b).replace(/(.{2})/g,"$1 ").trim(),this.length>b&&(h+=" ... "),"<Buffer "+h+">"},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(h,b,T,U,ee){if($(h,Uint8Array)&&(h=a.from(h,h.offset,h.byteLength)),!a.isBuffer(h))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof h);if(b===void 0&&(b=0),T===void 0&&(T=h?h.length:0),U===void 0&&(U=0),ee===void 0&&(ee=this.length),b<0||T>h.length||U<0||ee>this.length)throw new RangeError("out of range index");if(U>=ee&&b>=T)return 0;if(U>=ee)return-1;if(b>=T)return 1;if(b>>>=0,T>>>=0,U>>>=0,ee>>>=0,this===h)return 0;let ye=ee-U,Ae=T-b;const Re=Math.min(ye,Ae),xe=this.slice(U,ee),Oe=h.slice(b,T);for(let Me=0;Me<Re;++Me)if(xe[Me]!==Oe[Me]){ye=xe[Me],Ae=Oe[Me];break}return ye<Ae?-1:Ae<ye?1:0};function x(p,h,b,T,U){if(p.length===0)return-1;if(typeof b=="string"?(T=b,b=0):b>2147483647?b=2147483647:b<-2147483648&&(b=-2147483648),b=+b,J(b)&&(b=U?0:p.length-1),b<0&&(b=p.length+b),b>=p.length){if(U)return-1;b=p.length-1}else if(b<0)if(U)b=0;else return-1;if(typeof h=="string"&&(h=a.from(h,T)),a.isBuffer(h))return h.length===0?-1:D(p,h,b,T,U);if(typeof h=="number")return h=h&255,typeof Uint8Array.prototype.indexOf=="function"?U?Uint8Array.prototype.indexOf.call(p,h,b):Uint8Array.prototype.lastIndexOf.call(p,h,b):D(p,[h],b,T,U);throw new TypeError("val must be string, number or Buffer")}function D(p,h,b,T,U){let ee=1,ye=p.length,Ae=h.length;if(T!==void 0&&(T=String(T).toLowerCase(),T==="ucs2"||T==="ucs-2"||T==="utf16le"||T==="utf-16le")){if(p.length<2||h.length<2)return-1;ee=2,ye/=2,Ae/=2,b/=2}function Re(Oe,Me){return ee===1?Oe[Me]:Oe.readUInt16BE(Me*ee)}let xe;if(U){let Oe=-1;for(xe=b;xe<ye;xe++)if(Re(p,xe)===Re(h,Oe===-1?0:xe-Oe)){if(Oe===-1&&(Oe=xe),xe-Oe+1===Ae)return Oe*ee}else Oe!==-1&&(xe-=xe-Oe),Oe=-1}else for(b+Ae>ye&&(b=ye-Ae),xe=b;xe>=0;xe--){let Oe=!0;for(let Me=0;Me<Ae;Me++)if(Re(p,xe+Me)!==Re(h,Me)){Oe=!1;break}if(Oe)return xe}return-1}a.prototype.includes=function(h,b,T){return this.indexOf(h,b,T)!==-1},a.prototype.indexOf=function(h,b,T){return x(this,h,b,T,!0)},a.prototype.lastIndexOf=function(h,b,T){return x(this,h,b,T,!1)};function N(p,h,b,T){b=Number(b)||0;const U=p.length-b;T?(T=Number(T),T>U&&(T=U)):T=U;const ee=h.length;T>ee/2&&(T=ee/2);let ye;for(ye=0;ye<T;++ye){const Ae=parseInt(h.substr(ye*2,2),16);if(J(Ae))return ye;p[b+ye]=Ae}return ye}function B(p,h,b,T){return te(W(h,p.length-b),p,b,T)}function q(p,h,b,T){return te(le(h),p,b,T)}function K(p,h,b,T){return te(V(h),p,b,T)}function C(p,h,b,T){return te(fe(h,p.length-b),p,b,T)}a.prototype.write=function(h,b,T,U){if(b===void 0)U="utf8",T=this.length,b=0;else if(T===void 0&&typeof b=="string")U=b,T=this.length,b=0;else if(isFinite(b))b=b>>>0,isFinite(T)?(T=T>>>0,U===void 0&&(U="utf8")):(U=T,T=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const ee=this.length-b;if((T===void 0||T>ee)&&(T=ee),h.length>0&&(T<0||b<0)||b>this.length)throw new RangeError("Attempt to write outside buffer bounds");U||(U="utf8");let ye=!1;for(;;)switch(U){case"hex":return N(this,h,b,T);case"utf8":case"utf-8":return B(this,h,b,T);case"ascii":case"latin1":case"binary":return q(this,h,b,T);case"base64":return K(this,h,b,T);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,h,b,T);default:if(ye)throw new TypeError("Unknown encoding: "+U);U=(""+U).toLowerCase(),ye=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function M(p,h,b){return h===0&&b===p.length?e.fromByteArray(p):e.fromByteArray(p.slice(h,b))}function L(p,h,b){b=Math.min(p.length,b);const T=[];let U=h;for(;U<b;){const ee=p[U];let ye=null,Ae=ee>239?4:ee>223?3:ee>191?2:1;if(U+Ae<=b){let Re,xe,Oe,Me;switch(Ae){case 1:ee<128&&(ye=ee);break;case 2:Re=p[U+1],(Re&192)===128&&(Me=(ee&31)<<6|Re&63,Me>127&&(ye=Me));break;case 3:Re=p[U+1],xe=p[U+2],(Re&192)===128&&(xe&192)===128&&(Me=(ee&15)<<12|(Re&63)<<6|xe&63,Me>2047&&(Me<55296||Me>57343)&&(ye=Me));break;case 4:Re=p[U+1],xe=p[U+2],Oe=p[U+3],(Re&192)===128&&(xe&192)===128&&(Oe&192)===128&&(Me=(ee&15)<<18|(Re&63)<<12|(xe&63)<<6|Oe&63,Me>65535&&Me<1114112&&(ye=Me))}}ye===null?(ye=65533,Ae=1):ye>65535&&(ye-=65536,T.push(ye>>>10&1023|55296),ye=56320|ye&1023),T.push(ye),U+=Ae}return G(T)}const H=4096;function G(p){const h=p.length;if(h<=H)return String.fromCharCode.apply(String,p);let b="",T=0;for(;T<h;)b+=String.fromCharCode.apply(String,p.slice(T,T+=H));return b}function z(p,h,b){let T="";b=Math.min(p.length,b);for(let U=h;U<b;++U)T+=String.fromCharCode(p[U]&127);return T}function F(p,h,b){let T="";b=Math.min(p.length,b);for(let U=h;U<b;++U)T+=String.fromCharCode(p[U]);return T}function ne(p,h,b){const T=p.length;(!h||h<0)&&(h=0),(!b||b<0||b>T)&&(b=T);let U="";for(let ee=h;ee<b;++ee)U+=ae[p[ee]];return U}function ce(p,h,b){const T=p.slice(h,b);let U="";for(let ee=0;ee<T.length-1;ee+=2)U+=String.fromCharCode(T[ee]+T[ee+1]*256);return U}a.prototype.slice=function(h,b){const T=this.length;h=~~h,b=b===void 0?T:~~b,h<0?(h+=T,h<0&&(h=0)):h>T&&(h=T),b<0?(b+=T,b<0&&(b=0)):b>T&&(b=T),b<h&&(b=h);const U=this.subarray(h,b);return Object.setPrototypeOf(U,a.prototype),U};function re(p,h,b){if(p%1!==0||p<0)throw new RangeError("offset is not uint");if(p+h>b)throw new RangeError("Trying to access beyond buffer length")}a.prototype.readUintLE=a.prototype.readUIntLE=function(h,b,T){h=h>>>0,b=b>>>0,T||re(h,b,this.length);let U=this[h],ee=1,ye=0;for(;++ye<b&&(ee*=256);)U+=this[h+ye]*ee;return U},a.prototype.readUintBE=a.prototype.readUIntBE=function(h,b,T){h=h>>>0,b=b>>>0,T||re(h,b,this.length);let U=this[h+--b],ee=1;for(;b>0&&(ee*=256);)U+=this[h+--b]*ee;return U},a.prototype.readUint8=a.prototype.readUInt8=function(h,b){return h=h>>>0,b||re(h,1,this.length),this[h]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(h,b){return h=h>>>0,b||re(h,2,this.length),this[h]|this[h+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(h,b){return h=h>>>0,b||re(h,2,this.length),this[h]<<8|this[h+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(h,b){return h=h>>>0,b||re(h,4,this.length),(this[h]|this[h+1]<<8|this[h+2]<<16)+this[h+3]*16777216},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(h,b){return h=h>>>0,b||re(h,4,this.length),this[h]*16777216+(this[h+1]<<16|this[h+2]<<8|this[h+3])},a.prototype.readBigUInt64LE=me(function(h){h=h>>>0,I(h,"offset");const b=this[h],T=this[h+7];(b===void 0||T===void 0)&&P(h,this.length-8);const U=b+this[++h]*2**8+this[++h]*2**16+this[++h]*2**24,ee=this[++h]+this[++h]*2**8+this[++h]*2**16+T*2**24;return BigInt(U)+(BigInt(ee)<<BigInt(32))}),a.prototype.readBigUInt64BE=me(function(h){h=h>>>0,I(h,"offset");const b=this[h],T=this[h+7];(b===void 0||T===void 0)&&P(h,this.length-8);const U=b*2**24+this[++h]*2**16+this[++h]*2**8+this[++h],ee=this[++h]*2**24+this[++h]*2**16+this[++h]*2**8+T;return(BigInt(U)<<BigInt(32))+BigInt(ee)}),a.prototype.readIntLE=function(h,b,T){h=h>>>0,b=b>>>0,T||re(h,b,this.length);let U=this[h],ee=1,ye=0;for(;++ye<b&&(ee*=256);)U+=this[h+ye]*ee;return ee*=128,U>=ee&&(U-=Math.pow(2,8*b)),U},a.prototype.readIntBE=function(h,b,T){h=h>>>0,b=b>>>0,T||re(h,b,this.length);let U=b,ee=1,ye=this[h+--U];for(;U>0&&(ee*=256);)ye+=this[h+--U]*ee;return ee*=128,ye>=ee&&(ye-=Math.pow(2,8*b)),ye},a.prototype.readInt8=function(h,b){return h=h>>>0,b||re(h,1,this.length),this[h]&128?(255-this[h]+1)*-1:this[h]},a.prototype.readInt16LE=function(h,b){h=h>>>0,b||re(h,2,this.length);const T=this[h]|this[h+1]<<8;return T&32768?T|4294901760:T},a.prototype.readInt16BE=function(h,b){h=h>>>0,b||re(h,2,this.length);const T=this[h+1]|this[h]<<8;return T&32768?T|4294901760:T},a.prototype.readInt32LE=function(h,b){return h=h>>>0,b||re(h,4,this.length),this[h]|this[h+1]<<8|this[h+2]<<16|this[h+3]<<24},a.prototype.readInt32BE=function(h,b){return h=h>>>0,b||re(h,4,this.length),this[h]<<24|this[h+1]<<16|this[h+2]<<8|this[h+3]},a.prototype.readBigInt64LE=me(function(h){h=h>>>0,I(h,"offset");const b=this[h],T=this[h+7];(b===void 0||T===void 0)&&P(h,this.length-8);const U=this[h+4]+this[h+5]*2**8+this[h+6]*2**16+(T<<24);return(BigInt(U)<<BigInt(32))+BigInt(b+this[++h]*2**8+this[++h]*2**16+this[++h]*2**24)}),a.prototype.readBigInt64BE=me(function(h){h=h>>>0,I(h,"offset");const b=this[h],T=this[h+7];(b===void 0||T===void 0)&&P(h,this.length-8);const U=(b<<24)+this[++h]*2**16+this[++h]*2**8+this[++h];return(BigInt(U)<<BigInt(32))+BigInt(this[++h]*2**24+this[++h]*2**16+this[++h]*2**8+T)}),a.prototype.readFloatLE=function(h,b){return h=h>>>0,b||re(h,4,this.length),r.read(this,h,!0,23,4)},a.prototype.readFloatBE=function(h,b){return h=h>>>0,b||re(h,4,this.length),r.read(this,h,!1,23,4)},a.prototype.readDoubleLE=function(h,b){return h=h>>>0,b||re(h,8,this.length),r.read(this,h,!0,52,8)},a.prototype.readDoubleBE=function(h,b){return h=h>>>0,b||re(h,8,this.length),r.read(this,h,!1,52,8)};function R(p,h,b,T,U,ee){if(!a.isBuffer(p))throw new TypeError('"buffer" argument must be a Buffer instance');if(h>U||h<ee)throw new RangeError('"value" argument is out of bounds');if(b+T>p.length)throw new RangeError("Index out of range")}a.prototype.writeUintLE=a.prototype.writeUIntLE=function(h,b,T,U){if(h=+h,b=b>>>0,T=T>>>0,!U){const Ae=Math.pow(2,8*T)-1;R(this,h,b,T,Ae,0)}let ee=1,ye=0;for(this[b]=h&255;++ye<T&&(ee*=256);)this[b+ye]=h/ee&255;return b+T},a.prototype.writeUintBE=a.prototype.writeUIntBE=function(h,b,T,U){if(h=+h,b=b>>>0,T=T>>>0,!U){const Ae=Math.pow(2,8*T)-1;R(this,h,b,T,Ae,0)}let ee=T-1,ye=1;for(this[b+ee]=h&255;--ee>=0&&(ye*=256);)this[b+ee]=h/ye&255;return b+T},a.prototype.writeUint8=a.prototype.writeUInt8=function(h,b,T){return h=+h,b=b>>>0,T||R(this,h,b,1,255,0),this[b]=h&255,b+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(h,b,T){return h=+h,b=b>>>0,T||R(this,h,b,2,65535,0),this[b]=h&255,this[b+1]=h>>>8,b+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(h,b,T){return h=+h,b=b>>>0,T||R(this,h,b,2,65535,0),this[b]=h>>>8,this[b+1]=h&255,b+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(h,b,T){return h=+h,b=b>>>0,T||R(this,h,b,4,4294967295,0),this[b+3]=h>>>24,this[b+2]=h>>>16,this[b+1]=h>>>8,this[b]=h&255,b+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(h,b,T){return h=+h,b=b>>>0,T||R(this,h,b,4,4294967295,0),this[b]=h>>>24,this[b+1]=h>>>16,this[b+2]=h>>>8,this[b+3]=h&255,b+4};function Q(p,h,b,T,U){ue(h,T,U,p,b,7);let ee=Number(h&BigInt(4294967295));p[b++]=ee,ee=ee>>8,p[b++]=ee,ee=ee>>8,p[b++]=ee,ee=ee>>8,p[b++]=ee;let ye=Number(h>>BigInt(32)&BigInt(4294967295));return p[b++]=ye,ye=ye>>8,p[b++]=ye,ye=ye>>8,p[b++]=ye,ye=ye>>8,p[b++]=ye,b}function de(p,h,b,T,U){ue(h,T,U,p,b,7);let ee=Number(h&BigInt(4294967295));p[b+7]=ee,ee=ee>>8,p[b+6]=ee,ee=ee>>8,p[b+5]=ee,ee=ee>>8,p[b+4]=ee;let ye=Number(h>>BigInt(32)&BigInt(4294967295));return p[b+3]=ye,ye=ye>>8,p[b+2]=ye,ye=ye>>8,p[b+1]=ye,ye=ye>>8,p[b]=ye,b+8}a.prototype.writeBigUInt64LE=me(function(h,b=0){return Q(this,h,b,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeBigUInt64BE=me(function(h,b=0){return de(this,h,b,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeIntLE=function(h,b,T,U){if(h=+h,b=b>>>0,!U){const Re=Math.pow(2,8*T-1);R(this,h,b,T,Re-1,-Re)}let ee=0,ye=1,Ae=0;for(this[b]=h&255;++ee<T&&(ye*=256);)h<0&&Ae===0&&this[b+ee-1]!==0&&(Ae=1),this[b+ee]=(h/ye>>0)-Ae&255;return b+T},a.prototype.writeIntBE=function(h,b,T,U){if(h=+h,b=b>>>0,!U){const Re=Math.pow(2,8*T-1);R(this,h,b,T,Re-1,-Re)}let ee=T-1,ye=1,Ae=0;for(this[b+ee]=h&255;--ee>=0&&(ye*=256);)h<0&&Ae===0&&this[b+ee+1]!==0&&(Ae=1),this[b+ee]=(h/ye>>0)-Ae&255;return b+T},a.prototype.writeInt8=function(h,b,T){return h=+h,b=b>>>0,T||R(this,h,b,1,127,-128),h<0&&(h=255+h+1),this[b]=h&255,b+1},a.prototype.writeInt16LE=function(h,b,T){return h=+h,b=b>>>0,T||R(this,h,b,2,32767,-32768),this[b]=h&255,this[b+1]=h>>>8,b+2},a.prototype.writeInt16BE=function(h,b,T){return h=+h,b=b>>>0,T||R(this,h,b,2,32767,-32768),this[b]=h>>>8,this[b+1]=h&255,b+2},a.prototype.writeInt32LE=function(h,b,T){return h=+h,b=b>>>0,T||R(this,h,b,4,2147483647,-2147483648),this[b]=h&255,this[b+1]=h>>>8,this[b+2]=h>>>16,this[b+3]=h>>>24,b+4},a.prototype.writeInt32BE=function(h,b,T){return h=+h,b=b>>>0,T||R(this,h,b,4,2147483647,-2147483648),h<0&&(h=4294967295+h+1),this[b]=h>>>24,this[b+1]=h>>>16,this[b+2]=h>>>8,this[b+3]=h&255,b+4},a.prototype.writeBigInt64LE=me(function(h,b=0){return Q(this,h,b,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),a.prototype.writeBigInt64BE=me(function(h,b=0){return de(this,h,b,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ge(p,h,b,T,U,ee){if(b+T>p.length)throw new RangeError("Index out of range");if(b<0)throw new RangeError("Index out of range")}function pe(p,h,b,T,U){return h=+h,b=b>>>0,U||ge(p,h,b,4),r.write(p,h,b,T,23,4),b+4}a.prototype.writeFloatLE=function(h,b,T){return pe(this,h,b,!0,T)},a.prototype.writeFloatBE=function(h,b,T){return pe(this,h,b,!1,T)};function X(p,h,b,T,U){return h=+h,b=b>>>0,U||ge(p,h,b,8),r.write(p,h,b,T,52,8),b+8}a.prototype.writeDoubleLE=function(h,b,T){return X(this,h,b,!0,T)},a.prototype.writeDoubleBE=function(h,b,T){return X(this,h,b,!1,T)},a.prototype.copy=function(h,b,T,U){if(!a.isBuffer(h))throw new TypeError("argument should be a Buffer");if(T||(T=0),!U&&U!==0&&(U=this.length),b>=h.length&&(b=h.length),b||(b=0),U>0&&U<T&&(U=T),U===T||h.length===0||this.length===0)return 0;if(b<0)throw new RangeError("targetStart out of bounds");if(T<0||T>=this.length)throw new RangeError("Index out of range");if(U<0)throw new RangeError("sourceEnd out of bounds");U>this.length&&(U=this.length),h.length-b<U-T&&(U=h.length-b+T);const ee=U-T;return this===h&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(b,T,U):Uint8Array.prototype.set.call(h,this.subarray(T,U),b),ee},a.prototype.fill=function(h,b,T,U){if(typeof h=="string"){if(typeof b=="string"?(U=b,b=0,T=this.length):typeof T=="string"&&(U=T,T=this.length),U!==void 0&&typeof U!="string")throw new TypeError("encoding must be a string");if(typeof U=="string"&&!a.isEncoding(U))throw new TypeError("Unknown encoding: "+U);if(h.length===1){const ye=h.charCodeAt(0);(U==="utf8"&&ye<128||U==="latin1")&&(h=ye)}}else typeof h=="number"?h=h&255:typeof h=="boolean"&&(h=Number(h));if(b<0||this.length<b||this.length<T)throw new RangeError("Out of range index");if(T<=b)return this;b=b>>>0,T=T===void 0?this.length:T>>>0,h||(h=0);let ee;if(typeof h=="number")for(ee=b;ee<T;++ee)this[ee]=h;else{const ye=a.isBuffer(h)?h:a.from(h,U),Ae=ye.length;if(Ae===0)throw new TypeError('The value "'+h+'" is invalid for argument "value"');for(ee=0;ee<T-b;++ee)this[ee+b]=ye[ee%Ae]}return this};const Y={};function ie(p,h,b){Y[p]=class extends b{constructor(){super(),Object.defineProperty(this,"message",{value:h.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${p}]`,this.stack,delete this.name}get code(){return p}set code(U){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:U,writable:!0})}toString(){return`${this.name} [${p}]: ${this.message}`}}}ie("ERR_BUFFER_OUT_OF_BOUNDS",function(p){return p?`${p} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),ie("ERR_INVALID_ARG_TYPE",function(p,h){return`The "${p}" argument must be of type number. Received type ${typeof h}`},TypeError),ie("ERR_OUT_OF_RANGE",function(p,h,b){let T=`The value of "${p}" is out of range.`,U=b;return Number.isInteger(b)&&Math.abs(b)>2**32?U=be(String(b)):typeof b=="bigint"&&(U=String(b),(b>BigInt(2)**BigInt(32)||b<-(BigInt(2)**BigInt(32)))&&(U=be(U)),U+="n"),T+=` It must be ${h}. Received ${U}`,T},RangeError);function be(p){let h="",b=p.length;const T=p[0]==="-"?1:0;for(;b>=T+4;b-=3)h=`_${p.slice(b-3,b)}${h}`;return`${p.slice(0,b)}${h}`}function he(p,h,b){I(h,"offset"),(p[h]===void 0||p[h+b]===void 0)&&P(h,p.length-(b+1))}function ue(p,h,b,T,U,ee){if(p>b||p<h){const ye=typeof h=="bigint"?"n":"";let Ae;throw h===0||h===BigInt(0)?Ae=`>= 0${ye} and < 2${ye} ** ${(ee+1)*8}${ye}`:Ae=`>= -(2${ye} ** ${(ee+1)*8-1}${ye}) and < 2 ** ${(ee+1)*8-1}${ye}`,new Y.ERR_OUT_OF_RANGE("value",Ae,p)}he(T,U,ee)}function I(p,h){if(typeof p!="number")throw new Y.ERR_INVALID_ARG_TYPE(h,"number",p)}function P(p,h,b){throw Math.floor(p)!==p?(I(p,b),new Y.ERR_OUT_OF_RANGE("offset","an integer",p)):h<0?new Y.ERR_BUFFER_OUT_OF_BOUNDS:new Y.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${h}`,p)}const O=/[^+/0-9A-Za-z-_]/g;function j(p){if(p=p.split("=")[0],p=p.trim().replace(O,""),p.length<2)return"";for(;p.length%4!==0;)p=p+"=";return p}function W(p,h){h=h||1/0;let b;const T=p.length;let U=null;const ee=[];for(let ye=0;ye<T;++ye){if(b=p.charCodeAt(ye),b>55295&&b<57344){if(!U){if(b>56319){(h-=3)>-1&&ee.push(239,191,189);continue}else if(ye+1===T){(h-=3)>-1&&ee.push(239,191,189);continue}U=b;continue}if(b<56320){(h-=3)>-1&&ee.push(239,191,189),U=b;continue}b=(U-55296<<10|b-56320)+65536}else U&&(h-=3)>-1&&ee.push(239,191,189);if(U=null,b<128){if((h-=1)<0)break;ee.push(b)}else if(b<2048){if((h-=2)<0)break;ee.push(b>>6|192,b&63|128)}else if(b<65536){if((h-=3)<0)break;ee.push(b>>12|224,b>>6&63|128,b&63|128)}else if(b<1114112){if((h-=4)<0)break;ee.push(b>>18|240,b>>12&63|128,b>>6&63|128,b&63|128)}else throw new Error("Invalid code point")}return ee}function le(p){const h=[];for(let b=0;b<p.length;++b)h.push(p.charCodeAt(b)&255);return h}function fe(p,h){let b,T,U;const ee=[];for(let ye=0;ye<p.length&&!((h-=2)<0);++ye)b=p.charCodeAt(ye),T=b>>8,U=b%256,ee.push(U),ee.push(T);return ee}function V(p){return e.toByteArray(j(p))}function te(p,h,b,T){let U;for(U=0;U<T&&!(U+b>=h.length||U>=p.length);++U)h[U+b]=p[U];return U}function $(p,h){return p instanceof h||p!=null&&p.constructor!=null&&p.constructor.name!=null&&p.constructor.name===h.name}function J(p){return p!==p}const ae=function(){const p="0123456789abcdef",h=new Array(256);for(let b=0;b<16;++b){const T=b*16;for(let U=0;U<16;++U)h[T+U]=p[b]+p[U]}return h}();function me(p){return typeof BigInt>"u"?w:p}function w(){throw new Error("BigInt not supported")}})(nr);var at={ArrayIsArray(t){return Array.isArray(t)},ArrayPrototypeIncludes(t,e){return t.includes(e)},ArrayPrototypeIndexOf(t,e){return t.indexOf(e)},ArrayPrototypeJoin(t,e){return t.join(e)},ArrayPrototypeMap(t,e){return t.map(e)},ArrayPrototypePop(t,e){return t.pop(e)},ArrayPrototypePush(t,e){return t.push(e)},ArrayPrototypeSlice(t,e,r){return t.slice(e,r)},Error,FunctionPrototypeCall(t,e,...r){return t.call(e,...r)},FunctionPrototypeSymbolHasInstance(t,e){return Function.prototype[Symbol.hasInstance].call(t,e)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(t,e){return Object.defineProperties(t,e)},ObjectDefineProperty(t,e,r){return Object.defineProperty(t,e,r)},ObjectGetOwnPropertyDescriptor(t,e){return Object.getOwnPropertyDescriptor(t,e)},ObjectKeys(t){return Object.keys(t)},ObjectSetPrototypeOf(t,e){return Object.setPrototypeOf(t,e)},Promise,PromisePrototypeCatch(t,e){return t.catch(e)},PromisePrototypeThen(t,e,r){return t.then(e,r)},PromiseReject(t){return Promise.reject(t)},PromiseResolve(t){return Promise.resolve(t)},ReflectApply:Reflect.apply,RegExpPrototypeTest(t,e){return t.test(e)},SafeSet:Set,String,StringPrototypeSlice(t,e,r){return t.slice(e,r)},StringPrototypeToLowerCase(t){return t.toLowerCase()},StringPrototypeToUpperCase(t){return t.toUpperCase()},StringPrototypeTrim(t){return t.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol("Symbol.dispose"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol("Symbol.asyncDispose"),TypedArrayPrototypeSet(t,e,r){return t.set(e,r)},Boolean,Uint8Array},F_={exports:{}},vo={exports:{}},w0;function na(){if(w0)return vo.exports;w0=1;const{AbortController:t,AbortSignal:e}=typeof self<"u"?self:typeof window<"u"?window:void 0;return vo.exports=t,vo.exports.AbortSignal=e,vo.exports.default=t,vo.exports}var jp={exports:{}},Ps=typeof Reflect=="object"?Reflect:null,v0=Ps&&typeof Ps.apply=="function"?Ps.apply:function(e,r,n){return Function.prototype.apply.call(e,r,n)},yl;Ps&&typeof Ps.ownKeys=="function"?yl=Ps.ownKeys:Object.getOwnPropertySymbols?yl=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:yl=function(e){return Object.getOwnPropertyNames(e)};function _I(t){console&&console.warn&&console.warn(t)}var U_=Number.isNaN||function(e){return e!==e};function Ge(){Ge.init.call(this)}jp.exports=Ge;jp.exports.once=xI;Ge.EventEmitter=Ge;Ge.prototype._events=void 0;Ge.prototype._eventsCount=0;Ge.prototype._maxListeners=void 0;var _0=10;function ku(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(Ge,"defaultMaxListeners",{enumerable:!0,get:function(){return _0},set:function(t){if(typeof t!="number"||t<0||U_(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");_0=t}});Ge.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ge.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||U_(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function j_(t){return t._maxListeners===void 0?Ge.defaultMaxListeners:t._maxListeners}Ge.prototype.getMaxListeners=function(){return j_(this)};Ge.prototype.emit=function(e){for(var r=[],n=1;n<arguments.length;n++)r.push(arguments[n]);var s=e==="error",i=this._events;if(i!==void 0)s=s&&i.error===void 0;else if(!s)return!1;if(s){var o;if(r.length>0&&(o=r[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var l=i[e];if(l===void 0)return!1;if(typeof l=="function")v0(l,this,r);else for(var u=l.length,c=q_(l,u),n=0;n<u;++n)v0(c[n],this,r);return!0};function W_(t,e,r,n){var s,i,o;if(ku(r),i=t._events,i===void 0?(i=t._events=Object.create(null),t._eventsCount=0):(i.newListener!==void 0&&(t.emit("newListener",e,r.listener?r.listener:r),i=t._events),o=i[e]),o===void 0)o=i[e]=r,++t._eventsCount;else if(typeof o=="function"?o=i[e]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),s=j_(t),s>0&&o.length>s&&!o.warned){o.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=t,a.type=e,a.count=o.length,_I(a)}return t}Ge.prototype.addListener=function(e,r){return W_(this,e,r,!1)};Ge.prototype.on=Ge.prototype.addListener;Ge.prototype.prependListener=function(e,r){return W_(this,e,r,!0)};function EI(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function z_(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},s=EI.bind(n);return s.listener=r,n.wrapFn=s,s}Ge.prototype.once=function(e,r){return ku(r),this.on(e,z_(this,e,r)),this};Ge.prototype.prependOnceListener=function(e,r){return ku(r),this.prependListener(e,z_(this,e,r)),this};Ge.prototype.removeListener=function(e,r){var n,s,i,o,a;if(ku(r),s=this._events,s===void 0)return this;if(n=s[e],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete s[e],s.removeListener&&this.emit("removeListener",e,n.listener||r));else if(typeof n!="function"){for(i=-1,o=n.length-1;o>=0;o--)if(n[o]===r||n[o].listener===r){a=n[o].listener,i=o;break}if(i<0)return this;i===0?n.shift():SI(n,i),n.length===1&&(s[e]=n[0]),s.removeListener!==void 0&&this.emit("removeListener",e,a||r)}return this};Ge.prototype.off=Ge.prototype.removeListener;Ge.prototype.removeAllListeners=function(e){var r,n,s;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var i=Object.keys(n),o;for(s=0;s<i.length;++s)o=i[s],o!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=n[e],typeof r=="function")this.removeListener(e,r);else if(r!==void 0)for(s=r.length-1;s>=0;s--)this.removeListener(e,r[s]);return this};function H_(t,e,r){var n=t._events;if(n===void 0)return[];var s=n[e];return s===void 0?[]:typeof s=="function"?r?[s.listener||s]:[s]:r?TI(s):q_(s,s.length)}Ge.prototype.listeners=function(e){return H_(this,e,!0)};Ge.prototype.rawListeners=function(e){return H_(this,e,!1)};Ge.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):V_.call(t,e)};Ge.prototype.listenerCount=V_;function V_(t){var e=this._events;if(e!==void 0){var r=e[t];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Ge.prototype.eventNames=function(){return this._eventsCount>0?yl(this._events):[]};function q_(t,e){for(var r=new Array(e),n=0;n<e;++n)r[n]=t[n];return r}function SI(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}function TI(t){for(var e=new Array(t.length),r=0;r<e.length;++r)e[r]=t[r].listener||t[r];return e}function xI(t,e){return new Promise(function(r,n){function s(o){t.removeListener(e,i),n(o)}function i(){typeof t.removeListener=="function"&&t.removeListener("error",s),r([].slice.call(arguments))}Y_(t,e,i,{once:!0}),e!=="error"&&AI(t,s,{once:!0})})}function AI(t,e,r){typeof t.on=="function"&&Y_(t,"error",e,r)}function Y_(t,e,r,n){if(typeof t.on=="function")n.once?t.once(e,r):t.on(e,r);else if(typeof t.addEventListener=="function")t.addEventListener(e,function s(i){n.once&&t.removeEventListener(e,s),r(i)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof t)}var Lu=jp.exports;(function(t){const e=nr,{kResistStopPropagation:r,SymbolDispose:n}=at,s=globalThis.AbortSignal||na().AbortSignal,i=globalThis.AbortController||na().AbortController,o=Object.getPrototypeOf(async function(){}).constructor,a=globalThis.Blob||e.Blob,l=typeof a<"u"?function(g){return g instanceof a}:function(g){return!1},u=(d,g)=>{if(d!==void 0&&(d===null||typeof d!="object"||!("aborted"in d)))throw new ERR_INVALID_ARG_TYPE(g,"AbortSignal",d)},c=(d,g)=>{if(typeof d!="function")throw new ERR_INVALID_ARG_TYPE(g,"Function",d)};class f extends Error{constructor(g){if(!Array.isArray(g))throw new TypeError(`Expected input to be an Array, got ${typeof g}`);let m="";for(let y=0;y<g.length;y++)m+=`    ${g[y].stack}
-`;super(m),this.name="AggregateError",this.errors=g}}t.exports={AggregateError:f,kEmptyObject:Object.freeze({}),once(d){let g=!1;return function(...m){g||(g=!0,d.apply(this,m))}},createDeferredPromise:function(){let d,g;return{promise:new Promise((y,E)=>{d=y,g=E}),resolve:d,reject:g}},promisify(d){return new Promise((g,m)=>{d((y,...E)=>y?m(y):g(...E))})},debuglog(){return function(){}},format(d,...g){return d.replace(/%([sdifj])/g,function(...[m,y]){const E=g.shift();return y==="f"?E.toFixed(6):y==="j"?JSON.stringify(E):y==="s"&&typeof E=="object"?`${E.constructor!==Object?E.constructor.name:""} {}`.trim():E.toString()})},inspect(d){switch(typeof d){case"string":if(d.includes("'"))if(d.includes('"')){if(!d.includes("`")&&!d.includes("${"))return`\`${d}\``}else return`"${d}"`;return`'${d}'`;case"number":return isNaN(d)?"NaN":Object.is(d,-0)?String(d):d;case"bigint":return`${String(d)}n`;case"boolean":case"undefined":return String(d);case"object":return"{}"}},types:{isAsyncFunction(d){return d instanceof o},isArrayBufferView(d){return ArrayBuffer.isView(d)}},isBlob:l,deprecate(d,g){return d},addAbortListener:Lu.addAbortListener||function(g,m){if(g===void 0)throw new ERR_INVALID_ARG_TYPE("signal","AbortSignal",g);u(g,"signal"),c(m,"listener");let y;return g.aborted?queueMicrotask(()=>m()):(g.addEventListener("abort",m,{__proto__:null,once:!0,[r]:!0}),y=()=>{g.removeEventListener("abort",m)}),{__proto__:null,[n](){var E;(E=y)===null||E===void 0||E()}}},AbortSignalAny:s.any||function(g){if(g.length===1)return g[0];const m=new i,y=()=>m.abort();return g.forEach(E=>{u(E,"signals"),E.addEventListener("abort",y,{once:!0})}),m.signal.addEventListener("abort",()=>{g.forEach(E=>E.removeEventListener("abort",y))},{once:!0}),m.signal}},t.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")})(F_);var Bt=F_.exports,Wp={};const{format:CI,inspect:ql,AggregateError:II}=Bt,MI=globalThis.AggregateError||II,OI=Symbol("kIsNodeError"),RI=["string","function","number","object","Function","Object","boolean","bigint","symbol"],PI=/^([A-Z][a-z0-9]*)+$/,kI="__node_internal_",Nu={};function Wi(t,e){if(!t)throw new Nu.ERR_INTERNAL_ASSERTION(e)}function E0(t){let e="",r=t.length;const n=t[0]==="-"?1:0;for(;r>=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function LI(t,e,r){if(typeof e=="function")return Wi(e.length<=r.length,`Code: ${t}; The provided arguments length (${r.length}) does not match the required ones (${e.length}).`),e(...r);const n=(e.match(/%[dfijoOs]/g)||[]).length;return Wi(n===r.length,`Code: ${t}; The provided arguments length (${r.length}) does not match the required ones (${n}).`),r.length===0?e:CI(e,...r)}function xt(t,e,r){r||(r=Error);class n extends r{constructor(...i){super(LI(t,e,i))}toString(){return`${this.name} [${t}]: ${this.message}`}}Object.defineProperties(n.prototype,{name:{value:r.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${t}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),n.prototype.code=t,n.prototype[OI]=!0,Nu[t]=n}function S0(t){const e=kI+t.name;return Object.defineProperty(t,"name",{value:e}),t}function NI(t,e){if(t&&e&&t!==e){if(Array.isArray(e.errors))return e.errors.push(t),e;const r=new MI([e,t],e.message);return r.code=e.code,r}return t||e}let DI=class extends Error{constructor(e="The operation was aborted",r=void 0){if(r!==void 0&&typeof r!="object")throw new Nu.ERR_INVALID_ARG_TYPE("options","Object",r);super(e,r),this.code="ABORT_ERR",this.name="AbortError"}};xt("ERR_ASSERTION","%s",Error);xt("ERR_INVALID_ARG_TYPE",(t,e,r)=>{Wi(typeof t=="string","'name' must be a string"),Array.isArray(e)||(e=[e]);let n="The ";t.endsWith(" argument")?n+=`${t} `:n+=`"${t}" ${t.includes(".")?"property":"argument"} `,n+="must be ";const s=[],i=[],o=[];for(const l of e)Wi(typeof l=="string","All expected entries have to be of type string"),RI.includes(l)?s.push(l.toLowerCase()):PI.test(l)?i.push(l):(Wi(l!=="object",'The value "object" should be written as "Object"'),o.push(l));if(i.length>0){const l=s.indexOf("object");l!==-1&&(s.splice(s,l,1),i.push("Object"))}if(s.length>0){switch(s.length){case 1:n+=`of type ${s[0]}`;break;case 2:n+=`one of type ${s[0]} or ${s[1]}`;break;default:{const l=s.pop();n+=`one of type ${s.join(", ")}, or ${l}`}}(i.length>0||o.length>0)&&(n+=" or ")}if(i.length>0){switch(i.length){case 1:n+=`an instance of ${i[0]}`;break;case 2:n+=`an instance of ${i[0]} or ${i[1]}`;break;default:{const l=i.pop();n+=`an instance of ${i.join(", ")}, or ${l}`}}o.length>0&&(n+=" or ")}switch(o.length){case 0:break;case 1:o[0].toLowerCase()!==o[0]&&(n+="an "),n+=`${o[0]}`;break;case 2:n+=`one of ${o[0]} or ${o[1]}`;break;default:{const l=o.pop();n+=`one of ${o.join(", ")}, or ${l}`}}if(r==null)n+=`. Received ${r}`;else if(typeof r=="function"&&r.name)n+=`. Received function ${r.name}`;else if(typeof r=="object"){var a;if((a=r.constructor)!==null&&a!==void 0&&a.name)n+=`. Received an instance of ${r.constructor.name}`;else{const l=ql(r,{depth:-1});n+=`. Received ${l}`}}else{let l=ql(r,{colors:!1});l.length>25&&(l=`${l.slice(0,25)}...`),n+=`. Received type ${typeof r} (${l})`}return n},TypeError);xt("ERR_INVALID_ARG_VALUE",(t,e,r="is invalid")=>{let n=ql(e);return n.length>128&&(n=n.slice(0,128)+"..."),`The ${t.includes(".")?"property":"argument"} '${t}' ${r}. Received ${n}`},TypeError);xt("ERR_INVALID_RETURN_VALUE",(t,e,r)=>{var n;const s=r!=null&&(n=r.constructor)!==null&&n!==void 0&&n.name?`instance of ${r.constructor.name}`:`type ${typeof r}`;return`Expected ${t} to be returned from the "${e}" function but got ${s}.`},TypeError);xt("ERR_MISSING_ARGS",(...t)=>{Wi(t.length>0,"At least one arg needs to be specified");let e;const r=t.length;switch(t=(Array.isArray(t)?t:[t]).map(n=>`"${n}"`).join(" or "),r){case 1:e+=`The ${t[0]} argument`;break;case 2:e+=`The ${t[0]} and ${t[1]} arguments`;break;default:{const n=t.pop();e+=`The ${t.join(", ")}, and ${n} arguments`}break}return`${e} must be specified`},TypeError);xt("ERR_OUT_OF_RANGE",(t,e,r)=>{Wi(e,'Missing "range" argument');let n;return Number.isInteger(r)&&Math.abs(r)>2**32?n=E0(String(r)):typeof r=="bigint"?(n=String(r),(r>2n**32n||r<-(2n**32n))&&(n=E0(n)),n+="n"):n=ql(r),`The value of "${t}" is out of range. It must be ${e}. Received ${n}`},RangeError);xt("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error);xt("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error);xt("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error);xt("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error);xt("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error);xt("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);xt("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error);xt("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error);xt("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error);xt("ERR_STREAM_WRITE_AFTER_END","write after end",Error);xt("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError);var qt={AbortError:DI,aggregateTwoErrors:S0(NI),hideStackFrames:S0,codes:Nu};const{ArrayIsArray:zp,ArrayPrototypeIncludes:G_,ArrayPrototypeJoin:K_,ArrayPrototypeMap:BI,NumberIsInteger:Hp,NumberIsNaN:$I,NumberMAX_SAFE_INTEGER:FI,NumberMIN_SAFE_INTEGER:UI,NumberParseInt:jI,ObjectPrototypeHasOwnProperty:WI,RegExpPrototypeExec:X_,String:zI,StringPrototypeToUpperCase:HI,StringPrototypeTrim:VI}=at,{hideStackFrames:hr,codes:{ERR_SOCKET_BAD_PORT:qI,ERR_INVALID_ARG_TYPE:Pt,ERR_INVALID_ARG_VALUE:io,ERR_OUT_OF_RANGE:Yi,ERR_UNKNOWN_SIGNAL:T0}}=qt,{normalizeEncoding:YI}=Bt,{isAsyncFunction:GI,isArrayBufferView:KI}=Bt.types,x0={};function XI(t){return t===(t|0)}function QI(t){return t===t>>>0}const JI=/^[0-7]+$/,ZI="must be a 32-bit unsigned integer or an octal string";function eM(t,e,r){if(typeof t>"u"&&(t=r),typeof t=="string"){if(X_(JI,t)===null)throw new io(e,t,ZI);t=jI(t,8)}return Q_(t,e),t}const tM=hr((t,e,r=UI,n=FI)=>{if(typeof t!="number")throw new Pt(e,"number",t);if(!Hp(t))throw new Yi(e,"an integer",t);if(t<r||t>n)throw new Yi(e,`>= ${r} && <= ${n}`,t)}),rM=hr((t,e,r=-2147483648,n=2147483647)=>{if(typeof t!="number")throw new Pt(e,"number",t);if(!Hp(t))throw new Yi(e,"an integer",t);if(t<r||t>n)throw new Yi(e,`>= ${r} && <= ${n}`,t)}),Q_=hr((t,e,r=!1)=>{if(typeof t!="number")throw new Pt(e,"number",t);if(!Hp(t))throw new Yi(e,"an integer",t);const n=r?1:0,s=4294967295;if(t<n||t>s)throw new Yi(e,`>= ${n} && <= ${s}`,t)});function Vp(t,e){if(typeof t!="string")throw new Pt(e,"string",t)}function nM(t,e,r=void 0,n){if(typeof t!="number")throw new Pt(e,"number",t);if(r!=null&&t<r||n!=null&&t>n||(r!=null||n!=null)&&$I(t))throw new Yi(e,`${r!=null?`>= ${r}`:""}${r!=null&&n!=null?" && ":""}${n!=null?`<= ${n}`:""}`,t)}const iM=hr((t,e,r)=>{if(!G_(r,t)){const s="must be one of: "+K_(BI(r,i=>typeof i=="string"?`'${i}'`:zI(i)),", ");throw new io(e,t,s)}});function J_(t,e){if(typeof t!="boolean")throw new Pt(e,"boolean",t)}function $c(t,e,r){return t==null||!WI(t,e)?r:t[e]}const sM=hr((t,e,r=null)=>{const n=$c(r,"allowArray",!1),s=$c(r,"allowFunction",!1);if(!$c(r,"nullable",!1)&&t===null||!n&&zp(t)||typeof t!="object"&&(!s||typeof t!="function"))throw new Pt(e,"Object",t)}),oM=hr((t,e)=>{if(t!=null&&typeof t!="object"&&typeof t!="function")throw new Pt(e,"a dictionary",t)}),Du=hr((t,e,r=0)=>{if(!zp(t))throw new Pt(e,"Array",t);if(t.length<r){const n=`must be longer than ${r}`;throw new io(e,t,n)}});function aM(t,e){Du(t,e);for(let r=0;r<t.length;r++)Vp(t[r],`${e}[${r}]`)}function lM(t,e){Du(t,e);for(let r=0;r<t.length;r++)J_(t[r],`${e}[${r}]`)}function uM(t,e){Du(t,e);for(let r=0;r<t.length;r++){const n=t[r],s=`${e}[${r}]`;if(n==null)throw new Pt(s,"AbortSignal",n);Z_(n,s)}}function cM(t,e="signal"){if(Vp(t,e),x0[t]===void 0)throw x0[HI(t)]!==void 0?new T0(t+" (signals must use all capital letters)"):new T0(t)}const fM=hr((t,e="buffer")=>{if(!KI(t))throw new Pt(e,["Buffer","TypedArray","DataView"],t)});function dM(t,e){const r=YI(e),n=t.length;if(r==="hex"&&n%2!==0)throw new io("encoding",e,`is invalid for data of length ${n}`)}function hM(t,e="Port",r=!0){if(typeof t!="number"&&typeof t!="string"||typeof t=="string"&&VI(t).length===0||+t!==+t>>>0||t>65535||t===0&&!r)throw new qI(e,t,r);return t|0}const Z_=hr((t,e)=>{if(t!==void 0&&(t===null||typeof t!="object"||!("aborted"in t)))throw new Pt(e,"AbortSignal",t)}),pM=hr((t,e)=>{if(typeof t!="function")throw new Pt(e,"Function",t)}),gM=hr((t,e)=>{if(typeof t!="function"||GI(t))throw new Pt(e,"Function",t)}),mM=hr((t,e)=>{if(t!==void 0)throw new Pt(e,"undefined",t)});function bM(t,e,r){if(!G_(r,t))throw new Pt(e,`('${K_(r,"|")}')`,t)}const yM=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function A0(t,e){if(typeof t>"u"||!X_(yM,t))throw new io(e,t,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function wM(t){if(typeof t=="string")return A0(t,"hints"),t;if(zp(t)){const e=t.length;let r="";if(e===0)return r;for(let n=0;n<e;n++){const s=t[n];A0(s,"hints"),r+=s,n!==e-1&&(r+=", ")}return r}throw new io("hints",t,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}var pa={isInt32:XI,isUint32:QI,parseFileMode:eM,validateArray:Du,validateStringArray:aM,validateBooleanArray:lM,validateAbortSignalArray:uM,validateBoolean:J_,validateBuffer:fM,validateDictionary:oM,validateEncoding:dM,validateFunction:pM,validateInt32:rM,validateInteger:tM,validateNumber:nM,validateObject:sM,validateOneOf:iM,validatePlainFunction:gM,validatePort:hM,validateSignalName:cM,validateString:Vp,validateUint32:Q_,validateUndefined:mM,validateUnion:bM,validateAbortSignal:Z_,validateLinkHeaderValue:wM},qp={exports:{}},eE={exports:{}},ut=eE.exports={},kr,Lr;function gh(){throw new Error("setTimeout has not been defined")}function mh(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?kr=setTimeout:kr=gh}catch{kr=gh}try{typeof clearTimeout=="function"?Lr=clearTimeout:Lr=mh}catch{Lr=mh}})();function tE(t){if(kr===setTimeout)return setTimeout(t,0);if((kr===gh||!kr)&&setTimeout)return kr=setTimeout,setTimeout(t,0);try{return kr(t,0)}catch{try{return kr.call(null,t,0)}catch{return kr.call(this,t,0)}}}function vM(t){if(Lr===clearTimeout)return clearTimeout(t);if((Lr===mh||!Lr)&&clearTimeout)return Lr=clearTimeout,clearTimeout(t);try{return Lr(t)}catch{try{return Lr.call(null,t)}catch{return Lr.call(this,t)}}}var ln=[],ks=!1,Ri,wl=-1;function _M(){!ks||!Ri||(ks=!1,Ri.length?ln=Ri.concat(ln):wl=-1,ln.length&&rE())}function rE(){if(!ks){var t=tE(_M);ks=!0;for(var e=ln.length;e;){for(Ri=ln,ln=[];++wl<e;)Ri&&Ri[wl].run();wl=-1,e=ln.length}Ri=null,ks=!1,vM(t)}}ut.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];ln.push(new nE(t,e)),ln.length===1&&!ks&&tE(rE)};function nE(t,e){this.fun=t,this.array=e}nE.prototype.run=function(){this.fun.apply(null,this.array)};ut.title="browser";ut.browser=!0;ut.env={};ut.argv=[];ut.version="";ut.versions={};function Pn(){}ut.on=Pn;ut.addListener=Pn;ut.once=Pn;ut.off=Pn;ut.removeListener=Pn;ut.removeAllListeners=Pn;ut.emit=Pn;ut.prependListener=Pn;ut.prependOnceListener=Pn;ut.listeners=function(t){return[]};ut.binding=function(t){throw new Error("process.binding is not supported")};ut.cwd=function(){return"/"};ut.chdir=function(t){throw new Error("process.chdir is not supported")};ut.umask=function(){return 0};var ns=eE.exports;const{SymbolAsyncIterator:C0,SymbolIterator:I0,SymbolFor:is}=at,iE=is("nodejs.stream.destroyed"),sE=is("nodejs.stream.errored"),bh=is("nodejs.stream.readable"),yh=is("nodejs.stream.writable"),oE=is("nodejs.stream.disturbed"),EM=is("nodejs.webstream.isClosedPromise"),SM=is("nodejs.webstream.controllerErrorFunction");function Bu(t,e=!1){var r;return!!(t&&typeof t.pipe=="function"&&typeof t.on=="function"&&(!e||typeof t.pause=="function"&&typeof t.resume=="function")&&(!t._writableState||((r=t._readableState)===null||r===void 0?void 0:r.readable)!==!1)&&(!t._writableState||t._readableState))}function $u(t){var e;return!!(t&&typeof t.write=="function"&&typeof t.on=="function"&&(!t._readableState||((e=t._writableState)===null||e===void 0?void 0:e.writable)!==!1))}function TM(t){return!!(t&&typeof t.pipe=="function"&&t._readableState&&typeof t.on=="function"&&typeof t.write=="function")}function Yr(t){return t&&(t._readableState||t._writableState||typeof t.write=="function"&&typeof t.on=="function"||typeof t.pipe=="function"&&typeof t.on=="function")}function aE(t){return!!(t&&!Yr(t)&&typeof t.pipeThrough=="function"&&typeof t.getReader=="function"&&typeof t.cancel=="function")}function lE(t){return!!(t&&!Yr(t)&&typeof t.getWriter=="function"&&typeof t.abort=="function")}function uE(t){return!!(t&&!Yr(t)&&typeof t.readable=="object"&&typeof t.writable=="object")}function xM(t){return aE(t)||lE(t)||uE(t)}function AM(t,e){return t==null?!1:e===!0?typeof t[C0]=="function":e===!1?typeof t[I0]=="function":typeof t[C0]=="function"||typeof t[I0]=="function"}function Fu(t){if(!Yr(t))return null;const e=t._writableState,r=t._readableState,n=e||r;return!!(t.destroyed||t[iE]||n!=null&&n.destroyed)}function cE(t){if(!$u(t))return null;if(t.writableEnded===!0)return!0;const e=t._writableState;return e!=null&&e.errored?!1:typeof(e==null?void 0:e.ended)!="boolean"?null:e.ended}function CM(t,e){if(!$u(t))return null;if(t.writableFinished===!0)return!0;const r=t._writableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.finished)!="boolean"?null:!!(r.finished||e===!1&&r.ended===!0&&r.length===0)}function IM(t){if(!Bu(t))return null;if(t.readableEnded===!0)return!0;const e=t._readableState;return!e||e.errored?!1:typeof(e==null?void 0:e.ended)!="boolean"?null:e.ended}function fE(t,e){if(!Bu(t))return null;const r=t._readableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.endEmitted)!="boolean"?null:!!(r.endEmitted||e===!1&&r.ended===!0&&r.length===0)}function dE(t){return t&&t[bh]!=null?t[bh]:typeof(t==null?void 0:t.readable)!="boolean"?null:Fu(t)?!1:Bu(t)&&t.readable&&!fE(t)}function hE(t){return t&&t[yh]!=null?t[yh]:typeof(t==null?void 0:t.writable)!="boolean"?null:Fu(t)?!1:$u(t)&&t.writable&&!cE(t)}function MM(t,e){return Yr(t)?Fu(t)?!0:!((e==null?void 0:e.readable)!==!1&&dE(t)||(e==null?void 0:e.writable)!==!1&&hE(t)):null}function OM(t){var e,r;return Yr(t)?t.writableErrored?t.writableErrored:(e=(r=t._writableState)===null||r===void 0?void 0:r.errored)!==null&&e!==void 0?e:null:null}function RM(t){var e,r;return Yr(t)?t.readableErrored?t.readableErrored:(e=(r=t._readableState)===null||r===void 0?void 0:r.errored)!==null&&e!==void 0?e:null:null}function PM(t){if(!Yr(t))return null;if(typeof t.closed=="boolean")return t.closed;const e=t._writableState,r=t._readableState;return typeof(e==null?void 0:e.closed)=="boolean"||typeof(r==null?void 0:r.closed)=="boolean"?(e==null?void 0:e.closed)||(r==null?void 0:r.closed):typeof t._closed=="boolean"&&pE(t)?t._closed:null}function pE(t){return typeof t._closed=="boolean"&&typeof t._defaultKeepAlive=="boolean"&&typeof t._removedConnection=="boolean"&&typeof t._removedContLen=="boolean"}function gE(t){return typeof t._sent100=="boolean"&&pE(t)}function kM(t){var e;return typeof t._consuming=="boolean"&&typeof t._dumped=="boolean"&&((e=t.req)===null||e===void 0?void 0:e.upgradeOrConnect)===void 0}function LM(t){if(!Yr(t))return null;const e=t._writableState,r=t._readableState,n=e||r;return!n&&gE(t)||!!(n&&n.autoDestroy&&n.emitClose&&n.closed===!1)}function NM(t){var e;return!!(t&&((e=t[oE])!==null&&e!==void 0?e:t.readableDidRead||t.readableAborted))}function DM(t){var e,r,n,s,i,o,a,l,u,c;return!!(t&&((e=(r=(n=(s=(i=(o=t[sE])!==null&&o!==void 0?o:t.readableErrored)!==null&&i!==void 0?i:t.writableErrored)!==null&&s!==void 0?s:(a=t._readableState)===null||a===void 0?void 0:a.errorEmitted)!==null&&n!==void 0?n:(l=t._writableState)===null||l===void 0?void 0:l.errorEmitted)!==null&&r!==void 0?r:(u=t._readableState)===null||u===void 0?void 0:u.errored)!==null&&e!==void 0?e:!((c=t._writableState)===null||c===void 0)&&c.errored))}var kn={isDestroyed:Fu,kIsDestroyed:iE,isDisturbed:NM,kIsDisturbed:oE,isErrored:DM,kIsErrored:sE,isReadable:dE,kIsReadable:bh,kIsClosedPromise:EM,kControllerErrorFunction:SM,kIsWritable:yh,isClosed:PM,isDuplexNodeStream:TM,isFinished:MM,isIterable:AM,isReadableNodeStream:Bu,isReadableStream:aE,isReadableEnded:IM,isReadableFinished:fE,isReadableErrored:RM,isNodeStream:Yr,isWebStream:xM,isWritable:hE,isWritableNodeStream:$u,isWritableStream:lE,isWritableEnded:cE,isWritableFinished:CM,isWritableErrored:OM,isServerRequest:kM,isServerResponse:gE,willEmitClose:LM,isTransformStream:uE};const qn=ns,{AbortError:mE,codes:BM}=qt,{ERR_INVALID_ARG_TYPE:$M,ERR_STREAM_PREMATURE_CLOSE:M0}=BM,{kEmptyObject:wh,once:vh}=Bt,{validateAbortSignal:FM,validateFunction:UM,validateObject:jM,validateBoolean:WM}=pa,{Promise:zM,PromisePrototypeThen:HM,SymbolDispose:bE}=at,{isClosed:VM,isReadable:O0,isReadableNodeStream:Fc,isReadableStream:qM,isReadableFinished:R0,isReadableErrored:P0,isWritable:k0,isWritableNodeStream:L0,isWritableStream:YM,isWritableFinished:N0,isWritableErrored:D0,isNodeStream:GM,willEmitClose:KM,kIsClosedPromise:XM}=kn;let Ls;function QM(t){return t.setHeader&&typeof t.abort=="function"}const _h=()=>{};function yE(t,e,r){var n,s;if(arguments.length===2?(r=e,e=wh):e==null?e=wh:jM(e,"options"),UM(r,"callback"),FM(e.signal,"options.signal"),r=vh(r),qM(t)||YM(t))return JM(t,e,r);if(!GM(t))throw new $M("stream",["ReadableStream","WritableStream","Stream"],t);const i=(n=e.readable)!==null&&n!==void 0?n:Fc(t),o=(s=e.writable)!==null&&s!==void 0?s:L0(t),a=t._writableState,l=t._readableState,u=()=>{t.writable||d()};let c=KM(t)&&Fc(t)===i&&L0(t)===o,f=N0(t,!1);const d=()=>{f=!0,t.destroyed&&(c=!1),!(c&&(!t.readable||i))&&(!i||g)&&r.call(t)};let g=R0(t,!1);const m=()=>{g=!0,t.destroyed&&(c=!1),!(c&&(!t.writable||o))&&(!o||f)&&r.call(t)},y=k=>{r.call(t,k)};let E=VM(t);const _=()=>{E=!0;const k=D0(t)||P0(t);if(k&&typeof k!="boolean")return r.call(t,k);if(i&&!g&&Fc(t,!0)&&!R0(t,!1))return r.call(t,new M0);if(o&&!f&&!N0(t,!1))return r.call(t,new M0);r.call(t)},S=()=>{E=!0;const k=D0(t)||P0(t);if(k&&typeof k!="boolean")return r.call(t,k);r.call(t)},v=()=>{t.req.on("finish",d)};QM(t)?(t.on("complete",d),c||t.on("abort",_),t.req?v():t.on("request",v)):o&&!a&&(t.on("end",u),t.on("close",u)),!c&&typeof t.aborted=="boolean"&&t.on("aborted",_),t.on("end",m),t.on("finish",d),e.error!==!1&&t.on("error",y),t.on("close",_),E?qn.nextTick(_):a!=null&&a.errorEmitted||l!=null&&l.errorEmitted?c||qn.nextTick(S):(!i&&(!c||O0(t))&&(f||k0(t)===!1)||!o&&(!c||k0(t))&&(g||O0(t)===!1)||l&&t.req&&t.aborted)&&qn.nextTick(S);const A=()=>{r=_h,t.removeListener("aborted",_),t.removeListener("complete",d),t.removeListener("abort",_),t.removeListener("request",v),t.req&&t.req.removeListener("finish",d),t.removeListener("end",u),t.removeListener("close",u),t.removeListener("finish",d),t.removeListener("end",m),t.removeListener("error",y),t.removeListener("close",_)};if(e.signal&&!E){const k=()=>{const x=r;A(),x.call(t,new mE(void 0,{cause:e.signal.reason}))};if(e.signal.aborted)qn.nextTick(k);else{Ls=Ls||Bt.addAbortListener;const x=Ls(e.signal,k),D=r;r=vh((...N)=>{x[bE](),D.apply(t,N)})}}return A}function JM(t,e,r){let n=!1,s=_h;if(e.signal)if(s=()=>{n=!0,r.call(t,new mE(void 0,{cause:e.signal.reason}))},e.signal.aborted)qn.nextTick(s);else{Ls=Ls||Bt.addAbortListener;const o=Ls(e.signal,s),a=r;r=vh((...l)=>{o[bE](),a.apply(t,l)})}const i=(...o)=>{n||qn.nextTick(()=>r.apply(t,o))};return HM(t[XM].promise,i,i),_h}function ZM(t,e){var r;let n=!1;return e===null&&(e=wh),(r=e)!==null&&r!==void 0&&r.cleanup&&(WM(e.cleanup,"cleanup"),n=e.cleanup),new zM((s,i)=>{const o=yE(t,e,a=>{n&&o(),a?i(a):s()})})}qp.exports=yE;qp.exports.finished=ZM;var oi=qp.exports;const Ur=ns,{aggregateTwoErrors:eO,codes:{ERR_MULTIPLE_CALLBACK:tO},AbortError:rO}=qt,{Symbol:wE}=at,{kIsDestroyed:nO,isDestroyed:iO,isFinished:sO,isServerRequest:oO}=kn,vE=wE("kDestroy"),Eh=wE("kConstruct");function _E(t,e,r){t&&(t.stack,e&&!e.errored&&(e.errored=t),r&&!r.errored&&(r.errored=t))}function aO(t,e){const r=this._readableState,n=this._writableState,s=n||r;return n!=null&&n.destroyed||r!=null&&r.destroyed?(typeof e=="function"&&e(),this):(_E(t,n,r),n&&(n.destroyed=!0),r&&(r.destroyed=!0),s.constructed?B0(this,t,e):this.once(vE,function(i){B0(this,eO(i,t),e)}),this)}function B0(t,e,r){let n=!1;function s(i){if(n)return;n=!0;const o=t._readableState,a=t._writableState;_E(i,a,o),a&&(a.closed=!0),o&&(o.closed=!0),typeof r=="function"&&r(i),i?Ur.nextTick(lO,t,i):Ur.nextTick(EE,t)}try{t._destroy(e||null,s)}catch(i){s(i)}}function lO(t,e){Sh(t,e),EE(t)}function EE(t){const e=t._readableState,r=t._writableState;r&&(r.closeEmitted=!0),e&&(e.closeEmitted=!0),(r!=null&&r.emitClose||e!=null&&e.emitClose)&&t.emit("close")}function Sh(t,e){const r=t._readableState,n=t._writableState;n!=null&&n.errorEmitted||r!=null&&r.errorEmitted||(n&&(n.errorEmitted=!0),r&&(r.errorEmitted=!0),t.emit("error",e))}function uO(){const t=this._readableState,e=this._writableState;t&&(t.constructed=!0,t.closed=!1,t.closeEmitted=!1,t.destroyed=!1,t.errored=null,t.errorEmitted=!1,t.reading=!1,t.ended=t.readable===!1,t.endEmitted=t.readable===!1),e&&(e.constructed=!0,e.destroyed=!1,e.closed=!1,e.closeEmitted=!1,e.errored=null,e.errorEmitted=!1,e.finalCalled=!1,e.prefinished=!1,e.ended=e.writable===!1,e.ending=e.writable===!1,e.finished=e.writable===!1)}function Th(t,e,r){const n=t._readableState,s=t._writableState;if(s!=null&&s.destroyed||n!=null&&n.destroyed)return this;n!=null&&n.autoDestroy||s!=null&&s.autoDestroy?t.destroy(e):e&&(e.stack,s&&!s.errored&&(s.errored=e),n&&!n.errored&&(n.errored=e),r?Ur.nextTick(Sh,t,e):Sh(t,e))}function cO(t,e){if(typeof t._construct!="function")return;const r=t._readableState,n=t._writableState;r&&(r.constructed=!1),n&&(n.constructed=!1),t.once(Eh,e),!(t.listenerCount(Eh)>1)&&Ur.nextTick(fO,t)}function fO(t){let e=!1;function r(n){if(e){Th(t,n??new tO);return}e=!0;const s=t._readableState,i=t._writableState,o=i||s;s&&(s.constructed=!0),i&&(i.constructed=!0),o.destroyed?t.emit(vE,n):n?Th(t,n,!0):Ur.nextTick(dO,t)}try{t._construct(n=>{Ur.nextTick(r,n)})}catch(n){Ur.nextTick(r,n)}}function dO(t){t.emit(Eh)}function $0(t){return(t==null?void 0:t.setHeader)&&typeof t.abort=="function"}function SE(t){t.emit("close")}function hO(t,e){t.emit("error",e),Ur.nextTick(SE,t)}function pO(t,e){!t||iO(t)||(!e&&!sO(t)&&(e=new rO),oO(t)?(t.socket=null,t.destroy(e)):$0(t)?t.abort():$0(t.req)?t.req.abort():typeof t.destroy=="function"?t.destroy(e):typeof t.close=="function"?t.close():e?Ur.nextTick(hO,t,e):Ur.nextTick(SE,t),t.destroyed||(t[nO]=!0))}var so={construct:cO,destroyer:pO,destroy:aO,undestroy:uO,errorOrDestroy:Th};const{ArrayIsArray:gO,ObjectSetPrototypeOf:TE}=at,{EventEmitter:Uu}=Lu;function ju(t){Uu.call(this,t)}TE(ju.prototype,Uu.prototype);TE(ju,Uu);ju.prototype.pipe=function(t,e){const r=this;function n(c){t.writable&&t.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function s(){r.readable&&r.resume&&r.resume()}t.on("drain",s),!t._isStdio&&(!e||e.end!==!1)&&(r.on("end",o),r.on("close",a));let i=!1;function o(){i||(i=!0,t.end())}function a(){i||(i=!0,typeof t.destroy=="function"&&t.destroy())}function l(c){u(),Uu.listenerCount(this,"error")===0&&this.emit("error",c)}xh(r,"error",l),xh(t,"error",l);function u(){r.removeListener("data",n),t.removeListener("drain",s),r.removeListener("end",o),r.removeListener("close",a),r.removeListener("error",l),t.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),t.removeListener("close",u)}return r.on("end",u),r.on("close",u),t.on("close",u),t.emit("pipe",r),t};function xh(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):gO(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}var Yp={Stream:ju,prependListener:xh},xE={exports:{}};(function(t){const{SymbolDispose:e}=at,{AbortError:r,codes:n}=qt,{isNodeStream:s,isWebStream:i,kControllerErrorFunction:o}=kn,a=oi,{ERR_INVALID_ARG_TYPE:l}=n;let u;const c=(f,d)=>{if(typeof f!="object"||!("aborted"in f))throw new l(d,"AbortSignal",f)};t.exports.addAbortSignal=function(d,g){if(c(d,"signal"),!s(g)&&!i(g))throw new l("stream",["ReadableStream","WritableStream","Stream"],g);return t.exports.addAbortSignalNoValidate(d,g)},t.exports.addAbortSignalNoValidate=function(f,d){if(typeof f!="object"||!("aborted"in f))return d;const g=s(d)?()=>{d.destroy(new r(void 0,{cause:f.reason}))}:()=>{d[o](new r(void 0,{cause:f.reason}))};if(f.aborted)g();else{u=u||Bt.addAbortListener;const m=u(f,g);a(d,m[e])}return d}})(xE);var Wu=xE.exports;const{StringPrototypeSlice:F0,SymbolIterator:mO,TypedArrayPrototypeSet:ja,Uint8Array:bO}=at,{Buffer:Uc}=nr,{inspect:yO}=Bt;var wO=class{constructor(){this.head=null,this.tail=null,this.length=0}push(e){const r={data:e,next:null};this.length>0?this.tail.next=r:this.head=r,this.tail=r,++this.length}unshift(e){const r={data:e,next:this.head};this.length===0&&(this.tail=r),this.head=r,++this.length}shift(){if(this.length===0)return;const e=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,e}clear(){this.head=this.tail=null,this.length=0}join(e){if(this.length===0)return"";let r=this.head,n=""+r.data;for(;(r=r.next)!==null;)n+=e+r.data;return n}concat(e){if(this.length===0)return Uc.alloc(0);const r=Uc.allocUnsafe(e>>>0);let n=this.head,s=0;for(;n;)ja(r,n.data,s),s+=n.data.length,n=n.next;return r}consume(e,r){const n=this.head.data;if(e<n.length){const s=n.slice(0,e);return this.head.data=n.slice(e),s}return e===n.length?this.shift():r?this._getString(e):this._getBuffer(e)}first(){return this.head.data}*[mO](){for(let e=this.head;e;e=e.next)yield e.data}_getString(e){let r="",n=this.head,s=0;do{const i=n.data;if(e>i.length)r+=i,e-=i.length;else{e===i.length?(r+=i,++s,n.next?this.head=n.next:this.head=this.tail=null):(r+=F0(i,0,e),this.head=n,n.data=F0(i,e));break}++s}while((n=n.next)!==null);return this.length-=s,r}_getBuffer(e){const r=Uc.allocUnsafe(e),n=e;let s=this.head,i=0;do{const o=s.data;if(e>o.length)ja(r,o,n-e),e-=o.length;else{e===o.length?(ja(r,o,n-e),++i,s.next?this.head=s.next:this.head=this.tail=null):(ja(r,new bO(o.buffer,o.byteOffset,e),n-e),this.head=s,s.data=o.slice(e));break}++i}while((s=s.next)!==null);return this.length-=i,r}[Symbol.for("nodejs.util.inspect.custom")](e,r){return yO(this,{...r,depth:0,customInspect:!1})}};const{MathFloor:vO,NumberIsInteger:_O}=at,{validateInteger:EO}=pa,{ERR_INVALID_ARG_VALUE:SO}=qt.codes;let AE=16*1024,CE=16;function TO(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function IE(t){return t?CE:AE}function xO(t,e){EO(e,"value",0),t?CE=e:AE=e}function AO(t,e,r,n){const s=TO(e,n,r);if(s!=null){if(!_O(s)||s<0){const i=n?`options.${r}`:"options.highWaterMark";throw new SO(i,s)}return vO(s)}return IE(t.objectMode)}var zu={getHighWaterMark:AO,getDefaultHighWaterMark:IE,setDefaultHighWaterMark:xO},ME={},Ah={exports:{}};/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */(function(t,e){var r=nr,n=r.Buffer;function s(o,a){for(var l in o)a[l]=o[l]}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=r:(s(r,e),e.Buffer=i);function i(o,a,l){return n(o,a,l)}i.prototype=Object.create(n.prototype),s(n,i),i.from=function(o,a,l){if(typeof o=="number")throw new TypeError("Argument must not be a number");return n(o,a,l)},i.alloc=function(o,a,l){if(typeof o!="number")throw new TypeError("Argument must be a number");var u=n(o);return a!==void 0?typeof l=="string"?u.fill(a,l):u.fill(a):u.fill(0),u},i.allocUnsafe=function(o){if(typeof o!="number")throw new TypeError("Argument must be a number");return n(o)},i.allocUnsafeSlow=function(o){if(typeof o!="number")throw new TypeError("Argument must be a number");return r.SlowBuffer(o)}})(Ah,Ah.exports);var CO=Ah.exports,Gp=CO.Buffer,U0=Gp.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function IO(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function MO(t){var e=IO(t);if(typeof e!="string"&&(Gp.isEncoding===U0||!U0(t)))throw new Error("Unknown encoding: "+t);return e||t}ME.StringDecoder=ga;function ga(t){this.encoding=MO(t);var e;switch(this.encoding){case"utf16le":this.text=NO,this.end=DO,e=4;break;case"utf8":this.fillLast=PO,e=4;break;case"base64":this.text=BO,this.end=$O,e=3;break;default:this.write=FO,this.end=UO;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=Gp.allocUnsafe(e)}ga.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||""};ga.prototype.end=LO;ga.prototype.text=kO;ga.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length};function jc(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function OO(t,e,r){var n=e.length-1;if(n<r)return 0;var s=jc(e[n]);return s>=0?(s>0&&(t.lastNeed=s-1),s):--n<r||s===-2?0:(s=jc(e[n]),s>=0?(s>0&&(t.lastNeed=s-2),s):--n<r||s===-2?0:(s=jc(e[n]),s>=0?(s>0&&(s===2?s=0:t.lastNeed=s-3),s):0))}function RO(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"�"}}function PO(t){var e=this.lastTotal-this.lastNeed,r=RO(this,t);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function kO(t,e){var r=OO(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)}function LO(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e}function NO(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function DO(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function BO(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function $O(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function FO(t){return t.toString(this.encoding)}function UO(t){return t&&t.length?this.write(t):""}const j0=ns,{PromisePrototypeThen:jO,SymbolAsyncIterator:W0,SymbolIterator:z0}=at,{Buffer:WO}=nr,{ERR_INVALID_ARG_TYPE:zO,ERR_STREAM_NULL_VALUES:HO}=qt.codes;function VO(t,e,r){let n;if(typeof e=="string"||e instanceof WO)return new t({objectMode:!0,...r,read(){this.push(e),this.push(null)}});let s;if(e&&e[W0])s=!0,n=e[W0]();else if(e&&e[z0])s=!1,n=e[z0]();else throw new zO("iterable",["Iterable"],e);const i=new t({objectMode:!0,highWaterMark:1,...r});let o=!1;i._read=function(){o||(o=!0,l())},i._destroy=function(u,c){jO(a(u),()=>j0.nextTick(c,u),f=>j0.nextTick(c,f||u))};async function a(u){const c=u!=null,f=typeof n.throw=="function";if(c&&f){const{value:d,done:g}=await n.throw(u);if(await d,g)return}if(typeof n.return=="function"){const{value:d}=await n.return();await d}}async function l(){for(;;){try{const{value:u,done:c}=s?await n.next():n.next();if(c)i.push(null);else{const f=u&&typeof u.then=="function"?await u:u;if(f===null)throw o=!1,new HO;if(i.push(f))continue;o=!1}}catch(u){i.destroy(u)}break}}return i}var OE=VO,Wc,H0;function Hu(){if(H0)return Wc;H0=1;const t=ns,{ArrayPrototypeIndexOf:e,NumberIsInteger:r,NumberIsNaN:n,NumberParseInt:s,ObjectDefineProperties:i,ObjectKeys:o,ObjectSetPrototypeOf:a,Promise:l,SafeSet:u,SymbolAsyncDispose:c,SymbolAsyncIterator:f,Symbol:d}=at;Wc=$,$.ReadableState=te;const{EventEmitter:g}=Lu,{Stream:m,prependListener:y}=Yp,{Buffer:E}=nr,{addAbortSignal:_}=Wu,S=oi;let v=Bt.debuglog("stream",Z=>{v=Z});const A=wO,k=so,{getHighWaterMark:x,getDefaultHighWaterMark:D}=zu,{aggregateTwoErrors:N,codes:{ERR_INVALID_ARG_TYPE:B,ERR_METHOD_NOT_IMPLEMENTED:q,ERR_OUT_OF_RANGE:K,ERR_STREAM_PUSH_AFTER_EOF:C,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:M},AbortError:L}=qt,{validateObject:H}=pa,G=d("kPaused"),{StringDecoder:z}=ME,F=OE;a($.prototype,m.prototype),a($,m);const ne=()=>{},{errorOrDestroy:ce}=k,re=1,R=2,Q=4,de=8,ge=16,pe=32,X=64,Y=128,ie=256,be=512,he=1024,ue=2048,I=4096,P=8192,O=16384,j=32768,W=65536,le=1<<17,fe=1<<18;function V(Z){return{enumerable:!1,get(){return(this.state&Z)!==0},set(se){se?this.state|=Z:this.state&=~Z}}}i(te.prototype,{objectMode:V(re),ended:V(R),endEmitted:V(Q),reading:V(de),constructed:V(ge),sync:V(pe),needReadable:V(X),emittedReadable:V(Y),readableListening:V(ie),resumeScheduled:V(be),errorEmitted:V(he),emitClose:V(ue),autoDestroy:V(I),destroyed:V(P),closed:V(O),closeEmitted:V(j),multiAwaitDrain:V(W),readingMore:V(le),dataEmitted:V(fe)});function te(Z,se,Ce){typeof Ce!="boolean"&&(Ce=se instanceof _n()),this.state=ue|I|ge|pe,Z&&Z.objectMode&&(this.state|=re),Ce&&Z&&Z.readableObjectMode&&(this.state|=re),this.highWaterMark=Z?x(this,Z,"readableHighWaterMark",Ce):D(!1),this.buffer=new A,this.length=0,this.pipes=[],this.flowing=null,this[G]=null,Z&&Z.emitClose===!1&&(this.state&=~ue),Z&&Z.autoDestroy===!1&&(this.state&=~I),this.errored=null,this.defaultEncoding=Z&&Z.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,Z&&Z.encoding&&(this.decoder=new z(Z.encoding),this.encoding=Z.encoding)}function $(Z){if(!(this instanceof $))return new $(Z);const se=this instanceof _n();this._readableState=new te(Z,this,se),Z&&(typeof Z.read=="function"&&(this._read=Z.read),typeof Z.destroy=="function"&&(this._destroy=Z.destroy),typeof Z.construct=="function"&&(this._construct=Z.construct),Z.signal&&!se&&_(Z.signal,this)),m.call(this,Z),k.construct(this,()=>{this._readableState.needReadable&&U(this,this._readableState)})}$.prototype.destroy=k.destroy,$.prototype._undestroy=k.undestroy,$.prototype._destroy=function(Z,se){se(Z)},$.prototype[g.captureRejectionSymbol]=function(Z){this.destroy(Z)},$.prototype[c]=function(){let Z;return this.destroyed||(Z=this.readableEnded?null:new L,this.destroy(Z)),new l((se,Ce)=>S(this,Ie=>Ie&&Ie!==Z?Ce(Ie):se(null)))},$.prototype.push=function(Z,se){return J(this,Z,se,!1)},$.prototype.unshift=function(Z,se){return J(this,Z,se,!0)};function J(Z,se,Ce,Ie){v("readableAddChunk",se);const Pe=Z._readableState;let At;if(Pe.state&re||(typeof se=="string"?(Ce=Ce||Pe.defaultEncoding,Pe.encoding!==Ce&&(Ie&&Pe.encoding?se=E.from(se,Ce).toString(Pe.encoding):(se=E.from(se,Ce),Ce=""))):se instanceof E?Ce="":m._isUint8Array(se)?(se=m._uint8ArrayToBuffer(se),Ce=""):se!=null&&(At=new B("chunk",["string","Buffer","Uint8Array"],se))),At)ce(Z,At);else if(se===null)Pe.state&=~de,h(Z,Pe);else if(Pe.state&re||se&&se.length>0)if(Ie)if(Pe.state&Q)ce(Z,new M);else{if(Pe.destroyed||Pe.errored)return!1;ae(Z,Pe,se,!0)}else if(Pe.ended)ce(Z,new C);else{if(Pe.destroyed||Pe.errored)return!1;Pe.state&=~de,Pe.decoder&&!Ce?(se=Pe.decoder.write(se),Pe.objectMode||se.length!==0?ae(Z,Pe,se,!1):U(Z,Pe)):ae(Z,Pe,se,!1)}else Ie||(Pe.state&=~de,U(Z,Pe));return!Pe.ended&&(Pe.length<Pe.highWaterMark||Pe.length===0)}function ae(Z,se,Ce,Ie){se.flowing&&se.length===0&&!se.sync&&Z.listenerCount("data")>0?(se.state&W?se.awaitDrainWriters.clear():se.awaitDrainWriters=null,se.dataEmitted=!0,Z.emit("data",Ce)):(se.length+=se.objectMode?1:Ce.length,Ie?se.buffer.unshift(Ce):se.buffer.push(Ce),se.state&X&&b(Z)),U(Z,se)}$.prototype.isPaused=function(){const Z=this._readableState;return Z[G]===!0||Z.flowing===!1},$.prototype.setEncoding=function(Z){const se=new z(Z);this._readableState.decoder=se,this._readableState.encoding=this._readableState.decoder.encoding;const Ce=this._readableState.buffer;let Ie="";for(const Pe of Ce)Ie+=se.write(Pe);return Ce.clear(),Ie!==""&&Ce.push(Ie),this._readableState.length=Ie.length,this};const me=1073741824;function w(Z){if(Z>me)throw new K("size","<= 1GiB",Z);return Z--,Z|=Z>>>1,Z|=Z>>>2,Z|=Z>>>4,Z|=Z>>>8,Z|=Z>>>16,Z++,Z}function p(Z,se){return Z<=0||se.length===0&&se.ended?0:se.state&re?1:n(Z)?se.flowing&&se.length?se.buffer.first().length:se.length:Z<=se.length?Z:se.ended?se.length:0}$.prototype.read=function(Z){v("read",Z),Z===void 0?Z=NaN:r(Z)||(Z=s(Z,10));const se=this._readableState,Ce=Z;if(Z>se.highWaterMark&&(se.highWaterMark=w(Z)),Z!==0&&(se.state&=~Y),Z===0&&se.needReadable&&((se.highWaterMark!==0?se.length>=se.highWaterMark:se.length>0)||se.ended))return v("read: emitReadable",se.length,se.ended),se.length===0&&se.ended?lt(this):b(this),null;if(Z=p(Z,se),Z===0&&se.ended)return se.length===0&&lt(this),null;let Ie=(se.state&X)!==0;if(v("need readable",Ie),(se.length===0||se.length-Z<se.highWaterMark)&&(Ie=!0,v("length less than watermark",Ie)),se.ended||se.reading||se.destroyed||se.errored||!se.constructed)Ie=!1,v("reading, ended or constructing",Ie);else if(Ie){v("do read"),se.state|=de|pe,se.length===0&&(se.state|=X);try{this._read(se.highWaterMark)}catch(At){ce(this,At)}se.state&=~pe,se.reading||(Z=p(Ce,se))}let Pe;return Z>0?Pe=Ze(Z,se):Pe=null,Pe===null?(se.needReadable=se.length<=se.highWaterMark,Z=0):(se.length-=Z,se.multiAwaitDrain?se.awaitDrainWriters.clear():se.awaitDrainWriters=null),se.length===0&&(se.ended||(se.needReadable=!0),Ce!==Z&&se.ended&&lt(this)),Pe!==null&&!se.errorEmitted&&!se.closeEmitted&&(se.dataEmitted=!0,this.emit("data",Pe)),Pe};function h(Z,se){if(v("onEofChunk"),!se.ended){if(se.decoder){const Ce=se.decoder.end();Ce&&Ce.length&&(se.buffer.push(Ce),se.length+=se.objectMode?1:Ce.length)}se.ended=!0,se.sync?b(Z):(se.needReadable=!1,se.emittedReadable=!0,T(Z))}}function b(Z){const se=Z._readableState;v("emitReadable",se.needReadable,se.emittedReadable),se.needReadable=!1,se.emittedReadable||(v("emitReadable",se.flowing),se.emittedReadable=!0,t.nextTick(T,Z))}function T(Z){const se=Z._readableState;v("emitReadable_",se.destroyed,se.length,se.ended),!se.destroyed&&!se.errored&&(se.length||se.ended)&&(Z.emit("readable"),se.emittedReadable=!1),se.needReadable=!se.flowing&&!se.ended&&se.length<=se.highWaterMark,Me(Z)}function U(Z,se){!se.readingMore&&se.constructed&&(se.readingMore=!0,t.nextTick(ee,Z,se))}function ee(Z,se){for(;!se.reading&&!se.ended&&(se.length<se.highWaterMark||se.flowing&&se.length===0);){const Ce=se.length;if(v("maybeReadMore read 0"),Z.read(0),Ce===se.length)break}se.readingMore=!1}$.prototype._read=function(Z){throw new q("_read()")},$.prototype.pipe=function(Z,se){const Ce=this,Ie=this._readableState;Ie.pipes.length===1&&(Ie.multiAwaitDrain||(Ie.multiAwaitDrain=!0,Ie.awaitDrainWriters=new u(Ie.awaitDrainWriters?[Ie.awaitDrainWriters]:[]))),Ie.pipes.push(Z),v("pipe count=%d opts=%j",Ie.pipes.length,se);const At=(!se||se.end!==!1)&&Z!==t.stdout&&Z!==t.stderr?jg:ho;Ie.endEmitted?t.nextTick(At):Ce.once("end",At),Z.on("unpipe",ir);function ir(fi,Kr){v("onunpipe"),fi===Ce&&Kr&&Kr.hasUnpiped===!1&&(Kr.hasUnpiped=!0,XS())}function jg(){v("onend"),Z.end()}let ci,Wg=!1;function XS(){v("cleanup"),Z.removeListener("close",fc),Z.removeListener("finish",dc),ci&&Z.removeListener("drain",ci),Z.removeListener("error",cc),Z.removeListener("unpipe",ir),Ce.removeListener("end",jg),Ce.removeListener("end",ho),Ce.removeListener("data",Hg),Wg=!0,ci&&Ie.awaitDrainWriters&&(!Z._writableState||Z._writableState.needDrain)&&ci()}function zg(){Wg||(Ie.pipes.length===1&&Ie.pipes[0]===Z?(v("false write response, pause",0),Ie.awaitDrainWriters=Z,Ie.multiAwaitDrain=!1):Ie.pipes.length>1&&Ie.pipes.includes(Z)&&(v("false write response, pause",Ie.awaitDrainWriters.size),Ie.awaitDrainWriters.add(Z)),Ce.pause()),ci||(ci=ye(Ce,Z),Z.on("drain",ci))}Ce.on("data",Hg);function Hg(fi){v("ondata");const Kr=Z.write(fi);v("dest.write",Kr),Kr===!1&&zg()}function cc(fi){if(v("onerror",fi),ho(),Z.removeListener("error",cc),Z.listenerCount("error")===0){const Kr=Z._writableState||Z._readableState;Kr&&!Kr.errorEmitted?ce(Z,fi):Z.emit("error",fi)}}y(Z,"error",cc);function fc(){Z.removeListener("finish",dc),ho()}Z.once("close",fc);function dc(){v("onfinish"),Z.removeListener("close",fc),ho()}Z.once("finish",dc);function ho(){v("unpipe"),Ce.unpipe(Z)}return Z.emit("pipe",Ce),Z.writableNeedDrain===!0?zg():Ie.flowing||(v("pipe resume"),Ce.resume()),Z};function ye(Z,se){return function(){const Ie=Z._readableState;Ie.awaitDrainWriters===se?(v("pipeOnDrain",1),Ie.awaitDrainWriters=null):Ie.multiAwaitDrain&&(v("pipeOnDrain",Ie.awaitDrainWriters.size),Ie.awaitDrainWriters.delete(se)),(!Ie.awaitDrainWriters||Ie.awaitDrainWriters.size===0)&&Z.listenerCount("data")&&Z.resume()}}$.prototype.unpipe=function(Z){const se=this._readableState,Ce={hasUnpiped:!1};if(se.pipes.length===0)return this;if(!Z){const Pe=se.pipes;se.pipes=[],this.pause();for(let At=0;At<Pe.length;At++)Pe[At].emit("unpipe",this,{hasUnpiped:!1});return this}const Ie=e(se.pipes,Z);return Ie===-1?this:(se.pipes.splice(Ie,1),se.pipes.length===0&&this.pause(),Z.emit("unpipe",this,Ce),this)},$.prototype.on=function(Z,se){const Ce=m.prototype.on.call(this,Z,se),Ie=this._readableState;return Z==="data"?(Ie.readableListening=this.listenerCount("readable")>0,Ie.flowing!==!1&&this.resume()):Z==="readable"&&!Ie.endEmitted&&!Ie.readableListening&&(Ie.readableListening=Ie.needReadable=!0,Ie.flowing=!1,Ie.emittedReadable=!1,v("on readable",Ie.length,Ie.reading),Ie.length?b(this):Ie.reading||t.nextTick(Re,this)),Ce},$.prototype.addListener=$.prototype.on,$.prototype.removeListener=function(Z,se){const Ce=m.prototype.removeListener.call(this,Z,se);return Z==="readable"&&t.nextTick(Ae,this),Ce},$.prototype.off=$.prototype.removeListener,$.prototype.removeAllListeners=function(Z){const se=m.prototype.removeAllListeners.apply(this,arguments);return(Z==="readable"||Z===void 0)&&t.nextTick(Ae,this),se};function Ae(Z){const se=Z._readableState;se.readableListening=Z.listenerCount("readable")>0,se.resumeScheduled&&se[G]===!1?se.flowing=!0:Z.listenerCount("data")>0?Z.resume():se.readableListening||(se.flowing=null)}function Re(Z){v("readable nexttick read 0"),Z.read(0)}$.prototype.resume=function(){const Z=this._readableState;return Z.flowing||(v("resume"),Z.flowing=!Z.readableListening,xe(this,Z)),Z[G]=!1,this};function xe(Z,se){se.resumeScheduled||(se.resumeScheduled=!0,t.nextTick(Oe,Z,se))}function Oe(Z,se){v("resume",se.reading),se.reading||Z.read(0),se.resumeScheduled=!1,Z.emit("resume"),Me(Z),se.flowing&&!se.reading&&Z.read(0)}$.prototype.pause=function(){return v("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(v("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[G]=!0,this};function Me(Z){const se=Z._readableState;for(v("flow",se.flowing);se.flowing&&Z.read()!==null;);}$.prototype.wrap=function(Z){let se=!1;Z.on("data",Ie=>{!this.push(Ie)&&Z.pause&&(se=!0,Z.pause())}),Z.on("end",()=>{this.push(null)}),Z.on("error",Ie=>{ce(this,Ie)}),Z.on("close",()=>{this.destroy()}),Z.on("destroy",()=>{this.destroy()}),this._read=()=>{se&&Z.resume&&(se=!1,Z.resume())};const Ce=o(Z);for(let Ie=1;Ie<Ce.length;Ie++){const Pe=Ce[Ie];this[Pe]===void 0&&typeof Z[Pe]=="function"&&(this[Pe]=Z[Pe].bind(Z))}return this},$.prototype[f]=function(){return Ve(this)},$.prototype.iterator=function(Z){return Z!==void 0&&H(Z,"options"),Ve(this,Z)};function Ve(Z,se){typeof Z.read!="function"&&(Z=$.wrap(Z,{objectMode:!0}));const Ce=ct(Z,se);return Ce.stream=Z,Ce}async function*ct(Z,se){let Ce=ne;function Ie(ir){this===Z?(Ce(),Ce=ne):Ce=ir}Z.on("readable",Ie);let Pe;const At=S(Z,{writable:!1},ir=>{Pe=ir?N(Pe,ir):null,Ce(),Ce=ne});try{for(;;){const ir=Z.destroyed?null:Z.read();if(ir!==null)yield ir;else{if(Pe)throw Pe;if(Pe===null)return;await new l(Ie)}}}catch(ir){throw Pe=N(Pe,ir),Pe}finally{(Pe||(se==null?void 0:se.destroyOnReturn)!==!1)&&(Pe===void 0||Z._readableState.autoDestroy)?k.destroyer(Z,null):(Z.off("readable",Ie),At())}}i($.prototype,{readable:{__proto__:null,get(){const Z=this._readableState;return!!Z&&Z.readable!==!1&&!Z.destroyed&&!Z.errorEmitted&&!Z.endEmitted},set(Z){this._readableState&&(this._readableState.readable=!!Z)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(Z){this._readableState&&(this._readableState.flowing=Z)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(Z){this._readableState&&(this._readableState.destroyed=Z)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),i(te.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[G]!==!1},set(Z){this[G]=!!Z}}}),$._fromList=Ze;function Ze(Z,se){if(se.length===0)return null;let Ce;return se.objectMode?Ce=se.buffer.shift():!Z||Z>=se.length?(se.decoder?Ce=se.buffer.join(""):se.buffer.length===1?Ce=se.buffer.first():Ce=se.buffer.concat(se.length),se.buffer.clear()):Ce=se.buffer.consume(Z,se.decoder),Ce}function lt(Z){const se=Z._readableState;v("endReadable",se.endEmitted),se.endEmitted||(se.ended=!0,t.nextTick(yt,se,Z))}function yt(Z,se){if(v("endReadableNT",Z.endEmitted,Z.length),!Z.errored&&!Z.closeEmitted&&!Z.endEmitted&&Z.length===0){if(Z.endEmitted=!0,se.emit("end"),se.writable&&se.allowHalfOpen===!1)t.nextTick(ft,se);else if(Z.autoDestroy){const Ce=se._writableState;(!Ce||Ce.autoDestroy&&(Ce.finished||Ce.writable===!1))&&se.destroy()}}}function ft(Z){Z.writable&&!Z.writableEnded&&!Z.destroyed&&Z.end()}$.from=function(Z,se){return F($,Z,se)};let hs;function fo(){return hs===void 0&&(hs={}),hs}return $.fromWeb=function(Z,se){return fo().newStreamReadableFromReadableStream(Z,se)},$.toWeb=function(Z,se){return fo().newReadableStreamFromStreamReadable(Z,se)},$.wrap=function(Z,se){var Ce,Ie;return new $({objectMode:(Ce=(Ie=Z.readableObjectMode)!==null&&Ie!==void 0?Ie:Z.objectMode)!==null&&Ce!==void 0?Ce:!0,...se,destroy(Pe,At){k.destroyer(Z,Pe),At(Pe)}}).wrap(Z)},Wc}var zc,V0;function Kp(){if(V0)return zc;V0=1;const t=ns,{ArrayPrototypeSlice:e,Error:r,FunctionPrototypeSymbolHasInstance:n,ObjectDefineProperty:s,ObjectDefineProperties:i,ObjectSetPrototypeOf:o,StringPrototypeToLowerCase:a,Symbol:l,SymbolHasInstance:u}=at;zc=H,H.WritableState=M;const{EventEmitter:c}=Lu,f=Yp.Stream,{Buffer:d}=nr,g=so,{addAbortSignal:m}=Wu,{getHighWaterMark:y,getDefaultHighWaterMark:E}=zu,{ERR_INVALID_ARG_TYPE:_,ERR_METHOD_NOT_IMPLEMENTED:S,ERR_MULTIPLE_CALLBACK:v,ERR_STREAM_CANNOT_PIPE:A,ERR_STREAM_DESTROYED:k,ERR_STREAM_ALREADY_FINISHED:x,ERR_STREAM_NULL_VALUES:D,ERR_STREAM_WRITE_AFTER_END:N,ERR_UNKNOWN_ENCODING:B}=qt.codes,{errorOrDestroy:q}=g;o(H.prototype,f.prototype),o(H,f);function K(){}const C=l("kOnFinished");function M(I,P,O){typeof O!="boolean"&&(O=P instanceof _n()),this.objectMode=!!(I&&I.objectMode),O&&(this.objectMode=this.objectMode||!!(I&&I.writableObjectMode)),this.highWaterMark=I?y(this,I,"writableHighWaterMark",O):E(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;const j=!!(I&&I.decodeStrings===!1);this.decodeStrings=!j,this.defaultEncoding=I&&I.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=ce.bind(void 0,P),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,L(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!I||I.emitClose!==!1,this.autoDestroy=!I||I.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[C]=[]}function L(I){I.buffered=[],I.bufferedIndex=0,I.allBuffers=!0,I.allNoop=!0}M.prototype.getBuffer=function(){return e(this.buffered,this.bufferedIndex)},s(M.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function H(I){const P=this instanceof _n();if(!P&&!n(H,this))return new H(I);this._writableState=new M(I,this,P),I&&(typeof I.write=="function"&&(this._write=I.write),typeof I.writev=="function"&&(this._writev=I.writev),typeof I.destroy=="function"&&(this._destroy=I.destroy),typeof I.final=="function"&&(this._final=I.final),typeof I.construct=="function"&&(this._construct=I.construct),I.signal&&m(I.signal,this)),f.call(this,I),g.construct(this,()=>{const O=this._writableState;O.writing||de(this,O),Y(this,O)})}s(H,u,{__proto__:null,value:function(I){return n(this,I)?!0:this!==H?!1:I&&I._writableState instanceof M}}),H.prototype.pipe=function(){q(this,new A)};function G(I,P,O,j){const W=I._writableState;if(typeof O=="function")j=O,O=W.defaultEncoding;else{if(!O)O=W.defaultEncoding;else if(O!=="buffer"&&!d.isEncoding(O))throw new B(O);typeof j!="function"&&(j=K)}if(P===null)throw new D;if(!W.objectMode)if(typeof P=="string")W.decodeStrings!==!1&&(P=d.from(P,O),O="buffer");else if(P instanceof d)O="buffer";else if(f._isUint8Array(P))P=f._uint8ArrayToBuffer(P),O="buffer";else throw new _("chunk",["string","Buffer","Uint8Array"],P);let le;return W.ending?le=new N:W.destroyed&&(le=new k("write")),le?(t.nextTick(j,le),q(I,le,!0),le):(W.pendingcb++,z(I,W,P,O,j))}H.prototype.write=function(I,P,O){return G(this,I,P,O)===!0},H.prototype.cork=function(){this._writableState.corked++},H.prototype.uncork=function(){const I=this._writableState;I.corked&&(I.corked--,I.writing||de(this,I))},H.prototype.setDefaultEncoding=function(P){if(typeof P=="string"&&(P=a(P)),!d.isEncoding(P))throw new B(P);return this._writableState.defaultEncoding=P,this};function z(I,P,O,j,W){const le=P.objectMode?1:O.length;P.length+=le;const fe=P.length<P.highWaterMark;return fe||(P.needDrain=!0),P.writing||P.corked||P.errored||!P.constructed?(P.buffered.push({chunk:O,encoding:j,callback:W}),P.allBuffers&&j!=="buffer"&&(P.allBuffers=!1),P.allNoop&&W!==K&&(P.allNoop=!1)):(P.writelen=le,P.writecb=W,P.writing=!0,P.sync=!0,I._write(O,j,P.onwrite),P.sync=!1),fe&&!P.errored&&!P.destroyed}function F(I,P,O,j,W,le,fe){P.writelen=j,P.writecb=fe,P.writing=!0,P.sync=!0,P.destroyed?P.onwrite(new k("write")):O?I._writev(W,P.onwrite):I._write(W,le,P.onwrite),P.sync=!1}function ne(I,P,O,j){--P.pendingcb,j(O),Q(P),q(I,O)}function ce(I,P){const O=I._writableState,j=O.sync,W=O.writecb;if(typeof W!="function"){q(I,new v);return}O.writing=!1,O.writecb=null,O.length-=O.writelen,O.writelen=0,P?(P.stack,O.errored||(O.errored=P),I._readableState&&!I._readableState.errored&&(I._readableState.errored=P),j?t.nextTick(ne,I,O,P,W):ne(I,O,P,W)):(O.buffered.length>O.bufferedIndex&&de(I,O),j?O.afterWriteTickInfo!==null&&O.afterWriteTickInfo.cb===W?O.afterWriteTickInfo.count++:(O.afterWriteTickInfo={count:1,cb:W,stream:I,state:O},t.nextTick(re,O.afterWriteTickInfo)):R(I,O,1,W))}function re({stream:I,state:P,count:O,cb:j}){return P.afterWriteTickInfo=null,R(I,P,O,j)}function R(I,P,O,j){for(!P.ending&&!I.destroyed&&P.length===0&&P.needDrain&&(P.needDrain=!1,I.emit("drain"));O-- >0;)P.pendingcb--,j();P.destroyed&&Q(P),Y(I,P)}function Q(I){if(I.writing)return;for(let W=I.bufferedIndex;W<I.buffered.length;++W){var P;const{chunk:le,callback:fe}=I.buffered[W],V=I.objectMode?1:le.length;I.length-=V,fe((P=I.errored)!==null&&P!==void 0?P:new k("write"))}const O=I[C].splice(0);for(let W=0;W<O.length;W++){var j;O[W]((j=I.errored)!==null&&j!==void 0?j:new k("end"))}L(I)}function de(I,P){if(P.corked||P.bufferProcessing||P.destroyed||!P.constructed)return;const{buffered:O,bufferedIndex:j,objectMode:W}=P,le=O.length-j;if(!le)return;let fe=j;if(P.bufferProcessing=!0,le>1&&I._writev){P.pendingcb-=le-1;const V=P.allNoop?K:$=>{for(let J=fe;J<O.length;++J)O[J].callback($)},te=P.allNoop&&fe===0?O:e(O,fe);te.allBuffers=P.allBuffers,F(I,P,!0,P.length,te,"",V),L(P)}else{do{const{chunk:V,encoding:te,callback:$}=O[fe];O[fe++]=null;const J=W?1:V.length;F(I,P,!1,J,V,te,$)}while(fe<O.length&&!P.writing);fe===O.length?L(P):fe>256?(O.splice(0,fe),P.bufferedIndex=0):P.bufferedIndex=fe}P.bufferProcessing=!1}H.prototype._write=function(I,P,O){if(this._writev)this._writev([{chunk:I,encoding:P}],O);else throw new S("_write()")},H.prototype._writev=null,H.prototype.end=function(I,P,O){const j=this._writableState;typeof I=="function"?(O=I,I=null,P=null):typeof P=="function"&&(O=P,P=null);let W;if(I!=null){const le=G(this,I,P);le instanceof r&&(W=le)}return j.corked&&(j.corked=1,this.uncork()),W||(!j.errored&&!j.ending?(j.ending=!0,Y(this,j,!0),j.ended=!0):j.finished?W=new x("end"):j.destroyed&&(W=new k("end"))),typeof O=="function"&&(W||j.finished?t.nextTick(O,W):j[C].push(O)),this};function ge(I){return I.ending&&!I.destroyed&&I.constructed&&I.length===0&&!I.errored&&I.buffered.length===0&&!I.finished&&!I.writing&&!I.errorEmitted&&!I.closeEmitted}function pe(I,P){let O=!1;function j(W){if(O){q(I,W??v());return}if(O=!0,P.pendingcb--,W){const le=P[C].splice(0);for(let fe=0;fe<le.length;fe++)le[fe](W);q(I,W,P.sync)}else ge(P)&&(P.prefinished=!0,I.emit("prefinish"),P.pendingcb++,t.nextTick(ie,I,P))}P.sync=!0,P.pendingcb++;try{I._final(j)}catch(W){j(W)}P.sync=!1}function X(I,P){!P.prefinished&&!P.finalCalled&&(typeof I._final=="function"&&!P.destroyed?(P.finalCalled=!0,pe(I,P)):(P.prefinished=!0,I.emit("prefinish")))}function Y(I,P,O){ge(P)&&(X(I,P),P.pendingcb===0&&(O?(P.pendingcb++,t.nextTick((j,W)=>{ge(W)?ie(j,W):W.pendingcb--},I,P)):ge(P)&&(P.pendingcb++,ie(I,P))))}function ie(I,P){P.pendingcb--,P.finished=!0;const O=P[C].splice(0);for(let j=0;j<O.length;j++)O[j]();if(I.emit("finish"),P.autoDestroy){const j=I._readableState;(!j||j.autoDestroy&&(j.endEmitted||j.readable===!1))&&I.destroy()}}i(H.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(I){this._writableState&&(this._writableState.destroyed=I)}},writable:{__proto__:null,get(){const I=this._writableState;return!!I&&I.writable!==!1&&!I.destroyed&&!I.errored&&!I.ending&&!I.ended},set(I){this._writableState&&(this._writableState.writable=!!I)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){const I=this._writableState;return I?!I.destroyed&&!I.ending&&I.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});const be=g.destroy;H.prototype.destroy=function(I,P){const O=this._writableState;return!O.destroyed&&(O.bufferedIndex<O.buffered.length||O[C].length)&&t.nextTick(Q,O),be.call(this,I,P),this},H.prototype._undestroy=g.undestroy,H.prototype._destroy=function(I,P){P(I)},H.prototype[c.captureRejectionSymbol]=function(I){this.destroy(I)};let he;function ue(){return he===void 0&&(he={}),he}return H.fromWeb=function(I,P){return ue().newStreamWritableFromWritableStream(I,P)},H.toWeb=function(I){return ue().newWritableStreamFromStreamWritable(I)},zc}var Hc,q0;function qO(){if(q0)return Hc;q0=1;const t=ns,e=nr,{isReadable:r,isWritable:n,isIterable:s,isNodeStream:i,isReadableNodeStream:o,isWritableNodeStream:a,isDuplexNodeStream:l,isReadableStream:u,isWritableStream:c}=kn,f=oi,{AbortError:d,codes:{ERR_INVALID_ARG_TYPE:g,ERR_INVALID_RETURN_VALUE:m}}=qt,{destroyer:y}=so,E=_n(),_=Hu(),S=Kp(),{createDeferredPromise:v}=Bt,A=OE,k=globalThis.Blob||e.Blob,x=typeof k<"u"?function(M){return M instanceof k}:function(M){return!1},D=globalThis.AbortController||na().AbortController,{FunctionPrototypeCall:N}=at;class B extends E{constructor(M){super(M),(M==null?void 0:M.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(M==null?void 0:M.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}}Hc=function C(M,L){if(l(M))return M;if(o(M))return K({readable:M});if(a(M))return K({writable:M});if(i(M))return K({writable:!1,readable:!1});if(u(M))return K({readable:_.fromWeb(M)});if(c(M))return K({writable:S.fromWeb(M)});if(typeof M=="function"){const{value:G,write:z,final:F,destroy:ne}=q(M);if(s(G))return A(B,G,{objectMode:!0,write:z,final:F,destroy:ne});const ce=G==null?void 0:G.then;if(typeof ce=="function"){let re;const R=N(ce,G,Q=>{if(Q!=null)throw new m("nully","body",Q)},Q=>{y(re,Q)});return re=new B({objectMode:!0,readable:!1,write:z,final(Q){F(async()=>{try{await R,t.nextTick(Q,null)}catch(de){t.nextTick(Q,de)}})},destroy:ne})}throw new m("Iterable, AsyncIterable or AsyncFunction",L,G)}if(x(M))return C(M.arrayBuffer());if(s(M))return A(B,M,{objectMode:!0,writable:!1});if(u(M==null?void 0:M.readable)&&c(M==null?void 0:M.writable))return B.fromWeb(M);if(typeof(M==null?void 0:M.writable)=="object"||typeof(M==null?void 0:M.readable)=="object"){const G=M!=null&&M.readable?o(M==null?void 0:M.readable)?M==null?void 0:M.readable:C(M.readable):void 0,z=M!=null&&M.writable?a(M==null?void 0:M.writable)?M==null?void 0:M.writable:C(M.writable):void 0;return K({readable:G,writable:z})}const H=M==null?void 0:M.then;if(typeof H=="function"){let G;return N(H,M,z=>{z!=null&&G.push(z),G.push(null)},z=>{y(G,z)}),G=new B({objectMode:!0,writable:!1,read(){}})}throw new g(L,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],M)};function q(C){let{promise:M,resolve:L}=v();const H=new D,G=H.signal;return{value:C(async function*(){for(;;){const F=M;M=null;const{chunk:ne,done:ce,cb:re}=await F;if(t.nextTick(re),ce)return;if(G.aborted)throw new d(void 0,{cause:G.reason});({promise:M,resolve:L}=v()),yield ne}}(),{signal:G}),write(F,ne,ce){const re=L;L=null,re({chunk:F,done:!1,cb:ce})},final(F){const ne=L;L=null,ne({done:!0,cb:F})},destroy(F,ne){H.abort(),ne(F)}}}function K(C){const M=C.readable&&typeof C.readable.read!="function"?_.wrap(C.readable):C.readable,L=C.writable;let H=!!r(M),G=!!n(L),z,F,ne,ce,re;function R(Q){const de=ce;ce=null,de?de(Q):Q&&re.destroy(Q)}return re=new B({readableObjectMode:!!(M!=null&&M.readableObjectMode),writableObjectMode:!!(L!=null&&L.writableObjectMode),readable:H,writable:G}),G&&(f(L,Q=>{G=!1,Q&&y(M,Q),R(Q)}),re._write=function(Q,de,ge){L.write(Q,de)?ge():z=ge},re._final=function(Q){L.end(),F=Q},L.on("drain",function(){if(z){const Q=z;z=null,Q()}}),L.on("finish",function(){if(F){const Q=F;F=null,Q()}})),H&&(f(M,Q=>{H=!1,Q&&y(M,Q),R(Q)}),M.on("readable",function(){if(ne){const Q=ne;ne=null,Q()}}),M.on("end",function(){re.push(null)}),re._read=function(){for(;;){const Q=M.read();if(Q===null){ne=re._read;return}if(!re.push(Q))return}}),re._destroy=function(Q,de){!Q&&ce!==null&&(Q=new d),ne=null,z=null,F=null,ce===null?de(Q):(ce=de,y(L,Q),y(M,Q))},re}return Hc}var Vc,Y0;function _n(){if(Y0)return Vc;Y0=1;const{ObjectDefineProperties:t,ObjectGetOwnPropertyDescriptor:e,ObjectKeys:r,ObjectSetPrototypeOf:n}=at;Vc=o;const s=Hu(),i=Kp();n(o.prototype,s.prototype),n(o,s);{const c=r(i.prototype);for(let f=0;f<c.length;f++){const d=c[f];o.prototype[d]||(o.prototype[d]=i.prototype[d])}}function o(c){if(!(this instanceof o))return new o(c);s.call(this,c),i.call(this,c),c?(this.allowHalfOpen=c.allowHalfOpen!==!1,c.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),c.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}t(o.prototype,{writable:{__proto__:null,...e(i.prototype,"writable")},writableHighWaterMark:{__proto__:null,...e(i.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...e(i.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...e(i.prototype,"writableBuffer")},writableLength:{__proto__:null,...e(i.prototype,"writableLength")},writableFinished:{__proto__:null,...e(i.prototype,"writableFinished")},writableCorked:{__proto__:null,...e(i.prototype,"writableCorked")},writableEnded:{__proto__:null,...e(i.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...e(i.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(c){this._readableState&&this._writableState&&(this._readableState.destroyed=c,this._writableState.destroyed=c)}}});let a;function l(){return a===void 0&&(a={}),a}o.fromWeb=function(c,f){return l().newStreamDuplexFromReadableWritablePair(c,f)},o.toWeb=function(c){return l().newReadableWritablePairFromDuplex(c)};let u;return o.from=function(c){return u||(u=qO()),u(c,"body")},Vc}const{ObjectSetPrototypeOf:RE,Symbol:YO}=at;var PE=En;const{ERR_METHOD_NOT_IMPLEMENTED:GO}=qt.codes,Xp=_n(),{getHighWaterMark:KO}=zu;RE(En.prototype,Xp.prototype);RE(En,Xp);const Yo=YO("kCallback");function En(t){if(!(this instanceof En))return new En(t);const e=t?KO(this,t,"readableHighWaterMark",!0):null;e===0&&(t={...t,highWaterMark:null,readableHighWaterMark:e,writableHighWaterMark:t.writableHighWaterMark||0}),Xp.call(this,t),this._readableState.sync=!1,this[Yo]=null,t&&(typeof t.transform=="function"&&(this._transform=t.transform),typeof t.flush=="function"&&(this._flush=t.flush)),this.on("prefinish",XO)}function Ch(t){typeof this._flush=="function"&&!this.destroyed?this._flush((e,r)=>{if(e){t?t(e):this.destroy(e);return}r!=null&&this.push(r),this.push(null),t&&t()}):(this.push(null),t&&t())}function XO(){this._final!==Ch&&Ch.call(this)}En.prototype._final=Ch;En.prototype._transform=function(t,e,r){throw new GO("_transform()")};En.prototype._write=function(t,e,r){const n=this._readableState,s=this._writableState,i=n.length;this._transform(t,e,(o,a)=>{if(o){r(o);return}a!=null&&this.push(a),s.ended||i===n.length||n.length<n.highWaterMark?r():this[Yo]=r})};En.prototype._read=function(){if(this[Yo]){const t=this[Yo];this[Yo]=null,t()}};const{ObjectSetPrototypeOf:kE}=at;var LE=Fs;const Qp=PE;kE(Fs.prototype,Qp.prototype);kE(Fs,Qp);function Fs(t){if(!(this instanceof Fs))return new Fs(t);Qp.call(this,t)}Fs.prototype._transform=function(t,e,r){r(null,t)};const Po=ns,{ArrayIsArray:QO,Promise:JO,SymbolAsyncIterator:ZO,SymbolDispose:eR}=at,Yl=oi,{once:tR}=Bt,rR=so,G0=_n(),{aggregateTwoErrors:nR,codes:{ERR_INVALID_ARG_TYPE:Ih,ERR_INVALID_RETURN_VALUE:qc,ERR_MISSING_ARGS:iR,ERR_STREAM_DESTROYED:sR,ERR_STREAM_PREMATURE_CLOSE:oR},AbortError:aR}=qt,{validateFunction:lR,validateAbortSignal:uR}=pa,{isIterable:Ti,isReadable:Yc,isReadableNodeStream:vl,isNodeStream:K0,isTransformStream:vs,isWebStream:cR,isReadableStream:Gc,isReadableFinished:fR}=kn,dR=globalThis.AbortController||na().AbortController;let Kc,Xc,Qc;function X0(t,e,r){let n=!1;t.on("close",()=>{n=!0});const s=Yl(t,{readable:e,writable:r},i=>{n=!i});return{destroy:i=>{n||(n=!0,rR.destroyer(t,i||new sR("pipe")))},cleanup:s}}function hR(t){return lR(t[t.length-1],"streams[stream.length - 1]"),t.pop()}function Jc(t){if(Ti(t))return t;if(vl(t))return pR(t);throw new Ih("val",["Readable","Iterable","AsyncIterable"],t)}async function*pR(t){Xc||(Xc=Hu()),yield*Xc.prototype[ZO].call(t)}async function Wa(t,e,r,{end:n}){let s,i=null;const o=u=>{if(u&&(s=u),i){const c=i;i=null,c()}},a=()=>new JO((u,c)=>{s?c(s):i=()=>{s?c(s):u()}});e.on("drain",o);const l=Yl(e,{readable:!1},o);try{e.writableNeedDrain&&await a();for await(const u of t)e.write(u)||await a();n&&(e.end(),await a()),r()}catch(u){r(s!==u?nR(s,u):u)}finally{l(),e.off("drain",o)}}async function Zc(t,e,r,{end:n}){vs(e)&&(e=e.writable);const s=e.getWriter();try{for await(const i of t)await s.ready,s.write(i).catch(()=>{});await s.ready,n&&await s.close(),r()}catch(i){try{await s.abort(i),r(i)}catch(o){r(o)}}}function gR(...t){return NE(t,tR(hR(t)))}function NE(t,e,r){if(t.length===1&&QO(t[0])&&(t=t[0]),t.length<2)throw new iR("streams");const n=new dR,s=n.signal,i=r==null?void 0:r.signal,o=[];uR(i,"options.signal");function a(){m(new aR)}Qc=Qc||Bt.addAbortListener;let l;i&&(l=Qc(i,a));let u,c;const f=[];let d=0;function g(S){m(S,--d===0)}function m(S,v){var A;if(S&&(!u||u.code==="ERR_STREAM_PREMATURE_CLOSE")&&(u=S),!(!u&&!v)){for(;f.length;)f.shift()(u);(A=l)===null||A===void 0||A[eR](),n.abort(),v&&(u||o.forEach(k=>k()),Po.nextTick(e,u,c))}}let y;for(let S=0;S<t.length;S++){const v=t[S],A=S<t.length-1,k=S>0,x=A||(r==null?void 0:r.end)!==!1,D=S===t.length-1;if(K0(v)){let N=function(B){B&&B.name!=="AbortError"&&B.code!=="ERR_STREAM_PREMATURE_CLOSE"&&g(B)};if(x){const{destroy:B,cleanup:q}=X0(v,A,k);f.push(B),Yc(v)&&D&&o.push(q)}v.on("error",N),Yc(v)&&D&&o.push(()=>{v.removeListener("error",N)})}if(S===0)if(typeof v=="function"){if(y=v({signal:s}),!Ti(y))throw new qc("Iterable, AsyncIterable or Stream","source",y)}else Ti(v)||vl(v)||vs(v)?y=v:y=G0.from(v);else if(typeof v=="function"){if(vs(y)){var E;y=Jc((E=y)===null||E===void 0?void 0:E.readable)}else y=Jc(y);if(y=v(y,{signal:s}),A){if(!Ti(y,!0))throw new qc("AsyncIterable",`transform[${S-1}]`,y)}else{var _;Kc||(Kc=LE);const N=new Kc({objectMode:!0}),B=(_=y)===null||_===void 0?void 0:_.then;if(typeof B=="function")d++,B.call(y,C=>{c=C,C!=null&&N.write(C),x&&N.end(),Po.nextTick(g)},C=>{N.destroy(C),Po.nextTick(g,C)});else if(Ti(y,!0))d++,Wa(y,N,g,{end:x});else if(Gc(y)||vs(y)){const C=y.readable||y;d++,Wa(C,N,g,{end:x})}else throw new qc("AsyncIterable or Promise","destination",y);y=N;const{destroy:q,cleanup:K}=X0(y,!1,!0);f.push(q),D&&o.push(K)}}else if(K0(v)){if(vl(y)){d+=2;const N=mR(y,v,g,{end:x});Yc(v)&&D&&o.push(N)}else if(vs(y)||Gc(y)){const N=y.readable||y;d++,Wa(N,v,g,{end:x})}else if(Ti(y))d++,Wa(y,v,g,{end:x});else throw new Ih("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],y);y=v}else if(cR(v)){if(vl(y))d++,Zc(Jc(y),v,g,{end:x});else if(Gc(y)||Ti(y))d++,Zc(y,v,g,{end:x});else if(vs(y))d++,Zc(y.readable,v,g,{end:x});else throw new Ih("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],y);y=v}else y=G0.from(v)}return(s!=null&&s.aborted||i!=null&&i.aborted)&&Po.nextTick(a),y}function mR(t,e,r,{end:n}){let s=!1;if(e.on("close",()=>{s||r(new oR)}),t.pipe(e,{end:!1}),n){let i=function(){s=!0,e.end()};fR(t)?Po.nextTick(i):t.once("end",i)}else r();return Yl(t,{readable:!0,writable:!1},i=>{const o=t._readableState;i&&i.code==="ERR_STREAM_PREMATURE_CLOSE"&&o&&o.ended&&!o.errored&&!o.errorEmitted?t.once("end",r).once("error",r):r(i)}),Yl(e,{readable:!1,writable:!0},r)}var Jp={pipelineImpl:NE,pipeline:gR};const{pipeline:bR}=Jp,za=_n(),{destroyer:yR}=so,{isNodeStream:Ha,isReadable:Q0,isWritable:J0,isWebStream:ef,isTransformStream:vi,isWritableStream:Z0,isReadableStream:eb}=kn,{AbortError:wR,codes:{ERR_INVALID_ARG_VALUE:tb,ERR_MISSING_ARGS:vR}}=qt,_R=oi;var DE=function(...e){if(e.length===0)throw new vR("streams");if(e.length===1)return za.from(e[0]);const r=[...e];if(typeof e[0]=="function"&&(e[0]=za.from(e[0])),typeof e[e.length-1]=="function"){const g=e.length-1;e[g]=za.from(e[g])}for(let g=0;g<e.length;++g)if(!(!Ha(e[g])&&!ef(e[g]))){if(g<e.length-1&&!(Q0(e[g])||eb(e[g])||vi(e[g])))throw new tb(`streams[${g}]`,r[g],"must be readable");if(g>0&&!(J0(e[g])||Z0(e[g])||vi(e[g])))throw new tb(`streams[${g}]`,r[g],"must be writable")}let n,s,i,o,a;function l(g){const m=o;o=null,m?m(g):g?a.destroy(g):!d&&!f&&a.destroy()}const u=e[0],c=bR(e,l),f=!!(J0(u)||Z0(u)||vi(u)),d=!!(Q0(c)||eb(c)||vi(c));if(a=new za({writableObjectMode:!!(u!=null&&u.writableObjectMode),readableObjectMode:!!(c!=null&&c.readableObjectMode),writable:f,readable:d}),f){if(Ha(u))a._write=function(m,y,E){u.write(m,y)?E():n=E},a._final=function(m){u.end(),s=m},u.on("drain",function(){if(n){const m=n;n=null,m()}});else if(ef(u)){const y=(vi(u)?u.writable:u).getWriter();a._write=async function(E,_,S){try{await y.ready,y.write(E).catch(()=>{}),S()}catch(v){S(v)}},a._final=async function(E){try{await y.ready,y.close().catch(()=>{}),s=E}catch(_){E(_)}}}const g=vi(c)?c.readable:c;_R(g,()=>{if(s){const m=s;s=null,m()}})}if(d){if(Ha(c))c.on("readable",function(){if(i){const g=i;i=null,g()}}),c.on("end",function(){a.push(null)}),a._read=function(){for(;;){const g=c.read();if(g===null){i=a._read;return}if(!a.push(g))return}};else if(ef(c)){const m=(vi(c)?c.readable:c).getReader();a._read=async function(){for(;;)try{const{value:y,done:E}=await m.read();if(!a.push(y))return;if(E){a.push(null);return}}catch{return}}}}return a._destroy=function(g,m){!g&&o!==null&&(g=new wR),i=null,n=null,s=null,o===null?m(g):(o=m,Ha(c)&&yR(c,g))},a};const ER=globalThis.AbortController||na().AbortController,{codes:{ERR_INVALID_ARG_VALUE:SR,ERR_INVALID_ARG_TYPE:ma,ERR_MISSING_ARGS:TR,ERR_OUT_OF_RANGE:xR},AbortError:Vr}=qt,{validateAbortSignal:ss,validateInteger:rb,validateObject:os}=pa,AR=at.Symbol("kWeak"),CR=at.Symbol("kResistStopPropagation"),{finished:IR}=oi,MR=DE,{addAbortSignalNoValidate:OR}=Wu,{isWritable:RR,isNodeStream:PR}=kn,{deprecate:kR}=Bt,{ArrayPrototypePush:LR,Boolean:NR,MathFloor:nb,Number:DR,NumberIsNaN:BR,Promise:ib,PromiseReject:sb,PromiseResolve:$R,PromisePrototypeThen:ob,Symbol:BE}=at,Gl=BE("kEmpty"),ab=BE("kEof");function FR(t,e){if(e!=null&&os(e,"options"),(e==null?void 0:e.signal)!=null&&ss(e.signal,"options.signal"),PR(t)&&!RR(t))throw new SR("stream",t,"must be writable");const r=MR(this,t);return e!=null&&e.signal&&OR(e.signal,r),r}function Vu(t,e){if(typeof t!="function")throw new ma("fn",["Function","AsyncFunction"],t);e!=null&&os(e,"options"),(e==null?void 0:e.signal)!=null&&ss(e.signal,"options.signal");let r=1;(e==null?void 0:e.concurrency)!=null&&(r=nb(e.concurrency));let n=r-1;return(e==null?void 0:e.highWaterMark)!=null&&(n=nb(e.highWaterMark)),rb(r,"options.concurrency",1),rb(n,"options.highWaterMark",0),n+=r,(async function*(){const i=Bt.AbortSignalAny([e==null?void 0:e.signal].filter(NR)),o=this,a=[],l={signal:i};let u,c,f=!1,d=0;function g(){f=!0,m()}function m(){d-=1,y()}function y(){c&&!f&&d<r&&a.length<n&&(c(),c=null)}async function E(){try{for await(let _ of o){if(f)return;if(i.aborted)throw new Vr;try{if(_=t(_,l),_===Gl)continue;_=$R(_)}catch(S){_=sb(S)}d+=1,ob(_,m,g),a.push(_),u&&(u(),u=null),!f&&(a.length>=n||d>=r)&&await new ib(S=>{c=S})}a.push(ab)}catch(_){const S=sb(_);ob(S,m,g),a.push(S)}finally{f=!0,u&&(u(),u=null)}}E();try{for(;;){for(;a.length>0;){const _=await a[0];if(_===ab)return;if(i.aborted)throw new Vr;_!==Gl&&(yield _),a.shift(),y()}await new ib(_=>{u=_})}}finally{f=!0,c&&(c(),c=null)}}).call(this)}function UR(t=void 0){return t!=null&&os(t,"options"),(t==null?void 0:t.signal)!=null&&ss(t.signal,"options.signal"),(async function*(){let r=0;for await(const s of this){var n;if(t!=null&&(n=t.signal)!==null&&n!==void 0&&n.aborted)throw new Vr({cause:t.signal.reason});yield[r++,s]}}).call(this)}async function $E(t,e=void 0){for await(const r of Zp.call(this,t,e))return!0;return!1}async function jR(t,e=void 0){if(typeof t!="function")throw new ma("fn",["Function","AsyncFunction"],t);return!await $E.call(this,async(...r)=>!await t(...r),e)}async function WR(t,e){for await(const r of Zp.call(this,t,e))return r}async function zR(t,e){if(typeof t!="function")throw new ma("fn",["Function","AsyncFunction"],t);async function r(n,s){return await t(n,s),Gl}for await(const n of Vu.call(this,r,e));}function Zp(t,e){if(typeof t!="function")throw new ma("fn",["Function","AsyncFunction"],t);async function r(n,s){return await t(n,s)?n:Gl}return Vu.call(this,r,e)}class HR extends TR{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}}async function VR(t,e,r){var n;if(typeof t!="function")throw new ma("reducer",["Function","AsyncFunction"],t);r!=null&&os(r,"options"),(r==null?void 0:r.signal)!=null&&ss(r.signal,"options.signal");let s=arguments.length>1;if(r!=null&&(n=r.signal)!==null&&n!==void 0&&n.aborted){const u=new Vr(void 0,{cause:r.signal.reason});throw this.once("error",()=>{}),await IR(this.destroy(u)),u}const i=new ER,o=i.signal;if(r!=null&&r.signal){const u={once:!0,[AR]:this,[CR]:!0};r.signal.addEventListener("abort",()=>i.abort(),u)}let a=!1;try{for await(const u of this){var l;if(a=!0,r!=null&&(l=r.signal)!==null&&l!==void 0&&l.aborted)throw new Vr;s?e=await t(e,u,{signal:o}):(e=u,s=!0)}if(!a&&!s)throw new HR}finally{i.abort()}return e}async function qR(t){t!=null&&os(t,"options"),(t==null?void 0:t.signal)!=null&&ss(t.signal,"options.signal");const e=[];for await(const n of this){var r;if(t!=null&&(r=t.signal)!==null&&r!==void 0&&r.aborted)throw new Vr(void 0,{cause:t.signal.reason});LR(e,n)}return e}function YR(t,e){const r=Vu.call(this,t,e);return(async function*(){for await(const s of r)yield*s}).call(this)}function FE(t){if(t=DR(t),BR(t))return 0;if(t<0)throw new xR("number",">= 0",t);return t}function GR(t,e=void 0){return e!=null&&os(e,"options"),(e==null?void 0:e.signal)!=null&&ss(e.signal,"options.signal"),t=FE(t),(async function*(){var n;if(e!=null&&(n=e.signal)!==null&&n!==void 0&&n.aborted)throw new Vr;for await(const i of this){var s;if(e!=null&&(s=e.signal)!==null&&s!==void 0&&s.aborted)throw new Vr;t--<=0&&(yield i)}}).call(this)}function KR(t,e=void 0){return e!=null&&os(e,"options"),(e==null?void 0:e.signal)!=null&&ss(e.signal,"options.signal"),t=FE(t),(async function*(){var n;if(e!=null&&(n=e.signal)!==null&&n!==void 0&&n.aborted)throw new Vr;for await(const i of this){var s;if(e!=null&&(s=e.signal)!==null&&s!==void 0&&s.aborted)throw new Vr;if(t-- >0&&(yield i),t<=0)return}}).call(this)}Wp.streamReturningOperators={asIndexedPairs:kR(UR,"readable.asIndexedPairs will be removed in a future version."),drop:GR,filter:Zp,flatMap:YR,map:Vu,take:KR,compose:FR};Wp.promiseReturningOperators={every:jR,forEach:zR,reduce:VR,toArray:qR,some:$E,find:WR};var tf,lb;function UE(){if(lb)return tf;lb=1;const{ArrayPrototypePop:t,Promise:e}=at,{isIterable:r,isNodeStream:n,isWebStream:s}=kn,{pipelineImpl:i}=Jp,{finished:o}=oi;jE();function a(...l){return new e((u,c)=>{let f,d;const g=l[l.length-1];if(g&&typeof g=="object"&&!n(g)&&!r(g)&&!s(g)){const m=t(l);f=m.signal,d=m.end}i(l,(m,y)=>{m?c(m):u(y)},{signal:f,end:d})})}return tf={finished:o,pipeline:a},tf}var ub;function jE(){if(ub)return Dc.exports;ub=1;const{Buffer:t}=nr,{ObjectDefineProperty:e,ObjectKeys:r,ReflectApply:n}=at,{promisify:{custom:s}}=Bt,{streamReturningOperators:i,promiseReturningOperators:o}=Wp,{codes:{ERR_ILLEGAL_CONSTRUCTOR:a}}=qt,l=DE,{setDefaultHighWaterMark:u,getDefaultHighWaterMark:c}=zu,{pipeline:f}=Jp,{destroyer:d}=so,g=oi,m=UE(),y=kn,E=Dc.exports=Yp.Stream;E.isDestroyed=y.isDestroyed,E.isDisturbed=y.isDisturbed,E.isErrored=y.isErrored,E.isReadable=y.isReadable,E.isWritable=y.isWritable,E.Readable=Hu();for(const S of r(i)){let A=function(...k){if(new.target)throw a();return E.Readable.from(n(v,this,k))};const v=i[S];e(A,"name",{__proto__:null,value:v.name}),e(A,"length",{__proto__:null,value:v.length}),e(E.Readable.prototype,S,{__proto__:null,value:A,enumerable:!1,configurable:!0,writable:!0})}for(const S of r(o)){let A=function(...k){if(new.target)throw a();return n(v,this,k)};const v=o[S];e(A,"name",{__proto__:null,value:v.name}),e(A,"length",{__proto__:null,value:v.length}),e(E.Readable.prototype,S,{__proto__:null,value:A,enumerable:!1,configurable:!0,writable:!0})}E.Writable=Kp(),E.Duplex=_n(),E.Transform=PE,E.PassThrough=LE,E.pipeline=f;const{addAbortSignal:_}=Wu;return E.addAbortSignal=_,E.finished=g,E.destroy=d,E.compose=l,E.setDefaultHighWaterMark=u,E.getDefaultHighWaterMark=c,e(E,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return m}}),e(f,s,{__proto__:null,enumerable:!0,get(){return m.pipeline}}),e(g,s,{__proto__:null,enumerable:!0,get(){return m.finished}}),E.Stream=E,E._isUint8Array=function(v){return v instanceof Uint8Array},E._uint8ArrayToBuffer=function(v){return t.from(v.buffer,v.byteOffset,v.byteLength)},Dc.exports}(function(t){const e=jE(),r=UE(),n=e.Readable.destroy;t.exports=e.Readable,t.exports._uint8ArrayToBuffer=e._uint8ArrayToBuffer,t.exports._isUint8Array=e._isUint8Array,t.exports.isDisturbed=e.isDisturbed,t.exports.isErrored=e.isErrored,t.exports.isReadable=e.isReadable,t.exports.Readable=e.Readable,t.exports.Writable=e.Writable,t.exports.Duplex=e.Duplex,t.exports.Transform=e.Transform,t.exports.PassThrough=e.PassThrough,t.exports.addAbortSignal=e.addAbortSignal,t.exports.finished=e.finished,t.exports.destroy=e.destroy,t.exports.destroy=n,t.exports.pipeline=e.pipeline,t.exports.compose=e.compose,Object.defineProperty(e,"promises",{configurable:!0,enumerable:!0,get(){return r}}),t.exports.Stream=e.Stream,t.exports.default=t.exports})(B_);var XR=B_.exports,Mh={exports:{}};typeof Object.create=="function"?Mh.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Mh.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}};var QR=Mh.exports;const{Buffer:Er}=nr,WE=Symbol.for("BufferList");function Xe(t){if(!(this instanceof Xe))return new Xe(t);Xe._init.call(this,t)}Xe._init=function(e){Object.defineProperty(this,WE,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};Xe.prototype._new=function(e){return new Xe(e)};Xe.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let n=0;n<this._bufs.length;n++){const s=r+this._bufs[n].length;if(e<s||n===this._bufs.length-1)return[n,e-r];r=s}};Xe.prototype._reverseOffset=function(t){const e=t[0];let r=t[1];for(let n=0;n<e;n++)r+=this._bufs[n].length;return r};Xe.prototype.get=function(e){if(e>this.length||e<0)return;const r=this._offset(e);return this._bufs[r[0]][r[1]]};Xe.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};Xe.prototype.copy=function(e,r,n,s){if((typeof n!="number"||n<0)&&(n=0),(typeof s!="number"||s>this.length)&&(s=this.length),n>=this.length||s<=0)return e||Er.alloc(0);const i=!!e,o=this._offset(n),a=s-n;let l=a,u=i&&r||0,c=o[1];if(n===0&&s===this.length){if(!i)return this._bufs.length===1?this._bufs[0]:Er.concat(this._bufs,this.length);for(let f=0;f<this._bufs.length;f++)this._bufs[f].copy(e,u),u+=this._bufs[f].length;return e}if(l<=this._bufs[o[0]].length-c)return i?this._bufs[o[0]].copy(e,r,c,c+l):this._bufs[o[0]].slice(c,c+l);i||(e=Er.allocUnsafe(a));for(let f=o[0];f<this._bufs.length;f++){const d=this._bufs[f].length-c;if(l>d)this._bufs[f].copy(e,u,c),u+=d;else{this._bufs[f].copy(e,u,c,c+l),u+=d;break}l-=d,c&&(c=0)}return e.length>u?e.slice(0,u):e};Xe.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();const n=this._offset(e),s=this._offset(r),i=this._bufs.slice(n[0],s[0]+1);return s[1]===0?i.pop():i[i.length-1]=i[i.length-1].slice(0,s[1]),n[1]!==0&&(i[0]=i[0].slice(n[1])),this._new(i)};Xe.prototype.toString=function(e,r,n){return this.slice(r,n).toString(e)};Xe.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};Xe.prototype.duplicate=function(){const e=this._new();for(let r=0;r<this._bufs.length;r++)e.append(this._bufs[r]);return e};Xe.prototype.append=function(e){if(e==null)return this;if(e.buffer)this._appendBuffer(Er.from(e.buffer,e.byteOffset,e.byteLength));else if(Array.isArray(e))for(let r=0;r<e.length;r++)this.append(e[r]);else if(this._isBufferList(e))for(let r=0;r<e._bufs.length;r++)this.append(e._bufs[r]);else typeof e=="number"&&(e=e.toString()),this._appendBuffer(Er.from(e));return this};Xe.prototype._appendBuffer=function(e){this._bufs.push(e),this.length+=e.length};Xe.prototype.indexOf=function(t,e,r){if(r===void 0&&typeof e=="string"&&(r=e,e=void 0),typeof t=="function"||Array.isArray(t))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof t=="number"?t=Er.from([t]):typeof t=="string"?t=Er.from(t,r):this._isBufferList(t)?t=t.slice():Array.isArray(t.buffer)?t=Er.from(t.buffer,t.byteOffset,t.byteLength):Er.isBuffer(t)||(t=Er.from(t)),e=Number(e||0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;const n=this._offset(e);let s=n[0],i=n[1];for(;s<this._bufs.length;s++){const o=this._bufs[s];for(;i<o.length;)if(o.length-i>=t.length){const l=o.indexOf(t,i);if(l!==-1)return this._reverseOffset([s,l]);i=o.length-t.length+1}else{const l=this._reverseOffset([s,i]);if(this._match(l,t))return l;i++}i=0}return-1};Xe.prototype._match=function(t,e){if(this.length-t<e.length)return!1;for(let r=0;r<e.length;r++)if(this.get(t+r)!==e[r])return!1;return!0};(function(){const t={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(const e in t)(function(r){t[r]===null?Xe.prototype[r]=function(n,s){return this.slice(n,n+s)[r](0,s)}:Xe.prototype[r]=function(n=0){return this.slice(n,n+t[r])[r](0)}})(e)})();Xe.prototype._isBufferList=function(e){return e instanceof Xe||Xe.isBufferList(e)};Xe.isBufferList=function(e){return e!=null&&e[WE]};var JR=Xe;const eg=XR.Duplex,ZR=QR,ba=JR;function Rt(t){if(!(this instanceof Rt))return new Rt(t);if(typeof t=="function"){this._callback=t;const e=(function(n){this._callback&&(this._callback(n),this._callback=null)}).bind(this);this.on("pipe",function(n){n.on("error",e)}),this.on("unpipe",function(n){n.removeListener("error",e)}),t=null}ba._init.call(this,t),eg.call(this)}ZR(Rt,eg);Object.assign(Rt.prototype,ba.prototype);Rt.prototype._new=function(e){return new Rt(e)};Rt.prototype._write=function(e,r,n){this._appendBuffer(e),typeof n=="function"&&n()};Rt.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Rt.prototype.end=function(e){eg.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Rt.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Rt.prototype._isBufferList=function(e){return e instanceof Rt||e instanceof ba||Rt.isBufferList(e)};Rt.isBufferList=ba.isBufferList;Fp.exports=Rt;Fp.exports.BufferListStream=Rt;Fp.exports.BufferList=ba;var eP={exports:{}};(function(t){const e=t.exports,{Buffer:r}=nr;e.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},e.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},e.requiredHeaderFlagsErrors={};for(const s in e.requiredHeaderFlags){const i=e.requiredHeaderFlags[s];e.requiredHeaderFlagsErrors[s]="Invalid header flag bits, must be 0x"+i.toString(16)+" for "+e.types[s]+" packet"}e.codes={};for(const s in e.types){const i=e.types[s];e.codes[i]=s}e.CMD_SHIFT=4,e.CMD_MASK=240,e.DUP_MASK=8,e.QOS_MASK=3,e.QOS_SHIFT=1,e.RETAIN_MASK=1,e.VARBYTEINT_MASK=127,e.VARBYTEINT_FIN_MASK=128,e.VARBYTEINT_MAX=268435455,e.SESSIONPRESENT_MASK=1,e.SESSIONPRESENT_HEADER=r.from([e.SESSIONPRESENT_MASK]),e.CONNACK_HEADER=r.from([e.codes.connack<<e.CMD_SHIFT]),e.USERNAME_MASK=128,e.PASSWORD_MASK=64,e.WILL_RETAIN_MASK=32,e.WILL_QOS_MASK=24,e.WILL_QOS_SHIFT=3,e.WILL_FLAG_MASK=4,e.CLEAN_SESSION_MASK=2,e.CONNECT_HEADER=r.from([e.codes.connect<<e.CMD_SHIFT]),e.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},e.propertiesCodes={};for(const s in e.properties){const i=e.properties[s];e.propertiesCodes[i]=s}e.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function n(s){return[0,1,2].map(i=>[0,1].map(o=>[0,1].map(a=>{const l=r.alloc(1);return l.writeUInt8(e.codes[s]<<e.CMD_SHIFT|(o?e.DUP_MASK:0)|i<<e.QOS_SHIFT|a,0,!0),l})))}e.PUBLISH_HEADER=n("publish"),e.SUBSCRIBE_HEADER=n("subscribe"),e.SUBSCRIBE_OPTIONS_QOS_MASK=3,e.SUBSCRIBE_OPTIONS_NL_MASK=1,e.SUBSCRIBE_OPTIONS_NL_SHIFT=2,e.SUBSCRIBE_OPTIONS_RAP_MASK=1,e.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,e.SUBSCRIBE_OPTIONS_RH_MASK=3,e.SUBSCRIBE_OPTIONS_RH_SHIFT=4,e.SUBSCRIBE_OPTIONS_RH=[0,16,32],e.SUBSCRIBE_OPTIONS_NL=4,e.SUBSCRIBE_OPTIONS_RAP=8,e.SUBSCRIBE_OPTIONS_QOS=[0,1,2],e.UNSUBSCRIBE_HEADER=n("unsubscribe"),e.ACKS={unsuback:n("unsuback"),puback:n("puback"),pubcomp:n("pubcomp"),pubrel:n("pubrel"),pubrec:n("pubrec")},e.SUBACK_HEADER=r.from([e.codes.suback<<e.CMD_SHIFT]),e.VERSION3=r.from([3]),e.VERSION4=r.from([4]),e.VERSION5=r.from([5]),e.VERSION131=r.from([131]),e.VERSION132=r.from([132]),e.QOS=[0,1,2].map(s=>r.from([s])),e.EMPTY={pingreq:r.from([e.codes.pingreq<<4,0]),pingresp:r.from([e.codes.pingresp<<4,0]),disconnect:r.from([e.codes.disconnect<<4,0])},e.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},e.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},e.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},e.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},e.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},e.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}})(eP);function zE(){throw new Error("setTimeout has not been defined")}function HE(){throw new Error("clearTimeout has not been defined")}var jn=zE,Wn=HE;typeof qi.setTimeout=="function"&&(jn=setTimeout);typeof qi.clearTimeout=="function"&&(Wn=clearTimeout);function VE(t){if(jn===setTimeout)return setTimeout(t,0);if((jn===zE||!jn)&&setTimeout)return jn=setTimeout,setTimeout(t,0);try{return jn(t,0)}catch{try{return jn.call(null,t,0)}catch{return jn.call(this,t,0)}}}function tP(t){if(Wn===clearTimeout)return clearTimeout(t);if((Wn===HE||!Wn)&&clearTimeout)return Wn=clearTimeout,clearTimeout(t);try{return Wn(t)}catch{try{return Wn.call(null,t)}catch{return Wn.call(this,t)}}}var un=[],Ns=!1,Pi,_l=-1;function rP(){!Ns||!Pi||(Ns=!1,Pi.length?un=Pi.concat(un):_l=-1,un.length&&qE())}function qE(){if(!Ns){var t=VE(rP);Ns=!0;for(var e=un.length;e;){for(Pi=un,un=[];++_l<e;)Pi&&Pi[_l].run();_l=-1,e=un.length}Pi=null,Ns=!1,tP(t)}}function nP(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];un.push(new YE(t,e)),un.length===1&&!Ns&&VE(qE)}function YE(t,e){this.fun=t,this.array=e}YE.prototype.run=function(){this.fun.apply(null,this.array)};var iP="browser",sP="browser",oP=!0,aP={},lP=[],uP="",cP={},fP={},dP={};function as(){}var hP=as,pP=as,gP=as,mP=as,bP=as,yP=as,wP=as;function vP(t){throw new Error("process.binding is not supported")}function _P(){return"/"}function EP(t){throw new Error("process.chdir is not supported")}function SP(){return 0}var _s=qi.performance||{},TP=_s.now||_s.mozNow||_s.msNow||_s.oNow||_s.webkitNow||function(){return new Date().getTime()};function xP(t){var e=TP.call(_s)*.001,r=Math.floor(e),n=Math.floor(e%1*1e9);return t&&(r=r-t[0],n=n-t[1],n<0&&(r--,n+=1e9)),[r,n]}var AP=new Date;function CP(){var t=new Date,e=t-AP;return e/1e3}var Qt={nextTick:nP,title:iP,browser:oP,env:aP,argv:lP,version:uP,versions:cP,on:hP,addListener:pP,once:gP,off:mP,removeListener:bP,removeAllListeners:yP,emit:wP,binding:vP,cwd:_P,chdir:EP,umask:SP,hrtime:xP,platform:sP,release:fP,config:dP,uptime:CP},Oh={exports:{}},rf,cb;function IP(){if(cb)return rf;cb=1;var t=1e3,e=t*60,r=e*60,n=r*24,s=n*7,i=n*365.25;rf=function(c,f){f=f||{};var d=typeof c;if(d==="string"&&c.length>0)return o(c);if(d==="number"&&isFinite(c))return f.long?l(c):a(c);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(c))};function o(c){if(c=String(c),!(c.length>100)){var f=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(c);if(f){var d=parseFloat(f[1]),g=(f[2]||"ms").toLowerCase();switch(g){case"years":case"year":case"yrs":case"yr":case"y":return d*i;case"weeks":case"week":case"w":return d*s;case"days":case"day":case"d":return d*n;case"hours":case"hour":case"hrs":case"hr":case"h":return d*r;case"minutes":case"minute":case"mins":case"min":case"m":return d*e;case"seconds":case"second":case"secs":case"sec":case"s":return d*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return d;default:return}}}}function a(c){var f=Math.abs(c);return f>=n?Math.round(c/n)+"d":f>=r?Math.round(c/r)+"h":f>=e?Math.round(c/e)+"m":f>=t?Math.round(c/t)+"s":c+"ms"}function l(c){var f=Math.abs(c);return f>=n?u(c,f,n,"day"):f>=r?u(c,f,r,"hour"):f>=e?u(c,f,e,"minute"):f>=t?u(c,f,t,"second"):c+" ms"}function u(c,f,d,g){var m=f>=d*1.5;return Math.round(c/d)+" "+g+(m?"s":"")}return rf}function MP(t){r.debug=r,r.default=r,r.coerce=l,r.disable=i,r.enable=s,r.enabled=o,r.humanize=IP(),r.destroy=u,Object.keys(t).forEach(c=>{r[c]=t[c]}),r.names=[],r.skips=[],r.formatters={};function e(c){let f=0;for(let d=0;d<c.length;d++)f=(f<<5)-f+c.charCodeAt(d),f|=0;return r.colors[Math.abs(f)%r.colors.length]}r.selectColor=e;function r(c){let f,d=null,g,m;function y(...E){if(!y.enabled)return;const _=y,S=Number(new Date),v=S-(f||S);_.diff=v,_.prev=f,_.curr=S,f=S,E[0]=r.coerce(E[0]),typeof E[0]!="string"&&E.unshift("%O");let A=0;E[0]=E[0].replace(/%([a-zA-Z%])/g,(x,D)=>{if(x==="%%")return"%";A++;const N=r.formatters[D];if(typeof N=="function"){const B=E[A];x=N.call(_,B),E.splice(A,1),A--}return x}),r.formatArgs.call(_,E),(_.log||r.log).apply(_,E)}return y.namespace=c,y.useColors=r.useColors(),y.color=r.selectColor(c),y.extend=n,y.destroy=r.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(g!==r.namespaces&&(g=r.namespaces,m=r.enabled(c)),m),set:E=>{d=E}}),typeof r.init=="function"&&r.init(y),y}function n(c,f){const d=r(this.namespace+(typeof f>"u"?":":f)+c);return d.log=this.log,d}function s(c){r.save(c),r.namespaces=c,r.names=[],r.skips=[];let f;const d=(typeof c=="string"?c:"").split(/[\s,]+/),g=d.length;for(f=0;f<g;f++)d[f]&&(c=d[f].replace(/\*/g,".*?"),c[0]==="-"?r.skips.push(new RegExp("^"+c.slice(1)+"$")):r.names.push(new RegExp("^"+c+"$")))}function i(){const c=[...r.names.map(a),...r.skips.map(a).map(f=>"-"+f)].join(",");return r.enable(""),c}function o(c){if(c[c.length-1]==="*")return!0;let f,d;for(f=0,d=r.skips.length;f<d;f++)if(r.skips[f].test(c))return!1;for(f=0,d=r.names.length;f<d;f++)if(r.names[f].test(c))return!0;return!1}function a(c){return c.toString().substring(2,c.toString().length-2).replace(/\.\*\?$/,"*")}function l(c){return c instanceof Error?c.stack||c.message:c}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}var OP=MP;(function(t,e){var r={};e.formatArgs=s,e.save=i,e.load=o,e.useColors=n,e.storage=a(),e.destroy=(()=>{let u=!1;return()=>{u||(u=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function s(u){if(u[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+u[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;const c="color: "+this.color;u.splice(1,0,c,"color: inherit");let f=0,d=0;u[0].replace(/%[a-zA-Z%]/g,g=>{g!=="%%"&&(f++,g==="%c"&&(d=f))}),u.splice(d,0,c)}e.log=console.debug||console.log||(()=>{});function i(u){try{u?e.storage.setItem("debug",u):e.storage.removeItem("debug")}catch{}}function o(){let u;try{u=e.storage.getItem("debug")}catch{}return!u&&typeof Qt<"u"&&"env"in Qt&&(u=r.DEBUG),u}function a(){try{return localStorage}catch{}}t.exports=OP(e);const{formatters:l}=t.exports;l.j=function(u){try{return JSON.stringify(u)}catch(c){return"[UnexpectedJSONParseError]: "+c.message}}})(Oh,Oh.exports);var GE=Oh.exports;GE("mqtt-packet:parser");const{Buffer:fb}=nr;fb.isBuffer(fb.from([1,2]).subarray(0,1));var Rh={exports:{}};typeof Qt>"u"||!Qt.version||Qt.version.indexOf("v0.")===0||Qt.version.indexOf("v1.")===0&&Qt.version.indexOf("v1.8.")!==0?Rh.exports={nextTick:RP}:Rh.exports=Qt;function RP(t,e,r,n){if(typeof t!="function")throw new TypeError('"callback" argument must be a function');var s=arguments.length,i,o;switch(s){case 0:case 1:return Qt.nextTick(t);case 2:return Qt.nextTick(function(){t.call(null,e)});case 3:return Qt.nextTick(function(){t.call(null,e,r)});case 4:return Qt.nextTick(function(){t.call(null,e,r,n)});default:for(i=new Array(s-1),o=0;o<i.length;)i[o++]=arguments[o];return Qt.nextTick(function(){t.apply(null,i)})}}var PP=Rh.exports;const{Buffer:KE}=nr;KE.allocUnsafe(0);KE.from([0]);PP.nextTick;GE("mqtt-packet:writeToStream");function El(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function kP(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function tg(t){let e,r,n;t.length!==2?(e=El,r=(a,l)=>El(t(a),l),n=(a,l)=>t(a)-l):(e=t===El||t===kP?t:LP,r=t,n=t);function s(a,l,u=0,c=a.length){if(u<c){if(e(l,l)!==0)return c;do{const f=u+c>>>1;r(a[f],l)<0?u=f+1:c=f}while(u<c)}return u}function i(a,l,u=0,c=a.length){if(u<c){if(e(l,l)!==0)return c;do{const f=u+c>>>1;r(a[f],l)<=0?u=f+1:c=f}while(u<c)}return u}function o(a,l,u=0,c=a.length){const f=s(a,l,u,c-1);return f>u&&n(a[f-1],l)>-n(a[f],l)?f-1:f}return{left:s,center:o,right:i}}function LP(){return 0}function NP(t){return t===null?NaN:+t}const DP=tg(El),BP=DP.right;tg(NP).center;function e4(t,e){let r,n;if(e===void 0)for(const s of t)s!=null&&(r===void 0?s>=s&&(r=n=s):(r>s&&(r=s),n<s&&(n=s)));else{let s=-1;for(let i of t)(i=e(i,++s,t))!=null&&(r===void 0?i>=i&&(r=n=i):(r>i&&(r=i),n<i&&(n=i)))}return[r,n]}class db extends Map{constructor(e,r=UP){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(const[n,s]of e)this.set(n,s)}get(e){return super.get(hb(this,e))}has(e){return super.has(hb(this,e))}set(e,r){return super.set($P(this,e),r)}delete(e){return super.delete(FP(this,e))}}function hb({_intern:t,_key:e},r){const n=e(r);return t.has(n)?t.get(n):r}function $P({_intern:t,_key:e},r){const n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function FP({_intern:t,_key:e},r){const n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function UP(t){return t!==null&&typeof t=="object"?t.valueOf():t}const jP=Math.sqrt(50),WP=Math.sqrt(10),zP=Math.sqrt(2);function Kl(t,e,r){const n=(e-t)/Math.max(0,r),s=Math.floor(Math.log10(n)),i=n/Math.pow(10,s),o=i>=jP?10:i>=WP?5:i>=zP?2:1;let a,l,u;return s<0?(u=Math.pow(10,-s)/o,a=Math.round(t*u),l=Math.round(e*u),a/u<t&&++a,l/u>e&&--l,u=-u):(u=Math.pow(10,s)*o,a=Math.round(t/u),l=Math.round(e/u),a*u<t&&++a,l*u>e&&--l),l<a&&.5<=r&&r<2?Kl(t,e,r*2):[a,l,u]}function HP(t,e,r){if(e=+e,t=+t,r=+r,!(r>0))return[];if(t===e)return[t];const n=e<t,[s,i,o]=n?Kl(e,t,r):Kl(t,e,r);if(!(i>=s))return[];const a=i-s+1,l=new Array(a);if(n)if(o<0)for(let u=0;u<a;++u)l[u]=(i-u)/-o;else for(let u=0;u<a;++u)l[u]=(i-u)*o;else if(o<0)for(let u=0;u<a;++u)l[u]=(s+u)/-o;else for(let u=0;u<a;++u)l[u]=(s+u)*o;return l}function Ph(t,e,r){return e=+e,t=+t,r=+r,Kl(t,e,r)[2]}function kh(t,e,r){e=+e,t=+t,r=+r;const n=e<t,s=n?Ph(e,t,r):Ph(t,e,r);return(n?-1:1)*(s<0?1/-s:s)}function t4(t,e){let r;if(e===void 0)for(const n of t)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let s of t)(s=e(s,++n,t))!=null&&(r<s||r===void 0&&s>=s)&&(r=s)}return r}function VP(t,e,r){t=+t,e=+e,r=(s=arguments.length)<2?(e=t,t=0,1):s<3?1:+r;for(var n=-1,s=Math.max(0,Math.ceil((e-t)/r))|0,i=new Array(s);++n<s;)i[n]=t+n*r;return i}function qP(t){return t}var Sl=1,Tl=2,Lh=3,ko=4,pb=1e-6;function YP(t){return"translate("+t+",0)"}function GP(t){return"translate(0,"+t+")"}function KP(t){return e=>+t(e)}function XP(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function QP(){return!this.__axis}function qu(t,e){var r=[],n=null,s=null,i=6,o=6,a=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=t===Sl||t===ko?-1:1,c=t===ko||t===Tl?"x":"y",f=t===Sl||t===Lh?YP:GP;function d(g){var m=n??(e.ticks?e.ticks.apply(e,r):e.domain()),y=s??(e.tickFormat?e.tickFormat.apply(e,r):qP),E=Math.max(i,0)+a,_=e.range(),S=+_[0]+l,v=+_[_.length-1]+l,A=(e.bandwidth?XP:KP)(e.copy(),l),k=g.selection?g.selection():g,x=k.selectAll(".domain").data([null]),D=k.selectAll(".tick").data(m,e).order(),N=D.exit(),B=D.enter().append("g").attr("class","tick"),q=D.select("line"),K=D.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),D=D.merge(B),q=q.merge(B.append("line").attr("stroke","currentColor").attr(c+"2",u*i)),K=K.merge(B.append("text").attr("fill","currentColor").attr(c,u*E).attr("dy",t===Sl?"0em":t===Lh?"0.71em":"0.32em")),g!==k&&(x=x.transition(g),D=D.transition(g),q=q.transition(g),K=K.transition(g),N=N.transition(g).attr("opacity",pb).attr("transform",function(C){return isFinite(C=A(C))?f(C+l):this.getAttribute("transform")}),B.attr("opacity",pb).attr("transform",function(C){var M=this.parentNode.__axis;return f((M&&isFinite(M=M(C))?M:A(C))+l)})),N.remove(),x.attr("d",t===ko||t===Tl?o?"M"+u*o+","+S+"H"+l+"V"+v+"H"+u*o:"M"+l+","+S+"V"+v:o?"M"+S+","+u*o+"V"+l+"H"+v+"V"+u*o:"M"+S+","+l+"H"+v),D.attr("opacity",1).attr("transform",function(C){return f(A(C)+l)}),q.attr(c+"2",u*i),K.attr(c,u*E).text(y),k.filter(QP).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===Tl?"start":t===ko?"end":"middle"),k.each(function(){this.__axis=A})}return d.scale=function(g){return arguments.length?(e=g,d):e},d.ticks=function(){return r=Array.from(arguments),d},d.tickArguments=function(g){return arguments.length?(r=g==null?[]:Array.from(g),d):r.slice()},d.tickValues=function(g){return arguments.length?(n=g==null?null:Array.from(g),d):n&&n.slice()},d.tickFormat=function(g){return arguments.length?(s=g,d):s},d.tickSize=function(g){return arguments.length?(i=o=+g,d):i},d.tickSizeInner=function(g){return arguments.length?(i=+g,d):i},d.tickSizeOuter=function(g){return arguments.length?(o=+g,d):o},d.tickPadding=function(g){return arguments.length?(a=+g,d):a},d.offset=function(g){return arguments.length?(l=+g,d):l},d}function r4(t){return qu(Sl,t)}function n4(t){return qu(Tl,t)}function i4(t){return qu(Lh,t)}function s4(t){return qu(ko,t)}var JP={value:()=>{}};function rg(){for(var t=0,e=arguments.length,r={},n;t<e;++t){if(!(n=arguments[t]+"")||n in r||/[\s.]/.test(n))throw new Error("illegal type: "+n);r[n]=[]}return new xl(r)}function xl(t){this._=t}function ZP(t,e){return t.trim().split(/^|\s+/).map(function(r){var n="",s=r.indexOf(".");if(s>=0&&(n=r.slice(s+1),r=r.slice(0,s)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}xl.prototype=rg.prototype={constructor:xl,on:function(t,e){var r=this._,n=ZP(t+"",r),s,i=-1,o=n.length;if(arguments.length<2){for(;++i<o;)if((s=(t=n[i]).type)&&(s=ek(r[s],t.name)))return s;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++i<o;)if(s=(t=n[i]).type)r[s]=gb(r[s],t.name,e);else if(e==null)for(s in r)r[s]=gb(r[s],t.name,null);return this},copy:function(){var t={},e=this._;for(var r in e)t[r]=e[r].slice();return new xl(t)},call:function(t,e){if((s=arguments.length-2)>0)for(var r=new Array(s),n=0,s,i;n<s;++n)r[n]=arguments[n+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(i=this._[t],n=0,s=i.length;n<s;++n)i[n].value.apply(e,r)},apply:function(t,e,r){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var n=this._[t],s=0,i=n.length;s<i;++s)n[s].value.apply(e,r)}};function ek(t,e){for(var r=0,n=t.length,s;r<n;++r)if((s=t[r]).name===e)return s.value}function gb(t,e,r){for(var n=0,s=t.length;n<s;++n)if(t[n].name===e){t[n]=JP,t=t.slice(0,n).concat(t.slice(n+1));break}return r!=null&&t.push({name:e,value:r}),t}var Nh="http://www.w3.org/1999/xhtml";const mb={svg:"http://www.w3.org/2000/svg",xhtml:Nh,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Yu(t){var e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),mb.hasOwnProperty(e)?{space:mb[e],local:t}:t}function tk(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===Nh&&e.documentElement.namespaceURI===Nh?e.createElement(t):e.createElementNS(r,t)}}function rk(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function XE(t){var e=Yu(t);return(e.local?rk:tk)(e)}function nk(){}function ng(t){return t==null?nk:function(){return this.querySelector(t)}}function ik(t){typeof t!="function"&&(t=ng(t));for(var e=this._groups,r=e.length,n=new Array(r),s=0;s<r;++s)for(var i=e[s],o=i.length,a=n[s]=new Array(o),l,u,c=0;c<o;++c)(l=i[c])&&(u=t.call(l,l.__data__,c,i))&&("__data__"in l&&(u.__data__=l.__data__),a[c]=u);return new Zt(n,this._parents)}function sk(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function ok(){return[]}function QE(t){return t==null?ok:function(){return this.querySelectorAll(t)}}function ak(t){return function(){return sk(t.apply(this,arguments))}}function lk(t){typeof t=="function"?t=ak(t):t=QE(t);for(var e=this._groups,r=e.length,n=[],s=[],i=0;i<r;++i)for(var o=e[i],a=o.length,l,u=0;u<a;++u)(l=o[u])&&(n.push(t.call(l,l.__data__,u,o)),s.push(l));return new Zt(n,s)}function JE(t){return function(){return this.matches(t)}}function ZE(t){return function(e){return e.matches(t)}}var uk=Array.prototype.find;function ck(t){return function(){return uk.call(this.children,t)}}function fk(){return this.firstElementChild}function dk(t){return this.select(t==null?fk:ck(typeof t=="function"?t:ZE(t)))}var hk=Array.prototype.filter;function pk(){return Array.from(this.children)}function gk(t){return function(){return hk.call(this.children,t)}}function mk(t){return this.selectAll(t==null?pk:gk(typeof t=="function"?t:ZE(t)))}function bk(t){typeof t!="function"&&(t=JE(t));for(var e=this._groups,r=e.length,n=new Array(r),s=0;s<r;++s)for(var i=e[s],o=i.length,a=n[s]=[],l,u=0;u<o;++u)(l=i[u])&&t.call(l,l.__data__,u,i)&&a.push(l);return new Zt(n,this._parents)}function e1(t){return new Array(t.length)}function yk(){return new Zt(this._enter||this._groups.map(e1),this._parents)}function Xl(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Xl.prototype={constructor:Xl,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function wk(t){return function(){return t}}function vk(t,e,r,n,s,i){for(var o=0,a,l=e.length,u=i.length;o<u;++o)(a=e[o])?(a.__data__=i[o],n[o]=a):r[o]=new Xl(t,i[o]);for(;o<l;++o)(a=e[o])&&(s[o]=a)}function _k(t,e,r,n,s,i,o){var a,l,u=new Map,c=e.length,f=i.length,d=new Array(c),g;for(a=0;a<c;++a)(l=e[a])&&(d[a]=g=o.call(l,l.__data__,a,e)+"",u.has(g)?s[a]=l:u.set(g,l));for(a=0;a<f;++a)g=o.call(t,i[a],a,i)+"",(l=u.get(g))?(n[a]=l,l.__data__=i[a],u.delete(g)):r[a]=new Xl(t,i[a]);for(a=0;a<c;++a)(l=e[a])&&u.get(d[a])===l&&(s[a]=l)}function Ek(t){return t.__data__}function Sk(t,e){if(!arguments.length)return Array.from(this,Ek);var r=e?_k:vk,n=this._parents,s=this._groups;typeof t!="function"&&(t=wk(t));for(var i=s.length,o=new Array(i),a=new Array(i),l=new Array(i),u=0;u<i;++u){var c=n[u],f=s[u],d=f.length,g=Tk(t.call(c,c&&c.__data__,u,n)),m=g.length,y=a[u]=new Array(m),E=o[u]=new Array(m),_=l[u]=new Array(d);r(c,f,y,E,_,g,e);for(var S=0,v=0,A,k;S<m;++S)if(A=y[S]){for(S>=v&&(v=S+1);!(k=E[v])&&++v<m;);A._next=k||null}}return o=new Zt(o,n),o._enter=a,o._exit=l,o}function Tk(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function xk(){return new Zt(this._exit||this._groups.map(e1),this._parents)}function Ak(t,e,r){var n=this.enter(),s=this,i=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),e!=null&&(s=e(s),s&&(s=s.selection())),r==null?i.remove():r(i),n&&s?n.merge(s).order():s}function Ck(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,s=r.length,i=n.length,o=Math.min(s,i),a=new Array(s),l=0;l<o;++l)for(var u=r[l],c=n[l],f=u.length,d=a[l]=new Array(f),g,m=0;m<f;++m)(g=u[m]||c[m])&&(d[m]=g);for(;l<s;++l)a[l]=r[l];return new Zt(a,this._parents)}function Ik(){for(var t=this._groups,e=-1,r=t.length;++e<r;)for(var n=t[e],s=n.length-1,i=n[s],o;--s>=0;)(o=n[s])&&(i&&o.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(o,i),i=o);return this}function Mk(t){t||(t=Ok);function e(f,d){return f&&d?t(f.__data__,d.__data__):!f-!d}for(var r=this._groups,n=r.length,s=new Array(n),i=0;i<n;++i){for(var o=r[i],a=o.length,l=s[i]=new Array(a),u,c=0;c<a;++c)(u=o[c])&&(l[c]=u);l.sort(e)}return new Zt(s,this._parents).order()}function Ok(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Rk(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Pk(){return Array.from(this)}function kk(){for(var t=this._groups,e=0,r=t.length;e<r;++e)for(var n=t[e],s=0,i=n.length;s<i;++s){var o=n[s];if(o)return o}return null}function Lk(){let t=0;for(const e of this)++t;return t}function Nk(){return!this.node()}function Dk(t){for(var e=this._groups,r=0,n=e.length;r<n;++r)for(var s=e[r],i=0,o=s.length,a;i<o;++i)(a=s[i])&&t.call(a,a.__data__,i,s);return this}function Bk(t){return function(){this.removeAttribute(t)}}function $k(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Fk(t,e){return function(){this.setAttribute(t,e)}}function Uk(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function jk(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function Wk(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function zk(t,e){var r=Yu(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?$k:Bk:typeof e=="function"?r.local?Wk:jk:r.local?Uk:Fk)(r,e))}function t1(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Hk(t){return function(){this.style.removeProperty(t)}}function Vk(t,e,r){return function(){this.style.setProperty(t,e,r)}}function qk(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function Yk(t,e,r){return arguments.length>1?this.each((e==null?Hk:typeof e=="function"?qk:Vk)(t,e,r??"")):Us(this.node(),t)}function Us(t,e){return t.style.getPropertyValue(e)||t1(t).getComputedStyle(t,null).getPropertyValue(e)}function Gk(t){return function(){delete this[t]}}function Kk(t,e){return function(){this[t]=e}}function Xk(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function Qk(t,e){return arguments.length>1?this.each((e==null?Gk:typeof e=="function"?Xk:Kk)(t,e)):this.node()[t]}function r1(t){return t.trim().split(/^|\s+/)}function ig(t){return t.classList||new n1(t)}function n1(t){this._node=t,this._names=r1(t.getAttribute("class")||"")}n1.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function i1(t,e){for(var r=ig(t),n=-1,s=e.length;++n<s;)r.add(e[n])}function s1(t,e){for(var r=ig(t),n=-1,s=e.length;++n<s;)r.remove(e[n])}function Jk(t){return function(){i1(this,t)}}function Zk(t){return function(){s1(this,t)}}function eL(t,e){return function(){(e.apply(this,arguments)?i1:s1)(this,t)}}function tL(t,e){var r=r1(t+"");if(arguments.length<2){for(var n=ig(this.node()),s=-1,i=r.length;++s<i;)if(!n.contains(r[s]))return!1;return!0}return this.each((typeof e=="function"?eL:e?Jk:Zk)(r,e))}function rL(){this.textContent=""}function nL(t){return function(){this.textContent=t}}function iL(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function sL(t){return arguments.length?this.each(t==null?rL:(typeof t=="function"?iL:nL)(t)):this.node().textContent}function oL(){this.innerHTML=""}function aL(t){return function(){this.innerHTML=t}}function lL(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function uL(t){return arguments.length?this.each(t==null?oL:(typeof t=="function"?lL:aL)(t)):this.node().innerHTML}function cL(){this.nextSibling&&this.parentNode.appendChild(this)}function fL(){return this.each(cL)}function dL(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function hL(){return this.each(dL)}function pL(t){var e=typeof t=="function"?t:XE(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function gL(){return null}function mL(t,e){var r=typeof t=="function"?t:XE(t),n=e==null?gL:typeof e=="function"?e:ng(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}function bL(){var t=this.parentNode;t&&t.removeChild(this)}function yL(){return this.each(bL)}function wL(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function vL(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function _L(t){return this.select(t?vL:wL)}function EL(t){return arguments.length?this.property("__data__",t):this.node().__data__}function SL(t){return function(e){t.call(this,e,this.__data__)}}function TL(t){return t.trim().split(/^|\s+/).map(function(e){var r="",n=e.indexOf(".");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function xL(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,s=e.length,i;r<s;++r)i=e[r],(!t.type||i.type===t.type)&&i.name===t.name?this.removeEventListener(i.type,i.listener,i.options):e[++n]=i;++n?e.length=n:delete this.__on}}}function AL(t,e,r){return function(){var n=this.__on,s,i=SL(e);if(n){for(var o=0,a=n.length;o<a;++o)if((s=n[o]).type===t.type&&s.name===t.name){this.removeEventListener(s.type,s.listener,s.options),this.addEventListener(s.type,s.listener=i,s.options=r),s.value=e;return}}this.addEventListener(t.type,i,r),s={type:t.type,name:t.name,value:e,listener:i,options:r},n?n.push(s):this.__on=[s]}}function CL(t,e,r){var n=TL(t+""),s,i=n.length,o;if(arguments.length<2){var a=this.node().__on;if(a){for(var l=0,u=a.length,c;l<u;++l)for(s=0,c=a[l];s<i;++s)if((o=n[s]).type===c.type&&o.name===c.name)return c.value}return}for(a=e?AL:xL,s=0;s<i;++s)this.each(a(n[s],e,r));return this}function o1(t,e,r){var n=t1(t),s=n.CustomEvent;typeof s=="function"?s=new s(e,r):(s=n.document.createEvent("Event"),r?(s.initEvent(e,r.bubbles,r.cancelable),s.detail=r.detail):s.initEvent(e,!1,!1)),t.dispatchEvent(s)}function IL(t,e){return function(){return o1(this,t,e)}}function ML(t,e){return function(){return o1(this,t,e.apply(this,arguments))}}function OL(t,e){return this.each((typeof e=="function"?ML:IL)(t,e))}function*RL(){for(var t=this._groups,e=0,r=t.length;e<r;++e)for(var n=t[e],s=0,i=n.length,o;s<i;++s)(o=n[s])&&(yield o)}var a1=[null];function Zt(t,e){this._groups=t,this._parents=e}function ya(){return new Zt([[document.documentElement]],a1)}function PL(){return this}Zt.prototype=ya.prototype={constructor:Zt,select:ik,selectAll:lk,selectChild:dk,selectChildren:mk,filter:bk,data:Sk,enter:yk,exit:xk,join:Ak,merge:Ck,selection:PL,order:Ik,sort:Mk,call:Rk,nodes:Pk,node:kk,size:Lk,empty:Nk,each:Dk,attr:zk,style:Yk,property:Qk,classed:tL,text:sL,html:uL,raise:fL,lower:hL,append:pL,insert:mL,remove:yL,clone:_L,datum:EL,on:CL,dispatch:OL,[Symbol.iterator]:RL};function Ii(t){return typeof t=="string"?new Zt([[document.querySelector(t)]],[document.documentElement]):new Zt([[t]],a1)}function kL(t){let e;for(;e=t.sourceEvent;)t=e;return t}function _i(t,e){if(t=kL(t),e===void 0&&(e=t.currentTarget),e){var r=e.ownerSVGElement||e;if(r.createSVGPoint){var n=r.createSVGPoint();return n.x=t.clientX,n.y=t.clientY,n=n.matrixTransform(e.getScreenCTM().inverse()),[n.x,n.y]}if(e.getBoundingClientRect){var s=e.getBoundingClientRect();return[t.clientX-s.left-e.clientLeft,t.clientY-s.top-e.clientTop]}}return[t.pageX,t.pageY]}const Dh={capture:!0,passive:!1};function Bh(t){t.preventDefault(),t.stopImmediatePropagation()}function LL(t){var e=t.document.documentElement,r=Ii(t).on("dragstart.drag",Bh,Dh);"onselectstart"in e?r.on("selectstart.drag",Bh,Dh):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function NL(t,e){var r=t.document.documentElement,n=Ii(t).on("dragstart.drag",null);e&&(n.on("click.drag",Bh,Dh),setTimeout(function(){n.on("click.drag",null)},0)),"onselectstart"in r?n.on("selectstart.drag",null):(r.style.MozUserSelect=r.__noselect,delete r.__noselect)}function sg(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function l1(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function wa(){}var ia=.7,Ql=1/ia,Ds="\\s*([+-]?\\d+)\\s*",sa="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",jr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",DL=/^#([0-9a-f]{3,8})$/,BL=new RegExp(`^rgb\\(${Ds},${Ds},${Ds}\\)$`),$L=new RegExp(`^rgb\\(${jr},${jr},${jr}\\)$`),FL=new RegExp(`^rgba\\(${Ds},${Ds},${Ds},${sa}\\)$`),UL=new RegExp(`^rgba\\(${jr},${jr},${jr},${sa}\\)$`),jL=new RegExp(`^hsl\\(${sa},${jr},${jr}\\)$`),WL=new RegExp(`^hsla\\(${sa},${jr},${jr},${sa}\\)$`),bb={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};sg(wa,Gi,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:yb,formatHex:yb,formatHex8:zL,formatHsl:HL,formatRgb:wb,toString:wb});function yb(){return this.rgb().formatHex()}function zL(){return this.rgb().formatHex8()}function HL(){return u1(this).formatHsl()}function wb(){return this.rgb().formatRgb()}function Gi(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=DL.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?vb(e):r===3?new Wt(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?Va(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?Va(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=BL.exec(t))?new Wt(e[1],e[2],e[3],1):(e=$L.exec(t))?new Wt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=FL.exec(t))?Va(e[1],e[2],e[3],e[4]):(e=UL.exec(t))?Va(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=jL.exec(t))?Sb(e[1],e[2]/100,e[3]/100,1):(e=WL.exec(t))?Sb(e[1],e[2]/100,e[3]/100,e[4]):bb.hasOwnProperty(t)?vb(bb[t]):t==="transparent"?new Wt(NaN,NaN,NaN,0):null}function vb(t){return new Wt(t>>16&255,t>>8&255,t&255,1)}function Va(t,e,r,n){return n<=0&&(t=e=r=NaN),new Wt(t,e,r,n)}function VL(t){return t instanceof wa||(t=Gi(t)),t?(t=t.rgb(),new Wt(t.r,t.g,t.b,t.opacity)):new Wt}function $h(t,e,r,n){return arguments.length===1?VL(t):new Wt(t,e,r,n??1)}function Wt(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}sg(Wt,$h,l1(wa,{brighter(t){return t=t==null?Ql:Math.pow(Ql,t),new Wt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?ia:Math.pow(ia,t),new Wt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Wt(zi(this.r),zi(this.g),zi(this.b),Jl(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:_b,formatHex:_b,formatHex8:qL,formatRgb:Eb,toString:Eb}));function _b(){return`#${ki(this.r)}${ki(this.g)}${ki(this.b)}`}function qL(){return`#${ki(this.r)}${ki(this.g)}${ki(this.b)}${ki((isNaN(this.opacity)?1:this.opacity)*255)}`}function Eb(){const t=Jl(this.opacity);return`${t===1?"rgb(":"rgba("}${zi(this.r)}, ${zi(this.g)}, ${zi(this.b)}${t===1?")":`, ${t})`}`}function Jl(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function zi(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ki(t){return t=zi(t),(t<16?"0":"")+t.toString(16)}function Sb(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new Sr(t,e,r,n)}function u1(t){if(t instanceof Sr)return new Sr(t.h,t.s,t.l,t.opacity);if(t instanceof wa||(t=Gi(t)),!t)return new Sr;if(t instanceof Sr)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,s=Math.min(e,r,n),i=Math.max(e,r,n),o=NaN,a=i-s,l=(i+s)/2;return a?(e===i?o=(r-n)/a+(r<n)*6:r===i?o=(n-e)/a+2:o=(e-r)/a+4,a/=l<.5?i+s:2-i-s,o*=60):a=l>0&&l<1?0:o,new Sr(o,a,l,t.opacity)}function YL(t,e,r,n){return arguments.length===1?u1(t):new Sr(t,e,r,n??1)}function Sr(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}sg(Sr,YL,l1(wa,{brighter(t){return t=t==null?Ql:Math.pow(Ql,t),new Sr(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?ia:Math.pow(ia,t),new Sr(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,s=2*r-n;return new Wt(nf(t>=240?t-240:t+120,s,n),nf(t,s,n),nf(t<120?t+240:t-120,s,n),this.opacity)},clamp(){return new Sr(Tb(this.h),qa(this.s),qa(this.l),Jl(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Jl(this.opacity);return`${t===1?"hsl(":"hsla("}${Tb(this.h)}, ${qa(this.s)*100}%, ${qa(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Tb(t){return t=(t||0)%360,t<0?t+360:t}function qa(t){return Math.max(0,Math.min(1,t||0))}function nf(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}const og=t=>()=>t;function GL(t,e){return function(r){return t+r*e}}function KL(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function XL(t){return(t=+t)==1?c1:function(e,r){return r-e?KL(e,r,t):og(isNaN(e)?r:e)}}function c1(t,e){var r=e-t;return r?GL(t,r):og(isNaN(t)?e:t)}const Zl=function t(e){var r=XL(e);function n(s,i){var o=r((s=$h(s)).r,(i=$h(i)).r),a=r(s.g,i.g),l=r(s.b,i.b),u=c1(s.opacity,i.opacity);return function(c){return s.r=o(c),s.g=a(c),s.b=l(c),s.opacity=u(c),s+""}}return n.gamma=t,n}(1);function QL(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),s;return function(i){for(s=0;s<r;++s)n[s]=t[s]*(1-i)+e[s]*i;return n}}function JL(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function ZL(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,s=new Array(n),i=new Array(r),o;for(o=0;o<n;++o)s[o]=ag(t[o],e[o]);for(;o<r;++o)i[o]=e[o];return function(a){for(o=0;o<n;++o)i[o]=s[o](a);return i}}function eN(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}function _r(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}function tN(t,e){var r={},n={},s;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(s in e)s in t?r[s]=ag(t[s],e[s]):n[s]=e[s];return function(i){for(s in r)n[s]=r[s](i);return n}}var Fh=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,sf=new RegExp(Fh.source,"g");function rN(t){return function(){return t}}function nN(t){return function(e){return t(e)+""}}function f1(t,e){var r=Fh.lastIndex=sf.lastIndex=0,n,s,i,o=-1,a=[],l=[];for(t=t+"",e=e+"";(n=Fh.exec(t))&&(s=sf.exec(e));)(i=s.index)>r&&(i=e.slice(r,i),a[o]?a[o]+=i:a[++o]=i),(n=n[0])===(s=s[0])?a[o]?a[o]+=s:a[++o]=s:(a[++o]=null,l.push({i:o,x:_r(n,s)})),r=sf.lastIndex;return r<e.length&&(i=e.slice(r),a[o]?a[o]+=i:a[++o]=i),a.length<2?l[0]?nN(l[0].x):rN(e):(e=l.length,function(u){for(var c=0,f;c<e;++c)a[(f=l[c]).i]=f.x(u);return a.join("")})}function ag(t,e){var r=typeof e,n;return e==null||r==="boolean"?og(e):(r==="number"?_r:r==="string"?(n=Gi(e))?(e=n,Zl):f1:e instanceof Gi?Zl:e instanceof Date?eN:JL(e)?QL:Array.isArray(e)?ZL:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?tN:_r)(t,e)}function iN(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var xb=180/Math.PI,Uh={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function d1(t,e,r,n,s,i){var o,a,l;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(l=t*r+e*n)&&(r-=t*l,n-=e*l),(a=Math.sqrt(r*r+n*n))&&(r/=a,n/=a,l/=a),t*n<e*r&&(t=-t,e=-e,l=-l,o=-o),{translateX:s,translateY:i,rotate:Math.atan2(e,t)*xb,skewX:Math.atan(l)*xb,scaleX:o,scaleY:a}}var Ya;function sN(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Uh:d1(e.a,e.b,e.c,e.d,e.e,e.f)}function oN(t){return t==null||(Ya||(Ya=document.createElementNS("http://www.w3.org/2000/svg","g")),Ya.setAttribute("transform",t),!(t=Ya.transform.baseVal.consolidate()))?Uh:(t=t.matrix,d1(t.a,t.b,t.c,t.d,t.e,t.f))}function h1(t,e,r,n){function s(u){return u.length?u.pop()+" ":""}function i(u,c,f,d,g,m){if(u!==f||c!==d){var y=g.push("translate(",null,e,null,r);m.push({i:y-4,x:_r(u,f)},{i:y-2,x:_r(c,d)})}else(f||d)&&g.push("translate("+f+e+d+r)}function o(u,c,f,d){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),d.push({i:f.push(s(f)+"rotate(",null,n)-2,x:_r(u,c)})):c&&f.push(s(f)+"rotate("+c+n)}function a(u,c,f,d){u!==c?d.push({i:f.push(s(f)+"skewX(",null,n)-2,x:_r(u,c)}):c&&f.push(s(f)+"skewX("+c+n)}function l(u,c,f,d,g,m){if(u!==f||c!==d){var y=g.push(s(g)+"scale(",null,",",null,")");m.push({i:y-4,x:_r(u,f)},{i:y-2,x:_r(c,d)})}else(f!==1||d!==1)&&g.push(s(g)+"scale("+f+","+d+")")}return function(u,c){var f=[],d=[];return u=t(u),c=t(c),i(u.translateX,u.translateY,c.translateX,c.translateY,f,d),o(u.rotate,c.rotate,f,d),a(u.skewX,c.skewX,f,d),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,d),u=c=null,function(g){for(var m=-1,y=d.length,E;++m<y;)f[(E=d[m]).i]=E.x(g);return f.join("")}}}var aN=h1(sN,"px, ","px)","deg)"),lN=h1(oN,", ",")",")"),uN=1e-12;function Ab(t){return((t=Math.exp(t))+1/t)/2}function cN(t){return((t=Math.exp(t))-1/t)/2}function fN(t){return((t=Math.exp(2*t))-1)/(t+1)}const dN=function t(e,r,n){function s(i,o){var a=i[0],l=i[1],u=i[2],c=o[0],f=o[1],d=o[2],g=c-a,m=f-l,y=g*g+m*m,E,_;if(y<uN)_=Math.log(d/u)/e,E=function(D){return[a+D*g,l+D*m,u*Math.exp(e*D*_)]};else{var S=Math.sqrt(y),v=(d*d-u*u+n*y)/(2*u*r*S),A=(d*d-u*u-n*y)/(2*d*r*S),k=Math.log(Math.sqrt(v*v+1)-v),x=Math.log(Math.sqrt(A*A+1)-A);_=(x-k)/e,E=function(D){var N=D*_,B=Ab(k),q=u/(r*S)*(B*fN(e*N+k)-cN(k));return[a+q*g,l+q*m,u*B/Ab(e*N+k)]}}return E.duration=_*1e3*e/Math.SQRT2,E}return s.rho=function(i){var o=Math.max(.001,+i),a=o*o,l=a*a;return t(o,a,l)},s}(Math.SQRT2,2,4);var js=0,Lo=0,_o=0,p1=1e3,eu,No,tu=0,Ki=0,Gu=0,oa=typeof performance=="object"&&performance.now?performance:Date,g1=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function lg(){return Ki||(g1(hN),Ki=oa.now()+Gu)}function hN(){Ki=0}function ru(){this._call=this._time=this._next=null}ru.prototype=m1.prototype={constructor:ru,restart:function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?lg():+r)+(e==null?0:+e),!this._next&&No!==this&&(No?No._next=this:eu=this,No=this),this._call=t,this._time=r,jh()},stop:function(){this._call&&(this._call=null,this._time=1/0,jh())}};function m1(t,e,r){var n=new ru;return n.restart(t,e,r),n}function pN(){lg(),++js;for(var t=eu,e;t;)(e=Ki-t._time)>=0&&t._call.call(void 0,e),t=t._next;--js}function Cb(){Ki=(tu=oa.now())+Gu,js=Lo=0;try{pN()}finally{js=0,mN(),Ki=0}}function gN(){var t=oa.now(),e=t-tu;e>p1&&(Gu-=e,tu=t)}function mN(){for(var t,e=eu,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:eu=r);No=t,jh(n)}function jh(t){if(!js){Lo&&(Lo=clearTimeout(Lo));var e=t-Ki;e>24?(t<1/0&&(Lo=setTimeout(Cb,t-oa.now()-Gu)),_o&&(_o=clearInterval(_o))):(_o||(tu=oa.now(),_o=setInterval(gN,p1)),js=1,g1(Cb))}}function Ib(t,e,r){var n=new ru;return e=e==null?0:+e,n.restart(s=>{n.stop(),t(s+e)},e,r),n}var bN=rg("start","end","cancel","interrupt"),yN=[],b1=0,Mb=1,Wh=2,Al=3,Ob=4,zh=5,Cl=6;function Ku(t,e,r,n,s,i){var o=t.__transition;if(!o)t.__transition={};else if(r in o)return;wN(t,r,{name:e,index:n,group:s,on:bN,tween:yN,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:b1})}function ug(t,e){var r=Cr(t,e);if(r.state>b1)throw new Error("too late; already scheduled");return r}function Gr(t,e){var r=Cr(t,e);if(r.state>Al)throw new Error("too late; already running");return r}function Cr(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function wN(t,e,r){var n=t.__transition,s;n[e]=r,r.timer=m1(i,0,r.time);function i(u){r.state=Mb,r.timer.restart(o,r.delay,r.time),r.delay<=u&&o(u-r.delay)}function o(u){var c,f,d,g;if(r.state!==Mb)return l();for(c in n)if(g=n[c],g.name===r.name){if(g.state===Al)return Ib(o);g.state===Ob?(g.state=Cl,g.timer.stop(),g.on.call("interrupt",t,t.__data__,g.index,g.group),delete n[c]):+c<e&&(g.state=Cl,g.timer.stop(),g.on.call("cancel",t,t.__data__,g.index,g.group),delete n[c])}if(Ib(function(){r.state===Al&&(r.state=Ob,r.timer.restart(a,r.delay,r.time),a(u))}),r.state=Wh,r.on.call("start",t,t.__data__,r.index,r.group),r.state===Wh){for(r.state=Al,s=new Array(d=r.tween.length),c=0,f=-1;c<d;++c)(g=r.tween[c].value.call(t,t.__data__,r.index,r.group))&&(s[++f]=g);s.length=f+1}}function a(u){for(var c=u<r.duration?r.ease.call(null,u/r.duration):(r.timer.restart(l),r.state=zh,1),f=-1,d=s.length;++f<d;)s[f].call(t,c);r.state===zh&&(r.on.call("end",t,t.__data__,r.index,r.group),l())}function l(){r.state=Cl,r.timer.stop(),delete n[e];for(var u in n)return;delete t.__transition}}function Il(t,e){var r=t.__transition,n,s,i=!0,o;if(r){e=e==null?null:e+"";for(o in r){if((n=r[o]).name!==e){i=!1;continue}s=n.state>Wh&&n.state<zh,n.state=Cl,n.timer.stop(),n.on.call(s?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete r[o]}i&&delete t.__transition}}function vN(t){return this.each(function(){Il(this,t)})}function _N(t,e){var r,n;return function(){var s=Gr(this,t),i=s.tween;if(i!==r){n=r=i;for(var o=0,a=n.length;o<a;++o)if(n[o].name===e){n=n.slice(),n.splice(o,1);break}}s.tween=n}}function EN(t,e,r){var n,s;if(typeof r!="function")throw new Error;return function(){var i=Gr(this,t),o=i.tween;if(o!==n){s=(n=o).slice();for(var a={name:e,value:r},l=0,u=s.length;l<u;++l)if(s[l].name===e){s[l]=a;break}l===u&&s.push(a)}i.tween=s}}function SN(t,e){var r=this._id;if(t+="",arguments.length<2){for(var n=Cr(this.node(),r).tween,s=0,i=n.length,o;s<i;++s)if((o=n[s]).name===t)return o.value;return null}return this.each((e==null?_N:EN)(r,t,e))}function cg(t,e,r){var n=t._id;return t.each(function(){var s=Gr(this,n);(s.value||(s.value={}))[e]=r.apply(this,arguments)}),function(s){return Cr(s,n).value[e]}}function y1(t,e){var r;return(typeof e=="number"?_r:e instanceof Gi?Zl:(r=Gi(e))?(e=r,Zl):f1)(t,e)}function TN(t){return function(){this.removeAttribute(t)}}function xN(t){return function(){this.removeAttributeNS(t.space,t.local)}}function AN(t,e,r){var n,s=r+"",i;return function(){var o=this.getAttribute(t);return o===s?null:o===n?i:i=e(n=o,r)}}function CN(t,e,r){var n,s=r+"",i;return function(){var o=this.getAttributeNS(t.space,t.local);return o===s?null:o===n?i:i=e(n=o,r)}}function IN(t,e,r){var n,s,i;return function(){var o,a=r(this),l;return a==null?void this.removeAttribute(t):(o=this.getAttribute(t),l=a+"",o===l?null:o===n&&l===s?i:(s=l,i=e(n=o,a)))}}function MN(t,e,r){var n,s,i;return function(){var o,a=r(this),l;return a==null?void this.removeAttributeNS(t.space,t.local):(o=this.getAttributeNS(t.space,t.local),l=a+"",o===l?null:o===n&&l===s?i:(s=l,i=e(n=o,a)))}}function ON(t,e){var r=Yu(t),n=r==="transform"?lN:y1;return this.attrTween(t,typeof e=="function"?(r.local?MN:IN)(r,n,cg(this,"attr."+t,e)):e==null?(r.local?xN:TN)(r):(r.local?CN:AN)(r,n,e))}function RN(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function PN(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function kN(t,e){var r,n;function s(){var i=e.apply(this,arguments);return i!==n&&(r=(n=i)&&PN(t,i)),r}return s._value=e,s}function LN(t,e){var r,n;function s(){var i=e.apply(this,arguments);return i!==n&&(r=(n=i)&&RN(t,i)),r}return s._value=e,s}function NN(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;var n=Yu(t);return this.tween(r,(n.local?kN:LN)(n,e))}function DN(t,e){return function(){ug(this,t).delay=+e.apply(this,arguments)}}function BN(t,e){return e=+e,function(){ug(this,t).delay=e}}function $N(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?DN:BN)(e,t)):Cr(this.node(),e).delay}function FN(t,e){return function(){Gr(this,t).duration=+e.apply(this,arguments)}}function UN(t,e){return e=+e,function(){Gr(this,t).duration=e}}function jN(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?FN:UN)(e,t)):Cr(this.node(),e).duration}function WN(t,e){if(typeof e!="function")throw new Error;return function(){Gr(this,t).ease=e}}function zN(t){var e=this._id;return arguments.length?this.each(WN(e,t)):Cr(this.node(),e).ease}function HN(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;Gr(this,t).ease=r}}function VN(t){if(typeof t!="function")throw new Error;return this.each(HN(this._id,t))}function qN(t){typeof t!="function"&&(t=JE(t));for(var e=this._groups,r=e.length,n=new Array(r),s=0;s<r;++s)for(var i=e[s],o=i.length,a=n[s]=[],l,u=0;u<o;++u)(l=i[u])&&t.call(l,l.__data__,u,i)&&a.push(l);return new Sn(n,this._parents,this._name,this._id)}function YN(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,s=r.length,i=Math.min(n,s),o=new Array(n),a=0;a<i;++a)for(var l=e[a],u=r[a],c=l.length,f=o[a]=new Array(c),d,g=0;g<c;++g)(d=l[g]||u[g])&&(f[g]=d);for(;a<n;++a)o[a]=e[a];return new Sn(o,this._parents,this._name,this._id)}function GN(t){return(t+"").trim().split(/^|\s+/).every(function(e){var r=e.indexOf(".");return r>=0&&(e=e.slice(0,r)),!e||e==="start"})}function KN(t,e,r){var n,s,i=GN(e)?ug:Gr;return function(){var o=i(this,t),a=o.on;a!==n&&(s=(n=a).copy()).on(e,r),o.on=s}}function XN(t,e){var r=this._id;return arguments.length<2?Cr(this.node(),r).on.on(t):this.each(KN(r,t,e))}function QN(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function JN(){return this.on("end.remove",QN(this._id))}function ZN(t){var e=this._name,r=this._id;typeof t!="function"&&(t=ng(t));for(var n=this._groups,s=n.length,i=new Array(s),o=0;o<s;++o)for(var a=n[o],l=a.length,u=i[o]=new Array(l),c,f,d=0;d<l;++d)(c=a[d])&&(f=t.call(c,c.__data__,d,a))&&("__data__"in c&&(f.__data__=c.__data__),u[d]=f,Ku(u[d],e,r,d,u,Cr(c,r)));return new Sn(i,this._parents,e,r)}function e2(t){var e=this._name,r=this._id;typeof t!="function"&&(t=QE(t));for(var n=this._groups,s=n.length,i=[],o=[],a=0;a<s;++a)for(var l=n[a],u=l.length,c,f=0;f<u;++f)if(c=l[f]){for(var d=t.call(c,c.__data__,f,l),g,m=Cr(c,r),y=0,E=d.length;y<E;++y)(g=d[y])&&Ku(g,e,r,y,d,m);i.push(d),o.push(c)}return new Sn(i,o,e,r)}var t2=ya.prototype.constructor;function r2(){return new t2(this._groups,this._parents)}function n2(t,e){var r,n,s;return function(){var i=Us(this,t),o=(this.style.removeProperty(t),Us(this,t));return i===o?null:i===r&&o===n?s:s=e(r=i,n=o)}}function w1(t){return function(){this.style.removeProperty(t)}}function i2(t,e,r){var n,s=r+"",i;return function(){var o=Us(this,t);return o===s?null:o===n?i:i=e(n=o,r)}}function s2(t,e,r){var n,s,i;return function(){var o=Us(this,t),a=r(this),l=a+"";return a==null&&(l=a=(this.style.removeProperty(t),Us(this,t))),o===l?null:o===n&&l===s?i:(s=l,i=e(n=o,a))}}function o2(t,e){var r,n,s,i="style."+e,o="end."+i,a;return function(){var l=Gr(this,t),u=l.on,c=l.value[i]==null?a||(a=w1(e)):void 0;(u!==r||s!==c)&&(n=(r=u).copy()).on(o,s=c),l.on=n}}function a2(t,e,r){var n=(t+="")=="transform"?aN:y1;return e==null?this.styleTween(t,n2(t,n)).on("end.style."+t,w1(t)):typeof e=="function"?this.styleTween(t,s2(t,n,cg(this,"style."+t,e))).each(o2(this._id,t)):this.styleTween(t,i2(t,n,e),r).on("end.style."+t,null)}function l2(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function u2(t,e,r){var n,s;function i(){var o=e.apply(this,arguments);return o!==s&&(n=(s=o)&&l2(t,o,r)),n}return i._value=e,i}function c2(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;return this.tween(n,u2(t,e,r??""))}function f2(t){return function(){this.textContent=t}}function d2(t){return function(){var e=t(this);this.textContent=e??""}}function h2(t){return this.tween("text",typeof t=="function"?d2(cg(this,"text",t)):f2(t==null?"":t+""))}function p2(t){return function(e){this.textContent=t.call(this,e)}}function g2(t){var e,r;function n(){var s=t.apply(this,arguments);return s!==r&&(e=(r=s)&&p2(s)),e}return n._value=t,n}function m2(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,g2(t))}function b2(){for(var t=this._name,e=this._id,r=v1(),n=this._groups,s=n.length,i=0;i<s;++i)for(var o=n[i],a=o.length,l,u=0;u<a;++u)if(l=o[u]){var c=Cr(l,e);Ku(l,t,r,u,o,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new Sn(n,this._parents,t,r)}function y2(){var t,e,r=this,n=r._id,s=r.size();return new Promise(function(i,o){var a={value:o},l={value:function(){--s===0&&i()}};r.each(function(){var u=Gr(this,n),c=u.on;c!==t&&(e=(t=c).copy(),e._.cancel.push(a),e._.interrupt.push(a),e._.end.push(l)),u.on=e}),s===0&&i()})}var w2=0;function Sn(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function v1(){return++w2}var Qr=ya.prototype;Sn.prototype={constructor:Sn,select:ZN,selectAll:e2,selectChild:Qr.selectChild,selectChildren:Qr.selectChildren,filter:qN,merge:YN,selection:r2,transition:b2,call:Qr.call,nodes:Qr.nodes,node:Qr.node,size:Qr.size,empty:Qr.empty,each:Qr.each,on:XN,attr:ON,attrTween:NN,style:a2,styleTween:c2,text:h2,textTween:m2,remove:JN,tween:SN,delay:$N,duration:jN,ease:zN,easeVarying:VN,end:y2,[Symbol.iterator]:Qr[Symbol.iterator]};const o4=t=>+t;function v2(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var _2={time:null,delay:0,duration:250,ease:v2};function E2(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function S2(t){var e,r;t instanceof Sn?(e=t._id,t=t._name):(e=v1(),(r=_2).time=lg(),t=t==null?null:t+"");for(var n=this._groups,s=n.length,i=0;i<s;++i)for(var o=n[i],a=o.length,l,u=0;u<a;++u)(l=o[u])&&Ku(l,t,e,u,o,r||E2(l,e));return new Sn(n,this._parents,t,e)}ya.prototype.interrupt=vN;ya.prototype.transition=S2;const Hh=Math.PI,Vh=2*Hh,xi=1e-6,T2=Vh-xi;function _1(t){this._+=t[0];for(let e=1,r=t.length;e<r;++e)this._+=arguments[e]+t[e]}function x2(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return _1;const r=10**e;return function(n){this._+=n[0];for(let s=1,i=n.length;s<i;++s)this._+=Math.round(arguments[s]*r)/r+n[s]}}class A2{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?_1:x2(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,s){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+s}`}bezierCurveTo(e,r,n,s,i,o){this._append`C${+e},${+r},${+n},${+s},${this._x1=+i},${this._y1=+o}`}arcTo(e,r,n,s,i){if(e=+e,r=+r,n=+n,s=+s,i=+i,i<0)throw new Error(`negative radius: ${i}`);let o=this._x1,a=this._y1,l=n-e,u=s-r,c=o-e,f=a-r,d=c*c+f*f;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(d>xi)if(!(Math.abs(f*l-u*c)>xi)||!i)this._append`L${this._x1=e},${this._y1=r}`;else{let g=n-o,m=s-a,y=l*l+u*u,E=g*g+m*m,_=Math.sqrt(y),S=Math.sqrt(d),v=i*Math.tan((Hh-Math.acos((y+d-E)/(2*_*S)))/2),A=v/S,k=v/_;Math.abs(A-1)>xi&&this._append`L${e+A*c},${r+A*f}`,this._append`A${i},${i},0,0,${+(f*g>c*m)},${this._x1=e+k*l},${this._y1=r+k*u}`}}arc(e,r,n,s,i,o){if(e=+e,r=+r,n=+n,o=!!o,n<0)throw new Error(`negative radius: ${n}`);let a=n*Math.cos(s),l=n*Math.sin(s),u=e+a,c=r+l,f=1^o,d=o?s-i:i-s;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>xi||Math.abs(this._y1-c)>xi)&&this._append`L${u},${c}`,n&&(d<0&&(d=d%Vh+Vh),d>T2?this._append`A${n},${n},0,1,${f},${e-a},${r-l}A${n},${n},0,1,${f},${this._x1=u},${this._y1=c}`:d>xi&&this._append`A${n},${n},0,${+(d>=Hh)},${f},${this._x1=e+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(e,r,n,s){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+s}h${-n}Z`}toString(){return this._}}function C2(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function nu(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function Ws(t){return t=nu(Math.abs(t)),t?t[1]:NaN}function I2(t,e){return function(r,n){for(var s=r.length,i=[],o=0,a=t[0],l=0;s>0&&a>0&&(l+a+1>n&&(a=Math.max(1,n-l)),i.push(r.substring(s-=a,s+a)),!((l+=a+1)>n));)a=t[o=(o+1)%t.length];return i.reverse().join(e)}}function M2(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var O2=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function iu(t){if(!(e=O2.exec(t)))throw new Error("invalid format: "+t);var e;return new fg({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}iu.prototype=fg.prototype;function fg(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}fg.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function R2(t){e:for(var e=t.length,r=1,n=-1,s;r<e;++r)switch(t[r]){case".":n=s=r;break;case"0":n===0&&(n=r),s=r;break;default:if(!+t[r])break e;n>0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(s+1):t}var E1;function P2(t,e){var r=nu(t,e);if(!r)return t+"";var n=r[0],s=r[1],i=s-(E1=Math.max(-8,Math.min(8,Math.floor(s/3)))*3)+1,o=n.length;return i===o?n:i>o?n+new Array(i-o+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+nu(t,Math.max(0,e+i-1))[0]}function Rb(t,e){var r=nu(t,e);if(!r)return t+"";var n=r[0],s=r[1];return s<0?"0."+new Array(-s).join("0")+n:n.length>s+1?n.slice(0,s+1)+"."+n.slice(s+1):n+new Array(s-n.length+2).join("0")}const Pb={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:C2,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Rb(t*100,e),r:Rb,s:P2,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function kb(t){return t}var Lb=Array.prototype.map,Nb=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function k2(t){var e=t.grouping===void 0||t.thousands===void 0?kb:I2(Lb.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",s=t.decimal===void 0?".":t.decimal+"",i=t.numerals===void 0?kb:M2(Lb.call(t.numerals,String)),o=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"−":t.minus+"",l=t.nan===void 0?"NaN":t.nan+"";function u(f){f=iu(f);var d=f.fill,g=f.align,m=f.sign,y=f.symbol,E=f.zero,_=f.width,S=f.comma,v=f.precision,A=f.trim,k=f.type;k==="n"?(S=!0,k="g"):Pb[k]||(v===void 0&&(v=12),A=!0,k="g"),(E||d==="0"&&g==="=")&&(E=!0,d="0",g="=");var x=y==="$"?r:y==="#"&&/[boxX]/.test(k)?"0"+k.toLowerCase():"",D=y==="$"?n:/[%p]/.test(k)?o:"",N=Pb[k],B=/[defgprs%]/.test(k);v=v===void 0?6:/[gprs]/.test(k)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function q(K){var C=x,M=D,L,H,G;if(k==="c")M=N(K)+M,K="";else{K=+K;var z=K<0||1/K<0;if(K=isNaN(K)?l:N(Math.abs(K),v),A&&(K=R2(K)),z&&+K==0&&m!=="+"&&(z=!1),C=(z?m==="("?m:a:m==="-"||m==="("?"":m)+C,M=(k==="s"?Nb[8+E1/3]:"")+M+(z&&m==="("?")":""),B){for(L=-1,H=K.length;++L<H;)if(G=K.charCodeAt(L),48>G||G>57){M=(G===46?s+K.slice(L+1):K.slice(L))+M,K=K.slice(0,L);break}}}S&&!E&&(K=e(K,1/0));var F=C.length+K.length+M.length,ne=F<_?new Array(_-F+1).join(d):"";switch(S&&E&&(K=e(ne+K,ne.length?_-M.length:1/0),ne=""),g){case"<":K=C+K+M+ne;break;case"=":K=C+ne+K+M;break;case"^":K=ne.slice(0,F=ne.length>>1)+C+K+M+ne.slice(F);break;default:K=ne+C+K+M;break}return i(K)}return q.toString=function(){return f+""},q}function c(f,d){var g=u((f=iu(f),f.type="f",f)),m=Math.max(-8,Math.min(8,Math.floor(Ws(d)/3)))*3,y=Math.pow(10,-m),E=Nb[8+m/3];return function(_){return g(y*_)+E}}return{format:u,formatPrefix:c}}var Ga,S1,T1;L2({thousands:",",grouping:[3],currency:["$",""]});function L2(t){return Ga=k2(t),S1=Ga.format,T1=Ga.formatPrefix,Ga}function N2(t){return Math.max(0,-Ws(Math.abs(t)))}function D2(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Ws(e)/3)))*3-Ws(Math.abs(t)))}function B2(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Ws(e)-Ws(t))+1}function va(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}const Db=Symbol("implicit");function x1(){var t=new db,e=[],r=[],n=Db;function s(i){let o=t.get(i);if(o===void 0){if(n!==Db)return n;t.set(i,o=e.push(i)-1)}return r[o%r.length]}return s.domain=function(i){if(!arguments.length)return e.slice();e=[],t=new db;for(const o of i)t.has(o)||t.set(o,e.push(o)-1);return s},s.range=function(i){return arguments.length?(r=Array.from(i),s):r.slice()},s.unknown=function(i){return arguments.length?(n=i,s):n},s.copy=function(){return x1(e,r).unknown(n)},va.apply(s,arguments),s}function $2(){var t=x1().unknown(void 0),e=t.domain,r=t.range,n=0,s=1,i,o,a=!1,l=0,u=0,c=.5;delete t.unknown;function f(){var d=e().length,g=s<n,m=g?s:n,y=g?n:s;i=(y-m)/Math.max(1,d-l+u*2),a&&(i=Math.floor(i)),m+=(y-m-i*(d-l))*c,o=i*(1-l),a&&(m=Math.round(m),o=Math.round(o));var E=VP(d).map(function(_){return m+i*_});return r(g?E.reverse():E)}return t.domain=function(d){return arguments.length?(e(d),f()):e()},t.range=function(d){return arguments.length?([n,s]=d,n=+n,s=+s,f()):[n,s]},t.rangeRound=function(d){return[n,s]=d,n=+n,s=+s,a=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(d){return arguments.length?(a=!!d,f()):a},t.padding=function(d){return arguments.length?(l=Math.min(1,u=+d),f()):l},t.paddingInner=function(d){return arguments.length?(l=Math.min(1,d),f()):l},t.paddingOuter=function(d){return arguments.length?(u=+d,f()):u},t.align=function(d){return arguments.length?(c=Math.max(0,Math.min(1,d)),f()):c},t.copy=function(){return $2(e(),[n,s]).round(a).paddingInner(l).paddingOuter(u).align(c)},va.apply(f(),arguments)}function F2(t){return function(){return t}}function U2(t){return+t}var Bb=[0,1];function As(t){return t}function qh(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:F2(isNaN(e)?NaN:.5)}function j2(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function W2(t,e,r){var n=t[0],s=t[1],i=e[0],o=e[1];return s<n?(n=qh(s,n),i=r(o,i)):(n=qh(n,s),i=r(i,o)),function(a){return i(n(a))}}function z2(t,e,r){var n=Math.min(t.length,e.length)-1,s=new Array(n),i=new Array(n),o=-1;for(t[n]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++o<n;)s[o]=qh(t[o],t[o+1]),i[o]=r(e[o],e[o+1]);return function(a){var l=BP(t,a,1,n)-1;return i[l](s[l](a))}}function A1(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function H2(){var t=Bb,e=Bb,r=ag,n,s,i,o=As,a,l,u;function c(){var d=Math.min(t.length,e.length);return o!==As&&(o=j2(t[0],t[d-1])),a=d>2?z2:W2,l=u=null,f}function f(d){return d==null||isNaN(d=+d)?i:(l||(l=a(t.map(n),e,r)))(n(o(d)))}return f.invert=function(d){return o(s((u||(u=a(e,t.map(n),_r)))(d)))},f.domain=function(d){return arguments.length?(t=Array.from(d,U2),c()):t.slice()},f.range=function(d){return arguments.length?(e=Array.from(d),c()):e.slice()},f.rangeRound=function(d){return e=Array.from(d),r=iN,c()},f.clamp=function(d){return arguments.length?(o=d?!0:As,c()):o!==As},f.interpolate=function(d){return arguments.length?(r=d,c()):r},f.unknown=function(d){return arguments.length?(i=d,f):i},function(d,g){return n=d,s=g,c()}}function C1(){return H2()(As,As)}function V2(t,e,r,n){var s=kh(t,e,r),i;switch(n=iu(n??",f"),n.type){case"s":{var o=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(i=D2(s,o))&&(n.precision=i),T1(n,o)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=B2(s,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=N2(s))&&(n.precision=i-(n.type==="%")*2);break}}return S1(n)}function q2(t){var e=t.domain;return t.ticks=function(r){var n=e();return HP(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var s=e();return V2(s[0],s[s.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),s=0,i=n.length-1,o=n[s],a=n[i],l,u,c=10;for(a<o&&(u=o,o=a,a=u,u=s,s=i,i=u);c-- >0;){if(u=Ph(o,a,r),u===l)return n[s]=o,n[i]=a,e(n);if(u>0)o=Math.floor(o/u)*u,a=Math.ceil(a/u)*u;else if(u<0)o=Math.ceil(o*u)/u,a=Math.floor(a*u)/u;else break;l=u}return t},t}function Y2(){var t=C1();return t.copy=function(){return A1(t,Y2())},va.apply(t,arguments),q2(t)}function G2(t,e){t=t.slice();var r=0,n=t.length-1,s=t[r],i=t[n],o;return i<s&&(o=r,r=n,n=o,o=s,s=i,i=o),t[r]=e.floor(s),t[n]=e.ceil(i),t}const of=new Date,af=new Date;function pt(t,e,r,n){function s(i){return t(i=arguments.length===0?new Date:new Date(+i)),i}return s.floor=i=>(t(i=new Date(+i)),i),s.ceil=i=>(t(i=new Date(i-1)),e(i,1),t(i),i),s.round=i=>{const o=s(i),a=s.ceil(i);return i-o<a-i?o:a},s.offset=(i,o)=>(e(i=new Date(+i),o==null?1:Math.floor(o)),i),s.range=(i,o,a)=>{const l=[];if(i=s.ceil(i),a=a==null?1:Math.floor(a),!(i<o)||!(a>0))return l;let u;do l.push(u=new Date(+i)),e(i,a),t(i);while(u<i&&i<o);return l},s.filter=i=>pt(o=>{if(o>=o)for(;t(o),!i(o);)o.setTime(o-1)},(o,a)=>{if(o>=o)if(a<0)for(;++a<=0;)for(;e(o,-1),!i(o););else for(;--a>=0;)for(;e(o,1),!i(o););}),r&&(s.count=(i,o)=>(of.setTime(+i),af.setTime(+o),t(of),t(af),Math.floor(r(of,af))),s.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?s.filter(n?o=>n(o)%i===0:o=>s.count(0,o)%i===0):s)),s}const su=pt(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);su.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?pt(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):su);su.range;const cn=1e3,ur=cn*60,fn=ur*60,Tn=fn*24,dg=Tn*7,$b=Tn*30,lf=Tn*365,Li=pt(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*cn)},(t,e)=>(e-t)/cn,t=>t.getUTCSeconds());Li.range;const hg=pt(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*cn)},(t,e)=>{t.setTime(+t+e*ur)},(t,e)=>(e-t)/ur,t=>t.getMinutes());hg.range;const pg=pt(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*ur)},(t,e)=>(e-t)/ur,t=>t.getUTCMinutes());pg.range;const gg=pt(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*cn-t.getMinutes()*ur)},(t,e)=>{t.setTime(+t+e*fn)},(t,e)=>(e-t)/fn,t=>t.getHours());gg.range;const mg=pt(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*fn)},(t,e)=>(e-t)/fn,t=>t.getUTCHours());mg.range;const _a=pt(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*ur)/Tn,t=>t.getDate()-1);_a.range;const Xu=pt(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/Tn,t=>t.getUTCDate()-1);Xu.range;const I1=pt(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/Tn,t=>Math.floor(t/Tn));I1.range;function ls(t){return pt(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*ur)/dg)}const Qu=ls(0),ou=ls(1),K2=ls(2),X2=ls(3),zs=ls(4),Q2=ls(5),J2=ls(6);Qu.range;ou.range;K2.range;X2.range;zs.range;Q2.range;J2.range;function us(t){return pt(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/dg)}const Ju=us(0),au=us(1),Z2=us(2),eD=us(3),Hs=us(4),tD=us(5),rD=us(6);Ju.range;au.range;Z2.range;eD.range;Hs.range;tD.range;rD.range;const bg=pt(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth());bg.range;const yg=pt(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth());yg.range;const xn=pt(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());xn.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:pt(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});xn.range;const An=pt(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());An.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:pt(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});An.range;function M1(t,e,r,n,s,i){const o=[[Li,1,cn],[Li,5,5*cn],[Li,15,15*cn],[Li,30,30*cn],[i,1,ur],[i,5,5*ur],[i,15,15*ur],[i,30,30*ur],[s,1,fn],[s,3,3*fn],[s,6,6*fn],[s,12,12*fn],[n,1,Tn],[n,2,2*Tn],[r,1,dg],[e,1,$b],[e,3,3*$b],[t,1,lf]];function a(u,c,f){const d=c<u;d&&([u,c]=[c,u]);const g=f&&typeof f.range=="function"?f:l(u,c,f),m=g?g.range(u,+c+1):[];return d?m.reverse():m}function l(u,c,f){const d=Math.abs(c-u)/f,g=tg(([,,E])=>E).right(o,d);if(g===o.length)return t.every(kh(u/lf,c/lf,f));if(g===0)return su.every(Math.max(kh(u,c,f),1));const[m,y]=o[d/o[g-1][2]<o[g][2]/d?g-1:g];return m.every(y)}return[a,l]}const[nD,iD]=M1(An,yg,Ju,I1,mg,pg),[sD,oD]=M1(xn,bg,Qu,_a,gg,hg);function uf(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function cf(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Eo(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function aD(t){var e=t.dateTime,r=t.date,n=t.time,s=t.periods,i=t.days,o=t.shortDays,a=t.months,l=t.shortMonths,u=So(s),c=To(s),f=So(i),d=To(i),g=So(o),m=To(o),y=So(a),E=To(a),_=So(l),S=To(l),v={a:z,A:F,b:ne,B:ce,c:null,d:Hb,e:Hb,f:OD,g:UD,G:WD,H:CD,I:ID,j:MD,L:O1,m:RD,M:PD,p:re,q:R,Q:Yb,s:Gb,S:kD,u:LD,U:ND,V:DD,w:BD,W:$D,x:null,X:null,y:FD,Y:jD,Z:zD,"%":qb},A={a:Q,A:de,b:ge,B:pe,c:null,d:Vb,e:Vb,f:YD,g:nB,G:sB,H:HD,I:VD,j:qD,L:P1,m:GD,M:KD,p:X,q:Y,Q:Yb,s:Gb,S:XD,u:QD,U:JD,V:ZD,w:eB,W:tB,x:null,X:null,y:rB,Y:iB,Z:oB,"%":qb},k={a:q,A:K,b:C,B:M,c:L,d:Wb,e:Wb,f:SD,g:jb,G:Ub,H:zb,I:zb,j:wD,L:ED,m:yD,M:vD,p:B,q:bD,Q:xD,s:AD,S:_D,u:dD,U:hD,V:pD,w:fD,W:gD,x:H,X:G,y:jb,Y:Ub,Z:mD,"%":TD};v.x=x(r,v),v.X=x(n,v),v.c=x(e,v),A.x=x(r,A),A.X=x(n,A),A.c=x(e,A);function x(ie,be){return function(he){var ue=[],I=-1,P=0,O=ie.length,j,W,le;for(he instanceof Date||(he=new Date(+he));++I<O;)ie.charCodeAt(I)===37&&(ue.push(ie.slice(P,I)),(W=Fb[j=ie.charAt(++I)])!=null?j=ie.charAt(++I):W=j==="e"?" ":"0",(le=be[j])&&(j=le(he,W)),ue.push(j),P=I+1);return ue.push(ie.slice(P,I)),ue.join("")}}function D(ie,be){return function(he){var ue=Eo(1900,void 0,1),I=N(ue,ie,he+="",0),P,O;if(I!=he.length)return null;if("Q"in ue)return new Date(ue.Q);if("s"in ue)return new Date(ue.s*1e3+("L"in ue?ue.L:0));if(be&&!("Z"in ue)&&(ue.Z=0),"p"in ue&&(ue.H=ue.H%12+ue.p*12),ue.m===void 0&&(ue.m="q"in ue?ue.q:0),"V"in ue){if(ue.V<1||ue.V>53)return null;"w"in ue||(ue.w=1),"Z"in ue?(P=cf(Eo(ue.y,0,1)),O=P.getUTCDay(),P=O>4||O===0?au.ceil(P):au(P),P=Xu.offset(P,(ue.V-1)*7),ue.y=P.getUTCFullYear(),ue.m=P.getUTCMonth(),ue.d=P.getUTCDate()+(ue.w+6)%7):(P=uf(Eo(ue.y,0,1)),O=P.getDay(),P=O>4||O===0?ou.ceil(P):ou(P),P=_a.offset(P,(ue.V-1)*7),ue.y=P.getFullYear(),ue.m=P.getMonth(),ue.d=P.getDate()+(ue.w+6)%7)}else("W"in ue||"U"in ue)&&("w"in ue||(ue.w="u"in ue?ue.u%7:"W"in ue?1:0),O="Z"in ue?cf(Eo(ue.y,0,1)).getUTCDay():uf(Eo(ue.y,0,1)).getDay(),ue.m=0,ue.d="W"in ue?(ue.w+6)%7+ue.W*7-(O+5)%7:ue.w+ue.U*7-(O+6)%7);return"Z"in ue?(ue.H+=ue.Z/100|0,ue.M+=ue.Z%100,cf(ue)):uf(ue)}}function N(ie,be,he,ue){for(var I=0,P=be.length,O=he.length,j,W;I<P;){if(ue>=O)return-1;if(j=be.charCodeAt(I++),j===37){if(j=be.charAt(I++),W=k[j in Fb?be.charAt(I++):j],!W||(ue=W(ie,he,ue))<0)return-1}else if(j!=he.charCodeAt(ue++))return-1}return ue}function B(ie,be,he){var ue=u.exec(be.slice(he));return ue?(ie.p=c.get(ue[0].toLowerCase()),he+ue[0].length):-1}function q(ie,be,he){var ue=g.exec(be.slice(he));return ue?(ie.w=m.get(ue[0].toLowerCase()),he+ue[0].length):-1}function K(ie,be,he){var ue=f.exec(be.slice(he));return ue?(ie.w=d.get(ue[0].toLowerCase()),he+ue[0].length):-1}function C(ie,be,he){var ue=_.exec(be.slice(he));return ue?(ie.m=S.get(ue[0].toLowerCase()),he+ue[0].length):-1}function M(ie,be,he){var ue=y.exec(be.slice(he));return ue?(ie.m=E.get(ue[0].toLowerCase()),he+ue[0].length):-1}function L(ie,be,he){return N(ie,e,be,he)}function H(ie,be,he){return N(ie,r,be,he)}function G(ie,be,he){return N(ie,n,be,he)}function z(ie){return o[ie.getDay()]}function F(ie){return i[ie.getDay()]}function ne(ie){return l[ie.getMonth()]}function ce(ie){return a[ie.getMonth()]}function re(ie){return s[+(ie.getHours()>=12)]}function R(ie){return 1+~~(ie.getMonth()/3)}function Q(ie){return o[ie.getUTCDay()]}function de(ie){return i[ie.getUTCDay()]}function ge(ie){return l[ie.getUTCMonth()]}function pe(ie){return a[ie.getUTCMonth()]}function X(ie){return s[+(ie.getUTCHours()>=12)]}function Y(ie){return 1+~~(ie.getUTCMonth()/3)}return{format:function(ie){var be=x(ie+="",v);return be.toString=function(){return ie},be},parse:function(ie){var be=D(ie+="",!1);return be.toString=function(){return ie},be},utcFormat:function(ie){var be=x(ie+="",A);return be.toString=function(){return ie},be},utcParse:function(ie){var be=D(ie+="",!0);return be.toString=function(){return ie},be}}}var Fb={"-":"",_:" ",0:"0"},bt=/^\s*\d+/,lD=/^%/,uD=/[\\^$*+?|[\]().{}]/g;function We(t,e,r){var n=t<0?"-":"",s=(n?-t:t)+"",i=s.length;return n+(i<r?new Array(r-i+1).join(e)+s:s)}function cD(t){return t.replace(uD,"\\$&")}function So(t){return new RegExp("^(?:"+t.map(cD).join("|")+")","i")}function To(t){return new Map(t.map((e,r)=>[e.toLowerCase(),r]))}function fD(t,e,r){var n=bt.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function dD(t,e,r){var n=bt.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function hD(t,e,r){var n=bt.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function pD(t,e,r){var n=bt.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function gD(t,e,r){var n=bt.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function Ub(t,e,r){var n=bt.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function jb(t,e,r){var n=bt.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function mD(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function bD(t,e,r){var n=bt.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function yD(t,e,r){var n=bt.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function Wb(t,e,r){var n=bt.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function wD(t,e,r){var n=bt.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function zb(t,e,r){var n=bt.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function vD(t,e,r){var n=bt.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function _D(t,e,r){var n=bt.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function ED(t,e,r){var n=bt.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function SD(t,e,r){var n=bt.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function TD(t,e,r){var n=lD.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function xD(t,e,r){var n=bt.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function AD(t,e,r){var n=bt.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function Hb(t,e){return We(t.getDate(),e,2)}function CD(t,e){return We(t.getHours(),e,2)}function ID(t,e){return We(t.getHours()%12||12,e,2)}function MD(t,e){return We(1+_a.count(xn(t),t),e,3)}function O1(t,e){return We(t.getMilliseconds(),e,3)}function OD(t,e){return O1(t,e)+"000"}function RD(t,e){return We(t.getMonth()+1,e,2)}function PD(t,e){return We(t.getMinutes(),e,2)}function kD(t,e){return We(t.getSeconds(),e,2)}function LD(t){var e=t.getDay();return e===0?7:e}function ND(t,e){return We(Qu.count(xn(t)-1,t),e,2)}function R1(t){var e=t.getDay();return e>=4||e===0?zs(t):zs.ceil(t)}function DD(t,e){return t=R1(t),We(zs.count(xn(t),t)+(xn(t).getDay()===4),e,2)}function BD(t){return t.getDay()}function $D(t,e){return We(ou.count(xn(t)-1,t),e,2)}function FD(t,e){return We(t.getFullYear()%100,e,2)}function UD(t,e){return t=R1(t),We(t.getFullYear()%100,e,2)}function jD(t,e){return We(t.getFullYear()%1e4,e,4)}function WD(t,e){var r=t.getDay();return t=r>=4||r===0?zs(t):zs.ceil(t),We(t.getFullYear()%1e4,e,4)}function zD(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+We(e/60|0,"0",2)+We(e%60,"0",2)}function Vb(t,e){return We(t.getUTCDate(),e,2)}function HD(t,e){return We(t.getUTCHours(),e,2)}function VD(t,e){return We(t.getUTCHours()%12||12,e,2)}function qD(t,e){return We(1+Xu.count(An(t),t),e,3)}function P1(t,e){return We(t.getUTCMilliseconds(),e,3)}function YD(t,e){return P1(t,e)+"000"}function GD(t,e){return We(t.getUTCMonth()+1,e,2)}function KD(t,e){return We(t.getUTCMinutes(),e,2)}function XD(t,e){return We(t.getUTCSeconds(),e,2)}function QD(t){var e=t.getUTCDay();return e===0?7:e}function JD(t,e){return We(Ju.count(An(t)-1,t),e,2)}function k1(t){var e=t.getUTCDay();return e>=4||e===0?Hs(t):Hs.ceil(t)}function ZD(t,e){return t=k1(t),We(Hs.count(An(t),t)+(An(t).getUTCDay()===4),e,2)}function eB(t){return t.getUTCDay()}function tB(t,e){return We(au.count(An(t)-1,t),e,2)}function rB(t,e){return We(t.getUTCFullYear()%100,e,2)}function nB(t,e){return t=k1(t),We(t.getUTCFullYear()%100,e,2)}function iB(t,e){return We(t.getUTCFullYear()%1e4,e,4)}function sB(t,e){var r=t.getUTCDay();return t=r>=4||r===0?Hs(t):Hs.ceil(t),We(t.getUTCFullYear()%1e4,e,4)}function oB(){return"+0000"}function qb(){return"%"}function Yb(t){return+t}function Gb(t){return Math.floor(+t/1e3)}var ms,L1,aB,N1;lB({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function lB(t){return ms=aD(t),L1=ms.format,aB=ms.parse,N1=ms.utcFormat,ms.utcParse,ms}function uB(t){return new Date(t)}function cB(t){return t instanceof Date?+t:+new Date(+t)}function wg(t,e,r,n,s,i,o,a,l,u){var c=C1(),f=c.invert,d=c.domain,g=u(".%L"),m=u(":%S"),y=u("%I:%M"),E=u("%I %p"),_=u("%a %d"),S=u("%b %d"),v=u("%B"),A=u("%Y");function k(x){return(l(x)<x?g:a(x)<x?m:o(x)<x?y:i(x)<x?E:n(x)<x?s(x)<x?_:S:r(x)<x?v:A)(x)}return c.invert=function(x){return new Date(f(x))},c.domain=function(x){return arguments.length?d(Array.from(x,cB)):d().map(uB)},c.ticks=function(x){var D=d();return t(D[0],D[D.length-1],x??10)},c.tickFormat=function(x,D){return D==null?k:u(D)},c.nice=function(x){var D=d();return(!x||typeof x.range!="function")&&(x=e(D[0],D[D.length-1],x??10)),x?d(G2(D,x)):c},c.copy=function(){return A1(c,wg(t,e,r,n,s,i,o,a,l,u))},c}function a4(){return va.apply(wg(sD,oD,xn,bg,Qu,_a,gg,hg,Li,L1).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function l4(){return va.apply(wg(nD,iD,An,yg,Ju,Xu,mg,pg,Li,N1).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Fe(t){return function(){return t}}const Kb=Math.abs,It=Math.atan2,Ei=Math.cos,fB=Math.max,ff=Math.min,Rr=Math.sin,Cs=Math.sqrt,Ft=1e-12,aa=Math.PI,lu=aa/2,Ml=2*aa;function dB(t){return t>1?0:t<-1?aa:Math.acos(t)}function Xb(t){return t>=1?lu:t<=-1?-lu:Math.asin(t)}function vg(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new A2(e)}function hB(t){return t.innerRadius}function pB(t){return t.outerRadius}function gB(t){return t.startAngle}function mB(t){return t.endAngle}function bB(t){return t&&t.padAngle}function yB(t,e,r,n,s,i,o,a){var l=r-t,u=n-e,c=o-s,f=a-i,d=f*l-c*u;if(!(d*d<Ft))return d=(c*(e-i)-f*(t-s))/d,[t+d*l,e+d*u]}function Ka(t,e,r,n,s,i,o){var a=t-r,l=e-n,u=(o?i:-i)/Cs(a*a+l*l),c=u*l,f=-u*a,d=t+c,g=e+f,m=r+c,y=n+f,E=(d+m)/2,_=(g+y)/2,S=m-d,v=y-g,A=S*S+v*v,k=s-i,x=d*y-m*g,D=(v<0?-1:1)*Cs(fB(0,k*k*A-x*x)),N=(x*v-S*D)/A,B=(-x*S-v*D)/A,q=(x*v+S*D)/A,K=(-x*S+v*D)/A,C=N-E,M=B-_,L=q-E,H=K-_;return C*C+M*M>L*L+H*H&&(N=q,B=K),{cx:N,cy:B,x01:-c,y01:-f,x11:N*(s/k-1),y11:B*(s/k-1)}}function u4(){var t=hB,e=pB,r=Fe(0),n=null,s=gB,i=mB,o=bB,a=null,l=vg(u);function u(){var c,f,d=+t.apply(this,arguments),g=+e.apply(this,arguments),m=s.apply(this,arguments)-lu,y=i.apply(this,arguments)-lu,E=Kb(y-m),_=y>m;if(a||(a=c=l()),g<d&&(f=g,g=d,d=f),!(g>Ft))a.moveTo(0,0);else if(E>Ml-Ft)a.moveTo(g*Ei(m),g*Rr(m)),a.arc(0,0,g,m,y,!_),d>Ft&&(a.moveTo(d*Ei(y),d*Rr(y)),a.arc(0,0,d,y,m,_));else{var S=m,v=y,A=m,k=y,x=E,D=E,N=o.apply(this,arguments)/2,B=N>Ft&&(n?+n.apply(this,arguments):Cs(d*d+g*g)),q=ff(Kb(g-d)/2,+r.apply(this,arguments)),K=q,C=q,M,L;if(B>Ft){var H=Xb(B/d*Rr(N)),G=Xb(B/g*Rr(N));(x-=H*2)>Ft?(H*=_?1:-1,A+=H,k-=H):(x=0,A=k=(m+y)/2),(D-=G*2)>Ft?(G*=_?1:-1,S+=G,v-=G):(D=0,S=v=(m+y)/2)}var z=g*Ei(S),F=g*Rr(S),ne=d*Ei(k),ce=d*Rr(k);if(q>Ft){var re=g*Ei(v),R=g*Rr(v),Q=d*Ei(A),de=d*Rr(A),ge;if(E<aa)if(ge=yB(z,F,Q,de,re,R,ne,ce)){var pe=z-ge[0],X=F-ge[1],Y=re-ge[0],ie=R-ge[1],be=1/Rr(dB((pe*Y+X*ie)/(Cs(pe*pe+X*X)*Cs(Y*Y+ie*ie)))/2),he=Cs(ge[0]*ge[0]+ge[1]*ge[1]);K=ff(q,(d-he)/(be-1)),C=ff(q,(g-he)/(be+1))}else K=C=0}D>Ft?C>Ft?(M=Ka(Q,de,z,F,g,C,_),L=Ka(re,R,ne,ce,g,C,_),a.moveTo(M.cx+M.x01,M.cy+M.y01),C<q?a.arc(M.cx,M.cy,C,It(M.y01,M.x01),It(L.y01,L.x01),!_):(a.arc(M.cx,M.cy,C,It(M.y01,M.x01),It(M.y11,M.x11),!_),a.arc(0,0,g,It(M.cy+M.y11,M.cx+M.x11),It(L.cy+L.y11,L.cx+L.x11),!_),a.arc(L.cx,L.cy,C,It(L.y11,L.x11),It(L.y01,L.x01),!_))):(a.moveTo(z,F),a.arc(0,0,g,S,v,!_)):a.moveTo(z,F),!(d>Ft)||!(x>Ft)?a.lineTo(ne,ce):K>Ft?(M=Ka(ne,ce,re,R,d,-K,_),L=Ka(z,F,Q,de,d,-K,_),a.lineTo(M.cx+M.x01,M.cy+M.y01),K<q?a.arc(M.cx,M.cy,K,It(M.y01,M.x01),It(L.y01,L.x01),!_):(a.arc(M.cx,M.cy,K,It(M.y01,M.x01),It(M.y11,M.x11),!_),a.arc(0,0,d,It(M.cy+M.y11,M.cx+M.x11),It(L.cy+L.y11,L.cx+L.x11),_),a.arc(L.cx,L.cy,K,It(L.y11,L.x11),It(L.y01,L.x01),!_))):a.arc(0,0,d,k,A,_)}if(a.closePath(),c)return a=null,c+""||null}return u.centroid=function(){var c=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,f=(+s.apply(this,arguments)+ +i.apply(this,arguments))/2-aa/2;return[Ei(f)*c,Rr(f)*c]},u.innerRadius=function(c){return arguments.length?(t=typeof c=="function"?c:Fe(+c),u):t},u.outerRadius=function(c){return arguments.length?(e=typeof c=="function"?c:Fe(+c),u):e},u.cornerRadius=function(c){return arguments.length?(r=typeof c=="function"?c:Fe(+c),u):r},u.padRadius=function(c){return arguments.length?(n=c==null?null:typeof c=="function"?c:Fe(+c),u):n},u.startAngle=function(c){return arguments.length?(s=typeof c=="function"?c:Fe(+c),u):s},u.endAngle=function(c){return arguments.length?(i=typeof c=="function"?c:Fe(+c),u):i},u.padAngle=function(c){return arguments.length?(o=typeof c=="function"?c:Fe(+c),u):o},u.context=function(c){return arguments.length?(a=c??null,u):a},u}function Zu(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function D1(t){this._context=t}D1.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function B1(t){return new D1(t)}function $1(t){return t[0]}function F1(t){return t[1]}function wB(t,e){var r=Fe(!0),n=null,s=B1,i=null,o=vg(a);t=typeof t=="function"?t:t===void 0?$1:Fe(t),e=typeof e=="function"?e:e===void 0?F1:Fe(e);function a(l){var u,c=(l=Zu(l)).length,f,d=!1,g;for(n==null&&(i=s(g=o())),u=0;u<=c;++u)!(u<c&&r(f=l[u],u,l))===d&&((d=!d)?i.lineStart():i.lineEnd()),d&&i.point(+t(f,u,l),+e(f,u,l));if(g)return i=null,g+""||null}return a.x=function(l){return arguments.length?(t=typeof l=="function"?l:Fe(+l),a):t},a.y=function(l){return arguments.length?(e=typeof l=="function"?l:Fe(+l),a):e},a.defined=function(l){return arguments.length?(r=typeof l=="function"?l:Fe(!!l),a):r},a.curve=function(l){return arguments.length?(s=l,n!=null&&(i=s(n)),a):s},a.context=function(l){return arguments.length?(l==null?n=i=null:i=s(n=l),a):n},a}function c4(t,e,r){var n=null,s=Fe(!0),i=null,o=B1,a=null,l=vg(u);t=typeof t=="function"?t:t===void 0?$1:Fe(+t),e=typeof e=="function"?e:Fe(e===void 0?0:+e),r=typeof r=="function"?r:r===void 0?F1:Fe(+r);function u(f){var d,g,m,y=(f=Zu(f)).length,E,_=!1,S,v=new Array(y),A=new Array(y);for(i==null&&(a=o(S=l())),d=0;d<=y;++d){if(!(d<y&&s(E=f[d],d,f))===_)if(_=!_)g=d,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),m=d-1;m>=g;--m)a.point(v[m],A[m]);a.lineEnd(),a.areaEnd()}_&&(v[d]=+t(E,d,f),A[d]=+e(E,d,f),a.point(n?+n(E,d,f):v[d],r?+r(E,d,f):A[d]))}if(S)return a=null,S+""||null}function c(){return wB().defined(s).curve(o).context(i)}return u.x=function(f){return arguments.length?(t=typeof f=="function"?f:Fe(+f),n=null,u):t},u.x0=function(f){return arguments.length?(t=typeof f=="function"?f:Fe(+f),u):t},u.x1=function(f){return arguments.length?(n=f==null?null:typeof f=="function"?f:Fe(+f),u):n},u.y=function(f){return arguments.length?(e=typeof f=="function"?f:Fe(+f),r=null,u):e},u.y0=function(f){return arguments.length?(e=typeof f=="function"?f:Fe(+f),u):e},u.y1=function(f){return arguments.length?(r=f==null?null:typeof f=="function"?f:Fe(+f),u):r},u.lineX0=u.lineY0=function(){return c().x(t).y(e)},u.lineY1=function(){return c().x(t).y(r)},u.lineX1=function(){return c().x(n).y(e)},u.defined=function(f){return arguments.length?(s=typeof f=="function"?f:Fe(!!f),u):s},u.curve=function(f){return arguments.length?(o=f,i!=null&&(a=o(i)),u):o},u.context=function(f){return arguments.length?(f==null?i=a=null:a=o(i=f),u):i},u}function vB(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function _B(t){return t}function f4(){var t=_B,e=vB,r=null,n=Fe(0),s=Fe(Ml),i=Fe(0);function o(a){var l,u=(a=Zu(a)).length,c,f,d=0,g=new Array(u),m=new Array(u),y=+n.apply(this,arguments),E=Math.min(Ml,Math.max(-Ml,s.apply(this,arguments)-y)),_,S=Math.min(Math.abs(E)/u,i.apply(this,arguments)),v=S*(E<0?-1:1),A;for(l=0;l<u;++l)(A=m[g[l]=l]=+t(a[l],l,a))>0&&(d+=A);for(e!=null?g.sort(function(k,x){return e(m[k],m[x])}):r!=null&&g.sort(function(k,x){return r(a[k],a[x])}),l=0,f=d?(E-u*v)/d:0;l<u;++l,y=_)c=g[l],A=m[c],_=y+(A>0?A*f:0)+v,m[c]={data:a[c],index:l,value:A,startAngle:y,endAngle:_,padAngle:S};return m}return o.value=function(a){return arguments.length?(t=typeof a=="function"?a:Fe(+a),o):t},o.sortValues=function(a){return arguments.length?(e=a,r=null,o):e},o.sort=function(a){return arguments.length?(r=a,e=null,o):r},o.startAngle=function(a){return arguments.length?(n=typeof a=="function"?a:Fe(+a),o):n},o.endAngle=function(a){return arguments.length?(s=typeof a=="function"?a:Fe(+a),o):s},o.padAngle=function(a){return arguments.length?(i=typeof a=="function"?a:Fe(+a),o):i},o}class EB{constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}}function d4(t){return new EB(t,!0)}function Qb(t,e){if((o=t.length)>1)for(var r=1,n,s,i=t[e[0]],o,a=i.length;r<o;++r)for(s=i,i=t[e[r]],n=0;n<a;++n)i[n][1]+=i[n][0]=isNaN(s[n][1])?s[n][0]:s[n][1]}function Jb(t){for(var e=t.length,r=new Array(e);--e>=0;)r[e]=e;return r}function SB(t,e){return t[e]}function TB(t){const e=[];return e.key=t,e}function h4(){var t=Fe([]),e=Jb,r=Qb,n=SB;function s(i){var o=Array.from(t.apply(this,arguments),TB),a,l=o.length,u=-1,c;for(const f of i)for(a=0,++u;a<l;++a)(o[a][u]=[0,+n(f,o[a].key,u,i)]).data=f;for(a=0,c=Zu(e(o));a<l;++a)o[c[a]].index=a;return r(o,c),o}return s.keys=function(i){return arguments.length?(t=typeof i=="function"?i:Fe(Array.from(i)),s):t},s.value=function(i){return arguments.length?(n=typeof i=="function"?i:Fe(+i),s):n},s.order=function(i){return arguments.length?(e=i==null?Jb:typeof i=="function"?i:Fe(Array.from(i)),s):e},s.offset=function(i){return arguments.length?(r=i??Qb,s):r},s}const Xa=t=>()=>t;function xB(t,{sourceEvent:e,target:r,transform:n,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:n,enumerable:!0,configurable:!0},_:{value:s}})}function dn(t,e,r){this.k=t,this.x=e,this.y=r}dn.prototype={constructor:dn,scale:function(t){return t===1?this:new dn(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new dn(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var U1=new dn(1,0,0);dn.prototype;function df(t){t.stopImmediatePropagation()}function xo(t){t.preventDefault(),t.stopImmediatePropagation()}function AB(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function CB(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function Zb(){return this.__zoom||U1}function IB(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function MB(){return navigator.maxTouchPoints||"ontouchstart"in this}function OB(t,e,r){var n=t.invertX(e[0][0])-r[0][0],s=t.invertX(e[1][0])-r[1][0],i=t.invertY(e[0][1])-r[0][1],o=t.invertY(e[1][1])-r[1][1];return t.translate(s>n?(n+s)/2:Math.min(0,n)||Math.max(0,s),o>i?(i+o)/2:Math.min(0,i)||Math.max(0,o))}function p4(){var t=AB,e=CB,r=OB,n=IB,s=MB,i=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],a=250,l=dN,u=rg("start","zoom","end"),c,f,d,g=500,m=150,y=0,E=10;function _(L){L.property("__zoom",Zb).on("wheel.zoom",N,{passive:!1}).on("mousedown.zoom",B).on("dblclick.zoom",q).filter(s).on("touchstart.zoom",K).on("touchmove.zoom",C).on("touchend.zoom touchcancel.zoom",M).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(L,H,G,z){var F=L.selection?L.selection():L;F.property("__zoom",Zb),L!==F?k(L,H,G,z):F.interrupt().each(function(){x(this,arguments).event(z).start().zoom(null,typeof H=="function"?H.apply(this,arguments):H).end()})},_.scaleBy=function(L,H,G,z){_.scaleTo(L,function(){var F=this.__zoom.k,ne=typeof H=="function"?H.apply(this,arguments):H;return F*ne},G,z)},_.scaleTo=function(L,H,G,z){_.transform(L,function(){var F=e.apply(this,arguments),ne=this.__zoom,ce=G==null?A(F):typeof G=="function"?G.apply(this,arguments):G,re=ne.invert(ce),R=typeof H=="function"?H.apply(this,arguments):H;return r(v(S(ne,R),ce,re),F,o)},G,z)},_.translateBy=function(L,H,G,z){_.transform(L,function(){return r(this.__zoom.translate(typeof H=="function"?H.apply(this,arguments):H,typeof G=="function"?G.apply(this,arguments):G),e.apply(this,arguments),o)},null,z)},_.translateTo=function(L,H,G,z,F){_.transform(L,function(){var ne=e.apply(this,arguments),ce=this.__zoom,re=z==null?A(ne):typeof z=="function"?z.apply(this,arguments):z;return r(U1.translate(re[0],re[1]).scale(ce.k).translate(typeof H=="function"?-H.apply(this,arguments):-H,typeof G=="function"?-G.apply(this,arguments):-G),ne,o)},z,F)};function S(L,H){return H=Math.max(i[0],Math.min(i[1],H)),H===L.k?L:new dn(H,L.x,L.y)}function v(L,H,G){var z=H[0]-G[0]*L.k,F=H[1]-G[1]*L.k;return z===L.x&&F===L.y?L:new dn(L.k,z,F)}function A(L){return[(+L[0][0]+ +L[1][0])/2,(+L[0][1]+ +L[1][1])/2]}function k(L,H,G,z){L.on("start.zoom",function(){x(this,arguments).event(z).start()}).on("interrupt.zoom end.zoom",function(){x(this,arguments).event(z).end()}).tween("zoom",function(){var F=this,ne=arguments,ce=x(F,ne).event(z),re=e.apply(F,ne),R=G==null?A(re):typeof G=="function"?G.apply(F,ne):G,Q=Math.max(re[1][0]-re[0][0],re[1][1]-re[0][1]),de=F.__zoom,ge=typeof H=="function"?H.apply(F,ne):H,pe=l(de.invert(R).concat(Q/de.k),ge.invert(R).concat(Q/ge.k));return function(X){if(X===1)X=ge;else{var Y=pe(X),ie=Q/Y[2];X=new dn(ie,R[0]-Y[0]*ie,R[1]-Y[1]*ie)}ce.zoom(null,X)}})}function x(L,H,G){return!G&&L.__zooming||new D(L,H)}function D(L,H){this.that=L,this.args=H,this.active=0,this.sourceEvent=null,this.extent=e.apply(L,H),this.taps=0}D.prototype={event:function(L){return L&&(this.sourceEvent=L),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(L,H){return this.mouse&&L!=="mouse"&&(this.mouse[1]=H.invert(this.mouse[0])),this.touch0&&L!=="touch"&&(this.touch0[1]=H.invert(this.touch0[0])),this.touch1&&L!=="touch"&&(this.touch1[1]=H.invert(this.touch1[0])),this.that.__zoom=H,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(L){var H=Ii(this.that).datum();u.call(L,this.that,new xB(L,{sourceEvent:this.sourceEvent,target:_,type:L,transform:this.that.__zoom,dispatch:u}),H)}};function N(L,...H){if(!t.apply(this,arguments))return;var G=x(this,H).event(L),z=this.__zoom,F=Math.max(i[0],Math.min(i[1],z.k*Math.pow(2,n.apply(this,arguments)))),ne=_i(L);if(G.wheel)(G.mouse[0][0]!==ne[0]||G.mouse[0][1]!==ne[1])&&(G.mouse[1]=z.invert(G.mouse[0]=ne)),clearTimeout(G.wheel);else{if(z.k===F)return;G.mouse=[ne,z.invert(ne)],Il(this),G.start()}xo(L),G.wheel=setTimeout(ce,m),G.zoom("mouse",r(v(S(z,F),G.mouse[0],G.mouse[1]),G.extent,o));function ce(){G.wheel=null,G.end()}}function B(L,...H){if(d||!t.apply(this,arguments))return;var G=L.currentTarget,z=x(this,H,!0).event(L),F=Ii(L.view).on("mousemove.zoom",R,!0).on("mouseup.zoom",Q,!0),ne=_i(L,G),ce=L.clientX,re=L.clientY;LL(L.view),df(L),z.mouse=[ne,this.__zoom.invert(ne)],Il(this),z.start();function R(de){if(xo(de),!z.moved){var ge=de.clientX-ce,pe=de.clientY-re;z.moved=ge*ge+pe*pe>y}z.event(de).zoom("mouse",r(v(z.that.__zoom,z.mouse[0]=_i(de,G),z.mouse[1]),z.extent,o))}function Q(de){F.on("mousemove.zoom mouseup.zoom",null),NL(de.view,z.moved),xo(de),z.event(de).end()}}function q(L,...H){if(t.apply(this,arguments)){var G=this.__zoom,z=_i(L.changedTouches?L.changedTouches[0]:L,this),F=G.invert(z),ne=G.k*(L.shiftKey?.5:2),ce=r(v(S(G,ne),z,F),e.apply(this,H),o);xo(L),a>0?Ii(this).transition().duration(a).call(k,ce,z,L):Ii(this).call(_.transform,ce,z,L)}}function K(L,...H){if(t.apply(this,arguments)){var G=L.touches,z=G.length,F=x(this,H,L.changedTouches.length===z).event(L),ne,ce,re,R;for(df(L),ce=0;ce<z;++ce)re=G[ce],R=_i(re,this),R=[R,this.__zoom.invert(R),re.identifier],F.touch0?!F.touch1&&F.touch0[2]!==R[2]&&(F.touch1=R,F.taps=0):(F.touch0=R,ne=!0,F.taps=1+!!c);c&&(c=clearTimeout(c)),ne&&(F.taps<2&&(f=R[0],c=setTimeout(function(){c=null},g)),Il(this),F.start())}}function C(L,...H){if(this.__zooming){var G=x(this,H).event(L),z=L.changedTouches,F=z.length,ne,ce,re,R;for(xo(L),ne=0;ne<F;++ne)ce=z[ne],re=_i(ce,this),G.touch0&&G.touch0[2]===ce.identifier?G.touch0[0]=re:G.touch1&&G.touch1[2]===ce.identifier&&(G.touch1[0]=re);if(ce=G.that.__zoom,G.touch1){var Q=G.touch0[0],de=G.touch0[1],ge=G.touch1[0],pe=G.touch1[1],X=(X=ge[0]-Q[0])*X+(X=ge[1]-Q[1])*X,Y=(Y=pe[0]-de[0])*Y+(Y=pe[1]-de[1])*Y;ce=S(ce,Math.sqrt(X/Y)),re=[(Q[0]+ge[0])/2,(Q[1]+ge[1])/2],R=[(de[0]+pe[0])/2,(de[1]+pe[1])/2]}else if(G.touch0)re=G.touch0[0],R=G.touch0[1];else return;G.zoom("touch",r(v(ce,re,R),G.extent,o))}}function M(L,...H){if(this.__zooming){var G=x(this,H).event(L),z=L.changedTouches,F=z.length,ne,ce;for(df(L),d&&clearTimeout(d),d=setTimeout(function(){d=null},g),ne=0;ne<F;++ne)ce=z[ne],G.touch0&&G.touch0[2]===ce.identifier?delete G.touch0:G.touch1&&G.touch1[2]===ce.identifier&&delete G.touch1;if(G.touch1&&!G.touch0&&(G.touch0=G.touch1,delete G.touch1),G.touch0)G.touch0[1]=this.__zoom.invert(G.touch0[0]);else if(G.end(),G.taps===2&&(ce=_i(ce,this),Math.hypot(f[0]-ce[0],f[1]-ce[1])<E)){var re=Ii(this).on("dblclick.zoom");re&&re.apply(this,arguments)}}}return _.wheelDelta=function(L){return arguments.length?(n=typeof L=="function"?L:Xa(+L),_):n},_.filter=function(L){return arguments.length?(t=typeof L=="function"?L:Xa(!!L),_):t},_.touchable=function(L){return arguments.length?(s=typeof L=="function"?L:Xa(!!L),_):s},_.extent=function(L){return arguments.length?(e=typeof L=="function"?L:Xa([[+L[0][0],+L[0][1]],[+L[1][0],+L[1][1]]]),_):e},_.scaleExtent=function(L){return arguments.length?(i[0]=+L[0],i[1]=+L[1],_):[i[0],i[1]]},_.translateExtent=function(L){return arguments.length?(o[0][0]=+L[0][0],o[1][0]=+L[1][0],o[0][1]=+L[0][1],o[1][1]=+L[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(L){return arguments.length?(r=L,_):r},_.duration=function(L){return arguments.length?(a=+L,_):a},_.interpolate=function(L){return arguments.length?(l=L,_):l},_.on=function(){var L=u.on.apply(u,arguments);return L===u?_:L},_.clickDistance=function(L){return arguments.length?(y=(L=+L)*L,_):Math.sqrt(y)},_.tapDistance=function(L){return arguments.length?(E=+L,_):E},_}function ey(t){return t!==null&&typeof t=="object"&&"constructor"in t&&t.constructor===Object}function _g(t,e){t===void 0&&(t={}),e===void 0&&(e={}),Object.keys(e).forEach(r=>{typeof t[r]>"u"?t[r]=e[r]:ey(e[r])&&ey(t[r])&&Object.keys(e[r]).length>0&&_g(t[r],e[r])})}const j1={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector(){return null},querySelectorAll(){return[]},getElementById(){return null},createEvent(){return{initEvent(){}}},createElement(){return{children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName(){return[]}}},createElementNS(){return{}},importNode(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function _t(){const t=typeof document<"u"?document:{};return _g(t,j1),t}const RB={document:j1,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle(){return{getPropertyValue(){return""}}},Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia(){return{}},requestAnimationFrame(t){return typeof setTimeout>"u"?(t(),null):setTimeout(t,0)},cancelAnimationFrame(t){typeof setTimeout>"u"||clearTimeout(t)}};function ot(){const t=typeof window<"u"?window:{};return _g(t,RB),t}function zn(t){return t===void 0&&(t=""),t.trim().split(" ").filter(e=>!!e.trim())}function PB(t){const e=t;Object.keys(e).forEach(r=>{try{e[r]=null}catch{}try{delete e[r]}catch{}})}function Xi(t,e){return e===void 0&&(e=0),setTimeout(t,e)}function ar(){return Date.now()}function kB(t){const e=ot();let r;return e.getComputedStyle&&(r=e.getComputedStyle(t,null)),!r&&t.currentStyle&&(r=t.currentStyle),r||(r=t.style),r}function Yh(t,e){e===void 0&&(e="x");const r=ot();let n,s,i;const o=kB(t);return r.WebKitCSSMatrix?(s=o.transform||o.webkitTransform,s.split(",").length>6&&(s=s.split(", ").map(a=>a.replace(",",".")).join(", ")),i=new r.WebKitCSSMatrix(s==="none"?"":s)):(i=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),n=i.toString().split(",")),e==="x"&&(r.WebKitCSSMatrix?s=i.m41:n.length===16?s=parseFloat(n[12]):s=parseFloat(n[4])),e==="y"&&(r.WebKitCSSMatrix?s=i.m42:n.length===16?s=parseFloat(n[13]):s=parseFloat(n[5])),s||0}function Do(t){return typeof t=="object"&&t!==null&&t.constructor&&Object.prototype.toString.call(t).slice(8,-1)==="Object"}function LB(t){return typeof window<"u"&&typeof window.HTMLElement<"u"?t instanceof HTMLElement:t&&(t.nodeType===1||t.nodeType===11)}function Xt(){const t=Object(arguments.length<=0?void 0:arguments[0]),e=["__proto__","constructor","prototype"];for(let r=1;r<arguments.length;r+=1){const n=r<0||arguments.length<=r?void 0:arguments[r];if(n!=null&&!LB(n)){const s=Object.keys(Object(n)).filter(i=>e.indexOf(i)<0);for(let i=0,o=s.length;i<o;i+=1){const a=s[i],l=Object.getOwnPropertyDescriptor(n,a);l!==void 0&&l.enumerable&&(Do(t[a])&&Do(n[a])?n[a].__swiper__?t[a]=n[a]:Xt(t[a],n[a]):!Do(t[a])&&Do(n[a])?(t[a]={},n[a].__swiper__?t[a]=n[a]:Xt(t[a],n[a])):t[a]=n[a])}}}return t}function Bo(t,e,r){t.style.setProperty(e,r)}function W1(t){let{swiper:e,targetPosition:r,side:n}=t;const s=ot(),i=-e.translate;let o=null,a;const l=e.params.speed;e.wrapperEl.style.scrollSnapType="none",s.cancelAnimationFrame(e.cssModeFrameID);const u=r>i?"next":"prev",c=(d,g)=>u==="next"&&d>=g||u==="prev"&&d<=g,f=()=>{a=new Date().getTime(),o===null&&(o=a);const d=Math.max(Math.min((a-o)/l,1),0),g=.5-Math.cos(d*Math.PI)/2;let m=i+g*(r-i);if(c(m,r)&&(m=r),e.wrapperEl.scrollTo({[n]:m}),c(m,r)){e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[n]:m})}),s.cancelAnimationFrame(e.cssModeFrameID);return}e.cssModeFrameID=s.requestAnimationFrame(f)};f()}function cs(t){return t.querySelector(".swiper-slide-transform")||t.shadowRoot&&t.shadowRoot.querySelector(".swiper-slide-transform")||t}function vt(t,e){return e===void 0&&(e=""),[...t.children].filter(r=>r.matches(e))}function uu(t){try{console.warn(t);return}catch{}}function Jt(t,e){e===void 0&&(e=[]);const r=document.createElement(t);return r.classList.add(...Array.isArray(e)?e:zn(e)),r}function cu(t){const e=ot(),r=_t(),n=t.getBoundingClientRect(),s=r.body,i=t.clientTop||s.clientTop||0,o=t.clientLeft||s.clientLeft||0,a=t===e?e.scrollY:t.scrollTop,l=t===e?e.scrollX:t.scrollLeft;return{top:n.top+a-i,left:n.left+l-o}}function NB(t,e){const r=[];for(;t.previousElementSibling;){const n=t.previousElementSibling;e?n.matches(e)&&r.push(n):r.push(n),t=n}return r}function DB(t,e){const r=[];for(;t.nextElementSibling;){const n=t.nextElementSibling;e?n.matches(e)&&r.push(n):r.push(n),t=n}return r}function Kn(t,e){return ot().getComputedStyle(t,null).getPropertyValue(e)}function la(t){let e=t,r;if(e){for(r=0;(e=e.previousSibling)!==null;)e.nodeType===1&&(r+=1);return r}}function Hi(t,e){const r=[];let n=t.parentElement;for(;n;)e?n.matches(e)&&r.push(n):r.push(n),n=n.parentElement;return r}function Go(t,e){function r(n){n.target===t&&(e.call(t,n),t.removeEventListener("transitionend",r))}e&&t.addEventListener("transitionend",r)}function Gh(t,e,r){const n=ot();return t[e==="width"?"offsetWidth":"offsetHeight"]+parseFloat(n.getComputedStyle(t,null).getPropertyValue(e==="width"?"margin-right":"margin-top"))+parseFloat(n.getComputedStyle(t,null).getPropertyValue(e==="width"?"margin-left":"margin-bottom"))}function $e(t){return(Array.isArray(t)?t:[t]).filter(e=>!!e)}let hf;function BB(){const t=ot(),e=_t();return{smoothScroll:e.documentElement&&e.documentElement.style&&"scrollBehavior"in e.documentElement.style,touch:!!("ontouchstart"in t||t.DocumentTouch&&e instanceof t.DocumentTouch)}}function z1(){return hf||(hf=BB()),hf}let pf;function $B(t){let{userAgent:e}=t===void 0?{}:t;const r=z1(),n=ot(),s=n.navigator.platform,i=e||n.navigator.userAgent,o={ios:!1,android:!1},a=n.screen.width,l=n.screen.height,u=i.match(/(Android);?[\s\/]+([\d.]+)?/);let c=i.match(/(iPad).*OS\s([\d_]+)/);const f=i.match(/(iPod)(.*OS\s([\d_]+))?/),d=!c&&i.match(/(iPhone\sOS|iOS)\s([\d_]+)/),g=s==="Win32";let m=s==="MacIntel";const y=["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"];return!c&&m&&r.touch&&y.indexOf(`${a}x${l}`)>=0&&(c=i.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),m=!1),u&&!g&&(o.os="android",o.android=!0),(c||d||f)&&(o.os="ios",o.ios=!0),o}function H1(t){return t===void 0&&(t={}),pf||(pf=$B(t)),pf}let gf;function FB(){const t=ot(),e=H1();let r=!1;function n(){const a=t.navigator.userAgent.toLowerCase();return a.indexOf("safari")>=0&&a.indexOf("chrome")<0&&a.indexOf("android")<0}if(n()){const a=String(t.navigator.userAgent);if(a.includes("Version/")){const[l,u]=a.split("Version/")[1].split(" ")[0].split(".").map(c=>Number(c));r=l<16||l===16&&u<2}}const s=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(t.navigator.userAgent),i=n(),o=i||s&&e.ios;return{isSafari:r||i,needPerspectiveFix:r,need3dFix:o,isWebView:s}}function UB(){return gf||(gf=FB()),gf}function jB(t){let{swiper:e,on:r,emit:n}=t;const s=ot();let i=null,o=null;const a=()=>{!e||e.destroyed||!e.initialized||(n("beforeResize"),n("resize"))},l=()=>{!e||e.destroyed||!e.initialized||(i=new ResizeObserver(f=>{o=s.requestAnimationFrame(()=>{const{width:d,height:g}=e;let m=d,y=g;f.forEach(E=>{let{contentBoxSize:_,contentRect:S,target:v}=E;v&&v!==e.el||(m=S?S.width:(_[0]||_).inlineSize,y=S?S.height:(_[0]||_).blockSize)}),(m!==d||y!==g)&&a()})}),i.observe(e.el))},u=()=>{o&&s.cancelAnimationFrame(o),i&&i.unobserve&&e.el&&(i.unobserve(e.el),i=null)},c=()=>{!e||e.destroyed||!e.initialized||n("orientationchange")};r("init",()=>{if(e.params.resizeObserver&&typeof s.ResizeObserver<"u"){l();return}s.addEventListener("resize",a),s.addEventListener("orientationchange",c)}),r("destroy",()=>{u(),s.removeEventListener("resize",a),s.removeEventListener("orientationchange",c)})}function WB(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i=[],o=ot(),a=function(c,f){f===void 0&&(f={});const d=o.MutationObserver||o.WebkitMutationObserver,g=new d(m=>{if(e.__preventObserver__)return;if(m.length===1){s("observerUpdate",m[0]);return}const y=function(){s("observerUpdate",m[0])};o.requestAnimationFrame?o.requestAnimationFrame(y):o.setTimeout(y,0)});g.observe(c,{attributes:typeof f.attributes>"u"?!0:f.attributes,childList:typeof f.childList>"u"?!0:f.childList,characterData:typeof f.characterData>"u"?!0:f.characterData}),i.push(g)},l=()=>{if(e.params.observer){if(e.params.observeParents){const c=Hi(e.hostEl);for(let f=0;f<c.length;f+=1)a(c[f])}a(e.hostEl,{childList:e.params.observeSlideChildren}),a(e.wrapperEl,{attributes:!1})}},u=()=>{i.forEach(c=>{c.disconnect()}),i.splice(0,i.length)};r({observer:!1,observeParents:!1,observeSlideChildren:!1}),n("init",l),n("destroy",u)}var zB={on(t,e,r){const n=this;if(!n.eventsListeners||n.destroyed||typeof e!="function")return n;const s=r?"unshift":"push";return t.split(" ").forEach(i=>{n.eventsListeners[i]||(n.eventsListeners[i]=[]),n.eventsListeners[i][s](e)}),n},once(t,e,r){const n=this;if(!n.eventsListeners||n.destroyed||typeof e!="function")return n;function s(){n.off(t,s),s.__emitterProxy&&delete s.__emitterProxy;for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];e.apply(n,o)}return s.__emitterProxy=e,n.on(t,s,r)},onAny(t,e){const r=this;if(!r.eventsListeners||r.destroyed||typeof t!="function")return r;const n=e?"unshift":"push";return r.eventsAnyListeners.indexOf(t)<0&&r.eventsAnyListeners[n](t),r},offAny(t){const e=this;if(!e.eventsListeners||e.destroyed||!e.eventsAnyListeners)return e;const r=e.eventsAnyListeners.indexOf(t);return r>=0&&e.eventsAnyListeners.splice(r,1),e},off(t,e){const r=this;return!r.eventsListeners||r.destroyed||!r.eventsListeners||t.split(" ").forEach(n=>{typeof e>"u"?r.eventsListeners[n]=[]:r.eventsListeners[n]&&r.eventsListeners[n].forEach((s,i)=>{(s===e||s.__emitterProxy&&s.__emitterProxy===e)&&r.eventsListeners[n].splice(i,1)})}),r},emit(){const t=this;if(!t.eventsListeners||t.destroyed||!t.eventsListeners)return t;let e,r,n;for(var s=arguments.length,i=new Array(s),o=0;o<s;o++)i[o]=arguments[o];return typeof i[0]=="string"||Array.isArray(i[0])?(e=i[0],r=i.slice(1,i.length),n=t):(e=i[0].events,r=i[0].data,n=i[0].context||t),r.unshift(n),(Array.isArray(e)?e:e.split(" ")).forEach(l=>{t.eventsAnyListeners&&t.eventsAnyListeners.length&&t.eventsAnyListeners.forEach(u=>{u.apply(n,[l,...r])}),t.eventsListeners&&t.eventsListeners[l]&&t.eventsListeners[l].forEach(u=>{u.apply(n,r)})}),t}};function HB(){const t=this;let e,r;const n=t.el;typeof t.params.width<"u"&&t.params.width!==null?e=t.params.width:e=n.clientWidth,typeof t.params.height<"u"&&t.params.height!==null?r=t.params.height:r=n.clientHeight,!(e===0&&t.isHorizontal()||r===0&&t.isVertical())&&(e=e-parseInt(Kn(n,"padding-left")||0,10)-parseInt(Kn(n,"padding-right")||0,10),r=r-parseInt(Kn(n,"padding-top")||0,10)-parseInt(Kn(n,"padding-bottom")||0,10),Number.isNaN(e)&&(e=0),Number.isNaN(r)&&(r=0),Object.assign(t,{width:e,height:r,size:t.isHorizontal()?e:r}))}function VB(){const t=this;function e(q,K){return parseFloat(q.getPropertyValue(t.getDirectionLabel(K))||0)}const r=t.params,{wrapperEl:n,slidesEl:s,size:i,rtlTranslate:o,wrongRTL:a}=t,l=t.virtual&&r.virtual.enabled,u=l?t.virtual.slides.length:t.slides.length,c=vt(s,`.${t.params.slideClass}, swiper-slide`),f=l?t.virtual.slides.length:c.length;let d=[];const g=[],m=[];let y=r.slidesOffsetBefore;typeof y=="function"&&(y=r.slidesOffsetBefore.call(t));let E=r.slidesOffsetAfter;typeof E=="function"&&(E=r.slidesOffsetAfter.call(t));const _=t.snapGrid.length,S=t.slidesGrid.length;let v=r.spaceBetween,A=-y,k=0,x=0;if(typeof i>"u")return;typeof v=="string"&&v.indexOf("%")>=0?v=parseFloat(v.replace("%",""))/100*i:typeof v=="string"&&(v=parseFloat(v)),t.virtualSize=-v,c.forEach(q=>{o?q.style.marginLeft="":q.style.marginRight="",q.style.marginBottom="",q.style.marginTop=""}),r.centeredSlides&&r.cssMode&&(Bo(n,"--swiper-centered-offset-before",""),Bo(n,"--swiper-centered-offset-after",""));const D=r.grid&&r.grid.rows>1&&t.grid;D?t.grid.initSlides(c):t.grid&&t.grid.unsetSlides();let N;const B=r.slidesPerView==="auto"&&r.breakpoints&&Object.keys(r.breakpoints).filter(q=>typeof r.breakpoints[q].slidesPerView<"u").length>0;for(let q=0;q<f;q+=1){N=0;let K;if(c[q]&&(K=c[q]),D&&t.grid.updateSlide(q,K,c),!(c[q]&&Kn(K,"display")==="none")){if(r.slidesPerView==="auto"){B&&(c[q].style[t.getDirectionLabel("width")]="");const C=getComputedStyle(K),M=K.style.transform,L=K.style.webkitTransform;if(M&&(K.style.transform="none"),L&&(K.style.webkitTransform="none"),r.roundLengths)N=t.isHorizontal()?Gh(K,"width"):Gh(K,"height");else{const H=e(C,"width"),G=e(C,"padding-left"),z=e(C,"padding-right"),F=e(C,"margin-left"),ne=e(C,"margin-right"),ce=C.getPropertyValue("box-sizing");if(ce&&ce==="border-box")N=H+F+ne;else{const{clientWidth:re,offsetWidth:R}=K;N=H+G+z+F+ne+(R-re)}}M&&(K.style.transform=M),L&&(K.style.webkitTransform=L),r.roundLengths&&(N=Math.floor(N))}else N=(i-(r.slidesPerView-1)*v)/r.slidesPerView,r.roundLengths&&(N=Math.floor(N)),c[q]&&(c[q].style[t.getDirectionLabel("width")]=`${N}px`);c[q]&&(c[q].swiperSlideSize=N),m.push(N),r.centeredSlides?(A=A+N/2+k/2+v,k===0&&q!==0&&(A=A-i/2-v),q===0&&(A=A-i/2-v),Math.abs(A)<1/1e3&&(A=0),r.roundLengths&&(A=Math.floor(A)),x%r.slidesPerGroup===0&&d.push(A),g.push(A)):(r.roundLengths&&(A=Math.floor(A)),(x-Math.min(t.params.slidesPerGroupSkip,x))%t.params.slidesPerGroup===0&&d.push(A),g.push(A),A=A+N+v),t.virtualSize+=N+v,k=N,x+=1}}if(t.virtualSize=Math.max(t.virtualSize,i)+E,o&&a&&(r.effect==="slide"||r.effect==="coverflow")&&(n.style.width=`${t.virtualSize+v}px`),r.setWrapperSize&&(n.style[t.getDirectionLabel("width")]=`${t.virtualSize+v}px`),D&&t.grid.updateWrapperSize(N,d),!r.centeredSlides){const q=[];for(let K=0;K<d.length;K+=1){let C=d[K];r.roundLengths&&(C=Math.floor(C)),d[K]<=t.virtualSize-i&&q.push(C)}d=q,Math.floor(t.virtualSize-i)-Math.floor(d[d.length-1])>1&&d.push(t.virtualSize-i)}if(l&&r.loop){const q=m[0]+v;if(r.slidesPerGroup>1){const K=Math.ceil((t.virtual.slidesBefore+t.virtual.slidesAfter)/r.slidesPerGroup),C=q*r.slidesPerGroup;for(let M=0;M<K;M+=1)d.push(d[d.length-1]+C)}for(let K=0;K<t.virtual.slidesBefore+t.virtual.slidesAfter;K+=1)r.slidesPerGroup===1&&d.push(d[d.length-1]+q),g.push(g[g.length-1]+q),t.virtualSize+=q}if(d.length===0&&(d=[0]),v!==0){const q=t.isHorizontal()&&o?"marginLeft":t.getDirectionLabel("marginRight");c.filter((K,C)=>!r.cssMode||r.loop?!0:C!==c.length-1).forEach(K=>{K.style[q]=`${v}px`})}if(r.centeredSlides&&r.centeredSlidesBounds){let q=0;m.forEach(C=>{q+=C+(v||0)}),q-=v;const K=q-i;d=d.map(C=>C<=0?-y:C>K?K+E:C)}if(r.centerInsufficientSlides){let q=0;m.forEach(C=>{q+=C+(v||0)}),q-=v;const K=(r.slidesOffsetBefore||0)+(r.slidesOffsetAfter||0);if(q+K<i){const C=(i-q-K)/2;d.forEach((M,L)=>{d[L]=M-C}),g.forEach((M,L)=>{g[L]=M+C})}}if(Object.assign(t,{slides:c,snapGrid:d,slidesGrid:g,slidesSizesGrid:m}),r.centeredSlides&&r.cssMode&&!r.centeredSlidesBounds){Bo(n,"--swiper-centered-offset-before",`${-d[0]}px`),Bo(n,"--swiper-centered-offset-after",`${t.size/2-m[m.length-1]/2}px`);const q=-t.snapGrid[0],K=-t.slidesGrid[0];t.snapGrid=t.snapGrid.map(C=>C+q),t.slidesGrid=t.slidesGrid.map(C=>C+K)}if(f!==u&&t.emit("slidesLengthChange"),d.length!==_&&(t.params.watchOverflow&&t.checkOverflow(),t.emit("snapGridLengthChange")),g.length!==S&&t.emit("slidesGridLengthChange"),r.watchSlidesProgress&&t.updateSlidesOffset(),t.emit("slidesUpdated"),!l&&!r.cssMode&&(r.effect==="slide"||r.effect==="fade")){const q=`${r.containerModifierClass}backface-hidden`,K=t.el.classList.contains(q);f<=r.maxBackfaceHiddenSlides?K||t.el.classList.add(q):K&&t.el.classList.remove(q)}}function qB(t){const e=this,r=[],n=e.virtual&&e.params.virtual.enabled;let s=0,i;typeof t=="number"?e.setTransition(t):t===!0&&e.setTransition(e.params.speed);const o=a=>n?e.slides[e.getSlideIndexByData(a)]:e.slides[a];if(e.params.slidesPerView!=="auto"&&e.params.slidesPerView>1)if(e.params.centeredSlides)(e.visibleSlides||[]).forEach(a=>{r.push(a)});else for(i=0;i<Math.ceil(e.params.slidesPerView);i+=1){const a=e.activeIndex+i;if(a>e.slides.length&&!n)break;r.push(o(a))}else r.push(o(e.activeIndex));for(i=0;i<r.length;i+=1)if(typeof r[i]<"u"){const a=r[i].offsetHeight;s=a>s?a:s}(s||s===0)&&(e.wrapperEl.style.height=`${s}px`)}function YB(){const t=this,e=t.slides,r=t.isElement?t.isHorizontal()?t.wrapperEl.offsetLeft:t.wrapperEl.offsetTop:0;for(let n=0;n<e.length;n+=1)e[n].swiperSlideOffset=(t.isHorizontal()?e[n].offsetLeft:e[n].offsetTop)-r-t.cssOverflowAdjustment()}const ty=(t,e,r)=>{e&&!t.classList.contains(r)?t.classList.add(r):!e&&t.classList.contains(r)&&t.classList.remove(r)};function GB(t){t===void 0&&(t=this&&this.translate||0);const e=this,r=e.params,{slides:n,rtlTranslate:s,snapGrid:i}=e;if(n.length===0)return;typeof n[0].swiperSlideOffset>"u"&&e.updateSlidesOffset();let o=-t;s&&(o=t),e.visibleSlidesIndexes=[],e.visibleSlides=[];let a=r.spaceBetween;typeof a=="string"&&a.indexOf("%")>=0?a=parseFloat(a.replace("%",""))/100*e.size:typeof a=="string"&&(a=parseFloat(a));for(let l=0;l<n.length;l+=1){const u=n[l];let c=u.swiperSlideOffset;r.cssMode&&r.centeredSlides&&(c-=n[0].swiperSlideOffset);const f=(o+(r.centeredSlides?e.minTranslate():0)-c)/(u.swiperSlideSize+a),d=(o-i[0]+(r.centeredSlides?e.minTranslate():0)-c)/(u.swiperSlideSize+a),g=-(o-c),m=g+e.slidesSizesGrid[l],y=g>=0&&g<=e.size-e.slidesSizesGrid[l],E=g>=0&&g<e.size-1||m>1&&m<=e.size||g<=0&&m>=e.size;E&&(e.visibleSlides.push(u),e.visibleSlidesIndexes.push(l)),ty(u,E,r.slideVisibleClass),ty(u,y,r.slideFullyVisibleClass),u.progress=s?-f:f,u.originalProgress=s?-d:d}}function KB(t){const e=this;if(typeof t>"u"){const c=e.rtlTranslate?-1:1;t=e&&e.translate&&e.translate*c||0}const r=e.params,n=e.maxTranslate()-e.minTranslate();let{progress:s,isBeginning:i,isEnd:o,progressLoop:a}=e;const l=i,u=o;if(n===0)s=0,i=!0,o=!0;else{s=(t-e.minTranslate())/n;const c=Math.abs(t-e.minTranslate())<1,f=Math.abs(t-e.maxTranslate())<1;i=c||s<=0,o=f||s>=1,c&&(s=0),f&&(s=1)}if(r.loop){const c=e.getSlideIndexByData(0),f=e.getSlideIndexByData(e.slides.length-1),d=e.slidesGrid[c],g=e.slidesGrid[f],m=e.slidesGrid[e.slidesGrid.length-1],y=Math.abs(t);y>=d?a=(y-d)/m:a=(y+m-g)/m,a>1&&(a-=1)}Object.assign(e,{progress:s,progressLoop:a,isBeginning:i,isEnd:o}),(r.watchSlidesProgress||r.centeredSlides&&r.autoHeight)&&e.updateSlidesProgress(t),i&&!l&&e.emit("reachBeginning toEdge"),o&&!u&&e.emit("reachEnd toEdge"),(l&&!i||u&&!o)&&e.emit("fromEdge"),e.emit("progress",s)}const mf=(t,e,r)=>{e&&!t.classList.contains(r)?t.classList.add(r):!e&&t.classList.contains(r)&&t.classList.remove(r)};function XB(){const t=this,{slides:e,params:r,slidesEl:n,activeIndex:s}=t,i=t.virtual&&r.virtual.enabled,o=t.grid&&r.grid&&r.grid.rows>1,a=f=>vt(n,`.${r.slideClass}${f}, swiper-slide${f}`)[0];let l,u,c;if(i)if(r.loop){let f=s-t.virtual.slidesBefore;f<0&&(f=t.virtual.slides.length+f),f>=t.virtual.slides.length&&(f-=t.virtual.slides.length),l=a(`[data-swiper-slide-index="${f}"]`)}else l=a(`[data-swiper-slide-index="${s}"]`);else o?(l=e.filter(f=>f.column===s)[0],c=e.filter(f=>f.column===s+1)[0],u=e.filter(f=>f.column===s-1)[0]):l=e[s];l&&(o||(c=DB(l,`.${r.slideClass}, swiper-slide`)[0],r.loop&&!c&&(c=e[0]),u=NB(l,`.${r.slideClass}, swiper-slide`)[0],r.loop&&!u===0&&(u=e[e.length-1]))),e.forEach(f=>{mf(f,f===l,r.slideActiveClass),mf(f,f===c,r.slideNextClass),mf(f,f===u,r.slidePrevClass)}),t.emitSlidesClasses()}const Ol=(t,e)=>{if(!t||t.destroyed||!t.params)return;const r=()=>t.isElement?"swiper-slide":`.${t.params.slideClass}`,n=e.closest(r());if(n){let s=n.querySelector(`.${t.params.lazyPreloaderClass}`);!s&&t.isElement&&(n.shadowRoot?s=n.shadowRoot.querySelector(`.${t.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{n.shadowRoot&&(s=n.shadowRoot.querySelector(`.${t.params.lazyPreloaderClass}`),s&&s.remove())})),s&&s.remove()}},bf=(t,e)=>{if(!t.slides[e])return;const r=t.slides[e].querySelector('[loading="lazy"]');r&&r.removeAttribute("loading")},Kh=t=>{if(!t||t.destroyed||!t.params)return;let e=t.params.lazyPreloadPrevNext;const r=t.slides.length;if(!r||!e||e<0)return;e=Math.min(e,r);const n=t.params.slidesPerView==="auto"?t.slidesPerViewDynamic():Math.ceil(t.params.slidesPerView),s=t.activeIndex;if(t.params.grid&&t.params.grid.rows>1){const o=s,a=[o-e];a.push(...Array.from({length:e}).map((l,u)=>o+n+u)),t.slides.forEach((l,u)=>{a.includes(l.column)&&bf(t,u)});return}const i=s+n-1;if(t.params.rewind||t.params.loop)for(let o=s-e;o<=i+e;o+=1){const a=(o%r+r)%r;(a<s||a>i)&&bf(t,a)}else for(let o=Math.max(s-e,0);o<=Math.min(i+e,r-1);o+=1)o!==s&&(o>i||o<s)&&bf(t,o)};function QB(t){const{slidesGrid:e,params:r}=t,n=t.rtlTranslate?t.translate:-t.translate;let s;for(let i=0;i<e.length;i+=1)typeof e[i+1]<"u"?n>=e[i]&&n<e[i+1]-(e[i+1]-e[i])/2?s=i:n>=e[i]&&n<e[i+1]&&(s=i+1):n>=e[i]&&(s=i);return r.normalizeSlideIndex&&(s<0||typeof s>"u")&&(s=0),s}function JB(t){const e=this,r=e.rtlTranslate?e.translate:-e.translate,{snapGrid:n,params:s,activeIndex:i,realIndex:o,snapIndex:a}=e;let l=t,u;const c=g=>{let m=g-e.virtual.slidesBefore;return m<0&&(m=e.virtual.slides.length+m),m>=e.virtual.slides.length&&(m-=e.virtual.slides.length),m};if(typeof l>"u"&&(l=QB(e)),n.indexOf(r)>=0)u=n.indexOf(r);else{const g=Math.min(s.slidesPerGroupSkip,l);u=g+Math.floor((l-g)/s.slidesPerGroup)}if(u>=n.length&&(u=n.length-1),l===i&&!e.params.loop){u!==a&&(e.snapIndex=u,e.emit("snapIndexChange"));return}if(l===i&&e.params.loop&&e.virtual&&e.params.virtual.enabled){e.realIndex=c(l);return}const f=e.grid&&s.grid&&s.grid.rows>1;let d;if(e.virtual&&s.virtual.enabled&&s.loop)d=c(l);else if(f){const g=e.slides.filter(y=>y.column===l)[0];let m=parseInt(g.getAttribute("data-swiper-slide-index"),10);Number.isNaN(m)&&(m=Math.max(e.slides.indexOf(g),0)),d=Math.floor(m/s.grid.rows)}else if(e.slides[l]){const g=e.slides[l].getAttribute("data-swiper-slide-index");g?d=parseInt(g,10):d=l}else d=l;Object.assign(e,{previousSnapIndex:a,snapIndex:u,previousRealIndex:o,realIndex:d,previousIndex:i,activeIndex:l}),e.initialized&&Kh(e),e.emit("activeIndexChange"),e.emit("snapIndexChange"),(e.initialized||e.params.runCallbacksOnInit)&&(o!==d&&e.emit("realIndexChange"),e.emit("slideChange"))}function ZB(t,e){const r=this,n=r.params;let s=t.closest(`.${n.slideClass}, swiper-slide`);!s&&r.isElement&&e&&e.length>1&&e.includes(t)&&[...e.slice(e.indexOf(t)+1,e.length)].forEach(a=>{!s&&a.matches&&a.matches(`.${n.slideClass}, swiper-slide`)&&(s=a)});let i=!1,o;if(s){for(let a=0;a<r.slides.length;a+=1)if(r.slides[a]===s){i=!0,o=a;break}}if(s&&i)r.clickedSlide=s,r.virtual&&r.params.virtual.enabled?r.clickedIndex=parseInt(s.getAttribute("data-swiper-slide-index"),10):r.clickedIndex=o;else{r.clickedSlide=void 0,r.clickedIndex=void 0;return}n.slideToClickedSlide&&r.clickedIndex!==void 0&&r.clickedIndex!==r.activeIndex&&r.slideToClickedSlide()}var e$={updateSize:HB,updateSlides:VB,updateAutoHeight:qB,updateSlidesOffset:YB,updateSlidesProgress:GB,updateProgress:KB,updateSlidesClasses:XB,updateActiveIndex:JB,updateClickedSlide:ZB};function t$(t){t===void 0&&(t=this.isHorizontal()?"x":"y");const e=this,{params:r,rtlTranslate:n,translate:s,wrapperEl:i}=e;if(r.virtualTranslate)return n?-s:s;if(r.cssMode)return s;let o=Yh(i,t);return o+=e.cssOverflowAdjustment(),n&&(o=-o),o||0}function r$(t,e){const r=this,{rtlTranslate:n,params:s,wrapperEl:i,progress:o}=r;let a=0,l=0;const u=0;r.isHorizontal()?a=n?-t:t:l=t,s.roundLengths&&(a=Math.floor(a),l=Math.floor(l)),r.previousTranslate=r.translate,r.translate=r.isHorizontal()?a:l,s.cssMode?i[r.isHorizontal()?"scrollLeft":"scrollTop"]=r.isHorizontal()?-a:-l:s.virtualTranslate||(r.isHorizontal()?a-=r.cssOverflowAdjustment():l-=r.cssOverflowAdjustment(),i.style.transform=`translate3d(${a}px, ${l}px, ${u}px)`);let c;const f=r.maxTranslate()-r.minTranslate();f===0?c=0:c=(t-r.minTranslate())/f,c!==o&&r.updateProgress(t),r.emit("setTranslate",r.translate,e)}function n$(){return-this.snapGrid[0]}function i$(){return-this.snapGrid[this.snapGrid.length-1]}function s$(t,e,r,n,s){t===void 0&&(t=0),e===void 0&&(e=this.params.speed),r===void 0&&(r=!0),n===void 0&&(n=!0);const i=this,{params:o,wrapperEl:a}=i;if(i.animating&&o.preventInteractionOnTransition)return!1;const l=i.minTranslate(),u=i.maxTranslate();let c;if(n&&t>l?c=l:n&&t<u?c=u:c=t,i.updateProgress(c),o.cssMode){const f=i.isHorizontal();if(e===0)a[f?"scrollLeft":"scrollTop"]=-c;else{if(!i.support.smoothScroll)return W1({swiper:i,targetPosition:-c,side:f?"left":"top"}),!0;a.scrollTo({[f?"left":"top"]:-c,behavior:"smooth"})}return!0}return e===0?(i.setTransition(0),i.setTranslate(c),r&&(i.emit("beforeTransitionStart",e,s),i.emit("transitionEnd"))):(i.setTransition(e),i.setTranslate(c),r&&(i.emit("beforeTransitionStart",e,s),i.emit("transitionStart")),i.animating||(i.animating=!0,i.onTranslateToWrapperTransitionEnd||(i.onTranslateToWrapperTransitionEnd=function(d){!i||i.destroyed||d.target===this&&(i.wrapperEl.removeEventListener("transitionend",i.onTranslateToWrapperTransitionEnd),i.onTranslateToWrapperTransitionEnd=null,delete i.onTranslateToWrapperTransitionEnd,i.animating=!1,r&&i.emit("transitionEnd"))}),i.wrapperEl.addEventListener("transitionend",i.onTranslateToWrapperTransitionEnd))),!0}var o$={getTranslate:t$,setTranslate:r$,minTranslate:n$,maxTranslate:i$,translateTo:s$};function a$(t,e){const r=this;r.params.cssMode||(r.wrapperEl.style.transitionDuration=`${t}ms`,r.wrapperEl.style.transitionDelay=t===0?"0ms":""),r.emit("setTransition",t,e)}function V1(t){let{swiper:e,runCallbacks:r,direction:n,step:s}=t;const{activeIndex:i,previousIndex:o}=e;let a=n;if(a||(i>o?a="next":i<o?a="prev":a="reset"),e.emit(`transition${s}`),r&&i!==o){if(a==="reset"){e.emit(`slideResetTransition${s}`);return}e.emit(`slideChangeTransition${s}`),a==="next"?e.emit(`slideNextTransition${s}`):e.emit(`slidePrevTransition${s}`)}}function l$(t,e){t===void 0&&(t=!0);const r=this,{params:n}=r;n.cssMode||(n.autoHeight&&r.updateAutoHeight(),V1({swiper:r,runCallbacks:t,direction:e,step:"Start"}))}function u$(t,e){t===void 0&&(t=!0);const r=this,{params:n}=r;r.animating=!1,!n.cssMode&&(r.setTransition(0),V1({swiper:r,runCallbacks:t,direction:e,step:"End"}))}var c$={setTransition:a$,transitionStart:l$,transitionEnd:u$};function f$(t,e,r,n,s){t===void 0&&(t=0),r===void 0&&(r=!0),typeof t=="string"&&(t=parseInt(t,10));const i=this;let o=t;o<0&&(o=0);const{params:a,snapGrid:l,slidesGrid:u,previousIndex:c,activeIndex:f,rtlTranslate:d,wrapperEl:g,enabled:m}=i;if(!m&&!n&&!s||i.destroyed||i.animating&&a.preventInteractionOnTransition)return!1;typeof e>"u"&&(e=i.params.speed);const y=Math.min(i.params.slidesPerGroupSkip,o);let E=y+Math.floor((o-y)/i.params.slidesPerGroup);E>=l.length&&(E=l.length-1);const _=-l[E];if(a.normalizeSlideIndex)for(let v=0;v<u.length;v+=1){const A=-Math.floor(_*100),k=Math.floor(u[v]*100),x=Math.floor(u[v+1]*100);typeof u[v+1]<"u"?A>=k&&A<x-(x-k)/2?o=v:A>=k&&A<x&&(o=v+1):A>=k&&(o=v)}if(i.initialized&&o!==f&&(!i.allowSlideNext&&(d?_>i.translate&&_>i.minTranslate():_<i.translate&&_<i.minTranslate())||!i.allowSlidePrev&&_>i.translate&&_>i.maxTranslate()&&(f||0)!==o))return!1;o!==(c||0)&&r&&i.emit("beforeSlideChangeStart"),i.updateProgress(_);let S;if(o>f?S="next":o<f?S="prev":S="reset",d&&-_===i.translate||!d&&_===i.translate)return i.updateActiveIndex(o),a.autoHeight&&i.updateAutoHeight(),i.updateSlidesClasses(),a.effect!=="slide"&&i.setTranslate(_),S!=="reset"&&(i.transitionStart(r,S),i.transitionEnd(r,S)),!1;if(a.cssMode){const v=i.isHorizontal(),A=d?_:-_;if(e===0){const k=i.virtual&&i.params.virtual.enabled;k&&(i.wrapperEl.style.scrollSnapType="none",i._immediateVirtual=!0),k&&!i._cssModeVirtualInitialSet&&i.params.initialSlide>0?(i._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{g[v?"scrollLeft":"scrollTop"]=A})):g[v?"scrollLeft":"scrollTop"]=A,k&&requestAnimationFrame(()=>{i.wrapperEl.style.scrollSnapType="",i._immediateVirtual=!1})}else{if(!i.support.smoothScroll)return W1({swiper:i,targetPosition:A,side:v?"left":"top"}),!0;g.scrollTo({[v?"left":"top"]:A,behavior:"smooth"})}return!0}return i.setTransition(e),i.setTranslate(_),i.updateActiveIndex(o),i.updateSlidesClasses(),i.emit("beforeTransitionStart",e,n),i.transitionStart(r,S),e===0?i.transitionEnd(r,S):i.animating||(i.animating=!0,i.onSlideToWrapperTransitionEnd||(i.onSlideToWrapperTransitionEnd=function(A){!i||i.destroyed||A.target===this&&(i.wrapperEl.removeEventListener("transitionend",i.onSlideToWrapperTransitionEnd),i.onSlideToWrapperTransitionEnd=null,delete i.onSlideToWrapperTransitionEnd,i.transitionEnd(r,S))}),i.wrapperEl.addEventListener("transitionend",i.onSlideToWrapperTransitionEnd)),!0}function d$(t,e,r,n){t===void 0&&(t=0),r===void 0&&(r=!0),typeof t=="string"&&(t=parseInt(t,10));const s=this;if(s.destroyed)return;typeof e>"u"&&(e=s.params.speed);const i=s.grid&&s.params.grid&&s.params.grid.rows>1;let o=t;if(s.params.loop)if(s.virtual&&s.params.virtual.enabled)o=o+s.virtual.slidesBefore;else{let a;if(i){const d=o*s.params.grid.rows;a=s.slides.filter(g=>g.getAttribute("data-swiper-slide-index")*1===d)[0].column}else a=s.getSlideIndexByData(o);const l=i?Math.ceil(s.slides.length/s.params.grid.rows):s.slides.length,{centeredSlides:u}=s.params;let c=s.params.slidesPerView;c==="auto"?c=s.slidesPerViewDynamic():(c=Math.ceil(parseFloat(s.params.slidesPerView,10)),u&&c%2===0&&(c=c+1));let f=l-a<c;if(u&&(f=f||a<Math.ceil(c/2)),n&&u&&s.params.slidesPerView!=="auto"&&!i&&(f=!1),f){const d=u?a<s.activeIndex?"prev":"next":a-s.activeIndex-1<s.params.slidesPerView?"next":"prev";s.loopFix({direction:d,slideTo:!0,activeSlideIndex:d==="next"?a+1:a-l+1,slideRealIndex:d==="next"?s.realIndex:void 0})}if(i){const d=o*s.params.grid.rows;o=s.slides.filter(g=>g.getAttribute("data-swiper-slide-index")*1===d)[0].column}else o=s.getSlideIndexByData(o)}return requestAnimationFrame(()=>{s.slideTo(o,e,r,n)}),s}function h$(t,e,r){e===void 0&&(e=!0);const n=this,{enabled:s,params:i,animating:o}=n;if(!s||n.destroyed)return n;typeof t>"u"&&(t=n.params.speed);let a=i.slidesPerGroup;i.slidesPerView==="auto"&&i.slidesPerGroup===1&&i.slidesPerGroupAuto&&(a=Math.max(n.slidesPerViewDynamic("current",!0),1));const l=n.activeIndex<i.slidesPerGroupSkip?1:a,u=n.virtual&&i.virtual.enabled;if(i.loop){if(o&&!u&&i.loopPreventsSliding)return!1;if(n.loopFix({direction:"next"}),n._clientLeft=n.wrapperEl.clientLeft,n.activeIndex===n.slides.length-1&&i.cssMode)return requestAnimationFrame(()=>{n.slideTo(n.activeIndex+l,t,e,r)}),!0}return i.rewind&&n.isEnd?n.slideTo(0,t,e,r):n.slideTo(n.activeIndex+l,t,e,r)}function p$(t,e,r){e===void 0&&(e=!0);const n=this,{params:s,snapGrid:i,slidesGrid:o,rtlTranslate:a,enabled:l,animating:u}=n;if(!l||n.destroyed)return n;typeof t>"u"&&(t=n.params.speed);const c=n.virtual&&s.virtual.enabled;if(s.loop){if(u&&!c&&s.loopPreventsSliding)return!1;n.loopFix({direction:"prev"}),n._clientLeft=n.wrapperEl.clientLeft}const f=a?n.translate:-n.translate;function d(_){return _<0?-Math.floor(Math.abs(_)):Math.floor(_)}const g=d(f),m=i.map(_=>d(_));let y=i[m.indexOf(g)-1];if(typeof y>"u"&&s.cssMode){let _;i.forEach((S,v)=>{g>=S&&(_=v)}),typeof _<"u"&&(y=i[_>0?_-1:_])}let E=0;if(typeof y<"u"&&(E=o.indexOf(y),E<0&&(E=n.activeIndex-1),s.slidesPerView==="auto"&&s.slidesPerGroup===1&&s.slidesPerGroupAuto&&(E=E-n.slidesPerViewDynamic("previous",!0)+1,E=Math.max(E,0))),s.rewind&&n.isBeginning){const _=n.params.virtual&&n.params.virtual.enabled&&n.virtual?n.virtual.slides.length-1:n.slides.length-1;return n.slideTo(_,t,e,r)}else if(s.loop&&n.activeIndex===0&&s.cssMode)return requestAnimationFrame(()=>{n.slideTo(E,t,e,r)}),!0;return n.slideTo(E,t,e,r)}function g$(t,e,r){e===void 0&&(e=!0);const n=this;if(!n.destroyed)return typeof t>"u"&&(t=n.params.speed),n.slideTo(n.activeIndex,t,e,r)}function m$(t,e,r,n){e===void 0&&(e=!0),n===void 0&&(n=.5);const s=this;if(s.destroyed)return;typeof t>"u"&&(t=s.params.speed);let i=s.activeIndex;const o=Math.min(s.params.slidesPerGroupSkip,i),a=o+Math.floor((i-o)/s.params.slidesPerGroup),l=s.rtlTranslate?s.translate:-s.translate;if(l>=s.snapGrid[a]){const u=s.snapGrid[a],c=s.snapGrid[a+1];l-u>(c-u)*n&&(i+=s.params.slidesPerGroup)}else{const u=s.snapGrid[a-1],c=s.snapGrid[a];l-u<=(c-u)*n&&(i-=s.params.slidesPerGroup)}return i=Math.max(i,0),i=Math.min(i,s.slidesGrid.length-1),s.slideTo(i,t,e,r)}function b$(){const t=this;if(t.destroyed)return;const{params:e,slidesEl:r}=t,n=e.slidesPerView==="auto"?t.slidesPerViewDynamic():e.slidesPerView;let s=t.clickedIndex,i;const o=t.isElement?"swiper-slide":`.${e.slideClass}`;if(e.loop){if(t.animating)return;i=parseInt(t.clickedSlide.getAttribute("data-swiper-slide-index"),10),e.centeredSlides?s<t.loopedSlides-n/2||s>t.slides.length-t.loopedSlides+n/2?(t.loopFix(),s=t.getSlideIndex(vt(r,`${o}[data-swiper-slide-index="${i}"]`)[0]),Xi(()=>{t.slideTo(s)})):t.slideTo(s):s>t.slides.length-n?(t.loopFix(),s=t.getSlideIndex(vt(r,`${o}[data-swiper-slide-index="${i}"]`)[0]),Xi(()=>{t.slideTo(s)})):t.slideTo(s)}else t.slideTo(s)}var y$={slideTo:f$,slideToLoop:d$,slideNext:h$,slidePrev:p$,slideReset:g$,slideToClosest:m$,slideToClickedSlide:b$};function w$(t){const e=this,{params:r,slidesEl:n}=e;if(!r.loop||e.virtual&&e.params.virtual.enabled)return;const s=()=>{vt(n,`.${r.slideClass}, swiper-slide`).forEach((f,d)=>{f.setAttribute("data-swiper-slide-index",d)})},i=e.grid&&r.grid&&r.grid.rows>1,o=r.slidesPerGroup*(i?r.grid.rows:1),a=e.slides.length%o!==0,l=i&&e.slides.length%r.grid.rows!==0,u=c=>{for(let f=0;f<c;f+=1){const d=e.isElement?Jt("swiper-slide",[r.slideBlankClass]):Jt("div",[r.slideClass,r.slideBlankClass]);e.slidesEl.append(d)}};if(a){if(r.loopAddBlankSlides){const c=o-e.slides.length%o;u(c),e.recalcSlides(),e.updateSlides()}else uu("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");s()}else if(l){if(r.loopAddBlankSlides){const c=r.grid.rows-e.slides.length%r.grid.rows;u(c),e.recalcSlides(),e.updateSlides()}else uu("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");s()}else s();e.loopFix({slideRealIndex:t,direction:r.centeredSlides?void 0:"next"})}function v$(t){let{slideRealIndex:e,slideTo:r=!0,direction:n,setTranslate:s,activeSlideIndex:i,byController:o,byMousewheel:a}=t===void 0?{}:t;const l=this;if(!l.params.loop)return;l.emit("beforeLoopFix");const{slides:u,allowSlidePrev:c,allowSlideNext:f,slidesEl:d,params:g}=l,{centeredSlides:m}=g;if(l.allowSlidePrev=!0,l.allowSlideNext=!0,l.virtual&&g.virtual.enabled){r&&(!g.centeredSlides&&l.snapIndex===0?l.slideTo(l.virtual.slides.length,0,!1,!0):g.centeredSlides&&l.snapIndex<g.slidesPerView?l.slideTo(l.virtual.slides.length+l.snapIndex,0,!1,!0):l.snapIndex===l.snapGrid.length-1&&l.slideTo(l.virtual.slidesBefore,0,!1,!0)),l.allowSlidePrev=c,l.allowSlideNext=f,l.emit("loopFix");return}let y=g.slidesPerView;y==="auto"?y=l.slidesPerViewDynamic():(y=Math.ceil(parseFloat(g.slidesPerView,10)),m&&y%2===0&&(y=y+1));const E=g.slidesPerGroupAuto?y:g.slidesPerGroup;let _=E;_%E!==0&&(_+=E-_%E),_+=g.loopAdditionalSlides,l.loopedSlides=_;const S=l.grid&&g.grid&&g.grid.rows>1;u.length<y+_?uu("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters"):S&&g.grid.fill==="row"&&uu("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");const v=[],A=[];let k=l.activeIndex;typeof i>"u"?i=l.getSlideIndex(u.filter(M=>M.classList.contains(g.slideActiveClass))[0]):k=i;const x=n==="next"||!n,D=n==="prev"||!n;let N=0,B=0;const q=S?Math.ceil(u.length/g.grid.rows):u.length,C=(S?u[i].column:i)+(m&&typeof s>"u"?-y/2+.5:0);if(C<_){N=Math.max(_-C,E);for(let M=0;M<_-C;M+=1){const L=M-Math.floor(M/q)*q;if(S){const H=q-L-1;for(let G=u.length-1;G>=0;G-=1)u[G].column===H&&v.push(G)}else v.push(q-L-1)}}else if(C+y>q-_){B=Math.max(C-(q-_*2),E);for(let M=0;M<B;M+=1){const L=M-Math.floor(M/q)*q;S?u.forEach((H,G)=>{H.column===L&&A.push(G)}):A.push(L)}}if(l.__preventObserver__=!0,requestAnimationFrame(()=>{l.__preventObserver__=!1}),D&&v.forEach(M=>{u[M].swiperLoopMoveDOM=!0,d.prepend(u[M]),u[M].swiperLoopMoveDOM=!1}),x&&A.forEach(M=>{u[M].swiperLoopMoveDOM=!0,d.append(u[M]),u[M].swiperLoopMoveDOM=!1}),l.recalcSlides(),g.slidesPerView==="auto"?l.updateSlides():S&&(v.length>0&&D||A.length>0&&x)&&l.slides.forEach((M,L)=>{l.grid.updateSlide(L,M,l.slides)}),g.watchSlidesProgress&&l.updateSlidesOffset(),r){if(v.length>0&&D){if(typeof e>"u"){const M=l.slidesGrid[k],H=l.slidesGrid[k+N]-M;a?l.setTranslate(l.translate-H):(l.slideTo(k+Math.ceil(N),0,!1,!0),s&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-H,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-H))}else if(s){const M=S?v.length/g.grid.rows:v.length;l.slideTo(l.activeIndex+M,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(A.length>0&&x)if(typeof e>"u"){const M=l.slidesGrid[k],H=l.slidesGrid[k-B]-M;a?l.setTranslate(l.translate-H):(l.slideTo(k-B,0,!1,!0),s&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-H,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-H))}else{const M=S?A.length/g.grid.rows:A.length;l.slideTo(l.activeIndex-M,0,!1,!0)}}if(l.allowSlidePrev=c,l.allowSlideNext=f,l.controller&&l.controller.control&&!o){const M={slideRealIndex:e,direction:n,setTranslate:s,activeSlideIndex:i,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach(L=>{!L.destroyed&&L.params.loop&&L.loopFix({...M,slideTo:L.params.slidesPerView===g.slidesPerView?r:!1})}):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...M,slideTo:l.controller.control.params.slidesPerView===g.slidesPerView?r:!1})}l.emit("loopFix")}function _$(){const t=this,{params:e,slidesEl:r}=t;if(!e.loop||t.virtual&&t.params.virtual.enabled)return;t.recalcSlides();const n=[];t.slides.forEach(s=>{const i=typeof s.swiperSlideIndex>"u"?s.getAttribute("data-swiper-slide-index")*1:s.swiperSlideIndex;n[i]=s}),t.slides.forEach(s=>{s.removeAttribute("data-swiper-slide-index")}),n.forEach(s=>{r.append(s)}),t.recalcSlides(),t.slideTo(t.realIndex,0)}var E$={loopCreate:w$,loopFix:v$,loopDestroy:_$};function S$(t){const e=this;if(!e.params.simulateTouch||e.params.watchOverflow&&e.isLocked||e.params.cssMode)return;const r=e.params.touchEventsTarget==="container"?e.el:e.wrapperEl;e.isElement&&(e.__preventObserver__=!0),r.style.cursor="move",r.style.cursor=t?"grabbing":"grab",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1})}function T$(){const t=this;t.params.watchOverflow&&t.isLocked||t.params.cssMode||(t.isElement&&(t.__preventObserver__=!0),t[t.params.touchEventsTarget==="container"?"el":"wrapperEl"].style.cursor="",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1}))}var x$={setGrabCursor:S$,unsetGrabCursor:T$};function A$(t,e){e===void 0&&(e=this);function r(n){if(!n||n===_t()||n===ot())return null;n.assignedSlot&&(n=n.assignedSlot);const s=n.closest(t);return!s&&!n.getRootNode?null:s||r(n.getRootNode().host)}return r(e)}function ry(t,e,r){const n=ot(),{params:s}=t,i=s.edgeSwipeDetection,o=s.edgeSwipeThreshold;return i&&(r<=o||r>=n.innerWidth-o)?i==="prevent"?(e.preventDefault(),!0):!1:!0}function C$(t){const e=this,r=_t();let n=t;n.originalEvent&&(n=n.originalEvent);const s=e.touchEventsData;if(n.type==="pointerdown"){if(s.pointerId!==null&&s.pointerId!==n.pointerId)return;s.pointerId=n.pointerId}else n.type==="touchstart"&&n.targetTouches.length===1&&(s.touchId=n.targetTouches[0].identifier);if(n.type==="touchstart"){ry(e,n,n.targetTouches[0].pageX);return}const{params:i,touches:o,enabled:a}=e;if(!a||!i.simulateTouch&&n.pointerType==="mouse"||e.animating&&i.preventInteractionOnTransition)return;!e.animating&&i.cssMode&&i.loop&&e.loopFix();let l=n.target;if(i.touchEventsTarget==="wrapper"&&!e.wrapperEl.contains(l)||"which"in n&&n.which===3||"button"in n&&n.button>0||s.isTouched&&s.isMoved)return;const u=!!i.noSwipingClass&&i.noSwipingClass!=="",c=n.composedPath?n.composedPath():n.path;u&&n.target&&n.target.shadowRoot&&c&&(l=c[0]);const f=i.noSwipingSelector?i.noSwipingSelector:`.${i.noSwipingClass}`,d=!!(n.target&&n.target.shadowRoot);if(i.noSwiping&&(d?A$(f,l):l.closest(f))){e.allowClick=!0;return}if(i.swipeHandler&&!l.closest(i.swipeHandler))return;o.currentX=n.pageX,o.currentY=n.pageY;const g=o.currentX,m=o.currentY;if(!ry(e,n,g))return;Object.assign(s,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=g,o.startY=m,s.touchStartTime=ar(),e.allowClick=!0,e.updateSize(),e.swipeDirection=void 0,i.threshold>0&&(s.allowThresholdMove=!1);let y=!0;l.matches(s.focusableElements)&&(y=!1,l.nodeName==="SELECT"&&(s.isTouched=!1)),r.activeElement&&r.activeElement.matches(s.focusableElements)&&r.activeElement!==l&&r.activeElement.blur();const E=y&&e.allowTouchMove&&i.touchStartPreventDefault;(i.touchStartForcePreventDefault||E)&&!l.isContentEditable&&n.preventDefault(),i.freeMode&&i.freeMode.enabled&&e.freeMode&&e.animating&&!i.cssMode&&e.freeMode.onTouchStart(),e.emit("touchStart",n)}function I$(t){const e=_t(),r=this,n=r.touchEventsData,{params:s,touches:i,rtlTranslate:o,enabled:a}=r;if(!a||!s.simulateTouch&&t.pointerType==="mouse")return;let l=t;if(l.originalEvent&&(l=l.originalEvent),l.type==="pointermove"&&(n.touchId!==null||l.pointerId!==n.pointerId))return;let u;if(l.type==="touchmove"){if(u=[...l.changedTouches].filter(x=>x.identifier===n.touchId)[0],!u||u.identifier!==n.touchId)return}else u=l;if(!n.isTouched){n.startMoving&&n.isScrolling&&r.emit("touchMoveOpposite",l);return}const c=u.pageX,f=u.pageY;if(l.preventedByNestedSwiper){i.startX=c,i.startY=f;return}if(!r.allowTouchMove){l.target.matches(n.focusableElements)||(r.allowClick=!1),n.isTouched&&(Object.assign(i,{startX:c,startY:f,currentX:c,currentY:f}),n.touchStartTime=ar());return}if(s.touchReleaseOnEdges&&!s.loop){if(r.isVertical()){if(f<i.startY&&r.translate<=r.maxTranslate()||f>i.startY&&r.translate>=r.minTranslate()){n.isTouched=!1,n.isMoved=!1;return}}else if(c<i.startX&&r.translate<=r.maxTranslate()||c>i.startX&&r.translate>=r.minTranslate())return}if(e.activeElement&&l.target===e.activeElement&&l.target.matches(n.focusableElements)){n.isMoved=!0,r.allowClick=!1;return}n.allowTouchCallbacks&&r.emit("touchMove",l),i.previousX=i.currentX,i.previousY=i.currentY,i.currentX=c,i.currentY=f;const d=i.currentX-i.startX,g=i.currentY-i.startY;if(r.params.threshold&&Math.sqrt(d**2+g**2)<r.params.threshold)return;if(typeof n.isScrolling>"u"){let x;r.isHorizontal()&&i.currentY===i.startY||r.isVertical()&&i.currentX===i.startX?n.isScrolling=!1:d*d+g*g>=25&&(x=Math.atan2(Math.abs(g),Math.abs(d))*180/Math.PI,n.isScrolling=r.isHorizontal()?x>s.touchAngle:90-x>s.touchAngle)}if(n.isScrolling&&r.emit("touchMoveOpposite",l),typeof n.startMoving>"u"&&(i.currentX!==i.startX||i.currentY!==i.startY)&&(n.startMoving=!0),n.isScrolling||l.type==="touchmove"&&n.preventTouchMoveFromPointerMove){n.isTouched=!1;return}if(!n.startMoving)return;r.allowClick=!1,!s.cssMode&&l.cancelable&&l.preventDefault(),s.touchMoveStopPropagation&&!s.nested&&l.stopPropagation();let m=r.isHorizontal()?d:g,y=r.isHorizontal()?i.currentX-i.previousX:i.currentY-i.previousY;s.oneWayMovement&&(m=Math.abs(m)*(o?1:-1),y=Math.abs(y)*(o?1:-1)),i.diff=m,m*=s.touchRatio,o&&(m=-m,y=-y);const E=r.touchesDirection;r.swipeDirection=m>0?"prev":"next",r.touchesDirection=y>0?"prev":"next";const _=r.params.loop&&!s.cssMode,S=r.touchesDirection==="next"&&r.allowSlideNext||r.touchesDirection==="prev"&&r.allowSlidePrev;if(!n.isMoved){if(_&&S&&r.loopFix({direction:r.swipeDirection}),n.startTranslate=r.getTranslate(),r.setTransition(0),r.animating){const x=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});r.wrapperEl.dispatchEvent(x)}n.allowMomentumBounce=!1,s.grabCursor&&(r.allowSlideNext===!0||r.allowSlidePrev===!0)&&r.setGrabCursor(!0),r.emit("sliderFirstMove",l)}let v;if(new Date().getTime(),n.isMoved&&n.allowThresholdMove&&E!==r.touchesDirection&&_&&S&&Math.abs(m)>=1){Object.assign(i,{startX:c,startY:f,currentX:c,currentY:f,startTranslate:n.currentTranslate}),n.loopSwapReset=!0,n.startTranslate=n.currentTranslate;return}r.emit("sliderMove",l),n.isMoved=!0,n.currentTranslate=m+n.startTranslate;let A=!0,k=s.resistanceRatio;if(s.touchReleaseOnEdges&&(k=0),m>0?(_&&S&&!v&&n.allowThresholdMove&&n.currentTranslate>(s.centeredSlides?r.minTranslate()-r.slidesSizesGrid[r.activeIndex+1]:r.minTranslate())&&r.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),n.currentTranslate>r.minTranslate()&&(A=!1,s.resistance&&(n.currentTranslate=r.minTranslate()-1+(-r.minTranslate()+n.startTranslate+m)**k))):m<0&&(_&&S&&!v&&n.allowThresholdMove&&n.currentTranslate<(s.centeredSlides?r.maxTranslate()+r.slidesSizesGrid[r.slidesSizesGrid.length-1]:r.maxTranslate())&&r.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:r.slides.length-(s.slidesPerView==="auto"?r.slidesPerViewDynamic():Math.ceil(parseFloat(s.slidesPerView,10)))}),n.currentTranslate<r.maxTranslate()&&(A=!1,s.resistance&&(n.currentTranslate=r.maxTranslate()+1-(r.maxTranslate()-n.startTranslate-m)**k))),A&&(l.preventedByNestedSwiper=!0),!r.allowSlideNext&&r.swipeDirection==="next"&&n.currentTranslate<n.startTranslate&&(n.currentTranslate=n.startTranslate),!r.allowSlidePrev&&r.swipeDirection==="prev"&&n.currentTranslate>n.startTranslate&&(n.currentTranslate=n.startTranslate),!r.allowSlidePrev&&!r.allowSlideNext&&(n.currentTranslate=n.startTranslate),s.threshold>0)if(Math.abs(m)>s.threshold||n.allowThresholdMove){if(!n.allowThresholdMove){n.allowThresholdMove=!0,i.startX=i.currentX,i.startY=i.currentY,n.currentTranslate=n.startTranslate,i.diff=r.isHorizontal()?i.currentX-i.startX:i.currentY-i.startY;return}}else{n.currentTranslate=n.startTranslate;return}!s.followFinger||s.cssMode||((s.freeMode&&s.freeMode.enabled&&r.freeMode||s.watchSlidesProgress)&&(r.updateActiveIndex(),r.updateSlidesClasses()),s.freeMode&&s.freeMode.enabled&&r.freeMode&&r.freeMode.onTouchMove(),r.updateProgress(n.currentTranslate),r.setTranslate(n.currentTranslate))}function M$(t){const e=this,r=e.touchEventsData;let n=t;n.originalEvent&&(n=n.originalEvent);let s;if(n.type==="touchend"||n.type==="touchcancel"){if(s=[...n.changedTouches].filter(k=>k.identifier===r.touchId)[0],!s||s.identifier!==r.touchId)return}else{if(r.touchId!==null||n.pointerId!==r.pointerId)return;s=n}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(n.type)&&!(["pointercancel","contextmenu"].includes(n.type)&&(e.browser.isSafari||e.browser.isWebView)))return;r.pointerId=null,r.touchId=null;const{params:o,touches:a,rtlTranslate:l,slidesGrid:u,enabled:c}=e;if(!c||!o.simulateTouch&&n.pointerType==="mouse")return;if(r.allowTouchCallbacks&&e.emit("touchEnd",n),r.allowTouchCallbacks=!1,!r.isTouched){r.isMoved&&o.grabCursor&&e.setGrabCursor(!1),r.isMoved=!1,r.startMoving=!1;return}o.grabCursor&&r.isMoved&&r.isTouched&&(e.allowSlideNext===!0||e.allowSlidePrev===!0)&&e.setGrabCursor(!1);const f=ar(),d=f-r.touchStartTime;if(e.allowClick){const k=n.path||n.composedPath&&n.composedPath();e.updateClickedSlide(k&&k[0]||n.target,k),e.emit("tap click",n),d<300&&f-r.lastClickTime<300&&e.emit("doubleTap doubleClick",n)}if(r.lastClickTime=ar(),Xi(()=>{e.destroyed||(e.allowClick=!0)}),!r.isTouched||!r.isMoved||!e.swipeDirection||a.diff===0&&!r.loopSwapReset||r.currentTranslate===r.startTranslate&&!r.loopSwapReset){r.isTouched=!1,r.isMoved=!1,r.startMoving=!1;return}r.isTouched=!1,r.isMoved=!1,r.startMoving=!1;let g;if(o.followFinger?g=l?e.translate:-e.translate:g=-r.currentTranslate,o.cssMode)return;if(o.freeMode&&o.freeMode.enabled){e.freeMode.onTouchEnd({currentPos:g});return}const m=g>=-e.maxTranslate()&&!e.params.loop;let y=0,E=e.slidesSizesGrid[0];for(let k=0;k<u.length;k+=k<o.slidesPerGroupSkip?1:o.slidesPerGroup){const x=k<o.slidesPerGroupSkip-1?1:o.slidesPerGroup;typeof u[k+x]<"u"?(m||g>=u[k]&&g<u[k+x])&&(y=k,E=u[k+x]-u[k]):(m||g>=u[k])&&(y=k,E=u[u.length-1]-u[u.length-2])}let _=null,S=null;o.rewind&&(e.isBeginning?S=o.virtual&&o.virtual.enabled&&e.virtual?e.virtual.slides.length-1:e.slides.length-1:e.isEnd&&(_=0));const v=(g-u[y])/E,A=y<o.slidesPerGroupSkip-1?1:o.slidesPerGroup;if(d>o.longSwipesMs){if(!o.longSwipes){e.slideTo(e.activeIndex);return}e.swipeDirection==="next"&&(v>=o.longSwipesRatio?e.slideTo(o.rewind&&e.isEnd?_:y+A):e.slideTo(y)),e.swipeDirection==="prev"&&(v>1-o.longSwipesRatio?e.slideTo(y+A):S!==null&&v<0&&Math.abs(v)>o.longSwipesRatio?e.slideTo(S):e.slideTo(y))}else{if(!o.shortSwipes){e.slideTo(e.activeIndex);return}e.navigation&&(n.target===e.navigation.nextEl||n.target===e.navigation.prevEl)?n.target===e.navigation.nextEl?e.slideTo(y+A):e.slideTo(y):(e.swipeDirection==="next"&&e.slideTo(_!==null?_:y+A),e.swipeDirection==="prev"&&e.slideTo(S!==null?S:y))}}function ny(){const t=this,{params:e,el:r}=t;if(r&&r.offsetWidth===0)return;e.breakpoints&&t.setBreakpoint();const{allowSlideNext:n,allowSlidePrev:s,snapGrid:i}=t,o=t.virtual&&t.params.virtual.enabled;t.allowSlideNext=!0,t.allowSlidePrev=!0,t.updateSize(),t.updateSlides(),t.updateSlidesClasses();const a=o&&e.loop;(e.slidesPerView==="auto"||e.slidesPerView>1)&&t.isEnd&&!t.isBeginning&&!t.params.centeredSlides&&!a?t.slideTo(t.slides.length-1,0,!1,!0):t.params.loop&&!o?t.slideToLoop(t.realIndex,0,!1,!0):t.slideTo(t.activeIndex,0,!1,!0),t.autoplay&&t.autoplay.running&&t.autoplay.paused&&(clearTimeout(t.autoplay.resizeTimeout),t.autoplay.resizeTimeout=setTimeout(()=>{t.autoplay&&t.autoplay.running&&t.autoplay.paused&&t.autoplay.resume()},500)),t.allowSlidePrev=s,t.allowSlideNext=n,t.params.watchOverflow&&i!==t.snapGrid&&t.checkOverflow()}function O$(t){const e=this;e.enabled&&(e.allowClick||(e.params.preventClicks&&t.preventDefault(),e.params.preventClicksPropagation&&e.animating&&(t.stopPropagation(),t.stopImmediatePropagation())))}function R$(){const t=this,{wrapperEl:e,rtlTranslate:r,enabled:n}=t;if(!n)return;t.previousTranslate=t.translate,t.isHorizontal()?t.translate=-e.scrollLeft:t.translate=-e.scrollTop,t.translate===0&&(t.translate=0),t.updateActiveIndex(),t.updateSlidesClasses();let s;const i=t.maxTranslate()-t.minTranslate();i===0?s=0:s=(t.translate-t.minTranslate())/i,s!==t.progress&&t.updateProgress(r?-t.translate:t.translate),t.emit("setTranslate",t.translate,!1)}function P$(t){const e=this;Ol(e,t.target),!(e.params.cssMode||e.params.slidesPerView!=="auto"&&!e.params.autoHeight)&&e.update()}function k$(){const t=this;t.documentTouchHandlerProceeded||(t.documentTouchHandlerProceeded=!0,t.params.touchReleaseOnEdges&&(t.el.style.touchAction="auto"))}const q1=(t,e)=>{const r=_t(),{params:n,el:s,wrapperEl:i,device:o}=t,a=!!n.nested,l=e==="on"?"addEventListener":"removeEventListener",u=e;!s||typeof s=="string"||(r[l]("touchstart",t.onDocumentTouchStart,{passive:!1,capture:a}),s[l]("touchstart",t.onTouchStart,{passive:!1}),s[l]("pointerdown",t.onTouchStart,{passive:!1}),r[l]("touchmove",t.onTouchMove,{passive:!1,capture:a}),r[l]("pointermove",t.onTouchMove,{passive:!1,capture:a}),r[l]("touchend",t.onTouchEnd,{passive:!0}),r[l]("pointerup",t.onTouchEnd,{passive:!0}),r[l]("pointercancel",t.onTouchEnd,{passive:!0}),r[l]("touchcancel",t.onTouchEnd,{passive:!0}),r[l]("pointerout",t.onTouchEnd,{passive:!0}),r[l]("pointerleave",t.onTouchEnd,{passive:!0}),r[l]("contextmenu",t.onTouchEnd,{passive:!0}),(n.preventClicks||n.preventClicksPropagation)&&s[l]("click",t.onClick,!0),n.cssMode&&i[l]("scroll",t.onScroll),n.updateOnWindowResize?t[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",ny,!0):t[u]("observerUpdate",ny,!0),s[l]("load",t.onLoad,{capture:!0}))};function L$(){const t=this,{params:e}=t;t.onTouchStart=C$.bind(t),t.onTouchMove=I$.bind(t),t.onTouchEnd=M$.bind(t),t.onDocumentTouchStart=k$.bind(t),e.cssMode&&(t.onScroll=R$.bind(t)),t.onClick=O$.bind(t),t.onLoad=P$.bind(t),q1(t,"on")}function N$(){q1(this,"off")}var D$={attachEvents:L$,detachEvents:N$};const iy=(t,e)=>t.grid&&e.grid&&e.grid.rows>1;function B$(){const t=this,{realIndex:e,initialized:r,params:n,el:s}=t,i=n.breakpoints;if(!i||i&&Object.keys(i).length===0)return;const o=t.getBreakpoint(i,t.params.breakpointsBase,t.el);if(!o||t.currentBreakpoint===o)return;const l=(o in i?i[o]:void 0)||t.originalParams,u=iy(t,n),c=iy(t,l),f=t.params.grabCursor,d=l.grabCursor,g=n.enabled;u&&!c?(s.classList.remove(`${n.containerModifierClass}grid`,`${n.containerModifierClass}grid-column`),t.emitContainerClasses()):!u&&c&&(s.classList.add(`${n.containerModifierClass}grid`),(l.grid.fill&&l.grid.fill==="column"||!l.grid.fill&&n.grid.fill==="column")&&s.classList.add(`${n.containerModifierClass}grid-column`),t.emitContainerClasses()),f&&!d?t.unsetGrabCursor():!f&&d&&t.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(v=>{if(typeof l[v]>"u")return;const A=n[v]&&n[v].enabled,k=l[v]&&l[v].enabled;A&&!k&&t[v].disable(),!A&&k&&t[v].enable()});const m=l.direction&&l.direction!==n.direction,y=n.loop&&(l.slidesPerView!==n.slidesPerView||m),E=n.loop;m&&r&&t.changeDirection(),Xt(t.params,l);const _=t.params.enabled,S=t.params.loop;Object.assign(t,{allowTouchMove:t.params.allowTouchMove,allowSlideNext:t.params.allowSlideNext,allowSlidePrev:t.params.allowSlidePrev}),g&&!_?t.disable():!g&&_&&t.enable(),t.currentBreakpoint=o,t.emit("_beforeBreakpoint",l),r&&(y?(t.loopDestroy(),t.loopCreate(e),t.updateSlides()):!E&&S?(t.loopCreate(e),t.updateSlides()):E&&!S&&t.loopDestroy()),t.emit("breakpoint",l)}function $$(t,e,r){if(e===void 0&&(e="window"),!t||e==="container"&&!r)return;let n=!1;const s=ot(),i=e==="window"?s.innerHeight:r.clientHeight,o=Object.keys(t).map(a=>{if(typeof a=="string"&&a.indexOf("@")===0){const l=parseFloat(a.substr(1));return{value:i*l,point:a}}return{value:a,point:a}});o.sort((a,l)=>parseInt(a.value,10)-parseInt(l.value,10));for(let a=0;a<o.length;a+=1){const{point:l,value:u}=o[a];e==="window"?s.matchMedia(`(min-width: ${u}px)`).matches&&(n=l):u<=r.clientWidth&&(n=l)}return n||"max"}var F$={setBreakpoint:B$,getBreakpoint:$$};function U$(t,e){const r=[];return t.forEach(n=>{typeof n=="object"?Object.keys(n).forEach(s=>{n[s]&&r.push(e+s)}):typeof n=="string"&&r.push(e+n)}),r}function j$(){const t=this,{classNames:e,params:r,rtl:n,el:s,device:i}=t,o=U$(["initialized",r.direction,{"free-mode":t.params.freeMode&&r.freeMode.enabled},{autoheight:r.autoHeight},{rtl:n},{grid:r.grid&&r.grid.rows>1},{"grid-column":r.grid&&r.grid.rows>1&&r.grid.fill==="column"},{android:i.android},{ios:i.ios},{"css-mode":r.cssMode},{centered:r.cssMode&&r.centeredSlides},{"watch-progress":r.watchSlidesProgress}],r.containerModifierClass);e.push(...o),s.classList.add(...e),t.emitContainerClasses()}function W$(){const t=this,{el:e,classNames:r}=t;!e||typeof e=="string"||(e.classList.remove(...r),t.emitContainerClasses())}var z$={addClasses:j$,removeClasses:W$};function H$(){const t=this,{isLocked:e,params:r}=t,{slidesOffsetBefore:n}=r;if(n){const s=t.slides.length-1,i=t.slidesGrid[s]+t.slidesSizesGrid[s]+n*2;t.isLocked=t.size>i}else t.isLocked=t.snapGrid.length===1;r.allowSlideNext===!0&&(t.allowSlideNext=!t.isLocked),r.allowSlidePrev===!0&&(t.allowSlidePrev=!t.isLocked),e&&e!==t.isLocked&&(t.isEnd=!1),e!==t.isLocked&&t.emit(t.isLocked?"lock":"unlock")}var V$={checkOverflow:H$},Xh={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function q$(t,e){return function(n){n===void 0&&(n={});const s=Object.keys(n)[0],i=n[s];if(typeof i!="object"||i===null){Xt(e,n);return}if(t[s]===!0&&(t[s]={enabled:!0}),s==="navigation"&&t[s]&&t[s].enabled&&!t[s].prevEl&&!t[s].nextEl&&(t[s].auto=!0),["pagination","scrollbar"].indexOf(s)>=0&&t[s]&&t[s].enabled&&!t[s].el&&(t[s].auto=!0),!(s in t&&"enabled"in i)){Xt(e,n);return}typeof t[s]=="object"&&!("enabled"in t[s])&&(t[s].enabled=!0),t[s]||(t[s]={enabled:!1}),Xt(e,n)}}const yf={eventsEmitter:zB,update:e$,translate:o$,transition:c$,slide:y$,loop:E$,grabCursor:x$,events:D$,breakpoints:F$,checkOverflow:V$,classes:z$},wf={};class Kt{constructor(){let e,r;for(var n=arguments.length,s=new Array(n),i=0;i<n;i++)s[i]=arguments[i];s.length===1&&s[0].constructor&&Object.prototype.toString.call(s[0]).slice(8,-1)==="Object"?r=s[0]:[e,r]=s,r||(r={}),r=Xt({},r),e&&!r.el&&(r.el=e);const o=_t();if(r.el&&typeof r.el=="string"&&o.querySelectorAll(r.el).length>1){const c=[];return o.querySelectorAll(r.el).forEach(f=>{const d=Xt({},r,{el:f});c.push(new Kt(d))}),c}const a=this;a.__swiper__=!0,a.support=z1(),a.device=H1({userAgent:r.userAgent}),a.browser=UB(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],r.modules&&Array.isArray(r.modules)&&a.modules.push(...r.modules);const l={};a.modules.forEach(c=>{c({params:r,swiper:a,extendParams:q$(r,l),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})});const u=Xt({},Xh,l);return a.params=Xt({},u,wf,r),a.originalParams=Xt({},a.params),a.passedParams=Xt({},r),a.params&&a.params.on&&Object.keys(a.params.on).forEach(c=>{a.on(c,a.params.on[c])}),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal(){return a.params.direction==="horizontal"},isVertical(){return a.params.direction==="vertical"},activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:r,params:n}=this,s=vt(r,`.${n.slideClass}, swiper-slide`),i=la(s[0]);return la(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter(r=>r.getAttribute("data-swiper-slide-index")*1===e)[0])}recalcSlides(){const e=this,{slidesEl:r,params:n}=e;e.slides=vt(r,`.${n.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,r){const n=this;e=Math.min(Math.max(e,0),1);const s=n.minTranslate(),o=(n.maxTranslate()-s)*e+s;n.translateTo(o,typeof r>"u"?0:r),n.updateActiveIndex(),n.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const r=e.el.className.split(" ").filter(n=>n.indexOf("swiper")===0||n.indexOf(e.params.containerModifierClass)===0);e.emit("_containerClasses",r.join(" "))}getSlideClasses(e){const r=this;return r.destroyed?"":e.className.split(" ").filter(n=>n.indexOf("swiper-slide")===0||n.indexOf(r.params.slideClass)===0).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const r=[];e.slides.forEach(n=>{const s=e.getSlideClasses(n);r.push({slideEl:n,classNames:s}),e.emit("_slideClass",n,s)}),e.emit("_slideClasses",r)}slidesPerViewDynamic(e,r){e===void 0&&(e="current"),r===void 0&&(r=!1);const n=this,{params:s,slides:i,slidesGrid:o,slidesSizesGrid:a,size:l,activeIndex:u}=n;let c=1;if(typeof s.slidesPerView=="number")return s.slidesPerView;if(s.centeredSlides){let f=i[u]?Math.ceil(i[u].swiperSlideSize):0,d;for(let g=u+1;g<i.length;g+=1)i[g]&&!d&&(f+=Math.ceil(i[g].swiperSlideSize),c+=1,f>l&&(d=!0));for(let g=u-1;g>=0;g-=1)i[g]&&!d&&(f+=i[g].swiperSlideSize,c+=1,f>l&&(d=!0))}else if(e==="current")for(let f=u+1;f<i.length;f+=1)(r?o[f]+a[f]-o[u]<l:o[f]-o[u]<l)&&(c+=1);else for(let f=u-1;f>=0;f-=1)o[u]-o[f]<l&&(c+=1);return c}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:r,params:n}=e;n.breakpoints&&e.setBreakpoint(),[...e.el.querySelectorAll('[loading="lazy"]')].forEach(o=>{o.complete&&Ol(e,o)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses();function s(){const o=e.rtlTranslate?e.translate*-1:e.translate,a=Math.min(Math.max(o,e.maxTranslate()),e.minTranslate());e.setTranslate(a),e.updateActiveIndex(),e.updateSlidesClasses()}let i;if(n.freeMode&&n.freeMode.enabled&&!n.cssMode)s(),n.autoHeight&&e.updateAutoHeight();else{if((n.slidesPerView==="auto"||n.slidesPerView>1)&&e.isEnd&&!n.centeredSlides){const o=e.virtual&&n.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(o.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||s()}n.watchOverflow&&r!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,r){r===void 0&&(r=!0);const n=this,s=n.params.direction;return e||(e=s==="horizontal"?"vertical":"horizontal"),e===s||e!=="horizontal"&&e!=="vertical"||(n.el.classList.remove(`${n.params.containerModifierClass}${s}`),n.el.classList.add(`${n.params.containerModifierClass}${e}`),n.emitContainerClasses(),n.params.direction=e,n.slides.forEach(i=>{e==="vertical"?i.style.width="":i.style.height=""}),n.emit("changeDirection"),r&&n.update()),n}changeLanguageDirection(e){const r=this;r.rtl&&e==="rtl"||!r.rtl&&e==="ltr"||(r.rtl=e==="rtl",r.rtlTranslate=r.params.direction==="horizontal"&&r.rtl,r.rtl?(r.el.classList.add(`${r.params.containerModifierClass}rtl`),r.el.dir="rtl"):(r.el.classList.remove(`${r.params.containerModifierClass}rtl`),r.el.dir="ltr"),r.update())}mount(e){const r=this;if(r.mounted)return!0;let n=e||r.params.el;if(typeof n=="string"&&(n=document.querySelector(n)),!n)return!1;n.swiper=r,n.parentNode&&n.parentNode.host&&n.parentNode.host.nodeName===r.params.swiperElementNodeName.toUpperCase()&&(r.isElement=!0);const s=()=>`.${(r.params.wrapperClass||"").trim().split(" ").join(".")}`;let o=n&&n.shadowRoot&&n.shadowRoot.querySelector?n.shadowRoot.querySelector(s()):vt(n,s())[0];return!o&&r.params.createElements&&(o=Jt("div",r.params.wrapperClass),n.append(o),vt(n,`.${r.params.slideClass}`).forEach(a=>{o.append(a)})),Object.assign(r,{el:n,wrapperEl:o,slidesEl:r.isElement&&!n.parentNode.host.slideSlots?n.parentNode.host:o,hostEl:r.isElement?n.parentNode.host:n,mounted:!0,rtl:n.dir.toLowerCase()==="rtl"||Kn(n,"direction")==="rtl",rtlTranslate:r.params.direction==="horizontal"&&(n.dir.toLowerCase()==="rtl"||Kn(n,"direction")==="rtl"),wrongRTL:Kn(o,"display")==="-webkit-box"}),!0}init(e){const r=this;if(r.initialized||r.mount(e)===!1)return r;r.emit("beforeInit"),r.params.breakpoints&&r.setBreakpoint(),r.addClasses(),r.updateSize(),r.updateSlides(),r.params.watchOverflow&&r.checkOverflow(),r.params.grabCursor&&r.enabled&&r.setGrabCursor(),r.params.loop&&r.virtual&&r.params.virtual.enabled?r.slideTo(r.params.initialSlide+r.virtual.slidesBefore,0,r.params.runCallbacksOnInit,!1,!0):r.slideTo(r.params.initialSlide,0,r.params.runCallbacksOnInit,!1,!0),r.params.loop&&r.loopCreate(),r.attachEvents();const s=[...r.el.querySelectorAll('[loading="lazy"]')];return r.isElement&&s.push(...r.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach(i=>{i.complete?Ol(r,i):i.addEventListener("load",o=>{Ol(r,o.target)})}),Kh(r),r.initialized=!0,Kh(r),r.emit("init"),r.emit("afterInit"),r}destroy(e,r){e===void 0&&(e=!0),r===void 0&&(r=!0);const n=this,{params:s,el:i,wrapperEl:o,slides:a}=n;return typeof n.params>"u"||n.destroyed||(n.emit("beforeDestroy"),n.initialized=!1,n.detachEvents(),s.loop&&n.loopDestroy(),r&&(n.removeClasses(),i&&typeof i!="string"&&i.removeAttribute("style"),o&&o.removeAttribute("style"),a&&a.length&&a.forEach(l=>{l.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass,s.slideActiveClass,s.slideNextClass,s.slidePrevClass),l.removeAttribute("style"),l.removeAttribute("data-swiper-slide-index")})),n.emit("destroy"),Object.keys(n.eventsListeners).forEach(l=>{n.off(l)}),e!==!1&&(n.el&&typeof n.el!="string"&&(n.el.swiper=null),PB(n)),n.destroyed=!0),null}static extendDefaults(e){Xt(wf,e)}static get extendedDefaults(){return wf}static get defaults(){return Xh}static installModule(e){Kt.prototype.__modules__||(Kt.prototype.__modules__=[]);const r=Kt.prototype.__modules__;typeof e=="function"&&r.indexOf(e)<0&&r.push(e)}static use(e){return Array.isArray(e)?(e.forEach(r=>Kt.installModule(r)),Kt):(Kt.installModule(e),Kt)}}Object.keys(yf).forEach(t=>{Object.keys(yf[t]).forEach(e=>{Kt.prototype[e]=yf[t][e]})});Kt.use([jB,WB]);var Nt="top",er="bottom",tr="right",Dt="left",ec="auto",oo=[Nt,er,tr,Dt],Qi="start",Vs="end",Y1="clippingParents",Eg="viewport",Es="popper",G1="reference",Qh=oo.reduce(function(t,e){return t.concat([e+"-"+Qi,e+"-"+Vs])},[]),Sg=[].concat(oo,[ec]).reduce(function(t,e){return t.concat([e,e+"-"+Qi,e+"-"+Vs])},[]),K1="beforeRead",X1="read",Q1="afterRead",J1="beforeMain",Z1="main",eS="afterMain",tS="beforeWrite",rS="write",nS="afterWrite",iS=[K1,X1,Q1,J1,Z1,eS,tS,rS,nS];function qr(t){return t?(t.nodeName||"").toLowerCase():null}function rr(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ji(t){var e=rr(t).Element;return t instanceof e||t instanceof Element}function cr(t){var e=rr(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function Tg(t){if(typeof ShadowRoot>"u")return!1;var e=rr(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Y$(t){var e=t.state;Object.keys(e.elements).forEach(function(r){var n=e.styles[r]||{},s=e.attributes[r]||{},i=e.elements[r];!cr(i)||!qr(i)||(Object.assign(i.style,n),Object.keys(s).forEach(function(o){var a=s[o];a===!1?i.removeAttribute(o):i.setAttribute(o,a===!0?"":a)}))})}function G$(t){var e=t.state,r={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,r.popper),e.styles=r,e.elements.arrow&&Object.assign(e.elements.arrow.style,r.arrow),function(){Object.keys(e.elements).forEach(function(n){var s=e.elements[n],i=e.attributes[n]||{},o=Object.keys(e.styles.hasOwnProperty(n)?e.styles[n]:r[n]),a=o.reduce(function(l,u){return l[u]="",l},{});!cr(s)||!qr(s)||(Object.assign(s.style,a),Object.keys(i).forEach(function(l){s.removeAttribute(l)}))})}}const xg={name:"applyStyles",enabled:!0,phase:"write",fn:Y$,effect:G$,requires:["computeStyles"]};function Wr(t){return t.split("-")[0]}var Vi=Math.max,fu=Math.min,qs=Math.round;function Jh(){var t=navigator.userAgentData;return t!=null&&t.brands&&Array.isArray(t.brands)?t.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function sS(){return!/^((?!chrome|android).)*safari/i.test(Jh())}function Ys(t,e,r){e===void 0&&(e=!1),r===void 0&&(r=!1);var n=t.getBoundingClientRect(),s=1,i=1;e&&cr(t)&&(s=t.offsetWidth>0&&qs(n.width)/t.offsetWidth||1,i=t.offsetHeight>0&&qs(n.height)/t.offsetHeight||1);var o=Ji(t)?rr(t):window,a=o.visualViewport,l=!sS()&&r,u=(n.left+(l&&a?a.offsetLeft:0))/s,c=(n.top+(l&&a?a.offsetTop:0))/i,f=n.width/s,d=n.height/i;return{width:f,height:d,top:c,right:u+f,bottom:c+d,left:u,x:u,y:c}}function Ag(t){var e=Ys(t),r=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-r)<=1&&(r=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:r,height:n}}function oS(t,e){var r=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(r&&Tg(r)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Cn(t){return rr(t).getComputedStyle(t)}function K$(t){return["table","td","th"].indexOf(qr(t))>=0}function ai(t){return((Ji(t)?t.ownerDocument:t.document)||window.document).documentElement}function tc(t){return qr(t)==="html"?t:t.assignedSlot||t.parentNode||(Tg(t)?t.host:null)||ai(t)}function sy(t){return!cr(t)||Cn(t).position==="fixed"?null:t.offsetParent}function X$(t){var e=/firefox/i.test(Jh()),r=/Trident/i.test(Jh());if(r&&cr(t)){var n=Cn(t);if(n.position==="fixed")return null}var s=tc(t);for(Tg(s)&&(s=s.host);cr(s)&&["html","body"].indexOf(qr(s))<0;){var i=Cn(s);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||e&&i.willChange==="filter"||e&&i.filter&&i.filter!=="none")return s;s=s.parentNode}return null}function Ea(t){for(var e=rr(t),r=sy(t);r&&K$(r)&&Cn(r).position==="static";)r=sy(r);return r&&(qr(r)==="html"||qr(r)==="body"&&Cn(r).position==="static")?e:r||X$(t)||e}function Cg(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ko(t,e,r){return Vi(t,fu(e,r))}function Q$(t,e,r){var n=Ko(t,e,r);return n>r?r:n}function aS(){return{top:0,right:0,bottom:0,left:0}}function lS(t){return Object.assign({},aS(),t)}function uS(t,e){return e.reduce(function(r,n){return r[n]=t,r},{})}var J$=function(e,r){return e=typeof e=="function"?e(Object.assign({},r.rects,{placement:r.placement})):e,lS(typeof e!="number"?e:uS(e,oo))};function Z$(t){var e,r=t.state,n=t.name,s=t.options,i=r.elements.arrow,o=r.modifiersData.popperOffsets,a=Wr(r.placement),l=Cg(a),u=[Dt,tr].indexOf(a)>=0,c=u?"height":"width";if(!(!i||!o)){var f=J$(s.padding,r),d=Ag(i),g=l==="y"?Nt:Dt,m=l==="y"?er:tr,y=r.rects.reference[c]+r.rects.reference[l]-o[l]-r.rects.popper[c],E=o[l]-r.rects.reference[l],_=Ea(i),S=_?l==="y"?_.clientHeight||0:_.clientWidth||0:0,v=y/2-E/2,A=f[g],k=S-d[c]-f[m],x=S/2-d[c]/2+v,D=Ko(A,x,k),N=l;r.modifiersData[n]=(e={},e[N]=D,e.centerOffset=D-x,e)}}function eF(t){var e=t.state,r=t.options,n=r.element,s=n===void 0?"[data-popper-arrow]":n;s!=null&&(typeof s=="string"&&(s=e.elements.popper.querySelector(s),!s)||oS(e.elements.popper,s)&&(e.elements.arrow=s))}const cS={name:"arrow",enabled:!0,phase:"main",fn:Z$,effect:eF,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Gs(t){return t.split("-")[1]}var tF={top:"auto",right:"auto",bottom:"auto",left:"auto"};function rF(t,e){var r=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:qs(r*s)/s||0,y:qs(n*s)/s||0}}function oy(t){var e,r=t.popper,n=t.popperRect,s=t.placement,i=t.variation,o=t.offsets,a=t.position,l=t.gpuAcceleration,u=t.adaptive,c=t.roundOffsets,f=t.isFixed,d=o.x,g=d===void 0?0:d,m=o.y,y=m===void 0?0:m,E=typeof c=="function"?c({x:g,y}):{x:g,y};g=E.x,y=E.y;var _=o.hasOwnProperty("x"),S=o.hasOwnProperty("y"),v=Dt,A=Nt,k=window;if(u){var x=Ea(r),D="clientHeight",N="clientWidth";if(x===rr(r)&&(x=ai(r),Cn(x).position!=="static"&&a==="absolute"&&(D="scrollHeight",N="scrollWidth")),x=x,s===Nt||(s===Dt||s===tr)&&i===Vs){A=er;var B=f&&x===k&&k.visualViewport?k.visualViewport.height:x[D];y-=B-n.height,y*=l?1:-1}if(s===Dt||(s===Nt||s===er)&&i===Vs){v=tr;var q=f&&x===k&&k.visualViewport?k.visualViewport.width:x[N];g-=q-n.width,g*=l?1:-1}}var K=Object.assign({position:a},u&&tF),C=c===!0?rF({x:g,y},rr(r)):{x:g,y};if(g=C.x,y=C.y,l){var M;return Object.assign({},K,(M={},M[A]=S?"0":"",M[v]=_?"0":"",M.transform=(k.devicePixelRatio||1)<=1?"translate("+g+"px, "+y+"px)":"translate3d("+g+"px, "+y+"px, 0)",M))}return Object.assign({},K,(e={},e[A]=S?y+"px":"",e[v]=_?g+"px":"",e.transform="",e))}function nF(t){var e=t.state,r=t.options,n=r.gpuAcceleration,s=n===void 0?!0:n,i=r.adaptive,o=i===void 0?!0:i,a=r.roundOffsets,l=a===void 0?!0:a,u={placement:Wr(e.placement),variation:Gs(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,oy(Object.assign({},u,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,oy(Object.assign({},u,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const Ig={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:nF,data:{}};var Qa={passive:!0};function iF(t){var e=t.state,r=t.instance,n=t.options,s=n.scroll,i=s===void 0?!0:s,o=n.resize,a=o===void 0?!0:o,l=rr(e.elements.popper),u=[].concat(e.scrollParents.reference,e.scrollParents.popper);return i&&u.forEach(function(c){c.addEventListener("scroll",r.update,Qa)}),a&&l.addEventListener("resize",r.update,Qa),function(){i&&u.forEach(function(c){c.removeEventListener("scroll",r.update,Qa)}),a&&l.removeEventListener("resize",r.update,Qa)}}const Mg={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:iF,data:{}};var sF={left:"right",right:"left",bottom:"top",top:"bottom"};function Rl(t){return t.replace(/left|right|bottom|top/g,function(e){return sF[e]})}var oF={start:"end",end:"start"};function ay(t){return t.replace(/start|end/g,function(e){return oF[e]})}function Og(t){var e=rr(t),r=e.pageXOffset,n=e.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Rg(t){return Ys(ai(t)).left+Og(t).scrollLeft}function aF(t,e){var r=rr(t),n=ai(t),s=r.visualViewport,i=n.clientWidth,o=n.clientHeight,a=0,l=0;if(s){i=s.width,o=s.height;var u=sS();(u||!u&&e==="fixed")&&(a=s.offsetLeft,l=s.offsetTop)}return{width:i,height:o,x:a+Rg(t),y:l}}function lF(t){var e,r=ai(t),n=Og(t),s=(e=t.ownerDocument)==null?void 0:e.body,i=Vi(r.scrollWidth,r.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),o=Vi(r.scrollHeight,r.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Rg(t),l=-n.scrollTop;return Cn(s||r).direction==="rtl"&&(a+=Vi(r.clientWidth,s?s.clientWidth:0)-i),{width:i,height:o,x:a,y:l}}function Pg(t){var e=Cn(t),r=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(r+s+n)}function fS(t){return["html","body","#document"].indexOf(qr(t))>=0?t.ownerDocument.body:cr(t)&&Pg(t)?t:fS(tc(t))}function Xo(t,e){var r;e===void 0&&(e=[]);var n=fS(t),s=n===((r=t.ownerDocument)==null?void 0:r.body),i=rr(n),o=s?[i].concat(i.visualViewport||[],Pg(n)?n:[]):n,a=e.concat(o);return s?a:a.concat(Xo(tc(o)))}function Zh(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function uF(t,e){var r=Ys(t,!1,e==="fixed");return r.top=r.top+t.clientTop,r.left=r.left+t.clientLeft,r.bottom=r.top+t.clientHeight,r.right=r.left+t.clientWidth,r.width=t.clientWidth,r.height=t.clientHeight,r.x=r.left,r.y=r.top,r}function ly(t,e,r){return e===Eg?Zh(aF(t,r)):Ji(e)?uF(e,r):Zh(lF(ai(t)))}function cF(t){var e=Xo(tc(t)),r=["absolute","fixed"].indexOf(Cn(t).position)>=0,n=r&&cr(t)?Ea(t):t;return Ji(n)?e.filter(function(s){return Ji(s)&&oS(s,n)&&qr(s)!=="body"}):[]}function fF(t,e,r,n){var s=e==="clippingParents"?cF(t):[].concat(e),i=[].concat(s,[r]),o=i[0],a=i.reduce(function(l,u){var c=ly(t,u,n);return l.top=Vi(c.top,l.top),l.right=fu(c.right,l.right),l.bottom=fu(c.bottom,l.bottom),l.left=Vi(c.left,l.left),l},ly(t,o,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function dS(t){var e=t.reference,r=t.element,n=t.placement,s=n?Wr(n):null,i=n?Gs(n):null,o=e.x+e.width/2-r.width/2,a=e.y+e.height/2-r.height/2,l;switch(s){case Nt:l={x:o,y:e.y-r.height};break;case er:l={x:o,y:e.y+e.height};break;case tr:l={x:e.x+e.width,y:a};break;case Dt:l={x:e.x-r.width,y:a};break;default:l={x:e.x,y:e.y}}var u=s?Cg(s):null;if(u!=null){var c=u==="y"?"height":"width";switch(i){case Qi:l[u]=l[u]-(e[c]/2-r[c]/2);break;case Vs:l[u]=l[u]+(e[c]/2-r[c]/2);break}}return l}function Ks(t,e){e===void 0&&(e={});var r=e,n=r.placement,s=n===void 0?t.placement:n,i=r.strategy,o=i===void 0?t.strategy:i,a=r.boundary,l=a===void 0?Y1:a,u=r.rootBoundary,c=u===void 0?Eg:u,f=r.elementContext,d=f===void 0?Es:f,g=r.altBoundary,m=g===void 0?!1:g,y=r.padding,E=y===void 0?0:y,_=lS(typeof E!="number"?E:uS(E,oo)),S=d===Es?G1:Es,v=t.rects.popper,A=t.elements[m?S:d],k=fF(Ji(A)?A:A.contextElement||ai(t.elements.popper),l,c,o),x=Ys(t.elements.reference),D=dS({reference:x,element:v,strategy:"absolute",placement:s}),N=Zh(Object.assign({},v,D)),B=d===Es?N:x,q={top:k.top-B.top+_.top,bottom:B.bottom-k.bottom+_.bottom,left:k.left-B.left+_.left,right:B.right-k.right+_.right},K=t.modifiersData.offset;if(d===Es&&K){var C=K[s];Object.keys(q).forEach(function(M){var L=[tr,er].indexOf(M)>=0?1:-1,H=[Nt,er].indexOf(M)>=0?"y":"x";q[M]+=C[H]*L})}return q}function dF(t,e){e===void 0&&(e={});var r=e,n=r.placement,s=r.boundary,i=r.rootBoundary,o=r.padding,a=r.flipVariations,l=r.allowedAutoPlacements,u=l===void 0?Sg:l,c=Gs(n),f=c?a?Qh:Qh.filter(function(m){return Gs(m)===c}):oo,d=f.filter(function(m){return u.indexOf(m)>=0});d.length===0&&(d=f);var g=d.reduce(function(m,y){return m[y]=Ks(t,{placement:y,boundary:s,rootBoundary:i,padding:o})[Wr(y)],m},{});return Object.keys(g).sort(function(m,y){return g[m]-g[y]})}function hF(t){if(Wr(t)===ec)return[];var e=Rl(t);return[ay(t),e,ay(e)]}function pF(t){var e=t.state,r=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=r.mainAxis,i=s===void 0?!0:s,o=r.altAxis,a=o===void 0?!0:o,l=r.fallbackPlacements,u=r.padding,c=r.boundary,f=r.rootBoundary,d=r.altBoundary,g=r.flipVariations,m=g===void 0?!0:g,y=r.allowedAutoPlacements,E=e.options.placement,_=Wr(E),S=_===E,v=l||(S||!m?[Rl(E)]:hF(E)),A=[E].concat(v).reduce(function(de,ge){return de.concat(Wr(ge)===ec?dF(e,{placement:ge,boundary:c,rootBoundary:f,padding:u,flipVariations:m,allowedAutoPlacements:y}):ge)},[]),k=e.rects.reference,x=e.rects.popper,D=new Map,N=!0,B=A[0],q=0;q<A.length;q++){var K=A[q],C=Wr(K),M=Gs(K)===Qi,L=[Nt,er].indexOf(C)>=0,H=L?"width":"height",G=Ks(e,{placement:K,boundary:c,rootBoundary:f,altBoundary:d,padding:u}),z=L?M?tr:Dt:M?er:Nt;k[H]>x[H]&&(z=Rl(z));var F=Rl(z),ne=[];if(i&&ne.push(G[C]<=0),a&&ne.push(G[z]<=0,G[F]<=0),ne.every(function(de){return de})){B=K,N=!1;break}D.set(K,ne)}if(N)for(var ce=m?3:1,re=function(ge){var pe=A.find(function(X){var Y=D.get(X);if(Y)return Y.slice(0,ge).every(function(ie){return ie})});if(pe)return B=pe,"break"},R=ce;R>0;R--){var Q=re(R);if(Q==="break")break}e.placement!==B&&(e.modifiersData[n]._skip=!0,e.placement=B,e.reset=!0)}}const hS={name:"flip",enabled:!0,phase:"main",fn:pF,requiresIfExists:["offset"],data:{_skip:!1}};function uy(t,e,r){return r===void 0&&(r={x:0,y:0}),{top:t.top-e.height-r.y,right:t.right-e.width+r.x,bottom:t.bottom-e.height+r.y,left:t.left-e.width-r.x}}function cy(t){return[Nt,tr,er,Dt].some(function(e){return t[e]>=0})}function gF(t){var e=t.state,r=t.name,n=e.rects.reference,s=e.rects.popper,i=e.modifiersData.preventOverflow,o=Ks(e,{elementContext:"reference"}),a=Ks(e,{altBoundary:!0}),l=uy(o,n),u=uy(a,s,i),c=cy(l),f=cy(u);e.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":f})}const pS={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:gF};function mF(t,e,r){var n=Wr(t),s=[Dt,Nt].indexOf(n)>=0?-1:1,i=typeof r=="function"?r(Object.assign({},e,{placement:t})):r,o=i[0],a=i[1];return o=o||0,a=(a||0)*s,[Dt,tr].indexOf(n)>=0?{x:a,y:o}:{x:o,y:a}}function bF(t){var e=t.state,r=t.options,n=t.name,s=r.offset,i=s===void 0?[0,0]:s,o=Sg.reduce(function(c,f){return c[f]=mF(f,e.rects,i),c},{}),a=o[e.placement],l=a.x,u=a.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=u),e.modifiersData[n]=o}const gS={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:bF};function yF(t){var e=t.state,r=t.name;e.modifiersData[r]=dS({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const kg={name:"popperOffsets",enabled:!0,phase:"read",fn:yF,data:{}};function wF(t){return t==="x"?"y":"x"}function vF(t){var e=t.state,r=t.options,n=t.name,s=r.mainAxis,i=s===void 0?!0:s,o=r.altAxis,a=o===void 0?!1:o,l=r.boundary,u=r.rootBoundary,c=r.altBoundary,f=r.padding,d=r.tether,g=d===void 0?!0:d,m=r.tetherOffset,y=m===void 0?0:m,E=Ks(e,{boundary:l,rootBoundary:u,padding:f,altBoundary:c}),_=Wr(e.placement),S=Gs(e.placement),v=!S,A=Cg(_),k=wF(A),x=e.modifiersData.popperOffsets,D=e.rects.reference,N=e.rects.popper,B=typeof y=="function"?y(Object.assign({},e.rects,{placement:e.placement})):y,q=typeof B=="number"?{mainAxis:B,altAxis:B}:Object.assign({mainAxis:0,altAxis:0},B),K=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,C={x:0,y:0};if(x){if(i){var M,L=A==="y"?Nt:Dt,H=A==="y"?er:tr,G=A==="y"?"height":"width",z=x[A],F=z+E[L],ne=z-E[H],ce=g?-N[G]/2:0,re=S===Qi?D[G]:N[G],R=S===Qi?-N[G]:-D[G],Q=e.elements.arrow,de=g&&Q?Ag(Q):{width:0,height:0},ge=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:aS(),pe=ge[L],X=ge[H],Y=Ko(0,D[G],de[G]),ie=v?D[G]/2-ce-Y-pe-q.mainAxis:re-Y-pe-q.mainAxis,be=v?-D[G]/2+ce+Y+X+q.mainAxis:R+Y+X+q.mainAxis,he=e.elements.arrow&&Ea(e.elements.arrow),ue=he?A==="y"?he.clientTop||0:he.clientLeft||0:0,I=(M=K==null?void 0:K[A])!=null?M:0,P=z+ie-I-ue,O=z+be-I,j=Ko(g?fu(F,P):F,z,g?Vi(ne,O):ne);x[A]=j,C[A]=j-z}if(a){var W,le=A==="x"?Nt:Dt,fe=A==="x"?er:tr,V=x[k],te=k==="y"?"height":"width",$=V+E[le],J=V-E[fe],ae=[Nt,Dt].indexOf(_)!==-1,me=(W=K==null?void 0:K[k])!=null?W:0,w=ae?$:V-D[te]-N[te]-me+q.altAxis,p=ae?V+D[te]+N[te]-me-q.altAxis:J,h=g&&ae?Q$(w,V,p):Ko(g?w:$,V,g?p:J);x[k]=h,C[k]=h-V}e.modifiersData[n]=C}}const mS={name:"preventOverflow",enabled:!0,phase:"main",fn:vF,requiresIfExists:["offset"]};function _F(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function EF(t){return t===rr(t)||!cr(t)?Og(t):_F(t)}function SF(t){var e=t.getBoundingClientRect(),r=qs(e.width)/t.offsetWidth||1,n=qs(e.height)/t.offsetHeight||1;return r!==1||n!==1}function TF(t,e,r){r===void 0&&(r=!1);var n=cr(e),s=cr(e)&&SF(e),i=ai(e),o=Ys(t,s,r),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!r)&&((qr(e)!=="body"||Pg(i))&&(a=EF(e)),cr(e)?(l=Ys(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):i&&(l.x=Rg(i))),{x:o.left+a.scrollLeft-l.x,y:o.top+a.scrollTop-l.y,width:o.width,height:o.height}}function xF(t){var e=new Map,r=new Set,n=[];t.forEach(function(i){e.set(i.name,i)});function s(i){r.add(i.name);var o=[].concat(i.requires||[],i.requiresIfExists||[]);o.forEach(function(a){if(!r.has(a)){var l=e.get(a);l&&s(l)}}),n.push(i)}return t.forEach(function(i){r.has(i.name)||s(i)}),n}function AF(t){var e=xF(t);return iS.reduce(function(r,n){return r.concat(e.filter(function(s){return s.phase===n}))},[])}function CF(t){var e;return function(){return e||(e=new Promise(function(r){Promise.resolve().then(function(){e=void 0,r(t())})})),e}}function IF(t){var e=t.reduce(function(r,n){var s=r[n.name];return r[n.name]=s?Object.assign({},s,n,{options:Object.assign({},s.options,n.options),data:Object.assign({},s.data,n.data)}):n,r},{});return Object.keys(e).map(function(r){return e[r]})}var fy={placement:"bottom",modifiers:[],strategy:"absolute"};function dy(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return!e.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function rc(t){t===void 0&&(t={});var e=t,r=e.defaultModifiers,n=r===void 0?[]:r,s=e.defaultOptions,i=s===void 0?fy:s;return function(a,l,u){u===void 0&&(u=i);var c={placement:"bottom",orderedModifiers:[],options:Object.assign({},fy,i),modifiersData:{},elements:{reference:a,popper:l},attributes:{},styles:{}},f=[],d=!1,g={state:c,setOptions:function(_){var S=typeof _=="function"?_(c.options):_;y(),c.options=Object.assign({},i,c.options,S),c.scrollParents={reference:Ji(a)?Xo(a):a.contextElement?Xo(a.contextElement):[],popper:Xo(l)};var v=AF(IF([].concat(n,c.options.modifiers)));return c.orderedModifiers=v.filter(function(A){return A.enabled}),m(),g.update()},forceUpdate:function(){if(!d){var _=c.elements,S=_.reference,v=_.popper;if(dy(S,v)){c.rects={reference:TF(S,Ea(v),c.options.strategy==="fixed"),popper:Ag(v)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(q){return c.modifiersData[q.name]=Object.assign({},q.data)});for(var A=0;A<c.orderedModifiers.length;A++){if(c.reset===!0){c.reset=!1,A=-1;continue}var k=c.orderedModifiers[A],x=k.fn,D=k.options,N=D===void 0?{}:D,B=k.name;typeof x=="function"&&(c=x({state:c,options:N,name:B,instance:g})||c)}}}},update:CF(function(){return new Promise(function(E){g.forceUpdate(),E(c)})}),destroy:function(){y(),d=!0}};if(!dy(a,l))return g;g.setOptions(u).then(function(E){!d&&u.onFirstUpdate&&u.onFirstUpdate(E)});function m(){c.orderedModifiers.forEach(function(E){var _=E.name,S=E.options,v=S===void 0?{}:S,A=E.effect;if(typeof A=="function"){var k=A({state:c,name:_,instance:g,options:v}),x=function(){};f.push(k||x)}})}function y(){f.forEach(function(E){return E()}),f=[]}return g}}var MF=rc(),OF=[Mg,kg,Ig,xg],RF=rc({defaultModifiers:OF}),PF=[Mg,kg,Ig,xg,gS,hS,mS,cS,pS],Lg=rc({defaultModifiers:PF});const bS=Object.freeze(Object.defineProperty({__proto__:null,afterMain:eS,afterRead:Q1,afterWrite:nS,applyStyles:xg,arrow:cS,auto:ec,basePlacements:oo,beforeMain:J1,beforeRead:K1,beforeWrite:tS,bottom:er,clippingParents:Y1,computeStyles:Ig,createPopper:Lg,createPopperBase:MF,createPopperLite:RF,detectOverflow:Ks,end:Vs,eventListeners:Mg,flip:hS,hide:pS,left:Dt,main:Z1,modifierPhases:iS,offset:gS,placements:Sg,popper:Es,popperGenerator:rc,popperOffsets:kg,preventOverflow:mS,read:X1,reference:G1,right:tr,start:Qi,top:Nt,variationPlacements:Qh,viewport:Eg,write:rS},Symbol.toStringTag,{value:"Module"}));/*!
-  * Bootstrap v5.3.3 (https://getbootstrap.com/)
-  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
-  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-  */const Dn=new Map,vf={set(t,e,r){Dn.has(t)||Dn.set(t,new Map);const n=Dn.get(t);if(!n.has(e)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(e,r)},get(t,e){return Dn.has(t)&&Dn.get(t).get(e)||null},remove(t,e){if(!Dn.has(t))return;const r=Dn.get(t);r.delete(e),r.size===0&&Dn.delete(t)}},kF=1e6,LF=1e3,ep="transitionend",yS=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(e,r)=>`#${CSS.escape(r)}`)),t),NF=t=>t==null?`${t}`:Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),DF=t=>{do t+=Math.floor(Math.random()*kF);while(document.getElementById(t));return t},BF=t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:r}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(r);return!n&&!s?0:(e=e.split(",")[0],r=r.split(",")[0],(Number.parseFloat(e)+Number.parseFloat(r))*LF)},wS=t=>{t.dispatchEvent(new Event(ep))},gn=t=>!t||typeof t!="object"?!1:(typeof t.jquery<"u"&&(t=t[0]),typeof t.nodeType<"u"),ei=t=>gn(t)?t.jquery?t[0]:t:typeof t=="string"&&t.length>0?document.querySelector(yS(t)):null,ao=t=>{if(!gn(t)||t.getClientRects().length===0)return!1;const e=getComputedStyle(t).getPropertyValue("visibility")==="visible",r=t.closest("details:not([open])");if(!r)return e;if(r!==t){const n=t.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return e},ti=t=>!t||t.nodeType!==Node.ELEMENT_NODE||t.classList.contains("disabled")?!0:typeof t.disabled<"u"?t.disabled:t.hasAttribute("disabled")&&t.getAttribute("disabled")!=="false",vS=t=>{if(!document.documentElement.attachShadow)return null;if(typeof t.getRootNode=="function"){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?vS(t.parentNode):null},du=()=>{},Sa=t=>{t.offsetHeight},_S=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,_f=[],$F=t=>{document.readyState==="loading"?(_f.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of _f)e()}),_f.push(t)):t()},fr=()=>document.documentElement.dir==="rtl",pr=t=>{$F(()=>{const e=_S();if(e){const r=t.NAME,n=e.fn[r];e.fn[r]=t.jQueryInterface,e.fn[r].Constructor=t,e.fn[r].noConflict=()=>(e.fn[r]=n,t.jQueryInterface)}})},jt=(t,e=[],r=t)=>typeof t=="function"?t(...e):r,ES=(t,e,r=!0)=>{if(!r){jt(t);return}const s=BF(e)+5;let i=!1;const o=({target:a})=>{a===e&&(i=!0,e.removeEventListener(ep,o),jt(t))};e.addEventListener(ep,o),setTimeout(()=>{i||wS(e)},s)},Ng=(t,e,r,n)=>{const s=t.length;let i=t.indexOf(e);return i===-1?!r&&n?t[s-1]:t[0]:(i+=r?1:-1,n&&(i=(i+s)%s),t[Math.max(0,Math.min(i,s-1))])},FF=/[^.]*(?=\..*)\.|.*/,UF=/\..*/,jF=/::\d+$/,Ef={};let hy=1;const SS={mouseenter:"mouseover",mouseleave:"mouseout"},WF=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function TS(t,e){return e&&`${e}::${hy++}`||t.uidEvent||hy++}function xS(t){const e=TS(t);return t.uidEvent=e,Ef[e]=Ef[e]||{},Ef[e]}function zF(t,e){return function r(n){return Dg(n,{delegateTarget:t}),r.oneOff&&Se.off(t,n.type,e),e.apply(t,[n])}}function HF(t,e,r){return function n(s){const i=t.querySelectorAll(e);for(let{target:o}=s;o&&o!==this;o=o.parentNode)for(const a of i)if(a===o)return Dg(s,{delegateTarget:o}),n.oneOff&&Se.off(t,s.type,e,r),r.apply(o,[s])}}function AS(t,e,r=null){return Object.values(t).find(n=>n.callable===e&&n.delegationSelector===r)}function CS(t,e,r){const n=typeof e=="string",s=n?r:e||r;let i=IS(t);return WF.has(i)||(i=t),[n,s,i]}function py(t,e,r,n,s){if(typeof e!="string"||!t)return;let[i,o,a]=CS(e,r,n);e in SS&&(o=(m=>function(y){if(!y.relatedTarget||y.relatedTarget!==y.delegateTarget&&!y.delegateTarget.contains(y.relatedTarget))return m.call(this,y)})(o));const l=xS(t),u=l[a]||(l[a]={}),c=AS(u,o,i?r:null);if(c){c.oneOff=c.oneOff&&s;return}const f=TS(o,e.replace(FF,"")),d=i?HF(t,r,o):zF(t,o);d.delegationSelector=i?r:null,d.callable=o,d.oneOff=s,d.uidEvent=f,u[f]=d,t.addEventListener(a,d,i)}function tp(t,e,r,n,s){const i=AS(e[r],n,s);i&&(t.removeEventListener(r,i,!!s),delete e[r][i.uidEvent])}function VF(t,e,r,n){const s=e[r]||{};for(const[i,o]of Object.entries(s))i.includes(n)&&tp(t,e,r,o.callable,o.delegationSelector)}function IS(t){return t=t.replace(UF,""),SS[t]||t}const Se={on(t,e,r,n){py(t,e,r,n,!1)},one(t,e,r,n){py(t,e,r,n,!0)},off(t,e,r,n){if(typeof e!="string"||!t)return;const[s,i,o]=CS(e,r,n),a=o!==e,l=xS(t),u=l[o]||{},c=e.startsWith(".");if(typeof i<"u"){if(!Object.keys(u).length)return;tp(t,l,o,i,s?r:null);return}if(c)for(const f of Object.keys(l))VF(t,l,f,e.slice(1));for(const[f,d]of Object.entries(u)){const g=f.replace(jF,"");(!a||e.includes(g))&&tp(t,l,o,d.callable,d.delegationSelector)}},trigger(t,e,r){if(typeof e!="string"||!t)return null;const n=_S(),s=IS(e),i=e!==s;let o=null,a=!0,l=!0,u=!1;i&&n&&(o=n.Event(e,r),n(t).trigger(o),a=!o.isPropagationStopped(),l=!o.isImmediatePropagationStopped(),u=o.isDefaultPrevented());const c=Dg(new Event(e,{bubbles:a,cancelable:!0}),r);return u&&c.preventDefault(),l&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function Dg(t,e={}){for(const[r,n]of Object.entries(e))try{t[r]=n}catch{Object.defineProperty(t,r,{configurable:!0,get(){return n}})}return t}function gy(t){if(t==="true")return!0;if(t==="false")return!1;if(t===Number(t).toString())return Number(t);if(t===""||t==="null")return null;if(typeof t!="string")return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function Sf(t){return t.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const mn={setDataAttribute(t,e,r){t.setAttribute(`data-bs-${Sf(e)}`,r)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${Sf(e)}`)},getDataAttributes(t){if(!t)return{};const e={},r=Object.keys(t.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(const n of r){let s=n.replace(/^bs/,"");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),e[s]=gy(t.dataset[n])}return e},getDataAttribute(t,e){return gy(t.getAttribute(`data-bs-${Sf(e)}`))}};class Ta{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,r){const n=gn(r)?mn.getDataAttribute(r,"config"):{};return{...this.constructor.Default,...typeof n=="object"?n:{},...gn(r)?mn.getDataAttributes(r):{},...typeof e=="object"?e:{}}}_typeCheckConfig(e,r=this.constructor.DefaultType){for(const[n,s]of Object.entries(r)){const i=e[n],o=gn(i)?"element":NF(i);if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}}}const qF="5.3.3";class Ir extends Ta{constructor(e,r){super(),e=ei(e),e&&(this._element=e,this._config=this._getConfig(r),vf.set(this._element,this.constructor.DATA_KEY,this))}dispose(){vf.remove(this._element,this.constructor.DATA_KEY),Se.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,r,n=!0){ES(e,r,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return vf.get(ei(e),this.DATA_KEY)}static getOrCreateInstance(e,r={}){return this.getInstance(e)||new this(e,typeof r=="object"?r:null)}static get VERSION(){return qF}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const Tf=t=>{let e=t.getAttribute("data-bs-target");if(!e||e==="#"){let r=t.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),e=r&&r!=="#"?r.trim():null}return e?e.split(",").map(r=>yS(r)).join(","):null},Le={find(t,e=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t,e=document.documentElement){return Element.prototype.querySelector.call(e,t)},children(t,e){return[].concat(...t.children).filter(r=>r.matches(e))},parents(t,e){const r=[];let n=t.parentNode.closest(e);for(;n;)r.push(n),n=n.parentNode.closest(e);return r},prev(t,e){let r=t.previousElementSibling;for(;r;){if(r.matches(e))return[r];r=r.previousElementSibling}return[]},next(t,e){let r=t.nextElementSibling;for(;r;){if(r.matches(e))return[r];r=r.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(e,t).filter(r=>!ti(r)&&ao(r))},getSelectorFromElement(t){const e=Tf(t);return e&&Le.findOne(e)?e:null},getElementFromSelector(t){const e=Tf(t);return e?Le.findOne(e):null},getMultipleElementsFromSelector(t){const e=Tf(t);return e?Le.find(e):[]}},nc=(t,e="hide")=>{const r=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;Se.on(document,r,`[data-bs-dismiss="${n}"]`,function(s){if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),ti(this))return;const i=Le.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(i)[e]()})},YF="alert",GF="bs.alert",MS=`.${GF}`,KF=`close${MS}`,XF=`closed${MS}`,QF="fade",JF="show";class ic extends Ir{static get NAME(){return YF}close(){if(Se.trigger(this._element,KF).defaultPrevented)return;this._element.classList.remove(JF);const r=this._element.classList.contains(QF);this._queueCallback(()=>this._destroyElement(),this._element,r)}_destroyElement(){this._element.remove(),Se.trigger(this._element,XF),this.dispose()}static jQueryInterface(e){return this.each(function(){const r=ic.getOrCreateInstance(this);if(typeof e=="string"){if(r[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);r[e](this)}})}}nc(ic,"close");pr(ic);const ZF="button",eU="bs.button",tU=`.${eU}`,rU=".data-api",nU="active",my='[data-bs-toggle="button"]',iU=`click${tU}${rU}`;class sc extends Ir{static get NAME(){return ZF}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(nU))}static jQueryInterface(e){return this.each(function(){const r=sc.getOrCreateInstance(this);e==="toggle"&&r[e]()})}}Se.on(document,iU,my,t=>{t.preventDefault();const e=t.target.closest(my);sc.getOrCreateInstance(e).toggle()});pr(sc);const sU="swipe",lo=".bs.swipe",oU=`touchstart${lo}`,aU=`touchmove${lo}`,lU=`touchend${lo}`,uU=`pointerdown${lo}`,cU=`pointerup${lo}`,fU="touch",dU="pen",hU="pointer-event",pU=40,gU={endCallback:null,leftCallback:null,rightCallback:null},mU={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class hu extends Ta{constructor(e,r){super(),this._element=e,!(!e||!hu.isSupported())&&(this._config=this._getConfig(r),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return gU}static get DefaultType(){return mU}static get NAME(){return sU}dispose(){Se.off(this._element,lo)}_start(e){if(!this._supportPointerEvents){this._deltaX=e.touches[0].clientX;return}this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),jt(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=pU)return;const r=e/this._deltaX;this._deltaX=0,r&&jt(r>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(Se.on(this._element,uU,e=>this._start(e)),Se.on(this._element,cU,e=>this._end(e)),this._element.classList.add(hU)):(Se.on(this._element,oU,e=>this._start(e)),Se.on(this._element,aU,e=>this._move(e)),Se.on(this._element,lU,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&(e.pointerType===dU||e.pointerType===fU)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const bU="carousel",yU="bs.carousel",li=`.${yU}`,OS=".data-api",wU="ArrowLeft",vU="ArrowRight",_U=500,Ao="next",bs="prev",Ss="left",Pl="right",EU=`slide${li}`,xf=`slid${li}`,SU=`keydown${li}`,TU=`mouseenter${li}`,xU=`mouseleave${li}`,AU=`dragstart${li}`,CU=`load${li}${OS}`,IU=`click${li}${OS}`,RS="carousel",Ja="active",MU="slide",OU="carousel-item-end",RU="carousel-item-start",PU="carousel-item-next",kU="carousel-item-prev",PS=".active",kS=".carousel-item",LU=PS+kS,NU=".carousel-item img",DU=".carousel-indicators",BU="[data-bs-slide], [data-bs-slide-to]",$U='[data-bs-ride="carousel"]',FU={[wU]:Pl,[vU]:Ss},UU={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},jU={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xa extends Ir{constructor(e,r){super(e,r),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Le.findOne(DU,this._element),this._addEventListeners(),this._config.ride===RS&&this.cycle()}static get Default(){return UU}static get DefaultType(){return jU}static get NAME(){return bU}next(){this._slide(Ao)}nextWhenVisible(){!document.hidden&&ao(this._element)&&this.next()}prev(){this._slide(bs)}pause(){this._isSliding&&wS(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){Se.one(this._element,xf,()=>this.cycle());return}this.cycle()}}to(e){const r=this._getItems();if(e>r.length-1||e<0)return;if(this._isSliding){Se.one(this._element,xf,()=>this.to(e));return}const n=this._getItemIndex(this._getActive());if(n===e)return;const s=e>n?Ao:bs;this._slide(s,r[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&Se.on(this._element,SU,e=>this._keydown(e)),this._config.pause==="hover"&&(Se.on(this._element,TU,()=>this.pause()),Se.on(this._element,xU,()=>this._maybeEnableCycle())),this._config.touch&&hu.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const n of Le.find(NU,this._element))Se.on(n,AU,s=>s.preventDefault());const r={leftCallback:()=>this._slide(this._directionToOrder(Ss)),rightCallback:()=>this._slide(this._directionToOrder(Pl)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),_U+this._config.interval))}};this._swipeHelper=new hu(this._element,r)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const r=FU[e.key];r&&(e.preventDefault(),this._slide(this._directionToOrder(r)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const r=Le.findOne(PS,this._indicatorsElement);r.classList.remove(Ja),r.removeAttribute("aria-current");const n=Le.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add(Ja),n.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const r=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=r||this._config.defaultInterval}_slide(e,r=null){if(this._isSliding)return;const n=this._getActive(),s=e===Ao,i=r||Ng(this._getItems(),n,s,this._config.wrap);if(i===n)return;const o=this._getItemIndex(i),a=g=>Se.trigger(this._element,g,{relatedTarget:i,direction:this._orderToDirection(e),from:this._getItemIndex(n),to:o});if(a(EU).defaultPrevented||!n||!i)return;const u=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=i;const c=s?RU:OU,f=s?PU:kU;i.classList.add(f),Sa(i),n.classList.add(c),i.classList.add(c);const d=()=>{i.classList.remove(c,f),i.classList.add(Ja),n.classList.remove(Ja,f,c),this._isSliding=!1,a(xf)};this._queueCallback(d,n,this._isAnimated()),u&&this.cycle()}_isAnimated(){return this._element.classList.contains(MU)}_getActive(){return Le.findOne(LU,this._element)}_getItems(){return Le.find(kS,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return fr()?e===Ss?bs:Ao:e===Ss?Ao:bs}_orderToDirection(e){return fr()?e===bs?Ss:Pl:e===bs?Pl:Ss}static jQueryInterface(e){return this.each(function(){const r=xa.getOrCreateInstance(this,e);if(typeof e=="number"){r.to(e);return}if(typeof e=="string"){if(r[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);r[e]()}})}}Se.on(document,IU,BU,function(t){const e=Le.getElementFromSelector(this);if(!e||!e.classList.contains(RS))return;t.preventDefault();const r=xa.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");if(n){r.to(n),r._maybeEnableCycle();return}if(mn.getDataAttribute(this,"slide")==="next"){r.next(),r._maybeEnableCycle();return}r.prev(),r._maybeEnableCycle()});Se.on(window,CU,()=>{const t=Le.find($U);for(const e of t)xa.getOrCreateInstance(e)});pr(xa);const WU="collapse",zU="bs.collapse",Aa=`.${zU}`,HU=".data-api",VU=`show${Aa}`,qU=`shown${Aa}`,YU=`hide${Aa}`,GU=`hidden${Aa}`,KU=`click${Aa}${HU}`,Af="show",Is="collapse",Za="collapsing",XU="collapsed",QU=`:scope .${Is} .${Is}`,JU="collapse-horizontal",ZU="width",e3="height",t3=".collapse.show, .collapse.collapsing",rp='[data-bs-toggle="collapse"]',r3={parent:null,toggle:!0},n3={parent:"(null|element)",toggle:"boolean"};class ua extends Ir{constructor(e,r){super(e,r),this._isTransitioning=!1,this._triggerArray=[];const n=Le.find(rp);for(const s of n){const i=Le.getSelectorFromElement(s),o=Le.find(i).filter(a=>a===this._element);i!==null&&o.length&&this._triggerArray.push(s)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return r3}static get DefaultType(){return n3}static get NAME(){return WU}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(t3).filter(a=>a!==this._element).map(a=>ua.getOrCreateInstance(a,{toggle:!1}))),e.length&&e[0]._isTransitioning||Se.trigger(this._element,VU).defaultPrevented)return;for(const a of e)a.hide();const n=this._getDimension();this._element.classList.remove(Is),this._element.classList.add(Za),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=()=>{this._isTransitioning=!1,this._element.classList.remove(Za),this._element.classList.add(Is,Af),this._element.style[n]="",Se.trigger(this._element,qU)},o=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(s,this._element,!0),this._element.style[n]=`${this._element[o]}px`}hide(){if(this._isTransitioning||!this._isShown()||Se.trigger(this._element,YU).defaultPrevented)return;const r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,Sa(this._element),this._element.classList.add(Za),this._element.classList.remove(Is,Af);for(const s of this._triggerArray){const i=Le.getElementFromSelector(s);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([s],!1)}this._isTransitioning=!0;const n=()=>{this._isTransitioning=!1,this._element.classList.remove(Za),this._element.classList.add(Is),Se.trigger(this._element,GU)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(e=this._element){return e.classList.contains(Af)}_configAfterMerge(e){return e.toggle=!!e.toggle,e.parent=ei(e.parent),e}_getDimension(){return this._element.classList.contains(JU)?ZU:e3}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(rp);for(const r of e){const n=Le.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(e){const r=Le.find(QU,this._config.parent);return Le.find(e,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(e,r){if(e.length)for(const n of e)n.classList.toggle(XU,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(e){const r={};return typeof e=="string"&&/show|hide/.test(e)&&(r.toggle=!1),this.each(function(){const n=ua.getOrCreateInstance(this,r);if(typeof e=="string"){if(typeof n[e]>"u")throw new TypeError(`No method named "${e}"`);n[e]()}})}}Se.on(document,KU,rp,function(t){(t.target.tagName==="A"||t.delegateTarget&&t.delegateTarget.tagName==="A")&&t.preventDefault();for(const e of Le.getMultipleElementsFromSelector(this))ua.getOrCreateInstance(e,{toggle:!1}).toggle()});pr(ua);const by="dropdown",i3="bs.dropdown",fs=`.${i3}`,Bg=".data-api",s3="Escape",yy="Tab",o3="ArrowUp",wy="ArrowDown",a3=2,l3=`hide${fs}`,u3=`hidden${fs}`,c3=`show${fs}`,f3=`shown${fs}`,LS=`click${fs}${Bg}`,NS=`keydown${fs}${Bg}`,d3=`keyup${fs}${Bg}`,Ts="show",h3="dropup",p3="dropend",g3="dropstart",m3="dropup-center",b3="dropdown-center",Ni='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',y3=`${Ni}.${Ts}`,kl=".dropdown-menu",w3=".navbar",v3=".navbar-nav",_3=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",E3=fr()?"top-end":"top-start",S3=fr()?"top-start":"top-end",T3=fr()?"bottom-end":"bottom-start",x3=fr()?"bottom-start":"bottom-end",A3=fr()?"left-start":"right-start",C3=fr()?"right-start":"left-start",I3="top",M3="bottom",O3={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},R3={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class zr extends Ir{constructor(e,r){super(e,r),this._popper=null,this._parent=this._element.parentNode,this._menu=Le.next(this._element,kl)[0]||Le.prev(this._element,kl)[0]||Le.findOne(kl,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return O3}static get DefaultType(){return R3}static get NAME(){return by}toggle(){return this._isShown()?this.hide():this.show()}show(){if(ti(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!Se.trigger(this._element,c3,e).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(v3))for(const n of[].concat(...document.body.children))Se.on(n,"mouseover",du);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Ts),this._element.classList.add(Ts),Se.trigger(this._element,f3,e)}}hide(){if(ti(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){if(!Se.trigger(this._element,l3,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))Se.off(n,"mouseover",du);this._popper&&this._popper.destroy(),this._menu.classList.remove(Ts),this._element.classList.remove(Ts),this._element.setAttribute("aria-expanded","false"),mn.removeDataAttribute(this._menu,"popper"),Se.trigger(this._element,u3,e)}}_getConfig(e){if(e=super._getConfig(e),typeof e.reference=="object"&&!gn(e.reference)&&typeof e.reference.getBoundingClientRect!="function")throw new TypeError(`${by.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){if(typeof bS>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;this._config.reference==="parent"?e=this._parent:gn(this._config.reference)?e=ei(this._config.reference):typeof this._config.reference=="object"&&(e=this._config.reference);const r=this._getPopperConfig();this._popper=Lg(e,this._menu,r)}_isShown(){return this._menu.classList.contains(Ts)}_getPlacement(){const e=this._parent;if(e.classList.contains(p3))return A3;if(e.classList.contains(g3))return C3;if(e.classList.contains(m3))return I3;if(e.classList.contains(b3))return M3;const r=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return e.classList.contains(h3)?r?S3:E3:r?x3:T3}_detectNavbar(){return this._element.closest(w3)!==null}_getOffset(){const{offset:e}=this._config;return typeof e=="string"?e.split(",").map(r=>Number.parseInt(r,10)):typeof e=="function"?r=>e(r,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(mn.setDataAttribute(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,...jt(this._config.popperConfig,[e])}}_selectMenuItem({key:e,target:r}){const n=Le.find(_3,this._menu).filter(s=>ao(s));n.length&&Ng(n,r,e===wy,!n.includes(r)).focus()}static jQueryInterface(e){return this.each(function(){const r=zr.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof r[e]>"u")throw new TypeError(`No method named "${e}"`);r[e]()}})}static clearMenus(e){if(e.button===a3||e.type==="keyup"&&e.key!==yy)return;const r=Le.find(y3);for(const n of r){const s=zr.getInstance(n);if(!s||s._config.autoClose===!1)continue;const i=e.composedPath(),o=i.includes(s._menu);if(i.includes(s._element)||s._config.autoClose==="inside"&&!o||s._config.autoClose==="outside"&&o||s._menu.contains(e.target)&&(e.type==="keyup"&&e.key===yy||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const a={relatedTarget:s._element};e.type==="click"&&(a.clickEvent=e),s._completeHide(a)}}static dataApiKeydownHandler(e){const r=/input|textarea/i.test(e.target.tagName),n=e.key===s3,s=[o3,wy].includes(e.key);if(!s&&!n||r&&!n)return;e.preventDefault();const i=this.matches(Ni)?this:Le.prev(this,Ni)[0]||Le.next(this,Ni)[0]||Le.findOne(Ni,e.delegateTarget.parentNode),o=zr.getOrCreateInstance(i);if(s){e.stopPropagation(),o.show(),o._selectMenuItem(e);return}o._isShown()&&(e.stopPropagation(),o.hide(),i.focus())}}Se.on(document,NS,Ni,zr.dataApiKeydownHandler);Se.on(document,NS,kl,zr.dataApiKeydownHandler);Se.on(document,LS,zr.clearMenus);Se.on(document,d3,zr.clearMenus);Se.on(document,LS,Ni,function(t){t.preventDefault(),zr.getOrCreateInstance(this).toggle()});pr(zr);const DS="backdrop",P3="fade",vy="show",_y=`mousedown.bs.${DS}`,k3={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},L3={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class BS extends Ta{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return k3}static get DefaultType(){return L3}static get NAME(){return DS}show(e){if(!this._config.isVisible){jt(e);return}this._append();const r=this._getElement();this._config.isAnimated&&Sa(r),r.classList.add(vy),this._emulateAnimation(()=>{jt(e)})}hide(e){if(!this._config.isVisible){jt(e);return}this._getElement().classList.remove(vy),this._emulateAnimation(()=>{this.dispose(),jt(e)})}dispose(){this._isAppended&&(Se.off(this._element,_y),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add(P3),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=ei(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),Se.on(e,_y,()=>{jt(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){ES(e,this._getElement(),this._config.isAnimated)}}const N3="focustrap",D3="bs.focustrap",pu=`.${D3}`,B3=`focusin${pu}`,$3=`keydown.tab${pu}`,F3="Tab",U3="forward",Ey="backward",j3={autofocus:!0,trapElement:null},W3={autofocus:"boolean",trapElement:"element"};class $S extends Ta{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return j3}static get DefaultType(){return W3}static get NAME(){return N3}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),Se.off(document,pu),Se.on(document,B3,e=>this._handleFocusin(e)),Se.on(document,$3,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,Se.off(document,pu))}_handleFocusin(e){const{trapElement:r}=this._config;if(e.target===document||e.target===r||r.contains(e.target))return;const n=Le.focusableChildren(r);n.length===0?r.focus():this._lastTabNavDirection===Ey?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){e.key===F3&&(this._lastTabNavDirection=e.shiftKey?Ey:U3)}}const Sy=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Ty=".sticky-top",el="padding-right",xy="margin-right";class np{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,el,r=>r+e),this._setElementAttributes(Sy,el,r=>r+e),this._setElementAttributes(Ty,xy,r=>r-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,el),this._resetElementAttributes(Sy,el),this._resetElementAttributes(Ty,xy)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,r,n){const s=this.getWidth(),i=o=>{if(o!==this._element&&window.innerWidth>o.clientWidth+s)return;this._saveInitialAttribute(o,r);const a=window.getComputedStyle(o).getPropertyValue(r);o.style.setProperty(r,`${n(Number.parseFloat(a))}px`)};this._applyManipulationCallback(e,i)}_saveInitialAttribute(e,r){const n=e.style.getPropertyValue(r);n&&mn.setDataAttribute(e,r,n)}_resetElementAttributes(e,r){const n=s=>{const i=mn.getDataAttribute(s,r);if(i===null){s.style.removeProperty(r);return}mn.removeDataAttribute(s,r),s.style.setProperty(r,i)};this._applyManipulationCallback(e,n)}_applyManipulationCallback(e,r){if(gn(e)){r(e);return}for(const n of Le.find(e,this._element))r(n)}}const z3="modal",H3="bs.modal",dr=`.${H3}`,V3=".data-api",q3="Escape",Y3=`hide${dr}`,G3=`hidePrevented${dr}`,FS=`hidden${dr}`,US=`show${dr}`,K3=`shown${dr}`,X3=`resize${dr}`,Q3=`click.dismiss${dr}`,J3=`mousedown.dismiss${dr}`,Z3=`keydown.dismiss${dr}`,e8=`click${dr}${V3}`,Ay="modal-open",t8="fade",Cy="show",Cf="modal-static",r8=".modal.show",n8=".modal-dialog",i8=".modal-body",s8='[data-bs-toggle="modal"]',o8={backdrop:!0,focus:!0,keyboard:!0},a8={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Xs extends Ir{constructor(e,r){super(e,r),this._dialog=Le.findOne(n8,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new np,this._addEventListeners()}static get Default(){return o8}static get DefaultType(){return a8}static get NAME(){return z3}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||this._isTransitioning||Se.trigger(this._element,US,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ay),this._adjustDialog(),this._backdrop.show(()=>this._showElement(e)))}hide(){!this._isShown||this._isTransitioning||Se.trigger(this._element,Y3).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Cy),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){Se.off(window,dr),Se.off(this._dialog,dr),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new BS({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new $S({trapElement:this._element})}_showElement(e){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const r=Le.findOne(i8,this._dialog);r&&(r.scrollTop=0),Sa(this._element),this._element.classList.add(Cy);const n=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,Se.trigger(this._element,K3,{relatedTarget:e})};this._queueCallback(n,this._dialog,this._isAnimated())}_addEventListeners(){Se.on(this._element,Z3,e=>{if(e.key===q3){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),Se.on(window,X3,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),Se.on(this._element,J3,e=>{Se.one(this._element,Q3,r=>{if(!(this._element!==e.target||this._element!==r.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Ay),this._resetAdjustments(),this._scrollBar.reset(),Se.trigger(this._element,FS)})}_isAnimated(){return this._element.classList.contains(t8)}_triggerBackdropTransition(){if(Se.trigger(this._element,G3).defaultPrevented)return;const r=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;n==="hidden"||this._element.classList.contains(Cf)||(r||(this._element.style.overflowY="hidden"),this._element.classList.add(Cf),this._queueCallback(()=>{this._element.classList.remove(Cf),this._queueCallback(()=>{this._element.style.overflowY=n},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,r=this._scrollBar.getWidth(),n=r>0;if(n&&!e){const s=fr()?"paddingLeft":"paddingRight";this._element.style[s]=`${r}px`}if(!n&&e){const s=fr()?"paddingRight":"paddingLeft";this._element.style[s]=`${r}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,r){return this.each(function(){const n=Xs.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof n[e]>"u")throw new TypeError(`No method named "${e}"`);n[e](r)}})}}Se.on(document,e8,s8,function(t){const e=Le.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),Se.one(e,US,s=>{s.defaultPrevented||Se.one(e,FS,()=>{ao(this)&&this.focus()})});const r=Le.findOne(r8);r&&Xs.getInstance(r).hide(),Xs.getOrCreateInstance(e).toggle(this)});nc(Xs);pr(Xs);const l8="offcanvas",u8="bs.offcanvas",Ln=`.${u8}`,jS=".data-api",c8=`load${Ln}${jS}`,f8="Escape",Iy="show",My="showing",Oy="hiding",d8="offcanvas-backdrop",WS=".offcanvas.show",h8=`show${Ln}`,p8=`shown${Ln}`,g8=`hide${Ln}`,Ry=`hidePrevented${Ln}`,zS=`hidden${Ln}`,m8=`resize${Ln}`,b8=`click${Ln}${jS}`,y8=`keydown.dismiss${Ln}`,w8='[data-bs-toggle="offcanvas"]',v8={backdrop:!0,keyboard:!0,scroll:!1},_8={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class ri extends Ir{constructor(e,r){super(e,r),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return v8}static get DefaultType(){return _8}static get NAME(){return l8}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown||Se.trigger(this._element,h8,{relatedTarget:e}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new np().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(My);const n=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(Iy),this._element.classList.remove(My),Se.trigger(this._element,p8,{relatedTarget:e})};this._queueCallback(n,this._element,!0)}hide(){if(!this._isShown||Se.trigger(this._element,g8).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Oy),this._backdrop.hide();const r=()=>{this._element.classList.remove(Iy,Oy),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new np().reset(),Se.trigger(this._element,zS)};this._queueCallback(r,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=()=>{if(this._config.backdrop==="static"){Se.trigger(this._element,Ry);return}this.hide()},r=!!this._config.backdrop;return new BS({className:d8,isVisible:r,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:r?e:null})}_initializeFocusTrap(){return new $S({trapElement:this._element})}_addEventListeners(){Se.on(this._element,y8,e=>{if(e.key===f8){if(this._config.keyboard){this.hide();return}Se.trigger(this._element,Ry)}})}static jQueryInterface(e){return this.each(function(){const r=ri.getOrCreateInstance(this,e);if(typeof e=="string"){if(r[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);r[e](this)}})}}Se.on(document,b8,w8,function(t){const e=Le.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),ti(this))return;Se.one(e,zS,()=>{ao(this)&&this.focus()});const r=Le.findOne(WS);r&&r!==e&&ri.getInstance(r).hide(),ri.getOrCreateInstance(e).toggle(this)});Se.on(window,c8,()=>{for(const t of Le.find(WS))ri.getOrCreateInstance(t).show()});Se.on(window,m8,()=>{for(const t of Le.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(t).position!=="fixed"&&ri.getOrCreateInstance(t).hide()});nc(ri);pr(ri);const E8=/^aria-[\w-]*$/i,HS={"*":["class","dir","id","lang","role",E8],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},S8=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),T8=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,x8=(t,e)=>{const r=t.nodeName.toLowerCase();return e.includes(r)?S8.has(r)?!!T8.test(t.nodeValue):!0:e.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function A8(t,e,r){if(!t.length)return t;if(r&&typeof r=="function")return r(t);const s=new window.DOMParser().parseFromString(t,"text/html"),i=[].concat(...s.body.querySelectorAll("*"));for(const o of i){const a=o.nodeName.toLowerCase();if(!Object.keys(e).includes(a)){o.remove();continue}const l=[].concat(...o.attributes),u=[].concat(e["*"]||[],e[a]||[]);for(const c of l)x8(c,u)||o.removeAttribute(c.nodeName)}return s.body.innerHTML}const C8="TemplateFactory",I8={allowList:HS,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},M8={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},O8={entry:"(string|element|function|null)",selector:"(string|element)"};class R8 extends Ta{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return I8}static get DefaultType(){return M8}static get NAME(){return C8}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[s,i]of Object.entries(this._config.content))this._setContent(e,i,s);const r=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[r,n]of Object.entries(e))super._typeCheckConfig({selector:r,entry:n},O8)}_setContent(e,r,n){const s=Le.findOne(n,e);if(s){if(r=this._resolvePossibleFunction(r),!r){s.remove();return}if(gn(r)){this._putElementInTemplate(ei(r),s);return}if(this._config.html){s.innerHTML=this._maybeSanitize(r);return}s.textContent=r}}_maybeSanitize(e){return this._config.sanitize?A8(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return jt(e,[this])}_putElementInTemplate(e,r){if(this._config.html){r.innerHTML="",r.append(e);return}r.textContent=e.textContent}}const P8="tooltip",k8=new Set(["sanitize","allowList","sanitizeFn"]),If="fade",L8="modal",tl="show",N8=".tooltip-inner",Py=`.${L8}`,ky="hide.bs.modal",Co="hover",Mf="focus",D8="click",B8="manual",$8="hide",F8="hidden",U8="show",j8="shown",W8="inserted",z8="click",H8="focusin",V8="focusout",q8="mouseenter",Y8="mouseleave",G8={AUTO:"auto",TOP:"top",RIGHT:fr()?"left":"right",BOTTOM:"bottom",LEFT:fr()?"right":"left"},K8={allowList:HS,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},X8={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class uo extends Ir{constructor(e,r){if(typeof bS>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return K8}static get DefaultType(){return X8}static get NAME(){return P8}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),Se.off(this._element.closest(Py),ky,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const e=Se.trigger(this._element,this.constructor.eventName(U8)),n=(vS(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!n)return;this._disposePopper();const s=this._getTipElement();this._element.setAttribute("aria-describedby",s.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(s),Se.trigger(this._element,this.constructor.eventName(W8))),this._popper=this._createPopper(s),s.classList.add(tl),"ontouchstart"in document.documentElement)for(const a of[].concat(...document.body.children))Se.on(a,"mouseover",du);const o=()=>{Se.trigger(this._element,this.constructor.eventName(j8)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(o,this.tip,this._isAnimated())}hide(){if(!this._isShown()||Se.trigger(this._element,this.constructor.eventName($8)).defaultPrevented)return;if(this._getTipElement().classList.remove(tl),"ontouchstart"in document.documentElement)for(const s of[].concat(...document.body.children))Se.off(s,"mouseover",du);this._activeTrigger[D8]=!1,this._activeTrigger[Mf]=!1,this._activeTrigger[Co]=!1,this._isHovered=null;const n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),Se.trigger(this._element,this.constructor.eventName(F8)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const r=this._getTemplateFactory(e).toHtml();if(!r)return null;r.classList.remove(If,tl),r.classList.add(`bs-${this.constructor.NAME}-auto`);const n=DF(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(If),r}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new R8({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[N8]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(If)}_isShown(){return this.tip&&this.tip.classList.contains(tl)}_createPopper(e){const r=jt(this._config.placement,[this,e,this._element]),n=G8[r.toUpperCase()];return Lg(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return typeof e=="string"?e.split(",").map(r=>Number.parseInt(r,10)):typeof e=="function"?r=>e(r,this._element):e}_resolvePossibleFunction(e){return jt(e,[this._element])}_getPopperConfig(e){const r={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return{...r,...jt(this._config.popperConfig,[r])}}_setListeners(){const e=this._config.trigger.split(" ");for(const r of e)if(r==="click")Se.on(this._element,this.constructor.eventName(z8),this._config.selector,n=>{this._initializeOnDelegatedTarget(n).toggle()});else if(r!==B8){const n=r===Co?this.constructor.eventName(q8):this.constructor.eventName(H8),s=r===Co?this.constructor.eventName(Y8):this.constructor.eventName(V8);Se.on(this._element,n,this._config.selector,i=>{const o=this._initializeOnDelegatedTarget(i);o._activeTrigger[i.type==="focusin"?Mf:Co]=!0,o._enter()}),Se.on(this._element,s,this._config.selector,i=>{const o=this._initializeOnDelegatedTarget(i);o._activeTrigger[i.type==="focusout"?Mf:Co]=o._element.contains(i.relatedTarget),o._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},Se.on(this._element.closest(Py),ky,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,r){clearTimeout(this._timeout),this._timeout=setTimeout(e,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const r=mn.getDataAttributes(this._element);for(const n of Object.keys(r))k8.has(n)&&delete r[n];return e={...r,...typeof e=="object"&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=e.container===!1?document.body:ei(e.container),typeof e.delay=="number"&&(e.delay={show:e.delay,hide:e.delay}),typeof e.title=="number"&&(e.title=e.title.toString()),typeof e.content=="number"&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(e[r]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each(function(){const r=uo.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof r[e]>"u")throw new TypeError(`No method named "${e}"`);r[e]()}})}}pr(uo);const Q8="popover",J8=".popover-header",Z8=".popover-body",e6={...uo.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},t6={...uo.DefaultType,content:"(null|string|element|function)"};class $g extends uo{static get Default(){return e6}static get DefaultType(){return t6}static get NAME(){return Q8}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[J8]:this._getTitle(),[Z8]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(e){return this.each(function(){const r=$g.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof r[e]>"u")throw new TypeError(`No method named "${e}"`);r[e]()}})}}pr($g);const r6="scrollspy",n6="bs.scrollspy",Fg=`.${n6}`,i6=".data-api",s6=`activate${Fg}`,Ly=`click${Fg}`,o6=`load${Fg}${i6}`,a6="dropdown-item",ys="active",l6='[data-bs-spy="scroll"]',Of="[href]",u6=".nav, .list-group",Ny=".nav-link",c6=".nav-item",f6=".list-group-item",d6=`${Ny}, ${c6} > ${Ny}, ${f6}`,h6=".dropdown",p6=".dropdown-toggle",g6={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},m6={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class oc extends Ir{constructor(e,r){super(e,r),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return g6}static get DefaultType(){return m6}static get NAME(){return r6}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=ei(e.target)||document.body,e.rootMargin=e.offset?`${e.offset}px 0px -30%`:e.rootMargin,typeof e.threshold=="string"&&(e.threshold=e.threshold.split(",").map(r=>Number.parseFloat(r))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(Se.off(this._config.target,Ly),Se.on(this._config.target,Ly,Of,e=>{const r=this._observableSections.get(e.target.hash);if(r){e.preventDefault();const n=this._rootElement||window,s=r.offsetTop-this._element.offsetTop;if(n.scrollTo){n.scrollTo({top:s,behavior:"smooth"});return}n.scrollTop=s}}))}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(r=>this._observerCallback(r),e)}_observerCallback(e){const r=o=>this._targetLinks.get(`#${o.target.id}`),n=o=>{this._previousScrollData.visibleEntryTop=o.target.offsetTop,this._process(r(o))},s=(this._rootElement||document.documentElement).scrollTop,i=s>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=s;for(const o of e){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(r(o));continue}const a=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(i&&a){if(n(o),!s)return;continue}!i&&!a&&n(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=Le.find(Of,this._config.target);for(const r of e){if(!r.hash||ti(r))continue;const n=Le.findOne(decodeURI(r.hash),this._element);ao(n)&&(this._targetLinks.set(decodeURI(r.hash),r),this._observableSections.set(r.hash,n))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add(ys),this._activateParents(e),Se.trigger(this._element,s6,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains(a6)){Le.findOne(p6,e.closest(h6)).classList.add(ys);return}for(const r of Le.parents(e,u6))for(const n of Le.prev(r,d6))n.classList.add(ys)}_clearActiveClass(e){e.classList.remove(ys);const r=Le.find(`${Of}.${ys}`,e);for(const n of r)n.classList.remove(ys)}static jQueryInterface(e){return this.each(function(){const r=oc.getOrCreateInstance(this,e);if(typeof e=="string"){if(r[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);r[e]()}})}}Se.on(window,o6,()=>{for(const t of Le.find(l6))oc.getOrCreateInstance(t)});pr(oc);const b6="tab",y6="bs.tab",ds=`.${y6}`,w6=`hide${ds}`,v6=`hidden${ds}`,_6=`show${ds}`,E6=`shown${ds}`,S6=`click${ds}`,T6=`keydown${ds}`,x6=`load${ds}`,A6="ArrowLeft",Dy="ArrowRight",C6="ArrowUp",By="ArrowDown",Rf="Home",$y="End",Di="active",Fy="fade",Pf="show",I6="dropdown",VS=".dropdown-toggle",M6=".dropdown-menu",kf=`:not(${VS})`,O6='.list-group, .nav, [role="tablist"]',R6=".nav-item, .list-group-item",P6=`.nav-link${kf}, .list-group-item${kf}, [role="tab"]${kf}`,qS='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Lf=`${P6}, ${qS}`,k6=`.${Di}[data-bs-toggle="tab"], .${Di}[data-bs-toggle="pill"], .${Di}[data-bs-toggle="list"]`;class Qs extends Ir{constructor(e){super(e),this._parent=this._element.closest(O6),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),Se.on(this._element,T6,r=>this._keydown(r)))}static get NAME(){return b6}show(){const e=this._element;if(this._elemIsActive(e))return;const r=this._getActiveElem(),n=r?Se.trigger(r,w6,{relatedTarget:e}):null;Se.trigger(e,_6,{relatedTarget:r}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(r,e),this._activate(e,r))}_activate(e,r){if(!e)return;e.classList.add(Di),this._activate(Le.getElementFromSelector(e));const n=()=>{if(e.getAttribute("role")!=="tab"){e.classList.add(Pf);return}e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleDropDown(e,!0),Se.trigger(e,E6,{relatedTarget:r})};this._queueCallback(n,e,e.classList.contains(Fy))}_deactivate(e,r){if(!e)return;e.classList.remove(Di),e.blur(),this._deactivate(Le.getElementFromSelector(e));const n=()=>{if(e.getAttribute("role")!=="tab"){e.classList.remove(Pf);return}e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleDropDown(e,!1),Se.trigger(e,v6,{relatedTarget:r})};this._queueCallback(n,e,e.classList.contains(Fy))}_keydown(e){if(![A6,Dy,C6,By,Rf,$y].includes(e.key))return;e.stopPropagation(),e.preventDefault();const r=this._getChildren().filter(s=>!ti(s));let n;if([Rf,$y].includes(e.key))n=r[e.key===Rf?0:r.length-1];else{const s=[Dy,By].includes(e.key);n=Ng(r,e.target,s,!0)}n&&(n.focus({preventScroll:!0}),Qs.getOrCreateInstance(n).show())}_getChildren(){return Le.find(Lf,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,r){this._setAttributeIfNotExists(e,"role","tablist");for(const n of r)this._setInitialAttributesOnChild(n)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const r=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",r),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),r||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const r=Le.getElementFromSelector(e);r&&(this._setAttributeIfNotExists(r,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(r,"aria-labelledby",`${e.id}`))}_toggleDropDown(e,r){const n=this._getOuterElement(e);if(!n.classList.contains(I6))return;const s=(i,o)=>{const a=Le.findOne(i,n);a&&a.classList.toggle(o,r)};s(VS,Di),s(M6,Pf),n.setAttribute("aria-expanded",r)}_setAttributeIfNotExists(e,r,n){e.hasAttribute(r)||e.setAttribute(r,n)}_elemIsActive(e){return e.classList.contains(Di)}_getInnerElement(e){return e.matches(Lf)?e:Le.findOne(Lf,e)}_getOuterElement(e){return e.closest(R6)||e}static jQueryInterface(e){return this.each(function(){const r=Qs.getOrCreateInstance(this);if(typeof e=="string"){if(r[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);r[e]()}})}}Se.on(document,S6,qS,function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),!ti(this)&&Qs.getOrCreateInstance(this).show()});Se.on(window,x6,()=>{for(const t of Le.find(k6))Qs.getOrCreateInstance(t)});pr(Qs);const L6="toast",N6="bs.toast",ui=`.${N6}`,D6=`mouseover${ui}`,B6=`mouseout${ui}`,$6=`focusin${ui}`,F6=`focusout${ui}`,U6=`hide${ui}`,j6=`hidden${ui}`,W6=`show${ui}`,z6=`shown${ui}`,H6="fade",Uy="hide",rl="show",nl="showing",V6={animation:"boolean",autohide:"boolean",delay:"number"},q6={animation:!0,autohide:!0,delay:5e3};class ac extends Ir{constructor(e,r){super(e,r),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return q6}static get DefaultType(){return V6}static get NAME(){return L6}show(){if(Se.trigger(this._element,W6).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(H6);const r=()=>{this._element.classList.remove(nl),Se.trigger(this._element,z6),this._maybeScheduleHide()};this._element.classList.remove(Uy),Sa(this._element),this._element.classList.add(rl,nl),this._queueCallback(r,this._element,this._config.animation)}hide(){if(!this.isShown()||Se.trigger(this._element,U6).defaultPrevented)return;const r=()=>{this._element.classList.add(Uy),this._element.classList.remove(nl,rl),Se.trigger(this._element,j6)};this._element.classList.add(nl),this._queueCallback(r,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(rl),super.dispose()}isShown(){return this._element.classList.contains(rl)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,r){switch(e.type){case"mouseover":case"mouseout":{this._hasMouseInteraction=r;break}case"focusin":case"focusout":{this._hasKeyboardInteraction=r;break}}if(r){this._clearTimeout();return}const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){Se.on(this._element,D6,e=>this._onInteraction(e,!0)),Se.on(this._element,B6,e=>this._onInteraction(e,!1)),Se.on(this._element,$6,e=>this._onInteraction(e,!0)),Se.on(this._element,F6,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){const r=ac.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof r[e]>"u")throw new TypeError(`No method named "${e}"`);r[e](this)}})}}nc(ac);pr(ac);function Y6(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;r({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});let i;const o=_t();e.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const a=o.createElement("div");function l(m,y){const E=e.params.virtual;if(E.cache&&e.virtual.cache[y])return e.virtual.cache[y];let _;return E.renderSlide?(_=E.renderSlide.call(e,m,y),typeof _=="string"&&(a.innerHTML=_,_=a.children[0])):e.isElement?_=Jt("swiper-slide"):_=Jt("div",e.params.slideClass),_.setAttribute("data-swiper-slide-index",y),E.renderSlide||(_.innerHTML=m),E.cache&&(e.virtual.cache[y]=_),_}function u(m,y){const{slidesPerView:E,slidesPerGroup:_,centeredSlides:S,loop:v,initialSlide:A}=e.params;if(y&&!v&&A>0)return;const{addSlidesBefore:k,addSlidesAfter:x}=e.params.virtual,{from:D,to:N,slides:B,slidesGrid:q,offset:K}=e.virtual;e.params.cssMode||e.updateActiveIndex();const C=e.activeIndex||0;let M;e.rtlTranslate?M="right":M=e.isHorizontal()?"left":"top";let L,H;S?(L=Math.floor(E/2)+_+x,H=Math.floor(E/2)+_+k):(L=E+(_-1)+x,H=(v?E:_)+k);let G=C-H,z=C+L;v||(G=Math.max(G,0),z=Math.min(z,B.length-1));let F=(e.slidesGrid[G]||0)-(e.slidesGrid[0]||0);v&&C>=H?(G-=H,S||(F+=e.slidesGrid[0])):v&&C<H&&(G=-H,S&&(F+=e.slidesGrid[0])),Object.assign(e.virtual,{from:G,to:z,offset:F,slidesGrid:e.slidesGrid,slidesBefore:H,slidesAfter:L});function ne(){e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s("virtualUpdate")}if(D===G&&N===z&&!m){e.slidesGrid!==q&&F!==K&&e.slides.forEach(ge=>{ge.style[M]=`${F-Math.abs(e.cssOverflowAdjustment())}px`}),e.updateProgress(),s("virtualUpdate");return}if(e.params.virtual.renderExternal){e.params.virtual.renderExternal.call(e,{offset:F,from:G,to:z,slides:function(){const pe=[];for(let X=G;X<=z;X+=1)pe.push(B[X]);return pe}()}),e.params.virtual.renderExternalUpdate?ne():s("virtualUpdate");return}const ce=[],re=[],R=ge=>{let pe=ge;return ge<0?pe=B.length+ge:pe>=B.length&&(pe=pe-B.length),pe};if(m)e.slides.filter(ge=>ge.matches(`.${e.params.slideClass}, swiper-slide`)).forEach(ge=>{ge.remove()});else for(let ge=D;ge<=N;ge+=1)if(ge<G||ge>z){const pe=R(ge);e.slides.filter(X=>X.matches(`.${e.params.slideClass}[data-swiper-slide-index="${pe}"], swiper-slide[data-swiper-slide-index="${pe}"]`)).forEach(X=>{X.remove()})}const Q=v?-B.length:0,de=v?B.length*2:B.length;for(let ge=Q;ge<de;ge+=1)if(ge>=G&&ge<=z){const pe=R(ge);typeof N>"u"||m?re.push(pe):(ge>N&&re.push(pe),ge<D&&ce.push(pe))}if(re.forEach(ge=>{e.slidesEl.append(l(B[ge],ge))}),v)for(let ge=ce.length-1;ge>=0;ge-=1){const pe=ce[ge];e.slidesEl.prepend(l(B[pe],pe))}else ce.sort((ge,pe)=>pe-ge),ce.forEach(ge=>{e.slidesEl.prepend(l(B[ge],ge))});vt(e.slidesEl,".swiper-slide, swiper-slide").forEach(ge=>{ge.style[M]=`${F-Math.abs(e.cssOverflowAdjustment())}px`}),ne()}function c(m){if(typeof m=="object"&&"length"in m)for(let y=0;y<m.length;y+=1)m[y]&&e.virtual.slides.push(m[y]);else e.virtual.slides.push(m);u(!0)}function f(m){const y=e.activeIndex;let E=y+1,_=1;if(Array.isArray(m)){for(let S=0;S<m.length;S+=1)m[S]&&e.virtual.slides.unshift(m[S]);E=y+m.length,_=m.length}else e.virtual.slides.unshift(m);if(e.params.virtual.cache){const S=e.virtual.cache,v={};Object.keys(S).forEach(A=>{const k=S[A],x=k.getAttribute("data-swiper-slide-index");x&&k.setAttribute("data-swiper-slide-index",parseInt(x,10)+_),v[parseInt(A,10)+_]=k}),e.virtual.cache=v}u(!0),e.slideTo(E,0)}function d(m){if(typeof m>"u"||m===null)return;let y=e.activeIndex;if(Array.isArray(m))for(let E=m.length-1;E>=0;E-=1)e.params.virtual.cache&&(delete e.virtual.cache[m[E]],Object.keys(e.virtual.cache).forEach(_=>{_>m&&(e.virtual.cache[_-1]=e.virtual.cache[_],e.virtual.cache[_-1].setAttribute("data-swiper-slide-index",_-1),delete e.virtual.cache[_])})),e.virtual.slides.splice(m[E],1),m[E]<y&&(y-=1),y=Math.max(y,0);else e.params.virtual.cache&&(delete e.virtual.cache[m],Object.keys(e.virtual.cache).forEach(E=>{E>m&&(e.virtual.cache[E-1]=e.virtual.cache[E],e.virtual.cache[E-1].setAttribute("data-swiper-slide-index",E-1),delete e.virtual.cache[E])})),e.virtual.slides.splice(m,1),m<y&&(y-=1),y=Math.max(y,0);u(!0),e.slideTo(y,0)}function g(){e.virtual.slides=[],e.params.virtual.cache&&(e.virtual.cache={}),u(!0),e.slideTo(0,0)}n("beforeInit",()=>{if(!e.params.virtual.enabled)return;let m;if(typeof e.passedParams.virtual.slides>"u"){const y=[...e.slidesEl.children].filter(E=>E.matches(`.${e.params.slideClass}, swiper-slide`));y&&y.length&&(e.virtual.slides=[...y],m=!0,y.forEach((E,_)=>{E.setAttribute("data-swiper-slide-index",_),e.virtual.cache[_]=E,E.remove()}))}m||(e.virtual.slides=e.params.virtual.slides),e.classNames.push(`${e.params.containerModifierClass}virtual`),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0,u(!1,!0)}),n("setTranslate",()=>{e.params.virtual.enabled&&(e.params.cssMode&&!e._immediateVirtual?(clearTimeout(i),i=setTimeout(()=>{u()},100)):u())}),n("init update resize",()=>{e.params.virtual.enabled&&e.params.cssMode&&Bo(e.wrapperEl,"--swiper-virtual-size",`${e.virtualSize}px`)}),Object.assign(e.virtual,{appendSlide:c,prependSlide:f,removeSlide:d,removeAllSlides:g,update:u})}function G6(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i=_t(),o=ot();e.keyboard={enabled:!1},r({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}});function a(c){if(!e.enabled)return;const{rtlTranslate:f}=e;let d=c;d.originalEvent&&(d=d.originalEvent);const g=d.keyCode||d.charCode,m=e.params.keyboard.pageUpDown,y=m&&g===33,E=m&&g===34,_=g===37,S=g===39,v=g===38,A=g===40;if(!e.allowSlideNext&&(e.isHorizontal()&&S||e.isVertical()&&A||E)||!e.allowSlidePrev&&(e.isHorizontal()&&_||e.isVertical()&&v||y))return!1;if(!(d.shiftKey||d.altKey||d.ctrlKey||d.metaKey)&&!(i.activeElement&&i.activeElement.nodeName&&(i.activeElement.nodeName.toLowerCase()==="input"||i.activeElement.nodeName.toLowerCase()==="textarea"))){if(e.params.keyboard.onlyInViewport&&(y||E||_||S||v||A)){let k=!1;if(Hi(e.el,`.${e.params.slideClass}, swiper-slide`).length>0&&Hi(e.el,`.${e.params.slideActiveClass}`).length===0)return;const x=e.el,D=x.clientWidth,N=x.clientHeight,B=o.innerWidth,q=o.innerHeight,K=cu(x);f&&(K.left-=x.scrollLeft);const C=[[K.left,K.top],[K.left+D,K.top],[K.left,K.top+N],[K.left+D,K.top+N]];for(let M=0;M<C.length;M+=1){const L=C[M];if(L[0]>=0&&L[0]<=B&&L[1]>=0&&L[1]<=q){if(L[0]===0&&L[1]===0)continue;k=!0}}if(!k)return}e.isHorizontal()?((y||E||_||S)&&(d.preventDefault?d.preventDefault():d.returnValue=!1),((E||S)&&!f||(y||_)&&f)&&e.slideNext(),((y||_)&&!f||(E||S)&&f)&&e.slidePrev()):((y||E||v||A)&&(d.preventDefault?d.preventDefault():d.returnValue=!1),(E||A)&&e.slideNext(),(y||v)&&e.slidePrev()),s("keyPress",g)}}function l(){e.keyboard.enabled||(i.addEventListener("keydown",a),e.keyboard.enabled=!0)}function u(){e.keyboard.enabled&&(i.removeEventListener("keydown",a),e.keyboard.enabled=!1)}n("init",()=>{e.params.keyboard.enabled&&l()}),n("destroy",()=>{e.keyboard.enabled&&u()}),Object.assign(e.keyboard,{enable:l,disable:u})}function K6(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i=ot();r({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),e.mousewheel={enabled:!1};let o,a=ar(),l;const u=[];function c(v){let D=0,N=0,B=0,q=0;return"detail"in v&&(N=v.detail),"wheelDelta"in v&&(N=-v.wheelDelta/120),"wheelDeltaY"in v&&(N=-v.wheelDeltaY/120),"wheelDeltaX"in v&&(D=-v.wheelDeltaX/120),"axis"in v&&v.axis===v.HORIZONTAL_AXIS&&(D=N,N=0),B=D*10,q=N*10,"deltaY"in v&&(q=v.deltaY),"deltaX"in v&&(B=v.deltaX),v.shiftKey&&!B&&(B=q,q=0),(B||q)&&v.deltaMode&&(v.deltaMode===1?(B*=40,q*=40):(B*=800,q*=800)),B&&!D&&(D=B<1?-1:1),q&&!N&&(N=q<1?-1:1),{spinX:D,spinY:N,pixelX:B,pixelY:q}}function f(){e.enabled&&(e.mouseEntered=!0)}function d(){e.enabled&&(e.mouseEntered=!1)}function g(v){return e.params.mousewheel.thresholdDelta&&v.delta<e.params.mousewheel.thresholdDelta||e.params.mousewheel.thresholdTime&&ar()-a<e.params.mousewheel.thresholdTime?!1:v.delta>=6&&ar()-a<60?!0:(v.direction<0?(!e.isEnd||e.params.loop)&&!e.animating&&(e.slideNext(),s("scroll",v.raw)):(!e.isBeginning||e.params.loop)&&!e.animating&&(e.slidePrev(),s("scroll",v.raw)),a=new i.Date().getTime(),!1)}function m(v){const A=e.params.mousewheel;if(v.direction<0){if(e.isEnd&&!e.params.loop&&A.releaseOnEdges)return!0}else if(e.isBeginning&&!e.params.loop&&A.releaseOnEdges)return!0;return!1}function y(v){let A=v,k=!0;if(!e.enabled||v.target.closest(`.${e.params.mousewheel.noMousewheelClass}`))return;const x=e.params.mousewheel;e.params.cssMode&&A.preventDefault();let D=e.el;e.params.mousewheel.eventsTarget!=="container"&&(D=document.querySelector(e.params.mousewheel.eventsTarget));const N=D&&D.contains(A.target);if(!e.mouseEntered&&!N&&!x.releaseOnEdges)return!0;A.originalEvent&&(A=A.originalEvent);let B=0;const q=e.rtlTranslate?-1:1,K=c(A);if(x.forceToAxis)if(e.isHorizontal())if(Math.abs(K.pixelX)>Math.abs(K.pixelY))B=-K.pixelX*q;else return!0;else if(Math.abs(K.pixelY)>Math.abs(K.pixelX))B=-K.pixelY;else return!0;else B=Math.abs(K.pixelX)>Math.abs(K.pixelY)?-K.pixelX*q:-K.pixelY;if(B===0)return!0;x.invert&&(B=-B);let C=e.getTranslate()+B*x.sensitivity;if(C>=e.minTranslate()&&(C=e.minTranslate()),C<=e.maxTranslate()&&(C=e.maxTranslate()),k=e.params.loop?!0:!(C===e.minTranslate()||C===e.maxTranslate()),k&&e.params.nested&&A.stopPropagation(),!e.params.freeMode||!e.params.freeMode.enabled){const M={time:ar(),delta:Math.abs(B),direction:Math.sign(B),raw:v};u.length>=2&&u.shift();const L=u.length?u[u.length-1]:void 0;if(u.push(M),L?(M.direction!==L.direction||M.delta>L.delta||M.time>L.time+150)&&g(M):g(M),m(M))return!0}else{const M={time:ar(),delta:Math.abs(B),direction:Math.sign(B)},L=l&&M.time<l.time+500&&M.delta<=l.delta&&M.direction===l.direction;if(!L){l=void 0;let H=e.getTranslate()+B*x.sensitivity;const G=e.isBeginning,z=e.isEnd;if(H>=e.minTranslate()&&(H=e.minTranslate()),H<=e.maxTranslate()&&(H=e.maxTranslate()),e.setTransition(0),e.setTranslate(H),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses(),(!G&&e.isBeginning||!z&&e.isEnd)&&e.updateSlidesClasses(),e.params.loop&&e.loopFix({direction:M.direction<0?"next":"prev",byMousewheel:!0}),e.params.freeMode.sticky){clearTimeout(o),o=void 0,u.length>=15&&u.shift();const F=u.length?u[u.length-1]:void 0,ne=u[0];if(u.push(M),F&&(M.delta>F.delta||M.direction!==F.direction))u.splice(0);else if(u.length>=15&&M.time-ne.time<500&&ne.delta-M.delta>=1&&M.delta<=6){const ce=B>0?.8:.2;l=M,u.splice(0),o=Xi(()=>{e.slideToClosest(e.params.speed,!0,void 0,ce)},0)}o||(o=Xi(()=>{l=M,u.splice(0),e.slideToClosest(e.params.speed,!0,void 0,.5)},500))}if(L||s("scroll",A),e.params.autoplay&&e.params.autoplayDisableOnInteraction&&e.autoplay.stop(),x.releaseOnEdges&&(H===e.minTranslate()||H===e.maxTranslate()))return!0}}return A.preventDefault?A.preventDefault():A.returnValue=!1,!1}function E(v){let A=e.el;e.params.mousewheel.eventsTarget!=="container"&&(A=document.querySelector(e.params.mousewheel.eventsTarget)),A[v]("mouseenter",f),A[v]("mouseleave",d),A[v]("wheel",y)}function _(){return e.params.cssMode?(e.wrapperEl.removeEventListener("wheel",y),!0):e.mousewheel.enabled?!1:(E("addEventListener"),e.mousewheel.enabled=!0,!0)}function S(){return e.params.cssMode?(e.wrapperEl.addEventListener(event,y),!0):e.mousewheel.enabled?(E("removeEventListener"),e.mousewheel.enabled=!1,!0):!1}n("init",()=>{!e.params.mousewheel.enabled&&e.params.cssMode&&S(),e.params.mousewheel.enabled&&_()}),n("destroy",()=>{e.params.cssMode&&_(),e.mousewheel.enabled&&S()}),Object.assign(e.mousewheel,{enable:_,disable:S})}function Ug(t,e,r,n){return t.params.createElements&&Object.keys(n).forEach(s=>{if(!r[s]&&r.auto===!0){let i=vt(t.el,`.${n[s]}`)[0];i||(i=Jt("div",n[s]),i.className=n[s],t.el.append(i)),r[s]=i,e[s]=i}}),r}function X6(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;r({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null};function i(m){let y;return m&&typeof m=="string"&&e.isElement&&(y=e.el.querySelector(m),y)?y:(m&&(typeof m=="string"&&(y=[...document.querySelectorAll(m)]),e.params.uniqueNavElements&&typeof m=="string"&&y&&y.length>1&&e.el.querySelectorAll(m).length===1?y=e.el.querySelector(m):y&&y.length===1&&(y=y[0])),m&&!y?m:y)}function o(m,y){const E=e.params.navigation;m=$e(m),m.forEach(_=>{_&&(_.classList[y?"add":"remove"](...E.disabledClass.split(" ")),_.tagName==="BUTTON"&&(_.disabled=y),e.params.watchOverflow&&e.enabled&&_.classList[e.isLocked?"add":"remove"](E.lockClass))})}function a(){const{nextEl:m,prevEl:y}=e.navigation;if(e.params.loop){o(y,!1),o(m,!1);return}o(y,e.isBeginning&&!e.params.rewind),o(m,e.isEnd&&!e.params.rewind)}function l(m){m.preventDefault(),!(e.isBeginning&&!e.params.loop&&!e.params.rewind)&&(e.slidePrev(),s("navigationPrev"))}function u(m){m.preventDefault(),!(e.isEnd&&!e.params.loop&&!e.params.rewind)&&(e.slideNext(),s("navigationNext"))}function c(){const m=e.params.navigation;if(e.params.navigation=Ug(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!(m.nextEl||m.prevEl))return;let y=i(m.nextEl),E=i(m.prevEl);Object.assign(e.navigation,{nextEl:y,prevEl:E}),y=$e(y),E=$e(E);const _=(S,v)=>{S&&S.addEventListener("click",v==="next"?u:l),!e.enabled&&S&&S.classList.add(...m.lockClass.split(" "))};y.forEach(S=>_(S,"next")),E.forEach(S=>_(S,"prev"))}function f(){let{nextEl:m,prevEl:y}=e.navigation;m=$e(m),y=$e(y);const E=(_,S)=>{_.removeEventListener("click",S==="next"?u:l),_.classList.remove(...e.params.navigation.disabledClass.split(" "))};m.forEach(_=>E(_,"next")),y.forEach(_=>E(_,"prev"))}n("init",()=>{e.params.navigation.enabled===!1?g():(c(),a())}),n("toEdge fromEdge lock unlock",()=>{a()}),n("destroy",()=>{f()}),n("enable disable",()=>{let{nextEl:m,prevEl:y}=e.navigation;if(m=$e(m),y=$e(y),e.enabled){a();return}[...m,...y].filter(E=>!!E).forEach(E=>E.classList.add(e.params.navigation.lockClass))}),n("click",(m,y)=>{let{nextEl:E,prevEl:_}=e.navigation;E=$e(E),_=$e(_);const S=y.target;let v=_.includes(S)||E.includes(S);if(e.isElement&&!v){const A=y.path||y.composedPath&&y.composedPath();A&&(v=A.find(k=>E.includes(k)||_.includes(k)))}if(e.params.navigation.hideOnClick&&!v){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===S||e.pagination.el.contains(S)))return;let A;E.length?A=E[0].classList.contains(e.params.navigation.hiddenClass):_.length&&(A=_[0].classList.contains(e.params.navigation.hiddenClass)),s(A===!0?"navigationShow":"navigationHide"),[...E,..._].filter(k=>!!k).forEach(k=>k.classList.toggle(e.params.navigation.hiddenClass))}});const d=()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),c(),a()},g=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),f()};Object.assign(e.navigation,{enable:d,disable:g,update:a,init:c,destroy:f})}function sn(t){return t===void 0&&(t=""),`.${t.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function Q6(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i="swiper-pagination";r({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:_=>_,formatFractionTotal:_=>_,bulletClass:`${i}-bullet`,bulletActiveClass:`${i}-bullet-active`,modifierClass:`${i}-`,currentClass:`${i}-current`,totalClass:`${i}-total`,hiddenClass:`${i}-hidden`,progressbarFillClass:`${i}-progressbar-fill`,progressbarOppositeClass:`${i}-progressbar-opposite`,clickableClass:`${i}-clickable`,lockClass:`${i}-lock`,horizontalClass:`${i}-horizontal`,verticalClass:`${i}-vertical`,paginationDisabledClass:`${i}-disabled`}}),e.pagination={el:null,bullets:[]};let o,a=0;function l(){return!e.params.pagination.el||!e.pagination.el||Array.isArray(e.pagination.el)&&e.pagination.el.length===0}function u(_,S){const{bulletActiveClass:v}=e.params.pagination;_&&(_=_[`${S==="prev"?"previous":"next"}ElementSibling`],_&&(_.classList.add(`${v}-${S}`),_=_[`${S==="prev"?"previous":"next"}ElementSibling`],_&&_.classList.add(`${v}-${S}-${S}`)))}function c(_){const S=_.target.closest(sn(e.params.pagination.bulletClass));if(!S)return;_.preventDefault();const v=la(S)*e.params.slidesPerGroup;if(e.params.loop){if(e.realIndex===v)return;e.slideToLoop(v)}else e.slideTo(v)}function f(){const _=e.rtl,S=e.params.pagination;if(l())return;let v=e.pagination.el;v=$e(v);let A,k;const x=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,D=e.params.loop?Math.ceil(x/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(k=e.previousRealIndex||0,A=e.params.slidesPerGroup>1?Math.floor(e.realIndex/e.params.slidesPerGroup):e.realIndex):typeof e.snapIndex<"u"?(A=e.snapIndex,k=e.previousSnapIndex):(k=e.previousIndex||0,A=e.activeIndex||0),S.type==="bullets"&&e.pagination.bullets&&e.pagination.bullets.length>0){const N=e.pagination.bullets;let B,q,K;if(S.dynamicBullets&&(o=Gh(N[0],e.isHorizontal()?"width":"height"),v.forEach(C=>{C.style[e.isHorizontal()?"width":"height"]=`${o*(S.dynamicMainBullets+4)}px`}),S.dynamicMainBullets>1&&k!==void 0&&(a+=A-(k||0),a>S.dynamicMainBullets-1?a=S.dynamicMainBullets-1:a<0&&(a=0)),B=Math.max(A-a,0),q=B+(Math.min(N.length,S.dynamicMainBullets)-1),K=(q+B)/2),N.forEach(C=>{const M=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(L=>`${S.bulletActiveClass}${L}`)].map(L=>typeof L=="string"&&L.includes(" ")?L.split(" "):L).flat();C.classList.remove(...M)}),v.length>1)N.forEach(C=>{const M=la(C);M===A?C.classList.add(...S.bulletActiveClass.split(" ")):e.isElement&&C.setAttribute("part","bullet"),S.dynamicBullets&&(M>=B&&M<=q&&C.classList.add(...`${S.bulletActiveClass}-main`.split(" ")),M===B&&u(C,"prev"),M===q&&u(C,"next"))});else{const C=N[A];if(C&&C.classList.add(...S.bulletActiveClass.split(" ")),e.isElement&&N.forEach((M,L)=>{M.setAttribute("part",L===A?"bullet-active":"bullet")}),S.dynamicBullets){const M=N[B],L=N[q];for(let H=B;H<=q;H+=1)N[H]&&N[H].classList.add(...`${S.bulletActiveClass}-main`.split(" "));u(M,"prev"),u(L,"next")}}if(S.dynamicBullets){const C=Math.min(N.length,S.dynamicMainBullets+4),M=(o*C-o)/2-K*o,L=_?"right":"left";N.forEach(H=>{H.style[e.isHorizontal()?L:"top"]=`${M}px`})}}v.forEach((N,B)=>{if(S.type==="fraction"&&(N.querySelectorAll(sn(S.currentClass)).forEach(q=>{q.textContent=S.formatFractionCurrent(A+1)}),N.querySelectorAll(sn(S.totalClass)).forEach(q=>{q.textContent=S.formatFractionTotal(D)})),S.type==="progressbar"){let q;S.progressbarOpposite?q=e.isHorizontal()?"vertical":"horizontal":q=e.isHorizontal()?"horizontal":"vertical";const K=(A+1)/D;let C=1,M=1;q==="horizontal"?C=K:M=K,N.querySelectorAll(sn(S.progressbarFillClass)).forEach(L=>{L.style.transform=`translate3d(0,0,0) scaleX(${C}) scaleY(${M})`,L.style.transitionDuration=`${e.params.speed}ms`})}S.type==="custom"&&S.renderCustom?(N.innerHTML=S.renderCustom(e,A+1,D),B===0&&s("paginationRender",N)):(B===0&&s("paginationRender",N),s("paginationUpdate",N)),e.params.watchOverflow&&e.enabled&&N.classList[e.isLocked?"add":"remove"](S.lockClass)})}function d(){const _=e.params.pagination;if(l())return;const S=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.grid&&e.params.grid.rows>1?e.slides.length/Math.ceil(e.params.grid.rows):e.slides.length;let v=e.pagination.el;v=$e(v);let A="";if(_.type==="bullets"){let k=e.params.loop?Math.ceil(S/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&k>S&&(k=S);for(let x=0;x<k;x+=1)_.renderBullet?A+=_.renderBullet.call(e,x,_.bulletClass):A+=`<${_.bulletElement} ${e.isElement?'part="bullet"':""} class="${_.bulletClass}"></${_.bulletElement}>`}_.type==="fraction"&&(_.renderFraction?A=_.renderFraction.call(e,_.currentClass,_.totalClass):A=`<span class="${_.currentClass}"></span> / <span class="${_.totalClass}"></span>`),_.type==="progressbar"&&(_.renderProgressbar?A=_.renderProgressbar.call(e,_.progressbarFillClass):A=`<span class="${_.progressbarFillClass}"></span>`),e.pagination.bullets=[],v.forEach(k=>{_.type!=="custom"&&(k.innerHTML=A||""),_.type==="bullets"&&e.pagination.bullets.push(...k.querySelectorAll(sn(_.bulletClass)))}),_.type!=="custom"&&s("paginationRender",v[0])}function g(){e.params.pagination=Ug(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const _=e.params.pagination;if(!_.el)return;let S;typeof _.el=="string"&&e.isElement&&(S=e.el.querySelector(_.el)),!S&&typeof _.el=="string"&&(S=[...document.querySelectorAll(_.el)]),S||(S=_.el),!(!S||S.length===0)&&(e.params.uniqueNavElements&&typeof _.el=="string"&&Array.isArray(S)&&S.length>1&&(S=[...e.el.querySelectorAll(_.el)],S.length>1&&(S=S.filter(v=>Hi(v,".swiper")[0]===e.el)[0])),Array.isArray(S)&&S.length===1&&(S=S[0]),Object.assign(e.pagination,{el:S}),S=$e(S),S.forEach(v=>{_.type==="bullets"&&_.clickable&&v.classList.add(...(_.clickableClass||"").split(" ")),v.classList.add(_.modifierClass+_.type),v.classList.add(e.isHorizontal()?_.horizontalClass:_.verticalClass),_.type==="bullets"&&_.dynamicBullets&&(v.classList.add(`${_.modifierClass}${_.type}-dynamic`),a=0,_.dynamicMainBullets<1&&(_.dynamicMainBullets=1)),_.type==="progressbar"&&_.progressbarOpposite&&v.classList.add(_.progressbarOppositeClass),_.clickable&&v.addEventListener("click",c),e.enabled||v.classList.add(_.lockClass)}))}function m(){const _=e.params.pagination;if(l())return;let S=e.pagination.el;S&&(S=$e(S),S.forEach(v=>{v.classList.remove(_.hiddenClass),v.classList.remove(_.modifierClass+_.type),v.classList.remove(e.isHorizontal()?_.horizontalClass:_.verticalClass),_.clickable&&(v.classList.remove(...(_.clickableClass||"").split(" ")),v.removeEventListener("click",c))})),e.pagination.bullets&&e.pagination.bullets.forEach(v=>v.classList.remove(..._.bulletActiveClass.split(" ")))}n("changeDirection",()=>{if(!e.pagination||!e.pagination.el)return;const _=e.params.pagination;let{el:S}=e.pagination;S=$e(S),S.forEach(v=>{v.classList.remove(_.horizontalClass,_.verticalClass),v.classList.add(e.isHorizontal()?_.horizontalClass:_.verticalClass)})}),n("init",()=>{e.params.pagination.enabled===!1?E():(g(),d(),f())}),n("activeIndexChange",()=>{typeof e.snapIndex>"u"&&f()}),n("snapIndexChange",()=>{f()}),n("snapGridLengthChange",()=>{d(),f()}),n("destroy",()=>{m()}),n("enable disable",()=>{let{el:_}=e.pagination;_&&(_=$e(_),_.forEach(S=>S.classList[e.enabled?"remove":"add"](e.params.pagination.lockClass)))}),n("lock unlock",()=>{f()}),n("click",(_,S)=>{const v=S.target,A=$e(e.pagination.el);if(e.params.pagination.el&&e.params.pagination.hideOnClick&&A&&A.length>0&&!v.classList.contains(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&v===e.navigation.nextEl||e.navigation.prevEl&&v===e.navigation.prevEl))return;const k=A[0].classList.contains(e.params.pagination.hiddenClass);s(k===!0?"paginationShow":"paginationHide"),A.forEach(x=>x.classList.toggle(e.params.pagination.hiddenClass))}});const y=()=>{e.el.classList.remove(e.params.pagination.paginationDisabledClass);let{el:_}=e.pagination;_&&(_=$e(_),_.forEach(S=>S.classList.remove(e.params.pagination.paginationDisabledClass))),g(),d(),f()},E=()=>{e.el.classList.add(e.params.pagination.paginationDisabledClass);let{el:_}=e.pagination;_&&(_=$e(_),_.forEach(S=>S.classList.add(e.params.pagination.paginationDisabledClass))),m()};Object.assign(e.pagination,{enable:y,disable:E,render:d,update:f,init:g,destroy:m})}function J6(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i=_t();let o=!1,a=null,l=null,u,c,f,d;r({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),e.scrollbar={el:null,dragEl:null};function g(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:C,rtlTranslate:M}=e,{dragEl:L,el:H}=C,G=e.params.scrollbar,z=e.params.loop?e.progressLoop:e.progress;let F=c,ne=(f-c)*z;M?(ne=-ne,ne>0?(F=c-ne,ne=0):-ne+c>f&&(F=f+ne)):ne<0?(F=c+ne,ne=0):ne+c>f&&(F=f-ne),e.isHorizontal()?(L.style.transform=`translate3d(${ne}px, 0, 0)`,L.style.width=`${F}px`):(L.style.transform=`translate3d(0px, ${ne}px, 0)`,L.style.height=`${F}px`),G.hide&&(clearTimeout(a),H.style.opacity=1,a=setTimeout(()=>{H.style.opacity=0,H.style.transitionDuration="400ms"},1e3))}function m(C){!e.params.scrollbar.el||!e.scrollbar.el||(e.scrollbar.dragEl.style.transitionDuration=`${C}ms`)}function y(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:C}=e,{dragEl:M,el:L}=C;M.style.width="",M.style.height="",f=e.isHorizontal()?L.offsetWidth:L.offsetHeight,d=e.size/(e.virtualSize+e.params.slidesOffsetBefore-(e.params.centeredSlides?e.snapGrid[0]:0)),e.params.scrollbar.dragSize==="auto"?c=f*d:c=parseInt(e.params.scrollbar.dragSize,10),e.isHorizontal()?M.style.width=`${c}px`:M.style.height=`${c}px`,d>=1?L.style.display="none":L.style.display="",e.params.scrollbar.hide&&(L.style.opacity=0),e.params.watchOverflow&&e.enabled&&C.el.classList[e.isLocked?"add":"remove"](e.params.scrollbar.lockClass)}function E(C){return e.isHorizontal()?C.clientX:C.clientY}function _(C){const{scrollbar:M,rtlTranslate:L}=e,{el:H}=M;let G;G=(E(C)-cu(H)[e.isHorizontal()?"left":"top"]-(u!==null?u:c/2))/(f-c),G=Math.max(Math.min(G,1),0),L&&(G=1-G);const z=e.minTranslate()+(e.maxTranslate()-e.minTranslate())*G;e.updateProgress(z),e.setTranslate(z),e.updateActiveIndex(),e.updateSlidesClasses()}function S(C){const M=e.params.scrollbar,{scrollbar:L,wrapperEl:H}=e,{el:G,dragEl:z}=L;o=!0,u=C.target===z?E(C)-C.target.getBoundingClientRect()[e.isHorizontal()?"left":"top"]:null,C.preventDefault(),C.stopPropagation(),H.style.transitionDuration="100ms",z.style.transitionDuration="100ms",_(C),clearTimeout(l),G.style.transitionDuration="0ms",M.hide&&(G.style.opacity=1),e.params.cssMode&&(e.wrapperEl.style["scroll-snap-type"]="none"),s("scrollbarDragStart",C)}function v(C){const{scrollbar:M,wrapperEl:L}=e,{el:H,dragEl:G}=M;o&&(C.preventDefault&&C.cancelable?C.preventDefault():C.returnValue=!1,_(C),L.style.transitionDuration="0ms",H.style.transitionDuration="0ms",G.style.transitionDuration="0ms",s("scrollbarDragMove",C))}function A(C){const M=e.params.scrollbar,{scrollbar:L,wrapperEl:H}=e,{el:G}=L;o&&(o=!1,e.params.cssMode&&(e.wrapperEl.style["scroll-snap-type"]="",H.style.transitionDuration=""),M.hide&&(clearTimeout(l),l=Xi(()=>{G.style.opacity=0,G.style.transitionDuration="400ms"},1e3)),s("scrollbarDragEnd",C),M.snapOnRelease&&e.slideToClosest())}function k(C){const{scrollbar:M,params:L}=e,H=M.el;if(!H)return;const G=H,z=L.passiveListeners?{passive:!1,capture:!1}:!1,F=L.passiveListeners?{passive:!0,capture:!1}:!1;if(!G)return;const ne=C==="on"?"addEventListener":"removeEventListener";G[ne]("pointerdown",S,z),i[ne]("pointermove",v,z),i[ne]("pointerup",A,F)}function x(){!e.params.scrollbar.el||!e.scrollbar.el||k("on")}function D(){!e.params.scrollbar.el||!e.scrollbar.el||k("off")}function N(){const{scrollbar:C,el:M}=e;e.params.scrollbar=Ug(e,e.originalParams.scrollbar,e.params.scrollbar,{el:"swiper-scrollbar"});const L=e.params.scrollbar;if(!L.el)return;let H;if(typeof L.el=="string"&&e.isElement&&(H=e.el.querySelector(L.el)),!H&&typeof L.el=="string"){if(H=i.querySelectorAll(L.el),!H.length)return}else H||(H=L.el);e.params.uniqueNavElements&&typeof L.el=="string"&&H.length>1&&M.querySelectorAll(L.el).length===1&&(H=M.querySelector(L.el)),H.length>0&&(H=H[0]),H.classList.add(e.isHorizontal()?L.horizontalClass:L.verticalClass);let G;H&&(G=H.querySelector(sn(e.params.scrollbar.dragClass)),G||(G=Jt("div",e.params.scrollbar.dragClass),H.append(G))),Object.assign(C,{el:H,dragEl:G}),L.draggable&&x(),H&&H.classList[e.enabled?"remove":"add"](...zn(e.params.scrollbar.lockClass))}function B(){const C=e.params.scrollbar,M=e.scrollbar.el;M&&M.classList.remove(...zn(e.isHorizontal()?C.horizontalClass:C.verticalClass)),D()}n("changeDirection",()=>{if(!e.scrollbar||!e.scrollbar.el)return;const C=e.params.scrollbar;let{el:M}=e.scrollbar;M=$e(M),M.forEach(L=>{L.classList.remove(C.horizontalClass,C.verticalClass),L.classList.add(e.isHorizontal()?C.horizontalClass:C.verticalClass)})}),n("init",()=>{e.params.scrollbar.enabled===!1?K():(N(),y(),g())}),n("update resize observerUpdate lock unlock changeDirection",()=>{y()}),n("setTranslate",()=>{g()}),n("setTransition",(C,M)=>{m(M)}),n("enable disable",()=>{const{el:C}=e.scrollbar;C&&C.classList[e.enabled?"remove":"add"](...zn(e.params.scrollbar.lockClass))}),n("destroy",()=>{B()});const q=()=>{e.el.classList.remove(...zn(e.params.scrollbar.scrollbarDisabledClass)),e.scrollbar.el&&e.scrollbar.el.classList.remove(...zn(e.params.scrollbar.scrollbarDisabledClass)),N(),y(),g()},K=()=>{e.el.classList.add(...zn(e.params.scrollbar.scrollbarDisabledClass)),e.scrollbar.el&&e.scrollbar.el.classList.add(...zn(e.params.scrollbar.scrollbarDisabledClass)),B()};Object.assign(e.scrollbar,{enable:q,disable:K,updateSize:y,setTranslate:g,init:N,destroy:B})}function Z6(t){let{swiper:e,extendParams:r,on:n}=t;r({parallax:{enabled:!1}});const s="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",i=(l,u)=>{const{rtl:c}=e,f=c?-1:1,d=l.getAttribute("data-swiper-parallax")||"0";let g=l.getAttribute("data-swiper-parallax-x"),m=l.getAttribute("data-swiper-parallax-y");const y=l.getAttribute("data-swiper-parallax-scale"),E=l.getAttribute("data-swiper-parallax-opacity"),_=l.getAttribute("data-swiper-parallax-rotate");if(g||m?(g=g||"0",m=m||"0"):e.isHorizontal()?(g=d,m="0"):(m=d,g="0"),g.indexOf("%")>=0?g=`${parseInt(g,10)*u*f}%`:g=`${g*u*f}px`,m.indexOf("%")>=0?m=`${parseInt(m,10)*u}%`:m=`${m*u}px`,typeof E<"u"&&E!==null){const v=E-(E-1)*(1-Math.abs(u));l.style.opacity=v}let S=`translate3d(${g}, ${m}, 0px)`;if(typeof y<"u"&&y!==null){const v=y-(y-1)*(1-Math.abs(u));S+=` scale(${v})`}if(_&&typeof _<"u"&&_!==null){const v=_*u*-1;S+=` rotate(${v}deg)`}l.style.transform=S},o=()=>{const{el:l,slides:u,progress:c,snapGrid:f,isElement:d}=e,g=vt(l,s);e.isElement&&g.push(...vt(e.hostEl,s)),g.forEach(m=>{i(m,c)}),u.forEach((m,y)=>{let E=m.progress;e.params.slidesPerGroup>1&&e.params.slidesPerView!=="auto"&&(E+=Math.ceil(y/2)-c*(f.length-1)),E=Math.min(Math.max(E,-1),1),m.querySelectorAll(`${s}, [data-swiper-parallax-rotate]`).forEach(_=>{i(_,E)})})},a=function(l){l===void 0&&(l=e.params.speed);const{el:u,hostEl:c}=e,f=[...u.querySelectorAll(s)];e.isElement&&f.push(...c.querySelectorAll(s)),f.forEach(d=>{let g=parseInt(d.getAttribute("data-swiper-parallax-duration"),10)||l;l===0&&(g=0),d.style.transitionDuration=`${g}ms`})};n("beforeInit",()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)}),n("init",()=>{e.params.parallax.enabled&&o()}),n("setTranslate",()=>{e.params.parallax.enabled&&o()}),n("setTransition",(l,u)=>{e.params.parallax.enabled&&a(u)})}function ej(t){let{swiper:e,extendParams:r,on:n,emit:s}=t;const i=ot();r({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),e.zoom={enabled:!1};let o=1,a=!1,l,u;const c=[],f={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},d={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let m=1;Object.defineProperty(e.zoom,"scale",{get(){return m},set(re){if(m!==re){const R=f.imageEl,Q=f.slideEl;s("zoomChange",re,R,Q)}m=re}});function y(){if(c.length<2)return 1;const re=c[0].pageX,R=c[0].pageY,Q=c[1].pageX,de=c[1].pageY;return Math.sqrt((Q-re)**2+(de-R)**2)}function E(){const re=e.params.zoom,R=f.imageWrapEl.getAttribute("data-swiper-zoom")||re.maxRatio;if(re.limitToOriginalSize&&f.imageEl&&f.imageEl.naturalWidth){const Q=f.imageEl.naturalWidth/f.imageEl.offsetWidth;return Math.min(Q,R)}return R}function _(){if(c.length<2)return{x:null,y:null};const re=f.imageEl.getBoundingClientRect();return[(c[0].pageX+(c[1].pageX-c[0].pageX)/2-re.x-i.scrollX)/o,(c[0].pageY+(c[1].pageY-c[0].pageY)/2-re.y-i.scrollY)/o]}function S(){return e.isElement?"swiper-slide":`.${e.params.slideClass}`}function v(re){const R=S();return!!(re.target.matches(R)||e.slides.filter(Q=>Q.contains(re.target)).length>0)}function A(re){const R=`.${e.params.zoom.containerClass}`;return!!(re.target.matches(R)||[...e.hostEl.querySelectorAll(R)].filter(Q=>Q.contains(re.target)).length>0)}function k(re){if(re.pointerType==="mouse"&&c.splice(0,c.length),!v(re))return;const R=e.params.zoom;if(l=!1,u=!1,c.push(re),!(c.length<2)){if(l=!0,f.scaleStart=y(),!f.slideEl){f.slideEl=re.target.closest(`.${e.params.slideClass}, swiper-slide`),f.slideEl||(f.slideEl=e.slides[e.activeIndex]);let Q=f.slideEl.querySelector(`.${R.containerClass}`);if(Q&&(Q=Q.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),f.imageEl=Q,Q?f.imageWrapEl=Hi(f.imageEl,`.${R.containerClass}`)[0]:f.imageWrapEl=void 0,!f.imageWrapEl){f.imageEl=void 0;return}f.maxRatio=E()}if(f.imageEl){const[Q,de]=_();f.originX=Q,f.originY=de,f.imageEl.style.transitionDuration="0ms"}a=!0}}function x(re){if(!v(re))return;const R=e.params.zoom,Q=e.zoom,de=c.findIndex(ge=>ge.pointerId===re.pointerId);de>=0&&(c[de]=re),!(c.length<2)&&(u=!0,f.scaleMove=y(),f.imageEl&&(Q.scale=f.scaleMove/f.scaleStart*o,Q.scale>f.maxRatio&&(Q.scale=f.maxRatio-1+(Q.scale-f.maxRatio+1)**.5),Q.scale<R.minRatio&&(Q.scale=R.minRatio+1-(R.minRatio-Q.scale+1)**.5),f.imageEl.style.transform=`translate3d(0,0,0) scale(${Q.scale})`))}function D(re){if(!v(re)||re.pointerType==="mouse"&&re.type==="pointerout")return;const R=e.params.zoom,Q=e.zoom,de=c.findIndex(ge=>ge.pointerId===re.pointerId);de>=0&&c.splice(de,1),!(!l||!u)&&(l=!1,u=!1,f.imageEl&&(Q.scale=Math.max(Math.min(Q.scale,f.maxRatio),R.minRatio),f.imageEl.style.transitionDuration=`${e.params.speed}ms`,f.imageEl.style.transform=`translate3d(0,0,0) scale(${Q.scale})`,o=Q.scale,a=!1,Q.scale>1&&f.slideEl?f.slideEl.classList.add(`${R.zoomedSlideClass}`):Q.scale<=1&&f.slideEl&&f.slideEl.classList.remove(`${R.zoomedSlideClass}`),Q.scale===1&&(f.originX=0,f.originY=0,f.slideEl=void 0)))}let N;function B(){e.touchEventsData.preventTouchMoveFromPointerMove=!1}function q(){clearTimeout(N),e.touchEventsData.preventTouchMoveFromPointerMove=!0,N=setTimeout(()=>{B()})}function K(re){const R=e.device;if(!f.imageEl||d.isTouched)return;R.android&&re.cancelable&&re.preventDefault(),d.isTouched=!0;const Q=c.length>0?c[0]:re;d.touchesStart.x=Q.pageX,d.touchesStart.y=Q.pageY}function C(re){if(!v(re)||!A(re))return;const R=e.zoom;if(!f.imageEl||!d.isTouched||!f.slideEl)return;d.isMoved||(d.width=f.imageEl.offsetWidth||f.imageEl.clientWidth,d.height=f.imageEl.offsetHeight||f.imageEl.clientHeight,d.startX=Yh(f.imageWrapEl,"x")||0,d.startY=Yh(f.imageWrapEl,"y")||0,f.slideWidth=f.slideEl.offsetWidth,f.slideHeight=f.slideEl.offsetHeight,f.imageWrapEl.style.transitionDuration="0ms");const Q=d.width*R.scale,de=d.height*R.scale;if(d.minX=Math.min(f.slideWidth/2-Q/2,0),d.maxX=-d.minX,d.minY=Math.min(f.slideHeight/2-de/2,0),d.maxY=-d.minY,d.touchesCurrent.x=c.length>0?c[0].pageX:re.pageX,d.touchesCurrent.y=c.length>0?c[0].pageY:re.pageY,Math.max(Math.abs(d.touchesCurrent.x-d.touchesStart.x),Math.abs(d.touchesCurrent.y-d.touchesStart.y))>5&&(e.allowClick=!1),!d.isMoved&&!a){if(e.isHorizontal()&&(Math.floor(d.minX)===Math.floor(d.startX)&&d.touchesCurrent.x<d.touchesStart.x||Math.floor(d.maxX)===Math.floor(d.startX)&&d.touchesCurrent.x>d.touchesStart.x)){d.isTouched=!1,B();return}if(!e.isHorizontal()&&(Math.floor(d.minY)===Math.floor(d.startY)&&d.touchesCurrent.y<d.touchesStart.y||Math.floor(d.maxY)===Math.floor(d.startY)&&d.touchesCurrent.y>d.touchesStart.y)){d.isTouched=!1,B();return}}re.cancelable&&re.preventDefault(),re.stopPropagation(),q(),d.isMoved=!0;const pe=(R.scale-o)/(f.maxRatio-e.params.zoom.minRatio),{originX:X,originY:Y}=f;d.currentX=d.touchesCurrent.x-d.touchesStart.x+d.startX+pe*(d.width-X*2),d.currentY=d.touchesCurrent.y-d.touchesStart.y+d.startY+pe*(d.height-Y*2),d.currentX<d.minX&&(d.currentX=d.minX+1-(d.minX-d.currentX+1)**.8),d.currentX>d.maxX&&(d.currentX=d.maxX-1+(d.currentX-d.maxX+1)**.8),d.currentY<d.minY&&(d.currentY=d.minY+1-(d.minY-d.currentY+1)**.8),d.currentY>d.maxY&&(d.currentY=d.maxY-1+(d.currentY-d.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=d.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=d.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(d.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(d.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(d.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(d.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=d.touchesCurrent.x,g.prevPositionY=d.touchesCurrent.y,g.prevTime=Date.now(),f.imageWrapEl.style.transform=`translate3d(${d.currentX}px, ${d.currentY}px,0)`}function M(){const re=e.zoom;if(!f.imageEl)return;if(!d.isTouched||!d.isMoved){d.isTouched=!1,d.isMoved=!1;return}d.isTouched=!1,d.isMoved=!1;let R=300,Q=300;const de=g.x*R,ge=d.currentX+de,pe=g.y*Q,X=d.currentY+pe;g.x!==0&&(R=Math.abs((ge-d.currentX)/g.x)),g.y!==0&&(Q=Math.abs((X-d.currentY)/g.y));const Y=Math.max(R,Q);d.currentX=ge,d.currentY=X;const ie=d.width*re.scale,be=d.height*re.scale;d.minX=Math.min(f.slideWidth/2-ie/2,0),d.maxX=-d.minX,d.minY=Math.min(f.slideHeight/2-be/2,0),d.maxY=-d.minY,d.currentX=Math.max(Math.min(d.currentX,d.maxX),d.minX),d.currentY=Math.max(Math.min(d.currentY,d.maxY),d.minY),f.imageWrapEl.style.transitionDuration=`${Y}ms`,f.imageWrapEl.style.transform=`translate3d(${d.currentX}px, ${d.currentY}px,0)`}function L(){const re=e.zoom;f.slideEl&&e.activeIndex!==e.slides.indexOf(f.slideEl)&&(f.imageEl&&(f.imageEl.style.transform="translate3d(0,0,0) scale(1)"),f.imageWrapEl&&(f.imageWrapEl.style.transform="translate3d(0,0,0)"),f.slideEl.classList.remove(`${e.params.zoom.zoomedSlideClass}`),re.scale=1,o=1,f.slideEl=void 0,f.imageEl=void 0,f.imageWrapEl=void 0,f.originX=0,f.originY=0)}function H(re){const R=e.zoom,Q=e.params.zoom;if(!f.slideEl){re&&re.target&&(f.slideEl=re.target.closest(`.${e.params.slideClass}, swiper-slide`)),f.slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?f.slideEl=vt(e.slidesEl,`.${e.params.slideActiveClass}`)[0]:f.slideEl=e.slides[e.activeIndex]);let ae=f.slideEl.querySelector(`.${Q.containerClass}`);ae&&(ae=ae.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),f.imageEl=ae,ae?f.imageWrapEl=Hi(f.imageEl,`.${Q.containerClass}`)[0]:f.imageWrapEl=void 0}if(!f.imageEl||!f.imageWrapEl)return;e.params.cssMode&&(e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.touchAction="none"),f.slideEl.classList.add(`${Q.zoomedSlideClass}`);let de,ge,pe,X,Y,ie,be,he,ue,I,P,O,j,W,le,fe,V,te;typeof d.touchesStart.x>"u"&&re?(de=re.pageX,ge=re.pageY):(de=d.touchesStart.x,ge=d.touchesStart.y);const $=typeof re=="number"?re:null;o===1&&$&&(de=void 0,ge=void 0);const J=E();R.scale=$||J,o=$||J,re&&!(o===1&&$)?(V=f.slideEl.offsetWidth,te=f.slideEl.offsetHeight,pe=cu(f.slideEl).left+i.scrollX,X=cu(f.slideEl).top+i.scrollY,Y=pe+V/2-de,ie=X+te/2-ge,ue=f.imageEl.offsetWidth||f.imageEl.clientWidth,I=f.imageEl.offsetHeight||f.imageEl.clientHeight,P=ue*R.scale,O=I*R.scale,j=Math.min(V/2-P/2,0),W=Math.min(te/2-O/2,0),le=-j,fe=-W,be=Y*R.scale,he=ie*R.scale,be<j&&(be=j),be>le&&(be=le),he<W&&(he=W),he>fe&&(he=fe)):(be=0,he=0),$&&R.scale===1&&(f.originX=0,f.originY=0),f.imageWrapEl.style.transitionDuration="300ms",f.imageWrapEl.style.transform=`translate3d(${be}px, ${he}px,0)`,f.imageEl.style.transitionDuration="300ms",f.imageEl.style.transform=`translate3d(0,0,0) scale(${R.scale})`}function G(){const re=e.zoom,R=e.params.zoom;if(!f.slideEl){e.params.virtual&&e.params.virtual.enabled&&e.virtual?f.slideEl=vt(e.slidesEl,`.${e.params.slideActiveClass}`)[0]:f.slideEl=e.slides[e.activeIndex];let Q=f.slideEl.querySelector(`.${R.containerClass}`);Q&&(Q=Q.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),f.imageEl=Q,Q?f.imageWrapEl=Hi(f.imageEl,`.${R.containerClass}`)[0]:f.imageWrapEl=void 0}!f.imageEl||!f.imageWrapEl||(e.params.cssMode&&(e.wrapperEl.style.overflow="",e.wrapperEl.style.touchAction=""),re.scale=1,o=1,f.imageWrapEl.style.transitionDuration="300ms",f.imageWrapEl.style.transform="translate3d(0,0,0)",f.imageEl.style.transitionDuration="300ms",f.imageEl.style.transform="translate3d(0,0,0) scale(1)",f.slideEl.classList.remove(`${R.zoomedSlideClass}`),f.slideEl=void 0,f.originX=0,f.originY=0)}function z(re){const R=e.zoom;R.scale&&R.scale!==1?G():H(re)}function F(){const re=e.params.passiveListeners?{passive:!0,capture:!1}:!1,R=e.params.passiveListeners?{passive:!1,capture:!0}:!0;return{passiveListener:re,activeListenerWithCapture:R}}function ne(){const re=e.zoom;if(re.enabled)return;re.enabled=!0;const{passiveListener:R,activeListenerWithCapture:Q}=F();e.wrapperEl.addEventListener("pointerdown",k,R),e.wrapperEl.addEventListener("pointermove",x,Q),["pointerup","pointercancel","pointerout"].forEach(de=>{e.wrapperEl.addEventListener(de,D,R)}),e.wrapperEl.addEventListener("pointermove",C,Q)}function ce(){const re=e.zoom;if(!re.enabled)return;re.enabled=!1;const{passiveListener:R,activeListenerWithCapture:Q}=F();e.wrapperEl.removeEventListener("pointerdown",k,R),e.wrapperEl.removeEventListener("pointermove",x,Q),["pointerup","pointercancel","pointerout"].forEach(de=>{e.wrapperEl.removeEventListener(de,D,R)}),e.wrapperEl.removeEventListener("pointermove",C,Q)}n("init",()=>{e.params.zoom.enabled&&ne()}),n("destroy",()=>{ce()}),n("touchStart",(re,R)=>{e.zoom.enabled&&K(R)}),n("touchEnd",(re,R)=>{e.zoom.enabled&&M()}),n("doubleTap",(re,R)=>{!e.animating&&e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&z(R)}),n("transitionEnd",()=>{e.zoom.enabled&&e.params.zoom.enabled&&L()}),n("slideChange",()=>{e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&L()}),Object.assign(e.zoom,{enable:ne,disable:ce,in:H,out:G,toggle:z})}function tj(t){let{swiper:e,extendParams:r,on:n}=t;r({controller:{control:void 0,inverse:!1,by:"slide"}}),e.controller={control:void 0};function s(u,c){const f=function(){let y,E,_;return(S,v)=>{for(E=-1,y=S.length;y-E>1;)_=y+E>>1,S[_]<=v?E=_:y=_;return y}}();this.x=u,this.y=c,this.lastIndex=u.length-1;let d,g;return this.interpolate=function(y){return y?(g=f(this.x,y),d=g-1,(y-this.x[d])*(this.y[g]-this.y[d])/(this.x[g]-this.x[d])+this.y[d]):0},this}function i(u){e.controller.spline=e.params.loop?new s(e.slidesGrid,u.slidesGrid):new s(e.snapGrid,u.snapGrid)}function o(u,c){const f=e.controller.control;let d,g;const m=e.constructor;function y(E){if(E.destroyed)return;const _=e.rtlTranslate?-e.translate:e.translate;e.params.controller.by==="slide"&&(i(E),g=-e.controller.spline.interpolate(-_)),(!g||e.params.controller.by==="container")&&(d=(E.maxTranslate()-E.minTranslate())/(e.maxTranslate()-e.minTranslate()),(Number.isNaN(d)||!Number.isFinite(d))&&(d=1),g=(_-e.minTranslate())*d+E.minTranslate()),e.params.controller.inverse&&(g=E.maxTranslate()-g),E.updateProgress(g),E.setTranslate(g,e),E.updateActiveIndex(),E.updateSlidesClasses()}if(Array.isArray(f))for(let E=0;E<f.length;E+=1)f[E]!==c&&f[E]instanceof m&&y(f[E]);else f instanceof m&&c!==f&&y(f)}function a(u,c){const f=e.constructor,d=e.controller.control;let g;function m(y){y.destroyed||(y.setTransition(u,e),u!==0&&(y.transitionStart(),y.params.autoHeight&&Xi(()=>{y.updateAutoHeight()}),Go(y.wrapperEl,()=>{d&&y.transitionEnd()})))}if(Array.isArray(d))for(g=0;g<d.length;g+=1)d[g]!==c&&d[g]instanceof f&&m(d[g]);else d instanceof f&&c!==d&&m(d)}function l(){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)}n("beforeInit",()=>{if(typeof window<"u"&&(typeof e.params.controller.control=="string"||e.params.controller.control instanceof HTMLElement)){const u=document.querySelector(e.params.controller.control);if(u&&u.swiper)e.controller.control=u.swiper;else if(u){const c=f=>{e.controller.control=f.detail[0],e.update(),u.removeEventListener("init",c)};u.addEventListener("init",c)}return}e.controller.control=e.params.controller.control}),n("update",()=>{l()}),n("resize",()=>{l()}),n("observerUpdate",()=>{l()}),n("setTranslate",(u,c,f)=>{!e.controller.control||e.controller.control.destroyed||e.controller.setTranslate(c,f)}),n("setTransition",(u,c,f)=>{!e.controller.control||e.controller.control.destroyed||e.controller.setTransition(c,f)}),Object.assign(e.controller,{setTranslate:o,setTransition:a})}function rj(t){let{swiper:e,extendParams:r,on:n}=t;r({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null}}),e.a11y={clicked:!1};let s=null,i,o,a=new Date().getTime();function l(z){const F=s;F.length!==0&&(F.innerHTML="",F.innerHTML=z)}function u(z){const F=()=>Math.round(16*Math.random()).toString(16);return"x".repeat(z).replace(/x/g,F)}function c(z){z=$e(z),z.forEach(F=>{F.setAttribute("tabIndex","0")})}function f(z){z=$e(z),z.forEach(F=>{F.setAttribute("tabIndex","-1")})}function d(z,F){z=$e(z),z.forEach(ne=>{ne.setAttribute("role",F)})}function g(z,F){z=$e(z),z.forEach(ne=>{ne.setAttribute("aria-roledescription",F)})}function m(z,F){z=$e(z),z.forEach(ne=>{ne.setAttribute("aria-controls",F)})}function y(z,F){z=$e(z),z.forEach(ne=>{ne.setAttribute("aria-label",F)})}function E(z,F){z=$e(z),z.forEach(ne=>{ne.setAttribute("id",F)})}function _(z,F){z=$e(z),z.forEach(ne=>{ne.setAttribute("aria-live",F)})}function S(z){z=$e(z),z.forEach(F=>{F.setAttribute("aria-disabled",!0)})}function v(z){z=$e(z),z.forEach(F=>{F.setAttribute("aria-disabled",!1)})}function A(z){if(z.keyCode!==13&&z.keyCode!==32)return;const F=e.params.a11y,ne=z.target;if(!(e.pagination&&e.pagination.el&&(ne===e.pagination.el||e.pagination.el.contains(z.target))&&!z.target.matches(sn(e.params.pagination.bulletClass)))){if(e.navigation&&e.navigation.prevEl&&e.navigation.nextEl){const ce=$e(e.navigation.prevEl);$e(e.navigation.nextEl).includes(ne)&&(e.isEnd&&!e.params.loop||e.slideNext(),e.isEnd?l(F.lastSlideMessage):l(F.nextSlideMessage)),ce.includes(ne)&&(e.isBeginning&&!e.params.loop||e.slidePrev(),e.isBeginning?l(F.firstSlideMessage):l(F.prevSlideMessage))}e.pagination&&ne.matches(sn(e.params.pagination.bulletClass))&&ne.click()}}function k(){if(e.params.loop||e.params.rewind||!e.navigation)return;const{nextEl:z,prevEl:F}=e.navigation;F&&(e.isBeginning?(S(F),f(F)):(v(F),c(F))),z&&(e.isEnd?(S(z),f(z)):(v(z),c(z)))}function x(){return e.pagination&&e.pagination.bullets&&e.pagination.bullets.length}function D(){return x()&&e.params.pagination.clickable}function N(){const z=e.params.a11y;x()&&e.pagination.bullets.forEach(F=>{e.params.pagination.clickable&&(c(F),e.params.pagination.renderBullet||(d(F,"button"),y(F,z.paginationBulletMessage.replace(/\{\{index\}\}/,la(F)+1)))),F.matches(sn(e.params.pagination.bulletActiveClass))?F.setAttribute("aria-current","true"):F.removeAttribute("aria-current")})}const B=(z,F,ne)=>{c(z),z.tagName!=="BUTTON"&&(d(z,"button"),z.addEventListener("keydown",A)),y(z,ne),m(z,F)},q=z=>{o&&o!==z.target&&!o.contains(z.target)&&(i=!0),e.a11y.clicked=!0},K=()=>{i=!1,requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.destroyed||(e.a11y.clicked=!1)})})},C=z=>{a=new Date().getTime()},M=z=>{if(e.a11y.clicked||new Date().getTime()-a<100)return;const F=z.target.closest(`.${e.params.slideClass}, swiper-slide`);if(!F||!e.slides.includes(F))return;o=F;const ne=e.slides.indexOf(F)===e.activeIndex,ce=e.params.watchSlidesProgress&&e.visibleSlides&&e.visibleSlides.includes(F);ne||ce||z.sourceCapabilities&&z.sourceCapabilities.firesTouchEvents||(e.isHorizontal()?e.el.scrollLeft=0:e.el.scrollTop=0,requestAnimationFrame(()=>{i||(e.params.loop?e.slideToLoop(parseInt(F.getAttribute("data-swiper-slide-index")),0):e.slideTo(e.slides.indexOf(F),0),i=!1)}))},L=()=>{const z=e.params.a11y;z.itemRoleDescriptionMessage&&g(e.slides,z.itemRoleDescriptionMessage),z.slideRole&&d(e.slides,z.slideRole);const F=e.slides.length;z.slideLabelMessage&&e.slides.forEach((ne,ce)=>{const re=e.params.loop?parseInt(ne.getAttribute("data-swiper-slide-index"),10):ce,R=z.slideLabelMessage.replace(/\{\{index\}\}/,re+1).replace(/\{\{slidesLength\}\}/,F);y(ne,R)})},H=()=>{const z=e.params.a11y;e.el.append(s);const F=e.el;z.containerRoleDescriptionMessage&&g(F,z.containerRoleDescriptionMessage),z.containerMessage&&y(F,z.containerMessage);const ne=e.wrapperEl,ce=z.id||ne.getAttribute("id")||`swiper-wrapper-${u(16)}`,re=e.params.autoplay&&e.params.autoplay.enabled?"off":"polite";E(ne,ce),_(ne,re),L();let{nextEl:R,prevEl:Q}=e.navigation?e.navigation:{};R=$e(R),Q=$e(Q),R&&R.forEach(ge=>B(ge,ce,z.nextSlideMessage)),Q&&Q.forEach(ge=>B(ge,ce,z.prevSlideMessage)),D()&&$e(e.pagination.el).forEach(pe=>{pe.addEventListener("keydown",A)}),_t().addEventListener("visibilitychange",C),e.el.addEventListener("focus",M,!0),e.el.addEventListener("focus",M,!0),e.el.addEventListener("pointerdown",q,!0),e.el.addEventListener("pointerup",K,!0)};function G(){s&&s.remove();let{nextEl:z,prevEl:F}=e.navigation?e.navigation:{};z=$e(z),F=$e(F),z&&z.forEach(ce=>ce.removeEventListener("keydown",A)),F&&F.forEach(ce=>ce.removeEventListener("keydown",A)),D()&&$e(e.pagination.el).forEach(re=>{re.removeEventListener("keydown",A)}),_t().removeEventListener("visibilitychange",C),e.el&&typeof e.el!="string"&&(e.el.removeEventListener("focus",M,!0),e.el.removeEventListener("pointerdown",q,!0),e.el.removeEventListener("pointerup",K,!0))}n("beforeInit",()=>{s=Jt("span",e.params.a11y.notificationClass),s.setAttribute("aria-live","assertive"),s.setAttribute("aria-atomic","true")}),n("afterInit",()=>{e.params.a11y.enabled&&H()}),n("slidesLengthChange snapGridLengthChange slidesGridLengthChange",()=>{e.params.a11y.enabled&&L()}),n("fromEdge toEdge afterInit lock unlock",()=>{e.params.a11y.enabled&&k()}),n("paginationUpdate",()=>{e.params.a11y.enabled&&N()}),n("destroy",()=>{e.params.a11y.enabled&&G()})}function nj(t){let{swiper:e,extendParams:r,on:n}=t;r({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let s=!1,i={};const o=g=>g.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),a=g=>{const m=ot();let y;g?y=new URL(g):y=m.location;const E=y.pathname.slice(1).split("/").filter(A=>A!==""),_=E.length,S=E[_-2],v=E[_-1];return{key:S,value:v}},l=(g,m)=>{const y=ot();if(!s||!e.params.history.enabled)return;let E;e.params.url?E=new URL(e.params.url):E=y.location;const _=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${m}"]`):e.slides[m];let S=o(_.getAttribute("data-history"));if(e.params.history.root.length>0){let A=e.params.history.root;A[A.length-1]==="/"&&(A=A.slice(0,A.length-1)),S=`${A}/${g?`${g}/`:""}${S}`}else E.pathname.includes(g)||(S=`${g?`${g}/`:""}${S}`);e.params.history.keepQuery&&(S+=E.search);const v=y.history.state;v&&v.value===S||(e.params.history.replaceState?y.history.replaceState({value:S},null,S):y.history.pushState({value:S},null,S))},u=(g,m,y)=>{if(m)for(let E=0,_=e.slides.length;E<_;E+=1){const S=e.slides[E];if(o(S.getAttribute("data-history"))===m){const A=e.getSlideIndex(S);e.slideTo(A,g,y)}}else e.slideTo(0,g,y)},c=()=>{i=a(e.params.url),u(e.params.speed,i.value,!1)},f=()=>{const g=ot();if(e.params.history){if(!g.history||!g.history.pushState){e.params.history.enabled=!1,e.params.hashNavigation.enabled=!0;return}if(s=!0,i=a(e.params.url),!i.key&&!i.value){e.params.history.replaceState||g.addEventListener("popstate",c);return}u(0,i.value,e.params.runCallbacksOnInit),e.params.history.replaceState||g.addEventListener("popstate",c)}},d=()=>{const g=ot();e.params.history.replaceState||g.removeEventListener("popstate",c)};n("init",()=>{e.params.history.enabled&&f()}),n("destroy",()=>{e.params.history.enabled&&d()}),n("transitionEnd _freeModeNoMomentumRelease",()=>{s&&l(e.params.history.key,e.activeIndex)}),n("slideChange",()=>{s&&e.params.cssMode&&l(e.params.history.key,e.activeIndex)})}function ij(t){let{swiper:e,extendParams:r,emit:n,on:s}=t,i=!1;const o=_t(),a=ot();r({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(d,g){if(e.virtual&&e.params.virtual.enabled){const m=e.slides.filter(E=>E.getAttribute("data-hash")===g)[0];return m?parseInt(m.getAttribute("data-swiper-slide-index"),10):0}return e.getSlideIndex(vt(e.slidesEl,`.${e.params.slideClass}[data-hash="${g}"], swiper-slide[data-hash="${g}"]`)[0])}}});const l=()=>{n("hashChange");const d=o.location.hash.replace("#",""),g=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],m=g?g.getAttribute("data-hash"):"";if(d!==m){const y=e.params.hashNavigation.getSlideIndex(e,d);if(typeof y>"u"||Number.isNaN(y))return;e.slideTo(y)}},u=()=>{if(!i||!e.params.hashNavigation.enabled)return;const d=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],g=d?d.getAttribute("data-hash")||d.getAttribute("data-history"):"";e.params.hashNavigation.replaceState&&a.history&&a.history.replaceState?(a.history.replaceState(null,null,`#${g}`||""),n("hashSet")):(o.location.hash=g||"",n("hashSet"))},c=()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;i=!0;const d=o.location.hash.replace("#","");if(d){const m=e.params.hashNavigation.getSlideIndex(e,d);e.slideTo(m||0,0,e.params.runCallbacksOnInit,!0)}e.params.hashNavigation.watchState&&a.addEventListener("hashchange",l)},f=()=>{e.params.hashNavigation.watchState&&a.removeEventListener("hashchange",l)};s("init",()=>{e.params.hashNavigation.enabled&&c()}),s("destroy",()=>{e.params.hashNavigation.enabled&&f()}),s("transitionEnd _freeModeNoMomentumRelease",()=>{i&&u()}),s("slideChange",()=>{i&&e.params.cssMode&&u()})}function sj(t){let{swiper:e,extendParams:r,on:n,emit:s,params:i}=t;e.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let o,a,l=i&&i.autoplay?i.autoplay.delay:3e3,u=i&&i.autoplay?i.autoplay.delay:3e3,c,f=new Date().getTime(),d,g,m,y,E,_,S;function v(F){!e||e.destroyed||!e.wrapperEl||F.target===e.wrapperEl&&(e.wrapperEl.removeEventListener("transitionend",v),!(S||F.detail&&F.detail.bySwiperTouchMove)&&q())}const A=()=>{if(e.destroyed||!e.autoplay.running)return;e.autoplay.paused?d=!0:d&&(u=c,d=!1);const F=e.autoplay.paused?c:f+u-new Date().getTime();e.autoplay.timeLeft=F,s("autoplayTimeLeft",F,F/l),a=requestAnimationFrame(()=>{A()})},k=()=>{let F;return e.virtual&&e.params.virtual.enabled?F=e.slides.filter(ce=>ce.classList.contains("swiper-slide-active"))[0]:F=e.slides[e.activeIndex],F?parseInt(F.getAttribute("data-swiper-autoplay"),10):void 0},x=F=>{if(e.destroyed||!e.autoplay.running)return;cancelAnimationFrame(a),A();let ne=typeof F>"u"?e.params.autoplay.delay:F;l=e.params.autoplay.delay,u=e.params.autoplay.delay;const ce=k();!Number.isNaN(ce)&&ce>0&&typeof F>"u"&&(ne=ce,l=ce,u=ce),c=ne;const re=e.params.speed,R=()=>{!e||e.destroyed||(e.params.autoplay.reverseDirection?!e.isBeginning||e.params.loop||e.params.rewind?(e.slidePrev(re,!0,!0),s("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(e.slides.length-1,re,!0,!0),s("autoplay")):!e.isEnd||e.params.loop||e.params.rewind?(e.slideNext(re,!0,!0),s("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(0,re,!0,!0),s("autoplay")),e.params.cssMode&&(f=new Date().getTime(),requestAnimationFrame(()=>{x()})))};return ne>0?(clearTimeout(o),o=setTimeout(()=>{R()},ne)):requestAnimationFrame(()=>{R()}),ne},D=()=>{f=new Date().getTime(),e.autoplay.running=!0,x(),s("autoplayStart")},N=()=>{e.autoplay.running=!1,clearTimeout(o),cancelAnimationFrame(a),s("autoplayStop")},B=(F,ne)=>{if(e.destroyed||!e.autoplay.running)return;clearTimeout(o),F||(_=!0);const ce=()=>{s("autoplayPause"),e.params.autoplay.waitForTransition?e.wrapperEl.addEventListener("transitionend",v):q()};if(e.autoplay.paused=!0,ne){E&&(c=e.params.autoplay.delay),E=!1,ce();return}c=(c||e.params.autoplay.delay)-(new Date().getTime()-f),!(e.isEnd&&c<0&&!e.params.loop)&&(c<0&&(c=0),ce())},q=()=>{e.isEnd&&c<0&&!e.params.loop||e.destroyed||!e.autoplay.running||(f=new Date().getTime(),_?(_=!1,x(c)):x(),e.autoplay.paused=!1,s("autoplayResume"))},K=()=>{if(e.destroyed||!e.autoplay.running)return;const F=_t();F.visibilityState==="hidden"&&(_=!0,B(!0)),F.visibilityState==="visible"&&q()},C=F=>{F.pointerType==="mouse"&&(_=!0,S=!0,!(e.animating||e.autoplay.paused)&&B(!0))},M=F=>{F.pointerType==="mouse"&&(S=!1,e.autoplay.paused&&q())},L=()=>{e.params.autoplay.pauseOnMouseEnter&&(e.el.addEventListener("pointerenter",C),e.el.addEventListener("pointerleave",M))},H=()=>{e.el&&typeof e.el!="string"&&(e.el.removeEventListener("pointerenter",C),e.el.removeEventListener("pointerleave",M))},G=()=>{_t().addEventListener("visibilitychange",K)},z=()=>{_t().removeEventListener("visibilitychange",K)};n("init",()=>{e.params.autoplay.enabled&&(L(),G(),D())}),n("destroy",()=>{H(),z(),e.autoplay.running&&N()}),n("_freeModeStaticRelease",()=>{(m||_)&&q()}),n("_freeModeNoMomentumRelease",()=>{e.params.autoplay.disableOnInteraction?N():B(!0,!0)}),n("beforeTransitionStart",(F,ne,ce)=>{e.destroyed||!e.autoplay.running||(ce||!e.params.autoplay.disableOnInteraction?B(!0,!0):N())}),n("sliderFirstMove",()=>{if(!(e.destroyed||!e.autoplay.running)){if(e.params.autoplay.disableOnInteraction){N();return}g=!0,m=!1,_=!1,y=setTimeout(()=>{_=!0,m=!0,B(!0)},200)}}),n("touchEnd",()=>{if(!(e.destroyed||!e.autoplay.running||!g)){if(clearTimeout(y),clearTimeout(o),e.params.autoplay.disableOnInteraction){m=!1,g=!1;return}m&&e.params.cssMode&&q(),m=!1,g=!1}}),n("slideChange",()=>{e.destroyed||!e.autoplay.running||(E=!0)}),Object.assign(e.autoplay,{start:D,stop:N,pause:B,resume:q})}function oj(t){let{swiper:e,extendParams:r,on:n}=t;r({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let s=!1,i=!1;e.thumbs={swiper:null};function o(){const u=e.thumbs.swiper;if(!u||u.destroyed)return;const c=u.clickedIndex,f=u.clickedSlide;if(f&&f.classList.contains(e.params.thumbs.slideThumbActiveClass)||typeof c>"u"||c===null)return;let d;u.params.loop?d=parseInt(u.clickedSlide.getAttribute("data-swiper-slide-index"),10):d=c,e.params.loop?e.slideToLoop(d):e.slideTo(d)}function a(){const{thumbs:u}=e.params;if(s)return!1;s=!0;const c=e.constructor;if(u.swiper instanceof c)e.thumbs.swiper=u.swiper,Object.assign(e.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(e.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper.update();else if(Do(u.swiper)){const f=Object.assign({},u.swiper);Object.assign(f,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper=new c(f),i=!0}return e.thumbs.swiper.el.classList.add(e.params.thumbs.thumbsContainerClass),e.thumbs.swiper.on("tap",o),!0}function l(u){const c=e.thumbs.swiper;if(!c||c.destroyed)return;const f=c.params.slidesPerView==="auto"?c.slidesPerViewDynamic():c.params.slidesPerView;let d=1;const g=e.params.thumbs.slideThumbActiveClass;if(e.params.slidesPerView>1&&!e.params.centeredSlides&&(d=e.params.slidesPerView),e.params.thumbs.multipleActiveThumbs||(d=1),d=Math.floor(d),c.slides.forEach(E=>E.classList.remove(g)),c.params.loop||c.params.virtual&&c.params.virtual.enabled)for(let E=0;E<d;E+=1)vt(c.slidesEl,`[data-swiper-slide-index="${e.realIndex+E}"]`).forEach(_=>{_.classList.add(g)});else for(let E=0;E<d;E+=1)c.slides[e.realIndex+E]&&c.slides[e.realIndex+E].classList.add(g);const m=e.params.thumbs.autoScrollOffset,y=m&&!c.params.loop;if(e.realIndex!==c.realIndex||y){const E=c.activeIndex;let _,S;if(c.params.loop){const v=c.slides.filter(A=>A.getAttribute("data-swiper-slide-index")===`${e.realIndex}`)[0];_=c.slides.indexOf(v),S=e.activeIndex>e.previousIndex?"next":"prev"}else _=e.realIndex,S=_>e.previousIndex?"next":"prev";y&&(_+=S==="next"?m:-1*m),c.visibleSlidesIndexes&&c.visibleSlidesIndexes.indexOf(_)<0&&(c.params.centeredSlides?_>E?_=_-Math.floor(f/2)+1:_=_+Math.floor(f/2)-1:_>E&&c.params.slidesPerGroup,c.slideTo(_,u?0:void 0))}}n("beforeInit",()=>{const{thumbs:u}=e.params;if(!(!u||!u.swiper))if(typeof u.swiper=="string"||u.swiper instanceof HTMLElement){const c=_t(),f=()=>{const g=typeof u.swiper=="string"?c.querySelector(u.swiper):u.swiper;if(g&&g.swiper)u.swiper=g.swiper,a(),l(!0);else if(g){const m=y=>{u.swiper=y.detail[0],g.removeEventListener("init",m),a(),l(!0),u.swiper.update(),e.update()};g.addEventListener("init",m)}return g},d=()=>{if(e.destroyed)return;f()||requestAnimationFrame(d)};requestAnimationFrame(d)}else a(),l(!0)}),n("slideChange update resize observerUpdate",()=>{l()}),n("setTransition",(u,c)=>{const f=e.thumbs.swiper;!f||f.destroyed||f.setTransition(c)}),n("beforeDestroy",()=>{const u=e.thumbs.swiper;!u||u.destroyed||i&&u.destroy()}),Object.assign(e.thumbs,{init:a,update:l})}function aj(t){let{swiper:e,extendParams:r,emit:n,once:s}=t;r({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}});function i(){if(e.params.cssMode)return;const l=e.getTranslate();e.setTranslate(l),e.setTransition(0),e.touchEventsData.velocities.length=0,e.freeMode.onTouchEnd({currentPos:e.rtl?e.translate:-e.translate})}function o(){if(e.params.cssMode)return;const{touchEventsData:l,touches:u}=e;l.velocities.length===0&&l.velocities.push({position:u[e.isHorizontal()?"startX":"startY"],time:l.touchStartTime}),l.velocities.push({position:u[e.isHorizontal()?"currentX":"currentY"],time:ar()})}function a(l){let{currentPos:u}=l;if(e.params.cssMode)return;const{params:c,wrapperEl:f,rtlTranslate:d,snapGrid:g,touchEventsData:m}=e,E=ar()-m.touchStartTime;if(u<-e.minTranslate()){e.slideTo(e.activeIndex);return}if(u>-e.maxTranslate()){e.slides.length<g.length?e.slideTo(g.length-1):e.slideTo(e.slides.length-1);return}if(c.freeMode.momentum){if(m.velocities.length>1){const N=m.velocities.pop(),B=m.velocities.pop(),q=N.position-B.position,K=N.time-B.time;e.velocity=q/K,e.velocity/=2,Math.abs(e.velocity)<c.freeMode.minimumVelocity&&(e.velocity=0),(K>150||ar()-N.time>300)&&(e.velocity=0)}else e.velocity=0;e.velocity*=c.freeMode.momentumVelocityRatio,m.velocities.length=0;let _=1e3*c.freeMode.momentumRatio;const S=e.velocity*_;let v=e.translate+S;d&&(v=-v);let A=!1,k;const x=Math.abs(e.velocity)*20*c.freeMode.momentumBounceRatio;let D;if(v<e.maxTranslate())c.freeMode.momentumBounce?(v+e.maxTranslate()<-x&&(v=e.maxTranslate()-x),k=e.maxTranslate(),A=!0,m.allowMomentumBounce=!0):v=e.maxTranslate(),c.loop&&c.centeredSlides&&(D=!0);else if(v>e.minTranslate())c.freeMode.momentumBounce?(v-e.minTranslate()>x&&(v=e.minTranslate()+x),k=e.minTranslate(),A=!0,m.allowMomentumBounce=!0):v=e.minTranslate(),c.loop&&c.centeredSlides&&(D=!0);else if(c.freeMode.sticky){let N;for(let B=0;B<g.length;B+=1)if(g[B]>-v){N=B;break}Math.abs(g[N]-v)<Math.abs(g[N-1]-v)||e.swipeDirection==="next"?v=g[N]:v=g[N-1],v=-v}if(D&&s("transitionEnd",()=>{e.loopFix()}),e.velocity!==0){if(d?_=Math.abs((-v-e.translate)/e.velocity):_=Math.abs((v-e.translate)/e.velocity),c.freeMode.sticky){const N=Math.abs((d?-v:v)-e.translate),B=e.slidesSizesGrid[e.activeIndex];N<B?_=c.speed:N<2*B?_=c.speed*1.5:_=c.speed*2.5}}else if(c.freeMode.sticky){e.slideToClosest();return}c.freeMode.momentumBounce&&A?(e.updateProgress(k),e.setTransition(_),e.setTranslate(v),e.transitionStart(!0,e.swipeDirection),e.animating=!0,Go(f,()=>{!e||e.destroyed||!m.allowMomentumBounce||(n("momentumBounce"),e.setTransition(c.speed),setTimeout(()=>{e.setTranslate(k),Go(f,()=>{!e||e.destroyed||e.transitionEnd()})},0))})):e.velocity?(n("_freeModeNoMomentumRelease"),e.updateProgress(v),e.setTransition(_),e.setTranslate(v),e.transitionStart(!0,e.swipeDirection),e.animating||(e.animating=!0,Go(f,()=>{!e||e.destroyed||e.transitionEnd()}))):e.updateProgress(v),e.updateActiveIndex(),e.updateSlidesClasses()}else if(c.freeMode.sticky){e.slideToClosest();return}else c.freeMode&&n("_freeModeNoMomentumRelease");(!c.freeMode.momentum||E>=c.longSwipesMs)&&(n("_freeModeStaticRelease"),e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses())}Object.assign(e,{freeMode:{onTouchStart:i,onTouchMove:o,onTouchEnd:a}})}function lj(t){let{swiper:e,extendParams:r,on:n}=t;r({grid:{rows:1,fill:"column"}});let s,i,o,a;const l=()=>{let y=e.params.spaceBetween;return typeof y=="string"&&y.indexOf("%")>=0?y=parseFloat(y.replace("%",""))/100*e.size:typeof y=="string"&&(y=parseFloat(y)),y},u=y=>{const{slidesPerView:E}=e.params,{rows:_,fill:S}=e.params.grid,v=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:y.length;o=Math.floor(v/_),Math.floor(v/_)===v/_?s=v:s=Math.ceil(v/_)*_,E!=="auto"&&S==="row"&&(s=Math.max(s,E*_)),i=s/_},c=()=>{e.slides&&e.slides.forEach(y=>{y.swiperSlideGridSet&&(y.style.height="",y.style[e.getDirectionLabel("margin-top")]="")})},f=(y,E,_)=>{const{slidesPerGroup:S}=e.params,v=l(),{rows:A,fill:k}=e.params.grid,x=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:_.length;let D,N,B;if(k==="row"&&S>1){const q=Math.floor(y/(S*A)),K=y-A*S*q,C=q===0?S:Math.min(Math.ceil((x-q*A*S)/A),S);B=Math.floor(K/C),N=K-B*C+q*S,D=N+B*s/A,E.style.order=D}else k==="column"?(N=Math.floor(y/A),B=y-N*A,(N>o||N===o&&B===A-1)&&(B+=1,B>=A&&(B=0,N+=1))):(B=Math.floor(y/i),N=y-B*i);E.row=B,E.column=N,E.style.height=`calc((100% - ${(A-1)*v}px) / ${A})`,E.style[e.getDirectionLabel("margin-top")]=B!==0?v&&`${v}px`:"",E.swiperSlideGridSet=!0},d=(y,E)=>{const{centeredSlides:_,roundLengths:S}=e.params,v=l(),{rows:A}=e.params.grid;if(e.virtualSize=(y+v)*s,e.virtualSize=Math.ceil(e.virtualSize/A)-v,e.params.cssMode||(e.wrapperEl.style[e.getDirectionLabel("width")]=`${e.virtualSize+v}px`),_){const k=[];for(let x=0;x<E.length;x+=1){let D=E[x];S&&(D=Math.floor(D)),E[x]<e.virtualSize+E[0]&&k.push(D)}E.splice(0,E.length),E.push(...k)}},g=()=>{a=e.params.grid&&e.params.grid.rows>1},m=()=>{const{params:y,el:E}=e,_=y.grid&&y.grid.rows>1;a&&!_?(E.classList.remove(`${y.containerModifierClass}grid`,`${y.containerModifierClass}grid-column`),o=1,e.emitContainerClasses()):!a&&_&&(E.classList.add(`${y.containerModifierClass}grid`),y.grid.fill==="column"&&E.classList.add(`${y.containerModifierClass}grid-column`),e.emitContainerClasses()),a=_};n("init",g),n("update",m),e.grid={initSlides:u,unsetSlides:c,updateSlide:f,updateWrapperSize:d}}function uj(t){const e=this,{params:r,slidesEl:n}=e;r.loop&&e.loopDestroy();const s=i=>{if(typeof i=="string"){const o=document.createElement("div");o.innerHTML=i,n.append(o.children[0]),o.innerHTML=""}else n.append(i)};if(typeof t=="object"&&"length"in t)for(let i=0;i<t.length;i+=1)t[i]&&s(t[i]);else s(t);e.recalcSlides(),r.loop&&e.loopCreate(),(!r.observer||e.isElement)&&e.update()}function cj(t){const e=this,{params:r,activeIndex:n,slidesEl:s}=e;r.loop&&e.loopDestroy();let i=n+1;const o=a=>{if(typeof a=="string"){const l=document.createElement("div");l.innerHTML=a,s.prepend(l.children[0]),l.innerHTML=""}else s.prepend(a)};if(typeof t=="object"&&"length"in t){for(let a=0;a<t.length;a+=1)t[a]&&o(t[a]);i=n+t.length}else o(t);e.recalcSlides(),r.loop&&e.loopCreate(),(!r.observer||e.isElement)&&e.update(),e.slideTo(i,0,!1)}function fj(t,e){const r=this,{params:n,activeIndex:s,slidesEl:i}=r;let o=s;n.loop&&(o-=r.loopedSlides,r.loopDestroy(),r.recalcSlides());const a=r.slides.length;if(t<=0){r.prependSlide(e);return}if(t>=a){r.appendSlide(e);return}let l=o>t?o+1:o;const u=[];for(let c=a-1;c>=t;c-=1){const f=r.slides[c];f.remove(),u.unshift(f)}if(typeof e=="object"&&"length"in e){for(let c=0;c<e.length;c+=1)e[c]&&i.append(e[c]);l=o>t?o+e.length:o}else i.append(e);for(let c=0;c<u.length;c+=1)i.append(u[c]);r.recalcSlides(),n.loop&&r.loopCreate(),(!n.observer||r.isElement)&&r.update(),n.loop?r.slideTo(l+r.loopedSlides,0,!1):r.slideTo(l,0,!1)}function dj(t){const e=this,{params:r,activeIndex:n}=e;let s=n;r.loop&&(s-=e.loopedSlides,e.loopDestroy());let i=s,o;if(typeof t=="object"&&"length"in t){for(let a=0;a<t.length;a+=1)o=t[a],e.slides[o]&&e.slides[o].remove(),o<i&&(i-=1);i=Math.max(i,0)}else o=t,e.slides[o]&&e.slides[o].remove(),o<i&&(i-=1),i=Math.max(i,0);e.recalcSlides(),r.loop&&e.loopCreate(),(!r.observer||e.isElement)&&e.update(),r.loop?e.slideTo(i+e.loopedSlides,0,!1):e.slideTo(i,0,!1)}function hj(){const t=this,e=[];for(let r=0;r<t.slides.length;r+=1)e.push(r);t.removeSlide(e)}function pj(t){let{swiper:e}=t;Object.assign(e,{appendSlide:uj.bind(e),prependSlide:cj.bind(e),addSlide:fj.bind(e),removeSlide:dj.bind(e),removeAllSlides:hj.bind(e)})}function co(t){const{effect:e,swiper:r,on:n,setTranslate:s,setTransition:i,overwriteParams:o,perspective:a,recreateShadows:l,getEffectParams:u}=t;n("beforeInit",()=>{if(r.params.effect!==e)return;r.classNames.push(`${r.params.containerModifierClass}${e}`),a&&a()&&r.classNames.push(`${r.params.containerModifierClass}3d`);const f=o?o():{};Object.assign(r.params,f),Object.assign(r.originalParams,f)}),n("setTranslate",()=>{r.params.effect===e&&s()}),n("setTransition",(f,d)=>{r.params.effect===e&&i(d)}),n("transitionEnd",()=>{if(r.params.effect===e&&l){if(!u||!u().slideShadows)return;r.slides.forEach(f=>{f.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(d=>d.remove())}),l()}});let c;n("virtualUpdate",()=>{r.params.effect===e&&(r.slides.length||(c=!0),requestAnimationFrame(()=>{c&&r.slides&&r.slides.length&&(s(),c=!1)}))})}function Ca(t,e){const r=cs(e);return r!==e&&(r.style.backfaceVisibility="hidden",r.style["-webkit-backface-visibility"]="hidden"),r}function lc(t){let{swiper:e,duration:r,transformElements:n,allSlides:s}=t;const{activeIndex:i}=e,o=a=>a.parentElement?a.parentElement:e.slides.filter(u=>u.shadowRoot&&u.shadowRoot===a.parentNode)[0];if(e.params.virtualTranslate&&r!==0){let a=!1,l;s?l=n:l=n.filter(u=>{const c=u.classList.contains("swiper-slide-transform")?o(u):u;return e.getSlideIndex(c)===i}),l.forEach(u=>{Go(u,()=>{if(a||!e||e.destroyed)return;a=!0,e.animating=!1;const c=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});e.wrapperEl.dispatchEvent(c)})})}}function gj(t){let{swiper:e,extendParams:r,on:n}=t;r({fadeEffect:{crossFade:!1}}),co({effect:"fade",swiper:e,on:n,setTranslate:()=>{const{slides:o}=e,a=e.params.fadeEffect;for(let l=0;l<o.length;l+=1){const u=e.slides[l];let f=-u.swiperSlideOffset;e.params.virtualTranslate||(f-=e.translate);let d=0;e.isHorizontal()||(d=f,f=0);const g=e.params.fadeEffect.crossFade?Math.max(1-Math.abs(u.progress),0):1+Math.min(Math.max(u.progress,-1),0),m=Ca(a,u);m.style.opacity=g,m.style.transform=`translate3d(${f}px, ${d}px, 0px)`}},setTransition:o=>{const a=e.slides.map(l=>cs(l));a.forEach(l=>{l.style.transitionDuration=`${o}ms`}),lc({swiper:e,duration:o,transformElements:a,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})}function mj(t){let{swiper:e,extendParams:r,on:n}=t;r({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const s=(l,u,c)=>{let f=c?l.querySelector(".swiper-slide-shadow-left"):l.querySelector(".swiper-slide-shadow-top"),d=c?l.querySelector(".swiper-slide-shadow-right"):l.querySelector(".swiper-slide-shadow-bottom");f||(f=Jt("div",`swiper-slide-shadow-cube swiper-slide-shadow-${c?"left":"top"}`.split(" ")),l.append(f)),d||(d=Jt("div",`swiper-slide-shadow-cube swiper-slide-shadow-${c?"right":"bottom"}`.split(" ")),l.append(d)),f&&(f.style.opacity=Math.max(-u,0)),d&&(d.style.opacity=Math.max(u,0))};co({effect:"cube",swiper:e,on:n,setTranslate:()=>{const{el:l,wrapperEl:u,slides:c,width:f,height:d,rtlTranslate:g,size:m,browser:y}=e,E=e.params.cubeEffect,_=e.isHorizontal(),S=e.virtual&&e.params.virtual.enabled;let v=0,A;E.shadow&&(_?(A=e.wrapperEl.querySelector(".swiper-cube-shadow"),A||(A=Jt("div","swiper-cube-shadow"),e.wrapperEl.append(A)),A.style.height=`${f}px`):(A=l.querySelector(".swiper-cube-shadow"),A||(A=Jt("div","swiper-cube-shadow"),l.append(A))));for(let x=0;x<c.length;x+=1){const D=c[x];let N=x;S&&(N=parseInt(D.getAttribute("data-swiper-slide-index"),10));let B=N*90,q=Math.floor(B/360);g&&(B=-B,q=Math.floor(-B/360));const K=Math.max(Math.min(D.progress,1),-1);let C=0,M=0,L=0;N%4===0?(C=-q*4*m,L=0):(N-1)%4===0?(C=0,L=-q*4*m):(N-2)%4===0?(C=m+q*4*m,L=m):(N-3)%4===0&&(C=-m,L=3*m+m*4*q),g&&(C=-C),_||(M=C,C=0);const H=`rotateX(${_?0:-B}deg) rotateY(${_?B:0}deg) translate3d(${C}px, ${M}px, ${L}px)`;K<=1&&K>-1&&(v=N*90+K*90,g&&(v=-N*90-K*90),e.browser&&e.browser.need3dFix&&Math.abs(v)/90%2===1&&(v+=.001)),D.style.transform=H,E.slideShadows&&s(D,K,_)}if(u.style.transformOrigin=`50% 50% -${m/2}px`,u.style["-webkit-transform-origin"]=`50% 50% -${m/2}px`,E.shadow)if(_)A.style.transform=`translate3d(0px, ${f/2+E.shadowOffset}px, ${-f/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${E.shadowScale})`;else{const x=Math.abs(v)-Math.floor(Math.abs(v)/90)*90,D=1.5-(Math.sin(x*2*Math.PI/360)/2+Math.cos(x*2*Math.PI/360)/2),N=E.shadowScale,B=E.shadowScale/D,q=E.shadowOffset;A.style.transform=`scale3d(${N}, 1, ${B}) translate3d(0px, ${d/2+q}px, ${-d/2/B}px) rotateX(-89.99deg)`}const k=(y.isSafari||y.isWebView)&&y.needPerspectiveFix?-m/2:0;u.style.transform=`translate3d(0px,0,${k}px) rotateX(${e.isHorizontal()?0:v}deg) rotateY(${e.isHorizontal()?-v:0}deg)`,u.style.setProperty("--swiper-cube-translate-z",`${k}px`)},setTransition:l=>{const{el:u,slides:c}=e;if(c.forEach(f=>{f.style.transitionDuration=`${l}ms`,f.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(d=>{d.style.transitionDuration=`${l}ms`})}),e.params.cubeEffect.shadow&&!e.isHorizontal()){const f=u.querySelector(".swiper-cube-shadow");f&&(f.style.transitionDuration=`${l}ms`)}},recreateShadows:()=>{const l=e.isHorizontal();e.slides.forEach(u=>{const c=Math.max(Math.min(u.progress,1),-1);s(u,c,l)})},getEffectParams:()=>e.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}function Js(t,e,r){const n=`swiper-slide-shadow${r?`-${r}`:""}${t?` swiper-slide-shadow-${t}`:""}`,s=cs(e);let i=s.querySelector(`.${n.split(" ").join(".")}`);return i||(i=Jt("div",n.split(" ")),s.append(i)),i}function bj(t){let{swiper:e,extendParams:r,on:n}=t;r({flipEffect:{slideShadows:!0,limitRotation:!0}});const s=(l,u)=>{let c=e.isHorizontal()?l.querySelector(".swiper-slide-shadow-left"):l.querySelector(".swiper-slide-shadow-top"),f=e.isHorizontal()?l.querySelector(".swiper-slide-shadow-right"):l.querySelector(".swiper-slide-shadow-bottom");c||(c=Js("flip",l,e.isHorizontal()?"left":"top")),f||(f=Js("flip",l,e.isHorizontal()?"right":"bottom")),c&&(c.style.opacity=Math.max(-u,0)),f&&(f.style.opacity=Math.max(u,0))};co({effect:"flip",swiper:e,on:n,setTranslate:()=>{const{slides:l,rtlTranslate:u}=e,c=e.params.flipEffect;for(let f=0;f<l.length;f+=1){const d=l[f];let g=d.progress;e.params.flipEffect.limitRotation&&(g=Math.max(Math.min(d.progress,1),-1));const m=d.swiperSlideOffset;let E=-180*g,_=0,S=e.params.cssMode?-m-e.translate:-m,v=0;e.isHorizontal()?u&&(E=-E):(v=S,S=0,_=-E,E=0),e.browser&&e.browser.need3dFix&&(Math.abs(E)/90%2===1&&(E+=.001),Math.abs(_)/90%2===1&&(_+=.001)),d.style.zIndex=-Math.abs(Math.round(g))+l.length,c.slideShadows&&s(d,g);const A=`translate3d(${S}px, ${v}px, 0px) rotateX(${_}deg) rotateY(${E}deg)`,k=Ca(c,d);k.style.transform=A}},setTransition:l=>{const u=e.slides.map(c=>cs(c));u.forEach(c=>{c.style.transitionDuration=`${l}ms`,c.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(f=>{f.style.transitionDuration=`${l}ms`})}),lc({swiper:e,duration:l,transformElements:u})},recreateShadows:()=>{e.params.flipEffect,e.slides.forEach(l=>{let u=l.progress;e.params.flipEffect.limitRotation&&(u=Math.max(Math.min(l.progress,1),-1)),s(l,u)})},getEffectParams:()=>e.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})}function yj(t){let{swiper:e,extendParams:r,on:n}=t;r({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),co({effect:"coverflow",swiper:e,on:n,setTranslate:()=>{const{width:o,height:a,slides:l,slidesSizesGrid:u}=e,c=e.params.coverflowEffect,f=e.isHorizontal(),d=e.translate,g=f?-d+o/2:-d+a/2,m=f?c.rotate:-c.rotate,y=c.depth;for(let E=0,_=l.length;E<_;E+=1){const S=l[E],v=u[E],A=S.swiperSlideOffset,k=(g-A-v/2)/v,x=typeof c.modifier=="function"?c.modifier(k):k*c.modifier;let D=f?m*x:0,N=f?0:m*x,B=-y*Math.abs(x),q=c.stretch;typeof q=="string"&&q.indexOf("%")!==-1&&(q=parseFloat(c.stretch)/100*v);let K=f?0:q*x,C=f?q*x:0,M=1-(1-c.scale)*Math.abs(x);Math.abs(C)<.001&&(C=0),Math.abs(K)<.001&&(K=0),Math.abs(B)<.001&&(B=0),Math.abs(D)<.001&&(D=0),Math.abs(N)<.001&&(N=0),Math.abs(M)<.001&&(M=0),e.browser&&e.browser.need3dFix&&(Math.abs(D)/90%2===1&&(D+=.001),Math.abs(N)/90%2===1&&(N+=.001));const L=`translate3d(${C}px,${K}px,${B}px)  rotateX(${N}deg) rotateY(${D}deg) scale(${M})`,H=Ca(c,S);if(H.style.transform=L,S.style.zIndex=-Math.abs(Math.round(x))+1,c.slideShadows){let G=f?S.querySelector(".swiper-slide-shadow-left"):S.querySelector(".swiper-slide-shadow-top"),z=f?S.querySelector(".swiper-slide-shadow-right"):S.querySelector(".swiper-slide-shadow-bottom");G||(G=Js("coverflow",S,f?"left":"top")),z||(z=Js("coverflow",S,f?"right":"bottom")),G&&(G.style.opacity=x>0?x:0),z&&(z.style.opacity=-x>0?-x:0)}}},setTransition:o=>{e.slides.map(l=>cs(l)).forEach(l=>{l.style.transitionDuration=`${o}ms`,l.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach(u=>{u.style.transitionDuration=`${o}ms`})})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}function wj(t){let{swiper:e,extendParams:r,on:n}=t;r({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const s=a=>typeof a=="string"?a:`${a}px`;co({effect:"creative",swiper:e,on:n,setTranslate:()=>{const{slides:a,wrapperEl:l,slidesSizesGrid:u}=e,c=e.params.creativeEffect,{progressMultiplier:f}=c,d=e.params.centeredSlides;if(d){const g=u[0]/2-e.params.slidesOffsetBefore||0;l.style.transform=`translateX(calc(50% - ${g}px))`}for(let g=0;g<a.length;g+=1){const m=a[g],y=m.progress,E=Math.min(Math.max(m.progress,-c.limitProgress),c.limitProgress);let _=E;d||(_=Math.min(Math.max(m.originalProgress,-c.limitProgress),c.limitProgress));const S=m.swiperSlideOffset,v=[e.params.cssMode?-S-e.translate:-S,0,0],A=[0,0,0];let k=!1;e.isHorizontal()||(v[1]=v[0],v[0]=0);let x={translate:[0,0,0],rotate:[0,0,0],scale:1,opacity:1};E<0?(x=c.next,k=!0):E>0&&(x=c.prev,k=!0),v.forEach((M,L)=>{v[L]=`calc(${M}px + (${s(x.translate[L])} * ${Math.abs(E*f)}))`}),A.forEach((M,L)=>{let H=x.rotate[L]*Math.abs(E*f);e.browser&&e.browser.need3dFix&&Math.abs(H)/90%2===1&&(H+=.001),A[L]=H}),m.style.zIndex=-Math.abs(Math.round(y))+a.length;const D=v.join(", "),N=`rotateX(${A[0]}deg) rotateY(${A[1]}deg) rotateZ(${A[2]}deg)`,B=_<0?`scale(${1+(1-x.scale)*_*f})`:`scale(${1-(1-x.scale)*_*f})`,q=_<0?1+(1-x.opacity)*_*f:1-(1-x.opacity)*_*f,K=`translate3d(${D}) ${N} ${B}`;if(k&&x.shadow||!k){let M=m.querySelector(".swiper-slide-shadow");if(!M&&x.shadow&&(M=Js("creative",m)),M){const L=c.shadowPerProgress?E*(1/c.limitProgress):E;M.style.opacity=Math.min(Math.max(Math.abs(L),0),1)}}const C=Ca(c,m);C.style.transform=K,C.style.opacity=q,x.origin&&(C.style.transformOrigin=x.origin)}},setTransition:a=>{const l=e.slides.map(u=>cs(u));l.forEach(u=>{u.style.transitionDuration=`${a}ms`,u.querySelectorAll(".swiper-slide-shadow").forEach(c=>{c.style.transitionDuration=`${a}ms`})}),lc({swiper:e,duration:a,transformElements:l,allSlides:!0})},perspective:()=>e.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})}function vj(t){let{swiper:e,extendParams:r,on:n}=t;r({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),co({effect:"cards",swiper:e,on:n,setTranslate:()=>{const{slides:o,activeIndex:a,rtlTranslate:l}=e,u=e.params.cardsEffect,{startTranslate:c,isTouched:f}=e.touchEventsData,d=l?-e.translate:e.translate;for(let g=0;g<o.length;g+=1){const m=o[g],y=m.progress,E=Math.min(Math.max(y,-4),4);let _=m.swiperSlideOffset;e.params.centeredSlides&&!e.params.cssMode&&(e.wrapperEl.style.transform=`translateX(${e.minTranslate()}px)`),e.params.centeredSlides&&e.params.cssMode&&(_-=o[0].swiperSlideOffset);let S=e.params.cssMode?-_-e.translate:-_,v=0;const A=-100*Math.abs(E);let k=1,x=-u.perSlideRotate*E,D=u.perSlideOffset-Math.abs(E)*.75;const N=e.virtual&&e.params.virtual.enabled?e.virtual.from+g:g,B=(N===a||N===a-1)&&E>0&&E<1&&(f||e.params.cssMode)&&d<c,q=(N===a||N===a+1)&&E<0&&E>-1&&(f||e.params.cssMode)&&d>c;if(B||q){const L=(1-Math.abs((Math.abs(E)-.5)/.5))**.5;x+=-28*E*L,k+=-.5*L,D+=96*L,v=`${-25*L*Math.abs(E)}%`}if(E<0?S=`calc(${S}px ${l?"-":"+"} (${D*Math.abs(E)}%))`:E>0?S=`calc(${S}px ${l?"-":"+"} (-${D*Math.abs(E)}%))`:S=`${S}px`,!e.isHorizontal()){const L=v;v=S,S=L}const K=E<0?`${1+(1-k)*E}`:`${1-(1-k)*E}`,C=`
-        translate3d(${S}, ${v}, ${A}px)
-        rotateZ(${u.rotate?l?-x:x:0}deg)
-        scale(${K})
-      `;if(u.slideShadows){let L=m.querySelector(".swiper-slide-shadow");L||(L=Js("cards",m)),L&&(L.style.opacity=Math.min(Math.max((Math.abs(E)-.5)/.5,0),1))}m.style.zIndex=-Math.abs(Math.round(y))+o.length;const M=Ca(u,m);M.style.transform=C}},setTransition:o=>{const a=e.slides.map(l=>cs(l));a.forEach(l=>{l.style.transitionDuration=`${o}ms`,l.querySelectorAll(".swiper-slide-shadow").forEach(u=>{u.style.transitionDuration=`${o}ms`})}),lc({swiper:e,duration:o,transformElements:a})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})}const _j=[Y6,G6,K6,X6,Q6,J6,Z6,ej,tj,rj,nj,ij,sj,oj,aj,lj,pj,gj,mj,bj,yj,wj,vj];Kt.use(_j);const uc=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function Zs(t){return typeof t=="object"&&t!==null&&t.constructor&&Object.prototype.toString.call(t).slice(8,-1)==="Object"&&!t.__swiper__}function ip(t,e){const r=["__proto__","constructor","prototype"];Object.keys(e).filter(n=>r.indexOf(n)<0).forEach(n=>{typeof t[n]>"u"?t[n]=e[n]:Zs(e[n])&&Zs(t[n])&&Object.keys(e[n]).length>0?e[n].__swiper__?t[n]=e[n]:ip(t[n],e[n]):t[n]=e[n]})}function Ej(t){return t===void 0&&(t={}),t.navigation&&typeof t.navigation.nextEl>"u"&&typeof t.navigation.prevEl>"u"}function Sj(t){return t===void 0&&(t={}),t.pagination&&typeof t.pagination.el>"u"}function Tj(t){return t===void 0&&(t={}),t.scrollbar&&typeof t.scrollbar.el>"u"}function Ll(t){return t===void 0&&(t=""),t.replace(/-[a-z]/g,e=>e.toUpperCase().replace("-",""))}function xj(t){let{swiper:e,slides:r,passedParams:n,changedParams:s,nextEl:i,prevEl:o,scrollbarEl:a,paginationEl:l}=t;const u=s.filter(B=>B!=="children"&&B!=="direction"&&B!=="wrapperClass"),{params:c,pagination:f,navigation:d,scrollbar:g,virtual:m,thumbs:y}=e;let E,_,S,v,A,k,x,D;s.includes("thumbs")&&n.thumbs&&n.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(E=!0),s.includes("controller")&&n.controller&&n.controller.control&&c.controller&&!c.controller.control&&(_=!0),s.includes("pagination")&&n.pagination&&(n.pagination.el||l)&&(c.pagination||c.pagination===!1)&&f&&!f.el&&(S=!0),s.includes("scrollbar")&&n.scrollbar&&(n.scrollbar.el||a)&&(c.scrollbar||c.scrollbar===!1)&&g&&!g.el&&(v=!0),s.includes("navigation")&&n.navigation&&(n.navigation.prevEl||o)&&(n.navigation.nextEl||i)&&(c.navigation||c.navigation===!1)&&d&&!d.prevEl&&!d.nextEl&&(A=!0);const N=B=>{e[B]&&(e[B].destroy(),B==="navigation"?(e.isElement&&(e[B].prevEl.remove(),e[B].nextEl.remove()),c[B].prevEl=void 0,c[B].nextEl=void 0,e[B].prevEl=void 0,e[B].nextEl=void 0):(e.isElement&&e[B].el.remove(),c[B].el=void 0,e[B].el=void 0))};s.includes("loop")&&e.isElement&&(c.loop&&!n.loop?k=!0:!c.loop&&n.loop?x=!0:D=!0),u.forEach(B=>{if(Zs(c[B])&&Zs(n[B]))Object.assign(c[B],n[B]),(B==="navigation"||B==="pagination"||B==="scrollbar")&&"enabled"in n[B]&&!n[B].enabled&&N(B);else{const q=n[B];(q===!0||q===!1)&&(B==="navigation"||B==="pagination"||B==="scrollbar")?q===!1&&N(B):c[B]=n[B]}}),u.includes("controller")&&!_&&e.controller&&e.controller.control&&c.controller&&c.controller.control&&(e.controller.control=c.controller.control),s.includes("children")&&r&&m&&c.virtual.enabled?(m.slides=r,m.update(!0)):s.includes("virtual")&&m&&c.virtual.enabled&&(r&&(m.slides=r),m.update(!0)),s.includes("children")&&r&&c.loop&&(D=!0),E&&y.init()&&y.update(!0),_&&(e.controller.control=c.controller.control),S&&(e.isElement&&(!l||typeof l=="string")&&(l=document.createElement("div"),l.classList.add("swiper-pagination"),l.part.add("pagination"),e.el.appendChild(l)),l&&(c.pagination.el=l),f.init(),f.render(),f.update()),v&&(e.isElement&&(!a||typeof a=="string")&&(a=document.createElement("div"),a.classList.add("swiper-scrollbar"),a.part.add("scrollbar"),e.el.appendChild(a)),a&&(c.scrollbar.el=a),g.init(),g.updateSize(),g.setTranslate()),A&&(e.isElement&&((!i||typeof i=="string")&&(i=document.createElement("div"),i.classList.add("swiper-button-next"),i.innerHTML=e.hostEl.constructor.nextButtonSvg,i.part.add("button-next"),e.el.appendChild(i)),(!o||typeof o=="string")&&(o=document.createElement("div"),o.classList.add("swiper-button-prev"),o.innerHTML=e.hostEl.constructor.prevButtonSvg,o.part.add("button-prev"),e.el.appendChild(o))),i&&(c.navigation.nextEl=i),o&&(c.navigation.prevEl=o),d.init(),d.update()),s.includes("allowSlideNext")&&(e.allowSlideNext=n.allowSlideNext),s.includes("allowSlidePrev")&&(e.allowSlidePrev=n.allowSlidePrev),s.includes("direction")&&e.changeDirection(n.direction,!1),(k||D)&&e.loopDestroy(),(x||D)&&e.loopCreate(),e.update()}const jy=t=>{if(parseFloat(t)===Number(t))return Number(t);if(t==="true"||t==="")return!0;if(t==="false")return!1;if(t==="null")return null;if(t!=="undefined"){if(typeof t=="string"&&t.includes("{")&&t.includes("}")&&t.includes('"')){let e;try{e=JSON.parse(t)}catch{e=t}return e}return t}},Wy=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function zy(t,e,r){const n={},s={};ip(n,Xh);const i=[...uc,"on"],o=i.map(l=>l.replace(/_/,""));i.forEach(l=>{l=l.replace("_",""),typeof t[l]<"u"&&(s[l]=t[l])});const a=[...t.attributes];return typeof e=="string"&&typeof r<"u"&&a.push({name:e,value:Zs(r)?{...r}:r}),a.forEach(l=>{const u=Wy.filter(c=>l.name.indexOf(`${c}-`)===0)[0];if(u){const c=Ll(u),f=Ll(l.name.split(`${u}-`)[1]);typeof s[c]>"u"&&(s[c]={}),s[c]===!0&&(s[c]={enabled:!0}),s[c][f]=jy(l.value)}else{const c=Ll(l.name);if(!o.includes(c))return;const f=jy(l.value);s[c]&&Wy.includes(l.name)&&!Zs(f)?(s[c].constructor!==Object&&(s[c]={}),s[c].enabled=!!f):s[c]=f}}),ip(n,s),n.navigation?n.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...n.navigation!==!0?n.navigation:{}}:n.navigation===!1&&delete n.navigation,n.scrollbar?n.scrollbar={el:".swiper-scrollbar",...n.scrollbar!==!0?n.scrollbar:{}}:n.scrollbar===!1&&delete n.scrollbar,n.pagination?n.pagination={el:".swiper-pagination",...n.pagination!==!0?n.pagination:{}}:n.pagination===!1&&delete n.pagination,{params:n,passedParams:s}}const Aj=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}",Cj="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class Ij{}const YS=typeof window>"u"||typeof HTMLElement>"u"?Ij:HTMLElement,Hy=`<svg width="11" height="20" viewBox="0 0 11 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z" fill="currentColor"/></svg>
-    `,GS=(t,e)=>{if(typeof CSSStyleSheet<"u"&&t.adoptedStyleSheets){const r=new CSSStyleSheet;r.replaceSync(e),t.adoptedStyleSheets=[r]}else{const r=document.createElement("style");r.rel="stylesheet",r.textContent=e,t.appendChild(r)}};class KS extends YS{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return Hy}static get prevButtonSvg(){return Hy.replace("/></svg>",' transform-origin="center" transform="rotate(180)"/></svg>')}cssStyles(){return[Aj,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join(`
-`)}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,r=[...this.querySelectorAll("[slot^=slide-]")].map(n=>parseInt(n.getAttribute("slot").split("slide-")[1],10));if(this.slideSlots=r.length?Math.max(...r)+1:0,!!this.rendered){if(this.slideSlots>e)for(let n=e;n<this.slideSlots;n+=1){const s=document.createElement("swiper-slide");s.setAttribute("part",`slide slide-${n+1}`);const i=document.createElement("slot");i.setAttribute("name",`slide-${n+1}`),s.appendChild(i),this.shadowRoot.querySelector(".swiper-wrapper").appendChild(s)}else if(this.slideSlots<e){const n=this.swiper.slides;for(let s=n.length-1;s>=0;s-=1)s>this.slideSlots&&n[s].remove()}}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&GS(this.shadowRoot,e),this.cssLinks().forEach(n=>{if(this.shadowRoot.querySelector(`link[href="${n}"]`))return;const i=document.createElement("link");i.rel="stylesheet",i.href=n,this.shadowRoot.appendChild(i)});const r=document.createElement("div");r.classList.add("swiper"),r.part="container",r.innerHTML=`
-      <slot name="container-start"></slot>
-      <div class="swiper-wrapper" part="wrapper">
-        <slot></slot>
-        ${Array.from({length:this.slideSlots}).map((n,s)=>`
-        <swiper-slide part="slide slide-${s}">
-          <slot name="slide-${s}"></slot>
-        </swiper-slide>
-        `).join("")}
-      </div>
-      <slot name="container-end"></slot>
-      ${Ej(this.passedParams)?`
-        <div part="button-prev" class="swiper-button-prev">${this.constructor.prevButtonSvg}</div>
-        <div part="button-next" class="swiper-button-next">${this.constructor.nextButtonSvg}</div>
-      `:""}
-      ${Sj(this.passedParams)?`
-        <div part="pagination" class="swiper-pagination"></div>
-      `:""}
-      ${Tj(this.passedParams)?`
-        <div part="scrollbar" class="swiper-scrollbar"></div>
-      `:""}
-    `,this.shadowRoot.appendChild(r),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:r,passedParams:n}=zy(this);this.swiperParams=r,this.passedParams=n,delete this.swiperParams.init,this.render(),this.swiper=new Kt(this.shadowRoot.querySelector(".swiper"),{...r.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...r,touchEventsTarget:"container",onAny:function(s){s==="observerUpdate"&&e.calcSlideSlots();const i=r.eventsPrefix?`${r.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var o=arguments.length,a=new Array(o>1?o-1:0),l=1;l<o;l++)a[l-1]=arguments[l];const u=new CustomEvent(i,{detail:a,bubbles:s!=="hashChange",cancelable:!0});e.dispatchEvent(u)}})}connectedCallback(){this.initialized&&this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||this.init===!1||this.getAttribute("init")==="false"||this.initialize()}disconnectedCallback(){this.nested&&this.closest("swiper-slide")&&this.closest("swiper-slide").swiperLoopMoveDOM||(this.swiper&&this.swiper.destroy&&this.swiper.destroy(),this.initialized=!1)}updateSwiperOnPropChange(e,r){const{params:n,passedParams:s}=zy(this,e,r);this.passedParams=s,this.swiperParams=n,!(this.swiper&&this.swiper.params[e]===r)&&xj({swiper:this.swiper,passedParams:this.passedParams,changedParams:[Ll(e)],...e==="navigation"&&s[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},...e==="pagination"&&s[e]?{paginationEl:".swiper-pagination"}:{},...e==="scrollbar"&&s[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,r,n){this.initialized&&(r==="true"&&n===null&&(n=!1),this.updateSwiperOnPropChange(e,n))}static get observedAttributes(){return uc.filter(r=>r.includes("_")).map(r=>r.replace(/[A-Z]/g,n=>`-${n}`).replace("_","").toLowerCase())}}uc.forEach(t=>{t!=="init"&&(t=t.replace("_",""),Object.defineProperty(KS.prototype,t,{configurable:!0,get(){return(this.passedParams||{})[t]},set(e){this.passedParams||(this.passedParams={}),this.passedParams[t]=e,this.initialized&&this.updateSwiperOnPropChange(t,e)}}))});class Mj extends YS{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||this.getAttribute("lazy")===""||this.getAttribute("lazy")==="true";if(GS(this.shadowRoot,Cj),this.shadowRoot.appendChild(document.createElement("slot")),e){const r=document.createElement("div");r.classList.add("swiper-lazy-preloader"),r.part.add("preloader"),this.shadowRoot.appendChild(r)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const g4=()=>{typeof window>"u"||(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",KS),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",Mj))};typeof window<"u"&&(window.SwiperElementRegisterParams=t=>{uc.push(...t)});export{Gj as $,Bj as A,h4 as B,Y2 as C,s4 as D,c4 as E,vr as F,d4 as G,o4 as H,i4 as I,L1 as J,r4 as K,wB as L,up as M,n4 as N,nx as O,kj as P,Lj as Q,Dj as R,Vj as S,p4 as T,t4 as U,qj as V,Yj as W,jj as X,wc as Y,aB as Z,Nj as _,Pj as a,zj as a0,ox as a1,Kj as a2,g4 as a3,$2 as b,Zx as c,$j as d,e4 as e,u4 as f,Wj as g,Rj as h,U1 as i,zw as j,Uw as k,Hj as l,Xj as m,cp as n,$w as o,f4 as p,Fj as q,bp as r,Ii as s,a4 as t,l4 as u,qT as v,Uj as w,Wx as x,$T as y,Ar as z};
diff --git a/packages/modules/web_themes/colors/web/index.html b/packages/modules/web_themes/colors/web/index.html
index ef1b00bb41..a92b6aea2b 100644
--- a/packages/modules/web_themes/colors/web/index.html
+++ b/packages/modules/web_themes/colors/web/index.html
@@ -22,10 +22,11 @@
 	<link rel="icon" type="image/png" sizes="16x16" href="/openWB/web/img/favicons/favicon-16x16.png">
 	<link rel="apple-touch-icon" sizes="57x57" href="/openWB/web/img/favicons/apple-touch-icon-57x57.png">
 	<link rel="apple-touch-icon" sizes="60x60" href="/openWB/web/img/favicons/apple-touch-icon-60x60.png">
+	<link rel="manifest" href="/openWB/web/themes/colors/assets/manifest-DEQalSKE.json">
 	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/themes/colors/assets/index-B0iSk9lM.js"></script>
-  <link rel="modulepreload" crossorigin href="/openWB/web/themes/colors/assets/vendor-DS6WeUU7.js">
-  <link rel="stylesheet" crossorigin href="/openWB/web/themes/colors/assets/index-D3pPSkWs.css">
+  <script type="module" crossorigin src="/openWB/web/themes/colors/assets/index-BXxsmrtl.js"></script>
+  <link rel="modulepreload" crossorigin href="/openWB/web/themes/colors/assets/vendor-Cj6hjtXS.js">
+  <link rel="stylesheet" crossorigin href="/openWB/web/themes/colors/assets/index-DO1I-sJT.css">
 </head>
 
 <body>

From fa257fe132e75a3c9b60cc0972741462699799ae Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Tue, 10 Sep 2024 12:54:52 +0200
Subject: [PATCH 033/205] build settings

---
 .../assets/{ChargeLog-582cb159.js => ChargeLog-d71ce4c1.js}     | 2 +-
 ...allation-6bdc7310.js => ChargePointInstallation-66ab99c9.js} | 2 +-
 web/settings/assets/{Chart-3fbd17e3.js => Chart-53af13b6.js}    | 2 +-
 .../assets/{CloudConfig-2dc63c4a.js => CloudConfig-28061265.js} | 2 +-
 web/settings/assets/DataManagement-8e5bac9a.js                  | 1 -
 web/settings/assets/DataManagement-f4b0feef.js                  | 1 +
 .../assets/{DebugConfig-c12bb15b.js => DebugConfig-957ac5e2.js} | 2 +-
 web/settings/assets/GeneralChargeConfig-7e106509.js             | 1 -
 web/settings/assets/GeneralChargeConfig-be9fdbc5.js             | 1 +
 .../{GeneralConfig-9cb055aa.js => GeneralConfig-aecc1081.js}    | 2 +-
 ...nstallation-b6072dfb.js => HardwareInstallation-912044d0.js} | 2 +-
 ...nstallAssistant-3b33de2f.js => InstallAssistant-d68215c6.js} | 2 +-
 ...stantStep0-00bfcb75.js => InstallAssistantStep0-e814ffaf.js} | 2 +-
 ...stantStep1-e96672e3.js => InstallAssistantStep1-82e8d797.js} | 2 +-
 ...antStep10-509dd8d5.js => InstallAssistantStep10-4b6a0cf4.js} | 2 +-
 ...stantStep2-d28f6b53.js => InstallAssistantStep2-fcfe7b66.js} | 2 +-
 ...stantStep3-0b86cf0f.js => InstallAssistantStep3-77359403.js} | 2 +-
 ...stantStep4-cb68c0eb.js => InstallAssistantStep4-d653e2b0.js} | 2 +-
 ...stantStep5-411e6e9d.js => InstallAssistantStep5-554bfc9c.js} | 2 +-
 ...stantStep6-cd1941b1.js => InstallAssistantStep6-a19e04f9.js} | 2 +-
 ...stantStep7-6d705988.js => InstallAssistantStep7-f896ccc9.js} | 2 +-
 ...stantStep8-e7350c4d.js => InstallAssistantStep8-86a4cd0e.js} | 2 +-
 ...stantStep9-ac8d21eb.js => InstallAssistantStep9-4da82ba8.js} | 2 +-
 ...ate-e18733fc.js => InstallAssistantStepTemplate-0f7d9f62.js} | 2 +-
 ...ChargeConfig-252a508f.js => InstantChargeConfig-17057c0d.js} | 2 +-
 .../{LegalSettings-f66efb7a.js => LegalSettings-7d6a7592.js}    | 2 +-
 web/settings/assets/LoadManagementConfig-380e9c4d.js            | 1 +
 web/settings/assets/LoadManagementConfig-ad848400.js            | 1 -
 ...qttBridgeConfig-a79c288e.js => MqttBridgeConfig-b16c88cd.js} | 2 +-
 ...nalComponents-5a24a6aa.js => OptionalComponents-4599d69d.js} | 2 +-
 .../{PVChargeConfig-260d31b6.js => PVChargeConfig-d62a1759.js}  | 2 +-
 ...argeConfig-b2a3d789.js => ScheduledChargeConfig-a3ebfb4e.js} | 2 +-
 web/settings/assets/{Status-d562c100.js => Status-3ed5f34f.js}  | 2 +-
 .../assets/{Support-56e00a88.js => Support-1d4bc359.js}         | 2 +-
 web/settings/assets/{System-5f853f95.js => System-4ed50969.js}  | 2 +-
 .../{TestingStore-5dd38b00.js => TestingStore-5a64ca39.js}      | 2 +-
 ...imeChargeConfig-7d17c070.js => TimeChargeConfig-b85503dd.js} | 2 +-
 web/settings/assets/VehicleConfig-99736f29.js                   | 1 +
 web/settings/assets/VehicleConfig-c67651ce.js                   | 1 -
 web/settings/assets/device-26a38357.js                          | 1 +
 web/settings/assets/device-6454a372.js                          | 1 -
 web/settings/assets/device-7c73cd7c.js                          | 1 +
 web/settings/assets/device-a7f7c6ed.js                          | 1 -
 ...ricity_tariff-b90a64df.js => electricity_tariff-5204ab68.js} | 2 +-
 web/settings/assets/{index-ba5cf04c.js => index-88a2073c.js}    | 2 +-
 .../assets/{vehicle-5eb1661e.js => vehicle-ef8ce1de.js}         | 2 +-
 web/settings/assets/vehicle-fc0096d3.js                         | 1 +
 web/settings/index.html                                         | 2 +-
 48 files changed, 42 insertions(+), 41 deletions(-)
 rename web/settings/assets/{ChargeLog-582cb159.js => ChargeLog-d71ce4c1.js} (99%)
 rename web/settings/assets/{ChargePointInstallation-6bdc7310.js => ChargePointInstallation-66ab99c9.js} (99%)
 rename web/settings/assets/{Chart-3fbd17e3.js => Chart-53af13b6.js} (99%)
 rename web/settings/assets/{CloudConfig-2dc63c4a.js => CloudConfig-28061265.js} (99%)
 delete mode 100644 web/settings/assets/DataManagement-8e5bac9a.js
 create mode 100644 web/settings/assets/DataManagement-f4b0feef.js
 rename web/settings/assets/{DebugConfig-c12bb15b.js => DebugConfig-957ac5e2.js} (98%)
 delete mode 100644 web/settings/assets/GeneralChargeConfig-7e106509.js
 create mode 100644 web/settings/assets/GeneralChargeConfig-be9fdbc5.js
 rename web/settings/assets/{GeneralConfig-9cb055aa.js => GeneralConfig-aecc1081.js} (99%)
 rename web/settings/assets/{HardwareInstallation-b6072dfb.js => HardwareInstallation-912044d0.js} (99%)
 rename web/settings/assets/{InstallAssistant-3b33de2f.js => InstallAssistant-d68215c6.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-00bfcb75.js => InstallAssistantStep0-e814ffaf.js} (95%)
 rename web/settings/assets/{InstallAssistantStep1-e96672e3.js => InstallAssistantStep1-82e8d797.js} (89%)
 rename web/settings/assets/{InstallAssistantStep10-509dd8d5.js => InstallAssistantStep10-4b6a0cf4.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-d28f6b53.js => InstallAssistantStep2-fcfe7b66.js} (89%)
 rename web/settings/assets/{InstallAssistantStep3-0b86cf0f.js => InstallAssistantStep3-77359403.js} (92%)
 rename web/settings/assets/{InstallAssistantStep4-cb68c0eb.js => InstallAssistantStep4-d653e2b0.js} (92%)
 rename web/settings/assets/{InstallAssistantStep5-411e6e9d.js => InstallAssistantStep5-554bfc9c.js} (93%)
 rename web/settings/assets/{InstallAssistantStep6-cd1941b1.js => InstallAssistantStep6-a19e04f9.js} (94%)
 rename web/settings/assets/{InstallAssistantStep7-6d705988.js => InstallAssistantStep7-f896ccc9.js} (93%)
 rename web/settings/assets/{InstallAssistantStep8-e7350c4d.js => InstallAssistantStep8-86a4cd0e.js} (93%)
 rename web/settings/assets/{InstallAssistantStep9-ac8d21eb.js => InstallAssistantStep9-4da82ba8.js} (91%)
 rename web/settings/assets/{InstallAssistantStepTemplate-e18733fc.js => InstallAssistantStepTemplate-0f7d9f62.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-252a508f.js => InstantChargeConfig-17057c0d.js} (96%)
 rename web/settings/assets/{LegalSettings-f66efb7a.js => LegalSettings-7d6a7592.js} (97%)
 create mode 100644 web/settings/assets/LoadManagementConfig-380e9c4d.js
 delete mode 100644 web/settings/assets/LoadManagementConfig-ad848400.js
 rename web/settings/assets/{MqttBridgeConfig-a79c288e.js => MqttBridgeConfig-b16c88cd.js} (99%)
 rename web/settings/assets/{OptionalComponents-5a24a6aa.js => OptionalComponents-4599d69d.js} (99%)
 rename web/settings/assets/{PVChargeConfig-260d31b6.js => PVChargeConfig-d62a1759.js} (99%)
 rename web/settings/assets/{ScheduledChargeConfig-b2a3d789.js => ScheduledChargeConfig-a3ebfb4e.js} (97%)
 rename web/settings/assets/{Status-d562c100.js => Status-3ed5f34f.js} (99%)
 rename web/settings/assets/{Support-56e00a88.js => Support-1d4bc359.js} (98%)
 rename web/settings/assets/{System-5f853f95.js => System-4ed50969.js} (98%)
 rename web/settings/assets/{TestingStore-5dd38b00.js => TestingStore-5a64ca39.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-7d17c070.js => TimeChargeConfig-b85503dd.js} (96%)
 create mode 100644 web/settings/assets/VehicleConfig-99736f29.js
 delete mode 100644 web/settings/assets/VehicleConfig-c67651ce.js
 create mode 100644 web/settings/assets/device-26a38357.js
 delete mode 100644 web/settings/assets/device-6454a372.js
 create mode 100644 web/settings/assets/device-7c73cd7c.js
 delete mode 100644 web/settings/assets/device-a7f7c6ed.js
 rename web/settings/assets/{electricity_tariff-b90a64df.js => electricity_tariff-5204ab68.js} (97%)
 rename web/settings/assets/{index-ba5cf04c.js => index-88a2073c.js} (96%)
 rename web/settings/assets/{vehicle-5eb1661e.js => vehicle-ef8ce1de.js} (97%)
 create mode 100644 web/settings/assets/vehicle-fc0096d3.js

diff --git a/web/settings/assets/ChargeLog-582cb159.js b/web/settings/assets/ChargeLog-d71ce4c1.js
similarity index 99%
rename from web/settings/assets/ChargeLog-582cb159.js
rename to web/settings/assets/ChargeLog-d71ce4c1.js
index ee414842e7..d5f1d6cd09 100644
--- a/web/settings/assets/ChargeLog-582cb159.js
+++ b/web/settings/assets/ChargeLog-d71ce4c1.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-ba5cf04c.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-88a2073c.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},y=t=>(W("data-v-8607e7e7"),t=t(),F(),t),M={class:"chargeLog"},P={name:"chargeLogForm"},z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],K=["aria-valuenow"],J=["aria-valuenow"],G=["aria-valuenow"],H=["aria-valuenow"],Q={key:1,class:"td-center"},Y={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ce={class:"hide",ref:"downloadChargeLogLink"},he=y(()=>i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),ge={class:"td-end"},_e={class:"td-end"},ue={class:"td-end"},me={class:"td-end"};function pe(t,e,o,p,l,r){const C=h("openwb-base-text-input"),f=h("font-awesome-icon"),D=h("openwb-base-button-group-input"),m=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),b=h("openwb-base-alert"),L=h("vue3-table-lite"),N=h("openwb-base-click-button");return g(),_("div",M,[i("form",P,[d(v,{title:"Filter"},{default:s(()=>[d(C,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:l.currentMonth,modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())]},null,8,["max","modelValue"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),c(" Erweiterte Optionen ")]),default:s(()=>[d(D,{title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())]},null,8,["modelValue"]),d(m,{title:"Lademodus",multiple:"",options:r.chargeModeList,modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Ladepunkt",multiple:"",options:r.chargePointList,modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Fahrzeug",multiple:"",options:r.vehicleList,modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(q,{title:"ID-Tags",modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Tags als Filter verwendet werden. ")]),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,z)]),_:1}),r.chargeLogRead?(g(),_("div",O,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(g(),_("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:u({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:u({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:u({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G),i("div",{class:"progress-bar bg-success",role:"progressbar",style:u({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,H)],8,j)):(g(),_("div",Q,"-"))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Y,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(g(),_("div",le,[i("div",de,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[c(" Als CSV exportieren "),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ce,null,512)]),he,d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",ge,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",_e,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ue,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",me,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):V("",!0)])):(g(),I(b,{key:0,subtype:"info"},{default:s(()=>[c(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const qe=B(U,[["render",pe],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{qe as default};
diff --git a/web/settings/assets/ChargePointInstallation-6bdc7310.js b/web/settings/assets/ChargePointInstallation-66ab99c9.js
similarity index 99%
rename from web/settings/assets/ChargePointInstallation-6bdc7310.js
rename to web/settings/assets/ChargePointInstallation-66ab99c9.js
index 05878b374d..2258aaae91 100644
--- a/web/settings/assets/ChargePointInstallation-6bdc7310.js
+++ b/web/settings/assets/ChargePointInstallation-66ab99c9.js
@@ -1 +1 @@
-import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-ba5cf04c.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
+import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-88a2073c.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
diff --git a/web/settings/assets/Chart-3fbd17e3.js b/web/settings/assets/Chart-53af13b6.js
similarity index 99%
rename from web/settings/assets/Chart-3fbd17e3.js
rename to web/settings/assets/Chart-53af13b6.js
index 3365f576e4..fdce0bf91c 100644
--- a/web/settings/assets/Chart-3fbd17e3.js
+++ b/web/settings/assets/Chart-53af13b6.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-ba5cf04c.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-88a2073c.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-2dc63c4a.js b/web/settings/assets/CloudConfig-28061265.js
similarity index 99%
rename from web/settings/assets/CloudConfig-2dc63c4a.js
rename to web/settings/assets/CloudConfig-28061265.js
index a2560bdaf7..0e0c013abc 100644
--- a/web/settings/assets/CloudConfig-2dc63c4a.js
+++ b/web/settings/assets/CloudConfig-28061265.js
@@ -1 +1 @@
-import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-ba5cf04c.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
+import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-88a2073c.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
diff --git a/web/settings/assets/DataManagement-8e5bac9a.js b/web/settings/assets/DataManagement-8e5bac9a.js
deleted file mode 100644
index a1ac278e57..0000000000
--- a/web/settings/assets/DataManagement-8e5bac9a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-ba5cf04c.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as s,z as k,D as n,x as o,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,f,a,i){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[s(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[n(h,{subtype:"warning"},{default:l(()=>[s(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>i.updateConfiguration(y,"configuration"))},{help:l(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(h,{subtype:"info"},{default:l(()=>[o("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,f,a,i){const h=m("openwb-base-heading");return r(),b(O,null,[n(h,null,{default:l(()=>[s(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(i.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>i.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>i.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,f]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:f})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,f]of Object.entries(t))if(f==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(f=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),f(!0)}).catch(i=>{if(i.response){console.error(i.response.status,i.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+i.response.status+": "+i.response.data}else i.request?(console.error(i.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",i.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),f(!1)})}else console.error("no file selected for upload"),f(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=o("h2",null,"Achtung!",-1),oe=o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),se={key:1},ie={name:"backupForm"},ae=o("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=o("hr",null,null,-1),ce=o("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},fe={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},ge={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=o("hr",null,null,-1),Ce=o("br",null,null,-1),Be=o("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),De={key:0},Se={name:"dataMigrationForm"},Oe=o("br",null,null,-1),We=o("br",null,null,-1),Fe={class:"input-group"},Me={class:"input-group-prepend"},xe={class:"input-group-text"},Ae={class:"custom-file"},Te={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Le={class:"input-group-append"},Ve=["disabled"],ze={class:"row justify-content-center"},Re={class:"col-md-4 d-flex py-1 justify-content-center"},je={key:1,name:"resetForm"},He={class:"row justify-content-center"},Ee={class:"col-md-4 d-flex py-1 justify-content-center"};function Pe(t,e,u,f,a,i){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,n(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",se,[n(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,g;return[o("form",ie,[n(y,null,{default:l(()=>[s("Sicherung")]),_:1}),n(c,{subtype:"danger"},{default:l(()=>[s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n(c,{subtype:"info"},{default:l(()=>[s(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,s(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),o("div",le,[o("div",ue,[n(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>i.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[s(" Sicherung erstellen "),n(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,n(y,null,{default:l(()=>[s("Wiederherstellung")]),_:1}),n(c,{subtype:"danger"},{default:l(()=>[s(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o("div",pe,[o("div",me,[o("div",he,[n(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",be,[o("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>i.updateSelectedRestoreFile(d))},null,32),o("label",fe,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),o("div",ge,[o("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>i.uploadRestoreFile())},[s(" Hochladen "),n(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),o("div",ke,[o("div",ye,[n(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>i.restoreBackup())},{default:l(()=>[s(" Wiederherstellung starten "),n(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,n(y,null,{default:l(()=>[s(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),n(c,{subtype:"info"},{default:l(()=>[s(" Zwischen Mitternacht und 5:00 Uhr wird automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,s(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Be,s(" . ")]),_:1}),n(F,{class:"mb-2",title:"Backup-Cloud",options:i.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>i.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(g=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&g.type?(r(),b("div",De,[n(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[s(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),n(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>i.sendSystemCommand("createCloudBackup",{}))}),n(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>i.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>i.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),n(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[o("form",Se,[n(c,{subtype:"info"},{default:l(()=>[s(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),n(c,{subtype:"danger"},{default:l(()=>[s(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),Oe,s(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),We,s(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),o("div",Fe,[o("div",Me,[o("div",xe,[n(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),o("div",Ae,[o("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>i.updateSelectedDataMigrationFile(p))},null,32),o("label",Te,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),o("div",Le,[o("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>i.uploadDataMigrationFile())},[s(" Hochladen "),n(_,{"fixed-width":"",icon:["fas","upload"]})],10,Ve)])]),n(y,null,{default:l(()=>[s("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[n(y,null,{default:l(()=>[s(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,g=>(r(),w(F,{key:g.key,title:g.label,options:i.getMigrationOptions(g.validTypes),modelValue:a.dataMigrationMapping[g.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[g.key]=d},I({_:2},[g.help?{name:"help",fn:l(()=>[s(k(g.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),o("div",ze,[o("div",Re,[n(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>i.dataMigration())},{default:l(()=>[s(" Datenübernahme starten "),n(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",je,[n(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[o("div",He,[o("div",Ee,[n(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>i.factoryReset())},{default:l(()=>[n(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),s(" Zurücksetzen "),n(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[n(c,{subtype:"danger"},{default:l(()=>[s(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Qe=W(ee,[["render",Pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Qe as default};
diff --git a/web/settings/assets/DataManagement-f4b0feef.js b/web/settings/assets/DataManagement-f4b0feef.js
new file mode 100644
index 0000000000..08a77aa5cb
--- /dev/null
+++ b/web/settings/assets/DataManagement-f4b0feef.js
@@ -0,0 +1 @@
+import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-88a2073c.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
diff --git a/web/settings/assets/DebugConfig-c12bb15b.js b/web/settings/assets/DebugConfig-957ac5e2.js
similarity index 98%
rename from web/settings/assets/DebugConfig-c12bb15b.js
rename to web/settings/assets/DebugConfig-957ac5e2.js
index aae67c7f0b..37b3bad3ac 100644
--- a/web/settings/assets/DebugConfig-c12bb15b.js
+++ b/web/settings/assets/DebugConfig-957ac5e2.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-ba5cf04c.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-88a2073c.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),p=s("openwb-base-avatar"),m=s("openwb-base-card");return d(),w(m,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(p,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=f($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",mixins:[k],components:{OpenwbLogCard:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),p=s("openwb-base-alert"),m=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),_("div",z,[v("form",V,[i(m,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>[b(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')]),_:1},8,["model-value"]),i(p,{subtype:"warning"},{default:l(()=>[b(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')]),_:1})]),_:1}),i(c,{formName:"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),_(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=f(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-7e106509.js b/web/settings/assets/GeneralChargeConfig-7e106509.js
deleted file mode 100644
index 49646c987e..0000000000
--- a/web/settings/assets/GeneralChargeConfig-7e106509.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as g,C as T}from"./index-ba5cf04c.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as s,l,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,d,v,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-textarea");return s(),l("div",q,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(d.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":d.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(d.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const O=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),U={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-b90a64df.js"),["assets/electricity_tariff-b90a64df.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:O})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function F(e,t,d,v,y,p){const u=o("openwb-base-heading");return s(),l(P,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(d.electricityTariff.name)+'" ',1)]),_:1}),(s(),k(V(p.myComponent),{electricityTariff:d.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const D=h(U,[["render",F],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),N={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(d=>d.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},I={class:"generalChargeConfig"},M={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,d,v,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return s(),l("div",I,[c("form",M,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),l("div",R,[n(u,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),l("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(s(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:1,max:15,step:1,unit:"Min.","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(s(),l("div",H,[n(u,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(s(),l("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),l("div",X,[n(u,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),l("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(u,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(s(),l("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(N,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
diff --git a/web/settings/assets/GeneralChargeConfig-be9fdbc5.js b/web/settings/assets/GeneralChargeConfig-be9fdbc5.js
new file mode 100644
index 0000000000..40a03e56b6
--- /dev/null
+++ b/web/settings/assets/GeneralChargeConfig-be9fdbc5.js
@@ -0,0 +1 @@
+import{_ as g,C as T}from"./index-88a2073c.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-5204ab68.js"),["assets/electricity_tariff-5204ab68.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
diff --git a/web/settings/assets/GeneralConfig-9cb055aa.js b/web/settings/assets/GeneralConfig-aecc1081.js
similarity index 99%
rename from web/settings/assets/GeneralConfig-9cb055aa.js
rename to web/settings/assets/GeneralConfig-aecc1081.js
index d5cd906912..b8da2c5fae 100644
--- a/web/settings/assets/GeneralConfig-9cb055aa.js
+++ b/web/settings/assets/GeneralConfig-aecc1081.js
@@ -1 +1 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-ba5cf04c.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-88a2073c.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
diff --git a/web/settings/assets/HardwareInstallation-b6072dfb.js b/web/settings/assets/HardwareInstallation-912044d0.js
similarity index 99%
rename from web/settings/assets/HardwareInstallation-b6072dfb.js
rename to web/settings/assets/HardwareInstallation-912044d0.js
index d30efee257..6214c2bb21 100644
--- a/web/settings/assets/HardwareInstallation-b6072dfb.js
+++ b/web/settings/assets/HardwareInstallation-912044d0.js
@@ -1 +1 @@
-import{l as N,d as U,t as G,a7 as F,a0 as H,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-ba5cf04c.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,u as m,k as u,l as p,A as E,N as o,z as l,y as a,D as v,x as c,a2 as W,a3 as $,B as P,J as L,K as h,q as w,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,r,O,s,n){const T=m("openwb-base-alert"),g=m("openwb-base-textarea");return u(),p("div",oe,[Object.keys(r.configuration).length==0?(u(),E(T,{key:0,subtype:"info"},{default:o(()=>[r.componentType?(u(),p("span",ie,' Der Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",re,'Der Gerät-Typ "'+l(r.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(u(),p("div",ne,[v(T,{subtype:"warning"},{default:o(()=>[a(" Es wurde keine Konfigurationsseite für den "),r.componentType?(u(),p("span",ue,' Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",ve,'Geräte-Typ "'+l(r.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),v(g,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":i[0]||(i[0]=D=>n.updateConfiguration(D,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),v(T,{subtype:"info"},{default:o(()=>[c("pre",null,l(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const S=y(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-a7f7c6ed.js"),["assets/device-a7f7c6ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-6454a372.js"),["assets/device-6454a372.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-3069a051.js"),["assets/counter-3069a051.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-53c24f18.js"),["assets/external_inverter-53c24f18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-a7f7c6ed.js"),["assets/device-a7f7c6ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-6454a372.js"),["assets/device-6454a372.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,r,O,s,n){return u(),E($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":i[0]||(i[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=y(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,r){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:r}})},removeComponentModal(_,i,r,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:r},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(r=>r.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},A=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),ce={class:"hardwareInstallation"},Ee={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=A(()=>c("hr",null,null,-1)),Ae=A(()=>c("hr",null,null,-1)),De=A(()=>c("hr",null,null,-1)),Re=A(()=>c("hr",null,null,-1)),Oe={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=A(()=>c("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=A(()=>c("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=A(()=>c("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,r,O,s,n){const T=m("openwb-base-modal-dialog"),g=m("router-link"),D=m("openwb-base-alert"),V=m("font-awesome-icon"),f=m("openwb-base-avatar"),k=m("openwb-base-text-input"),C=m("openwb-config-proxy"),q=m("openwb-base-heading"),b=m("openwb-base-card"),x=m("openwb-base-click-button"),z=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return u(),p(L,null,[v(T,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:o(()=>[a(' Wollen Sie das Gerät "'+l(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),v(T,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:o(()=>[a(' Wollen Sie die Komponente "'+l(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",ce,[c("form",Ee,[r.installAssistantActive?P("",!0):(u(),E(D,{key:0,subtype:"info"},{default:o(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),v(g,{to:"/LoadManagementConfiguration"},{default:o(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),v(b,{title:"Geräte und Komponenten"},{default:o(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(u(),p("div",le,[v(D,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),p("div",Te,[(u(!0),p(L,null,h(n.installedDevices,(t,B)=>(u(),E(b,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:o(()=>[v(V,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+l(t.name),1)]),actions:o(d=>[d.collapsed?(u(),p("div",Ie,[(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),I=>(u(),E(f,{key:I.id,class:w("ml-1 bg-"+n.getComponentTypeClass(I.type))},{default:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(I.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(u(),E(f,{key:0,class:"bg-danger clickable",onClick:I=>n.removeDeviceModal(t.id,t.name,I)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,v(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>n.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,v(q,null,{default:o(()=>[a("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(t.id)?P("",!0):(u(),E(D,{key:0,subtype:"warning"},{default:o(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),(d,I)=>(u(),E(b,{key:d.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(d.type)},{header:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+l(d.name),1)]),actions:o(R=>[R.collapsed?P("",!0):(u(),E(f,{key:0,class:"bg-danger clickable",onClick:K=>n.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":R=>_.updateState(I,R,"name")},null,8,["model-value","onUpdate:modelValue"]),De,v(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":R=>n.updateConfiguration(I,R)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Re,n.getComponentList(t.type).length?(u(),E(z,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:o(()=>[c("span",Oe,[v(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>n.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:o(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(u(),E(D,{key:2,subtype:"info"},{default:o(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(u(),p("hr",Pe)):P("",!0),v(z,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:n.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=t=>s.deviceToAdd=t)},{append:o(()=>[c("span",Le,[v(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[ge,fe,be]),_:1},8,["options","model-value"])]))]),_:1}),v(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=t=>_.$emit("save")),onReset:i[2]||(i[2]=t=>_.$emit("reset")),onDefaults:i[3]||(i[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default};
+import{l as N,d as U,t as G,a7 as F,a0 as H,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-88a2073c.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,u as m,k as u,l as p,A as E,N as o,z as l,y as a,D as v,x as c,a2 as W,a3 as $,B as P,J as L,K as h,q as w,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,r,O,s,n){const T=m("openwb-base-alert"),g=m("openwb-base-textarea");return u(),p("div",oe,[Object.keys(r.configuration).length==0?(u(),E(T,{key:0,subtype:"info"},{default:o(()=>[r.componentType?(u(),p("span",ie,' Der Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",re,'Der Gerät-Typ "'+l(r.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(u(),p("div",ne,[v(T,{subtype:"warning"},{default:o(()=>[a(" Es wurde keine Konfigurationsseite für den "),r.componentType?(u(),p("span",ue,' Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",ve,'Geräte-Typ "'+l(r.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),v(g,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":i[0]||(i[0]=D=>n.updateConfiguration(D,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),v(T,{subtype:"info"},{default:o(()=>[c("pre",null,l(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const S=y(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-3069a051.js"),["assets/counter-3069a051.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-53c24f18.js"),["assets/external_inverter-53c24f18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,r,O,s,n){return u(),E($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":i[0]||(i[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=y(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,r){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:r}})},removeComponentModal(_,i,r,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:r},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(r=>r.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},A=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),ce={class:"hardwareInstallation"},Ee={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=A(()=>c("hr",null,null,-1)),Ae=A(()=>c("hr",null,null,-1)),De=A(()=>c("hr",null,null,-1)),Re=A(()=>c("hr",null,null,-1)),Oe={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=A(()=>c("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=A(()=>c("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=A(()=>c("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,r,O,s,n){const T=m("openwb-base-modal-dialog"),g=m("router-link"),D=m("openwb-base-alert"),V=m("font-awesome-icon"),f=m("openwb-base-avatar"),k=m("openwb-base-text-input"),C=m("openwb-config-proxy"),q=m("openwb-base-heading"),b=m("openwb-base-card"),x=m("openwb-base-click-button"),z=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return u(),p(L,null,[v(T,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:o(()=>[a(' Wollen Sie das Gerät "'+l(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),v(T,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:o(()=>[a(' Wollen Sie die Komponente "'+l(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",ce,[c("form",Ee,[r.installAssistantActive?P("",!0):(u(),E(D,{key:0,subtype:"info"},{default:o(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),v(g,{to:"/LoadManagementConfiguration"},{default:o(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),v(b,{title:"Geräte und Komponenten"},{default:o(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(u(),p("div",le,[v(D,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),p("div",Te,[(u(!0),p(L,null,h(n.installedDevices,(t,B)=>(u(),E(b,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:o(()=>[v(V,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+l(t.name),1)]),actions:o(d=>[d.collapsed?(u(),p("div",Ie,[(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),I=>(u(),E(f,{key:I.id,class:w("ml-1 bg-"+n.getComponentTypeClass(I.type))},{default:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(I.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(u(),E(f,{key:0,class:"bg-danger clickable",onClick:I=>n.removeDeviceModal(t.id,t.name,I)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,v(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>n.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,v(q,null,{default:o(()=>[a("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(t.id)?P("",!0):(u(),E(D,{key:0,subtype:"warning"},{default:o(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),(d,I)=>(u(),E(b,{key:d.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(d.type)},{header:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+l(d.name),1)]),actions:o(R=>[R.collapsed?P("",!0):(u(),E(f,{key:0,class:"bg-danger clickable",onClick:K=>n.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":R=>_.updateState(I,R,"name")},null,8,["model-value","onUpdate:modelValue"]),De,v(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":R=>n.updateConfiguration(I,R)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Re,n.getComponentList(t.type).length?(u(),E(z,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:o(()=>[c("span",Oe,[v(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>n.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:o(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(u(),E(D,{key:2,subtype:"info"},{default:o(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(u(),p("hr",Pe)):P("",!0),v(z,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:n.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=t=>s.deviceToAdd=t)},{append:o(()=>[c("span",Le,[v(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[ge,fe,be]),_:1},8,["options","model-value"])]))]),_:1}),v(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=t=>_.$emit("save")),onReset:i[2]||(i[2]=t=>_.$emit("reset")),onDefaults:i[3]||(i[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default};
diff --git a/web/settings/assets/InstallAssistant-3b33de2f.js b/web/settings/assets/InstallAssistant-d68215c6.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-3b33de2f.js
rename to web/settings/assets/InstallAssistant-d68215c6.js
index b96c26414b..5a05909384 100644
--- a/web/settings/assets/InstallAssistant-3b33de2f.js
+++ b/web/settings/assets/InstallAssistant-d68215c6.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-ba5cf04c.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-00bfcb75.js"),["assets/InstallAssistantStep0-00bfcb75.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-e96672e3.js"),["assets/InstallAssistantStep1-e96672e3.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-8e5bac9a.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-509dd8d5.js"),["assets/InstallAssistantStep10-509dd8d5.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-d28f6b53.js"),["assets/InstallAssistantStep2-d28f6b53.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-5f853f95.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-0b86cf0f.js"),["assets/InstallAssistantStep3-0b86cf0f.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-9cb055aa.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-cb68c0eb.js"),["assets/InstallAssistantStep4-cb68c0eb.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-6bdc7310.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-411e6e9d.js"),["assets/InstallAssistantStep5-411e6e9d.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-b6072dfb.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-cd1941b1.js"),["assets/InstallAssistantStep6-cd1941b1.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-6bdc7310.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-6d705988.js"),["assets/InstallAssistantStep7-6d705988.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-ad848400.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-e7350c4d.js"),["assets/InstallAssistantStep8-e7350c4d.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-c67651ce.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-ac8d21eb.js"),["assets/InstallAssistantStep9-ac8d21eb.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-e18733fc.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-8e5bac9a.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-e18733fc.js"),["assets/InstallAssistantStepTemplate-e18733fc.js","assets/index-ba5cf04c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-88a2073c.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-e814ffaf.js"),["assets/InstallAssistantStep0-e814ffaf.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-82e8d797.js"),["assets/InstallAssistantStep1-82e8d797.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-f4b0feef.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-4b6a0cf4.js"),["assets/InstallAssistantStep10-4b6a0cf4.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-fcfe7b66.js"),["assets/InstallAssistantStep2-fcfe7b66.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-4ed50969.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-77359403.js"),["assets/InstallAssistantStep3-77359403.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-aecc1081.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-d653e2b0.js"),["assets/InstallAssistantStep4-d653e2b0.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-66ab99c9.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-554bfc9c.js"),["assets/InstallAssistantStep5-554bfc9c.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-912044d0.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-a19e04f9.js"),["assets/InstallAssistantStep6-a19e04f9.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-66ab99c9.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-f896ccc9.js"),["assets/InstallAssistantStep7-f896ccc9.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-380e9c4d.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-86a4cd0e.js"),["assets/InstallAssistantStep8-86a4cd0e.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-99736f29.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-4da82ba8.js"),["assets/InstallAssistantStep9-4da82ba8.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-f4b0feef.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-0f7d9f62.js"),["assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-00bfcb75.js b/web/settings/assets/InstallAssistantStep0-e814ffaf.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-00bfcb75.js
rename to web/settings/assets/InstallAssistantStep0-e814ffaf.js
index 9139f6b88d..68f532802b 100644
--- a/web/settings/assets/InstallAssistantStep0-00bfcb75.js
+++ b/web/settings/assets/InstallAssistantStep0-e814ffaf.js
@@ -1 +1 @@
-import{C as d}from"./index-ba5cf04c.js";import u from"./InstallAssistantStepTemplate-e18733fc.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
+import{C as d}from"./index-88a2073c.js";import u from"./InstallAssistantStepTemplate-0f7d9f62.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
diff --git a/web/settings/assets/InstallAssistantStep1-e96672e3.js b/web/settings/assets/InstallAssistantStep1-82e8d797.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep1-e96672e3.js
rename to web/settings/assets/InstallAssistantStep1-82e8d797.js
index ed680ef5ab..4d2805c644 100644
--- a/web/settings/assets/InstallAssistantStep1-e96672e3.js
+++ b/web/settings/assets/InstallAssistantStep1-82e8d797.js
@@ -1 +1 @@
-import{C as m}from"./index-ba5cf04c.js";import p from"./InstallAssistantStepTemplate-e18733fc.js";import l from"./DataManagement-8e5bac9a.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
+import{C as m}from"./index-88a2073c.js";import p from"./InstallAssistantStepTemplate-0f7d9f62.js";import l from"./DataManagement-f4b0feef.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
diff --git a/web/settings/assets/InstallAssistantStep10-509dd8d5.js b/web/settings/assets/InstallAssistantStep10-4b6a0cf4.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-509dd8d5.js
rename to web/settings/assets/InstallAssistantStep10-4b6a0cf4.js
index 51a5ce5df4..cec84d3cf4 100644
--- a/web/settings/assets/InstallAssistantStep10-509dd8d5.js
+++ b/web/settings/assets/InstallAssistantStep10-4b6a0cf4.js
@@ -1 +1 @@
-import{C as i}from"./index-ba5cf04c.js";import a from"./InstallAssistantStepTemplate-e18733fc.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
+import{C as i}from"./index-88a2073c.js";import a from"./InstallAssistantStepTemplate-0f7d9f62.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
diff --git a/web/settings/assets/InstallAssistantStep2-d28f6b53.js b/web/settings/assets/InstallAssistantStep2-fcfe7b66.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-d28f6b53.js
rename to web/settings/assets/InstallAssistantStep2-fcfe7b66.js
index b06c2ae48e..61624df5a0 100644
--- a/web/settings/assets/InstallAssistantStep2-d28f6b53.js
+++ b/web/settings/assets/InstallAssistantStep2-fcfe7b66.js
@@ -1 +1 @@
-import{C as d}from"./index-ba5cf04c.js";import p from"./InstallAssistantStepTemplate-e18733fc.js";import l from"./System-5f853f95.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
+import{C as d}from"./index-88a2073c.js";import p from"./InstallAssistantStepTemplate-0f7d9f62.js";import l from"./System-4ed50969.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep3-0b86cf0f.js b/web/settings/assets/InstallAssistantStep3-77359403.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep3-0b86cf0f.js
rename to web/settings/assets/InstallAssistantStep3-77359403.js
index a01d84acce..203ed11fb2 100644
--- a/web/settings/assets/InstallAssistantStep3-0b86cf0f.js
+++ b/web/settings/assets/InstallAssistantStep3-77359403.js
@@ -1 +1 @@
-import{C as d}from"./index-ba5cf04c.js";import p from"./InstallAssistantStepTemplate-e18733fc.js";import m from"./GeneralConfig-9cb055aa.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
+import{C as d}from"./index-88a2073c.js";import p from"./InstallAssistantStepTemplate-0f7d9f62.js";import m from"./GeneralConfig-aecc1081.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep4-cb68c0eb.js b/web/settings/assets/InstallAssistantStep4-d653e2b0.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep4-cb68c0eb.js
rename to web/settings/assets/InstallAssistantStep4-d653e2b0.js
index 5cfa92012b..6c62b94d1d 100644
--- a/web/settings/assets/InstallAssistantStep4-cb68c0eb.js
+++ b/web/settings/assets/InstallAssistantStep4-d653e2b0.js
@@ -1 +1 @@
-import{C as l}from"./index-ba5cf04c.js";import p from"./InstallAssistantStepTemplate-e18733fc.js";import u from"./ChargePointInstallation-6bdc7310.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
+import{C as l}from"./index-88a2073c.js";import p from"./InstallAssistantStepTemplate-0f7d9f62.js";import u from"./ChargePointInstallation-66ab99c9.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
diff --git a/web/settings/assets/InstallAssistantStep5-411e6e9d.js b/web/settings/assets/InstallAssistantStep5-554bfc9c.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep5-411e6e9d.js
rename to web/settings/assets/InstallAssistantStep5-554bfc9c.js
index ae22575465..6551831ad7 100644
--- a/web/settings/assets/InstallAssistantStep5-411e6e9d.js
+++ b/web/settings/assets/InstallAssistantStep5-554bfc9c.js
@@ -1 +1 @@
-import{C as l}from"./index-ba5cf04c.js";import m from"./InstallAssistantStepTemplate-e18733fc.js";import u from"./HardwareInstallation-b6072dfb.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
+import{C as l}from"./index-88a2073c.js";import m from"./InstallAssistantStepTemplate-0f7d9f62.js";import u from"./HardwareInstallation-912044d0.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstallAssistantStep6-cd1941b1.js b/web/settings/assets/InstallAssistantStep6-a19e04f9.js
similarity index 94%
rename from web/settings/assets/InstallAssistantStep6-cd1941b1.js
rename to web/settings/assets/InstallAssistantStep6-a19e04f9.js
index 3e8739e8fe..9eb211a7e9 100644
--- a/web/settings/assets/InstallAssistantStep6-cd1941b1.js
+++ b/web/settings/assets/InstallAssistantStep6-a19e04f9.js
@@ -1 +1 @@
-import{C as l}from"./index-ba5cf04c.js";import u from"./InstallAssistantStepTemplate-e18733fc.js";import p from"./ChargePointInstallation-6bdc7310.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
+import{C as l}from"./index-88a2073c.js";import u from"./InstallAssistantStepTemplate-0f7d9f62.js";import p from"./ChargePointInstallation-66ab99c9.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep7-6d705988.js b/web/settings/assets/InstallAssistantStep7-f896ccc9.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-6d705988.js
rename to web/settings/assets/InstallAssistantStep7-f896ccc9.js
index 88925e2996..c9319b8c92 100644
--- a/web/settings/assets/InstallAssistantStep7-6d705988.js
+++ b/web/settings/assets/InstallAssistantStep7-f896ccc9.js
@@ -1 +1 @@
-import{C as l}from"./index-ba5cf04c.js";import m from"./InstallAssistantStepTemplate-e18733fc.js";import p from"./LoadManagementConfig-ad848400.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
+import{C as l}from"./index-88a2073c.js";import m from"./InstallAssistantStepTemplate-0f7d9f62.js";import p from"./LoadManagementConfig-380e9c4d.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep8-e7350c4d.js b/web/settings/assets/InstallAssistantStep8-86a4cd0e.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep8-e7350c4d.js
rename to web/settings/assets/InstallAssistantStep8-86a4cd0e.js
index 6a6ef2130b..462031a697 100644
--- a/web/settings/assets/InstallAssistantStep8-e7350c4d.js
+++ b/web/settings/assets/InstallAssistantStep8-86a4cd0e.js
@@ -1 +1 @@
-import{C as l}from"./index-ba5cf04c.js";import u from"./InstallAssistantStepTemplate-e18733fc.js";import m from"./VehicleConfig-c67651ce.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
+import{C as l}from"./index-88a2073c.js";import u from"./InstallAssistantStepTemplate-0f7d9f62.js";import m from"./VehicleConfig-99736f29.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep9-ac8d21eb.js b/web/settings/assets/InstallAssistantStep9-4da82ba8.js
similarity index 91%
rename from web/settings/assets/InstallAssistantStep9-ac8d21eb.js
rename to web/settings/assets/InstallAssistantStep9-4da82ba8.js
index 25fb00005d..973c4a196d 100644
--- a/web/settings/assets/InstallAssistantStep9-ac8d21eb.js
+++ b/web/settings/assets/InstallAssistantStep9-4da82ba8.js
@@ -1 +1 @@
-import{C as l}from"./index-ba5cf04c.js";import p from"./InstallAssistantStepTemplate-e18733fc.js";import u from"./DataManagement-8e5bac9a.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
+import{C as l}from"./index-88a2073c.js";import p from"./InstallAssistantStepTemplate-0f7d9f62.js";import u from"./DataManagement-f4b0feef.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-e18733fc.js b/web/settings/assets/InstallAssistantStepTemplate-0f7d9f62.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-e18733fc.js
rename to web/settings/assets/InstallAssistantStepTemplate-0f7d9f62.js
index bf781adef7..2dd0aa7722 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-e18733fc.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-0f7d9f62.js
@@ -1 +1 @@
-import{C as v}from"./index-ba5cf04c.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
+import{C as v}from"./index-88a2073c.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstantChargeConfig-252a508f.js b/web/settings/assets/InstantChargeConfig-17057c0d.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-252a508f.js
rename to web/settings/assets/InstantChargeConfig-17057c0d.js
index 22bafa5227..932f544d07 100644
--- a/web/settings/assets/InstantChargeConfig-252a508f.js
+++ b/web/settings/assets/InstantChargeConfig-17057c0d.js
@@ -1 +1 @@
-import{C as l}from"./index-ba5cf04c.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-88a2073c.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-f66efb7a.js b/web/settings/assets/LegalSettings-7d6a7592.js
similarity index 97%
rename from web/settings/assets/LegalSettings-f66efb7a.js
rename to web/settings/assets/LegalSettings-7d6a7592.js
index e6cec05eab..4bbdcdaad2 100644
--- a/web/settings/assets/LegalSettings-f66efb7a.js
+++ b/web/settings/assets/LegalSettings-7d6a7592.js
@@ -1 +1 @@
-import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-ba5cf04c.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
+import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-88a2073c.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
diff --git a/web/settings/assets/LoadManagementConfig-380e9c4d.js b/web/settings/assets/LoadManagementConfig-380e9c4d.js
new file mode 100644
index 0000000000..f47d2c451b
--- /dev/null
+++ b/web/settings/assets/LoadManagementConfig-380e9c4d.js
@@ -0,0 +1 @@
+import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-88a2073c.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
diff --git a/web/settings/assets/LoadManagementConfig-ad848400.js b/web/settings/assets/LoadManagementConfig-ad848400.js
deleted file mode 100644
index 435a214561..0000000000
--- a/web/settings/assets/LoadManagementConfig-ad848400.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-ba5cf04c.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as r,N as i,y as s,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht ode nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[r(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[r(h,{subtype:"info"},{default:i(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[r(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),r(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[s(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,s(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),r(f,null,{default:i(()=>[s(" Vorhandene Zählermodule ")]),_:1}),r(h,{subtype:"info"},{default:i(()=>[s(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,s(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[r(b,{"fixed-width":"",icon:["fas","gauge-high"]}),s(" "+W(n.name),1)]),default:i(()=>[r(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[s(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[s(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[s(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[s(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),r(f,null,{default:i(()=>[s(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[r(b,{"fixed-width":"",icon:["fas","solar-panel"]}),s(" "+W(n.name),1)]),default:i(()=>[r(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[s(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),r(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[r(h,{subtype:"info"},{default:i(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[r(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[s(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,s(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,s(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,s(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),r(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
diff --git a/web/settings/assets/MqttBridgeConfig-a79c288e.js b/web/settings/assets/MqttBridgeConfig-b16c88cd.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-a79c288e.js
rename to web/settings/assets/MqttBridgeConfig-b16c88cd.js
index f43d71bfef..73ded8dae0 100644
--- a/web/settings/assets/MqttBridgeConfig-a79c288e.js
+++ b/web/settings/assets/MqttBridgeConfig-b16c88cd.js
@@ -1 +1 @@
-import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-ba5cf04c.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
+import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-88a2073c.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
diff --git a/web/settings/assets/OptionalComponents-5a24a6aa.js b/web/settings/assets/OptionalComponents-4599d69d.js
similarity index 99%
rename from web/settings/assets/OptionalComponents-5a24a6aa.js
rename to web/settings/assets/OptionalComponents-4599d69d.js
index 07ca5200f2..676ca8c1b8 100644
--- a/web/settings/assets/OptionalComponents-5a24a6aa.js
+++ b/web/settings/assets/OptionalComponents-4599d69d.js
@@ -1,2 +1,2 @@
-import{_ as $,C}from"./index-ba5cf04c.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as z,X as O,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as _,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function A(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),_(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>m.updateConfiguration(g,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const j=y(F,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(O,V);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:j})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),_(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen. Das Fahrzeug wird erst nach dem Anstecken zugeordnet."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
+import{_ as $,C}from"./index-88a2073c.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as z,X as O,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as _,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function A(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),_(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>m.updateConfiguration(g,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const j=y(F,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(O,V);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:j})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),_(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen. Das Fahrzeug wird erst nach dem Anstecken zugeordnet."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
 `)},{help:o(()=>[a(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(b,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/optional/int_display/active",i)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[a(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",te,[n(b,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/optional/int_display/rotation",i)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ne,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),oe,n(T,null,{default:o(()=>[a(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/optional/int_display/standby",i)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",ae,[ie,n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",se,[le,n(b,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/optional/int_display/only_local_charge_points",i)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[a(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),pe,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",re,[n(D,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=i=>m.updateSelectedDisplayTheme(i))},{help:o(()=>[a(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),_(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=i=>m.updateConfiguration("openWB/optional/int_display/theme",i))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=i=>e.$emit("save")),onReset:t[8]||(t[8]=i=>e.$emit("reset")),onDefaults:t[9]||(t[9]=i=>e.$emit("defaults"))})])])}const ye=y(H,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{ye as default};
diff --git a/web/settings/assets/PVChargeConfig-260d31b6.js b/web/settings/assets/PVChargeConfig-d62a1759.js
similarity index 99%
rename from web/settings/assets/PVChargeConfig-260d31b6.js
rename to web/settings/assets/PVChargeConfig-d62a1759.js
index a6d9e75ad7..f476575762 100644
--- a/web/settings/assets/PVChargeConfig-260d31b6.js
+++ b/web/settings/assets/PVChargeConfig-d62a1759.js
@@ -1 +1 @@
-import{C as B}from"./index-ba5cf04c.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
+import{C as B}from"./index-88a2073c.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-b2a3d789.js b/web/settings/assets/ScheduledChargeConfig-a3ebfb4e.js
similarity index 97%
rename from web/settings/assets/ScheduledChargeConfig-b2a3d789.js
rename to web/settings/assets/ScheduledChargeConfig-a3ebfb4e.js
index 67e8fa5642..8b7cad7c31 100644
--- a/web/settings/assets/ScheduledChargeConfig-b2a3d789.js
+++ b/web/settings/assets/ScheduledChargeConfig-a3ebfb4e.js
@@ -1 +1 @@
-import{C as p}from"./index-ba5cf04c.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
+import{C as p}from"./index-88a2073c.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
diff --git a/web/settings/assets/Status-d562c100.js b/web/settings/assets/Status-3ed5f34f.js
similarity index 99%
rename from web/settings/assets/Status-d562c100.js
rename to web/settings/assets/Status-3ed5f34f.js
index 4d11dde139..92db8753eb 100644
--- a/web/settings/assets/Status-d562c100.js
+++ b/web/settings/assets/Status-3ed5f34f.js
@@ -1 +1 @@
-import{C as y}from"./index-ba5cf04c.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
+import{C as y}from"./index-88a2073c.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
diff --git a/web/settings/assets/Support-56e00a88.js b/web/settings/assets/Support-1d4bc359.js
similarity index 98%
rename from web/settings/assets/Support-56e00a88.js
rename to web/settings/assets/Support-1d4bc359.js
index d46ab0c09b..834f3594cd 100644
--- a/web/settings/assets/Support-56e00a88.js
+++ b/web/settings/assets/Support-1d4bc359.js
@@ -1 +1 @@
-import{l as w,g as y,F as V}from"./vendor-fortawesome-71546160.js";import{C as B}from"./index-ba5cf04c.js";import{_ as v,u as a,k as l,l as c,x as r,A as h,N as t,D as s,a4 as F,B as g,y as e,q as x}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";w.add(y);const z={name:"OpenwbSupportView",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},C={class:"support"},A={name:"supportForm"},q={key:1},N={key:0},W=r("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stellen Sie beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),E=r("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),L=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),U={class:"row justify-content-center"};function G(d,o,T,H,n,_){const p=a("router-link"),u=a("openwb-base-alert"),f=a("FontAwesomeIcon"),b=a("openwb-base-text-input"),m=a("openwb-base-textarea"),S=a("openwb-base-click-button"),k=a("openwb-base-card"),D=a("font-awesome-icon");return l(),c("div",C,[r("form",A,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),h(u,{key:0,subtype:"danger"},{default:t(()=>[e(" Sie müssen der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(l(),c("div",q,[s(u,{subtype:"success"},{default:t(()=>[e(" Sie haben der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und können Systemberichte senden. ")]),_:1}),s(k,{title:"Systembericht"},F({default:t(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(l(),c("div",N,[s(u,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lesen Sie den Hilfetext, der durch Klick auf das "),s(f,{icon:["far","question-circle"]}),e(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),W,M,E,L])]),_:1}),s(b,{title:"E-Mail",required:"",subtype:"email",modelValue:n.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>n.sendDebugData.email=i)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(b,{title:"openWB Seriennummer",required:"",modelValue:n.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>n.sendDebugData.serialNumber=i)},{help:t(()=>[e(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),s(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>n.sendDebugData.installedComponents=i)},{help:t(()=>[e(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),s(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>n.sendDebugData.vehicles=i)},{help:t(()=>[e(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),s(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>n.sendDebugData.message=i)},null,8,["modelValue"])])):g("",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",U,[s(S,{class:x(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?g("",!0):(l(),h(u,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),s(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(z,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default};
+import{l as w,g as y,F as V}from"./vendor-fortawesome-71546160.js";import{C as B}from"./index-88a2073c.js";import{_ as v,u as a,k as l,l as c,x as r,A as h,N as t,D as s,a4 as F,B as g,y as e,q as x}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";w.add(y);const z={name:"OpenwbSupportView",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},C={class:"support"},A={name:"supportForm"},q={key:1},N={key:0},W=r("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stellen Sie beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),E=r("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),L=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),U={class:"row justify-content-center"};function G(d,o,T,H,n,_){const p=a("router-link"),u=a("openwb-base-alert"),f=a("FontAwesomeIcon"),b=a("openwb-base-text-input"),m=a("openwb-base-textarea"),S=a("openwb-base-click-button"),k=a("openwb-base-card"),D=a("font-awesome-icon");return l(),c("div",C,[r("form",A,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),h(u,{key:0,subtype:"danger"},{default:t(()=>[e(" Sie müssen der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(l(),c("div",q,[s(u,{subtype:"success"},{default:t(()=>[e(" Sie haben der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und können Systemberichte senden. ")]),_:1}),s(k,{title:"Systembericht"},F({default:t(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(l(),c("div",N,[s(u,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lesen Sie den Hilfetext, der durch Klick auf das "),s(f,{icon:["far","question-circle"]}),e(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),W,M,E,L])]),_:1}),s(b,{title:"E-Mail",required:"",subtype:"email",modelValue:n.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>n.sendDebugData.email=i)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(b,{title:"openWB Seriennummer",required:"",modelValue:n.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>n.sendDebugData.serialNumber=i)},{help:t(()=>[e(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),s(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>n.sendDebugData.installedComponents=i)},{help:t(()=>[e(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),s(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>n.sendDebugData.vehicles=i)},{help:t(()=>[e(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),s(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>n.sendDebugData.message=i)},null,8,["modelValue"])])):g("",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",U,[s(S,{class:x(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?g("",!0):(l(),h(u,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),s(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(z,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default};
diff --git a/web/settings/assets/System-5f853f95.js b/web/settings/assets/System-4ed50969.js
similarity index 98%
rename from web/settings/assets/System-5f853f95.js
rename to web/settings/assets/System-4ed50969.js
index ac04063d3d..8e6930f0be 100644
--- a/web/settings/assets/System-5f853f95.js
+++ b/web/settings/assets/System-4ed50969.js
@@ -1 +1 @@
-import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-ba5cf04c.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
+import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-88a2073c.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
diff --git a/web/settings/assets/TestingStore-5dd38b00.js b/web/settings/assets/TestingStore-5a64ca39.js
similarity index 99%
rename from web/settings/assets/TestingStore-5dd38b00.js
rename to web/settings/assets/TestingStore-5a64ca39.js
index 2c50c7f845..4c7593371d 100644
--- a/web/settings/assets/TestingStore-5dd38b00.js
+++ b/web/settings/assets/TestingStore-5a64ca39.js
@@ -1 +1 @@
-import{C as V}from"./index-ba5cf04c.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
+import{C as V}from"./index-88a2073c.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
diff --git a/web/settings/assets/TimeChargeConfig-7d17c070.js b/web/settings/assets/TimeChargeConfig-b85503dd.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-7d17c070.js
rename to web/settings/assets/TimeChargeConfig-b85503dd.js
index d144bb4156..6b624d7ef1 100644
--- a/web/settings/assets/TimeChargeConfig-7d17c070.js
+++ b/web/settings/assets/TimeChargeConfig-b85503dd.js
@@ -1 +1 @@
-import{C as l}from"./index-ba5cf04c.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-88a2073c.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-99736f29.js b/web/settings/assets/VehicleConfig-99736f29.js
new file mode 100644
index 0000000000..ee0b6a121d
--- /dev/null
+++ b/web/settings/assets/VehicleConfig-99736f29.js
@@ -0,0 +1 @@
+import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-88a2073c.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as v,N as a,y as l,z as S,D as n,x as g,a2 as re,a3 as ue,J as A,B as m,K as B,a4 as q,P as N,q as I,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,h,F,f,s){const W=C("openwb-base-alert"),b=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(h.configuration).length==0?(r(),v(W,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(h.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(W,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(h.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":h.configuration,"onUpdate:modelValue":d[0]||(d[0]=U=>s.updateConfiguration(U,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(W,{subtype:"info"},{default:a(()=>[g("pre",null,S(JSON.stringify(h.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-ef8ce1de.js"),["assets/vehicle-ef8ce1de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-88a2073c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function _e(e,d,h,F,f,s){const W=C("openwb-base-heading");return r(),c(A,null,[n(W,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(h.vehicle.name)+'" ',1)]),_:1}),(r(),v(ue(s.myComponent),{vehicleId:h.vehicleId,vehicle:h.vehicle,configuration:h.vehicle.configuration,vehicleType:h.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=b=>s.updateConfiguration(b))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const fe=Z(ve,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:fe},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+h].name;e.push({value:h,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+h].name;e.push({value:h,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(h=>h.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:h}})},removeChargeTemplateSchedulePlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,h){this.showChargeTemplateSchedulePlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:h}})},removeChargeTemplateTimeChargingPlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,h){this.showChargeTemplateTimeChargingPlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},_=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=_(()=>g("hr",null,null,-1)),Te={key:0},Ue=_(()=>g("br",null,null,-1)),We=["innerHTML"],Le=_(()=>g("hr",null,null,-1)),Pe=_(()=>g("br",null,null,-1)),Ae=_(()=>g("br",null,null,-1)),ye=_(()=>g("br",null,null,-1)),Ee={key:1},Be=_(()=>g("hr",{class:"border-secondary"},null,-1)),Fe={key:0},qe={key:1},Me=_(()=>g("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),De={key:0},Ze=_(()=>g("br",null,null,-1)),xe=_(()=>g("br",null,null,-1)),Ne=_(()=>g("br",null,null,-1)),Ie=_(()=>g("br",null,null,-1)),Oe={key:1},Re={key:0},He={key:0},je={key:3},Je={key:0},$e={key:1},Ge=_(()=>g("br",null,null,-1)),Qe=_(()=>g("br",null,null,-1)),Xe=_(()=>g("ol",null,[g("li",null," Zielladen (Sofortladen) mit Priorität "),g("li",null,"Zielladen (Sofortladen)"),g("li",null,"Zeitladen mit Priorität"),g("li",null,"Zeitladen"),g("li",null,"Sofortladen mit Priorität"),g("li",null,"Sofortladen"),g("li",null,"PV (Min-Anteil) mit Priorität"),g("li",null,"PV (Min-Anteil)"),g("li",null,"Zielladen (PV) mit Priorität"),g("li",null,"Zielladen (PV)"),g("li",null,"PV (PV-Anteil) mit Priorität"),g("li",null,"PV (PV-Anteil)")],-1)),Ye={key:0},Ke={key:0},et={key:0},tt=_(()=>g("hr",null,null,-1)),nt=_(()=>g("hr",null,null,-1)),at=_(()=>g("br",null,null,-1)),lt=_(()=>g("br",null,null,-1)),it=_(()=>g("hr",null,null,-1)),ot=_(()=>g("br",null,null,-1)),dt=_(()=>g("br",null,null,-1)),rt=["onClick"],ut={key:0},st={key:1},mt={key:2},ct={key:3},ht={key:4},gt={key:5},pt={key:4},bt=_(()=>g("hr",null,null,-1)),vt=["onClick"],_t={key:0},ft={key:1},wt={key:2},kt={key:3},Vt={key:4},Ct={key:5};function St(e,d,h,F,f,s){const W=C("openwb-base-modal-dialog"),b=C("font-awesome-icon"),U=C("openwb-base-avatar"),E=C("openwb-base-alert"),L=C("openwb-base-text-input"),M=C("openwb-base-select-input"),O=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),y=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(A,null,[n(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(f.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(f.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(f.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),g("div",ke,[g("form",Ve,[n(y,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(A,null,B(s.vehicleIndexes,i=>(r(),v(y,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),ze,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!h.installAssistantActive?(r(),c("div",Te,[n(O,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),Ue,g("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,We)]),_:1}),Le])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),Pe,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),ye,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Ee,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Be,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(y,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Fe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),Me,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(A,null,B(s.evTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",De,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),Ze,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),xe,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Ne,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Oe,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",Re," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),v(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(y,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Je,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",$e,[(r(!0),c(A,null,B(s.chargeTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Ge,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Qe,Xe]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",Ye,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",Ke,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",et,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),tt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),nt,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),at,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),it,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),ot,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),dt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(A,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",ut,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",st,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",mt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ct,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",ht,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,rt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),v(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",gt,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),h.installAssistantActive?m("",!0):(r(),c("div",pt,[bt,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(A,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",ft,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",wt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",kt,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Vt,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,vt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(L,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",Ct,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Et=Z(we,[["render",St],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Et as default};
diff --git a/web/settings/assets/VehicleConfig-c67651ce.js b/web/settings/assets/VehicleConfig-c67651ce.js
deleted file mode 100644
index 644eb9e463..0000000000
--- a/web/settings/assets/VehicleConfig-c67651ce.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as S,C as oe}from"./index-ba5cf04c.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as V,k as r,l as c,A as v,N as a,y as l,z as C,D as n,x as g,a2 as re,a3 as ue,J as A,B as m,K as B,a4 as q,P as N,q as I,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,h,F,_,s){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return r(),c("div",he,[Object.keys(h.configuration).length==0?(r(),v(W,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+C(h.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(W,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(h.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":h.configuration,"onUpdate:modelValue":d[0]||(d[0]=U=>s.updateConfiguration(U,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(W,{subtype:"info"},{default:a(()=>[g("pre",null,C(JSON.stringify(h.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>S(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>S(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>S(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>S(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>S(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>S(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>S(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>S(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>S(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>S(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>S(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>S(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>S(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>S(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>S(()=>import("./vehicle-5eb1661e.js"),["assets/vehicle-5eb1661e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-ba5cf04c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>S(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>S(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,d,h,F,_,s){const W=V("openwb-base-heading");return r(),c(A,null,[n(W,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+C(h.vehicle.name)+'" ',1)]),_:1}),(r(),v(ue(s.myComponent),{vehicleId:h.vehicleId,vehicle:h.vehicle,configuration:h.vehicle.configuration,vehicleType:h.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=b=>s.updateConfiguration(b))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=Z(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+h].name;e.push({value:h,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+h].name;e.push({value:h,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(h=>h.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:h}})},removeChargeTemplateSchedulePlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,h){this.showChargeTemplateSchedulePlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:h}})},removeChargeTemplateTimeChargingPlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,h){this.showChargeTemplateTimeChargingPlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>g("hr",null,null,-1)),Te={key:0},Ue=f(()=>g("br",null,null,-1)),We=["innerHTML"],Le=f(()=>g("hr",null,null,-1)),Pe=f(()=>g("br",null,null,-1)),Ae=f(()=>g("br",null,null,-1)),ye=f(()=>g("br",null,null,-1)),Ee={key:1},Be=f(()=>g("hr",{class:"border-secondary"},null,-1)),Fe={key:0},qe={key:1},Me=f(()=>g("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),De={key:0},Ze=f(()=>g("br",null,null,-1)),xe=f(()=>g("br",null,null,-1)),Ne=f(()=>g("br",null,null,-1)),Ie=f(()=>g("br",null,null,-1)),Oe={key:1},Re={key:0},He={key:0},je={key:3},Je={key:0},$e={key:1},Ge=f(()=>g("br",null,null,-1)),Qe=f(()=>g("br",null,null,-1)),Xe=f(()=>g("ol",null,[g("li",null," Zielladen (Sofortladen) mit Priorität "),g("li",null,"Zielladen (Sofortladen)"),g("li",null,"Zeitladen mit Priorität"),g("li",null,"Zeitladen"),g("li",null,"Sofortladen mit Priorität"),g("li",null,"Sofortladen"),g("li",null,"PV (Min-Anteil) mit Priorität"),g("li",null,"PV (Min-Anteil)"),g("li",null,"Zielladen (PV) mit Priorität"),g("li",null,"Zielladen (PV)"),g("li",null,"PV (PV-Anteil) mit Priorität"),g("li",null,"PV (PV-Anteil)")],-1)),Ye={key:0},Ke={key:0},et={key:0},tt=f(()=>g("hr",null,null,-1)),nt=f(()=>g("hr",null,null,-1)),at=f(()=>g("br",null,null,-1)),lt=f(()=>g("br",null,null,-1)),it=f(()=>g("hr",null,null,-1)),ot=f(()=>g("br",null,null,-1)),dt=f(()=>g("br",null,null,-1)),rt=["onClick"],ut={key:0},st={key:1},mt={key:2},ct={key:3},ht={key:4},gt={key:5},pt={key:4},bt=f(()=>g("hr",null,null,-1)),vt=["onClick"],ft={key:0},_t={key:1},wt={key:2},kt={key:3},Vt={key:4},Ct={key:5};function St(e,d,h,F,_,s){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),U=V("openwb-base-avatar"),E=V("openwb-base-alert"),L=V("openwb-base-text-input"),M=V("openwb-base-select-input"),O=V("openwb-base-array-input"),w=V("openwb-base-button-group-input"),P=V("openwb-base-heading"),k=V("openwb-base-number-input"),R=V("openwb-vehicle-proxy"),y=V("openwb-base-card"),x=V("font-awesome-layers"),z=V("openwb-base-range-input"),H=V("openwb-base-submit-buttons");return r(),c(A,null,[n(W,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+C(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),g("div",ke,[g("form",Ve,[n(y,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(A,null,B(s.vehicleIndexes,i=>(r(),v(y,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),ze,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!h.installAssistantActive?(r(),c("div",Te,[n(O,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),Ue,g("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,We)]),_:1}),Le])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),Pe,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),ye,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Ee,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Be,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(y,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Fe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),Me,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(A,null,B(s.evTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",De,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),Ze,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),xe,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Ne,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Oe,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",Re," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),v(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(y,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Je,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",$e,[(r(!0),c(A,null,B(s.chargeTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Ge,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Qe,Xe]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",Ye,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",Ke,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",et,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),tt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),nt,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),at,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),it,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),ot,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),dt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(A,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",ut,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+C(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",st,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+C(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+C(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",mt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+C(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ct,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",ht,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,rt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),v(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",gt,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),h.installAssistantActive?m("",!0):(r(),c("div",pt,[bt,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(A,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",ft,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+C(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",_t,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+C(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+C(t.time[0])+" - "+C(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",wt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+C(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",kt,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Vt,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,vt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(L,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",Ct,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Et=Z(we,[["render",St],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Et as default};
diff --git a/web/settings/assets/device-26a38357.js b/web/settings/assets/device-26a38357.js
new file mode 100644
index 0000000000..b38f186e5c
--- /dev/null
+++ b/web/settings/assets/device-26a38357.js
@@ -0,0 +1 @@
+import{_ as f,u as a,k as _,l as b,D as t,N as u,y as d,x as g,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const w={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},h={class:"device-goodwe"},W={class:"small"};function x(s,e,o,V,D,i){const p=a("openwb-base-heading"),m=a("openwb-base-alert"),c=a("openwb-base-text-input"),l=a("openwb-base-number-input"),r=a("openwb-base-select-input");return _(),b("div",h,[t(p,null,{default:u(()=>[d(" Einstellungen für GoodWe "),g("span",W,"(Modul: "+v(s.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:u(()=>[d(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")]),_:1}),t(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":o.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":o.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(r,{title:"API-Version",notSelected:"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.version"))},{help:u(()=>[d(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")]),_:1},8,["model-value"]),t(r,{title:"Firmware",notSelected:"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.configuration.firmware,"onUpdate:modelValue":e[4]||(e[4]=n=>i.updateConfiguration(n,"configuration.firmware"))},{help:u(()=>[d(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")]),_:1},8,["model-value"])])}const B=f(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-6454a372.js b/web/settings/assets/device-6454a372.js
deleted file mode 100644
index 9e58b79e3c..0000000000
--- a/web/settings/assets/device-6454a372.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_,u as a,k as c,l as b,D as t,N as u,y as d,x as g,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const w={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},x={class:"device-goodwe"},h={class:"small"};function V(l,e,o,W,D,i){const p=a("openwb-base-heading"),m=a("openwb-base-alert"),f=a("openwb-base-text-input"),s=a("openwb-base-number-input"),r=a("openwb-base-select-input");return c(),b("div",x,[t(p,null,{default:u(()=>[d(" Einstellungen für GoodWe "),g("span",h,"(Modul: "+v(l.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:u(()=>[d(" GoodWe-Wechselrichter verfügen über 2 Dongel: WiFi und Wifi/Lan. Die Einbindung über dieses Modul ist nur mit dem Wifi/Lan-Dongle möglich. ")]),_:1}),t(f,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(r,{title:"API-Version",notSelected:"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.version"))},{help:u(()=>[d(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")]),_:1},8,["model-value"]),t(r,{title:"Firmware",notSelected:"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.configuration.firmware,"onUpdate:modelValue":e[4]||(e[4]=n=>i.updateConfiguration(n,"configuration.firmware"))},{help:u(()=>[d(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")]),_:1},8,["model-value"])])}const B=_(w,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-7c73cd7c.js b/web/settings/assets/device-7c73cd7c.js
new file mode 100644
index 0000000000..ebc807d51a
--- /dev/null
+++ b/web/settings/assets/device-7c73cd7c.js
@@ -0,0 +1 @@
+import{_,u as t,k as m,l as b,D as n,N as d,y as f,x as r,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceDeye",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},w={class:"device-deye"},y={class:"small"},h=r("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1);function x(o,e,i,C,D,s){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),p=t("openwb-base-text-input"),c=t("openwb-base-number-input");return m(),b("div",w,[n(u,null,{default:d(()=>[f(" Einstellungen für Deye "),r("span",y,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(l,{subtype:"info"},{default:d(()=>[h]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>s.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),n(c,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=a=>s.updateConfiguration(a,"configuration.port"))},null,8,["model-value"])])}const k=_(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/device.vue"]]);export{k as default};
diff --git a/web/settings/assets/device-a7f7c6ed.js b/web/settings/assets/device-a7f7c6ed.js
deleted file mode 100644
index f9654864f9..0000000000
--- a/web/settings/assets/device-a7f7c6ed.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as o,k as l,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceDeye",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-deye"},w={class:"small"};function x(t,e,i,y,h,s){const d=o("openwb-base-heading"),u=o("openwb-base-text-input"),r=o("openwb-base-number-input");return l(),c("div",v,[a(d,null,{default:m(()=>[_(" Einstellungen für Deye "),f("span",w,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const V=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/electricity_tariff-b90a64df.js b/web/settings/assets/electricity_tariff-5204ab68.js
similarity index 97%
rename from web/settings/assets/electricity_tariff-b90a64df.js
rename to web/settings/assets/electricity_tariff-5204ab68.js
index 5857a1cade..8d10c949c6 100644
--- a/web/settings/assets/electricity_tariff-b90a64df.js
+++ b/web/settings/assets/electricity_tariff-5204ab68.js
@@ -1 +1 @@
-import{C as p}from"./index-ba5cf04c.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
+import{C as p}from"./index-88a2073c.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
diff --git a/web/settings/assets/index-ba5cf04c.js b/web/settings/assets/index-88a2073c.js
similarity index 96%
rename from web/settings/assets/index-ba5cf04c.js
rename to web/settings/assets/index-88a2073c.js
index 9f876f6997..a3fadf93ea 100644
--- a/web/settings/assets/index-ba5cf04c.js
+++ b/web/settings/assets/index-88a2073c.js
@@ -1 +1 @@
-import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-d562c100.js"),["assets/Status-d562c100.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-582cb159.js"),["assets/ChargeLog-582cb159.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-3fbd17e3.js"),["assets/Chart-3fbd17e3.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-9cb055aa.js"),["assets/GeneralConfig-9cb055aa.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-5a24a6aa.js"),["assets/OptionalComponents-5a24a6aa.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-7e106509.js"),["assets/GeneralChargeConfig-7e106509.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-252a508f.js"),["assets/InstantChargeConfig-252a508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-260d31b6.js"),["assets/PVChargeConfig-260d31b6.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-7d17c070.js"),["assets/TimeChargeConfig-7d17c070.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-b2a3d789.js"),["assets/ScheduledChargeConfig-b2a3d789.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-b6072dfb.js"),["assets/HardwareInstallation-b6072dfb.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-ad848400.js"),["assets/LoadManagementConfig-ad848400.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-6bdc7310.js"),["assets/ChargePointInstallation-6bdc7310.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-c67651ce.js"),["assets/VehicleConfig-c67651ce.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-2dc63c4a.js"),["assets/CloudConfig-2dc63c4a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-a79c288e.js"),["assets/MqttBridgeConfig-a79c288e.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-c12bb15b.js"),["assets/DebugConfig-c12bb15b.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-56e00a88.js"),["assets/Support-56e00a88.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-f66efb7a.js"),["assets/LegalSettings-f66efb7a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-5f853f95.js"),["assets/System-5f853f95.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-8e5bac9a.js"),["assets/DataManagement-8e5bac9a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-3b33de2f.js"),["assets/InstallAssistant-3b33de2f.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-5dd38b00.js"),["assets/TestingStore-5dd38b00.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
+import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-3ed5f34f.js"),["assets/Status-3ed5f34f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-d71ce4c1.js"),["assets/ChargeLog-d71ce4c1.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-53af13b6.js"),["assets/Chart-53af13b6.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-aecc1081.js"),["assets/GeneralConfig-aecc1081.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-4599d69d.js"),["assets/OptionalComponents-4599d69d.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-be9fdbc5.js"),["assets/GeneralChargeConfig-be9fdbc5.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-17057c0d.js"),["assets/InstantChargeConfig-17057c0d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-d62a1759.js"),["assets/PVChargeConfig-d62a1759.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-b85503dd.js"),["assets/TimeChargeConfig-b85503dd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-a3ebfb4e.js"),["assets/ScheduledChargeConfig-a3ebfb4e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-912044d0.js"),["assets/HardwareInstallation-912044d0.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-380e9c4d.js"),["assets/LoadManagementConfig-380e9c4d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-66ab99c9.js"),["assets/ChargePointInstallation-66ab99c9.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-99736f29.js"),["assets/VehicleConfig-99736f29.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-28061265.js"),["assets/CloudConfig-28061265.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-b16c88cd.js"),["assets/MqttBridgeConfig-b16c88cd.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-957ac5e2.js"),["assets/DebugConfig-957ac5e2.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-1d4bc359.js"),["assets/Support-1d4bc359.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-7d6a7592.js"),["assets/LegalSettings-7d6a7592.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-4ed50969.js"),["assets/System-4ed50969.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-f4b0feef.js"),["assets/DataManagement-f4b0feef.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-d68215c6.js"),["assets/InstallAssistant-d68215c6.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-5a64ca39.js"),["assets/TestingStore-5a64ca39.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
diff --git a/web/settings/assets/vehicle-5eb1661e.js b/web/settings/assets/vehicle-ef8ce1de.js
similarity index 97%
rename from web/settings/assets/vehicle-5eb1661e.js
rename to web/settings/assets/vehicle-ef8ce1de.js
index f9275f052d..145739eb62 100644
--- a/web/settings/assets/vehicle-5eb1661e.js
+++ b/web/settings/assets/vehicle-ef8ce1de.js
@@ -1 +1 @@
-import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-ba5cf04c.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
+import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-88a2073c.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/assets/vehicle-fc0096d3.js b/web/settings/assets/vehicle-fc0096d3.js
new file mode 100644
index 0000000000..b94afa1635
--- /dev/null
+++ b/web/settings/assets/vehicle-fc0096d3.js
@@ -0,0 +1 @@
+import{_ as s,u as l,k as c,l as m,D as r,N as a,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"VehicleSocOVMS",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},v={class:"vehicle-soc-ovms"};function f(d,e,o,h,g,n){const i=l("openwb-base-text-input");return c(),m("div",v,[r(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.user_id"))},{help:a(()=>[u(" Der Benutzername für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")]),_:1},8,["model-value"]),r(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.password"))},{help:a(()=>[u(" Das Passwort für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")]),_:1},8,["model-value"]),r(i,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.vehicleId"))},{help:a(()=>[u(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")]),_:1},8,["model-value"])])}const w=s(p,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{w as default};
diff --git a/web/settings/index.html b/web/settings/index.html
index d54ac433f7..ec143fa6f5 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -7,7 +7,7 @@
 	<meta name="viewport" content="width=device-width,initial-scale=1.0">
 	<link rel="icon" href="/openWB/web/settings/favicon.ico">
 	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-ba5cf04c.js"></script>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-88a2073c.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-2f1828d0.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-f2b8aa6f.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-71546160.js">

From d0583da2785675b9343a5e9b0f4b03fce4fcc4f1 Mon Sep 17 00:00:00 2001
From: rleidner <89418596+rleidner@users.noreply.github.com>
Date: Tue, 10 Sep 2024 12:57:29 +0200
Subject: [PATCH 034/205] soc module for OVMS (#1743)

* soc module for OVMS

* changes as requested by review

* fix config write, handle get:status failure properly

* replace lib requests by req and try..except

* adding cleanup of unused rsp. obsolete token

* fix config issue
---
 packages/modules/vehicles/ovms/__init__.py |   0
 packages/modules/vehicles/ovms/api.py      | 189 +++++++++++++++++++++
 packages/modules/vehicles/ovms/config.py   |  24 +++
 packages/modules/vehicles/ovms/soc.py      |  40 +++++
 4 files changed, 253 insertions(+)
 create mode 100755 packages/modules/vehicles/ovms/__init__.py
 create mode 100755 packages/modules/vehicles/ovms/api.py
 create mode 100755 packages/modules/vehicles/ovms/config.py
 create mode 100755 packages/modules/vehicles/ovms/soc.py

diff --git a/packages/modules/vehicles/ovms/__init__.py b/packages/modules/vehicles/ovms/__init__.py
new file mode 100755
index 0000000000..e69de29bb2
diff --git a/packages/modules/vehicles/ovms/api.py b/packages/modules/vehicles/ovms/api.py
new file mode 100755
index 0000000000..1c29f8e0d0
--- /dev/null
+++ b/packages/modules/vehicles/ovms/api.py
@@ -0,0 +1,189 @@
+#!/usr/bin/env python3
+
+import logging
+from typing import Union
+import asyncio
+from json import loads, dumps
+from modules.vehicles.ovms.config import OVMS
+from helpermodules.pub import Pub
+from modules.common import req
+from copy import deepcopy
+
+OVMS_SERVER = "https://ovms.dexters-web.de:6869"
+TOKEN_CMD = "/api/token"
+STATUS_CMD = "/api/status"
+OVMS_APPL_LABEL = "application"
+OVMS_APPL_VALUE = "owb-ovms"
+OVMS_PURPOSE_LABEL = "purpose"
+OVMS_PURPOSE_VALUE = "get soc"
+
+log = logging.getLogger(__name__)
+
+
+# store soc module configuration
+def write_config(topic: str, config: dict):
+    try:
+        log.debug("write_config:\n" + dumps(config, ensure_ascii=False, indent=4))
+        Pub().pub(topic, config)
+    except Exception as e:
+        log.exception('Token mqtt write exception ' + str(e))
+
+
+class api:
+
+    def __init__(self):
+        self.session = req.get_http_session()
+
+    # create a new token and store it in the soc_module configuration
+    def create_token(self) -> str:
+        token_url = f"{OVMS_SERVER}{TOKEN_CMD}"
+        data = {
+            "username": self.user_id,
+            "password": self.password
+        }
+        form_data = {
+            OVMS_APPL_LABEL: OVMS_APPL_VALUE,
+            OVMS_PURPOSE_LABEL: OVMS_PURPOSE_VALUE
+        }
+        try:
+            resp = self.session.post(token_url, params=data, files=form_data)
+        except Exception as e:
+            resp = e.response
+
+        log.debug("create_token status_code=" + str(resp.status_code))
+        tokenDict = loads(resp.text)
+        log.debug("create_token response=" + dumps(tokenDict, indent=4))
+        self.token = tokenDict['token']
+        log.debug("create_token confDict=" + dumps(self.confDict, indent=4))
+        self.confDict["configuration"]["token"] = resp.text.rstrip()
+        cfg_setTopic = "openWB/set/vehicle/" + str(self.vehicle) + "/soc_module/config"
+        write_config(cfg_setTopic, self.confDict)
+
+        return self.token
+
+    # check list of token on OVMS server for unused token created by the soc mudule
+    # if any obsolete token are found these are deleted.
+    def cleanup_token(self):
+        tokenlist_url = f"{OVMS_SERVER}{TOKEN_CMD}?username={self.user_id}&password={self.token}"
+
+        try:
+            resp = self.session.get(tokenlist_url)
+        except Exception as e:
+            log.error("cleanup_token: exception = " + str(e))
+            resp = e.response
+
+        status_code = resp.status_code
+        if status_code > 299:
+            log.error("cleanup_token status_code=" + str(status_code))
+            full_tokenlist = {}
+        else:
+            response = resp.text
+            full_tokenlist = loads(response)
+            log.debug("cleanup_token status_code=" +
+                      str(status_code) + ", full_tokenlist=\n" +
+                      dumps(full_tokenlist, indent=4))
+            obsolete_tokenlist = list(filter(lambda token:
+                                             token[OVMS_APPL_LABEL] == OVMS_APPL_VALUE and token["token"] != self.token,
+                                             full_tokenlist))
+            if len(obsolete_tokenlist) > 0:
+                log.debug("cleanup_token obsolete_tokenlist=\n" + dumps(obsolete_tokenlist, indent=4))
+                for tok in obsolete_tokenlist:
+                    token_to_delete = tok["token"]
+                    log.debug("cleanup_token: token_to_delete=" + dumps(tok, indent=4))
+                    token_del_url = f"{OVMS_SERVER}{TOKEN_CMD}/{token_to_delete}"
+                    token_del_url = f"{token_del_url}?username={self.user_id}&password={self.token}"
+                    try:
+                        resp = self.session.delete(token_del_url)
+                    except Exception as e:
+                        log.error("delete_token: exception = " + str(e))
+                        resp = e.response
+
+                    status_code = resp.status_code
+            else:
+                log.debug("cleanup_token: no obsolete token found")
+
+        return
+
+    # get status for vehicleId
+    def get_status(self) -> Union[int, dict]:
+        status_url = f"{OVMS_SERVER}{STATUS_CMD}/{self.vehicleId}?username={self.user_id}&password={self.token}"
+
+        log.debug("status-url=" + status_url)
+        try:
+            resp = self.session.get(status_url)
+        except Exception as e:
+            resp = e.response
+
+        status_code = resp.status_code
+        if status_code > 299:
+            log.error("get_status status_code=" + str(status_code) + ", create new token")
+            respDict = {}
+        else:
+            response = resp.text
+            respDict = loads(response)
+            log.debug("get_status status_code=" + str(status_code) + ", response=" + dumps(respDict, indent=4))
+        return int(status_code), respDict
+
+    # async function to fetch soc, range, soc_ts
+    async def _fetch_soc(self,
+                         conf: OVMS,
+                         vehicle: int) -> Union[int, float, str]:
+        self.config_topic = "openWB/set/vehicle/" + vehicle + "/soc_module/config"
+        self.user_id = conf.configuration.user_id
+        self.password = conf.configuration.password
+        self.vehicleId = conf.configuration.vehicleId
+        self.vehicle = vehicle
+        self.config = deepcopy(conf)
+
+        tokenstr = self.config.configuration.token
+
+        if tokenstr is None or tokenstr == "":
+            self.token = self.create_token()
+        else:
+            log.debug("_fetch_soc tokenstr=\n" + tokenstr)
+            tokDict = loads(tokenstr)
+            log.debug("_fetch_soc tokDict=\n" + dumps(tokDict, indent=4))
+            self.token = tokDict['token']
+
+        if self.token is None or self.token == "":
+            self.token = self.create_token()
+        else:
+            log.debug("_fetch_soc using token=" + self.token)
+
+        self.confDict = self.config.__dict__
+        self.confDict["configuration"] = self.config.configuration.__dict__
+
+        self.cleanup_token()
+
+        status_code, statusDict = self.get_status()
+        if status_code > 299:
+            self.token = self.create_token()
+            status_code, statusDict = self.get_status()
+            if status_code > 299:
+                raise f"Authentication Problem, status_code {status_code}"
+
+        self.soc = statusDict['soc']
+        self.range = statusDict['estimatedrange']
+
+        # handle potential bug in OVMS, sometimes range is too high by factor 10
+        if float(self.range) > 1000.0:
+            self.range = str(float(self.range) / 10)
+
+        self.soc_ts = statusDict['m_msgtime_s']
+        log.debug("soc=" + str(self.soc) + ", range=" + str(self.range) + ", soc_ts=" + str(self.soc_ts))
+
+        return int(float(self.soc)), float(self.range), self.soc_ts
+
+
+# sync function
+def fetch_soc(conf: OVMS, vehicle: int) -> Union[int, float, str]:
+
+    # prepare and call async method
+    loop = asyncio.new_event_loop()
+    asyncio.set_event_loop(loop)
+
+    # get soc, range from server
+    a = api()
+    soc, range, soc_ts = loop.run_until_complete(a._fetch_soc(conf, vehicle))
+
+    return soc, range, soc_ts
diff --git a/packages/modules/vehicles/ovms/config.py b/packages/modules/vehicles/ovms/config.py
new file mode 100755
index 0000000000..5f332623aa
--- /dev/null
+++ b/packages/modules/vehicles/ovms/config.py
@@ -0,0 +1,24 @@
+from typing import Optional
+
+
+class OVMSConfiguration:
+    def __init__(self,
+                 user_id: Optional[str] = None,        # show in UI
+                 password: Optional[str] = None,       # show in UI
+                 vehicleId: Optional[str] = None,            # show in UI
+                 token: Optional[str] = None           # DON'T show in UI!
+                 ):
+        self.user_id = user_id
+        self.password = password
+        self.vehicleId = vehicleId
+        self.token = token
+
+
+class OVMS:
+    def __init__(self,
+                 name: str = "OVMS",
+                 type: str = "ovms",
+                 configuration: OVMSConfiguration = None) -> None:
+        self.name = name
+        self.type = type
+        self.configuration = configuration or OVMSConfiguration()
diff --git a/packages/modules/vehicles/ovms/soc.py b/packages/modules/vehicles/ovms/soc.py
new file mode 100755
index 0000000000..fb54b39ebc
--- /dev/null
+++ b/packages/modules/vehicles/ovms/soc.py
@@ -0,0 +1,40 @@
+from typing import List
+
+import logging
+
+from helpermodules.cli import run_using_positional_cli_args
+from modules.common import store
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.abstract_vehicle import VehicleUpdateData
+from modules.common.component_state import CarState
+from modules.common.configurable_vehicle import ConfigurableVehicle
+from modules.vehicles.ovms import api
+from modules.vehicles.ovms.config import OVMS, OVMSConfiguration
+
+
+log = logging.getLogger(__name__)
+
+
+def fetch(vehicle_update_data: VehicleUpdateData, config: OVMS, vehicle: int) -> CarState:
+    soc, range, soc_ts = api.fetch_soc(config, vehicle)
+    log.info("Result: soc/range=" + str(soc)+"/" + str(range) + "@" + soc_ts)
+    return CarState(soc, range)
+
+
+def create_vehicle(vehicle_config: OVMS, vehicle: int):
+    def updater(vehicle_update_data: VehicleUpdateData) -> CarState:
+        return fetch(vehicle_update_data, vehicle_config, vehicle)
+    return ConfigurableVehicle(vehicle_config=vehicle_config, component_updater=updater, vehicle=vehicle)
+
+
+def ovms_update(user_id: str, password: str, vehicleId: str, token: str, charge_point: int):
+    log.debug("ovms: user_id="+user_id+"vehicleId="+vehicleId+"charge_point="+str(charge_point))
+    store.get_car_value_store(charge_point).store.set(
+        fetch(None, OVMS(configuration=OVMSConfiguration(user_id, password, vehicleId, token)), charge_point))
+
+
+def main(argv: List[str]):
+    run_using_positional_cli_args(ovms_update, argv)
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=OVMS)

From 7616af6d43a674fe76c40e9769053e29e8871d49 Mon Sep 17 00:00:00 2001
From: Thomas Papendieck <14850347+tpd-opitz@users.noreply.github.com>
Date: Tue, 10 Sep 2024 13:04:11 +0200
Subject: [PATCH 035/205] =?UTF-8?q?Enhancement:=20Erkl=C3=A4rungstext=20zu?=
 =?UTF-8?q?r=20aut.=20Sicherung=20(#1858)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Erklärungstext zur aut. Sicherung
---
 docs/Cloud-Sicherung.md | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/docs/Cloud-Sicherung.md b/docs/Cloud-Sicherung.md
index cfe4e0297e..5659f4a858 100644
--- a/docs/Cloud-Sicherung.md
+++ b/docs/Cloud-Sicherung.md
@@ -1,6 +1,12 @@
 _Einstellungen -> System -> System -> Sicherung/Wiederherstellung_
 
-In den Sicherungseinstellungen kann ein Cloud-Dienst für automatische Sicherungen hinterlegt werden. Die Konfiguration des Cloud-Dienstes wird in diesem Wiki-Beitrag beschrieben. Folgende Anbieter werden unterstützt:
+In den Sicherungseinstellungen kann ein Cloud-Dienst für automatische Sicherungen hinterlegt werden. 
+Die Konfiguration des Cloud-Dienstes wird in diesem Wiki-Beitrag beschrieben. 
+
+Automatische Sicherungen werden nur ausgeführt, wenn die openWB als *primary* konfiguriert (oder die einzige) ist.
+Auf als *secondary* konfigurierten openWBs werden nur manuelle Sicherungen und Sicherungen vor einem Update (falls aktiviert)  ausgeführt, da hier keine Arbeitsdaten (Log-Dateien) zu sichern sind.
+
+Folgende Anbieter werden unterstützt:
 
 * [NextCloud](https://github.com/openWB/core/wiki/NextCloud-als-Sicherungs-Cloud-einrichten)
 * [Samba](https://github.com/openWB/core/wiki/Samba-als-Sicherung-einrichten)

From 0d94aa410a150bc3326ade68ce187ec2d3f0a9fe Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Tue, 10 Sep 2024 11:08:12 +0000
Subject: [PATCH 036/205] Build Display Theme: Colors

---
 .../colors/web/assets/index-C2N9PWRS.js       |  6 ----
 ...{index-Bz5z-jvD.css => index-C3_mlzOZ.css} |  4 +--
 .../colors/web/assets/index-ScYbRoOj.js       |  6 ++++
 .../colors/web/assets/vendor-B1GimsSk.js      | 35 +++++++++++++++++++
 .../colors/web/assets/vendor-BjGoVRCW.js      | 35 -------------------
 .../display_themes/colors/web/index.html      |  6 ++--
 6 files changed, 46 insertions(+), 46 deletions(-)
 delete mode 100644 packages/modules/display_themes/colors/web/assets/index-C2N9PWRS.js
 rename packages/modules/display_themes/colors/web/assets/{index-Bz5z-jvD.css => index-C3_mlzOZ.css} (75%)
 create mode 100644 packages/modules/display_themes/colors/web/assets/index-ScYbRoOj.js
 create mode 100644 packages/modules/display_themes/colors/web/assets/vendor-B1GimsSk.js
 delete mode 100644 packages/modules/display_themes/colors/web/assets/vendor-BjGoVRCW.js

diff --git a/packages/modules/display_themes/colors/web/assets/index-C2N9PWRS.js b/packages/modules/display_themes/colors/web/assets/index-C2N9PWRS.js
deleted file mode 100644
index 5c0f5bcda6..0000000000
--- a/packages/modules/display_themes/colors/web/assets/index-C2N9PWRS.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var la=Object.defineProperty;var ua=(t,e,a)=>e in t?la(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var s=(t,e,a)=>(ua(t,typeof e!="symbol"?e+"":e,a),a);import{m as da,r as J,a as de,M as Gt,d as T,o as p,c as y,n as K,b as M,e as c,f as pe,g as oe,h as g,s as ye,i as _t,j as ha,t as I,u as r,k as _,w as k,l as j,p as me,q as ve,v as Et,x as Wt,y as pa,z as B,F as Ie,A as Ae,B as Ue,C as gt,D as Te,E as zt,G as yt,H as Xe,I as Ee,J as rt,K as $t,L as ga,N as Ze,O as ma,P as va,Q as fa,R as We,S as _a,T as ya,U as De,V as Ke,W as st,X as ba}from"./vendor-BjGoVRCW.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const h of i.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&n(h)}).observe(document,{childList:!0,subtree:!0});function a(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(o){if(o.ep)return;o.ep=!0;const i=a(o);fetch(o.href,i)}})();function Qe(t,e=1){let a;if(t>=1e3&&e<4){switch(e){case 0:a=Math.round(t/1e3);break;case 1:a=Math.round(t/100)/10;break;case 2:a=Math.round(t/10)/100;break;case 3:a=Math.round(t)/1e3;break;default:a=Math.round(t/100)/10;break}return(a==null?void 0:a.toLocaleString(void 0,{minimumFractionDigits:e}))+" kW"}else return Math.round(t).toLocaleString(void 0)+" W"}function jt(t,e=1,a=!1){let n;if(t>1e6&&(a=!0,t=t/1e3),t>=1e3&&e<4){switch(e){case 0:n=Math.round(t/1e3);break;case 1:n=(Math.round(t/100)/10).toFixed(1);break;case 2:n=(Math.round(t/10)/100).toFixed(2);break;case 3:n=(Math.round(t)/1e3).toFixed(3);break;default:n=Math.round(t/100)/10;break}return n.toLocaleString(void 0,{minimumFractionDigits:e})+(a?" MWh":" kWh")}else return Math.round(t).toLocaleString(void 0)+(a?" kWh":" Wh")}function wa(t){return t.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function Sa(t,e){return["Jan","Feb","März","April","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Dez"][t]+" "+e}const ka=0,Nt={host:location.hostname,port:location.protocol=="https:"?443:80,endpoint:"/ws",protocol:location.protocol=="https:"?"wss":"ws",connectTimeout:4e3,reconnectPeriod:4e3,clean:!1,clientId:Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,6)},et={topic:"",qos:ka};let le;const{host:Ma,port:xa,endpoint:Pa,...Ut}=Nt,Ca=`${Ut.protocol}://${Ma}:${xa}${Pa}`;try{le=da.connect(Ca,Ut),le.on("connect",()=>{console.info("MQTT connection successful.")}),le.on("disconnect",()=>{console.info("MQTT disconnected")}),le.on("error",t=>{console.error("MQTT connection failed: ",t)})}catch(t){console.error("MQTT connect error: ",t)}async function $a(t){await Ft(),le?le.on("message",t):console.error("MqttRegister: MQTT client not available")}async function Be(t){et.topic=t;const{topic:e,qos:a}=et;await Ft(),le.subscribe(e,{qos:a},n=>{if(n){console.error("MQTT Subscription error: "+n);return}})}function Ve(t){et.topic=t;const{topic:e}=et;le.unsubscribe(e,a=>{if(a){console.error("MQTT Unsubscribe from "+t+" failed: "+a);return}})}async function mt(t,e){let n=le.connected,o=0;for(;!n&&o<10;)console.warn("MQTT not connected. Waiting 0.1 seconds"),await Jt(100),n=le.connected,o+=1;if(o<10)try{le.publish(t,e,{qos:0},i=>{i&&console.warn("MQTT publish error: ",i),console.info("MQTT publish: Message sent: ["+t+"]("+e+")")})}catch(i){console.warn("MQTT publish: caught error: "+i)}else console.error("MQTT publish: Lost connection to MQTT server. Please reload the page")}function bt(){return Nt.clientId}const It=20;async function Ft(){let t=le.connected,e=0;for(;!t&&e<It;)console.warn("MQTT not connected. Waiting 0.1 seconds"),await Jt(100),t=le.connected,e+=1;return new Promise((a,n)=>{e<It?a(!0):n(!1)})}function Jt(t){return new Promise(e=>setTimeout(e,t))}class Ia{constructor(e){s(this,"id");s(this,"name","Ladepunkt");s(this,"icon","Ladepunkt");s(this,"type","");s(this,"ev",0);s(this,"template",0);s(this,"connectedPhases",0);s(this,"phase_1",0);s(this,"autoPhaseSwitchHw",!1);s(this,"controlPilotInterruptionHw",!1);s(this,"isEnabled",!0);s(this,"isPluggedIn",!1);s(this,"isCharging",!1);s(this,"_isLocked",!1);s(this,"_connectedVehicle",0);s(this,"chargeTemplate",0);s(this,"evTemplate",0);s(this,"_chargeMode","pv_charging");s(this,"_hasPriority",!1);s(this,"currentPlan","");s(this,"averageConsumption",0);s(this,"vehicleName","");s(this,"rangeCharged",0);s(this,"rangeUnit","");s(this,"counter",0);s(this,"dailyYield",0);s(this,"energyPv",0);s(this,"energyBat",0);s(this,"pvPercentage",0);s(this,"faultState",0);s(this,"faultStr","");s(this,"phasesInUse",0);s(this,"power",0);s(this,"chargedSincePlugged",0);s(this,"stateStr","");s(this,"current",0);s(this,"currents",[0,0,0]);s(this,"phasesToUse",0);s(this,"isSocConfigured",!0);s(this,"isSocManual",!1);s(this,"waitingForSoc",!1);s(this,"color","white");s(this,"_timedCharging",!1);s(this,"_instantChargeLimitMode","");s(this,"_instantTargetCurrent",0);s(this,"_instantTargetSoc",0);s(this,"_instantMaxEnergy",0);s(this,"_pvFeedInLimit",!1);s(this,"_pvMinCurrent",0);s(this,"_pvMaxSoc",0);s(this,"_pvMinSoc",0);s(this,"_pvMinSocCurrent",0);s(this,"_etActive",!1);s(this,"_etMaxPrice",20);this.id=e}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e,X("cpLock",e,this.id)}updateIsLocked(e){this._isLocked=e}get connectedVehicle(){return this._connectedVehicle}set connectedVehicle(e){this._connectedVehicle=e,X("cpVehicle",e,this.id)}updateConnectedVehicle(e){this._connectedVehicle=e}get soc(){return A[this.connectedVehicle]?A[this.connectedVehicle].soc:0}set soc(e){A[this.connectedVehicle]&&(A[this.connectedVehicle].soc=e)}get chargeMode(){return this._chargeMode}set chargeMode(e){this._chargeMode=e,X("chargeMode",e,this.id)}updateChargeMode(e){this._chargeMode=e}get hasPriority(){return this._hasPriority}set hasPriority(e){this._hasPriority=e,X("cpPriority",e,this.id)}updateCpPriority(e){this._hasPriority=e}get timedCharging(){return re[this.chargeTemplate]?re[this.chargeTemplate].time_charging.active:!1}set timedCharging(e){re[this.chargeTemplate].time_charging.active=e,X("cpTimedCharging",e,this.chargeTemplate)}get instantTargetCurrent(){return this._instantTargetCurrent}set instantTargetCurrent(e){this._instantTargetCurrent=e,X("cpInstantTargetCurrent",e,this.id)}updateInstantTargetCurrent(e){this._instantTargetCurrent=e}get instantChargeLimitMode(){return this._instantChargeLimitMode}set instantChargeLimitMode(e){this._instantChargeLimitMode=e,X("cpInstantChargeLimitMode",e,this.id)}updateInstantChargeLimitMode(e){this._instantChargeLimitMode=e}get instantTargetSoc(){return this._instantTargetSoc}set instantTargetSoc(e){this._instantTargetSoc=e,X("cpInstantTargetSoc",e,this.id)}updateInstantTargetSoc(e){this._instantTargetSoc=e}get instantMaxEnergy(){return this._instantMaxEnergy}set instantMaxEnergy(e){this._instantMaxEnergy=e,X("cpInstantMaxEnergy",e,this.id)}updateInstantMaxEnergy(e){this._instantMaxEnergy=e}get pvFeedInLimit(){return this._pvFeedInLimit}set pvFeedInLimit(e){this._pvFeedInLimit=e,X("cpPvFeedInLimit",e,this.id)}updatePvFeedInLimit(e){this._pvFeedInLimit=e}get pvMinCurrent(){return this._pvMinCurrent}set pvMinCurrent(e){this._pvMinCurrent=e,X("cpPvMinCurrent",e,this.id)}updatePvMinCurrent(e){this._pvMinCurrent=e}get pvMaxSoc(){return this._pvMaxSoc}set pvMaxSoc(e){this._pvMaxSoc=e,X("cpPvMaxSoc",e,this.id)}updatePvMaxSoc(e){this._pvMaxSoc=e}get pvMinSoc(){return this._pvMinSoc}set pvMinSoc(e){this._pvMinSoc=e,X("cpPvMinSoc",e,this.id)}updatePvMinSoc(e){this._pvMinSoc=e}get pvMinSocCurrent(){return this._pvMinSocCurrent}set pvMinSocCurrent(e){this._pvMinSocCurrent=e,X("cpPvMinSocCurrent",e,this.id)}updatePvMinSocCurrent(e){this._pvMinSocCurrent=e}get realCurrent(){switch(this.phasesInUse){case 0:return 0;case 1:return this.currents[0];case 2:return(this.currents[0]+this.currents[1])/2;case 3:return(this.currents[0]+this.currents[1]+this.currents[2])/3;default:return 0}}get etActive(){return A[this.connectedVehicle]?A[this.connectedVehicle].etActive:!1}set etActive(e){A[this.connectedVehicle]&&(A[this.connectedVehicle].etActive=e)}get etMaxPrice(){return A[this.connectedVehicle].etMaxPrice??0}set etMaxPrice(e){console.log("Setting et max price needs to be implemented"),X("cpEtMaxPrice",Math.round(e*10)/1e6,this.id)}toPowerItem(){return{name:this.name,power:this.power,energy:this.dailyYield,energyPv:this.energyPv,energyBat:this.energyBat,pvPercentage:this.pvPercentage,color:this.color,icon:this.icon}}}class Oa{constructor(e){s(this,"id");s(this,"name","");s(this,"_chargeTemplateId",0);s(this,"_evTemplateId",0);s(this,"tags",[]);s(this,"config",{});s(this,"soc",0);s(this,"range",0);s(this,"_etActive",!1);s(this,"_etMaxPrice",20);this.id=e}get chargeTemplateId(){return this._chargeTemplateId}set chargeTemplateId(e){this._chargeTemplateId=e,X("vhChargeTemplateId",e,this.id)}updateChargeTemplateId(e){this._chargeTemplateId=e}get evTemplateId(){return this._evTemplateId}set evTemplateId(e){this._evTemplateId=e,X("vhEvTemplateId",e,this.id)}updateEvTemplateId(e){this._evTemplateId=e}get etActive(){return re[this.chargeTemplateId]?re[this.chargeTemplateId].et.active:!1}set etActive(e){re[this.chargeTemplateId]&&X("priceCharging",e,this.chargeTemplateId)}get etMaxPrice(){if(re[this.chargeTemplateId]&&re[this.chargeTemplateId].et.active)return re[this.chargeTemplateId].et.max_price*1e5}get chargepoint(){for(const e of Object.values(w))if(e.connectedVehicle==this.id)return e}}var ge=(t=>(t.instant_charging="instant_charging",t.pv_charging="pv_charging",t.scheduled_charging="scheduled_charging",t.standby="standby",t.stop="stop",t))(ge||{});const w=J({}),A=J({}),re=J({}),it=J({}),ct=J({}),Ba=J({});function Ta(t){t in w||(w[t]=new Ia(t),w[t].color="var(--color-cp"+(Object.values(w).length-1)+")")}function La(){Object.keys(w).forEach(t=>{delete w[parseInt(t)]})}const Va={cpLock:"openWB/set/chargepoint/%/set/manual_lock",chargeMode:"openWB/set/vehicle/template/charge_template/%/chargemode/selected",cpPriority:"openWB/set/vehicle/template/charge_template/%/prio",cpTimedCharging:"openWB/set/vehicle/template/charge_template/%/time_charging/active",pvBatteryPriority:"openWB/set/general/chargemode_config/pv_charging/bat_mode",cpVehicle:"openWB/set/chargepoint/%/config/ev",cpInstantChargeLimitMode:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/selected",cpInstantTargetCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/current",cpInstantTargetSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/soc",cpInstantMaxEnergy:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/amount",cpPvFeedInLimit:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/feed_in_limit",cpPvMinCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_current",cpPvMaxSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/max_soc",cpPvMinSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc",cpPvMinSocCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc_current",cpEtMaxPrice:"openWB/set/vehicle/template/charge_template/%/et/max_price",vhChargeTemplateId:"openWB/set/vehicle/%/charge_template",vhEvTemplateId:"openWB/set/vehicle/%/ev_template",shSetManual:"openWB/set/LegacySmartHome/config/set/Devices/%/mode",shSwitchOn:"openWB/set/LegacySmartHome/config/set/Devices/%/device_manual_control",socUpdate:"openWB/set/vehicle/%/get/force_soc_update",setSoc:"openWB/set/vehicle/%/soc_module/calculated_soc_state/manual_soc",priceCharging:"openWB/set/vehicle/template/charge_template/%/et/active"};function X(t,e,a=0){if(isNaN(a)){console.warn("Invalid index");return}let n=Va[t];if(!n){console.warn("No topic for update type "+t);return}switch(t){case"chargeMode":case"cpPriority":case"cpScheduledCharging":case"cpInstantTargetCurrent":case"cpInstantChargeLimitMode":case"cpInstantTargetSoc":case"cpInstantMaxEnergy":case"cpPvFeedInLimit":case"cpPvMinCurrent":case"cpPvMaxSoc":case"cpPvMinSoc":case"cpEtMaxPrice":case"cpPvMinSocCurrent":n=n.replace("%",w[a].chargeTemplate.toString());break;default:n=n.replace("%",String(a))}switch(typeof e){case"number":mt(n,JSON.stringify(+e));break;default:mt(n,JSON.stringify(e))}}function wt(t){mt("openWB/set/command/"+bt()+"/todo",JSON.stringify(t))}class Aa{constructor(){s(this,"batterySoc",0);s(this,"isBatteryConfigured",!0);s(this,"chargeMode","0");s(this,"_pvBatteryPriority","ev_mode");s(this,"displayLiveGraph",!0);s(this,"isEtEnabled",!0);s(this,"etMaxPrice",0);s(this,"etCurrentPrice",0);s(this,"cpDailyExported",0);s(this,"evuId",0);s(this,"etProvider","");s(this,"ipAddress","");s(this,"systemTime",0);s(this,"version","");s(this,"versionDetails","");s(this,"devBranch","")}get pvBatteryPriority(){return this._pvBatteryPriority}set pvBatteryPriority(e){this._pvBatteryPriority=e,X("pvBatteryPriority",e)}updatePvBatteryPriority(e){this._pvBatteryPriority=e}}const Da=[["EV","ev_mode"],["Speicher","bat_mode"],["MinSoc","min_soc_bat_mode"]],ae=J({evuIn:{name:"Netz",color:"var(--color-evu)",icon:""},pv:{name:"PV",color:"var(--color-pv",icon:""},batOut:{name:"Bat >",color:"var(--color-battery)",icon:""},evuOut:{name:"Export",color:"var(--color-export)",icon:""},charging:{name:"Laden",color:"var(--color-charging)",icon:""},devices:{name:"Geräte",color:"var(--color-devices)",icon:""},batIn:{name:"> Bat",color:"var(--color-battery)",icon:""},house:{name:"Haus",color:"var(--color-house)",icon:""},cp1:{name:"Ladepunkt",color:"var(--color-cp1)",icon:"Ladepunkt"},cp2:{name:"Ladepunkt",color:"var(--color-cp2)",icon:"Ladepunkt"},cp3:{name:"Ladepunkt",color:"var(--color-cp3)",icon:"Ladepunkt"},cp4:{name:"Ladepunkt",color:"var(--color-cp4)",icon:"Ladepunkt"},cp5:{name:"Ladepunkt",color:"var(--color-cp5)",icon:"Ladepunkt"},cp6:{name:"Ladepunkt",color:"var(--color-cp6)",icon:"Ladepunkt"},cp7:{name:"Ladepunkt",color:"var(--color-cp7)",icon:"Ladepunkt"},cp8:{name:"Ladepunkt",color:"var(--color-cp8)",icon:"Ladepunkt"},sh1:{name:"Gerät",color:"var(--color-sh1)",icon:"Gerät"},sh2:{name:"Gerät",color:"var(--color-sh2)",icon:"Gerät"},sh3:{name:"Gerät",color:"var(--color-sh3)",icon:"Gerät"},sh4:{name:"Gerät",color:"var(--color-sh4)",icon:"Gerät"},sh5:{name:"Gerät",color:"var(--color-sh5)",icon:"Gerät"},sh6:{name:"Gerät",color:"var(--color-sh6)",icon:"Gerät"},sh7:{name:"Gerät",color:"var(--color-sh7)",icon:"Gerät"},sh8:{name:"Gerät",color:"var(--color-sh8)",icon:"Gerät"},sh9:{name:"Gerät",color:"var(--color-sh9)",icon:"Gerät"}});class Rt{constructor(){s(this,"_items",{});this.addItem("evuIn"),this.addItem("pv"),this.addItem("batOut"),this.addItem("evuOut"),this.addItem("charging"),this.addItem("devices"),this.addItem("batIn"),this.addItem("house")}get items(){return this._items}keys(){return Object.keys(this._items)}values(){return Object.values(this._items)}addItem(e){this._items[e]=ke(e)}setEnergy(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energy=a}setEnergyPv(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyPv=a}setEnergyBat(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyBat=a}setPvPercentage(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].pvPercentage=a}calculateHouseEnergy(){this._items.house.energy=this._items.evuIn.energy+this._items.pv.energy+this._items.batOut.energy-this._items.evuOut.energy-this._items.batIn.energy-this._items.charging.energy-this._items.devices.energy}}let P=new Rt;function St(){P=new Rt}const E=J({evuIn:ke("evuIn"),pv:ke("pv"),batOut:ke("batOut")}),$=J({evuOut:ke("evuOut"),charging:ke("charging"),devices:ke("devices"),batIn:ke("batIn"),house:ke("house")}),F=J(new Aa);de("");const tt=de(!1);function ke(t){return{name:ae[t]?ae[t].name:"item",power:0,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:ae[t]?ae[t].color:"var(--color-charging)",icon:ae[t]?ae[t].icon:""}}const ne=J({active:!1,locked:!0,usePin:!1,code:"",timeout:60,localCpOnly:!1});function vt(){ne.usePin&&ne.locked?new Gt("#numberpad").toggle():(ne.locked=!1,setTimeout(()=>{ne.locked=!0},ne.timeout*1e3))}function Ga(t){return t==ne.code}function Ea(){$.house.power=$.house.power-$.devices.power}const Ot=de(new Date),Wa={class:"scaled"},za=T({__name:"DisplayButton",props:{icon:{},bgcolor:{},color:{}},emits:["click"],setup(t,{emit:e}){const a=t,n=e;function o(){n("click",!0)}return(i,h)=>(p(),y("div",{style:oe({"background-color":a.bgcolor?a.bgcolor:"var(--color-bg)",color:a.color?a.color:"var(--color-title)"}),class:"displaybutton rounded-pill",type:"button",onClick:o},[a.icon?(p(),y("span",{key:0,class:K(["fas me-2 scaled",a.icon])},null,2)):M("",!0),c("span",Wa,[pe(i.$slots,"default",{},void 0,!0)])],4))}}),Q=(t,e)=>{const a=t.__vccOpts||t;for(const[n,o]of e)a[n]=o;return a},Ce=Q(za,[["__scopeId","data-v-d2ce91a5"]]);class ja{constructor(e){s(this,"id");s(this,"name","Gerät");s(this,"power",0);s(this,"status","off");s(this,"energy",0);s(this,"runningTime",0);s(this,"configured",!1);s(this,"_showInGraph",!0);s(this,"color","white");s(this,"canSwitch",!1);s(this,"countAsHouse",!1);s(this,"energyPv",0);s(this,"energyBat",0);s(this,"pvPercentage",0);s(this,"tempConfigured",0);s(this,"temp",[300,300,300]);s(this,"on",!1);s(this,"isAutomatic",!0);s(this,"icon","");this.id=e}get showInGraph(){return this._showInGraph}set showInGraph(e){this._showInGraph=e,H()}setShowInGraph(e){this._showInGraph=e}}const V=J({});function Ht(t){t in V?console.info("Duplicate sh device message: "+t):(V[t]=new ja(t),V[t].color="var(--color-sh"+Object.values(V).length+")")}class Na{constructor(){s(this,"graphToShow","powermeter");s(this,"cpToShow",0);s(this,"displayLocked",!0);s(this,"_showRelativeArcs",!1);s(this,"showTodayGraph",!0);s(this,"_graphPreference","live");s(this,"_usageStackOrder",0);s(this,"_displayMode","dark");s(this,"_showGrid",!1);s(this,"_smartHomeColors","normal");s(this,"_decimalPlaces",1);s(this,"_showQuickAccess",!0);s(this,"_simpleCpList",!1);s(this,"_shortCpList","no");s(this,"_showAnimations",!0);s(this,"_preferWideBoxes",!1);s(this,"_maxPower",4e3);s(this,"_fluidDisplay",!1);s(this,"_showClock","no");s(this,"_showButtonBar",!0);s(this,"_showCounters",!1);s(this,"_showVehicles",!1);s(this,"_showPrices",!1);s(this,"_debug",!1);s(this,"isEtEnabled",!1);s(this,"etPrice",20.5);s(this,"showRightButton",!0);s(this,"showLeftButton",!0);s(this,"animationDuration",300);s(this,"animationDelay",100);s(this,"zoomGraph",!1)}get showRelativeArcs(){return this._showRelativeArcs}set showRelativeArcs(e){this._showRelativeArcs=e,H()}setShowRelativeArcs(e){this._showRelativeArcs=e}get graphPreference(){return this._graphPreference}set graphPreference(e){this._graphPreference=e,H()}setGraphPreference(e){this._graphPreference=e}get usageStackOrder(){return this._usageStackOrder}set usageStackOrder(e){this._usageStackOrder=e,H()}setUsageStackOrder(e){this._usageStackOrder=e}get displayMode(){return this._displayMode}set displayMode(e){this._displayMode=e,Ja(e)}setDisplayMode(e){this._displayMode=e}get showGrid(){return this._showGrid}set showGrid(e){this._showGrid=e,H()}setShowGrid(e){this._showGrid=e}get decimalPlaces(){return this._decimalPlaces}set decimalPlaces(e){this._decimalPlaces=e,H()}setDecimalPlaces(e){this._decimalPlaces=e}get smartHomeColors(){return this._smartHomeColors}set smartHomeColors(e){this._smartHomeColors=e,Bt(e),H()}setSmartHomeColors(e){this._smartHomeColors=e,Bt(e)}get showQuickAccess(){return this._showQuickAccess}set showQuickAccess(e){this._showQuickAccess=e,H()}setShowQuickAccess(e){this._showQuickAccess=e}get simpleCpList(){return this._simpleCpList}set simpleCpList(e){this._simpleCpList=e,H()}setSimpleCpList(e){this._simpleCpList=e}get shortCpList(){return this._shortCpList}set shortCpList(e){this._shortCpList=e,H()}setShortCpList(e){this._shortCpList=e}get showAnimations(){return this._showAnimations}set showAnimations(e){this._showAnimations=e,H()}setShowAnimations(e){this._showAnimations=e}get preferWideBoxes(){return this._preferWideBoxes}set preferWideBoxes(e){this._preferWideBoxes=e,H()}setPreferWideBoxes(e){this._preferWideBoxes=e}get maxPower(){return this._maxPower}set maxPower(e){this._maxPower=e,H()}setMaxPower(e){this._maxPower=e}get fluidDisplay(){return this._fluidDisplay}set fluidDisplay(e){this._fluidDisplay=e,H()}setFluidDisplay(e){this._fluidDisplay=e}get showClock(){return this._showClock}set showClock(e){this._showClock=e,H()}setShowClock(e){this._showClock=e}get debug(){return this._debug}set debug(e){this._debug=e,H()}setDebug(e){this._debug=e}get showButtonBar(){return this._showButtonBar}set showButtonBar(e){this._showButtonBar=e,H()}setShowButtonBar(e){this._showButtonBar=e}get showCounters(){return this._showCounters}set showCounters(e){this._showCounters=e,H()}setShowCounters(e){this._showCounters=e}get showVehicles(){return this._showVehicles}set showVehicles(e){this._showVehicles=e,H()}setShowVehicles(e){this._showVehicles=e}get showPrices(){return this._showPrices}set showPrices(e){this._showPrices=e,H()}setShowPrices(e){this._showPrices=e}}const v=J(new Na),Ua=992,ft=J({x:document.documentElement.clientWidth,y:document.documentElement.clientHeight});function Fa(){ft.x=document.documentElement.clientWidth,ft.y=document.documentElement.clientHeight}g(()=>ft.x>=Ua);const Ge={stop:{mode:ge.stop,name:"Stop",color:"var(--color-fg)",icon:"fa-power-off"},standby:{mode:ge.standby,name:"Standby",color:"var(--color-axis",icon:"fa-pause"},pv_charging:{mode:ge.pv_charging,name:"PV",color:"var(--color-pv",icon:"fa-solar-panel"},scheduled_charging:{mode:ge.scheduled_charging,name:"Zielladen",color:"var(--color-battery)",icon:"fa-bullseye"},instant_charging:{mode:ge.instant_charging,name:"Sofort",color:"var(--color-charging)",icon:"fa-bolt"}};function H(){Ra()}function Ja(t){const e=ye("html");e.classed("theme-dark",t=="dark"),e.classed("theme-light",t=="light"),e.classed("theme-blue",t=="blue"),H()}function Bt(t){const e=ye("html");e.classed("shcolors-normal",t=="normal"),e.classed("shcolors-standard",t=="standard"),e.classed("shcolors-advanced",t=="advanced")}const lt={chargemode:"Der Lademodus für das Fahrzeug an diesem Ladepunkt",vehicle:"Das Fahrzeug, das an diesem Ladepounkt geladen wird",locked:"Für das Laden sperren",priority:"Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar",timeplan:"Das Laden nach Zeitplan für dieses Fahrzeug aktivieren",minsoc:"Immer mindestens bis zum eingestellten Ladestand laden. Wenn notwendig mit Netzstrom.",minpv:"Durchgehend mit mindestens dem eingestellten Strom laden. Wenn notwendig mit Netzstrom.",pricebased:"Laden bei dynamischem Stromtarif, wenn eingestellter Maximalpreis unterboten wird."};function Ra(){const t={};t.hideSH=Object.values(V).filter(e=>!e.showInGraph).map(e=>e.id),t.showLG=v.graphPreference=="live",t.displayM=v.displayMode,t.stackO=v.usageStackOrder,t.showGr=v.showGrid,t.decimalP=v.decimalPlaces,t.smartHomeC=v.smartHomeColors,t.relPM=v.showRelativeArcs,t.maxPow=v.maxPower,t.showQA=v.showQuickAccess,t.simpleCP=v.simpleCpList,t.shortCP=v.shortCpList,t.animation=v.showAnimations,t.wideB=v.preferWideBoxes,t.fluidD=v.fluidDisplay,t.clock=v.showClock,t.showButtonBar=v.showButtonBar,t.showCounters=v.showCounters,t.showVehicles=v.showVehicles,t.showPrices=v.showPrices,t.debug=v.debug,document.cookie="openWBColorTheme="+JSON.stringify(t)+";max-age=16000000;samesite=strict"}const Fe=t=>(me("data-v-126005ae"),t=t(),ve(),t),Ha={class:"navigation"},Ya={class:"graphbuttons"},Qa={class:"timedisplay"},qa={class:"cpbuttons"},Xa=Fe(()=>c("span",{class:"fas fa-arrow-left px-2"},null,-1)),Za=Fe(()=>c("span",{class:"fas fa-charging-station pe-2"},null,-1)),Ka=Fe(()=>c("span",{class:"fas fa-lock px-4"},null,-1)),en=Fe(()=>c("span",{class:"fas fa-charging-station px-2"},null,-1)),tn=Fe(()=>c("span",{class:"fas fa-arrow-right pe-2"},null,-1)),an=T({__name:"NavigationBar",setup(t){let e;function a(){let d=Object.values(w).length;v.cpToShow=(v.cpToShow+1)%d}function n(){let d=Object.values(w).length;v.cpToShow=((v.cpToShow-1)%d+d)%d}function o(){v.graphToShow="powermeter"}function i(){v.graphToShow="powergraph"}function h(){v.graphToShow="energymeter"}return _t(()=>{e=setInterval(()=>{Ot.value=new Date},1e3)}),ha(()=>{clearInterval(e)}),(d,l)=>(p(),y("div",Ha,[c("span",Ya,[c("span",Qa,I(r(wa)(r(Ot))),1),_(Ce,{icon:"fa-chart-pie",onClick:o},{default:k(()=>[j("Leistung")]),_:1}),_(Ce,{icon:"fa-chart-line",onClick:i},{default:k(()=>[j("Verlauf")]),_:1}),_(Ce,{icon:"fa-chart-column",onClick:h},{default:k(()=>[j("Energie")]),_:1})]),_(Ce,{icon:"fa-rectangle-list","data-bs-toggle":"modal","data-bs-target":"#statuspage"},{default:k(()=>[j("Status")]),_:1}),c("span",qa,[_(Ce,{color:"var(--color-cp0)",onClick:n},{default:k(()=>[Xa,Za]),_:1}),_(Ce,{bgcolor:r(ne).locked?"var(--color-evu)":"var(--color-pv)",onClick:r(vt)},{default:k(()=>[Ka]),_:1},8,["bgcolor","onClick"]),_(Ce,{color:"var(--color-cp0)",onClick:a},{default:k(()=>[en,tn]),_:1})])]))}}),nn=Q(an,[["__scopeId","data-v-126005ae"]]),on=["origin"],rn=T({__name:"PMSourceArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=g(()=>{let n={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:""},o=E;o["zz-empty"]=n;const i=Object.values(E).length-1,h=Et().value(m=>m.power).startAngle(-Math.PI/2+e.circleGapSize).endAngle(Math.PI/2-e.circleGapSize).sort(null),d=Wt().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius).padAngle(0),l=ye("g#pmSourceArc");return l.selectAll("*").remove(),l.selectAll("sources").data(h(Object.values(o))).enter().append("path").attr("d",d).attr("fill",m=>m.data.color).attr("stroke",(m,f)=>f==i?m.data.power>0?"var(--color-scale)":"null":m.data.color),"pmSourceArc.vue"});return pa(()=>{let n=E.pv.power+E.evuIn.power+E.batOut.power;n>v.maxPower&&(v.maxPower=n)}),(n,o)=>(p(),y("g",{id:"pmSourceArc",origin:a.value},null,8,on))}}),sn=["origin"],cn=T({__name:"PMUsageArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=g(()=>{let n={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:""};const o=[$.evuOut,$.charging].concat(Object.values(V).filter(m=>m.configured&&!m.countAsHouse).sort((m,f)=>f.power-m.power)).concat([$.batIn,$.house]).concat(n),i=o.length-1,h=Et().value(m=>m.power).startAngle(Math.PI*1.5-e.circleGapSize).endAngle(Math.PI/2+e.circleGapSize).sort(null),d=Wt().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius),l=ye("g#pmUsageArc");return l.selectAll("*").remove(),l.selectAll("consumers").data(h(o)).enter().append("path").attr("d",d).attr("fill",m=>m.data.color).attr("stroke",(m,f)=>f==i?m.data.power>0?"var(--color-scale)":"null":m.data.color),"pmUsageArc.vue"});return(n,o)=>(p(),y("g",{id:"pmUsageArc",origin:a.value},null,8,sn))}}),Yt=T({__name:"FormatWatt",props:{watt:{}},setup(t){const e=t,a=g(()=>Qe(e.watt,v.decimalPlaces));return(n,o)=>I(a.value)}}),ln={key:0,id:"pmLabel"},un=["x","y","fill","text-anchor"],dn=22,fe=T({__name:"PMLabel",props:{x:{},y:{},data:{},props:{},anchor:{},labeltext:{},labelicon:{},labelcolor:{}},setup(t){const e=t,a=g(()=>e.labeltext?e.labeltext:e.props?e.props.icon+" ":e.labelicon?e.labelicon+" ":""),n=g(()=>e.labelcolor?e.labelcolor:e.props?e.props.color:""),o=g(()=>!e.data||e.data.power>0),i=g(()=>e.labeltext?"":"fas");return(h,d)=>o.value?(p(),y("g",ln,[c("text",{x:h.x,y:h.y,fill:n.value,"text-anchor":h.anchor,"font-size":dn,class:"pmLabel"},[c("tspan",{class:K(i.value)},I(a.value),3),c("tspan",null,[h.data!==void 0?(p(),B(Yt,{key:0,watt:h.data.power},null,8,["watt"])):M("",!0)])],8,un)])):M("",!0)}}),hn={class:"wb-widget p-0 m-0 shadow"},pn={class:"d-flex justify-content-between"},gn={class:"m-4 me-0 mb-0"},mn=c("div",{class:"p-0"},"(title goes here)",-1),vn={class:"p-4 pb-0 ps-0 m-0",style:{"text-align":"right"}},fn={class:"px-4 pt-4 pb-2 wb-subwidget"},_n={class:"row"},yn={class:"col m-0 p-0"},bn={class:"container-fluid m-0 p-0"},wn={key:0},Sn=c("hr",null,null,-1),kn={class:"px-4 py-2 wb-subwidget"},Mn={class:"row"},xn={class:"col"},Pn={class:"container-fluid m-0 p-0"},ot=T({__name:"WBWidget",props:{variableWidth:{type:Boolean},fullWidth:{type:Boolean}},setup(t){const e=t,a=g(()=>e.fullWidth?"col-12":e.variableWidth&&v.preferWideBoxes?"col-lg-6":"col-lg-4");return(n,o)=>(p(),y("div",{class:K(["p-2 m-0 d-flex",a.value])},[c("div",hn,[c("div",pn,[c("h3",gn,[pe(n.$slots,"title",{},()=>[mn]),pe(n.$slots,"subtitle")]),c("div",vn,[pe(n.$slots,"buttons")])]),c("div",fn,[c("div",_n,[c("div",yn,[c("div",bn,[pe(n.$slots,"default")])])])]),n.$slots.footer!=null?(p(),y("div",wn,[Sn,c("div",kn,[c("div",Mn,[c("div",xn,[c("div",Pn,[pe(n.$slots,"footer")])])])])])):M("",!0)])],2))}});class Cn{constructor(){s(this,"active",!1);s(this,"etPriceList",new Map);s(this,"etProvider","");s(this,"etMaxPrice",0)}get etCurrentPriceString(){const[e]=se.etPriceList.values();return(Math.round(e*10)/10).toFixed(1)+" ct"}}const se=J(new Cn),$n={id:"powermeter",class:"p-0 m-0"},In=["viewBox"],On=["transform"],Bn={transform:"scale(0.9294,1)"},Tn=["x"],be=500,we=20,Tt=1,Ln=T({__name:"PowerMeter",setup(t){const e=be,a=Math.PI/40,n=[[4],[4,6],[1,4,6],[0,2,4,6],[0,2,3,5,6]],o=[{x:-85,y:e/2*1/5},{x:0,y:e/2*1/5},{x:85,y:e/2*1/5},{x:-85,y:e/2*2/5},{x:0,y:e/2*2/5},{x:85,y:e/2*2/5},{x:0,y:e/2*3/5}],i=g(()=>be/2-we),h=g(()=>{let x="",N=Object.values(E).filter(z=>z.power>0);return N.length==1&&N[0].name=="PV"?x="Aktueller Verbrauch: ":x="Bezug/Verbrauch: ",x+Qe($.house.power+$.charging.power+$.devices.power+$.batIn.power,v.decimalPlaces)}),d=g(()=>{let x=E.pv.power+E.evuIn.power+E.batOut.power;return v.maxPower>x?Qe(v.maxPower,v.decimalPlaces):Qe(x,v.decimalPlaces)}),l=g(()=>Object.values(w)),m=g(()=>{let x=0;return v.showRelativeArcs&&(x=v.maxPower-(E.pv.power+E.evuIn.power+E.batOut.power)),x<0?0:x}),f=g(()=>[$.evuOut,$.charging,$.devices,$.batIn,$.house].filter(x=>x.power>0)),W=g(()=>n[f.value.length-1]);function S(x){return o[W.value[x]]}function Y(x){return Math.round(l.value[x].soc)}function q(x){return x.length>12?x.slice(0,11)+".":x}const U=g(()=>{const[x]=se.etPriceList.values();return Math.round(x*10)/10});return(x,N)=>(p(),B(ot,{"full-width":!0},{title:k(()=>[j(" Aktuelle Leistung ")]),default:k(()=>[c("figure",$n,[(p(),y("svg",{viewBox:"0 0 "+be+" "+r(e)},[c("g",{transform:"translate("+be/2+","+r(e)/2+")"},[c("g",Bn,[_(rn,{radius:i.value,"corner-radius":Tt,"circle-gap-size":a,"empty-power":m.value},null,8,["radius","empty-power"]),_(cn,{"sh-device":r(V),radius:i.value,"corner-radius":Tt,"circle-gap-size":a,"empty-power":m.value},null,8,["sh-device","radius","empty-power"]),_(fe,{x:0,y:-r(e)/10*2,data:r(E).pv,props:r(ae).pv,anchor:"middle",config:r(v)},null,8,["y","data","props","config"]),_(fe,{x:0,y:-r(e)/10*3,data:r(E).evuIn,props:r(ae).evuIn,anchor:"middle",config:r(v)},null,8,["y","data","props","config"]),_(fe,{x:0,y:-r(e)/10,data:r(E).batOut,props:r(ae).batOut,anchor:"middle",config:r(v)},null,8,["y","data","props","config"]),r(se).active?(p(),B(fe,{key:0,x:0,y:-r(e)/10,data:r(E).batOut,props:r(ae).batOut,anchor:"middle",config:r(v)},null,8,["y","data","props","config"])):M("",!0),(p(!0),y(Ie,null,Ae(f.value,(z,O)=>(p(),B(fe,{key:O,x:S(O).x,y:S(O).y,data:z,labelicon:z.icon,labelcolor:z.color,anchor:"middle",config:r(v)},null,8,["x","y","data","labelicon","labelcolor","config"]))),128)),l.value.length>0&&r(A)[l.value[0].connectedVehicle]?(p(),B(fe,{key:1,x:-be/2-we/4+10,y:-r(e)/2+we+5,labeltext:q(r(A)[l.value[0].connectedVehicle].name)+": "+Y(0)+"%",labelcolor:l.value[0].color,anchor:"start",config:r(v)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),l.value.length>1&&r(A)[l.value[1].connectedVehicle]?(p(),B(fe,{key:2,x:be/2+we/4-10,y:-r(e)/2+we+5,labeltext:q(r(A)[l.value[1].connectedVehicle].name)+": "+Y(1)+"%",labelcolor:l.value[1].color,anchor:"end",config:r(v)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),r(F).batterySoc>0?(p(),B(fe,{key:3,x:-be/2-we/4+10,y:r(e)/2-we+15,labeltext:"Speicher: "+r(F).batterySoc+"%",labelcolor:r($).batIn.color,anchor:"start",config:r(v)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),r(se).active?(p(),B(fe,{key:4,x:be/2+we/4-10,y:r(e)/2-we+15,value:U.value,labeltext:r(se).etCurrentPriceString,labelcolor:"var(--color-charging)",anchor:"end",config:r(v)},null,8,["x","y","value","labeltext","config"])):M("",!0),_(fe,{x:0,y:0,labeltext:h.value,labelcolor:"var(--color-fg)",anchor:"middle",config:r(v)},null,8,["labeltext","config"]),r(v).showRelativeArcs?(p(),y("text",{key:5,x:be/2-44,y:"2","text-anchor":"middle",fill:"var(--color-axis)","font-size":"12"}," Peak: "+I(d.value),9,Tn)):M("",!0)])],8,On)],8,In))])]),_:1}))}}),Se=500,Pe=500,L={top:10,right:20,bottom:10,left:25},kt=["charging","house","batIn","devices"];class Vn{constructor(){s(this,"data",[]);s(this,"_graphMode","")}get graphMode(){return this._graphMode}set graphMode(e){this._graphMode=e}}const u=J(new Vn);let at=!0,Ne=!0;function Lt(){at=!1}function Vt(){Ne=!1}function An(t){Ne=t}function Je(t){u.data=t}const Z=J({refreshTopicPrefix:"openWB/graph/alllivevaluesJson",updateTopic:"openWB/graph/lastlivevaluesJson",configTopic:"openWB/graph/config/#",initialized:!1,initCounter:0,graphRefreshCounter:0,rawDataPacks:[],duration:0,activate(){u.data=[],this.unsubscribeUpdates(),this.subscribeRefresh(),Be(this.configTopic),this.initialized=!1,this.initCounter=0,this.graphRefreshCounter=0,this.rawDataPacks=[],zn(),tt.value=!0},deactivate(){this.unsubscribeRefresh(),this.unsubscribeUpdates(),Ve(this.configTopic)},subscribeRefresh(){for(let t=1;t<17;t++)Be(this.refreshTopicPrefix+t)},unsubscribeRefresh(){for(let t=1;t<17;t++)Ve(this.refreshTopicPrefix+t)},subscribeUpdates(){Be(this.updateTopic)},unsubscribeUpdates(){Ve(this.updateTopic)}}),R=J({topic:"openWB/log/daily/#",date:new Date,activate(){if(u.graphMode=="day"||u.graphMode=="today"){u.graphMode=="today"&&(this.date=new Date);const t=this.date.getFullYear().toString()+(this.date.getMonth()+1).toString().padStart(2,"0")+this.date.getDate().toString().padStart(2,"0");Be(this.topic),wt({command:"getDailyLog",data:{day:t}})}},deactivate(){Ve(this.topic)},back(){this.date=new Date(this.date.setTime(this.date.getTime()-864e5))},forward(){this.date=new Date(this.date.setTime(this.date.getTime()+864e5))},setDate(t){this.date=t},getDate(){return this.date}}),Me=J({topic:"openWB/log/monthly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(){const t=this.year.toString()+this.month.toString().padStart(2,"0");u.data=[],Be(this.topic),wt({command:"getMonthlyLog",data:{month:t}})},deactivate(){Ve(this.topic)},back(){this.month-=1,this.month<1&&(this.month=12,this.year-=1),this.activate()},forward(){const t=new Date;t.getFullYear()==this.year?this.month-1<t.getMonth()&&(this.month=this.month+1):(this.month=this.month+1,this.month>12&&(this.month=1,this.year+=1)),this.activate()},getDate(){return new Date(this.year,this.month)}}),$e=J({topic:"openWB/log/yearly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(){const t=this.year.toString();u.data=[],Be(this.topic),wt({command:"getYearlyLog",data:{year:t}})},deactivate(){Ve(this.topic)},back(){this.year-=1,this.activate()},forward(){this.year<new Date().getFullYear()&&(this.year=this.year+1,this.activate())},getDate(){return new Date(this.year,this.month)}});function ee(t=!1){switch(u.graphMode==""?Dn(v.graphPreference):u.graphMode=="live"?v.graphPreference="live":v.graphPreference="today",t||(at=!0,Ne=!0),u.graphMode){case"live":R.deactivate(),Me.deactivate(),$e.deactivate(),Z.activate();break;case"today":Z.deactivate(),Me.deactivate(),$e.deactivate(),R.activate();break;case"day":Z.deactivate(),Me.deactivate(),$e.deactivate(),R.activate();break;case"month":Z.deactivate(),R.deactivate(),$e.deactivate(),Me.activate();break;case"year":Z.deactivate(),R.deactivate(),Me.deactivate(),$e.activate();break}}function Dn(t){u.graphMode=t}function Gn(t,e){e[t]>0&&(P.items[t].energyPv+=1e3/12*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),P.items[t].energyBat+=1e3/12*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}function En(t,e){e[t]>0&&(P.items[t].energyPv+=1e3*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),P.items[t].energyBat+=1e3*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}const Wn=["evuIn","pv","batIn","evuOut"],ze=de(!1);function Mt(t,e){Object.entries(t).length>0?(ze.value=!1,Object.entries(t.counter).forEach(([a,n])=>{(e.length==0||e.includes(a))&&(P.items.evuIn.energy+=n.energy_imported,P.items.evuOut.energy+=n.energy_exported)}),P.items.pv.energy=t.pv.all.energy_exported,t.bat.all&&(P.items.batIn.energy=t.bat.all.energy_imported,P.items.batOut.energy=t.bat.all.energy_exported),Object.entries(t.cp).forEach(([a,n])=>{a=="all"?P.setEnergy("charging",n.energy_imported):P.setEnergy(a,n.energy_imported)}),P.setEnergy("devices",0),Object.entries(t.sh).forEach(([a,n])=>{P.setEnergy(a,n.energy_imported);const o=a.substring(2);V[+o].countAsHouse||(P.items.devices.energy+=n.energy_imported)}),t.hc&&t.hc.all?P.setEnergy("house",t.hc.all.energy_imported):P.calculateHouseEnergy(),P.keys().map(a=>{Wn.includes(a)||(P.setPvPercentage(a,Math.round((P.items[a].energyPv+P.items[a].energyBat)/P.items[a].energy*100)),kt.includes(a)&&($[a].energy=P.items[a].energy,$[a].energyPv=P.items[a].energyPv,$[a].energyBat=P.items[a].energyBat,$[a].pvPercentage=P.items[a].pvPercentage))}),u.graphMode=="today"&&(Object.values(w).map(a=>{const n=P.items["cp"+a.id];n&&(a.energyPv=n.energyPv,a.energyBat=n.energyBat,a.pvPercentage=n.pvPercentage)}),Object.values(V).map(a=>{const n=P.items["sh"+a.id];n&&(a.energy=n.energy,a.energyPv=n.energyPv,a.energyBat=n.energyBat,a.pvPercentage=n.pvPercentage)}))):ze.value=!0,tt.value=!0}function zn(){P.keys().map(t=>{kt.includes(t)&&($[t].energy=P.items[t].energy,$[t].energyPv=0,$[t].energyBat=0,$[t].pvPercentage=0)}),Object.values(w).map(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0}),Object.values(V).map(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0})}const _e=g(()=>{const t=Ue(u.data,e=>e.date);return t[1]?gt().domain(Array.from({length:t[1]},(e,a)=>a+1)).paddingInner(.4).range([0,Se-L.left-2]):gt().range([0,0])});function xt(){switch(u.graphMode){case"live":u.graphMode="today",v.showRightButton=!0,ee();break;case"today":u.graphMode="day",R.date=new Date,R.back(),ee();break;case"day":R.back(),ee();break;case"month":Me.back();break;case"year":$e.back();break}}function Qt(){const t=new Date;switch(u.graphMode){case"live":break;case"today":u.graphMode="live",v.showRightButton=!1,ee();break;case"day":R.forward(),R.date.getDate()==t.getDate()&&R.date.getMonth()==t.getMonth()&&R.date.getFullYear()==t.getFullYear()&&(u.graphMode="today"),ee();break;case"month":Me.forward();break;case"year":$e.forward();break}}function qt(){switch(u.graphMode){case"live":xt();break;case"day":case"today":u.graphMode="month",ee();break;case"month":u.graphMode="year",ee();break}}function Xt(){switch(u.graphMode){case"year":u.graphMode="month",ee();break;case"month":u.graphMode="today",ee();break;case"today":case"day":u.graphMode="live",ee();break}}function jn(t){if(u.graphMode=="day"||u.graphMode=="today"){R.setDate(t);const e=new Date;R.date.getDate()==e.getDate()&&R.date.getMonth()==e.getMonth()&&R.date.getFullYear()==e.getFullYear()?u.graphMode="today":u.graphMode="day",ee()}}const Nn=["origin","transform"],Un=T({__name:"PGSourceGraph",props:{width:{},height:{},margin:{}},setup(t){const e=t,a={house:"var(--color-house)",batIn:"var(--color-battery)",inverter:"var(--color-pv)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)"};var n,o;const i=v.showAnimations?v.animationDuration:0,h=v.showAnimations?v.animationDelay:0,d=g(()=>{const b=ye("g#pgSourceGraph");u.graphMode=="month"||u.graphMode=="year"?O(b):z(b),b.selectAll(".axis").remove();const C=b.append("g").attr("class","axis");return C.call(U.value),C.selectAll(".tick").attr("font-size",12),C.selectAll(".tick line").attr("stroke",N.value).attr("stroke-width",x.value),C.select(".domain").attr("stroke","var(--color-bg)"),"pgSourceGraph.vue"}),l=g(()=>u.graphMode=="month"||u.graphMode=="year"?["evuIn","batOut","selfUsage","evuOut"]:["selfUsage","evuOut","batOut","evuIn"]),m=g(()=>Te().domain([0,u.data.length-1]).range([0,e.width])),f=g(()=>zt().keys(l.value)),W=g(()=>f.value(u.data)),S=g(()=>Te().range([e.height-10,0]).domain(u.graphMode=="year"?[0,Math.ceil(Y.value[1]*10)/10]:[0,Math.ceil(Y.value[1])])),Y=g(()=>{let b=Ue(u.data,C=>Math.max(C.pv+C.evuIn+C.batOut,C.selfUsage+C.evuOut));return b[0]!=null&&b[1]!=null?(u.graphMode=="year"&&(b[0]=b[0]/1e3,b[1]=b[1]/1e3),b):[0,0]}),q=g(()=>u.graphMode=="month"||u.graphMode=="year"?-e.width-e.margin.right-22:-e.width),U=g(()=>yt(S.value).tickSizeInner(q.value).ticks(4).tickFormat(b=>(b==0?"":Math.round(b*10)/10).toLocaleString(void 0))),x=g(()=>v.showGrid?"0.5":"1"),N=g(()=>v.showGrid?"var(--color-grid)":"var(--color-bg)");function z(b){const C=Xe().x((G,he)=>m.value(he)).y(S.value(0)),D=Xe().x((G,he)=>m.value(he)).y0(G=>S.value(u.graphMode=="year"?G[0]/1e3:G[0])).y1(G=>S.value(u.graphMode=="year"?G[1]/1e3:G[1]));at?(b.selectAll("*").remove(),n=b.selectAll(".sourceareas").data(W.value).enter().append("path").attr("fill",(G,he)=>a[l.value[he]]).attr("d",G=>C(G)),n.transition().duration(i).delay(h).ease(Ee).attr("d",G=>D(G)),Lt()):n.data(W.value).transition().duration(0).ease(Ee).attr("d",G=>D(G))}function O(b){at?(b.selectAll("*").remove(),o=b.selectAll(".sourcebar").data(W.value).enter().append("g").attr("fill",(C,D)=>a[l.value[D]]).selectAll("rect").data(C=>C).enter().append("rect").attr("x",(C,D)=>_e.value(u.data[D].date)??0).attr("y",()=>S.value(0)).attr("height",0).attr("width",_e.value.bandwidth()),o.transition().duration(i).delay(h).ease(Ee).attr("height",C=>u.graphMode=="year"?S.value(C[0]/1e3)-S.value(C[1]/1e3):S.value(C[0])-S.value(C[1])).attr("y",C=>u.graphMode=="year"?S.value(C[1]/1e3):S.value(C[1])),Lt()):(b.selectAll("*").remove(),o=b.selectAll(".sourcebar").data(W.value).enter().append("g").attr("fill",(C,D)=>a[l.value[D]]).selectAll("rect").data(C=>C).enter().append("rect").attr("x",(C,D)=>_e.value(u.data[D].date)??0).attr("y",C=>u.graphMode=="year"?S.value(C[1]/1e3):S.value(C[1])).attr("width",_e.value.bandwidth()).attr("height",C=>u.graphMode=="year"?S.value(C[0]/1e3)-S.value(C[1]/1e3):S.value(C[0])-S.value(C[1])))}return(b,C)=>(p(),y("g",{id:"pgSourceGraph",origin:d.value,transform:"translate("+b.margin.left+","+b.margin.top+")"},null,8,Nn))}}),Fn=["origin","transform"],Jn=T({__name:"PGUsageGraph",props:{width:{},height:{},margin:{},stackOrder:{}},setup(t){const e=t,a=[["house","charging","devices","batIn"],["charging","devices","house","batIn"],["devices","charging","house","batIn"]],n={house:"var(--color-house)",charging:"var(--color-charging)",batIn:"var(--color-battery)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)",cp0:"var(--color-cp0)",cp1:"var(--color-cp1)",cp2:"var(--color-cp2)",cp3:"var(--color-cp3)",sh1:"var(--color-sh1)",sh2:"var(--color-sh2)",sh3:"var(--color-sh3)",sh4:"var(--color-sh4)",devices:"var(--color-devices)"};var o,i;const h=v.showAnimations?v.animationDuration:0,d=v.showAnimations?v.animationDelay:0,l=g(()=>{const O=ye("g#pgUsageGraph");u.graphMode=="month"||u.graphMode=="year"?z(O):N(O),O.selectAll(".axis").remove();const b=O.append("g").attr("class","axis");return b.call(x.value),b.selectAll(".tick").attr("font-size",12).attr("color","var(--color-axis)"),v.showGrid?b.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):b.selectAll(".tick line").attr("stroke","var(--color-bg)"),b.select(".domain").attr("stroke","var(--color-bg)"),"pgUsageGraph.vue"}),m=g(()=>zt().keys(Y.value)),f=g(()=>m.value(u.data)),W=g(()=>Te().domain([0,u.data.length-1]).range([0,e.width])),S=g(()=>Te().range([e.height+10,2*e.height]).domain(u.graphMode=="year"?[0,Math.ceil(q.value[1]*10)/10]:[0,Math.ceil(q.value[1])])),Y=g(()=>{if(u.graphMode!="today"&&u.graphMode!="day")return a[e.stackOrder];{const O=a[e.stackOrder].slice(),b=O.indexOf("charging");O.splice(b,1);const C=/cp\d+/;let D=[];return u.data.length>0&&(D=Object.keys(u.data[0]).reduce((G,he)=>(he.match(C)&&G.push(he),G),[])),D.map((G,he)=>{O.splice(b+he,0,G),n[G]="var(--color-cp"+he+")"}),O}}),q=g(()=>{let O=Ue(u.data,b=>b.house+b.charging+b.batIn+b.devices);return O[0]!=null&&O[1]!=null?(u.graphMode=="year"&&(O[0]=O[0]/1e3,O[1]=O[1]/1e3),O):[0,0]}),U=g(()=>u.graphMode=="month"||u.graphMode=="year"?-e.width-e.margin.right-22:-e.width),x=g(()=>yt(S.value).tickSizeInner(U.value).ticks(4).tickFormat(O=>(O==0?"":Math.round(O*10)/10).toLocaleString(void 0)));function N(O){const b=Xe().x((D,G)=>W.value(G)).y(S.value(0)),C=Xe().x((D,G)=>W.value(G)).y0(D=>S.value(D[0])).y1(D=>S.value(D[1]));v.showAnimations?Ne?(O.selectAll("*").remove(),o=O.selectAll(".usageareas").data(f.value).enter().append("path").attr("d",D=>b(D)).attr("fill",(D,G)=>n[Y.value[G]]),o.transition().duration(300).delay(100).ease(Ee).attr("d",D=>C(D)),Vt()):(O.selectAll("*").remove(),O.selectAll(".usageareas").data(f.value).enter().append("path").attr("d",D=>C(D)).attr("fill",(D,G)=>n[Y.value[G]])):(O.selectAll("*").remove(),O.selectAll(".usageareas").data(f.value).enter().append("path").attr("d",D=>C(D)).attr("fill",(D,G)=>n[Y.value[G]]))}function z(O){Ne?(O.selectAll("*").remove(),i=O.selectAll(".usagebar").data(f.value).enter().append("g").attr("fill",(b,C)=>n[a[e.stackOrder][C]]).selectAll("rect").data(b=>b).enter().append("rect").attr("x",(b,C)=>_e.value(u.data[C].date)??0).attr("y",()=>S.value(0)).attr("height",0).attr("width",_e.value.bandwidth()),i.transition().duration(h).delay(d).ease(Ee).attr("y",b=>u.graphMode=="year"?S.value(b[0]/1e3):S.value(b[0])).attr("height",b=>u.graphMode=="year"?S.value(b[1]/1e3)-S.value(b[0]/1e3):S.value(b[1])-S.value(b[0])),Vt()):(O.selectAll("*").remove(),i=O.selectAll(".usagebar").data(f.value).enter().append("g").attr("fill",(b,C)=>n[a[e.stackOrder][C]]).selectAll("rect").data(b=>b).enter().append("rect").attr("x",(b,C)=>_e.value(u.data[C].date)??0).attr("y",b=>u.graphMode=="year"?S.value(b[0]/1e3):S.value(b[0])).attr("height",b=>u.graphMode=="year"?S.value(b[1]/1e3)-S.value(b[0]/1e3):S.value(b[1])-S.value(b[0])).attr("width",_e.value.bandwidth()))}return(O,b)=>(p(),y("g",{id:"pgUsageGraph",origin:l.value,transform:"translate("+O.margin.left+","+O.margin.top+")"},null,8,Fn))}}),Rn=["transform"],Hn=["origin","transform"],Yn=["origin","transform"],Qn={key:0},qn=["width","height"],Xn={key:1},Zn=["y","width","height"],ut=12,Kn=T({__name:"PGXAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=g(()=>rt(d.value).ticks(4).tickSizeInner(h.value).tickFormat($t("%H:%M"))),n=g(()=>ga(d.value).ticks(4).tickSizeInner(h.value+3).tickFormat($t(""))),o=g(()=>rt(_e.value).ticks(4).tickSizeInner(h.value).tickFormat(f=>f.toString())),i=g(()=>rt(_e.value).ticks(4).tickSizeInner(h.value).tickFormat(()=>"")),h=g(()=>u.graphMode!=="month"&&u.graphMode!=="year"?v.showGrid?-(e.height/2-7):-10:0),d=g(()=>{let f=Ue(u.data,W=>W.date);return f[0]&&f[1]?Ze().domain(f).range([0,e.width]):Ze().range([0,0])}),l=g(()=>{let f=ye("g#PGXAxis");return f.selectAll("*").remove(),u.graphMode=="month"||u.graphMode=="year"?f.call(o.value):f.call(a.value),f.selectAll(".tick > text").attr("fill",(W,S)=>S>0||u.graphMode=="month"||u.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",ut),v.showGrid?f.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):f.selectAll(".tick line").attr("stroke","var(--color-bg)"),f.select(".domain").attr("stroke","var(--color-bg)"),f.append("text").attr("x",-e.margin.left).attr("y",12).attr("fill","var(--color-axis)").attr("font-size",ut).text(u.graphMode=="year"?"MW":"kW").attr("text-anchor","start"),"PGXAxis.vue"}),m=g(()=>{let f=ye("g#PGXAxis2");return f.selectAll("*").remove(),u.graphMode=="month"||u.graphMode=="year"?f.call(i.value):f.call(n.value),f.selectAll(".tick > text").attr("fill",(W,S)=>S>0||u.graphMode=="month"||u.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",ut),v.showGrid?(f.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"),f.select(".domain").attr("stroke","var(--color-bg)")):f.selectAll(".tick line").attr("stroke","var(--color-bg)"),f.select(".domain").attr("stroke","var(--color-bg)"),"PGXAxis2.vue"});return(f,W)=>(p(),y("g",{transform:"translate("+f.margin.left+","+f.margin.top+")"},[c("g",{id:"PGXAxis",class:"axis",origin:l.value,transform:"translate(0,"+(f.height/2-6)+")"},null,8,Hn),c("g",{id:"PGXAxis2",class:"axis",origin:m.value,transform:"translate(0,"+(f.height/2+10)+")"},null,8,Yn),r(v).showGrid?(p(),y("g",Qn,[c("rect",{x:"0",y:"0",width:f.width,height:f.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,qn)])):M("",!0),r(v).showGrid?(p(),y("g",Xn,[c("rect",{x:"0",y:f.height/2+10,width:f.width,height:f.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Zn)])):M("",!0)],8,Rn))}}),eo=["d"],to=["d","stroke"],ao=["x","y","text-anchor"],dt=T({__name:"PgSoc",props:{width:{},height:{},margin:{},order:{}},setup(t){const e=t,a=g(()=>{let S=Ue(u.data,Y=>Y.date);return S[0]&&S[1]?Ze().domain(S).range([0,e.width]):Ze().range([0,0])}),n=g(()=>Te().range([e.height-10,0]).domain([0,100])),o=g(()=>ma().x(q=>a.value(q.date)).y(q=>n.value(e.order==2?q.batSoc:q["soc"+m.value.connectedVehicle])??n.value(0))(u.data)??""),i=g(()=>e.order==2?"Speicher":m.value.connectedVehicle),h=g(()=>e.order==2?"Speicher":m.value.vehicleName),d=g(()=>{switch(e.order){case 0:return"var(--color-cp1)";case 1:return"var(--color-cp2)";case 2:return"var(--color-battery)";default:return"red"}}),l=g(()=>{switch(e.order){case 0:return e.width-3;case 1:return 3;case 2:return e.width/2;default:return 0}}),m=g(()=>{const S=e.order==2?0:e.order;return Object.values(w)[S]}),f=g(()=>{if(u.data.length>0){let S;switch(e.order){case 0:return S=u.data.length-1,n.value(u.data[S]["soc"+i.value]+2);case 1:return S=0,n.value(u.data[S]["soc"+i.value]+2);case 2:return S=Math.round(u.data.length/2),n.value(u.data[S].batSoc+2);default:return 0}}else return 0}),W=g(()=>{switch(e.order){case 0:return"end";case 1:return"start";case 2:return"middle";default:return"middle"}});return(S,Y)=>(p(),y(Ie,null,[c("path",{class:"soc-baseline",d:o.value,stroke:"var(--color-bg)","stroke-width":"1",fill:"none"},null,8,eo),c("path",{class:"soc-dashes",d:o.value,stroke:d.value,"stroke-width":"1",style:{strokeDasharray:"3,3"},fill:"none"},null,8,to),c("text",{class:"cpname",x:l.value,y:f.value,style:oe({fill:d.value,fontSize:10}),"text-anchor":W.value},I(h.value),13,ao)],64))}}),no=["transform"],oo=T({__name:"PgSocAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=g(()=>Te().range([e.height-10,0]).domain([0,100])),n=g(()=>va(a.value).ticks(5).tickFormat(i=>i.toString()+"%"));function o(){let i=ye("g#PGSocAxis");i.call(n.value),i.selectAll(".tick").attr("font-size",12),i.selectAll(".tick line").attr("stroke","var(--color-bg)"),i.select(".domain").attr("stroke","var(--color-bg)")}return _t(()=>{o()}),(i,h)=>(p(),y("g",{id:"PGSocAxis",class:"axis",transform:"translate("+(i.width-20)+",0)"},null,8,no))}}),ro={class:"btn-group m-0",role:"group","aria-label":"radiobar"},so=["id","value"],io=T({__name:"RadioBarInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,o=g({get(){return a.modelValue},set(d){n("update:modelValue",d)}});function i(d){let l=a.options[d].color?a.options[d].color:"var(--color-fg)";return a.options[d].active?{color:"var(--color-bg)",background:l}:{color:l}}function h(d){let l=d.target;for(;l&&!l.value&&l.parentElement;)l=l.parentElement;l.value&&(o.value=l.value)}return(d,l)=>(p(),y("div",null,[c("div",ro,[(p(!0),y(Ie,null,Ae(d.options,(m,f)=>(p(),y("button",{id:"radio-"+m.value,key:f,class:K(["btn btn-outline-secondary btn-sm radiobutton mx-0 mb-0 px-2",m.value==o.value?"active":""]),value:m.value,style:oe(i(f)),onClick:h},[c("span",{style:oe(i(f)),class:"scaled"},[m.icon?(p(),y("i",{key:0,class:K(["fa-solid",m.icon])},null,2)):M("",!0),j(" "+I(m.text),1)],4)],14,so))),128))])]))}}),Zt=Q(io,[["__scopeId","data-v-60f5d4c2"]]),Pt=t=>(me("data-v-7fd067cd"),t=t(),ve(),t),co=Pt(()=>c("i",{class:"fa-solid fa-xl fa-chevron-circle-up"},null,-1)),lo=[co],uo=Pt(()=>c("span",{class:"fa-solid fa-xl fa-chevron-circle-left arrowButton"},null,-1)),ho=[uo],po=Pt(()=>c("span",{class:"fa-solid fa-xl fa-circle-check"},null,-1)),go=[po],mo=T({__name:"PgSelector",props:{widgetid:{},showLeftButton:{type:Boolean},showRightButton:{type:Boolean},ignoreLive:{type:Boolean}},emits:["shiftLeft","shiftRight","shiftUp","shiftDown"],setup(t){const e=t,a=de(0),n=g(()=>{switch(u.graphMode){case"live":return e.ignoreLive?"heute":`${Z.duration} min`;case"today":return"heute";case"day":return R.date.getDate()+"."+(R.date.getMonth()+1)+".";case"month":return Sa(Me.month-1,Me.year);case"year":return $e.year.toString();default:return"???"}}),o=["live","today","day","month","year"],i=["Live","Heute","Tag","Monat","Jahr"],h=g({get(){return u.graphMode},set(x){switch(x){case"day":m();break;case"today":f();break;case"live":l();break;case"month":W();break;case"year":S()}}});function d(){a.value+=1,a.value>1&&(a.value=0)}function l(){u.graphMode!="live"&&(u.graphMode="live",ee())}function m(){u.graphMode!="day"&&u.graphMode!="today"&&(u.graphMode="day",ee())}function f(){u.graphMode!="today"&&(u.graphMode="today",jn(new Date),ee())}function W(){u.graphMode!="month"&&(u.graphMode="month",ee())}function S(){u.graphMode!="year"&&(u.graphMode="year",ee())}const Y=g(()=>a.value>0?{border:"1px solid var(--color-frame)"}:""),q=g(()=>a.value==1?"justify-content-between":"justify-content-end"),U=g(()=>a.value==1?"justify-content-between":"justify-content-center");return(x,N)=>(p(),y("div",{class:"d-flex flex-column justify-content-center pgselector rounded",style:oe(Y.value)},[a.value==2?(p(),B(Zt,{key:0,id:"pgm2",modelValue:h.value,"onUpdate:modelValue":N[0]||(N[0]=z=>h.value=z),class:"m-2",options:o.map((z,O)=>({text:i[O],value:z,color:"var(--color-menu)",active:z==r(u).graphMode}))},null,8,["modelValue","options"])):M("",!0),a.value==1?(p(),y("span",{key:1,type:"button",class:K(["arrowButton d-flex align-self-center mb-3 mt-3",{disabled:!e.showLeftButton}]),onClick:N[1]||(N[1]=z=>x.$emit("shiftUp"))},lo,2)):M("",!0),c("div",{class:K(["d-flex align-items-center",U.value])},[a.value==1?(p(),y("span",{key:0,type:"button",class:K(["p-1",{disabled:!e.showLeftButton}]),onClick:N[2]||(N[2]=z=>x.$emit("shiftLeft"))},ho,2)):M("",!0),a.value<2?(p(),y("span",{key:1,type:"button",class:"btn-outline-secondary p-2 px-3 badge rounded-pill datebadge",onClick:d},I(n.value),1)):M("",!0),a.value==1?(p(),y("span",{key:2,id:"graphRightButton",type:"button",class:K(["arrowButton fa-solid fa-xl fa-chevron-circle-right p-1",{disabled:!e.showRightButton}]),onClick:N[3]||(N[3]=z=>x.$emit("shiftRight"))},null,2)):M("",!0)],2),c("div",{class:K(["d-flex align-items-center",q.value])},[a.value==1?(p(),y("span",{key:0,class:"fa-solid fa-xl fa-chevron-circle-down p-1",style:oe({color:"var(--color-bg)"})},null,4)):M("",!0),a.value==1?(p(),y("span",{key:1,id:"graphLeftButton",type:"button",class:K(["arrowButton fa-solid fa-xl fa-chevron-circle-down p-1",{disabled:!e.showLeftButton}]),onClick:N[4]||(N[4]=z=>x.$emit("shiftDown"))},null,2)):M("",!0),a.value>0?(p(),y("span",{key:2,type:"button",class:"p-1",onClick:N[5]||(N[5]=z=>a.value=0)},go)):M("",!0)],2)],4))}}),Kt=Q(mo,[["__scopeId","data-v-7fd067cd"]]),vo={class:"d-flex justify-content-end"},fo=["viewBox"],_o=["transform"],yo=2,bo="Leistung / Ladestand ",wo=T({__name:"PowerGraph",setup(t){function e(){let a=v.usageStackOrder+1;a>yo&&(a=0),v.usageStackOrder=a,An(!0)}return(a,n)=>(p(),B(ot,{"full-width":!0},{title:k(()=>[j(I(bo))]),buttons:k(()=>[c("div",vo,[_(Kt,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!1,onShiftLeft:r(xt),onShiftRight:r(Qt),onShiftUp:r(qt),onShiftDown:r(Xt)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])])]),default:k(()=>[c("figure",{id:"powergraph",class:"p-0 m-0",onClick:e},[(p(),y("svg",{viewBox:"0 0 "+r(Se)+" "+r(Pe)},[_(Un,{width:r(Se)-r(L).left-2*r(L).right,height:(r(Pe)-r(L).top-r(L).bottom)/2,margin:r(L)},null,8,["width","height","margin"]),_(Jn,{width:r(Se)-r(L).left-2*r(L).right,height:(r(Pe)-r(L).top-r(L).bottom)/2,margin:r(L),"stack-order":r(v).usageStackOrder},null,8,["width","height","margin","stack-order"]),_(Kn,{width:r(Se)-r(L).left-2*r(L).right,height:r(Pe)-r(L).top-r(L).bottom,margin:r(L),"graph-data":r(u)},null,8,["width","height","margin","graph-data"]),c("g",{transform:"translate("+r(L).left+","+r(L).top+")"},[(r(u).graphMode=="day"||r(u).graphMode=="today"||r(u).graphMode=="live")&&Object.values(r(w)).length>0?(p(),B(dt,{key:0,width:r(Se)-r(L).left-2*r(L).right,height:(r(Pe)-r(L).top-r(L).bottom)/2,margin:r(L),order:0},null,8,["width","height","margin"])):M("",!0),(r(u).graphMode=="day"||r(u).graphMode=="today"||r(u).graphMode=="live")&&Object.values(r(w)).length>1?(p(),B(dt,{key:1,width:r(Se)-r(L).left-2*r(L).right,height:(r(Pe)-r(L).top-r(L).bottom)/2,margin:r(L),order:1},null,8,["width","height","margin"])):M("",!0),["day","today","live"].includes(r(u).graphMode)&&r(F).isBatteryConfigured?(p(),B(dt,{key:2,width:r(Se)-r(L).left-2*r(L).right,height:(r(Pe)-r(L).top-r(L).bottom)/2,margin:r(L),order:2},null,8,["width","height","margin"])):M("",!0),["day","today","live"].includes(r(u).graphMode)?(p(),B(oo,{key:3,width:r(Se)-r(L).left-r(L).right,height:(r(Pe)-r(L).top-r(L).bottom)/2,margin:r(L)},null,8,["width","height","margin"])):M("",!0)],8,_o)],8,fo))])]),_:1}))}}),So=Q(wo,[["__scopeId","data-v-c850f90a"]]),ko=["id"],Mo=["x","width","height","fill"],xo=["x","width","height"],Po=["x","y","width","height"],Co=T({__name:"EmBar",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=g(()=>e.height-e.yScale(e.item.energy)-e.margin.top-e.margin.bottom),n=g(()=>e.item.energyPv>0?e.height-e.yScale(e.item.energyPv)-e.margin.top-e.margin.bottom:0),o=g(()=>e.item.energyPv>0?e.height-e.yScale(e.item.energyBat)-e.margin.top-e.margin.bottom:0);return(i,h)=>(p(),y("g",{id:"bar-"+e.item.name,transform:"scale(1,-1) translate (0,-445)"},[c("rect",{class:"bar",x:e.xScale(i.item.name),y:"0",width:e.xScale.bandwidth(),height:a.value,fill:i.item.color},null,8,Mo),c("rect",{class:"bar",x:e.xScale(i.item.name)+e.xScale.bandwidth()/6,y:"0",width:e.xScale.bandwidth()*2/3,height:n.value,fill:"var(--color-pv)","fill-opacity":"66%"},null,8,xo),c("rect",{class:"bar",x:e.xScale(i.item.name)+e.xScale.bandwidth()/6,y:n.value,width:e.xScale.bandwidth()*2/3,height:o.value,fill:"var(--color-battery)","fill-opacity":"66%"},null,8,Po)],8,ko))}}),$o={id:"emBargraph"},Io=c("animateTransform",{"attribute-name":"transform",type:"scale",from:"1 0",to:"1 1",begin:"0s",dur:"2s"},null,-1),Oo=T({__name:"EMBarGraph",props:{plotdata:{},xScale:{},yScale:{},margin:{},height:{}},setup(t){const e=t;function a(o){if(o.name=="PV"){const i=u.graphMode=="live"||u.graphMode=="day"?E:P.items,d=(u.graphMode=="live"||u.graphMode=="day"?$:P.items).evuOut.energy,l=i.pv.energy;return Math.round((l-d)/l*100)}else if(o.name=="Netz"){const i=u.graphMode=="live"||u.graphMode=="day"?E:P.items,h=u.graphMode=="live"||u.graphMode=="day"?$:P.items,d=h.evuOut.energy,l=i.evuIn.energy,m=i.pv.energy,f=i.batOut.energy,W=h.batIn.energy;return Math.round((m+f-d-W)/(m+f+l-d-W)*100)}else return o.pvPercentage}function n(o){return o.name=="PV"?"Eigen":"Aut"}return(o,i)=>(p(),y("g",$o,[(p(!0),y(Ie,null,Ae(e.plotdata,(h,d)=>(p(),y("g",{key:d},[_(Co,{item:h,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":n(h),autarchy:a(h)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128)),Io]))}}),Bo=["origin"],To=T({__name:"EMYAxis",props:{yScale:{type:[Function,Object]},width:{},fontsize:{}},setup(t){const e=t,a=g(()=>yt(e.yScale).tickFormat(o=>o>0?(o/1e3).toString():"").ticks(6).tickSizeInner(-e.width)),n=g(()=>{const o=ye("g#emYAxis");return o.attr("class","axis").call(a.value),o.append("text").attr("y",6).attr("dy","0.71em").attr("text-anchor","end").text("energy"),o.selectAll(".tick").attr("font-size",e.fontsize),v.showGrid?o.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):o.selectAll(".tick line").attr("stroke","var(--color-bg)"),o.select(".domain").attr("stroke","var(--color-bg)"),"emYAxis.vue"});return(o,i)=>(p(),y("g",{id:"emYAxis",class:"axis",origin:n.value},null,8,Bo))}}),Lo=["id"],Vo=["x","y","font-size"],Ao=["x","y","font-size","fill"],Do=["x","y","font-size","fill"],Go=T({__name:"EmLabel",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=g(()=>e.autarchy?e.yScale(e.item.energy)-25:e.yScale(e.item.energy)-10),n=g(()=>{let l=16,m=e.barcount;return m<=5?l=16:m==6?l=14:m>6&&m<=8?l=13:m==9?l=11:m==10?l=10:l=9,l}),o=g(()=>{let l=12,m=e.barcount;return m<=5?l=12:m==6?l=11:m>6&&m<=8||m==9?l=8:m==10?l=7:l=6,l});function i(l,m){return m.length>o.value?m.substring(0,o.value)+".":m}function h(){return e.autarchy?e.autText+": "+e.autarchy.toLocaleString(void 0)+" %":""}function d(){return"var(--color-pv)"}return(l,m)=>(p(),y("g",{id:"barlabel-"+e.item.name},[c("text",{x:e.xScale(l.item.name)+e.xScale.bandwidth()/2,y:a.value,"font-size":n.value,"text-anchor":"middle",fill:"var(--color-menu)"},I(r(jt)(l.item.energy,r(v).decimalPlaces,!1)),9,Vo),c("text",{x:e.xScale(l.item.name)+e.xScale.bandwidth()/2,y:e.yScale(l.item.energy)-10,"font-size":n.value-2,"text-anchor":"middle",fill:d()},I(h()),9,Ao),c("text",{x:e.xScale(l.item.name)+e.xScale.bandwidth()/2,y:e.height-e.margin.bottom-5,"font-size":n.value,"text-anchor":"middle",fill:l.item.color,class:K(l.item.icon.length<=2?"fas":"")},I(i(l.item.name,l.item.icon)),11,Do)],8,Lo))}}),Eo={id:"emBarLabels"},Wo=T({__name:"EMLabels",props:{plotdata:{},xScale:{},yScale:{},height:{},margin:{}},setup(t){const e=t;function a(o){if(o.name=="PV"){const i=u.graphMode=="live"||u.graphMode=="day"?E:P.items,d=(u.graphMode=="live"||u.graphMode=="day"?$:P.items).evuOut.energy,l=i.pv.energy;return Math.round((l-d)/l*100)}else if(o.name=="Netz"){const i=u.graphMode=="live"||u.graphMode=="day"?E:P.items,h=u.graphMode=="live"||u.graphMode=="day"?$:P.items,d=h.evuOut.energy,l=i.evuIn.energy,m=i.pv.energy,f=i.batOut.energy,W=h.batIn.energy;return m+f-d-W>0?Math.round((m+f-d-W)/(m+f+l-d-W)*100):0}else return o.pvPercentage}function n(o){return o.name=="PV"?"Eigen":"Aut"}return(o,i)=>(p(),y("g",Eo,[(p(!0),y(Ie,null,Ae(e.plotdata,(h,d)=>(p(),y("g",{key:d},[_(Go,{item:h,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":n(h),autarchy:a(h)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128))]))}}),zo={id:"energymeter",class:"p-0 m-0"},jo={viewBox:"0 0 500 500"},No=["transform"],Uo=["x"],Fo={key:0},At=500,ht=500,Dt=12,Jo="Energie",Ro=T({__name:"EnergyMeter",setup(t){const e={top:25,bottom:30,left:25,right:0},a=g(()=>{let h=Object.values(E),d=i.value,l=P.values(),m=[];switch(v.debug&&(console.debug("----------------------- source summary -----------------"),console.debug(E),console.debug("----------------------- usage details ------------------"),console.debug(i.value),console.debug("----------------------- historic summary ---------------"),console.debug(P),console.debug("--------------------------------------------------------")),tt.value==!0&&(tt.value=!1),u.graphMode){default:case"live":case"today":m=h.concat(d).filter(f=>f.energy>0);break;case"day":case"month":case"year":l.length==0?ze.value=!0:(ze.value=!1,m=l.filter(f=>f.energy>0))}return m}),n=g(()=>gt().range([0,At-e.left-e.right]).domain(a.value.map(h=>h.name)).padding(.4)),o=g(()=>Te().range([ht-e.bottom-e.top,15]).domain([0,fa(a.value,h=>h.energy)])),i=g(()=>{const h=Object.values(w).length,d=Object.values(V).filter(l=>l.configured).length;return[$.evuOut,$.devices,$.charging].concat(h>1?Object.values(w).map(l=>l.toPowerItem()):[]).concat(d>1?Object.values(V).filter(l=>l.configured&&l.showInGraph):[]).concat([$.batIn,$.house])});return(h,d)=>(p(),B(ot,{"full-width":!0},{title:k(()=>[j(I(Jo))]),buttons:k(()=>[_(Kt,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!0,onShiftLeft:r(xt),onShiftRight:r(Qt),onShiftUp:r(qt),onShiftDown:r(Xt)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])]),default:k(()=>[c("figure",zo,[(p(),y("svg",jo,[c("g",{transform:"translate("+e.left+","+e.top+")"},[_(Oo,{plotdata:a.value,"x-scale":n.value,"y-scale":o.value,height:ht,margin:e},null,8,["plotdata","x-scale","y-scale"]),_(To,{"y-scale":o.value,width:At,fontsize:Dt,config:r(v)},null,8,["y-scale","config"]),c("text",{x:-e.left,y:"-15",fill:"var(--color-axis)","font-size":Dt},I(r(u).graphMode=="year"?"MWh":"kWh"),9,Uo),_(Wo,{plotdata:a.value,"x-scale":n.value,"y-scale":o.value,height:ht,margin:e,config:r(v)},null,8,["plotdata","x-scale","y-scale","config"])],8,No)]))]),r(ze)?(p(),y("p",Fo,"No data")):M("",!0)]),_:1}))}}),ea=t=>(me("data-v-dff8d7c2"),t=t(),ve(),t),Ho=["id"],Yo={class:"modal-dialog modal-lg modal-fullscreen-lg-down"},Qo={class:"modal-content"},qo={class:"modal-header"},Xo={class:"modal-title scaled"},Zo=ea(()=>c("button",{type:"button",class:"btn-close buttonTextSize d-flex justify-content-center pt-3 pb-0","data-bs-dismiss":"modal"},[c("i",{class:"fa-solid fa-lg fa-circle-check m-0 p-0"})],-1)),Ko={class:"modal-body"},er=ea(()=>c("div",{class:"modal-footer"},null,-1)),tr=T({__name:"ModalComponent",props:{modalId:{}},setup(t){const e=t;return(a,n)=>(p(),y("div",{id:e.modalId,class:"modal fade"},[c("div",Yo,[c("div",Qo,[c("div",qo,[c("h3",Xo,[pe(a.$slots,"title",{},void 0,!0)]),Zo]),c("div",Ko,[pe(a.$slots,"default",{},void 0,!0)]),er])])],8,Ho))}}),pt=Q(tr,[["__scopeId","data-v-dff8d7c2"]]),ar={class:"digit scaled",type:"button"},nr=T({__name:"PadButton",props:{modelValue:{},color:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=de(!1);function o(){n.value=!0,h("update:modelValue",a.modelValue),setTimeout(()=>{n.value=!1},300)}const i=g(()=>n.value?{"background-color":"white",color:"black"}:{"background-color":a.color??"var(--color-axis)"}),h=e;return(d,l)=>(p(),y("div",{class:"padbutton",style:oe(i.value),onClick:o},[c("span",ar,[pe(d.$slots,"default",{},void 0,!0)])],4))}}),He=Q(nr,[["__scopeId","data-v-cc256a6f"]]),ta=t=>(me("data-v-63c8fa5c"),t=t(),ve(),t),or={class:"numberpad"},rr={class:"codedisplay scaled"},sr={class:"numberentry"},ir=ta(()=>c("span",{class:"fas fa-delete-left"},null,-1)),cr=ta(()=>c("span",{class:"fas fa-circle-check"},null,-1)),lr=T({__name:"NumberPad",props:{modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const n=de(t.modelValue),o=e,i=g(()=>n.value.length==0?"Bitte geben Sie die PIN ein":"*".repeat(n.value.length));function h(d){d==-1?n.value=n.value.slice(0,-1):d==-2?(o("update:modelValue",n.value),n.value=""):n.value=n.value+d.toString()}return(d,l)=>(p(),y("div",or,[c("p",rr,I(i.value),1),c("div",sr,[(p(),y(Ie,null,Ae(9,m=>_(He,{key:m,"model-value":m,"onUpdate:modelValue":h},{default:k(()=>[j(I(m),1)]),_:2},1032,["model-value"])),64)),_(He,{"model-value":0,"onUpdate:modelValue":h},{default:k(()=>[j("0")]),_:1}),_(He,{"model-value":-1,color:"var(--color-devices)","onUpdate:modelValue":h},{default:k(()=>[ir]),_:1}),_(He,{"model-value":-2,color:"var(--color-devices)","data-bs-dismiss":"modal","onUpdate:modelValue":h},{default:k(()=>[cr]),_:1})])]))}}),ur=Q(lr,[["__scopeId","data-v-63c8fa5c"]]),Re=t=>(me("data-v-6a182015"),t=t(),ve(),t),dr={class:"statustable"},hr=Re(()=>c("span",{class:"header"},"IP-Adresse:",-1)),pr=Re(()=>c("span",{class:"header"},"Systemzeit:",-1)),gr=Re(()=>c("span",{class:"header"},"Version:",-1)),mr=Re(()=>c("span",{class:"header"},"Version (Details):",-1)),vr=Re(()=>c("span",{class:"header"},"Entwicklungszweig:",-1)),fr=T({__name:"StatusPage",setup(t){return(e,a)=>(p(),y("div",dr,[hr,c("span",null,I(r(F).ipAddress),1),pr,c("span",null,I(new Date(r(F).systemTime*1e3).toLocaleString(void 0)),1),gr,c("span",null,I(r(F).version),1),mr,c("span",null,I(r(F).versionDetails),1),vr,c("span",null,I(r(F).devBranch),1)]))}}),_r=Q(fr,[["__scopeId","data-v-6a182015"]]),yr={class:"configitem subgrid"},br={class:"d-flex align-items-baseline m-0 p-0 grid-col-4 scaled"},wr={class:"ms-1 mb-2 p-0 pt-2 d-flex justify-content-stretch align-items-center grid-col-4"},Sr={class:"justify-content-stretch d-flex"},kr=T({__name:"ConfigItem",props:{title:{},infotext:{},icon:{},iconcolor:{},fullwidth:{type:Boolean}},setup(t){const e=t;return(a,n)=>(p(),y("div",yr,[c("span",br,[e.icon?(p(),y("i",{key:0,class:K(["fa-solid fa-sm m-0 p-0 me-2 item-icon",e.icon]),style:oe({color:e.iconcolor?e.iconcolor:"var(--color-charging)"})},null,6)):M("",!0),j(" "+I(a.title),1)]),c("div",wr,[c("span",Sr,[pe(a.$slots,"default",{},void 0,!0)])])]))}}),te=Q(kr,[["__scopeId","data-v-42847ded"]]),Mr=["id","value"],xr=T({__name:"RadioInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,o=g({get(){return a.modelValue},set(d){n("update:modelValue",d)}});function i(d){return a.options[d][2]?{color:a.options[d][2]}:{color:"var(--color-fg)"}}function h(d){let l=d.target;for(;l&&!l.value&&l.parentElement;)l=l.parentElement;l.value&&(o.value=l.value)}return(d,l)=>(p(),y("div",null,[(p(!0),y(Ie,null,Ae(d.options,(m,f)=>(p(),y("button",{id:"radio-"+m[1],key:f,class:K(["btn btn-outline-secondary radiobutton me-2 mb-0 px-2",m[1]==o.value?"active":""]),value:m[1],style:oe(i(f)),onClick:h},[c("span",{style:oe(i(f)),class:"scaled"},[m[3]?(p(),y("i",{key:0,class:K(["fa-solid",m[3]])},null,2)):M("",!0),j(" "+I(m[0]),1)],4)],14,Mr))),128))]))}}),qe=Q(xr,[["__scopeId","data-v-005a14a9"]]),Pr={class:"form-check form-switch"},Le=T({__name:"SwitchInput",props:{modelValue:{type:Boolean},onColor:{},offColor:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,o=g({get(){return a.modelValue},set(h){n("update:modelValue",h)}}),i=g(()=>o.value?{"background-color":"green","font-size":"20px"}:{"background-color":"white","font-size":"20px"});return(h,d)=>(p(),y("div",Pr,[We(c("input",{"onUpdate:modelValue":d[0]||(d[0]=l=>o.value=l),class:"form-check-input",type:"checkbox",role:"switch",style:oe(i.value)},null,4),[[_a,o.value]])]))}}),aa=t=>(me("data-v-17a828b1"),t=t(),ve(),t),Cr={class:"d-flex flex-column"},$r={class:"d-flex flex-fill justify-content-between align-items-center"},Ir=aa(()=>c("i",{class:"fa fa-xl fa-minus-square me-2"},null,-1)),Or=[Ir],Br=["id","min","max","step"],Tr=aa(()=>c("i",{class:"fa fa-xl fa-plus-square ms-2"},null,-1)),Lr=[Tr],Vr={class:"d-flex justify-content-between align-items-center"},Ar={class:"minlabel ps-4"},Dr={class:"valuelabel"},Gr={class:"maxlabel pe-4"},Er=T({__name:"RangeInput",props:{id:{},min:{},max:{},step:{},unit:{},decimals:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=a.decimals??0,o=e,i=g({get(){return Math.round(a.modelValue*Math.pow(10,n))/Math.pow(10,n)},set(l){o("update:modelValue",l)}});function h(){i.value>a.min&&(i.value=Math.round((i.value-a.step)*Math.pow(10,n))/Math.pow(10,n))}function d(){i.value<a.max&&(i.value=Math.round((i.value+a.step)*Math.pow(10,n))/Math.pow(10,n))}return(l,m)=>(p(),y("span",Cr,[c("span",$r,[c("span",{type:"button",class:"minusButton",onClick:h},Or),We(c("input",{id:l.id,"onUpdate:modelValue":m[0]||(m[0]=f=>i.value=f),type:"range",class:"form-range flex-fill",min:l.min,max:l.max,step:l.step},null,8,Br),[[ya,i.value,void 0,{number:!0}]]),c("span",{type:"button",class:"plusButton",onClick:d},Lr)]),c("span",Vr,[c("span",Ar,I(l.min),1),c("span",Dr,I(i.value)+" "+I(l.unit),1),c("span",Gr,I(l.max),1)])]))}}),Oe=Q(Er,[["__scopeId","data-v-17a828b1"]]),Wr=t=>(me("data-v-d0d53120"),t=t(),ve(),t),zr={class:"mt-2 grid12"},jr=Wr(()=>c("p",{class:"heading ms-1"},"Sofortladen:",-1)),Nr={key:0},Ur=T({__name:"CPConfigInstant",props:{chargepoint:{}},setup(t){const a=de(t.chargepoint),n=[{name:"keine",id:"none"},{name:"EV-SoC",id:"soc"},{name:"Energiemenge",id:"amount"}],o=g({get(){return a.value.instantMaxEnergy/1e3},set(i){a.value.instantMaxEnergy=i*1e3}});return(i,h)=>(p(),y("div",zr,[jr,_(te,{title:"Stromstärke",icon:"fa-bolt",fullwidth:!0},{default:k(()=>[_(Oe,{id:"targetCurrent",modelValue:a.value.instantTargetCurrent,"onUpdate:modelValue":h[0]||(h[0]=d=>a.value.instantTargetCurrent=d),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1}),a.value.instantChargeLimitMode!="none"?(p(),y("hr",Nr)):M("",!0),_(te,{title:"Begrenzung",icon:"fa-hand",fullwidth:!0},{default:k(()=>[_(qe,{modelValue:a.value.instantChargeLimitMode,"onUpdate:modelValue":h[1]||(h[1]=d=>a.value.instantChargeLimitMode=d),options:n.map(d=>[d.name,d.id])},null,8,["modelValue","options"])]),_:1}),a.value.instantChargeLimitMode=="soc"?(p(),B(te,{key:1,title:"Maximaler SoC",icon:"fa-sliders",fullwidth:!0},{default:k(()=>[_(Oe,{id:"maxSoc",modelValue:a.value.instantTargetSoc,"onUpdate:modelValue":h[2]||(h[2]=d=>a.value.instantTargetSoc=d),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),a.value.instantChargeLimitMode=="amount"?(p(),B(te,{key:2,title:"Zu ladende Energie",icon:"fa-sliders",fullwidth:!0},{default:k(()=>[_(Oe,{id:"maxEnergy",modelValue:o.value,"onUpdate:modelValue":h[3]||(h[3]=d=>o.value=d),min:0,max:100,step:1,unit:"kWh"},null,8,["modelValue"])]),_:1})):M("",!0)]))}}),Fr=Q(Ur,[["__scopeId","data-v-d0d53120"]]),Jr=t=>(me("data-v-826c4d0e"),t=t(),ve(),t),Rr={class:"pt-2 grid12"},Hr=Jr(()=>c("p",{class:"heading ms-1"},"PV-Laden:",-1)),Yr=T({__name:"CPConfigPv",props:{chargepoint:{}},setup(t){const a=de(t.chargepoint),n=g({get(){return a.value.pvMinCurrent>5},set(h){h?a.value.pvMinCurrent=6:a.value.pvMinCurrent=0}}),o=g({get(){return a.value.pvMinSoc>0},set(h){h?a.value.pvMinSoc=50:a.value.pvMinSoc=0}}),i=g({get(){return a.value.pvMaxSoc<=100},set(h){h?a.value.pvMaxSoc=100:a.value.pvMaxSoc=101}});return(h,d)=>(p(),y("div",Rr,[Hr,_(te,{title:"Ladestand begrenzen",icon:"fa-battery-three-quarters",fullwidth:!0},{default:k(()=>[_(Le,{id:"limitSoc","v-model":i.value,"model-value":i.value},null,8,["v-model","model-value"])]),_:1}),i.value?(p(),B(te,{key:0,title:"...auf maximal...",icon:"fa-battery-three-quarters",fullwidth:!0},{default:k(()=>[_(Oe,{id:"maxSoc",modelValue:a.value.pvMaxSoc,"onUpdate:modelValue":d[0]||(d[0]=l=>a.value.pvMaxSoc=l),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),_(te,{title:"Einspeisegrenze beachten",icon:"fa-hand",fullwidth:!0},{default:k(()=>[_(Le,{modelValue:a.value.pvFeedInLimit,"onUpdate:modelValue":d[1]||(d[1]=l=>a.value.pvFeedInLimit=l)},null,8,["modelValue"])]),_:1}),_(te,{title:"Mindest-Ladestand",icon:"fa-battery-half",infotext:r(lt).minsoc,fullwidth:!0},{default:k(()=>[_(Le,{modelValue:o.value,"onUpdate:modelValue":d[2]||(d[2]=l=>o.value=l)},null,8,["modelValue"])]),_:1},8,["infotext"]),o.value?(p(),B(te,{key:1,title:"...bis SoC",fullwidth:!0},{info:k(()=>[j(I(r(lt).minsoc),1)]),default:k(()=>[_(Oe,{id:"minSoc",modelValue:a.value.pvMinSoc,"onUpdate:modelValue":d[3]||(d[3]=l=>a.value.pvMinSoc=l),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),o.value?(p(),B(te,{key:2,title:"...mit Ladestrom",fullwidth:!0},{default:k(()=>[_(Oe,{id:"minSocCurrent",modelValue:a.value.pvMinSocCurrent,"onUpdate:modelValue":d[4]||(d[4]=l=>a.value.pvMinSocCurrent=l),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):M("",!0),_(te,{title:"Minimaler Ladestrom",icon:"fa-bolt",infotext:r(lt).minpv,fullwidth:!0},{default:k(()=>[_(Le,{modelValue:n.value,"onUpdate:modelValue":d[5]||(d[5]=l=>n.value=l)},null,8,["modelValue"])]),_:1},8,["infotext"]),n.value?(p(),B(te,{key:3,title:"...bei Ladestrom (minimal)",fullwidth:!0},{default:k(()=>[_(Oe,{id:"minCurrent",modelValue:a.value.pvMinCurrent,"onUpdate:modelValue":d[6]||(d[6]=l=>a.value.pvMinCurrent=l),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):M("",!0)]))}}),Qr=Q(Yr,[["__scopeId","data-v-826c4d0e"]]),xe=t=>(me("data-v-2b0c724c"),t=t(),ve(),t),qr={class:"m-0 mt-1 p-0 grid-col-12 tabarea"},Xr={class:"nav nav-tabs nav-justified mx-1 mt-1",role:"tablist"},Zr=["data-bs-target"],Kr=xe(()=>c("i",{class:"fa-solid fa-charging-station"},null,-1)),es=[Kr],ts=["data-bs-target"],as=xe(()=>c("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),ns=["data-bs-target"],os=xe(()=>c("i",{class:"fa-solid fa-solar-panel me-1"},null,-1)),rs=["data-bs-target"],ss=xe(()=>c("i",{class:"fa-solid fa-bullseye me-1"},null,-1)),is=["data-bs-target"],cs=xe(()=>c("i",{class:"fa-solid fa-clock"},null,-1)),ls=["data-bs-target"],us=xe(()=>c("i",{class:"fa-solid fa-rectangle-list"},null,-1)),ds=[us],hs=["data-bs-target"],ps=xe(()=>c("i",{class:"fa-solid fa-chart-line"},null,-1)),gs=[ps],ms={id:"settingsPanes",class:"tab-content mx-1 p-1 pb-3"},vs=["id"],fs={class:"settingslist"},_s=xe(()=>c("hr",{class:"grid-col-12"},null,-1)),ys=xe(()=>c("hr",{class:"grid-col-12"},null,-1)),bs=["id"],ws=["id"],Ss=["id"],ks=["id"],Ms=["id"],xs=["id"],Ps=T({__name:"SettingsPage",props:{chargepoint:{}},setup(t){const e=t,a=de(e.chargepoint),n=g(()=>re[e.chargepoint.chargeTemplate]),o=g(()=>e.chargepoint.id),i=g({get:()=>e.chargepoint.etActive,set:l=>{w[e.chargepoint.id].etActive=l}}),h=g({get:()=>e.chargepoint.timedCharging,set:l=>{w[e.chargepoint.id].timedCharging=l}}),d=g({get:()=>e.chargepoint.connectedVehicle,set:l=>{w[e.chargepoint.id].connectedVehicle=l}});return(l,m)=>{const f=De("CPChargeConfig"),W=De("CPConfigScheduled"),S=De("CPConfigTimed"),Y=De("CPConfigVehicle"),q=De("PriceChart");return p(),y("div",qr,[c("nav",Xr,[c("a",{class:"nav-link active","data-bs-toggle":"tab","data-bs-target":"#chargeSettings"+o.value},es,8,Zr),c("a",{class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#instantSettings"+o.value},[as,j(" Sofort ")],8,ts),c("a",{class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pvSettings"+o.value},[os,j(" PV ")],8,ns),c("a",{class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#scheduledSettings"+o.value},[ss,j(" Zielladen ")],8,rs),c("a",{class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#timeSettings"+o.value},[cs,j(" Zeitladen ")],8,is),c("a",{class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#carSettings"+o.value},ds,8,ls),r(se).active&&a.value.etActive?(p(),y("a",{key:0,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#priceChart"+o.value},gs,8,hs)):M("",!0)]),c("div",ms,[c("div",{id:"chargeSettings"+o.value,class:"tab-pane active",role:"tabpanel","aria-labelledby":"instant-tab"},[_(f,{chargepoint:l.chargepoint},null,8,["chargepoint"]),c("div",fs,[r(F).isBatteryConfigured?(p(),B(te,{key:0,title:"PV-Priorität (global)",icon:"fa-car-battery",iconcolor:"var(--color-battery)",infotext:"Priority during PV production",fullwidth:!0},{default:k(()=>[_(qe,{modelValue:r(F).pvBatteryPriority,"onUpdate:modelValue":m[0]||(m[0]=U=>r(F).pvBatteryPriority=U),options:r(Da)},null,8,["modelValue","options"])]),_:1})):M("",!0),_s,_(te,{title:"Fahrzeug wechseln",icon:"fa-car",fullwidth:!0},{default:k(()=>[_(qe,{modelValue:d.value,"onUpdate:modelValue":m[1]||(m[1]=U=>d.value=U),modelModifiers:{number:!0},options:Object.values(r(A)).map(U=>[U.name,U.id])},null,8,["modelValue","options"])]),_:1}),ys,_(te,{title:"Strompreisbasiert laden",icon:"fa-coins",iconcolor:"var(--color-battery)",infotext:"Settings"},{default:k(()=>[_(Le,{modelValue:i.value,"onUpdate:modelValue":m[2]||(m[2]=U=>i.value=U)},null,8,["modelValue"])]),_:1}),_(te,{title:"Zeitplan aktivieren",icon:"fa-clock",iconcolor:"var(--color-battery)"},{default:k(()=>[_(Le,{modelValue:h.value,"onUpdate:modelValue":m[3]||(m[3]=U=>h.value=U)},null,8,["modelValue"])]),_:1}),_(te,{title:"Ladeprofil",icon:"fa-sliders",iconcolor:"var(--color-pv)"},{default:k(()=>[r(A)[d.value]?(p(),B(qe,{key:0,modelValue:r(A)[d.value].chargeTemplateId,"onUpdate:modelValue":m[4]||(m[4]=U=>r(A)[d.value].chargeTemplateId=U),modelModifiers:{number:!0},options:Object.keys(r(re)).map(U=>[r(re)[+U].name,U])},null,8,["modelValue","options"])):M("",!0)]),_:1})])],8,vs),c("div",{id:"instantSettings"+o.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"instant-tab"},[_(Fr,{chargepoint:a.value,vehicles:r(A),"charge-templates":r(re)},null,8,["chargepoint","vehicles","charge-templates"])],8,bs),c("div",{id:"pvSettings"+o.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"pv-tab"},[_(Qr,{chargepoint:a.value,vehicles:r(A),"charge-templates":r(re)},null,8,["chargepoint","vehicles","charge-templates"])],8,ws),c("div",{id:"scheduledSettings"+o.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"scheduled-tab"},[n.value!=null?(p(),B(W,{key:0,"charge-template-id":a.value.chargeTemplate},null,8,["charge-template-id"])):M("",!0)],8,Ss),c("div",{id:"timeSettings"+o.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"time-tab"},[n.value!=null?(p(),B(S,{key:0,"charge-template-id":a.value.chargeTemplate},null,8,["charge-template-id"])):M("",!0)],8,ks),c("div",{id:"carSettings"+o.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"car-tab"},[r(A)[a.value.connectedVehicle]!=null?(p(),B(Y,{key:0,"vehicle-id":a.value.connectedVehicle},null,8,["vehicle-id"])):M("",!0)],8,Ms),c("div",{id:"priceChart"+o.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},[r(A)[a.value.connectedVehicle]!=null?(p(),B(q,{key:0,chargepoint:a.value},null,8,["chargepoint"])):M("",!0)],8,xs)])])}}}),Cs=Q(Ps,[["__scopeId","data-v-2b0c724c"]]);function $s(t,e){t=="openWB/graph/boolDisplayLiveGraph"?F.displayLiveGraph=+e==1:t.match(/^openwb\/graph\/alllivevaluesJson[1-9][0-9]*$/i)?Is(t,e):t=="openWB/graph/lastlivevaluesJson"?Os(t,e):t=="openWB/graph/config/duration"&&(Z.duration=JSON.parse(e))}function Is(t,e){if(!Z.initialized){let a=[];const n=e.toString().split(`
-`);n.length>1?a=n.map(h=>JSON.parse(h)):a=[];const o=t.match(/(\d+)$/g),i=o?o[0]:"";i!=""&&typeof Z.rawDataPacks[+i-1]>"u"&&(Z.rawDataPacks[+i-1]=a,Z.initCounter++)}if(Z.initCounter==16){const a=[];Z.unsubscribeRefresh(),Z.initialized=!0,Z.rawDataPacks.map(n=>{n.map(o=>{const i=na(o);a.push(i)})}),Je(a),Z.subscribeUpdates()}}function Os(t,e){const a=JSON.parse(e),n=na(a);Z.graphRefreshCounter++,Je(u.data.concat(n)),Z.graphRefreshCounter>60&&Z.activate()}function na(t){const e=Object.values(w).length>0?Object.values(w)[0].connectedVehicle:0,a=Object.values(w).length>1?Object.values(w)[1].connectedVehicle:1,n="ev"+e+"-soc",o="ev"+a+"-soc",i={};i.date=Bs(t.time).valueOf(),+t.grid>0?(i.evuIn=+t.grid,i.evuOut=0):+t.grid<=0?(i.evuIn=0,i.evuOut=-t.grid):(i.evuIn=0,i.evuOut=0),+t["pv-all"]>=0?(i.pv=+t["pv-all"],i.inverter=0):(i.pv=0,i.inverter=-t["pv-all"]),i.house=+t["house-power"],+t["bat-all-power"]>0?(i.batOut=0,i.batIn=+t["bat-all-power"]):+t["bat-all-power"]<0?(i.batOut=-t["bat-all-power"],i.batIn=0):(i.batOut=0,i.batIn=0),t["bat-all-soc"]?i.batSoc=+t["bat-all-soc"]:i.batSoc=0,t[n]&&(i["soc"+e]=+t[n]),t[o]&&(i["soc"+a]=+t[o]),i.charging=+t["charging-all"];for(let h=0;h<10;h++){const d="cp"+h;i[d]=+(t[d+"-power"]??0)}return i.selfUsage=i.pv-i.evuOut,i.selfUsage<0&&(i.selfUsage=0),i.devices=0,i}function Bs(t){const e=new Date(Date.now()),a=864e5;let n=new Date;const o=Ke("%H:%M:%S")(t);return o&&(n=o,n.setDate(e.getDate()),n.setMonth(e.getMonth()),n.setFullYear(e.getFullYear()),n.getHours()>e.getHours()&&(n=new Date(n.getTime()-a))),n}const Ts=["evuIn","pv","batIn","evuOut"];let nt=[];function Ls(t,e){const a=JSON.parse(e).entries,n=JSON.parse(e).totals;St(),nt=[],kt.map(i=>{P.setEnergyPv(i,0),P.setEnergyBat(i,0)});const o=Vs(a);Je(o),Mt(n,nt),v.debug&&(console.debug("---------------------------------------- Graph Data ---------------------------"),console.debug("--- Incoming graph data:"),console.debug(a),console.debug("data to be displayed:"),console.debug(o),console.debug("-------------------------------------------------------------------------------")),u.graphMode=="today"&&setTimeout(()=>R.activate(),3e5)}function Vs(t){const e=[];let a={};return t.map(n=>{a=As(n);const o=a;e.push(o)}),e}function As(t){const e={};if(u.graphMode=="day"||u.graphMode=="today")if(typeof t.date=="number")e.date=new Date(+t.date*1e3).getTime();else{const n=Ke("%H:%M")(t.date);n&&(n.setMonth(R.date.getMonth()),n.setDate(R.date.getDate()),n.setFullYear(R.date.getFullYear()),e.date=n.getTime())}else if(typeof t.date=="string"){const n=Ke("%Y%m%d")(t.date);n&&(e.date=n.getDate())}return e.evuOut=0,e.evuIn=0,Object.entries(t.counter).forEach(([n,o])=>{o.grid&&(e.evuOut+=o.power_exported,e.evuIn+=o.power_imported,nt.includes(n)||nt.push(n))}),e.evuOut==0&&e.evuIn==0&&Object.entries(t.counter).forEach(n=>{e.evuOut+=n[1].power_exported,e.evuIn+=n[1].power_imported}),e.pv=t.pv.all.power_exported,Object.entries(t.bat).length>0?(e.batIn=t.bat.all.power_imported,e.batOut=t.bat.all.power_exported,e.batSoc=t.bat.all.soc??0):(e.batIn=0,e.batOut=0,e.batSoc=0),Object.entries(t.cp).forEach(([n,o])=>{n!="all"?(e[n]=o.power_imported,P.keys().includes(n)||P.addItem(n)):e.charging=o.power_imported}),Object.entries(t.ev).forEach(([n,o])=>{n!="all"&&(e["soc"+n.substring(2)]=o.soc)}),e.devices=0,Object.entries(t.sh).forEach(([n,o])=>{n!="all"&&(e[n]=o.power_imported??0,e.devices+=o.power_imported??0,P.keys().includes(n)||P.addItem(n))}),e.selfUsage=e.pv-e.evuOut,t.hc&&t.hc.all?e.house=t.hc.all.power_imported:e.house=e.evuIn+e.batOut+e.pv-e.evuOut-e.charging-e.devices-e.batOut,e.evuIn+e.batOut+e.pv>0?P.keys().filter(n=>!Ts.includes(n)).map(n=>{Gn(n,e)}):Object.keys(e).map(n=>{e[n+"Pv"]=0,e[n+"Bat"]=0}),e}let Ye={};const Ct=["charging","house","batIn","devices"],Ds=["evuIn","pv","batIn","evuOut"];let je=[];function Gs(t,e){const a=JSON.parse(e).entries,n=JSON.parse(e).totals;St(),je=[],Ct.map(o=>{P.items[o].energyPv=0,P.items[o].energyBat=0}),a.length>0&&Je(oa(a)),Mt(n,[])}function Es(t,e){const a=JSON.parse(e).entries,n=JSON.parse(e).totals;St(),je=[],Ct.forEach(o=>{P.items[o].energyPv=0,P.items[o].energyBat=0}),Je(oa(a)),Mt(n,[])}function oa(t){const e=[];let a={};return Ye={},t.map(n=>{a=Ws(n),e.push(a),Object.keys(a).forEach(o=>{o!="date"&&(a[o]<0&&(console.warn(`Negative energy value for ${o} in row ${a.date}. Ignoring the value.`),a[o]=0),Ye[o]?Ye[o]+=a[o]:Ye[o]=a[o])})}),e}function Ws(t){const e={},a=Ke("%Y%m%d")(t.date);a&&(e.date=u.graphMode=="month"?a.getDate():a.getMonth()+1),e.evuOut=0,e.evuIn=0;let n=0,o=0;return Object.entries(t.counter).forEach(([h,d])=>{n+=d.energy_exported,o+=d.energy_imported,d.grid&&(e.evuOut+=d.energy_exported,e.evuIn+=d.energy_imported,je.includes(h)||je.push(h))}),je.length==0&&(e.evuOut=n,e.evuIn=o),e.pv=t.pv.all.energy_exported,Object.entries(t.bat).length>0?(t.bat.all.energy_imported>=0?e.batIn=t.bat.all.energy_imported:(console.warn("ignoring negative value for batIn on day "+e.date),e.batIn=0),t.bat.all.energy_exported>=0?e.batOut=t.bat.all.energy_exported:(console.warn("ignoring negative value for batOut on day "+e.date),e.batOut=0)):(e.batIn=0,e.batOut=0),Object.entries(t.cp).forEach(([h,d])=>{h!="all"?(P.keys().includes(h)||P.addItem(h),e[h]=d.energy_imported):e.charging=d.energy_imported}),Object.entries(t.ev).forEach(([h,d])=>{h!="all"&&(e["soc-"+h]=d.soc)}),e.devices=Object.entries(t.sh).reduce((h,d)=>(P.keys().includes(d[0])||P.addItem(d[0]),d[1].energy_imported>=0?h+=d[1].energy_imported:console.warn(`Negative energy value for device ${d[0]} in row ${e.date}. Ignoring this value`),h),0),e.house=e.pv+e.evuIn+e.batOut-e.evuOut-e.batIn-e.charging,e.selfUsage=e.pv-e.evuOut,e.evuIn+e.batOut+e.pv>0?P.keys().filter(h=>!Ds.includes(h)).map(h=>{En(h,e)}):Ct.map(h=>{e[h+"Pv"]=0,e[h+"Bat"]=0}),e}class zs{constructor(e){s(this,"id");s(this,"dailyYieldExport",0);s(this,"dailyYieldImport",0);s(this,"exported",0);s(this,"faultState",0);s(this,"faultStr","");s(this,"imported",0);s(this,"power",0);s(this,"soc",0);this.id=e}}class js{constructor(){s(this,"dailyExport",0);s(this,"dailyImport",0);s(this,"exported",0);s(this,"imported",0);s(this,"power",0);s(this,"soc",0)}}const ce=J({});J(new js);function Ns(t){t in ce?console.info("Duplicate battery message: "+t):ce[t]=new zs(t)}function Us(){Object.keys(ce).forEach(t=>{delete ce[parseInt(t)]})}function Fs(t,e){const a=Js(t);if(a&&!(a in ce)){console.warn("Invalid battery index received: "+a);return}t=="openWB/bat/config/configured"?F.isBatteryConfigured=e=="true":t=="openWB/bat/get/power"?+e>0?($.batIn.power=+e,E.batOut.power=0):($.batIn.power=0,E.batOut.power=-e):t=="openWB/bat/get/soc"?F.batterySoc=+e:t=="openWB/bat/get/daily_exported"?E.batOut.energy=+e:t=="openWB/bat/get/daily_imported"?$.batIn.energy=+e:a&&(t.match(/^openwb\/bat\/[0-9]+\/get\/daily_yield_export$/i)?ce[a].dailyYieldExport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/daily_yield_import$/i)?ce[a].dailyYieldImport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/exported$/i)?ce[a].exported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_state$/i)?ce[a].faultState=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_str$/i)?ce[a].faultStr=e:t.match(/^openwb\/bat\/[0-9]+\/get\/imported$/i)?ce[a].imported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/power$/i)?ce[a].power=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/soc$/i)&&(ce[a].soc=+e))}function Js(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Rs(t,e){if(t=="openWB/optional/et/provider")JSON.parse(e).type==null?se.active=!1:(se.active=!0,se.etProvider=JSON.parse(e).name);else if(t=="openWB/optional/et/get/prices"){const a=JSON.parse(e);se.etPriceList=new Map,Object.keys(a).map(n=>{se.etPriceList.set(new Date(+n*1e3),a[n]*1e5)})}}function Hs(t,e){const a=ra(t);if(a&&!(a in w)){console.warn("Invalid chargepoint id received: "+a);return}if(t=="openWB/chargepoint/get/power"?$.charging.power=+e:t=="openWB/chargepoint/get/daily_imported"&&($.charging.energy=+e),t=="openWB/chargepoint/get/daily_exported")F.cpDailyExported=+e;else if(a){if(t.match(/^openwb\/chargepoint\/[0-9]+\/config$/i))if(w[a]){const n=JSON.parse(e);w[a].name=n.name,w[a].icon=n.name,ae["cp"+a]?(ae["cp"+a].name=n.name,ae["cp"+a].icon=n.name):ae["cp"+a]={name:n.name,icon:n.name,color:"var(--color-charging)"}}else console.warn("invalid chargepoint index: "+a);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/state_str$/i))w[a].stateStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_str$/i))w[a].faultStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_state$/i))w[a].faultState=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/power$/i))w[a].power=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/daily_imported$/i))w[a].dailyYield=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/plug_state$/i))w[a].isPluggedIn=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/charge_state$/i))w[a].isCharging=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/manual_lock$/i))w[a].updateIsLocked(e=="true");else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/enabled$/i))w[a].isEnabled=e=="1";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/phases_in_use/i))w[a].phasesInUse=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/current/i))w[a].current=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/currents/i))w[a].currents=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/log/i)){const n=JSON.parse(e);w[a].chargedSincePlugged=n.imported_since_plugged}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/soc$/i)){const n=JSON.parse(e);w[a].soc=n.soc,w[a].waitingForSoc=!1,w[a].rangeCharged=n.range_charged,w[a].rangeUnit=n.range_unit}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/info$/i)){const n=JSON.parse(e);w[a].vehicleName=String(n.name),w[a].updateConnectedVehicle(+n.id)}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/config$/i)){const n=JSON.parse(e);switch(n.chargemode){case"instant_charging":w[a].updateChargeMode(ge.instant_charging);break;case"pv_charging":w[a].updateChargeMode(ge.pv_charging);break;case"scheduled_charging":w[a].updateChargeMode(ge.scheduled_charging);break;case"standby":w[a].updateChargeMode(ge.standby);break;case"stop":w[a].updateChargeMode(ge.stop);break}w[a].chargeTemplate=n.charge_template,w[a].averageConsumption=n.average_consumption}}}function Ys(t,e){const a=ra(t);if(a!=null){if(!(a in A)){const n=new Oa(a);A[a]=n}if(t.match(/^openwb\/vehicle\/[0-9]+\/name$/i))Object.values(w).forEach(n=>{n.connectedVehicle==a&&(n.vehicleName=JSON.parse(e))}),A[a].name=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/soc$/i))A[a].soc=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/range$/i))isNaN(+e)?A[a].range=0:A[a].range=+e;else if(t.match(/^openwb\/vehicle\/[0-9]+\/charge_template$/i))A[a].updateChargeTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/ev_template$/i))A[a].updateEvTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/soc_module\/config$/i)){const n=JSON.parse(e);Object.values(w).forEach(o=>{o.connectedVehicle==a&&(o.isSocConfigured=n.type!==null,o.isSocManual=n.type=="manual")})}}}function Qs(t,e){if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const n=+a[0],o=JSON.parse(e);re[n]=o,qs(n,o)}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/time_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),n=t.match(/[0-9]+$/i);if(a&&n){const o=+a[0].replace(/[^0-9]+/g,""),i=+n[0],h=JSON.parse(e);o in ct||(ct[o]=[]),ct[o][i]=h}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/chargemode\/scheduled_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),n=t.match(/[0-9]+$/i);if(a&&n){const o=+a[0].replace(/[^0-9]+/g,""),i=+n[0],h=JSON.parse(e);o in it||(it[o]=[]),it[o][i]=h}}else if(t.match(/^openwb\/vehicle\/template\/ev_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const n=+a[0],o=JSON.parse(e);Ba[n]=o}}}function qs(t,e){Object.values(w).forEach(a=>{a.chargeTemplate==t&&(a.updateCpPriority(e.prio),a.updateInstantChargeLimitMode(e.chargemode.instant_charging.limit.selected),a.updateInstantTargetCurrent(e.chargemode.instant_charging.current),a.updateInstantTargetSoc(e.chargemode.instant_charging.limit.soc),a.updateInstantMaxEnergy(e.chargemode.instant_charging.limit.amount),a.updatePvFeedInLimit(e.chargemode.pv_charging.feed_in_limit),a.updatePvMinCurrent(e.chargemode.pv_charging.min_current),a.updatePvMaxSoc(e.chargemode.pv_charging.max_soc),a.updatePvMinSoc(e.chargemode.pv_charging.min_soc),a.updatePvMinSocCurrent(e.chargemode.pv_charging.min_soc_current))})}function ra(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Xs(t,e){t.match(/^openWB\/LegacySmarthome\/config\//i)?Zs(t,e):t.match(/^openWB\/LegacySmarthome\/Devices\//i)&&Ks(t,e)}function Zs(t,e){const a=sa(t);a!=null&&(a in V||Ht(a),t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_configured$/i)?V[a].configured=e!="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_name$/i)?(V[a].name=e.toString(),V[a].icon=e.toString(),ae["sh"+a].name=e.toString(),ae["sh"+a].icon=e.toString()):t.match(/^openWB\/LegacySmarthome\/config\/set\/Devices\/[0-9]+\/mode$/i)?V[a].isAutomatic=e=="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_canSwitch$/i)?V[a].canSwitch=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_homeConsumtion$/i)?V[a].countAsHouse=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_temperatur_configured$/i)&&(V[a].tempConfigured=+e))}function Ks(t,e){const a=sa(t);if(a==null){console.warn("Smarthome: Missing index in "+t);return}if(a in V||Ht(a),t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Watt$/i))V[a].power=+e,ei("power");else if(!t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Wh$/i)){if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/RunningTimeToday$/i))V[a].runningTime=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor0$/i))V[a].temp[0]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor1$/i))V[a].temp[1]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor2$/i))V[a].temp[2]=+e;else if(t.match(/^openWB\/LegacySmartHome\/Devices\/[0-9]+\/Status$/i))switch(+e){case 10:V[a].status="off";break;case 11:V[a].status="on";break;case 20:V[a].status="detection";break;case 30:V[a].status="timeout";break;default:V[a].status="off"}}}function ei(t){switch(t){case"power":$.devices.power=Object.values(V).filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.power,0);break;case"energy":$.devices.energy=Object.values(V).filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.energy,0);break;default:console.error("Unknown category")}}function sa(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}class ti{constructor(e){s(this,"id");s(this,"name","Zähler");s(this,"power",0);s(this,"energy_imported",0);s(this,"energy_exported",0);s(this,"grid",!1);s(this,"type","counter");s(this,"color","var(--color-evu)");s(this,"energyPv",0);s(this,"energyBat",0);s(this,"pvPercentage",0);s(this,"icon","");this.id=e}}const ue=J({});function ai(t,e){if(t in ue)console.info("Duplicate counter message: "+t);else switch(ue[t]=new ti(t),ue[t].type=e,e){case"counter":ue[t].color="var(--color-evu)";break;case"inverter":ue[t].color="var(--color-pv)";break;case"cp":ue[t].color="var(--color-charging)";break;case"bat":ue[t].color="var(--color-bat)";break}}const ni=["openWB/counter/#","openWB/bat/#","openWB/pv/get/#","openWB/chargepoint/#","openWB/vehicle/#","openWB/general/chargemode_config/pv_charging/#","openWB/optional/et/#","openWB/system/#","openWB/LegacySmartHome/#","openWB/command/"+bt()+"/#","openWB/optional/int_display/#"];function oi(){$a(ri),ni.forEach(t=>{Be(t)}),ee()}function ri(t,e){const a=e.toString();t.match(/^openwb\/counter\/[0-9]+\//i)?si(t,a):t.match(/^openwb\/counter\//i)?ii(t,a):t.match(/^openwb\/bat\//i)?Fs(t,a):t.match(/^openwb\/pv\//i)?ci(t,a):t.match(/^openwb\/chargepoint\//i)?Hs(t,a):t.match(/^openwb\/vehicle\/template\//i)?Qs(t,a):t.match(/^openwb\/vehicle\//i)?Ys(t,a):t.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)?li(t,a):t.match(/^openwb\/graph\//i)?$s(t,a):t.match(/^openwb\/log\/daily\//i)?Ls(t,a):t.match(/^openwb\/log\/monthly\//i)?Gs(t,a):t.match(/^openwb\/log\/yearly\//i)?Es(t,a):t.match(/^openwb\/optional\/et\//i)?Rs(t,a):t.match(/^openwb\/system\//i)?di(t,a):t.match(/^openwb\/LegacySmartHome\//i)?Xs(t,a):t.match(/^openwb\/command\//i)?hi(t,a):t.match(/^openwb\/optional\//i)&&pi(t,a)}function si(t,e){const a=t.split("/"),n=+a[2];if(n==F.evuId?ui(t,e):a[3]=="config",a[3]=="get"&&n in ue)switch(a[4]){case"power":ue[n].power=+e;break;case"config":break;case"fault_str":break;case"fault_state":break;case"power_factors":break;case"imported":break;case"exported":break;case"frequency":break;case"daily_imported":ue[n].energy_imported=+e;break;case"daily_exported":ue[n].energy_exported=+e;break}}function ii(t,e){if(t.match(/^openwb\/counter\/get\/hierarchy$/i)){const a=JSON.parse(e);if(a.length){La(),Us();for(const n of a)n.type=="counter"&&(F.evuId=n.id);ia(a[0])}}else t.match(/^openwb\/counter\/set\/home_consumption$/i)?($.house.power=+e,Ea()):t.match(/^openwb\/counter\/set\/daily_yield_home_consumption$/i)&&($.house.energy=+e)}function ia(t){switch(t.type){case"counter":ai(t.id,t.type);break;case"cp":Ta(t.id);break;case"bat":Ns(t.id);break}t.children.forEach(e=>ia(e))}function ci(t,e){switch(t){case"openWB/pv/get/power":E.pv.power=-e;break;case"openWB/pv/get/daily_exported":E.pv.energy=+e;break}}function li(t,e){const a=t.split("/");if(a.length>0)switch(a[4]){case"bat_mode":F.updatePvBatteryPriority(JSON.parse(e));break}}function ui(t,e){switch(t.split("/")[4]){case"power":+e>0?(E.evuIn.power=+e,$.evuOut.power=0):(E.evuIn.power=0,$.evuOut.power=-e);break;case"daily_imported":E.evuIn.energy=+e;break;case"daily_exported":$.evuOut.energy=+e;break}}function di(t,e){if(t.match(/^openWB\/system\/device\/[0-9]+\/component\/[0-9]+\/config$/i)){const a=JSON.parse(e);a.type=="counter"&&(ue[a.id].name=a.name)}else t.match(/^openWB\/system\/ip_address$/i)?F.ipAddress=JSON.parse(e):t.match(/^openWB\/system\/time$/i)?F.systemTime=JSON.parse(e):t.match(/^openWB\/system\/version$/i)?F.version=JSON.parse(e):t.match(/^openWB\/system\/current_commit$/i)?F.versionDetails=JSON.parse(e):t.match(/^openWB\/system\/current_branch$/i)&&(F.devBranch=JSON.parse(e))}function hi(t,e){const a=t.split("/");if(t.match(/^openWB\/command\/[a-z]+\/error$/i)&&a[2]==bt()){const n=JSON.parse(e);console.error(`Error message from openWB: 
-Command: ${n.command}
-Data: JSON.stringify(err.data)
-Error:
- ${n.error}`)}}function pi(t,e){if(t.match(/^openwb\/optional\/int_display\/active$/i))ne.active=JSON.parse(e);else if(t.match(/^openwb\/optional\/int_display\/only_local_charge_points$/i))ne.localCpOnly=JSON.parse(e);else if(t.match(/^openwb\/optional\/int_display\/theme$/i)){const a=JSON.parse(e);ne.usePin=a.configuration.lock_changes,ne.code=a.configuration.lock_changes_code}}const gi={class:"d-flex flex-column align-items-center justify-content-start infoitem"},mi=T({__name:"InfoItem",props:{heading:{},small:{type:Boolean}},setup(t){const e=t,a=g(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-small)"}),n=g(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-normal)"}),o=g(()=>e.small?"mt-0":"mt-1");return(i,h)=>(p(),y("span",gi,[c("span",{class:K(["d-flex heading scaled",o.value]),style:oe(a.value)},I(e.heading),7),c("span",{class:"d-flex my-0 me-0 align-items-center content scaled",style:oe(n.value)},[pe(i.$slots,"default",{},void 0,!0)],4)]))}}),ie=Q(mi,[["__scopeId","data-v-9215fd9b"]]),vi=T({__name:"BatterySymbol",props:{soc:{}},setup(t){const e=t,a=g(()=>e.soc<=12?"fa-battery-empty":e.soc<38?"fa-battery-quarter":e.soc<63?"fa-battery-half":e.soc<89?"fa-battery-three-quarters":"fa-battery-full");return(n,o)=>(p(),y("span",null,[c("i",{class:K(["fa batIcon",a.value])},null,2),j(" "+I(Math.round(n.soc)+"%"),1)]))}}),fi=Q(vi,[["__scopeId","data-v-fc156cd3"]]),_i=T({__name:"FormatWattH",props:{wattH:{}},setup(t){const e=t,a=g(()=>jt(e.wattH,v.decimalPlaces));return(n,o)=>(p(),y("span",null,I(a.value),1))}}),ca=t=>(me("data-v-96742d03"),t=t(),ve(),t),yi=ca(()=>c("span",{class:"fa-solid fa-charging-station"}," ",-1)),bi={class:"grid12"},wi={class:"targetCurrent"},Si=ca(()=>c("i",{class:"fa-solid fa-sm fa-car me-3"},null,-1)),ki={key:0,class:"ms-2 me-0 fa-solid fa-xs fa-star ps-1"},Mi={key:1,class:"ms-2 me-0 fa-solid fa-xs fa-coins ps-0"},xi={class:"grid12"},Pi={key:0,class:"me-1 fa-solid fa-xs fa-clock ps-1"},Ci={type:"button"},$i=T({__name:"CPChargePoint",props:{chargepoint:{}},setup(t){const e=t,a=de(e.chargepoint),n=g({get(){return e.chargepoint.chargeMode},set(x){ne.locked?vt():w[e.chargepoint.id].chargeMode=x}}),o=g(()=>(Math.round(e.chargepoint.current*10)/10).toLocaleString(void 0)+" A"),i=g(()=>(Math.round(e.chargepoint.realCurrent*10)/10).toLocaleString(void 0)+" A"),h=g(()=>{const x=e.chargepoint.rangeCharged,N=e.chargepoint.chargedSincePlugged,z=e.chargepoint.dailyYield;return N>0?Math.round(x/N*z).toString()+" "+e.chargepoint.rangeUnit:"0 km"}),d=g(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei"),l=g(()=>e.chargepoint.isLocked?"var(--color-evu)":e.chargepoint.isCharging?"var(--color-charging)":e.chargepoint.isPluggedIn?"var(--color-battery)":"var(--color-axis)"),m=g(()=>{let x="";return e.chargepoint.isLocked?x="fa-lock":e.chargepoint.isCharging?x=" fa-bolt":e.chargepoint.isPluggedIn&&(x="fa-plug"),"fa "+x}),f=g(()=>e.chargepoint.soc),W=g(()=>({color:e.chargepoint.color})),S=g(()=>e.chargepoint.etMaxPrice>=+q.value?{color:"var(--color-charging)"}:{color:"var(--color-menu)"}),Y=de(!1),q=g(()=>{const[x]=se.etPriceList.values();return(Math.round(x*10)/10).toFixed(1)});function U(){ne.locked?vt():new Gt("#settingspage").toggle()}return(x,N)=>Y.value?M("",!0):(p(),B(ot,{key:0,"variable-width":!0},{title:k(()=>[c("span",{style:oe(W.value)},[yi,j(" "+I(e.chargepoint.name),1)],4)]),buttons:k(()=>[_(Ce,{color:"var(--color-cp0)",icon:"fa-edit",onClick:U},{default:k(()=>[j(" Einstellungen")]),_:1})]),footer:k(()=>[c("h3",{class:"d-flex justify-content-left align-items-center",onClick:U},[Si,j(" "+I(x.chargepoint.vehicleName)+" ",1),x.chargepoint.hasPriority?(p(),y("span",ki)):M("",!0),x.chargepoint.etActive?(p(),y("span",Mi)):M("",!0)]),c("div",xi,[x.chargepoint.isSocConfigured?(p(),B(ie,{key:0,heading:"Ladestand:",class:"grid-col-4 grid-left"},{default:k(()=>[_(fi,{soc:f.value,class:"me-2"},null,8,["soc"])]),_:1})):M("",!0),x.chargepoint.isSocConfigured?(p(),B(ie,{key:1,heading:"Reichweite:",class:"grid-col-4"},{default:k(()=>[j(I(r(A)[e.chargepoint.connectedVehicle]?Math.round(r(A)[e.chargepoint.connectedVehicle].range):0)+" km ",1)]),_:1})):M("",!0),_(ie,{heading:"Zeitplan:",class:"grid-col-4 grid-right"},{default:k(()=>[x.chargepoint.timedCharging?(p(),y("span",Pi)):M("",!0),j(" "+I(e.chargepoint.timedCharging?"Ja":"Nein"),1)]),_:1}),r(se).active?(p(),B(ie,{key:2,heading:"Preisladen:",class:"grid-col-4 grid-left"},{default:k(()=>[j(I(a.value.etActive?"Ja":"Nein"),1)]),_:1})):M("",!0),r(se).active?(p(),B(ie,{key:3,heading:"max. Preis:",class:"grid-col-4"},{default:k(()=>[c("span",Ci,I(e.chargepoint.etActive?(Math.round(e.chargepoint.etMaxPrice*10)/10).toFixed(1)+" ct":"-"),1)]),_:1})):M("",!0),r(se).active?(p(),B(ie,{key:4,heading:"akt. Preis:",class:"grid-col-4 grid-right"},{default:k(()=>[c("span",{style:oe(S.value)},I(q.value)+" ct ",5)]),_:1})):M("",!0),_(Zt,{id:"chargemode-"+x.chargepoint.name,modelValue:n.value,"onUpdate:modelValue":N[0]||(N[0]=z=>n.value=z),class:"chargemodes mt-3 mb-3",options:Object.keys(r(Ge)).map(z=>({text:r(Ge)[z].name,value:z,color:r(Ge)[z].color,icon:r(Ge)[z].icon,active:r(Ge)[z].mode==x.chargepoint.chargeMode}))},null,8,["id","modelValue","options"])])]),default:k(()=>[c("div",bi,[_(ie,{heading:"Status:",class:"grid-col-4 grid-left"},{default:k(()=>[c("span",{style:oe({color:l.value})},[c("i",{class:K(m.value)},null,2),j(" "+I(d.value),1)],4)]),_:1}),_(ie,{heading:"Geladen:",class:"grid-col-4"},{default:k(()=>[_(_i,{"watt-h":x.chargepoint.dailyYield},null,8,["watt-h"])]),_:1}),_(ie,{heading:"gel. Reichw.:",class:"grid-col-4 grid-right"},{default:k(()=>[j(I(h.value),1)]),_:1}),e.chargepoint.power>0?(p(),B(ie,{key:0,heading:"Leistung:",class:"grid-col-3 grid-left"},{default:k(()=>[_(Yt,{watt:e.chargepoint.power},null,8,["watt"])]),_:1})):M("",!0),e.chargepoint.power>0?(p(),B(ie,{key:1,heading:"Strom:",class:"grid-col-3"},{default:k(()=>[j(I(i.value),1)]),_:1})):M("",!0),e.chargepoint.power>0?(p(),B(ie,{key:2,heading:"Phasen:",class:"grid-col-3"},{default:k(()=>[j(I(e.chargepoint.phasesInUse),1)]),_:1})):M("",!0),e.chargepoint.power>0?(p(),B(ie,{key:3,heading:"Sollstrom:",class:"grid-col-3 grid-right"},{default:k(()=>[c("span",wi,I(o.value),1)]),_:1})):M("",!0)])]),_:1}))}}),Ii=Q($i,[["__scopeId","data-v-96742d03"]]),Oi=t=>(me("data-v-0fe8554c"),t=t(),ve(),t),Bi={class:"content"},Ti={class:"leftside"},Li={class:"rightside"},Vi=Oi(()=>c("span",{class:"statustitle"},"Systemstatus",-1)),Ai={class:"settingstitle"},Di=T({__name:"DisplayTheme",setup(t){function e(n){Ga(n)&&(ne.locked=!1,setTimeout(()=>{ne.locked=!0},ne.timeout*1e3))}_t(()=>{window.addEventListener("resize",Fa),window.addEventListener("focus",a),oi()});function a(){document.hasFocus()&&ee()}return(n,o)=>(p(),y(Ie,null,[c("div",Bi,[c("div",Ti,[We(c("div",null,[_(Ln)],512),[[st,r(v).graphToShow=="powermeter"]]),We(c("div",null,[_(So)],512),[[st,r(v).graphToShow=="powergraph"]]),We(c("div",null,[_(Ro)],512),[[st,r(v).graphToShow=="energymeter"]])]),c("div",Li,[Object.values(r(w)).length>r(v).cpToShow?(p(),B(Ii,{key:0,chargepoint:Object.values(r(w))[r(v).cpToShow],"full-width":!0},null,8,["chargepoint"])):M("",!0)])]),_(pt,{"modal-id":"numberpad"},{title:k(()=>[j("Code")]),default:k(()=>[_(ur,{"model-value":"","onUpdate:modelValue":e})]),_:1}),_(pt,{"modal-id":"statuspage"},{title:k(()=>[Vi]),default:k(()=>[_(_r)]),_:1}),Object.values(r(w)).length>r(v).cpToShow?(p(),B(pt,{key:0,"modal-id":"settingspage"},{title:k(()=>[c("span",Ai,"Einstellungen für "+I(Object.values(r(w))[r(v).cpToShow].name)+" ("+I(Object.values(r(w))[r(v).cpToShow].vehicleName)+") ",1)]),default:k(()=>[_(Cs,{chargepoint:Object.values(r(w))[r(v).cpToShow]},null,8,["chargepoint"])]),_:1})):M("",!0)],64))}}),Gi=Q(Di,[["__scopeId","data-v-0fe8554c"]]),Ei={class:"fixeddisplay"},Wi=T({__name:"App",setup(t){return(e,a)=>(p(),y("div",Ei,[_(Gi),_(nn)]))}}),zi=Q(Wi,[["__scopeId","data-v-75d14554"]]),ji=ba(zi);ji.mount("#app");
diff --git a/packages/modules/display_themes/colors/web/assets/index-Bz5z-jvD.css b/packages/modules/display_themes/colors/web/assets/index-C3_mlzOZ.css
similarity index 75%
rename from packages/modules/display_themes/colors/web/assets/index-Bz5z-jvD.css
rename to packages/modules/display_themes/colors/web/assets/index-C3_mlzOZ.css
index 954b4a920d..113bfb979d 100644
--- a/packages/modules/display_themes/colors/web/assets/index-Bz5z-jvD.css
+++ b/packages/modules/display_themes/colors/web/assets/index-C3_mlzOZ.css
@@ -1,4 +1,4 @@
-@charset "UTF-8";.displaybutton[data-v-d2ce91a5]{border:.1px solid var(--color-frame);padding:8px;align-self:top;box-shadow:1px 3px #000;font-weight:700;font-size:var(--font-small)}.navigation[data-v-126005ae]{display:flex;justify-content:space-between;padding:2px 20px;align-items:center;border-top:0px solid var(--color-menu);border-bottom:0px solid var(--color-menu)}.timedisplay[data-v-126005ae]{font-size:var(--font-medium);font-weight:700;color:var(--color-input);margin-right:12px}.navbar[data-v-126005ae]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.graphbuttons[data-v-126005ae]{display:flex;justify-content:left;align-items:center;gap:5px}.cpbuttons[data-v-126005ae]{display:flex;justify-content:left;gap:5px}.dropdown-menu[data-v-126005ae]{background-color:var(--color-bg);color:var(--color-fg)}.dropdown-item[data-v-126005ae]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.btn[data-v-126005ae]{font-size:var(--font-medium);background-color:var(--color-bg);color:var(--color-fg)}.navbar-brand[data-v-126005ae]{font-weight:700;color:var(--color-fg);font-size:var(--font-normal)}.nav-link[data-v-126005ae]{color:var(--color-fg);border-color:red;font-size:var(--font-normal)}.navbar-toggler[data-v-126005ae]{color:var(--color-fg);border-color:var(--color-bg)}.navbar-time[data-v-126005ae]{font-weight:700;color:var(--color-menu);font-size:var(--font-normal)}.radiobutton[data-v-60f5d4c2]{border:0px solid var(--color-menu);opacity:1;font-size:var(--font-chargebutton)}.btn-outline-secondary.active[data-v-60f5d4c2]{background-color:var(--color-bg);border:0px solid var(--color-fg);opacity:.8}.btn-group[data-v-60f5d4c2]{border:.1px solid var(--color-menu);box-shadow:1px 3px #000}.rounded-pill[data-v-7fd067cd]{background-color:var(--color-menu)}.arrowButton[data-v-7fd067cd]{border:0}.datebadge[data-v-7fd067cd]{background-color:var(--color-bg);color:var(--color-menu);border:1px solid var(--color-menu);font-size:var(--font-small);font-weight:400}.arrowButton[data-v-7fd067cd],.fa-magnifying-glass[data-v-c850f90a]{color:var(--color-menu)}.datebadge[data-v-c850f90a]{background-color:var(--color-menu);color:var(--color-bg);font-size:var(--font-medium);font-weight:400}.modal-content[data-v-dff8d7c2]{background-color:var(--color-bg);border-color:var(--color-menu);box-shadow:3px 5px #000}.modal-footer[data-v-dff8d7c2],.modal-header[data-v-dff8d7c2],.modal-body[data-v-dff8d7c2]{background-color:var(--color-bg);color:var(--color-fg)}.modal-body[data-v-dff8d7c2]{border-color:var(--color-fg)}.modal-footer[data-v-dff8d7c2]{text-align:right}.modal-header .btn-close[data-v-dff8d7c2]{color:var(--color-fg);background-color:var(--color-bg);border:0px}.modal-title[data-v-dff8d7c2]{color:var(--color-fg)}.closebutton[data-v-dff8d7c2]{background:var(--color-fg)}.modal.fade .modal-dialog[data-v-dff8d7c2]{transition:transform 1s ease-out;transform:none;scale:.6}.modal.show .modal-dialog[data-v-dff8d7c2]{transition:transform .3s ease-in;transform:none;scale:1}.fa-circle-check[data-v-dff8d7c2]{color:var(--color-fg)}.padbutton[data-v-cc256a6f]{display:flex;align-items:center;justify-content:center;border-radius:50%;border:.1px dotted var(--color-menu);box-shadow:1px 3px #000}.digit[data-v-cc256a6f]{font-size:24px;font-weight:700;text-align:center;align-self:center;justify-self:center;display:flex}.numberpad[data-v-63c8fa5c]{display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:var(--color-bg)}.codedisplay[data-v-63c8fa5c]{display:flex;align-items:center;justify-content:center;font-size:24px;border:10px;color:var(--color-fg)}.numberentry[data-v-63c8fa5c]{display:grid;grid-template-columns:60px 60px 60px;grid-template-rows:65px 65px 65px 65px;grid-gap:5px}.statustable[data-v-6a182015]{display:grid;grid-template-columns:35% 65%;font-size:16px;color:#fff}.header[data-v-6a182015]{color:var(--color-fg)}.infotext[data-v-42847ded]{font-size:var(--font-settings);color:var(--color-battery)}.item-icon[data-v-42847ded]{color:var(--color-charging);font-size:var(--font-settings)}.titlecolumn[data-v-42847ded]{color:var(--color-bg);font-size:var(--font-settings)}.selectors[data-v-42847ded]{font-size:var(--font-settings)}.configitem[data-v-42847ded]{font-size:var(--font-settings);align-items:center;justify-content:space-between}.radiobutton[data-v-005a14a9]{border:.5px solid var(--color-fg);opacity:.5;font-size:14px}.btn-outline-secondary[data-v-005a14a9]{background-color:var(--color-bg)}.btn-outline-secondary.active[data-v-005a14a9]{background-color:var(--color-bg);border:1px solid var(--color-fg);box-shadow:0 .5rem 1rem #fff;font-weight:700;opacity:1}.minlabel[data-v-17a828b1],.maxlabel[data-v-17a828b1]{color:var(--color-menu)}.valuelabel[data-v-17a828b1]{color:var(--color-fg)}.minusButton[data-v-17a828b1],.plusButton[data-v-17a828b1]{color:var(--color-menu)}.chargeConfigSelect[data-v-d0d53120]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-d0d53120]{color:var(--color-fg);font-size:var(--font-settings);font-weight:700}.chargeConfigSelect[data-v-826c4d0e]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-826c4d0e]{color:var(--color-pv)}.settingslist[data-v-2b0c724c]{display:grid;grid-template-columns:repeat(12,1fr);font-size:16px;color:var(--color-fg);background-color:var(--color-bg)}.nav-link[data-v-2b0c724c]{font-size:var(--font-settings);color:var(--color-fg)}.fa-bolt[data-v-2b0c724c]{color:var(--color-charging)}.fa-charging-station[data-v-2b0c724c]{color:var(--color-fg)}.fa-solar-panel[data-v-2b0c724c]{color:var(--color-pv)}.heading[data-v-9215fd9b]{color:var(--color-menu);font-weight:400;text-align:center}.content[data-v-9215fd9b]{color:var(--color-fg);font-weight:700}.batIcon[data-v-fc156cd3]{color:var(--color-menu)}.fa-star[data-v-96742d03]{color:var(--color-evu)}.fa-clock[data-v-96742d03]{color:var(--color-battery)}.fa-car[data-v-96742d03],.fa-ellipsis-vertical[data-v-96742d03],.fa-circle-check[data-v-96742d03]{color:var(--color-menu)}.fa-coins[data-v-96742d03]{color:var(--color-battery)}.fa-edit[data-v-96742d03]{color:var(--color-menu)}.socEditor[data-v-96742d03]{border:1px solid var(--color-menu);justify-self:stretch}.targetCurrent[data-v-96742d03]{color:var(--color-menu)}.priceEditor[data-v-96742d03]{border:1px solid var(--color-menu);justify-self:stretch}.chargemodes[data-v-96742d03]{grid-column:1 / 13;justify-self:center}.chargeinfo[data-v-96742d03]{display:grid;grid-template-columns:repeat(12,auto);justify-content:space-between}.settingsbutton[data-v-96742d03]{border-radius:30%}.content[data-v-0fe8554c]{display:grid;grid-template-columns:380px 420px;grid-template-rows:430px;overflow:hidden;min-width:0px}.leftside[data-v-0fe8554c],.rightside[data-v-0fe8554c]{min-width:0px;overflow:hidden}.settingstitle[data-v-0fe8554c],.statustitle[data-v-0fe8554c]{color:var(--color-fg)}.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius, .1em);border:var(--fa-border-width, .08em) var(--fa-border-style, solid) var(--fa-border-color, #eee);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) )}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration, 2s);animation-duration:var(--fa-animation-duration, 2s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, steps(8));animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle, none));transform:rotate(var(--fa-rotate-angle, none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0:before{content:"0"}.fa-1:before{content:"1"}.fa-2:before{content:"2"}.fa-3:before{content:"3"}.fa-4:before{content:"4"}.fa-5:before{content:"5"}.fa-6:before{content:"6"}.fa-7:before{content:"7"}.fa-8:before{content:"8"}.fa-9:before{content:"9"}.fa-a:before{content:"A"}.fa-address-book:before,.fa-contact-book:before{content:""}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:""}.fa-align-center:before{content:""}.fa-align-justify:before{content:""}.fa-align-left:before{content:""}.fa-align-right:before{content:""}.fa-anchor:before{content:""}.fa-angle-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-double-down:before,.fa-angles-down:before{content:""}.fa-angle-double-left:before,.fa-angles-left:before{content:""}.fa-angle-double-right:before,.fa-angles-right:before{content:""}.fa-angle-double-up:before,.fa-angles-up:before{content:""}.fa-ankh:before{content:""}.fa-apple-alt:before,.fa-apple-whole:before{content:""}.fa-archway:before{content:""}.fa-arrow-down:before{content:""}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:""}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:""}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:""}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:""}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:""}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:""}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:""}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:""}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:""}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:""}.fa-arrow-trend-down:before{content:""}.fa-arrow-trend-up:before{content:""}.fa-arrow-turn-down:before,.fa-level-down:before{content:""}.fa-arrow-turn-up:before,.fa-level-up:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:""}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:""}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:""}.fa-arrow-up-from-bracket:before{content:""}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:""}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:""}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:""}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:""}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:""}.fa-arrows-h:before,.fa-arrows-left-right:before{content:""}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:""}.fa-arrows-up-down:before,.fa-arrows-v:before{content:""}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:""}.fa-asterisk:before{content:"*"}.fa-at:before{content:"@"}.fa-atom:before{content:""}.fa-audio-description:before{content:""}.fa-austral-sign:before{content:""}.fa-award:before{content:""}.fa-b:before{content:"B"}.fa-baby:before{content:""}.fa-baby-carriage:before,.fa-carriage-baby:before{content:""}.fa-backward:before{content:""}.fa-backward-fast:before,.fa-fast-backward:before{content:""}.fa-backward-step:before,.fa-step-backward:before{content:""}.fa-bacon:before{content:""}.fa-bacteria:before{content:""}.fa-bacterium:before{content:""}.fa-bag-shopping:before,.fa-shopping-bag:before{content:""}.fa-bahai:before{content:""}.fa-baht-sign:before{content:""}.fa-ban:before,.fa-cancel:before{content:""}.fa-ban-smoking:before,.fa-smoking-ban:before{content:""}.fa-band-aid:before,.fa-bandage:before{content:""}.fa-barcode:before{content:""}.fa-bars:before,.fa-navicon:before{content:""}.fa-bars-progress:before,.fa-tasks-alt:before{content:""}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:""}.fa-baseball-ball:before,.fa-baseball:before{content:""}.fa-baseball-bat-ball:before{content:""}.fa-basket-shopping:before,.fa-shopping-basket:before{content:""}.fa-basketball-ball:before,.fa-basketball:before{content:""}.fa-bath:before,.fa-bathtub:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-half:before{content:""}.fa-battery-2:before,.fa-battery-quarter:before{content:""}.fa-battery-4:before,.fa-battery-three-quarters:before{content:""}.fa-bed:before{content:""}.fa-bed-pulse:before,.fa-procedures:before{content:""}.fa-beer-mug-empty:before,.fa-beer:before{content:""}.fa-bell:before{content:""}.fa-bell-concierge:before,.fa-concierge-bell:before{content:""}.fa-bell-slash:before{content:""}.fa-bezier-curve:before{content:""}.fa-bicycle:before{content:""}.fa-binoculars:before{content:""}.fa-biohazard:before{content:""}.fa-bitcoin-sign:before{content:""}.fa-blender:before{content:""}.fa-blender-phone:before{content:""}.fa-blog:before{content:""}.fa-bold:before{content:""}.fa-bolt:before,.fa-zap:before{content:""}.fa-bolt-lightning:before{content:""}.fa-bomb:before{content:""}.fa-bone:before{content:""}.fa-bong:before{content:""}.fa-book:before{content:""}.fa-atlas:before,.fa-book-atlas:before{content:""}.fa-bible:before,.fa-book-bible:before{content:""}.fa-book-journal-whills:before,.fa-journal-whills:before{content:""}.fa-book-medical:before{content:""}.fa-book-open:before{content:""}.fa-book-open-reader:before,.fa-book-reader:before{content:""}.fa-book-quran:before,.fa-quran:before{content:""}.fa-book-dead:before,.fa-book-skull:before{content:""}.fa-bookmark:before{content:""}.fa-border-all:before{content:""}.fa-border-none:before{content:""}.fa-border-style:before,.fa-border-top-left:before{content:""}.fa-bowling-ball:before{content:""}.fa-box:before{content:""}.fa-archive:before,.fa-box-archive:before{content:""}.fa-box-open:before{content:""}.fa-box-tissue:before{content:""}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:""}.fa-braille:before{content:""}.fa-brain:before{content:""}.fa-brazilian-real-sign:before{content:""}.fa-bread-slice:before{content:""}.fa-briefcase:before{content:""}.fa-briefcase-medical:before{content:""}.fa-broom:before{content:""}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:""}.fa-brush:before{content:""}.fa-bug:before{content:""}.fa-bug-slash:before{content:""}.fa-building:before{content:""}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:""}.fa-bullhorn:before{content:""}.fa-bullseye:before{content:""}.fa-burger:before,.fa-hamburger:before{content:""}.fa-bus:before{content:""}.fa-bus-alt:before,.fa-bus-simple:before{content:""}.fa-briefcase-clock:before,.fa-business-time:before{content:""}.fa-c:before{content:"C"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:""}.fa-calculator:before{content:""}.fa-calendar:before{content:""}.fa-calendar-check:before{content:""}.fa-calendar-day:before{content:""}.fa-calendar-alt:before,.fa-calendar-days:before{content:""}.fa-calendar-minus:before{content:""}.fa-calendar-plus:before{content:""}.fa-calendar-week:before{content:""}.fa-calendar-times:before,.fa-calendar-xmark:before{content:""}.fa-camera-alt:before,.fa-camera:before{content:""}.fa-camera-retro:before{content:""}.fa-camera-rotate:before{content:""}.fa-campground:before{content:""}.fa-candy-cane:before{content:""}.fa-cannabis:before{content:""}.fa-capsules:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-battery-car:before,.fa-car-battery:before{content:""}.fa-car-crash:before{content:""}.fa-car-alt:before,.fa-car-rear:before{content:""}.fa-car-side:before{content:""}.fa-caravan:before{content:""}.fa-caret-down:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-caret-up:before{content:""}.fa-carrot:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:""}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-shopping:before,.fa-shopping-cart:before{content:""}.fa-cash-register:before{content:""}.fa-cat:before{content:""}.fa-cedi-sign:before{content:""}.fa-cent-sign:before{content:""}.fa-certificate:before{content:""}.fa-chair:before{content:""}.fa-blackboard:before,.fa-chalkboard:before{content:""}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:""}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:""}.fa-charging-station:before{content:""}.fa-area-chart:before,.fa-chart-area:before{content:""}.fa-bar-chart:before,.fa-chart-bar:before{content:""}.fa-chart-column:before{content:""}.fa-chart-gantt:before{content:""}.fa-chart-line:before,.fa-line-chart:before{content:""}.fa-chart-pie:before,.fa-pie-chart:before{content:""}.fa-check:before{content:""}.fa-check-double:before{content:""}.fa-check-to-slot:before,.fa-vote-yea:before{content:""}.fa-cheese:before{content:""}.fa-chess:before{content:""}.fa-chess-bishop:before{content:""}.fa-chess-board:before{content:""}.fa-chess-king:before{content:""}.fa-chess-knight:before{content:""}.fa-chess-pawn:before{content:""}.fa-chess-queen:before{content:""}.fa-chess-rook:before{content:""}.fa-chevron-down:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-chevron-up:before{content:""}.fa-child:before{content:""}.fa-church:before{content:""}.fa-circle:before{content:""}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:""}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:""}.fa-check-circle:before,.fa-circle-check:before{content:""}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:""}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:""}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:""}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:""}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:""}.fa-circle-dot:before,.fa-dot-circle:before{content:""}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:""}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:""}.fa-circle-h:before,.fa-hospital-symbol:before{content:""}.fa-adjust:before,.fa-circle-half-stroke:before{content:""}.fa-circle-info:before,.fa-info-circle:before{content:""}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:""}.fa-circle-minus:before,.fa-minus-circle:before{content:""}.fa-circle-notch:before{content:""}.fa-circle-pause:before,.fa-pause-circle:before{content:""}.fa-circle-play:before,.fa-play-circle:before{content:""}.fa-circle-plus:before,.fa-plus-circle:before{content:""}.fa-circle-question:before,.fa-question-circle:before{content:""}.fa-circle-radiation:before,.fa-radiation-alt:before{content:""}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:""}.fa-circle-stop:before,.fa-stop-circle:before{content:""}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:""}.fa-circle-user:before,.fa-user-circle:before{content:""}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:""}.fa-city:before{content:""}.fa-clapperboard:before{content:""}.fa-clipboard:before{content:""}.fa-clipboard-check:before{content:""}.fa-clipboard-list:before{content:""}.fa-clock-four:before,.fa-clock:before{content:""}.fa-clock-rotate-left:before,.fa-history:before{content:""}.fa-clone:before{content:""}.fa-closed-captioning:before{content:""}.fa-cloud:before{content:""}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:""}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:""}.fa-cloud-meatball:before{content:""}.fa-cloud-moon:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-cloud-rain:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-cloud-sun:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-clover:before{content:""}.fa-code:before{content:""}.fa-code-branch:before{content:""}.fa-code-commit:before{content:""}.fa-code-compare:before{content:""}.fa-code-fork:before{content:""}.fa-code-merge:before{content:""}.fa-code-pull-request:before{content:""}.fa-coins:before{content:""}.fa-colon-sign:before{content:""}.fa-comment:before{content:""}.fa-comment-dollar:before{content:""}.fa-comment-dots:before,.fa-commenting:before{content:""}.fa-comment-medical:before{content:""}.fa-comment-slash:before{content:""}.fa-comment-sms:before,.fa-sms:before{content:""}.fa-comments:before{content:""}.fa-comments-dollar:before{content:""}.fa-compact-disc:before{content:""}.fa-compass:before{content:""}.fa-compass-drafting:before,.fa-drafting-compass:before{content:""}.fa-compress:before{content:""}.fa-computer-mouse:before,.fa-mouse:before{content:""}.fa-cookie:before{content:""}.fa-cookie-bite:before{content:""}.fa-copy:before{content:""}.fa-copyright:before{content:""}.fa-couch:before{content:""}.fa-credit-card-alt:before,.fa-credit-card:before{content:""}.fa-crop:before{content:""}.fa-crop-alt:before,.fa-crop-simple:before{content:""}.fa-cross:before{content:""}.fa-crosshairs:before{content:""}.fa-crow:before{content:""}.fa-crown:before{content:""}.fa-crutch:before{content:""}.fa-cruzeiro-sign:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-d:before{content:"D"}.fa-database:before{content:""}.fa-backspace:before,.fa-delete-left:before{content:""}.fa-democrat:before{content:""}.fa-desktop-alt:before,.fa-desktop:before{content:""}.fa-dharmachakra:before{content:""}.fa-diagram-next:before{content:""}.fa-diagram-predecessor:before{content:""}.fa-diagram-project:before,.fa-project-diagram:before{content:""}.fa-diagram-successor:before{content:""}.fa-diamond:before{content:""}.fa-diamond-turn-right:before,.fa-directions:before{content:""}.fa-dice:before{content:""}.fa-dice-d20:before{content:""}.fa-dice-d6:before{content:""}.fa-dice-five:before{content:""}.fa-dice-four:before{content:""}.fa-dice-one:before{content:""}.fa-dice-six:before{content:""}.fa-dice-three:before{content:""}.fa-dice-two:before{content:""}.fa-disease:before{content:""}.fa-divide:before{content:""}.fa-dna:before{content:""}.fa-dog:before{content:""}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"$"}.fa-dolly-box:before,.fa-dolly:before{content:""}.fa-dong-sign:before{content:""}.fa-door-closed:before{content:""}.fa-door-open:before{content:""}.fa-dove:before{content:""}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:""}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:""}.fa-download:before{content:""}.fa-dragon:before{content:""}.fa-draw-polygon:before{content:""}.fa-droplet:before,.fa-tint:before{content:""}.fa-droplet-slash:before,.fa-tint-slash:before{content:""}.fa-drum:before{content:""}.fa-drum-steelpan:before{content:""}.fa-drumstick-bite:before{content:""}.fa-dumbbell:before{content:""}.fa-dumpster:before{content:""}.fa-dumpster-fire:before{content:""}.fa-dungeon:before{content:""}.fa-e:before{content:"E"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:""}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:""}.fa-earth-africa:before,.fa-globe-africa:before{content:""}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:""}.fa-earth-asia:before,.fa-globe-asia:before{content:""}.fa-earth-europe:before,.fa-globe-europe:before{content:""}.fa-earth-oceania:before,.fa-globe-oceania:before{content:""}.fa-egg:before{content:""}.fa-eject:before{content:""}.fa-elevator:before{content:""}.fa-ellipsis-h:before,.fa-ellipsis:before{content:""}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:""}.fa-envelope:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-text:before{content:""}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:""}.fa-equals:before{content:"="}.fa-eraser:before{content:""}.fa-ethernet:before{content:""}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:""}.fa-exclamation:before{content:"!"}.fa-expand:before{content:""}.fa-eye:before{content:""}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:""}.fa-eye-low-vision:before,.fa-low-vision:before{content:""}.fa-eye-slash:before{content:""}.fa-f:before{content:"F"}.fa-angry:before,.fa-face-angry:before{content:""}.fa-dizzy:before,.fa-face-dizzy:before{content:""}.fa-face-flushed:before,.fa-flushed:before{content:""}.fa-face-frown:before,.fa-frown:before{content:""}.fa-face-frown-open:before,.fa-frown-open:before{content:""}.fa-face-grimace:before,.fa-grimace:before{content:""}.fa-face-grin:before,.fa-grin:before{content:""}.fa-face-grin-beam:before,.fa-grin-beam:before{content:""}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:""}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:""}.fa-face-grin-squint:before,.fa-grin-squint:before{content:""}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:""}.fa-face-grin-stars:before,.fa-grin-stars:before{content:""}.fa-face-grin-tears:before,.fa-grin-tears:before{content:""}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:""}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:""}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:""}.fa-face-grin-wide:before,.fa-grin-alt:before{content:""}.fa-face-grin-wink:before,.fa-grin-wink:before{content:""}.fa-face-kiss:before,.fa-kiss:before{content:""}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:""}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:""}.fa-face-laugh:before,.fa-laugh:before{content:""}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:""}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:""}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:""}.fa-face-meh:before,.fa-meh:before{content:""}.fa-face-meh-blank:before,.fa-meh-blank:before{content:""}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:""}.fa-face-sad-cry:before,.fa-sad-cry:before{content:""}.fa-face-sad-tear:before,.fa-sad-tear:before{content:""}.fa-face-smile:before,.fa-smile:before{content:""}.fa-face-smile-beam:before,.fa-smile-beam:before{content:""}.fa-face-smile-wink:before,.fa-smile-wink:before{content:""}.fa-face-surprise:before,.fa-surprise:before{content:""}.fa-face-tired:before,.fa-tired:before{content:""}.fa-fan:before{content:""}.fa-faucet:before{content:""}.fa-fax:before{content:""}.fa-feather:before{content:""}.fa-feather-alt:before,.fa-feather-pointed:before{content:""}.fa-file:before{content:""}.fa-file-arrow-down:before,.fa-file-download:before{content:""}.fa-file-arrow-up:before,.fa-file-upload:before{content:""}.fa-file-audio:before{content:""}.fa-file-code:before{content:""}.fa-file-contract:before{content:""}.fa-file-csv:before{content:""}.fa-file-excel:before{content:""}.fa-arrow-right-from-file:before,.fa-file-export:before{content:""}.fa-file-image:before{content:""}.fa-arrow-right-to-file:before,.fa-file-import:before{content:""}.fa-file-invoice:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:""}.fa-file-medical:before{content:""}.fa-file-pdf:before{content:""}.fa-file-powerpoint:before{content:""}.fa-file-prescription:before{content:""}.fa-file-signature:before{content:""}.fa-file-video:before{content:""}.fa-file-medical-alt:before,.fa-file-waveform:before{content:""}.fa-file-word:before{content:""}.fa-file-archive:before,.fa-file-zipper:before{content:""}.fa-fill:before{content:""}.fa-fill-drip:before{content:""}.fa-film:before{content:""}.fa-filter:before{content:""}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:""}.fa-filter-circle-xmark:before{content:""}.fa-fingerprint:before{content:""}.fa-fire:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:""}.fa-burn:before,.fa-fire-flame-simple:before{content:""}.fa-fish:before{content:""}.fa-flag:before{content:""}.fa-flag-checkered:before{content:""}.fa-flag-usa:before{content:""}.fa-flask:before{content:""}.fa-floppy-disk:before,.fa-save:before{content:""}.fa-florin-sign:before{content:""}.fa-folder:before{content:""}.fa-folder-minus:before{content:""}.fa-folder-open:before{content:""}.fa-folder-plus:before{content:""}.fa-folder-tree:before{content:""}.fa-font:before{content:""}.fa-football-ball:before,.fa-football:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before,.fa-forward-fast:before{content:""}.fa-forward-step:before,.fa-step-forward:before{content:""}.fa-franc-sign:before{content:""}.fa-frog:before{content:""}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:""}.fa-g:before{content:"G"}.fa-gamepad:before{content:""}.fa-gas-pump:before{content:""}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:""}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:""}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:""}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-gem:before{content:""}.fa-genderless:before{content:""}.fa-ghost:before{content:""}.fa-gift:before{content:""}.fa-gifts:before{content:""}.fa-glasses:before{content:""}.fa-globe:before{content:""}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:""}.fa-gopuram:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-greater-than:before{content:">"}.fa-greater-than-equal:before{content:""}.fa-grip-horizontal:before,.fa-grip:before{content:""}.fa-grip-lines:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-grip-vertical:before{content:""}.fa-guarani-sign:before{content:""}.fa-guitar:before{content:""}.fa-gun:before{content:""}.fa-h:before{content:"H"}.fa-hammer:before{content:""}.fa-hamsa:before{content:""}.fa-hand-paper:before,.fa-hand:before{content:""}.fa-hand-back-fist:before,.fa-hand-rock:before{content:""}.fa-allergies:before,.fa-hand-dots:before{content:""}.fa-fist-raised:before,.fa-hand-fist:before{content:""}.fa-hand-holding:before{content:""}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:""}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-hand-holding-medical:before{content:""}.fa-hand-lizard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-hand-peace:before{content:""}.fa-hand-point-down:before{content:""}.fa-hand-point-left:before{content:""}.fa-hand-point-right:before{content:""}.fa-hand-point-up:before{content:""}.fa-hand-pointer:before{content:""}.fa-hand-scissors:before{content:""}.fa-hand-sparkles:before{content:""}.fa-hand-spock:before{content:""}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:""}.fa-hands-bubbles:before,.fa-hands-wash:before{content:""}.fa-hands-clapping:before{content:""}.fa-hands-holding:before{content:""}.fa-hands-praying:before,.fa-praying-hands:before{content:""}.fa-handshake:before{content:""}.fa-hands-helping:before,.fa-handshake-angle:before{content:""}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:""}.fa-handshake-slash:before{content:""}.fa-hanukiah:before{content:""}.fa-hard-drive:before,.fa-hdd:before{content:""}.fa-hashtag:before{content:"#"}.fa-hat-cowboy:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-hat-wizard:before{content:""}.fa-head-side-cough:before{content:""}.fa-head-side-cough-slash:before{content:""}.fa-head-side-mask:before{content:""}.fa-head-side-virus:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-headphones:before{content:""}.fa-headphones-alt:before,.fa-headphones-simple:before{content:""}.fa-headset:before{content:""}.fa-heart:before{content:""}.fa-heart-broken:before,.fa-heart-crack:before{content:""}.fa-heart-pulse:before,.fa-heartbeat:before{content:""}.fa-helicopter:before{content:""}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:""}.fa-highlighter:before{content:""}.fa-hippo:before{content:""}.fa-hockey-puck:before{content:""}.fa-holly-berry:before{content:""}.fa-horse:before{content:""}.fa-horse-head:before{content:""}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:""}.fa-hospital-user:before{content:""}.fa-hot-tub-person:before,.fa-hot-tub:before{content:""}.fa-hotdog:before{content:""}.fa-hotel:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before,.fa-hourglass:before{content:""}.fa-hourglass-empty:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:""}.fa-home-lg:before,.fa-house-chimney:before{content:""}.fa-house-chimney-crack:before,.fa-house-damage:before{content:""}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:""}.fa-house-chimney-user:before{content:""}.fa-house-chimney-window:before{content:""}.fa-house-crack:before{content:""}.fa-house-laptop:before,.fa-laptop-house:before{content:""}.fa-house-medical:before{content:""}.fa-home-user:before,.fa-house-user:before{content:""}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:""}.fa-i:before{content:"I"}.fa-i-cursor:before{content:""}.fa-ice-cream:before{content:""}.fa-icicles:before{content:""}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-id-card-alt:before,.fa-id-card-clip:before{content:""}.fa-igloo:before{content:""}.fa-image:before{content:""}.fa-image-portrait:before,.fa-portrait:before{content:""}.fa-images:before{content:""}.fa-inbox:before{content:""}.fa-indent:before{content:""}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:""}.fa-industry:before{content:""}.fa-infinity:before{content:""}.fa-info:before{content:""}.fa-italic:before{content:""}.fa-j:before{content:"J"}.fa-jedi:before{content:""}.fa-fighter-jet:before,.fa-jet-fighter:before{content:""}.fa-joint:before{content:""}.fa-k:before{content:"K"}.fa-kaaba:before{content:""}.fa-key:before{content:""}.fa-keyboard:before{content:""}.fa-khanda:before{content:""}.fa-kip-sign:before{content:""}.fa-first-aid:before,.fa-kit-medical:before{content:""}.fa-kiwi-bird:before{content:""}.fa-l:before{content:"L"}.fa-landmark:before{content:""}.fa-language:before{content:""}.fa-laptop:before{content:""}.fa-laptop-code:before{content:""}.fa-laptop-medical:before{content:""}.fa-lari-sign:before{content:""}.fa-layer-group:before{content:""}.fa-leaf:before{content:""}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:""}.fa-arrows-alt-h:before,.fa-left-right:before{content:""}.fa-lemon:before{content:""}.fa-less-than:before{content:"<"}.fa-less-than-equal:before{content:""}.fa-life-ring:before{content:""}.fa-lightbulb:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:""}.fa-lira-sign:before{content:""}.fa-list-squares:before,.fa-list:before{content:""}.fa-list-check:before,.fa-tasks:before{content:""}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:""}.fa-list-dots:before,.fa-list-ul:before{content:""}.fa-litecoin-sign:before{content:""}.fa-location-arrow:before{content:""}.fa-location-crosshairs:before,.fa-location:before{content:""}.fa-location-dot:before,.fa-map-marker-alt:before{content:""}.fa-location-pin:before,.fa-map-marker:before{content:""}.fa-lock:before{content:""}.fa-lock-open:before{content:""}.fa-lungs:before{content:""}.fa-lungs-virus:before{content:""}.fa-m:before{content:"M"}.fa-magnet:before{content:""}.fa-magnifying-glass:before,.fa-search:before{content:""}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:""}.fa-magnifying-glass-location:before,.fa-search-location:before{content:""}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:""}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:""}.fa-manat-sign:before{content:""}.fa-map:before{content:""}.fa-map-location:before,.fa-map-marked:before{content:""}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:""}.fa-map-pin:before{content:""}.fa-marker:before{content:""}.fa-mars:before{content:""}.fa-mars-and-venus:before{content:""}.fa-mars-double:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:""}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:""}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:""}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:""}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:""}.fa-mask:before{content:""}.fa-mask-face:before{content:""}.fa-masks-theater:before,.fa-theater-masks:before{content:""}.fa-expand-arrows-alt:before,.fa-maximize:before{content:""}.fa-medal:before{content:""}.fa-memory:before{content:""}.fa-menorah:before{content:""}.fa-mercury:before{content:""}.fa-comment-alt:before,.fa-message:before{content:""}.fa-meteor:before{content:""}.fa-microchip:before{content:""}.fa-microphone:before{content:""}.fa-microphone-alt:before,.fa-microphone-lines:before{content:""}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:""}.fa-microphone-slash:before{content:""}.fa-microscope:before{content:""}.fa-mill-sign:before{content:""}.fa-compress-arrows-alt:before,.fa-minimize:before{content:""}.fa-minus:before,.fa-subtract:before{content:""}.fa-mitten:before{content:""}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-mobile-button:before{content:""}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:""}.fa-money-bill:before{content:""}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:""}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:""}.fa-money-bill-wave:before{content:""}.fa-money-check:before{content:""}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:""}.fa-monument:before{content:""}.fa-moon:before{content:""}.fa-mortar-pestle:before{content:""}.fa-mosque:before{content:""}.fa-motorcycle:before{content:""}.fa-mountain:before{content:""}.fa-mug-hot:before{content:""}.fa-coffee:before,.fa-mug-saucer:before{content:""}.fa-music:before{content:""}.fa-n:before{content:"N"}.fa-naira-sign:before{content:""}.fa-network-wired:before{content:""}.fa-neuter:before{content:""}.fa-newspaper:before{content:""}.fa-not-equal:before{content:""}.fa-note-sticky:before,.fa-sticky-note:before{content:""}.fa-notes-medical:before{content:""}.fa-o:before{content:"O"}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-oil-can:before{content:""}.fa-om:before{content:""}.fa-otter:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-p:before{content:"P"}.fa-pager:before{content:""}.fa-paint-roller:before{content:""}.fa-paint-brush:before,.fa-paintbrush:before{content:""}.fa-palette:before{content:""}.fa-pallet:before{content:""}.fa-panorama:before{content:""}.fa-paper-plane:before{content:""}.fa-paperclip:before{content:""}.fa-parachute-box:before{content:""}.fa-paragraph:before{content:""}.fa-passport:before{content:""}.fa-file-clipboard:before,.fa-paste:before{content:""}.fa-pause:before{content:""}.fa-paw:before{content:""}.fa-peace:before{content:""}.fa-pen:before{content:""}.fa-pen-alt:before,.fa-pen-clip:before{content:""}.fa-pen-fancy:before{content:""}.fa-pen-nib:before{content:""}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:""}.fa-edit:before,.fa-pen-to-square:before{content:""}.fa-pencil-alt:before,.fa-pencil:before{content:""}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:""}.fa-people-carry-box:before,.fa-people-carry:before{content:""}.fa-pepper-hot:before{content:""}.fa-percent:before,.fa-percentage:before{content:"%"}.fa-male:before,.fa-person:before{content:""}.fa-biking:before,.fa-person-biking:before{content:""}.fa-person-booth:before{content:""}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:""}.fa-female:before,.fa-person-dress:before{content:""}.fa-hiking:before,.fa-person-hiking:before{content:""}.fa-person-praying:before,.fa-pray:before{content:""}.fa-person-running:before,.fa-running:before{content:""}.fa-person-skating:before,.fa-skating:before{content:""}.fa-person-skiing:before,.fa-skiing:before{content:""}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:""}.fa-person-snowboarding:before,.fa-snowboarding:before{content:""}.fa-person-swimming:before,.fa-swimmer:before{content:""}.fa-person-walking:before,.fa-walking:before{content:""}.fa-blind:before,.fa-person-walking-with-cane:before{content:""}.fa-peseta-sign:before{content:""}.fa-peso-sign:before{content:""}.fa-phone:before{content:""}.fa-phone-alt:before,.fa-phone-flip:before{content:""}.fa-phone-slash:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-photo-film:before,.fa-photo-video:before{content:""}.fa-piggy-bank:before{content:""}.fa-pills:before{content:""}.fa-pizza-slice:before{content:""}.fa-place-of-worship:before{content:""}.fa-plane:before{content:""}.fa-plane-arrival:before{content:""}.fa-plane-departure:before{content:""}.fa-plane-slash:before{content:""}.fa-play:before{content:""}.fa-plug:before{content:""}.fa-add:before,.fa-plus:before{content:"+"}.fa-plus-minus:before{content:""}.fa-podcast:before{content:""}.fa-poo:before{content:""}.fa-poo-bolt:before,.fa-poo-storm:before{content:""}.fa-poop:before{content:""}.fa-power-off:before{content:""}.fa-prescription:before{content:""}.fa-prescription-bottle:before{content:""}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:""}.fa-print:before{content:""}.fa-pump-medical:before{content:""}.fa-pump-soap:before{content:""}.fa-puzzle-piece:before{content:""}.fa-q:before{content:"Q"}.fa-qrcode:before{content:""}.fa-question:before{content:"?"}.fa-quote-left-alt:before,.fa-quote-left:before{content:""}.fa-quote-right-alt:before,.fa-quote-right:before{content:""}.fa-r:before{content:"R"}.fa-radiation:before{content:""}.fa-rainbow:before{content:""}.fa-receipt:before{content:""}.fa-record-vinyl:before{content:""}.fa-ad:before,.fa-rectangle-ad:before{content:""}.fa-list-alt:before,.fa-rectangle-list:before{content:""}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-recycle:before{content:""}.fa-registered:before{content:""}.fa-repeat:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-republican:before{content:""}.fa-restroom:before{content:""}.fa-retweet:before{content:""}.fa-ribbon:before{content:""}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:""}.fa-exchange-alt:before,.fa-right-left:before{content:""}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:""}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:""}.fa-ring:before{content:""}.fa-road:before{content:""}.fa-robot:before{content:""}.fa-rocket:before{content:""}.fa-rotate:before,.fa-sync-alt:before{content:""}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:""}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:""}.fa-route:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:""}.fa-ruler:before{content:""}.fa-ruler-combined:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-ruler-vertical:before{content:""}.fa-rupee-sign:before,.fa-rupee:before{content:""}.fa-rupiah-sign:before{content:""}.fa-s:before{content:"S"}.fa-sailboat:before{content:""}.fa-satellite:before{content:""}.fa-satellite-dish:before{content:""}.fa-balance-scale:before,.fa-scale-balanced:before{content:""}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:""}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:""}.fa-school:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-screwdriver:before{content:""}.fa-screwdriver-wrench:before,.fa-tools:before{content:""}.fa-scroll:before{content:""}.fa-scroll-torah:before,.fa-torah:before{content:""}.fa-sd-card:before{content:""}.fa-section:before{content:""}.fa-seedling:before,.fa-sprout:before{content:""}.fa-server:before{content:""}.fa-shapes:before,.fa-triangle-circle-square:before{content:""}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:""}.fa-share-from-square:before,.fa-share-square:before{content:""}.fa-share-alt:before,.fa-share-nodes:before{content:""}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:""}.fa-shield:before{content:""}.fa-shield-alt:before,.fa-shield-blank:before{content:""}.fa-shield-virus:before{content:""}.fa-ship:before{content:""}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:""}.fa-shoe-prints:before{content:""}.fa-shop:before,.fa-store-alt:before{content:""}.fa-shop-slash:before,.fa-store-alt-slash:before{content:""}.fa-shower:before{content:""}.fa-shrimp:before{content:""}.fa-random:before,.fa-shuffle:before{content:""}.fa-shuttle-space:before,.fa-space-shuttle:before{content:""}.fa-sign-hanging:before,.fa-sign:before{content:""}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:""}.fa-signature:before{content:""}.fa-map-signs:before,.fa-signs-post:before{content:""}.fa-sim-card:before{content:""}.fa-sink:before{content:""}.fa-sitemap:before{content:""}.fa-skull:before{content:""}.fa-skull-crossbones:before{content:""}.fa-slash:before{content:""}.fa-sleigh:before{content:""}.fa-sliders-h:before,.fa-sliders:before{content:""}.fa-smog:before{content:""}.fa-smoking:before{content:""}.fa-snowflake:before{content:""}.fa-snowman:before{content:""}.fa-snowplow:before{content:""}.fa-soap:before{content:""}.fa-socks:before{content:""}.fa-solar-panel:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-spa:before{content:""}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:""}.fa-spell-check:before{content:""}.fa-spider:before{content:""}.fa-spinner:before{content:""}.fa-splotch:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-spray-can:before{content:""}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:""}.fa-square:before{content:""}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:""}.fa-caret-square-down:before,.fa-square-caret-down:before{content:""}.fa-caret-square-left:before,.fa-square-caret-left:before{content:""}.fa-caret-square-right:before,.fa-square-caret-right:before{content:""}.fa-caret-square-up:before,.fa-square-caret-up:before{content:""}.fa-check-square:before,.fa-square-check:before{content:""}.fa-envelope-square:before,.fa-square-envelope:before{content:""}.fa-square-full:before{content:""}.fa-h-square:before,.fa-square-h:before{content:""}.fa-minus-square:before,.fa-square-minus:before{content:""}.fa-parking:before,.fa-square-parking:before{content:""}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:""}.fa-phone-square:before,.fa-square-phone:before{content:""}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:""}.fa-plus-square:before,.fa-square-plus:before{content:""}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:""}.fa-poll:before,.fa-square-poll-vertical:before{content:""}.fa-square-root-alt:before,.fa-square-root-variable:before{content:""}.fa-rss-square:before,.fa-square-rss:before{content:""}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:""}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:""}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:""}.fa-stairs:before{content:""}.fa-stamp:before{content:""}.fa-star:before{content:""}.fa-star-and-crescent:before{content:""}.fa-star-half:before{content:""}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:""}.fa-star-of-david:before{content:""}.fa-star-of-life:before{content:""}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:""}.fa-stethoscope:before{content:""}.fa-stop:before{content:""}.fa-stopwatch:before{content:""}.fa-stopwatch-20:before{content:""}.fa-store:before{content:""}.fa-store-slash:before{content:""}.fa-street-view:before{content:""}.fa-strikethrough:before{content:""}.fa-stroopwafel:before{content:""}.fa-subscript:before{content:""}.fa-suitcase:before{content:""}.fa-medkit:before,.fa-suitcase-medical:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-sun:before{content:""}.fa-superscript:before{content:""}.fa-swatchbook:before{content:""}.fa-synagogue:before{content:""}.fa-syringe:before{content:""}.fa-t:before{content:"T"}.fa-table:before{content:""}.fa-table-cells:before,.fa-th:before{content:""}.fa-table-cells-large:before,.fa-th-large:before{content:""}.fa-columns:before,.fa-table-columns:before{content:""}.fa-table-list:before,.fa-th-list:before{content:""}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:""}.fa-tablet-android:before,.fa-tablet:before{content:""}.fa-tablet-button:before{content:""}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:""}.fa-tablets:before{content:""}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-tape:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-teeth:before{content:""}.fa-teeth-open:before{content:""}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:""}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-temperature-high:before{content:""}.fa-temperature-low:before{content:""}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-tenge-sign:before,.fa-tenge:before{content:""}.fa-terminal:before{content:""}.fa-text-height:before{content:""}.fa-remove-format:before,.fa-text-slash:before{content:""}.fa-text-width:before{content:""}.fa-thermometer:before{content:""}.fa-thumbs-down:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumb-tack:before,.fa-thumbtack:before{content:""}.fa-ticket:before{content:""}.fa-ticket-alt:before,.fa-ticket-simple:before{content:""}.fa-timeline:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-toilet:before{content:""}.fa-toilet-paper:before{content:""}.fa-toilet-paper-slash:before{content:""}.fa-toolbox:before{content:""}.fa-tooth:before{content:""}.fa-torii-gate:before{content:""}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:""}.fa-tractor:before{content:""}.fa-trademark:before{content:""}.fa-traffic-light:before{content:""}.fa-trailer:before{content:""}.fa-train:before{content:""}.fa-subway:before,.fa-train-subway:before{content:""}.fa-train-tram:before,.fa-tram:before{content:""}.fa-transgender-alt:before,.fa-transgender:before{content:""}.fa-trash:before{content:""}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:""}.fa-trash-alt:before,.fa-trash-can:before{content:""}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:""}.fa-tree:before{content:""}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:""}.fa-trophy:before{content:""}.fa-truck:before{content:""}.fa-shipping-fast:before,.fa-truck-fast:before{content:""}.fa-ambulance:before,.fa-truck-medical:before{content:""}.fa-truck-monster:before{content:""}.fa-truck-moving:before{content:""}.fa-truck-pickup:before{content:""}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:""}.fa-teletype:before,.fa-tty:before{content:""}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:""}.fa-level-down-alt:before,.fa-turn-down:before{content:""}.fa-level-up-alt:before,.fa-turn-up:before{content:""}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:""}.fa-u:before{content:"U"}.fa-umbrella:before{content:""}.fa-umbrella-beach:before{content:""}.fa-underline:before{content:""}.fa-universal-access:before{content:""}.fa-unlock:before{content:""}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:""}.fa-arrows-alt-v:before,.fa-up-down:before{content:""}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:""}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:""}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:""}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:""}.fa-upload:before{content:""}.fa-user:before{content:""}.fa-user-astronaut:before{content:""}.fa-user-check:before{content:""}.fa-user-clock:before{content:""}.fa-user-doctor:before,.fa-user-md:before{content:""}.fa-user-cog:before,.fa-user-gear:before{content:""}.fa-user-graduate:before{content:""}.fa-user-friends:before,.fa-user-group:before{content:""}.fa-user-injured:before{content:""}.fa-user-alt:before,.fa-user-large:before{content:""}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:""}.fa-user-lock:before{content:""}.fa-user-minus:before{content:""}.fa-user-ninja:before{content:""}.fa-user-nurse:before{content:""}.fa-user-edit:before,.fa-user-pen:before{content:""}.fa-user-plus:before{content:""}.fa-user-secret:before{content:""}.fa-user-shield:before{content:""}.fa-user-slash:before{content:""}.fa-user-tag:before{content:""}.fa-user-tie:before{content:""}.fa-user-times:before,.fa-user-xmark:before{content:""}.fa-users:before{content:""}.fa-users-cog:before,.fa-users-gear:before{content:""}.fa-users-slash:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-v:before{content:"V"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:""}.fa-vault:before{content:""}.fa-vector-square:before{content:""}.fa-venus:before{content:""}.fa-venus-double:before{content:""}.fa-venus-mars:before{content:""}.fa-vest:before{content:""}.fa-vest-patches:before{content:""}.fa-vial:before{content:""}.fa-vials:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-video-slash:before{content:""}.fa-vihara:before{content:""}.fa-virus:before{content:""}.fa-virus-covid:before{content:""}.fa-virus-covid-slash:before{content:""}.fa-virus-slash:before{content:""}.fa-viruses:before{content:""}.fa-voicemail:before{content:""}.fa-volleyball-ball:before,.fa-volleyball:before{content:""}.fa-volume-high:before,.fa-volume-up:before{content:""}.fa-volume-down:before,.fa-volume-low:before{content:""}.fa-volume-off:before{content:""}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:""}.fa-vr-cardboard:before{content:""}.fa-w:before{content:"W"}.fa-wallet:before{content:""}.fa-magic:before,.fa-wand-magic:before{content:""}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:""}.fa-wand-sparkles:before{content:""}.fa-warehouse:before{content:""}.fa-water:before{content:""}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:""}.fa-wave-square:before{content:""}.fa-weight-hanging:before{content:""}.fa-weight-scale:before,.fa-weight:before{content:""}.fa-wheelchair:before{content:""}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:""}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:""}.fa-wind:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-wine-bottle:before{content:""}.fa-wine-glass:before{content:""}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:""}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:""}.fa-wrench:before{content:""}.fa-x:before{content:"X"}.fa-x-ray:before{content:""}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:""}.fa-y:before{content:"Y"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:""}.fa-yin-yang:before{content:""}.fa-z:before{content:"Z"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}/*!
+@charset "UTF-8";.displaybutton[data-v-0f8aebee]{border:.1px solid var(--color-frame);padding:6px 8px;align-self:top;box-shadow:1px 3px #000;font-weight:700;font-size:var(--font-small)}.navigation[data-v-97154896]{display:flex;justify-content:space-between;padding:2px 10px;align-items:center;border-top:0px solid var(--color-menu);border-bottom:0px solid var(--color-menu)}.timedisplay[data-v-97154896]{font-size:var(--font-medium);font-weight:700;color:var(--color-input)}.navbar[data-v-97154896]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.graphbuttons[data-v-97154896],.cpbuttons[data-v-97154896]{display:flex;justify-content:left;align-items:center;gap:5px}.dropdown-menu[data-v-97154896]{background-color:var(--color-bg);color:var(--color-fg)}.dropdown-item[data-v-97154896]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.btn[data-v-97154896]{font-size:var(--font-medium);background-color:var(--color-bg);color:var(--color-fg)}.navbar-brand[data-v-97154896]{font-weight:700;color:var(--color-fg);font-size:var(--font-normal)}.nav-link[data-v-97154896]{color:var(--color-fg);border-color:red;font-size:var(--font-normal)}.navbar-toggler[data-v-97154896]{color:var(--color-fg);border-color:var(--color-bg)}.navbar-time[data-v-97154896]{font-weight:700;color:var(--color-menu);font-size:var(--font-normal)}.brand[data-v-97154896]{font-size:var(--font-medium);font-weight:700;color:var(--color-input)}.wb-widget[data-v-b83b615b]{background-color:var(--color-bg);border:.1px solid var(--color-frame);align-self:stretch;width:100%;border-radius:30px;display:grid;grid-template-columns:repeat(12,auto);gap:.2em;justify-content:stretch}.wb-subwidget[data-v-b83b615b]{border:0px solid var(--color-subframe);padding:var(--padding-widget);grid-column:span 12}.header[data-v-b83b615b]{grid-column:span 12;display:flex;justify-content:space-between;align-items:center}.titles[data-v-b83b615b]{display:flex;flex-direction:column}.title[data-v-b83b615b]{font-size:var(--font-extralarge);color:var(--color-title);font-weight:700;transform:scaleX(.9294)}.subtitle[data-v-b83b615b]{font-size:var(--font-medium)}.buttons[data-v-b83b615b]{grid-column:span 6}.powermeter{width:100%}.radiobutton[data-v-60f5d4c2]{border:0px solid var(--color-menu);opacity:1;font-size:var(--font-chargebutton)}.btn-outline-secondary.active[data-v-60f5d4c2]{background-color:var(--color-bg);border:0px solid var(--color-fg);opacity:.8}.btn-group[data-v-60f5d4c2]{border:.1px solid var(--color-menu);box-shadow:1px 3px #000}.rounded-pill[data-v-7fd067cd]{background-color:var(--color-menu)}.arrowButton[data-v-7fd067cd]{border:0}.datebadge[data-v-7fd067cd]{background-color:var(--color-bg);color:var(--color-menu);border:1px solid var(--color-menu);font-size:var(--font-small);font-weight:400}.arrowButton[data-v-7fd067cd],.fa-magnifying-glass[data-v-ba892fa4]{color:var(--color-menu)}.datebadge[data-v-ba892fa4]{background-color:var(--color-menu);color:var(--color-bg);font-size:var(--font-medium);font-weight:400}.energymeter[data-v-69785337]{width:100%}.modal-content[data-v-dff8d7c2]{background-color:var(--color-bg);border-color:var(--color-menu);box-shadow:3px 5px #000}.modal-footer[data-v-dff8d7c2],.modal-header[data-v-dff8d7c2],.modal-body[data-v-dff8d7c2]{background-color:var(--color-bg);color:var(--color-fg)}.modal-body[data-v-dff8d7c2]{border-color:var(--color-fg)}.modal-footer[data-v-dff8d7c2]{text-align:right}.modal-header .btn-close[data-v-dff8d7c2]{color:var(--color-fg);background-color:var(--color-bg);border:0px}.modal-title[data-v-dff8d7c2]{color:var(--color-fg)}.closebutton[data-v-dff8d7c2]{background:var(--color-fg)}.modal.fade .modal-dialog[data-v-dff8d7c2]{transition:transform 1s ease-out;transform:none;scale:.6}.modal.show .modal-dialog[data-v-dff8d7c2]{transition:transform .3s ease-in;transform:none;scale:1}.fa-circle-check[data-v-dff8d7c2]{color:var(--color-fg)}.padbutton[data-v-cc256a6f]{display:flex;align-items:center;justify-content:center;border-radius:50%;border:.1px dotted var(--color-menu);box-shadow:1px 3px #000}.digit[data-v-cc256a6f]{font-size:24px;font-weight:700;text-align:center;align-self:center;justify-self:center;display:flex}.numberpad[data-v-63c8fa5c]{display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:var(--color-bg)}.codedisplay[data-v-63c8fa5c]{display:flex;align-items:center;justify-content:center;font-size:24px;border:10px;color:var(--color-fg)}.numberentry[data-v-63c8fa5c]{display:grid;grid-template-columns:60px 60px 60px;grid-template-rows:65px 65px 65px 65px;grid-gap:5px}.statustable[data-v-6a182015]{display:grid;grid-template-columns:35% 65%;font-size:16px;color:#fff}.header[data-v-6a182015]{color:var(--color-fg)}.infotext[data-v-40d270c0]{font-size:var(--font-settings);color:var(--color-battery)}.item-icon[data-v-40d270c0]{color:var(--color-charging);font-size:var(--font-settings)}.titlecolumn[data-v-40d270c0]{color:var(--color-bg);font-size:var(--font-settings)}.selectors[data-v-40d270c0]{font-size:var(--font-settings)}.configitem[data-v-40d270c0]{font-size:var(--font-settings);align-items:baseline;justify-content:space-between}.rangewidget[data-v-0e01f92a],.rangeslider[data-v-0e01f92a]{width:100%}.minlabel[data-v-0e01f92a],.maxlabel[data-v-0e01f92a]{color:var(--color-menu);font-size:var(--font-settings)}.valuelabel[data-v-0e01f92a]{color:var(--color-fg);font-size:var(--font-settings)}.minusButton[data-v-0e01f92a],.plusButton[data-v-0e01f92a]{color:var(--color-menu);font-size:var(--font-extralarge)}.radiobutton[data-v-005a14a9]{border:.5px solid var(--color-fg);opacity:.5;font-size:14px}.btn-outline-secondary[data-v-005a14a9]{background-color:var(--color-bg)}.btn-outline-secondary.active[data-v-005a14a9]{background-color:var(--color-bg);border:1px solid var(--color-fg);box-shadow:0 .5rem 1rem #fff;font-weight:700;opacity:1}.instantsettings[data-v-02d97261]{justify-content:center;grid-gap:20px}.chargeConfigSelect[data-v-02d97261]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-02d97261]{color:var(--color-fg);font-size:var(--font-settings);font-weight:700}.form-switch .form-check-input[data-v-547e6de4]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='var(--color-fg)'/%3e%3c/svg%3e");background-color:var(--color-evu)}.form-switch .form-check-input[data-v-547e6de4]:checked{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='white'/%3e%3c/svg%3e");background-color:var(--color-pv)}.form-switch .form-check-input[data-v-547e6de4]{border:.1px dotted var(--color-fg);font-size:20px;box-shadow:2px 3px #000}.pvsettings[data-v-455524b6]{justify-content:center;grid-gap:20px}.chargeConfigSelect[data-v-455524b6]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-455524b6]{color:var(--color-pv)}.schedulestable[data-v-ff0b6341]{justify-content:center;gap:20px}.tableline[data-v-ff0b6341]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;font-size:var(--font-settings);margin-top:0;align-items:center}.tableheader[data-v-ff0b6341]{color:var(--color-menu);background-color:var(--color-bg);text-align:center;font-style:normal;font-size:var(--font-settings);font-weight:700}.subtitle[data-v-ff0b6341]{font-size:var(--font-large);font-weight:700}.warning[data-v-ff0b6341]{font-size:var(--font-large);font-weight:700;color:var(--color-evu)}.timeplantable[data-v-ace151e1]{justify-content:center;gap:20px}.subtitle[data-v-ace151e1]{font-size:var(--font-large);font-weight:700}.tableheader[data-v-ace151e1]{color:var(--color-menu);background-color:var(--color-bg);text-align:center;font-style:normal;font-size:var(--font-settings);font-weight:700}.tableline[data-v-ace151e1]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;font-size:var(--font-settings);margin-top:0;align-items:center}.warning[data-v-ace151e1]{font-size:var(--font-large);font-weight:700;color:var(--color-evu)}.settingslist[data-v-ed7593cf]{display:grid;grid-template-columns:repeat(12,1fr);justify-content:center;font-size:16px;color:var(--color-fg);background-color:var(--color-bg)}.status-string[data-v-ed7593cf]{font-size:var(--font-normal);font-style:italic;color:var(--color-battery)}.chargeConfigSelect[data-v-ed7593cf]{background:var(--color-bg);color:var(--color-fg)}.chargeModeOption[data-v-ed7593cf]{background:green;color:#00f}.nav-tabs .nav-link[data-v-ed7593cf]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-ed7593cf]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-ed7593cf]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:1px solid var(--color-menu)}.settingsheader[data-v-ed7593cf]{color:var(--color-charging);font-size:16px;font-weight:700}hr[data-v-ed7593cf]{color:var(--color-menu)}.grapharea[data-v-08931d61]{width:100%;grid-column:span 9}.controlarea[data-v-08931d61]{width:100%;grid-column:span 3}.subtitle[data-v-08931d61]{font-size:var(--font-settings);font-weight:regular}.priceinput[data-v-08931d61]{width:100%}.color-charging[data-v-08931d61]{color:var(--color-charging)}.fa-circle-check[data-v-08931d61]{color:var(--color-menu)}.settingsheader[data-v-08931d61]{color:var(--color-charging);font-size:16px;font-weight:700}.providername[data-v-08931d61]{color:var(--color-axis);font-size:16px}.settingslist[data-v-06d2c4a9]{display:grid;grid-template-columns:repeat(12,1fr);font-size:16px;color:var(--color-fg);background-color:var(--color-bg)}.nav-link[data-v-06d2c4a9]{font-size:14px;color:var(--color-fg)}.nav-tabs .nav-link.active[data-v-06d2c4a9]{background-color:var(--color-fg)}.fa-bolt[data-v-06d2c4a9],.fa-charging-station[data-v-06d2c4a9]{color:var(--color-charging)}.fa-bullseye[data-v-06d2c4a9]{color:var(--color-battery)}.fa-solar-panel[data-v-06d2c4a9]{color:var(--color-pv)}.fa-lock[data-v-06d2c4a9]{color:var(--color-evu)}.fa-coins[data-v-06d2c4a9]{color:var(--color-charging)}.heading[data-v-9215fd9b]{color:var(--color-menu);font-weight:400;text-align:center}.content[data-v-9215fd9b]{color:var(--color-fg);font-weight:700}.batIcon[data-v-fc156cd3]{color:var(--color-menu)}.titleline[data-v-17a63962]{justify-content:left}.chargemodes[data-v-17a63962]{grid-column:1 / 13;justify-self:center}.carname[data-v-17a63962]{color:var(--color-fg);font-size:var(--font-medium)}.maxprice[data-v-17a63962]{font-size:var(--font-medium);color:var(--color-fg)}.fa-star[data-v-17a63962]{color:var(--color-evu)}.fa-clock[data-v-795d5c8f]{color:var(--color-battery)}.fa-car[data-v-795d5c8f],.fa-ellipsis-vertical[data-v-795d5c8f],.fa-circle-check[data-v-795d5c8f]{color:var(--color-menu)}.fa-coins[data-v-795d5c8f]{color:var(--color-battery)}.fa-edit[data-v-795d5c8f],.targetCurrent[data-v-795d5c8f]{color:var(--color-menu)}.content[data-v-9f6c66b0]{display:grid;grid-template-columns:380px 420px;grid-template-rows:430px;overflow:hidden;min-width:0px}.leftside[data-v-9f6c66b0],.rightside[data-v-9f6c66b0]{min-width:0px;overflow:hidden}.settingstitle[data-v-9f6c66b0],.statustitle[data-v-9f6c66b0]{color:var(--color-fg)}.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius, .1em);border:var(--fa-border-width, .08em) var(--fa-border-style, solid) var(--fa-border-color, #eee);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) )}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration, 2s);animation-duration:var(--fa-animation-duration, 2s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, steps(8));animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle, none));transform:rotate(var(--fa-rotate-angle, none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0:before{content:"0"}.fa-1:before{content:"1"}.fa-2:before{content:"2"}.fa-3:before{content:"3"}.fa-4:before{content:"4"}.fa-5:before{content:"5"}.fa-6:before{content:"6"}.fa-7:before{content:"7"}.fa-8:before{content:"8"}.fa-9:before{content:"9"}.fa-a:before{content:"A"}.fa-address-book:before,.fa-contact-book:before{content:""}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:""}.fa-align-center:before{content:""}.fa-align-justify:before{content:""}.fa-align-left:before{content:""}.fa-align-right:before{content:""}.fa-anchor:before{content:""}.fa-angle-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-double-down:before,.fa-angles-down:before{content:""}.fa-angle-double-left:before,.fa-angles-left:before{content:""}.fa-angle-double-right:before,.fa-angles-right:before{content:""}.fa-angle-double-up:before,.fa-angles-up:before{content:""}.fa-ankh:before{content:""}.fa-apple-alt:before,.fa-apple-whole:before{content:""}.fa-archway:before{content:""}.fa-arrow-down:before{content:""}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:""}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:""}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:""}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:""}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:""}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:""}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:""}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:""}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:""}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:""}.fa-arrow-trend-down:before{content:""}.fa-arrow-trend-up:before{content:""}.fa-arrow-turn-down:before,.fa-level-down:before{content:""}.fa-arrow-turn-up:before,.fa-level-up:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:""}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:""}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:""}.fa-arrow-up-from-bracket:before{content:""}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:""}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:""}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:""}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:""}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:""}.fa-arrows-h:before,.fa-arrows-left-right:before{content:""}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:""}.fa-arrows-up-down:before,.fa-arrows-v:before{content:""}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:""}.fa-asterisk:before{content:"*"}.fa-at:before{content:"@"}.fa-atom:before{content:""}.fa-audio-description:before{content:""}.fa-austral-sign:before{content:""}.fa-award:before{content:""}.fa-b:before{content:"B"}.fa-baby:before{content:""}.fa-baby-carriage:before,.fa-carriage-baby:before{content:""}.fa-backward:before{content:""}.fa-backward-fast:before,.fa-fast-backward:before{content:""}.fa-backward-step:before,.fa-step-backward:before{content:""}.fa-bacon:before{content:""}.fa-bacteria:before{content:""}.fa-bacterium:before{content:""}.fa-bag-shopping:before,.fa-shopping-bag:before{content:""}.fa-bahai:before{content:""}.fa-baht-sign:before{content:""}.fa-ban:before,.fa-cancel:before{content:""}.fa-ban-smoking:before,.fa-smoking-ban:before{content:""}.fa-band-aid:before,.fa-bandage:before{content:""}.fa-barcode:before{content:""}.fa-bars:before,.fa-navicon:before{content:""}.fa-bars-progress:before,.fa-tasks-alt:before{content:""}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:""}.fa-baseball-ball:before,.fa-baseball:before{content:""}.fa-baseball-bat-ball:before{content:""}.fa-basket-shopping:before,.fa-shopping-basket:before{content:""}.fa-basketball-ball:before,.fa-basketball:before{content:""}.fa-bath:before,.fa-bathtub:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-half:before{content:""}.fa-battery-2:before,.fa-battery-quarter:before{content:""}.fa-battery-4:before,.fa-battery-three-quarters:before{content:""}.fa-bed:before{content:""}.fa-bed-pulse:before,.fa-procedures:before{content:""}.fa-beer-mug-empty:before,.fa-beer:before{content:""}.fa-bell:before{content:""}.fa-bell-concierge:before,.fa-concierge-bell:before{content:""}.fa-bell-slash:before{content:""}.fa-bezier-curve:before{content:""}.fa-bicycle:before{content:""}.fa-binoculars:before{content:""}.fa-biohazard:before{content:""}.fa-bitcoin-sign:before{content:""}.fa-blender:before{content:""}.fa-blender-phone:before{content:""}.fa-blog:before{content:""}.fa-bold:before{content:""}.fa-bolt:before,.fa-zap:before{content:""}.fa-bolt-lightning:before{content:""}.fa-bomb:before{content:""}.fa-bone:before{content:""}.fa-bong:before{content:""}.fa-book:before{content:""}.fa-atlas:before,.fa-book-atlas:before{content:""}.fa-bible:before,.fa-book-bible:before{content:""}.fa-book-journal-whills:before,.fa-journal-whills:before{content:""}.fa-book-medical:before{content:""}.fa-book-open:before{content:""}.fa-book-open-reader:before,.fa-book-reader:before{content:""}.fa-book-quran:before,.fa-quran:before{content:""}.fa-book-dead:before,.fa-book-skull:before{content:""}.fa-bookmark:before{content:""}.fa-border-all:before{content:""}.fa-border-none:before{content:""}.fa-border-style:before,.fa-border-top-left:before{content:""}.fa-bowling-ball:before{content:""}.fa-box:before{content:""}.fa-archive:before,.fa-box-archive:before{content:""}.fa-box-open:before{content:""}.fa-box-tissue:before{content:""}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:""}.fa-braille:before{content:""}.fa-brain:before{content:""}.fa-brazilian-real-sign:before{content:""}.fa-bread-slice:before{content:""}.fa-briefcase:before{content:""}.fa-briefcase-medical:before{content:""}.fa-broom:before{content:""}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:""}.fa-brush:before{content:""}.fa-bug:before{content:""}.fa-bug-slash:before{content:""}.fa-building:before{content:""}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:""}.fa-bullhorn:before{content:""}.fa-bullseye:before{content:""}.fa-burger:before,.fa-hamburger:before{content:""}.fa-bus:before{content:""}.fa-bus-alt:before,.fa-bus-simple:before{content:""}.fa-briefcase-clock:before,.fa-business-time:before{content:""}.fa-c:before{content:"C"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:""}.fa-calculator:before{content:""}.fa-calendar:before{content:""}.fa-calendar-check:before{content:""}.fa-calendar-day:before{content:""}.fa-calendar-alt:before,.fa-calendar-days:before{content:""}.fa-calendar-minus:before{content:""}.fa-calendar-plus:before{content:""}.fa-calendar-week:before{content:""}.fa-calendar-times:before,.fa-calendar-xmark:before{content:""}.fa-camera-alt:before,.fa-camera:before{content:""}.fa-camera-retro:before{content:""}.fa-camera-rotate:before{content:""}.fa-campground:before{content:""}.fa-candy-cane:before{content:""}.fa-cannabis:before{content:""}.fa-capsules:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-battery-car:before,.fa-car-battery:before{content:""}.fa-car-crash:before{content:""}.fa-car-alt:before,.fa-car-rear:before{content:""}.fa-car-side:before{content:""}.fa-caravan:before{content:""}.fa-caret-down:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-caret-up:before{content:""}.fa-carrot:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:""}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-shopping:before,.fa-shopping-cart:before{content:""}.fa-cash-register:before{content:""}.fa-cat:before{content:""}.fa-cedi-sign:before{content:""}.fa-cent-sign:before{content:""}.fa-certificate:before{content:""}.fa-chair:before{content:""}.fa-blackboard:before,.fa-chalkboard:before{content:""}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:""}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:""}.fa-charging-station:before{content:""}.fa-area-chart:before,.fa-chart-area:before{content:""}.fa-bar-chart:before,.fa-chart-bar:before{content:""}.fa-chart-column:before{content:""}.fa-chart-gantt:before{content:""}.fa-chart-line:before,.fa-line-chart:before{content:""}.fa-chart-pie:before,.fa-pie-chart:before{content:""}.fa-check:before{content:""}.fa-check-double:before{content:""}.fa-check-to-slot:before,.fa-vote-yea:before{content:""}.fa-cheese:before{content:""}.fa-chess:before{content:""}.fa-chess-bishop:before{content:""}.fa-chess-board:before{content:""}.fa-chess-king:before{content:""}.fa-chess-knight:before{content:""}.fa-chess-pawn:before{content:""}.fa-chess-queen:before{content:""}.fa-chess-rook:before{content:""}.fa-chevron-down:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-chevron-up:before{content:""}.fa-child:before{content:""}.fa-church:before{content:""}.fa-circle:before{content:""}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:""}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:""}.fa-check-circle:before,.fa-circle-check:before{content:""}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:""}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:""}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:""}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:""}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:""}.fa-circle-dot:before,.fa-dot-circle:before{content:""}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:""}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:""}.fa-circle-h:before,.fa-hospital-symbol:before{content:""}.fa-adjust:before,.fa-circle-half-stroke:before{content:""}.fa-circle-info:before,.fa-info-circle:before{content:""}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:""}.fa-circle-minus:before,.fa-minus-circle:before{content:""}.fa-circle-notch:before{content:""}.fa-circle-pause:before,.fa-pause-circle:before{content:""}.fa-circle-play:before,.fa-play-circle:before{content:""}.fa-circle-plus:before,.fa-plus-circle:before{content:""}.fa-circle-question:before,.fa-question-circle:before{content:""}.fa-circle-radiation:before,.fa-radiation-alt:before{content:""}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:""}.fa-circle-stop:before,.fa-stop-circle:before{content:""}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:""}.fa-circle-user:before,.fa-user-circle:before{content:""}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:""}.fa-city:before{content:""}.fa-clapperboard:before{content:""}.fa-clipboard:before{content:""}.fa-clipboard-check:before{content:""}.fa-clipboard-list:before{content:""}.fa-clock-four:before,.fa-clock:before{content:""}.fa-clock-rotate-left:before,.fa-history:before{content:""}.fa-clone:before{content:""}.fa-closed-captioning:before{content:""}.fa-cloud:before{content:""}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:""}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:""}.fa-cloud-meatball:before{content:""}.fa-cloud-moon:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-cloud-rain:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-cloud-sun:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-clover:before{content:""}.fa-code:before{content:""}.fa-code-branch:before{content:""}.fa-code-commit:before{content:""}.fa-code-compare:before{content:""}.fa-code-fork:before{content:""}.fa-code-merge:before{content:""}.fa-code-pull-request:before{content:""}.fa-coins:before{content:""}.fa-colon-sign:before{content:""}.fa-comment:before{content:""}.fa-comment-dollar:before{content:""}.fa-comment-dots:before,.fa-commenting:before{content:""}.fa-comment-medical:before{content:""}.fa-comment-slash:before{content:""}.fa-comment-sms:before,.fa-sms:before{content:""}.fa-comments:before{content:""}.fa-comments-dollar:before{content:""}.fa-compact-disc:before{content:""}.fa-compass:before{content:""}.fa-compass-drafting:before,.fa-drafting-compass:before{content:""}.fa-compress:before{content:""}.fa-computer-mouse:before,.fa-mouse:before{content:""}.fa-cookie:before{content:""}.fa-cookie-bite:before{content:""}.fa-copy:before{content:""}.fa-copyright:before{content:""}.fa-couch:before{content:""}.fa-credit-card-alt:before,.fa-credit-card:before{content:""}.fa-crop:before{content:""}.fa-crop-alt:before,.fa-crop-simple:before{content:""}.fa-cross:before{content:""}.fa-crosshairs:before{content:""}.fa-crow:before{content:""}.fa-crown:before{content:""}.fa-crutch:before{content:""}.fa-cruzeiro-sign:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-d:before{content:"D"}.fa-database:before{content:""}.fa-backspace:before,.fa-delete-left:before{content:""}.fa-democrat:before{content:""}.fa-desktop-alt:before,.fa-desktop:before{content:""}.fa-dharmachakra:before{content:""}.fa-diagram-next:before{content:""}.fa-diagram-predecessor:before{content:""}.fa-diagram-project:before,.fa-project-diagram:before{content:""}.fa-diagram-successor:before{content:""}.fa-diamond:before{content:""}.fa-diamond-turn-right:before,.fa-directions:before{content:""}.fa-dice:before{content:""}.fa-dice-d20:before{content:""}.fa-dice-d6:before{content:""}.fa-dice-five:before{content:""}.fa-dice-four:before{content:""}.fa-dice-one:before{content:""}.fa-dice-six:before{content:""}.fa-dice-three:before{content:""}.fa-dice-two:before{content:""}.fa-disease:before{content:""}.fa-divide:before{content:""}.fa-dna:before{content:""}.fa-dog:before{content:""}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"$"}.fa-dolly-box:before,.fa-dolly:before{content:""}.fa-dong-sign:before{content:""}.fa-door-closed:before{content:""}.fa-door-open:before{content:""}.fa-dove:before{content:""}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:""}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:""}.fa-download:before{content:""}.fa-dragon:before{content:""}.fa-draw-polygon:before{content:""}.fa-droplet:before,.fa-tint:before{content:""}.fa-droplet-slash:before,.fa-tint-slash:before{content:""}.fa-drum:before{content:""}.fa-drum-steelpan:before{content:""}.fa-drumstick-bite:before{content:""}.fa-dumbbell:before{content:""}.fa-dumpster:before{content:""}.fa-dumpster-fire:before{content:""}.fa-dungeon:before{content:""}.fa-e:before{content:"E"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:""}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:""}.fa-earth-africa:before,.fa-globe-africa:before{content:""}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:""}.fa-earth-asia:before,.fa-globe-asia:before{content:""}.fa-earth-europe:before,.fa-globe-europe:before{content:""}.fa-earth-oceania:before,.fa-globe-oceania:before{content:""}.fa-egg:before{content:""}.fa-eject:before{content:""}.fa-elevator:before{content:""}.fa-ellipsis-h:before,.fa-ellipsis:before{content:""}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:""}.fa-envelope:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-text:before{content:""}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:""}.fa-equals:before{content:"="}.fa-eraser:before{content:""}.fa-ethernet:before{content:""}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:""}.fa-exclamation:before{content:"!"}.fa-expand:before{content:""}.fa-eye:before{content:""}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:""}.fa-eye-low-vision:before,.fa-low-vision:before{content:""}.fa-eye-slash:before{content:""}.fa-f:before{content:"F"}.fa-angry:before,.fa-face-angry:before{content:""}.fa-dizzy:before,.fa-face-dizzy:before{content:""}.fa-face-flushed:before,.fa-flushed:before{content:""}.fa-face-frown:before,.fa-frown:before{content:""}.fa-face-frown-open:before,.fa-frown-open:before{content:""}.fa-face-grimace:before,.fa-grimace:before{content:""}.fa-face-grin:before,.fa-grin:before{content:""}.fa-face-grin-beam:before,.fa-grin-beam:before{content:""}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:""}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:""}.fa-face-grin-squint:before,.fa-grin-squint:before{content:""}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:""}.fa-face-grin-stars:before,.fa-grin-stars:before{content:""}.fa-face-grin-tears:before,.fa-grin-tears:before{content:""}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:""}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:""}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:""}.fa-face-grin-wide:before,.fa-grin-alt:before{content:""}.fa-face-grin-wink:before,.fa-grin-wink:before{content:""}.fa-face-kiss:before,.fa-kiss:before{content:""}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:""}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:""}.fa-face-laugh:before,.fa-laugh:before{content:""}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:""}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:""}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:""}.fa-face-meh:before,.fa-meh:before{content:""}.fa-face-meh-blank:before,.fa-meh-blank:before{content:""}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:""}.fa-face-sad-cry:before,.fa-sad-cry:before{content:""}.fa-face-sad-tear:before,.fa-sad-tear:before{content:""}.fa-face-smile:before,.fa-smile:before{content:""}.fa-face-smile-beam:before,.fa-smile-beam:before{content:""}.fa-face-smile-wink:before,.fa-smile-wink:before{content:""}.fa-face-surprise:before,.fa-surprise:before{content:""}.fa-face-tired:before,.fa-tired:before{content:""}.fa-fan:before{content:""}.fa-faucet:before{content:""}.fa-fax:before{content:""}.fa-feather:before{content:""}.fa-feather-alt:before,.fa-feather-pointed:before{content:""}.fa-file:before{content:""}.fa-file-arrow-down:before,.fa-file-download:before{content:""}.fa-file-arrow-up:before,.fa-file-upload:before{content:""}.fa-file-audio:before{content:""}.fa-file-code:before{content:""}.fa-file-contract:before{content:""}.fa-file-csv:before{content:""}.fa-file-excel:before{content:""}.fa-arrow-right-from-file:before,.fa-file-export:before{content:""}.fa-file-image:before{content:""}.fa-arrow-right-to-file:before,.fa-file-import:before{content:""}.fa-file-invoice:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:""}.fa-file-medical:before{content:""}.fa-file-pdf:before{content:""}.fa-file-powerpoint:before{content:""}.fa-file-prescription:before{content:""}.fa-file-signature:before{content:""}.fa-file-video:before{content:""}.fa-file-medical-alt:before,.fa-file-waveform:before{content:""}.fa-file-word:before{content:""}.fa-file-archive:before,.fa-file-zipper:before{content:""}.fa-fill:before{content:""}.fa-fill-drip:before{content:""}.fa-film:before{content:""}.fa-filter:before{content:""}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:""}.fa-filter-circle-xmark:before{content:""}.fa-fingerprint:before{content:""}.fa-fire:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:""}.fa-burn:before,.fa-fire-flame-simple:before{content:""}.fa-fish:before{content:""}.fa-flag:before{content:""}.fa-flag-checkered:before{content:""}.fa-flag-usa:before{content:""}.fa-flask:before{content:""}.fa-floppy-disk:before,.fa-save:before{content:""}.fa-florin-sign:before{content:""}.fa-folder:before{content:""}.fa-folder-minus:before{content:""}.fa-folder-open:before{content:""}.fa-folder-plus:before{content:""}.fa-folder-tree:before{content:""}.fa-font:before{content:""}.fa-football-ball:before,.fa-football:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before,.fa-forward-fast:before{content:""}.fa-forward-step:before,.fa-step-forward:before{content:""}.fa-franc-sign:before{content:""}.fa-frog:before{content:""}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:""}.fa-g:before{content:"G"}.fa-gamepad:before{content:""}.fa-gas-pump:before{content:""}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:""}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:""}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:""}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-gem:before{content:""}.fa-genderless:before{content:""}.fa-ghost:before{content:""}.fa-gift:before{content:""}.fa-gifts:before{content:""}.fa-glasses:before{content:""}.fa-globe:before{content:""}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:""}.fa-gopuram:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-greater-than:before{content:">"}.fa-greater-than-equal:before{content:""}.fa-grip-horizontal:before,.fa-grip:before{content:""}.fa-grip-lines:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-grip-vertical:before{content:""}.fa-guarani-sign:before{content:""}.fa-guitar:before{content:""}.fa-gun:before{content:""}.fa-h:before{content:"H"}.fa-hammer:before{content:""}.fa-hamsa:before{content:""}.fa-hand-paper:before,.fa-hand:before{content:""}.fa-hand-back-fist:before,.fa-hand-rock:before{content:""}.fa-allergies:before,.fa-hand-dots:before{content:""}.fa-fist-raised:before,.fa-hand-fist:before{content:""}.fa-hand-holding:before{content:""}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:""}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-hand-holding-medical:before{content:""}.fa-hand-lizard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-hand-peace:before{content:""}.fa-hand-point-down:before{content:""}.fa-hand-point-left:before{content:""}.fa-hand-point-right:before{content:""}.fa-hand-point-up:before{content:""}.fa-hand-pointer:before{content:""}.fa-hand-scissors:before{content:""}.fa-hand-sparkles:before{content:""}.fa-hand-spock:before{content:""}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:""}.fa-hands-bubbles:before,.fa-hands-wash:before{content:""}.fa-hands-clapping:before{content:""}.fa-hands-holding:before{content:""}.fa-hands-praying:before,.fa-praying-hands:before{content:""}.fa-handshake:before{content:""}.fa-hands-helping:before,.fa-handshake-angle:before{content:""}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:""}.fa-handshake-slash:before{content:""}.fa-hanukiah:before{content:""}.fa-hard-drive:before,.fa-hdd:before{content:""}.fa-hashtag:before{content:"#"}.fa-hat-cowboy:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-hat-wizard:before{content:""}.fa-head-side-cough:before{content:""}.fa-head-side-cough-slash:before{content:""}.fa-head-side-mask:before{content:""}.fa-head-side-virus:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-headphones:before{content:""}.fa-headphones-alt:before,.fa-headphones-simple:before{content:""}.fa-headset:before{content:""}.fa-heart:before{content:""}.fa-heart-broken:before,.fa-heart-crack:before{content:""}.fa-heart-pulse:before,.fa-heartbeat:before{content:""}.fa-helicopter:before{content:""}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:""}.fa-highlighter:before{content:""}.fa-hippo:before{content:""}.fa-hockey-puck:before{content:""}.fa-holly-berry:before{content:""}.fa-horse:before{content:""}.fa-horse-head:before{content:""}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:""}.fa-hospital-user:before{content:""}.fa-hot-tub-person:before,.fa-hot-tub:before{content:""}.fa-hotdog:before{content:""}.fa-hotel:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before,.fa-hourglass:before{content:""}.fa-hourglass-empty:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:""}.fa-home-lg:before,.fa-house-chimney:before{content:""}.fa-house-chimney-crack:before,.fa-house-damage:before{content:""}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:""}.fa-house-chimney-user:before{content:""}.fa-house-chimney-window:before{content:""}.fa-house-crack:before{content:""}.fa-house-laptop:before,.fa-laptop-house:before{content:""}.fa-house-medical:before{content:""}.fa-home-user:before,.fa-house-user:before{content:""}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:""}.fa-i:before{content:"I"}.fa-i-cursor:before{content:""}.fa-ice-cream:before{content:""}.fa-icicles:before{content:""}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-id-card-alt:before,.fa-id-card-clip:before{content:""}.fa-igloo:before{content:""}.fa-image:before{content:""}.fa-image-portrait:before,.fa-portrait:before{content:""}.fa-images:before{content:""}.fa-inbox:before{content:""}.fa-indent:before{content:""}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:""}.fa-industry:before{content:""}.fa-infinity:before{content:""}.fa-info:before{content:""}.fa-italic:before{content:""}.fa-j:before{content:"J"}.fa-jedi:before{content:""}.fa-fighter-jet:before,.fa-jet-fighter:before{content:""}.fa-joint:before{content:""}.fa-k:before{content:"K"}.fa-kaaba:before{content:""}.fa-key:before{content:""}.fa-keyboard:before{content:""}.fa-khanda:before{content:""}.fa-kip-sign:before{content:""}.fa-first-aid:before,.fa-kit-medical:before{content:""}.fa-kiwi-bird:before{content:""}.fa-l:before{content:"L"}.fa-landmark:before{content:""}.fa-language:before{content:""}.fa-laptop:before{content:""}.fa-laptop-code:before{content:""}.fa-laptop-medical:before{content:""}.fa-lari-sign:before{content:""}.fa-layer-group:before{content:""}.fa-leaf:before{content:""}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:""}.fa-arrows-alt-h:before,.fa-left-right:before{content:""}.fa-lemon:before{content:""}.fa-less-than:before{content:"<"}.fa-less-than-equal:before{content:""}.fa-life-ring:before{content:""}.fa-lightbulb:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:""}.fa-lira-sign:before{content:""}.fa-list-squares:before,.fa-list:before{content:""}.fa-list-check:before,.fa-tasks:before{content:""}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:""}.fa-list-dots:before,.fa-list-ul:before{content:""}.fa-litecoin-sign:before{content:""}.fa-location-arrow:before{content:""}.fa-location-crosshairs:before,.fa-location:before{content:""}.fa-location-dot:before,.fa-map-marker-alt:before{content:""}.fa-location-pin:before,.fa-map-marker:before{content:""}.fa-lock:before{content:""}.fa-lock-open:before{content:""}.fa-lungs:before{content:""}.fa-lungs-virus:before{content:""}.fa-m:before{content:"M"}.fa-magnet:before{content:""}.fa-magnifying-glass:before,.fa-search:before{content:""}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:""}.fa-magnifying-glass-location:before,.fa-search-location:before{content:""}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:""}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:""}.fa-manat-sign:before{content:""}.fa-map:before{content:""}.fa-map-location:before,.fa-map-marked:before{content:""}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:""}.fa-map-pin:before{content:""}.fa-marker:before{content:""}.fa-mars:before{content:""}.fa-mars-and-venus:before{content:""}.fa-mars-double:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:""}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:""}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:""}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:""}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:""}.fa-mask:before{content:""}.fa-mask-face:before{content:""}.fa-masks-theater:before,.fa-theater-masks:before{content:""}.fa-expand-arrows-alt:before,.fa-maximize:before{content:""}.fa-medal:before{content:""}.fa-memory:before{content:""}.fa-menorah:before{content:""}.fa-mercury:before{content:""}.fa-comment-alt:before,.fa-message:before{content:""}.fa-meteor:before{content:""}.fa-microchip:before{content:""}.fa-microphone:before{content:""}.fa-microphone-alt:before,.fa-microphone-lines:before{content:""}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:""}.fa-microphone-slash:before{content:""}.fa-microscope:before{content:""}.fa-mill-sign:before{content:""}.fa-compress-arrows-alt:before,.fa-minimize:before{content:""}.fa-minus:before,.fa-subtract:before{content:""}.fa-mitten:before{content:""}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-mobile-button:before{content:""}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:""}.fa-money-bill:before{content:""}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:""}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:""}.fa-money-bill-wave:before{content:""}.fa-money-check:before{content:""}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:""}.fa-monument:before{content:""}.fa-moon:before{content:""}.fa-mortar-pestle:before{content:""}.fa-mosque:before{content:""}.fa-motorcycle:before{content:""}.fa-mountain:before{content:""}.fa-mug-hot:before{content:""}.fa-coffee:before,.fa-mug-saucer:before{content:""}.fa-music:before{content:""}.fa-n:before{content:"N"}.fa-naira-sign:before{content:""}.fa-network-wired:before{content:""}.fa-neuter:before{content:""}.fa-newspaper:before{content:""}.fa-not-equal:before{content:""}.fa-note-sticky:before,.fa-sticky-note:before{content:""}.fa-notes-medical:before{content:""}.fa-o:before{content:"O"}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-oil-can:before{content:""}.fa-om:before{content:""}.fa-otter:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-p:before{content:"P"}.fa-pager:before{content:""}.fa-paint-roller:before{content:""}.fa-paint-brush:before,.fa-paintbrush:before{content:""}.fa-palette:before{content:""}.fa-pallet:before{content:""}.fa-panorama:before{content:""}.fa-paper-plane:before{content:""}.fa-paperclip:before{content:""}.fa-parachute-box:before{content:""}.fa-paragraph:before{content:""}.fa-passport:before{content:""}.fa-file-clipboard:before,.fa-paste:before{content:""}.fa-pause:before{content:""}.fa-paw:before{content:""}.fa-peace:before{content:""}.fa-pen:before{content:""}.fa-pen-alt:before,.fa-pen-clip:before{content:""}.fa-pen-fancy:before{content:""}.fa-pen-nib:before{content:""}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:""}.fa-edit:before,.fa-pen-to-square:before{content:""}.fa-pencil-alt:before,.fa-pencil:before{content:""}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:""}.fa-people-carry-box:before,.fa-people-carry:before{content:""}.fa-pepper-hot:before{content:""}.fa-percent:before,.fa-percentage:before{content:"%"}.fa-male:before,.fa-person:before{content:""}.fa-biking:before,.fa-person-biking:before{content:""}.fa-person-booth:before{content:""}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:""}.fa-female:before,.fa-person-dress:before{content:""}.fa-hiking:before,.fa-person-hiking:before{content:""}.fa-person-praying:before,.fa-pray:before{content:""}.fa-person-running:before,.fa-running:before{content:""}.fa-person-skating:before,.fa-skating:before{content:""}.fa-person-skiing:before,.fa-skiing:before{content:""}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:""}.fa-person-snowboarding:before,.fa-snowboarding:before{content:""}.fa-person-swimming:before,.fa-swimmer:before{content:""}.fa-person-walking:before,.fa-walking:before{content:""}.fa-blind:before,.fa-person-walking-with-cane:before{content:""}.fa-peseta-sign:before{content:""}.fa-peso-sign:before{content:""}.fa-phone:before{content:""}.fa-phone-alt:before,.fa-phone-flip:before{content:""}.fa-phone-slash:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-photo-film:before,.fa-photo-video:before{content:""}.fa-piggy-bank:before{content:""}.fa-pills:before{content:""}.fa-pizza-slice:before{content:""}.fa-place-of-worship:before{content:""}.fa-plane:before{content:""}.fa-plane-arrival:before{content:""}.fa-plane-departure:before{content:""}.fa-plane-slash:before{content:""}.fa-play:before{content:""}.fa-plug:before{content:""}.fa-add:before,.fa-plus:before{content:"+"}.fa-plus-minus:before{content:""}.fa-podcast:before{content:""}.fa-poo:before{content:""}.fa-poo-bolt:before,.fa-poo-storm:before{content:""}.fa-poop:before{content:""}.fa-power-off:before{content:""}.fa-prescription:before{content:""}.fa-prescription-bottle:before{content:""}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:""}.fa-print:before{content:""}.fa-pump-medical:before{content:""}.fa-pump-soap:before{content:""}.fa-puzzle-piece:before{content:""}.fa-q:before{content:"Q"}.fa-qrcode:before{content:""}.fa-question:before{content:"?"}.fa-quote-left-alt:before,.fa-quote-left:before{content:""}.fa-quote-right-alt:before,.fa-quote-right:before{content:""}.fa-r:before{content:"R"}.fa-radiation:before{content:""}.fa-rainbow:before{content:""}.fa-receipt:before{content:""}.fa-record-vinyl:before{content:""}.fa-ad:before,.fa-rectangle-ad:before{content:""}.fa-list-alt:before,.fa-rectangle-list:before{content:""}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-recycle:before{content:""}.fa-registered:before{content:""}.fa-repeat:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-republican:before{content:""}.fa-restroom:before{content:""}.fa-retweet:before{content:""}.fa-ribbon:before{content:""}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:""}.fa-exchange-alt:before,.fa-right-left:before{content:""}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:""}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:""}.fa-ring:before{content:""}.fa-road:before{content:""}.fa-robot:before{content:""}.fa-rocket:before{content:""}.fa-rotate:before,.fa-sync-alt:before{content:""}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:""}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:""}.fa-route:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:""}.fa-ruler:before{content:""}.fa-ruler-combined:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-ruler-vertical:before{content:""}.fa-rupee-sign:before,.fa-rupee:before{content:""}.fa-rupiah-sign:before{content:""}.fa-s:before{content:"S"}.fa-sailboat:before{content:""}.fa-satellite:before{content:""}.fa-satellite-dish:before{content:""}.fa-balance-scale:before,.fa-scale-balanced:before{content:""}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:""}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:""}.fa-school:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-screwdriver:before{content:""}.fa-screwdriver-wrench:before,.fa-tools:before{content:""}.fa-scroll:before{content:""}.fa-scroll-torah:before,.fa-torah:before{content:""}.fa-sd-card:before{content:""}.fa-section:before{content:""}.fa-seedling:before,.fa-sprout:before{content:""}.fa-server:before{content:""}.fa-shapes:before,.fa-triangle-circle-square:before{content:""}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:""}.fa-share-from-square:before,.fa-share-square:before{content:""}.fa-share-alt:before,.fa-share-nodes:before{content:""}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:""}.fa-shield:before{content:""}.fa-shield-alt:before,.fa-shield-blank:before{content:""}.fa-shield-virus:before{content:""}.fa-ship:before{content:""}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:""}.fa-shoe-prints:before{content:""}.fa-shop:before,.fa-store-alt:before{content:""}.fa-shop-slash:before,.fa-store-alt-slash:before{content:""}.fa-shower:before{content:""}.fa-shrimp:before{content:""}.fa-random:before,.fa-shuffle:before{content:""}.fa-shuttle-space:before,.fa-space-shuttle:before{content:""}.fa-sign-hanging:before,.fa-sign:before{content:""}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:""}.fa-signature:before{content:""}.fa-map-signs:before,.fa-signs-post:before{content:""}.fa-sim-card:before{content:""}.fa-sink:before{content:""}.fa-sitemap:before{content:""}.fa-skull:before{content:""}.fa-skull-crossbones:before{content:""}.fa-slash:before{content:""}.fa-sleigh:before{content:""}.fa-sliders-h:before,.fa-sliders:before{content:""}.fa-smog:before{content:""}.fa-smoking:before{content:""}.fa-snowflake:before{content:""}.fa-snowman:before{content:""}.fa-snowplow:before{content:""}.fa-soap:before{content:""}.fa-socks:before{content:""}.fa-solar-panel:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-spa:before{content:""}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:""}.fa-spell-check:before{content:""}.fa-spider:before{content:""}.fa-spinner:before{content:""}.fa-splotch:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-spray-can:before{content:""}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:""}.fa-square:before{content:""}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:""}.fa-caret-square-down:before,.fa-square-caret-down:before{content:""}.fa-caret-square-left:before,.fa-square-caret-left:before{content:""}.fa-caret-square-right:before,.fa-square-caret-right:before{content:""}.fa-caret-square-up:before,.fa-square-caret-up:before{content:""}.fa-check-square:before,.fa-square-check:before{content:""}.fa-envelope-square:before,.fa-square-envelope:before{content:""}.fa-square-full:before{content:""}.fa-h-square:before,.fa-square-h:before{content:""}.fa-minus-square:before,.fa-square-minus:before{content:""}.fa-parking:before,.fa-square-parking:before{content:""}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:""}.fa-phone-square:before,.fa-square-phone:before{content:""}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:""}.fa-plus-square:before,.fa-square-plus:before{content:""}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:""}.fa-poll:before,.fa-square-poll-vertical:before{content:""}.fa-square-root-alt:before,.fa-square-root-variable:before{content:""}.fa-rss-square:before,.fa-square-rss:before{content:""}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:""}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:""}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:""}.fa-stairs:before{content:""}.fa-stamp:before{content:""}.fa-star:before{content:""}.fa-star-and-crescent:before{content:""}.fa-star-half:before{content:""}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:""}.fa-star-of-david:before{content:""}.fa-star-of-life:before{content:""}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:""}.fa-stethoscope:before{content:""}.fa-stop:before{content:""}.fa-stopwatch:before{content:""}.fa-stopwatch-20:before{content:""}.fa-store:before{content:""}.fa-store-slash:before{content:""}.fa-street-view:before{content:""}.fa-strikethrough:before{content:""}.fa-stroopwafel:before{content:""}.fa-subscript:before{content:""}.fa-suitcase:before{content:""}.fa-medkit:before,.fa-suitcase-medical:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-sun:before{content:""}.fa-superscript:before{content:""}.fa-swatchbook:before{content:""}.fa-synagogue:before{content:""}.fa-syringe:before{content:""}.fa-t:before{content:"T"}.fa-table:before{content:""}.fa-table-cells:before,.fa-th:before{content:""}.fa-table-cells-large:before,.fa-th-large:before{content:""}.fa-columns:before,.fa-table-columns:before{content:""}.fa-table-list:before,.fa-th-list:before{content:""}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:""}.fa-tablet-android:before,.fa-tablet:before{content:""}.fa-tablet-button:before{content:""}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:""}.fa-tablets:before{content:""}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-tape:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-teeth:before{content:""}.fa-teeth-open:before{content:""}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:""}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-temperature-high:before{content:""}.fa-temperature-low:before{content:""}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-tenge-sign:before,.fa-tenge:before{content:""}.fa-terminal:before{content:""}.fa-text-height:before{content:""}.fa-remove-format:before,.fa-text-slash:before{content:""}.fa-text-width:before{content:""}.fa-thermometer:before{content:""}.fa-thumbs-down:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumb-tack:before,.fa-thumbtack:before{content:""}.fa-ticket:before{content:""}.fa-ticket-alt:before,.fa-ticket-simple:before{content:""}.fa-timeline:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-toilet:before{content:""}.fa-toilet-paper:before{content:""}.fa-toilet-paper-slash:before{content:""}.fa-toolbox:before{content:""}.fa-tooth:before{content:""}.fa-torii-gate:before{content:""}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:""}.fa-tractor:before{content:""}.fa-trademark:before{content:""}.fa-traffic-light:before{content:""}.fa-trailer:before{content:""}.fa-train:before{content:""}.fa-subway:before,.fa-train-subway:before{content:""}.fa-train-tram:before,.fa-tram:before{content:""}.fa-transgender-alt:before,.fa-transgender:before{content:""}.fa-trash:before{content:""}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:""}.fa-trash-alt:before,.fa-trash-can:before{content:""}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:""}.fa-tree:before{content:""}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:""}.fa-trophy:before{content:""}.fa-truck:before{content:""}.fa-shipping-fast:before,.fa-truck-fast:before{content:""}.fa-ambulance:before,.fa-truck-medical:before{content:""}.fa-truck-monster:before{content:""}.fa-truck-moving:before{content:""}.fa-truck-pickup:before{content:""}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:""}.fa-teletype:before,.fa-tty:before{content:""}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:""}.fa-level-down-alt:before,.fa-turn-down:before{content:""}.fa-level-up-alt:before,.fa-turn-up:before{content:""}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:""}.fa-u:before{content:"U"}.fa-umbrella:before{content:""}.fa-umbrella-beach:before{content:""}.fa-underline:before{content:""}.fa-universal-access:before{content:""}.fa-unlock:before{content:""}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:""}.fa-arrows-alt-v:before,.fa-up-down:before{content:""}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:""}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:""}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:""}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:""}.fa-upload:before{content:""}.fa-user:before{content:""}.fa-user-astronaut:before{content:""}.fa-user-check:before{content:""}.fa-user-clock:before{content:""}.fa-user-doctor:before,.fa-user-md:before{content:""}.fa-user-cog:before,.fa-user-gear:before{content:""}.fa-user-graduate:before{content:""}.fa-user-friends:before,.fa-user-group:before{content:""}.fa-user-injured:before{content:""}.fa-user-alt:before,.fa-user-large:before{content:""}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:""}.fa-user-lock:before{content:""}.fa-user-minus:before{content:""}.fa-user-ninja:before{content:""}.fa-user-nurse:before{content:""}.fa-user-edit:before,.fa-user-pen:before{content:""}.fa-user-plus:before{content:""}.fa-user-secret:before{content:""}.fa-user-shield:before{content:""}.fa-user-slash:before{content:""}.fa-user-tag:before{content:""}.fa-user-tie:before{content:""}.fa-user-times:before,.fa-user-xmark:before{content:""}.fa-users:before{content:""}.fa-users-cog:before,.fa-users-gear:before{content:""}.fa-users-slash:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-v:before{content:"V"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:""}.fa-vault:before{content:""}.fa-vector-square:before{content:""}.fa-venus:before{content:""}.fa-venus-double:before{content:""}.fa-venus-mars:before{content:""}.fa-vest:before{content:""}.fa-vest-patches:before{content:""}.fa-vial:before{content:""}.fa-vials:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-video-slash:before{content:""}.fa-vihara:before{content:""}.fa-virus:before{content:""}.fa-virus-covid:before{content:""}.fa-virus-covid-slash:before{content:""}.fa-virus-slash:before{content:""}.fa-viruses:before{content:""}.fa-voicemail:before{content:""}.fa-volleyball-ball:before,.fa-volleyball:before{content:""}.fa-volume-high:before,.fa-volume-up:before{content:""}.fa-volume-down:before,.fa-volume-low:before{content:""}.fa-volume-off:before{content:""}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:""}.fa-vr-cardboard:before{content:""}.fa-w:before{content:"W"}.fa-wallet:before{content:""}.fa-magic:before,.fa-wand-magic:before{content:""}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:""}.fa-wand-sparkles:before{content:""}.fa-warehouse:before{content:""}.fa-water:before{content:""}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:""}.fa-wave-square:before{content:""}.fa-weight-hanging:before{content:""}.fa-weight-scale:before,.fa-weight:before{content:""}.fa-wheelchair:before{content:""}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:""}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:""}.fa-wind:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-wine-bottle:before{content:""}.fa-wine-glass:before{content:""}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:""}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:""}.fa-wrench:before{content:""}.fa-x:before{content:"X"}.fa-x-ray:before{content:""}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:""}.fa-y:before{content:"Y"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:""}.fa-yin-yang:before{content:""}.fa-z:before{content:"Z"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}/*!
  * Font Awesome Free 6.0.0 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
  * Copyright 2022 Fonticons, Inc.
@@ -6,4 +6,4 @@
  * Bootstrap  v5.3.3 (https://getbootstrap.com/)
  * Copyright 2011-2024 The Bootstrap Authors
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, .75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, .5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, .175);--bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm:0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, .175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, .075);--bs-focus-ring-width:.25rem;--bs-focus-ring-opacity:.25;--bs-focus-ring-color:rgba(13, 110, 253, .25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, .75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, .5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, .15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), .05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), .1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), .075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label:after{position:absolute;top:1rem;right:.375rem;bottom:1rem;left:.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control-plaintext~label:after,.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-select~label:after{position:absolute;top:1rem;right:.375rem;bottom:1rem;left:.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label:after,.form-floating>:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3.75rem + 1.5em)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3.75rem + 1.5em)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:.75rem;--bs-btn-padding-y:.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, .15),0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity:.65;--bs-btn-focus-box-shadow:0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:.25rem;--bs-btn-padding-x:.5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:.5rem;--bs-dropdown-spacer:.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, .15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:.5rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:.25rem;--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, .55);--bs-navbar-hover-color:rgba(255, 255, 255, .75);--bs-navbar-disabled-color:rgba(255, 255, 255, .25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow:0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-flush>.accordion-item>.accordion-collapse{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:.75rem;--bs-pagination-padding-y:.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 .25rem rgba(13, 110, 253, .25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:.5rem;--bs-pagination-padding-y:.25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:.65em;--bs-badge-padding-y:.35em;--bs-badge-font-size:.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:.5;--bs-btn-close-hover-opacity:.75;--bs-btn-close-focus-shadow:0 0 0 .25rem rgba(13, 110, 253, .25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white,[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:.75rem;--bs-toast-padding-y:.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), .85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), .85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:.5rem;--bs-tooltip-padding-y:.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:.9;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:after,.popover .popover-arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-top>.popover-arrow:before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-end>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-start>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translate(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-border-width:.25em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform .3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin:calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,#000c,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-underline-offset:.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:.1}.border-opacity-25{--bs-border-opacity:.25}.border-opacity-50{--bs-border-opacity:.5}.border-opacity-75{--bs-border-opacity:.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:#00000080!important}.text-white-50{--bs-text-opacity:1;color:#ffffff80!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:.25}.text-opacity-50{--bs-text-opacity:.5}.text-opacity-75{--bs-text-opacity:.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity:.1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity:.25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity:.5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity:.75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:.1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:.25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:.5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:.75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:.1}.bg-opacity-25{--bs-bg-opacity:.25}.bg-opacity-50{--bs-bg-opacity:.5}.bg-opacity-75{--bs-bg-opacity:.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}html{min-height:100%;min-width:100%}body{color:var(--color-fg);background:var(--color-bg);font-family:San Francisco,Arial,Liberation sans,sans-serif}body>.container{padding:55px 15px 0}html{font-size:12px}html .settingscolumn{grid-column:span 12}.verySmallTextSize{font-size:var(--font-verysmall)}.smallTextSize{font-size:var(--font-small)}.mediumTextSize{font-size:var(--font-medium)}.regularTextSize{font-size:var(--font-normal)}.largeTextSize,.buttonTextSize{font-size:var(--font-large)}h3{font-size:var(--font-extralarge);color:var(--color-title);font-weight:700;transform:scaleX(.9294)}h4{color:var(--color-axis)}body>.container-fluid{padding:55px 15px 0}.tablecell{font-size:var(--font-normal);line-height:1rem;vertical-align:middle;padding:0;background-color:var(--color-bg)}.maxPrice{text-align:center}:root{--fontCol: rgba(160, 160, 160, .82);--gridCol: rgba(160, 160, 160, .82);--xgridCol: rgba(160, 160, 160, .82);--tickCol: rgba(160, 160, 160, .82);--evuCol: rgba(178, 34, 34, 1);--color-switchRed: #d12020;--color-switchGreen: #4db662;--color-switchBlue: steelblue;--color-cp0: #6baed6;--color-cp1: #4292c6;--color-cp2: #2171b5;--color-cp3: #9ecae1;--color-cp4: #c6dbef;--color-cp5: #deebf7;--color-cp6: #08519c;--color-cp7: #6baed6;--color-evu: firebrick;--color-pv: #33a02c;--color-house: #7f7f7f;--color-charging: #1f78b4;--color-export: #b2df8a;--color-battery: goldenrod;--color-input: lightgrey;--font-normal: 1.4rem;--font-large: 1.6rem;--font-medium: 1.2rem;--font-small: 1rem;--font-verysmall: .7rem;--font-extralarge: 1.6rem;--font-settings: 16px;--font-chargebutton: 16px}.theme-light{--color-bg: white;--color-axis: gray;--color-grid: #bbbbbb;--color-menu: gray;--color-frame: white;--color-subframe: lightgrey;--color-fg: black;--color-scale: lightgrey;--color-title: rgba(0, 0, 0, .644);--padding-widget: 5px;--fontCol: rgba(255, 255, 255, .82);--gridCol: rgba(255, 255, 255, .82);--xgridCol: rgba(255, 255, 255, .1);--tickCol: rgba(255, 255, 255, .82);--evuCol: rgba(255, 0, 0, .7)}.theme-blue{--color-bg: midnightblue;--color-axis: steelblue;--color-grid: steelblue;--color-menu: lightskyblue;--color-frame: lightskyblue;--color-subframe: midnightblue;--color-fg: white;--color-scale: steelblue;--color-title: lightgrey;--padding-widget: 0px}.theme-dark{--color-bg: #333333;--color-export: #b2df8a;--color-axis: #666666;--color-grid: black;--color-menu: #999999;--color-frame: #666666;--color-subframe: #333333;--color-fg: white;--color-scale: #999999;--color-title: lightgrey;--padding-widget: 0px}.shcolors-normal{--color-devices: #f16913;--color-sh1: #fd8d3c;--color-sh2: #f16913;--color-sh3: #d94801;--color-sh4: #fdae6b;--color-sh5: #fdd0a2;--color-sh6: #fee6ce;--color-sh7: #a63603;--color-sh8: #fe4b83;--color-sh9: #e4419d}.shcolors-advanced{--color-devices: #ff4d4d;--color-sh1: #ffffff;--color-sh2: #ff4d4d;--color-sh3: #668cff;--color-sh4: #ff6600;--color-sh5: #00ff00;--color-sh6: #ffff00;--color-sh7: #ff00ff;--color-sh8: #993300;--color-sh9: #a366ff}.shcolors-standard{--color-devices: rgba(200, 50, 200, .7);--color-sh1: rgba(200, 150, 200, .7);--color-sh2: rgba(200, 100, 200, .7);--color-sh3: rgba(200, 50, 200, .7);--color-sh4: rgba(200, 0, 200, .7);--color-sh5: rgba(150, 200, 200, .7);--color-sh6: rgba(100, 200, 200, .7);--color-sh7: rgba(50, 200, 200, .7);--color-sh8: rgba(0, 200, 200, .7);--color-sh9: rgba(200, 200, 200, .7)}.openwb-devices{color:#cff;background-color:#009696}.colormenu{background-color:var(--color-frame)}.wb-widget{background-color:var(--color-bg);border:.1px solid var(--color-frame);align-self:stretch;width:100%;border-radius:30px}.wb-subwidget{border:0px solid var(--color-subframe);padding:var(--padding-widget)}.grid12{display:grid;grid-template-columns:repeat(12,auto);gap:.2em;justify-items:center}.grid-col-3{grid-column:span 3}.grid-col-4{grid-column:span 4}.grid-col-6{grid-column:span 6}.grid-col-12{grid-column:span 12}@supports (grid-template-columns: subgrid){.subgrid{display:grid;grid-column:span 12;grid-template-columns:subgrid;justify-content:top}}@supports not (grid-template-columns: subgrid){.subgrid{display:grid;grid-column:span 12;grid-template-columns:auto auto auto auto auto auto auto auto auto auto auto auto;justify-content:top;width:100%}}.grid-left{justify-self:start}.grid-right{justify-self:end}th{color:var(--color-axis)}.table-borderless td{border:0}.popup-header{color:#191970}.axis text{color:var(--color-axis);stroke-width:0}.phasesInUse{font-family:monospace;color:#fff;background:var(--color-menu);font-size:var(--font-verysmall);padding:.2rem .4rem .1rem;margin:0rem .2rem}.swiper-slide-active,.swiper-slide{display:flex}swiper-slide{display:flex}option{color:#00f}.ttarea .ttmessage{visibility:hidden}.ttarea:hover .ttmessage{visibility:visible}.scaled{transform:scaleX(.9294)}.fa-car-battery{color:var(--color-battery)}.fa-car{color:var(--color-charging)}.fa-clock,.fa-coins{color:var(--color-battery)}.fa-sliders{color:var(--color-pv)}
+ */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, .75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, .5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, .175);--bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm:0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, .175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, .075);--bs-focus-ring-width:.25rem;--bs-focus-ring-opacity:.25;--bs-focus-ring-color:rgba(13, 110, 253, .25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, .75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, .5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, .15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), .05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), .1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), .075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label:after{position:absolute;top:1rem;right:.375rem;bottom:1rem;left:.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control-plaintext~label:after,.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-select~label:after{position:absolute;top:1rem;right:.375rem;bottom:1rem;left:.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label:after,.form-floating>:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3.75rem + 1.5em)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3.75rem + 1.5em)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:.75rem;--bs-btn-padding-y:.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, .15),0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity:.65;--bs-btn-focus-box-shadow:0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:.25rem;--bs-btn-padding-x:.5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:.5rem;--bs-dropdown-spacer:.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, .15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:.5rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:.25rem;--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, .55);--bs-navbar-hover-color:rgba(255, 255, 255, .75);--bs-navbar-disabled-color:rgba(255, 255, 255, .25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow:0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-flush>.accordion-item>.accordion-collapse{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:.75rem;--bs-pagination-padding-y:.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 .25rem rgba(13, 110, 253, .25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:.5rem;--bs-pagination-padding-y:.25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:.65em;--bs-badge-padding-y:.35em;--bs-badge-font-size:.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:.5;--bs-btn-close-hover-opacity:.75;--bs-btn-close-focus-shadow:0 0 0 .25rem rgba(13, 110, 253, .25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white,[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:.75rem;--bs-toast-padding-y:.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), .85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), .85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:.5rem;--bs-tooltip-padding-y:.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:.9;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:after,.popover .popover-arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-top>.popover-arrow:before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-end>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-start>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translate(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-border-width:.25em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform .3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin:calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,#000c,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-underline-offset:.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:.1}.border-opacity-25{--bs-border-opacity:.25}.border-opacity-50{--bs-border-opacity:.5}.border-opacity-75{--bs-border-opacity:.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:#00000080!important}.text-white-50{--bs-text-opacity:1;color:#ffffff80!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:.25}.text-opacity-50{--bs-text-opacity:.5}.text-opacity-75{--bs-text-opacity:.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity:.1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity:.25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity:.5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity:.75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:.1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:.25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:.5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:.75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:.1}.bg-opacity-25{--bs-bg-opacity:.25}.bg-opacity-50{--bs-bg-opacity:.5}.bg-opacity-75{--bs-bg-opacity:.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}html{min-height:100%;min-width:100%}body{color:var(--color-fg);background:var(--color-bg);font-family:San Francisco,Arial,Liberation sans,sans-serif}body>.container{padding:55px 15px 0}html{font-size:12px}html .settingscolumn{grid-column:span 12}.verySmallTextSize{font-size:var(--font-verysmall)}.smallTextSize{font-size:var(--font-small)}.mediumTextSize{font-size:var(--font-medium)}.regularTextSize{font-size:var(--font-normal)}.largeTextSize,.buttonTextSize{font-size:var(--font-large)}h3{font-size:var(--font-extralarge);color:var(--color-title);font-weight:700;transform:scaleX(.9294)}h4{color:var(--color-axis)}body>.container-fluid{padding:55px 15px 0}.tablecell{font-size:var(--font-normal);line-height:1rem;vertical-align:middle;padding:0;background-color:var(--color-bg)}.maxPrice{text-align:center}:root{--fontCol: rgba(160, 160, 160, .82);--gridCol: rgba(160, 160, 160, .82);--xgridCol: rgba(160, 160, 160, .82);--tickCol: rgba(160, 160, 160, .82);--evuCol: rgba(178, 34, 34, 1);--color-switchRed: #d12020;--color-switchGreen: #4db662;--color-switchBlue: steelblue;--color-cp0: #6baed6;--color-cp1: #4292c6;--color-cp2: #2171b5;--color-cp3: #9ecae1;--color-cp4: #c6dbef;--color-cp5: #deebf7;--color-cp6: #08519c;--color-cp7: #6baed6;--color-evu: firebrick;--color-pv: #33a02c;--color-house: #7f7f7f;--color-charging: #1f78b4;--color-export: #b2df8a;--color-battery: goldenrod;--color-input: lightgrey;--font-normal: 1.4rem;--font-large: 1.6rem;--font-medium: 1.2rem;--font-small: 1rem;--font-verysmall: .7rem;--font-extralarge: 1.6rem;--font-settings: 16px;--font-chargebutton: 16px}.theme-light{--color-bg: white;--color-axis: gray;--color-grid: #bbbbbb;--color-menu: gray;--color-frame: white;--color-subframe: lightgrey;--color-fg: black;--color-scale: lightgrey;--color-title: rgba(0, 0, 0, .644);--padding-widget: 5px;--fontCol: rgba(255, 255, 255, .82);--gridCol: rgba(255, 255, 255, .82);--xgridCol: rgba(255, 255, 255, .1);--tickCol: rgba(255, 255, 255, .82);--evuCol: rgba(255, 0, 0, .7)}.theme-blue{--color-bg: midnightblue;--color-axis: steelblue;--color-grid: steelblue;--color-menu: lightskyblue;--color-frame: lightskyblue;--color-subframe: midnightblue;--color-fg: white;--color-scale: steelblue;--color-title: lightgrey;--padding-widget: 0px}.theme-dark{--color-bg: #333333;--color-export: #b2df8a;--color-axis: #666666;--color-grid: black;--color-menu: #999999;--color-frame: #666666;--color-subframe: #333333;--color-fg: white;--color-scale: #999999;--color-title: lightgrey;--padding-widget: 0px}.shcolors-normal{--color-devices: #f16913;--color-sh1: #fd8d3c;--color-sh2: #f16913;--color-sh3: #d94801;--color-sh4: #fdae6b;--color-sh5: #fdd0a2;--color-sh6: #fee6ce;--color-sh7: #a63603;--color-sh8: #fe4b83;--color-sh9: #e4419d}.shcolors-advanced{--color-devices: #ff4d4d;--color-sh1: #ffffff;--color-sh2: #ff4d4d;--color-sh3: #668cff;--color-sh4: #ff6600;--color-sh5: #00ff00;--color-sh6: #ffff00;--color-sh7: #ff00ff;--color-sh8: #993300;--color-sh9: #a366ff}.shcolors-standard{--color-devices: rgba(200, 50, 200, .7);--color-sh1: rgba(200, 150, 200, .7);--color-sh2: rgba(200, 100, 200, .7);--color-sh3: rgba(200, 50, 200, .7);--color-sh4: rgba(200, 0, 200, .7);--color-sh5: rgba(150, 200, 200, .7);--color-sh6: rgba(100, 200, 200, .7);--color-sh7: rgba(50, 200, 200, .7);--color-sh8: rgba(0, 200, 200, .7);--color-sh9: rgba(200, 200, 200, .7)}.openwb-devices{color:#cff;background-color:#009696}.colormenu{background-color:var(--color-frame)}.grid12{display:grid;grid-template-columns:repeat(12,auto);gap:.2em;justify-items:left}.grid-col-2{grid-column:span 2}.grid-col-3{grid-column:span 3}.grid-col-4{grid-column:span 4}.grid-col-6{grid-column:span 6}.grid-col-12{grid-column:span 12}@supports (grid-template-columns: subgrid){.subgrid{display:grid;grid-column:span 12;grid-template-columns:subgrid;justify-content:top}}@supports not (grid-template-columns: subgrid){.subgrid{display:grid;grid-column:span 12;grid-template-columns:auto auto auto auto auto auto auto auto auto auto auto auto;justify-content:top;width:100%}}.grid-left{justify-self:start}.grid-right{justify-self:end}th{color:var(--color-axis)}.table-borderless td{border:0}.popup-header{color:#191970}.axis text{color:var(--color-axis);stroke-width:0}.phasesInUse{font-family:monospace;color:#fff;background:var(--color-menu);font-size:var(--font-verysmall);padding:.2rem .4rem .1rem;margin:0rem .2rem}.swiper-slide-active,.swiper-slide{display:flex}swiper-slide{display:flex}option{color:#00f}.ttarea .ttmessage{visibility:hidden}.ttarea:hover .ttmessage{visibility:visible}.scaled{transform:scaleX(.9294)}.fa-car-battery{color:var(--color-battery)}.fa-car{color:var(--color-charging)}.fa-clock,.fa-coins{color:var(--color-battery)}.fa-sliders{color:var(--color-pv)}
diff --git a/packages/modules/display_themes/colors/web/assets/index-ScYbRoOj.js b/packages/modules/display_themes/colors/web/assets/index-ScYbRoOj.js
new file mode 100644
index 0000000000..82307b3105
--- /dev/null
+++ b/packages/modules/display_themes/colors/web/assets/index-ScYbRoOj.js
@@ -0,0 +1,6 @@
+var ga=Object.defineProperty;var ma=(t,e,a)=>e in t?ga(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var c=(t,e,a)=>ma(t,typeof e!="symbol"?e+"":e,a);import{m as va,r as F,a as _e,M as St,d as A,o as g,c as b,n as ae,b as M,e as l,f as ve,g as ee,h as p,s as ye,i as lt,j as fa,k as y,w as x,u as i,l as T,t as $,p as W,q as ce,v as le,x as jt,y as Nt,z as _a,F as ke,A as Ae,B as Le,C as _t,D as Te,E as Ut,G as dt,H as at,I as je,J as Ke,K as yt,L as ya,N as Re,O as zt,P as ba,Q as wa,R as Ne,S as Sa,T as ka,U as Ft,V as xa,W as nt,X as Jt,Y as ht,Z as Ma}from"./vendor-B1GimsSk.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const u of o.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&n(u)}).observe(document,{childList:!0,subtree:!0});function a(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(r){if(r.ep)return;r.ep=!0;const o=a(r);fetch(r.href,o)}})();function et(t,e=1){let a;if(t>=1e3&&e<4){switch(e){case 0:a=Math.round(t/1e3);break;case 1:a=Math.round(t/100)/10;break;case 2:a=Math.round(t/10)/100;break;case 3:a=Math.round(t)/1e3;break;default:a=Math.round(t/100)/10;break}return(a==null?void 0:a.toLocaleString(void 0,{minimumFractionDigits:e}))+" kW"}else return Math.round(t).toLocaleString(void 0)+" W"}function Rt(t,e=1,a=!1){let n;if(t>1e6&&(a=!0,t=t/1e3),t>=1e3&&e<4){switch(e){case 0:n=Math.round(t/1e3);break;case 1:n=(Math.round(t/100)/10).toFixed(1);break;case 2:n=(Math.round(t/10)/100).toFixed(2);break;case 3:n=(Math.round(t)/1e3).toFixed(3);break;default:n=Math.round(t/100)/10;break}return n.toLocaleString(void 0,{minimumFractionDigits:e})+(a?" MWh":" kWh")}else return Math.round(t).toLocaleString(void 0)+(a?" kWh":" Wh")}function Pa(t){return t.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function $a(t,e){return["Jan","Feb","März","April","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Dez"][t]+" "+e}const Ia=0,Ht={host:location.hostname,port:location.protocol=="https:"?443:80,endpoint:"/ws",protocol:location.protocol=="https:"?"wss":"ws",connectTimeout:4e3,reconnectPeriod:4e3,clean:!1,clientId:Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,6)},rt={topic:"",qos:Ia};let he;const{host:Ca,port:Oa,endpoint:Ba,...Yt}=Ht,Ta=`${Yt.protocol}://${Ca}:${Oa}${Ba}`;try{he=va.connect(Ta,Yt),he.on("connect",()=>{console.info("MQTT connection successful.")}),he.on("disconnect",()=>{console.info("MQTT disconnected")}),he.on("error",t=>{console.error("MQTT connection failed: ",t)})}catch(t){console.error("MQTT connect error: ",t)}async function Aa(t){await qt(),he?he.on("message",t):console.error("MqttRegister: MQTT client not available")}async function Ve(t){rt.topic=t;const{topic:e,qos:a}=rt;await qt(),he.subscribe(e,{qos:a},n=>{if(n){console.error("MQTT Subscription error: "+n);return}})}function De(t){rt.topic=t;const{topic:e}=rt;he.unsubscribe(e,a=>{if(a){console.error("MQTT Unsubscribe from "+t+" failed: "+a);return}})}async function bt(t,e){let n=he.connected,r=0;for(;!n&&r<10;)console.warn("MQTT not connected. Waiting 0.1 seconds"),await Qt(100),n=he.connected,r+=1;if(r<10)try{he.publish(t,e,{qos:0},o=>{o&&console.warn("MQTT publish error: ",o),console.info("MQTT publish: Message sent: ["+t+"]("+e+")")})}catch(o){console.warn("MQTT publish: caught error: "+o)}else console.error("MQTT publish: Lost connection to MQTT server. Please reload the page")}function kt(){return Ht.clientId}const Bt=20;async function qt(){let t=he.connected,e=0;for(;!t&&e<Bt;)console.warn("MQTT not connected. Waiting 0.1 seconds"),await Qt(100),t=he.connected,e+=1;return new Promise((a,n)=>{e<Bt?a(!0):n(!1)})}function Qt(t){return new Promise(e=>setTimeout(e,t))}class Va{constructor(e){c(this,"id");c(this,"name","Ladepunkt");c(this,"icon","Ladepunkt");c(this,"type","");c(this,"ev",0);c(this,"template",0);c(this,"connectedPhases",0);c(this,"phase_1",0);c(this,"autoPhaseSwitchHw",!1);c(this,"controlPilotInterruptionHw",!1);c(this,"isEnabled",!0);c(this,"isPluggedIn",!1);c(this,"isCharging",!1);c(this,"_isLocked",!1);c(this,"_connectedVehicle",0);c(this,"chargeTemplate",0);c(this,"evTemplate",0);c(this,"_chargeMode","pv_charging");c(this,"_hasPriority",!1);c(this,"currentPlan","");c(this,"averageConsumption",0);c(this,"vehicleName","");c(this,"rangeCharged",0);c(this,"rangeUnit","");c(this,"counter",0);c(this,"dailyYield",0);c(this,"energyPv",0);c(this,"energyBat",0);c(this,"pvPercentage",0);c(this,"faultState",0);c(this,"faultStr","");c(this,"phasesInUse",0);c(this,"power",0);c(this,"chargedSincePlugged",0);c(this,"stateStr","");c(this,"current",0);c(this,"currents",[0,0,0]);c(this,"phasesToUse",0);c(this,"isSocConfigured",!0);c(this,"isSocManual",!1);c(this,"waitingForSoc",!1);c(this,"color","white");c(this,"_timedCharging",!1);c(this,"_instantChargeLimitMode","");c(this,"_instantTargetCurrent",0);c(this,"_instantTargetSoc",0);c(this,"_instantMaxEnergy",0);c(this,"_pvFeedInLimit",!1);c(this,"_pvMinCurrent",0);c(this,"_pvMaxSoc",101);c(this,"_pvMinSoc",0);c(this,"_pvMinSocCurrent",0);c(this,"_etActive",!1);c(this,"_etMaxPrice",20);this.id=e}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e,q("cpLock",e,this.id)}updateIsLocked(e){this._isLocked=e}get connectedVehicle(){return this._connectedVehicle}set connectedVehicle(e){this._connectedVehicle=e,q("cpVehicle",e,this.id)}updateConnectedVehicle(e){this._connectedVehicle=e}get soc(){return j[this.connectedVehicle]?j[this.connectedVehicle].soc:0}set soc(e){j[this.connectedVehicle]&&(j[this.connectedVehicle].soc=e)}get chargeMode(){return this._chargeMode}set chargeMode(e){this._chargeMode=e,q("chargeMode",e,this.id)}updateChargeMode(e){this._chargeMode=e}get hasPriority(){return this._hasPriority}set hasPriority(e){this._hasPriority=e,q("cpPriority",e,this.id)}updateCpPriority(e){this._hasPriority=e}get timedCharging(){return ie[this.chargeTemplate]?ie[this.chargeTemplate].time_charging.active:!1}set timedCharging(e){ie[this.chargeTemplate].time_charging.active=e,q("cpTimedCharging",e,this.chargeTemplate)}get instantTargetCurrent(){return this._instantTargetCurrent}set instantTargetCurrent(e){this._instantTargetCurrent=e,q("cpInstantTargetCurrent",e,this.id)}updateInstantTargetCurrent(e){this._instantTargetCurrent=e}get instantChargeLimitMode(){return this._instantChargeLimitMode}set instantChargeLimitMode(e){this._instantChargeLimitMode=e,q("cpInstantChargeLimitMode",e,this.id)}updateInstantChargeLimitMode(e){this._instantChargeLimitMode=e}get instantTargetSoc(){return this._instantTargetSoc}set instantTargetSoc(e){this._instantTargetSoc=e,q("cpInstantTargetSoc",e,this.id)}updateInstantTargetSoc(e){this._instantTargetSoc=e}get instantMaxEnergy(){return this._instantMaxEnergy}set instantMaxEnergy(e){this._instantMaxEnergy=e,q("cpInstantMaxEnergy",e,this.id)}updateInstantMaxEnergy(e){this._instantMaxEnergy=e}get pvFeedInLimit(){return this._pvFeedInLimit}set pvFeedInLimit(e){this._pvFeedInLimit=e,q("cpPvFeedInLimit",e,this.id)}updatePvFeedInLimit(e){this._pvFeedInLimit=e}get pvMinCurrent(){return this._pvMinCurrent}set pvMinCurrent(e){this._pvMinCurrent=e,q("cpPvMinCurrent",e,this.id)}updatePvMinCurrent(e){this._pvMinCurrent=e}get pvMaxSoc(){return this._pvMaxSoc}set pvMaxSoc(e){this._pvMaxSoc=e,q("cpPvMaxSoc",e,this.id)}updatePvMaxSoc(e){this._pvMaxSoc=e}get pvMinSoc(){return this._pvMinSoc}set pvMinSoc(e){this._pvMinSoc=e,q("cpPvMinSoc",e,this.id)}updatePvMinSoc(e){this._pvMinSoc=e}get pvMinSocCurrent(){return this._pvMinSocCurrent}set pvMinSocCurrent(e){this._pvMinSocCurrent=e,q("cpPvMinSocCurrent",e,this.id)}updatePvMinSocCurrent(e){this._pvMinSocCurrent=e}get realCurrent(){switch(this.phasesInUse){case 0:return 0;case 1:return this.currents[0];case 2:return(this.currents[0]+this.currents[1])/2;case 3:return(this.currents[0]+this.currents[1]+this.currents[2])/3;default:return 0}}get etActive(){return j[this.connectedVehicle]?j[this.connectedVehicle].etActive:!1}set etActive(e){j[this.connectedVehicle]&&(j[this.connectedVehicle].etActive=e)}get etMaxPrice(){return j[this.connectedVehicle].etMaxPrice??0}set etMaxPrice(e){console.log("Setting et max price needs to be implemented"),q("cpEtMaxPrice",Math.round(e*10)/1e6,this.id)}toPowerItem(){return{name:this.name,power:this.power,energy:this.dailyYield,energyPv:this.energyPv,energyBat:this.energyBat,pvPercentage:this.pvPercentage,color:this.color,icon:this.icon}}}class La{constructor(e){c(this,"id");c(this,"name","");c(this,"_chargeTemplateId",0);c(this,"_evTemplateId",0);c(this,"tags",[]);c(this,"config",{});c(this,"soc",0);c(this,"range",0);c(this,"_etActive",!1);c(this,"_etMaxPrice",20);this.id=e}get chargeTemplateId(){return this._chargeTemplateId}set chargeTemplateId(e){this._chargeTemplateId=e,q("vhChargeTemplateId",e,this.id)}updateChargeTemplateId(e){this._chargeTemplateId=e}get evTemplateId(){return this._evTemplateId}set evTemplateId(e){this._evTemplateId=e,q("vhEvTemplateId",e,this.id)}updateEvTemplateId(e){this._evTemplateId=e}get etActive(){return ie[this.chargeTemplateId]?ie[this.chargeTemplateId].et.active:!1}set etActive(e){ie[this.chargeTemplateId]&&q("priceCharging",e,this.chargeTemplateId)}get etMaxPrice(){if(ie[this.chargeTemplateId]&&ie[this.chargeTemplateId].et.active)return ie[this.chargeTemplateId].et.max_price*1e5}get chargepoint(){for(const e of Object.values(w))if(e.connectedVehicle==this.id)return e}}var fe=(t=>(t.instant_charging="instant_charging",t.pv_charging="pv_charging",t.scheduled_charging="scheduled_charging",t.standby="standby",t.stop="stop",t))(fe||{});const w=F({}),j=F({}),ie=F({}),Ue=F({}),ze=F({}),Da=F({});function Ea(t){t in w||(w[t]=new Va(t),w[t].color="var(--color-cp"+(Object.values(w).length-1)+")")}function Ga(){Object.keys(w).forEach(t=>{delete w[parseInt(t)]})}const Wa={cpLock:"openWB/set/chargepoint/%/set/manual_lock",chargeMode:"openWB/set/vehicle/template/charge_template/%/chargemode/selected",cpPriority:"openWB/set/vehicle/template/charge_template/%/prio",cpTimedCharging:"openWB/set/vehicle/template/charge_template/%/time_charging/active",cpTimedPlanActive:"openWB/set/vehicle/template/charge_template/%/time_charging/plans/@/active",cpScheduledPlanActive:"openWB/set/vehicle/template/charge_template/%/chargemode/scheduled_charging/plans/@/active",pvBatteryPriority:"openWB/set/general/chargemode_config/pv_charging/bat_mode",cpVehicle:"openWB/set/chargepoint/%/config/ev",cpInstantChargeLimitMode:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/selected",cpInstantTargetCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/current",cpInstantTargetSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/soc",cpInstantMaxEnergy:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/amount",cpPvFeedInLimit:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/feed_in_limit",cpPvMinCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_current",cpPvMaxSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/max_soc",cpPvMinSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc",cpPvMinSocCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc_current",cpEtMaxPrice:"openWB/set/vehicle/template/charge_template/%/et/max_price",vhChargeTemplateId:"openWB/set/vehicle/%/charge_template",vhEvTemplateId:"openWB/set/vehicle/%/ev_template",shSetManual:"openWB/set/LegacySmartHome/config/set/Devices/%/mode",shSwitchOn:"openWB/set/LegacySmartHome/config/set/Devices/%/device_manual_control",socUpdate:"openWB/set/vehicle/%/get/force_soc_update",setSoc:"openWB/set/vehicle/%/soc_module/calculated_soc_state/manual_soc",priceCharging:"openWB/set/vehicle/template/charge_template/%/et/active"};function q(t,e,a=0,n=void 0){if(isNaN(a)){console.warn("Invalid index");return}let r=Wa[t];if(!r){console.warn("No topic for update type "+t);return}switch(t){case"chargeMode":case"cpPriority":case"cpScheduledCharging":case"cpInstantTargetCurrent":case"cpInstantChargeLimitMode":case"cpInstantTargetSoc":case"cpInstantMaxEnergy":case"cpPvFeedInLimit":case"cpPvMinCurrent":case"cpPvMaxSoc":case"cpPvMinSoc":case"cpEtMaxPrice":case"cpPvMinSocCurrent":r=r.replace("%",w[a].chargeTemplate.toString());break;default:r=r.replace("%",String(a)),n!=null&&(r=r.replace("@",String(n)))}switch(typeof e){case"number":bt(r,JSON.stringify(+e));break;default:bt(r,JSON.stringify(e))}}function xt(t){bt("openWB/set/command/"+kt()+"/todo",JSON.stringify(t))}class ja{constructor(){c(this,"batterySoc",0);c(this,"isBatteryConfigured",!0);c(this,"chargeMode","0");c(this,"_pvBatteryPriority","ev_mode");c(this,"displayLiveGraph",!0);c(this,"isEtEnabled",!0);c(this,"etMaxPrice",0);c(this,"etCurrentPrice",0);c(this,"cpDailyExported",0);c(this,"evuId",0);c(this,"etProvider","");c(this,"ipAddress","");c(this,"systemTime",0);c(this,"version","");c(this,"versionDetails","");c(this,"devBranch","")}get pvBatteryPriority(){return this._pvBatteryPriority}set pvBatteryPriority(e){this._pvBatteryPriority=e,q("pvBatteryPriority",e)}updatePvBatteryPriority(e){this._pvBatteryPriority=e}}const Na=[["EV","ev_mode"],["Speicher","bat_mode"],["MinSoc","min_soc_bat_mode"]],oe=F({evuIn:{name:"Netz",color:"var(--color-evu)",icon:""},pv:{name:"PV",color:"var(--color-pv",icon:""},batOut:{name:"Bat >",color:"var(--color-battery)",icon:""},evuOut:{name:"Export",color:"var(--color-export)",icon:""},charging:{name:"Laden",color:"var(--color-charging)",icon:""},devices:{name:"Geräte",color:"var(--color-devices)",icon:""},batIn:{name:"> Bat",color:"var(--color-battery)",icon:""},house:{name:"Haus",color:"var(--color-house)",icon:""},cp1:{name:"Ladepunkt",color:"var(--color-cp1)",icon:"Ladepunkt"},cp2:{name:"Ladepunkt",color:"var(--color-cp2)",icon:"Ladepunkt"},cp3:{name:"Ladepunkt",color:"var(--color-cp3)",icon:"Ladepunkt"},cp4:{name:"Ladepunkt",color:"var(--color-cp4)",icon:"Ladepunkt"},cp5:{name:"Ladepunkt",color:"var(--color-cp5)",icon:"Ladepunkt"},cp6:{name:"Ladepunkt",color:"var(--color-cp6)",icon:"Ladepunkt"},cp7:{name:"Ladepunkt",color:"var(--color-cp7)",icon:"Ladepunkt"},cp8:{name:"Ladepunkt",color:"var(--color-cp8)",icon:"Ladepunkt"},sh1:{name:"Gerät",color:"var(--color-sh1)",icon:"Gerät"},sh2:{name:"Gerät",color:"var(--color-sh2)",icon:"Gerät"},sh3:{name:"Gerät",color:"var(--color-sh3)",icon:"Gerät"},sh4:{name:"Gerät",color:"var(--color-sh4)",icon:"Gerät"},sh5:{name:"Gerät",color:"var(--color-sh5)",icon:"Gerät"},sh6:{name:"Gerät",color:"var(--color-sh6)",icon:"Gerät"},sh7:{name:"Gerät",color:"var(--color-sh7)",icon:"Gerät"},sh8:{name:"Gerät",color:"var(--color-sh8)",icon:"Gerät"},sh9:{name:"Gerät",color:"var(--color-sh9)",icon:"Gerät"}});class Zt{constructor(){c(this,"_items",{});this.addItem("evuIn"),this.addItem("pv"),this.addItem("batOut"),this.addItem("evuOut"),this.addItem("charging"),this.addItem("devices"),this.addItem("batIn"),this.addItem("house")}get items(){return this._items}keys(){return Object.keys(this._items)}values(){return Object.values(this._items)}addItem(e){this._items[e]=$e(e)}setEnergy(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energy=a}setEnergyPv(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyPv=a}setEnergyBat(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyBat=a}setPvPercentage(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].pvPercentage=a}calculateHouseEnergy(){this._items.house.energy=this._items.evuIn.energy+this._items.pv.energy+this._items.batOut.energy-this._items.evuOut.energy-this._items.batIn.energy-this._items.charging.energy-this._items.devices.energy}}let P=new Zt;function Mt(){P=new Zt}const G=F({evuIn:$e("evuIn"),pv:$e("pv"),batOut:$e("batOut")}),I=F({evuOut:$e("evuOut"),charging:$e("charging"),devices:$e("devices"),batIn:$e("batIn"),house:$e("house")}),U=F(new ja);_e("");const ot=_e(!1);function $e(t){return{name:oe[t]?oe[t].name:"item",power:0,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:oe[t]?oe[t].color:"var(--color-charging)",icon:oe[t]?oe[t].icon:""}}const ne=F({active:!1,locked:!0,usePin:!1,code:"",timeout:60,localCpOnly:!1});function st(){ne.usePin&&ne.locked?new St("#numberpad").toggle():(ne.locked=!1,setTimeout(()=>{ne.locked=!0},ne.timeout*1e3))}function Ua(t){return t==ne.code}function za(){I.house.power=I.house.power-I.devices.power}const Tt=_e(new Date),Fa={class:"scaled"},Ja=A({__name:"DisplayButton",props:{icon:{},bgcolor:{},color:{}},emits:["click"],setup(t,{emit:e}){const a=t,n=e;function r(){n("click",!0)}return(o,u)=>(g(),b("div",{style:ee({"background-color":a.bgcolor?a.bgcolor:"var(--color-bg)",color:a.color?a.color:"var(--color-title)"}),class:"displaybutton rounded-pill",type:"button",onClick:r},[a.icon?(g(),b("span",{key:0,class:ae(["fas me-2 scaled",a.icon])},null,2)):M("",!0),l("span",Fa,[ve(o.$slots,"default",{},void 0)])],4))}}),N=(t,e)=>{const a=t.__vccOpts||t;for(const[n,r]of e)a[n]=r;return a},we=N(Ja,[["__scopeId","data-v-0f8aebee"]]);class Ra{constructor(e){c(this,"id");c(this,"name","Gerät");c(this,"power",0);c(this,"status","off");c(this,"energy",0);c(this,"runningTime",0);c(this,"configured",!1);c(this,"_showInGraph",!0);c(this,"color","white");c(this,"canSwitch",!1);c(this,"countAsHouse",!1);c(this,"energyPv",0);c(this,"energyBat",0);c(this,"pvPercentage",0);c(this,"tempConfigured",0);c(this,"temp",[300,300,300]);c(this,"on",!1);c(this,"isAutomatic",!0);c(this,"icon","");this.id=e}get showInGraph(){return this._showInGraph}set showInGraph(e){this._showInGraph=e,Y()}setShowInGraph(e){this._showInGraph=e}}const E=F({});function Xt(t){t in E?console.info("Duplicate sh device message: "+t):(E[t]=new Ra(t),E[t].color="var(--color-sh"+Object.values(E).length+")")}class Ha{constructor(){c(this,"graphToShow","powermeter");c(this,"cpToShow",0);c(this,"displayLocked",!0);c(this,"_showRelativeArcs",!1);c(this,"showTodayGraph",!0);c(this,"_graphPreference","live");c(this,"_usageStackOrder",0);c(this,"_displayMode","dark");c(this,"_showGrid",!1);c(this,"_smartHomeColors","normal");c(this,"_decimalPlaces",1);c(this,"_showQuickAccess",!0);c(this,"_simpleCpList",!1);c(this,"_shortCpList","no");c(this,"_showAnimations",!0);c(this,"_preferWideBoxes",!1);c(this,"_maxPower",4e3);c(this,"_fluidDisplay",!1);c(this,"_showClock","no");c(this,"_showButtonBar",!0);c(this,"_showCounters",!1);c(this,"_showVehicles",!1);c(this,"_showPrices",!1);c(this,"_debug",!1);c(this,"isEtEnabled",!1);c(this,"etPrice",20.5);c(this,"showRightButton",!0);c(this,"showLeftButton",!0);c(this,"animationDuration",300);c(this,"animationDelay",100);c(this,"zoomGraph",!1)}get showRelativeArcs(){return this._showRelativeArcs}set showRelativeArcs(e){this._showRelativeArcs=e,Y()}setShowRelativeArcs(e){this._showRelativeArcs=e}get graphPreference(){return this._graphPreference}set graphPreference(e){this._graphPreference=e,Y()}setGraphPreference(e){this._graphPreference=e}get usageStackOrder(){return this._usageStackOrder}set usageStackOrder(e){this._usageStackOrder=e,Y()}setUsageStackOrder(e){this._usageStackOrder=e}get displayMode(){return this._displayMode}set displayMode(e){this._displayMode=e,Qa(e)}setDisplayMode(e){this._displayMode=e}get showGrid(){return this._showGrid}set showGrid(e){this._showGrid=e,Y()}setShowGrid(e){this._showGrid=e}get decimalPlaces(){return this._decimalPlaces}set decimalPlaces(e){this._decimalPlaces=e,Y()}setDecimalPlaces(e){this._decimalPlaces=e}get smartHomeColors(){return this._smartHomeColors}set smartHomeColors(e){this._smartHomeColors=e,At(e),Y()}setSmartHomeColors(e){this._smartHomeColors=e,At(e)}get showQuickAccess(){return this._showQuickAccess}set showQuickAccess(e){this._showQuickAccess=e,Y()}setShowQuickAccess(e){this._showQuickAccess=e}get simpleCpList(){return this._simpleCpList}set simpleCpList(e){this._simpleCpList=e,Y()}setSimpleCpList(e){this._simpleCpList=e}get shortCpList(){return this._shortCpList}set shortCpList(e){this._shortCpList=e,Y()}setShortCpList(e){this._shortCpList=e}get showAnimations(){return this._showAnimations}set showAnimations(e){this._showAnimations=e,Y()}setShowAnimations(e){this._showAnimations=e}get preferWideBoxes(){return this._preferWideBoxes}set preferWideBoxes(e){this._preferWideBoxes=e,Y()}setPreferWideBoxes(e){this._preferWideBoxes=e}get maxPower(){return this._maxPower}set maxPower(e){this._maxPower=e,Y()}setMaxPower(e){this._maxPower=e}get fluidDisplay(){return this._fluidDisplay}set fluidDisplay(e){this._fluidDisplay=e,Y()}setFluidDisplay(e){this._fluidDisplay=e}get showClock(){return this._showClock}set showClock(e){this._showClock=e,Y()}setShowClock(e){this._showClock=e}get debug(){return this._debug}set debug(e){this._debug=e,Y()}setDebug(e){this._debug=e}get showButtonBar(){return this._showButtonBar}set showButtonBar(e){this._showButtonBar=e,Y()}setShowButtonBar(e){this._showButtonBar=e}get showCounters(){return this._showCounters}set showCounters(e){this._showCounters=e,Y()}setShowCounters(e){this._showCounters=e}get showVehicles(){return this._showVehicles}set showVehicles(e){this._showVehicles=e,Y()}setShowVehicles(e){this._showVehicles=e}get showPrices(){return this._showPrices}set showPrices(e){this._showPrices=e,Y()}setShowPrices(e){this._showPrices=e}}const f=F(new Ha),Ya=992,wt=F({x:document.documentElement.clientWidth,y:document.documentElement.clientHeight});function qa(){wt.x=document.documentElement.clientWidth,wt.y=document.documentElement.clientHeight}p(()=>wt.x>=Ya);const We={stop:{mode:fe.stop,name:"Stop",color:"var(--color-fg)",icon:"fa-power-off"},standby:{mode:fe.standby,name:"Standby",color:"var(--color-axis",icon:"fa-pause"},pv_charging:{mode:fe.pv_charging,name:"PV",color:"var(--color-pv",icon:"fa-solar-panel"},scheduled_charging:{mode:fe.scheduled_charging,name:"Zielladen",color:"var(--color-battery)",icon:"fa-bullseye"},instant_charging:{mode:fe.instant_charging,name:"Sofort",color:"var(--color-charging)",icon:"fa-bolt"}};function Y(){Za()}function Qa(t){const e=ye("html");e.classed("theme-dark",t=="dark"),e.classed("theme-light",t=="light"),e.classed("theme-blue",t=="blue"),Y()}function At(t){const e=ye("html");e.classed("shcolors-normal",t=="normal"),e.classed("shcolors-standard",t=="standard"),e.classed("shcolors-advanced",t=="advanced")}function Za(){const t={};t.hideSH=Object.values(E).filter(e=>!e.showInGraph).map(e=>e.id),t.showLG=f.graphPreference=="live",t.displayM=f.displayMode,t.stackO=f.usageStackOrder,t.showGr=f.showGrid,t.decimalP=f.decimalPlaces,t.smartHomeC=f.smartHomeColors,t.relPM=f.showRelativeArcs,t.maxPow=f.maxPower,t.showQA=f.showQuickAccess,t.simpleCP=f.simpleCpList,t.shortCP=f.shortCpList,t.animation=f.showAnimations,t.wideB=f.preferWideBoxes,t.fluidD=f.fluidDisplay,t.clock=f.showClock,t.showButtonBar=f.showButtonBar,t.showCounters=f.showCounters,t.showVehicles=f.showVehicles,t.showPrices=f.showPrices,t.debug=f.debug,document.cookie="openWBColorTheme="+JSON.stringify(t)+";max-age=16000000;samesite=strict"}const Ee=t=>(ce("data-v-97154896"),t=t(),le(),t),Xa={class:"navigation"},Ka={class:"graphbuttons"},en=Ee(()=>l("span",{class:"brand me-4"},"openWB",-1)),tn={class:"cpbuttons"},an=Ee(()=>l("span",{class:"fas fa-arrow-left px-2"},null,-1)),nn=Ee(()=>l("span",{class:"fas fa-charging-station pe-2"},null,-1)),rn=Ee(()=>l("span",{class:"fas fa-lock px-4"},null,-1)),on=Ee(()=>l("span",{class:"fas fa-charging-station px-2"},null,-1)),sn=Ee(()=>l("span",{class:"fas fa-arrow-right pe-2"},null,-1)),cn={class:"timedisplay ms-4"},ln=A({__name:"NavigationBar",setup(t){let e;function a(){let d=Object.values(w).length;f.cpToShow=(f.cpToShow+1)%d}function n(){let d=Object.values(w).length;f.cpToShow=((f.cpToShow-1)%d+d)%d}function r(){f.graphToShow="powermeter"}function o(){f.graphToShow="powergraph"}function u(){f.graphToShow="energymeter"}return lt(()=>{e=setInterval(()=>{Tt.value=new Date},1e3)}),fa(()=>{clearInterval(e)}),(d,s)=>(g(),b("div",Xa,[l("span",Ka,[en,y(we,{icon:"fa-chart-pie",onClick:r},{default:x(()=>[W("Leistung")]),_:1}),y(we,{icon:"fa-chart-line",onClick:o},{default:x(()=>[W("Verlauf")]),_:1}),y(we,{icon:"fa-chart-column",onClick:u},{default:x(()=>[W("Energie")]),_:1})]),y(we,{icon:"fa-rectangle-list","data-bs-toggle":"modal","data-bs-target":"#statuspage"},{default:x(()=>[W("Status")]),_:1}),l("span",tn,[Object.values(i(w)).length>1?(g(),T(we,{key:0,color:"var(--color-cp0)",onClick:n},{default:x(()=>[an,nn]),_:1})):M("",!0),y(we,{bgcolor:i(ne).locked?"var(--color-evu)":"var(--color-pv)",onClick:i(st)},{default:x(()=>[rn]),_:1},8,["bgcolor","onClick"]),Object.values(i(w)).length>1?(g(),T(we,{key:1,color:"var(--color-cp0)",onClick:a},{default:x(()=>[on,sn]),_:1})):M("",!0),l("span",cn,$(i(Pa)(i(Tt))),1)])]))}}),dn=N(ln,[["__scopeId","data-v-97154896"]]),un=["origin"],hn=A({__name:"PMSourceArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=p(()=>{let n={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:""},r=G;r["zz-empty"]=n;const o=Object.values(G).length-1,u=jt().value(m=>m.power).startAngle(-Math.PI/2+e.circleGapSize).endAngle(Math.PI/2-e.circleGapSize).sort(null),d=Nt().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius).padAngle(0),s=ye("g#pmSourceArc");return s.selectAll("*").remove(),s.selectAll("sources").data(u(Object.values(r))).enter().append("path").attr("d",d).attr("fill",m=>m.data.color).attr("stroke",(m,v)=>v==o?m.data.power>0?"var(--color-scale)":"null":m.data.color),"pmSourceArc.vue"});return _a(()=>{let n=G.pv.power+G.evuIn.power+G.batOut.power;n>f.maxPower&&(f.maxPower=n)}),(n,r)=>(g(),b("g",{id:"pmSourceArc",origin:a.value},null,8,un))}}),pn=["origin"],gn=A({__name:"PMUsageArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=p(()=>{let n={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:""};const r=[I.evuOut,I.charging].concat(Object.values(E).filter(m=>m.configured&&!m.countAsHouse).sort((m,v)=>v.power-m.power)).concat([I.batIn,I.house]).concat(n),o=r.length-1,u=jt().value(m=>m.power).startAngle(Math.PI*1.5-e.circleGapSize).endAngle(Math.PI/2+e.circleGapSize).sort(null),d=Nt().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius),s=ye("g#pmUsageArc");return s.selectAll("*").remove(),s.selectAll("consumers").data(u(r)).enter().append("path").attr("d",d).attr("fill",m=>m.data.color).attr("stroke",(m,v)=>v==o?m.data.power>0?"var(--color-scale)":"null":m.data.color),"pmUsageArc.vue"});return(n,r)=>(g(),b("g",{id:"pmUsageArc",origin:a.value},null,8,pn))}}),Kt=A({__name:"FormatWatt",props:{watt:{}},setup(t){const e=t,a=p(()=>et(e.watt,f.decimalPlaces));return(n,r)=>$(a.value)}}),mn={key:0,id:"pmLabel"},vn=["x","y","fill","text-anchor"],fn=22,be=A({__name:"PMLabel",props:{x:{},y:{},data:{},props:{},anchor:{},labeltext:{},labelicon:{},labelcolor:{}},setup(t){const e=t,a=p(()=>e.labeltext?e.labeltext:e.props?e.props.icon+" ":e.labelicon?e.labelicon+" ":""),n=p(()=>e.labelcolor?e.labelcolor:e.props?e.props.color:""),r=p(()=>!e.data||e.data.power>0),o=p(()=>e.labeltext?"":"fas");return(u,d)=>r.value?(g(),b("g",mn,[l("text",{x:u.x,y:u.y,fill:n.value,"text-anchor":u.anchor,"font-size":fn,class:"pmLabel"},[l("tspan",{class:ae(o.value)},$(a.value),3),l("tspan",null,[u.data!==void 0?(g(),T(Kt,{key:0,watt:u.data.power},null,8,["watt"])):M("",!0)])],8,vn)])):M("",!0)}}),_n={},ea=t=>(ce("data-v-b83b615b"),t=t(),le(),t),yn={class:"p-2 m-0"},bn={class:"wb-widget m-0 pb-4 shadow"},wn={class:"header mt-4 mx-2"},Sn={class:"titles"},kn={class:"title"},xn=ea(()=>l("div",{class:"p-0"},"(title goes here)",-1)),Mn={class:"subtitle"},Pn={class:"buttons"},$n={class:"wb-subwidget mx-2 subgrid"},In={key:0,class:"subgrid"},Cn=ea(()=>l("hr",{class:"grid-col-12"},null,-1)),On={class:"wb-subwidget mx-2 subgrid"};function Bn(t,e){return g(),b("div",yn,[l("div",bn,[l("div",wn,[l("div",Sn,[l("div",kn,[ve(t.$slots,"title",{},()=>[xn])]),l("div",Mn,[ve(t.$slots,"subtitle",{},void 0)])]),l("div",Pn,[ve(t.$slots,"buttons",{},void 0)])]),l("div",$n,[ve(t.$slots,"default",{},void 0)]),t.$slots.footer!=null?(g(),b("div",In,[Cn,l("div",On,[ve(t.$slots,"footer",{},void 0)])])):M("",!0)])])}const ut=N(_n,[["render",Bn],["__scopeId","data-v-b83b615b"]]);class Tn{constructor(){c(this,"active",!1);c(this,"etPriceList",new Map);c(this,"etProvider","");c(this,"etMaxPrice",0)}get etCurrentPriceString(){const[e]=X.etPriceList.values();return(Math.round(e*10)/10).toFixed(1)+" ct"}}const X=F(new Tn),An={class:"grid-col-12"},Vn={id:"powermeter",class:"powermeter p-0 m-0 align-self-stretch"},Ln=["viewBox"],Dn=["transform"],En={transform:"scale(0.9294,1)"},Gn=["x"],xe=500,Me=20,Vt=1,Wn=A({__name:"PowerMeter",setup(t){const e=xe,a=Math.PI/40,n=[[4],[4,6],[1,4,6],[0,2,4,6],[0,2,3,5,6]],r=[{x:-85,y:e/2*1/5},{x:0,y:e/2*1/5},{x:85,y:e/2*1/5},{x:-85,y:e/2*2/5},{x:0,y:e/2*2/5},{x:85,y:e/2*2/5},{x:0,y:e/2*3/5}],o=p(()=>xe/2-Me),u=p(()=>{let D="",z=Object.values(G).filter(H=>H.power>0);return z.length==1&&z[0].name=="PV"?D="Aktueller Verbrauch: ":D="Bezug/Verbrauch: ",D+et(I.house.power+I.charging.power+I.devices.power+I.batIn.power,f.decimalPlaces)}),d=p(()=>{let D=G.pv.power+G.evuIn.power+G.batOut.power;return f.maxPower>D?et(f.maxPower,f.decimalPlaces):et(D,f.decimalPlaces)}),s=p(()=>Object.values(w)),m=p(()=>{let D=0;return f.showRelativeArcs&&(D=f.maxPower-(G.pv.power+G.evuIn.power+G.batOut.power)),D<0?0:D}),v=p(()=>[I.evuOut,I.charging,I.devices,I.batIn,I.house].filter(D=>D.power>0)),B=p(()=>n[v.value.length-1]);function k(D){return r[B.value[D]]}function R(D){return Math.round(s.value[D].soc)}function te(D){return D.length>12?D.slice(0,11)+".":D}const se=p(()=>{const[D]=X.etPriceList.values();return Math.round(D*10)/10});return(D,z)=>(g(),T(ut,null,{title:x(()=>[W(" Aktuelle Leistung ")]),default:x(()=>[l("div",An,[l("figure",Vn,[(g(),b("svg",{viewBox:"0 0 "+xe+" "+i(e)},[l("g",{transform:"translate("+xe/2+","+i(e)/2+")"},[l("g",En,[y(hn,{radius:o.value,"corner-radius":Vt,"circle-gap-size":a,"empty-power":m.value},null,8,["radius","empty-power"]),y(gn,{"sh-device":i(E),radius:o.value,"corner-radius":Vt,"circle-gap-size":a,"empty-power":m.value},null,8,["sh-device","radius","empty-power"]),y(be,{x:0,y:-i(e)/10*2,data:i(G).pv,props:i(oe).pv,anchor:"middle",config:i(f)},null,8,["y","data","props","config"]),y(be,{x:0,y:-i(e)/10*3,data:i(G).evuIn,props:i(oe).evuIn,anchor:"middle",config:i(f)},null,8,["y","data","props","config"]),y(be,{x:0,y:-i(e)/10,data:i(G).batOut,props:i(oe).batOut,anchor:"middle",config:i(f)},null,8,["y","data","props","config"]),i(X).active?(g(),T(be,{key:0,x:0,y:-i(e)/10,data:i(G).batOut,props:i(oe).batOut,anchor:"middle",config:i(f)},null,8,["y","data","props","config"])):M("",!0),(g(!0),b(ke,null,Ae(v.value,(H,C)=>(g(),T(be,{key:C,x:k(C).x,y:k(C).y,data:H,labelicon:H.icon,labelcolor:H.color,anchor:"middle",config:i(f)},null,8,["x","y","data","labelicon","labelcolor","config"]))),128)),s.value.length>0&&i(j)[s.value[0].connectedVehicle]?(g(),T(be,{key:1,x:-xe/2-Me/4+10,y:-i(e)/2+Me+5,labeltext:te(i(j)[s.value[0].connectedVehicle].name)+": "+R(0)+"%",labelcolor:s.value[0].color,anchor:"start",config:i(f)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),s.value.length>1&&i(j)[s.value[1].connectedVehicle]?(g(),T(be,{key:2,x:xe/2+Me/4-10,y:-i(e)/2+Me+5,labeltext:te(i(j)[s.value[1].connectedVehicle].name)+": "+R(1)+"%",labelcolor:s.value[1].color,anchor:"end",config:i(f)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),i(U).batterySoc>0?(g(),T(be,{key:3,x:-xe/2-Me/4+10,y:i(e)/2-Me+15,labeltext:"Speicher: "+i(U).batterySoc+"%",labelcolor:i(I).batIn.color,anchor:"start",config:i(f)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),i(X).active?(g(),T(be,{key:4,x:xe/2+Me/4-10,y:i(e)/2-Me+15,value:se.value,labeltext:i(X).etCurrentPriceString,labelcolor:"var(--color-charging)",anchor:"end",config:i(f)},null,8,["x","y","value","labeltext","config"])):M("",!0),y(be,{x:0,y:0,labeltext:u.value,labelcolor:"var(--color-fg)",anchor:"middle",config:i(f)},null,8,["labeltext","config"]),i(f).showRelativeArcs?(g(),b("text",{key:5,x:xe/2-44,y:"2","text-anchor":"middle",fill:"var(--color-axis)","font-size":"12"}," Peak: "+$(d.value),9,Gn)):M("",!0)])],8,Dn)],8,Ln))])])]),_:1}))}}),Pe=500,Ce=500,L={top:10,right:20,bottom:10,left:25},Pt=["charging","house","batIn","devices"];class jn{constructor(){c(this,"data",[]);c(this,"_graphMode","")}get graphMode(){return this._graphMode}set graphMode(e){this._graphMode=e}}const h=F(new jn);let it=!0,He=!0;function Lt(){it=!1}function Dt(){He=!1}function Nn(t){He=t}function Ye(t){h.data=t}const Z=F({refreshTopicPrefix:"openWB/graph/alllivevaluesJson",updateTopic:"openWB/graph/lastlivevaluesJson",configTopic:"openWB/graph/config/#",initialized:!1,initCounter:0,graphRefreshCounter:0,rawDataPacks:[],duration:0,activate(){h.data=[],this.unsubscribeUpdates(),this.subscribeRefresh(),Ve(this.configTopic),this.initialized=!1,this.initCounter=0,this.graphRefreshCounter=0,this.rawDataPacks=[],Rn(),ot.value=!0},deactivate(){this.unsubscribeRefresh(),this.unsubscribeUpdates(),De(this.configTopic)},subscribeRefresh(){for(let t=1;t<17;t++)Ve(this.refreshTopicPrefix+t)},unsubscribeRefresh(){for(let t=1;t<17;t++)De(this.refreshTopicPrefix+t)},subscribeUpdates(){Ve(this.updateTopic)},unsubscribeUpdates(){De(this.updateTopic)}}),J=F({topic:"openWB/log/daily/#",date:new Date,activate(){if(h.graphMode=="day"||h.graphMode=="today"){h.graphMode=="today"&&(this.date=new Date);const t=this.date.getFullYear().toString()+(this.date.getMonth()+1).toString().padStart(2,"0")+this.date.getDate().toString().padStart(2,"0");Ve(this.topic),xt({command:"getDailyLog",data:{day:t}})}},deactivate(){De(this.topic)},back(){this.date=new Date(this.date.setTime(this.date.getTime()-864e5))},forward(){this.date=new Date(this.date.setTime(this.date.getTime()+864e5))},setDate(t){this.date=t},getDate(){return this.date}}),Ie=F({topic:"openWB/log/monthly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(){const t=this.year.toString()+this.month.toString().padStart(2,"0");h.data=[],Ve(this.topic),xt({command:"getMonthlyLog",data:{month:t}})},deactivate(){De(this.topic)},back(){this.month-=1,this.month<1&&(this.month=12,this.year-=1),this.activate()},forward(){const t=new Date;t.getFullYear()==this.year?this.month-1<t.getMonth()&&(this.month=this.month+1):(this.month=this.month+1,this.month>12&&(this.month=1,this.year+=1)),this.activate()},getDate(){return new Date(this.year,this.month)}}),Oe=F({topic:"openWB/log/yearly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(){const t=this.year.toString();h.data=[],Ve(this.topic),xt({command:"getYearlyLog",data:{year:t}})},deactivate(){De(this.topic)},back(){this.year-=1,this.activate()},forward(){this.year<new Date().getFullYear()&&(this.year=this.year+1,this.activate())},getDate(){return new Date(this.year,this.month)}});function K(t=!1){switch(h.graphMode==""?Un(f.graphPreference):h.graphMode=="live"?f.graphPreference="live":f.graphPreference="today",t||(it=!0,He=!0),h.graphMode){case"live":J.deactivate(),Ie.deactivate(),Oe.deactivate(),Z.activate();break;case"today":Z.deactivate(),Ie.deactivate(),Oe.deactivate(),J.activate();break;case"day":Z.deactivate(),Ie.deactivate(),Oe.deactivate(),J.activate();break;case"month":Z.deactivate(),J.deactivate(),Oe.deactivate(),Ie.activate();break;case"year":Z.deactivate(),J.deactivate(),Ie.deactivate(),Oe.activate();break}}function Un(t){h.graphMode=t}function zn(t,e){e[t]>0&&(P.items[t].energyPv+=1e3/12*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),P.items[t].energyBat+=1e3/12*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}function Fn(t,e){e[t]>0&&(P.items[t].energyPv+=1e3*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),P.items[t].energyBat+=1e3*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}const Jn=["evuIn","pv","batIn","evuOut"],Fe=_e(!1);function $t(t,e){Object.entries(t).length>0?(Fe.value=!1,Object.entries(t.counter).forEach(([a,n])=>{(e.length==0||e.includes(a))&&(P.items.evuIn.energy+=n.energy_imported,P.items.evuOut.energy+=n.energy_exported)}),P.items.pv.energy=t.pv.all.energy_exported,t.bat.all&&(P.items.batIn.energy=t.bat.all.energy_imported,P.items.batOut.energy=t.bat.all.energy_exported),Object.entries(t.cp).forEach(([a,n])=>{a=="all"?P.setEnergy("charging",n.energy_imported):P.setEnergy(a,n.energy_imported)}),P.setEnergy("devices",0),Object.entries(t.sh).forEach(([a,n])=>{P.setEnergy(a,n.energy_imported);const r=a.substring(2);E[+r].countAsHouse||(P.items.devices.energy+=n.energy_imported)}),t.hc&&t.hc.all?P.setEnergy("house",t.hc.all.energy_imported):P.calculateHouseEnergy(),P.keys().map(a=>{Jn.includes(a)||(P.setPvPercentage(a,Math.round((P.items[a].energyPv+P.items[a].energyBat)/P.items[a].energy*100)),Pt.includes(a)&&(I[a].energy=P.items[a].energy,I[a].energyPv=P.items[a].energyPv,I[a].energyBat=P.items[a].energyBat,I[a].pvPercentage=P.items[a].pvPercentage))}),h.graphMode=="today"&&(Object.values(w).map(a=>{const n=P.items["cp"+a.id];n&&(a.energyPv=n.energyPv,a.energyBat=n.energyBat,a.pvPercentage=n.pvPercentage)}),Object.values(E).map(a=>{const n=P.items["sh"+a.id];n&&(a.energy=n.energy,a.energyPv=n.energyPv,a.energyBat=n.energyBat,a.pvPercentage=n.pvPercentage)}))):Fe.value=!0,ot.value=!0}function Rn(){P.keys().map(t=>{Pt.includes(t)&&(I[t].energy=P.items[t].energy,I[t].energyPv=0,I[t].energyBat=0,I[t].pvPercentage=0)}),Object.values(w).map(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0}),Object.values(E).map(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0})}const Se=p(()=>{const t=Le(h.data,e=>e.date);return t[1]?_t().domain(Array.from({length:t[1]},(e,a)=>a+1)).paddingInner(.4).range([0,Pe-L.left-2]):_t().range([0,0])});function It(){switch(h.graphMode){case"live":h.graphMode="today",f.showRightButton=!0,K();break;case"today":h.graphMode="day",J.date=new Date,J.back(),K();break;case"day":J.back(),K();break;case"month":Ie.back();break;case"year":Oe.back();break}}function ta(){const t=new Date;switch(h.graphMode){case"live":break;case"today":h.graphMode="live",f.showRightButton=!1,K();break;case"day":J.forward(),J.date.getDate()==t.getDate()&&J.date.getMonth()==t.getMonth()&&J.date.getFullYear()==t.getFullYear()&&(h.graphMode="today"),K();break;case"month":Ie.forward();break;case"year":Oe.forward();break}}function aa(){switch(h.graphMode){case"live":It();break;case"day":case"today":h.graphMode="month",K();break;case"month":h.graphMode="year",K();break}}function na(){switch(h.graphMode){case"year":h.graphMode="month",K();break;case"month":h.graphMode="today",K();break;case"today":case"day":h.graphMode="live",K();break}}function Hn(t){if(h.graphMode=="day"||h.graphMode=="today"){J.setDate(t);const e=new Date;J.date.getDate()==e.getDate()&&J.date.getMonth()==e.getMonth()&&J.date.getFullYear()==e.getFullYear()?h.graphMode="today":h.graphMode="day",K()}}const Yn=["origin","transform"],qn=A({__name:"PGSourceGraph",props:{width:{},height:{},margin:{}},setup(t){const e=t,a={house:"var(--color-house)",batIn:"var(--color-battery)",inverter:"var(--color-pv)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)"};var n,r;const o=f.showAnimations?f.animationDuration:0,u=f.showAnimations?f.animationDelay:0,d=p(()=>{const S=ye("g#pgSourceGraph");h.graphMode=="month"||h.graphMode=="year"?C(S):H(S),S.selectAll(".axis").remove();const _=S.append("g").attr("class","axis");return _.call(se.value),_.selectAll(".tick").attr("font-size",12),_.selectAll(".tick line").attr("stroke",z.value).attr("stroke-width",D.value),_.select(".domain").attr("stroke","var(--color-bg)"),"pgSourceGraph.vue"}),s=p(()=>h.graphMode=="month"||h.graphMode=="year"?["evuIn","batOut","selfUsage","evuOut"]:["selfUsage","evuOut","batOut","evuIn"]),m=p(()=>Te().domain([0,h.data.length-1]).range([0,e.width])),v=p(()=>Ut().keys(s.value)),B=p(()=>v.value(h.data)),k=p(()=>Te().range([e.height-10,0]).domain(h.graphMode=="year"?[0,Math.ceil(R.value[1]*10)/10]:[0,Math.ceil(R.value[1])])),R=p(()=>{let S=Le(h.data,_=>Math.max(_.pv+_.evuIn+_.batOut,_.selfUsage+_.evuOut));return S[0]!=null&&S[1]!=null?(h.graphMode=="year"&&(S[0]=S[0]/1e3,S[1]=S[1]/1e3),S):[0,0]}),te=p(()=>h.graphMode=="month"||h.graphMode=="year"?-e.width-e.margin.right-22:-e.width),se=p(()=>dt(k.value).tickSizeInner(te.value).ticks(4).tickFormat(S=>(S==0?"":Math.round(S*10)/10).toLocaleString(void 0))),D=p(()=>f.showGrid?"0.5":"1"),z=p(()=>f.showGrid?"var(--color-grid)":"var(--color-bg)");function H(S){const _=at().x((V,re)=>m.value(re)).y(k.value(0)),O=at().x((V,re)=>m.value(re)).y0(V=>k.value(h.graphMode=="year"?V[0]/1e3:V[0])).y1(V=>k.value(h.graphMode=="year"?V[1]/1e3:V[1]));it?(S.selectAll("*").remove(),n=S.selectAll(".sourceareas").data(B.value).enter().append("path").attr("fill",(V,re)=>a[s.value[re]]).attr("d",V=>_(V)),n.transition().duration(o).delay(u).ease(je).attr("d",V=>O(V)),Lt()):n.data(B.value).transition().duration(0).ease(je).attr("d",V=>O(V))}function C(S){it?(S.selectAll("*").remove(),r=S.selectAll(".sourcebar").data(B.value).enter().append("g").attr("fill",(_,O)=>a[s.value[O]]).selectAll("rect").data(_=>_).enter().append("rect").attr("x",(_,O)=>Se.value(h.data[O].date)??0).attr("y",()=>k.value(0)).attr("height",0).attr("width",Se.value.bandwidth()),r.transition().duration(o).delay(u).ease(je).attr("height",_=>h.graphMode=="year"?k.value(_[0]/1e3)-k.value(_[1]/1e3):k.value(_[0])-k.value(_[1])).attr("y",_=>h.graphMode=="year"?k.value(_[1]/1e3):k.value(_[1])),Lt()):(S.selectAll("*").remove(),r=S.selectAll(".sourcebar").data(B.value).enter().append("g").attr("fill",(_,O)=>a[s.value[O]]).selectAll("rect").data(_=>_).enter().append("rect").attr("x",(_,O)=>Se.value(h.data[O].date)??0).attr("y",_=>h.graphMode=="year"?k.value(_[1]/1e3):k.value(_[1])).attr("width",Se.value.bandwidth()).attr("height",_=>h.graphMode=="year"?k.value(_[0]/1e3)-k.value(_[1]/1e3):k.value(_[0])-k.value(_[1])))}return(S,_)=>(g(),b("g",{id:"pgSourceGraph",origin:d.value,transform:"translate("+S.margin.left+","+S.margin.top+")"},null,8,Yn))}}),Qn=["origin","transform"],Zn=A({__name:"PGUsageGraph",props:{width:{},height:{},margin:{},stackOrder:{}},setup(t){const e=t,a=[["house","charging","devices","batIn"],["charging","devices","house","batIn"],["devices","charging","house","batIn"]],n={house:"var(--color-house)",charging:"var(--color-charging)",batIn:"var(--color-battery)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)",cp0:"var(--color-cp0)",cp1:"var(--color-cp1)",cp2:"var(--color-cp2)",cp3:"var(--color-cp3)",sh1:"var(--color-sh1)",sh2:"var(--color-sh2)",sh3:"var(--color-sh3)",sh4:"var(--color-sh4)",devices:"var(--color-devices)"};var r,o;const u=f.showAnimations?f.animationDuration:0,d=f.showAnimations?f.animationDelay:0,s=p(()=>{const C=ye("g#pgUsageGraph");h.graphMode=="month"||h.graphMode=="year"?H(C):z(C),C.selectAll(".axis").remove();const S=C.append("g").attr("class","axis");return S.call(D.value),S.selectAll(".tick").attr("font-size",12).attr("color","var(--color-axis)"),f.showGrid?S.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):S.selectAll(".tick line").attr("stroke","var(--color-bg)"),S.select(".domain").attr("stroke","var(--color-bg)"),"pgUsageGraph.vue"}),m=p(()=>Ut().keys(R.value)),v=p(()=>m.value(h.data)),B=p(()=>Te().domain([0,h.data.length-1]).range([0,e.width])),k=p(()=>Te().range([e.height+10,2*e.height]).domain(h.graphMode=="year"?[0,Math.ceil(te.value[1]*10)/10]:[0,Math.ceil(te.value[1])])),R=p(()=>{if(h.graphMode!="today"&&h.graphMode!="day")return a[e.stackOrder];{const C=a[e.stackOrder].slice(),S=C.indexOf("charging");C.splice(S,1);const _=/cp\d+/;let O=[];return h.data.length>0&&(O=Object.keys(h.data[0]).reduce((V,re)=>(re.match(_)&&V.push(re),V),[])),O.map((V,re)=>{C.splice(S+re,0,V),n[V]="var(--color-cp"+re+")"}),C}}),te=p(()=>{let C=Le(h.data,S=>S.house+S.charging+S.batIn+S.devices);return C[0]!=null&&C[1]!=null?(h.graphMode=="year"&&(C[0]=C[0]/1e3,C[1]=C[1]/1e3),C):[0,0]}),se=p(()=>h.graphMode=="month"||h.graphMode=="year"?-e.width-e.margin.right-22:-e.width),D=p(()=>dt(k.value).tickSizeInner(se.value).ticks(4).tickFormat(C=>(C==0?"":Math.round(C*10)/10).toLocaleString(void 0)));function z(C){const S=at().x((O,V)=>B.value(V)).y(k.value(0)),_=at().x((O,V)=>B.value(V)).y0(O=>k.value(O[0])).y1(O=>k.value(O[1]));f.showAnimations?He?(C.selectAll("*").remove(),r=C.selectAll(".usageareas").data(v.value).enter().append("path").attr("d",O=>S(O)).attr("fill",(O,V)=>n[R.value[V]]),r.transition().duration(300).delay(100).ease(je).attr("d",O=>_(O)),Dt()):(C.selectAll("*").remove(),C.selectAll(".usageareas").data(v.value).enter().append("path").attr("d",O=>_(O)).attr("fill",(O,V)=>n[R.value[V]])):(C.selectAll("*").remove(),C.selectAll(".usageareas").data(v.value).enter().append("path").attr("d",O=>_(O)).attr("fill",(O,V)=>n[R.value[V]]))}function H(C){He?(C.selectAll("*").remove(),o=C.selectAll(".usagebar").data(v.value).enter().append("g").attr("fill",(S,_)=>n[a[e.stackOrder][_]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,_)=>Se.value(h.data[_].date)??0).attr("y",()=>k.value(0)).attr("height",0).attr("width",Se.value.bandwidth()),o.transition().duration(u).delay(d).ease(je).attr("y",S=>h.graphMode=="year"?k.value(S[0]/1e3):k.value(S[0])).attr("height",S=>h.graphMode=="year"?k.value(S[1]/1e3)-k.value(S[0]/1e3):k.value(S[1])-k.value(S[0])),Dt()):(C.selectAll("*").remove(),o=C.selectAll(".usagebar").data(v.value).enter().append("g").attr("fill",(S,_)=>n[a[e.stackOrder][_]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,_)=>Se.value(h.data[_].date)??0).attr("y",S=>h.graphMode=="year"?k.value(S[0]/1e3):k.value(S[0])).attr("height",S=>h.graphMode=="year"?k.value(S[1]/1e3)-k.value(S[0]/1e3):k.value(S[1])-k.value(S[0])).attr("width",Se.value.bandwidth()))}return(C,S)=>(g(),b("g",{id:"pgUsageGraph",origin:s.value,transform:"translate("+C.margin.left+","+C.margin.top+")"},null,8,Qn))}}),Xn=["transform"],Kn=["origin","transform"],er=["origin","transform"],tr={key:0},ar=["width","height"],nr={key:1},rr=["y","width","height"],pt=12,or=A({__name:"PGXAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=p(()=>Ke(d.value).ticks(4).tickSizeInner(u.value).tickFormat(yt("%H:%M"))),n=p(()=>ya(d.value).ticks(4).tickSizeInner(u.value+3).tickFormat(yt(""))),r=p(()=>Ke(Se.value).ticks(4).tickSizeInner(u.value).tickFormat(v=>v.toString())),o=p(()=>Ke(Se.value).ticks(4).tickSizeInner(u.value).tickFormat(()=>"")),u=p(()=>h.graphMode!=="month"&&h.graphMode!=="year"?f.showGrid?-(e.height/2-7):-10:0),d=p(()=>{let v=Le(h.data,B=>B.date);return v[0]&&v[1]?Re().domain(v).range([0,e.width]):Re().range([0,0])}),s=p(()=>{let v=ye("g#PGXAxis");return v.selectAll("*").remove(),h.graphMode=="month"||h.graphMode=="year"?v.call(r.value):v.call(a.value),v.selectAll(".tick > text").attr("fill",(B,k)=>k>0||h.graphMode=="month"||h.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",pt),f.showGrid?v.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):v.selectAll(".tick line").attr("stroke","var(--color-bg)"),v.select(".domain").attr("stroke","var(--color-bg)"),v.append("text").attr("x",-e.margin.left).attr("y",12).attr("fill","var(--color-axis)").attr("font-size",pt).text(h.graphMode=="year"?"MW":"kW").attr("text-anchor","start"),"PGXAxis.vue"}),m=p(()=>{let v=ye("g#PGXAxis2");return v.selectAll("*").remove(),h.graphMode=="month"||h.graphMode=="year"?v.call(o.value):v.call(n.value),v.selectAll(".tick > text").attr("fill",(B,k)=>k>0||h.graphMode=="month"||h.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",pt),f.showGrid?(v.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"),v.select(".domain").attr("stroke","var(--color-bg)")):v.selectAll(".tick line").attr("stroke","var(--color-bg)"),v.select(".domain").attr("stroke","var(--color-bg)"),"PGXAxis2.vue"});return(v,B)=>(g(),b("g",{transform:"translate("+v.margin.left+","+v.margin.top+")"},[l("g",{id:"PGXAxis",class:"axis",origin:s.value,transform:"translate(0,"+(v.height/2-6)+")"},null,8,Kn),l("g",{id:"PGXAxis2",class:"axis",origin:m.value,transform:"translate(0,"+(v.height/2+10)+")"},null,8,er),i(f).showGrid?(g(),b("g",tr,[l("rect",{x:"0",y:"0",width:v.width,height:v.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,ar)])):M("",!0),i(f).showGrid?(g(),b("g",nr,[l("rect",{x:"0",y:v.height/2+10,width:v.width,height:v.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,rr)])):M("",!0)],8,Xn))}}),sr=["d"],ir=["d","stroke"],cr=["x","y","text-anchor"],gt=A({__name:"PgSoc",props:{width:{},height:{},margin:{},order:{}},setup(t){const e=t,a=p(()=>{let k=Le(h.data,R=>R.date);return k[0]&&k[1]?Re().domain(k).range([0,e.width]):Re().range([0,0])}),n=p(()=>Te().range([e.height-10,0]).domain([0,100])),r=p(()=>zt().x(te=>a.value(te.date)).y(te=>n.value(e.order==2?te.batSoc:te["soc"+m.value.connectedVehicle])??n.value(0))(h.data)??""),o=p(()=>e.order==2?"Speicher":m.value.connectedVehicle),u=p(()=>e.order==2?"Speicher":m.value.vehicleName),d=p(()=>{switch(e.order){case 0:return"var(--color-cp1)";case 1:return"var(--color-cp2)";case 2:return"var(--color-battery)";default:return"red"}}),s=p(()=>{switch(e.order){case 0:return e.width-3;case 1:return 3;case 2:return e.width/2;default:return 0}}),m=p(()=>{const k=e.order==2?0:e.order;return Object.values(w)[k]}),v=p(()=>{if(h.data.length>0){let k;switch(e.order){case 0:return k=h.data.length-1,n.value(h.data[k]["soc"+o.value]+2);case 1:return k=0,n.value(h.data[k]["soc"+o.value]+2);case 2:return k=Math.round(h.data.length/2),n.value(h.data[k].batSoc+2);default:return 0}}else return 0}),B=p(()=>{switch(e.order){case 0:return"end";case 1:return"start";case 2:return"middle";default:return"middle"}});return(k,R)=>(g(),b(ke,null,[l("path",{class:"soc-baseline",d:r.value,stroke:"var(--color-bg)","stroke-width":"1",fill:"none"},null,8,sr),l("path",{class:"soc-dashes",d:r.value,stroke:d.value,"stroke-width":"1",style:{strokeDasharray:"3,3"},fill:"none"},null,8,ir),l("text",{class:"cpname",x:s.value,y:v.value,style:ee({fill:d.value,fontSize:10}),"text-anchor":B.value},$(u.value),13,cr)],64))}}),lr=["transform"],dr=A({__name:"PgSocAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=p(()=>Te().range([e.height-10,0]).domain([0,100])),n=p(()=>ba(a.value).ticks(5).tickFormat(o=>o.toString()+"%"));function r(){let o=ye("g#PGSocAxis");o.call(n.value),o.selectAll(".tick").attr("font-size",12),o.selectAll(".tick line").attr("stroke","var(--color-bg)"),o.select(".domain").attr("stroke","var(--color-bg)")}return lt(()=>{r()}),(o,u)=>(g(),b("g",{id:"PGSocAxis",class:"axis",transform:"translate("+(o.width-20)+",0)"},null,8,lr))}}),ur={class:"btn-group m-0",role:"group","aria-label":"radiobar"},hr=["id","value"],pr=A({__name:"RadioBarInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,r=p({get(){return a.modelValue},set(d){n("update:modelValue",d)}});function o(d){let s=a.options[d].color?a.options[d].color:"var(--color-fg)";return a.options[d].active?{color:"var(--color-bg)",background:s}:{color:s}}function u(d){let s=d.target;for(;s&&!s.value&&s.parentElement;)s=s.parentElement;s.value&&(r.value=s.value)}return(d,s)=>(g(),b("div",null,[l("div",ur,[(g(!0),b(ke,null,Ae(d.options,(m,v)=>(g(),b("button",{id:"radio-"+m.value,key:v,class:ae(["btn btn-outline-secondary btn-sm radiobutton mx-0 mb-0 px-2",m.value==r.value?"active":""]),value:m.value,style:ee(o(v)),onClick:u},[l("span",{style:ee(o(v)),class:"scaled"},[m.icon?(g(),b("i",{key:0,class:ae(["fa-solid",m.icon])},null,2)):M("",!0),W(" "+$(m.text),1)],4)],14,hr))),128))])]))}}),ra=N(pr,[["__scopeId","data-v-60f5d4c2"]]),Ct=t=>(ce("data-v-7fd067cd"),t=t(),le(),t),gr=Ct(()=>l("i",{class:"fa-solid fa-xl fa-chevron-circle-up"},null,-1)),mr=[gr],vr=Ct(()=>l("span",{class:"fa-solid fa-xl fa-chevron-circle-left arrowButton"},null,-1)),fr=[vr],_r=Ct(()=>l("span",{class:"fa-solid fa-xl fa-circle-check"},null,-1)),yr=[_r],br=A({__name:"PgSelector",props:{widgetid:{},showLeftButton:{type:Boolean},showRightButton:{type:Boolean},ignoreLive:{type:Boolean}},emits:["shiftLeft","shiftRight","shiftUp","shiftDown"],setup(t){const e=t,a=_e(0),n=p(()=>{switch(h.graphMode){case"live":return e.ignoreLive?"heute":`${Z.duration} min`;case"today":return"heute";case"day":return J.date.getDate()+"."+(J.date.getMonth()+1)+".";case"month":return $a(Ie.month-1,Ie.year);case"year":return Oe.year.toString();default:return"???"}}),r=["live","today","day","month","year"],o=["Live","Heute","Tag","Monat","Jahr"],u=p({get(){return h.graphMode},set(D){switch(D){case"day":m();break;case"today":v();break;case"live":s();break;case"month":B();break;case"year":k()}}});function d(){a.value+=1,a.value>1&&(a.value=0)}function s(){h.graphMode!="live"&&(h.graphMode="live",K())}function m(){h.graphMode!="day"&&h.graphMode!="today"&&(h.graphMode="day",K())}function v(){h.graphMode!="today"&&(h.graphMode="today",Hn(new Date),K())}function B(){h.graphMode!="month"&&(h.graphMode="month",K())}function k(){h.graphMode!="year"&&(h.graphMode="year",K())}const R=p(()=>a.value>0?{border:"1px solid var(--color-frame)"}:""),te=p(()=>a.value==1?"justify-content-between":"justify-content-end"),se=p(()=>a.value==1?"justify-content-between":"justify-content-center");return(D,z)=>(g(),b("div",{class:"d-flex flex-column justify-content-center pgselector rounded",style:ee(R.value)},[a.value==2?(g(),T(ra,{key:0,id:"pgm2",modelValue:u.value,"onUpdate:modelValue":z[0]||(z[0]=H=>u.value=H),class:"m-2",options:r.map((H,C)=>({text:o[C],value:H,color:"var(--color-menu)",active:H==i(h).graphMode}))},null,8,["modelValue","options"])):M("",!0),a.value==1?(g(),b("span",{key:1,type:"button",class:ae(["arrowButton d-flex align-self-center mb-3 mt-3",{disabled:!e.showLeftButton}]),onClick:z[1]||(z[1]=H=>D.$emit("shiftUp"))},mr,2)):M("",!0),l("div",{class:ae(["d-flex align-items-center",se.value])},[a.value==1?(g(),b("span",{key:0,type:"button",class:ae(["p-1",{disabled:!e.showLeftButton}]),onClick:z[2]||(z[2]=H=>D.$emit("shiftLeft"))},fr,2)):M("",!0),a.value<2?(g(),b("span",{key:1,type:"button",class:"btn-outline-secondary p-2 px-3 badge rounded-pill datebadge",onClick:d},$(n.value),1)):M("",!0),a.value==1?(g(),b("span",{key:2,id:"graphRightButton",type:"button",class:ae(["arrowButton fa-solid fa-xl fa-chevron-circle-right p-1",{disabled:!e.showRightButton}]),onClick:z[3]||(z[3]=H=>D.$emit("shiftRight"))},null,2)):M("",!0)],2),l("div",{class:ae(["d-flex align-items-center",te.value])},[a.value==1?(g(),b("span",{key:0,class:"fa-solid fa-xl fa-chevron-circle-down p-1",style:ee({color:"var(--color-bg)"})},null,4)):M("",!0),a.value==1?(g(),b("span",{key:1,id:"graphLeftButton",type:"button",class:ae(["arrowButton fa-solid fa-xl fa-chevron-circle-down p-1",{disabled:!e.showLeftButton}]),onClick:z[4]||(z[4]=H=>D.$emit("shiftDown"))},null,2)):M("",!0),a.value>0?(g(),b("span",{key:2,type:"button",class:"p-1",onClick:z[5]||(z[5]=H=>a.value=0)},yr)):M("",!0)],2)],4))}}),oa=N(br,[["__scopeId","data-v-7fd067cd"]]),wr={class:"d-flex justify-content-end"},Sr={class:"grid-col-12"},kr=["viewBox"],xr=["transform"],Mr=2,Pr="Leistung / Ladestand ",$r=A({__name:"PowerGraph",setup(t){function e(){let a=f.usageStackOrder+1;a>Mr&&(a=0),f.usageStackOrder=a,Nn(!0)}return(a,n)=>(g(),T(ut,null,{title:x(()=>[W($(Pr))]),buttons:x(()=>[l("div",wr,[y(oa,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!1,onShiftLeft:i(It),onShiftRight:i(ta),onShiftUp:i(aa),onShiftDown:i(na)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])])]),default:x(()=>[l("div",Sr,[l("figure",{id:"powergraph",class:"p-0 m-0 align-self-stretch",onClick:e},[(g(),b("svg",{viewBox:"0 0 "+i(Pe)+" "+i(Ce)},[y(qn,{width:i(Pe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L)},null,8,["width","height","margin"]),y(Zn,{width:i(Pe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),"stack-order":i(f).usageStackOrder},null,8,["width","height","margin","stack-order"]),y(or,{width:i(Pe)-i(L).left-2*i(L).right,height:i(Ce)-i(L).top-i(L).bottom,margin:i(L),"graph-data":i(h)},null,8,["width","height","margin","graph-data"]),l("g",{transform:"translate("+i(L).left+","+i(L).top+")"},[(i(h).graphMode=="day"||i(h).graphMode=="today"||i(h).graphMode=="live")&&Object.values(i(w)).length>0?(g(),T(gt,{key:0,width:i(Pe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),order:0},null,8,["width","height","margin"])):M("",!0),(i(h).graphMode=="day"||i(h).graphMode=="today"||i(h).graphMode=="live")&&Object.values(i(w)).length>1?(g(),T(gt,{key:1,width:i(Pe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),order:1},null,8,["width","height","margin"])):M("",!0),["day","today","live"].includes(i(h).graphMode)&&i(U).isBatteryConfigured?(g(),T(gt,{key:2,width:i(Pe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),order:2},null,8,["width","height","margin"])):M("",!0),["day","today","live"].includes(i(h).graphMode)?(g(),T(dr,{key:3,width:i(Pe)-i(L).left-i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L)},null,8,["width","height","margin"])):M("",!0)],8,xr)],8,kr))])])]),_:1}))}}),Ir=N($r,[["__scopeId","data-v-ba892fa4"]]),Cr=["id"],Or=["x","width","height","fill"],Br=["x","width","height"],Tr=["x","y","width","height"],Ar=A({__name:"EmBar",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=p(()=>e.height-e.yScale(e.item.energy)-e.margin.top-e.margin.bottom),n=p(()=>e.item.energyPv>0?e.height-e.yScale(e.item.energyPv)-e.margin.top-e.margin.bottom:0),r=p(()=>e.item.energyPv>0?e.height-e.yScale(e.item.energyBat)-e.margin.top-e.margin.bottom:0);return(o,u)=>(g(),b("g",{id:"bar-"+e.item.name,transform:"scale(1,-1) translate (0,-445)"},[l("rect",{class:"bar",x:e.xScale(o.item.name),y:"0",width:e.xScale.bandwidth(),height:a.value,fill:o.item.color},null,8,Or),l("rect",{class:"bar",x:e.xScale(o.item.name)+e.xScale.bandwidth()/6,y:"0",width:e.xScale.bandwidth()*2/3,height:n.value,fill:"var(--color-pv)","fill-opacity":"66%"},null,8,Br),l("rect",{class:"bar",x:e.xScale(o.item.name)+e.xScale.bandwidth()/6,y:n.value,width:e.xScale.bandwidth()*2/3,height:r.value,fill:"var(--color-battery)","fill-opacity":"66%"},null,8,Tr)],8,Cr))}}),Vr={id:"emBargraph"},Lr=l("animateTransform",{"attribute-name":"transform",type:"scale",from:"1 0",to:"1 1",begin:"0s",dur:"2s"},null,-1),Dr=A({__name:"EMBarGraph",props:{plotdata:{},xScale:{},yScale:{},margin:{},height:{}},setup(t){const e=t;function a(r){if(r.name=="PV"){const o=h.graphMode=="live"||h.graphMode=="day"?G:P.items,d=(h.graphMode=="live"||h.graphMode=="day"?I:P.items).evuOut.energy,s=o.pv.energy;return Math.round((s-d)/s*100)}else if(r.name=="Netz"){const o=h.graphMode=="live"||h.graphMode=="day"?G:P.items,u=h.graphMode=="live"||h.graphMode=="day"?I:P.items,d=u.evuOut.energy,s=o.evuIn.energy,m=o.pv.energy,v=o.batOut.energy,B=u.batIn.energy;return Math.round((m+v-d-B)/(m+v+s-d-B)*100)}else return r.pvPercentage}function n(r){return r.name=="PV"?"Eigen":"Aut"}return(r,o)=>(g(),b("g",Vr,[(g(!0),b(ke,null,Ae(e.plotdata,(u,d)=>(g(),b("g",{key:d},[y(Ar,{item:u,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":n(u),autarchy:a(u)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128)),Lr]))}}),Er=["origin"],Gr=A({__name:"EMYAxis",props:{yScale:{type:[Function,Object]},width:{},fontsize:{}},setup(t){const e=t,a=p(()=>dt(e.yScale).tickFormat(r=>r>0?(r/1e3).toString():"").ticks(6).tickSizeInner(-e.width)),n=p(()=>{const r=ye("g#emYAxis");return r.attr("class","axis").call(a.value),r.append("text").attr("y",6).attr("dy","0.71em").attr("text-anchor","end").text("energy"),r.selectAll(".tick").attr("font-size",e.fontsize),f.showGrid?r.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):r.selectAll(".tick line").attr("stroke","var(--color-bg)"),r.select(".domain").attr("stroke","var(--color-bg)"),"emYAxis.vue"});return(r,o)=>(g(),b("g",{id:"emYAxis",class:"axis",origin:n.value},null,8,Er))}}),Wr=["id"],jr=["x","y","font-size"],Nr=["x","y","font-size","fill"],Ur=["x","y","font-size","fill"],zr=A({__name:"EmLabel",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=p(()=>e.autarchy?e.yScale(e.item.energy)-25:e.yScale(e.item.energy)-10),n=p(()=>{let s=16,m=e.barcount;return m<=5?s=16:m==6?s=14:m>6&&m<=8?s=13:m==9?s=11:m==10?s=10:s=9,s}),r=p(()=>{let s=12,m=e.barcount;return m<=5?s=12:m==6?s=11:m>6&&m<=8||m==9?s=8:m==10?s=7:s=6,s});function o(s,m){return m.length>r.value?m.substring(0,r.value)+".":m}function u(){return e.autarchy?e.autText+": "+e.autarchy.toLocaleString(void 0)+" %":""}function d(){return"var(--color-pv)"}return(s,m)=>(g(),b("g",{id:"barlabel-"+e.item.name},[l("text",{x:e.xScale(s.item.name)+e.xScale.bandwidth()/2,y:a.value,"font-size":n.value,"text-anchor":"middle",fill:"var(--color-menu)"},$(i(Rt)(s.item.energy,i(f).decimalPlaces,!1)),9,jr),l("text",{x:e.xScale(s.item.name)+e.xScale.bandwidth()/2,y:e.yScale(s.item.energy)-10,"font-size":n.value-2,"text-anchor":"middle",fill:d()},$(u()),9,Nr),l("text",{x:e.xScale(s.item.name)+e.xScale.bandwidth()/2,y:e.height-e.margin.bottom-5,"font-size":n.value,"text-anchor":"middle",fill:s.item.color,class:ae(s.item.icon.length<=2?"fas":"")},$(o(s.item.name,s.item.icon)),11,Ur)],8,Wr))}}),Fr={id:"emBarLabels"},Jr=A({__name:"EMLabels",props:{plotdata:{},xScale:{},yScale:{},height:{},margin:{}},setup(t){const e=t;function a(r){if(r.name=="PV"){const o=h.graphMode=="live"||h.graphMode=="day"?G:P.items,d=(h.graphMode=="live"||h.graphMode=="day"?I:P.items).evuOut.energy,s=o.pv.energy;return Math.round((s-d)/s*100)}else if(r.name=="Netz"){const o=h.graphMode=="live"||h.graphMode=="day"?G:P.items,u=h.graphMode=="live"||h.graphMode=="day"?I:P.items,d=u.evuOut.energy,s=o.evuIn.energy,m=o.pv.energy,v=o.batOut.energy,B=u.batIn.energy;return m+v-d-B>0?Math.round((m+v-d-B)/(m+v+s-d-B)*100):0}else return r.pvPercentage}function n(r){return r.name=="PV"?"Eigen":"Aut"}return(r,o)=>(g(),b("g",Fr,[(g(!0),b(ke,null,Ae(e.plotdata,(u,d)=>(g(),b("g",{key:d},[y(zr,{item:u,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":n(u),autarchy:a(u)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128))]))}}),Rr={class:"grid-col-12"},Hr={id:"energymeter",class:"energymeter p-0 m-0 align-self-stretch"},Yr={viewBox:"0 0 500 500"},qr=["transform"],Qr=["x"],Zr={key:0},Et=500,mt=500,Gt=12,Xr="Energie",Kr=A({__name:"EnergyMeter",setup(t){const e={top:25,bottom:30,left:25,right:0},a=p(()=>{let u=Object.values(G),d=o.value,s=P.values(),m=[];switch(f.debug&&(console.debug("----------------------- source summary -----------------"),console.debug(G),console.debug("----------------------- usage details ------------------"),console.debug(o.value),console.debug("----------------------- historic summary ---------------"),console.debug(P),console.debug("--------------------------------------------------------")),ot.value==!0&&(ot.value=!1),h.graphMode){default:case"live":case"today":m=u.concat(d).filter(v=>v.energy>0);break;case"day":case"month":case"year":s.length==0?Fe.value=!0:(Fe.value=!1,m=s.filter(v=>v.energy>0))}return m}),n=p(()=>_t().range([0,Et-e.left-e.right]).domain(a.value.map(u=>u.name)).padding(.4)),r=p(()=>Te().range([mt-e.bottom-e.top,15]).domain([0,wa(a.value,u=>u.energy)])),o=p(()=>{const u=Object.values(w).length,d=Object.values(E).filter(s=>s.configured).length;return[I.evuOut,I.devices,I.charging].concat(u>1?Object.values(w).map(s=>s.toPowerItem()):[]).concat(d>1?Object.values(E).filter(s=>s.configured&&s.showInGraph):[]).concat([I.batIn,I.house])});return(u,d)=>(g(),T(ut,null,{title:x(()=>[W($(Xr))]),buttons:x(()=>[y(oa,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!0,onShiftLeft:i(It),onShiftRight:i(ta),onShiftUp:i(aa),onShiftDown:i(na)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])]),default:x(()=>[l("div",Rr,[l("figure",Hr,[(g(),b("svg",Yr,[l("g",{transform:"translate("+e.left+","+e.top+")"},[y(Dr,{plotdata:a.value,"x-scale":n.value,"y-scale":r.value,height:mt,margin:e},null,8,["plotdata","x-scale","y-scale"]),y(Gr,{"y-scale":r.value,width:Et,fontsize:Gt,config:i(f)},null,8,["y-scale","config"]),l("text",{x:-e.left,y:"-15",fill:"var(--color-axis)","font-size":Gt},$(i(h).graphMode=="year"?"MWh":"kWh"),9,Qr),y(Jr,{plotdata:a.value,"x-scale":n.value,"y-scale":r.value,height:mt,margin:e,config:i(f)},null,8,["plotdata","x-scale","y-scale","config"])],8,qr)]))])]),i(Fe)?(g(),b("p",Zr,"No data")):M("",!0)]),_:1}))}}),eo=N(Kr,[["__scopeId","data-v-69785337"]]),sa=t=>(ce("data-v-dff8d7c2"),t=t(),le(),t),to=["id"],ao={class:"modal-dialog modal-lg modal-fullscreen-lg-down"},no={class:"modal-content"},ro={class:"modal-header"},oo={class:"modal-title scaled"},so=sa(()=>l("button",{type:"button",class:"btn-close buttonTextSize d-flex justify-content-center pt-3 pb-0","data-bs-dismiss":"modal"},[l("i",{class:"fa-solid fa-lg fa-circle-check m-0 p-0"})],-1)),io={class:"modal-body"},co=sa(()=>l("div",{class:"modal-footer"},null,-1)),lo=A({__name:"ModalComponent",props:{modalId:{}},setup(t){const e=t;return(a,n)=>(g(),b("div",{id:e.modalId,class:"modal fade"},[l("div",ao,[l("div",no,[l("div",ro,[l("h3",oo,[ve(a.$slots,"title",{},void 0)]),so]),l("div",io,[ve(a.$slots,"default",{},void 0)]),co])])],8,to))}}),vt=N(lo,[["__scopeId","data-v-dff8d7c2"]]),uo={class:"digit scaled",type:"button"},ho=A({__name:"PadButton",props:{modelValue:{},color:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=_e(!1);function r(){n.value=!0,u("update:modelValue",a.modelValue),setTimeout(()=>{n.value=!1},300)}const o=p(()=>n.value?{"background-color":"white",color:"black"}:{"background-color":a.color??"var(--color-axis)"}),u=e;return(d,s)=>(g(),b("div",{class:"padbutton",style:ee(o.value),onClick:r},[l("span",uo,[ve(d.$slots,"default",{},void 0)])],4))}}),Qe=N(ho,[["__scopeId","data-v-cc256a6f"]]),ia=t=>(ce("data-v-63c8fa5c"),t=t(),le(),t),po={class:"numberpad"},go={class:"codedisplay scaled"},mo={class:"numberentry"},vo=ia(()=>l("span",{class:"fas fa-delete-left"},null,-1)),fo=ia(()=>l("span",{class:"fas fa-circle-check"},null,-1)),_o=A({__name:"NumberPad",props:{modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const n=_e(t.modelValue),r=e,o=p(()=>n.value.length==0?"Bitte geben Sie die PIN ein":"*".repeat(n.value.length));function u(d){d==-1?n.value=n.value.slice(0,-1):d==-2?(r("update:modelValue",n.value),n.value=""):n.value=n.value+d.toString()}return(d,s)=>(g(),b("div",po,[l("p",go,$(o.value),1),l("div",mo,[(g(),b(ke,null,Ae(9,m=>y(Qe,{key:m,"model-value":m,"onUpdate:modelValue":u},{default:x(()=>[W($(m),1)]),_:2},1032,["model-value"])),64)),y(Qe,{"model-value":0,"onUpdate:modelValue":u},{default:x(()=>[W("0")]),_:1}),y(Qe,{"model-value":-1,color:"var(--color-devices)","onUpdate:modelValue":u},{default:x(()=>[vo]),_:1}),y(Qe,{"model-value":-2,color:"var(--color-devices)","data-bs-dismiss":"modal","onUpdate:modelValue":u},{default:x(()=>[fo]),_:1})])]))}}),yo=N(_o,[["__scopeId","data-v-63c8fa5c"]]),qe=t=>(ce("data-v-6a182015"),t=t(),le(),t),bo={class:"statustable"},wo=qe(()=>l("span",{class:"header"},"IP-Adresse:",-1)),So=qe(()=>l("span",{class:"header"},"Systemzeit:",-1)),ko=qe(()=>l("span",{class:"header"},"Version:",-1)),xo=qe(()=>l("span",{class:"header"},"Version (Details):",-1)),Mo=qe(()=>l("span",{class:"header"},"Entwicklungszweig:",-1)),Po=A({__name:"StatusPage",setup(t){return(e,a)=>(g(),b("div",bo,[wo,l("span",null,$(i(U).ipAddress),1),So,l("span",null,$(new Date(i(U).systemTime*1e3).toLocaleString(void 0)),1),ko,l("span",null,$(i(U).version),1),xo,l("span",null,$(i(U).versionDetails),1),Mo,l("span",null,$(i(U).devBranch),1)]))}}),$o=N(Po,[["__scopeId","data-v-6a182015"]]),Io={class:"configitem subgrid"},Co={class:"d-flex align-items-baseline m-0 p-0 grid-col-6 scaled"},Oo={class:"ms-1 mb-2 p-0 pt-2 d-flex justify-content-stretch align-items-center grid-col-6"},Bo={class:"justify-content-stretch d-flex"},To=A({__name:"ConfigItem",props:{title:{},infotext:{},icon:{},iconcolor:{},fullwidth:{type:Boolean}},setup(t){const e=t;return(a,n)=>(g(),b("div",Io,[l("span",Co,[e.icon?(g(),b("i",{key:0,class:ae(["fa-solid fa-sm m-0 p-0 me-2 item-icon",e.icon]),style:ee({color:e.iconcolor?e.iconcolor:"var(--color-charging)"})},null,6)):M("",!0),W(" "+$(a.title),1)]),l("div",Oo,[l("span",Bo,[ve(a.$slots,"default",{},void 0)])])]))}}),Q=N(To,[["__scopeId","data-v-40d270c0"]]),ca=t=>(ce("data-v-0e01f92a"),t=t(),le(),t),Ao={class:"rangewidget d-flex flex-column"},Vo={class:"rangeslider d-flex flex-fill justify-content-between align-items-center"},Lo=ca(()=>l("i",{class:"fa fa-xl fa-minus-square me-2"},null,-1)),Do=[Lo],Eo=["id","min","max","step"],Go=ca(()=>l("i",{class:"fa fa-xl fa-plus-square ms-2"},null,-1)),Wo=[Go],jo={class:"d-flex justify-content-between align-items-center"},No={class:"minlabel ps-4"},Uo={class:"valuelabel"},zo={class:"maxlabel pe-4"},Fo=A({__name:"RangeInput",props:{id:{},min:{},max:{},step:{},unit:{},decimals:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=a.decimals??0,r=e,o=p({get(){return Math.round(a.modelValue*Math.pow(10,n))/Math.pow(10,n)},set(s){r("update:modelValue",s)}});function u(){o.value>a.min&&(o.value=Math.round((o.value-a.step)*Math.pow(10,n))/Math.pow(10,n))}function d(){o.value<a.max&&(o.value=Math.round((o.value+a.step)*Math.pow(10,n))/Math.pow(10,n))}return(s,m)=>(g(),b("span",Ao,[l("span",Vo,[l("span",{type:"button",class:"minusButton",onClick:u},Do),Ne(l("input",{id:s.id,"onUpdate:modelValue":m[0]||(m[0]=v=>o.value=v),type:"range",class:"form-range flex-fill",min:s.min,max:s.max,step:s.step},null,8,Eo),[[Sa,o.value,void 0,{number:!0}]]),l("span",{type:"button",class:"plusButton",onClick:d},Wo)]),l("span",jo,[l("span",No,$(s.min),1),l("span",Uo,$(o.value)+" "+$(s.unit),1),l("span",zo,$(s.max),1)])]))}}),Be=N(Fo,[["__scopeId","data-v-0e01f92a"]]),Jo=["id","value"],Ro=A({__name:"RadioInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,r=p({get(){return a.modelValue},set(d){n("update:modelValue",d)}});function o(d){return a.options[d][2]?{color:a.options[d][2]}:{color:"var(--color-fg)"}}function u(d){let s=d.target;for(;s&&!s.value&&s.parentElement;)s=s.parentElement;s.value&&(r.value=s.value)}return(d,s)=>(g(),b("div",null,[(g(!0),b(ke,null,Ae(d.options,(m,v)=>(g(),b("button",{id:"radio-"+m[1],key:v,class:ae(["btn btn-outline-secondary radiobutton me-2 mb-0 px-2",m[1]==r.value?"active":""]),value:m[1],style:ee(o(v)),onClick:u},[l("span",{style:ee(o(v)),class:"scaled"},[m[3]?(g(),b("i",{key:0,class:ae(["fa-solid",m[3]])},null,2)):M("",!0),W(" "+$(m[0]),1)],4)],14,Jo))),128))]))}}),tt=N(Ro,[["__scopeId","data-v-005a14a9"]]),Ho={class:"instantsettings mt-5 grid12"},Yo={key:0},qo=A({__name:"CPConfigInstant",props:{chargepointId:{}},setup(t){const e=t,a=p(()=>w[e.chargepointId]),n=[{name:"keine",id:"none"},{name:"EV-SoC",id:"soc"},{name:"Energiemenge",id:"amount"}],r=p({get(){return a.value.instantMaxEnergy/1e3},set(o){a.value.instantMaxEnergy=o*1e3}});return(o,u)=>(g(),b("div",Ho,[y(Q,{title:"Stromstärke",icon:"fa-bolt",fullwidth:!0},{default:x(()=>[y(Be,{id:"targetCurrent",modelValue:a.value.instantTargetCurrent,"onUpdate:modelValue":u[0]||(u[0]=d=>a.value.instantTargetCurrent=d),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1}),a.value.instantChargeLimitMode!="none"?(g(),b("hr",Yo)):M("",!0),y(Q,{title:"Begrenzung",icon:"fa-hand",fullwidth:!0},{default:x(()=>[y(tt,{modelValue:a.value.instantChargeLimitMode,"onUpdate:modelValue":u[1]||(u[1]=d=>a.value.instantChargeLimitMode=d),options:n.map(d=>[d.name,d.id])},null,8,["modelValue","options"])]),_:1}),a.value.instantChargeLimitMode=="soc"?(g(),T(Q,{key:1,title:"Maximaler SoC",icon:"fa-sliders",fullwidth:!0},{default:x(()=>[y(Be,{id:"maxSoc",modelValue:a.value.instantTargetSoc,"onUpdate:modelValue":u[2]||(u[2]=d=>a.value.instantTargetSoc=d),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),a.value.instantChargeLimitMode=="amount"?(g(),T(Q,{key:2,title:"Zu ladende Energie",icon:"fa-sliders",fullwidth:!0},{default:x(()=>[y(Be,{id:"maxEnergy",modelValue:r.value,"onUpdate:modelValue":u[3]||(u[3]=d=>r.value=d),min:0,max:100,step:1,unit:"kWh"},null,8,["modelValue"])]),_:1})):M("",!0)]))}}),Qo=N(qo,[["__scopeId","data-v-02d97261"]]),Zo={class:"form-check form-switch d-flex align-items-center justify-content-center"},Xo=A({__name:"SwitchInput",props:{modelValue:{type:Boolean},onColor:{},offColor:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,r=p({get(){return a.modelValue},set(o){n("update:modelValue",o)}});return(o,u)=>(g(),b("div",Zo,[Ne(l("input",{"onUpdate:modelValue":u[0]||(u[0]=d=>r.value=d),class:"form-check-input",type:"checkbox",role:"switch"},null,512),[[ka,r.value]])]))}}),ge=N(Xo,[["__scopeId","data-v-547e6de4"]]),Ko={class:"pvsettings pt-5 grid12"},es=A({__name:"CPConfigPv",props:{chargepointId:{}},setup(t){const e=t,a=p(()=>w[e.chargepointId]),n=p({get(){return a.value.pvMinCurrent>5},set(u){u?a.value.pvMinCurrent=6:a.value.pvMinCurrent=0}}),r=p({get(){return a.value.pvMinSoc>0},set(u){u?a.value.pvMinSoc=50:a.value.pvMinSoc=0}}),o=p({get(){return a.value.pvMaxSoc<=100},set(u){u?a.value.pvMaxSoc=100:a.value.pvMaxSoc=101}});return(u,d)=>(g(),b("div",Ko,[y(Q,{title:"Ladestand begrenzen",icon:"fa-battery-three-quarters",fullwidth:!0},{default:x(()=>[y(ge,{id:"limitSoc",modelValue:o.value,"onUpdate:modelValue":d[0]||(d[0]=s=>o.value=s)},null,8,["modelValue"])]),_:1}),o.value?(g(),T(Q,{key:0,title:"...auf maximal...",icon:"fa-battery-three-quarters",fullwidth:!0},{default:x(()=>[y(Be,{id:"maxSoc",modelValue:a.value.pvMaxSoc,"onUpdate:modelValue":d[1]||(d[1]=s=>a.value.pvMaxSoc=s),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),y(Q,{title:"Einspeisegrenze beachten",icon:"fa-hand",fullwidth:!0},{default:x(()=>[y(ge,{modelValue:a.value.pvFeedInLimit,"onUpdate:modelValue":d[2]||(d[2]=s=>a.value.pvFeedInLimit=s)},null,8,["modelValue"])]),_:1}),y(Q,{title:"Mindest-Ladestand",icon:"fa-battery-half",fullwidth:!0},{default:x(()=>[y(ge,{modelValue:r.value,"onUpdate:modelValue":d[3]||(d[3]=s=>r.value=s)},null,8,["modelValue"])]),_:1}),r.value?(g(),T(Q,{key:1,title:"...bis SoC",fullwidth:!0},{default:x(()=>[y(Be,{id:"minSoc",modelValue:a.value.pvMinSoc,"onUpdate:modelValue":d[4]||(d[4]=s=>a.value.pvMinSoc=s),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),r.value?(g(),T(Q,{key:2,title:"...mit Ladestrom",fullwidth:!0},{default:x(()=>[y(Be,{id:"minSocCurrent",modelValue:a.value.pvMinSocCurrent,"onUpdate:modelValue":d[5]||(d[5]=s=>a.value.pvMinSocCurrent=s),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):M("",!0),y(Q,{title:"Minimaler Ladestrom",icon:"fa-bolt",fullwidth:!0},{default:x(()=>[y(ge,{modelValue:n.value,"onUpdate:modelValue":d[6]||(d[6]=s=>n.value=s)},null,8,["modelValue"])]),_:1}),n.value?(g(),T(Q,{key:3,title:"...bei Ladestrom (minimal)",fullwidth:!0},{default:x(()=>[y(Be,{id:"minCurrent",modelValue:a.value.pvMinCurrent,"onUpdate:modelValue":d[7]||(d[7]=s=>a.value.pvMinCurrent=s),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):M("",!0)]))}}),ts=N(es,[["__scopeId","data-v-455524b6"]]),as=t=>(ce("data-v-ff0b6341"),t=t(),le(),t),ns={class:"schedulestable p-3 grid12"},rs=as(()=>l("div",{class:"subtitle grid-col-12"},"Pläne für Zielladen:",-1)),os={key:0,class:"warning grid-col-12 p-5"},ss=Ft('<div class="subgrid tableheader" data-v-ff0b6341><span class="grid-col-2 grid-left" data-v-ff0b6341></span><span class="grid-col-3 grid-left" data-v-ff0b6341>Startzeit</span><span class="grid-col-2" data-v-ff0b6341>SoC-Ziel</span><span class="grid-col-2" data-v-ff0b6341>SoC-Limit</span><span class="grid-col-3" data-v-ff0b6341>Wiederholung</span></div>',1),is={class:"grid-col-2"},cs={class:"grid-col-3 grid-left"},ls={class:"grid-col-2"},ds={class:"grid-col-2"},us={class:"grid-col-3"},hs=A({__name:"CPConfigScheduled",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,n=p(()=>Ue[a.chargeTemplateId]?Object.values(Ue[a.chargeTemplateId]):[]);function r(d){console.log(`update ${d}`),q("cpScheduledPlanActive",n.value[d].active,a.chargeTemplateId,d)}function o(d){return n.value[d].time}function u(d){return{"font-weight":n.value[d].active?"bold":"regular"}}return(d,s)=>(g(),b("div",ns,[rs,n.value.length==0?(g(),b("div",os," Es sind noch keine Pläne definiert. Pläne für das Zielladen können in der Web-App festgelegt werden. ")):M("",!0),ss,(g(!0),b(ke,null,Ae(n.value,(m,v)=>(g(),b("div",{key:v,style:ee(u(v)),class:"subgrid tableline"},[l("span",is,[y(ge,{modelValue:m.active,"onUpdate:modelValue":[B=>m.active=B,B=>r(v)]},null,8,["modelValue","onUpdate:modelValue"])]),l("span",cs,$(o(v)),1),l("span",ls,$(m.limit.soc_scheduled)+"%",1),l("span",ds,$(m.limit.soc_limit)+"%",1),l("span",us,$(e[m.frequency.selected]),1)],4))),128))]))}}),ps=N(hs,[["__scopeId","data-v-ff0b6341"]]),gs=t=>(ce("data-v-ace151e1"),t=t(),le(),t),ms={class:"timeplantable p-3 grid12"},vs=gs(()=>l("div",{class:"subtitle grid-col-12"},"Zeitpläne:",-1)),fs={key:0,class:"warning grid-col-12 p-5"},_s=Ft('<div class="subgrid tableheader" data-v-ace151e1><span class="grid-col-2" data-v-ace151e1></span><span class="grid-col-3 grid-left" data-v-ace151e1>Von</span><span class="grid-col-2" data-v-ace151e1>Bis</span><span class="grid-col-2" data-v-ace151e1>Ladestrom</span><span class="grid-col-3" data-v-ace151e1>Wiederholung</span></div>',1),ys={class:"grid-col-2"},bs={class:"grid-col-3 grid-left"},ws={class:"grid-col-2"},Ss={class:"grid-col-2"},ks={class:"grid-col-3"},xs=A({__name:"CPConfigTimed",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,n=p(()=>ze[a.chargeTemplateId]?Object.values(ze[a.chargeTemplateId])??[]:[]);function r(u){console.log(`update ${u}`),q("cpTimedPlanActive",n.value[u].active,a.chargeTemplateId,u)}function o(u){return{"font-weight":n.value[u].active?"bold":"regular"}}return(u,d)=>(g(),b("div",ms,[vs,n.value.length==0?(g(),b("div",fs," Es sind noch keine Pläne definiert. Zeitpläne können in der Web-App festgelegt werden. ")):M("",!0),_s,(g(!0),b(ke,null,Ae(n.value,(s,m)=>(g(),b("div",{key:m,style:ee(o(m)),class:"subgrid tableline"},[l("span",ys,[y(ge,{modelValue:s.active,"onUpdate:modelValue":[v=>s.active=v,v=>r(m)]},null,8,["modelValue","onUpdate:modelValue"])]),l("span",bs,$(s.time[0]),1),l("span",ws,$(s.time[1]),1),l("span",Ss,$(s.current)+"A",1),l("span",ks,$(e[s.frequency.selected]),1)],4))),128))]))}}),Ms=N(xs,[["__scopeId","data-v-ace151e1"]]),Ps=t=>(ce("data-v-ed7593cf"),t=t(),le(),t),$s={class:"settingslist"},Is=Ps(()=>l("hr",{class:"grid-col-12 my-2"},null,-1)),Cs={key:2,class:"grid-col-12 my-2"},Os=A({__name:"CPChargeConfig",props:{chargepointId:{}},setup(t){const e=t,a=p(()=>w[e.chargepointId]),n=p({get:()=>a.value.connectedVehicle,set:u=>{w[a.value.id].connectedVehicle=u}}),r=p({get:()=>a.value.etActive,set:u=>{w[a.value.id].etActive=u}}),o=p({get:()=>a.value.timedCharging,set:u=>{w[a.value.id].timedCharging=u}});return(u,d)=>(g(),b("div",$s,[Object.keys(i(j)).length>1?(g(),T(Q,{key:0,title:"Fahrzeug wechseln",icon:"fa-car",fullwidth:!0},{default:x(()=>[y(tt,{modelValue:n.value,"onUpdate:modelValue":d[0]||(d[0]=s=>n.value=s),modelModifiers:{number:!0},options:Object.values(i(j)).map(s=>[s.name,s.id])},null,8,["modelValue","options"])]),_:1})):M("",!0),Object.keys(i(ie)).length>1?(g(),T(Q,{key:1,title:"Ladeprofil",icon:"fa-sliders",iconcolor:"var(--color-pv)"},{default:x(()=>[i(j)[n.value]?(g(),T(tt,{key:0,modelValue:i(j)[n.value].chargeTemplateId,"onUpdate:modelValue":d[1]||(d[1]=s=>i(j)[n.value].chargeTemplateId=s),modelModifiers:{number:!0},options:Object.keys(i(ie)).map(s=>[i(ie)[+s].name,s])},null,8,["modelValue","options"])):M("",!0)]),_:1})):M("",!0),Is,y(Q,{title:"Priorität",icon:"fa-star",iconcolor:"var(--color-evu)",fullwidth:!0},{default:x(()=>[y(ge,{modelValue:a.value.hasPriority,"onUpdate:modelValue":d[2]||(d[2]=s=>a.value.hasPriority=s)},null,8,["modelValue"])]),_:1}),y(Q,{title:"Zeitplan aktivieren",icon:"fa-clock",iconcolor:"var(--color-battery)"},{default:x(()=>[y(ge,{modelValue:o.value,"onUpdate:modelValue":d[3]||(d[3]=s=>o.value=s)},null,8,["modelValue"])]),_:1}),y(Q,{title:"Sperren",icon:"fa-lock",iconcolor:"var(--color-evu)",fullwidth:!0},{default:x(()=>[y(ge,{modelValue:a.value.isLocked,"onUpdate:modelValue":d[4]||(d[4]=s=>a.value.isLocked=s)},null,8,["modelValue"])]),_:1}),y(Q,{title:"Strompreisbasiert laden",icon:"fa-coins",iconcolor:"var(--color-battery)"},{default:x(()=>[y(ge,{modelValue:r.value,"onUpdate:modelValue":d[5]||(d[5]=s=>r.value=s)},null,8,["modelValue"])]),_:1}),i(U).isBatteryConfigured?(g(),b("hr",Cs)):M("",!0),i(U).isBatteryConfigured?(g(),T(Q,{key:3,title:"PV-Priorität (global)",icon:"fa-car-battery",iconcolor:"var(--color-battery)",fullwidth:!0},{default:x(()=>[y(tt,{modelValue:i(U).pvBatteryPriority,"onUpdate:modelValue":d[6]||(d[6]=s=>i(U).pvBatteryPriority=s),options:i(Na)},null,8,["modelValue","options"])]),_:1})):M("",!0)]))}}),Bs=N(Os,[["__scopeId","data-v-ed7593cf"]]),Ts={class:"pricesettings grid12"},As={class:"subtitle grid-col-12"},Vs={class:"grapharea"},Ls={id:"pricechart"},Ds={viewBox:"0 0 400 300"},Es=["id","origin","transform"],Gs={class:"controlarea d-flex align-items-center"},Ws={class:"priceinput d-flex flex-column justify-content-center align-items-center"},js={class:"grid12 pb-5"},Ns=["disabled"],Ze=400,ft=250,Wt=12,Us=A({__name:"PriceChart",props:{chargePointId:{},globalview:{type:Boolean}},setup(t){const e=t,a=p(()=>w[e.chargePointId]),n=_e(a.value.etMaxPrice),r=_e(!1),o=p({get:()=>n.value,set(_){n.value=_,r.value=!0}}),u=p({get:()=>a.value.etActive,set:_=>{a.value.etActive=_}});function d(){a.value&&(a.value.etMaxPrice=o.value),r.value=!1}const s=_e(!1),m={top:0,bottom:15,left:20,right:15},v=p(()=>{let _=[];return X.etPriceList.size>0&&X.etPriceList.forEach((O,V)=>{_.push([V,O])}),_}),B=p(()=>v.value.length>1?(Ze-m.left-m.right)/v.value.length-1:0),k=p(()=>r.value?{background:"var(--color-charging)"}:{background:"var(--color-menu)"}),R=p(()=>{let _=Le(v.value,O=>O[0]);return _[1]&&(_[1]=new Date(_[1]),_[1].setTime(_[1].getTime()+36e5)),Re().range([m.left,Ze-m.right]).domain(_)}),te=p(()=>{let _=Le(v.value,O=>O[1]);return _[0]=_[0]?Math.floor(_[0]-1):0,_[1]=_[1]?Math.floor(_[1]+1):0,_}),se=p(()=>Te().range([ft-m.bottom,0]).domain(te.value)),D=p(()=>{const _=zt(),O=[[m.left,se.value(o.value)],[Ze-m.right-1,se.value(o.value)]];return _(O)}),z=p(()=>Ke(R.value).ticks(v.value.length).tickSize(5).tickSizeInner(-ft).tickFormat(_=>_.getHours()%6==0?yt("%H:%M")(_):"")),H=p(()=>dt(se.value).ticks(6).tickSizeInner(-(Ze-m.right-m.left)).tickFormat(_=>_.toString())),C=p(()=>{s.value==!0;const _=ye("g#"+S.value);_.selectAll("*").remove(),_.selectAll("bar").data(v.value).enter().append("g").append("rect").attr("class","bar").attr("x",me=>R.value(me[0])).attr("y",me=>se.value(me[1])).attr("width",B.value).attr("height",me=>se.value(te.value[0])-se.value(me[1])).attr("fill",me=>me[1]<=o.value?"var(--color-charging)":"var(--color-axis)");const V=_.append("g").attr("class","axis").call(z.value);V.attr("transform","translate(0,"+(ft-m.bottom)+")"),V.selectAll(".tick").attr("font-size",Wt).attr("color","var(--color-bg)"),V.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",me=>me.getHours()%6==0?"2":"0.5"),V.select(".domain").attr("stroke","var(--color-bg");const re=_.append("g").attr("class","axis").call(H.value);return re.attr("transform","translate("+m.left+",0)"),re.selectAll(".tick").attr("font-size",Wt).attr("color","var(--color-bg)"),re.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",me=>me%5==0?"2":"0.5"),re.select(".domain").attr("stroke","var(--color-bg)"),_.append("path").attr("d",D.value).attr("stroke","yellow"),"PriceChart.vue"}),S=p(()=>a.value?"priceChartCanvas"+a.value.id:"priceChartCanvasGlobal");return lt(()=>{s.value=!s.value}),xa(()=>{n.value=a.value.etMaxPrice}),(_,O)=>(g(),b("div",Ts,[l("div",As,"Anbieter: "+$(i(X).etProvider),1),l("div",Vs,[l("figure",Ls,[(g(),b("svg",Ds,[l("g",{id:S.value,origin:C.value,transform:"translate("+m.top+","+m.right+")"},null,8,Es)]))])]),l("div",Gs,[l("div",Ws,[l("div",js,[y(Q,{title:"Strompreisbasiert laden",icon:"fa-coins",iconcolor:"var(--color-battery)"},{default:x(()=>[y(ge,{modelValue:u.value,"onUpdate:modelValue":O[0]||(O[0]=V=>u.value=V)},null,8,["modelValue"])]),_:1})]),y(Be,{id:"etmaxprice",modelValue:o.value,"onUpdate:modelValue":O[1]||(O[1]=V=>o.value=V),min:-25,max:95,step:.1,decimals:1,unit:"ct"},null,8,["modelValue"]),l("span",{class:"pt-3",onClick:d},[l("button",{type:"button",class:"btn btn-lg btn-secondary",style:ee(k.value),disabled:!r.value}," Bestätigen ",12,Ns)])])]),l("span",null,$(o.value),1)]))}}),zs=N(Us,[["__scopeId","data-v-08931d61"]]),Ge=t=>(ce("data-v-06d2c4a9"),t=t(),le(),t),Fs={class:"m-0 mt-1 p-0 grid-col-12 tabarea"},Js={class:"nav nav-tabs nav-justified mx-1 mt-1",role:"tablist"},Rs=["id","data-bs-target"],Hs=Ge(()=>l("i",{class:"fa-solid fa-charging-station"},null,-1)),Ys=["id","data-bs-target"],qs=Ge(()=>l("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),Qs=["id","data-bs-target"],Zs=Ge(()=>l("i",{class:"fa-solid fa-solar-panel me-1"},null,-1)),Xs=["id","data-bs-target"],Ks=Ge(()=>l("i",{class:"fa-solid fa-bullseye me-1"},null,-1)),ei=["id","data-bs-target"],ti=Ge(()=>l("i",{class:"fa-solid fa-clock"},null,-1)),ai=["id","data-bs-target"],ni=Ge(()=>l("i",{class:"fa-solid fa-coins"},null,-1)),ri={id:"settingsPanes",class:"tab-content mt-2"},oi=["id"],si=["id"],ii=["id"],ci=["id"],li=["id"],di=["id"],ui=A({__name:"SettingsPage",props:{chargepoint:{}},setup(t){const e=t,a=p(()=>ie[e.chargepoint.chargeTemplate]),n=p(()=>e.chargepoint.id);return(r,o)=>(g(),b("div",Fs,[l("nav",Js,[l("a",{id:"chSettings"+n.value,class:"nav-link active","data-bs-toggle":"tab","data-bs-target":"#chargeSettings"+n.value},[Hs,W(" Allgemein ")],8,Rs),l("a",{id:"inSettings"+n.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#instantSettings"+n.value},[qs,W(" Sofort ")],8,Ys),l("a",{id:"phvSettings"+n.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pvSettings"+n.value},[Zs,W(" PV ")],8,Qs),l("a",{id:"scSettings"+n.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#scheduledSettings"+n.value},[Ks,W(" Zielladen ")],8,Xs),l("a",{id:"tmSettings"+n.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#timeSettings"+n.value},[ti,W(" Zeitpläne ")],8,ei),l("a",{id:"prSettings"+n.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#priceSettings"+n.value},[ni,W(" Strompreis ")],8,ai)]),l("div",ri,[l("div",{id:"chargeSettings"+n.value,class:"tab-pane active",role:"tabpanel","aria-labelledby":"instant-tab"},[y(Bs,{"chargepoint-id":n.value},null,8,["chargepoint-id"])],8,oi),l("div",{id:"instantSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"instant-tab"},[y(Qo,{"chargepoint-id":n.value},null,8,["chargepoint-id"])],8,si),l("div",{id:"pvSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"pv-tab"},[y(ts,{"chargepoint-id":n.value},null,8,["chargepoint-id"])],8,ii),l("div",{id:"scheduledSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"scheduled-tab"},[a.value!=null?(g(),T(ps,{key:0,"charge-template-id":e.chargepoint.chargeTemplate},null,8,["charge-template-id"])):M("",!0)],8,ci),l("div",{id:"timeSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"time-tab"},[a.value!=null?(g(),T(Ms,{key:0,"charge-template-id":e.chargepoint.chargeTemplate},null,8,["charge-template-id"])):M("",!0)],8,li),l("div",{id:"priceSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},[i(X).active?(g(),T(zs,{key:0,"charge-point-id":e.chargepoint.id},null,8,["charge-point-id"])):M("",!0)],8,di)])]))}}),hi=N(ui,[["__scopeId","data-v-06d2c4a9"]]);function pi(t,e){t=="openWB/graph/boolDisplayLiveGraph"?U.displayLiveGraph=+e==1:t.match(/^openwb\/graph\/alllivevaluesJson[1-9][0-9]*$/i)?gi(t,e):t=="openWB/graph/lastlivevaluesJson"?mi(t,e):t=="openWB/graph/config/duration"&&(Z.duration=JSON.parse(e))}function gi(t,e){if(!Z.initialized){let a=[];const n=e.toString().split(`
+`);n.length>1?a=n.map(u=>JSON.parse(u)):a=[];const r=t.match(/(\d+)$/g),o=r?r[0]:"";o!=""&&typeof Z.rawDataPacks[+o-1]>"u"&&(Z.rawDataPacks[+o-1]=a,Z.initCounter++)}if(Z.initCounter==16){const a=[];Z.unsubscribeRefresh(),Z.initialized=!0,Z.rawDataPacks.map(n=>{n.map(r=>{const o=la(r);a.push(o)})}),Ye(a),Z.subscribeUpdates()}}function mi(t,e){const a=JSON.parse(e),n=la(a);Z.graphRefreshCounter++,Ye(h.data.concat(n)),Z.graphRefreshCounter>60&&Z.activate()}function la(t){const e=Object.values(w).length>0?Object.values(w)[0].connectedVehicle:0,a=Object.values(w).length>1?Object.values(w)[1].connectedVehicle:1,n="ev"+e+"-soc",r="ev"+a+"-soc",o={};o.date=vi(t.time).valueOf(),+t.grid>0?(o.evuIn=+t.grid,o.evuOut=0):+t.grid<=0?(o.evuIn=0,o.evuOut=-t.grid):(o.evuIn=0,o.evuOut=0),+t["pv-all"]>=0?(o.pv=+t["pv-all"],o.inverter=0):(o.pv=0,o.inverter=-t["pv-all"]),o.house=+t["house-power"],+t["bat-all-power"]>0?(o.batOut=0,o.batIn=+t["bat-all-power"]):+t["bat-all-power"]<0?(o.batOut=-t["bat-all-power"],o.batIn=0):(o.batOut=0,o.batIn=0),t["bat-all-soc"]?o.batSoc=+t["bat-all-soc"]:o.batSoc=0,t[n]&&(o["soc"+e]=+t[n]),t[r]&&(o["soc"+a]=+t[r]),o.charging=+t["charging-all"];for(let u=0;u<10;u++){const d="cp"+u;o[d]=+(t[d+"-power"]??0)}return o.selfUsage=o.pv-o.evuOut,o.selfUsage<0&&(o.selfUsage=0),o.devices=0,o}function vi(t){const e=new Date(Date.now()),a=864e5;let n=new Date;const r=nt("%H:%M:%S")(t);return r&&(n=r,n.setDate(e.getDate()),n.setMonth(e.getMonth()),n.setFullYear(e.getFullYear()),n.getHours()>e.getHours()&&(n=new Date(n.getTime()-a))),n}const fi=["evuIn","pv","batIn","evuOut"];let ct=[];function _i(t,e){const a=JSON.parse(e).entries,n=JSON.parse(e).totals;Mt(),ct=[],Pt.map(o=>{P.setEnergyPv(o,0),P.setEnergyBat(o,0)});const r=yi(a);Ye(r),$t(n,ct),f.debug&&(console.debug("---------------------------------------- Graph Data ---------------------------"),console.debug("--- Incoming graph data:"),console.debug(a),console.debug("data to be displayed:"),console.debug(r),console.debug("-------------------------------------------------------------------------------")),h.graphMode=="today"&&setTimeout(()=>J.activate(),3e5)}function yi(t){const e=[];let a={};return t.map(n=>{a=bi(n);const r=a;e.push(r)}),e}function bi(t){const e={};if(h.graphMode=="day"||h.graphMode=="today")if(typeof t.date=="number")e.date=new Date(+t.date*1e3).getTime();else{const n=nt("%H:%M")(t.date);n&&(n.setMonth(J.date.getMonth()),n.setDate(J.date.getDate()),n.setFullYear(J.date.getFullYear()),e.date=n.getTime())}else if(typeof t.date=="string"){const n=nt("%Y%m%d")(t.date);n&&(e.date=n.getDate())}return e.evuOut=0,e.evuIn=0,Object.entries(t.counter).forEach(([n,r])=>{r.grid&&(e.evuOut+=r.power_exported,e.evuIn+=r.power_imported,ct.includes(n)||ct.push(n))}),e.evuOut==0&&e.evuIn==0&&Object.entries(t.counter).forEach(n=>{e.evuOut+=n[1].power_exported,e.evuIn+=n[1].power_imported}),e.pv=t.pv.all.power_exported,Object.entries(t.bat).length>0?(e.batIn=t.bat.all.power_imported,e.batOut=t.bat.all.power_exported,e.batSoc=t.bat.all.soc??0):(e.batIn=0,e.batOut=0,e.batSoc=0),Object.entries(t.cp).forEach(([n,r])=>{n!="all"?(e[n]=r.power_imported,P.keys().includes(n)||P.addItem(n)):e.charging=r.power_imported}),Object.entries(t.ev).forEach(([n,r])=>{n!="all"&&(e["soc"+n.substring(2)]=r.soc)}),e.devices=0,Object.entries(t.sh).forEach(([n,r])=>{n!="all"&&(e[n]=r.power_imported??0,e.devices+=r.power_imported??0,P.keys().includes(n)||P.addItem(n))}),e.selfUsage=e.pv-e.evuOut,t.hc&&t.hc.all?e.house=t.hc.all.power_imported:e.house=e.evuIn+e.batOut+e.pv-e.evuOut-e.charging-e.devices-e.batOut,e.evuIn+e.batOut+e.pv>0?P.keys().filter(n=>!fi.includes(n)).map(n=>{zn(n,e)}):Object.keys(e).map(n=>{e[n+"Pv"]=0,e[n+"Bat"]=0}),e}let Xe={};const Ot=["charging","house","batIn","devices"],wi=["evuIn","pv","batIn","evuOut"];let Je=[];function Si(t,e){const a=JSON.parse(e).entries,n=JSON.parse(e).totals;Mt(),Je=[],Ot.map(r=>{P.items[r].energyPv=0,P.items[r].energyBat=0}),a.length>0&&Ye(da(a)),$t(n,[])}function ki(t,e){const a=JSON.parse(e).entries,n=JSON.parse(e).totals;Mt(),Je=[],Ot.forEach(r=>{P.items[r].energyPv=0,P.items[r].energyBat=0}),Ye(da(a)),$t(n,[])}function da(t){const e=[];let a={};return Xe={},t.map(n=>{a=xi(n),e.push(a),Object.keys(a).forEach(r=>{r!="date"&&(a[r]<0&&(console.warn(`Negative energy value for ${r} in row ${a.date}. Ignoring the value.`),a[r]=0),Xe[r]?Xe[r]+=a[r]:Xe[r]=a[r])})}),e}function xi(t){const e={},a=nt("%Y%m%d")(t.date);a&&(e.date=h.graphMode=="month"?a.getDate():a.getMonth()+1),e.evuOut=0,e.evuIn=0;let n=0,r=0;return Object.entries(t.counter).forEach(([u,d])=>{n+=d.energy_exported,r+=d.energy_imported,d.grid&&(e.evuOut+=d.energy_exported,e.evuIn+=d.energy_imported,Je.includes(u)||Je.push(u))}),Je.length==0&&(e.evuOut=n,e.evuIn=r),e.pv=t.pv.all.energy_exported,Object.entries(t.bat).length>0?(t.bat.all.energy_imported>=0?e.batIn=t.bat.all.energy_imported:(console.warn("ignoring negative value for batIn on day "+e.date),e.batIn=0),t.bat.all.energy_exported>=0?e.batOut=t.bat.all.energy_exported:(console.warn("ignoring negative value for batOut on day "+e.date),e.batOut=0)):(e.batIn=0,e.batOut=0),Object.entries(t.cp).forEach(([u,d])=>{u!="all"?(P.keys().includes(u)||P.addItem(u),e[u]=d.energy_imported):e.charging=d.energy_imported}),Object.entries(t.ev).forEach(([u,d])=>{u!="all"&&(e["soc-"+u]=d.soc)}),e.devices=Object.entries(t.sh).reduce((u,d)=>(P.keys().includes(d[0])||P.addItem(d[0]),d[1].energy_imported>=0?u+=d[1].energy_imported:console.warn(`Negative energy value for device ${d[0]} in row ${e.date}. Ignoring this value`),u),0),e.house=e.pv+e.evuIn+e.batOut-e.evuOut-e.batIn-e.charging,e.selfUsage=e.pv-e.evuOut,e.evuIn+e.batOut+e.pv>0?P.keys().filter(u=>!wi.includes(u)).map(u=>{Fn(u,e)}):Ot.map(u=>{e[u+"Pv"]=0,e[u+"Bat"]=0}),e}class Mi{constructor(e){c(this,"id");c(this,"dailyYieldExport",0);c(this,"dailyYieldImport",0);c(this,"exported",0);c(this,"faultState",0);c(this,"faultStr","");c(this,"imported",0);c(this,"power",0);c(this,"soc",0);this.id=e}}class Pi{constructor(){c(this,"dailyExport",0);c(this,"dailyImport",0);c(this,"exported",0);c(this,"imported",0);c(this,"power",0);c(this,"soc",0)}}const de=F({});F(new Pi);function $i(t){t in de?console.info("Duplicate battery message: "+t):de[t]=new Mi(t)}function Ii(){Object.keys(de).forEach(t=>{delete de[parseInt(t)]})}function Ci(t,e){const a=Oi(t);if(a&&!(a in de)){console.warn("Invalid battery index received: "+a);return}t=="openWB/bat/config/configured"?U.isBatteryConfigured=e=="true":t=="openWB/bat/get/power"?+e>0?(I.batIn.power=+e,G.batOut.power=0):(I.batIn.power=0,G.batOut.power=-e):t=="openWB/bat/get/soc"?U.batterySoc=+e:t=="openWB/bat/get/daily_exported"?G.batOut.energy=+e:t=="openWB/bat/get/daily_imported"?I.batIn.energy=+e:a&&(t.match(/^openwb\/bat\/[0-9]+\/get\/daily_yield_export$/i)?de[a].dailyYieldExport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/daily_yield_import$/i)?de[a].dailyYieldImport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/exported$/i)?de[a].exported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_state$/i)?de[a].faultState=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_str$/i)?de[a].faultStr=e:t.match(/^openwb\/bat\/[0-9]+\/get\/imported$/i)?de[a].imported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/power$/i)?de[a].power=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/soc$/i)&&(de[a].soc=+e))}function Oi(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Bi(t,e){if(t=="openWB/optional/et/provider")JSON.parse(e).type==null?X.active=!1:(X.active=!0,X.etProvider=JSON.parse(e).name);else if(t=="openWB/optional/et/get/prices"){const a=JSON.parse(e);X.etPriceList=new Map,Object.keys(a).map(n=>{X.etPriceList.set(new Date(+n*1e3),a[n]*1e5)})}}function Ti(t,e){const a=ua(t);if(a&&!(a in w)){console.warn("Invalid chargepoint id received: "+a);return}if(t=="openWB/chargepoint/get/power"?I.charging.power=+e:t=="openWB/chargepoint/get/daily_imported"&&(I.charging.energy=+e),t=="openWB/chargepoint/get/daily_exported")U.cpDailyExported=+e;else if(a){if(t.match(/^openwb\/chargepoint\/[0-9]+\/config$/i))if(w[a]){const n=JSON.parse(e);w[a].name=n.name,w[a].icon=n.name,oe["cp"+a]?(oe["cp"+a].name=n.name,oe["cp"+a].icon=n.name):oe["cp"+a]={name:n.name,icon:n.name,color:"var(--color-charging)"}}else console.warn("invalid chargepoint index: "+a);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/state_str$/i))w[a].stateStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_str$/i))w[a].faultStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_state$/i))w[a].faultState=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/power$/i))w[a].power=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/daily_imported$/i))w[a].dailyYield=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/plug_state$/i))w[a].isPluggedIn=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/charge_state$/i))w[a].isCharging=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/manual_lock$/i))w[a].updateIsLocked(e=="true");else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/enabled$/i))w[a].isEnabled=e=="1";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/phases_in_use/i))w[a].phasesInUse=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/current/i))w[a].current=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/currents/i))w[a].currents=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/log/i)){const n=JSON.parse(e);w[a].chargedSincePlugged=n.imported_since_plugged}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/soc$/i)){const n=JSON.parse(e);w[a].soc=n.soc,w[a].waitingForSoc=!1,w[a].rangeCharged=n.range_charged,w[a].rangeUnit=n.range_unit}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/info$/i)){const n=JSON.parse(e);w[a].vehicleName=String(n.name),w[a].updateConnectedVehicle(+n.id)}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/config$/i)){const n=JSON.parse(e);switch(n.chargemode){case"instant_charging":w[a].updateChargeMode(fe.instant_charging);break;case"pv_charging":w[a].updateChargeMode(fe.pv_charging);break;case"scheduled_charging":w[a].updateChargeMode(fe.scheduled_charging);break;case"standby":w[a].updateChargeMode(fe.standby);break;case"stop":w[a].updateChargeMode(fe.stop);break}w[a].chargeTemplate=n.charge_template,w[a].averageConsumption=n.average_consumption}}}function Ai(t,e){const a=ua(t);if(a!=null){if(!(a in j)){const n=new La(a);j[a]=n}if(t.match(/^openwb\/vehicle\/[0-9]+\/name$/i))Object.values(w).forEach(n=>{n.connectedVehicle==a&&(n.vehicleName=JSON.parse(e))}),j[a].name=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/soc$/i))j[a].soc=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/range$/i))isNaN(+e)?j[a].range=0:j[a].range=+e;else if(t.match(/^openwb\/vehicle\/[0-9]+\/charge_template$/i))j[a].updateChargeTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/ev_template$/i))j[a].updateEvTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/soc_module\/config$/i)){const n=JSON.parse(e);Object.values(w).forEach(r=>{r.connectedVehicle==a&&(r.isSocConfigured=n.type!==null,r.isSocManual=n.type=="manual")})}}}function Vi(t,e){if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const n=+a[0],r=JSON.parse(e);ie[n]=r,Li(n,r)}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/time_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),n=t.match(/[0-9]+$/i);if(a&&n){const r=+a[0].replace(/[^0-9]+/g,""),o=+n[0],u=JSON.parse(e);r in ze||(ze[r]=[]),ze[r][o]=u}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/chargemode\/scheduled_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),n=t.match(/[0-9]+$/i);if(a&&n){const r=+a[0].replace(/[^0-9]+/g,""),o=+n[0],u=JSON.parse(e);r in Ue||(Ue[r]=[]),Ue[r][o]=u}}else if(t.match(/^openwb\/vehicle\/template\/ev_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const n=+a[0],r=JSON.parse(e);Da[n]=r}}}function Li(t,e){Object.values(w).forEach(a=>{a.chargeTemplate==t&&(a.updateCpPriority(e.prio),a.updateInstantChargeLimitMode(e.chargemode.instant_charging.limit.selected),a.updateInstantTargetCurrent(e.chargemode.instant_charging.current),a.updateInstantTargetSoc(e.chargemode.instant_charging.limit.soc),a.updateInstantMaxEnergy(e.chargemode.instant_charging.limit.amount),a.updatePvFeedInLimit(e.chargemode.pv_charging.feed_in_limit),a.updatePvMinCurrent(e.chargemode.pv_charging.min_current),a.updatePvMaxSoc(e.chargemode.pv_charging.max_soc),a.updatePvMinSoc(e.chargemode.pv_charging.min_soc),a.updatePvMinSocCurrent(e.chargemode.pv_charging.min_soc_current))})}function ua(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Di(t,e){t.match(/^openWB\/LegacySmarthome\/config\//i)?Ei(t,e):t.match(/^openWB\/LegacySmarthome\/Devices\//i)&&Gi(t,e)}function Ei(t,e){const a=ha(t);a!=null&&(a in E||Xt(a),t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_configured$/i)?E[a].configured=e!="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_name$/i)?(E[a].name=e.toString(),E[a].icon=e.toString(),oe["sh"+a].name=e.toString(),oe["sh"+a].icon=e.toString()):t.match(/^openWB\/LegacySmarthome\/config\/set\/Devices\/[0-9]+\/mode$/i)?E[a].isAutomatic=e=="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_canSwitch$/i)?E[a].canSwitch=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_homeConsumtion$/i)?E[a].countAsHouse=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_temperatur_configured$/i)&&(E[a].tempConfigured=+e))}function Gi(t,e){const a=ha(t);if(a==null){console.warn("Smarthome: Missing index in "+t);return}if(a in E||Xt(a),t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Watt$/i))E[a].power=+e,Wi("power");else if(!t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Wh$/i)){if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/RunningTimeToday$/i))E[a].runningTime=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor0$/i))E[a].temp[0]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor1$/i))E[a].temp[1]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor2$/i))E[a].temp[2]=+e;else if(t.match(/^openWB\/LegacySmartHome\/Devices\/[0-9]+\/Status$/i))switch(+e){case 10:E[a].status="off";break;case 11:E[a].status="on";break;case 20:E[a].status="detection";break;case 30:E[a].status="timeout";break;default:E[a].status="off"}}}function Wi(t){switch(t){case"power":I.devices.power=Object.values(E).filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.power,0);break;case"energy":I.devices.energy=Object.values(E).filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.energy,0);break;default:console.error("Unknown category")}}function ha(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}class ji{constructor(e){c(this,"id");c(this,"name","Zähler");c(this,"power",0);c(this,"energy_imported",0);c(this,"energy_exported",0);c(this,"grid",!1);c(this,"type","counter");c(this,"color","var(--color-evu)");c(this,"energyPv",0);c(this,"energyBat",0);c(this,"pvPercentage",0);c(this,"icon","");this.id=e}}const pe=F({});function Ni(t,e){if(t in pe)console.info("Duplicate counter message: "+t);else switch(pe[t]=new ji(t),pe[t].type=e,e){case"counter":pe[t].color="var(--color-evu)";break;case"inverter":pe[t].color="var(--color-pv)";break;case"cp":pe[t].color="var(--color-charging)";break;case"bat":pe[t].color="var(--color-bat)";break}}const Ui=["openWB/counter/#","openWB/bat/#","openWB/pv/get/#","openWB/chargepoint/#","openWB/vehicle/#","openWB/general/chargemode_config/pv_charging/#","openWB/optional/et/#","openWB/system/#","openWB/LegacySmartHome/#","openWB/command/"+kt()+"/#","openWB/optional/int_display/#"];function zi(){Aa(Fi),Ui.forEach(t=>{Ve(t)}),K()}function Fi(t,e){const a=e.toString();t.match(/^openwb\/counter\/[0-9]+\//i)?Ji(t,a):t.match(/^openwb\/counter\//i)?Ri(t,a):t.match(/^openwb\/bat\//i)?Ci(t,a):t.match(/^openwb\/pv\//i)?Hi(t,a):t.match(/^openwb\/chargepoint\//i)?Ti(t,a):t.match(/^openwb\/vehicle\/template\//i)?Vi(t,a):t.match(/^openwb\/vehicle\//i)?Ai(t,a):t.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)?Yi(t,a):t.match(/^openwb\/graph\//i)?pi(t,a):t.match(/^openwb\/log\/daily\//i)?_i(t,a):t.match(/^openwb\/log\/monthly\//i)?Si(t,a):t.match(/^openwb\/log\/yearly\//i)?ki(t,a):t.match(/^openwb\/optional\/et\//i)?Bi(t,a):t.match(/^openwb\/system\//i)?Qi(t,a):t.match(/^openwb\/LegacySmartHome\//i)?Di(t,a):t.match(/^openwb\/command\//i)?Zi(t,a):t.match(/^openwb\/optional\//i)&&Xi(t,a)}function Ji(t,e){const a=t.split("/"),n=+a[2];if(n==U.evuId?qi(t,e):a[3]=="config",a[3]=="get"&&n in pe)switch(a[4]){case"power":pe[n].power=+e;break;case"config":break;case"fault_str":break;case"fault_state":break;case"power_factors":break;case"imported":break;case"exported":break;case"frequency":break;case"daily_imported":pe[n].energy_imported=+e;break;case"daily_exported":pe[n].energy_exported=+e;break}}function Ri(t,e){if(t.match(/^openwb\/counter\/get\/hierarchy$/i)){const a=JSON.parse(e);if(a.length){Ga(),Ii();for(const n of a)n.type=="counter"&&(U.evuId=n.id);pa(a[0])}}else t.match(/^openwb\/counter\/set\/home_consumption$/i)?(I.house.power=+e,za()):t.match(/^openwb\/counter\/set\/daily_yield_home_consumption$/i)&&(I.house.energy=+e)}function pa(t){switch(t.type){case"counter":Ni(t.id,t.type);break;case"cp":Ea(t.id);break;case"bat":$i(t.id);break}t.children.forEach(e=>pa(e))}function Hi(t,e){switch(t){case"openWB/pv/get/power":G.pv.power=-e;break;case"openWB/pv/get/daily_exported":G.pv.energy=+e;break}}function Yi(t,e){const a=t.split("/");if(a.length>0)switch(a[4]){case"bat_mode":U.updatePvBatteryPriority(JSON.parse(e));break}}function qi(t,e){switch(t.split("/")[4]){case"power":+e>0?(G.evuIn.power=+e,I.evuOut.power=0):(G.evuIn.power=0,I.evuOut.power=-e);break;case"daily_imported":G.evuIn.energy=+e;break;case"daily_exported":I.evuOut.energy=+e;break}}function Qi(t,e){if(t.match(/^openWB\/system\/device\/[0-9]+\/component\/[0-9]+\/config$/i)){const a=JSON.parse(e);a.type=="counter"&&(pe[a.id].name=a.name)}else t.match(/^openWB\/system\/ip_address$/i)?U.ipAddress=JSON.parse(e):t.match(/^openWB\/system\/time$/i)?U.systemTime=JSON.parse(e):t.match(/^openWB\/system\/version$/i)?U.version=JSON.parse(e):t.match(/^openWB\/system\/current_commit$/i)?U.versionDetails=JSON.parse(e):t.match(/^openWB\/system\/current_branch$/i)&&(U.devBranch=JSON.parse(e))}function Zi(t,e){const a=t.split("/");if(t.match(/^openWB\/command\/[a-z]+\/error$/i)&&a[2]==kt()){const n=JSON.parse(e);console.error(`Error message from openWB: 
+Command: ${n.command}
+Data: JSON.stringify(err.data)
+Error:
+ ${n.error}`)}}function Xi(t,e){if(t.match(/^openwb\/optional\/int_display\/active$/i))ne.active=JSON.parse(e);else if(t.match(/^openwb\/optional\/int_display\/only_local_charge_points$/i))ne.localCpOnly=JSON.parse(e);else if(t.match(/^openwb\/optional\/int_display\/theme$/i)){const a=JSON.parse(e);ne.usePin=a.configuration.lock_changes,ne.code=a.configuration.lock_changes_code}}const Ki={class:"d-flex flex-column align-items-center justify-content-start infoitem"},ec=A({__name:"InfoItem",props:{heading:{},small:{type:Boolean}},setup(t){const e=t,a=p(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-small)"}),n=p(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-normal)"}),r=p(()=>e.small?"mt-0":"mt-1");return(o,u)=>(g(),b("span",Ki,[l("span",{class:ae(["d-flex heading scaled",r.value]),style:ee(a.value)},$(e.heading),7),l("span",{class:"d-flex my-0 me-0 align-items-center content scaled",style:ee(n.value)},[ve(o.$slots,"default",{},void 0)],4)]))}}),ue=N(ec,[["__scopeId","data-v-9215fd9b"]]),tc=A({__name:"FormatWattH",props:{wattH:{}},setup(t){const e=t,a=p(()=>Rt(e.wattH,f.decimalPlaces));return(n,r)=>(g(),b("span",null,$(a.value),1))}}),ac=A({__name:"BatterySymbol",props:{soc:{}},setup(t){const e=t,a=p(()=>e.soc<=12?"fa-battery-empty":e.soc<38?"fa-battery-quarter":e.soc<63?"fa-battery-half":e.soc<89?"fa-battery-three-quarters":"fa-battery-full");return(n,r)=>(g(),b("span",null,[l("i",{class:ae(["fa batIcon",a.value])},null,2),W(" "+$(Math.round(n.soc)+"%"),1)]))}}),nc=N(ac,[["__scopeId","data-v-fc156cd3"]]),rc=t=>(ce("data-v-17a63962"),t=t(),le(),t),oc={class:"subgrid justify-content-left"},sc={class:"titleline grid-col-12 d-flex justify-content-left mb-3"},ic={class:"carname d-flex justify-content-left align-items-center px-2"},cc=rc(()=>l("i",{class:"fa-solid fa-sm fa-car me-3"},null,-1)),lc={key:0,class:"ms-2 me-0 fa-solid fa-xs fa-star ps-1"},dc={key:1,class:"ms-2 me-0 fa-solid fa-xs fa-coins ps-0"},uc={key:0,class:"me-1 fa-solid fa-xs fa-clock ps-1"},hc={class:"maxprice"},pc={key:1},gc=A({__name:"CPVehicle",props:{chargepoint:{}},setup(t){const e=t,a=_e(e.chargepoint),n=p(()=>e.chargepoint.soc),r=p({get(){return e.chargepoint.chargeMode},set(s){ne.locked?st():w[e.chargepoint.id].chargeMode=s}}),o=p(()=>{const[s]=X.etPriceList.values();return(Math.round(s*10)/10).toFixed(1)});function u(s=""){ne.locked&&st(),new St("#settingspage").toggle();let v=s;if(s=="")switch(e.chargepoint.chargeMode){case"instant_charging":v="#inSettings";break;case"pv_charging":v="#phvSettings";break;case"scheduled_charging":v="#scSettings";break;default:v="#chSettings"}const B=document.querySelector(v+e.chargepoint.id);if(B){var k=new Jt(B);k.show()}else console.error("no element found")}const d=p(()=>e.chargepoint.etMaxPrice>=+o.value?{color:"var(--color-charging)"}:{color:"var(--color-menu)"});return(s,m)=>(g(),b("div",oc,[l("div",sc,[y(we,{onClick:m[0]||(m[0]=v=>u("#chSettings"))},{default:x(()=>[l("div",ic,[cc,W(" "+$(s.chargepoint.vehicleName)+" ",1),s.chargepoint.hasPriority?(g(),b("span",lc)):M("",!0),s.chargepoint.etActive?(g(),b("span",dc)):M("",!0)])]),_:1})]),s.chargepoint.isSocConfigured?(g(),T(ue,{key:0,heading:"Ladestand:",class:"grid-col-4 grid-left"},{default:x(()=>[y(nc,{soc:n.value,class:"me-2"},null,8,["soc"])]),_:1})):M("",!0),s.chargepoint.isSocConfigured?(g(),T(ue,{key:1,heading:"Reichweite:",class:"grid-col-4"},{default:x(()=>[W($(i(j)[e.chargepoint.connectedVehicle]?Math.round(i(j)[e.chargepoint.connectedVehicle].range):0)+" km ",1)]),_:1})):M("",!0),y(ue,{heading:"Zeitplan:",class:"grid-col-4 grid-right"},{default:x(()=>[s.chargepoint.timedCharging?(g(),b("span",uc)):M("",!0),W(" "+$(e.chargepoint.timedCharging?"Ja":"Nein"),1)]),_:1}),i(X).active?(g(),T(ue,{key:2,heading:"Preisladen:",class:"grid-col-4 grid-left"},{default:x(()=>[y(ge,{modelValue:a.value.etActive,"onUpdate:modelValue":m[1]||(m[1]=v=>a.value.etActive=v)},null,8,["modelValue"])]),_:1})):M("",!0),i(X).active?(g(),T(ue,{key:3,heading:"max. Preis:",class:"grid-col-4"},{default:x(()=>[a.value.etActive?(g(),T(we,{key:0,onClick:m[2]||(m[2]=v=>u("#prSettings"))},{default:x(()=>[l("span",hc,$(e.chargepoint.etActive?(Math.round(e.chargepoint.etMaxPrice*10)/10).toFixed(1)+" ct":"-"),1)]),_:1})):(g(),b("span",pc,"-"))]),_:1})):M("",!0),i(X).active?(g(),T(ue,{key:4,heading:"akt. Preis:",class:"grid-col-4 grid-right"},{default:x(()=>[l("span",{style:ee(d.value)},$(o.value)+" ct ",5)]),_:1})):M("",!0),y(ra,{id:"chargemode-"+s.chargepoint.name,modelValue:r.value,"onUpdate:modelValue":m[3]||(m[3]=v=>r.value=v),class:"chargemodes mx-3 mt-4 mb-0",options:Object.keys(i(We)).map(v=>({text:i(We)[v].name,value:v,color:i(We)[v].color,icon:i(We)[v].icon,active:i(We)[v].mode==s.chargepoint.chargeMode}))},null,8,["id","modelValue","options"])]))}}),mc=N(gc,[["__scopeId","data-v-17a63962"]]),vc=t=>(ce("data-v-795d5c8f"),t=t(),le(),t),fc=vc(()=>l("span",{class:"fa-solid fa-charging-station"}," ",-1)),_c={class:"subgrid"},yc={class:"targetCurrent"},bc=A({__name:"CPChargePoint",props:{chargepoint:{}},setup(t){const e=t,a=p(()=>(Math.round(e.chargepoint.current*10)/10).toLocaleString(void 0)+" A"),n=p(()=>(Math.round(e.chargepoint.realCurrent*10)/10).toLocaleString(void 0)+" A"),r=p(()=>{const v=e.chargepoint.rangeCharged,B=e.chargepoint.chargedSincePlugged,k=e.chargepoint.dailyYield;return B>0?Math.round(v/B*k).toString()+" "+e.chargepoint.rangeUnit:"0 km"}),o=p(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei"),u=p(()=>e.chargepoint.isLocked?"var(--color-evu)":e.chargepoint.isCharging?"var(--color-charging)":e.chargepoint.isPluggedIn?"var(--color-battery)":"var(--color-axis)"),d=p(()=>{let v="";return e.chargepoint.isLocked?v="fa-lock":e.chargepoint.isCharging?v=" fa-bolt":e.chargepoint.isPluggedIn&&(v="fa-plug"),"fa "+v}),s=p(()=>({color:e.chargepoint.color}));function m(){ne.locked&&st(),new St("#settingspage").toggle();let B="";switch(e.chargepoint.chargeMode){case"instant_charging":B="#inSettings";break;case"pv_charging":B="#phvSettings";break;case"scheduled_charging":B="#scSettings";break;default:B="#chSettings"}const k=document.querySelector(B+e.chargepoint.id);if(k){var R=new Jt(k);R.show()}else console.error("no element found")}return(v,B)=>(g(),T(ut,null,{title:x(()=>[l("span",{style:ee(s.value)},[fc,W(" "+$(e.chargepoint.name),1)],4)]),buttons:x(()=>[y(we,{color:"var(--color-cp0)",icon:"fa-edit",onClick:m},{default:x(()=>[W(" Einstellungen")]),_:1})]),footer:x(()=>[y(mc,{chargepoint:e.chargepoint},null,8,["chargepoint"])]),default:x(()=>[l("div",_c,[y(ue,{heading:"Status:",class:"grid-col-4 grid-left"},{default:x(()=>[l("span",{style:ee({color:u.value})},[l("i",{class:ae(d.value)},null,2),W(" "+$(o.value),1)],4)]),_:1}),y(ue,{heading:"Geladen:",class:"grid-col-4"},{default:x(()=>[y(tc,{"watt-h":v.chargepoint.dailyYield},null,8,["watt-h"])]),_:1}),y(ue,{heading:"gel. Reichw.:",class:"grid-col-4 grid-right"},{default:x(()=>[W($(r.value),1)]),_:1}),e.chargepoint.power>0?(g(),T(ue,{key:0,heading:"Leistung:",class:"grid-col-3 grid-left"},{default:x(()=>[y(Kt,{watt:e.chargepoint.power},null,8,["watt"])]),_:1})):M("",!0),e.chargepoint.power>0?(g(),T(ue,{key:1,heading:"Strom:",class:"grid-col-3"},{default:x(()=>[W($(n.value),1)]),_:1})):M("",!0),e.chargepoint.power>0?(g(),T(ue,{key:2,heading:"Phasen:",class:"grid-col-3"},{default:x(()=>[W($(e.chargepoint.phasesInUse),1)]),_:1})):M("",!0),e.chargepoint.power>0?(g(),T(ue,{key:3,heading:"Sollstrom:",class:"grid-col-3 grid-right"},{default:x(()=>[l("span",yc,$(a.value),1)]),_:1})):M("",!0)])]),_:1}))}}),wc=N(bc,[["__scopeId","data-v-795d5c8f"]]),Sc=t=>(ce("data-v-9f6c66b0"),t=t(),le(),t),kc={class:"content"},xc={class:"leftside"},Mc={class:"rightside"},Pc=Sc(()=>l("span",{class:"statustitle"},"Systemstatus",-1)),$c={class:"settingstitle"},Ic=A({__name:"DisplayTheme",setup(t){function e(n){Ua(n)&&(ne.locked=!1,setTimeout(()=>{ne.locked=!0},ne.timeout*1e3))}lt(()=>{window.addEventListener("resize",qa),window.addEventListener("focus",a),zi()});function a(){document.hasFocus()&&K()}return(n,r)=>(g(),b(ke,null,[l("div",kc,[l("div",xc,[Ne(l("div",null,[y(Wn)],512),[[ht,i(f).graphToShow=="powermeter"]]),Ne(l("div",null,[y(Ir)],512),[[ht,i(f).graphToShow=="powergraph"]]),Ne(l("div",null,[y(eo)],512),[[ht,i(f).graphToShow=="energymeter"]])]),l("div",Mc,[Object.values(i(w)).length>i(f).cpToShow?(g(),T(wc,{key:0,chargepoint:Object.values(i(w))[i(f).cpToShow]},null,8,["chargepoint"])):M("",!0)])]),y(vt,{"modal-id":"numberpad"},{title:x(()=>[W("Code")]),default:x(()=>[y(yo,{"model-value":"","onUpdate:modelValue":e})]),_:1}),y(vt,{"modal-id":"statuspage"},{title:x(()=>[Pc]),default:x(()=>[y($o)]),_:1}),Object.values(i(w)).length>i(f).cpToShow?(g(),T(vt,{key:0,"modal-id":"settingspage"},{title:x(()=>[l("span",$c,"Einstellungen für "+$(Object.values(i(w))[i(f).cpToShow].vehicleName)+" an Ladepunkt "+$(Object.values(i(w))[i(f).cpToShow].name),1)]),default:x(()=>[y(hi,{chargepoint:Object.values(i(w))[i(f).cpToShow]},null,8,["chargepoint"])]),_:1})):M("",!0)],64))}}),Cc=N(Ic,[["__scopeId","data-v-9f6c66b0"]]),Oc={class:"fixeddisplay"},Bc=A({__name:"App",setup(t){return(e,a)=>(g(),b("div",Oc,[y(Cc),y(dn)]))}}),Tc=N(Bc,[["__scopeId","data-v-75d14554"]]),Ac=Ma(Tc);Ac.mount("#app");
diff --git a/packages/modules/display_themes/colors/web/assets/vendor-B1GimsSk.js b/packages/modules/display_themes/colors/web/assets/vendor-B1GimsSk.js
new file mode 100644
index 0000000000..97f6ec0bbb
--- /dev/null
+++ b/packages/modules/display_themes/colors/web/assets/vendor-B1GimsSk.js
@@ -0,0 +1,35 @@
+var dE=Object.defineProperty;var $p=e=>{throw TypeError(e)};var pE=(e,t,r)=>t in e?dE(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var rt=(e,t,r)=>pE(e,typeof t!="symbol"?t+"":t,r),Ru=(e,t,r)=>t.has(e)||$p("Cannot "+r);var Q=(e,t,r)=>(Ru(e,t,"read from private field"),r?r.call(e):t.get(e)),Fe=(e,t,r)=>t.has(e)?$p("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Le=(e,t,r,n)=>(Ru(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),Me=(e,t,r)=>(Ru(e,t,"access private method"),r);var Qs=(e,t,r,n)=>({set _(o){Le(e,t,o,r)},get _(){return Q(e,t,n)}});const Ai=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};/**
+* @vue/shared v3.4.21
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function sd(e,t){const r=new Set(e.split(","));return n=>r.has(n)}const Qe={},uo=[],Zt=()=>{},gE=()=>!1,Nl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ad=e=>e.startsWith("onUpdate:"),yt=Object.assign,ld=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},mE=Object.prototype.hasOwnProperty,Ue=(e,t)=>mE.call(e,t),Be=Array.isArray,co=e=>Bs(e)==="[object Map]",Ml=e=>Bs(e)==="[object Set]",Up=e=>Bs(e)==="[object Date]",De=e=>typeof e=="function",ct=e=>typeof e=="string",Mn=e=>typeof e=="symbol",Xe=e=>e!==null&&typeof e=="object",wy=e=>(Xe(e)||De(e))&&De(e.then)&&De(e.catch),vy=Object.prototype.toString,Bs=e=>vy.call(e),yE=e=>Bs(e).slice(8,-1),Ey=e=>Bs(e)==="[object Object]",ud=e=>ct(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ms=sd(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Pl=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},_E=/-(\w)/g,wo=Pl(e=>e.replace(_E,(t,r)=>r?r.toUpperCase():"")),bE=/\B([A-Z])/g,Bo=Pl(e=>e.replace(bE,"-$1").toLowerCase()),Sy=Pl(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ou=Pl(e=>e?`on${Sy(e)}`:""),Pn=(e,t)=>!Object.is(e,t),Ta=(e,t)=>{for(let r=0;r<e.length;r++)e[r](t)},Za=(e,t,r)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},Wc=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Fp;const Ay=()=>Fp||(Fp=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof Ai<"u"?Ai:{});function cd(e){if(Be(e)){const t={};for(let r=0;r<e.length;r++){const n=e[r],o=ct(n)?SE(n):cd(n);if(o)for(const i in o)t[i]=o[i]}return t}else if(ct(e)||Xe(e))return e}const wE=/;(?![^(]*\))/g,vE=/:([^]+)/,EE=/\/\*[^]*?\*\//g;function SE(e){const t={};return e.replace(EE,"").split(wE).forEach(r=>{if(r){const n=r.split(vE);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function fd(e){let t="";if(ct(e))t=e;else if(Be(e))for(let r=0;r<e.length;r++){const n=fd(e[r]);n&&(t+=n+" ")}else if(Xe(e))for(const r in e)e[r]&&(t+=r+" ");return t.trim()}const AE="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",TE=sd(AE);function Ty(e){return!!e||e===""}function xE(e,t){if(e.length!==t.length)return!1;let r=!0;for(let n=0;r&&n<e.length;n++)r=Ll(e[n],t[n]);return r}function Ll(e,t){if(e===t)return!0;let r=Up(e),n=Up(t);if(r||n)return r&&n?e.getTime()===t.getTime():!1;if(r=Mn(e),n=Mn(t),r||n)return e===t;if(r=Be(e),n=Be(t),r||n)return r&&n?xE(e,t):!1;if(r=Xe(e),n=Xe(t),r||n){if(!r||!n)return!1;const o=Object.keys(e).length,i=Object.keys(t).length;if(o!==i)return!1;for(const s in e){const a=e.hasOwnProperty(s),l=t.hasOwnProperty(s);if(a&&!l||!a&&l||!Ll(e[s],t[s]))return!1}}return String(e)===String(t)}function xy(e,t){return e.findIndex(r=>Ll(r,t))}const LF=e=>ct(e)?e:e==null?"":Be(e)||Xe(e)&&(e.toString===vy||!De(e.toString))?JSON.stringify(e,Iy,2):String(e),Iy=(e,t)=>t&&t.__v_isRef?Iy(e,t.value):co(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[n,o],i)=>(r[ku(n,i)+" =>"]=o,r),{})}:Ml(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>ku(r))}:Mn(t)?ku(t):Xe(t)&&!Be(t)&&!Ey(t)?String(t):t,ku=(e,t="")=>{var r;return Mn(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/**
+* @vue/reactivity v3.4.21
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let ur;class IE{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ur,!t&&ur&&(this.index=(ur.scopes||(ur.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=ur;try{return ur=this,t()}finally{ur=r}}}on(){ur=this}off(){ur=this.parent}stop(t){if(this._active){let r,n;for(r=0,n=this.effects.length;r<n;r++)this.effects[r].stop();for(r=0,n=this.cleanups.length;r<n;r++)this.cleanups[r]();if(this.scopes)for(r=0,n=this.scopes.length;r<n;r++)this.scopes[r].stop(!0);if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0,this._active=!1}}}function CE(e,t=ur){t&&t.active&&t.effects.push(e)}function RE(){return ur}let mi;class hd{constructor(t,r,n,o){this.fn=t,this.trigger=r,this.scheduler=n,this.active=!0,this.deps=[],this._dirtyLevel=4,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,CE(this,o)}get dirty(){if(this._dirtyLevel===2||this._dirtyLevel===3){this._dirtyLevel=1,ki();for(let t=0;t<this._depsLength;t++){const r=this.deps[t];if(r.computed&&(OE(r.computed),this._dirtyLevel>=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),Ni()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=kn,r=mi;try{return kn=!0,mi=this,this._runnings++,jp(this),this.fn()}finally{Wp(this),this._runnings--,mi=r,kn=t}}stop(){var t;this.active&&(jp(this),Wp(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function OE(e){return e.value}function jp(e){e._trackId++,e._depsLength=0}function Wp(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t<e.deps.length;t++)Cy(e.deps[t],e);e.deps.length=e._depsLength}}function Cy(e,t){const r=e.get(t);r!==void 0&&t._trackId!==r&&(e.delete(t),e.size===0&&e.cleanup())}let kn=!0,Hc=0;const Ry=[];function ki(){Ry.push(kn),kn=!1}function Ni(){const e=Ry.pop();kn=e===void 0?!0:e}function dd(){Hc++}function pd(){for(Hc--;!Hc&&Vc.length;)Vc.shift()()}function Oy(e,t,r){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const n=e.deps[e._depsLength];n!==t?(n&&Cy(n,e),e.deps[e._depsLength++]=t):e._depsLength++}}const Vc=[];function ky(e,t,r){dd();for(const n of e.keys()){let o;n._dirtyLevel<t&&(o??(o=e.get(n)===n._trackId))&&(n._shouldSchedule||(n._shouldSchedule=n._dirtyLevel===0),n._dirtyLevel=t),n._shouldSchedule&&(o??(o=e.get(n)===n._trackId))&&(n.trigger(),(!n._runnings||n.allowRecurse)&&n._dirtyLevel!==2&&(n._shouldSchedule=!1,n.scheduler&&Vc.push(n.scheduler)))}pd()}const Ny=(e,t)=>{const r=new Map;return r.cleanup=e,r.computed=t,r},qc=new WeakMap,yi=Symbol(""),Kc=Symbol("");function $t(e,t,r){if(kn&&mi){let n=qc.get(e);n||qc.set(e,n=new Map);let o=n.get(r);o||n.set(r,o=Ny(()=>n.delete(r))),Oy(mi,o)}}function Zr(e,t,r,n,o,i){const s=qc.get(e);if(!s)return;let a=[];if(t==="clear")a=[...s.values()];else if(r==="length"&&Be(e)){const l=Number(n);s.forEach((u,c)=>{(c==="length"||!Mn(c)&&c>=l)&&a.push(u)})}else switch(r!==void 0&&a.push(s.get(r)),t){case"add":Be(e)?ud(r)&&a.push(s.get("length")):(a.push(s.get(yi)),co(e)&&a.push(s.get(Kc)));break;case"delete":Be(e)||(a.push(s.get(yi)),co(e)&&a.push(s.get(Kc)));break;case"set":co(e)&&a.push(s.get(yi));break}dd();for(const l of a)l&&ky(l,4);pd()}const kE=sd("__proto__,__v_isRef,__isVue"),My=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Mn)),Hp=NE();function NE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const n=We(this);for(let i=0,s=this.length;i<s;i++)$t(n,"get",i+"");const o=n[t](...r);return o===-1||o===!1?n[t](...r.map(We)):o}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...r){ki(),dd();const n=We(this)[t].apply(this,r);return pd(),Ni(),n}}),e}function ME(e){const t=We(this);return $t(t,"has",e),t.hasOwnProperty(e)}class Py{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,n){const o=this._isReadonly,i=this._isShallow;if(r==="__v_isReactive")return!o;if(r==="__v_isReadonly")return o;if(r==="__v_isShallow")return i;if(r==="__v_raw")return n===(o?i?KE:$y:i?Dy:By).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const s=Be(t);if(!o){if(s&&Ue(Hp,r))return Reflect.get(Hp,r,n);if(r==="hasOwnProperty")return ME}const a=Reflect.get(t,r,n);return(Mn(r)?My.has(r):kE(r))||(o||$t(t,"get",r),i)?a:Ut(a)?s&&ud(r)?a:a.value:Xe(a)?o?Uy(a):yd(a):a}}class Ly extends Py{constructor(t=!1){super(!1,t)}set(t,r,n,o){let i=t[r];if(!this._isShallow){const l=vo(i);if(!el(n)&&!vo(n)&&(i=We(i),n=We(n)),!Be(t)&&Ut(i)&&!Ut(n))return l?!1:(i.value=n,!0)}const s=Be(t)&&ud(r)?Number(r)<t.length:Ue(t,r),a=Reflect.set(t,r,n,o);return t===We(o)&&(s?Pn(n,i)&&Zr(t,"set",r,n):Zr(t,"add",r,n)),a}deleteProperty(t,r){const n=Ue(t,r);t[r];const o=Reflect.deleteProperty(t,r);return o&&n&&Zr(t,"delete",r,void 0),o}has(t,r){const n=Reflect.has(t,r);return(!Mn(r)||!My.has(r))&&$t(t,"has",r),n}ownKeys(t){return $t(t,"iterate",Be(t)?"length":yi),Reflect.ownKeys(t)}}class PE extends Py{constructor(t=!1){super(!0,t)}set(t,r){return!0}deleteProperty(t,r){return!0}}const LE=new Ly,BE=new PE,DE=new Ly(!0),gd=e=>e,Bl=e=>Reflect.getPrototypeOf(e);function Xs(e,t,r=!1,n=!1){e=e.__v_raw;const o=We(e),i=We(t);r||(Pn(t,i)&&$t(o,"get",t),$t(o,"get",i));const{has:s}=Bl(o),a=n?gd:r?bd:xs;if(s.call(o,t))return a(e.get(t));if(s.call(o,i))return a(e.get(i));e!==o&&e.get(t)}function Js(e,t=!1){const r=this.__v_raw,n=We(r),o=We(e);return t||(Pn(e,o)&&$t(n,"has",e),$t(n,"has",o)),e===o?r.has(e):r.has(e)||r.has(o)}function Zs(e,t=!1){return e=e.__v_raw,!t&&$t(We(e),"iterate",yi),Reflect.get(e,"size",e)}function Vp(e){e=We(e);const t=We(this);return Bl(t).has.call(t,e)||(t.add(e),Zr(t,"add",e,e)),this}function qp(e,t){t=We(t);const r=We(this),{has:n,get:o}=Bl(r);let i=n.call(r,e);i||(e=We(e),i=n.call(r,e));const s=o.call(r,e);return r.set(e,t),i?Pn(t,s)&&Zr(r,"set",e,t):Zr(r,"add",e,t),this}function Kp(e){const t=We(this),{has:r,get:n}=Bl(t);let o=r.call(t,e);o||(e=We(e),o=r.call(t,e)),n&&n.call(t,e);const i=t.delete(e);return o&&Zr(t,"delete",e,void 0),i}function Yp(){const e=We(this),t=e.size!==0,r=e.clear();return t&&Zr(e,"clear",void 0,void 0),r}function ea(e,t){return function(n,o){const i=this,s=i.__v_raw,a=We(s),l=t?gd:e?bd:xs;return!e&&$t(a,"iterate",yi),s.forEach((u,c)=>n.call(o,l(u),l(c),i))}}function ta(e,t,r){return function(...n){const o=this.__v_raw,i=We(o),s=co(i),a=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,u=o[e](...n),c=r?gd:t?bd:xs;return!t&&$t(i,"iterate",l?Kc:yi),{next(){const{value:d,done:p}=u.next();return p?{value:d,done:p}:{value:a?[c(d[0]),c(d[1])]:c(d),done:p}},[Symbol.iterator](){return this}}}}function bn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function $E(){const e={get(i){return Xs(this,i)},get size(){return Zs(this)},has:Js,add:Vp,set:qp,delete:Kp,clear:Yp,forEach:ea(!1,!1)},t={get(i){return Xs(this,i,!1,!0)},get size(){return Zs(this)},has:Js,add:Vp,set:qp,delete:Kp,clear:Yp,forEach:ea(!1,!0)},r={get(i){return Xs(this,i,!0)},get size(){return Zs(this,!0)},has(i){return Js.call(this,i,!0)},add:bn("add"),set:bn("set"),delete:bn("delete"),clear:bn("clear"),forEach:ea(!0,!1)},n={get(i){return Xs(this,i,!0,!0)},get size(){return Zs(this,!0)},has(i){return Js.call(this,i,!0)},add:bn("add"),set:bn("set"),delete:bn("delete"),clear:bn("clear"),forEach:ea(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=ta(i,!1,!1),r[i]=ta(i,!0,!1),t[i]=ta(i,!1,!0),n[i]=ta(i,!0,!0)}),[e,r,t,n]}const[UE,FE,jE,WE]=$E();function md(e,t){const r=t?e?WE:jE:e?FE:UE;return(n,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?n:Reflect.get(Ue(r,o)&&o in n?r:n,o,i)}const HE={get:md(!1,!1)},VE={get:md(!1,!0)},qE={get:md(!0,!1)},By=new WeakMap,Dy=new WeakMap,$y=new WeakMap,KE=new WeakMap;function YE(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function zE(e){return e.__v_skip||!Object.isExtensible(e)?0:YE(yE(e))}function yd(e){return vo(e)?e:_d(e,!1,LE,HE,By)}function GE(e){return _d(e,!1,DE,VE,Dy)}function Uy(e){return _d(e,!0,BE,qE,$y)}function _d(e,t,r,n,o){if(!Xe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const s=zE(e);if(s===0)return e;const a=new Proxy(e,s===2?n:r);return o.set(e,a),a}function fo(e){return vo(e)?fo(e.__v_raw):!!(e&&e.__v_isReactive)}function vo(e){return!!(e&&e.__v_isReadonly)}function el(e){return!!(e&&e.__v_isShallow)}function Fy(e){return fo(e)||vo(e)}function We(e){const t=e&&e.__v_raw;return t?We(t):e}function jy(e){return Object.isExtensible(e)&&Za(e,"__v_skip",!0),e}const xs=e=>Xe(e)?yd(e):e,bd=e=>Xe(e)?Uy(e):e;class Wy{constructor(t,r,n,o){this.getter=t,this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new hd(()=>t(this._value),()=>xa(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=n}get value(){const t=We(this);return(!t._cacheable||t.effect.dirty)&&Pn(t._value,t._value=t.effect.run())&&xa(t,4),Hy(t),t.effect._dirtyLevel>=2&&xa(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function QE(e,t,r=!1){let n,o;const i=De(e);return i?(n=e,o=Zt):(n=e.get,o=e.set),new Wy(n,o,i||!o,r)}function Hy(e){var t;kn&&mi&&(e=We(e),Oy(mi,(t=e.dep)!=null?t:e.dep=Ny(()=>e.dep=void 0,e instanceof Wy?e:void 0)))}function xa(e,t=4,r){e=We(e);const n=e.dep;n&&ky(n,t)}function Ut(e){return!!(e&&e.__v_isRef===!0)}function BF(e){return XE(e,!1)}function XE(e,t){return Ut(e)?e:new JE(e,t)}class JE{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:We(t),this._value=r?t:xs(t)}get value(){return Hy(this),this._value}set value(t){const r=this.__v_isShallow||el(t)||vo(t);t=r?t:We(t),Pn(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:xs(t),xa(this,4))}}function ZE(e){return Ut(e)?e.value:e}const eS={get:(e,t,r)=>ZE(Reflect.get(e,t,r)),set:(e,t,r,n)=>{const o=e[t];return Ut(o)&&!Ut(r)?(o.value=r,!0):Reflect.set(e,t,r,n)}};function Vy(e){return fo(e)?e:new Proxy(e,eS)}/**
+* @vue/runtime-core v3.4.21
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function Nn(e,t,r,n){try{return n?e(...n):e()}catch(o){Dl(o,t,r)}}function mr(e,t,r,n){if(De(e)){const i=Nn(e,t,r,n);return i&&wy(i)&&i.catch(s=>{Dl(s,t,r)}),i}const o=[];for(let i=0;i<e.length;i++)o.push(mr(e[i],t,r,n));return o}function Dl(e,t,r,n=!0){const o=t?t.vnode:null;if(t){let i=t.parent;const s=t.proxy,a=`https://vuejs.org/error-reference/#runtime-${r}`;for(;i;){const u=i.ec;if(u){for(let c=0;c<u.length;c++)if(u[c](e,s,a)===!1)return}i=i.parent}const l=t.appContext.config.errorHandler;if(l){Nn(l,null,10,[e,s,a]);return}}tS(e,r,o,n)}function tS(e,t,r,n=!0){console.error(e)}let Is=!1,Yc=!1;const Tt=[];let Ir=0;const ho=[];let In=null,oi=0;const qy=Promise.resolve();let wd=null;function rS(e){const t=wd||qy;return e?t.then(this?e.bind(this):e):t}function nS(e){let t=Ir+1,r=Tt.length;for(;t<r;){const n=t+r>>>1,o=Tt[n],i=Cs(o);i<e||i===e&&o.pre?t=n+1:r=n}return t}function vd(e){(!Tt.length||!Tt.includes(e,Is&&e.allowRecurse?Ir+1:Ir))&&(e.id==null?Tt.push(e):Tt.splice(nS(e.id),0,e),Ky())}function Ky(){!Is&&!Yc&&(Yc=!0,wd=qy.then(zy))}function iS(e){const t=Tt.indexOf(e);t>Ir&&Tt.splice(t,1)}function oS(e){Be(e)?ho.push(...e):(!In||!In.includes(e,e.allowRecurse?oi+1:oi))&&ho.push(e),Ky()}function zp(e,t,r=Is?Ir+1:0){for(;r<Tt.length;r++){const n=Tt[r];if(n&&n.pre){if(e&&n.id!==e.uid)continue;Tt.splice(r,1),r--,n()}}}function Yy(e){if(ho.length){const t=[...new Set(ho)].sort((r,n)=>Cs(r)-Cs(n));if(ho.length=0,In){In.push(...t);return}for(In=t,oi=0;oi<In.length;oi++)In[oi]();In=null,oi=0}}const Cs=e=>e.id==null?1/0:e.id,sS=(e,t)=>{const r=Cs(e)-Cs(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function zy(e){Yc=!1,Is=!0,Tt.sort(sS);try{for(Ir=0;Ir<Tt.length;Ir++){const t=Tt[Ir];t&&t.active!==!1&&Nn(t,null,14)}}finally{Ir=0,Tt.length=0,Yy(),Is=!1,wd=null,(Tt.length||ho.length)&&zy()}}function aS(e,t,...r){if(e.isUnmounted)return;const n=e.vnode.props||Qe;let o=r;const i=t.startsWith("update:"),s=i&&t.slice(7);if(s&&s in n){const c=`${s==="modelValue"?"model":s}Modifiers`,{number:d,trim:p}=n[c]||Qe;p&&(o=r.map(m=>ct(m)?m.trim():m)),d&&(o=r.map(Wc))}let a,l=n[a=Ou(t)]||n[a=Ou(wo(t))];!l&&i&&(l=n[a=Ou(Bo(t))]),l&&mr(l,e,6,o);const u=n[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,mr(u,e,6,o)}}function Gy(e,t,r=!1){const n=t.emitsCache,o=n.get(e);if(o!==void 0)return o;const i=e.emits;let s={},a=!1;if(!De(e)){const l=u=>{const c=Gy(u,t,!0);c&&(a=!0,yt(s,c))};!r&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!a?(Xe(e)&&n.set(e,null),null):(Be(i)?i.forEach(l=>s[l]=null):yt(s,i),Xe(e)&&n.set(e,s),s)}function $l(e,t){return!e||!Nl(t)?!1:(t=t.slice(2).replace(/Once$/,""),Ue(e,t[0].toLowerCase()+t.slice(1))||Ue(e,Bo(t))||Ue(e,t))}let mt=null,Ul=null;function tl(e){const t=mt;return mt=e,Ul=e&&e.type.__scopeId||null,t}function DF(e){Ul=e}function $F(){Ul=null}function lS(e,t=mt,r){if(!t||e._n)return e;const n=(...o)=>{n._d&&ig(-1);const i=tl(t);let s;try{s=e(...o)}finally{tl(i),n._d&&ig(1)}return s};return n._n=!0,n._c=!0,n._d=!0,n}function Nu(e){const{type:t,vnode:r,proxy:n,withProxy:o,props:i,propsOptions:[s],slots:a,attrs:l,emit:u,render:c,renderCache:d,data:p,setupState:m,ctx:_,inheritAttrs:b}=e;let T,N;const R=tl(e);try{if(r.shapeFlag&4){const D=o||n,U=D;T=xr(c.call(U,D,d,i,m,p,_)),N=l}else{const D=t;T=xr(D.length>1?D(i,{attrs:l,slots:a,emit:u}):D(i,null)),N=t.props?l:uS(l)}}catch(D){ws.length=0,Dl(D,e,1),T=yr(Ln)}let S=T;if(N&&b!==!1){const D=Object.keys(N),{shapeFlag:U}=S;D.length&&U&7&&(s&&D.some(ad)&&(N=cS(N,s)),S=Eo(S,N))}return r.dirs&&(S=Eo(S),S.dirs=S.dirs?S.dirs.concat(r.dirs):r.dirs),r.transition&&(S.transition=r.transition),T=S,tl(R),T}const uS=e=>{let t;for(const r in e)(r==="class"||r==="style"||Nl(r))&&((t||(t={}))[r]=e[r]);return t},cS=(e,t)=>{const r={};for(const n in e)(!ad(n)||!(n.slice(9)in t))&&(r[n]=e[n]);return r};function fS(e,t,r){const{props:n,children:o,component:i}=e,{props:s,children:a,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&l>=0){if(l&1024)return!0;if(l&16)return n?Gp(n,s,u):!!s;if(l&8){const c=t.dynamicProps;for(let d=0;d<c.length;d++){const p=c[d];if(s[p]!==n[p]&&!$l(u,p))return!0}}}else return(o||a)&&(!a||!a.$stable)?!0:n===s?!1:n?s?Gp(n,s,u):!0:!!s;return!1}function Gp(e,t,r){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let o=0;o<n.length;o++){const i=n[o];if(t[i]!==e[i]&&!$l(r,i))return!0}return!1}function hS({vnode:e,parent:t},r){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=r,t=t.parent;else break}}const dS=Symbol.for("v-ndc"),pS=e=>e.__isSuspense;function gS(e,t){t&&t.pendingBranch?Be(e)?t.effects.push(...e):t.effects.push(e):oS(e)}const mS=Symbol.for("v-scx"),yS=()=>Ia(mS);function UF(e,t){return Ed(e,null,t)}const ra={};function Mu(e,t,r){return Ed(e,t,r)}function Ed(e,t,{immediate:r,deep:n,flush:o,once:i,onTrack:s,onTrigger:a}=Qe){if(t&&i){const x=t;t=(...L)=>{x(...L),U()}}const l=Rt,u=x=>n===!0?x:li(x,n===!1?1:void 0);let c,d=!1,p=!1;if(Ut(e)?(c=()=>e.value,d=el(e)):fo(e)?(c=()=>u(e),d=!0):Be(e)?(p=!0,d=e.some(x=>fo(x)||el(x)),c=()=>e.map(x=>{if(Ut(x))return x.value;if(fo(x))return u(x);if(De(x))return Nn(x,l,2)})):De(e)?t?c=()=>Nn(e,l,2):c=()=>(m&&m(),mr(e,l,3,[_])):c=Zt,t&&n){const x=c;c=()=>li(x())}let m,_=x=>{m=S.onStop=()=>{Nn(x,l,4),m=S.onStop=void 0}},b;if(Hl)if(_=Zt,t?r&&mr(t,l,3,[c(),p?[]:void 0,_]):c(),o==="sync"){const x=yS();b=x.__watcherHandles||(x.__watcherHandles=[])}else return Zt;let T=p?new Array(e.length).fill(ra):ra;const N=()=>{if(!(!S.active||!S.dirty))if(t){const x=S.run();(n||d||(p?x.some((L,j)=>Pn(L,T[j])):Pn(x,T)))&&(m&&m(),mr(t,l,3,[x,T===ra?void 0:p&&T[0]===ra?[]:T,_]),T=x)}else S.run()};N.allowRecurse=!!t;let R;o==="sync"?R=N:o==="post"?R=()=>Lt(N,l&&l.suspense):(N.pre=!0,l&&(N.id=l.uid),R=()=>vd(N));const S=new hd(c,Zt,R),D=RE(),U=()=>{S.stop(),D&&ld(D.effects,S)};return t?r?N():T=S.run():o==="post"?Lt(S.run.bind(S),l&&l.suspense):S.run(),b&&b.push(U),U}function _S(e,t,r){const n=this.proxy,o=ct(e)?e.includes(".")?Qy(n,e):()=>n[e]:e.bind(n,n);let i;De(t)?i=t:(i=t.handler,r=t);const s=Ds(this),a=Ed(o,i.bind(n),r);return s(),a}function Qy(e,t){const r=t.split(".");return()=>{let n=e;for(let o=0;o<r.length&&n;o++)n=n[r[o]];return n}}function li(e,t,r=0,n){if(!Xe(e)||e.__v_skip)return e;if(t&&t>0){if(r>=t)return e;r++}if(n=n||new Set,n.has(e))return e;if(n.add(e),Ut(e))li(e.value,t,r,n);else if(Be(e))for(let o=0;o<e.length;o++)li(e[o],t,r,n);else if(Ml(e)||co(e))e.forEach(o=>{li(o,t,r,n)});else if(Ey(e))for(const o in e)li(e[o],t,r,n);return e}function FF(e,t){if(mt===null)return e;const r=Vl(mt)||mt.proxy,n=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[i,s,a,l=Qe]=t[o];i&&(De(i)&&(i={mounted:i,updated:i}),i.deep&&li(s),n.push({dir:i,instance:r,value:s,oldValue:void 0,arg:a,modifiers:l}))}return e}function Kn(e,t,r,n){const o=e.dirs,i=t&&t.dirs;for(let s=0;s<o.length;s++){const a=o[s];i&&(a.oldValue=i[s].value);let l=a.dir[n];l&&(ki(),mr(l,r,8,[e.el,a,e,t]),Ni())}}/*! #__NO_SIDE_EFFECTS__ */function jF(e,t){return De(e)?yt({name:e.name},t,{setup:e}):e}const ys=e=>!!e.type.__asyncLoader,Xy=e=>e.type.__isKeepAlive;function bS(e,t){Jy(e,"a",t)}function wS(e,t){Jy(e,"da",t)}function Jy(e,t,r=Rt){const n=e.__wdc||(e.__wdc=()=>{let o=r;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Fl(t,n,r),r){let o=r.parent;for(;o&&o.parent;)Xy(o.parent.vnode)&&vS(n,t,r,o),o=o.parent}}function vS(e,t,r,n){const o=Fl(t,e,n,!0);Zy(()=>{ld(n[t],o)},r)}function Fl(e,t,r=Rt,n=!1){if(r){const o=r[e]||(r[e]=[]),i=t.__weh||(t.__weh=(...s)=>{if(r.isUnmounted)return;ki();const a=Ds(r),l=mr(t,r,e,s);return a(),Ni(),l});return n?o.unshift(i):o.push(i),i}}const hn=e=>(t,r=Rt)=>(!Hl||e==="sp")&&Fl(e,(...n)=>t(...n),r),ES=hn("bm"),SS=hn("m"),AS=hn("bu"),TS=hn("u"),xS=hn("bum"),Zy=hn("um"),IS=hn("sp"),CS=hn("rtg"),RS=hn("rtc");function OS(e,t=Rt){Fl("ec",e,t)}function WF(e,t,r,n){let o;const i=r;if(Be(e)||ct(e)){o=new Array(e.length);for(let s=0,a=e.length;s<a;s++)o[s]=t(e[s],s,void 0,i)}else if(typeof e=="number"){o=new Array(e);for(let s=0;s<e;s++)o[s]=t(s+1,s,void 0,i)}else if(Xe(e))if(e[Symbol.iterator])o=Array.from(e,(s,a)=>t(s,a,void 0,i));else{const s=Object.keys(e);o=new Array(s.length);for(let a=0,l=s.length;a<l;a++){const u=s[a];o[a]=t(e[u],u,a,i)}}else o=[];return o}function HF(e,t,r={},n,o){if(mt.isCE||mt.parent&&ys(mt.parent)&&mt.parent.isCE)return t!=="default"&&(r.name=t),yr("slot",r,n&&n());let i=e[t];i&&i._c&&(i._d=!1),c_();const s=i&&e_(i(r)),a=h_(fr,{key:r.key||s&&s.key||`_${t}`},s||(n?n():[]),s&&e._===1?64:-2);return i&&i._c&&(i._d=!0),a}function e_(e){return e.some(t=>d_(t)?!(t.type===Ln||t.type===fr&&!e_(t.children)):!0)?e:null}const zc=e=>e?m_(e)?Vl(e)||e.proxy:zc(e.parent):null,_s=yt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>zc(e.parent),$root:e=>zc(e.root),$emit:e=>e.emit,$options:e=>Sd(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,vd(e.update)}),$nextTick:e=>e.n||(e.n=rS.bind(e.proxy)),$watch:e=>_S.bind(e)}),Pu=(e,t)=>e!==Qe&&!e.__isScriptSetup&&Ue(e,t),kS={get({_:e},t){const{ctx:r,setupState:n,data:o,props:i,accessCache:s,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const m=s[t];if(m!==void 0)switch(m){case 1:return n[t];case 2:return o[t];case 4:return r[t];case 3:return i[t]}else{if(Pu(n,t))return s[t]=1,n[t];if(o!==Qe&&Ue(o,t))return s[t]=2,o[t];if((u=e.propsOptions[0])&&Ue(u,t))return s[t]=3,i[t];if(r!==Qe&&Ue(r,t))return s[t]=4,r[t];Gc&&(s[t]=0)}}const c=_s[t];let d,p;if(c)return t==="$attrs"&&$t(e,"get",t),c(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(r!==Qe&&Ue(r,t))return s[t]=4,r[t];if(p=l.config.globalProperties,Ue(p,t))return p[t]},set({_:e},t,r){const{data:n,setupState:o,ctx:i}=e;return Pu(o,t)?(o[t]=r,!0):n!==Qe&&Ue(n,t)?(n[t]=r,!0):Ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:n,appContext:o,propsOptions:i}},s){let a;return!!r[s]||e!==Qe&&Ue(e,s)||Pu(t,s)||(a=i[0])&&Ue(a,s)||Ue(n,s)||Ue(_s,s)||Ue(o.config.globalProperties,s)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:Ue(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function Qp(e){return Be(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}let Gc=!0;function NS(e){const t=Sd(e),r=e.proxy,n=e.ctx;Gc=!1,t.beforeCreate&&Xp(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:s,watch:a,provide:l,inject:u,created:c,beforeMount:d,mounted:p,beforeUpdate:m,updated:_,activated:b,deactivated:T,beforeDestroy:N,beforeUnmount:R,destroyed:S,unmounted:D,render:U,renderTracked:x,renderTriggered:L,errorCaptured:j,serverPrefetch:Y,expose:se,inheritAttrs:re,components:P,directives:B,filters:oe}=t;if(u&&MS(u,n,null),s)for(const ae in s){const z=s[ae];De(z)&&(n[ae]=z.bind(r))}if(o){const ae=o.call(r,r);Xe(ae)&&(e.data=yd(ae))}if(Gc=!0,i)for(const ae in i){const z=i[ae],pe=De(z)?z.bind(r,r):De(z.get)?z.get.bind(r,r):Zt,de=!De(z)&&De(z.set)?z.set.bind(r):Zt,ge=uA({get:pe,set:de});Object.defineProperty(n,ae,{enumerable:!0,configurable:!0,get:()=>ge.value,set:O=>ge.value=O})}if(a)for(const ae in a)t_(a[ae],n,r,ae);if(l){const ae=De(l)?l.call(r):l;Reflect.ownKeys(ae).forEach(z=>{US(z,ae[z])})}c&&Xp(c,e,"c");function ue(ae,z){Be(z)?z.forEach(pe=>ae(pe.bind(r))):z&&ae(z.bind(r))}if(ue(ES,d),ue(SS,p),ue(AS,m),ue(TS,_),ue(bS,b),ue(wS,T),ue(OS,j),ue(RS,x),ue(CS,L),ue(xS,R),ue(Zy,D),ue(IS,Y),Be(se))if(se.length){const ae=e.exposed||(e.exposed={});se.forEach(z=>{Object.defineProperty(ae,z,{get:()=>r[z],set:pe=>r[z]=pe})})}else e.exposed||(e.exposed={});U&&e.render===Zt&&(e.render=U),re!=null&&(e.inheritAttrs=re),P&&(e.components=P),B&&(e.directives=B)}function MS(e,t,r=Zt){Be(e)&&(e=Qc(e));for(const n in e){const o=e[n];let i;Xe(o)?"default"in o?i=Ia(o.from||n,o.default,!0):i=Ia(o.from||n):i=Ia(o),Ut(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:s=>i.value=s}):t[n]=i}}function Xp(e,t,r){mr(Be(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,r)}function t_(e,t,r,n){const o=n.includes(".")?Qy(r,n):()=>r[n];if(ct(e)){const i=t[e];De(i)&&Mu(o,i)}else if(De(e))Mu(o,e.bind(r));else if(Xe(e))if(Be(e))e.forEach(i=>t_(i,t,r,n));else{const i=De(e.handler)?e.handler.bind(r):t[e.handler];De(i)&&Mu(o,i,e)}}function Sd(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,a=i.get(t);let l;return a?l=a:!o.length&&!r&&!n?l=t:(l={},o.length&&o.forEach(u=>rl(l,u,s,!0)),rl(l,t,s)),Xe(t)&&i.set(t,l),l}function rl(e,t,r,n=!1){const{mixins:o,extends:i}=t;i&&rl(e,i,r,!0),o&&o.forEach(s=>rl(e,s,r,!0));for(const s in t)if(!(n&&s==="expose")){const a=PS[s]||r&&r[s];e[s]=a?a(e[s],t[s]):t[s]}return e}const PS={data:Jp,props:Zp,emits:Zp,methods:as,computed:as,beforeCreate:Ct,created:Ct,beforeMount:Ct,mounted:Ct,beforeUpdate:Ct,updated:Ct,beforeDestroy:Ct,beforeUnmount:Ct,destroyed:Ct,unmounted:Ct,activated:Ct,deactivated:Ct,errorCaptured:Ct,serverPrefetch:Ct,components:as,directives:as,watch:BS,provide:Jp,inject:LS};function Jp(e,t){return t?e?function(){return yt(De(e)?e.call(this,this):e,De(t)?t.call(this,this):t)}:t:e}function LS(e,t){return as(Qc(e),Qc(t))}function Qc(e){if(Be(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function Ct(e,t){return e?[...new Set([].concat(e,t))]:t}function as(e,t){return e?yt(Object.create(null),e,t):t}function Zp(e,t){return e?Be(e)&&Be(t)?[...new Set([...e,...t])]:yt(Object.create(null),Qp(e),Qp(t??{})):t}function BS(e,t){if(!e)return t;if(!t)return e;const r=yt(Object.create(null),e);for(const n in t)r[n]=Ct(e[n],t[n]);return r}function r_(){return{app:null,config:{isNativeTag:gE,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let DS=0;function $S(e,t){return function(n,o=null){De(n)||(n=yt({},n)),o!=null&&!Xe(o)&&(o=null);const i=r_(),s=new WeakSet;let a=!1;const l=i.app={_uid:DS++,_component:n,_props:o,_container:null,_context:i,_instance:null,version:cA,get config(){return i.config},set config(u){},use(u,...c){return s.has(u)||(u&&De(u.install)?(s.add(u),u.install(l,...c)):De(u)&&(s.add(u),u(l,...c))),l},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),l},component(u,c){return c?(i.components[u]=c,l):i.components[u]},directive(u,c){return c?(i.directives[u]=c,l):i.directives[u]},mount(u,c,d){if(!a){const p=yr(n,o);return p.appContext=i,d===!0?d="svg":d===!1&&(d=void 0),c&&t?t(p,u):e(p,u,d),a=!0,l._container=u,u.__vue_app__=l,Vl(p.component)||p.component.proxy}},unmount(){a&&(e(null,l._container),delete l._container.__vue_app__)},provide(u,c){return i.provides[u]=c,l},runWithContext(u){const c=bs;bs=l;try{return u()}finally{bs=c}}};return l}}let bs=null;function US(e,t){if(Rt){let r=Rt.provides;const n=Rt.parent&&Rt.parent.provides;n===r&&(r=Rt.provides=Object.create(n)),r[e]=t}}function Ia(e,t,r=!1){const n=Rt||mt;if(n||bs){const o=n?n.parent==null?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:bs._context.provides;if(o&&e in o)return o[e];if(arguments.length>1)return r&&De(t)?t.call(n&&n.proxy):t}}function FS(e,t,r,n=!1){const o={},i={};Za(i,Wl,1),e.propsDefaults=Object.create(null),n_(e,t,o,i);for(const s in e.propsOptions[0])s in o||(o[s]=void 0);r?e.props=n?o:GE(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function jS(e,t,r,n){const{props:o,attrs:i,vnode:{patchFlag:s}}=e,a=We(o),[l]=e.propsOptions;let u=!1;if((n||s>0)&&!(s&16)){if(s&8){const c=e.vnode.dynamicProps;for(let d=0;d<c.length;d++){let p=c[d];if($l(e.emitsOptions,p))continue;const m=t[p];if(l)if(Ue(i,p))m!==i[p]&&(i[p]=m,u=!0);else{const _=wo(p);o[_]=Xc(l,a,_,m,e,!1)}else m!==i[p]&&(i[p]=m,u=!0)}}}else{n_(e,t,o,i)&&(u=!0);let c;for(const d in a)(!t||!Ue(t,d)&&((c=Bo(d))===d||!Ue(t,c)))&&(l?r&&(r[d]!==void 0||r[c]!==void 0)&&(o[d]=Xc(l,a,d,void 0,e,!0)):delete o[d]);if(i!==a)for(const d in i)(!t||!Ue(t,d))&&(delete i[d],u=!0)}u&&Zr(e,"set","$attrs")}function n_(e,t,r,n){const[o,i]=e.propsOptions;let s=!1,a;if(t)for(let l in t){if(ms(l))continue;const u=t[l];let c;o&&Ue(o,c=wo(l))?!i||!i.includes(c)?r[c]=u:(a||(a={}))[c]=u:$l(e.emitsOptions,l)||(!(l in n)||u!==n[l])&&(n[l]=u,s=!0)}if(i){const l=We(r),u=a||Qe;for(let c=0;c<i.length;c++){const d=i[c];r[d]=Xc(o,l,d,u[d],e,!Ue(u,d))}}return s}function Xc(e,t,r,n,o,i){const s=e[r];if(s!=null){const a=Ue(s,"default");if(a&&n===void 0){const l=s.default;if(s.type!==Function&&!s.skipFactory&&De(l)){const{propsDefaults:u}=o;if(r in u)n=u[r];else{const c=Ds(o);n=u[r]=l.call(null,t),c()}}else n=l}s[0]&&(i&&!a?n=!1:s[1]&&(n===""||n===Bo(r))&&(n=!0))}return n}function i_(e,t,r=!1){const n=t.propsCache,o=n.get(e);if(o)return o;const i=e.props,s={},a=[];let l=!1;if(!De(e)){const c=d=>{l=!0;const[p,m]=i_(d,t,!0);yt(s,p),m&&a.push(...m)};!r&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!i&&!l)return Xe(e)&&n.set(e,uo),uo;if(Be(i))for(let c=0;c<i.length;c++){const d=wo(i[c]);eg(d)&&(s[d]=Qe)}else if(i)for(const c in i){const d=wo(c);if(eg(d)){const p=i[c],m=s[d]=Be(p)||De(p)?{type:p}:yt({},p);if(m){const _=ng(Boolean,m.type),b=ng(String,m.type);m[0]=_>-1,m[1]=b<0||_<b,(_>-1||Ue(m,"default"))&&a.push(d)}}}const u=[s,a];return Xe(e)&&n.set(e,u),u}function eg(e){return e[0]!=="$"&&!ms(e)}function tg(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function rg(e,t){return tg(e)===tg(t)}function ng(e,t){return Be(t)?t.findIndex(r=>rg(r,e)):De(t)&&rg(t,e)?0:-1}const o_=e=>e[0]==="_"||e==="$stable",Ad=e=>Be(e)?e.map(xr):[xr(e)],WS=(e,t,r)=>{if(t._n)return t;const n=lS((...o)=>Ad(t(...o)),r);return n._c=!1,n},s_=(e,t,r)=>{const n=e._ctx;for(const o in e){if(o_(o))continue;const i=e[o];if(De(i))t[o]=WS(o,i,n);else if(i!=null){const s=Ad(i);t[o]=()=>s}}},a_=(e,t)=>{const r=Ad(t);e.slots.default=()=>r},HS=(e,t)=>{if(e.vnode.shapeFlag&32){const r=t._;r?(e.slots=We(t),Za(t,"_",r)):s_(t,e.slots={})}else e.slots={},t&&a_(e,t);Za(e.slots,Wl,1)},VS=(e,t,r)=>{const{vnode:n,slots:o}=e;let i=!0,s=Qe;if(n.shapeFlag&32){const a=t._;a?r&&a===1?i=!1:(yt(o,t),!r&&a===1&&delete o._):(i=!t.$stable,s_(t,o)),s=t}else t&&(a_(e,t),s={default:1});if(i)for(const a in o)!o_(a)&&s[a]==null&&delete o[a]};function Jc(e,t,r,n,o=!1){if(Be(e)){e.forEach((p,m)=>Jc(p,t&&(Be(t)?t[m]:t),r,n,o));return}if(ys(n)&&!o)return;const i=n.shapeFlag&4?Vl(n.component)||n.component.proxy:n.el,s=o?null:i,{i:a,r:l}=e,u=t&&t.r,c=a.refs===Qe?a.refs={}:a.refs,d=a.setupState;if(u!=null&&u!==l&&(ct(u)?(c[u]=null,Ue(d,u)&&(d[u]=null)):Ut(u)&&(u.value=null)),De(l))Nn(l,a,12,[s,c]);else{const p=ct(l),m=Ut(l);if(p||m){const _=()=>{if(e.f){const b=p?Ue(d,l)?d[l]:c[l]:l.value;o?Be(b)&&ld(b,i):Be(b)?b.includes(i)||b.push(i):p?(c[l]=[i],Ue(d,l)&&(d[l]=c[l])):(l.value=[i],e.k&&(c[e.k]=l.value))}else p?(c[l]=s,Ue(d,l)&&(d[l]=s)):m&&(l.value=s,e.k&&(c[e.k]=s))};s?(_.id=-1,Lt(_,r)):_()}}}const Lt=gS;function qS(e){return KS(e)}function KS(e,t){const r=Ay();r.__VUE__=!0;const{insert:n,remove:o,patchProp:i,createElement:s,createText:a,createComment:l,setText:u,setElementText:c,parentNode:d,nextSibling:p,setScopeId:m=Zt,insertStaticContent:_}=e,b=(v,A,E,k=null,M=null,ee=null,te=void 0,$=null,K=!!A.dynamicChildren)=>{if(v===A)return;v&&!zo(v,A)&&(k=q(v),O(v,M,ee,!0),v=null),A.patchFlag===-2&&(K=!1,A.dynamicChildren=null);const{type:I,ref:W,shapeFlag:J}=A;switch(I){case jl:T(v,A,E,k);break;case Ln:N(v,A,E,k);break;case Ca:v==null&&R(A,E,k,te);break;case fr:P(v,A,E,k,M,ee,te,$,K);break;default:J&1?U(v,A,E,k,M,ee,te,$,K):J&6?B(v,A,E,k,M,ee,te,$,K):(J&64||J&128)&&I.process(v,A,E,k,M,ee,te,$,K,he)}W!=null&&M&&Jc(W,v&&v.ref,ee,A||v,!A)},T=(v,A,E,k)=>{if(v==null)n(A.el=a(A.children),E,k);else{const M=A.el=v.el;A.children!==v.children&&u(M,A.children)}},N=(v,A,E,k)=>{v==null?n(A.el=l(A.children||""),E,k):A.el=v.el},R=(v,A,E,k)=>{[v.el,v.anchor]=_(v.children,A,E,k,v.el,v.anchor)},S=({el:v,anchor:A},E,k)=>{let M;for(;v&&v!==A;)M=p(v),n(v,E,k),v=M;n(A,E,k)},D=({el:v,anchor:A})=>{let E;for(;v&&v!==A;)E=p(v),o(v),v=E;o(A)},U=(v,A,E,k,M,ee,te,$,K)=>{A.type==="svg"?te="svg":A.type==="math"&&(te="mathml"),v==null?x(A,E,k,M,ee,te,$,K):Y(v,A,M,ee,te,$,K)},x=(v,A,E,k,M,ee,te,$)=>{let K,I;const{props:W,shapeFlag:J,transition:le,dirs:y}=v;if(K=v.el=s(v.type,ee,W&&W.is,W),J&8?c(K,v.children):J&16&&j(v.children,K,null,k,M,Lu(v,ee),te,$),y&&Kn(v,null,k,"created"),L(K,v,v.scopeId,te,k),W){for(const f in W)f!=="value"&&!ms(f)&&i(K,f,null,W[f],ee,v.children,k,M,ye);"value"in W&&i(K,"value",null,W.value,ee),(I=W.onVnodeBeforeMount)&&wr(I,k,v)}y&&Kn(v,null,k,"beforeMount");const h=YS(M,le);h&&le.beforeEnter(K),n(K,A,E),((I=W&&W.onVnodeMounted)||h||y)&&Lt(()=>{I&&wr(I,k,v),h&&le.enter(K),y&&Kn(v,null,k,"mounted")},M)},L=(v,A,E,k,M)=>{if(E&&m(v,E),k)for(let ee=0;ee<k.length;ee++)m(v,k[ee]);if(M){let ee=M.subTree;if(A===ee){const te=M.vnode;L(v,te,te.scopeId,te.slotScopeIds,M.parent)}}},j=(v,A,E,k,M,ee,te,$,K=0)=>{for(let I=K;I<v.length;I++){const W=v[I]=$?Cn(v[I]):xr(v[I]);b(null,W,A,E,k,M,ee,te,$)}},Y=(v,A,E,k,M,ee,te)=>{const $=A.el=v.el;let{patchFlag:K,dynamicChildren:I,dirs:W}=A;K|=v.patchFlag&16;const J=v.props||Qe,le=A.props||Qe;let y;if(E&&Yn(E,!1),(y=le.onVnodeBeforeUpdate)&&wr(y,E,A,v),W&&Kn(A,v,E,"beforeUpdate"),E&&Yn(E,!0),I?se(v.dynamicChildren,I,$,E,k,Lu(A,M),ee):te||z(v,A,$,null,E,k,Lu(A,M),ee,!1),K>0){if(K&16)re($,A,J,le,E,k,M);else if(K&2&&J.class!==le.class&&i($,"class",null,le.class,M),K&4&&i($,"style",J.style,le.style,M),K&8){const h=A.dynamicProps;for(let f=0;f<h.length;f++){const g=h[f],w=J[g],C=le[g];(C!==w||g==="value")&&i($,g,w,C,M,v.children,E,k,ye)}}K&1&&v.children!==A.children&&c($,A.children)}else!te&&I==null&&re($,A,J,le,E,k,M);((y=le.onVnodeUpdated)||W)&&Lt(()=>{y&&wr(y,E,A,v),W&&Kn(A,v,E,"updated")},k)},se=(v,A,E,k,M,ee,te)=>{for(let $=0;$<A.length;$++){const K=v[$],I=A[$],W=K.el&&(K.type===fr||!zo(K,I)||K.shapeFlag&70)?d(K.el):E;b(K,I,W,null,k,M,ee,te,!0)}},re=(v,A,E,k,M,ee,te)=>{if(E!==k){if(E!==Qe)for(const $ in E)!ms($)&&!($ in k)&&i(v,$,E[$],null,te,A.children,M,ee,ye);for(const $ in k){if(ms($))continue;const K=k[$],I=E[$];K!==I&&$!=="value"&&i(v,$,I,K,te,A.children,M,ee,ye)}"value"in k&&i(v,"value",E.value,k.value,te)}},P=(v,A,E,k,M,ee,te,$,K)=>{const I=A.el=v?v.el:a(""),W=A.anchor=v?v.anchor:a("");let{patchFlag:J,dynamicChildren:le,slotScopeIds:y}=A;y&&($=$?$.concat(y):y),v==null?(n(I,E,k),n(W,E,k),j(A.children||[],E,W,M,ee,te,$,K)):J>0&&J&64&&le&&v.dynamicChildren?(se(v.dynamicChildren,le,E,M,ee,te,$),(A.key!=null||M&&A===M.subTree)&&l_(v,A,!0)):z(v,A,E,W,M,ee,te,$,K)},B=(v,A,E,k,M,ee,te,$,K)=>{A.slotScopeIds=$,v==null?A.shapeFlag&512?M.ctx.activate(A,E,k,te,K):oe(A,E,k,M,ee,te,K):ne(v,A,K)},oe=(v,A,E,k,M,ee,te)=>{const $=v.component=nA(v,k,M);if(Xy(v)&&($.ctx.renderer=he),iA($),$.asyncDep){if(M&&M.registerDep($,ue),!v.el){const K=$.subTree=yr(Ln);N(null,K,A,E)}}else ue($,v,A,E,M,ee,te)},ne=(v,A,E)=>{const k=A.component=v.component;if(fS(v,A,E))if(k.asyncDep&&!k.asyncResolved){ae(k,A,E);return}else k.next=A,iS(k.update),k.effect.dirty=!0,k.update();else A.el=v.el,k.vnode=A},ue=(v,A,E,k,M,ee,te)=>{const $=()=>{if(v.isMounted){let{next:W,bu:J,u:le,parent:y,vnode:h}=v;{const V=u_(v);if(V){W&&(W.el=h.el,ae(v,W,te)),V.asyncDep.then(()=>{v.isUnmounted||$()});return}}let f=W,g;Yn(v,!1),W?(W.el=h.el,ae(v,W,te)):W=h,J&&Ta(J),(g=W.props&&W.props.onVnodeBeforeUpdate)&&wr(g,y,W,h),Yn(v,!0);const w=Nu(v),C=v.subTree;v.subTree=w,b(C,w,d(C.el),q(C),v,M,ee),W.el=w.el,f===null&&hS(v,w.el),le&&Lt(le,M),(g=W.props&&W.props.onVnodeUpdated)&&Lt(()=>wr(g,y,W,h),M)}else{let W;const{el:J,props:le}=A,{bm:y,m:h,parent:f}=v,g=ys(A);if(Yn(v,!1),y&&Ta(y),!g&&(W=le&&le.onVnodeBeforeMount)&&wr(W,f,A),Yn(v,!0),J&&Z){const w=()=>{v.subTree=Nu(v),Z(J,v.subTree,v,M,null)};g?A.type.__asyncLoader().then(()=>!v.isUnmounted&&w()):w()}else{const w=v.subTree=Nu(v);b(null,w,E,k,v,M,ee),A.el=w.el}if(h&&Lt(h,M),!g&&(W=le&&le.onVnodeMounted)){const w=A;Lt(()=>wr(W,f,w),M)}(A.shapeFlag&256||f&&ys(f.vnode)&&f.vnode.shapeFlag&256)&&v.a&&Lt(v.a,M),v.isMounted=!0,A=E=k=null}},K=v.effect=new hd($,Zt,()=>vd(I),v.scope),I=v.update=()=>{K.dirty&&K.run()};I.id=v.uid,Yn(v,!0),I()},ae=(v,A,E)=>{A.component=v;const k=v.vnode.props;v.vnode=A,v.next=null,jS(v,A.props,k,E),VS(v,A.children,E),ki(),zp(v),Ni()},z=(v,A,E,k,M,ee,te,$,K=!1)=>{const I=v&&v.children,W=v?v.shapeFlag:0,J=A.children,{patchFlag:le,shapeFlag:y}=A;if(le>0){if(le&128){de(I,J,E,k,M,ee,te,$,K);return}else if(le&256){pe(I,J,E,k,M,ee,te,$,K);return}}y&8?(W&16&&ye(I,M,ee),J!==I&&c(E,J)):W&16?y&16?de(I,J,E,k,M,ee,te,$,K):ye(I,M,ee,!0):(W&8&&c(E,""),y&16&&j(J,E,k,M,ee,te,$,K))},pe=(v,A,E,k,M,ee,te,$,K)=>{v=v||uo,A=A||uo;const I=v.length,W=A.length,J=Math.min(I,W);let le;for(le=0;le<J;le++){const y=A[le]=K?Cn(A[le]):xr(A[le]);b(v[le],y,E,null,M,ee,te,$,K)}I>W?ye(v,M,ee,!0,!1,J):j(A,E,k,M,ee,te,$,K,J)},de=(v,A,E,k,M,ee,te,$,K)=>{let I=0;const W=A.length;let J=v.length-1,le=W-1;for(;I<=J&&I<=le;){const y=v[I],h=A[I]=K?Cn(A[I]):xr(A[I]);if(zo(y,h))b(y,h,E,null,M,ee,te,$,K);else break;I++}for(;I<=J&&I<=le;){const y=v[J],h=A[le]=K?Cn(A[le]):xr(A[le]);if(zo(y,h))b(y,h,E,null,M,ee,te,$,K);else break;J--,le--}if(I>J){if(I<=le){const y=le+1,h=y<W?A[y].el:k;for(;I<=le;)b(null,A[I]=K?Cn(A[I]):xr(A[I]),E,h,M,ee,te,$,K),I++}}else if(I>le)for(;I<=J;)O(v[I],M,ee,!0),I++;else{const y=I,h=I,f=new Map;for(I=h;I<=le;I++){const Te=A[I]=K?Cn(A[I]):xr(A[I]);Te.key!=null&&f.set(Te.key,I)}let g,w=0;const C=le-h+1;let V=!1,fe=0;const xe=new Array(C);for(I=0;I<C;I++)xe[I]=0;for(I=y;I<=J;I++){const Te=v[I];if(w>=C){O(Te,M,ee,!0);continue}let Oe;if(Te.key!=null)Oe=f.get(Te.key);else for(g=h;g<=le;g++)if(xe[g-h]===0&&zo(Te,A[g])){Oe=g;break}Oe===void 0?O(Te,M,ee,!0):(xe[Oe-h]=I+1,Oe>=fe?fe=Oe:V=!0,b(Te,A[Oe],E,null,M,ee,te,$,K),w++)}const ke=V?zS(xe):uo;for(g=ke.length-1,I=C-1;I>=0;I--){const Te=h+I,Oe=A[Te],Re=Te+1<W?A[Te+1].el:k;xe[I]===0?b(null,Oe,E,Re,M,ee,te,$,K):V&&(g<0||I!==ke[g]?ge(Oe,E,Re,2):g--)}}},ge=(v,A,E,k,M=null)=>{const{el:ee,type:te,transition:$,children:K,shapeFlag:I}=v;if(I&6){ge(v.component.subTree,A,E,k);return}if(I&128){v.suspense.move(A,E,k);return}if(I&64){te.move(v,A,E,he);return}if(te===fr){n(ee,A,E);for(let J=0;J<K.length;J++)ge(K[J],A,E,k);n(v.anchor,A,E);return}if(te===Ca){S(v,A,E);return}if(k!==2&&I&1&&$)if(k===0)$.beforeEnter(ee),n(ee,A,E),Lt(()=>$.enter(ee),M);else{const{leave:J,delayLeave:le,afterLeave:y}=$,h=()=>n(ee,A,E),f=()=>{J(ee,()=>{h(),y&&y()})};le?le(ee,h,f):f()}else n(ee,A,E)},O=(v,A,E,k=!1,M=!1)=>{const{type:ee,props:te,ref:$,children:K,dynamicChildren:I,shapeFlag:W,patchFlag:J,dirs:le}=v;if($!=null&&Jc($,null,E,v,!0),W&256){A.ctx.deactivate(v);return}const y=W&1&&le,h=!ys(v);let f;if(h&&(f=te&&te.onVnodeBeforeUnmount)&&wr(f,A,v),W&6)ve(v.component,E,k);else{if(W&128){v.suspense.unmount(E,k);return}y&&Kn(v,null,A,"beforeUnmount"),W&64?v.type.remove(v,A,E,M,he,k):I&&(ee!==fr||J>0&&J&64)?ye(I,A,E,!1,!0):(ee===fr&&J&384||!M&&W&16)&&ye(K,A,E),k&&ie(v)}(h&&(f=te&&te.onVnodeUnmounted)||y)&&Lt(()=>{f&&wr(f,A,v),y&&Kn(v,null,A,"unmounted")},E)},ie=v=>{const{type:A,el:E,anchor:k,transition:M}=v;if(A===fr){me(E,k);return}if(A===Ca){D(v);return}const ee=()=>{o(E),M&&!M.persisted&&M.afterLeave&&M.afterLeave()};if(v.shapeFlag&1&&M&&!M.persisted){const{leave:te,delayLeave:$}=M,K=()=>te(E,ee);$?$(v.el,ee,K):K()}else ee()},me=(v,A)=>{let E;for(;v!==A;)E=p(v),o(v),v=E;o(A)},ve=(v,A,E)=>{const{bum:k,scope:M,update:ee,subTree:te,um:$}=v;k&&Ta(k),M.stop(),ee&&(ee.active=!1,O(te,v,A,E)),$&&Lt($,A),Lt(()=>{v.isUnmounted=!0},A),A&&A.pendingBranch&&!A.isUnmounted&&v.asyncDep&&!v.asyncResolved&&v.suspenseId===A.pendingId&&(A.deps--,A.deps===0&&A.resolve())},ye=(v,A,E,k=!1,M=!1,ee=0)=>{for(let te=ee;te<v.length;te++)O(v[te],A,E,k,M)},q=v=>v.shapeFlag&6?q(v.component.subTree):v.shapeFlag&128?v.suspense.next():p(v.anchor||v.el);let F=!1;const X=(v,A,E)=>{v==null?A._vnode&&O(A._vnode,null,null,!0):b(A._vnode||null,v,A,null,null,null,E),F||(F=!0,zp(),Yy(),F=!1),A._vnode=v},he={p:b,um:O,m:ge,r:ie,mt:oe,mc:j,pc:z,pbc:se,n:q,o:e};let ce,Z;return{render:X,hydrate:ce,createApp:$S(X,ce)}}function Lu({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function Yn({effect:e,update:t},r){e.allowRecurse=t.allowRecurse=r}function YS(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function l_(e,t,r=!1){const n=e.children,o=t.children;if(Be(n)&&Be(o))for(let i=0;i<n.length;i++){const s=n[i];let a=o[i];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=o[i]=Cn(o[i]),a.el=s.el),r||l_(s,a)),a.type===jl&&(a.el=s.el)}}function zS(e){const t=e.slice(),r=[0];let n,o,i,s,a;const l=e.length;for(n=0;n<l;n++){const u=e[n];if(u!==0){if(o=r[r.length-1],e[o]<u){t[n]=o,r.push(n);continue}for(i=0,s=r.length-1;i<s;)a=i+s>>1,e[r[a]]<u?i=a+1:s=a;u<e[r[i]]&&(i>0&&(t[n]=r[i-1]),r[i]=n)}}for(i=r.length,s=r[i-1];i-- >0;)r[i]=s,s=t[s];return r}function u_(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:u_(t)}const GS=e=>e.__isTeleport,fr=Symbol.for("v-fgt"),jl=Symbol.for("v-txt"),Ln=Symbol.for("v-cmt"),Ca=Symbol.for("v-stc"),ws=[];let gr=null;function c_(e=!1){ws.push(gr=e?null:[])}function QS(){ws.pop(),gr=ws[ws.length-1]||null}let Rs=1;function ig(e){Rs+=e}function f_(e){return e.dynamicChildren=Rs>0?gr||uo:null,QS(),Rs>0&&gr&&gr.push(e),e}function VF(e,t,r,n,o,i){return f_(g_(e,t,r,n,o,i,!0))}function h_(e,t,r,n,o){return f_(yr(e,t,r,n,o,!0))}function d_(e){return e?e.__v_isVNode===!0:!1}function zo(e,t){return e.type===t.type&&e.key===t.key}const Wl="__vInternal",p_=({key:e})=>e??null,Ra=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?ct(e)||Ut(e)||De(e)?{i:mt,r:e,k:t,f:!!r}:e:null);function g_(e,t=null,r=null,n=0,o=null,i=e===fr?0:1,s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&p_(t),ref:t&&Ra(t),scopeId:Ul,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:mt};return a?(Td(l,r),i&128&&e.normalize(l)):r&&(l.shapeFlag|=ct(r)?8:16),Rs>0&&!s&&gr&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&gr.push(l),l}const yr=XS;function XS(e,t=null,r=null,n=0,o=null,i=!1){if((!e||e===dS)&&(e=Ln),d_(e)){const a=Eo(e,t,!0);return r&&Td(a,r),Rs>0&&!i&&gr&&(a.shapeFlag&6?gr[gr.indexOf(e)]=a:gr.push(a)),a.patchFlag|=-2,a}if(lA(e)&&(e=e.__vccOpts),t){t=JS(t);let{class:a,style:l}=t;a&&!ct(a)&&(t.class=fd(a)),Xe(l)&&(Fy(l)&&!Be(l)&&(l=yt({},l)),t.style=cd(l))}const s=ct(e)?1:pS(e)?128:GS(e)?64:Xe(e)?4:De(e)?2:0;return g_(e,t,r,n,o,s,i,!0)}function JS(e){return e?Fy(e)||Wl in e?yt({},e):e:null}function Eo(e,t,r=!1){const{props:n,ref:o,patchFlag:i,children:s}=e,a=t?eA(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&p_(a),ref:t&&t.ref?r&&o?Be(o)?o.concat(Ra(t)):[o,Ra(t)]:Ra(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==fr?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Eo(e.ssContent),ssFallback:e.ssFallback&&Eo(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ZS(e=" ",t=0){return yr(jl,null,e,t)}function qF(e,t){const r=yr(Ca,null,e);return r.staticCount=t,r}function KF(e="",t=!1){return t?(c_(),h_(Ln,null,e)):yr(Ln,null,e)}function xr(e){return e==null||typeof e=="boolean"?yr(Ln):Be(e)?yr(fr,null,e.slice()):typeof e=="object"?Cn(e):yr(jl,null,String(e))}function Cn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Eo(e)}function Td(e,t){let r=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(Be(t))r=16;else if(typeof t=="object")if(n&65){const o=t.default;o&&(o._c&&(o._d=!1),Td(e,o()),o._c&&(o._d=!0));return}else{r=32;const o=t._;!o&&!(Wl in t)?t._ctx=mt:o===3&&mt&&(mt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else De(t)?(t={default:t,_ctx:mt},r=32):(t=String(t),n&64?(r=16,t=[ZS(t)]):r=8);e.children=t,e.shapeFlag|=r}function eA(...e){const t={};for(let r=0;r<e.length;r++){const n=e[r];for(const o in n)if(o==="class")t.class!==n.class&&(t.class=fd([t.class,n.class]));else if(o==="style")t.style=cd([t.style,n.style]);else if(Nl(o)){const i=t[o],s=n[o];s&&i!==s&&!(Be(i)&&i.includes(s))&&(t[o]=i?[].concat(i,s):s)}else o!==""&&(t[o]=n[o])}return t}function wr(e,t,r,n=null){mr(e,t,7,[r,n])}const tA=r_();let rA=0;function nA(e,t,r){const n=e.type,o=(t?t.appContext:e.appContext)||tA,i={uid:rA++,vnode:e,type:n,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,scope:new IE(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:i_(n,o),emitsOptions:Gy(n,o),emit:null,emitted:null,propsDefaults:Qe,inheritAttrs:n.inheritAttrs,ctx:Qe,data:Qe,props:Qe,attrs:Qe,slots:Qe,refs:Qe,setupState:Qe,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=aS.bind(null,i),e.ce&&e.ce(i),i}let Rt=null,nl,Zc;{const e=Ay(),t=(r,n)=>{let o;return(o=e[r])||(o=e[r]=[]),o.push(n),i=>{o.length>1?o.forEach(s=>s(i)):o[0](i)}};nl=t("__VUE_INSTANCE_SETTERS__",r=>Rt=r),Zc=t("__VUE_SSR_SETTERS__",r=>Hl=r)}const Ds=e=>{const t=Rt;return nl(e),e.scope.on(),()=>{e.scope.off(),nl(t)}},og=()=>{Rt&&Rt.scope.off(),nl(null)};function m_(e){return e.vnode.shapeFlag&4}let Hl=!1;function iA(e,t=!1){t&&Zc(t);const{props:r,children:n}=e.vnode,o=m_(e);FS(e,r,o,t),HS(e,n);const i=o?oA(e,t):void 0;return t&&Zc(!1),i}function oA(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=jy(new Proxy(e.ctx,kS));const{setup:n}=r;if(n){const o=e.setupContext=n.length>1?aA(e):null,i=Ds(e);ki();const s=Nn(n,e,0,[e.props,o]);if(Ni(),i(),wy(s)){if(s.then(og,og),t)return s.then(a=>{sg(e,a,t)}).catch(a=>{Dl(a,e,0)});e.asyncDep=s}else sg(e,s,t)}else y_(e,t)}function sg(e,t,r){De(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Xe(t)&&(e.setupState=Vy(t)),y_(e,r)}let ag;function y_(e,t,r){const n=e.type;if(!e.render){if(!t&&ag&&!n.render){const o=n.template||Sd(e).template;if(o){const{isCustomElement:i,compilerOptions:s}=e.appContext.config,{delimiters:a,compilerOptions:l}=n,u=yt(yt({isCustomElement:i,delimiters:a},s),l);n.render=ag(o,u)}}e.render=n.render||Zt}{const o=Ds(e);ki();try{NS(e)}finally{Ni(),o()}}}function sA(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,r){return $t(e,"get","$attrs"),t[r]}}))}function aA(e){const t=r=>{e.exposed=r||{}};return{get attrs(){return sA(e)},slots:e.slots,emit:e.emit,expose:t}}function Vl(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Vy(jy(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in _s)return _s[r](e)},has(t,r){return r in t||r in _s}}))}function lA(e){return De(e)&&"__vccOpts"in e}const uA=(e,t)=>QE(e,t,Hl),cA="3.4.21";/**
+* @vue/runtime-dom v3.4.21
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/const fA="http://www.w3.org/2000/svg",hA="http://www.w3.org/1998/Math/MathML",Rn=typeof document<"u"?document:null,lg=Rn&&Rn.createElement("template"),dA={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,n)=>{const o=t==="svg"?Rn.createElementNS(fA,e):t==="mathml"?Rn.createElementNS(hA,e):Rn.createElement(e,r?{is:r}:void 0);return e==="select"&&n&&n.multiple!=null&&o.setAttribute("multiple",n.multiple),o},createText:e=>Rn.createTextNode(e),createComment:e=>Rn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Rn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,n,o,i){const s=r?r.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),r),!(o===i||!(o=o.nextSibling)););else{lg.innerHTML=n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e;const a=lg.content;if(n==="svg"||n==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,r)}return[s?s.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},pA=Symbol("_vtc");function gA(e,t,r){const n=e[pA];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const il=Symbol("_vod"),__=Symbol("_vsh"),YF={beforeMount(e,{value:t},{transition:r}){e[il]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):Go(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:n}){!t!=!r&&(n?t?(n.beforeEnter(e),Go(e,!0),n.enter(e)):n.leave(e,()=>{Go(e,!1)}):Go(e,t))},beforeUnmount(e,{value:t}){Go(e,t)}};function Go(e,t){e.style.display=t?e[il]:"none",e[__]=!t}const mA=Symbol(""),yA=/(^|;)\s*display\s*:/;function _A(e,t,r){const n=e.style,o=ct(r);let i=!1;if(r&&!o){if(t)if(ct(t))for(const s of t.split(";")){const a=s.slice(0,s.indexOf(":")).trim();r[a]==null&&Oa(n,a,"")}else for(const s in t)r[s]==null&&Oa(n,s,"");for(const s in r)s==="display"&&(i=!0),Oa(n,s,r[s])}else if(o){if(t!==r){const s=n[mA];s&&(r+=";"+s),n.cssText=r,i=yA.test(r)}}else t&&e.removeAttribute("style");il in e&&(e[il]=i?n.display:"",e[__]&&(n.display="none"))}const ug=/\s*!important$/;function Oa(e,t,r){if(Be(r))r.forEach(n=>Oa(e,t,n));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const n=bA(e,t);ug.test(r)?e.setProperty(Bo(n),r.replace(ug,""),"important"):e[n]=r}}const cg=["Webkit","Moz","ms"],Bu={};function bA(e,t){const r=Bu[t];if(r)return r;let n=wo(t);if(n!=="filter"&&n in e)return Bu[t]=n;n=Sy(n);for(let o=0;o<cg.length;o++){const i=cg[o]+n;if(i in e)return Bu[t]=i}return t}const fg="http://www.w3.org/1999/xlink";function wA(e,t,r,n,o){if(n&&t.startsWith("xlink:"))r==null?e.removeAttributeNS(fg,t.slice(6,t.length)):e.setAttributeNS(fg,t,r);else{const i=TE(t);r==null||i&&!Ty(r)?e.removeAttribute(t):e.setAttribute(t,i?"":r)}}function vA(e,t,r,n,o,i,s){if(t==="innerHTML"||t==="textContent"){n&&s(n,o,i),e[t]=r??"";return}const a=e.tagName;if(t==="value"&&a!=="PROGRESS"&&!a.includes("-")){const u=a==="OPTION"?e.getAttribute("value")||"":e.value,c=r??"";(u!==c||!("_value"in e))&&(e.value=c),r==null&&e.removeAttribute(t),e._value=r;return}let l=!1;if(r===""||r==null){const u=typeof e[t];u==="boolean"?r=Ty(r):r==null&&u==="string"?(r="",l=!0):u==="number"&&(r=0,l=!0)}try{e[t]=r}catch{}l&&e.removeAttribute(t)}function si(e,t,r,n){e.addEventListener(t,r,n)}function EA(e,t,r,n){e.removeEventListener(t,r,n)}const hg=Symbol("_vei");function SA(e,t,r,n,o=null){const i=e[hg]||(e[hg]={}),s=i[t];if(n&&s)s.value=n;else{const[a,l]=AA(t);if(n){const u=i[t]=IA(n,o);si(e,a,u,l)}else s&&(EA(e,a,s,l),i[t]=void 0)}}const dg=/(?:Once|Passive|Capture)$/;function AA(e){let t;if(dg.test(e)){t={};let n;for(;n=e.match(dg);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Bo(e.slice(2)),t]}let Du=0;const TA=Promise.resolve(),xA=()=>Du||(TA.then(()=>Du=0),Du=Date.now());function IA(e,t){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;mr(CA(n,r.value),t,5,[n])};return r.value=e,r.attached=xA(),r}function CA(e,t){if(Be(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(n=>o=>!o._stopped&&n&&n(o))}else return t}const pg=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,RA=(e,t,r,n,o,i,s,a,l)=>{const u=o==="svg";t==="class"?gA(e,n,u):t==="style"?_A(e,r,n):Nl(t)?ad(t)||SA(e,t,r,n,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):OA(e,t,n,u))?vA(e,t,n,i,s,a,l):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),wA(e,t,n,u))};function OA(e,t,r,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&pg(t)&&De(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return pg(t)&&ct(r)?!1:t in e}const ol=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Be(t)?r=>Ta(t,r):t};function kA(e){e.target.composing=!0}function gg(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const po=Symbol("_assign"),zF={created(e,{modifiers:{lazy:t,trim:r,number:n}},o){e[po]=ol(o);const i=n||o.props&&o.props.type==="number";si(e,t?"change":"input",s=>{if(s.target.composing)return;let a=e.value;r&&(a=a.trim()),i&&(a=Wc(a)),e[po](a)}),r&&si(e,"change",()=>{e.value=e.value.trim()}),t||(si(e,"compositionstart",kA),si(e,"compositionend",gg),si(e,"change",gg))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:r,trim:n,number:o}},i){if(e[po]=ol(i),e.composing)return;const s=o||e.type==="number"?Wc(e.value):e.value,a=t??"";s!==a&&(document.activeElement===e&&e.type!=="range"&&(r||n&&e.value.trim()===a)||(e.value=a))}},GF={deep:!0,created(e,t,r){e[po]=ol(r),si(e,"change",()=>{const n=e._modelValue,o=NA(e),i=e.checked,s=e[po];if(Be(n)){const a=xy(n,o),l=a!==-1;if(i&&!l)s(n.concat(o));else if(!i&&l){const u=[...n];u.splice(a,1),s(u)}}else if(Ml(n)){const a=new Set(n);i?a.add(o):a.delete(o),s(a)}else s(b_(e,i))})},mounted:mg,beforeUpdate(e,t,r){e[po]=ol(r),mg(e,t,r)}};function mg(e,{value:t,oldValue:r},n){e._modelValue=t,Be(t)?e.checked=xy(t,n.props.value)>-1:Ml(t)?e.checked=t.has(n.props.value):t!==r&&(e.checked=Ll(t,b_(e,!0)))}function NA(e){return"_value"in e?e._value:e.value}function b_(e,t){const r=t?"_trueValue":"_falseValue";return r in e?e[r]:t}const MA=yt({patchProp:RA},dA);let yg;function PA(){return yg||(yg=qS(MA))}const QF=(...e)=>{const t=PA().createApp(...e),{mount:r}=t;return t.mount=n=>{const o=BA(n);if(!o)return;const i=t._component;!De(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.innerHTML="";const s=r(o,!1,LA(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),s},t};function LA(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function BA(e){return ct(e)?document.querySelector(e):e}var Ot="top",qt="bottom",Kt="right",kt="left",ql="auto",Do=[Ot,qt,Kt,kt],Ti="start",So="end",w_="clippingParents",xd="viewport",Ji="popper",v_="reference",ef=Do.reduce(function(e,t){return e.concat([t+"-"+Ti,t+"-"+So])},[]),Id=[].concat(Do,[ql]).reduce(function(e,t){return e.concat([t,t+"-"+Ti,t+"-"+So])},[]),E_="beforeRead",S_="read",A_="afterRead",T_="beforeMain",x_="main",I_="afterMain",C_="beforeWrite",R_="write",O_="afterWrite",k_=[E_,S_,A_,T_,x_,I_,C_,R_,O_];function Lr(e){return e?(e.nodeName||"").toLowerCase():null}function Yt(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function xi(e){var t=Yt(e).Element;return e instanceof t||e instanceof Element}function tr(e){var t=Yt(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Cd(e){if(typeof ShadowRoot>"u")return!1;var t=Yt(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function DA(e){var t=e.state;Object.keys(t.elements).forEach(function(r){var n=t.styles[r]||{},o=t.attributes[r]||{},i=t.elements[r];!tr(i)||!Lr(i)||(Object.assign(i.style,n),Object.keys(o).forEach(function(s){var a=o[s];a===!1?i.removeAttribute(s):i.setAttribute(s,a===!0?"":a)}))})}function $A(e){var t=e.state,r={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.styles=r,t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach(function(n){var o=t.elements[n],i=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:r[n]),a=s.reduce(function(l,u){return l[u]="",l},{});!tr(o)||!Lr(o)||(Object.assign(o.style,a),Object.keys(i).forEach(function(l){o.removeAttribute(l)}))})}}const Rd={name:"applyStyles",enabled:!0,phase:"write",fn:DA,effect:$A,requires:["computeStyles"]};function kr(e){return e.split("-")[0]}var _i=Math.max,sl=Math.min,Ao=Math.round;function tf(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function N_(){return!/^((?!chrome|android).)*safari/i.test(tf())}function To(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!1);var n=e.getBoundingClientRect(),o=1,i=1;t&&tr(e)&&(o=e.offsetWidth>0&&Ao(n.width)/e.offsetWidth||1,i=e.offsetHeight>0&&Ao(n.height)/e.offsetHeight||1);var s=xi(e)?Yt(e):window,a=s.visualViewport,l=!N_()&&r,u=(n.left+(l&&a?a.offsetLeft:0))/o,c=(n.top+(l&&a?a.offsetTop:0))/i,d=n.width/o,p=n.height/i;return{width:d,height:p,top:c,right:u+d,bottom:c+p,left:u,x:u,y:c}}function Od(e){var t=To(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function M_(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Cd(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function rn(e){return Yt(e).getComputedStyle(e)}function UA(e){return["table","td","th"].indexOf(Lr(e))>=0}function Un(e){return((xi(e)?e.ownerDocument:e.document)||window.document).documentElement}function Kl(e){return Lr(e)==="html"?e:e.assignedSlot||e.parentNode||(Cd(e)?e.host:null)||Un(e)}function _g(e){return!tr(e)||rn(e).position==="fixed"?null:e.offsetParent}function FA(e){var t=/firefox/i.test(tf()),r=/Trident/i.test(tf());if(r&&tr(e)){var n=rn(e);if(n.position==="fixed")return null}var o=Kl(e);for(Cd(o)&&(o=o.host);tr(o)&&["html","body"].indexOf(Lr(o))<0;){var i=rn(o);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||t&&i.willChange==="filter"||t&&i.filter&&i.filter!=="none")return o;o=o.parentNode}return null}function $s(e){for(var t=Yt(e),r=_g(e);r&&UA(r)&&rn(r).position==="static";)r=_g(r);return r&&(Lr(r)==="html"||Lr(r)==="body"&&rn(r).position==="static")?t:r||FA(e)||t}function kd(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function vs(e,t,r){return _i(e,sl(t,r))}function jA(e,t,r){var n=vs(e,t,r);return n>r?r:n}function P_(){return{top:0,right:0,bottom:0,left:0}}function L_(e){return Object.assign({},P_(),e)}function B_(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}var WA=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,L_(typeof t!="number"?t:B_(t,Do))};function HA(e){var t,r=e.state,n=e.name,o=e.options,i=r.elements.arrow,s=r.modifiersData.popperOffsets,a=kr(r.placement),l=kd(a),u=[kt,Kt].indexOf(a)>=0,c=u?"height":"width";if(!(!i||!s)){var d=WA(o.padding,r),p=Od(i),m=l==="y"?Ot:kt,_=l==="y"?qt:Kt,b=r.rects.reference[c]+r.rects.reference[l]-s[l]-r.rects.popper[c],T=s[l]-r.rects.reference[l],N=$s(i),R=N?l==="y"?N.clientHeight||0:N.clientWidth||0:0,S=b/2-T/2,D=d[m],U=R-p[c]-d[_],x=R/2-p[c]/2+S,L=vs(D,x,U),j=l;r.modifiersData[n]=(t={},t[j]=L,t.centerOffset=L-x,t)}}function VA(e){var t=e.state,r=e.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||M_(t.elements.popper,o)&&(t.elements.arrow=o))}const D_={name:"arrow",enabled:!0,phase:"main",fn:HA,effect:VA,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function xo(e){return e.split("-")[1]}var qA={top:"auto",right:"auto",bottom:"auto",left:"auto"};function KA(e,t){var r=e.x,n=e.y,o=t.devicePixelRatio||1;return{x:Ao(r*o)/o||0,y:Ao(n*o)/o||0}}function bg(e){var t,r=e.popper,n=e.popperRect,o=e.placement,i=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,d=e.isFixed,p=s.x,m=p===void 0?0:p,_=s.y,b=_===void 0?0:_,T=typeof c=="function"?c({x:m,y:b}):{x:m,y:b};m=T.x,b=T.y;var N=s.hasOwnProperty("x"),R=s.hasOwnProperty("y"),S=kt,D=Ot,U=window;if(u){var x=$s(r),L="clientHeight",j="clientWidth";if(x===Yt(r)&&(x=Un(r),rn(x).position!=="static"&&a==="absolute"&&(L="scrollHeight",j="scrollWidth")),x=x,o===Ot||(o===kt||o===Kt)&&i===So){D=qt;var Y=d&&x===U&&U.visualViewport?U.visualViewport.height:x[L];b-=Y-n.height,b*=l?1:-1}if(o===kt||(o===Ot||o===qt)&&i===So){S=Kt;var se=d&&x===U&&U.visualViewport?U.visualViewport.width:x[j];m-=se-n.width,m*=l?1:-1}}var re=Object.assign({position:a},u&&qA),P=c===!0?KA({x:m,y:b},Yt(r)):{x:m,y:b};if(m=P.x,b=P.y,l){var B;return Object.assign({},re,(B={},B[D]=R?"0":"",B[S]=N?"0":"",B.transform=(U.devicePixelRatio||1)<=1?"translate("+m+"px, "+b+"px)":"translate3d("+m+"px, "+b+"px, 0)",B))}return Object.assign({},re,(t={},t[D]=R?b+"px":"",t[S]=N?m+"px":"",t.transform="",t))}function YA(e){var t=e.state,r=e.options,n=r.gpuAcceleration,o=n===void 0?!0:n,i=r.adaptive,s=i===void 0?!0:i,a=r.roundOffsets,l=a===void 0?!0:a,u={placement:kr(t.placement),variation:xo(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,bg(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,bg(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const Nd={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:YA,data:{}};var na={passive:!0};function zA(e){var t=e.state,r=e.instance,n=e.options,o=n.scroll,i=o===void 0?!0:o,s=n.resize,a=s===void 0?!0:s,l=Yt(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&u.forEach(function(c){c.addEventListener("scroll",r.update,na)}),a&&l.addEventListener("resize",r.update,na),function(){i&&u.forEach(function(c){c.removeEventListener("scroll",r.update,na)}),a&&l.removeEventListener("resize",r.update,na)}}const Md={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:zA,data:{}};var GA={left:"right",right:"left",bottom:"top",top:"bottom"};function ka(e){return e.replace(/left|right|bottom|top/g,function(t){return GA[t]})}var QA={start:"end",end:"start"};function wg(e){return e.replace(/start|end/g,function(t){return QA[t]})}function Pd(e){var t=Yt(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Ld(e){return To(Un(e)).left+Pd(e).scrollLeft}function XA(e,t){var r=Yt(e),n=Un(e),o=r.visualViewport,i=n.clientWidth,s=n.clientHeight,a=0,l=0;if(o){i=o.width,s=o.height;var u=N_();(u||!u&&t==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}return{width:i,height:s,x:a+Ld(e),y:l}}function JA(e){var t,r=Un(e),n=Pd(e),o=(t=e.ownerDocument)==null?void 0:t.body,i=_i(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=_i(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+Ld(e),l=-n.scrollTop;return rn(o||r).direction==="rtl"&&(a+=_i(r.clientWidth,o?o.clientWidth:0)-i),{width:i,height:s,x:a,y:l}}function Bd(e){var t=rn(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function $_(e){return["html","body","#document"].indexOf(Lr(e))>=0?e.ownerDocument.body:tr(e)&&Bd(e)?e:$_(Kl(e))}function Es(e,t){var r;t===void 0&&(t=[]);var n=$_(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),i=Yt(n),s=o?[i].concat(i.visualViewport||[],Bd(n)?n:[]):n,a=t.concat(s);return o?a:a.concat(Es(Kl(s)))}function rf(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ZA(e,t){var r=To(e,!1,t==="fixed");return r.top=r.top+e.clientTop,r.left=r.left+e.clientLeft,r.bottom=r.top+e.clientHeight,r.right=r.left+e.clientWidth,r.width=e.clientWidth,r.height=e.clientHeight,r.x=r.left,r.y=r.top,r}function vg(e,t,r){return t===xd?rf(XA(e,r)):xi(t)?ZA(t,r):rf(JA(Un(e)))}function eT(e){var t=Es(Kl(e)),r=["absolute","fixed"].indexOf(rn(e).position)>=0,n=r&&tr(e)?$s(e):e;return xi(n)?t.filter(function(o){return xi(o)&&M_(o,n)&&Lr(o)!=="body"}):[]}function tT(e,t,r,n){var o=t==="clippingParents"?eT(e):[].concat(t),i=[].concat(o,[r]),s=i[0],a=i.reduce(function(l,u){var c=vg(e,u,n);return l.top=_i(c.top,l.top),l.right=sl(c.right,l.right),l.bottom=sl(c.bottom,l.bottom),l.left=_i(c.left,l.left),l},vg(e,s,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function U_(e){var t=e.reference,r=e.element,n=e.placement,o=n?kr(n):null,i=n?xo(n):null,s=t.x+t.width/2-r.width/2,a=t.y+t.height/2-r.height/2,l;switch(o){case Ot:l={x:s,y:t.y-r.height};break;case qt:l={x:s,y:t.y+t.height};break;case Kt:l={x:t.x+t.width,y:a};break;case kt:l={x:t.x-r.width,y:a};break;default:l={x:t.x,y:t.y}}var u=o?kd(o):null;if(u!=null){var c=u==="y"?"height":"width";switch(i){case Ti:l[u]=l[u]-(t[c]/2-r[c]/2);break;case So:l[u]=l[u]+(t[c]/2-r[c]/2);break}}return l}function Io(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,i=r.strategy,s=i===void 0?e.strategy:i,a=r.boundary,l=a===void 0?w_:a,u=r.rootBoundary,c=u===void 0?xd:u,d=r.elementContext,p=d===void 0?Ji:d,m=r.altBoundary,_=m===void 0?!1:m,b=r.padding,T=b===void 0?0:b,N=L_(typeof T!="number"?T:B_(T,Do)),R=p===Ji?v_:Ji,S=e.rects.popper,D=e.elements[_?R:p],U=tT(xi(D)?D:D.contextElement||Un(e.elements.popper),l,c,s),x=To(e.elements.reference),L=U_({reference:x,element:S,strategy:"absolute",placement:o}),j=rf(Object.assign({},S,L)),Y=p===Ji?j:x,se={top:U.top-Y.top+N.top,bottom:Y.bottom-U.bottom+N.bottom,left:U.left-Y.left+N.left,right:Y.right-U.right+N.right},re=e.modifiersData.offset;if(p===Ji&&re){var P=re[o];Object.keys(se).forEach(function(B){var oe=[Kt,qt].indexOf(B)>=0?1:-1,ne=[Ot,qt].indexOf(B)>=0?"y":"x";se[B]+=P[ne]*oe})}return se}function rT(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,i=r.rootBoundary,s=r.padding,a=r.flipVariations,l=r.allowedAutoPlacements,u=l===void 0?Id:l,c=xo(n),d=c?a?ef:ef.filter(function(_){return xo(_)===c}):Do,p=d.filter(function(_){return u.indexOf(_)>=0});p.length===0&&(p=d);var m=p.reduce(function(_,b){return _[b]=Io(e,{placement:b,boundary:o,rootBoundary:i,padding:s})[kr(b)],_},{});return Object.keys(m).sort(function(_,b){return m[_]-m[b]})}function nT(e){if(kr(e)===ql)return[];var t=ka(e);return[wg(e),t,wg(t)]}function iT(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,i=o===void 0?!0:o,s=r.altAxis,a=s===void 0?!0:s,l=r.fallbackPlacements,u=r.padding,c=r.boundary,d=r.rootBoundary,p=r.altBoundary,m=r.flipVariations,_=m===void 0?!0:m,b=r.allowedAutoPlacements,T=t.options.placement,N=kr(T),R=N===T,S=l||(R||!_?[ka(T)]:nT(T)),D=[T].concat(S).reduce(function(me,ve){return me.concat(kr(ve)===ql?rT(t,{placement:ve,boundary:c,rootBoundary:d,padding:u,flipVariations:_,allowedAutoPlacements:b}):ve)},[]),U=t.rects.reference,x=t.rects.popper,L=new Map,j=!0,Y=D[0],se=0;se<D.length;se++){var re=D[se],P=kr(re),B=xo(re)===Ti,oe=[Ot,qt].indexOf(P)>=0,ne=oe?"width":"height",ue=Io(t,{placement:re,boundary:c,rootBoundary:d,altBoundary:p,padding:u}),ae=oe?B?Kt:kt:B?qt:Ot;U[ne]>x[ne]&&(ae=ka(ae));var z=ka(ae),pe=[];if(i&&pe.push(ue[P]<=0),a&&pe.push(ue[ae]<=0,ue[z]<=0),pe.every(function(me){return me})){Y=re,j=!1;break}L.set(re,pe)}if(j)for(var de=_?3:1,ge=function(ve){var ye=D.find(function(q){var F=L.get(q);if(F)return F.slice(0,ve).every(function(X){return X})});if(ye)return Y=ye,"break"},O=de;O>0;O--){var ie=ge(O);if(ie==="break")break}t.placement!==Y&&(t.modifiersData[n]._skip=!0,t.placement=Y,t.reset=!0)}}const F_={name:"flip",enabled:!0,phase:"main",fn:iT,requiresIfExists:["offset"],data:{_skip:!1}};function Eg(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Sg(e){return[Ot,Kt,qt,kt].some(function(t){return e[t]>=0})}function oT(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,s=Io(t,{elementContext:"reference"}),a=Io(t,{altBoundary:!0}),l=Eg(s,n),u=Eg(a,o,i),c=Sg(l),d=Sg(u);t.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}const j_={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:oT};function sT(e,t,r){var n=kr(e),o=[kt,Ot].indexOf(n)>=0?-1:1,i=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,s=i[0],a=i[1];return s=s||0,a=(a||0)*o,[kt,Kt].indexOf(n)>=0?{x:a,y:s}:{x:s,y:a}}function aT(e){var t=e.state,r=e.options,n=e.name,o=r.offset,i=o===void 0?[0,0]:o,s=Id.reduce(function(c,d){return c[d]=sT(d,t.rects,i),c},{}),a=s[t.placement],l=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=s}const W_={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:aT};function lT(e){var t=e.state,r=e.name;t.modifiersData[r]=U_({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const Dd={name:"popperOffsets",enabled:!0,phase:"read",fn:lT,data:{}};function uT(e){return e==="x"?"y":"x"}function cT(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,i=o===void 0?!0:o,s=r.altAxis,a=s===void 0?!1:s,l=r.boundary,u=r.rootBoundary,c=r.altBoundary,d=r.padding,p=r.tether,m=p===void 0?!0:p,_=r.tetherOffset,b=_===void 0?0:_,T=Io(t,{boundary:l,rootBoundary:u,padding:d,altBoundary:c}),N=kr(t.placement),R=xo(t.placement),S=!R,D=kd(N),U=uT(D),x=t.modifiersData.popperOffsets,L=t.rects.reference,j=t.rects.popper,Y=typeof b=="function"?b(Object.assign({},t.rects,{placement:t.placement})):b,se=typeof Y=="number"?{mainAxis:Y,altAxis:Y}:Object.assign({mainAxis:0,altAxis:0},Y),re=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,P={x:0,y:0};if(x){if(i){var B,oe=D==="y"?Ot:kt,ne=D==="y"?qt:Kt,ue=D==="y"?"height":"width",ae=x[D],z=ae+T[oe],pe=ae-T[ne],de=m?-j[ue]/2:0,ge=R===Ti?L[ue]:j[ue],O=R===Ti?-j[ue]:-L[ue],ie=t.elements.arrow,me=m&&ie?Od(ie):{width:0,height:0},ve=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:P_(),ye=ve[oe],q=ve[ne],F=vs(0,L[ue],me[ue]),X=S?L[ue]/2-de-F-ye-se.mainAxis:ge-F-ye-se.mainAxis,he=S?-L[ue]/2+de+F+q+se.mainAxis:O+F+q+se.mainAxis,ce=t.elements.arrow&&$s(t.elements.arrow),Z=ce?D==="y"?ce.clientTop||0:ce.clientLeft||0:0,v=(B=re==null?void 0:re[D])!=null?B:0,A=ae+X-v-Z,E=ae+he-v,k=vs(m?sl(z,A):z,ae,m?_i(pe,E):pe);x[D]=k,P[D]=k-ae}if(a){var M,ee=D==="x"?Ot:kt,te=D==="x"?qt:Kt,$=x[U],K=U==="y"?"height":"width",I=$+T[ee],W=$-T[te],J=[Ot,kt].indexOf(N)!==-1,le=(M=re==null?void 0:re[U])!=null?M:0,y=J?I:$-L[K]-j[K]-le+se.altAxis,h=J?$+L[K]+j[K]-le-se.altAxis:W,f=m&&J?jA(y,$,h):vs(m?y:I,$,m?h:W);x[U]=f,P[U]=f-$}t.modifiersData[n]=P}}const H_={name:"preventOverflow",enabled:!0,phase:"main",fn:cT,requiresIfExists:["offset"]};function fT(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function hT(e){return e===Yt(e)||!tr(e)?Pd(e):fT(e)}function dT(e){var t=e.getBoundingClientRect(),r=Ao(t.width)/e.offsetWidth||1,n=Ao(t.height)/e.offsetHeight||1;return r!==1||n!==1}function pT(e,t,r){r===void 0&&(r=!1);var n=tr(t),o=tr(t)&&dT(t),i=Un(t),s=To(e,o,r),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!r)&&((Lr(t)!=="body"||Bd(i))&&(a=hT(t)),tr(t)?(l=To(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):i&&(l.x=Ld(i))),{x:s.left+a.scrollLeft-l.x,y:s.top+a.scrollTop-l.y,width:s.width,height:s.height}}function gT(e){var t=new Map,r=new Set,n=[];e.forEach(function(i){t.set(i.name,i)});function o(i){r.add(i.name);var s=[].concat(i.requires||[],i.requiresIfExists||[]);s.forEach(function(a){if(!r.has(a)){var l=t.get(a);l&&o(l)}}),n.push(i)}return e.forEach(function(i){r.has(i.name)||o(i)}),n}function mT(e){var t=gT(e);return k_.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function yT(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function _T(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}var Ag={placement:"bottom",modifiers:[],strategy:"absolute"};function Tg(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function Yl(e){e===void 0&&(e={});var t=e,r=t.defaultModifiers,n=r===void 0?[]:r,o=t.defaultOptions,i=o===void 0?Ag:o;return function(a,l,u){u===void 0&&(u=i);var c={placement:"bottom",orderedModifiers:[],options:Object.assign({},Ag,i),modifiersData:{},elements:{reference:a,popper:l},attributes:{},styles:{}},d=[],p=!1,m={state:c,setOptions:function(N){var R=typeof N=="function"?N(c.options):N;b(),c.options=Object.assign({},i,c.options,R),c.scrollParents={reference:xi(a)?Es(a):a.contextElement?Es(a.contextElement):[],popper:Es(l)};var S=mT(_T([].concat(n,c.options.modifiers)));return c.orderedModifiers=S.filter(function(D){return D.enabled}),_(),m.update()},forceUpdate:function(){if(!p){var N=c.elements,R=N.reference,S=N.popper;if(Tg(R,S)){c.rects={reference:pT(R,$s(S),c.options.strategy==="fixed"),popper:Od(S)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(se){return c.modifiersData[se.name]=Object.assign({},se.data)});for(var D=0;D<c.orderedModifiers.length;D++){if(c.reset===!0){c.reset=!1,D=-1;continue}var U=c.orderedModifiers[D],x=U.fn,L=U.options,j=L===void 0?{}:L,Y=U.name;typeof x=="function"&&(c=x({state:c,options:j,name:Y,instance:m})||c)}}}},update:yT(function(){return new Promise(function(T){m.forceUpdate(),T(c)})}),destroy:function(){b(),p=!0}};if(!Tg(a,l))return m;m.setOptions(u).then(function(T){!p&&u.onFirstUpdate&&u.onFirstUpdate(T)});function _(){c.orderedModifiers.forEach(function(T){var N=T.name,R=T.options,S=R===void 0?{}:R,D=T.effect;if(typeof D=="function"){var U=D({state:c,name:N,instance:m,options:S}),x=function(){};d.push(U||x)}})}function b(){d.forEach(function(T){return T()}),d=[]}return m}}var bT=Yl(),wT=[Md,Dd,Nd,Rd],vT=Yl({defaultModifiers:wT}),ET=[Md,Dd,Nd,Rd,W_,F_,H_,D_,j_],$d=Yl({defaultModifiers:ET});const V_=Object.freeze(Object.defineProperty({__proto__:null,afterMain:I_,afterRead:A_,afterWrite:O_,applyStyles:Rd,arrow:D_,auto:ql,basePlacements:Do,beforeMain:T_,beforeRead:E_,beforeWrite:C_,bottom:qt,clippingParents:w_,computeStyles:Nd,createPopper:$d,createPopperBase:bT,createPopperLite:vT,detectOverflow:Io,end:So,eventListeners:Md,flip:F_,hide:j_,left:kt,main:x_,modifierPhases:k_,offset:W_,placements:Id,popper:Ji,popperGenerator:Yl,popperOffsets:Dd,preventOverflow:H_,read:S_,reference:v_,right:Kt,start:Ti,top:Ot,variationPlacements:ef,viewport:xd,write:R_},Symbol.toStringTag,{value:"Module"}));/*!
+  * Bootstrap v5.3.3 (https://getbootstrap.com/)
+  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */const wn=new Map,$u={set(e,t,r){wn.has(e)||wn.set(e,new Map);const n=wn.get(e);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,r)},get(e,t){return wn.has(e)&&wn.get(e).get(t)||null},remove(e,t){if(!wn.has(e))return;const r=wn.get(e);r.delete(t),r.size===0&&wn.delete(e)}},ST=1e6,AT=1e3,nf="transitionend",q_=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,r)=>`#${CSS.escape(r)}`)),e),TT=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),xT=e=>{do e+=Math.floor(Math.random()*ST);while(document.getElementById(e));return e},IT=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e);const n=Number.parseFloat(t),o=Number.parseFloat(r);return!n&&!o?0:(t=t.split(",")[0],r=r.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(r))*AT)},K_=e=>{e.dispatchEvent(new Event(nf))},en=e=>!e||typeof e!="object"?!1:(typeof e.jquery<"u"&&(e=e[0]),typeof e.nodeType<"u"),Bn=e=>en(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(q_(e)):null,$o=e=>{if(!en(e)||e.getClientRects().length===0)return!1;const t=getComputedStyle(e).getPropertyValue("visibility")==="visible",r=e.closest("details:not([open])");if(!r)return t;if(r!==e){const n=e.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return t},Dn=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled<"u"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",Y_=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?Y_(e.parentNode):null},al=()=>{},Us=e=>{e.offsetHeight},z_=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Uu=[],CT=e=>{document.readyState==="loading"?(Uu.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of Uu)t()}),Uu.push(e)):e()},rr=()=>document.documentElement.dir==="rtl",ir=e=>{CT(()=>{const t=z_();if(t){const r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}})},Bt=(e,t=[],r=e)=>typeof e=="function"?e(...t):r,G_=(e,t,r=!0)=>{if(!r){Bt(e);return}const o=IT(t)+5;let i=!1;const s=({target:a})=>{a===t&&(i=!0,t.removeEventListener(nf,s),Bt(e))};t.addEventListener(nf,s),setTimeout(()=>{i||K_(t)},o)},Ud=(e,t,r,n)=>{const o=e.length;let i=e.indexOf(t);return i===-1?!r&&n?e[o-1]:e[0]:(i+=r?1:-1,n&&(i=(i+o)%o),e[Math.max(0,Math.min(i,o-1))])},RT=/[^.]*(?=\..*)\.|.*/,OT=/\..*/,kT=/::\d+$/,Fu={};let xg=1;const Q_={mouseenter:"mouseover",mouseleave:"mouseout"},NT=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function X_(e,t){return t&&`${t}::${xg++}`||e.uidEvent||xg++}function J_(e){const t=X_(e);return e.uidEvent=t,Fu[t]=Fu[t]||{},Fu[t]}function MT(e,t){return function r(n){return Fd(n,{delegateTarget:e}),r.oneOff&&Se.off(e,n.type,t),t.apply(e,[n])}}function PT(e,t,r){return function n(o){const i=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of i)if(a===s)return Fd(o,{delegateTarget:s}),n.oneOff&&Se.off(e,o.type,t,r),r.apply(s,[o])}}function Z_(e,t,r=null){return Object.values(e).find(n=>n.callable===t&&n.delegationSelector===r)}function eb(e,t,r){const n=typeof t=="string",o=n?r:t||r;let i=tb(e);return NT.has(i)||(i=e),[n,o,i]}function Ig(e,t,r,n,o){if(typeof t!="string"||!e)return;let[i,s,a]=eb(t,r,n);t in Q_&&(s=(_=>function(b){if(!b.relatedTarget||b.relatedTarget!==b.delegateTarget&&!b.delegateTarget.contains(b.relatedTarget))return _.call(this,b)})(s));const l=J_(e),u=l[a]||(l[a]={}),c=Z_(u,s,i?r:null);if(c){c.oneOff=c.oneOff&&o;return}const d=X_(s,t.replace(RT,"")),p=i?PT(e,r,s):MT(e,s);p.delegationSelector=i?r:null,p.callable=s,p.oneOff=o,p.uidEvent=d,u[d]=p,e.addEventListener(a,p,i)}function of(e,t,r,n,o){const i=Z_(t[r],n,o);i&&(e.removeEventListener(r,i,!!o),delete t[r][i.uidEvent])}function LT(e,t,r,n){const o=t[r]||{};for(const[i,s]of Object.entries(o))i.includes(n)&&of(e,t,r,s.callable,s.delegationSelector)}function tb(e){return e=e.replace(OT,""),Q_[e]||e}const Se={on(e,t,r,n){Ig(e,t,r,n,!1)},one(e,t,r,n){Ig(e,t,r,n,!0)},off(e,t,r,n){if(typeof t!="string"||!e)return;const[o,i,s]=eb(t,r,n),a=s!==t,l=J_(e),u=l[s]||{},c=t.startsWith(".");if(typeof i<"u"){if(!Object.keys(u).length)return;of(e,l,s,i,o?r:null);return}if(c)for(const d of Object.keys(l))LT(e,l,d,t.slice(1));for(const[d,p]of Object.entries(u)){const m=d.replace(kT,"");(!a||t.includes(m))&&of(e,l,s,p.callable,p.delegationSelector)}},trigger(e,t,r){if(typeof t!="string"||!e)return null;const n=z_(),o=tb(t),i=t!==o;let s=null,a=!0,l=!0,u=!1;i&&n&&(s=n.Event(t,r),n(e).trigger(s),a=!s.isPropagationStopped(),l=!s.isImmediatePropagationStopped(),u=s.isDefaultPrevented());const c=Fd(new Event(t,{bubbles:a,cancelable:!0}),r);return u&&c.preventDefault(),l&&e.dispatchEvent(c),c.defaultPrevented&&s&&s.preventDefault(),c}};function Fd(e,t={}){for(const[r,n]of Object.entries(t))try{e[r]=n}catch{Object.defineProperty(e,r,{configurable:!0,get(){return n}})}return e}function Cg(e){if(e==="true")return!0;if(e==="false")return!1;if(e===Number(e).toString())return Number(e);if(e===""||e==="null")return null;if(typeof e!="string")return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function ju(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const tn={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${ju(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${ju(t)}`)},getDataAttributes(e){if(!e)return{};const t={},r=Object.keys(e.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(const n of r){let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1,o.length),t[o]=Cg(e.dataset[n])}return t},getDataAttribute(e,t){return Cg(e.getAttribute(`data-bs-${ju(t)}`))}};class Fs{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,r){const n=en(r)?tn.getDataAttribute(r,"config"):{};return{...this.constructor.Default,...typeof n=="object"?n:{},...en(r)?tn.getDataAttributes(r):{},...typeof t=="object"?t:{}}}_typeCheckConfig(t,r=this.constructor.DefaultType){for(const[n,o]of Object.entries(r)){const i=t[n],s=en(i)?"element":TT(i);if(!new RegExp(o).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${o}".`)}}}const BT="5.3.3";class _r extends Fs{constructor(t,r){super(),t=Bn(t),t&&(this._element=t,this._config=this._getConfig(r),$u.set(this._element,this.constructor.DATA_KEY,this))}dispose(){$u.remove(this._element,this.constructor.DATA_KEY),Se.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,r,n=!0){G_(t,r,n)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return $u.get(Bn(t),this.DATA_KEY)}static getOrCreateInstance(t,r={}){return this.getInstance(t)||new this(t,typeof r=="object"?r:null)}static get VERSION(){return BT}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const Wu=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&r!=="#"?r.trim():null}return t?t.split(",").map(r=>q_(r)).join(","):null},Pe={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(r=>r.matches(t))},parents(e,t){const r=[];let n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(r=>!Dn(r)&&$o(r))},getSelectorFromElement(e){const t=Wu(e);return t&&Pe.findOne(t)?t:null},getElementFromSelector(e){const t=Wu(e);return t?Pe.findOne(t):null},getMultipleElementsFromSelector(e){const t=Wu(e);return t?Pe.find(t):[]}},zl=(e,t="hide")=>{const r=`click.dismiss${e.EVENT_KEY}`,n=e.NAME;Se.on(document,r,`[data-bs-dismiss="${n}"]`,function(o){if(["A","AREA"].includes(this.tagName)&&o.preventDefault(),Dn(this))return;const i=Pe.getElementFromSelector(this)||this.closest(`.${n}`);e.getOrCreateInstance(i)[t]()})},DT="alert",$T="bs.alert",rb=`.${$T}`,UT=`close${rb}`,FT=`closed${rb}`,jT="fade",WT="show";class Gl extends _r{static get NAME(){return DT}close(){if(Se.trigger(this._element,UT).defaultPrevented)return;this._element.classList.remove(WT);const r=this._element.classList.contains(jT);this._queueCallback(()=>this._destroyElement(),this._element,r)}_destroyElement(){this._element.remove(),Se.trigger(this._element,FT),this.dispose()}static jQueryInterface(t){return this.each(function(){const r=Gl.getOrCreateInstance(this);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}zl(Gl,"close");ir(Gl);const HT="button",VT="bs.button",qT=`.${VT}`,KT=".data-api",YT="active",Rg='[data-bs-toggle="button"]',zT=`click${qT}${KT}`;class Ql extends _r{static get NAME(){return HT}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(YT))}static jQueryInterface(t){return this.each(function(){const r=Ql.getOrCreateInstance(this);t==="toggle"&&r[t]()})}}Se.on(document,zT,Rg,e=>{e.preventDefault();const t=e.target.closest(Rg);Ql.getOrCreateInstance(t).toggle()});ir(Ql);const GT="swipe",Uo=".bs.swipe",QT=`touchstart${Uo}`,XT=`touchmove${Uo}`,JT=`touchend${Uo}`,ZT=`pointerdown${Uo}`,ex=`pointerup${Uo}`,tx="touch",rx="pen",nx="pointer-event",ix=40,ox={endCallback:null,leftCallback:null,rightCallback:null},sx={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class ll extends Fs{constructor(t,r){super(),this._element=t,!(!t||!ll.isSupported())&&(this._config=this._getConfig(r),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return ox}static get DefaultType(){return sx}static get NAME(){return GT}dispose(){Se.off(this._element,Uo)}_start(t){if(!this._supportPointerEvents){this._deltaX=t.touches[0].clientX;return}this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX)}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Bt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=ix)return;const r=t/this._deltaX;this._deltaX=0,r&&Bt(r>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(Se.on(this._element,ZT,t=>this._start(t)),Se.on(this._element,ex,t=>this._end(t)),this._element.classList.add(nx)):(Se.on(this._element,QT,t=>this._start(t)),Se.on(this._element,XT,t=>this._move(t)),Se.on(this._element,JT,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&(t.pointerType===rx||t.pointerType===tx)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ax="carousel",lx="bs.carousel",Fn=`.${lx}`,nb=".data-api",ux="ArrowLeft",cx="ArrowRight",fx=500,Qo="next",Yi="prev",Zi="left",Na="right",hx=`slide${Fn}`,Hu=`slid${Fn}`,dx=`keydown${Fn}`,px=`mouseenter${Fn}`,gx=`mouseleave${Fn}`,mx=`dragstart${Fn}`,yx=`load${Fn}${nb}`,_x=`click${Fn}${nb}`,ib="carousel",ia="active",bx="slide",vx="carousel-item-end",Ex="carousel-item-start",Sx="carousel-item-next",Ax="carousel-item-prev",ob=".active",sb=".carousel-item",Tx=ob+sb,xx=".carousel-item img",Ix=".carousel-indicators",Cx="[data-bs-slide], [data-bs-slide-to]",Rx='[data-bs-ride="carousel"]',Ox={[ux]:Na,[cx]:Zi},kx={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Nx={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class js extends _r{constructor(t,r){super(t,r),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Pe.findOne(Ix,this._element),this._addEventListeners(),this._config.ride===ib&&this.cycle()}static get Default(){return kx}static get DefaultType(){return Nx}static get NAME(){return ax}next(){this._slide(Qo)}nextWhenVisible(){!document.hidden&&$o(this._element)&&this.next()}prev(){this._slide(Yi)}pause(){this._isSliding&&K_(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){Se.one(this._element,Hu,()=>this.cycle());return}this.cycle()}}to(t){const r=this._getItems();if(t>r.length-1||t<0)return;if(this._isSliding){Se.one(this._element,Hu,()=>this.to(t));return}const n=this._getItemIndex(this._getActive());if(n===t)return;const o=t>n?Qo:Yi;this._slide(o,r[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&Se.on(this._element,dx,t=>this._keydown(t)),this._config.pause==="hover"&&(Se.on(this._element,px,()=>this.pause()),Se.on(this._element,gx,()=>this._maybeEnableCycle())),this._config.touch&&ll.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const n of Pe.find(xx,this._element))Se.on(n,mx,o=>o.preventDefault());const r={leftCallback:()=>this._slide(this._directionToOrder(Zi)),rightCallback:()=>this._slide(this._directionToOrder(Na)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),fx+this._config.interval))}};this._swipeHelper=new ll(this._element,r)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const r=Ox[t.key];r&&(t.preventDefault(),this._slide(this._directionToOrder(r)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const r=Pe.findOne(ob,this._indicatorsElement);r.classList.remove(ia),r.removeAttribute("aria-current");const n=Pe.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);n&&(n.classList.add(ia),n.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const r=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=r||this._config.defaultInterval}_slide(t,r=null){if(this._isSliding)return;const n=this._getActive(),o=t===Qo,i=r||Ud(this._getItems(),n,o,this._config.wrap);if(i===n)return;const s=this._getItemIndex(i),a=m=>Se.trigger(this._element,m,{relatedTarget:i,direction:this._orderToDirection(t),from:this._getItemIndex(n),to:s});if(a(hx).defaultPrevented||!n||!i)return;const u=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(s),this._activeElement=i;const c=o?Ex:vx,d=o?Sx:Ax;i.classList.add(d),Us(i),n.classList.add(c),i.classList.add(c);const p=()=>{i.classList.remove(c,d),i.classList.add(ia),n.classList.remove(ia,d,c),this._isSliding=!1,a(Hu)};this._queueCallback(p,n,this._isAnimated()),u&&this.cycle()}_isAnimated(){return this._element.classList.contains(bx)}_getActive(){return Pe.findOne(Tx,this._element)}_getItems(){return Pe.find(sb,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return rr()?t===Zi?Yi:Qo:t===Zi?Qo:Yi}_orderToDirection(t){return rr()?t===Yi?Zi:Na:t===Yi?Na:Zi}static jQueryInterface(t){return this.each(function(){const r=js.getOrCreateInstance(this,t);if(typeof t=="number"){r.to(t);return}if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Se.on(document,_x,Cx,function(e){const t=Pe.getElementFromSelector(this);if(!t||!t.classList.contains(ib))return;e.preventDefault();const r=js.getOrCreateInstance(t),n=this.getAttribute("data-bs-slide-to");if(n){r.to(n),r._maybeEnableCycle();return}if(tn.getDataAttribute(this,"slide")==="next"){r.next(),r._maybeEnableCycle();return}r.prev(),r._maybeEnableCycle()});Se.on(window,yx,()=>{const e=Pe.find(Rx);for(const t of e)js.getOrCreateInstance(t)});ir(js);const Mx="collapse",Px="bs.collapse",Ws=`.${Px}`,Lx=".data-api",Bx=`show${Ws}`,Dx=`shown${Ws}`,$x=`hide${Ws}`,Ux=`hidden${Ws}`,Fx=`click${Ws}${Lx}`,Vu="show",io="collapse",oa="collapsing",jx="collapsed",Wx=`:scope .${io} .${io}`,Hx="collapse-horizontal",Vx="width",qx="height",Kx=".collapse.show, .collapse.collapsing",sf='[data-bs-toggle="collapse"]',Yx={parent:null,toggle:!0},zx={parent:"(null|element)",toggle:"boolean"};class Os extends _r{constructor(t,r){super(t,r),this._isTransitioning=!1,this._triggerArray=[];const n=Pe.find(sf);for(const o of n){const i=Pe.getSelectorFromElement(o),s=Pe.find(i).filter(a=>a===this._element);i!==null&&s.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Yx}static get DefaultType(){return zx}static get NAME(){return Mx}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(Kx).filter(a=>a!==this._element).map(a=>Os.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||Se.trigger(this._element,Bx).defaultPrevented)return;for(const a of t)a.hide();const n=this._getDimension();this._element.classList.remove(io),this._element.classList.add(oa),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const o=()=>{this._isTransitioning=!1,this._element.classList.remove(oa),this._element.classList.add(io,Vu),this._element.style[n]="",Se.trigger(this._element,Dx)},s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(o,this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown()||Se.trigger(this._element,$x).defaultPrevented)return;const r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,Us(this._element),this._element.classList.add(oa),this._element.classList.remove(io,Vu);for(const o of this._triggerArray){const i=Pe.getElementFromSelector(o);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([o],!1)}this._isTransitioning=!0;const n=()=>{this._isTransitioning=!1,this._element.classList.remove(oa),this._element.classList.add(io),Se.trigger(this._element,Ux)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Vu)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=Bn(t.parent),t}_getDimension(){return this._element.classList.contains(Hx)?Vx:qx}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(sf);for(const r of t){const n=Pe.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(t){const r=Pe.find(Wx,this._config.parent);return Pe.find(t,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(t,r){if(t.length)for(const n of t)n.classList.toggle(jx,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(t){const r={};return typeof t=="string"&&/show|hide/.test(t)&&(r.toggle=!1),this.each(function(){const n=Os.getOrCreateInstance(this,r);if(typeof t=="string"){if(typeof n[t]>"u")throw new TypeError(`No method named "${t}"`);n[t]()}})}}Se.on(document,Fx,sf,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();for(const t of Pe.getMultipleElementsFromSelector(this))Os.getOrCreateInstance(t,{toggle:!1}).toggle()});ir(Os);const Og="dropdown",Gx="bs.dropdown",Mi=`.${Gx}`,jd=".data-api",Qx="Escape",kg="Tab",Xx="ArrowUp",Ng="ArrowDown",Jx=2,Zx=`hide${Mi}`,eI=`hidden${Mi}`,tI=`show${Mi}`,rI=`shown${Mi}`,ab=`click${Mi}${jd}`,lb=`keydown${Mi}${jd}`,nI=`keyup${Mi}${jd}`,eo="show",iI="dropup",oI="dropend",sI="dropstart",aI="dropup-center",lI="dropdown-center",ui='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',uI=`${ui}.${eo}`,Ma=".dropdown-menu",cI=".navbar",fI=".navbar-nav",hI=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",dI=rr()?"top-end":"top-start",pI=rr()?"top-start":"top-end",gI=rr()?"bottom-end":"bottom-start",mI=rr()?"bottom-start":"bottom-end",yI=rr()?"left-start":"right-start",_I=rr()?"right-start":"left-start",bI="top",wI="bottom",vI={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},EI={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Nr extends _r{constructor(t,r){super(t,r),this._popper=null,this._parent=this._element.parentNode,this._menu=Pe.next(this._element,Ma)[0]||Pe.prev(this._element,Ma)[0]||Pe.findOne(Ma,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return vI}static get DefaultType(){return EI}static get NAME(){return Og}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Dn(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!Se.trigger(this._element,tI,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(fI))for(const n of[].concat(...document.body.children))Se.on(n,"mouseover",al);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(eo),this._element.classList.add(eo),Se.trigger(this._element,rI,t)}}hide(){if(Dn(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!Se.trigger(this._element,Zx,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))Se.off(n,"mouseover",al);this._popper&&this._popper.destroy(),this._menu.classList.remove(eo),this._element.classList.remove(eo),this._element.setAttribute("aria-expanded","false"),tn.removeDataAttribute(this._menu,"popper"),Se.trigger(this._element,eI,t)}}_getConfig(t){if(t=super._getConfig(t),typeof t.reference=="object"&&!en(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${Og.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(typeof V_>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;this._config.reference==="parent"?t=this._parent:en(this._config.reference)?t=Bn(this._config.reference):typeof this._config.reference=="object"&&(t=this._config.reference);const r=this._getPopperConfig();this._popper=$d(t,this._menu,r)}_isShown(){return this._menu.classList.contains(eo)}_getPlacement(){const t=this._parent;if(t.classList.contains(oI))return yI;if(t.classList.contains(sI))return _I;if(t.classList.contains(aI))return bI;if(t.classList.contains(lI))return wI;const r=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(iI)?r?pI:dI:r?mI:gI}_detectNavbar(){return this._element.closest(cI)!==null}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(tn.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Bt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:r}){const n=Pe.find(hI,this._menu).filter(o=>$o(o));n.length&&Ud(n,r,t===Ng,!n.includes(r)).focus()}static jQueryInterface(t){return this.each(function(){const r=Nr.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}static clearMenus(t){if(t.button===Jx||t.type==="keyup"&&t.key!==kg)return;const r=Pe.find(uI);for(const n of r){const o=Nr.getInstance(n);if(!o||o._config.autoClose===!1)continue;const i=t.composedPath(),s=i.includes(o._menu);if(i.includes(o._element)||o._config.autoClose==="inside"&&!s||o._config.autoClose==="outside"&&s||o._menu.contains(t.target)&&(t.type==="keyup"&&t.key===kg||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const a={relatedTarget:o._element};t.type==="click"&&(a.clickEvent=t),o._completeHide(a)}}static dataApiKeydownHandler(t){const r=/input|textarea/i.test(t.target.tagName),n=t.key===Qx,o=[Xx,Ng].includes(t.key);if(!o&&!n||r&&!n)return;t.preventDefault();const i=this.matches(ui)?this:Pe.prev(this,ui)[0]||Pe.next(this,ui)[0]||Pe.findOne(ui,t.delegateTarget.parentNode),s=Nr.getOrCreateInstance(i);if(o){t.stopPropagation(),s.show(),s._selectMenuItem(t);return}s._isShown()&&(t.stopPropagation(),s.hide(),i.focus())}}Se.on(document,lb,ui,Nr.dataApiKeydownHandler);Se.on(document,lb,Ma,Nr.dataApiKeydownHandler);Se.on(document,ab,Nr.clearMenus);Se.on(document,nI,Nr.clearMenus);Se.on(document,ab,ui,function(e){e.preventDefault(),Nr.getOrCreateInstance(this).toggle()});ir(Nr);const ub="backdrop",SI="fade",Mg="show",Pg=`mousedown.bs.${ub}`,AI={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},TI={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class cb extends Fs{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return AI}static get DefaultType(){return TI}static get NAME(){return ub}show(t){if(!this._config.isVisible){Bt(t);return}this._append();const r=this._getElement();this._config.isAnimated&&Us(r),r.classList.add(Mg),this._emulateAnimation(()=>{Bt(t)})}hide(t){if(!this._config.isVisible){Bt(t);return}this._getElement().classList.remove(Mg),this._emulateAnimation(()=>{this.dispose(),Bt(t)})}dispose(){this._isAppended&&(Se.off(this._element,Pg),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(SI),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Bn(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),Se.on(t,Pg,()=>{Bt(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(t){G_(t,this._getElement(),this._config.isAnimated)}}const xI="focustrap",II="bs.focustrap",ul=`.${II}`,CI=`focusin${ul}`,RI=`keydown.tab${ul}`,OI="Tab",kI="forward",Lg="backward",NI={autofocus:!0,trapElement:null},MI={autofocus:"boolean",trapElement:"element"};class fb extends Fs{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return NI}static get DefaultType(){return MI}static get NAME(){return xI}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),Se.off(document,ul),Se.on(document,CI,t=>this._handleFocusin(t)),Se.on(document,RI,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,Se.off(document,ul))}_handleFocusin(t){const{trapElement:r}=this._config;if(t.target===document||t.target===r||r.contains(t.target))return;const n=Pe.focusableChildren(r);n.length===0?r.focus():this._lastTabNavDirection===Lg?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){t.key===OI&&(this._lastTabNavDirection=t.shiftKey?Lg:kI)}}const Bg=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Dg=".sticky-top",sa="padding-right",$g="margin-right";class af{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,sa,r=>r+t),this._setElementAttributes(Bg,sa,r=>r+t),this._setElementAttributes(Dg,$g,r=>r-t)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,sa),this._resetElementAttributes(Bg,sa),this._resetElementAttributes(Dg,$g)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,r,n){const o=this.getWidth(),i=s=>{if(s!==this._element&&window.innerWidth>s.clientWidth+o)return;this._saveInitialAttribute(s,r);const a=window.getComputedStyle(s).getPropertyValue(r);s.style.setProperty(r,`${n(Number.parseFloat(a))}px`)};this._applyManipulationCallback(t,i)}_saveInitialAttribute(t,r){const n=t.style.getPropertyValue(r);n&&tn.setDataAttribute(t,r,n)}_resetElementAttributes(t,r){const n=o=>{const i=tn.getDataAttribute(o,r);if(i===null){o.style.removeProperty(r);return}tn.removeDataAttribute(o,r),o.style.setProperty(r,i)};this._applyManipulationCallback(t,n)}_applyManipulationCallback(t,r){if(en(t)){r(t);return}for(const n of Pe.find(t,this._element))r(n)}}const PI="modal",LI="bs.modal",nr=`.${LI}`,BI=".data-api",DI="Escape",$I=`hide${nr}`,UI=`hidePrevented${nr}`,hb=`hidden${nr}`,db=`show${nr}`,FI=`shown${nr}`,jI=`resize${nr}`,WI=`click.dismiss${nr}`,HI=`mousedown.dismiss${nr}`,VI=`keydown.dismiss${nr}`,qI=`click${nr}${BI}`,Ug="modal-open",KI="fade",Fg="show",qu="modal-static",YI=".modal.show",zI=".modal-dialog",GI=".modal-body",QI='[data-bs-toggle="modal"]',XI={backdrop:!0,focus:!0,keyboard:!0},JI={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Co extends _r{constructor(t,r){super(t,r),this._dialog=Pe.findOne(zI,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new af,this._addEventListeners()}static get Default(){return XI}static get DefaultType(){return JI}static get NAME(){return PI}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||Se.trigger(this._element,db,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ug),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){!this._isShown||this._isTransitioning||Se.trigger(this._element,$I).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Fg),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){Se.off(window,nr),Se.off(this._dialog,nr),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new cb({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new fb({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const r=Pe.findOne(GI,this._dialog);r&&(r.scrollTop=0),Us(this._element),this._element.classList.add(Fg);const n=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,Se.trigger(this._element,FI,{relatedTarget:t})};this._queueCallback(n,this._dialog,this._isAnimated())}_addEventListeners(){Se.on(this._element,VI,t=>{if(t.key===DI){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),Se.on(window,jI,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),Se.on(this._element,HI,t=>{Se.one(this._element,WI,r=>{if(!(this._element!==t.target||this._element!==r.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Ug),this._resetAdjustments(),this._scrollBar.reset(),Se.trigger(this._element,hb)})}_isAnimated(){return this._element.classList.contains(KI)}_triggerBackdropTransition(){if(Se.trigger(this._element,UI).defaultPrevented)return;const r=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;n==="hidden"||this._element.classList.contains(qu)||(r||(this._element.style.overflowY="hidden"),this._element.classList.add(qu),this._queueCallback(()=>{this._element.classList.remove(qu),this._queueCallback(()=>{this._element.style.overflowY=n},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,r=this._scrollBar.getWidth(),n=r>0;if(n&&!t){const o=rr()?"paddingLeft":"paddingRight";this._element.style[o]=`${r}px`}if(!n&&t){const o=rr()?"paddingRight":"paddingLeft";this._element.style[o]=`${r}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,r){return this.each(function(){const n=Co.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]>"u")throw new TypeError(`No method named "${t}"`);n[t](r)}})}}Se.on(document,qI,QI,function(e){const t=Pe.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),Se.one(t,db,o=>{o.defaultPrevented||Se.one(t,hb,()=>{$o(this)&&this.focus()})});const r=Pe.findOne(YI);r&&Co.getInstance(r).hide(),Co.getOrCreateInstance(t).toggle(this)});zl(Co);ir(Co);const ZI="offcanvas",eC="bs.offcanvas",dn=`.${eC}`,pb=".data-api",tC=`load${dn}${pb}`,rC="Escape",jg="show",Wg="showing",Hg="hiding",nC="offcanvas-backdrop",gb=".offcanvas.show",iC=`show${dn}`,oC=`shown${dn}`,sC=`hide${dn}`,Vg=`hidePrevented${dn}`,mb=`hidden${dn}`,aC=`resize${dn}`,lC=`click${dn}${pb}`,uC=`keydown.dismiss${dn}`,cC='[data-bs-toggle="offcanvas"]',fC={backdrop:!0,keyboard:!0,scroll:!1},hC={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class $n extends _r{constructor(t,r){super(t,r),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return fC}static get DefaultType(){return hC}static get NAME(){return ZI}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||Se.trigger(this._element,iC,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new af().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Wg);const n=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(jg),this._element.classList.remove(Wg),Se.trigger(this._element,oC,{relatedTarget:t})};this._queueCallback(n,this._element,!0)}hide(){if(!this._isShown||Se.trigger(this._element,sC).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Hg),this._backdrop.hide();const r=()=>{this._element.classList.remove(jg,Hg),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new af().reset(),Se.trigger(this._element,mb)};this._queueCallback(r,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=()=>{if(this._config.backdrop==="static"){Se.trigger(this._element,Vg);return}this.hide()},r=!!this._config.backdrop;return new cb({className:nC,isVisible:r,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:r?t:null})}_initializeFocusTrap(){return new fb({trapElement:this._element})}_addEventListeners(){Se.on(this._element,uC,t=>{if(t.key===rC){if(this._config.keyboard){this.hide();return}Se.trigger(this._element,Vg)}})}static jQueryInterface(t){return this.each(function(){const r=$n.getOrCreateInstance(this,t);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}Se.on(document,lC,cC,function(e){const t=Pe.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),Dn(this))return;Se.one(t,mb,()=>{$o(this)&&this.focus()});const r=Pe.findOne(gb);r&&r!==t&&$n.getInstance(r).hide(),$n.getOrCreateInstance(t).toggle(this)});Se.on(window,tC,()=>{for(const e of Pe.find(gb))$n.getOrCreateInstance(e).show()});Se.on(window,aC,()=>{for(const e of Pe.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(e).position!=="fixed"&&$n.getOrCreateInstance(e).hide()});zl($n);ir($n);const dC=/^aria-[\w-]*$/i,yb={"*":["class","dir","id","lang","role",dC],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},pC=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),gC=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,mC=(e,t)=>{const r=e.nodeName.toLowerCase();return t.includes(r)?pC.has(r)?!!gC.test(e.nodeValue):!0:t.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function yC(e,t,r){if(!e.length)return e;if(r&&typeof r=="function")return r(e);const o=new window.DOMParser().parseFromString(e,"text/html"),i=[].concat(...o.body.querySelectorAll("*"));for(const s of i){const a=s.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){s.remove();continue}const l=[].concat(...s.attributes),u=[].concat(t["*"]||[],t[a]||[]);for(const c of l)mC(c,u)||s.removeAttribute(c.nodeName)}return o.body.innerHTML}const _C="TemplateFactory",bC={allowList:yb,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},wC={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},vC={entry:"(string|element|function|null)",selector:"(string|element)"};class EC extends Fs{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return bC}static get DefaultType(){return wC}static get NAME(){return _C}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[o,i]of Object.entries(this._config.content))this._setContent(t,i,o);const r=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[r,n]of Object.entries(t))super._typeCheckConfig({selector:r,entry:n},vC)}_setContent(t,r,n){const o=Pe.findOne(n,t);if(o){if(r=this._resolvePossibleFunction(r),!r){o.remove();return}if(en(r)){this._putElementInTemplate(Bn(r),o);return}if(this._config.html){o.innerHTML=this._maybeSanitize(r);return}o.textContent=r}}_maybeSanitize(t){return this._config.sanitize?yC(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Bt(t,[this])}_putElementInTemplate(t,r){if(this._config.html){r.innerHTML="",r.append(t);return}r.textContent=t.textContent}}const SC="tooltip",AC=new Set(["sanitize","allowList","sanitizeFn"]),Ku="fade",TC="modal",aa="show",xC=".tooltip-inner",qg=`.${TC}`,Kg="hide.bs.modal",Xo="hover",Yu="focus",IC="click",CC="manual",RC="hide",OC="hidden",kC="show",NC="shown",MC="inserted",PC="click",LC="focusin",BC="focusout",DC="mouseenter",$C="mouseleave",UC={AUTO:"auto",TOP:"top",RIGHT:rr()?"left":"right",BOTTOM:"bottom",LEFT:rr()?"right":"left"},FC={allowList:yb,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},jC={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Fo extends _r{constructor(t,r){if(typeof V_>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return FC}static get DefaultType(){return jC}static get NAME(){return SC}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),Se.off(this._element.closest(qg),Kg,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const t=Se.trigger(this._element,this.constructor.eventName(kC)),n=(Y_(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();const o=this._getTipElement();this._element.setAttribute("aria-describedby",o.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(o),Se.trigger(this._element,this.constructor.eventName(MC))),this._popper=this._createPopper(o),o.classList.add(aa),"ontouchstart"in document.documentElement)for(const a of[].concat(...document.body.children))Se.on(a,"mouseover",al);const s=()=>{Se.trigger(this._element,this.constructor.eventName(NC)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(s,this.tip,this._isAnimated())}hide(){if(!this._isShown()||Se.trigger(this._element,this.constructor.eventName(RC)).defaultPrevented)return;if(this._getTipElement().classList.remove(aa),"ontouchstart"in document.documentElement)for(const o of[].concat(...document.body.children))Se.off(o,"mouseover",al);this._activeTrigger[IC]=!1,this._activeTrigger[Yu]=!1,this._activeTrigger[Xo]=!1,this._isHovered=null;const n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),Se.trigger(this._element,this.constructor.eventName(OC)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const r=this._getTemplateFactory(t).toHtml();if(!r)return null;r.classList.remove(Ku,aa),r.classList.add(`bs-${this.constructor.NAME}-auto`);const n=xT(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(Ku),r}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new EC({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[xC]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ku)}_isShown(){return this.tip&&this.tip.classList.contains(aa)}_createPopper(t){const r=Bt(this._config.placement,[this,t,this._element]),n=UC[r.toUpperCase()];return $d(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_resolvePossibleFunction(t){return Bt(t,[this._element])}_getPopperConfig(t){const r={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return{...r,...Bt(this._config.popperConfig,[r])}}_setListeners(){const t=this._config.trigger.split(" ");for(const r of t)if(r==="click")Se.on(this._element,this.constructor.eventName(PC),this._config.selector,n=>{this._initializeOnDelegatedTarget(n).toggle()});else if(r!==CC){const n=r===Xo?this.constructor.eventName(DC):this.constructor.eventName(LC),o=r===Xo?this.constructor.eventName($C):this.constructor.eventName(BC);Se.on(this._element,n,this._config.selector,i=>{const s=this._initializeOnDelegatedTarget(i);s._activeTrigger[i.type==="focusin"?Yu:Xo]=!0,s._enter()}),Se.on(this._element,o,this._config.selector,i=>{const s=this._initializeOnDelegatedTarget(i);s._activeTrigger[i.type==="focusout"?Yu:Xo]=s._element.contains(i.relatedTarget),s._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},Se.on(this._element.closest(qg),Kg,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,r){clearTimeout(this._timeout),this._timeout=setTimeout(t,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const r=tn.getDataAttributes(this._element);for(const n of Object.keys(r))AC.has(n)&&delete r[n];return t={...r,...typeof t=="object"&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:Bn(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(t[r]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){const r=Fo.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}}ir(Fo);const WC="popover",HC=".popover-header",VC=".popover-body",qC={...Fo.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},KC={...Fo.DefaultType,content:"(null|string|element|function)"};class Wd extends Fo{static get Default(){return qC}static get DefaultType(){return KC}static get NAME(){return WC}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[HC]:this._getTitle(),[VC]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){const r=Wd.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}}ir(Wd);const YC="scrollspy",zC="bs.scrollspy",Hd=`.${zC}`,GC=".data-api",QC=`activate${Hd}`,Yg=`click${Hd}`,XC=`load${Hd}${GC}`,JC="dropdown-item",zi="active",ZC='[data-bs-spy="scroll"]',zu="[href]",eR=".nav, .list-group",zg=".nav-link",tR=".nav-item",rR=".list-group-item",nR=`${zg}, ${tR} > ${zg}, ${rR}`,iR=".dropdown",oR=".dropdown-toggle",sR={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},aR={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Xl extends _r{constructor(t,r){super(t,r),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return sR}static get DefaultType(){return aR}static get NAME(){return YC}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Bn(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,typeof t.threshold=="string"&&(t.threshold=t.threshold.split(",").map(r=>Number.parseFloat(r))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(Se.off(this._config.target,Yg),Se.on(this._config.target,Yg,zu,t=>{const r=this._observableSections.get(t.target.hash);if(r){t.preventDefault();const n=this._rootElement||window,o=r.offsetTop-this._element.offsetTop;if(n.scrollTo){n.scrollTo({top:o,behavior:"smooth"});return}n.scrollTop=o}}))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(r=>this._observerCallback(r),t)}_observerCallback(t){const r=s=>this._targetLinks.get(`#${s.target.id}`),n=s=>{this._previousScrollData.visibleEntryTop=s.target.offsetTop,this._process(r(s))},o=(this._rootElement||document.documentElement).scrollTop,i=o>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=o;for(const s of t){if(!s.isIntersecting){this._activeTarget=null,this._clearActiveClass(r(s));continue}const a=s.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(i&&a){if(n(s),!o)return;continue}!i&&!a&&n(s)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Pe.find(zu,this._config.target);for(const r of t){if(!r.hash||Dn(r))continue;const n=Pe.findOne(decodeURI(r.hash),this._element);$o(n)&&(this._targetLinks.set(decodeURI(r.hash),r),this._observableSections.set(r.hash,n))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(zi),this._activateParents(t),Se.trigger(this._element,QC,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(JC)){Pe.findOne(oR,t.closest(iR)).classList.add(zi);return}for(const r of Pe.parents(t,eR))for(const n of Pe.prev(r,nR))n.classList.add(zi)}_clearActiveClass(t){t.classList.remove(zi);const r=Pe.find(`${zu}.${zi}`,t);for(const n of r)n.classList.remove(zi)}static jQueryInterface(t){return this.each(function(){const r=Xl.getOrCreateInstance(this,t);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Se.on(window,XC,()=>{for(const e of Pe.find(ZC))Xl.getOrCreateInstance(e)});ir(Xl);const lR="tab",uR="bs.tab",Pi=`.${uR}`,cR=`hide${Pi}`,fR=`hidden${Pi}`,hR=`show${Pi}`,dR=`shown${Pi}`,pR=`click${Pi}`,gR=`keydown${Pi}`,mR=`load${Pi}`,yR="ArrowLeft",Gg="ArrowRight",_R="ArrowUp",Qg="ArrowDown",Gu="Home",Xg="End",ci="active",Jg="fade",Qu="show",bR="dropdown",_b=".dropdown-toggle",wR=".dropdown-menu",Xu=`:not(${_b})`,vR='.list-group, .nav, [role="tablist"]',ER=".nav-item, .list-group-item",SR=`.nav-link${Xu}, .list-group-item${Xu}, [role="tab"]${Xu}`,bb='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Ju=`${SR}, ${bb}`,AR=`.${ci}[data-bs-toggle="tab"], .${ci}[data-bs-toggle="pill"], .${ci}[data-bs-toggle="list"]`;class Ro extends _r{constructor(t){super(t),this._parent=this._element.closest(vR),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),Se.on(this._element,gR,r=>this._keydown(r)))}static get NAME(){return lR}show(){const t=this._element;if(this._elemIsActive(t))return;const r=this._getActiveElem(),n=r?Se.trigger(r,cR,{relatedTarget:t}):null;Se.trigger(t,hR,{relatedTarget:r}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(r,t),this._activate(t,r))}_activate(t,r){if(!t)return;t.classList.add(ci),this._activate(Pe.getElementFromSelector(t));const n=()=>{if(t.getAttribute("role")!=="tab"){t.classList.add(Qu);return}t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),Se.trigger(t,dR,{relatedTarget:r})};this._queueCallback(n,t,t.classList.contains(Jg))}_deactivate(t,r){if(!t)return;t.classList.remove(ci),t.blur(),this._deactivate(Pe.getElementFromSelector(t));const n=()=>{if(t.getAttribute("role")!=="tab"){t.classList.remove(Qu);return}t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),Se.trigger(t,fR,{relatedTarget:r})};this._queueCallback(n,t,t.classList.contains(Jg))}_keydown(t){if(![yR,Gg,_R,Qg,Gu,Xg].includes(t.key))return;t.stopPropagation(),t.preventDefault();const r=this._getChildren().filter(o=>!Dn(o));let n;if([Gu,Xg].includes(t.key))n=r[t.key===Gu?0:r.length-1];else{const o=[Gg,Qg].includes(t.key);n=Ud(r,t.target,o,!0)}n&&(n.focus({preventScroll:!0}),Ro.getOrCreateInstance(n).show())}_getChildren(){return Pe.find(Ju,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,r){this._setAttributeIfNotExists(t,"role","tablist");for(const n of r)this._setInitialAttributesOnChild(n)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const r=this._elemIsActive(t),n=this._getOuterElement(t);t.setAttribute("aria-selected",r),n!==t&&this._setAttributeIfNotExists(n,"role","presentation"),r||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const r=Pe.getElementFromSelector(t);r&&(this._setAttributeIfNotExists(r,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(r,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,r){const n=this._getOuterElement(t);if(!n.classList.contains(bR))return;const o=(i,s)=>{const a=Pe.findOne(i,n);a&&a.classList.toggle(s,r)};o(_b,ci),o(wR,Qu),n.setAttribute("aria-expanded",r)}_setAttributeIfNotExists(t,r,n){t.hasAttribute(r)||t.setAttribute(r,n)}_elemIsActive(t){return t.classList.contains(ci)}_getInnerElement(t){return t.matches(Ju)?t:Pe.findOne(Ju,t)}_getOuterElement(t){return t.closest(ER)||t}static jQueryInterface(t){return this.each(function(){const r=Ro.getOrCreateInstance(this);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Se.on(document,pR,bb,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),!Dn(this)&&Ro.getOrCreateInstance(this).show()});Se.on(window,mR,()=>{for(const e of Pe.find(AR))Ro.getOrCreateInstance(e)});ir(Ro);const TR="toast",xR="bs.toast",jn=`.${xR}`,IR=`mouseover${jn}`,CR=`mouseout${jn}`,RR=`focusin${jn}`,OR=`focusout${jn}`,kR=`hide${jn}`,NR=`hidden${jn}`,MR=`show${jn}`,PR=`shown${jn}`,LR="fade",Zg="hide",la="show",ua="showing",BR={animation:"boolean",autohide:"boolean",delay:"number"},DR={animation:!0,autohide:!0,delay:5e3};class Jl extends _r{constructor(t,r){super(t,r),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return DR}static get DefaultType(){return BR}static get NAME(){return TR}show(){if(Se.trigger(this._element,MR).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(LR);const r=()=>{this._element.classList.remove(ua),Se.trigger(this._element,PR),this._maybeScheduleHide()};this._element.classList.remove(Zg),Us(this._element),this._element.classList.add(la,ua),this._queueCallback(r,this._element,this._config.animation)}hide(){if(!this.isShown()||Se.trigger(this._element,kR).defaultPrevented)return;const r=()=>{this._element.classList.add(Zg),this._element.classList.remove(ua,la),Se.trigger(this._element,NR)};this._element.classList.add(ua),this._queueCallback(r,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(la),super.dispose()}isShown(){return this._element.classList.contains(la)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,r){switch(t.type){case"mouseover":case"mouseout":{this._hasMouseInteraction=r;break}case"focusin":case"focusout":{this._hasKeyboardInteraction=r;break}}if(r){this._clearTimeout();return}const n=t.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){Se.on(this._element,IR,t=>this._onInteraction(t,!0)),Se.on(this._element,CR,t=>this._onInteraction(t,!1)),Se.on(this._element,RR,t=>this._onInteraction(t,!0)),Se.on(this._element,OR,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const r=Jl.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}zl(Jl);ir(Jl);var Vd=Object.defineProperty,$R=Object.getOwnPropertyDescriptor,UR=Object.getOwnPropertyNames,FR=Object.prototype.hasOwnProperty,_t=(e,t)=>()=>(e&&(t=e(e=0)),t),Ae=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Li=(e,t)=>{for(var r in t)Vd(e,r,{get:t[r],enumerable:!0})},jR=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of UR(t))!FR.call(e,o)&&o!==r&&Vd(e,o,{get:()=>t[o],enumerable:!(n=$R(t,o))||n.enumerable});return e},ze=e=>jR(Vd({},"__esModule",{value:!0}),e),_e=_t(()=>{}),He={};Li(He,{_debugEnd:()=>Ff,_debugProcess:()=>Uf,_events:()=>th,_eventsCount:()=>rh,_exiting:()=>Tf,_fatalExceptions:()=>Bf,_getActiveHandles:()=>xb,_getActiveRequests:()=>Tb,_kill:()=>Cf,_linkedBinding:()=>Sb,_maxListeners:()=>eh,_preload_modules:()=>Jf,_rawDebug:()=>Ef,_startProfilerIdleNotifier:()=>jf,_stopProfilerIdleNotifier:()=>Wf,_tickCallback:()=>$f,abort:()=>Kf,addListener:()=>nh,allowedNodeEnvironmentFlags:()=>Pf,arch:()=>uf,argv:()=>hf,argv0:()=>Xf,assert:()=>Ib,binding:()=>yf,chdir:()=>wf,config:()=>xf,cpuUsage:()=>ls,cwd:()=>bf,debugPort:()=>Qf,default:()=>Kd,dlopen:()=>Ab,domain:()=>Af,emit:()=>lh,emitWarning:()=>mf,env:()=>ff,execArgv:()=>df,execPath:()=>Gf,exit:()=>Nf,features:()=>Lf,hasUncaughtExceptionCaptureCallback:()=>Cb,hrtime:()=>Pa,kill:()=>kf,listeners:()=>Ob,memoryUsage:()=>Of,moduleLoadList:()=>Sf,nextTick:()=>vb,off:()=>oh,on:()=>Wr,once:()=>ih,openStdin:()=>Mf,pid:()=>Yf,platform:()=>cf,ppid:()=>zf,prependListener:()=>uh,prependOnceListener:()=>ch,reallyExit:()=>If,release:()=>vf,removeAllListeners:()=>ah,removeListener:()=>sh,resourceUsage:()=>Rf,setSourceMapsEnabled:()=>Zf,setUncaughtExceptionCaptureCallback:()=>Df,stderr:()=>Vf,stdin:()=>qf,stdout:()=>Hf,title:()=>lf,umask:()=>_f,uptime:()=>Rb,version:()=>pf,versions:()=>gf});function qd(e){throw new Error("Node.js process "+e+" is not supported by JSPM core outside of Node.js")}function WR(){!bi||!fi||(bi=!1,fi.length?Rr=fi.concat(Rr):Ss=-1,Rr.length&&wb())}function wb(){if(!bi){var e=setTimeout(WR,0);bi=!0;for(var t=Rr.length;t;){for(fi=Rr,Rr=[];++Ss<t;)fi&&fi[Ss].run();Ss=-1,t=Rr.length}fi=null,bi=!1,clearTimeout(e)}}function vb(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Rr.push(new Eb(e,t)),Rr.length===1&&!bi&&setTimeout(wb,0)}function Eb(e,t){this.fun=e,this.array=t}function St(){}function Sb(e){qd("_linkedBinding")}function Ab(e){qd("dlopen")}function Tb(){return[]}function xb(){return[]}function Ib(e,t){if(!e)throw new Error(t||"assertion error")}function Cb(){return!1}function Rb(){return Kr.now()/1e3}function Pa(e){var t=Math.floor((Date.now()-Kr.now())*.001),r=Kr.now()*.001,n=Math.floor(r)+t,o=Math.floor(r%1*1e9);return e&&(n=n-e[0],o=o-e[1],o<0&&(n--,o+=La)),[n,o]}function Wr(){return Kd}function Ob(e){return[]}var Rr,bi,fi,Ss,lf,uf,cf,ff,hf,df,pf,gf,mf,yf,_f,bf,wf,vf,Ef,Sf,Af,Tf,xf,If,Cf,ls,Rf,Of,kf,Nf,Mf,Pf,Lf,Bf,Df,$f,Uf,Ff,jf,Wf,Hf,Vf,qf,Kf,Yf,zf,Gf,Qf,Xf,Jf,Zf,Kr,Zu,La,eh,th,rh,nh,ih,oh,sh,ah,lh,uh,ch,Kd,HR=_t(()=>{_e(),we(),be(),Rr=[],bi=!1,Ss=-1,Eb.prototype.run=function(){this.fun.apply(null,this.array)},lf="browser",uf="x64",cf="browser",ff={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},hf=["/usr/bin/node"],df=[],pf="v16.8.0",gf={},mf=function(e,t){console.warn((t?t+": ":"")+e)},yf=function(e){qd("binding")},_f=function(e){return 0},bf=function(){return"/"},wf=function(e){},vf={name:"node",sourceUrl:"",headersUrl:"",libUrl:""},Ef=St,Sf=[],Af={},Tf=!1,xf={},If=St,Cf=St,ls=function(){return{}},Rf=ls,Of=ls,kf=St,Nf=St,Mf=St,Pf={},Lf={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},Bf=St,Df=St,$f=St,Uf=St,Ff=St,jf=St,Wf=St,Hf=void 0,Vf=void 0,qf=void 0,Kf=St,Yf=2,zf=1,Gf="/bin/usr/node",Qf=9229,Xf="node",Jf=[],Zf=St,Kr={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0},Kr.now===void 0&&(Zu=Date.now(),Kr.timing&&Kr.timing.navigationStart&&(Zu=Kr.timing.navigationStart),Kr.now=()=>Date.now()-Zu),La=1e9,Pa.bigint=function(e){var t=Pa(e);return typeof BigInt>"u"?t[0]*La+t[1]:BigInt(t[0]*La)+BigInt(t[1])},eh=10,th={},rh=0,nh=Wr,ih=Wr,oh=Wr,sh=Wr,ah=Wr,lh=St,uh=Wr,ch=Wr,Kd={version:pf,versions:gf,arch:uf,platform:cf,release:vf,_rawDebug:Ef,moduleLoadList:Sf,binding:yf,_linkedBinding:Sb,_events:th,_eventsCount:rh,_maxListeners:eh,on:Wr,addListener:nh,once:ih,off:oh,removeListener:sh,removeAllListeners:ah,emit:lh,prependListener:uh,prependOnceListener:ch,listeners:Ob,domain:Af,_exiting:Tf,config:xf,dlopen:Ab,uptime:Rb,_getActiveRequests:Tb,_getActiveHandles:xb,reallyExit:If,_kill:Cf,cpuUsage:ls,resourceUsage:Rf,memoryUsage:Of,kill:kf,exit:Nf,openStdin:Mf,allowedNodeEnvironmentFlags:Pf,assert:Ib,features:Lf,_fatalExceptions:Bf,setUncaughtExceptionCaptureCallback:Df,hasUncaughtExceptionCaptureCallback:Cb,emitWarning:mf,nextTick:vb,_tickCallback:$f,_debugProcess:Uf,_debugEnd:Ff,_startProfilerIdleNotifier:jf,_stopProfilerIdleNotifier:Wf,stdout:Hf,stdin:qf,stderr:Vf,abort:Kf,umask:_f,chdir:wf,cwd:bf,env:ff,title:lf,argv:hf,execArgv:df,pid:Yf,ppid:zf,execPath:Gf,debugPort:Qf,hrtime:Pa,argv0:Xf,_preload_modules:Jf,setSourceMapsEnabled:Zf}}),be=_t(()=>{HR()}),bt={};Li(bt,{Buffer:()=>cl,INSPECT_MAX_BYTES:()=>kb,default:()=>Hr,kMaxLength:()=>Nb});function VR(){if(fh)return to;fh=!0,to.byteLength=a,to.toByteArray=u,to.fromByteArray=p;for(var e=[],t=[],r=typeof Uint8Array<"u"?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,i=n.length;o<i;++o)e[o]=n[o],t[n.charCodeAt(o)]=o;t[45]=62,t[95]=63;function s(m){var _=m.length;if(_%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var b=m.indexOf("=");b===-1&&(b=_);var T=b===_?0:4-b%4;return[b,T]}function a(m){var _=s(m),b=_[0],T=_[1];return(b+T)*3/4-T}function l(m,_,b){return(_+b)*3/4-b}function u(m){var _,b=s(m),T=b[0],N=b[1],R=new r(l(m,T,N)),S=0,D=N>0?T-4:T,U;for(U=0;U<D;U+=4)_=t[m.charCodeAt(U)]<<18|t[m.charCodeAt(U+1)]<<12|t[m.charCodeAt(U+2)]<<6|t[m.charCodeAt(U+3)],R[S++]=_>>16&255,R[S++]=_>>8&255,R[S++]=_&255;return N===2&&(_=t[m.charCodeAt(U)]<<2|t[m.charCodeAt(U+1)]>>4,R[S++]=_&255),N===1&&(_=t[m.charCodeAt(U)]<<10|t[m.charCodeAt(U+1)]<<4|t[m.charCodeAt(U+2)]>>2,R[S++]=_>>8&255,R[S++]=_&255),R}function c(m){return e[m>>18&63]+e[m>>12&63]+e[m>>6&63]+e[m&63]}function d(m,_,b){for(var T,N=[],R=_;R<b;R+=3)T=(m[R]<<16&16711680)+(m[R+1]<<8&65280)+(m[R+2]&255),N.push(c(T));return N.join("")}function p(m){for(var _,b=m.length,T=b%3,N=[],R=16383,S=0,D=b-T;S<D;S+=R)N.push(d(m,S,S+R>D?D:S+R));return T===1?(_=m[b-1],N.push(e[_>>2]+e[_<<4&63]+"==")):T===2&&(_=(m[b-2]<<8)+m[b-1],N.push(e[_>>10]+e[_>>4&63]+e[_<<2&63]+"=")),N.join("")}return to}function qR(){return hh?us:(hh=!0,us.read=function(e,t,r,n,o){var i,s,a=o*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,m=e[t+d];for(d+=p,i=m&(1<<-c)-1,m>>=-c,c+=a;c>0;i=i*256+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=s*256+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:(m?-1:1)*(1/0);s=s+Math.pow(2,n),i=i-u}return(m?-1:1)*s*Math.pow(2,i-n)},us.write=function(e,t,r,n,o,i){var s,a,l,u=i*8-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+d>=1?t+=p/l:t+=p*Math.pow(2,1-d),t*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s=s+d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+m]=a&255,m+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+m]=s&255,m+=_,s/=256,u-=8);e[r+m-_]|=b*128},us)}function KR(){if(dh)return vn;dh=!0;let e=VR(),t=qR(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;vn.Buffer=s,vn.SlowBuffer=N,vn.INSPECT_MAX_BYTES=50;let n=2147483647;vn.kMaxLength=n,s.TYPED_ARRAY_SUPPORT=o(),!s.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{let y=new Uint8Array(1),h={foo:function(){return 42}};return Object.setPrototypeOf(h,Uint8Array.prototype),Object.setPrototypeOf(y,h),y.foo()===42}catch{return!1}}Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}});function i(y){if(y>n)throw new RangeError('The value "'+y+'" is invalid for option "size"');let h=new Uint8Array(y);return Object.setPrototypeOf(h,s.prototype),h}function s(y,h,f){if(typeof y=="number"){if(typeof h=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(y)}return a(y,h,f)}s.poolSize=8192;function a(y,h,f){if(typeof y=="string")return d(y,h);if(ArrayBuffer.isView(y))return m(y);if(y==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof y);if(K(y,ArrayBuffer)||y&&K(y.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(K(y,SharedArrayBuffer)||y&&K(y.buffer,SharedArrayBuffer)))return _(y,h,f);if(typeof y=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let g=y.valueOf&&y.valueOf();if(g!=null&&g!==y)return s.from(g,h,f);let w=b(y);if(w)return w;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof y[Symbol.toPrimitive]=="function")return s.from(y[Symbol.toPrimitive]("string"),h,f);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof y)}s.from=function(y,h,f){return a(y,h,f)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array);function l(y){if(typeof y!="number")throw new TypeError('"size" argument must be of type number');if(y<0)throw new RangeError('The value "'+y+'" is invalid for option "size"')}function u(y,h,f){return l(y),y<=0?i(y):h!==void 0?typeof f=="string"?i(y).fill(h,f):i(y).fill(h):i(y)}s.alloc=function(y,h,f){return u(y,h,f)};function c(y){return l(y),i(y<0?0:T(y)|0)}s.allocUnsafe=function(y){return c(y)},s.allocUnsafeSlow=function(y){return c(y)};function d(y,h){if((typeof h!="string"||h==="")&&(h="utf8"),!s.isEncoding(h))throw new TypeError("Unknown encoding: "+h);let f=R(y,h)|0,g=i(f),w=g.write(y,h);return w!==f&&(g=g.slice(0,w)),g}function p(y){let h=y.length<0?0:T(y.length)|0,f=i(h);for(let g=0;g<h;g+=1)f[g]=y[g]&255;return f}function m(y){if(K(y,Uint8Array)){let h=new Uint8Array(y);return _(h.buffer,h.byteOffset,h.byteLength)}return p(y)}function _(y,h,f){if(h<0||y.byteLength<h)throw new RangeError('"offset" is outside of buffer bounds');if(y.byteLength<h+(f||0))throw new RangeError('"length" is outside of buffer bounds');let g;return h===void 0&&f===void 0?g=new Uint8Array(y):f===void 0?g=new Uint8Array(y,h):g=new Uint8Array(y,h,f),Object.setPrototypeOf(g,s.prototype),g}function b(y){if(s.isBuffer(y)){let h=T(y.length)|0,f=i(h);return f.length===0||y.copy(f,0,0,h),f}if(y.length!==void 0)return typeof y.length!="number"||I(y.length)?i(0):p(y);if(y.type==="Buffer"&&Array.isArray(y.data))return p(y.data)}function T(y){if(y>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return y|0}function N(y){return+y!=y&&(y=0),s.alloc(+y)}s.isBuffer=function(y){return y!=null&&y._isBuffer===!0&&y!==s.prototype},s.compare=function(y,h){if(K(y,Uint8Array)&&(y=s.from(y,y.offset,y.byteLength)),K(h,Uint8Array)&&(h=s.from(h,h.offset,h.byteLength)),!s.isBuffer(y)||!s.isBuffer(h))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(y===h)return 0;let f=y.length,g=h.length;for(let w=0,C=Math.min(f,g);w<C;++w)if(y[w]!==h[w]){f=y[w],g=h[w];break}return f<g?-1:g<f?1:0},s.isEncoding=function(y){switch(String(y).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(y,h){if(!Array.isArray(y))throw new TypeError('"list" argument must be an Array of Buffers');if(y.length===0)return s.alloc(0);let f;if(h===void 0)for(h=0,f=0;f<y.length;++f)h+=y[f].length;let g=s.allocUnsafe(h),w=0;for(f=0;f<y.length;++f){let C=y[f];if(K(C,Uint8Array))w+C.length>g.length?(s.isBuffer(C)||(C=s.from(C)),C.copy(g,w)):Uint8Array.prototype.set.call(g,C,w);else if(s.isBuffer(C))C.copy(g,w);else throw new TypeError('"list" argument must be an Array of Buffers');w+=C.length}return g};function R(y,h){if(s.isBuffer(y))return y.length;if(ArrayBuffer.isView(y)||K(y,ArrayBuffer))return y.byteLength;if(typeof y!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof y);let f=y.length,g=arguments.length>2&&arguments[2]===!0;if(!g&&f===0)return 0;let w=!1;for(;;)switch(h){case"ascii":case"latin1":case"binary":return f;case"utf8":case"utf-8":return k(y).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return f*2;case"hex":return f>>>1;case"base64":return te(y).length;default:if(w)return g?-1:k(y).length;h=(""+h).toLowerCase(),w=!0}}s.byteLength=R;function S(y,h,f){let g=!1;if((h===void 0||h<0)&&(h=0),h>this.length||((f===void 0||f>this.length)&&(f=this.length),f<=0)||(f>>>=0,h>>>=0,f<=h))return"";for(y||(y="utf8");;)switch(y){case"hex":return z(this,h,f);case"utf8":case"utf-8":return B(this,h,f);case"ascii":return ue(this,h,f);case"latin1":case"binary":return ae(this,h,f);case"base64":return P(this,h,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return pe(this,h,f);default:if(g)throw new TypeError("Unknown encoding: "+y);y=(y+"").toLowerCase(),g=!0}}s.prototype._isBuffer=!0;function D(y,h,f){let g=y[h];y[h]=y[f],y[f]=g}s.prototype.swap16=function(){let y=this.length;if(y%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let h=0;h<y;h+=2)D(this,h,h+1);return this},s.prototype.swap32=function(){let y=this.length;if(y%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let h=0;h<y;h+=4)D(this,h,h+3),D(this,h+1,h+2);return this},s.prototype.swap64=function(){let y=this.length;if(y%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let h=0;h<y;h+=8)D(this,h,h+7),D(this,h+1,h+6),D(this,h+2,h+5),D(this,h+3,h+4);return this},s.prototype.toString=function(){let y=this.length;return y===0?"":arguments.length===0?B(this,0,y):S.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(y){if(!s.isBuffer(y))throw new TypeError("Argument must be a Buffer");return this===y?!0:s.compare(this,y)===0},s.prototype.inspect=function(){let y="",h=vn.INSPECT_MAX_BYTES;return y=this.toString("hex",0,h).replace(/(.{2})/g,"$1 ").trim(),this.length>h&&(y+=" ... "),"<Buffer "+y+">"},r&&(s.prototype[r]=s.prototype.inspect),s.prototype.compare=function(y,h,f,g,w){if(K(y,Uint8Array)&&(y=s.from(y,y.offset,y.byteLength)),!s.isBuffer(y))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof y);if(h===void 0&&(h=0),f===void 0&&(f=y?y.length:0),g===void 0&&(g=0),w===void 0&&(w=this.length),h<0||f>y.length||g<0||w>this.length)throw new RangeError("out of range index");if(g>=w&&h>=f)return 0;if(g>=w)return-1;if(h>=f)return 1;if(h>>>=0,f>>>=0,g>>>=0,w>>>=0,this===y)return 0;let C=w-g,V=f-h,fe=Math.min(C,V),xe=this.slice(g,w),ke=y.slice(h,f);for(let Te=0;Te<fe;++Te)if(xe[Te]!==ke[Te]){C=xe[Te],V=ke[Te];break}return C<V?-1:V<C?1:0};function U(y,h,f,g,w){if(y.length===0)return-1;if(typeof f=="string"?(g=f,f=0):f>2147483647?f=2147483647:f<-2147483648&&(f=-2147483648),f=+f,I(f)&&(f=w?0:y.length-1),f<0&&(f=y.length+f),f>=y.length){if(w)return-1;f=y.length-1}else if(f<0)if(w)f=0;else return-1;if(typeof h=="string"&&(h=s.from(h,g)),s.isBuffer(h))return h.length===0?-1:x(y,h,f,g,w);if(typeof h=="number")return h=h&255,typeof Uint8Array.prototype.indexOf=="function"?w?Uint8Array.prototype.indexOf.call(y,h,f):Uint8Array.prototype.lastIndexOf.call(y,h,f):x(y,[h],f,g,w);throw new TypeError("val must be string, number or Buffer")}function x(y,h,f,g,w){let C=1,V=y.length,fe=h.length;if(g!==void 0&&(g=String(g).toLowerCase(),g==="ucs2"||g==="ucs-2"||g==="utf16le"||g==="utf-16le")){if(y.length<2||h.length<2)return-1;C=2,V/=2,fe/=2,f/=2}function xe(Te,Oe){return C===1?Te[Oe]:Te.readUInt16BE(Oe*C)}let ke;if(w){let Te=-1;for(ke=f;ke<V;ke++)if(xe(y,ke)===xe(h,Te===-1?0:ke-Te)){if(Te===-1&&(Te=ke),ke-Te+1===fe)return Te*C}else Te!==-1&&(ke-=ke-Te),Te=-1}else for(f+fe>V&&(f=V-fe),ke=f;ke>=0;ke--){let Te=!0;for(let Oe=0;Oe<fe;Oe++)if(xe(y,ke+Oe)!==xe(h,Oe)){Te=!1;break}if(Te)return ke}return-1}s.prototype.includes=function(y,h,f){return this.indexOf(y,h,f)!==-1},s.prototype.indexOf=function(y,h,f){return U(this,y,h,f,!0)},s.prototype.lastIndexOf=function(y,h,f){return U(this,y,h,f,!1)};function L(y,h,f,g){f=Number(f)||0;let w=y.length-f;g?(g=Number(g),g>w&&(g=w)):g=w;let C=h.length;g>C/2&&(g=C/2);let V;for(V=0;V<g;++V){let fe=parseInt(h.substr(V*2,2),16);if(I(fe))return V;y[f+V]=fe}return V}function j(y,h,f,g){return $(k(h,y.length-f),y,f,g)}function Y(y,h,f,g){return $(M(h),y,f,g)}function se(y,h,f,g){return $(te(h),y,f,g)}function re(y,h,f,g){return $(ee(h,y.length-f),y,f,g)}s.prototype.write=function(y,h,f,g){if(h===void 0)g="utf8",f=this.length,h=0;else if(f===void 0&&typeof h=="string")g=h,f=this.length,h=0;else if(isFinite(h))h=h>>>0,isFinite(f)?(f=f>>>0,g===void 0&&(g="utf8")):(g=f,f=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let w=this.length-h;if((f===void 0||f>w)&&(f=w),y.length>0&&(f<0||h<0)||h>this.length)throw new RangeError("Attempt to write outside buffer bounds");g||(g="utf8");let C=!1;for(;;)switch(g){case"hex":return L(this,y,h,f);case"utf8":case"utf-8":return j(this,y,h,f);case"ascii":case"latin1":case"binary":return Y(this,y,h,f);case"base64":return se(this,y,h,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return re(this,y,h,f);default:if(C)throw new TypeError("Unknown encoding: "+g);g=(""+g).toLowerCase(),C=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function P(y,h,f){return h===0&&f===y.length?e.fromByteArray(y):e.fromByteArray(y.slice(h,f))}function B(y,h,f){f=Math.min(y.length,f);let g=[],w=h;for(;w<f;){let C=y[w],V=null,fe=C>239?4:C>223?3:C>191?2:1;if(w+fe<=f){let xe,ke,Te,Oe;switch(fe){case 1:C<128&&(V=C);break;case 2:xe=y[w+1],(xe&192)===128&&(Oe=(C&31)<<6|xe&63,Oe>127&&(V=Oe));break;case 3:xe=y[w+1],ke=y[w+2],(xe&192)===128&&(ke&192)===128&&(Oe=(C&15)<<12|(xe&63)<<6|ke&63,Oe>2047&&(Oe<55296||Oe>57343)&&(V=Oe));break;case 4:xe=y[w+1],ke=y[w+2],Te=y[w+3],(xe&192)===128&&(ke&192)===128&&(Te&192)===128&&(Oe=(C&15)<<18|(xe&63)<<12|(ke&63)<<6|Te&63,Oe>65535&&Oe<1114112&&(V=Oe))}}V===null?(V=65533,fe=1):V>65535&&(V-=65536,g.push(V>>>10&1023|55296),V=56320|V&1023),g.push(V),w+=fe}return ne(g)}let oe=4096;function ne(y){let h=y.length;if(h<=oe)return String.fromCharCode.apply(String,y);let f="",g=0;for(;g<h;)f+=String.fromCharCode.apply(String,y.slice(g,g+=oe));return f}function ue(y,h,f){let g="";f=Math.min(y.length,f);for(let w=h;w<f;++w)g+=String.fromCharCode(y[w]&127);return g}function ae(y,h,f){let g="";f=Math.min(y.length,f);for(let w=h;w<f;++w)g+=String.fromCharCode(y[w]);return g}function z(y,h,f){let g=y.length;(!h||h<0)&&(h=0),(!f||f<0||f>g)&&(f=g);let w="";for(let C=h;C<f;++C)w+=W[y[C]];return w}function pe(y,h,f){let g=y.slice(h,f),w="";for(let C=0;C<g.length-1;C+=2)w+=String.fromCharCode(g[C]+g[C+1]*256);return w}s.prototype.slice=function(y,h){let f=this.length;y=~~y,h=h===void 0?f:~~h,y<0?(y+=f,y<0&&(y=0)):y>f&&(y=f),h<0?(h+=f,h<0&&(h=0)):h>f&&(h=f),h<y&&(h=y);let g=this.subarray(y,h);return Object.setPrototypeOf(g,s.prototype),g};function de(y,h,f){if(y%1!==0||y<0)throw new RangeError("offset is not uint");if(y+h>f)throw new RangeError("Trying to access beyond buffer length")}s.prototype.readUintLE=s.prototype.readUIntLE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=this[y],w=1,C=0;for(;++C<h&&(w*=256);)g+=this[y+C]*w;return g},s.prototype.readUintBE=s.prototype.readUIntBE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=this[y+--h],w=1;for(;h>0&&(w*=256);)g+=this[y+--h]*w;return g},s.prototype.readUint8=s.prototype.readUInt8=function(y,h){return y=y>>>0,h||de(y,1,this.length),this[y]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(y,h){return y=y>>>0,h||de(y,2,this.length),this[y]|this[y+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(y,h){return y=y>>>0,h||de(y,2,this.length),this[y]<<8|this[y+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(y,h){return y=y>>>0,h||de(y,4,this.length),(this[y]|this[y+1]<<8|this[y+2]<<16)+this[y+3]*16777216},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(y,h){return y=y>>>0,h||de(y,4,this.length),this[y]*16777216+(this[y+1]<<16|this[y+2]<<8|this[y+3])},s.prototype.readBigUInt64LE=J(function(y){y=y>>>0,Z(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=h+this[++y]*2**8+this[++y]*2**16+this[++y]*2**24,w=this[++y]+this[++y]*2**8+this[++y]*2**16+f*2**24;return BigInt(g)+(BigInt(w)<<BigInt(32))}),s.prototype.readBigUInt64BE=J(function(y){y=y>>>0,Z(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=h*2**24+this[++y]*2**16+this[++y]*2**8+this[++y],w=this[++y]*2**24+this[++y]*2**16+this[++y]*2**8+f;return(BigInt(g)<<BigInt(32))+BigInt(w)}),s.prototype.readIntLE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=this[y],w=1,C=0;for(;++C<h&&(w*=256);)g+=this[y+C]*w;return w*=128,g>=w&&(g-=Math.pow(2,8*h)),g},s.prototype.readIntBE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=h,w=1,C=this[y+--g];for(;g>0&&(w*=256);)C+=this[y+--g]*w;return w*=128,C>=w&&(C-=Math.pow(2,8*h)),C},s.prototype.readInt8=function(y,h){return y=y>>>0,h||de(y,1,this.length),this[y]&128?(255-this[y]+1)*-1:this[y]},s.prototype.readInt16LE=function(y,h){y=y>>>0,h||de(y,2,this.length);let f=this[y]|this[y+1]<<8;return f&32768?f|4294901760:f},s.prototype.readInt16BE=function(y,h){y=y>>>0,h||de(y,2,this.length);let f=this[y+1]|this[y]<<8;return f&32768?f|4294901760:f},s.prototype.readInt32LE=function(y,h){return y=y>>>0,h||de(y,4,this.length),this[y]|this[y+1]<<8|this[y+2]<<16|this[y+3]<<24},s.prototype.readInt32BE=function(y,h){return y=y>>>0,h||de(y,4,this.length),this[y]<<24|this[y+1]<<16|this[y+2]<<8|this[y+3]},s.prototype.readBigInt64LE=J(function(y){y=y>>>0,Z(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=this[y+4]+this[y+5]*2**8+this[y+6]*2**16+(f<<24);return(BigInt(g)<<BigInt(32))+BigInt(h+this[++y]*2**8+this[++y]*2**16+this[++y]*2**24)}),s.prototype.readBigInt64BE=J(function(y){y=y>>>0,Z(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=(h<<24)+this[++y]*2**16+this[++y]*2**8+this[++y];return(BigInt(g)<<BigInt(32))+BigInt(this[++y]*2**24+this[++y]*2**16+this[++y]*2**8+f)}),s.prototype.readFloatLE=function(y,h){return y=y>>>0,h||de(y,4,this.length),t.read(this,y,!0,23,4)},s.prototype.readFloatBE=function(y,h){return y=y>>>0,h||de(y,4,this.length),t.read(this,y,!1,23,4)},s.prototype.readDoubleLE=function(y,h){return y=y>>>0,h||de(y,8,this.length),t.read(this,y,!0,52,8)},s.prototype.readDoubleBE=function(y,h){return y=y>>>0,h||de(y,8,this.length),t.read(this,y,!1,52,8)};function ge(y,h,f,g,w,C){if(!s.isBuffer(y))throw new TypeError('"buffer" argument must be a Buffer instance');if(h>w||h<C)throw new RangeError('"value" argument is out of bounds');if(f+g>y.length)throw new RangeError("Index out of range")}s.prototype.writeUintLE=s.prototype.writeUIntLE=function(y,h,f,g){if(y=+y,h=h>>>0,f=f>>>0,!g){let V=Math.pow(2,8*f)-1;ge(this,y,h,f,V,0)}let w=1,C=0;for(this[h]=y&255;++C<f&&(w*=256);)this[h+C]=y/w&255;return h+f},s.prototype.writeUintBE=s.prototype.writeUIntBE=function(y,h,f,g){if(y=+y,h=h>>>0,f=f>>>0,!g){let V=Math.pow(2,8*f)-1;ge(this,y,h,f,V,0)}let w=f-1,C=1;for(this[h+w]=y&255;--w>=0&&(C*=256);)this[h+w]=y/C&255;return h+f},s.prototype.writeUint8=s.prototype.writeUInt8=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,1,255,0),this[h]=y&255,h+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,65535,0),this[h]=y&255,this[h+1]=y>>>8,h+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,65535,0),this[h]=y>>>8,this[h+1]=y&255,h+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,4294967295,0),this[h+3]=y>>>24,this[h+2]=y>>>16,this[h+1]=y>>>8,this[h]=y&255,h+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,4294967295,0),this[h]=y>>>24,this[h+1]=y>>>16,this[h+2]=y>>>8,this[h+3]=y&255,h+4};function O(y,h,f,g,w){ce(h,g,w,y,f,7);let C=Number(h&BigInt(4294967295));y[f++]=C,C=C>>8,y[f++]=C,C=C>>8,y[f++]=C,C=C>>8,y[f++]=C;let V=Number(h>>BigInt(32)&BigInt(4294967295));return y[f++]=V,V=V>>8,y[f++]=V,V=V>>8,y[f++]=V,V=V>>8,y[f++]=V,f}function ie(y,h,f,g,w){ce(h,g,w,y,f,7);let C=Number(h&BigInt(4294967295));y[f+7]=C,C=C>>8,y[f+6]=C,C=C>>8,y[f+5]=C,C=C>>8,y[f+4]=C;let V=Number(h>>BigInt(32)&BigInt(4294967295));return y[f+3]=V,V=V>>8,y[f+2]=V,V=V>>8,y[f+1]=V,V=V>>8,y[f]=V,f+8}s.prototype.writeBigUInt64LE=J(function(y,h=0){return O(this,y,h,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=J(function(y,h=0){return ie(this,y,h,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(y,h,f,g){if(y=+y,h=h>>>0,!g){let fe=Math.pow(2,8*f-1);ge(this,y,h,f,fe-1,-fe)}let w=0,C=1,V=0;for(this[h]=y&255;++w<f&&(C*=256);)y<0&&V===0&&this[h+w-1]!==0&&(V=1),this[h+w]=(y/C>>0)-V&255;return h+f},s.prototype.writeIntBE=function(y,h,f,g){if(y=+y,h=h>>>0,!g){let fe=Math.pow(2,8*f-1);ge(this,y,h,f,fe-1,-fe)}let w=f-1,C=1,V=0;for(this[h+w]=y&255;--w>=0&&(C*=256);)y<0&&V===0&&this[h+w+1]!==0&&(V=1),this[h+w]=(y/C>>0)-V&255;return h+f},s.prototype.writeInt8=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,1,127,-128),y<0&&(y=255+y+1),this[h]=y&255,h+1},s.prototype.writeInt16LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,32767,-32768),this[h]=y&255,this[h+1]=y>>>8,h+2},s.prototype.writeInt16BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,32767,-32768),this[h]=y>>>8,this[h+1]=y&255,h+2},s.prototype.writeInt32LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,2147483647,-2147483648),this[h]=y&255,this[h+1]=y>>>8,this[h+2]=y>>>16,this[h+3]=y>>>24,h+4},s.prototype.writeInt32BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,2147483647,-2147483648),y<0&&(y=4294967295+y+1),this[h]=y>>>24,this[h+1]=y>>>16,this[h+2]=y>>>8,this[h+3]=y&255,h+4},s.prototype.writeBigInt64LE=J(function(y,h=0){return O(this,y,h,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=J(function(y,h=0){return ie(this,y,h,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function me(y,h,f,g,w,C){if(f+g>y.length)throw new RangeError("Index out of range");if(f<0)throw new RangeError("Index out of range")}function ve(y,h,f,g,w){return h=+h,f=f>>>0,w||me(y,h,f,4),t.write(y,h,f,g,23,4),f+4}s.prototype.writeFloatLE=function(y,h,f){return ve(this,y,h,!0,f)},s.prototype.writeFloatBE=function(y,h,f){return ve(this,y,h,!1,f)};function ye(y,h,f,g,w){return h=+h,f=f>>>0,w||me(y,h,f,8),t.write(y,h,f,g,52,8),f+8}s.prototype.writeDoubleLE=function(y,h,f){return ye(this,y,h,!0,f)},s.prototype.writeDoubleBE=function(y,h,f){return ye(this,y,h,!1,f)},s.prototype.copy=function(y,h,f,g){if(!s.isBuffer(y))throw new TypeError("argument should be a Buffer");if(f||(f=0),!g&&g!==0&&(g=this.length),h>=y.length&&(h=y.length),h||(h=0),g>0&&g<f&&(g=f),g===f||y.length===0||this.length===0)return 0;if(h<0)throw new RangeError("targetStart out of bounds");if(f<0||f>=this.length)throw new RangeError("Index out of range");if(g<0)throw new RangeError("sourceEnd out of bounds");g>this.length&&(g=this.length),y.length-h<g-f&&(g=y.length-h+f);let w=g-f;return this===y&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(h,f,g):Uint8Array.prototype.set.call(y,this.subarray(f,g),h),w},s.prototype.fill=function(y,h,f,g){if(typeof y=="string"){if(typeof h=="string"?(g=h,h=0,f=this.length):typeof f=="string"&&(g=f,f=this.length),g!==void 0&&typeof g!="string")throw new TypeError("encoding must be a string");if(typeof g=="string"&&!s.isEncoding(g))throw new TypeError("Unknown encoding: "+g);if(y.length===1){let C=y.charCodeAt(0);(g==="utf8"&&C<128||g==="latin1")&&(y=C)}}else typeof y=="number"?y=y&255:typeof y=="boolean"&&(y=Number(y));if(h<0||this.length<h||this.length<f)throw new RangeError("Out of range index");if(f<=h)return this;h=h>>>0,f=f===void 0?this.length:f>>>0,y||(y=0);let w;if(typeof y=="number")for(w=h;w<f;++w)this[w]=y;else{let C=s.isBuffer(y)?y:s.from(y,g),V=C.length;if(V===0)throw new TypeError('The value "'+y+'" is invalid for argument "value"');for(w=0;w<f-h;++w)this[w+h]=C[w%V]}return this};let q={};function F(y,h,f){q[y]=class extends f{constructor(){super(),Object.defineProperty(this,"message",{value:h.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${y}]`,this.stack,delete this.name}get code(){return y}set code(g){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:g,writable:!0})}toString(){return`${this.name} [${y}]: ${this.message}`}}}F("ERR_BUFFER_OUT_OF_BOUNDS",function(y){return y?`${y} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),F("ERR_INVALID_ARG_TYPE",function(y,h){return`The "${y}" argument must be of type number. Received type ${typeof h}`},TypeError),F("ERR_OUT_OF_RANGE",function(y,h,f){let g=`The value of "${y}" is out of range.`,w=f;return Number.isInteger(f)&&Math.abs(f)>2**32?w=X(String(f)):typeof f=="bigint"&&(w=String(f),(f>BigInt(2)**BigInt(32)||f<-(BigInt(2)**BigInt(32)))&&(w=X(w)),w+="n"),g+=` It must be ${h}. Received ${w}`,g},RangeError);function X(y){let h="",f=y.length,g=y[0]==="-"?1:0;for(;f>=g+4;f-=3)h=`_${y.slice(f-3,f)}${h}`;return`${y.slice(0,f)}${h}`}function he(y,h,f){Z(h,"offset"),(y[h]===void 0||y[h+f]===void 0)&&v(h,y.length-(f+1))}function ce(y,h,f,g,w,C){if(y>f||y<h){let V=typeof h=="bigint"?"n":"",fe;throw h===0||h===BigInt(0)?fe=`>= 0${V} and < 2${V} ** ${(C+1)*8}${V}`:fe=`>= -(2${V} ** ${(C+1)*8-1}${V}) and < 2 ** ${(C+1)*8-1}${V}`,new q.ERR_OUT_OF_RANGE("value",fe,y)}he(g,w,C)}function Z(y,h){if(typeof y!="number")throw new q.ERR_INVALID_ARG_TYPE(h,"number",y)}function v(y,h,f){throw Math.floor(y)!==y?(Z(y,f),new q.ERR_OUT_OF_RANGE("offset","an integer",y)):h<0?new q.ERR_BUFFER_OUT_OF_BOUNDS:new q.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${h}`,y)}let A=/[^+/0-9A-Za-z-_]/g;function E(y){if(y=y.split("=")[0],y=y.trim().replace(A,""),y.length<2)return"";for(;y.length%4!==0;)y=y+"=";return y}function k(y,h){h=h||1/0;let f,g=y.length,w=null,C=[];for(let V=0;V<g;++V){if(f=y.charCodeAt(V),f>55295&&f<57344){if(!w){if(f>56319){(h-=3)>-1&&C.push(239,191,189);continue}else if(V+1===g){(h-=3)>-1&&C.push(239,191,189);continue}w=f;continue}if(f<56320){(h-=3)>-1&&C.push(239,191,189),w=f;continue}f=(w-55296<<10|f-56320)+65536}else w&&(h-=3)>-1&&C.push(239,191,189);if(w=null,f<128){if((h-=1)<0)break;C.push(f)}else if(f<2048){if((h-=2)<0)break;C.push(f>>6|192,f&63|128)}else if(f<65536){if((h-=3)<0)break;C.push(f>>12|224,f>>6&63|128,f&63|128)}else if(f<1114112){if((h-=4)<0)break;C.push(f>>18|240,f>>12&63|128,f>>6&63|128,f&63|128)}else throw new Error("Invalid code point")}return C}function M(y){let h=[];for(let f=0;f<y.length;++f)h.push(y.charCodeAt(f)&255);return h}function ee(y,h){let f,g,w,C=[];for(let V=0;V<y.length&&!((h-=2)<0);++V)f=y.charCodeAt(V),g=f>>8,w=f%256,C.push(w),C.push(g);return C}function te(y){return e.toByteArray(E(y))}function $(y,h,f,g){let w;for(w=0;w<g&&!(w+f>=h.length||w>=y.length);++w)h[w+f]=y[w];return w}function K(y,h){return y instanceof h||y!=null&&y.constructor!=null&&y.constructor.name!=null&&y.constructor.name===h.name}function I(y){return y!==y}let W=function(){let y="0123456789abcdef",h=new Array(256);for(let f=0;f<16;++f){let g=f*16;for(let w=0;w<16;++w)h[g+w]=y[f]+y[w]}return h}();function J(y){return typeof BigInt>"u"?le:y}function le(){throw new Error("BigInt not supported")}return vn}var to,fh,us,hh,vn,dh,Hr,cl,kb,Nb,wt=_t(()=>{_e(),we(),be(),to={},fh=!1,us={},hh=!1,vn={},dh=!1,Hr=KR(),Hr.Buffer,Hr.SlowBuffer,Hr.INSPECT_MAX_BYTES,Hr.kMaxLength,cl=Hr.Buffer,kb=Hr.INSPECT_MAX_BYTES,Nb=Hr.kMaxLength}),we=_t(()=>{wt()}),YR=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(r){this.aliasToTopic={},this.max=r}put(r,n){return n===0||n>this.max?!1:(this.aliasToTopic[n]=r,this.length=Object.keys(this.aliasToTopic).length,!0)}getTopicByAlias(r){return this.aliasToTopic[r]}clear(){this.aliasToTopic={}}};e.default=t}),ft=Ae((e,t)=>{_e(),we(),be(),t.exports={ArrayIsArray(r){return Array.isArray(r)},ArrayPrototypeIncludes(r,n){return r.includes(n)},ArrayPrototypeIndexOf(r,n){return r.indexOf(n)},ArrayPrototypeJoin(r,n){return r.join(n)},ArrayPrototypeMap(r,n){return r.map(n)},ArrayPrototypePop(r,n){return r.pop(n)},ArrayPrototypePush(r,n){return r.push(n)},ArrayPrototypeSlice(r,n,o){return r.slice(n,o)},Error,FunctionPrototypeCall(r,n,...o){return r.call(n,...o)},FunctionPrototypeSymbolHasInstance(r,n){return Function.prototype[Symbol.hasInstance].call(r,n)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(r,n){return Object.defineProperties(r,n)},ObjectDefineProperty(r,n,o){return Object.defineProperty(r,n,o)},ObjectGetOwnPropertyDescriptor(r,n){return Object.getOwnPropertyDescriptor(r,n)},ObjectKeys(r){return Object.keys(r)},ObjectSetPrototypeOf(r,n){return Object.setPrototypeOf(r,n)},Promise,PromisePrototypeCatch(r,n){return r.catch(n)},PromisePrototypeThen(r,n,o){return r.then(n,o)},PromiseReject(r){return Promise.reject(r)},ReflectApply:Reflect.apply,RegExpPrototypeTest(r,n){return r.test(n)},SafeSet:Set,String,StringPrototypeSlice(r,n,o){return r.slice(n,o)},StringPrototypeToLowerCase(r){return r.toLowerCase()},StringPrototypeToUpperCase(r){return r.toUpperCase()},StringPrototypeTrim(r){return r.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,TypedArrayPrototypeSet(r,n,o){return r.set(n,o)},Uint8Array}}),nn=Ae((e,t)=>{_e(),we(),be();var r=(wt(),ze(bt)),n=Object.getPrototypeOf(async function(){}).constructor,o=globalThis.Blob||r.Blob,i=typeof o<"u"?function(a){return a instanceof o}:function(a){return!1},s=class extends Error{constructor(a){if(!Array.isArray(a))throw new TypeError(`Expected input to be an Array, got ${typeof a}`);let l="";for(let u=0;u<a.length;u++)l+=`    ${a[u].stack}
+`;super(l),this.name="AggregateError",this.errors=a}};t.exports={AggregateError:s,kEmptyObject:Object.freeze({}),once(a){let l=!1;return function(...u){l||(l=!0,a.apply(this,u))}},createDeferredPromise:function(){let a,l;return{promise:new Promise((u,c)=>{a=u,l=c}),resolve:a,reject:l}},promisify(a){return new Promise((l,u)=>{a((c,...d)=>c?u(c):l(...d))})},debuglog(){return function(){}},format(a,...l){return a.replace(/%([sdifj])/g,function(...[u,c]){let d=l.shift();return c==="f"?d.toFixed(6):c==="j"?JSON.stringify(d):c==="s"&&typeof d=="object"?`${d.constructor!==Object?d.constructor.name:""} {}`.trim():d.toString()})},inspect(a){switch(typeof a){case"string":if(a.includes("'"))if(a.includes('"')){if(!a.includes("`")&&!a.includes("${"))return`\`${a}\``}else return`"${a}"`;return`'${a}'`;case"number":return isNaN(a)?"NaN":Object.is(a,-0)?String(a):a;case"bigint":return`${String(a)}n`;case"boolean":case"undefined":return String(a);case"object":return"{}"}},types:{isAsyncFunction(a){return a instanceof n},isArrayBufferView(a){return ArrayBuffer.isView(a)}},isBlob:i},t.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),Yd=Ae((e,t)=>{_e(),we(),be();var{AbortController:r,AbortSignal:n}=typeof self<"u"?self:typeof window<"u"?window:void 0;t.exports=r,t.exports.AbortSignal=n,t.exports.default=r}),Ft=Ae((e,t)=>{_e(),we(),be();var{format:r,inspect:n,AggregateError:o}=nn(),i=globalThis.AggregateError||o,s=Symbol("kIsNodeError"),a=["string","function","number","object","Function","Object","boolean","bigint","symbol"],l=/^([A-Z][a-z0-9]*)+$/,u="__node_internal_",c={};function d(R,S){if(!R)throw new c.ERR_INTERNAL_ASSERTION(S)}function p(R){let S="",D=R.length,U=R[0]==="-"?1:0;for(;D>=U+4;D-=3)S=`_${R.slice(D-3,D)}${S}`;return`${R.slice(0,D)}${S}`}function m(R,S,D){if(typeof S=="function")return d(S.length<=D.length,`Code: ${R}; The provided arguments length (${D.length}) does not match the required ones (${S.length}).`),S(...D);let U=(S.match(/%[dfijoOs]/g)||[]).length;return d(U===D.length,`Code: ${R}; The provided arguments length (${D.length}) does not match the required ones (${U}).`),D.length===0?S:r(S,...D)}function _(R,S,D){D||(D=Error);class U extends D{constructor(...L){super(m(R,S,L))}toString(){return`${this.name} [${R}]: ${this.message}`}}Object.defineProperties(U.prototype,{name:{value:D.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${R}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),U.prototype.code=R,U.prototype[s]=!0,c[R]=U}function b(R){let S=u+R.name;return Object.defineProperty(R,"name",{value:S}),R}function T(R,S){if(R&&S&&R!==S){if(Array.isArray(S.errors))return S.errors.push(R),S;let D=new i([S,R],S.message);return D.code=S.code,D}return R||S}var N=class extends Error{constructor(R="The operation was aborted",S=void 0){if(S!==void 0&&typeof S!="object")throw new c.ERR_INVALID_ARG_TYPE("options","Object",S);super(R,S),this.code="ABORT_ERR",this.name="AbortError"}};_("ERR_ASSERTION","%s",Error),_("ERR_INVALID_ARG_TYPE",(R,S,D)=>{d(typeof R=="string","'name' must be a string"),Array.isArray(S)||(S=[S]);let U="The ";R.endsWith(" argument")?U+=`${R} `:U+=`"${R}" ${R.includes(".")?"property":"argument"} `,U+="must be ";let x=[],L=[],j=[];for(let se of S)d(typeof se=="string","All expected entries have to be of type string"),a.includes(se)?x.push(se.toLowerCase()):l.test(se)?L.push(se):(d(se!=="object",'The value "object" should be written as "Object"'),j.push(se));if(L.length>0){let se=x.indexOf("object");se!==-1&&(x.splice(x,se,1),L.push("Object"))}if(x.length>0){switch(x.length){case 1:U+=`of type ${x[0]}`;break;case 2:U+=`one of type ${x[0]} or ${x[1]}`;break;default:{let se=x.pop();U+=`one of type ${x.join(", ")}, or ${se}`}}(L.length>0||j.length>0)&&(U+=" or ")}if(L.length>0){switch(L.length){case 1:U+=`an instance of ${L[0]}`;break;case 2:U+=`an instance of ${L[0]} or ${L[1]}`;break;default:{let se=L.pop();U+=`an instance of ${L.join(", ")}, or ${se}`}}j.length>0&&(U+=" or ")}switch(j.length){case 0:break;case 1:j[0].toLowerCase()!==j[0]&&(U+="an "),U+=`${j[0]}`;break;case 2:U+=`one of ${j[0]} or ${j[1]}`;break;default:{let se=j.pop();U+=`one of ${j.join(", ")}, or ${se}`}}if(D==null)U+=`. Received ${D}`;else if(typeof D=="function"&&D.name)U+=`. Received function ${D.name}`;else if(typeof D=="object"){var Y;if((Y=D.constructor)!==null&&Y!==void 0&&Y.name)U+=`. Received an instance of ${D.constructor.name}`;else{let se=n(D,{depth:-1});U+=`. Received ${se}`}}else{let se=n(D,{colors:!1});se.length>25&&(se=`${se.slice(0,25)}...`),U+=`. Received type ${typeof D} (${se})`}return U},TypeError),_("ERR_INVALID_ARG_VALUE",(R,S,D="is invalid")=>{let U=n(S);return U.length>128&&(U=U.slice(0,128)+"..."),`The ${R.includes(".")?"property":"argument"} '${R}' ${D}. Received ${U}`},TypeError),_("ERR_INVALID_RETURN_VALUE",(R,S,D)=>{var U;let x=D!=null&&(U=D.constructor)!==null&&U!==void 0&&U.name?`instance of ${D.constructor.name}`:`type ${typeof D}`;return`Expected ${R} to be returned from the "${S}" function but got ${x}.`},TypeError),_("ERR_MISSING_ARGS",(...R)=>{d(R.length>0,"At least one arg needs to be specified");let S,D=R.length;switch(R=(Array.isArray(R)?R:[R]).map(U=>`"${U}"`).join(" or "),D){case 1:S+=`The ${R[0]} argument`;break;case 2:S+=`The ${R[0]} and ${R[1]} arguments`;break;default:{let U=R.pop();S+=`The ${R.join(", ")}, and ${U} arguments`}break}return`${S} must be specified`},TypeError),_("ERR_OUT_OF_RANGE",(R,S,D)=>{d(S,'Missing "range" argument');let U;return Number.isInteger(D)&&Math.abs(D)>2**32?U=p(String(D)):typeof D=="bigint"?(U=String(D),(D>2n**32n||D<-(2n**32n))&&(U=p(U)),U+="n"):U=n(D),`The value of "${R}" is out of range. It must be ${S}. Received ${U}`},RangeError),_("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),_("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),_("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),_("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),_("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),_("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),_("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),_("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),_("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),_("ERR_STREAM_WRITE_AFTER_END","write after end",Error),_("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),t.exports={AbortError:N,aggregateTwoErrors:b(T),hideStackFrames:b,codes:c}}),Zl=Ae((e,t)=>{_e(),we(),be();var{ArrayIsArray:r,ArrayPrototypeIncludes:n,ArrayPrototypeJoin:o,ArrayPrototypeMap:i,NumberIsInteger:s,NumberIsNaN:a,NumberMAX_SAFE_INTEGER:l,NumberMIN_SAFE_INTEGER:u,NumberParseInt:c,ObjectPrototypeHasOwnProperty:d,RegExpPrototypeExec:p,String:m,StringPrototypeToUpperCase:_,StringPrototypeTrim:b}=ft(),{hideStackFrames:T,codes:{ERR_SOCKET_BAD_PORT:N,ERR_INVALID_ARG_TYPE:R,ERR_INVALID_ARG_VALUE:S,ERR_OUT_OF_RANGE:D,ERR_UNKNOWN_SIGNAL:U}}=Ft(),{normalizeEncoding:x}=nn(),{isAsyncFunction:L,isArrayBufferView:j}=nn().types,Y={};function se($){return $===($|0)}function re($){return $===$>>>0}var P=/^[0-7]+$/,B="must be a 32-bit unsigned integer or an octal string";function oe($,K,I){if(typeof $>"u"&&($=I),typeof $=="string"){if(p(P,$)===null)throw new S(K,$,B);$=c($,8)}return ae($,K),$}var ne=T(($,K,I=u,W=l)=>{if(typeof $!="number")throw new R(K,"number",$);if(!s($))throw new D(K,"an integer",$);if($<I||$>W)throw new D(K,`>= ${I} && <= ${W}`,$)}),ue=T(($,K,I=-2147483648,W=2147483647)=>{if(typeof $!="number")throw new R(K,"number",$);if(!s($))throw new D(K,"an integer",$);if($<I||$>W)throw new D(K,`>= ${I} && <= ${W}`,$)}),ae=T(($,K,I=!1)=>{if(typeof $!="number")throw new R(K,"number",$);if(!s($))throw new D(K,"an integer",$);let W=I?1:0,J=4294967295;if($<W||$>J)throw new D(K,`>= ${W} && <= ${J}`,$)});function z($,K){if(typeof $!="string")throw new R(K,"string",$)}function pe($,K,I=void 0,W){if(typeof $!="number")throw new R(K,"number",$);if(I!=null&&$<I||W!=null&&$>W||(I!=null||W!=null)&&a($))throw new D(K,`${I!=null?`>= ${I}`:""}${I!=null&&W!=null?" && ":""}${W!=null?`<= ${W}`:""}`,$)}var de=T(($,K,I)=>{if(!n(I,$)){let W="must be one of: "+o(i(I,J=>typeof J=="string"?`'${J}'`:m(J)),", ");throw new S(K,$,W)}});function ge($,K){if(typeof $!="boolean")throw new R(K,"boolean",$)}function O($,K,I){return $==null||!d($,K)?I:$[K]}var ie=T(($,K,I=null)=>{let W=O(I,"allowArray",!1),J=O(I,"allowFunction",!1);if(!O(I,"nullable",!1)&&$===null||!W&&r($)||typeof $!="object"&&(!J||typeof $!="function"))throw new R(K,"Object",$)}),me=T(($,K)=>{if($!=null&&typeof $!="object"&&typeof $!="function")throw new R(K,"a dictionary",$)}),ve=T(($,K,I=0)=>{if(!r($))throw new R(K,"Array",$);if($.length<I){let W=`must be longer than ${I}`;throw new S(K,$,W)}});function ye($,K){ve($,K);for(let I=0;I<$.length;I++)z($[I],`${K}[${I}]`)}function q($,K){ve($,K);for(let I=0;I<$.length;I++)ge($[I],`${K}[${I}]`)}function F($,K="signal"){if(z($,K),Y[$]===void 0)throw Y[_($)]!==void 0?new U($+" (signals must use all capital letters)"):new U($)}var X=T(($,K="buffer")=>{if(!j($))throw new R(K,["Buffer","TypedArray","DataView"],$)});function he($,K){let I=x(K),W=$.length;if(I==="hex"&&W%2!==0)throw new S("encoding",K,`is invalid for data of length ${W}`)}function ce($,K="Port",I=!0){if(typeof $!="number"&&typeof $!="string"||typeof $=="string"&&b($).length===0||+$!==+$>>>0||$>65535||$===0&&!I)throw new N(K,$,I);return $|0}var Z=T(($,K)=>{if($!==void 0&&($===null||typeof $!="object"||!("aborted"in $)))throw new R(K,"AbortSignal",$)}),v=T(($,K)=>{if(typeof $!="function")throw new R(K,"Function",$)}),A=T(($,K)=>{if(typeof $!="function"||L($))throw new R(K,"Function",$)}),E=T(($,K)=>{if($!==void 0)throw new R(K,"undefined",$)});function k($,K,I){if(!n(I,$))throw new R(K,`('${o(I,"|")}')`,$)}var M=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function ee($,K){if(typeof $>"u"||!p(M,$))throw new S(K,$,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function te($){if(typeof $=="string")return ee($,"hints"),$;if(r($)){let K=$.length,I="";if(K===0)return I;for(let W=0;W<K;W++){let J=$[W];ee(J,"hints"),I+=J,W!==K-1&&(I+=", ")}return I}throw new S("hints",$,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}t.exports={isInt32:se,isUint32:re,parseFileMode:oe,validateArray:ve,validateStringArray:ye,validateBooleanArray:q,validateBoolean:ge,validateBuffer:X,validateDictionary:me,validateEncoding:he,validateFunction:v,validateInt32:ue,validateInteger:ne,validateNumber:pe,validateObject:ie,validateOneOf:de,validatePlainFunction:A,validatePort:ce,validateSignalName:F,validateString:z,validateUint32:ae,validateUndefined:E,validateUnion:k,validateAbortSignal:Z,validateLinkHeaderValue:te}}),Bi=Ae((e,t)=>{_e(),we(),be();var r=t.exports={},n,o;function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?n=setTimeout:n=i}catch{n=i}try{typeof clearTimeout=="function"?o=clearTimeout:o=s}catch{o=s}})();function a(N){if(n===setTimeout)return setTimeout(N,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(N,0);try{return n(N,0)}catch{try{return n.call(null,N,0)}catch{return n.call(this,N,0)}}}function l(N){if(o===clearTimeout)return clearTimeout(N);if((o===s||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(N);try{return o(N)}catch{try{return o.call(null,N)}catch{return o.call(this,N)}}}var u=[],c=!1,d,p=-1;function m(){!c||!d||(c=!1,d.length?u=d.concat(u):p=-1,u.length&&_())}function _(){if(!c){var N=a(m);c=!0;for(var R=u.length;R;){for(d=u,u=[];++p<R;)d&&d[p].run();p=-1,R=u.length}d=null,c=!1,l(N)}}r.nextTick=function(N){var R=new Array(arguments.length-1);if(arguments.length>1)for(var S=1;S<arguments.length;S++)R[S-1]=arguments[S];u.push(new b(N,R)),u.length===1&&!c&&a(_)};function b(N,R){this.fun=N,this.array=R}b.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={};function T(){}r.on=T,r.addListener=T,r.once=T,r.off=T,r.removeListener=T,r.removeAllListeners=T,r.emit=T,r.prependListener=T,r.prependOnceListener=T,r.listeners=function(N){return[]},r.binding=function(N){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(N){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}}),pn=Ae((e,t)=>{_e(),we(),be();var{Symbol:r,SymbolAsyncIterator:n,SymbolIterator:o,SymbolFor:i}=ft(),s=r("kDestroyed"),a=r("kIsErrored"),l=r("kIsReadable"),u=r("kIsDisturbed"),c=i("nodejs.webstream.isClosedPromise"),d=i("nodejs.webstream.controllerErrorFunction");function p(O,ie=!1){var me;return!!(O&&typeof O.pipe=="function"&&typeof O.on=="function"&&(!ie||typeof O.pause=="function"&&typeof O.resume=="function")&&(!O._writableState||((me=O._readableState)===null||me===void 0?void 0:me.readable)!==!1)&&(!O._writableState||O._readableState))}function m(O){var ie;return!!(O&&typeof O.write=="function"&&typeof O.on=="function"&&(!O._readableState||((ie=O._writableState)===null||ie===void 0?void 0:ie.writable)!==!1))}function _(O){return!!(O&&typeof O.pipe=="function"&&O._readableState&&typeof O.on=="function"&&typeof O.write=="function")}function b(O){return O&&(O._readableState||O._writableState||typeof O.write=="function"&&typeof O.on=="function"||typeof O.pipe=="function"&&typeof O.on=="function")}function T(O){return!!(O&&!b(O)&&typeof O.pipeThrough=="function"&&typeof O.getReader=="function"&&typeof O.cancel=="function")}function N(O){return!!(O&&!b(O)&&typeof O.getWriter=="function"&&typeof O.abort=="function")}function R(O){return!!(O&&!b(O)&&typeof O.readable=="object"&&typeof O.writable=="object")}function S(O){return T(O)||N(O)||R(O)}function D(O,ie){return O==null?!1:ie===!0?typeof O[n]=="function":ie===!1?typeof O[o]=="function":typeof O[n]=="function"||typeof O[o]=="function"}function U(O){if(!b(O))return null;let ie=O._writableState,me=O._readableState,ve=ie||me;return!!(O.destroyed||O[s]||ve!=null&&ve.destroyed)}function x(O){if(!m(O))return null;if(O.writableEnded===!0)return!0;let ie=O._writableState;return ie!=null&&ie.errored?!1:typeof(ie==null?void 0:ie.ended)!="boolean"?null:ie.ended}function L(O,ie){if(!m(O))return null;if(O.writableFinished===!0)return!0;let me=O._writableState;return me!=null&&me.errored?!1:typeof(me==null?void 0:me.finished)!="boolean"?null:!!(me.finished||ie===!1&&me.ended===!0&&me.length===0)}function j(O){if(!p(O))return null;if(O.readableEnded===!0)return!0;let ie=O._readableState;return!ie||ie.errored?!1:typeof(ie==null?void 0:ie.ended)!="boolean"?null:ie.ended}function Y(O,ie){if(!p(O))return null;let me=O._readableState;return me!=null&&me.errored?!1:typeof(me==null?void 0:me.endEmitted)!="boolean"?null:!!(me.endEmitted||ie===!1&&me.ended===!0&&me.length===0)}function se(O){return O&&O[l]!=null?O[l]:typeof(O==null?void 0:O.readable)!="boolean"?null:U(O)?!1:p(O)&&O.readable&&!Y(O)}function re(O){return typeof(O==null?void 0:O.writable)!="boolean"?null:U(O)?!1:m(O)&&O.writable&&!x(O)}function P(O,ie){return b(O)?U(O)?!0:!((ie==null?void 0:ie.readable)!==!1&&se(O)||(ie==null?void 0:ie.writable)!==!1&&re(O)):null}function B(O){var ie,me;return b(O)?O.writableErrored?O.writableErrored:(ie=(me=O._writableState)===null||me===void 0?void 0:me.errored)!==null&&ie!==void 0?ie:null:null}function oe(O){var ie,me;return b(O)?O.readableErrored?O.readableErrored:(ie=(me=O._readableState)===null||me===void 0?void 0:me.errored)!==null&&ie!==void 0?ie:null:null}function ne(O){if(!b(O))return null;if(typeof O.closed=="boolean")return O.closed;let ie=O._writableState,me=O._readableState;return typeof(ie==null?void 0:ie.closed)=="boolean"||typeof(me==null?void 0:me.closed)=="boolean"?(ie==null?void 0:ie.closed)||(me==null?void 0:me.closed):typeof O._closed=="boolean"&&ue(O)?O._closed:null}function ue(O){return typeof O._closed=="boolean"&&typeof O._defaultKeepAlive=="boolean"&&typeof O._removedConnection=="boolean"&&typeof O._removedContLen=="boolean"}function ae(O){return typeof O._sent100=="boolean"&&ue(O)}function z(O){var ie;return typeof O._consuming=="boolean"&&typeof O._dumped=="boolean"&&((ie=O.req)===null||ie===void 0?void 0:ie.upgradeOrConnect)===void 0}function pe(O){if(!b(O))return null;let ie=O._writableState,me=O._readableState,ve=ie||me;return!ve&&ae(O)||!!(ve&&ve.autoDestroy&&ve.emitClose&&ve.closed===!1)}function de(O){var ie;return!!(O&&((ie=O[u])!==null&&ie!==void 0?ie:O.readableDidRead||O.readableAborted))}function ge(O){var ie,me,ve,ye,q,F,X,he,ce,Z;return!!(O&&((ie=(me=(ve=(ye=(q=(F=O[a])!==null&&F!==void 0?F:O.readableErrored)!==null&&q!==void 0?q:O.writableErrored)!==null&&ye!==void 0?ye:(X=O._readableState)===null||X===void 0?void 0:X.errorEmitted)!==null&&ve!==void 0?ve:(he=O._writableState)===null||he===void 0?void 0:he.errorEmitted)!==null&&me!==void 0?me:(ce=O._readableState)===null||ce===void 0?void 0:ce.errored)!==null&&ie!==void 0?ie:!((Z=O._writableState)===null||Z===void 0)&&Z.errored))}t.exports={kDestroyed:s,isDisturbed:de,kIsDisturbed:u,isErrored:ge,kIsErrored:a,isReadable:se,kIsReadable:l,kIsClosedPromise:c,kControllerErrorFunction:d,isClosed:ne,isDestroyed:U,isDuplexNodeStream:_,isFinished:P,isIterable:D,isReadableNodeStream:p,isReadableStream:T,isReadableEnded:j,isReadableFinished:Y,isReadableErrored:oe,isNodeStream:b,isWebStream:S,isWritable:re,isWritableNodeStream:m,isWritableStream:N,isWritableEnded:x,isWritableFinished:L,isWritableErrored:B,isServerRequest:z,isServerResponse:ae,willEmitClose:pe,isTransformStream:R}}),Wn=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{AbortError:n,codes:o}=Ft(),{ERR_INVALID_ARG_TYPE:i,ERR_STREAM_PREMATURE_CLOSE:s}=o,{kEmptyObject:a,once:l}=nn(),{validateAbortSignal:u,validateFunction:c,validateObject:d,validateBoolean:p}=Zl(),{Promise:m,PromisePrototypeThen:_}=ft(),{isClosed:b,isReadable:T,isReadableNodeStream:N,isReadableStream:R,isReadableFinished:S,isReadableErrored:D,isWritable:U,isWritableNodeStream:x,isWritableStream:L,isWritableFinished:j,isWritableErrored:Y,isNodeStream:se,willEmitClose:re,kIsClosedPromise:P}=pn();function B(z){return z.setHeader&&typeof z.abort=="function"}var oe=()=>{};function ne(z,pe,de){var ge,O;if(arguments.length===2?(de=pe,pe=a):pe==null?pe=a:d(pe,"options"),c(de,"callback"),u(pe.signal,"options.signal"),de=l(de),R(z)||L(z))return ue(z,pe,de);if(!se(z))throw new i("stream",["ReadableStream","WritableStream","Stream"],z);let ie=(ge=pe.readable)!==null&&ge!==void 0?ge:N(z),me=(O=pe.writable)!==null&&O!==void 0?O:x(z),ve=z._writableState,ye=z._readableState,q=()=>{z.writable||he()},F=re(z)&&N(z)===ie&&x(z)===me,X=j(z,!1),he=()=>{X=!0,z.destroyed&&(F=!1),!(F&&(!z.readable||ie))&&(!ie||ce)&&de.call(z)},ce=S(z,!1),Z=()=>{ce=!0,z.destroyed&&(F=!1),!(F&&(!z.writable||me))&&(!me||X)&&de.call(z)},v=te=>{de.call(z,te)},A=b(z),E=()=>{A=!0;let te=Y(z)||D(z);if(te&&typeof te!="boolean")return de.call(z,te);if(ie&&!ce&&N(z,!0)&&!S(z,!1))return de.call(z,new s);if(me&&!X&&!j(z,!1))return de.call(z,new s);de.call(z)},k=()=>{A=!0;let te=Y(z)||D(z);if(te&&typeof te!="boolean")return de.call(z,te);de.call(z)},M=()=>{z.req.on("finish",he)};B(z)?(z.on("complete",he),F||z.on("abort",E),z.req?M():z.on("request",M)):me&&!ve&&(z.on("end",q),z.on("close",q)),!F&&typeof z.aborted=="boolean"&&z.on("aborted",E),z.on("end",Z),z.on("finish",he),pe.error!==!1&&z.on("error",v),z.on("close",E),A?r.nextTick(E):ve!=null&&ve.errorEmitted||ye!=null&&ye.errorEmitted?F||r.nextTick(k):(!ie&&(!F||T(z))&&(X||U(z)===!1)||!me&&(!F||U(z))&&(ce||T(z)===!1)||ye&&z.req&&z.aborted)&&r.nextTick(k);let ee=()=>{de=oe,z.removeListener("aborted",E),z.removeListener("complete",he),z.removeListener("abort",E),z.removeListener("request",M),z.req&&z.req.removeListener("finish",he),z.removeListener("end",q),z.removeListener("close",q),z.removeListener("finish",he),z.removeListener("end",Z),z.removeListener("error",v),z.removeListener("close",E)};if(pe.signal&&!A){let te=()=>{let $=de;ee(),$.call(z,new n(void 0,{cause:pe.signal.reason}))};if(pe.signal.aborted)r.nextTick(te);else{let $=de;de=l((...K)=>{pe.signal.removeEventListener("abort",te),$.apply(z,K)}),pe.signal.addEventListener("abort",te)}}return ee}function ue(z,pe,de){let ge=!1,O=oe;if(pe.signal)if(O=()=>{ge=!0,de.call(z,new n(void 0,{cause:pe.signal.reason}))},pe.signal.aborted)r.nextTick(O);else{let me=de;de=l((...ve)=>{pe.signal.removeEventListener("abort",O),me.apply(z,ve)}),pe.signal.addEventListener("abort",O)}let ie=(...me)=>{ge||r.nextTick(()=>de.apply(z,me))};return _(z[P].promise,ie,ie),oe}function ae(z,pe){var de;let ge=!1;return pe===null&&(pe=a),(de=pe)!==null&&de!==void 0&&de.cleanup&&(p(pe.cleanup,"cleanup"),ge=pe.cleanup),new m((O,ie)=>{let me=ne(z,pe,ve=>{ge&&me(),ve?ie(ve):O()})})}t.exports=ne,t.exports.finished=ae}),jo=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{aggregateTwoErrors:n,codes:{ERR_MULTIPLE_CALLBACK:o},AbortError:i}=Ft(),{Symbol:s}=ft(),{kDestroyed:a,isDestroyed:l,isFinished:u,isServerRequest:c}=pn(),d=s("kDestroy"),p=s("kConstruct");function m(P,B,oe){P&&(P.stack,B&&!B.errored&&(B.errored=P),oe&&!oe.errored&&(oe.errored=P))}function _(P,B){let oe=this._readableState,ne=this._writableState,ue=ne||oe;return ne!=null&&ne.destroyed||oe!=null&&oe.destroyed?(typeof B=="function"&&B(),this):(m(P,ne,oe),ne&&(ne.destroyed=!0),oe&&(oe.destroyed=!0),ue.constructed?b(this,P,B):this.once(d,function(ae){b(this,n(ae,P),B)}),this)}function b(P,B,oe){let ne=!1;function ue(ae){if(ne)return;ne=!0;let z=P._readableState,pe=P._writableState;m(ae,pe,z),pe&&(pe.closed=!0),z&&(z.closed=!0),typeof oe=="function"&&oe(ae),ae?r.nextTick(T,P,ae):r.nextTick(N,P)}try{P._destroy(B||null,ue)}catch(ae){ue(ae)}}function T(P,B){R(P,B),N(P)}function N(P){let B=P._readableState,oe=P._writableState;oe&&(oe.closeEmitted=!0),B&&(B.closeEmitted=!0),(oe!=null&&oe.emitClose||B!=null&&B.emitClose)&&P.emit("close")}function R(P,B){let oe=P._readableState,ne=P._writableState;ne!=null&&ne.errorEmitted||oe!=null&&oe.errorEmitted||(ne&&(ne.errorEmitted=!0),oe&&(oe.errorEmitted=!0),P.emit("error",B))}function S(){let P=this._readableState,B=this._writableState;P&&(P.constructed=!0,P.closed=!1,P.closeEmitted=!1,P.destroyed=!1,P.errored=null,P.errorEmitted=!1,P.reading=!1,P.ended=P.readable===!1,P.endEmitted=P.readable===!1),B&&(B.constructed=!0,B.destroyed=!1,B.closed=!1,B.closeEmitted=!1,B.errored=null,B.errorEmitted=!1,B.finalCalled=!1,B.prefinished=!1,B.ended=B.writable===!1,B.ending=B.writable===!1,B.finished=B.writable===!1)}function D(P,B,oe){let ne=P._readableState,ue=P._writableState;if(ue!=null&&ue.destroyed||ne!=null&&ne.destroyed)return this;ne!=null&&ne.autoDestroy||ue!=null&&ue.autoDestroy?P.destroy(B):B&&(B.stack,ue&&!ue.errored&&(ue.errored=B),ne&&!ne.errored&&(ne.errored=B),oe?r.nextTick(R,P,B):R(P,B))}function U(P,B){if(typeof P._construct!="function")return;let oe=P._readableState,ne=P._writableState;oe&&(oe.constructed=!1),ne&&(ne.constructed=!1),P.once(p,B),!(P.listenerCount(p)>1)&&r.nextTick(x,P)}function x(P){let B=!1;function oe(ne){if(B){D(P,ne??new o);return}B=!0;let ue=P._readableState,ae=P._writableState,z=ae||ue;ue&&(ue.constructed=!0),ae&&(ae.constructed=!0),z.destroyed?P.emit(d,ne):ne?D(P,ne,!0):r.nextTick(L,P)}try{P._construct(ne=>{r.nextTick(oe,ne)})}catch(ne){r.nextTick(oe,ne)}}function L(P){P.emit(p)}function j(P){return(P==null?void 0:P.setHeader)&&typeof P.abort=="function"}function Y(P){P.emit("close")}function se(P,B){P.emit("error",B),r.nextTick(Y,P)}function re(P,B){!P||l(P)||(!B&&!u(P)&&(B=new i),c(P)?(P.socket=null,P.destroy(B)):j(P)?P.abort():j(P.req)?P.req.abort():typeof P.destroy=="function"?P.destroy(B):typeof P.close=="function"?P.close():B?r.nextTick(se,P,B):r.nextTick(Y,P),P.destroyed||(P[a]=!0))}t.exports={construct:U,destroyer:re,destroy:_,undestroy:S,errorOrDestroy:D}});function Ke(){Ke.init.call(this)}function Ba(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function Mb(e){return e._maxListeners===void 0?Ke.defaultMaxListeners:e._maxListeners}function em(e,t,r,n){var o,i,s,a;if(Ba(r),(i=e._events)===void 0?(i=e._events=Object.create(null),e._eventsCount=0):(i.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),s=i[t]),s===void 0)s=i[t]=r,++e._eventsCount;else if(typeof s=="function"?s=i[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(o=Mb(e))>0&&s.length>o&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,a=l,console&&console.warn&&console.warn(a)}return e}function zR(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function tm(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=zR.bind(n);return o.listener=r,n.wrapFn=o,o}function rm(e,t,r){var n=e._events;if(n===void 0)return[];var o=n[t];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?function(i){for(var s=new Array(i.length),a=0;a<s.length;++a)s[a]=i[a].listener||i[a];return s}(o):Pb(o,o.length)}function nm(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}function Pb(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}var im,om,zn,ec,tc,rc,Ht,sm=_t(()=>{_e(),we(),be(),zn=typeof Reflect=="object"?Reflect:null,ec=zn&&typeof zn.apply=="function"?zn.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)},om=zn&&typeof zn.ownKeys=="function"?zn.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)},tc=Number.isNaN||function(e){return e!=e},im=Ke,Ke.EventEmitter=Ke,Ke.prototype._events=void 0,Ke.prototype._eventsCount=0,Ke.prototype._maxListeners=void 0,rc=10,Object.defineProperty(Ke,"defaultMaxListeners",{enumerable:!0,get:function(){return rc},set:function(e){if(typeof e!="number"||e<0||tc(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");rc=e}}),Ke.init=function(){this._events!==void 0&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ke.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||tc(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},Ke.prototype.getMaxListeners=function(){return Mb(this)},Ke.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n=e==="error",o=this._events;if(o!==void 0)n=n&&o.error===void 0;else if(!n)return!1;if(n){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var s=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw s.context=i,s}var a=o[e];if(a===void 0)return!1;if(typeof a=="function")ec(a,this,t);else{var l=a.length,u=Pb(a,l);for(r=0;r<l;++r)ec(u[r],this,t)}return!0},Ke.prototype.addListener=function(e,t){return em(this,e,t,!1)},Ke.prototype.on=Ke.prototype.addListener,Ke.prototype.prependListener=function(e,t){return em(this,e,t,!0)},Ke.prototype.once=function(e,t){return Ba(t),this.on(e,tm(this,e,t)),this},Ke.prototype.prependOnceListener=function(e,t){return Ba(t),this.prependListener(e,tm(this,e,t)),this},Ke.prototype.removeListener=function(e,t){var r,n,o,i,s;if(Ba(t),(n=this._events)===void 0)return this;if((r=n[e])===void 0)return this;if(r===t||r.listener===t)--this._eventsCount==0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if(typeof r!="function"){for(o=-1,i=r.length-1;i>=0;i--)if(r[i]===t||r[i].listener===t){s=r[i].listener,o=i;break}if(o<0)return this;o===0?r.shift():function(a,l){for(;l+1<a.length;l++)a[l]=a[l+1];a.pop()}(r,o),r.length===1&&(n[e]=r[0]),n.removeListener!==void 0&&this.emit("removeListener",e,s||t)}return this},Ke.prototype.off=Ke.prototype.removeListener,Ke.prototype.removeAllListeners=function(e){var t,r,n;if((r=this._events)===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var o,i=Object.keys(r);for(n=0;n<i.length;++n)(o=i[n])!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(typeof(t=r[e])=="function")this.removeListener(e,t);else if(t!==void 0)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},Ke.prototype.listeners=function(e){return rm(this,e,!0)},Ke.prototype.rawListeners=function(e){return rm(this,e,!1)},Ke.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):nm.call(e,t)},Ke.prototype.listenerCount=nm,Ke.prototype.eventNames=function(){return this._eventsCount>0?om(this._events):[]},Ht=im,Ht.EventEmitter,Ht.defaultMaxListeners,Ht.init,Ht.listenerCount,Ht.EventEmitter,Ht.defaultMaxListeners,Ht.init,Ht.listenerCount}),Di={};Li(Di,{EventEmitter:()=>Lb,default:()=>Ht,defaultMaxListeners:()=>Bb,init:()=>Db,listenerCount:()=>$b,on:()=>Ub,once:()=>Fb});var Lb,Bb,Db,$b,Ub,Fb,Wo=_t(()=>{_e(),we(),be(),sm(),sm(),Ht.once=function(e,t){return new Promise((r,n)=>{function o(...s){i!==void 0&&e.removeListener("error",i),r(s)}let i;t!=="error"&&(i=s=>{e.removeListener(name,o),n(s)},e.once("error",i)),e.once(t,o)})},Ht.on=function(e,t){let r=[],n=[],o=null,i=!1,s={async next(){let u=r.shift();if(u)return createIterResult(u,!1);if(o){let c=Promise.reject(o);return o=null,c}return i?createIterResult(void 0,!0):new Promise((c,d)=>n.push({resolve:c,reject:d}))},async return(){e.removeListener(t,a),e.removeListener("error",l),i=!0;for(let u of n)u.resolve(createIterResult(void 0,!0));return createIterResult(void 0,!0)},throw(u){o=u,e.removeListener(t,a),e.removeListener("error",l)},[Symbol.asyncIterator](){return this}};return e.on(t,a),e.on("error",l),s;function a(...u){let c=n.shift();c?c.resolve(createIterResult(u,!1)):r.push(u)}function l(u){i=!0;let c=n.shift();c?c.reject(u):o=u,s.return()}},{EventEmitter:Lb,defaultMaxListeners:Bb,init:Db,listenerCount:$b,on:Ub,once:Fb}=Ht}),zd=Ae((e,t)=>{_e(),we(),be();var{ArrayIsArray:r,ObjectSetPrototypeOf:n}=ft(),{EventEmitter:o}=(Wo(),ze(Di));function i(a){o.call(this,a)}n(i.prototype,o.prototype),n(i,o),i.prototype.pipe=function(a,l){let u=this;function c(N){a.writable&&a.write(N)===!1&&u.pause&&u.pause()}u.on("data",c);function d(){u.readable&&u.resume&&u.resume()}a.on("drain",d),!a._isStdio&&(!l||l.end!==!1)&&(u.on("end",m),u.on("close",_));let p=!1;function m(){p||(p=!0,a.end())}function _(){p||(p=!0,typeof a.destroy=="function"&&a.destroy())}function b(N){T(),o.listenerCount(this,"error")===0&&this.emit("error",N)}s(u,"error",b),s(a,"error",b);function T(){u.removeListener("data",c),a.removeListener("drain",d),u.removeListener("end",m),u.removeListener("close",_),u.removeListener("error",b),a.removeListener("error",b),u.removeListener("end",T),u.removeListener("close",T),a.removeListener("close",T)}return u.on("end",T),u.on("close",T),a.on("close",T),a.emit("pipe",u),a};function s(a,l,u){if(typeof a.prependListener=="function")return a.prependListener(l,u);!a._events||!a._events[l]?a.on(l,u):r(a._events[l])?a._events[l].unshift(u):a._events[l]=[u,a._events[l]]}t.exports={Stream:i,prependListener:s}}),eu=Ae((e,t)=>{_e(),we(),be();var{AbortError:r,codes:n}=Ft(),{isNodeStream:o,isWebStream:i,kControllerErrorFunction:s}=pn(),a=Wn(),{ERR_INVALID_ARG_TYPE:l}=n,u=(c,d)=>{if(typeof c!="object"||!("aborted"in c))throw new l(d,"AbortSignal",c)};t.exports.addAbortSignal=function(c,d){if(u(c,"signal"),!o(d)&&!i(d))throw new l("stream",["ReadableStream","WritableStream","Stream"],d);return t.exports.addAbortSignalNoValidate(c,d)},t.exports.addAbortSignalNoValidate=function(c,d){if(typeof c!="object"||!("aborted"in c))return d;let p=o(d)?()=>{d.destroy(new r(void 0,{cause:c.reason}))}:()=>{d[s](new r(void 0,{cause:c.reason}))};return c.aborted?p():(c.addEventListener("abort",p),a(d,()=>c.removeEventListener("abort",p))),d}}),GR=Ae((e,t)=>{_e(),we(),be();var{StringPrototypeSlice:r,SymbolIterator:n,TypedArrayPrototypeSet:o,Uint8Array:i}=ft(),{Buffer:s}=(wt(),ze(bt)),{inspect:a}=nn();t.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(l){let u={data:l,next:null};this.length>0?this.tail.next=u:this.head=u,this.tail=u,++this.length}unshift(l){let u={data:l,next:this.head};this.length===0&&(this.tail=u),this.head=u,++this.length}shift(){if(this.length===0)return;let l=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,l}clear(){this.head=this.tail=null,this.length=0}join(l){if(this.length===0)return"";let u=this.head,c=""+u.data;for(;(u=u.next)!==null;)c+=l+u.data;return c}concat(l){if(this.length===0)return s.alloc(0);let u=s.allocUnsafe(l>>>0),c=this.head,d=0;for(;c;)o(u,c.data,d),d+=c.data.length,c=c.next;return u}consume(l,u){let c=this.head.data;if(l<c.length){let d=c.slice(0,l);return this.head.data=c.slice(l),d}return l===c.length?this.shift():u?this._getString(l):this._getBuffer(l)}first(){return this.head.data}*[n](){for(let l=this.head;l;l=l.next)yield l.data}_getString(l){let u="",c=this.head,d=0;do{let p=c.data;if(l>p.length)u+=p,l-=p.length;else{l===p.length?(u+=p,++d,c.next?this.head=c.next:this.head=this.tail=null):(u+=r(p,0,l),this.head=c,c.data=r(p,l));break}++d}while((c=c.next)!==null);return this.length-=d,u}_getBuffer(l){let u=s.allocUnsafe(l),c=l,d=this.head,p=0;do{let m=d.data;if(l>m.length)o(u,m,c-l),l-=m.length;else{l===m.length?(o(u,m,c-l),++p,d.next?this.head=d.next:this.head=this.tail=null):(o(u,new i(m.buffer,m.byteOffset,l),c-l),this.head=d,d.data=m.slice(l));break}++p}while((d=d.next)!==null);return this.length-=p,u}[Symbol.for("nodejs.util.inspect.custom")](l,u){return a(this,{...u,depth:0,customInspect:!1})}}}),Gd=Ae((e,t)=>{_e(),we(),be();var{MathFloor:r,NumberIsInteger:n}=ft(),{ERR_INVALID_ARG_VALUE:o}=Ft().codes;function i(l,u,c){return l.highWaterMark!=null?l.highWaterMark:u?l[c]:null}function s(l){return l?16:16*1024}function a(l,u,c,d){let p=i(u,d,c);if(p!=null){if(!n(p)||p<0){let m=d?`options.${c}`:"options.highWaterMark";throw new o(m,p)}return r(p)}return s(l.objectMode)}t.exports={getHighWaterMark:a,getDefaultHighWaterMark:s}});function am(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return r===-1&&(r=t),[r,r===t?0:4-r%4]}function QR(e,t,r){for(var n,o,i=[],s=t;s<r;s+=3)n=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]),i.push(cr[(o=n)>>18&63]+cr[o>>12&63]+cr[o>>6&63]+cr[63&o]);return i.join("")}function Yr(e){if(e>2147483647)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,Ee.prototype),t}function Ee(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return ph(e)}return jb(e,t,r)}function jb(e,t,r){if(typeof e=="string")return function(i,s){if(typeof s=="string"&&s!==""||(s="utf8"),!Ee.isEncoding(s))throw new TypeError("Unknown encoding: "+s);var a=0|Hb(i,s),l=Yr(a),u=l.write(i,s);return u!==a&&(l=l.slice(0,u)),l}(e,t);if(ArrayBuffer.isView(e))return nc(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(zr(e,ArrayBuffer)||e&&zr(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(zr(e,SharedArrayBuffer)||e&&zr(e.buffer,SharedArrayBuffer)))return XR(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return Ee.from(n,t,r);var o=function(i){if(Ee.isBuffer(i)){var s=0|Qd(i.length),a=Yr(s);return a.length===0||i.copy(a,0,0,s),a}if(i.length!==void 0)return typeof i.length!="number"||Xd(i.length)?Yr(0):nc(i);if(i.type==="Buffer"&&Array.isArray(i.data))return nc(i.data)}(e);if(o)return o;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return Ee.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function Wb(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function ph(e){return Wb(e),Yr(e<0?0:0|Qd(e))}function nc(e){for(var t=e.length<0?0:0|Qd(e.length),r=Yr(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function XR(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=t===void 0&&r===void 0?new Uint8Array(e):r===void 0?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,Ee.prototype),n}function Qd(e){if(e>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function Hb(e,t){if(Ee.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||zr(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return gh(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Yb(e).length;default:if(o)return n?-1:gh(e).length;t=(""+t).toLowerCase(),o=!0}}function JR(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return aO(this,t,r);case"utf8":case"utf-8":return qb(this,t,r);case"ascii":return oO(this,t,r);case"latin1":case"binary":return sO(this,t,r);case"base64":return iO(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return lO(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Gn(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function lm(e,t,r,n,o){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Xd(r=+r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if(typeof t=="string"&&(t=Ee.from(t,n)),Ee.isBuffer(t))return t.length===0?-1:um(e,t,r,n,o);if(typeof t=="number")return t&=255,typeof Uint8Array.prototype.indexOf=="function"?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):um(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function um(e,t,r,n,o){var i,s=1,a=e.length,l=t.length;if(n!==void 0&&((n=String(n).toLowerCase())==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;s=2,a/=2,l/=2,r/=2}function u(m,_){return s===1?m[_]:m.readUInt16BE(_*s)}if(o){var c=-1;for(i=r;i<a;i++)if(u(e,i)===u(t,c===-1?0:i-c)){if(c===-1&&(c=i),i-c+1===l)return c*s}else c!==-1&&(i-=i-c),c=-1}else for(r+l>a&&(r=a-l),i=r;i>=0;i--){for(var d=!0,p=0;p<l;p++)if(u(e,i+p)!==u(t,p)){d=!1;break}if(d)return i}return-1}function ZR(e,t,r,n){r=Number(r)||0;var o=e.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=t.length;n>i/2&&(n=i/2);for(var s=0;s<n;++s){var a=parseInt(t.substr(2*s,2),16);if(Xd(a))return s;e[r+s]=a}return s}function eO(e,t,r,n){return tu(gh(t,e.length-r),e,r,n)}function Vb(e,t,r,n){return tu(function(o){for(var i=[],s=0;s<o.length;++s)i.push(255&o.charCodeAt(s));return i}(t),e,r,n)}function tO(e,t,r,n){return Vb(e,t,r,n)}function rO(e,t,r,n){return tu(Yb(t),e,r,n)}function nO(e,t,r,n){return tu(function(o,i){for(var s,a,l,u=[],c=0;c<o.length&&!((i-=2)<0);++c)s=o.charCodeAt(c),a=s>>8,l=s%256,u.push(l),u.push(a);return u}(t,e.length-r),e,r,n)}function iO(e,t,r){return t===0&&r===e.length?fl.fromByteArray(e):fl.fromByteArray(e.slice(t,r))}function qb(e,t,r){r=Math.min(e.length,r);for(var n=[],o=t;o<r;){var i,s,a,l,u=e[o],c=null,d=u>239?4:u>223?3:u>191?2:1;if(o+d<=r)switch(d){case 1:u<128&&(c=u);break;case 2:(192&(i=e[o+1]))==128&&(l=(31&u)<<6|63&i)>127&&(c=l);break;case 3:i=e[o+1],s=e[o+2],(192&i)==128&&(192&s)==128&&(l=(15&u)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:i=e[o+1],s=e[o+2],a=e[o+3],(192&i)==128&&(192&s)==128&&(192&a)==128&&(l=(15&u)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(c=l)}c===null?(c=65533,d=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=d}return function(p){var m=p.length;if(m<=4096)return String.fromCharCode.apply(String,p);for(var _="",b=0;b<m;)_+=String.fromCharCode.apply(String,p.slice(b,b+=4096));return _}(n)}function oO(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(127&e[o]);return n}function sO(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(e[o]);return n}function aO(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var o="",i=t;i<r;++i)o+=Gb[e[i]];return o}function lO(e,t,r){for(var n=e.slice(t,r),o="",i=0;i<n.length;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function dt(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function Mt(e,t,r,n,o,i){if(!Ee.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||t<i)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function Kb(e,t,r,n,o,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function cm(e,t,r,n,o){return t=+t,r>>>=0,o||Kb(e,0,r,4),ai.write(e,t,r,n,23,4),r+4}function fm(e,t,r,n,o){return t=+t,r>>>=0,o||Kb(e,0,r,8),ai.write(e,t,r,n,52,8),r+8}function gh(e,t){var r;t=t||1/0;for(var n=e.length,o=null,i=[],s=0;s<n;++s){if((r=e.charCodeAt(s))>55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function Yb(e){return fl.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(zb,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(e))}function tu(e,t,r,n){for(var o=0;o<n&&!(o+r>=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function zr(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function Xd(e){return e!=e}function hm(e,t){for(var r in e)t[r]=e[r]}function Qn(e,t,r){return ar(e,t,r)}function Jo(e){var t;switch(this.encoding=function(r){var n=function(o){if(!o)return"utf8";for(var i;;)switch(o){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return o;default:if(i)return;o=(""+o).toLowerCase(),i=!0}}(r);if(typeof n!="string"&&(hl.isEncoding===mh||!mh(r)))throw new Error("Unknown encoding: "+r);return n||r}(e),this.encoding){case"utf16le":this.text=cO,this.end=fO,t=4;break;case"utf8":this.fillLast=uO,t=4;break;case"base64":this.text=hO,this.end=dO,t=3;break;default:return this.write=pO,this.end=gO,void 0}this.lastNeed=0,this.lastTotal=0,this.lastChar=hl.allocUnsafe(t)}function ic(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function uO(e){var t=this.lastTotal-this.lastNeed,r=function(n,o,i){if((192&o[0])!=128)return n.lastNeed=0,"�";if(n.lastNeed>1&&o.length>1){if((192&o[1])!=128)return n.lastNeed=1,"�";if(n.lastNeed>2&&o.length>2&&(192&o[2])!=128)return n.lastNeed=2,"�"}}(this,e);return r!==void 0?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length,void 0)}function cO(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function fO(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function hO(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function dO(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function pO(e){return e.toString(this.encoding)}function gO(e){return e&&e.length?this.write(e):""}var dm,cr,Wt,pm,ca,Xn,gm,mm,vr,fl,ai,oc,zb,Gb,Zo,es,ar,ym,oo,hl,mh,_m=_t(()=>{for(_e(),we(),be(),dm={byteLength:function(e){var t=am(e),r=t[0],n=t[1];return 3*(r+n)/4-n},toByteArray:function(e){var t,r,n=am(e),o=n[0],i=n[1],s=new pm(function(u,c,d){return 3*(c+d)/4-d}(0,o,i)),a=0,l=i>0?o-4:o;for(r=0;r<l;r+=4)t=Wt[e.charCodeAt(r)]<<18|Wt[e.charCodeAt(r+1)]<<12|Wt[e.charCodeAt(r+2)]<<6|Wt[e.charCodeAt(r+3)],s[a++]=t>>16&255,s[a++]=t>>8&255,s[a++]=255&t;return i===2&&(t=Wt[e.charCodeAt(r)]<<2|Wt[e.charCodeAt(r+1)]>>4,s[a++]=255&t),i===1&&(t=Wt[e.charCodeAt(r)]<<10|Wt[e.charCodeAt(r+1)]<<4|Wt[e.charCodeAt(r+2)]>>2,s[a++]=t>>8&255,s[a++]=255&t),s},fromByteArray:function(e){for(var t,r=e.length,n=r%3,o=[],i=0,s=r-n;i<s;i+=16383)o.push(QR(e,i,i+16383>s?s:i+16383));return n===1?(t=e[r-1],o.push(cr[t>>2]+cr[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],o.push(cr[t>>10]+cr[t>>4&63]+cr[t<<2&63]+"=")),o.join("")}},cr=[],Wt=[],pm=typeof Uint8Array<"u"?Uint8Array:Array,ca="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Xn=0,gm=ca.length;Xn<gm;++Xn)cr[Xn]=ca[Xn],Wt[ca.charCodeAt(Xn)]=Xn;Wt[45]=62,Wt[95]=63,mm={read:function(e,t,r,n,o){var i,s,a=8*o-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,m=e[t+d];for(d+=p,i=m&(1<<-c)-1,m>>=-c,c+=a;c>0;i=256*i+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=256*s+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:1/0*(m?-1:1);s+=Math.pow(2,n),i-=u}return(m?-1:1)*s*Math.pow(2,i-n)},write:function(e,t,r,n,o,i){var s,a,l,u=8*i-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+d>=1?p/l:p*Math.pow(2,1-d))*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s+=d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+m]=255&a,m+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+m]=255&s,m+=_,s/=256,u-=8);e[r+m-_]|=128*b}},vr={},fl=dm,ai=mm,oc=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null,vr.Buffer=Ee,vr.SlowBuffer=function(e){return+e!=e&&(e=0),Ee.alloc(+e)},vr.INSPECT_MAX_BYTES=50,vr.kMaxLength=2147483647,Ee.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch{return!1}}(),Ee.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Ee.prototype,"parent",{enumerable:!0,get:function(){if(Ee.isBuffer(this))return this.buffer}}),Object.defineProperty(Ee.prototype,"offset",{enumerable:!0,get:function(){if(Ee.isBuffer(this))return this.byteOffset}}),Ee.poolSize=8192,Ee.from=function(e,t,r){return jb(e,t,r)},Object.setPrototypeOf(Ee.prototype,Uint8Array.prototype),Object.setPrototypeOf(Ee,Uint8Array),Ee.alloc=function(e,t,r){return function(n,o,i){return Wb(n),n<=0?Yr(n):o!==void 0?typeof i=="string"?Yr(n).fill(o,i):Yr(n).fill(o):Yr(n)}(e,t,r)},Ee.allocUnsafe=function(e){return ph(e)},Ee.allocUnsafeSlow=function(e){return ph(e)},Ee.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==Ee.prototype},Ee.compare=function(e,t){if(zr(e,Uint8Array)&&(e=Ee.from(e,e.offset,e.byteLength)),zr(t,Uint8Array)&&(t=Ee.from(t,t.offset,t.byteLength)),!Ee.isBuffer(e)||!Ee.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,o=0,i=Math.min(r,n);o<i;++o)if(e[o]!==t[o]){r=e[o],n=t[o];break}return r<n?-1:n<r?1:0},Ee.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Ee.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return Ee.alloc(0);var r;if(t===void 0)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=Ee.allocUnsafe(t),o=0;for(r=0;r<e.length;++r){var i=e[r];if(zr(i,Uint8Array)&&(i=Ee.from(i)),!Ee.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,o),o+=i.length}return n},Ee.byteLength=Hb,Ee.prototype._isBuffer=!0,Ee.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)Gn(this,t,t+1);return this},Ee.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)Gn(this,t,t+3),Gn(this,t+1,t+2);return this},Ee.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)Gn(this,t,t+7),Gn(this,t+1,t+6),Gn(this,t+2,t+5),Gn(this,t+3,t+4);return this},Ee.prototype.toString=function(){var e=this.length;return e===0?"":arguments.length===0?qb(this,0,e):JR.apply(this,arguments)},Ee.prototype.toLocaleString=Ee.prototype.toString,Ee.prototype.equals=function(e){if(!Ee.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||Ee.compare(this,e)===0},Ee.prototype.inspect=function(){var e="",t=vr.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},oc&&(Ee.prototype[oc]=Ee.prototype.inspect),Ee.prototype.compare=function(e,t,r,n,o){if(zr(e,Uint8Array)&&(e=Ee.from(e,e.offset,e.byteLength)),!Ee.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),r===void 0&&(r=e?e.length:0),n===void 0&&(n=0),o===void 0&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0),a=Math.min(i,s),l=this.slice(n,o),u=e.slice(t,r),c=0;c<a;++c)if(l[c]!==u[c]){i=l[c],s=u[c];break}return i<s?-1:s<i?1:0},Ee.prototype.includes=function(e,t,r){return this.indexOf(e,t,r)!==-1},Ee.prototype.indexOf=function(e,t,r){return lm(this,e,t,r,!0)},Ee.prototype.lastIndexOf=function(e,t,r){return lm(this,e,t,r,!1)},Ee.prototype.write=function(e,t,r,n){if(t===void 0)n="utf8",r=this.length,t=0;else if(r===void 0&&typeof t=="string")n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,n===void 0&&(n="utf8")):(n=r,r=void 0)}var o=this.length-t;if((r===void 0||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return ZR(this,e,t,r);case"utf8":case"utf-8":return eO(this,e,t,r);case"ascii":return Vb(this,e,t,r);case"latin1":case"binary":return tO(this,e,t,r);case"base64":return rO(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return nO(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},Ee.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},Ee.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=t===void 0?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,Ee.prototype),n},Ee.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||dt(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n},Ee.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||dt(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},Ee.prototype.readUInt8=function(e,t){return e>>>=0,t||dt(e,1,this.length),this[e]},Ee.prototype.readUInt16LE=function(e,t){return e>>>=0,t||dt(e,2,this.length),this[e]|this[e+1]<<8},Ee.prototype.readUInt16BE=function(e,t){return e>>>=0,t||dt(e,2,this.length),this[e]<<8|this[e+1]},Ee.prototype.readUInt32LE=function(e,t){return e>>>=0,t||dt(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Ee.prototype.readUInt32BE=function(e,t){return e>>>=0,t||dt(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Ee.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||dt(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n>=(o*=128)&&(n-=Math.pow(2,8*t)),n},Ee.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||dt(e,t,this.length);for(var n=t,o=1,i=this[e+--n];n>0&&(o*=256);)i+=this[e+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},Ee.prototype.readInt8=function(e,t){return e>>>=0,t||dt(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Ee.prototype.readInt16LE=function(e,t){e>>>=0,t||dt(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Ee.prototype.readInt16BE=function(e,t){e>>>=0,t||dt(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Ee.prototype.readInt32LE=function(e,t){return e>>>=0,t||dt(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Ee.prototype.readInt32BE=function(e,t){return e>>>=0,t||dt(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Ee.prototype.readFloatLE=function(e,t){return e>>>=0,t||dt(e,4,this.length),ai.read(this,e,!0,23,4)},Ee.prototype.readFloatBE=function(e,t){return e>>>=0,t||dt(e,4,this.length),ai.read(this,e,!1,23,4)},Ee.prototype.readDoubleLE=function(e,t){return e>>>=0,t||dt(e,8,this.length),ai.read(this,e,!0,52,8)},Ee.prototype.readDoubleBE=function(e,t){return e>>>=0,t||dt(e,8,this.length),ai.read(this,e,!1,52,8)},Ee.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||Mt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[t]=255&e;++i<r&&(o*=256);)this[t+i]=e/o&255;return t+r},Ee.prototype.writeUIntBE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||Mt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+r},Ee.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,1,255,0),this[t]=255&e,t+1},Ee.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},Ee.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},Ee.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},Ee.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Ee.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);Mt(this,e,t,r,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i<r&&(s*=256);)e<0&&a===0&&this[t+i-1]!==0&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+r},Ee.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);Mt(this,e,t,r,o-1,-o)}var i=r-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&a===0&&this[t+i+1]!==0&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+r},Ee.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},Ee.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},Ee.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},Ee.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},Ee.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Ee.prototype.writeFloatLE=function(e,t,r){return cm(this,e,t,!0,r)},Ee.prototype.writeFloatBE=function(e,t,r){return cm(this,e,t,!1,r)},Ee.prototype.writeDoubleLE=function(e,t,r){return fm(this,e,t,!0,r)},Ee.prototype.writeDoubleBE=function(e,t,r){return fm(this,e,t,!1,r)},Ee.prototype.copy=function(e,t,r,n){if(!Ee.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||n===0||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var o=n-r;if(this===e&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(t,r,n);else if(this===e&&r<t&&t<n)for(var i=o-1;i>=0;--i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return o},Ee.prototype.fill=function(e,t,r,n){if(typeof e=="string"){if(typeof t=="string"?(n=t,t=0,r=this.length):typeof r=="string"&&(n=r,r=this.length),n!==void 0&&typeof n!="string")throw new TypeError("encoding must be a string");if(typeof n=="string"&&!Ee.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(e.length===1){var o=e.charCodeAt(0);(n==="utf8"&&o<128||n==="latin1")&&(e=o)}}else typeof e=="number"?e&=255:typeof e=="boolean"&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var i;if(t>>>=0,r=r===void 0?this.length:r>>>0,e||(e=0),typeof e=="number")for(i=t;i<r;++i)this[i]=e;else{var s=Ee.isBuffer(e)?e:Ee.from(e,n),a=s.length;if(a===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=s[i%a]}return this},zb=/[^+/0-9A-Za-z-_]/g,Gb=function(){for(var e=new Array(256),t=0;t<16;++t)for(var r=16*t,n=0;n<16;++n)e[r+n]="0123456789abcdef"[t]+"0123456789abcdef"[n];return e}(),vr.Buffer,vr.INSPECT_MAX_BYTES,vr.kMaxLength,Zo={},es=vr,ar=es.Buffer,ar.from&&ar.alloc&&ar.allocUnsafe&&ar.allocUnsafeSlow?Zo=es:(hm(es,Zo),Zo.Buffer=Qn),Qn.prototype=Object.create(ar.prototype),hm(ar,Qn),Qn.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ar(e,t,r)},Qn.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=ar(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n},Qn.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ar(e)},Qn.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return es.SlowBuffer(e)},ym=Zo,oo={},hl=ym.Buffer,mh=hl.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},oo.StringDecoder=Jo,Jo.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if((t=this.fillLast(e))===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""},Jo.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},Jo.prototype.text=function(e,t){var r=function(o,i,s){var a=i.length-1;if(a<s)return 0;var l=ic(i[a]);return l>=0?(l>0&&(o.lastNeed=l-1),l):--a<s||l===-2?0:(l=ic(i[a]))>=0?(l>0&&(o.lastNeed=l-2),l):--a<s||l===-2?0:(l=ic(i[a]))>=0?(l>0&&(l===2?l=0:o.lastNeed=l-3),l):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},Jo.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},oo.StringDecoder,oo.StringDecoder}),Qb={};Li(Qb,{StringDecoder:()=>Xb,default:()=>oo});var Xb,mO=_t(()=>{_e(),we(),be(),_m(),_m(),Xb=oo.StringDecoder}),Jb=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{PromisePrototypeThen:n,SymbolAsyncIterator:o,SymbolIterator:i}=ft(),{Buffer:s}=(wt(),ze(bt)),{ERR_INVALID_ARG_TYPE:a,ERR_STREAM_NULL_VALUES:l}=Ft().codes;function u(c,d,p){let m;if(typeof d=="string"||d instanceof s)return new c({objectMode:!0,...p,read(){this.push(d),this.push(null)}});let _;if(d&&d[o])_=!0,m=d[o]();else if(d&&d[i])_=!1,m=d[i]();else throw new a("iterable",["Iterable"],d);let b=new c({objectMode:!0,highWaterMark:1,...p}),T=!1;b._read=function(){T||(T=!0,R())},b._destroy=function(S,D){n(N(S),()=>r.nextTick(D,S),U=>r.nextTick(D,U||S))};async function N(S){let D=S!=null,U=typeof m.throw=="function";if(D&&U){let{value:x,done:L}=await m.throw(S);if(await x,L)return}if(typeof m.return=="function"){let{value:x}=await m.return();await x}}async function R(){for(;;){try{let{value:S,done:D}=_?await m.next():m.next();if(D)b.push(null);else{let U=S&&typeof S.then=="function"?await S:S;if(U===null)throw T=!1,new l;if(b.push(U))continue;T=!1}}catch(S){b.destroy(S)}break}}return b}t.exports=u}),ru=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{ArrayPrototypeIndexOf:n,NumberIsInteger:o,NumberIsNaN:i,NumberParseInt:s,ObjectDefineProperties:a,ObjectKeys:l,ObjectSetPrototypeOf:u,Promise:c,SafeSet:d,SymbolAsyncIterator:p,Symbol:m}=ft();t.exports=O,O.ReadableState=ge;var{EventEmitter:_}=(Wo(),ze(Di)),{Stream:b,prependListener:T}=zd(),{Buffer:N}=(wt(),ze(bt)),{addAbortSignal:R}=eu(),S=Wn(),D=nn().debuglog("stream",h=>{D=h}),U=GR(),x=jo(),{getHighWaterMark:L,getDefaultHighWaterMark:j}=Gd(),{aggregateTwoErrors:Y,codes:{ERR_INVALID_ARG_TYPE:se,ERR_METHOD_NOT_IMPLEMENTED:re,ERR_OUT_OF_RANGE:P,ERR_STREAM_PUSH_AFTER_EOF:B,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:oe}}=Ft(),{validateObject:ne}=Zl(),ue=m("kPaused"),{StringDecoder:ae}=(mO(),ze(Qb)),z=Jb();u(O.prototype,b.prototype),u(O,b);var pe=()=>{},{errorOrDestroy:de}=x;function ge(h,f,g){typeof g!="boolean"&&(g=f instanceof on()),this.objectMode=!!(h&&h.objectMode),g&&(this.objectMode=this.objectMode||!!(h&&h.readableObjectMode)),this.highWaterMark=h?L(this,h,"readableHighWaterMark",g):j(!1),this.buffer=new U,this.length=0,this.pipes=[],this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.constructed=!0,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this[ue]=null,this.errorEmitted=!1,this.emitClose=!h||h.emitClose!==!1,this.autoDestroy=!h||h.autoDestroy!==!1,this.destroyed=!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this.defaultEncoding=h&&h.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.multiAwaitDrain=!1,this.readingMore=!1,this.dataEmitted=!1,this.decoder=null,this.encoding=null,h&&h.encoding&&(this.decoder=new ae(h.encoding),this.encoding=h.encoding)}function O(h){if(!(this instanceof O))return new O(h);let f=this instanceof on();this._readableState=new ge(h,this,f),h&&(typeof h.read=="function"&&(this._read=h.read),typeof h.destroy=="function"&&(this._destroy=h.destroy),typeof h.construct=="function"&&(this._construct=h.construct),h.signal&&!f&&R(h.signal,this)),b.call(this,h),x.construct(this,()=>{this._readableState.needReadable&&ce(this,this._readableState)})}O.prototype.destroy=x.destroy,O.prototype._undestroy=x.undestroy,O.prototype._destroy=function(h,f){f(h)},O.prototype[_.captureRejectionSymbol]=function(h){this.destroy(h)},O.prototype.push=function(h,f){return ie(this,h,f,!1)},O.prototype.unshift=function(h,f){return ie(this,h,f,!0)};function ie(h,f,g,w){D("readableAddChunk",f);let C=h._readableState,V;if(C.objectMode||(typeof f=="string"?(g=g||C.defaultEncoding,C.encoding!==g&&(w&&C.encoding?f=N.from(f,g).toString(C.encoding):(f=N.from(f,g),g=""))):f instanceof N?g="":b._isUint8Array(f)?(f=b._uint8ArrayToBuffer(f),g=""):f!=null&&(V=new se("chunk",["string","Buffer","Uint8Array"],f))),V)de(h,V);else if(f===null)C.reading=!1,F(h,C);else if(C.objectMode||f&&f.length>0)if(w)if(C.endEmitted)de(h,new oe);else{if(C.destroyed||C.errored)return!1;me(h,C,f,!0)}else if(C.ended)de(h,new B);else{if(C.destroyed||C.errored)return!1;C.reading=!1,C.decoder&&!g?(f=C.decoder.write(f),C.objectMode||f.length!==0?me(h,C,f,!1):ce(h,C)):me(h,C,f,!1)}else w||(C.reading=!1,ce(h,C));return!C.ended&&(C.length<C.highWaterMark||C.length===0)}function me(h,f,g,w){f.flowing&&f.length===0&&!f.sync&&h.listenerCount("data")>0?(f.multiAwaitDrain?f.awaitDrainWriters.clear():f.awaitDrainWriters=null,f.dataEmitted=!0,h.emit("data",g)):(f.length+=f.objectMode?1:g.length,w?f.buffer.unshift(g):f.buffer.push(g),f.needReadable&&X(h)),ce(h,f)}O.prototype.isPaused=function(){let h=this._readableState;return h[ue]===!0||h.flowing===!1},O.prototype.setEncoding=function(h){let f=new ae(h);this._readableState.decoder=f,this._readableState.encoding=this._readableState.decoder.encoding;let g=this._readableState.buffer,w="";for(let C of g)w+=f.write(C);return g.clear(),w!==""&&g.push(w),this._readableState.length=w.length,this};var ve=1073741824;function ye(h){if(h>ve)throw new P("size","<= 1GiB",h);return h--,h|=h>>>1,h|=h>>>2,h|=h>>>4,h|=h>>>8,h|=h>>>16,h++,h}function q(h,f){return h<=0||f.length===0&&f.ended?0:f.objectMode?1:i(h)?f.flowing&&f.length?f.buffer.first().length:f.length:h<=f.length?h:f.ended?f.length:0}O.prototype.read=function(h){D("read",h),h===void 0?h=NaN:o(h)||(h=s(h,10));let f=this._readableState,g=h;if(h>f.highWaterMark&&(f.highWaterMark=ye(h)),h!==0&&(f.emittedReadable=!1),h===0&&f.needReadable&&((f.highWaterMark!==0?f.length>=f.highWaterMark:f.length>0)||f.ended))return D("read: emitReadable",f.length,f.ended),f.length===0&&f.ended?I(this):X(this),null;if(h=q(h,f),h===0&&f.ended)return f.length===0&&I(this),null;let w=f.needReadable;if(D("need readable",w),(f.length===0||f.length-h<f.highWaterMark)&&(w=!0,D("length less than watermark",w)),f.ended||f.reading||f.destroyed||f.errored||!f.constructed)w=!1,D("reading, ended or constructing",w);else if(w){D("do read"),f.reading=!0,f.sync=!0,f.length===0&&(f.needReadable=!0);try{this._read(f.highWaterMark)}catch(V){de(this,V)}f.sync=!1,f.reading||(h=q(g,f))}let C;return h>0?C=K(h,f):C=null,C===null?(f.needReadable=f.length<=f.highWaterMark,h=0):(f.length-=h,f.multiAwaitDrain?f.awaitDrainWriters.clear():f.awaitDrainWriters=null),f.length===0&&(f.ended||(f.needReadable=!0),g!==h&&f.ended&&I(this)),C!==null&&!f.errorEmitted&&!f.closeEmitted&&(f.dataEmitted=!0,this.emit("data",C)),C};function F(h,f){if(D("onEofChunk"),!f.ended){if(f.decoder){let g=f.decoder.end();g&&g.length&&(f.buffer.push(g),f.length+=f.objectMode?1:g.length)}f.ended=!0,f.sync?X(h):(f.needReadable=!1,f.emittedReadable=!0,he(h))}}function X(h){let f=h._readableState;D("emitReadable",f.needReadable,f.emittedReadable),f.needReadable=!1,f.emittedReadable||(D("emitReadable",f.flowing),f.emittedReadable=!0,r.nextTick(he,h))}function he(h){let f=h._readableState;D("emitReadable_",f.destroyed,f.length,f.ended),!f.destroyed&&!f.errored&&(f.length||f.ended)&&(h.emit("readable"),f.emittedReadable=!1),f.needReadable=!f.flowing&&!f.ended&&f.length<=f.highWaterMark,ee(h)}function ce(h,f){!f.readingMore&&f.constructed&&(f.readingMore=!0,r.nextTick(Z,h,f))}function Z(h,f){for(;!f.reading&&!f.ended&&(f.length<f.highWaterMark||f.flowing&&f.length===0);){let g=f.length;if(D("maybeReadMore read 0"),h.read(0),g===f.length)break}f.readingMore=!1}O.prototype._read=function(h){throw new re("_read()")},O.prototype.pipe=function(h,f){let g=this,w=this._readableState;w.pipes.length===1&&(w.multiAwaitDrain||(w.multiAwaitDrain=!0,w.awaitDrainWriters=new d(w.awaitDrainWriters?[w.awaitDrainWriters]:[]))),w.pipes.push(h),D("pipe count=%d opts=%j",w.pipes.length,f);let C=(!f||f.end!==!1)&&h!==r.stdout&&h!==r.stderr?fe:st;w.endEmitted?r.nextTick(C):g.once("end",C),h.on("unpipe",V);function V(gt,ut){D("onunpipe"),gt===g&&ut&&ut.hasUnpiped===!1&&(ut.hasUnpiped=!0,Te())}function fe(){D("onend"),h.end()}let xe,ke=!1;function Te(){D("cleanup"),h.removeListener("close",lt),h.removeListener("finish",Je),xe&&h.removeListener("drain",xe),h.removeListener("error",Ve),h.removeListener("unpipe",V),g.removeListener("end",fe),g.removeListener("end",st),g.removeListener("data",Re),ke=!0,xe&&w.awaitDrainWriters&&(!h._writableState||h._writableState.needDrain)&&xe()}function Oe(){ke||(w.pipes.length===1&&w.pipes[0]===h?(D("false write response, pause",0),w.awaitDrainWriters=h,w.multiAwaitDrain=!1):w.pipes.length>1&&w.pipes.includes(h)&&(D("false write response, pause",w.awaitDrainWriters.size),w.awaitDrainWriters.add(h)),g.pause()),xe||(xe=v(g,h),h.on("drain",xe))}g.on("data",Re);function Re(gt){D("ondata");let ut=h.write(gt);D("dest.write",ut),ut===!1&&Oe()}function Ve(gt){if(D("onerror",gt),st(),h.removeListener("error",Ve),h.listenerCount("error")===0){let ut=h._writableState||h._readableState;ut&&!ut.errorEmitted?de(h,gt):h.emit("error",gt)}}T(h,"error",Ve);function lt(){h.removeListener("finish",Je),st()}h.once("close",lt);function Je(){D("onfinish"),h.removeListener("close",lt),st()}h.once("finish",Je);function st(){D("unpipe"),g.unpipe(h)}return h.emit("pipe",g),h.writableNeedDrain===!0?w.flowing&&Oe():w.flowing||(D("pipe resume"),g.resume()),h};function v(h,f){return function(){let g=h._readableState;g.awaitDrainWriters===f?(D("pipeOnDrain",1),g.awaitDrainWriters=null):g.multiAwaitDrain&&(D("pipeOnDrain",g.awaitDrainWriters.size),g.awaitDrainWriters.delete(f)),(!g.awaitDrainWriters||g.awaitDrainWriters.size===0)&&h.listenerCount("data")&&h.resume()}}O.prototype.unpipe=function(h){let f=this._readableState,g={hasUnpiped:!1};if(f.pipes.length===0)return this;if(!h){let C=f.pipes;f.pipes=[],this.pause();for(let V=0;V<C.length;V++)C[V].emit("unpipe",this,{hasUnpiped:!1});return this}let w=n(f.pipes,h);return w===-1?this:(f.pipes.splice(w,1),f.pipes.length===0&&this.pause(),h.emit("unpipe",this,g),this)},O.prototype.on=function(h,f){let g=b.prototype.on.call(this,h,f),w=this._readableState;return h==="data"?(w.readableListening=this.listenerCount("readable")>0,w.flowing!==!1&&this.resume()):h==="readable"&&!w.endEmitted&&!w.readableListening&&(w.readableListening=w.needReadable=!0,w.flowing=!1,w.emittedReadable=!1,D("on readable",w.length,w.reading),w.length?X(this):w.reading||r.nextTick(E,this)),g},O.prototype.addListener=O.prototype.on,O.prototype.removeListener=function(h,f){let g=b.prototype.removeListener.call(this,h,f);return h==="readable"&&r.nextTick(A,this),g},O.prototype.off=O.prototype.removeListener,O.prototype.removeAllListeners=function(h){let f=b.prototype.removeAllListeners.apply(this,arguments);return(h==="readable"||h===void 0)&&r.nextTick(A,this),f};function A(h){let f=h._readableState;f.readableListening=h.listenerCount("readable")>0,f.resumeScheduled&&f[ue]===!1?f.flowing=!0:h.listenerCount("data")>0?h.resume():f.readableListening||(f.flowing=null)}function E(h){D("readable nexttick read 0"),h.read(0)}O.prototype.resume=function(){let h=this._readableState;return h.flowing||(D("resume"),h.flowing=!h.readableListening,k(this,h)),h[ue]=!1,this};function k(h,f){f.resumeScheduled||(f.resumeScheduled=!0,r.nextTick(M,h,f))}function M(h,f){D("resume",f.reading),f.reading||h.read(0),f.resumeScheduled=!1,h.emit("resume"),ee(h),f.flowing&&!f.reading&&h.read(0)}O.prototype.pause=function(){return D("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(D("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[ue]=!0,this};function ee(h){let f=h._readableState;for(D("flow",f.flowing);f.flowing&&h.read()!==null;);}O.prototype.wrap=function(h){let f=!1;h.on("data",w=>{!this.push(w)&&h.pause&&(f=!0,h.pause())}),h.on("end",()=>{this.push(null)}),h.on("error",w=>{de(this,w)}),h.on("close",()=>{this.destroy()}),h.on("destroy",()=>{this.destroy()}),this._read=()=>{f&&h.resume&&(f=!1,h.resume())};let g=l(h);for(let w=1;w<g.length;w++){let C=g[w];this[C]===void 0&&typeof h[C]=="function"&&(this[C]=h[C].bind(h))}return this},O.prototype[p]=function(){return te(this)},O.prototype.iterator=function(h){return h!==void 0&&ne(h,"options"),te(this,h)};function te(h,f){typeof h.read!="function"&&(h=O.wrap(h,{objectMode:!0}));let g=$(h,f);return g.stream=h,g}async function*$(h,f){let g=pe;function w(fe){this===h?(g(),g=pe):g=fe}h.on("readable",w);let C,V=S(h,{writable:!1},fe=>{C=fe?Y(C,fe):null,g(),g=pe});try{for(;;){let fe=h.destroyed?null:h.read();if(fe!==null)yield fe;else{if(C)throw C;if(C===null)return;await new c(w)}}}catch(fe){throw C=Y(C,fe),C}finally{(C||(f==null?void 0:f.destroyOnReturn)!==!1)&&(C===void 0||h._readableState.autoDestroy)?x.destroyer(h,null):(h.off("readable",w),V())}}a(O.prototype,{readable:{__proto__:null,get(){let h=this._readableState;return!!h&&h.readable!==!1&&!h.destroyed&&!h.errorEmitted&&!h.endEmitted},set(h){this._readableState&&(this._readableState.readable=!!h)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(h){this._readableState&&(this._readableState.flowing=h)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(h){this._readableState&&(this._readableState.destroyed=h)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),a(ge.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[ue]!==!1},set(h){this[ue]=!!h}}}),O._fromList=K;function K(h,f){if(f.length===0)return null;let g;return f.objectMode?g=f.buffer.shift():!h||h>=f.length?(f.decoder?g=f.buffer.join(""):f.buffer.length===1?g=f.buffer.first():g=f.buffer.concat(f.length),f.buffer.clear()):g=f.buffer.consume(h,f.decoder),g}function I(h){let f=h._readableState;D("endReadable",f.endEmitted),f.endEmitted||(f.ended=!0,r.nextTick(W,f,h))}function W(h,f){if(D("endReadableNT",h.endEmitted,h.length),!h.errored&&!h.closeEmitted&&!h.endEmitted&&h.length===0){if(h.endEmitted=!0,f.emit("end"),f.writable&&f.allowHalfOpen===!1)r.nextTick(J,f);else if(h.autoDestroy){let g=f._writableState;(!g||g.autoDestroy&&(g.finished||g.writable===!1))&&f.destroy()}}}function J(h){h.writable&&!h.writableEnded&&!h.destroyed&&h.end()}O.from=function(h,f){return z(O,h,f)};var le;function y(){return le===void 0&&(le={}),le}O.fromWeb=function(h,f){return y().newStreamReadableFromReadableStream(h,f)},O.toWeb=function(h,f){return y().newReadableStreamFromStreamReadable(h,f)},O.wrap=function(h,f){var g,w;return new O({objectMode:(g=(w=h.readableObjectMode)!==null&&w!==void 0?w:h.objectMode)!==null&&g!==void 0?g:!0,...f,destroy(C,V){x.destroyer(h,C),V(C)}}).wrap(h)}}),Zb=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{ArrayPrototypeSlice:n,Error:o,FunctionPrototypeSymbolHasInstance:i,ObjectDefineProperty:s,ObjectDefineProperties:a,ObjectSetPrototypeOf:l,StringPrototypeToLowerCase:u,Symbol:c,SymbolHasInstance:d}=ft();t.exports=ae,ae.WritableState=ne;var{EventEmitter:p}=(Wo(),ze(Di)),m=zd().Stream,{Buffer:_}=(wt(),ze(bt)),b=jo(),{addAbortSignal:T}=eu(),{getHighWaterMark:N,getDefaultHighWaterMark:R}=Gd(),{ERR_INVALID_ARG_TYPE:S,ERR_METHOD_NOT_IMPLEMENTED:D,ERR_MULTIPLE_CALLBACK:U,ERR_STREAM_CANNOT_PIPE:x,ERR_STREAM_DESTROYED:L,ERR_STREAM_ALREADY_FINISHED:j,ERR_STREAM_NULL_VALUES:Y,ERR_STREAM_WRITE_AFTER_END:se,ERR_UNKNOWN_ENCODING:re}=Ft().codes,{errorOrDestroy:P}=b;l(ae.prototype,m.prototype),l(ae,m);function B(){}var oe=c("kOnFinished");function ne(E,k,M){typeof M!="boolean"&&(M=k instanceof on()),this.objectMode=!!(E&&E.objectMode),M&&(this.objectMode=this.objectMode||!!(E&&E.writableObjectMode)),this.highWaterMark=E?N(this,E,"writableHighWaterMark",M):R(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let ee=!!(E&&E.decodeStrings===!1);this.decodeStrings=!ee,this.defaultEncoding=E&&E.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=O.bind(void 0,k),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,ue(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!E||E.emitClose!==!1,this.autoDestroy=!E||E.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[oe]=[]}function ue(E){E.buffered=[],E.bufferedIndex=0,E.allBuffers=!0,E.allNoop=!0}ne.prototype.getBuffer=function(){return n(this.buffered,this.bufferedIndex)},s(ne.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function ae(E){let k=this instanceof on();if(!k&&!i(ae,this))return new ae(E);this._writableState=new ne(E,this,k),E&&(typeof E.write=="function"&&(this._write=E.write),typeof E.writev=="function"&&(this._writev=E.writev),typeof E.destroy=="function"&&(this._destroy=E.destroy),typeof E.final=="function"&&(this._final=E.final),typeof E.construct=="function"&&(this._construct=E.construct),E.signal&&T(E.signal,this)),m.call(this,E),b.construct(this,()=>{let M=this._writableState;M.writing||ye(this,M),he(this,M)})}s(ae,d,{__proto__:null,value:function(E){return i(this,E)?!0:this!==ae?!1:E&&E._writableState instanceof ne}}),ae.prototype.pipe=function(){P(this,new x)};function z(E,k,M,ee){let te=E._writableState;if(typeof M=="function")ee=M,M=te.defaultEncoding;else{if(!M)M=te.defaultEncoding;else if(M!=="buffer"&&!_.isEncoding(M))throw new re(M);typeof ee!="function"&&(ee=B)}if(k===null)throw new Y;if(!te.objectMode)if(typeof k=="string")te.decodeStrings!==!1&&(k=_.from(k,M),M="buffer");else if(k instanceof _)M="buffer";else if(m._isUint8Array(k))k=m._uint8ArrayToBuffer(k),M="buffer";else throw new S("chunk",["string","Buffer","Uint8Array"],k);let $;return te.ending?$=new se:te.destroyed&&($=new L("write")),$?(r.nextTick(ee,$),P(E,$,!0),$):(te.pendingcb++,pe(E,te,k,M,ee))}ae.prototype.write=function(E,k,M){return z(this,E,k,M)===!0},ae.prototype.cork=function(){this._writableState.corked++},ae.prototype.uncork=function(){let E=this._writableState;E.corked&&(E.corked--,E.writing||ye(this,E))},ae.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=u(E)),!_.isEncoding(E))throw new re(E);return this._writableState.defaultEncoding=E,this};function pe(E,k,M,ee,te){let $=k.objectMode?1:M.length;k.length+=$;let K=k.length<k.highWaterMark;return K||(k.needDrain=!0),k.writing||k.corked||k.errored||!k.constructed?(k.buffered.push({chunk:M,encoding:ee,callback:te}),k.allBuffers&&ee!=="buffer"&&(k.allBuffers=!1),k.allNoop&&te!==B&&(k.allNoop=!1)):(k.writelen=$,k.writecb=te,k.writing=!0,k.sync=!0,E._write(M,ee,k.onwrite),k.sync=!1),K&&!k.errored&&!k.destroyed}function de(E,k,M,ee,te,$,K){k.writelen=ee,k.writecb=K,k.writing=!0,k.sync=!0,k.destroyed?k.onwrite(new L("write")):M?E._writev(te,k.onwrite):E._write(te,$,k.onwrite),k.sync=!1}function ge(E,k,M,ee){--k.pendingcb,ee(M),ve(k),P(E,M)}function O(E,k){let M=E._writableState,ee=M.sync,te=M.writecb;if(typeof te!="function"){P(E,new U);return}M.writing=!1,M.writecb=null,M.length-=M.writelen,M.writelen=0,k?(k.stack,M.errored||(M.errored=k),E._readableState&&!E._readableState.errored&&(E._readableState.errored=k),ee?r.nextTick(ge,E,M,k,te):ge(E,M,k,te)):(M.buffered.length>M.bufferedIndex&&ye(E,M),ee?M.afterWriteTickInfo!==null&&M.afterWriteTickInfo.cb===te?M.afterWriteTickInfo.count++:(M.afterWriteTickInfo={count:1,cb:te,stream:E,state:M},r.nextTick(ie,M.afterWriteTickInfo)):me(E,M,1,te))}function ie({stream:E,state:k,count:M,cb:ee}){return k.afterWriteTickInfo=null,me(E,k,M,ee)}function me(E,k,M,ee){for(!k.ending&&!E.destroyed&&k.length===0&&k.needDrain&&(k.needDrain=!1,E.emit("drain"));M-- >0;)k.pendingcb--,ee();k.destroyed&&ve(k),he(E,k)}function ve(E){if(E.writing)return;for(let te=E.bufferedIndex;te<E.buffered.length;++te){var k;let{chunk:$,callback:K}=E.buffered[te],I=E.objectMode?1:$.length;E.length-=I,K((k=E.errored)!==null&&k!==void 0?k:new L("write"))}let M=E[oe].splice(0);for(let te=0;te<M.length;te++){var ee;M[te]((ee=E.errored)!==null&&ee!==void 0?ee:new L("end"))}ue(E)}function ye(E,k){if(k.corked||k.bufferProcessing||k.destroyed||!k.constructed)return;let{buffered:M,bufferedIndex:ee,objectMode:te}=k,$=M.length-ee;if(!$)return;let K=ee;if(k.bufferProcessing=!0,$>1&&E._writev){k.pendingcb-=$-1;let I=k.allNoop?B:J=>{for(let le=K;le<M.length;++le)M[le].callback(J)},W=k.allNoop&&K===0?M:n(M,K);W.allBuffers=k.allBuffers,de(E,k,!0,k.length,W,"",I),ue(k)}else{do{let{chunk:I,encoding:W,callback:J}=M[K];M[K++]=null;let le=te?1:I.length;de(E,k,!1,le,I,W,J)}while(K<M.length&&!k.writing);K===M.length?ue(k):K>256?(M.splice(0,K),k.bufferedIndex=0):k.bufferedIndex=K}k.bufferProcessing=!1}ae.prototype._write=function(E,k,M){if(this._writev)this._writev([{chunk:E,encoding:k}],M);else throw new D("_write()")},ae.prototype._writev=null,ae.prototype.end=function(E,k,M){let ee=this._writableState;typeof E=="function"?(M=E,E=null,k=null):typeof k=="function"&&(M=k,k=null);let te;if(E!=null){let $=z(this,E,k);$ instanceof o&&(te=$)}return ee.corked&&(ee.corked=1,this.uncork()),te||(!ee.errored&&!ee.ending?(ee.ending=!0,he(this,ee,!0),ee.ended=!0):ee.finished?te=new j("end"):ee.destroyed&&(te=new L("end"))),typeof M=="function"&&(te||ee.finished?r.nextTick(M,te):ee[oe].push(M)),this};function q(E){return E.ending&&!E.destroyed&&E.constructed&&E.length===0&&!E.errored&&E.buffered.length===0&&!E.finished&&!E.writing&&!E.errorEmitted&&!E.closeEmitted}function F(E,k){let M=!1;function ee(te){if(M){P(E,te??U());return}if(M=!0,k.pendingcb--,te){let $=k[oe].splice(0);for(let K=0;K<$.length;K++)$[K](te);P(E,te,k.sync)}else q(k)&&(k.prefinished=!0,E.emit("prefinish"),k.pendingcb++,r.nextTick(ce,E,k))}k.sync=!0,k.pendingcb++;try{E._final(ee)}catch(te){ee(te)}k.sync=!1}function X(E,k){!k.prefinished&&!k.finalCalled&&(typeof E._final=="function"&&!k.destroyed?(k.finalCalled=!0,F(E,k)):(k.prefinished=!0,E.emit("prefinish")))}function he(E,k,M){q(k)&&(X(E,k),k.pendingcb===0&&(M?(k.pendingcb++,r.nextTick((ee,te)=>{q(te)?ce(ee,te):te.pendingcb--},E,k)):q(k)&&(k.pendingcb++,ce(E,k))))}function ce(E,k){k.pendingcb--,k.finished=!0;let M=k[oe].splice(0);for(let ee=0;ee<M.length;ee++)M[ee]();if(E.emit("finish"),k.autoDestroy){let ee=E._readableState;(!ee||ee.autoDestroy&&(ee.endEmitted||ee.readable===!1))&&E.destroy()}}a(ae.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(E){this._writableState&&(this._writableState.destroyed=E)}},writable:{__proto__:null,get(){let E=this._writableState;return!!E&&E.writable!==!1&&!E.destroyed&&!E.errored&&!E.ending&&!E.ended},set(E){this._writableState&&(this._writableState.writable=!!E)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){let E=this._writableState;return E?!E.destroyed&&!E.ending&&E.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});var Z=b.destroy;ae.prototype.destroy=function(E,k){let M=this._writableState;return!M.destroyed&&(M.bufferedIndex<M.buffered.length||M[oe].length)&&r.nextTick(ve,M),Z.call(this,E,k),this},ae.prototype._undestroy=b.undestroy,ae.prototype._destroy=function(E,k){k(E)},ae.prototype[p.captureRejectionSymbol]=function(E){this.destroy(E)};var v;function A(){return v===void 0&&(v={}),v}ae.fromWeb=function(E,k){return A().newStreamWritableFromWritableStream(E,k)},ae.toWeb=function(E){return A().newWritableStreamFromStreamWritable(E)}}),yO=Ae((e,t)=>{_e(),we(),be();var r=Bi(),n=(wt(),ze(bt)),{isReadable:o,isWritable:i,isIterable:s,isNodeStream:a,isReadableNodeStream:l,isWritableNodeStream:u,isDuplexNodeStream:c}=pn(),d=Wn(),{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:m,ERR_INVALID_RETURN_VALUE:_}}=Ft(),{destroyer:b}=jo(),T=on(),N=ru(),{createDeferredPromise:R}=nn(),S=Jb(),D=globalThis.Blob||n.Blob,U=typeof D<"u"?function(re){return re instanceof D}:function(re){return!1},x=globalThis.AbortController||Yd().AbortController,{FunctionPrototypeCall:L}=ft(),j=class extends T{constructor(re){super(re),(re==null?void 0:re.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(re==null?void 0:re.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}};t.exports=function re(P,B){if(c(P))return P;if(l(P))return se({readable:P});if(u(P))return se({writable:P});if(a(P))return se({writable:!1,readable:!1});if(typeof P=="function"){let{value:ne,write:ue,final:ae,destroy:z}=Y(P);if(s(ne))return S(j,ne,{objectMode:!0,write:ue,final:ae,destroy:z});let pe=ne==null?void 0:ne.then;if(typeof pe=="function"){let de,ge=L(pe,ne,O=>{if(O!=null)throw new _("nully","body",O)},O=>{b(de,O)});return de=new j({objectMode:!0,readable:!1,write:ue,final(O){ae(async()=>{try{await ge,r.nextTick(O,null)}catch(ie){r.nextTick(O,ie)}})},destroy:z})}throw new _("Iterable, AsyncIterable or AsyncFunction",B,ne)}if(U(P))return re(P.arrayBuffer());if(s(P))return S(j,P,{objectMode:!0,writable:!1});if(typeof(P==null?void 0:P.writable)=="object"||typeof(P==null?void 0:P.readable)=="object"){let ne=P!=null&&P.readable?l(P==null?void 0:P.readable)?P==null?void 0:P.readable:re(P.readable):void 0,ue=P!=null&&P.writable?u(P==null?void 0:P.writable)?P==null?void 0:P.writable:re(P.writable):void 0;return se({readable:ne,writable:ue})}let oe=P==null?void 0:P.then;if(typeof oe=="function"){let ne;return L(oe,P,ue=>{ue!=null&&ne.push(ue),ne.push(null)},ue=>{b(ne,ue)}),ne=new j({objectMode:!0,writable:!1,read(){}})}throw new m(B,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],P)};function Y(re){let{promise:P,resolve:B}=R(),oe=new x,ne=oe.signal;return{value:re(async function*(){for(;;){let ue=P;P=null;let{chunk:ae,done:z,cb:pe}=await ue;if(r.nextTick(pe),z)return;if(ne.aborted)throw new p(void 0,{cause:ne.reason});({promise:P,resolve:B}=R()),yield ae}}(),{signal:ne}),write(ue,ae,z){let pe=B;B=null,pe({chunk:ue,done:!1,cb:z})},final(ue){let ae=B;B=null,ae({done:!0,cb:ue})},destroy(ue,ae){oe.abort(),ae(ue)}}}function se(re){let P=re.readable&&typeof re.readable.read!="function"?N.wrap(re.readable):re.readable,B=re.writable,oe=!!o(P),ne=!!i(B),ue,ae,z,pe,de;function ge(O){let ie=pe;pe=null,ie?ie(O):O&&de.destroy(O)}return de=new j({readableObjectMode:!!(P!=null&&P.readableObjectMode),writableObjectMode:!!(B!=null&&B.writableObjectMode),readable:oe,writable:ne}),ne&&(d(B,O=>{ne=!1,O&&b(P,O),ge(O)}),de._write=function(O,ie,me){B.write(O,ie)?me():ue=me},de._final=function(O){B.end(),ae=O},B.on("drain",function(){if(ue){let O=ue;ue=null,O()}}),B.on("finish",function(){if(ae){let O=ae;ae=null,O()}})),oe&&(d(P,O=>{oe=!1,O&&b(P,O),ge(O)}),P.on("readable",function(){if(z){let O=z;z=null,O()}}),P.on("end",function(){de.push(null)}),de._read=function(){for(;;){let O=P.read();if(O===null){z=de._read;return}if(!de.push(O))return}}),de._destroy=function(O,ie){!O&&pe!==null&&(O=new p),z=null,ue=null,ae=null,pe===null?ie(O):(pe=ie,b(B,O),b(P,O))},de}}),on=Ae((e,t)=>{_e(),we(),be();var{ObjectDefineProperties:r,ObjectGetOwnPropertyDescriptor:n,ObjectKeys:o,ObjectSetPrototypeOf:i}=ft();t.exports=l;var s=ru(),a=Zb();i(l.prototype,s.prototype),i(l,s);{let p=o(a.prototype);for(let m=0;m<p.length;m++){let _=p[m];l.prototype[_]||(l.prototype[_]=a.prototype[_])}}function l(p){if(!(this instanceof l))return new l(p);s.call(this,p),a.call(this,p),p?(this.allowHalfOpen=p.allowHalfOpen!==!1,p.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),p.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}r(l.prototype,{writable:{__proto__:null,...n(a.prototype,"writable")},writableHighWaterMark:{__proto__:null,...n(a.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...n(a.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...n(a.prototype,"writableBuffer")},writableLength:{__proto__:null,...n(a.prototype,"writableLength")},writableFinished:{__proto__:null,...n(a.prototype,"writableFinished")},writableCorked:{__proto__:null,...n(a.prototype,"writableCorked")},writableEnded:{__proto__:null,...n(a.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...n(a.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(p){this._readableState&&this._writableState&&(this._readableState.destroyed=p,this._writableState.destroyed=p)}}});var u;function c(){return u===void 0&&(u={}),u}l.fromWeb=function(p,m){return c().newStreamDuplexFromReadableWritablePair(p,m)},l.toWeb=function(p){return c().newReadableWritablePairFromDuplex(p)};var d;l.from=function(p){return d||(d=yO()),d(p,"body")}}),ew=Ae((e,t)=>{_e(),we(),be();var{ObjectSetPrototypeOf:r,Symbol:n}=ft();t.exports=l;var{ERR_METHOD_NOT_IMPLEMENTED:o}=Ft().codes,i=on(),{getHighWaterMark:s}=Gd();r(l.prototype,i.prototype),r(l,i);var a=n("kCallback");function l(d){if(!(this instanceof l))return new l(d);let p=d?s(this,d,"readableHighWaterMark",!0):null;p===0&&(d={...d,highWaterMark:null,readableHighWaterMark:p,writableHighWaterMark:d.writableHighWaterMark||0}),i.call(this,d),this._readableState.sync=!1,this[a]=null,d&&(typeof d.transform=="function"&&(this._transform=d.transform),typeof d.flush=="function"&&(this._flush=d.flush)),this.on("prefinish",c)}function u(d){typeof this._flush=="function"&&!this.destroyed?this._flush((p,m)=>{if(p){d?d(p):this.destroy(p);return}m!=null&&this.push(m),this.push(null),d&&d()}):(this.push(null),d&&d())}function c(){this._final!==u&&u.call(this)}l.prototype._final=u,l.prototype._transform=function(d,p,m){throw new o("_transform()")},l.prototype._write=function(d,p,m){let _=this._readableState,b=this._writableState,T=_.length;this._transform(d,p,(N,R)=>{if(N){m(N);return}R!=null&&this.push(R),b.ended||T===_.length||_.length<_.highWaterMark?m():this[a]=m})},l.prototype._read=function(){if(this[a]){let d=this[a];this[a]=null,d()}}}),tw=Ae((e,t)=>{_e(),we(),be();var{ObjectSetPrototypeOf:r}=ft();t.exports=o;var n=ew();r(o.prototype,n.prototype),r(o,n);function o(i){if(!(this instanceof o))return new o(i);n.call(this,i)}o.prototype._transform=function(i,s,a){a(null,i)}}),Jd=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{ArrayIsArray:n,Promise:o,SymbolAsyncIterator:i}=ft(),s=Wn(),{once:a}=nn(),l=jo(),u=on(),{aggregateTwoErrors:c,codes:{ERR_INVALID_ARG_TYPE:d,ERR_INVALID_RETURN_VALUE:p,ERR_MISSING_ARGS:m,ERR_STREAM_DESTROYED:_,ERR_STREAM_PREMATURE_CLOSE:b},AbortError:T}=Ft(),{validateFunction:N,validateAbortSignal:R}=Zl(),{isIterable:S,isReadable:D,isReadableNodeStream:U,isNodeStream:x,isTransformStream:L,isWebStream:j,isReadableStream:Y,isReadableEnded:se}=pn(),re=globalThis.AbortController||Yd().AbortController,P,B;function oe(ie,me,ve){let ye=!1;ie.on("close",()=>{ye=!0});let q=s(ie,{readable:me,writable:ve},F=>{ye=!F});return{destroy:F=>{ye||(ye=!0,l.destroyer(ie,F||new _("pipe")))},cleanup:q}}function ne(ie){return N(ie[ie.length-1],"streams[stream.length - 1]"),ie.pop()}function ue(ie){if(S(ie))return ie;if(U(ie))return ae(ie);throw new d("val",["Readable","Iterable","AsyncIterable"],ie)}async function*ae(ie){B||(B=ru()),yield*B.prototype[i].call(ie)}async function z(ie,me,ve,{end:ye}){let q,F=null,X=Z=>{if(Z&&(q=Z),F){let v=F;F=null,v()}},he=()=>new o((Z,v)=>{q?v(q):F=()=>{q?v(q):Z()}});me.on("drain",X);let ce=s(me,{readable:!1},X);try{me.writableNeedDrain&&await he();for await(let Z of ie)me.write(Z)||await he();ye&&me.end(),await he(),ve()}catch(Z){ve(q!==Z?c(q,Z):Z)}finally{ce(),me.off("drain",X)}}async function pe(ie,me,ve,{end:ye}){L(me)&&(me=me.writable);let q=me.getWriter();try{for await(let F of ie)await q.ready,q.write(F).catch(()=>{});await q.ready,ye&&await q.close(),ve()}catch(F){try{await q.abort(F),ve(F)}catch(X){ve(X)}}}function de(...ie){return ge(ie,a(ne(ie)))}function ge(ie,me,ve){if(ie.length===1&&n(ie[0])&&(ie=ie[0]),ie.length<2)throw new m("streams");let ye=new re,q=ye.signal,F=ve==null?void 0:ve.signal,X=[];R(F,"options.signal");function he(){k(new T)}F==null||F.addEventListener("abort",he);let ce,Z,v=[],A=0;function E($){k($,--A===0)}function k($,K){if($&&(!ce||ce.code==="ERR_STREAM_PREMATURE_CLOSE")&&(ce=$),!(!ce&&!K)){for(;v.length;)v.shift()(ce);F==null||F.removeEventListener("abort",he),ye.abort(),K&&(ce||X.forEach(I=>I()),r.nextTick(me,ce,Z))}}let M;for(let $=0;$<ie.length;$++){let K=ie[$],I=$<ie.length-1,W=$>0,J=I||(ve==null?void 0:ve.end)!==!1,le=$===ie.length-1;if(x(K)){let y=function(h){h&&h.name!=="AbortError"&&h.code!=="ERR_STREAM_PREMATURE_CLOSE"&&E(h)};if(J){let{destroy:h,cleanup:f}=oe(K,I,W);v.push(h),D(K)&&le&&X.push(f)}K.on("error",y),D(K)&&le&&X.push(()=>{K.removeListener("error",y)})}if($===0)if(typeof K=="function"){if(M=K({signal:q}),!S(M))throw new p("Iterable, AsyncIterable or Stream","source",M)}else S(K)||U(K)||L(K)?M=K:M=u.from(K);else if(typeof K=="function"){if(L(M)){var ee;M=ue((ee=M)===null||ee===void 0?void 0:ee.readable)}else M=ue(M);if(M=K(M,{signal:q}),I){if(!S(M,!0))throw new p("AsyncIterable",`transform[${$-1}]`,M)}else{var te;P||(P=tw());let y=new P({objectMode:!0}),h=(te=M)===null||te===void 0?void 0:te.then;if(typeof h=="function")A++,h.call(M,w=>{Z=w,w!=null&&y.write(w),J&&y.end(),r.nextTick(E)},w=>{y.destroy(w),r.nextTick(E,w)});else if(S(M,!0))A++,z(M,y,E,{end:J});else if(Y(M)||L(M)){let w=M.readable||M;A++,z(w,y,E,{end:J})}else throw new p("AsyncIterable or Promise","destination",M);M=y;let{destroy:f,cleanup:g}=oe(M,!1,!0);v.push(f),le&&X.push(g)}}else if(x(K)){if(U(M)){A+=2;let y=O(M,K,E,{end:J});D(K)&&le&&X.push(y)}else if(L(M)||Y(M)){let y=M.readable||M;A++,z(y,K,E,{end:J})}else if(S(M))A++,z(M,K,E,{end:J});else throw new d("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],M);M=K}else if(j(K)){if(U(M))A++,pe(ue(M),K,E,{end:J});else if(Y(M)||S(M))A++,pe(M,K,E,{end:J});else if(L(M))A++,pe(M.readable,K,E,{end:J});else throw new d("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],M);M=K}else M=u.from(K)}return(q!=null&&q.aborted||F!=null&&F.aborted)&&r.nextTick(he),M}function O(ie,me,ve,{end:ye}){let q=!1;if(me.on("close",()=>{q||ve(new b)}),ie.pipe(me,{end:!1}),ye){let F=function(){q=!0,me.end()};se(ie)?r.nextTick(F):ie.once("end",F)}else ve();return s(ie,{readable:!0,writable:!1},F=>{let X=ie._readableState;F&&F.code==="ERR_STREAM_PREMATURE_CLOSE"&&X&&X.ended&&!X.errored&&!X.errorEmitted?ie.once("end",ve).once("error",ve):ve(F)}),s(me,{readable:!1,writable:!0},ve)}t.exports={pipelineImpl:ge,pipeline:de}}),rw=Ae((e,t)=>{_e(),we(),be();var{pipeline:r}=Jd(),n=on(),{destroyer:o}=jo(),{isNodeStream:i,isReadable:s,isWritable:a,isWebStream:l,isTransformStream:u,isWritableStream:c,isReadableStream:d}=pn(),{AbortError:p,codes:{ERR_INVALID_ARG_VALUE:m,ERR_MISSING_ARGS:_}}=Ft(),b=Wn();t.exports=function(...T){if(T.length===0)throw new _("streams");if(T.length===1)return n.from(T[0]);let N=[...T];if(typeof T[0]=="function"&&(T[0]=n.from(T[0])),typeof T[T.length-1]=="function"){let P=T.length-1;T[P]=n.from(T[P])}for(let P=0;P<T.length;++P)if(!(!i(T[P])&&!l(T[P]))){if(P<T.length-1&&!(s(T[P])||d(T[P])||u(T[P])))throw new m(`streams[${P}]`,N[P],"must be readable");if(P>0&&!(a(T[P])||c(T[P])||u(T[P])))throw new m(`streams[${P}]`,N[P],"must be writable")}let R,S,D,U,x;function L(P){let B=U;U=null,B?B(P):P?x.destroy(P):!re&&!se&&x.destroy()}let j=T[0],Y=r(T,L),se=!!(a(j)||c(j)||u(j)),re=!!(s(Y)||d(Y)||u(Y));if(x=new n({writableObjectMode:!!(j!=null&&j.writableObjectMode),readableObjectMode:!!(Y!=null&&Y.writableObjectMode),writable:se,readable:re}),se){if(i(j))x._write=function(B,oe,ne){j.write(B,oe)?ne():R=ne},x._final=function(B){j.end(),S=B},j.on("drain",function(){if(R){let B=R;R=null,B()}});else if(l(j)){let B=(u(j)?j.writable:j).getWriter();x._write=async function(oe,ne,ue){try{await B.ready,B.write(oe).catch(()=>{}),ue()}catch(ae){ue(ae)}},x._final=async function(oe){try{await B.ready,B.close().catch(()=>{}),S=oe}catch(ne){oe(ne)}}}let P=u(Y)?Y.readable:Y;b(P,()=>{if(S){let B=S;S=null,B()}})}if(re){if(i(Y))Y.on("readable",function(){if(D){let P=D;D=null,P()}}),Y.on("end",function(){x.push(null)}),x._read=function(){for(;;){let P=Y.read();if(P===null){D=x._read;return}if(!x.push(P))return}};else if(l(Y)){let P=(u(Y)?Y.readable:Y).getReader();x._read=async function(){for(;;)try{let{value:B,done:oe}=await P.read();if(!x.push(B))return;if(oe){x.push(null);return}}catch{return}}}}return x._destroy=function(P,B){!P&&U!==null&&(P=new p),D=null,R=null,S=null,U===null?B(P):(U=B,i(Y)&&o(Y,P))},x}}),_O=Ae((e,t)=>{_e(),we(),be();var r=globalThis.AbortController||Yd().AbortController,{codes:{ERR_INVALID_ARG_VALUE:n,ERR_INVALID_ARG_TYPE:o,ERR_MISSING_ARGS:i,ERR_OUT_OF_RANGE:s},AbortError:a}=Ft(),{validateAbortSignal:l,validateInteger:u,validateObject:c}=Zl(),d=ft().Symbol("kWeak"),{finished:p}=Wn(),m=rw(),{addAbortSignalNoValidate:_}=eu(),{isWritable:b,isNodeStream:T}=pn(),{ArrayPrototypePush:N,MathFloor:R,Number:S,NumberIsNaN:D,Promise:U,PromiseReject:x,PromisePrototypeThen:L,Symbol:j}=ft(),Y=j("kEmpty"),se=j("kEof");function re(ye,q){if(q!=null&&c(q,"options"),(q==null?void 0:q.signal)!=null&&l(q.signal,"options.signal"),T(ye)&&!b(ye))throw new n("stream",ye,"must be writable");let F=m(this,ye);return q!=null&&q.signal&&_(q.signal,F),F}function P(ye,q){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);q!=null&&c(q,"options"),(q==null?void 0:q.signal)!=null&&l(q.signal,"options.signal");let F=1;return(q==null?void 0:q.concurrency)!=null&&(F=R(q.concurrency)),u(F,"concurrency",1),(async function*(){var X,he;let ce=new r,Z=this,v=[],A=ce.signal,E={signal:A},k=()=>ce.abort();q!=null&&(X=q.signal)!==null&&X!==void 0&&X.aborted&&k(),q==null||(he=q.signal)===null||he===void 0||he.addEventListener("abort",k);let M,ee,te=!1;function $(){te=!0}async function K(){try{for await(let J of Z){var I;if(te)return;if(A.aborted)throw new a;try{J=ye(J,E)}catch(le){J=x(le)}J!==Y&&(typeof((I=J)===null||I===void 0?void 0:I.catch)=="function"&&J.catch($),v.push(J),M&&(M(),M=null),!te&&v.length&&v.length>=F&&await new U(le=>{ee=le}))}v.push(se)}catch(J){let le=x(J);L(le,void 0,$),v.push(le)}finally{var W;te=!0,M&&(M(),M=null),q==null||(W=q.signal)===null||W===void 0||W.removeEventListener("abort",k)}}K();try{for(;;){for(;v.length>0;){let I=await v[0];if(I===se)return;if(A.aborted)throw new a;I!==Y&&(yield I),v.shift(),ee&&(ee(),ee=null)}await new U(I=>{M=I})}}finally{ce.abort(),te=!0,ee&&(ee(),ee=null)}}).call(this)}function B(ye=void 0){return ye!=null&&c(ye,"options"),(ye==null?void 0:ye.signal)!=null&&l(ye.signal,"options.signal"),(async function*(){let q=0;for await(let X of this){var F;if(ye!=null&&(F=ye.signal)!==null&&F!==void 0&&F.aborted)throw new a({cause:ye.signal.reason});yield[q++,X]}}).call(this)}async function oe(ye,q=void 0){for await(let F of z.call(this,ye,q))return!0;return!1}async function ne(ye,q=void 0){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);return!await oe.call(this,async(...F)=>!await ye(...F),q)}async function ue(ye,q){for await(let F of z.call(this,ye,q))return F}async function ae(ye,q){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);async function F(X,he){return await ye(X,he),Y}for await(let X of P.call(this,F,q));}function z(ye,q){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);async function F(X,he){return await ye(X,he)?X:Y}return P.call(this,F,q)}var pe=class extends i{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}};async function de(ye,q,F){var X;if(typeof ye!="function")throw new o("reducer",["Function","AsyncFunction"],ye);F!=null&&c(F,"options"),(F==null?void 0:F.signal)!=null&&l(F.signal,"options.signal");let he=arguments.length>1;if(F!=null&&(X=F.signal)!==null&&X!==void 0&&X.aborted){let E=new a(void 0,{cause:F.signal.reason});throw this.once("error",()=>{}),await p(this.destroy(E)),E}let ce=new r,Z=ce.signal;if(F!=null&&F.signal){let E={once:!0,[d]:this};F.signal.addEventListener("abort",()=>ce.abort(),E)}let v=!1;try{for await(let E of this){var A;if(v=!0,F!=null&&(A=F.signal)!==null&&A!==void 0&&A.aborted)throw new a;he?q=await ye(q,E,{signal:Z}):(q=E,he=!0)}if(!v&&!he)throw new pe}finally{ce.abort()}return q}async function ge(ye){ye!=null&&c(ye,"options"),(ye==null?void 0:ye.signal)!=null&&l(ye.signal,"options.signal");let q=[];for await(let X of this){var F;if(ye!=null&&(F=ye.signal)!==null&&F!==void 0&&F.aborted)throw new a(void 0,{cause:ye.signal.reason});N(q,X)}return q}function O(ye,q){let F=P.call(this,ye,q);return(async function*(){for await(let X of F)yield*X}).call(this)}function ie(ye){if(ye=S(ye),D(ye))return 0;if(ye<0)throw new s("number",">= 0",ye);return ye}function me(ye,q=void 0){return q!=null&&c(q,"options"),(q==null?void 0:q.signal)!=null&&l(q.signal,"options.signal"),ye=ie(ye),(async function*(){var F;if(q!=null&&(F=q.signal)!==null&&F!==void 0&&F.aborted)throw new a;for await(let he of this){var X;if(q!=null&&(X=q.signal)!==null&&X!==void 0&&X.aborted)throw new a;ye--<=0&&(yield he)}}).call(this)}function ve(ye,q=void 0){return q!=null&&c(q,"options"),(q==null?void 0:q.signal)!=null&&l(q.signal,"options.signal"),ye=ie(ye),(async function*(){var F;if(q!=null&&(F=q.signal)!==null&&F!==void 0&&F.aborted)throw new a;for await(let he of this){var X;if(q!=null&&(X=q.signal)!==null&&X!==void 0&&X.aborted)throw new a;if(ye-- >0)yield he;else return}}).call(this)}t.exports.streamReturningOperators={asIndexedPairs:B,drop:me,filter:z,flatMap:O,map:P,take:ve,compose:re},t.exports.promiseReturningOperators={every:ne,forEach:ae,reduce:de,toArray:ge,some:oe,find:ue}}),nw=Ae((e,t)=>{_e(),we(),be();var{ArrayPrototypePop:r,Promise:n}=ft(),{isIterable:o,isNodeStream:i,isWebStream:s}=pn(),{pipelineImpl:a}=Jd(),{finished:l}=Wn();iw();function u(...c){return new n((d,p)=>{let m,_,b=c[c.length-1];if(b&&typeof b=="object"&&!i(b)&&!o(b)&&!s(b)){let T=r(c);m=T.signal,_=T.end}a(c,(T,N)=>{T?p(T):d(N)},{signal:m,end:_})})}t.exports={finished:l,pipeline:u}}),iw=Ae((e,t)=>{_e(),we(),be();var{Buffer:r}=(wt(),ze(bt)),{ObjectDefineProperty:n,ObjectKeys:o,ReflectApply:i}=ft(),{promisify:{custom:s}}=nn(),{streamReturningOperators:a,promiseReturningOperators:l}=_O(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:u}}=Ft(),c=rw(),{pipeline:d}=Jd(),{destroyer:p}=jo(),m=Wn(),_=nw(),b=pn(),T=t.exports=zd().Stream;T.isDisturbed=b.isDisturbed,T.isErrored=b.isErrored,T.isReadable=b.isReadable,T.Readable=ru();for(let R of o(a)){let S=function(...U){if(new.target)throw u();return T.Readable.from(i(D,this,U))},D=a[R];n(S,"name",{__proto__:null,value:D.name}),n(S,"length",{__proto__:null,value:D.length}),n(T.Readable.prototype,R,{__proto__:null,value:S,enumerable:!1,configurable:!0,writable:!0})}for(let R of o(l)){let S=function(...U){if(new.target)throw u();return i(D,this,U)},D=l[R];n(S,"name",{__proto__:null,value:D.name}),n(S,"length",{__proto__:null,value:D.length}),n(T.Readable.prototype,R,{__proto__:null,value:S,enumerable:!1,configurable:!0,writable:!0})}T.Writable=Zb(),T.Duplex=on(),T.Transform=ew(),T.PassThrough=tw(),T.pipeline=d;var{addAbortSignal:N}=eu();T.addAbortSignal=N,T.finished=m,T.destroy=p,T.compose=c,n(T,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return _}}),n(d,s,{__proto__:null,enumerable:!0,get(){return _.pipeline}}),n(m,s,{__proto__:null,enumerable:!0,get(){return _.finished}}),T.Stream=T,T._isUint8Array=function(R){return R instanceof Uint8Array},T._uint8ArrayToBuffer=function(R){return r.from(R.buffer,R.byteOffset,R.byteLength)}}),$i=Ae((e,t)=>{_e(),we(),be();var r=iw(),n=nw(),o=r.Readable.destroy;t.exports=r.Readable,t.exports._uint8ArrayToBuffer=r._uint8ArrayToBuffer,t.exports._isUint8Array=r._isUint8Array,t.exports.isDisturbed=r.isDisturbed,t.exports.isErrored=r.isErrored,t.exports.isReadable=r.isReadable,t.exports.Readable=r.Readable,t.exports.Writable=r.Writable,t.exports.Duplex=r.Duplex,t.exports.Transform=r.Transform,t.exports.PassThrough=r.PassThrough,t.exports.addAbortSignal=r.addAbortSignal,t.exports.finished=r.finished,t.exports.destroy=r.destroy,t.exports.destroy=o,t.exports.pipeline=r.pipeline,t.exports.compose=r.compose,Object.defineProperty(r,"promises",{configurable:!0,enumerable:!0,get(){return n}}),t.exports.Stream=r.Stream,t.exports.default=t.exports}),bO=Ae((e,t)=>{_e(),we(),be(),typeof Object.create=="function"?t.exports=function(r,n){n&&(r.super_=n,r.prototype=Object.create(n.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(r,n){if(n){r.super_=n;var o=function(){};o.prototype=n.prototype,r.prototype=new o,r.prototype.constructor=r}}}),wO=Ae((e,t)=>{_e(),we(),be();var{Buffer:r}=(wt(),ze(bt)),n=Symbol.for("BufferList");function o(i){if(!(this instanceof o))return new o(i);o._init.call(this,i)}o._init=function(i){Object.defineProperty(this,n,{value:!0}),this._bufs=[],this.length=0,i&&this.append(i)},o.prototype._new=function(i){return new o(i)},o.prototype._offset=function(i){if(i===0)return[0,0];let s=0;for(let a=0;a<this._bufs.length;a++){let l=s+this._bufs[a].length;if(i<l||a===this._bufs.length-1)return[a,i-s];s=l}},o.prototype._reverseOffset=function(i){let s=i[0],a=i[1];for(let l=0;l<s;l++)a+=this._bufs[l].length;return a},o.prototype.get=function(i){if(i>this.length||i<0)return;let s=this._offset(i);return this._bufs[s[0]][s[1]]},o.prototype.slice=function(i,s){return typeof i=="number"&&i<0&&(i+=this.length),typeof s=="number"&&s<0&&(s+=this.length),this.copy(null,0,i,s)},o.prototype.copy=function(i,s,a,l){if((typeof a!="number"||a<0)&&(a=0),(typeof l!="number"||l>this.length)&&(l=this.length),a>=this.length||l<=0)return i||r.alloc(0);let u=!!i,c=this._offset(a),d=l-a,p=d,m=u&&s||0,_=c[1];if(a===0&&l===this.length){if(!u)return this._bufs.length===1?this._bufs[0]:r.concat(this._bufs,this.length);for(let b=0;b<this._bufs.length;b++)this._bufs[b].copy(i,m),m+=this._bufs[b].length;return i}if(p<=this._bufs[c[0]].length-_)return u?this._bufs[c[0]].copy(i,s,_,_+p):this._bufs[c[0]].slice(_,_+p);u||(i=r.allocUnsafe(d));for(let b=c[0];b<this._bufs.length;b++){let T=this._bufs[b].length-_;if(p>T)this._bufs[b].copy(i,m,_),m+=T;else{this._bufs[b].copy(i,m,_,_+p),m+=T;break}p-=T,_&&(_=0)}return i.length>m?i.slice(0,m):i},o.prototype.shallowSlice=function(i,s){if(i=i||0,s=typeof s!="number"?this.length:s,i<0&&(i+=this.length),s<0&&(s+=this.length),i===s)return this._new();let a=this._offset(i),l=this._offset(s),u=this._bufs.slice(a[0],l[0]+1);return l[1]===0?u.pop():u[u.length-1]=u[u.length-1].slice(0,l[1]),a[1]!==0&&(u[0]=u[0].slice(a[1])),this._new(u)},o.prototype.toString=function(i,s,a){return this.slice(s,a).toString(i)},o.prototype.consume=function(i){if(i=Math.trunc(i),Number.isNaN(i)||i<=0)return this;for(;this._bufs.length;)if(i>=this._bufs[0].length)i-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(i),this.length-=i;break}return this},o.prototype.duplicate=function(){let i=this._new();for(let s=0;s<this._bufs.length;s++)i.append(this._bufs[s]);return i},o.prototype.append=function(i){if(i==null)return this;if(i.buffer)this._appendBuffer(r.from(i.buffer,i.byteOffset,i.byteLength));else if(Array.isArray(i))for(let s=0;s<i.length;s++)this.append(i[s]);else if(this._isBufferList(i))for(let s=0;s<i._bufs.length;s++)this.append(i._bufs[s]);else typeof i=="number"&&(i=i.toString()),this._appendBuffer(r.from(i));return this},o.prototype._appendBuffer=function(i){this._bufs.push(i),this.length+=i.length},o.prototype.indexOf=function(i,s,a){if(a===void 0&&typeof s=="string"&&(a=s,s=void 0),typeof i=="function"||Array.isArray(i))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof i=="number"?i=r.from([i]):typeof i=="string"?i=r.from(i,a):this._isBufferList(i)?i=i.slice():Array.isArray(i.buffer)?i=r.from(i.buffer,i.byteOffset,i.byteLength):r.isBuffer(i)||(i=r.from(i)),s=Number(s||0),isNaN(s)&&(s=0),s<0&&(s=this.length+s),s<0&&(s=0),i.length===0)return s>this.length?this.length:s;let l=this._offset(s),u=l[0],c=l[1];for(;u<this._bufs.length;u++){let d=this._bufs[u];for(;c<d.length;)if(d.length-c>=i.length){let p=d.indexOf(i,c);if(p!==-1)return this._reverseOffset([u,p]);c=d.length-i.length+1}else{let p=this._reverseOffset([u,c]);if(this._match(p,i))return p;c++}c=0}return-1},o.prototype._match=function(i,s){if(this.length-i<s.length)return!1;for(let a=0;a<s.length;a++)if(this.get(i+a)!==s[a])return!1;return!0},function(){let i={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let s in i)(function(a){i[a]===null?o.prototype[a]=function(l,u){return this.slice(l,l+u)[a](0,u)}:o.prototype[a]=function(l=0){return this.slice(l,l+i[a])[a](0)}})(s)}(),o.prototype._isBufferList=function(i){return i instanceof o||o.isBufferList(i)},o.isBufferList=function(i){return i!=null&&i[n]},t.exports=o}),vO=Ae((e,t)=>{_e(),we(),be();var r=$i().Duplex,n=bO(),o=wO();function i(s){if(!(this instanceof i))return new i(s);if(typeof s=="function"){this._callback=s;let a=(function(l){this._callback&&(this._callback(l),this._callback=null)}).bind(this);this.on("pipe",function(l){l.on("error",a)}),this.on("unpipe",function(l){l.removeListener("error",a)}),s=null}o._init.call(this,s),r.call(this)}n(i,r),Object.assign(i.prototype,o.prototype),i.prototype._new=function(s){return new i(s)},i.prototype._write=function(s,a,l){this._appendBuffer(s),typeof l=="function"&&l()},i.prototype._read=function(s){if(!this.length)return this.push(null);s=Math.min(s,this.length),this.push(this.slice(0,s)),this.consume(s)},i.prototype.end=function(s){r.prototype.end.call(this,s),this._callback&&(this._callback(null,this.slice()),this._callback=null)},i.prototype._destroy=function(s,a){this._bufs.length=0,this.length=0,a(s)},i.prototype._isBufferList=function(s){return s instanceof i||s instanceof o||i.isBufferList(s)},i.isBufferList=o.isBufferList,t.exports=i,t.exports.BufferListStream=i,t.exports.BufferList=o}),EO=Ae((e,t)=>{_e(),we(),be();var r=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};t.exports=r}),ow=Ae((e,t)=>{_e(),we(),be();var r=t.exports,{Buffer:n}=(wt(),ze(bt));r.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},r.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},r.requiredHeaderFlagsErrors={};for(let i in r.requiredHeaderFlags){let s=r.requiredHeaderFlags[i];r.requiredHeaderFlagsErrors[i]="Invalid header flag bits, must be 0x"+s.toString(16)+" for "+r.types[i]+" packet"}r.codes={};for(let i in r.types){let s=r.types[i];r.codes[s]=i}r.CMD_SHIFT=4,r.CMD_MASK=240,r.DUP_MASK=8,r.QOS_MASK=3,r.QOS_SHIFT=1,r.RETAIN_MASK=1,r.VARBYTEINT_MASK=127,r.VARBYTEINT_FIN_MASK=128,r.VARBYTEINT_MAX=268435455,r.SESSIONPRESENT_MASK=1,r.SESSIONPRESENT_HEADER=n.from([r.SESSIONPRESENT_MASK]),r.CONNACK_HEADER=n.from([r.codes.connack<<r.CMD_SHIFT]),r.USERNAME_MASK=128,r.PASSWORD_MASK=64,r.WILL_RETAIN_MASK=32,r.WILL_QOS_MASK=24,r.WILL_QOS_SHIFT=3,r.WILL_FLAG_MASK=4,r.CLEAN_SESSION_MASK=2,r.CONNECT_HEADER=n.from([r.codes.connect<<r.CMD_SHIFT]),r.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},r.propertiesCodes={};for(let i in r.properties){let s=r.properties[i];r.propertiesCodes[s]=i}r.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function o(i){return[0,1,2].map(s=>[0,1].map(a=>[0,1].map(l=>{let u=n.alloc(1);return u.writeUInt8(r.codes[i]<<r.CMD_SHIFT|(a?r.DUP_MASK:0)|s<<r.QOS_SHIFT|l,0,!0),u})))}r.PUBLISH_HEADER=o("publish"),r.SUBSCRIBE_HEADER=o("subscribe"),r.SUBSCRIBE_OPTIONS_QOS_MASK=3,r.SUBSCRIBE_OPTIONS_NL_MASK=1,r.SUBSCRIBE_OPTIONS_NL_SHIFT=2,r.SUBSCRIBE_OPTIONS_RAP_MASK=1,r.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,r.SUBSCRIBE_OPTIONS_RH_MASK=3,r.SUBSCRIBE_OPTIONS_RH_SHIFT=4,r.SUBSCRIBE_OPTIONS_RH=[0,16,32],r.SUBSCRIBE_OPTIONS_NL=4,r.SUBSCRIBE_OPTIONS_RAP=8,r.SUBSCRIBE_OPTIONS_QOS=[0,1,2],r.UNSUBSCRIBE_HEADER=o("unsubscribe"),r.ACKS={unsuback:o("unsuback"),puback:o("puback"),pubcomp:o("pubcomp"),pubrel:o("pubrel"),pubrec:o("pubrec")},r.SUBACK_HEADER=n.from([r.codes.suback<<r.CMD_SHIFT]),r.VERSION3=n.from([3]),r.VERSION4=n.from([4]),r.VERSION5=n.from([5]),r.VERSION131=n.from([131]),r.VERSION132=n.from([132]),r.QOS=[0,1,2].map(i=>n.from([i])),r.EMPTY={pingreq:n.from([r.codes.pingreq<<4,0]),pingresp:n.from([r.codes.pingresp<<4,0]),disconnect:n.from([r.codes.disconnect<<4,0])},r.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},r.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},r.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},r.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}}),SO=Ae((e,t)=>{_e(),we(),be();var r=1e3,n=r*60,o=n*60,i=o*24,s=i*7,a=i*365.25;t.exports=function(p,m){m=m||{};var _=typeof p;if(_==="string"&&p.length>0)return l(p);if(_==="number"&&isFinite(p))return m.long?c(p):u(p);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(p))};function l(p){if(p=String(p),!(p.length>100)){var m=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(p);if(m){var _=parseFloat(m[1]),b=(m[2]||"ms").toLowerCase();switch(b){case"years":case"year":case"yrs":case"yr":case"y":return _*a;case"weeks":case"week":case"w":return _*s;case"days":case"day":case"d":return _*i;case"hours":case"hour":case"hrs":case"hr":case"h":return _*o;case"minutes":case"minute":case"mins":case"min":case"m":return _*n;case"seconds":case"second":case"secs":case"sec":case"s":return _*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return _;default:return}}}}function u(p){var m=Math.abs(p);return m>=i?Math.round(p/i)+"d":m>=o?Math.round(p/o)+"h":m>=n?Math.round(p/n)+"m":m>=r?Math.round(p/r)+"s":p+"ms"}function c(p){var m=Math.abs(p);return m>=i?d(p,m,i,"day"):m>=o?d(p,m,o,"hour"):m>=n?d(p,m,n,"minute"):m>=r?d(p,m,r,"second"):p+" ms"}function d(p,m,_,b){var T=m>=_*1.5;return Math.round(p/_)+" "+b+(T?"s":"")}}),AO=Ae((e,t)=>{_e(),we(),be();function r(n){i.debug=i,i.default=i,i.coerce=d,i.disable=l,i.enable=a,i.enabled=u,i.humanize=SO(),i.destroy=p,Object.keys(n).forEach(m=>{i[m]=n[m]}),i.names=[],i.skips=[],i.formatters={};function o(m){let _=0;for(let b=0;b<m.length;b++)_=(_<<5)-_+m.charCodeAt(b),_|=0;return i.colors[Math.abs(_)%i.colors.length]}i.selectColor=o;function i(m){let _,b=null,T,N;function R(...S){if(!R.enabled)return;let D=R,U=Number(new Date),x=U-(_||U);D.diff=x,D.prev=_,D.curr=U,_=U,S[0]=i.coerce(S[0]),typeof S[0]!="string"&&S.unshift("%O");let L=0;S[0]=S[0].replace(/%([a-zA-Z%])/g,(j,Y)=>{if(j==="%%")return"%";L++;let se=i.formatters[Y];if(typeof se=="function"){let re=S[L];j=se.call(D,re),S.splice(L,1),L--}return j}),i.formatArgs.call(D,S),(D.log||i.log).apply(D,S)}return R.namespace=m,R.useColors=i.useColors(),R.color=i.selectColor(m),R.extend=s,R.destroy=i.destroy,Object.defineProperty(R,"enabled",{enumerable:!0,configurable:!1,get:()=>b!==null?b:(T!==i.namespaces&&(T=i.namespaces,N=i.enabled(m)),N),set:S=>{b=S}}),typeof i.init=="function"&&i.init(R),R}function s(m,_){let b=i(this.namespace+(typeof _>"u"?":":_)+m);return b.log=this.log,b}function a(m){i.save(m),i.namespaces=m,i.names=[],i.skips=[];let _,b=(typeof m=="string"?m:"").split(/[\s,]+/),T=b.length;for(_=0;_<T;_++)b[_]&&(m=b[_].replace(/\*/g,".*?"),m[0]==="-"?i.skips.push(new RegExp("^"+m.slice(1)+"$")):i.names.push(new RegExp("^"+m+"$")))}function l(){let m=[...i.names.map(c),...i.skips.map(c).map(_=>"-"+_)].join(",");return i.enable(""),m}function u(m){if(m[m.length-1]==="*")return!0;let _,b;for(_=0,b=i.skips.length;_<b;_++)if(i.skips[_].test(m))return!1;for(_=0,b=i.names.length;_<b;_++)if(i.names[_].test(m))return!0;return!1}function c(m){return m.toString().substring(2,m.toString().length-2).replace(/\.\*\?$/,"*")}function d(m){return m instanceof Error?m.stack||m.message:m}function p(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return i.enable(i.load()),i}t.exports=r}),sn=Ae((e,t)=>{_e(),we(),be(),e.formatArgs=n,e.save=o,e.load=i,e.useColors=r,e.storage=s(),e.destroy=(()=>{let l=!1;return()=>{l||(l=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function n(l){if(l[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+l[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;let u="color: "+this.color;l.splice(1,0,u,"color: inherit");let c=0,d=0;l[0].replace(/%[a-zA-Z%]/g,p=>{p!=="%%"&&(c++,p==="%c"&&(d=c))}),l.splice(d,0,u)}e.log=console.debug||console.log||(()=>{});function o(l){try{l?e.storage.setItem("debug",l):e.storage.removeItem("debug")}catch{}}function i(){let l;try{l=e.storage.getItem("debug")}catch{}return!l&&typeof He<"u"&&"env"in He&&(l=He.env.DEBUG),l}function s(){try{return localStorage}catch{}}t.exports=AO()(e);var{formatters:a}=t.exports;a.j=function(l){try{return JSON.stringify(l)}catch(u){return"[UnexpectedJSONParseError]: "+u.message}}}),TO=Ae((e,t)=>{_e(),we(),be();var r=vO(),{EventEmitter:n}=(Wo(),ze(Di)),o=EO(),i=ow(),s=sn()("mqtt-packet:parser"),a=class yh extends n{constructor(){super(),this.parser=this.constructor.parser}static parser(u){return this instanceof yh?(this.settings=u||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new yh().parser(u)}_resetState(){s("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new o,this.error=null,this._list=r(),this._stateCounter=0}parse(u){for(this.error&&this._resetState(),this._list.append(u),s("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,s("parse: state complete. _stateCounter is now: %d",this._stateCounter),s("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return s("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){let u=this._list.readUInt8(0),c=u>>i.CMD_SHIFT;this.packet.cmd=i.types[c];let d=u&15,p=i.requiredHeaderFlags[c];return p!=null&&d!==p?this._emitError(new Error(i.requiredHeaderFlagsErrors[c])):(this.packet.retain=(u&i.RETAIN_MASK)!==0,this.packet.qos=u>>i.QOS_SHIFT&i.QOS_MASK,this.packet.qos>2?this._emitError(new Error("Packet must not have both QoS bits set to 1")):(this.packet.dup=(u&i.DUP_MASK)!==0,s("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0))}_parseLength(){let u=this._parseVarByteNum(!0);return u&&(this.packet.length=u.value,this._list.consume(u.bytes)),s("_parseLength %d",u.value),!!u}_parsePayload(){s("_parsePayload: payload %O",this._list);let u=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}u=!0}return s("_parsePayload complete result: %s",u),u}_parseConnect(){s("_parseConnect");let u,c,d,p,m={},_=this.packet,b=this._parseString();if(b===null)return this._emitError(new Error("Cannot parse protocolId"));if(b!=="MQTT"&&b!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(_.protocolId=b,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(_.protocolVersion=this._list.readUInt8(this._pos),_.protocolVersion>=128&&(_.bridgeMode=!0,_.protocolVersion=_.protocolVersion-128),_.protocolVersion!==3&&_.protocolVersion!==4&&_.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(this._list.readUInt8(this._pos)&1)return this._emitError(new Error("Connect flag bit 0 must be 0, but got 1"));m.username=this._list.readUInt8(this._pos)&i.USERNAME_MASK,m.password=this._list.readUInt8(this._pos)&i.PASSWORD_MASK,m.will=this._list.readUInt8(this._pos)&i.WILL_FLAG_MASK;let T=!!(this._list.readUInt8(this._pos)&i.WILL_RETAIN_MASK),N=(this._list.readUInt8(this._pos)&i.WILL_QOS_MASK)>>i.WILL_QOS_SHIFT;if(m.will)_.will={},_.will.retain=T,_.will.qos=N;else{if(T)return this._emitError(new Error("Will Retain Flag must be set to zero when Will Flag is set to 0"));if(N)return this._emitError(new Error("Will QoS must be set to zero when Will Flag is set to 0"))}if(_.clean=(this._list.readUInt8(this._pos)&i.CLEAN_SESSION_MASK)!==0,this._pos++,_.keepalive=this._parseNum(),_.keepalive===-1)return this._emitError(new Error("Packet too short"));if(_.protocolVersion===5){let S=this._parseProperties();Object.getOwnPropertyNames(S).length&&(_.properties=S)}let R=this._parseString();if(R===null)return this._emitError(new Error("Packet too short"));if(_.clientId=R,s("_parseConnect: packet.clientId: %s",_.clientId),m.will){if(_.protocolVersion===5){let S=this._parseProperties();Object.getOwnPropertyNames(S).length&&(_.will.properties=S)}if(u=this._parseString(),u===null)return this._emitError(new Error("Cannot parse will topic"));if(_.will.topic=u,s("_parseConnect: packet.will.topic: %s",_.will.topic),c=this._parseBuffer(),c===null)return this._emitError(new Error("Cannot parse will payload"));_.will.payload=c,s("_parseConnect: packet.will.paylaod: %s",_.will.payload)}if(m.username){if(p=this._parseString(),p===null)return this._emitError(new Error("Cannot parse username"));_.username=p,s("_parseConnect: packet.username: %s",_.username)}if(m.password){if(d=this._parseBuffer(),d===null)return this._emitError(new Error("Cannot parse password"));_.password=d}return this.settings=_,s("_parseConnect: complete"),_}_parseConnack(){s("_parseConnack");let u=this.packet;if(this._list.length<1)return null;let c=this._list.readUInt8(this._pos++);if(c>1)return this._emitError(new Error("Invalid connack flags, bits 7-1 must be set to 0"));if(u.sessionPresent=!!(c&i.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?u.reasonCode=this._list.readUInt8(this._pos++):u.reasonCode=0;else{if(this._list.length<2)return null;u.returnCode=this._list.readUInt8(this._pos++)}if(u.returnCode===-1||u.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){let d=this._parseProperties();Object.getOwnPropertyNames(d).length&&(u.properties=d)}s("_parseConnack: complete")}_parsePublish(){s("_parsePublish");let u=this.packet;if(u.topic=this._parseString(),u.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(u.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}u.payload=this._list.slice(this._pos,u.length),s("_parsePublish: payload from buffer list: %o",u.payload)}}_parseSubscribe(){s("_parseSubscribe");let u=this.packet,c,d,p,m,_,b,T;if(u.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let N=this._parseProperties();Object.getOwnPropertyNames(N).length&&(u.properties=N)}if(u.length<=0)return this._emitError(new Error("Malformed subscribe, no payload specified"));for(;this._pos<u.length;){if(c=this._parseString(),c===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=u.length)return this._emitError(new Error("Malformed Subscribe Payload"));if(d=this._parseByte(),this.settings.protocolVersion===5){if(d&192)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-6 must be 0"))}else if(d&252)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-2 must be 0"));if(p=d&i.SUBSCRIBE_OPTIONS_QOS_MASK,p>2)return this._emitError(new Error("Invalid subscribe QoS, must be <= 2"));if(b=(d>>i.SUBSCRIBE_OPTIONS_NL_SHIFT&i.SUBSCRIBE_OPTIONS_NL_MASK)!==0,_=(d>>i.SUBSCRIBE_OPTIONS_RAP_SHIFT&i.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,m=d>>i.SUBSCRIBE_OPTIONS_RH_SHIFT&i.SUBSCRIBE_OPTIONS_RH_MASK,m>2)return this._emitError(new Error("Invalid retain handling, must be <= 2"));T={topic:c,qos:p},this.settings.protocolVersion===5?(T.nl=b,T.rap=_,T.rh=m):this.settings.bridgeMode&&(T.rh=0,T.rap=!0,T.nl=!0),s("_parseSubscribe: push subscription `%s` to subscription",T),u.subscriptions.push(T)}}}_parseSuback(){s("_parseSuback");let u=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed suback, no payload specified"));for(;this._pos<this.packet.length;){let c=this._list.readUInt8(this._pos++);if(this.settings.protocolVersion===5){if(!i.MQTT5_SUBACK_CODES[c])return this._emitError(new Error("Invalid suback code"))}else if(c>2&&c!==128)return this._emitError(new Error("Invalid suback QoS, must be 0, 1, 2 or 128"));this.packet.granted.push(c)}}}_parseUnsubscribe(){s("_parseUnsubscribe");let u=this.packet;if(u.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed unsubscribe, no payload specified"));for(;this._pos<u.length;){let c=this._parseString();if(c===null)return this._emitError(new Error("Cannot parse topic"));s("_parseUnsubscribe: push topic `%s` to unsubscriptions",c),u.unsubscriptions.push(c)}}}_parseUnsuback(){s("_parseUnsuback");let u=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if((this.settings.protocolVersion===3||this.settings.protocolVersion===4)&&u.length!==2)return this._emitError(new Error("Malformed unsuback, payload length must be 2"));if(u.length<=0)return this._emitError(new Error("Malformed unsuback, no payload specified"));if(this.settings.protocolVersion===5){let c=this._parseProperties();for(Object.getOwnPropertyNames(c).length&&(u.properties=c),u.granted=[];this._pos<this.packet.length;){let d=this._list.readUInt8(this._pos++);if(!i.MQTT5_UNSUBACK_CODES[d])return this._emitError(new Error("Invalid unsuback code"));this.packet.granted.push(d)}}}_parseConfirmation(){s("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);let u=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5){if(u.length>2){switch(u.reasonCode=this._parseByte(),this.packet.cmd){case"puback":case"pubrec":if(!i.MQTT5_PUBACK_PUBREC_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break;case"pubrel":case"pubcomp":if(!i.MQTT5_PUBREL_PUBCOMP_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break}s("_parseConfirmation: packet.reasonCode `%d`",u.reasonCode)}else u.reasonCode=0;if(u.length>3){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}}return!0}_parseDisconnect(){let u=this.packet;if(s("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?(u.reasonCode=this._parseByte(),i.MQTT5_DISCONNECT_CODES[u.reasonCode]||this._emitError(new Error("Invalid disconnect reason code"))):u.reasonCode=0;let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}return s("_parseDisconnect result: true"),!0}_parseAuth(){s("_parseAuth");let u=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));if(u.reasonCode=this._parseByte(),!i.MQTT5_AUTH_CODES[u.reasonCode])return this._emitError(new Error("Invalid auth reason code"));let c=this._parseProperties();return Object.getOwnPropertyNames(c).length&&(u.properties=c),s("_parseAuth: result: true"),!0}_parseMessageId(){let u=this.packet;return u.messageId=this._parseNum(),u.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(s("_parseMessageId: packet.messageId %d",u.messageId),!0)}_parseString(u){let c=this._parseNum(),d=c+this._pos;if(c===-1||d>this._list.length||d>this.packet.length)return null;let p=this._list.toString("utf8",this._pos,d);return this._pos+=c,s("_parseString: result: %s",p),p}_parseStringPair(){return s("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){let u=this._parseNum(),c=u+this._pos;if(u===-1||c>this._list.length||c>this.packet.length)return null;let d=this._list.slice(this._pos,c);return this._pos+=u,s("_parseBuffer: result: %o",d),d}_parseNum(){if(this._list.length-this._pos<2)return-1;let u=this._list.readUInt16BE(this._pos);return this._pos+=2,s("_parseNum: result: %s",u),u}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;let u=this._list.readUInt32BE(this._pos);return this._pos+=4,s("_parse4ByteNum: result: %s",u),u}_parseVarByteNum(u){s("_parseVarByteNum");let c=4,d=0,p=1,m=0,_=!1,b,T=this._pos?this._pos:0;for(;d<c&&T+d<this._list.length;){if(b=this._list.readUInt8(T+d++),m+=p*(b&i.VARBYTEINT_MASK),p*=128,!(b&i.VARBYTEINT_FIN_MASK)){_=!0;break}if(this._list.length<=d)break}return!_&&d===c&&this._list.length>=d&&this._emitError(new Error("Invalid variable byte integer")),T&&(this._pos+=d),_?u?_={bytes:d,value:m}:_=m:_=!1,s("_parseVarByteNum: result: %o",_),_}_parseByte(){let u;return this._pos<this._list.length&&(u=this._list.readUInt8(this._pos),this._pos++),s("_parseByte: result: %o",u),u}_parseByType(u){switch(s("_parseByType: type: %s",u),u){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){s("_parseProperties");let u=this._parseVarByteNum(),c=this._pos+u,d={};for(;this._pos<c;){let p=this._parseByte();if(!p)return this._emitError(new Error("Cannot parse property code type")),!1;let m=i.propertiesCodes[p];if(!m)return this._emitError(new Error("Unknown property")),!1;if(m==="userProperties"){d[m]||(d[m]=Object.create(null));let _=this._parseByType(i.propertiesTypes[m]);if(d[m][_.name])if(Array.isArray(d[m][_.name]))d[m][_.name].push(_.value);else{let b=d[m][_.name];d[m][_.name]=[b],d[m][_.name].push(_.value)}else d[m][_.name]=_.value;continue}d[m]?Array.isArray(d[m])?d[m].push(this._parseByType(i.propertiesTypes[m])):(d[m]=[d[m]],d[m].push(this._parseByType(i.propertiesTypes[m]))):d[m]=this._parseByType(i.propertiesTypes[m])}return d}_newPacket(){return s("_newPacket"),this.packet&&(this._list.consume(this.packet.length),s("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),s("_newPacket: new packet"),this.packet=new o,this._pos=0,!0}_emitError(u){s("_emitError",u),this.error=u,this.emit("error",u)}};t.exports=a}),xO=Ae((e,t)=>{_e(),we(),be();var{Buffer:r}=(wt(),ze(bt)),n=65536,o={},i=r.isBuffer(r.from([1,2]).subarray(0,1));function s(c){let d=r.allocUnsafe(2);return d.writeUInt8(c>>8,0),d.writeUInt8(c&255,1),d}function a(){for(let c=0;c<n;c++)o[c]=s(c)}function l(c){let d=0,p=0,m=r.allocUnsafe(4);do d=c%128|0,c=c/128|0,c>0&&(d=d|128),m.writeUInt8(d,p++);while(c>0&&p<4);return c>0&&(p=0),i?m.subarray(0,p):m.slice(0,p)}function u(c){let d=r.allocUnsafe(4);return d.writeUInt32BE(c,0),d}t.exports={cache:o,generateCache:a,generateNumber:s,genBufVariableByteInt:l,generate4ByteBuffer:u}}),IO=Ae((e,t)=>{_e(),we(),be(),typeof He>"u"||!He.version||He.version.indexOf("v0.")===0||He.version.indexOf("v1.")===0&&He.version.indexOf("v1.8.")!==0?t.exports={nextTick:r}:t.exports=He;function r(n,o,i,s){if(typeof n!="function")throw new TypeError('"callback" argument must be a function');var a=arguments.length,l,u;switch(a){case 0:case 1:return He.nextTick(n);case 2:return He.nextTick(function(){n.call(null,o)});case 3:return He.nextTick(function(){n.call(null,o,i)});case 4:return He.nextTick(function(){n.call(null,o,i,s)});default:for(l=new Array(a-1),u=0;u<l.length;)l[u++]=arguments[u];return He.nextTick(function(){n.apply(null,l)})}}}),sw=Ae((e,t)=>{_e(),we(),be();var r=ow(),{Buffer:n}=(wt(),ze(bt)),o=n.allocUnsafe(0),i=n.from([0]),s=xO(),a=IO().nextTick,l=sn()("mqtt-packet:writeToStream"),u=s.cache,c=s.generateNumber,d=s.generateCache,p=s.genBufVariableByteInt,m=s.generate4ByteBuffer,_=ae,b=!0;function T(q,F,X){switch(l("generate called"),F.cork&&(F.cork(),a(N,F)),b&&(b=!1,d()),l("generate: packet.cmd: %s",q.cmd),q.cmd){case"connect":return R(q,F);case"connack":return S(q,F,X);case"publish":return D(q,F,X);case"puback":case"pubrec":case"pubrel":case"pubcomp":return U(q,F,X);case"subscribe":return x(q,F,X);case"suback":return L(q,F,X);case"unsubscribe":return j(q,F,X);case"unsuback":return Y(q,F,X);case"pingreq":case"pingresp":return se(q,F);case"disconnect":return re(q,F,X);case"auth":return P(q,F,X);default:return F.destroy(new Error("Unknown command")),!1}}Object.defineProperty(T,"cacheNumbers",{get(){return _===ae},set(q){q?((!u||Object.keys(u).length===0)&&(b=!0),_=ae):(b=!1,_=z)}});function N(q){q.uncork()}function R(q,F,X){let he=q||{},ce=he.protocolId||"MQTT",Z=he.protocolVersion||4,v=he.will,A=he.clean,E=he.keepalive||0,k=he.clientId||"",M=he.username,ee=he.password,te=he.properties;A===void 0&&(A=!0);let $=0;if(!ce||typeof ce!="string"&&!n.isBuffer(ce))return F.destroy(new Error("Invalid protocolId")),!1;if($+=ce.length+2,Z!==3&&Z!==4&&Z!==5)return F.destroy(new Error("Invalid protocol version")),!1;if($+=1,(typeof k=="string"||n.isBuffer(k))&&(k||Z>=4)&&(k||A))$+=n.byteLength(k)+2;else{if(Z<4)return F.destroy(new Error("clientId must be supplied before 3.1.1")),!1;if(A*1===0)return F.destroy(new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof E!="number"||E<0||E>65535||E%1!==0)return F.destroy(new Error("Invalid keepalive")),!1;$+=2,$+=1;let K,I;if(Z===5){if(K=ge(F,te),!K)return!1;$+=K.length}if(v){if(typeof v!="object")return F.destroy(new Error("Invalid will")),!1;if(!v.topic||typeof v.topic!="string")return F.destroy(new Error("Invalid will topic")),!1;if($+=n.byteLength(v.topic)+2,$+=2,v.payload)if(v.payload.length>=0)typeof v.payload=="string"?$+=n.byteLength(v.payload):$+=v.payload.length;else return F.destroy(new Error("Invalid will payload")),!1;if(I={},Z===5){if(I=ge(F,v.properties),!I)return!1;$+=I.length}}let W=!1;if(M!=null)if(ye(M))W=!0,$+=n.byteLength(M)+2;else return F.destroy(new Error("Invalid username")),!1;if(ee!=null){if(!W)return F.destroy(new Error("Username is required to use password")),!1;if(ye(ee))$+=ve(ee)+2;else return F.destroy(new Error("Invalid password")),!1}F.write(r.CONNECT_HEADER),oe(F,$),de(F,ce),he.bridgeMode&&(Z+=128),F.write(Z===131?r.VERSION131:Z===132?r.VERSION132:Z===4?r.VERSION4:Z===5?r.VERSION5:r.VERSION3);let J=0;return J|=M!=null?r.USERNAME_MASK:0,J|=ee!=null?r.PASSWORD_MASK:0,J|=v&&v.retain?r.WILL_RETAIN_MASK:0,J|=v&&v.qos?v.qos<<r.WILL_QOS_SHIFT:0,J|=v?r.WILL_FLAG_MASK:0,J|=A?r.CLEAN_SESSION_MASK:0,F.write(n.from([J])),_(F,E),Z===5&&K.write(),de(F,k),v&&(Z===5&&I.write(),ne(F,v.topic),de(F,v.payload)),M!=null&&de(F,M),ee!=null&&de(F,ee),!0}function S(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=he===5?ce.reasonCode:ce.returnCode,v=ce.properties,A=2;if(typeof Z!="number")return F.destroy(new Error("Invalid return code")),!1;let E=null;if(he===5){if(E=ge(F,v),!E)return!1;A+=E.length}return F.write(r.CONNACK_HEADER),oe(F,A),F.write(ce.sessionPresent?r.SESSIONPRESENT_HEADER:i),F.write(n.from([Z])),E==null||E.write(),!0}function D(q,F,X){l("publish: packet: %o",q);let he=X?X.protocolVersion:4,ce=q||{},Z=ce.qos||0,v=ce.retain?r.RETAIN_MASK:0,A=ce.topic,E=ce.payload||o,k=ce.messageId,M=ce.properties,ee=0;if(typeof A=="string")ee+=n.byteLength(A)+2;else if(n.isBuffer(A))ee+=A.length+2;else return F.destroy(new Error("Invalid topic")),!1;if(n.isBuffer(E)?ee+=E.length:ee+=n.byteLength(E),Z&&typeof k!="number")return F.destroy(new Error("Invalid messageId")),!1;Z&&(ee+=2);let te=null;if(he===5){if(te=ge(F,M),!te)return!1;ee+=te.length}return F.write(r.PUBLISH_HEADER[Z][ce.dup?1:0][v?1:0]),oe(F,ee),_(F,ve(A)),F.write(A),Z>0&&_(F,k),te==null||te.write(),l("publish: payload: %o",E),F.write(E)}function U(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.cmd||"puback",v=ce.messageId,A=ce.dup&&Z==="pubrel"?r.DUP_MASK:0,E=0,k=ce.reasonCode,M=ce.properties,ee=he===5?3:2;if(Z==="pubrel"&&(E=1),typeof v!="number")return F.destroy(new Error("Invalid messageId")),!1;let te=null;if(he===5&&typeof M=="object"){if(te=O(F,M,X,ee),!te)return!1;ee+=te.length}return F.write(r.ACKS[Z][E][A][0]),ee===3&&(ee+=k!==0?1:-1),oe(F,ee),_(F,v),he===5&&ee!==2&&F.write(n.from([k])),te!==null?te.write():ee===4&&F.write(n.from([0])),!0}function x(q,F,X){l("subscribe: packet: ");let he=X?X.protocolVersion:4,ce=q||{},Z=ce.dup?r.DUP_MASK:0,v=ce.messageId,A=ce.subscriptions,E=ce.properties,k=0;if(typeof v!="number")return F.destroy(new Error("Invalid messageId")),!1;k+=2;let M=null;if(he===5){if(M=ge(F,E),!M)return!1;k+=M.length}if(typeof A=="object"&&A.length)for(let te=0;te<A.length;te+=1){let $=A[te].topic,K=A[te].qos;if(typeof $!="string")return F.destroy(new Error("Invalid subscriptions - invalid topic")),!1;if(typeof K!="number")return F.destroy(new Error("Invalid subscriptions - invalid qos")),!1;if(he===5){if(typeof(A[te].nl||!1)!="boolean")return F.destroy(new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(A[te].rap||!1)!="boolean")return F.destroy(new Error("Invalid subscriptions - invalid Retain as Published")),!1;let I=A[te].rh||0;if(typeof I!="number"||I>2)return F.destroy(new Error("Invalid subscriptions - invalid Retain Handling")),!1}k+=n.byteLength($)+2+1}else return F.destroy(new Error("Invalid subscriptions")),!1;l("subscribe: writing to stream: %o",r.SUBSCRIBE_HEADER),F.write(r.SUBSCRIBE_HEADER[1][Z?1:0][0]),oe(F,k),_(F,v),M!==null&&M.write();let ee=!0;for(let te of A){let $=te.topic,K=te.qos,I=+te.nl,W=+te.rap,J=te.rh,le;ne(F,$),le=r.SUBSCRIBE_OPTIONS_QOS[K],he===5&&(le|=I?r.SUBSCRIBE_OPTIONS_NL:0,le|=W?r.SUBSCRIBE_OPTIONS_RAP:0,le|=J?r.SUBSCRIBE_OPTIONS_RH[J]:0),ee=F.write(n.from([le]))}return ee}function L(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.messageId,v=ce.granted,A=ce.properties,E=0;if(typeof Z!="number")return F.destroy(new Error("Invalid messageId")),!1;if(E+=2,typeof v=="object"&&v.length)for(let M=0;M<v.length;M+=1){if(typeof v[M]!="number")return F.destroy(new Error("Invalid qos vector")),!1;E+=1}else return F.destroy(new Error("Invalid qos vector")),!1;let k=null;if(he===5){if(k=O(F,A,X,E),!k)return!1;E+=k.length}return F.write(r.SUBACK_HEADER),oe(F,E),_(F,Z),k!==null&&k.write(),F.write(n.from(v))}function j(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.messageId,v=ce.dup?r.DUP_MASK:0,A=ce.unsubscriptions,E=ce.properties,k=0;if(typeof Z!="number")return F.destroy(new Error("Invalid messageId")),!1;if(k+=2,typeof A=="object"&&A.length)for(let te=0;te<A.length;te+=1){if(typeof A[te]!="string")return F.destroy(new Error("Invalid unsubscriptions")),!1;k+=n.byteLength(A[te])+2}else return F.destroy(new Error("Invalid unsubscriptions")),!1;let M=null;if(he===5){if(M=ge(F,E),!M)return!1;k+=M.length}F.write(r.UNSUBSCRIBE_HEADER[1][v?1:0][0]),oe(F,k),_(F,Z),M!==null&&M.write();let ee=!0;for(let te=0;te<A.length;te++)ee=ne(F,A[te]);return ee}function Y(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.messageId,v=ce.dup?r.DUP_MASK:0,A=ce.granted,E=ce.properties,k=ce.cmd,M=0,ee=2;if(typeof Z!="number")return F.destroy(new Error("Invalid messageId")),!1;if(he===5)if(typeof A=="object"&&A.length)for(let $=0;$<A.length;$+=1){if(typeof A[$]!="number")return F.destroy(new Error("Invalid qos vector")),!1;ee+=1}else return F.destroy(new Error("Invalid qos vector")),!1;let te=null;if(he===5){if(te=O(F,E,X,ee),!te)return!1;ee+=te.length}return F.write(r.ACKS[k][M][v][0]),oe(F,ee),_(F,Z),te!==null&&te.write(),he===5&&F.write(n.from(A)),!0}function se(q,F,X){return F.write(r.EMPTY[q.cmd])}function re(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.reasonCode,v=ce.properties,A=he===5?1:0,E=null;if(he===5){if(E=O(F,v,X,A),!E)return!1;A+=E.length}return F.write(n.from([r.codes.disconnect<<4])),oe(F,A),he===5&&F.write(n.from([Z])),E!==null&&E.write(),!0}function P(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.reasonCode,v=ce.properties,A=he===5?1:0;he!==5&&F.destroy(new Error("Invalid mqtt version for auth packet"));let E=O(F,v,X,A);return E?(A+=E.length,F.write(n.from([r.codes.auth<<4])),oe(F,A),F.write(n.from([Z])),E!==null&&E.write(),!0):!1}var B={};function oe(q,F){if(F>r.VARBYTEINT_MAX)return q.destroy(new Error(`Invalid variable byte integer: ${F}`)),!1;let X=B[F];return X||(X=p(F),F<16384&&(B[F]=X)),l("writeVarByteInt: writing to stream: %o",X),q.write(X)}function ne(q,F){let X=n.byteLength(F);return _(q,X),l("writeString: %s",F),q.write(F,"utf8")}function ue(q,F,X){ne(q,F),ne(q,X)}function ae(q,F){return l("writeNumberCached: number: %d",F),l("writeNumberCached: %o",u[F]),q.write(u[F])}function z(q,F){let X=c(F);return l("writeNumberGenerated: %o",X),q.write(X)}function pe(q,F){let X=m(F);return l("write4ByteNumber: %o",X),q.write(X)}function de(q,F){typeof F=="string"?ne(q,F):F?(_(q,F.length),q.write(F)):_(q,0)}function ge(q,F){if(typeof F!="object"||F.length!=null)return{length:1,write(){me(q,{},0)}};let X=0;function he(ce,Z){let v=r.propertiesTypes[ce],A=0;switch(v){case"byte":{if(typeof Z!="boolean")return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=2;break}case"int8":{if(typeof Z!="number"||Z<0||Z>255)return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=2;break}case"binary":{if(Z&&Z===null)return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=1+n.byteLength(Z)+2;break}case"int16":{if(typeof Z!="number"||Z<0||Z>65535)return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=3;break}case"int32":{if(typeof Z!="number"||Z<0||Z>4294967295)return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=5;break}case"var":{if(typeof Z!="number"||Z<0||Z>268435455)return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=1+n.byteLength(p(Z));break}case"string":{if(typeof Z!="string")return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=3+n.byteLength(Z.toString());break}case"pair":{if(typeof Z!="object")return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=Object.getOwnPropertyNames(Z).reduce((E,k)=>{let M=Z[k];return Array.isArray(M)?E+=M.reduce((ee,te)=>(ee+=3+n.byteLength(k.toString())+2+n.byteLength(te.toString()),ee),0):E+=3+n.byteLength(k.toString())+2+n.byteLength(Z[k].toString()),E},0);break}default:return q.destroy(new Error(`Invalid property ${ce}: ${Z}`)),!1}return A}if(F)for(let ce in F){let Z=0,v=0,A=F[ce];if(Array.isArray(A))for(let E=0;E<A.length;E++){if(v=he(ce,A[E]),!v)return!1;Z+=v}else{if(v=he(ce,A),!v)return!1;Z=v}if(!Z)return!1;X+=Z}return{length:n.byteLength(p(X))+X,write(){me(q,F,X)}}}function O(q,F,X,he){let ce=["reasonString","userProperties"],Z=X&&X.properties&&X.properties.maximumPacketSize?X.properties.maximumPacketSize:0,v=ge(q,F);if(Z)for(;he+v.length>Z;){let A=ce.shift();if(A&&F[A])delete F[A],v=ge(q,F);else return!1}return v}function ie(q,F,X){switch(r.propertiesTypes[F]){case"byte":{q.write(n.from([r.properties[F]])),q.write(n.from([+X]));break}case"int8":{q.write(n.from([r.properties[F]])),q.write(n.from([X]));break}case"binary":{q.write(n.from([r.properties[F]])),de(q,X);break}case"int16":{q.write(n.from([r.properties[F]])),_(q,X);break}case"int32":{q.write(n.from([r.properties[F]])),pe(q,X);break}case"var":{q.write(n.from([r.properties[F]])),oe(q,X);break}case"string":{q.write(n.from([r.properties[F]])),ne(q,X);break}case"pair":{Object.getOwnPropertyNames(X).forEach(he=>{let ce=X[he];Array.isArray(ce)?ce.forEach(Z=>{q.write(n.from([r.properties[F]])),ue(q,he.toString(),Z.toString())}):(q.write(n.from([r.properties[F]])),ue(q,he.toString(),ce.toString()))});break}default:return q.destroy(new Error(`Invalid property ${F} value: ${X}`)),!1}}function me(q,F,X){oe(q,X);for(let he in F)if(Object.prototype.hasOwnProperty.call(F,he)&&F[he]!==null){let ce=F[he];if(Array.isArray(ce))for(let Z=0;Z<ce.length;Z++)ie(q,he,ce[Z]);else ie(q,he,ce)}}function ve(q){return q?q instanceof n?q.length:n.byteLength(q):0}function ye(q){return typeof q=="string"||q instanceof n}t.exports=T}),CO=Ae((e,t)=>{_e(),we(),be();var r=sw(),{EventEmitter:n}=(Wo(),ze(Di)),{Buffer:o}=(wt(),ze(bt));function i(a,l){let u=new s;return r(a,u,l),u.concat()}var s=class extends n{constructor(){super(),this._array=new Array(20),this._i=0}write(a){return this._array[this._i++]=a,!0}concat(){let a=0,l=new Array(this._array.length),u=this._array,c=0,d;for(d=0;d<u.length&&u[d]!==void 0;d++)typeof u[d]!="string"?l[d]=u[d].length:l[d]=o.byteLength(u[d]),a+=l[d];let p=o.allocUnsafe(a);for(d=0;d<u.length&&u[d]!==void 0;d++)typeof u[d]!="string"?(u[d].copy(p,c),c+=l[d]):(p.write(u[d],c),c+=l[d]);return p}destroy(a){a&&this.emit("error",a)}};t.exports=i}),RO=Ae(e=>{_e(),we(),be(),e.parser=TO().parser,e.generate=CO(),e.writeToStream=sw()}),aw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(){this.nextId=Math.max(1,Math.floor(Math.random()*65535))}allocate(){let r=this.nextId++;return this.nextId===65536&&(this.nextId=1),r}getLastAllocated(){return this.nextId===1?65535:this.nextId-1}register(r){return!0}deallocate(r){}clear(){}};e.default=t}),OO=Ae((e,t)=>{_e(),we(),be(),t.exports=n;function r(i){return i instanceof cl?cl.from(i):new i.constructor(i.buffer.slice(),i.byteOffset,i.length)}function n(i){if(i=i||{},i.circles)return o(i);return i.proto?l:a;function s(u,c){for(var d=Object.keys(u),p=new Array(d.length),m=0;m<d.length;m++){var _=d[m],b=u[_];typeof b!="object"||b===null?p[_]=b:b instanceof Date?p[_]=new Date(b):ArrayBuffer.isView(b)?p[_]=r(b):p[_]=c(b)}return p}function a(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return s(u,a);if(u instanceof Map)return new Map(s(Array.from(u),a));if(u instanceof Set)return new Set(s(Array.from(u),a));var c={};for(var d in u)if(Object.hasOwnProperty.call(u,d)!==!1){var p=u[d];typeof p!="object"||p===null?c[d]=p:p instanceof Date?c[d]=new Date(p):p instanceof Map?c[d]=new Map(s(Array.from(p),a)):p instanceof Set?c[d]=new Set(s(Array.from(p),a)):ArrayBuffer.isView(p)?c[d]=r(p):c[d]=a(p)}return c}function l(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return s(u,l);if(u instanceof Map)return new Map(s(Array.from(u),l));if(u instanceof Set)return new Set(s(Array.from(u),l));var c={};for(var d in u){var p=u[d];typeof p!="object"||p===null?c[d]=p:p instanceof Date?c[d]=new Date(p):p instanceof Map?c[d]=new Map(s(Array.from(p),l)):p instanceof Set?c[d]=new Set(s(Array.from(p),l)):ArrayBuffer.isView(p)?c[d]=r(p):c[d]=l(p)}return c}}function o(i){var s=[],a=[];return i.proto?c:u;function l(d,p){for(var m=Object.keys(d),_=new Array(m.length),b=0;b<m.length;b++){var T=m[b],N=d[T];if(typeof N!="object"||N===null)_[T]=N;else if(N instanceof Date)_[T]=new Date(N);else if(ArrayBuffer.isView(N))_[T]=r(N);else{var R=s.indexOf(N);R!==-1?_[T]=a[R]:_[T]=p(N)}}return _}function u(d){if(typeof d!="object"||d===null)return d;if(d instanceof Date)return new Date(d);if(Array.isArray(d))return l(d,u);if(d instanceof Map)return new Map(l(Array.from(d),u));if(d instanceof Set)return new Set(l(Array.from(d),u));var p={};s.push(d),a.push(p);for(var m in d)if(Object.hasOwnProperty.call(d,m)!==!1){var _=d[m];if(typeof _!="object"||_===null)p[m]=_;else if(_ instanceof Date)p[m]=new Date(_);else if(_ instanceof Map)p[m]=new Map(l(Array.from(_),u));else if(_ instanceof Set)p[m]=new Set(l(Array.from(_),u));else if(ArrayBuffer.isView(_))p[m]=r(_);else{var b=s.indexOf(_);b!==-1?p[m]=a[b]:p[m]=u(_)}}return s.pop(),a.pop(),p}function c(d){if(typeof d!="object"||d===null)return d;if(d instanceof Date)return new Date(d);if(Array.isArray(d))return l(d,c);if(d instanceof Map)return new Map(l(Array.from(d),c));if(d instanceof Set)return new Set(l(Array.from(d),c));var p={};s.push(d),a.push(p);for(var m in d){var _=d[m];if(typeof _!="object"||_===null)p[m]=_;else if(_ instanceof Date)p[m]=new Date(_);else if(_ instanceof Map)p[m]=new Map(l(Array.from(_),c));else if(_ instanceof Set)p[m]=new Set(l(Array.from(_),c));else if(ArrayBuffer.isView(_))p[m]=r(_);else{var b=s.indexOf(_);b!==-1?p[m]=a[b]:p[m]=c(_)}}return s.pop(),a.pop(),p}}}),kO=Ae((e,t)=>{_e(),we(),be(),t.exports=OO()()}),NO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.validateTopics=e.validateTopic=void 0;function t(n){let o=n.split("/");for(let i=0;i<o.length;i++)if(o[i]!=="+"){if(o[i]==="#")return i===o.length-1;if(o[i].indexOf("+")!==-1||o[i].indexOf("#")!==-1)return!1}return!0}e.validateTopic=t;function r(n){if(n.length===0)return"empty_topic_list";for(let o=0;o<n.length;o++)if(!t(n[o]))return n[o];return null}e.validateTopics=r}),lw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=$i(),r={objectMode:!0},n={clean:!0},o=class{constructor(i){this.options=i||{},this.options=Object.assign(Object.assign({},n),i),this._inflights=new Map}put(i,s){return this._inflights.set(i.messageId,i),s&&s(),this}createStream(){let i=new t.Readable(r),s=[],a=!1,l=0;return this._inflights.forEach((u,c)=>{s.push(u)}),i._read=()=>{!a&&l<s.length?i.push(s[l++]):i.push(null)},i.destroy=u=>{if(!a)return a=!0,setTimeout(()=>{i.emit("close")},0),i},i}del(i,s){let a=this._inflights.get(i.messageId);return a?(this._inflights.delete(i.messageId),s(null,a)):s&&s(new Error("missing packet")),this}get(i,s){let a=this._inflights.get(i.messageId);return a?s(null,a):s&&s(new Error("missing packet")),this}close(i){this.options.clean&&(this._inflights=null),i&&i()}};e.default=o}),MO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=[0,16,128,131,135,144,145,151,153],r=(n,o,i)=>{n.log("handlePublish: packet %o",o),i=typeof i<"u"?i:n.noop;let s=o.topic.toString(),a=o.payload,{qos:l}=o,{messageId:u}=o,{options:c}=n;if(n.options.protocolVersion===5){let d;if(o.properties&&(d=o.properties.topicAlias),typeof d<"u")if(s.length===0)if(d>0&&d<=65535){let p=n.topicAliasRecv.getTopicByAlias(d);if(p)s=p,n.log("handlePublish :: topic complemented by alias. topic: %s - alias: %d",s,d);else{n.log("handlePublish :: unregistered topic alias. alias: %d",d),n.emit("error",new Error("Received unregistered Topic Alias"));return}}else{n.log("handlePublish :: topic alias out of range. alias: %d",d),n.emit("error",new Error("Received Topic Alias is out of range"));return}else if(n.topicAliasRecv.put(s,d))n.log("handlePublish :: registered topic: %s - alias: %d",s,d);else{n.log("handlePublish :: topic alias out of range. alias: %d",d),n.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(n.log("handlePublish: qos %d",l),l){case 2:{c.customHandleAcks(s,a,o,(d,p)=>{if(typeof d=="number"&&(p=d,d=null),d)return n.emit("error",d);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for pubrec"));p?n._sendPacket({cmd:"pubrec",messageId:u,reasonCode:p},i):n.incomingStore.put(o,()=>{n._sendPacket({cmd:"pubrec",messageId:u},i)})});break}case 1:{c.customHandleAcks(s,a,o,(d,p)=>{if(typeof d=="number"&&(p=d,d=null),d)return n.emit("error",d);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for puback"));p||n.emit("message",s,a,o),n.handleMessage(o,m=>{if(m)return i&&i(m);n._sendPacket({cmd:"puback",messageId:u,reasonCode:p},i)})});break}case 0:n.emit("message",s,a,o),n.handleMessage(o,i);break;default:n.log("handlePublish: unknown QoS. Doing nothing.");break}};e.default=r}),PO=Ae((e,t)=>{t.exports={version:"5.10.1"}}),Ho=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.MQTTJS_VERSION=e.nextTick=e.applyMixin=e.ErrorWithReasonCode=void 0;var t=class uw extends Error{constructor(o,i){super(o),this.code=i,Object.setPrototypeOf(this,uw.prototype),Object.getPrototypeOf(this).name="ErrorWithReasonCode"}};e.ErrorWithReasonCode=t;function r(n,o,i=!1){var s;let a=[o];for(;;){let l=a[0],u=Object.getPrototypeOf(l);if(u!=null&&u.prototype)a.unshift(u);else break}for(let l of a)for(let u of Object.getOwnPropertyNames(l.prototype))(i||u!=="constructor")&&Object.defineProperty(n.prototype,u,(s=Object.getOwnPropertyDescriptor(l.prototype,u))!==null&&s!==void 0?s:Object.create(null))}e.applyMixin=r,e.nextTick=typeof(He==null?void 0:He.nextTick)=="function"?He.nextTick:n=>{setTimeout(n,0)},e.MQTTJS_VERSION=PO().version}),nu=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=void 0;var t=Ho();e.ReasonCodes={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};var r=(n,o)=>{let{messageId:i}=o,s=o.cmd,a=null,l=n.outgoing[i]?n.outgoing[i].cb:null,u=null;if(!l){n.log("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(n.log("_handleAck :: packet type",s),s){case"pubcomp":case"puback":{let c=o.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{l(u,o)})):n._removeOutgoingAndStoreMessage(i,l);break}case"pubrec":{a={cmd:"pubrel",qos:2,messageId:i};let c=o.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{l(u,o)})):n._sendPacket(a);break}case"suback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i);let c=o.granted;for(let d=0;d<c.length;d++){let p=c[d];if(p&128){u=new Error(`Subscribe error: ${e.ReasonCodes[p]}`),u.code=p;let m=n.messageIdToTopic[i];m&&m.forEach(_=>{delete n._resubscribeTopics[_]})}}delete n.messageIdToTopic[i],n._invokeStoreProcessingQueue(),l(u,o);break}case"unsuback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i),n._invokeStoreProcessingQueue(),l(null,o);break}default:n.emit("error",new Error("unrecognized packet type"))}n.disconnecting&&Object.keys(n.outgoing).length===0&&n.emit("outgoingEmpty")};e.default=r}),LO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=Ho(),r=nu(),n=(o,i)=>{let{options:s}=o,a=s.protocolVersion,l=a===5?i.reasonCode:i.returnCode;if(a!==5){let u=new t.ErrorWithReasonCode(`Protocol error: Auth packets are only supported in MQTT 5. Your version:${a}`,l);o.emit("error",u);return}o.handleAuth(i,(u,c)=>{if(u){o.emit("error",u);return}if(l===24)o.reconnecting=!1,o._sendPacket(c);else{let d=new t.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[l]}`,l);o.emit("error",d)}})};e.default=n}),BO=Ae(e=>{var m,_,b,T,N,R,S,D,U,x,L,j,Y,se,re,P,B,oe,ne,ue,ae,z,pe,de,ge,O,_h,me,ve,ye,q,cw,X,he,ce,En,Sn,bh,Da,$a,Ze,wh,cs,$;_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=void 0;var t=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,r=new Set,n=typeof He=="object"&&He?He:{},o=(K,I,W,J)=>{typeof n.emitWarning=="function"?n.emitWarning(K,I,W,J):console.error(`[${W}] ${I}: ${K}`)},i=globalThis.AbortController,s=globalThis.AbortSignal;if(typeof i>"u"){s=class{constructor(){rt(this,"onabort");rt(this,"_onabort",[]);rt(this,"reason");rt(this,"aborted",!1)}addEventListener(W,J){this._onabort.push(J)}},i=class{constructor(){rt(this,"signal",new s);I()}abort(W){var J,le;if(!this.signal.aborted){this.signal.reason=W,this.signal.aborted=!0;for(let y of this.signal._onabort)y(W);(le=(J=this.signal).onabort)==null||le.call(J,W)}}};let K=((m=n.env)==null?void 0:m.LRU_CACHE_IGNORE_AC_WARNING)!=="1",I=()=>{K&&(K=!1,o("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",I))}}var a=K=>!r.has(K),l=K=>K&&K===Math.floor(K)&&K>0&&isFinite(K),u=K=>l(K)?K<=Math.pow(2,8)?Uint8Array:K<=Math.pow(2,16)?Uint16Array:K<=Math.pow(2,32)?Uint32Array:K<=Number.MAX_SAFE_INTEGER?c:null:null,c=class extends Array{constructor(K){super(K),this.fill(0)}},d=(_=class{constructor(I,W){rt(this,"heap");rt(this,"length");if(!Q(_,b))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new W(I),this.length=0}static create(I){let W=u(I);if(!W)return[];Le(_,b,!0);let J=new _(I,W);return Le(_,b,!1),J}push(I){this.heap[this.length++]=I}pop(){return this.heap[--this.length]}},b=new WeakMap,Fe(_,b,!1),_),p=($=class{constructor(I){Fe(this,O);Fe(this,T);Fe(this,N);Fe(this,R);Fe(this,S);Fe(this,D);rt(this,"ttl");rt(this,"ttlResolution");rt(this,"ttlAutopurge");rt(this,"updateAgeOnGet");rt(this,"updateAgeOnHas");rt(this,"allowStale");rt(this,"noDisposeOnSet");rt(this,"noUpdateTTL");rt(this,"maxEntrySize");rt(this,"sizeCalculation");rt(this,"noDeleteOnFetchRejection");rt(this,"noDeleteOnStaleGet");rt(this,"allowStaleOnFetchAbort");rt(this,"allowStaleOnFetchRejection");rt(this,"ignoreFetchAbort");Fe(this,U);Fe(this,x);Fe(this,L);Fe(this,j);Fe(this,Y);Fe(this,se);Fe(this,re);Fe(this,P);Fe(this,B);Fe(this,oe);Fe(this,ne);Fe(this,ue);Fe(this,ae);Fe(this,z);Fe(this,pe);Fe(this,de);Fe(this,ge);Fe(this,me,()=>{});Fe(this,ve,()=>{});Fe(this,ye,()=>{});Fe(this,q,()=>!1);Fe(this,X,I=>{});Fe(this,he,(I,W,J)=>{});Fe(this,ce,(I,W,J,le)=>{if(J||le)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});let{max:W=0,ttl:J,ttlResolution:le=1,ttlAutopurge:y,updateAgeOnGet:h,updateAgeOnHas:f,allowStale:g,dispose:w,disposeAfter:C,noDisposeOnSet:V,noUpdateTTL:fe,maxSize:xe=0,maxEntrySize:ke=0,sizeCalculation:Te,fetchMethod:Oe,noDeleteOnFetchRejection:Re,noDeleteOnStaleGet:Ve,allowStaleOnFetchRejection:lt,allowStaleOnFetchAbort:Je,ignoreFetchAbort:st}=I;if(W!==0&&!l(W))throw new TypeError("max option must be a nonnegative integer");let gt=W?u(W):Array;if(!gt)throw new Error("invalid max value: "+W);if(Le(this,T,W),Le(this,N,xe),this.maxEntrySize=ke||Q(this,N),this.sizeCalculation=Te,this.sizeCalculation){if(!Q(this,N)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(Oe!==void 0&&typeof Oe!="function")throw new TypeError("fetchMethod must be a function if specified");if(Le(this,D,Oe),Le(this,de,!!Oe),Le(this,L,new Map),Le(this,j,new Array(W).fill(void 0)),Le(this,Y,new Array(W).fill(void 0)),Le(this,se,new gt(W)),Le(this,re,new gt(W)),Le(this,P,0),Le(this,B,0),Le(this,oe,d.create(W)),Le(this,U,0),Le(this,x,0),typeof w=="function"&&Le(this,R,w),typeof C=="function"?(Le(this,S,C),Le(this,ne,[])):(Le(this,S,void 0),Le(this,ne,void 0)),Le(this,pe,!!Q(this,R)),Le(this,ge,!!Q(this,S)),this.noDisposeOnSet=!!V,this.noUpdateTTL=!!fe,this.noDeleteOnFetchRejection=!!Re,this.allowStaleOnFetchRejection=!!lt,this.allowStaleOnFetchAbort=!!Je,this.ignoreFetchAbort=!!st,this.maxEntrySize!==0){if(Q(this,N)!==0&&!l(Q(this,N)))throw new TypeError("maxSize must be a positive integer if specified");if(!l(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Me(this,O,cw).call(this)}if(this.allowStale=!!g,this.noDeleteOnStaleGet=!!Ve,this.updateAgeOnGet=!!h,this.updateAgeOnHas=!!f,this.ttlResolution=l(le)||le===0?le:1,this.ttlAutopurge=!!y,this.ttl=J||0,this.ttl){if(!l(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Me(this,O,_h).call(this)}if(Q(this,T)===0&&this.ttl===0&&Q(this,N)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!Q(this,T)&&!Q(this,N)){let ut="LRU_CACHE_UNBOUNDED";a(ut)&&(r.add(ut),o("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",ut,$))}}static unsafeExposeInternals(I){return{starts:Q(I,ae),ttls:Q(I,z),sizes:Q(I,ue),keyMap:Q(I,L),keyList:Q(I,j),valList:Q(I,Y),next:Q(I,se),prev:Q(I,re),get head(){return Q(I,P)},get tail(){return Q(I,B)},free:Q(I,oe),isBackgroundFetch:W=>{var J;return Me(J=I,O,Ze).call(J,W)},backgroundFetch:(W,J,le,y)=>{var h;return Me(h=I,O,$a).call(h,W,J,le,y)},moveToTail:W=>{var J;return Me(J=I,O,cs).call(J,W)},indexes:W=>{var J;return Me(J=I,O,En).call(J,W)},rindexes:W=>{var J;return Me(J=I,O,Sn).call(J,W)},isStale:W=>{var J;return Q(J=I,q).call(J,W)}}}get max(){return Q(this,T)}get maxSize(){return Q(this,N)}get calculatedSize(){return Q(this,x)}get size(){return Q(this,U)}get fetchMethod(){return Q(this,D)}get dispose(){return Q(this,R)}get disposeAfter(){return Q(this,S)}getRemainingTTL(I){return Q(this,L).has(I)?1/0:0}*entries(){for(let I of Me(this,O,En).call(this))Q(this,Y)[I]!==void 0&&Q(this,j)[I]!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield[Q(this,j)[I],Q(this,Y)[I]])}*rentries(){for(let I of Me(this,O,Sn).call(this))Q(this,Y)[I]!==void 0&&Q(this,j)[I]!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield[Q(this,j)[I],Q(this,Y)[I]])}*keys(){for(let I of Me(this,O,En).call(this)){let W=Q(this,j)[I];W!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield W)}}*rkeys(){for(let I of Me(this,O,Sn).call(this)){let W=Q(this,j)[I];W!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield W)}}*values(){for(let I of Me(this,O,En).call(this))Q(this,Y)[I]!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield Q(this,Y)[I])}*rvalues(){for(let I of Me(this,O,Sn).call(this))Q(this,Y)[I]!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield Q(this,Y)[I])}[Symbol.iterator](){return this.entries()}find(I,W={}){for(let J of Me(this,O,En).call(this)){let le=Q(this,Y)[J],y=Me(this,O,Ze).call(this,le)?le.__staleWhileFetching:le;if(y!==void 0&&I(y,Q(this,j)[J],this))return this.get(Q(this,j)[J],W)}}forEach(I,W=this){for(let J of Me(this,O,En).call(this)){let le=Q(this,Y)[J],y=Me(this,O,Ze).call(this,le)?le.__staleWhileFetching:le;y!==void 0&&I.call(W,y,Q(this,j)[J],this)}}rforEach(I,W=this){for(let J of Me(this,O,Sn).call(this)){let le=Q(this,Y)[J],y=Me(this,O,Ze).call(this,le)?le.__staleWhileFetching:le;y!==void 0&&I.call(W,y,Q(this,j)[J],this)}}purgeStale(){let I=!1;for(let W of Me(this,O,Sn).call(this,{allowStale:!0}))Q(this,q).call(this,W)&&(this.delete(Q(this,j)[W]),I=!0);return I}dump(){let I=[];for(let W of Me(this,O,En).call(this,{allowStale:!0})){let J=Q(this,j)[W],le=Q(this,Y)[W],y=Me(this,O,Ze).call(this,le)?le.__staleWhileFetching:le;if(y===void 0||J===void 0)continue;let h={value:y};if(Q(this,z)&&Q(this,ae)){h.ttl=Q(this,z)[W];let f=t.now()-Q(this,ae)[W];h.start=Math.floor(Date.now()-f)}Q(this,ue)&&(h.size=Q(this,ue)[W]),I.unshift([J,h])}return I}load(I){this.clear();for(let[W,J]of I){if(J.start){let le=Date.now()-J.start;J.start=t.now()-le}this.set(W,J.value,J)}}set(I,W,J={}){var fe,xe,ke,Te,Oe;if(W===void 0)return this.delete(I),this;let{ttl:le=this.ttl,start:y,noDisposeOnSet:h=this.noDisposeOnSet,sizeCalculation:f=this.sizeCalculation,status:g}=J,{noUpdateTTL:w=this.noUpdateTTL}=J,C=Q(this,ce).call(this,I,W,J.size||0,f);if(this.maxEntrySize&&C>this.maxEntrySize)return g&&(g.set="miss",g.maxEntrySizeExceeded=!0),this.delete(I),this;let V=Q(this,U)===0?void 0:Q(this,L).get(I);if(V===void 0)V=Q(this,U)===0?Q(this,B):Q(this,oe).length!==0?Q(this,oe).pop():Q(this,U)===Q(this,T)?Me(this,O,Da).call(this,!1):Q(this,U),Q(this,j)[V]=I,Q(this,Y)[V]=W,Q(this,L).set(I,V),Q(this,se)[Q(this,B)]=V,Q(this,re)[V]=Q(this,B),Le(this,B,V),Qs(this,U)._++,Q(this,he).call(this,V,C,g),g&&(g.set="add"),w=!1;else{Me(this,O,cs).call(this,V);let Re=Q(this,Y)[V];if(W!==Re){if(Q(this,de)&&Me(this,O,Ze).call(this,Re)){Re.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:Ve}=Re;Ve!==void 0&&!h&&(Q(this,pe)&&((fe=Q(this,R))==null||fe.call(this,Ve,I,"set")),Q(this,ge)&&((xe=Q(this,ne))==null||xe.push([Ve,I,"set"])))}else h||(Q(this,pe)&&((ke=Q(this,R))==null||ke.call(this,Re,I,"set")),Q(this,ge)&&((Te=Q(this,ne))==null||Te.push([Re,I,"set"])));if(Q(this,X).call(this,V),Q(this,he).call(this,V,C,g),Q(this,Y)[V]=W,g){g.set="replace";let Ve=Re&&Me(this,O,Ze).call(this,Re)?Re.__staleWhileFetching:Re;Ve!==void 0&&(g.oldValue=Ve)}}else g&&(g.set="update")}if(le!==0&&!Q(this,z)&&Me(this,O,_h).call(this),Q(this,z)&&(w||Q(this,ye).call(this,V,le,y),g&&Q(this,ve).call(this,g,V)),!h&&Q(this,ge)&&Q(this,ne)){let Re=Q(this,ne),Ve;for(;Ve=Re==null?void 0:Re.shift();)(Oe=Q(this,S))==null||Oe.call(this,...Ve)}return this}pop(){var I;try{for(;Q(this,U);){let W=Q(this,Y)[Q(this,P)];if(Me(this,O,Da).call(this,!0),Me(this,O,Ze).call(this,W)){if(W.__staleWhileFetching)return W.__staleWhileFetching}else if(W!==void 0)return W}}finally{if(Q(this,ge)&&Q(this,ne)){let W=Q(this,ne),J;for(;J=W==null?void 0:W.shift();)(I=Q(this,S))==null||I.call(this,...J)}}}has(I,W={}){let{updateAgeOnHas:J=this.updateAgeOnHas,status:le}=W,y=Q(this,L).get(I);if(y!==void 0){let h=Q(this,Y)[y];if(Me(this,O,Ze).call(this,h)&&h.__staleWhileFetching===void 0)return!1;if(Q(this,q).call(this,y))le&&(le.has="stale",Q(this,ve).call(this,le,y));else return J&&Q(this,me).call(this,y),le&&(le.has="hit",Q(this,ve).call(this,le,y)),!0}else le&&(le.has="miss");return!1}peek(I,W={}){let{allowStale:J=this.allowStale}=W,le=Q(this,L).get(I);if(le!==void 0&&(J||!Q(this,q).call(this,le))){let y=Q(this,Y)[le];return Me(this,O,Ze).call(this,y)?y.__staleWhileFetching:y}}async fetch(I,W={}){let{allowStale:J=this.allowStale,updateAgeOnGet:le=this.updateAgeOnGet,noDeleteOnStaleGet:y=this.noDeleteOnStaleGet,ttl:h=this.ttl,noDisposeOnSet:f=this.noDisposeOnSet,size:g=0,sizeCalculation:w=this.sizeCalculation,noUpdateTTL:C=this.noUpdateTTL,noDeleteOnFetchRejection:V=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:fe=this.allowStaleOnFetchRejection,ignoreFetchAbort:xe=this.ignoreFetchAbort,allowStaleOnFetchAbort:ke=this.allowStaleOnFetchAbort,context:Te,forceRefresh:Oe=!1,status:Re,signal:Ve}=W;if(!Q(this,de))return Re&&(Re.fetch="get"),this.get(I,{allowStale:J,updateAgeOnGet:le,noDeleteOnStaleGet:y,status:Re});let lt={allowStale:J,updateAgeOnGet:le,noDeleteOnStaleGet:y,ttl:h,noDisposeOnSet:f,size:g,sizeCalculation:w,noUpdateTTL:C,noDeleteOnFetchRejection:V,allowStaleOnFetchRejection:fe,allowStaleOnFetchAbort:ke,ignoreFetchAbort:xe,status:Re,signal:Ve},Je=Q(this,L).get(I);if(Je===void 0){Re&&(Re.fetch="miss");let st=Me(this,O,$a).call(this,I,Je,lt,Te);return st.__returned=st}else{let st=Q(this,Y)[Je];if(Me(this,O,Ze).call(this,st)){let Ko=J&&st.__staleWhileFetching!==void 0;return Re&&(Re.fetch="inflight",Ko&&(Re.returnedStale=!0)),Ko?st.__staleWhileFetching:st.__returned=st}let gt=Q(this,q).call(this,Je);if(!Oe&&!gt)return Re&&(Re.fetch="hit"),Me(this,O,cs).call(this,Je),le&&Q(this,me).call(this,Je),Re&&Q(this,ve).call(this,Re,Je),st;let ut=Me(this,O,$a).call(this,I,Je,lt,Te),Ki=ut.__staleWhileFetching!==void 0&&J;return Re&&(Re.fetch=gt?"stale":"refresh",Ki&&gt&&(Re.returnedStale=!0)),Ki?ut.__staleWhileFetching:ut.__returned=ut}}get(I,W={}){let{allowStale:J=this.allowStale,updateAgeOnGet:le=this.updateAgeOnGet,noDeleteOnStaleGet:y=this.noDeleteOnStaleGet,status:h}=W,f=Q(this,L).get(I);if(f!==void 0){let g=Q(this,Y)[f],w=Me(this,O,Ze).call(this,g);return h&&Q(this,ve).call(this,h,f),Q(this,q).call(this,f)?(h&&(h.get="stale"),w?(h&&J&&g.__staleWhileFetching!==void 0&&(h.returnedStale=!0),J?g.__staleWhileFetching:void 0):(y||this.delete(I),h&&J&&(h.returnedStale=!0),J?g:void 0)):(h&&(h.get="hit"),w?g.__staleWhileFetching:(Me(this,O,cs).call(this,f),le&&Q(this,me).call(this,f),g))}else h&&(h.get="miss")}delete(I){var J,le,y,h;let W=!1;if(Q(this,U)!==0){let f=Q(this,L).get(I);if(f!==void 0)if(W=!0,Q(this,U)===1)this.clear();else{Q(this,X).call(this,f);let g=Q(this,Y)[f];Me(this,O,Ze).call(this,g)?g.__abortController.abort(new Error("deleted")):(Q(this,pe)||Q(this,ge))&&(Q(this,pe)&&((J=Q(this,R))==null||J.call(this,g,I,"delete")),Q(this,ge)&&((le=Q(this,ne))==null||le.push([g,I,"delete"]))),Q(this,L).delete(I),Q(this,j)[f]=void 0,Q(this,Y)[f]=void 0,f===Q(this,B)?Le(this,B,Q(this,re)[f]):f===Q(this,P)?Le(this,P,Q(this,se)[f]):(Q(this,se)[Q(this,re)[f]]=Q(this,se)[f],Q(this,re)[Q(this,se)[f]]=Q(this,re)[f]),Qs(this,U)._--,Q(this,oe).push(f)}}if(Q(this,ge)&&((y=Q(this,ne))!=null&&y.length)){let f=Q(this,ne),g;for(;g=f==null?void 0:f.shift();)(h=Q(this,S))==null||h.call(this,...g)}return W}clear(){var I,W,J;for(let le of Me(this,O,Sn).call(this,{allowStale:!0})){let y=Q(this,Y)[le];if(Me(this,O,Ze).call(this,y))y.__abortController.abort(new Error("deleted"));else{let h=Q(this,j)[le];Q(this,pe)&&((I=Q(this,R))==null||I.call(this,y,h,"delete")),Q(this,ge)&&((W=Q(this,ne))==null||W.push([y,h,"delete"]))}}if(Q(this,L).clear(),Q(this,Y).fill(void 0),Q(this,j).fill(void 0),Q(this,z)&&Q(this,ae)&&(Q(this,z).fill(0),Q(this,ae).fill(0)),Q(this,ue)&&Q(this,ue).fill(0),Le(this,P,0),Le(this,B,0),Q(this,oe).length=0,Le(this,x,0),Le(this,U,0),Q(this,ge)&&Q(this,ne)){let le=Q(this,ne),y;for(;y=le==null?void 0:le.shift();)(J=Q(this,S))==null||J.call(this,...y)}}},T=new WeakMap,N=new WeakMap,R=new WeakMap,S=new WeakMap,D=new WeakMap,U=new WeakMap,x=new WeakMap,L=new WeakMap,j=new WeakMap,Y=new WeakMap,se=new WeakMap,re=new WeakMap,P=new WeakMap,B=new WeakMap,oe=new WeakMap,ne=new WeakMap,ue=new WeakMap,ae=new WeakMap,z=new WeakMap,pe=new WeakMap,de=new WeakMap,ge=new WeakMap,O=new WeakSet,_h=function(){let I=new c(Q(this,T)),W=new c(Q(this,T));Le(this,z,I),Le(this,ae,W),Le(this,ye,(y,h,f=t.now())=>{if(W[y]=h!==0?f:0,I[y]=h,h!==0&&this.ttlAutopurge){let g=setTimeout(()=>{Q(this,q).call(this,y)&&this.delete(Q(this,j)[y])},h+1);g.unref&&g.unref()}}),Le(this,me,y=>{W[y]=I[y]!==0?t.now():0}),Le(this,ve,(y,h)=>{if(I[h]){let f=I[h],g=W[h];y.ttl=f,y.start=g,y.now=J||le();let w=y.now-g;y.remainingTTL=f-w}});let J=0,le=()=>{let y=t.now();if(this.ttlResolution>0){J=y;let h=setTimeout(()=>J=0,this.ttlResolution);h.unref&&h.unref()}return y};this.getRemainingTTL=y=>{let h=Q(this,L).get(y);if(h===void 0)return 0;let f=I[h],g=W[h];if(f===0||g===0)return 1/0;let w=(J||le())-g;return f-w},Le(this,q,y=>I[y]!==0&&W[y]!==0&&(J||le())-W[y]>I[y])},me=new WeakMap,ve=new WeakMap,ye=new WeakMap,q=new WeakMap,cw=function(){let I=new c(Q(this,T));Le(this,x,0),Le(this,ue,I),Le(this,X,W=>{Le(this,x,Q(this,x)-I[W]),I[W]=0}),Le(this,ce,(W,J,le,y)=>{if(Me(this,O,Ze).call(this,J))return 0;if(!l(le))if(y){if(typeof y!="function")throw new TypeError("sizeCalculation must be a function");if(le=y(J,W),!l(le))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return le}),Le(this,he,(W,J,le)=>{if(I[W]=J,Q(this,N)){let y=Q(this,N)-I[W];for(;Q(this,x)>y;)Me(this,O,Da).call(this,!0)}Le(this,x,Q(this,x)+I[W]),le&&(le.entrySize=J,le.totalCalculatedSize=Q(this,x))})},X=new WeakMap,he=new WeakMap,ce=new WeakMap,En=function*({allowStale:I=this.allowStale}={}){if(Q(this,U))for(let W=Q(this,B);!(!Me(this,O,bh).call(this,W)||((I||!Q(this,q).call(this,W))&&(yield W),W===Q(this,P)));)W=Q(this,re)[W]},Sn=function*({allowStale:I=this.allowStale}={}){if(Q(this,U))for(let W=Q(this,P);!(!Me(this,O,bh).call(this,W)||((I||!Q(this,q).call(this,W))&&(yield W),W===Q(this,B)));)W=Q(this,se)[W]},bh=function(I){return I!==void 0&&Q(this,L).get(Q(this,j)[I])===I},Da=function(I){var y,h;let W=Q(this,P),J=Q(this,j)[W],le=Q(this,Y)[W];return Q(this,de)&&Me(this,O,Ze).call(this,le)?le.__abortController.abort(new Error("evicted")):(Q(this,pe)||Q(this,ge))&&(Q(this,pe)&&((y=Q(this,R))==null||y.call(this,le,J,"evict")),Q(this,ge)&&((h=Q(this,ne))==null||h.push([le,J,"evict"]))),Q(this,X).call(this,W),I&&(Q(this,j)[W]=void 0,Q(this,Y)[W]=void 0,Q(this,oe).push(W)),Q(this,U)===1?(Le(this,P,Le(this,B,0)),Q(this,oe).length=0):Le(this,P,Q(this,se)[W]),Q(this,L).delete(J),Qs(this,U)._--,W},$a=function(I,W,J,le){let y=W===void 0?void 0:Q(this,Y)[W];if(Me(this,O,Ze).call(this,y))return y;let h=new i,{signal:f}=J;f==null||f.addEventListener("abort",()=>h.abort(f.reason),{signal:h.signal});let g={signal:h.signal,options:J,context:le},w=(Te,Oe=!1)=>{let{aborted:Re}=h.signal,Ve=J.ignoreFetchAbort&&Te!==void 0;if(J.status&&(Re&&!Oe?(J.status.fetchAborted=!0,J.status.fetchError=h.signal.reason,Ve&&(J.status.fetchAbortIgnored=!0)):J.status.fetchResolved=!0),Re&&!Ve&&!Oe)return V(h.signal.reason);let lt=xe;return Q(this,Y)[W]===xe&&(Te===void 0?lt.__staleWhileFetching?Q(this,Y)[W]=lt.__staleWhileFetching:this.delete(I):(J.status&&(J.status.fetchUpdated=!0),this.set(I,Te,g.options))),Te},C=Te=>(J.status&&(J.status.fetchRejected=!0,J.status.fetchError=Te),V(Te)),V=Te=>{let{aborted:Oe}=h.signal,Re=Oe&&J.allowStaleOnFetchAbort,Ve=Re||J.allowStaleOnFetchRejection,lt=Ve||J.noDeleteOnFetchRejection,Je=xe;if(Q(this,Y)[W]===xe&&(!lt||Je.__staleWhileFetching===void 0?this.delete(I):Re||(Q(this,Y)[W]=Je.__staleWhileFetching)),Ve)return J.status&&Je.__staleWhileFetching!==void 0&&(J.status.returnedStale=!0),Je.__staleWhileFetching;if(Je.__returned===Je)throw Te},fe=(Te,Oe)=>{var Ve;let Re=(Ve=Q(this,D))==null?void 0:Ve.call(this,I,y,g);Re&&Re instanceof Promise&&Re.then(lt=>Te(lt===void 0?void 0:lt),Oe),h.signal.addEventListener("abort",()=>{(!J.ignoreFetchAbort||J.allowStaleOnFetchAbort)&&(Te(void 0),J.allowStaleOnFetchAbort&&(Te=lt=>w(lt,!0)))})};J.status&&(J.status.fetchDispatched=!0);let xe=new Promise(fe).then(w,C),ke=Object.assign(xe,{__abortController:h,__staleWhileFetching:y,__returned:void 0});return W===void 0?(this.set(I,ke,{...g.options,status:void 0}),W=Q(this,L).get(I)):Q(this,Y)[W]=ke,ke},Ze=function(I){if(!Q(this,de))return!1;let W=I;return!!W&&W instanceof Promise&&W.hasOwnProperty("__staleWhileFetching")&&W.__abortController instanceof i},wh=function(I,W){Q(this,re)[W]=I,Q(this,se)[I]=W},cs=function(I){I!==Q(this,B)&&(I===Q(this,P)?Le(this,P,Q(this,se)[I]):Me(this,O,wh).call(this,Q(this,re)[I],Q(this,se)[I]),Me(this,O,wh).call(this,Q(this,B),I),Le(this,B,I))},$);e.LRUCache=p}),gn=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.ContainerIterator=e.Container=e.Base=void 0;var t=class{constructor(o=0){this.iteratorType=o}equals(o){return this.o===o.o}};e.ContainerIterator=t;var r=class{constructor(){this.i=0}get length(){return this.i}size(){return this.i}empty(){return this.i===0}};e.Base=r;var n=class extends r{};e.Container=n}),DO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=gn(),r=class extends t.Base{constructor(o=[]){super(),this.S=[];let i=this;o.forEach(function(s){i.push(s)})}clear(){this.i=0,this.S=[]}push(o){return this.S.push(o),this.i+=1,this.i}pop(){if(this.i!==0)return this.i-=1,this.S.pop()}top(){return this.S[this.i-1]}},n=r;e.default=n}),$O=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=gn(),r=class extends t.Base{constructor(o=[]){super(),this.j=0,this.q=[];let i=this;o.forEach(function(s){i.push(s)})}clear(){this.q=[],this.i=this.j=0}push(o){let i=this.q.length;if(this.j/i>.5&&this.j+this.i>=i&&i>4096){let s=this.i;for(let a=0;a<s;++a)this.q[a]=this.q[this.j+a];this.j=0,this.q[this.i]=o}else this.q[this.j+this.i]=o;return++this.i}pop(){if(this.i===0)return;let o=this.q[this.j++];return this.i-=1,o}front(){if(this.i!==0)return this.q[this.j]}},n=r;e.default=n}),UO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=gn(),r=class extends t.Base{constructor(o=[],i=function(a,l){return a>l?-1:a<l?1:0},s=!0){if(super(),this.v=i,Array.isArray(o))this.C=s?[...o]:o;else{this.C=[];let l=this;o.forEach(function(u){l.C.push(u)})}this.i=this.C.length;let a=this.i>>1;for(let l=this.i-1>>1;l>=0;--l)this.k(l,a)}m(o){let i=this.C[o];for(;o>0;){let s=o-1>>1,a=this.C[s];if(this.v(a,i)<=0)break;this.C[o]=a,o=s}this.C[o]=i}k(o,i){let s=this.C[o];for(;o<i;){let a=o<<1|1,l=a+1,u=this.C[a];if(l<this.i&&this.v(u,this.C[l])>0&&(a=l,u=this.C[l]),this.v(u,s)>=0)break;this.C[o]=u,o=a}this.C[o]=s}clear(){this.i=0,this.C.length=0}push(o){this.C.push(o),this.m(this.i),this.i+=1}pop(){if(this.i===0)return;let o=this.C[0],i=this.C.pop();return this.i-=1,this.i&&(this.C[0]=i,this.k(0,this.i>>1)),o}top(){return this.C[0]}find(o){return this.C.indexOf(o)>=0}remove(o){let i=this.C.indexOf(o);return i<0?!1:(i===0?this.pop():i===this.i-1?(this.C.pop(),this.i-=1):(this.C.splice(i,1,this.C.pop()),this.i-=1,this.m(i),this.k(i,this.i>>1)),!0)}updateItem(o){let i=this.C.indexOf(o);return i<0?!1:(this.m(i),this.k(i,this.i>>1),!0)}toArray(){return[...this.C]}},n=r;e.default=n}),Zd=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=gn(),r=class extends t.Container{},n=r;e.default=n}),mn=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.throwIteratorAccessError=t;function t(){throw new RangeError("Iterator access denied!")}}),fw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.RandomIterator=void 0;var t=gn(),r=mn(),n=class extends t.ContainerIterator{constructor(o,i){super(i),this.o=o,this.iteratorType===0?(this.pre=function(){return this.o===0&&(0,r.throwIteratorAccessError)(),this.o-=1,this},this.next=function(){return this.o===this.container.size()&&(0,r.throwIteratorAccessError)(),this.o+=1,this}):(this.pre=function(){return this.o===this.container.size()-1&&(0,r.throwIteratorAccessError)(),this.o+=1,this},this.next=function(){return this.o===-1&&(0,r.throwIteratorAccessError)(),this.o-=1,this})}get pointer(){return this.container.getElementByPos(this.o)}set pointer(o){this.container.setElementByPos(this.o,o)}};e.RandomIterator=n}),FO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(Zd()),r=fw();function n(a){return a&&a.t?a:{default:a}}var o=class hw extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new hw(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(a=[],l=!0){if(super(),Array.isArray(a))this.J=l?[...a]:a,this.i=a.length;else{this.J=[];let u=this;a.forEach(function(c){u.pushBack(c)})}}clear(){this.i=0,this.J.length=0}begin(){return new o(0,this)}end(){return new o(this.i,this)}rBegin(){return new o(this.i-1,this,1)}rEnd(){return new o(-1,this,1)}front(){return this.J[0]}back(){return this.J[this.i-1]}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J[a]}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J.splice(a,1),this.i-=1,this.i}eraseElementByValue(a){let l=0;for(let u=0;u<this.i;++u)this.J[u]!==a&&(this.J[l++]=this.J[u]);return this.i=this.J.length=l,this.i}eraseElementByIterator(a){let l=a.o;return a=a.next(),this.eraseElementByPos(l),a}pushBack(a){return this.J.push(a),this.i+=1,this.i}popBack(){if(this.i!==0)return this.i-=1,this.J.pop()}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;this.J[a]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;return this.J.splice(a,0,...new Array(u).fill(l)),this.i+=u,this.i}find(a){for(let l=0;l<this.i;++l)if(this.J[l]===a)return new o(l,this);return this.end()}reverse(){this.J.reverse()}unique(){let a=1;for(let l=1;l<this.i;++l)this.J[l]!==this.J[l-1]&&(this.J[a++]=this.J[l]);return this.i=this.J.length=a,this.i}sort(a){this.J.sort(a)}forEach(a){for(let l=0;l<this.i;++l)a(this.J[l],l,this)}[Symbol.iterator](){return(function*(){yield*this.J}).bind(this)()}},s=i;e.default=s}),jO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(Zd()),r=gn(),n=mn();function o(l){return l&&l.t?l:{default:l}}var i=class dw extends r.ContainerIterator{constructor(u,c,d,p){super(p),this.o=u,this.h=c,this.container=d,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l}set pointer(u){this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l=u}copy(){return new dw(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[]){super(),this.h={},this.p=this._=this.h.L=this.h.B=this.h;let u=this;l.forEach(function(c){u.pushBack(c)})}V(l){let{L:u,B:c}=l;u.B=c,c.L=u,l===this.p&&(this.p=c),l===this._&&(this._=u),this.i-=1}G(l,u){let c=u.B,d={l,L:u,B:c};u.B=d,c.L=d,u===this.h&&(this.p=d),c===this.h&&(this._=d),this.i+=1}clear(){this.i=0,this.p=this._=this.h.L=this.h.B=this.h}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.p.l}back(){return this._.l}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return u.l}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return this.V(u),this.i}eraseElementByValue(l){let u=this.p;for(;u!==this.h;)u.l===l&&this.V(u),u=u.B;return this.i}eraseElementByIterator(l){let u=l.o;return u===this.h&&(0,n.throwIteratorAccessError)(),l=l.next(),this.V(u),l}pushBack(l){return this.G(l,this._),this.i}popBack(){if(this.i===0)return;let l=this._.l;return this.V(this._),l}pushFront(l){return this.G(l,this.h),this.i}popFront(){if(this.i===0)return;let l=this.p.l;return this.V(this.p),l}setElementByPos(l,u){if(l<0||l>this.i-1)throw new RangeError;let c=this.p;for(;l--;)c=c.B;c.l=u}insert(l,u,c=1){if(l<0||l>this.i)throw new RangeError;if(c<=0)return this.i;if(l===0)for(;c--;)this.pushFront(u);else if(l===this.i)for(;c--;)this.pushBack(u);else{let d=this.p;for(let m=1;m<l;++m)d=d.B;let p=d.B;for(this.i+=c;c--;)d.B={l:u,L:d},d.B.L=d,d=d.B;d.B=p,p.L=d}return this.i}find(l){let u=this.p;for(;u!==this.h;){if(u.l===l)return new i(u,this.h,this);u=u.B}return this.end()}reverse(){if(this.i<=1)return;let l=this.p,u=this._,c=0;for(;c<<1<this.i;){let d=l.l;l.l=u.l,u.l=d,l=l.B,u=u.L,c+=1}}unique(){if(this.i<=1)return this.i;let l=this.p;for(;l!==this.h;){let u=l;for(;u.B!==this.h&&u.l===u.B.l;)u=u.B,this.i-=1;l.B=u.B,l.B.L=l,l=l.B}return this.i}sort(l){if(this.i<=1)return;let u=[];this.forEach(function(d){u.push(d)}),u.sort(l);let c=this.p;u.forEach(function(d){c.l=d,c=c.B})}merge(l){let u=this;if(this.i===0)l.forEach(function(c){u.pushBack(c)});else{let c=this.p;l.forEach(function(d){for(;c!==u.h&&c.l<=d;)c=c.B;u.G(d,c.L)})}return this.i}forEach(l){let u=this.p,c=0;for(;u!==this.h;)l(u.l,c++,this),u=u.B}[Symbol.iterator](){return(function*(){if(this.i===0)return;let l=this.p;for(;l!==this.h;)yield l.l,l=l.B}).bind(this)()}},a=s;e.default=a}),WO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(Zd()),r=fw();function n(a){return a&&a.t?a:{default:a}}var o=class pw extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new pw(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(a=[],l=4096){super(),this.j=0,this.D=0,this.R=0,this.N=0,this.P=0,this.A=[];let u=(()=>{if(typeof a.length=="number")return a.length;if(typeof a.size=="number")return a.size;if(typeof a.size=="function")return a.size();throw new TypeError("Cannot get the length or size of the container")})();this.F=l,this.P=Math.max(Math.ceil(u/this.F),1);for(let p=0;p<this.P;++p)this.A.push(new Array(this.F));let c=Math.ceil(u/this.F);this.j=this.R=(this.P>>1)-(c>>1),this.D=this.N=this.F-u%this.F>>1;let d=this;a.forEach(function(p){d.pushBack(p)})}T(){let a=[],l=Math.max(this.P>>1,1);for(let u=0;u<l;++u)a[u]=new Array(this.F);for(let u=this.j;u<this.P;++u)a[a.length]=this.A[u];for(let u=0;u<this.R;++u)a[a.length]=this.A[u];a[a.length]=[...this.A[this.R]],this.j=l,this.R=a.length-1;for(let u=0;u<l;++u)a[a.length]=new Array(this.F);this.A=a,this.P=a.length}O(a){let l=this.D+a+1,u=l%this.F,c=u-1,d=this.j+(l-u)/this.F;return u===0&&(d-=1),d%=this.P,c<0&&(c+=this.F),{curNodeBucketIndex:d,curNodePointerIndex:c}}clear(){this.A=[new Array(this.F)],this.P=1,this.j=this.R=this.i=0,this.D=this.N=this.F>>1}begin(){return new o(0,this)}end(){return new o(this.i,this)}rBegin(){return new o(this.i-1,this,1)}rEnd(){return new o(-1,this,1)}front(){if(this.i!==0)return this.A[this.j][this.D]}back(){if(this.i!==0)return this.A[this.R][this.N]}pushBack(a){return this.i&&(this.N<this.F-1?this.N+=1:this.R<this.P-1?(this.R+=1,this.N=0):(this.R=0,this.N=0),this.R===this.j&&this.N===this.D&&this.T()),this.i+=1,this.A[this.R][this.N]=a,this.i}popBack(){if(this.i===0)return;let a=this.A[this.R][this.N];return this.i!==1&&(this.N>0?this.N-=1:this.R>0?(this.R-=1,this.N=this.F-1):(this.R=this.P-1,this.N=this.F-1)),this.i-=1,a}pushFront(a){return this.i&&(this.D>0?this.D-=1:this.j>0?(this.j-=1,this.D=this.F-1):(this.j=this.P-1,this.D=this.F-1),this.j===this.R&&this.D===this.N&&this.T()),this.i+=1,this.A[this.j][this.D]=a,this.i}popFront(){if(this.i===0)return;let a=this.A[this.j][this.D];return this.i!==1&&(this.D<this.F-1?this.D+=1:this.j<this.P-1?(this.j+=1,this.D=0):(this.j=0,this.D=0)),this.i-=1,a}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.A[l][u]}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:u,curNodePointerIndex:c}=this.O(a);this.A[u][c]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;if(a===0)for(;u--;)this.pushFront(l);else if(a===this.i)for(;u--;)this.pushBack(l);else{let c=[];for(let d=a;d<this.i;++d)c.push(this.getElementByPos(d));this.cut(a-1);for(let d=0;d<u;++d)this.pushBack(l);for(let d=0;d<c.length;++d)this.pushBack(c[d])}return this.i}cut(a){if(a<0)return this.clear(),0;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.R=l,this.N=u,this.i=a+1,this.i}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;if(a===0)this.popFront();else if(a===this.i-1)this.popBack();else{let l=[];for(let c=a+1;c<this.i;++c)l.push(this.getElementByPos(c));this.cut(a),this.popBack();let u=this;l.forEach(function(c){u.pushBack(c)})}return this.i}eraseElementByValue(a){if(this.i===0)return 0;let l=[];for(let c=0;c<this.i;++c){let d=this.getElementByPos(c);d!==a&&l.push(d)}let u=l.length;for(let c=0;c<u;++c)this.setElementByPos(c,l[c]);return this.cut(u-1)}eraseElementByIterator(a){let l=a.o;return this.eraseElementByPos(l),a=a.next(),a}find(a){for(let l=0;l<this.i;++l)if(this.getElementByPos(l)===a)return new o(l,this);return this.end()}reverse(){let a=0,l=this.i-1;for(;a<l;){let u=this.getElementByPos(a);this.setElementByPos(a,this.getElementByPos(l)),this.setElementByPos(l,u),a+=1,l-=1}}unique(){if(this.i<=1)return this.i;let a=1,l=this.getElementByPos(0);for(let u=1;u<this.i;++u){let c=this.getElementByPos(u);c!==l&&(l=c,this.setElementByPos(a++,c))}for(;this.i>a;)this.popBack();return this.i}sort(a){let l=[];for(let u=0;u<this.i;++u)l.push(this.getElementByPos(u));l.sort(a);for(let u=0;u<this.i;++u)this.setElementByPos(u,l[u])}shrinkToFit(){if(this.i===0)return;let a=[];this.forEach(function(l){a.push(l)}),this.P=Math.max(Math.ceil(this.i/this.F),1),this.i=this.j=this.R=this.D=this.N=0,this.A=[];for(let l=0;l<this.P;++l)this.A.push(new Array(this.F));for(let l=0;l<a.length;++l)this.pushBack(a[l])}forEach(a){for(let l=0;l<this.i;++l)a(this.getElementByPos(l),l,this)}[Symbol.iterator](){return(function*(){for(let a=0;a<this.i;++a)yield this.getElementByPos(a)}).bind(this)()}},s=i;e.default=s}),HO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.TreeNodeEnableIndex=e.TreeNode=void 0;var t=class{constructor(n,o){this.ee=1,this.u=void 0,this.l=void 0,this.U=void 0,this.W=void 0,this.tt=void 0,this.u=n,this.l=o}L(){let n=this;if(n.ee===1&&n.tt.tt===n)n=n.W;else if(n.U)for(n=n.U;n.W;)n=n.W;else{let o=n.tt;for(;o.U===n;)n=o,o=n.tt;n=o}return n}B(){let n=this;if(n.W){for(n=n.W;n.U;)n=n.U;return n}else{let o=n.tt;for(;o.W===n;)n=o,o=n.tt;return n.W!==o?o:n}}te(){let n=this.tt,o=this.W,i=o.U;return n.tt===this?n.tt=o:n.U===this?n.U=o:n.W=o,o.tt=n,o.U=this,this.tt=o,this.W=i,i&&(i.tt=this),o}se(){let n=this.tt,o=this.U,i=o.W;return n.tt===this?n.tt=o:n.U===this?n.U=o:n.W=o,o.tt=n,o.W=this,this.tt=o,this.U=i,i&&(i.tt=this),o}};e.TreeNode=t;var r=class extends t{constructor(){super(...arguments),this.rt=1}te(){let n=super.te();return this.ie(),n.ie(),n}se(){let n=super.se();return this.ie(),n.ie(),n}ie(){this.rt=1,this.U&&(this.rt+=this.U.rt),this.W&&(this.rt+=this.W.rt)}};e.TreeNodeEnableIndex=r}),gw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=HO(),r=gn(),n=mn(),o=class extends r.Container{constructor(s=function(l,u){return l<u?-1:l>u?1:0},a=!1){super(),this.Y=void 0,this.v=s,a?(this.re=t.TreeNodeEnableIndex,this.M=function(l,u,c){let d=this.ne(l,u,c);if(d){let p=d.tt;for(;p!==this.h;)p.rt+=1,p=p.tt;let m=this.he(d);if(m){let{parentNode:_,grandParent:b,curNode:T}=m;_.ie(),b.ie(),T.ie()}}return this.i},this.V=function(l){let u=this.fe(l);for(;u!==this.h;)u.rt-=1,u=u.tt}):(this.re=t.TreeNode,this.M=function(l,u,c){let d=this.ne(l,u,c);return d&&this.he(d),this.i},this.V=this.fe),this.h=new this.re}X(s,a){let l=this.h;for(;s;){let u=this.v(s.u,a);if(u<0)s=s.W;else if(u>0)l=s,s=s.U;else return s}return l}Z(s,a){let l=this.h;for(;s;)this.v(s.u,a)<=0?s=s.W:(l=s,s=s.U);return l}$(s,a){let l=this.h;for(;s;){let u=this.v(s.u,a);if(u<0)l=s,s=s.W;else if(u>0)s=s.U;else return s}return l}rr(s,a){let l=this.h;for(;s;)this.v(s.u,a)<0?(l=s,s=s.W):s=s.U;return l}ue(s){for(;;){let a=s.tt;if(a===this.h)return;if(s.ee===1){s.ee=0;return}if(s===a.U){let l=a.W;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.te():a.te();else if(l.W&&l.W.ee===1){l.ee=a.ee,a.ee=0,l.W.ee=0,a===this.Y?this.Y=a.te():a.te();return}else l.U&&l.U.ee===1?(l.ee=1,l.U.ee=0,l.se()):(l.ee=1,s=a)}else{let l=a.U;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.se():a.se();else if(l.U&&l.U.ee===1){l.ee=a.ee,a.ee=0,l.U.ee=0,a===this.Y?this.Y=a.se():a.se();return}else l.W&&l.W.ee===1?(l.ee=1,l.W.ee=0,l.te()):(l.ee=1,s=a)}}}fe(s){if(this.i===1)return this.clear(),this.h;let a=s;for(;a.U||a.W;){if(a.W)for(a=a.W;a.U;)a=a.U;else a=a.U;[s.u,a.u]=[a.u,s.u],[s.l,a.l]=[a.l,s.l],s=a}this.h.U===a?this.h.U=a.tt:this.h.W===a&&(this.h.W=a.tt),this.ue(a);let l=a.tt;return a===l.U?l.U=void 0:l.W=void 0,this.i-=1,this.Y.ee=0,l}oe(s,a){return s===void 0?!1:this.oe(s.U,a)||a(s)?!0:this.oe(s.W,a)}he(s){for(;;){let a=s.tt;if(a.ee===0)return;let l=a.tt;if(a===l.U){let u=l.W;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,s=l;continue}else if(s===a.W){if(s.ee=0,s.U&&(s.U.tt=a),s.W&&(s.W.tt=l),a.W=s.U,l.U=s.W,s.U=a,s.W=l,l===this.Y)this.Y=s,this.h.tt=s;else{let c=l.tt;c.U===l?c.U=s:c.W=s}return s.tt=l.tt,a.tt=s,l.tt=s,l.ee=1,{parentNode:a,grandParent:l,curNode:s}}else a.ee=0,l===this.Y?this.Y=l.se():l.se(),l.ee=1}else{let u=l.U;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,s=l;continue}else if(s===a.U){if(s.ee=0,s.U&&(s.U.tt=l),s.W&&(s.W.tt=a),l.W=s.U,a.U=s.W,s.U=l,s.W=a,l===this.Y)this.Y=s,this.h.tt=s;else{let c=l.tt;c.U===l?c.U=s:c.W=s}return s.tt=l.tt,a.tt=s,l.tt=s,l.ee=1,{parentNode:a,grandParent:l,curNode:s}}else a.ee=0,l===this.Y?this.Y=l.te():l.te(),l.ee=1}return}}ne(s,a,l){if(this.Y===void 0){this.i+=1,this.Y=new this.re(s,a),this.Y.ee=0,this.Y.tt=this.h,this.h.tt=this.Y,this.h.U=this.Y,this.h.W=this.Y;return}let u,c=this.h.U,d=this.v(c.u,s);if(d===0){c.l=a;return}else if(d>0)c.U=new this.re(s,a),c.U.tt=c,u=c.U,this.h.U=u;else{let p=this.h.W,m=this.v(p.u,s);if(m===0){p.l=a;return}else if(m<0)p.W=new this.re(s,a),p.W.tt=p,u=p.W,this.h.W=u;else{if(l!==void 0){let _=l.o;if(_!==this.h){let b=this.v(_.u,s);if(b===0){_.l=a;return}else if(b>0){let T=_.L(),N=this.v(T.u,s);if(N===0){T.l=a;return}else N<0&&(u=new this.re(s,a),T.W===void 0?(T.W=u,u.tt=T):(_.U=u,u.tt=_))}}}if(u===void 0)for(u=this.Y;;){let _=this.v(u.u,s);if(_>0){if(u.U===void 0){u.U=new this.re(s,a),u.U.tt=u,u=u.U;break}u=u.U}else if(_<0){if(u.W===void 0){u.W=new this.re(s,a),u.W.tt=u,u=u.W;break}u=u.W}else{u.l=a;return}}}}return this.i+=1,u}I(s,a){for(;s;){let l=this.v(s.u,a);if(l<0)s=s.W;else if(l>0)s=s.U;else return s}return s||this.h}clear(){this.i=0,this.Y=void 0,this.h.tt=void 0,this.h.U=this.h.W=void 0}updateKeyByIterator(s,a){let l=s.o;if(l===this.h&&(0,n.throwIteratorAccessError)(),this.i===1)return l.u=a,!0;if(l===this.h.U)return this.v(l.B().u,a)>0?(l.u=a,!0):!1;if(l===this.h.W)return this.v(l.L().u,a)<0?(l.u=a,!0):!1;let u=l.L().u;if(this.v(u,a)>=0)return!1;let c=l.B().u;return this.v(c,a)<=0?!1:(l.u=a,!0)}eraseElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a=0,l=this;return this.oe(this.Y,function(u){return s===a?(l.V(u),!0):(a+=1,!1)}),this.i}eraseElementByKey(s){if(this.i===0)return!1;let a=this.I(this.Y,s);return a===this.h?!1:(this.V(a),!0)}eraseElementByIterator(s){let a=s.o;a===this.h&&(0,n.throwIteratorAccessError)();let l=a.W===void 0;return s.iteratorType===0?l&&s.next():(!l||a.U===void 0)&&s.next(),this.V(a),s}forEach(s){let a=0;for(let l of this)s(l,a++,this)}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a,l=0;for(let u of this){if(l===s){a=u;break}l+=1}return a}getHeight(){if(this.i===0)return 0;let s=function(a){return a?Math.max(s(a.U),s(a.W))+1:0};return s(this.Y)}},i=o;e.default=i}),mw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=gn(),r=mn(),n=class extends t.ContainerIterator{constructor(i,s,a){super(a),this.o=i,this.h=s,this.iteratorType===0?(this.pre=function(){return this.o===this.h.U&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this}):(this.pre=function(){return this.o===this.h.W&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this})}get index(){let i=this.o,s=this.h.tt;if(i===this.h)return s?s.rt-1:0;let a=0;for(i.U&&(a+=i.U.rt);i!==s;){let l=i.tt;i===l.W&&(a+=1,l.U&&(a+=l.U.rt)),i=l}return a}},o=n;e.default=o}),VO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(gw()),r=o(mw()),n=mn();function o(l){return l&&l.t?l:{default:l}}var i=class yw extends r.default{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.u}copy(){return new yw(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[],u,c){super(u,c);let d=this;l.forEach(function(p){d.insert(p)})}*K(l){l!==void 0&&(yield*this.K(l.U),yield l.u,yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.h.U?this.h.U.u:void 0}back(){return this.h.W?this.h.W.u:void 0}insert(l,u){return this.M(l,void 0,u)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}union(l){let u=this;return l.forEach(function(c){u.insert(c)}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=s;e.default=a}),qO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(gw()),r=o(mw()),n=mn();function o(l){return l&&l.t?l:{default:l}}var i=class _w extends r.default{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,d){if(d==="0")return u.o.u;if(d==="1")return u.o.l},set(c,d,p){if(d!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new _w(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[],u,c){super(u,c);let d=this;l.forEach(function(p){d.setElement(p[0],p[1])})}*K(l){l!==void 0&&(yield*this.K(l.U),yield[l.u,l.l],yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i===0)return;let l=this.h.U;return[l.u,l.l]}back(){if(this.i===0)return;let l=this.h.W;return[l.u,l.l]}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}setElement(l,u,c){return this.M(l,u,c)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}getElementByKey(l){return this.I(this.Y,l).l}union(l){let u=this;return l.forEach(function(c){u.setElement(c[0],c[1])}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=s;e.default=a}),bw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=t;function t(r){let n=typeof r;return n==="object"&&r!==null||n==="function"}}),ww=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.HashContainerIterator=e.HashContainer=void 0;var t=gn(),r=o(bw()),n=mn();function o(a){return a&&a.t?a:{default:a}}var i=class extends t.ContainerIterator{constructor(a,l,u){super(u),this.o=a,this.h=l,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}};e.HashContainerIterator=i;var s=class extends t.Container{constructor(){super(),this.H=[],this.g={},this.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(this.g,null),this.h={},this.h.L=this.h.B=this.p=this._=this.h}V(a){let{L:l,B:u}=a;l.B=u,u.L=l,a===this.p&&(this.p=u),a===this._&&(this._=l),this.i-=1}M(a,l,u){u===void 0&&(u=(0,r.default)(a));let c;if(u){let d=a[this.HASH_TAG];if(d!==void 0)return this.H[d].l=l,this.i;Object.defineProperty(a,this.HASH_TAG,{value:this.H.length,configurable:!0}),c={u:a,l,L:this._,B:this.h},this.H.push(c)}else{let d=this.g[a];if(d)return d.l=l,this.i;c={u:a,l,L:this._,B:this.h},this.g[a]=c}return this.i===0?(this.p=c,this.h.B=c):this._.B=c,this._=c,this.h.L=c,++this.i}I(a,l){if(l===void 0&&(l=(0,r.default)(a)),l){let u=a[this.HASH_TAG];return u===void 0?this.h:this.H[u]}else return this.g[a]||this.h}clear(){let a=this.HASH_TAG;this.H.forEach(function(l){delete l.u[a]}),this.H=[],this.g={},Object.setPrototypeOf(this.g,null),this.i=0,this.p=this._=this.h.L=this.h.B=this.h}eraseElementByKey(a,l){let u;if(l===void 0&&(l=(0,r.default)(a)),l){let c=a[this.HASH_TAG];if(c===void 0)return!1;delete a[this.HASH_TAG],u=this.H[c],delete this.H[c]}else{if(u=this.g[a],u===void 0)return!1;delete this.g[a]}return this.V(u),!0}eraseElementByIterator(a){let l=a.o;return l===this.h&&(0,n.throwIteratorAccessError)(),this.V(l),a.next()}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let l=this.p;for(;a--;)l=l.B;return this.V(l),this.i}};e.HashContainer=s}),KO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=ww(),r=mn(),n=class vw extends t.HashContainerIterator{constructor(a,l,u,c){super(a,l,c),this.container=u}get pointer(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o.u}copy(){return new vw(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.HashContainer{constructor(s=[]){super();let a=this;s.forEach(function(l){a.insert(l)})}begin(){return new n(this.p,this.h,this)}end(){return new n(this.h,this.h,this)}rBegin(){return new n(this._,this.h,this,1)}rEnd(){return new n(this.h,this.h,this,1)}front(){return this.p.u}back(){return this._.u}insert(s,a){return this.M(s,void 0,a)}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a=this.p;for(;s--;)a=a.B;return a.u}find(s,a){let l=this.I(s,a);return new n(l,this.h,this)}forEach(s){let a=0,l=this.p;for(;l!==this.h;)s(l.u,a++,this),l=l.B}[Symbol.iterator](){return(function*(){let s=this.p;for(;s!==this.h;)yield s.u,s=s.B}).bind(this)()}},i=o;e.default=i}),YO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=ww(),r=o(bw()),n=mn();function o(l){return l&&l.t?l:{default:l}}var i=class Ew extends t.HashContainerIterator{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,d){if(d==="0")return u.o.u;if(d==="1")return u.o.l},set(c,d,p){if(d!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new Ew(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.HashContainer{constructor(l=[]){super();let u=this;l.forEach(function(c){u.setElement(c[0],c[1])})}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i!==0)return[this.p.u,this.p.l]}back(){if(this.i!==0)return[this._.u,this._.l]}setElement(l,u,c){return this.M(l,u,c)}getElementByKey(l,u){if(u===void 0&&(u=(0,r.default)(l)),u){let d=l[this.HASH_TAG];return d!==void 0?this.H[d].l:void 0}let c=this.g[l];return c?c.l:void 0}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return[u.u,u.l]}find(l,u){let c=this.I(l,u);return new i(c,this.h,this)}forEach(l){let u=0,c=this.p;for(;c!==this.h;)l([c.u,c.l],u++,this),c=c.B}[Symbol.iterator](){return(function*(){let l=this.p;for(;l!==this.h;)yield[l.u,l.l],l=l.B}).bind(this)()}},a=s;e.default=a}),zO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),Object.defineProperty(e,"Deque",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"HashMap",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"HashSet",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"LinkList",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"OrderedMap",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"OrderedSet",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"PriorityQueue",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"Queue",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"Stack",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"Vector",{enumerable:!0,get:function(){return o.default}});var t=d(DO()),r=d($O()),n=d(UO()),o=d(FO()),i=d(jO()),s=d(WO()),a=d(VO()),l=d(qO()),u=d(KO()),c=d(YO());function d(p){return p&&p.t?p:{default:p}}}),GO=Ae((e,t)=>{_e(),we(),be();var r=zO().OrderedSet,n=sn()("number-allocator:trace"),o=sn()("number-allocator:error");function i(a,l){this.low=a,this.high=l}i.prototype.equals=function(a){return this.low===a.low&&this.high===a.high},i.prototype.compare=function(a){return this.low<a.low&&this.high<a.low?-1:a.low<this.low&&a.high<this.low?1:0};function s(a,l){if(!(this instanceof s))return new s(a,l);this.min=a,this.max=l,this.ss=new r([],(u,c)=>u.compare(c)),n("Create"),this.clear()}s.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low},s.prototype.alloc=function(){if(this.ss.size()===0)return n("alloc():empty"),null;let a=this.ss.begin(),l=a.pointer.low,u=a.pointer.high,c=l;return c+1<=u?this.ss.updateKeyByIterator(a,new i(l+1,u)):this.ss.eraseElementByPos(0),n("alloc():"+c),c},s.prototype.use=function(a){let l=new i(a,a),u=this.ss.lowerBound(l);if(!u.equals(this.ss.end())){let c=u.pointer.low,d=u.pointer.high;return u.pointer.equals(l)?(this.ss.eraseElementByIterator(u),n("use():"+a),!0):c>a?!1:c===a?(this.ss.updateKeyByIterator(u,new i(c+1,d)),n("use():"+a),!0):d===a?(this.ss.updateKeyByIterator(u,new i(c,d-1)),n("use():"+a),!0):(this.ss.updateKeyByIterator(u,new i(a+1,d)),this.ss.insert(new i(c,a-1)),n("use():"+a),!0)}return n("use():failed"),!1},s.prototype.free=function(a){if(a<this.min||a>this.max){o("free():"+a+" is out of range");return}let l=new i(a,a),u=this.ss.upperBound(l);if(u.equals(this.ss.end())){if(u.equals(this.ss.begin())){this.ss.insert(l);return}u.pre();let c=u.pointer.high;u.pointer.high+1===a?this.ss.updateKeyByIterator(u,new i(c,a)):this.ss.insert(l)}else if(u.equals(this.ss.begin()))if(a+1===u.pointer.low){let c=u.pointer.high;this.ss.updateKeyByIterator(u,new i(a,c))}else this.ss.insert(l);else{let c=u.pointer.low,d=u.pointer.high;u.pre();let p=u.pointer.low;u.pointer.high+1===a?a+1===c?(this.ss.eraseElementByIterator(u),this.ss.updateKeyByIterator(u,new i(p,d))):this.ss.updateKeyByIterator(u,new i(p,a)):a+1===c?(this.ss.eraseElementByIterator(u.next()),this.ss.insert(new i(a,d))):this.ss.insert(l)}n("free():"+a)},s.prototype.clear=function(){n("clear()"),this.ss.clear(),this.ss.insert(new i(this.min,this.max))},s.prototype.intervalCount=function(){return this.ss.size()},s.prototype.dump=function(){console.log("length:"+this.ss.size());for(let a of this.ss)console.log(a)},t.exports=s}),Sw=Ae((e,t)=>{_e(),we(),be();var r=GO();t.exports.NumberAllocator=r}),QO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=BO(),r=Sw(),n=class{constructor(o){o>0&&(this.aliasToTopic=new t.LRUCache({max:o}),this.topicToAlias={},this.numberAllocator=new r.NumberAllocator(1,o),this.max=o,this.length=0)}put(o,i){if(i===0||i>this.max)return!1;let s=this.aliasToTopic.get(i);return s&&delete this.topicToAlias[s],this.aliasToTopic.set(i,o),this.topicToAlias[o]=i,this.numberAllocator.use(i),this.length=this.aliasToTopic.size,!0}getTopicByAlias(o){return this.aliasToTopic.get(o)}getAliasByTopic(o){let i=this.topicToAlias[o];return typeof i<"u"&&this.aliasToTopic.get(i),i}clear(){this.aliasToTopic.clear(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0}getLruAlias(){return this.numberAllocator.firstVacant()||[...this.aliasToTopic.keys()][this.aliasToTopic.size-1]}};e.default=n}),XO=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(e,"__esModule",{value:!0});var r=nu(),n=t(QO()),o=Ho(),i=(s,a)=>{s.log("_handleConnack");let{options:l}=s,u=l.protocolVersion===5?a.reasonCode:a.returnCode;if(clearTimeout(s.connackTimer),delete s.topicAliasSend,a.properties){if(a.properties.topicAliasMaximum){if(a.properties.topicAliasMaximum>65535){s.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}a.properties.topicAliasMaximum>0&&(s.topicAliasSend=new n.default(a.properties.topicAliasMaximum))}a.properties.serverKeepAlive&&l.keepalive&&(l.keepalive=a.properties.serverKeepAlive),a.properties.maximumPacketSize&&(l.properties||(l.properties={}),l.properties.maximumPacketSize=a.properties.maximumPacketSize)}if(u===0)s.reconnecting=!1,s._onConnect(a);else if(u>0){let c=new o.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[u]}`,u);s.emit("error",c)}};e.default=i}),JO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=(r,n,o)=>{r.log("handling pubrel packet");let i=typeof o<"u"?o:r.noop,{messageId:s}=n,a={cmd:"pubcomp",messageId:s};r.incomingStore.get(n,(l,u)=>{l?r._sendPacket(a,i):(r.emit("message",u.topic,u.payload,u),r.handleMessage(u,c=>{if(c)return i(c);r.incomingStore.del(u,r.noop),r._sendPacket(a,i)}))})};e.default=t}),ZO=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(MO()),n=t(LO()),o=t(XO()),i=t(nu()),s=t(JO()),a=(l,u,c)=>{let{options:d}=l;if(d.protocolVersion===5&&d.properties&&d.properties.maximumPacketSize&&d.properties.maximumPacketSize<u.length)return l.emit("error",new Error(`exceeding packets size ${u.cmd}`)),l.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),l;switch(l.log("_handlePacket :: emitting packetreceive"),l.emit("packetreceive",u),u.cmd){case"publish":(0,r.default)(l,u,c);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":l.reschedulePing(),(0,i.default)(l,u),c();break;case"pubrel":l.reschedulePing(),(0,s.default)(l,u,c);break;case"connack":(0,o.default)(l,u),c();break;case"auth":l.reschedulePing(),(0,n.default)(l,u),c();break;case"pingresp":l.log("_handlePacket :: received pingresp"),l.reschedulePing(!0),c();break;case"disconnect":l.emit("disconnect",u),c();break;default:l.log("_handlePacket :: unknown command"),c();break}};e.default=a}),ek=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(e,"__esModule",{value:!0}),e.TypedEventEmitter=void 0;var r=t((Wo(),ze(Di))),n=Ho(),o=class{};e.TypedEventEmitter=o,(0,n.applyMixin)(o,r.default)}),iu=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.isReactNativeBrowser=e.isWebWorker=void 0;var t=()=>{var i;return typeof window<"u"?typeof navigator<"u"&&((i=navigator.userAgent)===null||i===void 0?void 0:i.toLowerCase().indexOf(" electron/"))>-1&&He!=null&&He.versions?!Object.prototype.hasOwnProperty.call(He.versions,"electron"):typeof window.document<"u":!1},r=()=>{var i,s;return!!(typeof self=="object"&&!((s=(i=self==null?void 0:self.constructor)===null||i===void 0?void 0:i.name)===null||s===void 0)&&s.includes("WorkerGlobalScope"))},n=()=>typeof navigator<"u"&&navigator.product==="ReactNative",o=t()||r()||n();e.isWebWorker=r(),e.isReactNativeBrowser=n(),e.default=o}),tk=Ae((e,t)=>{_e(),we(),be(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.fastUniqueNumbers={}))}(e,function(r){var n=function(m){return function(_){var b=m(_);return _.add(b),b}},o=function(m){return function(_,b){return m.set(_,b),b}},i=Number.MAX_SAFE_INTEGER===void 0?9007199254740991:Number.MAX_SAFE_INTEGER,s=536870912,a=s*2,l=function(m,_){return function(b){var T=_.get(b),N=T===void 0?b.size:T<a?T+1:0;if(!b.has(N))return m(b,N);if(b.size<s){for(;b.has(N);)N=Math.floor(Math.random()*a);return m(b,N)}if(b.size>i)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;b.has(N);)N=Math.floor(Math.random()*i);return m(b,N)}},u=new WeakMap,c=o(u),d=l(c,u),p=n(d);r.addUniqueNumber=p,r.generateUniqueNumber=d})}),rk=Ae((e,t)=>{_e(),we(),be(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,tk()):typeof define=="function"&&define.amd?define(["exports","fast-unique-numbers"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimersBroker={},r.fastUniqueNumbers))}(e,function(r,n){var o=function(a){return a.method!==void 0&&a.method==="call"},i=function(a){return a.error===null&&typeof a.id=="number"},s=function(a){var l=new Map([[0,function(){}]]),u=new Map([[0,function(){}]]),c=new Map,d=new Worker(a);d.addEventListener("message",function(T){var N=T.data;if(o(N)){var R=N.params,S=R.timerId,D=R.timerType;if(D==="interval"){var U=l.get(S);if(typeof U=="number"){var x=c.get(U);if(x===void 0||x.timerId!==S||x.timerType!==D)throw new Error("The timer is in an undefined state.")}else if(typeof U<"u")U();else throw new Error("The timer is in an undefined state.")}else if(D==="timeout"){var L=u.get(S);if(typeof L=="number"){var j=c.get(L);if(j===void 0||j.timerId!==S||j.timerType!==D)throw new Error("The timer is in an undefined state.")}else if(typeof L<"u")L(),u.delete(S);else throw new Error("The timer is in an undefined state.")}}else if(i(N)){var Y=N.id,se=c.get(Y);if(se===void 0)throw new Error("The timer is in an undefined state.");var re=se.timerId,P=se.timerType;c.delete(Y),P==="interval"?l.delete(re):u.delete(re)}else{var B=N.error.message;throw new Error(B)}});var p=function(T){var N=n.generateUniqueNumber(c);c.set(N,{timerId:T,timerType:"interval"}),l.set(T,N),d.postMessage({id:N,method:"clear",params:{timerId:T,timerType:"interval"}})},m=function(T){var N=n.generateUniqueNumber(c);c.set(N,{timerId:T,timerType:"timeout"}),u.set(T,N),d.postMessage({id:N,method:"clear",params:{timerId:T,timerType:"timeout"}})},_=function(T){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,R=n.generateUniqueNumber(l);return l.set(R,function(){T(),typeof l.get(R)=="function"&&d.postMessage({id:null,method:"set",params:{delay:N,now:performance.now(),timerId:R,timerType:"interval"}})}),d.postMessage({id:null,method:"set",params:{delay:N,now:performance.now(),timerId:R,timerType:"interval"}}),R},b=function(T){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,R=n.generateUniqueNumber(u);return u.set(R,T),d.postMessage({id:null,method:"set",params:{delay:N,now:performance.now(),timerId:R,timerType:"timeout"}}),R};return{clearInterval:p,clearTimeout:m,setInterval:_,setTimeout:b}};r.load=s})}),nk=Ae((e,t)=>{_e(),we(),be(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,rk()):typeof define=="function"&&define.amd?define(["exports","worker-timers-broker"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimers={},r.workerTimersBroker))}(e,function(r,n){var o=function(d,p){var m=null;return function(){if(m!==null)return m;var _=new Blob([p],{type:"application/javascript; charset=utf-8"}),b=URL.createObjectURL(_);return m=d(b),setTimeout(function(){return URL.revokeObjectURL(b)}),m}},i=`(()=>{var e={472:(e,t,r)=>{var o,i;void 0===(i="function"==typeof(o=function(){"use strict";var e=new Map,t=new Map,r=function(t){var r=e.get(t);if(void 0===r)throw new Error('There is no interval scheduled with the given id "'.concat(t,'".'));clearTimeout(r),e.delete(t)},o=function(e){var r=t.get(e);if(void 0===r)throw new Error('There is no timeout scheduled with the given id "'.concat(e,'".'));clearTimeout(r),t.delete(e)},i=function(e,t){var r,o=performance.now();return{expected:o+(r=e-Math.max(0,o-t)),remainingDelay:r}},n=function e(t,r,o,i){var n=performance.now();n>o?postMessage({id:null,method:"call",params:{timerId:r,timerType:i}}):t.set(r,setTimeout(e,o-n,t,r,o,i))},a=function(t,r,o){var a=i(t,o),s=a.expected,d=a.remainingDelay;e.set(r,setTimeout(n,d,e,r,s,"interval"))},s=function(e,r,o){var a=i(e,o),s=a.expected,d=a.remainingDelay;t.set(r,setTimeout(n,d,t,r,s,"timeout"))};addEventListener("message",(function(e){var t=e.data;try{if("clear"===t.method){var i=t.id,n=t.params,d=n.timerId,c=n.timerType;if("interval"===c)r(d),postMessage({error:null,id:i});else{if("timeout"!==c)throw new Error('The given type "'.concat(c,'" is not supported'));o(d),postMessage({error:null,id:i})}}else{if("set"!==t.method)throw new Error('The given method "'.concat(t.method,'" is not supported'));var u=t.params,l=u.delay,p=u.now,m=u.timerId,v=u.timerType;if("interval"===v)a(l,m,p);else{if("timeout"!==v)throw new Error('The given type "'.concat(v,'" is not supported'));s(l,m,p)}}}catch(e){postMessage({error:{message:e.message},id:t.id,result:null})}}))})?o.call(t,r,t,e):o)||(e.exports=i)}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(472)})()})();`,s=o(n.load,i),a=function(d){return s().clearInterval(d)},l=function(d){return s().clearTimeout(d)},u=function(){var d;return(d=s()).setInterval.apply(d,arguments)},c=function(){var d;return(d=s()).setTimeout.apply(d,arguments)};r.clearInterval=a,r.clearTimeout=l,r.setInterval=u,r.setTimeout=c})}),ik=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(u,c,d,p){p===void 0&&(p=d);var m=Object.getOwnPropertyDescriptor(c,d);(!m||("get"in m?!c.__esModule:m.writable||m.configurable))&&(m={enumerable:!0,get:function(){return c[d]}}),Object.defineProperty(u,p,m)}:function(u,c,d,p){p===void 0&&(p=d),u[p]=c[d]}),r=e&&e.__setModuleDefault||(Object.create?function(u,c){Object.defineProperty(u,"default",{enumerable:!0,value:c})}:function(u,c){u.default=c}),n=e&&e.__importStar||function(u){if(u&&u.__esModule)return u;var c={};if(u!=null)for(var d in u)d!=="default"&&Object.prototype.hasOwnProperty.call(u,d)&&t(c,u,d);return r(c,u),c};Object.defineProperty(e,"__esModule",{value:!0});var o=n(iu()),i=nk(),s={set:i.setInterval,clear:i.clearInterval},a={set:(u,c)=>setInterval(u,c),clear:u=>clearInterval(u)},l=u=>{switch(u){case"native":return a;case"worker":return s;case"auto":default:return o.default&&!o.isWebWorker&&!o.isReactNativeBrowser?s:a}};e.default=l}),Aw=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(ik()),n=class{get keepaliveTimeoutTimestamp(){return this._keepaliveTimeoutTimestamp}get intervalEvery(){return this._intervalEvery}get keepalive(){return this._keepalive}constructor(o,i){this.destroyed=!1,this.client=o,this.timer=typeof i=="object"&&"set"in i&&"clear"in i?i:(0,r.default)(i),this.setKeepalive(o.options.keepalive)}clear(){this.timerId&&(this.timer.clear(this.timerId),this.timerId=null)}setKeepalive(o){if(o*=1e3,isNaN(o)||o<=0||o>2147483647)throw new Error(`Keepalive value must be an integer between 0 and 2147483647. Provided value is ${o}`);this._keepalive=o,this.reschedule(),this.client.log(`KeepaliveManager: set keepalive to ${o}ms`)}destroy(){this.clear(),this.destroyed=!0}reschedule(){if(this.destroyed)return;this.clear(),this.counter=0;let o=Math.ceil(this._keepalive*1.5);this._keepaliveTimeoutTimestamp=Date.now()+o,this._intervalEvery=Math.ceil(this._keepalive/2),this.timerId=this.timer.set(()=>{this.destroyed||(this.counter+=1,this.counter===2?this.client.sendPing():this.counter>2&&this.client.onKeepaliveTimeout())},this._intervalEvery)}};e.default=n}),vh=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(U,x,L,j){j===void 0&&(j=L);var Y=Object.getOwnPropertyDescriptor(x,L);(!Y||("get"in Y?!x.__esModule:Y.writable||Y.configurable))&&(Y={enumerable:!0,get:function(){return x[L]}}),Object.defineProperty(U,j,Y)}:function(U,x,L,j){j===void 0&&(j=L),U[j]=x[L]}),r=e&&e.__setModuleDefault||(Object.create?function(U,x){Object.defineProperty(U,"default",{enumerable:!0,value:x})}:function(U,x){U.default=x}),n=e&&e.__importStar||function(U){if(U&&U.__esModule)return U;var x={};if(U!=null)for(var L in U)L!=="default"&&Object.prototype.hasOwnProperty.call(U,L)&&t(x,U,L);return r(x,U),x},o=e&&e.__importDefault||function(U){return U&&U.__esModule?U:{default:U}};Object.defineProperty(e,"__esModule",{value:!0});var i=o(YR()),s=o(RO()),a=o(aw()),l=$i(),u=o(kO()),c=n(NO()),d=o(sn()),p=o(lw()),m=o(ZO()),_=Ho(),b=ek(),T=o(Aw()),N=n(iu()),R=globalThis.setImmediate||((...U)=>{let x=U.shift();(0,_.nextTick)(()=>{x(...U)})}),S={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0,writeCache:!0,timerVariant:"auto"},D=class Eh extends b.TypedEventEmitter{static defaultId(){return`mqttjs_${Math.random().toString(16).substr(2,8)}`}constructor(x,L){super(),this.options=L||{};for(let j in S)typeof this.options[j]>"u"?this.options[j]=S[j]:this.options[j]=L[j];this.log=this.options.log||(0,d.default)("mqttjs:client"),this.noop=this._noop.bind(this),this.log("MqttClient :: version:",Eh.VERSION),N.isWebWorker?this.log("MqttClient :: environment","webworker"):this.log("MqttClient :: environment",N.default?"browser":"node"),this.log("MqttClient :: options.protocol",L.protocol),this.log("MqttClient :: options.protocolVersion",L.protocolVersion),this.log("MqttClient :: options.username",L.username),this.log("MqttClient :: options.keepalive",L.keepalive),this.log("MqttClient :: options.reconnectPeriod",L.reconnectPeriod),this.log("MqttClient :: options.rejectUnauthorized",L.rejectUnauthorized),this.log("MqttClient :: options.properties.topicAliasMaximum",L.properties?L.properties.topicAliasMaximum:void 0),this.options.clientId=typeof L.clientId=="string"?L.clientId:Eh.defaultId(),this.log("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=L.protocolVersion===5&&L.customHandleAcks?L.customHandleAcks:(...j)=>{j[3](null,0)},this.options.writeCache||(s.default.writeToStream.cacheNumbers=!1),this.streamBuilder=x,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new a.default:this.options.messageIdProvider,this.outgoingStore=L.outgoingStore||new p.default,this.incomingStore=L.incomingStore||new p.default,this.queueQoSZero=L.queueQoSZero===void 0?!0:L.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.keepaliveManager=null,this.connected=!1,this.disconnecting=!1,this.reconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,L.properties&&L.properties.topicAliasMaximum>0&&(L.properties.topicAliasMaximum>65535?this.log("MqttClient :: options.properties.topicAliasMaximum is out of range"):this.topicAliasRecv=new i.default(L.properties.topicAliasMaximum)),this.on("connect",()=>{let{queue:j}=this,Y=()=>{let se=j.shift();this.log("deliver :: entry %o",se);let re=null;if(!se){this._resubscribe();return}re=se.packet,this.log("deliver :: call _sendPacket for %o",re);let P=!0;re.messageId&&re.messageId!==0&&(this.messageIdProvider.register(re.messageId)||(P=!1)),P?this._sendPacket(re,B=>{se.cb&&se.cb(B),Y()}):(this.log("messageId: %d has already used. The message is skipped and removed.",re.messageId),Y())};this.log("connect :: sending queued packets"),Y()}),this.on("close",()=>{this.log("close :: connected set to `false`"),this.connected=!1,this.log("close :: clearing connackTimer"),clearTimeout(this.connackTimer),this._destroyKeepaliveManager(),this.topicAliasRecv&&this.topicAliasRecv.clear(),this.log("close :: calling _setupReconnect"),this._setupReconnect()}),this.options.manualConnect||(this.log("MqttClient :: setting up stream"),this.connect())}handleAuth(x,L){L()}handleMessage(x,L){L()}_nextId(){return this.messageIdProvider.allocate()}getLastMessageId(){return this.messageIdProvider.getLastAllocated()}connect(){var x;let L=new l.Writable,j=s.default.parser(this.options),Y=null,se=[];this.log("connect :: calling method to clear reconnect"),this._clearReconnect(),this.disconnected&&!this.reconnecting&&(this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1),this.log("connect :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),j.on("packet",ne=>{this.log("parser :: on packet push to packets array."),se.push(ne)});let re=()=>{this.log("work :: getting next packet in queue");let ne=se.shift();if(ne)this.log("work :: packet pulled from queue"),(0,m.default)(this,ne,P);else{this.log("work :: no packets in queue");let ue=Y;Y=null,this.log("work :: done flag is %s",!!ue),ue&&ue()}},P=()=>{if(se.length)(0,_.nextTick)(re);else{let ne=Y;Y=null,ne()}};L._write=(ne,ue,ae)=>{Y=ae,this.log("writable stream :: parsing buffer"),j.parse(ne),re()};let B=ne=>{this.log("streamErrorHandler :: error",ne.message),ne.code?(this.log("streamErrorHandler :: emitting error"),this.emit("error",ne)):this.noop(ne)};this.log("connect :: pipe stream to writable stream"),this.stream.pipe(L),this.stream.on("error",B),this.stream.on("close",()=>{this.log("(%s)stream :: on close",this.options.clientId),this._flushVolatile(),this.log("stream: emit close to MqttClient"),this.emit("close")}),this.log("connect: sending packet `connect`");let oe={cmd:"connect",protocolId:this.options.protocolId,protocolVersion:this.options.protocolVersion,clean:this.options.clean,clientId:this.options.clientId,keepalive:this.options.keepalive,username:this.options.username,password:this.options.password,properties:this.options.properties};if(this.options.will&&(oe.will=Object.assign(Object.assign({},this.options.will),{payload:(x=this.options.will)===null||x===void 0?void 0:x.payload})),this.topicAliasRecv&&(oe.properties||(oe.properties={}),this.topicAliasRecv&&(oe.properties.topicAliasMaximum=this.topicAliasRecv.max)),this._writePacket(oe),j.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return this.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){let ne=Object.assign({cmd:"auth",reasonCode:0},this.options.authPacket);this._writePacket(ne)}}return this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(()=>{this.log("!!connectTimeout hit!! Calling _cleanUp with force `true`"),this.emit("error",new Error("connack timeout")),this._cleanUp(!0)},this.options.connectTimeout),this}publish(x,L,j,Y){this.log("publish :: message `%s` to topic `%s`",L,x);let{options:se}=this;typeof j=="function"&&(Y=j,j=null),j=j||{},j=Object.assign(Object.assign({},{qos:0,retain:!1,dup:!1}),j);let{qos:re,retain:P,dup:B,properties:oe,cbStorePut:ne}=j;if(this._checkDisconnecting(Y))return this;let ue=()=>{let ae=0;if((re===1||re===2)&&(ae=this._nextId(),ae===null))return this.log("No messageId left"),!1;let z={cmd:"publish",topic:x,payload:L,qos:re,retain:P,messageId:ae,dup:B};switch(se.protocolVersion===5&&(z.properties=oe),this.log("publish :: qos",re),re){case 1:case 2:this.outgoing[z.messageId]={volatile:!1,cb:Y||this.noop},this.log("MqttClient:publish: packet cmd: %s",z.cmd),this._sendPacket(z,void 0,ne);break;default:this.log("MqttClient:publish: packet cmd: %s",z.cmd),this._sendPacket(z,Y,ne);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!ue())&&this._storeProcessingQueue.push({invoke:ue,cbStorePut:j.cbStorePut,callback:Y}),this}publishAsync(x,L,j){return new Promise((Y,se)=>{this.publish(x,L,j,(re,P)=>{re?se(re):Y(P)})})}subscribe(x,L,j){let Y=this.options.protocolVersion;typeof L=="function"&&(j=L),j=j||this.noop;let se=!1,re=[];typeof x=="string"?(x=[x],re=x):Array.isArray(x)?re=x:typeof x=="object"&&(se=x.resubscribe,delete x.resubscribe,re=Object.keys(x));let P=c.validateTopics(re);if(P!==null)return R(j,new Error(`Invalid topic ${P}`)),this;if(this._checkDisconnecting(j))return this.log("subscribe: discconecting true"),this;let B={qos:0};Y===5&&(B.nl=!1,B.rap=!1,B.rh=0),L=Object.assign(Object.assign({},B),L);let oe=L.properties,ne=[],ue=(z,pe)=>{if(pe=pe||L,!Object.prototype.hasOwnProperty.call(this._resubscribeTopics,z)||this._resubscribeTopics[z].qos<pe.qos||se){let de={topic:z,qos:pe.qos};Y===5&&(de.nl=pe.nl,de.rap=pe.rap,de.rh=pe.rh,de.properties=oe),this.log("subscribe: pushing topic `%s` and qos `%s` to subs list",de.topic,de.qos),ne.push(de)}};if(Array.isArray(x)?x.forEach(z=>{this.log("subscribe: array topic %s",z),ue(z)}):Object.keys(x).forEach(z=>{this.log("subscribe: object topic %s, %o",z,x[z]),ue(z,x[z])}),!ne.length)return j(null,[]),this;let ae=()=>{let z=this._nextId();if(z===null)return this.log("No messageId left"),!1;let pe={cmd:"subscribe",subscriptions:ne,messageId:z};if(oe&&(pe.properties=oe),this.options.resubscribe){this.log("subscribe :: resubscribe true");let de=[];ne.forEach(ge=>{if(this.options.reconnectPeriod>0){let O={qos:ge.qos};Y===5&&(O.nl=ge.nl||!1,O.rap=ge.rap||!1,O.rh=ge.rh||0,O.properties=ge.properties),this._resubscribeTopics[ge.topic]=O,de.push(ge.topic)}}),this.messageIdToTopic[pe.messageId]=de}return this.outgoing[pe.messageId]={volatile:!0,cb(de,ge){if(!de){let{granted:O}=ge;for(let ie=0;ie<O.length;ie+=1)ne[ie].qos=O[ie]}j(de,ne,ge)}},this.log("subscribe :: call _sendPacket"),this._sendPacket(pe),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!ae())&&this._storeProcessingQueue.push({invoke:ae,callback:j}),this}subscribeAsync(x,L){return new Promise((j,Y)=>{this.subscribe(x,L,(se,re)=>{se?Y(se):j(re)})})}unsubscribe(x,L,j){typeof x=="string"&&(x=[x]),typeof L=="function"&&(j=L),j=j||this.noop;let Y=c.validateTopics(x);if(Y!==null)return R(j,new Error(`Invalid topic ${Y}`)),this;if(this._checkDisconnecting(j))return this;let se=()=>{let re=this._nextId();if(re===null)return this.log("No messageId left"),!1;let P={cmd:"unsubscribe",messageId:re,unsubscriptions:[]};return typeof x=="string"?P.unsubscriptions=[x]:Array.isArray(x)&&(P.unsubscriptions=x),this.options.resubscribe&&P.unsubscriptions.forEach(B=>{delete this._resubscribeTopics[B]}),typeof L=="object"&&L.properties&&(P.properties=L.properties),this.outgoing[P.messageId]={volatile:!0,cb:j},this.log("unsubscribe: call _sendPacket"),this._sendPacket(P),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!se())&&this._storeProcessingQueue.push({invoke:se,callback:j}),this}unsubscribeAsync(x,L){return new Promise((j,Y)=>{this.unsubscribe(x,L,(se,re)=>{se?Y(se):j(re)})})}end(x,L,j){this.log("end :: (%s)",this.options.clientId),(x==null||typeof x!="boolean")&&(j=j||L,L=x,x=!1),typeof L!="object"&&(j=j||L,L=null),this.log("end :: cb? %s",!!j),(!j||typeof j!="function")&&(j=this.noop);let Y=()=>{this.log("end :: closeStores: closing incoming and outgoing stores"),this.disconnected=!0,this.incomingStore.close(re=>{this.outgoingStore.close(P=>{if(this.log("end :: closeStores: emitting end"),this.emit("end"),j){let B=re||P;this.log("end :: closeStores: invoking callback with args"),j(B)}})}),this._deferredReconnect?this._deferredReconnect():(this.options.reconnectPeriod===0||this.options.manualConnect)&&(this.disconnecting=!1)},se=()=>{this.log("end :: (%s) :: finish :: calling _cleanUp with force %s",this.options.clientId,x),this._cleanUp(x,()=>{this.log("end :: finish :: calling process.nextTick on closeStores"),(0,_.nextTick)(Y)},L)};return this.disconnecting?(j(),this):(this._clearReconnect(),this.disconnecting=!0,!x&&Object.keys(this.outgoing).length>0?(this.log("end :: (%s) :: calling finish in 10ms once outgoing is empty",this.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,se,10))):(this.log("end :: (%s) :: immediately calling finish",this.options.clientId),se()),this)}endAsync(x,L){return new Promise((j,Y)=>{this.end(x,L,se=>{se?Y(se):j()})})}removeOutgoingMessage(x){if(this.outgoing[x]){let{cb:L}=this.outgoing[x];this._removeOutgoingAndStoreMessage(x,()=>{L(new Error("Message removed"))})}return this}reconnect(x){this.log("client reconnect");let L=()=>{x?(this.options.incomingStore=x.incomingStore,this.options.outgoingStore=x.outgoingStore):(this.options.incomingStore=null,this.options.outgoingStore=null),this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1,this._deferredReconnect=null,this._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=L:L(),this}_flushVolatile(){this.outgoing&&(this.log("_flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(this.outgoing).forEach(x=>{this.outgoing[x].volatile&&typeof this.outgoing[x].cb=="function"&&(this.outgoing[x].cb(new Error("Connection closed")),delete this.outgoing[x])}))}_flush(){this.outgoing&&(this.log("_flush: queue exists? %b",!!this.outgoing),Object.keys(this.outgoing).forEach(x=>{typeof this.outgoing[x].cb=="function"&&(this.outgoing[x].cb(new Error("Connection closed")),delete this.outgoing[x])}))}_removeTopicAliasAndRecoverTopicName(x){let L;x.properties&&(L=x.properties.topicAlias);let j=x.topic.toString();if(this.log("_removeTopicAliasAndRecoverTopicName :: alias %d, topic %o",L,j),j.length===0){if(typeof L>"u")return new Error("Unregistered Topic Alias");if(j=this.topicAliasSend.getTopicByAlias(L),typeof j>"u")return new Error("Unregistered Topic Alias");x.topic=j}L&&delete x.properties.topicAlias}_checkDisconnecting(x){return this.disconnecting&&(x&&x!==this.noop?x(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting}_reconnect(){this.log("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this.connect()}),this.log("client already connected. disconnecting first.")):(this.log("_reconnect: calling connect"),this.connect())}_setupReconnect(){!this.disconnecting&&!this.reconnectTimer&&this.options.reconnectPeriod>0?(this.reconnecting||(this.log("_setupReconnect :: emit `offline` state"),this.emit("offline"),this.log("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),this.log("_setupReconnect :: setting reconnectTimer for %d ms",this.options.reconnectPeriod),this.reconnectTimer=setInterval(()=>{this.log("reconnectTimer :: reconnect triggered!"),this._reconnect()},this.options.reconnectPeriod)):this.log("_setupReconnect :: doing nothing...")}_clearReconnect(){this.log("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)}_cleanUp(x,L,j={}){if(L&&(this.log("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",L)),this.log("_cleanUp :: forced? %s",x),x)this.options.reconnectPeriod===0&&this.options.clean&&this._flush(),this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{let Y=Object.assign({cmd:"disconnect"},j);this.log("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(Y,()=>{this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),R(()=>{this.stream.end(()=>{this.log("_cleanUp :: (%s) :: stream destroyed",this.options.clientId)})})})}!this.disconnecting&&!this.reconnecting&&(this.log("_cleanUp :: client not disconnecting/reconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this._destroyKeepaliveManager(),L&&!this.connected&&(this.log("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",L),L())}_storeAndSend(x,L,j){this.log("storeAndSend :: store packet with cmd %s to outgoingStore",x.cmd);let Y=x,se;if(Y.cmd==="publish"&&(Y=(0,u.default)(x),se=this._removeTopicAliasAndRecoverTopicName(Y),se))return L&&L(se);this.outgoingStore.put(Y,re=>{if(re)return L&&L(re);j(),this._writePacket(x,L)})}_applyTopicAlias(x){if(this.options.protocolVersion===5&&x.cmd==="publish"){let L;x.properties&&(L=x.properties.topicAlias);let j=x.topic.toString();if(this.topicAliasSend)if(L){if(j.length!==0&&(this.log("applyTopicAlias :: register topic: %s - alias: %d",j,L),!this.topicAliasSend.put(j,L)))return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",j,L),new Error("Sending Topic Alias out of range")}else j.length!==0&&(this.options.autoAssignTopicAlias?(L=this.topicAliasSend.getAliasByTopic(j),L?(x.topic="",x.properties=Object.assign(Object.assign({},x.properties),{topicAlias:L}),this.log("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",j,L)):(L=this.topicAliasSend.getLruAlias(),this.topicAliasSend.put(j,L),x.properties=Object.assign(Object.assign({},x.properties),{topicAlias:L}),this.log("applyTopicAlias :: auto assign topic: %s - alias: %d",j,L))):this.options.autoUseTopicAlias&&(L=this.topicAliasSend.getAliasByTopic(j),L&&(x.topic="",x.properties=Object.assign(Object.assign({},x.properties),{topicAlias:L}),this.log("applyTopicAlias :: auto use topic: %s - alias: %d",j,L))));else if(L)return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",j,L),new Error("Sending Topic Alias out of range")}}_noop(x){this.log("noop ::",x)}_writePacket(x,L){this.log("_writePacket :: packet: %O",x),this.log("_writePacket :: emitting `packetsend`"),this.emit("packetsend",x),this.log("_writePacket :: writing to stream");let j=s.default.writeToStream(x,this.stream,this.options);this.log("_writePacket :: writeToStream result %s",j),!j&&L&&L!==this.noop?(this.log("_writePacket :: handle events on `drain` once through callback."),this.stream.once("drain",L)):L&&(this.log("_writePacket :: invoking cb"),L())}_sendPacket(x,L,j,Y){this.log("_sendPacket :: (%s) ::  start",this.options.clientId),j=j||this.noop,L=L||this.noop;let se=this._applyTopicAlias(x);if(se){L(se);return}if(!this.connected){if(x.cmd==="auth"){this._writePacket(x,L);return}this.log("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(x,L,j);return}if(Y){this._writePacket(x,L);return}switch(x.cmd){case"publish":break;case"pubrel":this._storeAndSend(x,L,j);return;default:this._writePacket(x,L);return}switch(x.qos){case 2:case 1:this._storeAndSend(x,L,j);break;case 0:default:this._writePacket(x,L);break}this.log("_sendPacket :: (%s) ::  end",this.options.clientId)}_storePacket(x,L,j){this.log("_storePacket :: packet: %o",x),this.log("_storePacket :: cb? %s",!!L),j=j||this.noop;let Y=x;if(Y.cmd==="publish"){Y=(0,u.default)(x);let re=this._removeTopicAliasAndRecoverTopicName(Y);if(re)return L&&L(re)}let se=Y.qos||0;se===0&&this.queueQoSZero||Y.cmd!=="publish"?this.queue.push({packet:Y,cb:L}):se>0?(L=this.outgoing[Y.messageId]?this.outgoing[Y.messageId].cb:null,this.outgoingStore.put(Y,re=>{if(re)return L&&L(re);j()})):L&&L(new Error("No connection to broker"))}_setupKeepaliveManager(){this.log("_setupKeepaliveManager :: keepalive %d (seconds)",this.options.keepalive),!this.keepaliveManager&&this.options.keepalive&&(this.keepaliveManager=new T.default(this,this.options.timerVariant))}_destroyKeepaliveManager(){this.keepaliveManager&&(this.log("_destroyKeepaliveManager :: destroying keepalive manager"),this.keepaliveManager.destroy(),this.keepaliveManager=null)}reschedulePing(x=!1){this.keepaliveManager&&this.options.keepalive&&(x||this.options.reschedulePings)&&this._reschedulePing()}_reschedulePing(){this.log("_reschedulePing :: rescheduling ping"),this.keepaliveManager.reschedule()}sendPing(){this.log("_sendPing :: sending pingreq"),this._sendPacket({cmd:"pingreq"})}onKeepaliveTimeout(){this.emit("error",new Error("Keepalive timeout")),this.log("onKeepaliveTimeout :: calling _cleanUp with force true"),this._cleanUp(!0)}_resubscribe(){this.log("_resubscribe");let x=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion>=4&&!this.connackPacket.sessionPresent)&&x.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){this.log("_resubscribe: protocolVersion 5");for(let L=0;L<x.length;L++){let j={};j[x[L]]=this._resubscribeTopics[x[L]],j.resubscribe=!0,this.subscribe(j,{properties:j[x[L]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1}_onConnect(x){if(this.disconnected){this.emit("connect",x);return}this.connackPacket=x,this.messageIdProvider.clear(),this._setupKeepaliveManager(),this.connected=!0;let L=()=>{let j=this.outgoingStore.createStream(),Y=()=>{j.destroy(),j=null,this._flushStoreProcessingQueue(),se()},se=()=>{this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={}};this.once("close",Y),j.on("error",P=>{se(),this._flushStoreProcessingQueue(),this.removeListener("close",Y),this.emit("error",P)});let re=()=>{if(!j)return;let P=j.read(1),B;if(!P){j.once("readable",re);return}if(this._storeProcessing=!0,this._packetIdsDuringStoreProcessing[P.messageId]){re();return}!this.disconnecting&&!this.reconnectTimer?(B=this.outgoing[P.messageId]?this.outgoing[P.messageId].cb:null,this.outgoing[P.messageId]={volatile:!1,cb(oe,ne){B&&B(oe,ne),re()}},this._packetIdsDuringStoreProcessing[P.messageId]=!0,this.messageIdProvider.register(P.messageId)?this._sendPacket(P,void 0,void 0,!0):this.log("messageId: %d has already used.",P.messageId)):j.destroy&&j.destroy()};j.on("end",()=>{let P=!0;for(let B in this._packetIdsDuringStoreProcessing)if(!this._packetIdsDuringStoreProcessing[B]){P=!1;break}this.removeListener("close",Y),P?(se(),this._invokeAllStoreProcessingQueue(),this.emit("connect",x)):L()}),re()};L()}_invokeStoreProcessingQueue(){if(!this._storeProcessing&&this._storeProcessingQueue.length>0){let x=this._storeProcessingQueue[0];if(x&&x.invoke())return this._storeProcessingQueue.shift(),!0}return!1}_invokeAllStoreProcessingQueue(){for(;this._invokeStoreProcessingQueue(););}_flushStoreProcessingQueue(){for(let x of this._storeProcessingQueue)x.cbStorePut&&x.cbStorePut(new Error("Connection closed")),x.callback&&x.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)}_removeOutgoingAndStoreMessage(x,L){delete this.outgoing[x],this.outgoingStore.del({messageId:x},(j,Y)=>{L(j,Y),this.messageIdProvider.deallocate(x),this._invokeStoreProcessingQueue()})}};D.VERSION=_.MQTTJS_VERSION,e.default=D}),ok=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=Sw(),r=class{constructor(){this.numberAllocator=new t.NumberAllocator(1,65535)}allocate(){return this.lastId=this.numberAllocator.alloc(),this.lastId}getLastAllocated(){return this.lastId}register(n){return this.numberAllocator.use(n)}deallocate(n){this.numberAllocator.free(n)}clear(){this.numberAllocator.clear()}};e.default=r});function Jn(e){throw new RangeError(xw[e])}function bm(e,t){let r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]);let o=function(i,s){let a=[],l=i.length;for(;l--;)a[l]=s(i[l]);return a}((e=e.replace(Tw,".")).split("."),t).join(".");return n+o}function wm(e){let t=[],r=0,n=e.length;for(;r<n;){let o=e.charCodeAt(r++);if(o>=55296&&o<=56319&&r<n){let i=e.charCodeAt(r++);(64512&i)==56320?t.push(((1023&o)<<10)+(1023&i)+65536):(t.push(o),r--)}else t.push(o)}return t}var vm,Em,Tw,xw,sr,fa,sc,ac,lc,uc,An,sk=_t(()=>{_e(),we(),be(),vm=/^xn--/,Em=/[^\0-\x7E]/,Tw=/[\x2E\u3002\uFF0E\uFF61]/g,xw={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},sr=Math.floor,fa=String.fromCharCode,sc=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},ac=function(e,t,r){let n=0;for(e=r?sr(e/700):e>>1,e+=sr(e/t);e>455;n+=36)e=sr(e/35);return sr(n+36*e/(e+38))},lc=function(e){let t=[],r=e.length,n=0,o=128,i=72,s=e.lastIndexOf("-");s<0&&(s=0);for(let l=0;l<s;++l)e.charCodeAt(l)>=128&&Jn("not-basic"),t.push(e.charCodeAt(l));for(let l=s>0?s+1:0;l<r;){let u=n;for(let d=1,p=36;;p+=36){l>=r&&Jn("invalid-input");let m=(a=e.charCodeAt(l++))-48<10?a-22:a-65<26?a-65:a-97<26?a-97:36;(m>=36||m>sr((2147483647-n)/d))&&Jn("overflow"),n+=m*d;let _=p<=i?1:p>=i+26?26:p-i;if(m<_)break;let b=36-_;d>sr(2147483647/b)&&Jn("overflow"),d*=b}let c=t.length+1;i=ac(n-u,c,u==0),sr(n/c)>2147483647-o&&Jn("overflow"),o+=sr(n/c),n%=c,t.splice(n++,0,o)}var a;return String.fromCodePoint(...t)},uc=function(e){let t=[],r=(e=wm(e)).length,n=128,o=0,i=72;for(let l of e)l<128&&t.push(fa(l));let s=t.length,a=s;for(s&&t.push("-");a<r;){let l=2147483647;for(let c of e)c>=n&&c<l&&(l=c);let u=a+1;l-n>sr((2147483647-o)/u)&&Jn("overflow"),o+=(l-n)*u,n=l;for(let c of e)if(c<n&&++o>2147483647&&Jn("overflow"),c==n){let d=o;for(let p=36;;p+=36){let m=p<=i?1:p>=i+26?26:p-i;if(d<m)break;let _=d-m,b=36-m;t.push(fa(sc(m+_%b,0))),d=sr(_/b)}t.push(fa(sc(d,0))),i=ac(o,u,a==s),o=0,++a}++o,++n}return t.join("")},An={version:"2.1.0",ucs2:{decode:wm,encode:e=>String.fromCodePoint(...e)},decode:lc,encode:uc,toASCII:function(e){return bm(e,function(t){return Em.test(t)?"xn--"+uc(t):t})},toUnicode:function(e){return bm(e,function(t){return vm.test(t)?lc(t.slice(4).toLowerCase()):t})}},An.decode,An.encode,An.toASCII,An.toUnicode,An.ucs2,An.version});function ak(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Sm,Gi,Am,Sr,lk=_t(()=>{_e(),we(),be(),Sm=function(e,t,r,n){t=t||"&",r=r||"=";var o={};if(typeof e!="string"||e.length===0)return o;var i=/\+/g;e=e.split(t);var s=1e3;n&&typeof n.maxKeys=="number"&&(s=n.maxKeys);var a=e.length;s>0&&a>s&&(a=s);for(var l=0;l<a;++l){var u,c,d,p,m=e[l].replace(i,"%20"),_=m.indexOf(r);_>=0?(u=m.substr(0,_),c=m.substr(_+1)):(u=m,c=""),d=decodeURIComponent(u),p=decodeURIComponent(c),ak(o,d)?Array.isArray(o[d])?o[d].push(p):o[d]=[o[d],p]:o[d]=p}return o},Gi=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},Am=function(e,t,r,n){return t=t||"&",r=r||"=",e===null&&(e=void 0),typeof e=="object"?Object.keys(e).map(function(o){var i=encodeURIComponent(Gi(o))+r;return Array.isArray(e[o])?e[o].map(function(s){return i+encodeURIComponent(Gi(s))}).join(t):i+encodeURIComponent(Gi(e[o]))}).join(t):n?encodeURIComponent(Gi(n))+r+encodeURIComponent(Gi(e)):""},Sr={},Sr.decode=Sr.parse=Sm,Sr.encode=Sr.stringify=Am,Sr.decode,Sr.encode,Sr.parse,Sr.stringify});function Sh(){throw new Error("setTimeout has not been defined")}function Ah(){throw new Error("clearTimeout has not been defined")}function Iw(e){if(Vr===setTimeout)return setTimeout(e,0);if((Vr===Sh||!Vr)&&setTimeout)return Vr=setTimeout,setTimeout(e,0);try{return Vr(e,0)}catch{try{return Vr.call(null,e,0)}catch{return Vr.call(this||wi,e,0)}}}function uk(){vi&&hi&&(vi=!1,hi.length?Or=hi.concat(Or):As=-1,Or.length&&Cw())}function Cw(){if(!vi){var e=Iw(uk);vi=!0;for(var t=Or.length;t;){for(hi=Or,Or=[];++As<t;)hi&&hi[As].run();As=-1,t=Or.length}hi=null,vi=!1,function(r){if(qr===clearTimeout)return clearTimeout(r);if((qr===Ah||!qr)&&clearTimeout)return qr=clearTimeout,clearTimeout(r);try{qr(r)}catch{try{return qr.call(null,r)}catch{return qr.call(this||wi,r)}}}(e)}}function Tm(e,t){(this||wi).fun=e,(this||wi).array=t}function Fr(){}var xm,Vr,qr,wi,it,hi,Or,vi,As,nt,ck=_t(()=>{_e(),we(),be(),wi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Ai,it=xm={},function(){try{Vr=typeof setTimeout=="function"?setTimeout:Sh}catch{Vr=Sh}try{qr=typeof clearTimeout=="function"?clearTimeout:Ah}catch{qr=Ah}}(),Or=[],vi=!1,As=-1,it.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Or.push(new Tm(e,t)),Or.length!==1||vi||Iw(Cw)},Tm.prototype.run=function(){(this||wi).fun.apply(null,(this||wi).array)},it.title="browser",it.browser=!0,it.env={},it.argv=[],it.version="",it.versions={},it.on=Fr,it.addListener=Fr,it.once=Fr,it.off=Fr,it.removeListener=Fr,it.removeAllListeners=Fr,it.emit=Fr,it.prependListener=Fr,it.prependOnceListener=Fr,it.listeners=function(e){return[]},it.binding=function(e){throw new Error("process.binding is not supported")},it.cwd=function(){return"/"},it.chdir=function(e){throw new Error("process.chdir is not supported")},it.umask=function(){return 0},nt=xm,nt.addListener,nt.argv,nt.binding,nt.browser,nt.chdir,nt.cwd,nt.emit,nt.env,nt.listeners,nt.nextTick,nt.off,nt.on,nt.once,nt.prependListener,nt.prependOnceListener,nt.removeAllListeners,nt.removeListener,nt.title,nt.umask,nt.version,nt.versions});function fk(){if(Th)return Ua;Th=!0;var e=Ua={},t,r;function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?t=setTimeout:t=n}catch{t=n}try{typeof clearTimeout=="function"?r=clearTimeout:r=o}catch{r=o}})();function i(b){if(t===setTimeout)return setTimeout(b,0);if((t===n||!t)&&setTimeout)return t=setTimeout,setTimeout(b,0);try{return t(b,0)}catch{try{return t.call(null,b,0)}catch{return t.call(this||ri,b,0)}}}function s(b){if(r===clearTimeout)return clearTimeout(b);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(b);try{return r(b)}catch{try{return r.call(null,b)}catch{return r.call(this||ri,b)}}}var a=[],l=!1,u,c=-1;function d(){!l||!u||(l=!1,u.length?a=u.concat(a):c=-1,a.length&&p())}function p(){if(!l){var b=i(d);l=!0;for(var T=a.length;T;){for(u=a,a=[];++c<T;)u&&u[c].run();c=-1,T=a.length}u=null,l=!1,s(b)}}e.nextTick=function(b){var T=new Array(arguments.length-1);if(arguments.length>1)for(var N=1;N<arguments.length;N++)T[N-1]=arguments[N];a.push(new m(b,T)),a.length===1&&!l&&i(p)};function m(b,T){(this||ri).fun=b,(this||ri).array=T}m.prototype.run=function(){(this||ri).fun.apply(null,(this||ri).array)},e.title="browser",e.browser=!0,e.env={},e.argv=[],e.version="",e.versions={};function _(){}return e.on=_,e.addListener=_,e.once=_,e.off=_,e.removeListener=_,e.removeAllListeners=_,e.emit=_,e.prependListener=_,e.prependOnceListener=_,e.listeners=function(b){return[]},e.binding=function(b){throw new Error("process.binding is not supported")},e.cwd=function(){return"/"},e.chdir=function(b){throw new Error("process.chdir is not supported")},e.umask=function(){return 0},Ua}var Ua,Th,ri,et,Rw=_t(()=>{_e(),we(),be(),Ua={},Th=!1,ri=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Ai,et=fk(),et.platform="browser",et.addListener,et.argv,et.binding,et.browser,et.chdir,et.cwd,et.emit,et.env,et.listeners,et.nextTick,et.off,et.on,et.once,et.prependListener,et.prependOnceListener,et.removeAllListeners,et.removeListener,et.title,et.umask,et.version,et.versions});function hk(){if(xh)return Fa;xh=!0;var e=et;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,s){for(var a="",l=0,u=-1,c=0,d,p=0;p<=i.length;++p){if(p<i.length)d=i.charCodeAt(p);else{if(d===47)break;d=47}if(d===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var m=a.lastIndexOf("/");if(m!==a.length-1){m===-1?(a="",l=0):(a=a.slice(0,m),l=a.length-1-a.lastIndexOf("/")),u=p,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=p,c=0;continue}}s&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,p):a=i.slice(u+1,p),l=p-u-1;u=p,c=0}else d===46&&c!==-1?++c:c=-1}return a}function n(i,s){var a=s.dir||s.root,l=s.base||(s.name||"")+(s.ext||"");return a?a===s.root?a+l:a+i+l:l}var o={resolve:function(){for(var i="",s=!1,a,l=arguments.length-1;l>=-1&&!s;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=e.cwd()),u=a),t(u),u.length!==0&&(i=u+"/"+i,s=u.charCodeAt(0)===47)}return i=r(i,!s),s?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var s=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!s),i.length===0&&!s&&(i="."),i.length>0&&a&&(i+="/"),s?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,s=0;s<arguments.length;++s){var a=arguments[s];t(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":o.normalize(i)},relative:function(i,s){if(t(i),t(s),i===s||(i=o.resolve(i),s=o.resolve(s),i===s))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<s.length&&s.charCodeAt(c)===47;++c);for(var d=s.length,p=d-c,m=u<p?u:p,_=-1,b=0;b<=m;++b){if(b===m){if(p>m){if(s.charCodeAt(c+b)===47)return s.slice(c+b+1);if(b===0)return s.slice(c+b)}else u>m&&(i.charCodeAt(a+b)===47?_=b:b===0&&(_=0));break}var T=i.charCodeAt(a+b),N=s.charCodeAt(c+b);if(T!==N)break;T===47&&(_=b)}var R="";for(b=a+_+1;b<=l;++b)(b===l||i.charCodeAt(b)===47)&&(R.length===0?R+="..":R+="/..");return R.length>0?R+s.slice(c+_):(c+=_,s.charCodeAt(c)===47&&++c,s.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var s=i.charCodeAt(0),a=s===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(s=i.charCodeAt(c),s===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,s){if(s!==void 0&&typeof s!="string")throw new TypeError('"ext" argument must be a string');t(i);var a=0,l=-1,u=!0,c;if(s!==void 0&&s.length>0&&s.length<=i.length){if(s.length===i.length&&s===i)return"";var d=s.length-1,p=-1;for(c=i.length-1;c>=0;--c){var m=i.charCodeAt(c);if(m===47){if(!u){a=c+1;break}}else p===-1&&(u=!1,p=c+1),d>=0&&(m===s.charCodeAt(d)?--d===-1&&(l=c):(d=-1,l=p))}return a===l?l=p:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){t(i);for(var s=-1,a=0,l=-1,u=!0,c=0,d=i.length-1;d>=0;--d){var p=i.charCodeAt(d);if(p===47){if(!u){a=d+1;break}continue}l===-1&&(u=!1,l=d+1),p===46?s===-1?s=d:c!==1&&(c=1):s!==-1&&(c=-1)}return s===-1||l===-1||c===0||c===1&&s===l-1&&s===a+1?"":i.slice(s,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var s={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return s;var a=i.charCodeAt(0),l=a===47,u;l?(s.root="/",u=1):u=0;for(var c=-1,d=0,p=-1,m=!0,_=i.length-1,b=0;_>=u;--_){if(a=i.charCodeAt(_),a===47){if(!m){d=_+1;break}continue}p===-1&&(m=!1,p=_+1),a===46?c===-1?c=_:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===d+1?p!==-1&&(d===0&&l?s.base=s.name=i.slice(1,p):s.base=s.name=i.slice(d,p)):(d===0&&l?(s.name=i.slice(1,c),s.base=i.slice(1,p)):(s.name=i.slice(d,c),s.base=i.slice(d,p)),s.ext=i.slice(c,p)),d>0?s.dir=i.slice(0,d-1):l&&(s.dir="/"),s},sep:"/",delimiter:":",win32:null,posix:null};return o.posix=o,Fa=o,Fa}var Fa,xh,Ih,dk=_t(()=>{_e(),we(),be(),Rw(),Fa={},xh=!1,Ih=hk()}),Ow={};Li(Ow,{URL:()=>zw,Url:()=>Hw,default:()=>qe,fileURLToPath:()=>kw,format:()=>Vw,parse:()=>Yw,pathToFileURL:()=>Nw,resolve:()=>qw,resolveObject:()=>Kw});function Xt(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function ts(e,t,r){if(e&&lr.isObject(e)&&e instanceof Xt)return e;var n=new Xt;return n.parse(e,t,r),n}function pk(){if(Ch)return ja;Ch=!0;var e=nt;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,s){for(var a="",l=0,u=-1,c=0,d,p=0;p<=i.length;++p){if(p<i.length)d=i.charCodeAt(p);else{if(d===47)break;d=47}if(d===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var m=a.lastIndexOf("/");if(m!==a.length-1){m===-1?(a="",l=0):(a=a.slice(0,m),l=a.length-1-a.lastIndexOf("/")),u=p,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=p,c=0;continue}}s&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,p):a=i.slice(u+1,p),l=p-u-1;u=p,c=0}else d===46&&c!==-1?++c:c=-1}return a}function n(i,s){var a=s.dir||s.root,l=s.base||(s.name||"")+(s.ext||"");return a?a===s.root?a+l:a+i+l:l}var o={resolve:function(){for(var i="",s=!1,a,l=arguments.length-1;l>=-1&&!s;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=e.cwd()),u=a),t(u),u.length!==0&&(i=u+"/"+i,s=u.charCodeAt(0)===47)}return i=r(i,!s),s?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var s=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!s),i.length===0&&!s&&(i="."),i.length>0&&a&&(i+="/"),s?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,s=0;s<arguments.length;++s){var a=arguments[s];t(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":o.normalize(i)},relative:function(i,s){if(t(i),t(s),i===s||(i=o.resolve(i),s=o.resolve(s),i===s))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<s.length&&s.charCodeAt(c)===47;++c);for(var d=s.length,p=d-c,m=u<p?u:p,_=-1,b=0;b<=m;++b){if(b===m){if(p>m){if(s.charCodeAt(c+b)===47)return s.slice(c+b+1);if(b===0)return s.slice(c+b)}else u>m&&(i.charCodeAt(a+b)===47?_=b:b===0&&(_=0));break}var T=i.charCodeAt(a+b),N=s.charCodeAt(c+b);if(T!==N)break;T===47&&(_=b)}var R="";for(b=a+_+1;b<=l;++b)(b===l||i.charCodeAt(b)===47)&&(R.length===0?R+="..":R+="/..");return R.length>0?R+s.slice(c+_):(c+=_,s.charCodeAt(c)===47&&++c,s.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var s=i.charCodeAt(0),a=s===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(s=i.charCodeAt(c),s===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,s){if(s!==void 0&&typeof s!="string")throw new TypeError('"ext" argument must be a string');t(i);var a=0,l=-1,u=!0,c;if(s!==void 0&&s.length>0&&s.length<=i.length){if(s.length===i.length&&s===i)return"";var d=s.length-1,p=-1;for(c=i.length-1;c>=0;--c){var m=i.charCodeAt(c);if(m===47){if(!u){a=c+1;break}}else p===-1&&(u=!1,p=c+1),d>=0&&(m===s.charCodeAt(d)?--d===-1&&(l=c):(d=-1,l=p))}return a===l?l=p:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){t(i);for(var s=-1,a=0,l=-1,u=!0,c=0,d=i.length-1;d>=0;--d){var p=i.charCodeAt(d);if(p===47){if(!u){a=d+1;break}continue}l===-1&&(u=!1,l=d+1),p===46?s===-1?s=d:c!==1&&(c=1):s!==-1&&(c=-1)}return s===-1||l===-1||c===0||c===1&&s===l-1&&s===a+1?"":i.slice(s,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var s={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return s;var a=i.charCodeAt(0),l=a===47,u;l?(s.root="/",u=1):u=0;for(var c=-1,d=0,p=-1,m=!0,_=i.length-1,b=0;_>=u;--_){if(a=i.charCodeAt(_),a===47){if(!m){d=_+1;break}continue}p===-1&&(m=!1,p=_+1),a===46?c===-1?c=_:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===d+1?p!==-1&&(d===0&&l?s.base=s.name=i.slice(1,p):s.base=s.name=i.slice(d,p)):(d===0&&l?(s.name=i.slice(1,c),s.base=i.slice(1,p)):(s.name=i.slice(d,c),s.base=i.slice(d,p)),s.ext=i.slice(c,p)),d>0?s.dir=i.slice(0,d-1):l&&(s.dir="/"),s},sep:"/",delimiter:":",win32:null,posix:null};return o.posix=o,ja=o,ja}function gk(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return dl?mk(e):yk(e)}function mk(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let o=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&o===102||r[n+1]==="5"&&o===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(Dw,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,o=r[2];if(n<Lw||n>Bw||o!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function yk(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function _k(e){let t=Rh.resolve(e),r=e.charCodeAt(e.length-1);(r===Pw||dl&&r===Mw)&&t[t.length-1]!==Rh.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace($w,"%25")),!dl&&t.includes("\\")&&(t=t.replace(Uw,"%5C")),t.includes(`
+`)&&(t=t.replace(Fw,"%0A")),t.includes("\r")&&(t=t.replace(jw,"%0D")),t.includes("	")&&(t=t.replace(Ww,"%09")),n.pathname=t,n}function kw(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return pl?bk(e):wk(e)}function bk(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let o=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&o===102||r[n+1]==="5"&&o===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(Zw,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,o=r[2];if(n<Xw||n>Jw||o!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function wk(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function Nw(e){let t=Ih.resolve(e),r=e.charCodeAt(e.length-1);(r===Qw||pl&&r===Gw)&&t[t.length-1]!==Ih.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace(ev,"%25")),!pl&&t.includes("\\")&&(t=t.replace(tv,"%5C")),t.includes(`
+`)&&(t=t.replace(rv,"%0A")),t.includes("\r")&&(t=t.replace(nv,"%0D")),t.includes("	")&&(t=t.replace(iv,"%09")),n.pathname=t,n}var qe,Im,lr,Cm,Rm,Om,km,ha,cc,fc,hc,Nm,Mm,da,Zn,pa,ja,Ch,Rh,Pm,Mw,Pw,Lw,Bw,dl,Dw,$w,Uw,Fw,jw,Ww,Lm,Hw,Vw,qw,Kw,Yw,zw,Gw,Qw,Xw,Jw,pl,Zw,ev,tv,rv,nv,iv,vk=_t(()=>{_e(),we(),be(),sk(),lk(),ck(),dk(),Rw(),qe={},Im=An,lr={isString:function(e){return typeof e=="string"},isObject:function(e){return typeof e=="object"&&e!==null},isNull:function(e){return e===null},isNullOrUndefined:function(e){return e==null}},qe.parse=ts,qe.resolve=function(e,t){return ts(e,!1,!0).resolve(t)},qe.resolveObject=function(e,t){return e?ts(e,!1,!0).resolveObject(t):t},qe.format=function(e){return lr.isString(e)&&(e=ts(e)),e instanceof Xt?e.format():Xt.prototype.format.call(e)},qe.Url=Xt,Cm=/^([a-z0-9.+-]+:)/i,Rm=/:[0-9]*$/,Om=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,km=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r",`
+`,"	"]),ha=["'"].concat(km),cc=["%","/","?",";","#"].concat(ha),fc=["/","?","#"],hc=/^[+a-z0-9A-Z_-]{0,63}$/,Nm=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Mm={javascript:!0,"javascript:":!0},da={javascript:!0,"javascript:":!0},Zn={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},pa=Sr,Xt.prototype.parse=function(e,t,r){if(!lr.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e.indexOf("?"),o=n!==-1&&n<e.indexOf("#")?"?":"#",i=e.split(o);i[0]=i[0].replace(/\\/g,"/");var s=e=i.join(o);if(s=s.trim(),!r&&e.split("#").length===1){var a=Om.exec(s);if(a)return this.path=s,this.href=s,this.pathname=a[1],a[2]?(this.search=a[2],this.query=t?pa.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var l=Cm.exec(s);if(l){var u=(l=l[0]).toLowerCase();this.protocol=u,s=s.substr(l.length)}if(r||l||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var c=s.substr(0,2)==="//";!c||l&&da[l]||(s=s.substr(2),this.slashes=!0)}if(!da[l]&&(c||l&&!Zn[l])){for(var d,p,m=-1,_=0;_<fc.length;_++)(b=s.indexOf(fc[_]))!==-1&&(m===-1||b<m)&&(m=b);for((p=m===-1?s.lastIndexOf("@"):s.lastIndexOf("@",m))!==-1&&(d=s.slice(0,p),s=s.slice(p+1),this.auth=decodeURIComponent(d)),m=-1,_=0;_<cc.length;_++){var b;(b=s.indexOf(cc[_]))!==-1&&(m===-1||b<m)&&(m=b)}m===-1&&(m=s.length),this.host=s.slice(0,m),s=s.slice(m),this.parseHost(),this.hostname=this.hostname||"";var T=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!T)for(var N=this.hostname.split(/\./),R=(_=0,N.length);_<R;_++){var S=N[_];if(S&&!S.match(hc)){for(var D="",U=0,x=S.length;U<x;U++)S.charCodeAt(U)>127?D+="x":D+=S[U];if(!D.match(hc)){var L=N.slice(0,_),j=N.slice(_+1),Y=S.match(Nm);Y&&(L.push(Y[1]),j.unshift(Y[2])),j.length&&(s="/"+j.join(".")+s),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),T||(this.hostname=Im.toASCII(this.hostname));var se=this.port?":"+this.port:"",re=this.hostname||"";this.host=re+se,this.href+=this.host,T&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),s[0]!=="/"&&(s="/"+s))}if(!Mm[u])for(_=0,R=ha.length;_<R;_++){var P=ha[_];if(s.indexOf(P)!==-1){var B=encodeURIComponent(P);B===P&&(B=escape(P)),s=s.split(P).join(B)}}var oe=s.indexOf("#");oe!==-1&&(this.hash=s.substr(oe),s=s.slice(0,oe));var ne=s.indexOf("?");if(ne!==-1?(this.search=s.substr(ne),this.query=s.substr(ne+1),t&&(this.query=pa.parse(this.query)),s=s.slice(0,ne)):t&&(this.search="",this.query={}),s&&(this.pathname=s),Zn[u]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){se=this.pathname||"";var ue=this.search||"";this.path=se+ue}return this.href=this.format(),this},Xt.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",o=!1,i="";this.host?o=e+this.host:this.hostname&&(o=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&lr.isObject(this.query)&&Object.keys(this.query).length&&(i=pa.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&t.substr(-1)!==":"&&(t+=":"),this.slashes||(!t||Zn[t])&&o!==!1?(o="//"+(o||""),r&&r.charAt(0)!=="/"&&(r="/"+r)):o||(o=""),n&&n.charAt(0)!=="#"&&(n="#"+n),s&&s.charAt(0)!=="?"&&(s="?"+s),t+o+(r=r.replace(/[?#]/g,function(a){return encodeURIComponent(a)}))+(s=s.replace("#","%23"))+n},Xt.prototype.resolve=function(e){return this.resolveObject(ts(e,!1,!0)).format()},Xt.prototype.resolveObject=function(e){if(lr.isString(e)){var t=new Xt;t.parse(e,!1,!0),e=t}for(var r=new Xt,n=Object.keys(this),o=0;o<n.length;o++){var i=n[o];r[i]=this[i]}if(r.hash=e.hash,e.href==="")return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),a=0;a<s.length;a++){var l=s[a];l!=="protocol"&&(r[l]=e[l])}return Zn[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!Zn[e.protocol]){for(var u=Object.keys(e),c=0;c<u.length;c++){var d=u[c];r[d]=e[d]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||da[e.protocol])r.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),p[0]!==""&&p.unshift(""),p.length<2&&p.unshift(""),r.pathname=p.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",_=r.search||"";r.path=m+_}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var b=r.pathname&&r.pathname.charAt(0)==="/",T=e.host||e.pathname&&e.pathname.charAt(0)==="/",N=T||b||r.host&&e.pathname,R=N,S=r.pathname&&r.pathname.split("/")||[],D=(p=e.pathname&&e.pathname.split("/")||[],r.protocol&&!Zn[r.protocol]);if(D&&(r.hostname="",r.port=null,r.host&&(S[0]===""?S[0]=r.host:S.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(p[0]===""?p[0]=e.host:p.unshift(e.host)),e.host=null),N=N&&(p[0]===""||S[0]==="")),T)r.host=e.host||e.host===""?e.host:r.host,r.hostname=e.hostname||e.hostname===""?e.hostname:r.hostname,r.search=e.search,r.query=e.query,S=p;else if(p.length)S||(S=[]),S.pop(),S=S.concat(p),r.search=e.search,r.query=e.query;else if(!lr.isNullOrUndefined(e.search))return D&&(r.hostname=r.host=S.shift(),(Y=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=Y.shift(),r.host=r.hostname=Y.shift())),r.search=e.search,r.query=e.query,lr.isNull(r.pathname)&&lr.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!S.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var U=S.slice(-1)[0],x=(r.host||e.host||S.length>1)&&(U==="."||U==="..")||U==="",L=0,j=S.length;j>=0;j--)(U=S[j])==="."?S.splice(j,1):U===".."?(S.splice(j,1),L++):L&&(S.splice(j,1),L--);if(!N&&!R)for(;L--;L)S.unshift("..");!N||S[0]===""||S[0]&&S[0].charAt(0)==="/"||S.unshift(""),x&&S.join("/").substr(-1)!=="/"&&S.push("");var Y,se=S[0]===""||S[0]&&S[0].charAt(0)==="/";return D&&(r.hostname=r.host=se?"":S.length?S.shift():"",(Y=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=Y.shift(),r.host=r.hostname=Y.shift())),(N=N||r.host&&S.length)&&!se&&S.unshift(""),S.length?r.pathname=S.join("/"):(r.pathname=null,r.path=null),lr.isNull(r.pathname)&&lr.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},Xt.prototype.parseHost=function(){var e=this.host,t=Rm.exec(e);t&&((t=t[0])!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},qe.Url,qe.format,qe.resolve,qe.resolveObject,ja={},Ch=!1,Rh=pk(),Pm=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=_k,qe.fileURLToPath=gk,qe.Url,qe.format,qe.resolve,qe.resolveObject,qe.URL,Mw=92,Pw=47,Lw=97,Bw=122,dl=Pm==="win32",Dw=/\//g,$w=/%/g,Uw=/\\/g,Fw=/\n/g,jw=/\r/g,Ww=/\t/g,Lm=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=Nw,qe.fileURLToPath=kw,Hw=qe.Url,Vw=qe.format,qw=qe.resolve,Kw=qe.resolveObject,Yw=qe.parse,zw=qe.URL,Gw=92,Qw=47,Xw=97,Jw=122,pl=Lm==="win32",Zw=/\//g,ev=/%/g,tv=/\\/g,rv=/\n/g,nv=/\r/g,iv=/\t/g}),Ek=Ae((e,t)=>{_e(),we(),be(),t.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),ep=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.BufferedDuplex=e.writev=void 0;var t=$i(),r=(wt(),ze(bt));function n(i,s){let a=new Array(i.length);for(let l=0;l<i.length;l++)typeof i[l].chunk=="string"?a[l]=r.Buffer.from(i[l].chunk,"utf8"):a[l]=i[l].chunk;this._write(r.Buffer.concat(a),"binary",s)}e.writev=n;var o=class extends t.Duplex{constructor(i,s,a){super({objectMode:!0}),this.proxy=s,this.socket=a,this.writeQueue=[],i.objectMode||(this._writev=n.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",l=>{this.destroyed||this.push(l)})}_read(i){this.proxy.read(i)}_write(i,s,a){this.isSocketOpen?this.writeToProxy(i,s,a):this.writeQueue.push({chunk:i,encoding:s,cb:a})}_final(i){this.writeQueue=[],this.proxy.end(i)}_destroy(i,s){this.writeQueue=[],this.proxy.destroy(),s(i)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(i,s,a){this.proxy.write(i,s)===!1?this.proxy.once("drain",a):a()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:i,encoding:s,cb:a}=this.writeQueue.shift();this.writeToProxy(i,s,a)}}};e.BufferedDuplex=o}),ga=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(N){return N&&N.__esModule?N:{default:N}};Object.defineProperty(e,"__esModule",{value:!0}),e.streamBuilder=e.browserStreamBuilder=void 0;var r=(wt(),ze(bt)),n=t(Ek()),o=t(sn()),i=$i(),s=t(iu()),a=ep(),l=(0,o.default)("mqttjs:ws"),u=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function c(N,R){let S=`${N.protocol}://${N.hostname}:${N.port}${N.path}`;return typeof N.transformWsUrl=="function"&&(S=N.transformWsUrl(S,N,R)),S}function d(N){let R=N;return N.port||(N.protocol==="wss"?R.port=443:R.port=80),N.path||(R.path="/"),N.wsOptions||(R.wsOptions={}),!s.default&&!N.forceNativeWebSocket&&N.protocol==="wss"&&u.forEach(S=>{Object.prototype.hasOwnProperty.call(N,S)&&!Object.prototype.hasOwnProperty.call(N.wsOptions,S)&&(R.wsOptions[S]=N[S])}),R}function p(N){let R=d(N);if(R.hostname||(R.hostname=R.host),!R.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let S=new URL(document.URL);R.hostname=S.hostname,R.port||(R.port=Number(S.port))}return R.objectMode===void 0&&(R.objectMode=!(R.binary===!0||R.binary===void 0)),R}function m(N,R,S){l("createWebSocket"),l(`protocol: ${S.protocolId} ${S.protocolVersion}`);let D=S.protocolId==="MQIsdp"&&S.protocolVersion===3?"mqttv3.1":"mqtt";l(`creating new Websocket for url: ${R} and protocol: ${D}`);let U;return S.createWebsocket?U=S.createWebsocket(R,[D],S):U=new n.default(R,[D],S.wsOptions),U}function _(N,R){let S=R.protocolId==="MQIsdp"&&R.protocolVersion===3?"mqttv3.1":"mqtt",D=c(R,N),U;return R.createWebsocket?U=R.createWebsocket(D,[S],R):U=new WebSocket(D,[S]),U.binaryType="arraybuffer",U}var b=(N,R)=>{l("streamBuilder");let S=d(R);S.hostname=S.hostname||S.host||"localhost";let D=c(S,N),U=m(N,D,S),x=n.default.createWebSocketStream(U,S.wsOptions);return x.url=D,U.on("close",()=>{x.destroy()}),x};e.streamBuilder=b;var T=(N,R)=>{l("browserStreamBuilder");let S,D=p(R).browserBufferSize||1024*512,U=R.browserBufferTimeout||1e3,x=!R.objectMode,L=_(N,R),j=se(R,ne,ue);R.objectMode||(j._writev=a.writev.bind(j)),j.on("close",()=>{L.close()});let Y=typeof L.addEventListener<"u";L.readyState===L.OPEN?(S=j,S.socket=L):(S=new a.BufferedDuplex(R,j,L),Y?L.addEventListener("open",re):L.onopen=re),Y?(L.addEventListener("close",P),L.addEventListener("error",B),L.addEventListener("message",oe)):(L.onclose=P,L.onerror=B,L.onmessage=oe);function se(ae,z,pe){let de=new i.Transform({objectMode:ae.objectMode});return de._write=z,de._flush=pe,de}function re(){l("WebSocket onOpen"),S instanceof a.BufferedDuplex&&S.socketReady()}function P(ae){l("WebSocket onClose",ae),S.end(),S.destroy()}function B(ae){l("WebSocket onError",ae);let z=new Error("WebSocket error");z.event=ae,S.destroy(z)}async function oe(ae){let{data:z}=ae;z instanceof ArrayBuffer?z=r.Buffer.from(z):z instanceof Blob?z=r.Buffer.from(await new Response(z).arrayBuffer()):z=r.Buffer.from(z,"utf8"),j&&!j.destroyed&&j.push(z)}function ne(ae,z,pe){if(L.bufferedAmount>D){setTimeout(ne,U,ae,z,pe);return}x&&typeof ae=="string"&&(ae=r.Buffer.from(ae,"utf8"));try{L.send(ae)}catch(de){return pe(de)}pe()}function ue(ae){L.close(),ae()}return S};e.browserStreamBuilder=T}),tp={};Li(tp,{Server:()=>tt,Socket:()=>tt,Stream:()=>tt,_createServerHandle:()=>tt,_normalizeArgs:()=>tt,_setSimultaneousAccepts:()=>tt,connect:()=>tt,createConnection:()=>tt,createServer:()=>tt,default:()=>ov,isIP:()=>tt,isIPv4:()=>tt,isIPv6:()=>tt});function tt(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var ov,sv=_t(()=>{_e(),we(),be(),ov={_createServerHandle:tt,_normalizeArgs:tt,_setSimultaneousAccepts:tt,connect:tt,createConnection:tt,createServer:tt,isIP:tt,isIPv4:tt,isIPv6:tt,Server:tt,Socket:tt,Stream:tt}}),Bm=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((sv(),ze(tp))),n=t(sn()),o=(0,n.default)("mqttjs:tcp"),i=(s,a)=>{a.port=a.port||1883,a.hostname=a.hostname||a.host||"localhost";let{port:l,path:u}=a,c=a.hostname;return o("port %d and host %s",l,c),r.default.createConnection({port:l,host:c,path:u})};e.default=i}),av={};Li(av,{default:()=>lv});var lv,Sk=_t(()=>{_e(),we(),be(),lv={}}),Dm=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((Sk(),ze(av))),n=t((sv(),ze(tp))),o=t(sn()),i=(0,o.default)("mqttjs:tls"),s=(a,l)=>{l.port=l.port||8883,l.host=l.hostname||l.host||"localhost",n.default.isIP(l.host)===0&&(l.servername=l.host),l.rejectUnauthorized=l.rejectUnauthorized!==!1,delete l.path,i("port %d host %s rejectUnauthorized %b",l.port,l.host,l.rejectUnauthorized);let u=r.default.connect(l);u.on("secureConnect",()=>{l.rejectUnauthorized&&!u.authorized?u.emit("error",new Error("TLS not authorized")):u.removeListener("error",c)});function c(d){l.rejectUnauthorized&&a.emit("error",d),u.end()}return u.on("error",c),u};e.default=s}),$m=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=(wt(),ze(bt)),r=$i(),n=ep(),o,i,s;function a(){let p=new r.Transform;return p._write=(m,_,b)=>{o.send({data:m.buffer,success(){b()},fail(T){b(new Error(T))}})},p._flush=m=>{o.close({success(){m()}})},p}function l(p){p.hostname||(p.hostname="localhost"),p.path||(p.path="/"),p.wsOptions||(p.wsOptions={})}function u(p,m){let _=p.protocol==="wxs"?"wss":"ws",b=`${_}://${p.hostname}${p.path}`;return p.port&&p.port!==80&&p.port!==443&&(b=`${_}://${p.hostname}:${p.port}${p.path}`),typeof p.transformWsUrl=="function"&&(b=p.transformWsUrl(b,p,m)),b}function c(){o.onOpen(()=>{s.socketReady()}),o.onMessage(p=>{let{data:m}=p;m instanceof ArrayBuffer?m=t.Buffer.from(m):m=t.Buffer.from(m,"utf8"),i.push(m)}),o.onClose(()=>{s.emit("close"),s.end(),s.destroy()}),o.onError(p=>{let m=new Error(p.errMsg);s.destroy(m)})}var d=(p,m)=>{if(m.hostname=m.hostname||m.host,!m.hostname)throw new Error("Could not determine host. Specify host manually.");let _=m.protocolId==="MQIsdp"&&m.protocolVersion===3?"mqttv3.1":"mqtt";l(m);let b=u(m,p);o=wx.connectSocket({url:b,protocols:[_]}),i=a(),s=new n.BufferedDuplex(m,i,o),s._destroy=(N,R)=>{o.close({success(){R&&R(N)}})};let T=s.destroy;return s.destroy=(N,R)=>(s.destroy=T,setTimeout(()=>{o.close({fail(){s._destroy(N,R)}})},0),s),c(),s};e.default=d}),Um=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=(wt(),ze(bt)),r=$i(),n=ep(),o,i,s,a=!1;function l(){let m=new r.Transform;return m._write=(_,b,T)=>{o.sendSocketMessage({data:_.buffer,success(){T()},fail(){T(new Error)}})},m._flush=_=>{o.closeSocket({success(){_()}})},m}function u(m){m.hostname||(m.hostname="localhost"),m.path||(m.path="/"),m.wsOptions||(m.wsOptions={})}function c(m,_){let b=m.protocol==="alis"?"wss":"ws",T=`${b}://${m.hostname}${m.path}`;return m.port&&m.port!==80&&m.port!==443&&(T=`${b}://${m.hostname}:${m.port}${m.path}`),typeof m.transformWsUrl=="function"&&(T=m.transformWsUrl(T,m,_)),T}function d(){a||(a=!0,o.onSocketOpen(()=>{s.socketReady()}),o.onSocketMessage(m=>{if(typeof m.data=="string"){let _=t.Buffer.from(m.data,"base64");i.push(_)}else{let _=new FileReader;_.addEventListener("load",()=>{let b=_.result;b instanceof ArrayBuffer?b=t.Buffer.from(b):b=t.Buffer.from(b,"utf8"),i.push(b)}),_.readAsArrayBuffer(m.data)}}),o.onSocketClose(()=>{s.end(),s.destroy()}),o.onSocketError(m=>{s.destroy(m)}))}var p=(m,_)=>{if(_.hostname=_.hostname||_.host,!_.hostname)throw new Error("Could not determine host. Specify host manually.");let b=_.protocolId==="MQIsdp"&&_.protocolVersion===3?"mqttv3.1":"mqtt";u(_);let T=c(_,m);return o=_.my,o.connectSocket({url:T,protocols:b}),i=l(),s=new n.BufferedDuplex(_,i,o),d(),s};e.default=p}),Ak=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(e,"__esModule",{value:!0}),e.connectAsync=void 0;var r=t(sn()),n=t((vk(),ze(Ow))),o=t(vh()),i=t(iu());typeof(He==null?void 0:He.nextTick)!="function"&&(He.nextTick=setImmediate);var s=(0,r.default)("mqttjs"),a=null;function l(d){let p;d.auth&&(p=d.auth.match(/^(.+):(.+)$/),p?(d.username=p[1],d.password=p[2]):d.username=d.auth)}function u(d,p){var m,_,b,T;if(s("connecting to an MQTT broker..."),typeof d=="object"&&!p&&(p=d,d=""),p=p||{},d&&typeof d=="string"){let S=n.default.parse(d,!0),D={};if(S.port!=null&&(D.port=Number(S.port)),D.host=S.hostname,D.query=S.query,D.auth=S.auth,D.protocol=S.protocol,D.path=S.path,D.protocol=(m=D.protocol)===null||m===void 0?void 0:m.replace(/:$/,""),p=Object.assign(Object.assign({},D),p),!p.protocol)throw new Error("Missing protocol")}if(p.unixSocket=p.unixSocket||((_=p.protocol)===null||_===void 0?void 0:_.includes("+unix")),p.unixSocket?p.protocol=p.protocol.replace("+unix",""):!(!((b=p.protocol)===null||b===void 0)&&b.startsWith("ws"))&&!(!((T=p.protocol)===null||T===void 0)&&T.startsWith("wx"))&&delete p.path,l(p),p.query&&typeof p.query.clientId=="string"&&(p.clientId=p.query.clientId),p.cert&&p.key)if(p.protocol){if(["mqtts","wss","wxs","alis"].indexOf(p.protocol)===-1)switch(p.protocol){case"mqtt":p.protocol="mqtts";break;case"ws":p.protocol="wss";break;case"wx":p.protocol="wxs";break;case"ali":p.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${p.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(a||(a={},!i.default&&!p.forceNativeWebSocket?(a.ws=ga().streamBuilder,a.wss=ga().streamBuilder,a.mqtt=Bm().default,a.tcp=Bm().default,a.ssl=Dm().default,a.tls=a.ssl,a.mqtts=Dm().default):(a.ws=ga().browserStreamBuilder,a.wss=ga().browserStreamBuilder,a.wx=$m().default,a.wxs=$m().default,a.ali=Um().default,a.alis=Um().default)),!a[p.protocol]){let S=["mqtts","wss"].indexOf(p.protocol)!==-1;p.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((D,U)=>S&&U%2===0?!1:typeof a[D]=="function")[0]}if(p.clean===!1&&!p.clientId)throw new Error("Missing clientId for unclean clients");p.protocol&&(p.defaultProtocol=p.protocol);function N(S){return p.servers&&((!S._reconnectCount||S._reconnectCount===p.servers.length)&&(S._reconnectCount=0),p.host=p.servers[S._reconnectCount].host,p.port=p.servers[S._reconnectCount].port,p.protocol=p.servers[S._reconnectCount].protocol?p.servers[S._reconnectCount].protocol:p.defaultProtocol,p.hostname=p.host,S._reconnectCount++),s("calling streambuilder for",p.protocol),a[p.protocol](S,p)}let R=new o.default(N,p);return R.on("error",()=>{}),R}function c(d,p,m=!0){return new Promise((_,b)=>{let T=u(d,p),N={connect:S=>{R(),_(T)},end:()=>{R(),_(T)},error:S=>{R(),T.end(),b(S)}};m===!1&&(N.close=()=>{N.error(new Error("Couldn't connect to server"))});function R(){Object.keys(N).forEach(S=>{T.off(S,N[S])})}Object.keys(N).forEach(S=>{T.on(S,N[S])})})}e.connectAsync=c,e.default=u}),Fm=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(m,_,b,T){T===void 0&&(T=b);var N=Object.getOwnPropertyDescriptor(_,b);(!N||("get"in N?!_.__esModule:N.writable||N.configurable))&&(N={enumerable:!0,get:function(){return _[b]}}),Object.defineProperty(m,T,N)}:function(m,_,b,T){T===void 0&&(T=b),m[T]=_[b]}),r=e&&e.__setModuleDefault||(Object.create?function(m,_){Object.defineProperty(m,"default",{enumerable:!0,value:_})}:function(m,_){m.default=_}),n=e&&e.__importStar||function(m){if(m&&m.__esModule)return m;var _={};if(m!=null)for(var b in m)b!=="default"&&Object.prototype.hasOwnProperty.call(m,b)&&t(_,m,b);return r(_,m),_},o=e&&e.__exportStar||function(m,_){for(var b in m)b!=="default"&&!Object.prototype.hasOwnProperty.call(_,b)&&t(_,m,b)},i=e&&e.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=e.KeepaliveManager=e.UniqueMessageIdProvider=e.DefaultMessageIdProvider=e.Store=e.MqttClient=e.connectAsync=e.connect=e.Client=void 0;var s=i(vh());e.MqttClient=s.default;var a=i(aw());e.DefaultMessageIdProvider=a.default;var l=i(ok());e.UniqueMessageIdProvider=l.default;var u=i(lw());e.Store=u.default;var c=n(Ak());e.connect=c.default,Object.defineProperty(e,"connectAsync",{enumerable:!0,get:function(){return c.connectAsync}});var d=i(Aw());e.KeepaliveManager=d.default,e.Client=s.default,o(vh(),e),o(Ho(),e);var p=nu();Object.defineProperty(e,"ReasonCodes",{enumerable:!0,get:function(){return p.ReasonCodes}})}),Tk=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(s,a,l,u){u===void 0&&(u=l);var c=Object.getOwnPropertyDescriptor(a,l);(!c||("get"in c?!a.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return a[l]}}),Object.defineProperty(s,u,c)}:function(s,a,l,u){u===void 0&&(u=l),s[u]=a[l]}),r=e&&e.__setModuleDefault||(Object.create?function(s,a){Object.defineProperty(s,"default",{enumerable:!0,value:a})}:function(s,a){s.default=a}),n=e&&e.__importStar||function(s){if(s&&s.__esModule)return s;var a={};if(s!=null)for(var l in s)l!=="default"&&Object.prototype.hasOwnProperty.call(s,l)&&t(a,s,l);return r(a,s),a},o=e&&e.__exportStar||function(s,a){for(var l in s)l!=="default"&&!Object.prototype.hasOwnProperty.call(a,l)&&t(a,s,l)};Object.defineProperty(e,"__esModule",{value:!0});var i=n(Fm());e.default=i,o(Fm(),e)});const XF=Tk();/*! Bundled license information:
+
+@jspm/core/nodelibs/browser/buffer.js:
+  (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
+*/var rp={exports:{}},uv={exports:{}},dc={exports:{}},Gt={},ou={};ou.byteLength=Ck;ou.toByteArray=Ok;ou.fromByteArray=Mk;var Cr=[],Jt=[],xk=typeof Uint8Array<"u"?Uint8Array:Array,pc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Qi=0,Ik=pc.length;Qi<Ik;++Qi)Cr[Qi]=pc[Qi],Jt[pc.charCodeAt(Qi)]=Qi;Jt[45]=62;Jt[95]=63;function cv(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function Ck(e){var t=cv(e),r=t[0],n=t[1];return(r+n)*3/4-n}function Rk(e,t,r){return(t+r)*3/4-r}function Ok(e){var t,r=cv(e),n=r[0],o=r[1],i=new xk(Rk(e,n,o)),s=0,a=o>0?n-4:n,l;for(l=0;l<a;l+=4)t=Jt[e.charCodeAt(l)]<<18|Jt[e.charCodeAt(l+1)]<<12|Jt[e.charCodeAt(l+2)]<<6|Jt[e.charCodeAt(l+3)],i[s++]=t>>16&255,i[s++]=t>>8&255,i[s++]=t&255;return o===2&&(t=Jt[e.charCodeAt(l)]<<2|Jt[e.charCodeAt(l+1)]>>4,i[s++]=t&255),o===1&&(t=Jt[e.charCodeAt(l)]<<10|Jt[e.charCodeAt(l+1)]<<4|Jt[e.charCodeAt(l+2)]>>2,i[s++]=t>>8&255,i[s++]=t&255),i}function kk(e){return Cr[e>>18&63]+Cr[e>>12&63]+Cr[e>>6&63]+Cr[e&63]}function Nk(e,t,r){for(var n,o=[],i=t;i<r;i+=3)n=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(e[i+2]&255),o.push(kk(n));return o.join("")}function Mk(e){for(var t,r=e.length,n=r%3,o=[],i=16383,s=0,a=r-n;s<a;s+=i)o.push(Nk(e,s,s+i>a?a:s+i));return n===1?(t=e[r-1],o.push(Cr[t>>2]+Cr[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],o.push(Cr[t>>10]+Cr[t>>4&63]+Cr[t<<2&63]+"=")),o.join("")}var np={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */np.read=function(e,t,r,n,o){var i,s,a=o*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,m=e[t+d];for(d+=p,i=m&(1<<-c)-1,m>>=-c,c+=a;c>0;i=i*256+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=s*256+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:(m?-1:1)*(1/0);s=s+Math.pow(2,n),i=i-u}return(m?-1:1)*s*Math.pow(2,i-n)};np.write=function(e,t,r,n,o,i){var s,a,l,u=i*8-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+d>=1?t+=p/l:t+=p*Math.pow(2,1-d),t*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s=s+d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+m]=a&255,m+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+m]=s&255,m+=_,s/=256,u-=8);e[r+m-_]|=b*128};/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <https://feross.org>
+ * @license  MIT
+ */(function(e){const t=ou,r=np,n=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=R,e.INSPECT_MAX_BYTES=50;const o=2147483647;e.kMaxLength=o,a.TYPED_ARRAY_SUPPORT=i(),!a.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function i(){try{const h=new Uint8Array(1),f={foo:function(){return 42}};return Object.setPrototypeOf(f,Uint8Array.prototype),Object.setPrototypeOf(h,f),h.foo()===42}catch{return!1}}Object.defineProperty(a.prototype,"parent",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}});function s(h){if(h>o)throw new RangeError('The value "'+h+'" is invalid for option "size"');const f=new Uint8Array(h);return Object.setPrototypeOf(f,a.prototype),f}function a(h,f,g){if(typeof h=="number"){if(typeof f=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return d(h)}return l(h,f,g)}a.poolSize=8192;function l(h,f,g){if(typeof h=="string")return p(h,f);if(ArrayBuffer.isView(h))return _(h);if(h==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof h);if(I(h,ArrayBuffer)||h&&I(h.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(I(h,SharedArrayBuffer)||h&&I(h.buffer,SharedArrayBuffer)))return b(h,f,g);if(typeof h=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const w=h.valueOf&&h.valueOf();if(w!=null&&w!==h)return a.from(w,f,g);const C=T(h);if(C)return C;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof h[Symbol.toPrimitive]=="function")return a.from(h[Symbol.toPrimitive]("string"),f,g);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof h)}a.from=function(h,f,g){return l(h,f,g)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array);function u(h){if(typeof h!="number")throw new TypeError('"size" argument must be of type number');if(h<0)throw new RangeError('The value "'+h+'" is invalid for option "size"')}function c(h,f,g){return u(h),h<=0?s(h):f!==void 0?typeof g=="string"?s(h).fill(f,g):s(h).fill(f):s(h)}a.alloc=function(h,f,g){return c(h,f,g)};function d(h){return u(h),s(h<0?0:N(h)|0)}a.allocUnsafe=function(h){return d(h)},a.allocUnsafeSlow=function(h){return d(h)};function p(h,f){if((typeof f!="string"||f==="")&&(f="utf8"),!a.isEncoding(f))throw new TypeError("Unknown encoding: "+f);const g=S(h,f)|0;let w=s(g);const C=w.write(h,f);return C!==g&&(w=w.slice(0,C)),w}function m(h){const f=h.length<0?0:N(h.length)|0,g=s(f);for(let w=0;w<f;w+=1)g[w]=h[w]&255;return g}function _(h){if(I(h,Uint8Array)){const f=new Uint8Array(h);return b(f.buffer,f.byteOffset,f.byteLength)}return m(h)}function b(h,f,g){if(f<0||h.byteLength<f)throw new RangeError('"offset" is outside of buffer bounds');if(h.byteLength<f+(g||0))throw new RangeError('"length" is outside of buffer bounds');let w;return f===void 0&&g===void 0?w=new Uint8Array(h):g===void 0?w=new Uint8Array(h,f):w=new Uint8Array(h,f,g),Object.setPrototypeOf(w,a.prototype),w}function T(h){if(a.isBuffer(h)){const f=N(h.length)|0,g=s(f);return g.length===0||h.copy(g,0,0,f),g}if(h.length!==void 0)return typeof h.length!="number"||W(h.length)?s(0):m(h);if(h.type==="Buffer"&&Array.isArray(h.data))return m(h.data)}function N(h){if(h>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return h|0}function R(h){return+h!=h&&(h=0),a.alloc(+h)}a.isBuffer=function(f){return f!=null&&f._isBuffer===!0&&f!==a.prototype},a.compare=function(f,g){if(I(f,Uint8Array)&&(f=a.from(f,f.offset,f.byteLength)),I(g,Uint8Array)&&(g=a.from(g,g.offset,g.byteLength)),!a.isBuffer(f)||!a.isBuffer(g))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(f===g)return 0;let w=f.length,C=g.length;for(let V=0,fe=Math.min(w,C);V<fe;++V)if(f[V]!==g[V]){w=f[V],C=g[V];break}return w<C?-1:C<w?1:0},a.isEncoding=function(f){switch(String(f).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},a.concat=function(f,g){if(!Array.isArray(f))throw new TypeError('"list" argument must be an Array of Buffers');if(f.length===0)return a.alloc(0);let w;if(g===void 0)for(g=0,w=0;w<f.length;++w)g+=f[w].length;const C=a.allocUnsafe(g);let V=0;for(w=0;w<f.length;++w){let fe=f[w];if(I(fe,Uint8Array))V+fe.length>C.length?(a.isBuffer(fe)||(fe=a.from(fe)),fe.copy(C,V)):Uint8Array.prototype.set.call(C,fe,V);else if(a.isBuffer(fe))fe.copy(C,V);else throw new TypeError('"list" argument must be an Array of Buffers');V+=fe.length}return C};function S(h,f){if(a.isBuffer(h))return h.length;if(ArrayBuffer.isView(h)||I(h,ArrayBuffer))return h.byteLength;if(typeof h!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof h);const g=h.length,w=arguments.length>2&&arguments[2]===!0;if(!w&&g===0)return 0;let C=!1;for(;;)switch(f){case"ascii":case"latin1":case"binary":return g;case"utf8":case"utf-8":return M(h).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return g*2;case"hex":return g>>>1;case"base64":return $(h).length;default:if(C)return w?-1:M(h).length;f=(""+f).toLowerCase(),C=!0}}a.byteLength=S;function D(h,f,g){let w=!1;if((f===void 0||f<0)&&(f=0),f>this.length||((g===void 0||g>this.length)&&(g=this.length),g<=0)||(g>>>=0,f>>>=0,g<=f))return"";for(h||(h="utf8");;)switch(h){case"hex":return pe(this,f,g);case"utf8":case"utf-8":return oe(this,f,g);case"ascii":return ae(this,f,g);case"latin1":case"binary":return z(this,f,g);case"base64":return B(this,f,g);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return de(this,f,g);default:if(w)throw new TypeError("Unknown encoding: "+h);h=(h+"").toLowerCase(),w=!0}}a.prototype._isBuffer=!0;function U(h,f,g){const w=h[f];h[f]=h[g],h[g]=w}a.prototype.swap16=function(){const f=this.length;if(f%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let g=0;g<f;g+=2)U(this,g,g+1);return this},a.prototype.swap32=function(){const f=this.length;if(f%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let g=0;g<f;g+=4)U(this,g,g+3),U(this,g+1,g+2);return this},a.prototype.swap64=function(){const f=this.length;if(f%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let g=0;g<f;g+=8)U(this,g,g+7),U(this,g+1,g+6),U(this,g+2,g+5),U(this,g+3,g+4);return this},a.prototype.toString=function(){const f=this.length;return f===0?"":arguments.length===0?oe(this,0,f):D.apply(this,arguments)},a.prototype.toLocaleString=a.prototype.toString,a.prototype.equals=function(f){if(!a.isBuffer(f))throw new TypeError("Argument must be a Buffer");return this===f?!0:a.compare(this,f)===0},a.prototype.inspect=function(){let f="";const g=e.INSPECT_MAX_BYTES;return f=this.toString("hex",0,g).replace(/(.{2})/g,"$1 ").trim(),this.length>g&&(f+=" ... "),"<Buffer "+f+">"},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(f,g,w,C,V){if(I(f,Uint8Array)&&(f=a.from(f,f.offset,f.byteLength)),!a.isBuffer(f))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof f);if(g===void 0&&(g=0),w===void 0&&(w=f?f.length:0),C===void 0&&(C=0),V===void 0&&(V=this.length),g<0||w>f.length||C<0||V>this.length)throw new RangeError("out of range index");if(C>=V&&g>=w)return 0;if(C>=V)return-1;if(g>=w)return 1;if(g>>>=0,w>>>=0,C>>>=0,V>>>=0,this===f)return 0;let fe=V-C,xe=w-g;const ke=Math.min(fe,xe),Te=this.slice(C,V),Oe=f.slice(g,w);for(let Re=0;Re<ke;++Re)if(Te[Re]!==Oe[Re]){fe=Te[Re],xe=Oe[Re];break}return fe<xe?-1:xe<fe?1:0};function x(h,f,g,w,C){if(h.length===0)return-1;if(typeof g=="string"?(w=g,g=0):g>2147483647?g=2147483647:g<-2147483648&&(g=-2147483648),g=+g,W(g)&&(g=C?0:h.length-1),g<0&&(g=h.length+g),g>=h.length){if(C)return-1;g=h.length-1}else if(g<0)if(C)g=0;else return-1;if(typeof f=="string"&&(f=a.from(f,w)),a.isBuffer(f))return f.length===0?-1:L(h,f,g,w,C);if(typeof f=="number")return f=f&255,typeof Uint8Array.prototype.indexOf=="function"?C?Uint8Array.prototype.indexOf.call(h,f,g):Uint8Array.prototype.lastIndexOf.call(h,f,g):L(h,[f],g,w,C);throw new TypeError("val must be string, number or Buffer")}function L(h,f,g,w,C){let V=1,fe=h.length,xe=f.length;if(w!==void 0&&(w=String(w).toLowerCase(),w==="ucs2"||w==="ucs-2"||w==="utf16le"||w==="utf-16le")){if(h.length<2||f.length<2)return-1;V=2,fe/=2,xe/=2,g/=2}function ke(Oe,Re){return V===1?Oe[Re]:Oe.readUInt16BE(Re*V)}let Te;if(C){let Oe=-1;for(Te=g;Te<fe;Te++)if(ke(h,Te)===ke(f,Oe===-1?0:Te-Oe)){if(Oe===-1&&(Oe=Te),Te-Oe+1===xe)return Oe*V}else Oe!==-1&&(Te-=Te-Oe),Oe=-1}else for(g+xe>fe&&(g=fe-xe),Te=g;Te>=0;Te--){let Oe=!0;for(let Re=0;Re<xe;Re++)if(ke(h,Te+Re)!==ke(f,Re)){Oe=!1;break}if(Oe)return Te}return-1}a.prototype.includes=function(f,g,w){return this.indexOf(f,g,w)!==-1},a.prototype.indexOf=function(f,g,w){return x(this,f,g,w,!0)},a.prototype.lastIndexOf=function(f,g,w){return x(this,f,g,w,!1)};function j(h,f,g,w){g=Number(g)||0;const C=h.length-g;w?(w=Number(w),w>C&&(w=C)):w=C;const V=f.length;w>V/2&&(w=V/2);let fe;for(fe=0;fe<w;++fe){const xe=parseInt(f.substr(fe*2,2),16);if(W(xe))return fe;h[g+fe]=xe}return fe}function Y(h,f,g,w){return K(M(f,h.length-g),h,g,w)}function se(h,f,g,w){return K(ee(f),h,g,w)}function re(h,f,g,w){return K($(f),h,g,w)}function P(h,f,g,w){return K(te(f,h.length-g),h,g,w)}a.prototype.write=function(f,g,w,C){if(g===void 0)C="utf8",w=this.length,g=0;else if(w===void 0&&typeof g=="string")C=g,w=this.length,g=0;else if(isFinite(g))g=g>>>0,isFinite(w)?(w=w>>>0,C===void 0&&(C="utf8")):(C=w,w=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const V=this.length-g;if((w===void 0||w>V)&&(w=V),f.length>0&&(w<0||g<0)||g>this.length)throw new RangeError("Attempt to write outside buffer bounds");C||(C="utf8");let fe=!1;for(;;)switch(C){case"hex":return j(this,f,g,w);case"utf8":case"utf-8":return Y(this,f,g,w);case"ascii":case"latin1":case"binary":return se(this,f,g,w);case"base64":return re(this,f,g,w);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,f,g,w);default:if(fe)throw new TypeError("Unknown encoding: "+C);C=(""+C).toLowerCase(),fe=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function B(h,f,g){return f===0&&g===h.length?t.fromByteArray(h):t.fromByteArray(h.slice(f,g))}function oe(h,f,g){g=Math.min(h.length,g);const w=[];let C=f;for(;C<g;){const V=h[C];let fe=null,xe=V>239?4:V>223?3:V>191?2:1;if(C+xe<=g){let ke,Te,Oe,Re;switch(xe){case 1:V<128&&(fe=V);break;case 2:ke=h[C+1],(ke&192)===128&&(Re=(V&31)<<6|ke&63,Re>127&&(fe=Re));break;case 3:ke=h[C+1],Te=h[C+2],(ke&192)===128&&(Te&192)===128&&(Re=(V&15)<<12|(ke&63)<<6|Te&63,Re>2047&&(Re<55296||Re>57343)&&(fe=Re));break;case 4:ke=h[C+1],Te=h[C+2],Oe=h[C+3],(ke&192)===128&&(Te&192)===128&&(Oe&192)===128&&(Re=(V&15)<<18|(ke&63)<<12|(Te&63)<<6|Oe&63,Re>65535&&Re<1114112&&(fe=Re))}}fe===null?(fe=65533,xe=1):fe>65535&&(fe-=65536,w.push(fe>>>10&1023|55296),fe=56320|fe&1023),w.push(fe),C+=xe}return ue(w)}const ne=4096;function ue(h){const f=h.length;if(f<=ne)return String.fromCharCode.apply(String,h);let g="",w=0;for(;w<f;)g+=String.fromCharCode.apply(String,h.slice(w,w+=ne));return g}function ae(h,f,g){let w="";g=Math.min(h.length,g);for(let C=f;C<g;++C)w+=String.fromCharCode(h[C]&127);return w}function z(h,f,g){let w="";g=Math.min(h.length,g);for(let C=f;C<g;++C)w+=String.fromCharCode(h[C]);return w}function pe(h,f,g){const w=h.length;(!f||f<0)&&(f=0),(!g||g<0||g>w)&&(g=w);let C="";for(let V=f;V<g;++V)C+=J[h[V]];return C}function de(h,f,g){const w=h.slice(f,g);let C="";for(let V=0;V<w.length-1;V+=2)C+=String.fromCharCode(w[V]+w[V+1]*256);return C}a.prototype.slice=function(f,g){const w=this.length;f=~~f,g=g===void 0?w:~~g,f<0?(f+=w,f<0&&(f=0)):f>w&&(f=w),g<0?(g+=w,g<0&&(g=0)):g>w&&(g=w),g<f&&(g=f);const C=this.subarray(f,g);return Object.setPrototypeOf(C,a.prototype),C};function ge(h,f,g){if(h%1!==0||h<0)throw new RangeError("offset is not uint");if(h+f>g)throw new RangeError("Trying to access beyond buffer length")}a.prototype.readUintLE=a.prototype.readUIntLE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let C=this[f],V=1,fe=0;for(;++fe<g&&(V*=256);)C+=this[f+fe]*V;return C},a.prototype.readUintBE=a.prototype.readUIntBE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let C=this[f+--g],V=1;for(;g>0&&(V*=256);)C+=this[f+--g]*V;return C},a.prototype.readUint8=a.prototype.readUInt8=function(f,g){return f=f>>>0,g||ge(f,1,this.length),this[f]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(f,g){return f=f>>>0,g||ge(f,2,this.length),this[f]|this[f+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(f,g){return f=f>>>0,g||ge(f,2,this.length),this[f]<<8|this[f+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),(this[f]|this[f+1]<<8|this[f+2]<<16)+this[f+3]*16777216},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),this[f]*16777216+(this[f+1]<<16|this[f+2]<<8|this[f+3])},a.prototype.readBigUInt64LE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&A(f,this.length-8);const C=g+this[++f]*2**8+this[++f]*2**16+this[++f]*2**24,V=this[++f]+this[++f]*2**8+this[++f]*2**16+w*2**24;return BigInt(C)+(BigInt(V)<<BigInt(32))}),a.prototype.readBigUInt64BE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&A(f,this.length-8);const C=g*2**24+this[++f]*2**16+this[++f]*2**8+this[++f],V=this[++f]*2**24+this[++f]*2**16+this[++f]*2**8+w;return(BigInt(C)<<BigInt(32))+BigInt(V)}),a.prototype.readIntLE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let C=this[f],V=1,fe=0;for(;++fe<g&&(V*=256);)C+=this[f+fe]*V;return V*=128,C>=V&&(C-=Math.pow(2,8*g)),C},a.prototype.readIntBE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let C=g,V=1,fe=this[f+--C];for(;C>0&&(V*=256);)fe+=this[f+--C]*V;return V*=128,fe>=V&&(fe-=Math.pow(2,8*g)),fe},a.prototype.readInt8=function(f,g){return f=f>>>0,g||ge(f,1,this.length),this[f]&128?(255-this[f]+1)*-1:this[f]},a.prototype.readInt16LE=function(f,g){f=f>>>0,g||ge(f,2,this.length);const w=this[f]|this[f+1]<<8;return w&32768?w|4294901760:w},a.prototype.readInt16BE=function(f,g){f=f>>>0,g||ge(f,2,this.length);const w=this[f+1]|this[f]<<8;return w&32768?w|4294901760:w},a.prototype.readInt32LE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),this[f]|this[f+1]<<8|this[f+2]<<16|this[f+3]<<24},a.prototype.readInt32BE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),this[f]<<24|this[f+1]<<16|this[f+2]<<8|this[f+3]},a.prototype.readBigInt64LE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&A(f,this.length-8);const C=this[f+4]+this[f+5]*2**8+this[f+6]*2**16+(w<<24);return(BigInt(C)<<BigInt(32))+BigInt(g+this[++f]*2**8+this[++f]*2**16+this[++f]*2**24)}),a.prototype.readBigInt64BE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&A(f,this.length-8);const C=(g<<24)+this[++f]*2**16+this[++f]*2**8+this[++f];return(BigInt(C)<<BigInt(32))+BigInt(this[++f]*2**24+this[++f]*2**16+this[++f]*2**8+w)}),a.prototype.readFloatLE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),r.read(this,f,!0,23,4)},a.prototype.readFloatBE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),r.read(this,f,!1,23,4)},a.prototype.readDoubleLE=function(f,g){return f=f>>>0,g||ge(f,8,this.length),r.read(this,f,!0,52,8)},a.prototype.readDoubleBE=function(f,g){return f=f>>>0,g||ge(f,8,this.length),r.read(this,f,!1,52,8)};function O(h,f,g,w,C,V){if(!a.isBuffer(h))throw new TypeError('"buffer" argument must be a Buffer instance');if(f>C||f<V)throw new RangeError('"value" argument is out of bounds');if(g+w>h.length)throw new RangeError("Index out of range")}a.prototype.writeUintLE=a.prototype.writeUIntLE=function(f,g,w,C){if(f=+f,g=g>>>0,w=w>>>0,!C){const xe=Math.pow(2,8*w)-1;O(this,f,g,w,xe,0)}let V=1,fe=0;for(this[g]=f&255;++fe<w&&(V*=256);)this[g+fe]=f/V&255;return g+w},a.prototype.writeUintBE=a.prototype.writeUIntBE=function(f,g,w,C){if(f=+f,g=g>>>0,w=w>>>0,!C){const xe=Math.pow(2,8*w)-1;O(this,f,g,w,xe,0)}let V=w-1,fe=1;for(this[g+V]=f&255;--V>=0&&(fe*=256);)this[g+V]=f/fe&255;return g+w},a.prototype.writeUint8=a.prototype.writeUInt8=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,1,255,0),this[g]=f&255,g+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,65535,0),this[g]=f&255,this[g+1]=f>>>8,g+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,65535,0),this[g]=f>>>8,this[g+1]=f&255,g+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,4294967295,0),this[g+3]=f>>>24,this[g+2]=f>>>16,this[g+1]=f>>>8,this[g]=f&255,g+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,4294967295,0),this[g]=f>>>24,this[g+1]=f>>>16,this[g+2]=f>>>8,this[g+3]=f&255,g+4};function ie(h,f,g,w,C){Z(f,w,C,h,g,7);let V=Number(f&BigInt(4294967295));h[g++]=V,V=V>>8,h[g++]=V,V=V>>8,h[g++]=V,V=V>>8,h[g++]=V;let fe=Number(f>>BigInt(32)&BigInt(4294967295));return h[g++]=fe,fe=fe>>8,h[g++]=fe,fe=fe>>8,h[g++]=fe,fe=fe>>8,h[g++]=fe,g}function me(h,f,g,w,C){Z(f,w,C,h,g,7);let V=Number(f&BigInt(4294967295));h[g+7]=V,V=V>>8,h[g+6]=V,V=V>>8,h[g+5]=V,V=V>>8,h[g+4]=V;let fe=Number(f>>BigInt(32)&BigInt(4294967295));return h[g+3]=fe,fe=fe>>8,h[g+2]=fe,fe=fe>>8,h[g+1]=fe,fe=fe>>8,h[g]=fe,g+8}a.prototype.writeBigUInt64LE=le(function(f,g=0){return ie(this,f,g,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeBigUInt64BE=le(function(f,g=0){return me(this,f,g,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeIntLE=function(f,g,w,C){if(f=+f,g=g>>>0,!C){const ke=Math.pow(2,8*w-1);O(this,f,g,w,ke-1,-ke)}let V=0,fe=1,xe=0;for(this[g]=f&255;++V<w&&(fe*=256);)f<0&&xe===0&&this[g+V-1]!==0&&(xe=1),this[g+V]=(f/fe>>0)-xe&255;return g+w},a.prototype.writeIntBE=function(f,g,w,C){if(f=+f,g=g>>>0,!C){const ke=Math.pow(2,8*w-1);O(this,f,g,w,ke-1,-ke)}let V=w-1,fe=1,xe=0;for(this[g+V]=f&255;--V>=0&&(fe*=256);)f<0&&xe===0&&this[g+V+1]!==0&&(xe=1),this[g+V]=(f/fe>>0)-xe&255;return g+w},a.prototype.writeInt8=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,1,127,-128),f<0&&(f=255+f+1),this[g]=f&255,g+1},a.prototype.writeInt16LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,32767,-32768),this[g]=f&255,this[g+1]=f>>>8,g+2},a.prototype.writeInt16BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,32767,-32768),this[g]=f>>>8,this[g+1]=f&255,g+2},a.prototype.writeInt32LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,2147483647,-2147483648),this[g]=f&255,this[g+1]=f>>>8,this[g+2]=f>>>16,this[g+3]=f>>>24,g+4},a.prototype.writeInt32BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,2147483647,-2147483648),f<0&&(f=4294967295+f+1),this[g]=f>>>24,this[g+1]=f>>>16,this[g+2]=f>>>8,this[g+3]=f&255,g+4},a.prototype.writeBigInt64LE=le(function(f,g=0){return ie(this,f,g,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),a.prototype.writeBigInt64BE=le(function(f,g=0){return me(this,f,g,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ve(h,f,g,w,C,V){if(g+w>h.length)throw new RangeError("Index out of range");if(g<0)throw new RangeError("Index out of range")}function ye(h,f,g,w,C){return f=+f,g=g>>>0,C||ve(h,f,g,4),r.write(h,f,g,w,23,4),g+4}a.prototype.writeFloatLE=function(f,g,w){return ye(this,f,g,!0,w)},a.prototype.writeFloatBE=function(f,g,w){return ye(this,f,g,!1,w)};function q(h,f,g,w,C){return f=+f,g=g>>>0,C||ve(h,f,g,8),r.write(h,f,g,w,52,8),g+8}a.prototype.writeDoubleLE=function(f,g,w){return q(this,f,g,!0,w)},a.prototype.writeDoubleBE=function(f,g,w){return q(this,f,g,!1,w)},a.prototype.copy=function(f,g,w,C){if(!a.isBuffer(f))throw new TypeError("argument should be a Buffer");if(w||(w=0),!C&&C!==0&&(C=this.length),g>=f.length&&(g=f.length),g||(g=0),C>0&&C<w&&(C=w),C===w||f.length===0||this.length===0)return 0;if(g<0)throw new RangeError("targetStart out of bounds");if(w<0||w>=this.length)throw new RangeError("Index out of range");if(C<0)throw new RangeError("sourceEnd out of bounds");C>this.length&&(C=this.length),f.length-g<C-w&&(C=f.length-g+w);const V=C-w;return this===f&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(g,w,C):Uint8Array.prototype.set.call(f,this.subarray(w,C),g),V},a.prototype.fill=function(f,g,w,C){if(typeof f=="string"){if(typeof g=="string"?(C=g,g=0,w=this.length):typeof w=="string"&&(C=w,w=this.length),C!==void 0&&typeof C!="string")throw new TypeError("encoding must be a string");if(typeof C=="string"&&!a.isEncoding(C))throw new TypeError("Unknown encoding: "+C);if(f.length===1){const fe=f.charCodeAt(0);(C==="utf8"&&fe<128||C==="latin1")&&(f=fe)}}else typeof f=="number"?f=f&255:typeof f=="boolean"&&(f=Number(f));if(g<0||this.length<g||this.length<w)throw new RangeError("Out of range index");if(w<=g)return this;g=g>>>0,w=w===void 0?this.length:w>>>0,f||(f=0);let V;if(typeof f=="number")for(V=g;V<w;++V)this[V]=f;else{const fe=a.isBuffer(f)?f:a.from(f,C),xe=fe.length;if(xe===0)throw new TypeError('The value "'+f+'" is invalid for argument "value"');for(V=0;V<w-g;++V)this[V+g]=fe[V%xe]}return this};const F={};function X(h,f,g){F[h]=class extends g{constructor(){super(),Object.defineProperty(this,"message",{value:f.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${h}]`,this.stack,delete this.name}get code(){return h}set code(C){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:C,writable:!0})}toString(){return`${this.name} [${h}]: ${this.message}`}}}X("ERR_BUFFER_OUT_OF_BOUNDS",function(h){return h?`${h} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),X("ERR_INVALID_ARG_TYPE",function(h,f){return`The "${h}" argument must be of type number. Received type ${typeof f}`},TypeError),X("ERR_OUT_OF_RANGE",function(h,f,g){let w=`The value of "${h}" is out of range.`,C=g;return Number.isInteger(g)&&Math.abs(g)>2**32?C=he(String(g)):typeof g=="bigint"&&(C=String(g),(g>BigInt(2)**BigInt(32)||g<-(BigInt(2)**BigInt(32)))&&(C=he(C)),C+="n"),w+=` It must be ${f}. Received ${C}`,w},RangeError);function he(h){let f="",g=h.length;const w=h[0]==="-"?1:0;for(;g>=w+4;g-=3)f=`_${h.slice(g-3,g)}${f}`;return`${h.slice(0,g)}${f}`}function ce(h,f,g){v(f,"offset"),(h[f]===void 0||h[f+g]===void 0)&&A(f,h.length-(g+1))}function Z(h,f,g,w,C,V){if(h>g||h<f){const fe=typeof f=="bigint"?"n":"";let xe;throw f===0||f===BigInt(0)?xe=`>= 0${fe} and < 2${fe} ** ${(V+1)*8}${fe}`:xe=`>= -(2${fe} ** ${(V+1)*8-1}${fe}) and < 2 ** ${(V+1)*8-1}${fe}`,new F.ERR_OUT_OF_RANGE("value",xe,h)}ce(w,C,V)}function v(h,f){if(typeof h!="number")throw new F.ERR_INVALID_ARG_TYPE(f,"number",h)}function A(h,f,g){throw Math.floor(h)!==h?(v(h,g),new F.ERR_OUT_OF_RANGE("offset","an integer",h)):f<0?new F.ERR_BUFFER_OUT_OF_BOUNDS:new F.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${f}`,h)}const E=/[^+/0-9A-Za-z-_]/g;function k(h){if(h=h.split("=")[0],h=h.trim().replace(E,""),h.length<2)return"";for(;h.length%4!==0;)h=h+"=";return h}function M(h,f){f=f||1/0;let g;const w=h.length;let C=null;const V=[];for(let fe=0;fe<w;++fe){if(g=h.charCodeAt(fe),g>55295&&g<57344){if(!C){if(g>56319){(f-=3)>-1&&V.push(239,191,189);continue}else if(fe+1===w){(f-=3)>-1&&V.push(239,191,189);continue}C=g;continue}if(g<56320){(f-=3)>-1&&V.push(239,191,189),C=g;continue}g=(C-55296<<10|g-56320)+65536}else C&&(f-=3)>-1&&V.push(239,191,189);if(C=null,g<128){if((f-=1)<0)break;V.push(g)}else if(g<2048){if((f-=2)<0)break;V.push(g>>6|192,g&63|128)}else if(g<65536){if((f-=3)<0)break;V.push(g>>12|224,g>>6&63|128,g&63|128)}else if(g<1114112){if((f-=4)<0)break;V.push(g>>18|240,g>>12&63|128,g>>6&63|128,g&63|128)}else throw new Error("Invalid code point")}return V}function ee(h){const f=[];for(let g=0;g<h.length;++g)f.push(h.charCodeAt(g)&255);return f}function te(h,f){let g,w,C;const V=[];for(let fe=0;fe<h.length&&!((f-=2)<0);++fe)g=h.charCodeAt(fe),w=g>>8,C=g%256,V.push(C),V.push(w);return V}function $(h){return t.toByteArray(k(h))}function K(h,f,g,w){let C;for(C=0;C<w&&!(C+g>=f.length||C>=h.length);++C)f[C+g]=h[C];return C}function I(h,f){return h instanceof f||h!=null&&h.constructor!=null&&h.constructor.name!=null&&h.constructor.name===f.name}function W(h){return h!==h}const J=function(){const h="0123456789abcdef",f=new Array(256);for(let g=0;g<16;++g){const w=g*16;for(let C=0;C<16;++C)f[w+C]=h[g]+h[C]}return f}();function le(h){return typeof BigInt>"u"?y:h}function y(){throw new Error("BigInt not supported")}})(Gt);var ot={ArrayIsArray(e){return Array.isArray(e)},ArrayPrototypeIncludes(e,t){return e.includes(t)},ArrayPrototypeIndexOf(e,t){return e.indexOf(t)},ArrayPrototypeJoin(e,t){return e.join(t)},ArrayPrototypeMap(e,t){return e.map(t)},ArrayPrototypePop(e,t){return e.pop(t)},ArrayPrototypePush(e,t){return e.push(t)},ArrayPrototypeSlice(e,t,r){return e.slice(t,r)},Error,FunctionPrototypeCall(e,t,...r){return e.call(t,...r)},FunctionPrototypeSymbolHasInstance(e,t){return Function.prototype[Symbol.hasInstance].call(e,t)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(e,t){return Object.defineProperties(e,t)},ObjectDefineProperty(e,t,r){return Object.defineProperty(e,t,r)},ObjectGetOwnPropertyDescriptor(e,t){return Object.getOwnPropertyDescriptor(e,t)},ObjectKeys(e){return Object.keys(e)},ObjectSetPrototypeOf(e,t){return Object.setPrototypeOf(e,t)},Promise,PromisePrototypeCatch(e,t){return e.catch(t)},PromisePrototypeThen(e,t,r){return e.then(t,r)},PromiseReject(e){return Promise.reject(e)},PromiseResolve(e){return Promise.resolve(e)},ReflectApply:Reflect.apply,RegExpPrototypeTest(e,t){return e.test(t)},SafeSet:Set,String,StringPrototypeSlice(e,t,r){return e.slice(t,r)},StringPrototypeToLowerCase(e){return e.toLowerCase()},StringPrototypeToUpperCase(e){return e.toUpperCase()},StringPrototypeTrim(e){return e.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol("Symbol.dispose"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol("Symbol.asyncDispose"),TypedArrayPrototypeSet(e,t,r){return e.set(t,r)},Boolean,Uint8Array},fv={exports:{}},rs={exports:{}},jm;function ks(){if(jm)return rs.exports;jm=1;const{AbortController:e,AbortSignal:t}=typeof self<"u"?self:typeof window<"u"?window:void 0;return rs.exports=e,rs.exports.AbortSignal=t,rs.exports.default=e,rs.exports}var ip={exports:{}},go=typeof Reflect=="object"?Reflect:null,Wm=go&&typeof go.apply=="function"?go.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},Wa;go&&typeof go.ownKeys=="function"?Wa=go.ownKeys:Object.getOwnPropertySymbols?Wa=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Wa=function(t){return Object.getOwnPropertyNames(t)};function Pk(e){console&&console.warn&&console.warn(e)}var hv=Number.isNaN||function(t){return t!==t};function Ye(){Ye.init.call(this)}ip.exports=Ye;ip.exports.once=$k;Ye.EventEmitter=Ye;Ye.prototype._events=void 0;Ye.prototype._eventsCount=0;Ye.prototype._maxListeners=void 0;var Hm=10;function su(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Ye,"defaultMaxListeners",{enumerable:!0,get:function(){return Hm},set:function(e){if(typeof e!="number"||e<0||hv(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Hm=e}});Ye.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ye.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||hv(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function dv(e){return e._maxListeners===void 0?Ye.defaultMaxListeners:e._maxListeners}Ye.prototype.getMaxListeners=function(){return dv(this)};Ye.prototype.emit=function(t){for(var r=[],n=1;n<arguments.length;n++)r.push(arguments[n]);var o=t==="error",i=this._events;if(i!==void 0)o=o&&i.error===void 0;else if(!o)return!1;if(o){var s;if(r.length>0&&(s=r[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var l=i[t];if(l===void 0)return!1;if(typeof l=="function")Wm(l,this,r);else for(var u=l.length,c=_v(l,u),n=0;n<u;++n)Wm(c[n],this,r);return!0};function pv(e,t,r,n){var o,i,s;if(su(r),i=e._events,i===void 0?(i=e._events=Object.create(null),e._eventsCount=0):(i.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),s=i[t]),s===void 0)s=i[t]=r,++e._eventsCount;else if(typeof s=="function"?s=i[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),o=dv(e),o>0&&s.length>o&&!s.warned){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=e,a.type=t,a.count=s.length,Pk(a)}return e}Ye.prototype.addListener=function(t,r){return pv(this,t,r,!1)};Ye.prototype.on=Ye.prototype.addListener;Ye.prototype.prependListener=function(t,r){return pv(this,t,r,!0)};function Lk(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function gv(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=Lk.bind(n);return o.listener=r,n.wrapFn=o,o}Ye.prototype.once=function(t,r){return su(r),this.on(t,gv(this,t,r)),this};Ye.prototype.prependOnceListener=function(t,r){return su(r),this.prependListener(t,gv(this,t,r)),this};Ye.prototype.removeListener=function(t,r){var n,o,i,s,a;if(su(r),o=this._events,o===void 0)return this;if(n=o[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete o[t],o.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===r||n[s].listener===r){a=n[s].listener,i=s;break}if(i<0)return this;i===0?n.shift():Bk(n,i),n.length===1&&(o[t]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",t,a||r)}return this};Ye.prototype.off=Ye.prototype.removeListener;Ye.prototype.removeAllListeners=function(t){var r,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var i=Object.keys(n),s;for(o=0;o<i.length;++o)s=i[o],s!=="removeListener"&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=n[t],typeof r=="function")this.removeListener(t,r);else if(r!==void 0)for(o=r.length-1;o>=0;o--)this.removeListener(t,r[o]);return this};function mv(e,t,r){var n=e._events;if(n===void 0)return[];var o=n[t];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?Dk(o):_v(o,o.length)}Ye.prototype.listeners=function(t){return mv(this,t,!0)};Ye.prototype.rawListeners=function(t){return mv(this,t,!1)};Ye.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):yv.call(e,t)};Ye.prototype.listenerCount=yv;function yv(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Ye.prototype.eventNames=function(){return this._eventsCount>0?Wa(this._events):[]};function _v(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function Bk(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}function Dk(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}function $k(e,t){return new Promise(function(r,n){function o(s){e.removeListener(t,i),n(s)}function i(){typeof e.removeListener=="function"&&e.removeListener("error",o),r([].slice.call(arguments))}bv(e,t,i,{once:!0}),t!=="error"&&Uk(e,o,{once:!0})})}function Uk(e,t,r){typeof e.on=="function"&&bv(e,"error",t,r)}function bv(e,t,r,n){if(typeof e.on=="function")n.once?e.once(t,r):e.on(t,r);else if(typeof e.addEventListener=="function")e.addEventListener(t,function o(i){n.once&&e.removeEventListener(t,o),r(i)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e)}var au=ip.exports;(function(e){const t=Gt,{kResistStopPropagation:r,SymbolDispose:n}=ot,o=globalThis.AbortSignal||ks().AbortSignal,i=globalThis.AbortController||ks().AbortController,s=Object.getPrototypeOf(async function(){}).constructor,a=globalThis.Blob||t.Blob,l=typeof a<"u"?function(m){return m instanceof a}:function(m){return!1},u=(p,m)=>{if(p!==void 0&&(p===null||typeof p!="object"||!("aborted"in p)))throw new ERR_INVALID_ARG_TYPE(m,"AbortSignal",p)},c=(p,m)=>{if(typeof p!="function")throw new ERR_INVALID_ARG_TYPE(m,"Function",p)};class d extends Error{constructor(m){if(!Array.isArray(m))throw new TypeError(`Expected input to be an Array, got ${typeof m}`);let _="";for(let b=0;b<m.length;b++)_+=`    ${m[b].stack}
+`;super(_),this.name="AggregateError",this.errors=m}}e.exports={AggregateError:d,kEmptyObject:Object.freeze({}),once(p){let m=!1;return function(..._){m||(m=!0,p.apply(this,_))}},createDeferredPromise:function(){let p,m;return{promise:new Promise((b,T)=>{p=b,m=T}),resolve:p,reject:m}},promisify(p){return new Promise((m,_)=>{p((b,...T)=>b?_(b):m(...T))})},debuglog(){return function(){}},format(p,...m){return p.replace(/%([sdifj])/g,function(...[_,b]){const T=m.shift();return b==="f"?T.toFixed(6):b==="j"?JSON.stringify(T):b==="s"&&typeof T=="object"?`${T.constructor!==Object?T.constructor.name:""} {}`.trim():T.toString()})},inspect(p){switch(typeof p){case"string":if(p.includes("'"))if(p.includes('"')){if(!p.includes("`")&&!p.includes("${"))return`\`${p}\``}else return`"${p}"`;return`'${p}'`;case"number":return isNaN(p)?"NaN":Object.is(p,-0)?String(p):p;case"bigint":return`${String(p)}n`;case"boolean":case"undefined":return String(p);case"object":return"{}"}},types:{isAsyncFunction(p){return p instanceof s},isArrayBufferView(p){return ArrayBuffer.isView(p)}},isBlob:l,deprecate(p,m){return p},addAbortListener:au.addAbortListener||function(m,_){if(m===void 0)throw new ERR_INVALID_ARG_TYPE("signal","AbortSignal",m);u(m,"signal"),c(_,"listener");let b;return m.aborted?queueMicrotask(()=>_()):(m.addEventListener("abort",_,{__proto__:null,once:!0,[r]:!0}),b=()=>{m.removeEventListener("abort",_)}),{__proto__:null,[n](){var T;(T=b)===null||T===void 0||T()}}},AbortSignalAny:o.any||function(m){if(m.length===1)return m[0];const _=new i,b=()=>_.abort();return m.forEach(T=>{u(T,"signals"),T.addEventListener("abort",b,{once:!0})}),_.signal.addEventListener("abort",()=>{m.forEach(T=>T.removeEventListener("abort",b))},{once:!0}),_.signal}},e.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")})(fv);var Nt=fv.exports,op={};const{format:Fk,inspect:gl,AggregateError:jk}=Nt,Wk=globalThis.AggregateError||jk,Hk=Symbol("kIsNodeError"),Vk=["string","function","number","object","Function","Object","boolean","bigint","symbol"],qk=/^([A-Z][a-z0-9]*)+$/,Kk="__node_internal_",lu={};function Ei(e,t){if(!e)throw new lu.ERR_INTERNAL_ASSERTION(t)}function Vm(e){let t="",r=e.length;const n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function Yk(e,t,r){if(typeof t=="function")return Ei(t.length<=r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${t.length}).`),t(...r);const n=(t.match(/%[dfijoOs]/g)||[]).length;return Ei(n===r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${n}).`),r.length===0?t:Fk(t,...r)}function vt(e,t,r){r||(r=Error);class n extends r{constructor(...i){super(Yk(e,t,i))}toString(){return`${this.name} [${e}]: ${this.message}`}}Object.defineProperties(n.prototype,{name:{value:r.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${e}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),n.prototype.code=e,n.prototype[Hk]=!0,lu[e]=n}function qm(e){const t=Kk+e.name;return Object.defineProperty(e,"name",{value:t}),e}function zk(e,t){if(e&&t&&e!==t){if(Array.isArray(t.errors))return t.errors.push(e),t;const r=new Wk([t,e],t.message);return r.code=t.code,r}return e||t}let Gk=class extends Error{constructor(t="The operation was aborted",r=void 0){if(r!==void 0&&typeof r!="object")throw new lu.ERR_INVALID_ARG_TYPE("options","Object",r);super(t,r),this.code="ABORT_ERR",this.name="AbortError"}};vt("ERR_ASSERTION","%s",Error);vt("ERR_INVALID_ARG_TYPE",(e,t,r)=>{Ei(typeof e=="string","'name' must be a string"),Array.isArray(t)||(t=[t]);let n="The ";e.endsWith(" argument")?n+=`${e} `:n+=`"${e}" ${e.includes(".")?"property":"argument"} `,n+="must be ";const o=[],i=[],s=[];for(const l of t)Ei(typeof l=="string","All expected entries have to be of type string"),Vk.includes(l)?o.push(l.toLowerCase()):qk.test(l)?i.push(l):(Ei(l!=="object",'The value "object" should be written as "Object"'),s.push(l));if(i.length>0){const l=o.indexOf("object");l!==-1&&(o.splice(o,l,1),i.push("Object"))}if(o.length>0){switch(o.length){case 1:n+=`of type ${o[0]}`;break;case 2:n+=`one of type ${o[0]} or ${o[1]}`;break;default:{const l=o.pop();n+=`one of type ${o.join(", ")}, or ${l}`}}(i.length>0||s.length>0)&&(n+=" or ")}if(i.length>0){switch(i.length){case 1:n+=`an instance of ${i[0]}`;break;case 2:n+=`an instance of ${i[0]} or ${i[1]}`;break;default:{const l=i.pop();n+=`an instance of ${i.join(", ")}, or ${l}`}}s.length>0&&(n+=" or ")}switch(s.length){case 0:break;case 1:s[0].toLowerCase()!==s[0]&&(n+="an "),n+=`${s[0]}`;break;case 2:n+=`one of ${s[0]} or ${s[1]}`;break;default:{const l=s.pop();n+=`one of ${s.join(", ")}, or ${l}`}}if(r==null)n+=`. Received ${r}`;else if(typeof r=="function"&&r.name)n+=`. Received function ${r.name}`;else if(typeof r=="object"){var a;if((a=r.constructor)!==null&&a!==void 0&&a.name)n+=`. Received an instance of ${r.constructor.name}`;else{const l=gl(r,{depth:-1});n+=`. Received ${l}`}}else{let l=gl(r,{colors:!1});l.length>25&&(l=`${l.slice(0,25)}...`),n+=`. Received type ${typeof r} (${l})`}return n},TypeError);vt("ERR_INVALID_ARG_VALUE",(e,t,r="is invalid")=>{let n=gl(t);return n.length>128&&(n=n.slice(0,128)+"..."),`The ${e.includes(".")?"property":"argument"} '${e}' ${r}. Received ${n}`},TypeError);vt("ERR_INVALID_RETURN_VALUE",(e,t,r)=>{var n;const o=r!=null&&(n=r.constructor)!==null&&n!==void 0&&n.name?`instance of ${r.constructor.name}`:`type ${typeof r}`;return`Expected ${e} to be returned from the "${t}" function but got ${o}.`},TypeError);vt("ERR_MISSING_ARGS",(...e)=>{Ei(e.length>0,"At least one arg needs to be specified");let t;const r=e.length;switch(e=(Array.isArray(e)?e:[e]).map(n=>`"${n}"`).join(" or "),r){case 1:t+=`The ${e[0]} argument`;break;case 2:t+=`The ${e[0]} and ${e[1]} arguments`;break;default:{const n=e.pop();t+=`The ${e.join(", ")}, and ${n} arguments`}break}return`${t} must be specified`},TypeError);vt("ERR_OUT_OF_RANGE",(e,t,r)=>{Ei(t,'Missing "range" argument');let n;return Number.isInteger(r)&&Math.abs(r)>2**32?n=Vm(String(r)):typeof r=="bigint"?(n=String(r),(r>2n**32n||r<-(2n**32n))&&(n=Vm(n)),n+="n"):n=gl(r),`The value of "${e}" is out of range. It must be ${t}. Received ${n}`},RangeError);vt("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error);vt("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error);vt("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error);vt("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error);vt("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error);vt("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);vt("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error);vt("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error);vt("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error);vt("ERR_STREAM_WRITE_AFTER_END","write after end",Error);vt("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError);var jt={AbortError:Gk,aggregateTwoErrors:qm(zk),hideStackFrames:qm,codes:lu};const{ArrayIsArray:sp,ArrayPrototypeIncludes:wv,ArrayPrototypeJoin:vv,ArrayPrototypeMap:Qk,NumberIsInteger:ap,NumberIsNaN:Xk,NumberMAX_SAFE_INTEGER:Jk,NumberMIN_SAFE_INTEGER:Zk,NumberParseInt:eN,ObjectPrototypeHasOwnProperty:tN,RegExpPrototypeExec:Ev,String:rN,StringPrototypeToUpperCase:nN,StringPrototypeTrim:iN}=ot,{hideStackFrames:or,codes:{ERR_SOCKET_BAD_PORT:oN,ERR_INVALID_ARG_TYPE:It,ERR_INVALID_ARG_VALUE:Vo,ERR_OUT_OF_RANGE:Ii,ERR_UNKNOWN_SIGNAL:Km}}=jt,{normalizeEncoding:sN}=Nt,{isAsyncFunction:aN,isArrayBufferView:lN}=Nt.types,Ym={};function uN(e){return e===(e|0)}function cN(e){return e===e>>>0}const fN=/^[0-7]+$/,hN="must be a 32-bit unsigned integer or an octal string";function dN(e,t,r){if(typeof e>"u"&&(e=r),typeof e=="string"){if(Ev(fN,e)===null)throw new Vo(t,e,hN);e=eN(e,8)}return Sv(e,t),e}const pN=or((e,t,r=Zk,n=Jk)=>{if(typeof e!="number")throw new It(t,"number",e);if(!ap(e))throw new Ii(t,"an integer",e);if(e<r||e>n)throw new Ii(t,`>= ${r} && <= ${n}`,e)}),gN=or((e,t,r=-2147483648,n=2147483647)=>{if(typeof e!="number")throw new It(t,"number",e);if(!ap(e))throw new Ii(t,"an integer",e);if(e<r||e>n)throw new Ii(t,`>= ${r} && <= ${n}`,e)}),Sv=or((e,t,r=!1)=>{if(typeof e!="number")throw new It(t,"number",e);if(!ap(e))throw new Ii(t,"an integer",e);const n=r?1:0,o=4294967295;if(e<n||e>o)throw new Ii(t,`>= ${n} && <= ${o}`,e)});function lp(e,t){if(typeof e!="string")throw new It(t,"string",e)}function mN(e,t,r=void 0,n){if(typeof e!="number")throw new It(t,"number",e);if(r!=null&&e<r||n!=null&&e>n||(r!=null||n!=null)&&Xk(e))throw new Ii(t,`${r!=null?`>= ${r}`:""}${r!=null&&n!=null?" && ":""}${n!=null?`<= ${n}`:""}`,e)}const yN=or((e,t,r)=>{if(!wv(r,e)){const o="must be one of: "+vv(Qk(r,i=>typeof i=="string"?`'${i}'`:rN(i)),", ");throw new Vo(t,e,o)}});function Av(e,t){if(typeof e!="boolean")throw new It(t,"boolean",e)}function gc(e,t,r){return e==null||!tN(e,t)?r:e[t]}const _N=or((e,t,r=null)=>{const n=gc(r,"allowArray",!1),o=gc(r,"allowFunction",!1);if(!gc(r,"nullable",!1)&&e===null||!n&&sp(e)||typeof e!="object"&&(!o||typeof e!="function"))throw new It(t,"Object",e)}),bN=or((e,t)=>{if(e!=null&&typeof e!="object"&&typeof e!="function")throw new It(t,"a dictionary",e)}),uu=or((e,t,r=0)=>{if(!sp(e))throw new It(t,"Array",e);if(e.length<r){const n=`must be longer than ${r}`;throw new Vo(t,e,n)}});function wN(e,t){uu(e,t);for(let r=0;r<e.length;r++)lp(e[r],`${t}[${r}]`)}function vN(e,t){uu(e,t);for(let r=0;r<e.length;r++)Av(e[r],`${t}[${r}]`)}function EN(e,t){uu(e,t);for(let r=0;r<e.length;r++){const n=e[r],o=`${t}[${r}]`;if(n==null)throw new It(o,"AbortSignal",n);Tv(n,o)}}function SN(e,t="signal"){if(lp(e,t),Ym[e]===void 0)throw Ym[nN(e)]!==void 0?new Km(e+" (signals must use all capital letters)"):new Km(e)}const AN=or((e,t="buffer")=>{if(!lN(e))throw new It(t,["Buffer","TypedArray","DataView"],e)});function TN(e,t){const r=sN(t),n=e.length;if(r==="hex"&&n%2!==0)throw new Vo("encoding",t,`is invalid for data of length ${n}`)}function xN(e,t="Port",r=!0){if(typeof e!="number"&&typeof e!="string"||typeof e=="string"&&iN(e).length===0||+e!==+e>>>0||e>65535||e===0&&!r)throw new oN(t,e,r);return e|0}const Tv=or((e,t)=>{if(e!==void 0&&(e===null||typeof e!="object"||!("aborted"in e)))throw new It(t,"AbortSignal",e)}),IN=or((e,t)=>{if(typeof e!="function")throw new It(t,"Function",e)}),CN=or((e,t)=>{if(typeof e!="function"||aN(e))throw new It(t,"Function",e)}),RN=or((e,t)=>{if(e!==void 0)throw new It(t,"undefined",e)});function ON(e,t,r){if(!wv(r,e))throw new It(t,`('${vv(r,"|")}')`,e)}const kN=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function zm(e,t){if(typeof e>"u"||!Ev(kN,e))throw new Vo(t,e,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function NN(e){if(typeof e=="string")return zm(e,"hints"),e;if(sp(e)){const t=e.length;let r="";if(t===0)return r;for(let n=0;n<t;n++){const o=e[n];zm(o,"hints"),r+=o,n!==t-1&&(r+=", ")}return r}throw new Vo("hints",e,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}var Hs={isInt32:uN,isUint32:cN,parseFileMode:dN,validateArray:uu,validateStringArray:wN,validateBooleanArray:vN,validateAbortSignalArray:EN,validateBoolean:Av,validateBuffer:AN,validateDictionary:bN,validateEncoding:TN,validateFunction:IN,validateInt32:gN,validateInteger:pN,validateNumber:mN,validateObject:_N,validateOneOf:yN,validatePlainFunction:CN,validatePort:xN,validateSignalName:SN,validateString:lp,validateUint32:Sv,validateUndefined:RN,validateUnion:ON,validateAbortSignal:Tv,validateLinkHeaderValue:NN},up={exports:{}},xv={exports:{}},at=xv.exports={},Ar,Tr;function Oh(){throw new Error("setTimeout has not been defined")}function kh(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?Ar=setTimeout:Ar=Oh}catch{Ar=Oh}try{typeof clearTimeout=="function"?Tr=clearTimeout:Tr=kh}catch{Tr=kh}})();function Iv(e){if(Ar===setTimeout)return setTimeout(e,0);if((Ar===Oh||!Ar)&&setTimeout)return Ar=setTimeout,setTimeout(e,0);try{return Ar(e,0)}catch{try{return Ar.call(null,e,0)}catch{return Ar.call(this,e,0)}}}function MN(e){if(Tr===clearTimeout)return clearTimeout(e);if((Tr===kh||!Tr)&&clearTimeout)return Tr=clearTimeout,clearTimeout(e);try{return Tr(e)}catch{try{return Tr.call(null,e)}catch{return Tr.call(this,e)}}}var Gr=[],mo=!1,di,Ha=-1;function PN(){!mo||!di||(mo=!1,di.length?Gr=di.concat(Gr):Ha=-1,Gr.length&&Cv())}function Cv(){if(!mo){var e=Iv(PN);mo=!0;for(var t=Gr.length;t;){for(di=Gr,Gr=[];++Ha<t;)di&&di[Ha].run();Ha=-1,t=Gr.length}di=null,mo=!1,MN(e)}}at.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Gr.push(new Rv(e,t)),Gr.length===1&&!mo&&Iv(Cv)};function Rv(e,t){this.fun=e,this.array=t}Rv.prototype.run=function(){this.fun.apply(null,this.array)};at.title="browser";at.browser=!0;at.env={};at.argv=[];at.version="";at.versions={};function yn(){}at.on=yn;at.addListener=yn;at.once=yn;at.off=yn;at.removeListener=yn;at.removeAllListeners=yn;at.emit=yn;at.prependListener=yn;at.prependOnceListener=yn;at.listeners=function(e){return[]};at.binding=function(e){throw new Error("process.binding is not supported")};at.cwd=function(){return"/"};at.chdir=function(e){throw new Error("process.chdir is not supported")};at.umask=function(){return 0};var Ui=xv.exports;const{SymbolAsyncIterator:Gm,SymbolIterator:Qm,SymbolFor:Fi}=ot,Ov=Fi("nodejs.stream.destroyed"),kv=Fi("nodejs.stream.errored"),Nh=Fi("nodejs.stream.readable"),Mh=Fi("nodejs.stream.writable"),Nv=Fi("nodejs.stream.disturbed"),LN=Fi("nodejs.webstream.isClosedPromise"),BN=Fi("nodejs.webstream.controllerErrorFunction");function cu(e,t=!1){var r;return!!(e&&typeof e.pipe=="function"&&typeof e.on=="function"&&(!t||typeof e.pause=="function"&&typeof e.resume=="function")&&(!e._writableState||((r=e._readableState)===null||r===void 0?void 0:r.readable)!==!1)&&(!e._writableState||e._readableState))}function fu(e){var t;return!!(e&&typeof e.write=="function"&&typeof e.on=="function"&&(!e._readableState||((t=e._writableState)===null||t===void 0?void 0:t.writable)!==!1))}function DN(e){return!!(e&&typeof e.pipe=="function"&&e._readableState&&typeof e.on=="function"&&typeof e.write=="function")}function Dr(e){return e&&(e._readableState||e._writableState||typeof e.write=="function"&&typeof e.on=="function"||typeof e.pipe=="function"&&typeof e.on=="function")}function Mv(e){return!!(e&&!Dr(e)&&typeof e.pipeThrough=="function"&&typeof e.getReader=="function"&&typeof e.cancel=="function")}function Pv(e){return!!(e&&!Dr(e)&&typeof e.getWriter=="function"&&typeof e.abort=="function")}function Lv(e){return!!(e&&!Dr(e)&&typeof e.readable=="object"&&typeof e.writable=="object")}function $N(e){return Mv(e)||Pv(e)||Lv(e)}function UN(e,t){return e==null?!1:t===!0?typeof e[Gm]=="function":t===!1?typeof e[Qm]=="function":typeof e[Gm]=="function"||typeof e[Qm]=="function"}function hu(e){if(!Dr(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!!(e.destroyed||e[Ov]||n!=null&&n.destroyed)}function Bv(e){if(!fu(e))return null;if(e.writableEnded===!0)return!0;const t=e._writableState;return t!=null&&t.errored?!1:typeof(t==null?void 0:t.ended)!="boolean"?null:t.ended}function FN(e,t){if(!fu(e))return null;if(e.writableFinished===!0)return!0;const r=e._writableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.finished)!="boolean"?null:!!(r.finished||t===!1&&r.ended===!0&&r.length===0)}function jN(e){if(!cu(e))return null;if(e.readableEnded===!0)return!0;const t=e._readableState;return!t||t.errored?!1:typeof(t==null?void 0:t.ended)!="boolean"?null:t.ended}function Dv(e,t){if(!cu(e))return null;const r=e._readableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.endEmitted)!="boolean"?null:!!(r.endEmitted||t===!1&&r.ended===!0&&r.length===0)}function $v(e){return e&&e[Nh]!=null?e[Nh]:typeof(e==null?void 0:e.readable)!="boolean"?null:hu(e)?!1:cu(e)&&e.readable&&!Dv(e)}function Uv(e){return e&&e[Mh]!=null?e[Mh]:typeof(e==null?void 0:e.writable)!="boolean"?null:hu(e)?!1:fu(e)&&e.writable&&!Bv(e)}function WN(e,t){return Dr(e)?hu(e)?!0:!((t==null?void 0:t.readable)!==!1&&$v(e)||(t==null?void 0:t.writable)!==!1&&Uv(e)):null}function HN(e){var t,r;return Dr(e)?e.writableErrored?e.writableErrored:(t=(r=e._writableState)===null||r===void 0?void 0:r.errored)!==null&&t!==void 0?t:null:null}function VN(e){var t,r;return Dr(e)?e.readableErrored?e.readableErrored:(t=(r=e._readableState)===null||r===void 0?void 0:r.errored)!==null&&t!==void 0?t:null:null}function qN(e){if(!Dr(e))return null;if(typeof e.closed=="boolean")return e.closed;const t=e._writableState,r=e._readableState;return typeof(t==null?void 0:t.closed)=="boolean"||typeof(r==null?void 0:r.closed)=="boolean"?(t==null?void 0:t.closed)||(r==null?void 0:r.closed):typeof e._closed=="boolean"&&Fv(e)?e._closed:null}function Fv(e){return typeof e._closed=="boolean"&&typeof e._defaultKeepAlive=="boolean"&&typeof e._removedConnection=="boolean"&&typeof e._removedContLen=="boolean"}function jv(e){return typeof e._sent100=="boolean"&&Fv(e)}function KN(e){var t;return typeof e._consuming=="boolean"&&typeof e._dumped=="boolean"&&((t=e.req)===null||t===void 0?void 0:t.upgradeOrConnect)===void 0}function YN(e){if(!Dr(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!n&&jv(e)||!!(n&&n.autoDestroy&&n.emitClose&&n.closed===!1)}function zN(e){var t;return!!(e&&((t=e[Nv])!==null&&t!==void 0?t:e.readableDidRead||e.readableAborted))}function GN(e){var t,r,n,o,i,s,a,l,u,c;return!!(e&&((t=(r=(n=(o=(i=(s=e[kv])!==null&&s!==void 0?s:e.readableErrored)!==null&&i!==void 0?i:e.writableErrored)!==null&&o!==void 0?o:(a=e._readableState)===null||a===void 0?void 0:a.errorEmitted)!==null&&n!==void 0?n:(l=e._writableState)===null||l===void 0?void 0:l.errorEmitted)!==null&&r!==void 0?r:(u=e._readableState)===null||u===void 0?void 0:u.errored)!==null&&t!==void 0?t:!((c=e._writableState)===null||c===void 0)&&c.errored))}var _n={isDestroyed:hu,kIsDestroyed:Ov,isDisturbed:zN,kIsDisturbed:Nv,isErrored:GN,kIsErrored:kv,isReadable:$v,kIsReadable:Nh,kIsClosedPromise:LN,kControllerErrorFunction:BN,kIsWritable:Mh,isClosed:qN,isDuplexNodeStream:DN,isFinished:WN,isIterable:UN,isReadableNodeStream:cu,isReadableStream:Mv,isReadableEnded:jN,isReadableFinished:Dv,isReadableErrored:VN,isNodeStream:Dr,isWebStream:$N,isWritable:Uv,isWritableNodeStream:fu,isWritableStream:Pv,isWritableEnded:Bv,isWritableFinished:FN,isWritableErrored:HN,isServerRequest:KN,isServerResponse:jv,willEmitClose:YN,isTransformStream:Lv};const On=Ui,{AbortError:Wv,codes:QN}=jt,{ERR_INVALID_ARG_TYPE:XN,ERR_STREAM_PREMATURE_CLOSE:Xm}=QN,{kEmptyObject:Ph,once:Lh}=Nt,{validateAbortSignal:JN,validateFunction:ZN,validateObject:eM,validateBoolean:tM}=Hs,{Promise:rM,PromisePrototypeThen:nM,SymbolDispose:Hv}=ot,{isClosed:iM,isReadable:Jm,isReadableNodeStream:mc,isReadableStream:oM,isReadableFinished:Zm,isReadableErrored:e0,isWritable:t0,isWritableNodeStream:r0,isWritableStream:sM,isWritableFinished:n0,isWritableErrored:i0,isNodeStream:aM,willEmitClose:lM,kIsClosedPromise:uM}=_n;let yo;function cM(e){return e.setHeader&&typeof e.abort=="function"}const Bh=()=>{};function Vv(e,t,r){var n,o;if(arguments.length===2?(r=t,t=Ph):t==null?t=Ph:eM(t,"options"),ZN(r,"callback"),JN(t.signal,"options.signal"),r=Lh(r),oM(e)||sM(e))return fM(e,t,r);if(!aM(e))throw new XN("stream",["ReadableStream","WritableStream","Stream"],e);const i=(n=t.readable)!==null&&n!==void 0?n:mc(e),s=(o=t.writable)!==null&&o!==void 0?o:r0(e),a=e._writableState,l=e._readableState,u=()=>{e.writable||p()};let c=lM(e)&&mc(e)===i&&r0(e)===s,d=n0(e,!1);const p=()=>{d=!0,e.destroyed&&(c=!1),!(c&&(!e.readable||i))&&(!i||m)&&r.call(e)};let m=Zm(e,!1);const _=()=>{m=!0,e.destroyed&&(c=!1),!(c&&(!e.writable||s))&&(!s||d)&&r.call(e)},b=U=>{r.call(e,U)};let T=iM(e);const N=()=>{T=!0;const U=i0(e)||e0(e);if(U&&typeof U!="boolean")return r.call(e,U);if(i&&!m&&mc(e,!0)&&!Zm(e,!1))return r.call(e,new Xm);if(s&&!d&&!n0(e,!1))return r.call(e,new Xm);r.call(e)},R=()=>{T=!0;const U=i0(e)||e0(e);if(U&&typeof U!="boolean")return r.call(e,U);r.call(e)},S=()=>{e.req.on("finish",p)};cM(e)?(e.on("complete",p),c||e.on("abort",N),e.req?S():e.on("request",S)):s&&!a&&(e.on("end",u),e.on("close",u)),!c&&typeof e.aborted=="boolean"&&e.on("aborted",N),e.on("end",_),e.on("finish",p),t.error!==!1&&e.on("error",b),e.on("close",N),T?On.nextTick(N):a!=null&&a.errorEmitted||l!=null&&l.errorEmitted?c||On.nextTick(R):(!i&&(!c||Jm(e))&&(d||t0(e)===!1)||!s&&(!c||t0(e))&&(m||Jm(e)===!1)||l&&e.req&&e.aborted)&&On.nextTick(R);const D=()=>{r=Bh,e.removeListener("aborted",N),e.removeListener("complete",p),e.removeListener("abort",N),e.removeListener("request",S),e.req&&e.req.removeListener("finish",p),e.removeListener("end",u),e.removeListener("close",u),e.removeListener("finish",p),e.removeListener("end",_),e.removeListener("error",b),e.removeListener("close",N)};if(t.signal&&!T){const U=()=>{const x=r;D(),x.call(e,new Wv(void 0,{cause:t.signal.reason}))};if(t.signal.aborted)On.nextTick(U);else{yo=yo||Nt.addAbortListener;const x=yo(t.signal,U),L=r;r=Lh((...j)=>{x[Hv](),L.apply(e,j)})}}return D}function fM(e,t,r){let n=!1,o=Bh;if(t.signal)if(o=()=>{n=!0,r.call(e,new Wv(void 0,{cause:t.signal.reason}))},t.signal.aborted)On.nextTick(o);else{yo=yo||Nt.addAbortListener;const s=yo(t.signal,o),a=r;r=Lh((...l)=>{s[Hv](),a.apply(e,l)})}const i=(...s)=>{n||On.nextTick(()=>r.apply(e,s))};return nM(e[uM].promise,i,i),Bh}function hM(e,t){var r;let n=!1;return t===null&&(t=Ph),(r=t)!==null&&r!==void 0&&r.cleanup&&(tM(t.cleanup,"cleanup"),n=t.cleanup),new rM((o,i)=>{const s=Vv(e,t,a=>{n&&s(),a?i(a):o()})})}up.exports=Vv;up.exports.finished=hM;var Hn=up.exports;const Mr=Ui,{aggregateTwoErrors:dM,codes:{ERR_MULTIPLE_CALLBACK:pM},AbortError:gM}=jt,{Symbol:qv}=ot,{kIsDestroyed:mM,isDestroyed:yM,isFinished:_M,isServerRequest:bM}=_n,Kv=qv("kDestroy"),Dh=qv("kConstruct");function Yv(e,t,r){e&&(e.stack,t&&!t.errored&&(t.errored=e),r&&!r.errored&&(r.errored=e))}function wM(e,t){const r=this._readableState,n=this._writableState,o=n||r;return n!=null&&n.destroyed||r!=null&&r.destroyed?(typeof t=="function"&&t(),this):(Yv(e,n,r),n&&(n.destroyed=!0),r&&(r.destroyed=!0),o.constructed?o0(this,e,t):this.once(Kv,function(i){o0(this,dM(i,e),t)}),this)}function o0(e,t,r){let n=!1;function o(i){if(n)return;n=!0;const s=e._readableState,a=e._writableState;Yv(i,a,s),a&&(a.closed=!0),s&&(s.closed=!0),typeof r=="function"&&r(i),i?Mr.nextTick(vM,e,i):Mr.nextTick(zv,e)}try{e._destroy(t||null,o)}catch(i){o(i)}}function vM(e,t){$h(e,t),zv(e)}function zv(e){const t=e._readableState,r=e._writableState;r&&(r.closeEmitted=!0),t&&(t.closeEmitted=!0),(r!=null&&r.emitClose||t!=null&&t.emitClose)&&e.emit("close")}function $h(e,t){const r=e._readableState,n=e._writableState;n!=null&&n.errorEmitted||r!=null&&r.errorEmitted||(n&&(n.errorEmitted=!0),r&&(r.errorEmitted=!0),e.emit("error",t))}function EM(){const e=this._readableState,t=this._writableState;e&&(e.constructed=!0,e.closed=!1,e.closeEmitted=!1,e.destroyed=!1,e.errored=null,e.errorEmitted=!1,e.reading=!1,e.ended=e.readable===!1,e.endEmitted=e.readable===!1),t&&(t.constructed=!0,t.destroyed=!1,t.closed=!1,t.closeEmitted=!1,t.errored=null,t.errorEmitted=!1,t.finalCalled=!1,t.prefinished=!1,t.ended=t.writable===!1,t.ending=t.writable===!1,t.finished=t.writable===!1)}function Uh(e,t,r){const n=e._readableState,o=e._writableState;if(o!=null&&o.destroyed||n!=null&&n.destroyed)return this;n!=null&&n.autoDestroy||o!=null&&o.autoDestroy?e.destroy(t):t&&(t.stack,o&&!o.errored&&(o.errored=t),n&&!n.errored&&(n.errored=t),r?Mr.nextTick($h,e,t):$h(e,t))}function SM(e,t){if(typeof e._construct!="function")return;const r=e._readableState,n=e._writableState;r&&(r.constructed=!1),n&&(n.constructed=!1),e.once(Dh,t),!(e.listenerCount(Dh)>1)&&Mr.nextTick(AM,e)}function AM(e){let t=!1;function r(n){if(t){Uh(e,n??new pM);return}t=!0;const o=e._readableState,i=e._writableState,s=i||o;o&&(o.constructed=!0),i&&(i.constructed=!0),s.destroyed?e.emit(Kv,n):n?Uh(e,n,!0):Mr.nextTick(TM,e)}try{e._construct(n=>{Mr.nextTick(r,n)})}catch(n){Mr.nextTick(r,n)}}function TM(e){e.emit(Dh)}function s0(e){return(e==null?void 0:e.setHeader)&&typeof e.abort=="function"}function Gv(e){e.emit("close")}function xM(e,t){e.emit("error",t),Mr.nextTick(Gv,e)}function IM(e,t){!e||yM(e)||(!t&&!_M(e)&&(t=new gM),bM(e)?(e.socket=null,e.destroy(t)):s0(e)?e.abort():s0(e.req)?e.req.abort():typeof e.destroy=="function"?e.destroy(t):typeof e.close=="function"?e.close():t?Mr.nextTick(xM,e,t):Mr.nextTick(Gv,e),e.destroyed||(e[mM]=!0))}var qo={construct:SM,destroyer:IM,destroy:wM,undestroy:EM,errorOrDestroy:Uh};const{ArrayIsArray:CM,ObjectSetPrototypeOf:Qv}=ot,{EventEmitter:du}=au;function pu(e){du.call(this,e)}Qv(pu.prototype,du.prototype);Qv(pu,du);pu.prototype.pipe=function(e,t){const r=this;function n(c){e.writable&&e.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function o(){r.readable&&r.resume&&r.resume()}e.on("drain",o),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",s),r.on("close",a));let i=!1;function s(){i||(i=!0,e.end())}function a(){i||(i=!0,typeof e.destroy=="function"&&e.destroy())}function l(c){u(),du.listenerCount(this,"error")===0&&this.emit("error",c)}Fh(r,"error",l),Fh(e,"error",l);function u(){r.removeListener("data",n),e.removeListener("drain",o),r.removeListener("end",s),r.removeListener("close",a),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),e.removeListener("close",u)}return r.on("end",u),r.on("close",u),e.on("close",u),e.emit("pipe",r),e};function Fh(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):CM(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}var cp={Stream:pu,prependListener:Fh},Xv={exports:{}};(function(e){const{SymbolDispose:t}=ot,{AbortError:r,codes:n}=jt,{isNodeStream:o,isWebStream:i,kControllerErrorFunction:s}=_n,a=Hn,{ERR_INVALID_ARG_TYPE:l}=n;let u;const c=(d,p)=>{if(typeof d!="object"||!("aborted"in d))throw new l(p,"AbortSignal",d)};e.exports.addAbortSignal=function(p,m){if(c(p,"signal"),!o(m)&&!i(m))throw new l("stream",["ReadableStream","WritableStream","Stream"],m);return e.exports.addAbortSignalNoValidate(p,m)},e.exports.addAbortSignalNoValidate=function(d,p){if(typeof d!="object"||!("aborted"in d))return p;const m=o(p)?()=>{p.destroy(new r(void 0,{cause:d.reason}))}:()=>{p[s](new r(void 0,{cause:d.reason}))};if(d.aborted)m();else{u=u||Nt.addAbortListener;const _=u(d,m);a(p,_[t])}return p}})(Xv);var gu=Xv.exports;const{StringPrototypeSlice:a0,SymbolIterator:RM,TypedArrayPrototypeSet:ma,Uint8Array:OM}=ot,{Buffer:yc}=Gt,{inspect:kM}=Nt;var NM=class{constructor(){this.head=null,this.tail=null,this.length=0}push(t){const r={data:t,next:null};this.length>0?this.tail.next=r:this.head=r,this.tail=r,++this.length}unshift(t){const r={data:t,next:this.head};this.length===0&&(this.tail=r),this.head=r,++this.length}shift(){if(this.length===0)return;const t=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,t}clear(){this.head=this.tail=null,this.length=0}join(t){if(this.length===0)return"";let r=this.head,n=""+r.data;for(;(r=r.next)!==null;)n+=t+r.data;return n}concat(t){if(this.length===0)return yc.alloc(0);const r=yc.allocUnsafe(t>>>0);let n=this.head,o=0;for(;n;)ma(r,n.data,o),o+=n.data.length,n=n.next;return r}consume(t,r){const n=this.head.data;if(t<n.length){const o=n.slice(0,t);return this.head.data=n.slice(t),o}return t===n.length?this.shift():r?this._getString(t):this._getBuffer(t)}first(){return this.head.data}*[RM](){for(let t=this.head;t;t=t.next)yield t.data}_getString(t){let r="",n=this.head,o=0;do{const i=n.data;if(t>i.length)r+=i,t-=i.length;else{t===i.length?(r+=i,++o,n.next?this.head=n.next:this.head=this.tail=null):(r+=a0(i,0,t),this.head=n,n.data=a0(i,t));break}++o}while((n=n.next)!==null);return this.length-=o,r}_getBuffer(t){const r=yc.allocUnsafe(t),n=t;let o=this.head,i=0;do{const s=o.data;if(t>s.length)ma(r,s,n-t),t-=s.length;else{t===s.length?(ma(r,s,n-t),++i,o.next?this.head=o.next:this.head=this.tail=null):(ma(r,new OM(s.buffer,s.byteOffset,t),n-t),this.head=o,o.data=s.slice(t));break}++i}while((o=o.next)!==null);return this.length-=i,r}[Symbol.for("nodejs.util.inspect.custom")](t,r){return kM(this,{...r,depth:0,customInspect:!1})}};const{MathFloor:MM,NumberIsInteger:PM}=ot,{validateInteger:LM}=Hs,{ERR_INVALID_ARG_VALUE:BM}=jt.codes;let Jv=16*1024,Zv=16;function DM(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function e1(e){return e?Zv:Jv}function $M(e,t){LM(t,"value",0),e?Zv=t:Jv=t}function UM(e,t,r,n){const o=DM(t,n,r);if(o!=null){if(!PM(o)||o<0){const i=n?`options.${r}`:"options.highWaterMark";throw new BM(i,o)}return MM(o)}return e1(e.objectMode)}var mu={getHighWaterMark:UM,getDefaultHighWaterMark:e1,setDefaultHighWaterMark:$M},t1={},jh={exports:{}};/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */(function(e,t){var r=Gt,n=r.Buffer;function o(s,a){for(var l in s)a[l]=s[l]}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(o(r,t),t.Buffer=i);function i(s,a,l){return n(s,a,l)}i.prototype=Object.create(n.prototype),o(n,i),i.from=function(s,a,l){if(typeof s=="number")throw new TypeError("Argument must not be a number");return n(s,a,l)},i.alloc=function(s,a,l){if(typeof s!="number")throw new TypeError("Argument must be a number");var u=n(s);return a!==void 0?typeof l=="string"?u.fill(a,l):u.fill(a):u.fill(0),u},i.allocUnsafe=function(s){if(typeof s!="number")throw new TypeError("Argument must be a number");return n(s)},i.allocUnsafeSlow=function(s){if(typeof s!="number")throw new TypeError("Argument must be a number");return r.SlowBuffer(s)}})(jh,jh.exports);var FM=jh.exports,fp=FM.Buffer,l0=fp.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function jM(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function WM(e){var t=jM(e);if(typeof t!="string"&&(fp.isEncoding===l0||!l0(e)))throw new Error("Unknown encoding: "+e);return t||e}t1.StringDecoder=Vs;function Vs(e){this.encoding=WM(e);var t;switch(this.encoding){case"utf16le":this.text=zM,this.end=GM,t=4;break;case"utf8":this.fillLast=qM,t=4;break;case"base64":this.text=QM,this.end=XM,t=3;break;default:this.write=JM,this.end=ZM;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=fp.allocUnsafe(t)}Vs.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""};Vs.prototype.end=YM;Vs.prototype.text=KM;Vs.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length};function _c(e){return e<=127?0:e>>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function HM(e,t,r){var n=t.length-1;if(n<r)return 0;var o=_c(t[n]);return o>=0?(o>0&&(e.lastNeed=o-1),o):--n<r||o===-2?0:(o=_c(t[n]),o>=0?(o>0&&(e.lastNeed=o-2),o):--n<r||o===-2?0:(o=_c(t[n]),o>=0?(o>0&&(o===2?o=0:e.lastNeed=o-3),o):0))}function VM(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"�"}}function qM(e){var t=this.lastTotal-this.lastNeed,r=VM(this,e);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function KM(e,t){var r=HM(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)}function YM(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t}function zM(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function GM(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function QM(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function XM(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function JM(e){return e.toString(this.encoding)}function ZM(e){return e&&e.length?this.write(e):""}const u0=Ui,{PromisePrototypeThen:e2,SymbolAsyncIterator:c0,SymbolIterator:f0}=ot,{Buffer:t2}=Gt,{ERR_INVALID_ARG_TYPE:r2,ERR_STREAM_NULL_VALUES:n2}=jt.codes;function i2(e,t,r){let n;if(typeof t=="string"||t instanceof t2)return new e({objectMode:!0,...r,read(){this.push(t),this.push(null)}});let o;if(t&&t[c0])o=!0,n=t[c0]();else if(t&&t[f0])o=!1,n=t[f0]();else throw new r2("iterable",["Iterable"],t);const i=new e({objectMode:!0,highWaterMark:1,...r});let s=!1;i._read=function(){s||(s=!0,l())},i._destroy=function(u,c){e2(a(u),()=>u0.nextTick(c,u),d=>u0.nextTick(c,d||u))};async function a(u){const c=u!=null,d=typeof n.throw=="function";if(c&&d){const{value:p,done:m}=await n.throw(u);if(await p,m)return}if(typeof n.return=="function"){const{value:p}=await n.return();await p}}async function l(){for(;;){try{const{value:u,done:c}=o?await n.next():n.next();if(c)i.push(null);else{const d=u&&typeof u.then=="function"?await u:u;if(d===null)throw s=!1,new n2;if(i.push(d))continue;s=!1}}catch(u){i.destroy(u)}break}}return i}var r1=i2,bc,h0;function yu(){if(h0)return bc;h0=1;const e=Ui,{ArrayPrototypeIndexOf:t,NumberIsInteger:r,NumberIsNaN:n,NumberParseInt:o,ObjectDefineProperties:i,ObjectKeys:s,ObjectSetPrototypeOf:a,Promise:l,SafeSet:u,SymbolAsyncDispose:c,SymbolAsyncIterator:d,Symbol:p}=ot;bc=I,I.ReadableState=K;const{EventEmitter:m}=au,{Stream:_,prependListener:b}=cp,{Buffer:T}=Gt,{addAbortSignal:N}=gu,R=Hn;let S=Nt.debuglog("stream",H=>{S=H});const D=NM,U=qo,{getHighWaterMark:x,getDefaultHighWaterMark:L}=mu,{aggregateTwoErrors:j,codes:{ERR_INVALID_ARG_TYPE:Y,ERR_METHOD_NOT_IMPLEMENTED:se,ERR_OUT_OF_RANGE:re,ERR_STREAM_PUSH_AFTER_EOF:P,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:B},AbortError:oe}=jt,{validateObject:ne}=Hs,ue=p("kPaused"),{StringDecoder:ae}=t1,z=r1;a(I.prototype,_.prototype),a(I,_);const pe=()=>{},{errorOrDestroy:de}=U,ge=1,O=2,ie=4,me=8,ve=16,ye=32,q=64,F=128,X=256,he=512,ce=1024,Z=2048,v=4096,A=8192,E=16384,k=32768,M=65536,ee=1<<17,te=1<<18;function $(H){return{enumerable:!1,get(){return(this.state&H)!==0},set(G){G?this.state|=H:this.state&=~H}}}i(K.prototype,{objectMode:$(ge),ended:$(O),endEmitted:$(ie),reading:$(me),constructed:$(ve),sync:$(ye),needReadable:$(q),emittedReadable:$(F),readableListening:$(X),resumeScheduled:$(he),errorEmitted:$(ce),emitClose:$(Z),autoDestroy:$(v),destroyed:$(A),closed:$(E),closeEmitted:$(k),multiAwaitDrain:$(M),readingMore:$(ee),dataEmitted:$(te)});function K(H,G,Ie){typeof Ie!="boolean"&&(Ie=G instanceof an()),this.state=Z|v|ve|ye,H&&H.objectMode&&(this.state|=ge),Ie&&H&&H.readableObjectMode&&(this.state|=ge),this.highWaterMark=H?x(this,H,"readableHighWaterMark",Ie):L(!1),this.buffer=new D,this.length=0,this.pipes=[],this.flowing=null,this[ue]=null,H&&H.emitClose===!1&&(this.state&=~Z),H&&H.autoDestroy===!1&&(this.state&=~v),this.errored=null,this.defaultEncoding=H&&H.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,H&&H.encoding&&(this.decoder=new ae(H.encoding),this.encoding=H.encoding)}function I(H){if(!(this instanceof I))return new I(H);const G=this instanceof an();this._readableState=new K(H,this,G),H&&(typeof H.read=="function"&&(this._read=H.read),typeof H.destroy=="function"&&(this._destroy=H.destroy),typeof H.construct=="function"&&(this._construct=H.construct),H.signal&&!G&&N(H.signal,this)),_.call(this,H),U.construct(this,()=>{this._readableState.needReadable&&C(this,this._readableState)})}I.prototype.destroy=U.destroy,I.prototype._undestroy=U.undestroy,I.prototype._destroy=function(H,G){G(H)},I.prototype[m.captureRejectionSymbol]=function(H){this.destroy(H)},I.prototype[c]=function(){let H;return this.destroyed||(H=this.readableEnded?null:new oe,this.destroy(H)),new l((G,Ie)=>R(this,Ce=>Ce&&Ce!==H?Ie(Ce):G(null)))},I.prototype.push=function(H,G){return W(this,H,G,!1)},I.prototype.unshift=function(H,G){return W(this,H,G,!0)};function W(H,G,Ie,Ce){S("readableAddChunk",G);const Ne=H._readableState;let Et;if(Ne.state&ge||(typeof G=="string"?(Ie=Ie||Ne.defaultEncoding,Ne.encoding!==Ie&&(Ce&&Ne.encoding?G=T.from(G,Ie).toString(Ne.encoding):(G=T.from(G,Ie),Ie=""))):G instanceof T?Ie="":_._isUint8Array(G)?(G=_._uint8ArrayToBuffer(G),Ie=""):G!=null&&(Et=new Y("chunk",["string","Buffer","Uint8Array"],G))),Et)de(H,Et);else if(G===null)Ne.state&=~me,f(H,Ne);else if(Ne.state&ge||G&&G.length>0)if(Ce)if(Ne.state&ie)de(H,new B);else{if(Ne.destroyed||Ne.errored)return!1;J(H,Ne,G,!0)}else if(Ne.ended)de(H,new P);else{if(Ne.destroyed||Ne.errored)return!1;Ne.state&=~me,Ne.decoder&&!Ie?(G=Ne.decoder.write(G),Ne.objectMode||G.length!==0?J(H,Ne,G,!1):C(H,Ne)):J(H,Ne,G,!1)}else Ce||(Ne.state&=~me,C(H,Ne));return!Ne.ended&&(Ne.length<Ne.highWaterMark||Ne.length===0)}function J(H,G,Ie,Ce){G.flowing&&G.length===0&&!G.sync&&H.listenerCount("data")>0?(G.state&M?G.awaitDrainWriters.clear():G.awaitDrainWriters=null,G.dataEmitted=!0,H.emit("data",Ie)):(G.length+=G.objectMode?1:Ie.length,Ce?G.buffer.unshift(Ie):G.buffer.push(Ie),G.state&q&&g(H)),C(H,G)}I.prototype.isPaused=function(){const H=this._readableState;return H[ue]===!0||H.flowing===!1},I.prototype.setEncoding=function(H){const G=new ae(H);this._readableState.decoder=G,this._readableState.encoding=this._readableState.decoder.encoding;const Ie=this._readableState.buffer;let Ce="";for(const Ne of Ie)Ce+=G.write(Ne);return Ie.clear(),Ce!==""&&Ie.push(Ce),this._readableState.length=Ce.length,this};const le=1073741824;function y(H){if(H>le)throw new re("size","<= 1GiB",H);return H--,H|=H>>>1,H|=H>>>2,H|=H>>>4,H|=H>>>8,H|=H>>>16,H++,H}function h(H,G){return H<=0||G.length===0&&G.ended?0:G.state&ge?1:n(H)?G.flowing&&G.length?G.buffer.first().length:G.length:H<=G.length?H:G.ended?G.length:0}I.prototype.read=function(H){S("read",H),H===void 0?H=NaN:r(H)||(H=o(H,10));const G=this._readableState,Ie=H;if(H>G.highWaterMark&&(G.highWaterMark=y(H)),H!==0&&(G.state&=~F),H===0&&G.needReadable&&((G.highWaterMark!==0?G.length>=G.highWaterMark:G.length>0)||G.ended))return S("read: emitReadable",G.length,G.ended),G.length===0&&G.ended?st(this):g(this),null;if(H=h(H,G),H===0&&G.ended)return G.length===0&&st(this),null;let Ce=(G.state&q)!==0;if(S("need readable",Ce),(G.length===0||G.length-H<G.highWaterMark)&&(Ce=!0,S("length less than watermark",Ce)),G.ended||G.reading||G.destroyed||G.errored||!G.constructed)Ce=!1,S("reading, ended or constructing",Ce);else if(Ce){S("do read"),G.state|=me|ye,G.length===0&&(G.state|=q);try{this._read(G.highWaterMark)}catch(Et){de(this,Et)}G.state&=~ye,G.reading||(H=h(Ie,G))}let Ne;return H>0?Ne=Je(H,G):Ne=null,Ne===null?(G.needReadable=G.length<=G.highWaterMark,H=0):(G.length-=H,G.multiAwaitDrain?G.awaitDrainWriters.clear():G.awaitDrainWriters=null),G.length===0&&(G.ended||(G.needReadable=!0),Ie!==H&&G.ended&&st(this)),Ne!==null&&!G.errorEmitted&&!G.closeEmitted&&(G.dataEmitted=!0,this.emit("data",Ne)),Ne};function f(H,G){if(S("onEofChunk"),!G.ended){if(G.decoder){const Ie=G.decoder.end();Ie&&Ie.length&&(G.buffer.push(Ie),G.length+=G.objectMode?1:Ie.length)}G.ended=!0,G.sync?g(H):(G.needReadable=!1,G.emittedReadable=!0,w(H))}}function g(H){const G=H._readableState;S("emitReadable",G.needReadable,G.emittedReadable),G.needReadable=!1,G.emittedReadable||(S("emitReadable",G.flowing),G.emittedReadable=!0,e.nextTick(w,H))}function w(H){const G=H._readableState;S("emitReadable_",G.destroyed,G.length,G.ended),!G.destroyed&&!G.errored&&(G.length||G.ended)&&(H.emit("readable"),G.emittedReadable=!1),G.needReadable=!G.flowing&&!G.ended&&G.length<=G.highWaterMark,Re(H)}function C(H,G){!G.readingMore&&G.constructed&&(G.readingMore=!0,e.nextTick(V,H,G))}function V(H,G){for(;!G.reading&&!G.ended&&(G.length<G.highWaterMark||G.flowing&&G.length===0);){const Ie=G.length;if(S("maybeReadMore read 0"),H.read(0),Ie===G.length)break}G.readingMore=!1}I.prototype._read=function(H){throw new se("_read()")},I.prototype.pipe=function(H,G){const Ie=this,Ce=this._readableState;Ce.pipes.length===1&&(Ce.multiAwaitDrain||(Ce.multiAwaitDrain=!0,Ce.awaitDrainWriters=new u(Ce.awaitDrainWriters?[Ce.awaitDrainWriters]:[]))),Ce.pipes.push(H),S("pipe count=%d opts=%j",Ce.pipes.length,G);const Et=(!G||G.end!==!1)&&H!==e.stdout&&H!==e.stderr?Pp:Yo;Ce.endEmitted?e.nextTick(Et):Ie.once("end",Et),H.on("unpipe",Qt);function Qt(qn,Ur){S("onunpipe"),qn===Ie&&Ur&&Ur.hasUnpiped===!1&&(Ur.hasUnpiped=!0,hE())}function Pp(){S("onend"),H.end()}let Vn,Lp=!1;function hE(){S("cleanup"),H.removeListener("close",Iu),H.removeListener("finish",Cu),Vn&&H.removeListener("drain",Vn),H.removeListener("error",xu),H.removeListener("unpipe",Qt),Ie.removeListener("end",Pp),Ie.removeListener("end",Yo),Ie.removeListener("data",Dp),Lp=!0,Vn&&Ce.awaitDrainWriters&&(!H._writableState||H._writableState.needDrain)&&Vn()}function Bp(){Lp||(Ce.pipes.length===1&&Ce.pipes[0]===H?(S("false write response, pause",0),Ce.awaitDrainWriters=H,Ce.multiAwaitDrain=!1):Ce.pipes.length>1&&Ce.pipes.includes(H)&&(S("false write response, pause",Ce.awaitDrainWriters.size),Ce.awaitDrainWriters.add(H)),Ie.pause()),Vn||(Vn=fe(Ie,H),H.on("drain",Vn))}Ie.on("data",Dp);function Dp(qn){S("ondata");const Ur=H.write(qn);S("dest.write",Ur),Ur===!1&&Bp()}function xu(qn){if(S("onerror",qn),Yo(),H.removeListener("error",xu),H.listenerCount("error")===0){const Ur=H._writableState||H._readableState;Ur&&!Ur.errorEmitted?de(H,qn):H.emit("error",qn)}}b(H,"error",xu);function Iu(){H.removeListener("finish",Cu),Yo()}H.once("close",Iu);function Cu(){S("onfinish"),H.removeListener("close",Iu),Yo()}H.once("finish",Cu);function Yo(){S("unpipe"),Ie.unpipe(H)}return H.emit("pipe",Ie),H.writableNeedDrain===!0?Bp():Ce.flowing||(S("pipe resume"),Ie.resume()),H};function fe(H,G){return function(){const Ce=H._readableState;Ce.awaitDrainWriters===G?(S("pipeOnDrain",1),Ce.awaitDrainWriters=null):Ce.multiAwaitDrain&&(S("pipeOnDrain",Ce.awaitDrainWriters.size),Ce.awaitDrainWriters.delete(G)),(!Ce.awaitDrainWriters||Ce.awaitDrainWriters.size===0)&&H.listenerCount("data")&&H.resume()}}I.prototype.unpipe=function(H){const G=this._readableState,Ie={hasUnpiped:!1};if(G.pipes.length===0)return this;if(!H){const Ne=G.pipes;G.pipes=[],this.pause();for(let Et=0;Et<Ne.length;Et++)Ne[Et].emit("unpipe",this,{hasUnpiped:!1});return this}const Ce=t(G.pipes,H);return Ce===-1?this:(G.pipes.splice(Ce,1),G.pipes.length===0&&this.pause(),H.emit("unpipe",this,Ie),this)},I.prototype.on=function(H,G){const Ie=_.prototype.on.call(this,H,G),Ce=this._readableState;return H==="data"?(Ce.readableListening=this.listenerCount("readable")>0,Ce.flowing!==!1&&this.resume()):H==="readable"&&!Ce.endEmitted&&!Ce.readableListening&&(Ce.readableListening=Ce.needReadable=!0,Ce.flowing=!1,Ce.emittedReadable=!1,S("on readable",Ce.length,Ce.reading),Ce.length?g(this):Ce.reading||e.nextTick(ke,this)),Ie},I.prototype.addListener=I.prototype.on,I.prototype.removeListener=function(H,G){const Ie=_.prototype.removeListener.call(this,H,G);return H==="readable"&&e.nextTick(xe,this),Ie},I.prototype.off=I.prototype.removeListener,I.prototype.removeAllListeners=function(H){const G=_.prototype.removeAllListeners.apply(this,arguments);return(H==="readable"||H===void 0)&&e.nextTick(xe,this),G};function xe(H){const G=H._readableState;G.readableListening=H.listenerCount("readable")>0,G.resumeScheduled&&G[ue]===!1?G.flowing=!0:H.listenerCount("data")>0?H.resume():G.readableListening||(G.flowing=null)}function ke(H){S("readable nexttick read 0"),H.read(0)}I.prototype.resume=function(){const H=this._readableState;return H.flowing||(S("resume"),H.flowing=!H.readableListening,Te(this,H)),H[ue]=!1,this};function Te(H,G){G.resumeScheduled||(G.resumeScheduled=!0,e.nextTick(Oe,H,G))}function Oe(H,G){S("resume",G.reading),G.reading||H.read(0),G.resumeScheduled=!1,H.emit("resume"),Re(H),G.flowing&&!G.reading&&H.read(0)}I.prototype.pause=function(){return S("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(S("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[ue]=!0,this};function Re(H){const G=H._readableState;for(S("flow",G.flowing);G.flowing&&H.read()!==null;);}I.prototype.wrap=function(H){let G=!1;H.on("data",Ce=>{!this.push(Ce)&&H.pause&&(G=!0,H.pause())}),H.on("end",()=>{this.push(null)}),H.on("error",Ce=>{de(this,Ce)}),H.on("close",()=>{this.destroy()}),H.on("destroy",()=>{this.destroy()}),this._read=()=>{G&&H.resume&&(G=!1,H.resume())};const Ie=s(H);for(let Ce=1;Ce<Ie.length;Ce++){const Ne=Ie[Ce];this[Ne]===void 0&&typeof H[Ne]=="function"&&(this[Ne]=H[Ne].bind(H))}return this},I.prototype[d]=function(){return Ve(this)},I.prototype.iterator=function(H){return H!==void 0&&ne(H,"options"),Ve(this,H)};function Ve(H,G){typeof H.read!="function"&&(H=I.wrap(H,{objectMode:!0}));const Ie=lt(H,G);return Ie.stream=H,Ie}async function*lt(H,G){let Ie=pe;function Ce(Qt){this===H?(Ie(),Ie=pe):Ie=Qt}H.on("readable",Ce);let Ne;const Et=R(H,{writable:!1},Qt=>{Ne=Qt?j(Ne,Qt):null,Ie(),Ie=pe});try{for(;;){const Qt=H.destroyed?null:H.read();if(Qt!==null)yield Qt;else{if(Ne)throw Ne;if(Ne===null)return;await new l(Ce)}}}catch(Qt){throw Ne=j(Ne,Qt),Ne}finally{(Ne||(G==null?void 0:G.destroyOnReturn)!==!1)&&(Ne===void 0||H._readableState.autoDestroy)?U.destroyer(H,null):(H.off("readable",Ce),Et())}}i(I.prototype,{readable:{__proto__:null,get(){const H=this._readableState;return!!H&&H.readable!==!1&&!H.destroyed&&!H.errorEmitted&&!H.endEmitted},set(H){this._readableState&&(this._readableState.readable=!!H)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(H){this._readableState&&(this._readableState.flowing=H)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(H){this._readableState&&(this._readableState.destroyed=H)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),i(K.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[ue]!==!1},set(H){this[ue]=!!H}}}),I._fromList=Je;function Je(H,G){if(G.length===0)return null;let Ie;return G.objectMode?Ie=G.buffer.shift():!H||H>=G.length?(G.decoder?Ie=G.buffer.join(""):G.buffer.length===1?Ie=G.buffer.first():Ie=G.buffer.concat(G.length),G.buffer.clear()):Ie=G.buffer.consume(H,G.decoder),Ie}function st(H){const G=H._readableState;S("endReadable",G.endEmitted),G.endEmitted||(G.ended=!0,e.nextTick(gt,G,H))}function gt(H,G){if(S("endReadableNT",H.endEmitted,H.length),!H.errored&&!H.closeEmitted&&!H.endEmitted&&H.length===0){if(H.endEmitted=!0,G.emit("end"),G.writable&&G.allowHalfOpen===!1)e.nextTick(ut,G);else if(H.autoDestroy){const Ie=G._writableState;(!Ie||Ie.autoDestroy&&(Ie.finished||Ie.writable===!1))&&G.destroy()}}}function ut(H){H.writable&&!H.writableEnded&&!H.destroyed&&H.end()}I.from=function(H,G){return z(I,H,G)};let Ki;function Ko(){return Ki===void 0&&(Ki={}),Ki}return I.fromWeb=function(H,G){return Ko().newStreamReadableFromReadableStream(H,G)},I.toWeb=function(H,G){return Ko().newReadableStreamFromStreamReadable(H,G)},I.wrap=function(H,G){var Ie,Ce;return new I({objectMode:(Ie=(Ce=H.readableObjectMode)!==null&&Ce!==void 0?Ce:H.objectMode)!==null&&Ie!==void 0?Ie:!0,...G,destroy(Ne,Et){U.destroyer(H,Ne),Et(Ne)}}).wrap(H)},bc}var wc,d0;function hp(){if(d0)return wc;d0=1;const e=Ui,{ArrayPrototypeSlice:t,Error:r,FunctionPrototypeSymbolHasInstance:n,ObjectDefineProperty:o,ObjectDefineProperties:i,ObjectSetPrototypeOf:s,StringPrototypeToLowerCase:a,Symbol:l,SymbolHasInstance:u}=ot;wc=ne,ne.WritableState=B;const{EventEmitter:c}=au,d=cp.Stream,{Buffer:p}=Gt,m=qo,{addAbortSignal:_}=gu,{getHighWaterMark:b,getDefaultHighWaterMark:T}=mu,{ERR_INVALID_ARG_TYPE:N,ERR_METHOD_NOT_IMPLEMENTED:R,ERR_MULTIPLE_CALLBACK:S,ERR_STREAM_CANNOT_PIPE:D,ERR_STREAM_DESTROYED:U,ERR_STREAM_ALREADY_FINISHED:x,ERR_STREAM_NULL_VALUES:L,ERR_STREAM_WRITE_AFTER_END:j,ERR_UNKNOWN_ENCODING:Y}=jt.codes,{errorOrDestroy:se}=m;s(ne.prototype,d.prototype),s(ne,d);function re(){}const P=l("kOnFinished");function B(v,A,E){typeof E!="boolean"&&(E=A instanceof an()),this.objectMode=!!(v&&v.objectMode),E&&(this.objectMode=this.objectMode||!!(v&&v.writableObjectMode)),this.highWaterMark=v?b(this,v,"writableHighWaterMark",E):T(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;const k=!!(v&&v.decodeStrings===!1);this.decodeStrings=!k,this.defaultEncoding=v&&v.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=de.bind(void 0,A),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,oe(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!v||v.emitClose!==!1,this.autoDestroy=!v||v.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[P]=[]}function oe(v){v.buffered=[],v.bufferedIndex=0,v.allBuffers=!0,v.allNoop=!0}B.prototype.getBuffer=function(){return t(this.buffered,this.bufferedIndex)},o(B.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function ne(v){const A=this instanceof an();if(!A&&!n(ne,this))return new ne(v);this._writableState=new B(v,this,A),v&&(typeof v.write=="function"&&(this._write=v.write),typeof v.writev=="function"&&(this._writev=v.writev),typeof v.destroy=="function"&&(this._destroy=v.destroy),typeof v.final=="function"&&(this._final=v.final),typeof v.construct=="function"&&(this._construct=v.construct),v.signal&&_(v.signal,this)),d.call(this,v),m.construct(this,()=>{const E=this._writableState;E.writing||me(this,E),F(this,E)})}o(ne,u,{__proto__:null,value:function(v){return n(this,v)?!0:this!==ne?!1:v&&v._writableState instanceof B}}),ne.prototype.pipe=function(){se(this,new D)};function ue(v,A,E,k){const M=v._writableState;if(typeof E=="function")k=E,E=M.defaultEncoding;else{if(!E)E=M.defaultEncoding;else if(E!=="buffer"&&!p.isEncoding(E))throw new Y(E);typeof k!="function"&&(k=re)}if(A===null)throw new L;if(!M.objectMode)if(typeof A=="string")M.decodeStrings!==!1&&(A=p.from(A,E),E="buffer");else if(A instanceof p)E="buffer";else if(d._isUint8Array(A))A=d._uint8ArrayToBuffer(A),E="buffer";else throw new N("chunk",["string","Buffer","Uint8Array"],A);let ee;return M.ending?ee=new j:M.destroyed&&(ee=new U("write")),ee?(e.nextTick(k,ee),se(v,ee,!0),ee):(M.pendingcb++,ae(v,M,A,E,k))}ne.prototype.write=function(v,A,E){return ue(this,v,A,E)===!0},ne.prototype.cork=function(){this._writableState.corked++},ne.prototype.uncork=function(){const v=this._writableState;v.corked&&(v.corked--,v.writing||me(this,v))},ne.prototype.setDefaultEncoding=function(A){if(typeof A=="string"&&(A=a(A)),!p.isEncoding(A))throw new Y(A);return this._writableState.defaultEncoding=A,this};function ae(v,A,E,k,M){const ee=A.objectMode?1:E.length;A.length+=ee;const te=A.length<A.highWaterMark;return te||(A.needDrain=!0),A.writing||A.corked||A.errored||!A.constructed?(A.buffered.push({chunk:E,encoding:k,callback:M}),A.allBuffers&&k!=="buffer"&&(A.allBuffers=!1),A.allNoop&&M!==re&&(A.allNoop=!1)):(A.writelen=ee,A.writecb=M,A.writing=!0,A.sync=!0,v._write(E,k,A.onwrite),A.sync=!1),te&&!A.errored&&!A.destroyed}function z(v,A,E,k,M,ee,te){A.writelen=k,A.writecb=te,A.writing=!0,A.sync=!0,A.destroyed?A.onwrite(new U("write")):E?v._writev(M,A.onwrite):v._write(M,ee,A.onwrite),A.sync=!1}function pe(v,A,E,k){--A.pendingcb,k(E),ie(A),se(v,E)}function de(v,A){const E=v._writableState,k=E.sync,M=E.writecb;if(typeof M!="function"){se(v,new S);return}E.writing=!1,E.writecb=null,E.length-=E.writelen,E.writelen=0,A?(A.stack,E.errored||(E.errored=A),v._readableState&&!v._readableState.errored&&(v._readableState.errored=A),k?e.nextTick(pe,v,E,A,M):pe(v,E,A,M)):(E.buffered.length>E.bufferedIndex&&me(v,E),k?E.afterWriteTickInfo!==null&&E.afterWriteTickInfo.cb===M?E.afterWriteTickInfo.count++:(E.afterWriteTickInfo={count:1,cb:M,stream:v,state:E},e.nextTick(ge,E.afterWriteTickInfo)):O(v,E,1,M))}function ge({stream:v,state:A,count:E,cb:k}){return A.afterWriteTickInfo=null,O(v,A,E,k)}function O(v,A,E,k){for(!A.ending&&!v.destroyed&&A.length===0&&A.needDrain&&(A.needDrain=!1,v.emit("drain"));E-- >0;)A.pendingcb--,k();A.destroyed&&ie(A),F(v,A)}function ie(v){if(v.writing)return;for(let M=v.bufferedIndex;M<v.buffered.length;++M){var A;const{chunk:ee,callback:te}=v.buffered[M],$=v.objectMode?1:ee.length;v.length-=$,te((A=v.errored)!==null&&A!==void 0?A:new U("write"))}const E=v[P].splice(0);for(let M=0;M<E.length;M++){var k;E[M]((k=v.errored)!==null&&k!==void 0?k:new U("end"))}oe(v)}function me(v,A){if(A.corked||A.bufferProcessing||A.destroyed||!A.constructed)return;const{buffered:E,bufferedIndex:k,objectMode:M}=A,ee=E.length-k;if(!ee)return;let te=k;if(A.bufferProcessing=!0,ee>1&&v._writev){A.pendingcb-=ee-1;const $=A.allNoop?re:I=>{for(let W=te;W<E.length;++W)E[W].callback(I)},K=A.allNoop&&te===0?E:t(E,te);K.allBuffers=A.allBuffers,z(v,A,!0,A.length,K,"",$),oe(A)}else{do{const{chunk:$,encoding:K,callback:I}=E[te];E[te++]=null;const W=M?1:$.length;z(v,A,!1,W,$,K,I)}while(te<E.length&&!A.writing);te===E.length?oe(A):te>256?(E.splice(0,te),A.bufferedIndex=0):A.bufferedIndex=te}A.bufferProcessing=!1}ne.prototype._write=function(v,A,E){if(this._writev)this._writev([{chunk:v,encoding:A}],E);else throw new R("_write()")},ne.prototype._writev=null,ne.prototype.end=function(v,A,E){const k=this._writableState;typeof v=="function"?(E=v,v=null,A=null):typeof A=="function"&&(E=A,A=null);let M;if(v!=null){const ee=ue(this,v,A);ee instanceof r&&(M=ee)}return k.corked&&(k.corked=1,this.uncork()),M||(!k.errored&&!k.ending?(k.ending=!0,F(this,k,!0),k.ended=!0):k.finished?M=new x("end"):k.destroyed&&(M=new U("end"))),typeof E=="function"&&(M||k.finished?e.nextTick(E,M):k[P].push(E)),this};function ve(v){return v.ending&&!v.destroyed&&v.constructed&&v.length===0&&!v.errored&&v.buffered.length===0&&!v.finished&&!v.writing&&!v.errorEmitted&&!v.closeEmitted}function ye(v,A){let E=!1;function k(M){if(E){se(v,M??S());return}if(E=!0,A.pendingcb--,M){const ee=A[P].splice(0);for(let te=0;te<ee.length;te++)ee[te](M);se(v,M,A.sync)}else ve(A)&&(A.prefinished=!0,v.emit("prefinish"),A.pendingcb++,e.nextTick(X,v,A))}A.sync=!0,A.pendingcb++;try{v._final(k)}catch(M){k(M)}A.sync=!1}function q(v,A){!A.prefinished&&!A.finalCalled&&(typeof v._final=="function"&&!A.destroyed?(A.finalCalled=!0,ye(v,A)):(A.prefinished=!0,v.emit("prefinish")))}function F(v,A,E){ve(A)&&(q(v,A),A.pendingcb===0&&(E?(A.pendingcb++,e.nextTick((k,M)=>{ve(M)?X(k,M):M.pendingcb--},v,A)):ve(A)&&(A.pendingcb++,X(v,A))))}function X(v,A){A.pendingcb--,A.finished=!0;const E=A[P].splice(0);for(let k=0;k<E.length;k++)E[k]();if(v.emit("finish"),A.autoDestroy){const k=v._readableState;(!k||k.autoDestroy&&(k.endEmitted||k.readable===!1))&&v.destroy()}}i(ne.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(v){this._writableState&&(this._writableState.destroyed=v)}},writable:{__proto__:null,get(){const v=this._writableState;return!!v&&v.writable!==!1&&!v.destroyed&&!v.errored&&!v.ending&&!v.ended},set(v){this._writableState&&(this._writableState.writable=!!v)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){const v=this._writableState;return v?!v.destroyed&&!v.ending&&v.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});const he=m.destroy;ne.prototype.destroy=function(v,A){const E=this._writableState;return!E.destroyed&&(E.bufferedIndex<E.buffered.length||E[P].length)&&e.nextTick(ie,E),he.call(this,v,A),this},ne.prototype._undestroy=m.undestroy,ne.prototype._destroy=function(v,A){A(v)},ne.prototype[c.captureRejectionSymbol]=function(v){this.destroy(v)};let ce;function Z(){return ce===void 0&&(ce={}),ce}return ne.fromWeb=function(v,A){return Z().newStreamWritableFromWritableStream(v,A)},ne.toWeb=function(v){return Z().newWritableStreamFromStreamWritable(v)},wc}var vc,p0;function o2(){if(p0)return vc;p0=1;const e=Ui,t=Gt,{isReadable:r,isWritable:n,isIterable:o,isNodeStream:i,isReadableNodeStream:s,isWritableNodeStream:a,isDuplexNodeStream:l,isReadableStream:u,isWritableStream:c}=_n,d=Hn,{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:m,ERR_INVALID_RETURN_VALUE:_}}=jt,{destroyer:b}=qo,T=an(),N=yu(),R=hp(),{createDeferredPromise:S}=Nt,D=r1,U=globalThis.Blob||t.Blob,x=typeof U<"u"?function(B){return B instanceof U}:function(B){return!1},L=globalThis.AbortController||ks().AbortController,{FunctionPrototypeCall:j}=ot;class Y extends T{constructor(B){super(B),(B==null?void 0:B.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(B==null?void 0:B.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}}vc=function P(B,oe){if(l(B))return B;if(s(B))return re({readable:B});if(a(B))return re({writable:B});if(i(B))return re({writable:!1,readable:!1});if(u(B))return re({readable:N.fromWeb(B)});if(c(B))return re({writable:R.fromWeb(B)});if(typeof B=="function"){const{value:ue,write:ae,final:z,destroy:pe}=se(B);if(o(ue))return D(Y,ue,{objectMode:!0,write:ae,final:z,destroy:pe});const de=ue==null?void 0:ue.then;if(typeof de=="function"){let ge;const O=j(de,ue,ie=>{if(ie!=null)throw new _("nully","body",ie)},ie=>{b(ge,ie)});return ge=new Y({objectMode:!0,readable:!1,write:ae,final(ie){z(async()=>{try{await O,e.nextTick(ie,null)}catch(me){e.nextTick(ie,me)}})},destroy:pe})}throw new _("Iterable, AsyncIterable or AsyncFunction",oe,ue)}if(x(B))return P(B.arrayBuffer());if(o(B))return D(Y,B,{objectMode:!0,writable:!1});if(u(B==null?void 0:B.readable)&&c(B==null?void 0:B.writable))return Y.fromWeb(B);if(typeof(B==null?void 0:B.writable)=="object"||typeof(B==null?void 0:B.readable)=="object"){const ue=B!=null&&B.readable?s(B==null?void 0:B.readable)?B==null?void 0:B.readable:P(B.readable):void 0,ae=B!=null&&B.writable?a(B==null?void 0:B.writable)?B==null?void 0:B.writable:P(B.writable):void 0;return re({readable:ue,writable:ae})}const ne=B==null?void 0:B.then;if(typeof ne=="function"){let ue;return j(ne,B,ae=>{ae!=null&&ue.push(ae),ue.push(null)},ae=>{b(ue,ae)}),ue=new Y({objectMode:!0,writable:!1,read(){}})}throw new m(oe,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],B)};function se(P){let{promise:B,resolve:oe}=S();const ne=new L,ue=ne.signal;return{value:P(async function*(){for(;;){const z=B;B=null;const{chunk:pe,done:de,cb:ge}=await z;if(e.nextTick(ge),de)return;if(ue.aborted)throw new p(void 0,{cause:ue.reason});({promise:B,resolve:oe}=S()),yield pe}}(),{signal:ue}),write(z,pe,de){const ge=oe;oe=null,ge({chunk:z,done:!1,cb:de})},final(z){const pe=oe;oe=null,pe({done:!0,cb:z})},destroy(z,pe){ne.abort(),pe(z)}}}function re(P){const B=P.readable&&typeof P.readable.read!="function"?N.wrap(P.readable):P.readable,oe=P.writable;let ne=!!r(B),ue=!!n(oe),ae,z,pe,de,ge;function O(ie){const me=de;de=null,me?me(ie):ie&&ge.destroy(ie)}return ge=new Y({readableObjectMode:!!(B!=null&&B.readableObjectMode),writableObjectMode:!!(oe!=null&&oe.writableObjectMode),readable:ne,writable:ue}),ue&&(d(oe,ie=>{ue=!1,ie&&b(B,ie),O(ie)}),ge._write=function(ie,me,ve){oe.write(ie,me)?ve():ae=ve},ge._final=function(ie){oe.end(),z=ie},oe.on("drain",function(){if(ae){const ie=ae;ae=null,ie()}}),oe.on("finish",function(){if(z){const ie=z;z=null,ie()}})),ne&&(d(B,ie=>{ne=!1,ie&&b(B,ie),O(ie)}),B.on("readable",function(){if(pe){const ie=pe;pe=null,ie()}}),B.on("end",function(){ge.push(null)}),ge._read=function(){for(;;){const ie=B.read();if(ie===null){pe=ge._read;return}if(!ge.push(ie))return}}),ge._destroy=function(ie,me){!ie&&de!==null&&(ie=new p),pe=null,ae=null,z=null,de===null?me(ie):(de=me,b(oe,ie),b(B,ie))},ge}return vc}var Ec,g0;function an(){if(g0)return Ec;g0=1;const{ObjectDefineProperties:e,ObjectGetOwnPropertyDescriptor:t,ObjectKeys:r,ObjectSetPrototypeOf:n}=ot;Ec=s;const o=yu(),i=hp();n(s.prototype,o.prototype),n(s,o);{const c=r(i.prototype);for(let d=0;d<c.length;d++){const p=c[d];s.prototype[p]||(s.prototype[p]=i.prototype[p])}}function s(c){if(!(this instanceof s))return new s(c);o.call(this,c),i.call(this,c),c?(this.allowHalfOpen=c.allowHalfOpen!==!1,c.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),c.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}e(s.prototype,{writable:{__proto__:null,...t(i.prototype,"writable")},writableHighWaterMark:{__proto__:null,...t(i.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...t(i.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...t(i.prototype,"writableBuffer")},writableLength:{__proto__:null,...t(i.prototype,"writableLength")},writableFinished:{__proto__:null,...t(i.prototype,"writableFinished")},writableCorked:{__proto__:null,...t(i.prototype,"writableCorked")},writableEnded:{__proto__:null,...t(i.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...t(i.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(c){this._readableState&&this._writableState&&(this._readableState.destroyed=c,this._writableState.destroyed=c)}}});let a;function l(){return a===void 0&&(a={}),a}s.fromWeb=function(c,d){return l().newStreamDuplexFromReadableWritablePair(c,d)},s.toWeb=function(c){return l().newReadableWritablePairFromDuplex(c)};let u;return s.from=function(c){return u||(u=o2()),u(c,"body")},Ec}const{ObjectSetPrototypeOf:n1,Symbol:s2}=ot;var i1=ln;const{ERR_METHOD_NOT_IMPLEMENTED:a2}=jt.codes,dp=an(),{getHighWaterMark:l2}=mu;n1(ln.prototype,dp.prototype);n1(ln,dp);const Ts=s2("kCallback");function ln(e){if(!(this instanceof ln))return new ln(e);const t=e?l2(this,e,"readableHighWaterMark",!0):null;t===0&&(e={...e,highWaterMark:null,readableHighWaterMark:t,writableHighWaterMark:e.writableHighWaterMark||0}),dp.call(this,e),this._readableState.sync=!1,this[Ts]=null,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",u2)}function Wh(e){typeof this._flush=="function"&&!this.destroyed?this._flush((t,r)=>{if(t){e?e(t):this.destroy(t);return}r!=null&&this.push(r),this.push(null),e&&e()}):(this.push(null),e&&e())}function u2(){this._final!==Wh&&Wh.call(this)}ln.prototype._final=Wh;ln.prototype._transform=function(e,t,r){throw new a2("_transform()")};ln.prototype._write=function(e,t,r){const n=this._readableState,o=this._writableState,i=n.length;this._transform(e,t,(s,a)=>{if(s){r(s);return}a!=null&&this.push(a),o.ended||i===n.length||n.length<n.highWaterMark?r():this[Ts]=r})};ln.prototype._read=function(){if(this[Ts]){const e=this[Ts];this[Ts]=null,e()}};const{ObjectSetPrototypeOf:o1}=ot;var s1=Oo;const pp=i1;o1(Oo.prototype,pp.prototype);o1(Oo,pp);function Oo(e){if(!(this instanceof Oo))return new Oo(e);pp.call(this,e)}Oo.prototype._transform=function(e,t,r){r(null,e)};const fs=Ui,{ArrayIsArray:c2,Promise:f2,SymbolAsyncIterator:h2,SymbolDispose:d2}=ot,ml=Hn,{once:p2}=Nt,g2=qo,m0=an(),{aggregateTwoErrors:m2,codes:{ERR_INVALID_ARG_TYPE:Hh,ERR_INVALID_RETURN_VALUE:Sc,ERR_MISSING_ARGS:y2,ERR_STREAM_DESTROYED:_2,ERR_STREAM_PREMATURE_CLOSE:b2},AbortError:w2}=jt,{validateFunction:v2,validateAbortSignal:E2}=Hs,{isIterable:ni,isReadable:Ac,isReadableNodeStream:Va,isNodeStream:y0,isTransformStream:ro,isWebStream:S2,isReadableStream:Tc,isReadableFinished:A2}=_n,T2=globalThis.AbortController||ks().AbortController;let xc,Ic,Cc;function _0(e,t,r){let n=!1;e.on("close",()=>{n=!0});const o=ml(e,{readable:t,writable:r},i=>{n=!i});return{destroy:i=>{n||(n=!0,g2.destroyer(e,i||new _2("pipe")))},cleanup:o}}function x2(e){return v2(e[e.length-1],"streams[stream.length - 1]"),e.pop()}function Rc(e){if(ni(e))return e;if(Va(e))return I2(e);throw new Hh("val",["Readable","Iterable","AsyncIterable"],e)}async function*I2(e){Ic||(Ic=yu()),yield*Ic.prototype[h2].call(e)}async function ya(e,t,r,{end:n}){let o,i=null;const s=u=>{if(u&&(o=u),i){const c=i;i=null,c()}},a=()=>new f2((u,c)=>{o?c(o):i=()=>{o?c(o):u()}});t.on("drain",s);const l=ml(t,{readable:!1},s);try{t.writableNeedDrain&&await a();for await(const u of e)t.write(u)||await a();n&&(t.end(),await a()),r()}catch(u){r(o!==u?m2(o,u):u)}finally{l(),t.off("drain",s)}}async function Oc(e,t,r,{end:n}){ro(t)&&(t=t.writable);const o=t.getWriter();try{for await(const i of e)await o.ready,o.write(i).catch(()=>{});await o.ready,n&&await o.close(),r()}catch(i){try{await o.abort(i),r(i)}catch(s){r(s)}}}function C2(...e){return a1(e,p2(x2(e)))}function a1(e,t,r){if(e.length===1&&c2(e[0])&&(e=e[0]),e.length<2)throw new y2("streams");const n=new T2,o=n.signal,i=r==null?void 0:r.signal,s=[];E2(i,"options.signal");function a(){_(new w2)}Cc=Cc||Nt.addAbortListener;let l;i&&(l=Cc(i,a));let u,c;const d=[];let p=0;function m(R){_(R,--p===0)}function _(R,S){var D;if(R&&(!u||u.code==="ERR_STREAM_PREMATURE_CLOSE")&&(u=R),!(!u&&!S)){for(;d.length;)d.shift()(u);(D=l)===null||D===void 0||D[d2](),n.abort(),S&&(u||s.forEach(U=>U()),fs.nextTick(t,u,c))}}let b;for(let R=0;R<e.length;R++){const S=e[R],D=R<e.length-1,U=R>0,x=D||(r==null?void 0:r.end)!==!1,L=R===e.length-1;if(y0(S)){let j=function(Y){Y&&Y.name!=="AbortError"&&Y.code!=="ERR_STREAM_PREMATURE_CLOSE"&&m(Y)};if(x){const{destroy:Y,cleanup:se}=_0(S,D,U);d.push(Y),Ac(S)&&L&&s.push(se)}S.on("error",j),Ac(S)&&L&&s.push(()=>{S.removeListener("error",j)})}if(R===0)if(typeof S=="function"){if(b=S({signal:o}),!ni(b))throw new Sc("Iterable, AsyncIterable or Stream","source",b)}else ni(S)||Va(S)||ro(S)?b=S:b=m0.from(S);else if(typeof S=="function"){if(ro(b)){var T;b=Rc((T=b)===null||T===void 0?void 0:T.readable)}else b=Rc(b);if(b=S(b,{signal:o}),D){if(!ni(b,!0))throw new Sc("AsyncIterable",`transform[${R-1}]`,b)}else{var N;xc||(xc=s1);const j=new xc({objectMode:!0}),Y=(N=b)===null||N===void 0?void 0:N.then;if(typeof Y=="function")p++,Y.call(b,P=>{c=P,P!=null&&j.write(P),x&&j.end(),fs.nextTick(m)},P=>{j.destroy(P),fs.nextTick(m,P)});else if(ni(b,!0))p++,ya(b,j,m,{end:x});else if(Tc(b)||ro(b)){const P=b.readable||b;p++,ya(P,j,m,{end:x})}else throw new Sc("AsyncIterable or Promise","destination",b);b=j;const{destroy:se,cleanup:re}=_0(b,!1,!0);d.push(se),L&&s.push(re)}}else if(y0(S)){if(Va(b)){p+=2;const j=R2(b,S,m,{end:x});Ac(S)&&L&&s.push(j)}else if(ro(b)||Tc(b)){const j=b.readable||b;p++,ya(j,S,m,{end:x})}else if(ni(b))p++,ya(b,S,m,{end:x});else throw new Hh("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],b);b=S}else if(S2(S)){if(Va(b))p++,Oc(Rc(b),S,m,{end:x});else if(Tc(b)||ni(b))p++,Oc(b,S,m,{end:x});else if(ro(b))p++,Oc(b.readable,S,m,{end:x});else throw new Hh("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],b);b=S}else b=m0.from(S)}return(o!=null&&o.aborted||i!=null&&i.aborted)&&fs.nextTick(a),b}function R2(e,t,r,{end:n}){let o=!1;if(t.on("close",()=>{o||r(new b2)}),e.pipe(t,{end:!1}),n){let i=function(){o=!0,t.end()};A2(e)?fs.nextTick(i):e.once("end",i)}else r();return ml(e,{readable:!0,writable:!1},i=>{const s=e._readableState;i&&i.code==="ERR_STREAM_PREMATURE_CLOSE"&&s&&s.ended&&!s.errored&&!s.errorEmitted?e.once("end",r).once("error",r):r(i)}),ml(t,{readable:!1,writable:!0},r)}var gp={pipelineImpl:a1,pipeline:C2};const{pipeline:O2}=gp,_a=an(),{destroyer:k2}=qo,{isNodeStream:ba,isReadable:b0,isWritable:w0,isWebStream:kc,isTransformStream:ei,isWritableStream:v0,isReadableStream:E0}=_n,{AbortError:N2,codes:{ERR_INVALID_ARG_VALUE:S0,ERR_MISSING_ARGS:M2}}=jt,P2=Hn;var l1=function(...t){if(t.length===0)throw new M2("streams");if(t.length===1)return _a.from(t[0]);const r=[...t];if(typeof t[0]=="function"&&(t[0]=_a.from(t[0])),typeof t[t.length-1]=="function"){const m=t.length-1;t[m]=_a.from(t[m])}for(let m=0;m<t.length;++m)if(!(!ba(t[m])&&!kc(t[m]))){if(m<t.length-1&&!(b0(t[m])||E0(t[m])||ei(t[m])))throw new S0(`streams[${m}]`,r[m],"must be readable");if(m>0&&!(w0(t[m])||v0(t[m])||ei(t[m])))throw new S0(`streams[${m}]`,r[m],"must be writable")}let n,o,i,s,a;function l(m){const _=s;s=null,_?_(m):m?a.destroy(m):!p&&!d&&a.destroy()}const u=t[0],c=O2(t,l),d=!!(w0(u)||v0(u)||ei(u)),p=!!(b0(c)||E0(c)||ei(c));if(a=new _a({writableObjectMode:!!(u!=null&&u.writableObjectMode),readableObjectMode:!!(c!=null&&c.readableObjectMode),writable:d,readable:p}),d){if(ba(u))a._write=function(_,b,T){u.write(_,b)?T():n=T},a._final=function(_){u.end(),o=_},u.on("drain",function(){if(n){const _=n;n=null,_()}});else if(kc(u)){const b=(ei(u)?u.writable:u).getWriter();a._write=async function(T,N,R){try{await b.ready,b.write(T).catch(()=>{}),R()}catch(S){R(S)}},a._final=async function(T){try{await b.ready,b.close().catch(()=>{}),o=T}catch(N){T(N)}}}const m=ei(c)?c.readable:c;P2(m,()=>{if(o){const _=o;o=null,_()}})}if(p){if(ba(c))c.on("readable",function(){if(i){const m=i;i=null,m()}}),c.on("end",function(){a.push(null)}),a._read=function(){for(;;){const m=c.read();if(m===null){i=a._read;return}if(!a.push(m))return}};else if(kc(c)){const _=(ei(c)?c.readable:c).getReader();a._read=async function(){for(;;)try{const{value:b,done:T}=await _.read();if(!a.push(b))return;if(T){a.push(null);return}}catch{return}}}}return a._destroy=function(m,_){!m&&s!==null&&(m=new N2),i=null,n=null,o=null,s===null?_(m):(s=_,ba(c)&&k2(c,m))},a};const L2=globalThis.AbortController||ks().AbortController,{codes:{ERR_INVALID_ARG_VALUE:B2,ERR_INVALID_ARG_TYPE:qs,ERR_MISSING_ARGS:D2,ERR_OUT_OF_RANGE:$2},AbortError:Br}=jt,{validateAbortSignal:ji,validateInteger:A0,validateObject:Wi}=Hs,U2=ot.Symbol("kWeak"),F2=ot.Symbol("kResistStopPropagation"),{finished:j2}=Hn,W2=l1,{addAbortSignalNoValidate:H2}=gu,{isWritable:V2,isNodeStream:q2}=_n,{deprecate:K2}=Nt,{ArrayPrototypePush:Y2,Boolean:z2,MathFloor:T0,Number:G2,NumberIsNaN:Q2,Promise:x0,PromiseReject:I0,PromiseResolve:X2,PromisePrototypeThen:C0,Symbol:u1}=ot,yl=u1("kEmpty"),R0=u1("kEof");function J2(e,t){if(t!=null&&Wi(t,"options"),(t==null?void 0:t.signal)!=null&&ji(t.signal,"options.signal"),q2(e)&&!V2(e))throw new B2("stream",e,"must be writable");const r=W2(this,e);return t!=null&&t.signal&&H2(t.signal,r),r}function _u(e,t){if(typeof e!="function")throw new qs("fn",["Function","AsyncFunction"],e);t!=null&&Wi(t,"options"),(t==null?void 0:t.signal)!=null&&ji(t.signal,"options.signal");let r=1;(t==null?void 0:t.concurrency)!=null&&(r=T0(t.concurrency));let n=r-1;return(t==null?void 0:t.highWaterMark)!=null&&(n=T0(t.highWaterMark)),A0(r,"options.concurrency",1),A0(n,"options.highWaterMark",0),n+=r,(async function*(){const i=Nt.AbortSignalAny([t==null?void 0:t.signal].filter(z2)),s=this,a=[],l={signal:i};let u,c,d=!1,p=0;function m(){d=!0,_()}function _(){p-=1,b()}function b(){c&&!d&&p<r&&a.length<n&&(c(),c=null)}async function T(){try{for await(let N of s){if(d)return;if(i.aborted)throw new Br;try{if(N=e(N,l),N===yl)continue;N=X2(N)}catch(R){N=I0(R)}p+=1,C0(N,_,m),a.push(N),u&&(u(),u=null),!d&&(a.length>=n||p>=r)&&await new x0(R=>{c=R})}a.push(R0)}catch(N){const R=I0(N);C0(R,_,m),a.push(R)}finally{d=!0,u&&(u(),u=null)}}T();try{for(;;){for(;a.length>0;){const N=await a[0];if(N===R0)return;if(i.aborted)throw new Br;N!==yl&&(yield N),a.shift(),b()}await new x0(N=>{u=N})}}finally{d=!0,c&&(c(),c=null)}}).call(this)}function Z2(e=void 0){return e!=null&&Wi(e,"options"),(e==null?void 0:e.signal)!=null&&ji(e.signal,"options.signal"),(async function*(){let r=0;for await(const o of this){var n;if(e!=null&&(n=e.signal)!==null&&n!==void 0&&n.aborted)throw new Br({cause:e.signal.reason});yield[r++,o]}}).call(this)}async function c1(e,t=void 0){for await(const r of mp.call(this,e,t))return!0;return!1}async function eP(e,t=void 0){if(typeof e!="function")throw new qs("fn",["Function","AsyncFunction"],e);return!await c1.call(this,async(...r)=>!await e(...r),t)}async function tP(e,t){for await(const r of mp.call(this,e,t))return r}async function rP(e,t){if(typeof e!="function")throw new qs("fn",["Function","AsyncFunction"],e);async function r(n,o){return await e(n,o),yl}for await(const n of _u.call(this,r,t));}function mp(e,t){if(typeof e!="function")throw new qs("fn",["Function","AsyncFunction"],e);async function r(n,o){return await e(n,o)?n:yl}return _u.call(this,r,t)}class nP extends D2{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}}async function iP(e,t,r){var n;if(typeof e!="function")throw new qs("reducer",["Function","AsyncFunction"],e);r!=null&&Wi(r,"options"),(r==null?void 0:r.signal)!=null&&ji(r.signal,"options.signal");let o=arguments.length>1;if(r!=null&&(n=r.signal)!==null&&n!==void 0&&n.aborted){const u=new Br(void 0,{cause:r.signal.reason});throw this.once("error",()=>{}),await j2(this.destroy(u)),u}const i=new L2,s=i.signal;if(r!=null&&r.signal){const u={once:!0,[U2]:this,[F2]:!0};r.signal.addEventListener("abort",()=>i.abort(),u)}let a=!1;try{for await(const u of this){var l;if(a=!0,r!=null&&(l=r.signal)!==null&&l!==void 0&&l.aborted)throw new Br;o?t=await e(t,u,{signal:s}):(t=u,o=!0)}if(!a&&!o)throw new nP}finally{i.abort()}return t}async function oP(e){e!=null&&Wi(e,"options"),(e==null?void 0:e.signal)!=null&&ji(e.signal,"options.signal");const t=[];for await(const n of this){var r;if(e!=null&&(r=e.signal)!==null&&r!==void 0&&r.aborted)throw new Br(void 0,{cause:e.signal.reason});Y2(t,n)}return t}function sP(e,t){const r=_u.call(this,e,t);return(async function*(){for await(const o of r)yield*o}).call(this)}function f1(e){if(e=G2(e),Q2(e))return 0;if(e<0)throw new $2("number",">= 0",e);return e}function aP(e,t=void 0){return t!=null&&Wi(t,"options"),(t==null?void 0:t.signal)!=null&&ji(t.signal,"options.signal"),e=f1(e),(async function*(){var n;if(t!=null&&(n=t.signal)!==null&&n!==void 0&&n.aborted)throw new Br;for await(const i of this){var o;if(t!=null&&(o=t.signal)!==null&&o!==void 0&&o.aborted)throw new Br;e--<=0&&(yield i)}}).call(this)}function lP(e,t=void 0){return t!=null&&Wi(t,"options"),(t==null?void 0:t.signal)!=null&&ji(t.signal,"options.signal"),e=f1(e),(async function*(){var n;if(t!=null&&(n=t.signal)!==null&&n!==void 0&&n.aborted)throw new Br;for await(const i of this){var o;if(t!=null&&(o=t.signal)!==null&&o!==void 0&&o.aborted)throw new Br;if(e-- >0&&(yield i),e<=0)return}}).call(this)}op.streamReturningOperators={asIndexedPairs:K2(Z2,"readable.asIndexedPairs will be removed in a future version."),drop:aP,filter:mp,flatMap:sP,map:_u,take:lP,compose:J2};op.promiseReturningOperators={every:eP,forEach:rP,reduce:iP,toArray:oP,some:c1,find:tP};var Nc,O0;function h1(){if(O0)return Nc;O0=1;const{ArrayPrototypePop:e,Promise:t}=ot,{isIterable:r,isNodeStream:n,isWebStream:o}=_n,{pipelineImpl:i}=gp,{finished:s}=Hn;d1();function a(...l){return new t((u,c)=>{let d,p;const m=l[l.length-1];if(m&&typeof m=="object"&&!n(m)&&!r(m)&&!o(m)){const _=e(l);d=_.signal,p=_.end}i(l,(_,b)=>{_?c(_):u(b)},{signal:d,end:p})})}return Nc={finished:s,pipeline:a},Nc}var k0;function d1(){if(k0)return dc.exports;k0=1;const{Buffer:e}=Gt,{ObjectDefineProperty:t,ObjectKeys:r,ReflectApply:n}=ot,{promisify:{custom:o}}=Nt,{streamReturningOperators:i,promiseReturningOperators:s}=op,{codes:{ERR_ILLEGAL_CONSTRUCTOR:a}}=jt,l=l1,{setDefaultHighWaterMark:u,getDefaultHighWaterMark:c}=mu,{pipeline:d}=gp,{destroyer:p}=qo,m=Hn,_=h1(),b=_n,T=dc.exports=cp.Stream;T.isDestroyed=b.isDestroyed,T.isDisturbed=b.isDisturbed,T.isErrored=b.isErrored,T.isReadable=b.isReadable,T.isWritable=b.isWritable,T.Readable=yu();for(const R of r(i)){let D=function(...U){if(new.target)throw a();return T.Readable.from(n(S,this,U))};const S=i[R];t(D,"name",{__proto__:null,value:S.name}),t(D,"length",{__proto__:null,value:S.length}),t(T.Readable.prototype,R,{__proto__:null,value:D,enumerable:!1,configurable:!0,writable:!0})}for(const R of r(s)){let D=function(...U){if(new.target)throw a();return n(S,this,U)};const S=s[R];t(D,"name",{__proto__:null,value:S.name}),t(D,"length",{__proto__:null,value:S.length}),t(T.Readable.prototype,R,{__proto__:null,value:D,enumerable:!1,configurable:!0,writable:!0})}T.Writable=hp(),T.Duplex=an(),T.Transform=i1,T.PassThrough=s1,T.pipeline=d;const{addAbortSignal:N}=gu;return T.addAbortSignal=N,T.finished=m,T.destroy=p,T.compose=l,T.setDefaultHighWaterMark=u,T.getDefaultHighWaterMark=c,t(T,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return _}}),t(d,o,{__proto__:null,enumerable:!0,get(){return _.pipeline}}),t(m,o,{__proto__:null,enumerable:!0,get(){return _.finished}}),T.Stream=T,T._isUint8Array=function(S){return S instanceof Uint8Array},T._uint8ArrayToBuffer=function(S){return e.from(S.buffer,S.byteOffset,S.byteLength)},dc.exports}(function(e){const t=d1(),r=h1(),n=t.Readable.destroy;e.exports=t.Readable,e.exports._uint8ArrayToBuffer=t._uint8ArrayToBuffer,e.exports._isUint8Array=t._isUint8Array,e.exports.isDisturbed=t.isDisturbed,e.exports.isErrored=t.isErrored,e.exports.isReadable=t.isReadable,e.exports.Readable=t.Readable,e.exports.Writable=t.Writable,e.exports.Duplex=t.Duplex,e.exports.Transform=t.Transform,e.exports.PassThrough=t.PassThrough,e.exports.addAbortSignal=t.addAbortSignal,e.exports.finished=t.finished,e.exports.destroy=t.destroy,e.exports.destroy=n,e.exports.pipeline=t.pipeline,e.exports.compose=t.compose,Object.defineProperty(t,"promises",{configurable:!0,enumerable:!0,get(){return r}}),e.exports.Stream=t.Stream,e.exports.default=e.exports})(uv);var uP=uv.exports,Vh={exports:{}};typeof Object.create=="function"?Vh.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Vh.exports=function(t,r){if(r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t}};var cP=Vh.exports;const{Buffer:dr}=Gt,p1=Symbol.for("BufferList");function Ge(e){if(!(this instanceof Ge))return new Ge(e);Ge._init.call(this,e)}Ge._init=function(t){Object.defineProperty(this,p1,{value:!0}),this._bufs=[],this.length=0,t&&this.append(t)};Ge.prototype._new=function(t){return new Ge(t)};Ge.prototype._offset=function(t){if(t===0)return[0,0];let r=0;for(let n=0;n<this._bufs.length;n++){const o=r+this._bufs[n].length;if(t<o||n===this._bufs.length-1)return[n,t-r];r=o}};Ge.prototype._reverseOffset=function(e){const t=e[0];let r=e[1];for(let n=0;n<t;n++)r+=this._bufs[n].length;return r};Ge.prototype.get=function(t){if(t>this.length||t<0)return;const r=this._offset(t);return this._bufs[r[0]][r[1]]};Ge.prototype.slice=function(t,r){return typeof t=="number"&&t<0&&(t+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,t,r)};Ge.prototype.copy=function(t,r,n,o){if((typeof n!="number"||n<0)&&(n=0),(typeof o!="number"||o>this.length)&&(o=this.length),n>=this.length||o<=0)return t||dr.alloc(0);const i=!!t,s=this._offset(n),a=o-n;let l=a,u=i&&r||0,c=s[1];if(n===0&&o===this.length){if(!i)return this._bufs.length===1?this._bufs[0]:dr.concat(this._bufs,this.length);for(let d=0;d<this._bufs.length;d++)this._bufs[d].copy(t,u),u+=this._bufs[d].length;return t}if(l<=this._bufs[s[0]].length-c)return i?this._bufs[s[0]].copy(t,r,c,c+l):this._bufs[s[0]].slice(c,c+l);i||(t=dr.allocUnsafe(a));for(let d=s[0];d<this._bufs.length;d++){const p=this._bufs[d].length-c;if(l>p)this._bufs[d].copy(t,u,c),u+=p;else{this._bufs[d].copy(t,u,c,c+l),u+=p;break}l-=p,c&&(c=0)}return t.length>u?t.slice(0,u):t};Ge.prototype.shallowSlice=function(t,r){if(t=t||0,r=typeof r!="number"?this.length:r,t<0&&(t+=this.length),r<0&&(r+=this.length),t===r)return this._new();const n=this._offset(t),o=this._offset(r),i=this._bufs.slice(n[0],o[0]+1);return o[1]===0?i.pop():i[i.length-1]=i[i.length-1].slice(0,o[1]),n[1]!==0&&(i[0]=i[0].slice(n[1])),this._new(i)};Ge.prototype.toString=function(t,r,n){return this.slice(r,n).toString(t)};Ge.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};Ge.prototype.duplicate=function(){const t=this._new();for(let r=0;r<this._bufs.length;r++)t.append(this._bufs[r]);return t};Ge.prototype.append=function(t){if(t==null)return this;if(t.buffer)this._appendBuffer(dr.from(t.buffer,t.byteOffset,t.byteLength));else if(Array.isArray(t))for(let r=0;r<t.length;r++)this.append(t[r]);else if(this._isBufferList(t))for(let r=0;r<t._bufs.length;r++)this.append(t._bufs[r]);else typeof t=="number"&&(t=t.toString()),this._appendBuffer(dr.from(t));return this};Ge.prototype._appendBuffer=function(t){this._bufs.push(t),this.length+=t.length};Ge.prototype.indexOf=function(e,t,r){if(r===void 0&&typeof t=="string"&&(r=t,t=void 0),typeof e=="function"||Array.isArray(e))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof e=="number"?e=dr.from([e]):typeof e=="string"?e=dr.from(e,r):this._isBufferList(e)?e=e.slice():Array.isArray(e.buffer)?e=dr.from(e.buffer,e.byteOffset,e.byteLength):dr.isBuffer(e)||(e=dr.from(e)),t=Number(t||0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;const n=this._offset(t);let o=n[0],i=n[1];for(;o<this._bufs.length;o++){const s=this._bufs[o];for(;i<s.length;)if(s.length-i>=e.length){const l=s.indexOf(e,i);if(l!==-1)return this._reverseOffset([o,l]);i=s.length-e.length+1}else{const l=this._reverseOffset([o,i]);if(this._match(l,e))return l;i++}i=0}return-1};Ge.prototype._match=function(e,t){if(this.length-e<t.length)return!1;for(let r=0;r<t.length;r++)if(this.get(e+r)!==t[r])return!1;return!0};(function(){const e={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(const t in e)(function(r){e[r]===null?Ge.prototype[r]=function(n,o){return this.slice(n,n+o)[r](0,o)}:Ge.prototype[r]=function(n=0){return this.slice(n,n+e[r])[r](0)}})(t)})();Ge.prototype._isBufferList=function(t){return t instanceof Ge||Ge.isBufferList(t)};Ge.isBufferList=function(t){return t!=null&&t[p1]};var fP=Ge;const yp=uP.Duplex,hP=cP,Ks=fP;function xt(e){if(!(this instanceof xt))return new xt(e);if(typeof e=="function"){this._callback=e;const t=(function(n){this._callback&&(this._callback(n),this._callback=null)}).bind(this);this.on("pipe",function(n){n.on("error",t)}),this.on("unpipe",function(n){n.removeListener("error",t)}),e=null}Ks._init.call(this,e),yp.call(this)}hP(xt,yp);Object.assign(xt.prototype,Ks.prototype);xt.prototype._new=function(t){return new xt(t)};xt.prototype._write=function(t,r,n){this._appendBuffer(t),typeof n=="function"&&n()};xt.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};xt.prototype.end=function(t){yp.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};xt.prototype._destroy=function(t,r){this._bufs.length=0,this.length=0,r(t)};xt.prototype._isBufferList=function(t){return t instanceof xt||t instanceof Ks||xt.isBufferList(t)};xt.isBufferList=Ks.isBufferList;rp.exports=xt;rp.exports.BufferListStream=xt;rp.exports.BufferList=Ks;var dP={exports:{}};(function(e){const t=e.exports,{Buffer:r}=Gt;t.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},t.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},t.requiredHeaderFlagsErrors={};for(const o in t.requiredHeaderFlags){const i=t.requiredHeaderFlags[o];t.requiredHeaderFlagsErrors[o]="Invalid header flag bits, must be 0x"+i.toString(16)+" for "+t.types[o]+" packet"}t.codes={};for(const o in t.types){const i=t.types[o];t.codes[i]=o}t.CMD_SHIFT=4,t.CMD_MASK=240,t.DUP_MASK=8,t.QOS_MASK=3,t.QOS_SHIFT=1,t.RETAIN_MASK=1,t.VARBYTEINT_MASK=127,t.VARBYTEINT_FIN_MASK=128,t.VARBYTEINT_MAX=268435455,t.SESSIONPRESENT_MASK=1,t.SESSIONPRESENT_HEADER=r.from([t.SESSIONPRESENT_MASK]),t.CONNACK_HEADER=r.from([t.codes.connack<<t.CMD_SHIFT]),t.USERNAME_MASK=128,t.PASSWORD_MASK=64,t.WILL_RETAIN_MASK=32,t.WILL_QOS_MASK=24,t.WILL_QOS_SHIFT=3,t.WILL_FLAG_MASK=4,t.CLEAN_SESSION_MASK=2,t.CONNECT_HEADER=r.from([t.codes.connect<<t.CMD_SHIFT]),t.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},t.propertiesCodes={};for(const o in t.properties){const i=t.properties[o];t.propertiesCodes[i]=o}t.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function n(o){return[0,1,2].map(i=>[0,1].map(s=>[0,1].map(a=>{const l=r.alloc(1);return l.writeUInt8(t.codes[o]<<t.CMD_SHIFT|(s?t.DUP_MASK:0)|i<<t.QOS_SHIFT|a,0,!0),l})))}t.PUBLISH_HEADER=n("publish"),t.SUBSCRIBE_HEADER=n("subscribe"),t.SUBSCRIBE_OPTIONS_QOS_MASK=3,t.SUBSCRIBE_OPTIONS_NL_MASK=1,t.SUBSCRIBE_OPTIONS_NL_SHIFT=2,t.SUBSCRIBE_OPTIONS_RAP_MASK=1,t.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,t.SUBSCRIBE_OPTIONS_RH_MASK=3,t.SUBSCRIBE_OPTIONS_RH_SHIFT=4,t.SUBSCRIBE_OPTIONS_RH=[0,16,32],t.SUBSCRIBE_OPTIONS_NL=4,t.SUBSCRIBE_OPTIONS_RAP=8,t.SUBSCRIBE_OPTIONS_QOS=[0,1,2],t.UNSUBSCRIBE_HEADER=n("unsubscribe"),t.ACKS={unsuback:n("unsuback"),puback:n("puback"),pubcomp:n("pubcomp"),pubrel:n("pubrel"),pubrec:n("pubrec")},t.SUBACK_HEADER=r.from([t.codes.suback<<t.CMD_SHIFT]),t.VERSION3=r.from([3]),t.VERSION4=r.from([4]),t.VERSION5=r.from([5]),t.VERSION131=r.from([131]),t.VERSION132=r.from([132]),t.QOS=[0,1,2].map(o=>r.from([o])),t.EMPTY={pingreq:r.from([t.codes.pingreq<<4,0]),pingresp:r.from([t.codes.pingresp<<4,0]),disconnect:r.from([t.codes.disconnect<<4,0])},t.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},t.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},t.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},t.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},t.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},t.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}})(dP);function g1(){throw new Error("setTimeout has not been defined")}function m1(){throw new Error("clearTimeout has not been defined")}var Tn=g1,xn=m1;typeof Ai.setTimeout=="function"&&(Tn=setTimeout);typeof Ai.clearTimeout=="function"&&(xn=clearTimeout);function y1(e){if(Tn===setTimeout)return setTimeout(e,0);if((Tn===g1||!Tn)&&setTimeout)return Tn=setTimeout,setTimeout(e,0);try{return Tn(e,0)}catch{try{return Tn.call(null,e,0)}catch{return Tn.call(this,e,0)}}}function pP(e){if(xn===clearTimeout)return clearTimeout(e);if((xn===m1||!xn)&&clearTimeout)return xn=clearTimeout,clearTimeout(e);try{return xn(e)}catch{try{return xn.call(null,e)}catch{return xn.call(this,e)}}}var Qr=[],_o=!1,pi,qa=-1;function gP(){!_o||!pi||(_o=!1,pi.length?Qr=pi.concat(Qr):qa=-1,Qr.length&&_1())}function _1(){if(!_o){var e=y1(gP);_o=!0;for(var t=Qr.length;t;){for(pi=Qr,Qr=[];++qa<t;)pi&&pi[qa].run();qa=-1,t=Qr.length}pi=null,_o=!1,pP(e)}}function mP(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Qr.push(new b1(e,t)),Qr.length===1&&!_o&&y1(_1)}function b1(e,t){this.fun=e,this.array=t}b1.prototype.run=function(){this.fun.apply(null,this.array)};var yP="browser",_P="browser",bP=!0,wP={},vP=[],EP="",SP={},AP={},TP={};function Hi(){}var xP=Hi,IP=Hi,CP=Hi,RP=Hi,OP=Hi,kP=Hi,NP=Hi;function MP(e){throw new Error("process.binding is not supported")}function PP(){return"/"}function LP(e){throw new Error("process.chdir is not supported")}function BP(){return 0}var no=Ai.performance||{},DP=no.now||no.mozNow||no.msNow||no.oNow||no.webkitNow||function(){return new Date().getTime()};function $P(e){var t=DP.call(no)*.001,r=Math.floor(t),n=Math.floor(t%1*1e9);return e&&(r=r-e[0],n=n-e[1],n<0&&(r--,n+=1e9)),[r,n]}var UP=new Date;function FP(){var e=new Date,t=e-UP;return t/1e3}var Vt={nextTick:mP,title:yP,browser:bP,env:wP,argv:vP,version:EP,versions:SP,on:xP,addListener:IP,once:CP,off:RP,removeListener:OP,removeAllListeners:kP,emit:NP,binding:MP,cwd:PP,chdir:LP,umask:BP,hrtime:$P,platform:_P,release:AP,config:TP,uptime:FP},qh={exports:{}},Mc,N0;function jP(){if(N0)return Mc;N0=1;var e=1e3,t=e*60,r=t*60,n=r*24,o=n*7,i=n*365.25;Mc=function(c,d){d=d||{};var p=typeof c;if(p==="string"&&c.length>0)return s(c);if(p==="number"&&isFinite(c))return d.long?l(c):a(c);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(c))};function s(c){if(c=String(c),!(c.length>100)){var d=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(c);if(d){var p=parseFloat(d[1]),m=(d[2]||"ms").toLowerCase();switch(m){case"years":case"year":case"yrs":case"yr":case"y":return p*i;case"weeks":case"week":case"w":return p*o;case"days":case"day":case"d":return p*n;case"hours":case"hour":case"hrs":case"hr":case"h":return p*r;case"minutes":case"minute":case"mins":case"min":case"m":return p*t;case"seconds":case"second":case"secs":case"sec":case"s":return p*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return p;default:return}}}}function a(c){var d=Math.abs(c);return d>=n?Math.round(c/n)+"d":d>=r?Math.round(c/r)+"h":d>=t?Math.round(c/t)+"m":d>=e?Math.round(c/e)+"s":c+"ms"}function l(c){var d=Math.abs(c);return d>=n?u(c,d,n,"day"):d>=r?u(c,d,r,"hour"):d>=t?u(c,d,t,"minute"):d>=e?u(c,d,e,"second"):c+" ms"}function u(c,d,p,m){var _=d>=p*1.5;return Math.round(c/p)+" "+m+(_?"s":"")}return Mc}function WP(e){r.debug=r,r.default=r,r.coerce=l,r.disable=i,r.enable=o,r.enabled=s,r.humanize=jP(),r.destroy=u,Object.keys(e).forEach(c=>{r[c]=e[c]}),r.names=[],r.skips=[],r.formatters={};function t(c){let d=0;for(let p=0;p<c.length;p++)d=(d<<5)-d+c.charCodeAt(p),d|=0;return r.colors[Math.abs(d)%r.colors.length]}r.selectColor=t;function r(c){let d,p=null,m,_;function b(...T){if(!b.enabled)return;const N=b,R=Number(new Date),S=R-(d||R);N.diff=S,N.prev=d,N.curr=R,d=R,T[0]=r.coerce(T[0]),typeof T[0]!="string"&&T.unshift("%O");let D=0;T[0]=T[0].replace(/%([a-zA-Z%])/g,(x,L)=>{if(x==="%%")return"%";D++;const j=r.formatters[L];if(typeof j=="function"){const Y=T[D];x=j.call(N,Y),T.splice(D,1),D--}return x}),r.formatArgs.call(N,T),(N.log||r.log).apply(N,T)}return b.namespace=c,b.useColors=r.useColors(),b.color=r.selectColor(c),b.extend=n,b.destroy=r.destroy,Object.defineProperty(b,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(m!==r.namespaces&&(m=r.namespaces,_=r.enabled(c)),_),set:T=>{p=T}}),typeof r.init=="function"&&r.init(b),b}function n(c,d){const p=r(this.namespace+(typeof d>"u"?":":d)+c);return p.log=this.log,p}function o(c){r.save(c),r.namespaces=c,r.names=[],r.skips=[];let d;const p=(typeof c=="string"?c:"").split(/[\s,]+/),m=p.length;for(d=0;d<m;d++)p[d]&&(c=p[d].replace(/\*/g,".*?"),c[0]==="-"?r.skips.push(new RegExp("^"+c.slice(1)+"$")):r.names.push(new RegExp("^"+c+"$")))}function i(){const c=[...r.names.map(a),...r.skips.map(a).map(d=>"-"+d)].join(",");return r.enable(""),c}function s(c){if(c[c.length-1]==="*")return!0;let d,p;for(d=0,p=r.skips.length;d<p;d++)if(r.skips[d].test(c))return!1;for(d=0,p=r.names.length;d<p;d++)if(r.names[d].test(c))return!0;return!1}function a(c){return c.toString().substring(2,c.toString().length-2).replace(/\.\*\?$/,"*")}function l(c){return c instanceof Error?c.stack||c.message:c}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}var HP=WP;(function(e,t){var r={};t.formatArgs=o,t.save=i,t.load=s,t.useColors=n,t.storage=a(),t.destroy=(()=>{let u=!1;return()=>{u||(u=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function o(u){if(u[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+u[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const c="color: "+this.color;u.splice(1,0,c,"color: inherit");let d=0,p=0;u[0].replace(/%[a-zA-Z%]/g,m=>{m!=="%%"&&(d++,m==="%c"&&(p=d))}),u.splice(p,0,c)}t.log=console.debug||console.log||(()=>{});function i(u){try{u?t.storage.setItem("debug",u):t.storage.removeItem("debug")}catch{}}function s(){let u;try{u=t.storage.getItem("debug")}catch{}return!u&&typeof Vt<"u"&&"env"in Vt&&(u=r.DEBUG),u}function a(){try{return localStorage}catch{}}e.exports=HP(t);const{formatters:l}=e.exports;l.j=function(u){try{return JSON.stringify(u)}catch(c){return"[UnexpectedJSONParseError]: "+c.message}}})(qh,qh.exports);var w1=qh.exports;w1("mqtt-packet:parser");const{Buffer:M0}=Gt;M0.isBuffer(M0.from([1,2]).subarray(0,1));var Kh={exports:{}};typeof Vt>"u"||!Vt.version||Vt.version.indexOf("v0.")===0||Vt.version.indexOf("v1.")===0&&Vt.version.indexOf("v1.8.")!==0?Kh.exports={nextTick:VP}:Kh.exports=Vt;function VP(e,t,r,n){if(typeof e!="function")throw new TypeError('"callback" argument must be a function');var o=arguments.length,i,s;switch(o){case 0:case 1:return Vt.nextTick(e);case 2:return Vt.nextTick(function(){e.call(null,t)});case 3:return Vt.nextTick(function(){e.call(null,t,r)});case 4:return Vt.nextTick(function(){e.call(null,t,r,n)});default:for(i=new Array(o-1),s=0;s<i.length;)i[s++]=arguments[s];return Vt.nextTick(function(){e.apply(null,i)})}}var qP=Kh.exports;const{Buffer:v1}=Gt;v1.allocUnsafe(0);v1.from([0]);qP.nextTick;w1("mqtt-packet:writeToStream");function Ka(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function KP(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function _p(e){let t,r,n;e.length!==2?(t=Ka,r=(a,l)=>Ka(e(a),l),n=(a,l)=>e(a)-l):(t=e===Ka||e===KP?e:YP,r=e,n=e);function o(a,l,u=0,c=a.length){if(u<c){if(t(l,l)!==0)return c;do{const d=u+c>>>1;r(a[d],l)<0?u=d+1:c=d}while(u<c)}return u}function i(a,l,u=0,c=a.length){if(u<c){if(t(l,l)!==0)return c;do{const d=u+c>>>1;r(a[d],l)<=0?u=d+1:c=d}while(u<c)}return u}function s(a,l,u=0,c=a.length){const d=o(a,l,u,c-1);return d>u&&n(a[d-1],l)>-n(a[d],l)?d-1:d}return{left:o,center:s,right:i}}function YP(){return 0}function zP(e){return e===null?NaN:+e}const GP=_p(Ka),QP=GP.right;_p(zP).center;function t3(e,t){let r,n;if(t===void 0)for(const o of e)o!=null&&(r===void 0?o>=o&&(r=n=o):(r>o&&(r=o),n<o&&(n=o)));else{let o=-1;for(let i of e)(i=t(i,++o,e))!=null&&(r===void 0?i>=i&&(r=n=i):(r>i&&(r=i),n<i&&(n=i)))}return[r,n]}class P0 extends Map{constructor(t,r=ZP){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(const[n,o]of t)this.set(n,o)}get(t){return super.get(L0(this,t))}has(t){return super.has(L0(this,t))}set(t,r){return super.set(XP(this,t),r)}delete(t){return super.delete(JP(this,t))}}function L0({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):r}function XP({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function JP({_intern:e,_key:t},r){const n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function ZP(e){return e!==null&&typeof e=="object"?e.valueOf():e}const eL=Math.sqrt(50),tL=Math.sqrt(10),rL=Math.sqrt(2);function _l(e,t,r){const n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),s=i>=eL?10:i>=tL?5:i>=rL?2:1;let a,l,u;return o<0?(u=Math.pow(10,-o)/s,a=Math.round(e*u),l=Math.round(t*u),a/u<e&&++a,l/u>t&&--l,u=-u):(u=Math.pow(10,o)*s,a=Math.round(e/u),l=Math.round(t/u),a*u<e&&++a,l*u>t&&--l),l<a&&.5<=r&&r<2?_l(e,t,r*2):[a,l,u]}function nL(e,t,r){if(t=+t,e=+e,r=+r,!(r>0))return[];if(e===t)return[e];const n=t<e,[o,i,s]=n?_l(t,e,r):_l(e,t,r);if(!(i>=o))return[];const a=i-o+1,l=new Array(a);if(n)if(s<0)for(let u=0;u<a;++u)l[u]=(i-u)/-s;else for(let u=0;u<a;++u)l[u]=(i-u)*s;else if(s<0)for(let u=0;u<a;++u)l[u]=(o+u)/-s;else for(let u=0;u<a;++u)l[u]=(o+u)*s;return l}function Yh(e,t,r){return t=+t,e=+e,r=+r,_l(e,t,r)[2]}function zh(e,t,r){t=+t,e=+e,r=+r;const n=t<e,o=n?Yh(t,e,r):Yh(e,t,r);return(n?-1:1)*(o<0?1/-o:o)}function r3(e,t){let r;if(t===void 0)for(const n of e)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r<o||r===void 0&&o>=o)&&(r=o)}return r}function iL(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,i=new Array(o);++n<o;)i[n]=e+n*r;return i}function oL(e){return e}var Ya=1,za=2,Gh=3,hs=4,B0=1e-6;function sL(e){return"translate("+e+",0)"}function aL(e){return"translate(0,"+e+")"}function lL(e){return t=>+e(t)}function uL(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function cL(){return!this.__axis}function bu(e,t){var r=[],n=null,o=null,i=6,s=6,a=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=e===Ya||e===hs?-1:1,c=e===hs||e===za?"x":"y",d=e===Ya||e===Gh?sL:aL;function p(m){var _=n??(t.ticks?t.ticks.apply(t,r):t.domain()),b=o??(t.tickFormat?t.tickFormat.apply(t,r):oL),T=Math.max(i,0)+a,N=t.range(),R=+N[0]+l,S=+N[N.length-1]+l,D=(t.bandwidth?uL:lL)(t.copy(),l),U=m.selection?m.selection():m,x=U.selectAll(".domain").data([null]),L=U.selectAll(".tick").data(_,t).order(),j=L.exit(),Y=L.enter().append("g").attr("class","tick"),se=L.select("line"),re=L.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),L=L.merge(Y),se=se.merge(Y.append("line").attr("stroke","currentColor").attr(c+"2",u*i)),re=re.merge(Y.append("text").attr("fill","currentColor").attr(c,u*T).attr("dy",e===Ya?"0em":e===Gh?"0.71em":"0.32em")),m!==U&&(x=x.transition(m),L=L.transition(m),se=se.transition(m),re=re.transition(m),j=j.transition(m).attr("opacity",B0).attr("transform",function(P){return isFinite(P=D(P))?d(P+l):this.getAttribute("transform")}),Y.attr("opacity",B0).attr("transform",function(P){var B=this.parentNode.__axis;return d((B&&isFinite(B=B(P))?B:D(P))+l)})),j.remove(),x.attr("d",e===hs||e===za?s?"M"+u*s+","+R+"H"+l+"V"+S+"H"+u*s:"M"+l+","+R+"V"+S:s?"M"+R+","+u*s+"V"+l+"H"+S+"V"+u*s:"M"+R+","+l+"H"+S),L.attr("opacity",1).attr("transform",function(P){return d(D(P)+l)}),se.attr(c+"2",u*i),re.attr(c,u*T).text(b),U.filter(cL).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===za?"start":e===hs?"end":"middle"),U.each(function(){this.__axis=D})}return p.scale=function(m){return arguments.length?(t=m,p):t},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(o=m,p):o},p.tickSize=function(m){return arguments.length?(i=s=+m,p):i},p.tickSizeInner=function(m){return arguments.length?(i=+m,p):i},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(a=+m,p):a},p.offset=function(m){return arguments.length?(l=+m,p):l},p}function n3(e){return bu(Ya,e)}function i3(e){return bu(za,e)}function o3(e){return bu(Gh,e)}function s3(e){return bu(hs,e)}var fL={value:()=>{}};function E1(){for(var e=0,t=arguments.length,r={},n;e<t;++e){if(!(n=arguments[e]+"")||n in r||/[\s.]/.test(n))throw new Error("illegal type: "+n);r[n]=[]}return new Ga(r)}function Ga(e){this._=e}function hL(e,t){return e.trim().split(/^|\s+/).map(function(r){var n="",o=r.indexOf(".");if(o>=0&&(n=r.slice(o+1),r=r.slice(0,o)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}Ga.prototype=E1.prototype={constructor:Ga,on:function(e,t){var r=this._,n=hL(e+"",r),o,i=-1,s=n.length;if(arguments.length<2){for(;++i<s;)if((o=(e=n[i]).type)&&(o=dL(r[o],e.name)))return o;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++i<s;)if(o=(e=n[i]).type)r[o]=D0(r[o],e.name,t);else if(t==null)for(o in r)r[o]=D0(r[o],e.name,null);return this},copy:function(){var e={},t=this._;for(var r in t)e[r]=t[r].slice();return new Ga(e)},call:function(e,t){if((o=arguments.length-2)>0)for(var r=new Array(o),n=0,o,i;n<o;++n)r[n]=arguments[n+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(i=this._[e],n=0,o=i.length;n<o;++n)i[n].value.apply(t,r)},apply:function(e,t,r){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var n=this._[e],o=0,i=n.length;o<i;++o)n[o].value.apply(t,r)}};function dL(e,t){for(var r=0,n=e.length,o;r<n;++r)if((o=e[r]).name===t)return o.value}function D0(e,t,r){for(var n=0,o=e.length;n<o;++n)if(e[n].name===t){e[n]=fL,e=e.slice(0,n).concat(e.slice(n+1));break}return r!=null&&e.push({name:t,value:r}),e}var Qh="http://www.w3.org/1999/xhtml";const $0={svg:"http://www.w3.org/2000/svg",xhtml:Qh,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function wu(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),$0.hasOwnProperty(t)?{space:$0[t],local:e}:e}function pL(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===Qh&&t.documentElement.namespaceURI===Qh?t.createElement(e):t.createElementNS(r,e)}}function gL(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function S1(e){var t=wu(e);return(t.local?gL:pL)(t)}function mL(){}function bp(e){return e==null?mL:function(){return this.querySelector(e)}}function yL(e){typeof e!="function"&&(e=bp(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=new Array(s),l,u,c=0;c<s;++c)(l=i[c])&&(u=e.call(l,l.__data__,c,i))&&("__data__"in l&&(u.__data__=l.__data__),a[c]=u);return new zt(n,this._parents)}function _L(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function bL(){return[]}function A1(e){return e==null?bL:function(){return this.querySelectorAll(e)}}function wL(e){return function(){return _L(e.apply(this,arguments))}}function vL(e){typeof e=="function"?e=wL(e):e=A1(e);for(var t=this._groups,r=t.length,n=[],o=[],i=0;i<r;++i)for(var s=t[i],a=s.length,l,u=0;u<a;++u)(l=s[u])&&(n.push(e.call(l,l.__data__,u,s)),o.push(l));return new zt(n,o)}function T1(e){return function(){return this.matches(e)}}function x1(e){return function(t){return t.matches(e)}}var EL=Array.prototype.find;function SL(e){return function(){return EL.call(this.children,e)}}function AL(){return this.firstElementChild}function TL(e){return this.select(e==null?AL:SL(typeof e=="function"?e:x1(e)))}var xL=Array.prototype.filter;function IL(){return Array.from(this.children)}function CL(e){return function(){return xL.call(this.children,e)}}function RL(e){return this.selectAll(e==null?IL:CL(typeof e=="function"?e:x1(e)))}function OL(e){typeof e!="function"&&(e=T1(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=[],l,u=0;u<s;++u)(l=i[u])&&e.call(l,l.__data__,u,i)&&a.push(l);return new zt(n,this._parents)}function I1(e){return new Array(e.length)}function kL(){return new zt(this._enter||this._groups.map(I1),this._parents)}function bl(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}bl.prototype={constructor:bl,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function NL(e){return function(){return e}}function ML(e,t,r,n,o,i){for(var s=0,a,l=t.length,u=i.length;s<u;++s)(a=t[s])?(a.__data__=i[s],n[s]=a):r[s]=new bl(e,i[s]);for(;s<l;++s)(a=t[s])&&(o[s]=a)}function PL(e,t,r,n,o,i,s){var a,l,u=new Map,c=t.length,d=i.length,p=new Array(c),m;for(a=0;a<c;++a)(l=t[a])&&(p[a]=m=s.call(l,l.__data__,a,t)+"",u.has(m)?o[a]=l:u.set(m,l));for(a=0;a<d;++a)m=s.call(e,i[a],a,i)+"",(l=u.get(m))?(n[a]=l,l.__data__=i[a],u.delete(m)):r[a]=new bl(e,i[a]);for(a=0;a<c;++a)(l=t[a])&&u.get(p[a])===l&&(o[a]=l)}function LL(e){return e.__data__}function BL(e,t){if(!arguments.length)return Array.from(this,LL);var r=t?PL:ML,n=this._parents,o=this._groups;typeof e!="function"&&(e=NL(e));for(var i=o.length,s=new Array(i),a=new Array(i),l=new Array(i),u=0;u<i;++u){var c=n[u],d=o[u],p=d.length,m=DL(e.call(c,c&&c.__data__,u,n)),_=m.length,b=a[u]=new Array(_),T=s[u]=new Array(_),N=l[u]=new Array(p);r(c,d,b,T,N,m,t);for(var R=0,S=0,D,U;R<_;++R)if(D=b[R]){for(R>=S&&(S=R+1);!(U=T[S])&&++S<_;);D._next=U||null}}return s=new zt(s,n),s._enter=a,s._exit=l,s}function DL(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function $L(){return new zt(this._exit||this._groups.map(I1),this._parents)}function UL(e,t,r){var n=this.enter(),o=this,i=this.exit();return typeof e=="function"?(n=e(n),n&&(n=n.selection())):n=n.append(e+""),t!=null&&(o=t(o),o&&(o=o.selection())),r==null?i.remove():r(i),n&&o?n.merge(o).order():o}function FL(e){for(var t=e.selection?e.selection():e,r=this._groups,n=t._groups,o=r.length,i=n.length,s=Math.min(o,i),a=new Array(o),l=0;l<s;++l)for(var u=r[l],c=n[l],d=u.length,p=a[l]=new Array(d),m,_=0;_<d;++_)(m=u[_]||c[_])&&(p[_]=m);for(;l<o;++l)a[l]=r[l];return new zt(a,this._parents)}function jL(){for(var e=this._groups,t=-1,r=e.length;++t<r;)for(var n=e[t],o=n.length-1,i=n[o],s;--o>=0;)(s=n[o])&&(i&&s.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(s,i),i=s);return this}function WL(e){e||(e=HL);function t(d,p){return d&&p?e(d.__data__,p.__data__):!d-!p}for(var r=this._groups,n=r.length,o=new Array(n),i=0;i<n;++i){for(var s=r[i],a=s.length,l=o[i]=new Array(a),u,c=0;c<a;++c)(u=s[c])&&(l[c]=u);l.sort(t)}return new zt(o,this._parents).order()}function HL(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function VL(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function qL(){return Array.from(this)}function KL(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var n=e[t],o=0,i=n.length;o<i;++o){var s=n[o];if(s)return s}return null}function YL(){let e=0;for(const t of this)++e;return e}function zL(){return!this.node()}function GL(e){for(var t=this._groups,r=0,n=t.length;r<n;++r)for(var o=t[r],i=0,s=o.length,a;i<s;++i)(a=o[i])&&e.call(a,a.__data__,i,o);return this}function QL(e){return function(){this.removeAttribute(e)}}function XL(e){return function(){this.removeAttributeNS(e.space,e.local)}}function JL(e,t){return function(){this.setAttribute(e,t)}}function ZL(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function eB(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttribute(e):this.setAttribute(e,r)}}function tB(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function rB(e,t){var r=wu(e);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((t==null?r.local?XL:QL:typeof t=="function"?r.local?tB:eB:r.local?ZL:JL)(r,t))}function C1(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function nB(e){return function(){this.style.removeProperty(e)}}function iB(e,t,r){return function(){this.style.setProperty(e,t,r)}}function oB(e,t,r){return function(){var n=t.apply(this,arguments);n==null?this.style.removeProperty(e):this.style.setProperty(e,n,r)}}function sB(e,t,r){return arguments.length>1?this.each((t==null?nB:typeof t=="function"?oB:iB)(e,t,r??"")):ko(this.node(),e)}function ko(e,t){return e.style.getPropertyValue(t)||C1(e).getComputedStyle(e,null).getPropertyValue(t)}function aB(e){return function(){delete this[e]}}function lB(e,t){return function(){this[e]=t}}function uB(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function cB(e,t){return arguments.length>1?this.each((t==null?aB:typeof t=="function"?uB:lB)(e,t)):this.node()[e]}function R1(e){return e.trim().split(/^|\s+/)}function wp(e){return e.classList||new O1(e)}function O1(e){this._node=e,this._names=R1(e.getAttribute("class")||"")}O1.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function k1(e,t){for(var r=wp(e),n=-1,o=t.length;++n<o;)r.add(t[n])}function N1(e,t){for(var r=wp(e),n=-1,o=t.length;++n<o;)r.remove(t[n])}function fB(e){return function(){k1(this,e)}}function hB(e){return function(){N1(this,e)}}function dB(e,t){return function(){(t.apply(this,arguments)?k1:N1)(this,e)}}function pB(e,t){var r=R1(e+"");if(arguments.length<2){for(var n=wp(this.node()),o=-1,i=r.length;++o<i;)if(!n.contains(r[o]))return!1;return!0}return this.each((typeof t=="function"?dB:t?fB:hB)(r,t))}function gB(){this.textContent=""}function mB(e){return function(){this.textContent=e}}function yB(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function _B(e){return arguments.length?this.each(e==null?gB:(typeof e=="function"?yB:mB)(e)):this.node().textContent}function bB(){this.innerHTML=""}function wB(e){return function(){this.innerHTML=e}}function vB(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function EB(e){return arguments.length?this.each(e==null?bB:(typeof e=="function"?vB:wB)(e)):this.node().innerHTML}function SB(){this.nextSibling&&this.parentNode.appendChild(this)}function AB(){return this.each(SB)}function TB(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function xB(){return this.each(TB)}function IB(e){var t=typeof e=="function"?e:S1(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function CB(){return null}function RB(e,t){var r=typeof e=="function"?e:S1(e),n=t==null?CB:typeof t=="function"?t:bp(t);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}function OB(){var e=this.parentNode;e&&e.removeChild(this)}function kB(){return this.each(OB)}function NB(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function MB(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function PB(e){return this.select(e?MB:NB)}function LB(e){return arguments.length?this.property("__data__",e):this.node().__data__}function BB(e){return function(t){e.call(this,t,this.__data__)}}function DB(e){return e.trim().split(/^|\s+/).map(function(t){var r="",n=t.indexOf(".");return n>=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function $B(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,o=t.length,i;r<o;++r)i=t[r],(!e.type||i.type===e.type)&&i.name===e.name?this.removeEventListener(i.type,i.listener,i.options):t[++n]=i;++n?t.length=n:delete this.__on}}}function UB(e,t,r){return function(){var n=this.__on,o,i=BB(t);if(n){for(var s=0,a=n.length;s<a;++s)if((o=n[s]).type===e.type&&o.name===e.name){this.removeEventListener(o.type,o.listener,o.options),this.addEventListener(o.type,o.listener=i,o.options=r),o.value=t;return}}this.addEventListener(e.type,i,r),o={type:e.type,name:e.name,value:t,listener:i,options:r},n?n.push(o):this.__on=[o]}}function FB(e,t,r){var n=DB(e+""),o,i=n.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var l=0,u=a.length,c;l<u;++l)for(o=0,c=a[l];o<i;++o)if((s=n[o]).type===c.type&&s.name===c.name)return c.value}return}for(a=t?UB:$B,o=0;o<i;++o)this.each(a(n[o],t,r));return this}function M1(e,t,r){var n=C1(e),o=n.CustomEvent;typeof o=="function"?o=new o(t,r):(o=n.document.createEvent("Event"),r?(o.initEvent(t,r.bubbles,r.cancelable),o.detail=r.detail):o.initEvent(t,!1,!1)),e.dispatchEvent(o)}function jB(e,t){return function(){return M1(this,e,t)}}function WB(e,t){return function(){return M1(this,e,t.apply(this,arguments))}}function HB(e,t){return this.each((typeof t=="function"?WB:jB)(e,t))}function*VB(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var n=e[t],o=0,i=n.length,s;o<i;++o)(s=n[o])&&(yield s)}var P1=[null];function zt(e,t){this._groups=e,this._parents=t}function Ys(){return new zt([[document.documentElement]],P1)}function qB(){return this}zt.prototype=Ys.prototype={constructor:zt,select:yL,selectAll:vL,selectChild:TL,selectChildren:RL,filter:OL,data:BL,enter:kL,exit:$L,join:UL,merge:FL,selection:qB,order:jL,sort:WL,call:VL,nodes:qL,node:KL,size:YL,empty:zL,each:GL,attr:rB,style:sB,property:cB,classed:pB,text:_B,html:EB,raise:AB,lower:xB,append:IB,insert:RB,remove:kB,clone:PB,datum:LB,on:FB,dispatch:HB,[Symbol.iterator]:VB};function a3(e){return typeof e=="string"?new zt([[document.querySelector(e)]],[document.documentElement]):new zt([[e]],P1)}function vp(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function L1(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}function zs(){}var Ns=.7,wl=1/Ns,bo="\\s*([+-]?\\d+)\\s*",Ms="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Pr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",KB=/^#([0-9a-f]{3,8})$/,YB=new RegExp(`^rgb\\(${bo},${bo},${bo}\\)$`),zB=new RegExp(`^rgb\\(${Pr},${Pr},${Pr}\\)$`),GB=new RegExp(`^rgba\\(${bo},${bo},${bo},${Ms}\\)$`),QB=new RegExp(`^rgba\\(${Pr},${Pr},${Pr},${Ms}\\)$`),XB=new RegExp(`^hsl\\(${Ms},${Pr},${Pr}\\)$`),JB=new RegExp(`^hsla\\(${Ms},${Pr},${Pr},${Ms}\\)$`),U0={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};vp(zs,Ci,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:F0,formatHex:F0,formatHex8:ZB,formatHsl:eD,formatRgb:j0,toString:j0});function F0(){return this.rgb().formatHex()}function ZB(){return this.rgb().formatHex8()}function eD(){return B1(this).formatHsl()}function j0(){return this.rgb().formatRgb()}function Ci(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=KB.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?W0(t):r===3?new Dt(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?wa(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?wa(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=YB.exec(e))?new Dt(t[1],t[2],t[3],1):(t=zB.exec(e))?new Dt(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=GB.exec(e))?wa(t[1],t[2],t[3],t[4]):(t=QB.exec(e))?wa(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=XB.exec(e))?q0(t[1],t[2]/100,t[3]/100,1):(t=JB.exec(e))?q0(t[1],t[2]/100,t[3]/100,t[4]):U0.hasOwnProperty(e)?W0(U0[e]):e==="transparent"?new Dt(NaN,NaN,NaN,0):null}function W0(e){return new Dt(e>>16&255,e>>8&255,e&255,1)}function wa(e,t,r,n){return n<=0&&(e=t=r=NaN),new Dt(e,t,r,n)}function tD(e){return e instanceof zs||(e=Ci(e)),e?(e=e.rgb(),new Dt(e.r,e.g,e.b,e.opacity)):new Dt}function Xh(e,t,r,n){return arguments.length===1?tD(e):new Dt(e,t,r,n??1)}function Dt(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}vp(Dt,Xh,L1(zs,{brighter(e){return e=e==null?wl:Math.pow(wl,e),new Dt(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ns:Math.pow(Ns,e),new Dt(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Dt(Si(this.r),Si(this.g),Si(this.b),vl(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:H0,formatHex:H0,formatHex8:rD,formatRgb:V0,toString:V0}));function H0(){return`#${gi(this.r)}${gi(this.g)}${gi(this.b)}`}function rD(){return`#${gi(this.r)}${gi(this.g)}${gi(this.b)}${gi((isNaN(this.opacity)?1:this.opacity)*255)}`}function V0(){const e=vl(this.opacity);return`${e===1?"rgb(":"rgba("}${Si(this.r)}, ${Si(this.g)}, ${Si(this.b)}${e===1?")":`, ${e})`}`}function vl(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Si(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function gi(e){return e=Si(e),(e<16?"0":"")+e.toString(16)}function q0(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new pr(e,t,r,n)}function B1(e){if(e instanceof pr)return new pr(e.h,e.s,e.l,e.opacity);if(e instanceof zs||(e=Ci(e)),!e)return new pr;if(e instanceof pr)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),i=Math.max(t,r,n),s=NaN,a=i-o,l=(i+o)/2;return a?(t===i?s=(r-n)/a+(r<n)*6:r===i?s=(n-t)/a+2:s=(t-r)/a+4,a/=l<.5?i+o:2-i-o,s*=60):a=l>0&&l<1?0:s,new pr(s,a,l,e.opacity)}function nD(e,t,r,n){return arguments.length===1?B1(e):new pr(e,t,r,n??1)}function pr(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}vp(pr,nD,L1(zs,{brighter(e){return e=e==null?wl:Math.pow(wl,e),new pr(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ns:Math.pow(Ns,e),new pr(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Dt(Pc(e>=240?e-240:e+120,o,n),Pc(e,o,n),Pc(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new pr(K0(this.h),va(this.s),va(this.l),vl(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=vl(this.opacity);return`${e===1?"hsl(":"hsla("}${K0(this.h)}, ${va(this.s)*100}%, ${va(this.l)*100}%${e===1?")":`, ${e})`}`}}));function K0(e){return e=(e||0)%360,e<0?e+360:e}function va(e){return Math.max(0,Math.min(1,e||0))}function Pc(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}const Ep=e=>()=>e;function iD(e,t){return function(r){return e+r*t}}function oD(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function sD(e){return(e=+e)==1?D1:function(t,r){return r-t?oD(t,r,e):Ep(isNaN(t)?r:t)}}function D1(e,t){var r=t-e;return r?iD(e,r):Ep(isNaN(e)?t:e)}const El=function e(t){var r=sD(t);function n(o,i){var s=r((o=Xh(o)).r,(i=Xh(i)).r),a=r(o.g,i.g),l=r(o.b,i.b),u=D1(o.opacity,i.opacity);return function(c){return o.r=s(c),o.g=a(c),o.b=l(c),o.opacity=u(c),o+""}}return n.gamma=e,n}(1);function aD(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),o;return function(i){for(o=0;o<r;++o)n[o]=e[o]*(1-i)+t[o]*i;return n}}function lD(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function uD(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,o=new Array(n),i=new Array(r),s;for(s=0;s<n;++s)o[s]=Sp(e[s],t[s]);for(;s<r;++s)i[s]=t[s];return function(a){for(s=0;s<n;++s)i[s]=o[s](a);return i}}function cD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}function hr(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}function fD(e,t){var r={},n={},o;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(o in t)o in e?r[o]=Sp(e[o],t[o]):n[o]=t[o];return function(i){for(o in r)n[o]=r[o](i);return n}}var Jh=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Lc=new RegExp(Jh.source,"g");function hD(e){return function(){return e}}function dD(e){return function(t){return e(t)+""}}function $1(e,t){var r=Jh.lastIndex=Lc.lastIndex=0,n,o,i,s=-1,a=[],l=[];for(e=e+"",t=t+"";(n=Jh.exec(e))&&(o=Lc.exec(t));)(i=o.index)>r&&(i=t.slice(r,i),a[s]?a[s]+=i:a[++s]=i),(n=n[0])===(o=o[0])?a[s]?a[s]+=o:a[++s]=o:(a[++s]=null,l.push({i:s,x:hr(n,o)})),r=Lc.lastIndex;return r<t.length&&(i=t.slice(r),a[s]?a[s]+=i:a[++s]=i),a.length<2?l[0]?dD(l[0].x):hD(t):(t=l.length,function(u){for(var c=0,d;c<t;++c)a[(d=l[c]).i]=d.x(u);return a.join("")})}function Sp(e,t){var r=typeof t,n;return t==null||r==="boolean"?Ep(t):(r==="number"?hr:r==="string"?(n=Ci(t))?(t=n,El):$1:t instanceof Ci?El:t instanceof Date?cD:lD(t)?aD:Array.isArray(t)?uD:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?fD:hr)(e,t)}function pD(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var Y0=180/Math.PI,Zh={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function U1(e,t,r,n,o,i){var s,a,l;return(s=Math.sqrt(e*e+t*t))&&(e/=s,t/=s),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(a=Math.sqrt(r*r+n*n))&&(r/=a,n/=a,l/=a),e*n<t*r&&(e=-e,t=-t,l=-l,s=-s),{translateX:o,translateY:i,rotate:Math.atan2(t,e)*Y0,skewX:Math.atan(l)*Y0,scaleX:s,scaleY:a}}var Ea;function gD(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?Zh:U1(t.a,t.b,t.c,t.d,t.e,t.f)}function mD(e){return e==null||(Ea||(Ea=document.createElementNS("http://www.w3.org/2000/svg","g")),Ea.setAttribute("transform",e),!(e=Ea.transform.baseVal.consolidate()))?Zh:(e=e.matrix,U1(e.a,e.b,e.c,e.d,e.e,e.f))}function F1(e,t,r,n){function o(u){return u.length?u.pop()+" ":""}function i(u,c,d,p,m,_){if(u!==d||c!==p){var b=m.push("translate(",null,t,null,r);_.push({i:b-4,x:hr(u,d)},{i:b-2,x:hr(c,p)})}else(d||p)&&m.push("translate("+d+t+p+r)}function s(u,c,d,p){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),p.push({i:d.push(o(d)+"rotate(",null,n)-2,x:hr(u,c)})):c&&d.push(o(d)+"rotate("+c+n)}function a(u,c,d,p){u!==c?p.push({i:d.push(o(d)+"skewX(",null,n)-2,x:hr(u,c)}):c&&d.push(o(d)+"skewX("+c+n)}function l(u,c,d,p,m,_){if(u!==d||c!==p){var b=m.push(o(m)+"scale(",null,",",null,")");_.push({i:b-4,x:hr(u,d)},{i:b-2,x:hr(c,p)})}else(d!==1||p!==1)&&m.push(o(m)+"scale("+d+","+p+")")}return function(u,c){var d=[],p=[];return u=e(u),c=e(c),i(u.translateX,u.translateY,c.translateX,c.translateY,d,p),s(u.rotate,c.rotate,d,p),a(u.skewX,c.skewX,d,p),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,d,p),u=c=null,function(m){for(var _=-1,b=p.length,T;++_<b;)d[(T=p[_]).i]=T.x(m);return d.join("")}}}var yD=F1(gD,"px, ","px)","deg)"),_D=F1(mD,", ",")",")"),No=0,ds=0,ns=0,j1=1e3,Sl,ps,Al=0,Ri=0,vu=0,Ps=typeof performance=="object"&&performance.now?performance:Date,W1=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Ap(){return Ri||(W1(bD),Ri=Ps.now()+vu)}function bD(){Ri=0}function Tl(){this._call=this._time=this._next=null}Tl.prototype=H1.prototype={constructor:Tl,restart:function(e,t,r){if(typeof e!="function")throw new TypeError("callback is not a function");r=(r==null?Ap():+r)+(t==null?0:+t),!this._next&&ps!==this&&(ps?ps._next=this:Sl=this,ps=this),this._call=e,this._time=r,ed()},stop:function(){this._call&&(this._call=null,this._time=1/0,ed())}};function H1(e,t,r){var n=new Tl;return n.restart(e,t,r),n}function wD(){Ap(),++No;for(var e=Sl,t;e;)(t=Ri-e._time)>=0&&e._call.call(void 0,t),e=e._next;--No}function z0(){Ri=(Al=Ps.now())+vu,No=ds=0;try{wD()}finally{No=0,ED(),Ri=0}}function vD(){var e=Ps.now(),t=e-Al;t>j1&&(vu-=t,Al=e)}function ED(){for(var e,t=Sl,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:Sl=r);ps=e,ed(n)}function ed(e){if(!No){ds&&(ds=clearTimeout(ds));var t=e-Ri;t>24?(e<1/0&&(ds=setTimeout(z0,e-Ps.now()-vu)),ns&&(ns=clearInterval(ns))):(ns||(Al=Ps.now(),ns=setInterval(vD,j1)),No=1,W1(z0))}}function G0(e,t,r){var n=new Tl;return t=t==null?0:+t,n.restart(o=>{n.stop(),e(o+t)},t,r),n}var SD=E1("start","end","cancel","interrupt"),AD=[],V1=0,Q0=1,td=2,Qa=3,X0=4,rd=5,Xa=6;function Eu(e,t,r,n,o,i){var s=e.__transition;if(!s)e.__transition={};else if(r in s)return;TD(e,r,{name:t,index:n,group:o,on:SD,tween:AD,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:V1})}function Tp(e,t){var r=br(e,t);if(r.state>V1)throw new Error("too late; already scheduled");return r}function $r(e,t){var r=br(e,t);if(r.state>Qa)throw new Error("too late; already running");return r}function br(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function TD(e,t,r){var n=e.__transition,o;n[t]=r,r.timer=H1(i,0,r.time);function i(u){r.state=Q0,r.timer.restart(s,r.delay,r.time),r.delay<=u&&s(u-r.delay)}function s(u){var c,d,p,m;if(r.state!==Q0)return l();for(c in n)if(m=n[c],m.name===r.name){if(m.state===Qa)return G0(s);m.state===X0?(m.state=Xa,m.timer.stop(),m.on.call("interrupt",e,e.__data__,m.index,m.group),delete n[c]):+c<t&&(m.state=Xa,m.timer.stop(),m.on.call("cancel",e,e.__data__,m.index,m.group),delete n[c])}if(G0(function(){r.state===Qa&&(r.state=X0,r.timer.restart(a,r.delay,r.time),a(u))}),r.state=td,r.on.call("start",e,e.__data__,r.index,r.group),r.state===td){for(r.state=Qa,o=new Array(p=r.tween.length),c=0,d=-1;c<p;++c)(m=r.tween[c].value.call(e,e.__data__,r.index,r.group))&&(o[++d]=m);o.length=d+1}}function a(u){for(var c=u<r.duration?r.ease.call(null,u/r.duration):(r.timer.restart(l),r.state=rd,1),d=-1,p=o.length;++d<p;)o[d].call(e,c);r.state===rd&&(r.on.call("end",e,e.__data__,r.index,r.group),l())}function l(){r.state=Xa,r.timer.stop(),delete n[t];for(var u in n)return;delete e.__transition}}function xD(e,t){var r=e.__transition,n,o,i=!0,s;if(r){t=t==null?null:t+"";for(s in r){if((n=r[s]).name!==t){i=!1;continue}o=n.state>td&&n.state<rd,n.state=Xa,n.timer.stop(),n.on.call(o?"interrupt":"cancel",e,e.__data__,n.index,n.group),delete r[s]}i&&delete e.__transition}}function ID(e){return this.each(function(){xD(this,e)})}function CD(e,t){var r,n;return function(){var o=$r(this,e),i=o.tween;if(i!==r){n=r=i;for(var s=0,a=n.length;s<a;++s)if(n[s].name===t){n=n.slice(),n.splice(s,1);break}}o.tween=n}}function RD(e,t,r){var n,o;if(typeof r!="function")throw new Error;return function(){var i=$r(this,e),s=i.tween;if(s!==n){o=(n=s).slice();for(var a={name:t,value:r},l=0,u=o.length;l<u;++l)if(o[l].name===t){o[l]=a;break}l===u&&o.push(a)}i.tween=o}}function OD(e,t){var r=this._id;if(e+="",arguments.length<2){for(var n=br(this.node(),r).tween,o=0,i=n.length,s;o<i;++o)if((s=n[o]).name===e)return s.value;return null}return this.each((t==null?CD:RD)(r,e,t))}function xp(e,t,r){var n=e._id;return e.each(function(){var o=$r(this,n);(o.value||(o.value={}))[t]=r.apply(this,arguments)}),function(o){return br(o,n).value[t]}}function q1(e,t){var r;return(typeof t=="number"?hr:t instanceof Ci?El:(r=Ci(t))?(t=r,El):$1)(e,t)}function kD(e){return function(){this.removeAttribute(e)}}function ND(e){return function(){this.removeAttributeNS(e.space,e.local)}}function MD(e,t,r){var n,o=r+"",i;return function(){var s=this.getAttribute(e);return s===o?null:s===n?i:i=t(n=s,r)}}function PD(e,t,r){var n,o=r+"",i;return function(){var s=this.getAttributeNS(e.space,e.local);return s===o?null:s===n?i:i=t(n=s,r)}}function LD(e,t,r){var n,o,i;return function(){var s,a=r(this),l;return a==null?void this.removeAttribute(e):(s=this.getAttribute(e),l=a+"",s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a)))}}function BD(e,t,r){var n,o,i;return function(){var s,a=r(this),l;return a==null?void this.removeAttributeNS(e.space,e.local):(s=this.getAttributeNS(e.space,e.local),l=a+"",s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a)))}}function DD(e,t){var r=wu(e),n=r==="transform"?_D:q1;return this.attrTween(e,typeof t=="function"?(r.local?BD:LD)(r,n,xp(this,"attr."+e,t)):t==null?(r.local?ND:kD)(r):(r.local?PD:MD)(r,n,t))}function $D(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}function UD(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}function FD(e,t){var r,n;function o(){var i=t.apply(this,arguments);return i!==n&&(r=(n=i)&&UD(e,i)),r}return o._value=t,o}function jD(e,t){var r,n;function o(){var i=t.apply(this,arguments);return i!==n&&(r=(n=i)&&$D(e,i)),r}return o._value=t,o}function WD(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;var n=wu(e);return this.tween(r,(n.local?FD:jD)(n,t))}function HD(e,t){return function(){Tp(this,e).delay=+t.apply(this,arguments)}}function VD(e,t){return t=+t,function(){Tp(this,e).delay=t}}function qD(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?HD:VD)(t,e)):br(this.node(),t).delay}function KD(e,t){return function(){$r(this,e).duration=+t.apply(this,arguments)}}function YD(e,t){return t=+t,function(){$r(this,e).duration=t}}function zD(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?KD:YD)(t,e)):br(this.node(),t).duration}function GD(e,t){if(typeof t!="function")throw new Error;return function(){$r(this,e).ease=t}}function QD(e){var t=this._id;return arguments.length?this.each(GD(t,e)):br(this.node(),t).ease}function XD(e,t){return function(){var r=t.apply(this,arguments);if(typeof r!="function")throw new Error;$r(this,e).ease=r}}function JD(e){if(typeof e!="function")throw new Error;return this.each(XD(this._id,e))}function ZD(e){typeof e!="function"&&(e=T1(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=[],l,u=0;u<s;++u)(l=i[u])&&e.call(l,l.__data__,u,i)&&a.push(l);return new un(n,this._parents,this._name,this._id)}function e$(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,n=t.length,o=r.length,i=Math.min(n,o),s=new Array(n),a=0;a<i;++a)for(var l=t[a],u=r[a],c=l.length,d=s[a]=new Array(c),p,m=0;m<c;++m)(p=l[m]||u[m])&&(d[m]=p);for(;a<n;++a)s[a]=t[a];return new un(s,this._parents,this._name,this._id)}function t$(e){return(e+"").trim().split(/^|\s+/).every(function(t){var r=t.indexOf(".");return r>=0&&(t=t.slice(0,r)),!t||t==="start"})}function r$(e,t,r){var n,o,i=t$(t)?Tp:$r;return function(){var s=i(this,e),a=s.on;a!==n&&(o=(n=a).copy()).on(t,r),s.on=o}}function n$(e,t){var r=this._id;return arguments.length<2?br(this.node(),r).on.on(e):this.each(r$(r,e,t))}function i$(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function o$(){return this.on("end.remove",i$(this._id))}function s$(e){var t=this._name,r=this._id;typeof e!="function"&&(e=bp(e));for(var n=this._groups,o=n.length,i=new Array(o),s=0;s<o;++s)for(var a=n[s],l=a.length,u=i[s]=new Array(l),c,d,p=0;p<l;++p)(c=a[p])&&(d=e.call(c,c.__data__,p,a))&&("__data__"in c&&(d.__data__=c.__data__),u[p]=d,Eu(u[p],t,r,p,u,br(c,r)));return new un(i,this._parents,t,r)}function a$(e){var t=this._name,r=this._id;typeof e!="function"&&(e=A1(e));for(var n=this._groups,o=n.length,i=[],s=[],a=0;a<o;++a)for(var l=n[a],u=l.length,c,d=0;d<u;++d)if(c=l[d]){for(var p=e.call(c,c.__data__,d,l),m,_=br(c,r),b=0,T=p.length;b<T;++b)(m=p[b])&&Eu(m,t,r,b,p,_);i.push(p),s.push(c)}return new un(i,s,t,r)}var l$=Ys.prototype.constructor;function u$(){return new l$(this._groups,this._parents)}function c$(e,t){var r,n,o;return function(){var i=ko(this,e),s=(this.style.removeProperty(e),ko(this,e));return i===s?null:i===r&&s===n?o:o=t(r=i,n=s)}}function K1(e){return function(){this.style.removeProperty(e)}}function f$(e,t,r){var n,o=r+"",i;return function(){var s=ko(this,e);return s===o?null:s===n?i:i=t(n=s,r)}}function h$(e,t,r){var n,o,i;return function(){var s=ko(this,e),a=r(this),l=a+"";return a==null&&(l=a=(this.style.removeProperty(e),ko(this,e))),s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a))}}function d$(e,t){var r,n,o,i="style."+t,s="end."+i,a;return function(){var l=$r(this,e),u=l.on,c=l.value[i]==null?a||(a=K1(t)):void 0;(u!==r||o!==c)&&(n=(r=u).copy()).on(s,o=c),l.on=n}}function p$(e,t,r){var n=(e+="")=="transform"?yD:q1;return t==null?this.styleTween(e,c$(e,n)).on("end.style."+e,K1(e)):typeof t=="function"?this.styleTween(e,h$(e,n,xp(this,"style."+e,t))).each(d$(this._id,e)):this.styleTween(e,f$(e,n,t),r).on("end.style."+e,null)}function g$(e,t,r){return function(n){this.style.setProperty(e,t.call(this,n),r)}}function m$(e,t,r){var n,o;function i(){var s=t.apply(this,arguments);return s!==o&&(n=(o=s)&&g$(e,s,r)),n}return i._value=t,i}function y$(e,t,r){var n="style."+(e+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,m$(e,t,r??""))}function _$(e){return function(){this.textContent=e}}function b$(e){return function(){var t=e(this);this.textContent=t??""}}function w$(e){return this.tween("text",typeof e=="function"?b$(xp(this,"text",e)):_$(e==null?"":e+""))}function v$(e){return function(t){this.textContent=e.call(this,t)}}function E$(e){var t,r;function n(){var o=e.apply(this,arguments);return o!==r&&(t=(r=o)&&v$(o)),t}return n._value=e,n}function S$(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,E$(e))}function A$(){for(var e=this._name,t=this._id,r=Y1(),n=this._groups,o=n.length,i=0;i<o;++i)for(var s=n[i],a=s.length,l,u=0;u<a;++u)if(l=s[u]){var c=br(l,t);Eu(l,e,r,u,s,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new un(n,this._parents,e,r)}function T$(){var e,t,r=this,n=r._id,o=r.size();return new Promise(function(i,s){var a={value:s},l={value:function(){--o===0&&i()}};r.each(function(){var u=$r(this,n),c=u.on;c!==e&&(t=(e=c).copy(),t._.cancel.push(a),t._.interrupt.push(a),t._.end.push(l)),u.on=t}),o===0&&i()})}var x$=0;function un(e,t,r,n){this._groups=e,this._parents=t,this._name=r,this._id=n}function Y1(){return++x$}var jr=Ys.prototype;un.prototype={constructor:un,select:s$,selectAll:a$,selectChild:jr.selectChild,selectChildren:jr.selectChildren,filter:ZD,merge:e$,selection:u$,transition:A$,call:jr.call,nodes:jr.nodes,node:jr.node,size:jr.size,empty:jr.empty,each:jr.each,on:n$,attr:DD,attrTween:WD,style:p$,styleTween:y$,text:w$,textTween:S$,remove:o$,tween:OD,delay:qD,duration:zD,ease:QD,easeVarying:JD,end:T$,[Symbol.iterator]:jr[Symbol.iterator]};const l3=e=>+e;function I$(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var C$={time:null,delay:0,duration:250,ease:I$};function R$(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function O$(e){var t,r;e instanceof un?(t=e._id,e=e._name):(t=Y1(),(r=C$).time=Ap(),e=e==null?null:e+"");for(var n=this._groups,o=n.length,i=0;i<o;++i)for(var s=n[i],a=s.length,l,u=0;u<a;++u)(l=s[u])&&Eu(l,e,t,u,s,r||R$(l,t));return new un(n,this._parents,e,t)}Ys.prototype.interrupt=ID;Ys.prototype.transition=O$;const nd=Math.PI,id=2*nd,ii=1e-6,k$=id-ii;function z1(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function N$(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return z1;const r=10**t;return function(n){this._+=n[0];for(let o=1,i=n.length;o<i;++o)this._+=Math.round(arguments[o]*r)/r+n[o]}}class M${constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?z1:N$(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,o){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+o}`}bezierCurveTo(t,r,n,o,i,s){this._append`C${+t},${+r},${+n},${+o},${this._x1=+i},${this._y1=+s}`}arcTo(t,r,n,o,i){if(t=+t,r=+r,n=+n,o=+o,i=+i,i<0)throw new Error(`negative radius: ${i}`);let s=this._x1,a=this._y1,l=n-t,u=o-r,c=s-t,d=a-r,p=c*c+d*d;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>ii)if(!(Math.abs(d*l-u*c)>ii)||!i)this._append`L${this._x1=t},${this._y1=r}`;else{let m=n-s,_=o-a,b=l*l+u*u,T=m*m+_*_,N=Math.sqrt(b),R=Math.sqrt(p),S=i*Math.tan((nd-Math.acos((b+p-T)/(2*N*R)))/2),D=S/R,U=S/N;Math.abs(D-1)>ii&&this._append`L${t+D*c},${r+D*d}`,this._append`A${i},${i},0,0,${+(d*m>c*_)},${this._x1=t+U*l},${this._y1=r+U*u}`}}arc(t,r,n,o,i,s){if(t=+t,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let a=n*Math.cos(o),l=n*Math.sin(o),u=t+a,c=r+l,d=1^s,p=s?o-i:i-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>ii||Math.abs(this._y1-c)>ii)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%id+id),p>k$?this._append`A${n},${n},0,1,${d},${t-a},${r-l}A${n},${n},0,1,${d},${this._x1=u},${this._y1=c}`:p>ii&&this._append`A${n},${n},0,${+(p>=nd)},${d},${this._x1=t+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}}function P$(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function xl(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Mo(e){return e=xl(Math.abs(e)),e?e[1]:NaN}function L$(e,t){return function(r,n){for(var o=r.length,i=[],s=0,a=e[0],l=0;o>0&&a>0&&(l+a+1>n&&(a=Math.max(1,n-l)),i.push(r.substring(o-=a,o+a)),!((l+=a+1)>n));)a=e[s=(s+1)%e.length];return i.reverse().join(t)}}function B$(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var D$=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Il(e){if(!(t=D$.exec(e)))throw new Error("invalid format: "+e);var t;return new Ip({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Il.prototype=Ip.prototype;function Ip(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Ip.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function $$(e){e:for(var t=e.length,r=1,n=-1,o;r<t;++r)switch(e[r]){case".":n=o=r;break;case"0":n===0&&(n=r),o=r;break;default:if(!+e[r])break e;n>0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var G1;function U$(e,t){var r=xl(e,t);if(!r)return e+"";var n=r[0],o=r[1],i=o-(G1=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,s=n.length;return i===s?n:i>s?n+new Array(i-s+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+xl(e,Math.max(0,t+i-1))[0]}function J0(e,t){var r=xl(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}const Z0={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:P$,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>J0(e*100,t),r:J0,s:U$,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function ey(e){return e}var ty=Array.prototype.map,ry=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function F$(e){var t=e.grouping===void 0||e.thousands===void 0?ey:L$(ty.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?ey:B$(ty.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",a=e.minus===void 0?"−":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function u(d){d=Il(d);var p=d.fill,m=d.align,_=d.sign,b=d.symbol,T=d.zero,N=d.width,R=d.comma,S=d.precision,D=d.trim,U=d.type;U==="n"?(R=!0,U="g"):Z0[U]||(S===void 0&&(S=12),D=!0,U="g"),(T||p==="0"&&m==="=")&&(T=!0,p="0",m="=");var x=b==="$"?r:b==="#"&&/[boxX]/.test(U)?"0"+U.toLowerCase():"",L=b==="$"?n:/[%p]/.test(U)?s:"",j=Z0[U],Y=/[defgprs%]/.test(U);S=S===void 0?6:/[gprs]/.test(U)?Math.max(1,Math.min(21,S)):Math.max(0,Math.min(20,S));function se(re){var P=x,B=L,oe,ne,ue;if(U==="c")B=j(re)+B,re="";else{re=+re;var ae=re<0||1/re<0;if(re=isNaN(re)?l:j(Math.abs(re),S),D&&(re=$$(re)),ae&&+re==0&&_!=="+"&&(ae=!1),P=(ae?_==="("?_:a:_==="-"||_==="("?"":_)+P,B=(U==="s"?ry[8+G1/3]:"")+B+(ae&&_==="("?")":""),Y){for(oe=-1,ne=re.length;++oe<ne;)if(ue=re.charCodeAt(oe),48>ue||ue>57){B=(ue===46?o+re.slice(oe+1):re.slice(oe))+B,re=re.slice(0,oe);break}}}R&&!T&&(re=t(re,1/0));var z=P.length+re.length+B.length,pe=z<N?new Array(N-z+1).join(p):"";switch(R&&T&&(re=t(pe+re,pe.length?N-B.length:1/0),pe=""),m){case"<":re=P+re+B+pe;break;case"=":re=P+pe+re+B;break;case"^":re=pe.slice(0,z=pe.length>>1)+P+re+B+pe.slice(z);break;default:re=pe+P+re+B;break}return i(re)}return se.toString=function(){return d+""},se}function c(d,p){var m=u((d=Il(d),d.type="f",d)),_=Math.max(-8,Math.min(8,Math.floor(Mo(p)/3)))*3,b=Math.pow(10,-_),T=ry[8+_/3];return function(N){return m(b*N)+T}}return{format:u,formatPrefix:c}}var Sa,Q1,X1;j$({thousands:",",grouping:[3],currency:["$",""]});function j$(e){return Sa=F$(e),Q1=Sa.format,X1=Sa.formatPrefix,Sa}function W$(e){return Math.max(0,-Mo(Math.abs(e)))}function H$(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Mo(t)/3)))*3-Mo(Math.abs(e)))}function V$(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Mo(t)-Mo(e))+1}function Su(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}const ny=Symbol("implicit");function J1(){var e=new P0,t=[],r=[],n=ny;function o(i){let s=e.get(i);if(s===void 0){if(n!==ny)return n;e.set(i,s=t.push(i)-1)}return r[s%r.length]}return o.domain=function(i){if(!arguments.length)return t.slice();t=[],e=new P0;for(const s of i)e.has(s)||e.set(s,t.push(s)-1);return o},o.range=function(i){return arguments.length?(r=Array.from(i),o):r.slice()},o.unknown=function(i){return arguments.length?(n=i,o):n},o.copy=function(){return J1(t,r).unknown(n)},Su.apply(o,arguments),o}function q$(){var e=J1().unknown(void 0),t=e.domain,r=e.range,n=0,o=1,i,s,a=!1,l=0,u=0,c=.5;delete e.unknown;function d(){var p=t().length,m=o<n,_=m?o:n,b=m?n:o;i=(b-_)/Math.max(1,p-l+u*2),a&&(i=Math.floor(i)),_+=(b-_-i*(p-l))*c,s=i*(1-l),a&&(_=Math.round(_),s=Math.round(s));var T=iL(p).map(function(N){return _+i*N});return r(m?T.reverse():T)}return e.domain=function(p){return arguments.length?(t(p),d()):t()},e.range=function(p){return arguments.length?([n,o]=p,n=+n,o=+o,d()):[n,o]},e.rangeRound=function(p){return[n,o]=p,n=+n,o=+o,a=!0,d()},e.bandwidth=function(){return s},e.step=function(){return i},e.round=function(p){return arguments.length?(a=!!p,d()):a},e.padding=function(p){return arguments.length?(l=Math.min(1,u=+p),d()):l},e.paddingInner=function(p){return arguments.length?(l=Math.min(1,p),d()):l},e.paddingOuter=function(p){return arguments.length?(u=+p,d()):u},e.align=function(p){return arguments.length?(c=Math.max(0,Math.min(1,p)),d()):c},e.copy=function(){return q$(t(),[n,o]).round(a).paddingInner(l).paddingOuter(u).align(c)},Su.apply(d(),arguments)}function K$(e){return function(){return e}}function Y$(e){return+e}var iy=[0,1];function so(e){return e}function od(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:K$(isNaN(t)?NaN:.5)}function z$(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function G$(e,t,r){var n=e[0],o=e[1],i=t[0],s=t[1];return o<n?(n=od(o,n),i=r(s,i)):(n=od(n,o),i=r(i,s)),function(a){return i(n(a))}}function Q$(e,t,r){var n=Math.min(e.length,t.length)-1,o=new Array(n),i=new Array(n),s=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++s<n;)o[s]=od(e[s],e[s+1]),i[s]=r(t[s],t[s+1]);return function(a){var l=QP(e,a,1,n)-1;return i[l](o[l](a))}}function Z1(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function X$(){var e=iy,t=iy,r=Sp,n,o,i,s=so,a,l,u;function c(){var p=Math.min(e.length,t.length);return s!==so&&(s=z$(e[0],e[p-1])),a=p>2?Q$:G$,l=u=null,d}function d(p){return p==null||isNaN(p=+p)?i:(l||(l=a(e.map(n),t,r)))(n(s(p)))}return d.invert=function(p){return s(o((u||(u=a(t,e.map(n),hr)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,Y$),c()):e.slice()},d.range=function(p){return arguments.length?(t=Array.from(p),c()):t.slice()},d.rangeRound=function(p){return t=Array.from(p),r=pD,c()},d.clamp=function(p){return arguments.length?(s=p?!0:so,c()):s!==so},d.interpolate=function(p){return arguments.length?(r=p,c()):r},d.unknown=function(p){return arguments.length?(i=p,d):i},function(p,m){return n=p,o=m,c()}}function eE(){return X$()(so,so)}function J$(e,t,r,n){var o=zh(e,t,r),i;switch(n=Il(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(i=H$(o,s))&&(n.precision=i),X1(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=V$(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=W$(o))&&(n.precision=i-(n.type==="%")*2);break}}return Q1(n)}function Z$(e){var t=e.domain;return e.ticks=function(r){var n=t();return nL(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return J$(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,i=n.length-1,s=n[o],a=n[i],l,u,c=10;for(a<s&&(u=s,s=a,a=u,u=o,o=i,i=u);c-- >0;){if(u=Yh(s,a,r),u===l)return n[o]=s,n[i]=a,t(n);if(u>0)s=Math.floor(s/u)*u,a=Math.ceil(a/u)*u;else if(u<0)s=Math.ceil(s*u)/u,a=Math.floor(a*u)/u;else break;l=u}return e},e}function eU(){var e=eE();return e.copy=function(){return Z1(e,eU())},Su.apply(e,arguments),Z$(e)}function tU(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],i=e[n],s;return i<o&&(s=r,r=n,n=s,s=o,o=i,i=s),e[r]=t.floor(o),e[n]=t.ceil(i),e}const Bc=new Date,Dc=new Date;function ht(e,t,r,n){function o(i){return e(i=arguments.length===0?new Date:new Date(+i)),i}return o.floor=i=>(e(i=new Date(+i)),i),o.ceil=i=>(e(i=new Date(i-1)),t(i,1),e(i),i),o.round=i=>{const s=o(i),a=o.ceil(i);return i-s<a-i?s:a},o.offset=(i,s)=>(t(i=new Date(+i),s==null?1:Math.floor(s)),i),o.range=(i,s,a)=>{const l=[];if(i=o.ceil(i),a=a==null?1:Math.floor(a),!(i<s)||!(a>0))return l;let u;do l.push(u=new Date(+i)),t(i,a),e(i);while(u<i&&i<s);return l},o.filter=i=>ht(s=>{if(s>=s)for(;e(s),!i(s);)s.setTime(s-1)},(s,a)=>{if(s>=s)if(a<0)for(;++a<=0;)for(;t(s,-1),!i(s););else for(;--a>=0;)for(;t(s,1),!i(s););}),r&&(o.count=(i,s)=>(Bc.setTime(+i),Dc.setTime(+s),e(Bc),e(Dc),Math.floor(r(Bc,Dc))),o.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?o.filter(n?s=>n(s)%i===0:s=>o.count(0,s)%i===0):o)),o}const Cl=ht(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Cl.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?ht(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Cl);Cl.range;const Xr=1e3,er=Xr*60,Jr=er*60,cn=Jr*24,Cp=cn*7,oy=cn*30,$c=cn*365,ao=ht(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*Xr)},(e,t)=>(t-e)/Xr,e=>e.getUTCSeconds());ao.range;const Rp=ht(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Xr)},(e,t)=>{e.setTime(+e+t*er)},(e,t)=>(t-e)/er,e=>e.getMinutes());Rp.range;const rU=ht(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*er)},(e,t)=>(t-e)/er,e=>e.getUTCMinutes());rU.range;const Op=ht(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Xr-e.getMinutes()*er)},(e,t)=>{e.setTime(+e+t*Jr)},(e,t)=>(t-e)/Jr,e=>e.getHours());Op.range;const nU=ht(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*Jr)},(e,t)=>(t-e)/Jr,e=>e.getUTCHours());nU.range;const Gs=ht(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*er)/cn,e=>e.getDate()-1);Gs.range;const kp=ht(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/cn,e=>e.getUTCDate()-1);kp.range;const iU=ht(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/cn,e=>Math.floor(e/cn));iU.range;function Vi(e){return ht(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*er)/Cp)}const Au=Vi(0),Rl=Vi(1),oU=Vi(2),sU=Vi(3),Po=Vi(4),aU=Vi(5),lU=Vi(6);Au.range;Rl.range;oU.range;sU.range;Po.range;aU.range;lU.range;function qi(e){return ht(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/Cp)}const tE=qi(0),Ol=qi(1),uU=qi(2),cU=qi(3),Lo=qi(4),fU=qi(5),hU=qi(6);tE.range;Ol.range;uU.range;cU.range;Lo.range;fU.range;hU.range;const Np=ht(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Np.range;const dU=ht(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());dU.range;const fn=ht(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());fn.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:ht(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});fn.range;const Oi=ht(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Oi.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:ht(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});Oi.range;function pU(e,t,r,n,o,i){const s=[[ao,1,Xr],[ao,5,5*Xr],[ao,15,15*Xr],[ao,30,30*Xr],[i,1,er],[i,5,5*er],[i,15,15*er],[i,30,30*er],[o,1,Jr],[o,3,3*Jr],[o,6,6*Jr],[o,12,12*Jr],[n,1,cn],[n,2,2*cn],[r,1,Cp],[t,1,oy],[t,3,3*oy],[e,1,$c]];function a(u,c,d){const p=c<u;p&&([u,c]=[c,u]);const m=d&&typeof d.range=="function"?d:l(u,c,d),_=m?m.range(u,+c+1):[];return p?_.reverse():_}function l(u,c,d){const p=Math.abs(c-u)/d,m=_p(([,,T])=>T).right(s,p);if(m===s.length)return e.every(zh(u/$c,c/$c,d));if(m===0)return Cl.every(Math.max(zh(u,c,d),1));const[_,b]=s[p/s[m-1][2]<s[m][2]/p?m-1:m];return _.every(b)}return[a,l]}const[gU,mU]=pU(fn,Np,Au,Gs,Op,Rp);function Uc(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Fc(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function is(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function yU(e){var t=e.dateTime,r=e.date,n=e.time,o=e.periods,i=e.days,s=e.shortDays,a=e.months,l=e.shortMonths,u=os(o),c=ss(o),d=os(i),p=ss(i),m=os(s),_=ss(s),b=os(a),T=ss(a),N=os(l),R=ss(l),S={a:ae,A:z,b:pe,B:de,c:null,d:fy,e:fy,f:FU,g:QU,G:JU,H:DU,I:$U,j:UU,L:rE,m:jU,M:WU,p:ge,q:O,Q:py,s:gy,S:HU,u:VU,U:qU,V:KU,w:YU,W:zU,x:null,X:null,y:GU,Y:XU,Z:ZU,"%":dy},D={a:ie,A:me,b:ve,B:ye,c:null,d:hy,e:hy,f:nF,g:dF,G:gF,H:eF,I:tF,j:rF,L:iE,m:iF,M:oF,p:q,q:F,Q:py,s:gy,S:sF,u:aF,U:lF,V:uF,w:cF,W:fF,x:null,X:null,y:hF,Y:pF,Z:mF,"%":dy},U={a:se,A:re,b:P,B,c:oe,d:uy,e:uy,f:MU,g:ly,G:ay,H:cy,I:cy,j:RU,L:NU,m:CU,M:OU,p:Y,q:IU,Q:LU,s:BU,S:kU,u:EU,U:SU,V:AU,w:vU,W:TU,x:ne,X:ue,y:ly,Y:ay,Z:xU,"%":PU};S.x=x(r,S),S.X=x(n,S),S.c=x(t,S),D.x=x(r,D),D.X=x(n,D),D.c=x(t,D);function x(X,he){return function(ce){var Z=[],v=-1,A=0,E=X.length,k,M,ee;for(ce instanceof Date||(ce=new Date(+ce));++v<E;)X.charCodeAt(v)===37&&(Z.push(X.slice(A,v)),(M=sy[k=X.charAt(++v)])!=null?k=X.charAt(++v):M=k==="e"?" ":"0",(ee=he[k])&&(k=ee(ce,M)),Z.push(k),A=v+1);return Z.push(X.slice(A,v)),Z.join("")}}function L(X,he){return function(ce){var Z=is(1900,void 0,1),v=j(Z,X,ce+="",0),A,E;if(v!=ce.length)return null;if("Q"in Z)return new Date(Z.Q);if("s"in Z)return new Date(Z.s*1e3+("L"in Z?Z.L:0));if(he&&!("Z"in Z)&&(Z.Z=0),"p"in Z&&(Z.H=Z.H%12+Z.p*12),Z.m===void 0&&(Z.m="q"in Z?Z.q:0),"V"in Z){if(Z.V<1||Z.V>53)return null;"w"in Z||(Z.w=1),"Z"in Z?(A=Fc(is(Z.y,0,1)),E=A.getUTCDay(),A=E>4||E===0?Ol.ceil(A):Ol(A),A=kp.offset(A,(Z.V-1)*7),Z.y=A.getUTCFullYear(),Z.m=A.getUTCMonth(),Z.d=A.getUTCDate()+(Z.w+6)%7):(A=Uc(is(Z.y,0,1)),E=A.getDay(),A=E>4||E===0?Rl.ceil(A):Rl(A),A=Gs.offset(A,(Z.V-1)*7),Z.y=A.getFullYear(),Z.m=A.getMonth(),Z.d=A.getDate()+(Z.w+6)%7)}else("W"in Z||"U"in Z)&&("w"in Z||(Z.w="u"in Z?Z.u%7:"W"in Z?1:0),E="Z"in Z?Fc(is(Z.y,0,1)).getUTCDay():Uc(is(Z.y,0,1)).getDay(),Z.m=0,Z.d="W"in Z?(Z.w+6)%7+Z.W*7-(E+5)%7:Z.w+Z.U*7-(E+6)%7);return"Z"in Z?(Z.H+=Z.Z/100|0,Z.M+=Z.Z%100,Fc(Z)):Uc(Z)}}function j(X,he,ce,Z){for(var v=0,A=he.length,E=ce.length,k,M;v<A;){if(Z>=E)return-1;if(k=he.charCodeAt(v++),k===37){if(k=he.charAt(v++),M=U[k in sy?he.charAt(v++):k],!M||(Z=M(X,ce,Z))<0)return-1}else if(k!=ce.charCodeAt(Z++))return-1}return Z}function Y(X,he,ce){var Z=u.exec(he.slice(ce));return Z?(X.p=c.get(Z[0].toLowerCase()),ce+Z[0].length):-1}function se(X,he,ce){var Z=m.exec(he.slice(ce));return Z?(X.w=_.get(Z[0].toLowerCase()),ce+Z[0].length):-1}function re(X,he,ce){var Z=d.exec(he.slice(ce));return Z?(X.w=p.get(Z[0].toLowerCase()),ce+Z[0].length):-1}function P(X,he,ce){var Z=N.exec(he.slice(ce));return Z?(X.m=R.get(Z[0].toLowerCase()),ce+Z[0].length):-1}function B(X,he,ce){var Z=b.exec(he.slice(ce));return Z?(X.m=T.get(Z[0].toLowerCase()),ce+Z[0].length):-1}function oe(X,he,ce){return j(X,t,he,ce)}function ne(X,he,ce){return j(X,r,he,ce)}function ue(X,he,ce){return j(X,n,he,ce)}function ae(X){return s[X.getDay()]}function z(X){return i[X.getDay()]}function pe(X){return l[X.getMonth()]}function de(X){return a[X.getMonth()]}function ge(X){return o[+(X.getHours()>=12)]}function O(X){return 1+~~(X.getMonth()/3)}function ie(X){return s[X.getUTCDay()]}function me(X){return i[X.getUTCDay()]}function ve(X){return l[X.getUTCMonth()]}function ye(X){return a[X.getUTCMonth()]}function q(X){return o[+(X.getUTCHours()>=12)]}function F(X){return 1+~~(X.getUTCMonth()/3)}return{format:function(X){var he=x(X+="",S);return he.toString=function(){return X},he},parse:function(X){var he=L(X+="",!1);return he.toString=function(){return X},he},utcFormat:function(X){var he=x(X+="",D);return he.toString=function(){return X},he},utcParse:function(X){var he=L(X+="",!0);return he.toString=function(){return X},he}}}var sy={"-":"",_:" ",0:"0"},pt=/^\s*\d+/,_U=/^%/,bU=/[\\^$*+?|[\]().{}]/g;function je(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",i=o.length;return n+(i<r?new Array(r-i+1).join(t)+o:o)}function wU(e){return e.replace(bU,"\\$&")}function os(e){return new RegExp("^(?:"+e.map(wU).join("|")+")","i")}function ss(e){return new Map(e.map((t,r)=>[t.toLowerCase(),r]))}function vU(e,t,r){var n=pt.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function EU(e,t,r){var n=pt.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function SU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function AU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function TU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function ay(e,t,r){var n=pt.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function ly(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function xU(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function IU(e,t,r){var n=pt.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function CU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function uy(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function RU(e,t,r){var n=pt.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function cy(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function OU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function kU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function NU(e,t,r){var n=pt.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function MU(e,t,r){var n=pt.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function PU(e,t,r){var n=_U.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function LU(e,t,r){var n=pt.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function BU(e,t,r){var n=pt.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function fy(e,t){return je(e.getDate(),t,2)}function DU(e,t){return je(e.getHours(),t,2)}function $U(e,t){return je(e.getHours()%12||12,t,2)}function UU(e,t){return je(1+Gs.count(fn(e),e),t,3)}function rE(e,t){return je(e.getMilliseconds(),t,3)}function FU(e,t){return rE(e,t)+"000"}function jU(e,t){return je(e.getMonth()+1,t,2)}function WU(e,t){return je(e.getMinutes(),t,2)}function HU(e,t){return je(e.getSeconds(),t,2)}function VU(e){var t=e.getDay();return t===0?7:t}function qU(e,t){return je(Au.count(fn(e)-1,e),t,2)}function nE(e){var t=e.getDay();return t>=4||t===0?Po(e):Po.ceil(e)}function KU(e,t){return e=nE(e),je(Po.count(fn(e),e)+(fn(e).getDay()===4),t,2)}function YU(e){return e.getDay()}function zU(e,t){return je(Rl.count(fn(e)-1,e),t,2)}function GU(e,t){return je(e.getFullYear()%100,t,2)}function QU(e,t){return e=nE(e),je(e.getFullYear()%100,t,2)}function XU(e,t){return je(e.getFullYear()%1e4,t,4)}function JU(e,t){var r=e.getDay();return e=r>=4||r===0?Po(e):Po.ceil(e),je(e.getFullYear()%1e4,t,4)}function ZU(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+je(t/60|0,"0",2)+je(t%60,"0",2)}function hy(e,t){return je(e.getUTCDate(),t,2)}function eF(e,t){return je(e.getUTCHours(),t,2)}function tF(e,t){return je(e.getUTCHours()%12||12,t,2)}function rF(e,t){return je(1+kp.count(Oi(e),e),t,3)}function iE(e,t){return je(e.getUTCMilliseconds(),t,3)}function nF(e,t){return iE(e,t)+"000"}function iF(e,t){return je(e.getUTCMonth()+1,t,2)}function oF(e,t){return je(e.getUTCMinutes(),t,2)}function sF(e,t){return je(e.getUTCSeconds(),t,2)}function aF(e){var t=e.getUTCDay();return t===0?7:t}function lF(e,t){return je(tE.count(Oi(e)-1,e),t,2)}function oE(e){var t=e.getUTCDay();return t>=4||t===0?Lo(e):Lo.ceil(e)}function uF(e,t){return e=oE(e),je(Lo.count(Oi(e),e)+(Oi(e).getUTCDay()===4),t,2)}function cF(e){return e.getUTCDay()}function fF(e,t){return je(Ol.count(Oi(e)-1,e),t,2)}function hF(e,t){return je(e.getUTCFullYear()%100,t,2)}function dF(e,t){return e=oE(e),je(e.getUTCFullYear()%100,t,2)}function pF(e,t){return je(e.getUTCFullYear()%1e4,t,4)}function gF(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Lo(e):Lo.ceil(e),je(e.getUTCFullYear()%1e4,t,4)}function mF(){return"+0000"}function dy(){return"%"}function py(e){return+e}function gy(e){return Math.floor(+e/1e3)}var Xi,sE,yF;_F({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function _F(e){return Xi=yU(e),sE=Xi.format,yF=Xi.parse,Xi.utcFormat,Xi.utcParse,Xi}function bF(e){return new Date(e)}function wF(e){return e instanceof Date?+e:+new Date(+e)}function aE(e,t,r,n,o,i,s,a,l,u){var c=eE(),d=c.invert,p=c.domain,m=u(".%L"),_=u(":%S"),b=u("%I:%M"),T=u("%I %p"),N=u("%a %d"),R=u("%b %d"),S=u("%B"),D=u("%Y");function U(x){return(l(x)<x?m:a(x)<x?_:s(x)<x?b:i(x)<x?T:n(x)<x?o(x)<x?N:R:r(x)<x?S:D)(x)}return c.invert=function(x){return new Date(d(x))},c.domain=function(x){return arguments.length?p(Array.from(x,wF)):p().map(bF)},c.ticks=function(x){var L=p();return e(L[0],L[L.length-1],x??10)},c.tickFormat=function(x,L){return L==null?U:u(L)},c.nice=function(x){var L=p();return(!x||typeof x.range!="function")&&(x=t(L[0],L[L.length-1],x??10)),x?p(tU(L,x)):c},c.copy=function(){return Z1(c,aE(e,t,r,n,o,i,s,a,l,u))},c}function u3(){return Su.apply(aE(gU,mU,fn,Np,Au,Gs,Op,Rp,ao,sE).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function $e(e){return function(){return e}}const my=Math.abs,At=Math.atan2,ti=Math.cos,vF=Math.max,jc=Math.min,Er=Math.sin,lo=Math.sqrt,Pt=1e-12,Ls=Math.PI,kl=Ls/2,Ja=2*Ls;function EF(e){return e>1?0:e<-1?Ls:Math.acos(e)}function yy(e){return e>=1?kl:e<=-1?-kl:Math.asin(e)}function Mp(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new M$(t)}function SF(e){return e.innerRadius}function AF(e){return e.outerRadius}function TF(e){return e.startAngle}function xF(e){return e.endAngle}function IF(e){return e&&e.padAngle}function CF(e,t,r,n,o,i,s,a){var l=r-e,u=n-t,c=s-o,d=a-i,p=d*l-c*u;if(!(p*p<Pt))return p=(c*(t-i)-d*(e-o))/p,[e+p*l,t+p*u]}function Aa(e,t,r,n,o,i,s){var a=e-r,l=t-n,u=(s?i:-i)/lo(a*a+l*l),c=u*l,d=-u*a,p=e+c,m=t+d,_=r+c,b=n+d,T=(p+_)/2,N=(m+b)/2,R=_-p,S=b-m,D=R*R+S*S,U=o-i,x=p*b-_*m,L=(S<0?-1:1)*lo(vF(0,U*U*D-x*x)),j=(x*S-R*L)/D,Y=(-x*R-S*L)/D,se=(x*S+R*L)/D,re=(-x*R+S*L)/D,P=j-T,B=Y-N,oe=se-T,ne=re-N;return P*P+B*B>oe*oe+ne*ne&&(j=se,Y=re),{cx:j,cy:Y,x01:-c,y01:-d,x11:j*(o/U-1),y11:Y*(o/U-1)}}function c3(){var e=SF,t=AF,r=$e(0),n=null,o=TF,i=xF,s=IF,a=null,l=Mp(u);function u(){var c,d,p=+e.apply(this,arguments),m=+t.apply(this,arguments),_=o.apply(this,arguments)-kl,b=i.apply(this,arguments)-kl,T=my(b-_),N=b>_;if(a||(a=c=l()),m<p&&(d=m,m=p,p=d),!(m>Pt))a.moveTo(0,0);else if(T>Ja-Pt)a.moveTo(m*ti(_),m*Er(_)),a.arc(0,0,m,_,b,!N),p>Pt&&(a.moveTo(p*ti(b),p*Er(b)),a.arc(0,0,p,b,_,N));else{var R=_,S=b,D=_,U=b,x=T,L=T,j=s.apply(this,arguments)/2,Y=j>Pt&&(n?+n.apply(this,arguments):lo(p*p+m*m)),se=jc(my(m-p)/2,+r.apply(this,arguments)),re=se,P=se,B,oe;if(Y>Pt){var ne=yy(Y/p*Er(j)),ue=yy(Y/m*Er(j));(x-=ne*2)>Pt?(ne*=N?1:-1,D+=ne,U-=ne):(x=0,D=U=(_+b)/2),(L-=ue*2)>Pt?(ue*=N?1:-1,R+=ue,S-=ue):(L=0,R=S=(_+b)/2)}var ae=m*ti(R),z=m*Er(R),pe=p*ti(U),de=p*Er(U);if(se>Pt){var ge=m*ti(S),O=m*Er(S),ie=p*ti(D),me=p*Er(D),ve;if(T<Ls)if(ve=CF(ae,z,ie,me,ge,O,pe,de)){var ye=ae-ve[0],q=z-ve[1],F=ge-ve[0],X=O-ve[1],he=1/Er(EF((ye*F+q*X)/(lo(ye*ye+q*q)*lo(F*F+X*X)))/2),ce=lo(ve[0]*ve[0]+ve[1]*ve[1]);re=jc(se,(p-ce)/(he-1)),P=jc(se,(m-ce)/(he+1))}else re=P=0}L>Pt?P>Pt?(B=Aa(ie,me,ae,z,m,P,N),oe=Aa(ge,O,pe,de,m,P,N),a.moveTo(B.cx+B.x01,B.cy+B.y01),P<se?a.arc(B.cx,B.cy,P,At(B.y01,B.x01),At(oe.y01,oe.x01),!N):(a.arc(B.cx,B.cy,P,At(B.y01,B.x01),At(B.y11,B.x11),!N),a.arc(0,0,m,At(B.cy+B.y11,B.cx+B.x11),At(oe.cy+oe.y11,oe.cx+oe.x11),!N),a.arc(oe.cx,oe.cy,P,At(oe.y11,oe.x11),At(oe.y01,oe.x01),!N))):(a.moveTo(ae,z),a.arc(0,0,m,R,S,!N)):a.moveTo(ae,z),!(p>Pt)||!(x>Pt)?a.lineTo(pe,de):re>Pt?(B=Aa(pe,de,ge,O,p,-re,N),oe=Aa(ae,z,ie,me,p,-re,N),a.lineTo(B.cx+B.x01,B.cy+B.y01),re<se?a.arc(B.cx,B.cy,re,At(B.y01,B.x01),At(oe.y01,oe.x01),!N):(a.arc(B.cx,B.cy,re,At(B.y01,B.x01),At(B.y11,B.x11),!N),a.arc(0,0,p,At(B.cy+B.y11,B.cx+B.x11),At(oe.cy+oe.y11,oe.cx+oe.x11),N),a.arc(oe.cx,oe.cy,re,At(oe.y11,oe.x11),At(oe.y01,oe.x01),!N))):a.arc(0,0,p,U,D,N)}if(a.closePath(),c)return a=null,c+""||null}return u.centroid=function(){var c=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,d=(+o.apply(this,arguments)+ +i.apply(this,arguments))/2-Ls/2;return[ti(d)*c,Er(d)*c]},u.innerRadius=function(c){return arguments.length?(e=typeof c=="function"?c:$e(+c),u):e},u.outerRadius=function(c){return arguments.length?(t=typeof c=="function"?c:$e(+c),u):t},u.cornerRadius=function(c){return arguments.length?(r=typeof c=="function"?c:$e(+c),u):r},u.padRadius=function(c){return arguments.length?(n=c==null?null:typeof c=="function"?c:$e(+c),u):n},u.startAngle=function(c){return arguments.length?(o=typeof c=="function"?c:$e(+c),u):o},u.endAngle=function(c){return arguments.length?(i=typeof c=="function"?c:$e(+c),u):i},u.padAngle=function(c){return arguments.length?(s=typeof c=="function"?c:$e(+c),u):s},u.context=function(c){return arguments.length?(a=c??null,u):a},u}function Tu(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function lE(e){this._context=e}lE.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function uE(e){return new lE(e)}function cE(e){return e[0]}function fE(e){return e[1]}function RF(e,t){var r=$e(!0),n=null,o=uE,i=null,s=Mp(a);e=typeof e=="function"?e:e===void 0?cE:$e(e),t=typeof t=="function"?t:t===void 0?fE:$e(t);function a(l){var u,c=(l=Tu(l)).length,d,p=!1,m;for(n==null&&(i=o(m=s())),u=0;u<=c;++u)!(u<c&&r(d=l[u],u,l))===p&&((p=!p)?i.lineStart():i.lineEnd()),p&&i.point(+e(d,u,l),+t(d,u,l));if(m)return i=null,m+""||null}return a.x=function(l){return arguments.length?(e=typeof l=="function"?l:$e(+l),a):e},a.y=function(l){return arguments.length?(t=typeof l=="function"?l:$e(+l),a):t},a.defined=function(l){return arguments.length?(r=typeof l=="function"?l:$e(!!l),a):r},a.curve=function(l){return arguments.length?(o=l,n!=null&&(i=o(n)),a):o},a.context=function(l){return arguments.length?(l==null?n=i=null:i=o(n=l),a):n},a}function f3(e,t,r){var n=null,o=$e(!0),i=null,s=uE,a=null,l=Mp(u);e=typeof e=="function"?e:e===void 0?cE:$e(+e),t=typeof t=="function"?t:$e(t===void 0?0:+t),r=typeof r=="function"?r:r===void 0?fE:$e(+r);function u(d){var p,m,_,b=(d=Tu(d)).length,T,N=!1,R,S=new Array(b),D=new Array(b);for(i==null&&(a=s(R=l())),p=0;p<=b;++p){if(!(p<b&&o(T=d[p],p,d))===N)if(N=!N)m=p,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),_=p-1;_>=m;--_)a.point(S[_],D[_]);a.lineEnd(),a.areaEnd()}N&&(S[p]=+e(T,p,d),D[p]=+t(T,p,d),a.point(n?+n(T,p,d):S[p],r?+r(T,p,d):D[p]))}if(R)return a=null,R+""||null}function c(){return RF().defined(o).curve(s).context(i)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:$e(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:$e(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:$e(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:$e(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:$e(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:$e(+d),u):r},u.lineX0=u.lineY0=function(){return c().x(e).y(t)},u.lineY1=function(){return c().x(e).y(r)},u.lineX1=function(){return c().x(n).y(t)},u.defined=function(d){return arguments.length?(o=typeof d=="function"?d:$e(!!d),u):o},u.curve=function(d){return arguments.length?(s=d,i!=null&&(a=s(i)),u):s},u.context=function(d){return arguments.length?(d==null?i=a=null:a=s(i=d),u):i},u}function OF(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}function kF(e){return e}function h3(){var e=kF,t=OF,r=null,n=$e(0),o=$e(Ja),i=$e(0);function s(a){var l,u=(a=Tu(a)).length,c,d,p=0,m=new Array(u),_=new Array(u),b=+n.apply(this,arguments),T=Math.min(Ja,Math.max(-Ja,o.apply(this,arguments)-b)),N,R=Math.min(Math.abs(T)/u,i.apply(this,arguments)),S=R*(T<0?-1:1),D;for(l=0;l<u;++l)(D=_[m[l]=l]=+e(a[l],l,a))>0&&(p+=D);for(t!=null?m.sort(function(U,x){return t(_[U],_[x])}):r!=null&&m.sort(function(U,x){return r(a[U],a[x])}),l=0,d=p?(T-u*S)/p:0;l<u;++l,b=N)c=m[l],D=_[c],N=b+(D>0?D*d:0)+S,_[c]={data:a[c],index:l,value:D,startAngle:b,endAngle:N,padAngle:R};return _}return s.value=function(a){return arguments.length?(e=typeof a=="function"?a:$e(+a),s):e},s.sortValues=function(a){return arguments.length?(t=a,r=null,s):t},s.sort=function(a){return arguments.length?(r=a,t=null,s):r},s.startAngle=function(a){return arguments.length?(n=typeof a=="function"?a:$e(+a),s):n},s.endAngle=function(a){return arguments.length?(o=typeof a=="function"?a:$e(+a),s):o},s.padAngle=function(a){return arguments.length?(i=typeof a=="function"?a:$e(+a),s):i},s}function _y(e,t){if((s=e.length)>1)for(var r=1,n,o,i=e[t[0]],s,a=i.length;r<s;++r)for(o=i,i=e[t[r]],n=0;n<a;++n)i[n][1]+=i[n][0]=isNaN(o[n][1])?o[n][0]:o[n][1]}function by(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}function NF(e,t){return e[t]}function MF(e){const t=[];return t.key=e,t}function d3(){var e=$e([]),t=by,r=_y,n=NF;function o(i){var s=Array.from(e.apply(this,arguments),MF),a,l=s.length,u=-1,c;for(const d of i)for(a=0,++u;a<l;++a)(s[a][u]=[0,+n(d,s[a].key,u,i)]).data=d;for(a=0,c=Tu(t(s));a<l;++a)s[c[a]].index=a;return r(s,c),s}return o.keys=function(i){return arguments.length?(e=typeof i=="function"?i:$e(Array.from(i)),o):e},o.value=function(i){return arguments.length?(n=typeof i=="function"?i:$e(+i),o):n},o.order=function(i){return arguments.length?(t=i==null?by:typeof i=="function"?i:$e(Array.from(i)),o):t},o.offset=function(i){return arguments.length?(r=i??_y,o):r},o}function gs(e,t,r){this.k=e,this.x=t,this.y=r}gs.prototype={constructor:gs,scale:function(e){return e===1?this:new gs(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new gs(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};gs.prototype;export{WF as A,t3 as B,q$ as C,eU as D,d3 as E,fr as F,s3 as G,f3 as H,l3 as I,o3 as J,sE as K,n3 as L,Co as M,u3 as N,RF as O,i3 as P,r3 as Q,FF as R,zF as S,GF as T,qF as U,TS as V,yF as W,Ro as X,YF as Y,QF as Z,BF as a,KF as b,VF as c,jF as d,g_ as e,HF as f,cd as g,uA as h,SS as i,xS as j,yr as k,h_ as l,XF as m,fd as n,c_ as o,ZS as p,DF as q,yd as r,a3 as s,LF as t,ZE as u,$F as v,lS as w,h3 as x,c3 as y,UF as z};
diff --git a/packages/modules/display_themes/colors/web/assets/vendor-BjGoVRCW.js b/packages/modules/display_themes/colors/web/assets/vendor-BjGoVRCW.js
deleted file mode 100644
index a77d37f310..0000000000
--- a/packages/modules/display_themes/colors/web/assets/vendor-BjGoVRCW.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var dE=Object.defineProperty;var pE=(e,t,r)=>t in e?dE(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var it=(e,t,r)=>(pE(e,typeof t!="symbol"?t+"":t,r),r),Ou=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var G=(e,t,r)=>(Ou(e,t,"read from private field"),r?r.call(e):t.get(e)),$e=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},Le=(e,t,r,n)=>(Ou(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var Xs=(e,t,r,n)=>({set _(o){Le(e,t,o,r)},get _(){return G(e,t,n)}}),Me=(e,t,r)=>(Ou(e,t,"access private method"),r);const Ii=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};/**
-* @vue/shared v3.4.21
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function ld(e,t){const r=new Set(e.split(","));return n=>r.has(n)}const Xe={},fo=[],tr=()=>{},gE=()=>!1,Nl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ud=e=>e.startsWith("onUpdate:"),wt=Object.assign,cd=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},mE=Object.prototype.hasOwnProperty,Fe=(e,t)=>mE.call(e,t),Be=Array.isArray,ho=e=>Ds(e)==="[object Map]",Ml=e=>Ds(e)==="[object Set]",Up=e=>Ds(e)==="[object Date]",De=e=>typeof e=="function",dt=e=>typeof e=="string",Dn=e=>typeof e=="symbol",Je=e=>e!==null&&typeof e=="object",vy=e=>(Je(e)||De(e))&&De(e.then)&&De(e.catch),Ey=Object.prototype.toString,Ds=e=>Ey.call(e),yE=e=>Ds(e).slice(8,-1),Sy=e=>Ds(e)==="[object Object]",fd=e=>dt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ys=ld(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Pl=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},_E=/-(\w)/g,$r=Pl(e=>e.replace(_E,(t,r)=>r?r.toUpperCase():"")),bE=/\B([A-Z])/g,Do=Pl(e=>e.replace(bE,"-$1").toLowerCase()),Ll=Pl(e=>e.charAt(0).toUpperCase()+e.slice(1)),ku=Pl(e=>e?`on${Ll(e)}`:""),$n=(e,t)=>!Object.is(e,t),xa=(e,t)=>{for(let r=0;r<e.length;r++)e[r](t)},Za=(e,t,r)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},Vc=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Fp;const Ay=()=>Fp||(Fp=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof Ii<"u"?Ii:{});function hd(e){if(Be(e)){const t={};for(let r=0;r<e.length;r++){const n=e[r],o=dt(n)?SE(n):hd(n);if(o)for(const i in o)t[i]=o[i]}return t}else if(dt(e)||Je(e))return e}const wE=/;(?![^(]*\))/g,vE=/:([^]+)/,EE=/\/\*[^]*?\*\//g;function SE(e){const t={};return e.replace(EE,"").split(wE).forEach(r=>{if(r){const n=r.split(vE);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function dd(e){let t="";if(dt(e))t=e;else if(Be(e))for(let r=0;r<e.length;r++){const n=dd(e[r]);n&&(t+=n+" ")}else if(Je(e))for(const r in e)e[r]&&(t+=r+" ");return t.trim()}const AE="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",TE=ld(AE);function Ty(e){return!!e||e===""}function xE(e,t){if(e.length!==t.length)return!1;let r=!0;for(let n=0;r&&n<e.length;n++)r=Bl(e[n],t[n]);return r}function Bl(e,t){if(e===t)return!0;let r=Up(e),n=Up(t);if(r||n)return r&&n?e.getTime()===t.getTime():!1;if(r=Dn(e),n=Dn(t),r||n)return e===t;if(r=Be(e),n=Be(t),r||n)return r&&n?xE(e,t):!1;if(r=Je(e),n=Je(t),r||n){if(!r||!n)return!1;const o=Object.keys(e).length,i=Object.keys(t).length;if(o!==i)return!1;for(const s in e){const a=e.hasOwnProperty(s),l=t.hasOwnProperty(s);if(a&&!l||!a&&l||!Bl(e[s],t[s]))return!1}}return String(e)===String(t)}function xy(e,t){return e.findIndex(r=>Bl(r,t))}const $F=e=>dt(e)?e:e==null?"":Be(e)||Je(e)&&(e.toString===Ey||!De(e.toString))?JSON.stringify(e,Iy,2):String(e),Iy=(e,t)=>t&&t.__v_isRef?Iy(e,t.value):ho(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[n,o],i)=>(r[Nu(n,i)+" =>"]=o,r),{})}:Ml(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>Nu(r))}:Dn(t)?Nu(t):Je(t)&&!Be(t)&&!Sy(t)?String(t):t,Nu=(e,t="")=>{var r;return Dn(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/**
-* @vue/reactivity v3.4.21
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let fr;class IE{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=fr,!t&&fr&&(this.index=(fr.scopes||(fr.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=fr;try{return fr=this,t()}finally{fr=r}}}on(){fr=this}off(){fr=this.parent}stop(t){if(this._active){let r,n;for(r=0,n=this.effects.length;r<n;r++)this.effects[r].stop();for(r=0,n=this.cleanups.length;r<n;r++)this.cleanups[r]();if(this.scopes)for(r=0,n=this.scopes.length;r<n;r++)this.scopes[r].stop(!0);if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0,this._active=!1}}}function CE(e,t=fr){t&&t.active&&t.effects.push(e)}function RE(){return fr}let bi;class pd{constructor(t,r,n,o){this.fn=t,this.trigger=r,this.scheduler=n,this.active=!0,this.deps=[],this._dirtyLevel=4,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,CE(this,o)}get dirty(){if(this._dirtyLevel===2||this._dirtyLevel===3){this._dirtyLevel=1,Pi();for(let t=0;t<this._depsLength;t++){const r=this.deps[t];if(r.computed&&(OE(r.computed),this._dirtyLevel>=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),Li()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ln,r=bi;try{return Ln=!0,bi=this,this._runnings++,jp(this),this.fn()}finally{Wp(this),this._runnings--,bi=r,Ln=t}}stop(){var t;this.active&&(jp(this),Wp(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function OE(e){return e.value}function jp(e){e._trackId++,e._depsLength=0}function Wp(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t<e.deps.length;t++)Cy(e.deps[t],e);e.deps.length=e._depsLength}}function Cy(e,t){const r=e.get(t);r!==void 0&&t._trackId!==r&&(e.delete(t),e.size===0&&e.cleanup())}let Ln=!0,qc=0;const Ry=[];function Pi(){Ry.push(Ln),Ln=!1}function Li(){const e=Ry.pop();Ln=e===void 0?!0:e}function gd(){qc++}function md(){for(qc--;!qc&&Kc.length;)Kc.shift()()}function Oy(e,t,r){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const n=e.deps[e._depsLength];n!==t?(n&&Cy(n,e),e.deps[e._depsLength++]=t):e._depsLength++}}const Kc=[];function ky(e,t,r){gd();for(const n of e.keys()){let o;n._dirtyLevel<t&&(o??(o=e.get(n)===n._trackId))&&(n._shouldSchedule||(n._shouldSchedule=n._dirtyLevel===0),n._dirtyLevel=t),n._shouldSchedule&&(o??(o=e.get(n)===n._trackId))&&(n.trigger(),(!n._runnings||n.allowRecurse)&&n._dirtyLevel!==2&&(n._shouldSchedule=!1,n.scheduler&&Kc.push(n.scheduler)))}md()}const Ny=(e,t)=>{const r=new Map;return r.cleanup=e,r.computed=t,r},Yc=new WeakMap,wi=Symbol(""),zc=Symbol("");function jt(e,t,r){if(Ln&&bi){let n=Yc.get(e);n||Yc.set(e,n=new Map);let o=n.get(r);o||n.set(r,o=Ny(()=>n.delete(r))),Oy(bi,o)}}function nn(e,t,r,n,o,i){const s=Yc.get(e);if(!s)return;let a=[];if(t==="clear")a=[...s.values()];else if(r==="length"&&Be(e)){const l=Number(n);s.forEach((u,c)=>{(c==="length"||!Dn(c)&&c>=l)&&a.push(u)})}else switch(r!==void 0&&a.push(s.get(r)),t){case"add":Be(e)?fd(r)&&a.push(s.get("length")):(a.push(s.get(wi)),ho(e)&&a.push(s.get(zc)));break;case"delete":Be(e)||(a.push(s.get(wi)),ho(e)&&a.push(s.get(zc)));break;case"set":ho(e)&&a.push(s.get(wi));break}gd();for(const l of a)l&&ky(l,4);md()}const kE=ld("__proto__,__v_isRef,__isVue"),My=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Dn)),Hp=NE();function NE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const n=We(this);for(let i=0,s=this.length;i<s;i++)jt(n,"get",i+"");const o=n[t](...r);return o===-1||o===!1?n[t](...r.map(We)):o}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...r){Pi(),gd();const n=We(this)[t].apply(this,r);return md(),Li(),n}}),e}function ME(e){const t=We(this);return jt(t,"has",e),t.hasOwnProperty(e)}class Py{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,n){const o=this._isReadonly,i=this._isShallow;if(r==="__v_isReactive")return!o;if(r==="__v_isReadonly")return o;if(r==="__v_isShallow")return i;if(r==="__v_raw")return n===(o?i?KE:$y:i?Dy:By).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const s=Be(t);if(!o){if(s&&Fe(Hp,r))return Reflect.get(Hp,r,n);if(r==="hasOwnProperty")return ME}const a=Reflect.get(t,r,n);return(Dn(r)?My.has(r):kE(r))||(o||jt(t,"get",r),i)?a:Wt(a)?s&&fd(r)?a:a.value:Je(a)?o?Uy(a):bd(a):a}}class Ly extends Py{constructor(t=!1){super(!1,t)}set(t,r,n,o){let i=t[r];if(!this._isShallow){const l=Eo(i);if(!el(n)&&!Eo(n)&&(i=We(i),n=We(n)),!Be(t)&&Wt(i)&&!Wt(n))return l?!1:(i.value=n,!0)}const s=Be(t)&&fd(r)?Number(r)<t.length:Fe(t,r),a=Reflect.set(t,r,n,o);return t===We(o)&&(s?$n(n,i)&&nn(t,"set",r,n):nn(t,"add",r,n)),a}deleteProperty(t,r){const n=Fe(t,r);t[r];const o=Reflect.deleteProperty(t,r);return o&&n&&nn(t,"delete",r,void 0),o}has(t,r){const n=Reflect.has(t,r);return(!Dn(r)||!My.has(r))&&jt(t,"has",r),n}ownKeys(t){return jt(t,"iterate",Be(t)?"length":wi),Reflect.ownKeys(t)}}class PE extends Py{constructor(t=!1){super(!0,t)}set(t,r){return!0}deleteProperty(t,r){return!0}}const LE=new Ly,BE=new PE,DE=new Ly(!0),yd=e=>e,Dl=e=>Reflect.getPrototypeOf(e);function Js(e,t,r=!1,n=!1){e=e.__v_raw;const o=We(e),i=We(t);r||($n(t,i)&&jt(o,"get",t),jt(o,"get",i));const{has:s}=Dl(o),a=n?yd:r?vd:Is;if(s.call(o,t))return a(e.get(t));if(s.call(o,i))return a(e.get(i));e!==o&&e.get(t)}function Zs(e,t=!1){const r=this.__v_raw,n=We(r),o=We(e);return t||($n(e,o)&&jt(n,"has",e),jt(n,"has",o)),e===o?r.has(e):r.has(e)||r.has(o)}function ea(e,t=!1){return e=e.__v_raw,!t&&jt(We(e),"iterate",wi),Reflect.get(e,"size",e)}function Vp(e){e=We(e);const t=We(this);return Dl(t).has.call(t,e)||(t.add(e),nn(t,"add",e,e)),this}function qp(e,t){t=We(t);const r=We(this),{has:n,get:o}=Dl(r);let i=n.call(r,e);i||(e=We(e),i=n.call(r,e));const s=o.call(r,e);return r.set(e,t),i?$n(t,s)&&nn(r,"set",e,t):nn(r,"add",e,t),this}function Kp(e){const t=We(this),{has:r,get:n}=Dl(t);let o=r.call(t,e);o||(e=We(e),o=r.call(t,e)),n&&n.call(t,e);const i=t.delete(e);return o&&nn(t,"delete",e,void 0),i}function Yp(){const e=We(this),t=e.size!==0,r=e.clear();return t&&nn(e,"clear",void 0,void 0),r}function ta(e,t){return function(n,o){const i=this,s=i.__v_raw,a=We(s),l=t?yd:e?vd:Is;return!e&&jt(a,"iterate",wi),s.forEach((u,c)=>n.call(o,l(u),l(c),i))}}function ra(e,t,r){return function(...n){const o=this.__v_raw,i=We(o),s=ho(i),a=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,u=o[e](...n),c=r?yd:t?vd:Is;return!t&&jt(i,"iterate",l?zc:wi),{next(){const{value:d,done:p}=u.next();return p?{value:d,done:p}:{value:a?[c(d[0]),c(d[1])]:c(d),done:p}},[Symbol.iterator](){return this}}}}function Sn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function $E(){const e={get(i){return Js(this,i)},get size(){return ea(this)},has:Zs,add:Vp,set:qp,delete:Kp,clear:Yp,forEach:ta(!1,!1)},t={get(i){return Js(this,i,!1,!0)},get size(){return ea(this)},has:Zs,add:Vp,set:qp,delete:Kp,clear:Yp,forEach:ta(!1,!0)},r={get(i){return Js(this,i,!0)},get size(){return ea(this,!0)},has(i){return Zs.call(this,i,!0)},add:Sn("add"),set:Sn("set"),delete:Sn("delete"),clear:Sn("clear"),forEach:ta(!0,!1)},n={get(i){return Js(this,i,!0,!0)},get size(){return ea(this,!0)},has(i){return Zs.call(this,i,!0)},add:Sn("add"),set:Sn("set"),delete:Sn("delete"),clear:Sn("clear"),forEach:ta(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=ra(i,!1,!1),r[i]=ra(i,!0,!1),t[i]=ra(i,!1,!0),n[i]=ra(i,!0,!0)}),[e,r,t,n]}const[UE,FE,jE,WE]=$E();function _d(e,t){const r=t?e?WE:jE:e?FE:UE;return(n,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?n:Reflect.get(Fe(r,o)&&o in n?r:n,o,i)}const HE={get:_d(!1,!1)},VE={get:_d(!1,!0)},qE={get:_d(!0,!1)},By=new WeakMap,Dy=new WeakMap,$y=new WeakMap,KE=new WeakMap;function YE(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function zE(e){return e.__v_skip||!Object.isExtensible(e)?0:YE(yE(e))}function bd(e){return Eo(e)?e:wd(e,!1,LE,HE,By)}function GE(e){return wd(e,!1,DE,VE,Dy)}function Uy(e){return wd(e,!0,BE,qE,$y)}function wd(e,t,r,n,o){if(!Je(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const s=zE(e);if(s===0)return e;const a=new Proxy(e,s===2?n:r);return o.set(e,a),a}function po(e){return Eo(e)?po(e.__v_raw):!!(e&&e.__v_isReactive)}function Eo(e){return!!(e&&e.__v_isReadonly)}function el(e){return!!(e&&e.__v_isShallow)}function Fy(e){return po(e)||Eo(e)}function We(e){const t=e&&e.__v_raw;return t?We(t):e}function jy(e){return Object.isExtensible(e)&&Za(e,"__v_skip",!0),e}const Is=e=>Je(e)?bd(e):e,vd=e=>Je(e)?Uy(e):e;class Wy{constructor(t,r,n,o){this.getter=t,this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new pd(()=>t(this._value),()=>Ia(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=n}get value(){const t=We(this);return(!t._cacheable||t.effect.dirty)&&$n(t._value,t._value=t.effect.run())&&Ia(t,4),Hy(t),t.effect._dirtyLevel>=2&&Ia(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function QE(e,t,r=!1){let n,o;const i=De(e);return i?(n=e,o=tr):(n=e.get,o=e.set),new Wy(n,o,i||!o,r)}function Hy(e){var t;Ln&&bi&&(e=We(e),Oy(bi,(t=e.dep)!=null?t:e.dep=Ny(()=>e.dep=void 0,e instanceof Wy?e:void 0)))}function Ia(e,t=4,r){e=We(e);const n=e.dep;n&&ky(n,t)}function Wt(e){return!!(e&&e.__v_isRef===!0)}function UF(e){return XE(e,!1)}function XE(e,t){return Wt(e)?e:new JE(e,t)}class JE{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:We(t),this._value=r?t:Is(t)}get value(){return Hy(this),this._value}set value(t){const r=this.__v_isShallow||el(t)||Eo(t);t=r?t:We(t),$n(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:Is(t),Ia(this,4))}}function ZE(e){return Wt(e)?e.value:e}const eS={get:(e,t,r)=>ZE(Reflect.get(e,t,r)),set:(e,t,r,n)=>{const o=e[t];return Wt(o)&&!Wt(r)?(o.value=r,!0):Reflect.set(e,t,r,n)}};function Vy(e){return po(e)?e:new Proxy(e,eS)}/**
-* @vue/runtime-core v3.4.21
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function Bn(e,t,r,n){try{return n?e(...n):e()}catch(o){$l(o,t,r)}}function _r(e,t,r,n){if(De(e)){const i=Bn(e,t,r,n);return i&&vy(i)&&i.catch(s=>{$l(s,t,r)}),i}const o=[];for(let i=0;i<e.length;i++)o.push(_r(e[i],t,r,n));return o}function $l(e,t,r,n=!0){const o=t?t.vnode:null;if(t){let i=t.parent;const s=t.proxy,a=`https://vuejs.org/error-reference/#runtime-${r}`;for(;i;){const u=i.ec;if(u){for(let c=0;c<u.length;c++)if(u[c](e,s,a)===!1)return}i=i.parent}const l=t.appContext.config.errorHandler;if(l){Bn(l,null,10,[e,s,a]);return}}tS(e,r,o,n)}function tS(e,t,r,n=!0){console.error(e)}let Cs=!1,Gc=!1;const Ct=[];let Rr=0;const go=[];let kn=null,li=0;const qy=Promise.resolve();let Ed=null;function rS(e){const t=Ed||qy;return e?t.then(this?e.bind(this):e):t}function nS(e){let t=Rr+1,r=Ct.length;for(;t<r;){const n=t+r>>>1,o=Ct[n],i=Rs(o);i<e||i===e&&o.pre?t=n+1:r=n}return t}function Sd(e){(!Ct.length||!Ct.includes(e,Cs&&e.allowRecurse?Rr+1:Rr))&&(e.id==null?Ct.push(e):Ct.splice(nS(e.id),0,e),Ky())}function Ky(){!Cs&&!Gc&&(Gc=!0,Ed=qy.then(zy))}function iS(e){const t=Ct.indexOf(e);t>Rr&&Ct.splice(t,1)}function oS(e){Be(e)?go.push(...e):(!kn||!kn.includes(e,e.allowRecurse?li+1:li))&&go.push(e),Ky()}function zp(e,t,r=Cs?Rr+1:0){for(;r<Ct.length;r++){const n=Ct[r];if(n&&n.pre){if(e&&n.id!==e.uid)continue;Ct.splice(r,1),r--,n()}}}function Yy(e){if(go.length){const t=[...new Set(go)].sort((r,n)=>Rs(r)-Rs(n));if(go.length=0,kn){kn.push(...t);return}for(kn=t,li=0;li<kn.length;li++)kn[li]();kn=null,li=0}}const Rs=e=>e.id==null?1/0:e.id,sS=(e,t)=>{const r=Rs(e)-Rs(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function zy(e){Gc=!1,Cs=!0,Ct.sort(sS);try{for(Rr=0;Rr<Ct.length;Rr++){const t=Ct[Rr];t&&t.active!==!1&&Bn(t,null,14)}}finally{Rr=0,Ct.length=0,Yy(),Cs=!1,Ed=null,(Ct.length||go.length)&&zy()}}function aS(e,t,...r){if(e.isUnmounted)return;const n=e.vnode.props||Xe;let o=r;const i=t.startsWith("update:"),s=i&&t.slice(7);if(s&&s in n){const c=`${s==="modelValue"?"model":s}Modifiers`,{number:d,trim:p}=n[c]||Xe;p&&(o=r.map(g=>dt(g)?g.trim():g)),d&&(o=r.map(Vc))}let a,l=n[a=ku(t)]||n[a=ku($r(t))];!l&&i&&(l=n[a=ku(Do(t))]),l&&_r(l,e,6,o);const u=n[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,_r(u,e,6,o)}}function Gy(e,t,r=!1){const n=t.emitsCache,o=n.get(e);if(o!==void 0)return o;const i=e.emits;let s={},a=!1;if(!De(e)){const l=u=>{const c=Gy(u,t,!0);c&&(a=!0,wt(s,c))};!r&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!a?(Je(e)&&n.set(e,null),null):(Be(i)?i.forEach(l=>s[l]=null):wt(s,i),Je(e)&&n.set(e,s),s)}function Ul(e,t){return!e||!Nl(t)?!1:(t=t.slice(2).replace(/Once$/,""),Fe(e,t[0].toLowerCase()+t.slice(1))||Fe(e,Do(t))||Fe(e,t))}let _t=null,Fl=null;function tl(e){const t=_t;return _t=e,Fl=e&&e.type.__scopeId||null,t}function FF(e){Fl=e}function jF(){Fl=null}function lS(e,t=_t,r){if(!t||e._n)return e;const n=(...o)=>{n._d&&og(-1);const i=tl(t);let s;try{s=e(...o)}finally{tl(i),n._d&&og(1)}return s};return n._n=!0,n._c=!0,n._d=!0,n}function Mu(e){const{type:t,vnode:r,proxy:n,withProxy:o,props:i,propsOptions:[s],slots:a,attrs:l,emit:u,render:c,renderCache:d,data:p,setupState:g,ctx:_,inheritAttrs:b}=e;let x,k;const R=tl(e);try{if(r.shapeFlag&4){const B=o||n,$=B;x=Cr(c.call($,B,d,i,g,p,_)),k=l}else{const B=t;x=Cr(B.length>1?B(i,{attrs:l,slots:a,emit:u}):B(i,null)),k=t.props?l:uS(l)}}catch(B){vs.length=0,$l(B,e,1),x=Mr(Un)}let A=x;if(k&&b!==!1){const B=Object.keys(k),{shapeFlag:$}=A;B.length&&$&7&&(s&&B.some(ud)&&(k=cS(k,s)),A=So(A,k))}return r.dirs&&(A=So(A),A.dirs=A.dirs?A.dirs.concat(r.dirs):r.dirs),r.transition&&(A.transition=r.transition),x=A,tl(R),x}const uS=e=>{let t;for(const r in e)(r==="class"||r==="style"||Nl(r))&&((t||(t={}))[r]=e[r]);return t},cS=(e,t)=>{const r={};for(const n in e)(!ud(n)||!(n.slice(9)in t))&&(r[n]=e[n]);return r};function fS(e,t,r){const{props:n,children:o,component:i}=e,{props:s,children:a,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&l>=0){if(l&1024)return!0;if(l&16)return n?Gp(n,s,u):!!s;if(l&8){const c=t.dynamicProps;for(let d=0;d<c.length;d++){const p=c[d];if(s[p]!==n[p]&&!Ul(u,p))return!0}}}else return(o||a)&&(!a||!a.$stable)?!0:n===s?!1:n?s?Gp(n,s,u):!0:!!s;return!1}function Gp(e,t,r){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let o=0;o<n.length;o++){const i=n[o];if(t[i]!==e[i]&&!Ul(r,i))return!0}return!1}function hS({vnode:e,parent:t},r){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=r,t=t.parent;else break}}const dS="components";function WF(e,t){return gS(dS,e,!0,t)||e}const pS=Symbol.for("v-ndc");function gS(e,t,r=!0,n=!1){const o=_t||Rt;if(o){const i=o.type;{const a=cA(i,!1);if(a&&(a===t||a===$r(t)||a===Ll($r(t))))return i}const s=Qp(o[e]||i[e],t)||Qp(o.appContext[e],t);return!s&&n?i:s}}function Qp(e,t){return e&&(e[t]||e[$r(t)]||e[Ll($r(t))])}const mS=e=>e.__isSuspense;function yS(e,t){t&&t.pendingBranch?Be(e)?t.effects.push(...e):t.effects.push(e):oS(e)}const _S=Symbol.for("v-scx"),bS=()=>Ca(_S);function HF(e,t){return Ad(e,null,t)}const na={};function Pu(e,t,r){return Ad(e,t,r)}function Ad(e,t,{immediate:r,deep:n,flush:o,once:i,onTrack:s,onTrigger:a}=Xe){if(t&&i){const I=t;t=(...P)=>{I(...P),$()}}const l=Rt,u=I=>n===!0?I:fi(I,n===!1?1:void 0);let c,d=!1,p=!1;if(Wt(e)?(c=()=>e.value,d=el(e)):po(e)?(c=()=>u(e),d=!0):Be(e)?(p=!0,d=e.some(I=>po(I)||el(I)),c=()=>e.map(I=>{if(Wt(I))return I.value;if(po(I))return u(I);if(De(I))return Bn(I,l,2)})):De(e)?t?c=()=>Bn(e,l,2):c=()=>(g&&g(),_r(e,l,3,[_])):c=tr,t&&n){const I=c;c=()=>fi(I())}let g,_=I=>{g=A.onStop=()=>{Bn(I,l,4),g=A.onStop=void 0}},b;if(Vl)if(_=tr,t?r&&_r(t,l,3,[c(),p?[]:void 0,_]):c(),o==="sync"){const I=bS();b=I.__watcherHandles||(I.__watcherHandles=[])}else return tr;let x=p?new Array(e.length).fill(na):na;const k=()=>{if(!(!A.active||!A.dirty))if(t){const I=A.run();(n||d||(p?I.some((P,W)=>$n(P,x[W])):$n(I,x)))&&(g&&g(),_r(t,l,3,[I,x===na?void 0:p&&x[0]===na?[]:x,_]),x=I)}else A.run()};k.allowRecurse=!!t;let R;o==="sync"?R=k:o==="post"?R=()=>$t(k,l&&l.suspense):(k.pre=!0,l&&(k.id=l.uid),R=()=>Sd(k));const A=new pd(c,tr,R),B=RE(),$=()=>{A.stop(),B&&cd(B.effects,A)};return t?r?k():x=A.run():o==="post"?$t(A.run.bind(A),l&&l.suspense):A.run(),b&&b.push($),$}function wS(e,t,r){const n=this.proxy,o=dt(e)?e.includes(".")?Qy(n,e):()=>n[e]:e.bind(n,n);let i;De(t)?i=t:(i=t.handler,r=t);const s=$s(this),a=Ad(o,i.bind(n),r);return s(),a}function Qy(e,t){const r=t.split(".");return()=>{let n=e;for(let o=0;o<r.length&&n;o++)n=n[r[o]];return n}}function fi(e,t,r=0,n){if(!Je(e)||e.__v_skip)return e;if(t&&t>0){if(r>=t)return e;r++}if(n=n||new Set,n.has(e))return e;if(n.add(e),Wt(e))fi(e.value,t,r,n);else if(Be(e))for(let o=0;o<e.length;o++)fi(e[o],t,r,n);else if(Ml(e)||ho(e))e.forEach(o=>{fi(o,t,r,n)});else if(Sy(e))for(const o in e)fi(e[o],t,r,n);return e}function VF(e,t){if(_t===null)return e;const r=ql(_t)||_t.proxy,n=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[i,s,a,l=Xe]=t[o];i&&(De(i)&&(i={mounted:i,updated:i}),i.deep&&fi(s),n.push({dir:i,instance:r,value:s,oldValue:void 0,arg:a,modifiers:l}))}return e}function Gn(e,t,r,n){const o=e.dirs,i=t&&t.dirs;for(let s=0;s<o.length;s++){const a=o[s];i&&(a.oldValue=i[s].value);let l=a.dir[n];l&&(Pi(),_r(l,r,8,[e.el,a,e,t]),Li())}}/*! #__NO_SIDE_EFFECTS__ */function qF(e,t){return De(e)?wt({name:e.name},t,{setup:e}):e}const _s=e=>!!e.type.__asyncLoader,Xy=e=>e.type.__isKeepAlive;function vS(e,t){Jy(e,"a",t)}function ES(e,t){Jy(e,"da",t)}function Jy(e,t,r=Rt){const n=e.__wdc||(e.__wdc=()=>{let o=r;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(jl(t,n,r),r){let o=r.parent;for(;o&&o.parent;)Xy(o.parent.vnode)&&SS(n,t,r,o),o=o.parent}}function SS(e,t,r,n){const o=jl(t,e,n,!0);Zy(()=>{cd(n[t],o)},r)}function jl(e,t,r=Rt,n=!1){if(r){const o=r[e]||(r[e]=[]),i=t.__weh||(t.__weh=(...s)=>{if(r.isUnmounted)return;Pi();const a=$s(r),l=_r(t,r,e,s);return a(),Li(),l});return n?o.unshift(i):o.push(i),i}}const mn=e=>(t,r=Rt)=>(!Vl||e==="sp")&&jl(e,(...n)=>t(...n),r),AS=mn("bm"),TS=mn("m"),xS=mn("bu"),IS=mn("u"),CS=mn("bum"),Zy=mn("um"),RS=mn("sp"),OS=mn("rtg"),kS=mn("rtc");function NS(e,t=Rt){jl("ec",e,t)}function KF(e,t,r,n){let o;const i=r;if(Be(e)||dt(e)){o=new Array(e.length);for(let s=0,a=e.length;s<a;s++)o[s]=t(e[s],s,void 0,i)}else if(typeof e=="number"){o=new Array(e);for(let s=0;s<e;s++)o[s]=t(s+1,s,void 0,i)}else if(Je(e))if(e[Symbol.iterator])o=Array.from(e,(s,a)=>t(s,a,void 0,i));else{const s=Object.keys(e);o=new Array(s.length);for(let a=0,l=s.length;a<l;a++){const u=s[a];o[a]=t(e[u],u,a,i)}}else o=[];return o}function YF(e,t,r={},n,o){if(_t.isCE||_t.parent&&_s(_t.parent)&&_t.parent.isCE)return t!=="default"&&(r.name=t),Mr("slot",r,n&&n());let i=e[t];i&&i._c&&(i._d=!1),c_();const s=i&&e_(i(r)),a=h_(dr,{key:r.key||s&&s.key||`_${t}`},s||(n?n():[]),s&&e._===1?64:-2);return!o&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),i&&i._c&&(i._d=!0),a}function e_(e){return e.some(t=>d_(t)?!(t.type===Un||t.type===dr&&!e_(t.children)):!0)?e:null}const Qc=e=>e?m_(e)?ql(e)||e.proxy:Qc(e.parent):null,bs=wt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Qc(e.parent),$root:e=>Qc(e.root),$emit:e=>e.emit,$options:e=>Td(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Sd(e.update)}),$nextTick:e=>e.n||(e.n=rS.bind(e.proxy)),$watch:e=>wS.bind(e)}),Lu=(e,t)=>e!==Xe&&!e.__isScriptSetup&&Fe(e,t),MS={get({_:e},t){const{ctx:r,setupState:n,data:o,props:i,accessCache:s,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const g=s[t];if(g!==void 0)switch(g){case 1:return n[t];case 2:return o[t];case 4:return r[t];case 3:return i[t]}else{if(Lu(n,t))return s[t]=1,n[t];if(o!==Xe&&Fe(o,t))return s[t]=2,o[t];if((u=e.propsOptions[0])&&Fe(u,t))return s[t]=3,i[t];if(r!==Xe&&Fe(r,t))return s[t]=4,r[t];Xc&&(s[t]=0)}}const c=bs[t];let d,p;if(c)return t==="$attrs"&&jt(e,"get",t),c(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(r!==Xe&&Fe(r,t))return s[t]=4,r[t];if(p=l.config.globalProperties,Fe(p,t))return p[t]},set({_:e},t,r){const{data:n,setupState:o,ctx:i}=e;return Lu(o,t)?(o[t]=r,!0):n!==Xe&&Fe(n,t)?(n[t]=r,!0):Fe(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:n,appContext:o,propsOptions:i}},s){let a;return!!r[s]||e!==Xe&&Fe(e,s)||Lu(t,s)||(a=i[0])&&Fe(a,s)||Fe(n,s)||Fe(bs,s)||Fe(o.config.globalProperties,s)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:Fe(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function Xp(e){return Be(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}let Xc=!0;function PS(e){const t=Td(e),r=e.proxy,n=e.ctx;Xc=!1,t.beforeCreate&&Jp(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:s,watch:a,provide:l,inject:u,created:c,beforeMount:d,mounted:p,beforeUpdate:g,updated:_,activated:b,deactivated:x,beforeDestroy:k,beforeUnmount:R,destroyed:A,unmounted:B,render:$,renderTracked:I,renderTriggered:P,errorCaptured:W,serverPrefetch:Y,expose:oe,inheritAttrs:te,components:M,directives:L,filters:ie}=t;if(u&&LS(u,n,null),s)for(const se in s){const Q=s[se];De(Q)&&(n[se]=Q.bind(r))}if(o){const se=o.call(r,r);Je(se)&&(e.data=bd(se))}if(Xc=!0,i)for(const se in i){const Q=i[se],he=De(Q)?Q.bind(r,r):De(Q.get)?Q.get.bind(r,r):tr,fe=!De(Q)&&De(Q.set)?Q.set.bind(r):tr,pe=hA({get:he,set:fe});Object.defineProperty(n,se,{enumerable:!0,configurable:!0,get:()=>pe.value,set:F=>pe.value=F})}if(a)for(const se in a)t_(a[se],n,r,se);if(l){const se=De(l)?l.call(r):l;Reflect.ownKeys(se).forEach(Q=>{jS(Q,se[Q])})}c&&Jp(c,e,"c");function ae(se,Q){Be(Q)?Q.forEach(he=>se(he.bind(r))):Q&&se(Q.bind(r))}if(ae(AS,d),ae(TS,p),ae(xS,g),ae(IS,_),ae(vS,b),ae(ES,x),ae(NS,W),ae(kS,I),ae(OS,P),ae(CS,R),ae(Zy,B),ae(RS,Y),Be(oe))if(oe.length){const se=e.exposed||(e.exposed={});oe.forEach(Q=>{Object.defineProperty(se,Q,{get:()=>r[Q],set:he=>r[Q]=he})})}else e.exposed||(e.exposed={});$&&e.render===tr&&(e.render=$),te!=null&&(e.inheritAttrs=te),M&&(e.components=M),L&&(e.directives=L)}function LS(e,t,r=tr){Be(e)&&(e=Jc(e));for(const n in e){const o=e[n];let i;Je(o)?"default"in o?i=Ca(o.from||n,o.default,!0):i=Ca(o.from||n):i=Ca(o),Wt(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:s=>i.value=s}):t[n]=i}}function Jp(e,t,r){_r(Be(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,r)}function t_(e,t,r,n){const o=n.includes(".")?Qy(r,n):()=>r[n];if(dt(e)){const i=t[e];De(i)&&Pu(o,i)}else if(De(e))Pu(o,e.bind(r));else if(Je(e))if(Be(e))e.forEach(i=>t_(i,t,r,n));else{const i=De(e.handler)?e.handler.bind(r):t[e.handler];De(i)&&Pu(o,i,e)}}function Td(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,a=i.get(t);let l;return a?l=a:!o.length&&!r&&!n?l=t:(l={},o.length&&o.forEach(u=>rl(l,u,s,!0)),rl(l,t,s)),Je(t)&&i.set(t,l),l}function rl(e,t,r,n=!1){const{mixins:o,extends:i}=t;i&&rl(e,i,r,!0),o&&o.forEach(s=>rl(e,s,r,!0));for(const s in t)if(!(n&&s==="expose")){const a=BS[s]||r&&r[s];e[s]=a?a(e[s],t[s]):t[s]}return e}const BS={data:Zp,props:eg,emits:eg,methods:ls,computed:ls,beforeCreate:Nt,created:Nt,beforeMount:Nt,mounted:Nt,beforeUpdate:Nt,updated:Nt,beforeDestroy:Nt,beforeUnmount:Nt,destroyed:Nt,unmounted:Nt,activated:Nt,deactivated:Nt,errorCaptured:Nt,serverPrefetch:Nt,components:ls,directives:ls,watch:$S,provide:Zp,inject:DS};function Zp(e,t){return t?e?function(){return wt(De(e)?e.call(this,this):e,De(t)?t.call(this,this):t)}:t:e}function DS(e,t){return ls(Jc(e),Jc(t))}function Jc(e){if(Be(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function Nt(e,t){return e?[...new Set([].concat(e,t))]:t}function ls(e,t){return e?wt(Object.create(null),e,t):t}function eg(e,t){return e?Be(e)&&Be(t)?[...new Set([...e,...t])]:wt(Object.create(null),Xp(e),Xp(t??{})):t}function $S(e,t){if(!e)return t;if(!t)return e;const r=wt(Object.create(null),e);for(const n in t)r[n]=Nt(e[n],t[n]);return r}function r_(){return{app:null,config:{isNativeTag:gE,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let US=0;function FS(e,t){return function(n,o=null){De(n)||(n=wt({},n)),o!=null&&!Je(o)&&(o=null);const i=r_(),s=new WeakSet;let a=!1;const l=i.app={_uid:US++,_component:n,_props:o,_container:null,_context:i,_instance:null,version:dA,get config(){return i.config},set config(u){},use(u,...c){return s.has(u)||(u&&De(u.install)?(s.add(u),u.install(l,...c)):De(u)&&(s.add(u),u(l,...c))),l},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),l},component(u,c){return c?(i.components[u]=c,l):i.components[u]},directive(u,c){return c?(i.directives[u]=c,l):i.directives[u]},mount(u,c,d){if(!a){const p=Mr(n,o);return p.appContext=i,d===!0?d="svg":d===!1&&(d=void 0),c&&t?t(p,u):e(p,u,d),a=!0,l._container=u,u.__vue_app__=l,ql(p.component)||p.component.proxy}},unmount(){a&&(e(null,l._container),delete l._container.__vue_app__)},provide(u,c){return i.provides[u]=c,l},runWithContext(u){const c=ws;ws=l;try{return u()}finally{ws=c}}};return l}}let ws=null;function jS(e,t){if(Rt){let r=Rt.provides;const n=Rt.parent&&Rt.parent.provides;n===r&&(r=Rt.provides=Object.create(n)),r[e]=t}}function Ca(e,t,r=!1){const n=Rt||_t;if(n||ws){const o=n?n.parent==null?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:ws._context.provides;if(o&&e in o)return o[e];if(arguments.length>1)return r&&De(t)?t.call(n&&n.proxy):t}}function WS(e,t,r,n=!1){const o={},i={};Za(i,Hl,1),e.propsDefaults=Object.create(null),n_(e,t,o,i);for(const s in e.propsOptions[0])s in o||(o[s]=void 0);r?e.props=n?o:GE(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function HS(e,t,r,n){const{props:o,attrs:i,vnode:{patchFlag:s}}=e,a=We(o),[l]=e.propsOptions;let u=!1;if((n||s>0)&&!(s&16)){if(s&8){const c=e.vnode.dynamicProps;for(let d=0;d<c.length;d++){let p=c[d];if(Ul(e.emitsOptions,p))continue;const g=t[p];if(l)if(Fe(i,p))g!==i[p]&&(i[p]=g,u=!0);else{const _=$r(p);o[_]=Zc(l,a,_,g,e,!1)}else g!==i[p]&&(i[p]=g,u=!0)}}}else{n_(e,t,o,i)&&(u=!0);let c;for(const d in a)(!t||!Fe(t,d)&&((c=Do(d))===d||!Fe(t,c)))&&(l?r&&(r[d]!==void 0||r[c]!==void 0)&&(o[d]=Zc(l,a,d,void 0,e,!0)):delete o[d]);if(i!==a)for(const d in i)(!t||!Fe(t,d))&&(delete i[d],u=!0)}u&&nn(e,"set","$attrs")}function n_(e,t,r,n){const[o,i]=e.propsOptions;let s=!1,a;if(t)for(let l in t){if(ys(l))continue;const u=t[l];let c;o&&Fe(o,c=$r(l))?!i||!i.includes(c)?r[c]=u:(a||(a={}))[c]=u:Ul(e.emitsOptions,l)||(!(l in n)||u!==n[l])&&(n[l]=u,s=!0)}if(i){const l=We(r),u=a||Xe;for(let c=0;c<i.length;c++){const d=i[c];r[d]=Zc(o,l,d,u[d],e,!Fe(u,d))}}return s}function Zc(e,t,r,n,o,i){const s=e[r];if(s!=null){const a=Fe(s,"default");if(a&&n===void 0){const l=s.default;if(s.type!==Function&&!s.skipFactory&&De(l)){const{propsDefaults:u}=o;if(r in u)n=u[r];else{const c=$s(o);n=u[r]=l.call(null,t),c()}}else n=l}s[0]&&(i&&!a?n=!1:s[1]&&(n===""||n===Do(r))&&(n=!0))}return n}function i_(e,t,r=!1){const n=t.propsCache,o=n.get(e);if(o)return o;const i=e.props,s={},a=[];let l=!1;if(!De(e)){const c=d=>{l=!0;const[p,g]=i_(d,t,!0);wt(s,p),g&&a.push(...g)};!r&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!i&&!l)return Je(e)&&n.set(e,fo),fo;if(Be(i))for(let c=0;c<i.length;c++){const d=$r(i[c]);tg(d)&&(s[d]=Xe)}else if(i)for(const c in i){const d=$r(c);if(tg(d)){const p=i[c],g=s[d]=Be(p)||De(p)?{type:p}:wt({},p);if(g){const _=ig(Boolean,g.type),b=ig(String,g.type);g[0]=_>-1,g[1]=b<0||_<b,(_>-1||Fe(g,"default"))&&a.push(d)}}}const u=[s,a];return Je(e)&&n.set(e,u),u}function tg(e){return e[0]!=="$"&&!ys(e)}function rg(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function ng(e,t){return rg(e)===rg(t)}function ig(e,t){return Be(t)?t.findIndex(r=>ng(r,e)):De(t)&&ng(t,e)?0:-1}const o_=e=>e[0]==="_"||e==="$stable",xd=e=>Be(e)?e.map(Cr):[Cr(e)],VS=(e,t,r)=>{if(t._n)return t;const n=lS((...o)=>xd(t(...o)),r);return n._c=!1,n},s_=(e,t,r)=>{const n=e._ctx;for(const o in e){if(o_(o))continue;const i=e[o];if(De(i))t[o]=VS(o,i,n);else if(i!=null){const s=xd(i);t[o]=()=>s}}},a_=(e,t)=>{const r=xd(t);e.slots.default=()=>r},qS=(e,t)=>{if(e.vnode.shapeFlag&32){const r=t._;r?(e.slots=We(t),Za(t,"_",r)):s_(t,e.slots={})}else e.slots={},t&&a_(e,t);Za(e.slots,Hl,1)},KS=(e,t,r)=>{const{vnode:n,slots:o}=e;let i=!0,s=Xe;if(n.shapeFlag&32){const a=t._;a?r&&a===1?i=!1:(wt(o,t),!r&&a===1&&delete o._):(i=!t.$stable,s_(t,o)),s=t}else t&&(a_(e,t),s={default:1});if(i)for(const a in o)!o_(a)&&s[a]==null&&delete o[a]};function ef(e,t,r,n,o=!1){if(Be(e)){e.forEach((p,g)=>ef(p,t&&(Be(t)?t[g]:t),r,n,o));return}if(_s(n)&&!o)return;const i=n.shapeFlag&4?ql(n.component)||n.component.proxy:n.el,s=o?null:i,{i:a,r:l}=e,u=t&&t.r,c=a.refs===Xe?a.refs={}:a.refs,d=a.setupState;if(u!=null&&u!==l&&(dt(u)?(c[u]=null,Fe(d,u)&&(d[u]=null)):Wt(u)&&(u.value=null)),De(l))Bn(l,a,12,[s,c]);else{const p=dt(l),g=Wt(l);if(p||g){const _=()=>{if(e.f){const b=p?Fe(d,l)?d[l]:c[l]:l.value;o?Be(b)&&cd(b,i):Be(b)?b.includes(i)||b.push(i):p?(c[l]=[i],Fe(d,l)&&(d[l]=c[l])):(l.value=[i],e.k&&(c[e.k]=l.value))}else p?(c[l]=s,Fe(d,l)&&(d[l]=s)):g&&(l.value=s,e.k&&(c[e.k]=s))};s?(_.id=-1,$t(_,r)):_()}}}const $t=yS;function YS(e){return zS(e)}function zS(e,t){const r=Ay();r.__VUE__=!0;const{insert:n,remove:o,patchProp:i,createElement:s,createText:a,createComment:l,setText:u,setElementText:c,parentNode:d,nextSibling:p,setScopeId:g=tr,insertStaticContent:_}=e,b=(E,T,S,O=null,N=null,ee=null,J=void 0,D=null,K=!!T.dynamicChildren)=>{if(E===T)return;E&&!Go(E,T)&&(O=V(E),F(E,N,ee,!0),E=null),T.patchFlag===-2&&(K=!1,T.dynamicChildren=null);const{type:z,ref:ce,shapeFlag:be}=T;switch(z){case Wl:x(E,T,S,O);break;case Un:k(E,T,S,O);break;case Du:E==null&&R(T,S,O,J);break;case dr:M(E,T,S,O,N,ee,J,D,K);break;default:be&1?$(E,T,S,O,N,ee,J,D,K):be&6?L(E,T,S,O,N,ee,J,D,K):(be&64||be&128)&&z.process(E,T,S,O,N,ee,J,D,K,ue)}ce!=null&&N&&ef(ce,E&&E.ref,ee,T||E,!T)},x=(E,T,S,O)=>{if(E==null)n(T.el=a(T.children),S,O);else{const N=T.el=E.el;T.children!==E.children&&u(N,T.children)}},k=(E,T,S,O)=>{E==null?n(T.el=l(T.children||""),S,O):T.el=E.el},R=(E,T,S,O)=>{[E.el,E.anchor]=_(E.children,T,S,O,E.el,E.anchor)},A=({el:E,anchor:T},S,O)=>{let N;for(;E&&E!==T;)N=p(E),n(E,S,O),E=N;n(T,S,O)},B=({el:E,anchor:T})=>{let S;for(;E&&E!==T;)S=p(E),o(E),E=S;o(T)},$=(E,T,S,O,N,ee,J,D,K)=>{T.type==="svg"?J="svg":T.type==="math"&&(J="mathml"),E==null?I(T,S,O,N,ee,J,D,K):Y(E,T,N,ee,J,D,K)},I=(E,T,S,O,N,ee,J,D)=>{let K,z;const{props:ce,shapeFlag:be,transition:Te,dirs:y}=E;if(K=E.el=s(E.type,ee,ce&&ce.is,ce),be&8?c(K,E.children):be&16&&W(E.children,K,null,O,N,Bu(E,ee),J,D),y&&Gn(E,null,O,"created"),P(K,E,E.scopeId,J,O),ce){for(const f in ce)f!=="value"&&!ys(f)&&i(K,f,null,ce[f],ee,E.children,O,N,ye);"value"in ce&&i(K,"value",null,ce.value,ee),(z=ce.onVnodeBeforeMount)&&Er(z,O,E)}y&&Gn(E,null,O,"beforeMount");const h=GS(N,Te);h&&Te.beforeEnter(K),n(K,T,S),((z=ce&&ce.onVnodeMounted)||h||y)&&$t(()=>{z&&Er(z,O,E),h&&Te.enter(K),y&&Gn(E,null,O,"mounted")},N)},P=(E,T,S,O,N)=>{if(S&&g(E,S),O)for(let ee=0;ee<O.length;ee++)g(E,O[ee]);if(N){let ee=N.subTree;if(T===ee){const J=N.vnode;P(E,J,J.scopeId,J.slotScopeIds,N.parent)}}},W=(E,T,S,O,N,ee,J,D,K=0)=>{for(let z=K;z<E.length;z++){const ce=E[z]=D?Nn(E[z]):Cr(E[z]);b(null,ce,T,S,O,N,ee,J,D)}},Y=(E,T,S,O,N,ee,J)=>{const D=T.el=E.el;let{patchFlag:K,dynamicChildren:z,dirs:ce}=T;K|=E.patchFlag&16;const be=E.props||Xe,Te=T.props||Xe;let y;if(S&&Qn(S,!1),(y=Te.onVnodeBeforeUpdate)&&Er(y,S,T,E),ce&&Gn(T,E,S,"beforeUpdate"),S&&Qn(S,!0),z?oe(E.dynamicChildren,z,D,S,O,Bu(T,N),ee):J||Q(E,T,D,null,S,O,Bu(T,N),ee,!1),K>0){if(K&16)te(D,T,be,Te,S,O,N);else if(K&2&&be.class!==Te.class&&i(D,"class",null,Te.class,N),K&4&&i(D,"style",be.style,Te.style,N),K&8){const h=T.dynamicProps;for(let f=0;f<h.length;f++){const m=h[f],w=be[m],v=Te[m];(v!==w||m==="value")&&i(D,m,w,v,N,E.children,S,O,ye)}}K&1&&E.children!==T.children&&c(D,T.children)}else!J&&z==null&&te(D,T,be,Te,S,O,N);((y=Te.onVnodeUpdated)||ce)&&$t(()=>{y&&Er(y,S,T,E),ce&&Gn(T,E,S,"updated")},O)},oe=(E,T,S,O,N,ee,J)=>{for(let D=0;D<T.length;D++){const K=E[D],z=T[D],ce=K.el&&(K.type===dr||!Go(K,z)||K.shapeFlag&70)?d(K.el):S;b(K,z,ce,null,O,N,ee,J,!0)}},te=(E,T,S,O,N,ee,J)=>{if(S!==O){if(S!==Xe)for(const D in S)!ys(D)&&!(D in O)&&i(E,D,S[D],null,J,T.children,N,ee,ye);for(const D in O){if(ys(D))continue;const K=O[D],z=S[D];K!==z&&D!=="value"&&i(E,D,z,K,J,T.children,N,ee,ye)}"value"in O&&i(E,"value",S.value,O.value,J)}},M=(E,T,S,O,N,ee,J,D,K)=>{const z=T.el=E?E.el:a(""),ce=T.anchor=E?E.anchor:a("");let{patchFlag:be,dynamicChildren:Te,slotScopeIds:y}=T;y&&(D=D?D.concat(y):y),E==null?(n(z,S,O),n(ce,S,O),W(T.children||[],S,ce,N,ee,J,D,K)):be>0&&be&64&&Te&&E.dynamicChildren?(oe(E.dynamicChildren,Te,S,N,ee,J,D),(T.key!=null||N&&T===N.subTree)&&l_(E,T,!0)):Q(E,T,S,ce,N,ee,J,D,K)},L=(E,T,S,O,N,ee,J,D,K)=>{T.slotScopeIds=D,E==null?T.shapeFlag&512?N.ctx.activate(T,S,O,J,K):ie(T,S,O,N,ee,J,K):re(E,T,K)},ie=(E,T,S,O,N,ee,J)=>{const D=E.component=oA(E,O,N);if(Xy(E)&&(D.ctx.renderer=ue),sA(D),D.asyncDep){if(N&&N.registerDep(D,ae),!E.el){const K=D.subTree=Mr(Un);k(null,K,T,S)}}else ae(D,E,T,S,N,ee,J)},re=(E,T,S)=>{const O=T.component=E.component;if(fS(E,T,S))if(O.asyncDep&&!O.asyncResolved){se(O,T,S);return}else O.next=T,iS(O.update),O.effect.dirty=!0,O.update();else T.el=E.el,O.vnode=T},ae=(E,T,S,O,N,ee,J)=>{const D=()=>{if(E.isMounted){let{next:ce,bu:be,u:Te,parent:y,vnode:h}=E;{const C=u_(E);if(C){ce&&(ce.el=h.el,se(E,ce,J)),C.asyncDep.then(()=>{E.isUnmounted||D()});return}}let f=ce,m;Qn(E,!1),ce?(ce.el=h.el,se(E,ce,J)):ce=h,be&&xa(be),(m=ce.props&&ce.props.onVnodeBeforeUpdate)&&Er(m,y,ce,h),Qn(E,!0);const w=Mu(E),v=E.subTree;E.subTree=w,b(v,w,d(v.el),V(v),E,N,ee),ce.el=w.el,f===null&&hS(E,w.el),Te&&$t(Te,N),(m=ce.props&&ce.props.onVnodeUpdated)&&$t(()=>Er(m,y,ce,h),N)}else{let ce;const{el:be,props:Te}=T,{bm:y,m:h,parent:f}=E,m=_s(T);if(Qn(E,!1),y&&xa(y),!m&&(ce=Te&&Te.onVnodeBeforeMount)&&Er(ce,f,T),Qn(E,!0),be&&X){const w=()=>{E.subTree=Mu(E),X(be,E.subTree,E,N,null)};m?T.type.__asyncLoader().then(()=>!E.isUnmounted&&w()):w()}else{const w=E.subTree=Mu(E);b(null,w,S,O,E,N,ee),T.el=w.el}if(h&&$t(h,N),!m&&(ce=Te&&Te.onVnodeMounted)){const w=T;$t(()=>Er(ce,f,w),N)}(T.shapeFlag&256||f&&_s(f.vnode)&&f.vnode.shapeFlag&256)&&E.a&&$t(E.a,N),E.isMounted=!0,T=S=O=null}},K=E.effect=new pd(D,tr,()=>Sd(z),E.scope),z=E.update=()=>{K.dirty&&K.run()};z.id=E.uid,Qn(E,!0),z()},se=(E,T,S)=>{T.component=E;const O=E.vnode.props;E.vnode=T,E.next=null,HS(E,T.props,O,S),KS(E,T.children,S),Pi(),zp(E),Li()},Q=(E,T,S,O,N,ee,J,D,K=!1)=>{const z=E&&E.children,ce=E?E.shapeFlag:0,be=T.children,{patchFlag:Te,shapeFlag:y}=T;if(Te>0){if(Te&128){fe(z,be,S,O,N,ee,J,D,K);return}else if(Te&256){he(z,be,S,O,N,ee,J,D,K);return}}y&8?(ce&16&&ye(z,N,ee),be!==z&&c(S,be)):ce&16?y&16?fe(z,be,S,O,N,ee,J,D,K):ye(z,N,ee,!0):(ce&8&&c(S,""),y&16&&W(be,S,O,N,ee,J,D,K))},he=(E,T,S,O,N,ee,J,D,K)=>{E=E||fo,T=T||fo;const z=E.length,ce=T.length,be=Math.min(z,ce);let Te;for(Te=0;Te<be;Te++){const y=T[Te]=K?Nn(T[Te]):Cr(T[Te]);b(E[Te],y,S,null,N,ee,J,D,K)}z>ce?ye(E,N,ee,!0,!1,be):W(T,S,O,N,ee,J,D,K,be)},fe=(E,T,S,O,N,ee,J,D,K)=>{let z=0;const ce=T.length;let be=E.length-1,Te=ce-1;for(;z<=be&&z<=Te;){const y=E[z],h=T[z]=K?Nn(T[z]):Cr(T[z]);if(Go(y,h))b(y,h,S,null,N,ee,J,D,K);else break;z++}for(;z<=be&&z<=Te;){const y=E[be],h=T[Te]=K?Nn(T[Te]):Cr(T[Te]);if(Go(y,h))b(y,h,S,null,N,ee,J,D,K);else break;be--,Te--}if(z>be){if(z<=Te){const y=Te+1,h=y<ce?T[y].el:O;for(;z<=Te;)b(null,T[z]=K?Nn(T[z]):Cr(T[z]),S,h,N,ee,J,D,K),z++}}else if(z>Te)for(;z<=be;)F(E[z],N,ee,!0),z++;else{const y=z,h=z,f=new Map;for(z=h;z<=Te;z++){const _e=T[z]=K?Nn(T[z]):Cr(T[z]);_e.key!=null&&f.set(_e.key,z)}let m,w=0;const v=Te-h+1;let C=!1,H=0;const de=new Array(v);for(z=0;z<v;z++)de[z]=0;for(z=y;z<=be;z++){const _e=E[z];if(w>=v){F(_e,N,ee,!0);continue}let Ae;if(_e.key!=null)Ae=f.get(_e.key);else for(m=h;m<=Te;m++)if(de[m-h]===0&&Go(_e,T[m])){Ae=m;break}Ae===void 0?F(_e,N,ee,!0):(de[Ae-h]=z+1,Ae>=H?H=Ae:C=!0,b(_e,T[Ae],S,null,N,ee,J,D,K),w++)}const me=C?QS(de):fo;for(m=me.length-1,z=v-1;z>=0;z--){const _e=h+z,Ae=T[_e],ke=_e+1<ce?T[_e+1].el:O;de[z]===0?b(null,Ae,S,ke,N,ee,J,D,K):C&&(m<0||z!==me[m]?pe(Ae,S,ke,2):m--)}}},pe=(E,T,S,O,N=null)=>{const{el:ee,type:J,transition:D,children:K,shapeFlag:z}=E;if(z&6){pe(E.component.subTree,T,S,O);return}if(z&128){E.suspense.move(T,S,O);return}if(z&64){J.move(E,T,S,ue);return}if(J===dr){n(ee,T,S);for(let be=0;be<K.length;be++)pe(K[be],T,S,O);n(E.anchor,T,S);return}if(J===Du){A(E,T,S);return}if(O!==2&&z&1&&D)if(O===0)D.beforeEnter(ee),n(ee,T,S),$t(()=>D.enter(ee),N);else{const{leave:be,delayLeave:Te,afterLeave:y}=D,h=()=>n(ee,T,S),f=()=>{be(ee,()=>{h(),y&&y()})};Te?Te(ee,h,f):f()}else n(ee,T,S)},F=(E,T,S,O=!1,N=!1)=>{const{type:ee,props:J,ref:D,children:K,dynamicChildren:z,shapeFlag:ce,patchFlag:be,dirs:Te}=E;if(D!=null&&ef(D,null,S,E,!0),ce&256){T.ctx.deactivate(E);return}const y=ce&1&&Te,h=!_s(E);let f;if(h&&(f=J&&J.onVnodeBeforeUnmount)&&Er(f,T,E),ce&6)Se(E.component,S,O);else{if(ce&128){E.suspense.unmount(S,O);return}y&&Gn(E,null,T,"beforeUnmount"),ce&64?E.type.remove(E,T,S,N,ue,O):z&&(ee!==dr||be>0&&be&64)?ye(z,T,S,!1,!0):(ee===dr&&be&384||!N&&ce&16)&&ye(K,T,S),O&&ne(E)}(h&&(f=J&&J.onVnodeUnmounted)||y)&&$t(()=>{f&&Er(f,T,E),y&&Gn(E,null,T,"unmounted")},S)},ne=E=>{const{type:T,el:S,anchor:O,transition:N}=E;if(T===dr){ge(S,O);return}if(T===Du){B(E);return}const ee=()=>{o(S),N&&!N.persisted&&N.afterLeave&&N.afterLeave()};if(E.shapeFlag&1&&N&&!N.persisted){const{leave:J,delayLeave:D}=N,K=()=>J(S,ee);D?D(E.el,ee,K):K()}else ee()},ge=(E,T)=>{let S;for(;E!==T;)S=p(E),o(E),E=S;o(T)},Se=(E,T,S)=>{const{bum:O,scope:N,update:ee,subTree:J,um:D}=E;O&&xa(O),N.stop(),ee&&(ee.active=!1,F(J,E,T,S)),D&&$t(D,T),$t(()=>{E.isUnmounted=!0},T),T&&T.pendingBranch&&!T.isUnmounted&&E.asyncDep&&!E.asyncResolved&&E.suspenseId===T.pendingId&&(T.deps--,T.deps===0&&T.resolve())},ye=(E,T,S,O=!1,N=!1,ee=0)=>{for(let J=ee;J<E.length;J++)F(E[J],T,S,O,N)},V=E=>E.shapeFlag&6?V(E.component.subTree):E.shapeFlag&128?E.suspense.next():p(E.anchor||E.el);let j=!1;const Z=(E,T,S)=>{E==null?T._vnode&&F(T._vnode,null,null,!0):b(T._vnode||null,E,T,null,null,null,S),j||(j=!0,zp(),Yy(),j=!1),T._vnode=E},ue={p:b,um:F,m:pe,r:ne,mt:ie,mc:W,pc:Q,pbc:oe,n:V,o:e};let le,X;return{render:Z,hydrate:le,createApp:FS(Z,le)}}function Bu({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function Qn({effect:e,update:t},r){e.allowRecurse=t.allowRecurse=r}function GS(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function l_(e,t,r=!1){const n=e.children,o=t.children;if(Be(n)&&Be(o))for(let i=0;i<n.length;i++){const s=n[i];let a=o[i];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=o[i]=Nn(o[i]),a.el=s.el),r||l_(s,a)),a.type===Wl&&(a.el=s.el)}}function QS(e){const t=e.slice(),r=[0];let n,o,i,s,a;const l=e.length;for(n=0;n<l;n++){const u=e[n];if(u!==0){if(o=r[r.length-1],e[o]<u){t[n]=o,r.push(n);continue}for(i=0,s=r.length-1;i<s;)a=i+s>>1,e[r[a]]<u?i=a+1:s=a;u<e[r[i]]&&(i>0&&(t[n]=r[i-1]),r[i]=n)}}for(i=r.length,s=r[i-1];i-- >0;)r[i]=s,s=t[s];return r}function u_(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:u_(t)}const XS=e=>e.__isTeleport,dr=Symbol.for("v-fgt"),Wl=Symbol.for("v-txt"),Un=Symbol.for("v-cmt"),Du=Symbol.for("v-stc"),vs=[];let yr=null;function c_(e=!1){vs.push(yr=e?null:[])}function JS(){vs.pop(),yr=vs[vs.length-1]||null}let Os=1;function og(e){Os+=e}function f_(e){return e.dynamicChildren=Os>0?yr||fo:null,JS(),Os>0&&yr&&yr.push(e),e}function zF(e,t,r,n,o,i){return f_(g_(e,t,r,n,o,i,!0))}function h_(e,t,r,n,o){return f_(Mr(e,t,r,n,o,!0))}function d_(e){return e?e.__v_isVNode===!0:!1}function Go(e,t){return e.type===t.type&&e.key===t.key}const Hl="__vInternal",p_=({key:e})=>e??null,Ra=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?dt(e)||Wt(e)||De(e)?{i:_t,r:e,k:t,f:!!r}:e:null);function g_(e,t=null,r=null,n=0,o=null,i=e===dr?0:1,s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&p_(t),ref:t&&Ra(t),scopeId:Fl,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:_t};return a?(Id(l,r),i&128&&e.normalize(l)):r&&(l.shapeFlag|=dt(r)?8:16),Os>0&&!s&&yr&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&yr.push(l),l}const Mr=ZS;function ZS(e,t=null,r=null,n=0,o=null,i=!1){if((!e||e===pS)&&(e=Un),d_(e)){const a=So(e,t,!0);return r&&Id(a,r),Os>0&&!i&&yr&&(a.shapeFlag&6?yr[yr.indexOf(e)]=a:yr.push(a)),a.patchFlag|=-2,a}if(fA(e)&&(e=e.__vccOpts),t){t=eA(t);let{class:a,style:l}=t;a&&!dt(a)&&(t.class=dd(a)),Je(l)&&(Fy(l)&&!Be(l)&&(l=wt({},l)),t.style=hd(l))}const s=dt(e)?1:mS(e)?128:XS(e)?64:Je(e)?4:De(e)?2:0;return g_(e,t,r,n,o,s,i,!0)}function eA(e){return e?Fy(e)||Hl in e?wt({},e):e:null}function So(e,t,r=!1){const{props:n,ref:o,patchFlag:i,children:s}=e,a=t?rA(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&p_(a),ref:t&&t.ref?r&&o?Be(o)?o.concat(Ra(t)):[o,Ra(t)]:Ra(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==dr?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&So(e.ssContent),ssFallback:e.ssFallback&&So(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function tA(e=" ",t=0){return Mr(Wl,null,e,t)}function GF(e="",t=!1){return t?(c_(),h_(Un,null,e)):Mr(Un,null,e)}function Cr(e){return e==null||typeof e=="boolean"?Mr(Un):Be(e)?Mr(dr,null,e.slice()):typeof e=="object"?Nn(e):Mr(Wl,null,String(e))}function Nn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:So(e)}function Id(e,t){let r=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(Be(t))r=16;else if(typeof t=="object")if(n&65){const o=t.default;o&&(o._c&&(o._d=!1),Id(e,o()),o._c&&(o._d=!0));return}else{r=32;const o=t._;!o&&!(Hl in t)?t._ctx=_t:o===3&&_t&&(_t.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else De(t)?(t={default:t,_ctx:_t},r=32):(t=String(t),n&64?(r=16,t=[tA(t)]):r=8);e.children=t,e.shapeFlag|=r}function rA(...e){const t={};for(let r=0;r<e.length;r++){const n=e[r];for(const o in n)if(o==="class")t.class!==n.class&&(t.class=dd([t.class,n.class]));else if(o==="style")t.style=hd([t.style,n.style]);else if(Nl(o)){const i=t[o],s=n[o];s&&i!==s&&!(Be(i)&&i.includes(s))&&(t[o]=i?[].concat(i,s):s)}else o!==""&&(t[o]=n[o])}return t}function Er(e,t,r,n=null){_r(e,t,7,[r,n])}const nA=r_();let iA=0;function oA(e,t,r){const n=e.type,o=(t?t.appContext:e.appContext)||nA,i={uid:iA++,vnode:e,type:n,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,scope:new IE(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:i_(n,o),emitsOptions:Gy(n,o),emit:null,emitted:null,propsDefaults:Xe,inheritAttrs:n.inheritAttrs,ctx:Xe,data:Xe,props:Xe,attrs:Xe,slots:Xe,refs:Xe,setupState:Xe,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=aS.bind(null,i),e.ce&&e.ce(i),i}let Rt=null,nl,tf;{const e=Ay(),t=(r,n)=>{let o;return(o=e[r])||(o=e[r]=[]),o.push(n),i=>{o.length>1?o.forEach(s=>s(i)):o[0](i)}};nl=t("__VUE_INSTANCE_SETTERS__",r=>Rt=r),tf=t("__VUE_SSR_SETTERS__",r=>Vl=r)}const $s=e=>{const t=Rt;return nl(e),e.scope.on(),()=>{e.scope.off(),nl(t)}},sg=()=>{Rt&&Rt.scope.off(),nl(null)};function m_(e){return e.vnode.shapeFlag&4}let Vl=!1;function sA(e,t=!1){t&&tf(t);const{props:r,children:n}=e.vnode,o=m_(e);WS(e,r,o,t),qS(e,n);const i=o?aA(e,t):void 0;return t&&tf(!1),i}function aA(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=jy(new Proxy(e.ctx,MS));const{setup:n}=r;if(n){const o=e.setupContext=n.length>1?uA(e):null,i=$s(e);Pi();const s=Bn(n,e,0,[e.props,o]);if(Li(),i(),vy(s)){if(s.then(sg,sg),t)return s.then(a=>{ag(e,a,t)}).catch(a=>{$l(a,e,0)});e.asyncDep=s}else ag(e,s,t)}else y_(e,t)}function ag(e,t,r){De(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Je(t)&&(e.setupState=Vy(t)),y_(e,r)}let lg;function y_(e,t,r){const n=e.type;if(!e.render){if(!t&&lg&&!n.render){const o=n.template||Td(e).template;if(o){const{isCustomElement:i,compilerOptions:s}=e.appContext.config,{delimiters:a,compilerOptions:l}=n,u=wt(wt({isCustomElement:i,delimiters:a},s),l);n.render=lg(o,u)}}e.render=n.render||tr}{const o=$s(e);Pi();try{PS(e)}finally{Li(),o()}}}function lA(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,r){return jt(e,"get","$attrs"),t[r]}}))}function uA(e){const t=r=>{e.exposed=r||{}};return{get attrs(){return lA(e)},slots:e.slots,emit:e.emit,expose:t}}function ql(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Vy(jy(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in bs)return bs[r](e)},has(t,r){return r in t||r in bs}}))}function cA(e,t=!0){return De(e)?e.displayName||e.name:e.name||t&&e.__name}function fA(e){return De(e)&&"__vccOpts"in e}const hA=(e,t)=>QE(e,t,Vl),dA="3.4.21";/**
-* @vue/runtime-dom v3.4.21
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/const pA="http://www.w3.org/2000/svg",gA="http://www.w3.org/1998/Math/MathML",Mn=typeof document<"u"?document:null,ug=Mn&&Mn.createElement("template"),mA={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,n)=>{const o=t==="svg"?Mn.createElementNS(pA,e):t==="mathml"?Mn.createElementNS(gA,e):Mn.createElement(e,r?{is:r}:void 0);return e==="select"&&n&&n.multiple!=null&&o.setAttribute("multiple",n.multiple),o},createText:e=>Mn.createTextNode(e),createComment:e=>Mn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Mn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,n,o,i){const s=r?r.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),r),!(o===i||!(o=o.nextSibling)););else{ug.innerHTML=n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e;const a=ug.content;if(n==="svg"||n==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,r)}return[s?s.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},yA=Symbol("_vtc");function _A(e,t,r){const n=e[yA];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const il=Symbol("_vod"),__=Symbol("_vsh"),QF={beforeMount(e,{value:t},{transition:r}){e[il]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):Qo(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:n}){!t!=!r&&(n?t?(n.beforeEnter(e),Qo(e,!0),n.enter(e)):n.leave(e,()=>{Qo(e,!1)}):Qo(e,t))},beforeUnmount(e,{value:t}){Qo(e,t)}};function Qo(e,t){e.style.display=t?e[il]:"none",e[__]=!t}const bA=Symbol(""),wA=/(^|;)\s*display\s*:/;function vA(e,t,r){const n=e.style,o=dt(r);let i=!1;if(r&&!o){if(t)if(dt(t))for(const s of t.split(";")){const a=s.slice(0,s.indexOf(":")).trim();r[a]==null&&Oa(n,a,"")}else for(const s in t)r[s]==null&&Oa(n,s,"");for(const s in r)s==="display"&&(i=!0),Oa(n,s,r[s])}else if(o){if(t!==r){const s=n[bA];s&&(r+=";"+s),n.cssText=r,i=wA.test(r)}}else t&&e.removeAttribute("style");il in e&&(e[il]=i?n.display:"",e[__]&&(n.display="none"))}const cg=/\s*!important$/;function Oa(e,t,r){if(Be(r))r.forEach(n=>Oa(e,t,n));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const n=EA(e,t);cg.test(r)?e.setProperty(Do(n),r.replace(cg,""),"important"):e[n]=r}}const fg=["Webkit","Moz","ms"],$u={};function EA(e,t){const r=$u[t];if(r)return r;let n=$r(t);if(n!=="filter"&&n in e)return $u[t]=n;n=Ll(n);for(let o=0;o<fg.length;o++){const i=fg[o]+n;if(i in e)return $u[t]=i}return t}const hg="http://www.w3.org/1999/xlink";function SA(e,t,r,n,o){if(n&&t.startsWith("xlink:"))r==null?e.removeAttributeNS(hg,t.slice(6,t.length)):e.setAttributeNS(hg,t,r);else{const i=TE(t);r==null||i&&!Ty(r)?e.removeAttribute(t):e.setAttribute(t,i?"":r)}}function AA(e,t,r,n,o,i,s){if(t==="innerHTML"||t==="textContent"){n&&s(n,o,i),e[t]=r??"";return}const a=e.tagName;if(t==="value"&&a!=="PROGRESS"&&!a.includes("-")){const u=a==="OPTION"?e.getAttribute("value")||"":e.value,c=r??"";(u!==c||!("_value"in e))&&(e.value=c),r==null&&e.removeAttribute(t),e._value=r;return}let l=!1;if(r===""||r==null){const u=typeof e[t];u==="boolean"?r=Ty(r):r==null&&u==="string"?(r="",l=!0):u==="number"&&(r=0,l=!0)}try{e[t]=r}catch{}l&&e.removeAttribute(t)}function ui(e,t,r,n){e.addEventListener(t,r,n)}function TA(e,t,r,n){e.removeEventListener(t,r,n)}const dg=Symbol("_vei");function xA(e,t,r,n,o=null){const i=e[dg]||(e[dg]={}),s=i[t];if(n&&s)s.value=n;else{const[a,l]=IA(t);if(n){const u=i[t]=OA(n,o);ui(e,a,u,l)}else s&&(TA(e,a,s,l),i[t]=void 0)}}const pg=/(?:Once|Passive|Capture)$/;function IA(e){let t;if(pg.test(e)){t={};let n;for(;n=e.match(pg);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Do(e.slice(2)),t]}let Uu=0;const CA=Promise.resolve(),RA=()=>Uu||(CA.then(()=>Uu=0),Uu=Date.now());function OA(e,t){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;_r(kA(n,r.value),t,5,[n])};return r.value=e,r.attached=RA(),r}function kA(e,t){if(Be(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(n=>o=>!o._stopped&&n&&n(o))}else return t}const gg=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,NA=(e,t,r,n,o,i,s,a,l)=>{const u=o==="svg";t==="class"?_A(e,n,u):t==="style"?vA(e,r,n):Nl(t)?ud(t)||xA(e,t,r,n,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):MA(e,t,n,u))?AA(e,t,n,i,s,a,l):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),SA(e,t,n,u))};function MA(e,t,r,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&gg(t)&&De(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return gg(t)&&dt(r)?!1:t in e}const ol=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Be(t)?r=>xa(t,r):t};function PA(e){e.target.composing=!0}function mg(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const mo=Symbol("_assign"),XF={created(e,{modifiers:{lazy:t,trim:r,number:n}},o){e[mo]=ol(o);const i=n||o.props&&o.props.type==="number";ui(e,t?"change":"input",s=>{if(s.target.composing)return;let a=e.value;r&&(a=a.trim()),i&&(a=Vc(a)),e[mo](a)}),r&&ui(e,"change",()=>{e.value=e.value.trim()}),t||(ui(e,"compositionstart",PA),ui(e,"compositionend",mg),ui(e,"change",mg))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:r,trim:n,number:o}},i){if(e[mo]=ol(i),e.composing)return;const s=o||e.type==="number"?Vc(e.value):e.value,a=t??"";s!==a&&(document.activeElement===e&&e.type!=="range"&&(r||n&&e.value.trim()===a)||(e.value=a))}},JF={deep:!0,created(e,t,r){e[mo]=ol(r),ui(e,"change",()=>{const n=e._modelValue,o=LA(e),i=e.checked,s=e[mo];if(Be(n)){const a=xy(n,o),l=a!==-1;if(i&&!l)s(n.concat(o));else if(!i&&l){const u=[...n];u.splice(a,1),s(u)}}else if(Ml(n)){const a=new Set(n);i?a.add(o):a.delete(o),s(a)}else s(b_(e,i))})},mounted:yg,beforeUpdate(e,t,r){e[mo]=ol(r),yg(e,t,r)}};function yg(e,{value:t,oldValue:r},n){e._modelValue=t,Be(t)?e.checked=xy(t,n.props.value)>-1:Ml(t)?e.checked=t.has(n.props.value):t!==r&&(e.checked=Bl(t,b_(e,!0)))}function LA(e){return"_value"in e?e._value:e.value}function b_(e,t){const r=t?"_trueValue":"_falseValue";return r in e?e[r]:t}const BA=wt({patchProp:NA},mA);let _g;function DA(){return _g||(_g=YS(BA))}const ZF=(...e)=>{const t=DA().createApp(...e),{mount:r}=t;return t.mount=n=>{const o=UA(n);if(!o)return;const i=t._component;!De(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.innerHTML="";const s=r(o,!1,$A(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),s},t};function $A(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function UA(e){return dt(e)?document.querySelector(e):e}var Mt="top",zt="bottom",Gt="right",Pt="left",Kl="auto",$o=[Mt,zt,Gt,Pt],Ci="start",Ao="end",w_="clippingParents",Cd="viewport",eo="popper",v_="reference",rf=$o.reduce(function(e,t){return e.concat([t+"-"+Ci,t+"-"+Ao])},[]),Rd=[].concat($o,[Kl]).reduce(function(e,t){return e.concat([t,t+"-"+Ci,t+"-"+Ao])},[]),E_="beforeRead",S_="read",A_="afterRead",T_="beforeMain",x_="main",I_="afterMain",C_="beforeWrite",R_="write",O_="afterWrite",k_=[E_,S_,A_,T_,x_,I_,C_,R_,O_];function Ur(e){return e?(e.nodeName||"").toLowerCase():null}function Qt(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Ri(e){var t=Qt(e).Element;return e instanceof t||e instanceof Element}function nr(e){var t=Qt(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Od(e){if(typeof ShadowRoot>"u")return!1;var t=Qt(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function FA(e){var t=e.state;Object.keys(t.elements).forEach(function(r){var n=t.styles[r]||{},o=t.attributes[r]||{},i=t.elements[r];!nr(i)||!Ur(i)||(Object.assign(i.style,n),Object.keys(o).forEach(function(s){var a=o[s];a===!1?i.removeAttribute(s):i.setAttribute(s,a===!0?"":a)}))})}function jA(e){var t=e.state,r={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.styles=r,t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach(function(n){var o=t.elements[n],i=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:r[n]),a=s.reduce(function(l,u){return l[u]="",l},{});!nr(o)||!Ur(o)||(Object.assign(o.style,a),Object.keys(i).forEach(function(l){o.removeAttribute(l)}))})}}const kd={name:"applyStyles",enabled:!0,phase:"write",fn:FA,effect:jA,requires:["computeStyles"]};function Pr(e){return e.split("-")[0]}var vi=Math.max,sl=Math.min,To=Math.round;function nf(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function N_(){return!/^((?!chrome|android).)*safari/i.test(nf())}function xo(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!1);var n=e.getBoundingClientRect(),o=1,i=1;t&&nr(e)&&(o=e.offsetWidth>0&&To(n.width)/e.offsetWidth||1,i=e.offsetHeight>0&&To(n.height)/e.offsetHeight||1);var s=Ri(e)?Qt(e):window,a=s.visualViewport,l=!N_()&&r,u=(n.left+(l&&a?a.offsetLeft:0))/o,c=(n.top+(l&&a?a.offsetTop:0))/i,d=n.width/o,p=n.height/i;return{width:d,height:p,top:c,right:u+d,bottom:c+p,left:u,x:u,y:c}}function Nd(e){var t=xo(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function M_(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Od(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function an(e){return Qt(e).getComputedStyle(e)}function WA(e){return["table","td","th"].indexOf(Ur(e))>=0}function Hn(e){return((Ri(e)?e.ownerDocument:e.document)||window.document).documentElement}function Yl(e){return Ur(e)==="html"?e:e.assignedSlot||e.parentNode||(Od(e)?e.host:null)||Hn(e)}function bg(e){return!nr(e)||an(e).position==="fixed"?null:e.offsetParent}function HA(e){var t=/firefox/i.test(nf()),r=/Trident/i.test(nf());if(r&&nr(e)){var n=an(e);if(n.position==="fixed")return null}var o=Yl(e);for(Od(o)&&(o=o.host);nr(o)&&["html","body"].indexOf(Ur(o))<0;){var i=an(o);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||t&&i.willChange==="filter"||t&&i.filter&&i.filter!=="none")return o;o=o.parentNode}return null}function Us(e){for(var t=Qt(e),r=bg(e);r&&WA(r)&&an(r).position==="static";)r=bg(r);return r&&(Ur(r)==="html"||Ur(r)==="body"&&an(r).position==="static")?t:r||HA(e)||t}function Md(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Es(e,t,r){return vi(e,sl(t,r))}function VA(e,t,r){var n=Es(e,t,r);return n>r?r:n}function P_(){return{top:0,right:0,bottom:0,left:0}}function L_(e){return Object.assign({},P_(),e)}function B_(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}var qA=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,L_(typeof t!="number"?t:B_(t,$o))};function KA(e){var t,r=e.state,n=e.name,o=e.options,i=r.elements.arrow,s=r.modifiersData.popperOffsets,a=Pr(r.placement),l=Md(a),u=[Pt,Gt].indexOf(a)>=0,c=u?"height":"width";if(!(!i||!s)){var d=qA(o.padding,r),p=Nd(i),g=l==="y"?Mt:Pt,_=l==="y"?zt:Gt,b=r.rects.reference[c]+r.rects.reference[l]-s[l]-r.rects.popper[c],x=s[l]-r.rects.reference[l],k=Us(i),R=k?l==="y"?k.clientHeight||0:k.clientWidth||0:0,A=b/2-x/2,B=d[g],$=R-p[c]-d[_],I=R/2-p[c]/2+A,P=Es(B,I,$),W=l;r.modifiersData[n]=(t={},t[W]=P,t.centerOffset=P-I,t)}}function YA(e){var t=e.state,r=e.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||M_(t.elements.popper,o)&&(t.elements.arrow=o))}const D_={name:"arrow",enabled:!0,phase:"main",fn:KA,effect:YA,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Io(e){return e.split("-")[1]}var zA={top:"auto",right:"auto",bottom:"auto",left:"auto"};function GA(e,t){var r=e.x,n=e.y,o=t.devicePixelRatio||1;return{x:To(r*o)/o||0,y:To(n*o)/o||0}}function wg(e){var t,r=e.popper,n=e.popperRect,o=e.placement,i=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,d=e.isFixed,p=s.x,g=p===void 0?0:p,_=s.y,b=_===void 0?0:_,x=typeof c=="function"?c({x:g,y:b}):{x:g,y:b};g=x.x,b=x.y;var k=s.hasOwnProperty("x"),R=s.hasOwnProperty("y"),A=Pt,B=Mt,$=window;if(u){var I=Us(r),P="clientHeight",W="clientWidth";if(I===Qt(r)&&(I=Hn(r),an(I).position!=="static"&&a==="absolute"&&(P="scrollHeight",W="scrollWidth")),I=I,o===Mt||(o===Pt||o===Gt)&&i===Ao){B=zt;var Y=d&&I===$&&$.visualViewport?$.visualViewport.height:I[P];b-=Y-n.height,b*=l?1:-1}if(o===Pt||(o===Mt||o===zt)&&i===Ao){A=Gt;var oe=d&&I===$&&$.visualViewport?$.visualViewport.width:I[W];g-=oe-n.width,g*=l?1:-1}}var te=Object.assign({position:a},u&&zA),M=c===!0?GA({x:g,y:b},Qt(r)):{x:g,y:b};if(g=M.x,b=M.y,l){var L;return Object.assign({},te,(L={},L[B]=R?"0":"",L[A]=k?"0":"",L.transform=($.devicePixelRatio||1)<=1?"translate("+g+"px, "+b+"px)":"translate3d("+g+"px, "+b+"px, 0)",L))}return Object.assign({},te,(t={},t[B]=R?b+"px":"",t[A]=k?g+"px":"",t.transform="",t))}function QA(e){var t=e.state,r=e.options,n=r.gpuAcceleration,o=n===void 0?!0:n,i=r.adaptive,s=i===void 0?!0:i,a=r.roundOffsets,l=a===void 0?!0:a,u={placement:Pr(t.placement),variation:Io(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,wg(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,wg(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const Pd={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:QA,data:{}};var ia={passive:!0};function XA(e){var t=e.state,r=e.instance,n=e.options,o=n.scroll,i=o===void 0?!0:o,s=n.resize,a=s===void 0?!0:s,l=Qt(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&u.forEach(function(c){c.addEventListener("scroll",r.update,ia)}),a&&l.addEventListener("resize",r.update,ia),function(){i&&u.forEach(function(c){c.removeEventListener("scroll",r.update,ia)}),a&&l.removeEventListener("resize",r.update,ia)}}const Ld={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:XA,data:{}};var JA={left:"right",right:"left",bottom:"top",top:"bottom"};function ka(e){return e.replace(/left|right|bottom|top/g,function(t){return JA[t]})}var ZA={start:"end",end:"start"};function vg(e){return e.replace(/start|end/g,function(t){return ZA[t]})}function Bd(e){var t=Qt(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Dd(e){return xo(Hn(e)).left+Bd(e).scrollLeft}function eT(e,t){var r=Qt(e),n=Hn(e),o=r.visualViewport,i=n.clientWidth,s=n.clientHeight,a=0,l=0;if(o){i=o.width,s=o.height;var u=N_();(u||!u&&t==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}return{width:i,height:s,x:a+Dd(e),y:l}}function tT(e){var t,r=Hn(e),n=Bd(e),o=(t=e.ownerDocument)==null?void 0:t.body,i=vi(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=vi(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+Dd(e),l=-n.scrollTop;return an(o||r).direction==="rtl"&&(a+=vi(r.clientWidth,o?o.clientWidth:0)-i),{width:i,height:s,x:a,y:l}}function $d(e){var t=an(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function $_(e){return["html","body","#document"].indexOf(Ur(e))>=0?e.ownerDocument.body:nr(e)&&$d(e)?e:$_(Yl(e))}function Ss(e,t){var r;t===void 0&&(t=[]);var n=$_(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),i=Qt(n),s=o?[i].concat(i.visualViewport||[],$d(n)?n:[]):n,a=t.concat(s);return o?a:a.concat(Ss(Yl(s)))}function of(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function rT(e,t){var r=xo(e,!1,t==="fixed");return r.top=r.top+e.clientTop,r.left=r.left+e.clientLeft,r.bottom=r.top+e.clientHeight,r.right=r.left+e.clientWidth,r.width=e.clientWidth,r.height=e.clientHeight,r.x=r.left,r.y=r.top,r}function Eg(e,t,r){return t===Cd?of(eT(e,r)):Ri(t)?rT(t,r):of(tT(Hn(e)))}function nT(e){var t=Ss(Yl(e)),r=["absolute","fixed"].indexOf(an(e).position)>=0,n=r&&nr(e)?Us(e):e;return Ri(n)?t.filter(function(o){return Ri(o)&&M_(o,n)&&Ur(o)!=="body"}):[]}function iT(e,t,r,n){var o=t==="clippingParents"?nT(e):[].concat(t),i=[].concat(o,[r]),s=i[0],a=i.reduce(function(l,u){var c=Eg(e,u,n);return l.top=vi(c.top,l.top),l.right=sl(c.right,l.right),l.bottom=sl(c.bottom,l.bottom),l.left=vi(c.left,l.left),l},Eg(e,s,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function U_(e){var t=e.reference,r=e.element,n=e.placement,o=n?Pr(n):null,i=n?Io(n):null,s=t.x+t.width/2-r.width/2,a=t.y+t.height/2-r.height/2,l;switch(o){case Mt:l={x:s,y:t.y-r.height};break;case zt:l={x:s,y:t.y+t.height};break;case Gt:l={x:t.x+t.width,y:a};break;case Pt:l={x:t.x-r.width,y:a};break;default:l={x:t.x,y:t.y}}var u=o?Md(o):null;if(u!=null){var c=u==="y"?"height":"width";switch(i){case Ci:l[u]=l[u]-(t[c]/2-r[c]/2);break;case Ao:l[u]=l[u]+(t[c]/2-r[c]/2);break}}return l}function Co(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,i=r.strategy,s=i===void 0?e.strategy:i,a=r.boundary,l=a===void 0?w_:a,u=r.rootBoundary,c=u===void 0?Cd:u,d=r.elementContext,p=d===void 0?eo:d,g=r.altBoundary,_=g===void 0?!1:g,b=r.padding,x=b===void 0?0:b,k=L_(typeof x!="number"?x:B_(x,$o)),R=p===eo?v_:eo,A=e.rects.popper,B=e.elements[_?R:p],$=iT(Ri(B)?B:B.contextElement||Hn(e.elements.popper),l,c,s),I=xo(e.elements.reference),P=U_({reference:I,element:A,strategy:"absolute",placement:o}),W=of(Object.assign({},A,P)),Y=p===eo?W:I,oe={top:$.top-Y.top+k.top,bottom:Y.bottom-$.bottom+k.bottom,left:$.left-Y.left+k.left,right:Y.right-$.right+k.right},te=e.modifiersData.offset;if(p===eo&&te){var M=te[o];Object.keys(oe).forEach(function(L){var ie=[Gt,zt].indexOf(L)>=0?1:-1,re=[Mt,zt].indexOf(L)>=0?"y":"x";oe[L]+=M[re]*ie})}return oe}function oT(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,i=r.rootBoundary,s=r.padding,a=r.flipVariations,l=r.allowedAutoPlacements,u=l===void 0?Rd:l,c=Io(n),d=c?a?rf:rf.filter(function(_){return Io(_)===c}):$o,p=d.filter(function(_){return u.indexOf(_)>=0});p.length===0&&(p=d);var g=p.reduce(function(_,b){return _[b]=Co(e,{placement:b,boundary:o,rootBoundary:i,padding:s})[Pr(b)],_},{});return Object.keys(g).sort(function(_,b){return g[_]-g[b]})}function sT(e){if(Pr(e)===Kl)return[];var t=ka(e);return[vg(e),t,vg(t)]}function aT(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,i=o===void 0?!0:o,s=r.altAxis,a=s===void 0?!0:s,l=r.fallbackPlacements,u=r.padding,c=r.boundary,d=r.rootBoundary,p=r.altBoundary,g=r.flipVariations,_=g===void 0?!0:g,b=r.allowedAutoPlacements,x=t.options.placement,k=Pr(x),R=k===x,A=l||(R||!_?[ka(x)]:sT(x)),B=[x].concat(A).reduce(function(ge,Se){return ge.concat(Pr(Se)===Kl?oT(t,{placement:Se,boundary:c,rootBoundary:d,padding:u,flipVariations:_,allowedAutoPlacements:b}):Se)},[]),$=t.rects.reference,I=t.rects.popper,P=new Map,W=!0,Y=B[0],oe=0;oe<B.length;oe++){var te=B[oe],M=Pr(te),L=Io(te)===Ci,ie=[Mt,zt].indexOf(M)>=0,re=ie?"width":"height",ae=Co(t,{placement:te,boundary:c,rootBoundary:d,altBoundary:p,padding:u}),se=ie?L?Gt:Pt:L?zt:Mt;$[re]>I[re]&&(se=ka(se));var Q=ka(se),he=[];if(i&&he.push(ae[M]<=0),a&&he.push(ae[se]<=0,ae[Q]<=0),he.every(function(ge){return ge})){Y=te,W=!1;break}P.set(te,he)}if(W)for(var fe=_?3:1,pe=function(Se){var ye=B.find(function(V){var j=P.get(V);if(j)return j.slice(0,Se).every(function(Z){return Z})});if(ye)return Y=ye,"break"},F=fe;F>0;F--){var ne=pe(F);if(ne==="break")break}t.placement!==Y&&(t.modifiersData[n]._skip=!0,t.placement=Y,t.reset=!0)}}const F_={name:"flip",enabled:!0,phase:"main",fn:aT,requiresIfExists:["offset"],data:{_skip:!1}};function Sg(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Ag(e){return[Mt,Gt,zt,Pt].some(function(t){return e[t]>=0})}function lT(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,s=Co(t,{elementContext:"reference"}),a=Co(t,{altBoundary:!0}),l=Sg(s,n),u=Sg(a,o,i),c=Ag(l),d=Ag(u);t.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}const j_={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:lT};function uT(e,t,r){var n=Pr(e),o=[Pt,Mt].indexOf(n)>=0?-1:1,i=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,s=i[0],a=i[1];return s=s||0,a=(a||0)*o,[Pt,Gt].indexOf(n)>=0?{x:a,y:s}:{x:s,y:a}}function cT(e){var t=e.state,r=e.options,n=e.name,o=r.offset,i=o===void 0?[0,0]:o,s=Rd.reduce(function(c,d){return c[d]=uT(d,t.rects,i),c},{}),a=s[t.placement],l=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=s}const W_={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:cT};function fT(e){var t=e.state,r=e.name;t.modifiersData[r]=U_({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const Ud={name:"popperOffsets",enabled:!0,phase:"read",fn:fT,data:{}};function hT(e){return e==="x"?"y":"x"}function dT(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,i=o===void 0?!0:o,s=r.altAxis,a=s===void 0?!1:s,l=r.boundary,u=r.rootBoundary,c=r.altBoundary,d=r.padding,p=r.tether,g=p===void 0?!0:p,_=r.tetherOffset,b=_===void 0?0:_,x=Co(t,{boundary:l,rootBoundary:u,padding:d,altBoundary:c}),k=Pr(t.placement),R=Io(t.placement),A=!R,B=Md(k),$=hT(B),I=t.modifiersData.popperOffsets,P=t.rects.reference,W=t.rects.popper,Y=typeof b=="function"?b(Object.assign({},t.rects,{placement:t.placement})):b,oe=typeof Y=="number"?{mainAxis:Y,altAxis:Y}:Object.assign({mainAxis:0,altAxis:0},Y),te=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,M={x:0,y:0};if(I){if(i){var L,ie=B==="y"?Mt:Pt,re=B==="y"?zt:Gt,ae=B==="y"?"height":"width",se=I[B],Q=se+x[ie],he=se-x[re],fe=g?-W[ae]/2:0,pe=R===Ci?P[ae]:W[ae],F=R===Ci?-W[ae]:-P[ae],ne=t.elements.arrow,ge=g&&ne?Nd(ne):{width:0,height:0},Se=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:P_(),ye=Se[ie],V=Se[re],j=Es(0,P[ae],ge[ae]),Z=A?P[ae]/2-fe-j-ye-oe.mainAxis:pe-j-ye-oe.mainAxis,ue=A?-P[ae]/2+fe+j+V+oe.mainAxis:F+j+V+oe.mainAxis,le=t.elements.arrow&&Us(t.elements.arrow),X=le?B==="y"?le.clientTop||0:le.clientLeft||0:0,E=(L=te==null?void 0:te[B])!=null?L:0,T=se+Z-E-X,S=se+ue-E,O=Es(g?sl(Q,T):Q,se,g?vi(he,S):he);I[B]=O,M[B]=O-se}if(a){var N,ee=B==="x"?Mt:Pt,J=B==="x"?zt:Gt,D=I[$],K=$==="y"?"height":"width",z=D+x[ee],ce=D-x[J],be=[Mt,Pt].indexOf(k)!==-1,Te=(N=te==null?void 0:te[$])!=null?N:0,y=be?z:D-P[K]-W[K]-Te+oe.altAxis,h=be?D+P[K]+W[K]-Te-oe.altAxis:ce,f=g&&be?VA(y,D,h):Es(g?y:z,D,g?h:ce);I[$]=f,M[$]=f-D}t.modifiersData[n]=M}}const H_={name:"preventOverflow",enabled:!0,phase:"main",fn:dT,requiresIfExists:["offset"]};function pT(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function gT(e){return e===Qt(e)||!nr(e)?Bd(e):pT(e)}function mT(e){var t=e.getBoundingClientRect(),r=To(t.width)/e.offsetWidth||1,n=To(t.height)/e.offsetHeight||1;return r!==1||n!==1}function yT(e,t,r){r===void 0&&(r=!1);var n=nr(t),o=nr(t)&&mT(t),i=Hn(t),s=xo(e,o,r),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!r)&&((Ur(t)!=="body"||$d(i))&&(a=gT(t)),nr(t)?(l=xo(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):i&&(l.x=Dd(i))),{x:s.left+a.scrollLeft-l.x,y:s.top+a.scrollTop-l.y,width:s.width,height:s.height}}function _T(e){var t=new Map,r=new Set,n=[];e.forEach(function(i){t.set(i.name,i)});function o(i){r.add(i.name);var s=[].concat(i.requires||[],i.requiresIfExists||[]);s.forEach(function(a){if(!r.has(a)){var l=t.get(a);l&&o(l)}}),n.push(i)}return e.forEach(function(i){r.has(i.name)||o(i)}),n}function bT(e){var t=_T(e);return k_.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function wT(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function vT(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}var Tg={placement:"bottom",modifiers:[],strategy:"absolute"};function xg(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function zl(e){e===void 0&&(e={});var t=e,r=t.defaultModifiers,n=r===void 0?[]:r,o=t.defaultOptions,i=o===void 0?Tg:o;return function(a,l,u){u===void 0&&(u=i);var c={placement:"bottom",orderedModifiers:[],options:Object.assign({},Tg,i),modifiersData:{},elements:{reference:a,popper:l},attributes:{},styles:{}},d=[],p=!1,g={state:c,setOptions:function(k){var R=typeof k=="function"?k(c.options):k;b(),c.options=Object.assign({},i,c.options,R),c.scrollParents={reference:Ri(a)?Ss(a):a.contextElement?Ss(a.contextElement):[],popper:Ss(l)};var A=bT(vT([].concat(n,c.options.modifiers)));return c.orderedModifiers=A.filter(function(B){return B.enabled}),_(),g.update()},forceUpdate:function(){if(!p){var k=c.elements,R=k.reference,A=k.popper;if(xg(R,A)){c.rects={reference:yT(R,Us(A),c.options.strategy==="fixed"),popper:Nd(A)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(oe){return c.modifiersData[oe.name]=Object.assign({},oe.data)});for(var B=0;B<c.orderedModifiers.length;B++){if(c.reset===!0){c.reset=!1,B=-1;continue}var $=c.orderedModifiers[B],I=$.fn,P=$.options,W=P===void 0?{}:P,Y=$.name;typeof I=="function"&&(c=I({state:c,options:W,name:Y,instance:g})||c)}}}},update:wT(function(){return new Promise(function(x){g.forceUpdate(),x(c)})}),destroy:function(){b(),p=!0}};if(!xg(a,l))return g;g.setOptions(u).then(function(x){!p&&u.onFirstUpdate&&u.onFirstUpdate(x)});function _(){c.orderedModifiers.forEach(function(x){var k=x.name,R=x.options,A=R===void 0?{}:R,B=x.effect;if(typeof B=="function"){var $=B({state:c,name:k,instance:g,options:A}),I=function(){};d.push($||I)}})}function b(){d.forEach(function(x){return x()}),d=[]}return g}}var ET=zl(),ST=[Ld,Ud,Pd,kd],AT=zl({defaultModifiers:ST}),TT=[Ld,Ud,Pd,kd,W_,F_,H_,D_,j_],Fd=zl({defaultModifiers:TT});const V_=Object.freeze(Object.defineProperty({__proto__:null,afterMain:I_,afterRead:A_,afterWrite:O_,applyStyles:kd,arrow:D_,auto:Kl,basePlacements:$o,beforeMain:T_,beforeRead:E_,beforeWrite:C_,bottom:zt,clippingParents:w_,computeStyles:Pd,createPopper:Fd,createPopperBase:ET,createPopperLite:AT,detectOverflow:Co,end:Ao,eventListeners:Ld,flip:F_,hide:j_,left:Pt,main:x_,modifierPhases:k_,offset:W_,placements:Rd,popper:eo,popperGenerator:zl,popperOffsets:Ud,preventOverflow:H_,read:S_,reference:v_,right:Gt,start:Ci,top:Mt,variationPlacements:rf,viewport:Cd,write:R_},Symbol.toStringTag,{value:"Module"}));/*!
-  * Bootstrap v5.3.3 (https://getbootstrap.com/)
-  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
-  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-  */const An=new Map,Fu={set(e,t,r){An.has(e)||An.set(e,new Map);const n=An.get(e);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,r)},get(e,t){return An.has(e)&&An.get(e).get(t)||null},remove(e,t){if(!An.has(e))return;const r=An.get(e);r.delete(t),r.size===0&&An.delete(e)}},xT=1e6,IT=1e3,sf="transitionend",q_=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,r)=>`#${CSS.escape(r)}`)),e),CT=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),RT=e=>{do e+=Math.floor(Math.random()*xT);while(document.getElementById(e));return e},OT=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e);const n=Number.parseFloat(t),o=Number.parseFloat(r);return!n&&!o?0:(t=t.split(",")[0],r=r.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(r))*IT)},K_=e=>{e.dispatchEvent(new Event(sf))},on=e=>!e||typeof e!="object"?!1:(typeof e.jquery<"u"&&(e=e[0]),typeof e.nodeType<"u"),Fn=e=>on(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(q_(e)):null,Uo=e=>{if(!on(e)||e.getClientRects().length===0)return!1;const t=getComputedStyle(e).getPropertyValue("visibility")==="visible",r=e.closest("details:not([open])");if(!r)return t;if(r!==e){const n=e.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return t},jn=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled<"u"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",Y_=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?Y_(e.parentNode):null},al=()=>{},Fs=e=>{e.offsetHeight},z_=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,ju=[],kT=e=>{document.readyState==="loading"?(ju.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of ju)t()}),ju.push(e)):e()},ir=()=>document.documentElement.dir==="rtl",sr=e=>{kT(()=>{const t=z_();if(t){const r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}})},Ut=(e,t=[],r=e)=>typeof e=="function"?e(...t):r,G_=(e,t,r=!0)=>{if(!r){Ut(e);return}const o=OT(t)+5;let i=!1;const s=({target:a})=>{a===t&&(i=!0,t.removeEventListener(sf,s),Ut(e))};t.addEventListener(sf,s),setTimeout(()=>{i||K_(t)},o)},jd=(e,t,r,n)=>{const o=e.length;let i=e.indexOf(t);return i===-1?!r&&n?e[o-1]:e[0]:(i+=r?1:-1,n&&(i=(i+o)%o),e[Math.max(0,Math.min(i,o-1))])},NT=/[^.]*(?=\..*)\.|.*/,MT=/\..*/,PT=/::\d+$/,Wu={};let Ig=1;const Q_={mouseenter:"mouseover",mouseleave:"mouseout"},LT=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function X_(e,t){return t&&`${t}::${Ig++}`||e.uidEvent||Ig++}function J_(e){const t=X_(e);return e.uidEvent=t,Wu[t]=Wu[t]||{},Wu[t]}function BT(e,t){return function r(n){return Wd(n,{delegateTarget:e}),r.oneOff&&Ce.off(e,n.type,t),t.apply(e,[n])}}function DT(e,t,r){return function n(o){const i=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of i)if(a===s)return Wd(o,{delegateTarget:s}),n.oneOff&&Ce.off(e,o.type,t,r),r.apply(s,[o])}}function Z_(e,t,r=null){return Object.values(e).find(n=>n.callable===t&&n.delegationSelector===r)}function eb(e,t,r){const n=typeof t=="string",o=n?r:t||r;let i=tb(e);return LT.has(i)||(i=e),[n,o,i]}function Cg(e,t,r,n,o){if(typeof t!="string"||!e)return;let[i,s,a]=eb(t,r,n);t in Q_&&(s=(_=>function(b){if(!b.relatedTarget||b.relatedTarget!==b.delegateTarget&&!b.delegateTarget.contains(b.relatedTarget))return _.call(this,b)})(s));const l=J_(e),u=l[a]||(l[a]={}),c=Z_(u,s,i?r:null);if(c){c.oneOff=c.oneOff&&o;return}const d=X_(s,t.replace(NT,"")),p=i?DT(e,r,s):BT(e,s);p.delegationSelector=i?r:null,p.callable=s,p.oneOff=o,p.uidEvent=d,u[d]=p,e.addEventListener(a,p,i)}function af(e,t,r,n,o){const i=Z_(t[r],n,o);i&&(e.removeEventListener(r,i,!!o),delete t[r][i.uidEvent])}function $T(e,t,r,n){const o=t[r]||{};for(const[i,s]of Object.entries(o))i.includes(n)&&af(e,t,r,s.callable,s.delegationSelector)}function tb(e){return e=e.replace(MT,""),Q_[e]||e}const Ce={on(e,t,r,n){Cg(e,t,r,n,!1)},one(e,t,r,n){Cg(e,t,r,n,!0)},off(e,t,r,n){if(typeof t!="string"||!e)return;const[o,i,s]=eb(t,r,n),a=s!==t,l=J_(e),u=l[s]||{},c=t.startsWith(".");if(typeof i<"u"){if(!Object.keys(u).length)return;af(e,l,s,i,o?r:null);return}if(c)for(const d of Object.keys(l))$T(e,l,d,t.slice(1));for(const[d,p]of Object.entries(u)){const g=d.replace(PT,"");(!a||t.includes(g))&&af(e,l,s,p.callable,p.delegationSelector)}},trigger(e,t,r){if(typeof t!="string"||!e)return null;const n=z_(),o=tb(t),i=t!==o;let s=null,a=!0,l=!0,u=!1;i&&n&&(s=n.Event(t,r),n(e).trigger(s),a=!s.isPropagationStopped(),l=!s.isImmediatePropagationStopped(),u=s.isDefaultPrevented());const c=Wd(new Event(t,{bubbles:a,cancelable:!0}),r);return u&&c.preventDefault(),l&&e.dispatchEvent(c),c.defaultPrevented&&s&&s.preventDefault(),c}};function Wd(e,t={}){for(const[r,n]of Object.entries(t))try{e[r]=n}catch{Object.defineProperty(e,r,{configurable:!0,get(){return n}})}return e}function Rg(e){if(e==="true")return!0;if(e==="false")return!1;if(e===Number(e).toString())return Number(e);if(e===""||e==="null")return null;if(typeof e!="string")return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function Hu(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const sn={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${Hu(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${Hu(t)}`)},getDataAttributes(e){if(!e)return{};const t={},r=Object.keys(e.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(const n of r){let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1,o.length),t[o]=Rg(e.dataset[n])}return t},getDataAttribute(e,t){return Rg(e.getAttribute(`data-bs-${Hu(t)}`))}};class js{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,r){const n=on(r)?sn.getDataAttribute(r,"config"):{};return{...this.constructor.Default,...typeof n=="object"?n:{},...on(r)?sn.getDataAttributes(r):{},...typeof t=="object"?t:{}}}_typeCheckConfig(t,r=this.constructor.DefaultType){for(const[n,o]of Object.entries(r)){const i=t[n],s=on(i)?"element":CT(i);if(!new RegExp(o).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${o}".`)}}}const UT="5.3.3";class br extends js{constructor(t,r){super(),t=Fn(t),t&&(this._element=t,this._config=this._getConfig(r),Fu.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Fu.remove(this._element,this.constructor.DATA_KEY),Ce.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,r,n=!0){G_(t,r,n)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Fu.get(Fn(t),this.DATA_KEY)}static getOrCreateInstance(t,r={}){return this.getInstance(t)||new this(t,typeof r=="object"?r:null)}static get VERSION(){return UT}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const Vu=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&r!=="#"?r.trim():null}return t?t.split(",").map(r=>q_(r)).join(","):null},Pe={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(r=>r.matches(t))},parents(e,t){const r=[];let n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(r=>!jn(r)&&Uo(r))},getSelectorFromElement(e){const t=Vu(e);return t&&Pe.findOne(t)?t:null},getElementFromSelector(e){const t=Vu(e);return t?Pe.findOne(t):null},getMultipleElementsFromSelector(e){const t=Vu(e);return t?Pe.find(t):[]}},Gl=(e,t="hide")=>{const r=`click.dismiss${e.EVENT_KEY}`,n=e.NAME;Ce.on(document,r,`[data-bs-dismiss="${n}"]`,function(o){if(["A","AREA"].includes(this.tagName)&&o.preventDefault(),jn(this))return;const i=Pe.getElementFromSelector(this)||this.closest(`.${n}`);e.getOrCreateInstance(i)[t]()})},FT="alert",jT="bs.alert",rb=`.${jT}`,WT=`close${rb}`,HT=`closed${rb}`,VT="fade",qT="show";class Ql extends br{static get NAME(){return FT}close(){if(Ce.trigger(this._element,WT).defaultPrevented)return;this._element.classList.remove(qT);const r=this._element.classList.contains(VT);this._queueCallback(()=>this._destroyElement(),this._element,r)}_destroyElement(){this._element.remove(),Ce.trigger(this._element,HT),this.dispose()}static jQueryInterface(t){return this.each(function(){const r=Ql.getOrCreateInstance(this);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}Gl(Ql,"close");sr(Ql);const KT="button",YT="bs.button",zT=`.${YT}`,GT=".data-api",QT="active",Og='[data-bs-toggle="button"]',XT=`click${zT}${GT}`;class Xl extends br{static get NAME(){return KT}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(QT))}static jQueryInterface(t){return this.each(function(){const r=Xl.getOrCreateInstance(this);t==="toggle"&&r[t]()})}}Ce.on(document,XT,Og,e=>{e.preventDefault();const t=e.target.closest(Og);Xl.getOrCreateInstance(t).toggle()});sr(Xl);const JT="swipe",Fo=".bs.swipe",ZT=`touchstart${Fo}`,ex=`touchmove${Fo}`,tx=`touchend${Fo}`,rx=`pointerdown${Fo}`,nx=`pointerup${Fo}`,ix="touch",ox="pen",sx="pointer-event",ax=40,lx={endCallback:null,leftCallback:null,rightCallback:null},ux={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class ll extends js{constructor(t,r){super(),this._element=t,!(!t||!ll.isSupported())&&(this._config=this._getConfig(r),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return lx}static get DefaultType(){return ux}static get NAME(){return JT}dispose(){Ce.off(this._element,Fo)}_start(t){if(!this._supportPointerEvents){this._deltaX=t.touches[0].clientX;return}this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX)}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Ut(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=ax)return;const r=t/this._deltaX;this._deltaX=0,r&&Ut(r>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(Ce.on(this._element,rx,t=>this._start(t)),Ce.on(this._element,nx,t=>this._end(t)),this._element.classList.add(sx)):(Ce.on(this._element,ZT,t=>this._start(t)),Ce.on(this._element,ex,t=>this._move(t)),Ce.on(this._element,tx,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&(t.pointerType===ox||t.pointerType===ix)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const cx="carousel",fx="bs.carousel",Vn=`.${fx}`,nb=".data-api",hx="ArrowLeft",dx="ArrowRight",px=500,Xo="next",Gi="prev",to="left",Na="right",gx=`slide${Vn}`,qu=`slid${Vn}`,mx=`keydown${Vn}`,yx=`mouseenter${Vn}`,_x=`mouseleave${Vn}`,bx=`dragstart${Vn}`,vx=`load${Vn}${nb}`,Ex=`click${Vn}${nb}`,ib="carousel",oa="active",Sx="slide",Ax="carousel-item-end",Tx="carousel-item-start",xx="carousel-item-next",Ix="carousel-item-prev",ob=".active",sb=".carousel-item",Cx=ob+sb,Rx=".carousel-item img",Ox=".carousel-indicators",kx="[data-bs-slide], [data-bs-slide-to]",Nx='[data-bs-ride="carousel"]',Mx={[hx]:Na,[dx]:to},Px={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Lx={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Ws extends br{constructor(t,r){super(t,r),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Pe.findOne(Ox,this._element),this._addEventListeners(),this._config.ride===ib&&this.cycle()}static get Default(){return Px}static get DefaultType(){return Lx}static get NAME(){return cx}next(){this._slide(Xo)}nextWhenVisible(){!document.hidden&&Uo(this._element)&&this.next()}prev(){this._slide(Gi)}pause(){this._isSliding&&K_(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){Ce.one(this._element,qu,()=>this.cycle());return}this.cycle()}}to(t){const r=this._getItems();if(t>r.length-1||t<0)return;if(this._isSliding){Ce.one(this._element,qu,()=>this.to(t));return}const n=this._getItemIndex(this._getActive());if(n===t)return;const o=t>n?Xo:Gi;this._slide(o,r[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&Ce.on(this._element,mx,t=>this._keydown(t)),this._config.pause==="hover"&&(Ce.on(this._element,yx,()=>this.pause()),Ce.on(this._element,_x,()=>this._maybeEnableCycle())),this._config.touch&&ll.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const n of Pe.find(Rx,this._element))Ce.on(n,bx,o=>o.preventDefault());const r={leftCallback:()=>this._slide(this._directionToOrder(to)),rightCallback:()=>this._slide(this._directionToOrder(Na)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),px+this._config.interval))}};this._swipeHelper=new ll(this._element,r)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const r=Mx[t.key];r&&(t.preventDefault(),this._slide(this._directionToOrder(r)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const r=Pe.findOne(ob,this._indicatorsElement);r.classList.remove(oa),r.removeAttribute("aria-current");const n=Pe.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);n&&(n.classList.add(oa),n.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const r=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=r||this._config.defaultInterval}_slide(t,r=null){if(this._isSliding)return;const n=this._getActive(),o=t===Xo,i=r||jd(this._getItems(),n,o,this._config.wrap);if(i===n)return;const s=this._getItemIndex(i),a=g=>Ce.trigger(this._element,g,{relatedTarget:i,direction:this._orderToDirection(t),from:this._getItemIndex(n),to:s});if(a(gx).defaultPrevented||!n||!i)return;const u=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(s),this._activeElement=i;const c=o?Tx:Ax,d=o?xx:Ix;i.classList.add(d),Fs(i),n.classList.add(c),i.classList.add(c);const p=()=>{i.classList.remove(c,d),i.classList.add(oa),n.classList.remove(oa,d,c),this._isSliding=!1,a(qu)};this._queueCallback(p,n,this._isAnimated()),u&&this.cycle()}_isAnimated(){return this._element.classList.contains(Sx)}_getActive(){return Pe.findOne(Cx,this._element)}_getItems(){return Pe.find(sb,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return ir()?t===to?Gi:Xo:t===to?Xo:Gi}_orderToDirection(t){return ir()?t===Gi?to:Na:t===Gi?Na:to}static jQueryInterface(t){return this.each(function(){const r=Ws.getOrCreateInstance(this,t);if(typeof t=="number"){r.to(t);return}if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Ce.on(document,Ex,kx,function(e){const t=Pe.getElementFromSelector(this);if(!t||!t.classList.contains(ib))return;e.preventDefault();const r=Ws.getOrCreateInstance(t),n=this.getAttribute("data-bs-slide-to");if(n){r.to(n),r._maybeEnableCycle();return}if(sn.getDataAttribute(this,"slide")==="next"){r.next(),r._maybeEnableCycle();return}r.prev(),r._maybeEnableCycle()});Ce.on(window,vx,()=>{const e=Pe.find(Nx);for(const t of e)Ws.getOrCreateInstance(t)});sr(Ws);const Bx="collapse",Dx="bs.collapse",Hs=`.${Dx}`,$x=".data-api",Ux=`show${Hs}`,Fx=`shown${Hs}`,jx=`hide${Hs}`,Wx=`hidden${Hs}`,Hx=`click${Hs}${$x}`,Ku="show",so="collapse",sa="collapsing",Vx="collapsed",qx=`:scope .${so} .${so}`,Kx="collapse-horizontal",Yx="width",zx="height",Gx=".collapse.show, .collapse.collapsing",lf='[data-bs-toggle="collapse"]',Qx={parent:null,toggle:!0},Xx={parent:"(null|element)",toggle:"boolean"};class ks extends br{constructor(t,r){super(t,r),this._isTransitioning=!1,this._triggerArray=[];const n=Pe.find(lf);for(const o of n){const i=Pe.getSelectorFromElement(o),s=Pe.find(i).filter(a=>a===this._element);i!==null&&s.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Qx}static get DefaultType(){return Xx}static get NAME(){return Bx}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(Gx).filter(a=>a!==this._element).map(a=>ks.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||Ce.trigger(this._element,Ux).defaultPrevented)return;for(const a of t)a.hide();const n=this._getDimension();this._element.classList.remove(so),this._element.classList.add(sa),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const o=()=>{this._isTransitioning=!1,this._element.classList.remove(sa),this._element.classList.add(so,Ku),this._element.style[n]="",Ce.trigger(this._element,Fx)},s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(o,this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown()||Ce.trigger(this._element,jx).defaultPrevented)return;const r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,Fs(this._element),this._element.classList.add(sa),this._element.classList.remove(so,Ku);for(const o of this._triggerArray){const i=Pe.getElementFromSelector(o);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([o],!1)}this._isTransitioning=!0;const n=()=>{this._isTransitioning=!1,this._element.classList.remove(sa),this._element.classList.add(so),Ce.trigger(this._element,Wx)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Ku)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=Fn(t.parent),t}_getDimension(){return this._element.classList.contains(Kx)?Yx:zx}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(lf);for(const r of t){const n=Pe.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(t){const r=Pe.find(qx,this._config.parent);return Pe.find(t,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(t,r){if(t.length)for(const n of t)n.classList.toggle(Vx,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(t){const r={};return typeof t=="string"&&/show|hide/.test(t)&&(r.toggle=!1),this.each(function(){const n=ks.getOrCreateInstance(this,r);if(typeof t=="string"){if(typeof n[t]>"u")throw new TypeError(`No method named "${t}"`);n[t]()}})}}Ce.on(document,Hx,lf,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();for(const t of Pe.getMultipleElementsFromSelector(this))ks.getOrCreateInstance(t,{toggle:!1}).toggle()});sr(ks);const kg="dropdown",Jx="bs.dropdown",Bi=`.${Jx}`,Hd=".data-api",Zx="Escape",Ng="Tab",eI="ArrowUp",Mg="ArrowDown",tI=2,rI=`hide${Bi}`,nI=`hidden${Bi}`,iI=`show${Bi}`,oI=`shown${Bi}`,ab=`click${Bi}${Hd}`,lb=`keydown${Bi}${Hd}`,sI=`keyup${Bi}${Hd}`,ro="show",aI="dropup",lI="dropend",uI="dropstart",cI="dropup-center",fI="dropdown-center",hi='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',hI=`${hi}.${ro}`,Ma=".dropdown-menu",dI=".navbar",pI=".navbar-nav",gI=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",mI=ir()?"top-end":"top-start",yI=ir()?"top-start":"top-end",_I=ir()?"bottom-end":"bottom-start",bI=ir()?"bottom-start":"bottom-end",wI=ir()?"left-start":"right-start",vI=ir()?"right-start":"left-start",EI="top",SI="bottom",AI={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},TI={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Lr extends br{constructor(t,r){super(t,r),this._popper=null,this._parent=this._element.parentNode,this._menu=Pe.next(this._element,Ma)[0]||Pe.prev(this._element,Ma)[0]||Pe.findOne(Ma,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return AI}static get DefaultType(){return TI}static get NAME(){return kg}toggle(){return this._isShown()?this.hide():this.show()}show(){if(jn(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!Ce.trigger(this._element,iI,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(pI))for(const n of[].concat(...document.body.children))Ce.on(n,"mouseover",al);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(ro),this._element.classList.add(ro),Ce.trigger(this._element,oI,t)}}hide(){if(jn(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!Ce.trigger(this._element,rI,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))Ce.off(n,"mouseover",al);this._popper&&this._popper.destroy(),this._menu.classList.remove(ro),this._element.classList.remove(ro),this._element.setAttribute("aria-expanded","false"),sn.removeDataAttribute(this._menu,"popper"),Ce.trigger(this._element,nI,t)}}_getConfig(t){if(t=super._getConfig(t),typeof t.reference=="object"&&!on(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${kg.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(typeof V_>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;this._config.reference==="parent"?t=this._parent:on(this._config.reference)?t=Fn(this._config.reference):typeof this._config.reference=="object"&&(t=this._config.reference);const r=this._getPopperConfig();this._popper=Fd(t,this._menu,r)}_isShown(){return this._menu.classList.contains(ro)}_getPlacement(){const t=this._parent;if(t.classList.contains(lI))return wI;if(t.classList.contains(uI))return vI;if(t.classList.contains(cI))return EI;if(t.classList.contains(fI))return SI;const r=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(aI)?r?yI:mI:r?bI:_I}_detectNavbar(){return this._element.closest(dI)!==null}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(sn.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Ut(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:r}){const n=Pe.find(gI,this._menu).filter(o=>Uo(o));n.length&&jd(n,r,t===Mg,!n.includes(r)).focus()}static jQueryInterface(t){return this.each(function(){const r=Lr.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}static clearMenus(t){if(t.button===tI||t.type==="keyup"&&t.key!==Ng)return;const r=Pe.find(hI);for(const n of r){const o=Lr.getInstance(n);if(!o||o._config.autoClose===!1)continue;const i=t.composedPath(),s=i.includes(o._menu);if(i.includes(o._element)||o._config.autoClose==="inside"&&!s||o._config.autoClose==="outside"&&s||o._menu.contains(t.target)&&(t.type==="keyup"&&t.key===Ng||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const a={relatedTarget:o._element};t.type==="click"&&(a.clickEvent=t),o._completeHide(a)}}static dataApiKeydownHandler(t){const r=/input|textarea/i.test(t.target.tagName),n=t.key===Zx,o=[eI,Mg].includes(t.key);if(!o&&!n||r&&!n)return;t.preventDefault();const i=this.matches(hi)?this:Pe.prev(this,hi)[0]||Pe.next(this,hi)[0]||Pe.findOne(hi,t.delegateTarget.parentNode),s=Lr.getOrCreateInstance(i);if(o){t.stopPropagation(),s.show(),s._selectMenuItem(t);return}s._isShown()&&(t.stopPropagation(),s.hide(),i.focus())}}Ce.on(document,lb,hi,Lr.dataApiKeydownHandler);Ce.on(document,lb,Ma,Lr.dataApiKeydownHandler);Ce.on(document,ab,Lr.clearMenus);Ce.on(document,sI,Lr.clearMenus);Ce.on(document,ab,hi,function(e){e.preventDefault(),Lr.getOrCreateInstance(this).toggle()});sr(Lr);const ub="backdrop",xI="fade",Pg="show",Lg=`mousedown.bs.${ub}`,II={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},CI={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class cb extends js{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return II}static get DefaultType(){return CI}static get NAME(){return ub}show(t){if(!this._config.isVisible){Ut(t);return}this._append();const r=this._getElement();this._config.isAnimated&&Fs(r),r.classList.add(Pg),this._emulateAnimation(()=>{Ut(t)})}hide(t){if(!this._config.isVisible){Ut(t);return}this._getElement().classList.remove(Pg),this._emulateAnimation(()=>{this.dispose(),Ut(t)})}dispose(){this._isAppended&&(Ce.off(this._element,Lg),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(xI),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Fn(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),Ce.on(t,Lg,()=>{Ut(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(t){G_(t,this._getElement(),this._config.isAnimated)}}const RI="focustrap",OI="bs.focustrap",ul=`.${OI}`,kI=`focusin${ul}`,NI=`keydown.tab${ul}`,MI="Tab",PI="forward",Bg="backward",LI={autofocus:!0,trapElement:null},BI={autofocus:"boolean",trapElement:"element"};class fb extends js{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return LI}static get DefaultType(){return BI}static get NAME(){return RI}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),Ce.off(document,ul),Ce.on(document,kI,t=>this._handleFocusin(t)),Ce.on(document,NI,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,Ce.off(document,ul))}_handleFocusin(t){const{trapElement:r}=this._config;if(t.target===document||t.target===r||r.contains(t.target))return;const n=Pe.focusableChildren(r);n.length===0?r.focus():this._lastTabNavDirection===Bg?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){t.key===MI&&(this._lastTabNavDirection=t.shiftKey?Bg:PI)}}const Dg=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",$g=".sticky-top",aa="padding-right",Ug="margin-right";class uf{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,aa,r=>r+t),this._setElementAttributes(Dg,aa,r=>r+t),this._setElementAttributes($g,Ug,r=>r-t)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,aa),this._resetElementAttributes(Dg,aa),this._resetElementAttributes($g,Ug)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,r,n){const o=this.getWidth(),i=s=>{if(s!==this._element&&window.innerWidth>s.clientWidth+o)return;this._saveInitialAttribute(s,r);const a=window.getComputedStyle(s).getPropertyValue(r);s.style.setProperty(r,`${n(Number.parseFloat(a))}px`)};this._applyManipulationCallback(t,i)}_saveInitialAttribute(t,r){const n=t.style.getPropertyValue(r);n&&sn.setDataAttribute(t,r,n)}_resetElementAttributes(t,r){const n=o=>{const i=sn.getDataAttribute(o,r);if(i===null){o.style.removeProperty(r);return}sn.removeDataAttribute(o,r),o.style.setProperty(r,i)};this._applyManipulationCallback(t,n)}_applyManipulationCallback(t,r){if(on(t)){r(t);return}for(const n of Pe.find(t,this._element))r(n)}}const DI="modal",$I="bs.modal",or=`.${$I}`,UI=".data-api",FI="Escape",jI=`hide${or}`,WI=`hidePrevented${or}`,hb=`hidden${or}`,db=`show${or}`,HI=`shown${or}`,VI=`resize${or}`,qI=`click.dismiss${or}`,KI=`mousedown.dismiss${or}`,YI=`keydown.dismiss${or}`,zI=`click${or}${UI}`,Fg="modal-open",GI="fade",jg="show",Yu="modal-static",QI=".modal.show",XI=".modal-dialog",JI=".modal-body",ZI='[data-bs-toggle="modal"]',eC={backdrop:!0,focus:!0,keyboard:!0},tC={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ro extends br{constructor(t,r){super(t,r),this._dialog=Pe.findOne(XI,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new uf,this._addEventListeners()}static get Default(){return eC}static get DefaultType(){return tC}static get NAME(){return DI}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||Ce.trigger(this._element,db,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Fg),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){!this._isShown||this._isTransitioning||Ce.trigger(this._element,jI).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(jg),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){Ce.off(window,or),Ce.off(this._dialog,or),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new cb({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new fb({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const r=Pe.findOne(JI,this._dialog);r&&(r.scrollTop=0),Fs(this._element),this._element.classList.add(jg);const n=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,Ce.trigger(this._element,HI,{relatedTarget:t})};this._queueCallback(n,this._dialog,this._isAnimated())}_addEventListeners(){Ce.on(this._element,YI,t=>{if(t.key===FI){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),Ce.on(window,VI,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),Ce.on(this._element,KI,t=>{Ce.one(this._element,qI,r=>{if(!(this._element!==t.target||this._element!==r.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Fg),this._resetAdjustments(),this._scrollBar.reset(),Ce.trigger(this._element,hb)})}_isAnimated(){return this._element.classList.contains(GI)}_triggerBackdropTransition(){if(Ce.trigger(this._element,WI).defaultPrevented)return;const r=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;n==="hidden"||this._element.classList.contains(Yu)||(r||(this._element.style.overflowY="hidden"),this._element.classList.add(Yu),this._queueCallback(()=>{this._element.classList.remove(Yu),this._queueCallback(()=>{this._element.style.overflowY=n},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,r=this._scrollBar.getWidth(),n=r>0;if(n&&!t){const o=ir()?"paddingLeft":"paddingRight";this._element.style[o]=`${r}px`}if(!n&&t){const o=ir()?"paddingRight":"paddingLeft";this._element.style[o]=`${r}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,r){return this.each(function(){const n=Ro.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]>"u")throw new TypeError(`No method named "${t}"`);n[t](r)}})}}Ce.on(document,zI,ZI,function(e){const t=Pe.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),Ce.one(t,db,o=>{o.defaultPrevented||Ce.one(t,hb,()=>{Uo(this)&&this.focus()})});const r=Pe.findOne(QI);r&&Ro.getInstance(r).hide(),Ro.getOrCreateInstance(t).toggle(this)});Gl(Ro);sr(Ro);const rC="offcanvas",nC="bs.offcanvas",yn=`.${nC}`,pb=".data-api",iC=`load${yn}${pb}`,oC="Escape",Wg="show",Hg="showing",Vg="hiding",sC="offcanvas-backdrop",gb=".offcanvas.show",aC=`show${yn}`,lC=`shown${yn}`,uC=`hide${yn}`,qg=`hidePrevented${yn}`,mb=`hidden${yn}`,cC=`resize${yn}`,fC=`click${yn}${pb}`,hC=`keydown.dismiss${yn}`,dC='[data-bs-toggle="offcanvas"]',pC={backdrop:!0,keyboard:!0,scroll:!1},gC={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Wn extends br{constructor(t,r){super(t,r),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return pC}static get DefaultType(){return gC}static get NAME(){return rC}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||Ce.trigger(this._element,aC,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new uf().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Hg);const n=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(Wg),this._element.classList.remove(Hg),Ce.trigger(this._element,lC,{relatedTarget:t})};this._queueCallback(n,this._element,!0)}hide(){if(!this._isShown||Ce.trigger(this._element,uC).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Vg),this._backdrop.hide();const r=()=>{this._element.classList.remove(Wg,Vg),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new uf().reset(),Ce.trigger(this._element,mb)};this._queueCallback(r,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=()=>{if(this._config.backdrop==="static"){Ce.trigger(this._element,qg);return}this.hide()},r=!!this._config.backdrop;return new cb({className:sC,isVisible:r,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:r?t:null})}_initializeFocusTrap(){return new fb({trapElement:this._element})}_addEventListeners(){Ce.on(this._element,hC,t=>{if(t.key===oC){if(this._config.keyboard){this.hide();return}Ce.trigger(this._element,qg)}})}static jQueryInterface(t){return this.each(function(){const r=Wn.getOrCreateInstance(this,t);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}Ce.on(document,fC,dC,function(e){const t=Pe.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),jn(this))return;Ce.one(t,mb,()=>{Uo(this)&&this.focus()});const r=Pe.findOne(gb);r&&r!==t&&Wn.getInstance(r).hide(),Wn.getOrCreateInstance(t).toggle(this)});Ce.on(window,iC,()=>{for(const e of Pe.find(gb))Wn.getOrCreateInstance(e).show()});Ce.on(window,cC,()=>{for(const e of Pe.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(e).position!=="fixed"&&Wn.getOrCreateInstance(e).hide()});Gl(Wn);sr(Wn);const mC=/^aria-[\w-]*$/i,yb={"*":["class","dir","id","lang","role",mC],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},yC=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),_C=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,bC=(e,t)=>{const r=e.nodeName.toLowerCase();return t.includes(r)?yC.has(r)?!!_C.test(e.nodeValue):!0:t.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function wC(e,t,r){if(!e.length)return e;if(r&&typeof r=="function")return r(e);const o=new window.DOMParser().parseFromString(e,"text/html"),i=[].concat(...o.body.querySelectorAll("*"));for(const s of i){const a=s.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){s.remove();continue}const l=[].concat(...s.attributes),u=[].concat(t["*"]||[],t[a]||[]);for(const c of l)bC(c,u)||s.removeAttribute(c.nodeName)}return o.body.innerHTML}const vC="TemplateFactory",EC={allowList:yb,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},SC={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},AC={entry:"(string|element|function|null)",selector:"(string|element)"};class TC extends js{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return EC}static get DefaultType(){return SC}static get NAME(){return vC}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[o,i]of Object.entries(this._config.content))this._setContent(t,i,o);const r=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[r,n]of Object.entries(t))super._typeCheckConfig({selector:r,entry:n},AC)}_setContent(t,r,n){const o=Pe.findOne(n,t);if(o){if(r=this._resolvePossibleFunction(r),!r){o.remove();return}if(on(r)){this._putElementInTemplate(Fn(r),o);return}if(this._config.html){o.innerHTML=this._maybeSanitize(r);return}o.textContent=r}}_maybeSanitize(t){return this._config.sanitize?wC(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Ut(t,[this])}_putElementInTemplate(t,r){if(this._config.html){r.innerHTML="",r.append(t);return}r.textContent=t.textContent}}const xC="tooltip",IC=new Set(["sanitize","allowList","sanitizeFn"]),zu="fade",CC="modal",la="show",RC=".tooltip-inner",Kg=`.${CC}`,Yg="hide.bs.modal",Jo="hover",Gu="focus",OC="click",kC="manual",NC="hide",MC="hidden",PC="show",LC="shown",BC="inserted",DC="click",$C="focusin",UC="focusout",FC="mouseenter",jC="mouseleave",WC={AUTO:"auto",TOP:"top",RIGHT:ir()?"left":"right",BOTTOM:"bottom",LEFT:ir()?"right":"left"},HC={allowList:yb,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},VC={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class jo extends br{constructor(t,r){if(typeof V_>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return HC}static get DefaultType(){return VC}static get NAME(){return xC}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),Ce.off(this._element.closest(Kg),Yg,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const t=Ce.trigger(this._element,this.constructor.eventName(PC)),n=(Y_(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();const o=this._getTipElement();this._element.setAttribute("aria-describedby",o.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(o),Ce.trigger(this._element,this.constructor.eventName(BC))),this._popper=this._createPopper(o),o.classList.add(la),"ontouchstart"in document.documentElement)for(const a of[].concat(...document.body.children))Ce.on(a,"mouseover",al);const s=()=>{Ce.trigger(this._element,this.constructor.eventName(LC)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(s,this.tip,this._isAnimated())}hide(){if(!this._isShown()||Ce.trigger(this._element,this.constructor.eventName(NC)).defaultPrevented)return;if(this._getTipElement().classList.remove(la),"ontouchstart"in document.documentElement)for(const o of[].concat(...document.body.children))Ce.off(o,"mouseover",al);this._activeTrigger[OC]=!1,this._activeTrigger[Gu]=!1,this._activeTrigger[Jo]=!1,this._isHovered=null;const n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),Ce.trigger(this._element,this.constructor.eventName(MC)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const r=this._getTemplateFactory(t).toHtml();if(!r)return null;r.classList.remove(zu,la),r.classList.add(`bs-${this.constructor.NAME}-auto`);const n=RT(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(zu),r}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new TC({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[RC]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(zu)}_isShown(){return this.tip&&this.tip.classList.contains(la)}_createPopper(t){const r=Ut(this._config.placement,[this,t,this._element]),n=WC[r.toUpperCase()];return Fd(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_resolvePossibleFunction(t){return Ut(t,[this._element])}_getPopperConfig(t){const r={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return{...r,...Ut(this._config.popperConfig,[r])}}_setListeners(){const t=this._config.trigger.split(" ");for(const r of t)if(r==="click")Ce.on(this._element,this.constructor.eventName(DC),this._config.selector,n=>{this._initializeOnDelegatedTarget(n).toggle()});else if(r!==kC){const n=r===Jo?this.constructor.eventName(FC):this.constructor.eventName($C),o=r===Jo?this.constructor.eventName(jC):this.constructor.eventName(UC);Ce.on(this._element,n,this._config.selector,i=>{const s=this._initializeOnDelegatedTarget(i);s._activeTrigger[i.type==="focusin"?Gu:Jo]=!0,s._enter()}),Ce.on(this._element,o,this._config.selector,i=>{const s=this._initializeOnDelegatedTarget(i);s._activeTrigger[i.type==="focusout"?Gu:Jo]=s._element.contains(i.relatedTarget),s._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},Ce.on(this._element.closest(Kg),Yg,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,r){clearTimeout(this._timeout),this._timeout=setTimeout(t,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const r=sn.getDataAttributes(this._element);for(const n of Object.keys(r))IC.has(n)&&delete r[n];return t={...r,...typeof t=="object"&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:Fn(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(t[r]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){const r=jo.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}}sr(jo);const qC="popover",KC=".popover-header",YC=".popover-body",zC={...jo.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},GC={...jo.DefaultType,content:"(null|string|element|function)"};class Vd extends jo{static get Default(){return zC}static get DefaultType(){return GC}static get NAME(){return qC}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[KC]:this._getTitle(),[YC]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){const r=Vd.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}}sr(Vd);const QC="scrollspy",XC="bs.scrollspy",qd=`.${XC}`,JC=".data-api",ZC=`activate${qd}`,zg=`click${qd}`,eR=`load${qd}${JC}`,tR="dropdown-item",Qi="active",rR='[data-bs-spy="scroll"]',Qu="[href]",nR=".nav, .list-group",Gg=".nav-link",iR=".nav-item",oR=".list-group-item",sR=`${Gg}, ${iR} > ${Gg}, ${oR}`,aR=".dropdown",lR=".dropdown-toggle",uR={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},cR={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Jl extends br{constructor(t,r){super(t,r),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return uR}static get DefaultType(){return cR}static get NAME(){return QC}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Fn(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,typeof t.threshold=="string"&&(t.threshold=t.threshold.split(",").map(r=>Number.parseFloat(r))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(Ce.off(this._config.target,zg),Ce.on(this._config.target,zg,Qu,t=>{const r=this._observableSections.get(t.target.hash);if(r){t.preventDefault();const n=this._rootElement||window,o=r.offsetTop-this._element.offsetTop;if(n.scrollTo){n.scrollTo({top:o,behavior:"smooth"});return}n.scrollTop=o}}))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(r=>this._observerCallback(r),t)}_observerCallback(t){const r=s=>this._targetLinks.get(`#${s.target.id}`),n=s=>{this._previousScrollData.visibleEntryTop=s.target.offsetTop,this._process(r(s))},o=(this._rootElement||document.documentElement).scrollTop,i=o>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=o;for(const s of t){if(!s.isIntersecting){this._activeTarget=null,this._clearActiveClass(r(s));continue}const a=s.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(i&&a){if(n(s),!o)return;continue}!i&&!a&&n(s)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Pe.find(Qu,this._config.target);for(const r of t){if(!r.hash||jn(r))continue;const n=Pe.findOne(decodeURI(r.hash),this._element);Uo(n)&&(this._targetLinks.set(decodeURI(r.hash),r),this._observableSections.set(r.hash,n))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(Qi),this._activateParents(t),Ce.trigger(this._element,ZC,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(tR)){Pe.findOne(lR,t.closest(aR)).classList.add(Qi);return}for(const r of Pe.parents(t,nR))for(const n of Pe.prev(r,sR))n.classList.add(Qi)}_clearActiveClass(t){t.classList.remove(Qi);const r=Pe.find(`${Qu}.${Qi}`,t);for(const n of r)n.classList.remove(Qi)}static jQueryInterface(t){return this.each(function(){const r=Jl.getOrCreateInstance(this,t);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Ce.on(window,eR,()=>{for(const e of Pe.find(rR))Jl.getOrCreateInstance(e)});sr(Jl);const fR="tab",hR="bs.tab",Di=`.${hR}`,dR=`hide${Di}`,pR=`hidden${Di}`,gR=`show${Di}`,mR=`shown${Di}`,yR=`click${Di}`,_R=`keydown${Di}`,bR=`load${Di}`,wR="ArrowLeft",Qg="ArrowRight",vR="ArrowUp",Xg="ArrowDown",Xu="Home",Jg="End",di="active",Zg="fade",Ju="show",ER="dropdown",_b=".dropdown-toggle",SR=".dropdown-menu",Zu=`:not(${_b})`,AR='.list-group, .nav, [role="tablist"]',TR=".nav-item, .list-group-item",xR=`.nav-link${Zu}, .list-group-item${Zu}, [role="tab"]${Zu}`,bb='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',ec=`${xR}, ${bb}`,IR=`.${di}[data-bs-toggle="tab"], .${di}[data-bs-toggle="pill"], .${di}[data-bs-toggle="list"]`;class Oo extends br{constructor(t){super(t),this._parent=this._element.closest(AR),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),Ce.on(this._element,_R,r=>this._keydown(r)))}static get NAME(){return fR}show(){const t=this._element;if(this._elemIsActive(t))return;const r=this._getActiveElem(),n=r?Ce.trigger(r,dR,{relatedTarget:t}):null;Ce.trigger(t,gR,{relatedTarget:r}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(r,t),this._activate(t,r))}_activate(t,r){if(!t)return;t.classList.add(di),this._activate(Pe.getElementFromSelector(t));const n=()=>{if(t.getAttribute("role")!=="tab"){t.classList.add(Ju);return}t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),Ce.trigger(t,mR,{relatedTarget:r})};this._queueCallback(n,t,t.classList.contains(Zg))}_deactivate(t,r){if(!t)return;t.classList.remove(di),t.blur(),this._deactivate(Pe.getElementFromSelector(t));const n=()=>{if(t.getAttribute("role")!=="tab"){t.classList.remove(Ju);return}t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),Ce.trigger(t,pR,{relatedTarget:r})};this._queueCallback(n,t,t.classList.contains(Zg))}_keydown(t){if(![wR,Qg,vR,Xg,Xu,Jg].includes(t.key))return;t.stopPropagation(),t.preventDefault();const r=this._getChildren().filter(o=>!jn(o));let n;if([Xu,Jg].includes(t.key))n=r[t.key===Xu?0:r.length-1];else{const o=[Qg,Xg].includes(t.key);n=jd(r,t.target,o,!0)}n&&(n.focus({preventScroll:!0}),Oo.getOrCreateInstance(n).show())}_getChildren(){return Pe.find(ec,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,r){this._setAttributeIfNotExists(t,"role","tablist");for(const n of r)this._setInitialAttributesOnChild(n)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const r=this._elemIsActive(t),n=this._getOuterElement(t);t.setAttribute("aria-selected",r),n!==t&&this._setAttributeIfNotExists(n,"role","presentation"),r||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const r=Pe.getElementFromSelector(t);r&&(this._setAttributeIfNotExists(r,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(r,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,r){const n=this._getOuterElement(t);if(!n.classList.contains(ER))return;const o=(i,s)=>{const a=Pe.findOne(i,n);a&&a.classList.toggle(s,r)};o(_b,di),o(SR,Ju),n.setAttribute("aria-expanded",r)}_setAttributeIfNotExists(t,r,n){t.hasAttribute(r)||t.setAttribute(r,n)}_elemIsActive(t){return t.classList.contains(di)}_getInnerElement(t){return t.matches(ec)?t:Pe.findOne(ec,t)}_getOuterElement(t){return t.closest(TR)||t}static jQueryInterface(t){return this.each(function(){const r=Oo.getOrCreateInstance(this);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Ce.on(document,yR,bb,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),!jn(this)&&Oo.getOrCreateInstance(this).show()});Ce.on(window,bR,()=>{for(const e of Pe.find(IR))Oo.getOrCreateInstance(e)});sr(Oo);const CR="toast",RR="bs.toast",qn=`.${RR}`,OR=`mouseover${qn}`,kR=`mouseout${qn}`,NR=`focusin${qn}`,MR=`focusout${qn}`,PR=`hide${qn}`,LR=`hidden${qn}`,BR=`show${qn}`,DR=`shown${qn}`,$R="fade",em="hide",ua="show",ca="showing",UR={animation:"boolean",autohide:"boolean",delay:"number"},FR={animation:!0,autohide:!0,delay:5e3};class Zl extends br{constructor(t,r){super(t,r),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return FR}static get DefaultType(){return UR}static get NAME(){return CR}show(){if(Ce.trigger(this._element,BR).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add($R);const r=()=>{this._element.classList.remove(ca),Ce.trigger(this._element,DR),this._maybeScheduleHide()};this._element.classList.remove(em),Fs(this._element),this._element.classList.add(ua,ca),this._queueCallback(r,this._element,this._config.animation)}hide(){if(!this.isShown()||Ce.trigger(this._element,PR).defaultPrevented)return;const r=()=>{this._element.classList.add(em),this._element.classList.remove(ca,ua),Ce.trigger(this._element,LR)};this._element.classList.add(ca),this._queueCallback(r,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(ua),super.dispose()}isShown(){return this._element.classList.contains(ua)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,r){switch(t.type){case"mouseover":case"mouseout":{this._hasMouseInteraction=r;break}case"focusin":case"focusout":{this._hasKeyboardInteraction=r;break}}if(r){this._clearTimeout();return}const n=t.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){Ce.on(this._element,OR,t=>this._onInteraction(t,!0)),Ce.on(this._element,kR,t=>this._onInteraction(t,!1)),Ce.on(this._element,NR,t=>this._onInteraction(t,!0)),Ce.on(this._element,MR,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const r=Zl.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}Gl(Zl);sr(Zl);var Kd=Object.defineProperty,jR=Object.getOwnPropertyDescriptor,WR=Object.getOwnPropertyNames,HR=Object.prototype.hasOwnProperty,vt=(e,t)=>()=>(e&&(t=e(e=0)),t),Oe=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),$i=(e,t)=>{for(var r in t)Kd(e,r,{get:t[r],enumerable:!0})},VR=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of WR(t))!HR.call(e,o)&&o!==r&&Kd(e,o,{get:()=>t[o],enumerable:!(n=jR(t,o))||n.enumerable});return e},ze=e=>VR(Kd({},"__esModule",{value:!0}),e),we=vt(()=>{}),Ve={};$i(Ve,{_debugEnd:()=>Wf,_debugProcess:()=>jf,_events:()=>nh,_eventsCount:()=>ih,_exiting:()=>If,_fatalExceptions:()=>$f,_getActiveHandles:()=>xb,_getActiveRequests:()=>Tb,_kill:()=>Of,_linkedBinding:()=>Sb,_maxListeners:()=>rh,_preload_modules:()=>eh,_rawDebug:()=>Af,_startProfilerIdleNotifier:()=>Hf,_stopProfilerIdleNotifier:()=>Vf,_tickCallback:()=>Ff,abort:()=>zf,addListener:()=>oh,allowedNodeEnvironmentFlags:()=>Bf,arch:()=>ff,argv:()=>pf,argv0:()=>Zf,assert:()=>Ib,binding:()=>bf,chdir:()=>Ef,config:()=>Cf,cpuUsage:()=>us,cwd:()=>vf,debugPort:()=>Jf,default:()=>zd,dlopen:()=>Ab,domain:()=>xf,emit:()=>ch,emitWarning:()=>_f,env:()=>df,execArgv:()=>gf,execPath:()=>Xf,exit:()=>Pf,features:()=>Df,hasUncaughtExceptionCaptureCallback:()=>Cb,hrtime:()=>Pa,kill:()=>Mf,listeners:()=>Ob,memoryUsage:()=>Nf,moduleLoadList:()=>Tf,nextTick:()=>vb,off:()=>ah,on:()=>Kr,once:()=>sh,openStdin:()=>Lf,pid:()=>Gf,platform:()=>hf,ppid:()=>Qf,prependListener:()=>fh,prependOnceListener:()=>hh,reallyExit:()=>Rf,release:()=>Sf,removeAllListeners:()=>uh,removeListener:()=>lh,resourceUsage:()=>kf,setSourceMapsEnabled:()=>th,setUncaughtExceptionCaptureCallback:()=>Uf,stderr:()=>Kf,stdin:()=>Yf,stdout:()=>qf,title:()=>cf,umask:()=>wf,uptime:()=>Rb,version:()=>mf,versions:()=>yf});function Yd(e){throw new Error("Node.js process "+e+" is not supported by JSPM core outside of Node.js")}function qR(){!Ei||!pi||(Ei=!1,pi.length?kr=pi.concat(kr):As=-1,kr.length&&wb())}function wb(){if(!Ei){var e=setTimeout(qR,0);Ei=!0;for(var t=kr.length;t;){for(pi=kr,kr=[];++As<t;)pi&&pi[As].run();As=-1,t=kr.length}pi=null,Ei=!1,clearTimeout(e)}}function vb(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];kr.push(new Eb(e,t)),kr.length===1&&!Ei&&setTimeout(wb,0)}function Eb(e,t){this.fun=e,this.array=t}function xt(){}function Sb(e){Yd("_linkedBinding")}function Ab(e){Yd("dlopen")}function Tb(){return[]}function xb(){return[]}function Ib(e,t){if(!e)throw new Error(t||"assertion error")}function Cb(){return!1}function Rb(){return Qr.now()/1e3}function Pa(e){var t=Math.floor((Date.now()-Qr.now())*.001),r=Qr.now()*.001,n=Math.floor(r)+t,o=Math.floor(r%1*1e9);return e&&(n=n-e[0],o=o-e[1],o<0&&(n--,o+=La)),[n,o]}function Kr(){return zd}function Ob(e){return[]}var kr,Ei,pi,As,cf,ff,hf,df,pf,gf,mf,yf,_f,bf,wf,vf,Ef,Sf,Af,Tf,xf,If,Cf,Rf,Of,us,kf,Nf,Mf,Pf,Lf,Bf,Df,$f,Uf,Ff,jf,Wf,Hf,Vf,qf,Kf,Yf,zf,Gf,Qf,Xf,Jf,Zf,eh,th,Qr,tc,La,rh,nh,ih,oh,sh,ah,lh,uh,ch,fh,hh,zd,KR=vt(()=>{we(),Ee(),ve(),kr=[],Ei=!1,As=-1,Eb.prototype.run=function(){this.fun.apply(null,this.array)},cf="browser",ff="x64",hf="browser",df={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},pf=["/usr/bin/node"],gf=[],mf="v16.8.0",yf={},_f=function(e,t){console.warn((t?t+": ":"")+e)},bf=function(e){Yd("binding")},wf=function(e){return 0},vf=function(){return"/"},Ef=function(e){},Sf={name:"node",sourceUrl:"",headersUrl:"",libUrl:""},Af=xt,Tf=[],xf={},If=!1,Cf={},Rf=xt,Of=xt,us=function(){return{}},kf=us,Nf=us,Mf=xt,Pf=xt,Lf=xt,Bf={},Df={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},$f=xt,Uf=xt,Ff=xt,jf=xt,Wf=xt,Hf=xt,Vf=xt,qf=void 0,Kf=void 0,Yf=void 0,zf=xt,Gf=2,Qf=1,Xf="/bin/usr/node",Jf=9229,Zf="node",eh=[],th=xt,Qr={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0},Qr.now===void 0&&(tc=Date.now(),Qr.timing&&Qr.timing.navigationStart&&(tc=Qr.timing.navigationStart),Qr.now=()=>Date.now()-tc),La=1e9,Pa.bigint=function(e){var t=Pa(e);return typeof BigInt>"u"?t[0]*La+t[1]:BigInt(t[0]*La)+BigInt(t[1])},rh=10,nh={},ih=0,oh=Kr,sh=Kr,ah=Kr,lh=Kr,uh=Kr,ch=xt,fh=Kr,hh=Kr,zd={version:mf,versions:yf,arch:ff,platform:hf,release:Sf,_rawDebug:Af,moduleLoadList:Tf,binding:bf,_linkedBinding:Sb,_events:nh,_eventsCount:ih,_maxListeners:rh,on:Kr,addListener:oh,once:sh,off:ah,removeListener:lh,removeAllListeners:uh,emit:ch,prependListener:fh,prependOnceListener:hh,listeners:Ob,domain:xf,_exiting:If,config:Cf,dlopen:Ab,uptime:Rb,_getActiveRequests:Tb,_getActiveHandles:xb,reallyExit:Rf,_kill:Of,cpuUsage:us,resourceUsage:kf,memoryUsage:Nf,kill:Mf,exit:Pf,openStdin:Lf,allowedNodeEnvironmentFlags:Bf,assert:Ib,features:Df,_fatalExceptions:$f,setUncaughtExceptionCaptureCallback:Uf,hasUncaughtExceptionCaptureCallback:Cb,emitWarning:_f,nextTick:vb,_tickCallback:Ff,_debugProcess:jf,_debugEnd:Wf,_startProfilerIdleNotifier:Hf,_stopProfilerIdleNotifier:Vf,stdout:qf,stdin:Yf,stderr:Kf,abort:zf,umask:wf,chdir:Ef,cwd:vf,env:df,title:cf,argv:pf,execArgv:gf,pid:Gf,ppid:Qf,execPath:Xf,debugPort:Jf,hrtime:Pa,argv0:Zf,_preload_modules:eh,setSourceMapsEnabled:th}}),ve=vt(()=>{KR()}),Et={};$i(Et,{Buffer:()=>cl,INSPECT_MAX_BYTES:()=>kb,default:()=>Yr,kMaxLength:()=>Nb});function YR(){if(dh)return no;dh=!0,no.byteLength=a,no.toByteArray=u,no.fromByteArray=p;for(var e=[],t=[],r=typeof Uint8Array<"u"?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,i=n.length;o<i;++o)e[o]=n[o],t[n.charCodeAt(o)]=o;t[45]=62,t[95]=63;function s(g){var _=g.length;if(_%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var b=g.indexOf("=");b===-1&&(b=_);var x=b===_?0:4-b%4;return[b,x]}function a(g){var _=s(g),b=_[0],x=_[1];return(b+x)*3/4-x}function l(g,_,b){return(_+b)*3/4-b}function u(g){var _,b=s(g),x=b[0],k=b[1],R=new r(l(g,x,k)),A=0,B=k>0?x-4:x,$;for($=0;$<B;$+=4)_=t[g.charCodeAt($)]<<18|t[g.charCodeAt($+1)]<<12|t[g.charCodeAt($+2)]<<6|t[g.charCodeAt($+3)],R[A++]=_>>16&255,R[A++]=_>>8&255,R[A++]=_&255;return k===2&&(_=t[g.charCodeAt($)]<<2|t[g.charCodeAt($+1)]>>4,R[A++]=_&255),k===1&&(_=t[g.charCodeAt($)]<<10|t[g.charCodeAt($+1)]<<4|t[g.charCodeAt($+2)]>>2,R[A++]=_>>8&255,R[A++]=_&255),R}function c(g){return e[g>>18&63]+e[g>>12&63]+e[g>>6&63]+e[g&63]}function d(g,_,b){for(var x,k=[],R=_;R<b;R+=3)x=(g[R]<<16&16711680)+(g[R+1]<<8&65280)+(g[R+2]&255),k.push(c(x));return k.join("")}function p(g){for(var _,b=g.length,x=b%3,k=[],R=16383,A=0,B=b-x;A<B;A+=R)k.push(d(g,A,A+R>B?B:A+R));return x===1?(_=g[b-1],k.push(e[_>>2]+e[_<<4&63]+"==")):x===2&&(_=(g[b-2]<<8)+g[b-1],k.push(e[_>>10]+e[_>>4&63]+e[_<<2&63]+"=")),k.join("")}return no}function zR(){return ph?cs:(ph=!0,cs.read=function(e,t,r,n,o){var i,s,a=o*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,g=e[t+d];for(d+=p,i=g&(1<<-c)-1,g>>=-c,c+=a;c>0;i=i*256+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=s*256+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:(g?-1:1)*(1/0);s=s+Math.pow(2,n),i=i-u}return(g?-1:1)*s*Math.pow(2,i-n)},cs.write=function(e,t,r,n,o,i){var s,a,l,u=i*8-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+d>=1?t+=p/l:t+=p*Math.pow(2,1-d),t*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s=s+d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+g]=a&255,g+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+g]=s&255,g+=_,s/=256,u-=8);e[r+g-_]|=b*128},cs)}function GR(){if(gh)return Tn;gh=!0;let e=YR(),t=zR(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Tn.Buffer=s,Tn.SlowBuffer=k,Tn.INSPECT_MAX_BYTES=50;let n=2147483647;Tn.kMaxLength=n,s.TYPED_ARRAY_SUPPORT=o(),!s.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{let y=new Uint8Array(1),h={foo:function(){return 42}};return Object.setPrototypeOf(h,Uint8Array.prototype),Object.setPrototypeOf(y,h),y.foo()===42}catch{return!1}}Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}});function i(y){if(y>n)throw new RangeError('The value "'+y+'" is invalid for option "size"');let h=new Uint8Array(y);return Object.setPrototypeOf(h,s.prototype),h}function s(y,h,f){if(typeof y=="number"){if(typeof h=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(y)}return a(y,h,f)}s.poolSize=8192;function a(y,h,f){if(typeof y=="string")return d(y,h);if(ArrayBuffer.isView(y))return g(y);if(y==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof y);if(K(y,ArrayBuffer)||y&&K(y.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(K(y,SharedArrayBuffer)||y&&K(y.buffer,SharedArrayBuffer)))return _(y,h,f);if(typeof y=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let m=y.valueOf&&y.valueOf();if(m!=null&&m!==y)return s.from(m,h,f);let w=b(y);if(w)return w;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof y[Symbol.toPrimitive]=="function")return s.from(y[Symbol.toPrimitive]("string"),h,f);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof y)}s.from=function(y,h,f){return a(y,h,f)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array);function l(y){if(typeof y!="number")throw new TypeError('"size" argument must be of type number');if(y<0)throw new RangeError('The value "'+y+'" is invalid for option "size"')}function u(y,h,f){return l(y),y<=0?i(y):h!==void 0?typeof f=="string"?i(y).fill(h,f):i(y).fill(h):i(y)}s.alloc=function(y,h,f){return u(y,h,f)};function c(y){return l(y),i(y<0?0:x(y)|0)}s.allocUnsafe=function(y){return c(y)},s.allocUnsafeSlow=function(y){return c(y)};function d(y,h){if((typeof h!="string"||h==="")&&(h="utf8"),!s.isEncoding(h))throw new TypeError("Unknown encoding: "+h);let f=R(y,h)|0,m=i(f),w=m.write(y,h);return w!==f&&(m=m.slice(0,w)),m}function p(y){let h=y.length<0?0:x(y.length)|0,f=i(h);for(let m=0;m<h;m+=1)f[m]=y[m]&255;return f}function g(y){if(K(y,Uint8Array)){let h=new Uint8Array(y);return _(h.buffer,h.byteOffset,h.byteLength)}return p(y)}function _(y,h,f){if(h<0||y.byteLength<h)throw new RangeError('"offset" is outside of buffer bounds');if(y.byteLength<h+(f||0))throw new RangeError('"length" is outside of buffer bounds');let m;return h===void 0&&f===void 0?m=new Uint8Array(y):f===void 0?m=new Uint8Array(y,h):m=new Uint8Array(y,h,f),Object.setPrototypeOf(m,s.prototype),m}function b(y){if(s.isBuffer(y)){let h=x(y.length)|0,f=i(h);return f.length===0||y.copy(f,0,0,h),f}if(y.length!==void 0)return typeof y.length!="number"||z(y.length)?i(0):p(y);if(y.type==="Buffer"&&Array.isArray(y.data))return p(y.data)}function x(y){if(y>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return y|0}function k(y){return+y!=y&&(y=0),s.alloc(+y)}s.isBuffer=function(y){return y!=null&&y._isBuffer===!0&&y!==s.prototype},s.compare=function(y,h){if(K(y,Uint8Array)&&(y=s.from(y,y.offset,y.byteLength)),K(h,Uint8Array)&&(h=s.from(h,h.offset,h.byteLength)),!s.isBuffer(y)||!s.isBuffer(h))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(y===h)return 0;let f=y.length,m=h.length;for(let w=0,v=Math.min(f,m);w<v;++w)if(y[w]!==h[w]){f=y[w],m=h[w];break}return f<m?-1:m<f?1:0},s.isEncoding=function(y){switch(String(y).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(y,h){if(!Array.isArray(y))throw new TypeError('"list" argument must be an Array of Buffers');if(y.length===0)return s.alloc(0);let f;if(h===void 0)for(h=0,f=0;f<y.length;++f)h+=y[f].length;let m=s.allocUnsafe(h),w=0;for(f=0;f<y.length;++f){let v=y[f];if(K(v,Uint8Array))w+v.length>m.length?(s.isBuffer(v)||(v=s.from(v)),v.copy(m,w)):Uint8Array.prototype.set.call(m,v,w);else if(s.isBuffer(v))v.copy(m,w);else throw new TypeError('"list" argument must be an Array of Buffers');w+=v.length}return m};function R(y,h){if(s.isBuffer(y))return y.length;if(ArrayBuffer.isView(y)||K(y,ArrayBuffer))return y.byteLength;if(typeof y!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof y);let f=y.length,m=arguments.length>2&&arguments[2]===!0;if(!m&&f===0)return 0;let w=!1;for(;;)switch(h){case"ascii":case"latin1":case"binary":return f;case"utf8":case"utf-8":return O(y).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return f*2;case"hex":return f>>>1;case"base64":return J(y).length;default:if(w)return m?-1:O(y).length;h=(""+h).toLowerCase(),w=!0}}s.byteLength=R;function A(y,h,f){let m=!1;if((h===void 0||h<0)&&(h=0),h>this.length||((f===void 0||f>this.length)&&(f=this.length),f<=0)||(f>>>=0,h>>>=0,f<=h))return"";for(y||(y="utf8");;)switch(y){case"hex":return Q(this,h,f);case"utf8":case"utf-8":return L(this,h,f);case"ascii":return ae(this,h,f);case"latin1":case"binary":return se(this,h,f);case"base64":return M(this,h,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return he(this,h,f);default:if(m)throw new TypeError("Unknown encoding: "+y);y=(y+"").toLowerCase(),m=!0}}s.prototype._isBuffer=!0;function B(y,h,f){let m=y[h];y[h]=y[f],y[f]=m}s.prototype.swap16=function(){let y=this.length;if(y%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let h=0;h<y;h+=2)B(this,h,h+1);return this},s.prototype.swap32=function(){let y=this.length;if(y%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let h=0;h<y;h+=4)B(this,h,h+3),B(this,h+1,h+2);return this},s.prototype.swap64=function(){let y=this.length;if(y%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let h=0;h<y;h+=8)B(this,h,h+7),B(this,h+1,h+6),B(this,h+2,h+5),B(this,h+3,h+4);return this},s.prototype.toString=function(){let y=this.length;return y===0?"":arguments.length===0?L(this,0,y):A.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(y){if(!s.isBuffer(y))throw new TypeError("Argument must be a Buffer");return this===y?!0:s.compare(this,y)===0},s.prototype.inspect=function(){let y="",h=Tn.INSPECT_MAX_BYTES;return y=this.toString("hex",0,h).replace(/(.{2})/g,"$1 ").trim(),this.length>h&&(y+=" ... "),"<Buffer "+y+">"},r&&(s.prototype[r]=s.prototype.inspect),s.prototype.compare=function(y,h,f,m,w){if(K(y,Uint8Array)&&(y=s.from(y,y.offset,y.byteLength)),!s.isBuffer(y))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof y);if(h===void 0&&(h=0),f===void 0&&(f=y?y.length:0),m===void 0&&(m=0),w===void 0&&(w=this.length),h<0||f>y.length||m<0||w>this.length)throw new RangeError("out of range index");if(m>=w&&h>=f)return 0;if(m>=w)return-1;if(h>=f)return 1;if(h>>>=0,f>>>=0,m>>>=0,w>>>=0,this===y)return 0;let v=w-m,C=f-h,H=Math.min(v,C),de=this.slice(m,w),me=y.slice(h,f);for(let _e=0;_e<H;++_e)if(de[_e]!==me[_e]){v=de[_e],C=me[_e];break}return v<C?-1:C<v?1:0};function $(y,h,f,m,w){if(y.length===0)return-1;if(typeof f=="string"?(m=f,f=0):f>2147483647?f=2147483647:f<-2147483648&&(f=-2147483648),f=+f,z(f)&&(f=w?0:y.length-1),f<0&&(f=y.length+f),f>=y.length){if(w)return-1;f=y.length-1}else if(f<0)if(w)f=0;else return-1;if(typeof h=="string"&&(h=s.from(h,m)),s.isBuffer(h))return h.length===0?-1:I(y,h,f,m,w);if(typeof h=="number")return h=h&255,typeof Uint8Array.prototype.indexOf=="function"?w?Uint8Array.prototype.indexOf.call(y,h,f):Uint8Array.prototype.lastIndexOf.call(y,h,f):I(y,[h],f,m,w);throw new TypeError("val must be string, number or Buffer")}function I(y,h,f,m,w){let v=1,C=y.length,H=h.length;if(m!==void 0&&(m=String(m).toLowerCase(),m==="ucs2"||m==="ucs-2"||m==="utf16le"||m==="utf-16le")){if(y.length<2||h.length<2)return-1;v=2,C/=2,H/=2,f/=2}function de(_e,Ae){return v===1?_e[Ae]:_e.readUInt16BE(Ae*v)}let me;if(w){let _e=-1;for(me=f;me<C;me++)if(de(y,me)===de(h,_e===-1?0:me-_e)){if(_e===-1&&(_e=me),me-_e+1===H)return _e*v}else _e!==-1&&(me-=me-_e),_e=-1}else for(f+H>C&&(f=C-H),me=f;me>=0;me--){let _e=!0;for(let Ae=0;Ae<H;Ae++)if(de(y,me+Ae)!==de(h,Ae)){_e=!1;break}if(_e)return me}return-1}s.prototype.includes=function(y,h,f){return this.indexOf(y,h,f)!==-1},s.prototype.indexOf=function(y,h,f){return $(this,y,h,f,!0)},s.prototype.lastIndexOf=function(y,h,f){return $(this,y,h,f,!1)};function P(y,h,f,m){f=Number(f)||0;let w=y.length-f;m?(m=Number(m),m>w&&(m=w)):m=w;let v=h.length;m>v/2&&(m=v/2);let C;for(C=0;C<m;++C){let H=parseInt(h.substr(C*2,2),16);if(z(H))return C;y[f+C]=H}return C}function W(y,h,f,m){return D(O(h,y.length-f),y,f,m)}function Y(y,h,f,m){return D(N(h),y,f,m)}function oe(y,h,f,m){return D(J(h),y,f,m)}function te(y,h,f,m){return D(ee(h,y.length-f),y,f,m)}s.prototype.write=function(y,h,f,m){if(h===void 0)m="utf8",f=this.length,h=0;else if(f===void 0&&typeof h=="string")m=h,f=this.length,h=0;else if(isFinite(h))h=h>>>0,isFinite(f)?(f=f>>>0,m===void 0&&(m="utf8")):(m=f,f=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let w=this.length-h;if((f===void 0||f>w)&&(f=w),y.length>0&&(f<0||h<0)||h>this.length)throw new RangeError("Attempt to write outside buffer bounds");m||(m="utf8");let v=!1;for(;;)switch(m){case"hex":return P(this,y,h,f);case"utf8":case"utf-8":return W(this,y,h,f);case"ascii":case"latin1":case"binary":return Y(this,y,h,f);case"base64":return oe(this,y,h,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return te(this,y,h,f);default:if(v)throw new TypeError("Unknown encoding: "+m);m=(""+m).toLowerCase(),v=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function M(y,h,f){return h===0&&f===y.length?e.fromByteArray(y):e.fromByteArray(y.slice(h,f))}function L(y,h,f){f=Math.min(y.length,f);let m=[],w=h;for(;w<f;){let v=y[w],C=null,H=v>239?4:v>223?3:v>191?2:1;if(w+H<=f){let de,me,_e,Ae;switch(H){case 1:v<128&&(C=v);break;case 2:de=y[w+1],(de&192)===128&&(Ae=(v&31)<<6|de&63,Ae>127&&(C=Ae));break;case 3:de=y[w+1],me=y[w+2],(de&192)===128&&(me&192)===128&&(Ae=(v&15)<<12|(de&63)<<6|me&63,Ae>2047&&(Ae<55296||Ae>57343)&&(C=Ae));break;case 4:de=y[w+1],me=y[w+2],_e=y[w+3],(de&192)===128&&(me&192)===128&&(_e&192)===128&&(Ae=(v&15)<<18|(de&63)<<12|(me&63)<<6|_e&63,Ae>65535&&Ae<1114112&&(C=Ae))}}C===null?(C=65533,H=1):C>65535&&(C-=65536,m.push(C>>>10&1023|55296),C=56320|C&1023),m.push(C),w+=H}return re(m)}let ie=4096;function re(y){let h=y.length;if(h<=ie)return String.fromCharCode.apply(String,y);let f="",m=0;for(;m<h;)f+=String.fromCharCode.apply(String,y.slice(m,m+=ie));return f}function ae(y,h,f){let m="";f=Math.min(y.length,f);for(let w=h;w<f;++w)m+=String.fromCharCode(y[w]&127);return m}function se(y,h,f){let m="";f=Math.min(y.length,f);for(let w=h;w<f;++w)m+=String.fromCharCode(y[w]);return m}function Q(y,h,f){let m=y.length;(!h||h<0)&&(h=0),(!f||f<0||f>m)&&(f=m);let w="";for(let v=h;v<f;++v)w+=ce[y[v]];return w}function he(y,h,f){let m=y.slice(h,f),w="";for(let v=0;v<m.length-1;v+=2)w+=String.fromCharCode(m[v]+m[v+1]*256);return w}s.prototype.slice=function(y,h){let f=this.length;y=~~y,h=h===void 0?f:~~h,y<0?(y+=f,y<0&&(y=0)):y>f&&(y=f),h<0?(h+=f,h<0&&(h=0)):h>f&&(h=f),h<y&&(h=y);let m=this.subarray(y,h);return Object.setPrototypeOf(m,s.prototype),m};function fe(y,h,f){if(y%1!==0||y<0)throw new RangeError("offset is not uint");if(y+h>f)throw new RangeError("Trying to access beyond buffer length")}s.prototype.readUintLE=s.prototype.readUIntLE=function(y,h,f){y=y>>>0,h=h>>>0,f||fe(y,h,this.length);let m=this[y],w=1,v=0;for(;++v<h&&(w*=256);)m+=this[y+v]*w;return m},s.prototype.readUintBE=s.prototype.readUIntBE=function(y,h,f){y=y>>>0,h=h>>>0,f||fe(y,h,this.length);let m=this[y+--h],w=1;for(;h>0&&(w*=256);)m+=this[y+--h]*w;return m},s.prototype.readUint8=s.prototype.readUInt8=function(y,h){return y=y>>>0,h||fe(y,1,this.length),this[y]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(y,h){return y=y>>>0,h||fe(y,2,this.length),this[y]|this[y+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(y,h){return y=y>>>0,h||fe(y,2,this.length),this[y]<<8|this[y+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(y,h){return y=y>>>0,h||fe(y,4,this.length),(this[y]|this[y+1]<<8|this[y+2]<<16)+this[y+3]*16777216},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(y,h){return y=y>>>0,h||fe(y,4,this.length),this[y]*16777216+(this[y+1]<<16|this[y+2]<<8|this[y+3])},s.prototype.readBigUInt64LE=be(function(y){y=y>>>0,X(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&E(y,this.length-8);let m=h+this[++y]*2**8+this[++y]*2**16+this[++y]*2**24,w=this[++y]+this[++y]*2**8+this[++y]*2**16+f*2**24;return BigInt(m)+(BigInt(w)<<BigInt(32))}),s.prototype.readBigUInt64BE=be(function(y){y=y>>>0,X(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&E(y,this.length-8);let m=h*2**24+this[++y]*2**16+this[++y]*2**8+this[++y],w=this[++y]*2**24+this[++y]*2**16+this[++y]*2**8+f;return(BigInt(m)<<BigInt(32))+BigInt(w)}),s.prototype.readIntLE=function(y,h,f){y=y>>>0,h=h>>>0,f||fe(y,h,this.length);let m=this[y],w=1,v=0;for(;++v<h&&(w*=256);)m+=this[y+v]*w;return w*=128,m>=w&&(m-=Math.pow(2,8*h)),m},s.prototype.readIntBE=function(y,h,f){y=y>>>0,h=h>>>0,f||fe(y,h,this.length);let m=h,w=1,v=this[y+--m];for(;m>0&&(w*=256);)v+=this[y+--m]*w;return w*=128,v>=w&&(v-=Math.pow(2,8*h)),v},s.prototype.readInt8=function(y,h){return y=y>>>0,h||fe(y,1,this.length),this[y]&128?(255-this[y]+1)*-1:this[y]},s.prototype.readInt16LE=function(y,h){y=y>>>0,h||fe(y,2,this.length);let f=this[y]|this[y+1]<<8;return f&32768?f|4294901760:f},s.prototype.readInt16BE=function(y,h){y=y>>>0,h||fe(y,2,this.length);let f=this[y+1]|this[y]<<8;return f&32768?f|4294901760:f},s.prototype.readInt32LE=function(y,h){return y=y>>>0,h||fe(y,4,this.length),this[y]|this[y+1]<<8|this[y+2]<<16|this[y+3]<<24},s.prototype.readInt32BE=function(y,h){return y=y>>>0,h||fe(y,4,this.length),this[y]<<24|this[y+1]<<16|this[y+2]<<8|this[y+3]},s.prototype.readBigInt64LE=be(function(y){y=y>>>0,X(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&E(y,this.length-8);let m=this[y+4]+this[y+5]*2**8+this[y+6]*2**16+(f<<24);return(BigInt(m)<<BigInt(32))+BigInt(h+this[++y]*2**8+this[++y]*2**16+this[++y]*2**24)}),s.prototype.readBigInt64BE=be(function(y){y=y>>>0,X(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&E(y,this.length-8);let m=(h<<24)+this[++y]*2**16+this[++y]*2**8+this[++y];return(BigInt(m)<<BigInt(32))+BigInt(this[++y]*2**24+this[++y]*2**16+this[++y]*2**8+f)}),s.prototype.readFloatLE=function(y,h){return y=y>>>0,h||fe(y,4,this.length),t.read(this,y,!0,23,4)},s.prototype.readFloatBE=function(y,h){return y=y>>>0,h||fe(y,4,this.length),t.read(this,y,!1,23,4)},s.prototype.readDoubleLE=function(y,h){return y=y>>>0,h||fe(y,8,this.length),t.read(this,y,!0,52,8)},s.prototype.readDoubleBE=function(y,h){return y=y>>>0,h||fe(y,8,this.length),t.read(this,y,!1,52,8)};function pe(y,h,f,m,w,v){if(!s.isBuffer(y))throw new TypeError('"buffer" argument must be a Buffer instance');if(h>w||h<v)throw new RangeError('"value" argument is out of bounds');if(f+m>y.length)throw new RangeError("Index out of range")}s.prototype.writeUintLE=s.prototype.writeUIntLE=function(y,h,f,m){if(y=+y,h=h>>>0,f=f>>>0,!m){let C=Math.pow(2,8*f)-1;pe(this,y,h,f,C,0)}let w=1,v=0;for(this[h]=y&255;++v<f&&(w*=256);)this[h+v]=y/w&255;return h+f},s.prototype.writeUintBE=s.prototype.writeUIntBE=function(y,h,f,m){if(y=+y,h=h>>>0,f=f>>>0,!m){let C=Math.pow(2,8*f)-1;pe(this,y,h,f,C,0)}let w=f-1,v=1;for(this[h+w]=y&255;--w>=0&&(v*=256);)this[h+w]=y/v&255;return h+f},s.prototype.writeUint8=s.prototype.writeUInt8=function(y,h,f){return y=+y,h=h>>>0,f||pe(this,y,h,1,255,0),this[h]=y&255,h+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(y,h,f){return y=+y,h=h>>>0,f||pe(this,y,h,2,65535,0),this[h]=y&255,this[h+1]=y>>>8,h+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(y,h,f){return y=+y,h=h>>>0,f||pe(this,y,h,2,65535,0),this[h]=y>>>8,this[h+1]=y&255,h+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(y,h,f){return y=+y,h=h>>>0,f||pe(this,y,h,4,4294967295,0),this[h+3]=y>>>24,this[h+2]=y>>>16,this[h+1]=y>>>8,this[h]=y&255,h+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(y,h,f){return y=+y,h=h>>>0,f||pe(this,y,h,4,4294967295,0),this[h]=y>>>24,this[h+1]=y>>>16,this[h+2]=y>>>8,this[h+3]=y&255,h+4};function F(y,h,f,m,w){le(h,m,w,y,f,7);let v=Number(h&BigInt(4294967295));y[f++]=v,v=v>>8,y[f++]=v,v=v>>8,y[f++]=v,v=v>>8,y[f++]=v;let C=Number(h>>BigInt(32)&BigInt(4294967295));return y[f++]=C,C=C>>8,y[f++]=C,C=C>>8,y[f++]=C,C=C>>8,y[f++]=C,f}function ne(y,h,f,m,w){le(h,m,w,y,f,7);let v=Number(h&BigInt(4294967295));y[f+7]=v,v=v>>8,y[f+6]=v,v=v>>8,y[f+5]=v,v=v>>8,y[f+4]=v;let C=Number(h>>BigInt(32)&BigInt(4294967295));return y[f+3]=C,C=C>>8,y[f+2]=C,C=C>>8,y[f+1]=C,C=C>>8,y[f]=C,f+8}s.prototype.writeBigUInt64LE=be(function(y,h=0){return F(this,y,h,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=be(function(y,h=0){return ne(this,y,h,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(y,h,f,m){if(y=+y,h=h>>>0,!m){let H=Math.pow(2,8*f-1);pe(this,y,h,f,H-1,-H)}let w=0,v=1,C=0;for(this[h]=y&255;++w<f&&(v*=256);)y<0&&C===0&&this[h+w-1]!==0&&(C=1),this[h+w]=(y/v>>0)-C&255;return h+f},s.prototype.writeIntBE=function(y,h,f,m){if(y=+y,h=h>>>0,!m){let H=Math.pow(2,8*f-1);pe(this,y,h,f,H-1,-H)}let w=f-1,v=1,C=0;for(this[h+w]=y&255;--w>=0&&(v*=256);)y<0&&C===0&&this[h+w+1]!==0&&(C=1),this[h+w]=(y/v>>0)-C&255;return h+f},s.prototype.writeInt8=function(y,h,f){return y=+y,h=h>>>0,f||pe(this,y,h,1,127,-128),y<0&&(y=255+y+1),this[h]=y&255,h+1},s.prototype.writeInt16LE=function(y,h,f){return y=+y,h=h>>>0,f||pe(this,y,h,2,32767,-32768),this[h]=y&255,this[h+1]=y>>>8,h+2},s.prototype.writeInt16BE=function(y,h,f){return y=+y,h=h>>>0,f||pe(this,y,h,2,32767,-32768),this[h]=y>>>8,this[h+1]=y&255,h+2},s.prototype.writeInt32LE=function(y,h,f){return y=+y,h=h>>>0,f||pe(this,y,h,4,2147483647,-2147483648),this[h]=y&255,this[h+1]=y>>>8,this[h+2]=y>>>16,this[h+3]=y>>>24,h+4},s.prototype.writeInt32BE=function(y,h,f){return y=+y,h=h>>>0,f||pe(this,y,h,4,2147483647,-2147483648),y<0&&(y=4294967295+y+1),this[h]=y>>>24,this[h+1]=y>>>16,this[h+2]=y>>>8,this[h+3]=y&255,h+4},s.prototype.writeBigInt64LE=be(function(y,h=0){return F(this,y,h,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=be(function(y,h=0){return ne(this,y,h,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ge(y,h,f,m,w,v){if(f+m>y.length)throw new RangeError("Index out of range");if(f<0)throw new RangeError("Index out of range")}function Se(y,h,f,m,w){return h=+h,f=f>>>0,w||ge(y,h,f,4),t.write(y,h,f,m,23,4),f+4}s.prototype.writeFloatLE=function(y,h,f){return Se(this,y,h,!0,f)},s.prototype.writeFloatBE=function(y,h,f){return Se(this,y,h,!1,f)};function ye(y,h,f,m,w){return h=+h,f=f>>>0,w||ge(y,h,f,8),t.write(y,h,f,m,52,8),f+8}s.prototype.writeDoubleLE=function(y,h,f){return ye(this,y,h,!0,f)},s.prototype.writeDoubleBE=function(y,h,f){return ye(this,y,h,!1,f)},s.prototype.copy=function(y,h,f,m){if(!s.isBuffer(y))throw new TypeError("argument should be a Buffer");if(f||(f=0),!m&&m!==0&&(m=this.length),h>=y.length&&(h=y.length),h||(h=0),m>0&&m<f&&(m=f),m===f||y.length===0||this.length===0)return 0;if(h<0)throw new RangeError("targetStart out of bounds");if(f<0||f>=this.length)throw new RangeError("Index out of range");if(m<0)throw new RangeError("sourceEnd out of bounds");m>this.length&&(m=this.length),y.length-h<m-f&&(m=y.length-h+f);let w=m-f;return this===y&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(h,f,m):Uint8Array.prototype.set.call(y,this.subarray(f,m),h),w},s.prototype.fill=function(y,h,f,m){if(typeof y=="string"){if(typeof h=="string"?(m=h,h=0,f=this.length):typeof f=="string"&&(m=f,f=this.length),m!==void 0&&typeof m!="string")throw new TypeError("encoding must be a string");if(typeof m=="string"&&!s.isEncoding(m))throw new TypeError("Unknown encoding: "+m);if(y.length===1){let v=y.charCodeAt(0);(m==="utf8"&&v<128||m==="latin1")&&(y=v)}}else typeof y=="number"?y=y&255:typeof y=="boolean"&&(y=Number(y));if(h<0||this.length<h||this.length<f)throw new RangeError("Out of range index");if(f<=h)return this;h=h>>>0,f=f===void 0?this.length:f>>>0,y||(y=0);let w;if(typeof y=="number")for(w=h;w<f;++w)this[w]=y;else{let v=s.isBuffer(y)?y:s.from(y,m),C=v.length;if(C===0)throw new TypeError('The value "'+y+'" is invalid for argument "value"');for(w=0;w<f-h;++w)this[w+h]=v[w%C]}return this};let V={};function j(y,h,f){V[y]=class extends f{constructor(){super(),Object.defineProperty(this,"message",{value:h.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${y}]`,this.stack,delete this.name}get code(){return y}set code(m){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:m,writable:!0})}toString(){return`${this.name} [${y}]: ${this.message}`}}}j("ERR_BUFFER_OUT_OF_BOUNDS",function(y){return y?`${y} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),j("ERR_INVALID_ARG_TYPE",function(y,h){return`The "${y}" argument must be of type number. Received type ${typeof h}`},TypeError),j("ERR_OUT_OF_RANGE",function(y,h,f){let m=`The value of "${y}" is out of range.`,w=f;return Number.isInteger(f)&&Math.abs(f)>2**32?w=Z(String(f)):typeof f=="bigint"&&(w=String(f),(f>BigInt(2)**BigInt(32)||f<-(BigInt(2)**BigInt(32)))&&(w=Z(w)),w+="n"),m+=` It must be ${h}. Received ${w}`,m},RangeError);function Z(y){let h="",f=y.length,m=y[0]==="-"?1:0;for(;f>=m+4;f-=3)h=`_${y.slice(f-3,f)}${h}`;return`${y.slice(0,f)}${h}`}function ue(y,h,f){X(h,"offset"),(y[h]===void 0||y[h+f]===void 0)&&E(h,y.length-(f+1))}function le(y,h,f,m,w,v){if(y>f||y<h){let C=typeof h=="bigint"?"n":"",H;throw h===0||h===BigInt(0)?H=`>= 0${C} and < 2${C} ** ${(v+1)*8}${C}`:H=`>= -(2${C} ** ${(v+1)*8-1}${C}) and < 2 ** ${(v+1)*8-1}${C}`,new V.ERR_OUT_OF_RANGE("value",H,y)}ue(m,w,v)}function X(y,h){if(typeof y!="number")throw new V.ERR_INVALID_ARG_TYPE(h,"number",y)}function E(y,h,f){throw Math.floor(y)!==y?(X(y,f),new V.ERR_OUT_OF_RANGE("offset","an integer",y)):h<0?new V.ERR_BUFFER_OUT_OF_BOUNDS:new V.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${h}`,y)}let T=/[^+/0-9A-Za-z-_]/g;function S(y){if(y=y.split("=")[0],y=y.trim().replace(T,""),y.length<2)return"";for(;y.length%4!==0;)y=y+"=";return y}function O(y,h){h=h||1/0;let f,m=y.length,w=null,v=[];for(let C=0;C<m;++C){if(f=y.charCodeAt(C),f>55295&&f<57344){if(!w){if(f>56319){(h-=3)>-1&&v.push(239,191,189);continue}else if(C+1===m){(h-=3)>-1&&v.push(239,191,189);continue}w=f;continue}if(f<56320){(h-=3)>-1&&v.push(239,191,189),w=f;continue}f=(w-55296<<10|f-56320)+65536}else w&&(h-=3)>-1&&v.push(239,191,189);if(w=null,f<128){if((h-=1)<0)break;v.push(f)}else if(f<2048){if((h-=2)<0)break;v.push(f>>6|192,f&63|128)}else if(f<65536){if((h-=3)<0)break;v.push(f>>12|224,f>>6&63|128,f&63|128)}else if(f<1114112){if((h-=4)<0)break;v.push(f>>18|240,f>>12&63|128,f>>6&63|128,f&63|128)}else throw new Error("Invalid code point")}return v}function N(y){let h=[];for(let f=0;f<y.length;++f)h.push(y.charCodeAt(f)&255);return h}function ee(y,h){let f,m,w,v=[];for(let C=0;C<y.length&&!((h-=2)<0);++C)f=y.charCodeAt(C),m=f>>8,w=f%256,v.push(w),v.push(m);return v}function J(y){return e.toByteArray(S(y))}function D(y,h,f,m){let w;for(w=0;w<m&&!(w+f>=h.length||w>=y.length);++w)h[w+f]=y[w];return w}function K(y,h){return y instanceof h||y!=null&&y.constructor!=null&&y.constructor.name!=null&&y.constructor.name===h.name}function z(y){return y!==y}let ce=function(){let y="0123456789abcdef",h=new Array(256);for(let f=0;f<16;++f){let m=f*16;for(let w=0;w<16;++w)h[m+w]=y[f]+y[w]}return h}();function be(y){return typeof BigInt>"u"?Te:y}function Te(){throw new Error("BigInt not supported")}return Tn}var no,dh,cs,ph,Tn,gh,Yr,cl,kb,Nb,St=vt(()=>{we(),Ee(),ve(),no={},dh=!1,cs={},ph=!1,Tn={},gh=!1,Yr=GR(),Yr.Buffer,Yr.SlowBuffer,Yr.INSPECT_MAX_BYTES,Yr.kMaxLength,cl=Yr.Buffer,kb=Yr.INSPECT_MAX_BYTES,Nb=Yr.kMaxLength}),Ee=vt(()=>{St()}),QR=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(r){this.aliasToTopic={},this.max=r}put(r,n){return n===0||n>this.max?!1:(this.aliasToTopic[n]=r,this.length=Object.keys(this.aliasToTopic).length,!0)}getTopicByAlias(r){return this.aliasToTopic[r]}clear(){this.aliasToTopic={}}};e.default=t}),pt=Oe((e,t)=>{we(),Ee(),ve(),t.exports={ArrayIsArray(r){return Array.isArray(r)},ArrayPrototypeIncludes(r,n){return r.includes(n)},ArrayPrototypeIndexOf(r,n){return r.indexOf(n)},ArrayPrototypeJoin(r,n){return r.join(n)},ArrayPrototypeMap(r,n){return r.map(n)},ArrayPrototypePop(r,n){return r.pop(n)},ArrayPrototypePush(r,n){return r.push(n)},ArrayPrototypeSlice(r,n,o){return r.slice(n,o)},Error,FunctionPrototypeCall(r,n,...o){return r.call(n,...o)},FunctionPrototypeSymbolHasInstance(r,n){return Function.prototype[Symbol.hasInstance].call(r,n)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(r,n){return Object.defineProperties(r,n)},ObjectDefineProperty(r,n,o){return Object.defineProperty(r,n,o)},ObjectGetOwnPropertyDescriptor(r,n){return Object.getOwnPropertyDescriptor(r,n)},ObjectKeys(r){return Object.keys(r)},ObjectSetPrototypeOf(r,n){return Object.setPrototypeOf(r,n)},Promise,PromisePrototypeCatch(r,n){return r.catch(n)},PromisePrototypeThen(r,n,o){return r.then(n,o)},PromiseReject(r){return Promise.reject(r)},ReflectApply:Reflect.apply,RegExpPrototypeTest(r,n){return r.test(n)},SafeSet:Set,String,StringPrototypeSlice(r,n,o){return r.slice(n,o)},StringPrototypeToLowerCase(r){return r.toLowerCase()},StringPrototypeToUpperCase(r){return r.toUpperCase()},StringPrototypeTrim(r){return r.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,TypedArrayPrototypeSet(r,n,o){return r.set(n,o)},Uint8Array}}),ln=Oe((e,t)=>{we(),Ee(),ve();var r=(St(),ze(Et)),n=Object.getPrototypeOf(async function(){}).constructor,o=globalThis.Blob||r.Blob,i=typeof o<"u"?function(a){return a instanceof o}:function(a){return!1},s=class extends Error{constructor(a){if(!Array.isArray(a))throw new TypeError(`Expected input to be an Array, got ${typeof a}`);let l="";for(let u=0;u<a.length;u++)l+=`    ${a[u].stack}
-`;super(l),this.name="AggregateError",this.errors=a}};t.exports={AggregateError:s,kEmptyObject:Object.freeze({}),once(a){let l=!1;return function(...u){l||(l=!0,a.apply(this,u))}},createDeferredPromise:function(){let a,l;return{promise:new Promise((u,c)=>{a=u,l=c}),resolve:a,reject:l}},promisify(a){return new Promise((l,u)=>{a((c,...d)=>c?u(c):l(...d))})},debuglog(){return function(){}},format(a,...l){return a.replace(/%([sdifj])/g,function(...[u,c]){let d=l.shift();return c==="f"?d.toFixed(6):c==="j"?JSON.stringify(d):c==="s"&&typeof d=="object"?`${d.constructor!==Object?d.constructor.name:""} {}`.trim():d.toString()})},inspect(a){switch(typeof a){case"string":if(a.includes("'"))if(a.includes('"')){if(!a.includes("`")&&!a.includes("${"))return`\`${a}\``}else return`"${a}"`;return`'${a}'`;case"number":return isNaN(a)?"NaN":Object.is(a,-0)?String(a):a;case"bigint":return`${String(a)}n`;case"boolean":case"undefined":return String(a);case"object":return"{}"}},types:{isAsyncFunction(a){return a instanceof n},isArrayBufferView(a){return ArrayBuffer.isView(a)}},isBlob:i},t.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),Gd=Oe((e,t)=>{we(),Ee(),ve();var{AbortController:r,AbortSignal:n}=typeof self<"u"?self:typeof window<"u"?window:void 0;t.exports=r,t.exports.AbortSignal=n,t.exports.default=r}),Ht=Oe((e,t)=>{we(),Ee(),ve();var{format:r,inspect:n,AggregateError:o}=ln(),i=globalThis.AggregateError||o,s=Symbol("kIsNodeError"),a=["string","function","number","object","Function","Object","boolean","bigint","symbol"],l=/^([A-Z][a-z0-9]*)+$/,u="__node_internal_",c={};function d(R,A){if(!R)throw new c.ERR_INTERNAL_ASSERTION(A)}function p(R){let A="",B=R.length,$=R[0]==="-"?1:0;for(;B>=$+4;B-=3)A=`_${R.slice(B-3,B)}${A}`;return`${R.slice(0,B)}${A}`}function g(R,A,B){if(typeof A=="function")return d(A.length<=B.length,`Code: ${R}; The provided arguments length (${B.length}) does not match the required ones (${A.length}).`),A(...B);let $=(A.match(/%[dfijoOs]/g)||[]).length;return d($===B.length,`Code: ${R}; The provided arguments length (${B.length}) does not match the required ones (${$}).`),B.length===0?A:r(A,...B)}function _(R,A,B){B||(B=Error);class $ extends B{constructor(...P){super(g(R,A,P))}toString(){return`${this.name} [${R}]: ${this.message}`}}Object.defineProperties($.prototype,{name:{value:B.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${R}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),$.prototype.code=R,$.prototype[s]=!0,c[R]=$}function b(R){let A=u+R.name;return Object.defineProperty(R,"name",{value:A}),R}function x(R,A){if(R&&A&&R!==A){if(Array.isArray(A.errors))return A.errors.push(R),A;let B=new i([A,R],A.message);return B.code=A.code,B}return R||A}var k=class extends Error{constructor(R="The operation was aborted",A=void 0){if(A!==void 0&&typeof A!="object")throw new c.ERR_INVALID_ARG_TYPE("options","Object",A);super(R,A),this.code="ABORT_ERR",this.name="AbortError"}};_("ERR_ASSERTION","%s",Error),_("ERR_INVALID_ARG_TYPE",(R,A,B)=>{d(typeof R=="string","'name' must be a string"),Array.isArray(A)||(A=[A]);let $="The ";R.endsWith(" argument")?$+=`${R} `:$+=`"${R}" ${R.includes(".")?"property":"argument"} `,$+="must be ";let I=[],P=[],W=[];for(let oe of A)d(typeof oe=="string","All expected entries have to be of type string"),a.includes(oe)?I.push(oe.toLowerCase()):l.test(oe)?P.push(oe):(d(oe!=="object",'The value "object" should be written as "Object"'),W.push(oe));if(P.length>0){let oe=I.indexOf("object");oe!==-1&&(I.splice(I,oe,1),P.push("Object"))}if(I.length>0){switch(I.length){case 1:$+=`of type ${I[0]}`;break;case 2:$+=`one of type ${I[0]} or ${I[1]}`;break;default:{let oe=I.pop();$+=`one of type ${I.join(", ")}, or ${oe}`}}(P.length>0||W.length>0)&&($+=" or ")}if(P.length>0){switch(P.length){case 1:$+=`an instance of ${P[0]}`;break;case 2:$+=`an instance of ${P[0]} or ${P[1]}`;break;default:{let oe=P.pop();$+=`an instance of ${P.join(", ")}, or ${oe}`}}W.length>0&&($+=" or ")}switch(W.length){case 0:break;case 1:W[0].toLowerCase()!==W[0]&&($+="an "),$+=`${W[0]}`;break;case 2:$+=`one of ${W[0]} or ${W[1]}`;break;default:{let oe=W.pop();$+=`one of ${W.join(", ")}, or ${oe}`}}if(B==null)$+=`. Received ${B}`;else if(typeof B=="function"&&B.name)$+=`. Received function ${B.name}`;else if(typeof B=="object"){var Y;if((Y=B.constructor)!==null&&Y!==void 0&&Y.name)$+=`. Received an instance of ${B.constructor.name}`;else{let oe=n(B,{depth:-1});$+=`. Received ${oe}`}}else{let oe=n(B,{colors:!1});oe.length>25&&(oe=`${oe.slice(0,25)}...`),$+=`. Received type ${typeof B} (${oe})`}return $},TypeError),_("ERR_INVALID_ARG_VALUE",(R,A,B="is invalid")=>{let $=n(A);return $.length>128&&($=$.slice(0,128)+"..."),`The ${R.includes(".")?"property":"argument"} '${R}' ${B}. Received ${$}`},TypeError),_("ERR_INVALID_RETURN_VALUE",(R,A,B)=>{var $;let I=B!=null&&($=B.constructor)!==null&&$!==void 0&&$.name?`instance of ${B.constructor.name}`:`type ${typeof B}`;return`Expected ${R} to be returned from the "${A}" function but got ${I}.`},TypeError),_("ERR_MISSING_ARGS",(...R)=>{d(R.length>0,"At least one arg needs to be specified");let A,B=R.length;switch(R=(Array.isArray(R)?R:[R]).map($=>`"${$}"`).join(" or "),B){case 1:A+=`The ${R[0]} argument`;break;case 2:A+=`The ${R[0]} and ${R[1]} arguments`;break;default:{let $=R.pop();A+=`The ${R.join(", ")}, and ${$} arguments`}break}return`${A} must be specified`},TypeError),_("ERR_OUT_OF_RANGE",(R,A,B)=>{d(A,'Missing "range" argument');let $;return Number.isInteger(B)&&Math.abs(B)>2**32?$=p(String(B)):typeof B=="bigint"?($=String(B),(B>2n**32n||B<-(2n**32n))&&($=p($)),$+="n"):$=n(B),`The value of "${R}" is out of range. It must be ${A}. Received ${$}`},RangeError),_("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),_("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),_("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),_("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),_("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),_("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),_("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),_("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),_("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),_("ERR_STREAM_WRITE_AFTER_END","write after end",Error),_("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),t.exports={AbortError:k,aggregateTwoErrors:b(x),hideStackFrames:b,codes:c}}),eu=Oe((e,t)=>{we(),Ee(),ve();var{ArrayIsArray:r,ArrayPrototypeIncludes:n,ArrayPrototypeJoin:o,ArrayPrototypeMap:i,NumberIsInteger:s,NumberIsNaN:a,NumberMAX_SAFE_INTEGER:l,NumberMIN_SAFE_INTEGER:u,NumberParseInt:c,ObjectPrototypeHasOwnProperty:d,RegExpPrototypeExec:p,String:g,StringPrototypeToUpperCase:_,StringPrototypeTrim:b}=pt(),{hideStackFrames:x,codes:{ERR_SOCKET_BAD_PORT:k,ERR_INVALID_ARG_TYPE:R,ERR_INVALID_ARG_VALUE:A,ERR_OUT_OF_RANGE:B,ERR_UNKNOWN_SIGNAL:$}}=Ht(),{normalizeEncoding:I}=ln(),{isAsyncFunction:P,isArrayBufferView:W}=ln().types,Y={};function oe(D){return D===(D|0)}function te(D){return D===D>>>0}var M=/^[0-7]+$/,L="must be a 32-bit unsigned integer or an octal string";function ie(D,K,z){if(typeof D>"u"&&(D=z),typeof D=="string"){if(p(M,D)===null)throw new A(K,D,L);D=c(D,8)}return se(D,K),D}var re=x((D,K,z=u,ce=l)=>{if(typeof D!="number")throw new R(K,"number",D);if(!s(D))throw new B(K,"an integer",D);if(D<z||D>ce)throw new B(K,`>= ${z} && <= ${ce}`,D)}),ae=x((D,K,z=-2147483648,ce=2147483647)=>{if(typeof D!="number")throw new R(K,"number",D);if(!s(D))throw new B(K,"an integer",D);if(D<z||D>ce)throw new B(K,`>= ${z} && <= ${ce}`,D)}),se=x((D,K,z=!1)=>{if(typeof D!="number")throw new R(K,"number",D);if(!s(D))throw new B(K,"an integer",D);let ce=z?1:0,be=4294967295;if(D<ce||D>be)throw new B(K,`>= ${ce} && <= ${be}`,D)});function Q(D,K){if(typeof D!="string")throw new R(K,"string",D)}function he(D,K,z=void 0,ce){if(typeof D!="number")throw new R(K,"number",D);if(z!=null&&D<z||ce!=null&&D>ce||(z!=null||ce!=null)&&a(D))throw new B(K,`${z!=null?`>= ${z}`:""}${z!=null&&ce!=null?" && ":""}${ce!=null?`<= ${ce}`:""}`,D)}var fe=x((D,K,z)=>{if(!n(z,D)){let ce="must be one of: "+o(i(z,be=>typeof be=="string"?`'${be}'`:g(be)),", ");throw new A(K,D,ce)}});function pe(D,K){if(typeof D!="boolean")throw new R(K,"boolean",D)}function F(D,K,z){return D==null||!d(D,K)?z:D[K]}var ne=x((D,K,z=null)=>{let ce=F(z,"allowArray",!1),be=F(z,"allowFunction",!1);if(!F(z,"nullable",!1)&&D===null||!ce&&r(D)||typeof D!="object"&&(!be||typeof D!="function"))throw new R(K,"Object",D)}),ge=x((D,K)=>{if(D!=null&&typeof D!="object"&&typeof D!="function")throw new R(K,"a dictionary",D)}),Se=x((D,K,z=0)=>{if(!r(D))throw new R(K,"Array",D);if(D.length<z){let ce=`must be longer than ${z}`;throw new A(K,D,ce)}});function ye(D,K){Se(D,K);for(let z=0;z<D.length;z++)Q(D[z],`${K}[${z}]`)}function V(D,K){Se(D,K);for(let z=0;z<D.length;z++)pe(D[z],`${K}[${z}]`)}function j(D,K="signal"){if(Q(D,K),Y[D]===void 0)throw Y[_(D)]!==void 0?new $(D+" (signals must use all capital letters)"):new $(D)}var Z=x((D,K="buffer")=>{if(!W(D))throw new R(K,["Buffer","TypedArray","DataView"],D)});function ue(D,K){let z=I(K),ce=D.length;if(z==="hex"&&ce%2!==0)throw new A("encoding",K,`is invalid for data of length ${ce}`)}function le(D,K="Port",z=!0){if(typeof D!="number"&&typeof D!="string"||typeof D=="string"&&b(D).length===0||+D!==+D>>>0||D>65535||D===0&&!z)throw new k(K,D,z);return D|0}var X=x((D,K)=>{if(D!==void 0&&(D===null||typeof D!="object"||!("aborted"in D)))throw new R(K,"AbortSignal",D)}),E=x((D,K)=>{if(typeof D!="function")throw new R(K,"Function",D)}),T=x((D,K)=>{if(typeof D!="function"||P(D))throw new R(K,"Function",D)}),S=x((D,K)=>{if(D!==void 0)throw new R(K,"undefined",D)});function O(D,K,z){if(!n(z,D))throw new R(K,`('${o(z,"|")}')`,D)}var N=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function ee(D,K){if(typeof D>"u"||!p(N,D))throw new A(K,D,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function J(D){if(typeof D=="string")return ee(D,"hints"),D;if(r(D)){let K=D.length,z="";if(K===0)return z;for(let ce=0;ce<K;ce++){let be=D[ce];ee(be,"hints"),z+=be,ce!==K-1&&(z+=", ")}return z}throw new A("hints",D,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}t.exports={isInt32:oe,isUint32:te,parseFileMode:ie,validateArray:Se,validateStringArray:ye,validateBooleanArray:V,validateBoolean:pe,validateBuffer:Z,validateDictionary:ge,validateEncoding:ue,validateFunction:E,validateInt32:ae,validateInteger:re,validateNumber:he,validateObject:ne,validateOneOf:fe,validatePlainFunction:T,validatePort:le,validateSignalName:j,validateString:Q,validateUint32:se,validateUndefined:S,validateUnion:O,validateAbortSignal:X,validateLinkHeaderValue:J}}),Ui=Oe((e,t)=>{we(),Ee(),ve();var r=t.exports={},n,o;function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?n=setTimeout:n=i}catch{n=i}try{typeof clearTimeout=="function"?o=clearTimeout:o=s}catch{o=s}})();function a(k){if(n===setTimeout)return setTimeout(k,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(k,0);try{return n(k,0)}catch{try{return n.call(null,k,0)}catch{return n.call(this,k,0)}}}function l(k){if(o===clearTimeout)return clearTimeout(k);if((o===s||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(k);try{return o(k)}catch{try{return o.call(null,k)}catch{return o.call(this,k)}}}var u=[],c=!1,d,p=-1;function g(){!c||!d||(c=!1,d.length?u=d.concat(u):p=-1,u.length&&_())}function _(){if(!c){var k=a(g);c=!0;for(var R=u.length;R;){for(d=u,u=[];++p<R;)d&&d[p].run();p=-1,R=u.length}d=null,c=!1,l(k)}}r.nextTick=function(k){var R=new Array(arguments.length-1);if(arguments.length>1)for(var A=1;A<arguments.length;A++)R[A-1]=arguments[A];u.push(new b(k,R)),u.length===1&&!c&&a(_)};function b(k,R){this.fun=k,this.array=R}b.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={};function x(){}r.on=x,r.addListener=x,r.once=x,r.off=x,r.removeListener=x,r.removeAllListeners=x,r.emit=x,r.prependListener=x,r.prependOnceListener=x,r.listeners=function(k){return[]},r.binding=function(k){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(k){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}}),_n=Oe((e,t)=>{we(),Ee(),ve();var{Symbol:r,SymbolAsyncIterator:n,SymbolIterator:o,SymbolFor:i}=pt(),s=r("kDestroyed"),a=r("kIsErrored"),l=r("kIsReadable"),u=r("kIsDisturbed"),c=i("nodejs.webstream.isClosedPromise"),d=i("nodejs.webstream.controllerErrorFunction");function p(F,ne=!1){var ge;return!!(F&&typeof F.pipe=="function"&&typeof F.on=="function"&&(!ne||typeof F.pause=="function"&&typeof F.resume=="function")&&(!F._writableState||((ge=F._readableState)===null||ge===void 0?void 0:ge.readable)!==!1)&&(!F._writableState||F._readableState))}function g(F){var ne;return!!(F&&typeof F.write=="function"&&typeof F.on=="function"&&(!F._readableState||((ne=F._writableState)===null||ne===void 0?void 0:ne.writable)!==!1))}function _(F){return!!(F&&typeof F.pipe=="function"&&F._readableState&&typeof F.on=="function"&&typeof F.write=="function")}function b(F){return F&&(F._readableState||F._writableState||typeof F.write=="function"&&typeof F.on=="function"||typeof F.pipe=="function"&&typeof F.on=="function")}function x(F){return!!(F&&!b(F)&&typeof F.pipeThrough=="function"&&typeof F.getReader=="function"&&typeof F.cancel=="function")}function k(F){return!!(F&&!b(F)&&typeof F.getWriter=="function"&&typeof F.abort=="function")}function R(F){return!!(F&&!b(F)&&typeof F.readable=="object"&&typeof F.writable=="object")}function A(F){return x(F)||k(F)||R(F)}function B(F,ne){return F==null?!1:ne===!0?typeof F[n]=="function":ne===!1?typeof F[o]=="function":typeof F[n]=="function"||typeof F[o]=="function"}function $(F){if(!b(F))return null;let ne=F._writableState,ge=F._readableState,Se=ne||ge;return!!(F.destroyed||F[s]||Se!=null&&Se.destroyed)}function I(F){if(!g(F))return null;if(F.writableEnded===!0)return!0;let ne=F._writableState;return ne!=null&&ne.errored?!1:typeof(ne==null?void 0:ne.ended)!="boolean"?null:ne.ended}function P(F,ne){if(!g(F))return null;if(F.writableFinished===!0)return!0;let ge=F._writableState;return ge!=null&&ge.errored?!1:typeof(ge==null?void 0:ge.finished)!="boolean"?null:!!(ge.finished||ne===!1&&ge.ended===!0&&ge.length===0)}function W(F){if(!p(F))return null;if(F.readableEnded===!0)return!0;let ne=F._readableState;return!ne||ne.errored?!1:typeof(ne==null?void 0:ne.ended)!="boolean"?null:ne.ended}function Y(F,ne){if(!p(F))return null;let ge=F._readableState;return ge!=null&&ge.errored?!1:typeof(ge==null?void 0:ge.endEmitted)!="boolean"?null:!!(ge.endEmitted||ne===!1&&ge.ended===!0&&ge.length===0)}function oe(F){return F&&F[l]!=null?F[l]:typeof(F==null?void 0:F.readable)!="boolean"?null:$(F)?!1:p(F)&&F.readable&&!Y(F)}function te(F){return typeof(F==null?void 0:F.writable)!="boolean"?null:$(F)?!1:g(F)&&F.writable&&!I(F)}function M(F,ne){return b(F)?$(F)?!0:!((ne==null?void 0:ne.readable)!==!1&&oe(F)||(ne==null?void 0:ne.writable)!==!1&&te(F)):null}function L(F){var ne,ge;return b(F)?F.writableErrored?F.writableErrored:(ne=(ge=F._writableState)===null||ge===void 0?void 0:ge.errored)!==null&&ne!==void 0?ne:null:null}function ie(F){var ne,ge;return b(F)?F.readableErrored?F.readableErrored:(ne=(ge=F._readableState)===null||ge===void 0?void 0:ge.errored)!==null&&ne!==void 0?ne:null:null}function re(F){if(!b(F))return null;if(typeof F.closed=="boolean")return F.closed;let ne=F._writableState,ge=F._readableState;return typeof(ne==null?void 0:ne.closed)=="boolean"||typeof(ge==null?void 0:ge.closed)=="boolean"?(ne==null?void 0:ne.closed)||(ge==null?void 0:ge.closed):typeof F._closed=="boolean"&&ae(F)?F._closed:null}function ae(F){return typeof F._closed=="boolean"&&typeof F._defaultKeepAlive=="boolean"&&typeof F._removedConnection=="boolean"&&typeof F._removedContLen=="boolean"}function se(F){return typeof F._sent100=="boolean"&&ae(F)}function Q(F){var ne;return typeof F._consuming=="boolean"&&typeof F._dumped=="boolean"&&((ne=F.req)===null||ne===void 0?void 0:ne.upgradeOrConnect)===void 0}function he(F){if(!b(F))return null;let ne=F._writableState,ge=F._readableState,Se=ne||ge;return!Se&&se(F)||!!(Se&&Se.autoDestroy&&Se.emitClose&&Se.closed===!1)}function fe(F){var ne;return!!(F&&((ne=F[u])!==null&&ne!==void 0?ne:F.readableDidRead||F.readableAborted))}function pe(F){var ne,ge,Se,ye,V,j,Z,ue,le,X;return!!(F&&((ne=(ge=(Se=(ye=(V=(j=F[a])!==null&&j!==void 0?j:F.readableErrored)!==null&&V!==void 0?V:F.writableErrored)!==null&&ye!==void 0?ye:(Z=F._readableState)===null||Z===void 0?void 0:Z.errorEmitted)!==null&&Se!==void 0?Se:(ue=F._writableState)===null||ue===void 0?void 0:ue.errorEmitted)!==null&&ge!==void 0?ge:(le=F._readableState)===null||le===void 0?void 0:le.errored)!==null&&ne!==void 0?ne:!((X=F._writableState)===null||X===void 0)&&X.errored))}t.exports={kDestroyed:s,isDisturbed:fe,kIsDisturbed:u,isErrored:pe,kIsErrored:a,isReadable:oe,kIsReadable:l,kIsClosedPromise:c,kControllerErrorFunction:d,isClosed:re,isDestroyed:$,isDuplexNodeStream:_,isFinished:M,isIterable:B,isReadableNodeStream:p,isReadableStream:x,isReadableEnded:W,isReadableFinished:Y,isReadableErrored:ie,isNodeStream:b,isWebStream:A,isWritable:te,isWritableNodeStream:g,isWritableStream:k,isWritableEnded:I,isWritableFinished:P,isWritableErrored:L,isServerRequest:Q,isServerResponse:se,willEmitClose:he,isTransformStream:R}}),Kn=Oe((e,t)=>{we(),Ee(),ve();var r=Ui(),{AbortError:n,codes:o}=Ht(),{ERR_INVALID_ARG_TYPE:i,ERR_STREAM_PREMATURE_CLOSE:s}=o,{kEmptyObject:a,once:l}=ln(),{validateAbortSignal:u,validateFunction:c,validateObject:d,validateBoolean:p}=eu(),{Promise:g,PromisePrototypeThen:_}=pt(),{isClosed:b,isReadable:x,isReadableNodeStream:k,isReadableStream:R,isReadableFinished:A,isReadableErrored:B,isWritable:$,isWritableNodeStream:I,isWritableStream:P,isWritableFinished:W,isWritableErrored:Y,isNodeStream:oe,willEmitClose:te,kIsClosedPromise:M}=_n();function L(Q){return Q.setHeader&&typeof Q.abort=="function"}var ie=()=>{};function re(Q,he,fe){var pe,F;if(arguments.length===2?(fe=he,he=a):he==null?he=a:d(he,"options"),c(fe,"callback"),u(he.signal,"options.signal"),fe=l(fe),R(Q)||P(Q))return ae(Q,he,fe);if(!oe(Q))throw new i("stream",["ReadableStream","WritableStream","Stream"],Q);let ne=(pe=he.readable)!==null&&pe!==void 0?pe:k(Q),ge=(F=he.writable)!==null&&F!==void 0?F:I(Q),Se=Q._writableState,ye=Q._readableState,V=()=>{Q.writable||ue()},j=te(Q)&&k(Q)===ne&&I(Q)===ge,Z=W(Q,!1),ue=()=>{Z=!0,Q.destroyed&&(j=!1),!(j&&(!Q.readable||ne))&&(!ne||le)&&fe.call(Q)},le=A(Q,!1),X=()=>{le=!0,Q.destroyed&&(j=!1),!(j&&(!Q.writable||ge))&&(!ge||Z)&&fe.call(Q)},E=J=>{fe.call(Q,J)},T=b(Q),S=()=>{T=!0;let J=Y(Q)||B(Q);if(J&&typeof J!="boolean")return fe.call(Q,J);if(ne&&!le&&k(Q,!0)&&!A(Q,!1))return fe.call(Q,new s);if(ge&&!Z&&!W(Q,!1))return fe.call(Q,new s);fe.call(Q)},O=()=>{T=!0;let J=Y(Q)||B(Q);if(J&&typeof J!="boolean")return fe.call(Q,J);fe.call(Q)},N=()=>{Q.req.on("finish",ue)};L(Q)?(Q.on("complete",ue),j||Q.on("abort",S),Q.req?N():Q.on("request",N)):ge&&!Se&&(Q.on("end",V),Q.on("close",V)),!j&&typeof Q.aborted=="boolean"&&Q.on("aborted",S),Q.on("end",X),Q.on("finish",ue),he.error!==!1&&Q.on("error",E),Q.on("close",S),T?r.nextTick(S):Se!=null&&Se.errorEmitted||ye!=null&&ye.errorEmitted?j||r.nextTick(O):(!ne&&(!j||x(Q))&&(Z||$(Q)===!1)||!ge&&(!j||$(Q))&&(le||x(Q)===!1)||ye&&Q.req&&Q.aborted)&&r.nextTick(O);let ee=()=>{fe=ie,Q.removeListener("aborted",S),Q.removeListener("complete",ue),Q.removeListener("abort",S),Q.removeListener("request",N),Q.req&&Q.req.removeListener("finish",ue),Q.removeListener("end",V),Q.removeListener("close",V),Q.removeListener("finish",ue),Q.removeListener("end",X),Q.removeListener("error",E),Q.removeListener("close",S)};if(he.signal&&!T){let J=()=>{let D=fe;ee(),D.call(Q,new n(void 0,{cause:he.signal.reason}))};if(he.signal.aborted)r.nextTick(J);else{let D=fe;fe=l((...K)=>{he.signal.removeEventListener("abort",J),D.apply(Q,K)}),he.signal.addEventListener("abort",J)}}return ee}function ae(Q,he,fe){let pe=!1,F=ie;if(he.signal)if(F=()=>{pe=!0,fe.call(Q,new n(void 0,{cause:he.signal.reason}))},he.signal.aborted)r.nextTick(F);else{let ge=fe;fe=l((...Se)=>{he.signal.removeEventListener("abort",F),ge.apply(Q,Se)}),he.signal.addEventListener("abort",F)}let ne=(...ge)=>{pe||r.nextTick(()=>fe.apply(Q,ge))};return _(Q[M].promise,ne,ne),ie}function se(Q,he){var fe;let pe=!1;return he===null&&(he=a),(fe=he)!==null&&fe!==void 0&&fe.cleanup&&(p(he.cleanup,"cleanup"),pe=he.cleanup),new g((F,ne)=>{let ge=re(Q,he,Se=>{pe&&ge(),Se?ne(Se):F()})})}t.exports=re,t.exports.finished=se}),Wo=Oe((e,t)=>{we(),Ee(),ve();var r=Ui(),{aggregateTwoErrors:n,codes:{ERR_MULTIPLE_CALLBACK:o},AbortError:i}=Ht(),{Symbol:s}=pt(),{kDestroyed:a,isDestroyed:l,isFinished:u,isServerRequest:c}=_n(),d=s("kDestroy"),p=s("kConstruct");function g(M,L,ie){M&&(M.stack,L&&!L.errored&&(L.errored=M),ie&&!ie.errored&&(ie.errored=M))}function _(M,L){let ie=this._readableState,re=this._writableState,ae=re||ie;return re!=null&&re.destroyed||ie!=null&&ie.destroyed?(typeof L=="function"&&L(),this):(g(M,re,ie),re&&(re.destroyed=!0),ie&&(ie.destroyed=!0),ae.constructed?b(this,M,L):this.once(d,function(se){b(this,n(se,M),L)}),this)}function b(M,L,ie){let re=!1;function ae(se){if(re)return;re=!0;let Q=M._readableState,he=M._writableState;g(se,he,Q),he&&(he.closed=!0),Q&&(Q.closed=!0),typeof ie=="function"&&ie(se),se?r.nextTick(x,M,se):r.nextTick(k,M)}try{M._destroy(L||null,ae)}catch(se){ae(se)}}function x(M,L){R(M,L),k(M)}function k(M){let L=M._readableState,ie=M._writableState;ie&&(ie.closeEmitted=!0),L&&(L.closeEmitted=!0),(ie!=null&&ie.emitClose||L!=null&&L.emitClose)&&M.emit("close")}function R(M,L){let ie=M._readableState,re=M._writableState;re!=null&&re.errorEmitted||ie!=null&&ie.errorEmitted||(re&&(re.errorEmitted=!0),ie&&(ie.errorEmitted=!0),M.emit("error",L))}function A(){let M=this._readableState,L=this._writableState;M&&(M.constructed=!0,M.closed=!1,M.closeEmitted=!1,M.destroyed=!1,M.errored=null,M.errorEmitted=!1,M.reading=!1,M.ended=M.readable===!1,M.endEmitted=M.readable===!1),L&&(L.constructed=!0,L.destroyed=!1,L.closed=!1,L.closeEmitted=!1,L.errored=null,L.errorEmitted=!1,L.finalCalled=!1,L.prefinished=!1,L.ended=L.writable===!1,L.ending=L.writable===!1,L.finished=L.writable===!1)}function B(M,L,ie){let re=M._readableState,ae=M._writableState;if(ae!=null&&ae.destroyed||re!=null&&re.destroyed)return this;re!=null&&re.autoDestroy||ae!=null&&ae.autoDestroy?M.destroy(L):L&&(L.stack,ae&&!ae.errored&&(ae.errored=L),re&&!re.errored&&(re.errored=L),ie?r.nextTick(R,M,L):R(M,L))}function $(M,L){if(typeof M._construct!="function")return;let ie=M._readableState,re=M._writableState;ie&&(ie.constructed=!1),re&&(re.constructed=!1),M.once(p,L),!(M.listenerCount(p)>1)&&r.nextTick(I,M)}function I(M){let L=!1;function ie(re){if(L){B(M,re??new o);return}L=!0;let ae=M._readableState,se=M._writableState,Q=se||ae;ae&&(ae.constructed=!0),se&&(se.constructed=!0),Q.destroyed?M.emit(d,re):re?B(M,re,!0):r.nextTick(P,M)}try{M._construct(re=>{r.nextTick(ie,re)})}catch(re){r.nextTick(ie,re)}}function P(M){M.emit(p)}function W(M){return(M==null?void 0:M.setHeader)&&typeof M.abort=="function"}function Y(M){M.emit("close")}function oe(M,L){M.emit("error",L),r.nextTick(Y,M)}function te(M,L){!M||l(M)||(!L&&!u(M)&&(L=new i),c(M)?(M.socket=null,M.destroy(L)):W(M)?M.abort():W(M.req)?M.req.abort():typeof M.destroy=="function"?M.destroy(L):typeof M.close=="function"?M.close():L?r.nextTick(oe,M,L):r.nextTick(Y,M),M.destroyed||(M[a]=!0))}t.exports={construct:$,destroyer:te,destroy:_,undestroy:A,errorOrDestroy:B}});function Ke(){Ke.init.call(this)}function Ba(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function Mb(e){return e._maxListeners===void 0?Ke.defaultMaxListeners:e._maxListeners}function tm(e,t,r,n){var o,i,s,a;if(Ba(r),(i=e._events)===void 0?(i=e._events=Object.create(null),e._eventsCount=0):(i.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),s=i[t]),s===void 0)s=i[t]=r,++e._eventsCount;else if(typeof s=="function"?s=i[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(o=Mb(e))>0&&s.length>o&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,a=l,console&&console.warn&&console.warn(a)}return e}function XR(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function rm(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=XR.bind(n);return o.listener=r,n.wrapFn=o,o}function nm(e,t,r){var n=e._events;if(n===void 0)return[];var o=n[t];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?function(i){for(var s=new Array(i.length),a=0;a<s.length;++a)s[a]=i[a].listener||i[a];return s}(o):Pb(o,o.length)}function im(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}function Pb(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}var om,sm,Xn,rc,nc,ic,Kt,am=vt(()=>{we(),Ee(),ve(),Xn=typeof Reflect=="object"?Reflect:null,rc=Xn&&typeof Xn.apply=="function"?Xn.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)},sm=Xn&&typeof Xn.ownKeys=="function"?Xn.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)},nc=Number.isNaN||function(e){return e!=e},om=Ke,Ke.EventEmitter=Ke,Ke.prototype._events=void 0,Ke.prototype._eventsCount=0,Ke.prototype._maxListeners=void 0,ic=10,Object.defineProperty(Ke,"defaultMaxListeners",{enumerable:!0,get:function(){return ic},set:function(e){if(typeof e!="number"||e<0||nc(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");ic=e}}),Ke.init=function(){this._events!==void 0&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ke.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||nc(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},Ke.prototype.getMaxListeners=function(){return Mb(this)},Ke.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n=e==="error",o=this._events;if(o!==void 0)n=n&&o.error===void 0;else if(!n)return!1;if(n){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var s=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw s.context=i,s}var a=o[e];if(a===void 0)return!1;if(typeof a=="function")rc(a,this,t);else{var l=a.length,u=Pb(a,l);for(r=0;r<l;++r)rc(u[r],this,t)}return!0},Ke.prototype.addListener=function(e,t){return tm(this,e,t,!1)},Ke.prototype.on=Ke.prototype.addListener,Ke.prototype.prependListener=function(e,t){return tm(this,e,t,!0)},Ke.prototype.once=function(e,t){return Ba(t),this.on(e,rm(this,e,t)),this},Ke.prototype.prependOnceListener=function(e,t){return Ba(t),this.prependListener(e,rm(this,e,t)),this},Ke.prototype.removeListener=function(e,t){var r,n,o,i,s;if(Ba(t),(n=this._events)===void 0)return this;if((r=n[e])===void 0)return this;if(r===t||r.listener===t)--this._eventsCount==0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if(typeof r!="function"){for(o=-1,i=r.length-1;i>=0;i--)if(r[i]===t||r[i].listener===t){s=r[i].listener,o=i;break}if(o<0)return this;o===0?r.shift():function(a,l){for(;l+1<a.length;l++)a[l]=a[l+1];a.pop()}(r,o),r.length===1&&(n[e]=r[0]),n.removeListener!==void 0&&this.emit("removeListener",e,s||t)}return this},Ke.prototype.off=Ke.prototype.removeListener,Ke.prototype.removeAllListeners=function(e){var t,r,n;if((r=this._events)===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var o,i=Object.keys(r);for(n=0;n<i.length;++n)(o=i[n])!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(typeof(t=r[e])=="function")this.removeListener(e,t);else if(t!==void 0)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},Ke.prototype.listeners=function(e){return nm(this,e,!0)},Ke.prototype.rawListeners=function(e){return nm(this,e,!1)},Ke.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):im.call(e,t)},Ke.prototype.listenerCount=im,Ke.prototype.eventNames=function(){return this._eventsCount>0?sm(this._events):[]},Kt=om,Kt.EventEmitter,Kt.defaultMaxListeners,Kt.init,Kt.listenerCount,Kt.EventEmitter,Kt.defaultMaxListeners,Kt.init,Kt.listenerCount}),Fi={};$i(Fi,{EventEmitter:()=>Lb,default:()=>Kt,defaultMaxListeners:()=>Bb,init:()=>Db,listenerCount:()=>$b,on:()=>Ub,once:()=>Fb});var Lb,Bb,Db,$b,Ub,Fb,Ho=vt(()=>{we(),Ee(),ve(),am(),am(),Kt.once=function(e,t){return new Promise((r,n)=>{function o(...s){i!==void 0&&e.removeListener("error",i),r(s)}let i;t!=="error"&&(i=s=>{e.removeListener(name,o),n(s)},e.once("error",i)),e.once(t,o)})},Kt.on=function(e,t){let r=[],n=[],o=null,i=!1,s={async next(){let u=r.shift();if(u)return createIterResult(u,!1);if(o){let c=Promise.reject(o);return o=null,c}return i?createIterResult(void 0,!0):new Promise((c,d)=>n.push({resolve:c,reject:d}))},async return(){e.removeListener(t,a),e.removeListener("error",l),i=!0;for(let u of n)u.resolve(createIterResult(void 0,!0));return createIterResult(void 0,!0)},throw(u){o=u,e.removeListener(t,a),e.removeListener("error",l)},[Symbol.asyncIterator](){return this}};return e.on(t,a),e.on("error",l),s;function a(...u){let c=n.shift();c?c.resolve(createIterResult(u,!1)):r.push(u)}function l(u){i=!0;let c=n.shift();c?c.reject(u):o=u,s.return()}},{EventEmitter:Lb,defaultMaxListeners:Bb,init:Db,listenerCount:$b,on:Ub,once:Fb}=Kt}),Qd=Oe((e,t)=>{we(),Ee(),ve();var{ArrayIsArray:r,ObjectSetPrototypeOf:n}=pt(),{EventEmitter:o}=(Ho(),ze(Fi));function i(a){o.call(this,a)}n(i.prototype,o.prototype),n(i,o),i.prototype.pipe=function(a,l){let u=this;function c(k){a.writable&&a.write(k)===!1&&u.pause&&u.pause()}u.on("data",c);function d(){u.readable&&u.resume&&u.resume()}a.on("drain",d),!a._isStdio&&(!l||l.end!==!1)&&(u.on("end",g),u.on("close",_));let p=!1;function g(){p||(p=!0,a.end())}function _(){p||(p=!0,typeof a.destroy=="function"&&a.destroy())}function b(k){x(),o.listenerCount(this,"error")===0&&this.emit("error",k)}s(u,"error",b),s(a,"error",b);function x(){u.removeListener("data",c),a.removeListener("drain",d),u.removeListener("end",g),u.removeListener("close",_),u.removeListener("error",b),a.removeListener("error",b),u.removeListener("end",x),u.removeListener("close",x),a.removeListener("close",x)}return u.on("end",x),u.on("close",x),a.on("close",x),a.emit("pipe",u),a};function s(a,l,u){if(typeof a.prependListener=="function")return a.prependListener(l,u);!a._events||!a._events[l]?a.on(l,u):r(a._events[l])?a._events[l].unshift(u):a._events[l]=[u,a._events[l]]}t.exports={Stream:i,prependListener:s}}),tu=Oe((e,t)=>{we(),Ee(),ve();var{AbortError:r,codes:n}=Ht(),{isNodeStream:o,isWebStream:i,kControllerErrorFunction:s}=_n(),a=Kn(),{ERR_INVALID_ARG_TYPE:l}=n,u=(c,d)=>{if(typeof c!="object"||!("aborted"in c))throw new l(d,"AbortSignal",c)};t.exports.addAbortSignal=function(c,d){if(u(c,"signal"),!o(d)&&!i(d))throw new l("stream",["ReadableStream","WritableStream","Stream"],d);return t.exports.addAbortSignalNoValidate(c,d)},t.exports.addAbortSignalNoValidate=function(c,d){if(typeof c!="object"||!("aborted"in c))return d;let p=o(d)?()=>{d.destroy(new r(void 0,{cause:c.reason}))}:()=>{d[s](new r(void 0,{cause:c.reason}))};return c.aborted?p():(c.addEventListener("abort",p),a(d,()=>c.removeEventListener("abort",p))),d}}),JR=Oe((e,t)=>{we(),Ee(),ve();var{StringPrototypeSlice:r,SymbolIterator:n,TypedArrayPrototypeSet:o,Uint8Array:i}=pt(),{Buffer:s}=(St(),ze(Et)),{inspect:a}=ln();t.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(l){let u={data:l,next:null};this.length>0?this.tail.next=u:this.head=u,this.tail=u,++this.length}unshift(l){let u={data:l,next:this.head};this.length===0&&(this.tail=u),this.head=u,++this.length}shift(){if(this.length===0)return;let l=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,l}clear(){this.head=this.tail=null,this.length=0}join(l){if(this.length===0)return"";let u=this.head,c=""+u.data;for(;(u=u.next)!==null;)c+=l+u.data;return c}concat(l){if(this.length===0)return s.alloc(0);let u=s.allocUnsafe(l>>>0),c=this.head,d=0;for(;c;)o(u,c.data,d),d+=c.data.length,c=c.next;return u}consume(l,u){let c=this.head.data;if(l<c.length){let d=c.slice(0,l);return this.head.data=c.slice(l),d}return l===c.length?this.shift():u?this._getString(l):this._getBuffer(l)}first(){return this.head.data}*[n](){for(let l=this.head;l;l=l.next)yield l.data}_getString(l){let u="",c=this.head,d=0;do{let p=c.data;if(l>p.length)u+=p,l-=p.length;else{l===p.length?(u+=p,++d,c.next?this.head=c.next:this.head=this.tail=null):(u+=r(p,0,l),this.head=c,c.data=r(p,l));break}++d}while((c=c.next)!==null);return this.length-=d,u}_getBuffer(l){let u=s.allocUnsafe(l),c=l,d=this.head,p=0;do{let g=d.data;if(l>g.length)o(u,g,c-l),l-=g.length;else{l===g.length?(o(u,g,c-l),++p,d.next?this.head=d.next:this.head=this.tail=null):(o(u,new i(g.buffer,g.byteOffset,l),c-l),this.head=d,d.data=g.slice(l));break}++p}while((d=d.next)!==null);return this.length-=p,u}[Symbol.for("nodejs.util.inspect.custom")](l,u){return a(this,{...u,depth:0,customInspect:!1})}}}),Xd=Oe((e,t)=>{we(),Ee(),ve();var{MathFloor:r,NumberIsInteger:n}=pt(),{ERR_INVALID_ARG_VALUE:o}=Ht().codes;function i(l,u,c){return l.highWaterMark!=null?l.highWaterMark:u?l[c]:null}function s(l){return l?16:16*1024}function a(l,u,c,d){let p=i(u,d,c);if(p!=null){if(!n(p)||p<0){let g=d?`options.${c}`:"options.highWaterMark";throw new o(g,p)}return r(p)}return s(l.objectMode)}t.exports={getHighWaterMark:a,getDefaultHighWaterMark:s}});function lm(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return r===-1&&(r=t),[r,r===t?0:4-r%4]}function ZR(e,t,r){for(var n,o,i=[],s=t;s<r;s+=3)n=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]),i.push(hr[(o=n)>>18&63]+hr[o>>12&63]+hr[o>>6&63]+hr[63&o]);return i.join("")}function Xr(e){if(e>2147483647)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,xe.prototype),t}function xe(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return mh(e)}return jb(e,t,r)}function jb(e,t,r){if(typeof e=="string")return function(i,s){if(typeof s=="string"&&s!==""||(s="utf8"),!xe.isEncoding(s))throw new TypeError("Unknown encoding: "+s);var a=0|Hb(i,s),l=Xr(a),u=l.write(i,s);return u!==a&&(l=l.slice(0,u)),l}(e,t);if(ArrayBuffer.isView(e))return oc(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(Jr(e,ArrayBuffer)||e&&Jr(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Jr(e,SharedArrayBuffer)||e&&Jr(e.buffer,SharedArrayBuffer)))return eO(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return xe.from(n,t,r);var o=function(i){if(xe.isBuffer(i)){var s=0|Jd(i.length),a=Xr(s);return a.length===0||i.copy(a,0,0,s),a}if(i.length!==void 0)return typeof i.length!="number"||Zd(i.length)?Xr(0):oc(i);if(i.type==="Buffer"&&Array.isArray(i.data))return oc(i.data)}(e);if(o)return o;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return xe.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function Wb(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function mh(e){return Wb(e),Xr(e<0?0:0|Jd(e))}function oc(e){for(var t=e.length<0?0:0|Jd(e.length),r=Xr(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function eO(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=t===void 0&&r===void 0?new Uint8Array(e):r===void 0?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,xe.prototype),n}function Jd(e){if(e>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function Hb(e,t){if(xe.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||Jr(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return yh(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Yb(e).length;default:if(o)return n?-1:yh(e).length;t=(""+t).toLowerCase(),o=!0}}function tO(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return cO(this,t,r);case"utf8":case"utf-8":return qb(this,t,r);case"ascii":return lO(this,t,r);case"latin1":case"binary":return uO(this,t,r);case"base64":return aO(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return fO(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Jn(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function um(e,t,r,n,o){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Zd(r=+r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if(typeof t=="string"&&(t=xe.from(t,n)),xe.isBuffer(t))return t.length===0?-1:cm(e,t,r,n,o);if(typeof t=="number")return t&=255,typeof Uint8Array.prototype.indexOf=="function"?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):cm(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function cm(e,t,r,n,o){var i,s=1,a=e.length,l=t.length;if(n!==void 0&&((n=String(n).toLowerCase())==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;s=2,a/=2,l/=2,r/=2}function u(g,_){return s===1?g[_]:g.readUInt16BE(_*s)}if(o){var c=-1;for(i=r;i<a;i++)if(u(e,i)===u(t,c===-1?0:i-c)){if(c===-1&&(c=i),i-c+1===l)return c*s}else c!==-1&&(i-=i-c),c=-1}else for(r+l>a&&(r=a-l),i=r;i>=0;i--){for(var d=!0,p=0;p<l;p++)if(u(e,i+p)!==u(t,p)){d=!1;break}if(d)return i}return-1}function rO(e,t,r,n){r=Number(r)||0;var o=e.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=t.length;n>i/2&&(n=i/2);for(var s=0;s<n;++s){var a=parseInt(t.substr(2*s,2),16);if(Zd(a))return s;e[r+s]=a}return s}function nO(e,t,r,n){return ru(yh(t,e.length-r),e,r,n)}function Vb(e,t,r,n){return ru(function(o){for(var i=[],s=0;s<o.length;++s)i.push(255&o.charCodeAt(s));return i}(t),e,r,n)}function iO(e,t,r,n){return Vb(e,t,r,n)}function oO(e,t,r,n){return ru(Yb(t),e,r,n)}function sO(e,t,r,n){return ru(function(o,i){for(var s,a,l,u=[],c=0;c<o.length&&!((i-=2)<0);++c)s=o.charCodeAt(c),a=s>>8,l=s%256,u.push(l),u.push(a);return u}(t,e.length-r),e,r,n)}function aO(e,t,r){return t===0&&r===e.length?fl.fromByteArray(e):fl.fromByteArray(e.slice(t,r))}function qb(e,t,r){r=Math.min(e.length,r);for(var n=[],o=t;o<r;){var i,s,a,l,u=e[o],c=null,d=u>239?4:u>223?3:u>191?2:1;if(o+d<=r)switch(d){case 1:u<128&&(c=u);break;case 2:(192&(i=e[o+1]))==128&&(l=(31&u)<<6|63&i)>127&&(c=l);break;case 3:i=e[o+1],s=e[o+2],(192&i)==128&&(192&s)==128&&(l=(15&u)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:i=e[o+1],s=e[o+2],a=e[o+3],(192&i)==128&&(192&s)==128&&(192&a)==128&&(l=(15&u)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(c=l)}c===null?(c=65533,d=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=d}return function(p){var g=p.length;if(g<=4096)return String.fromCharCode.apply(String,p);for(var _="",b=0;b<g;)_+=String.fromCharCode.apply(String,p.slice(b,b+=4096));return _}(n)}function lO(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(127&e[o]);return n}function uO(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(e[o]);return n}function cO(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var o="",i=t;i<r;++i)o+=Gb[e[i]];return o}function fO(e,t,r){for(var n=e.slice(t,r),o="",i=0;i<n.length;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function yt(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function Bt(e,t,r,n,o,i){if(!xe.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||t<i)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function Kb(e,t,r,n,o,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function fm(e,t,r,n,o){return t=+t,r>>>=0,o||Kb(e,0,r,4),ci.write(e,t,r,n,23,4),r+4}function hm(e,t,r,n,o){return t=+t,r>>>=0,o||Kb(e,0,r,8),ci.write(e,t,r,n,52,8),r+8}function yh(e,t){var r;t=t||1/0;for(var n=e.length,o=null,i=[],s=0;s<n;++s){if((r=e.charCodeAt(s))>55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function Yb(e){return fl.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(zb,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(e))}function ru(e,t,r,n){for(var o=0;o<n&&!(o+r>=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function Jr(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function Zd(e){return e!=e}function dm(e,t){for(var r in e)t[r]=e[r]}function Zn(e,t,r){return ur(e,t,r)}function Zo(e){var t;switch(this.encoding=function(r){var n=function(o){if(!o)return"utf8";for(var i;;)switch(o){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return o;default:if(i)return;o=(""+o).toLowerCase(),i=!0}}(r);if(typeof n!="string"&&(hl.isEncoding===_h||!_h(r)))throw new Error("Unknown encoding: "+r);return n||r}(e),this.encoding){case"utf16le":this.text=dO,this.end=pO,t=4;break;case"utf8":this.fillLast=hO,t=4;break;case"base64":this.text=gO,this.end=mO,t=3;break;default:return this.write=yO,this.end=_O,void 0}this.lastNeed=0,this.lastTotal=0,this.lastChar=hl.allocUnsafe(t)}function sc(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function hO(e){var t=this.lastTotal-this.lastNeed,r=function(n,o,i){if((192&o[0])!=128)return n.lastNeed=0,"�";if(n.lastNeed>1&&o.length>1){if((192&o[1])!=128)return n.lastNeed=1,"�";if(n.lastNeed>2&&o.length>2&&(192&o[2])!=128)return n.lastNeed=2,"�"}}(this,e);return r!==void 0?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length,void 0)}function dO(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function pO(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function gO(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function mO(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function yO(e){return e.toString(this.encoding)}function _O(e){return e&&e.length?this.write(e):""}var pm,hr,qt,gm,fa,ei,mm,ym,Sr,fl,ci,ac,zb,Gb,es,ts,ur,_m,ao,hl,_h,bm=vt(()=>{for(we(),Ee(),ve(),pm={byteLength:function(e){var t=lm(e),r=t[0],n=t[1];return 3*(r+n)/4-n},toByteArray:function(e){var t,r,n=lm(e),o=n[0],i=n[1],s=new gm(function(u,c,d){return 3*(c+d)/4-d}(0,o,i)),a=0,l=i>0?o-4:o;for(r=0;r<l;r+=4)t=qt[e.charCodeAt(r)]<<18|qt[e.charCodeAt(r+1)]<<12|qt[e.charCodeAt(r+2)]<<6|qt[e.charCodeAt(r+3)],s[a++]=t>>16&255,s[a++]=t>>8&255,s[a++]=255&t;return i===2&&(t=qt[e.charCodeAt(r)]<<2|qt[e.charCodeAt(r+1)]>>4,s[a++]=255&t),i===1&&(t=qt[e.charCodeAt(r)]<<10|qt[e.charCodeAt(r+1)]<<4|qt[e.charCodeAt(r+2)]>>2,s[a++]=t>>8&255,s[a++]=255&t),s},fromByteArray:function(e){for(var t,r=e.length,n=r%3,o=[],i=0,s=r-n;i<s;i+=16383)o.push(ZR(e,i,i+16383>s?s:i+16383));return n===1?(t=e[r-1],o.push(hr[t>>2]+hr[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],o.push(hr[t>>10]+hr[t>>4&63]+hr[t<<2&63]+"=")),o.join("")}},hr=[],qt=[],gm=typeof Uint8Array<"u"?Uint8Array:Array,fa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ei=0,mm=fa.length;ei<mm;++ei)hr[ei]=fa[ei],qt[fa.charCodeAt(ei)]=ei;qt[45]=62,qt[95]=63,ym={read:function(e,t,r,n,o){var i,s,a=8*o-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,g=e[t+d];for(d+=p,i=g&(1<<-c)-1,g>>=-c,c+=a;c>0;i=256*i+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=256*s+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:1/0*(g?-1:1);s+=Math.pow(2,n),i-=u}return(g?-1:1)*s*Math.pow(2,i-n)},write:function(e,t,r,n,o,i){var s,a,l,u=8*i-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+d>=1?p/l:p*Math.pow(2,1-d))*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s+=d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+g]=255&a,g+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+g]=255&s,g+=_,s/=256,u-=8);e[r+g-_]|=128*b}},Sr={},fl=pm,ci=ym,ac=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null,Sr.Buffer=xe,Sr.SlowBuffer=function(e){return+e!=e&&(e=0),xe.alloc(+e)},Sr.INSPECT_MAX_BYTES=50,Sr.kMaxLength=2147483647,xe.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch{return!1}}(),xe.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(xe.prototype,"parent",{enumerable:!0,get:function(){if(xe.isBuffer(this))return this.buffer}}),Object.defineProperty(xe.prototype,"offset",{enumerable:!0,get:function(){if(xe.isBuffer(this))return this.byteOffset}}),xe.poolSize=8192,xe.from=function(e,t,r){return jb(e,t,r)},Object.setPrototypeOf(xe.prototype,Uint8Array.prototype),Object.setPrototypeOf(xe,Uint8Array),xe.alloc=function(e,t,r){return function(n,o,i){return Wb(n),n<=0?Xr(n):o!==void 0?typeof i=="string"?Xr(n).fill(o,i):Xr(n).fill(o):Xr(n)}(e,t,r)},xe.allocUnsafe=function(e){return mh(e)},xe.allocUnsafeSlow=function(e){return mh(e)},xe.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==xe.prototype},xe.compare=function(e,t){if(Jr(e,Uint8Array)&&(e=xe.from(e,e.offset,e.byteLength)),Jr(t,Uint8Array)&&(t=xe.from(t,t.offset,t.byteLength)),!xe.isBuffer(e)||!xe.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,o=0,i=Math.min(r,n);o<i;++o)if(e[o]!==t[o]){r=e[o],n=t[o];break}return r<n?-1:n<r?1:0},xe.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},xe.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return xe.alloc(0);var r;if(t===void 0)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=xe.allocUnsafe(t),o=0;for(r=0;r<e.length;++r){var i=e[r];if(Jr(i,Uint8Array)&&(i=xe.from(i)),!xe.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,o),o+=i.length}return n},xe.byteLength=Hb,xe.prototype._isBuffer=!0,xe.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)Jn(this,t,t+1);return this},xe.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)Jn(this,t,t+3),Jn(this,t+1,t+2);return this},xe.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)Jn(this,t,t+7),Jn(this,t+1,t+6),Jn(this,t+2,t+5),Jn(this,t+3,t+4);return this},xe.prototype.toString=function(){var e=this.length;return e===0?"":arguments.length===0?qb(this,0,e):tO.apply(this,arguments)},xe.prototype.toLocaleString=xe.prototype.toString,xe.prototype.equals=function(e){if(!xe.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||xe.compare(this,e)===0},xe.prototype.inspect=function(){var e="",t=Sr.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},ac&&(xe.prototype[ac]=xe.prototype.inspect),xe.prototype.compare=function(e,t,r,n,o){if(Jr(e,Uint8Array)&&(e=xe.from(e,e.offset,e.byteLength)),!xe.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),r===void 0&&(r=e?e.length:0),n===void 0&&(n=0),o===void 0&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0),a=Math.min(i,s),l=this.slice(n,o),u=e.slice(t,r),c=0;c<a;++c)if(l[c]!==u[c]){i=l[c],s=u[c];break}return i<s?-1:s<i?1:0},xe.prototype.includes=function(e,t,r){return this.indexOf(e,t,r)!==-1},xe.prototype.indexOf=function(e,t,r){return um(this,e,t,r,!0)},xe.prototype.lastIndexOf=function(e,t,r){return um(this,e,t,r,!1)},xe.prototype.write=function(e,t,r,n){if(t===void 0)n="utf8",r=this.length,t=0;else if(r===void 0&&typeof t=="string")n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,n===void 0&&(n="utf8")):(n=r,r=void 0)}var o=this.length-t;if((r===void 0||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return rO(this,e,t,r);case"utf8":case"utf-8":return nO(this,e,t,r);case"ascii":return Vb(this,e,t,r);case"latin1":case"binary":return iO(this,e,t,r);case"base64":return oO(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return sO(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},xe.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},xe.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=t===void 0?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,xe.prototype),n},xe.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||yt(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n},xe.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||yt(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},xe.prototype.readUInt8=function(e,t){return e>>>=0,t||yt(e,1,this.length),this[e]},xe.prototype.readUInt16LE=function(e,t){return e>>>=0,t||yt(e,2,this.length),this[e]|this[e+1]<<8},xe.prototype.readUInt16BE=function(e,t){return e>>>=0,t||yt(e,2,this.length),this[e]<<8|this[e+1]},xe.prototype.readUInt32LE=function(e,t){return e>>>=0,t||yt(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},xe.prototype.readUInt32BE=function(e,t){return e>>>=0,t||yt(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},xe.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||yt(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n>=(o*=128)&&(n-=Math.pow(2,8*t)),n},xe.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||yt(e,t,this.length);for(var n=t,o=1,i=this[e+--n];n>0&&(o*=256);)i+=this[e+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},xe.prototype.readInt8=function(e,t){return e>>>=0,t||yt(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},xe.prototype.readInt16LE=function(e,t){e>>>=0,t||yt(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},xe.prototype.readInt16BE=function(e,t){e>>>=0,t||yt(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},xe.prototype.readInt32LE=function(e,t){return e>>>=0,t||yt(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},xe.prototype.readInt32BE=function(e,t){return e>>>=0,t||yt(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},xe.prototype.readFloatLE=function(e,t){return e>>>=0,t||yt(e,4,this.length),ci.read(this,e,!0,23,4)},xe.prototype.readFloatBE=function(e,t){return e>>>=0,t||yt(e,4,this.length),ci.read(this,e,!1,23,4)},xe.prototype.readDoubleLE=function(e,t){return e>>>=0,t||yt(e,8,this.length),ci.read(this,e,!0,52,8)},xe.prototype.readDoubleBE=function(e,t){return e>>>=0,t||yt(e,8,this.length),ci.read(this,e,!1,52,8)},xe.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||Bt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[t]=255&e;++i<r&&(o*=256);)this[t+i]=e/o&255;return t+r},xe.prototype.writeUIntBE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||Bt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+r},xe.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,1,255,0),this[t]=255&e,t+1},xe.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},xe.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},xe.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},xe.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},xe.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);Bt(this,e,t,r,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i<r&&(s*=256);)e<0&&a===0&&this[t+i-1]!==0&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+r},xe.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);Bt(this,e,t,r,o-1,-o)}var i=r-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&a===0&&this[t+i+1]!==0&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+r},xe.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},xe.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},xe.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},xe.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},xe.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},xe.prototype.writeFloatLE=function(e,t,r){return fm(this,e,t,!0,r)},xe.prototype.writeFloatBE=function(e,t,r){return fm(this,e,t,!1,r)},xe.prototype.writeDoubleLE=function(e,t,r){return hm(this,e,t,!0,r)},xe.prototype.writeDoubleBE=function(e,t,r){return hm(this,e,t,!1,r)},xe.prototype.copy=function(e,t,r,n){if(!xe.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||n===0||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var o=n-r;if(this===e&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(t,r,n);else if(this===e&&r<t&&t<n)for(var i=o-1;i>=0;--i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return o},xe.prototype.fill=function(e,t,r,n){if(typeof e=="string"){if(typeof t=="string"?(n=t,t=0,r=this.length):typeof r=="string"&&(n=r,r=this.length),n!==void 0&&typeof n!="string")throw new TypeError("encoding must be a string");if(typeof n=="string"&&!xe.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(e.length===1){var o=e.charCodeAt(0);(n==="utf8"&&o<128||n==="latin1")&&(e=o)}}else typeof e=="number"?e&=255:typeof e=="boolean"&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var i;if(t>>>=0,r=r===void 0?this.length:r>>>0,e||(e=0),typeof e=="number")for(i=t;i<r;++i)this[i]=e;else{var s=xe.isBuffer(e)?e:xe.from(e,n),a=s.length;if(a===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=s[i%a]}return this},zb=/[^+/0-9A-Za-z-_]/g,Gb=function(){for(var e=new Array(256),t=0;t<16;++t)for(var r=16*t,n=0;n<16;++n)e[r+n]="0123456789abcdef"[t]+"0123456789abcdef"[n];return e}(),Sr.Buffer,Sr.INSPECT_MAX_BYTES,Sr.kMaxLength,es={},ts=Sr,ur=ts.Buffer,ur.from&&ur.alloc&&ur.allocUnsafe&&ur.allocUnsafeSlow?es=ts:(dm(ts,es),es.Buffer=Zn),Zn.prototype=Object.create(ur.prototype),dm(ur,Zn),Zn.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ur(e,t,r)},Zn.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=ur(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n},Zn.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ur(e)},Zn.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ts.SlowBuffer(e)},_m=es,ao={},hl=_m.Buffer,_h=hl.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},ao.StringDecoder=Zo,Zo.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if((t=this.fillLast(e))===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""},Zo.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},Zo.prototype.text=function(e,t){var r=function(o,i,s){var a=i.length-1;if(a<s)return 0;var l=sc(i[a]);return l>=0?(l>0&&(o.lastNeed=l-1),l):--a<s||l===-2?0:(l=sc(i[a]))>=0?(l>0&&(o.lastNeed=l-2),l):--a<s||l===-2?0:(l=sc(i[a]))>=0?(l>0&&(l===2?l=0:o.lastNeed=l-3),l):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},Zo.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},ao.StringDecoder,ao.StringDecoder}),Qb={};$i(Qb,{StringDecoder:()=>Xb,default:()=>ao});var Xb,bO=vt(()=>{we(),Ee(),ve(),bm(),bm(),Xb=ao.StringDecoder}),Jb=Oe((e,t)=>{we(),Ee(),ve();var r=Ui(),{PromisePrototypeThen:n,SymbolAsyncIterator:o,SymbolIterator:i}=pt(),{Buffer:s}=(St(),ze(Et)),{ERR_INVALID_ARG_TYPE:a,ERR_STREAM_NULL_VALUES:l}=Ht().codes;function u(c,d,p){let g;if(typeof d=="string"||d instanceof s)return new c({objectMode:!0,...p,read(){this.push(d),this.push(null)}});let _;if(d&&d[o])_=!0,g=d[o]();else if(d&&d[i])_=!1,g=d[i]();else throw new a("iterable",["Iterable"],d);let b=new c({objectMode:!0,highWaterMark:1,...p}),x=!1;b._read=function(){x||(x=!0,R())},b._destroy=function(A,B){n(k(A),()=>r.nextTick(B,A),$=>r.nextTick(B,$||A))};async function k(A){let B=A!=null,$=typeof g.throw=="function";if(B&&$){let{value:I,done:P}=await g.throw(A);if(await I,P)return}if(typeof g.return=="function"){let{value:I}=await g.return();await I}}async function R(){for(;;){try{let{value:A,done:B}=_?await g.next():g.next();if(B)b.push(null);else{let $=A&&typeof A.then=="function"?await A:A;if($===null)throw x=!1,new l;if(b.push($))continue;x=!1}}catch(A){b.destroy(A)}break}}return b}t.exports=u}),nu=Oe((e,t)=>{we(),Ee(),ve();var r=Ui(),{ArrayPrototypeIndexOf:n,NumberIsInteger:o,NumberIsNaN:i,NumberParseInt:s,ObjectDefineProperties:a,ObjectKeys:l,ObjectSetPrototypeOf:u,Promise:c,SafeSet:d,SymbolAsyncIterator:p,Symbol:g}=pt();t.exports=F,F.ReadableState=pe;var{EventEmitter:_}=(Ho(),ze(Fi)),{Stream:b,prependListener:x}=Qd(),{Buffer:k}=(St(),ze(Et)),{addAbortSignal:R}=tu(),A=Kn(),B=ln().debuglog("stream",h=>{B=h}),$=JR(),I=Wo(),{getHighWaterMark:P,getDefaultHighWaterMark:W}=Xd(),{aggregateTwoErrors:Y,codes:{ERR_INVALID_ARG_TYPE:oe,ERR_METHOD_NOT_IMPLEMENTED:te,ERR_OUT_OF_RANGE:M,ERR_STREAM_PUSH_AFTER_EOF:L,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:ie}}=Ht(),{validateObject:re}=eu(),ae=g("kPaused"),{StringDecoder:se}=(bO(),ze(Qb)),Q=Jb();u(F.prototype,b.prototype),u(F,b);var he=()=>{},{errorOrDestroy:fe}=I;function pe(h,f,m){typeof m!="boolean"&&(m=f instanceof un()),this.objectMode=!!(h&&h.objectMode),m&&(this.objectMode=this.objectMode||!!(h&&h.readableObjectMode)),this.highWaterMark=h?P(this,h,"readableHighWaterMark",m):W(!1),this.buffer=new $,this.length=0,this.pipes=[],this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.constructed=!0,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this[ae]=null,this.errorEmitted=!1,this.emitClose=!h||h.emitClose!==!1,this.autoDestroy=!h||h.autoDestroy!==!1,this.destroyed=!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this.defaultEncoding=h&&h.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.multiAwaitDrain=!1,this.readingMore=!1,this.dataEmitted=!1,this.decoder=null,this.encoding=null,h&&h.encoding&&(this.decoder=new se(h.encoding),this.encoding=h.encoding)}function F(h){if(!(this instanceof F))return new F(h);let f=this instanceof un();this._readableState=new pe(h,this,f),h&&(typeof h.read=="function"&&(this._read=h.read),typeof h.destroy=="function"&&(this._destroy=h.destroy),typeof h.construct=="function"&&(this._construct=h.construct),h.signal&&!f&&R(h.signal,this)),b.call(this,h),I.construct(this,()=>{this._readableState.needReadable&&le(this,this._readableState)})}F.prototype.destroy=I.destroy,F.prototype._undestroy=I.undestroy,F.prototype._destroy=function(h,f){f(h)},F.prototype[_.captureRejectionSymbol]=function(h){this.destroy(h)},F.prototype.push=function(h,f){return ne(this,h,f,!1)},F.prototype.unshift=function(h,f){return ne(this,h,f,!0)};function ne(h,f,m,w){B("readableAddChunk",f);let v=h._readableState,C;if(v.objectMode||(typeof f=="string"?(m=m||v.defaultEncoding,v.encoding!==m&&(w&&v.encoding?f=k.from(f,m).toString(v.encoding):(f=k.from(f,m),m=""))):f instanceof k?m="":b._isUint8Array(f)?(f=b._uint8ArrayToBuffer(f),m=""):f!=null&&(C=new oe("chunk",["string","Buffer","Uint8Array"],f))),C)fe(h,C);else if(f===null)v.reading=!1,j(h,v);else if(v.objectMode||f&&f.length>0)if(w)if(v.endEmitted)fe(h,new ie);else{if(v.destroyed||v.errored)return!1;ge(h,v,f,!0)}else if(v.ended)fe(h,new L);else{if(v.destroyed||v.errored)return!1;v.reading=!1,v.decoder&&!m?(f=v.decoder.write(f),v.objectMode||f.length!==0?ge(h,v,f,!1):le(h,v)):ge(h,v,f,!1)}else w||(v.reading=!1,le(h,v));return!v.ended&&(v.length<v.highWaterMark||v.length===0)}function ge(h,f,m,w){f.flowing&&f.length===0&&!f.sync&&h.listenerCount("data")>0?(f.multiAwaitDrain?f.awaitDrainWriters.clear():f.awaitDrainWriters=null,f.dataEmitted=!0,h.emit("data",m)):(f.length+=f.objectMode?1:m.length,w?f.buffer.unshift(m):f.buffer.push(m),f.needReadable&&Z(h)),le(h,f)}F.prototype.isPaused=function(){let h=this._readableState;return h[ae]===!0||h.flowing===!1},F.prototype.setEncoding=function(h){let f=new se(h);this._readableState.decoder=f,this._readableState.encoding=this._readableState.decoder.encoding;let m=this._readableState.buffer,w="";for(let v of m)w+=f.write(v);return m.clear(),w!==""&&m.push(w),this._readableState.length=w.length,this};var Se=1073741824;function ye(h){if(h>Se)throw new M("size","<= 1GiB",h);return h--,h|=h>>>1,h|=h>>>2,h|=h>>>4,h|=h>>>8,h|=h>>>16,h++,h}function V(h,f){return h<=0||f.length===0&&f.ended?0:f.objectMode?1:i(h)?f.flowing&&f.length?f.buffer.first().length:f.length:h<=f.length?h:f.ended?f.length:0}F.prototype.read=function(h){B("read",h),h===void 0?h=NaN:o(h)||(h=s(h,10));let f=this._readableState,m=h;if(h>f.highWaterMark&&(f.highWaterMark=ye(h)),h!==0&&(f.emittedReadable=!1),h===0&&f.needReadable&&((f.highWaterMark!==0?f.length>=f.highWaterMark:f.length>0)||f.ended))return B("read: emitReadable",f.length,f.ended),f.length===0&&f.ended?z(this):Z(this),null;if(h=V(h,f),h===0&&f.ended)return f.length===0&&z(this),null;let w=f.needReadable;if(B("need readable",w),(f.length===0||f.length-h<f.highWaterMark)&&(w=!0,B("length less than watermark",w)),f.ended||f.reading||f.destroyed||f.errored||!f.constructed)w=!1,B("reading, ended or constructing",w);else if(w){B("do read"),f.reading=!0,f.sync=!0,f.length===0&&(f.needReadable=!0);try{this._read(f.highWaterMark)}catch(C){fe(this,C)}f.sync=!1,f.reading||(h=V(m,f))}let v;return h>0?v=K(h,f):v=null,v===null?(f.needReadable=f.length<=f.highWaterMark,h=0):(f.length-=h,f.multiAwaitDrain?f.awaitDrainWriters.clear():f.awaitDrainWriters=null),f.length===0&&(f.ended||(f.needReadable=!0),m!==h&&f.ended&&z(this)),v!==null&&!f.errorEmitted&&!f.closeEmitted&&(f.dataEmitted=!0,this.emit("data",v)),v};function j(h,f){if(B("onEofChunk"),!f.ended){if(f.decoder){let m=f.decoder.end();m&&m.length&&(f.buffer.push(m),f.length+=f.objectMode?1:m.length)}f.ended=!0,f.sync?Z(h):(f.needReadable=!1,f.emittedReadable=!0,ue(h))}}function Z(h){let f=h._readableState;B("emitReadable",f.needReadable,f.emittedReadable),f.needReadable=!1,f.emittedReadable||(B("emitReadable",f.flowing),f.emittedReadable=!0,r.nextTick(ue,h))}function ue(h){let f=h._readableState;B("emitReadable_",f.destroyed,f.length,f.ended),!f.destroyed&&!f.errored&&(f.length||f.ended)&&(h.emit("readable"),f.emittedReadable=!1),f.needReadable=!f.flowing&&!f.ended&&f.length<=f.highWaterMark,ee(h)}function le(h,f){!f.readingMore&&f.constructed&&(f.readingMore=!0,r.nextTick(X,h,f))}function X(h,f){for(;!f.reading&&!f.ended&&(f.length<f.highWaterMark||f.flowing&&f.length===0);){let m=f.length;if(B("maybeReadMore read 0"),h.read(0),m===f.length)break}f.readingMore=!1}F.prototype._read=function(h){throw new te("_read()")},F.prototype.pipe=function(h,f){let m=this,w=this._readableState;w.pipes.length===1&&(w.multiAwaitDrain||(w.multiAwaitDrain=!0,w.awaitDrainWriters=new d(w.awaitDrainWriters?[w.awaitDrainWriters]:[]))),w.pipes.push(h),B("pipe count=%d opts=%j",w.pipes.length,f);let v=(!f||f.end!==!1)&&h!==r.stdout&&h!==r.stderr?H:mt;w.endEmitted?r.nextTick(v):m.once("end",v),h.on("unpipe",C);function C(st,at){B("onunpipe"),st===m&&at&&at.hasUnpiped===!1&&(at.hasUnpiped=!0,_e())}function H(){B("onend"),h.end()}let de,me=!1;function _e(){B("cleanup"),h.removeListener("close",Tt),h.removeListener("finish",He),de&&h.removeListener("drain",de),h.removeListener("error",Ze),h.removeListener("unpipe",C),m.removeListener("end",H),m.removeListener("end",mt),m.removeListener("data",ke),me=!0,de&&w.awaitDrainWriters&&(!h._writableState||h._writableState.needDrain)&&de()}function Ae(){me||(w.pipes.length===1&&w.pipes[0]===h?(B("false write response, pause",0),w.awaitDrainWriters=h,w.multiAwaitDrain=!1):w.pipes.length>1&&w.pipes.includes(h)&&(B("false write response, pause",w.awaitDrainWriters.size),w.awaitDrainWriters.add(h)),m.pause()),de||(de=E(m,h),h.on("drain",de))}m.on("data",ke);function ke(st){B("ondata");let at=h.write(st);B("dest.write",at),at===!1&&Ae()}function Ze(st){if(B("onerror",st),mt(),h.removeListener("error",Ze),h.listenerCount("error")===0){let at=h._writableState||h._readableState;at&&!at.errorEmitted?fe(h,st):h.emit("error",st)}}x(h,"error",Ze);function Tt(){h.removeListener("finish",He),mt()}h.once("close",Tt);function He(){B("onfinish"),h.removeListener("close",Tt),mt()}h.once("finish",He);function mt(){B("unpipe"),m.unpipe(h)}return h.emit("pipe",m),h.writableNeedDrain===!0?w.flowing&&Ae():w.flowing||(B("pipe resume"),m.resume()),h};function E(h,f){return function(){let m=h._readableState;m.awaitDrainWriters===f?(B("pipeOnDrain",1),m.awaitDrainWriters=null):m.multiAwaitDrain&&(B("pipeOnDrain",m.awaitDrainWriters.size),m.awaitDrainWriters.delete(f)),(!m.awaitDrainWriters||m.awaitDrainWriters.size===0)&&h.listenerCount("data")&&h.resume()}}F.prototype.unpipe=function(h){let f=this._readableState,m={hasUnpiped:!1};if(f.pipes.length===0)return this;if(!h){let v=f.pipes;f.pipes=[],this.pause();for(let C=0;C<v.length;C++)v[C].emit("unpipe",this,{hasUnpiped:!1});return this}let w=n(f.pipes,h);return w===-1?this:(f.pipes.splice(w,1),f.pipes.length===0&&this.pause(),h.emit("unpipe",this,m),this)},F.prototype.on=function(h,f){let m=b.prototype.on.call(this,h,f),w=this._readableState;return h==="data"?(w.readableListening=this.listenerCount("readable")>0,w.flowing!==!1&&this.resume()):h==="readable"&&!w.endEmitted&&!w.readableListening&&(w.readableListening=w.needReadable=!0,w.flowing=!1,w.emittedReadable=!1,B("on readable",w.length,w.reading),w.length?Z(this):w.reading||r.nextTick(S,this)),m},F.prototype.addListener=F.prototype.on,F.prototype.removeListener=function(h,f){let m=b.prototype.removeListener.call(this,h,f);return h==="readable"&&r.nextTick(T,this),m},F.prototype.off=F.prototype.removeListener,F.prototype.removeAllListeners=function(h){let f=b.prototype.removeAllListeners.apply(this,arguments);return(h==="readable"||h===void 0)&&r.nextTick(T,this),f};function T(h){let f=h._readableState;f.readableListening=h.listenerCount("readable")>0,f.resumeScheduled&&f[ae]===!1?f.flowing=!0:h.listenerCount("data")>0?h.resume():f.readableListening||(f.flowing=null)}function S(h){B("readable nexttick read 0"),h.read(0)}F.prototype.resume=function(){let h=this._readableState;return h.flowing||(B("resume"),h.flowing=!h.readableListening,O(this,h)),h[ae]=!1,this};function O(h,f){f.resumeScheduled||(f.resumeScheduled=!0,r.nextTick(N,h,f))}function N(h,f){B("resume",f.reading),f.reading||h.read(0),f.resumeScheduled=!1,h.emit("resume"),ee(h),f.flowing&&!f.reading&&h.read(0)}F.prototype.pause=function(){return B("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(B("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[ae]=!0,this};function ee(h){let f=h._readableState;for(B("flow",f.flowing);f.flowing&&h.read()!==null;);}F.prototype.wrap=function(h){let f=!1;h.on("data",w=>{!this.push(w)&&h.pause&&(f=!0,h.pause())}),h.on("end",()=>{this.push(null)}),h.on("error",w=>{fe(this,w)}),h.on("close",()=>{this.destroy()}),h.on("destroy",()=>{this.destroy()}),this._read=()=>{f&&h.resume&&(f=!1,h.resume())};let m=l(h);for(let w=1;w<m.length;w++){let v=m[w];this[v]===void 0&&typeof h[v]=="function"&&(this[v]=h[v].bind(h))}return this},F.prototype[p]=function(){return J(this)},F.prototype.iterator=function(h){return h!==void 0&&re(h,"options"),J(this,h)};function J(h,f){typeof h.read!="function"&&(h=F.wrap(h,{objectMode:!0}));let m=D(h,f);return m.stream=h,m}async function*D(h,f){let m=he;function w(H){this===h?(m(),m=he):m=H}h.on("readable",w);let v,C=A(h,{writable:!1},H=>{v=H?Y(v,H):null,m(),m=he});try{for(;;){let H=h.destroyed?null:h.read();if(H!==null)yield H;else{if(v)throw v;if(v===null)return;await new c(w)}}}catch(H){throw v=Y(v,H),v}finally{(v||(f==null?void 0:f.destroyOnReturn)!==!1)&&(v===void 0||h._readableState.autoDestroy)?I.destroyer(h,null):(h.off("readable",w),C())}}a(F.prototype,{readable:{__proto__:null,get(){let h=this._readableState;return!!h&&h.readable!==!1&&!h.destroyed&&!h.errorEmitted&&!h.endEmitted},set(h){this._readableState&&(this._readableState.readable=!!h)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(h){this._readableState&&(this._readableState.flowing=h)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(h){this._readableState&&(this._readableState.destroyed=h)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),a(pe.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[ae]!==!1},set(h){this[ae]=!!h}}}),F._fromList=K;function K(h,f){if(f.length===0)return null;let m;return f.objectMode?m=f.buffer.shift():!h||h>=f.length?(f.decoder?m=f.buffer.join(""):f.buffer.length===1?m=f.buffer.first():m=f.buffer.concat(f.length),f.buffer.clear()):m=f.buffer.consume(h,f.decoder),m}function z(h){let f=h._readableState;B("endReadable",f.endEmitted),f.endEmitted||(f.ended=!0,r.nextTick(ce,f,h))}function ce(h,f){if(B("endReadableNT",h.endEmitted,h.length),!h.errored&&!h.closeEmitted&&!h.endEmitted&&h.length===0){if(h.endEmitted=!0,f.emit("end"),f.writable&&f.allowHalfOpen===!1)r.nextTick(be,f);else if(h.autoDestroy){let m=f._writableState;(!m||m.autoDestroy&&(m.finished||m.writable===!1))&&f.destroy()}}}function be(h){h.writable&&!h.writableEnded&&!h.destroyed&&h.end()}F.from=function(h,f){return Q(F,h,f)};var Te;function y(){return Te===void 0&&(Te={}),Te}F.fromWeb=function(h,f){return y().newStreamReadableFromReadableStream(h,f)},F.toWeb=function(h,f){return y().newReadableStreamFromStreamReadable(h,f)},F.wrap=function(h,f){var m,w;return new F({objectMode:(m=(w=h.readableObjectMode)!==null&&w!==void 0?w:h.objectMode)!==null&&m!==void 0?m:!0,...f,destroy(v,C){I.destroyer(h,v),C(v)}}).wrap(h)}}),Zb=Oe((e,t)=>{we(),Ee(),ve();var r=Ui(),{ArrayPrototypeSlice:n,Error:o,FunctionPrototypeSymbolHasInstance:i,ObjectDefineProperty:s,ObjectDefineProperties:a,ObjectSetPrototypeOf:l,StringPrototypeToLowerCase:u,Symbol:c,SymbolHasInstance:d}=pt();t.exports=se,se.WritableState=re;var{EventEmitter:p}=(Ho(),ze(Fi)),g=Qd().Stream,{Buffer:_}=(St(),ze(Et)),b=Wo(),{addAbortSignal:x}=tu(),{getHighWaterMark:k,getDefaultHighWaterMark:R}=Xd(),{ERR_INVALID_ARG_TYPE:A,ERR_METHOD_NOT_IMPLEMENTED:B,ERR_MULTIPLE_CALLBACK:$,ERR_STREAM_CANNOT_PIPE:I,ERR_STREAM_DESTROYED:P,ERR_STREAM_ALREADY_FINISHED:W,ERR_STREAM_NULL_VALUES:Y,ERR_STREAM_WRITE_AFTER_END:oe,ERR_UNKNOWN_ENCODING:te}=Ht().codes,{errorOrDestroy:M}=b;l(se.prototype,g.prototype),l(se,g);function L(){}var ie=c("kOnFinished");function re(S,O,N){typeof N!="boolean"&&(N=O instanceof un()),this.objectMode=!!(S&&S.objectMode),N&&(this.objectMode=this.objectMode||!!(S&&S.writableObjectMode)),this.highWaterMark=S?k(this,S,"writableHighWaterMark",N):R(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let ee=!!(S&&S.decodeStrings===!1);this.decodeStrings=!ee,this.defaultEncoding=S&&S.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=F.bind(void 0,O),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,ae(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!S||S.emitClose!==!1,this.autoDestroy=!S||S.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[ie]=[]}function ae(S){S.buffered=[],S.bufferedIndex=0,S.allBuffers=!0,S.allNoop=!0}re.prototype.getBuffer=function(){return n(this.buffered,this.bufferedIndex)},s(re.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function se(S){let O=this instanceof un();if(!O&&!i(se,this))return new se(S);this._writableState=new re(S,this,O),S&&(typeof S.write=="function"&&(this._write=S.write),typeof S.writev=="function"&&(this._writev=S.writev),typeof S.destroy=="function"&&(this._destroy=S.destroy),typeof S.final=="function"&&(this._final=S.final),typeof S.construct=="function"&&(this._construct=S.construct),S.signal&&x(S.signal,this)),g.call(this,S),b.construct(this,()=>{let N=this._writableState;N.writing||ye(this,N),ue(this,N)})}s(se,d,{__proto__:null,value:function(S){return i(this,S)?!0:this!==se?!1:S&&S._writableState instanceof re}}),se.prototype.pipe=function(){M(this,new I)};function Q(S,O,N,ee){let J=S._writableState;if(typeof N=="function")ee=N,N=J.defaultEncoding;else{if(!N)N=J.defaultEncoding;else if(N!=="buffer"&&!_.isEncoding(N))throw new te(N);typeof ee!="function"&&(ee=L)}if(O===null)throw new Y;if(!J.objectMode)if(typeof O=="string")J.decodeStrings!==!1&&(O=_.from(O,N),N="buffer");else if(O instanceof _)N="buffer";else if(g._isUint8Array(O))O=g._uint8ArrayToBuffer(O),N="buffer";else throw new A("chunk",["string","Buffer","Uint8Array"],O);let D;return J.ending?D=new oe:J.destroyed&&(D=new P("write")),D?(r.nextTick(ee,D),M(S,D,!0),D):(J.pendingcb++,he(S,J,O,N,ee))}se.prototype.write=function(S,O,N){return Q(this,S,O,N)===!0},se.prototype.cork=function(){this._writableState.corked++},se.prototype.uncork=function(){let S=this._writableState;S.corked&&(S.corked--,S.writing||ye(this,S))},se.prototype.setDefaultEncoding=function(S){if(typeof S=="string"&&(S=u(S)),!_.isEncoding(S))throw new te(S);return this._writableState.defaultEncoding=S,this};function he(S,O,N,ee,J){let D=O.objectMode?1:N.length;O.length+=D;let K=O.length<O.highWaterMark;return K||(O.needDrain=!0),O.writing||O.corked||O.errored||!O.constructed?(O.buffered.push({chunk:N,encoding:ee,callback:J}),O.allBuffers&&ee!=="buffer"&&(O.allBuffers=!1),O.allNoop&&J!==L&&(O.allNoop=!1)):(O.writelen=D,O.writecb=J,O.writing=!0,O.sync=!0,S._write(N,ee,O.onwrite),O.sync=!1),K&&!O.errored&&!O.destroyed}function fe(S,O,N,ee,J,D,K){O.writelen=ee,O.writecb=K,O.writing=!0,O.sync=!0,O.destroyed?O.onwrite(new P("write")):N?S._writev(J,O.onwrite):S._write(J,D,O.onwrite),O.sync=!1}function pe(S,O,N,ee){--O.pendingcb,ee(N),Se(O),M(S,N)}function F(S,O){let N=S._writableState,ee=N.sync,J=N.writecb;if(typeof J!="function"){M(S,new $);return}N.writing=!1,N.writecb=null,N.length-=N.writelen,N.writelen=0,O?(O.stack,N.errored||(N.errored=O),S._readableState&&!S._readableState.errored&&(S._readableState.errored=O),ee?r.nextTick(pe,S,N,O,J):pe(S,N,O,J)):(N.buffered.length>N.bufferedIndex&&ye(S,N),ee?N.afterWriteTickInfo!==null&&N.afterWriteTickInfo.cb===J?N.afterWriteTickInfo.count++:(N.afterWriteTickInfo={count:1,cb:J,stream:S,state:N},r.nextTick(ne,N.afterWriteTickInfo)):ge(S,N,1,J))}function ne({stream:S,state:O,count:N,cb:ee}){return O.afterWriteTickInfo=null,ge(S,O,N,ee)}function ge(S,O,N,ee){for(!O.ending&&!S.destroyed&&O.length===0&&O.needDrain&&(O.needDrain=!1,S.emit("drain"));N-- >0;)O.pendingcb--,ee();O.destroyed&&Se(O),ue(S,O)}function Se(S){if(S.writing)return;for(let J=S.bufferedIndex;J<S.buffered.length;++J){var O;let{chunk:D,callback:K}=S.buffered[J],z=S.objectMode?1:D.length;S.length-=z,K((O=S.errored)!==null&&O!==void 0?O:new P("write"))}let N=S[ie].splice(0);for(let J=0;J<N.length;J++){var ee;N[J]((ee=S.errored)!==null&&ee!==void 0?ee:new P("end"))}ae(S)}function ye(S,O){if(O.corked||O.bufferProcessing||O.destroyed||!O.constructed)return;let{buffered:N,bufferedIndex:ee,objectMode:J}=O,D=N.length-ee;if(!D)return;let K=ee;if(O.bufferProcessing=!0,D>1&&S._writev){O.pendingcb-=D-1;let z=O.allNoop?L:be=>{for(let Te=K;Te<N.length;++Te)N[Te].callback(be)},ce=O.allNoop&&K===0?N:n(N,K);ce.allBuffers=O.allBuffers,fe(S,O,!0,O.length,ce,"",z),ae(O)}else{do{let{chunk:z,encoding:ce,callback:be}=N[K];N[K++]=null;let Te=J?1:z.length;fe(S,O,!1,Te,z,ce,be)}while(K<N.length&&!O.writing);K===N.length?ae(O):K>256?(N.splice(0,K),O.bufferedIndex=0):O.bufferedIndex=K}O.bufferProcessing=!1}se.prototype._write=function(S,O,N){if(this._writev)this._writev([{chunk:S,encoding:O}],N);else throw new B("_write()")},se.prototype._writev=null,se.prototype.end=function(S,O,N){let ee=this._writableState;typeof S=="function"?(N=S,S=null,O=null):typeof O=="function"&&(N=O,O=null);let J;if(S!=null){let D=Q(this,S,O);D instanceof o&&(J=D)}return ee.corked&&(ee.corked=1,this.uncork()),J||(!ee.errored&&!ee.ending?(ee.ending=!0,ue(this,ee,!0),ee.ended=!0):ee.finished?J=new W("end"):ee.destroyed&&(J=new P("end"))),typeof N=="function"&&(J||ee.finished?r.nextTick(N,J):ee[ie].push(N)),this};function V(S){return S.ending&&!S.destroyed&&S.constructed&&S.length===0&&!S.errored&&S.buffered.length===0&&!S.finished&&!S.writing&&!S.errorEmitted&&!S.closeEmitted}function j(S,O){let N=!1;function ee(J){if(N){M(S,J??$());return}if(N=!0,O.pendingcb--,J){let D=O[ie].splice(0);for(let K=0;K<D.length;K++)D[K](J);M(S,J,O.sync)}else V(O)&&(O.prefinished=!0,S.emit("prefinish"),O.pendingcb++,r.nextTick(le,S,O))}O.sync=!0,O.pendingcb++;try{S._final(ee)}catch(J){ee(J)}O.sync=!1}function Z(S,O){!O.prefinished&&!O.finalCalled&&(typeof S._final=="function"&&!O.destroyed?(O.finalCalled=!0,j(S,O)):(O.prefinished=!0,S.emit("prefinish")))}function ue(S,O,N){V(O)&&(Z(S,O),O.pendingcb===0&&(N?(O.pendingcb++,r.nextTick((ee,J)=>{V(J)?le(ee,J):J.pendingcb--},S,O)):V(O)&&(O.pendingcb++,le(S,O))))}function le(S,O){O.pendingcb--,O.finished=!0;let N=O[ie].splice(0);for(let ee=0;ee<N.length;ee++)N[ee]();if(S.emit("finish"),O.autoDestroy){let ee=S._readableState;(!ee||ee.autoDestroy&&(ee.endEmitted||ee.readable===!1))&&S.destroy()}}a(se.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(S){this._writableState&&(this._writableState.destroyed=S)}},writable:{__proto__:null,get(){let S=this._writableState;return!!S&&S.writable!==!1&&!S.destroyed&&!S.errored&&!S.ending&&!S.ended},set(S){this._writableState&&(this._writableState.writable=!!S)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){let S=this._writableState;return S?!S.destroyed&&!S.ending&&S.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});var X=b.destroy;se.prototype.destroy=function(S,O){let N=this._writableState;return!N.destroyed&&(N.bufferedIndex<N.buffered.length||N[ie].length)&&r.nextTick(Se,N),X.call(this,S,O),this},se.prototype._undestroy=b.undestroy,se.prototype._destroy=function(S,O){O(S)},se.prototype[p.captureRejectionSymbol]=function(S){this.destroy(S)};var E;function T(){return E===void 0&&(E={}),E}se.fromWeb=function(S,O){return T().newStreamWritableFromWritableStream(S,O)},se.toWeb=function(S){return T().newWritableStreamFromStreamWritable(S)}}),wO=Oe((e,t)=>{we(),Ee(),ve();var r=Ui(),n=(St(),ze(Et)),{isReadable:o,isWritable:i,isIterable:s,isNodeStream:a,isReadableNodeStream:l,isWritableNodeStream:u,isDuplexNodeStream:c}=_n(),d=Kn(),{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:g,ERR_INVALID_RETURN_VALUE:_}}=Ht(),{destroyer:b}=Wo(),x=un(),k=nu(),{createDeferredPromise:R}=ln(),A=Jb(),B=globalThis.Blob||n.Blob,$=typeof B<"u"?function(te){return te instanceof B}:function(te){return!1},I=globalThis.AbortController||Gd().AbortController,{FunctionPrototypeCall:P}=pt(),W=class extends x{constructor(te){super(te),(te==null?void 0:te.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(te==null?void 0:te.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}};t.exports=function te(M,L){if(c(M))return M;if(l(M))return oe({readable:M});if(u(M))return oe({writable:M});if(a(M))return oe({writable:!1,readable:!1});if(typeof M=="function"){let{value:re,write:ae,final:se,destroy:Q}=Y(M);if(s(re))return A(W,re,{objectMode:!0,write:ae,final:se,destroy:Q});let he=re==null?void 0:re.then;if(typeof he=="function"){let fe,pe=P(he,re,F=>{if(F!=null)throw new _("nully","body",F)},F=>{b(fe,F)});return fe=new W({objectMode:!0,readable:!1,write:ae,final(F){se(async()=>{try{await pe,r.nextTick(F,null)}catch(ne){r.nextTick(F,ne)}})},destroy:Q})}throw new _("Iterable, AsyncIterable or AsyncFunction",L,re)}if($(M))return te(M.arrayBuffer());if(s(M))return A(W,M,{objectMode:!0,writable:!1});if(typeof(M==null?void 0:M.writable)=="object"||typeof(M==null?void 0:M.readable)=="object"){let re=M!=null&&M.readable?l(M==null?void 0:M.readable)?M==null?void 0:M.readable:te(M.readable):void 0,ae=M!=null&&M.writable?u(M==null?void 0:M.writable)?M==null?void 0:M.writable:te(M.writable):void 0;return oe({readable:re,writable:ae})}let ie=M==null?void 0:M.then;if(typeof ie=="function"){let re;return P(ie,M,ae=>{ae!=null&&re.push(ae),re.push(null)},ae=>{b(re,ae)}),re=new W({objectMode:!0,writable:!1,read(){}})}throw new g(L,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],M)};function Y(te){let{promise:M,resolve:L}=R(),ie=new I,re=ie.signal;return{value:te(async function*(){for(;;){let ae=M;M=null;let{chunk:se,done:Q,cb:he}=await ae;if(r.nextTick(he),Q)return;if(re.aborted)throw new p(void 0,{cause:re.reason});({promise:M,resolve:L}=R()),yield se}}(),{signal:re}),write(ae,se,Q){let he=L;L=null,he({chunk:ae,done:!1,cb:Q})},final(ae){let se=L;L=null,se({done:!0,cb:ae})},destroy(ae,se){ie.abort(),se(ae)}}}function oe(te){let M=te.readable&&typeof te.readable.read!="function"?k.wrap(te.readable):te.readable,L=te.writable,ie=!!o(M),re=!!i(L),ae,se,Q,he,fe;function pe(F){let ne=he;he=null,ne?ne(F):F&&fe.destroy(F)}return fe=new W({readableObjectMode:!!(M!=null&&M.readableObjectMode),writableObjectMode:!!(L!=null&&L.writableObjectMode),readable:ie,writable:re}),re&&(d(L,F=>{re=!1,F&&b(M,F),pe(F)}),fe._write=function(F,ne,ge){L.write(F,ne)?ge():ae=ge},fe._final=function(F){L.end(),se=F},L.on("drain",function(){if(ae){let F=ae;ae=null,F()}}),L.on("finish",function(){if(se){let F=se;se=null,F()}})),ie&&(d(M,F=>{ie=!1,F&&b(M,F),pe(F)}),M.on("readable",function(){if(Q){let F=Q;Q=null,F()}}),M.on("end",function(){fe.push(null)}),fe._read=function(){for(;;){let F=M.read();if(F===null){Q=fe._read;return}if(!fe.push(F))return}}),fe._destroy=function(F,ne){!F&&he!==null&&(F=new p),Q=null,ae=null,se=null,he===null?ne(F):(he=ne,b(L,F),b(M,F))},fe}}),un=Oe((e,t)=>{we(),Ee(),ve();var{ObjectDefineProperties:r,ObjectGetOwnPropertyDescriptor:n,ObjectKeys:o,ObjectSetPrototypeOf:i}=pt();t.exports=l;var s=nu(),a=Zb();i(l.prototype,s.prototype),i(l,s);{let p=o(a.prototype);for(let g=0;g<p.length;g++){let _=p[g];l.prototype[_]||(l.prototype[_]=a.prototype[_])}}function l(p){if(!(this instanceof l))return new l(p);s.call(this,p),a.call(this,p),p?(this.allowHalfOpen=p.allowHalfOpen!==!1,p.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),p.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}r(l.prototype,{writable:{__proto__:null,...n(a.prototype,"writable")},writableHighWaterMark:{__proto__:null,...n(a.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...n(a.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...n(a.prototype,"writableBuffer")},writableLength:{__proto__:null,...n(a.prototype,"writableLength")},writableFinished:{__proto__:null,...n(a.prototype,"writableFinished")},writableCorked:{__proto__:null,...n(a.prototype,"writableCorked")},writableEnded:{__proto__:null,...n(a.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...n(a.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(p){this._readableState&&this._writableState&&(this._readableState.destroyed=p,this._writableState.destroyed=p)}}});var u;function c(){return u===void 0&&(u={}),u}l.fromWeb=function(p,g){return c().newStreamDuplexFromReadableWritablePair(p,g)},l.toWeb=function(p){return c().newReadableWritablePairFromDuplex(p)};var d;l.from=function(p){return d||(d=wO()),d(p,"body")}}),ew=Oe((e,t)=>{we(),Ee(),ve();var{ObjectSetPrototypeOf:r,Symbol:n}=pt();t.exports=l;var{ERR_METHOD_NOT_IMPLEMENTED:o}=Ht().codes,i=un(),{getHighWaterMark:s}=Xd();r(l.prototype,i.prototype),r(l,i);var a=n("kCallback");function l(d){if(!(this instanceof l))return new l(d);let p=d?s(this,d,"readableHighWaterMark",!0):null;p===0&&(d={...d,highWaterMark:null,readableHighWaterMark:p,writableHighWaterMark:d.writableHighWaterMark||0}),i.call(this,d),this._readableState.sync=!1,this[a]=null,d&&(typeof d.transform=="function"&&(this._transform=d.transform),typeof d.flush=="function"&&(this._flush=d.flush)),this.on("prefinish",c)}function u(d){typeof this._flush=="function"&&!this.destroyed?this._flush((p,g)=>{if(p){d?d(p):this.destroy(p);return}g!=null&&this.push(g),this.push(null),d&&d()}):(this.push(null),d&&d())}function c(){this._final!==u&&u.call(this)}l.prototype._final=u,l.prototype._transform=function(d,p,g){throw new o("_transform()")},l.prototype._write=function(d,p,g){let _=this._readableState,b=this._writableState,x=_.length;this._transform(d,p,(k,R)=>{if(k){g(k);return}R!=null&&this.push(R),b.ended||x===_.length||_.length<_.highWaterMark?g():this[a]=g})},l.prototype._read=function(){if(this[a]){let d=this[a];this[a]=null,d()}}}),tw=Oe((e,t)=>{we(),Ee(),ve();var{ObjectSetPrototypeOf:r}=pt();t.exports=o;var n=ew();r(o.prototype,n.prototype),r(o,n);function o(i){if(!(this instanceof o))return new o(i);n.call(this,i)}o.prototype._transform=function(i,s,a){a(null,i)}}),ep=Oe((e,t)=>{we(),Ee(),ve();var r=Ui(),{ArrayIsArray:n,Promise:o,SymbolAsyncIterator:i}=pt(),s=Kn(),{once:a}=ln(),l=Wo(),u=un(),{aggregateTwoErrors:c,codes:{ERR_INVALID_ARG_TYPE:d,ERR_INVALID_RETURN_VALUE:p,ERR_MISSING_ARGS:g,ERR_STREAM_DESTROYED:_,ERR_STREAM_PREMATURE_CLOSE:b},AbortError:x}=Ht(),{validateFunction:k,validateAbortSignal:R}=eu(),{isIterable:A,isReadable:B,isReadableNodeStream:$,isNodeStream:I,isTransformStream:P,isWebStream:W,isReadableStream:Y,isReadableEnded:oe}=_n(),te=globalThis.AbortController||Gd().AbortController,M,L;function ie(ne,ge,Se){let ye=!1;ne.on("close",()=>{ye=!0});let V=s(ne,{readable:ge,writable:Se},j=>{ye=!j});return{destroy:j=>{ye||(ye=!0,l.destroyer(ne,j||new _("pipe")))},cleanup:V}}function re(ne){return k(ne[ne.length-1],"streams[stream.length - 1]"),ne.pop()}function ae(ne){if(A(ne))return ne;if($(ne))return se(ne);throw new d("val",["Readable","Iterable","AsyncIterable"],ne)}async function*se(ne){L||(L=nu()),yield*L.prototype[i].call(ne)}async function Q(ne,ge,Se,{end:ye}){let V,j=null,Z=X=>{if(X&&(V=X),j){let E=j;j=null,E()}},ue=()=>new o((X,E)=>{V?E(V):j=()=>{V?E(V):X()}});ge.on("drain",Z);let le=s(ge,{readable:!1},Z);try{ge.writableNeedDrain&&await ue();for await(let X of ne)ge.write(X)||await ue();ye&&ge.end(),await ue(),Se()}catch(X){Se(V!==X?c(V,X):X)}finally{le(),ge.off("drain",Z)}}async function he(ne,ge,Se,{end:ye}){P(ge)&&(ge=ge.writable);let V=ge.getWriter();try{for await(let j of ne)await V.ready,V.write(j).catch(()=>{});await V.ready,ye&&await V.close(),Se()}catch(j){try{await V.abort(j),Se(j)}catch(Z){Se(Z)}}}function fe(...ne){return pe(ne,a(re(ne)))}function pe(ne,ge,Se){if(ne.length===1&&n(ne[0])&&(ne=ne[0]),ne.length<2)throw new g("streams");let ye=new te,V=ye.signal,j=Se==null?void 0:Se.signal,Z=[];R(j,"options.signal");function ue(){O(new x)}j==null||j.addEventListener("abort",ue);let le,X,E=[],T=0;function S(D){O(D,--T===0)}function O(D,K){if(D&&(!le||le.code==="ERR_STREAM_PREMATURE_CLOSE")&&(le=D),!(!le&&!K)){for(;E.length;)E.shift()(le);j==null||j.removeEventListener("abort",ue),ye.abort(),K&&(le||Z.forEach(z=>z()),r.nextTick(ge,le,X))}}let N;for(let D=0;D<ne.length;D++){let K=ne[D],z=D<ne.length-1,ce=D>0,be=z||(Se==null?void 0:Se.end)!==!1,Te=D===ne.length-1;if(I(K)){let y=function(h){h&&h.name!=="AbortError"&&h.code!=="ERR_STREAM_PREMATURE_CLOSE"&&S(h)};if(be){let{destroy:h,cleanup:f}=ie(K,z,ce);E.push(h),B(K)&&Te&&Z.push(f)}K.on("error",y),B(K)&&Te&&Z.push(()=>{K.removeListener("error",y)})}if(D===0)if(typeof K=="function"){if(N=K({signal:V}),!A(N))throw new p("Iterable, AsyncIterable or Stream","source",N)}else A(K)||$(K)||P(K)?N=K:N=u.from(K);else if(typeof K=="function"){if(P(N)){var ee;N=ae((ee=N)===null||ee===void 0?void 0:ee.readable)}else N=ae(N);if(N=K(N,{signal:V}),z){if(!A(N,!0))throw new p("AsyncIterable",`transform[${D-1}]`,N)}else{var J;M||(M=tw());let y=new M({objectMode:!0}),h=(J=N)===null||J===void 0?void 0:J.then;if(typeof h=="function")T++,h.call(N,w=>{X=w,w!=null&&y.write(w),be&&y.end(),r.nextTick(S)},w=>{y.destroy(w),r.nextTick(S,w)});else if(A(N,!0))T++,Q(N,y,S,{end:be});else if(Y(N)||P(N)){let w=N.readable||N;T++,Q(w,y,S,{end:be})}else throw new p("AsyncIterable or Promise","destination",N);N=y;let{destroy:f,cleanup:m}=ie(N,!1,!0);E.push(f),Te&&Z.push(m)}}else if(I(K)){if($(N)){T+=2;let y=F(N,K,S,{end:be});B(K)&&Te&&Z.push(y)}else if(P(N)||Y(N)){let y=N.readable||N;T++,Q(y,K,S,{end:be})}else if(A(N))T++,Q(N,K,S,{end:be});else throw new d("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],N);N=K}else if(W(K)){if($(N))T++,he(ae(N),K,S,{end:be});else if(Y(N)||A(N))T++,he(N,K,S,{end:be});else if(P(N))T++,he(N.readable,K,S,{end:be});else throw new d("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],N);N=K}else N=u.from(K)}return(V!=null&&V.aborted||j!=null&&j.aborted)&&r.nextTick(ue),N}function F(ne,ge,Se,{end:ye}){let V=!1;if(ge.on("close",()=>{V||Se(new b)}),ne.pipe(ge,{end:!1}),ye){let j=function(){V=!0,ge.end()};oe(ne)?r.nextTick(j):ne.once("end",j)}else Se();return s(ne,{readable:!0,writable:!1},j=>{let Z=ne._readableState;j&&j.code==="ERR_STREAM_PREMATURE_CLOSE"&&Z&&Z.ended&&!Z.errored&&!Z.errorEmitted?ne.once("end",Se).once("error",Se):Se(j)}),s(ge,{readable:!1,writable:!0},Se)}t.exports={pipelineImpl:pe,pipeline:fe}}),rw=Oe((e,t)=>{we(),Ee(),ve();var{pipeline:r}=ep(),n=un(),{destroyer:o}=Wo(),{isNodeStream:i,isReadable:s,isWritable:a,isWebStream:l,isTransformStream:u,isWritableStream:c,isReadableStream:d}=_n(),{AbortError:p,codes:{ERR_INVALID_ARG_VALUE:g,ERR_MISSING_ARGS:_}}=Ht(),b=Kn();t.exports=function(...x){if(x.length===0)throw new _("streams");if(x.length===1)return n.from(x[0]);let k=[...x];if(typeof x[0]=="function"&&(x[0]=n.from(x[0])),typeof x[x.length-1]=="function"){let M=x.length-1;x[M]=n.from(x[M])}for(let M=0;M<x.length;++M)if(!(!i(x[M])&&!l(x[M]))){if(M<x.length-1&&!(s(x[M])||d(x[M])||u(x[M])))throw new g(`streams[${M}]`,k[M],"must be readable");if(M>0&&!(a(x[M])||c(x[M])||u(x[M])))throw new g(`streams[${M}]`,k[M],"must be writable")}let R,A,B,$,I;function P(M){let L=$;$=null,L?L(M):M?I.destroy(M):!te&&!oe&&I.destroy()}let W=x[0],Y=r(x,P),oe=!!(a(W)||c(W)||u(W)),te=!!(s(Y)||d(Y)||u(Y));if(I=new n({writableObjectMode:!!(W!=null&&W.writableObjectMode),readableObjectMode:!!(Y!=null&&Y.writableObjectMode),writable:oe,readable:te}),oe){if(i(W))I._write=function(L,ie,re){W.write(L,ie)?re():R=re},I._final=function(L){W.end(),A=L},W.on("drain",function(){if(R){let L=R;R=null,L()}});else if(l(W)){let L=(u(W)?W.writable:W).getWriter();I._write=async function(ie,re,ae){try{await L.ready,L.write(ie).catch(()=>{}),ae()}catch(se){ae(se)}},I._final=async function(ie){try{await L.ready,L.close().catch(()=>{}),A=ie}catch(re){ie(re)}}}let M=u(Y)?Y.readable:Y;b(M,()=>{if(A){let L=A;A=null,L()}})}if(te){if(i(Y))Y.on("readable",function(){if(B){let M=B;B=null,M()}}),Y.on("end",function(){I.push(null)}),I._read=function(){for(;;){let M=Y.read();if(M===null){B=I._read;return}if(!I.push(M))return}};else if(l(Y)){let M=(u(Y)?Y.readable:Y).getReader();I._read=async function(){for(;;)try{let{value:L,done:ie}=await M.read();if(!I.push(L))return;if(ie){I.push(null);return}}catch{return}}}}return I._destroy=function(M,L){!M&&$!==null&&(M=new p),B=null,R=null,A=null,$===null?L(M):($=L,i(Y)&&o(Y,M))},I}}),vO=Oe((e,t)=>{we(),Ee(),ve();var r=globalThis.AbortController||Gd().AbortController,{codes:{ERR_INVALID_ARG_VALUE:n,ERR_INVALID_ARG_TYPE:o,ERR_MISSING_ARGS:i,ERR_OUT_OF_RANGE:s},AbortError:a}=Ht(),{validateAbortSignal:l,validateInteger:u,validateObject:c}=eu(),d=pt().Symbol("kWeak"),{finished:p}=Kn(),g=rw(),{addAbortSignalNoValidate:_}=tu(),{isWritable:b,isNodeStream:x}=_n(),{ArrayPrototypePush:k,MathFloor:R,Number:A,NumberIsNaN:B,Promise:$,PromiseReject:I,PromisePrototypeThen:P,Symbol:W}=pt(),Y=W("kEmpty"),oe=W("kEof");function te(ye,V){if(V!=null&&c(V,"options"),(V==null?void 0:V.signal)!=null&&l(V.signal,"options.signal"),x(ye)&&!b(ye))throw new n("stream",ye,"must be writable");let j=g(this,ye);return V!=null&&V.signal&&_(V.signal,j),j}function M(ye,V){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);V!=null&&c(V,"options"),(V==null?void 0:V.signal)!=null&&l(V.signal,"options.signal");let j=1;return(V==null?void 0:V.concurrency)!=null&&(j=R(V.concurrency)),u(j,"concurrency",1),(async function*(){var Z,ue;let le=new r,X=this,E=[],T=le.signal,S={signal:T},O=()=>le.abort();V!=null&&(Z=V.signal)!==null&&Z!==void 0&&Z.aborted&&O(),V==null||(ue=V.signal)===null||ue===void 0||ue.addEventListener("abort",O);let N,ee,J=!1;function D(){J=!0}async function K(){try{for await(let be of X){var z;if(J)return;if(T.aborted)throw new a;try{be=ye(be,S)}catch(Te){be=I(Te)}be!==Y&&(typeof((z=be)===null||z===void 0?void 0:z.catch)=="function"&&be.catch(D),E.push(be),N&&(N(),N=null),!J&&E.length&&E.length>=j&&await new $(Te=>{ee=Te}))}E.push(oe)}catch(be){let Te=I(be);P(Te,void 0,D),E.push(Te)}finally{var ce;J=!0,N&&(N(),N=null),V==null||(ce=V.signal)===null||ce===void 0||ce.removeEventListener("abort",O)}}K();try{for(;;){for(;E.length>0;){let z=await E[0];if(z===oe)return;if(T.aborted)throw new a;z!==Y&&(yield z),E.shift(),ee&&(ee(),ee=null)}await new $(z=>{N=z})}}finally{le.abort(),J=!0,ee&&(ee(),ee=null)}}).call(this)}function L(ye=void 0){return ye!=null&&c(ye,"options"),(ye==null?void 0:ye.signal)!=null&&l(ye.signal,"options.signal"),(async function*(){let V=0;for await(let Z of this){var j;if(ye!=null&&(j=ye.signal)!==null&&j!==void 0&&j.aborted)throw new a({cause:ye.signal.reason});yield[V++,Z]}}).call(this)}async function ie(ye,V=void 0){for await(let j of Q.call(this,ye,V))return!0;return!1}async function re(ye,V=void 0){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);return!await ie.call(this,async(...j)=>!await ye(...j),V)}async function ae(ye,V){for await(let j of Q.call(this,ye,V))return j}async function se(ye,V){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);async function j(Z,ue){return await ye(Z,ue),Y}for await(let Z of M.call(this,j,V));}function Q(ye,V){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);async function j(Z,ue){return await ye(Z,ue)?Z:Y}return M.call(this,j,V)}var he=class extends i{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}};async function fe(ye,V,j){var Z;if(typeof ye!="function")throw new o("reducer",["Function","AsyncFunction"],ye);j!=null&&c(j,"options"),(j==null?void 0:j.signal)!=null&&l(j.signal,"options.signal");let ue=arguments.length>1;if(j!=null&&(Z=j.signal)!==null&&Z!==void 0&&Z.aborted){let S=new a(void 0,{cause:j.signal.reason});throw this.once("error",()=>{}),await p(this.destroy(S)),S}let le=new r,X=le.signal;if(j!=null&&j.signal){let S={once:!0,[d]:this};j.signal.addEventListener("abort",()=>le.abort(),S)}let E=!1;try{for await(let S of this){var T;if(E=!0,j!=null&&(T=j.signal)!==null&&T!==void 0&&T.aborted)throw new a;ue?V=await ye(V,S,{signal:X}):(V=S,ue=!0)}if(!E&&!ue)throw new he}finally{le.abort()}return V}async function pe(ye){ye!=null&&c(ye,"options"),(ye==null?void 0:ye.signal)!=null&&l(ye.signal,"options.signal");let V=[];for await(let Z of this){var j;if(ye!=null&&(j=ye.signal)!==null&&j!==void 0&&j.aborted)throw new a(void 0,{cause:ye.signal.reason});k(V,Z)}return V}function F(ye,V){let j=M.call(this,ye,V);return(async function*(){for await(let Z of j)yield*Z}).call(this)}function ne(ye){if(ye=A(ye),B(ye))return 0;if(ye<0)throw new s("number",">= 0",ye);return ye}function ge(ye,V=void 0){return V!=null&&c(V,"options"),(V==null?void 0:V.signal)!=null&&l(V.signal,"options.signal"),ye=ne(ye),(async function*(){var j;if(V!=null&&(j=V.signal)!==null&&j!==void 0&&j.aborted)throw new a;for await(let ue of this){var Z;if(V!=null&&(Z=V.signal)!==null&&Z!==void 0&&Z.aborted)throw new a;ye--<=0&&(yield ue)}}).call(this)}function Se(ye,V=void 0){return V!=null&&c(V,"options"),(V==null?void 0:V.signal)!=null&&l(V.signal,"options.signal"),ye=ne(ye),(async function*(){var j;if(V!=null&&(j=V.signal)!==null&&j!==void 0&&j.aborted)throw new a;for await(let ue of this){var Z;if(V!=null&&(Z=V.signal)!==null&&Z!==void 0&&Z.aborted)throw new a;if(ye-- >0)yield ue;else return}}).call(this)}t.exports.streamReturningOperators={asIndexedPairs:L,drop:ge,filter:Q,flatMap:F,map:M,take:Se,compose:te},t.exports.promiseReturningOperators={every:re,forEach:se,reduce:fe,toArray:pe,some:ie,find:ae}}),nw=Oe((e,t)=>{we(),Ee(),ve();var{ArrayPrototypePop:r,Promise:n}=pt(),{isIterable:o,isNodeStream:i,isWebStream:s}=_n(),{pipelineImpl:a}=ep(),{finished:l}=Kn();iw();function u(...c){return new n((d,p)=>{let g,_,b=c[c.length-1];if(b&&typeof b=="object"&&!i(b)&&!o(b)&&!s(b)){let x=r(c);g=x.signal,_=x.end}a(c,(x,k)=>{x?p(x):d(k)},{signal:g,end:_})})}t.exports={finished:l,pipeline:u}}),iw=Oe((e,t)=>{we(),Ee(),ve();var{Buffer:r}=(St(),ze(Et)),{ObjectDefineProperty:n,ObjectKeys:o,ReflectApply:i}=pt(),{promisify:{custom:s}}=ln(),{streamReturningOperators:a,promiseReturningOperators:l}=vO(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:u}}=Ht(),c=rw(),{pipeline:d}=ep(),{destroyer:p}=Wo(),g=Kn(),_=nw(),b=_n(),x=t.exports=Qd().Stream;x.isDisturbed=b.isDisturbed,x.isErrored=b.isErrored,x.isReadable=b.isReadable,x.Readable=nu();for(let R of o(a)){let A=function(...$){if(new.target)throw u();return x.Readable.from(i(B,this,$))},B=a[R];n(A,"name",{__proto__:null,value:B.name}),n(A,"length",{__proto__:null,value:B.length}),n(x.Readable.prototype,R,{__proto__:null,value:A,enumerable:!1,configurable:!0,writable:!0})}for(let R of o(l)){let A=function(...$){if(new.target)throw u();return i(B,this,$)},B=l[R];n(A,"name",{__proto__:null,value:B.name}),n(A,"length",{__proto__:null,value:B.length}),n(x.Readable.prototype,R,{__proto__:null,value:A,enumerable:!1,configurable:!0,writable:!0})}x.Writable=Zb(),x.Duplex=un(),x.Transform=ew(),x.PassThrough=tw(),x.pipeline=d;var{addAbortSignal:k}=tu();x.addAbortSignal=k,x.finished=g,x.destroy=p,x.compose=c,n(x,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return _}}),n(d,s,{__proto__:null,enumerable:!0,get(){return _.pipeline}}),n(g,s,{__proto__:null,enumerable:!0,get(){return _.finished}}),x.Stream=x,x._isUint8Array=function(R){return R instanceof Uint8Array},x._uint8ArrayToBuffer=function(R){return r.from(R.buffer,R.byteOffset,R.byteLength)}}),ji=Oe((e,t)=>{we(),Ee(),ve();var r=iw(),n=nw(),o=r.Readable.destroy;t.exports=r.Readable,t.exports._uint8ArrayToBuffer=r._uint8ArrayToBuffer,t.exports._isUint8Array=r._isUint8Array,t.exports.isDisturbed=r.isDisturbed,t.exports.isErrored=r.isErrored,t.exports.isReadable=r.isReadable,t.exports.Readable=r.Readable,t.exports.Writable=r.Writable,t.exports.Duplex=r.Duplex,t.exports.Transform=r.Transform,t.exports.PassThrough=r.PassThrough,t.exports.addAbortSignal=r.addAbortSignal,t.exports.finished=r.finished,t.exports.destroy=r.destroy,t.exports.destroy=o,t.exports.pipeline=r.pipeline,t.exports.compose=r.compose,Object.defineProperty(r,"promises",{configurable:!0,enumerable:!0,get(){return n}}),t.exports.Stream=r.Stream,t.exports.default=t.exports}),EO=Oe((e,t)=>{we(),Ee(),ve(),typeof Object.create=="function"?t.exports=function(r,n){n&&(r.super_=n,r.prototype=Object.create(n.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(r,n){if(n){r.super_=n;var o=function(){};o.prototype=n.prototype,r.prototype=new o,r.prototype.constructor=r}}}),SO=Oe((e,t)=>{we(),Ee(),ve();var{Buffer:r}=(St(),ze(Et)),n=Symbol.for("BufferList");function o(i){if(!(this instanceof o))return new o(i);o._init.call(this,i)}o._init=function(i){Object.defineProperty(this,n,{value:!0}),this._bufs=[],this.length=0,i&&this.append(i)},o.prototype._new=function(i){return new o(i)},o.prototype._offset=function(i){if(i===0)return[0,0];let s=0;for(let a=0;a<this._bufs.length;a++){let l=s+this._bufs[a].length;if(i<l||a===this._bufs.length-1)return[a,i-s];s=l}},o.prototype._reverseOffset=function(i){let s=i[0],a=i[1];for(let l=0;l<s;l++)a+=this._bufs[l].length;return a},o.prototype.get=function(i){if(i>this.length||i<0)return;let s=this._offset(i);return this._bufs[s[0]][s[1]]},o.prototype.slice=function(i,s){return typeof i=="number"&&i<0&&(i+=this.length),typeof s=="number"&&s<0&&(s+=this.length),this.copy(null,0,i,s)},o.prototype.copy=function(i,s,a,l){if((typeof a!="number"||a<0)&&(a=0),(typeof l!="number"||l>this.length)&&(l=this.length),a>=this.length||l<=0)return i||r.alloc(0);let u=!!i,c=this._offset(a),d=l-a,p=d,g=u&&s||0,_=c[1];if(a===0&&l===this.length){if(!u)return this._bufs.length===1?this._bufs[0]:r.concat(this._bufs,this.length);for(let b=0;b<this._bufs.length;b++)this._bufs[b].copy(i,g),g+=this._bufs[b].length;return i}if(p<=this._bufs[c[0]].length-_)return u?this._bufs[c[0]].copy(i,s,_,_+p):this._bufs[c[0]].slice(_,_+p);u||(i=r.allocUnsafe(d));for(let b=c[0];b<this._bufs.length;b++){let x=this._bufs[b].length-_;if(p>x)this._bufs[b].copy(i,g,_),g+=x;else{this._bufs[b].copy(i,g,_,_+p),g+=x;break}p-=x,_&&(_=0)}return i.length>g?i.slice(0,g):i},o.prototype.shallowSlice=function(i,s){if(i=i||0,s=typeof s!="number"?this.length:s,i<0&&(i+=this.length),s<0&&(s+=this.length),i===s)return this._new();let a=this._offset(i),l=this._offset(s),u=this._bufs.slice(a[0],l[0]+1);return l[1]===0?u.pop():u[u.length-1]=u[u.length-1].slice(0,l[1]),a[1]!==0&&(u[0]=u[0].slice(a[1])),this._new(u)},o.prototype.toString=function(i,s,a){return this.slice(s,a).toString(i)},o.prototype.consume=function(i){if(i=Math.trunc(i),Number.isNaN(i)||i<=0)return this;for(;this._bufs.length;)if(i>=this._bufs[0].length)i-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(i),this.length-=i;break}return this},o.prototype.duplicate=function(){let i=this._new();for(let s=0;s<this._bufs.length;s++)i.append(this._bufs[s]);return i},o.prototype.append=function(i){if(i==null)return this;if(i.buffer)this._appendBuffer(r.from(i.buffer,i.byteOffset,i.byteLength));else if(Array.isArray(i))for(let s=0;s<i.length;s++)this.append(i[s]);else if(this._isBufferList(i))for(let s=0;s<i._bufs.length;s++)this.append(i._bufs[s]);else typeof i=="number"&&(i=i.toString()),this._appendBuffer(r.from(i));return this},o.prototype._appendBuffer=function(i){this._bufs.push(i),this.length+=i.length},o.prototype.indexOf=function(i,s,a){if(a===void 0&&typeof s=="string"&&(a=s,s=void 0),typeof i=="function"||Array.isArray(i))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof i=="number"?i=r.from([i]):typeof i=="string"?i=r.from(i,a):this._isBufferList(i)?i=i.slice():Array.isArray(i.buffer)?i=r.from(i.buffer,i.byteOffset,i.byteLength):r.isBuffer(i)||(i=r.from(i)),s=Number(s||0),isNaN(s)&&(s=0),s<0&&(s=this.length+s),s<0&&(s=0),i.length===0)return s>this.length?this.length:s;let l=this._offset(s),u=l[0],c=l[1];for(;u<this._bufs.length;u++){let d=this._bufs[u];for(;c<d.length;)if(d.length-c>=i.length){let p=d.indexOf(i,c);if(p!==-1)return this._reverseOffset([u,p]);c=d.length-i.length+1}else{let p=this._reverseOffset([u,c]);if(this._match(p,i))return p;c++}c=0}return-1},o.prototype._match=function(i,s){if(this.length-i<s.length)return!1;for(let a=0;a<s.length;a++)if(this.get(i+a)!==s[a])return!1;return!0},function(){let i={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let s in i)(function(a){i[a]===null?o.prototype[a]=function(l,u){return this.slice(l,l+u)[a](0,u)}:o.prototype[a]=function(l=0){return this.slice(l,l+i[a])[a](0)}})(s)}(),o.prototype._isBufferList=function(i){return i instanceof o||o.isBufferList(i)},o.isBufferList=function(i){return i!=null&&i[n]},t.exports=o}),AO=Oe((e,t)=>{we(),Ee(),ve();var r=ji().Duplex,n=EO(),o=SO();function i(s){if(!(this instanceof i))return new i(s);if(typeof s=="function"){this._callback=s;let a=(function(l){this._callback&&(this._callback(l),this._callback=null)}).bind(this);this.on("pipe",function(l){l.on("error",a)}),this.on("unpipe",function(l){l.removeListener("error",a)}),s=null}o._init.call(this,s),r.call(this)}n(i,r),Object.assign(i.prototype,o.prototype),i.prototype._new=function(s){return new i(s)},i.prototype._write=function(s,a,l){this._appendBuffer(s),typeof l=="function"&&l()},i.prototype._read=function(s){if(!this.length)return this.push(null);s=Math.min(s,this.length),this.push(this.slice(0,s)),this.consume(s)},i.prototype.end=function(s){r.prototype.end.call(this,s),this._callback&&(this._callback(null,this.slice()),this._callback=null)},i.prototype._destroy=function(s,a){this._bufs.length=0,this.length=0,a(s)},i.prototype._isBufferList=function(s){return s instanceof i||s instanceof o||i.isBufferList(s)},i.isBufferList=o.isBufferList,t.exports=i,t.exports.BufferListStream=i,t.exports.BufferList=o}),TO=Oe((e,t)=>{we(),Ee(),ve();var r=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};t.exports=r}),ow=Oe((e,t)=>{we(),Ee(),ve();var r=t.exports,{Buffer:n}=(St(),ze(Et));r.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},r.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},r.requiredHeaderFlagsErrors={};for(let i in r.requiredHeaderFlags){let s=r.requiredHeaderFlags[i];r.requiredHeaderFlagsErrors[i]="Invalid header flag bits, must be 0x"+s.toString(16)+" for "+r.types[i]+" packet"}r.codes={};for(let i in r.types){let s=r.types[i];r.codes[s]=i}r.CMD_SHIFT=4,r.CMD_MASK=240,r.DUP_MASK=8,r.QOS_MASK=3,r.QOS_SHIFT=1,r.RETAIN_MASK=1,r.VARBYTEINT_MASK=127,r.VARBYTEINT_FIN_MASK=128,r.VARBYTEINT_MAX=268435455,r.SESSIONPRESENT_MASK=1,r.SESSIONPRESENT_HEADER=n.from([r.SESSIONPRESENT_MASK]),r.CONNACK_HEADER=n.from([r.codes.connack<<r.CMD_SHIFT]),r.USERNAME_MASK=128,r.PASSWORD_MASK=64,r.WILL_RETAIN_MASK=32,r.WILL_QOS_MASK=24,r.WILL_QOS_SHIFT=3,r.WILL_FLAG_MASK=4,r.CLEAN_SESSION_MASK=2,r.CONNECT_HEADER=n.from([r.codes.connect<<r.CMD_SHIFT]),r.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},r.propertiesCodes={};for(let i in r.properties){let s=r.properties[i];r.propertiesCodes[s]=i}r.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function o(i){return[0,1,2].map(s=>[0,1].map(a=>[0,1].map(l=>{let u=n.alloc(1);return u.writeUInt8(r.codes[i]<<r.CMD_SHIFT|(a?r.DUP_MASK:0)|s<<r.QOS_SHIFT|l,0,!0),u})))}r.PUBLISH_HEADER=o("publish"),r.SUBSCRIBE_HEADER=o("subscribe"),r.SUBSCRIBE_OPTIONS_QOS_MASK=3,r.SUBSCRIBE_OPTIONS_NL_MASK=1,r.SUBSCRIBE_OPTIONS_NL_SHIFT=2,r.SUBSCRIBE_OPTIONS_RAP_MASK=1,r.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,r.SUBSCRIBE_OPTIONS_RH_MASK=3,r.SUBSCRIBE_OPTIONS_RH_SHIFT=4,r.SUBSCRIBE_OPTIONS_RH=[0,16,32],r.SUBSCRIBE_OPTIONS_NL=4,r.SUBSCRIBE_OPTIONS_RAP=8,r.SUBSCRIBE_OPTIONS_QOS=[0,1,2],r.UNSUBSCRIBE_HEADER=o("unsubscribe"),r.ACKS={unsuback:o("unsuback"),puback:o("puback"),pubcomp:o("pubcomp"),pubrel:o("pubrel"),pubrec:o("pubrec")},r.SUBACK_HEADER=n.from([r.codes.suback<<r.CMD_SHIFT]),r.VERSION3=n.from([3]),r.VERSION4=n.from([4]),r.VERSION5=n.from([5]),r.VERSION131=n.from([131]),r.VERSION132=n.from([132]),r.QOS=[0,1,2].map(i=>n.from([i])),r.EMPTY={pingreq:n.from([r.codes.pingreq<<4,0]),pingresp:n.from([r.codes.pingresp<<4,0]),disconnect:n.from([r.codes.disconnect<<4,0])},r.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},r.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},r.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},r.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}}),xO=Oe((e,t)=>{we(),Ee(),ve();var r=1e3,n=r*60,o=n*60,i=o*24,s=i*7,a=i*365.25;t.exports=function(p,g){g=g||{};var _=typeof p;if(_==="string"&&p.length>0)return l(p);if(_==="number"&&isFinite(p))return g.long?c(p):u(p);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(p))};function l(p){if(p=String(p),!(p.length>100)){var g=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(p);if(g){var _=parseFloat(g[1]),b=(g[2]||"ms").toLowerCase();switch(b){case"years":case"year":case"yrs":case"yr":case"y":return _*a;case"weeks":case"week":case"w":return _*s;case"days":case"day":case"d":return _*i;case"hours":case"hour":case"hrs":case"hr":case"h":return _*o;case"minutes":case"minute":case"mins":case"min":case"m":return _*n;case"seconds":case"second":case"secs":case"sec":case"s":return _*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return _;default:return}}}}function u(p){var g=Math.abs(p);return g>=i?Math.round(p/i)+"d":g>=o?Math.round(p/o)+"h":g>=n?Math.round(p/n)+"m":g>=r?Math.round(p/r)+"s":p+"ms"}function c(p){var g=Math.abs(p);return g>=i?d(p,g,i,"day"):g>=o?d(p,g,o,"hour"):g>=n?d(p,g,n,"minute"):g>=r?d(p,g,r,"second"):p+" ms"}function d(p,g,_,b){var x=g>=_*1.5;return Math.round(p/_)+" "+b+(x?"s":"")}}),IO=Oe((e,t)=>{we(),Ee(),ve();function r(n){i.debug=i,i.default=i,i.coerce=d,i.disable=l,i.enable=a,i.enabled=u,i.humanize=xO(),i.destroy=p,Object.keys(n).forEach(g=>{i[g]=n[g]}),i.names=[],i.skips=[],i.formatters={};function o(g){let _=0;for(let b=0;b<g.length;b++)_=(_<<5)-_+g.charCodeAt(b),_|=0;return i.colors[Math.abs(_)%i.colors.length]}i.selectColor=o;function i(g){let _,b=null,x,k;function R(...A){if(!R.enabled)return;let B=R,$=Number(new Date),I=$-(_||$);B.diff=I,B.prev=_,B.curr=$,_=$,A[0]=i.coerce(A[0]),typeof A[0]!="string"&&A.unshift("%O");let P=0;A[0]=A[0].replace(/%([a-zA-Z%])/g,(W,Y)=>{if(W==="%%")return"%";P++;let oe=i.formatters[Y];if(typeof oe=="function"){let te=A[P];W=oe.call(B,te),A.splice(P,1),P--}return W}),i.formatArgs.call(B,A),(B.log||i.log).apply(B,A)}return R.namespace=g,R.useColors=i.useColors(),R.color=i.selectColor(g),R.extend=s,R.destroy=i.destroy,Object.defineProperty(R,"enabled",{enumerable:!0,configurable:!1,get:()=>b!==null?b:(x!==i.namespaces&&(x=i.namespaces,k=i.enabled(g)),k),set:A=>{b=A}}),typeof i.init=="function"&&i.init(R),R}function s(g,_){let b=i(this.namespace+(typeof _>"u"?":":_)+g);return b.log=this.log,b}function a(g){i.save(g),i.namespaces=g,i.names=[],i.skips=[];let _,b=(typeof g=="string"?g:"").split(/[\s,]+/),x=b.length;for(_=0;_<x;_++)b[_]&&(g=b[_].replace(/\*/g,".*?"),g[0]==="-"?i.skips.push(new RegExp("^"+g.slice(1)+"$")):i.names.push(new RegExp("^"+g+"$")))}function l(){let g=[...i.names.map(c),...i.skips.map(c).map(_=>"-"+_)].join(",");return i.enable(""),g}function u(g){if(g[g.length-1]==="*")return!0;let _,b;for(_=0,b=i.skips.length;_<b;_++)if(i.skips[_].test(g))return!1;for(_=0,b=i.names.length;_<b;_++)if(i.names[_].test(g))return!0;return!1}function c(g){return g.toString().substring(2,g.toString().length-2).replace(/\.\*\?$/,"*")}function d(g){return g instanceof Error?g.stack||g.message:g}function p(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return i.enable(i.load()),i}t.exports=r}),cn=Oe((e,t)=>{we(),Ee(),ve(),e.formatArgs=n,e.save=o,e.load=i,e.useColors=r,e.storage=s(),e.destroy=(()=>{let l=!1;return()=>{l||(l=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function n(l){if(l[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+l[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;let u="color: "+this.color;l.splice(1,0,u,"color: inherit");let c=0,d=0;l[0].replace(/%[a-zA-Z%]/g,p=>{p!=="%%"&&(c++,p==="%c"&&(d=c))}),l.splice(d,0,u)}e.log=console.debug||console.log||(()=>{});function o(l){try{l?e.storage.setItem("debug",l):e.storage.removeItem("debug")}catch{}}function i(){let l;try{l=e.storage.getItem("debug")}catch{}return!l&&typeof Ve<"u"&&"env"in Ve&&(l=Ve.env.DEBUG),l}function s(){try{return localStorage}catch{}}t.exports=IO()(e);var{formatters:a}=t.exports;a.j=function(l){try{return JSON.stringify(l)}catch(u){return"[UnexpectedJSONParseError]: "+u.message}}}),CO=Oe((e,t)=>{we(),Ee(),ve();var r=AO(),{EventEmitter:n}=(Ho(),ze(Fi)),o=TO(),i=ow(),s=cn()("mqtt-packet:parser"),a=class bh extends n{constructor(){super(),this.parser=this.constructor.parser}static parser(u){return this instanceof bh?(this.settings=u||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new bh().parser(u)}_resetState(){s("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new o,this.error=null,this._list=r(),this._stateCounter=0}parse(u){for(this.error&&this._resetState(),this._list.append(u),s("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,s("parse: state complete. _stateCounter is now: %d",this._stateCounter),s("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return s("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){let u=this._list.readUInt8(0),c=u>>i.CMD_SHIFT;this.packet.cmd=i.types[c];let d=u&15,p=i.requiredHeaderFlags[c];return p!=null&&d!==p?this._emitError(new Error(i.requiredHeaderFlagsErrors[c])):(this.packet.retain=(u&i.RETAIN_MASK)!==0,this.packet.qos=u>>i.QOS_SHIFT&i.QOS_MASK,this.packet.qos>2?this._emitError(new Error("Packet must not have both QoS bits set to 1")):(this.packet.dup=(u&i.DUP_MASK)!==0,s("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0))}_parseLength(){let u=this._parseVarByteNum(!0);return u&&(this.packet.length=u.value,this._list.consume(u.bytes)),s("_parseLength %d",u.value),!!u}_parsePayload(){s("_parsePayload: payload %O",this._list);let u=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}u=!0}return s("_parsePayload complete result: %s",u),u}_parseConnect(){s("_parseConnect");let u,c,d,p,g={},_=this.packet,b=this._parseString();if(b===null)return this._emitError(new Error("Cannot parse protocolId"));if(b!=="MQTT"&&b!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(_.protocolId=b,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(_.protocolVersion=this._list.readUInt8(this._pos),_.protocolVersion>=128&&(_.bridgeMode=!0,_.protocolVersion=_.protocolVersion-128),_.protocolVersion!==3&&_.protocolVersion!==4&&_.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(this._list.readUInt8(this._pos)&1)return this._emitError(new Error("Connect flag bit 0 must be 0, but got 1"));g.username=this._list.readUInt8(this._pos)&i.USERNAME_MASK,g.password=this._list.readUInt8(this._pos)&i.PASSWORD_MASK,g.will=this._list.readUInt8(this._pos)&i.WILL_FLAG_MASK;let x=!!(this._list.readUInt8(this._pos)&i.WILL_RETAIN_MASK),k=(this._list.readUInt8(this._pos)&i.WILL_QOS_MASK)>>i.WILL_QOS_SHIFT;if(g.will)_.will={},_.will.retain=x,_.will.qos=k;else{if(x)return this._emitError(new Error("Will Retain Flag must be set to zero when Will Flag is set to 0"));if(k)return this._emitError(new Error("Will QoS must be set to zero when Will Flag is set to 0"))}if(_.clean=(this._list.readUInt8(this._pos)&i.CLEAN_SESSION_MASK)!==0,this._pos++,_.keepalive=this._parseNum(),_.keepalive===-1)return this._emitError(new Error("Packet too short"));if(_.protocolVersion===5){let A=this._parseProperties();Object.getOwnPropertyNames(A).length&&(_.properties=A)}let R=this._parseString();if(R===null)return this._emitError(new Error("Packet too short"));if(_.clientId=R,s("_parseConnect: packet.clientId: %s",_.clientId),g.will){if(_.protocolVersion===5){let A=this._parseProperties();Object.getOwnPropertyNames(A).length&&(_.will.properties=A)}if(u=this._parseString(),u===null)return this._emitError(new Error("Cannot parse will topic"));if(_.will.topic=u,s("_parseConnect: packet.will.topic: %s",_.will.topic),c=this._parseBuffer(),c===null)return this._emitError(new Error("Cannot parse will payload"));_.will.payload=c,s("_parseConnect: packet.will.paylaod: %s",_.will.payload)}if(g.username){if(p=this._parseString(),p===null)return this._emitError(new Error("Cannot parse username"));_.username=p,s("_parseConnect: packet.username: %s",_.username)}if(g.password){if(d=this._parseBuffer(),d===null)return this._emitError(new Error("Cannot parse password"));_.password=d}return this.settings=_,s("_parseConnect: complete"),_}_parseConnack(){s("_parseConnack");let u=this.packet;if(this._list.length<1)return null;let c=this._list.readUInt8(this._pos++);if(c>1)return this._emitError(new Error("Invalid connack flags, bits 7-1 must be set to 0"));if(u.sessionPresent=!!(c&i.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?u.reasonCode=this._list.readUInt8(this._pos++):u.reasonCode=0;else{if(this._list.length<2)return null;u.returnCode=this._list.readUInt8(this._pos++)}if(u.returnCode===-1||u.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){let d=this._parseProperties();Object.getOwnPropertyNames(d).length&&(u.properties=d)}s("_parseConnack: complete")}_parsePublish(){s("_parsePublish");let u=this.packet;if(u.topic=this._parseString(),u.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(u.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}u.payload=this._list.slice(this._pos,u.length),s("_parsePublish: payload from buffer list: %o",u.payload)}}_parseSubscribe(){s("_parseSubscribe");let u=this.packet,c,d,p,g,_,b,x;if(u.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let k=this._parseProperties();Object.getOwnPropertyNames(k).length&&(u.properties=k)}if(u.length<=0)return this._emitError(new Error("Malformed subscribe, no payload specified"));for(;this._pos<u.length;){if(c=this._parseString(),c===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=u.length)return this._emitError(new Error("Malformed Subscribe Payload"));if(d=this._parseByte(),this.settings.protocolVersion===5){if(d&192)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-6 must be 0"))}else if(d&252)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-2 must be 0"));if(p=d&i.SUBSCRIBE_OPTIONS_QOS_MASK,p>2)return this._emitError(new Error("Invalid subscribe QoS, must be <= 2"));if(b=(d>>i.SUBSCRIBE_OPTIONS_NL_SHIFT&i.SUBSCRIBE_OPTIONS_NL_MASK)!==0,_=(d>>i.SUBSCRIBE_OPTIONS_RAP_SHIFT&i.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,g=d>>i.SUBSCRIBE_OPTIONS_RH_SHIFT&i.SUBSCRIBE_OPTIONS_RH_MASK,g>2)return this._emitError(new Error("Invalid retain handling, must be <= 2"));x={topic:c,qos:p},this.settings.protocolVersion===5?(x.nl=b,x.rap=_,x.rh=g):this.settings.bridgeMode&&(x.rh=0,x.rap=!0,x.nl=!0),s("_parseSubscribe: push subscription `%s` to subscription",x),u.subscriptions.push(x)}}}_parseSuback(){s("_parseSuback");let u=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed suback, no payload specified"));for(;this._pos<this.packet.length;){let c=this._list.readUInt8(this._pos++);if(this.settings.protocolVersion===5){if(!i.MQTT5_SUBACK_CODES[c])return this._emitError(new Error("Invalid suback code"))}else if(c>2&&c!==128)return this._emitError(new Error("Invalid suback QoS, must be 0, 1, 2 or 128"));this.packet.granted.push(c)}}}_parseUnsubscribe(){s("_parseUnsubscribe");let u=this.packet;if(u.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed unsubscribe, no payload specified"));for(;this._pos<u.length;){let c=this._parseString();if(c===null)return this._emitError(new Error("Cannot parse topic"));s("_parseUnsubscribe: push topic `%s` to unsubscriptions",c),u.unsubscriptions.push(c)}}}_parseUnsuback(){s("_parseUnsuback");let u=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if((this.settings.protocolVersion===3||this.settings.protocolVersion===4)&&u.length!==2)return this._emitError(new Error("Malformed unsuback, payload length must be 2"));if(u.length<=0)return this._emitError(new Error("Malformed unsuback, no payload specified"));if(this.settings.protocolVersion===5){let c=this._parseProperties();for(Object.getOwnPropertyNames(c).length&&(u.properties=c),u.granted=[];this._pos<this.packet.length;){let d=this._list.readUInt8(this._pos++);if(!i.MQTT5_UNSUBACK_CODES[d])return this._emitError(new Error("Invalid unsuback code"));this.packet.granted.push(d)}}}_parseConfirmation(){s("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);let u=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5){if(u.length>2){switch(u.reasonCode=this._parseByte(),this.packet.cmd){case"puback":case"pubrec":if(!i.MQTT5_PUBACK_PUBREC_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break;case"pubrel":case"pubcomp":if(!i.MQTT5_PUBREL_PUBCOMP_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break}s("_parseConfirmation: packet.reasonCode `%d`",u.reasonCode)}else u.reasonCode=0;if(u.length>3){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}}return!0}_parseDisconnect(){let u=this.packet;if(s("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?(u.reasonCode=this._parseByte(),i.MQTT5_DISCONNECT_CODES[u.reasonCode]||this._emitError(new Error("Invalid disconnect reason code"))):u.reasonCode=0;let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}return s("_parseDisconnect result: true"),!0}_parseAuth(){s("_parseAuth");let u=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));if(u.reasonCode=this._parseByte(),!i.MQTT5_AUTH_CODES[u.reasonCode])return this._emitError(new Error("Invalid auth reason code"));let c=this._parseProperties();return Object.getOwnPropertyNames(c).length&&(u.properties=c),s("_parseAuth: result: true"),!0}_parseMessageId(){let u=this.packet;return u.messageId=this._parseNum(),u.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(s("_parseMessageId: packet.messageId %d",u.messageId),!0)}_parseString(u){let c=this._parseNum(),d=c+this._pos;if(c===-1||d>this._list.length||d>this.packet.length)return null;let p=this._list.toString("utf8",this._pos,d);return this._pos+=c,s("_parseString: result: %s",p),p}_parseStringPair(){return s("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){let u=this._parseNum(),c=u+this._pos;if(u===-1||c>this._list.length||c>this.packet.length)return null;let d=this._list.slice(this._pos,c);return this._pos+=u,s("_parseBuffer: result: %o",d),d}_parseNum(){if(this._list.length-this._pos<2)return-1;let u=this._list.readUInt16BE(this._pos);return this._pos+=2,s("_parseNum: result: %s",u),u}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;let u=this._list.readUInt32BE(this._pos);return this._pos+=4,s("_parse4ByteNum: result: %s",u),u}_parseVarByteNum(u){s("_parseVarByteNum");let c=4,d=0,p=1,g=0,_=!1,b,x=this._pos?this._pos:0;for(;d<c&&x+d<this._list.length;){if(b=this._list.readUInt8(x+d++),g+=p*(b&i.VARBYTEINT_MASK),p*=128,!(b&i.VARBYTEINT_FIN_MASK)){_=!0;break}if(this._list.length<=d)break}return!_&&d===c&&this._list.length>=d&&this._emitError(new Error("Invalid variable byte integer")),x&&(this._pos+=d),_?u?_={bytes:d,value:g}:_=g:_=!1,s("_parseVarByteNum: result: %o",_),_}_parseByte(){let u;return this._pos<this._list.length&&(u=this._list.readUInt8(this._pos),this._pos++),s("_parseByte: result: %o",u),u}_parseByType(u){switch(s("_parseByType: type: %s",u),u){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){s("_parseProperties");let u=this._parseVarByteNum(),c=this._pos+u,d={};for(;this._pos<c;){let p=this._parseByte();if(!p)return this._emitError(new Error("Cannot parse property code type")),!1;let g=i.propertiesCodes[p];if(!g)return this._emitError(new Error("Unknown property")),!1;if(g==="userProperties"){d[g]||(d[g]=Object.create(null));let _=this._parseByType(i.propertiesTypes[g]);if(d[g][_.name])if(Array.isArray(d[g][_.name]))d[g][_.name].push(_.value);else{let b=d[g][_.name];d[g][_.name]=[b],d[g][_.name].push(_.value)}else d[g][_.name]=_.value;continue}d[g]?Array.isArray(d[g])?d[g].push(this._parseByType(i.propertiesTypes[g])):(d[g]=[d[g]],d[g].push(this._parseByType(i.propertiesTypes[g]))):d[g]=this._parseByType(i.propertiesTypes[g])}return d}_newPacket(){return s("_newPacket"),this.packet&&(this._list.consume(this.packet.length),s("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),s("_newPacket: new packet"),this.packet=new o,this._pos=0,!0}_emitError(u){s("_emitError",u),this.error=u,this.emit("error",u)}};t.exports=a}),RO=Oe((e,t)=>{we(),Ee(),ve();var{Buffer:r}=(St(),ze(Et)),n=65536,o={},i=r.isBuffer(r.from([1,2]).subarray(0,1));function s(c){let d=r.allocUnsafe(2);return d.writeUInt8(c>>8,0),d.writeUInt8(c&255,1),d}function a(){for(let c=0;c<n;c++)o[c]=s(c)}function l(c){let d=0,p=0,g=r.allocUnsafe(4);do d=c%128|0,c=c/128|0,c>0&&(d=d|128),g.writeUInt8(d,p++);while(c>0&&p<4);return c>0&&(p=0),i?g.subarray(0,p):g.slice(0,p)}function u(c){let d=r.allocUnsafe(4);return d.writeUInt32BE(c,0),d}t.exports={cache:o,generateCache:a,generateNumber:s,genBufVariableByteInt:l,generate4ByteBuffer:u}}),OO=Oe((e,t)=>{we(),Ee(),ve(),typeof Ve>"u"||!Ve.version||Ve.version.indexOf("v0.")===0||Ve.version.indexOf("v1.")===0&&Ve.version.indexOf("v1.8.")!==0?t.exports={nextTick:r}:t.exports=Ve;function r(n,o,i,s){if(typeof n!="function")throw new TypeError('"callback" argument must be a function');var a=arguments.length,l,u;switch(a){case 0:case 1:return Ve.nextTick(n);case 2:return Ve.nextTick(function(){n.call(null,o)});case 3:return Ve.nextTick(function(){n.call(null,o,i)});case 4:return Ve.nextTick(function(){n.call(null,o,i,s)});default:for(l=new Array(a-1),u=0;u<l.length;)l[u++]=arguments[u];return Ve.nextTick(function(){n.apply(null,l)})}}}),sw=Oe((e,t)=>{we(),Ee(),ve();var r=ow(),{Buffer:n}=(St(),ze(Et)),o=n.allocUnsafe(0),i=n.from([0]),s=RO(),a=OO().nextTick,l=cn()("mqtt-packet:writeToStream"),u=s.cache,c=s.generateNumber,d=s.generateCache,p=s.genBufVariableByteInt,g=s.generate4ByteBuffer,_=se,b=!0;function x(V,j,Z){switch(l("generate called"),j.cork&&(j.cork(),a(k,j)),b&&(b=!1,d()),l("generate: packet.cmd: %s",V.cmd),V.cmd){case"connect":return R(V,j);case"connack":return A(V,j,Z);case"publish":return B(V,j,Z);case"puback":case"pubrec":case"pubrel":case"pubcomp":return $(V,j,Z);case"subscribe":return I(V,j,Z);case"suback":return P(V,j,Z);case"unsubscribe":return W(V,j,Z);case"unsuback":return Y(V,j,Z);case"pingreq":case"pingresp":return oe(V,j);case"disconnect":return te(V,j,Z);case"auth":return M(V,j,Z);default:return j.destroy(new Error("Unknown command")),!1}}Object.defineProperty(x,"cacheNumbers",{get(){return _===se},set(V){V?((!u||Object.keys(u).length===0)&&(b=!0),_=se):(b=!1,_=Q)}});function k(V){V.uncork()}function R(V,j,Z){let ue=V||{},le=ue.protocolId||"MQTT",X=ue.protocolVersion||4,E=ue.will,T=ue.clean,S=ue.keepalive||0,O=ue.clientId||"",N=ue.username,ee=ue.password,J=ue.properties;T===void 0&&(T=!0);let D=0;if(!le||typeof le!="string"&&!n.isBuffer(le))return j.destroy(new Error("Invalid protocolId")),!1;if(D+=le.length+2,X!==3&&X!==4&&X!==5)return j.destroy(new Error("Invalid protocol version")),!1;if(D+=1,(typeof O=="string"||n.isBuffer(O))&&(O||X>=4)&&(O||T))D+=n.byteLength(O)+2;else{if(X<4)return j.destroy(new Error("clientId must be supplied before 3.1.1")),!1;if(T*1===0)return j.destroy(new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof S!="number"||S<0||S>65535||S%1!==0)return j.destroy(new Error("Invalid keepalive")),!1;D+=2,D+=1;let K,z;if(X===5){if(K=pe(j,J),!K)return!1;D+=K.length}if(E){if(typeof E!="object")return j.destroy(new Error("Invalid will")),!1;if(!E.topic||typeof E.topic!="string")return j.destroy(new Error("Invalid will topic")),!1;if(D+=n.byteLength(E.topic)+2,D+=2,E.payload)if(E.payload.length>=0)typeof E.payload=="string"?D+=n.byteLength(E.payload):D+=E.payload.length;else return j.destroy(new Error("Invalid will payload")),!1;if(z={},X===5){if(z=pe(j,E.properties),!z)return!1;D+=z.length}}let ce=!1;if(N!=null)if(ye(N))ce=!0,D+=n.byteLength(N)+2;else return j.destroy(new Error("Invalid username")),!1;if(ee!=null){if(!ce)return j.destroy(new Error("Username is required to use password")),!1;if(ye(ee))D+=Se(ee)+2;else return j.destroy(new Error("Invalid password")),!1}j.write(r.CONNECT_HEADER),ie(j,D),fe(j,le),ue.bridgeMode&&(X+=128),j.write(X===131?r.VERSION131:X===132?r.VERSION132:X===4?r.VERSION4:X===5?r.VERSION5:r.VERSION3);let be=0;return be|=N!=null?r.USERNAME_MASK:0,be|=ee!=null?r.PASSWORD_MASK:0,be|=E&&E.retain?r.WILL_RETAIN_MASK:0,be|=E&&E.qos?E.qos<<r.WILL_QOS_SHIFT:0,be|=E?r.WILL_FLAG_MASK:0,be|=T?r.CLEAN_SESSION_MASK:0,j.write(n.from([be])),_(j,S),X===5&&K.write(),fe(j,O),E&&(X===5&&z.write(),re(j,E.topic),fe(j,E.payload)),N!=null&&fe(j,N),ee!=null&&fe(j,ee),!0}function A(V,j,Z){let ue=Z?Z.protocolVersion:4,le=V||{},X=ue===5?le.reasonCode:le.returnCode,E=le.properties,T=2;if(typeof X!="number")return j.destroy(new Error("Invalid return code")),!1;let S=null;if(ue===5){if(S=pe(j,E),!S)return!1;T+=S.length}return j.write(r.CONNACK_HEADER),ie(j,T),j.write(le.sessionPresent?r.SESSIONPRESENT_HEADER:i),j.write(n.from([X])),S==null||S.write(),!0}function B(V,j,Z){l("publish: packet: %o",V);let ue=Z?Z.protocolVersion:4,le=V||{},X=le.qos||0,E=le.retain?r.RETAIN_MASK:0,T=le.topic,S=le.payload||o,O=le.messageId,N=le.properties,ee=0;if(typeof T=="string")ee+=n.byteLength(T)+2;else if(n.isBuffer(T))ee+=T.length+2;else return j.destroy(new Error("Invalid topic")),!1;if(n.isBuffer(S)?ee+=S.length:ee+=n.byteLength(S),X&&typeof O!="number")return j.destroy(new Error("Invalid messageId")),!1;X&&(ee+=2);let J=null;if(ue===5){if(J=pe(j,N),!J)return!1;ee+=J.length}return j.write(r.PUBLISH_HEADER[X][le.dup?1:0][E?1:0]),ie(j,ee),_(j,Se(T)),j.write(T),X>0&&_(j,O),J==null||J.write(),l("publish: payload: %o",S),j.write(S)}function $(V,j,Z){let ue=Z?Z.protocolVersion:4,le=V||{},X=le.cmd||"puback",E=le.messageId,T=le.dup&&X==="pubrel"?r.DUP_MASK:0,S=0,O=le.reasonCode,N=le.properties,ee=ue===5?3:2;if(X==="pubrel"&&(S=1),typeof E!="number")return j.destroy(new Error("Invalid messageId")),!1;let J=null;if(ue===5&&typeof N=="object"){if(J=F(j,N,Z,ee),!J)return!1;ee+=J.length}return j.write(r.ACKS[X][S][T][0]),ee===3&&(ee+=O!==0?1:-1),ie(j,ee),_(j,E),ue===5&&ee!==2&&j.write(n.from([O])),J!==null?J.write():ee===4&&j.write(n.from([0])),!0}function I(V,j,Z){l("subscribe: packet: ");let ue=Z?Z.protocolVersion:4,le=V||{},X=le.dup?r.DUP_MASK:0,E=le.messageId,T=le.subscriptions,S=le.properties,O=0;if(typeof E!="number")return j.destroy(new Error("Invalid messageId")),!1;O+=2;let N=null;if(ue===5){if(N=pe(j,S),!N)return!1;O+=N.length}if(typeof T=="object"&&T.length)for(let J=0;J<T.length;J+=1){let D=T[J].topic,K=T[J].qos;if(typeof D!="string")return j.destroy(new Error("Invalid subscriptions - invalid topic")),!1;if(typeof K!="number")return j.destroy(new Error("Invalid subscriptions - invalid qos")),!1;if(ue===5){if(typeof(T[J].nl||!1)!="boolean")return j.destroy(new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(T[J].rap||!1)!="boolean")return j.destroy(new Error("Invalid subscriptions - invalid Retain as Published")),!1;let z=T[J].rh||0;if(typeof z!="number"||z>2)return j.destroy(new Error("Invalid subscriptions - invalid Retain Handling")),!1}O+=n.byteLength(D)+2+1}else return j.destroy(new Error("Invalid subscriptions")),!1;l("subscribe: writing to stream: %o",r.SUBSCRIBE_HEADER),j.write(r.SUBSCRIBE_HEADER[1][X?1:0][0]),ie(j,O),_(j,E),N!==null&&N.write();let ee=!0;for(let J of T){let D=J.topic,K=J.qos,z=+J.nl,ce=+J.rap,be=J.rh,Te;re(j,D),Te=r.SUBSCRIBE_OPTIONS_QOS[K],ue===5&&(Te|=z?r.SUBSCRIBE_OPTIONS_NL:0,Te|=ce?r.SUBSCRIBE_OPTIONS_RAP:0,Te|=be?r.SUBSCRIBE_OPTIONS_RH[be]:0),ee=j.write(n.from([Te]))}return ee}function P(V,j,Z){let ue=Z?Z.protocolVersion:4,le=V||{},X=le.messageId,E=le.granted,T=le.properties,S=0;if(typeof X!="number")return j.destroy(new Error("Invalid messageId")),!1;if(S+=2,typeof E=="object"&&E.length)for(let N=0;N<E.length;N+=1){if(typeof E[N]!="number")return j.destroy(new Error("Invalid qos vector")),!1;S+=1}else return j.destroy(new Error("Invalid qos vector")),!1;let O=null;if(ue===5){if(O=F(j,T,Z,S),!O)return!1;S+=O.length}return j.write(r.SUBACK_HEADER),ie(j,S),_(j,X),O!==null&&O.write(),j.write(n.from(E))}function W(V,j,Z){let ue=Z?Z.protocolVersion:4,le=V||{},X=le.messageId,E=le.dup?r.DUP_MASK:0,T=le.unsubscriptions,S=le.properties,O=0;if(typeof X!="number")return j.destroy(new Error("Invalid messageId")),!1;if(O+=2,typeof T=="object"&&T.length)for(let J=0;J<T.length;J+=1){if(typeof T[J]!="string")return j.destroy(new Error("Invalid unsubscriptions")),!1;O+=n.byteLength(T[J])+2}else return j.destroy(new Error("Invalid unsubscriptions")),!1;let N=null;if(ue===5){if(N=pe(j,S),!N)return!1;O+=N.length}j.write(r.UNSUBSCRIBE_HEADER[1][E?1:0][0]),ie(j,O),_(j,X),N!==null&&N.write();let ee=!0;for(let J=0;J<T.length;J++)ee=re(j,T[J]);return ee}function Y(V,j,Z){let ue=Z?Z.protocolVersion:4,le=V||{},X=le.messageId,E=le.dup?r.DUP_MASK:0,T=le.granted,S=le.properties,O=le.cmd,N=0,ee=2;if(typeof X!="number")return j.destroy(new Error("Invalid messageId")),!1;if(ue===5)if(typeof T=="object"&&T.length)for(let D=0;D<T.length;D+=1){if(typeof T[D]!="number")return j.destroy(new Error("Invalid qos vector")),!1;ee+=1}else return j.destroy(new Error("Invalid qos vector")),!1;let J=null;if(ue===5){if(J=F(j,S,Z,ee),!J)return!1;ee+=J.length}return j.write(r.ACKS[O][N][E][0]),ie(j,ee),_(j,X),J!==null&&J.write(),ue===5&&j.write(n.from(T)),!0}function oe(V,j,Z){return j.write(r.EMPTY[V.cmd])}function te(V,j,Z){let ue=Z?Z.protocolVersion:4,le=V||{},X=le.reasonCode,E=le.properties,T=ue===5?1:0,S=null;if(ue===5){if(S=F(j,E,Z,T),!S)return!1;T+=S.length}return j.write(n.from([r.codes.disconnect<<4])),ie(j,T),ue===5&&j.write(n.from([X])),S!==null&&S.write(),!0}function M(V,j,Z){let ue=Z?Z.protocolVersion:4,le=V||{},X=le.reasonCode,E=le.properties,T=ue===5?1:0;ue!==5&&j.destroy(new Error("Invalid mqtt version for auth packet"));let S=F(j,E,Z,T);return S?(T+=S.length,j.write(n.from([r.codes.auth<<4])),ie(j,T),j.write(n.from([X])),S!==null&&S.write(),!0):!1}var L={};function ie(V,j){if(j>r.VARBYTEINT_MAX)return V.destroy(new Error(`Invalid variable byte integer: ${j}`)),!1;let Z=L[j];return Z||(Z=p(j),j<16384&&(L[j]=Z)),l("writeVarByteInt: writing to stream: %o",Z),V.write(Z)}function re(V,j){let Z=n.byteLength(j);return _(V,Z),l("writeString: %s",j),V.write(j,"utf8")}function ae(V,j,Z){re(V,j),re(V,Z)}function se(V,j){return l("writeNumberCached: number: %d",j),l("writeNumberCached: %o",u[j]),V.write(u[j])}function Q(V,j){let Z=c(j);return l("writeNumberGenerated: %o",Z),V.write(Z)}function he(V,j){let Z=g(j);return l("write4ByteNumber: %o",Z),V.write(Z)}function fe(V,j){typeof j=="string"?re(V,j):j?(_(V,j.length),V.write(j)):_(V,0)}function pe(V,j){if(typeof j!="object"||j.length!=null)return{length:1,write(){ge(V,{},0)}};let Z=0;function ue(le,X){let E=r.propertiesTypes[le],T=0;switch(E){case"byte":{if(typeof X!="boolean")return V.destroy(new Error(`Invalid ${le}: ${X}`)),!1;T+=2;break}case"int8":{if(typeof X!="number"||X<0||X>255)return V.destroy(new Error(`Invalid ${le}: ${X}`)),!1;T+=2;break}case"binary":{if(X&&X===null)return V.destroy(new Error(`Invalid ${le}: ${X}`)),!1;T+=1+n.byteLength(X)+2;break}case"int16":{if(typeof X!="number"||X<0||X>65535)return V.destroy(new Error(`Invalid ${le}: ${X}`)),!1;T+=3;break}case"int32":{if(typeof X!="number"||X<0||X>4294967295)return V.destroy(new Error(`Invalid ${le}: ${X}`)),!1;T+=5;break}case"var":{if(typeof X!="number"||X<0||X>268435455)return V.destroy(new Error(`Invalid ${le}: ${X}`)),!1;T+=1+n.byteLength(p(X));break}case"string":{if(typeof X!="string")return V.destroy(new Error(`Invalid ${le}: ${X}`)),!1;T+=3+n.byteLength(X.toString());break}case"pair":{if(typeof X!="object")return V.destroy(new Error(`Invalid ${le}: ${X}`)),!1;T+=Object.getOwnPropertyNames(X).reduce((S,O)=>{let N=X[O];return Array.isArray(N)?S+=N.reduce((ee,J)=>(ee+=3+n.byteLength(O.toString())+2+n.byteLength(J.toString()),ee),0):S+=3+n.byteLength(O.toString())+2+n.byteLength(X[O].toString()),S},0);break}default:return V.destroy(new Error(`Invalid property ${le}: ${X}`)),!1}return T}if(j)for(let le in j){let X=0,E=0,T=j[le];if(Array.isArray(T))for(let S=0;S<T.length;S++){if(E=ue(le,T[S]),!E)return!1;X+=E}else{if(E=ue(le,T),!E)return!1;X=E}if(!X)return!1;Z+=X}return{length:n.byteLength(p(Z))+Z,write(){ge(V,j,Z)}}}function F(V,j,Z,ue){let le=["reasonString","userProperties"],X=Z&&Z.properties&&Z.properties.maximumPacketSize?Z.properties.maximumPacketSize:0,E=pe(V,j);if(X)for(;ue+E.length>X;){let T=le.shift();if(T&&j[T])delete j[T],E=pe(V,j);else return!1}return E}function ne(V,j,Z){switch(r.propertiesTypes[j]){case"byte":{V.write(n.from([r.properties[j]])),V.write(n.from([+Z]));break}case"int8":{V.write(n.from([r.properties[j]])),V.write(n.from([Z]));break}case"binary":{V.write(n.from([r.properties[j]])),fe(V,Z);break}case"int16":{V.write(n.from([r.properties[j]])),_(V,Z);break}case"int32":{V.write(n.from([r.properties[j]])),he(V,Z);break}case"var":{V.write(n.from([r.properties[j]])),ie(V,Z);break}case"string":{V.write(n.from([r.properties[j]])),re(V,Z);break}case"pair":{Object.getOwnPropertyNames(Z).forEach(ue=>{let le=Z[ue];Array.isArray(le)?le.forEach(X=>{V.write(n.from([r.properties[j]])),ae(V,ue.toString(),X.toString())}):(V.write(n.from([r.properties[j]])),ae(V,ue.toString(),le.toString()))});break}default:return V.destroy(new Error(`Invalid property ${j} value: ${Z}`)),!1}}function ge(V,j,Z){ie(V,Z);for(let ue in j)if(Object.prototype.hasOwnProperty.call(j,ue)&&j[ue]!==null){let le=j[ue];if(Array.isArray(le))for(let X=0;X<le.length;X++)ne(V,ue,le[X]);else ne(V,ue,le)}}function Se(V){return V?V instanceof n?V.length:n.byteLength(V):0}function ye(V){return typeof V=="string"||V instanceof n}t.exports=x}),kO=Oe((e,t)=>{we(),Ee(),ve();var r=sw(),{EventEmitter:n}=(Ho(),ze(Fi)),{Buffer:o}=(St(),ze(Et));function i(a,l){let u=new s;return r(a,u,l),u.concat()}var s=class extends n{constructor(){super(),this._array=new Array(20),this._i=0}write(a){return this._array[this._i++]=a,!0}concat(){let a=0,l=new Array(this._array.length),u=this._array,c=0,d;for(d=0;d<u.length&&u[d]!==void 0;d++)typeof u[d]!="string"?l[d]=u[d].length:l[d]=o.byteLength(u[d]),a+=l[d];let p=o.allocUnsafe(a);for(d=0;d<u.length&&u[d]!==void 0;d++)typeof u[d]!="string"?(u[d].copy(p,c),c+=l[d]):(p.write(u[d],c),c+=l[d]);return p}destroy(a){a&&this.emit("error",a)}};t.exports=i}),NO=Oe(e=>{we(),Ee(),ve(),e.parser=CO().parser,e.generate=kO(),e.writeToStream=sw()}),aw=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(){this.nextId=Math.max(1,Math.floor(Math.random()*65535))}allocate(){let r=this.nextId++;return this.nextId===65536&&(this.nextId=1),r}getLastAllocated(){return this.nextId===1?65535:this.nextId-1}register(r){return!0}deallocate(r){}clear(){}};e.default=t}),MO=Oe((e,t)=>{we(),Ee(),ve(),t.exports=n;function r(i){return i instanceof cl?cl.from(i):new i.constructor(i.buffer.slice(),i.byteOffset,i.length)}function n(i){if(i=i||{},i.circles)return o(i);return i.proto?l:a;function s(u,c){for(var d=Object.keys(u),p=new Array(d.length),g=0;g<d.length;g++){var _=d[g],b=u[_];typeof b!="object"||b===null?p[_]=b:b instanceof Date?p[_]=new Date(b):ArrayBuffer.isView(b)?p[_]=r(b):p[_]=c(b)}return p}function a(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return s(u,a);if(u instanceof Map)return new Map(s(Array.from(u),a));if(u instanceof Set)return new Set(s(Array.from(u),a));var c={};for(var d in u)if(Object.hasOwnProperty.call(u,d)!==!1){var p=u[d];typeof p!="object"||p===null?c[d]=p:p instanceof Date?c[d]=new Date(p):p instanceof Map?c[d]=new Map(s(Array.from(p),a)):p instanceof Set?c[d]=new Set(s(Array.from(p),a)):ArrayBuffer.isView(p)?c[d]=r(p):c[d]=a(p)}return c}function l(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return s(u,l);if(u instanceof Map)return new Map(s(Array.from(u),l));if(u instanceof Set)return new Set(s(Array.from(u),l));var c={};for(var d in u){var p=u[d];typeof p!="object"||p===null?c[d]=p:p instanceof Date?c[d]=new Date(p):p instanceof Map?c[d]=new Map(s(Array.from(p),l)):p instanceof Set?c[d]=new Set(s(Array.from(p),l)):ArrayBuffer.isView(p)?c[d]=r(p):c[d]=l(p)}return c}}function o(i){var s=[],a=[];return i.proto?c:u;function l(d,p){for(var g=Object.keys(d),_=new Array(g.length),b=0;b<g.length;b++){var x=g[b],k=d[x];if(typeof k!="object"||k===null)_[x]=k;else if(k instanceof Date)_[x]=new Date(k);else if(ArrayBuffer.isView(k))_[x]=r(k);else{var R=s.indexOf(k);R!==-1?_[x]=a[R]:_[x]=p(k)}}return _}function u(d){if(typeof d!="object"||d===null)return d;if(d instanceof Date)return new Date(d);if(Array.isArray(d))return l(d,u);if(d instanceof Map)return new Map(l(Array.from(d),u));if(d instanceof Set)return new Set(l(Array.from(d),u));var p={};s.push(d),a.push(p);for(var g in d)if(Object.hasOwnProperty.call(d,g)!==!1){var _=d[g];if(typeof _!="object"||_===null)p[g]=_;else if(_ instanceof Date)p[g]=new Date(_);else if(_ instanceof Map)p[g]=new Map(l(Array.from(_),u));else if(_ instanceof Set)p[g]=new Set(l(Array.from(_),u));else if(ArrayBuffer.isView(_))p[g]=r(_);else{var b=s.indexOf(_);b!==-1?p[g]=a[b]:p[g]=u(_)}}return s.pop(),a.pop(),p}function c(d){if(typeof d!="object"||d===null)return d;if(d instanceof Date)return new Date(d);if(Array.isArray(d))return l(d,c);if(d instanceof Map)return new Map(l(Array.from(d),c));if(d instanceof Set)return new Set(l(Array.from(d),c));var p={};s.push(d),a.push(p);for(var g in d){var _=d[g];if(typeof _!="object"||_===null)p[g]=_;else if(_ instanceof Date)p[g]=new Date(_);else if(_ instanceof Map)p[g]=new Map(l(Array.from(_),c));else if(_ instanceof Set)p[g]=new Set(l(Array.from(_),c));else if(ArrayBuffer.isView(_))p[g]=r(_);else{var b=s.indexOf(_);b!==-1?p[g]=a[b]:p[g]=c(_)}}return s.pop(),a.pop(),p}}}),PO=Oe((e,t)=>{we(),Ee(),ve(),t.exports=MO()()}),LO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0}),e.validateTopics=e.validateTopic=void 0;function t(n){let o=n.split("/");for(let i=0;i<o.length;i++)if(o[i]!=="+"){if(o[i]==="#")return i===o.length-1;if(o[i].indexOf("+")!==-1||o[i].indexOf("#")!==-1)return!1}return!0}e.validateTopic=t;function r(n){if(n.length===0)return"empty_topic_list";for(let o=0;o<n.length;o++)if(!t(n[o]))return n[o];return null}e.validateTopics=r}),lw=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0});var t=ji(),r={objectMode:!0},n={clean:!0},o=class{constructor(i){this.options=i||{},this.options=Object.assign(Object.assign({},n),i),this._inflights=new Map}put(i,s){return this._inflights.set(i.messageId,i),s&&s(),this}createStream(){let i=new t.Readable(r),s=[],a=!1,l=0;return this._inflights.forEach((u,c)=>{s.push(u)}),i._read=()=>{!a&&l<s.length?i.push(s[l++]):i.push(null)},i.destroy=u=>{if(!a)return a=!0,setTimeout(()=>{i.emit("close")},0),i},i}del(i,s){let a=this._inflights.get(i.messageId);return a?(this._inflights.delete(i.messageId),s(null,a)):s&&s(new Error("missing packet")),this}get(i,s){let a=this._inflights.get(i.messageId);return a?s(null,a):s&&s(new Error("missing packet")),this}close(i){this.options.clean&&(this._inflights=null),i&&i()}};e.default=o}),BO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0});var t=[0,16,128,131,135,144,145,151,153],r=(n,o,i)=>{n.log("handlePublish: packet %o",o),i=typeof i<"u"?i:n.noop;let s=o.topic.toString(),a=o.payload,{qos:l}=o,{messageId:u}=o,{options:c}=n;if(n.options.protocolVersion===5){let d;if(o.properties&&(d=o.properties.topicAlias),typeof d<"u")if(s.length===0)if(d>0&&d<=65535){let p=n.topicAliasRecv.getTopicByAlias(d);if(p)s=p,n.log("handlePublish :: topic complemented by alias. topic: %s - alias: %d",s,d);else{n.log("handlePublish :: unregistered topic alias. alias: %d",d),n.emit("error",new Error("Received unregistered Topic Alias"));return}}else{n.log("handlePublish :: topic alias out of range. alias: %d",d),n.emit("error",new Error("Received Topic Alias is out of range"));return}else if(n.topicAliasRecv.put(s,d))n.log("handlePublish :: registered topic: %s - alias: %d",s,d);else{n.log("handlePublish :: topic alias out of range. alias: %d",d),n.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(n.log("handlePublish: qos %d",l),l){case 2:{c.customHandleAcks(s,a,o,(d,p)=>{if(typeof d=="number"&&(p=d,d=null),d)return n.emit("error",d);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for pubrec"));p?n._sendPacket({cmd:"pubrec",messageId:u,reasonCode:p},i):n.incomingStore.put(o,()=>{n._sendPacket({cmd:"pubrec",messageId:u},i)})});break}case 1:{c.customHandleAcks(s,a,o,(d,p)=>{if(typeof d=="number"&&(p=d,d=null),d)return n.emit("error",d);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for puback"));p||n.emit("message",s,a,o),n.handleMessage(o,g=>{if(g)return i&&i(g);n._sendPacket({cmd:"puback",messageId:u,reasonCode:p},i)})});break}case 0:n.emit("message",s,a,o),n.handleMessage(o,i);break;default:n.log("handlePublish: unknown QoS. Doing nothing.");break}};e.default=r}),DO=Oe((e,t)=>{t.exports={version:"5.9.1"}}),Vo=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0}),e.MQTTJS_VERSION=e.nextTick=e.applyMixin=e.ErrorWithReasonCode=void 0;var t=class uw extends Error{constructor(o,i){super(o),this.code=i,Object.setPrototypeOf(this,uw.prototype),Object.getPrototypeOf(this).name="ErrorWithReasonCode"}};e.ErrorWithReasonCode=t;function r(n,o,i=!1){var s;let a=[o];for(;;){let l=a[0],u=Object.getPrototypeOf(l);if(u!=null&&u.prototype)a.unshift(u);else break}for(let l of a)for(let u of Object.getOwnPropertyNames(l.prototype))(i||u!=="constructor")&&Object.defineProperty(n.prototype,u,(s=Object.getOwnPropertyDescriptor(l.prototype,u))!==null&&s!==void 0?s:Object.create(null))}e.applyMixin=r,e.nextTick=typeof(Ve==null?void 0:Ve.nextTick)=="function"?Ve.nextTick:n=>{setTimeout(n,0)},e.MQTTJS_VERSION=DO().version}),iu=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=void 0;var t=Vo();e.ReasonCodes={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};var r=(n,o)=>{let{messageId:i}=o,s=o.cmd,a=null,l=n.outgoing[i]?n.outgoing[i].cb:null,u=null;if(!l){n.log("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(n.log("_handleAck :: packet type",s),s){case"pubcomp":case"puback":{let c=o.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{l(u,o)})):n._removeOutgoingAndStoreMessage(i,l);break}case"pubrec":{a={cmd:"pubrel",qos:2,messageId:i};let c=o.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{l(u,o)})):n._sendPacket(a);break}case"suback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i);let c=o.granted;for(let d=0;d<c.length;d++){let p=c[d];if(p&128){u=new Error(`Subscribe error: ${e.ReasonCodes[p]}`),u.code=p;let g=n.messageIdToTopic[i];g&&g.forEach(_=>{delete n._resubscribeTopics[_]})}}delete n.messageIdToTopic[i],n._invokeStoreProcessingQueue(),l(u,o);break}case"unsuback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i),n._invokeStoreProcessingQueue(),l(null);break}default:n.emit("error",new Error("unrecognized packet type"))}n.disconnecting&&Object.keys(n.outgoing).length===0&&n.emit("outgoingEmpty")};e.default=r}),$O=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0});var t=Vo(),r=iu(),n=(o,i)=>{let{options:s}=o,a=s.protocolVersion,l=a===5?i.reasonCode:i.returnCode;if(a!==5){let u=new t.ErrorWithReasonCode(`Protocol error: Auth packets are only supported in MQTT 5. Your version:${a}`,l);o.emit("error",u);return}o.handleAuth(i,(u,c)=>{if(u){o.emit("error",u);return}if(l===24)o.reconnecting=!1,o._sendPacket(c);else{let d=new t.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[l]}`,l);o.emit("error",d)}})};e.default=n}),UO=Oe(e=>{var g,_,b,x,k,R,A,B,$,I,P,W,Y,oe,te,M,L,ie,re,ae,se,Q,he,fe,pe,F,wh,ge,Se,ye,V,j,cw,ue,le,X,E,xn,S,In,N,vh,J,Da,K,$a,ce,tt,Te,Eh,h,fs,m;we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=void 0;var t=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,r=new Set,n=typeof Ve=="object"&&Ve?Ve:{},o=(w,v,C,H)=>{typeof n.emitWarning=="function"?n.emitWarning(w,v,C,H):console.error(`[${C}] ${v}: ${w}`)},i=globalThis.AbortController,s=globalThis.AbortSignal;if(typeof i>"u"){s=class{constructor(){it(this,"onabort");it(this,"_onabort",[]);it(this,"reason");it(this,"aborted",!1)}addEventListener(C,H){this._onabort.push(H)}},i=class{constructor(){it(this,"signal",new s);v()}abort(C){var H,de;if(!this.signal.aborted){this.signal.reason=C,this.signal.aborted=!0;for(let me of this.signal._onabort)me(C);(de=(H=this.signal).onabort)==null||de.call(H,C)}}};let w=((g=n.env)==null?void 0:g.LRU_CACHE_IGNORE_AC_WARNING)!=="1",v=()=>{w&&(w=!1,o("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",v))}}var a=w=>!r.has(w),l=w=>w&&w===Math.floor(w)&&w>0&&isFinite(w),u=w=>l(w)?w<=Math.pow(2,8)?Uint8Array:w<=Math.pow(2,16)?Uint16Array:w<=Math.pow(2,32)?Uint32Array:w<=Number.MAX_SAFE_INTEGER?c:null:null,c=class extends Array{constructor(w){super(w),this.fill(0)}},d=(_=class{constructor(v,C){it(this,"heap");it(this,"length");if(!G(_,b))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new C(v),this.length=0}static create(v){let C=u(v);if(!C)return[];Le(_,b,!0);let H=new _(v,C);return Le(_,b,!1),H}push(v){this.heap[this.length++]=v}pop(){return this.heap[--this.length]}},b=new WeakMap,$e(_,b,!1),_),p=(m=class{constructor(v){$e(this,F);$e(this,j);$e(this,E);$e(this,S);$e(this,N);$e(this,J);$e(this,K);$e(this,ce);$e(this,Te);$e(this,h);$e(this,x,void 0);$e(this,k,void 0);$e(this,R,void 0);$e(this,A,void 0);$e(this,B,void 0);it(this,"ttl");it(this,"ttlResolution");it(this,"ttlAutopurge");it(this,"updateAgeOnGet");it(this,"updateAgeOnHas");it(this,"allowStale");it(this,"noDisposeOnSet");it(this,"noUpdateTTL");it(this,"maxEntrySize");it(this,"sizeCalculation");it(this,"noDeleteOnFetchRejection");it(this,"noDeleteOnStaleGet");it(this,"allowStaleOnFetchAbort");it(this,"allowStaleOnFetchRejection");it(this,"ignoreFetchAbort");$e(this,$,void 0);$e(this,I,void 0);$e(this,P,void 0);$e(this,W,void 0);$e(this,Y,void 0);$e(this,oe,void 0);$e(this,te,void 0);$e(this,M,void 0);$e(this,L,void 0);$e(this,ie,void 0);$e(this,re,void 0);$e(this,ae,void 0);$e(this,se,void 0);$e(this,Q,void 0);$e(this,he,void 0);$e(this,fe,void 0);$e(this,pe,void 0);$e(this,ge,()=>{});$e(this,Se,()=>{});$e(this,ye,()=>{});$e(this,V,()=>!1);$e(this,ue,v=>{});$e(this,le,(v,C,H)=>{});$e(this,X,(v,C,H,de)=>{if(H||de)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});let{max:C=0,ttl:H,ttlResolution:de=1,ttlAutopurge:me,updateAgeOnGet:_e,updateAgeOnHas:Ae,allowStale:ke,dispose:Ze,disposeAfter:Tt,noDisposeOnSet:He,noUpdateTTL:mt,maxSize:st=0,maxEntrySize:at=0,sizeCalculation:Qe,fetchMethod:ht,noDeleteOnFetchRejection:U,noDeleteOnStaleGet:q,allowStaleOnFetchRejection:Re,allowStaleOnFetchAbort:Ie,ignoreFetchAbort:Ne}=v;if(C!==0&&!l(C))throw new TypeError("max option must be a nonnegative integer");let et=C?u(C):Array;if(!et)throw new Error("invalid max value: "+C);if(Le(this,x,C),Le(this,k,st),this.maxEntrySize=at||G(this,k),this.sizeCalculation=Qe,this.sizeCalculation){if(!G(this,k)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(ht!==void 0&&typeof ht!="function")throw new TypeError("fetchMethod must be a function if specified");if(Le(this,B,ht),Le(this,fe,!!ht),Le(this,P,new Map),Le(this,W,new Array(C).fill(void 0)),Le(this,Y,new Array(C).fill(void 0)),Le(this,oe,new et(C)),Le(this,te,new et(C)),Le(this,M,0),Le(this,L,0),Le(this,ie,d.create(C)),Le(this,$,0),Le(this,I,0),typeof Ze=="function"&&Le(this,R,Ze),typeof Tt=="function"?(Le(this,A,Tt),Le(this,re,[])):(Le(this,A,void 0),Le(this,re,void 0)),Le(this,he,!!G(this,R)),Le(this,pe,!!G(this,A)),this.noDisposeOnSet=!!He,this.noUpdateTTL=!!mt,this.noDeleteOnFetchRejection=!!U,this.allowStaleOnFetchRejection=!!Re,this.allowStaleOnFetchAbort=!!Ie,this.ignoreFetchAbort=!!Ne,this.maxEntrySize!==0){if(G(this,k)!==0&&!l(G(this,k)))throw new TypeError("maxSize must be a positive integer if specified");if(!l(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Me(this,j,cw).call(this)}if(this.allowStale=!!ke,this.noDeleteOnStaleGet=!!q,this.updateAgeOnGet=!!_e,this.updateAgeOnHas=!!Ae,this.ttlResolution=l(de)||de===0?de:1,this.ttlAutopurge=!!me,this.ttl=H||0,this.ttl){if(!l(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Me(this,F,wh).call(this)}if(G(this,x)===0&&this.ttl===0&&G(this,k)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!G(this,x)&&!G(this,k)){let ct="LRU_CACHE_UNBOUNDED";a(ct)&&(r.add(ct),o("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",ct,m))}}static unsafeExposeInternals(v){return{starts:G(v,se),ttls:G(v,Q),sizes:G(v,ae),keyMap:G(v,P),keyList:G(v,W),valList:G(v,Y),next:G(v,oe),prev:G(v,te),get head(){return G(v,M)},get tail(){return G(v,L)},free:G(v,ie),isBackgroundFetch:C=>{var H;return Me(H=v,ce,tt).call(H,C)},backgroundFetch:(C,H,de,me)=>{var _e;return Me(_e=v,K,$a).call(_e,C,H,de,me)},moveToTail:C=>{var H;return Me(H=v,h,fs).call(H,C)},indexes:C=>{var H;return Me(H=v,E,xn).call(H,C)},rindexes:C=>{var H;return Me(H=v,S,In).call(H,C)},isStale:C=>{var H;return G(H=v,V).call(H,C)}}}get max(){return G(this,x)}get maxSize(){return G(this,k)}get calculatedSize(){return G(this,I)}get size(){return G(this,$)}get fetchMethod(){return G(this,B)}get dispose(){return G(this,R)}get disposeAfter(){return G(this,A)}getRemainingTTL(v){return G(this,P).has(v)?1/0:0}*entries(){for(let v of Me(this,E,xn).call(this))G(this,Y)[v]!==void 0&&G(this,W)[v]!==void 0&&!Me(this,ce,tt).call(this,G(this,Y)[v])&&(yield[G(this,W)[v],G(this,Y)[v]])}*rentries(){for(let v of Me(this,S,In).call(this))G(this,Y)[v]!==void 0&&G(this,W)[v]!==void 0&&!Me(this,ce,tt).call(this,G(this,Y)[v])&&(yield[G(this,W)[v],G(this,Y)[v]])}*keys(){for(let v of Me(this,E,xn).call(this)){let C=G(this,W)[v];C!==void 0&&!Me(this,ce,tt).call(this,G(this,Y)[v])&&(yield C)}}*rkeys(){for(let v of Me(this,S,In).call(this)){let C=G(this,W)[v];C!==void 0&&!Me(this,ce,tt).call(this,G(this,Y)[v])&&(yield C)}}*values(){for(let v of Me(this,E,xn).call(this))G(this,Y)[v]!==void 0&&!Me(this,ce,tt).call(this,G(this,Y)[v])&&(yield G(this,Y)[v])}*rvalues(){for(let v of Me(this,S,In).call(this))G(this,Y)[v]!==void 0&&!Me(this,ce,tt).call(this,G(this,Y)[v])&&(yield G(this,Y)[v])}[Symbol.iterator](){return this.entries()}find(v,C={}){for(let H of Me(this,E,xn).call(this)){let de=G(this,Y)[H],me=Me(this,ce,tt).call(this,de)?de.__staleWhileFetching:de;if(me!==void 0&&v(me,G(this,W)[H],this))return this.get(G(this,W)[H],C)}}forEach(v,C=this){for(let H of Me(this,E,xn).call(this)){let de=G(this,Y)[H],me=Me(this,ce,tt).call(this,de)?de.__staleWhileFetching:de;me!==void 0&&v.call(C,me,G(this,W)[H],this)}}rforEach(v,C=this){for(let H of Me(this,S,In).call(this)){let de=G(this,Y)[H],me=Me(this,ce,tt).call(this,de)?de.__staleWhileFetching:de;me!==void 0&&v.call(C,me,G(this,W)[H],this)}}purgeStale(){let v=!1;for(let C of Me(this,S,In).call(this,{allowStale:!0}))G(this,V).call(this,C)&&(this.delete(G(this,W)[C]),v=!0);return v}dump(){let v=[];for(let C of Me(this,E,xn).call(this,{allowStale:!0})){let H=G(this,W)[C],de=G(this,Y)[C],me=Me(this,ce,tt).call(this,de)?de.__staleWhileFetching:de;if(me===void 0||H===void 0)continue;let _e={value:me};if(G(this,Q)&&G(this,se)){_e.ttl=G(this,Q)[C];let Ae=t.now()-G(this,se)[C];_e.start=Math.floor(Date.now()-Ae)}G(this,ae)&&(_e.size=G(this,ae)[C]),v.unshift([H,_e])}return v}load(v){this.clear();for(let[C,H]of v){if(H.start){let de=Date.now()-H.start;H.start=t.now()-de}this.set(C,H.value,H)}}set(v,C,H={}){var mt,st,at,Qe,ht;if(C===void 0)return this.delete(v),this;let{ttl:de=this.ttl,start:me,noDisposeOnSet:_e=this.noDisposeOnSet,sizeCalculation:Ae=this.sizeCalculation,status:ke}=H,{noUpdateTTL:Ze=this.noUpdateTTL}=H,Tt=G(this,X).call(this,v,C,H.size||0,Ae);if(this.maxEntrySize&&Tt>this.maxEntrySize)return ke&&(ke.set="miss",ke.maxEntrySizeExceeded=!0),this.delete(v),this;let He=G(this,$)===0?void 0:G(this,P).get(v);if(He===void 0)He=G(this,$)===0?G(this,L):G(this,ie).length!==0?G(this,ie).pop():G(this,$)===G(this,x)?Me(this,J,Da).call(this,!1):G(this,$),G(this,W)[He]=v,G(this,Y)[He]=C,G(this,P).set(v,He),G(this,oe)[G(this,L)]=He,G(this,te)[He]=G(this,L),Le(this,L,He),Xs(this,$)._++,G(this,le).call(this,He,Tt,ke),ke&&(ke.set="add"),Ze=!1;else{Me(this,h,fs).call(this,He);let U=G(this,Y)[He];if(C!==U){if(G(this,fe)&&Me(this,ce,tt).call(this,U)){U.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:q}=U;q!==void 0&&!_e&&(G(this,he)&&((mt=G(this,R))==null||mt.call(this,q,v,"set")),G(this,pe)&&((st=G(this,re))==null||st.push([q,v,"set"])))}else _e||(G(this,he)&&((at=G(this,R))==null||at.call(this,U,v,"set")),G(this,pe)&&((Qe=G(this,re))==null||Qe.push([U,v,"set"])));if(G(this,ue).call(this,He),G(this,le).call(this,He,Tt,ke),G(this,Y)[He]=C,ke){ke.set="replace";let q=U&&Me(this,ce,tt).call(this,U)?U.__staleWhileFetching:U;q!==void 0&&(ke.oldValue=q)}}else ke&&(ke.set="update")}if(de!==0&&!G(this,Q)&&Me(this,F,wh).call(this),G(this,Q)&&(Ze||G(this,ye).call(this,He,de,me),ke&&G(this,Se).call(this,ke,He)),!_e&&G(this,pe)&&G(this,re)){let U=G(this,re),q;for(;q=U==null?void 0:U.shift();)(ht=G(this,A))==null||ht.call(this,...q)}return this}pop(){var v;try{for(;G(this,$);){let C=G(this,Y)[G(this,M)];if(Me(this,J,Da).call(this,!0),Me(this,ce,tt).call(this,C)){if(C.__staleWhileFetching)return C.__staleWhileFetching}else if(C!==void 0)return C}}finally{if(G(this,pe)&&G(this,re)){let C=G(this,re),H;for(;H=C==null?void 0:C.shift();)(v=G(this,A))==null||v.call(this,...H)}}}has(v,C={}){let{updateAgeOnHas:H=this.updateAgeOnHas,status:de}=C,me=G(this,P).get(v);if(me!==void 0){let _e=G(this,Y)[me];if(Me(this,ce,tt).call(this,_e)&&_e.__staleWhileFetching===void 0)return!1;if(G(this,V).call(this,me))de&&(de.has="stale",G(this,Se).call(this,de,me));else return H&&G(this,ge).call(this,me),de&&(de.has="hit",G(this,Se).call(this,de,me)),!0}else de&&(de.has="miss");return!1}peek(v,C={}){let{allowStale:H=this.allowStale}=C,de=G(this,P).get(v);if(de!==void 0&&(H||!G(this,V).call(this,de))){let me=G(this,Y)[de];return Me(this,ce,tt).call(this,me)?me.__staleWhileFetching:me}}async fetch(v,C={}){let{allowStale:H=this.allowStale,updateAgeOnGet:de=this.updateAgeOnGet,noDeleteOnStaleGet:me=this.noDeleteOnStaleGet,ttl:_e=this.ttl,noDisposeOnSet:Ae=this.noDisposeOnSet,size:ke=0,sizeCalculation:Ze=this.sizeCalculation,noUpdateTTL:Tt=this.noUpdateTTL,noDeleteOnFetchRejection:He=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:mt=this.allowStaleOnFetchRejection,ignoreFetchAbort:st=this.ignoreFetchAbort,allowStaleOnFetchAbort:at=this.allowStaleOnFetchAbort,context:Qe,forceRefresh:ht=!1,status:U,signal:q}=C;if(!G(this,fe))return U&&(U.fetch="get"),this.get(v,{allowStale:H,updateAgeOnGet:de,noDeleteOnStaleGet:me,status:U});let Re={allowStale:H,updateAgeOnGet:de,noDeleteOnStaleGet:me,ttl:_e,noDisposeOnSet:Ae,size:ke,sizeCalculation:Ze,noUpdateTTL:Tt,noDeleteOnFetchRejection:He,allowStaleOnFetchRejection:mt,allowStaleOnFetchAbort:at,ignoreFetchAbort:st,status:U,signal:q},Ie=G(this,P).get(v);if(Ie===void 0){U&&(U.fetch="miss");let Ne=Me(this,K,$a).call(this,v,Ie,Re,Qe);return Ne.__returned=Ne}else{let Ne=G(this,Y)[Ie];if(Me(this,ce,tt).call(this,Ne)){let vr=H&&Ne.__staleWhileFetching!==void 0;return U&&(U.fetch="inflight",vr&&(U.returnedStale=!0)),vr?Ne.__staleWhileFetching:Ne.__returned=Ne}let et=G(this,V).call(this,Ie);if(!ht&&!et)return U&&(U.fetch="hit"),Me(this,h,fs).call(this,Ie),de&&G(this,ge).call(this,Ie),U&&G(this,Se).call(this,U,Ie),Ne;let ct=Me(this,K,$a).call(this,v,Ie,Re,Qe),Yo=ct.__staleWhileFetching!==void 0&&H;return U&&(U.fetch=et?"stale":"refresh",Yo&&et&&(U.returnedStale=!0)),Yo?ct.__staleWhileFetching:ct.__returned=ct}}get(v,C={}){let{allowStale:H=this.allowStale,updateAgeOnGet:de=this.updateAgeOnGet,noDeleteOnStaleGet:me=this.noDeleteOnStaleGet,status:_e}=C,Ae=G(this,P).get(v);if(Ae!==void 0){let ke=G(this,Y)[Ae],Ze=Me(this,ce,tt).call(this,ke);return _e&&G(this,Se).call(this,_e,Ae),G(this,V).call(this,Ae)?(_e&&(_e.get="stale"),Ze?(_e&&H&&ke.__staleWhileFetching!==void 0&&(_e.returnedStale=!0),H?ke.__staleWhileFetching:void 0):(me||this.delete(v),_e&&H&&(_e.returnedStale=!0),H?ke:void 0)):(_e&&(_e.get="hit"),Ze?ke.__staleWhileFetching:(Me(this,h,fs).call(this,Ae),de&&G(this,ge).call(this,Ae),ke))}else _e&&(_e.get="miss")}delete(v){var H,de,me,_e;let C=!1;if(G(this,$)!==0){let Ae=G(this,P).get(v);if(Ae!==void 0)if(C=!0,G(this,$)===1)this.clear();else{G(this,ue).call(this,Ae);let ke=G(this,Y)[Ae];Me(this,ce,tt).call(this,ke)?ke.__abortController.abort(new Error("deleted")):(G(this,he)||G(this,pe))&&(G(this,he)&&((H=G(this,R))==null||H.call(this,ke,v,"delete")),G(this,pe)&&((de=G(this,re))==null||de.push([ke,v,"delete"]))),G(this,P).delete(v),G(this,W)[Ae]=void 0,G(this,Y)[Ae]=void 0,Ae===G(this,L)?Le(this,L,G(this,te)[Ae]):Ae===G(this,M)?Le(this,M,G(this,oe)[Ae]):(G(this,oe)[G(this,te)[Ae]]=G(this,oe)[Ae],G(this,te)[G(this,oe)[Ae]]=G(this,te)[Ae]),Xs(this,$)._--,G(this,ie).push(Ae)}}if(G(this,pe)&&((me=G(this,re))!=null&&me.length)){let Ae=G(this,re),ke;for(;ke=Ae==null?void 0:Ae.shift();)(_e=G(this,A))==null||_e.call(this,...ke)}return C}clear(){var v,C,H;for(let de of Me(this,S,In).call(this,{allowStale:!0})){let me=G(this,Y)[de];if(Me(this,ce,tt).call(this,me))me.__abortController.abort(new Error("deleted"));else{let _e=G(this,W)[de];G(this,he)&&((v=G(this,R))==null||v.call(this,me,_e,"delete")),G(this,pe)&&((C=G(this,re))==null||C.push([me,_e,"delete"]))}}if(G(this,P).clear(),G(this,Y).fill(void 0),G(this,W).fill(void 0),G(this,Q)&&G(this,se)&&(G(this,Q).fill(0),G(this,se).fill(0)),G(this,ae)&&G(this,ae).fill(0),Le(this,M,0),Le(this,L,0),G(this,ie).length=0,Le(this,I,0),Le(this,$,0),G(this,pe)&&G(this,re)){let de=G(this,re),me;for(;me=de==null?void 0:de.shift();)(H=G(this,A))==null||H.call(this,...me)}}},x=new WeakMap,k=new WeakMap,R=new WeakMap,A=new WeakMap,B=new WeakMap,$=new WeakMap,I=new WeakMap,P=new WeakMap,W=new WeakMap,Y=new WeakMap,oe=new WeakMap,te=new WeakMap,M=new WeakMap,L=new WeakMap,ie=new WeakMap,re=new WeakMap,ae=new WeakMap,se=new WeakMap,Q=new WeakMap,he=new WeakMap,fe=new WeakMap,pe=new WeakMap,F=new WeakSet,wh=function(){let v=new c(G(this,x)),C=new c(G(this,x));Le(this,Q,v),Le(this,se,C),Le(this,ye,(me,_e,Ae=t.now())=>{if(C[me]=_e!==0?Ae:0,v[me]=_e,_e!==0&&this.ttlAutopurge){let ke=setTimeout(()=>{G(this,V).call(this,me)&&this.delete(G(this,W)[me])},_e+1);ke.unref&&ke.unref()}}),Le(this,ge,me=>{C[me]=v[me]!==0?t.now():0}),Le(this,Se,(me,_e)=>{if(v[_e]){let Ae=v[_e],ke=C[_e];me.ttl=Ae,me.start=ke,me.now=H||de();let Ze=me.now-ke;me.remainingTTL=Ae-Ze}});let H=0,de=()=>{let me=t.now();if(this.ttlResolution>0){H=me;let _e=setTimeout(()=>H=0,this.ttlResolution);_e.unref&&_e.unref()}return me};this.getRemainingTTL=me=>{let _e=G(this,P).get(me);if(_e===void 0)return 0;let Ae=v[_e],ke=C[_e];if(Ae===0||ke===0)return 1/0;let Ze=(H||de())-ke;return Ae-Ze},Le(this,V,me=>v[me]!==0&&C[me]!==0&&(H||de())-C[me]>v[me])},ge=new WeakMap,Se=new WeakMap,ye=new WeakMap,V=new WeakMap,j=new WeakSet,cw=function(){let v=new c(G(this,x));Le(this,I,0),Le(this,ae,v),Le(this,ue,C=>{Le(this,I,G(this,I)-v[C]),v[C]=0}),Le(this,X,(C,H,de,me)=>{if(Me(this,ce,tt).call(this,H))return 0;if(!l(de))if(me){if(typeof me!="function")throw new TypeError("sizeCalculation must be a function");if(de=me(H,C),!l(de))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return de}),Le(this,le,(C,H,de)=>{if(v[C]=H,G(this,k)){let me=G(this,k)-v[C];for(;G(this,I)>me;)Me(this,J,Da).call(this,!0)}Le(this,I,G(this,I)+v[C]),de&&(de.entrySize=H,de.totalCalculatedSize=G(this,I))})},ue=new WeakMap,le=new WeakMap,X=new WeakMap,E=new WeakSet,xn=function*({allowStale:v=this.allowStale}={}){if(G(this,$))for(let C=G(this,L);!(!Me(this,N,vh).call(this,C)||((v||!G(this,V).call(this,C))&&(yield C),C===G(this,M)));)C=G(this,te)[C]},S=new WeakSet,In=function*({allowStale:v=this.allowStale}={}){if(G(this,$))for(let C=G(this,M);!(!Me(this,N,vh).call(this,C)||((v||!G(this,V).call(this,C))&&(yield C),C===G(this,L)));)C=G(this,oe)[C]},N=new WeakSet,vh=function(v){return v!==void 0&&G(this,P).get(G(this,W)[v])===v},J=new WeakSet,Da=function(v){var me,_e;let C=G(this,M),H=G(this,W)[C],de=G(this,Y)[C];return G(this,fe)&&Me(this,ce,tt).call(this,de)?de.__abortController.abort(new Error("evicted")):(G(this,he)||G(this,pe))&&(G(this,he)&&((me=G(this,R))==null||me.call(this,de,H,"evict")),G(this,pe)&&((_e=G(this,re))==null||_e.push([de,H,"evict"]))),G(this,ue).call(this,C),v&&(G(this,W)[C]=void 0,G(this,Y)[C]=void 0,G(this,ie).push(C)),G(this,$)===1?(Le(this,M,Le(this,L,0)),G(this,ie).length=0):Le(this,M,G(this,oe)[C]),G(this,P).delete(H),Xs(this,$)._--,C},K=new WeakSet,$a=function(v,C,H,de){let me=C===void 0?void 0:G(this,Y)[C];if(Me(this,ce,tt).call(this,me))return me;let _e=new i,{signal:Ae}=H;Ae==null||Ae.addEventListener("abort",()=>_e.abort(Ae.reason),{signal:_e.signal});let ke={signal:_e.signal,options:H,context:de},Ze=(Qe,ht=!1)=>{let{aborted:U}=_e.signal,q=H.ignoreFetchAbort&&Qe!==void 0;if(H.status&&(U&&!ht?(H.status.fetchAborted=!0,H.status.fetchError=_e.signal.reason,q&&(H.status.fetchAbortIgnored=!0)):H.status.fetchResolved=!0),U&&!q&&!ht)return He(_e.signal.reason);let Re=st;return G(this,Y)[C]===st&&(Qe===void 0?Re.__staleWhileFetching?G(this,Y)[C]=Re.__staleWhileFetching:this.delete(v):(H.status&&(H.status.fetchUpdated=!0),this.set(v,Qe,ke.options))),Qe},Tt=Qe=>(H.status&&(H.status.fetchRejected=!0,H.status.fetchError=Qe),He(Qe)),He=Qe=>{let{aborted:ht}=_e.signal,U=ht&&H.allowStaleOnFetchAbort,q=U||H.allowStaleOnFetchRejection,Re=q||H.noDeleteOnFetchRejection,Ie=st;if(G(this,Y)[C]===st&&(!Re||Ie.__staleWhileFetching===void 0?this.delete(v):U||(G(this,Y)[C]=Ie.__staleWhileFetching)),q)return H.status&&Ie.__staleWhileFetching!==void 0&&(H.status.returnedStale=!0),Ie.__staleWhileFetching;if(Ie.__returned===Ie)throw Qe},mt=(Qe,ht)=>{var q;let U=(q=G(this,B))==null?void 0:q.call(this,v,me,ke);U&&U instanceof Promise&&U.then(Re=>Qe(Re===void 0?void 0:Re),ht),_e.signal.addEventListener("abort",()=>{(!H.ignoreFetchAbort||H.allowStaleOnFetchAbort)&&(Qe(void 0),H.allowStaleOnFetchAbort&&(Qe=Re=>Ze(Re,!0)))})};H.status&&(H.status.fetchDispatched=!0);let st=new Promise(mt).then(Ze,Tt),at=Object.assign(st,{__abortController:_e,__staleWhileFetching:me,__returned:void 0});return C===void 0?(this.set(v,at,{...ke.options,status:void 0}),C=G(this,P).get(v)):G(this,Y)[C]=at,at},ce=new WeakSet,tt=function(v){if(!G(this,fe))return!1;let C=v;return!!C&&C instanceof Promise&&C.hasOwnProperty("__staleWhileFetching")&&C.__abortController instanceof i},Te=new WeakSet,Eh=function(v,C){G(this,te)[C]=v,G(this,oe)[v]=C},h=new WeakSet,fs=function(v){v!==G(this,L)&&(v===G(this,M)?Le(this,M,G(this,oe)[v]):Me(this,Te,Eh).call(this,G(this,te)[v],G(this,oe)[v]),Me(this,Te,Eh).call(this,G(this,L),v),Le(this,L,v))},m);e.LRUCache=p}),bn=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.ContainerIterator=e.Container=e.Base=void 0;var t=class{constructor(o=0){this.iteratorType=o}equals(o){return this.o===o.o}};e.ContainerIterator=t;var r=class{constructor(){this.i=0}get length(){return this.i}size(){return this.i}empty(){return this.i===0}};e.Base=r;var n=class extends r{};e.Container=n}),FO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=bn(),r=class extends t.Base{constructor(o=[]){super(),this.S=[];let i=this;o.forEach(function(s){i.push(s)})}clear(){this.i=0,this.S=[]}push(o){return this.S.push(o),this.i+=1,this.i}pop(){if(this.i!==0)return this.i-=1,this.S.pop()}top(){return this.S[this.i-1]}},n=r;e.default=n}),jO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=bn(),r=class extends t.Base{constructor(o=[]){super(),this.j=0,this.q=[];let i=this;o.forEach(function(s){i.push(s)})}clear(){this.q=[],this.i=this.j=0}push(o){let i=this.q.length;if(this.j/i>.5&&this.j+this.i>=i&&i>4096){let s=this.i;for(let a=0;a<s;++a)this.q[a]=this.q[this.j+a];this.j=0,this.q[this.i]=o}else this.q[this.j+this.i]=o;return++this.i}pop(){if(this.i===0)return;let o=this.q[this.j++];return this.i-=1,o}front(){if(this.i!==0)return this.q[this.j]}},n=r;e.default=n}),WO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=bn(),r=class extends t.Base{constructor(o=[],i=function(a,l){return a>l?-1:a<l?1:0},s=!0){if(super(),this.v=i,Array.isArray(o))this.C=s?[...o]:o;else{this.C=[];let l=this;o.forEach(function(u){l.C.push(u)})}this.i=this.C.length;let a=this.i>>1;for(let l=this.i-1>>1;l>=0;--l)this.k(l,a)}m(o){let i=this.C[o];for(;o>0;){let s=o-1>>1,a=this.C[s];if(this.v(a,i)<=0)break;this.C[o]=a,o=s}this.C[o]=i}k(o,i){let s=this.C[o];for(;o<i;){let a=o<<1|1,l=a+1,u=this.C[a];if(l<this.i&&this.v(u,this.C[l])>0&&(a=l,u=this.C[l]),this.v(u,s)>=0)break;this.C[o]=u,o=a}this.C[o]=s}clear(){this.i=0,this.C.length=0}push(o){this.C.push(o),this.m(this.i),this.i+=1}pop(){if(this.i===0)return;let o=this.C[0],i=this.C.pop();return this.i-=1,this.i&&(this.C[0]=i,this.k(0,this.i>>1)),o}top(){return this.C[0]}find(o){return this.C.indexOf(o)>=0}remove(o){let i=this.C.indexOf(o);return i<0?!1:(i===0?this.pop():i===this.i-1?(this.C.pop(),this.i-=1):(this.C.splice(i,1,this.C.pop()),this.i-=1,this.m(i),this.k(i,this.i>>1)),!0)}updateItem(o){let i=this.C.indexOf(o);return i<0?!1:(this.m(i),this.k(i,this.i>>1),!0)}toArray(){return[...this.C]}},n=r;e.default=n}),tp=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=bn(),r=class extends t.Container{},n=r;e.default=n}),wn=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.throwIteratorAccessError=t;function t(){throw new RangeError("Iterator access denied!")}}),fw=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.RandomIterator=void 0;var t=bn(),r=wn(),n=class extends t.ContainerIterator{constructor(o,i){super(i),this.o=o,this.iteratorType===0?(this.pre=function(){return this.o===0&&(0,r.throwIteratorAccessError)(),this.o-=1,this},this.next=function(){return this.o===this.container.size()&&(0,r.throwIteratorAccessError)(),this.o+=1,this}):(this.pre=function(){return this.o===this.container.size()-1&&(0,r.throwIteratorAccessError)(),this.o+=1,this},this.next=function(){return this.o===-1&&(0,r.throwIteratorAccessError)(),this.o-=1,this})}get pointer(){return this.container.getElementByPos(this.o)}set pointer(o){this.container.setElementByPos(this.o,o)}};e.RandomIterator=n}),HO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(tp()),r=fw();function n(a){return a&&a.t?a:{default:a}}var o=class hw extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new hw(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(a=[],l=!0){if(super(),Array.isArray(a))this.J=l?[...a]:a,this.i=a.length;else{this.J=[];let u=this;a.forEach(function(c){u.pushBack(c)})}}clear(){this.i=0,this.J.length=0}begin(){return new o(0,this)}end(){return new o(this.i,this)}rBegin(){return new o(this.i-1,this,1)}rEnd(){return new o(-1,this,1)}front(){return this.J[0]}back(){return this.J[this.i-1]}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J[a]}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J.splice(a,1),this.i-=1,this.i}eraseElementByValue(a){let l=0;for(let u=0;u<this.i;++u)this.J[u]!==a&&(this.J[l++]=this.J[u]);return this.i=this.J.length=l,this.i}eraseElementByIterator(a){let l=a.o;return a=a.next(),this.eraseElementByPos(l),a}pushBack(a){return this.J.push(a),this.i+=1,this.i}popBack(){if(this.i!==0)return this.i-=1,this.J.pop()}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;this.J[a]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;return this.J.splice(a,0,...new Array(u).fill(l)),this.i+=u,this.i}find(a){for(let l=0;l<this.i;++l)if(this.J[l]===a)return new o(l,this);return this.end()}reverse(){this.J.reverse()}unique(){let a=1;for(let l=1;l<this.i;++l)this.J[l]!==this.J[l-1]&&(this.J[a++]=this.J[l]);return this.i=this.J.length=a,this.i}sort(a){this.J.sort(a)}forEach(a){for(let l=0;l<this.i;++l)a(this.J[l],l,this)}[Symbol.iterator](){return(function*(){yield*this.J}).bind(this)()}},s=i;e.default=s}),VO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(tp()),r=bn(),n=wn();function o(l){return l&&l.t?l:{default:l}}var i=class dw extends r.ContainerIterator{constructor(u,c,d,p){super(p),this.o=u,this.h=c,this.container=d,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l}set pointer(u){this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l=u}copy(){return new dw(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[]){super(),this.h={},this.p=this._=this.h.L=this.h.B=this.h;let u=this;l.forEach(function(c){u.pushBack(c)})}V(l){let{L:u,B:c}=l;u.B=c,c.L=u,l===this.p&&(this.p=c),l===this._&&(this._=u),this.i-=1}G(l,u){let c=u.B,d={l,L:u,B:c};u.B=d,c.L=d,u===this.h&&(this.p=d),c===this.h&&(this._=d),this.i+=1}clear(){this.i=0,this.p=this._=this.h.L=this.h.B=this.h}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.p.l}back(){return this._.l}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return u.l}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return this.V(u),this.i}eraseElementByValue(l){let u=this.p;for(;u!==this.h;)u.l===l&&this.V(u),u=u.B;return this.i}eraseElementByIterator(l){let u=l.o;return u===this.h&&(0,n.throwIteratorAccessError)(),l=l.next(),this.V(u),l}pushBack(l){return this.G(l,this._),this.i}popBack(){if(this.i===0)return;let l=this._.l;return this.V(this._),l}pushFront(l){return this.G(l,this.h),this.i}popFront(){if(this.i===0)return;let l=this.p.l;return this.V(this.p),l}setElementByPos(l,u){if(l<0||l>this.i-1)throw new RangeError;let c=this.p;for(;l--;)c=c.B;c.l=u}insert(l,u,c=1){if(l<0||l>this.i)throw new RangeError;if(c<=0)return this.i;if(l===0)for(;c--;)this.pushFront(u);else if(l===this.i)for(;c--;)this.pushBack(u);else{let d=this.p;for(let g=1;g<l;++g)d=d.B;let p=d.B;for(this.i+=c;c--;)d.B={l:u,L:d},d.B.L=d,d=d.B;d.B=p,p.L=d}return this.i}find(l){let u=this.p;for(;u!==this.h;){if(u.l===l)return new i(u,this.h,this);u=u.B}return this.end()}reverse(){if(this.i<=1)return;let l=this.p,u=this._,c=0;for(;c<<1<this.i;){let d=l.l;l.l=u.l,u.l=d,l=l.B,u=u.L,c+=1}}unique(){if(this.i<=1)return this.i;let l=this.p;for(;l!==this.h;){let u=l;for(;u.B!==this.h&&u.l===u.B.l;)u=u.B,this.i-=1;l.B=u.B,l.B.L=l,l=l.B}return this.i}sort(l){if(this.i<=1)return;let u=[];this.forEach(function(d){u.push(d)}),u.sort(l);let c=this.p;u.forEach(function(d){c.l=d,c=c.B})}merge(l){let u=this;if(this.i===0)l.forEach(function(c){u.pushBack(c)});else{let c=this.p;l.forEach(function(d){for(;c!==u.h&&c.l<=d;)c=c.B;u.G(d,c.L)})}return this.i}forEach(l){let u=this.p,c=0;for(;u!==this.h;)l(u.l,c++,this),u=u.B}[Symbol.iterator](){return(function*(){if(this.i===0)return;let l=this.p;for(;l!==this.h;)yield l.l,l=l.B}).bind(this)()}},a=s;e.default=a}),qO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(tp()),r=fw();function n(a){return a&&a.t?a:{default:a}}var o=class pw extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new pw(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(a=[],l=4096){super(),this.j=0,this.D=0,this.R=0,this.N=0,this.P=0,this.A=[];let u=(()=>{if(typeof a.length=="number")return a.length;if(typeof a.size=="number")return a.size;if(typeof a.size=="function")return a.size();throw new TypeError("Cannot get the length or size of the container")})();this.F=l,this.P=Math.max(Math.ceil(u/this.F),1);for(let p=0;p<this.P;++p)this.A.push(new Array(this.F));let c=Math.ceil(u/this.F);this.j=this.R=(this.P>>1)-(c>>1),this.D=this.N=this.F-u%this.F>>1;let d=this;a.forEach(function(p){d.pushBack(p)})}T(){let a=[],l=Math.max(this.P>>1,1);for(let u=0;u<l;++u)a[u]=new Array(this.F);for(let u=this.j;u<this.P;++u)a[a.length]=this.A[u];for(let u=0;u<this.R;++u)a[a.length]=this.A[u];a[a.length]=[...this.A[this.R]],this.j=l,this.R=a.length-1;for(let u=0;u<l;++u)a[a.length]=new Array(this.F);this.A=a,this.P=a.length}O(a){let l=this.D+a+1,u=l%this.F,c=u-1,d=this.j+(l-u)/this.F;return u===0&&(d-=1),d%=this.P,c<0&&(c+=this.F),{curNodeBucketIndex:d,curNodePointerIndex:c}}clear(){this.A=[new Array(this.F)],this.P=1,this.j=this.R=this.i=0,this.D=this.N=this.F>>1}begin(){return new o(0,this)}end(){return new o(this.i,this)}rBegin(){return new o(this.i-1,this,1)}rEnd(){return new o(-1,this,1)}front(){if(this.i!==0)return this.A[this.j][this.D]}back(){if(this.i!==0)return this.A[this.R][this.N]}pushBack(a){return this.i&&(this.N<this.F-1?this.N+=1:this.R<this.P-1?(this.R+=1,this.N=0):(this.R=0,this.N=0),this.R===this.j&&this.N===this.D&&this.T()),this.i+=1,this.A[this.R][this.N]=a,this.i}popBack(){if(this.i===0)return;let a=this.A[this.R][this.N];return this.i!==1&&(this.N>0?this.N-=1:this.R>0?(this.R-=1,this.N=this.F-1):(this.R=this.P-1,this.N=this.F-1)),this.i-=1,a}pushFront(a){return this.i&&(this.D>0?this.D-=1:this.j>0?(this.j-=1,this.D=this.F-1):(this.j=this.P-1,this.D=this.F-1),this.j===this.R&&this.D===this.N&&this.T()),this.i+=1,this.A[this.j][this.D]=a,this.i}popFront(){if(this.i===0)return;let a=this.A[this.j][this.D];return this.i!==1&&(this.D<this.F-1?this.D+=1:this.j<this.P-1?(this.j+=1,this.D=0):(this.j=0,this.D=0)),this.i-=1,a}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.A[l][u]}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:u,curNodePointerIndex:c}=this.O(a);this.A[u][c]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;if(a===0)for(;u--;)this.pushFront(l);else if(a===this.i)for(;u--;)this.pushBack(l);else{let c=[];for(let d=a;d<this.i;++d)c.push(this.getElementByPos(d));this.cut(a-1);for(let d=0;d<u;++d)this.pushBack(l);for(let d=0;d<c.length;++d)this.pushBack(c[d])}return this.i}cut(a){if(a<0)return this.clear(),0;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.R=l,this.N=u,this.i=a+1,this.i}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;if(a===0)this.popFront();else if(a===this.i-1)this.popBack();else{let l=[];for(let c=a+1;c<this.i;++c)l.push(this.getElementByPos(c));this.cut(a),this.popBack();let u=this;l.forEach(function(c){u.pushBack(c)})}return this.i}eraseElementByValue(a){if(this.i===0)return 0;let l=[];for(let c=0;c<this.i;++c){let d=this.getElementByPos(c);d!==a&&l.push(d)}let u=l.length;for(let c=0;c<u;++c)this.setElementByPos(c,l[c]);return this.cut(u-1)}eraseElementByIterator(a){let l=a.o;return this.eraseElementByPos(l),a=a.next(),a}find(a){for(let l=0;l<this.i;++l)if(this.getElementByPos(l)===a)return new o(l,this);return this.end()}reverse(){let a=0,l=this.i-1;for(;a<l;){let u=this.getElementByPos(a);this.setElementByPos(a,this.getElementByPos(l)),this.setElementByPos(l,u),a+=1,l-=1}}unique(){if(this.i<=1)return this.i;let a=1,l=this.getElementByPos(0);for(let u=1;u<this.i;++u){let c=this.getElementByPos(u);c!==l&&(l=c,this.setElementByPos(a++,c))}for(;this.i>a;)this.popBack();return this.i}sort(a){let l=[];for(let u=0;u<this.i;++u)l.push(this.getElementByPos(u));l.sort(a);for(let u=0;u<this.i;++u)this.setElementByPos(u,l[u])}shrinkToFit(){if(this.i===0)return;let a=[];this.forEach(function(l){a.push(l)}),this.P=Math.max(Math.ceil(this.i/this.F),1),this.i=this.j=this.R=this.D=this.N=0,this.A=[];for(let l=0;l<this.P;++l)this.A.push(new Array(this.F));for(let l=0;l<a.length;++l)this.pushBack(a[l])}forEach(a){for(let l=0;l<this.i;++l)a(this.getElementByPos(l),l,this)}[Symbol.iterator](){return(function*(){for(let a=0;a<this.i;++a)yield this.getElementByPos(a)}).bind(this)()}},s=i;e.default=s}),KO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.TreeNodeEnableIndex=e.TreeNode=void 0;var t=class{constructor(n,o){this.ee=1,this.u=void 0,this.l=void 0,this.U=void 0,this.W=void 0,this.tt=void 0,this.u=n,this.l=o}L(){let n=this;if(n.ee===1&&n.tt.tt===n)n=n.W;else if(n.U)for(n=n.U;n.W;)n=n.W;else{let o=n.tt;for(;o.U===n;)n=o,o=n.tt;n=o}return n}B(){let n=this;if(n.W){for(n=n.W;n.U;)n=n.U;return n}else{let o=n.tt;for(;o.W===n;)n=o,o=n.tt;return n.W!==o?o:n}}te(){let n=this.tt,o=this.W,i=o.U;return n.tt===this?n.tt=o:n.U===this?n.U=o:n.W=o,o.tt=n,o.U=this,this.tt=o,this.W=i,i&&(i.tt=this),o}se(){let n=this.tt,o=this.U,i=o.W;return n.tt===this?n.tt=o:n.U===this?n.U=o:n.W=o,o.tt=n,o.W=this,this.tt=o,this.U=i,i&&(i.tt=this),o}};e.TreeNode=t;var r=class extends t{constructor(){super(...arguments),this.rt=1}te(){let n=super.te();return this.ie(),n.ie(),n}se(){let n=super.se();return this.ie(),n.ie(),n}ie(){this.rt=1,this.U&&(this.rt+=this.U.rt),this.W&&(this.rt+=this.W.rt)}};e.TreeNodeEnableIndex=r}),gw=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=KO(),r=bn(),n=wn(),o=class extends r.Container{constructor(s=function(l,u){return l<u?-1:l>u?1:0},a=!1){super(),this.Y=void 0,this.v=s,a?(this.re=t.TreeNodeEnableIndex,this.M=function(l,u,c){let d=this.ne(l,u,c);if(d){let p=d.tt;for(;p!==this.h;)p.rt+=1,p=p.tt;let g=this.he(d);if(g){let{parentNode:_,grandParent:b,curNode:x}=g;_.ie(),b.ie(),x.ie()}}return this.i},this.V=function(l){let u=this.fe(l);for(;u!==this.h;)u.rt-=1,u=u.tt}):(this.re=t.TreeNode,this.M=function(l,u,c){let d=this.ne(l,u,c);return d&&this.he(d),this.i},this.V=this.fe),this.h=new this.re}X(s,a){let l=this.h;for(;s;){let u=this.v(s.u,a);if(u<0)s=s.W;else if(u>0)l=s,s=s.U;else return s}return l}Z(s,a){let l=this.h;for(;s;)this.v(s.u,a)<=0?s=s.W:(l=s,s=s.U);return l}$(s,a){let l=this.h;for(;s;){let u=this.v(s.u,a);if(u<0)l=s,s=s.W;else if(u>0)s=s.U;else return s}return l}rr(s,a){let l=this.h;for(;s;)this.v(s.u,a)<0?(l=s,s=s.W):s=s.U;return l}ue(s){for(;;){let a=s.tt;if(a===this.h)return;if(s.ee===1){s.ee=0;return}if(s===a.U){let l=a.W;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.te():a.te();else if(l.W&&l.W.ee===1){l.ee=a.ee,a.ee=0,l.W.ee=0,a===this.Y?this.Y=a.te():a.te();return}else l.U&&l.U.ee===1?(l.ee=1,l.U.ee=0,l.se()):(l.ee=1,s=a)}else{let l=a.U;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.se():a.se();else if(l.U&&l.U.ee===1){l.ee=a.ee,a.ee=0,l.U.ee=0,a===this.Y?this.Y=a.se():a.se();return}else l.W&&l.W.ee===1?(l.ee=1,l.W.ee=0,l.te()):(l.ee=1,s=a)}}}fe(s){if(this.i===1)return this.clear(),this.h;let a=s;for(;a.U||a.W;){if(a.W)for(a=a.W;a.U;)a=a.U;else a=a.U;[s.u,a.u]=[a.u,s.u],[s.l,a.l]=[a.l,s.l],s=a}this.h.U===a?this.h.U=a.tt:this.h.W===a&&(this.h.W=a.tt),this.ue(a);let l=a.tt;return a===l.U?l.U=void 0:l.W=void 0,this.i-=1,this.Y.ee=0,l}oe(s,a){return s===void 0?!1:this.oe(s.U,a)||a(s)?!0:this.oe(s.W,a)}he(s){for(;;){let a=s.tt;if(a.ee===0)return;let l=a.tt;if(a===l.U){let u=l.W;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,s=l;continue}else if(s===a.W){if(s.ee=0,s.U&&(s.U.tt=a),s.W&&(s.W.tt=l),a.W=s.U,l.U=s.W,s.U=a,s.W=l,l===this.Y)this.Y=s,this.h.tt=s;else{let c=l.tt;c.U===l?c.U=s:c.W=s}return s.tt=l.tt,a.tt=s,l.tt=s,l.ee=1,{parentNode:a,grandParent:l,curNode:s}}else a.ee=0,l===this.Y?this.Y=l.se():l.se(),l.ee=1}else{let u=l.U;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,s=l;continue}else if(s===a.U){if(s.ee=0,s.U&&(s.U.tt=l),s.W&&(s.W.tt=a),l.W=s.U,a.U=s.W,s.U=l,s.W=a,l===this.Y)this.Y=s,this.h.tt=s;else{let c=l.tt;c.U===l?c.U=s:c.W=s}return s.tt=l.tt,a.tt=s,l.tt=s,l.ee=1,{parentNode:a,grandParent:l,curNode:s}}else a.ee=0,l===this.Y?this.Y=l.te():l.te(),l.ee=1}return}}ne(s,a,l){if(this.Y===void 0){this.i+=1,this.Y=new this.re(s,a),this.Y.ee=0,this.Y.tt=this.h,this.h.tt=this.Y,this.h.U=this.Y,this.h.W=this.Y;return}let u,c=this.h.U,d=this.v(c.u,s);if(d===0){c.l=a;return}else if(d>0)c.U=new this.re(s,a),c.U.tt=c,u=c.U,this.h.U=u;else{let p=this.h.W,g=this.v(p.u,s);if(g===0){p.l=a;return}else if(g<0)p.W=new this.re(s,a),p.W.tt=p,u=p.W,this.h.W=u;else{if(l!==void 0){let _=l.o;if(_!==this.h){let b=this.v(_.u,s);if(b===0){_.l=a;return}else if(b>0){let x=_.L(),k=this.v(x.u,s);if(k===0){x.l=a;return}else k<0&&(u=new this.re(s,a),x.W===void 0?(x.W=u,u.tt=x):(_.U=u,u.tt=_))}}}if(u===void 0)for(u=this.Y;;){let _=this.v(u.u,s);if(_>0){if(u.U===void 0){u.U=new this.re(s,a),u.U.tt=u,u=u.U;break}u=u.U}else if(_<0){if(u.W===void 0){u.W=new this.re(s,a),u.W.tt=u,u=u.W;break}u=u.W}else{u.l=a;return}}}}return this.i+=1,u}I(s,a){for(;s;){let l=this.v(s.u,a);if(l<0)s=s.W;else if(l>0)s=s.U;else return s}return s||this.h}clear(){this.i=0,this.Y=void 0,this.h.tt=void 0,this.h.U=this.h.W=void 0}updateKeyByIterator(s,a){let l=s.o;if(l===this.h&&(0,n.throwIteratorAccessError)(),this.i===1)return l.u=a,!0;if(l===this.h.U)return this.v(l.B().u,a)>0?(l.u=a,!0):!1;if(l===this.h.W)return this.v(l.L().u,a)<0?(l.u=a,!0):!1;let u=l.L().u;if(this.v(u,a)>=0)return!1;let c=l.B().u;return this.v(c,a)<=0?!1:(l.u=a,!0)}eraseElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a=0,l=this;return this.oe(this.Y,function(u){return s===a?(l.V(u),!0):(a+=1,!1)}),this.i}eraseElementByKey(s){if(this.i===0)return!1;let a=this.I(this.Y,s);return a===this.h?!1:(this.V(a),!0)}eraseElementByIterator(s){let a=s.o;a===this.h&&(0,n.throwIteratorAccessError)();let l=a.W===void 0;return s.iteratorType===0?l&&s.next():(!l||a.U===void 0)&&s.next(),this.V(a),s}forEach(s){let a=0;for(let l of this)s(l,a++,this)}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a,l=0;for(let u of this){if(l===s){a=u;break}l+=1}return a}getHeight(){if(this.i===0)return 0;let s=function(a){return a?Math.max(s(a.U),s(a.W))+1:0};return s(this.Y)}},i=o;e.default=i}),mw=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=bn(),r=wn(),n=class extends t.ContainerIterator{constructor(i,s,a){super(a),this.o=i,this.h=s,this.iteratorType===0?(this.pre=function(){return this.o===this.h.U&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this}):(this.pre=function(){return this.o===this.h.W&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this})}get index(){let i=this.o,s=this.h.tt;if(i===this.h)return s?s.rt-1:0;let a=0;for(i.U&&(a+=i.U.rt);i!==s;){let l=i.tt;i===l.W&&(a+=1,l.U&&(a+=l.U.rt)),i=l}return a}},o=n;e.default=o}),YO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(gw()),r=o(mw()),n=wn();function o(l){return l&&l.t?l:{default:l}}var i=class yw extends r.default{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.u}copy(){return new yw(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[],u,c){super(u,c);let d=this;l.forEach(function(p){d.insert(p)})}*K(l){l!==void 0&&(yield*this.K(l.U),yield l.u,yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.h.U?this.h.U.u:void 0}back(){return this.h.W?this.h.W.u:void 0}insert(l,u){return this.M(l,void 0,u)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}union(l){let u=this;return l.forEach(function(c){u.insert(c)}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=s;e.default=a}),zO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(gw()),r=o(mw()),n=wn();function o(l){return l&&l.t?l:{default:l}}var i=class _w extends r.default{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,d){if(d==="0")return u.o.u;if(d==="1")return u.o.l},set(c,d,p){if(d!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new _w(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[],u,c){super(u,c);let d=this;l.forEach(function(p){d.setElement(p[0],p[1])})}*K(l){l!==void 0&&(yield*this.K(l.U),yield[l.u,l.l],yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i===0)return;let l=this.h.U;return[l.u,l.l]}back(){if(this.i===0)return;let l=this.h.W;return[l.u,l.l]}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}setElement(l,u,c){return this.M(l,u,c)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}getElementByKey(l){return this.I(this.Y,l).l}union(l){let u=this;return l.forEach(function(c){u.setElement(c[0],c[1])}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=s;e.default=a}),bw=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=t;function t(r){let n=typeof r;return n==="object"&&r!==null||n==="function"}}),ww=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.HashContainerIterator=e.HashContainer=void 0;var t=bn(),r=o(bw()),n=wn();function o(a){return a&&a.t?a:{default:a}}var i=class extends t.ContainerIterator{constructor(a,l,u){super(u),this.o=a,this.h=l,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}};e.HashContainerIterator=i;var s=class extends t.Container{constructor(){super(),this.H=[],this.g={},this.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(this.g,null),this.h={},this.h.L=this.h.B=this.p=this._=this.h}V(a){let{L:l,B:u}=a;l.B=u,u.L=l,a===this.p&&(this.p=u),a===this._&&(this._=l),this.i-=1}M(a,l,u){u===void 0&&(u=(0,r.default)(a));let c;if(u){let d=a[this.HASH_TAG];if(d!==void 0)return this.H[d].l=l,this.i;Object.defineProperty(a,this.HASH_TAG,{value:this.H.length,configurable:!0}),c={u:a,l,L:this._,B:this.h},this.H.push(c)}else{let d=this.g[a];if(d)return d.l=l,this.i;c={u:a,l,L:this._,B:this.h},this.g[a]=c}return this.i===0?(this.p=c,this.h.B=c):this._.B=c,this._=c,this.h.L=c,++this.i}I(a,l){if(l===void 0&&(l=(0,r.default)(a)),l){let u=a[this.HASH_TAG];return u===void 0?this.h:this.H[u]}else return this.g[a]||this.h}clear(){let a=this.HASH_TAG;this.H.forEach(function(l){delete l.u[a]}),this.H=[],this.g={},Object.setPrototypeOf(this.g,null),this.i=0,this.p=this._=this.h.L=this.h.B=this.h}eraseElementByKey(a,l){let u;if(l===void 0&&(l=(0,r.default)(a)),l){let c=a[this.HASH_TAG];if(c===void 0)return!1;delete a[this.HASH_TAG],u=this.H[c],delete this.H[c]}else{if(u=this.g[a],u===void 0)return!1;delete this.g[a]}return this.V(u),!0}eraseElementByIterator(a){let l=a.o;return l===this.h&&(0,n.throwIteratorAccessError)(),this.V(l),a.next()}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let l=this.p;for(;a--;)l=l.B;return this.V(l),this.i}};e.HashContainer=s}),GO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=ww(),r=wn(),n=class vw extends t.HashContainerIterator{constructor(a,l,u,c){super(a,l,c),this.container=u}get pointer(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o.u}copy(){return new vw(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.HashContainer{constructor(s=[]){super();let a=this;s.forEach(function(l){a.insert(l)})}begin(){return new n(this.p,this.h,this)}end(){return new n(this.h,this.h,this)}rBegin(){return new n(this._,this.h,this,1)}rEnd(){return new n(this.h,this.h,this,1)}front(){return this.p.u}back(){return this._.u}insert(s,a){return this.M(s,void 0,a)}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a=this.p;for(;s--;)a=a.B;return a.u}find(s,a){let l=this.I(s,a);return new n(l,this.h,this)}forEach(s){let a=0,l=this.p;for(;l!==this.h;)s(l.u,a++,this),l=l.B}[Symbol.iterator](){return(function*(){let s=this.p;for(;s!==this.h;)yield s.u,s=s.B}).bind(this)()}},i=o;e.default=i}),QO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=ww(),r=o(bw()),n=wn();function o(l){return l&&l.t?l:{default:l}}var i=class Ew extends t.HashContainerIterator{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,d){if(d==="0")return u.o.u;if(d==="1")return u.o.l},set(c,d,p){if(d!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new Ew(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.HashContainer{constructor(l=[]){super();let u=this;l.forEach(function(c){u.setElement(c[0],c[1])})}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i!==0)return[this.p.u,this.p.l]}back(){if(this.i!==0)return[this._.u,this._.l]}setElement(l,u,c){return this.M(l,u,c)}getElementByKey(l,u){if(u===void 0&&(u=(0,r.default)(l)),u){let d=l[this.HASH_TAG];return d!==void 0?this.H[d].l:void 0}let c=this.g[l];return c?c.l:void 0}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return[u.u,u.l]}find(l,u){let c=this.I(l,u);return new i(c,this.h,this)}forEach(l){let u=0,c=this.p;for(;c!==this.h;)l([c.u,c.l],u++,this),c=c.B}[Symbol.iterator](){return(function*(){let l=this.p;for(;l!==this.h;)yield[l.u,l.l],l=l.B}).bind(this)()}},a=s;e.default=a}),XO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"t",{value:!0}),Object.defineProperty(e,"Deque",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"HashMap",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"HashSet",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"LinkList",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"OrderedMap",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"OrderedSet",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"PriorityQueue",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"Queue",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"Stack",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"Vector",{enumerable:!0,get:function(){return o.default}});var t=d(FO()),r=d(jO()),n=d(WO()),o=d(HO()),i=d(VO()),s=d(qO()),a=d(YO()),l=d(zO()),u=d(GO()),c=d(QO());function d(p){return p&&p.t?p:{default:p}}}),JO=Oe((e,t)=>{we(),Ee(),ve();var r=XO().OrderedSet,n=cn()("number-allocator:trace"),o=cn()("number-allocator:error");function i(a,l){this.low=a,this.high=l}i.prototype.equals=function(a){return this.low===a.low&&this.high===a.high},i.prototype.compare=function(a){return this.low<a.low&&this.high<a.low?-1:a.low<this.low&&a.high<this.low?1:0};function s(a,l){if(!(this instanceof s))return new s(a,l);this.min=a,this.max=l,this.ss=new r([],(u,c)=>u.compare(c)),n("Create"),this.clear()}s.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low},s.prototype.alloc=function(){if(this.ss.size()===0)return n("alloc():empty"),null;let a=this.ss.begin(),l=a.pointer.low,u=a.pointer.high,c=l;return c+1<=u?this.ss.updateKeyByIterator(a,new i(l+1,u)):this.ss.eraseElementByPos(0),n("alloc():"+c),c},s.prototype.use=function(a){let l=new i(a,a),u=this.ss.lowerBound(l);if(!u.equals(this.ss.end())){let c=u.pointer.low,d=u.pointer.high;return u.pointer.equals(l)?(this.ss.eraseElementByIterator(u),n("use():"+a),!0):c>a?!1:c===a?(this.ss.updateKeyByIterator(u,new i(c+1,d)),n("use():"+a),!0):d===a?(this.ss.updateKeyByIterator(u,new i(c,d-1)),n("use():"+a),!0):(this.ss.updateKeyByIterator(u,new i(a+1,d)),this.ss.insert(new i(c,a-1)),n("use():"+a),!0)}return n("use():failed"),!1},s.prototype.free=function(a){if(a<this.min||a>this.max){o("free():"+a+" is out of range");return}let l=new i(a,a),u=this.ss.upperBound(l);if(u.equals(this.ss.end())){if(u.equals(this.ss.begin())){this.ss.insert(l);return}u.pre();let c=u.pointer.high;u.pointer.high+1===a?this.ss.updateKeyByIterator(u,new i(c,a)):this.ss.insert(l)}else if(u.equals(this.ss.begin()))if(a+1===u.pointer.low){let c=u.pointer.high;this.ss.updateKeyByIterator(u,new i(a,c))}else this.ss.insert(l);else{let c=u.pointer.low,d=u.pointer.high;u.pre();let p=u.pointer.low;u.pointer.high+1===a?a+1===c?(this.ss.eraseElementByIterator(u),this.ss.updateKeyByIterator(u,new i(p,d))):this.ss.updateKeyByIterator(u,new i(p,a)):a+1===c?(this.ss.eraseElementByIterator(u.next()),this.ss.insert(new i(a,d))):this.ss.insert(l)}n("free():"+a)},s.prototype.clear=function(){n("clear()"),this.ss.clear(),this.ss.insert(new i(this.min,this.max))},s.prototype.intervalCount=function(){return this.ss.size()},s.prototype.dump=function(){console.log("length:"+this.ss.size());for(let a of this.ss)console.log(a)},t.exports=s}),Sw=Oe((e,t)=>{we(),Ee(),ve();var r=JO();t.exports.NumberAllocator=r}),ZO=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0});var t=UO(),r=Sw(),n=class{constructor(o){o>0&&(this.aliasToTopic=new t.LRUCache({max:o}),this.topicToAlias={},this.numberAllocator=new r.NumberAllocator(1,o),this.max=o,this.length=0)}put(o,i){if(i===0||i>this.max)return!1;let s=this.aliasToTopic.get(i);return s&&delete this.topicToAlias[s],this.aliasToTopic.set(i,o),this.topicToAlias[o]=i,this.numberAllocator.use(i),this.length=this.aliasToTopic.size,!0}getTopicByAlias(o){return this.aliasToTopic.get(o)}getAliasByTopic(o){let i=this.topicToAlias[o];return typeof i<"u"&&this.aliasToTopic.get(i),i}clear(){this.aliasToTopic.clear(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0}getLruAlias(){return this.numberAllocator.firstVacant()||[...this.aliasToTopic.keys()][this.aliasToTopic.size-1]}};e.default=n}),ek=Oe(e=>{we(),Ee(),ve();var t=e&&e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(e,"__esModule",{value:!0});var r=iu(),n=t(ZO()),o=Vo(),i=(s,a)=>{s.log("_handleConnack");let{options:l}=s,u=l.protocolVersion===5?a.reasonCode:a.returnCode;if(clearTimeout(s.connackTimer),delete s.topicAliasSend,a.properties){if(a.properties.topicAliasMaximum){if(a.properties.topicAliasMaximum>65535){s.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}a.properties.topicAliasMaximum>0&&(s.topicAliasSend=new n.default(a.properties.topicAliasMaximum))}a.properties.serverKeepAlive&&l.keepalive&&(l.keepalive=a.properties.serverKeepAlive),a.properties.maximumPacketSize&&(l.properties||(l.properties={}),l.properties.maximumPacketSize=a.properties.maximumPacketSize)}if(u===0)s.reconnecting=!1,s._onConnect(a);else if(u>0){let c=new o.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[u]}`,u);s.emit("error",c)}};e.default=i}),tk=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0});var t=(r,n,o)=>{r.log("handling pubrel packet");let i=typeof o<"u"?o:r.noop,{messageId:s}=n,a={cmd:"pubcomp",messageId:s};r.incomingStore.get(n,(l,u)=>{l?r._sendPacket(a,i):(r.emit("message",u.topic,u.payload,u),r.handleMessage(u,c=>{if(c)return i(c);r.incomingStore.del(u,r.noop),r._sendPacket(a,i)}))})};e.default=t}),rk=Oe(e=>{we(),Ee(),ve();var t=e&&e.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(BO()),n=t($O()),o=t(ek()),i=t(iu()),s=t(tk()),a=(l,u,c)=>{let{options:d}=l;if(d.protocolVersion===5&&d.properties&&d.properties.maximumPacketSize&&d.properties.maximumPacketSize<u.length)return l.emit("error",new Error(`exceeding packets size ${u.cmd}`)),l.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),l;switch(l.log("_handlePacket :: emitting packetreceive"),l.emit("packetreceive",u),u.cmd){case"publish":(0,r.default)(l,u,c);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":l.reschedulePing(),(0,i.default)(l,u),c();break;case"pubrel":l.reschedulePing(),(0,s.default)(l,u,c);break;case"connack":(0,o.default)(l,u),c();break;case"auth":l.reschedulePing(),(0,n.default)(l,u),c();break;case"pingresp":l.log("_handlePacket :: received pingresp"),l.reschedulePing(!0),c();break;case"disconnect":l.emit("disconnect",u),c();break;default:l.log("_handlePacket :: unknown command"),c();break}};e.default=a}),nk=Oe(e=>{we(),Ee(),ve();var t=e&&e.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(e,"__esModule",{value:!0}),e.TypedEventEmitter=void 0;var r=t((Ho(),ze(Fi))),n=Vo(),o=class{};e.TypedEventEmitter=o,(0,n.applyMixin)(o,r.default)}),ou=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0}),e.isReactNativeBrowser=e.isWebWorker=void 0;var t=()=>{var i;return typeof window<"u"?typeof navigator<"u"&&((i=navigator.userAgent)===null||i===void 0?void 0:i.toLowerCase().indexOf(" electron/"))>-1&&Ve!=null&&Ve.versions?!Object.prototype.hasOwnProperty.call(Ve.versions,"electron"):typeof window.document<"u":!1},r=()=>{var i,s;return!!(typeof self=="object"&&!((s=(i=self==null?void 0:self.constructor)===null||i===void 0?void 0:i.name)===null||s===void 0)&&s.includes("WorkerGlobalScope"))},n=()=>typeof navigator<"u"&&navigator.product==="ReactNative",o=t()||r()||n();e.isWebWorker=r(),e.isReactNativeBrowser=n(),e.default=o}),ik=Oe((e,t)=>{we(),Ee(),ve(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.fastUniqueNumbers={}))}(e,function(r){var n=function(g){return function(_){var b=g(_);return _.add(b),b}},o=function(g){return function(_,b){return g.set(_,b),b}},i=Number.MAX_SAFE_INTEGER===void 0?9007199254740991:Number.MAX_SAFE_INTEGER,s=536870912,a=s*2,l=function(g,_){return function(b){var x=_.get(b),k=x===void 0?b.size:x<a?x+1:0;if(!b.has(k))return g(b,k);if(b.size<s){for(;b.has(k);)k=Math.floor(Math.random()*a);return g(b,k)}if(b.size>i)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;b.has(k);)k=Math.floor(Math.random()*i);return g(b,k)}},u=new WeakMap,c=o(u),d=l(c,u),p=n(d);r.addUniqueNumber=p,r.generateUniqueNumber=d})}),ok=Oe((e,t)=>{we(),Ee(),ve(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,ik()):typeof define=="function"&&define.amd?define(["exports","fast-unique-numbers"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimersBroker={},r.fastUniqueNumbers))}(e,function(r,n){var o=function(a){return a.method!==void 0&&a.method==="call"},i=function(a){return a.error===null&&typeof a.id=="number"},s=function(a){var l=new Map([[0,function(){}]]),u=new Map([[0,function(){}]]),c=new Map,d=new Worker(a);d.addEventListener("message",function(x){var k=x.data;if(o(k)){var R=k.params,A=R.timerId,B=R.timerType;if(B==="interval"){var $=l.get(A);if(typeof $=="number"){var I=c.get($);if(I===void 0||I.timerId!==A||I.timerType!==B)throw new Error("The timer is in an undefined state.")}else if(typeof $<"u")$();else throw new Error("The timer is in an undefined state.")}else if(B==="timeout"){var P=u.get(A);if(typeof P=="number"){var W=c.get(P);if(W===void 0||W.timerId!==A||W.timerType!==B)throw new Error("The timer is in an undefined state.")}else if(typeof P<"u")P(),u.delete(A);else throw new Error("The timer is in an undefined state.")}}else if(i(k)){var Y=k.id,oe=c.get(Y);if(oe===void 0)throw new Error("The timer is in an undefined state.");var te=oe.timerId,M=oe.timerType;c.delete(Y),M==="interval"?l.delete(te):u.delete(te)}else{var L=k.error.message;throw new Error(L)}});var p=function(x){var k=n.generateUniqueNumber(c);c.set(k,{timerId:x,timerType:"interval"}),l.set(x,k),d.postMessage({id:k,method:"clear",params:{timerId:x,timerType:"interval"}})},g=function(x){var k=n.generateUniqueNumber(c);c.set(k,{timerId:x,timerType:"timeout"}),u.set(x,k),d.postMessage({id:k,method:"clear",params:{timerId:x,timerType:"timeout"}})},_=function(x){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,R=n.generateUniqueNumber(l);return l.set(R,function(){x(),typeof l.get(R)=="function"&&d.postMessage({id:null,method:"set",params:{delay:k,now:performance.now(),timerId:R,timerType:"interval"}})}),d.postMessage({id:null,method:"set",params:{delay:k,now:performance.now(),timerId:R,timerType:"interval"}}),R},b=function(x){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,R=n.generateUniqueNumber(u);return u.set(R,x),d.postMessage({id:null,method:"set",params:{delay:k,now:performance.now(),timerId:R,timerType:"timeout"}}),R};return{clearInterval:p,clearTimeout:g,setInterval:_,setTimeout:b}};r.load=s})}),sk=Oe((e,t)=>{we(),Ee(),ve(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,ok()):typeof define=="function"&&define.amd?define(["exports","worker-timers-broker"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimers={},r.workerTimersBroker))}(e,function(r,n){var o=function(d,p){var g=null;return function(){if(g!==null)return g;var _=new Blob([p],{type:"application/javascript; charset=utf-8"}),b=URL.createObjectURL(_);return g=d(b),setTimeout(function(){return URL.revokeObjectURL(b)}),g}},i=`(()=>{var e={472:(e,t,r)=>{var o,i;void 0===(i="function"==typeof(o=function(){"use strict";var e=new Map,t=new Map,r=function(t){var r=e.get(t);if(void 0===r)throw new Error('There is no interval scheduled with the given id "'.concat(t,'".'));clearTimeout(r),e.delete(t)},o=function(e){var r=t.get(e);if(void 0===r)throw new Error('There is no timeout scheduled with the given id "'.concat(e,'".'));clearTimeout(r),t.delete(e)},i=function(e,t){var r,o=performance.now();return{expected:o+(r=e-Math.max(0,o-t)),remainingDelay:r}},n=function e(t,r,o,i){var n=performance.now();n>o?postMessage({id:null,method:"call",params:{timerId:r,timerType:i}}):t.set(r,setTimeout(e,o-n,t,r,o,i))},a=function(t,r,o){var a=i(t,o),s=a.expected,d=a.remainingDelay;e.set(r,setTimeout(n,d,e,r,s,"interval"))},s=function(e,r,o){var a=i(e,o),s=a.expected,d=a.remainingDelay;t.set(r,setTimeout(n,d,t,r,s,"timeout"))};addEventListener("message",(function(e){var t=e.data;try{if("clear"===t.method){var i=t.id,n=t.params,d=n.timerId,c=n.timerType;if("interval"===c)r(d),postMessage({error:null,id:i});else{if("timeout"!==c)throw new Error('The given type "'.concat(c,'" is not supported'));o(d),postMessage({error:null,id:i})}}else{if("set"!==t.method)throw new Error('The given method "'.concat(t.method,'" is not supported'));var u=t.params,l=u.delay,p=u.now,m=u.timerId,v=u.timerType;if("interval"===v)a(l,m,p);else{if("timeout"!==v)throw new Error('The given type "'.concat(v,'" is not supported'));s(l,m,p)}}}catch(e){postMessage({error:{message:e.message},id:t.id,result:null})}}))})?o.call(t,r,t,e):o)||(e.exports=i)}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(472)})()})();`,s=o(n.load,i),a=function(d){return s().clearInterval(d)},l=function(d){return s().clearTimeout(d)},u=function(){var d;return(d=s()).setInterval.apply(d,arguments)},c=function(){var d;return(d=s()).setTimeout.apply(d,arguments)};r.clearInterval=a,r.clearTimeout=l,r.setInterval=u,r.setTimeout=c})}),ak=Oe(e=>{we(),Ee(),ve();var t=e&&e.__createBinding||(Object.create?function(u,c,d,p){p===void 0&&(p=d);var g=Object.getOwnPropertyDescriptor(c,d);(!g||("get"in g?!c.__esModule:g.writable||g.configurable))&&(g={enumerable:!0,get:function(){return c[d]}}),Object.defineProperty(u,p,g)}:function(u,c,d,p){p===void 0&&(p=d),u[p]=c[d]}),r=e&&e.__setModuleDefault||(Object.create?function(u,c){Object.defineProperty(u,"default",{enumerable:!0,value:c})}:function(u,c){u.default=c}),n=e&&e.__importStar||function(u){if(u&&u.__esModule)return u;var c={};if(u!=null)for(var d in u)d!=="default"&&Object.prototype.hasOwnProperty.call(u,d)&&t(c,u,d);return r(c,u),c};Object.defineProperty(e,"__esModule",{value:!0});var o=n(ou()),i=sk(),s={set:i.setInterval,clear:i.clearInterval},a={set:(u,c)=>setInterval(u,c),clear:u=>clearInterval(u)},l=u=>{switch(u){case"native":return a;case"worker":return s;case"auto":default:return o.default&&!o.isWebWorker&&!o.isReactNativeBrowser?s:a}};e.default=l}),Aw=Oe(e=>{we(),Ee(),ve();var t=e&&e.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(ak()),n=class{get keepaliveTimeoutTimestamp(){return this._keepaliveTimeoutTimestamp}get intervalEvery(){return this._intervalEvery}get keepalive(){return this._keepalive}constructor(o,i){this.destroyed=!1,this.client=o,this.timer=typeof i=="object"&&"set"in i&&"clear"in i?i:(0,r.default)(i),this.setKeepalive(o.options.keepalive)}clear(){this.timerId&&(this.timer.clear(this.timerId),this.timerId=null)}setKeepalive(o){if(o*=1e3,isNaN(o)||o<=0||o>2147483647)throw new Error(`Keepalive value must be an integer between 0 and 2147483647. Provided value is ${o}`);this._keepalive=o,this.reschedule(),this.client.log(`KeepaliveManager: set keepalive to ${o}ms`)}destroy(){this.clear(),this.destroyed=!0}reschedule(){if(this.destroyed)return;this.clear(),this.counter=0;let o=Math.ceil(this._keepalive*1.5);this._keepaliveTimeoutTimestamp=Date.now()+o,this._intervalEvery=Math.ceil(this._keepalive/2),this.timerId=this.timer.set(()=>{this.destroyed||(this.counter+=1,this.counter===2?this.client.sendPing():this.counter>2&&this.client.onKeepaliveTimeout())},this._intervalEvery)}};e.default=n}),Sh=Oe(e=>{we(),Ee(),ve();var t=e&&e.__createBinding||(Object.create?function($,I,P,W){W===void 0&&(W=P);var Y=Object.getOwnPropertyDescriptor(I,P);(!Y||("get"in Y?!I.__esModule:Y.writable||Y.configurable))&&(Y={enumerable:!0,get:function(){return I[P]}}),Object.defineProperty($,W,Y)}:function($,I,P,W){W===void 0&&(W=P),$[W]=I[P]}),r=e&&e.__setModuleDefault||(Object.create?function($,I){Object.defineProperty($,"default",{enumerable:!0,value:I})}:function($,I){$.default=I}),n=e&&e.__importStar||function($){if($&&$.__esModule)return $;var I={};if($!=null)for(var P in $)P!=="default"&&Object.prototype.hasOwnProperty.call($,P)&&t(I,$,P);return r(I,$),I},o=e&&e.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(e,"__esModule",{value:!0});var i=o(QR()),s=o(NO()),a=o(aw()),l=ji(),u=o(PO()),c=n(LO()),d=o(cn()),p=o(lw()),g=o(rk()),_=Vo(),b=nk(),x=o(Aw()),k=n(ou()),R=globalThis.setImmediate||((...$)=>{let I=$.shift();(0,_.nextTick)(()=>{I(...$)})}),A={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0,writeCache:!0,timerVariant:"auto"},B=class Ah extends b.TypedEventEmitter{static defaultId(){return`mqttjs_${Math.random().toString(16).substr(2,8)}`}constructor(I,P){super(),this.options=P||{};for(let W in A)typeof this.options[W]>"u"?this.options[W]=A[W]:this.options[W]=P[W];this.log=this.options.log||(0,d.default)("mqttjs:client"),this.noop=this._noop.bind(this),this.log("MqttClient :: version:",Ah.VERSION),k.isWebWorker?this.log("MqttClient :: environment","webworker"):this.log("MqttClient :: environment",k.default?"browser":"node"),this.log("MqttClient :: options.protocol",P.protocol),this.log("MqttClient :: options.protocolVersion",P.protocolVersion),this.log("MqttClient :: options.username",P.username),this.log("MqttClient :: options.keepalive",P.keepalive),this.log("MqttClient :: options.reconnectPeriod",P.reconnectPeriod),this.log("MqttClient :: options.rejectUnauthorized",P.rejectUnauthorized),this.log("MqttClient :: options.properties.topicAliasMaximum",P.properties?P.properties.topicAliasMaximum:void 0),this.options.clientId=typeof P.clientId=="string"?P.clientId:Ah.defaultId(),this.log("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=P.protocolVersion===5&&P.customHandleAcks?P.customHandleAcks:(...W)=>{W[3](null,0)},this.options.writeCache||(s.default.writeToStream.cacheNumbers=!1),this.streamBuilder=I,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new a.default:this.options.messageIdProvider,this.outgoingStore=P.outgoingStore||new p.default,this.incomingStore=P.incomingStore||new p.default,this.queueQoSZero=P.queueQoSZero===void 0?!0:P.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.keepaliveManager=null,this.connected=!1,this.disconnecting=!1,this.reconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,P.properties&&P.properties.topicAliasMaximum>0&&(P.properties.topicAliasMaximum>65535?this.log("MqttClient :: options.properties.topicAliasMaximum is out of range"):this.topicAliasRecv=new i.default(P.properties.topicAliasMaximum)),this.on("connect",()=>{let{queue:W}=this,Y=()=>{let oe=W.shift();this.log("deliver :: entry %o",oe);let te=null;if(!oe){this._resubscribe();return}te=oe.packet,this.log("deliver :: call _sendPacket for %o",te);let M=!0;te.messageId&&te.messageId!==0&&(this.messageIdProvider.register(te.messageId)||(M=!1)),M?this._sendPacket(te,L=>{oe.cb&&oe.cb(L),Y()}):(this.log("messageId: %d has already used. The message is skipped and removed.",te.messageId),Y())};this.log("connect :: sending queued packets"),Y()}),this.on("close",()=>{this.log("close :: connected set to `false`"),this.connected=!1,this.log("close :: clearing connackTimer"),clearTimeout(this.connackTimer),this._destroyKeepaliveManager(),this.topicAliasRecv&&this.topicAliasRecv.clear(),this.log("close :: calling _setupReconnect"),this._setupReconnect()}),this.options.manualConnect||(this.log("MqttClient :: setting up stream"),this.connect())}handleAuth(I,P){P()}handleMessage(I,P){P()}_nextId(){return this.messageIdProvider.allocate()}getLastMessageId(){return this.messageIdProvider.getLastAllocated()}connect(){var I;let P=new l.Writable,W=s.default.parser(this.options),Y=null,oe=[];this.log("connect :: calling method to clear reconnect"),this._clearReconnect(),this.disconnected&&!this.reconnecting&&(this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1),this.log("connect :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),W.on("packet",re=>{this.log("parser :: on packet push to packets array."),oe.push(re)});let te=()=>{this.log("work :: getting next packet in queue");let re=oe.shift();if(re)this.log("work :: packet pulled from queue"),(0,g.default)(this,re,M);else{this.log("work :: no packets in queue");let ae=Y;Y=null,this.log("work :: done flag is %s",!!ae),ae&&ae()}},M=()=>{if(oe.length)(0,_.nextTick)(te);else{let re=Y;Y=null,re()}};P._write=(re,ae,se)=>{Y=se,this.log("writable stream :: parsing buffer"),W.parse(re),te()};let L=re=>{this.log("streamErrorHandler :: error",re.message),re.code?(this.log("streamErrorHandler :: emitting error"),this.emit("error",re)):this.noop(re)};this.log("connect :: pipe stream to writable stream"),this.stream.pipe(P),this.stream.on("error",L),this.stream.on("close",()=>{this.log("(%s)stream :: on close",this.options.clientId),this._flushVolatile(),this.log("stream: emit close to MqttClient"),this.emit("close")}),this.log("connect: sending packet `connect`");let ie={cmd:"connect",protocolId:this.options.protocolId,protocolVersion:this.options.protocolVersion,clean:this.options.clean,clientId:this.options.clientId,keepalive:this.options.keepalive,username:this.options.username,password:this.options.password,properties:this.options.properties};if(this.options.will&&(ie.will=Object.assign(Object.assign({},this.options.will),{payload:(I=this.options.will)===null||I===void 0?void 0:I.payload})),this.topicAliasRecv&&(ie.properties||(ie.properties={}),this.topicAliasRecv&&(ie.properties.topicAliasMaximum=this.topicAliasRecv.max)),this._writePacket(ie),W.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return this.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){let re=Object.assign({cmd:"auth",reasonCode:0},this.options.authPacket);this._writePacket(re)}}return this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(()=>{this.log("!!connectTimeout hit!! Calling _cleanUp with force `true`"),this.emit("error",new Error("connack timeout")),this._cleanUp(!0)},this.options.connectTimeout),this}publish(I,P,W,Y){this.log("publish :: message `%s` to topic `%s`",P,I);let{options:oe}=this;typeof W=="function"&&(Y=W,W=null),W=W||{},W=Object.assign(Object.assign({},{qos:0,retain:!1,dup:!1}),W);let{qos:te,retain:M,dup:L,properties:ie,cbStorePut:re}=W;if(this._checkDisconnecting(Y))return this;let ae=()=>{let se=0;if((te===1||te===2)&&(se=this._nextId(),se===null))return this.log("No messageId left"),!1;let Q={cmd:"publish",topic:I,payload:P,qos:te,retain:M,messageId:se,dup:L};switch(oe.protocolVersion===5&&(Q.properties=ie),this.log("publish :: qos",te),te){case 1:case 2:this.outgoing[Q.messageId]={volatile:!1,cb:Y||this.noop},this.log("MqttClient:publish: packet cmd: %s",Q.cmd),this._sendPacket(Q,void 0,re);break;default:this.log("MqttClient:publish: packet cmd: %s",Q.cmd),this._sendPacket(Q,Y,re);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!ae())&&this._storeProcessingQueue.push({invoke:ae,cbStorePut:W.cbStorePut,callback:Y}),this}publishAsync(I,P,W){return new Promise((Y,oe)=>{this.publish(I,P,W,(te,M)=>{te?oe(te):Y(M)})})}subscribe(I,P,W){let Y=this.options.protocolVersion;typeof P=="function"&&(W=P),W=W||this.noop;let oe=!1,te=[];typeof I=="string"?(I=[I],te=I):Array.isArray(I)?te=I:typeof I=="object"&&(oe=I.resubscribe,delete I.resubscribe,te=Object.keys(I));let M=c.validateTopics(te);if(M!==null)return R(W,new Error(`Invalid topic ${M}`)),this;if(this._checkDisconnecting(W))return this.log("subscribe: discconecting true"),this;let L={qos:0};Y===5&&(L.nl=!1,L.rap=!1,L.rh=0),P=Object.assign(Object.assign({},L),P);let ie=P.properties,re=[],ae=(Q,he)=>{if(he=he||P,!Object.prototype.hasOwnProperty.call(this._resubscribeTopics,Q)||this._resubscribeTopics[Q].qos<he.qos||oe){let fe={topic:Q,qos:he.qos};Y===5&&(fe.nl=he.nl,fe.rap=he.rap,fe.rh=he.rh,fe.properties=ie),this.log("subscribe: pushing topic `%s` and qos `%s` to subs list",fe.topic,fe.qos),re.push(fe)}};if(Array.isArray(I)?I.forEach(Q=>{this.log("subscribe: array topic %s",Q),ae(Q)}):Object.keys(I).forEach(Q=>{this.log("subscribe: object topic %s, %o",Q,I[Q]),ae(Q,I[Q])}),!re.length)return W(null,[]),this;let se=()=>{let Q=this._nextId();if(Q===null)return this.log("No messageId left"),!1;let he={cmd:"subscribe",subscriptions:re,messageId:Q};if(ie&&(he.properties=ie),this.options.resubscribe){this.log("subscribe :: resubscribe true");let fe=[];re.forEach(pe=>{if(this.options.reconnectPeriod>0){let F={qos:pe.qos};Y===5&&(F.nl=pe.nl||!1,F.rap=pe.rap||!1,F.rh=pe.rh||0,F.properties=pe.properties),this._resubscribeTopics[pe.topic]=F,fe.push(pe.topic)}}),this.messageIdToTopic[he.messageId]=fe}return this.outgoing[he.messageId]={volatile:!0,cb(fe,pe){if(!fe){let{granted:F}=pe;for(let ne=0;ne<F.length;ne+=1)re[ne].qos=F[ne]}W(fe,re)}},this.log("subscribe :: call _sendPacket"),this._sendPacket(he),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!se())&&this._storeProcessingQueue.push({invoke:se,callback:W}),this}subscribeAsync(I,P){return new Promise((W,Y)=>{this.subscribe(I,P,(oe,te)=>{oe?Y(oe):W(te)})})}unsubscribe(I,P,W){typeof I=="string"&&(I=[I]),typeof P=="function"&&(W=P),W=W||this.noop;let Y=c.validateTopics(I);if(Y!==null)return R(W,new Error(`Invalid topic ${Y}`)),this;if(this._checkDisconnecting(W))return this;let oe=()=>{let te=this._nextId();if(te===null)return this.log("No messageId left"),!1;let M={cmd:"unsubscribe",messageId:te,unsubscriptions:[]};return typeof I=="string"?M.unsubscriptions=[I]:Array.isArray(I)&&(M.unsubscriptions=I),this.options.resubscribe&&M.unsubscriptions.forEach(L=>{delete this._resubscribeTopics[L]}),typeof P=="object"&&P.properties&&(M.properties=P.properties),this.outgoing[M.messageId]={volatile:!0,cb:W},this.log("unsubscribe: call _sendPacket"),this._sendPacket(M),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!oe())&&this._storeProcessingQueue.push({invoke:oe,callback:W}),this}unsubscribeAsync(I,P){return new Promise((W,Y)=>{this.unsubscribe(I,P,(oe,te)=>{oe?Y(oe):W(te)})})}end(I,P,W){this.log("end :: (%s)",this.options.clientId),(I==null||typeof I!="boolean")&&(W=W||P,P=I,I=!1),typeof P!="object"&&(W=W||P,P=null),this.log("end :: cb? %s",!!W),(!W||typeof W!="function")&&(W=this.noop);let Y=()=>{this.log("end :: closeStores: closing incoming and outgoing stores"),this.disconnected=!0,this.incomingStore.close(te=>{this.outgoingStore.close(M=>{if(this.log("end :: closeStores: emitting end"),this.emit("end"),W){let L=te||M;this.log("end :: closeStores: invoking callback with args"),W(L)}})}),this._deferredReconnect?this._deferredReconnect():(this.options.reconnectPeriod===0||this.options.manualConnect)&&(this.disconnecting=!1)},oe=()=>{this.log("end :: (%s) :: finish :: calling _cleanUp with force %s",this.options.clientId,I),this._cleanUp(I,()=>{this.log("end :: finish :: calling process.nextTick on closeStores"),(0,_.nextTick)(Y)},P)};return this.disconnecting?(W(),this):(this._clearReconnect(),this.disconnecting=!0,!I&&Object.keys(this.outgoing).length>0?(this.log("end :: (%s) :: calling finish in 10ms once outgoing is empty",this.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,oe,10))):(this.log("end :: (%s) :: immediately calling finish",this.options.clientId),oe()),this)}endAsync(I,P){return new Promise((W,Y)=>{this.end(I,P,oe=>{oe?Y(oe):W()})})}removeOutgoingMessage(I){if(this.outgoing[I]){let{cb:P}=this.outgoing[I];this._removeOutgoingAndStoreMessage(I,()=>{P(new Error("Message removed"))})}return this}reconnect(I){this.log("client reconnect");let P=()=>{I?(this.options.incomingStore=I.incomingStore,this.options.outgoingStore=I.outgoingStore):(this.options.incomingStore=null,this.options.outgoingStore=null),this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1,this._deferredReconnect=null,this._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=P:P(),this}_flushVolatile(){this.outgoing&&(this.log("_flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(this.outgoing).forEach(I=>{this.outgoing[I].volatile&&typeof this.outgoing[I].cb=="function"&&(this.outgoing[I].cb(new Error("Connection closed")),delete this.outgoing[I])}))}_flush(){this.outgoing&&(this.log("_flush: queue exists? %b",!!this.outgoing),Object.keys(this.outgoing).forEach(I=>{typeof this.outgoing[I].cb=="function"&&(this.outgoing[I].cb(new Error("Connection closed")),delete this.outgoing[I])}))}_removeTopicAliasAndRecoverTopicName(I){let P;I.properties&&(P=I.properties.topicAlias);let W=I.topic.toString();if(this.log("_removeTopicAliasAndRecoverTopicName :: alias %d, topic %o",P,W),W.length===0){if(typeof P>"u")return new Error("Unregistered Topic Alias");if(W=this.topicAliasSend.getTopicByAlias(P),typeof W>"u")return new Error("Unregistered Topic Alias");I.topic=W}P&&delete I.properties.topicAlias}_checkDisconnecting(I){return this.disconnecting&&(I&&I!==this.noop?I(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting}_reconnect(){this.log("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this.connect()}),this.log("client already connected. disconnecting first.")):(this.log("_reconnect: calling connect"),this.connect())}_setupReconnect(){!this.disconnecting&&!this.reconnectTimer&&this.options.reconnectPeriod>0?(this.reconnecting||(this.log("_setupReconnect :: emit `offline` state"),this.emit("offline"),this.log("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),this.log("_setupReconnect :: setting reconnectTimer for %d ms",this.options.reconnectPeriod),this.reconnectTimer=setInterval(()=>{this.log("reconnectTimer :: reconnect triggered!"),this._reconnect()},this.options.reconnectPeriod)):this.log("_setupReconnect :: doing nothing...")}_clearReconnect(){this.log("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)}_cleanUp(I,P,W={}){if(P&&(this.log("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",P)),this.log("_cleanUp :: forced? %s",I),I)this.options.reconnectPeriod===0&&this.options.clean&&this._flush(),this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{let Y=Object.assign({cmd:"disconnect"},W);this.log("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(Y,()=>{this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),R(()=>{this.stream.end(()=>{this.log("_cleanUp :: (%s) :: stream destroyed",this.options.clientId)})})})}!this.disconnecting&&!this.reconnecting&&(this.log("_cleanUp :: client not disconnecting/reconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this._destroyKeepaliveManager(),P&&!this.connected&&(this.log("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",P),P())}_storeAndSend(I,P,W){this.log("storeAndSend :: store packet with cmd %s to outgoingStore",I.cmd);let Y=I,oe;if(Y.cmd==="publish"&&(Y=(0,u.default)(I),oe=this._removeTopicAliasAndRecoverTopicName(Y),oe))return P&&P(oe);this.outgoingStore.put(Y,te=>{if(te)return P&&P(te);W(),this._writePacket(I,P)})}_applyTopicAlias(I){if(this.options.protocolVersion===5&&I.cmd==="publish"){let P;I.properties&&(P=I.properties.topicAlias);let W=I.topic.toString();if(this.topicAliasSend)if(P){if(W.length!==0&&(this.log("applyTopicAlias :: register topic: %s - alias: %d",W,P),!this.topicAliasSend.put(W,P)))return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",W,P),new Error("Sending Topic Alias out of range")}else W.length!==0&&(this.options.autoAssignTopicAlias?(P=this.topicAliasSend.getAliasByTopic(W),P?(I.topic="",I.properties=Object.assign(Object.assign({},I.properties),{topicAlias:P}),this.log("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",W,P)):(P=this.topicAliasSend.getLruAlias(),this.topicAliasSend.put(W,P),I.properties=Object.assign(Object.assign({},I.properties),{topicAlias:P}),this.log("applyTopicAlias :: auto assign topic: %s - alias: %d",W,P))):this.options.autoUseTopicAlias&&(P=this.topicAliasSend.getAliasByTopic(W),P&&(I.topic="",I.properties=Object.assign(Object.assign({},I.properties),{topicAlias:P}),this.log("applyTopicAlias :: auto use topic: %s - alias: %d",W,P))));else if(P)return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",W,P),new Error("Sending Topic Alias out of range")}}_noop(I){this.log("noop ::",I)}_writePacket(I,P){this.log("_writePacket :: packet: %O",I),this.log("_writePacket :: emitting `packetsend`"),this.emit("packetsend",I),this.log("_writePacket :: writing to stream");let W=s.default.writeToStream(I,this.stream,this.options);this.log("_writePacket :: writeToStream result %s",W),!W&&P&&P!==this.noop?(this.log("_writePacket :: handle events on `drain` once through callback."),this.stream.once("drain",P)):P&&(this.log("_writePacket :: invoking cb"),P())}_sendPacket(I,P,W,Y){this.log("_sendPacket :: (%s) ::  start",this.options.clientId),W=W||this.noop,P=P||this.noop;let oe=this._applyTopicAlias(I);if(oe){P(oe);return}if(!this.connected){if(I.cmd==="auth"){this._writePacket(I,P);return}this.log("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(I,P,W);return}if(Y){this._writePacket(I,P);return}switch(I.cmd){case"publish":break;case"pubrel":this._storeAndSend(I,P,W);return;default:this._writePacket(I,P);return}switch(I.qos){case 2:case 1:this._storeAndSend(I,P,W);break;case 0:default:this._writePacket(I,P);break}this.log("_sendPacket :: (%s) ::  end",this.options.clientId)}_storePacket(I,P,W){this.log("_storePacket :: packet: %o",I),this.log("_storePacket :: cb? %s",!!P),W=W||this.noop;let Y=I;if(Y.cmd==="publish"){Y=(0,u.default)(I);let te=this._removeTopicAliasAndRecoverTopicName(Y);if(te)return P&&P(te)}let oe=Y.qos||0;oe===0&&this.queueQoSZero||Y.cmd!=="publish"?this.queue.push({packet:Y,cb:P}):oe>0?(P=this.outgoing[Y.messageId]?this.outgoing[Y.messageId].cb:null,this.outgoingStore.put(Y,te=>{if(te)return P&&P(te);W()})):P&&P(new Error("No connection to broker"))}_setupKeepaliveManager(){this.log("_setupKeepaliveManager :: keepalive %d (seconds)",this.options.keepalive),!this.keepaliveManager&&this.options.keepalive&&(this.keepaliveManager=new x.default(this,this.options.timerVariant))}_destroyKeepaliveManager(){this.keepaliveManager&&(this.log("_destroyKeepaliveManager :: destroying keepalive manager"),this.keepaliveManager.destroy(),this.keepaliveManager=null)}reschedulePing(I=!1){this.keepaliveManager&&this.options.keepalive&&(I||this.options.reschedulePings)&&this._reschedulePing()}_reschedulePing(){this.log("_reschedulePing :: rescheduling ping"),this.keepaliveManager.reschedule()}sendPing(){this.log("_sendPing :: sending pingreq"),this._sendPacket({cmd:"pingreq"})}onKeepaliveTimeout(){this.emit("error",new Error("Keepalive timeout")),this.log("onKeepaliveTimeout :: calling _cleanUp with force true"),this._cleanUp(!0)}_resubscribe(){this.log("_resubscribe");let I=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion>=4&&!this.connackPacket.sessionPresent)&&I.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){this.log("_resubscribe: protocolVersion 5");for(let P=0;P<I.length;P++){let W={};W[I[P]]=this._resubscribeTopics[I[P]],W.resubscribe=!0,this.subscribe(W,{properties:W[I[P]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1}_onConnect(I){if(this.disconnected){this.emit("connect",I);return}this.connackPacket=I,this.messageIdProvider.clear(),this._setupKeepaliveManager(),this.connected=!0;let P=()=>{let W=this.outgoingStore.createStream(),Y=()=>{W.destroy(),W=null,this._flushStoreProcessingQueue(),oe()},oe=()=>{this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={}};this.once("close",Y),W.on("error",M=>{oe(),this._flushStoreProcessingQueue(),this.removeListener("close",Y),this.emit("error",M)});let te=()=>{if(!W)return;let M=W.read(1),L;if(!M){W.once("readable",te);return}if(this._storeProcessing=!0,this._packetIdsDuringStoreProcessing[M.messageId]){te();return}!this.disconnecting&&!this.reconnectTimer?(L=this.outgoing[M.messageId]?this.outgoing[M.messageId].cb:null,this.outgoing[M.messageId]={volatile:!1,cb(ie,re){L&&L(ie,re),te()}},this._packetIdsDuringStoreProcessing[M.messageId]=!0,this.messageIdProvider.register(M.messageId)?this._sendPacket(M,void 0,void 0,!0):this.log("messageId: %d has already used.",M.messageId)):W.destroy&&W.destroy()};W.on("end",()=>{let M=!0;for(let L in this._packetIdsDuringStoreProcessing)if(!this._packetIdsDuringStoreProcessing[L]){M=!1;break}this.removeListener("close",Y),M?(oe(),this._invokeAllStoreProcessingQueue(),this.emit("connect",I)):P()}),te()};P()}_invokeStoreProcessingQueue(){if(!this._storeProcessing&&this._storeProcessingQueue.length>0){let I=this._storeProcessingQueue[0];if(I&&I.invoke())return this._storeProcessingQueue.shift(),!0}return!1}_invokeAllStoreProcessingQueue(){for(;this._invokeStoreProcessingQueue(););}_flushStoreProcessingQueue(){for(let I of this._storeProcessingQueue)I.cbStorePut&&I.cbStorePut(new Error("Connection closed")),I.callback&&I.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)}_removeOutgoingAndStoreMessage(I,P){delete this.outgoing[I],this.outgoingStore.del({messageId:I},(W,Y)=>{P(W,Y),this.messageIdProvider.deallocate(I),this._invokeStoreProcessingQueue()})}};B.VERSION=_.MQTTJS_VERSION,e.default=B}),lk=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0});var t=Sw(),r=class{constructor(){this.numberAllocator=new t.NumberAllocator(1,65535)}allocate(){return this.lastId=this.numberAllocator.alloc(),this.lastId}getLastAllocated(){return this.lastId}register(n){return this.numberAllocator.use(n)}deallocate(n){this.numberAllocator.free(n)}clear(){this.numberAllocator.clear()}};e.default=r});function ti(e){throw new RangeError(xw[e])}function wm(e,t){let r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]);let o=function(i,s){let a=[],l=i.length;for(;l--;)a[l]=s(i[l]);return a}((e=e.replace(Tw,".")).split("."),t).join(".");return n+o}function vm(e){let t=[],r=0,n=e.length;for(;r<n;){let o=e.charCodeAt(r++);if(o>=55296&&o<=56319&&r<n){let i=e.charCodeAt(r++);(64512&i)==56320?t.push(((1023&o)<<10)+(1023&i)+65536):(t.push(o),r--)}else t.push(o)}return t}var Em,Sm,Tw,xw,lr,ha,lc,uc,cc,fc,Cn,uk=vt(()=>{we(),Ee(),ve(),Em=/^xn--/,Sm=/[^\0-\x7E]/,Tw=/[\x2E\u3002\uFF0E\uFF61]/g,xw={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},lr=Math.floor,ha=String.fromCharCode,lc=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},uc=function(e,t,r){let n=0;for(e=r?lr(e/700):e>>1,e+=lr(e/t);e>455;n+=36)e=lr(e/35);return lr(n+36*e/(e+38))},cc=function(e){let t=[],r=e.length,n=0,o=128,i=72,s=e.lastIndexOf("-");s<0&&(s=0);for(let l=0;l<s;++l)e.charCodeAt(l)>=128&&ti("not-basic"),t.push(e.charCodeAt(l));for(let l=s>0?s+1:0;l<r;){let u=n;for(let d=1,p=36;;p+=36){l>=r&&ti("invalid-input");let g=(a=e.charCodeAt(l++))-48<10?a-22:a-65<26?a-65:a-97<26?a-97:36;(g>=36||g>lr((2147483647-n)/d))&&ti("overflow"),n+=g*d;let _=p<=i?1:p>=i+26?26:p-i;if(g<_)break;let b=36-_;d>lr(2147483647/b)&&ti("overflow"),d*=b}let c=t.length+1;i=uc(n-u,c,u==0),lr(n/c)>2147483647-o&&ti("overflow"),o+=lr(n/c),n%=c,t.splice(n++,0,o)}var a;return String.fromCodePoint(...t)},fc=function(e){let t=[],r=(e=vm(e)).length,n=128,o=0,i=72;for(let l of e)l<128&&t.push(ha(l));let s=t.length,a=s;for(s&&t.push("-");a<r;){let l=2147483647;for(let c of e)c>=n&&c<l&&(l=c);let u=a+1;l-n>lr((2147483647-o)/u)&&ti("overflow"),o+=(l-n)*u,n=l;for(let c of e)if(c<n&&++o>2147483647&&ti("overflow"),c==n){let d=o;for(let p=36;;p+=36){let g=p<=i?1:p>=i+26?26:p-i;if(d<g)break;let _=d-g,b=36-g;t.push(ha(lc(g+_%b,0))),d=lr(_/b)}t.push(ha(lc(d,0))),i=uc(o,u,a==s),o=0,++a}++o,++n}return t.join("")},Cn={version:"2.1.0",ucs2:{decode:vm,encode:e=>String.fromCodePoint(...e)},decode:cc,encode:fc,toASCII:function(e){return wm(e,function(t){return Sm.test(t)?"xn--"+fc(t):t})},toUnicode:function(e){return wm(e,function(t){return Em.test(t)?cc(t.slice(4).toLowerCase()):t})}},Cn.decode,Cn.encode,Cn.toASCII,Cn.toUnicode,Cn.ucs2,Cn.version});function ck(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Am,Xi,Tm,Tr,fk=vt(()=>{we(),Ee(),ve(),Am=function(e,t,r,n){t=t||"&",r=r||"=";var o={};if(typeof e!="string"||e.length===0)return o;var i=/\+/g;e=e.split(t);var s=1e3;n&&typeof n.maxKeys=="number"&&(s=n.maxKeys);var a=e.length;s>0&&a>s&&(a=s);for(var l=0;l<a;++l){var u,c,d,p,g=e[l].replace(i,"%20"),_=g.indexOf(r);_>=0?(u=g.substr(0,_),c=g.substr(_+1)):(u=g,c=""),d=decodeURIComponent(u),p=decodeURIComponent(c),ck(o,d)?Array.isArray(o[d])?o[d].push(p):o[d]=[o[d],p]:o[d]=p}return o},Xi=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},Tm=function(e,t,r,n){return t=t||"&",r=r||"=",e===null&&(e=void 0),typeof e=="object"?Object.keys(e).map(function(o){var i=encodeURIComponent(Xi(o))+r;return Array.isArray(e[o])?e[o].map(function(s){return i+encodeURIComponent(Xi(s))}).join(t):i+encodeURIComponent(Xi(e[o]))}).join(t):n?encodeURIComponent(Xi(n))+r+encodeURIComponent(Xi(e)):""},Tr={},Tr.decode=Tr.parse=Am,Tr.encode=Tr.stringify=Tm,Tr.decode,Tr.encode,Tr.parse,Tr.stringify});function Th(){throw new Error("setTimeout has not been defined")}function xh(){throw new Error("clearTimeout has not been defined")}function Iw(e){if(zr===setTimeout)return setTimeout(e,0);if((zr===Th||!zr)&&setTimeout)return zr=setTimeout,setTimeout(e,0);try{return zr(e,0)}catch{try{return zr.call(null,e,0)}catch{return zr.call(this||Si,e,0)}}}function hk(){Ai&&gi&&(Ai=!1,gi.length?Nr=gi.concat(Nr):Ts=-1,Nr.length&&Cw())}function Cw(){if(!Ai){var e=Iw(hk);Ai=!0;for(var t=Nr.length;t;){for(gi=Nr,Nr=[];++Ts<t;)gi&&gi[Ts].run();Ts=-1,t=Nr.length}gi=null,Ai=!1,function(r){if(Gr===clearTimeout)return clearTimeout(r);if((Gr===xh||!Gr)&&clearTimeout)return Gr=clearTimeout,clearTimeout(r);try{Gr(r)}catch{try{return Gr.call(null,r)}catch{return Gr.call(this||Si,r)}}}(e)}}function xm(e,t){(this||Si).fun=e,(this||Si).array=t}function Vr(){}var Im,zr,Gr,Si,lt,gi,Nr,Ai,Ts,ot,dk=vt(()=>{we(),Ee(),ve(),Si=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Ii,lt=Im={},function(){try{zr=typeof setTimeout=="function"?setTimeout:Th}catch{zr=Th}try{Gr=typeof clearTimeout=="function"?clearTimeout:xh}catch{Gr=xh}}(),Nr=[],Ai=!1,Ts=-1,lt.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Nr.push(new xm(e,t)),Nr.length!==1||Ai||Iw(Cw)},xm.prototype.run=function(){(this||Si).fun.apply(null,(this||Si).array)},lt.title="browser",lt.browser=!0,lt.env={},lt.argv=[],lt.version="",lt.versions={},lt.on=Vr,lt.addListener=Vr,lt.once=Vr,lt.off=Vr,lt.removeListener=Vr,lt.removeAllListeners=Vr,lt.emit=Vr,lt.prependListener=Vr,lt.prependOnceListener=Vr,lt.listeners=function(e){return[]},lt.binding=function(e){throw new Error("process.binding is not supported")},lt.cwd=function(){return"/"},lt.chdir=function(e){throw new Error("process.chdir is not supported")},lt.umask=function(){return 0},ot=Im,ot.addListener,ot.argv,ot.binding,ot.browser,ot.chdir,ot.cwd,ot.emit,ot.env,ot.listeners,ot.nextTick,ot.off,ot.on,ot.once,ot.prependListener,ot.prependOnceListener,ot.removeAllListeners,ot.removeListener,ot.title,ot.umask,ot.version,ot.versions});function pk(){if(Ih)return Ua;Ih=!0;var e=Ua={},t,r;function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?t=setTimeout:t=n}catch{t=n}try{typeof clearTimeout=="function"?r=clearTimeout:r=o}catch{r=o}})();function i(b){if(t===setTimeout)return setTimeout(b,0);if((t===n||!t)&&setTimeout)return t=setTimeout,setTimeout(b,0);try{return t(b,0)}catch{try{return t.call(null,b,0)}catch{return t.call(this||oi,b,0)}}}function s(b){if(r===clearTimeout)return clearTimeout(b);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(b);try{return r(b)}catch{try{return r.call(null,b)}catch{return r.call(this||oi,b)}}}var a=[],l=!1,u,c=-1;function d(){!l||!u||(l=!1,u.length?a=u.concat(a):c=-1,a.length&&p())}function p(){if(!l){var b=i(d);l=!0;for(var x=a.length;x;){for(u=a,a=[];++c<x;)u&&u[c].run();c=-1,x=a.length}u=null,l=!1,s(b)}}e.nextTick=function(b){var x=new Array(arguments.length-1);if(arguments.length>1)for(var k=1;k<arguments.length;k++)x[k-1]=arguments[k];a.push(new g(b,x)),a.length===1&&!l&&i(p)};function g(b,x){(this||oi).fun=b,(this||oi).array=x}g.prototype.run=function(){(this||oi).fun.apply(null,(this||oi).array)},e.title="browser",e.browser=!0,e.env={},e.argv=[],e.version="",e.versions={};function _(){}return e.on=_,e.addListener=_,e.once=_,e.off=_,e.removeListener=_,e.removeAllListeners=_,e.emit=_,e.prependListener=_,e.prependOnceListener=_,e.listeners=function(b){return[]},e.binding=function(b){throw new Error("process.binding is not supported")},e.cwd=function(){return"/"},e.chdir=function(b){throw new Error("process.chdir is not supported")},e.umask=function(){return 0},Ua}var Ua,Ih,oi,rt,Rw=vt(()=>{we(),Ee(),ve(),Ua={},Ih=!1,oi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Ii,rt=pk(),rt.platform="browser",rt.addListener,rt.argv,rt.binding,rt.browser,rt.chdir,rt.cwd,rt.emit,rt.env,rt.listeners,rt.nextTick,rt.off,rt.on,rt.once,rt.prependListener,rt.prependOnceListener,rt.removeAllListeners,rt.removeListener,rt.title,rt.umask,rt.version,rt.versions});function gk(){if(Ch)return Fa;Ch=!0;var e=rt;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,s){for(var a="",l=0,u=-1,c=0,d,p=0;p<=i.length;++p){if(p<i.length)d=i.charCodeAt(p);else{if(d===47)break;d=47}if(d===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var g=a.lastIndexOf("/");if(g!==a.length-1){g===-1?(a="",l=0):(a=a.slice(0,g),l=a.length-1-a.lastIndexOf("/")),u=p,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=p,c=0;continue}}s&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,p):a=i.slice(u+1,p),l=p-u-1;u=p,c=0}else d===46&&c!==-1?++c:c=-1}return a}function n(i,s){var a=s.dir||s.root,l=s.base||(s.name||"")+(s.ext||"");return a?a===s.root?a+l:a+i+l:l}var o={resolve:function(){for(var i="",s=!1,a,l=arguments.length-1;l>=-1&&!s;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=e.cwd()),u=a),t(u),u.length!==0&&(i=u+"/"+i,s=u.charCodeAt(0)===47)}return i=r(i,!s),s?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var s=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!s),i.length===0&&!s&&(i="."),i.length>0&&a&&(i+="/"),s?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,s=0;s<arguments.length;++s){var a=arguments[s];t(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":o.normalize(i)},relative:function(i,s){if(t(i),t(s),i===s||(i=o.resolve(i),s=o.resolve(s),i===s))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<s.length&&s.charCodeAt(c)===47;++c);for(var d=s.length,p=d-c,g=u<p?u:p,_=-1,b=0;b<=g;++b){if(b===g){if(p>g){if(s.charCodeAt(c+b)===47)return s.slice(c+b+1);if(b===0)return s.slice(c+b)}else u>g&&(i.charCodeAt(a+b)===47?_=b:b===0&&(_=0));break}var x=i.charCodeAt(a+b),k=s.charCodeAt(c+b);if(x!==k)break;x===47&&(_=b)}var R="";for(b=a+_+1;b<=l;++b)(b===l||i.charCodeAt(b)===47)&&(R.length===0?R+="..":R+="/..");return R.length>0?R+s.slice(c+_):(c+=_,s.charCodeAt(c)===47&&++c,s.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var s=i.charCodeAt(0),a=s===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(s=i.charCodeAt(c),s===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,s){if(s!==void 0&&typeof s!="string")throw new TypeError('"ext" argument must be a string');t(i);var a=0,l=-1,u=!0,c;if(s!==void 0&&s.length>0&&s.length<=i.length){if(s.length===i.length&&s===i)return"";var d=s.length-1,p=-1;for(c=i.length-1;c>=0;--c){var g=i.charCodeAt(c);if(g===47){if(!u){a=c+1;break}}else p===-1&&(u=!1,p=c+1),d>=0&&(g===s.charCodeAt(d)?--d===-1&&(l=c):(d=-1,l=p))}return a===l?l=p:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){t(i);for(var s=-1,a=0,l=-1,u=!0,c=0,d=i.length-1;d>=0;--d){var p=i.charCodeAt(d);if(p===47){if(!u){a=d+1;break}continue}l===-1&&(u=!1,l=d+1),p===46?s===-1?s=d:c!==1&&(c=1):s!==-1&&(c=-1)}return s===-1||l===-1||c===0||c===1&&s===l-1&&s===a+1?"":i.slice(s,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var s={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return s;var a=i.charCodeAt(0),l=a===47,u;l?(s.root="/",u=1):u=0;for(var c=-1,d=0,p=-1,g=!0,_=i.length-1,b=0;_>=u;--_){if(a=i.charCodeAt(_),a===47){if(!g){d=_+1;break}continue}p===-1&&(g=!1,p=_+1),a===46?c===-1?c=_:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===d+1?p!==-1&&(d===0&&l?s.base=s.name=i.slice(1,p):s.base=s.name=i.slice(d,p)):(d===0&&l?(s.name=i.slice(1,c),s.base=i.slice(1,p)):(s.name=i.slice(d,c),s.base=i.slice(d,p)),s.ext=i.slice(c,p)),d>0?s.dir=i.slice(0,d-1):l&&(s.dir="/"),s},sep:"/",delimiter:":",win32:null,posix:null};return o.posix=o,Fa=o,Fa}var Fa,Ch,Rh,mk=vt(()=>{we(),Ee(),ve(),Rw(),Fa={},Ch=!1,Rh=gk()}),Ow={};$i(Ow,{URL:()=>zw,Url:()=>Hw,default:()=>qe,fileURLToPath:()=>kw,format:()=>Vw,parse:()=>Yw,pathToFileURL:()=>Nw,resolve:()=>qw,resolveObject:()=>Kw});function Zt(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function rs(e,t,r){if(e&&cr.isObject(e)&&e instanceof Zt)return e;var n=new Zt;return n.parse(e,t,r),n}function yk(){if(Oh)return ja;Oh=!0;var e=ot;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,s){for(var a="",l=0,u=-1,c=0,d,p=0;p<=i.length;++p){if(p<i.length)d=i.charCodeAt(p);else{if(d===47)break;d=47}if(d===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var g=a.lastIndexOf("/");if(g!==a.length-1){g===-1?(a="",l=0):(a=a.slice(0,g),l=a.length-1-a.lastIndexOf("/")),u=p,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=p,c=0;continue}}s&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,p):a=i.slice(u+1,p),l=p-u-1;u=p,c=0}else d===46&&c!==-1?++c:c=-1}return a}function n(i,s){var a=s.dir||s.root,l=s.base||(s.name||"")+(s.ext||"");return a?a===s.root?a+l:a+i+l:l}var o={resolve:function(){for(var i="",s=!1,a,l=arguments.length-1;l>=-1&&!s;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=e.cwd()),u=a),t(u),u.length!==0&&(i=u+"/"+i,s=u.charCodeAt(0)===47)}return i=r(i,!s),s?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var s=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!s),i.length===0&&!s&&(i="."),i.length>0&&a&&(i+="/"),s?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,s=0;s<arguments.length;++s){var a=arguments[s];t(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":o.normalize(i)},relative:function(i,s){if(t(i),t(s),i===s||(i=o.resolve(i),s=o.resolve(s),i===s))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<s.length&&s.charCodeAt(c)===47;++c);for(var d=s.length,p=d-c,g=u<p?u:p,_=-1,b=0;b<=g;++b){if(b===g){if(p>g){if(s.charCodeAt(c+b)===47)return s.slice(c+b+1);if(b===0)return s.slice(c+b)}else u>g&&(i.charCodeAt(a+b)===47?_=b:b===0&&(_=0));break}var x=i.charCodeAt(a+b),k=s.charCodeAt(c+b);if(x!==k)break;x===47&&(_=b)}var R="";for(b=a+_+1;b<=l;++b)(b===l||i.charCodeAt(b)===47)&&(R.length===0?R+="..":R+="/..");return R.length>0?R+s.slice(c+_):(c+=_,s.charCodeAt(c)===47&&++c,s.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var s=i.charCodeAt(0),a=s===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(s=i.charCodeAt(c),s===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,s){if(s!==void 0&&typeof s!="string")throw new TypeError('"ext" argument must be a string');t(i);var a=0,l=-1,u=!0,c;if(s!==void 0&&s.length>0&&s.length<=i.length){if(s.length===i.length&&s===i)return"";var d=s.length-1,p=-1;for(c=i.length-1;c>=0;--c){var g=i.charCodeAt(c);if(g===47){if(!u){a=c+1;break}}else p===-1&&(u=!1,p=c+1),d>=0&&(g===s.charCodeAt(d)?--d===-1&&(l=c):(d=-1,l=p))}return a===l?l=p:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){t(i);for(var s=-1,a=0,l=-1,u=!0,c=0,d=i.length-1;d>=0;--d){var p=i.charCodeAt(d);if(p===47){if(!u){a=d+1;break}continue}l===-1&&(u=!1,l=d+1),p===46?s===-1?s=d:c!==1&&(c=1):s!==-1&&(c=-1)}return s===-1||l===-1||c===0||c===1&&s===l-1&&s===a+1?"":i.slice(s,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var s={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return s;var a=i.charCodeAt(0),l=a===47,u;l?(s.root="/",u=1):u=0;for(var c=-1,d=0,p=-1,g=!0,_=i.length-1,b=0;_>=u;--_){if(a=i.charCodeAt(_),a===47){if(!g){d=_+1;break}continue}p===-1&&(g=!1,p=_+1),a===46?c===-1?c=_:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===d+1?p!==-1&&(d===0&&l?s.base=s.name=i.slice(1,p):s.base=s.name=i.slice(d,p)):(d===0&&l?(s.name=i.slice(1,c),s.base=i.slice(1,p)):(s.name=i.slice(d,c),s.base=i.slice(d,p)),s.ext=i.slice(c,p)),d>0?s.dir=i.slice(0,d-1):l&&(s.dir="/"),s},sep:"/",delimiter:":",win32:null,posix:null};return o.posix=o,ja=o,ja}function _k(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return dl?bk(e):wk(e)}function bk(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let o=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&o===102||r[n+1]==="5"&&o===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(Dw,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,o=r[2];if(n<Lw||n>Bw||o!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function wk(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function vk(e){let t=kh.resolve(e),r=e.charCodeAt(e.length-1);(r===Pw||dl&&r===Mw)&&t[t.length-1]!==kh.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace($w,"%25")),!dl&&t.includes("\\")&&(t=t.replace(Uw,"%5C")),t.includes(`
-`)&&(t=t.replace(Fw,"%0A")),t.includes("\r")&&(t=t.replace(jw,"%0D")),t.includes("	")&&(t=t.replace(Ww,"%09")),n.pathname=t,n}function kw(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return pl?Ek(e):Sk(e)}function Ek(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let o=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&o===102||r[n+1]==="5"&&o===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(Zw,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,o=r[2];if(n<Xw||n>Jw||o!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function Sk(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function Nw(e){let t=Rh.resolve(e),r=e.charCodeAt(e.length-1);(r===Qw||pl&&r===Gw)&&t[t.length-1]!==Rh.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace(ev,"%25")),!pl&&t.includes("\\")&&(t=t.replace(tv,"%5C")),t.includes(`
-`)&&(t=t.replace(rv,"%0A")),t.includes("\r")&&(t=t.replace(nv,"%0D")),t.includes("	")&&(t=t.replace(iv,"%09")),n.pathname=t,n}var qe,Cm,cr,Rm,Om,km,Nm,da,hc,dc,pc,Mm,Pm,pa,ri,ga,ja,Oh,kh,Lm,Mw,Pw,Lw,Bw,dl,Dw,$w,Uw,Fw,jw,Ww,Bm,Hw,Vw,qw,Kw,Yw,zw,Gw,Qw,Xw,Jw,pl,Zw,ev,tv,rv,nv,iv,Ak=vt(()=>{we(),Ee(),ve(),uk(),fk(),dk(),mk(),Rw(),qe={},Cm=Cn,cr={isString:function(e){return typeof e=="string"},isObject:function(e){return typeof e=="object"&&e!==null},isNull:function(e){return e===null},isNullOrUndefined:function(e){return e==null}},qe.parse=rs,qe.resolve=function(e,t){return rs(e,!1,!0).resolve(t)},qe.resolveObject=function(e,t){return e?rs(e,!1,!0).resolveObject(t):t},qe.format=function(e){return cr.isString(e)&&(e=rs(e)),e instanceof Zt?e.format():Zt.prototype.format.call(e)},qe.Url=Zt,Rm=/^([a-z0-9.+-]+:)/i,Om=/:[0-9]*$/,km=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,Nm=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r",`
-`,"	"]),da=["'"].concat(Nm),hc=["%","/","?",";","#"].concat(da),dc=["/","?","#"],pc=/^[+a-z0-9A-Z_-]{0,63}$/,Mm=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Pm={javascript:!0,"javascript:":!0},pa={javascript:!0,"javascript:":!0},ri={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},ga=Tr,Zt.prototype.parse=function(e,t,r){if(!cr.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e.indexOf("?"),o=n!==-1&&n<e.indexOf("#")?"?":"#",i=e.split(o);i[0]=i[0].replace(/\\/g,"/");var s=e=i.join(o);if(s=s.trim(),!r&&e.split("#").length===1){var a=km.exec(s);if(a)return this.path=s,this.href=s,this.pathname=a[1],a[2]?(this.search=a[2],this.query=t?ga.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var l=Rm.exec(s);if(l){var u=(l=l[0]).toLowerCase();this.protocol=u,s=s.substr(l.length)}if(r||l||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var c=s.substr(0,2)==="//";!c||l&&pa[l]||(s=s.substr(2),this.slashes=!0)}if(!pa[l]&&(c||l&&!ri[l])){for(var d,p,g=-1,_=0;_<dc.length;_++)(b=s.indexOf(dc[_]))!==-1&&(g===-1||b<g)&&(g=b);for((p=g===-1?s.lastIndexOf("@"):s.lastIndexOf("@",g))!==-1&&(d=s.slice(0,p),s=s.slice(p+1),this.auth=decodeURIComponent(d)),g=-1,_=0;_<hc.length;_++){var b;(b=s.indexOf(hc[_]))!==-1&&(g===-1||b<g)&&(g=b)}g===-1&&(g=s.length),this.host=s.slice(0,g),s=s.slice(g),this.parseHost(),this.hostname=this.hostname||"";var x=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!x)for(var k=this.hostname.split(/\./),R=(_=0,k.length);_<R;_++){var A=k[_];if(A&&!A.match(pc)){for(var B="",$=0,I=A.length;$<I;$++)A.charCodeAt($)>127?B+="x":B+=A[$];if(!B.match(pc)){var P=k.slice(0,_),W=k.slice(_+1),Y=A.match(Mm);Y&&(P.push(Y[1]),W.unshift(Y[2])),W.length&&(s="/"+W.join(".")+s),this.hostname=P.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),x||(this.hostname=Cm.toASCII(this.hostname));var oe=this.port?":"+this.port:"",te=this.hostname||"";this.host=te+oe,this.href+=this.host,x&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),s[0]!=="/"&&(s="/"+s))}if(!Pm[u])for(_=0,R=da.length;_<R;_++){var M=da[_];if(s.indexOf(M)!==-1){var L=encodeURIComponent(M);L===M&&(L=escape(M)),s=s.split(M).join(L)}}var ie=s.indexOf("#");ie!==-1&&(this.hash=s.substr(ie),s=s.slice(0,ie));var re=s.indexOf("?");if(re!==-1?(this.search=s.substr(re),this.query=s.substr(re+1),t&&(this.query=ga.parse(this.query)),s=s.slice(0,re)):t&&(this.search="",this.query={}),s&&(this.pathname=s),ri[u]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){oe=this.pathname||"";var ae=this.search||"";this.path=oe+ae}return this.href=this.format(),this},Zt.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",o=!1,i="";this.host?o=e+this.host:this.hostname&&(o=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&cr.isObject(this.query)&&Object.keys(this.query).length&&(i=ga.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&t.substr(-1)!==":"&&(t+=":"),this.slashes||(!t||ri[t])&&o!==!1?(o="//"+(o||""),r&&r.charAt(0)!=="/"&&(r="/"+r)):o||(o=""),n&&n.charAt(0)!=="#"&&(n="#"+n),s&&s.charAt(0)!=="?"&&(s="?"+s),t+o+(r=r.replace(/[?#]/g,function(a){return encodeURIComponent(a)}))+(s=s.replace("#","%23"))+n},Zt.prototype.resolve=function(e){return this.resolveObject(rs(e,!1,!0)).format()},Zt.prototype.resolveObject=function(e){if(cr.isString(e)){var t=new Zt;t.parse(e,!1,!0),e=t}for(var r=new Zt,n=Object.keys(this),o=0;o<n.length;o++){var i=n[o];r[i]=this[i]}if(r.hash=e.hash,e.href==="")return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),a=0;a<s.length;a++){var l=s[a];l!=="protocol"&&(r[l]=e[l])}return ri[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!ri[e.protocol]){for(var u=Object.keys(e),c=0;c<u.length;c++){var d=u[c];r[d]=e[d]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||pa[e.protocol])r.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),p[0]!==""&&p.unshift(""),p.length<2&&p.unshift(""),r.pathname=p.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var g=r.pathname||"",_=r.search||"";r.path=g+_}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var b=r.pathname&&r.pathname.charAt(0)==="/",x=e.host||e.pathname&&e.pathname.charAt(0)==="/",k=x||b||r.host&&e.pathname,R=k,A=r.pathname&&r.pathname.split("/")||[],B=(p=e.pathname&&e.pathname.split("/")||[],r.protocol&&!ri[r.protocol]);if(B&&(r.hostname="",r.port=null,r.host&&(A[0]===""?A[0]=r.host:A.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(p[0]===""?p[0]=e.host:p.unshift(e.host)),e.host=null),k=k&&(p[0]===""||A[0]==="")),x)r.host=e.host||e.host===""?e.host:r.host,r.hostname=e.hostname||e.hostname===""?e.hostname:r.hostname,r.search=e.search,r.query=e.query,A=p;else if(p.length)A||(A=[]),A.pop(),A=A.concat(p),r.search=e.search,r.query=e.query;else if(!cr.isNullOrUndefined(e.search))return B&&(r.hostname=r.host=A.shift(),(Y=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=Y.shift(),r.host=r.hostname=Y.shift())),r.search=e.search,r.query=e.query,cr.isNull(r.pathname)&&cr.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!A.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var $=A.slice(-1)[0],I=(r.host||e.host||A.length>1)&&($==="."||$==="..")||$==="",P=0,W=A.length;W>=0;W--)($=A[W])==="."?A.splice(W,1):$===".."?(A.splice(W,1),P++):P&&(A.splice(W,1),P--);if(!k&&!R)for(;P--;P)A.unshift("..");!k||A[0]===""||A[0]&&A[0].charAt(0)==="/"||A.unshift(""),I&&A.join("/").substr(-1)!=="/"&&A.push("");var Y,oe=A[0]===""||A[0]&&A[0].charAt(0)==="/";return B&&(r.hostname=r.host=oe?"":A.length?A.shift():"",(Y=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=Y.shift(),r.host=r.hostname=Y.shift())),(k=k||r.host&&A.length)&&!oe&&A.unshift(""),A.length?r.pathname=A.join("/"):(r.pathname=null,r.path=null),cr.isNull(r.pathname)&&cr.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},Zt.prototype.parseHost=function(){var e=this.host,t=Om.exec(e);t&&((t=t[0])!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},qe.Url,qe.format,qe.resolve,qe.resolveObject,ja={},Oh=!1,kh=yk(),Lm=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=vk,qe.fileURLToPath=_k,qe.Url,qe.format,qe.resolve,qe.resolveObject,qe.URL,Mw=92,Pw=47,Lw=97,Bw=122,dl=Lm==="win32",Dw=/\//g,$w=/%/g,Uw=/\\/g,Fw=/\n/g,jw=/\r/g,Ww=/\t/g,Bm=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=Nw,qe.fileURLToPath=kw,Hw=qe.Url,Vw=qe.format,qw=qe.resolve,Kw=qe.resolveObject,Yw=qe.parse,zw=qe.URL,Gw=92,Qw=47,Xw=97,Jw=122,pl=Bm==="win32",Zw=/\//g,ev=/%/g,tv=/\\/g,rv=/\n/g,nv=/\r/g,iv=/\t/g}),Tk=Oe((e,t)=>{we(),Ee(),ve(),t.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),rp=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0}),e.BufferedDuplex=e.writev=void 0;var t=ji(),r=(St(),ze(Et));function n(i,s){let a=new Array(i.length);for(let l=0;l<i.length;l++)typeof i[l].chunk=="string"?a[l]=r.Buffer.from(i[l].chunk,"utf8"):a[l]=i[l].chunk;this._write(r.Buffer.concat(a),"binary",s)}e.writev=n;var o=class extends t.Duplex{constructor(i,s,a){super({objectMode:!0}),this.proxy=s,this.socket=a,this.writeQueue=[],i.objectMode||(this._writev=n.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",l=>{this.destroyed||this.push(l)})}_read(i){this.proxy.read(i)}_write(i,s,a){this.isSocketOpen?this.writeToProxy(i,s,a):this.writeQueue.push({chunk:i,encoding:s,cb:a})}_final(i){this.writeQueue=[],this.proxy.end(i)}_destroy(i,s){this.writeQueue=[],this.proxy.destroy(),s(i)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(i,s,a){this.proxy.write(i,s)===!1?this.proxy.once("drain",a):a()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:i,encoding:s,cb:a}=this.writeQueue.shift();this.writeToProxy(i,s,a)}}};e.BufferedDuplex=o}),ma=Oe(e=>{we(),Ee(),ve();var t=e&&e.__importDefault||function(k){return k&&k.__esModule?k:{default:k}};Object.defineProperty(e,"__esModule",{value:!0}),e.streamBuilder=e.browserStreamBuilder=void 0;var r=(St(),ze(Et)),n=t(Tk()),o=t(cn()),i=ji(),s=t(ou()),a=rp(),l=(0,o.default)("mqttjs:ws"),u=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function c(k,R){let A=`${k.protocol}://${k.hostname}:${k.port}${k.path}`;return typeof k.transformWsUrl=="function"&&(A=k.transformWsUrl(A,k,R)),A}function d(k){let R=k;return k.port||(k.protocol==="wss"?R.port=443:R.port=80),k.path||(R.path="/"),k.wsOptions||(R.wsOptions={}),!s.default&&!k.forceNativeWebSocket&&k.protocol==="wss"&&u.forEach(A=>{Object.prototype.hasOwnProperty.call(k,A)&&!Object.prototype.hasOwnProperty.call(k.wsOptions,A)&&(R.wsOptions[A]=k[A])}),R}function p(k){let R=d(k);if(R.hostname||(R.hostname=R.host),!R.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let A=new URL(document.URL);R.hostname=A.hostname,R.port||(R.port=Number(A.port))}return R.objectMode===void 0&&(R.objectMode=!(R.binary===!0||R.binary===void 0)),R}function g(k,R,A){l("createWebSocket"),l(`protocol: ${A.protocolId} ${A.protocolVersion}`);let B=A.protocolId==="MQIsdp"&&A.protocolVersion===3?"mqttv3.1":"mqtt";l(`creating new Websocket for url: ${R} and protocol: ${B}`);let $;return A.createWebsocket?$=A.createWebsocket(R,[B],A):$=new n.default(R,[B],A.wsOptions),$}function _(k,R){let A=R.protocolId==="MQIsdp"&&R.protocolVersion===3?"mqttv3.1":"mqtt",B=c(R,k),$;return R.createWebsocket?$=R.createWebsocket(B,[A],R):$=new WebSocket(B,[A]),$.binaryType="arraybuffer",$}var b=(k,R)=>{l("streamBuilder");let A=d(R);A.hostname=A.hostname||A.host||"localhost";let B=c(A,k),$=g(k,B,A),I=n.default.createWebSocketStream($,A.wsOptions);return I.url=B,$.on("close",()=>{I.destroy()}),I};e.streamBuilder=b;var x=(k,R)=>{l("browserStreamBuilder");let A,B=p(R).browserBufferSize||1024*512,$=R.browserBufferTimeout||1e3,I=!R.objectMode,P=_(k,R),W=oe(R,re,ae);R.objectMode||(W._writev=a.writev.bind(W)),W.on("close",()=>{P.close()});let Y=typeof P.addEventListener<"u";P.readyState===P.OPEN?(A=W,A.socket=P):(A=new a.BufferedDuplex(R,W,P),Y?P.addEventListener("open",te):P.onopen=te),Y?(P.addEventListener("close",M),P.addEventListener("error",L),P.addEventListener("message",ie)):(P.onclose=M,P.onerror=L,P.onmessage=ie);function oe(se,Q,he){let fe=new i.Transform({objectMode:se.objectMode});return fe._write=Q,fe._flush=he,fe}function te(){l("WebSocket onOpen"),A instanceof a.BufferedDuplex&&A.socketReady()}function M(se){l("WebSocket onClose",se),A.end(),A.destroy()}function L(se){l("WebSocket onError",se);let Q=new Error("WebSocket error");Q.event=se,A.destroy(Q)}function ie(se){let{data:Q}=se;Q instanceof ArrayBuffer?Q=r.Buffer.from(Q):Q=r.Buffer.from(Q,"utf8"),W&&!W.destroyed&&W.push(Q)}function re(se,Q,he){if(P.bufferedAmount>B){setTimeout(re,$,se,Q,he);return}I&&typeof se=="string"&&(se=r.Buffer.from(se,"utf8"));try{P.send(se)}catch(fe){return he(fe)}he()}function ae(se){P.close(),se()}return A};e.browserStreamBuilder=x}),np={};$i(np,{Server:()=>nt,Socket:()=>nt,Stream:()=>nt,_createServerHandle:()=>nt,_normalizeArgs:()=>nt,_setSimultaneousAccepts:()=>nt,connect:()=>nt,createConnection:()=>nt,createServer:()=>nt,default:()=>ov,isIP:()=>nt,isIPv4:()=>nt,isIPv6:()=>nt});function nt(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var ov,sv=vt(()=>{we(),Ee(),ve(),ov={_createServerHandle:nt,_normalizeArgs:nt,_setSimultaneousAccepts:nt,connect:nt,createConnection:nt,createServer:nt,isIP:nt,isIPv4:nt,isIPv6:nt,Server:nt,Socket:nt,Stream:nt}}),Dm=Oe(e=>{we(),Ee(),ve();var t=e&&e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((sv(),ze(np))),n=t(cn()),o=(0,n.default)("mqttjs:tcp"),i=(s,a)=>{a.port=a.port||1883,a.hostname=a.hostname||a.host||"localhost";let{port:l,path:u}=a,c=a.hostname;return o("port %d and host %s",l,c),r.default.createConnection({port:l,host:c,path:u})};e.default=i}),av={};$i(av,{default:()=>lv});var lv,xk=vt(()=>{we(),Ee(),ve(),lv={}}),$m=Oe(e=>{we(),Ee(),ve();var t=e&&e.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((xk(),ze(av))),n=t((sv(),ze(np))),o=t(cn()),i=(0,o.default)("mqttjs:tls"),s=(a,l)=>{l.port=l.port||8883,l.host=l.hostname||l.host||"localhost",n.default.isIP(l.host)===0&&(l.servername=l.host),l.rejectUnauthorized=l.rejectUnauthorized!==!1,delete l.path,i("port %d host %s rejectUnauthorized %b",l.port,l.host,l.rejectUnauthorized);let u=r.default.connect(l);u.on("secureConnect",()=>{l.rejectUnauthorized&&!u.authorized?u.emit("error",new Error("TLS not authorized")):u.removeListener("error",c)});function c(d){l.rejectUnauthorized&&a.emit("error",d),u.end()}return u.on("error",c),u};e.default=s}),Um=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0});var t=(St(),ze(Et)),r=ji(),n=rp(),o,i,s;function a(){let p=new r.Transform;return p._write=(g,_,b)=>{o.send({data:g.buffer,success(){b()},fail(x){b(new Error(x))}})},p._flush=g=>{o.close({success(){g()}})},p}function l(p){p.hostname||(p.hostname="localhost"),p.path||(p.path="/"),p.wsOptions||(p.wsOptions={})}function u(p,g){let _=p.protocol==="wxs"?"wss":"ws",b=`${_}://${p.hostname}${p.path}`;return p.port&&p.port!==80&&p.port!==443&&(b=`${_}://${p.hostname}:${p.port}${p.path}`),typeof p.transformWsUrl=="function"&&(b=p.transformWsUrl(b,p,g)),b}function c(){o.onOpen(()=>{s.socketReady()}),o.onMessage(p=>{let{data:g}=p;g instanceof ArrayBuffer?g=t.Buffer.from(g):g=t.Buffer.from(g,"utf8"),i.push(g)}),o.onClose(()=>{s.emit("close"),s.end(),s.destroy()}),o.onError(p=>{let g=new Error(p.errMsg);s.destroy(g)})}var d=(p,g)=>{if(g.hostname=g.hostname||g.host,!g.hostname)throw new Error("Could not determine host. Specify host manually.");let _=g.protocolId==="MQIsdp"&&g.protocolVersion===3?"mqttv3.1":"mqtt";l(g);let b=u(g,p);o=wx.connectSocket({url:b,protocols:[_]}),i=a(),s=new n.BufferedDuplex(g,i,o),s._destroy=(k,R)=>{o.close({success(){R&&R(k)}})};let x=s.destroy;return s.destroy=(k,R)=>(s.destroy=x,setTimeout(()=>{o.close({fail(){s._destroy(k,R)}})},0),s),c(),s};e.default=d}),Fm=Oe(e=>{we(),Ee(),ve(),Object.defineProperty(e,"__esModule",{value:!0});var t=(St(),ze(Et)),r=ji(),n=rp(),o,i,s,a=!1;function l(){let g=new r.Transform;return g._write=(_,b,x)=>{o.sendSocketMessage({data:_.buffer,success(){x()},fail(){x(new Error)}})},g._flush=_=>{o.closeSocket({success(){_()}})},g}function u(g){g.hostname||(g.hostname="localhost"),g.path||(g.path="/"),g.wsOptions||(g.wsOptions={})}function c(g,_){let b=g.protocol==="alis"?"wss":"ws",x=`${b}://${g.hostname}${g.path}`;return g.port&&g.port!==80&&g.port!==443&&(x=`${b}://${g.hostname}:${g.port}${g.path}`),typeof g.transformWsUrl=="function"&&(x=g.transformWsUrl(x,g,_)),x}function d(){a||(a=!0,o.onSocketOpen(()=>{s.socketReady()}),o.onSocketMessage(g=>{if(typeof g.data=="string"){let _=t.Buffer.from(g.data,"base64");i.push(_)}else{let _=new FileReader;_.addEventListener("load",()=>{let b=_.result;b instanceof ArrayBuffer?b=t.Buffer.from(b):b=t.Buffer.from(b,"utf8"),i.push(b)}),_.readAsArrayBuffer(g.data)}}),o.onSocketClose(()=>{s.end(),s.destroy()}),o.onSocketError(g=>{s.destroy(g)}))}var p=(g,_)=>{if(_.hostname=_.hostname||_.host,!_.hostname)throw new Error("Could not determine host. Specify host manually.");let b=_.protocolId==="MQIsdp"&&_.protocolVersion===3?"mqttv3.1":"mqtt";u(_);let x=c(_,g);return o=_.my,o.connectSocket({url:x,protocols:b}),i=l(),s=new n.BufferedDuplex(_,i,o),d(),s};e.default=p}),Ik=Oe(e=>{we(),Ee(),ve();var t=e&&e.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(e,"__esModule",{value:!0}),e.connectAsync=void 0;var r=t(cn()),n=t((Ak(),ze(Ow))),o=t(Sh()),i=t(ou());typeof(Ve==null?void 0:Ve.nextTick)!="function"&&(Ve.nextTick=setImmediate);var s=(0,r.default)("mqttjs"),a=null;function l(d){let p;d.auth&&(p=d.auth.match(/^(.+):(.+)$/),p?(d.username=p[1],d.password=p[2]):d.username=d.auth)}function u(d,p){var g,_,b,x;if(s("connecting to an MQTT broker..."),typeof d=="object"&&!p&&(p=d,d=""),p=p||{},d&&typeof d=="string"){let A=n.default.parse(d,!0),B={};if(A.port!=null&&(B.port=Number(A.port)),B.host=A.hostname,B.query=A.query,B.auth=A.auth,B.protocol=A.protocol,B.path=A.path,B.protocol=(g=B.protocol)===null||g===void 0?void 0:g.replace(/:$/,""),p=Object.assign(Object.assign({},B),p),!p.protocol)throw new Error("Missing protocol")}if(p.unixSocket=p.unixSocket||((_=p.protocol)===null||_===void 0?void 0:_.includes("+unix")),p.unixSocket?p.protocol=p.protocol.replace("+unix",""):!(!((b=p.protocol)===null||b===void 0)&&b.startsWith("ws"))&&!(!((x=p.protocol)===null||x===void 0)&&x.startsWith("wx"))&&delete p.path,l(p),p.query&&typeof p.query.clientId=="string"&&(p.clientId=p.query.clientId),p.cert&&p.key)if(p.protocol){if(["mqtts","wss","wxs","alis"].indexOf(p.protocol)===-1)switch(p.protocol){case"mqtt":p.protocol="mqtts";break;case"ws":p.protocol="wss";break;case"wx":p.protocol="wxs";break;case"ali":p.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${p.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(a||(a={},!i.default&&!p.forceNativeWebSocket?(a.ws=ma().streamBuilder,a.wss=ma().streamBuilder,a.mqtt=Dm().default,a.tcp=Dm().default,a.ssl=$m().default,a.tls=a.ssl,a.mqtts=$m().default):(a.ws=ma().browserStreamBuilder,a.wss=ma().browserStreamBuilder,a.wx=Um().default,a.wxs=Um().default,a.ali=Fm().default,a.alis=Fm().default)),!a[p.protocol]){let A=["mqtts","wss"].indexOf(p.protocol)!==-1;p.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((B,$)=>A&&$%2===0?!1:typeof a[B]=="function")[0]}if(p.clean===!1&&!p.clientId)throw new Error("Missing clientId for unclean clients");p.protocol&&(p.defaultProtocol=p.protocol);function k(A){return p.servers&&((!A._reconnectCount||A._reconnectCount===p.servers.length)&&(A._reconnectCount=0),p.host=p.servers[A._reconnectCount].host,p.port=p.servers[A._reconnectCount].port,p.protocol=p.servers[A._reconnectCount].protocol?p.servers[A._reconnectCount].protocol:p.defaultProtocol,p.hostname=p.host,A._reconnectCount++),s("calling streambuilder for",p.protocol),a[p.protocol](A,p)}let R=new o.default(k,p);return R.on("error",()=>{}),R}function c(d,p,g=!0){return new Promise((_,b)=>{let x=u(d,p),k={connect:A=>{R(),_(x)},end:()=>{R(),_(x)},error:A=>{R(),x.end(),b(A)}};g===!1&&(k.close=()=>{k.error(new Error("Couldn't connect to server"))});function R(){Object.keys(k).forEach(A=>{x.off(A,k[A])})}Object.keys(k).forEach(A=>{x.on(A,k[A])})})}e.connectAsync=c,e.default=u}),jm=Oe(e=>{we(),Ee(),ve();var t=e&&e.__createBinding||(Object.create?function(g,_,b,x){x===void 0&&(x=b);var k=Object.getOwnPropertyDescriptor(_,b);(!k||("get"in k?!_.__esModule:k.writable||k.configurable))&&(k={enumerable:!0,get:function(){return _[b]}}),Object.defineProperty(g,x,k)}:function(g,_,b,x){x===void 0&&(x=b),g[x]=_[b]}),r=e&&e.__setModuleDefault||(Object.create?function(g,_){Object.defineProperty(g,"default",{enumerable:!0,value:_})}:function(g,_){g.default=_}),n=e&&e.__importStar||function(g){if(g&&g.__esModule)return g;var _={};if(g!=null)for(var b in g)b!=="default"&&Object.prototype.hasOwnProperty.call(g,b)&&t(_,g,b);return r(_,g),_},o=e&&e.__exportStar||function(g,_){for(var b in g)b!=="default"&&!Object.prototype.hasOwnProperty.call(_,b)&&t(_,g,b)},i=e&&e.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=e.KeepaliveManager=e.UniqueMessageIdProvider=e.DefaultMessageIdProvider=e.Store=e.MqttClient=e.connectAsync=e.connect=e.Client=void 0;var s=i(Sh());e.MqttClient=s.default;var a=i(aw());e.DefaultMessageIdProvider=a.default;var l=i(lk());e.UniqueMessageIdProvider=l.default;var u=i(lw());e.Store=u.default;var c=n(Ik());e.connect=c.default,Object.defineProperty(e,"connectAsync",{enumerable:!0,get:function(){return c.connectAsync}});var d=i(Aw());e.KeepaliveManager=d.default,e.Client=s.default,o(Sh(),e),o(Vo(),e);var p=iu();Object.defineProperty(e,"ReasonCodes",{enumerable:!0,get:function(){return p.ReasonCodes}})}),Ck=Oe(e=>{we(),Ee(),ve();var t=e&&e.__createBinding||(Object.create?function(s,a,l,u){u===void 0&&(u=l);var c=Object.getOwnPropertyDescriptor(a,l);(!c||("get"in c?!a.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return a[l]}}),Object.defineProperty(s,u,c)}:function(s,a,l,u){u===void 0&&(u=l),s[u]=a[l]}),r=e&&e.__setModuleDefault||(Object.create?function(s,a){Object.defineProperty(s,"default",{enumerable:!0,value:a})}:function(s,a){s.default=a}),n=e&&e.__importStar||function(s){if(s&&s.__esModule)return s;var a={};if(s!=null)for(var l in s)l!=="default"&&Object.prototype.hasOwnProperty.call(s,l)&&t(a,s,l);return r(a,s),a},o=e&&e.__exportStar||function(s,a){for(var l in s)l!=="default"&&!Object.prototype.hasOwnProperty.call(a,l)&&t(a,s,l)};Object.defineProperty(e,"__esModule",{value:!0});var i=n(jm());e.default=i,o(jm(),e)});const e3=Ck();/*! Bundled license information:
-
-@jspm/core/nodelibs/browser/buffer.js:
-  (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
-*/var ip={exports:{}},uv={exports:{}},gc={exports:{}},Jt={},su={};su.byteLength=kk;su.toByteArray=Mk;su.fromByteArray=Bk;var Or=[],er=[],Rk=typeof Uint8Array<"u"?Uint8Array:Array,mc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Ji=0,Ok=mc.length;Ji<Ok;++Ji)Or[Ji]=mc[Ji],er[mc.charCodeAt(Ji)]=Ji;er[45]=62;er[95]=63;function cv(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function kk(e){var t=cv(e),r=t[0],n=t[1];return(r+n)*3/4-n}function Nk(e,t,r){return(t+r)*3/4-r}function Mk(e){var t,r=cv(e),n=r[0],o=r[1],i=new Rk(Nk(e,n,o)),s=0,a=o>0?n-4:n,l;for(l=0;l<a;l+=4)t=er[e.charCodeAt(l)]<<18|er[e.charCodeAt(l+1)]<<12|er[e.charCodeAt(l+2)]<<6|er[e.charCodeAt(l+3)],i[s++]=t>>16&255,i[s++]=t>>8&255,i[s++]=t&255;return o===2&&(t=er[e.charCodeAt(l)]<<2|er[e.charCodeAt(l+1)]>>4,i[s++]=t&255),o===1&&(t=er[e.charCodeAt(l)]<<10|er[e.charCodeAt(l+1)]<<4|er[e.charCodeAt(l+2)]>>2,i[s++]=t>>8&255,i[s++]=t&255),i}function Pk(e){return Or[e>>18&63]+Or[e>>12&63]+Or[e>>6&63]+Or[e&63]}function Lk(e,t,r){for(var n,o=[],i=t;i<r;i+=3)n=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(e[i+2]&255),o.push(Pk(n));return o.join("")}function Bk(e){for(var t,r=e.length,n=r%3,o=[],i=16383,s=0,a=r-n;s<a;s+=i)o.push(Lk(e,s,s+i>a?a:s+i));return n===1?(t=e[r-1],o.push(Or[t>>2]+Or[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],o.push(Or[t>>10]+Or[t>>4&63]+Or[t<<2&63]+"=")),o.join("")}var op={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */op.read=function(e,t,r,n,o){var i,s,a=o*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,g=e[t+d];for(d+=p,i=g&(1<<-c)-1,g>>=-c,c+=a;c>0;i=i*256+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=s*256+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:(g?-1:1)*(1/0);s=s+Math.pow(2,n),i=i-u}return(g?-1:1)*s*Math.pow(2,i-n)};op.write=function(e,t,r,n,o,i){var s,a,l,u=i*8-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+d>=1?t+=p/l:t+=p*Math.pow(2,1-d),t*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s=s+d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+g]=a&255,g+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+g]=s&255,g+=_,s/=256,u-=8);e[r+g-_]|=b*128};/*!
- * The buffer module from node.js, for the browser.
- *
- * @author   Feross Aboukhadijeh <https://feross.org>
- * @license  MIT
- */(function(e){const t=su,r=op,n=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=R,e.INSPECT_MAX_BYTES=50;const o=2147483647;e.kMaxLength=o,a.TYPED_ARRAY_SUPPORT=i(),!a.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function i(){try{const h=new Uint8Array(1),f={foo:function(){return 42}};return Object.setPrototypeOf(f,Uint8Array.prototype),Object.setPrototypeOf(h,f),h.foo()===42}catch{return!1}}Object.defineProperty(a.prototype,"parent",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}});function s(h){if(h>o)throw new RangeError('The value "'+h+'" is invalid for option "size"');const f=new Uint8Array(h);return Object.setPrototypeOf(f,a.prototype),f}function a(h,f,m){if(typeof h=="number"){if(typeof f=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return d(h)}return l(h,f,m)}a.poolSize=8192;function l(h,f,m){if(typeof h=="string")return p(h,f);if(ArrayBuffer.isView(h))return _(h);if(h==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof h);if(z(h,ArrayBuffer)||h&&z(h.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(z(h,SharedArrayBuffer)||h&&z(h.buffer,SharedArrayBuffer)))return b(h,f,m);if(typeof h=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const w=h.valueOf&&h.valueOf();if(w!=null&&w!==h)return a.from(w,f,m);const v=x(h);if(v)return v;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof h[Symbol.toPrimitive]=="function")return a.from(h[Symbol.toPrimitive]("string"),f,m);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof h)}a.from=function(h,f,m){return l(h,f,m)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array);function u(h){if(typeof h!="number")throw new TypeError('"size" argument must be of type number');if(h<0)throw new RangeError('The value "'+h+'" is invalid for option "size"')}function c(h,f,m){return u(h),h<=0?s(h):f!==void 0?typeof m=="string"?s(h).fill(f,m):s(h).fill(f):s(h)}a.alloc=function(h,f,m){return c(h,f,m)};function d(h){return u(h),s(h<0?0:k(h)|0)}a.allocUnsafe=function(h){return d(h)},a.allocUnsafeSlow=function(h){return d(h)};function p(h,f){if((typeof f!="string"||f==="")&&(f="utf8"),!a.isEncoding(f))throw new TypeError("Unknown encoding: "+f);const m=A(h,f)|0;let w=s(m);const v=w.write(h,f);return v!==m&&(w=w.slice(0,v)),w}function g(h){const f=h.length<0?0:k(h.length)|0,m=s(f);for(let w=0;w<f;w+=1)m[w]=h[w]&255;return m}function _(h){if(z(h,Uint8Array)){const f=new Uint8Array(h);return b(f.buffer,f.byteOffset,f.byteLength)}return g(h)}function b(h,f,m){if(f<0||h.byteLength<f)throw new RangeError('"offset" is outside of buffer bounds');if(h.byteLength<f+(m||0))throw new RangeError('"length" is outside of buffer bounds');let w;return f===void 0&&m===void 0?w=new Uint8Array(h):m===void 0?w=new Uint8Array(h,f):w=new Uint8Array(h,f,m),Object.setPrototypeOf(w,a.prototype),w}function x(h){if(a.isBuffer(h)){const f=k(h.length)|0,m=s(f);return m.length===0||h.copy(m,0,0,f),m}if(h.length!==void 0)return typeof h.length!="number"||ce(h.length)?s(0):g(h);if(h.type==="Buffer"&&Array.isArray(h.data))return g(h.data)}function k(h){if(h>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return h|0}function R(h){return+h!=h&&(h=0),a.alloc(+h)}a.isBuffer=function(f){return f!=null&&f._isBuffer===!0&&f!==a.prototype},a.compare=function(f,m){if(z(f,Uint8Array)&&(f=a.from(f,f.offset,f.byteLength)),z(m,Uint8Array)&&(m=a.from(m,m.offset,m.byteLength)),!a.isBuffer(f)||!a.isBuffer(m))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(f===m)return 0;let w=f.length,v=m.length;for(let C=0,H=Math.min(w,v);C<H;++C)if(f[C]!==m[C]){w=f[C],v=m[C];break}return w<v?-1:v<w?1:0},a.isEncoding=function(f){switch(String(f).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},a.concat=function(f,m){if(!Array.isArray(f))throw new TypeError('"list" argument must be an Array of Buffers');if(f.length===0)return a.alloc(0);let w;if(m===void 0)for(m=0,w=0;w<f.length;++w)m+=f[w].length;const v=a.allocUnsafe(m);let C=0;for(w=0;w<f.length;++w){let H=f[w];if(z(H,Uint8Array))C+H.length>v.length?(a.isBuffer(H)||(H=a.from(H)),H.copy(v,C)):Uint8Array.prototype.set.call(v,H,C);else if(a.isBuffer(H))H.copy(v,C);else throw new TypeError('"list" argument must be an Array of Buffers');C+=H.length}return v};function A(h,f){if(a.isBuffer(h))return h.length;if(ArrayBuffer.isView(h)||z(h,ArrayBuffer))return h.byteLength;if(typeof h!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof h);const m=h.length,w=arguments.length>2&&arguments[2]===!0;if(!w&&m===0)return 0;let v=!1;for(;;)switch(f){case"ascii":case"latin1":case"binary":return m;case"utf8":case"utf-8":return N(h).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return m*2;case"hex":return m>>>1;case"base64":return D(h).length;default:if(v)return w?-1:N(h).length;f=(""+f).toLowerCase(),v=!0}}a.byteLength=A;function B(h,f,m){let w=!1;if((f===void 0||f<0)&&(f=0),f>this.length||((m===void 0||m>this.length)&&(m=this.length),m<=0)||(m>>>=0,f>>>=0,m<=f))return"";for(h||(h="utf8");;)switch(h){case"hex":return he(this,f,m);case"utf8":case"utf-8":return ie(this,f,m);case"ascii":return se(this,f,m);case"latin1":case"binary":return Q(this,f,m);case"base64":return L(this,f,m);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return fe(this,f,m);default:if(w)throw new TypeError("Unknown encoding: "+h);h=(h+"").toLowerCase(),w=!0}}a.prototype._isBuffer=!0;function $(h,f,m){const w=h[f];h[f]=h[m],h[m]=w}a.prototype.swap16=function(){const f=this.length;if(f%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let m=0;m<f;m+=2)$(this,m,m+1);return this},a.prototype.swap32=function(){const f=this.length;if(f%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let m=0;m<f;m+=4)$(this,m,m+3),$(this,m+1,m+2);return this},a.prototype.swap64=function(){const f=this.length;if(f%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let m=0;m<f;m+=8)$(this,m,m+7),$(this,m+1,m+6),$(this,m+2,m+5),$(this,m+3,m+4);return this},a.prototype.toString=function(){const f=this.length;return f===0?"":arguments.length===0?ie(this,0,f):B.apply(this,arguments)},a.prototype.toLocaleString=a.prototype.toString,a.prototype.equals=function(f){if(!a.isBuffer(f))throw new TypeError("Argument must be a Buffer");return this===f?!0:a.compare(this,f)===0},a.prototype.inspect=function(){let f="";const m=e.INSPECT_MAX_BYTES;return f=this.toString("hex",0,m).replace(/(.{2})/g,"$1 ").trim(),this.length>m&&(f+=" ... "),"<Buffer "+f+">"},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(f,m,w,v,C){if(z(f,Uint8Array)&&(f=a.from(f,f.offset,f.byteLength)),!a.isBuffer(f))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof f);if(m===void 0&&(m=0),w===void 0&&(w=f?f.length:0),v===void 0&&(v=0),C===void 0&&(C=this.length),m<0||w>f.length||v<0||C>this.length)throw new RangeError("out of range index");if(v>=C&&m>=w)return 0;if(v>=C)return-1;if(m>=w)return 1;if(m>>>=0,w>>>=0,v>>>=0,C>>>=0,this===f)return 0;let H=C-v,de=w-m;const me=Math.min(H,de),_e=this.slice(v,C),Ae=f.slice(m,w);for(let ke=0;ke<me;++ke)if(_e[ke]!==Ae[ke]){H=_e[ke],de=Ae[ke];break}return H<de?-1:de<H?1:0};function I(h,f,m,w,v){if(h.length===0)return-1;if(typeof m=="string"?(w=m,m=0):m>2147483647?m=2147483647:m<-2147483648&&(m=-2147483648),m=+m,ce(m)&&(m=v?0:h.length-1),m<0&&(m=h.length+m),m>=h.length){if(v)return-1;m=h.length-1}else if(m<0)if(v)m=0;else return-1;if(typeof f=="string"&&(f=a.from(f,w)),a.isBuffer(f))return f.length===0?-1:P(h,f,m,w,v);if(typeof f=="number")return f=f&255,typeof Uint8Array.prototype.indexOf=="function"?v?Uint8Array.prototype.indexOf.call(h,f,m):Uint8Array.prototype.lastIndexOf.call(h,f,m):P(h,[f],m,w,v);throw new TypeError("val must be string, number or Buffer")}function P(h,f,m,w,v){let C=1,H=h.length,de=f.length;if(w!==void 0&&(w=String(w).toLowerCase(),w==="ucs2"||w==="ucs-2"||w==="utf16le"||w==="utf-16le")){if(h.length<2||f.length<2)return-1;C=2,H/=2,de/=2,m/=2}function me(Ae,ke){return C===1?Ae[ke]:Ae.readUInt16BE(ke*C)}let _e;if(v){let Ae=-1;for(_e=m;_e<H;_e++)if(me(h,_e)===me(f,Ae===-1?0:_e-Ae)){if(Ae===-1&&(Ae=_e),_e-Ae+1===de)return Ae*C}else Ae!==-1&&(_e-=_e-Ae),Ae=-1}else for(m+de>H&&(m=H-de),_e=m;_e>=0;_e--){let Ae=!0;for(let ke=0;ke<de;ke++)if(me(h,_e+ke)!==me(f,ke)){Ae=!1;break}if(Ae)return _e}return-1}a.prototype.includes=function(f,m,w){return this.indexOf(f,m,w)!==-1},a.prototype.indexOf=function(f,m,w){return I(this,f,m,w,!0)},a.prototype.lastIndexOf=function(f,m,w){return I(this,f,m,w,!1)};function W(h,f,m,w){m=Number(m)||0;const v=h.length-m;w?(w=Number(w),w>v&&(w=v)):w=v;const C=f.length;w>C/2&&(w=C/2);let H;for(H=0;H<w;++H){const de=parseInt(f.substr(H*2,2),16);if(ce(de))return H;h[m+H]=de}return H}function Y(h,f,m,w){return K(N(f,h.length-m),h,m,w)}function oe(h,f,m,w){return K(ee(f),h,m,w)}function te(h,f,m,w){return K(D(f),h,m,w)}function M(h,f,m,w){return K(J(f,h.length-m),h,m,w)}a.prototype.write=function(f,m,w,v){if(m===void 0)v="utf8",w=this.length,m=0;else if(w===void 0&&typeof m=="string")v=m,w=this.length,m=0;else if(isFinite(m))m=m>>>0,isFinite(w)?(w=w>>>0,v===void 0&&(v="utf8")):(v=w,w=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const C=this.length-m;if((w===void 0||w>C)&&(w=C),f.length>0&&(w<0||m<0)||m>this.length)throw new RangeError("Attempt to write outside buffer bounds");v||(v="utf8");let H=!1;for(;;)switch(v){case"hex":return W(this,f,m,w);case"utf8":case"utf-8":return Y(this,f,m,w);case"ascii":case"latin1":case"binary":return oe(this,f,m,w);case"base64":return te(this,f,m,w);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,f,m,w);default:if(H)throw new TypeError("Unknown encoding: "+v);v=(""+v).toLowerCase(),H=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function L(h,f,m){return f===0&&m===h.length?t.fromByteArray(h):t.fromByteArray(h.slice(f,m))}function ie(h,f,m){m=Math.min(h.length,m);const w=[];let v=f;for(;v<m;){const C=h[v];let H=null,de=C>239?4:C>223?3:C>191?2:1;if(v+de<=m){let me,_e,Ae,ke;switch(de){case 1:C<128&&(H=C);break;case 2:me=h[v+1],(me&192)===128&&(ke=(C&31)<<6|me&63,ke>127&&(H=ke));break;case 3:me=h[v+1],_e=h[v+2],(me&192)===128&&(_e&192)===128&&(ke=(C&15)<<12|(me&63)<<6|_e&63,ke>2047&&(ke<55296||ke>57343)&&(H=ke));break;case 4:me=h[v+1],_e=h[v+2],Ae=h[v+3],(me&192)===128&&(_e&192)===128&&(Ae&192)===128&&(ke=(C&15)<<18|(me&63)<<12|(_e&63)<<6|Ae&63,ke>65535&&ke<1114112&&(H=ke))}}H===null?(H=65533,de=1):H>65535&&(H-=65536,w.push(H>>>10&1023|55296),H=56320|H&1023),w.push(H),v+=de}return ae(w)}const re=4096;function ae(h){const f=h.length;if(f<=re)return String.fromCharCode.apply(String,h);let m="",w=0;for(;w<f;)m+=String.fromCharCode.apply(String,h.slice(w,w+=re));return m}function se(h,f,m){let w="";m=Math.min(h.length,m);for(let v=f;v<m;++v)w+=String.fromCharCode(h[v]&127);return w}function Q(h,f,m){let w="";m=Math.min(h.length,m);for(let v=f;v<m;++v)w+=String.fromCharCode(h[v]);return w}function he(h,f,m){const w=h.length;(!f||f<0)&&(f=0),(!m||m<0||m>w)&&(m=w);let v="";for(let C=f;C<m;++C)v+=be[h[C]];return v}function fe(h,f,m){const w=h.slice(f,m);let v="";for(let C=0;C<w.length-1;C+=2)v+=String.fromCharCode(w[C]+w[C+1]*256);return v}a.prototype.slice=function(f,m){const w=this.length;f=~~f,m=m===void 0?w:~~m,f<0?(f+=w,f<0&&(f=0)):f>w&&(f=w),m<0?(m+=w,m<0&&(m=0)):m>w&&(m=w),m<f&&(m=f);const v=this.subarray(f,m);return Object.setPrototypeOf(v,a.prototype),v};function pe(h,f,m){if(h%1!==0||h<0)throw new RangeError("offset is not uint");if(h+f>m)throw new RangeError("Trying to access beyond buffer length")}a.prototype.readUintLE=a.prototype.readUIntLE=function(f,m,w){f=f>>>0,m=m>>>0,w||pe(f,m,this.length);let v=this[f],C=1,H=0;for(;++H<m&&(C*=256);)v+=this[f+H]*C;return v},a.prototype.readUintBE=a.prototype.readUIntBE=function(f,m,w){f=f>>>0,m=m>>>0,w||pe(f,m,this.length);let v=this[f+--m],C=1;for(;m>0&&(C*=256);)v+=this[f+--m]*C;return v},a.prototype.readUint8=a.prototype.readUInt8=function(f,m){return f=f>>>0,m||pe(f,1,this.length),this[f]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(f,m){return f=f>>>0,m||pe(f,2,this.length),this[f]|this[f+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(f,m){return f=f>>>0,m||pe(f,2,this.length),this[f]<<8|this[f+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(f,m){return f=f>>>0,m||pe(f,4,this.length),(this[f]|this[f+1]<<8|this[f+2]<<16)+this[f+3]*16777216},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(f,m){return f=f>>>0,m||pe(f,4,this.length),this[f]*16777216+(this[f+1]<<16|this[f+2]<<8|this[f+3])},a.prototype.readBigUInt64LE=Te(function(f){f=f>>>0,E(f,"offset");const m=this[f],w=this[f+7];(m===void 0||w===void 0)&&T(f,this.length-8);const v=m+this[++f]*2**8+this[++f]*2**16+this[++f]*2**24,C=this[++f]+this[++f]*2**8+this[++f]*2**16+w*2**24;return BigInt(v)+(BigInt(C)<<BigInt(32))}),a.prototype.readBigUInt64BE=Te(function(f){f=f>>>0,E(f,"offset");const m=this[f],w=this[f+7];(m===void 0||w===void 0)&&T(f,this.length-8);const v=m*2**24+this[++f]*2**16+this[++f]*2**8+this[++f],C=this[++f]*2**24+this[++f]*2**16+this[++f]*2**8+w;return(BigInt(v)<<BigInt(32))+BigInt(C)}),a.prototype.readIntLE=function(f,m,w){f=f>>>0,m=m>>>0,w||pe(f,m,this.length);let v=this[f],C=1,H=0;for(;++H<m&&(C*=256);)v+=this[f+H]*C;return C*=128,v>=C&&(v-=Math.pow(2,8*m)),v},a.prototype.readIntBE=function(f,m,w){f=f>>>0,m=m>>>0,w||pe(f,m,this.length);let v=m,C=1,H=this[f+--v];for(;v>0&&(C*=256);)H+=this[f+--v]*C;return C*=128,H>=C&&(H-=Math.pow(2,8*m)),H},a.prototype.readInt8=function(f,m){return f=f>>>0,m||pe(f,1,this.length),this[f]&128?(255-this[f]+1)*-1:this[f]},a.prototype.readInt16LE=function(f,m){f=f>>>0,m||pe(f,2,this.length);const w=this[f]|this[f+1]<<8;return w&32768?w|4294901760:w},a.prototype.readInt16BE=function(f,m){f=f>>>0,m||pe(f,2,this.length);const w=this[f+1]|this[f]<<8;return w&32768?w|4294901760:w},a.prototype.readInt32LE=function(f,m){return f=f>>>0,m||pe(f,4,this.length),this[f]|this[f+1]<<8|this[f+2]<<16|this[f+3]<<24},a.prototype.readInt32BE=function(f,m){return f=f>>>0,m||pe(f,4,this.length),this[f]<<24|this[f+1]<<16|this[f+2]<<8|this[f+3]},a.prototype.readBigInt64LE=Te(function(f){f=f>>>0,E(f,"offset");const m=this[f],w=this[f+7];(m===void 0||w===void 0)&&T(f,this.length-8);const v=this[f+4]+this[f+5]*2**8+this[f+6]*2**16+(w<<24);return(BigInt(v)<<BigInt(32))+BigInt(m+this[++f]*2**8+this[++f]*2**16+this[++f]*2**24)}),a.prototype.readBigInt64BE=Te(function(f){f=f>>>0,E(f,"offset");const m=this[f],w=this[f+7];(m===void 0||w===void 0)&&T(f,this.length-8);const v=(m<<24)+this[++f]*2**16+this[++f]*2**8+this[++f];return(BigInt(v)<<BigInt(32))+BigInt(this[++f]*2**24+this[++f]*2**16+this[++f]*2**8+w)}),a.prototype.readFloatLE=function(f,m){return f=f>>>0,m||pe(f,4,this.length),r.read(this,f,!0,23,4)},a.prototype.readFloatBE=function(f,m){return f=f>>>0,m||pe(f,4,this.length),r.read(this,f,!1,23,4)},a.prototype.readDoubleLE=function(f,m){return f=f>>>0,m||pe(f,8,this.length),r.read(this,f,!0,52,8)},a.prototype.readDoubleBE=function(f,m){return f=f>>>0,m||pe(f,8,this.length),r.read(this,f,!1,52,8)};function F(h,f,m,w,v,C){if(!a.isBuffer(h))throw new TypeError('"buffer" argument must be a Buffer instance');if(f>v||f<C)throw new RangeError('"value" argument is out of bounds');if(m+w>h.length)throw new RangeError("Index out of range")}a.prototype.writeUintLE=a.prototype.writeUIntLE=function(f,m,w,v){if(f=+f,m=m>>>0,w=w>>>0,!v){const de=Math.pow(2,8*w)-1;F(this,f,m,w,de,0)}let C=1,H=0;for(this[m]=f&255;++H<w&&(C*=256);)this[m+H]=f/C&255;return m+w},a.prototype.writeUintBE=a.prototype.writeUIntBE=function(f,m,w,v){if(f=+f,m=m>>>0,w=w>>>0,!v){const de=Math.pow(2,8*w)-1;F(this,f,m,w,de,0)}let C=w-1,H=1;for(this[m+C]=f&255;--C>=0&&(H*=256);)this[m+C]=f/H&255;return m+w},a.prototype.writeUint8=a.prototype.writeUInt8=function(f,m,w){return f=+f,m=m>>>0,w||F(this,f,m,1,255,0),this[m]=f&255,m+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(f,m,w){return f=+f,m=m>>>0,w||F(this,f,m,2,65535,0),this[m]=f&255,this[m+1]=f>>>8,m+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(f,m,w){return f=+f,m=m>>>0,w||F(this,f,m,2,65535,0),this[m]=f>>>8,this[m+1]=f&255,m+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(f,m,w){return f=+f,m=m>>>0,w||F(this,f,m,4,4294967295,0),this[m+3]=f>>>24,this[m+2]=f>>>16,this[m+1]=f>>>8,this[m]=f&255,m+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(f,m,w){return f=+f,m=m>>>0,w||F(this,f,m,4,4294967295,0),this[m]=f>>>24,this[m+1]=f>>>16,this[m+2]=f>>>8,this[m+3]=f&255,m+4};function ne(h,f,m,w,v){X(f,w,v,h,m,7);let C=Number(f&BigInt(4294967295));h[m++]=C,C=C>>8,h[m++]=C,C=C>>8,h[m++]=C,C=C>>8,h[m++]=C;let H=Number(f>>BigInt(32)&BigInt(4294967295));return h[m++]=H,H=H>>8,h[m++]=H,H=H>>8,h[m++]=H,H=H>>8,h[m++]=H,m}function ge(h,f,m,w,v){X(f,w,v,h,m,7);let C=Number(f&BigInt(4294967295));h[m+7]=C,C=C>>8,h[m+6]=C,C=C>>8,h[m+5]=C,C=C>>8,h[m+4]=C;let H=Number(f>>BigInt(32)&BigInt(4294967295));return h[m+3]=H,H=H>>8,h[m+2]=H,H=H>>8,h[m+1]=H,H=H>>8,h[m]=H,m+8}a.prototype.writeBigUInt64LE=Te(function(f,m=0){return ne(this,f,m,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeBigUInt64BE=Te(function(f,m=0){return ge(this,f,m,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeIntLE=function(f,m,w,v){if(f=+f,m=m>>>0,!v){const me=Math.pow(2,8*w-1);F(this,f,m,w,me-1,-me)}let C=0,H=1,de=0;for(this[m]=f&255;++C<w&&(H*=256);)f<0&&de===0&&this[m+C-1]!==0&&(de=1),this[m+C]=(f/H>>0)-de&255;return m+w},a.prototype.writeIntBE=function(f,m,w,v){if(f=+f,m=m>>>0,!v){const me=Math.pow(2,8*w-1);F(this,f,m,w,me-1,-me)}let C=w-1,H=1,de=0;for(this[m+C]=f&255;--C>=0&&(H*=256);)f<0&&de===0&&this[m+C+1]!==0&&(de=1),this[m+C]=(f/H>>0)-de&255;return m+w},a.prototype.writeInt8=function(f,m,w){return f=+f,m=m>>>0,w||F(this,f,m,1,127,-128),f<0&&(f=255+f+1),this[m]=f&255,m+1},a.prototype.writeInt16LE=function(f,m,w){return f=+f,m=m>>>0,w||F(this,f,m,2,32767,-32768),this[m]=f&255,this[m+1]=f>>>8,m+2},a.prototype.writeInt16BE=function(f,m,w){return f=+f,m=m>>>0,w||F(this,f,m,2,32767,-32768),this[m]=f>>>8,this[m+1]=f&255,m+2},a.prototype.writeInt32LE=function(f,m,w){return f=+f,m=m>>>0,w||F(this,f,m,4,2147483647,-2147483648),this[m]=f&255,this[m+1]=f>>>8,this[m+2]=f>>>16,this[m+3]=f>>>24,m+4},a.prototype.writeInt32BE=function(f,m,w){return f=+f,m=m>>>0,w||F(this,f,m,4,2147483647,-2147483648),f<0&&(f=4294967295+f+1),this[m]=f>>>24,this[m+1]=f>>>16,this[m+2]=f>>>8,this[m+3]=f&255,m+4},a.prototype.writeBigInt64LE=Te(function(f,m=0){return ne(this,f,m,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),a.prototype.writeBigInt64BE=Te(function(f,m=0){return ge(this,f,m,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Se(h,f,m,w,v,C){if(m+w>h.length)throw new RangeError("Index out of range");if(m<0)throw new RangeError("Index out of range")}function ye(h,f,m,w,v){return f=+f,m=m>>>0,v||Se(h,f,m,4),r.write(h,f,m,w,23,4),m+4}a.prototype.writeFloatLE=function(f,m,w){return ye(this,f,m,!0,w)},a.prototype.writeFloatBE=function(f,m,w){return ye(this,f,m,!1,w)};function V(h,f,m,w,v){return f=+f,m=m>>>0,v||Se(h,f,m,8),r.write(h,f,m,w,52,8),m+8}a.prototype.writeDoubleLE=function(f,m,w){return V(this,f,m,!0,w)},a.prototype.writeDoubleBE=function(f,m,w){return V(this,f,m,!1,w)},a.prototype.copy=function(f,m,w,v){if(!a.isBuffer(f))throw new TypeError("argument should be a Buffer");if(w||(w=0),!v&&v!==0&&(v=this.length),m>=f.length&&(m=f.length),m||(m=0),v>0&&v<w&&(v=w),v===w||f.length===0||this.length===0)return 0;if(m<0)throw new RangeError("targetStart out of bounds");if(w<0||w>=this.length)throw new RangeError("Index out of range");if(v<0)throw new RangeError("sourceEnd out of bounds");v>this.length&&(v=this.length),f.length-m<v-w&&(v=f.length-m+w);const C=v-w;return this===f&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(m,w,v):Uint8Array.prototype.set.call(f,this.subarray(w,v),m),C},a.prototype.fill=function(f,m,w,v){if(typeof f=="string"){if(typeof m=="string"?(v=m,m=0,w=this.length):typeof w=="string"&&(v=w,w=this.length),v!==void 0&&typeof v!="string")throw new TypeError("encoding must be a string");if(typeof v=="string"&&!a.isEncoding(v))throw new TypeError("Unknown encoding: "+v);if(f.length===1){const H=f.charCodeAt(0);(v==="utf8"&&H<128||v==="latin1")&&(f=H)}}else typeof f=="number"?f=f&255:typeof f=="boolean"&&(f=Number(f));if(m<0||this.length<m||this.length<w)throw new RangeError("Out of range index");if(w<=m)return this;m=m>>>0,w=w===void 0?this.length:w>>>0,f||(f=0);let C;if(typeof f=="number")for(C=m;C<w;++C)this[C]=f;else{const H=a.isBuffer(f)?f:a.from(f,v),de=H.length;if(de===0)throw new TypeError('The value "'+f+'" is invalid for argument "value"');for(C=0;C<w-m;++C)this[C+m]=H[C%de]}return this};const j={};function Z(h,f,m){j[h]=class extends m{constructor(){super(),Object.defineProperty(this,"message",{value:f.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${h}]`,this.stack,delete this.name}get code(){return h}set code(v){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:v,writable:!0})}toString(){return`${this.name} [${h}]: ${this.message}`}}}Z("ERR_BUFFER_OUT_OF_BOUNDS",function(h){return h?`${h} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Z("ERR_INVALID_ARG_TYPE",function(h,f){return`The "${h}" argument must be of type number. Received type ${typeof f}`},TypeError),Z("ERR_OUT_OF_RANGE",function(h,f,m){let w=`The value of "${h}" is out of range.`,v=m;return Number.isInteger(m)&&Math.abs(m)>2**32?v=ue(String(m)):typeof m=="bigint"&&(v=String(m),(m>BigInt(2)**BigInt(32)||m<-(BigInt(2)**BigInt(32)))&&(v=ue(v)),v+="n"),w+=` It must be ${f}. Received ${v}`,w},RangeError);function ue(h){let f="",m=h.length;const w=h[0]==="-"?1:0;for(;m>=w+4;m-=3)f=`_${h.slice(m-3,m)}${f}`;return`${h.slice(0,m)}${f}`}function le(h,f,m){E(f,"offset"),(h[f]===void 0||h[f+m]===void 0)&&T(f,h.length-(m+1))}function X(h,f,m,w,v,C){if(h>m||h<f){const H=typeof f=="bigint"?"n":"";let de;throw f===0||f===BigInt(0)?de=`>= 0${H} and < 2${H} ** ${(C+1)*8}${H}`:de=`>= -(2${H} ** ${(C+1)*8-1}${H}) and < 2 ** ${(C+1)*8-1}${H}`,new j.ERR_OUT_OF_RANGE("value",de,h)}le(w,v,C)}function E(h,f){if(typeof h!="number")throw new j.ERR_INVALID_ARG_TYPE(f,"number",h)}function T(h,f,m){throw Math.floor(h)!==h?(E(h,m),new j.ERR_OUT_OF_RANGE("offset","an integer",h)):f<0?new j.ERR_BUFFER_OUT_OF_BOUNDS:new j.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${f}`,h)}const S=/[^+/0-9A-Za-z-_]/g;function O(h){if(h=h.split("=")[0],h=h.trim().replace(S,""),h.length<2)return"";for(;h.length%4!==0;)h=h+"=";return h}function N(h,f){f=f||1/0;let m;const w=h.length;let v=null;const C=[];for(let H=0;H<w;++H){if(m=h.charCodeAt(H),m>55295&&m<57344){if(!v){if(m>56319){(f-=3)>-1&&C.push(239,191,189);continue}else if(H+1===w){(f-=3)>-1&&C.push(239,191,189);continue}v=m;continue}if(m<56320){(f-=3)>-1&&C.push(239,191,189),v=m;continue}m=(v-55296<<10|m-56320)+65536}else v&&(f-=3)>-1&&C.push(239,191,189);if(v=null,m<128){if((f-=1)<0)break;C.push(m)}else if(m<2048){if((f-=2)<0)break;C.push(m>>6|192,m&63|128)}else if(m<65536){if((f-=3)<0)break;C.push(m>>12|224,m>>6&63|128,m&63|128)}else if(m<1114112){if((f-=4)<0)break;C.push(m>>18|240,m>>12&63|128,m>>6&63|128,m&63|128)}else throw new Error("Invalid code point")}return C}function ee(h){const f=[];for(let m=0;m<h.length;++m)f.push(h.charCodeAt(m)&255);return f}function J(h,f){let m,w,v;const C=[];for(let H=0;H<h.length&&!((f-=2)<0);++H)m=h.charCodeAt(H),w=m>>8,v=m%256,C.push(v),C.push(w);return C}function D(h){return t.toByteArray(O(h))}function K(h,f,m,w){let v;for(v=0;v<w&&!(v+m>=f.length||v>=h.length);++v)f[v+m]=h[v];return v}function z(h,f){return h instanceof f||h!=null&&h.constructor!=null&&h.constructor.name!=null&&h.constructor.name===f.name}function ce(h){return h!==h}const be=function(){const h="0123456789abcdef",f=new Array(256);for(let m=0;m<16;++m){const w=m*16;for(let v=0;v<16;++v)f[w+v]=h[m]+h[v]}return f}();function Te(h){return typeof BigInt>"u"?y:h}function y(){throw new Error("BigInt not supported")}})(Jt);var ut={ArrayIsArray(e){return Array.isArray(e)},ArrayPrototypeIncludes(e,t){return e.includes(t)},ArrayPrototypeIndexOf(e,t){return e.indexOf(t)},ArrayPrototypeJoin(e,t){return e.join(t)},ArrayPrototypeMap(e,t){return e.map(t)},ArrayPrototypePop(e,t){return e.pop(t)},ArrayPrototypePush(e,t){return e.push(t)},ArrayPrototypeSlice(e,t,r){return e.slice(t,r)},Error,FunctionPrototypeCall(e,t,...r){return e.call(t,...r)},FunctionPrototypeSymbolHasInstance(e,t){return Function.prototype[Symbol.hasInstance].call(e,t)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(e,t){return Object.defineProperties(e,t)},ObjectDefineProperty(e,t,r){return Object.defineProperty(e,t,r)},ObjectGetOwnPropertyDescriptor(e,t){return Object.getOwnPropertyDescriptor(e,t)},ObjectKeys(e){return Object.keys(e)},ObjectSetPrototypeOf(e,t){return Object.setPrototypeOf(e,t)},Promise,PromisePrototypeCatch(e,t){return e.catch(t)},PromisePrototypeThen(e,t,r){return e.then(t,r)},PromiseReject(e){return Promise.reject(e)},PromiseResolve(e){return Promise.resolve(e)},ReflectApply:Reflect.apply,RegExpPrototypeTest(e,t){return e.test(t)},SafeSet:Set,String,StringPrototypeSlice(e,t,r){return e.slice(t,r)},StringPrototypeToLowerCase(e){return e.toLowerCase()},StringPrototypeToUpperCase(e){return e.toUpperCase()},StringPrototypeTrim(e){return e.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol("Symbol.dispose"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol("Symbol.asyncDispose"),TypedArrayPrototypeSet(e,t,r){return e.set(t,r)},Boolean,Uint8Array},fv={exports:{}},ns={exports:{}},Wm;function Ns(){if(Wm)return ns.exports;Wm=1;const{AbortController:e,AbortSignal:t}=typeof self<"u"?self:typeof window<"u"?window:void 0;return ns.exports=e,ns.exports.AbortSignal=t,ns.exports.default=e,ns.exports}var sp={exports:{}},yo=typeof Reflect=="object"?Reflect:null,Hm=yo&&typeof yo.apply=="function"?yo.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},Wa;yo&&typeof yo.ownKeys=="function"?Wa=yo.ownKeys:Object.getOwnPropertySymbols?Wa=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Wa=function(t){return Object.getOwnPropertyNames(t)};function Dk(e){console&&console.warn&&console.warn(e)}var hv=Number.isNaN||function(t){return t!==t};function Ye(){Ye.init.call(this)}sp.exports=Ye;sp.exports.once=jk;Ye.EventEmitter=Ye;Ye.prototype._events=void 0;Ye.prototype._eventsCount=0;Ye.prototype._maxListeners=void 0;var Vm=10;function au(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Ye,"defaultMaxListeners",{enumerable:!0,get:function(){return Vm},set:function(e){if(typeof e!="number"||e<0||hv(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Vm=e}});Ye.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ye.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||hv(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function dv(e){return e._maxListeners===void 0?Ye.defaultMaxListeners:e._maxListeners}Ye.prototype.getMaxListeners=function(){return dv(this)};Ye.prototype.emit=function(t){for(var r=[],n=1;n<arguments.length;n++)r.push(arguments[n]);var o=t==="error",i=this._events;if(i!==void 0)o=o&&i.error===void 0;else if(!o)return!1;if(o){var s;if(r.length>0&&(s=r[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var l=i[t];if(l===void 0)return!1;if(typeof l=="function")Hm(l,this,r);else for(var u=l.length,c=_v(l,u),n=0;n<u;++n)Hm(c[n],this,r);return!0};function pv(e,t,r,n){var o,i,s;if(au(r),i=e._events,i===void 0?(i=e._events=Object.create(null),e._eventsCount=0):(i.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),s=i[t]),s===void 0)s=i[t]=r,++e._eventsCount;else if(typeof s=="function"?s=i[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),o=dv(e),o>0&&s.length>o&&!s.warned){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=e,a.type=t,a.count=s.length,Dk(a)}return e}Ye.prototype.addListener=function(t,r){return pv(this,t,r,!1)};Ye.prototype.on=Ye.prototype.addListener;Ye.prototype.prependListener=function(t,r){return pv(this,t,r,!0)};function $k(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function gv(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=$k.bind(n);return o.listener=r,n.wrapFn=o,o}Ye.prototype.once=function(t,r){return au(r),this.on(t,gv(this,t,r)),this};Ye.prototype.prependOnceListener=function(t,r){return au(r),this.prependListener(t,gv(this,t,r)),this};Ye.prototype.removeListener=function(t,r){var n,o,i,s,a;if(au(r),o=this._events,o===void 0)return this;if(n=o[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete o[t],o.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===r||n[s].listener===r){a=n[s].listener,i=s;break}if(i<0)return this;i===0?n.shift():Uk(n,i),n.length===1&&(o[t]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",t,a||r)}return this};Ye.prototype.off=Ye.prototype.removeListener;Ye.prototype.removeAllListeners=function(t){var r,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var i=Object.keys(n),s;for(o=0;o<i.length;++o)s=i[o],s!=="removeListener"&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=n[t],typeof r=="function")this.removeListener(t,r);else if(r!==void 0)for(o=r.length-1;o>=0;o--)this.removeListener(t,r[o]);return this};function mv(e,t,r){var n=e._events;if(n===void 0)return[];var o=n[t];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?Fk(o):_v(o,o.length)}Ye.prototype.listeners=function(t){return mv(this,t,!0)};Ye.prototype.rawListeners=function(t){return mv(this,t,!1)};Ye.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):yv.call(e,t)};Ye.prototype.listenerCount=yv;function yv(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Ye.prototype.eventNames=function(){return this._eventsCount>0?Wa(this._events):[]};function _v(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function Uk(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}function Fk(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}function jk(e,t){return new Promise(function(r,n){function o(s){e.removeListener(t,i),n(s)}function i(){typeof e.removeListener=="function"&&e.removeListener("error",o),r([].slice.call(arguments))}bv(e,t,i,{once:!0}),t!=="error"&&Wk(e,o,{once:!0})})}function Wk(e,t,r){typeof e.on=="function"&&bv(e,"error",t,r)}function bv(e,t,r,n){if(typeof e.on=="function")n.once?e.once(t,r):e.on(t,r);else if(typeof e.addEventListener=="function")e.addEventListener(t,function o(i){n.once&&e.removeEventListener(t,o),r(i)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e)}var lu=sp.exports;(function(e){const t=Jt,{kResistStopPropagation:r,SymbolDispose:n}=ut,o=globalThis.AbortSignal||Ns().AbortSignal,i=globalThis.AbortController||Ns().AbortController,s=Object.getPrototypeOf(async function(){}).constructor,a=globalThis.Blob||t.Blob,l=typeof a<"u"?function(g){return g instanceof a}:function(g){return!1},u=(p,g)=>{if(p!==void 0&&(p===null||typeof p!="object"||!("aborted"in p)))throw new ERR_INVALID_ARG_TYPE(g,"AbortSignal",p)},c=(p,g)=>{if(typeof p!="function")throw new ERR_INVALID_ARG_TYPE(g,"Function",p)};class d extends Error{constructor(g){if(!Array.isArray(g))throw new TypeError(`Expected input to be an Array, got ${typeof g}`);let _="";for(let b=0;b<g.length;b++)_+=`    ${g[b].stack}
-`;super(_),this.name="AggregateError",this.errors=g}}e.exports={AggregateError:d,kEmptyObject:Object.freeze({}),once(p){let g=!1;return function(..._){g||(g=!0,p.apply(this,_))}},createDeferredPromise:function(){let p,g;return{promise:new Promise((b,x)=>{p=b,g=x}),resolve:p,reject:g}},promisify(p){return new Promise((g,_)=>{p((b,...x)=>b?_(b):g(...x))})},debuglog(){return function(){}},format(p,...g){return p.replace(/%([sdifj])/g,function(...[_,b]){const x=g.shift();return b==="f"?x.toFixed(6):b==="j"?JSON.stringify(x):b==="s"&&typeof x=="object"?`${x.constructor!==Object?x.constructor.name:""} {}`.trim():x.toString()})},inspect(p){switch(typeof p){case"string":if(p.includes("'"))if(p.includes('"')){if(!p.includes("`")&&!p.includes("${"))return`\`${p}\``}else return`"${p}"`;return`'${p}'`;case"number":return isNaN(p)?"NaN":Object.is(p,-0)?String(p):p;case"bigint":return`${String(p)}n`;case"boolean":case"undefined":return String(p);case"object":return"{}"}},types:{isAsyncFunction(p){return p instanceof s},isArrayBufferView(p){return ArrayBuffer.isView(p)}},isBlob:l,deprecate(p,g){return p},addAbortListener:lu.addAbortListener||function(g,_){if(g===void 0)throw new ERR_INVALID_ARG_TYPE("signal","AbortSignal",g);u(g,"signal"),c(_,"listener");let b;return g.aborted?queueMicrotask(()=>_()):(g.addEventListener("abort",_,{__proto__:null,once:!0,[r]:!0}),b=()=>{g.removeEventListener("abort",_)}),{__proto__:null,[n](){var x;(x=b)===null||x===void 0||x()}}},AbortSignalAny:o.any||function(g){if(g.length===1)return g[0];const _=new i,b=()=>_.abort();return g.forEach(x=>{u(x,"signals"),x.addEventListener("abort",b,{once:!0})}),_.signal.addEventListener("abort",()=>{g.forEach(x=>x.removeEventListener("abort",b))},{once:!0}),_.signal}},e.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")})(fv);var Lt=fv.exports,ap={};const{format:Hk,inspect:gl,AggregateError:Vk}=Lt,qk=globalThis.AggregateError||Vk,Kk=Symbol("kIsNodeError"),Yk=["string","function","number","object","Function","Object","boolean","bigint","symbol"],zk=/^([A-Z][a-z0-9]*)+$/,Gk="__node_internal_",uu={};function Ti(e,t){if(!e)throw new uu.ERR_INTERNAL_ASSERTION(t)}function qm(e){let t="",r=e.length;const n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function Qk(e,t,r){if(typeof t=="function")return Ti(t.length<=r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${t.length}).`),t(...r);const n=(t.match(/%[dfijoOs]/g)||[]).length;return Ti(n===r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${n}).`),r.length===0?t:Hk(t,...r)}function At(e,t,r){r||(r=Error);class n extends r{constructor(...i){super(Qk(e,t,i))}toString(){return`${this.name} [${e}]: ${this.message}`}}Object.defineProperties(n.prototype,{name:{value:r.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${e}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),n.prototype.code=e,n.prototype[Kk]=!0,uu[e]=n}function Km(e){const t=Gk+e.name;return Object.defineProperty(e,"name",{value:t}),e}function Xk(e,t){if(e&&t&&e!==t){if(Array.isArray(t.errors))return t.errors.push(e),t;const r=new qk([t,e],t.message);return r.code=t.code,r}return e||t}let Jk=class extends Error{constructor(t="The operation was aborted",r=void 0){if(r!==void 0&&typeof r!="object")throw new uu.ERR_INVALID_ARG_TYPE("options","Object",r);super(t,r),this.code="ABORT_ERR",this.name="AbortError"}};At("ERR_ASSERTION","%s",Error);At("ERR_INVALID_ARG_TYPE",(e,t,r)=>{Ti(typeof e=="string","'name' must be a string"),Array.isArray(t)||(t=[t]);let n="The ";e.endsWith(" argument")?n+=`${e} `:n+=`"${e}" ${e.includes(".")?"property":"argument"} `,n+="must be ";const o=[],i=[],s=[];for(const l of t)Ti(typeof l=="string","All expected entries have to be of type string"),Yk.includes(l)?o.push(l.toLowerCase()):zk.test(l)?i.push(l):(Ti(l!=="object",'The value "object" should be written as "Object"'),s.push(l));if(i.length>0){const l=o.indexOf("object");l!==-1&&(o.splice(o,l,1),i.push("Object"))}if(o.length>0){switch(o.length){case 1:n+=`of type ${o[0]}`;break;case 2:n+=`one of type ${o[0]} or ${o[1]}`;break;default:{const l=o.pop();n+=`one of type ${o.join(", ")}, or ${l}`}}(i.length>0||s.length>0)&&(n+=" or ")}if(i.length>0){switch(i.length){case 1:n+=`an instance of ${i[0]}`;break;case 2:n+=`an instance of ${i[0]} or ${i[1]}`;break;default:{const l=i.pop();n+=`an instance of ${i.join(", ")}, or ${l}`}}s.length>0&&(n+=" or ")}switch(s.length){case 0:break;case 1:s[0].toLowerCase()!==s[0]&&(n+="an "),n+=`${s[0]}`;break;case 2:n+=`one of ${s[0]} or ${s[1]}`;break;default:{const l=s.pop();n+=`one of ${s.join(", ")}, or ${l}`}}if(r==null)n+=`. Received ${r}`;else if(typeof r=="function"&&r.name)n+=`. Received function ${r.name}`;else if(typeof r=="object"){var a;if((a=r.constructor)!==null&&a!==void 0&&a.name)n+=`. Received an instance of ${r.constructor.name}`;else{const l=gl(r,{depth:-1});n+=`. Received ${l}`}}else{let l=gl(r,{colors:!1});l.length>25&&(l=`${l.slice(0,25)}...`),n+=`. Received type ${typeof r} (${l})`}return n},TypeError);At("ERR_INVALID_ARG_VALUE",(e,t,r="is invalid")=>{let n=gl(t);return n.length>128&&(n=n.slice(0,128)+"..."),`The ${e.includes(".")?"property":"argument"} '${e}' ${r}. Received ${n}`},TypeError);At("ERR_INVALID_RETURN_VALUE",(e,t,r)=>{var n;const o=r!=null&&(n=r.constructor)!==null&&n!==void 0&&n.name?`instance of ${r.constructor.name}`:`type ${typeof r}`;return`Expected ${e} to be returned from the "${t}" function but got ${o}.`},TypeError);At("ERR_MISSING_ARGS",(...e)=>{Ti(e.length>0,"At least one arg needs to be specified");let t;const r=e.length;switch(e=(Array.isArray(e)?e:[e]).map(n=>`"${n}"`).join(" or "),r){case 1:t+=`The ${e[0]} argument`;break;case 2:t+=`The ${e[0]} and ${e[1]} arguments`;break;default:{const n=e.pop();t+=`The ${e.join(", ")}, and ${n} arguments`}break}return`${t} must be specified`},TypeError);At("ERR_OUT_OF_RANGE",(e,t,r)=>{Ti(t,'Missing "range" argument');let n;return Number.isInteger(r)&&Math.abs(r)>2**32?n=qm(String(r)):typeof r=="bigint"?(n=String(r),(r>2n**32n||r<-(2n**32n))&&(n=qm(n)),n+="n"):n=gl(r),`The value of "${e}" is out of range. It must be ${t}. Received ${n}`},RangeError);At("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error);At("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error);At("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error);At("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error);At("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error);At("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);At("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error);At("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error);At("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error);At("ERR_STREAM_WRITE_AFTER_END","write after end",Error);At("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError);var Vt={AbortError:Jk,aggregateTwoErrors:Km(Xk),hideStackFrames:Km,codes:uu};const{ArrayIsArray:lp,ArrayPrototypeIncludes:wv,ArrayPrototypeJoin:vv,ArrayPrototypeMap:Zk,NumberIsInteger:up,NumberIsNaN:eN,NumberMAX_SAFE_INTEGER:tN,NumberMIN_SAFE_INTEGER:rN,NumberParseInt:nN,ObjectPrototypeHasOwnProperty:iN,RegExpPrototypeExec:Ev,String:oN,StringPrototypeToUpperCase:sN,StringPrototypeTrim:aN}=ut,{hideStackFrames:ar,codes:{ERR_SOCKET_BAD_PORT:lN,ERR_INVALID_ARG_TYPE:kt,ERR_INVALID_ARG_VALUE:qo,ERR_OUT_OF_RANGE:Oi,ERR_UNKNOWN_SIGNAL:Ym}}=Vt,{normalizeEncoding:uN}=Lt,{isAsyncFunction:cN,isArrayBufferView:fN}=Lt.types,zm={};function hN(e){return e===(e|0)}function dN(e){return e===e>>>0}const pN=/^[0-7]+$/,gN="must be a 32-bit unsigned integer or an octal string";function mN(e,t,r){if(typeof e>"u"&&(e=r),typeof e=="string"){if(Ev(pN,e)===null)throw new qo(t,e,gN);e=nN(e,8)}return Sv(e,t),e}const yN=ar((e,t,r=rN,n=tN)=>{if(typeof e!="number")throw new kt(t,"number",e);if(!up(e))throw new Oi(t,"an integer",e);if(e<r||e>n)throw new Oi(t,`>= ${r} && <= ${n}`,e)}),_N=ar((e,t,r=-2147483648,n=2147483647)=>{if(typeof e!="number")throw new kt(t,"number",e);if(!up(e))throw new Oi(t,"an integer",e);if(e<r||e>n)throw new Oi(t,`>= ${r} && <= ${n}`,e)}),Sv=ar((e,t,r=!1)=>{if(typeof e!="number")throw new kt(t,"number",e);if(!up(e))throw new Oi(t,"an integer",e);const n=r?1:0,o=4294967295;if(e<n||e>o)throw new Oi(t,`>= ${n} && <= ${o}`,e)});function cp(e,t){if(typeof e!="string")throw new kt(t,"string",e)}function bN(e,t,r=void 0,n){if(typeof e!="number")throw new kt(t,"number",e);if(r!=null&&e<r||n!=null&&e>n||(r!=null||n!=null)&&eN(e))throw new Oi(t,`${r!=null?`>= ${r}`:""}${r!=null&&n!=null?" && ":""}${n!=null?`<= ${n}`:""}`,e)}const wN=ar((e,t,r)=>{if(!wv(r,e)){const o="must be one of: "+vv(Zk(r,i=>typeof i=="string"?`'${i}'`:oN(i)),", ");throw new qo(t,e,o)}});function Av(e,t){if(typeof e!="boolean")throw new kt(t,"boolean",e)}function yc(e,t,r){return e==null||!iN(e,t)?r:e[t]}const vN=ar((e,t,r=null)=>{const n=yc(r,"allowArray",!1),o=yc(r,"allowFunction",!1);if(!yc(r,"nullable",!1)&&e===null||!n&&lp(e)||typeof e!="object"&&(!o||typeof e!="function"))throw new kt(t,"Object",e)}),EN=ar((e,t)=>{if(e!=null&&typeof e!="object"&&typeof e!="function")throw new kt(t,"a dictionary",e)}),cu=ar((e,t,r=0)=>{if(!lp(e))throw new kt(t,"Array",e);if(e.length<r){const n=`must be longer than ${r}`;throw new qo(t,e,n)}});function SN(e,t){cu(e,t);for(let r=0;r<e.length;r++)cp(e[r],`${t}[${r}]`)}function AN(e,t){cu(e,t);for(let r=0;r<e.length;r++)Av(e[r],`${t}[${r}]`)}function TN(e,t){cu(e,t);for(let r=0;r<e.length;r++){const n=e[r],o=`${t}[${r}]`;if(n==null)throw new kt(o,"AbortSignal",n);Tv(n,o)}}function xN(e,t="signal"){if(cp(e,t),zm[e]===void 0)throw zm[sN(e)]!==void 0?new Ym(e+" (signals must use all capital letters)"):new Ym(e)}const IN=ar((e,t="buffer")=>{if(!fN(e))throw new kt(t,["Buffer","TypedArray","DataView"],e)});function CN(e,t){const r=uN(t),n=e.length;if(r==="hex"&&n%2!==0)throw new qo("encoding",t,`is invalid for data of length ${n}`)}function RN(e,t="Port",r=!0){if(typeof e!="number"&&typeof e!="string"||typeof e=="string"&&aN(e).length===0||+e!==+e>>>0||e>65535||e===0&&!r)throw new lN(t,e,r);return e|0}const Tv=ar((e,t)=>{if(e!==void 0&&(e===null||typeof e!="object"||!("aborted"in e)))throw new kt(t,"AbortSignal",e)}),ON=ar((e,t)=>{if(typeof e!="function")throw new kt(t,"Function",e)}),kN=ar((e,t)=>{if(typeof e!="function"||cN(e))throw new kt(t,"Function",e)}),NN=ar((e,t)=>{if(e!==void 0)throw new kt(t,"undefined",e)});function MN(e,t,r){if(!wv(r,e))throw new kt(t,`('${vv(r,"|")}')`,e)}const PN=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function Gm(e,t){if(typeof e>"u"||!Ev(PN,e))throw new qo(t,e,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function LN(e){if(typeof e=="string")return Gm(e,"hints"),e;if(lp(e)){const t=e.length;let r="";if(t===0)return r;for(let n=0;n<t;n++){const o=e[n];Gm(o,"hints"),r+=o,n!==t-1&&(r+=", ")}return r}throw new qo("hints",e,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}var Vs={isInt32:hN,isUint32:dN,parseFileMode:mN,validateArray:cu,validateStringArray:SN,validateBooleanArray:AN,validateAbortSignalArray:TN,validateBoolean:Av,validateBuffer:IN,validateDictionary:EN,validateEncoding:CN,validateFunction:ON,validateInt32:_N,validateInteger:yN,validateNumber:bN,validateObject:vN,validateOneOf:wN,validatePlainFunction:kN,validatePort:RN,validateSignalName:xN,validateString:cp,validateUint32:Sv,validateUndefined:NN,validateUnion:MN,validateAbortSignal:Tv,validateLinkHeaderValue:LN},fp={exports:{}},xv={exports:{}},ft=xv.exports={},xr,Ir;function Nh(){throw new Error("setTimeout has not been defined")}function Mh(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?xr=setTimeout:xr=Nh}catch{xr=Nh}try{typeof clearTimeout=="function"?Ir=clearTimeout:Ir=Mh}catch{Ir=Mh}})();function Iv(e){if(xr===setTimeout)return setTimeout(e,0);if((xr===Nh||!xr)&&setTimeout)return xr=setTimeout,setTimeout(e,0);try{return xr(e,0)}catch{try{return xr.call(null,e,0)}catch{return xr.call(this,e,0)}}}function BN(e){if(Ir===clearTimeout)return clearTimeout(e);if((Ir===Mh||!Ir)&&clearTimeout)return Ir=clearTimeout,clearTimeout(e);try{return Ir(e)}catch{try{return Ir.call(null,e)}catch{return Ir.call(this,e)}}}var Zr=[],_o=!1,mi,Ha=-1;function DN(){!_o||!mi||(_o=!1,mi.length?Zr=mi.concat(Zr):Ha=-1,Zr.length&&Cv())}function Cv(){if(!_o){var e=Iv(DN);_o=!0;for(var t=Zr.length;t;){for(mi=Zr,Zr=[];++Ha<t;)mi&&mi[Ha].run();Ha=-1,t=Zr.length}mi=null,_o=!1,BN(e)}}ft.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Zr.push(new Rv(e,t)),Zr.length===1&&!_o&&Iv(Cv)};function Rv(e,t){this.fun=e,this.array=t}Rv.prototype.run=function(){this.fun.apply(null,this.array)};ft.title="browser";ft.browser=!0;ft.env={};ft.argv=[];ft.version="";ft.versions={};function vn(){}ft.on=vn;ft.addListener=vn;ft.once=vn;ft.off=vn;ft.removeListener=vn;ft.removeAllListeners=vn;ft.emit=vn;ft.prependListener=vn;ft.prependOnceListener=vn;ft.listeners=function(e){return[]};ft.binding=function(e){throw new Error("process.binding is not supported")};ft.cwd=function(){return"/"};ft.chdir=function(e){throw new Error("process.chdir is not supported")};ft.umask=function(){return 0};var Wi=xv.exports;const{SymbolAsyncIterator:Qm,SymbolIterator:Xm,SymbolFor:Hi}=ut,Ov=Hi("nodejs.stream.destroyed"),kv=Hi("nodejs.stream.errored"),Ph=Hi("nodejs.stream.readable"),Lh=Hi("nodejs.stream.writable"),Nv=Hi("nodejs.stream.disturbed"),$N=Hi("nodejs.webstream.isClosedPromise"),UN=Hi("nodejs.webstream.controllerErrorFunction");function fu(e,t=!1){var r;return!!(e&&typeof e.pipe=="function"&&typeof e.on=="function"&&(!t||typeof e.pause=="function"&&typeof e.resume=="function")&&(!e._writableState||((r=e._readableState)===null||r===void 0?void 0:r.readable)!==!1)&&(!e._writableState||e._readableState))}function hu(e){var t;return!!(e&&typeof e.write=="function"&&typeof e.on=="function"&&(!e._readableState||((t=e._writableState)===null||t===void 0?void 0:t.writable)!==!1))}function FN(e){return!!(e&&typeof e.pipe=="function"&&e._readableState&&typeof e.on=="function"&&typeof e.write=="function")}function jr(e){return e&&(e._readableState||e._writableState||typeof e.write=="function"&&typeof e.on=="function"||typeof e.pipe=="function"&&typeof e.on=="function")}function Mv(e){return!!(e&&!jr(e)&&typeof e.pipeThrough=="function"&&typeof e.getReader=="function"&&typeof e.cancel=="function")}function Pv(e){return!!(e&&!jr(e)&&typeof e.getWriter=="function"&&typeof e.abort=="function")}function Lv(e){return!!(e&&!jr(e)&&typeof e.readable=="object"&&typeof e.writable=="object")}function jN(e){return Mv(e)||Pv(e)||Lv(e)}function WN(e,t){return e==null?!1:t===!0?typeof e[Qm]=="function":t===!1?typeof e[Xm]=="function":typeof e[Qm]=="function"||typeof e[Xm]=="function"}function du(e){if(!jr(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!!(e.destroyed||e[Ov]||n!=null&&n.destroyed)}function Bv(e){if(!hu(e))return null;if(e.writableEnded===!0)return!0;const t=e._writableState;return t!=null&&t.errored?!1:typeof(t==null?void 0:t.ended)!="boolean"?null:t.ended}function HN(e,t){if(!hu(e))return null;if(e.writableFinished===!0)return!0;const r=e._writableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.finished)!="boolean"?null:!!(r.finished||t===!1&&r.ended===!0&&r.length===0)}function VN(e){if(!fu(e))return null;if(e.readableEnded===!0)return!0;const t=e._readableState;return!t||t.errored?!1:typeof(t==null?void 0:t.ended)!="boolean"?null:t.ended}function Dv(e,t){if(!fu(e))return null;const r=e._readableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.endEmitted)!="boolean"?null:!!(r.endEmitted||t===!1&&r.ended===!0&&r.length===0)}function $v(e){return e&&e[Ph]!=null?e[Ph]:typeof(e==null?void 0:e.readable)!="boolean"?null:du(e)?!1:fu(e)&&e.readable&&!Dv(e)}function Uv(e){return e&&e[Lh]!=null?e[Lh]:typeof(e==null?void 0:e.writable)!="boolean"?null:du(e)?!1:hu(e)&&e.writable&&!Bv(e)}function qN(e,t){return jr(e)?du(e)?!0:!((t==null?void 0:t.readable)!==!1&&$v(e)||(t==null?void 0:t.writable)!==!1&&Uv(e)):null}function KN(e){var t,r;return jr(e)?e.writableErrored?e.writableErrored:(t=(r=e._writableState)===null||r===void 0?void 0:r.errored)!==null&&t!==void 0?t:null:null}function YN(e){var t,r;return jr(e)?e.readableErrored?e.readableErrored:(t=(r=e._readableState)===null||r===void 0?void 0:r.errored)!==null&&t!==void 0?t:null:null}function zN(e){if(!jr(e))return null;if(typeof e.closed=="boolean")return e.closed;const t=e._writableState,r=e._readableState;return typeof(t==null?void 0:t.closed)=="boolean"||typeof(r==null?void 0:r.closed)=="boolean"?(t==null?void 0:t.closed)||(r==null?void 0:r.closed):typeof e._closed=="boolean"&&Fv(e)?e._closed:null}function Fv(e){return typeof e._closed=="boolean"&&typeof e._defaultKeepAlive=="boolean"&&typeof e._removedConnection=="boolean"&&typeof e._removedContLen=="boolean"}function jv(e){return typeof e._sent100=="boolean"&&Fv(e)}function GN(e){var t;return typeof e._consuming=="boolean"&&typeof e._dumped=="boolean"&&((t=e.req)===null||t===void 0?void 0:t.upgradeOrConnect)===void 0}function QN(e){if(!jr(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!n&&jv(e)||!!(n&&n.autoDestroy&&n.emitClose&&n.closed===!1)}function XN(e){var t;return!!(e&&((t=e[Nv])!==null&&t!==void 0?t:e.readableDidRead||e.readableAborted))}function JN(e){var t,r,n,o,i,s,a,l,u,c;return!!(e&&((t=(r=(n=(o=(i=(s=e[kv])!==null&&s!==void 0?s:e.readableErrored)!==null&&i!==void 0?i:e.writableErrored)!==null&&o!==void 0?o:(a=e._readableState)===null||a===void 0?void 0:a.errorEmitted)!==null&&n!==void 0?n:(l=e._writableState)===null||l===void 0?void 0:l.errorEmitted)!==null&&r!==void 0?r:(u=e._readableState)===null||u===void 0?void 0:u.errored)!==null&&t!==void 0?t:!((c=e._writableState)===null||c===void 0)&&c.errored))}var En={isDestroyed:du,kIsDestroyed:Ov,isDisturbed:XN,kIsDisturbed:Nv,isErrored:JN,kIsErrored:kv,isReadable:$v,kIsReadable:Ph,kIsClosedPromise:$N,kControllerErrorFunction:UN,kIsWritable:Lh,isClosed:zN,isDuplexNodeStream:FN,isFinished:qN,isIterable:WN,isReadableNodeStream:fu,isReadableStream:Mv,isReadableEnded:VN,isReadableFinished:Dv,isReadableErrored:YN,isNodeStream:jr,isWebStream:jN,isWritable:Uv,isWritableNodeStream:hu,isWritableStream:Pv,isWritableEnded:Bv,isWritableFinished:HN,isWritableErrored:KN,isServerRequest:GN,isServerResponse:jv,willEmitClose:QN,isTransformStream:Lv};const Pn=Wi,{AbortError:Wv,codes:ZN}=Vt,{ERR_INVALID_ARG_TYPE:eM,ERR_STREAM_PREMATURE_CLOSE:Jm}=ZN,{kEmptyObject:Bh,once:Dh}=Lt,{validateAbortSignal:tM,validateFunction:rM,validateObject:nM,validateBoolean:iM}=Vs,{Promise:oM,PromisePrototypeThen:sM,SymbolDispose:Hv}=ut,{isClosed:aM,isReadable:Zm,isReadableNodeStream:_c,isReadableStream:lM,isReadableFinished:e0,isReadableErrored:t0,isWritable:r0,isWritableNodeStream:n0,isWritableStream:uM,isWritableFinished:i0,isWritableErrored:o0,isNodeStream:cM,willEmitClose:fM,kIsClosedPromise:hM}=En;let bo;function dM(e){return e.setHeader&&typeof e.abort=="function"}const $h=()=>{};function Vv(e,t,r){var n,o;if(arguments.length===2?(r=t,t=Bh):t==null?t=Bh:nM(t,"options"),rM(r,"callback"),tM(t.signal,"options.signal"),r=Dh(r),lM(e)||uM(e))return pM(e,t,r);if(!cM(e))throw new eM("stream",["ReadableStream","WritableStream","Stream"],e);const i=(n=t.readable)!==null&&n!==void 0?n:_c(e),s=(o=t.writable)!==null&&o!==void 0?o:n0(e),a=e._writableState,l=e._readableState,u=()=>{e.writable||p()};let c=fM(e)&&_c(e)===i&&n0(e)===s,d=i0(e,!1);const p=()=>{d=!0,e.destroyed&&(c=!1),!(c&&(!e.readable||i))&&(!i||g)&&r.call(e)};let g=e0(e,!1);const _=()=>{g=!0,e.destroyed&&(c=!1),!(c&&(!e.writable||s))&&(!s||d)&&r.call(e)},b=$=>{r.call(e,$)};let x=aM(e);const k=()=>{x=!0;const $=o0(e)||t0(e);if($&&typeof $!="boolean")return r.call(e,$);if(i&&!g&&_c(e,!0)&&!e0(e,!1))return r.call(e,new Jm);if(s&&!d&&!i0(e,!1))return r.call(e,new Jm);r.call(e)},R=()=>{x=!0;const $=o0(e)||t0(e);if($&&typeof $!="boolean")return r.call(e,$);r.call(e)},A=()=>{e.req.on("finish",p)};dM(e)?(e.on("complete",p),c||e.on("abort",k),e.req?A():e.on("request",A)):s&&!a&&(e.on("end",u),e.on("close",u)),!c&&typeof e.aborted=="boolean"&&e.on("aborted",k),e.on("end",_),e.on("finish",p),t.error!==!1&&e.on("error",b),e.on("close",k),x?Pn.nextTick(k):a!=null&&a.errorEmitted||l!=null&&l.errorEmitted?c||Pn.nextTick(R):(!i&&(!c||Zm(e))&&(d||r0(e)===!1)||!s&&(!c||r0(e))&&(g||Zm(e)===!1)||l&&e.req&&e.aborted)&&Pn.nextTick(R);const B=()=>{r=$h,e.removeListener("aborted",k),e.removeListener("complete",p),e.removeListener("abort",k),e.removeListener("request",A),e.req&&e.req.removeListener("finish",p),e.removeListener("end",u),e.removeListener("close",u),e.removeListener("finish",p),e.removeListener("end",_),e.removeListener("error",b),e.removeListener("close",k)};if(t.signal&&!x){const $=()=>{const I=r;B(),I.call(e,new Wv(void 0,{cause:t.signal.reason}))};if(t.signal.aborted)Pn.nextTick($);else{bo=bo||Lt.addAbortListener;const I=bo(t.signal,$),P=r;r=Dh((...W)=>{I[Hv](),P.apply(e,W)})}}return B}function pM(e,t,r){let n=!1,o=$h;if(t.signal)if(o=()=>{n=!0,r.call(e,new Wv(void 0,{cause:t.signal.reason}))},t.signal.aborted)Pn.nextTick(o);else{bo=bo||Lt.addAbortListener;const s=bo(t.signal,o),a=r;r=Dh((...l)=>{s[Hv](),a.apply(e,l)})}const i=(...s)=>{n||Pn.nextTick(()=>r.apply(e,s))};return sM(e[hM].promise,i,i),$h}function gM(e,t){var r;let n=!1;return t===null&&(t=Bh),(r=t)!==null&&r!==void 0&&r.cleanup&&(iM(t.cleanup,"cleanup"),n=t.cleanup),new oM((o,i)=>{const s=Vv(e,t,a=>{n&&s(),a?i(a):o()})})}fp.exports=Vv;fp.exports.finished=gM;var Yn=fp.exports;const Br=Wi,{aggregateTwoErrors:mM,codes:{ERR_MULTIPLE_CALLBACK:yM},AbortError:_M}=Vt,{Symbol:qv}=ut,{kIsDestroyed:bM,isDestroyed:wM,isFinished:vM,isServerRequest:EM}=En,Kv=qv("kDestroy"),Uh=qv("kConstruct");function Yv(e,t,r){e&&(e.stack,t&&!t.errored&&(t.errored=e),r&&!r.errored&&(r.errored=e))}function SM(e,t){const r=this._readableState,n=this._writableState,o=n||r;return n!=null&&n.destroyed||r!=null&&r.destroyed?(typeof t=="function"&&t(),this):(Yv(e,n,r),n&&(n.destroyed=!0),r&&(r.destroyed=!0),o.constructed?s0(this,e,t):this.once(Kv,function(i){s0(this,mM(i,e),t)}),this)}function s0(e,t,r){let n=!1;function o(i){if(n)return;n=!0;const s=e._readableState,a=e._writableState;Yv(i,a,s),a&&(a.closed=!0),s&&(s.closed=!0),typeof r=="function"&&r(i),i?Br.nextTick(AM,e,i):Br.nextTick(zv,e)}try{e._destroy(t||null,o)}catch(i){o(i)}}function AM(e,t){Fh(e,t),zv(e)}function zv(e){const t=e._readableState,r=e._writableState;r&&(r.closeEmitted=!0),t&&(t.closeEmitted=!0),(r!=null&&r.emitClose||t!=null&&t.emitClose)&&e.emit("close")}function Fh(e,t){const r=e._readableState,n=e._writableState;n!=null&&n.errorEmitted||r!=null&&r.errorEmitted||(n&&(n.errorEmitted=!0),r&&(r.errorEmitted=!0),e.emit("error",t))}function TM(){const e=this._readableState,t=this._writableState;e&&(e.constructed=!0,e.closed=!1,e.closeEmitted=!1,e.destroyed=!1,e.errored=null,e.errorEmitted=!1,e.reading=!1,e.ended=e.readable===!1,e.endEmitted=e.readable===!1),t&&(t.constructed=!0,t.destroyed=!1,t.closed=!1,t.closeEmitted=!1,t.errored=null,t.errorEmitted=!1,t.finalCalled=!1,t.prefinished=!1,t.ended=t.writable===!1,t.ending=t.writable===!1,t.finished=t.writable===!1)}function jh(e,t,r){const n=e._readableState,o=e._writableState;if(o!=null&&o.destroyed||n!=null&&n.destroyed)return this;n!=null&&n.autoDestroy||o!=null&&o.autoDestroy?e.destroy(t):t&&(t.stack,o&&!o.errored&&(o.errored=t),n&&!n.errored&&(n.errored=t),r?Br.nextTick(Fh,e,t):Fh(e,t))}function xM(e,t){if(typeof e._construct!="function")return;const r=e._readableState,n=e._writableState;r&&(r.constructed=!1),n&&(n.constructed=!1),e.once(Uh,t),!(e.listenerCount(Uh)>1)&&Br.nextTick(IM,e)}function IM(e){let t=!1;function r(n){if(t){jh(e,n??new yM);return}t=!0;const o=e._readableState,i=e._writableState,s=i||o;o&&(o.constructed=!0),i&&(i.constructed=!0),s.destroyed?e.emit(Kv,n):n?jh(e,n,!0):Br.nextTick(CM,e)}try{e._construct(n=>{Br.nextTick(r,n)})}catch(n){Br.nextTick(r,n)}}function CM(e){e.emit(Uh)}function a0(e){return(e==null?void 0:e.setHeader)&&typeof e.abort=="function"}function Gv(e){e.emit("close")}function RM(e,t){e.emit("error",t),Br.nextTick(Gv,e)}function OM(e,t){!e||wM(e)||(!t&&!vM(e)&&(t=new _M),EM(e)?(e.socket=null,e.destroy(t)):a0(e)?e.abort():a0(e.req)?e.req.abort():typeof e.destroy=="function"?e.destroy(t):typeof e.close=="function"?e.close():t?Br.nextTick(RM,e,t):Br.nextTick(Gv,e),e.destroyed||(e[bM]=!0))}var Ko={construct:xM,destroyer:OM,destroy:SM,undestroy:TM,errorOrDestroy:jh};const{ArrayIsArray:kM,ObjectSetPrototypeOf:Qv}=ut,{EventEmitter:pu}=lu;function gu(e){pu.call(this,e)}Qv(gu.prototype,pu.prototype);Qv(gu,pu);gu.prototype.pipe=function(e,t){const r=this;function n(c){e.writable&&e.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function o(){r.readable&&r.resume&&r.resume()}e.on("drain",o),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",s),r.on("close",a));let i=!1;function s(){i||(i=!0,e.end())}function a(){i||(i=!0,typeof e.destroy=="function"&&e.destroy())}function l(c){u(),pu.listenerCount(this,"error")===0&&this.emit("error",c)}Wh(r,"error",l),Wh(e,"error",l);function u(){r.removeListener("data",n),e.removeListener("drain",o),r.removeListener("end",s),r.removeListener("close",a),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),e.removeListener("close",u)}return r.on("end",u),r.on("close",u),e.on("close",u),e.emit("pipe",r),e};function Wh(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):kM(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}var hp={Stream:gu,prependListener:Wh},Xv={exports:{}};(function(e){const{SymbolDispose:t}=ut,{AbortError:r,codes:n}=Vt,{isNodeStream:o,isWebStream:i,kControllerErrorFunction:s}=En,a=Yn,{ERR_INVALID_ARG_TYPE:l}=n;let u;const c=(d,p)=>{if(typeof d!="object"||!("aborted"in d))throw new l(p,"AbortSignal",d)};e.exports.addAbortSignal=function(p,g){if(c(p,"signal"),!o(g)&&!i(g))throw new l("stream",["ReadableStream","WritableStream","Stream"],g);return e.exports.addAbortSignalNoValidate(p,g)},e.exports.addAbortSignalNoValidate=function(d,p){if(typeof d!="object"||!("aborted"in d))return p;const g=o(p)?()=>{p.destroy(new r(void 0,{cause:d.reason}))}:()=>{p[s](new r(void 0,{cause:d.reason}))};if(d.aborted)g();else{u=u||Lt.addAbortListener;const _=u(d,g);a(p,_[t])}return p}})(Xv);var mu=Xv.exports;const{StringPrototypeSlice:l0,SymbolIterator:NM,TypedArrayPrototypeSet:ya,Uint8Array:MM}=ut,{Buffer:bc}=Jt,{inspect:PM}=Lt;var LM=class{constructor(){this.head=null,this.tail=null,this.length=0}push(t){const r={data:t,next:null};this.length>0?this.tail.next=r:this.head=r,this.tail=r,++this.length}unshift(t){const r={data:t,next:this.head};this.length===0&&(this.tail=r),this.head=r,++this.length}shift(){if(this.length===0)return;const t=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,t}clear(){this.head=this.tail=null,this.length=0}join(t){if(this.length===0)return"";let r=this.head,n=""+r.data;for(;(r=r.next)!==null;)n+=t+r.data;return n}concat(t){if(this.length===0)return bc.alloc(0);const r=bc.allocUnsafe(t>>>0);let n=this.head,o=0;for(;n;)ya(r,n.data,o),o+=n.data.length,n=n.next;return r}consume(t,r){const n=this.head.data;if(t<n.length){const o=n.slice(0,t);return this.head.data=n.slice(t),o}return t===n.length?this.shift():r?this._getString(t):this._getBuffer(t)}first(){return this.head.data}*[NM](){for(let t=this.head;t;t=t.next)yield t.data}_getString(t){let r="",n=this.head,o=0;do{const i=n.data;if(t>i.length)r+=i,t-=i.length;else{t===i.length?(r+=i,++o,n.next?this.head=n.next:this.head=this.tail=null):(r+=l0(i,0,t),this.head=n,n.data=l0(i,t));break}++o}while((n=n.next)!==null);return this.length-=o,r}_getBuffer(t){const r=bc.allocUnsafe(t),n=t;let o=this.head,i=0;do{const s=o.data;if(t>s.length)ya(r,s,n-t),t-=s.length;else{t===s.length?(ya(r,s,n-t),++i,o.next?this.head=o.next:this.head=this.tail=null):(ya(r,new MM(s.buffer,s.byteOffset,t),n-t),this.head=o,o.data=s.slice(t));break}++i}while((o=o.next)!==null);return this.length-=i,r}[Symbol.for("nodejs.util.inspect.custom")](t,r){return PM(this,{...r,depth:0,customInspect:!1})}};const{MathFloor:BM,NumberIsInteger:DM}=ut,{validateInteger:$M}=Vs,{ERR_INVALID_ARG_VALUE:UM}=Vt.codes;let Jv=16*1024,Zv=16;function FM(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function e1(e){return e?Zv:Jv}function jM(e,t){$M(t,"value",0),e?Zv=t:Jv=t}function WM(e,t,r,n){const o=FM(t,n,r);if(o!=null){if(!DM(o)||o<0){const i=n?`options.${r}`:"options.highWaterMark";throw new UM(i,o)}return BM(o)}return e1(e.objectMode)}var yu={getHighWaterMark:WM,getDefaultHighWaterMark:e1,setDefaultHighWaterMark:jM},t1={},Hh={exports:{}};/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */(function(e,t){var r=Jt,n=r.Buffer;function o(s,a){for(var l in s)a[l]=s[l]}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(o(r,t),t.Buffer=i);function i(s,a,l){return n(s,a,l)}i.prototype=Object.create(n.prototype),o(n,i),i.from=function(s,a,l){if(typeof s=="number")throw new TypeError("Argument must not be a number");return n(s,a,l)},i.alloc=function(s,a,l){if(typeof s!="number")throw new TypeError("Argument must be a number");var u=n(s);return a!==void 0?typeof l=="string"?u.fill(a,l):u.fill(a):u.fill(0),u},i.allocUnsafe=function(s){if(typeof s!="number")throw new TypeError("Argument must be a number");return n(s)},i.allocUnsafeSlow=function(s){if(typeof s!="number")throw new TypeError("Argument must be a number");return r.SlowBuffer(s)}})(Hh,Hh.exports);var HM=Hh.exports,dp=HM.Buffer,u0=dp.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function VM(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function qM(e){var t=VM(e);if(typeof t!="string"&&(dp.isEncoding===u0||!u0(e)))throw new Error("Unknown encoding: "+e);return t||e}t1.StringDecoder=qs;function qs(e){this.encoding=qM(e);var t;switch(this.encoding){case"utf16le":this.text=XM,this.end=JM,t=4;break;case"utf8":this.fillLast=zM,t=4;break;case"base64":this.text=ZM,this.end=e2,t=3;break;default:this.write=t2,this.end=r2;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=dp.allocUnsafe(t)}qs.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""};qs.prototype.end=QM;qs.prototype.text=GM;qs.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length};function wc(e){return e<=127?0:e>>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function KM(e,t,r){var n=t.length-1;if(n<r)return 0;var o=wc(t[n]);return o>=0?(o>0&&(e.lastNeed=o-1),o):--n<r||o===-2?0:(o=wc(t[n]),o>=0?(o>0&&(e.lastNeed=o-2),o):--n<r||o===-2?0:(o=wc(t[n]),o>=0?(o>0&&(o===2?o=0:e.lastNeed=o-3),o):0))}function YM(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"�"}}function zM(e){var t=this.lastTotal-this.lastNeed,r=YM(this,e);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function GM(e,t){var r=KM(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)}function QM(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t}function XM(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function JM(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function ZM(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function e2(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function t2(e){return e.toString(this.encoding)}function r2(e){return e&&e.length?this.write(e):""}const c0=Wi,{PromisePrototypeThen:n2,SymbolAsyncIterator:f0,SymbolIterator:h0}=ut,{Buffer:i2}=Jt,{ERR_INVALID_ARG_TYPE:o2,ERR_STREAM_NULL_VALUES:s2}=Vt.codes;function a2(e,t,r){let n;if(typeof t=="string"||t instanceof i2)return new e({objectMode:!0,...r,read(){this.push(t),this.push(null)}});let o;if(t&&t[f0])o=!0,n=t[f0]();else if(t&&t[h0])o=!1,n=t[h0]();else throw new o2("iterable",["Iterable"],t);const i=new e({objectMode:!0,highWaterMark:1,...r});let s=!1;i._read=function(){s||(s=!0,l())},i._destroy=function(u,c){n2(a(u),()=>c0.nextTick(c,u),d=>c0.nextTick(c,d||u))};async function a(u){const c=u!=null,d=typeof n.throw=="function";if(c&&d){const{value:p,done:g}=await n.throw(u);if(await p,g)return}if(typeof n.return=="function"){const{value:p}=await n.return();await p}}async function l(){for(;;){try{const{value:u,done:c}=o?await n.next():n.next();if(c)i.push(null);else{const d=u&&typeof u.then=="function"?await u:u;if(d===null)throw s=!1,new s2;if(i.push(d))continue;s=!1}}catch(u){i.destroy(u)}break}}return i}var r1=a2,vc,d0;function _u(){if(d0)return vc;d0=1;const e=Wi,{ArrayPrototypeIndexOf:t,NumberIsInteger:r,NumberIsNaN:n,NumberParseInt:o,ObjectDefineProperties:i,ObjectKeys:s,ObjectSetPrototypeOf:a,Promise:l,SafeSet:u,SymbolAsyncDispose:c,SymbolAsyncIterator:d,Symbol:p}=ut;vc=z,z.ReadableState=K;const{EventEmitter:g}=lu,{Stream:_,prependListener:b}=hp,{Buffer:x}=Jt,{addAbortSignal:k}=mu,R=Yn;let A=Lt.debuglog("stream",U=>{A=U});const B=LM,$=Ko,{getHighWaterMark:I,getDefaultHighWaterMark:P}=yu,{aggregateTwoErrors:W,codes:{ERR_INVALID_ARG_TYPE:Y,ERR_METHOD_NOT_IMPLEMENTED:oe,ERR_OUT_OF_RANGE:te,ERR_STREAM_PUSH_AFTER_EOF:M,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:L},AbortError:ie}=Vt,{validateObject:re}=Vs,ae=p("kPaused"),{StringDecoder:se}=t1,Q=r1;a(z.prototype,_.prototype),a(z,_);const he=()=>{},{errorOrDestroy:fe}=$,pe=1,F=2,ne=4,ge=8,Se=16,ye=32,V=64,j=128,Z=256,ue=512,le=1024,X=2048,E=4096,T=8192,S=16384,O=32768,N=65536,ee=1<<17,J=1<<18;function D(U){return{enumerable:!1,get(){return(this.state&U)!==0},set(q){q?this.state|=U:this.state&=~U}}}i(K.prototype,{objectMode:D(pe),ended:D(F),endEmitted:D(ne),reading:D(ge),constructed:D(Se),sync:D(ye),needReadable:D(V),emittedReadable:D(j),readableListening:D(Z),resumeScheduled:D(ue),errorEmitted:D(le),emitClose:D(X),autoDestroy:D(E),destroyed:D(T),closed:D(S),closeEmitted:D(O),multiAwaitDrain:D(N),readingMore:D(ee),dataEmitted:D(J)});function K(U,q,Re){typeof Re!="boolean"&&(Re=q instanceof fn()),this.state=X|E|Se|ye,U&&U.objectMode&&(this.state|=pe),Re&&U&&U.readableObjectMode&&(this.state|=pe),this.highWaterMark=U?I(this,U,"readableHighWaterMark",Re):P(!1),this.buffer=new B,this.length=0,this.pipes=[],this.flowing=null,this[ae]=null,U&&U.emitClose===!1&&(this.state&=~X),U&&U.autoDestroy===!1&&(this.state&=~E),this.errored=null,this.defaultEncoding=U&&U.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,U&&U.encoding&&(this.decoder=new se(U.encoding),this.encoding=U.encoding)}function z(U){if(!(this instanceof z))return new z(U);const q=this instanceof fn();this._readableState=new K(U,this,q),U&&(typeof U.read=="function"&&(this._read=U.read),typeof U.destroy=="function"&&(this._destroy=U.destroy),typeof U.construct=="function"&&(this._construct=U.construct),U.signal&&!q&&k(U.signal,this)),_.call(this,U),$.construct(this,()=>{this._readableState.needReadable&&v(this,this._readableState)})}z.prototype.destroy=$.destroy,z.prototype._undestroy=$.undestroy,z.prototype._destroy=function(U,q){q(U)},z.prototype[g.captureRejectionSymbol]=function(U){this.destroy(U)},z.prototype[c]=function(){let U;return this.destroyed||(U=this.readableEnded?null:new ie,this.destroy(U)),new l((q,Re)=>R(this,Ie=>Ie&&Ie!==U?Re(Ie):q(null)))},z.prototype.push=function(U,q){return ce(this,U,q,!1)},z.prototype.unshift=function(U,q){return ce(this,U,q,!0)};function ce(U,q,Re,Ie){A("readableAddChunk",q);const Ne=U._readableState;let et;if(Ne.state&pe||(typeof q=="string"?(Re=Re||Ne.defaultEncoding,Ne.encoding!==Re&&(Ie&&Ne.encoding?q=x.from(q,Re).toString(Ne.encoding):(q=x.from(q,Re),Re=""))):q instanceof x?Re="":_._isUint8Array(q)?(q=_._uint8ArrayToBuffer(q),Re=""):q!=null&&(et=new Y("chunk",["string","Buffer","Uint8Array"],q))),et)fe(U,et);else if(q===null)Ne.state&=~ge,f(U,Ne);else if(Ne.state&pe||q&&q.length>0)if(Ie)if(Ne.state&ne)fe(U,new L);else{if(Ne.destroyed||Ne.errored)return!1;be(U,Ne,q,!0)}else if(Ne.ended)fe(U,new M);else{if(Ne.destroyed||Ne.errored)return!1;Ne.state&=~ge,Ne.decoder&&!Re?(q=Ne.decoder.write(q),Ne.objectMode||q.length!==0?be(U,Ne,q,!1):v(U,Ne)):be(U,Ne,q,!1)}else Ie||(Ne.state&=~ge,v(U,Ne));return!Ne.ended&&(Ne.length<Ne.highWaterMark||Ne.length===0)}function be(U,q,Re,Ie){q.flowing&&q.length===0&&!q.sync&&U.listenerCount("data")>0?(q.state&N?q.awaitDrainWriters.clear():q.awaitDrainWriters=null,q.dataEmitted=!0,U.emit("data",Re)):(q.length+=q.objectMode?1:Re.length,Ie?q.buffer.unshift(Re):q.buffer.push(Re),q.state&V&&m(U)),v(U,q)}z.prototype.isPaused=function(){const U=this._readableState;return U[ae]===!0||U.flowing===!1},z.prototype.setEncoding=function(U){const q=new se(U);this._readableState.decoder=q,this._readableState.encoding=this._readableState.decoder.encoding;const Re=this._readableState.buffer;let Ie="";for(const Ne of Re)Ie+=q.write(Ne);return Re.clear(),Ie!==""&&Re.push(Ie),this._readableState.length=Ie.length,this};const Te=1073741824;function y(U){if(U>Te)throw new te("size","<= 1GiB",U);return U--,U|=U>>>1,U|=U>>>2,U|=U>>>4,U|=U>>>8,U|=U>>>16,U++,U}function h(U,q){return U<=0||q.length===0&&q.ended?0:q.state&pe?1:n(U)?q.flowing&&q.length?q.buffer.first().length:q.length:U<=q.length?U:q.ended?q.length:0}z.prototype.read=function(U){A("read",U),U===void 0?U=NaN:r(U)||(U=o(U,10));const q=this._readableState,Re=U;if(U>q.highWaterMark&&(q.highWaterMark=y(U)),U!==0&&(q.state&=~j),U===0&&q.needReadable&&((q.highWaterMark!==0?q.length>=q.highWaterMark:q.length>0)||q.ended))return A("read: emitReadable",q.length,q.ended),q.length===0&&q.ended?mt(this):m(this),null;if(U=h(U,q),U===0&&q.ended)return q.length===0&&mt(this),null;let Ie=(q.state&V)!==0;if(A("need readable",Ie),(q.length===0||q.length-U<q.highWaterMark)&&(Ie=!0,A("length less than watermark",Ie)),q.ended||q.reading||q.destroyed||q.errored||!q.constructed)Ie=!1,A("reading, ended or constructing",Ie);else if(Ie){A("do read"),q.state|=ge|ye,q.length===0&&(q.state|=V);try{this._read(q.highWaterMark)}catch(et){fe(this,et)}q.state&=~ye,q.reading||(U=h(Re,q))}let Ne;return U>0?Ne=He(U,q):Ne=null,Ne===null?(q.needReadable=q.length<=q.highWaterMark,U=0):(q.length-=U,q.multiAwaitDrain?q.awaitDrainWriters.clear():q.awaitDrainWriters=null),q.length===0&&(q.ended||(q.needReadable=!0),Re!==U&&q.ended&&mt(this)),Ne!==null&&!q.errorEmitted&&!q.closeEmitted&&(q.dataEmitted=!0,this.emit("data",Ne)),Ne};function f(U,q){if(A("onEofChunk"),!q.ended){if(q.decoder){const Re=q.decoder.end();Re&&Re.length&&(q.buffer.push(Re),q.length+=q.objectMode?1:Re.length)}q.ended=!0,q.sync?m(U):(q.needReadable=!1,q.emittedReadable=!0,w(U))}}function m(U){const q=U._readableState;A("emitReadable",q.needReadable,q.emittedReadable),q.needReadable=!1,q.emittedReadable||(A("emitReadable",q.flowing),q.emittedReadable=!0,e.nextTick(w,U))}function w(U){const q=U._readableState;A("emitReadable_",q.destroyed,q.length,q.ended),!q.destroyed&&!q.errored&&(q.length||q.ended)&&(U.emit("readable"),q.emittedReadable=!1),q.needReadable=!q.flowing&&!q.ended&&q.length<=q.highWaterMark,ke(U)}function v(U,q){!q.readingMore&&q.constructed&&(q.readingMore=!0,e.nextTick(C,U,q))}function C(U,q){for(;!q.reading&&!q.ended&&(q.length<q.highWaterMark||q.flowing&&q.length===0);){const Re=q.length;if(A("maybeReadMore read 0"),U.read(0),Re===q.length)break}q.readingMore=!1}z.prototype._read=function(U){throw new oe("_read()")},z.prototype.pipe=function(U,q){const Re=this,Ie=this._readableState;Ie.pipes.length===1&&(Ie.multiAwaitDrain||(Ie.multiAwaitDrain=!0,Ie.awaitDrainWriters=new u(Ie.awaitDrainWriters?[Ie.awaitDrainWriters]:[]))),Ie.pipes.push(U),A("pipe count=%d opts=%j",Ie.pipes.length,q);const et=(!q||q.end!==!1)&&U!==e.stdout&&U!==e.stderr?Yo:zo;Ie.endEmitted?e.nextTick(et):Re.once("end",et),U.on("unpipe",ct);function ct(zn,Hr){A("onunpipe"),zn===Re&&Hr&&Hr.hasUnpiped===!1&&(Hr.hasUnpiped=!0,hE())}function Yo(){A("onend"),U.end()}let vr,Bp=!1;function hE(){A("cleanup"),U.removeListener("close",Cu),U.removeListener("finish",Ru),vr&&U.removeListener("drain",vr),U.removeListener("error",Iu),U.removeListener("unpipe",ct),Re.removeListener("end",Yo),Re.removeListener("end",zo),Re.removeListener("data",$p),Bp=!0,vr&&Ie.awaitDrainWriters&&(!U._writableState||U._writableState.needDrain)&&vr()}function Dp(){Bp||(Ie.pipes.length===1&&Ie.pipes[0]===U?(A("false write response, pause",0),Ie.awaitDrainWriters=U,Ie.multiAwaitDrain=!1):Ie.pipes.length>1&&Ie.pipes.includes(U)&&(A("false write response, pause",Ie.awaitDrainWriters.size),Ie.awaitDrainWriters.add(U)),Re.pause()),vr||(vr=H(Re,U),U.on("drain",vr))}Re.on("data",$p);function $p(zn){A("ondata");const Hr=U.write(zn);A("dest.write",Hr),Hr===!1&&Dp()}function Iu(zn){if(A("onerror",zn),zo(),U.removeListener("error",Iu),U.listenerCount("error")===0){const Hr=U._writableState||U._readableState;Hr&&!Hr.errorEmitted?fe(U,zn):U.emit("error",zn)}}b(U,"error",Iu);function Cu(){U.removeListener("finish",Ru),zo()}U.once("close",Cu);function Ru(){A("onfinish"),U.removeListener("close",Cu),zo()}U.once("finish",Ru);function zo(){A("unpipe"),Re.unpipe(U)}return U.emit("pipe",Re),U.writableNeedDrain===!0?Dp():Ie.flowing||(A("pipe resume"),Re.resume()),U};function H(U,q){return function(){const Ie=U._readableState;Ie.awaitDrainWriters===q?(A("pipeOnDrain",1),Ie.awaitDrainWriters=null):Ie.multiAwaitDrain&&(A("pipeOnDrain",Ie.awaitDrainWriters.size),Ie.awaitDrainWriters.delete(q)),(!Ie.awaitDrainWriters||Ie.awaitDrainWriters.size===0)&&U.listenerCount("data")&&U.resume()}}z.prototype.unpipe=function(U){const q=this._readableState,Re={hasUnpiped:!1};if(q.pipes.length===0)return this;if(!U){const Ne=q.pipes;q.pipes=[],this.pause();for(let et=0;et<Ne.length;et++)Ne[et].emit("unpipe",this,{hasUnpiped:!1});return this}const Ie=t(q.pipes,U);return Ie===-1?this:(q.pipes.splice(Ie,1),q.pipes.length===0&&this.pause(),U.emit("unpipe",this,Re),this)},z.prototype.on=function(U,q){const Re=_.prototype.on.call(this,U,q),Ie=this._readableState;return U==="data"?(Ie.readableListening=this.listenerCount("readable")>0,Ie.flowing!==!1&&this.resume()):U==="readable"&&!Ie.endEmitted&&!Ie.readableListening&&(Ie.readableListening=Ie.needReadable=!0,Ie.flowing=!1,Ie.emittedReadable=!1,A("on readable",Ie.length,Ie.reading),Ie.length?m(this):Ie.reading||e.nextTick(me,this)),Re},z.prototype.addListener=z.prototype.on,z.prototype.removeListener=function(U,q){const Re=_.prototype.removeListener.call(this,U,q);return U==="readable"&&e.nextTick(de,this),Re},z.prototype.off=z.prototype.removeListener,z.prototype.removeAllListeners=function(U){const q=_.prototype.removeAllListeners.apply(this,arguments);return(U==="readable"||U===void 0)&&e.nextTick(de,this),q};function de(U){const q=U._readableState;q.readableListening=U.listenerCount("readable")>0,q.resumeScheduled&&q[ae]===!1?q.flowing=!0:U.listenerCount("data")>0?U.resume():q.readableListening||(q.flowing=null)}function me(U){A("readable nexttick read 0"),U.read(0)}z.prototype.resume=function(){const U=this._readableState;return U.flowing||(A("resume"),U.flowing=!U.readableListening,_e(this,U)),U[ae]=!1,this};function _e(U,q){q.resumeScheduled||(q.resumeScheduled=!0,e.nextTick(Ae,U,q))}function Ae(U,q){A("resume",q.reading),q.reading||U.read(0),q.resumeScheduled=!1,U.emit("resume"),ke(U),q.flowing&&!q.reading&&U.read(0)}z.prototype.pause=function(){return A("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(A("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[ae]=!0,this};function ke(U){const q=U._readableState;for(A("flow",q.flowing);q.flowing&&U.read()!==null;);}z.prototype.wrap=function(U){let q=!1;U.on("data",Ie=>{!this.push(Ie)&&U.pause&&(q=!0,U.pause())}),U.on("end",()=>{this.push(null)}),U.on("error",Ie=>{fe(this,Ie)}),U.on("close",()=>{this.destroy()}),U.on("destroy",()=>{this.destroy()}),this._read=()=>{q&&U.resume&&(q=!1,U.resume())};const Re=s(U);for(let Ie=1;Ie<Re.length;Ie++){const Ne=Re[Ie];this[Ne]===void 0&&typeof U[Ne]=="function"&&(this[Ne]=U[Ne].bind(U))}return this},z.prototype[d]=function(){return Ze(this)},z.prototype.iterator=function(U){return U!==void 0&&re(U,"options"),Ze(this,U)};function Ze(U,q){typeof U.read!="function"&&(U=z.wrap(U,{objectMode:!0}));const Re=Tt(U,q);return Re.stream=U,Re}async function*Tt(U,q){let Re=he;function Ie(ct){this===U?(Re(),Re=he):Re=ct}U.on("readable",Ie);let Ne;const et=R(U,{writable:!1},ct=>{Ne=ct?W(Ne,ct):null,Re(),Re=he});try{for(;;){const ct=U.destroyed?null:U.read();if(ct!==null)yield ct;else{if(Ne)throw Ne;if(Ne===null)return;await new l(Ie)}}}catch(ct){throw Ne=W(Ne,ct),Ne}finally{(Ne||(q==null?void 0:q.destroyOnReturn)!==!1)&&(Ne===void 0||U._readableState.autoDestroy)?$.destroyer(U,null):(U.off("readable",Ie),et())}}i(z.prototype,{readable:{__proto__:null,get(){const U=this._readableState;return!!U&&U.readable!==!1&&!U.destroyed&&!U.errorEmitted&&!U.endEmitted},set(U){this._readableState&&(this._readableState.readable=!!U)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(U){this._readableState&&(this._readableState.flowing=U)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(U){this._readableState&&(this._readableState.destroyed=U)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),i(K.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[ae]!==!1},set(U){this[ae]=!!U}}}),z._fromList=He;function He(U,q){if(q.length===0)return null;let Re;return q.objectMode?Re=q.buffer.shift():!U||U>=q.length?(q.decoder?Re=q.buffer.join(""):q.buffer.length===1?Re=q.buffer.first():Re=q.buffer.concat(q.length),q.buffer.clear()):Re=q.buffer.consume(U,q.decoder),Re}function mt(U){const q=U._readableState;A("endReadable",q.endEmitted),q.endEmitted||(q.ended=!0,e.nextTick(st,q,U))}function st(U,q){if(A("endReadableNT",U.endEmitted,U.length),!U.errored&&!U.closeEmitted&&!U.endEmitted&&U.length===0){if(U.endEmitted=!0,q.emit("end"),q.writable&&q.allowHalfOpen===!1)e.nextTick(at,q);else if(U.autoDestroy){const Re=q._writableState;(!Re||Re.autoDestroy&&(Re.finished||Re.writable===!1))&&q.destroy()}}}function at(U){U.writable&&!U.writableEnded&&!U.destroyed&&U.end()}z.from=function(U,q){return Q(z,U,q)};let Qe;function ht(){return Qe===void 0&&(Qe={}),Qe}return z.fromWeb=function(U,q){return ht().newStreamReadableFromReadableStream(U,q)},z.toWeb=function(U,q){return ht().newReadableStreamFromStreamReadable(U,q)},z.wrap=function(U,q){var Re,Ie;return new z({objectMode:(Re=(Ie=U.readableObjectMode)!==null&&Ie!==void 0?Ie:U.objectMode)!==null&&Re!==void 0?Re:!0,...q,destroy(Ne,et){$.destroyer(U,Ne),et(Ne)}}).wrap(U)},vc}var Ec,p0;function pp(){if(p0)return Ec;p0=1;const e=Wi,{ArrayPrototypeSlice:t,Error:r,FunctionPrototypeSymbolHasInstance:n,ObjectDefineProperty:o,ObjectDefineProperties:i,ObjectSetPrototypeOf:s,StringPrototypeToLowerCase:a,Symbol:l,SymbolHasInstance:u}=ut;Ec=re,re.WritableState=L;const{EventEmitter:c}=lu,d=hp.Stream,{Buffer:p}=Jt,g=Ko,{addAbortSignal:_}=mu,{getHighWaterMark:b,getDefaultHighWaterMark:x}=yu,{ERR_INVALID_ARG_TYPE:k,ERR_METHOD_NOT_IMPLEMENTED:R,ERR_MULTIPLE_CALLBACK:A,ERR_STREAM_CANNOT_PIPE:B,ERR_STREAM_DESTROYED:$,ERR_STREAM_ALREADY_FINISHED:I,ERR_STREAM_NULL_VALUES:P,ERR_STREAM_WRITE_AFTER_END:W,ERR_UNKNOWN_ENCODING:Y}=Vt.codes,{errorOrDestroy:oe}=g;s(re.prototype,d.prototype),s(re,d);function te(){}const M=l("kOnFinished");function L(E,T,S){typeof S!="boolean"&&(S=T instanceof fn()),this.objectMode=!!(E&&E.objectMode),S&&(this.objectMode=this.objectMode||!!(E&&E.writableObjectMode)),this.highWaterMark=E?b(this,E,"writableHighWaterMark",S):x(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;const O=!!(E&&E.decodeStrings===!1);this.decodeStrings=!O,this.defaultEncoding=E&&E.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=fe.bind(void 0,T),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,ie(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!E||E.emitClose!==!1,this.autoDestroy=!E||E.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[M]=[]}function ie(E){E.buffered=[],E.bufferedIndex=0,E.allBuffers=!0,E.allNoop=!0}L.prototype.getBuffer=function(){return t(this.buffered,this.bufferedIndex)},o(L.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function re(E){const T=this instanceof fn();if(!T&&!n(re,this))return new re(E);this._writableState=new L(E,this,T),E&&(typeof E.write=="function"&&(this._write=E.write),typeof E.writev=="function"&&(this._writev=E.writev),typeof E.destroy=="function"&&(this._destroy=E.destroy),typeof E.final=="function"&&(this._final=E.final),typeof E.construct=="function"&&(this._construct=E.construct),E.signal&&_(E.signal,this)),d.call(this,E),g.construct(this,()=>{const S=this._writableState;S.writing||ge(this,S),j(this,S)})}o(re,u,{__proto__:null,value:function(E){return n(this,E)?!0:this!==re?!1:E&&E._writableState instanceof L}}),re.prototype.pipe=function(){oe(this,new B)};function ae(E,T,S,O){const N=E._writableState;if(typeof S=="function")O=S,S=N.defaultEncoding;else{if(!S)S=N.defaultEncoding;else if(S!=="buffer"&&!p.isEncoding(S))throw new Y(S);typeof O!="function"&&(O=te)}if(T===null)throw new P;if(!N.objectMode)if(typeof T=="string")N.decodeStrings!==!1&&(T=p.from(T,S),S="buffer");else if(T instanceof p)S="buffer";else if(d._isUint8Array(T))T=d._uint8ArrayToBuffer(T),S="buffer";else throw new k("chunk",["string","Buffer","Uint8Array"],T);let ee;return N.ending?ee=new W:N.destroyed&&(ee=new $("write")),ee?(e.nextTick(O,ee),oe(E,ee,!0),ee):(N.pendingcb++,se(E,N,T,S,O))}re.prototype.write=function(E,T,S){return ae(this,E,T,S)===!0},re.prototype.cork=function(){this._writableState.corked++},re.prototype.uncork=function(){const E=this._writableState;E.corked&&(E.corked--,E.writing||ge(this,E))},re.prototype.setDefaultEncoding=function(T){if(typeof T=="string"&&(T=a(T)),!p.isEncoding(T))throw new Y(T);return this._writableState.defaultEncoding=T,this};function se(E,T,S,O,N){const ee=T.objectMode?1:S.length;T.length+=ee;const J=T.length<T.highWaterMark;return J||(T.needDrain=!0),T.writing||T.corked||T.errored||!T.constructed?(T.buffered.push({chunk:S,encoding:O,callback:N}),T.allBuffers&&O!=="buffer"&&(T.allBuffers=!1),T.allNoop&&N!==te&&(T.allNoop=!1)):(T.writelen=ee,T.writecb=N,T.writing=!0,T.sync=!0,E._write(S,O,T.onwrite),T.sync=!1),J&&!T.errored&&!T.destroyed}function Q(E,T,S,O,N,ee,J){T.writelen=O,T.writecb=J,T.writing=!0,T.sync=!0,T.destroyed?T.onwrite(new $("write")):S?E._writev(N,T.onwrite):E._write(N,ee,T.onwrite),T.sync=!1}function he(E,T,S,O){--T.pendingcb,O(S),ne(T),oe(E,S)}function fe(E,T){const S=E._writableState,O=S.sync,N=S.writecb;if(typeof N!="function"){oe(E,new A);return}S.writing=!1,S.writecb=null,S.length-=S.writelen,S.writelen=0,T?(T.stack,S.errored||(S.errored=T),E._readableState&&!E._readableState.errored&&(E._readableState.errored=T),O?e.nextTick(he,E,S,T,N):he(E,S,T,N)):(S.buffered.length>S.bufferedIndex&&ge(E,S),O?S.afterWriteTickInfo!==null&&S.afterWriteTickInfo.cb===N?S.afterWriteTickInfo.count++:(S.afterWriteTickInfo={count:1,cb:N,stream:E,state:S},e.nextTick(pe,S.afterWriteTickInfo)):F(E,S,1,N))}function pe({stream:E,state:T,count:S,cb:O}){return T.afterWriteTickInfo=null,F(E,T,S,O)}function F(E,T,S,O){for(!T.ending&&!E.destroyed&&T.length===0&&T.needDrain&&(T.needDrain=!1,E.emit("drain"));S-- >0;)T.pendingcb--,O();T.destroyed&&ne(T),j(E,T)}function ne(E){if(E.writing)return;for(let N=E.bufferedIndex;N<E.buffered.length;++N){var T;const{chunk:ee,callback:J}=E.buffered[N],D=E.objectMode?1:ee.length;E.length-=D,J((T=E.errored)!==null&&T!==void 0?T:new $("write"))}const S=E[M].splice(0);for(let N=0;N<S.length;N++){var O;S[N]((O=E.errored)!==null&&O!==void 0?O:new $("end"))}ie(E)}function ge(E,T){if(T.corked||T.bufferProcessing||T.destroyed||!T.constructed)return;const{buffered:S,bufferedIndex:O,objectMode:N}=T,ee=S.length-O;if(!ee)return;let J=O;if(T.bufferProcessing=!0,ee>1&&E._writev){T.pendingcb-=ee-1;const D=T.allNoop?te:z=>{for(let ce=J;ce<S.length;++ce)S[ce].callback(z)},K=T.allNoop&&J===0?S:t(S,J);K.allBuffers=T.allBuffers,Q(E,T,!0,T.length,K,"",D),ie(T)}else{do{const{chunk:D,encoding:K,callback:z}=S[J];S[J++]=null;const ce=N?1:D.length;Q(E,T,!1,ce,D,K,z)}while(J<S.length&&!T.writing);J===S.length?ie(T):J>256?(S.splice(0,J),T.bufferedIndex=0):T.bufferedIndex=J}T.bufferProcessing=!1}re.prototype._write=function(E,T,S){if(this._writev)this._writev([{chunk:E,encoding:T}],S);else throw new R("_write()")},re.prototype._writev=null,re.prototype.end=function(E,T,S){const O=this._writableState;typeof E=="function"?(S=E,E=null,T=null):typeof T=="function"&&(S=T,T=null);let N;if(E!=null){const ee=ae(this,E,T);ee instanceof r&&(N=ee)}return O.corked&&(O.corked=1,this.uncork()),N||(!O.errored&&!O.ending?(O.ending=!0,j(this,O,!0),O.ended=!0):O.finished?N=new I("end"):O.destroyed&&(N=new $("end"))),typeof S=="function"&&(N||O.finished?e.nextTick(S,N):O[M].push(S)),this};function Se(E){return E.ending&&!E.destroyed&&E.constructed&&E.length===0&&!E.errored&&E.buffered.length===0&&!E.finished&&!E.writing&&!E.errorEmitted&&!E.closeEmitted}function ye(E,T){let S=!1;function O(N){if(S){oe(E,N??A());return}if(S=!0,T.pendingcb--,N){const ee=T[M].splice(0);for(let J=0;J<ee.length;J++)ee[J](N);oe(E,N,T.sync)}else Se(T)&&(T.prefinished=!0,E.emit("prefinish"),T.pendingcb++,e.nextTick(Z,E,T))}T.sync=!0,T.pendingcb++;try{E._final(O)}catch(N){O(N)}T.sync=!1}function V(E,T){!T.prefinished&&!T.finalCalled&&(typeof E._final=="function"&&!T.destroyed?(T.finalCalled=!0,ye(E,T)):(T.prefinished=!0,E.emit("prefinish")))}function j(E,T,S){Se(T)&&(V(E,T),T.pendingcb===0&&(S?(T.pendingcb++,e.nextTick((O,N)=>{Se(N)?Z(O,N):N.pendingcb--},E,T)):Se(T)&&(T.pendingcb++,Z(E,T))))}function Z(E,T){T.pendingcb--,T.finished=!0;const S=T[M].splice(0);for(let O=0;O<S.length;O++)S[O]();if(E.emit("finish"),T.autoDestroy){const O=E._readableState;(!O||O.autoDestroy&&(O.endEmitted||O.readable===!1))&&E.destroy()}}i(re.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(E){this._writableState&&(this._writableState.destroyed=E)}},writable:{__proto__:null,get(){const E=this._writableState;return!!E&&E.writable!==!1&&!E.destroyed&&!E.errored&&!E.ending&&!E.ended},set(E){this._writableState&&(this._writableState.writable=!!E)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){const E=this._writableState;return E?!E.destroyed&&!E.ending&&E.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});const ue=g.destroy;re.prototype.destroy=function(E,T){const S=this._writableState;return!S.destroyed&&(S.bufferedIndex<S.buffered.length||S[M].length)&&e.nextTick(ne,S),ue.call(this,E,T),this},re.prototype._undestroy=g.undestroy,re.prototype._destroy=function(E,T){T(E)},re.prototype[c.captureRejectionSymbol]=function(E){this.destroy(E)};let le;function X(){return le===void 0&&(le={}),le}return re.fromWeb=function(E,T){return X().newStreamWritableFromWritableStream(E,T)},re.toWeb=function(E){return X().newWritableStreamFromStreamWritable(E)},Ec}var Sc,g0;function l2(){if(g0)return Sc;g0=1;const e=Wi,t=Jt,{isReadable:r,isWritable:n,isIterable:o,isNodeStream:i,isReadableNodeStream:s,isWritableNodeStream:a,isDuplexNodeStream:l,isReadableStream:u,isWritableStream:c}=En,d=Yn,{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:g,ERR_INVALID_RETURN_VALUE:_}}=Vt,{destroyer:b}=Ko,x=fn(),k=_u(),R=pp(),{createDeferredPromise:A}=Lt,B=r1,$=globalThis.Blob||t.Blob,I=typeof $<"u"?function(L){return L instanceof $}:function(L){return!1},P=globalThis.AbortController||Ns().AbortController,{FunctionPrototypeCall:W}=ut;class Y extends x{constructor(L){super(L),(L==null?void 0:L.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(L==null?void 0:L.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}}Sc=function M(L,ie){if(l(L))return L;if(s(L))return te({readable:L});if(a(L))return te({writable:L});if(i(L))return te({writable:!1,readable:!1});if(u(L))return te({readable:k.fromWeb(L)});if(c(L))return te({writable:R.fromWeb(L)});if(typeof L=="function"){const{value:ae,write:se,final:Q,destroy:he}=oe(L);if(o(ae))return B(Y,ae,{objectMode:!0,write:se,final:Q,destroy:he});const fe=ae==null?void 0:ae.then;if(typeof fe=="function"){let pe;const F=W(fe,ae,ne=>{if(ne!=null)throw new _("nully","body",ne)},ne=>{b(pe,ne)});return pe=new Y({objectMode:!0,readable:!1,write:se,final(ne){Q(async()=>{try{await F,e.nextTick(ne,null)}catch(ge){e.nextTick(ne,ge)}})},destroy:he})}throw new _("Iterable, AsyncIterable or AsyncFunction",ie,ae)}if(I(L))return M(L.arrayBuffer());if(o(L))return B(Y,L,{objectMode:!0,writable:!1});if(u(L==null?void 0:L.readable)&&c(L==null?void 0:L.writable))return Y.fromWeb(L);if(typeof(L==null?void 0:L.writable)=="object"||typeof(L==null?void 0:L.readable)=="object"){const ae=L!=null&&L.readable?s(L==null?void 0:L.readable)?L==null?void 0:L.readable:M(L.readable):void 0,se=L!=null&&L.writable?a(L==null?void 0:L.writable)?L==null?void 0:L.writable:M(L.writable):void 0;return te({readable:ae,writable:se})}const re=L==null?void 0:L.then;if(typeof re=="function"){let ae;return W(re,L,se=>{se!=null&&ae.push(se),ae.push(null)},se=>{b(ae,se)}),ae=new Y({objectMode:!0,writable:!1,read(){}})}throw new g(ie,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],L)};function oe(M){let{promise:L,resolve:ie}=A();const re=new P,ae=re.signal;return{value:M(async function*(){for(;;){const Q=L;L=null;const{chunk:he,done:fe,cb:pe}=await Q;if(e.nextTick(pe),fe)return;if(ae.aborted)throw new p(void 0,{cause:ae.reason});({promise:L,resolve:ie}=A()),yield he}}(),{signal:ae}),write(Q,he,fe){const pe=ie;ie=null,pe({chunk:Q,done:!1,cb:fe})},final(Q){const he=ie;ie=null,he({done:!0,cb:Q})},destroy(Q,he){re.abort(),he(Q)}}}function te(M){const L=M.readable&&typeof M.readable.read!="function"?k.wrap(M.readable):M.readable,ie=M.writable;let re=!!r(L),ae=!!n(ie),se,Q,he,fe,pe;function F(ne){const ge=fe;fe=null,ge?ge(ne):ne&&pe.destroy(ne)}return pe=new Y({readableObjectMode:!!(L!=null&&L.readableObjectMode),writableObjectMode:!!(ie!=null&&ie.writableObjectMode),readable:re,writable:ae}),ae&&(d(ie,ne=>{ae=!1,ne&&b(L,ne),F(ne)}),pe._write=function(ne,ge,Se){ie.write(ne,ge)?Se():se=Se},pe._final=function(ne){ie.end(),Q=ne},ie.on("drain",function(){if(se){const ne=se;se=null,ne()}}),ie.on("finish",function(){if(Q){const ne=Q;Q=null,ne()}})),re&&(d(L,ne=>{re=!1,ne&&b(L,ne),F(ne)}),L.on("readable",function(){if(he){const ne=he;he=null,ne()}}),L.on("end",function(){pe.push(null)}),pe._read=function(){for(;;){const ne=L.read();if(ne===null){he=pe._read;return}if(!pe.push(ne))return}}),pe._destroy=function(ne,ge){!ne&&fe!==null&&(ne=new p),he=null,se=null,Q=null,fe===null?ge(ne):(fe=ge,b(ie,ne),b(L,ne))},pe}return Sc}var Ac,m0;function fn(){if(m0)return Ac;m0=1;const{ObjectDefineProperties:e,ObjectGetOwnPropertyDescriptor:t,ObjectKeys:r,ObjectSetPrototypeOf:n}=ut;Ac=s;const o=_u(),i=pp();n(s.prototype,o.prototype),n(s,o);{const c=r(i.prototype);for(let d=0;d<c.length;d++){const p=c[d];s.prototype[p]||(s.prototype[p]=i.prototype[p])}}function s(c){if(!(this instanceof s))return new s(c);o.call(this,c),i.call(this,c),c?(this.allowHalfOpen=c.allowHalfOpen!==!1,c.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),c.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}e(s.prototype,{writable:{__proto__:null,...t(i.prototype,"writable")},writableHighWaterMark:{__proto__:null,...t(i.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...t(i.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...t(i.prototype,"writableBuffer")},writableLength:{__proto__:null,...t(i.prototype,"writableLength")},writableFinished:{__proto__:null,...t(i.prototype,"writableFinished")},writableCorked:{__proto__:null,...t(i.prototype,"writableCorked")},writableEnded:{__proto__:null,...t(i.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...t(i.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(c){this._readableState&&this._writableState&&(this._readableState.destroyed=c,this._writableState.destroyed=c)}}});let a;function l(){return a===void 0&&(a={}),a}s.fromWeb=function(c,d){return l().newStreamDuplexFromReadableWritablePair(c,d)},s.toWeb=function(c){return l().newReadableWritablePairFromDuplex(c)};let u;return s.from=function(c){return u||(u=l2()),u(c,"body")},Ac}const{ObjectSetPrototypeOf:n1,Symbol:u2}=ut;var i1=hn;const{ERR_METHOD_NOT_IMPLEMENTED:c2}=Vt.codes,gp=fn(),{getHighWaterMark:f2}=yu;n1(hn.prototype,gp.prototype);n1(hn,gp);const xs=u2("kCallback");function hn(e){if(!(this instanceof hn))return new hn(e);const t=e?f2(this,e,"readableHighWaterMark",!0):null;t===0&&(e={...e,highWaterMark:null,readableHighWaterMark:t,writableHighWaterMark:e.writableHighWaterMark||0}),gp.call(this,e),this._readableState.sync=!1,this[xs]=null,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",h2)}function Vh(e){typeof this._flush=="function"&&!this.destroyed?this._flush((t,r)=>{if(t){e?e(t):this.destroy(t);return}r!=null&&this.push(r),this.push(null),e&&e()}):(this.push(null),e&&e())}function h2(){this._final!==Vh&&Vh.call(this)}hn.prototype._final=Vh;hn.prototype._transform=function(e,t,r){throw new c2("_transform()")};hn.prototype._write=function(e,t,r){const n=this._readableState,o=this._writableState,i=n.length;this._transform(e,t,(s,a)=>{if(s){r(s);return}a!=null&&this.push(a),o.ended||i===n.length||n.length<n.highWaterMark?r():this[xs]=r})};hn.prototype._read=function(){if(this[xs]){const e=this[xs];this[xs]=null,e()}};const{ObjectSetPrototypeOf:o1}=ut;var s1=ko;const mp=i1;o1(ko.prototype,mp.prototype);o1(ko,mp);function ko(e){if(!(this instanceof ko))return new ko(e);mp.call(this,e)}ko.prototype._transform=function(e,t,r){r(null,e)};const hs=Wi,{ArrayIsArray:d2,Promise:p2,SymbolAsyncIterator:g2,SymbolDispose:m2}=ut,ml=Yn,{once:y2}=Lt,_2=Ko,y0=fn(),{aggregateTwoErrors:b2,codes:{ERR_INVALID_ARG_TYPE:qh,ERR_INVALID_RETURN_VALUE:Tc,ERR_MISSING_ARGS:w2,ERR_STREAM_DESTROYED:v2,ERR_STREAM_PREMATURE_CLOSE:E2},AbortError:S2}=Vt,{validateFunction:A2,validateAbortSignal:T2}=Vs,{isIterable:si,isReadable:xc,isReadableNodeStream:Va,isNodeStream:_0,isTransformStream:io,isWebStream:x2,isReadableStream:Ic,isReadableFinished:I2}=En,C2=globalThis.AbortController||Ns().AbortController;let Cc,Rc,Oc;function b0(e,t,r){let n=!1;e.on("close",()=>{n=!0});const o=ml(e,{readable:t,writable:r},i=>{n=!i});return{destroy:i=>{n||(n=!0,_2.destroyer(e,i||new v2("pipe")))},cleanup:o}}function R2(e){return A2(e[e.length-1],"streams[stream.length - 1]"),e.pop()}function kc(e){if(si(e))return e;if(Va(e))return O2(e);throw new qh("val",["Readable","Iterable","AsyncIterable"],e)}async function*O2(e){Rc||(Rc=_u()),yield*Rc.prototype[g2].call(e)}async function _a(e,t,r,{end:n}){let o,i=null;const s=u=>{if(u&&(o=u),i){const c=i;i=null,c()}},a=()=>new p2((u,c)=>{o?c(o):i=()=>{o?c(o):u()}});t.on("drain",s);const l=ml(t,{readable:!1},s);try{t.writableNeedDrain&&await a();for await(const u of e)t.write(u)||await a();n&&(t.end(),await a()),r()}catch(u){r(o!==u?b2(o,u):u)}finally{l(),t.off("drain",s)}}async function Nc(e,t,r,{end:n}){io(t)&&(t=t.writable);const o=t.getWriter();try{for await(const i of e)await o.ready,o.write(i).catch(()=>{});await o.ready,n&&await o.close(),r()}catch(i){try{await o.abort(i),r(i)}catch(s){r(s)}}}function k2(...e){return a1(e,y2(R2(e)))}function a1(e,t,r){if(e.length===1&&d2(e[0])&&(e=e[0]),e.length<2)throw new w2("streams");const n=new C2,o=n.signal,i=r==null?void 0:r.signal,s=[];T2(i,"options.signal");function a(){_(new S2)}Oc=Oc||Lt.addAbortListener;let l;i&&(l=Oc(i,a));let u,c;const d=[];let p=0;function g(R){_(R,--p===0)}function _(R,A){var B;if(R&&(!u||u.code==="ERR_STREAM_PREMATURE_CLOSE")&&(u=R),!(!u&&!A)){for(;d.length;)d.shift()(u);(B=l)===null||B===void 0||B[m2](),n.abort(),A&&(u||s.forEach($=>$()),hs.nextTick(t,u,c))}}let b;for(let R=0;R<e.length;R++){const A=e[R],B=R<e.length-1,$=R>0,I=B||(r==null?void 0:r.end)!==!1,P=R===e.length-1;if(_0(A)){let W=function(Y){Y&&Y.name!=="AbortError"&&Y.code!=="ERR_STREAM_PREMATURE_CLOSE"&&g(Y)};if(I){const{destroy:Y,cleanup:oe}=b0(A,B,$);d.push(Y),xc(A)&&P&&s.push(oe)}A.on("error",W),xc(A)&&P&&s.push(()=>{A.removeListener("error",W)})}if(R===0)if(typeof A=="function"){if(b=A({signal:o}),!si(b))throw new Tc("Iterable, AsyncIterable or Stream","source",b)}else si(A)||Va(A)||io(A)?b=A:b=y0.from(A);else if(typeof A=="function"){if(io(b)){var x;b=kc((x=b)===null||x===void 0?void 0:x.readable)}else b=kc(b);if(b=A(b,{signal:o}),B){if(!si(b,!0))throw new Tc("AsyncIterable",`transform[${R-1}]`,b)}else{var k;Cc||(Cc=s1);const W=new Cc({objectMode:!0}),Y=(k=b)===null||k===void 0?void 0:k.then;if(typeof Y=="function")p++,Y.call(b,M=>{c=M,M!=null&&W.write(M),I&&W.end(),hs.nextTick(g)},M=>{W.destroy(M),hs.nextTick(g,M)});else if(si(b,!0))p++,_a(b,W,g,{end:I});else if(Ic(b)||io(b)){const M=b.readable||b;p++,_a(M,W,g,{end:I})}else throw new Tc("AsyncIterable or Promise","destination",b);b=W;const{destroy:oe,cleanup:te}=b0(b,!1,!0);d.push(oe),P&&s.push(te)}}else if(_0(A)){if(Va(b)){p+=2;const W=N2(b,A,g,{end:I});xc(A)&&P&&s.push(W)}else if(io(b)||Ic(b)){const W=b.readable||b;p++,_a(W,A,g,{end:I})}else if(si(b))p++,_a(b,A,g,{end:I});else throw new qh("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],b);b=A}else if(x2(A)){if(Va(b))p++,Nc(kc(b),A,g,{end:I});else if(Ic(b)||si(b))p++,Nc(b,A,g,{end:I});else if(io(b))p++,Nc(b.readable,A,g,{end:I});else throw new qh("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],b);b=A}else b=y0.from(A)}return(o!=null&&o.aborted||i!=null&&i.aborted)&&hs.nextTick(a),b}function N2(e,t,r,{end:n}){let o=!1;if(t.on("close",()=>{o||r(new E2)}),e.pipe(t,{end:!1}),n){let i=function(){o=!0,t.end()};I2(e)?hs.nextTick(i):e.once("end",i)}else r();return ml(e,{readable:!0,writable:!1},i=>{const s=e._readableState;i&&i.code==="ERR_STREAM_PREMATURE_CLOSE"&&s&&s.ended&&!s.errored&&!s.errorEmitted?e.once("end",r).once("error",r):r(i)}),ml(t,{readable:!1,writable:!0},r)}var yp={pipelineImpl:a1,pipeline:k2};const{pipeline:M2}=yp,ba=fn(),{destroyer:P2}=Ko,{isNodeStream:wa,isReadable:w0,isWritable:v0,isWebStream:Mc,isTransformStream:ni,isWritableStream:E0,isReadableStream:S0}=En,{AbortError:L2,codes:{ERR_INVALID_ARG_VALUE:A0,ERR_MISSING_ARGS:B2}}=Vt,D2=Yn;var l1=function(...t){if(t.length===0)throw new B2("streams");if(t.length===1)return ba.from(t[0]);const r=[...t];if(typeof t[0]=="function"&&(t[0]=ba.from(t[0])),typeof t[t.length-1]=="function"){const g=t.length-1;t[g]=ba.from(t[g])}for(let g=0;g<t.length;++g)if(!(!wa(t[g])&&!Mc(t[g]))){if(g<t.length-1&&!(w0(t[g])||S0(t[g])||ni(t[g])))throw new A0(`streams[${g}]`,r[g],"must be readable");if(g>0&&!(v0(t[g])||E0(t[g])||ni(t[g])))throw new A0(`streams[${g}]`,r[g],"must be writable")}let n,o,i,s,a;function l(g){const _=s;s=null,_?_(g):g?a.destroy(g):!p&&!d&&a.destroy()}const u=t[0],c=M2(t,l),d=!!(v0(u)||E0(u)||ni(u)),p=!!(w0(c)||S0(c)||ni(c));if(a=new ba({writableObjectMode:!!(u!=null&&u.writableObjectMode),readableObjectMode:!!(c!=null&&c.readableObjectMode),writable:d,readable:p}),d){if(wa(u))a._write=function(_,b,x){u.write(_,b)?x():n=x},a._final=function(_){u.end(),o=_},u.on("drain",function(){if(n){const _=n;n=null,_()}});else if(Mc(u)){const b=(ni(u)?u.writable:u).getWriter();a._write=async function(x,k,R){try{await b.ready,b.write(x).catch(()=>{}),R()}catch(A){R(A)}},a._final=async function(x){try{await b.ready,b.close().catch(()=>{}),o=x}catch(k){x(k)}}}const g=ni(c)?c.readable:c;D2(g,()=>{if(o){const _=o;o=null,_()}})}if(p){if(wa(c))c.on("readable",function(){if(i){const g=i;i=null,g()}}),c.on("end",function(){a.push(null)}),a._read=function(){for(;;){const g=c.read();if(g===null){i=a._read;return}if(!a.push(g))return}};else if(Mc(c)){const _=(ni(c)?c.readable:c).getReader();a._read=async function(){for(;;)try{const{value:b,done:x}=await _.read();if(!a.push(b))return;if(x){a.push(null);return}}catch{return}}}}return a._destroy=function(g,_){!g&&s!==null&&(g=new L2),i=null,n=null,o=null,s===null?_(g):(s=_,wa(c)&&P2(c,g))},a};const $2=globalThis.AbortController||Ns().AbortController,{codes:{ERR_INVALID_ARG_VALUE:U2,ERR_INVALID_ARG_TYPE:Ks,ERR_MISSING_ARGS:F2,ERR_OUT_OF_RANGE:j2},AbortError:Fr}=Vt,{validateAbortSignal:Vi,validateInteger:T0,validateObject:qi}=Vs,W2=ut.Symbol("kWeak"),H2=ut.Symbol("kResistStopPropagation"),{finished:V2}=Yn,q2=l1,{addAbortSignalNoValidate:K2}=mu,{isWritable:Y2,isNodeStream:z2}=En,{deprecate:G2}=Lt,{ArrayPrototypePush:Q2,Boolean:X2,MathFloor:x0,Number:J2,NumberIsNaN:Z2,Promise:I0,PromiseReject:C0,PromiseResolve:eP,PromisePrototypeThen:R0,Symbol:u1}=ut,yl=u1("kEmpty"),O0=u1("kEof");function tP(e,t){if(t!=null&&qi(t,"options"),(t==null?void 0:t.signal)!=null&&Vi(t.signal,"options.signal"),z2(e)&&!Y2(e))throw new U2("stream",e,"must be writable");const r=q2(this,e);return t!=null&&t.signal&&K2(t.signal,r),r}function bu(e,t){if(typeof e!="function")throw new Ks("fn",["Function","AsyncFunction"],e);t!=null&&qi(t,"options"),(t==null?void 0:t.signal)!=null&&Vi(t.signal,"options.signal");let r=1;(t==null?void 0:t.concurrency)!=null&&(r=x0(t.concurrency));let n=r-1;return(t==null?void 0:t.highWaterMark)!=null&&(n=x0(t.highWaterMark)),T0(r,"options.concurrency",1),T0(n,"options.highWaterMark",0),n+=r,(async function*(){const i=Lt.AbortSignalAny([t==null?void 0:t.signal].filter(X2)),s=this,a=[],l={signal:i};let u,c,d=!1,p=0;function g(){d=!0,_()}function _(){p-=1,b()}function b(){c&&!d&&p<r&&a.length<n&&(c(),c=null)}async function x(){try{for await(let k of s){if(d)return;if(i.aborted)throw new Fr;try{if(k=e(k,l),k===yl)continue;k=eP(k)}catch(R){k=C0(R)}p+=1,R0(k,_,g),a.push(k),u&&(u(),u=null),!d&&(a.length>=n||p>=r)&&await new I0(R=>{c=R})}a.push(O0)}catch(k){const R=C0(k);R0(R,_,g),a.push(R)}finally{d=!0,u&&(u(),u=null)}}x();try{for(;;){for(;a.length>0;){const k=await a[0];if(k===O0)return;if(i.aborted)throw new Fr;k!==yl&&(yield k),a.shift(),b()}await new I0(k=>{u=k})}}finally{d=!0,c&&(c(),c=null)}}).call(this)}function rP(e=void 0){return e!=null&&qi(e,"options"),(e==null?void 0:e.signal)!=null&&Vi(e.signal,"options.signal"),(async function*(){let r=0;for await(const o of this){var n;if(e!=null&&(n=e.signal)!==null&&n!==void 0&&n.aborted)throw new Fr({cause:e.signal.reason});yield[r++,o]}}).call(this)}async function c1(e,t=void 0){for await(const r of _p.call(this,e,t))return!0;return!1}async function nP(e,t=void 0){if(typeof e!="function")throw new Ks("fn",["Function","AsyncFunction"],e);return!await c1.call(this,async(...r)=>!await e(...r),t)}async function iP(e,t){for await(const r of _p.call(this,e,t))return r}async function oP(e,t){if(typeof e!="function")throw new Ks("fn",["Function","AsyncFunction"],e);async function r(n,o){return await e(n,o),yl}for await(const n of bu.call(this,r,t));}function _p(e,t){if(typeof e!="function")throw new Ks("fn",["Function","AsyncFunction"],e);async function r(n,o){return await e(n,o)?n:yl}return bu.call(this,r,t)}class sP extends F2{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}}async function aP(e,t,r){var n;if(typeof e!="function")throw new Ks("reducer",["Function","AsyncFunction"],e);r!=null&&qi(r,"options"),(r==null?void 0:r.signal)!=null&&Vi(r.signal,"options.signal");let o=arguments.length>1;if(r!=null&&(n=r.signal)!==null&&n!==void 0&&n.aborted){const u=new Fr(void 0,{cause:r.signal.reason});throw this.once("error",()=>{}),await V2(this.destroy(u)),u}const i=new $2,s=i.signal;if(r!=null&&r.signal){const u={once:!0,[W2]:this,[H2]:!0};r.signal.addEventListener("abort",()=>i.abort(),u)}let a=!1;try{for await(const u of this){var l;if(a=!0,r!=null&&(l=r.signal)!==null&&l!==void 0&&l.aborted)throw new Fr;o?t=await e(t,u,{signal:s}):(t=u,o=!0)}if(!a&&!o)throw new sP}finally{i.abort()}return t}async function lP(e){e!=null&&qi(e,"options"),(e==null?void 0:e.signal)!=null&&Vi(e.signal,"options.signal");const t=[];for await(const n of this){var r;if(e!=null&&(r=e.signal)!==null&&r!==void 0&&r.aborted)throw new Fr(void 0,{cause:e.signal.reason});Q2(t,n)}return t}function uP(e,t){const r=bu.call(this,e,t);return(async function*(){for await(const o of r)yield*o}).call(this)}function f1(e){if(e=J2(e),Z2(e))return 0;if(e<0)throw new j2("number",">= 0",e);return e}function cP(e,t=void 0){return t!=null&&qi(t,"options"),(t==null?void 0:t.signal)!=null&&Vi(t.signal,"options.signal"),e=f1(e),(async function*(){var n;if(t!=null&&(n=t.signal)!==null&&n!==void 0&&n.aborted)throw new Fr;for await(const i of this){var o;if(t!=null&&(o=t.signal)!==null&&o!==void 0&&o.aborted)throw new Fr;e--<=0&&(yield i)}}).call(this)}function fP(e,t=void 0){return t!=null&&qi(t,"options"),(t==null?void 0:t.signal)!=null&&Vi(t.signal,"options.signal"),e=f1(e),(async function*(){var n;if(t!=null&&(n=t.signal)!==null&&n!==void 0&&n.aborted)throw new Fr;for await(const i of this){var o;if(t!=null&&(o=t.signal)!==null&&o!==void 0&&o.aborted)throw new Fr;if(e-- >0&&(yield i),e<=0)return}}).call(this)}ap.streamReturningOperators={asIndexedPairs:G2(rP,"readable.asIndexedPairs will be removed in a future version."),drop:cP,filter:_p,flatMap:uP,map:bu,take:fP,compose:tP};ap.promiseReturningOperators={every:nP,forEach:oP,reduce:aP,toArray:lP,some:c1,find:iP};var Pc,k0;function h1(){if(k0)return Pc;k0=1;const{ArrayPrototypePop:e,Promise:t}=ut,{isIterable:r,isNodeStream:n,isWebStream:o}=En,{pipelineImpl:i}=yp,{finished:s}=Yn;d1();function a(...l){return new t((u,c)=>{let d,p;const g=l[l.length-1];if(g&&typeof g=="object"&&!n(g)&&!r(g)&&!o(g)){const _=e(l);d=_.signal,p=_.end}i(l,(_,b)=>{_?c(_):u(b)},{signal:d,end:p})})}return Pc={finished:s,pipeline:a},Pc}var N0;function d1(){if(N0)return gc.exports;N0=1;const{Buffer:e}=Jt,{ObjectDefineProperty:t,ObjectKeys:r,ReflectApply:n}=ut,{promisify:{custom:o}}=Lt,{streamReturningOperators:i,promiseReturningOperators:s}=ap,{codes:{ERR_ILLEGAL_CONSTRUCTOR:a}}=Vt,l=l1,{setDefaultHighWaterMark:u,getDefaultHighWaterMark:c}=yu,{pipeline:d}=yp,{destroyer:p}=Ko,g=Yn,_=h1(),b=En,x=gc.exports=hp.Stream;x.isDestroyed=b.isDestroyed,x.isDisturbed=b.isDisturbed,x.isErrored=b.isErrored,x.isReadable=b.isReadable,x.isWritable=b.isWritable,x.Readable=_u();for(const R of r(i)){let B=function(...$){if(new.target)throw a();return x.Readable.from(n(A,this,$))};const A=i[R];t(B,"name",{__proto__:null,value:A.name}),t(B,"length",{__proto__:null,value:A.length}),t(x.Readable.prototype,R,{__proto__:null,value:B,enumerable:!1,configurable:!0,writable:!0})}for(const R of r(s)){let B=function(...$){if(new.target)throw a();return n(A,this,$)};const A=s[R];t(B,"name",{__proto__:null,value:A.name}),t(B,"length",{__proto__:null,value:A.length}),t(x.Readable.prototype,R,{__proto__:null,value:B,enumerable:!1,configurable:!0,writable:!0})}x.Writable=pp(),x.Duplex=fn(),x.Transform=i1,x.PassThrough=s1,x.pipeline=d;const{addAbortSignal:k}=mu;return x.addAbortSignal=k,x.finished=g,x.destroy=p,x.compose=l,x.setDefaultHighWaterMark=u,x.getDefaultHighWaterMark=c,t(x,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return _}}),t(d,o,{__proto__:null,enumerable:!0,get(){return _.pipeline}}),t(g,o,{__proto__:null,enumerable:!0,get(){return _.finished}}),x.Stream=x,x._isUint8Array=function(A){return A instanceof Uint8Array},x._uint8ArrayToBuffer=function(A){return e.from(A.buffer,A.byteOffset,A.byteLength)},gc.exports}(function(e){const t=d1(),r=h1(),n=t.Readable.destroy;e.exports=t.Readable,e.exports._uint8ArrayToBuffer=t._uint8ArrayToBuffer,e.exports._isUint8Array=t._isUint8Array,e.exports.isDisturbed=t.isDisturbed,e.exports.isErrored=t.isErrored,e.exports.isReadable=t.isReadable,e.exports.Readable=t.Readable,e.exports.Writable=t.Writable,e.exports.Duplex=t.Duplex,e.exports.Transform=t.Transform,e.exports.PassThrough=t.PassThrough,e.exports.addAbortSignal=t.addAbortSignal,e.exports.finished=t.finished,e.exports.destroy=t.destroy,e.exports.destroy=n,e.exports.pipeline=t.pipeline,e.exports.compose=t.compose,Object.defineProperty(t,"promises",{configurable:!0,enumerable:!0,get(){return r}}),e.exports.Stream=t.Stream,e.exports.default=e.exports})(uv);var hP=uv.exports,Kh={exports:{}};typeof Object.create=="function"?Kh.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Kh.exports=function(t,r){if(r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t}};var dP=Kh.exports;const{Buffer:gr}=Jt,p1=Symbol.for("BufferList");function Ge(e){if(!(this instanceof Ge))return new Ge(e);Ge._init.call(this,e)}Ge._init=function(t){Object.defineProperty(this,p1,{value:!0}),this._bufs=[],this.length=0,t&&this.append(t)};Ge.prototype._new=function(t){return new Ge(t)};Ge.prototype._offset=function(t){if(t===0)return[0,0];let r=0;for(let n=0;n<this._bufs.length;n++){const o=r+this._bufs[n].length;if(t<o||n===this._bufs.length-1)return[n,t-r];r=o}};Ge.prototype._reverseOffset=function(e){const t=e[0];let r=e[1];for(let n=0;n<t;n++)r+=this._bufs[n].length;return r};Ge.prototype.get=function(t){if(t>this.length||t<0)return;const r=this._offset(t);return this._bufs[r[0]][r[1]]};Ge.prototype.slice=function(t,r){return typeof t=="number"&&t<0&&(t+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,t,r)};Ge.prototype.copy=function(t,r,n,o){if((typeof n!="number"||n<0)&&(n=0),(typeof o!="number"||o>this.length)&&(o=this.length),n>=this.length||o<=0)return t||gr.alloc(0);const i=!!t,s=this._offset(n),a=o-n;let l=a,u=i&&r||0,c=s[1];if(n===0&&o===this.length){if(!i)return this._bufs.length===1?this._bufs[0]:gr.concat(this._bufs,this.length);for(let d=0;d<this._bufs.length;d++)this._bufs[d].copy(t,u),u+=this._bufs[d].length;return t}if(l<=this._bufs[s[0]].length-c)return i?this._bufs[s[0]].copy(t,r,c,c+l):this._bufs[s[0]].slice(c,c+l);i||(t=gr.allocUnsafe(a));for(let d=s[0];d<this._bufs.length;d++){const p=this._bufs[d].length-c;if(l>p)this._bufs[d].copy(t,u,c),u+=p;else{this._bufs[d].copy(t,u,c,c+l),u+=p;break}l-=p,c&&(c=0)}return t.length>u?t.slice(0,u):t};Ge.prototype.shallowSlice=function(t,r){if(t=t||0,r=typeof r!="number"?this.length:r,t<0&&(t+=this.length),r<0&&(r+=this.length),t===r)return this._new();const n=this._offset(t),o=this._offset(r),i=this._bufs.slice(n[0],o[0]+1);return o[1]===0?i.pop():i[i.length-1]=i[i.length-1].slice(0,o[1]),n[1]!==0&&(i[0]=i[0].slice(n[1])),this._new(i)};Ge.prototype.toString=function(t,r,n){return this.slice(r,n).toString(t)};Ge.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};Ge.prototype.duplicate=function(){const t=this._new();for(let r=0;r<this._bufs.length;r++)t.append(this._bufs[r]);return t};Ge.prototype.append=function(t){if(t==null)return this;if(t.buffer)this._appendBuffer(gr.from(t.buffer,t.byteOffset,t.byteLength));else if(Array.isArray(t))for(let r=0;r<t.length;r++)this.append(t[r]);else if(this._isBufferList(t))for(let r=0;r<t._bufs.length;r++)this.append(t._bufs[r]);else typeof t=="number"&&(t=t.toString()),this._appendBuffer(gr.from(t));return this};Ge.prototype._appendBuffer=function(t){this._bufs.push(t),this.length+=t.length};Ge.prototype.indexOf=function(e,t,r){if(r===void 0&&typeof t=="string"&&(r=t,t=void 0),typeof e=="function"||Array.isArray(e))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof e=="number"?e=gr.from([e]):typeof e=="string"?e=gr.from(e,r):this._isBufferList(e)?e=e.slice():Array.isArray(e.buffer)?e=gr.from(e.buffer,e.byteOffset,e.byteLength):gr.isBuffer(e)||(e=gr.from(e)),t=Number(t||0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;const n=this._offset(t);let o=n[0],i=n[1];for(;o<this._bufs.length;o++){const s=this._bufs[o];for(;i<s.length;)if(s.length-i>=e.length){const l=s.indexOf(e,i);if(l!==-1)return this._reverseOffset([o,l]);i=s.length-e.length+1}else{const l=this._reverseOffset([o,i]);if(this._match(l,e))return l;i++}i=0}return-1};Ge.prototype._match=function(e,t){if(this.length-e<t.length)return!1;for(let r=0;r<t.length;r++)if(this.get(e+r)!==t[r])return!1;return!0};(function(){const e={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(const t in e)(function(r){e[r]===null?Ge.prototype[r]=function(n,o){return this.slice(n,n+o)[r](0,o)}:Ge.prototype[r]=function(n=0){return this.slice(n,n+e[r])[r](0)}})(t)})();Ge.prototype._isBufferList=function(t){return t instanceof Ge||Ge.isBufferList(t)};Ge.isBufferList=function(t){return t!=null&&t[p1]};var pP=Ge;const bp=hP.Duplex,gP=dP,Ys=pP;function Ot(e){if(!(this instanceof Ot))return new Ot(e);if(typeof e=="function"){this._callback=e;const t=(function(n){this._callback&&(this._callback(n),this._callback=null)}).bind(this);this.on("pipe",function(n){n.on("error",t)}),this.on("unpipe",function(n){n.removeListener("error",t)}),e=null}Ys._init.call(this,e),bp.call(this)}gP(Ot,bp);Object.assign(Ot.prototype,Ys.prototype);Ot.prototype._new=function(t){return new Ot(t)};Ot.prototype._write=function(t,r,n){this._appendBuffer(t),typeof n=="function"&&n()};Ot.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};Ot.prototype.end=function(t){bp.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Ot.prototype._destroy=function(t,r){this._bufs.length=0,this.length=0,r(t)};Ot.prototype._isBufferList=function(t){return t instanceof Ot||t instanceof Ys||Ot.isBufferList(t)};Ot.isBufferList=Ys.isBufferList;ip.exports=Ot;ip.exports.BufferListStream=Ot;ip.exports.BufferList=Ys;var mP={exports:{}};(function(e){const t=e.exports,{Buffer:r}=Jt;t.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},t.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},t.requiredHeaderFlagsErrors={};for(const o in t.requiredHeaderFlags){const i=t.requiredHeaderFlags[o];t.requiredHeaderFlagsErrors[o]="Invalid header flag bits, must be 0x"+i.toString(16)+" for "+t.types[o]+" packet"}t.codes={};for(const o in t.types){const i=t.types[o];t.codes[i]=o}t.CMD_SHIFT=4,t.CMD_MASK=240,t.DUP_MASK=8,t.QOS_MASK=3,t.QOS_SHIFT=1,t.RETAIN_MASK=1,t.VARBYTEINT_MASK=127,t.VARBYTEINT_FIN_MASK=128,t.VARBYTEINT_MAX=268435455,t.SESSIONPRESENT_MASK=1,t.SESSIONPRESENT_HEADER=r.from([t.SESSIONPRESENT_MASK]),t.CONNACK_HEADER=r.from([t.codes.connack<<t.CMD_SHIFT]),t.USERNAME_MASK=128,t.PASSWORD_MASK=64,t.WILL_RETAIN_MASK=32,t.WILL_QOS_MASK=24,t.WILL_QOS_SHIFT=3,t.WILL_FLAG_MASK=4,t.CLEAN_SESSION_MASK=2,t.CONNECT_HEADER=r.from([t.codes.connect<<t.CMD_SHIFT]),t.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},t.propertiesCodes={};for(const o in t.properties){const i=t.properties[o];t.propertiesCodes[i]=o}t.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function n(o){return[0,1,2].map(i=>[0,1].map(s=>[0,1].map(a=>{const l=r.alloc(1);return l.writeUInt8(t.codes[o]<<t.CMD_SHIFT|(s?t.DUP_MASK:0)|i<<t.QOS_SHIFT|a,0,!0),l})))}t.PUBLISH_HEADER=n("publish"),t.SUBSCRIBE_HEADER=n("subscribe"),t.SUBSCRIBE_OPTIONS_QOS_MASK=3,t.SUBSCRIBE_OPTIONS_NL_MASK=1,t.SUBSCRIBE_OPTIONS_NL_SHIFT=2,t.SUBSCRIBE_OPTIONS_RAP_MASK=1,t.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,t.SUBSCRIBE_OPTIONS_RH_MASK=3,t.SUBSCRIBE_OPTIONS_RH_SHIFT=4,t.SUBSCRIBE_OPTIONS_RH=[0,16,32],t.SUBSCRIBE_OPTIONS_NL=4,t.SUBSCRIBE_OPTIONS_RAP=8,t.SUBSCRIBE_OPTIONS_QOS=[0,1,2],t.UNSUBSCRIBE_HEADER=n("unsubscribe"),t.ACKS={unsuback:n("unsuback"),puback:n("puback"),pubcomp:n("pubcomp"),pubrel:n("pubrel"),pubrec:n("pubrec")},t.SUBACK_HEADER=r.from([t.codes.suback<<t.CMD_SHIFT]),t.VERSION3=r.from([3]),t.VERSION4=r.from([4]),t.VERSION5=r.from([5]),t.VERSION131=r.from([131]),t.VERSION132=r.from([132]),t.QOS=[0,1,2].map(o=>r.from([o])),t.EMPTY={pingreq:r.from([t.codes.pingreq<<4,0]),pingresp:r.from([t.codes.pingresp<<4,0]),disconnect:r.from([t.codes.disconnect<<4,0])},t.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},t.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},t.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},t.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},t.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},t.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}})(mP);function g1(){throw new Error("setTimeout has not been defined")}function m1(){throw new Error("clearTimeout has not been defined")}var Rn=g1,On=m1;typeof Ii.setTimeout=="function"&&(Rn=setTimeout);typeof Ii.clearTimeout=="function"&&(On=clearTimeout);function y1(e){if(Rn===setTimeout)return setTimeout(e,0);if((Rn===g1||!Rn)&&setTimeout)return Rn=setTimeout,setTimeout(e,0);try{return Rn(e,0)}catch{try{return Rn.call(null,e,0)}catch{return Rn.call(this,e,0)}}}function yP(e){if(On===clearTimeout)return clearTimeout(e);if((On===m1||!On)&&clearTimeout)return On=clearTimeout,clearTimeout(e);try{return On(e)}catch{try{return On.call(null,e)}catch{return On.call(this,e)}}}var en=[],wo=!1,yi,qa=-1;function _P(){!wo||!yi||(wo=!1,yi.length?en=yi.concat(en):qa=-1,en.length&&_1())}function _1(){if(!wo){var e=y1(_P);wo=!0;for(var t=en.length;t;){for(yi=en,en=[];++qa<t;)yi&&yi[qa].run();qa=-1,t=en.length}yi=null,wo=!1,yP(e)}}function bP(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];en.push(new b1(e,t)),en.length===1&&!wo&&y1(_1)}function b1(e,t){this.fun=e,this.array=t}b1.prototype.run=function(){this.fun.apply(null,this.array)};var wP="browser",vP="browser",EP=!0,SP={},AP=[],TP="",xP={},IP={},CP={};function Ki(){}var RP=Ki,OP=Ki,kP=Ki,NP=Ki,MP=Ki,PP=Ki,LP=Ki;function BP(e){throw new Error("process.binding is not supported")}function DP(){return"/"}function $P(e){throw new Error("process.chdir is not supported")}function UP(){return 0}var oo=Ii.performance||{},FP=oo.now||oo.mozNow||oo.msNow||oo.oNow||oo.webkitNow||function(){return new Date().getTime()};function jP(e){var t=FP.call(oo)*.001,r=Math.floor(t),n=Math.floor(t%1*1e9);return e&&(r=r-e[0],n=n-e[1],n<0&&(r--,n+=1e9)),[r,n]}var WP=new Date;function HP(){var e=new Date,t=e-WP;return t/1e3}var Yt={nextTick:bP,title:wP,browser:EP,env:SP,argv:AP,version:TP,versions:xP,on:RP,addListener:OP,once:kP,off:NP,removeListener:MP,removeAllListeners:PP,emit:LP,binding:BP,cwd:DP,chdir:$P,umask:UP,hrtime:jP,platform:vP,release:IP,config:CP,uptime:HP},Yh={exports:{}},Lc,M0;function VP(){if(M0)return Lc;M0=1;var e=1e3,t=e*60,r=t*60,n=r*24,o=n*7,i=n*365.25;Lc=function(c,d){d=d||{};var p=typeof c;if(p==="string"&&c.length>0)return s(c);if(p==="number"&&isFinite(c))return d.long?l(c):a(c);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(c))};function s(c){if(c=String(c),!(c.length>100)){var d=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(c);if(d){var p=parseFloat(d[1]),g=(d[2]||"ms").toLowerCase();switch(g){case"years":case"year":case"yrs":case"yr":case"y":return p*i;case"weeks":case"week":case"w":return p*o;case"days":case"day":case"d":return p*n;case"hours":case"hour":case"hrs":case"hr":case"h":return p*r;case"minutes":case"minute":case"mins":case"min":case"m":return p*t;case"seconds":case"second":case"secs":case"sec":case"s":return p*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return p;default:return}}}}function a(c){var d=Math.abs(c);return d>=n?Math.round(c/n)+"d":d>=r?Math.round(c/r)+"h":d>=t?Math.round(c/t)+"m":d>=e?Math.round(c/e)+"s":c+"ms"}function l(c){var d=Math.abs(c);return d>=n?u(c,d,n,"day"):d>=r?u(c,d,r,"hour"):d>=t?u(c,d,t,"minute"):d>=e?u(c,d,e,"second"):c+" ms"}function u(c,d,p,g){var _=d>=p*1.5;return Math.round(c/p)+" "+g+(_?"s":"")}return Lc}function qP(e){r.debug=r,r.default=r,r.coerce=l,r.disable=i,r.enable=o,r.enabled=s,r.humanize=VP(),r.destroy=u,Object.keys(e).forEach(c=>{r[c]=e[c]}),r.names=[],r.skips=[],r.formatters={};function t(c){let d=0;for(let p=0;p<c.length;p++)d=(d<<5)-d+c.charCodeAt(p),d|=0;return r.colors[Math.abs(d)%r.colors.length]}r.selectColor=t;function r(c){let d,p=null,g,_;function b(...x){if(!b.enabled)return;const k=b,R=Number(new Date),A=R-(d||R);k.diff=A,k.prev=d,k.curr=R,d=R,x[0]=r.coerce(x[0]),typeof x[0]!="string"&&x.unshift("%O");let B=0;x[0]=x[0].replace(/%([a-zA-Z%])/g,(I,P)=>{if(I==="%%")return"%";B++;const W=r.formatters[P];if(typeof W=="function"){const Y=x[B];I=W.call(k,Y),x.splice(B,1),B--}return I}),r.formatArgs.call(k,x),(k.log||r.log).apply(k,x)}return b.namespace=c,b.useColors=r.useColors(),b.color=r.selectColor(c),b.extend=n,b.destroy=r.destroy,Object.defineProperty(b,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(g!==r.namespaces&&(g=r.namespaces,_=r.enabled(c)),_),set:x=>{p=x}}),typeof r.init=="function"&&r.init(b),b}function n(c,d){const p=r(this.namespace+(typeof d>"u"?":":d)+c);return p.log=this.log,p}function o(c){r.save(c),r.namespaces=c,r.names=[],r.skips=[];let d;const p=(typeof c=="string"?c:"").split(/[\s,]+/),g=p.length;for(d=0;d<g;d++)p[d]&&(c=p[d].replace(/\*/g,".*?"),c[0]==="-"?r.skips.push(new RegExp("^"+c.slice(1)+"$")):r.names.push(new RegExp("^"+c+"$")))}function i(){const c=[...r.names.map(a),...r.skips.map(a).map(d=>"-"+d)].join(",");return r.enable(""),c}function s(c){if(c[c.length-1]==="*")return!0;let d,p;for(d=0,p=r.skips.length;d<p;d++)if(r.skips[d].test(c))return!1;for(d=0,p=r.names.length;d<p;d++)if(r.names[d].test(c))return!0;return!1}function a(c){return c.toString().substring(2,c.toString().length-2).replace(/\.\*\?$/,"*")}function l(c){return c instanceof Error?c.stack||c.message:c}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}var KP=qP;(function(e,t){var r={};t.formatArgs=o,t.save=i,t.load=s,t.useColors=n,t.storage=a(),t.destroy=(()=>{let u=!1;return()=>{u||(u=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function o(u){if(u[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+u[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const c="color: "+this.color;u.splice(1,0,c,"color: inherit");let d=0,p=0;u[0].replace(/%[a-zA-Z%]/g,g=>{g!=="%%"&&(d++,g==="%c"&&(p=d))}),u.splice(p,0,c)}t.log=console.debug||console.log||(()=>{});function i(u){try{u?t.storage.setItem("debug",u):t.storage.removeItem("debug")}catch{}}function s(){let u;try{u=t.storage.getItem("debug")}catch{}return!u&&typeof Yt<"u"&&"env"in Yt&&(u=r.DEBUG),u}function a(){try{return localStorage}catch{}}e.exports=KP(t);const{formatters:l}=e.exports;l.j=function(u){try{return JSON.stringify(u)}catch(c){return"[UnexpectedJSONParseError]: "+c.message}}})(Yh,Yh.exports);var w1=Yh.exports;w1("mqtt-packet:parser");const{Buffer:P0}=Jt;P0.isBuffer(P0.from([1,2]).subarray(0,1));var zh={exports:{}};typeof Yt>"u"||!Yt.version||Yt.version.indexOf("v0.")===0||Yt.version.indexOf("v1.")===0&&Yt.version.indexOf("v1.8.")!==0?zh.exports={nextTick:YP}:zh.exports=Yt;function YP(e,t,r,n){if(typeof e!="function")throw new TypeError('"callback" argument must be a function');var o=arguments.length,i,s;switch(o){case 0:case 1:return Yt.nextTick(e);case 2:return Yt.nextTick(function(){e.call(null,t)});case 3:return Yt.nextTick(function(){e.call(null,t,r)});case 4:return Yt.nextTick(function(){e.call(null,t,r,n)});default:for(i=new Array(o-1),s=0;s<i.length;)i[s++]=arguments[s];return Yt.nextTick(function(){e.apply(null,i)})}}var zP=zh.exports;const{Buffer:v1}=Jt;v1.allocUnsafe(0);v1.from([0]);zP.nextTick;w1("mqtt-packet:writeToStream");function Ka(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function GP(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function wp(e){let t,r,n;e.length!==2?(t=Ka,r=(a,l)=>Ka(e(a),l),n=(a,l)=>e(a)-l):(t=e===Ka||e===GP?e:QP,r=e,n=e);function o(a,l,u=0,c=a.length){if(u<c){if(t(l,l)!==0)return c;do{const d=u+c>>>1;r(a[d],l)<0?u=d+1:c=d}while(u<c)}return u}function i(a,l,u=0,c=a.length){if(u<c){if(t(l,l)!==0)return c;do{const d=u+c>>>1;r(a[d],l)<=0?u=d+1:c=d}while(u<c)}return u}function s(a,l,u=0,c=a.length){const d=o(a,l,u,c-1);return d>u&&n(a[d-1],l)>-n(a[d],l)?d-1:d}return{left:o,center:s,right:i}}function QP(){return 0}function XP(e){return e===null?NaN:+e}const JP=wp(Ka),ZP=JP.right;wp(XP).center;function i3(e,t){let r,n;if(t===void 0)for(const o of e)o!=null&&(r===void 0?o>=o&&(r=n=o):(r>o&&(r=o),n<o&&(n=o)));else{let o=-1;for(let i of e)(i=t(i,++o,e))!=null&&(r===void 0?i>=i&&(r=n=i):(r>i&&(r=i),n<i&&(n=i)))}return[r,n]}class L0 extends Map{constructor(t,r=rL){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(const[n,o]of t)this.set(n,o)}get(t){return super.get(B0(this,t))}has(t){return super.has(B0(this,t))}set(t,r){return super.set(eL(this,t),r)}delete(t){return super.delete(tL(this,t))}}function B0({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):r}function eL({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function tL({_intern:e,_key:t},r){const n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function rL(e){return e!==null&&typeof e=="object"?e.valueOf():e}const nL=Math.sqrt(50),iL=Math.sqrt(10),oL=Math.sqrt(2);function _l(e,t,r){const n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),s=i>=nL?10:i>=iL?5:i>=oL?2:1;let a,l,u;return o<0?(u=Math.pow(10,-o)/s,a=Math.round(e*u),l=Math.round(t*u),a/u<e&&++a,l/u>t&&--l,u=-u):(u=Math.pow(10,o)*s,a=Math.round(e/u),l=Math.round(t/u),a*u<e&&++a,l*u>t&&--l),l<a&&.5<=r&&r<2?_l(e,t,r*2):[a,l,u]}function sL(e,t,r){if(t=+t,e=+e,r=+r,!(r>0))return[];if(e===t)return[e];const n=t<e,[o,i,s]=n?_l(t,e,r):_l(e,t,r);if(!(i>=o))return[];const a=i-o+1,l=new Array(a);if(n)if(s<0)for(let u=0;u<a;++u)l[u]=(i-u)/-s;else for(let u=0;u<a;++u)l[u]=(i-u)*s;else if(s<0)for(let u=0;u<a;++u)l[u]=(o+u)/-s;else for(let u=0;u<a;++u)l[u]=(o+u)*s;return l}function Gh(e,t,r){return t=+t,e=+e,r=+r,_l(e,t,r)[2]}function Qh(e,t,r){t=+t,e=+e,r=+r;const n=t<e,o=n?Gh(t,e,r):Gh(e,t,r);return(n?-1:1)*(o<0?1/-o:o)}function o3(e,t){let r;if(t===void 0)for(const n of e)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r<o||r===void 0&&o>=o)&&(r=o)}return r}function aL(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,i=new Array(o);++n<o;)i[n]=e+n*r;return i}function lL(e){return e}var Ya=1,za=2,Xh=3,ds=4,D0=1e-6;function uL(e){return"translate("+e+",0)"}function cL(e){return"translate(0,"+e+")"}function fL(e){return t=>+e(t)}function hL(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function dL(){return!this.__axis}function wu(e,t){var r=[],n=null,o=null,i=6,s=6,a=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=e===Ya||e===ds?-1:1,c=e===ds||e===za?"x":"y",d=e===Ya||e===Xh?uL:cL;function p(g){var _=n??(t.ticks?t.ticks.apply(t,r):t.domain()),b=o??(t.tickFormat?t.tickFormat.apply(t,r):lL),x=Math.max(i,0)+a,k=t.range(),R=+k[0]+l,A=+k[k.length-1]+l,B=(t.bandwidth?hL:fL)(t.copy(),l),$=g.selection?g.selection():g,I=$.selectAll(".domain").data([null]),P=$.selectAll(".tick").data(_,t).order(),W=P.exit(),Y=P.enter().append("g").attr("class","tick"),oe=P.select("line"),te=P.select("text");I=I.merge(I.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),P=P.merge(Y),oe=oe.merge(Y.append("line").attr("stroke","currentColor").attr(c+"2",u*i)),te=te.merge(Y.append("text").attr("fill","currentColor").attr(c,u*x).attr("dy",e===Ya?"0em":e===Xh?"0.71em":"0.32em")),g!==$&&(I=I.transition(g),P=P.transition(g),oe=oe.transition(g),te=te.transition(g),W=W.transition(g).attr("opacity",D0).attr("transform",function(M){return isFinite(M=B(M))?d(M+l):this.getAttribute("transform")}),Y.attr("opacity",D0).attr("transform",function(M){var L=this.parentNode.__axis;return d((L&&isFinite(L=L(M))?L:B(M))+l)})),W.remove(),I.attr("d",e===ds||e===za?s?"M"+u*s+","+R+"H"+l+"V"+A+"H"+u*s:"M"+l+","+R+"V"+A:s?"M"+R+","+u*s+"V"+l+"H"+A+"V"+u*s:"M"+R+","+l+"H"+A),P.attr("opacity",1).attr("transform",function(M){return d(B(M)+l)}),oe.attr(c+"2",u*i),te.attr(c,u*x).text(b),$.filter(dL).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===za?"start":e===ds?"end":"middle"),$.each(function(){this.__axis=B})}return p.scale=function(g){return arguments.length?(t=g,p):t},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(g){return arguments.length?(r=g==null?[]:Array.from(g),p):r.slice()},p.tickValues=function(g){return arguments.length?(n=g==null?null:Array.from(g),p):n&&n.slice()},p.tickFormat=function(g){return arguments.length?(o=g,p):o},p.tickSize=function(g){return arguments.length?(i=s=+g,p):i},p.tickSizeInner=function(g){return arguments.length?(i=+g,p):i},p.tickSizeOuter=function(g){return arguments.length?(s=+g,p):s},p.tickPadding=function(g){return arguments.length?(a=+g,p):a},p.offset=function(g){return arguments.length?(l=+g,p):l},p}function s3(e){return wu(Ya,e)}function a3(e){return wu(za,e)}function l3(e){return wu(Xh,e)}function u3(e){return wu(ds,e)}var pL={value:()=>{}};function E1(){for(var e=0,t=arguments.length,r={},n;e<t;++e){if(!(n=arguments[e]+"")||n in r||/[\s.]/.test(n))throw new Error("illegal type: "+n);r[n]=[]}return new Ga(r)}function Ga(e){this._=e}function gL(e,t){return e.trim().split(/^|\s+/).map(function(r){var n="",o=r.indexOf(".");if(o>=0&&(n=r.slice(o+1),r=r.slice(0,o)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}Ga.prototype=E1.prototype={constructor:Ga,on:function(e,t){var r=this._,n=gL(e+"",r),o,i=-1,s=n.length;if(arguments.length<2){for(;++i<s;)if((o=(e=n[i]).type)&&(o=mL(r[o],e.name)))return o;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++i<s;)if(o=(e=n[i]).type)r[o]=$0(r[o],e.name,t);else if(t==null)for(o in r)r[o]=$0(r[o],e.name,null);return this},copy:function(){var e={},t=this._;for(var r in t)e[r]=t[r].slice();return new Ga(e)},call:function(e,t){if((o=arguments.length-2)>0)for(var r=new Array(o),n=0,o,i;n<o;++n)r[n]=arguments[n+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(i=this._[e],n=0,o=i.length;n<o;++n)i[n].value.apply(t,r)},apply:function(e,t,r){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var n=this._[e],o=0,i=n.length;o<i;++o)n[o].value.apply(t,r)}};function mL(e,t){for(var r=0,n=e.length,o;r<n;++r)if((o=e[r]).name===t)return o.value}function $0(e,t,r){for(var n=0,o=e.length;n<o;++n)if(e[n].name===t){e[n]=pL,e=e.slice(0,n).concat(e.slice(n+1));break}return r!=null&&e.push({name:t,value:r}),e}var Jh="http://www.w3.org/1999/xhtml";const U0={svg:"http://www.w3.org/2000/svg",xhtml:Jh,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function vu(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),U0.hasOwnProperty(t)?{space:U0[t],local:e}:e}function yL(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===Jh&&t.documentElement.namespaceURI===Jh?t.createElement(e):t.createElementNS(r,e)}}function _L(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function S1(e){var t=vu(e);return(t.local?_L:yL)(t)}function bL(){}function vp(e){return e==null?bL:function(){return this.querySelector(e)}}function wL(e){typeof e!="function"&&(e=vp(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=new Array(s),l,u,c=0;c<s;++c)(l=i[c])&&(u=e.call(l,l.__data__,c,i))&&("__data__"in l&&(u.__data__=l.__data__),a[c]=u);return new Xt(n,this._parents)}function vL(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function EL(){return[]}function A1(e){return e==null?EL:function(){return this.querySelectorAll(e)}}function SL(e){return function(){return vL(e.apply(this,arguments))}}function AL(e){typeof e=="function"?e=SL(e):e=A1(e);for(var t=this._groups,r=t.length,n=[],o=[],i=0;i<r;++i)for(var s=t[i],a=s.length,l,u=0;u<a;++u)(l=s[u])&&(n.push(e.call(l,l.__data__,u,s)),o.push(l));return new Xt(n,o)}function T1(e){return function(){return this.matches(e)}}function x1(e){return function(t){return t.matches(e)}}var TL=Array.prototype.find;function xL(e){return function(){return TL.call(this.children,e)}}function IL(){return this.firstElementChild}function CL(e){return this.select(e==null?IL:xL(typeof e=="function"?e:x1(e)))}var RL=Array.prototype.filter;function OL(){return Array.from(this.children)}function kL(e){return function(){return RL.call(this.children,e)}}function NL(e){return this.selectAll(e==null?OL:kL(typeof e=="function"?e:x1(e)))}function ML(e){typeof e!="function"&&(e=T1(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=[],l,u=0;u<s;++u)(l=i[u])&&e.call(l,l.__data__,u,i)&&a.push(l);return new Xt(n,this._parents)}function I1(e){return new Array(e.length)}function PL(){return new Xt(this._enter||this._groups.map(I1),this._parents)}function bl(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}bl.prototype={constructor:bl,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function LL(e){return function(){return e}}function BL(e,t,r,n,o,i){for(var s=0,a,l=t.length,u=i.length;s<u;++s)(a=t[s])?(a.__data__=i[s],n[s]=a):r[s]=new bl(e,i[s]);for(;s<l;++s)(a=t[s])&&(o[s]=a)}function DL(e,t,r,n,o,i,s){var a,l,u=new Map,c=t.length,d=i.length,p=new Array(c),g;for(a=0;a<c;++a)(l=t[a])&&(p[a]=g=s.call(l,l.__data__,a,t)+"",u.has(g)?o[a]=l:u.set(g,l));for(a=0;a<d;++a)g=s.call(e,i[a],a,i)+"",(l=u.get(g))?(n[a]=l,l.__data__=i[a],u.delete(g)):r[a]=new bl(e,i[a]);for(a=0;a<c;++a)(l=t[a])&&u.get(p[a])===l&&(o[a]=l)}function $L(e){return e.__data__}function UL(e,t){if(!arguments.length)return Array.from(this,$L);var r=t?DL:BL,n=this._parents,o=this._groups;typeof e!="function"&&(e=LL(e));for(var i=o.length,s=new Array(i),a=new Array(i),l=new Array(i),u=0;u<i;++u){var c=n[u],d=o[u],p=d.length,g=FL(e.call(c,c&&c.__data__,u,n)),_=g.length,b=a[u]=new Array(_),x=s[u]=new Array(_),k=l[u]=new Array(p);r(c,d,b,x,k,g,t);for(var R=0,A=0,B,$;R<_;++R)if(B=b[R]){for(R>=A&&(A=R+1);!($=x[A])&&++A<_;);B._next=$||null}}return s=new Xt(s,n),s._enter=a,s._exit=l,s}function FL(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function jL(){return new Xt(this._exit||this._groups.map(I1),this._parents)}function WL(e,t,r){var n=this.enter(),o=this,i=this.exit();return typeof e=="function"?(n=e(n),n&&(n=n.selection())):n=n.append(e+""),t!=null&&(o=t(o),o&&(o=o.selection())),r==null?i.remove():r(i),n&&o?n.merge(o).order():o}function HL(e){for(var t=e.selection?e.selection():e,r=this._groups,n=t._groups,o=r.length,i=n.length,s=Math.min(o,i),a=new Array(o),l=0;l<s;++l)for(var u=r[l],c=n[l],d=u.length,p=a[l]=new Array(d),g,_=0;_<d;++_)(g=u[_]||c[_])&&(p[_]=g);for(;l<o;++l)a[l]=r[l];return new Xt(a,this._parents)}function VL(){for(var e=this._groups,t=-1,r=e.length;++t<r;)for(var n=e[t],o=n.length-1,i=n[o],s;--o>=0;)(s=n[o])&&(i&&s.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(s,i),i=s);return this}function qL(e){e||(e=KL);function t(d,p){return d&&p?e(d.__data__,p.__data__):!d-!p}for(var r=this._groups,n=r.length,o=new Array(n),i=0;i<n;++i){for(var s=r[i],a=s.length,l=o[i]=new Array(a),u,c=0;c<a;++c)(u=s[c])&&(l[c]=u);l.sort(t)}return new Xt(o,this._parents).order()}function KL(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function YL(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function zL(){return Array.from(this)}function GL(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var n=e[t],o=0,i=n.length;o<i;++o){var s=n[o];if(s)return s}return null}function QL(){let e=0;for(const t of this)++e;return e}function XL(){return!this.node()}function JL(e){for(var t=this._groups,r=0,n=t.length;r<n;++r)for(var o=t[r],i=0,s=o.length,a;i<s;++i)(a=o[i])&&e.call(a,a.__data__,i,o);return this}function ZL(e){return function(){this.removeAttribute(e)}}function eB(e){return function(){this.removeAttributeNS(e.space,e.local)}}function tB(e,t){return function(){this.setAttribute(e,t)}}function rB(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function nB(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttribute(e):this.setAttribute(e,r)}}function iB(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function oB(e,t){var r=vu(e);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((t==null?r.local?eB:ZL:typeof t=="function"?r.local?iB:nB:r.local?rB:tB)(r,t))}function C1(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function sB(e){return function(){this.style.removeProperty(e)}}function aB(e,t,r){return function(){this.style.setProperty(e,t,r)}}function lB(e,t,r){return function(){var n=t.apply(this,arguments);n==null?this.style.removeProperty(e):this.style.setProperty(e,n,r)}}function uB(e,t,r){return arguments.length>1?this.each((t==null?sB:typeof t=="function"?lB:aB)(e,t,r??"")):No(this.node(),e)}function No(e,t){return e.style.getPropertyValue(t)||C1(e).getComputedStyle(e,null).getPropertyValue(t)}function cB(e){return function(){delete this[e]}}function fB(e,t){return function(){this[e]=t}}function hB(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function dB(e,t){return arguments.length>1?this.each((t==null?cB:typeof t=="function"?hB:fB)(e,t)):this.node()[e]}function R1(e){return e.trim().split(/^|\s+/)}function Ep(e){return e.classList||new O1(e)}function O1(e){this._node=e,this._names=R1(e.getAttribute("class")||"")}O1.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function k1(e,t){for(var r=Ep(e),n=-1,o=t.length;++n<o;)r.add(t[n])}function N1(e,t){for(var r=Ep(e),n=-1,o=t.length;++n<o;)r.remove(t[n])}function pB(e){return function(){k1(this,e)}}function gB(e){return function(){N1(this,e)}}function mB(e,t){return function(){(t.apply(this,arguments)?k1:N1)(this,e)}}function yB(e,t){var r=R1(e+"");if(arguments.length<2){for(var n=Ep(this.node()),o=-1,i=r.length;++o<i;)if(!n.contains(r[o]))return!1;return!0}return this.each((typeof t=="function"?mB:t?pB:gB)(r,t))}function _B(){this.textContent=""}function bB(e){return function(){this.textContent=e}}function wB(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function vB(e){return arguments.length?this.each(e==null?_B:(typeof e=="function"?wB:bB)(e)):this.node().textContent}function EB(){this.innerHTML=""}function SB(e){return function(){this.innerHTML=e}}function AB(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function TB(e){return arguments.length?this.each(e==null?EB:(typeof e=="function"?AB:SB)(e)):this.node().innerHTML}function xB(){this.nextSibling&&this.parentNode.appendChild(this)}function IB(){return this.each(xB)}function CB(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function RB(){return this.each(CB)}function OB(e){var t=typeof e=="function"?e:S1(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function kB(){return null}function NB(e,t){var r=typeof e=="function"?e:S1(e),n=t==null?kB:typeof t=="function"?t:vp(t);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}function MB(){var e=this.parentNode;e&&e.removeChild(this)}function PB(){return this.each(MB)}function LB(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function BB(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function DB(e){return this.select(e?BB:LB)}function $B(e){return arguments.length?this.property("__data__",e):this.node().__data__}function UB(e){return function(t){e.call(this,t,this.__data__)}}function FB(e){return e.trim().split(/^|\s+/).map(function(t){var r="",n=t.indexOf(".");return n>=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function jB(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,o=t.length,i;r<o;++r)i=t[r],(!e.type||i.type===e.type)&&i.name===e.name?this.removeEventListener(i.type,i.listener,i.options):t[++n]=i;++n?t.length=n:delete this.__on}}}function WB(e,t,r){return function(){var n=this.__on,o,i=UB(t);if(n){for(var s=0,a=n.length;s<a;++s)if((o=n[s]).type===e.type&&o.name===e.name){this.removeEventListener(o.type,o.listener,o.options),this.addEventListener(o.type,o.listener=i,o.options=r),o.value=t;return}}this.addEventListener(e.type,i,r),o={type:e.type,name:e.name,value:t,listener:i,options:r},n?n.push(o):this.__on=[o]}}function HB(e,t,r){var n=FB(e+""),o,i=n.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var l=0,u=a.length,c;l<u;++l)for(o=0,c=a[l];o<i;++o)if((s=n[o]).type===c.type&&s.name===c.name)return c.value}return}for(a=t?WB:jB,o=0;o<i;++o)this.each(a(n[o],t,r));return this}function M1(e,t,r){var n=C1(e),o=n.CustomEvent;typeof o=="function"?o=new o(t,r):(o=n.document.createEvent("Event"),r?(o.initEvent(t,r.bubbles,r.cancelable),o.detail=r.detail):o.initEvent(t,!1,!1)),e.dispatchEvent(o)}function VB(e,t){return function(){return M1(this,e,t)}}function qB(e,t){return function(){return M1(this,e,t.apply(this,arguments))}}function KB(e,t){return this.each((typeof t=="function"?qB:VB)(e,t))}function*YB(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var n=e[t],o=0,i=n.length,s;o<i;++o)(s=n[o])&&(yield s)}var P1=[null];function Xt(e,t){this._groups=e,this._parents=t}function zs(){return new Xt([[document.documentElement]],P1)}function zB(){return this}Xt.prototype=zs.prototype={constructor:Xt,select:wL,selectAll:AL,selectChild:CL,selectChildren:NL,filter:ML,data:UL,enter:PL,exit:jL,join:WL,merge:HL,selection:zB,order:VL,sort:qL,call:YL,nodes:zL,node:GL,size:QL,empty:XL,each:JL,attr:oB,style:uB,property:dB,classed:yB,text:vB,html:TB,raise:IB,lower:RB,append:OB,insert:NB,remove:PB,clone:DB,datum:$B,on:HB,dispatch:KB,[Symbol.iterator]:YB};function c3(e){return typeof e=="string"?new Xt([[document.querySelector(e)]],[document.documentElement]):new Xt([[e]],P1)}function Sp(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function L1(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}function Gs(){}var Ms=.7,wl=1/Ms,vo="\\s*([+-]?\\d+)\\s*",Ps="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Dr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",GB=/^#([0-9a-f]{3,8})$/,QB=new RegExp(`^rgb\\(${vo},${vo},${vo}\\)$`),XB=new RegExp(`^rgb\\(${Dr},${Dr},${Dr}\\)$`),JB=new RegExp(`^rgba\\(${vo},${vo},${vo},${Ps}\\)$`),ZB=new RegExp(`^rgba\\(${Dr},${Dr},${Dr},${Ps}\\)$`),eD=new RegExp(`^hsl\\(${Ps},${Dr},${Dr}\\)$`),tD=new RegExp(`^hsla\\(${Ps},${Dr},${Dr},${Ps}\\)$`),F0={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Sp(Gs,ki,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:j0,formatHex:j0,formatHex8:rD,formatHsl:nD,formatRgb:W0,toString:W0});function j0(){return this.rgb().formatHex()}function rD(){return this.rgb().formatHex8()}function nD(){return B1(this).formatHsl()}function W0(){return this.rgb().formatRgb()}function ki(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=GB.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?H0(t):r===3?new Ft(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?va(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?va(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=QB.exec(e))?new Ft(t[1],t[2],t[3],1):(t=XB.exec(e))?new Ft(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=JB.exec(e))?va(t[1],t[2],t[3],t[4]):(t=ZB.exec(e))?va(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=eD.exec(e))?K0(t[1],t[2]/100,t[3]/100,1):(t=tD.exec(e))?K0(t[1],t[2]/100,t[3]/100,t[4]):F0.hasOwnProperty(e)?H0(F0[e]):e==="transparent"?new Ft(NaN,NaN,NaN,0):null}function H0(e){return new Ft(e>>16&255,e>>8&255,e&255,1)}function va(e,t,r,n){return n<=0&&(e=t=r=NaN),new Ft(e,t,r,n)}function iD(e){return e instanceof Gs||(e=ki(e)),e?(e=e.rgb(),new Ft(e.r,e.g,e.b,e.opacity)):new Ft}function Zh(e,t,r,n){return arguments.length===1?iD(e):new Ft(e,t,r,n??1)}function Ft(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}Sp(Ft,Zh,L1(Gs,{brighter(e){return e=e==null?wl:Math.pow(wl,e),new Ft(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ms:Math.pow(Ms,e),new Ft(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ft(xi(this.r),xi(this.g),xi(this.b),vl(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:V0,formatHex:V0,formatHex8:oD,formatRgb:q0,toString:q0}));function V0(){return`#${_i(this.r)}${_i(this.g)}${_i(this.b)}`}function oD(){return`#${_i(this.r)}${_i(this.g)}${_i(this.b)}${_i((isNaN(this.opacity)?1:this.opacity)*255)}`}function q0(){const e=vl(this.opacity);return`${e===1?"rgb(":"rgba("}${xi(this.r)}, ${xi(this.g)}, ${xi(this.b)}${e===1?")":`, ${e})`}`}function vl(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function xi(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function _i(e){return e=xi(e),(e<16?"0":"")+e.toString(16)}function K0(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new mr(e,t,r,n)}function B1(e){if(e instanceof mr)return new mr(e.h,e.s,e.l,e.opacity);if(e instanceof Gs||(e=ki(e)),!e)return new mr;if(e instanceof mr)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),i=Math.max(t,r,n),s=NaN,a=i-o,l=(i+o)/2;return a?(t===i?s=(r-n)/a+(r<n)*6:r===i?s=(n-t)/a+2:s=(t-r)/a+4,a/=l<.5?i+o:2-i-o,s*=60):a=l>0&&l<1?0:s,new mr(s,a,l,e.opacity)}function sD(e,t,r,n){return arguments.length===1?B1(e):new mr(e,t,r,n??1)}function mr(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}Sp(mr,sD,L1(Gs,{brighter(e){return e=e==null?wl:Math.pow(wl,e),new mr(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ms:Math.pow(Ms,e),new mr(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Ft(Bc(e>=240?e-240:e+120,o,n),Bc(e,o,n),Bc(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new mr(Y0(this.h),Ea(this.s),Ea(this.l),vl(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=vl(this.opacity);return`${e===1?"hsl(":"hsla("}${Y0(this.h)}, ${Ea(this.s)*100}%, ${Ea(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Y0(e){return e=(e||0)%360,e<0?e+360:e}function Ea(e){return Math.max(0,Math.min(1,e||0))}function Bc(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}const Ap=e=>()=>e;function aD(e,t){return function(r){return e+r*t}}function lD(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function uD(e){return(e=+e)==1?D1:function(t,r){return r-t?lD(t,r,e):Ap(isNaN(t)?r:t)}}function D1(e,t){var r=t-e;return r?aD(e,r):Ap(isNaN(e)?t:e)}const El=function e(t){var r=uD(t);function n(o,i){var s=r((o=Zh(o)).r,(i=Zh(i)).r),a=r(o.g,i.g),l=r(o.b,i.b),u=D1(o.opacity,i.opacity);return function(c){return o.r=s(c),o.g=a(c),o.b=l(c),o.opacity=u(c),o+""}}return n.gamma=e,n}(1);function cD(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),o;return function(i){for(o=0;o<r;++o)n[o]=e[o]*(1-i)+t[o]*i;return n}}function fD(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function hD(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,o=new Array(n),i=new Array(r),s;for(s=0;s<n;++s)o[s]=Tp(e[s],t[s]);for(;s<r;++s)i[s]=t[s];return function(a){for(s=0;s<n;++s)i[s]=o[s](a);return i}}function dD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}function pr(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}function pD(e,t){var r={},n={},o;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(o in t)o in e?r[o]=Tp(e[o],t[o]):n[o]=t[o];return function(i){for(o in r)n[o]=r[o](i);return n}}var ed=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Dc=new RegExp(ed.source,"g");function gD(e){return function(){return e}}function mD(e){return function(t){return e(t)+""}}function $1(e,t){var r=ed.lastIndex=Dc.lastIndex=0,n,o,i,s=-1,a=[],l=[];for(e=e+"",t=t+"";(n=ed.exec(e))&&(o=Dc.exec(t));)(i=o.index)>r&&(i=t.slice(r,i),a[s]?a[s]+=i:a[++s]=i),(n=n[0])===(o=o[0])?a[s]?a[s]+=o:a[++s]=o:(a[++s]=null,l.push({i:s,x:pr(n,o)})),r=Dc.lastIndex;return r<t.length&&(i=t.slice(r),a[s]?a[s]+=i:a[++s]=i),a.length<2?l[0]?mD(l[0].x):gD(t):(t=l.length,function(u){for(var c=0,d;c<t;++c)a[(d=l[c]).i]=d.x(u);return a.join("")})}function Tp(e,t){var r=typeof t,n;return t==null||r==="boolean"?Ap(t):(r==="number"?pr:r==="string"?(n=ki(t))?(t=n,El):$1:t instanceof ki?El:t instanceof Date?dD:fD(t)?cD:Array.isArray(t)?hD:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?pD:pr)(e,t)}function yD(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var z0=180/Math.PI,td={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function U1(e,t,r,n,o,i){var s,a,l;return(s=Math.sqrt(e*e+t*t))&&(e/=s,t/=s),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(a=Math.sqrt(r*r+n*n))&&(r/=a,n/=a,l/=a),e*n<t*r&&(e=-e,t=-t,l=-l,s=-s),{translateX:o,translateY:i,rotate:Math.atan2(t,e)*z0,skewX:Math.atan(l)*z0,scaleX:s,scaleY:a}}var Sa;function _D(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?td:U1(t.a,t.b,t.c,t.d,t.e,t.f)}function bD(e){return e==null||(Sa||(Sa=document.createElementNS("http://www.w3.org/2000/svg","g")),Sa.setAttribute("transform",e),!(e=Sa.transform.baseVal.consolidate()))?td:(e=e.matrix,U1(e.a,e.b,e.c,e.d,e.e,e.f))}function F1(e,t,r,n){function o(u){return u.length?u.pop()+" ":""}function i(u,c,d,p,g,_){if(u!==d||c!==p){var b=g.push("translate(",null,t,null,r);_.push({i:b-4,x:pr(u,d)},{i:b-2,x:pr(c,p)})}else(d||p)&&g.push("translate("+d+t+p+r)}function s(u,c,d,p){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),p.push({i:d.push(o(d)+"rotate(",null,n)-2,x:pr(u,c)})):c&&d.push(o(d)+"rotate("+c+n)}function a(u,c,d,p){u!==c?p.push({i:d.push(o(d)+"skewX(",null,n)-2,x:pr(u,c)}):c&&d.push(o(d)+"skewX("+c+n)}function l(u,c,d,p,g,_){if(u!==d||c!==p){var b=g.push(o(g)+"scale(",null,",",null,")");_.push({i:b-4,x:pr(u,d)},{i:b-2,x:pr(c,p)})}else(d!==1||p!==1)&&g.push(o(g)+"scale("+d+","+p+")")}return function(u,c){var d=[],p=[];return u=e(u),c=e(c),i(u.translateX,u.translateY,c.translateX,c.translateY,d,p),s(u.rotate,c.rotate,d,p),a(u.skewX,c.skewX,d,p),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,d,p),u=c=null,function(g){for(var _=-1,b=p.length,x;++_<b;)d[(x=p[_]).i]=x.x(g);return d.join("")}}}var wD=F1(_D,"px, ","px)","deg)"),vD=F1(bD,", ",")",")"),Mo=0,ps=0,is=0,j1=1e3,Sl,gs,Al=0,Ni=0,Eu=0,Ls=typeof performance=="object"&&performance.now?performance:Date,W1=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function xp(){return Ni||(W1(ED),Ni=Ls.now()+Eu)}function ED(){Ni=0}function Tl(){this._call=this._time=this._next=null}Tl.prototype=H1.prototype={constructor:Tl,restart:function(e,t,r){if(typeof e!="function")throw new TypeError("callback is not a function");r=(r==null?xp():+r)+(t==null?0:+t),!this._next&&gs!==this&&(gs?gs._next=this:Sl=this,gs=this),this._call=e,this._time=r,rd()},stop:function(){this._call&&(this._call=null,this._time=1/0,rd())}};function H1(e,t,r){var n=new Tl;return n.restart(e,t,r),n}function SD(){xp(),++Mo;for(var e=Sl,t;e;)(t=Ni-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Mo}function G0(){Ni=(Al=Ls.now())+Eu,Mo=ps=0;try{SD()}finally{Mo=0,TD(),Ni=0}}function AD(){var e=Ls.now(),t=e-Al;t>j1&&(Eu-=t,Al=e)}function TD(){for(var e,t=Sl,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:Sl=r);gs=e,rd(n)}function rd(e){if(!Mo){ps&&(ps=clearTimeout(ps));var t=e-Ni;t>24?(e<1/0&&(ps=setTimeout(G0,e-Ls.now()-Eu)),is&&(is=clearInterval(is))):(is||(Al=Ls.now(),is=setInterval(AD,j1)),Mo=1,W1(G0))}}function Q0(e,t,r){var n=new Tl;return t=t==null?0:+t,n.restart(o=>{n.stop(),e(o+t)},t,r),n}var xD=E1("start","end","cancel","interrupt"),ID=[],V1=0,X0=1,nd=2,Qa=3,J0=4,id=5,Xa=6;function Su(e,t,r,n,o,i){var s=e.__transition;if(!s)e.__transition={};else if(r in s)return;CD(e,r,{name:t,index:n,group:o,on:xD,tween:ID,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:V1})}function Ip(e,t){var r=wr(e,t);if(r.state>V1)throw new Error("too late; already scheduled");return r}function Wr(e,t){var r=wr(e,t);if(r.state>Qa)throw new Error("too late; already running");return r}function wr(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function CD(e,t,r){var n=e.__transition,o;n[t]=r,r.timer=H1(i,0,r.time);function i(u){r.state=X0,r.timer.restart(s,r.delay,r.time),r.delay<=u&&s(u-r.delay)}function s(u){var c,d,p,g;if(r.state!==X0)return l();for(c in n)if(g=n[c],g.name===r.name){if(g.state===Qa)return Q0(s);g.state===J0?(g.state=Xa,g.timer.stop(),g.on.call("interrupt",e,e.__data__,g.index,g.group),delete n[c]):+c<t&&(g.state=Xa,g.timer.stop(),g.on.call("cancel",e,e.__data__,g.index,g.group),delete n[c])}if(Q0(function(){r.state===Qa&&(r.state=J0,r.timer.restart(a,r.delay,r.time),a(u))}),r.state=nd,r.on.call("start",e,e.__data__,r.index,r.group),r.state===nd){for(r.state=Qa,o=new Array(p=r.tween.length),c=0,d=-1;c<p;++c)(g=r.tween[c].value.call(e,e.__data__,r.index,r.group))&&(o[++d]=g);o.length=d+1}}function a(u){for(var c=u<r.duration?r.ease.call(null,u/r.duration):(r.timer.restart(l),r.state=id,1),d=-1,p=o.length;++d<p;)o[d].call(e,c);r.state===id&&(r.on.call("end",e,e.__data__,r.index,r.group),l())}function l(){r.state=Xa,r.timer.stop(),delete n[t];for(var u in n)return;delete e.__transition}}function RD(e,t){var r=e.__transition,n,o,i=!0,s;if(r){t=t==null?null:t+"";for(s in r){if((n=r[s]).name!==t){i=!1;continue}o=n.state>nd&&n.state<id,n.state=Xa,n.timer.stop(),n.on.call(o?"interrupt":"cancel",e,e.__data__,n.index,n.group),delete r[s]}i&&delete e.__transition}}function OD(e){return this.each(function(){RD(this,e)})}function kD(e,t){var r,n;return function(){var o=Wr(this,e),i=o.tween;if(i!==r){n=r=i;for(var s=0,a=n.length;s<a;++s)if(n[s].name===t){n=n.slice(),n.splice(s,1);break}}o.tween=n}}function ND(e,t,r){var n,o;if(typeof r!="function")throw new Error;return function(){var i=Wr(this,e),s=i.tween;if(s!==n){o=(n=s).slice();for(var a={name:t,value:r},l=0,u=o.length;l<u;++l)if(o[l].name===t){o[l]=a;break}l===u&&o.push(a)}i.tween=o}}function MD(e,t){var r=this._id;if(e+="",arguments.length<2){for(var n=wr(this.node(),r).tween,o=0,i=n.length,s;o<i;++o)if((s=n[o]).name===e)return s.value;return null}return this.each((t==null?kD:ND)(r,e,t))}function Cp(e,t,r){var n=e._id;return e.each(function(){var o=Wr(this,n);(o.value||(o.value={}))[t]=r.apply(this,arguments)}),function(o){return wr(o,n).value[t]}}function q1(e,t){var r;return(typeof t=="number"?pr:t instanceof ki?El:(r=ki(t))?(t=r,El):$1)(e,t)}function PD(e){return function(){this.removeAttribute(e)}}function LD(e){return function(){this.removeAttributeNS(e.space,e.local)}}function BD(e,t,r){var n,o=r+"",i;return function(){var s=this.getAttribute(e);return s===o?null:s===n?i:i=t(n=s,r)}}function DD(e,t,r){var n,o=r+"",i;return function(){var s=this.getAttributeNS(e.space,e.local);return s===o?null:s===n?i:i=t(n=s,r)}}function $D(e,t,r){var n,o,i;return function(){var s,a=r(this),l;return a==null?void this.removeAttribute(e):(s=this.getAttribute(e),l=a+"",s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a)))}}function UD(e,t,r){var n,o,i;return function(){var s,a=r(this),l;return a==null?void this.removeAttributeNS(e.space,e.local):(s=this.getAttributeNS(e.space,e.local),l=a+"",s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a)))}}function FD(e,t){var r=vu(e),n=r==="transform"?vD:q1;return this.attrTween(e,typeof t=="function"?(r.local?UD:$D)(r,n,Cp(this,"attr."+e,t)):t==null?(r.local?LD:PD)(r):(r.local?DD:BD)(r,n,t))}function jD(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}function WD(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}function HD(e,t){var r,n;function o(){var i=t.apply(this,arguments);return i!==n&&(r=(n=i)&&WD(e,i)),r}return o._value=t,o}function VD(e,t){var r,n;function o(){var i=t.apply(this,arguments);return i!==n&&(r=(n=i)&&jD(e,i)),r}return o._value=t,o}function qD(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;var n=vu(e);return this.tween(r,(n.local?HD:VD)(n,t))}function KD(e,t){return function(){Ip(this,e).delay=+t.apply(this,arguments)}}function YD(e,t){return t=+t,function(){Ip(this,e).delay=t}}function zD(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?KD:YD)(t,e)):wr(this.node(),t).delay}function GD(e,t){return function(){Wr(this,e).duration=+t.apply(this,arguments)}}function QD(e,t){return t=+t,function(){Wr(this,e).duration=t}}function XD(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?GD:QD)(t,e)):wr(this.node(),t).duration}function JD(e,t){if(typeof t!="function")throw new Error;return function(){Wr(this,e).ease=t}}function ZD(e){var t=this._id;return arguments.length?this.each(JD(t,e)):wr(this.node(),t).ease}function e$(e,t){return function(){var r=t.apply(this,arguments);if(typeof r!="function")throw new Error;Wr(this,e).ease=r}}function t$(e){if(typeof e!="function")throw new Error;return this.each(e$(this._id,e))}function r$(e){typeof e!="function"&&(e=T1(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=[],l,u=0;u<s;++u)(l=i[u])&&e.call(l,l.__data__,u,i)&&a.push(l);return new dn(n,this._parents,this._name,this._id)}function n$(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,n=t.length,o=r.length,i=Math.min(n,o),s=new Array(n),a=0;a<i;++a)for(var l=t[a],u=r[a],c=l.length,d=s[a]=new Array(c),p,g=0;g<c;++g)(p=l[g]||u[g])&&(d[g]=p);for(;a<n;++a)s[a]=t[a];return new dn(s,this._parents,this._name,this._id)}function i$(e){return(e+"").trim().split(/^|\s+/).every(function(t){var r=t.indexOf(".");return r>=0&&(t=t.slice(0,r)),!t||t==="start"})}function o$(e,t,r){var n,o,i=i$(t)?Ip:Wr;return function(){var s=i(this,e),a=s.on;a!==n&&(o=(n=a).copy()).on(t,r),s.on=o}}function s$(e,t){var r=this._id;return arguments.length<2?wr(this.node(),r).on.on(e):this.each(o$(r,e,t))}function a$(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function l$(){return this.on("end.remove",a$(this._id))}function u$(e){var t=this._name,r=this._id;typeof e!="function"&&(e=vp(e));for(var n=this._groups,o=n.length,i=new Array(o),s=0;s<o;++s)for(var a=n[s],l=a.length,u=i[s]=new Array(l),c,d,p=0;p<l;++p)(c=a[p])&&(d=e.call(c,c.__data__,p,a))&&("__data__"in c&&(d.__data__=c.__data__),u[p]=d,Su(u[p],t,r,p,u,wr(c,r)));return new dn(i,this._parents,t,r)}function c$(e){var t=this._name,r=this._id;typeof e!="function"&&(e=A1(e));for(var n=this._groups,o=n.length,i=[],s=[],a=0;a<o;++a)for(var l=n[a],u=l.length,c,d=0;d<u;++d)if(c=l[d]){for(var p=e.call(c,c.__data__,d,l),g,_=wr(c,r),b=0,x=p.length;b<x;++b)(g=p[b])&&Su(g,t,r,b,p,_);i.push(p),s.push(c)}return new dn(i,s,t,r)}var f$=zs.prototype.constructor;function h$(){return new f$(this._groups,this._parents)}function d$(e,t){var r,n,o;return function(){var i=No(this,e),s=(this.style.removeProperty(e),No(this,e));return i===s?null:i===r&&s===n?o:o=t(r=i,n=s)}}function K1(e){return function(){this.style.removeProperty(e)}}function p$(e,t,r){var n,o=r+"",i;return function(){var s=No(this,e);return s===o?null:s===n?i:i=t(n=s,r)}}function g$(e,t,r){var n,o,i;return function(){var s=No(this,e),a=r(this),l=a+"";return a==null&&(l=a=(this.style.removeProperty(e),No(this,e))),s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a))}}function m$(e,t){var r,n,o,i="style."+t,s="end."+i,a;return function(){var l=Wr(this,e),u=l.on,c=l.value[i]==null?a||(a=K1(t)):void 0;(u!==r||o!==c)&&(n=(r=u).copy()).on(s,o=c),l.on=n}}function y$(e,t,r){var n=(e+="")=="transform"?wD:q1;return t==null?this.styleTween(e,d$(e,n)).on("end.style."+e,K1(e)):typeof t=="function"?this.styleTween(e,g$(e,n,Cp(this,"style."+e,t))).each(m$(this._id,e)):this.styleTween(e,p$(e,n,t),r).on("end.style."+e,null)}function _$(e,t,r){return function(n){this.style.setProperty(e,t.call(this,n),r)}}function b$(e,t,r){var n,o;function i(){var s=t.apply(this,arguments);return s!==o&&(n=(o=s)&&_$(e,s,r)),n}return i._value=t,i}function w$(e,t,r){var n="style."+(e+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,b$(e,t,r??""))}function v$(e){return function(){this.textContent=e}}function E$(e){return function(){var t=e(this);this.textContent=t??""}}function S$(e){return this.tween("text",typeof e=="function"?E$(Cp(this,"text",e)):v$(e==null?"":e+""))}function A$(e){return function(t){this.textContent=e.call(this,t)}}function T$(e){var t,r;function n(){var o=e.apply(this,arguments);return o!==r&&(t=(r=o)&&A$(o)),t}return n._value=e,n}function x$(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,T$(e))}function I$(){for(var e=this._name,t=this._id,r=Y1(),n=this._groups,o=n.length,i=0;i<o;++i)for(var s=n[i],a=s.length,l,u=0;u<a;++u)if(l=s[u]){var c=wr(l,t);Su(l,e,r,u,s,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new dn(n,this._parents,e,r)}function C$(){var e,t,r=this,n=r._id,o=r.size();return new Promise(function(i,s){var a={value:s},l={value:function(){--o===0&&i()}};r.each(function(){var u=Wr(this,n),c=u.on;c!==e&&(t=(e=c).copy(),t._.cancel.push(a),t._.interrupt.push(a),t._.end.push(l)),u.on=t}),o===0&&i()})}var R$=0;function dn(e,t,r,n){this._groups=e,this._parents=t,this._name=r,this._id=n}function Y1(){return++R$}var qr=zs.prototype;dn.prototype={constructor:dn,select:u$,selectAll:c$,selectChild:qr.selectChild,selectChildren:qr.selectChildren,filter:r$,merge:n$,selection:h$,transition:I$,call:qr.call,nodes:qr.nodes,node:qr.node,size:qr.size,empty:qr.empty,each:qr.each,on:s$,attr:FD,attrTween:qD,style:y$,styleTween:w$,text:S$,textTween:x$,remove:l$,tween:MD,delay:zD,duration:XD,ease:ZD,easeVarying:t$,end:C$,[Symbol.iterator]:qr[Symbol.iterator]};const f3=e=>+e;function O$(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var k$={time:null,delay:0,duration:250,ease:O$};function N$(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function M$(e){var t,r;e instanceof dn?(t=e._id,e=e._name):(t=Y1(),(r=k$).time=xp(),e=e==null?null:e+"");for(var n=this._groups,o=n.length,i=0;i<o;++i)for(var s=n[i],a=s.length,l,u=0;u<a;++u)(l=s[u])&&Su(l,e,t,u,s,r||N$(l,t));return new dn(n,this._parents,e,t)}zs.prototype.interrupt=OD;zs.prototype.transition=M$;const od=Math.PI,sd=2*od,ai=1e-6,P$=sd-ai;function z1(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function L$(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return z1;const r=10**t;return function(n){this._+=n[0];for(let o=1,i=n.length;o<i;++o)this._+=Math.round(arguments[o]*r)/r+n[o]}}class B${constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?z1:L$(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,o){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+o}`}bezierCurveTo(t,r,n,o,i,s){this._append`C${+t},${+r},${+n},${+o},${this._x1=+i},${this._y1=+s}`}arcTo(t,r,n,o,i){if(t=+t,r=+r,n=+n,o=+o,i=+i,i<0)throw new Error(`negative radius: ${i}`);let s=this._x1,a=this._y1,l=n-t,u=o-r,c=s-t,d=a-r,p=c*c+d*d;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>ai)if(!(Math.abs(d*l-u*c)>ai)||!i)this._append`L${this._x1=t},${this._y1=r}`;else{let g=n-s,_=o-a,b=l*l+u*u,x=g*g+_*_,k=Math.sqrt(b),R=Math.sqrt(p),A=i*Math.tan((od-Math.acos((b+p-x)/(2*k*R)))/2),B=A/R,$=A/k;Math.abs(B-1)>ai&&this._append`L${t+B*c},${r+B*d}`,this._append`A${i},${i},0,0,${+(d*g>c*_)},${this._x1=t+$*l},${this._y1=r+$*u}`}}arc(t,r,n,o,i,s){if(t=+t,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let a=n*Math.cos(o),l=n*Math.sin(o),u=t+a,c=r+l,d=1^s,p=s?o-i:i-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>ai||Math.abs(this._y1-c)>ai)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%sd+sd),p>P$?this._append`A${n},${n},0,1,${d},${t-a},${r-l}A${n},${n},0,1,${d},${this._x1=u},${this._y1=c}`:p>ai&&this._append`A${n},${n},0,${+(p>=od)},${d},${this._x1=t+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}}function D$(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function xl(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Po(e){return e=xl(Math.abs(e)),e?e[1]:NaN}function $$(e,t){return function(r,n){for(var o=r.length,i=[],s=0,a=e[0],l=0;o>0&&a>0&&(l+a+1>n&&(a=Math.max(1,n-l)),i.push(r.substring(o-=a,o+a)),!((l+=a+1)>n));)a=e[s=(s+1)%e.length];return i.reverse().join(t)}}function U$(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var F$=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Il(e){if(!(t=F$.exec(e)))throw new Error("invalid format: "+e);var t;return new Rp({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Il.prototype=Rp.prototype;function Rp(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Rp.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function j$(e){e:for(var t=e.length,r=1,n=-1,o;r<t;++r)switch(e[r]){case".":n=o=r;break;case"0":n===0&&(n=r),o=r;break;default:if(!+e[r])break e;n>0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var G1;function W$(e,t){var r=xl(e,t);if(!r)return e+"";var n=r[0],o=r[1],i=o-(G1=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,s=n.length;return i===s?n:i>s?n+new Array(i-s+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+xl(e,Math.max(0,t+i-1))[0]}function Z0(e,t){var r=xl(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}const ey={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:D$,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Z0(e*100,t),r:Z0,s:W$,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function ty(e){return e}var ry=Array.prototype.map,ny=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function H$(e){var t=e.grouping===void 0||e.thousands===void 0?ty:$$(ry.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?ty:U$(ry.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",a=e.minus===void 0?"−":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function u(d){d=Il(d);var p=d.fill,g=d.align,_=d.sign,b=d.symbol,x=d.zero,k=d.width,R=d.comma,A=d.precision,B=d.trim,$=d.type;$==="n"?(R=!0,$="g"):ey[$]||(A===void 0&&(A=12),B=!0,$="g"),(x||p==="0"&&g==="=")&&(x=!0,p="0",g="=");var I=b==="$"?r:b==="#"&&/[boxX]/.test($)?"0"+$.toLowerCase():"",P=b==="$"?n:/[%p]/.test($)?s:"",W=ey[$],Y=/[defgprs%]/.test($);A=A===void 0?6:/[gprs]/.test($)?Math.max(1,Math.min(21,A)):Math.max(0,Math.min(20,A));function oe(te){var M=I,L=P,ie,re,ae;if($==="c")L=W(te)+L,te="";else{te=+te;var se=te<0||1/te<0;if(te=isNaN(te)?l:W(Math.abs(te),A),B&&(te=j$(te)),se&&+te==0&&_!=="+"&&(se=!1),M=(se?_==="("?_:a:_==="-"||_==="("?"":_)+M,L=($==="s"?ny[8+G1/3]:"")+L+(se&&_==="("?")":""),Y){for(ie=-1,re=te.length;++ie<re;)if(ae=te.charCodeAt(ie),48>ae||ae>57){L=(ae===46?o+te.slice(ie+1):te.slice(ie))+L,te=te.slice(0,ie);break}}}R&&!x&&(te=t(te,1/0));var Q=M.length+te.length+L.length,he=Q<k?new Array(k-Q+1).join(p):"";switch(R&&x&&(te=t(he+te,he.length?k-L.length:1/0),he=""),g){case"<":te=M+te+L+he;break;case"=":te=M+he+te+L;break;case"^":te=he.slice(0,Q=he.length>>1)+M+te+L+he.slice(Q);break;default:te=he+M+te+L;break}return i(te)}return oe.toString=function(){return d+""},oe}function c(d,p){var g=u((d=Il(d),d.type="f",d)),_=Math.max(-8,Math.min(8,Math.floor(Po(p)/3)))*3,b=Math.pow(10,-_),x=ny[8+_/3];return function(k){return g(b*k)+x}}return{format:u,formatPrefix:c}}var Aa,Q1,X1;V$({thousands:",",grouping:[3],currency:["$",""]});function V$(e){return Aa=H$(e),Q1=Aa.format,X1=Aa.formatPrefix,Aa}function q$(e){return Math.max(0,-Po(Math.abs(e)))}function K$(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Po(t)/3)))*3-Po(Math.abs(e)))}function Y$(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Po(t)-Po(e))+1}function Au(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}const iy=Symbol("implicit");function J1(){var e=new L0,t=[],r=[],n=iy;function o(i){let s=e.get(i);if(s===void 0){if(n!==iy)return n;e.set(i,s=t.push(i)-1)}return r[s%r.length]}return o.domain=function(i){if(!arguments.length)return t.slice();t=[],e=new L0;for(const s of i)e.has(s)||e.set(s,t.push(s)-1);return o},o.range=function(i){return arguments.length?(r=Array.from(i),o):r.slice()},o.unknown=function(i){return arguments.length?(n=i,o):n},o.copy=function(){return J1(t,r).unknown(n)},Au.apply(o,arguments),o}function z$(){var e=J1().unknown(void 0),t=e.domain,r=e.range,n=0,o=1,i,s,a=!1,l=0,u=0,c=.5;delete e.unknown;function d(){var p=t().length,g=o<n,_=g?o:n,b=g?n:o;i=(b-_)/Math.max(1,p-l+u*2),a&&(i=Math.floor(i)),_+=(b-_-i*(p-l))*c,s=i*(1-l),a&&(_=Math.round(_),s=Math.round(s));var x=aL(p).map(function(k){return _+i*k});return r(g?x.reverse():x)}return e.domain=function(p){return arguments.length?(t(p),d()):t()},e.range=function(p){return arguments.length?([n,o]=p,n=+n,o=+o,d()):[n,o]},e.rangeRound=function(p){return[n,o]=p,n=+n,o=+o,a=!0,d()},e.bandwidth=function(){return s},e.step=function(){return i},e.round=function(p){return arguments.length?(a=!!p,d()):a},e.padding=function(p){return arguments.length?(l=Math.min(1,u=+p),d()):l},e.paddingInner=function(p){return arguments.length?(l=Math.min(1,p),d()):l},e.paddingOuter=function(p){return arguments.length?(u=+p,d()):u},e.align=function(p){return arguments.length?(c=Math.max(0,Math.min(1,p)),d()):c},e.copy=function(){return z$(t(),[n,o]).round(a).paddingInner(l).paddingOuter(u).align(c)},Au.apply(d(),arguments)}function G$(e){return function(){return e}}function Q$(e){return+e}var oy=[0,1];function lo(e){return e}function ad(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:G$(isNaN(t)?NaN:.5)}function X$(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function J$(e,t,r){var n=e[0],o=e[1],i=t[0],s=t[1];return o<n?(n=ad(o,n),i=r(s,i)):(n=ad(n,o),i=r(i,s)),function(a){return i(n(a))}}function Z$(e,t,r){var n=Math.min(e.length,t.length)-1,o=new Array(n),i=new Array(n),s=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++s<n;)o[s]=ad(e[s],e[s+1]),i[s]=r(t[s],t[s+1]);return function(a){var l=ZP(e,a,1,n)-1;return i[l](o[l](a))}}function Z1(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function eU(){var e=oy,t=oy,r=Tp,n,o,i,s=lo,a,l,u;function c(){var p=Math.min(e.length,t.length);return s!==lo&&(s=X$(e[0],e[p-1])),a=p>2?Z$:J$,l=u=null,d}function d(p){return p==null||isNaN(p=+p)?i:(l||(l=a(e.map(n),t,r)))(n(s(p)))}return d.invert=function(p){return s(o((u||(u=a(t,e.map(n),pr)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,Q$),c()):e.slice()},d.range=function(p){return arguments.length?(t=Array.from(p),c()):t.slice()},d.rangeRound=function(p){return t=Array.from(p),r=yD,c()},d.clamp=function(p){return arguments.length?(s=p?!0:lo,c()):s!==lo},d.interpolate=function(p){return arguments.length?(r=p,c()):r},d.unknown=function(p){return arguments.length?(i=p,d):i},function(p,g){return n=p,o=g,c()}}function eE(){return eU()(lo,lo)}function tU(e,t,r,n){var o=Qh(e,t,r),i;switch(n=Il(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(i=K$(o,s))&&(n.precision=i),X1(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=Y$(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=q$(o))&&(n.precision=i-(n.type==="%")*2);break}}return Q1(n)}function rU(e){var t=e.domain;return e.ticks=function(r){var n=t();return sL(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return tU(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,i=n.length-1,s=n[o],a=n[i],l,u,c=10;for(a<s&&(u=s,s=a,a=u,u=o,o=i,i=u);c-- >0;){if(u=Gh(s,a,r),u===l)return n[o]=s,n[i]=a,t(n);if(u>0)s=Math.floor(s/u)*u,a=Math.ceil(a/u)*u;else if(u<0)s=Math.ceil(s*u)/u,a=Math.floor(a*u)/u;else break;l=u}return e},e}function nU(){var e=eE();return e.copy=function(){return Z1(e,nU())},Au.apply(e,arguments),rU(e)}function iU(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],i=e[n],s;return i<o&&(s=r,r=n,n=s,s=o,o=i,i=s),e[r]=t.floor(o),e[n]=t.ceil(i),e}const $c=new Date,Uc=new Date;function gt(e,t,r,n){function o(i){return e(i=arguments.length===0?new Date:new Date(+i)),i}return o.floor=i=>(e(i=new Date(+i)),i),o.ceil=i=>(e(i=new Date(i-1)),t(i,1),e(i),i),o.round=i=>{const s=o(i),a=o.ceil(i);return i-s<a-i?s:a},o.offset=(i,s)=>(t(i=new Date(+i),s==null?1:Math.floor(s)),i),o.range=(i,s,a)=>{const l=[];if(i=o.ceil(i),a=a==null?1:Math.floor(a),!(i<s)||!(a>0))return l;let u;do l.push(u=new Date(+i)),t(i,a),e(i);while(u<i&&i<s);return l},o.filter=i=>gt(s=>{if(s>=s)for(;e(s),!i(s);)s.setTime(s-1)},(s,a)=>{if(s>=s)if(a<0)for(;++a<=0;)for(;t(s,-1),!i(s););else for(;--a>=0;)for(;t(s,1),!i(s););}),r&&(o.count=(i,s)=>($c.setTime(+i),Uc.setTime(+s),e($c),e(Uc),Math.floor(r($c,Uc))),o.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?o.filter(n?s=>n(s)%i===0:s=>o.count(0,s)%i===0):o)),o}const Cl=gt(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Cl.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?gt(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Cl);Cl.range;const tn=1e3,rr=tn*60,rn=rr*60,pn=rn*24,Op=pn*7,sy=pn*30,Fc=pn*365,uo=gt(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*tn)},(e,t)=>(t-e)/tn,e=>e.getUTCSeconds());uo.range;const kp=gt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*tn)},(e,t)=>{e.setTime(+e+t*rr)},(e,t)=>(t-e)/rr,e=>e.getMinutes());kp.range;const oU=gt(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*rr)},(e,t)=>(t-e)/rr,e=>e.getUTCMinutes());oU.range;const Np=gt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*tn-e.getMinutes()*rr)},(e,t)=>{e.setTime(+e+t*rn)},(e,t)=>(t-e)/rn,e=>e.getHours());Np.range;const sU=gt(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*rn)},(e,t)=>(t-e)/rn,e=>e.getUTCHours());sU.range;const Qs=gt(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*rr)/pn,e=>e.getDate()-1);Qs.range;const Mp=gt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/pn,e=>e.getUTCDate()-1);Mp.range;const aU=gt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/pn,e=>Math.floor(e/pn));aU.range;function Yi(e){return gt(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*rr)/Op)}const Tu=Yi(0),Rl=Yi(1),lU=Yi(2),uU=Yi(3),Lo=Yi(4),cU=Yi(5),fU=Yi(6);Tu.range;Rl.range;lU.range;uU.range;Lo.range;cU.range;fU.range;function zi(e){return gt(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/Op)}const tE=zi(0),Ol=zi(1),hU=zi(2),dU=zi(3),Bo=zi(4),pU=zi(5),gU=zi(6);tE.range;Ol.range;hU.range;dU.range;Bo.range;pU.range;gU.range;const Pp=gt(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Pp.range;const mU=gt(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());mU.range;const gn=gt(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());gn.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:gt(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});gn.range;const Mi=gt(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Mi.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:gt(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});Mi.range;function yU(e,t,r,n,o,i){const s=[[uo,1,tn],[uo,5,5*tn],[uo,15,15*tn],[uo,30,30*tn],[i,1,rr],[i,5,5*rr],[i,15,15*rr],[i,30,30*rr],[o,1,rn],[o,3,3*rn],[o,6,6*rn],[o,12,12*rn],[n,1,pn],[n,2,2*pn],[r,1,Op],[t,1,sy],[t,3,3*sy],[e,1,Fc]];function a(u,c,d){const p=c<u;p&&([u,c]=[c,u]);const g=d&&typeof d.range=="function"?d:l(u,c,d),_=g?g.range(u,+c+1):[];return p?_.reverse():_}function l(u,c,d){const p=Math.abs(c-u)/d,g=wp(([,,x])=>x).right(s,p);if(g===s.length)return e.every(Qh(u/Fc,c/Fc,d));if(g===0)return Cl.every(Math.max(Qh(u,c,d),1));const[_,b]=s[p/s[g-1][2]<s[g][2]/p?g-1:g];return _.every(b)}return[a,l]}const[_U,bU]=yU(gn,Pp,Tu,Qs,Np,kp);function jc(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Wc(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function os(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function wU(e){var t=e.dateTime,r=e.date,n=e.time,o=e.periods,i=e.days,s=e.shortDays,a=e.months,l=e.shortMonths,u=ss(o),c=as(o),d=ss(i),p=as(i),g=ss(s),_=as(s),b=ss(a),x=as(a),k=ss(l),R=as(l),A={a:se,A:Q,b:he,B:fe,c:null,d:hy,e:hy,f:HU,g:ZU,G:tF,H:FU,I:jU,j:WU,L:rE,m:VU,M:qU,p:pe,q:F,Q:gy,s:my,S:KU,u:YU,U:zU,V:GU,w:QU,W:XU,x:null,X:null,y:JU,Y:eF,Z:rF,"%":py},B={a:ne,A:ge,b:Se,B:ye,c:null,d:dy,e:dy,f:sF,g:mF,G:_F,H:nF,I:iF,j:oF,L:iE,m:aF,M:lF,p:V,q:j,Q:gy,s:my,S:uF,u:cF,U:fF,V:hF,w:dF,W:pF,x:null,X:null,y:gF,Y:yF,Z:bF,"%":py},$={a:oe,A:te,b:M,B:L,c:ie,d:cy,e:cy,f:BU,g:uy,G:ly,H:fy,I:fy,j:NU,L:LU,m:kU,M:MU,p:Y,q:OU,Q:$U,s:UU,S:PU,u:TU,U:xU,V:IU,w:AU,W:CU,x:re,X:ae,y:uy,Y:ly,Z:RU,"%":DU};A.x=I(r,A),A.X=I(n,A),A.c=I(t,A),B.x=I(r,B),B.X=I(n,B),B.c=I(t,B);function I(Z,ue){return function(le){var X=[],E=-1,T=0,S=Z.length,O,N,ee;for(le instanceof Date||(le=new Date(+le));++E<S;)Z.charCodeAt(E)===37&&(X.push(Z.slice(T,E)),(N=ay[O=Z.charAt(++E)])!=null?O=Z.charAt(++E):N=O==="e"?" ":"0",(ee=ue[O])&&(O=ee(le,N)),X.push(O),T=E+1);return X.push(Z.slice(T,E)),X.join("")}}function P(Z,ue){return function(le){var X=os(1900,void 0,1),E=W(X,Z,le+="",0),T,S;if(E!=le.length)return null;if("Q"in X)return new Date(X.Q);if("s"in X)return new Date(X.s*1e3+("L"in X?X.L:0));if(ue&&!("Z"in X)&&(X.Z=0),"p"in X&&(X.H=X.H%12+X.p*12),X.m===void 0&&(X.m="q"in X?X.q:0),"V"in X){if(X.V<1||X.V>53)return null;"w"in X||(X.w=1),"Z"in X?(T=Wc(os(X.y,0,1)),S=T.getUTCDay(),T=S>4||S===0?Ol.ceil(T):Ol(T),T=Mp.offset(T,(X.V-1)*7),X.y=T.getUTCFullYear(),X.m=T.getUTCMonth(),X.d=T.getUTCDate()+(X.w+6)%7):(T=jc(os(X.y,0,1)),S=T.getDay(),T=S>4||S===0?Rl.ceil(T):Rl(T),T=Qs.offset(T,(X.V-1)*7),X.y=T.getFullYear(),X.m=T.getMonth(),X.d=T.getDate()+(X.w+6)%7)}else("W"in X||"U"in X)&&("w"in X||(X.w="u"in X?X.u%7:"W"in X?1:0),S="Z"in X?Wc(os(X.y,0,1)).getUTCDay():jc(os(X.y,0,1)).getDay(),X.m=0,X.d="W"in X?(X.w+6)%7+X.W*7-(S+5)%7:X.w+X.U*7-(S+6)%7);return"Z"in X?(X.H+=X.Z/100|0,X.M+=X.Z%100,Wc(X)):jc(X)}}function W(Z,ue,le,X){for(var E=0,T=ue.length,S=le.length,O,N;E<T;){if(X>=S)return-1;if(O=ue.charCodeAt(E++),O===37){if(O=ue.charAt(E++),N=$[O in ay?ue.charAt(E++):O],!N||(X=N(Z,le,X))<0)return-1}else if(O!=le.charCodeAt(X++))return-1}return X}function Y(Z,ue,le){var X=u.exec(ue.slice(le));return X?(Z.p=c.get(X[0].toLowerCase()),le+X[0].length):-1}function oe(Z,ue,le){var X=g.exec(ue.slice(le));return X?(Z.w=_.get(X[0].toLowerCase()),le+X[0].length):-1}function te(Z,ue,le){var X=d.exec(ue.slice(le));return X?(Z.w=p.get(X[0].toLowerCase()),le+X[0].length):-1}function M(Z,ue,le){var X=k.exec(ue.slice(le));return X?(Z.m=R.get(X[0].toLowerCase()),le+X[0].length):-1}function L(Z,ue,le){var X=b.exec(ue.slice(le));return X?(Z.m=x.get(X[0].toLowerCase()),le+X[0].length):-1}function ie(Z,ue,le){return W(Z,t,ue,le)}function re(Z,ue,le){return W(Z,r,ue,le)}function ae(Z,ue,le){return W(Z,n,ue,le)}function se(Z){return s[Z.getDay()]}function Q(Z){return i[Z.getDay()]}function he(Z){return l[Z.getMonth()]}function fe(Z){return a[Z.getMonth()]}function pe(Z){return o[+(Z.getHours()>=12)]}function F(Z){return 1+~~(Z.getMonth()/3)}function ne(Z){return s[Z.getUTCDay()]}function ge(Z){return i[Z.getUTCDay()]}function Se(Z){return l[Z.getUTCMonth()]}function ye(Z){return a[Z.getUTCMonth()]}function V(Z){return o[+(Z.getUTCHours()>=12)]}function j(Z){return 1+~~(Z.getUTCMonth()/3)}return{format:function(Z){var ue=I(Z+="",A);return ue.toString=function(){return Z},ue},parse:function(Z){var ue=P(Z+="",!1);return ue.toString=function(){return Z},ue},utcFormat:function(Z){var ue=I(Z+="",B);return ue.toString=function(){return Z},ue},utcParse:function(Z){var ue=P(Z+="",!0);return ue.toString=function(){return Z},ue}}}var ay={"-":"",_:" ",0:"0"},bt=/^\s*\d+/,vU=/^%/,EU=/[\\^$*+?|[\]().{}]/g;function je(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",i=o.length;return n+(i<r?new Array(r-i+1).join(t)+o:o)}function SU(e){return e.replace(EU,"\\$&")}function ss(e){return new RegExp("^(?:"+e.map(SU).join("|")+")","i")}function as(e){return new Map(e.map((t,r)=>[t.toLowerCase(),r]))}function AU(e,t,r){var n=bt.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function TU(e,t,r){var n=bt.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function xU(e,t,r){var n=bt.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function IU(e,t,r){var n=bt.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function CU(e,t,r){var n=bt.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function ly(e,t,r){var n=bt.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function uy(e,t,r){var n=bt.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function RU(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function OU(e,t,r){var n=bt.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function kU(e,t,r){var n=bt.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function cy(e,t,r){var n=bt.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function NU(e,t,r){var n=bt.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function fy(e,t,r){var n=bt.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function MU(e,t,r){var n=bt.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function PU(e,t,r){var n=bt.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function LU(e,t,r){var n=bt.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function BU(e,t,r){var n=bt.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function DU(e,t,r){var n=vU.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function $U(e,t,r){var n=bt.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function UU(e,t,r){var n=bt.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function hy(e,t){return je(e.getDate(),t,2)}function FU(e,t){return je(e.getHours(),t,2)}function jU(e,t){return je(e.getHours()%12||12,t,2)}function WU(e,t){return je(1+Qs.count(gn(e),e),t,3)}function rE(e,t){return je(e.getMilliseconds(),t,3)}function HU(e,t){return rE(e,t)+"000"}function VU(e,t){return je(e.getMonth()+1,t,2)}function qU(e,t){return je(e.getMinutes(),t,2)}function KU(e,t){return je(e.getSeconds(),t,2)}function YU(e){var t=e.getDay();return t===0?7:t}function zU(e,t){return je(Tu.count(gn(e)-1,e),t,2)}function nE(e){var t=e.getDay();return t>=4||t===0?Lo(e):Lo.ceil(e)}function GU(e,t){return e=nE(e),je(Lo.count(gn(e),e)+(gn(e).getDay()===4),t,2)}function QU(e){return e.getDay()}function XU(e,t){return je(Rl.count(gn(e)-1,e),t,2)}function JU(e,t){return je(e.getFullYear()%100,t,2)}function ZU(e,t){return e=nE(e),je(e.getFullYear()%100,t,2)}function eF(e,t){return je(e.getFullYear()%1e4,t,4)}function tF(e,t){var r=e.getDay();return e=r>=4||r===0?Lo(e):Lo.ceil(e),je(e.getFullYear()%1e4,t,4)}function rF(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+je(t/60|0,"0",2)+je(t%60,"0",2)}function dy(e,t){return je(e.getUTCDate(),t,2)}function nF(e,t){return je(e.getUTCHours(),t,2)}function iF(e,t){return je(e.getUTCHours()%12||12,t,2)}function oF(e,t){return je(1+Mp.count(Mi(e),e),t,3)}function iE(e,t){return je(e.getUTCMilliseconds(),t,3)}function sF(e,t){return iE(e,t)+"000"}function aF(e,t){return je(e.getUTCMonth()+1,t,2)}function lF(e,t){return je(e.getUTCMinutes(),t,2)}function uF(e,t){return je(e.getUTCSeconds(),t,2)}function cF(e){var t=e.getUTCDay();return t===0?7:t}function fF(e,t){return je(tE.count(Mi(e)-1,e),t,2)}function oE(e){var t=e.getUTCDay();return t>=4||t===0?Bo(e):Bo.ceil(e)}function hF(e,t){return e=oE(e),je(Bo.count(Mi(e),e)+(Mi(e).getUTCDay()===4),t,2)}function dF(e){return e.getUTCDay()}function pF(e,t){return je(Ol.count(Mi(e)-1,e),t,2)}function gF(e,t){return je(e.getUTCFullYear()%100,t,2)}function mF(e,t){return e=oE(e),je(e.getUTCFullYear()%100,t,2)}function yF(e,t){return je(e.getUTCFullYear()%1e4,t,4)}function _F(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Bo(e):Bo.ceil(e),je(e.getUTCFullYear()%1e4,t,4)}function bF(){return"+0000"}function py(){return"%"}function gy(e){return+e}function my(e){return Math.floor(+e/1e3)}var Zi,sE,wF;vF({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function vF(e){return Zi=wU(e),sE=Zi.format,wF=Zi.parse,Zi.utcFormat,Zi.utcParse,Zi}function EF(e){return new Date(e)}function SF(e){return e instanceof Date?+e:+new Date(+e)}function aE(e,t,r,n,o,i,s,a,l,u){var c=eE(),d=c.invert,p=c.domain,g=u(".%L"),_=u(":%S"),b=u("%I:%M"),x=u("%I %p"),k=u("%a %d"),R=u("%b %d"),A=u("%B"),B=u("%Y");function $(I){return(l(I)<I?g:a(I)<I?_:s(I)<I?b:i(I)<I?x:n(I)<I?o(I)<I?k:R:r(I)<I?A:B)(I)}return c.invert=function(I){return new Date(d(I))},c.domain=function(I){return arguments.length?p(Array.from(I,SF)):p().map(EF)},c.ticks=function(I){var P=p();return e(P[0],P[P.length-1],I??10)},c.tickFormat=function(I,P){return P==null?$:u(P)},c.nice=function(I){var P=p();return(!I||typeof I.range!="function")&&(I=t(P[0],P[P.length-1],I??10)),I?p(iU(P,I)):c},c.copy=function(){return Z1(c,aE(e,t,r,n,o,i,s,a,l,u))},c}function h3(){return Au.apply(aE(_U,bU,gn,Pp,Tu,Qs,Np,kp,uo,sE).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Ue(e){return function(){return e}}const yy=Math.abs,It=Math.atan2,ii=Math.cos,AF=Math.max,Hc=Math.min,Ar=Math.sin,co=Math.sqrt,Dt=1e-12,Bs=Math.PI,kl=Bs/2,Ja=2*Bs;function TF(e){return e>1?0:e<-1?Bs:Math.acos(e)}function _y(e){return e>=1?kl:e<=-1?-kl:Math.asin(e)}function Lp(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new B$(t)}function xF(e){return e.innerRadius}function IF(e){return e.outerRadius}function CF(e){return e.startAngle}function RF(e){return e.endAngle}function OF(e){return e&&e.padAngle}function kF(e,t,r,n,o,i,s,a){var l=r-e,u=n-t,c=s-o,d=a-i,p=d*l-c*u;if(!(p*p<Dt))return p=(c*(t-i)-d*(e-o))/p,[e+p*l,t+p*u]}function Ta(e,t,r,n,o,i,s){var a=e-r,l=t-n,u=(s?i:-i)/co(a*a+l*l),c=u*l,d=-u*a,p=e+c,g=t+d,_=r+c,b=n+d,x=(p+_)/2,k=(g+b)/2,R=_-p,A=b-g,B=R*R+A*A,$=o-i,I=p*b-_*g,P=(A<0?-1:1)*co(AF(0,$*$*B-I*I)),W=(I*A-R*P)/B,Y=(-I*R-A*P)/B,oe=(I*A+R*P)/B,te=(-I*R+A*P)/B,M=W-x,L=Y-k,ie=oe-x,re=te-k;return M*M+L*L>ie*ie+re*re&&(W=oe,Y=te),{cx:W,cy:Y,x01:-c,y01:-d,x11:W*(o/$-1),y11:Y*(o/$-1)}}function d3(){var e=xF,t=IF,r=Ue(0),n=null,o=CF,i=RF,s=OF,a=null,l=Lp(u);function u(){var c,d,p=+e.apply(this,arguments),g=+t.apply(this,arguments),_=o.apply(this,arguments)-kl,b=i.apply(this,arguments)-kl,x=yy(b-_),k=b>_;if(a||(a=c=l()),g<p&&(d=g,g=p,p=d),!(g>Dt))a.moveTo(0,0);else if(x>Ja-Dt)a.moveTo(g*ii(_),g*Ar(_)),a.arc(0,0,g,_,b,!k),p>Dt&&(a.moveTo(p*ii(b),p*Ar(b)),a.arc(0,0,p,b,_,k));else{var R=_,A=b,B=_,$=b,I=x,P=x,W=s.apply(this,arguments)/2,Y=W>Dt&&(n?+n.apply(this,arguments):co(p*p+g*g)),oe=Hc(yy(g-p)/2,+r.apply(this,arguments)),te=oe,M=oe,L,ie;if(Y>Dt){var re=_y(Y/p*Ar(W)),ae=_y(Y/g*Ar(W));(I-=re*2)>Dt?(re*=k?1:-1,B+=re,$-=re):(I=0,B=$=(_+b)/2),(P-=ae*2)>Dt?(ae*=k?1:-1,R+=ae,A-=ae):(P=0,R=A=(_+b)/2)}var se=g*ii(R),Q=g*Ar(R),he=p*ii($),fe=p*Ar($);if(oe>Dt){var pe=g*ii(A),F=g*Ar(A),ne=p*ii(B),ge=p*Ar(B),Se;if(x<Bs)if(Se=kF(se,Q,ne,ge,pe,F,he,fe)){var ye=se-Se[0],V=Q-Se[1],j=pe-Se[0],Z=F-Se[1],ue=1/Ar(TF((ye*j+V*Z)/(co(ye*ye+V*V)*co(j*j+Z*Z)))/2),le=co(Se[0]*Se[0]+Se[1]*Se[1]);te=Hc(oe,(p-le)/(ue-1)),M=Hc(oe,(g-le)/(ue+1))}else te=M=0}P>Dt?M>Dt?(L=Ta(ne,ge,se,Q,g,M,k),ie=Ta(pe,F,he,fe,g,M,k),a.moveTo(L.cx+L.x01,L.cy+L.y01),M<oe?a.arc(L.cx,L.cy,M,It(L.y01,L.x01),It(ie.y01,ie.x01),!k):(a.arc(L.cx,L.cy,M,It(L.y01,L.x01),It(L.y11,L.x11),!k),a.arc(0,0,g,It(L.cy+L.y11,L.cx+L.x11),It(ie.cy+ie.y11,ie.cx+ie.x11),!k),a.arc(ie.cx,ie.cy,M,It(ie.y11,ie.x11),It(ie.y01,ie.x01),!k))):(a.moveTo(se,Q),a.arc(0,0,g,R,A,!k)):a.moveTo(se,Q),!(p>Dt)||!(I>Dt)?a.lineTo(he,fe):te>Dt?(L=Ta(he,fe,pe,F,p,-te,k),ie=Ta(se,Q,ne,ge,p,-te,k),a.lineTo(L.cx+L.x01,L.cy+L.y01),te<oe?a.arc(L.cx,L.cy,te,It(L.y01,L.x01),It(ie.y01,ie.x01),!k):(a.arc(L.cx,L.cy,te,It(L.y01,L.x01),It(L.y11,L.x11),!k),a.arc(0,0,p,It(L.cy+L.y11,L.cx+L.x11),It(ie.cy+ie.y11,ie.cx+ie.x11),k),a.arc(ie.cx,ie.cy,te,It(ie.y11,ie.x11),It(ie.y01,ie.x01),!k))):a.arc(0,0,p,$,B,k)}if(a.closePath(),c)return a=null,c+""||null}return u.centroid=function(){var c=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,d=(+o.apply(this,arguments)+ +i.apply(this,arguments))/2-Bs/2;return[ii(d)*c,Ar(d)*c]},u.innerRadius=function(c){return arguments.length?(e=typeof c=="function"?c:Ue(+c),u):e},u.outerRadius=function(c){return arguments.length?(t=typeof c=="function"?c:Ue(+c),u):t},u.cornerRadius=function(c){return arguments.length?(r=typeof c=="function"?c:Ue(+c),u):r},u.padRadius=function(c){return arguments.length?(n=c==null?null:typeof c=="function"?c:Ue(+c),u):n},u.startAngle=function(c){return arguments.length?(o=typeof c=="function"?c:Ue(+c),u):o},u.endAngle=function(c){return arguments.length?(i=typeof c=="function"?c:Ue(+c),u):i},u.padAngle=function(c){return arguments.length?(s=typeof c=="function"?c:Ue(+c),u):s},u.context=function(c){return arguments.length?(a=c??null,u):a},u}function xu(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function lE(e){this._context=e}lE.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function uE(e){return new lE(e)}function cE(e){return e[0]}function fE(e){return e[1]}function NF(e,t){var r=Ue(!0),n=null,o=uE,i=null,s=Lp(a);e=typeof e=="function"?e:e===void 0?cE:Ue(e),t=typeof t=="function"?t:t===void 0?fE:Ue(t);function a(l){var u,c=(l=xu(l)).length,d,p=!1,g;for(n==null&&(i=o(g=s())),u=0;u<=c;++u)!(u<c&&r(d=l[u],u,l))===p&&((p=!p)?i.lineStart():i.lineEnd()),p&&i.point(+e(d,u,l),+t(d,u,l));if(g)return i=null,g+""||null}return a.x=function(l){return arguments.length?(e=typeof l=="function"?l:Ue(+l),a):e},a.y=function(l){return arguments.length?(t=typeof l=="function"?l:Ue(+l),a):t},a.defined=function(l){return arguments.length?(r=typeof l=="function"?l:Ue(!!l),a):r},a.curve=function(l){return arguments.length?(o=l,n!=null&&(i=o(n)),a):o},a.context=function(l){return arguments.length?(l==null?n=i=null:i=o(n=l),a):n},a}function p3(e,t,r){var n=null,o=Ue(!0),i=null,s=uE,a=null,l=Lp(u);e=typeof e=="function"?e:e===void 0?cE:Ue(+e),t=typeof t=="function"?t:Ue(t===void 0?0:+t),r=typeof r=="function"?r:r===void 0?fE:Ue(+r);function u(d){var p,g,_,b=(d=xu(d)).length,x,k=!1,R,A=new Array(b),B=new Array(b);for(i==null&&(a=s(R=l())),p=0;p<=b;++p){if(!(p<b&&o(x=d[p],p,d))===k)if(k=!k)g=p,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),_=p-1;_>=g;--_)a.point(A[_],B[_]);a.lineEnd(),a.areaEnd()}k&&(A[p]=+e(x,p,d),B[p]=+t(x,p,d),a.point(n?+n(x,p,d):A[p],r?+r(x,p,d):B[p]))}if(R)return a=null,R+""||null}function c(){return NF().defined(o).curve(s).context(i)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:Ue(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:Ue(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:Ue(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:Ue(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:Ue(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:Ue(+d),u):r},u.lineX0=u.lineY0=function(){return c().x(e).y(t)},u.lineY1=function(){return c().x(e).y(r)},u.lineX1=function(){return c().x(n).y(t)},u.defined=function(d){return arguments.length?(o=typeof d=="function"?d:Ue(!!d),u):o},u.curve=function(d){return arguments.length?(s=d,i!=null&&(a=s(i)),u):s},u.context=function(d){return arguments.length?(d==null?i=a=null:a=s(i=d),u):i},u}function MF(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}function PF(e){return e}function g3(){var e=PF,t=MF,r=null,n=Ue(0),o=Ue(Ja),i=Ue(0);function s(a){var l,u=(a=xu(a)).length,c,d,p=0,g=new Array(u),_=new Array(u),b=+n.apply(this,arguments),x=Math.min(Ja,Math.max(-Ja,o.apply(this,arguments)-b)),k,R=Math.min(Math.abs(x)/u,i.apply(this,arguments)),A=R*(x<0?-1:1),B;for(l=0;l<u;++l)(B=_[g[l]=l]=+e(a[l],l,a))>0&&(p+=B);for(t!=null?g.sort(function($,I){return t(_[$],_[I])}):r!=null&&g.sort(function($,I){return r(a[$],a[I])}),l=0,d=p?(x-u*A)/p:0;l<u;++l,b=k)c=g[l],B=_[c],k=b+(B>0?B*d:0)+A,_[c]={data:a[c],index:l,value:B,startAngle:b,endAngle:k,padAngle:R};return _}return s.value=function(a){return arguments.length?(e=typeof a=="function"?a:Ue(+a),s):e},s.sortValues=function(a){return arguments.length?(t=a,r=null,s):t},s.sort=function(a){return arguments.length?(r=a,t=null,s):r},s.startAngle=function(a){return arguments.length?(n=typeof a=="function"?a:Ue(+a),s):n},s.endAngle=function(a){return arguments.length?(o=typeof a=="function"?a:Ue(+a),s):o},s.padAngle=function(a){return arguments.length?(i=typeof a=="function"?a:Ue(+a),s):i},s}function by(e,t){if((s=e.length)>1)for(var r=1,n,o,i=e[t[0]],s,a=i.length;r<s;++r)for(o=i,i=e[t[r]],n=0;n<a;++n)i[n][1]+=i[n][0]=isNaN(o[n][1])?o[n][0]:o[n][1]}function wy(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}function LF(e,t){return e[t]}function BF(e){const t=[];return t.key=e,t}function m3(){var e=Ue([]),t=wy,r=by,n=LF;function o(i){var s=Array.from(e.apply(this,arguments),BF),a,l=s.length,u=-1,c;for(const d of i)for(a=0,++u;a<l;++a)(s[a][u]=[0,+n(d,s[a].key,u,i)]).data=d;for(a=0,c=xu(t(s));a<l;++a)s[c[a]].index=a;return r(s,c),s}return o.keys=function(i){return arguments.length?(e=typeof i=="function"?i:Ue(Array.from(i)),o):e},o.value=function(i){return arguments.length?(n=typeof i=="function"?i:Ue(+i),o):n},o.order=function(i){return arguments.length?(t=i==null?wy:typeof i=="function"?i:Ue(Array.from(i)),o):t},o.offset=function(i){return arguments.length?(r=i??by,o):r},o}function ms(e,t,r){this.k=e,this.x=t,this.y=r}ms.prototype={constructor:ms,scale:function(e){return e===1?this:new ms(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new ms(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};ms.prototype;export{KF as A,i3 as B,z$ as C,nU as D,m3 as E,dr as F,u3 as G,p3 as H,f3 as I,l3 as J,sE as K,s3 as L,Ro as M,h3 as N,NF as O,a3 as P,o3 as Q,VF as R,JF as S,XF as T,WF as U,wF as V,QF as W,ZF as X,UF as a,GF as b,zF as c,qF as d,g_ as e,YF as f,hd as g,hA as h,TS as i,CS as j,Mr as k,tA as l,e3 as m,dd as n,c_ as o,FF as p,jF as q,bd as r,c3 as s,$F as t,ZE as u,g3 as v,lS as w,d3 as x,HF as y,h_ as z};
diff --git a/packages/modules/display_themes/colors/web/index.html b/packages/modules/display_themes/colors/web/index.html
index ff1a61e37a..a7b402f66c 100644
--- a/packages/modules/display_themes/colors/web/index.html
+++ b/packages/modules/display_themes/colors/web/index.html
@@ -4,9 +4,9 @@
     <meta charset="UTF-8">
 		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>openWB Display</title>
-    <script type="module" crossorigin src="/openWB/web/display/themes/colors/assets/index-C2N9PWRS.js"></script>
-    <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/colors/assets/vendor-BjGoVRCW.js">
-    <link rel="stylesheet" crossorigin href="/openWB/web/display/themes/colors/assets/index-Bz5z-jvD.css">
+    <script type="module" crossorigin src="/openWB/web/display/themes/colors/assets/index-ScYbRoOj.js"></script>
+    <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/colors/assets/vendor-B1GimsSk.js">
+    <link rel="stylesheet" crossorigin href="/openWB/web/display/themes/colors/assets/index-C3_mlzOZ.css">
   </head>
   <body>
     <div id="app"></div>

From 1c164a1c42bdacd326dedcb785d23b7c1216f6cd Mon Sep 17 00:00:00 2001
From: okaegi <okaegi@pinball4you.ch>
Date: Thu, 12 Sep 2024 08:35:37 +0200
Subject: [PATCH 037/205] lambda openwb 2.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Anpassung an 2.0
Ein Anwender berichtigt von einem sporadischen Hänger mit openwb 2.0 und Lambda. Die Verbindung zu Lambda wird expliziet jedesmal aufgebaut und abgebaut.
---
 packages/modules/smarthome/lambda_/watt.py | 124 ++++++++++-----------
 1 file changed, 59 insertions(+), 65 deletions(-)

diff --git a/packages/modules/smarthome/lambda_/watt.py b/packages/modules/smarthome/lambda_/watt.py
index f31d8ef246..4d4ed9ceda 100644
--- a/packages/modules/smarthome/lambda_/watt.py
+++ b/packages/modules/smarthome/lambda_/watt.py
@@ -5,16 +5,11 @@
 import struct
 import codecs
 import logging
+from pymodbus.payload import Endian
 from pymodbus.payload import BinaryPayloadBuilder
 from pymodbus.client.sync import ModbusTcpClient
 from smarthome.smartlog import initlog
 from smarthome.smartret import writeret
-#  fix for pymodbus endian class (changes once 2023 august to enum to uppercases only,
-#   checked during runtime,
-#   not compatible betwwen openwb 1.9 (want lowercases) and openwb 2.0 (wants upercase))
-auto = "@"
-big = ">"
-little = "<"
 named_tuple = time.localtime()  # getstruct_time
 time_string = time.strftime("%m/%d/%Y, %H:%M:%S lambda watty.py", named_tuple)
 devicenumber = int(sys.argv[1])
@@ -56,67 +51,66 @@
     with open(file_stringpv, 'r') as f:
         pvmodus = int(f.read())
 # aktuelle Leistung lesen
-client = ModbusTcpClient(ipadr, port=502)
-start = 103
-resp = client.read_holding_registers(start, 2)
-#
-value1 = resp.registers[0]
-all = format(value1, '04x')
-aktpower = int(struct.unpack('>h', codecs.decode(all, 'hex'))[0])
-if count5 == 0:
-    # log counter
-    count1 = 999
-    if os.path.isfile(file_stringcount):
-        with open(file_stringcount, 'r') as f:
-            count1 = int(f.read())
-    count1 = count1+1
-    if count1 > 80:
-        count1 = 0
-    with open(file_stringcount, 'w') as f:
-        f.write(str(count1))
-    # Logik nur schicken bei PV-Modus
-    if pvmodus == 1:
-        modbuswrite = 1
-    neupower = uberschuss
-    if (uberschussvz == 'UZ'):
-        neupower = pvwatt
-        if neupower < 0:
+with ModbusTcpClient(ipadr, port=502) as client:
+    start = 103
+    resp = client.read_holding_registers(start, 2)
+    #
+    value1 = resp.registers[0]
+    all = format(value1, '04x')
+    aktpower = int(struct.unpack('>h', codecs.decode(all, 'hex'))[0])
+    if count5 == 0:
+        # log counter
+        count1 = 999
+        if os.path.isfile(file_stringcount):
+            with open(file_stringcount, 'r') as f:
+                count1 = int(f.read())
+        count1 = count1+1
+        if count1 > 80:
+            count1 = 0
+        with open(file_stringcount, 'w') as f:
+            f.write(str(count1))
+        # Logik nur schicken bei PV-Modus
+        if pvmodus == 1:
+            modbuswrite = 1
+        neupower = uberschuss
+        if (uberschussvz == 'UZ'):
+            neupower = pvwatt
+            if neupower < 0:
+                neupower = 0
+            if neupower > 65535:
+                neupower = 65535
+        else:
+            if neupower < -32767:
+                neupower = -32767
+            if neupower > 32767:
+                neupower = 32767
+        # wurde lambda gerade ausgeschaltet ?    (PV-Modus == 99 ?)
+        # dann 0 schicken wenn kein PV-Modus mehr
+        # und PV-Modus ausschalten
+        if pvmodus == 99:
+            modbuswrite = 1
             neupower = 0
-        if neupower > 65535:
-            neupower = 65535
-    else:
-        if neupower < -32767:
-            neupower = -32767
-        if neupower > 32767:
-            neupower = 32767
-    # wurde lambda gerade ausgeschaltet ?    (PV-Modus == 99 ?)
-    # dann 0 schicken wenn kein PV-Modus mehr
-    # und PV-Modus ausschalten
-    if pvmodus == 99:
-        modbuswrite = 1
-        neupower = 0
-        pvmodus = 0
-        with open(file_stringpv, 'w') as f:
-            f.write(str(pvmodus))
-    if count1 < 3:
-        log.info(' %d ipadr %s ueberschuss %6d Akt Leistung %6d'
-                 % (devicenumber, ipadr, uberschuss, aktpower))
-        log.info(' %d ipadr %s neupower %6d pvmodus %1d modbusw %1d'
-                 % (devicenumber, ipadr, neupower, pvmodus, modbuswrite))
-    # modbus write
-    if modbuswrite == 1:
-        # andernfalls absturz bei negativen Zahlen
-        builder = BinaryPayloadBuilder(byteorder=big)
-        builder.reset()
-        builder.add_16bit_int(neupower)
-        pay = builder.to_registers()
-        client.write_registers(102, [pay[0]])
+            pvmodus = 0
+            with open(file_stringpv, 'w') as f:
+                f.write(str(pvmodus))
         if count1 < 3:
-            log.info(' %d ipadr %s written %6d %#4X' %
-                     (devicenumber, ipadr, pay[0], pay[0]))
-else:
-    if pvmodus == 99:
-        pvmodus = 0
+            log.info(' %d ipadr %s ueberschuss %6d Akt Leistung %6d'
+                     % (devicenumber, ipadr, uberschuss, aktpower))
+            log.info(' %d ipadr %s neupower %6d pvmodus %1d modbusw %1d'
+                     % (devicenumber, ipadr, neupower, pvmodus, modbuswrite))
+        # modbus write
+        if modbuswrite == 1:
+            # andernfalls absturz bei negativen Zahlen
+            builder = BinaryPayloadBuilder(byteorder=Endian.Big, wordorder=Endian.Little)
+            builder.add_16bit_int(neupower)
+            pay = builder.to_registers()
+            client.write_registers(102, [pay[0]])
+            if count1 < 3:
+                log.info(' %d ipadr %s written %6d %#4X' %
+                         (devicenumber, ipadr, pay[0], pay[0]))
+    else:
+        if pvmodus == 99:
+            pvmodus = 0
 answer = '{"power":' + str(aktpower) + ',"powerc":0'
 answer += ',"send":' + str(modbuswrite) + ',"sendpower":' + str(neupower)
 answer += ',"on":' + str(pvmodus) + '}'

From 66f1ea9ffb1b2496bd9e68eff027481055fd9f3a Mon Sep 17 00:00:00 2001
From: ndrsnhs <andreas.neuhaus@openwb.de>
Date: Thu, 12 Sep 2024 08:51:14 +0200
Subject: [PATCH 038/205] adjust indent

---
 packages/helpermodules/update_config.py | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index d87c9acb14..5a114f04a3 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -43,7 +43,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 57
+    DATASTORE_VERSION = 58
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -1701,3 +1701,15 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: ""}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 57)
+
+    def upgrade_datastore_57(self) -> None:
+        def upgrade(topic: str, payload) -> None:
+            if re.search("openWB/system/device/[0-9]+", topic) is not None:
+                payload = decode_payload(payload)
+                # add factor for existing SolarEdge externel inverter
+                if payload.get("type") == "external_inverter"\
+                        and "factor" not in payload["configuration"]:
+                    payload["configuration"].update({"factor": 1})
+                Pub().pub(topic, payload)
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 58)

From ee2ac909064cb850ded3c792cf4fa36c99867988 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Thu, 12 Sep 2024 09:25:04 +0200
Subject: [PATCH 039/205] build settings

---
 .../assets/{ChargeLog-d71ce4c1.js => ChargeLog-83ebac6d.js}     | 2 +-
 ...allation-66ab99c9.js => ChargePointInstallation-7ae4661c.js} | 2 +-
 web/settings/assets/{Chart-53af13b6.js => Chart-70b754a3.js}    | 2 +-
 .../assets/{CloudConfig-28061265.js => CloudConfig-8640925d.js} | 2 +-
 .../{DataManagement-f4b0feef.js => DataManagement-6aff49ed.js}  | 2 +-
 .../assets/{DebugConfig-957ac5e2.js => DebugConfig-8fb79648.js} | 2 +-
 ...ChargeConfig-be9fdbc5.js => GeneralChargeConfig-e3c03ea2.js} | 2 +-
 .../{GeneralConfig-aecc1081.js => GeneralConfig-0de4c3ba.js}    | 2 +-
 web/settings/assets/HardwareInstallation-6ab82611.js            | 1 +
 web/settings/assets/HardwareInstallation-912044d0.js            | 1 -
 ...nstallAssistant-d68215c6.js => InstallAssistant-5646f4c7.js} | 2 +-
 ...stantStep0-e814ffaf.js => InstallAssistantStep0-2109508c.js} | 2 +-
 ...stantStep1-82e8d797.js => InstallAssistantStep1-eb28678f.js} | 2 +-
 ...antStep10-4b6a0cf4.js => InstallAssistantStep10-f49c5c61.js} | 2 +-
 ...stantStep2-fcfe7b66.js => InstallAssistantStep2-ecf5ee14.js} | 2 +-
 ...stantStep3-77359403.js => InstallAssistantStep3-4274b010.js} | 2 +-
 ...stantStep4-d653e2b0.js => InstallAssistantStep4-3310d3b5.js} | 2 +-
 ...stantStep5-554bfc9c.js => InstallAssistantStep5-3211fa20.js} | 2 +-
 ...stantStep6-a19e04f9.js => InstallAssistantStep6-df7cce5c.js} | 2 +-
 ...stantStep7-f896ccc9.js => InstallAssistantStep7-ed852473.js} | 2 +-
 ...stantStep8-86a4cd0e.js => InstallAssistantStep8-7f8d9e76.js} | 2 +-
 ...stantStep9-4da82ba8.js => InstallAssistantStep9-e32e780a.js} | 2 +-
 ...ate-0f7d9f62.js => InstallAssistantStepTemplate-b18c62ce.js} | 2 +-
 ...ChargeConfig-17057c0d.js => InstantChargeConfig-9b1ccfc3.js} | 2 +-
 .../{LegalSettings-7d6a7592.js => LegalSettings-9d18b06d.js}    | 2 +-
 ...ementConfig-380e9c4d.js => LoadManagementConfig-9fa3e6c0.js} | 2 +-
 ...qttBridgeConfig-b16c88cd.js => MqttBridgeConfig-87097544.js} | 2 +-
 ...nalComponents-4599d69d.js => OptionalComponents-49b0ff6e.js} | 2 +-
 .../{PVChargeConfig-d62a1759.js => PVChargeConfig-988712ae.js}  | 2 +-
 ...argeConfig-a3ebfb4e.js => ScheduledChargeConfig-0b6dc1c6.js} | 2 +-
 web/settings/assets/{Status-3ed5f34f.js => Status-29efdc6d.js}  | 2 +-
 .../assets/{Support-1d4bc359.js => Support-e534f32f.js}         | 2 +-
 web/settings/assets/{System-4ed50969.js => System-083c7c2d.js}  | 2 +-
 .../{TestingStore-5a64ca39.js => TestingStore-92266ef4.js}      | 2 +-
 ...imeChargeConfig-b85503dd.js => TimeChargeConfig-23157950.js} | 2 +-
 .../{VehicleConfig-99736f29.js => VehicleConfig-76952b56.js}    | 2 +-
 web/settings/assets/bat-4202cb7c.js                             | 1 +
 web/settings/assets/bat-7696fb32.js                             | 1 +
 web/settings/assets/counter-15d8fd18.js                         | 1 +
 web/settings/assets/counter-c9a9f709.js                         | 1 +
 web/settings/assets/device-3d446bca.js                          | 1 +
 web/settings/assets/device-99dfaf68.js                          | 1 +
 ...ricity_tariff-5204ab68.js => electricity_tariff-eefa229a.js} | 2 +-
 web/settings/assets/external_inverter-4a132ee4.js               | 1 +
 web/settings/assets/external_inverter-53c24f18.js               | 1 -
 web/settings/assets/{index-88a2073c.js => index-f1ebfb88.js}    | 2 +-
 web/settings/assets/inverter-597e2682.js                        | 1 +
 web/settings/assets/inverter-5e52c5a2.js                        | 1 +
 web/settings/assets/inverter-8faef1dd.js                        | 1 +
 .../assets/{vehicle-ef8ce1de.js => vehicle-33c61ff2.js}         | 2 +-
 web/settings/index.html                                         | 2 +-
 51 files changed, 49 insertions(+), 40 deletions(-)
 rename web/settings/assets/{ChargeLog-d71ce4c1.js => ChargeLog-83ebac6d.js} (99%)
 rename web/settings/assets/{ChargePointInstallation-66ab99c9.js => ChargePointInstallation-7ae4661c.js} (99%)
 rename web/settings/assets/{Chart-53af13b6.js => Chart-70b754a3.js} (99%)
 rename web/settings/assets/{CloudConfig-28061265.js => CloudConfig-8640925d.js} (99%)
 rename web/settings/assets/{DataManagement-f4b0feef.js => DataManagement-6aff49ed.js} (99%)
 rename web/settings/assets/{DebugConfig-957ac5e2.js => DebugConfig-8fb79648.js} (98%)
 rename web/settings/assets/{GeneralChargeConfig-be9fdbc5.js => GeneralChargeConfig-e3c03ea2.js} (98%)
 rename web/settings/assets/{GeneralConfig-aecc1081.js => GeneralConfig-0de4c3ba.js} (99%)
 create mode 100644 web/settings/assets/HardwareInstallation-6ab82611.js
 delete mode 100644 web/settings/assets/HardwareInstallation-912044d0.js
 rename web/settings/assets/{InstallAssistant-d68215c6.js => InstallAssistant-5646f4c7.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-e814ffaf.js => InstallAssistantStep0-2109508c.js} (95%)
 rename web/settings/assets/{InstallAssistantStep1-82e8d797.js => InstallAssistantStep1-eb28678f.js} (89%)
 rename web/settings/assets/{InstallAssistantStep10-4b6a0cf4.js => InstallAssistantStep10-f49c5c61.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-fcfe7b66.js => InstallAssistantStep2-ecf5ee14.js} (89%)
 rename web/settings/assets/{InstallAssistantStep3-77359403.js => InstallAssistantStep3-4274b010.js} (92%)
 rename web/settings/assets/{InstallAssistantStep4-d653e2b0.js => InstallAssistantStep4-3310d3b5.js} (92%)
 rename web/settings/assets/{InstallAssistantStep5-554bfc9c.js => InstallAssistantStep5-3211fa20.js} (93%)
 rename web/settings/assets/{InstallAssistantStep6-a19e04f9.js => InstallAssistantStep6-df7cce5c.js} (94%)
 rename web/settings/assets/{InstallAssistantStep7-f896ccc9.js => InstallAssistantStep7-ed852473.js} (93%)
 rename web/settings/assets/{InstallAssistantStep8-86a4cd0e.js => InstallAssistantStep8-7f8d9e76.js} (93%)
 rename web/settings/assets/{InstallAssistantStep9-4da82ba8.js => InstallAssistantStep9-e32e780a.js} (91%)
 rename web/settings/assets/{InstallAssistantStepTemplate-0f7d9f62.js => InstallAssistantStepTemplate-b18c62ce.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-17057c0d.js => InstantChargeConfig-9b1ccfc3.js} (96%)
 rename web/settings/assets/{LegalSettings-7d6a7592.js => LegalSettings-9d18b06d.js} (97%)
 rename web/settings/assets/{LoadManagementConfig-380e9c4d.js => LoadManagementConfig-9fa3e6c0.js} (99%)
 rename web/settings/assets/{MqttBridgeConfig-b16c88cd.js => MqttBridgeConfig-87097544.js} (99%)
 rename web/settings/assets/{OptionalComponents-4599d69d.js => OptionalComponents-49b0ff6e.js} (99%)
 rename web/settings/assets/{PVChargeConfig-d62a1759.js => PVChargeConfig-988712ae.js} (99%)
 rename web/settings/assets/{ScheduledChargeConfig-a3ebfb4e.js => ScheduledChargeConfig-0b6dc1c6.js} (97%)
 rename web/settings/assets/{Status-3ed5f34f.js => Status-29efdc6d.js} (99%)
 rename web/settings/assets/{Support-1d4bc359.js => Support-e534f32f.js} (98%)
 rename web/settings/assets/{System-4ed50969.js => System-083c7c2d.js} (98%)
 rename web/settings/assets/{TestingStore-5a64ca39.js => TestingStore-92266ef4.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-b85503dd.js => TimeChargeConfig-23157950.js} (96%)
 rename web/settings/assets/{VehicleConfig-99736f29.js => VehicleConfig-76952b56.js} (99%)
 create mode 100644 web/settings/assets/bat-4202cb7c.js
 create mode 100644 web/settings/assets/bat-7696fb32.js
 create mode 100644 web/settings/assets/counter-15d8fd18.js
 create mode 100644 web/settings/assets/counter-c9a9f709.js
 create mode 100644 web/settings/assets/device-3d446bca.js
 create mode 100644 web/settings/assets/device-99dfaf68.js
 rename web/settings/assets/{electricity_tariff-5204ab68.js => electricity_tariff-eefa229a.js} (97%)
 create mode 100644 web/settings/assets/external_inverter-4a132ee4.js
 delete mode 100644 web/settings/assets/external_inverter-53c24f18.js
 rename web/settings/assets/{index-88a2073c.js => index-f1ebfb88.js} (96%)
 create mode 100644 web/settings/assets/inverter-597e2682.js
 create mode 100644 web/settings/assets/inverter-5e52c5a2.js
 create mode 100644 web/settings/assets/inverter-8faef1dd.js
 rename web/settings/assets/{vehicle-ef8ce1de.js => vehicle-33c61ff2.js} (97%)

diff --git a/web/settings/assets/ChargeLog-d71ce4c1.js b/web/settings/assets/ChargeLog-83ebac6d.js
similarity index 99%
rename from web/settings/assets/ChargeLog-d71ce4c1.js
rename to web/settings/assets/ChargeLog-83ebac6d.js
index d5f1d6cd09..f4bf784d69 100644
--- a/web/settings/assets/ChargeLog-d71ce4c1.js
+++ b/web/settings/assets/ChargeLog-83ebac6d.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-88a2073c.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-f1ebfb88.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},y=t=>(W("data-v-8607e7e7"),t=t(),F(),t),M={class:"chargeLog"},P={name:"chargeLogForm"},z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],K=["aria-valuenow"],J=["aria-valuenow"],G=["aria-valuenow"],H=["aria-valuenow"],Q={key:1,class:"td-center"},Y={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ce={class:"hide",ref:"downloadChargeLogLink"},he=y(()=>i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),ge={class:"td-end"},_e={class:"td-end"},ue={class:"td-end"},me={class:"td-end"};function pe(t,e,o,p,l,r){const C=h("openwb-base-text-input"),f=h("font-awesome-icon"),D=h("openwb-base-button-group-input"),m=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),b=h("openwb-base-alert"),L=h("vue3-table-lite"),N=h("openwb-base-click-button");return g(),_("div",M,[i("form",P,[d(v,{title:"Filter"},{default:s(()=>[d(C,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:l.currentMonth,modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())]},null,8,["max","modelValue"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),c(" Erweiterte Optionen ")]),default:s(()=>[d(D,{title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())]},null,8,["modelValue"]),d(m,{title:"Lademodus",multiple:"",options:r.chargeModeList,modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Ladepunkt",multiple:"",options:r.chargePointList,modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Fahrzeug",multiple:"",options:r.vehicleList,modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(q,{title:"ID-Tags",modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Tags als Filter verwendet werden. ")]),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,z)]),_:1}),r.chargeLogRead?(g(),_("div",O,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(g(),_("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:u({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:u({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:u({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G),i("div",{class:"progress-bar bg-success",role:"progressbar",style:u({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,H)],8,j)):(g(),_("div",Q,"-"))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Y,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(g(),_("div",le,[i("div",de,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[c(" Als CSV exportieren "),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ce,null,512)]),he,d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",ge,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",_e,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ue,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",me,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):V("",!0)])):(g(),I(b,{key:0,subtype:"info"},{default:s(()=>[c(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const qe=B(U,[["render",pe],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{qe as default};
diff --git a/web/settings/assets/ChargePointInstallation-66ab99c9.js b/web/settings/assets/ChargePointInstallation-7ae4661c.js
similarity index 99%
rename from web/settings/assets/ChargePointInstallation-66ab99c9.js
rename to web/settings/assets/ChargePointInstallation-7ae4661c.js
index 2258aaae91..525d655a9b 100644
--- a/web/settings/assets/ChargePointInstallation-66ab99c9.js
+++ b/web/settings/assets/ChargePointInstallation-7ae4661c.js
@@ -1 +1 @@
-import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-88a2073c.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
+import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-f1ebfb88.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
diff --git a/web/settings/assets/Chart-53af13b6.js b/web/settings/assets/Chart-70b754a3.js
similarity index 99%
rename from web/settings/assets/Chart-53af13b6.js
rename to web/settings/assets/Chart-70b754a3.js
index fdce0bf91c..eb788cae48 100644
--- a/web/settings/assets/Chart-53af13b6.js
+++ b/web/settings/assets/Chart-70b754a3.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-88a2073c.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-f1ebfb88.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-28061265.js b/web/settings/assets/CloudConfig-8640925d.js
similarity index 99%
rename from web/settings/assets/CloudConfig-28061265.js
rename to web/settings/assets/CloudConfig-8640925d.js
index 0e0c013abc..7aadc517fc 100644
--- a/web/settings/assets/CloudConfig-28061265.js
+++ b/web/settings/assets/CloudConfig-8640925d.js
@@ -1 +1 @@
-import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-88a2073c.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
+import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-f1ebfb88.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
diff --git a/web/settings/assets/DataManagement-f4b0feef.js b/web/settings/assets/DataManagement-6aff49ed.js
similarity index 99%
rename from web/settings/assets/DataManagement-f4b0feef.js
rename to web/settings/assets/DataManagement-6aff49ed.js
index 08a77aa5cb..aeb0b4a02c 100644
--- a/web/settings/assets/DataManagement-f4b0feef.js
+++ b/web/settings/assets/DataManagement-6aff49ed.js
@@ -1 +1 @@
-import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-88a2073c.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
+import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-f1ebfb88.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
diff --git a/web/settings/assets/DebugConfig-957ac5e2.js b/web/settings/assets/DebugConfig-8fb79648.js
similarity index 98%
rename from web/settings/assets/DebugConfig-957ac5e2.js
rename to web/settings/assets/DebugConfig-8fb79648.js
index 37b3bad3ac..6ccb677465 100644
--- a/web/settings/assets/DebugConfig-957ac5e2.js
+++ b/web/settings/assets/DebugConfig-8fb79648.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-88a2073c.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-f1ebfb88.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),p=s("openwb-base-avatar"),m=s("openwb-base-card");return d(),w(m,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(p,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=f($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",mixins:[k],components:{OpenwbLogCard:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),p=s("openwb-base-alert"),m=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),_("div",z,[v("form",V,[i(m,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>[b(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')]),_:1},8,["model-value"]),i(p,{subtype:"warning"},{default:l(()=>[b(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')]),_:1})]),_:1}),i(c,{formName:"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),_(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=f(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-be9fdbc5.js b/web/settings/assets/GeneralChargeConfig-e3c03ea2.js
similarity index 98%
rename from web/settings/assets/GeneralChargeConfig-be9fdbc5.js
rename to web/settings/assets/GeneralChargeConfig-e3c03ea2.js
index 40a03e56b6..447423cbdb 100644
--- a/web/settings/assets/GeneralChargeConfig-be9fdbc5.js
+++ b/web/settings/assets/GeneralChargeConfig-e3c03ea2.js
@@ -1 +1 @@
-import{_ as g,C as T}from"./index-88a2073c.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-5204ab68.js"),["assets/electricity_tariff-5204ab68.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
+import{_ as g,C as T}from"./index-f1ebfb88.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-eefa229a.js"),["assets/electricity_tariff-eefa229a.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
diff --git a/web/settings/assets/GeneralConfig-aecc1081.js b/web/settings/assets/GeneralConfig-0de4c3ba.js
similarity index 99%
rename from web/settings/assets/GeneralConfig-aecc1081.js
rename to web/settings/assets/GeneralConfig-0de4c3ba.js
index b8da2c5fae..83d9a63ee6 100644
--- a/web/settings/assets/GeneralConfig-aecc1081.js
+++ b/web/settings/assets/GeneralConfig-0de4c3ba.js
@@ -1 +1 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-88a2073c.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-f1ebfb88.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
diff --git a/web/settings/assets/HardwareInstallation-6ab82611.js b/web/settings/assets/HardwareInstallation-6ab82611.js
new file mode 100644
index 0000000000..06113136e4
--- /dev/null
+++ b/web/settings/assets/HardwareInstallation-6ab82611.js
@@ -0,0 +1 @@
+import{l as N,d as U,t as G,a7 as F,a0 as H,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-f1ebfb88.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as w,u as m,k as u,l as p,A as c,N as o,z as l,y as a,D as v,x as E,a2 as W,a3 as $,B as P,J as L,K as h,q as y,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,r,O,s,n){const T=m("openwb-base-alert"),g=m("openwb-base-textarea");return u(),p("div",oe,[Object.keys(r.configuration).length==0?(u(),c(T,{key:0,subtype:"info"},{default:o(()=>[r.componentType?(u(),p("span",ie,' Der Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",re,'Der Gerät-Typ "'+l(r.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(u(),p("div",ne,[v(T,{subtype:"warning"},{default:o(()=>[a(" Es wurde keine Konfigurationsseite für den "),r.componentType?(u(),p("span",ue,' Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",ve,'Geräte-Typ "'+l(r.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),v(g,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":i[0]||(i[0]=D=>n.updateConfiguration(D,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),v(T,{subtype:"info"},{default:o(()=>[E("pre",null,l(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const S=w(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-3069a051.js"),["assets/counter-3069a051.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/bat.vue":()=>e(()=>import("./bat-7696fb32.js"),["assets/bat-7696fb32.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/counter.vue":()=>e(()=>import("./counter-c9a9f709.js"),["assets/counter-c9a9f709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/inverter.vue":()=>e(()=>import("./inverter-597e2682.js"),["assets/inverter-597e2682.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-4a132ee4.js"),["assets/external_inverter-4a132ee4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/bat.vue":()=>e(()=>import("./bat-4202cb7c.js"),["assets/bat-4202cb7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/counter.vue":()=>e(()=>import("./counter-15d8fd18.js"),["assets/counter-15d8fd18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/inverter.vue":()=>e(()=>import("./inverter-5e52c5a2.js"),["assets/inverter-5e52c5a2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/inverter.vue":()=>e(()=>import("./inverter-8faef1dd.js"),["assets/inverter-8faef1dd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,r,O,s,n){return u(),c($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":i[0]||(i[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=w(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,r){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:r}})},removeComponentModal(_,i,r,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:r},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(r=>r.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},A=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),Ee={class:"hardwareInstallation"},ce={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=A(()=>E("hr",null,null,-1)),Ae=A(()=>E("hr",null,null,-1)),De=A(()=>E("hr",null,null,-1)),Re=A(()=>E("hr",null,null,-1)),Oe={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=A(()=>E("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),E("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),be=A(()=>E("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),E("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),fe=A(()=>E("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,r,O,s,n){const T=m("openwb-base-modal-dialog"),g=m("router-link"),D=m("openwb-base-alert"),V=m("font-awesome-icon"),b=m("openwb-base-avatar"),k=m("openwb-base-text-input"),C=m("openwb-config-proxy"),q=m("openwb-base-heading"),f=m("openwb-base-card"),x=m("openwb-base-click-button"),z=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return u(),p(L,null,[v(T,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:o(()=>[a(' Wollen Sie das Gerät "'+l(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),v(T,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:o(()=>[a(' Wollen Sie die Komponente "'+l(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),E("div",Ee,[E("form",ce,[r.installAssistantActive?P("",!0):(u(),c(D,{key:0,subtype:"info"},{default:o(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),v(g,{to:"/LoadManagementConfiguration"},{default:o(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),v(f,{title:"Geräte und Komponenten"},{default:o(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(u(),p("div",le,[v(D,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),p("div",Te,[(u(!0),p(L,null,h(n.installedDevices,(t,B)=>(u(),c(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:o(()=>[v(V,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+l(t.name),1)]),actions:o(d=>[d.collapsed?(u(),p("div",Ie,[(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),I=>(u(),c(b,{key:I.id,class:y("ml-1 bg-"+n.getComponentTypeClass(I.type))},{default:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(I.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(u(),c(b,{key:0,class:"bg-danger clickable",onClick:I=>n.removeDeviceModal(t.id,t.name,I)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,v(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>n.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,v(q,null,{default:o(()=>[a("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(t.id)?P("",!0):(u(),c(D,{key:0,subtype:"warning"},{default:o(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),(d,I)=>(u(),c(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(d.type)},{header:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+l(d.name),1)]),actions:o(R=>[R.collapsed?P("",!0):(u(),c(b,{key:0,class:"bg-danger clickable",onClick:K=>n.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":R=>_.updateState(I,R,"name")},null,8,["model-value","onUpdate:modelValue"]),De,v(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":R=>n.updateConfiguration(I,R)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Re,n.getComponentList(t.type).length?(u(),c(z,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:o(()=>[E("span",Oe,[v(x,{class:y(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>n.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:o(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(u(),c(D,{key:2,subtype:"info"},{default:o(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(u(),p("hr",Pe)):P("",!0),v(z,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:n.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=t=>s.deviceToAdd=t)},{append:o(()=>[E("span",Le,[v(x,{class:y(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[ge,be,fe]),_:1},8,["options","model-value"])]))]),_:1}),v(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=t=>_.$emit("save")),onReset:i[2]||(i[2]=t=>_.$emit("reset")),onDefaults:i[3]||(i[3]=t=>_.$emit("defaults"))})])])],64)}const We=w(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default};
diff --git a/web/settings/assets/HardwareInstallation-912044d0.js b/web/settings/assets/HardwareInstallation-912044d0.js
deleted file mode 100644
index 6214c2bb21..0000000000
--- a/web/settings/assets/HardwareInstallation-912044d0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as N,d as U,t as G,a7 as F,a0 as H,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-88a2073c.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as y,u as m,k as u,l as p,A as E,N as o,z as l,y as a,D as v,x as c,a2 as W,a3 as $,B as P,J as L,K as h,q as w,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,r,O,s,n){const T=m("openwb-base-alert"),g=m("openwb-base-textarea");return u(),p("div",oe,[Object.keys(r.configuration).length==0?(u(),E(T,{key:0,subtype:"info"},{default:o(()=>[r.componentType?(u(),p("span",ie,' Der Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",re,'Der Gerät-Typ "'+l(r.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(u(),p("div",ne,[v(T,{subtype:"warning"},{default:o(()=>[a(" Es wurde keine Konfigurationsseite für den "),r.componentType?(u(),p("span",ue,' Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",ve,'Geräte-Typ "'+l(r.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),v(g,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":i[0]||(i[0]=D=>n.updateConfiguration(D,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),v(T,{subtype:"info"},{default:o(()=>[c("pre",null,l(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const S=y(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-3069a051.js"),["assets/counter-3069a051.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-53c24f18.js"),["assets/external_inverter-53c24f18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,r,O,s,n){return u(),E($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":i[0]||(i[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=y(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,r){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:r}})},removeComponentModal(_,i,r,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:r},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(r=>r.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},A=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),ce={class:"hardwareInstallation"},Ee={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=A(()=>c("hr",null,null,-1)),Ae=A(()=>c("hr",null,null,-1)),De=A(()=>c("hr",null,null,-1)),Re=A(()=>c("hr",null,null,-1)),Oe={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=A(()=>c("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=A(()=>c("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=A(()=>c("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,r,O,s,n){const T=m("openwb-base-modal-dialog"),g=m("router-link"),D=m("openwb-base-alert"),V=m("font-awesome-icon"),f=m("openwb-base-avatar"),k=m("openwb-base-text-input"),C=m("openwb-config-proxy"),q=m("openwb-base-heading"),b=m("openwb-base-card"),x=m("openwb-base-click-button"),z=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return u(),p(L,null,[v(T,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:o(()=>[a(' Wollen Sie das Gerät "'+l(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),v(T,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:o(()=>[a(' Wollen Sie die Komponente "'+l(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",ce,[c("form",Ee,[r.installAssistantActive?P("",!0):(u(),E(D,{key:0,subtype:"info"},{default:o(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),v(g,{to:"/LoadManagementConfiguration"},{default:o(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),v(b,{title:"Geräte und Komponenten"},{default:o(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(u(),p("div",le,[v(D,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),p("div",Te,[(u(!0),p(L,null,h(n.installedDevices,(t,B)=>(u(),E(b,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:o(()=>[v(V,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+l(t.name),1)]),actions:o(d=>[d.collapsed?(u(),p("div",Ie,[(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),I=>(u(),E(f,{key:I.id,class:w("ml-1 bg-"+n.getComponentTypeClass(I.type))},{default:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(I.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(u(),E(f,{key:0,class:"bg-danger clickable",onClick:I=>n.removeDeviceModal(t.id,t.name,I)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,v(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>n.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,v(q,null,{default:o(()=>[a("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(t.id)?P("",!0):(u(),E(D,{key:0,subtype:"warning"},{default:o(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),(d,I)=>(u(),E(b,{key:d.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(d.type)},{header:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+l(d.name),1)]),actions:o(R=>[R.collapsed?P("",!0):(u(),E(f,{key:0,class:"bg-danger clickable",onClick:K=>n.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":R=>_.updateState(I,R,"name")},null,8,["model-value","onUpdate:modelValue"]),De,v(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":R=>n.updateConfiguration(I,R)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Re,n.getComponentList(t.type).length?(u(),E(z,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:o(()=>[c("span",Oe,[v(x,{class:w(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>n.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:o(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(u(),E(D,{key:2,subtype:"info"},{default:o(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(u(),p("hr",Pe)):P("",!0),v(z,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:n.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=t=>s.deviceToAdd=t)},{append:o(()=>[c("span",Le,[v(x,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[ge,fe,be]),_:1},8,["options","model-value"])]))]),_:1}),v(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=t=>_.$emit("save")),onReset:i[2]||(i[2]=t=>_.$emit("reset")),onDefaults:i[3]||(i[3]=t=>_.$emit("defaults"))})])])],64)}const We=y(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default};
diff --git a/web/settings/assets/InstallAssistant-d68215c6.js b/web/settings/assets/InstallAssistant-5646f4c7.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-d68215c6.js
rename to web/settings/assets/InstallAssistant-5646f4c7.js
index 5a05909384..107c23d384 100644
--- a/web/settings/assets/InstallAssistant-d68215c6.js
+++ b/web/settings/assets/InstallAssistant-5646f4c7.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-88a2073c.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-e814ffaf.js"),["assets/InstallAssistantStep0-e814ffaf.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-82e8d797.js"),["assets/InstallAssistantStep1-82e8d797.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-f4b0feef.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-4b6a0cf4.js"),["assets/InstallAssistantStep10-4b6a0cf4.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-fcfe7b66.js"),["assets/InstallAssistantStep2-fcfe7b66.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-4ed50969.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-77359403.js"),["assets/InstallAssistantStep3-77359403.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-aecc1081.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-d653e2b0.js"),["assets/InstallAssistantStep4-d653e2b0.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-66ab99c9.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-554bfc9c.js"),["assets/InstallAssistantStep5-554bfc9c.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-912044d0.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-a19e04f9.js"),["assets/InstallAssistantStep6-a19e04f9.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-66ab99c9.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-f896ccc9.js"),["assets/InstallAssistantStep7-f896ccc9.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-380e9c4d.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-86a4cd0e.js"),["assets/InstallAssistantStep8-86a4cd0e.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-99736f29.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-4da82ba8.js"),["assets/InstallAssistantStep9-4da82ba8.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-f4b0feef.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-0f7d9f62.js"),["assets/InstallAssistantStepTemplate-0f7d9f62.js","assets/index-88a2073c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-f1ebfb88.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-2109508c.js"),["assets/InstallAssistantStep0-2109508c.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-eb28678f.js"),["assets/InstallAssistantStep1-eb28678f.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-6aff49ed.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-f49c5c61.js"),["assets/InstallAssistantStep10-f49c5c61.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-ecf5ee14.js"),["assets/InstallAssistantStep2-ecf5ee14.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-083c7c2d.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-4274b010.js"),["assets/InstallAssistantStep3-4274b010.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-0de4c3ba.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-3310d3b5.js"),["assets/InstallAssistantStep4-3310d3b5.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-7ae4661c.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-3211fa20.js"),["assets/InstallAssistantStep5-3211fa20.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-6ab82611.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-df7cce5c.js"),["assets/InstallAssistantStep6-df7cce5c.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-7ae4661c.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-ed852473.js"),["assets/InstallAssistantStep7-ed852473.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-9fa3e6c0.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-7f8d9e76.js"),["assets/InstallAssistantStep8-7f8d9e76.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-76952b56.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-e32e780a.js"),["assets/InstallAssistantStep9-e32e780a.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-6aff49ed.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-b18c62ce.js"),["assets/InstallAssistantStepTemplate-b18c62ce.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-e814ffaf.js b/web/settings/assets/InstallAssistantStep0-2109508c.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-e814ffaf.js
rename to web/settings/assets/InstallAssistantStep0-2109508c.js
index 68f532802b..db836b5592 100644
--- a/web/settings/assets/InstallAssistantStep0-e814ffaf.js
+++ b/web/settings/assets/InstallAssistantStep0-2109508c.js
@@ -1 +1 @@
-import{C as d}from"./index-88a2073c.js";import u from"./InstallAssistantStepTemplate-0f7d9f62.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
+import{C as d}from"./index-f1ebfb88.js";import u from"./InstallAssistantStepTemplate-b18c62ce.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
diff --git a/web/settings/assets/InstallAssistantStep1-82e8d797.js b/web/settings/assets/InstallAssistantStep1-eb28678f.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep1-82e8d797.js
rename to web/settings/assets/InstallAssistantStep1-eb28678f.js
index 4d2805c644..f09ea1f8f1 100644
--- a/web/settings/assets/InstallAssistantStep1-82e8d797.js
+++ b/web/settings/assets/InstallAssistantStep1-eb28678f.js
@@ -1 +1 @@
-import{C as m}from"./index-88a2073c.js";import p from"./InstallAssistantStepTemplate-0f7d9f62.js";import l from"./DataManagement-f4b0feef.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
+import{C as m}from"./index-f1ebfb88.js";import p from"./InstallAssistantStepTemplate-b18c62ce.js";import l from"./DataManagement-6aff49ed.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
diff --git a/web/settings/assets/InstallAssistantStep10-4b6a0cf4.js b/web/settings/assets/InstallAssistantStep10-f49c5c61.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-4b6a0cf4.js
rename to web/settings/assets/InstallAssistantStep10-f49c5c61.js
index cec84d3cf4..ebfd7be4fe 100644
--- a/web/settings/assets/InstallAssistantStep10-4b6a0cf4.js
+++ b/web/settings/assets/InstallAssistantStep10-f49c5c61.js
@@ -1 +1 @@
-import{C as i}from"./index-88a2073c.js";import a from"./InstallAssistantStepTemplate-0f7d9f62.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
+import{C as i}from"./index-f1ebfb88.js";import a from"./InstallAssistantStepTemplate-b18c62ce.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
diff --git a/web/settings/assets/InstallAssistantStep2-fcfe7b66.js b/web/settings/assets/InstallAssistantStep2-ecf5ee14.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-fcfe7b66.js
rename to web/settings/assets/InstallAssistantStep2-ecf5ee14.js
index 61624df5a0..d1a8740834 100644
--- a/web/settings/assets/InstallAssistantStep2-fcfe7b66.js
+++ b/web/settings/assets/InstallAssistantStep2-ecf5ee14.js
@@ -1 +1 @@
-import{C as d}from"./index-88a2073c.js";import p from"./InstallAssistantStepTemplate-0f7d9f62.js";import l from"./System-4ed50969.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
+import{C as d}from"./index-f1ebfb88.js";import p from"./InstallAssistantStepTemplate-b18c62ce.js";import l from"./System-083c7c2d.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep3-77359403.js b/web/settings/assets/InstallAssistantStep3-4274b010.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep3-77359403.js
rename to web/settings/assets/InstallAssistantStep3-4274b010.js
index 203ed11fb2..850628edcc 100644
--- a/web/settings/assets/InstallAssistantStep3-77359403.js
+++ b/web/settings/assets/InstallAssistantStep3-4274b010.js
@@ -1 +1 @@
-import{C as d}from"./index-88a2073c.js";import p from"./InstallAssistantStepTemplate-0f7d9f62.js";import m from"./GeneralConfig-aecc1081.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
+import{C as d}from"./index-f1ebfb88.js";import p from"./InstallAssistantStepTemplate-b18c62ce.js";import m from"./GeneralConfig-0de4c3ba.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep4-d653e2b0.js b/web/settings/assets/InstallAssistantStep4-3310d3b5.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep4-d653e2b0.js
rename to web/settings/assets/InstallAssistantStep4-3310d3b5.js
index 6c62b94d1d..6bdf91f9d2 100644
--- a/web/settings/assets/InstallAssistantStep4-d653e2b0.js
+++ b/web/settings/assets/InstallAssistantStep4-3310d3b5.js
@@ -1 +1 @@
-import{C as l}from"./index-88a2073c.js";import p from"./InstallAssistantStepTemplate-0f7d9f62.js";import u from"./ChargePointInstallation-66ab99c9.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
+import{C as l}from"./index-f1ebfb88.js";import p from"./InstallAssistantStepTemplate-b18c62ce.js";import u from"./ChargePointInstallation-7ae4661c.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
diff --git a/web/settings/assets/InstallAssistantStep5-554bfc9c.js b/web/settings/assets/InstallAssistantStep5-3211fa20.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep5-554bfc9c.js
rename to web/settings/assets/InstallAssistantStep5-3211fa20.js
index 6551831ad7..3e139d1775 100644
--- a/web/settings/assets/InstallAssistantStep5-554bfc9c.js
+++ b/web/settings/assets/InstallAssistantStep5-3211fa20.js
@@ -1 +1 @@
-import{C as l}from"./index-88a2073c.js";import m from"./InstallAssistantStepTemplate-0f7d9f62.js";import u from"./HardwareInstallation-912044d0.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
+import{C as l}from"./index-f1ebfb88.js";import m from"./InstallAssistantStepTemplate-b18c62ce.js";import u from"./HardwareInstallation-6ab82611.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstallAssistantStep6-a19e04f9.js b/web/settings/assets/InstallAssistantStep6-df7cce5c.js
similarity index 94%
rename from web/settings/assets/InstallAssistantStep6-a19e04f9.js
rename to web/settings/assets/InstallAssistantStep6-df7cce5c.js
index 9eb211a7e9..cb3099c9f6 100644
--- a/web/settings/assets/InstallAssistantStep6-a19e04f9.js
+++ b/web/settings/assets/InstallAssistantStep6-df7cce5c.js
@@ -1 +1 @@
-import{C as l}from"./index-88a2073c.js";import u from"./InstallAssistantStepTemplate-0f7d9f62.js";import p from"./ChargePointInstallation-66ab99c9.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
+import{C as l}from"./index-f1ebfb88.js";import u from"./InstallAssistantStepTemplate-b18c62ce.js";import p from"./ChargePointInstallation-7ae4661c.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep7-f896ccc9.js b/web/settings/assets/InstallAssistantStep7-ed852473.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-f896ccc9.js
rename to web/settings/assets/InstallAssistantStep7-ed852473.js
index c9319b8c92..f4cb75007a 100644
--- a/web/settings/assets/InstallAssistantStep7-f896ccc9.js
+++ b/web/settings/assets/InstallAssistantStep7-ed852473.js
@@ -1 +1 @@
-import{C as l}from"./index-88a2073c.js";import m from"./InstallAssistantStepTemplate-0f7d9f62.js";import p from"./LoadManagementConfig-380e9c4d.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
+import{C as l}from"./index-f1ebfb88.js";import m from"./InstallAssistantStepTemplate-b18c62ce.js";import p from"./LoadManagementConfig-9fa3e6c0.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep8-86a4cd0e.js b/web/settings/assets/InstallAssistantStep8-7f8d9e76.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep8-86a4cd0e.js
rename to web/settings/assets/InstallAssistantStep8-7f8d9e76.js
index 462031a697..212e20e5cb 100644
--- a/web/settings/assets/InstallAssistantStep8-86a4cd0e.js
+++ b/web/settings/assets/InstallAssistantStep8-7f8d9e76.js
@@ -1 +1 @@
-import{C as l}from"./index-88a2073c.js";import u from"./InstallAssistantStepTemplate-0f7d9f62.js";import m from"./VehicleConfig-99736f29.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
+import{C as l}from"./index-f1ebfb88.js";import u from"./InstallAssistantStepTemplate-b18c62ce.js";import m from"./VehicleConfig-76952b56.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep9-4da82ba8.js b/web/settings/assets/InstallAssistantStep9-e32e780a.js
similarity index 91%
rename from web/settings/assets/InstallAssistantStep9-4da82ba8.js
rename to web/settings/assets/InstallAssistantStep9-e32e780a.js
index 973c4a196d..51b74e628c 100644
--- a/web/settings/assets/InstallAssistantStep9-4da82ba8.js
+++ b/web/settings/assets/InstallAssistantStep9-e32e780a.js
@@ -1 +1 @@
-import{C as l}from"./index-88a2073c.js";import p from"./InstallAssistantStepTemplate-0f7d9f62.js";import u from"./DataManagement-f4b0feef.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
+import{C as l}from"./index-f1ebfb88.js";import p from"./InstallAssistantStepTemplate-b18c62ce.js";import u from"./DataManagement-6aff49ed.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-0f7d9f62.js b/web/settings/assets/InstallAssistantStepTemplate-b18c62ce.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-0f7d9f62.js
rename to web/settings/assets/InstallAssistantStepTemplate-b18c62ce.js
index 2dd0aa7722..5496ed0133 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-0f7d9f62.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-b18c62ce.js
@@ -1 +1 @@
-import{C as v}from"./index-88a2073c.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
+import{C as v}from"./index-f1ebfb88.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstantChargeConfig-17057c0d.js b/web/settings/assets/InstantChargeConfig-9b1ccfc3.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-17057c0d.js
rename to web/settings/assets/InstantChargeConfig-9b1ccfc3.js
index 932f544d07..a65f789052 100644
--- a/web/settings/assets/InstantChargeConfig-17057c0d.js
+++ b/web/settings/assets/InstantChargeConfig-9b1ccfc3.js
@@ -1 +1 @@
-import{C as l}from"./index-88a2073c.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-f1ebfb88.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-7d6a7592.js b/web/settings/assets/LegalSettings-9d18b06d.js
similarity index 97%
rename from web/settings/assets/LegalSettings-7d6a7592.js
rename to web/settings/assets/LegalSettings-9d18b06d.js
index 4bbdcdaad2..43168c2a4b 100644
--- a/web/settings/assets/LegalSettings-7d6a7592.js
+++ b/web/settings/assets/LegalSettings-9d18b06d.js
@@ -1 +1 @@
-import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-88a2073c.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
+import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-f1ebfb88.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
diff --git a/web/settings/assets/LoadManagementConfig-380e9c4d.js b/web/settings/assets/LoadManagementConfig-9fa3e6c0.js
similarity index 99%
rename from web/settings/assets/LoadManagementConfig-380e9c4d.js
rename to web/settings/assets/LoadManagementConfig-9fa3e6c0.js
index f47d2c451b..83d5605510 100644
--- a/web/settings/assets/LoadManagementConfig-380e9c4d.js
+++ b/web/settings/assets/LoadManagementConfig-9fa3e6c0.js
@@ -1 +1 @@
-import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-88a2073c.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
+import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-f1ebfb88.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
diff --git a/web/settings/assets/MqttBridgeConfig-b16c88cd.js b/web/settings/assets/MqttBridgeConfig-87097544.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-b16c88cd.js
rename to web/settings/assets/MqttBridgeConfig-87097544.js
index 73ded8dae0..d8deca2aae 100644
--- a/web/settings/assets/MqttBridgeConfig-b16c88cd.js
+++ b/web/settings/assets/MqttBridgeConfig-87097544.js
@@ -1 +1 @@
-import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-88a2073c.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
+import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-f1ebfb88.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
diff --git a/web/settings/assets/OptionalComponents-4599d69d.js b/web/settings/assets/OptionalComponents-49b0ff6e.js
similarity index 99%
rename from web/settings/assets/OptionalComponents-4599d69d.js
rename to web/settings/assets/OptionalComponents-49b0ff6e.js
index 676ca8c1b8..b6c8ee6088 100644
--- a/web/settings/assets/OptionalComponents-4599d69d.js
+++ b/web/settings/assets/OptionalComponents-49b0ff6e.js
@@ -1,2 +1,2 @@
-import{_ as $,C}from"./index-88a2073c.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as z,X as O,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as _,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function A(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),_(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>m.updateConfiguration(g,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const j=y(F,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(O,V);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:j})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),_(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen. Das Fahrzeug wird erst nach dem Anstecken zugeordnet."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
+import{_ as $,C}from"./index-f1ebfb88.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as z,X as O,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as _,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function A(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),_(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>m.updateConfiguration(g,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const j=y(F,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(O,V);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:j})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),_(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen. Das Fahrzeug wird erst nach dem Anstecken zugeordnet."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
 `)},{help:o(()=>[a(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(b,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/optional/int_display/active",i)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[a(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",te,[n(b,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/optional/int_display/rotation",i)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ne,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),oe,n(T,null,{default:o(()=>[a(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/optional/int_display/standby",i)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",ae,[ie,n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",se,[le,n(b,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/optional/int_display/only_local_charge_points",i)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[a(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),pe,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",re,[n(D,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=i=>m.updateSelectedDisplayTheme(i))},{help:o(()=>[a(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),_(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=i=>m.updateConfiguration("openWB/optional/int_display/theme",i))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=i=>e.$emit("save")),onReset:t[8]||(t[8]=i=>e.$emit("reset")),onDefaults:t[9]||(t[9]=i=>e.$emit("defaults"))})])])}const ye=y(H,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{ye as default};
diff --git a/web/settings/assets/PVChargeConfig-d62a1759.js b/web/settings/assets/PVChargeConfig-988712ae.js
similarity index 99%
rename from web/settings/assets/PVChargeConfig-d62a1759.js
rename to web/settings/assets/PVChargeConfig-988712ae.js
index f476575762..23454e4847 100644
--- a/web/settings/assets/PVChargeConfig-d62a1759.js
+++ b/web/settings/assets/PVChargeConfig-988712ae.js
@@ -1 +1 @@
-import{C as B}from"./index-88a2073c.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
+import{C as B}from"./index-f1ebfb88.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-a3ebfb4e.js b/web/settings/assets/ScheduledChargeConfig-0b6dc1c6.js
similarity index 97%
rename from web/settings/assets/ScheduledChargeConfig-a3ebfb4e.js
rename to web/settings/assets/ScheduledChargeConfig-0b6dc1c6.js
index 8b7cad7c31..99571824bc 100644
--- a/web/settings/assets/ScheduledChargeConfig-a3ebfb4e.js
+++ b/web/settings/assets/ScheduledChargeConfig-0b6dc1c6.js
@@ -1 +1 @@
-import{C as p}from"./index-88a2073c.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
+import{C as p}from"./index-f1ebfb88.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
diff --git a/web/settings/assets/Status-3ed5f34f.js b/web/settings/assets/Status-29efdc6d.js
similarity index 99%
rename from web/settings/assets/Status-3ed5f34f.js
rename to web/settings/assets/Status-29efdc6d.js
index 92db8753eb..fe99de48de 100644
--- a/web/settings/assets/Status-3ed5f34f.js
+++ b/web/settings/assets/Status-29efdc6d.js
@@ -1 +1 @@
-import{C as y}from"./index-88a2073c.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
+import{C as y}from"./index-f1ebfb88.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
diff --git a/web/settings/assets/Support-1d4bc359.js b/web/settings/assets/Support-e534f32f.js
similarity index 98%
rename from web/settings/assets/Support-1d4bc359.js
rename to web/settings/assets/Support-e534f32f.js
index 834f3594cd..bf89aa0795 100644
--- a/web/settings/assets/Support-1d4bc359.js
+++ b/web/settings/assets/Support-e534f32f.js
@@ -1 +1 @@
-import{l as w,g as y,F as V}from"./vendor-fortawesome-71546160.js";import{C as B}from"./index-88a2073c.js";import{_ as v,u as a,k as l,l as c,x as r,A as h,N as t,D as s,a4 as F,B as g,y as e,q as x}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";w.add(y);const z={name:"OpenwbSupportView",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},C={class:"support"},A={name:"supportForm"},q={key:1},N={key:0},W=r("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stellen Sie beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),E=r("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),L=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),U={class:"row justify-content-center"};function G(d,o,T,H,n,_){const p=a("router-link"),u=a("openwb-base-alert"),f=a("FontAwesomeIcon"),b=a("openwb-base-text-input"),m=a("openwb-base-textarea"),S=a("openwb-base-click-button"),k=a("openwb-base-card"),D=a("font-awesome-icon");return l(),c("div",C,[r("form",A,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),h(u,{key:0,subtype:"danger"},{default:t(()=>[e(" Sie müssen der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(l(),c("div",q,[s(u,{subtype:"success"},{default:t(()=>[e(" Sie haben der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und können Systemberichte senden. ")]),_:1}),s(k,{title:"Systembericht"},F({default:t(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(l(),c("div",N,[s(u,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lesen Sie den Hilfetext, der durch Klick auf das "),s(f,{icon:["far","question-circle"]}),e(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),W,M,E,L])]),_:1}),s(b,{title:"E-Mail",required:"",subtype:"email",modelValue:n.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>n.sendDebugData.email=i)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(b,{title:"openWB Seriennummer",required:"",modelValue:n.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>n.sendDebugData.serialNumber=i)},{help:t(()=>[e(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),s(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>n.sendDebugData.installedComponents=i)},{help:t(()=>[e(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),s(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>n.sendDebugData.vehicles=i)},{help:t(()=>[e(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),s(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>n.sendDebugData.message=i)},null,8,["modelValue"])])):g("",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",U,[s(S,{class:x(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?g("",!0):(l(),h(u,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),s(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(z,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default};
+import{l as w,g as y,F as V}from"./vendor-fortawesome-71546160.js";import{C as B}from"./index-f1ebfb88.js";import{_ as v,u as a,k as l,l as c,x as r,A as h,N as t,D as s,a4 as F,B as g,y as e,q as x}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";w.add(y);const z={name:"OpenwbSupportView",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},C={class:"support"},A={name:"supportForm"},q={key:1},N={key:0},W=r("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stellen Sie beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),E=r("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),L=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),U={class:"row justify-content-center"};function G(d,o,T,H,n,_){const p=a("router-link"),u=a("openwb-base-alert"),f=a("FontAwesomeIcon"),b=a("openwb-base-text-input"),m=a("openwb-base-textarea"),S=a("openwb-base-click-button"),k=a("openwb-base-card"),D=a("font-awesome-icon");return l(),c("div",C,[r("form",A,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),h(u,{key:0,subtype:"danger"},{default:t(()=>[e(" Sie müssen der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(l(),c("div",q,[s(u,{subtype:"success"},{default:t(()=>[e(" Sie haben der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und können Systemberichte senden. ")]),_:1}),s(k,{title:"Systembericht"},F({default:t(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(l(),c("div",N,[s(u,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lesen Sie den Hilfetext, der durch Klick auf das "),s(f,{icon:["far","question-circle"]}),e(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),W,M,E,L])]),_:1}),s(b,{title:"E-Mail",required:"",subtype:"email",modelValue:n.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>n.sendDebugData.email=i)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(b,{title:"openWB Seriennummer",required:"",modelValue:n.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>n.sendDebugData.serialNumber=i)},{help:t(()=>[e(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),s(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>n.sendDebugData.installedComponents=i)},{help:t(()=>[e(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),s(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>n.sendDebugData.vehicles=i)},{help:t(()=>[e(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),s(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>n.sendDebugData.message=i)},null,8,["modelValue"])])):g("",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",U,[s(S,{class:x(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?g("",!0):(l(),h(u,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),s(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(z,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default};
diff --git a/web/settings/assets/System-4ed50969.js b/web/settings/assets/System-083c7c2d.js
similarity index 98%
rename from web/settings/assets/System-4ed50969.js
rename to web/settings/assets/System-083c7c2d.js
index 8e6930f0be..92c8b99574 100644
--- a/web/settings/assets/System-4ed50969.js
+++ b/web/settings/assets/System-083c7c2d.js
@@ -1 +1 @@
-import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-88a2073c.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
+import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-f1ebfb88.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
diff --git a/web/settings/assets/TestingStore-5a64ca39.js b/web/settings/assets/TestingStore-92266ef4.js
similarity index 99%
rename from web/settings/assets/TestingStore-5a64ca39.js
rename to web/settings/assets/TestingStore-92266ef4.js
index 4c7593371d..10eb29d35b 100644
--- a/web/settings/assets/TestingStore-5a64ca39.js
+++ b/web/settings/assets/TestingStore-92266ef4.js
@@ -1 +1 @@
-import{C as V}from"./index-88a2073c.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
+import{C as V}from"./index-f1ebfb88.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
diff --git a/web/settings/assets/TimeChargeConfig-b85503dd.js b/web/settings/assets/TimeChargeConfig-23157950.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-b85503dd.js
rename to web/settings/assets/TimeChargeConfig-23157950.js
index 6b624d7ef1..6537d27a61 100644
--- a/web/settings/assets/TimeChargeConfig-b85503dd.js
+++ b/web/settings/assets/TimeChargeConfig-23157950.js
@@ -1 +1 @@
-import{C as l}from"./index-88a2073c.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-f1ebfb88.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-99736f29.js b/web/settings/assets/VehicleConfig-76952b56.js
similarity index 99%
rename from web/settings/assets/VehicleConfig-99736f29.js
rename to web/settings/assets/VehicleConfig-76952b56.js
index ee0b6a121d..d881cac32e 100644
--- a/web/settings/assets/VehicleConfig-99736f29.js
+++ b/web/settings/assets/VehicleConfig-76952b56.js
@@ -1 +1 @@
-import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-88a2073c.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as v,N as a,y as l,z as S,D as n,x as g,a2 as re,a3 as ue,J as A,B as m,K as B,a4 as q,P as N,q as I,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,h,F,f,s){const W=C("openwb-base-alert"),b=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(h.configuration).length==0?(r(),v(W,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(h.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(W,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(h.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":h.configuration,"onUpdate:modelValue":d[0]||(d[0]=U=>s.updateConfiguration(U,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(W,{subtype:"info"},{default:a(()=>[g("pre",null,S(JSON.stringify(h.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-ef8ce1de.js"),["assets/vehicle-ef8ce1de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-88a2073c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function _e(e,d,h,F,f,s){const W=C("openwb-base-heading");return r(),c(A,null,[n(W,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(h.vehicle.name)+'" ',1)]),_:1}),(r(),v(ue(s.myComponent),{vehicleId:h.vehicleId,vehicle:h.vehicle,configuration:h.vehicle.configuration,vehicleType:h.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=b=>s.updateConfiguration(b))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const fe=Z(ve,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:fe},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+h].name;e.push({value:h,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+h].name;e.push({value:h,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(h=>h.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:h}})},removeChargeTemplateSchedulePlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,h){this.showChargeTemplateSchedulePlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:h}})},removeChargeTemplateTimeChargingPlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,h){this.showChargeTemplateTimeChargingPlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},_=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=_(()=>g("hr",null,null,-1)),Te={key:0},Ue=_(()=>g("br",null,null,-1)),We=["innerHTML"],Le=_(()=>g("hr",null,null,-1)),Pe=_(()=>g("br",null,null,-1)),Ae=_(()=>g("br",null,null,-1)),ye=_(()=>g("br",null,null,-1)),Ee={key:1},Be=_(()=>g("hr",{class:"border-secondary"},null,-1)),Fe={key:0},qe={key:1},Me=_(()=>g("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),De={key:0},Ze=_(()=>g("br",null,null,-1)),xe=_(()=>g("br",null,null,-1)),Ne=_(()=>g("br",null,null,-1)),Ie=_(()=>g("br",null,null,-1)),Oe={key:1},Re={key:0},He={key:0},je={key:3},Je={key:0},$e={key:1},Ge=_(()=>g("br",null,null,-1)),Qe=_(()=>g("br",null,null,-1)),Xe=_(()=>g("ol",null,[g("li",null," Zielladen (Sofortladen) mit Priorität "),g("li",null,"Zielladen (Sofortladen)"),g("li",null,"Zeitladen mit Priorität"),g("li",null,"Zeitladen"),g("li",null,"Sofortladen mit Priorität"),g("li",null,"Sofortladen"),g("li",null,"PV (Min-Anteil) mit Priorität"),g("li",null,"PV (Min-Anteil)"),g("li",null,"Zielladen (PV) mit Priorität"),g("li",null,"Zielladen (PV)"),g("li",null,"PV (PV-Anteil) mit Priorität"),g("li",null,"PV (PV-Anteil)")],-1)),Ye={key:0},Ke={key:0},et={key:0},tt=_(()=>g("hr",null,null,-1)),nt=_(()=>g("hr",null,null,-1)),at=_(()=>g("br",null,null,-1)),lt=_(()=>g("br",null,null,-1)),it=_(()=>g("hr",null,null,-1)),ot=_(()=>g("br",null,null,-1)),dt=_(()=>g("br",null,null,-1)),rt=["onClick"],ut={key:0},st={key:1},mt={key:2},ct={key:3},ht={key:4},gt={key:5},pt={key:4},bt=_(()=>g("hr",null,null,-1)),vt=["onClick"],_t={key:0},ft={key:1},wt={key:2},kt={key:3},Vt={key:4},Ct={key:5};function St(e,d,h,F,f,s){const W=C("openwb-base-modal-dialog"),b=C("font-awesome-icon"),U=C("openwb-base-avatar"),E=C("openwb-base-alert"),L=C("openwb-base-text-input"),M=C("openwb-base-select-input"),O=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),y=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(A,null,[n(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(f.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(f.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(f.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),g("div",ke,[g("form",Ve,[n(y,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(A,null,B(s.vehicleIndexes,i=>(r(),v(y,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),ze,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!h.installAssistantActive?(r(),c("div",Te,[n(O,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),Ue,g("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,We)]),_:1}),Le])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),Pe,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),ye,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Ee,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Be,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(y,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Fe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),Me,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(A,null,B(s.evTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",De,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),Ze,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),xe,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Ne,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Oe,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",Re," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),v(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(y,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Je,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",$e,[(r(!0),c(A,null,B(s.chargeTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Ge,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Qe,Xe]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",Ye,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",Ke,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",et,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),tt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),nt,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),at,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),it,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),ot,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),dt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(A,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",ut,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",st,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",mt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ct,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",ht,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,rt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),v(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",gt,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),h.installAssistantActive?m("",!0):(r(),c("div",pt,[bt,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(A,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",ft,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",wt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",kt,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Vt,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,vt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(L,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",Ct,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Et=Z(we,[["render",St],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Et as default};
+import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-f1ebfb88.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as v,N as a,y as l,z as S,D as n,x as g,a2 as re,a3 as ue,J as A,B as m,K as B,a4 as q,P as N,q as I,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,h,F,f,s){const W=C("openwb-base-alert"),b=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(h.configuration).length==0?(r(),v(W,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(h.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(W,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(h.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":h.configuration,"onUpdate:modelValue":d[0]||(d[0]=U=>s.updateConfiguration(U,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(W,{subtype:"info"},{default:a(()=>[g("pre",null,S(JSON.stringify(h.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-33c61ff2.js"),["assets/vehicle-33c61ff2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-f1ebfb88.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function _e(e,d,h,F,f,s){const W=C("openwb-base-heading");return r(),c(A,null,[n(W,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(h.vehicle.name)+'" ',1)]),_:1}),(r(),v(ue(s.myComponent),{vehicleId:h.vehicleId,vehicle:h.vehicle,configuration:h.vehicle.configuration,vehicleType:h.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=b=>s.updateConfiguration(b))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const fe=Z(ve,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:fe},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+h].name;e.push({value:h,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+h].name;e.push({value:h,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(h=>h.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:h}})},removeChargeTemplateSchedulePlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,h){this.showChargeTemplateSchedulePlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:h}})},removeChargeTemplateTimeChargingPlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,h){this.showChargeTemplateTimeChargingPlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},_=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=_(()=>g("hr",null,null,-1)),Te={key:0},Ue=_(()=>g("br",null,null,-1)),We=["innerHTML"],Le=_(()=>g("hr",null,null,-1)),Pe=_(()=>g("br",null,null,-1)),Ae=_(()=>g("br",null,null,-1)),ye=_(()=>g("br",null,null,-1)),Ee={key:1},Be=_(()=>g("hr",{class:"border-secondary"},null,-1)),Fe={key:0},qe={key:1},Me=_(()=>g("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),De={key:0},Ze=_(()=>g("br",null,null,-1)),xe=_(()=>g("br",null,null,-1)),Ne=_(()=>g("br",null,null,-1)),Ie=_(()=>g("br",null,null,-1)),Oe={key:1},Re={key:0},He={key:0},je={key:3},Je={key:0},$e={key:1},Ge=_(()=>g("br",null,null,-1)),Qe=_(()=>g("br",null,null,-1)),Xe=_(()=>g("ol",null,[g("li",null," Zielladen (Sofortladen) mit Priorität "),g("li",null,"Zielladen (Sofortladen)"),g("li",null,"Zeitladen mit Priorität"),g("li",null,"Zeitladen"),g("li",null,"Sofortladen mit Priorität"),g("li",null,"Sofortladen"),g("li",null,"PV (Min-Anteil) mit Priorität"),g("li",null,"PV (Min-Anteil)"),g("li",null,"Zielladen (PV) mit Priorität"),g("li",null,"Zielladen (PV)"),g("li",null,"PV (PV-Anteil) mit Priorität"),g("li",null,"PV (PV-Anteil)")],-1)),Ye={key:0},Ke={key:0},et={key:0},tt=_(()=>g("hr",null,null,-1)),nt=_(()=>g("hr",null,null,-1)),at=_(()=>g("br",null,null,-1)),lt=_(()=>g("br",null,null,-1)),it=_(()=>g("hr",null,null,-1)),ot=_(()=>g("br",null,null,-1)),dt=_(()=>g("br",null,null,-1)),rt=["onClick"],ut={key:0},st={key:1},mt={key:2},ct={key:3},ht={key:4},gt={key:5},pt={key:4},bt=_(()=>g("hr",null,null,-1)),vt=["onClick"],_t={key:0},ft={key:1},wt={key:2},kt={key:3},Vt={key:4},Ct={key:5};function St(e,d,h,F,f,s){const W=C("openwb-base-modal-dialog"),b=C("font-awesome-icon"),U=C("openwb-base-avatar"),E=C("openwb-base-alert"),L=C("openwb-base-text-input"),M=C("openwb-base-select-input"),O=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),y=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(A,null,[n(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(f.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(f.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(f.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),g("div",ke,[g("form",Ve,[n(y,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(A,null,B(s.vehicleIndexes,i=>(r(),v(y,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),ze,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!h.installAssistantActive?(r(),c("div",Te,[n(O,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),Ue,g("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,We)]),_:1}),Le])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),Pe,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),ye,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Ee,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Be,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(y,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Fe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),Me,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(A,null,B(s.evTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",De,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),Ze,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),xe,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Ne,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Oe,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",Re," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),v(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(y,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Je,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",$e,[(r(!0),c(A,null,B(s.chargeTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Ge,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Qe,Xe]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",Ye,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",Ke,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",et,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),tt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),nt,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),at,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),it,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),ot,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),dt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(A,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",ut,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",st,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",mt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ct,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",ht,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,rt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),v(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",gt,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),h.installAssistantActive?m("",!0):(r(),c("div",pt,[bt,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(A,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",ft,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",wt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",kt,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Vt,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,vt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(L,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",Ct,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Et=Z(we,[["render",St],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Et as default};
diff --git a/web/settings/assets/bat-4202cb7c.js b/web/settings/assets/bat-4202cb7c.js
new file mode 100644
index 0000000000..a1cfebe3aa
--- /dev/null
+++ b/web/settings/assets/bat-4202cb7c.js
@@ -0,0 +1 @@
+import{_ as r,u as t,k as c,l,D as n,N as p,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSolisBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solis-bat"},v={class:"small"};function h(o,e,s,w,x,a){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für Solis Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-7696fb32.js b/web/settings/assets/bat-7696fb32.js
new file mode 100644
index 0000000000..46b541ed9a
--- /dev/null
+++ b/web/settings/assets/bat-7696fb32.js
@@ -0,0 +1 @@
+import{_ as p,u as t,k as l,l as m,D as o,N as i,y as a,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSigenergyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},f={class:"device-sigenergy-bat"},v={class:"small"};function h(n,e,s,y,w,d){const r=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),m("div",f,[o(r,null,{default:i(()=>[a(" Einstellungen für Sigenergy Batteriespeicher "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[a(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const D=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-15d8fd18.js b/web/settings/assets/counter-15d8fd18.js
new file mode 100644
index 0000000000..8cc3d002b7
--- /dev/null
+++ b/web/settings/assets/counter-15d8fd18.js
@@ -0,0 +1 @@
+import{_ as r,u as n,k as c,l,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolisCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solis-counter"},v={class:"small"};function h(o,e,s,w,x,i){const a=n("openwb-base-heading"),u=n("openwb-base-number-input");return c(),l("div",g,[t(a,null,{default:p(()=>[m(" Einstellungen für Solis Zähler "),_("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-c9a9f709.js b/web/settings/assets/counter-c9a9f709.js
new file mode 100644
index 0000000000..62f1ba7b65
--- /dev/null
+++ b/web/settings/assets/counter-c9a9f709.js
@@ -0,0 +1 @@
+import{_ as p,u as o,k as l,l as m,D as t,N as i,y as s,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSigenergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sigenergy-counter"},v={class:"small"};function h(n,e,a,y,w,r){const u=o("openwb-base-heading"),d=o("openwb-base-number-input");return l(),m("div",b,[t(u,null,{default:i(()=>[s(" Einstellungen für Sigenergy Zähler "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),t(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const C=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-3d446bca.js b/web/settings/assets/device-3d446bca.js
new file mode 100644
index 0000000000..62335e36d2
--- /dev/null
+++ b/web/settings/assets/device-3d446bca.js
@@ -0,0 +1 @@
+import{_ as p,u as o,k as l,l as c,D as i,N as m,y as _,x as g,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSigenergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-sigenergy"},w={class:"small"};function x(n,e,a,y,h,s){const u=o("openwb-base-heading"),d=o("openwb-base-text-input"),r=o("openwb-base-number-input");return l(),c("div",v,[i(u,null,{default:m(()=>[_(" Einstellungen für Sigenergy "),g("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const B=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-99dfaf68.js b/web/settings/assets/device-99dfaf68.js
new file mode 100644
index 0000000000..00428e12e1
--- /dev/null
+++ b/web/settings/assets/device-99dfaf68.js
@@ -0,0 +1 @@
+import{_ as p,u as n,k as c,l as m,D as o,N as _,y as b,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolis",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-solis"},h={class:"small"};function x(i,e,a,S,V,s){const u=n("openwb-base-heading"),l=n("openwb-base-text-input"),r=n("openwb-base-number-input"),d=n("openwb-base-select-input");return c(),m("div",w,[o(u,null,{default:_(()=>[b(" Einstellungen für Solis "),f("span",h,"(Modul: "+v(i.$options.name)+")",1)]),_:1}),o(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),o(d,{title:"Version",notSelected:"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>s.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const B=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/electricity_tariff-5204ab68.js b/web/settings/assets/electricity_tariff-eefa229a.js
similarity index 97%
rename from web/settings/assets/electricity_tariff-5204ab68.js
rename to web/settings/assets/electricity_tariff-eefa229a.js
index 8d10c949c6..8b82357e01 100644
--- a/web/settings/assets/electricity_tariff-5204ab68.js
+++ b/web/settings/assets/electricity_tariff-eefa229a.js
@@ -1 +1 @@
-import{C as p}from"./index-88a2073c.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
+import{C as p}from"./index-f1ebfb88.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
diff --git a/web/settings/assets/external_inverter-4a132ee4.js b/web/settings/assets/external_inverter-4a132ee4.js
new file mode 100644
index 0000000000..b4a634b933
--- /dev/null
+++ b/web/settings/assets/external_inverter-4a132ee4.js
@@ -0,0 +1 @@
+import{_ as p,u as o,k as f,l as g,D as t,N as s,y as l,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},h={class:"device-solaredge-external-inverter"},x={class:"small"};function w(i,e,a,S,E,r){const d=o("openwb-base-heading"),c=o("openwb-base-alert"),u=o("openwb-base-number-input"),m=o("openwb-base-select-input");return f(),g("div",h,[t(d,null,{default:s(()=>[l(" Einstellungen für SolarEdge externen Wechselrichter "),_("span",x,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),t(c,{subtype:"info"},{default:s(()=>[l(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')]),_:1}),t(u,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(u,{title:"SolarEdge-Meter-ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.meter_id"))},null,8,["model-value"]),t(m,{title:"Leistung invertieren",notSelected:"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":a.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.factor"))},{help:s(()=>[l(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")]),_:1},8,["model-value"])])}const D=p(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/external_inverter-53c24f18.js b/web/settings/assets/external_inverter-53c24f18.js
deleted file mode 100644
index 773c8a084a..0000000000
--- a/web/settings/assets/external_inverter-53c24f18.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as r,k as p,l as _,D as n,N as d,y as l,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solaredge-external-inverter"},h={class:"small"};function x(t,e,a,w,S,i){const u=r("openwb-base-heading"),m=r("openwb-base-alert"),s=r("openwb-base-number-input");return p(),_("div",v,[n(u,null,{default:d(()=>[l(" Einstellungen für SolarEdge externen Wechselrichter "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(m,{subtype:"info"},{default:d(()=>[l(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')]),_:1}),n(s,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"SolarEdge-Meter-ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.meter_id"))},null,8,["model-value"])])}const B=c(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/index-88a2073c.js b/web/settings/assets/index-f1ebfb88.js
similarity index 96%
rename from web/settings/assets/index-88a2073c.js
rename to web/settings/assets/index-f1ebfb88.js
index a3fadf93ea..64e190de3b 100644
--- a/web/settings/assets/index-88a2073c.js
+++ b/web/settings/assets/index-f1ebfb88.js
@@ -1 +1 @@
-import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-3ed5f34f.js"),["assets/Status-3ed5f34f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-d71ce4c1.js"),["assets/ChargeLog-d71ce4c1.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-53af13b6.js"),["assets/Chart-53af13b6.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-aecc1081.js"),["assets/GeneralConfig-aecc1081.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-4599d69d.js"),["assets/OptionalComponents-4599d69d.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-be9fdbc5.js"),["assets/GeneralChargeConfig-be9fdbc5.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-17057c0d.js"),["assets/InstantChargeConfig-17057c0d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-d62a1759.js"),["assets/PVChargeConfig-d62a1759.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-b85503dd.js"),["assets/TimeChargeConfig-b85503dd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-a3ebfb4e.js"),["assets/ScheduledChargeConfig-a3ebfb4e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-912044d0.js"),["assets/HardwareInstallation-912044d0.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-380e9c4d.js"),["assets/LoadManagementConfig-380e9c4d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-66ab99c9.js"),["assets/ChargePointInstallation-66ab99c9.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-99736f29.js"),["assets/VehicleConfig-99736f29.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-28061265.js"),["assets/CloudConfig-28061265.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-b16c88cd.js"),["assets/MqttBridgeConfig-b16c88cd.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-957ac5e2.js"),["assets/DebugConfig-957ac5e2.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-1d4bc359.js"),["assets/Support-1d4bc359.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-7d6a7592.js"),["assets/LegalSettings-7d6a7592.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-4ed50969.js"),["assets/System-4ed50969.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-f4b0feef.js"),["assets/DataManagement-f4b0feef.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-d68215c6.js"),["assets/InstallAssistant-d68215c6.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-5a64ca39.js"),["assets/TestingStore-5a64ca39.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
+import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-29efdc6d.js"),["assets/Status-29efdc6d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-83ebac6d.js"),["assets/ChargeLog-83ebac6d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-70b754a3.js"),["assets/Chart-70b754a3.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-0de4c3ba.js"),["assets/GeneralConfig-0de4c3ba.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-49b0ff6e.js"),["assets/OptionalComponents-49b0ff6e.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-e3c03ea2.js"),["assets/GeneralChargeConfig-e3c03ea2.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-9b1ccfc3.js"),["assets/InstantChargeConfig-9b1ccfc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-988712ae.js"),["assets/PVChargeConfig-988712ae.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-23157950.js"),["assets/TimeChargeConfig-23157950.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-0b6dc1c6.js"),["assets/ScheduledChargeConfig-0b6dc1c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-6ab82611.js"),["assets/HardwareInstallation-6ab82611.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-9fa3e6c0.js"),["assets/LoadManagementConfig-9fa3e6c0.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-7ae4661c.js"),["assets/ChargePointInstallation-7ae4661c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-76952b56.js"),["assets/VehicleConfig-76952b56.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-8640925d.js"),["assets/CloudConfig-8640925d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-87097544.js"),["assets/MqttBridgeConfig-87097544.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-8fb79648.js"),["assets/DebugConfig-8fb79648.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-e534f32f.js"),["assets/Support-e534f32f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-9d18b06d.js"),["assets/LegalSettings-9d18b06d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-083c7c2d.js"),["assets/System-083c7c2d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-6aff49ed.js"),["assets/DataManagement-6aff49ed.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-5646f4c7.js"),["assets/InstallAssistant-5646f4c7.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-92266ef4.js"),["assets/TestingStore-92266ef4.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
diff --git a/web/settings/assets/inverter-597e2682.js b/web/settings/assets/inverter-597e2682.js
new file mode 100644
index 0000000000..0e48ab3fa5
--- /dev/null
+++ b/web/settings/assets/inverter-597e2682.js
@@ -0,0 +1 @@
+import{_ as p,u as t,k as l,l as m,D as o,N as i,y as s,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSigenergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sigenergy-inverter"},v={class:"small"};function h(n,e,r,y,w,a){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),m("div",b,[o(d,null,{default:i(()=>[s(" Einstellungen für Sigenergy Wechselrichter "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":r.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>a.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const I=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-5e52c5a2.js b/web/settings/assets/inverter-5e52c5a2.js
new file mode 100644
index 0000000000..37f149d736
--- /dev/null
+++ b/web/settings/assets/inverter-5e52c5a2.js
@@ -0,0 +1 @@
+import{_ as u,u as o,k as c,l,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolisInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solis-inverter"},g={class:"small"};function h(n,e,i,w,x,s){const a=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(a,null,{default:p(()=>[m(" Einstellungen für Solis Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-8faef1dd.js b/web/settings/assets/inverter-8faef1dd.js
new file mode 100644
index 0000000000..bd2a578f95
--- /dev/null
+++ b/web/settings/assets/inverter-8faef1dd.js
@@ -0,0 +1 @@
+import{_ as c,u as n,k as d,l as p,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceVartaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Varta Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/vehicle-ef8ce1de.js b/web/settings/assets/vehicle-33c61ff2.js
similarity index 97%
rename from web/settings/assets/vehicle-ef8ce1de.js
rename to web/settings/assets/vehicle-33c61ff2.js
index 145739eb62..126018339d 100644
--- a/web/settings/assets/vehicle-ef8ce1de.js
+++ b/web/settings/assets/vehicle-33c61ff2.js
@@ -1 +1 @@
-import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-88a2073c.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
+import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-f1ebfb88.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/index.html b/web/settings/index.html
index ec143fa6f5..cde750e07d 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -7,7 +7,7 @@
 	<meta name="viewport" content="width=device-width,initial-scale=1.0">
 	<link rel="icon" href="/openWB/web/settings/favicon.ico">
 	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-88a2073c.js"></script>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-f1ebfb88.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-2f1828d0.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-f2b8aa6f.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-71546160.js">

From 8c576406ce52d49dee06232fcc8945db0d7ff22a Mon Sep 17 00:00:00 2001
From: cshagen <cshagen@hagens.ch>
Date: Thu, 12 Sep 2024 09:44:33 +0200
Subject: [PATCH 040/205] Colors theme(web): Fix powermeter (#1880)

* fix powermeter
* reverse order of charge modes
* order of charge buttons in modal
---
 .../source/src/assets/js/processMessages.ts   |  8 ++--
 .../source/src/assets/js/themeConfig.ts       | 40 +++++++++----------
 .../src/components/buttonBar/BBSelect.vue     |  2 +-
 .../chargePointList/ChargePointList.vue       | 12 +++---
 .../src/components/chargePointList/model.ts   | 12 +++++-
 .../src/components/powerMeter/PowerMeter.vue  | 14 +++++--
 .../colors/source/src/views/ColorsTheme.vue   |  5 ++-
 .../colors/web/assets/index-BXxsmrtl.js       |  6 ---
 ...{index-DO1I-sJT.css => index-C6-JiuzP.css} |  2 +-
 .../colors/web/assets/index-OBHjRVxr.js       |  6 +++
 .../colors/web/assets/manifest-DEQalSKE.json  | 20 ----------
 .../modules/web_themes/colors/web/index.html  |  6 +--
 12 files changed, 65 insertions(+), 68 deletions(-)
 delete mode 100644 packages/modules/web_themes/colors/web/assets/index-BXxsmrtl.js
 rename packages/modules/web_themes/colors/web/assets/{index-DO1I-sJT.css => index-C6-JiuzP.css} (99%)
 create mode 100644 packages/modules/web_themes/colors/web/assets/index-OBHjRVxr.js
 delete mode 100644 packages/modules/web_themes/colors/web/assets/manifest-DEQalSKE.json

diff --git a/packages/modules/web_themes/colors/source/src/assets/js/processMessages.ts b/packages/modules/web_themes/colors/source/src/assets/js/processMessages.ts
index e5b50532b1..ed6265f314 100755
--- a/packages/modules/web_themes/colors/source/src/assets/js/processMessages.ts
+++ b/packages/modules/web_themes/colors/source/src/assets/js/processMessages.ts
@@ -255,7 +255,7 @@ function processSystemMessages(topic: string, message: string) {
 			case 'consumption_counter':
 				if (counters[config.id]) {
 					counters[config.id].name = config.name
-			}
+				}
 				break
 			case 'inverter':
 			case 'inverter_secondary':
@@ -268,10 +268,10 @@ function processSystemMessages(topic: string, message: string) {
 				if (!batteries.value.has(config.id)) {
 					addBattery(config.id)
 				}
-				batteries.value.get(config.id)!.name = config.name	
+				batteries.value.get(config.id)!.name = config.name
 		}
-		
-	/* 	if (
+
+		/* 	if (
 			(config.type == 'counter' || config.type == 'consumption_counter') &&
 			counters[config.id]
 		) {
diff --git a/packages/modules/web_themes/colors/source/src/assets/js/themeConfig.ts b/packages/modules/web_themes/colors/source/src/assets/js/themeConfig.ts
index ff02e05393..fbcdb6574a 100644
--- a/packages/modules/web_themes/colors/source/src/assets/js/themeConfig.ts
+++ b/packages/modules/web_themes/colors/source/src/assets/js/themeConfig.ts
@@ -305,17 +305,17 @@ export const widescreen = computed(() => {
 	return screensize.x >= breakpoint
 })
 export const chargemodes: { [key: string]: ChargeModeInfo } = {
-	stop: {
-		mode: ChargeMode.stop,
-		name: 'Stop',
-		color: 'var(--color-fg)',
-		icon: 'fa-power-off',
+	instant_charging: {
+		mode: ChargeMode.instant_charging,
+		name: 'Sofort',
+		color: 'var(--color-charging)',
+		icon: 'fa-bolt',
 	},
-	standby: {
-		mode: ChargeMode.standby,
-		name: 'Standby',
-		color: 'var(--color-axis',
-		icon: 'fa-pause',
+	scheduled_charging: {
+		mode: ChargeMode.scheduled_charging,
+		name: 'Zielladen',
+		color: 'var(--color-battery)',
+		icon: 'fa-bullseye',
 	},
 	pv_charging: {
 		mode: ChargeMode.pv_charging,
@@ -323,17 +323,17 @@ export const chargemodes: { [key: string]: ChargeModeInfo } = {
 		color: 'var(--color-pv',
 		icon: 'fa-solar-panel',
 	},
-	scheduled_charging: {
-		mode: ChargeMode.scheduled_charging,
-		name: 'Zielladen',
-		color: 'var(--color-battery)',
-		icon: 'fa-bullseye',
+	standby: {
+		mode: ChargeMode.standby,
+		name: 'Standby',
+		color: 'var(--color-axis',
+		icon: 'fa-pause',
 	},
-	instant_charging: {
-		mode: ChargeMode.instant_charging,
-		name: 'Sofort',
-		color: 'var(--color-charging)',
-		icon: 'fa-bolt',
+	stop: {
+		mode: ChargeMode.stop,
+		name: 'Stop',
+		color: 'var(--color-fg)',
+		icon: 'fa-power-off',
 	},
 }
 export class GlobalData {
diff --git a/packages/modules/web_themes/colors/source/src/components/buttonBar/BBSelect.vue b/packages/modules/web_themes/colors/source/src/components/buttonBar/BBSelect.vue
index 9e1aafd653..12fbf40786 100755
--- a/packages/modules/web_themes/colors/source/src/components/buttonBar/BBSelect.vue
+++ b/packages/modules/web_themes/colors/source/src/components/buttonBar/BBSelect.vue
@@ -116,12 +116,12 @@ const buttons = [
 		name: 'Sofort',
 		color: 'var(--color-charging)',
 	},
-	{ mode: 'pv_charging', name: 'PV', color: 'var(--color-pv)' },
 	{
 		mode: 'scheduled_charging',
 		name: 'Zielladen',
 		color: 'var(--color-battery)',
 	},
+	{ mode: 'pv_charging', name: 'PV', color: 'var(--color-pv)' },
 	{ mode: 'standby', name: 'Standby', color: 'var(--color-axis)' },
 	{ mode: 'stop', name: 'Stop', color: 'var(--color-axis)' },
 ]
diff --git a/packages/modules/web_themes/colors/source/src/components/chargePointList/ChargePointList.vue b/packages/modules/web_themes/colors/source/src/components/chargePointList/ChargePointList.vue
index 568986fdb0..693871431a 100755
--- a/packages/modules/web_themes/colors/source/src/components/chargePointList/ChargePointList.vue
+++ b/packages/modules/web_themes/colors/source/src/components/chargePointList/ChargePointList.vue
@@ -5,7 +5,7 @@
 		:slides-per-view="1"
 		:pagination="{ clickable: true }"
 		class="cplist m-0 p-0 d-flex align-items-stretch"
-		:class="cplistclasses" 
+		:class="cplistclasses"
 	>
 		<swiper-slide
 			v-for="chargepoint in chargepointsToDisplay"
@@ -47,7 +47,7 @@ const chargepointsToDisplay = computed(() => {
 	return cpArray
 })
 const cplistclasses = computed(() => {
-	return (totalWidth.value + ' ' + widgetId.value)
+	return totalWidth.value + ' ' + widgetId.value
 })
 const totalWidth = computed(() => {
 	switch (Object.values(chargePoints).length) {
@@ -61,12 +61,12 @@ const totalWidth = computed(() => {
 			return 'col-lg-12'
 	}
 })
-const widgetId = computed(()=> {
-	return 'swiper-chargepoints-'+props.id
+const widgetId = computed(() => {
+	return 'swiper-chargepoints-' + props.id
 })
 function updateLayout() {
 	// update swiper layout
-	let tmp = document.querySelector('.'+ widgetId.value)
+	let tmp = document.querySelector('.' + widgetId.value)
 	if (tmp) {
 		swiperEl = tmp as SwiperContainer
 		swiper = swiperEl.swiper
@@ -92,7 +92,7 @@ function updateLayout() {
 }
 
 onMounted(() => {
-	let tmp = document.querySelector('.'+ widgetId.value)
+	let tmp = document.querySelector('.' + widgetId.value)
 	if (tmp) {
 		swiperEl = tmp as SwiperContainer
 		swiper = swiperEl.swiper
diff --git a/packages/modules/web_themes/colors/source/src/components/chargePointList/model.ts b/packages/modules/web_themes/colors/source/src/components/chargePointList/model.ts
index 2a9d4ad4a1..185f16ea07 100755
--- a/packages/modules/web_themes/colors/source/src/components/chargePointList/model.ts
+++ b/packages/modules/web_themes/colors/source/src/components/chargePointList/model.ts
@@ -431,8 +431,16 @@ export function addChargePoint(chargePointIndex: number) {
 		const cpcolor =
 			'var(--color-cp' + (Object.values(chargePoints).length - 1) + ')'
 		chargePoints[chargePointIndex].color = cpcolor
-
-		masterData['cp' + chargePointIndex].color = cpcolor
+		const cpId = 'cp' + chargePointIndex
+		if (!masterData[cpId]) {
+			masterData[cpId] = {
+				name: 'Ladepunkt',
+				color: cpcolor,
+				icon: 'Ladepunkt',
+			}
+		} else {
+			masterData['cp' + chargePointIndex].color = cpcolor
+		}
 		// console.info('Added chargepoint ' + chargePointIndex)
 	} else {
 		// console.info('Duplicate chargepoint message: ' + chargePointIndex)
diff --git a/packages/modules/web_themes/colors/source/src/components/powerMeter/PowerMeter.vue b/packages/modules/web_themes/colors/source/src/components/powerMeter/PowerMeter.vue
index 48bf5aed70..1002c0a234 100755
--- a/packages/modules/web_themes/colors/source/src/components/powerMeter/PowerMeter.vue
+++ b/packages/modules/web_themes/colors/source/src/components/powerMeter/PowerMeter.vue
@@ -86,7 +86,9 @@
 						:labeltext="
 							trimName(vehicle2.name) + ': ' + Math.round(vehicle2.soc) + '%'
 						"
-						:labelcolor="chargepoints[1].color"
+						:labelcolor="
+							chargepoints[1] ? chargepoints[1].color : 'var(--color-charging)'
+						"
 						:anchor="'end'"
 						:config="globalConfig"
 					/>
@@ -240,10 +242,14 @@ function labelCoordinates(item: number) {
 }
 
 const vehicle1 = computed(() => {
-	if (chargepoints.value.length < 1) {
-		return undefined
+	if (
+		chargepoints.value.length >= 1 &&
+		chargepoints.value[0].connectedVehicle != undefined &&
+		vehicles[chargepoints.value[0].connectedVehicle]
+	) {
+		return vehicles[chargepoints.value[0].connectedVehicle]
 	} else {
-		return vehicles[chargepoints.value[0].connectedVehicle] ?? undefined
+		return undefined
 	}
 })
 const vehicle2 = computed(() => {
diff --git a/packages/modules/web_themes/colors/source/src/views/ColorsTheme.vue b/packages/modules/web_themes/colors/source/src/views/ColorsTheme.vue
index 3950b7f507..07654a982f 100644
--- a/packages/modules/web_themes/colors/source/src/views/ColorsTheme.vue
+++ b/packages/modules/web_themes/colors/source/src/views/ColorsTheme.vue
@@ -152,7 +152,10 @@ Hagen */
 				aria-labelledby="chargepoint-tab"
 			>
 				<div class="row py-0 m-0 d-flex justify-content-center">
-					<ChargePointList id="3" :compact="globalConfig.shortCpList == 'always'" />
+					<ChargePointList
+						id="3"
+						:compact="globalConfig.shortCpList == 'always'"
+					/>
 				</div>
 			</div>
 			<div
diff --git a/packages/modules/web_themes/colors/web/assets/index-BXxsmrtl.js b/packages/modules/web_themes/colors/web/assets/index-BXxsmrtl.js
deleted file mode 100644
index b2cbf46cb3..0000000000
--- a/packages/modules/web_themes/colors/web/assets/index-BXxsmrtl.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var Za=Object.defineProperty;var Xa=(t,e,a)=>e in t?Za(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var _=(t,e,a)=>Xa(t,typeof e!="symbol"?e+"":e,a);import{r as se,m as Ka,a as X,c as p,i as eo,e as Be,u as Ut,t as Qe,b as Ft,s as de,d as O,p as ma,f as va,w as to,o as l,g as m,h as x,j as o,n as N,k as $,l as w,q as he,v as y,x as z,y as i,z as b,F as G,A as K,B as fa,C as Ze,D as pt,E as et,G as tt,H as st,I as it,J as ot,K as ao,L as bt,M as Z,N as oo,O as Ve,P as oe,Q as re,R as gt,S as ro,T as no,U as so,V as io,W as _a,X as lo,Y as co,Z as uo,_ as ho,$ as po,a0 as go,a1 as mo,a2 as vo,a3 as fo}from"./vendor-Cj6hjtXS.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))r(n);new MutationObserver(n=>{for(const s of n)if(s.type==="childList")for(const h of s.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&r(h)}).observe(document,{childList:!0,subtree:!0});function a(n){const s={};return n.integrity&&(s.integrity=n.integrity),n.referrerPolicy&&(s.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?s.credentials="include":n.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(n){if(n.ep)return;n.ep=!0;const s=a(n);fetch(n.href,s)}})();var fe=(t=>(t.instant_charging="instant_charging",t.pv_charging="pv_charging",t.scheduled_charging="scheduled_charging",t.standby="standby",t.stop="stop",t))(fe||{});class ba{constructor(e){_(this,"id");_(this,"name","Wechselrichter");_(this,"color","var(--color-pv)");_(this,"power",0);_(this,"energy",0);_(this,"energy_month",0);_(this,"energy_year",0);_(this,"energy_total",0);this.id=e}}const _o=[["EV","ev_mode"],["Speicher","bat_mode"],["MinSoc","min_soc_bat_mode"]];class bo{constructor(e){_(this,"id");_(this,"name","Gerät");_(this,"power",0);_(this,"status","off");_(this,"energy",0);_(this,"runningTime",0);_(this,"configured",!1);_(this,"_showInGraph",!0);_(this,"color","white");_(this,"canSwitch",!1);_(this,"countAsHouse",!1);_(this,"energyPv",0);_(this,"energyBat",0);_(this,"pvPercentage",0);_(this,"tempConfigured",0);_(this,"temp",[300,300,300]);_(this,"on",!1);_(this,"isAutomatic",!0);_(this,"icon","");this.id=e}get showInGraph(){return this._showInGraph}set showInGraph(e){this._showInGraph=e,A.items["sh"+this.id].showInGraph=e,ne()}setShowInGraph(e){this._showInGraph=e}}const ae=se(new Map);function qt(t){ae.has(t)?console.info("Duplicate sh device message: "+t):(ae.set(t,new bo(t)),ae.get(t).color="var(--color-sh"+ae.size+")")}const yo=0,ya={host:location.hostname,port:location.protocol=="https:"?443:80,endpoint:"/ws",protocol:location.protocol=="https:"?"wss":"ws",connectTimeout:4e3,reconnectPeriod:4e3,clean:!1,clientId:Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,6)},yt={topic:"",qos:yo};let Ce;const{host:wo,port:ko,endpoint:So,...wa}=ya,ra=`${wa.protocol}://${wo}:${ko}${So}`;try{console.debug("connectURL",ra),Ce=Ka.connect(ra,wa),Ce.on("connect",()=>{console.info("MQTT connection successful")}),Ce.on("disconnect",()=>{console.info("MQTT disconnected")}),Ce.on("error",t=>{console.error("MQTT connection failed: ",t)})}catch(t){console.error("MQTT connect error: ",t)}function xo(t){Ce?Ce.on("message",t):console.error("MqttRegister: MQTT client not available")}function qe(t){yt.topic=t;const{topic:e,qos:a}=yt;Ce.subscribe(e,{qos:a},r=>{if(r){console.error("MQTT Subscription error: "+r);return}})}function at(t){yt.topic=t;const{topic:e}=yt;Ce.unsubscribe(e,a=>{if(a){console.error("MQTT Unsubscribe from "+t+" failed: "+a);return}})}async function Nt(t,e){let r=Ce.connected,n=0;for(;!r&&n<20;)console.warn("MQTT publish: Not connected. Waiting 0.1 seconds"),await $o(100),r=Ce.connected,n+=1;if(n<20)try{Ce.publish(t,e,{qos:0},s=>{s&&console.warn("MQTT publish error: ",s),console.info("MQTT publish: Message sent: ["+t+"]("+e+")")})}catch(s){console.warn("MQTT publish: caught error: "+s)}else console.error("MQTT publish: Lost connection to MQTT server. Please reload the page")}function Yt(){return ya.clientId}function $o(t){return new Promise(e=>setTimeout(e,t))}class Mo{constructor(e){_(this,"id");_(this,"name","Ladepunkt");_(this,"icon","Ladepunkt");_(this,"type","");_(this,"ev",0);_(this,"template",0);_(this,"connectedPhases",0);_(this,"phase_1",0);_(this,"autoPhaseSwitchHw",!1);_(this,"controlPilotInterruptionHw",!1);_(this,"isEnabled",!0);_(this,"isPluggedIn",!1);_(this,"isCharging",!1);_(this,"_isLocked",!1);_(this,"_connectedVehicle",0);_(this,"chargeTemplate",0);_(this,"evTemplate",0);_(this,"_chargeMode",fe.pv_charging);_(this,"_hasPriority",!1);_(this,"currentPlan","");_(this,"averageConsumption",0);_(this,"vehicleName","");_(this,"rangeCharged",0);_(this,"rangeUnit","");_(this,"counter",0);_(this,"dailyYield",0);_(this,"energyPv",0);_(this,"energyBat",0);_(this,"pvPercentage",0);_(this,"faultState",0);_(this,"faultStr","");_(this,"phasesInUse",0);_(this,"power",0);_(this,"chargedSincePlugged",0);_(this,"stateStr","");_(this,"current",0);_(this,"currents",[0,0,0]);_(this,"phasesToUse",0);_(this,"isSocConfigured",!0);_(this,"isSocManual",!1);_(this,"waitingForSoc",!1);_(this,"color","white");_(this,"_timedCharging",!1);_(this,"_instantChargeLimitMode","");_(this,"_instantTargetCurrent",0);_(this,"_instantTargetSoc",0);_(this,"_instantMaxEnergy",0);_(this,"_pvFeedInLimit",!1);_(this,"_pvMinCurrent",0);_(this,"_pvMaxSoc",0);_(this,"_pvMinSoc",0);_(this,"_pvMinSocCurrent",0);_(this,"_etActive",!1);_(this,"_etMaxPrice",20);this.id=e}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e,ee("cpLock",e,this.id)}updateIsLocked(e){this._isLocked=e}get connectedVehicle(){return this._connectedVehicle}set connectedVehicle(e){this._connectedVehicle=e,ee("cpVehicle",e,this.id)}updateConnectedVehicle(e){this._connectedVehicle=e}get soc(){return Y[this.connectedVehicle]?Y[this.connectedVehicle].soc:0}set soc(e){Y[this.connectedVehicle]&&(Y[this.connectedVehicle].soc=e)}get chargeMode(){return this._chargeMode}set chargeMode(e){this._chargeMode=e,ee("chargeMode",e,this.id)}updateChargeMode(e){this._chargeMode=e}get hasPriority(){return this._hasPriority}set hasPriority(e){this._hasPriority=e,ee("cpPriority",e,this.id)}updateCpPriority(e){this._hasPriority=e}get timedCharging(){return ye[this.chargeTemplate]?ye[this.chargeTemplate].time_charging.active:!1}set timedCharging(e){ye[this.chargeTemplate].time_charging.active=e,ee("cpTimedCharging",e,this.chargeTemplate)}get instantTargetCurrent(){return this._instantTargetCurrent}set instantTargetCurrent(e){this._instantTargetCurrent=e,ee("cpInstantTargetCurrent",e,this.id)}updateInstantTargetCurrent(e){this._instantTargetCurrent=e}get instantChargeLimitMode(){return this._instantChargeLimitMode}set instantChargeLimitMode(e){this._instantChargeLimitMode=e,ee("cpInstantChargeLimitMode",e,this.id)}updateInstantChargeLimitMode(e){this._instantChargeLimitMode=e}get instantTargetSoc(){return this._instantTargetSoc}set instantTargetSoc(e){this._instantTargetSoc=e,ee("cpInstantTargetSoc",e,this.id)}updateInstantTargetSoc(e){this._instantTargetSoc=e}get instantMaxEnergy(){return this._instantMaxEnergy}set instantMaxEnergy(e){this._instantMaxEnergy=e,ee("cpInstantMaxEnergy",e,this.id)}updateInstantMaxEnergy(e){this._instantMaxEnergy=e}get pvFeedInLimit(){return this._pvFeedInLimit}set pvFeedInLimit(e){this._pvFeedInLimit=e,ee("cpPvFeedInLimit",e,this.id)}updatePvFeedInLimit(e){this._pvFeedInLimit=e}get pvMinCurrent(){return this._pvMinCurrent}set pvMinCurrent(e){this._pvMinCurrent=e,ee("cpPvMinCurrent",e,this.id)}updatePvMinCurrent(e){this._pvMinCurrent=e}get pvMaxSoc(){return this._pvMaxSoc}set pvMaxSoc(e){this._pvMaxSoc=e,ee("cpPvMaxSoc",e,this.id)}updatePvMaxSoc(e){this._pvMaxSoc=e}get pvMinSoc(){return this._pvMinSoc}set pvMinSoc(e){this._pvMinSoc=e,ee("cpPvMinSoc",e,this.id)}updatePvMinSoc(e){this._pvMinSoc=e}get pvMinSocCurrent(){return this._pvMinSocCurrent}set pvMinSocCurrent(e){this._pvMinSocCurrent=e,ee("cpPvMinSocCurrent",e,this.id)}updatePvMinSocCurrent(e){this._pvMinSocCurrent=e}get realCurrent(){switch(this.phasesInUse){case 0:return 0;case 1:return this.currents[0];case 2:return(this.currents[0]+this.currents[1])/2;case 3:return(this.currents[0]+this.currents[1]+this.currents[2])/3;default:return 0}}get etActive(){return Y[this.connectedVehicle]?Y[this.connectedVehicle].etActive:!1}set etActive(e){Y[this.connectedVehicle]&&(Y[this.connectedVehicle].etActive=e)}get etMaxPrice(){return Y[this.connectedVehicle].etMaxPrice??0}set etMaxPrice(e){ee("cpEtMaxPrice",Math.round(e*10)/1e6,this.id)}toPowerItem(){return{name:this.name,power:this.power,energy:this.dailyYield,energyPv:this.energyPv,energyBat:this.energyBat,pvPercentage:this.pvPercentage,color:this.color,icon:this.icon,showInGraph:!0}}}class Io{constructor(e){_(this,"id");_(this,"name","__invalid");_(this,"tags",[]);_(this,"config",{});_(this,"soc",0);_(this,"range",0);_(this,"_chargeTemplateId",0);_(this,"_evTemplateId",0);this.id=e}get chargeTemplateId(){return this._chargeTemplateId}set chargeTemplateId(e){this._chargeTemplateId=e,ee("vhChargeTemplateId",e,this.id)}updateChargeTemplateId(e){this._chargeTemplateId=e}get evTemplateId(){return this._evTemplateId}set evTemplateId(e){this._evTemplateId=e,ee("vhEvTemplateId",e,this.id)}updateEvTemplateId(e){this._evTemplateId=e}get etActive(){return ye[this.chargeTemplateId]?ye[this.chargeTemplateId].et.active:!1}set etActive(e){ye[this.chargeTemplateId]&&ee("priceCharging",e,this.chargeTemplateId)}get etMaxPrice(){if(ye[this.chargeTemplateId]&&ye[this.chargeTemplateId].et.active)return ye[this.chargeTemplateId].et.max_price*1e5}get chargepoint(){for(const e of Object.values(V))if(e.connectedVehicle==this.id)return e}get visible(){return this.name!="__invalid"&&(this.id!=0||v.showStandardVehicle)}}const V=se({}),Y=se({}),ye=se({}),lt=se({}),ct=se({}),Ht=se({});function Co(t){if(!(t in V)){V[t]=new Mo(t);const e="var(--color-cp"+(Object.values(V).length-1)+")";V[t].color=e,ce["cp"+t].color=e}}function Po(){Object.keys(V).forEach(t=>{delete V[parseInt(t)]})}const Bo={cpLock:"openWB/set/chargepoint/%/set/manual_lock",chargeMode:"openWB/set/vehicle/template/charge_template/%/chargemode/selected",cpPriority:"openWB/set/vehicle/template/charge_template/%/prio",cpTimedCharging:"openWB/set/vehicle/template/charge_template/%/time_charging/active",pvBatteryPriority:"openWB/set/general/chargemode_config/pv_charging/bat_mode",cpVehicle:"openWB/set/chargepoint/%/config/ev",cpInstantChargeLimitMode:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/selected",cpInstantTargetCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/current",cpInstantTargetSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/soc",cpInstantMaxEnergy:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/amount",cpPvFeedInLimit:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/feed_in_limit",cpPvMinCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_current",cpPvMaxSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/max_soc",cpPvMinSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc",cpPvMinSocCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc_current",cpEtMaxPrice:"openWB/set/vehicle/template/charge_template/%/et/max_price",vhChargeTemplateId:"openWB/set/vehicle/%/charge_template",vhEvTemplateId:"openWB/set/vehicle/%/ev_template",shSetManual:"openWB/set/LegacySmartHome/config/set/Devices/%/mode",shSwitchOn:"openWB/set/LegacySmartHome/config/set/Devices/%/device_manual_control",socUpdate:"openWB/set/vehicle/%/get/force_soc_update",setSoc:"openWB/set/vehicle/%/soc_module/calculated_soc_state/manual_soc",priceCharging:"openWB/set/vehicle/template/charge_template/%/et/active"};function ee(t,e,a=0){if(isNaN(a)){console.warn("Invalid index");return}let r=Bo[t];if(!r){console.warn("No topic for update type "+t);return}switch(t){case"chargeMode":case"cpPriority":case"cpScheduledCharging":case"cpInstantTargetCurrent":case"cpInstantChargeLimitMode":case"cpInstantTargetSoc":case"cpInstantMaxEnergy":case"cpPvFeedInLimit":case"cpPvMinCurrent":case"cpPvMaxSoc":case"cpPvMinSoc":case"cpEtMaxPrice":case"cpPvMinSocCurrent":r=r.replace("%",V[a].chargeTemplate.toString());break;default:r=r.replace("%",String(a))}switch(typeof e){case"number":Nt(r,JSON.stringify(+e));break;default:Nt(r,JSON.stringify(e))}}function Qt(t){Nt("openWB/set/command/"+Yt()+"/todo",JSON.stringify(t))}const be=500,xe=500,W={top:15,right:20,bottom:10,left:25},Zt=["charging","house","batIn","devices"];class Vo{constructor(){_(this,"data",[]);_(this,"_graphMode","");_(this,"waitForData",!0)}get graphMode(){return this._graphMode}set graphMode(e){this._graphMode=e}}const f=se(new Vo),ka=X(eo),He=p(()=>[0,be-W.left-2*W.right].map(t=>ka.value.applyX(t)));let ut=!0,rt=!0;function na(){ut=!1}function Lo(){ut=!0}function sa(){rt=!1}function Oo(){rt=!0}function Ao(t){rt=t}function mt(t){f.data=t,f.waitForData=!1}const pe=se({refreshTopicPrefix:"openWB/graph/alllivevaluesJson",updateTopic:"openWB/graph/lastlivevaluesJson",configTopic:"openWB/graph/config/#",initialized:!1,initCounter:0,graphRefreshCounter:0,rawDataPacks:[],duration:0,activate(t){this.unsubscribeUpdates(),this.subscribeRefresh(),t&&(f.data=[]),f.waitForData=!0,qe(this.configTopic),this.initialized=!1,this.initCounter=0,this.graphRefreshCounter=0,this.rawDataPacks=[],Go(),kt.value=!0},deactivate(){this.unsubscribeRefresh(),this.unsubscribeUpdates(),at(this.configTopic)},subscribeRefresh(){for(let t=1;t<17;t++)qe(this.refreshTopicPrefix+t)},unsubscribeRefresh(){for(let t=1;t<17;t++)at(this.refreshTopicPrefix+t)},subscribeUpdates(){qe(this.updateTopic)},unsubscribeUpdates(){at(this.updateTopic)}}),le=se({topic:"openWB/log/daily/#",date:new Date,activate(t){if(f.graphMode=="day"||f.graphMode=="today"){f.graphMode=="today"&&(this.date=new Date);const e=this.date.getFullYear().toString()+(this.date.getMonth()+1).toString().padStart(2,"0")+this.date.getDate().toString().padStart(2,"0");this.topic="openWB/log/daily/"+e,qe(this.topic),t&&(f.data=[]),f.waitForData=!0,Qt({command:"getDailyLog",data:{day:e}})}},deactivate(){at(this.topic)},back(){this.date=new Date(this.date.setTime(this.date.getTime()-864e5))},forward(){this.date=new Date(this.date.setTime(this.date.getTime()+864e5))},setDate(t){this.date=t},getDate(){return this.date}}),Ae=se({topic:"openWB/log/monthly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(t){const e=this.year.toString()+this.month.toString().padStart(2,"0");f.data=[],qe(this.topic),t&&(f.data=[]),f.waitForData=!0,Qt({command:"getMonthlyLog",data:{month:e}})},deactivate(){at(this.topic)},back(){this.month-=1,this.month<1&&(this.month=12,this.year-=1),this.activate()},forward(){const t=new Date;t.getFullYear()==this.year?this.month-1<t.getMonth()&&(this.month=this.month+1):(this.month=this.month+1,this.month>12&&(this.month=1,this.year+=1)),this.activate()},getDate(){return new Date(this.year,this.month)}}),Fe=se({topic:"openWB/log/yearly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(t){const e=this.year.toString();qe(this.topic),t&&(f.data=[]),f.waitForData=!0,Qt({command:"getYearlyLog",data:{year:e}})},deactivate(){at(this.topic)},back(){this.year-=1,this.activate()},forward(){this.year<new Date().getFullYear()&&(this.year=this.year+1,this.activate())},getDate(){return new Date(this.year,this.month)}});function me(t=!1){switch(f.graphMode==""?To(v.graphPreference):f.graphMode=="live"?v.graphPreference="live":v.graphPreference="today",t||(ut=!0,rt=!0),f.graphMode){case"live":le.deactivate(),Ae.deactivate(),Fe.deactivate(),pe.activate(!t);break;case"today":pe.deactivate(),Ae.deactivate(),Fe.deactivate(),le.activate(!t);break;case"day":pe.deactivate(),Ae.deactivate(),Fe.deactivate(),le.activate(!t);break;case"month":pe.deactivate(),le.deactivate(),Fe.deactivate(),Ae.activate(!t);break;case"year":pe.deactivate(),le.deactivate(),Ae.deactivate(),Fe.activate(!t);break}}function To(t){f.graphMode=t}function Do(t,e){e[t]>0&&(A.items[t].energyPv+=1e3/12*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),A.items[t].energyBat+=1e3/12*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}function Wo(t,e){e[t]>0&&(A.items[t].energyPv+=1e3*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),A.items[t].energyBat+=1e3*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}const zo=["evuIn","pv","batOut","evuOut"],dt=X(!1);function Xt(t,e){Object.entries(t).length>0?(dt.value=!1,Object.entries(t.counter).forEach(([a,r])=>{(e.length==0||e.includes(a))&&(A.items.evuIn.energy+=r.energy_imported,A.items.evuOut.energy+=r.energy_exported)}),A.items.pv.energy=t.pv.all.energy_exported,t.bat.all&&(A.items.batIn.energy=t.bat.all.energy_imported,A.items.batOut.energy=t.bat.all.energy_exported),Object.entries(t.cp).forEach(([a,r])=>{a=="all"?(A.setEnergy("charging",r.energy_imported),r.energy_imported_pv!=null&&(A.setEnergyPv("charging",r.energy_imported_pv),A.setEnergyBat("charging",r.energy_imported_bat))):A.setEnergy(a,r.energy_imported)}),A.setEnergy("devices",0),Object.entries(t.sh).forEach(([a,r])=>{A.setEnergy(a,r.energy_imported);const n=a.substring(2);ae.get(+n).countAsHouse||(A.items.devices.energy+=r.energy_imported)}),t.hc&&t.hc.all?(A.setEnergy("house",t.hc.all.energy_imported),t.hc.all.energy_imported_pv!=null&&(A.setEnergyPv("house",t.hc.all.energy_imported_pv),A.setEnergyBat("house",t.hc.all.energy_imported_bat))):A.calculateHouseEnergy(),A.keys().forEach(a=>{zo.includes(a)||(A.setPvPercentage(a,Math.round((A.items[a].energyPv+A.items[a].energyBat)/A.items[a].energy*100)),Zt.includes(a)&&(j[a].energy=A.items[a].energy,j[a].energyPv=A.items[a].energyPv,j[a].energyBat=A.items[a].energyBat,j[a].pvPercentage=A.items[a].pvPercentage))}),f.graphMode=="today"&&(Object.values(V).forEach(a=>{const r=A.items["cp"+a.id];r&&(a.energyPv=r.energyPv,a.energyBat=r.energyBat,a.pvPercentage=r.pvPercentage)}),ae.forEach(a=>{const r=A.items["sh"+a.id];r&&(a.energy=r.energy,a.energyPv=r.energyPv,a.energyBat=r.energyBat,a.pvPercentage=r.pvPercentage)}))):dt.value=!0,kt.value=!0}const Pe=p(()=>{const t=Be(f.data,e=>new Date(e.date));return t[0]&&t[1]?Ut().domain(t).range([0,be-W.left-2*W.right]):Qe().range([0,0])});function Go(){A.keys().forEach(t=>{Zt.includes(t)&&(j[t].energy=A.items[t].energy,j[t].energyPv=0,j[t].energyBat=0,j[t].pvPercentage=0)}),Object.values(V).forEach(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0}),ae.forEach(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0})}const Ne=p(()=>{const t=Be(f.data,e=>e.date);return t[1]?Ft().domain(Array.from({length:t[1]},(e,a)=>a+1)).paddingInner(.4).range([0,be-W.left-2]):Ft().range([0,0])});function Kt(){switch(f.graphMode){case"live":f.graphMode="today",v.showRightButton=!0,me();break;case"today":f.graphMode="day",le.deactivate(),le.back(),le.activate(),me();break;case"day":le.back(),me();break;case"month":Ae.back();break;case"year":Fe.back();break}}function Sa(){const t=new Date;switch(f.graphMode){case"live":break;case"today":f.graphMode="live",v.showRightButton=!1,me();break;case"day":le.forward(),le.date.getDate()==t.getDate()&&le.date.getMonth()==t.getMonth()&&le.date.getFullYear()==t.getFullYear()&&(f.graphMode="today"),me();break;case"month":Ae.forward();break;case"year":Fe.forward();break}}function xa(){switch(f.graphMode){case"live":Kt();break;case"day":case"today":f.graphMode="month",me();break;case"month":f.graphMode="year",me();break}}function $a(){switch(f.graphMode){case"year":f.graphMode="month",me();break;case"month":f.graphMode="today",me();break;case"today":case"day":f.graphMode="live",me();break}}function ia(t){if(f.graphMode=="day"||f.graphMode=="today"){le.setDate(t);const e=new Date;le.date.getDate()==e.getDate()&&le.date.getMonth()==e.getMonth()&&le.date.getFullYear()==e.getFullYear()?f.graphMode="today":f.graphMode="day",me()}}const Ue=X(new Map);class Eo{constructor(){_(this,"_showRelativeArcs",!1);_(this,"showTodayGraph",!0);_(this,"_graphPreference","today");_(this,"_usageStackOrder",0);_(this,"_displayMode","dark");_(this,"_showGrid",!1);_(this,"_smartHomeColors","normal");_(this,"_decimalPlaces",1);_(this,"_showQuickAccess",!0);_(this,"_simpleCpList",!1);_(this,"_shortCpList","no");_(this,"_showAnimations",!0);_(this,"_preferWideBoxes",!1);_(this,"_maxPower",4e3);_(this,"_fluidDisplay",!1);_(this,"_showClock","no");_(this,"_showButtonBar",!0);_(this,"_showCounters",!1);_(this,"_showVehicles",!1);_(this,"_showStandardVehicle",!0);_(this,"_showPrices",!1);_(this,"_showInverters",!1);_(this,"_debug",!1);_(this,"isEtEnabled",!1);_(this,"etPrice",20.5);_(this,"showRightButton",!0);_(this,"showLeftButton",!0);_(this,"animationDuration",300);_(this,"animationDelay",100);_(this,"zoomGraph",!1)}get showRelativeArcs(){return this._showRelativeArcs}set showRelativeArcs(e){this._showRelativeArcs=e,ne()}setShowRelativeArcs(e){this._showRelativeArcs=e}get graphPreference(){return this._graphPreference}set graphPreference(e){this._graphPreference=e,ne()}setGraphPreference(e){this._graphPreference=e}get usageStackOrder(){return this._usageStackOrder}set usageStackOrder(e){this._usageStackOrder=e,ne()}setUsageStackOrder(e){this._usageStackOrder=e}get displayMode(){return this._displayMode}set displayMode(e){this._displayMode=e,No(e)}setDisplayMode(e){this._displayMode=e}get showGrid(){return this._showGrid}set showGrid(e){this._showGrid=e,ne()}setShowGrid(e){this._showGrid=e}get decimalPlaces(){return this._decimalPlaces}set decimalPlaces(e){this._decimalPlaces=e,ne()}setDecimalPlaces(e){this._decimalPlaces=e}get smartHomeColors(){return this._smartHomeColors}set smartHomeColors(e){this._smartHomeColors=e,la(e),ne()}setSmartHomeColors(e){this._smartHomeColors=e,la(e)}get showQuickAccess(){return this._showQuickAccess}set showQuickAccess(e){this._showQuickAccess=e,ne()}setShowQuickAccess(e){this._showQuickAccess=e}get simpleCpList(){return this._simpleCpList}set simpleCpList(e){this._simpleCpList=e,ne()}setSimpleCpList(e){this._simpleCpList=e}get shortCpList(){return this._shortCpList}set shortCpList(e){this._shortCpList=e,ne()}setShortCpList(e){this._shortCpList=e}get showAnimations(){return this._showAnimations}set showAnimations(e){this._showAnimations=e,ne()}setShowAnimations(e){this._showAnimations=e}get preferWideBoxes(){return this._preferWideBoxes}set preferWideBoxes(e){this._preferWideBoxes=e,ne()}setPreferWideBoxes(e){this._preferWideBoxes=e}get maxPower(){return this._maxPower}set maxPower(e){this._maxPower=e,ne()}setMaxPower(e){this._maxPower=e}get fluidDisplay(){return this._fluidDisplay}set fluidDisplay(e){this._fluidDisplay=e,ne()}setFluidDisplay(e){this._fluidDisplay=e}get showClock(){return this._showClock}set showClock(e){this._showClock=e,ne()}setShowClock(e){this._showClock=e}get debug(){return this._debug}set debug(e){this._debug=e,ne()}setDebug(e){this._debug=e}get showButtonBar(){return this._showButtonBar}set showButtonBar(e){this._showButtonBar=e,ne()}setShowButtonBar(e){this._showButtonBar=e}get showCounters(){return this._showCounters}set showCounters(e){this._showCounters=e,ne()}setShowCounters(e){this._showCounters=e}get showVehicles(){return this._showVehicles}set showVehicles(e){this._showVehicles=e,ne()}setShowVehicles(e){this._showVehicles=e}get showStandardVehicle(){return this._showStandardVehicle}set showStandardVehicle(e){this._showStandardVehicle=e,ne()}setShowStandardVehicle(e){this._showStandardVehicle=e}get showPrices(){return this._showPrices}set showPrices(e){this._showPrices=e,ne()}setShowPrices(e){this._showPrices=e}get showInverters(){return this._showInverters}set showInverters(e){this._showInverters=e,Lo(),Oo(),ne()}setShowInverters(e){this._showInverters=e}}const v=se(new Eo);function Ma(){Jo();const t=de("html");t.classed("theme-dark",v.displayMode=="dark"),t.classed("theme-light",v.displayMode=="light"),t.classed("theme-blue",v.displayMode=="blue"),t.classed("shcolors-standard",v.smartHomeColors=="standard"),t.classed("shcolors-advanced",v.smartHomeColors=="advanced"),t.classed("shcolors-normal",v.smartHomeColors=="normal")}const jo=992,wt=se({x:document.documentElement.clientWidth,y:document.documentElement.clientHeight});function Uo(){wt.x=document.documentElement.clientWidth,wt.y=document.documentElement.clientHeight,Ma()}const Re=p(()=>wt.x>=jo),ge={stop:{mode:fe.stop,name:"Stop",color:"var(--color-fg)",icon:"fa-power-off"},standby:{mode:fe.standby,name:"Standby",color:"var(--color-axis",icon:"fa-pause"},pv_charging:{mode:fe.pv_charging,name:"PV",color:"var(--color-pv",icon:"fa-solar-panel"},scheduled_charging:{mode:fe.scheduled_charging,name:"Zielladen",color:"var(--color-battery)",icon:"fa-bullseye"},instant_charging:{mode:fe.instant_charging,name:"Sofort",color:"var(--color-charging)",icon:"fa-bolt"}};class Fo{constructor(){_(this,"batterySoc",0);_(this,"isBatteryConfigured",!0);_(this,"chargeMode","0");_(this,"_pvBatteryPriority","ev_mode");_(this,"displayLiveGraph",!0);_(this,"isEtEnabled",!0);_(this,"etMaxPrice",0);_(this,"etCurrentPrice",0);_(this,"cpDailyExported",0);_(this,"evuId",0);_(this,"etProvider","")}get pvBatteryPriority(){return this._pvBatteryPriority}set pvBatteryPriority(e){this._pvBatteryPriority=e,ee("pvBatteryPriority",e)}updatePvBatteryPriority(e){this._pvBatteryPriority=e}}function ne(){Ro()}function No(t){const e=de("html");e.classed("theme-dark",t=="dark"),e.classed("theme-light",t=="light"),e.classed("theme-blue",t=="blue"),ne()}function Ho(){v.maxPower=R.evuIn.power+R.pv.power+R.batOut.power,ne()}function la(t){const e=de("html");e.classed("shcolors-normal",t=="normal"),e.classed("shcolors-standard",t=="standard"),e.classed("shcolors-advanced",t=="advanced")}const Oe={chargemode:"Der Lademodus für das Fahrzeug an diesem Ladepunkt",vehicle:"Das Fahrzeug, das an diesem Ladepounkt geladen wird",locked:"Für das Laden sperren",priority:"Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar",timeplan:"Das Laden nach Zeitplan für dieses Fahrzeug aktivieren",minsoc:"Immer mindestens bis zum eingestellten Ladestand laden. Wenn notwendig mit Netzstrom.",minpv:"Durchgehend mit mindestens dem eingestellten Strom laden. Wenn notwendig mit Netzstrom.",pricebased:"Laden bei dynamischem Stromtarif, wenn eingestellter Maximalpreis unterboten wird.",pvpriority:"Ladepriorität bei PV-Produktion. Bevorzung von Fahzeugen, Speicher, oder Fahrzeugen bis zum eingestellten Mindest-Ladestand. Die Einstellung ist für alle Ladepunkte gleich."};function Ro(){const t={};t.hideSH=[...ae.values()].filter(e=>!e.showInGraph).map(e=>e.id),t.showLG=v.graphPreference=="live",t.displayM=v.displayMode,t.stackO=v.usageStackOrder,t.showGr=v.showGrid,t.decimalP=v.decimalPlaces,t.smartHomeC=v.smartHomeColors,t.relPM=v.showRelativeArcs,t.maxPow=v.maxPower,t.showQA=v.showQuickAccess,t.simpleCP=v.simpleCpList,t.shortCP=v.shortCpList,t.animation=v.showAnimations,t.wideB=v.preferWideBoxes,t.fluidD=v.fluidDisplay,t.clock=v.showClock,t.showButtonBar=v.showButtonBar,t.showCounters=v.showCounters,t.showVehicles=v.showVehicles,t.showStandardV=v.showStandardVehicle,t.showPrices=v.showPrices,t.showInv=v.showInverters,t.debug=v.debug,document.cookie="openWBColorTheme="+JSON.stringify(t)+";max-age=16000000;samesite=strict"}function Jo(){const e=document.cookie.split(";").filter(a=>a.split("=")[0]==="openWBColorTheme");if(e.length>0){const a=JSON.parse(e[0].split("=")[1]);a.decimalP!==void 0&&v.setDecimalPlaces(+a.decimalP),a.smartHomeC!==void 0&&v.setSmartHomeColors(a.smartHomeC),a.hideSH!==void 0&&a.hideSH.forEach(r=>{ae.get(r)==null&&qt(r),ae.get(r).setShowInGraph(!1)}),a.showLG!==void 0&&v.setGraphPreference(a.showLG?"live":"today"),a.maxPow!==void 0&&v.setMaxPower(+a.maxPow),a.relPM!==void 0&&v.setShowRelativeArcs(a.relPM),a.displayM!==void 0&&v.setDisplayMode(a.displayM),a.stackO!==void 0&&v.setUsageStackOrder(a.stackO),a.showGr!==void 0&&v.setShowGrid(a.showGr),a.showQA!==void 0&&v.setShowQuickAccess(a.showQA),a.simpleCP!==void 0&&v.setSimpleCpList(a.simpleCP),a.shortCP!==void 0&&v.setShortCpList(a.shortCP),a.animation!=null&&v.setShowAnimations(a.animation),a.wideB!=null&&v.setPreferWideBoxes(a.wideB),a.fluidD!=null&&v.setFluidDisplay(a.fluidD),a.clock!=null&&v.setShowClock(a.clock),a.showButtonBar!==void 0&&v.setShowButtonBar(a.showButtonBar),a.showCounters!==void 0&&v.setShowCounters(a.showCounters),a.showVehicles!==void 0&&v.setShowVehicles(a.showVehicles),a.showStandardV!==void 0&&v.setShowStandardVehicle(a.showStandardV),a.showPrices!==void 0&&v.setShowPrices(a.showPrices),a.showInv!==void 0&&v.setShowInverters(a.showInv),a.debug!==void 0&&v.setDebug(a.debug)}}const ce=se({evuIn:{name:"Netz",color:"var(--color-evu)",icon:""},pv:{name:"PV",color:"var(--color-pv",icon:""},batOut:{name:"Bat >",color:"var(--color-battery)",icon:""},evuOut:{name:"Export",color:"var(--color-export)",icon:""},charging:{name:"Laden",color:"var(--color-charging)",icon:""},devices:{name:"Geräte",color:"var(--color-devices)",icon:""},batIn:{name:"> Bat",color:"var(--color-battery)",icon:""},house:{name:"Haus",color:"var(--color-house)",icon:""},cp1:{name:"Ladepunkt",color:"var(--color-cp1)",icon:"Ladepunkt"},cp2:{name:"Ladepunkt",color:"var(--color-cp2)",icon:"Ladepunkt"},cp3:{name:"Ladepunkt",color:"var(--color-cp3)",icon:"Ladepunkt"},cp4:{name:"Ladepunkt",color:"var(--color-cp4)",icon:"Ladepunkt"},cp5:{name:"Ladepunkt",color:"var(--color-cp5)",icon:"Ladepunkt"},cp6:{name:"Ladepunkt",color:"var(--color-cp6)",icon:"Ladepunkt"},cp7:{name:"Ladepunkt",color:"var(--color-cp7)",icon:"Ladepunkt"},cp8:{name:"Ladepunkt",color:"var(--color-cp8)",icon:"Ladepunkt"},sh1:{name:"Gerät",color:"var(--color-sh1)",icon:"Gerät"},sh2:{name:"Gerät",color:"var(--color-sh2)",icon:"Gerät"},sh3:{name:"Gerät",color:"var(--color-sh3)",icon:"Gerät"},sh4:{name:"Gerät",color:"var(--color-sh4)",icon:"Gerät"},sh5:{name:"Gerät",color:"var(--color-sh5)",icon:"Gerät"},sh6:{name:"Gerät",color:"var(--color-sh6)",icon:"Gerät"},sh7:{name:"Gerät",color:"var(--color-sh7)",icon:"Gerät"},sh8:{name:"Gerät",color:"var(--color-sh8)",icon:"Gerät"},sh9:{name:"Gerät",color:"var(--color-sh9)",icon:"Gerät"},pv1:{name:"PV",color:"var(--color-pv1)",icon:"Wechselrichter"},pv2:{name:"PV",color:"var(--color-pv2)",icon:"Wechselrichter"},pv3:{name:"PV",color:"var(--color-pv3)",icon:"Wechselrichter"},pv4:{name:"PV",color:"var(--color-pv4)",icon:"Wechselrichter"},pv5:{name:"PV",color:"var(--color-pv5)",icon:"Wechselrichter"},pv6:{name:"PV",color:"var(--color-pv6)",icon:"Wechselrichter"},pv7:{name:"PV",color:"var(--color-pv7)",icon:"Wechselrichter"},pv8:{name:"PV",color:"var(--color-pv8)",icon:"Wechselrichter"},pv9:{name:"PV",color:"var(--color-pv9)",icon:"Wechselrichter"},bat1:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat2:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat3:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat4:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat5:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat6:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat7:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat8:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat9:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"}});class Ia{constructor(){_(this,"_items",{});this.addItem("evuIn"),this.addItem("pv"),this.addItem("batOut"),this.addItem("evuOut"),this.addItem("charging"),this.addItem("devices"),this.addItem("batIn"),this.addItem("house")}get items(){return this._items}keys(){return Object.keys(this._items)}values(){return Object.values(this._items)}addItem(e,a){this._items[e]=a?Te(e,a):Te(e)}setEnergy(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energy=a}setEnergyPv(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyPv=a}setEnergyBat(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyBat=a}setPvPercentage(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].pvPercentage=a<=100?a:100}calculateHouseEnergy(){this._items.house.energy=this._items.evuIn.energy+this._items.pv.energy+this._items.batOut.energy-this._items.evuOut.energy-this._items.batIn.energy-this._items.charging.energy-this._items.devices.energy}}let A=se(new Ia);function ea(){A=new Ia}const R=se({evuIn:Te("evuIn"),pv:Te("pv"),batOut:Te("batOut")}),j=se({evuOut:Te("evuOut"),charging:Te("charging"),devices:Te("devices"),batIn:Te("batIn"),house:Te("house")}),ue=se(new Fo);X("");const kt=X(!1);function Te(t,e){return{name:ce[t]?ce[t].name:"item",power:0,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:e||(ce[t]?ce[t].color:"var(--color-charging)"),icon:ce[t]?ce[t].icon:"",showInGraph:!0}}const Rt=X(new Date),ke=X(new Map),qo=t=>{ke.value.set(t,new ba(t)),ke.value.get(t).color=ce["pv"+ke.value.size].color},Yo=["origin"],Qo=O({__name:"PMSourceArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=p(()=>{let r={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:"",showInGraph:!0},n=R;n["zz-empty"]=r;const s=Object.values(R).length-1,h=ma().value(u=>u.power).startAngle(-Math.PI/2+e.circleGapSize).endAngle(Math.PI/2-e.circleGapSize).sort(null),g=va().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius).padAngle(0),c=de("g#pmSourceArc");return c.selectAll("*").remove(),c.selectAll("sources").data(h(Object.values(n))).enter().append("path").attr("d",g).attr("fill",u=>u.data.color).attr("stroke",(u,d)=>d==s?u.data.power>0?"var(--color-scale)":"null":u.data.color),"pmSourceArc.vue"});return to(()=>{let r=R.pv.power+R.evuIn.power+R.batOut.power;r>v.maxPower&&(v.maxPower=r)}),(r,n)=>(l(),m("g",{id:"pmSourceArc",origin:a.value},null,8,Yo))}}),Zo=["origin"],Xo=O({__name:"PMUsageArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=p(()=>{let r={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:"",showInGraph:!0};const n=[j.evuOut,j.charging].concat([...ae.values()].filter(u=>u.configured&&!u.countAsHouse).sort((u,d)=>d.power-u.power)).concat([j.batIn,j.house]).concat(r),s=n.length-1,h=ma().value(u=>u.power).startAngle(Math.PI*1.5-e.circleGapSize).endAngle(Math.PI/2+e.circleGapSize).sort(null),g=va().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius),c=de("g#pmUsageArc");return c.selectAll("*").remove(),c.selectAll("consumers").data(h(n)).enter().append("path").attr("d",g).attr("fill",u=>u.data.color).attr("stroke",(u,d)=>d==s?u.data.power>0?"var(--color-scale)":"null":u.data.color),"pmUsageArc.vue"});return(r,n)=>(l(),m("g",{id:"pmUsageArc",origin:a.value},null,8,Zo))}});function $e(t,e=1){let a;if(t>=1e3&&e<4){switch(e){case 0:a=Math.round(t/1e3);break;case 1:a=Math.round(t/100)/10;break;case 2:a=Math.round(t/10)/100;break;case 3:a=Math.round(t)/1e3;break;default:a=Math.round(t/100)/10;break}return(a==null?void 0:a.toLocaleString(void 0,{minimumFractionDigits:e}))+" kW"}else return Math.round(t).toLocaleString(void 0)+" W"}function ht(t,e=1,a=!1){let r;if(t>1e6&&(a=!0,t=t/1e3),t>=1e3&&e<4){switch(e){case 0:r=Math.round(t/1e3);break;case 1:r=(Math.round(t/100)/10).toFixed(1);break;case 2:r=(Math.round(t/10)/100).toFixed(2);break;case 3:r=(Math.round(t)/1e3).toFixed(3);break;default:r=Math.round(t/100)/10;break}return r.toLocaleString(void 0,{minimumFractionDigits:e})+(a?" MWh":" kWh")}else return Math.round(t).toLocaleString(void 0)+(a?" kWh":" Wh")}function Ko(t){const e=Math.floor(t/3600),a=(t%3600/60).toFixed(0);return e>0?e+"h "+a+" min":a+" min"}function Ca(t){return t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function er(t,e){return["Jan","Feb","März","April","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Dez"][t]+" "+e}function tr(t){return t!=999?(Math.round(t*10)/10).toLocaleString(void 0,{minimumFractionDigits:1})+"°":"-"}const vt=O({__name:"FormatWatt",props:{watt:{}},setup(t){const e=t,a=p(()=>$e(e.watt,v.decimalPlaces));return(r,n)=>x(a.value)}}),ar={key:0,id:"pmLabel"},or=["x","y","fill","text-anchor"],rr=22,Le=O({__name:"PMLabel",props:{x:{},y:{},data:{},props:{},anchor:{},labeltext:{},labelicon:{},labelcolor:{}},setup(t){const e=t,a=p(()=>e.labeltext?e.labeltext:e.props?e.props.icon+" ":e.labelicon?e.labelicon+" ":""),r=p(()=>e.labelcolor?e.labelcolor:e.props?e.props.color:""),n=p(()=>!e.data||e.data.power>0),s=p(()=>e.labeltext?"":"fas");return(h,g)=>n.value?(l(),m("g",ar,[o("text",{x:h.x,y:h.y,fill:r.value,"text-anchor":h.anchor,"font-size":rr,class:"pmLabel"},[o("tspan",{class:N(s.value)},x(a.value),3),o("tspan",null,[h.data!==void 0?(l(),$(vt,{key:0,watt:h.data.power},null,8,["watt"])):w("",!0)])],8,or)])):w("",!0)}}),nr={class:"wb-widget p-0 m-0 shadow"},sr={class:"d-flex justify-content-between"},ir={class:"m-4 me-0 mb-0"},lr=o("div",{class:"p-0"},"(title goes here)",-1),cr={class:"p-4 pb-0 ps-0 m-0",style:{"text-align":"right"}},dr={class:"px-4 pt-4 pb-2 wb-subwidget"},ur={class:"row"},hr={class:"col m-0 p-0"},pr={class:"container-fluid m-0 p-0"},gr={key:0},mr=o("hr",null,null,-1),vr={class:"px-4 py-2 wb-subwidget"},fr={class:"row"},_r={class:"col"},br={class:"container-fluid m-0 p-0"},$t=O({__name:"WBWidget",props:{variableWidth:{type:Boolean},fullWidth:{type:Boolean}},setup(t){const e=t,a=p(()=>e.fullWidth?"col-12":e.variableWidth&&v.preferWideBoxes?"col-lg-6":"col-lg-4");return(r,n)=>(l(),m("div",{class:N(["p-2 m-0 d-flex",a.value])},[o("div",nr,[o("div",sr,[o("h3",ir,[he(r.$slots,"title",{},()=>[lr]),he(r.$slots,"subtitle")]),o("div",cr,[he(r.$slots,"buttons")])]),o("div",dr,[o("div",ur,[o("div",hr,[o("div",pr,[he(r.$slots,"default")])])])]),r.$slots.footer!=null?(l(),m("div",gr,[mr,o("div",vr,[o("div",fr,[o("div",_r,[o("div",br,[he(r.$slots,"footer")])])])])])):w("",!0)])],2))}});class yr{constructor(){_(this,"active",!1);_(this,"etPriceList",new Map);_(this,"etProvider","");_(this,"etMaxPrice",0)}get etCurrentPriceString(){const[e]=te.etPriceList.values();return(Math.round(e*10)/10).toFixed(1)+" ct"}}const te=se(new yr),wr={id:"powermeter",class:"p-0 m-0"},kr=["viewBox"],Sr=["transform"],xr=["x"],Ee=500,je=20,ca=1,$r=O({__name:"PowerMeter",setup(t){const e=Ee,a=Math.PI/40,r=[[4],[4,6],[1,4,6],[0,2,4,6],[0,2,3,5,6]],n=[{x:-85,y:e/2*1/5},{x:0,y:e/2*1/5},{x:85,y:e/2*1/5},{x:-85,y:e/2*2/5},{x:0,y:e/2*2/5},{x:85,y:e/2*2/5},{x:0,y:e/2*3/5}],s=p(()=>Ee/2-je),h=p(()=>{let I="",H=Object.values(R).filter(P=>P.power>0);return H.length==1&&H[0].name=="PV"?I="Aktueller Verbrauch: ":I="Bezug/Verbrauch: ",I+$e(j.house.power+j.charging.power+j.devices.power+j.batIn.power,v.decimalPlaces)}),g=p(()=>{let I=R.pv.power+R.evuIn.power+R.batOut.power;return v.maxPower>I?$e(v.maxPower,v.decimalPlaces):$e(I,v.decimalPlaces)}),c=p(()=>Object.values(V)),u=p(()=>{let I=0;return v.showRelativeArcs&&(I=v.maxPower-(R.pv.power+R.evuIn.power+R.batOut.power)),I<0?0:I}),d=p(()=>[j.evuOut,j.charging,j.devices,j.batIn,j.house].filter(I=>I.power>0)),C=p(()=>r[d.value.length-1]);function J(I){return n[C.value[I]]}const L=p(()=>{if(!(c.value.length<1))return Y[c.value[0].connectedVehicle]??void 0}),E=p(()=>{if(!(c.value.length<1))if(c.value.length==1)if(Object.values(Y).filter(I=>I.visible).length>1){const I=Object.values(Y).filter(H=>H.visible);return I[0].id==c.value[0].connectedVehicle?I[1]:I[0]}else return;else return Y[c.value[1].connectedVehicle]??void 0});function T(I){return I.length>12?I.slice(0,11)+".":I}const q=p(()=>{const[I]=te.etPriceList.values();return Math.round(I*10)/10});return(I,H)=>(l(),$($t,{"full-width":!0},{title:y(()=>[z(" Aktuelle Leistung ")]),default:y(()=>[o("figure",wr,[(l(),m("svg",{viewBox:"0 0 "+Ee+" "+i(e)},[o("g",{transform:"translate("+Ee/2+","+i(e)/2+")"},[b(Qo,{radius:s.value,"corner-radius":ca,"circle-gap-size":a,"empty-power":u.value},null,8,["radius","empty-power"]),b(Xo,{"sh-device":i(ae),radius:s.value,"corner-radius":ca,"circle-gap-size":a,"empty-power":u.value},null,8,["sh-device","radius","empty-power"]),b(Le,{x:0,y:-i(e)/10*2,data:i(R).pv,props:i(ce).pv,anchor:"middle",config:i(v)},null,8,["y","data","props","config"]),b(Le,{x:0,y:-i(e)/10*3,data:i(R).evuIn,props:i(ce).evuIn,anchor:"middle",config:i(v)},null,8,["y","data","props","config"]),b(Le,{x:0,y:-i(e)/10,data:i(R).batOut,props:i(ce).batOut,anchor:"middle",config:i(v)},null,8,["y","data","props","config"]),i(te).active?(l(),$(Le,{key:0,x:0,y:-i(e)/10,data:i(R).batOut,props:i(ce).batOut,anchor:"middle",config:i(v)},null,8,["y","data","props","config"])):w("",!0),(l(!0),m(G,null,K(d.value,(P,k)=>(l(),$(Le,{key:k,x:J(k).x,y:J(k).y,data:P,labelicon:P.icon,labelcolor:P.color,anchor:"middle",config:i(v)},null,8,["x","y","data","labelicon","labelcolor","config"]))),128)),L.value?(l(),$(Le,{key:1,x:-Ee/2-je/4+10,y:-i(e)/2+je+5,labeltext:T(L.value.name)+": "+Math.round(L.value.soc)+"%",labelcolor:c.value[0].color,anchor:"start",config:i(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),E.value?(l(),$(Le,{key:2,x:Ee/2+je/4-10,y:-i(e)/2+je+5,labeltext:T(E.value.name)+": "+Math.round(E.value.soc)+"%",labelcolor:c.value[1].color,anchor:"end",config:i(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),i(ue).batterySoc>0?(l(),$(Le,{key:3,x:-Ee/2-je/4+10,y:i(e)/2-je+15,labeltext:"Speicher: "+i(ue).batterySoc+"%",labelcolor:i(j).batIn.color,anchor:"start",config:i(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),i(te).active?(l(),$(Le,{key:4,x:Ee/2+je/4-10,y:i(e)/2-je+15,value:q.value,labeltext:i(te).etCurrentPriceString,labelcolor:"var(--color-charging)",anchor:"end",config:i(v)},null,8,["x","y","value","labeltext","config"])):w("",!0),b(Le,{x:0,y:0,labeltext:h.value,labelcolor:"var(--color-fg)",anchor:"middle",config:i(v)},null,8,["labeltext","config"]),i(v).showRelativeArcs?(l(),m("text",{key:5,x:Ee/2-44,y:"2","text-anchor":"middle",fill:"var(--color-axis)","font-size":"12"}," Peak: "+x(g.value),9,xr)):w("",!0)],8,Sr)],8,kr))])]),_:1}))}}),Mr=["origin","origin2","transform"],Ir=O({__name:"PGSourceGraph",props:{width:{},height:{},margin:{}},setup(t){const e=t,a={house:"var(--color-house)",batIn:"var(--color-battery)",inverter:"var(--color-pv)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",pv:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)"};var r,n;const s=v.showAnimations?v.animationDuration:0,h=v.showAnimations?v.animationDelay:0,g=p(()=>{const k=de("g#pgSourceGraph");if(f.data.length>0){f.graphMode=="month"||f.graphMode=="year"?H(k,Ne.value):I(k,Pe.value),k.selectAll(".axis").remove();const M=k.append("g").attr("class","axis");M.call(E.value),M.selectAll(".tick").attr("font-size",12),M.selectAll(".tick line").attr("stroke",q.value).attr("stroke-width",T.value),M.select(".domain").attr("stroke","var(--color-bg)")}return"pgSourceGraph.vue"}),c=p(()=>fa().value((k,M)=>k[M]??0).keys(C.value)),u=p(()=>c.value(f.data)),d=p(()=>Ze().range([e.height-10,0]).domain(f.graphMode=="year"?[0,Math.ceil(J.value[1]*10)/10]:[0,Math.ceil(J.value[1])])),C=p(()=>{let k=[];const M=["batOut","evuIn"];if(v.showInverters){const S=/pv\d+/;f.data.length>0&&(k=Object.keys(f.data[0]).reduce((B,D)=>(D.match(S)&&B.push(D),B),[]))}switch(f.graphMode){case"live":return v.showInverters?["pv","batOut","evuIn"]:["selfUsage","evuOut","batOut","evuIn"];case"today":case"day":return k.forEach((S,B)=>{a[S]="var(--color-pv"+(B+1)+")"}),v.showInverters?[...k,...M]:["selfUsage","evuOut","batOut","evuIn"];default:return["evuIn","batOut","selfUsage","evuOut"]}}),J=p(()=>{let k=Be(f.data,M=>Math.max(M.pv+M.evuIn+M.batOut,M.selfUsage+M.evuOut));return k[0]!=null&&k[1]!=null?(f.graphMode=="year"&&(k[0]=k[0]/1e3,k[1]=k[1]/1e3),k):[0,0]}),L=p(()=>f.graphMode=="month"||f.graphMode=="year"?-e.width-e.margin.right-22:-e.width),E=p(()=>pt(d.value).tickSizeInner(L.value).ticks(4).tickFormat(k=>(k==0?"":Math.round(k*10)/10).toLocaleString(void 0))),T=p(()=>v.showGrid?"0.5":"1"),q=p(()=>v.showGrid?"var(--color-grid)":"var(--color-bg)");function I(k,M){const S=et().x((D,_e)=>M(f.data[_e].date)).y(d.value(0)).curve(tt),B=et().x((D,_e)=>M(f.data[_e].date)).y0(D=>d.value(f.graphMode=="year"?D[0]/1e3:D[0])).y1(D=>d.value(f.graphMode=="year"?D[1]/1e3:D[1])).curve(tt);ut?(k.selectAll("*").remove(),r=k.selectAll(".sourceareas").data(u.value).enter().append("path").attr("fill",(D,_e)=>a[C.value[_e]]).attr("d",D=>S(D)),r.transition().duration(s).delay(h).ease(st).attr("d",D=>B(D)),na()):r.data(u.value).transition().duration(0).ease(st).attr("d",D=>B(D))}function H(k,M){f.data.length>0&&(ut?(k.selectAll("*").remove(),n=k.selectAll(".sourcebar").data(u.value).enter().append("g").attr("fill",(S,B)=>a[C.value[B]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,B)=>M(f.data[B].date)??0).attr("y",()=>d.value(0)).attr("height",0).attr("width",M.bandwidth()),n.transition().duration(s).delay(h).ease(st).attr("height",S=>f.graphMode=="year"?d.value(S[0]/1e3)-d.value(S[1]/1e3):d.value(S[0])-d.value(S[1])).attr("y",S=>f.graphMode=="year"?d.value(S[1]/1e3):d.value(S[1])),na()):(k.selectAll("*").remove(),n=k.selectAll(".sourcebar").data(u.value).enter().append("g").attr("fill",(S,B)=>a[C.value[B]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,B)=>M(f.data[B].date)??0).attr("y",S=>f.graphMode=="year"?d.value(S[1]/1e3):d.value(S[1])).attr("width",M.bandwidth()).attr("height",S=>f.graphMode=="year"?d.value(S[0]/1e3)-d.value(S[1]/1e3):d.value(S[0])-d.value(S[1]))))}const P=p(()=>{const k=de("g#pgSourceGraph");if(f.graphMode!="month"&&f.graphMode!="year"&&f.data.length>0){Pe.value.range(He.value);const M=et().x((S,B)=>Pe.value(f.data[B].date)).y0(S=>d.value(S[0])).y1(S=>d.value(S[1])).curve(tt);k.selectAll("path").attr("d",S=>S?M(S):""),k.selectAll("g#sourceToolTips").select("rect").attr("x",S=>Pe.value(S.date)).attr("width",e.width/f.data.length)}return"zoomed"});return(k,M)=>(l(),m("g",{id:"pgSourceGraph",origin:g.value,origin2:P.value,transform:"translate("+k.margin.left+","+k.margin.top+")"},null,8,Mr))}}),Cr=["origin","origin2","transform"],Pr=O({__name:"PGUsageGraph",props:{width:{},height:{},margin:{},stackOrder:{}},setup(t){const e=t,a=p(()=>v.showInverters?[["house","charging","devices","batIn"],["charging","devices","batIn","house"],["devices","batIn","charging","house"],["batIn","charging","house","devices"]]:[["house","charging","devices","batIn","evuOut"],["charging","devices","batIn","house","evuOut"],["devices","batIn","charging","house","evuOut"],["batIn","charging","house","devices","evuOut"]]),r={house:"var(--color-house)",charging:"var(--color-charging)",batIn:"var(--color-battery)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)",cp0:"var(--color-cp0)",cp1:"var(--color-cp1)",cp2:"var(--color-cp2)",cp3:"var(--color-cp3)",sh1:"var(--color-sh1)",sh2:"var(--color-sh2)",sh3:"var(--color-sh3)",sh4:"var(--color-sh4)",devices:"var(--color-devices)"};var n,s;const h=v.showAnimations?v.animationDuration:0,g=v.showAnimations?v.animationDelay:0,c=p(()=>{const P=de("g#pgUsageGraph");f.graphMode=="month"||f.graphMode=="year"?I(P):q(P),P.selectAll(".axis").remove();const k=P.append("g").attr("class","axis");return k.call(T.value),k.selectAll(".tick").attr("font-size",12).attr("color","var(--color-axis)"),v.showGrid?k.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):k.selectAll(".tick line").attr("stroke","var(--color-bg)"),k.select(".domain").attr("stroke","var(--color-bg)"),"pgUsageGraph.vue"}),u=p(()=>fa().value((P,k)=>P[k]??0).keys(J.value)),d=p(()=>u.value(f.data)),C=p(()=>Ze().range([e.height+10,2*e.height]).domain(f.graphMode=="year"?[0,Math.ceil(L.value[1]*10)/10]:[0,Math.ceil(L.value[1])])),J=p(()=>{if(f.graphMode!="today"&&f.graphMode!="day"&&f.graphMode!="live")return a.value[e.stackOrder];{const P=a.value[e.stackOrder].slice(),k=P.indexOf("charging");P.splice(k,1);const M=/cp\d+/;let S=[];return f.data.length>0&&(S=Object.keys(f.data[0]).reduce((B,D)=>(D.match(M)&&B.push(D),B),[])),S.forEach((B,D)=>{var _e;P.splice(k+D,0,B),r[B]=((_e=V[+B.slice(2)])==null?void 0:_e.color)??"black"}),v.showInverters&&P.push("evuOut"),P}}),L=p(()=>{let P=Be(f.data,k=>k.house+k.charging+k.batIn+k.devices+k.evuOut);return P[0]!=null&&P[1]!=null?(f.graphMode=="year"&&(P[0]=P[0]/1e3,P[1]=P[1]/1e3),P):[0,0]}),E=p(()=>f.graphMode=="month"||f.graphMode=="year"?-e.width-e.margin.right-22:-e.width),T=p(()=>pt(C.value).tickSizeInner(E.value).ticks(4).tickFormat(P=>(P==0?"":Math.round(P*10)/10).toLocaleString(void 0)));function q(P){const k=et().x((S,B)=>Pe.value(f.data[B].date)).y(C.value(0)).curve(tt),M=et().x((S,B)=>Pe.value(f.data[B].date)).y0(S=>C.value(S[0])).y1(S=>C.value(S[1])).curve(tt);v.showAnimations?rt?(P.selectAll("*").remove(),n=P.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",S=>k(S)).attr("fill",(S,B)=>r[J.value[B]]),n.transition().duration(300).delay(100).ease(st).attr("d",S=>M(S)),sa()):(P.selectAll("*").remove(),P.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",S=>M(S)).attr("fill",(S,B)=>r[J.value[B]])):(P.selectAll("*").remove(),P.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",S=>M(S)).attr("fill",(S,B)=>r[J.value[B]]))}function I(P){rt?(P.selectAll("*").remove(),s=P.selectAll(".usagebar").data(d.value).enter().append("g").attr("fill",(k,M)=>r[a.value[e.stackOrder][M]]).selectAll("rect").data(k=>k).enter().append("rect").attr("x",(k,M)=>Ne.value(f.data[M].date)??0).attr("y",()=>C.value(0)).attr("height",0).attr("width",Ne.value.bandwidth()),s.transition().duration(h).delay(g).ease(st).attr("y",k=>f.graphMode=="year"?C.value(k[0]/1e3):C.value(k[0])).attr("height",k=>f.graphMode=="year"?C.value(k[1]/1e3)-C.value(k[0]/1e3):C.value(k[1])-C.value(k[0])),sa()):(P.selectAll("*").remove(),s=P.selectAll(".usagebar").data(d.value).enter().append("g").attr("fill",(k,M)=>r[a.value[e.stackOrder][M]]).selectAll("rect").data(k=>k).enter().append("rect").attr("x",(k,M)=>Ne.value(f.data[M].date)??0).attr("y",k=>f.graphMode=="year"?C.value(k[0]/1e3):C.value(k[0])).attr("height",k=>f.graphMode=="year"?C.value(k[1]/1e3)-C.value(k[0]/1e3):C.value(k[1])-C.value(k[0])).attr("width",Ne.value.bandwidth()))}const H=p(()=>{const P=de("g#pgUsageGraph");if(f.graphMode!="month"&&f.graphMode!="year"){Pe.value.range(He.value);const k=et().x((M,S)=>Pe.value(f.data[S].date)).y0(M=>C.value(M[0])).y1(M=>C.value(M[1])).curve(tt);P.selectAll("path").attr("d",M=>M?k(M):"")}return"zoomed"});return(P,k)=>(l(),m("g",{id:"pgUsageGraph",origin:c.value,origin2:H.value,transform:"translate("+P.margin.left+","+P.margin.top+")"},null,8,Cr))}}),Br=["transform"],Vr=["origin","origin2","transform"],Lr=["origin","transform"],Or={key:0},Ar=["width","height"],Tr={key:1},Dr=["y","width","height"],Pt=12,Wr=O({__name:"PGXAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=p(()=>it(Pe.value).ticks(6).tickSizeInner(h.value).tickFormat(ot("%H:%M"))),r=p(()=>ao(Pe.value).ticks(6).tickSizeInner(h.value+3).tickFormat(ot(""))),n=p(()=>it(Ne.value).ticks(4).tickSizeInner(h.value).tickFormat(d=>d.toString())),s=p(()=>it(Ne.value).ticks(4).tickSizeInner(h.value).tickFormat(()=>"")),h=p(()=>f.graphMode!=="month"&&f.graphMode!=="year"?v.showGrid?-(e.height/2-7):-10:0),g=p(()=>{let d=de("g#PGXAxis");return d.selectAll("*").remove(),f.graphMode=="month"||f.graphMode=="year"?d.call(n.value):d.call(a.value),d.selectAll(".tick > text").attr("fill",(C,J)=>J>=0||f.graphMode=="month"||f.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",Pt),v.showGrid?d.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):d.selectAll(".tick line").attr("stroke","var(--color-bg)"),d.select(".domain").attr("stroke","var(--color-bg)"),d.append("text").attr("x",-e.margin.left).attr("y",12).attr("fill","var(--color-axis)").attr("font-size",Pt).text(f.graphMode=="year"?"MW":"kW").attr("text-anchor","start"),"PGXAxis.vue"}),c=p(()=>{let d=de("g#PGXAxis2");return d.selectAll("*").remove(),f.graphMode=="month"||f.graphMode=="year"?d.call(s.value):d.call(r.value),d.selectAll(".tick > text").attr("fill",(C,J)=>J>=0||f.graphMode=="month"||f.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",Pt),v.showGrid?(d.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"),d.select(".domain").attr("stroke","var(--color-bg)")):d.selectAll(".tick line").attr("stroke","var(--color-bg)"),d.select(".domain").attr("stroke","var(--color-bg)"),"PGXAxis2.vue"}),u=p(()=>{if(f.graphMode!="month"&&f.graphMode!="year"){const d=de("g#PGXAxis"),C=de("g#PGXAxis2");f.graphMode=="month"||f.graphMode=="year"?(Ne.value.range(He.value),d.call(n.value),C.call(s.value)):(Pe.value.range(He.value),d.call(a.value),C.call(r.value))}return"zoomed"});return(d,C)=>(l(),m("g",{transform:"translate("+d.margin.left+","+d.margin.top+")"},[o("g",{id:"PGXAxis",class:"axis",origin:g.value,origin2:u.value,transform:"translate(0,"+(d.height/2-6)+")"},null,8,Vr),o("g",{id:"PGXAxis2",class:"axis",origin:c.value,transform:"translate(0,"+(d.height/2+10)+")"},null,8,Lr),i(v).showGrid?(l(),m("g",Or,[o("rect",{x:"0",y:"0",width:d.width,height:d.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Ar)])):w("",!0),i(v).showGrid?(l(),m("g",Tr,[o("rect",{x:"0",y:d.height/2+10,width:d.width,height:d.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Dr)])):w("",!0)],8,Br))}}),zr=["id",".origin","d"],Gr=["id","d","stroke"],Er=["x","y","text-anchor"],Bt=O({__name:"PgSoc",props:{width:{},height:{},margin:{},order:{}},setup(t){const e=t,a=p(()=>{let L=Be(f.data,E=>E.date);return L[0]&&L[1]?Qe().domain(L).range([0,e.width]):Qe().range([0,0])}),r=p(()=>Ze().range([e.height-10,0]).domain([0,100])),n=p(()=>{let E=bt().x(T=>a.value(T.date)).y(T=>r.value(e.order==2?T.batSoc:T["soc"+u.value.connectedVehicle])??r.value(0))(f.data);return E||""}),s=p(()=>e.order==2?"Speicher":u.value.connectedVehicle),h=p(()=>e.order==2?"Speicher":u.value.vehicleName),g=p(()=>{switch(e.order){case 0:return"var(--color-cp1)";case 1:return"var(--color-cp2)";case 2:return"var(--color-battery)";default:return"red"}}),c=p(()=>{switch(e.order){case 0:return e.width-3;case 1:return 3;case 2:return e.width/2;default:return 0}}),u=p(()=>{const L=e.order==2?0:e.order;return Object.values(V)[L]}),d=p(()=>{if(f.data.length>0){let L;switch(e.order){case 0:return L=f.data.length-1,r.value(f.data[L]["soc"+s.value]+2);case 1:return L=0,r.value(f.data[L]["soc"+s.value]+2);case 2:return L=Math.round(f.data.length/2),r.value(f.data[L].batSoc+2);default:return 0}}else return 0}),C=p(()=>{switch(e.order){case 0:return"end";case 1:return"start";case 2:return"middle";default:return"middle"}}),J=p(()=>{if(f.graphMode!="month"&&f.graphMode!="year"){const L=de("path#soc-"+s.value),E=de("path#socdashes-"+s.value);a.value.range(He.value);const T=bt().x(q=>a.value(q.date)).y(q=>r.value(e.order==2?q.batSoc:q["soc"+u.value.connectedVehicle])??r.value(0));L.attr("d",T(f.data)),E.attr("d",T(f.data))}return"zoomed"});return(L,E)=>(l(),m(G,null,[o("path",{id:"soc-"+s.value,".origin":J.value,class:"soc-baseline",d:n.value,stroke:"var(--color-bg)","stroke-width":"1",fill:"none"},null,40,zr),o("path",{id:"socdashes-"+s.value,class:"soc-dashes",d:n.value,stroke:g.value,"stroke-width":"1",style:{strokeDasharray:"3,3"},fill:"none"},null,8,Gr),o("text",{class:"cpname",x:c.value,y:d.value,style:Z({fill:g.value,fontSize:10}),"text-anchor":C.value},x(h.value),13,Er)],64))}}),jr=["transform"],Ur=O({__name:"PgSocAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=p(()=>Ze().range([e.height-10,0]).domain([0,100])),r=p(()=>oo(a.value).ticks(5).tickFormat(s=>s.toString()+"%"));function n(){let s=de("g#PGSocAxis");s.call(r.value),s.selectAll(".tick").attr("font-size",12),s.selectAll(".tick line").attr("stroke","var(--color-bg)"),s.select(".domain").attr("stroke","var(--color-bg)")}return Ve(()=>{n()}),(s,h)=>(l(),m("g",{id:"PGSocAxis",class:"axis",transform:"translate("+(s.width-20)+",0)"},null,8,jr))}}),Fr=t=>(oe("data-v-7b8949f3"),t=t(),re(),t),Nr={class:"d-flex align-self-top justify-content-center align-items-center"},Hr={class:"input-group input-group-xs"},Rr={key:0,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},Jr={class:"dropdown-menu"},qr={class:"table optiontable"},Yr=["onClick"],Qr={key:1,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},Zr={class:"dropdown-menu"},Xr={class:"table optiontable"},Kr=["onClick"],en={key:2,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},tn={class:"dropdown-menu"},an={class:"table optiontable"},on=["onClick"],rn=Fr(()=>o("span",{class:"fa-solid fa-circle-check"},null,-1)),nn=[rn],sn=O({__name:"DateInput",props:{modelValue:{type:Date,required:!0},mode:{type:String,default:"day"}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=new Date().getFullYear();let n=Array.from({length:10},(L,E)=>r-E);const s=X(!0),h=e,g=[[0,1,2,3],[4,5,6,7],[8,9,10,11]],c=X(a.modelValue.getDate()),u=X(a.modelValue.getMonth()),d=X(a.modelValue.getFullYear()),C=p(()=>{const E=new Date(d.value,u.value,1).getDay();let T=0;switch(u.value){case 1:case 3:case 5:case 7:case 8:case 10:case 12:T=31;break;case 4:case 6:case 9:case 11:T=30;break;case 2:Math.trunc(d.value/4)*4==d.value&&(T=29)}let q=[],I=[0,0,0,0,0,0,0],H=E;for(let P=0;P<T;P++)I[H]=P+1,H==6?(q.push(I),I=[0,0,0,0,0,0,0],H=0):H++;return H<8&&q.push(I),q});function J(){h("update:modelValue",new Date(d.value,u.value,c.value)),s.value=!1}return(L,E)=>(l(),m("span",Nr,[o("div",Hr,[a.mode=="day"||a.mode=="today"?(l(),m("button",Rr,x(c.value),1)):w("",!0),o("div",Jr,[o("table",qr,[(l(!0),m(G,null,K(C.value,(T,q)=>(l(),m("tr",{key:q,class:""},[(l(!0),m(G,null,K(T,(I,H)=>(l(),m("td",{key:H},[I!=0?(l(),m("span",{key:0,type:"button",class:"btn optionbutton",onClick:P=>c.value=I},x(I),9,Yr)):w("",!0)]))),128))]))),128))])]),a.mode!="year"&&a.mode!="live"?(l(),m("button",Qr,x(u.value+1),1)):w("",!0),o("div",Zr,[o("table",Xr,[(l(),m(G,null,K(g,(T,q)=>o("tr",{key:q,class:""},[(l(!0),m(G,null,K(T,(I,H)=>(l(),m("td",{key:H,class:"p-0 m-0"},[o("span",{type:"button",class:"btn btn-sm optionbutton",onClick:P=>u.value=I},x(I+1),9,Kr)]))),128))])),64))])]),a.mode!="live"?(l(),m("button",en,x(d.value),1)):w("",!0),o("div",tn,[o("table",an,[(l(!0),m(G,null,K(i(n),(T,q)=>(l(),m("tr",{key:q,class:""},[o("td",null,[o("span",{type:"button",class:"btn optionbutton",onClick:I=>d.value=T},x(T),9,on)])]))),128))])]),a.mode!="live"?(l(),m("button",{key:3,class:"button-outline-secondary",type:"button",onClick:J},nn)):w("",!0)])]))}}),U=(t,e)=>{const a=t.__vccOpts||t;for(const[r,n]of e)a[r]=n;return a},ln=U(sn,[["__scopeId","data-v-7b8949f3"]]),cn={class:"btn-group m-0",role:"group","aria-label":"radiobar"},dn=["id","value"],un=O({__name:"RadioBarInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=p({get(){return a.modelValue},set(g){r("update:modelValue",g)}});function s(g){let c=a.options[g].color?a.options[g].color:"var(--color-fg)";return a.options[g].active?{color:"var(--color-bg)",background:c}:{color:c}}function h(g){let c=g.target;for(;c&&!c.value&&c.parentElement;)c=c.parentElement;c.value&&(n.value=c.value)}return(g,c)=>(l(),m("div",null,[o("div",cn,[(l(!0),m(G,null,K(g.options,(u,d)=>(l(),m("button",{id:"radio-"+u.value,key:d,class:N(["btn btn-outline-secondary btn-sm radiobutton mx-0 mb-0 px-2",u.value==n.value?"active":""]),value:u.value,style:Z(s(d)),onClick:h},[o("span",{style:Z(s(d))},[u.icon?(l(),m("i",{key:0,class:N(["fa-solid",u.icon])},null,2)):w("",!0),z(" "+x(u.text),1)],4)],14,dn))),128))])]))}}),Pa=U(un,[["__scopeId","data-v-82ab6829"]]),Mt=t=>(oe("data-v-d75ec1a4"),t=t(),re(),t),hn=Mt(()=>o("i",{class:"fa-solid fa-xl fa-chevron-circle-up"},null,-1)),pn=[hn],gn=Mt(()=>o("span",{class:"fa-solid fa-xl fa-chevron-circle-left arrowButton"},null,-1)),mn=[gn],vn=Mt(()=>o("span",{class:"fa-solid fa-xl fa-gear"},null,-1)),fn=[vn],_n=Mt(()=>o("span",{class:"fa-solid fa-xl fa-circle-check"},null,-1)),bn=[_n],yn=O({__name:"PgSelector",props:{widgetid:{},showLeftButton:{type:Boolean},showRightButton:{type:Boolean},ignoreLive:{type:Boolean}},emits:["shiftLeft","shiftRight","shiftUp","shiftDown"],setup(t){const e=t,a=X(0),r=p(()=>{if(f.waitForData)return"Lädt";switch(f.graphMode){case"live":return e.ignoreLive?"heute":`${pe.duration} min`;case"today":return"heute";case"day":return le.date.getDate()+"."+(le.date.getMonth()+1)+".";case"month":return er(Ae.month-1,Ae.year);case"year":return Fe.year.toString();default:return"???"}}),n=["live","today","day","month","year"],s=["Live","Heute","Tag","Monat","Jahr"],h=p({get(){return f.graphMode},set(H){switch(H){case"day":C();break;case"today":J();break;case"live":d();break;case"month":L();break;case"year":E()}}}),g=p(()=>{switch(f.graphMode){case"live":case"today":return le.getDate();case"month":return Ae.getDate();default:return le.getDate()}});function c(H){ia(H)}function u(){a.value+=1,a.value>2&&(a.value=0)}function d(){f.graphMode!="live"&&(f.graphMode="live",me())}function C(){f.graphMode!="day"&&f.graphMode!="today"&&(f.graphMode="day",me())}function J(){f.graphMode!="today"&&(f.graphMode="today",ia(new Date),me())}function L(){f.graphMode!="month"&&(f.graphMode="month",me())}function E(){f.graphMode!="year"&&(f.graphMode="year",me())}const T=p(()=>a.value>0?{border:"1px solid var(--color-frame)"}:""),q=p(()=>a.value==1?"justify-content-between":"justify-content-end"),I=p(()=>a.value==1?"justify-content-between":"justify-content-center");return(H,P)=>(l(),m("div",{class:"d-flex flex-column justify-content-center pgselector rounded",style:Z(T.value)},[a.value==2?(l(),$(Pa,{key:0,id:"pgm2",modelValue:h.value,"onUpdate:modelValue":P[0]||(P[0]=k=>h.value=k),class:"m-2",options:n.map((k,M)=>({text:s[M],value:k,color:"var(--color-menu)",active:k==i(f).graphMode}))},null,8,["modelValue","options"])):w("",!0),a.value==1?(l(),m("span",{key:1,type:"button",class:N(["arrowButton d-flex align-self-center mb-3 mt-3",{disabled:!e.showLeftButton}]),onClick:P[1]||(P[1]=k=>H.$emit("shiftUp"))},pn,2)):w("",!0),o("div",{class:N(["d-flex align-items-center",I.value])},[a.value==1?(l(),m("span",{key:0,type:"button",class:N(["p-1",{disabled:!e.showLeftButton}]),onClick:P[2]||(P[2]=k=>H.$emit("shiftLeft"))},mn,2)):w("",!0),a.value<2?(l(),m("span",{key:1,type:"button",class:"btn-outline-secondary p-2 px-3 badge rounded-pill datebadge",onClick:u},x(r.value),1)):w("",!0),a.value==2?(l(),$(ln,{key:2,"model-value":g.value,mode:i(f).graphMode,"onUpdate:modelValue":c},null,8,["model-value","mode"])):w("",!0),a.value==1?(l(),m("span",{key:3,id:"graphRightButton",type:"button",class:N(["arrowButton fa-solid fa-xl fa-chevron-circle-right p-1",{disabled:!e.showRightButton}]),onClick:P[3]||(P[3]=k=>H.$emit("shiftRight"))},null,2)):w("",!0)],2),o("div",{class:N(["d-flex align-items-center",q.value])},[a.value==1?(l(),m("span",{key:0,type:"button",class:"p-1",onClick:u},fn)):w("",!0),a.value==1?(l(),m("span",{key:1,id:"graphLeftButton",type:"button",class:N(["arrowButton fa-solid fa-xl fa-chevron-circle-down p-1",{disabled:!e.showLeftButton}]),onClick:P[4]||(P[4]=k=>H.$emit("shiftDown"))},null,2)):w("",!0),a.value>0?(l(),m("span",{key:2,type:"button",class:"p-1",onClick:P[5]||(P[5]=k=>a.value=0)},bn)):w("",!0)],2)],4))}}),Ba=U(yn,[["__scopeId","data-v-d75ec1a4"]]),wn=["x","fill"],kn=["x"],Ie=O({__name:"PgToolTipLine",props:{cat:{},name:{},indent:{},power:{},width:{}},setup(t){const e=t;return(a,r)=>(l(),m(G,null,[a.power>0?(l(),m("tspan",{key:0,x:a.indent,dy:"1.3em",class:N(a.name?"":"fas"),fill:i(ce)[a.cat].color},x(a.name?a.name:i(ce)[a.cat].icon)+"   ",11,wn)):w("",!0),o("tspan",{"text-anchor":"end",x:a.width-a.indent},[e.power>0?(l(),$(vt,{key:0,watt:a.power*1e3},null,8,["watt"])):w("",!0)],8,kn)],64))}}),Sn=["transform"],xn=["width","height"],$n={"text-anchor":"start",x:"5",y:"20","font-size":"16",fill:"var(--color-fg)"},Mn=["x"],In=o("line",{y:"120",x1:"5",x2:"100",stroke:"var(--color-fg)","stroke-width":"1"},null,-1),Cn=O({__name:"PgToolTipItem",props:{entry:{},boxwidth:{},xScale:{type:[Function,Object]}},setup(t){const e=t,a=p(()=>Object.values(e.entry).filter(c=>c>0).length),r=p(()=>a.value*16),n=p(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("pv")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:Ue.value.get(c)?g(Ue.value.get(c)):"Wechselr.",id:c}))),s=p(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("cp")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:Ue.value.get(c)?g(Ue.value.get(c)):"Ladep.",id:c}))),h=p(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("sh")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:Ue.value.get(c)?g(Ue.value.get(c)):"Gerät",id:c})));function g(c){return c.length>6?c.slice(0,6)+"...":c}return(c,u)=>(l(),m("g",{class:"ttmessage",transform:"translate("+c.xScale(c.entry.date)+",0)"},[o("rect",{rx:"5",width:c.boxwidth,height:r.value,fill:"var(--color-bg)",opacity:"80%",stroke:"var(--color-menu)"},null,8,xn),o("text",$n,[o("tspan",{"text-anchor":"middle",x:c.boxwidth/2,dy:"0em"},x(i(ot)("%H:%M")(new Date(c.entry.date))),9,Mn),In,b(Ie,{cat:"evuIn",indent:5,power:c.entry.evuIn,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"batOut",indent:5,power:c.entry.batOut,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"pv",indent:5,power:c.entry.pv,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,K(n.value,d=>(l(),$(Ie,{key:d.id,cat:"pv",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Ie,{cat:"house",indent:5,power:c.entry.house,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"charging",indent:5,power:c.entry.charging,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,K(s.value,d=>(l(),$(Ie,{key:d.id,cat:"charging",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Ie,{cat:"devices",indent:5,power:c.entry.devices,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,K(h.value,d=>(l(),$(Ie,{key:d.id,cat:"devices",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Ie,{cat:"batIn",indent:5,power:c.entry.batIn,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"evuOut",indent:5,power:c.entry.evuOut,width:c.boxwidth},null,8,["power","width"])])],8,Sn))}}),Pn=["origin","transform"],Bn=["x","height","width"],da=140,Vn=O({__name:"PgToolTips",props:{width:{},height:{},margin:{},data:{}},setup(t){const e=t,a=p(()=>{const s=Be(e.data,h=>new Date(h.date));return s[0]&&s[1]?Ut().domain(s).range([0,e.width-e.margin.right]):Qe().range([0,0])}),r=p(()=>{const s=Be(e.data,h=>new Date(h.date));return s[0]&&s[1]?Ut().domain(s).range([0,e.width-e.margin.right-da]):Qe().range([0,0])}),n=p(()=>((f.graphMode=="day"||f.graphMode=="today")&&(a.value.range(He.value),de("g#pgToolTips").selectAll("g.ttarea").select("rect").attr("x",(s,h)=>e.data.length>h?a.value(e.data[h].date):0).attr("width",e.data.length>0?(He.value[1]-He.value[0])/e.data.length:0)),"PgToolTips.vue:autozoom"));return(s,h)=>(l(),m("g",{id:"pgToolTips",origin:n.value,transform:"translate("+s.margin.left+","+s.margin.top+")"},[(l(!0),m(G,null,K(s.data,g=>(l(),m("g",{key:g.date,class:"ttarea"},[o("rect",{x:a.value(g.date),y:"0",height:s.height,class:"ttrect",width:i(f).data.length>0?s.width/i(f).data.length:0,opacity:"1%",fill:"var(--color-charging)"},null,8,Bn),b(Cn,{entry:g,boxwidth:da,"x-scale":r.value},null,8,["entry","x-scale"])]))),128))],8,Pn))}}),Va=t=>(oe("data-v-9dcdaf2b"),t=t(),re(),t),Ln={class:"d-flex justify-content-end"},On=Va(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-magnifying-glass"},null,-1)),An=[On],Tn={id:"powergraph",class:"p-0 m-0"},Dn=["viewBox"],Wn=["transform"],zn=["x","y"],Gn=Va(()=>o("tspan",{fill:"var(--color-menu)",class:"fas fa-lg"},x(""),-1)),En=[Gn],jn=2,Un="Leistung / Ladestand ",Fn=O({__name:"PowerGraph",setup(t){function e(){let h=v.usageStackOrder+1;h>jn&&(h=0),v.usageStackOrder=h,Ao(!0)}function a(h){const g=[[0,W.top],[be,xe-W.top]];h.call(no().scaleExtent([1,8]).translateExtent([[0,0],[be,xe]]).extent(g).filter(n).on("zoom",r))}function r(h){ka.value=h.transform}function n(h){return h.preventDefault(),(!h.ctrlKey||h.type==="wheel")&&!h.button}function s(){v.zoomGraph=!v.zoomGraph}return Ve(()=>{const h=de("svg#powergraph");a(h)}),(h,g)=>(l(),$($t,{"full-width":!0},{title:y(()=>[z(x(Un))]),buttons:y(()=>[o("div",Ln,[b(Ba,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!1,onShiftLeft:i(Kt),onShiftRight:i(Sa),onShiftUp:i(xa),onShiftDown:i($a)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"]),i(Re)?(l(),m("span",{key:0,type:"button",class:"ms-1 p-0 pt-1",onClick:s},An)):w("",!0)])]),default:y(()=>[gt(o("figure",Tn,[(l(),m("svg",{id:"powergraph",viewBox:"0 0 "+i(be)+" "+i(xe)},[b(Ir,{width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W)},null,8,["width","height","margin"]),b(Pr,{width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),"stack-order":i(v).usageStackOrder},null,8,["width","height","margin","stack-order"]),b(Wr,{width:i(be)-i(W).left-2*i(W).right,height:i(xe)-i(W).top-i(W).bottom,margin:i(W),"graph-data":i(f)},null,8,["width","height","margin","graph-data"]),o("g",{transform:"translate("+i(W).left+","+i(W).top+")"},[(i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live")&&Object.values(i(V)).length>0?(l(),$(Bt,{key:0,width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),order:0},null,8,["width","height","margin"])):w("",!0),(i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live")&&Object.values(i(V)).length>1?(l(),$(Bt,{key:1,width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),order:1},null,8,["width","height","margin"])):w("",!0),(i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live")&&i(ue).isBatteryConfigured?(l(),$(Bt,{key:2,width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),order:2},null,8,["width","height","margin"])):w("",!0),i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live"?(l(),$(Ur,{key:3,width:i(be)-i(W).left-i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W)},null,8,["width","height","margin"])):w("",!0)],8,Wn),i(f).graphMode=="day"||i(f).graphMode=="today"?(l(),$(Vn,{key:0,width:i(be)-i(W).left-i(W).right,height:i(xe)-i(W).top-i(W).bottom,margin:i(W),data:i(f).data},null,8,["width","height","margin","data"])):w("",!0),o("g",{id:"button",onClick:e},[o("text",{x:i(be)-10,y:i(xe)-10,color:"var(--color-menu)","text-anchor":"end"},En,8,zn)])],8,Dn))],512),[[ro,i(f).data.length>0]])]),_:1}))}}),Nn=U(Fn,[["__scopeId","data-v-9dcdaf2b"]]),Hn=["id"],Rn=["x","width","height","fill"],Jn=["x","width","height"],qn=["x","y","width","height"],Yn=O({__name:"EmBar",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=p(()=>e.height-e.yScale(e.item.energy)-e.margin.top-e.margin.bottom),r=p(()=>{let s=0;return e.item.energyPv>0&&(s=e.height-e.yScale(e.item.energyPv)-e.margin.top-e.margin.bottom),s>a.value&&(s=a.value),s}),n=p(()=>{let s=0;return e.item.energyBat>0&&(s=e.height-e.yScale(e.item.energyBat)-e.margin.top-e.margin.bottom),s>a.value&&(s=a.value),s});return(s,h)=>(l(),m("g",{id:"bar-"+e.item.name,transform:"scale(1,-1) translate (0,-445)"},[o("rect",{class:"bar",x:e.xScale(s.item.name),y:"0",width:e.xScale.bandwidth(),height:a.value,fill:s.item.color},null,8,Rn),o("rect",{class:"bar",x:e.xScale(s.item.name)+e.xScale.bandwidth()/6,y:"0",width:e.xScale.bandwidth()*2/3,height:r.value,fill:"var(--color-pv)","fill-opacity":"66%"},null,8,Jn),o("rect",{class:"bar",x:e.xScale(s.item.name)+e.xScale.bandwidth()/6,y:r.value,width:e.xScale.bandwidth()*2/3,height:n.value,fill:"var(--color-battery)","fill-opacity":"66%"},null,8,qn)],8,Hn))}}),Qn={id:"emBargraph"},Zn=o("animateTransform",{"attribute-name":"transform",type:"scale",from:"1 0",to:"1 1",begin:"0s",dur:"2s"},null,-1),Xn=O({__name:"EMBarGraph",props:{plotdata:{},xScale:{},yScale:{},margin:{},height:{}},setup(t){const e=t;function a(n){if(n.name=="PV"){const s=f.graphMode=="live"||f.graphMode=="day"?R:A.items,g=(f.graphMode=="live"||f.graphMode=="day"?j:A.items).evuOut.energy,c=s.pv.energy;return Math.round((c-g)/c*100)}else if(n.name=="Netz"){const s=f.graphMode=="live"||f.graphMode=="day"?R:A.items,h=f.graphMode=="live"||f.graphMode=="day"?j:A.items,g=h.evuOut.energy,c=s.evuIn.energy,u=s.pv.energy,d=s.batOut.energy,C=h.batIn.energy;return Math.round((u+d-g-C)/(u+d+c-g-C)*100)}else return n.pvPercentage}function r(n){return n.name=="PV"?"Eigen":"Aut"}return(n,s)=>(l(),m("g",Qn,[(l(!0),m(G,null,K(e.plotdata,(h,g)=>(l(),m("g",{key:g},[b(Yn,{item:h,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":r(h),autarchy:a(h)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128)),Zn]))}}),Kn=["origin"],es=O({__name:"EMYAxis",props:{yScale:{type:[Function,Object]},width:{},fontsize:{}},setup(t){const e=t,a=p(()=>pt(e.yScale).tickFormat(s=>n(s)).ticks(6).tickSizeInner(-e.width)),r=p(()=>{const s=de("g#emYAxis");return s.attr("class","axis").call(a.value),s.append("text").attr("y",6).attr("dy","0.71em").attr("text-anchor","end").text("energy"),s.selectAll(".tick").attr("font-size",e.fontsize),v.showGrid?s.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):s.selectAll(".tick line").attr("stroke","var(--color-bg)"),s.select(".domain").attr("stroke","var(--color-bg)"),"emYAxis.vue"});function n(s){return s>0?f.graphMode=="year"?(s/1e6).toString():(s/1e3).toString():""}return(s,h)=>(l(),m("g",{id:"emYAxis",class:"axis",origin:r.value},null,8,Kn))}}),ts=["id"],as=["x","y","font-size"],os=["x","y","font-size","fill"],rs=["x","y","font-size","fill"],ns=O({__name:"EmLabel",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=p(()=>e.autarchy?e.yScale(e.item.energy)-25:e.yScale(e.item.energy)-10),r=p(()=>{let c=16,u=e.barcount;return u<=5?c=16:u==6?c=14:u>6&&u<=8?c=13:u==9?c=11:u==10?c=10:c=9,c}),n=p(()=>{let c=12,u=e.barcount;return u<=5?c=12:u==6?c=11:u>6&&u<=8||u==9?c=8:u==10?c=7:c=6,c});function s(c,u){return u.length>n.value?u.substring(0,n.value)+".":u}function h(){return e.autarchy?e.autText+": "+e.autarchy.toLocaleString(void 0)+" %":""}function g(){return"var(--color-pv)"}return(c,u)=>(l(),m("g",{id:"barlabel-"+e.item.name},[o("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:a.value,"font-size":r.value,"text-anchor":"middle",fill:"var(--color-menu)"},x(i(ht)(c.item.energy,i(v).decimalPlaces,!1)),9,as),o("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:e.yScale(c.item.energy)-10,"font-size":r.value-2,"text-anchor":"middle",fill:g()},x(h()),9,os),o("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:e.height-e.margin.bottom-5,"font-size":r.value,"text-anchor":"middle",fill:c.item.color,class:N(c.item.icon.length<=2?"fas":"")},x(s(c.item.name,c.item.icon)),11,rs)],8,ts))}}),ss={id:"emBarLabels"},is=O({__name:"EMLabels",props:{plotdata:{},xScale:{},yScale:{},height:{},margin:{}},setup(t){const e=t;function a(n){if(n.name=="PV"){const s=f.graphMode=="live"||f.graphMode=="today"?R:A.items,g=(f.graphMode=="live"||f.graphMode=="today"?j:A.items).evuOut.energy,c=s.pv.energy;return Math.round((c-g)/c*100)}else if(n.name=="Netz"){const s=f.graphMode=="live"||f.graphMode=="today"?R:A.items,h=f.graphMode=="live"||f.graphMode=="today"?j:A.items,g=h.evuOut.energy,c=s.evuIn.energy,u=s.pv.energy,d=s.batOut.energy,C=h.batIn.energy;return u+d-g-C>0?Math.round((u+d-g-C)/(u+d+c-g-C)*100):0}else return n.pvPercentage}function r(n){return n.name=="PV"?"Eigen":"Aut"}return(n,s)=>(l(),m("g",ss,[(l(!0),m(G,null,K(e.plotdata,(h,g)=>(l(),m("g",{key:g},[b(ns,{item:h,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":r(h),autarchy:a(h)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128))]))}}),ls={id:"energymeter",class:"p-0 m-0"},cs={viewBox:"0 0 500 500"},ds=["transform"],us=["x"],hs={key:0},ua=500,Vt=500,ha=12,ps="Energie",gs=O({__name:"EnergyMeter",setup(t){const e={top:25,bottom:30,left:25,right:0},a=p(()=>{let g=Object.values(R),c=s.value;const u=A.items;let d=[];switch(v.debug&&h(),kt.value==!0&&(kt.value=!1),f.graphMode){default:case"live":case"today":d=g.concat(c);break;case"day":case"month":case"year":Object.values(u).length==0?dt.value=!0:(dt.value=!1,d=[u.evuIn,u.pv,u.evuOut,u.batOut,u.charging],Object.values(V).length>1&&Object.keys(V).forEach(C=>{u["cp"+C]&&d.push(u["cp"+C])}),d.push(u.devices),ae.forEach((C,J)=>{C.showInGraph&&u["sh"+J]&&d.push(u["sh"+J])}),d=d.concat([u.batIn,u.house]))}return d.filter(C=>C.energy&&C.energy>0)}),r=p(()=>Ft().range([0,ua-e.left-e.right]).domain(a.value.map(g=>g.name)).padding(.4)),n=p(()=>Ze().range([Vt-e.bottom-e.top,15]).domain([0,so(a.value,g=>g.energy)])),s=p(()=>{const g=Object.values(V).length,c=[...ae.values()].filter(d=>d.configured).length;let u=j;return[...[u.evuOut,u.charging].concat(g>1?Object.values(V).map(d=>d.toPowerItem()):[]),...[u.devices].concat(c>1?[...ae.values()].filter(d=>d.configured&&d.showInGraph):[]).concat([j.batIn,j.house])]});function h(){console.debug(["source summary:",R]),console.debug(["usage details:",s.value]),console.debug(["historic summary:",A])}return(g,c)=>(l(),$($t,{"full-width":!0},{title:y(()=>[z(x(ps))]),buttons:y(()=>[b(Ba,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!0,onShiftLeft:i(Kt),onShiftRight:i(Sa),onShiftUp:i(xa),onShiftDown:i($a)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])]),default:y(()=>[o("figure",ls,[(l(),m("svg",cs,[o("g",{transform:"translate("+e.left+","+e.top+")"},[b(Xn,{plotdata:a.value,"x-scale":r.value,"y-scale":n.value,height:Vt,margin:e},null,8,["plotdata","x-scale","y-scale"]),b(es,{"y-scale":n.value,width:ua,fontsize:ha,config:i(v)},null,8,["y-scale","config"]),o("text",{x:-e.left,y:"-15",fill:"var(--color-axis)","font-size":ha},x(i(f).graphMode=="year"?"MWh":"kWh"),9,us),b(is,{plotdata:a.value,"x-scale":r.value,"y-scale":n.value,height:Vt,margin:e,config:i(v)},null,8,["plotdata","x-scale","y-scale","config"])],8,ds)]))]),i(dt)?(l(),m("p",hs,"No data")):w("",!0)]),_:1}))}}),ms={class:"d-flex flex-column align-items-center justify-content-start infoitem"},vs=O({__name:"InfoItem",props:{heading:{},small:{type:Boolean}},setup(t){const e=t,a=p(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-small)"}),r=p(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-normal)"}),n=p(()=>e.small?"mt-0":"mt-1");return(s,h)=>(l(),m("span",ms,[o("span",{class:N(["d-flex heading",n.value]),style:Z(a.value)},x(e.heading),7),o("span",{class:"d-flex my-0 me-0 align-items-center content",style:Z(r.value)},[he(s.$slots,"default",{},void 0,!0)],4)]))}}),Q=U(vs,[["__scopeId","data-v-f6af00e8"]]),fs={class:"d-flex justify-content-between align-items-center titlerow"},_s={class:"buttonrea d-flex float-right justify-content-end align-items-center"},bs={class:"contentrow grid-col-12"},ys=O({__name:"WbSubwidget",props:{titlecolor:{},fullwidth:{type:Boolean},small:{type:Boolean}},setup(t){const e=t,a=p(()=>{let n={"font-weight":"bold",color:"var(--color-fg)","font-size":"var(--font-normal)"};return e.titlecolor&&(n.color=e.titlecolor),e.small&&(n["font-size"]="var(--font-verysmall)"),n}),r=p(()=>e.fullwidth?"grid-col-12":"grid-col-4");return(n,s)=>(l(),m("div",{class:N(["wb-subwidget px-3 pt-2 my-0",r.value])},[o("div",fs,[o("div",{class:"d-flex widgetname p-0 m-0",style:Z(a.value)},[he(n.$slots,"title",{},void 0,!0)],4),o("div",_s,[he(n.$slots,"buttons",{},void 0,!0)])]),o("div",bs,[he(n.$slots,"default",{},void 0,!0)])],2))}}),Xe=U(ys,[["__scopeId","data-v-e989060d"]]),ws=t=>(oe("data-v-b935eb33"),t=t(),re(),t),ks={class:"grid-col-12 mt-2 mb-0 px-0 py-0 configitem"},Ss={class:"titlecolumn m-0 p-0 d-flex align-items-center"},xs=ws(()=>o("i",{class:"me-1 fa-solid fa-sm fa-circle-info"},null,-1)),$s={class:"ms-1 mb-2 p-0 pt-2 d-flex justify-content-stretch align-items-center"},Ms={class:"justify-content-stretch d-flex"},Is=O({__name:"ConfigItem",props:{title:{},infotext:{},icon:{},fullwidth:{type:Boolean}},setup(t){const e=t,a=X(!1);function r(){a.value=!a.value}const n=p(()=>{let s={color:"var(--color-charging)"};return a.value&&(s.color="var(--color-battery)"),s});return(s,h)=>(l(),$(Xe,{fullwidth:!!s.fullwidth},{default:y(()=>[o("div",ks,[o("div",Ss,[o("span",{class:"d-flex align-items-baseline m-0 p-0",onClick:r},[e.icon?(l(),m("i",{key:0,class:N(["fa-solid fa-sm m-0 p-0 me-2 item-icon",e.icon])},null,2)):w("",!0),z(" "+x(s.title),1)]),o("span",null,[e.infotext?(l(),m("i",{key:0,class:"fa-solid fa-sm fa-circle-question ms-4 me-2",style:Z(n.value),onClick:r},null,4)):w("",!0)])]),a.value?(l(),m("p",{key:0,class:"infotext shadow m-0 ps-2 mb-1 p-1",onClick:r},[xs,z(" "+x(s.infotext),1)])):w("",!0),o("div",$s,[o("span",Ms,[he(s.$slots,"default",{},void 0,!0)])])])]),_:3},8,["fullwidth"]))}}),F=U(Is,[["__scopeId","data-v-b935eb33"]]),La=t=>(oe("data-v-17a828b1"),t=t(),re(),t),Cs={class:"d-flex flex-column"},Ps={class:"d-flex flex-fill justify-content-between align-items-center"},Bs=La(()=>o("i",{class:"fa fa-xl fa-minus-square me-2"},null,-1)),Vs=[Bs],Ls=["id","min","max","step"],Os=La(()=>o("i",{class:"fa fa-xl fa-plus-square ms-2"},null,-1)),As=[Os],Ts={class:"d-flex justify-content-between align-items-center"},Ds={class:"minlabel ps-4"},Ws={class:"valuelabel"},zs={class:"maxlabel pe-4"},Gs=O({__name:"RangeInput",props:{id:{},min:{},max:{},step:{},unit:{},decimals:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=a.decimals??0,n=e,s=p({get(){return Math.round(a.modelValue*Math.pow(10,r))/Math.pow(10,r)},set(c){n("update:modelValue",c)}});function h(){s.value>a.min&&(s.value=Math.round((s.value-a.step)*Math.pow(10,r))/Math.pow(10,r))}function g(){s.value<a.max&&(s.value=Math.round((s.value+a.step)*Math.pow(10,r))/Math.pow(10,r))}return(c,u)=>(l(),m("span",Cs,[o("span",Ps,[o("span",{type:"button",class:"minusButton",onClick:h},Vs),gt(o("input",{id:c.id,"onUpdate:modelValue":u[0]||(u[0]=d=>s.value=d),type:"range",class:"form-range flex-fill",min:c.min,max:c.max,step:c.step},null,8,Ls),[[io,s.value,void 0,{number:!0}]]),o("span",{type:"button",class:"plusButton",onClick:g},As)]),o("span",Ts,[o("span",Ds,x(c.min),1),o("span",Ws,x(s.value)+" "+x(c.unit),1),o("span",zs,x(c.max),1)])]))}}),De=U(Gs,[["__scopeId","data-v-17a828b1"]]),Es=["id","value"],js=O({__name:"RadioInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=p({get(){return a.modelValue},set(g){r("update:modelValue",g)}});function s(g){return a.options[g][2]?{color:a.options[g][2]}:{color:"var(--color-fg)"}}function h(g){let c=g.target;for(;c&&!c.value&&c.parentElement;)c=c.parentElement;c.value&&(n.value=c.value)}return(g,c)=>(l(),m("div",null,[(l(!0),m(G,null,K(g.options,(u,d)=>(l(),m("button",{id:"radio-"+u[1],key:d,class:N(["btn btn-outline-secondary radiobutton me-2 mb-0 px-2",u[1]==n.value?"active":""]),value:u[1],style:Z(s(d)),onClick:h},[o("span",{style:Z(s(d))},[u[3]?(l(),m("i",{key:0,class:N(["fa-solid",u[3]])},null,2)):w("",!0),z(" "+x(u[0]),1)],4)],14,Es))),128))]))}}),We=U(js,[["__scopeId","data-v-df222cbe"]]),Us=t=>(oe("data-v-0303d179"),t=t(),re(),t),Fs={class:"mt-2"},Ns=Us(()=>o("p",{class:"heading ms-1"},"Sofortladen:",-1)),Hs={key:0},Rs=O({__name:"CPConfigInstant",props:{chargepoint:{}},setup(t){const a=X(t.chargepoint),r=[{name:"keine",id:"none"},{name:"EV-SoC",id:"soc"},{name:"Energiemenge",id:"amount"}],n=p({get(){return a.value.instantMaxEnergy/1e3},set(s){a.value.instantMaxEnergy=s*1e3}});return(s,h)=>(l(),m("div",Fs,[Ns,b(F,{title:"Stromstärke",icon:"fa-bolt",fullwidth:!0},{default:y(()=>[b(De,{id:"targetCurrent",modelValue:a.value.instantTargetCurrent,"onUpdate:modelValue":h[0]||(h[0]=g=>a.value.instantTargetCurrent=g),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1}),a.value.instantChargeLimitMode!="none"?(l(),m("hr",Hs)):w("",!0),b(F,{title:"Begrenzung",icon:"fa-hand",fullwidth:!0},{default:y(()=>[b(We,{modelValue:a.value.instantChargeLimitMode,"onUpdate:modelValue":h[1]||(h[1]=g=>a.value.instantChargeLimitMode=g),options:r.map(g=>[g.name,g.id])},null,8,["modelValue","options"])]),_:1}),a.value.instantChargeLimitMode=="soc"?(l(),$(F,{key:1,title:"Maximaler SoC",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(De,{id:"maxSoc",modelValue:a.value.instantTargetSoc,"onUpdate:modelValue":h[2]||(h[2]=g=>a.value.instantTargetSoc=g),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),a.value.instantChargeLimitMode=="amount"?(l(),$(F,{key:2,title:"Zu ladende Energie",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(De,{id:"maxEnergy",modelValue:n.value,"onUpdate:modelValue":h[3]||(h[3]=g=>n.value=g),min:0,max:100,step:1,unit:"kWh"},null,8,["modelValue"])]),_:1})):w("",!0)]))}}),Js=U(Rs,[["__scopeId","data-v-0303d179"]]),qs={class:"form-check form-switch"},ie=O({__name:"SwitchInput",props:{modelValue:{type:Boolean},onColor:{},offColor:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=p({get(){return a.modelValue},set(h){r("update:modelValue",h)}}),s=p(()=>n.value?{"background-color":"green"}:{"background-color":"white"});return(h,g)=>(l(),m("div",qs,[gt(o("input",{"onUpdate:modelValue":g[0]||(g[0]=c=>n.value=c),class:"form-check-input",type:"checkbox",role:"switch",style:Z(s.value)},null,4),[[_a,n.value]])]))}}),Ys=t=>(oe("data-v-faa69015"),t=t(),re(),t),Qs={class:"pt-2"},Zs=Ys(()=>o("p",{class:"heading ms-1"},"PV-Laden:",-1)),Xs={key:3},Ks=O({__name:"CPConfigPv",props:{chargepoint:{}},setup(t){const a=X(t.chargepoint),r=p({get(){return a.value.pvMinCurrent>5},set(h){h?a.value.pvMinCurrent=6:a.value.pvMinCurrent=0}}),n=p({get(){return a.value.pvMinSoc>0},set(h){h?a.value.pvMinSoc=50:a.value.pvMinSoc=0}}),s=p({get(){return a.value.pvMaxSoc<=100},set(h){h?a.value.pvMaxSoc=100:a.value.pvMaxSoc=101}});return(h,g)=>(l(),m("div",Qs,[Zs,b(F,{title:"Ladestand begrenzen",icon:"fa-battery-three-quarters",fullwidth:!0},{default:y(()=>[b(ie,{id:"limitSoc",modelValue:s.value,"onUpdate:modelValue":g[0]||(g[0]=c=>s.value=c)},null,8,["modelValue"])]),_:1}),s.value?(l(),$(F,{key:0,title:"...auf maximal...",icon:"fa-battery-three-quarters",fullwidth:!0},{default:y(()=>[b(De,{id:"maxSoc",modelValue:a.value.pvMaxSoc,"onUpdate:modelValue":g[1]||(g[1]=c=>a.value.pvMaxSoc=c),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),b(F,{title:"Einspeisegrenze beachten",icon:"fa-hand",fullwidth:!0},{default:y(()=>[b(ie,{modelValue:a.value.pvFeedInLimit,"onUpdate:modelValue":g[2]||(g[2]=c=>a.value.pvFeedInLimit=c)},null,8,["modelValue"])]),_:1}),b(F,{title:"Mindest-Ladestand",icon:"fa-battery-half",infotext:i(Oe).minsoc,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:n.value,"onUpdate:modelValue":g[3]||(g[3]=c=>n.value=c)},null,8,["modelValue"])]),_:1},8,["infotext"]),n.value?(l(),$(F,{key:1,title:"...bis SoC",fullwidth:!0},{info:y(()=>[z(x(i(Oe).minsoc),1)]),default:y(()=>[b(De,{id:"minSoc",modelValue:a.value.pvMinSoc,"onUpdate:modelValue":g[4]||(g[4]=c=>a.value.pvMinSoc=c),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),n.value?(l(),$(F,{key:2,title:"...mit Ladestrom",fullwidth:!0},{default:y(()=>[b(De,{id:"minSocCurrent",modelValue:a.value.pvMinSocCurrent,"onUpdate:modelValue":g[5]||(g[5]=c=>a.value.pvMinSocCurrent=c),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):w("",!0),r.value||n.value?(l(),m("hr",Xs)):w("",!0),b(F,{title:"Minimaler Ladestrom",icon:"fa-bolt",infotext:i(Oe).minpv,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:r.value,"onUpdate:modelValue":g[6]||(g[6]=c=>r.value=c)},null,8,["modelValue"])]),_:1},8,["infotext"]),r.value?(l(),$(F,{key:4,title:"...bei Ladestrom (minimal)",fullwidth:!0},{default:y(()=>[b(De,{id:"minCurrent",modelValue:a.value.pvMinCurrent,"onUpdate:modelValue":g[7]||(g[7]=c=>a.value.pvMinCurrent=c),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):w("",!0)]))}}),ei=U(Ks,[["__scopeId","data-v-faa69015"]]),Oa=t=>(oe("data-v-e8f5ad9d"),t=t(),re(),t),ti=Oa(()=>o("p",{class:"heading ms-1 pt-2"},"Zielladen:",-1)),ai={class:"table table-borderless"},oi=Oa(()=>o("thead",null,[o("tr",null,[o("th",{class:"tableheader"},"Ziel"),o("th",{class:"tableheader"},"Limit"),o("th",{class:"tableheader"},"Zeit"),o("th",{class:"tableheader"},"Wiederholung"),o("th",{class:"tableheader"})])],-1)),ri={class:"tablecell"},ni={class:"tablecell"},si={class:"tablecell"},ii={class:"tablecell"},li={class:"tablecell left"},ci=["href"],di=O({__name:"CPConfigScheduled",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,r=p(()=>{let g=[];return lt[a.chargeTemplateId]&&(g=Object.values(lt[a.chargeTemplateId])),g});function n(g){return r.value[g].time}function s(g){return{color:r.value[g].active?"var(--color-switchGreen)":"var(--color-switchRed)"}}function h(g){return{"font-weight":r.value[g].active?"bold":"regular"}}return(g,c)=>(l(),m(G,null,[ti,o("table",ai,[oi,o("tbody",null,[(l(!0),m(G,null,K(r.value,(u,d)=>(l(),m("tr",{key:d,style:Z(h(d))},[o("td",ri,x(u.limit.soc_scheduled)+"%",1),o("td",ni,x(u.limit.soc_limit)+"%",1),o("td",si,x(n(d)),1),o("td",ii,x(e[u.frequency.selected]),1),o("td",li,[o("a",{href:"../../settings/#/VehicleConfiguration/charge_template/"+a.chargeTemplateId},[o("span",{class:N([u.active?"fa-toggle-on":"fa-toggle-off","fa"]),style:Z(s(d)),type:"button"},null,6)],8,ci)])],4))),128))])])],64))}}),ui=U(di,[["__scopeId","data-v-e8f5ad9d"]]),Aa=t=>(oe("data-v-192e287b"),t=t(),re(),t),hi=Aa(()=>o("p",{class:"heading ms-1 pt-2"},"Zeitpläne:",-1)),pi={class:"table table-borderless"},gi=Aa(()=>o("thead",null,[o("tr",null,[o("th",{class:"tableheader"},"Von"),o("th",{class:"tableheader"},"Bis"),o("th",{class:"tableheader"},"Ladestrom"),o("th",{class:"tableheader"},"Wiederholung"),o("th",{class:"tableheader right"})])],-1)),mi={class:"tablecell"},vi={class:"tablecell"},fi={class:"tablecell"},_i={class:"tablecell"},bi={class:"tablecell left"},yi=["href"],wi=O({__name:"CPConfigTimed",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,r=p(()=>ct[a.chargeTemplateId]?Object.values(ct[a.chargeTemplateId])??[]:[]);function n(h){return{color:r.value[h].active?"var(--color-switchGreen)":"var(--color-switchRed)"}}function s(h){return{"font-weight":r.value[h].active?"bold":"regular"}}return(h,g)=>(l(),m(G,null,[hi,o("table",pi,[gi,o("tbody",null,[(l(!0),m(G,null,K(r.value,(c,u)=>(l(),m("tr",{key:u,style:Z(s(u))},[o("td",mi,x(c.time[0]),1),o("td",vi,x(c.time[1]),1),o("td",fi,x(c.current)+" A",1),o("td",_i,x(e[c.frequency.selected]),1),o("td",bi,[o("a",{href:"../../settings/#/VehicleConfiguration/charge_template/"+a.chargeTemplateId},[o("span",{class:N([c.active?"fa-toggle-on":"fa-toggle-off","fa"]),style:Z(n(u)),type:"button"},null,6)],8,yi)])],4))),128))])])],64))}}),ki=U(wi,[["__scopeId","data-v-192e287b"]]),Si={class:"settingsheader mt-2 ms-1"},xi=O({__name:"CPConfigVehicle",props:{vehicleId:{}},setup(t){const e=t;return(a,r)=>(l(),m(G,null,[o("p",Si," Profile für "+x(i(Y)[e.vehicleId].name)+": ",1),b(F,{title:"Ladeprofil",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(Y)[e.vehicleId].chargeTemplateId,"onUpdate:modelValue":r[0]||(r[0]=n=>i(Y)[e.vehicleId].chargeTemplateId=n),modelModifiers:{number:!0},options:Object.keys(i(ye)).map(n=>[i(ye)[+n].name,n])},null,8,["modelValue","options"])]),_:1}),b(F,{title:"Fahrzeug-Vorlage",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(Y)[e.vehicleId].evTemplateId,"onUpdate:modelValue":r[1]||(r[1]=n=>i(Y)[e.vehicleId].evTemplateId=n),modelModifiers:{number:!0},options:Object.keys(i(Ht)).map(n=>[i(Ht)[+n].name,n])},null,8,["modelValue","options"])]),_:1})],64))}}),$i=U(xi,[["__scopeId","data-v-fcb57a44"]]),Mi={class:"settingsheader mt-2 ms-1"},Ii=O({__name:"CPChargeConfig",props:{chargepoint:{}},emits:["closeConfig"],setup(t){const a=t.chargepoint;return(r,n)=>(l(),m(G,null,[o("p",Mi," Ladeeinstellungen für "+x(i(a).vehicleName)+": ",1),b(F,{title:"Lademodus",icon:"fa-charging-station",infotext:i(Oe).chargemode,fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(a).chargeMode,"onUpdate:modelValue":n[0]||(n[0]=s=>i(a).chargeMode=s),options:Object.keys(i(ge)).map(s=>[i(ge)[s].name,s,i(ge)[s].color,i(ge)[s].icon])},null,8,["modelValue","options"])]),_:1},8,["infotext"]),b(F,{title:"Fahrzeug wechseln",icon:"fa-car",infotext:i(Oe).vehicle,fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(a).connectedVehicle,"onUpdate:modelValue":n[1]||(n[1]=s=>i(a).connectedVehicle=s),modelModifiers:{number:!0},options:Object.values(i(Y)).filter(s=>s.visible).map(s=>[s.name,s.id])},null,8,["modelValue","options"])]),_:1},8,["infotext"]),b(F,{title:"Sperren",icon:"fa-lock",infotext:i(Oe).locked,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:i(a).isLocked,"onUpdate:modelValue":n[2]||(n[2]=s=>i(a).isLocked=s)},null,8,["modelValue"])]),_:1},8,["infotext"]),b(F,{title:"Priorität",icon:"fa-star",infotext:i(Oe).priority,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:i(a).hasPriority,"onUpdate:modelValue":n[3]||(n[3]=s=>i(a).hasPriority=s)},null,8,["modelValue"])]),_:1},8,["infotext"]),b(F,{title:"Zeitplan",icon:"fa-clock",infotext:i(Oe).timeplan,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:i(a).timedCharging,"onUpdate:modelValue":n[4]||(n[4]=s=>i(a).timedCharging=s)},null,8,["modelValue"])]),_:1},8,["infotext"]),i(ue).isBatteryConfigured?(l(),$(F,{key:0,title:"PV-Priorität",icon:"fa-car-battery",infotext:i(Oe).pvpriority,fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(ue).pvBatteryPriority,"onUpdate:modelValue":n[5]||(n[5]=s=>i(ue).pvBatteryPriority=s),options:i(_o)},null,8,["modelValue","options"])]),_:1},8,["infotext"])):w("",!0),i(te).active?(l(),$(F,{key:1,title:"Strompreisbasiert laden",icon:"fa-money-bill",infotext:i(Oe).pricebased,fullwidth:!0},{default:y(()=>[b(ie,{modelValue:i(a).etActive,"onUpdate:modelValue":n[6]||(n[6]=s=>i(a).etActive=s)},null,8,["modelValue"])]),_:1},8,["infotext"])):w("",!0)],64))}}),Ci=U(Ii,[["__scopeId","data-v-e348a34c"]]),Ta=t=>(oe("data-v-0a5353c2"),t=t(),re(),t),Pi=Ta(()=>o("p",{class:"settingsheader mt-2 ms-1"},"Preisbasiertes Laden:",-1)),Bi={class:"providername ms-1"},Vi=Ta(()=>o("hr",null,null,-1)),Li={class:"container"},Oi={id:"pricechart",class:"p-0 m-0"},Ai={viewBox:"0 0 400 300"},Ti=["id","origin","transform"],Di={key:0,class:"p-3"},Wi={key:1,class:"d-flex justify-content-end"},zi=["disabled"],nt=400,pa=250,ga=12,Gi=O({__name:"PriceChart",props:{chargepoint:{},globalview:{type:Boolean}},setup(t){const e=t;let a=e.chargepoint?X(e.chargepoint.etMaxPrice):X(0);const r=X(!1),n=X(e.chargepoint),s=p({get(){return a.value},set(M){a.value=M,r.value=!0}});function h(){n.value&&(V[n.value.id].etMaxPrice=s.value),r.value=!1}const g=X(!1),c={top:0,bottom:15,left:20,right:5},u=p(()=>{let M=[];return te.etPriceList.size>0&&te.etPriceList.forEach((S,B)=>{M.push([B,S])}),M}),d=p(()=>u.value.length>1?(nt-c.left-c.right)/u.value.length-1:0),C=p(()=>r.value?{background:"var(--color-charging)"}:{background:"var(--color-menu)"}),J=p(()=>{let M=Be(u.value,S=>S[0]);return M[1]&&(M[1]=new Date(M[1]),M[1].setTime(M[1].getTime()+36e5)),Qe().range([c.left,nt-c.right]).domain(M)}),L=p(()=>{let M=[0,0];return u.value.length>0?(M=Be(u.value,S=>S[1]),M[0]=Math.floor(M[0]-1),M[1]=Math.floor(M[1]+1)):M=[0,0],M}),E=p(()=>Ze().range([pa-c.bottom,0]).domain(L.value)),T=p(()=>{const M=bt(),S=[[c.left,E.value(s.value)],[nt-c.right,E.value(s.value)]];return M(S)}),q=p(()=>{const M=bt(),S=[[c.left,E.value(0)],[nt-c.right,E.value(0)]];return M(S)}),I=p(()=>it(J.value).ticks(6).tickSize(5).tickFormat(ot("%H:%M"))),H=p(()=>pt(E.value).ticks(6).tickSizeInner(-(nt-c.right-c.left)).tickFormat(M=>M.toString())),P=p(()=>{g.value==!0;const M=de("g#"+k.value);M.selectAll("*").remove(),M.selectAll("bar").data(u.value).enter().append("g").append("rect").attr("class","bar").attr("x",_e=>J.value(_e[0])).attr("y",_e=>E.value(_e[1])).attr("width",d.value).attr("height",_e=>E.value(L.value[0])-E.value(_e[1])).attr("fill",_e=>_e[1]<=s.value?"var(--color-charging)":"var(--color-axis)");const B=M.append("g").attr("class","axis").call(I.value);B.attr("transform","translate(0,"+(pa-c.bottom)+")"),B.selectAll(".tick").attr("font-size",ga).attr("color","var(--color-bg)"),B.selectAll(".tick line").attr("stroke","var(--color-fg)").attr("stroke-width","0.5"),B.select(".domain").attr("stroke","var(--color-bg");const D=M.append("g").attr("class","axis").call(H.value);return D.attr("transform","translate("+c.left+",0)"),D.selectAll(".tick").attr("font-size",ga).attr("color","var(--color-bg)"),D.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width","0.5"),D.select(".domain").attr("stroke","var(--color-bg)"),L.value[0]<0&&M.append("path").attr("d",q.value).attr("stroke","var(--color-fg)"),M.append("path").attr("d",T.value).attr("stroke","yellow"),"PriceChart.vue"}),k=p(()=>e.chargepoint?"priceChartCanvas"+e.chargepoint.id:"priceChartCanvasGlobal");return Ve(()=>{g.value=!g.value}),(M,S)=>(l(),m(G,null,[Pi,o("p",Bi,"Anbieter: "+x(i(te).etProvider),1),Vi,o("div",Li,[o("figure",Oi,[(l(),m("svg",Ai,[o("g",{id:k.value,origin:P.value,transform:"translate("+c.top+","+c.right+")"},null,8,Ti)]))])]),M.chargepoint!=null?(l(),m("div",Di,[M.chargepoint.etActive?(l(),$(De,{key:0,id:"foo",modelValue:s.value,"onUpdate:modelValue":S[0]||(S[0]=B=>s.value=B),min:-25,max:95,step:.1,decimals:1,unit:"ct"},null,8,["modelValue"])):w("",!0)])):w("",!0),M.chargepoint!=null?(l(),m("div",Wi,[o("span",{class:"me-3 pt-0",onClick:h},[o("button",{type:"button",class:"btn btn-secondary",style:Z(C.value),disabled:!r.value}," Bestätigen ",12,zi)])])):w("",!0)],64))}}),Da=U(Gi,[["__scopeId","data-v-0a5353c2"]]),Ke=t=>(oe("data-v-1164316d"),t=t(),re(),t),Ei={class:"status-string"},ji={style:{color:"red"}},Ui={class:"m-0 mt-4 p-0 grid-col-12 tabarea"},Fi={class:"nav nav-tabs nav-justified mx-1 mt-1",role:"tablist"},Ni=["data-bs-target"],Hi=Ke(()=>o("i",{class:"fa-solid fa-charging-station"},null,-1)),Ri=[Hi],Ji=["data-bs-target"],qi=Ke(()=>o("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),Yi=[qi],Qi=["data-bs-target"],Zi=Ke(()=>o("i",{class:"fa-solid fa-solar-panel me-1"},null,-1)),Xi=[Zi],Ki=["data-bs-target"],el=Ke(()=>o("i",{class:"fa-solid fa-bullseye me-1"},null,-1)),tl=[el],al=["data-bs-target"],ol=Ke(()=>o("i",{class:"fa-solid fa-clock"},null,-1)),rl=[ol],nl=["data-bs-target"],sl=Ke(()=>o("i",{class:"fa-solid fa-rectangle-list"},null,-1)),il=[sl],ll=["data-bs-target"],cl=Ke(()=>o("i",{class:"fa-solid fa-chart-line"},null,-1)),dl=[cl],ul={id:"settingsPanes",class:"tab-content mx-1 p-1 pb-3"},hl=["id"],pl=["id"],gl=["id"],ml=["id"],vl=["id"],fl=["id"],_l=["id"],bl=O({__name:"CPChargeConfigPanel",props:{chargepoint:{}},emits:["closeConfig"],setup(t){const a=t.chargepoint,r=p(()=>ye[a.chargeTemplate]),n=p(()=>a.id);return Ve(()=>{}),(s,h)=>(l(),m(G,null,[b(F,{title:"Status",icon:"fa-info-circle",fullwidth:!0,class:"item"},{default:y(()=>[o("span",Ei,x(i(a).stateStr),1)]),_:1}),i(a).faultState!=0?(l(),$(F,{key:0,title:"Fehler",class:"grid-col-12",icon:"fa-triangle-exclamation"},{default:y(()=>[o("span",ji,x(i(a).faultStr),1)]),_:1})):w("",!0),o("div",Ui,[o("nav",Fi,[o("a",{class:"nav-link active","data-bs-toggle":"tab","data-bs-target":"#chargeSettings"+n.value},Ri,8,Ni),s.chargepoint.chargeMode=="instant_charging"?(l(),m("a",{key:0,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#instantSettings"+n.value},Yi,8,Ji)):w("",!0),s.chargepoint.chargeMode=="pv_charging"?(l(),m("a",{key:1,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pvSettings"+n.value},Xi,8,Qi)):w("",!0),s.chargepoint.chargeMode=="scheduled_charging"?(l(),m("a",{key:2,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#scheduledSettings"+n.value},tl,8,Ki)):w("",!0),s.chargepoint.timedCharging?(l(),m("a",{key:3,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#timeSettings"+n.value},rl,8,al)):w("",!0),o("a",{class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#carSettings"+n.value},il,8,nl),i(te).active&&i(a).etActive?(l(),m("a",{key:4,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#priceChart"+n.value},dl,8,ll)):w("",!0)]),o("div",ul,[o("div",{id:"chargeSettings"+n.value,class:"tab-pane active",role:"tabpanel","aria-labelledby":"instant-tab"},[b(Ci,{chargepoint:s.chargepoint},null,8,["chargepoint"])],8,hl),o("div",{id:"instantSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"instant-tab"},[b(Js,{chargepoint:i(a),vehicles:i(Y),"charge-templates":i(ye)},null,8,["chargepoint","vehicles","charge-templates"])],8,pl),o("div",{id:"pvSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"pv-tab"},[b(ei,{chargepoint:i(a),vehicles:i(Y),"charge-templates":i(ye)},null,8,["chargepoint","vehicles","charge-templates"])],8,gl),o("div",{id:"scheduledSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"scheduled-tab"},[r.value!=null?(l(),$(ui,{key:0,"charge-template-id":i(a).chargeTemplate},null,8,["charge-template-id"])):w("",!0)],8,ml),o("div",{id:"timeSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"time-tab"},[r.value!=null?(l(),$(ki,{key:0,"charge-template-id":i(a).chargeTemplate},null,8,["charge-template-id"])):w("",!0)],8,vl),o("div",{id:"carSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"car-tab"},[i(Y)[i(a).connectedVehicle]!=null?(l(),$($i,{key:0,"vehicle-id":i(a).connectedVehicle},null,8,["vehicle-id"])):w("",!0)],8,fl),o("div",{id:"priceChart"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},[i(Y)[i(a).connectedVehicle]!=null?(l(),$(Da,{key:0,chargepoint:i(a)},null,8,["chargepoint"])):w("",!0)],8,_l)])])],64))}}),Jt=U(bl,[["__scopeId","data-v-1164316d"]]),yl={class:"d-flex justify-content-center align-items-center"},wl=O({__name:"BatterySymbol",props:{soc:{},color:{}},setup(t){const e=t,a=p(()=>e.soc<=12?"fa-battery-empty":e.soc<38?"fa-battery-quarter":e.soc<62?"fa-battery-half":e.soc<87?"fa-battery-three-quarters":"fa-battery-full"),r=p(()=>({color:e.color??"var(--color-menu)"}));return(n,s)=>(l(),m("span",yl,[o("i",{class:N(["fa me-1",a.value]),style:Z(r.value)},null,6),z(" "+x(Math.round(n.soc)+"%"),1)]))}}),It=U(wl,[["__scopeId","data-v-a68c844a"]]),ze=O({__name:"FormatWattH",props:{wattH:{}},setup(t){const e=t,a=p(()=>ht(e.wattH,v.decimalPlaces));return(r,n)=>(l(),m("span",null,x(a.value),1))}}),kl=t=>(oe("data-v-1d5bc1d9"),t=t(),re(),t),Sl={class:"wb-widget p-0 m-0 shadow widgetWidth"},xl={class:"py-4 px-3 d-flex justify-content-between align-items-center titlerow"},$l={class:"d-flex align-items-center widgetname p-0 m-0"},Ml=kl(()=>o("div",{class:"p-0"},"(title goes here)",-1)),Il={class:"buttonrea d-flex float-right justify-content-end align-items-center"},Cl={class:"grid12 pb-3"},Pl=O({__name:"WbWidgetFlex",props:{variableWidth:{type:Boolean},fullWidth:{type:Boolean}},setup(t){const e=t,a=p(()=>e.fullWidth?"col-12":e.variableWidth&&v.preferWideBoxes?"col-lg-6":"col-lg-4");return(r,n)=>(l(),m("div",{class:N(["p-2 m-0",a.value])},[o("div",Sl,[o("div",xl,[o("div",$l,[he(r.$slots,"title",{},()=>[Ml],!0),he(r.$slots,"subtitle",{},void 0,!0)]),o("div",Il,[he(r.$slots,"buttons",{},void 0,!0)])]),o("div",Cl,[he(r.$slots,"default",{},void 0,!0)])])],2))}}),Ge=U(Pl,[["__scopeId","data-v-1d5bc1d9"]]),Bl=O({__name:"WbBadge",props:{color:{},bgcolor:{}},setup(t){const e=t,a=p(()=>({color:e.color??"var(--color-bg)","background-color":e.bgcolor??"var(--color-menu)"}));return(r,n)=>(l(),m("span",{class:"pillWbBadge rounded-pill ms-2 px-2",style:Z(a.value)},[he(r.$slots,"default",{},void 0,!0)],4))}}),Me=U(Bl,[["__scopeId","data-v-36112fa3"]]),Je=t=>(oe("data-v-62e55097"),t=t(),re(),t),Vl={class:"d-flex justify-content-center align-items-center"},Ll=Je(()=>o("span",{class:"fa-solid fa-charging-station"}," ",-1)),Ol={key:0,class:"WbBadge rounded-pill errorWbBadge ms-3"},Al=Je(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-ellipsis-vertical"},null,-1)),Tl=[Al],Dl={key:0},Wl={key:1,class:"row m-0 mt-0 p-0"},zl={class:"col m-0 p-0"},Gl={key:0},El={class:"col"},jl={class:"carTitleLine d-flex justify-content-between align-items-center"},Ul=Je(()=>o("i",{class:"fa-solid fa-sm fa-car me-2"},null,-1)),Fl={key:0,class:"me-1 fa-solid fa-xs fa-star ps-1"},Nl={key:1,class:"me-1 fa-solid fa-xs fa-coins ps-0"},Hl={key:2,class:"me-0 fa-solid fa-xs fa-clock ps-1"},Rl={class:"grid12"},Jl={style:{color:"var(--color-charging)"}},ql={style:{color:"var(--color-charging)"}},Yl={style:{color:"var(--color-charging)"}},Ql={class:"targetCurrent"},Zl={key:5,class:"socEditor rounded mt-2 d-flex flex-column align-items-center grid-col-12 grid-left"},Xl=Je(()=>o("span",{class:"d-flex m-1 p-0 socEditTitle"},"Ladestand einstellen:",-1)),Kl={class:"d-flex justify-content-stretch align-items-center"},ec=Je(()=>o("hr",{class:"divider grid-col-12"},null,-1)),tc={key:0,class:"fa-solid fa-sm fas fa-edit ms-2"},ac=["id"],oc=Je(()=>o("span",{type:"button",class:"d-flex fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),rc=[oc],nc=Je(()=>o("span",{class:"fas fa-gear"}," ",-1)),sc=Je(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),ic=[sc],lc=O({__name:"CPChargePoint",props:{chargepoint:{},fullWidth:{type:Boolean}},setup(t){const e=t,a=X(e.chargepoint),r=p({get(){return e.chargepoint.chargeMode},set(S){V[e.chargepoint.id].chargeMode=S}}),n=p(()=>(Math.round(e.chargepoint.current*10)/10).toLocaleString(void 0)+" A"),s=p(()=>(Math.round(e.chargepoint.realCurrent*10)/10).toLocaleString(void 0)+" A"),h=p(()=>{const S=e.chargepoint.rangeCharged,B=e.chargepoint.chargedSincePlugged,D=e.chargepoint.dailyYield;return B>0?Math.round(S/B*D).toString()+" "+e.chargepoint.rangeUnit:"0 km"}),g=p(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei"),c=p(()=>e.chargepoint.isLocked?"var(--color-evu)":e.chargepoint.isCharging?"var(--color-charging)":e.chargepoint.isPluggedIn?"var(--color-battery)":"var(--color-axis)"),u=p(()=>{let S="";return e.chargepoint.isLocked?S="fa-lock":e.chargepoint.isCharging?S=" fa-bolt":e.chargepoint.isPluggedIn&&(S="fa-plug"),"fa "+S}),d=p(()=>{switch(e.chargepoint.chargeMode){case"stop":return{color:"var(--fg)"};default:return{color:ge[e.chargepoint.chargeMode].color}}}),C=p(()=>e.chargepoint.soc),J=p(()=>({color:e.chargepoint.color})),L=p(()=>e.chargepoint.etMaxPrice>=+k.value?{color:"var(--color-charging)"}:{color:"var(--color-menu)"}),E=p(()=>e.chargepoint.soc<20?"var(--color-evu)":e.chargepoint.soc>=80?"var(--color-pv)":"var(--color-battery)"),T=X(!1),q=X(!1);function I(){ee("socUpdate",1,e.chargepoint.connectedVehicle),V[e.chargepoint.id].waitingForSoc=!0}function H(){ee("setSoc",P.value,e.chargepoint.connectedVehicle),q.value=!1}const P=p({get(){return e.chargepoint.soc},set(S){V[e.chargepoint.id].soc=S}}),k=p(()=>{const[S]=te.etPriceList.values();return(Math.round(S*10)/10).toFixed(1)}),M=X(!1);return(S,B)=>(l(),m(G,null,[T.value?w("",!0):(l(),$($t,{key:0,"variable-width":!0,"full-width":e.fullWidth},{title:y(()=>[o("span",Vl,[o("span",{style:Z(J.value),onClick:B[0]||(B[0]=D=>T.value=!T.value)},[Ll,z(" "+x(e.chargepoint.name),1)],4),a.value.faultState==2?(l(),m("span",Ol,"Fehler")):w("",!0)])]),buttons:y(()=>[o("span",{type:"button",class:"ms-2 ps-1 pt-1",style:Z(d.value),onClick:B[1]||(B[1]=D=>T.value=!T.value)},Tl,4)]),footer:y(()=>[T.value?w("",!0):(l(),m("div",Gl,[o("div",{class:"row",onClick:B[4]||(B[4]=D=>T.value=!T.value)},[o("div",El,[o("div",jl,[o("h3",null,[Ul,z(" "+x(S.chargepoint.vehicleName)+" ",1),S.chargepoint.hasPriority?(l(),m("span",Fl)):w("",!0),S.chargepoint.etActive?(l(),m("span",Nl)):w("",!0),S.chargepoint.timedCharging?(l(),m("span",Hl)):w("",!0)]),b(Me,{bgcolor:E.value},{default:y(()=>[b(It,{soc:C.value,color:"var(--color-bg)",class:"me-2"},null,8,["soc"]),S.chargepoint.isSocConfigured&&S.chargepoint.isSocManual?(l(),m("i",{key:0,class:"fa-solid fa-sm fas fa-edit",style:{color:"var(--color-menu)"},onClick:B[3]||(B[3]=D=>q.value=!q.value)})):w("",!0),S.chargepoint.isSocConfigured&&!S.chargepoint.isSocManual?(l(),m("i",{key:1,type:"button",class:N(["fa-solid fa-sm",S.chargepoint.waitingForSoc?"fa-spinner fa-spin":"fa-sync"]),onClick:I},null,2)):w("",!0)]),_:1},8,["bgcolor"])])])]),o("div",Rl,[b(Pa,{id:"chargemode-"+S.chargepoint.name,modelValue:r.value,"onUpdate:modelValue":B[5]||(B[5]=D=>r.value=D),class:"chargemodes mt-3 mb-3",options:Object.keys(i(ge)).map(D=>({text:i(ge)[D].name,value:D,color:i(ge)[D].color,icon:i(ge)[D].icon,active:i(ge)[D].mode==S.chargepoint.chargeMode}))},null,8,["id","modelValue","options"]),e.chargepoint.power>0?(l(),$(Q,{key:0,heading:"Leistung:",class:"grid-col-3 grid-left mb-3"},{default:y(()=>[o("span",Jl,[b(vt,{watt:e.chargepoint.power},null,8,["watt"])])]),_:1})):w("",!0),e.chargepoint.power>0?(l(),$(Q,{key:1,heading:"Strom:",class:"grid-col-3"},{default:y(()=>[o("span",ql,x(s.value),1)]),_:1})):w("",!0),e.chargepoint.power>0?(l(),$(Q,{key:2,heading:"Phasen:",class:"grid-col-3"},{default:y(()=>[o("span",Yl,x(e.chargepoint.phasesInUse),1)]),_:1})):w("",!0),e.chargepoint.power>0?(l(),$(Q,{key:3,heading:"Sollstrom:",class:"grid-col-3 grid-right"},{default:y(()=>[o("span",Ql,x(n.value),1)]),_:1})):w("",!0),b(Q,{heading:"letzte Ladung:",class:"grid-col-4 grid-left"},{default:y(()=>[b(ze,{"watt-h":Math.max(S.chargepoint.chargedSincePlugged,0)},null,8,["watt-h"])]),_:1}),b(Q,{heading:"gel. Reichw.:",class:"grid-col-4"},{default:y(()=>[z(x(h.value),1)]),_:1}),S.chargepoint.isSocConfigured?(l(),$(Q,{key:4,heading:"Reichweite:",class:"grid-col-4 grid-right"},{default:y(()=>[z(x(i(Y)[e.chargepoint.connectedVehicle]?Math.round(i(Y)[e.chargepoint.connectedVehicle].range):0)+" km ",1)]),_:1})):w("",!0),q.value?(l(),m("div",Zl,[Xl,o("span",Kl,[o("span",null,[b(De,{id:"manualSoc",modelValue:P.value,"onUpdate:modelValue":B[6]||(B[6]=D=>P.value=D),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])])]),o("span",{type:"button",class:"fa-solid d-flex fa-lg me-2 mb-3 align-self-end fa-circle-check",onClick:H})])):w("",!0),ec,i(te).active?(l(),$(Q,{key:6,heading:"Preisladen:",class:"grid-col-4 grid-left"},{default:y(()=>[b(ie,{modelValue:a.value.etActive,"onUpdate:modelValue":B[7]||(B[7]=D=>a.value.etActive=D)},null,8,["modelValue"])]),_:1})):w("",!0),i(te).active?(l(),$(Q,{key:7,heading:"max. Preis:",class:"grid-col-4"},{default:y(()=>[o("span",{type:"button",onClick:B[8]||(B[8]=D=>M.value=!M.value)},[z(x(e.chargepoint.etActive?(Math.round(e.chargepoint.etMaxPrice*10)/10).toFixed(1)+" ct":"-")+" ",1),e.chargepoint.etActive?(l(),m("i",tc)):w("",!0)])]),_:1})):w("",!0),i(te).active?(l(),$(Q,{key:8,heading:"akt. Preis:",class:"grid-col-4 grid-right"},{default:y(()=>[o("span",{style:Z(L.value)},x(k.value)+" ct ",5)]),_:1})):w("",!0),M.value?(l(),m("div",{key:9,id:"priceChartInline"+e.chargepoint.id,class:"d-flex flex-column rounded priceEditor grid-col-12"},[i(Y)[e.chargepoint.connectedVehicle]!=null?(l(),$(Da,{key:0,chargepoint:e.chargepoint},null,8,["chargepoint"])):w("",!0),o("span",{class:"d-flex ms-2 my-4 pe-3 pt-1 d-flex align-self-end",style:Z(d.value),onClick:B[9]||(B[9]=D=>M.value=!1)},rc,4)],8,ac)):w("",!0)])]))]),default:y(()=>[T.value?w("",!0):(l(),m("div",Dl,[o("div",{class:"grid12",onClick:B[2]||(B[2]=D=>T.value=!T.value)},[b(Q,{heading:"Status:",class:"grid-col-4 grid-left"},{default:y(()=>[o("span",{style:Z({color:c.value})},[o("i",{class:N(u.value)},null,2),z(" "+x(g.value),1)],4)]),_:1}),b(Q,{heading:"Geladen:",class:"grid-col-4 grid-left"},{default:y(()=>[b(ze,{"watt-h":S.chargepoint.dailyYield},null,8,["watt-h"])]),_:1})])])),T.value?(l(),m("div",Wl,[o("div",zl,[S.chargepoint!=null?(l(),$(Jt,{key:0,chargepoint:S.chargepoint},null,8,["chargepoint"])):w("",!0)])])):w("",!0)]),_:1},8,["full-width"])),T.value?(l(),$(Ge,{key:1,"full-width":e.fullWidth},{title:y(()=>[o("span",{style:Z(J.value),onClick:B[10]||(B[10]=D=>T.value=!T.value)},[nc,z(" Einstellungen "+x(e.chargepoint.name),1)],4)]),buttons:y(()=>[o("span",{class:"ms-2 pt-1",style:Z(d.value),onClick:B[11]||(B[11]=D=>T.value=!T.value)},ic,4)]),default:y(()=>[S.chargepoint!=null?(l(),$(Jt,{key:0,chargepoint:S.chargepoint},null,8,["chargepoint"])):w("",!0)]),_:1},8,["full-width"])):w("",!0)],64))}}),cc=U(lc,[["__scopeId","data-v-62e55097"]]),Wa=t=>(oe("data-v-eaefae30"),t=t(),re(),t),dc=["id"],uc={class:"modal-dialog modal-lg modal-fullscreen-lg-down"},hc={class:"modal-content"},pc={class:"modal-header"},gc={class:"modal-title"},mc=Wa(()=>o("button",{type:"button",class:"btn-close buttonTextSize d-flex justify-content-center pt-3 pb-0","data-bs-dismiss":"modal"},[o("i",{class:"fa-solid fa-lg fa-rectangle-xmark m-0 p-0"})],-1)),vc={class:"modal-body",style:{"background-color":"var(--color-bg)"}},fc=Wa(()=>o("button",{class:"btn btn-secondary float-end mt-3 ms-1","data-bs-dismiss":"modal"}," Schließen ",-1)),_c=O({__name:"ModalComponent",props:{modalId:{}},setup(t){const e=t;return Ve(()=>{}),(a,r)=>(l(),m("div",{id:e.modalId,class:"modal fade"},[o("div",uc,[o("div",hc,[o("div",pc,[o("h3",gc,[he(a.$slots,"title",{},void 0,!0)]),mc]),o("div",vc,[he(a.$slots,"default",{},void 0,!0),fc])])])],8,dc))}}),za=U(_c,[["__scopeId","data-v-eaefae30"]]),bc=t=>(oe("data-v-2f1df729"),t=t(),re(),t),yc={class:"d-flex align-items-center"},wc={class:"cpname"},kc={class:"d-flex float-right justify-content-end align-items-center"},Sc=["data-bs-target"],xc=["data-bs-target"],$c={class:"subgrid"},Mc={key:0,class:"d-flex justify-content-center align-items-center vehiclestatus"},Ic={class:"d-flex flex-column align-items-center px-0"},Cc={class:"d-flex justify-content-center flex-wrap"},Pc={class:"d-flex align-items-center"},Bc={class:"badge phasesInUse rounded-pill"},Vc={class:"d-flex flex-wrap justify-content-center chargeinfo"},Lc={class:"me-1"},Oc={key:0,class:"subgrid socEditRow m-0 p-0"},Ac={class:"socEditor rounded mt-2 d-flex flex-column align-items-center grid-col-12"},Tc=bc(()=>o("span",{class:"d-flex m-1 p-0 socEditTitle"},"Ladestand einstellen:",-1)),Dc={class:"d-flex justify-content-stretch align-items-center"},Wc=O({__name:"CpsListItem2",props:{chargepoint:{}},setup(t){const e=t,a=X(!1),r=p(()=>ge[e.chargepoint.chargeMode].icon),n=p(()=>{let I="";return e.chargepoint.isLocked?I="fa-lock":e.chargepoint.isCharging?I=" fa-bolt":e.chargepoint.isPluggedIn&&(I="fa-plug"),"fa "+I}),s=p(()=>{let I="var(--color-axis)";return e.chargepoint.isLocked?I="var(--color-evu)":e.chargepoint.isCharging?I="var(--color-charging)":e.chargepoint.isPluggedIn&&(I="var(--color-battery)"),{color:I,border:`0.5px solid ${I} `}}),h=p(()=>{switch(e.chargepoint.chargeMode){case"stop":return{"background-color":"var(--fg)"};default:return{"background-color":ge[e.chargepoint.chargeMode].color}}}),g=p(()=>$e(e.chargepoint.power,v.decimalPlaces)),c=p(()=>e.chargepoint.current+" A"),u=p(()=>e.chargepoint.phasesInUse),d=p(()=>e.chargepoint.dailyYield>0?ht(e.chargepoint.dailyYield,v.decimalPlaces):"0 Wh"),C=p(()=>"("+Math.round(e.chargepoint.rangeCharged).toString()+" "+e.chargepoint.rangeUnit+")"),J=p(()=>ge[e.chargepoint.chargeMode].name);function L(){ee("socUpdate",1,e.chargepoint.connectedVehicle),V[e.chargepoint.id].waitingForSoc=!0}function E(){ee("setSoc",T.value,e.chargepoint.connectedVehicle),a.value=!1}const T=p({get(){return e.chargepoint.soc},set(I){V[e.chargepoint.id].soc=I}}),q=p(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei");return(I,H)=>(l(),m(G,null,[b(Xe,{titlecolor:I.chargepoint.color,fullwidth:!0,small:!0},{title:y(()=>[o("div",yc,[o("span",wc,x(I.chargepoint.name),1),o("span",{class:"badge rounded-pill statusbadge mx-2",style:Z(s.value)},[o("i",{class:N([n.value,"me-1"])},null,2),z(" "+x(q.value),1)],4)])]),buttons:y(()=>[o("div",kc,[o("span",{class:"badge rounded-pill modebadge mx-2",type:"button",style:Z(h.value),"data-bs-toggle":"modal","data-bs-target":"#cpsconfig-"+I.chargepoint.id},[o("i",{class:N(["fa me-1",r.value])},null,2),z(" "+x(J.value),1)],12,Sc),o("span",{class:"fa-solid ms-2 fa-lg fa-edit ps-1",type:"button","data-bs-toggle":"modal","data-bs-target":"#cpsconfig-"+I.chargepoint.id},null,8,xc)])]),default:y(()=>[o("div",$c,[b(Q,{heading:I.chargepoint.vehicleName,small:!0,class:"grid-left grid-col-4"},{default:y(()=>[I.chargepoint.isSocConfigured?(l(),m("span",Mc,[b(It,{class:"me-1",soc:I.chargepoint.soc},null,8,["soc"]),I.chargepoint.isSocConfigured&&I.chargepoint.isSocManual?(l(),m("i",{key:0,type:"button",class:"fa-solid fa-sm fas fa-edit",style:{color:"var(--color-menu)"},onClick:H[0]||(H[0]=P=>a.value=!a.value)})):w("",!0),I.chargepoint.isSocConfigured&&!I.chargepoint.isSocManual?(l(),m("i",{key:1,type:"button",class:N(["fa-solid fa-sm me-2",I.chargepoint.waitingForSoc?"fa-spinner fa-spin":"fa-sync"]),style:{color:"var(--color-menu)"},onClick:L},null,2)):w("",!0)])):w("",!0)]),_:1},8,["heading"]),b(Q,{heading:"Parameter:",small:!0,class:"grid-col-4"},{default:y(()=>[o("div",Ic,[o("span",Cc,[o("span",null,x(g.value),1),o("span",Pc,[o("span",Bc,x(u.value),1),o("span",null,x(c.value),1)])])])]),_:1}),b(Q,{heading:"Geladen:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[o("div",Vc,[o("span",Lc,x(d.value),1),o("span",null,x(C.value),1)])]),_:1})]),a.value?(l(),m("div",Oc,[o("div",Ac,[Tc,o("span",Dc,[o("span",null,[b(De,{id:"manualSoc",modelValue:T.value,"onUpdate:modelValue":H[1]||(H[1]=P=>T.value=P),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])])]),o("span",{type:"button",class:"fa-solid d-flex fa-lg me-2 mb-3 align-self-end fa-circle-check",onClick:E})])])):w("",!0)]),_:1},8,["titlecolor"]),(l(),$(lo,{to:"body"},[(l(),$(za,{key:I.chargepoint.id,"modal-id":"cpsconfig-"+I.chargepoint.id},{title:y(()=>[z(" Konfiguration: "+x(I.chargepoint.name),1)]),default:y(()=>[I.chargepoint!=null?(l(),$(Jt,{key:0,chargepoint:I.chargepoint},null,8,["chargepoint"])):w("",!0)]),_:1},8,["modal-id"]))]))],64))}}),zc=U(Wc,[["__scopeId","data-v-2f1df729"]]),Gc=t=>(oe("data-v-b8c6b557"),t=t(),re(),t),Ec=Gc(()=>o("span",{class:"fa-solid fa-charging-station"}," ",-1)),jc=O({__name:"CpSimpleList2",setup(t){const e=p(()=>Object.values(V));return(a,r)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[Ec,z(" Ladepunkte ")]),buttons:y(()=>[i(te).active?(l(),$(Me,{key:0,bgcolor:"var(--color-menu)"},{default:y(()=>[z("Strompreis: "+x(i(te).etCurrentPriceString),1)]),_:1})):w("",!0)]),default:y(()=>[(l(!0),m(G,null,K(e.value,(n,s)=>(l(),m("div",{key:s,class:"subgrid pb-2"},[b(zc,{chargepoint:n},null,8,["chargepoint"])]))),128))]),_:1}))}}),Uc=U(jc,[["__scopeId","data-v-b8c6b557"]]),Lt=O({__name:"ChargePointList",props:{id:{},compact:{type:Boolean}},setup(t){let e,a;const r=t,n=p(()=>{let u=Object.values(V);return c(),u}),s=p(()=>h.value+" "+g.value),h=p(()=>{switch(Object.values(V).length){case 0:return v.preferWideBoxes?"col-lg-6":"col-lg-4";case 1:return v.preferWideBoxes?"col-lg-6":"col-lg-4";case 2:return v.preferWideBoxes?"col-lg-12":"col-lg-8 ";default:return"col-lg-12"}}),g=p(()=>"swiper-chargepoints-"+r.id);function c(){let u=document.querySelector("."+g.value);if(u&&(a=u,e=a.swiper),e){let d="1";if(Re.value)switch(Object.values(V).length){case 0:case 1:d="1";break;case 2:d="2";break;default:d="3"}a.setAttribute("slides-per-view",d),e.update()}}return Ve(()=>{let u=document.querySelector("."+g.value);u&&(a=u,e=a.swiper),window.addEventListener("resize",c),window.document.addEventListener("visibilitychange",c)}),(u,d)=>(l(),m(G,null,[r.compact?w("",!0):(l(),m("swiper-container",{key:0,"space-between":0,"slides-per-view":1,pagination:{clickable:!0},class:N(["cplist m-0 p-0 d-flex align-items-stretch",s.value])},[(l(!0),m(G,null,K(n.value,C=>(l(),m("swiper-slide",{key:C.id},[o("div",{class:N([i(Re)?"mb-0":"mb-5","d-flex align-items-stretch flex-fill"])},[b(cc,{chargepoint:C,"full-width":!0},null,8,["chargepoint"])],2)]))),128))],2)),r.compact?(l(),$(Uc,{key:1})):w("",!0)],64))}}),Fc={class:"container-fluid p-0 m-0"},Nc={class:"row p-0 m-0"},Hc={class:"d-grid gap-2"},Rc=["onClick"],Jc={class:"col-md-4 p-1"},qc={class:"d-grid gap-2"},Yc={key:0},Qc=o("hr",null,null,-1),Zc=o("div",{class:"row"},[o("div",{class:"col text-center"},"Vorrang im Lademodus PV-Laden:")],-1),Xc={class:"row justify-content-center m-1 p-0"},Kc={class:"col-lg-4 p-1 m-0"},ed={class:"d-grid gap-2"},td=o("span",{class:"fas fa-car ms-2"}," ",-1),ad={class:"col-lg-4 p-1 m-0"},od={class:"d-grid gap-2"},rd=o("span",{class:"fas fa-car-battery ms-2"}," ",-1),nd={class:"col-lg-4 p-1 m-0"},sd={class:"d-grid gap-2"},id=o("span",{class:"fas fa-battery-half"}," ",-1),ld=O({__name:"BBSelect",props:{cpId:{}},setup(t){const e=t,a=[{mode:"instant_charging",name:"Sofort",color:"var(--color-charging)"},{mode:"pv_charging",name:"PV",color:"var(--color-pv)"},{mode:"scheduled_charging",name:"Zielladen",color:"var(--color-battery)"},{mode:"standby",name:"Standby",color:"var(--color-axis)"},{mode:"stop",name:"Stop",color:"var(--color-axis)"}],r=p(()=>V[e.cpId]);function n(u){return u==r.value.chargeMode?"btn btn-success buttonTextSize":"btn btn-secondary buttonTextSize"}function s(u){return ue.pvBatteryPriority==u?"btn-success":"btn-secondary"}function h(u){r.value.chargeMode=u}function g(u){r.value.isLocked=u}function c(u){ue.pvBatteryPriority=u}return(u,d)=>(l(),m("div",Fc,[o("div",Nc,[(l(),m(G,null,K(a,(C,J)=>o("div",{key:J,class:"col-md-4 p-1"},[o("div",Hc,[o("button",{type:"button",class:N(n(C.mode)),style:{},onClick:L=>h(C.mode)},x(C.name),11,Rc)])])),64)),o("div",Jc,[o("div",qc,[r.value.isLocked?(l(),m("button",{key:0,type:"button",class:"btn btn-outline-success buttonTextSize","data-bs-dismiss":"modal",onClick:d[0]||(d[0]=C=>g(!1))}," Entsperren ")):w("",!0),r.value.isLocked?w("",!0):(l(),m("button",{key:1,type:"button",class:"btn btn-outline-danger buttonTextSize","data-bs-dismiss":"modal",onClick:d[1]||(d[1]=C=>g(!0))}," Sperren "))])])]),i(ue).isBatteryConfigured?(l(),m("div",Yc,[Qc,Zc,o("div",Xc,[o("div",Kc,[o("div",ed,[o("button",{id:"evPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",s("ev_mode")]),"data-dismiss":"modal",priority:"1",onClick:d[2]||(d[2]=C=>c("ev_mode"))},[z(" EV "),td],2)])]),o("div",ad,[o("div",od,[o("button",{id:"batteryPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",s("bat_mode")]),"data-dismiss":"modal",priority:"0",onClick:d[3]||(d[3]=C=>c("bat_mode"))},[z(" Speicher "),rd],2)])]),o("div",nd,[o("div",sd,[o("button",{id:"minsocPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",s("min_soc_bat_mode")]),"data-dismiss":"modal",priority:"0",onClick:d[4]||(d[4]=C=>c("min_soc_bat_mode"))},[z(" MinSoc "),id],2)])])])])):w("",!0)]))}}),cd={class:"col-lg-4 p-0 m-0 mt-1"},dd={class:"d-grid gap-2"},ud=["data-bs-target"],hd={class:"m-0 p-0 d-flex justify-content-between align-items-center"},pd={class:"mx-1 badge rounded-pill smallTextSize plugIndicator"},gd={key:0,class:"ms-2"},md={class:"m-0 p-0"},vd={key:0,class:"ps-1"},fd=O({__name:"BbChargeButton",props:{chargepoint:{}},setup(t){const e=t,a="chargeSelectModal"+e.chargepoint.id,r=p(()=>ge[e.chargepoint.chargeMode].name),n=p(()=>{let d={background:"var(--color-menu)"};return e.chargepoint.isLocked?d.background="var(--color-evu)":e.chargepoint.isCharging?d.background="var(--color-charging)":e.chargepoint.isPluggedIn&&(d.background="var(--color-battery)"),d}),s=p(()=>{if(ge){let d={background:ge[e.chargepoint.chargeMode].color,color:"white"};switch(e.chargepoint.chargeMode){case fe.instant_charging:e.chargepoint.isCharging&&!e.chargepoint.isLocked&&(d=u(d));break;case fe.standby:case fe.stop:d.background="darkgrey",d.color="black";break;case fe.scheduled_charging:e.chargepoint.isPluggedIn&&!e.chargepoint.isCharging&&!e.chargepoint.isLocked&&(d=u(d));break}return d}else return{background:"var(--color-bg)",color:"var(--color-bg)"}}),h=p(()=>ge?ge[e.chargepoint.chargeMode].icon:""),g=p(()=>{switch(ue.pvBatteryPriority){case"ev_mode":return"fa-car";case"bat_mode":return"fa-car-battery";case"min_soc_bat_mode":return"fa-battery-half";default:return console.log("default"),""}}),c=p(()=>{let d="fa-ellipsis";return e.chargepoint.isLocked?d="fa-lock":e.chargepoint.isCharging?d=" fa-bolt":e.chargepoint.isPluggedIn&&(d="fa-plug"),"fa "+d});function u(d){let C=d.color;return d.color=d.background,d.background=C,d}return(d,C)=>(l(),m("div",cd,[o("div",dd,[o("button",{type:"button",class:"btn mx-1 mb-0 p-1 mediumTextSize chargeButton shadow",style:Z(n.value),"data-bs-toggle":"modal","data-bs-target":"#"+a},[o("div",hd,[o("span",pd,[o("i",{class:N(c.value)},null,2),d.chargepoint.isCharging?(l(),m("span",gd,x(i($e)(d.chargepoint.power)),1)):w("",!0)]),o("span",md,x(d.chargepoint.name),1),o("span",{class:"mx-2 m-0 badge rounded-pill smallTextSize modeIndicator",style:Z(s.value)},[o("i",{class:N(["fa me-1",h.value])},null,2),z(" "+x(r.value)+" ",1),d.chargepoint.chargeMode==i(fe).pv_charging&&i(ue).isBatteryConfigured?(l(),m("span",vd,[z(" ( "),o("i",{class:N(["fa m-0",g.value])},null,2),z(") ")])):w("",!0)],4)])],12,ud)]),b(za,{"modal-id":a},{title:y(()=>[z(" Lademodus für "+x(d.chargepoint.vehicleName),1)]),default:y(()=>[b(ld,{"cp-id":d.chargepoint.id},null,8,["cp-id"])]),_:1})]))}}),_d=U(fd,[["__scopeId","data-v-31df6764"]]),bd={class:"row p-0 mt-0 mb-1 m-0"},yd={class:"col p-0 m-0"},wd={class:"container-fluid p-0 m-0"},kd={class:"row p-0 m-0 d-flex justify-content-center align-items-center"},Sd={key:0,class:"col time-display"},xd=O({__name:"ButtonBar",setup(t){return(e,a)=>(l(),m("div",bd,[o("div",yd,[o("div",wd,[o("div",kd,[i(v).showClock=="buttonbar"?(l(),m("span",Sd,x(i(Ca)(i(Rt))),1)):w("",!0),(l(!0),m(G,null,K(i(V),(r,n)=>(l(),$(_d,{key:n,chargepoint:r,"charge-point-count":Object.values(i(V)).length},null,8,["chargepoint","charge-point-count"]))),128))])])])]))}}),$d=U(xd,[["__scopeId","data-v-791e4be0"]]);class Md{constructor(e){_(this,"id");_(this,"name","Speicher");_(this,"color","var(--color-battery)");_(this,"dailyYieldExport",0);_(this,"dailyYieldImport",0);_(this,"monthlyYieldExport",0);_(this,"monthlyYieldImport",0);_(this,"yearlyYieldExport",0);_(this,"yearlyYieldImport",0);_(this,"exported",0);_(this,"faultState",0);_(this,"faultStr","");_(this,"imported",0);_(this,"power",0);_(this,"soc",0);this.id=e}}class Id{constructor(){_(this,"dailyExport",0);_(this,"dailyImport",0);_(this,"exported",0);_(this,"imported",0);_(this,"power",0);_(this,"soc",0)}}se(new Id);const ve=X(new Map),Ga=t=>{ve.value.set(t,new Md(t)),ve.value.get(t).color=ce["bat"+ve.value.size].color};function Cd(){ve.value=new Map}const Pd={class:"battery-title"},Bd={class:"subgrid pt-1"},Vd=O({__name:"BLBattery",props:{bat:{}},setup(t){const e=t,a=p(()=>e.bat.power<0?`Liefert (${$e(-e.bat.power)})`:e.bat.power>0?`Lädt (${$e(e.bat.power)})`:"Bereit"),r=p(()=>e.bat.power<0?"var(--color-pv)":e.bat.power>0?"var(--color-battery)":"var(--color-menu)");return(n,s)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[o("span",Pd,x(n.bat.name),1)]),buttons:y(()=>[b(Me,{bgcolor:r.value},{default:y(()=>[z(x(a.value),1)]),_:1},8,["bgcolor"])]),default:y(()=>[o("div",Bd,[b(Q,{heading:"Ladestand:",small:!0,class:"grid-left grid-col-4"},{default:y(()=>[b(It,{soc:e.bat.soc},null,8,["soc"])]),_:1}),b(Q,{heading:"Geladen:",small:!0,class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.bat.dailyYieldImport},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Geliefert:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.bat.dailyYieldExport},null,8,["watt-h"])]),_:1})])]),_:1}))}}),Ld=U(Vd,[["__scopeId","data-v-f7f825f7"]]),Ea=t=>(oe("data-v-463638db"),t=t(),re(),t),Od=Ea(()=>o("span",{class:"fas fa-car-battery me-2",style:{color:"var(--color-battery)"}}," ",-1)),Ad=Ea(()=>o("span",null,"Speicher",-1)),Td={class:"px-3 subgrid grid-12"},Dd=O({__name:"BatteryList",setup(t){const e=p(()=>R.batOut.power>0?`Liefert (${$e(R.batOut.power)})`:j.batIn.power>0?`Lädt (${$e(j.batIn.power)})`:"Bereit:"),a=p(()=>R.batOut.power>0?"var(--color-pv)":j.batIn.power>0?"var(--color-battery)":"var(--color-menu)");return(r,n)=>i(ue).isBatteryConfigured?(l(),$(Ge,{key:0,"variable-width":!0,"full-width":!1},{title:y(()=>[Od,Ad]),buttons:y(()=>[b(Me,{bgcolor:a.value},{default:y(()=>[z(x(e.value),1)]),_:1},8,["bgcolor"])]),default:y(()=>[o("div",Td,[b(Q,{heading:"Ladestand:",class:"grid-left grid-col-4"},{default:y(()=>[b(It,{color:"var(--color-battery)",soc:i(ue).batterySoc},null,8,["soc"])]),_:1}),b(Q,{heading:"Geladen:",class:"grid-col-4"},{default:y(()=>[o("span",null,x(i(ht)(i(j).batIn.energy)),1)]),_:1}),b(Q,{heading:"Geliefert",class:"grid-right grid-col-4"},{default:y(()=>[o("span",null,x(i(ht)(i(R).batOut.energy)),1)]),_:1})]),(l(!0),m(G,null,K(i(ve),([s,h])=>(l(),$(Ld,{key:s,bat:h},null,8,["bat"]))),128))]),_:1})):w("",!0)}}),Ot=U(Dd,[["__scopeId","data-v-463638db"]]),Wd={class:"subgrid"},zd=O({__name:"SHListItem",props:{device:{}},setup(t){const e=t,a=p(()=>e.device.status=="on"?"fa-toggle-on fa-xl":e.device.status=="waiting"?"fa-spinner fa-spin":"fa-toggle-off fa-xl"),r=p(()=>{let g="var(--color-switchRed)";switch(e.device.status){case"on":g="var(--color-switchGreen)";break;case"detection":g="var(--color-switchBlue)";break;case"timeout":g="var(--color-switchWhite)";break;case"waiting":g="var(--color-menu)";break;default:g="var(--color-switchRed)"}return{color:g}});function n(){e.device.isAutomatic||(e.device.status=="on"?ee("shSwitchOn",0,e.device.id):ee("shSwitchOn",1,e.device.id),ae.get(e.device.id).status="waiting")}function s(){e.device.isAutomatic?ee("shSetManual",1,e.device.id):ee("shSetManual",0,e.device.id)}const h=p(()=>e.device.isAutomatic?"Auto":"Man");return(g,c)=>(l(),$(Xe,{titlecolor:g.device.color,fullwidth:!0},{title:y(()=>[z(x(g.device.name),1)]),buttons:y(()=>[(l(!0),m(G,null,K(g.device.temp,(u,d)=>(l(),m("span",{key:d},[u<300?(l(),$(Me,{key:0,bgcolor:"var(--color-battery)"},{default:y(()=>[o("span",null,x(i(tr)(u)),1)]),_:2},1024)):w("",!0)]))),128)),e.device.canSwitch?(l(),m("span",{key:0,class:N([a.value,"fa-solid statusbutton mr-2 ms-2"]),style:Z(r.value),onClick:n},null,6)):w("",!0),e.device.canSwitch?(l(),$(Me,{key:1,type:"button",onClick:s},{default:y(()=>[z(x(h.value),1)]),_:1})):w("",!0)]),default:y(()=>[o("div",Wd,[b(Q,{heading:"Leistung:",class:"grid-col-4 grid-left"},{default:y(()=>[b(vt,{watt:g.device.power},null,8,["watt"])]),_:1}),b(Q,{heading:"Energie:",class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":g.device.energy},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Laufzeit:",class:"grid-col-4 grid-right"},{default:y(()=>[z(x(i(Ko)(g.device.runningTime)),1)]),_:1})])]),_:1},8,["titlecolor"]))}}),Gd=U(zd,[["__scopeId","data-v-92893218"]]),ft=t=>(oe("data-v-5b5cf6b3"),t=t(),re(),t),Ed=ft(()=>o("span",{class:"fas fa-plug me-2",style:{color:"var(--color-devices)"}}," ",-1)),jd={class:"sh-title py-4"},Ud=ft(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-ellipsis-vertical"},null,-1)),Fd=[Ud],Nd=ft(()=>o("span",{class:"fas fa-gear"}," ",-1)),Hd=ft(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),Rd=[Hd],Jd=["id","onUpdate:modelValue","value"],qd=["for"],Yd=ft(()=>o("div",{class:"col-12 mb-3 pe-3 mt-0"},[o("button",{class:"btn btn-sm btn-secondary float-end"},"Schließen")],-1)),Qd=[Yd],Zd=3,Xd=O({__name:"SmartHomeList",setup(t){const e=p(()=>Re.value?a.value.reduce((h,g)=>{const c=h;let u=h[h.length-1];return u.length>=Zd?h.push([g]):u.push(g),c},[[]]):[a.value]),a=p(()=>[...ae.values()].filter(h=>h.configured));function r(h){return"Geräte"+(Re.value&&e.value.length>1?"("+(h+1)+")":"")}function n(){s.value=!s.value}const s=X(!1);return(h,g)=>(l(),m(G,null,[(l(!0),m(G,null,K(e.value,(c,u)=>(l(),$(Ge,{key:u,"variable-width":!0},{title:y(()=>[o("span",{onClick:n},[Ed,o("span",jd,x(r(u)),1)])]),buttons:y(()=>[o("span",{class:"ms-2 pt-1",onClick:n},Fd)]),default:y(()=>[(l(!0),m(G,null,K(c,d=>(l(),$(Gd,{key:d.id,device:d,class:"subgrid pb-2"},null,8,["device"]))),128))]),_:2},1024))),128)),s.value?(l(),$(Ge,{key:0},{title:y(()=>[o("span",{class:"smarthome",onClick:n},[Nd,z(" Einstellungen")])]),buttons:y(()=>[o("span",{class:"ms-2 pt-1",onClick:n},Rd)]),default:y(()=>[b(F,{title:"Im Energie-Graph anzeigen:",icon:"fa-chart-column",fullwidth:!0},{default:y(()=>[(l(!0),m(G,null,K(a.value,(c,u)=>(l(),m("div",{key:u},[gt(o("input",{id:"check"+u,"onUpdate:modelValue":d=>c.showInGraph=d,class:"form-check-input",type:"checkbox",value:c},null,8,Jd),[[_a,c.showInGraph]]),o("label",{class:"form-check-label px-2",for:"check"+u},x(c.name),9,qd)]))),128))]),_:1}),o("div",{class:"row p-0 m-0",onClick:n},Qd)]),_:1})):w("",!0)],64))}}),At=U(Xd,[["__scopeId","data-v-5b5cf6b3"]]),Kd={class:"countername"},eu={class:"subgrid pt-1"},tu=O({__name:"ClCounter",props:{counter:{}},setup(t){const e=t,a=p(()=>e.counter.power>0?"Bezug":"Export"),r=p(()=>e.counter.power>0?"var(--color-evu)":"var(--color-pv)");return(n,s)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[o("span",Kd,x(n.counter.name),1)]),buttons:y(()=>[e.counter.power!=0?(l(),$(Me,{key:0,bgcolor:r.value},{default:y(()=>[z(x(a.value),1)]),_:1},8,["bgcolor"])):w("",!0),b(Me,{color:"var(--color-bg)"},{default:y(()=>[z(" ID: "+x(e.counter.id),1)]),_:1})]),default:y(()=>[o("div",eu,[b(Q,{heading:"Leistung:",small:!0,class:"grid-left grid-col-4"},{default:y(()=>[b(vt,{watt:Math.abs(e.counter.power)},null,8,["watt"])]),_:1}),b(Q,{heading:"Bezogen:",small:!0,class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.counter.energy_imported},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Exportiert:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.counter.energy_exported},null,8,["watt-h"])]),_:1})])]),_:1}))}}),au=U(tu,[["__scopeId","data-v-01dd8c4d"]]);class ou{constructor(e){_(this,"id");_(this,"name","Zähler");_(this,"power",0);_(this,"energy_imported",0);_(this,"energy_exported",0);_(this,"grid",!1);_(this,"type","counter");_(this,"color","var(--color-evu)");_(this,"energyPv",0);_(this,"energyBat",0);_(this,"pvPercentage",0);_(this,"icon","");this.id=e}}const we=se({});function ru(t,e){if(t in we)console.info("Duplicate counter message: "+t);else switch(we[t]=new ou(t),we[t].type=e,e){case"counter":we[t].color="var(--color-evu)";break;case"inverter":we[t].color="var(--color-pv)";break;case"cp":we[t].color="var(--color-charging)";break;case"bat":we[t].color="var(--color-bat)";break}}const ja=t=>(oe("data-v-5f059284"),t=t(),re(),t),nu=ja(()=>o("span",{class:"fas fa-bolt me-2",style:{color:"var(--color-evu)"}}," ",-1)),su=ja(()=>o("span",null,"Zähler",-1)),iu=O({__name:"CounterList",setup(t){return(e,a)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[nu,su]),default:y(()=>[(l(!0),m(G,null,K(i(we),(r,n)=>(l(),m("div",{key:n,class:"subgrid pb-2"},[b(au,{counter:r},null,8,["counter"])]))),128))]),_:1}))}}),Tt=U(iu,[["__scopeId","data-v-5f059284"]]),lu={class:"subgrid"},cu=O({__name:"VlVehicle",props:{vehicle:{}},setup(t){const e=t,a=p(()=>{let n="Unterwegs",s=e.vehicle.chargepoint;return s!=null&&(s.isCharging?n="Lädt ("+s.name+")":s.isPluggedIn&&(n="Bereit ("+s.name+")")),n}),r=p(()=>{let n=e.vehicle.chargepoint;return n!=null?n.isLocked?"var(--color-evu)":n.isCharging?"var(--color-charging)":n.isPluggedIn?"var(--color-battery)":"var(--color-axis)":"var(--color-axis)"});return(n,s)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[z(x(e.vehicle.name),1)]),default:y(()=>[o("div",lu,[b(Q,{heading:"Status:",small:!1,class:"grid-left grid-col-4"},{default:y(()=>[o("span",{style:Z({color:r.value}),class:"d-flex justify-content-center align-items-center status-string"},x(a.value),5)]),_:1}),b(Q,{heading:"Ladestand:",small:!1,class:"grid-col-4"},{default:y(()=>[z(x(Math.round(e.vehicle.soc))+" % ",1)]),_:1}),b(Q,{heading:"Reichweite:",small:!1,class:"grid-right grid-col-4"},{default:y(()=>[z(x(Math.round(e.vehicle.range))+" km ",1)]),_:1})])]),_:1}))}}),du=U(cu,[["__scopeId","data-v-f92f4f7b"]]),Ua=t=>(oe("data-v-23b437ea"),t=t(),re(),t),uu=Ua(()=>o("span",{class:"fas fa-car me-2",style:{color:"var(--color-charging)"}}," ",-1)),hu=Ua(()=>o("span",null,"Fahrzeuge",-1)),pu=O({__name:"VehicleList",setup(t){return(e,a)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[uu,hu]),default:y(()=>[(l(!0),m(G,null,K(Object.values(i(Y)).filter(r=>r.visible),(r,n)=>(l(),m("div",{key:n,class:"subgrid"},[b(du,{vehicle:r},null,8,["vehicle"])]))),128))]),_:1}))}}),Dt=U(pu,[["__scopeId","data-v-23b437ea"]]),Fa=t=>(oe("data-v-3ecadd9f"),t=t(),re(),t),gu=Fa(()=>o("span",{class:"fas fa-coins me-2",style:{color:"var(--color-battery)"}}," ",-1)),mu=Fa(()=>o("span",null,"Strompreis",-1)),vu={class:"grapharea"},fu={id:"pricechart",class:"p-1 m-0 pricefigure"},_u={viewBox:"0 0 400 280"},bu=["id","origin","transform"],Wt=380,zt=250,Gt=12,yu=O({__name:"GlobalPriceChart",props:{id:{}},setup(t){const e=t,a=X(!1),r={top:0,bottom:15,left:20,right:0},n=p(()=>{let L=[];return te.etPriceList.size>0&&te.etPriceList.forEach((E,T)=>{L.push([T,E])}),L}),s=p(()=>n.value.length>1?(Wt-r.left-r.right)/n.value.length:0),h=p(()=>{let L=Be(n.value,E=>E[0]);return L[1]&&(L[1]=new Date(L[1]),L[1].setTime(L[1].getTime()+36e5)),Qe().range([r.left,Wt-r.right]).domain(L)}),g=p(()=>{let L=Be(n.value,E=>E[1]);return L[0]=Math.floor(L[0])-1,L[1]=Math.floor(L[1])+1,L}),c=p(()=>Ze().range([zt-r.bottom,0]).domain(g.value)),u=p(()=>it(h.value).ticks(n.value.length).tickSize(5).tickSizeInner(-zt).tickFormat(L=>L.getHours()%6==0?ot("%H:%M")(L):"")),d=p(()=>pt(c.value).ticks(15).tickSize(0).tickSizeInner(-(Wt-r.right-r.left)).tickFormat(L=>L.toString())),C=p(()=>{a.value==!0;const L=de("g#"+J.value);L.selectAll("*").remove(),L.selectAll("bar").data(n.value).enter().append("g").append("rect").attr("class","bar").attr("x",k=>h.value(k[0])).attr("y",k=>c.value(k[1])).attr("width",s.value).attr("height",k=>c.value(g.value[0])-c.value(k[1])).attr("fill","var(--color-charging)");const T=L.append("g").attr("class","axis").call(u.value);T.attr("transform","translate(0,"+(zt-r.bottom)+")"),T.selectAll(".tick").attr("font-size",Gt).attr("color","var(--color-bg)"),T.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",k=>k.getHours()%6==0?"2":"0.5"),T.select(".domain").attr("stroke","var(--color-bg");const q=L.append("g").attr("class","axis").call(d.value);q.attr("transform","translate("+r.left+",0)"),q.selectAll(".tick").attr("font-size",Gt).attr("color","var(--color-bg)"),q.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",k=>k%5==0?"2":"0.5"),q.select(".domain").attr("stroke","var(--color-bg)");const I=L.selectAll("ttip").data(n.value).enter().append("g").attr("class","ttarea");I.append("rect").attr("x",k=>h.value(k[0])).attr("y",k=>c.value(k[1])).attr("height",k=>c.value(g.value[0])-c.value(k[1])).attr("class","ttrect").attr("width",s.value).attr("opacity","1%").attr("fill","var(--color-charging)");const H=I.append("g").attr("class","ttmessage").attr("transform",k=>"translate("+(h.value(k[0])-30+s.value/2)+","+(c.value(k[1])-16)+")");H.append("rect").attr("rx",5).attr("width","60").attr("height","30").attr("fill","var(--color-menu)");const P=H.append("text").attr("text-anchor","middle").attr("x",30).attr("y",12).attr("font-size",Gt).attr("fill","var(--color-bg)");return P.append("tspan").attr("x",30).attr("dy","0em").text(k=>ot("%H:%M")(k[0])),P.append("tspan").attr("x",30).attr("dy","1.1em").text(k=>Math.round(k[1]*10)/10+" ct"),"PriceChart.vue"}),J=p(()=>"priceChartCanvas"+e.id);return Ve(()=>{a.value=!a.value}),(L,E)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[gu,mu]),buttons:y(()=>[i(te).active?(l(),$(Me,{key:0,bgcolor:"var(--color-charging)"},{default:y(()=>[z(x(i(te).etCurrentPriceString),1)]),_:1})):w("",!0),i(te).active?(l(),$(Me,{key:1,bgcolor:"var(--color-menu)"},{default:y(()=>[z(x(i(te).etProvider),1)]),_:1})):w("",!0)]),default:y(()=>[o("div",vu,[o("figure",fu,[(l(),m("svg",_u,[o("g",{id:J.value,origin:C.value,transform:"translate("+r.top+","+r.left+") "},null,8,bu)]))])])]),_:1}))}}),Et=U(yu,[["__scopeId","data-v-3ecadd9f"]]),wu={class:"subgrid pt-1"},ku=O({__name:"IlInverter",props:{inverter:{}},setup(t){const e=t,a=p(()=>({color:e.inverter.color}));return(r,n)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[o("span",{class:"invertername",style:Z(a.value)},x(r.inverter.name),5)]),buttons:y(()=>[e.inverter.power<0?(l(),$(Me,{key:0,bgcolor:"var(--color-pv)"},{default:y(()=>[z(x(i($e)(-e.inverter.power)),1)]),_:1})):w("",!0)]),default:y(()=>[o("div",wu,[b(Q,{heading:"Heute:",small:!1,class:"grid-col-4 grid-left"},{default:y(()=>[b(ze,{"watt-h":e.inverter.energy},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Monat:",small:!1,class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.inverter.energy_month},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Jahr:",small:!1,class:"grid-right grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.inverter.energy_year},null,8,["watt-h"])]),_:1})])]),_:1}))}}),Su=U(ku,[["__scopeId","data-v-ee748919"]]),Na=t=>(oe("data-v-b7a71f81"),t=t(),re(),t),xu=Na(()=>o("span",{class:"fas fa-solar-panel me-2",style:{color:"var(--color-pv)"}}," ",-1)),$u=Na(()=>o("span",null,"Wechselrichter",-1)),Mu=O({__name:"InverterList",setup(t){return(e,a)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[xu,$u]),buttons:y(()=>[i(R).pv.power>0?(l(),$(Me,{key:0,bgcolor:"var(--color-pv)"},{default:y(()=>[z(x(i($e)(i(R).pv.power)),1)]),_:1})):w("",!0)]),default:y(()=>[(l(!0),m(G,null,K(i(ke),([r,n])=>(l(),m("div",{key:r,class:"subgrid pb-2"},[b(Su,{inverter:n},null,8,["inverter"])]))),128))]),_:1}))}}),jt=U(Mu,[["__scopeId","data-v-b7a71f81"]]),Iu={class:"row py-0 px-0 m-0"},Cu=["breakpoints"],Pu=O({__name:"CarouselFix",setup(t){let e,a;const r=X(!1),n=p(()=>r.value?{992:{slidesPerView:1,spaceBetween:0}}:{992:{slidesPerView:3,spaceBetween:0}});return co(()=>v.zoomGraph,s=>{if(e){let h=s?"1":"3";a.setAttribute("slides-per-view",h),e.activeIndex=1,e.update()}}),Ve(()=>{let s=document.querySelector(".swiper-carousel");s&&(a=s,e=a.swiper)}),(s,h)=>(l(),m("div",Iu,[o("swiper-container",{"space-between":0,pagination:{clickable:!0},"slides-per-view":"1",class:"p-0 m-0 swiper-carousel",breakpoints:n.value},[o("swiper-slide",null,[o("div",{class:N([i(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(s.$slots,"item1",{},void 0,!0)],2)]),o("swiper-slide",null,[o("div",{class:N([i(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(s.$slots,"item2",{},void 0,!0)],2)]),o("swiper-slide",null,[o("div",{class:N([i(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(s.$slots,"item3",{},void 0,!0)],2)])],8,Cu)]))}}),Bu=U(Pu,[["__scopeId","data-v-dc35b0f6"]]);function Vu(t,e){t=="openWB/graph/boolDisplayLiveGraph"?ue.displayLiveGraph=+e==1:t.match(/^openwb\/graph\/alllivevaluesJson[1-9][0-9]*$/i)?Lu(t,e):t=="openWB/graph/lastlivevaluesJson"?Ou(t,e):t=="openWB/graph/config/duration"&&(pe.duration=JSON.parse(e))}function Lu(t,e){if(!pe.initialized){let a=[];const r=e.toString().split(`
-`);r.length>1?a=r.map(h=>JSON.parse(h)):a=[];const n=t.match(/(\d+)$/g),s=n?n[0]:"";s!=""&&typeof pe.rawDataPacks[+s-1]>"u"&&(pe.rawDataPacks[+s-1]=a,pe.initCounter++)}if(pe.initCounter==16){const a=[];pe.unsubscribeRefresh(),pe.initialized=!0,pe.rawDataPacks.forEach(r=>{r.forEach(n=>{const s=Ha(n);a.push(s)})}),mt(a),pe.subscribeUpdates()}}function Ou(t,e){const a=JSON.parse(e),r=Ha(a);pe.graphRefreshCounter++,mt(f.data.concat(r)),pe.graphRefreshCounter>60&&pe.activate()}function Ha(t){const e=Object.values(V).length>0?Object.values(V)[0].connectedVehicle:0,a=Object.values(V).length>1?Object.values(V)[1].connectedVehicle:1,r="ev"+e+"-soc",n="ev"+a+"-soc",s={};s.date=+t.timestamp*1e3,+t.grid>0?(s.evuIn=+t.grid,s.evuOut=0):+t.grid<=0?(s.evuIn=0,s.evuOut=-t.grid):(s.evuIn=0,s.evuOut=0),+t["pv-all"]>=0?(s.pv=+t["pv-all"],s.inverter=0):(s.pv=0,s.inverter=-t["pv-all"]),s.house=+t["house-power"],+t["bat-all-power"]>0?(s.batOut=0,s.batIn=+t["bat-all-power"]):+t["bat-all-power"]<0?(s.batOut=-t["bat-all-power"],s.batIn=0):(s.batOut=0,s.batIn=0),t["bat-all-soc"]?s.batSoc=+t["bat-all-soc"]:s.batSoc=0,t[r]&&(s["soc"+e]=+t[r]),t[n]&&(s["soc"+a]=+t[n]),s.charging=+t["charging-all"];for(let h=0;h<10;h++){const g="cp"+h;s[g]=+(t[g+"-power"]??0)}return s.selfUsage=s.pv-s.evuOut,s.selfUsage<0&&(s.selfUsage=0),s.devices=0,s}const Au=["evuIn","pv","batOut","evuOut","charging","house"];let St=[];function Tu(t,e){const{entries:a,names:r,totals:n}=JSON.parse(e);Ue.value=new Map(Object.entries(r)),ea(),St=[],Zt.forEach(h=>{A.setEnergyPv(h,0),A.setEnergyBat(h,0)});const s=Du(a);mt(s),Xt(n,St),v.debug&&zu(a,n,s),f.graphMode=="today"&&setTimeout(()=>le.activate(),3e5)}function Du(t){const e=[];let a={};return t.forEach(r=>{a=Wu(r);const n=a;e.push(n)}),e}function Wu(t){const e={};e.date=t.timestamp*1e3,e.evuOut=0,e.evuIn=0,Object.entries(t.counter).forEach(([n,s])=>{s.grid&&(e.evuOut+=s.power_exported,e.evuIn+=s.power_imported,St.includes(n)||St.push(n))}),e.evuOut==0&&e.evuIn==0&&Object.entries(t.counter).forEach(n=>{e.evuOut+=n[1].power_exported,e.evuIn+=n[1].power_imported}),Object.entries(t.pv).forEach(([n,s])=>{n!="all"?e[n]=s.power_exported:e.pv=s.power_exported}),Object.entries(t.bat).length>0?(e.batIn=t.bat.all.power_imported,e.batOut=t.bat.all.power_exported,e.batSoc=t.bat.all.soc??0):(e.batIn=0,e.batOut=0,e.batSoc=0),Object.entries(t.cp).forEach(([n,s])=>{n!="all"?(e[n]=s.power_imported,A.keys().includes(n)||A.addItem(n)):e.charging=s.power_imported}),Object.entries(t.ev).forEach(([n,s])=>{n!="all"&&(e["soc"+n.substring(2)]=s.soc)}),e.devices=0;let a=0;return Object.entries(t.sh).forEach(([n,s])=>{var h;n!="all"&&(e[n]=s.power_imported??0,A.keys().includes(n)||(A.addItem(n),A.items[n].showInGraph=ae.get(+n.slice(2)).showInGraph),(h=ae.get(+n.slice(2)))!=null&&h.countAsHouse?a+=e[n]:e.devices+=s.power_imported??0)}),e.selfUsage=Math.max(0,e.pv-e.evuOut),t.hc&&t.hc.all?e.house=t.hc.all.power_imported-a:e.house=e.evuIn+e.batOut+e.pv-e.evuOut-e.charging-e.devices-e.batOut,e.evuIn+e.batOut+e.pv>0?A.keys().filter(n=>!Au.includes(n)&&n!="charging").forEach(n=>{Do(n,e)}):Object.keys(e).forEach(n=>{e[n+"Pv"]=0,e[n+"Bat"]=0}),e}function zu(t,e,a){console.debug("---------------------------------------- Graph Data -"),console.debug(["--- Incoming graph data:",t]),console.debug(["--- Incoming energy data:",e]),console.debug(["--- Data to be displayed:",a]),console.debug("-----------------------------------------------------")}let _t={};const ta=["charging","house","batIn","devices"],Gu=["evuIn","pv","batOut","batIn","evuOut","devices","sh1","sh2","sh3","sh4","sh5","sh6","sh7","sh8","sh9"];let Ye=[];function Eu(t,e){const{entries:a,names:r,totals:n}=JSON.parse(e);Ue.value=new Map(Object.entries(r)),ea(),Ye=[],ta.forEach(s=>{A.items[s].energyPv=0,A.items[s].energyBat=0}),a.length>0&&mt(Ra(a)),Xt(n,Ye)}function ju(t,e){const{entries:a,names:r,totals:n}=JSON.parse(e);Ue.value=new Map(Object.entries(r)),ea(),Ye=[],ta.forEach(s=>{A.items[s].energyPv=0,A.items[s].energyBat=0}),a.length>0&&mt(Ra(a)),Xt(n,Ye)}function Ra(t){const e=[];let a={};return _t={},t.forEach(r=>{a=Uu(r),e.push(a),Object.keys(a).forEach(n=>{n!="date"&&(a[n]<0&&(console.warn(`Negative energy value for ${n} in row ${a.date}. Ignoring the value.`),a[n]=0),_t[n]?_t[n]+=a[n]:_t[n]=a[n])})}),e}function Uu(t){const e={},a=uo("%Y%m%d")(t.date);a&&(e.date=f.graphMode=="month"?a.getDate():a.getMonth()+1),e.evuOut=0,e.evuIn=0;let r=0,n=0;return Object.entries(t.counter).forEach(([h,g])=>{r+=g.energy_exported,n+=g.energy_imported,g.grid&&(e.evuOut+=g.energy_exported,e.evuIn+=g.energy_imported,Ye.includes(h)||Ye.push(h))}),Ye.length==0&&(e.evuOut=r,e.evuIn=n),e.pv=t.pv.all.energy_exported,Object.entries(t.bat).length>0?(t.bat.all.energy_imported>=0?e.batIn=t.bat.all.energy_imported:(console.warn("ignoring negative value for batIn on day "+e.date),e.batIn=0),t.bat.all.energy_exported>=0?e.batOut=t.bat.all.energy_exported:(console.warn("ignoring negative value for batOut on day "+e.date),e.batOut=0)):(e.batIn=0,e.batOut=0),Object.entries(t.cp).forEach(([h,g])=>{h!="all"?(A.keys().includes(h)||A.addItem(h,V[+h.slice(2)].color),e[h]=g.energy_imported):e.charging=g.energy_imported}),Object.entries(t.ev).forEach(([h,g])=>{h!="all"&&(e["soc-"+h]=g.soc)}),e.devices=Object.entries(t.sh).reduce((h,g)=>(A.keys().includes(g[0])||A.addItem(g[0]),g[1].energy_imported>=0?h+=g[1].energy_imported:console.warn(`Negative energy value for device ${g[0]} in row ${e.date}. Ignoring this value`),h),0),t.hc&&t.hc.all?e.house=t.hc.all.energy_imported:e.house=e.pv+e.evuIn+e.batOut-e.evuOut-e.batIn-e.charging,e.selfUsage=e.pv-e.evuOut,e.evuIn+e.batOut+e.pv>0?A.keys().filter(h=>!Gu.includes(h)).forEach(h=>{Wo(h,e)}):ta.map(h=>{e[h+"Pv"]=0,e[h+"Bat"]=0}),e}function Fu(t,e){const a=Nu(t);if(a&&!ve.value.has(a)){console.warn("Invalid battery index: ",a);return}t=="openWB/bat/config/configured"?ue.isBatteryConfigured=e=="true":t=="openWB/bat/get/power"?+e>0?(j.batIn.power=+e,R.batOut.power=0):(j.batIn.power=0,R.batOut.power=-e):t=="openWB/bat/get/soc"?ue.batterySoc=+e:t=="openWB/bat/get/daily_exported"?R.batOut.energy=+e:t=="openWB/bat/get/daily_imported"?j.batIn.energy=+e:a&&ve.value.has(a)&&(t.match(/^openwb\/bat\/[0-9]+\/get\/daily_exported$/i)?ve.value.get(a).dailyYieldExport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/daily_imported$/i)?ve.value.get(a).dailyYieldImport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/exported$/i)?ve.value.get(a).exported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_state$/i)?ve.value.get(a).faultState=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_str$/i)?ve.value.get(a).faultStr=e:t.match(/^openwb\/bat\/[0-9]+\/get\/imported$/i)?ve.value.get(a).imported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/power$/i)?ve.value.get(a).power=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/soc$/i)?ve.value.get(a).soc=+e:console.log(t,e))}function Nu(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Hu(t,e){if(t=="openWB/optional/et/provider")JSON.parse(e).type==null?te.active=!1:(te.active=!0,te.etProvider=JSON.parse(e).name);else if(t=="openWB/optional/et/get/prices"){const a=JSON.parse(e);te.etPriceList=new Map,Object.keys(a).forEach(r=>{te.etPriceList.set(new Date(+r*1e3),a[r]*1e5)})}}function Ru(t,e){const a=Ja(t);if(a&&!(a in V)){console.warn("Invalid chargepoint id received: "+a);return}if(t=="openWB/chargepoint/get/power"?j.charging.power=+e:t=="openWB/chargepoint/get/daily_imported"&&(j.charging.energy=+e),t=="openWB/chargepoint/get/daily_exported")ue.cpDailyExported=+e;else if(a){if(t.match(/^openwb\/chargepoint\/[0-9]+\/config$/i))if(V[a]){const r=JSON.parse(e);V[a].name=r.name,V[a].icon=r.name,ce["cp"+a]?(ce["cp"+a].name=r.name,ce["cp"+a].icon=r.name):ce["cp"+a]={name:r.name,icon:r.name,color:"var(--color-charging)"}}else console.warn("invalid chargepoint index: "+a);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/state_str$/i))V[a].stateStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_str$/i))V[a].faultStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_state$/i))V[a].faultState=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/power$/i))V[a].power=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/daily_imported$/i))V[a].dailyYield=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/plug_state$/i))V[a].isPluggedIn=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/charge_state$/i))V[a].isCharging=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/manual_lock$/i))V[a].updateIsLocked(e=="true");else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/enabled$/i))V[a].isEnabled=e=="1";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/phases_in_use/i))V[a].phasesInUse=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/current/i))V[a].current=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/currents/i))V[a].currents=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/log/i)){const r=JSON.parse(e);V[a].chargedSincePlugged=r.imported_since_plugged}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/soc$/i)){const r=JSON.parse(e);V[a].soc=r.soc,V[a].waitingForSoc=!1,V[a].rangeCharged=r.range_charged,V[a].rangeUnit=r.range_unit}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/info$/i)){const r=JSON.parse(e);V[a].vehicleName=String(r.name),V[a].updateConnectedVehicle(+r.id)}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/config$/i)){const r=JSON.parse(e);switch(r.chargemode){case"instant_charging":V[a].updateChargeMode(fe.instant_charging);break;case"pv_charging":V[a].updateChargeMode(fe.pv_charging);break;case"scheduled_charging":V[a].updateChargeMode(fe.scheduled_charging);break;case"standby":V[a].updateChargeMode(fe.standby);break;case"stop":V[a].updateChargeMode(fe.stop);break}V[a].chargeTemplate=r.charge_template,V[a].averageConsumption=r.average_consumption}}}function Ju(t,e){const a=Ja(t);if(a!=null){if(!(a in Y)){const r=new Io(a);Y[a]=r}if(t.match(/^openwb\/vehicle\/[0-9]+\/name$/i))Object.values(V).forEach(r=>{r.connectedVehicle==a&&(r.vehicleName=JSON.parse(e))}),Y[a].name=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/soc$/i))Y[a].soc=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/range$/i))isNaN(+e)?Y[a].range=0:Y[a].range=+e;else if(t.match(/^openwb\/vehicle\/[0-9]+\/charge_template$/i))Y[a].updateChargeTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/ev_template$/i))Y[a].updateEvTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/soc_module\/config$/i)){const r=JSON.parse(e);Object.values(V).forEach(n=>{n.connectedVehicle==a&&(n.isSocConfigured=r.type!==null,n.isSocManual=r.type=="manual")})}}}function qu(t,e){if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const r=+a[0],n=JSON.parse(e);ye[r]=n,Yu(r,n)}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/time_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),r=t.match(/[0-9]+$/i);if(a&&r){const n=+a[0].replace(/[^0-9]+/g,""),s=+r[0],h=JSON.parse(e);n in ct||(ct[n]=[]),ct[n][s]=h}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/chargemode\/scheduled_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),r=t.match(/[0-9]+$/i);if(a&&r){const n=+a[0].replace(/[^0-9]+/g,""),s=+r[0],h=JSON.parse(e);n in lt||(lt[n]=[]),lt[n][s]=h}}else if(t.match(/^openwb\/vehicle\/template\/ev_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const r=+a[0],n=JSON.parse(e);Ht[r]=n}}}function Yu(t,e){Object.values(V).forEach(a=>{a.chargeTemplate==t&&(a.updateCpPriority(e.prio),a.updateInstantChargeLimitMode(e.chargemode.instant_charging.limit.selected),a.updateInstantTargetCurrent(e.chargemode.instant_charging.current),a.updateInstantTargetSoc(e.chargemode.instant_charging.limit.soc),a.updateInstantMaxEnergy(e.chargemode.instant_charging.limit.amount),a.updatePvFeedInLimit(e.chargemode.pv_charging.feed_in_limit),a.updatePvMinCurrent(e.chargemode.pv_charging.min_current),a.updatePvMaxSoc(e.chargemode.pv_charging.max_soc),a.updatePvMinSoc(e.chargemode.pv_charging.min_soc),a.updatePvMinSocCurrent(e.chargemode.pv_charging.min_soc_current))})}function Ja(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Qu(t,e){t.match(/^openWB\/LegacySmarthome\/config\//i)?Zu(t,e):t.match(/^openWB\/LegacySmarthome\/Devices\//i)&&Xu(t,e)}function Zu(t,e){const a=qa(t);if(a==null)return;ae.has(a)||qt(a);const r=ae.get(a);t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_configured$/i)?r.configured=e!="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_name$/i)?(r.name=e.toString(),r.icon=e.toString(),ce["sh"+a].name=e.toString(),ce["sh"+a].icon=e.toString()):t.match(/^openWB\/LegacySmarthome\/config\/set\/Devices\/[0-9]+\/mode$/i)?r.isAutomatic=e=="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_canSwitch$/i)?r.canSwitch=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_homeConsumtion$/i)?r.countAsHouse=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_temperatur_configured$/i)&&(r.tempConfigured=+e)}function Xu(t,e){const a=qa(t);if(a==null){console.warn("Smarthome: Missing index in "+t);return}ae.has(a)||qt(a);const r=ae.get(a);if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Watt$/i))r.power=+e,Ku("power");else if(!t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Wh$/i)){if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/RunningTimeToday$/i))r.runningTime=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor0$/i))r.temp[0]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor1$/i))r.temp[1]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor2$/i))r.temp[2]=+e;else if(t.match(/^openWB\/LegacySmartHome\/Devices\/[0-9]+\/Status$/i))switch(+e){case 10:r.status="off";break;case 11:r.status="on";break;case 20:r.status="detection";break;case 30:r.status="timeout";break;default:r.status="off"}}}function Ku(t){switch(t){case"power":j.devices.power=[...ae.values()].filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.power,0);break;case"energy":j.devices.energy=[...ae.values()].filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.energy,0);break;default:console.error("Unknown category")}}function qa(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}const xt=se([]);class aa{constructor(e,a,r,n){_(this,"name");_(this,"children");_(this,"count");_(this,"lastValue");this.name=e,this.children=a,this.count=r,this.lastValue=n}insert(e,a){if(e.length){const r=e.splice(1);if(e[0]==this.name)if(r.length){let n=!1;if(this.children.forEach(s=>{s.name==r[0]&&(s.insert(r,a),n=!0)}),!n){const s=new aa(r[0],[],0,"");s.insert(r,a),this.children.push(s)}}else this.count=this.count+1,this.lastValue=a}}}function eh(t,e){const a=t.split("/");if(a.length){let r=!1;if(xt.forEach(n=>{n.name==a[0]&&(n.insert(a,e),r=!0)}),!r){const n=new aa(a[0],[],0,"");xt.push(n),n.insert(a,e)}}}const th=["openWB/counter/#","openWB/bat/#","openWB/pv/#","openWB/chargepoint/#","openWB/vehicle/#","openWB/general/chargemode_config/pv_charging/#","openWB/optional/et/#","openWB/system/#","openWB/LegacySmartHome/#","openWB/command/"+Yt()+"/#"];function ah(){xo(oh),th.forEach(t=>{qe(t)}),me()}function oh(t,e){eh(t,e.toString());const a=e.toString();t.match(/^openwb\/counter\/[0-9]+\//i)?rh(t,a):t.match(/^openwb\/counter\//i)?nh(t,a):t.match(/^openwb\/bat\//i)?Fu(t,a):t.match(/^openwb\/pv\//i)?sh(t,a):t.match(/^openwb\/chargepoint\//i)?Ru(t,a):t.match(/^openwb\/vehicle\/template\//i)?qu(t,a):t.match(/^openwb\/vehicle\//i)?Ju(t,a):t.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)?ih(t,a):t.match(/^openwb\/graph\//i)?Vu(t,a):t.match(/^openwb\/log\/daily\//i)?Tu(t,a):t.match(/^openwb\/log\/monthly\//i)?Eu(t,a):t.match(/^openwb\/log\/yearly\//i)?ju(t,a):t.match(/^openwb\/optional\/et\//i)?Hu(t,a):t.match(/^openwb\/system\//i)?ch(t,a):t.match(/^openwb\/LegacySmartHome\//i)?Qu(t,a):t.match(/^openwb\/command\//i)&&dh(t,a)}function rh(t,e){const a=t.split("/"),r=+a[2];if(r==ue.evuId?lh(t,e):a[3]=="config",a[3]=="get"&&r in we)switch(a[4]){case"power":we[r].power=+e;break;case"config":break;case"fault_str":break;case"fault_state":break;case"power_factors":break;case"imported":break;case"exported":break;case"frequency":break;case"daily_imported":we[r].energy_imported=+e;break;case"daily_exported":we[r].energy_exported=+e;break}}function nh(t,e){if(t.match(/^openwb\/counter\/get\/hierarchy$/i)){const a=JSON.parse(e);if(a.length){Po(),Cd();for(const r of a)r.type=="counter"&&(ue.evuId=r.id);Ya(a[0])}}else t.match(/^openwb\/counter\/set\/home_consumption$/i)?j.house.power=+e:t.match(/^openwb\/counter\/set\/daily_yield_home_consumption$/i)&&(j.house.energy=+e)}function Ya(t){switch(t.type){case"counter":ru(t.id,t.type);break;case"cp":Co(t.id);break;case"bat":Ga(t.id);break}t.children.forEach(e=>Ya(e))}function sh(t,e){const a=uh(t);a&&!ke.value.has(a)&&qo(a),t=="openWB/pv/get/power"?R.pv.power=-e:t=="openWB/pv/get/daily_exported"?R.pv.energy=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/power$/i)?ke.value.get(a).power=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/daily_exported$/i)?ke.value.get(a).energy=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/monthly_exported$/i)?ke.value.get(a).energy_month=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/yearly_exported$/i)?ke.value.get(a).energy_year=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/exported$/i)&&(ke.value.get(a).energy_total=+e)}function ih(t,e){const a=t.split("/");if(a.length>0)switch(a[4]){case"bat_mode":ue.updatePvBatteryPriority(JSON.parse(e));break}}function lh(t,e){switch(t.split("/")[4]){case"power":+e>0?(R.evuIn.power=+e,j.evuOut.power=0):(R.evuIn.power=0,j.evuOut.power=-e);break;case"daily_imported":R.evuIn.energy=+e;break;case"daily_exported":j.evuOut.energy=+e;break}}function ch(t,e){if(t.match(/^openWB\/system\/device\/[0-9]+\/component\/[0-9]+\/config$/i)){const a=JSON.parse(e);switch(a.type){case"counter":case"consumption_counter":we[a.id]&&(we[a.id].name=a.name);break;case"inverter":case"inverter_secondary":ke.value.has(a.id)||ke.value.set(a.id,new ba(a.id)),ke.value.get(a.id).name=a.name;break;case"bat":ve.value.has(a.id)||Ga(a.id),ve.value.get(a.id).name=a.name}}}function dh(t,e){const a=t.split("/");if(t.match(/^openWB\/command\/[a-z]+\/error$/i)&&a[2]==Yt()){const r=JSON.parse(e);console.error(`Error message from openWB: 
-Command: ${r.command}
-Data: JSON.stringify(err.data)
-Error:
- ${r.error}`)}}function uh(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}const hh={key:0,class:"fas fa-caret-down"},ph={key:1,class:"fas fa-caret-right"},gh={key:0,class:"content p-2 m-2"},mh={key:1,class:"sublist col-md-9 m-0 p-0 ps-2"},vh=O({__name:"MqttNode",props:{node:{},level:{},hide:{type:Boolean},expandAll:{type:Boolean}},setup(t){const e=t;let a=X(!e.hide),r=X(!1);const n=p(()=>e.node.name),s=p(()=>[...e.node.children].sort((d,C)=>d.name<C.name?-1:1)),h=p(()=>e.node.count>0?"("+e.node.count+")":""),g=p(()=>e.node.children.length),c=p(()=>e.node.lastValue!=""?{"font-style":"italic","grid-column-start":e.level,"grid-column-end":-1}:{"grid-column-start":e.level,"grid-column-end":-1});function u(){g.value>0&&(a.value=!a.value),e.node.lastValue!=""&&(r.value=!r.value)}return(d,C)=>{const J=ho("MqttNode",!0);return l(),m(G,null,[o("div",{class:"name py-2 px-2 m-0",style:Z(c.value),onClick:u},[(i(a)||e.expandAll)&&g.value>0||i(r)?(l(),m("span",hh)):(l(),m("span",ph)),z(" "+x(n.value)+x(h.value),1)],4),i(r)?(l(),m("div",gh,[o("code",null,x(e.node.lastValue),1)])):w("",!0),(i(a)||e.expandAll)&&g.value>0?(l(),m("div",mh,[(l(!0),m(G,null,K(s.value,(L,E)=>(l(),$(J,{key:E,level:e.level+1,node:L,hide:!0,"expand-all":e.expandAll},null,8,["level","node","expand-all"]))),128))])):w("",!0)],64)}}}),fh=U(vh,[["__scopeId","data-v-df7e578a"]]),oa=t=>(oe("data-v-a349646d"),t=t(),re(),t),_h={class:"mqviewer"},bh={class:"row pt-2"},yh={class:"col"},wh=oa(()=>o("h3",{class:"mqtitle ps-2"},"MQTT Message Viewer",-1)),kh=oa(()=>o("hr",null,null,-1)),Sh=oa(()=>o("hr",null,null,-1)),xh={key:0,class:"topiclist"},$h=O({__name:"MQTTViewer",setup(t){Ve(()=>{});const e=X(!1);function a(){e.value=!e.value}const r=p(()=>e.value?"active":"");return(n,s)=>(l(),m("div",_h,[o("div",bh,[o("div",yh,[wh,kh,o("button",{class:N(["btn btn-small btn-outline-primary ms-2",r.value]),onClick:a}," Expand All ",2),Sh])]),i(xt)[0]?(l(),m("div",xh,[(l(!0),m(G,null,K(i(xt)[0].children.sort((h,g)=>h.name<g.name?-1:1),(h,g)=>(l(),$(fh,{key:g,node:h,level:1,hide:!0,"expand-all":e.value},null,8,["node","expand-all"]))),128))])):w("",!0)]))}}),Mh=U($h,[["__scopeId","data-v-a349646d"]]),Ih=["value"],Ch=O({__name:"SelectInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=p({get(){return a.modelValue},set(s){r("update:modelValue",s)}});return(s,h)=>gt((l(),m("select",{id:"selectme","onUpdate:modelValue":h[0]||(h[0]=g=>n.value=g),class:"form-select"},[(l(!0),m(G,null,K(s.options,(g,c)=>(l(),m("option",{key:c,value:g[1]},x(g[0]),9,Ih))),128))],512)),[[po,n.value]])}}),Ph=U(Ch,[["__scopeId","data-v-5e33ce1f"]]),Qa=t=>(oe("data-v-01b18db3"),t=t(),re(),t),Bh=Qa(()=>o("span",{type:"button",class:"float-end mt-0 ms-1","data-bs-toggle":"collapse","data-bs-target":"#themesettings"},[o("span",null,[o("i",{class:"fa-solid fa-circle-check"})])],-1)),Vh={class:"subgrid m-0 p-0"},Lh={class:"settingscolumn"},Oh={class:"settingscolumn"},Ah={class:"settingscolumn"},Th=Qa(()=>o("div",{class:"grid-col-12 mb-3 me-3"},[o("button",{class:"btn btn-sm btn-secondary float-end","data-bs-toggle":"collapse","data-bs-target":"#themesettings"}," Schließen ")],-1)),Dh=O({__name:"ThemeSettings",emits:["reset-arcs"],setup(t,{emit:e}){const a=e,r=[["Dunkel","dark"],["Hell","light"],["Blau","blue"]],n=[["3 kW","0"],["3,1 kW","1"],["3,14 kW","2"],["3,141 kW","3"],["3141 W","4"]],s=[["Orange","normal"],["Grün/Violett","standard"],["Bunt","advanced"]],h=[["Aus","off"],["Menü","navbar"],["Buttonleiste","buttonbar"]],g=[["Aus","no"],['"Alles"-Reiter',"infoview"],["Immer","always"]];return(c,u)=>(l(),$(Ge,{"full-width":!0},{title:y(()=>[z(" Look & Feel ")]),buttons:y(()=>[Bh]),default:y(()=>[o("div",Vh,[o("div",Lh,[b(F,{fullwidth:!0,title:"Farbschema",icon:"fa-adjust",infotext:"Hintergrundfarbe"},{default:y(()=>[b(We,{modelValue:i(v).displayMode,"onUpdate:modelValue":u[0]||(u[0]=d=>i(v).displayMode=d),options:r},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Farbschema Smart-Home-Geräte",icon:"fa-palette",infotext:"Für die Smart-Home-Geräte stehen mehrere Schemata zur Verfügung."},{default:y(()=>[b(We,{modelValue:i(v).smartHomeColors,"onUpdate:modelValue":u[1]||(u[1]=d=>i(v).smartHomeColors=d),options:s},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Grafik: Raster",icon:"fa-th",infotext:"Verwende ein Hintergrundraster in den Grafiken"},{default:y(()=>[b(ie,{modelValue:i(v).showGrid,"onUpdate:modelValue":u[2]||(u[2]=d=>i(v).showGrid=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Variable Bogenlänge",icon:"fa-chart-area",infotext:"Im Graph 'Aktuelle Leistung' können die Bögen immer die volle Länge haben, oder entsprechend des aktuellen Gesamtleistung verkürzt dargestellt werden."},{default:y(()=>[b(ie,{modelValue:i(v).showRelativeArcs,"onUpdate:modelValue":u[3]||(u[3]=d=>i(v).showRelativeArcs=d)},null,8,["modelValue"])]),_:1}),i(v).showRelativeArcs?(l(),$(F,{key:0,fullwidth:!0,title:"Bögen zurücksetzen",icon:"fa-undo",infotext:"Durch Click auf den Button wird die Maximallänge der Bögen auf den aktuellen Wert gesetzt."},{default:y(()=>[i(v).showRelativeArcs?(l(),m("button",{key:0,class:"btn btn-secondary",onClick:u[4]||(u[4]=d=>a("reset-arcs"))}," Reset ")):w("",!0)]),_:1})):w("",!0),b(F,{fullwidth:!0,title:"Anzahl Dezimalstellen",icon:"fa-sliders-h",infotext:"Alle kW- und kWh-Werte werden mit der gewählten Anzahl an Stellen angezeigt."},{default:y(()=>[b(Ph,{modelValue:i(v).decimalPlaces,"onUpdate:modelValue":u[5]||(u[5]=d=>i(v).decimalPlaces=d),options:n},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Uhrzeit anzeigen",icon:"fa-clock",infotext:"Zeige die aktuelle Uhrzeit an. In der Menüleiste oder neben den Lade-Buttons."},{default:y(()=>[b(We,{modelValue:i(v).showClock,"onUpdate:modelValue":u[6]||(u[6]=d=>i(v).showClock=d),options:h},null,8,["modelValue"])]),_:1})]),o("div",Oh,[b(F,{fullwidth:!0,title:"Kompakte Ladepunktliste",icon:"fa-list",infotext:"Zeige eine einzelne Ladepunktliste statt separater Element pro Ladepunkt."},{default:y(()=>[b(We,{modelValue:i(v).shortCpList,"onUpdate:modelValue":u[7]||(u[7]=d=>i(v).shortCpList=d),options:g},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Buttonleiste für Ladepunkte",icon:"fa-window-maximize",infotext:"Informationen zu Ladepunkten über den Diagrammen anzeigen."},{default:y(()=>[b(ie,{modelValue:i(v).showButtonBar,"onUpdate:modelValue":u[8]||(u[8]=d=>i(v).showButtonBar=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Filter-Buttons",icon:"fa-filter",infotext:"Hauptseite mit Buttons zur Auswahl der Kategorie."},{default:y(()=>[b(ie,{modelValue:i(v).showQuickAccess,"onUpdate:modelValue":u[9]||(u[9]=d=>i(v).showQuickAccess=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Breite Widgets",icon:"fa-desktop",infotext:"Widgets immer breit machen"},{default:y(()=>[b(ie,{modelValue:i(v).preferWideBoxes,"onUpdate:modelValue":u[10]||(u[10]=d=>i(v).preferWideBoxes=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Stufenlose Displaybreite",icon:"fa-maximize",infotext:"Die Breite des Displays wird immer voll ausgenutzt. Dies kann in einigen Fällen zu inkorrekter Darstellung führen."},{default:y(()=>[b(ie,{modelValue:i(v).fluidDisplay,"onUpdate:modelValue":u[11]||(u[11]=d=>i(v).fluidDisplay=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Animationen",icon:"fa-film",infotext:"Animationen anzeigen"},{default:y(()=>[b(ie,{modelValue:i(v).showAnimations,"onUpdate:modelValue":u[12]||(u[12]=d=>i(v).showAnimations=d)},null,8,["modelValue"])]),_:1})]),o("div",Ah,[b(F,{fullwidth:!0,title:"Zähler anzeigen",icon:"fa-chart-bar",infotext:"Zeige die Werte zusätzlich angelegter Zähler"},{default:y(()=>[b(ie,{modelValue:i(v).showCounters,"onUpdate:modelValue":u[13]||(u[13]=d=>i(v).showCounters=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Fahrzeuge anzeigen",icon:"fa-car",infotext:"Zeige alle Fahrzeuge mit Ladestand und Reichweite"},{default:y(()=>[b(ie,{modelValue:i(v).showVehicles,"onUpdate:modelValue":u[14]||(u[14]=d=>i(v).showVehicles=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Standardfahrzeug anzeigen",icon:"fa-car",infotext:"Zeige das Standard-Fahrzeug in der Fahzeugliste"},{default:y(()=>[b(ie,{modelValue:i(v).showStandardVehicle,"onUpdate:modelValue":u[15]||(u[15]=d=>i(v).showStandardVehicle=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Preistabelle anzeigen",icon:"fa-car",infotext:"Zeige die Strompreistabelle in einer separaten Box an"},{default:y(()=>[b(ie,{modelValue:i(v).showPrices,"onUpdate:modelValue":u[16]||(u[16]=d=>i(v).showPrices=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Wechselrichter-Details anzeigen",icon:"fa-solar-panel",infotext:"Zeige Details zu den einzelnen Wechselrichtern"},{default:y(()=>[b(ie,{modelValue:i(v).showInverters,"onUpdate:modelValue":u[17]||(u[17]=d=>i(v).showInverters=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Debug-Modus",icon:"fa-bug-slash",infotext:"Kontrollausgaben in der Console sowie Anzeige von Bildschirmbreite und MQ-Viewer"},{default:y(()=>[b(ie,{modelValue:i(v).debug,"onUpdate:modelValue":u[18]||(u[18]=d=>i(v).debug=d)},null,8,["modelValue"])]),_:1})]),Th])]),_:1}))}}),Wh=U(Dh,[["__scopeId","data-v-01b18db3"]]),Se=t=>(oe("data-v-616f0180"),t=t(),re(),t),zh={class:"container-fluid px-2 m-0 theme-colors"},Gh={id:"themesettings",class:"collapse"},Eh={key:2,class:"row py-0 px-0 m-0"},jh={key:3,class:"row py-0 m-0 d-flex justify-content-center"},Uh={key:4,class:"nav nav-tabs nav-justified mx-1 mt-2",role:"tablist"},Fh=go('<a class="nav-link active" data-bs-toggle="tab" data-bs-target="#showAll" data-v-616f0180><i class="fa-solid fa-lg fa-circle-info me-1" data-v-616f0180></i><span class="d-none d-md-inline ms-2" data-v-616f0180>Alles</span></a><a class="nav-link" data-bs-toggle="tab" data-bs-target="#chargepointlist" data-v-616f0180><i class="fa-solid fa-lg fa-charging-station" data-v-616f0180></i><span class="d-none d-md-inline ms-2" data-v-616f0180>Ladepunkte</span></a>',2),Nh={key:0,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pricecharttabbed"},Hh=Se(()=>o("i",{class:"fa-solid fa-lg fa-coins"},null,-1)),Rh=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Strompreis",-1)),Jh=[Hh,Rh],qh={key:1,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#vehiclelist"},Yh=Se(()=>o("i",{class:"fa-solid fa-lg fa-car"},null,-1)),Qh=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Fahrzeuge",-1)),Zh=[Yh,Qh],Xh={key:2,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#batterylist"},Kh=Se(()=>o("i",{class:"fa-solid fa-lg fa-car-battery"},null,-1)),ep=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Speicher",-1)),tp=[Kh,ep],ap={key:3,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#smarthomelist"},op=Se(()=>o("i",{class:"fa-solid fa-lg fa-plug"},null,-1)),rp=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Smart Home",-1)),np=[op,rp],sp={key:4,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#counterlist"},ip=Se(()=>o("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),lp=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Zähler",-1)),cp=[ip,lp],dp={key:5,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#inverterlist"},up=Se(()=>o("i",{class:"fa-solid fa-lg fa-solar-panel"},null,-1)),hp=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Wechselrichter",-1)),pp=[up,hp],gp={key:5,id:"cpContent",class:"tab-content mx-0 pt-1"},mp={id:"showAll",class:"tab-pane active",role:"tabpanel","aria-labelledby":"showall-tab"},vp={class:"row py-0 m-0 d-flex justify-content-center"},fp={id:"chargepointlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"chargepoint-tab"},_p={class:"row py-0 m-0 d-flex justify-content-center"},bp={id:"vehiclelist",class:"tab-pane",role:"tabpanel","aria-labelledby":"vehicle-tab"},yp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},wp={id:"batterylist",class:"tab-pane",role:"tabpanel","aria-labelledby":"battery-tab"},kp={class:"row py-0 m-0 d-flex justify-content-center"},Sp={id:"smarthomelist",class:"tab-pane",role:"tabpanel","aria-labelledby":"smarthome-tab"},xp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},$p={id:"counterlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"counter-tab"},Mp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},Ip={id:"inverterlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"inverter-tab"},Cp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},Pp={id:"pricecharttabbed",class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},Bp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},Vp={key:0,class:"row p-2 mt-5"},Lp={class:"col p-2"},Op=Se(()=>o("hr",null,null,-1)),Ap={class:"d-flex justify-content-between"},Tp={class:"mx-4"},Dp={key:0},Wp=O({__name:"ColorsTheme",setup(t){const e=X(!1),a=p(()=>[...ae.values()].filter(h=>h.configured).length>0);function r(){Ma()}function n(){e.value=!e.value}Ve(()=>{r(),window.addEventListener("resize",Uo),window.addEventListener("focus",s),ah()});function s(){document.hasFocus()&&me(!0)}return(h,g)=>(l(),m(G,null,[o("div",zh,[o("div",Gh,[b(Wh,{onResetArcs:i(Ho)},null,8,["onResetArcs"])]),i(v).showButtonBar?(l(),$($d,{key:0})):w("",!0),w("",!0),(l(),m("div",Eh,[b(Bu,null,{item1:y(()=>[b($r)]),item2:y(()=>[b(Nn)]),item3:y(()=>[b(gs)]),_:1})])),i(v).showQuickAccess?w("",!0):(l(),m("div",jh,[b(Lt,{id:"1",compact:i(v).shortCpList=="always"},null,8,["compact"]),i(v).showPrices?(l(),$(Et,{key:0,id:"NoTabs"})):w("",!0),i(v).showVehicles?(l(),$(Dt,{key:1})):w("",!0),b(Ot),a.value?(l(),$(At,{key:2})):w("",!0),i(v).showCounters?(l(),$(Tt,{key:3})):w("",!0),i(v).showInverters?(l(),$(jt,{key:4})):w("",!0)])),i(v).showQuickAccess?(l(),m("nav",Uh,[Fh,i(v).showPrices?(l(),m("a",Nh,Jh)):w("",!0),i(v).showVehicles?(l(),m("a",qh,Zh)):w("",!0),i(ue).isBatteryConfigured?(l(),m("a",Xh,tp)):w("",!0),a.value?(l(),m("a",ap,np)):w("",!0),i(v).showCounters?(l(),m("a",sp,cp)):w("",!0),i(v).showInverters?(l(),m("a",dp,pp)):w("",!0)])):w("",!0),i(v).showQuickAccess?(l(),m("div",gp,[o("div",mp,[o("div",vp,[b(Lt,{id:"2",compact:i(v).shortCpList!="no"},null,8,["compact"]),i(v).showPrices?(l(),$(Et,{key:0,id:"Overview"})):w("",!0),i(v).showVehicles?(l(),$(Dt,{key:1})):w("",!0),b(Ot),a.value?(l(),$(At,{key:2})):w("",!0),i(v).showCounters?(l(),$(Tt,{key:3})):w("",!0),i(v).showInverters?(l(),$(jt,{key:4})):w("",!0)])]),o("div",fp,[o("div",_p,[b(Lt,{id:"3",compact:i(v).shortCpList=="always"},null,8,["compact"])])]),o("div",bp,[i(v).showVehicles?(l(),m("div",yp,[b(Dt)])):w("",!0)]),o("div",wp,[o("div",kp,[b(Ot)])]),o("div",Sp,[a.value?(l(),m("div",xp,[b(At)])):w("",!0)]),o("div",$p,[i(v).showCounters?(l(),m("div",Mp,[b(Tt)])):w("",!0)]),o("div",Ip,[i(v).showInverters?(l(),m("div",Cp,[b(jt)])):w("",!0)]),o("div",Pp,[i(v).showPrices?(l(),m("div",Bp,[b(Et,{id:"Tabbed"})])):w("",!0)])])):w("",!0)]),i(v).debug?(l(),m("div",Vp,[o("div",Lp,[Op,o("div",Ap,[o("p",Tp,"Screen Width: "+x(i(wt).x),1),o("button",{class:"btn btn-sm btn-secondary mx-4",onClick:n}," MQ Viewer ")]),e.value?(l(),m("hr",Dp)):w("",!0),e.value?(l(),$(Mh,{key:1})):w("",!0)])])):w("",!0)],64))}}),zp=U(Wp,[["__scopeId","data-v-616f0180"]]),Ct=t=>(oe("data-v-ed619966"),t=t(),re(),t),Gp={class:"navbar navbar-expand-lg px-0 mb-0"},Ep=Ct(()=>o("a",{href:"/",class:"navbar-brand"},[o("span",null,"openWB")],-1)),jp={key:0,class:"position-absolute-50 navbar-text ms-4 navbar-time",style:{color:"var(--color-menu)"}},Up=Ct(()=>o("button",{class:"navbar-toggler togglebutton ps-5",type:"button","data-bs-toggle":"collapse","data-bs-target":"#mainNavbar","aria-controls":"mainNavbar","aria-expanded":"false","aria-label":"Toggle navigation"},[o("span",{class:"fa-solid fa-ellipsis-vertical"})],-1)),Fp=Ct(()=>o("div",{id:"mainNavbar",class:"collapse navbar-collapse justify-content-end"},[o("div",{class:"nav navbar-nav"},[o("a",{id:"navStatus",class:"nav-link",href:"../../settings/#/Status"},"Status"),o("div",{class:"nav-item dropdown"},[o("a",{id:"loggingDropdown",class:"nav-link",href:"#",role:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[z("Auswertungen "),o("i",{class:"fa-solid fa-caret-down"})]),o("div",{class:"dropdown-menu","aria-labelledby":"loggingDropdown"},[o("a",{href:"../../settings/#/Logging/ChargeLog",class:"dropdown-item"},"Ladeprotokoll"),o("a",{href:"../../settings/#/Logging/Chart",class:"dropdown-item"},"Diagramme")])]),o("div",{class:"nav-item dropdown"},[o("a",{id:"settingsDropdown",class:"nav-link",href:"#",role:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[z("Einstellungen "),o("span",{class:"fa-solid fa-caret-down"})]),o("div",{class:"dropdown-menu","aria-labelledby":"settingsDropdown"},[o("a",{id:"navSettings",class:"nav-link",href:"../../settings/index.html"},"openWB"),o("a",{class:"nav-link","data-bs-toggle":"collapse","data-bs-target":"#themesettings","aria-expanded":"false","aria-controls":"themeSettings"},[o("span",null,[z("Look&Feel"),o("span",{class:"fa-solid fa-caret-down"})])])])])])],-1)),Np=Ct(()=>o("hr",{class:"m-0 p-0 mb-2"},null,-1)),Hp=[Np],Rp=O({__name:"NavigationBar",setup(t){let e;const a=p(()=>v.fluidDisplay?"container-fluid":"container-lg");return Ve(()=>{e=setInterval(()=>{Rt.value=new Date},1e3)}),mo(()=>{clearInterval(e)}),(r,n)=>(l(),m(G,null,[o("nav",Gp,[o("div",{class:N(a.value)},[Ep,i(v).showClock=="navbar"?(l(),m("span",jp,x(i(Ca)(i(Rt))),1)):w("",!0),Up,Fp],2)]),o("div",{class:N(a.value)},Hp,2)],64))}}),Jp=U(Rp,[["__scopeId","data-v-ed619966"]]),qp={id:"app",class:"m-0 p-0"},Yp={class:"row p-0 m-0"},Qp={class:"col-12 p-0 m-0"},Zp=O({__name:"App",setup(t){const e=p(()=>v.fluidDisplay?"container-fluid":"container-lg");return(a,r)=>(l(),m("div",qp,[b(Jp),o("div",{class:N(["p-0",e.value])},[o("div",Yp,[o("div",Qp,[b(zp)])])],2)]))}}),Xp=vo(Zp);fo();Xp.mount("#app");
diff --git a/packages/modules/web_themes/colors/web/assets/index-DO1I-sJT.css b/packages/modules/web_themes/colors/web/assets/index-C6-JiuzP.css
similarity index 99%
rename from packages/modules/web_themes/colors/web/assets/index-DO1I-sJT.css
rename to packages/modules/web_themes/colors/web/assets/index-C6-JiuzP.css
index 19356ca5c4..485f8be275 100644
--- a/packages/modules/web_themes/colors/web/assets/index-DO1I-sJT.css
+++ b/packages/modules/web_themes/colors/web/assets/index-C6-JiuzP.css
@@ -1,4 +1,4 @@
-@charset "UTF-8";.form-select[data-v-7b8949f3]{background-color:var(--color-input);border:1;border-color:var(--color-bg);color:var(--color-bg);text-align:start;font-size:var(--font-small)}.commitbutton[data-v-7b8949f3]{background-color:var(--color-bg);color:var(--color-input)}option[data-v-7b8949f3]{color:green}.form-select[data-v-7b8949f3]{font-size:var(--font-verysmall);background-color:var(--color-menu);color:var(--color-fg)}.optiontable[data-v-7b8949f3]{background-color:var(--color-menu)}.optionbutton[data-v-7b8949f3]{font-size:var(--font-small);color:#fff;background-color:var(--color-menu);font-size:var(--font-verysmall);text-align:center}.dropdown-menu[data-v-7b8949f3]{background-color:var(--color-menu)}.dropdown-toggle[data-v-7b8949f3]{background-color:var(--color-menu);color:#fff;border:1px solid var(--color-bg);font-size:var(--font-verysmall)}.radiobutton[data-v-82ab6829]{border:0px solid var(--color-menu);opacity:1}.btn-outline-secondary.active[data-v-82ab6829]{background-color:var(--color-bg);border:0px solid var(--color-fg);opacity:.8}.btn-group[data-v-82ab6829]{border:1px solid var(--color-menu)}.rounded-pill[data-v-d75ec1a4]{background-color:var(--color-menu)}.arrowButton[data-v-d75ec1a4]{border:0}.datebadge[data-v-d75ec1a4]{background-color:var(--color-bg);color:var(--color-menu);border:1px solid var(--color-menu);font-size:var(--font-small);font-weight:400}.arrowButton[data-v-d75ec1a4],.fa-magnifying-glass[data-v-9dcdaf2b]{color:var(--color-menu)}.dateWbBadge[data-v-9dcdaf2b]{background-color:var(--color-menu);color:var(--color-bg);font-size:var(--font-medium);font-weight:400}.waitsign[data-v-9dcdaf2b]{text-align:center;font-size:var(--font-medium);color:var(--color-fg);border:1px solid var(--color-bg);padding:2em;margin:4em 2em 2em;background-color:var(--color-bg)}.heading[data-v-f6af00e8]{color:var(--color-menu);font-weight:400;text-align:center}.content[data-v-f6af00e8]{color:var(--color-fg);font-weight:700}@supports (grid-template-columns: subgrid){.wb-subwidget[data-v-e989060d]{border-top:.5px solid var(--color-scale);display:grid;grid-template-columns:subgrid;grid-column:1 / 13}}@supports not (grid-template-columns: subgrid){.wb-subwidget[data-v-e989060d]{border-top:.5px solid var(--color-scale);display:grid;grid-template-columns:repeat(12,auto);grid-column:1 / 13}}.titlerow[data-v-e989060d]{grid-column:1 / 13}@supports (grid-template-columns: subgrid){.contentrow[data-v-e989060d]{display:grid;grid-template-columns:subgrid;grid-column:1 / 13;align-items:top}}@supports not (grid-template-columns: subgrid){.contentrow[data-v-e989060d]{display:grid;align-items:top;grid-template-columns:repeat(12,auto)}}.widgetname[data-v-e989060d]{font-weight:700;font-size:var(--font-large)}.infotext[data-v-b935eb33]{font-size:var(--font-settings);color:var(--color-battery)}.item-icon[data-v-b935eb33]{color:var(--color-menu);font-size:var(--font-settings)}.titlecolumn[data-v-b935eb33]{color:var(--color-fg);font-size:var(--font-settings)}.selectors[data-v-b935eb33],.configitem[data-v-b935eb33]{font-size:var(--font-settings)}.minlabel[data-v-17a828b1],.maxlabel[data-v-17a828b1]{color:var(--color-menu)}.valuelabel[data-v-17a828b1]{color:var(--color-fg)}.minusButton[data-v-17a828b1],.plusButton[data-v-17a828b1]{color:var(--color-menu)}.radiobutton[data-v-df222cbe]{border:.5px solid var(--color-input);opacity:.5;font-size:var(--font-settings)}.btn-outline-secondary.active[data-v-df222cbe]{background-color:var(--color-bg);border:1px solid var(--color-fg);box-shadow:0 .5rem 1rem #00000026;opacity:1}.chargeConfigSelect[data-v-0303d179]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-0303d179]{color:var(--color-charging)}.chargeConfigSelect[data-v-faa69015]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-faa69015]{color:var(--color-pv)}.tablecell[data-v-e8f5ad9d]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;font-size:var(--font-medium)}.tableheader[data-v-e8f5ad9d]{color:var(--color-menu);background-color:var(--color-bg);text-align:center;font-style:normal}.heading[data-v-e8f5ad9d]{color:var(--color-battery)}.left[data-v-e8f5ad9d]{text-align:left}.tablecell[data-v-192e287b]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;font-size:var(--font-medium)}.tableheader[data-v-192e287b]{color:var(--color-menu);background-color:var(--color-bg);text-align:center;font-style:normal}.heading[data-v-192e287b]{color:var(--color-battery)}.left[data-v-192e287b]{text-align:left}.right[data-v-192e287b]{text-align:right}.status-string[data-v-fcb57a44]{font-size:var(--font-normal);font-style:italic;color:var(--color-battery)}.chargeConfigSelect[data-v-fcb57a44]{background:var(--color-bg);color:var(--color-fg)}.chargeModeOption[data-v-fcb57a44]{background:green;color:#00f}.nav-tabs .nav-link[data-v-fcb57a44]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-fcb57a44]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-fcb57a44]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:1px solid var(--color-menu)}.settingsheader[data-v-fcb57a44]{color:var(--color-charging)}.status-string[data-v-e348a34c]{font-size:var(--font-normal);font-style:italic;color:var(--color-battery)}.chargeConfigSelect[data-v-e348a34c]{background:var(--color-bg);color:var(--color-fg)}.chargeModeOption[data-v-e348a34c]{background:green;color:#00f}.nav-tabs .nav-link[data-v-e348a34c]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-e348a34c]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-e348a34c]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:1px solid var(--color-menu)}.settingsheader[data-v-e348a34c]{color:var(--color-charging);font-size:16px;font-weight:700}hr[data-v-e348a34c]{color:var(--color-menu)}.color-charging[data-v-0a5353c2]{color:var(--color-charging)}.fa-circle-check[data-v-0a5353c2]{color:var(--color-menu)}.settingsheader[data-v-0a5353c2]{color:var(--color-charging);font-size:16px;font-weight:700}.providername[data-v-0a5353c2]{color:var(--color-axis);font-size:16px}.status-string[data-v-1164316d]{font-size:var(--font-settings);font-style:italic;color:var(--color-battery)}.nav-tabs .nav-link[data-v-1164316d]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-1164316d]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-1164316d]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:0px solid var(--color-menu)}.heading[data-v-1164316d]{color:var(--color-menu)}.item[data-v-1164316d]{grid-column:span 12}.tabarea[data-v-1164316d]{justify-self:stretch}.batIcon[data-v-a68c844a]{color:var(--color-menu)}.wb-widget[data-v-1d5bc1d9]{width:100%;height:100%;border-radius:30px}.widgetname[data-v-1d5bc1d9]{font-weight:700;color:var(--color-fg);font-size:var(--font-large)}.pillWbBadge[data-v-36112fa3]{font-size:(var--font-small);font-weight:regular;display:flex;justify-content:center;align-items:center}.fa-star[data-v-62e55097]{color:var(--color-evu)}.fa-clock[data-v-62e55097]{color:var(--color-charging)}.fa-car[data-v-62e55097],.fa-ellipsis-vertical[data-v-62e55097],.fa-circle-check[data-v-62e55097]{color:var(--color-menu)}.fa-coins[data-v-62e55097]{color:var(--color-battery)}.fa-edit[data-v-62e55097]{color:var(--color-menu)}.socEditor[data-v-62e55097]{border:1px solid var(--color-menu);justify-self:stretch}.targetCurrent[data-v-62e55097]{color:var(--color-menu)}.priceEditor[data-v-62e55097]{border:1px solid var(--color-menu);justify-self:stretch}.chargemodes[data-v-62e55097]{grid-column:1 / 13;justify-self:center}.chargeinfo[data-v-62e55097]{display:grid;grid-template-columns:repeat(12,auto);justify-content:space-between}.errorWbBadge[data-v-62e55097]{color:var(--color-bg);background-color:var(--color-evu);font-size:var(--font-small)}.divider[data-v-62e55097]{color:var(--color-fg)}.blue[data-v-62e55097]{color:var(--color-charging)}@font-face{font-family:swiper-icons;src:url(data:application/font-woff;charset=utf-8;base64,\ d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA);font-weight:400;font-style:normal}:root{--swiper-theme-color: #007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function, initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-slide,.swiper-3d .swiper-cube-shadow{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-slide-shadow-bottom{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:#00000026}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,#00000080,#0000)}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color, var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color: #fff}.swiper-lazy-preloader-black{--swiper-preloader-color: #000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-pagination-fraction,.swiper-pagination-custom,.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal{bottom:var(--swiper-pagination-bottom, 8px);top:var(--swiper-pagination-top, auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));height:var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius, 50%);background:var(--swiper-pagination-bullet-inactive-color, #000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color, var(--swiper-theme-color))}.swiper-vertical>.swiper-pagination-bullets,.swiper-pagination-vertical.swiper-pagination-bullets{right:var(--swiper-pagination-right, 8px);left:var(--swiper-pagination-left, auto);top:50%;transform:translate3d(0,-50%,0)}.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap, 6px) 0;display:block}.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap, 4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translate(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color, inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, .25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color, var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size, 4px);left:0;top:0}.swiper-vertical>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite{width:var(--swiper-pagination-progressbar-size, 4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.modal-footer[data-v-eaefae30],.modal-header[data-v-eaefae30],.modal-body[data-v-eaefae30]{background:var(--color-bg)}.btn-close[data-v-eaefae30]{color:var(--color-fg)}.modal-footer[data-v-eaefae30]{text-align:right}.modal-header .btn-close[data-v-eaefae30]{color:var(--color-fg);background:var(--color-bg);border:0px}.modal.fade .modal-dialog[data-v-eaefae30]{transition:transform 1s ease-out;transform:none;scale:.6}.modal.show .modal-dialog[data-v-eaefae30]{transition:transform .3s ease-in;transform:none;scale:1}.tablerow[data-v-2f1df729]{margin:14px;border-top:.1px solid var(--color-scale)}.tablecell[data-v-2f1df729]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;padding-top:2px;padding-left:2px;padding-right:2px;vertical-align:baseline;line-height:1.4rem;font-size:var(--font-small)}.buttoncell[data-v-2f1df729]{background-color:var(--color-bg);padding:0;margin:0}.left[data-v-2f1df729]{text-align:left}.tablecell.right[data-v-2f1df729]{text-align:right}.tablecolum1[data-v-2f1df729]{color:var(--color-fg);text-align:left;margin:0;padding:0}.tableicon[data-v-2f1df729]{color:var(--color-menu)}.fa-star[data-v-2f1df729]{color:var(--color-evu)}.fa-clock[data-v-2f1df729]{color:var(--color-battery)}.socEditor[data-v-2f1df729]{border:1px solid var(--color-menu);background-color:var(--color-bg)}.socEditRow td[data-v-2f1df729]{background-color:var(--color-bg)}.fa-circle-check[data-v-2f1df729]{color:var(--color-menu)}.socEditTitle[data-v-2f1df729]{color:var(--color-fg)}.statusbadge[data-v-2f1df729]{background-color:var(--color-bg);font-weight:700;font-size:var(--font-verysmall)}.modebadge[data-v-2f1df729]{color:var(--color-bg)}.cpname[data-v-2f1df729]{font-size:var(--font-small)}.fa-edit[data-v-2f1df729]{color:var(--color-menu)}.infolist[data-v-2f1df729]{justify-content:center}.tableheader[data-v-b8c6b557]{margin:0;padding-left:0;background-color:var(--color-bg);color:var(--color-menu)}.alignleft[data-v-b8c6b557]{text-align:left}.aligncenter[data-v-b8c6b557]{text-align:center}.alignright[data-v-b8c6b557]{text-align:right}.table[data-v-b8c6b557]{border-spacing:1rem;background-color:var(--color-bg)}.priceWbBadge[data-v-b8c6b557]{background-color:var(--color-menu);font-weight:400}.fa-charging-station[data-v-b8c6b557]{color:var(--color-charging)}.plugIndicator[data-v-31df6764]{color:#fff;border:1px solid white}.chargeButton[data-v-31df6764]{color:#fff}.left[data-v-31df6764]{float:left}.right[data-v-31df6764]{float:right}.center[data-v-31df6764]{margin:auto}.time-display[data-v-791e4be0]{font-weight:700;color:var(--color-menu);font-size:var(--font-normal)}.battery-title[data-v-f7f825f7]{color:var(--color-battery);font-size:var(--font-medium)}.battery-color[data-v-463638db]{color:var(--color-battery)}.fg-color[data-v-463638db]{color:var(--color-fg)}.menu-color[data-v-463638db],.todaystring[data-v-463638db]{color:var(--color-menu)}.statusbutton[data-v-92893218]{font-size:var(--font-extralarge)}.sh-title[data-v-5b5cf6b3]{color:var(--color-title)}.tableheader[data-v-5b5cf6b3]{background-color:var(--color-bg);color:var(--color-menu)}.fa-ellipsis-vertical[data-v-5b5cf6b3],.fa-circle-check[data-v-5b5cf6b3]{color:var(--color-menu)}.smarthome[data-v-5b5cf6b3]{color:var(--color-devices)}.idWbBadge[data-v-01dd8c4d]{background-color:var(--color-menu);font-weight:400}.countername[data-v-01dd8c4d]{font-size:var(--font-medium)}.statusbutton[data-v-5f059284]{font-size:var(--font-large)}.modebutton[data-v-5f059284]{background-color:var(--color-menu);font-size:var(--font-verysmall);font-weight:400}.tempWbBadge[data-v-5f059284]{background-color:var(--color-battery);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.idWbBadge[data-v-f92f4f7b]{background-color:var(--color-menu);font-weight:400}.status-string[data-v-f92f4f7b]{text-align:center}.statusbutton[data-v-23b437ea]{font-size:var(--font-large)}.modebutton[data-v-23b437ea]{background-color:var(--color-menu);font-size:var(--font-verysmall);font-weight:400}.tempWbBadge[data-v-23b437ea]{background-color:var(--color-battery);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.priceWbBadge[data-v-3ecadd9f]{background-color:var(--color-charging);font-weight:400}.providerWbBadge[data-v-3ecadd9f]{background-color:var(--color-menu);font-weight:400}.grapharea[data-v-3ecadd9f]{grid-column-start:1;grid-column-end:13;width:100%;object-fit:cover;max-height:100%;justify-items:stretch}.pricefigure[data-v-3ecadd9f]{justify-self:stretch}.modeWbBadge[data-v-ee748919]{background-color:var(--color-pv);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.invertername[data-v-ee748919]{font-size:var(--font-normal)}.powerWbBadge[data-v-b7a71f81]{background-color:var(--color-pv);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.button[data-v-dc35b0f6]{color:var(--color-fg)}.name[data-v-df7e578a]{font-size:1rem;color:#000;border:1px solid white}.content[data-v-df7e578a]{grid-column:1 / -1;border:solid 1px black;border-radius:10px}.sublist[data-v-df7e578a]{grid-column:1 / -1;display:grid;grid-template-columns:subgrid}.mqviewer[data-v-a349646d]{background-color:#fff;color:#000}.topiclist[data-v-a349646d]{display:grid;grid-template-columns:repeat(40,1fr)}.topnode[data-v-a349646d]{grid-column-start:1;grid-column-end:-1}.mqtitle[data-v-a349646d]{color:#000}.form-select[data-v-5e33ce1f]{background-color:var(--color-input);color:#000;border:1px solid var(--color-bg);font-size:var(--font-settings)}.fa-circle-check[data-v-01b18db3]{font-size:var(--font-large);background-color:var(--color-bg);color:var(--color-menu)}.closebutton[data-v-01b18db3]{justify-self:end}.nav-tabs[data-v-616f0180]{border-bottom:.5px solid var(--color-menu);background-color:var(--color-bg)}.nav-tabs .nav-link[data-v-616f0180]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-616f0180]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-616f0180]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:.5px solid var(--color-menu);border-bottom:0px solid var(--color-menu);box-shadow:0 .5rem 1rem #00000026}.fa-circle-info[data-v-616f0180]{color:var(--color-fg)}.fa-charging-station[data-v-616f0180]{color:var(--color-charging)}.fa-car-battery[data-v-616f0180]{color:var(--color-battery)}.fa-plug[data-v-616f0180]{color:var(--color-devices)}.fa-bolt[data-v-616f0180]{color:var(--color-evu)}.fa-car[data-v-616f0180]{color:var(--color-charging)}.fa-coins[data-v-616f0180]{color:var(--color-battery)}.fa-solar-panel[data-v-616f0180]{color:var(--color-pv)}.navbar[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.dropdown-menu[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg)}.dropdown-item[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.btn[data-v-ed619966]{font-size:var(--font-medium);background-color:var(--color-bg);color:var(--color-fg)}.navbar-brand[data-v-ed619966]{font-weight:700;color:var(--color-fg);font-size:var(--font-normal)}.nav-link[data-v-ed619966]{color:var(--color-fg);border-color:red;font-size:var(--font-normal)}.navbar-toggler[data-v-ed619966]{color:var(--color-fg);border-color:var(--color-bg)}.navbar-time[data-v-ed619966]{font-weight:700;color:var(--color-menu);font-size:var(--font-normal)}.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius, .1em);border:var(--fa-border-width, .08em) var(--fa-border-style, solid) var(--fa-border-color, #eee);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) )}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration, 2s);animation-duration:var(--fa-animation-duration, 2s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, steps(8));animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle, none));transform:rotate(var(--fa-rotate-angle, none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0:before{content:"0"}.fa-1:before{content:"1"}.fa-2:before{content:"2"}.fa-3:before{content:"3"}.fa-4:before{content:"4"}.fa-5:before{content:"5"}.fa-6:before{content:"6"}.fa-7:before{content:"7"}.fa-8:before{content:"8"}.fa-9:before{content:"9"}.fa-a:before{content:"A"}.fa-address-book:before,.fa-contact-book:before{content:""}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:""}.fa-align-center:before{content:""}.fa-align-justify:before{content:""}.fa-align-left:before{content:""}.fa-align-right:before{content:""}.fa-anchor:before{content:""}.fa-angle-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-double-down:before,.fa-angles-down:before{content:""}.fa-angle-double-left:before,.fa-angles-left:before{content:""}.fa-angle-double-right:before,.fa-angles-right:before{content:""}.fa-angle-double-up:before,.fa-angles-up:before{content:""}.fa-ankh:before{content:""}.fa-apple-alt:before,.fa-apple-whole:before{content:""}.fa-archway:before{content:""}.fa-arrow-down:before{content:""}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:""}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:""}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:""}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:""}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:""}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:""}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:""}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:""}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:""}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:""}.fa-arrow-trend-down:before{content:""}.fa-arrow-trend-up:before{content:""}.fa-arrow-turn-down:before,.fa-level-down:before{content:""}.fa-arrow-turn-up:before,.fa-level-up:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:""}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:""}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:""}.fa-arrow-up-from-bracket:before{content:""}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:""}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:""}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:""}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:""}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:""}.fa-arrows-h:before,.fa-arrows-left-right:before{content:""}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:""}.fa-arrows-up-down:before,.fa-arrows-v:before{content:""}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:""}.fa-asterisk:before{content:"*"}.fa-at:before{content:"@"}.fa-atom:before{content:""}.fa-audio-description:before{content:""}.fa-austral-sign:before{content:""}.fa-award:before{content:""}.fa-b:before{content:"B"}.fa-baby:before{content:""}.fa-baby-carriage:before,.fa-carriage-baby:before{content:""}.fa-backward:before{content:""}.fa-backward-fast:before,.fa-fast-backward:before{content:""}.fa-backward-step:before,.fa-step-backward:before{content:""}.fa-bacon:before{content:""}.fa-bacteria:before{content:""}.fa-bacterium:before{content:""}.fa-bag-shopping:before,.fa-shopping-bag:before{content:""}.fa-bahai:before{content:""}.fa-baht-sign:before{content:""}.fa-ban:before,.fa-cancel:before{content:""}.fa-ban-smoking:before,.fa-smoking-ban:before{content:""}.fa-band-aid:before,.fa-bandage:before{content:""}.fa-barcode:before{content:""}.fa-bars:before,.fa-navicon:before{content:""}.fa-bars-progress:before,.fa-tasks-alt:before{content:""}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:""}.fa-baseball-ball:before,.fa-baseball:before{content:""}.fa-baseball-bat-ball:before{content:""}.fa-basket-shopping:before,.fa-shopping-basket:before{content:""}.fa-basketball-ball:before,.fa-basketball:before{content:""}.fa-bath:before,.fa-bathtub:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-half:before{content:""}.fa-battery-2:before,.fa-battery-quarter:before{content:""}.fa-battery-4:before,.fa-battery-three-quarters:before{content:""}.fa-bed:before{content:""}.fa-bed-pulse:before,.fa-procedures:before{content:""}.fa-beer-mug-empty:before,.fa-beer:before{content:""}.fa-bell:before{content:""}.fa-bell-concierge:before,.fa-concierge-bell:before{content:""}.fa-bell-slash:before{content:""}.fa-bezier-curve:before{content:""}.fa-bicycle:before{content:""}.fa-binoculars:before{content:""}.fa-biohazard:before{content:""}.fa-bitcoin-sign:before{content:""}.fa-blender:before{content:""}.fa-blender-phone:before{content:""}.fa-blog:before{content:""}.fa-bold:before{content:""}.fa-bolt:before,.fa-zap:before{content:""}.fa-bolt-lightning:before{content:""}.fa-bomb:before{content:""}.fa-bone:before{content:""}.fa-bong:before{content:""}.fa-book:before{content:""}.fa-atlas:before,.fa-book-atlas:before{content:""}.fa-bible:before,.fa-book-bible:before{content:""}.fa-book-journal-whills:before,.fa-journal-whills:before{content:""}.fa-book-medical:before{content:""}.fa-book-open:before{content:""}.fa-book-open-reader:before,.fa-book-reader:before{content:""}.fa-book-quran:before,.fa-quran:before{content:""}.fa-book-dead:before,.fa-book-skull:before{content:""}.fa-bookmark:before{content:""}.fa-border-all:before{content:""}.fa-border-none:before{content:""}.fa-border-style:before,.fa-border-top-left:before{content:""}.fa-bowling-ball:before{content:""}.fa-box:before{content:""}.fa-archive:before,.fa-box-archive:before{content:""}.fa-box-open:before{content:""}.fa-box-tissue:before{content:""}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:""}.fa-braille:before{content:""}.fa-brain:before{content:""}.fa-brazilian-real-sign:before{content:""}.fa-bread-slice:before{content:""}.fa-briefcase:before{content:""}.fa-briefcase-medical:before{content:""}.fa-broom:before{content:""}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:""}.fa-brush:before{content:""}.fa-bug:before{content:""}.fa-bug-slash:before{content:""}.fa-building:before{content:""}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:""}.fa-bullhorn:before{content:""}.fa-bullseye:before{content:""}.fa-burger:before,.fa-hamburger:before{content:""}.fa-bus:before{content:""}.fa-bus-alt:before,.fa-bus-simple:before{content:""}.fa-briefcase-clock:before,.fa-business-time:before{content:""}.fa-c:before{content:"C"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:""}.fa-calculator:before{content:""}.fa-calendar:before{content:""}.fa-calendar-check:before{content:""}.fa-calendar-day:before{content:""}.fa-calendar-alt:before,.fa-calendar-days:before{content:""}.fa-calendar-minus:before{content:""}.fa-calendar-plus:before{content:""}.fa-calendar-week:before{content:""}.fa-calendar-times:before,.fa-calendar-xmark:before{content:""}.fa-camera-alt:before,.fa-camera:before{content:""}.fa-camera-retro:before{content:""}.fa-camera-rotate:before{content:""}.fa-campground:before{content:""}.fa-candy-cane:before{content:""}.fa-cannabis:before{content:""}.fa-capsules:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-battery-car:before,.fa-car-battery:before{content:""}.fa-car-crash:before{content:""}.fa-car-alt:before,.fa-car-rear:before{content:""}.fa-car-side:before{content:""}.fa-caravan:before{content:""}.fa-caret-down:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-caret-up:before{content:""}.fa-carrot:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:""}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-shopping:before,.fa-shopping-cart:before{content:""}.fa-cash-register:before{content:""}.fa-cat:before{content:""}.fa-cedi-sign:before{content:""}.fa-cent-sign:before{content:""}.fa-certificate:before{content:""}.fa-chair:before{content:""}.fa-blackboard:before,.fa-chalkboard:before{content:""}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:""}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:""}.fa-charging-station:before{content:""}.fa-area-chart:before,.fa-chart-area:before{content:""}.fa-bar-chart:before,.fa-chart-bar:before{content:""}.fa-chart-column:before{content:""}.fa-chart-gantt:before{content:""}.fa-chart-line:before,.fa-line-chart:before{content:""}.fa-chart-pie:before,.fa-pie-chart:before{content:""}.fa-check:before{content:""}.fa-check-double:before{content:""}.fa-check-to-slot:before,.fa-vote-yea:before{content:""}.fa-cheese:before{content:""}.fa-chess:before{content:""}.fa-chess-bishop:before{content:""}.fa-chess-board:before{content:""}.fa-chess-king:before{content:""}.fa-chess-knight:before{content:""}.fa-chess-pawn:before{content:""}.fa-chess-queen:before{content:""}.fa-chess-rook:before{content:""}.fa-chevron-down:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-chevron-up:before{content:""}.fa-child:before{content:""}.fa-church:before{content:""}.fa-circle:before{content:""}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:""}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:""}.fa-check-circle:before,.fa-circle-check:before{content:""}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:""}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:""}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:""}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:""}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:""}.fa-circle-dot:before,.fa-dot-circle:before{content:""}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:""}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:""}.fa-circle-h:before,.fa-hospital-symbol:before{content:""}.fa-adjust:before,.fa-circle-half-stroke:before{content:""}.fa-circle-info:before,.fa-info-circle:before{content:""}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:""}.fa-circle-minus:before,.fa-minus-circle:before{content:""}.fa-circle-notch:before{content:""}.fa-circle-pause:before,.fa-pause-circle:before{content:""}.fa-circle-play:before,.fa-play-circle:before{content:""}.fa-circle-plus:before,.fa-plus-circle:before{content:""}.fa-circle-question:before,.fa-question-circle:before{content:""}.fa-circle-radiation:before,.fa-radiation-alt:before{content:""}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:""}.fa-circle-stop:before,.fa-stop-circle:before{content:""}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:""}.fa-circle-user:before,.fa-user-circle:before{content:""}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:""}.fa-city:before{content:""}.fa-clapperboard:before{content:""}.fa-clipboard:before{content:""}.fa-clipboard-check:before{content:""}.fa-clipboard-list:before{content:""}.fa-clock-four:before,.fa-clock:before{content:""}.fa-clock-rotate-left:before,.fa-history:before{content:""}.fa-clone:before{content:""}.fa-closed-captioning:before{content:""}.fa-cloud:before{content:""}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:""}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:""}.fa-cloud-meatball:before{content:""}.fa-cloud-moon:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-cloud-rain:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-cloud-sun:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-clover:before{content:""}.fa-code:before{content:""}.fa-code-branch:before{content:""}.fa-code-commit:before{content:""}.fa-code-compare:before{content:""}.fa-code-fork:before{content:""}.fa-code-merge:before{content:""}.fa-code-pull-request:before{content:""}.fa-coins:before{content:""}.fa-colon-sign:before{content:""}.fa-comment:before{content:""}.fa-comment-dollar:before{content:""}.fa-comment-dots:before,.fa-commenting:before{content:""}.fa-comment-medical:before{content:""}.fa-comment-slash:before{content:""}.fa-comment-sms:before,.fa-sms:before{content:""}.fa-comments:before{content:""}.fa-comments-dollar:before{content:""}.fa-compact-disc:before{content:""}.fa-compass:before{content:""}.fa-compass-drafting:before,.fa-drafting-compass:before{content:""}.fa-compress:before{content:""}.fa-computer-mouse:before,.fa-mouse:before{content:""}.fa-cookie:before{content:""}.fa-cookie-bite:before{content:""}.fa-copy:before{content:""}.fa-copyright:before{content:""}.fa-couch:before{content:""}.fa-credit-card-alt:before,.fa-credit-card:before{content:""}.fa-crop:before{content:""}.fa-crop-alt:before,.fa-crop-simple:before{content:""}.fa-cross:before{content:""}.fa-crosshairs:before{content:""}.fa-crow:before{content:""}.fa-crown:before{content:""}.fa-crutch:before{content:""}.fa-cruzeiro-sign:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-d:before{content:"D"}.fa-database:before{content:""}.fa-backspace:before,.fa-delete-left:before{content:""}.fa-democrat:before{content:""}.fa-desktop-alt:before,.fa-desktop:before{content:""}.fa-dharmachakra:before{content:""}.fa-diagram-next:before{content:""}.fa-diagram-predecessor:before{content:""}.fa-diagram-project:before,.fa-project-diagram:before{content:""}.fa-diagram-successor:before{content:""}.fa-diamond:before{content:""}.fa-diamond-turn-right:before,.fa-directions:before{content:""}.fa-dice:before{content:""}.fa-dice-d20:before{content:""}.fa-dice-d6:before{content:""}.fa-dice-five:before{content:""}.fa-dice-four:before{content:""}.fa-dice-one:before{content:""}.fa-dice-six:before{content:""}.fa-dice-three:before{content:""}.fa-dice-two:before{content:""}.fa-disease:before{content:""}.fa-divide:before{content:""}.fa-dna:before{content:""}.fa-dog:before{content:""}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"$"}.fa-dolly-box:before,.fa-dolly:before{content:""}.fa-dong-sign:before{content:""}.fa-door-closed:before{content:""}.fa-door-open:before{content:""}.fa-dove:before{content:""}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:""}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:""}.fa-download:before{content:""}.fa-dragon:before{content:""}.fa-draw-polygon:before{content:""}.fa-droplet:before,.fa-tint:before{content:""}.fa-droplet-slash:before,.fa-tint-slash:before{content:""}.fa-drum:before{content:""}.fa-drum-steelpan:before{content:""}.fa-drumstick-bite:before{content:""}.fa-dumbbell:before{content:""}.fa-dumpster:before{content:""}.fa-dumpster-fire:before{content:""}.fa-dungeon:before{content:""}.fa-e:before{content:"E"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:""}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:""}.fa-earth-africa:before,.fa-globe-africa:before{content:""}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:""}.fa-earth-asia:before,.fa-globe-asia:before{content:""}.fa-earth-europe:before,.fa-globe-europe:before{content:""}.fa-earth-oceania:before,.fa-globe-oceania:before{content:""}.fa-egg:before{content:""}.fa-eject:before{content:""}.fa-elevator:before{content:""}.fa-ellipsis-h:before,.fa-ellipsis:before{content:""}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:""}.fa-envelope:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-text:before{content:""}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:""}.fa-equals:before{content:"="}.fa-eraser:before{content:""}.fa-ethernet:before{content:""}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:""}.fa-exclamation:before{content:"!"}.fa-expand:before{content:""}.fa-eye:before{content:""}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:""}.fa-eye-low-vision:before,.fa-low-vision:before{content:""}.fa-eye-slash:before{content:""}.fa-f:before{content:"F"}.fa-angry:before,.fa-face-angry:before{content:""}.fa-dizzy:before,.fa-face-dizzy:before{content:""}.fa-face-flushed:before,.fa-flushed:before{content:""}.fa-face-frown:before,.fa-frown:before{content:""}.fa-face-frown-open:before,.fa-frown-open:before{content:""}.fa-face-grimace:before,.fa-grimace:before{content:""}.fa-face-grin:before,.fa-grin:before{content:""}.fa-face-grin-beam:before,.fa-grin-beam:before{content:""}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:""}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:""}.fa-face-grin-squint:before,.fa-grin-squint:before{content:""}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:""}.fa-face-grin-stars:before,.fa-grin-stars:before{content:""}.fa-face-grin-tears:before,.fa-grin-tears:before{content:""}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:""}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:""}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:""}.fa-face-grin-wide:before,.fa-grin-alt:before{content:""}.fa-face-grin-wink:before,.fa-grin-wink:before{content:""}.fa-face-kiss:before,.fa-kiss:before{content:""}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:""}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:""}.fa-face-laugh:before,.fa-laugh:before{content:""}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:""}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:""}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:""}.fa-face-meh:before,.fa-meh:before{content:""}.fa-face-meh-blank:before,.fa-meh-blank:before{content:""}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:""}.fa-face-sad-cry:before,.fa-sad-cry:before{content:""}.fa-face-sad-tear:before,.fa-sad-tear:before{content:""}.fa-face-smile:before,.fa-smile:before{content:""}.fa-face-smile-beam:before,.fa-smile-beam:before{content:""}.fa-face-smile-wink:before,.fa-smile-wink:before{content:""}.fa-face-surprise:before,.fa-surprise:before{content:""}.fa-face-tired:before,.fa-tired:before{content:""}.fa-fan:before{content:""}.fa-faucet:before{content:""}.fa-fax:before{content:""}.fa-feather:before{content:""}.fa-feather-alt:before,.fa-feather-pointed:before{content:""}.fa-file:before{content:""}.fa-file-arrow-down:before,.fa-file-download:before{content:""}.fa-file-arrow-up:before,.fa-file-upload:before{content:""}.fa-file-audio:before{content:""}.fa-file-code:before{content:""}.fa-file-contract:before{content:""}.fa-file-csv:before{content:""}.fa-file-excel:before{content:""}.fa-arrow-right-from-file:before,.fa-file-export:before{content:""}.fa-file-image:before{content:""}.fa-arrow-right-to-file:before,.fa-file-import:before{content:""}.fa-file-invoice:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:""}.fa-file-medical:before{content:""}.fa-file-pdf:before{content:""}.fa-file-powerpoint:before{content:""}.fa-file-prescription:before{content:""}.fa-file-signature:before{content:""}.fa-file-video:before{content:""}.fa-file-medical-alt:before,.fa-file-waveform:before{content:""}.fa-file-word:before{content:""}.fa-file-archive:before,.fa-file-zipper:before{content:""}.fa-fill:before{content:""}.fa-fill-drip:before{content:""}.fa-film:before{content:""}.fa-filter:before{content:""}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:""}.fa-filter-circle-xmark:before{content:""}.fa-fingerprint:before{content:""}.fa-fire:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:""}.fa-burn:before,.fa-fire-flame-simple:before{content:""}.fa-fish:before{content:""}.fa-flag:before{content:""}.fa-flag-checkered:before{content:""}.fa-flag-usa:before{content:""}.fa-flask:before{content:""}.fa-floppy-disk:before,.fa-save:before{content:""}.fa-florin-sign:before{content:""}.fa-folder:before{content:""}.fa-folder-minus:before{content:""}.fa-folder-open:before{content:""}.fa-folder-plus:before{content:""}.fa-folder-tree:before{content:""}.fa-font:before{content:""}.fa-football-ball:before,.fa-football:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before,.fa-forward-fast:before{content:""}.fa-forward-step:before,.fa-step-forward:before{content:""}.fa-franc-sign:before{content:""}.fa-frog:before{content:""}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:""}.fa-g:before{content:"G"}.fa-gamepad:before{content:""}.fa-gas-pump:before{content:""}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:""}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:""}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:""}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-gem:before{content:""}.fa-genderless:before{content:""}.fa-ghost:before{content:""}.fa-gift:before{content:""}.fa-gifts:before{content:""}.fa-glasses:before{content:""}.fa-globe:before{content:""}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:""}.fa-gopuram:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-greater-than:before{content:">"}.fa-greater-than-equal:before{content:""}.fa-grip-horizontal:before,.fa-grip:before{content:""}.fa-grip-lines:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-grip-vertical:before{content:""}.fa-guarani-sign:before{content:""}.fa-guitar:before{content:""}.fa-gun:before{content:""}.fa-h:before{content:"H"}.fa-hammer:before{content:""}.fa-hamsa:before{content:""}.fa-hand-paper:before,.fa-hand:before{content:""}.fa-hand-back-fist:before,.fa-hand-rock:before{content:""}.fa-allergies:before,.fa-hand-dots:before{content:""}.fa-fist-raised:before,.fa-hand-fist:before{content:""}.fa-hand-holding:before{content:""}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:""}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-hand-holding-medical:before{content:""}.fa-hand-lizard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-hand-peace:before{content:""}.fa-hand-point-down:before{content:""}.fa-hand-point-left:before{content:""}.fa-hand-point-right:before{content:""}.fa-hand-point-up:before{content:""}.fa-hand-pointer:before{content:""}.fa-hand-scissors:before{content:""}.fa-hand-sparkles:before{content:""}.fa-hand-spock:before{content:""}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:""}.fa-hands-bubbles:before,.fa-hands-wash:before{content:""}.fa-hands-clapping:before{content:""}.fa-hands-holding:before{content:""}.fa-hands-praying:before,.fa-praying-hands:before{content:""}.fa-handshake:before{content:""}.fa-hands-helping:before,.fa-handshake-angle:before{content:""}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:""}.fa-handshake-slash:before{content:""}.fa-hanukiah:before{content:""}.fa-hard-drive:before,.fa-hdd:before{content:""}.fa-hashtag:before{content:"#"}.fa-hat-cowboy:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-hat-wizard:before{content:""}.fa-head-side-cough:before{content:""}.fa-head-side-cough-slash:before{content:""}.fa-head-side-mask:before{content:""}.fa-head-side-virus:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-headphones:before{content:""}.fa-headphones-alt:before,.fa-headphones-simple:before{content:""}.fa-headset:before{content:""}.fa-heart:before{content:""}.fa-heart-broken:before,.fa-heart-crack:before{content:""}.fa-heart-pulse:before,.fa-heartbeat:before{content:""}.fa-helicopter:before{content:""}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:""}.fa-highlighter:before{content:""}.fa-hippo:before{content:""}.fa-hockey-puck:before{content:""}.fa-holly-berry:before{content:""}.fa-horse:before{content:""}.fa-horse-head:before{content:""}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:""}.fa-hospital-user:before{content:""}.fa-hot-tub-person:before,.fa-hot-tub:before{content:""}.fa-hotdog:before{content:""}.fa-hotel:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before,.fa-hourglass:before{content:""}.fa-hourglass-empty:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:""}.fa-home-lg:before,.fa-house-chimney:before{content:""}.fa-house-chimney-crack:before,.fa-house-damage:before{content:""}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:""}.fa-house-chimney-user:before{content:""}.fa-house-chimney-window:before{content:""}.fa-house-crack:before{content:""}.fa-house-laptop:before,.fa-laptop-house:before{content:""}.fa-house-medical:before{content:""}.fa-home-user:before,.fa-house-user:before{content:""}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:""}.fa-i:before{content:"I"}.fa-i-cursor:before{content:""}.fa-ice-cream:before{content:""}.fa-icicles:before{content:""}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-id-card-alt:before,.fa-id-card-clip:before{content:""}.fa-igloo:before{content:""}.fa-image:before{content:""}.fa-image-portrait:before,.fa-portrait:before{content:""}.fa-images:before{content:""}.fa-inbox:before{content:""}.fa-indent:before{content:""}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:""}.fa-industry:before{content:""}.fa-infinity:before{content:""}.fa-info:before{content:""}.fa-italic:before{content:""}.fa-j:before{content:"J"}.fa-jedi:before{content:""}.fa-fighter-jet:before,.fa-jet-fighter:before{content:""}.fa-joint:before{content:""}.fa-k:before{content:"K"}.fa-kaaba:before{content:""}.fa-key:before{content:""}.fa-keyboard:before{content:""}.fa-khanda:before{content:""}.fa-kip-sign:before{content:""}.fa-first-aid:before,.fa-kit-medical:before{content:""}.fa-kiwi-bird:before{content:""}.fa-l:before{content:"L"}.fa-landmark:before{content:""}.fa-language:before{content:""}.fa-laptop:before{content:""}.fa-laptop-code:before{content:""}.fa-laptop-medical:before{content:""}.fa-lari-sign:before{content:""}.fa-layer-group:before{content:""}.fa-leaf:before{content:""}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:""}.fa-arrows-alt-h:before,.fa-left-right:before{content:""}.fa-lemon:before{content:""}.fa-less-than:before{content:"<"}.fa-less-than-equal:before{content:""}.fa-life-ring:before{content:""}.fa-lightbulb:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:""}.fa-lira-sign:before{content:""}.fa-list-squares:before,.fa-list:before{content:""}.fa-list-check:before,.fa-tasks:before{content:""}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:""}.fa-list-dots:before,.fa-list-ul:before{content:""}.fa-litecoin-sign:before{content:""}.fa-location-arrow:before{content:""}.fa-location-crosshairs:before,.fa-location:before{content:""}.fa-location-dot:before,.fa-map-marker-alt:before{content:""}.fa-location-pin:before,.fa-map-marker:before{content:""}.fa-lock:before{content:""}.fa-lock-open:before{content:""}.fa-lungs:before{content:""}.fa-lungs-virus:before{content:""}.fa-m:before{content:"M"}.fa-magnet:before{content:""}.fa-magnifying-glass:before,.fa-search:before{content:""}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:""}.fa-magnifying-glass-location:before,.fa-search-location:before{content:""}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:""}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:""}.fa-manat-sign:before{content:""}.fa-map:before{content:""}.fa-map-location:before,.fa-map-marked:before{content:""}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:""}.fa-map-pin:before{content:""}.fa-marker:before{content:""}.fa-mars:before{content:""}.fa-mars-and-venus:before{content:""}.fa-mars-double:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:""}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:""}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:""}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:""}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:""}.fa-mask:before{content:""}.fa-mask-face:before{content:""}.fa-masks-theater:before,.fa-theater-masks:before{content:""}.fa-expand-arrows-alt:before,.fa-maximize:before{content:""}.fa-medal:before{content:""}.fa-memory:before{content:""}.fa-menorah:before{content:""}.fa-mercury:before{content:""}.fa-comment-alt:before,.fa-message:before{content:""}.fa-meteor:before{content:""}.fa-microchip:before{content:""}.fa-microphone:before{content:""}.fa-microphone-alt:before,.fa-microphone-lines:before{content:""}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:""}.fa-microphone-slash:before{content:""}.fa-microscope:before{content:""}.fa-mill-sign:before{content:""}.fa-compress-arrows-alt:before,.fa-minimize:before{content:""}.fa-minus:before,.fa-subtract:before{content:""}.fa-mitten:before{content:""}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-mobile-button:before{content:""}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:""}.fa-money-bill:before{content:""}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:""}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:""}.fa-money-bill-wave:before{content:""}.fa-money-check:before{content:""}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:""}.fa-monument:before{content:""}.fa-moon:before{content:""}.fa-mortar-pestle:before{content:""}.fa-mosque:before{content:""}.fa-motorcycle:before{content:""}.fa-mountain:before{content:""}.fa-mug-hot:before{content:""}.fa-coffee:before,.fa-mug-saucer:before{content:""}.fa-music:before{content:""}.fa-n:before{content:"N"}.fa-naira-sign:before{content:""}.fa-network-wired:before{content:""}.fa-neuter:before{content:""}.fa-newspaper:before{content:""}.fa-not-equal:before{content:""}.fa-note-sticky:before,.fa-sticky-note:before{content:""}.fa-notes-medical:before{content:""}.fa-o:before{content:"O"}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-oil-can:before{content:""}.fa-om:before{content:""}.fa-otter:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-p:before{content:"P"}.fa-pager:before{content:""}.fa-paint-roller:before{content:""}.fa-paint-brush:before,.fa-paintbrush:before{content:""}.fa-palette:before{content:""}.fa-pallet:before{content:""}.fa-panorama:before{content:""}.fa-paper-plane:before{content:""}.fa-paperclip:before{content:""}.fa-parachute-box:before{content:""}.fa-paragraph:before{content:""}.fa-passport:before{content:""}.fa-file-clipboard:before,.fa-paste:before{content:""}.fa-pause:before{content:""}.fa-paw:before{content:""}.fa-peace:before{content:""}.fa-pen:before{content:""}.fa-pen-alt:before,.fa-pen-clip:before{content:""}.fa-pen-fancy:before{content:""}.fa-pen-nib:before{content:""}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:""}.fa-edit:before,.fa-pen-to-square:before{content:""}.fa-pencil-alt:before,.fa-pencil:before{content:""}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:""}.fa-people-carry-box:before,.fa-people-carry:before{content:""}.fa-pepper-hot:before{content:""}.fa-percent:before,.fa-percentage:before{content:"%"}.fa-male:before,.fa-person:before{content:""}.fa-biking:before,.fa-person-biking:before{content:""}.fa-person-booth:before{content:""}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:""}.fa-female:before,.fa-person-dress:before{content:""}.fa-hiking:before,.fa-person-hiking:before{content:""}.fa-person-praying:before,.fa-pray:before{content:""}.fa-person-running:before,.fa-running:before{content:""}.fa-person-skating:before,.fa-skating:before{content:""}.fa-person-skiing:before,.fa-skiing:before{content:""}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:""}.fa-person-snowboarding:before,.fa-snowboarding:before{content:""}.fa-person-swimming:before,.fa-swimmer:before{content:""}.fa-person-walking:before,.fa-walking:before{content:""}.fa-blind:before,.fa-person-walking-with-cane:before{content:""}.fa-peseta-sign:before{content:""}.fa-peso-sign:before{content:""}.fa-phone:before{content:""}.fa-phone-alt:before,.fa-phone-flip:before{content:""}.fa-phone-slash:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-photo-film:before,.fa-photo-video:before{content:""}.fa-piggy-bank:before{content:""}.fa-pills:before{content:""}.fa-pizza-slice:before{content:""}.fa-place-of-worship:before{content:""}.fa-plane:before{content:""}.fa-plane-arrival:before{content:""}.fa-plane-departure:before{content:""}.fa-plane-slash:before{content:""}.fa-play:before{content:""}.fa-plug:before{content:""}.fa-add:before,.fa-plus:before{content:"+"}.fa-plus-minus:before{content:""}.fa-podcast:before{content:""}.fa-poo:before{content:""}.fa-poo-bolt:before,.fa-poo-storm:before{content:""}.fa-poop:before{content:""}.fa-power-off:before{content:""}.fa-prescription:before{content:""}.fa-prescription-bottle:before{content:""}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:""}.fa-print:before{content:""}.fa-pump-medical:before{content:""}.fa-pump-soap:before{content:""}.fa-puzzle-piece:before{content:""}.fa-q:before{content:"Q"}.fa-qrcode:before{content:""}.fa-question:before{content:"?"}.fa-quote-left-alt:before,.fa-quote-left:before{content:""}.fa-quote-right-alt:before,.fa-quote-right:before{content:""}.fa-r:before{content:"R"}.fa-radiation:before{content:""}.fa-rainbow:before{content:""}.fa-receipt:before{content:""}.fa-record-vinyl:before{content:""}.fa-ad:before,.fa-rectangle-ad:before{content:""}.fa-list-alt:before,.fa-rectangle-list:before{content:""}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-recycle:before{content:""}.fa-registered:before{content:""}.fa-repeat:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-republican:before{content:""}.fa-restroom:before{content:""}.fa-retweet:before{content:""}.fa-ribbon:before{content:""}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:""}.fa-exchange-alt:before,.fa-right-left:before{content:""}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:""}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:""}.fa-ring:before{content:""}.fa-road:before{content:""}.fa-robot:before{content:""}.fa-rocket:before{content:""}.fa-rotate:before,.fa-sync-alt:before{content:""}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:""}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:""}.fa-route:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:""}.fa-ruler:before{content:""}.fa-ruler-combined:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-ruler-vertical:before{content:""}.fa-rupee-sign:before,.fa-rupee:before{content:""}.fa-rupiah-sign:before{content:""}.fa-s:before{content:"S"}.fa-sailboat:before{content:""}.fa-satellite:before{content:""}.fa-satellite-dish:before{content:""}.fa-balance-scale:before,.fa-scale-balanced:before{content:""}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:""}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:""}.fa-school:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-screwdriver:before{content:""}.fa-screwdriver-wrench:before,.fa-tools:before{content:""}.fa-scroll:before{content:""}.fa-scroll-torah:before,.fa-torah:before{content:""}.fa-sd-card:before{content:""}.fa-section:before{content:""}.fa-seedling:before,.fa-sprout:before{content:""}.fa-server:before{content:""}.fa-shapes:before,.fa-triangle-circle-square:before{content:""}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:""}.fa-share-from-square:before,.fa-share-square:before{content:""}.fa-share-alt:before,.fa-share-nodes:before{content:""}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:""}.fa-shield:before{content:""}.fa-shield-alt:before,.fa-shield-blank:before{content:""}.fa-shield-virus:before{content:""}.fa-ship:before{content:""}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:""}.fa-shoe-prints:before{content:""}.fa-shop:before,.fa-store-alt:before{content:""}.fa-shop-slash:before,.fa-store-alt-slash:before{content:""}.fa-shower:before{content:""}.fa-shrimp:before{content:""}.fa-random:before,.fa-shuffle:before{content:""}.fa-shuttle-space:before,.fa-space-shuttle:before{content:""}.fa-sign-hanging:before,.fa-sign:before{content:""}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:""}.fa-signature:before{content:""}.fa-map-signs:before,.fa-signs-post:before{content:""}.fa-sim-card:before{content:""}.fa-sink:before{content:""}.fa-sitemap:before{content:""}.fa-skull:before{content:""}.fa-skull-crossbones:before{content:""}.fa-slash:before{content:""}.fa-sleigh:before{content:""}.fa-sliders-h:before,.fa-sliders:before{content:""}.fa-smog:before{content:""}.fa-smoking:before{content:""}.fa-snowflake:before{content:""}.fa-snowman:before{content:""}.fa-snowplow:before{content:""}.fa-soap:before{content:""}.fa-socks:before{content:""}.fa-solar-panel:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-spa:before{content:""}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:""}.fa-spell-check:before{content:""}.fa-spider:before{content:""}.fa-spinner:before{content:""}.fa-splotch:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-spray-can:before{content:""}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:""}.fa-square:before{content:""}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:""}.fa-caret-square-down:before,.fa-square-caret-down:before{content:""}.fa-caret-square-left:before,.fa-square-caret-left:before{content:""}.fa-caret-square-right:before,.fa-square-caret-right:before{content:""}.fa-caret-square-up:before,.fa-square-caret-up:before{content:""}.fa-check-square:before,.fa-square-check:before{content:""}.fa-envelope-square:before,.fa-square-envelope:before{content:""}.fa-square-full:before{content:""}.fa-h-square:before,.fa-square-h:before{content:""}.fa-minus-square:before,.fa-square-minus:before{content:""}.fa-parking:before,.fa-square-parking:before{content:""}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:""}.fa-phone-square:before,.fa-square-phone:before{content:""}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:""}.fa-plus-square:before,.fa-square-plus:before{content:""}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:""}.fa-poll:before,.fa-square-poll-vertical:before{content:""}.fa-square-root-alt:before,.fa-square-root-variable:before{content:""}.fa-rss-square:before,.fa-square-rss:before{content:""}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:""}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:""}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:""}.fa-stairs:before{content:""}.fa-stamp:before{content:""}.fa-star:before{content:""}.fa-star-and-crescent:before{content:""}.fa-star-half:before{content:""}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:""}.fa-star-of-david:before{content:""}.fa-star-of-life:before{content:""}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:""}.fa-stethoscope:before{content:""}.fa-stop:before{content:""}.fa-stopwatch:before{content:""}.fa-stopwatch-20:before{content:""}.fa-store:before{content:""}.fa-store-slash:before{content:""}.fa-street-view:before{content:""}.fa-strikethrough:before{content:""}.fa-stroopwafel:before{content:""}.fa-subscript:before{content:""}.fa-suitcase:before{content:""}.fa-medkit:before,.fa-suitcase-medical:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-sun:before{content:""}.fa-superscript:before{content:""}.fa-swatchbook:before{content:""}.fa-synagogue:before{content:""}.fa-syringe:before{content:""}.fa-t:before{content:"T"}.fa-table:before{content:""}.fa-table-cells:before,.fa-th:before{content:""}.fa-table-cells-large:before,.fa-th-large:before{content:""}.fa-columns:before,.fa-table-columns:before{content:""}.fa-table-list:before,.fa-th-list:before{content:""}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:""}.fa-tablet-android:before,.fa-tablet:before{content:""}.fa-tablet-button:before{content:""}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:""}.fa-tablets:before{content:""}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-tape:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-teeth:before{content:""}.fa-teeth-open:before{content:""}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:""}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-temperature-high:before{content:""}.fa-temperature-low:before{content:""}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-tenge-sign:before,.fa-tenge:before{content:""}.fa-terminal:before{content:""}.fa-text-height:before{content:""}.fa-remove-format:before,.fa-text-slash:before{content:""}.fa-text-width:before{content:""}.fa-thermometer:before{content:""}.fa-thumbs-down:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumb-tack:before,.fa-thumbtack:before{content:""}.fa-ticket:before{content:""}.fa-ticket-alt:before,.fa-ticket-simple:before{content:""}.fa-timeline:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-toilet:before{content:""}.fa-toilet-paper:before{content:""}.fa-toilet-paper-slash:before{content:""}.fa-toolbox:before{content:""}.fa-tooth:before{content:""}.fa-torii-gate:before{content:""}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:""}.fa-tractor:before{content:""}.fa-trademark:before{content:""}.fa-traffic-light:before{content:""}.fa-trailer:before{content:""}.fa-train:before{content:""}.fa-subway:before,.fa-train-subway:before{content:""}.fa-train-tram:before,.fa-tram:before{content:""}.fa-transgender-alt:before,.fa-transgender:before{content:""}.fa-trash:before{content:""}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:""}.fa-trash-alt:before,.fa-trash-can:before{content:""}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:""}.fa-tree:before{content:""}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:""}.fa-trophy:before{content:""}.fa-truck:before{content:""}.fa-shipping-fast:before,.fa-truck-fast:before{content:""}.fa-ambulance:before,.fa-truck-medical:before{content:""}.fa-truck-monster:before{content:""}.fa-truck-moving:before{content:""}.fa-truck-pickup:before{content:""}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:""}.fa-teletype:before,.fa-tty:before{content:""}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:""}.fa-level-down-alt:before,.fa-turn-down:before{content:""}.fa-level-up-alt:before,.fa-turn-up:before{content:""}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:""}.fa-u:before{content:"U"}.fa-umbrella:before{content:""}.fa-umbrella-beach:before{content:""}.fa-underline:before{content:""}.fa-universal-access:before{content:""}.fa-unlock:before{content:""}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:""}.fa-arrows-alt-v:before,.fa-up-down:before{content:""}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:""}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:""}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:""}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:""}.fa-upload:before{content:""}.fa-user:before{content:""}.fa-user-astronaut:before{content:""}.fa-user-check:before{content:""}.fa-user-clock:before{content:""}.fa-user-doctor:before,.fa-user-md:before{content:""}.fa-user-cog:before,.fa-user-gear:before{content:""}.fa-user-graduate:before{content:""}.fa-user-friends:before,.fa-user-group:before{content:""}.fa-user-injured:before{content:""}.fa-user-alt:before,.fa-user-large:before{content:""}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:""}.fa-user-lock:before{content:""}.fa-user-minus:before{content:""}.fa-user-ninja:before{content:""}.fa-user-nurse:before{content:""}.fa-user-edit:before,.fa-user-pen:before{content:""}.fa-user-plus:before{content:""}.fa-user-secret:before{content:""}.fa-user-shield:before{content:""}.fa-user-slash:before{content:""}.fa-user-tag:before{content:""}.fa-user-tie:before{content:""}.fa-user-times:before,.fa-user-xmark:before{content:""}.fa-users:before{content:""}.fa-users-cog:before,.fa-users-gear:before{content:""}.fa-users-slash:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-v:before{content:"V"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:""}.fa-vault:before{content:""}.fa-vector-square:before{content:""}.fa-venus:before{content:""}.fa-venus-double:before{content:""}.fa-venus-mars:before{content:""}.fa-vest:before{content:""}.fa-vest-patches:before{content:""}.fa-vial:before{content:""}.fa-vials:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-video-slash:before{content:""}.fa-vihara:before{content:""}.fa-virus:before{content:""}.fa-virus-covid:before{content:""}.fa-virus-covid-slash:before{content:""}.fa-virus-slash:before{content:""}.fa-viruses:before{content:""}.fa-voicemail:before{content:""}.fa-volleyball-ball:before,.fa-volleyball:before{content:""}.fa-volume-high:before,.fa-volume-up:before{content:""}.fa-volume-down:before,.fa-volume-low:before{content:""}.fa-volume-off:before{content:""}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:""}.fa-vr-cardboard:before{content:""}.fa-w:before{content:"W"}.fa-wallet:before{content:""}.fa-magic:before,.fa-wand-magic:before{content:""}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:""}.fa-wand-sparkles:before{content:""}.fa-warehouse:before{content:""}.fa-water:before{content:""}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:""}.fa-wave-square:before{content:""}.fa-weight-hanging:before{content:""}.fa-weight-scale:before,.fa-weight:before{content:""}.fa-wheelchair:before{content:""}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:""}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:""}.fa-wind:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-wine-bottle:before{content:""}.fa-wine-glass:before{content:""}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:""}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:""}.fa-wrench:before{content:""}.fa-x:before{content:"X"}.fa-x-ray:before{content:""}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:""}.fa-y:before{content:"Y"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:""}.fa-yin-yang:before{content:""}.fa-z:before{content:"Z"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}/*!
+@charset "UTF-8";.form-select[data-v-7b8949f3]{background-color:var(--color-input);border:1;border-color:var(--color-bg);color:var(--color-bg);text-align:start;font-size:var(--font-small)}.commitbutton[data-v-7b8949f3]{background-color:var(--color-bg);color:var(--color-input)}option[data-v-7b8949f3]{color:green}.form-select[data-v-7b8949f3]{font-size:var(--font-verysmall);background-color:var(--color-menu);color:var(--color-fg)}.optiontable[data-v-7b8949f3]{background-color:var(--color-menu)}.optionbutton[data-v-7b8949f3]{font-size:var(--font-small);color:#fff;background-color:var(--color-menu);font-size:var(--font-verysmall);text-align:center}.dropdown-menu[data-v-7b8949f3]{background-color:var(--color-menu)}.dropdown-toggle[data-v-7b8949f3]{background-color:var(--color-menu);color:#fff;border:1px solid var(--color-bg);font-size:var(--font-verysmall)}.radiobutton[data-v-82ab6829]{border:0px solid var(--color-menu);opacity:1}.btn-outline-secondary.active[data-v-82ab6829]{background-color:var(--color-bg);border:0px solid var(--color-fg);opacity:.8}.btn-group[data-v-82ab6829]{border:1px solid var(--color-menu)}.rounded-pill[data-v-d75ec1a4]{background-color:var(--color-menu)}.arrowButton[data-v-d75ec1a4]{border:0}.datebadge[data-v-d75ec1a4]{background-color:var(--color-bg);color:var(--color-menu);border:1px solid var(--color-menu);font-size:var(--font-small);font-weight:400}.arrowButton[data-v-d75ec1a4],.fa-magnifying-glass[data-v-9dcdaf2b]{color:var(--color-menu)}.dateWbBadge[data-v-9dcdaf2b]{background-color:var(--color-menu);color:var(--color-bg);font-size:var(--font-medium);font-weight:400}.waitsign[data-v-9dcdaf2b]{text-align:center;font-size:var(--font-medium);color:var(--color-fg);border:1px solid var(--color-bg);padding:2em;margin:4em 2em 2em;background-color:var(--color-bg)}.heading[data-v-f6af00e8]{color:var(--color-menu);font-weight:400;text-align:center}.content[data-v-f6af00e8]{color:var(--color-fg);font-weight:700}@supports (grid-template-columns: subgrid){.wb-subwidget[data-v-e989060d]{border-top:.5px solid var(--color-scale);display:grid;grid-template-columns:subgrid;grid-column:1 / 13}}@supports not (grid-template-columns: subgrid){.wb-subwidget[data-v-e989060d]{border-top:.5px solid var(--color-scale);display:grid;grid-template-columns:repeat(12,auto);grid-column:1 / 13}}.titlerow[data-v-e989060d]{grid-column:1 / 13}@supports (grid-template-columns: subgrid){.contentrow[data-v-e989060d]{display:grid;grid-template-columns:subgrid;grid-column:1 / 13;align-items:top}}@supports not (grid-template-columns: subgrid){.contentrow[data-v-e989060d]{display:grid;align-items:top;grid-template-columns:repeat(12,auto)}}.widgetname[data-v-e989060d]{font-weight:700;font-size:var(--font-large)}.infotext[data-v-b935eb33]{font-size:var(--font-settings);color:var(--color-battery)}.item-icon[data-v-b935eb33]{color:var(--color-menu);font-size:var(--font-settings)}.titlecolumn[data-v-b935eb33]{color:var(--color-fg);font-size:var(--font-settings)}.selectors[data-v-b935eb33],.configitem[data-v-b935eb33]{font-size:var(--font-settings)}.minlabel[data-v-17a828b1],.maxlabel[data-v-17a828b1]{color:var(--color-menu)}.valuelabel[data-v-17a828b1]{color:var(--color-fg)}.minusButton[data-v-17a828b1],.plusButton[data-v-17a828b1]{color:var(--color-menu)}.radiobutton[data-v-df222cbe]{border:.5px solid var(--color-input);opacity:.5;font-size:var(--font-settings)}.btn-outline-secondary.active[data-v-df222cbe]{background-color:var(--color-bg);border:1px solid var(--color-fg);box-shadow:0 .5rem 1rem #00000026;opacity:1}.chargeConfigSelect[data-v-0303d179]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-0303d179]{color:var(--color-charging)}.chargeConfigSelect[data-v-faa69015]{background:var(--color-bg);color:var(--color-fg)}.heading[data-v-faa69015]{color:var(--color-pv)}.tablecell[data-v-e8f5ad9d]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;font-size:var(--font-medium)}.tableheader[data-v-e8f5ad9d]{color:var(--color-menu);background-color:var(--color-bg);text-align:center;font-style:normal}.heading[data-v-e8f5ad9d]{color:var(--color-battery)}.left[data-v-e8f5ad9d]{text-align:left}.tablecell[data-v-192e287b]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;font-size:var(--font-medium)}.tableheader[data-v-192e287b]{color:var(--color-menu);background-color:var(--color-bg);text-align:center;font-style:normal}.heading[data-v-192e287b]{color:var(--color-battery)}.left[data-v-192e287b]{text-align:left}.right[data-v-192e287b]{text-align:right}.status-string[data-v-fcb57a44]{font-size:var(--font-normal);font-style:italic;color:var(--color-battery)}.chargeConfigSelect[data-v-fcb57a44]{background:var(--color-bg);color:var(--color-fg)}.chargeModeOption[data-v-fcb57a44]{background:green;color:#00f}.nav-tabs .nav-link[data-v-fcb57a44]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-fcb57a44]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-fcb57a44]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:1px solid var(--color-menu)}.settingsheader[data-v-fcb57a44]{color:var(--color-charging)}.status-string[data-v-e348a34c]{font-size:var(--font-normal);font-style:italic;color:var(--color-battery)}.chargeConfigSelect[data-v-e348a34c]{background:var(--color-bg);color:var(--color-fg)}.chargeModeOption[data-v-e348a34c]{background:green;color:#00f}.nav-tabs .nav-link[data-v-e348a34c]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-e348a34c]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-e348a34c]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:1px solid var(--color-menu)}.settingsheader[data-v-e348a34c]{color:var(--color-charging);font-size:16px;font-weight:700}hr[data-v-e348a34c]{color:var(--color-menu)}.color-charging[data-v-0a5353c2]{color:var(--color-charging)}.fa-circle-check[data-v-0a5353c2]{color:var(--color-menu)}.settingsheader[data-v-0a5353c2]{color:var(--color-charging);font-size:16px;font-weight:700}.providername[data-v-0a5353c2]{color:var(--color-axis);font-size:16px}.status-string[data-v-1164316d]{font-size:var(--font-settings);font-style:italic;color:var(--color-battery)}.nav-tabs .nav-link[data-v-1164316d]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-1164316d]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-1164316d]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:1px solid var(--color-menu);border-bottom:0px solid var(--color-menu)}.heading[data-v-1164316d]{color:var(--color-menu)}.item[data-v-1164316d]{grid-column:span 12}.tabarea[data-v-1164316d]{justify-self:stretch}.batIcon[data-v-a68c844a]{color:var(--color-menu)}.wb-widget[data-v-1d5bc1d9]{width:100%;height:100%;border-radius:30px}.widgetname[data-v-1d5bc1d9]{font-weight:700;color:var(--color-fg);font-size:var(--font-large)}.pillWbBadge[data-v-36112fa3]{font-size:(var--font-small);font-weight:regular;display:flex;justify-content:center;align-items:center}.fa-star[data-v-62e55097]{color:var(--color-evu)}.fa-clock[data-v-62e55097]{color:var(--color-charging)}.fa-car[data-v-62e55097],.fa-ellipsis-vertical[data-v-62e55097],.fa-circle-check[data-v-62e55097]{color:var(--color-menu)}.fa-coins[data-v-62e55097]{color:var(--color-battery)}.fa-edit[data-v-62e55097]{color:var(--color-menu)}.socEditor[data-v-62e55097]{border:1px solid var(--color-menu);justify-self:stretch}.targetCurrent[data-v-62e55097]{color:var(--color-menu)}.priceEditor[data-v-62e55097]{border:1px solid var(--color-menu);justify-self:stretch}.chargemodes[data-v-62e55097]{grid-column:1 / 13;justify-self:center}.chargeinfo[data-v-62e55097]{display:grid;grid-template-columns:repeat(12,auto);justify-content:space-between}.errorWbBadge[data-v-62e55097]{color:var(--color-bg);background-color:var(--color-evu);font-size:var(--font-small)}.divider[data-v-62e55097]{color:var(--color-fg)}.blue[data-v-62e55097]{color:var(--color-charging)}@font-face{font-family:swiper-icons;src:url(data:application/font-woff;charset=utf-8;base64,\ d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA);font-weight:400;font-style:normal}:root{--swiper-theme-color: #007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function, initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-slide,.swiper-3d .swiper-cube-shadow{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-slide-shadow-bottom{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:#00000026}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,#00000080,#0000)}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color, var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color: #fff}.swiper-lazy-preloader-black{--swiper-preloader-color: #000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-pagination-fraction,.swiper-pagination-custom,.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal{bottom:var(--swiper-pagination-bottom, 8px);top:var(--swiper-pagination-top, auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));height:var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius, 50%);background:var(--swiper-pagination-bullet-inactive-color, #000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color, var(--swiper-theme-color))}.swiper-vertical>.swiper-pagination-bullets,.swiper-pagination-vertical.swiper-pagination-bullets{right:var(--swiper-pagination-right, 8px);left:var(--swiper-pagination-left, auto);top:50%;transform:translate3d(0,-50%,0)}.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap, 6px) 0;display:block}.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap, 4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translate(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color, inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, .25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color, var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size, 4px);left:0;top:0}.swiper-vertical>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite{width:var(--swiper-pagination-progressbar-size, 4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.modal-footer[data-v-eaefae30],.modal-header[data-v-eaefae30],.modal-body[data-v-eaefae30]{background:var(--color-bg)}.btn-close[data-v-eaefae30]{color:var(--color-fg)}.modal-footer[data-v-eaefae30]{text-align:right}.modal-header .btn-close[data-v-eaefae30]{color:var(--color-fg);background:var(--color-bg);border:0px}.modal.fade .modal-dialog[data-v-eaefae30]{transition:transform 1s ease-out;transform:none;scale:.6}.modal.show .modal-dialog[data-v-eaefae30]{transition:transform .3s ease-in;transform:none;scale:1}.tablerow[data-v-2f1df729]{margin:14px;border-top:.1px solid var(--color-scale)}.tablecell[data-v-2f1df729]{color:var(--color-fg);background-color:var(--color-bg);text-align:center;padding-top:2px;padding-left:2px;padding-right:2px;vertical-align:baseline;line-height:1.4rem;font-size:var(--font-small)}.buttoncell[data-v-2f1df729]{background-color:var(--color-bg);padding:0;margin:0}.left[data-v-2f1df729]{text-align:left}.tablecell.right[data-v-2f1df729]{text-align:right}.tablecolum1[data-v-2f1df729]{color:var(--color-fg);text-align:left;margin:0;padding:0}.tableicon[data-v-2f1df729]{color:var(--color-menu)}.fa-star[data-v-2f1df729]{color:var(--color-evu)}.fa-clock[data-v-2f1df729]{color:var(--color-battery)}.socEditor[data-v-2f1df729]{border:1px solid var(--color-menu);background-color:var(--color-bg)}.socEditRow td[data-v-2f1df729]{background-color:var(--color-bg)}.fa-circle-check[data-v-2f1df729]{color:var(--color-menu)}.socEditTitle[data-v-2f1df729]{color:var(--color-fg)}.statusbadge[data-v-2f1df729]{background-color:var(--color-bg);font-weight:700;font-size:var(--font-verysmall)}.modebadge[data-v-2f1df729]{color:var(--color-bg)}.cpname[data-v-2f1df729]{font-size:var(--font-small)}.fa-edit[data-v-2f1df729]{color:var(--color-menu)}.infolist[data-v-2f1df729]{justify-content:center}.tableheader[data-v-b8c6b557]{margin:0;padding-left:0;background-color:var(--color-bg);color:var(--color-menu)}.alignleft[data-v-b8c6b557]{text-align:left}.aligncenter[data-v-b8c6b557]{text-align:center}.alignright[data-v-b8c6b557]{text-align:right}.table[data-v-b8c6b557]{border-spacing:1rem;background-color:var(--color-bg)}.priceWbBadge[data-v-b8c6b557]{background-color:var(--color-menu);font-weight:400}.fa-charging-station[data-v-b8c6b557]{color:var(--color-charging)}.plugIndicator[data-v-31df6764]{color:#fff;border:1px solid white}.chargeButton[data-v-31df6764]{color:#fff}.left[data-v-31df6764]{float:left}.right[data-v-31df6764]{float:right}.center[data-v-31df6764]{margin:auto}.time-display[data-v-791e4be0]{font-weight:700;color:var(--color-menu);font-size:var(--font-normal)}.battery-title[data-v-f7f825f7]{color:var(--color-battery);font-size:var(--font-medium)}.battery-color[data-v-463638db]{color:var(--color-battery)}.fg-color[data-v-463638db]{color:var(--color-fg)}.menu-color[data-v-463638db],.todaystring[data-v-463638db]{color:var(--color-menu)}.statusbutton[data-v-92893218]{font-size:var(--font-extralarge)}.sh-title[data-v-5b5cf6b3]{color:var(--color-title)}.tableheader[data-v-5b5cf6b3]{background-color:var(--color-bg);color:var(--color-menu)}.fa-ellipsis-vertical[data-v-5b5cf6b3],.fa-circle-check[data-v-5b5cf6b3]{color:var(--color-menu)}.smarthome[data-v-5b5cf6b3]{color:var(--color-devices)}.idWbBadge[data-v-01dd8c4d]{background-color:var(--color-menu);font-weight:400}.countername[data-v-01dd8c4d]{font-size:var(--font-medium)}.statusbutton[data-v-5f059284]{font-size:var(--font-large)}.modebutton[data-v-5f059284]{background-color:var(--color-menu);font-size:var(--font-verysmall);font-weight:400}.tempWbBadge[data-v-5f059284]{background-color:var(--color-battery);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.idWbBadge[data-v-f92f4f7b]{background-color:var(--color-menu);font-weight:400}.status-string[data-v-f92f4f7b]{text-align:center}.statusbutton[data-v-23b437ea]{font-size:var(--font-large)}.modebutton[data-v-23b437ea]{background-color:var(--color-menu);font-size:var(--font-verysmall);font-weight:400}.tempWbBadge[data-v-23b437ea]{background-color:var(--color-battery);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.priceWbBadge[data-v-3ecadd9f]{background-color:var(--color-charging);font-weight:400}.providerWbBadge[data-v-3ecadd9f]{background-color:var(--color-menu);font-weight:400}.grapharea[data-v-3ecadd9f]{grid-column-start:1;grid-column-end:13;width:100%;object-fit:cover;max-height:100%;justify-items:stretch}.pricefigure[data-v-3ecadd9f]{justify-self:stretch}.modeWbBadge[data-v-ee748919]{background-color:var(--color-pv);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.invertername[data-v-ee748919]{font-size:var(--font-normal)}.powerWbBadge[data-v-b7a71f81]{background-color:var(--color-pv);color:var(--color-bg);font-size:var(--font-verysmall);font-weight:400}.button[data-v-dc35b0f6]{color:var(--color-fg)}.name[data-v-df7e578a]{font-size:1rem;color:#000;border:1px solid white}.content[data-v-df7e578a]{grid-column:1 / -1;border:solid 1px black;border-radius:10px}.sublist[data-v-df7e578a]{grid-column:1 / -1;display:grid;grid-template-columns:subgrid}.mqviewer[data-v-a349646d]{background-color:#fff;color:#000}.topiclist[data-v-a349646d]{display:grid;grid-template-columns:repeat(40,1fr)}.topnode[data-v-a349646d]{grid-column-start:1;grid-column-end:-1}.mqtitle[data-v-a349646d]{color:#000}.form-select[data-v-5e33ce1f]{background-color:var(--color-input);color:#000;border:1px solid var(--color-bg);font-size:var(--font-settings)}.fa-circle-check[data-v-01b18db3]{font-size:var(--font-large);background-color:var(--color-bg);color:var(--color-menu)}.closebutton[data-v-01b18db3]{justify-self:end}.nav-tabs[data-v-516e2f6a]{border-bottom:.5px solid var(--color-menu);background-color:var(--color-bg)}.nav-tabs .nav-link[data-v-516e2f6a]{color:var(--color-menu);opacity:.5}.nav-tabs .nav-link.disabled[data-v-516e2f6a]{color:var(--color-axis);border:.5px solid var(--color-axis)}.nav-tabs .nav-link.active[data-v-516e2f6a]{color:var(--color-fg);background-color:var(--color-bg);opacity:1;border:.5px solid var(--color-menu);border-bottom:0px solid var(--color-menu);box-shadow:0 .5rem 1rem #00000026}.fa-circle-info[data-v-516e2f6a]{color:var(--color-fg)}.fa-charging-station[data-v-516e2f6a]{color:var(--color-charging)}.fa-car-battery[data-v-516e2f6a]{color:var(--color-battery)}.fa-plug[data-v-516e2f6a]{color:var(--color-devices)}.fa-bolt[data-v-516e2f6a]{color:var(--color-evu)}.fa-car[data-v-516e2f6a]{color:var(--color-charging)}.fa-coins[data-v-516e2f6a]{color:var(--color-battery)}.fa-solar-panel[data-v-516e2f6a]{color:var(--color-pv)}.navbar[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.dropdown-menu[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg)}.dropdown-item[data-v-ed619966]{background-color:var(--color-bg);color:var(--color-fg);font-size:var(--font-normal)}.btn[data-v-ed619966]{font-size:var(--font-medium);background-color:var(--color-bg);color:var(--color-fg)}.navbar-brand[data-v-ed619966]{font-weight:700;color:var(--color-fg);font-size:var(--font-normal)}.nav-link[data-v-ed619966]{color:var(--color-fg);border-color:red;font-size:var(--font-normal)}.navbar-toggler[data-v-ed619966]{color:var(--color-fg);border-color:var(--color-bg)}.navbar-time[data-v-ed619966]{font-weight:700;color:var(--color-menu);font-size:var(--font-normal)}.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius, .1em);border:var(--fa-border-width, .08em) var(--fa-border-style, solid) var(--fa-border-color, #eee);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.28, .84, .42, 1) )}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) );animation-timing-function:var( --fa-animation-timing, cubic-bezier(.4, 0, .6, 1) )}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay, 0);animation-delay:var(--fa-animation-delay, 0);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration, 2s);animation-duration:var(--fa-animation-duration, 2s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var( --fa-animation-iteration-count, infinite );animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, steps(8));animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle, none));transform:rotate(var(--fa-rotate-angle, none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0:before{content:"0"}.fa-1:before{content:"1"}.fa-2:before{content:"2"}.fa-3:before{content:"3"}.fa-4:before{content:"4"}.fa-5:before{content:"5"}.fa-6:before{content:"6"}.fa-7:before{content:"7"}.fa-8:before{content:"8"}.fa-9:before{content:"9"}.fa-a:before{content:"A"}.fa-address-book:before,.fa-contact-book:before{content:""}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:""}.fa-align-center:before{content:""}.fa-align-justify:before{content:""}.fa-align-left:before{content:""}.fa-align-right:before{content:""}.fa-anchor:before{content:""}.fa-angle-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-double-down:before,.fa-angles-down:before{content:""}.fa-angle-double-left:before,.fa-angles-left:before{content:""}.fa-angle-double-right:before,.fa-angles-right:before{content:""}.fa-angle-double-up:before,.fa-angles-up:before{content:""}.fa-ankh:before{content:""}.fa-apple-alt:before,.fa-apple-whole:before{content:""}.fa-archway:before{content:""}.fa-arrow-down:before{content:""}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:""}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:""}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:""}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:""}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:""}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:""}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:""}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:""}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:""}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:""}.fa-arrow-trend-down:before{content:""}.fa-arrow-trend-up:before{content:""}.fa-arrow-turn-down:before,.fa-level-down:before{content:""}.fa-arrow-turn-up:before,.fa-level-up:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:""}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:""}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:""}.fa-arrow-up-from-bracket:before{content:""}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:""}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:""}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:""}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:""}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:""}.fa-arrows-h:before,.fa-arrows-left-right:before{content:""}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:""}.fa-arrows-up-down:before,.fa-arrows-v:before{content:""}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:""}.fa-asterisk:before{content:"*"}.fa-at:before{content:"@"}.fa-atom:before{content:""}.fa-audio-description:before{content:""}.fa-austral-sign:before{content:""}.fa-award:before{content:""}.fa-b:before{content:"B"}.fa-baby:before{content:""}.fa-baby-carriage:before,.fa-carriage-baby:before{content:""}.fa-backward:before{content:""}.fa-backward-fast:before,.fa-fast-backward:before{content:""}.fa-backward-step:before,.fa-step-backward:before{content:""}.fa-bacon:before{content:""}.fa-bacteria:before{content:""}.fa-bacterium:before{content:""}.fa-bag-shopping:before,.fa-shopping-bag:before{content:""}.fa-bahai:before{content:""}.fa-baht-sign:before{content:""}.fa-ban:before,.fa-cancel:before{content:""}.fa-ban-smoking:before,.fa-smoking-ban:before{content:""}.fa-band-aid:before,.fa-bandage:before{content:""}.fa-barcode:before{content:""}.fa-bars:before,.fa-navicon:before{content:""}.fa-bars-progress:before,.fa-tasks-alt:before{content:""}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:""}.fa-baseball-ball:before,.fa-baseball:before{content:""}.fa-baseball-bat-ball:before{content:""}.fa-basket-shopping:before,.fa-shopping-basket:before{content:""}.fa-basketball-ball:before,.fa-basketball:before{content:""}.fa-bath:before,.fa-bathtub:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-half:before{content:""}.fa-battery-2:before,.fa-battery-quarter:before{content:""}.fa-battery-4:before,.fa-battery-three-quarters:before{content:""}.fa-bed:before{content:""}.fa-bed-pulse:before,.fa-procedures:before{content:""}.fa-beer-mug-empty:before,.fa-beer:before{content:""}.fa-bell:before{content:""}.fa-bell-concierge:before,.fa-concierge-bell:before{content:""}.fa-bell-slash:before{content:""}.fa-bezier-curve:before{content:""}.fa-bicycle:before{content:""}.fa-binoculars:before{content:""}.fa-biohazard:before{content:""}.fa-bitcoin-sign:before{content:""}.fa-blender:before{content:""}.fa-blender-phone:before{content:""}.fa-blog:before{content:""}.fa-bold:before{content:""}.fa-bolt:before,.fa-zap:before{content:""}.fa-bolt-lightning:before{content:""}.fa-bomb:before{content:""}.fa-bone:before{content:""}.fa-bong:before{content:""}.fa-book:before{content:""}.fa-atlas:before,.fa-book-atlas:before{content:""}.fa-bible:before,.fa-book-bible:before{content:""}.fa-book-journal-whills:before,.fa-journal-whills:before{content:""}.fa-book-medical:before{content:""}.fa-book-open:before{content:""}.fa-book-open-reader:before,.fa-book-reader:before{content:""}.fa-book-quran:before,.fa-quran:before{content:""}.fa-book-dead:before,.fa-book-skull:before{content:""}.fa-bookmark:before{content:""}.fa-border-all:before{content:""}.fa-border-none:before{content:""}.fa-border-style:before,.fa-border-top-left:before{content:""}.fa-bowling-ball:before{content:""}.fa-box:before{content:""}.fa-archive:before,.fa-box-archive:before{content:""}.fa-box-open:before{content:""}.fa-box-tissue:before{content:""}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:""}.fa-braille:before{content:""}.fa-brain:before{content:""}.fa-brazilian-real-sign:before{content:""}.fa-bread-slice:before{content:""}.fa-briefcase:before{content:""}.fa-briefcase-medical:before{content:""}.fa-broom:before{content:""}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:""}.fa-brush:before{content:""}.fa-bug:before{content:""}.fa-bug-slash:before{content:""}.fa-building:before{content:""}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:""}.fa-bullhorn:before{content:""}.fa-bullseye:before{content:""}.fa-burger:before,.fa-hamburger:before{content:""}.fa-bus:before{content:""}.fa-bus-alt:before,.fa-bus-simple:before{content:""}.fa-briefcase-clock:before,.fa-business-time:before{content:""}.fa-c:before{content:"C"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:""}.fa-calculator:before{content:""}.fa-calendar:before{content:""}.fa-calendar-check:before{content:""}.fa-calendar-day:before{content:""}.fa-calendar-alt:before,.fa-calendar-days:before{content:""}.fa-calendar-minus:before{content:""}.fa-calendar-plus:before{content:""}.fa-calendar-week:before{content:""}.fa-calendar-times:before,.fa-calendar-xmark:before{content:""}.fa-camera-alt:before,.fa-camera:before{content:""}.fa-camera-retro:before{content:""}.fa-camera-rotate:before{content:""}.fa-campground:before{content:""}.fa-candy-cane:before{content:""}.fa-cannabis:before{content:""}.fa-capsules:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-battery-car:before,.fa-car-battery:before{content:""}.fa-car-crash:before{content:""}.fa-car-alt:before,.fa-car-rear:before{content:""}.fa-car-side:before{content:""}.fa-caravan:before{content:""}.fa-caret-down:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-caret-up:before{content:""}.fa-carrot:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:""}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-shopping:before,.fa-shopping-cart:before{content:""}.fa-cash-register:before{content:""}.fa-cat:before{content:""}.fa-cedi-sign:before{content:""}.fa-cent-sign:before{content:""}.fa-certificate:before{content:""}.fa-chair:before{content:""}.fa-blackboard:before,.fa-chalkboard:before{content:""}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:""}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:""}.fa-charging-station:before{content:""}.fa-area-chart:before,.fa-chart-area:before{content:""}.fa-bar-chart:before,.fa-chart-bar:before{content:""}.fa-chart-column:before{content:""}.fa-chart-gantt:before{content:""}.fa-chart-line:before,.fa-line-chart:before{content:""}.fa-chart-pie:before,.fa-pie-chart:before{content:""}.fa-check:before{content:""}.fa-check-double:before{content:""}.fa-check-to-slot:before,.fa-vote-yea:before{content:""}.fa-cheese:before{content:""}.fa-chess:before{content:""}.fa-chess-bishop:before{content:""}.fa-chess-board:before{content:""}.fa-chess-king:before{content:""}.fa-chess-knight:before{content:""}.fa-chess-pawn:before{content:""}.fa-chess-queen:before{content:""}.fa-chess-rook:before{content:""}.fa-chevron-down:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-chevron-up:before{content:""}.fa-child:before{content:""}.fa-church:before{content:""}.fa-circle:before{content:""}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:""}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:""}.fa-check-circle:before,.fa-circle-check:before{content:""}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:""}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:""}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:""}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:""}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:""}.fa-circle-dot:before,.fa-dot-circle:before{content:""}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:""}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:""}.fa-circle-h:before,.fa-hospital-symbol:before{content:""}.fa-adjust:before,.fa-circle-half-stroke:before{content:""}.fa-circle-info:before,.fa-info-circle:before{content:""}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:""}.fa-circle-minus:before,.fa-minus-circle:before{content:""}.fa-circle-notch:before{content:""}.fa-circle-pause:before,.fa-pause-circle:before{content:""}.fa-circle-play:before,.fa-play-circle:before{content:""}.fa-circle-plus:before,.fa-plus-circle:before{content:""}.fa-circle-question:before,.fa-question-circle:before{content:""}.fa-circle-radiation:before,.fa-radiation-alt:before{content:""}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:""}.fa-circle-stop:before,.fa-stop-circle:before{content:""}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:""}.fa-circle-user:before,.fa-user-circle:before{content:""}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:""}.fa-city:before{content:""}.fa-clapperboard:before{content:""}.fa-clipboard:before{content:""}.fa-clipboard-check:before{content:""}.fa-clipboard-list:before{content:""}.fa-clock-four:before,.fa-clock:before{content:""}.fa-clock-rotate-left:before,.fa-history:before{content:""}.fa-clone:before{content:""}.fa-closed-captioning:before{content:""}.fa-cloud:before{content:""}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:""}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:""}.fa-cloud-meatball:before{content:""}.fa-cloud-moon:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-cloud-rain:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-cloud-sun:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-clover:before{content:""}.fa-code:before{content:""}.fa-code-branch:before{content:""}.fa-code-commit:before{content:""}.fa-code-compare:before{content:""}.fa-code-fork:before{content:""}.fa-code-merge:before{content:""}.fa-code-pull-request:before{content:""}.fa-coins:before{content:""}.fa-colon-sign:before{content:""}.fa-comment:before{content:""}.fa-comment-dollar:before{content:""}.fa-comment-dots:before,.fa-commenting:before{content:""}.fa-comment-medical:before{content:""}.fa-comment-slash:before{content:""}.fa-comment-sms:before,.fa-sms:before{content:""}.fa-comments:before{content:""}.fa-comments-dollar:before{content:""}.fa-compact-disc:before{content:""}.fa-compass:before{content:""}.fa-compass-drafting:before,.fa-drafting-compass:before{content:""}.fa-compress:before{content:""}.fa-computer-mouse:before,.fa-mouse:before{content:""}.fa-cookie:before{content:""}.fa-cookie-bite:before{content:""}.fa-copy:before{content:""}.fa-copyright:before{content:""}.fa-couch:before{content:""}.fa-credit-card-alt:before,.fa-credit-card:before{content:""}.fa-crop:before{content:""}.fa-crop-alt:before,.fa-crop-simple:before{content:""}.fa-cross:before{content:""}.fa-crosshairs:before{content:""}.fa-crow:before{content:""}.fa-crown:before{content:""}.fa-crutch:before{content:""}.fa-cruzeiro-sign:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-d:before{content:"D"}.fa-database:before{content:""}.fa-backspace:before,.fa-delete-left:before{content:""}.fa-democrat:before{content:""}.fa-desktop-alt:before,.fa-desktop:before{content:""}.fa-dharmachakra:before{content:""}.fa-diagram-next:before{content:""}.fa-diagram-predecessor:before{content:""}.fa-diagram-project:before,.fa-project-diagram:before{content:""}.fa-diagram-successor:before{content:""}.fa-diamond:before{content:""}.fa-diamond-turn-right:before,.fa-directions:before{content:""}.fa-dice:before{content:""}.fa-dice-d20:before{content:""}.fa-dice-d6:before{content:""}.fa-dice-five:before{content:""}.fa-dice-four:before{content:""}.fa-dice-one:before{content:""}.fa-dice-six:before{content:""}.fa-dice-three:before{content:""}.fa-dice-two:before{content:""}.fa-disease:before{content:""}.fa-divide:before{content:""}.fa-dna:before{content:""}.fa-dog:before{content:""}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"$"}.fa-dolly-box:before,.fa-dolly:before{content:""}.fa-dong-sign:before{content:""}.fa-door-closed:before{content:""}.fa-door-open:before{content:""}.fa-dove:before{content:""}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:""}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:""}.fa-download:before{content:""}.fa-dragon:before{content:""}.fa-draw-polygon:before{content:""}.fa-droplet:before,.fa-tint:before{content:""}.fa-droplet-slash:before,.fa-tint-slash:before{content:""}.fa-drum:before{content:""}.fa-drum-steelpan:before{content:""}.fa-drumstick-bite:before{content:""}.fa-dumbbell:before{content:""}.fa-dumpster:before{content:""}.fa-dumpster-fire:before{content:""}.fa-dungeon:before{content:""}.fa-e:before{content:"E"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:""}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:""}.fa-earth-africa:before,.fa-globe-africa:before{content:""}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:""}.fa-earth-asia:before,.fa-globe-asia:before{content:""}.fa-earth-europe:before,.fa-globe-europe:before{content:""}.fa-earth-oceania:before,.fa-globe-oceania:before{content:""}.fa-egg:before{content:""}.fa-eject:before{content:""}.fa-elevator:before{content:""}.fa-ellipsis-h:before,.fa-ellipsis:before{content:""}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:""}.fa-envelope:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-text:before{content:""}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:""}.fa-equals:before{content:"="}.fa-eraser:before{content:""}.fa-ethernet:before{content:""}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:""}.fa-exclamation:before{content:"!"}.fa-expand:before{content:""}.fa-eye:before{content:""}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:""}.fa-eye-low-vision:before,.fa-low-vision:before{content:""}.fa-eye-slash:before{content:""}.fa-f:before{content:"F"}.fa-angry:before,.fa-face-angry:before{content:""}.fa-dizzy:before,.fa-face-dizzy:before{content:""}.fa-face-flushed:before,.fa-flushed:before{content:""}.fa-face-frown:before,.fa-frown:before{content:""}.fa-face-frown-open:before,.fa-frown-open:before{content:""}.fa-face-grimace:before,.fa-grimace:before{content:""}.fa-face-grin:before,.fa-grin:before{content:""}.fa-face-grin-beam:before,.fa-grin-beam:before{content:""}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:""}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:""}.fa-face-grin-squint:before,.fa-grin-squint:before{content:""}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:""}.fa-face-grin-stars:before,.fa-grin-stars:before{content:""}.fa-face-grin-tears:before,.fa-grin-tears:before{content:""}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:""}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:""}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:""}.fa-face-grin-wide:before,.fa-grin-alt:before{content:""}.fa-face-grin-wink:before,.fa-grin-wink:before{content:""}.fa-face-kiss:before,.fa-kiss:before{content:""}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:""}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:""}.fa-face-laugh:before,.fa-laugh:before{content:""}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:""}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:""}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:""}.fa-face-meh:before,.fa-meh:before{content:""}.fa-face-meh-blank:before,.fa-meh-blank:before{content:""}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:""}.fa-face-sad-cry:before,.fa-sad-cry:before{content:""}.fa-face-sad-tear:before,.fa-sad-tear:before{content:""}.fa-face-smile:before,.fa-smile:before{content:""}.fa-face-smile-beam:before,.fa-smile-beam:before{content:""}.fa-face-smile-wink:before,.fa-smile-wink:before{content:""}.fa-face-surprise:before,.fa-surprise:before{content:""}.fa-face-tired:before,.fa-tired:before{content:""}.fa-fan:before{content:""}.fa-faucet:before{content:""}.fa-fax:before{content:""}.fa-feather:before{content:""}.fa-feather-alt:before,.fa-feather-pointed:before{content:""}.fa-file:before{content:""}.fa-file-arrow-down:before,.fa-file-download:before{content:""}.fa-file-arrow-up:before,.fa-file-upload:before{content:""}.fa-file-audio:before{content:""}.fa-file-code:before{content:""}.fa-file-contract:before{content:""}.fa-file-csv:before{content:""}.fa-file-excel:before{content:""}.fa-arrow-right-from-file:before,.fa-file-export:before{content:""}.fa-file-image:before{content:""}.fa-arrow-right-to-file:before,.fa-file-import:before{content:""}.fa-file-invoice:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:""}.fa-file-medical:before{content:""}.fa-file-pdf:before{content:""}.fa-file-powerpoint:before{content:""}.fa-file-prescription:before{content:""}.fa-file-signature:before{content:""}.fa-file-video:before{content:""}.fa-file-medical-alt:before,.fa-file-waveform:before{content:""}.fa-file-word:before{content:""}.fa-file-archive:before,.fa-file-zipper:before{content:""}.fa-fill:before{content:""}.fa-fill-drip:before{content:""}.fa-film:before{content:""}.fa-filter:before{content:""}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:""}.fa-filter-circle-xmark:before{content:""}.fa-fingerprint:before{content:""}.fa-fire:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:""}.fa-burn:before,.fa-fire-flame-simple:before{content:""}.fa-fish:before{content:""}.fa-flag:before{content:""}.fa-flag-checkered:before{content:""}.fa-flag-usa:before{content:""}.fa-flask:before{content:""}.fa-floppy-disk:before,.fa-save:before{content:""}.fa-florin-sign:before{content:""}.fa-folder:before{content:""}.fa-folder-minus:before{content:""}.fa-folder-open:before{content:""}.fa-folder-plus:before{content:""}.fa-folder-tree:before{content:""}.fa-font:before{content:""}.fa-football-ball:before,.fa-football:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before,.fa-forward-fast:before{content:""}.fa-forward-step:before,.fa-step-forward:before{content:""}.fa-franc-sign:before{content:""}.fa-frog:before{content:""}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:""}.fa-g:before{content:"G"}.fa-gamepad:before{content:""}.fa-gas-pump:before{content:""}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:""}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:""}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:""}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-gem:before{content:""}.fa-genderless:before{content:""}.fa-ghost:before{content:""}.fa-gift:before{content:""}.fa-gifts:before{content:""}.fa-glasses:before{content:""}.fa-globe:before{content:""}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:""}.fa-gopuram:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-greater-than:before{content:">"}.fa-greater-than-equal:before{content:""}.fa-grip-horizontal:before,.fa-grip:before{content:""}.fa-grip-lines:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-grip-vertical:before{content:""}.fa-guarani-sign:before{content:""}.fa-guitar:before{content:""}.fa-gun:before{content:""}.fa-h:before{content:"H"}.fa-hammer:before{content:""}.fa-hamsa:before{content:""}.fa-hand-paper:before,.fa-hand:before{content:""}.fa-hand-back-fist:before,.fa-hand-rock:before{content:""}.fa-allergies:before,.fa-hand-dots:before{content:""}.fa-fist-raised:before,.fa-hand-fist:before{content:""}.fa-hand-holding:before{content:""}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:""}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-hand-holding-medical:before{content:""}.fa-hand-lizard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-hand-peace:before{content:""}.fa-hand-point-down:before{content:""}.fa-hand-point-left:before{content:""}.fa-hand-point-right:before{content:""}.fa-hand-point-up:before{content:""}.fa-hand-pointer:before{content:""}.fa-hand-scissors:before{content:""}.fa-hand-sparkles:before{content:""}.fa-hand-spock:before{content:""}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:""}.fa-hands-bubbles:before,.fa-hands-wash:before{content:""}.fa-hands-clapping:before{content:""}.fa-hands-holding:before{content:""}.fa-hands-praying:before,.fa-praying-hands:before{content:""}.fa-handshake:before{content:""}.fa-hands-helping:before,.fa-handshake-angle:before{content:""}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:""}.fa-handshake-slash:before{content:""}.fa-hanukiah:before{content:""}.fa-hard-drive:before,.fa-hdd:before{content:""}.fa-hashtag:before{content:"#"}.fa-hat-cowboy:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-hat-wizard:before{content:""}.fa-head-side-cough:before{content:""}.fa-head-side-cough-slash:before{content:""}.fa-head-side-mask:before{content:""}.fa-head-side-virus:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-headphones:before{content:""}.fa-headphones-alt:before,.fa-headphones-simple:before{content:""}.fa-headset:before{content:""}.fa-heart:before{content:""}.fa-heart-broken:before,.fa-heart-crack:before{content:""}.fa-heart-pulse:before,.fa-heartbeat:before{content:""}.fa-helicopter:before{content:""}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:""}.fa-highlighter:before{content:""}.fa-hippo:before{content:""}.fa-hockey-puck:before{content:""}.fa-holly-berry:before{content:""}.fa-horse:before{content:""}.fa-horse-head:before{content:""}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:""}.fa-hospital-user:before{content:""}.fa-hot-tub-person:before,.fa-hot-tub:before{content:""}.fa-hotdog:before{content:""}.fa-hotel:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before,.fa-hourglass:before{content:""}.fa-hourglass-empty:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:""}.fa-home-lg:before,.fa-house-chimney:before{content:""}.fa-house-chimney-crack:before,.fa-house-damage:before{content:""}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:""}.fa-house-chimney-user:before{content:""}.fa-house-chimney-window:before{content:""}.fa-house-crack:before{content:""}.fa-house-laptop:before,.fa-laptop-house:before{content:""}.fa-house-medical:before{content:""}.fa-home-user:before,.fa-house-user:before{content:""}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:""}.fa-i:before{content:"I"}.fa-i-cursor:before{content:""}.fa-ice-cream:before{content:""}.fa-icicles:before{content:""}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-id-card-alt:before,.fa-id-card-clip:before{content:""}.fa-igloo:before{content:""}.fa-image:before{content:""}.fa-image-portrait:before,.fa-portrait:before{content:""}.fa-images:before{content:""}.fa-inbox:before{content:""}.fa-indent:before{content:""}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:""}.fa-industry:before{content:""}.fa-infinity:before{content:""}.fa-info:before{content:""}.fa-italic:before{content:""}.fa-j:before{content:"J"}.fa-jedi:before{content:""}.fa-fighter-jet:before,.fa-jet-fighter:before{content:""}.fa-joint:before{content:""}.fa-k:before{content:"K"}.fa-kaaba:before{content:""}.fa-key:before{content:""}.fa-keyboard:before{content:""}.fa-khanda:before{content:""}.fa-kip-sign:before{content:""}.fa-first-aid:before,.fa-kit-medical:before{content:""}.fa-kiwi-bird:before{content:""}.fa-l:before{content:"L"}.fa-landmark:before{content:""}.fa-language:before{content:""}.fa-laptop:before{content:""}.fa-laptop-code:before{content:""}.fa-laptop-medical:before{content:""}.fa-lari-sign:before{content:""}.fa-layer-group:before{content:""}.fa-leaf:before{content:""}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:""}.fa-arrows-alt-h:before,.fa-left-right:before{content:""}.fa-lemon:before{content:""}.fa-less-than:before{content:"<"}.fa-less-than-equal:before{content:""}.fa-life-ring:before{content:""}.fa-lightbulb:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:""}.fa-lira-sign:before{content:""}.fa-list-squares:before,.fa-list:before{content:""}.fa-list-check:before,.fa-tasks:before{content:""}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:""}.fa-list-dots:before,.fa-list-ul:before{content:""}.fa-litecoin-sign:before{content:""}.fa-location-arrow:before{content:""}.fa-location-crosshairs:before,.fa-location:before{content:""}.fa-location-dot:before,.fa-map-marker-alt:before{content:""}.fa-location-pin:before,.fa-map-marker:before{content:""}.fa-lock:before{content:""}.fa-lock-open:before{content:""}.fa-lungs:before{content:""}.fa-lungs-virus:before{content:""}.fa-m:before{content:"M"}.fa-magnet:before{content:""}.fa-magnifying-glass:before,.fa-search:before{content:""}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:""}.fa-magnifying-glass-location:before,.fa-search-location:before{content:""}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:""}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:""}.fa-manat-sign:before{content:""}.fa-map:before{content:""}.fa-map-location:before,.fa-map-marked:before{content:""}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:""}.fa-map-pin:before{content:""}.fa-marker:before{content:""}.fa-mars:before{content:""}.fa-mars-and-venus:before{content:""}.fa-mars-double:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:""}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:""}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:""}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:""}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:""}.fa-mask:before{content:""}.fa-mask-face:before{content:""}.fa-masks-theater:before,.fa-theater-masks:before{content:""}.fa-expand-arrows-alt:before,.fa-maximize:before{content:""}.fa-medal:before{content:""}.fa-memory:before{content:""}.fa-menorah:before{content:""}.fa-mercury:before{content:""}.fa-comment-alt:before,.fa-message:before{content:""}.fa-meteor:before{content:""}.fa-microchip:before{content:""}.fa-microphone:before{content:""}.fa-microphone-alt:before,.fa-microphone-lines:before{content:""}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:""}.fa-microphone-slash:before{content:""}.fa-microscope:before{content:""}.fa-mill-sign:before{content:""}.fa-compress-arrows-alt:before,.fa-minimize:before{content:""}.fa-minus:before,.fa-subtract:before{content:""}.fa-mitten:before{content:""}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-mobile-button:before{content:""}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:""}.fa-money-bill:before{content:""}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:""}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:""}.fa-money-bill-wave:before{content:""}.fa-money-check:before{content:""}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:""}.fa-monument:before{content:""}.fa-moon:before{content:""}.fa-mortar-pestle:before{content:""}.fa-mosque:before{content:""}.fa-motorcycle:before{content:""}.fa-mountain:before{content:""}.fa-mug-hot:before{content:""}.fa-coffee:before,.fa-mug-saucer:before{content:""}.fa-music:before{content:""}.fa-n:before{content:"N"}.fa-naira-sign:before{content:""}.fa-network-wired:before{content:""}.fa-neuter:before{content:""}.fa-newspaper:before{content:""}.fa-not-equal:before{content:""}.fa-note-sticky:before,.fa-sticky-note:before{content:""}.fa-notes-medical:before{content:""}.fa-o:before{content:"O"}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-oil-can:before{content:""}.fa-om:before{content:""}.fa-otter:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-p:before{content:"P"}.fa-pager:before{content:""}.fa-paint-roller:before{content:""}.fa-paint-brush:before,.fa-paintbrush:before{content:""}.fa-palette:before{content:""}.fa-pallet:before{content:""}.fa-panorama:before{content:""}.fa-paper-plane:before{content:""}.fa-paperclip:before{content:""}.fa-parachute-box:before{content:""}.fa-paragraph:before{content:""}.fa-passport:before{content:""}.fa-file-clipboard:before,.fa-paste:before{content:""}.fa-pause:before{content:""}.fa-paw:before{content:""}.fa-peace:before{content:""}.fa-pen:before{content:""}.fa-pen-alt:before,.fa-pen-clip:before{content:""}.fa-pen-fancy:before{content:""}.fa-pen-nib:before{content:""}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:""}.fa-edit:before,.fa-pen-to-square:before{content:""}.fa-pencil-alt:before,.fa-pencil:before{content:""}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:""}.fa-people-carry-box:before,.fa-people-carry:before{content:""}.fa-pepper-hot:before{content:""}.fa-percent:before,.fa-percentage:before{content:"%"}.fa-male:before,.fa-person:before{content:""}.fa-biking:before,.fa-person-biking:before{content:""}.fa-person-booth:before{content:""}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:""}.fa-female:before,.fa-person-dress:before{content:""}.fa-hiking:before,.fa-person-hiking:before{content:""}.fa-person-praying:before,.fa-pray:before{content:""}.fa-person-running:before,.fa-running:before{content:""}.fa-person-skating:before,.fa-skating:before{content:""}.fa-person-skiing:before,.fa-skiing:before{content:""}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:""}.fa-person-snowboarding:before,.fa-snowboarding:before{content:""}.fa-person-swimming:before,.fa-swimmer:before{content:""}.fa-person-walking:before,.fa-walking:before{content:""}.fa-blind:before,.fa-person-walking-with-cane:before{content:""}.fa-peseta-sign:before{content:""}.fa-peso-sign:before{content:""}.fa-phone:before{content:""}.fa-phone-alt:before,.fa-phone-flip:before{content:""}.fa-phone-slash:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-photo-film:before,.fa-photo-video:before{content:""}.fa-piggy-bank:before{content:""}.fa-pills:before{content:""}.fa-pizza-slice:before{content:""}.fa-place-of-worship:before{content:""}.fa-plane:before{content:""}.fa-plane-arrival:before{content:""}.fa-plane-departure:before{content:""}.fa-plane-slash:before{content:""}.fa-play:before{content:""}.fa-plug:before{content:""}.fa-add:before,.fa-plus:before{content:"+"}.fa-plus-minus:before{content:""}.fa-podcast:before{content:""}.fa-poo:before{content:""}.fa-poo-bolt:before,.fa-poo-storm:before{content:""}.fa-poop:before{content:""}.fa-power-off:before{content:""}.fa-prescription:before{content:""}.fa-prescription-bottle:before{content:""}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:""}.fa-print:before{content:""}.fa-pump-medical:before{content:""}.fa-pump-soap:before{content:""}.fa-puzzle-piece:before{content:""}.fa-q:before{content:"Q"}.fa-qrcode:before{content:""}.fa-question:before{content:"?"}.fa-quote-left-alt:before,.fa-quote-left:before{content:""}.fa-quote-right-alt:before,.fa-quote-right:before{content:""}.fa-r:before{content:"R"}.fa-radiation:before{content:""}.fa-rainbow:before{content:""}.fa-receipt:before{content:""}.fa-record-vinyl:before{content:""}.fa-ad:before,.fa-rectangle-ad:before{content:""}.fa-list-alt:before,.fa-rectangle-list:before{content:""}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-recycle:before{content:""}.fa-registered:before{content:""}.fa-repeat:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-republican:before{content:""}.fa-restroom:before{content:""}.fa-retweet:before{content:""}.fa-ribbon:before{content:""}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:""}.fa-exchange-alt:before,.fa-right-left:before{content:""}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:""}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:""}.fa-ring:before{content:""}.fa-road:before{content:""}.fa-robot:before{content:""}.fa-rocket:before{content:""}.fa-rotate:before,.fa-sync-alt:before{content:""}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:""}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:""}.fa-route:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:""}.fa-ruler:before{content:""}.fa-ruler-combined:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-ruler-vertical:before{content:""}.fa-rupee-sign:before,.fa-rupee:before{content:""}.fa-rupiah-sign:before{content:""}.fa-s:before{content:"S"}.fa-sailboat:before{content:""}.fa-satellite:before{content:""}.fa-satellite-dish:before{content:""}.fa-balance-scale:before,.fa-scale-balanced:before{content:""}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:""}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:""}.fa-school:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-screwdriver:before{content:""}.fa-screwdriver-wrench:before,.fa-tools:before{content:""}.fa-scroll:before{content:""}.fa-scroll-torah:before,.fa-torah:before{content:""}.fa-sd-card:before{content:""}.fa-section:before{content:""}.fa-seedling:before,.fa-sprout:before{content:""}.fa-server:before{content:""}.fa-shapes:before,.fa-triangle-circle-square:before{content:""}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:""}.fa-share-from-square:before,.fa-share-square:before{content:""}.fa-share-alt:before,.fa-share-nodes:before{content:""}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:""}.fa-shield:before{content:""}.fa-shield-alt:before,.fa-shield-blank:before{content:""}.fa-shield-virus:before{content:""}.fa-ship:before{content:""}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:""}.fa-shoe-prints:before{content:""}.fa-shop:before,.fa-store-alt:before{content:""}.fa-shop-slash:before,.fa-store-alt-slash:before{content:""}.fa-shower:before{content:""}.fa-shrimp:before{content:""}.fa-random:before,.fa-shuffle:before{content:""}.fa-shuttle-space:before,.fa-space-shuttle:before{content:""}.fa-sign-hanging:before,.fa-sign:before{content:""}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:""}.fa-signature:before{content:""}.fa-map-signs:before,.fa-signs-post:before{content:""}.fa-sim-card:before{content:""}.fa-sink:before{content:""}.fa-sitemap:before{content:""}.fa-skull:before{content:""}.fa-skull-crossbones:before{content:""}.fa-slash:before{content:""}.fa-sleigh:before{content:""}.fa-sliders-h:before,.fa-sliders:before{content:""}.fa-smog:before{content:""}.fa-smoking:before{content:""}.fa-snowflake:before{content:""}.fa-snowman:before{content:""}.fa-snowplow:before{content:""}.fa-soap:before{content:""}.fa-socks:before{content:""}.fa-solar-panel:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-spa:before{content:""}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:""}.fa-spell-check:before{content:""}.fa-spider:before{content:""}.fa-spinner:before{content:""}.fa-splotch:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-spray-can:before{content:""}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:""}.fa-square:before{content:""}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:""}.fa-caret-square-down:before,.fa-square-caret-down:before{content:""}.fa-caret-square-left:before,.fa-square-caret-left:before{content:""}.fa-caret-square-right:before,.fa-square-caret-right:before{content:""}.fa-caret-square-up:before,.fa-square-caret-up:before{content:""}.fa-check-square:before,.fa-square-check:before{content:""}.fa-envelope-square:before,.fa-square-envelope:before{content:""}.fa-square-full:before{content:""}.fa-h-square:before,.fa-square-h:before{content:""}.fa-minus-square:before,.fa-square-minus:before{content:""}.fa-parking:before,.fa-square-parking:before{content:""}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:""}.fa-phone-square:before,.fa-square-phone:before{content:""}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:""}.fa-plus-square:before,.fa-square-plus:before{content:""}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:""}.fa-poll:before,.fa-square-poll-vertical:before{content:""}.fa-square-root-alt:before,.fa-square-root-variable:before{content:""}.fa-rss-square:before,.fa-square-rss:before{content:""}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:""}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:""}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:""}.fa-stairs:before{content:""}.fa-stamp:before{content:""}.fa-star:before{content:""}.fa-star-and-crescent:before{content:""}.fa-star-half:before{content:""}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:""}.fa-star-of-david:before{content:""}.fa-star-of-life:before{content:""}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:""}.fa-stethoscope:before{content:""}.fa-stop:before{content:""}.fa-stopwatch:before{content:""}.fa-stopwatch-20:before{content:""}.fa-store:before{content:""}.fa-store-slash:before{content:""}.fa-street-view:before{content:""}.fa-strikethrough:before{content:""}.fa-stroopwafel:before{content:""}.fa-subscript:before{content:""}.fa-suitcase:before{content:""}.fa-medkit:before,.fa-suitcase-medical:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-sun:before{content:""}.fa-superscript:before{content:""}.fa-swatchbook:before{content:""}.fa-synagogue:before{content:""}.fa-syringe:before{content:""}.fa-t:before{content:"T"}.fa-table:before{content:""}.fa-table-cells:before,.fa-th:before{content:""}.fa-table-cells-large:before,.fa-th-large:before{content:""}.fa-columns:before,.fa-table-columns:before{content:""}.fa-table-list:before,.fa-th-list:before{content:""}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:""}.fa-tablet-android:before,.fa-tablet:before{content:""}.fa-tablet-button:before{content:""}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:""}.fa-tablets:before{content:""}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-tape:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-teeth:before{content:""}.fa-teeth-open:before{content:""}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:""}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-temperature-high:before{content:""}.fa-temperature-low:before{content:""}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-tenge-sign:before,.fa-tenge:before{content:""}.fa-terminal:before{content:""}.fa-text-height:before{content:""}.fa-remove-format:before,.fa-text-slash:before{content:""}.fa-text-width:before{content:""}.fa-thermometer:before{content:""}.fa-thumbs-down:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumb-tack:before,.fa-thumbtack:before{content:""}.fa-ticket:before{content:""}.fa-ticket-alt:before,.fa-ticket-simple:before{content:""}.fa-timeline:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-toilet:before{content:""}.fa-toilet-paper:before{content:""}.fa-toilet-paper-slash:before{content:""}.fa-toolbox:before{content:""}.fa-tooth:before{content:""}.fa-torii-gate:before{content:""}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:""}.fa-tractor:before{content:""}.fa-trademark:before{content:""}.fa-traffic-light:before{content:""}.fa-trailer:before{content:""}.fa-train:before{content:""}.fa-subway:before,.fa-train-subway:before{content:""}.fa-train-tram:before,.fa-tram:before{content:""}.fa-transgender-alt:before,.fa-transgender:before{content:""}.fa-trash:before{content:""}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:""}.fa-trash-alt:before,.fa-trash-can:before{content:""}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:""}.fa-tree:before{content:""}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:""}.fa-trophy:before{content:""}.fa-truck:before{content:""}.fa-shipping-fast:before,.fa-truck-fast:before{content:""}.fa-ambulance:before,.fa-truck-medical:before{content:""}.fa-truck-monster:before{content:""}.fa-truck-moving:before{content:""}.fa-truck-pickup:before{content:""}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:""}.fa-teletype:before,.fa-tty:before{content:""}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:""}.fa-level-down-alt:before,.fa-turn-down:before{content:""}.fa-level-up-alt:before,.fa-turn-up:before{content:""}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:""}.fa-u:before{content:"U"}.fa-umbrella:before{content:""}.fa-umbrella-beach:before{content:""}.fa-underline:before{content:""}.fa-universal-access:before{content:""}.fa-unlock:before{content:""}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:""}.fa-arrows-alt-v:before,.fa-up-down:before{content:""}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:""}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:""}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:""}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:""}.fa-upload:before{content:""}.fa-user:before{content:""}.fa-user-astronaut:before{content:""}.fa-user-check:before{content:""}.fa-user-clock:before{content:""}.fa-user-doctor:before,.fa-user-md:before{content:""}.fa-user-cog:before,.fa-user-gear:before{content:""}.fa-user-graduate:before{content:""}.fa-user-friends:before,.fa-user-group:before{content:""}.fa-user-injured:before{content:""}.fa-user-alt:before,.fa-user-large:before{content:""}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:""}.fa-user-lock:before{content:""}.fa-user-minus:before{content:""}.fa-user-ninja:before{content:""}.fa-user-nurse:before{content:""}.fa-user-edit:before,.fa-user-pen:before{content:""}.fa-user-plus:before{content:""}.fa-user-secret:before{content:""}.fa-user-shield:before{content:""}.fa-user-slash:before{content:""}.fa-user-tag:before{content:""}.fa-user-tie:before{content:""}.fa-user-times:before,.fa-user-xmark:before{content:""}.fa-users:before{content:""}.fa-users-cog:before,.fa-users-gear:before{content:""}.fa-users-slash:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-v:before{content:"V"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:""}.fa-vault:before{content:""}.fa-vector-square:before{content:""}.fa-venus:before{content:""}.fa-venus-double:before{content:""}.fa-venus-mars:before{content:""}.fa-vest:before{content:""}.fa-vest-patches:before{content:""}.fa-vial:before{content:""}.fa-vials:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-video-slash:before{content:""}.fa-vihara:before{content:""}.fa-virus:before{content:""}.fa-virus-covid:before{content:""}.fa-virus-covid-slash:before{content:""}.fa-virus-slash:before{content:""}.fa-viruses:before{content:""}.fa-voicemail:before{content:""}.fa-volleyball-ball:before,.fa-volleyball:before{content:""}.fa-volume-high:before,.fa-volume-up:before{content:""}.fa-volume-down:before,.fa-volume-low:before{content:""}.fa-volume-off:before{content:""}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:""}.fa-vr-cardboard:before{content:""}.fa-w:before{content:"W"}.fa-wallet:before{content:""}.fa-magic:before,.fa-wand-magic:before{content:""}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:""}.fa-wand-sparkles:before{content:""}.fa-warehouse:before{content:""}.fa-water:before{content:""}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:""}.fa-wave-square:before{content:""}.fa-weight-hanging:before{content:""}.fa-weight-scale:before,.fa-weight:before{content:""}.fa-wheelchair:before{content:""}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:""}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:""}.fa-wind:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-wine-bottle:before{content:""}.fa-wine-glass:before{content:""}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:""}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:""}.fa-wrench:before{content:""}.fa-x:before{content:"X"}.fa-x-ray:before{content:""}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:""}.fa-y:before{content:"Y"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:""}.fa-yin-yang:before{content:""}.fa-z:before{content:"Z"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}/*!
  * Font Awesome Free 6.0.0 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
  * Copyright 2022 Fonticons, Inc.
diff --git a/packages/modules/web_themes/colors/web/assets/index-OBHjRVxr.js b/packages/modules/web_themes/colors/web/assets/index-OBHjRVxr.js
new file mode 100644
index 0000000000..2b78685b87
--- /dev/null
+++ b/packages/modules/web_themes/colors/web/assets/index-OBHjRVxr.js
@@ -0,0 +1,6 @@
+var Za=Object.defineProperty;var Xa=(t,e,a)=>e in t?Za(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var _=(t,e,a)=>Xa(t,typeof e!="symbol"?e+"":e,a);import{r as ie,m as Ka,a as X,c as p,i as eo,e as Be,u as Ut,t as Qe,b as Ft,s as de,d as O,p as ma,f as va,w as to,o as l,g as m,h as x,j as o,n as N,k as $,l as w,q as he,v as y,x as z,y as i,z as b,F as G,A as K,B as fa,C as Ze,D as pt,E as et,G as tt,H as st,I as it,J as ot,K as ao,L as bt,M as Z,N as oo,O as Ve,P as oe,Q as ne,R as gt,S as no,T as ro,U as so,V as io,W as _a,X as lo,Y as co,Z as uo,_ as ho,$ as po,a0 as go,a1 as mo,a2 as vo,a3 as fo}from"./vendor-Cj6hjtXS.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const h of s.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&n(h)}).observe(document,{childList:!0,subtree:!0});function a(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(r){if(r.ep)return;r.ep=!0;const s=a(r);fetch(r.href,s)}})();var fe=(t=>(t.instant_charging="instant_charging",t.pv_charging="pv_charging",t.scheduled_charging="scheduled_charging",t.standby="standby",t.stop="stop",t))(fe||{});class ba{constructor(e){_(this,"id");_(this,"name","Wechselrichter");_(this,"color","var(--color-pv)");_(this,"power",0);_(this,"energy",0);_(this,"energy_month",0);_(this,"energy_year",0);_(this,"energy_total",0);this.id=e}}const _o=[["EV","ev_mode"],["Speicher","bat_mode"],["MinSoc","min_soc_bat_mode"]];class bo{constructor(e){_(this,"id");_(this,"name","Gerät");_(this,"power",0);_(this,"status","off");_(this,"energy",0);_(this,"runningTime",0);_(this,"configured",!1);_(this,"_showInGraph",!0);_(this,"color","white");_(this,"canSwitch",!1);_(this,"countAsHouse",!1);_(this,"energyPv",0);_(this,"energyBat",0);_(this,"pvPercentage",0);_(this,"tempConfigured",0);_(this,"temp",[300,300,300]);_(this,"on",!1);_(this,"isAutomatic",!0);_(this,"icon","");this.id=e}get showInGraph(){return this._showInGraph}set showInGraph(e){this._showInGraph=e,A.items["sh"+this.id].showInGraph=e,re()}setShowInGraph(e){this._showInGraph=e}}const ae=ie(new Map);function qt(t){ae.has(t)?console.info("Duplicate sh device message: "+t):(ae.set(t,new bo(t)),ae.get(t).color="var(--color-sh"+ae.size+")")}const yo=0,ya={host:location.hostname,port:location.protocol=="https:"?443:80,endpoint:"/ws",protocol:location.protocol=="https:"?"wss":"ws",connectTimeout:4e3,reconnectPeriod:4e3,clean:!1,clientId:Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,6)},yt={topic:"",qos:yo};let Ce;const{host:wo,port:ko,endpoint:So,...wa}=ya,na=`${wa.protocol}://${wo}:${ko}${So}`;try{console.debug("connectURL",na),Ce=Ka.connect(na,wa),Ce.on("connect",()=>{console.info("MQTT connection successful")}),Ce.on("disconnect",()=>{console.info("MQTT disconnected")}),Ce.on("error",t=>{console.error("MQTT connection failed: ",t)})}catch(t){console.error("MQTT connect error: ",t)}function xo(t){Ce?Ce.on("message",t):console.error("MqttRegister: MQTT client not available")}function qe(t){yt.topic=t;const{topic:e,qos:a}=yt;Ce.subscribe(e,{qos:a},n=>{if(n){console.error("MQTT Subscription error: "+n);return}})}function at(t){yt.topic=t;const{topic:e}=yt;Ce.unsubscribe(e,a=>{if(a){console.error("MQTT Unsubscribe from "+t+" failed: "+a);return}})}async function Nt(t,e){let n=Ce.connected,r=0;for(;!n&&r<20;)console.warn("MQTT publish: Not connected. Waiting 0.1 seconds"),await $o(100),n=Ce.connected,r+=1;if(r<20)try{Ce.publish(t,e,{qos:0},s=>{s&&console.warn("MQTT publish error: ",s),console.info("MQTT publish: Message sent: ["+t+"]("+e+")")})}catch(s){console.warn("MQTT publish: caught error: "+s)}else console.error("MQTT publish: Lost connection to MQTT server. Please reload the page")}function Yt(){return ya.clientId}function $o(t){return new Promise(e=>setTimeout(e,t))}class Mo{constructor(e){_(this,"id");_(this,"name","Ladepunkt");_(this,"icon","Ladepunkt");_(this,"type","");_(this,"ev",0);_(this,"template",0);_(this,"connectedPhases",0);_(this,"phase_1",0);_(this,"autoPhaseSwitchHw",!1);_(this,"controlPilotInterruptionHw",!1);_(this,"isEnabled",!0);_(this,"isPluggedIn",!1);_(this,"isCharging",!1);_(this,"_isLocked",!1);_(this,"_connectedVehicle",0);_(this,"chargeTemplate",0);_(this,"evTemplate",0);_(this,"_chargeMode",fe.pv_charging);_(this,"_hasPriority",!1);_(this,"currentPlan","");_(this,"averageConsumption",0);_(this,"vehicleName","");_(this,"rangeCharged",0);_(this,"rangeUnit","");_(this,"counter",0);_(this,"dailyYield",0);_(this,"energyPv",0);_(this,"energyBat",0);_(this,"pvPercentage",0);_(this,"faultState",0);_(this,"faultStr","");_(this,"phasesInUse",0);_(this,"power",0);_(this,"chargedSincePlugged",0);_(this,"stateStr","");_(this,"current",0);_(this,"currents",[0,0,0]);_(this,"phasesToUse",0);_(this,"isSocConfigured",!0);_(this,"isSocManual",!1);_(this,"waitingForSoc",!1);_(this,"color","white");_(this,"_timedCharging",!1);_(this,"_instantChargeLimitMode","");_(this,"_instantTargetCurrent",0);_(this,"_instantTargetSoc",0);_(this,"_instantMaxEnergy",0);_(this,"_pvFeedInLimit",!1);_(this,"_pvMinCurrent",0);_(this,"_pvMaxSoc",0);_(this,"_pvMinSoc",0);_(this,"_pvMinSocCurrent",0);_(this,"_etActive",!1);_(this,"_etMaxPrice",20);this.id=e}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e,ee("cpLock",e,this.id)}updateIsLocked(e){this._isLocked=e}get connectedVehicle(){return this._connectedVehicle}set connectedVehicle(e){this._connectedVehicle=e,ee("cpVehicle",e,this.id)}updateConnectedVehicle(e){this._connectedVehicle=e}get soc(){return Y[this.connectedVehicle]?Y[this.connectedVehicle].soc:0}set soc(e){Y[this.connectedVehicle]&&(Y[this.connectedVehicle].soc=e)}get chargeMode(){return this._chargeMode}set chargeMode(e){this._chargeMode=e,ee("chargeMode",e,this.id)}updateChargeMode(e){this._chargeMode=e}get hasPriority(){return this._hasPriority}set hasPriority(e){this._hasPriority=e,ee("cpPriority",e,this.id)}updateCpPriority(e){this._hasPriority=e}get timedCharging(){return ye[this.chargeTemplate]?ye[this.chargeTemplate].time_charging.active:!1}set timedCharging(e){ye[this.chargeTemplate].time_charging.active=e,ee("cpTimedCharging",e,this.chargeTemplate)}get instantTargetCurrent(){return this._instantTargetCurrent}set instantTargetCurrent(e){this._instantTargetCurrent=e,ee("cpInstantTargetCurrent",e,this.id)}updateInstantTargetCurrent(e){this._instantTargetCurrent=e}get instantChargeLimitMode(){return this._instantChargeLimitMode}set instantChargeLimitMode(e){this._instantChargeLimitMode=e,ee("cpInstantChargeLimitMode",e,this.id)}updateInstantChargeLimitMode(e){this._instantChargeLimitMode=e}get instantTargetSoc(){return this._instantTargetSoc}set instantTargetSoc(e){this._instantTargetSoc=e,ee("cpInstantTargetSoc",e,this.id)}updateInstantTargetSoc(e){this._instantTargetSoc=e}get instantMaxEnergy(){return this._instantMaxEnergy}set instantMaxEnergy(e){this._instantMaxEnergy=e,ee("cpInstantMaxEnergy",e,this.id)}updateInstantMaxEnergy(e){this._instantMaxEnergy=e}get pvFeedInLimit(){return this._pvFeedInLimit}set pvFeedInLimit(e){this._pvFeedInLimit=e,ee("cpPvFeedInLimit",e,this.id)}updatePvFeedInLimit(e){this._pvFeedInLimit=e}get pvMinCurrent(){return this._pvMinCurrent}set pvMinCurrent(e){this._pvMinCurrent=e,ee("cpPvMinCurrent",e,this.id)}updatePvMinCurrent(e){this._pvMinCurrent=e}get pvMaxSoc(){return this._pvMaxSoc}set pvMaxSoc(e){this._pvMaxSoc=e,ee("cpPvMaxSoc",e,this.id)}updatePvMaxSoc(e){this._pvMaxSoc=e}get pvMinSoc(){return this._pvMinSoc}set pvMinSoc(e){this._pvMinSoc=e,ee("cpPvMinSoc",e,this.id)}updatePvMinSoc(e){this._pvMinSoc=e}get pvMinSocCurrent(){return this._pvMinSocCurrent}set pvMinSocCurrent(e){this._pvMinSocCurrent=e,ee("cpPvMinSocCurrent",e,this.id)}updatePvMinSocCurrent(e){this._pvMinSocCurrent=e}get realCurrent(){switch(this.phasesInUse){case 0:return 0;case 1:return this.currents[0];case 2:return(this.currents[0]+this.currents[1])/2;case 3:return(this.currents[0]+this.currents[1]+this.currents[2])/3;default:return 0}}get etActive(){return Y[this.connectedVehicle]?Y[this.connectedVehicle].etActive:!1}set etActive(e){Y[this.connectedVehicle]&&(Y[this.connectedVehicle].etActive=e)}get etMaxPrice(){return Y[this.connectedVehicle].etMaxPrice??0}set etMaxPrice(e){ee("cpEtMaxPrice",Math.round(e*10)/1e6,this.id)}toPowerItem(){return{name:this.name,power:this.power,energy:this.dailyYield,energyPv:this.energyPv,energyBat:this.energyBat,pvPercentage:this.pvPercentage,color:this.color,icon:this.icon,showInGraph:!0}}}class Io{constructor(e){_(this,"id");_(this,"name","__invalid");_(this,"tags",[]);_(this,"config",{});_(this,"soc",0);_(this,"range",0);_(this,"_chargeTemplateId",0);_(this,"_evTemplateId",0);this.id=e}get chargeTemplateId(){return this._chargeTemplateId}set chargeTemplateId(e){this._chargeTemplateId=e,ee("vhChargeTemplateId",e,this.id)}updateChargeTemplateId(e){this._chargeTemplateId=e}get evTemplateId(){return this._evTemplateId}set evTemplateId(e){this._evTemplateId=e,ee("vhEvTemplateId",e,this.id)}updateEvTemplateId(e){this._evTemplateId=e}get etActive(){return ye[this.chargeTemplateId]?ye[this.chargeTemplateId].et.active:!1}set etActive(e){ye[this.chargeTemplateId]&&ee("priceCharging",e,this.chargeTemplateId)}get etMaxPrice(){if(ye[this.chargeTemplateId]&&ye[this.chargeTemplateId].et.active)return ye[this.chargeTemplateId].et.max_price*1e5}get chargepoint(){for(const e of Object.values(V))if(e.connectedVehicle==this.id)return e}get visible(){return this.name!="__invalid"&&(this.id!=0||v.showStandardVehicle)}}const V=ie({}),Y=ie({}),ye=ie({}),lt=ie({}),ct=ie({}),Ht=ie({});function Co(t){if(!(t in V)){V[t]=new Mo(t);const e="var(--color-cp"+(Object.values(V).length-1)+")";V[t].color=e;const a="cp"+t;se[a]?se["cp"+t].color=e:se[a]={name:"Ladepunkt",color:e,icon:"Ladepunkt"}}}function Po(){Object.keys(V).forEach(t=>{delete V[parseInt(t)]})}const Bo={cpLock:"openWB/set/chargepoint/%/set/manual_lock",chargeMode:"openWB/set/vehicle/template/charge_template/%/chargemode/selected",cpPriority:"openWB/set/vehicle/template/charge_template/%/prio",cpTimedCharging:"openWB/set/vehicle/template/charge_template/%/time_charging/active",pvBatteryPriority:"openWB/set/general/chargemode_config/pv_charging/bat_mode",cpVehicle:"openWB/set/chargepoint/%/config/ev",cpInstantChargeLimitMode:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/selected",cpInstantTargetCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/current",cpInstantTargetSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/soc",cpInstantMaxEnergy:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/amount",cpPvFeedInLimit:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/feed_in_limit",cpPvMinCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_current",cpPvMaxSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/max_soc",cpPvMinSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc",cpPvMinSocCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc_current",cpEtMaxPrice:"openWB/set/vehicle/template/charge_template/%/et/max_price",vhChargeTemplateId:"openWB/set/vehicle/%/charge_template",vhEvTemplateId:"openWB/set/vehicle/%/ev_template",shSetManual:"openWB/set/LegacySmartHome/config/set/Devices/%/mode",shSwitchOn:"openWB/set/LegacySmartHome/config/set/Devices/%/device_manual_control",socUpdate:"openWB/set/vehicle/%/get/force_soc_update",setSoc:"openWB/set/vehicle/%/soc_module/calculated_soc_state/manual_soc",priceCharging:"openWB/set/vehicle/template/charge_template/%/et/active"};function ee(t,e,a=0){if(isNaN(a)){console.warn("Invalid index");return}let n=Bo[t];if(!n){console.warn("No topic for update type "+t);return}switch(t){case"chargeMode":case"cpPriority":case"cpScheduledCharging":case"cpInstantTargetCurrent":case"cpInstantChargeLimitMode":case"cpInstantTargetSoc":case"cpInstantMaxEnergy":case"cpPvFeedInLimit":case"cpPvMinCurrent":case"cpPvMaxSoc":case"cpPvMinSoc":case"cpEtMaxPrice":case"cpPvMinSocCurrent":n=n.replace("%",V[a].chargeTemplate.toString());break;default:n=n.replace("%",String(a))}switch(typeof e){case"number":Nt(n,JSON.stringify(+e));break;default:Nt(n,JSON.stringify(e))}}function Qt(t){Nt("openWB/set/command/"+Yt()+"/todo",JSON.stringify(t))}const be=500,xe=500,W={top:15,right:20,bottom:10,left:25},Zt=["charging","house","batIn","devices"];class Vo{constructor(){_(this,"data",[]);_(this,"_graphMode","");_(this,"waitForData",!0)}get graphMode(){return this._graphMode}set graphMode(e){this._graphMode=e}}const f=ie(new Vo),ka=X(eo),He=p(()=>[0,be-W.left-2*W.right].map(t=>ka.value.applyX(t)));let ut=!0,nt=!0;function ra(){ut=!1}function Lo(){ut=!0}function sa(){nt=!1}function Oo(){nt=!0}function Ao(t){nt=t}function mt(t){f.data=t,f.waitForData=!1}const pe=ie({refreshTopicPrefix:"openWB/graph/alllivevaluesJson",updateTopic:"openWB/graph/lastlivevaluesJson",configTopic:"openWB/graph/config/#",initialized:!1,initCounter:0,graphRefreshCounter:0,rawDataPacks:[],duration:0,activate(t){this.unsubscribeUpdates(),this.subscribeRefresh(),t&&(f.data=[]),f.waitForData=!0,qe(this.configTopic),this.initialized=!1,this.initCounter=0,this.graphRefreshCounter=0,this.rawDataPacks=[],Go(),kt.value=!0},deactivate(){this.unsubscribeRefresh(),this.unsubscribeUpdates(),at(this.configTopic)},subscribeRefresh(){for(let t=1;t<17;t++)qe(this.refreshTopicPrefix+t)},unsubscribeRefresh(){for(let t=1;t<17;t++)at(this.refreshTopicPrefix+t)},subscribeUpdates(){qe(this.updateTopic)},unsubscribeUpdates(){at(this.updateTopic)}}),ce=ie({topic:"openWB/log/daily/#",date:new Date,activate(t){if(f.graphMode=="day"||f.graphMode=="today"){f.graphMode=="today"&&(this.date=new Date);const e=this.date.getFullYear().toString()+(this.date.getMonth()+1).toString().padStart(2,"0")+this.date.getDate().toString().padStart(2,"0");this.topic="openWB/log/daily/"+e,qe(this.topic),t&&(f.data=[]),f.waitForData=!0,Qt({command:"getDailyLog",data:{day:e}})}},deactivate(){at(this.topic)},back(){this.date=new Date(this.date.setTime(this.date.getTime()-864e5))},forward(){this.date=new Date(this.date.setTime(this.date.getTime()+864e5))},setDate(t){this.date=t},getDate(){return this.date}}),Ae=ie({topic:"openWB/log/monthly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(t){const e=this.year.toString()+this.month.toString().padStart(2,"0");f.data=[],qe(this.topic),t&&(f.data=[]),f.waitForData=!0,Qt({command:"getMonthlyLog",data:{month:e}})},deactivate(){at(this.topic)},back(){this.month-=1,this.month<1&&(this.month=12,this.year-=1),this.activate()},forward(){const t=new Date;t.getFullYear()==this.year?this.month-1<t.getMonth()&&(this.month=this.month+1):(this.month=this.month+1,this.month>12&&(this.month=1,this.year+=1)),this.activate()},getDate(){return new Date(this.year,this.month)}}),Fe=ie({topic:"openWB/log/yearly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(t){const e=this.year.toString();qe(this.topic),t&&(f.data=[]),f.waitForData=!0,Qt({command:"getYearlyLog",data:{year:e}})},deactivate(){at(this.topic)},back(){this.year-=1,this.activate()},forward(){this.year<new Date().getFullYear()&&(this.year=this.year+1,this.activate())},getDate(){return new Date(this.year,this.month)}});function me(t=!1){switch(f.graphMode==""?To(v.graphPreference):f.graphMode=="live"?v.graphPreference="live":v.graphPreference="today",t||(ut=!0,nt=!0),f.graphMode){case"live":ce.deactivate(),Ae.deactivate(),Fe.deactivate(),pe.activate(!t);break;case"today":pe.deactivate(),Ae.deactivate(),Fe.deactivate(),ce.activate(!t);break;case"day":pe.deactivate(),Ae.deactivate(),Fe.deactivate(),ce.activate(!t);break;case"month":pe.deactivate(),ce.deactivate(),Fe.deactivate(),Ae.activate(!t);break;case"year":pe.deactivate(),ce.deactivate(),Ae.deactivate(),Fe.activate(!t);break}}function To(t){f.graphMode=t}function Do(t,e){e[t]>0&&(A.items[t].energyPv+=1e3/12*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),A.items[t].energyBat+=1e3/12*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}function Wo(t,e){e[t]>0&&(A.items[t].energyPv+=1e3*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),A.items[t].energyBat+=1e3*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}const zo=["evuIn","pv","batOut","evuOut"],dt=X(!1);function Xt(t,e){Object.entries(t).length>0?(dt.value=!1,Object.entries(t.counter).forEach(([a,n])=>{(e.length==0||e.includes(a))&&(A.items.evuIn.energy+=n.energy_imported,A.items.evuOut.energy+=n.energy_exported)}),A.items.pv.energy=t.pv.all.energy_exported,t.bat.all&&(A.items.batIn.energy=t.bat.all.energy_imported,A.items.batOut.energy=t.bat.all.energy_exported),Object.entries(t.cp).forEach(([a,n])=>{a=="all"?(A.setEnergy("charging",n.energy_imported),n.energy_imported_pv!=null&&(A.setEnergyPv("charging",n.energy_imported_pv),A.setEnergyBat("charging",n.energy_imported_bat))):A.setEnergy(a,n.energy_imported)}),A.setEnergy("devices",0),Object.entries(t.sh).forEach(([a,n])=>{A.setEnergy(a,n.energy_imported);const r=a.substring(2);ae.get(+r).countAsHouse||(A.items.devices.energy+=n.energy_imported)}),t.hc&&t.hc.all?(A.setEnergy("house",t.hc.all.energy_imported),t.hc.all.energy_imported_pv!=null&&(A.setEnergyPv("house",t.hc.all.energy_imported_pv),A.setEnergyBat("house",t.hc.all.energy_imported_bat))):A.calculateHouseEnergy(),A.keys().forEach(a=>{zo.includes(a)||(A.setPvPercentage(a,Math.round((A.items[a].energyPv+A.items[a].energyBat)/A.items[a].energy*100)),Zt.includes(a)&&(j[a].energy=A.items[a].energy,j[a].energyPv=A.items[a].energyPv,j[a].energyBat=A.items[a].energyBat,j[a].pvPercentage=A.items[a].pvPercentage))}),f.graphMode=="today"&&(Object.values(V).forEach(a=>{const n=A.items["cp"+a.id];n&&(a.energyPv=n.energyPv,a.energyBat=n.energyBat,a.pvPercentage=n.pvPercentage)}),ae.forEach(a=>{const n=A.items["sh"+a.id];n&&(a.energy=n.energy,a.energyPv=n.energyPv,a.energyBat=n.energyBat,a.pvPercentage=n.pvPercentage)}))):dt.value=!0,kt.value=!0}const Pe=p(()=>{const t=Be(f.data,e=>new Date(e.date));return t[0]&&t[1]?Ut().domain(t).range([0,be-W.left-2*W.right]):Qe().range([0,0])});function Go(){A.keys().forEach(t=>{Zt.includes(t)&&(j[t].energy=A.items[t].energy,j[t].energyPv=0,j[t].energyBat=0,j[t].pvPercentage=0)}),Object.values(V).forEach(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0}),ae.forEach(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0})}const Ne=p(()=>{const t=Be(f.data,e=>e.date);return t[1]?Ft().domain(Array.from({length:t[1]},(e,a)=>a+1)).paddingInner(.4).range([0,be-W.left-2]):Ft().range([0,0])});function Kt(){switch(f.graphMode){case"live":f.graphMode="today",v.showRightButton=!0,me();break;case"today":f.graphMode="day",ce.deactivate(),ce.back(),ce.activate(),me();break;case"day":ce.back(),me();break;case"month":Ae.back();break;case"year":Fe.back();break}}function Sa(){const t=new Date;switch(f.graphMode){case"live":break;case"today":f.graphMode="live",v.showRightButton=!1,me();break;case"day":ce.forward(),ce.date.getDate()==t.getDate()&&ce.date.getMonth()==t.getMonth()&&ce.date.getFullYear()==t.getFullYear()&&(f.graphMode="today"),me();break;case"month":Ae.forward();break;case"year":Fe.forward();break}}function xa(){switch(f.graphMode){case"live":Kt();break;case"day":case"today":f.graphMode="month",me();break;case"month":f.graphMode="year",me();break}}function $a(){switch(f.graphMode){case"year":f.graphMode="month",me();break;case"month":f.graphMode="today",me();break;case"today":case"day":f.graphMode="live",me();break}}function ia(t){if(f.graphMode=="day"||f.graphMode=="today"){ce.setDate(t);const e=new Date;ce.date.getDate()==e.getDate()&&ce.date.getMonth()==e.getMonth()&&ce.date.getFullYear()==e.getFullYear()?f.graphMode="today":f.graphMode="day",me()}}const Ue=X(new Map);class Eo{constructor(){_(this,"_showRelativeArcs",!1);_(this,"showTodayGraph",!0);_(this,"_graphPreference","today");_(this,"_usageStackOrder",0);_(this,"_displayMode","dark");_(this,"_showGrid",!1);_(this,"_smartHomeColors","normal");_(this,"_decimalPlaces",1);_(this,"_showQuickAccess",!0);_(this,"_simpleCpList",!1);_(this,"_shortCpList","no");_(this,"_showAnimations",!0);_(this,"_preferWideBoxes",!1);_(this,"_maxPower",4e3);_(this,"_fluidDisplay",!1);_(this,"_showClock","no");_(this,"_showButtonBar",!0);_(this,"_showCounters",!1);_(this,"_showVehicles",!1);_(this,"_showStandardVehicle",!0);_(this,"_showPrices",!1);_(this,"_showInverters",!1);_(this,"_debug",!1);_(this,"isEtEnabled",!1);_(this,"etPrice",20.5);_(this,"showRightButton",!0);_(this,"showLeftButton",!0);_(this,"animationDuration",300);_(this,"animationDelay",100);_(this,"zoomGraph",!1)}get showRelativeArcs(){return this._showRelativeArcs}set showRelativeArcs(e){this._showRelativeArcs=e,re()}setShowRelativeArcs(e){this._showRelativeArcs=e}get graphPreference(){return this._graphPreference}set graphPreference(e){this._graphPreference=e,re()}setGraphPreference(e){this._graphPreference=e}get usageStackOrder(){return this._usageStackOrder}set usageStackOrder(e){this._usageStackOrder=e,re()}setUsageStackOrder(e){this._usageStackOrder=e}get displayMode(){return this._displayMode}set displayMode(e){this._displayMode=e,No(e)}setDisplayMode(e){this._displayMode=e}get showGrid(){return this._showGrid}set showGrid(e){this._showGrid=e,re()}setShowGrid(e){this._showGrid=e}get decimalPlaces(){return this._decimalPlaces}set decimalPlaces(e){this._decimalPlaces=e,re()}setDecimalPlaces(e){this._decimalPlaces=e}get smartHomeColors(){return this._smartHomeColors}set smartHomeColors(e){this._smartHomeColors=e,la(e),re()}setSmartHomeColors(e){this._smartHomeColors=e,la(e)}get showQuickAccess(){return this._showQuickAccess}set showQuickAccess(e){this._showQuickAccess=e,re()}setShowQuickAccess(e){this._showQuickAccess=e}get simpleCpList(){return this._simpleCpList}set simpleCpList(e){this._simpleCpList=e,re()}setSimpleCpList(e){this._simpleCpList=e}get shortCpList(){return this._shortCpList}set shortCpList(e){this._shortCpList=e,re()}setShortCpList(e){this._shortCpList=e}get showAnimations(){return this._showAnimations}set showAnimations(e){this._showAnimations=e,re()}setShowAnimations(e){this._showAnimations=e}get preferWideBoxes(){return this._preferWideBoxes}set preferWideBoxes(e){this._preferWideBoxes=e,re()}setPreferWideBoxes(e){this._preferWideBoxes=e}get maxPower(){return this._maxPower}set maxPower(e){this._maxPower=e,re()}setMaxPower(e){this._maxPower=e}get fluidDisplay(){return this._fluidDisplay}set fluidDisplay(e){this._fluidDisplay=e,re()}setFluidDisplay(e){this._fluidDisplay=e}get showClock(){return this._showClock}set showClock(e){this._showClock=e,re()}setShowClock(e){this._showClock=e}get debug(){return this._debug}set debug(e){this._debug=e,re()}setDebug(e){this._debug=e}get showButtonBar(){return this._showButtonBar}set showButtonBar(e){this._showButtonBar=e,re()}setShowButtonBar(e){this._showButtonBar=e}get showCounters(){return this._showCounters}set showCounters(e){this._showCounters=e,re()}setShowCounters(e){this._showCounters=e}get showVehicles(){return this._showVehicles}set showVehicles(e){this._showVehicles=e,re()}setShowVehicles(e){this._showVehicles=e}get showStandardVehicle(){return this._showStandardVehicle}set showStandardVehicle(e){this._showStandardVehicle=e,re()}setShowStandardVehicle(e){this._showStandardVehicle=e}get showPrices(){return this._showPrices}set showPrices(e){this._showPrices=e,re()}setShowPrices(e){this._showPrices=e}get showInverters(){return this._showInverters}set showInverters(e){this._showInverters=e,Lo(),Oo(),re()}setShowInverters(e){this._showInverters=e}}const v=ie(new Eo);function Ma(){Jo();const t=de("html");t.classed("theme-dark",v.displayMode=="dark"),t.classed("theme-light",v.displayMode=="light"),t.classed("theme-blue",v.displayMode=="blue"),t.classed("shcolors-standard",v.smartHomeColors=="standard"),t.classed("shcolors-advanced",v.smartHomeColors=="advanced"),t.classed("shcolors-normal",v.smartHomeColors=="normal")}const jo=992,wt=ie({x:document.documentElement.clientWidth,y:document.documentElement.clientHeight});function Uo(){wt.x=document.documentElement.clientWidth,wt.y=document.documentElement.clientHeight,Ma()}const Re=p(()=>wt.x>=jo),ge={instant_charging:{mode:fe.instant_charging,name:"Sofort",color:"var(--color-charging)",icon:"fa-bolt"},scheduled_charging:{mode:fe.scheduled_charging,name:"Zielladen",color:"var(--color-battery)",icon:"fa-bullseye"},pv_charging:{mode:fe.pv_charging,name:"PV",color:"var(--color-pv",icon:"fa-solar-panel"},standby:{mode:fe.standby,name:"Standby",color:"var(--color-axis",icon:"fa-pause"},stop:{mode:fe.stop,name:"Stop",color:"var(--color-fg)",icon:"fa-power-off"}};class Fo{constructor(){_(this,"batterySoc",0);_(this,"isBatteryConfigured",!0);_(this,"chargeMode","0");_(this,"_pvBatteryPriority","ev_mode");_(this,"displayLiveGraph",!0);_(this,"isEtEnabled",!0);_(this,"etMaxPrice",0);_(this,"etCurrentPrice",0);_(this,"cpDailyExported",0);_(this,"evuId",0);_(this,"etProvider","")}get pvBatteryPriority(){return this._pvBatteryPriority}set pvBatteryPriority(e){this._pvBatteryPriority=e,ee("pvBatteryPriority",e)}updatePvBatteryPriority(e){this._pvBatteryPriority=e}}function re(){Ro()}function No(t){const e=de("html");e.classed("theme-dark",t=="dark"),e.classed("theme-light",t=="light"),e.classed("theme-blue",t=="blue"),re()}function Ho(){v.maxPower=R.evuIn.power+R.pv.power+R.batOut.power,re()}function la(t){const e=de("html");e.classed("shcolors-normal",t=="normal"),e.classed("shcolors-standard",t=="standard"),e.classed("shcolors-advanced",t=="advanced")}const Oe={chargemode:"Der Lademodus für das Fahrzeug an diesem Ladepunkt",vehicle:"Das Fahrzeug, das an diesem Ladepounkt geladen wird",locked:"Für das Laden sperren",priority:"Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar",timeplan:"Das Laden nach Zeitplan für dieses Fahrzeug aktivieren",minsoc:"Immer mindestens bis zum eingestellten Ladestand laden. Wenn notwendig mit Netzstrom.",minpv:"Durchgehend mit mindestens dem eingestellten Strom laden. Wenn notwendig mit Netzstrom.",pricebased:"Laden bei dynamischem Stromtarif, wenn eingestellter Maximalpreis unterboten wird.",pvpriority:"Ladepriorität bei PV-Produktion. Bevorzung von Fahzeugen, Speicher, oder Fahrzeugen bis zum eingestellten Mindest-Ladestand. Die Einstellung ist für alle Ladepunkte gleich."};function Ro(){const t={};t.hideSH=[...ae.values()].filter(e=>!e.showInGraph).map(e=>e.id),t.showLG=v.graphPreference=="live",t.displayM=v.displayMode,t.stackO=v.usageStackOrder,t.showGr=v.showGrid,t.decimalP=v.decimalPlaces,t.smartHomeC=v.smartHomeColors,t.relPM=v.showRelativeArcs,t.maxPow=v.maxPower,t.showQA=v.showQuickAccess,t.simpleCP=v.simpleCpList,t.shortCP=v.shortCpList,t.animation=v.showAnimations,t.wideB=v.preferWideBoxes,t.fluidD=v.fluidDisplay,t.clock=v.showClock,t.showButtonBar=v.showButtonBar,t.showCounters=v.showCounters,t.showVehicles=v.showVehicles,t.showStandardV=v.showStandardVehicle,t.showPrices=v.showPrices,t.showInv=v.showInverters,t.debug=v.debug,document.cookie="openWBColorTheme="+JSON.stringify(t)+";max-age=16000000;samesite=strict"}function Jo(){const e=document.cookie.split(";").filter(a=>a.split("=")[0]==="openWBColorTheme");if(e.length>0){const a=JSON.parse(e[0].split("=")[1]);a.decimalP!==void 0&&v.setDecimalPlaces(+a.decimalP),a.smartHomeC!==void 0&&v.setSmartHomeColors(a.smartHomeC),a.hideSH!==void 0&&a.hideSH.forEach(n=>{ae.get(n)==null&&qt(n),ae.get(n).setShowInGraph(!1)}),a.showLG!==void 0&&v.setGraphPreference(a.showLG?"live":"today"),a.maxPow!==void 0&&v.setMaxPower(+a.maxPow),a.relPM!==void 0&&v.setShowRelativeArcs(a.relPM),a.displayM!==void 0&&v.setDisplayMode(a.displayM),a.stackO!==void 0&&v.setUsageStackOrder(a.stackO),a.showGr!==void 0&&v.setShowGrid(a.showGr),a.showQA!==void 0&&v.setShowQuickAccess(a.showQA),a.simpleCP!==void 0&&v.setSimpleCpList(a.simpleCP),a.shortCP!==void 0&&v.setShortCpList(a.shortCP),a.animation!=null&&v.setShowAnimations(a.animation),a.wideB!=null&&v.setPreferWideBoxes(a.wideB),a.fluidD!=null&&v.setFluidDisplay(a.fluidD),a.clock!=null&&v.setShowClock(a.clock),a.showButtonBar!==void 0&&v.setShowButtonBar(a.showButtonBar),a.showCounters!==void 0&&v.setShowCounters(a.showCounters),a.showVehicles!==void 0&&v.setShowVehicles(a.showVehicles),a.showStandardV!==void 0&&v.setShowStandardVehicle(a.showStandardV),a.showPrices!==void 0&&v.setShowPrices(a.showPrices),a.showInv!==void 0&&v.setShowInverters(a.showInv),a.debug!==void 0&&v.setDebug(a.debug)}}const se=ie({evuIn:{name:"Netz",color:"var(--color-evu)",icon:""},pv:{name:"PV",color:"var(--color-pv",icon:""},batOut:{name:"Bat >",color:"var(--color-battery)",icon:""},evuOut:{name:"Export",color:"var(--color-export)",icon:""},charging:{name:"Laden",color:"var(--color-charging)",icon:""},devices:{name:"Geräte",color:"var(--color-devices)",icon:""},batIn:{name:"> Bat",color:"var(--color-battery)",icon:""},house:{name:"Haus",color:"var(--color-house)",icon:""},cp1:{name:"Ladepunkt",color:"var(--color-cp1)",icon:"Ladepunkt"},cp2:{name:"Ladepunkt",color:"var(--color-cp2)",icon:"Ladepunkt"},cp3:{name:"Ladepunkt",color:"var(--color-cp3)",icon:"Ladepunkt"},cp4:{name:"Ladepunkt",color:"var(--color-cp4)",icon:"Ladepunkt"},cp5:{name:"Ladepunkt",color:"var(--color-cp5)",icon:"Ladepunkt"},cp6:{name:"Ladepunkt",color:"var(--color-cp6)",icon:"Ladepunkt"},cp7:{name:"Ladepunkt",color:"var(--color-cp7)",icon:"Ladepunkt"},cp8:{name:"Ladepunkt",color:"var(--color-cp8)",icon:"Ladepunkt"},sh1:{name:"Gerät",color:"var(--color-sh1)",icon:"Gerät"},sh2:{name:"Gerät",color:"var(--color-sh2)",icon:"Gerät"},sh3:{name:"Gerät",color:"var(--color-sh3)",icon:"Gerät"},sh4:{name:"Gerät",color:"var(--color-sh4)",icon:"Gerät"},sh5:{name:"Gerät",color:"var(--color-sh5)",icon:"Gerät"},sh6:{name:"Gerät",color:"var(--color-sh6)",icon:"Gerät"},sh7:{name:"Gerät",color:"var(--color-sh7)",icon:"Gerät"},sh8:{name:"Gerät",color:"var(--color-sh8)",icon:"Gerät"},sh9:{name:"Gerät",color:"var(--color-sh9)",icon:"Gerät"},pv1:{name:"PV",color:"var(--color-pv1)",icon:"Wechselrichter"},pv2:{name:"PV",color:"var(--color-pv2)",icon:"Wechselrichter"},pv3:{name:"PV",color:"var(--color-pv3)",icon:"Wechselrichter"},pv4:{name:"PV",color:"var(--color-pv4)",icon:"Wechselrichter"},pv5:{name:"PV",color:"var(--color-pv5)",icon:"Wechselrichter"},pv6:{name:"PV",color:"var(--color-pv6)",icon:"Wechselrichter"},pv7:{name:"PV",color:"var(--color-pv7)",icon:"Wechselrichter"},pv8:{name:"PV",color:"var(--color-pv8)",icon:"Wechselrichter"},pv9:{name:"PV",color:"var(--color-pv9)",icon:"Wechselrichter"},bat1:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat2:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat3:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat4:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat5:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat6:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat7:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat8:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"},bat9:{name:"Speicher",color:"var(--color-battery)",icon:"Speicher"}});class Ia{constructor(){_(this,"_items",{});this.addItem("evuIn"),this.addItem("pv"),this.addItem("batOut"),this.addItem("evuOut"),this.addItem("charging"),this.addItem("devices"),this.addItem("batIn"),this.addItem("house")}get items(){return this._items}keys(){return Object.keys(this._items)}values(){return Object.values(this._items)}addItem(e,a){this._items[e]=a?Te(e,a):Te(e)}setEnergy(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energy=a}setEnergyPv(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyPv=a}setEnergyBat(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyBat=a}setPvPercentage(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].pvPercentage=a<=100?a:100}calculateHouseEnergy(){this._items.house.energy=this._items.evuIn.energy+this._items.pv.energy+this._items.batOut.energy-this._items.evuOut.energy-this._items.batIn.energy-this._items.charging.energy-this._items.devices.energy}}let A=ie(new Ia);function ea(){A=new Ia}const R=ie({evuIn:Te("evuIn"),pv:Te("pv"),batOut:Te("batOut")}),j=ie({evuOut:Te("evuOut"),charging:Te("charging"),devices:Te("devices"),batIn:Te("batIn"),house:Te("house")}),ue=ie(new Fo);X("");const kt=X(!1);function Te(t,e){return{name:se[t]?se[t].name:"item",power:0,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:e||(se[t]?se[t].color:"var(--color-charging)"),icon:se[t]?se[t].icon:"",showInGraph:!0}}const Rt=X(new Date),ke=X(new Map),qo=t=>{ke.value.set(t,new ba(t)),ke.value.get(t).color=se["pv"+ke.value.size].color},Yo=["origin"],Qo=O({__name:"PMSourceArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=p(()=>{let n={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:"",showInGraph:!0},r=R;r["zz-empty"]=n;const s=Object.values(R).length-1,h=ma().value(u=>u.power).startAngle(-Math.PI/2+e.circleGapSize).endAngle(Math.PI/2-e.circleGapSize).sort(null),g=va().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius).padAngle(0),c=de("g#pmSourceArc");return c.selectAll("*").remove(),c.selectAll("sources").data(h(Object.values(r))).enter().append("path").attr("d",g).attr("fill",u=>u.data.color).attr("stroke",(u,d)=>d==s?u.data.power>0?"var(--color-scale)":"null":u.data.color),"pmSourceArc.vue"});return to(()=>{let n=R.pv.power+R.evuIn.power+R.batOut.power;n>v.maxPower&&(v.maxPower=n)}),(n,r)=>(l(),m("g",{id:"pmSourceArc",origin:a.value},null,8,Yo))}}),Zo=["origin"],Xo=O({__name:"PMUsageArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=p(()=>{let n={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:"",showInGraph:!0};const r=[j.evuOut,j.charging].concat([...ae.values()].filter(u=>u.configured&&!u.countAsHouse).sort((u,d)=>d.power-u.power)).concat([j.batIn,j.house]).concat(n),s=r.length-1,h=ma().value(u=>u.power).startAngle(Math.PI*1.5-e.circleGapSize).endAngle(Math.PI/2+e.circleGapSize).sort(null),g=va().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius),c=de("g#pmUsageArc");return c.selectAll("*").remove(),c.selectAll("consumers").data(h(r)).enter().append("path").attr("d",g).attr("fill",u=>u.data.color).attr("stroke",(u,d)=>d==s?u.data.power>0?"var(--color-scale)":"null":u.data.color),"pmUsageArc.vue"});return(n,r)=>(l(),m("g",{id:"pmUsageArc",origin:a.value},null,8,Zo))}});function $e(t,e=1){let a;if(t>=1e3&&e<4){switch(e){case 0:a=Math.round(t/1e3);break;case 1:a=Math.round(t/100)/10;break;case 2:a=Math.round(t/10)/100;break;case 3:a=Math.round(t)/1e3;break;default:a=Math.round(t/100)/10;break}return(a==null?void 0:a.toLocaleString(void 0,{minimumFractionDigits:e}))+" kW"}else return Math.round(t).toLocaleString(void 0)+" W"}function ht(t,e=1,a=!1){let n;if(t>1e6&&(a=!0,t=t/1e3),t>=1e3&&e<4){switch(e){case 0:n=Math.round(t/1e3);break;case 1:n=(Math.round(t/100)/10).toFixed(1);break;case 2:n=(Math.round(t/10)/100).toFixed(2);break;case 3:n=(Math.round(t)/1e3).toFixed(3);break;default:n=Math.round(t/100)/10;break}return n.toLocaleString(void 0,{minimumFractionDigits:e})+(a?" MWh":" kWh")}else return Math.round(t).toLocaleString(void 0)+(a?" kWh":" Wh")}function Ko(t){const e=Math.floor(t/3600),a=(t%3600/60).toFixed(0);return e>0?e+"h "+a+" min":a+" min"}function Ca(t){return t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function en(t,e){return["Jan","Feb","März","April","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Dez"][t]+" "+e}function tn(t){return t!=999?(Math.round(t*10)/10).toLocaleString(void 0,{minimumFractionDigits:1})+"°":"-"}const vt=O({__name:"FormatWatt",props:{watt:{}},setup(t){const e=t,a=p(()=>$e(e.watt,v.decimalPlaces));return(n,r)=>x(a.value)}}),an={key:0,id:"pmLabel"},on=["x","y","fill","text-anchor"],nn=22,Le=O({__name:"PMLabel",props:{x:{},y:{},data:{},props:{},anchor:{},labeltext:{},labelicon:{},labelcolor:{}},setup(t){const e=t,a=p(()=>e.labeltext?e.labeltext:e.props?e.props.icon+" ":e.labelicon?e.labelicon+" ":""),n=p(()=>e.labelcolor?e.labelcolor:e.props?e.props.color:""),r=p(()=>!e.data||e.data.power>0),s=p(()=>e.labeltext?"":"fas");return(h,g)=>r.value?(l(),m("g",an,[o("text",{x:h.x,y:h.y,fill:n.value,"text-anchor":h.anchor,"font-size":nn,class:"pmLabel"},[o("tspan",{class:N(s.value)},x(a.value),3),o("tspan",null,[h.data!==void 0?(l(),$(vt,{key:0,watt:h.data.power},null,8,["watt"])):w("",!0)])],8,on)])):w("",!0)}}),rn={class:"wb-widget p-0 m-0 shadow"},sn={class:"d-flex justify-content-between"},ln={class:"m-4 me-0 mb-0"},cn=o("div",{class:"p-0"},"(title goes here)",-1),dn={class:"p-4 pb-0 ps-0 m-0",style:{"text-align":"right"}},un={class:"px-4 pt-4 pb-2 wb-subwidget"},hn={class:"row"},pn={class:"col m-0 p-0"},gn={class:"container-fluid m-0 p-0"},mn={key:0},vn=o("hr",null,null,-1),fn={class:"px-4 py-2 wb-subwidget"},_n={class:"row"},bn={class:"col"},yn={class:"container-fluid m-0 p-0"},$t=O({__name:"WBWidget",props:{variableWidth:{type:Boolean},fullWidth:{type:Boolean}},setup(t){const e=t,a=p(()=>e.fullWidth?"col-12":e.variableWidth&&v.preferWideBoxes?"col-lg-6":"col-lg-4");return(n,r)=>(l(),m("div",{class:N(["p-2 m-0 d-flex",a.value])},[o("div",rn,[o("div",sn,[o("h3",ln,[he(n.$slots,"title",{},()=>[cn]),he(n.$slots,"subtitle")]),o("div",dn,[he(n.$slots,"buttons")])]),o("div",un,[o("div",hn,[o("div",pn,[o("div",gn,[he(n.$slots,"default")])])])]),n.$slots.footer!=null?(l(),m("div",mn,[vn,o("div",fn,[o("div",_n,[o("div",bn,[o("div",yn,[he(n.$slots,"footer")])])])])])):w("",!0)])],2))}});class wn{constructor(){_(this,"active",!1);_(this,"etPriceList",new Map);_(this,"etProvider","");_(this,"etMaxPrice",0)}get etCurrentPriceString(){const[e]=te.etPriceList.values();return(Math.round(e*10)/10).toFixed(1)+" ct"}}const te=ie(new wn),kn={id:"powermeter",class:"p-0 m-0"},Sn=["viewBox"],xn=["transform"],$n=["x"],Ee=500,je=20,ca=1,Mn=O({__name:"PowerMeter",setup(t){const e=Ee,a=Math.PI/40,n=[[4],[4,6],[1,4,6],[0,2,4,6],[0,2,3,5,6]],r=[{x:-85,y:e/2*1/5},{x:0,y:e/2*1/5},{x:85,y:e/2*1/5},{x:-85,y:e/2*2/5},{x:0,y:e/2*2/5},{x:85,y:e/2*2/5},{x:0,y:e/2*3/5}],s=p(()=>Ee/2-je),h=p(()=>{let I="",H=Object.values(R).filter(P=>P.power>0);return H.length==1&&H[0].name=="PV"?I="Aktueller Verbrauch: ":I="Bezug/Verbrauch: ",I+$e(j.house.power+j.charging.power+j.devices.power+j.batIn.power,v.decimalPlaces)}),g=p(()=>{let I=R.pv.power+R.evuIn.power+R.batOut.power;return v.maxPower>I?$e(v.maxPower,v.decimalPlaces):$e(I,v.decimalPlaces)}),c=p(()=>Object.values(V)),u=p(()=>{let I=0;return v.showRelativeArcs&&(I=v.maxPower-(R.pv.power+R.evuIn.power+R.batOut.power)),I<0?0:I}),d=p(()=>[j.evuOut,j.charging,j.devices,j.batIn,j.house].filter(I=>I.power>0)),C=p(()=>n[d.value.length-1]);function J(I){return r[C.value[I]]}const L=p(()=>{if(c.value.length>=1&&c.value[0].connectedVehicle!=null&&Y[c.value[0].connectedVehicle])return Y[c.value[0].connectedVehicle]}),E=p(()=>{if(!(c.value.length<1))if(c.value.length==1)if(Object.values(Y).filter(I=>I.visible).length>1){const I=Object.values(Y).filter(H=>H.visible);return I[0].id==c.value[0].connectedVehicle?I[1]:I[0]}else return;else return Y[c.value[1].connectedVehicle]??void 0});function T(I){return I.length>12?I.slice(0,11)+".":I}const q=p(()=>{const[I]=te.etPriceList.values();return Math.round(I*10)/10});return(I,H)=>(l(),$($t,{"full-width":!0},{title:y(()=>[z(" Aktuelle Leistung ")]),default:y(()=>[o("figure",kn,[(l(),m("svg",{viewBox:"0 0 "+Ee+" "+i(e)},[o("g",{transform:"translate("+Ee/2+","+i(e)/2+")"},[b(Qo,{radius:s.value,"corner-radius":ca,"circle-gap-size":a,"empty-power":u.value},null,8,["radius","empty-power"]),b(Xo,{"sh-device":i(ae),radius:s.value,"corner-radius":ca,"circle-gap-size":a,"empty-power":u.value},null,8,["sh-device","radius","empty-power"]),b(Le,{x:0,y:-i(e)/10*2,data:i(R).pv,props:i(se).pv,anchor:"middle",config:i(v)},null,8,["y","data","props","config"]),b(Le,{x:0,y:-i(e)/10*3,data:i(R).evuIn,props:i(se).evuIn,anchor:"middle",config:i(v)},null,8,["y","data","props","config"]),b(Le,{x:0,y:-i(e)/10,data:i(R).batOut,props:i(se).batOut,anchor:"middle",config:i(v)},null,8,["y","data","props","config"]),i(te).active?(l(),$(Le,{key:0,x:0,y:-i(e)/10,data:i(R).batOut,props:i(se).batOut,anchor:"middle",config:i(v)},null,8,["y","data","props","config"])):w("",!0),(l(!0),m(G,null,K(d.value,(P,k)=>(l(),$(Le,{key:k,x:J(k).x,y:J(k).y,data:P,labelicon:P.icon,labelcolor:P.color,anchor:"middle",config:i(v)},null,8,["x","y","data","labelicon","labelcolor","config"]))),128)),L.value?(l(),$(Le,{key:1,x:-Ee/2-je/4+10,y:-i(e)/2+je+5,labeltext:T(L.value.name)+": "+Math.round(L.value.soc)+"%",labelcolor:c.value[0].color,anchor:"start",config:i(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),E.value?(l(),$(Le,{key:2,x:Ee/2+je/4-10,y:-i(e)/2+je+5,labeltext:T(E.value.name)+": "+Math.round(E.value.soc)+"%",labelcolor:c.value[1]?c.value[1].color:"var(--color-charging)",anchor:"end",config:i(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),i(ue).batterySoc>0?(l(),$(Le,{key:3,x:-Ee/2-je/4+10,y:i(e)/2-je+15,labeltext:"Speicher: "+i(ue).batterySoc+"%",labelcolor:i(j).batIn.color,anchor:"start",config:i(v)},null,8,["x","y","labeltext","labelcolor","config"])):w("",!0),i(te).active?(l(),$(Le,{key:4,x:Ee/2+je/4-10,y:i(e)/2-je+15,value:q.value,labeltext:i(te).etCurrentPriceString,labelcolor:"var(--color-charging)",anchor:"end",config:i(v)},null,8,["x","y","value","labeltext","config"])):w("",!0),b(Le,{x:0,y:0,labeltext:h.value,labelcolor:"var(--color-fg)",anchor:"middle",config:i(v)},null,8,["labeltext","config"]),i(v).showRelativeArcs?(l(),m("text",{key:5,x:Ee/2-44,y:"2","text-anchor":"middle",fill:"var(--color-axis)","font-size":"12"}," Peak: "+x(g.value),9,$n)):w("",!0)],8,xn)],8,Sn))])]),_:1}))}}),In=["origin","origin2","transform"],Cn=O({__name:"PGSourceGraph",props:{width:{},height:{},margin:{}},setup(t){const e=t,a={house:"var(--color-house)",batIn:"var(--color-battery)",inverter:"var(--color-pv)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",pv:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)"};var n,r;const s=v.showAnimations?v.animationDuration:0,h=v.showAnimations?v.animationDelay:0,g=p(()=>{const k=de("g#pgSourceGraph");if(f.data.length>0){f.graphMode=="month"||f.graphMode=="year"?H(k,Ne.value):I(k,Pe.value),k.selectAll(".axis").remove();const M=k.append("g").attr("class","axis");M.call(E.value),M.selectAll(".tick").attr("font-size",12),M.selectAll(".tick line").attr("stroke",q.value).attr("stroke-width",T.value),M.select(".domain").attr("stroke","var(--color-bg)")}return"pgSourceGraph.vue"}),c=p(()=>fa().value((k,M)=>k[M]??0).keys(C.value)),u=p(()=>c.value(f.data)),d=p(()=>Ze().range([e.height-10,0]).domain(f.graphMode=="year"?[0,Math.ceil(J.value[1]*10)/10]:[0,Math.ceil(J.value[1])])),C=p(()=>{let k=[];const M=["batOut","evuIn"];if(v.showInverters){const S=/pv\d+/;f.data.length>0&&(k=Object.keys(f.data[0]).reduce((B,D)=>(D.match(S)&&B.push(D),B),[]))}switch(f.graphMode){case"live":return v.showInverters?["pv","batOut","evuIn"]:["selfUsage","evuOut","batOut","evuIn"];case"today":case"day":return k.forEach((S,B)=>{a[S]="var(--color-pv"+(B+1)+")"}),v.showInverters?[...k,...M]:["selfUsage","evuOut","batOut","evuIn"];default:return["evuIn","batOut","selfUsage","evuOut"]}}),J=p(()=>{let k=Be(f.data,M=>Math.max(M.pv+M.evuIn+M.batOut,M.selfUsage+M.evuOut));return k[0]!=null&&k[1]!=null?(f.graphMode=="year"&&(k[0]=k[0]/1e3,k[1]=k[1]/1e3),k):[0,0]}),L=p(()=>f.graphMode=="month"||f.graphMode=="year"?-e.width-e.margin.right-22:-e.width),E=p(()=>pt(d.value).tickSizeInner(L.value).ticks(4).tickFormat(k=>(k==0?"":Math.round(k*10)/10).toLocaleString(void 0))),T=p(()=>v.showGrid?"0.5":"1"),q=p(()=>v.showGrid?"var(--color-grid)":"var(--color-bg)");function I(k,M){const S=et().x((D,_e)=>M(f.data[_e].date)).y(d.value(0)).curve(tt),B=et().x((D,_e)=>M(f.data[_e].date)).y0(D=>d.value(f.graphMode=="year"?D[0]/1e3:D[0])).y1(D=>d.value(f.graphMode=="year"?D[1]/1e3:D[1])).curve(tt);ut?(k.selectAll("*").remove(),n=k.selectAll(".sourceareas").data(u.value).enter().append("path").attr("fill",(D,_e)=>a[C.value[_e]]).attr("d",D=>S(D)),n.transition().duration(s).delay(h).ease(st).attr("d",D=>B(D)),ra()):n.data(u.value).transition().duration(0).ease(st).attr("d",D=>B(D))}function H(k,M){f.data.length>0&&(ut?(k.selectAll("*").remove(),r=k.selectAll(".sourcebar").data(u.value).enter().append("g").attr("fill",(S,B)=>a[C.value[B]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,B)=>M(f.data[B].date)??0).attr("y",()=>d.value(0)).attr("height",0).attr("width",M.bandwidth()),r.transition().duration(s).delay(h).ease(st).attr("height",S=>f.graphMode=="year"?d.value(S[0]/1e3)-d.value(S[1]/1e3):d.value(S[0])-d.value(S[1])).attr("y",S=>f.graphMode=="year"?d.value(S[1]/1e3):d.value(S[1])),ra()):(k.selectAll("*").remove(),r=k.selectAll(".sourcebar").data(u.value).enter().append("g").attr("fill",(S,B)=>a[C.value[B]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,B)=>M(f.data[B].date)??0).attr("y",S=>f.graphMode=="year"?d.value(S[1]/1e3):d.value(S[1])).attr("width",M.bandwidth()).attr("height",S=>f.graphMode=="year"?d.value(S[0]/1e3)-d.value(S[1]/1e3):d.value(S[0])-d.value(S[1]))))}const P=p(()=>{const k=de("g#pgSourceGraph");if(f.graphMode!="month"&&f.graphMode!="year"&&f.data.length>0){Pe.value.range(He.value);const M=et().x((S,B)=>Pe.value(f.data[B].date)).y0(S=>d.value(S[0])).y1(S=>d.value(S[1])).curve(tt);k.selectAll("path").attr("d",S=>S?M(S):""),k.selectAll("g#sourceToolTips").select("rect").attr("x",S=>Pe.value(S.date)).attr("width",e.width/f.data.length)}return"zoomed"});return(k,M)=>(l(),m("g",{id:"pgSourceGraph",origin:g.value,origin2:P.value,transform:"translate("+k.margin.left+","+k.margin.top+")"},null,8,In))}}),Pn=["origin","origin2","transform"],Bn=O({__name:"PGUsageGraph",props:{width:{},height:{},margin:{},stackOrder:{}},setup(t){const e=t,a=p(()=>v.showInverters?[["house","charging","devices","batIn"],["charging","devices","batIn","house"],["devices","batIn","charging","house"],["batIn","charging","house","devices"]]:[["house","charging","devices","batIn","evuOut"],["charging","devices","batIn","house","evuOut"],["devices","batIn","charging","house","evuOut"],["batIn","charging","house","devices","evuOut"]]),n={house:"var(--color-house)",charging:"var(--color-charging)",batIn:"var(--color-battery)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)",cp0:"var(--color-cp0)",cp1:"var(--color-cp1)",cp2:"var(--color-cp2)",cp3:"var(--color-cp3)",sh1:"var(--color-sh1)",sh2:"var(--color-sh2)",sh3:"var(--color-sh3)",sh4:"var(--color-sh4)",devices:"var(--color-devices)"};var r,s;const h=v.showAnimations?v.animationDuration:0,g=v.showAnimations?v.animationDelay:0,c=p(()=>{const P=de("g#pgUsageGraph");f.graphMode=="month"||f.graphMode=="year"?I(P):q(P),P.selectAll(".axis").remove();const k=P.append("g").attr("class","axis");return k.call(T.value),k.selectAll(".tick").attr("font-size",12).attr("color","var(--color-axis)"),v.showGrid?k.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):k.selectAll(".tick line").attr("stroke","var(--color-bg)"),k.select(".domain").attr("stroke","var(--color-bg)"),"pgUsageGraph.vue"}),u=p(()=>fa().value((P,k)=>P[k]??0).keys(J.value)),d=p(()=>u.value(f.data)),C=p(()=>Ze().range([e.height+10,2*e.height]).domain(f.graphMode=="year"?[0,Math.ceil(L.value[1]*10)/10]:[0,Math.ceil(L.value[1])])),J=p(()=>{if(f.graphMode!="today"&&f.graphMode!="day"&&f.graphMode!="live")return a.value[e.stackOrder];{const P=a.value[e.stackOrder].slice(),k=P.indexOf("charging");P.splice(k,1);const M=/cp\d+/;let S=[];return f.data.length>0&&(S=Object.keys(f.data[0]).reduce((B,D)=>(D.match(M)&&B.push(D),B),[])),S.forEach((B,D)=>{var _e;P.splice(k+D,0,B),n[B]=((_e=V[+B.slice(2)])==null?void 0:_e.color)??"black"}),v.showInverters&&P.push("evuOut"),P}}),L=p(()=>{let P=Be(f.data,k=>k.house+k.charging+k.batIn+k.devices+k.evuOut);return P[0]!=null&&P[1]!=null?(f.graphMode=="year"&&(P[0]=P[0]/1e3,P[1]=P[1]/1e3),P):[0,0]}),E=p(()=>f.graphMode=="month"||f.graphMode=="year"?-e.width-e.margin.right-22:-e.width),T=p(()=>pt(C.value).tickSizeInner(E.value).ticks(4).tickFormat(P=>(P==0?"":Math.round(P*10)/10).toLocaleString(void 0)));function q(P){const k=et().x((S,B)=>Pe.value(f.data[B].date)).y(C.value(0)).curve(tt),M=et().x((S,B)=>Pe.value(f.data[B].date)).y0(S=>C.value(S[0])).y1(S=>C.value(S[1])).curve(tt);v.showAnimations?nt?(P.selectAll("*").remove(),r=P.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",S=>k(S)).attr("fill",(S,B)=>n[J.value[B]]),r.transition().duration(300).delay(100).ease(st).attr("d",S=>M(S)),sa()):(P.selectAll("*").remove(),P.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",S=>M(S)).attr("fill",(S,B)=>n[J.value[B]])):(P.selectAll("*").remove(),P.selectAll(".usageareas").data(d.value).enter().append("path").attr("d",S=>M(S)).attr("fill",(S,B)=>n[J.value[B]]))}function I(P){nt?(P.selectAll("*").remove(),s=P.selectAll(".usagebar").data(d.value).enter().append("g").attr("fill",(k,M)=>n[a.value[e.stackOrder][M]]).selectAll("rect").data(k=>k).enter().append("rect").attr("x",(k,M)=>Ne.value(f.data[M].date)??0).attr("y",()=>C.value(0)).attr("height",0).attr("width",Ne.value.bandwidth()),s.transition().duration(h).delay(g).ease(st).attr("y",k=>f.graphMode=="year"?C.value(k[0]/1e3):C.value(k[0])).attr("height",k=>f.graphMode=="year"?C.value(k[1]/1e3)-C.value(k[0]/1e3):C.value(k[1])-C.value(k[0])),sa()):(P.selectAll("*").remove(),s=P.selectAll(".usagebar").data(d.value).enter().append("g").attr("fill",(k,M)=>n[a.value[e.stackOrder][M]]).selectAll("rect").data(k=>k).enter().append("rect").attr("x",(k,M)=>Ne.value(f.data[M].date)??0).attr("y",k=>f.graphMode=="year"?C.value(k[0]/1e3):C.value(k[0])).attr("height",k=>f.graphMode=="year"?C.value(k[1]/1e3)-C.value(k[0]/1e3):C.value(k[1])-C.value(k[0])).attr("width",Ne.value.bandwidth()))}const H=p(()=>{const P=de("g#pgUsageGraph");if(f.graphMode!="month"&&f.graphMode!="year"){Pe.value.range(He.value);const k=et().x((M,S)=>Pe.value(f.data[S].date)).y0(M=>C.value(M[0])).y1(M=>C.value(M[1])).curve(tt);P.selectAll("path").attr("d",M=>M?k(M):"")}return"zoomed"});return(P,k)=>(l(),m("g",{id:"pgUsageGraph",origin:c.value,origin2:H.value,transform:"translate("+P.margin.left+","+P.margin.top+")"},null,8,Pn))}}),Vn=["transform"],Ln=["origin","origin2","transform"],On=["origin","transform"],An={key:0},Tn=["width","height"],Dn={key:1},Wn=["y","width","height"],Pt=12,zn=O({__name:"PGXAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=p(()=>it(Pe.value).ticks(6).tickSizeInner(h.value).tickFormat(ot("%H:%M"))),n=p(()=>ao(Pe.value).ticks(6).tickSizeInner(h.value+3).tickFormat(ot(""))),r=p(()=>it(Ne.value).ticks(4).tickSizeInner(h.value).tickFormat(d=>d.toString())),s=p(()=>it(Ne.value).ticks(4).tickSizeInner(h.value).tickFormat(()=>"")),h=p(()=>f.graphMode!=="month"&&f.graphMode!=="year"?v.showGrid?-(e.height/2-7):-10:0),g=p(()=>{let d=de("g#PGXAxis");return d.selectAll("*").remove(),f.graphMode=="month"||f.graphMode=="year"?d.call(r.value):d.call(a.value),d.selectAll(".tick > text").attr("fill",(C,J)=>J>=0||f.graphMode=="month"||f.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",Pt),v.showGrid?d.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):d.selectAll(".tick line").attr("stroke","var(--color-bg)"),d.select(".domain").attr("stroke","var(--color-bg)"),d.append("text").attr("x",-e.margin.left).attr("y",12).attr("fill","var(--color-axis)").attr("font-size",Pt).text(f.graphMode=="year"?"MW":"kW").attr("text-anchor","start"),"PGXAxis.vue"}),c=p(()=>{let d=de("g#PGXAxis2");return d.selectAll("*").remove(),f.graphMode=="month"||f.graphMode=="year"?d.call(s.value):d.call(n.value),d.selectAll(".tick > text").attr("fill",(C,J)=>J>=0||f.graphMode=="month"||f.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",Pt),v.showGrid?(d.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"),d.select(".domain").attr("stroke","var(--color-bg)")):d.selectAll(".tick line").attr("stroke","var(--color-bg)"),d.select(".domain").attr("stroke","var(--color-bg)"),"PGXAxis2.vue"}),u=p(()=>{if(f.graphMode!="month"&&f.graphMode!="year"){const d=de("g#PGXAxis"),C=de("g#PGXAxis2");f.graphMode=="month"||f.graphMode=="year"?(Ne.value.range(He.value),d.call(r.value),C.call(s.value)):(Pe.value.range(He.value),d.call(a.value),C.call(n.value))}return"zoomed"});return(d,C)=>(l(),m("g",{transform:"translate("+d.margin.left+","+d.margin.top+")"},[o("g",{id:"PGXAxis",class:"axis",origin:g.value,origin2:u.value,transform:"translate(0,"+(d.height/2-6)+")"},null,8,Ln),o("g",{id:"PGXAxis2",class:"axis",origin:c.value,transform:"translate(0,"+(d.height/2+10)+")"},null,8,On),i(v).showGrid?(l(),m("g",An,[o("rect",{x:"0",y:"0",width:d.width,height:d.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Tn)])):w("",!0),i(v).showGrid?(l(),m("g",Dn,[o("rect",{x:"0",y:d.height/2+10,width:d.width,height:d.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Wn)])):w("",!0)],8,Vn))}}),Gn=["id",".origin","d"],En=["id","d","stroke"],jn=["x","y","text-anchor"],Bt=O({__name:"PgSoc",props:{width:{},height:{},margin:{},order:{}},setup(t){const e=t,a=p(()=>{let L=Be(f.data,E=>E.date);return L[0]&&L[1]?Qe().domain(L).range([0,e.width]):Qe().range([0,0])}),n=p(()=>Ze().range([e.height-10,0]).domain([0,100])),r=p(()=>{let E=bt().x(T=>a.value(T.date)).y(T=>n.value(e.order==2?T.batSoc:T["soc"+u.value.connectedVehicle])??n.value(0))(f.data);return E||""}),s=p(()=>e.order==2?"Speicher":u.value.connectedVehicle),h=p(()=>e.order==2?"Speicher":u.value.vehicleName),g=p(()=>{switch(e.order){case 0:return"var(--color-cp1)";case 1:return"var(--color-cp2)";case 2:return"var(--color-battery)";default:return"red"}}),c=p(()=>{switch(e.order){case 0:return e.width-3;case 1:return 3;case 2:return e.width/2;default:return 0}}),u=p(()=>{const L=e.order==2?0:e.order;return Object.values(V)[L]}),d=p(()=>{if(f.data.length>0){let L;switch(e.order){case 0:return L=f.data.length-1,n.value(f.data[L]["soc"+s.value]+2);case 1:return L=0,n.value(f.data[L]["soc"+s.value]+2);case 2:return L=Math.round(f.data.length/2),n.value(f.data[L].batSoc+2);default:return 0}}else return 0}),C=p(()=>{switch(e.order){case 0:return"end";case 1:return"start";case 2:return"middle";default:return"middle"}}),J=p(()=>{if(f.graphMode!="month"&&f.graphMode!="year"){const L=de("path#soc-"+s.value),E=de("path#socdashes-"+s.value);a.value.range(He.value);const T=bt().x(q=>a.value(q.date)).y(q=>n.value(e.order==2?q.batSoc:q["soc"+u.value.connectedVehicle])??n.value(0));L.attr("d",T(f.data)),E.attr("d",T(f.data))}return"zoomed"});return(L,E)=>(l(),m(G,null,[o("path",{id:"soc-"+s.value,".origin":J.value,class:"soc-baseline",d:r.value,stroke:"var(--color-bg)","stroke-width":"1",fill:"none"},null,40,Gn),o("path",{id:"socdashes-"+s.value,class:"soc-dashes",d:r.value,stroke:g.value,"stroke-width":"1",style:{strokeDasharray:"3,3"},fill:"none"},null,8,En),o("text",{class:"cpname",x:c.value,y:d.value,style:Z({fill:g.value,fontSize:10}),"text-anchor":C.value},x(h.value),13,jn)],64))}}),Un=["transform"],Fn=O({__name:"PgSocAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=p(()=>Ze().range([e.height-10,0]).domain([0,100])),n=p(()=>oo(a.value).ticks(5).tickFormat(s=>s.toString()+"%"));function r(){let s=de("g#PGSocAxis");s.call(n.value),s.selectAll(".tick").attr("font-size",12),s.selectAll(".tick line").attr("stroke","var(--color-bg)"),s.select(".domain").attr("stroke","var(--color-bg)")}return Ve(()=>{r()}),(s,h)=>(l(),m("g",{id:"PGSocAxis",class:"axis",transform:"translate("+(s.width-20)+",0)"},null,8,Un))}}),Nn=t=>(oe("data-v-7b8949f3"),t=t(),ne(),t),Hn={class:"d-flex align-self-top justify-content-center align-items-center"},Rn={class:"input-group input-group-xs"},Jn={key:0,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},qn={class:"dropdown-menu"},Yn={class:"table optiontable"},Qn=["onClick"],Zn={key:1,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},Xn={class:"dropdown-menu"},Kn={class:"table optiontable"},er=["onClick"],tr={key:2,class:"btn dropdown-toggle",type:"button","data-bs-toggle":"dropdown"},ar={class:"dropdown-menu"},or={class:"table optiontable"},nr=["onClick"],rr=Nn(()=>o("span",{class:"fa-solid fa-circle-check"},null,-1)),sr=[rr],ir=O({__name:"DateInput",props:{modelValue:{type:Date,required:!0},mode:{type:String,default:"day"}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=new Date().getFullYear();let r=Array.from({length:10},(L,E)=>n-E);const s=X(!0),h=e,g=[[0,1,2,3],[4,5,6,7],[8,9,10,11]],c=X(a.modelValue.getDate()),u=X(a.modelValue.getMonth()),d=X(a.modelValue.getFullYear()),C=p(()=>{const E=new Date(d.value,u.value,1).getDay();let T=0;switch(u.value){case 1:case 3:case 5:case 7:case 8:case 10:case 12:T=31;break;case 4:case 6:case 9:case 11:T=30;break;case 2:Math.trunc(d.value/4)*4==d.value&&(T=29)}let q=[],I=[0,0,0,0,0,0,0],H=E;for(let P=0;P<T;P++)I[H]=P+1,H==6?(q.push(I),I=[0,0,0,0,0,0,0],H=0):H++;return H<8&&q.push(I),q});function J(){h("update:modelValue",new Date(d.value,u.value,c.value)),s.value=!1}return(L,E)=>(l(),m("span",Hn,[o("div",Rn,[a.mode=="day"||a.mode=="today"?(l(),m("button",Jn,x(c.value),1)):w("",!0),o("div",qn,[o("table",Yn,[(l(!0),m(G,null,K(C.value,(T,q)=>(l(),m("tr",{key:q,class:""},[(l(!0),m(G,null,K(T,(I,H)=>(l(),m("td",{key:H},[I!=0?(l(),m("span",{key:0,type:"button",class:"btn optionbutton",onClick:P=>c.value=I},x(I),9,Qn)):w("",!0)]))),128))]))),128))])]),a.mode!="year"&&a.mode!="live"?(l(),m("button",Zn,x(u.value+1),1)):w("",!0),o("div",Xn,[o("table",Kn,[(l(),m(G,null,K(g,(T,q)=>o("tr",{key:q,class:""},[(l(!0),m(G,null,K(T,(I,H)=>(l(),m("td",{key:H,class:"p-0 m-0"},[o("span",{type:"button",class:"btn btn-sm optionbutton",onClick:P=>u.value=I},x(I+1),9,er)]))),128))])),64))])]),a.mode!="live"?(l(),m("button",tr,x(d.value),1)):w("",!0),o("div",ar,[o("table",or,[(l(!0),m(G,null,K(i(r),(T,q)=>(l(),m("tr",{key:q,class:""},[o("td",null,[o("span",{type:"button",class:"btn optionbutton",onClick:I=>d.value=T},x(T),9,nr)])]))),128))])]),a.mode!="live"?(l(),m("button",{key:3,class:"button-outline-secondary",type:"button",onClick:J},sr)):w("",!0)])]))}}),U=(t,e)=>{const a=t.__vccOpts||t;for(const[n,r]of e)a[n]=r;return a},lr=U(ir,[["__scopeId","data-v-7b8949f3"]]),cr={class:"btn-group m-0",role:"group","aria-label":"radiobar"},dr=["id","value"],ur=O({__name:"RadioBarInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,r=p({get(){return a.modelValue},set(g){n("update:modelValue",g)}});function s(g){let c=a.options[g].color?a.options[g].color:"var(--color-fg)";return a.options[g].active?{color:"var(--color-bg)",background:c}:{color:c}}function h(g){let c=g.target;for(;c&&!c.value&&c.parentElement;)c=c.parentElement;c.value&&(r.value=c.value)}return(g,c)=>(l(),m("div",null,[o("div",cr,[(l(!0),m(G,null,K(g.options,(u,d)=>(l(),m("button",{id:"radio-"+u.value,key:d,class:N(["btn btn-outline-secondary btn-sm radiobutton mx-0 mb-0 px-2",u.value==r.value?"active":""]),value:u.value,style:Z(s(d)),onClick:h},[o("span",{style:Z(s(d))},[u.icon?(l(),m("i",{key:0,class:N(["fa-solid",u.icon])},null,2)):w("",!0),z(" "+x(u.text),1)],4)],14,dr))),128))])]))}}),Pa=U(ur,[["__scopeId","data-v-82ab6829"]]),Mt=t=>(oe("data-v-d75ec1a4"),t=t(),ne(),t),hr=Mt(()=>o("i",{class:"fa-solid fa-xl fa-chevron-circle-up"},null,-1)),pr=[hr],gr=Mt(()=>o("span",{class:"fa-solid fa-xl fa-chevron-circle-left arrowButton"},null,-1)),mr=[gr],vr=Mt(()=>o("span",{class:"fa-solid fa-xl fa-gear"},null,-1)),fr=[vr],_r=Mt(()=>o("span",{class:"fa-solid fa-xl fa-circle-check"},null,-1)),br=[_r],yr=O({__name:"PgSelector",props:{widgetid:{},showLeftButton:{type:Boolean},showRightButton:{type:Boolean},ignoreLive:{type:Boolean}},emits:["shiftLeft","shiftRight","shiftUp","shiftDown"],setup(t){const e=t,a=X(0),n=p(()=>{if(f.waitForData)return"Lädt";switch(f.graphMode){case"live":return e.ignoreLive?"heute":`${pe.duration} min`;case"today":return"heute";case"day":return ce.date.getDate()+"."+(ce.date.getMonth()+1)+".";case"month":return en(Ae.month-1,Ae.year);case"year":return Fe.year.toString();default:return"???"}}),r=["live","today","day","month","year"],s=["Live","Heute","Tag","Monat","Jahr"],h=p({get(){return f.graphMode},set(H){switch(H){case"day":C();break;case"today":J();break;case"live":d();break;case"month":L();break;case"year":E()}}}),g=p(()=>{switch(f.graphMode){case"live":case"today":return ce.getDate();case"month":return Ae.getDate();default:return ce.getDate()}});function c(H){ia(H)}function u(){a.value+=1,a.value>2&&(a.value=0)}function d(){f.graphMode!="live"&&(f.graphMode="live",me())}function C(){f.graphMode!="day"&&f.graphMode!="today"&&(f.graphMode="day",me())}function J(){f.graphMode!="today"&&(f.graphMode="today",ia(new Date),me())}function L(){f.graphMode!="month"&&(f.graphMode="month",me())}function E(){f.graphMode!="year"&&(f.graphMode="year",me())}const T=p(()=>a.value>0?{border:"1px solid var(--color-frame)"}:""),q=p(()=>a.value==1?"justify-content-between":"justify-content-end"),I=p(()=>a.value==1?"justify-content-between":"justify-content-center");return(H,P)=>(l(),m("div",{class:"d-flex flex-column justify-content-center pgselector rounded",style:Z(T.value)},[a.value==2?(l(),$(Pa,{key:0,id:"pgm2",modelValue:h.value,"onUpdate:modelValue":P[0]||(P[0]=k=>h.value=k),class:"m-2",options:r.map((k,M)=>({text:s[M],value:k,color:"var(--color-menu)",active:k==i(f).graphMode}))},null,8,["modelValue","options"])):w("",!0),a.value==1?(l(),m("span",{key:1,type:"button",class:N(["arrowButton d-flex align-self-center mb-3 mt-3",{disabled:!e.showLeftButton}]),onClick:P[1]||(P[1]=k=>H.$emit("shiftUp"))},pr,2)):w("",!0),o("div",{class:N(["d-flex align-items-center",I.value])},[a.value==1?(l(),m("span",{key:0,type:"button",class:N(["p-1",{disabled:!e.showLeftButton}]),onClick:P[2]||(P[2]=k=>H.$emit("shiftLeft"))},mr,2)):w("",!0),a.value<2?(l(),m("span",{key:1,type:"button",class:"btn-outline-secondary p-2 px-3 badge rounded-pill datebadge",onClick:u},x(n.value),1)):w("",!0),a.value==2?(l(),$(lr,{key:2,"model-value":g.value,mode:i(f).graphMode,"onUpdate:modelValue":c},null,8,["model-value","mode"])):w("",!0),a.value==1?(l(),m("span",{key:3,id:"graphRightButton",type:"button",class:N(["arrowButton fa-solid fa-xl fa-chevron-circle-right p-1",{disabled:!e.showRightButton}]),onClick:P[3]||(P[3]=k=>H.$emit("shiftRight"))},null,2)):w("",!0)],2),o("div",{class:N(["d-flex align-items-center",q.value])},[a.value==1?(l(),m("span",{key:0,type:"button",class:"p-1",onClick:u},fr)):w("",!0),a.value==1?(l(),m("span",{key:1,id:"graphLeftButton",type:"button",class:N(["arrowButton fa-solid fa-xl fa-chevron-circle-down p-1",{disabled:!e.showLeftButton}]),onClick:P[4]||(P[4]=k=>H.$emit("shiftDown"))},null,2)):w("",!0),a.value>0?(l(),m("span",{key:2,type:"button",class:"p-1",onClick:P[5]||(P[5]=k=>a.value=0)},br)):w("",!0)],2)],4))}}),Ba=U(yr,[["__scopeId","data-v-d75ec1a4"]]),wr=["x","fill"],kr=["x"],Ie=O({__name:"PgToolTipLine",props:{cat:{},name:{},indent:{},power:{},width:{}},setup(t){const e=t;return(a,n)=>(l(),m(G,null,[a.power>0?(l(),m("tspan",{key:0,x:a.indent,dy:"1.3em",class:N(a.name?"":"fas"),fill:i(se)[a.cat].color},x(a.name?a.name:i(se)[a.cat].icon)+"   ",11,wr)):w("",!0),o("tspan",{"text-anchor":"end",x:a.width-a.indent},[e.power>0?(l(),$(vt,{key:0,watt:a.power*1e3},null,8,["watt"])):w("",!0)],8,kr)],64))}}),Sr=["transform"],xr=["width","height"],$r={"text-anchor":"start",x:"5",y:"20","font-size":"16",fill:"var(--color-fg)"},Mr=["x"],Ir=o("line",{y:"120",x1:"5",x2:"100",stroke:"var(--color-fg)","stroke-width":"1"},null,-1),Cr=O({__name:"PgToolTipItem",props:{entry:{},boxwidth:{},xScale:{type:[Function,Object]}},setup(t){const e=t,a=p(()=>Object.values(e.entry).filter(c=>c>0).length),n=p(()=>a.value*16),r=p(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("pv")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:Ue.value.get(c)?g(Ue.value.get(c)):"Wechselr.",id:c}))),s=p(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("cp")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:Ue.value.get(c)?g(Ue.value.get(c)):"Ladep.",id:c}))),h=p(()=>Object.entries(e.entry).filter(([c,u])=>c.startsWith("sh")&&c.length>2&&u>0).map(([c,u])=>({power:u,name:Ue.value.get(c)?g(Ue.value.get(c)):"Gerät",id:c})));function g(c){return c.length>6?c.slice(0,6)+"...":c}return(c,u)=>(l(),m("g",{class:"ttmessage",transform:"translate("+c.xScale(c.entry.date)+",0)"},[o("rect",{rx:"5",width:c.boxwidth,height:n.value,fill:"var(--color-bg)",opacity:"80%",stroke:"var(--color-menu)"},null,8,xr),o("text",$r,[o("tspan",{"text-anchor":"middle",x:c.boxwidth/2,dy:"0em"},x(i(ot)("%H:%M")(new Date(c.entry.date))),9,Mr),Ir,b(Ie,{cat:"evuIn",indent:5,power:c.entry.evuIn,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"batOut",indent:5,power:c.entry.batOut,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"pv",indent:5,power:c.entry.pv,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,K(r.value,d=>(l(),$(Ie,{key:d.id,cat:"pv",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Ie,{cat:"house",indent:5,power:c.entry.house,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"charging",indent:5,power:c.entry.charging,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,K(s.value,d=>(l(),$(Ie,{key:d.id,cat:"charging",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Ie,{cat:"devices",indent:5,power:c.entry.devices,width:c.boxwidth},null,8,["power","width"]),(l(!0),m(G,null,K(h.value,d=>(l(),$(Ie,{key:d.id,cat:"devices",name:d.name,power:d.power,indent:10,width:c.boxwidth},null,8,["name","power","width"]))),128)),b(Ie,{cat:"batIn",indent:5,power:c.entry.batIn,width:c.boxwidth},null,8,["power","width"]),b(Ie,{cat:"evuOut",indent:5,power:c.entry.evuOut,width:c.boxwidth},null,8,["power","width"])])],8,Sr))}}),Pr=["origin","transform"],Br=["x","height","width"],da=140,Vr=O({__name:"PgToolTips",props:{width:{},height:{},margin:{},data:{}},setup(t){const e=t,a=p(()=>{const s=Be(e.data,h=>new Date(h.date));return s[0]&&s[1]?Ut().domain(s).range([0,e.width-e.margin.right]):Qe().range([0,0])}),n=p(()=>{const s=Be(e.data,h=>new Date(h.date));return s[0]&&s[1]?Ut().domain(s).range([0,e.width-e.margin.right-da]):Qe().range([0,0])}),r=p(()=>((f.graphMode=="day"||f.graphMode=="today")&&(a.value.range(He.value),de("g#pgToolTips").selectAll("g.ttarea").select("rect").attr("x",(s,h)=>e.data.length>h?a.value(e.data[h].date):0).attr("width",e.data.length>0?(He.value[1]-He.value[0])/e.data.length:0)),"PgToolTips.vue:autozoom"));return(s,h)=>(l(),m("g",{id:"pgToolTips",origin:r.value,transform:"translate("+s.margin.left+","+s.margin.top+")"},[(l(!0),m(G,null,K(s.data,g=>(l(),m("g",{key:g.date,class:"ttarea"},[o("rect",{x:a.value(g.date),y:"0",height:s.height,class:"ttrect",width:i(f).data.length>0?s.width/i(f).data.length:0,opacity:"1%",fill:"var(--color-charging)"},null,8,Br),b(Cr,{entry:g,boxwidth:da,"x-scale":n.value},null,8,["entry","x-scale"])]))),128))],8,Pr))}}),Va=t=>(oe("data-v-9dcdaf2b"),t=t(),ne(),t),Lr={class:"d-flex justify-content-end"},Or=Va(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-magnifying-glass"},null,-1)),Ar=[Or],Tr={id:"powergraph",class:"p-0 m-0"},Dr=["viewBox"],Wr=["transform"],zr=["x","y"],Gr=Va(()=>o("tspan",{fill:"var(--color-menu)",class:"fas fa-lg"},x(""),-1)),Er=[Gr],jr=2,Ur="Leistung / Ladestand ",Fr=O({__name:"PowerGraph",setup(t){function e(){let h=v.usageStackOrder+1;h>jr&&(h=0),v.usageStackOrder=h,Ao(!0)}function a(h){const g=[[0,W.top],[be,xe-W.top]];h.call(ro().scaleExtent([1,8]).translateExtent([[0,0],[be,xe]]).extent(g).filter(r).on("zoom",n))}function n(h){ka.value=h.transform}function r(h){return h.preventDefault(),(!h.ctrlKey||h.type==="wheel")&&!h.button}function s(){v.zoomGraph=!v.zoomGraph}return Ve(()=>{const h=de("svg#powergraph");a(h)}),(h,g)=>(l(),$($t,{"full-width":!0},{title:y(()=>[z(x(Ur))]),buttons:y(()=>[o("div",Lr,[b(Ba,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!1,onShiftLeft:i(Kt),onShiftRight:i(Sa),onShiftUp:i(xa),onShiftDown:i($a)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"]),i(Re)?(l(),m("span",{key:0,type:"button",class:"ms-1 p-0 pt-1",onClick:s},Ar)):w("",!0)])]),default:y(()=>[gt(o("figure",Tr,[(l(),m("svg",{id:"powergraph",viewBox:"0 0 "+i(be)+" "+i(xe)},[b(Cn,{width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W)},null,8,["width","height","margin"]),b(Bn,{width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),"stack-order":i(v).usageStackOrder},null,8,["width","height","margin","stack-order"]),b(zn,{width:i(be)-i(W).left-2*i(W).right,height:i(xe)-i(W).top-i(W).bottom,margin:i(W),"graph-data":i(f)},null,8,["width","height","margin","graph-data"]),o("g",{transform:"translate("+i(W).left+","+i(W).top+")"},[(i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live")&&Object.values(i(V)).length>0?(l(),$(Bt,{key:0,width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),order:0},null,8,["width","height","margin"])):w("",!0),(i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live")&&Object.values(i(V)).length>1?(l(),$(Bt,{key:1,width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),order:1},null,8,["width","height","margin"])):w("",!0),(i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live")&&i(ue).isBatteryConfigured?(l(),$(Bt,{key:2,width:i(be)-i(W).left-2*i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W),order:2},null,8,["width","height","margin"])):w("",!0),i(f).graphMode=="day"||i(f).graphMode=="today"||i(f).graphMode=="live"?(l(),$(Fn,{key:3,width:i(be)-i(W).left-i(W).right,height:(i(xe)-i(W).top-i(W).bottom)/2,margin:i(W)},null,8,["width","height","margin"])):w("",!0)],8,Wr),i(f).graphMode=="day"||i(f).graphMode=="today"?(l(),$(Vr,{key:0,width:i(be)-i(W).left-i(W).right,height:i(xe)-i(W).top-i(W).bottom,margin:i(W),data:i(f).data},null,8,["width","height","margin","data"])):w("",!0),o("g",{id:"button",onClick:e},[o("text",{x:i(be)-10,y:i(xe)-10,color:"var(--color-menu)","text-anchor":"end"},Er,8,zr)])],8,Dr))],512),[[no,i(f).data.length>0]])]),_:1}))}}),Nr=U(Fr,[["__scopeId","data-v-9dcdaf2b"]]),Hr=["id"],Rr=["x","width","height","fill"],Jr=["x","width","height"],qr=["x","y","width","height"],Yr=O({__name:"EmBar",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=p(()=>e.height-e.yScale(e.item.energy)-e.margin.top-e.margin.bottom),n=p(()=>{let s=0;return e.item.energyPv>0&&(s=e.height-e.yScale(e.item.energyPv)-e.margin.top-e.margin.bottom),s>a.value&&(s=a.value),s}),r=p(()=>{let s=0;return e.item.energyBat>0&&(s=e.height-e.yScale(e.item.energyBat)-e.margin.top-e.margin.bottom),s>a.value&&(s=a.value),s});return(s,h)=>(l(),m("g",{id:"bar-"+e.item.name,transform:"scale(1,-1) translate (0,-445)"},[o("rect",{class:"bar",x:e.xScale(s.item.name),y:"0",width:e.xScale.bandwidth(),height:a.value,fill:s.item.color},null,8,Rr),o("rect",{class:"bar",x:e.xScale(s.item.name)+e.xScale.bandwidth()/6,y:"0",width:e.xScale.bandwidth()*2/3,height:n.value,fill:"var(--color-pv)","fill-opacity":"66%"},null,8,Jr),o("rect",{class:"bar",x:e.xScale(s.item.name)+e.xScale.bandwidth()/6,y:n.value,width:e.xScale.bandwidth()*2/3,height:r.value,fill:"var(--color-battery)","fill-opacity":"66%"},null,8,qr)],8,Hr))}}),Qr={id:"emBargraph"},Zr=o("animateTransform",{"attribute-name":"transform",type:"scale",from:"1 0",to:"1 1",begin:"0s",dur:"2s"},null,-1),Xr=O({__name:"EMBarGraph",props:{plotdata:{},xScale:{},yScale:{},margin:{},height:{}},setup(t){const e=t;function a(r){if(r.name=="PV"){const s=f.graphMode=="live"||f.graphMode=="day"?R:A.items,g=(f.graphMode=="live"||f.graphMode=="day"?j:A.items).evuOut.energy,c=s.pv.energy;return Math.round((c-g)/c*100)}else if(r.name=="Netz"){const s=f.graphMode=="live"||f.graphMode=="day"?R:A.items,h=f.graphMode=="live"||f.graphMode=="day"?j:A.items,g=h.evuOut.energy,c=s.evuIn.energy,u=s.pv.energy,d=s.batOut.energy,C=h.batIn.energy;return Math.round((u+d-g-C)/(u+d+c-g-C)*100)}else return r.pvPercentage}function n(r){return r.name=="PV"?"Eigen":"Aut"}return(r,s)=>(l(),m("g",Qr,[(l(!0),m(G,null,K(e.plotdata,(h,g)=>(l(),m("g",{key:g},[b(Yr,{item:h,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":n(h),autarchy:a(h)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128)),Zr]))}}),Kr=["origin"],es=O({__name:"EMYAxis",props:{yScale:{type:[Function,Object]},width:{},fontsize:{}},setup(t){const e=t,a=p(()=>pt(e.yScale).tickFormat(s=>r(s)).ticks(6).tickSizeInner(-e.width)),n=p(()=>{const s=de("g#emYAxis");return s.attr("class","axis").call(a.value),s.append("text").attr("y",6).attr("dy","0.71em").attr("text-anchor","end").text("energy"),s.selectAll(".tick").attr("font-size",e.fontsize),v.showGrid?s.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):s.selectAll(".tick line").attr("stroke","var(--color-bg)"),s.select(".domain").attr("stroke","var(--color-bg)"),"emYAxis.vue"});function r(s){return s>0?f.graphMode=="year"?(s/1e6).toString():(s/1e3).toString():""}return(s,h)=>(l(),m("g",{id:"emYAxis",class:"axis",origin:n.value},null,8,Kr))}}),ts=["id"],as=["x","y","font-size"],os=["x","y","font-size","fill"],ns=["x","y","font-size","fill"],rs=O({__name:"EmLabel",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=p(()=>e.autarchy?e.yScale(e.item.energy)-25:e.yScale(e.item.energy)-10),n=p(()=>{let c=16,u=e.barcount;return u<=5?c=16:u==6?c=14:u>6&&u<=8?c=13:u==9?c=11:u==10?c=10:c=9,c}),r=p(()=>{let c=12,u=e.barcount;return u<=5?c=12:u==6?c=11:u>6&&u<=8||u==9?c=8:u==10?c=7:c=6,c});function s(c,u){return u.length>r.value?u.substring(0,r.value)+".":u}function h(){return e.autarchy?e.autText+": "+e.autarchy.toLocaleString(void 0)+" %":""}function g(){return"var(--color-pv)"}return(c,u)=>(l(),m("g",{id:"barlabel-"+e.item.name},[o("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:a.value,"font-size":n.value,"text-anchor":"middle",fill:"var(--color-menu)"},x(i(ht)(c.item.energy,i(v).decimalPlaces,!1)),9,as),o("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:e.yScale(c.item.energy)-10,"font-size":n.value-2,"text-anchor":"middle",fill:g()},x(h()),9,os),o("text",{x:e.xScale(c.item.name)+e.xScale.bandwidth()/2,y:e.height-e.margin.bottom-5,"font-size":n.value,"text-anchor":"middle",fill:c.item.color,class:N(c.item.icon.length<=2?"fas":"")},x(s(c.item.name,c.item.icon)),11,ns)],8,ts))}}),ss={id:"emBarLabels"},is=O({__name:"EMLabels",props:{plotdata:{},xScale:{},yScale:{},height:{},margin:{}},setup(t){const e=t;function a(r){if(r.name=="PV"){const s=f.graphMode=="live"||f.graphMode=="today"?R:A.items,g=(f.graphMode=="live"||f.graphMode=="today"?j:A.items).evuOut.energy,c=s.pv.energy;return Math.round((c-g)/c*100)}else if(r.name=="Netz"){const s=f.graphMode=="live"||f.graphMode=="today"?R:A.items,h=f.graphMode=="live"||f.graphMode=="today"?j:A.items,g=h.evuOut.energy,c=s.evuIn.energy,u=s.pv.energy,d=s.batOut.energy,C=h.batIn.energy;return u+d-g-C>0?Math.round((u+d-g-C)/(u+d+c-g-C)*100):0}else return r.pvPercentage}function n(r){return r.name=="PV"?"Eigen":"Aut"}return(r,s)=>(l(),m("g",ss,[(l(!0),m(G,null,K(e.plotdata,(h,g)=>(l(),m("g",{key:g},[b(rs,{item:h,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":n(h),autarchy:a(h)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128))]))}}),ls={id:"energymeter",class:"p-0 m-0"},cs={viewBox:"0 0 500 500"},ds=["transform"],us=["x"],hs={key:0},ua=500,Vt=500,ha=12,ps="Energie",gs=O({__name:"EnergyMeter",setup(t){const e={top:25,bottom:30,left:25,right:0},a=p(()=>{let g=Object.values(R),c=s.value;const u=A.items;let d=[];switch(v.debug&&h(),kt.value==!0&&(kt.value=!1),f.graphMode){default:case"live":case"today":d=g.concat(c);break;case"day":case"month":case"year":Object.values(u).length==0?dt.value=!0:(dt.value=!1,d=[u.evuIn,u.pv,u.evuOut,u.batOut,u.charging],Object.values(V).length>1&&Object.keys(V).forEach(C=>{u["cp"+C]&&d.push(u["cp"+C])}),d.push(u.devices),ae.forEach((C,J)=>{C.showInGraph&&u["sh"+J]&&d.push(u["sh"+J])}),d=d.concat([u.batIn,u.house]))}return d.filter(C=>C.energy&&C.energy>0)}),n=p(()=>Ft().range([0,ua-e.left-e.right]).domain(a.value.map(g=>g.name)).padding(.4)),r=p(()=>Ze().range([Vt-e.bottom-e.top,15]).domain([0,so(a.value,g=>g.energy)])),s=p(()=>{const g=Object.values(V).length,c=[...ae.values()].filter(d=>d.configured).length;let u=j;return[...[u.evuOut,u.charging].concat(g>1?Object.values(V).map(d=>d.toPowerItem()):[]),...[u.devices].concat(c>1?[...ae.values()].filter(d=>d.configured&&d.showInGraph):[]).concat([j.batIn,j.house])]});function h(){console.debug(["source summary:",R]),console.debug(["usage details:",s.value]),console.debug(["historic summary:",A])}return(g,c)=>(l(),$($t,{"full-width":!0},{title:y(()=>[z(x(ps))]),buttons:y(()=>[b(Ba,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!0,onShiftLeft:i(Kt),onShiftRight:i(Sa),onShiftUp:i(xa),onShiftDown:i($a)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])]),default:y(()=>[o("figure",ls,[(l(),m("svg",cs,[o("g",{transform:"translate("+e.left+","+e.top+")"},[b(Xr,{plotdata:a.value,"x-scale":n.value,"y-scale":r.value,height:Vt,margin:e},null,8,["plotdata","x-scale","y-scale"]),b(es,{"y-scale":r.value,width:ua,fontsize:ha,config:i(v)},null,8,["y-scale","config"]),o("text",{x:-e.left,y:"-15",fill:"var(--color-axis)","font-size":ha},x(i(f).graphMode=="year"?"MWh":"kWh"),9,us),b(is,{plotdata:a.value,"x-scale":n.value,"y-scale":r.value,height:Vt,margin:e,config:i(v)},null,8,["plotdata","x-scale","y-scale","config"])],8,ds)]))]),i(dt)?(l(),m("p",hs,"No data")):w("",!0)]),_:1}))}}),ms={class:"d-flex flex-column align-items-center justify-content-start infoitem"},vs=O({__name:"InfoItem",props:{heading:{},small:{type:Boolean}},setup(t){const e=t,a=p(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-small)"}),n=p(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-normal)"}),r=p(()=>e.small?"mt-0":"mt-1");return(s,h)=>(l(),m("span",ms,[o("span",{class:N(["d-flex heading",r.value]),style:Z(a.value)},x(e.heading),7),o("span",{class:"d-flex my-0 me-0 align-items-center content",style:Z(n.value)},[he(s.$slots,"default",{},void 0,!0)],4)]))}}),Q=U(vs,[["__scopeId","data-v-f6af00e8"]]),fs={class:"d-flex justify-content-between align-items-center titlerow"},_s={class:"buttonrea d-flex float-right justify-content-end align-items-center"},bs={class:"contentrow grid-col-12"},ys=O({__name:"WbSubwidget",props:{titlecolor:{},fullwidth:{type:Boolean},small:{type:Boolean}},setup(t){const e=t,a=p(()=>{let r={"font-weight":"bold",color:"var(--color-fg)","font-size":"var(--font-normal)"};return e.titlecolor&&(r.color=e.titlecolor),e.small&&(r["font-size"]="var(--font-verysmall)"),r}),n=p(()=>e.fullwidth?"grid-col-12":"grid-col-4");return(r,s)=>(l(),m("div",{class:N(["wb-subwidget px-3 pt-2 my-0",n.value])},[o("div",fs,[o("div",{class:"d-flex widgetname p-0 m-0",style:Z(a.value)},[he(r.$slots,"title",{},void 0,!0)],4),o("div",_s,[he(r.$slots,"buttons",{},void 0,!0)])]),o("div",bs,[he(r.$slots,"default",{},void 0,!0)])],2))}}),Xe=U(ys,[["__scopeId","data-v-e989060d"]]),ws=t=>(oe("data-v-b935eb33"),t=t(),ne(),t),ks={class:"grid-col-12 mt-2 mb-0 px-0 py-0 configitem"},Ss={class:"titlecolumn m-0 p-0 d-flex align-items-center"},xs=ws(()=>o("i",{class:"me-1 fa-solid fa-sm fa-circle-info"},null,-1)),$s={class:"ms-1 mb-2 p-0 pt-2 d-flex justify-content-stretch align-items-center"},Ms={class:"justify-content-stretch d-flex"},Is=O({__name:"ConfigItem",props:{title:{},infotext:{},icon:{},fullwidth:{type:Boolean}},setup(t){const e=t,a=X(!1);function n(){a.value=!a.value}const r=p(()=>{let s={color:"var(--color-charging)"};return a.value&&(s.color="var(--color-battery)"),s});return(s,h)=>(l(),$(Xe,{fullwidth:!!s.fullwidth},{default:y(()=>[o("div",ks,[o("div",Ss,[o("span",{class:"d-flex align-items-baseline m-0 p-0",onClick:n},[e.icon?(l(),m("i",{key:0,class:N(["fa-solid fa-sm m-0 p-0 me-2 item-icon",e.icon])},null,2)):w("",!0),z(" "+x(s.title),1)]),o("span",null,[e.infotext?(l(),m("i",{key:0,class:"fa-solid fa-sm fa-circle-question ms-4 me-2",style:Z(r.value),onClick:n},null,4)):w("",!0)])]),a.value?(l(),m("p",{key:0,class:"infotext shadow m-0 ps-2 mb-1 p-1",onClick:n},[xs,z(" "+x(s.infotext),1)])):w("",!0),o("div",$s,[o("span",Ms,[he(s.$slots,"default",{},void 0,!0)])])])]),_:3},8,["fullwidth"]))}}),F=U(Is,[["__scopeId","data-v-b935eb33"]]),La=t=>(oe("data-v-17a828b1"),t=t(),ne(),t),Cs={class:"d-flex flex-column"},Ps={class:"d-flex flex-fill justify-content-between align-items-center"},Bs=La(()=>o("i",{class:"fa fa-xl fa-minus-square me-2"},null,-1)),Vs=[Bs],Ls=["id","min","max","step"],Os=La(()=>o("i",{class:"fa fa-xl fa-plus-square ms-2"},null,-1)),As=[Os],Ts={class:"d-flex justify-content-between align-items-center"},Ds={class:"minlabel ps-4"},Ws={class:"valuelabel"},zs={class:"maxlabel pe-4"},Gs=O({__name:"RangeInput",props:{id:{},min:{},max:{},step:{},unit:{},decimals:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=a.decimals??0,r=e,s=p({get(){return Math.round(a.modelValue*Math.pow(10,n))/Math.pow(10,n)},set(c){r("update:modelValue",c)}});function h(){s.value>a.min&&(s.value=Math.round((s.value-a.step)*Math.pow(10,n))/Math.pow(10,n))}function g(){s.value<a.max&&(s.value=Math.round((s.value+a.step)*Math.pow(10,n))/Math.pow(10,n))}return(c,u)=>(l(),m("span",Cs,[o("span",Ps,[o("span",{type:"button",class:"minusButton",onClick:h},Vs),gt(o("input",{id:c.id,"onUpdate:modelValue":u[0]||(u[0]=d=>s.value=d),type:"range",class:"form-range flex-fill",min:c.min,max:c.max,step:c.step},null,8,Ls),[[io,s.value,void 0,{number:!0}]]),o("span",{type:"button",class:"plusButton",onClick:g},As)]),o("span",Ts,[o("span",Ds,x(c.min),1),o("span",Ws,x(s.value)+" "+x(c.unit),1),o("span",zs,x(c.max),1)])]))}}),De=U(Gs,[["__scopeId","data-v-17a828b1"]]),Es=["id","value"],js=O({__name:"RadioInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,r=p({get(){return a.modelValue},set(g){n("update:modelValue",g)}});function s(g){return a.options[g][2]?{color:a.options[g][2]}:{color:"var(--color-fg)"}}function h(g){let c=g.target;for(;c&&!c.value&&c.parentElement;)c=c.parentElement;c.value&&(r.value=c.value)}return(g,c)=>(l(),m("div",null,[(l(!0),m(G,null,K(g.options,(u,d)=>(l(),m("button",{id:"radio-"+u[1],key:d,class:N(["btn btn-outline-secondary radiobutton me-2 mb-0 px-2",u[1]==r.value?"active":""]),value:u[1],style:Z(s(d)),onClick:h},[o("span",{style:Z(s(d))},[u[3]?(l(),m("i",{key:0,class:N(["fa-solid",u[3]])},null,2)):w("",!0),z(" "+x(u[0]),1)],4)],14,Es))),128))]))}}),We=U(js,[["__scopeId","data-v-df222cbe"]]),Us=t=>(oe("data-v-0303d179"),t=t(),ne(),t),Fs={class:"mt-2"},Ns=Us(()=>o("p",{class:"heading ms-1"},"Sofortladen:",-1)),Hs={key:0},Rs=O({__name:"CPConfigInstant",props:{chargepoint:{}},setup(t){const a=X(t.chargepoint),n=[{name:"keine",id:"none"},{name:"EV-SoC",id:"soc"},{name:"Energiemenge",id:"amount"}],r=p({get(){return a.value.instantMaxEnergy/1e3},set(s){a.value.instantMaxEnergy=s*1e3}});return(s,h)=>(l(),m("div",Fs,[Ns,b(F,{title:"Stromstärke",icon:"fa-bolt",fullwidth:!0},{default:y(()=>[b(De,{id:"targetCurrent",modelValue:a.value.instantTargetCurrent,"onUpdate:modelValue":h[0]||(h[0]=g=>a.value.instantTargetCurrent=g),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1}),a.value.instantChargeLimitMode!="none"?(l(),m("hr",Hs)):w("",!0),b(F,{title:"Begrenzung",icon:"fa-hand",fullwidth:!0},{default:y(()=>[b(We,{modelValue:a.value.instantChargeLimitMode,"onUpdate:modelValue":h[1]||(h[1]=g=>a.value.instantChargeLimitMode=g),options:n.map(g=>[g.name,g.id])},null,8,["modelValue","options"])]),_:1}),a.value.instantChargeLimitMode=="soc"?(l(),$(F,{key:1,title:"Maximaler SoC",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(De,{id:"maxSoc",modelValue:a.value.instantTargetSoc,"onUpdate:modelValue":h[2]||(h[2]=g=>a.value.instantTargetSoc=g),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),a.value.instantChargeLimitMode=="amount"?(l(),$(F,{key:2,title:"Zu ladende Energie",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(De,{id:"maxEnergy",modelValue:r.value,"onUpdate:modelValue":h[3]||(h[3]=g=>r.value=g),min:0,max:100,step:1,unit:"kWh"},null,8,["modelValue"])]),_:1})):w("",!0)]))}}),Js=U(Rs,[["__scopeId","data-v-0303d179"]]),qs={class:"form-check form-switch"},le=O({__name:"SwitchInput",props:{modelValue:{type:Boolean},onColor:{},offColor:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,r=p({get(){return a.modelValue},set(h){n("update:modelValue",h)}}),s=p(()=>r.value?{"background-color":"green"}:{"background-color":"white"});return(h,g)=>(l(),m("div",qs,[gt(o("input",{"onUpdate:modelValue":g[0]||(g[0]=c=>r.value=c),class:"form-check-input",type:"checkbox",role:"switch",style:Z(s.value)},null,4),[[_a,r.value]])]))}}),Ys=t=>(oe("data-v-faa69015"),t=t(),ne(),t),Qs={class:"pt-2"},Zs=Ys(()=>o("p",{class:"heading ms-1"},"PV-Laden:",-1)),Xs={key:3},Ks=O({__name:"CPConfigPv",props:{chargepoint:{}},setup(t){const a=X(t.chargepoint),n=p({get(){return a.value.pvMinCurrent>5},set(h){h?a.value.pvMinCurrent=6:a.value.pvMinCurrent=0}}),r=p({get(){return a.value.pvMinSoc>0},set(h){h?a.value.pvMinSoc=50:a.value.pvMinSoc=0}}),s=p({get(){return a.value.pvMaxSoc<=100},set(h){h?a.value.pvMaxSoc=100:a.value.pvMaxSoc=101}});return(h,g)=>(l(),m("div",Qs,[Zs,b(F,{title:"Ladestand begrenzen",icon:"fa-battery-three-quarters",fullwidth:!0},{default:y(()=>[b(le,{id:"limitSoc",modelValue:s.value,"onUpdate:modelValue":g[0]||(g[0]=c=>s.value=c)},null,8,["modelValue"])]),_:1}),s.value?(l(),$(F,{key:0,title:"...auf maximal...",icon:"fa-battery-three-quarters",fullwidth:!0},{default:y(()=>[b(De,{id:"maxSoc",modelValue:a.value.pvMaxSoc,"onUpdate:modelValue":g[1]||(g[1]=c=>a.value.pvMaxSoc=c),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),b(F,{title:"Einspeisegrenze beachten",icon:"fa-hand",fullwidth:!0},{default:y(()=>[b(le,{modelValue:a.value.pvFeedInLimit,"onUpdate:modelValue":g[2]||(g[2]=c=>a.value.pvFeedInLimit=c)},null,8,["modelValue"])]),_:1}),b(F,{title:"Mindest-Ladestand",icon:"fa-battery-half",infotext:i(Oe).minsoc,fullwidth:!0},{default:y(()=>[b(le,{modelValue:r.value,"onUpdate:modelValue":g[3]||(g[3]=c=>r.value=c)},null,8,["modelValue"])]),_:1},8,["infotext"]),r.value?(l(),$(F,{key:1,title:"...bis SoC",fullwidth:!0},{info:y(()=>[z(x(i(Oe).minsoc),1)]),default:y(()=>[b(De,{id:"minSoc",modelValue:a.value.pvMinSoc,"onUpdate:modelValue":g[4]||(g[4]=c=>a.value.pvMinSoc=c),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):w("",!0),r.value?(l(),$(F,{key:2,title:"...mit Ladestrom",fullwidth:!0},{default:y(()=>[b(De,{id:"minSocCurrent",modelValue:a.value.pvMinSocCurrent,"onUpdate:modelValue":g[5]||(g[5]=c=>a.value.pvMinSocCurrent=c),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):w("",!0),n.value||r.value?(l(),m("hr",Xs)):w("",!0),b(F,{title:"Minimaler Ladestrom",icon:"fa-bolt",infotext:i(Oe).minpv,fullwidth:!0},{default:y(()=>[b(le,{modelValue:n.value,"onUpdate:modelValue":g[6]||(g[6]=c=>n.value=c)},null,8,["modelValue"])]),_:1},8,["infotext"]),n.value?(l(),$(F,{key:4,title:"...bei Ladestrom (minimal)",fullwidth:!0},{default:y(()=>[b(De,{id:"minCurrent",modelValue:a.value.pvMinCurrent,"onUpdate:modelValue":g[7]||(g[7]=c=>a.value.pvMinCurrent=c),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):w("",!0)]))}}),ei=U(Ks,[["__scopeId","data-v-faa69015"]]),Oa=t=>(oe("data-v-e8f5ad9d"),t=t(),ne(),t),ti=Oa(()=>o("p",{class:"heading ms-1 pt-2"},"Zielladen:",-1)),ai={class:"table table-borderless"},oi=Oa(()=>o("thead",null,[o("tr",null,[o("th",{class:"tableheader"},"Ziel"),o("th",{class:"tableheader"},"Limit"),o("th",{class:"tableheader"},"Zeit"),o("th",{class:"tableheader"},"Wiederholung"),o("th",{class:"tableheader"})])],-1)),ni={class:"tablecell"},ri={class:"tablecell"},si={class:"tablecell"},ii={class:"tablecell"},li={class:"tablecell left"},ci=["href"],di=O({__name:"CPConfigScheduled",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,n=p(()=>{let g=[];return lt[a.chargeTemplateId]&&(g=Object.values(lt[a.chargeTemplateId])),g});function r(g){return n.value[g].time}function s(g){return{color:n.value[g].active?"var(--color-switchGreen)":"var(--color-switchRed)"}}function h(g){return{"font-weight":n.value[g].active?"bold":"regular"}}return(g,c)=>(l(),m(G,null,[ti,o("table",ai,[oi,o("tbody",null,[(l(!0),m(G,null,K(n.value,(u,d)=>(l(),m("tr",{key:d,style:Z(h(d))},[o("td",ni,x(u.limit.soc_scheduled)+"%",1),o("td",ri,x(u.limit.soc_limit)+"%",1),o("td",si,x(r(d)),1),o("td",ii,x(e[u.frequency.selected]),1),o("td",li,[o("a",{href:"../../settings/#/VehicleConfiguration/charge_template/"+a.chargeTemplateId},[o("span",{class:N([u.active?"fa-toggle-on":"fa-toggle-off","fa"]),style:Z(s(d)),type:"button"},null,6)],8,ci)])],4))),128))])])],64))}}),ui=U(di,[["__scopeId","data-v-e8f5ad9d"]]),Aa=t=>(oe("data-v-192e287b"),t=t(),ne(),t),hi=Aa(()=>o("p",{class:"heading ms-1 pt-2"},"Zeitpläne:",-1)),pi={class:"table table-borderless"},gi=Aa(()=>o("thead",null,[o("tr",null,[o("th",{class:"tableheader"},"Von"),o("th",{class:"tableheader"},"Bis"),o("th",{class:"tableheader"},"Ladestrom"),o("th",{class:"tableheader"},"Wiederholung"),o("th",{class:"tableheader right"})])],-1)),mi={class:"tablecell"},vi={class:"tablecell"},fi={class:"tablecell"},_i={class:"tablecell"},bi={class:"tablecell left"},yi=["href"],wi=O({__name:"CPConfigTimed",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,n=p(()=>ct[a.chargeTemplateId]?Object.values(ct[a.chargeTemplateId])??[]:[]);function r(h){return{color:n.value[h].active?"var(--color-switchGreen)":"var(--color-switchRed)"}}function s(h){return{"font-weight":n.value[h].active?"bold":"regular"}}return(h,g)=>(l(),m(G,null,[hi,o("table",pi,[gi,o("tbody",null,[(l(!0),m(G,null,K(n.value,(c,u)=>(l(),m("tr",{key:u,style:Z(s(u))},[o("td",mi,x(c.time[0]),1),o("td",vi,x(c.time[1]),1),o("td",fi,x(c.current)+" A",1),o("td",_i,x(e[c.frequency.selected]),1),o("td",bi,[o("a",{href:"../../settings/#/VehicleConfiguration/charge_template/"+a.chargeTemplateId},[o("span",{class:N([c.active?"fa-toggle-on":"fa-toggle-off","fa"]),style:Z(r(u)),type:"button"},null,6)],8,yi)])],4))),128))])])],64))}}),ki=U(wi,[["__scopeId","data-v-192e287b"]]),Si={class:"settingsheader mt-2 ms-1"},xi=O({__name:"CPConfigVehicle",props:{vehicleId:{}},setup(t){const e=t;return(a,n)=>(l(),m(G,null,[o("p",Si," Profile für "+x(i(Y)[e.vehicleId].name)+": ",1),b(F,{title:"Ladeprofil",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(Y)[e.vehicleId].chargeTemplateId,"onUpdate:modelValue":n[0]||(n[0]=r=>i(Y)[e.vehicleId].chargeTemplateId=r),modelModifiers:{number:!0},options:Object.keys(i(ye)).map(r=>[i(ye)[+r].name,r])},null,8,["modelValue","options"])]),_:1}),b(F,{title:"Fahrzeug-Vorlage",icon:"fa-sliders",fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(Y)[e.vehicleId].evTemplateId,"onUpdate:modelValue":n[1]||(n[1]=r=>i(Y)[e.vehicleId].evTemplateId=r),modelModifiers:{number:!0},options:Object.keys(i(Ht)).map(r=>[i(Ht)[+r].name,r])},null,8,["modelValue","options"])]),_:1})],64))}}),$i=U(xi,[["__scopeId","data-v-fcb57a44"]]),Mi={class:"settingsheader mt-2 ms-1"},Ii=O({__name:"CPChargeConfig",props:{chargepoint:{}},emits:["closeConfig"],setup(t){const a=t.chargepoint;return(n,r)=>(l(),m(G,null,[o("p",Mi," Ladeeinstellungen für "+x(i(a).vehicleName)+": ",1),b(F,{title:"Lademodus",icon:"fa-charging-station",infotext:i(Oe).chargemode,fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(a).chargeMode,"onUpdate:modelValue":r[0]||(r[0]=s=>i(a).chargeMode=s),options:Object.keys(i(ge)).map(s=>[i(ge)[s].name,s,i(ge)[s].color,i(ge)[s].icon])},null,8,["modelValue","options"])]),_:1},8,["infotext"]),b(F,{title:"Fahrzeug wechseln",icon:"fa-car",infotext:i(Oe).vehicle,fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(a).connectedVehicle,"onUpdate:modelValue":r[1]||(r[1]=s=>i(a).connectedVehicle=s),modelModifiers:{number:!0},options:Object.values(i(Y)).filter(s=>s.visible).map(s=>[s.name,s.id])},null,8,["modelValue","options"])]),_:1},8,["infotext"]),b(F,{title:"Sperren",icon:"fa-lock",infotext:i(Oe).locked,fullwidth:!0},{default:y(()=>[b(le,{modelValue:i(a).isLocked,"onUpdate:modelValue":r[2]||(r[2]=s=>i(a).isLocked=s)},null,8,["modelValue"])]),_:1},8,["infotext"]),b(F,{title:"Priorität",icon:"fa-star",infotext:i(Oe).priority,fullwidth:!0},{default:y(()=>[b(le,{modelValue:i(a).hasPriority,"onUpdate:modelValue":r[3]||(r[3]=s=>i(a).hasPriority=s)},null,8,["modelValue"])]),_:1},8,["infotext"]),b(F,{title:"Zeitplan",icon:"fa-clock",infotext:i(Oe).timeplan,fullwidth:!0},{default:y(()=>[b(le,{modelValue:i(a).timedCharging,"onUpdate:modelValue":r[4]||(r[4]=s=>i(a).timedCharging=s)},null,8,["modelValue"])]),_:1},8,["infotext"]),i(ue).isBatteryConfigured?(l(),$(F,{key:0,title:"PV-Priorität",icon:"fa-car-battery",infotext:i(Oe).pvpriority,fullwidth:!0},{default:y(()=>[b(We,{modelValue:i(ue).pvBatteryPriority,"onUpdate:modelValue":r[5]||(r[5]=s=>i(ue).pvBatteryPriority=s),options:i(_o)},null,8,["modelValue","options"])]),_:1},8,["infotext"])):w("",!0),i(te).active?(l(),$(F,{key:1,title:"Strompreisbasiert laden",icon:"fa-money-bill",infotext:i(Oe).pricebased,fullwidth:!0},{default:y(()=>[b(le,{modelValue:i(a).etActive,"onUpdate:modelValue":r[6]||(r[6]=s=>i(a).etActive=s)},null,8,["modelValue"])]),_:1},8,["infotext"])):w("",!0)],64))}}),Ci=U(Ii,[["__scopeId","data-v-e348a34c"]]),Ta=t=>(oe("data-v-0a5353c2"),t=t(),ne(),t),Pi=Ta(()=>o("p",{class:"settingsheader mt-2 ms-1"},"Preisbasiertes Laden:",-1)),Bi={class:"providername ms-1"},Vi=Ta(()=>o("hr",null,null,-1)),Li={class:"container"},Oi={id:"pricechart",class:"p-0 m-0"},Ai={viewBox:"0 0 400 300"},Ti=["id","origin","transform"],Di={key:0,class:"p-3"},Wi={key:1,class:"d-flex justify-content-end"},zi=["disabled"],rt=400,pa=250,ga=12,Gi=O({__name:"PriceChart",props:{chargepoint:{},globalview:{type:Boolean}},setup(t){const e=t;let a=e.chargepoint?X(e.chargepoint.etMaxPrice):X(0);const n=X(!1),r=X(e.chargepoint),s=p({get(){return a.value},set(M){a.value=M,n.value=!0}});function h(){r.value&&(V[r.value.id].etMaxPrice=s.value),n.value=!1}const g=X(!1),c={top:0,bottom:15,left:20,right:5},u=p(()=>{let M=[];return te.etPriceList.size>0&&te.etPriceList.forEach((S,B)=>{M.push([B,S])}),M}),d=p(()=>u.value.length>1?(rt-c.left-c.right)/u.value.length-1:0),C=p(()=>n.value?{background:"var(--color-charging)"}:{background:"var(--color-menu)"}),J=p(()=>{let M=Be(u.value,S=>S[0]);return M[1]&&(M[1]=new Date(M[1]),M[1].setTime(M[1].getTime()+36e5)),Qe().range([c.left,rt-c.right]).domain(M)}),L=p(()=>{let M=[0,0];return u.value.length>0?(M=Be(u.value,S=>S[1]),M[0]=Math.floor(M[0]-1),M[1]=Math.floor(M[1]+1)):M=[0,0],M}),E=p(()=>Ze().range([pa-c.bottom,0]).domain(L.value)),T=p(()=>{const M=bt(),S=[[c.left,E.value(s.value)],[rt-c.right,E.value(s.value)]];return M(S)}),q=p(()=>{const M=bt(),S=[[c.left,E.value(0)],[rt-c.right,E.value(0)]];return M(S)}),I=p(()=>it(J.value).ticks(6).tickSize(5).tickFormat(ot("%H:%M"))),H=p(()=>pt(E.value).ticks(6).tickSizeInner(-(rt-c.right-c.left)).tickFormat(M=>M.toString())),P=p(()=>{g.value==!0;const M=de("g#"+k.value);M.selectAll("*").remove(),M.selectAll("bar").data(u.value).enter().append("g").append("rect").attr("class","bar").attr("x",_e=>J.value(_e[0])).attr("y",_e=>E.value(_e[1])).attr("width",d.value).attr("height",_e=>E.value(L.value[0])-E.value(_e[1])).attr("fill",_e=>_e[1]<=s.value?"var(--color-charging)":"var(--color-axis)");const B=M.append("g").attr("class","axis").call(I.value);B.attr("transform","translate(0,"+(pa-c.bottom)+")"),B.selectAll(".tick").attr("font-size",ga).attr("color","var(--color-bg)"),B.selectAll(".tick line").attr("stroke","var(--color-fg)").attr("stroke-width","0.5"),B.select(".domain").attr("stroke","var(--color-bg");const D=M.append("g").attr("class","axis").call(H.value);return D.attr("transform","translate("+c.left+",0)"),D.selectAll(".tick").attr("font-size",ga).attr("color","var(--color-bg)"),D.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width","0.5"),D.select(".domain").attr("stroke","var(--color-bg)"),L.value[0]<0&&M.append("path").attr("d",q.value).attr("stroke","var(--color-fg)"),M.append("path").attr("d",T.value).attr("stroke","yellow"),"PriceChart.vue"}),k=p(()=>e.chargepoint?"priceChartCanvas"+e.chargepoint.id:"priceChartCanvasGlobal");return Ve(()=>{g.value=!g.value}),(M,S)=>(l(),m(G,null,[Pi,o("p",Bi,"Anbieter: "+x(i(te).etProvider),1),Vi,o("div",Li,[o("figure",Oi,[(l(),m("svg",Ai,[o("g",{id:k.value,origin:P.value,transform:"translate("+c.top+","+c.right+")"},null,8,Ti)]))])]),M.chargepoint!=null?(l(),m("div",Di,[M.chargepoint.etActive?(l(),$(De,{key:0,id:"foo",modelValue:s.value,"onUpdate:modelValue":S[0]||(S[0]=B=>s.value=B),min:-25,max:95,step:.1,decimals:1,unit:"ct"},null,8,["modelValue"])):w("",!0)])):w("",!0),M.chargepoint!=null?(l(),m("div",Wi,[o("span",{class:"me-3 pt-0",onClick:h},[o("button",{type:"button",class:"btn btn-secondary",style:Z(C.value),disabled:!n.value}," Bestätigen ",12,zi)])])):w("",!0)],64))}}),Da=U(Gi,[["__scopeId","data-v-0a5353c2"]]),Ke=t=>(oe("data-v-1164316d"),t=t(),ne(),t),Ei={class:"status-string"},ji={style:{color:"red"}},Ui={class:"m-0 mt-4 p-0 grid-col-12 tabarea"},Fi={class:"nav nav-tabs nav-justified mx-1 mt-1",role:"tablist"},Ni=["data-bs-target"],Hi=Ke(()=>o("i",{class:"fa-solid fa-charging-station"},null,-1)),Ri=[Hi],Ji=["data-bs-target"],qi=Ke(()=>o("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),Yi=[qi],Qi=["data-bs-target"],Zi=Ke(()=>o("i",{class:"fa-solid fa-solar-panel me-1"},null,-1)),Xi=[Zi],Ki=["data-bs-target"],el=Ke(()=>o("i",{class:"fa-solid fa-bullseye me-1"},null,-1)),tl=[el],al=["data-bs-target"],ol=Ke(()=>o("i",{class:"fa-solid fa-clock"},null,-1)),nl=[ol],rl=["data-bs-target"],sl=Ke(()=>o("i",{class:"fa-solid fa-rectangle-list"},null,-1)),il=[sl],ll=["data-bs-target"],cl=Ke(()=>o("i",{class:"fa-solid fa-chart-line"},null,-1)),dl=[cl],ul={id:"settingsPanes",class:"tab-content mx-1 p-1 pb-3"},hl=["id"],pl=["id"],gl=["id"],ml=["id"],vl=["id"],fl=["id"],_l=["id"],bl=O({__name:"CPChargeConfigPanel",props:{chargepoint:{}},emits:["closeConfig"],setup(t){const a=t.chargepoint,n=p(()=>ye[a.chargeTemplate]),r=p(()=>a.id);return Ve(()=>{}),(s,h)=>(l(),m(G,null,[b(F,{title:"Status",icon:"fa-info-circle",fullwidth:!0,class:"item"},{default:y(()=>[o("span",Ei,x(i(a).stateStr),1)]),_:1}),i(a).faultState!=0?(l(),$(F,{key:0,title:"Fehler",class:"grid-col-12",icon:"fa-triangle-exclamation"},{default:y(()=>[o("span",ji,x(i(a).faultStr),1)]),_:1})):w("",!0),o("div",Ui,[o("nav",Fi,[o("a",{class:"nav-link active","data-bs-toggle":"tab","data-bs-target":"#chargeSettings"+r.value},Ri,8,Ni),s.chargepoint.chargeMode=="instant_charging"?(l(),m("a",{key:0,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#instantSettings"+r.value},Yi,8,Ji)):w("",!0),s.chargepoint.chargeMode=="pv_charging"?(l(),m("a",{key:1,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pvSettings"+r.value},Xi,8,Qi)):w("",!0),s.chargepoint.chargeMode=="scheduled_charging"?(l(),m("a",{key:2,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#scheduledSettings"+r.value},tl,8,Ki)):w("",!0),s.chargepoint.timedCharging?(l(),m("a",{key:3,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#timeSettings"+r.value},nl,8,al)):w("",!0),o("a",{class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#carSettings"+r.value},il,8,rl),i(te).active&&i(a).etActive?(l(),m("a",{key:4,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#priceChart"+r.value},dl,8,ll)):w("",!0)]),o("div",ul,[o("div",{id:"chargeSettings"+r.value,class:"tab-pane active",role:"tabpanel","aria-labelledby":"instant-tab"},[b(Ci,{chargepoint:s.chargepoint},null,8,["chargepoint"])],8,hl),o("div",{id:"instantSettings"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"instant-tab"},[b(Js,{chargepoint:i(a),vehicles:i(Y),"charge-templates":i(ye)},null,8,["chargepoint","vehicles","charge-templates"])],8,pl),o("div",{id:"pvSettings"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"pv-tab"},[b(ei,{chargepoint:i(a),vehicles:i(Y),"charge-templates":i(ye)},null,8,["chargepoint","vehicles","charge-templates"])],8,gl),o("div",{id:"scheduledSettings"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"scheduled-tab"},[n.value!=null?(l(),$(ui,{key:0,"charge-template-id":i(a).chargeTemplate},null,8,["charge-template-id"])):w("",!0)],8,ml),o("div",{id:"timeSettings"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"time-tab"},[n.value!=null?(l(),$(ki,{key:0,"charge-template-id":i(a).chargeTemplate},null,8,["charge-template-id"])):w("",!0)],8,vl),o("div",{id:"carSettings"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"car-tab"},[i(Y)[i(a).connectedVehicle]!=null?(l(),$($i,{key:0,"vehicle-id":i(a).connectedVehicle},null,8,["vehicle-id"])):w("",!0)],8,fl),o("div",{id:"priceChart"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},[i(Y)[i(a).connectedVehicle]!=null?(l(),$(Da,{key:0,chargepoint:i(a)},null,8,["chargepoint"])):w("",!0)],8,_l)])])],64))}}),Jt=U(bl,[["__scopeId","data-v-1164316d"]]),yl={class:"d-flex justify-content-center align-items-center"},wl=O({__name:"BatterySymbol",props:{soc:{},color:{}},setup(t){const e=t,a=p(()=>e.soc<=12?"fa-battery-empty":e.soc<38?"fa-battery-quarter":e.soc<62?"fa-battery-half":e.soc<87?"fa-battery-three-quarters":"fa-battery-full"),n=p(()=>({color:e.color??"var(--color-menu)"}));return(r,s)=>(l(),m("span",yl,[o("i",{class:N(["fa me-1",a.value]),style:Z(n.value)},null,6),z(" "+x(Math.round(r.soc)+"%"),1)]))}}),It=U(wl,[["__scopeId","data-v-a68c844a"]]),ze=O({__name:"FormatWattH",props:{wattH:{}},setup(t){const e=t,a=p(()=>ht(e.wattH,v.decimalPlaces));return(n,r)=>(l(),m("span",null,x(a.value),1))}}),kl=t=>(oe("data-v-1d5bc1d9"),t=t(),ne(),t),Sl={class:"wb-widget p-0 m-0 shadow widgetWidth"},xl={class:"py-4 px-3 d-flex justify-content-between align-items-center titlerow"},$l={class:"d-flex align-items-center widgetname p-0 m-0"},Ml=kl(()=>o("div",{class:"p-0"},"(title goes here)",-1)),Il={class:"buttonrea d-flex float-right justify-content-end align-items-center"},Cl={class:"grid12 pb-3"},Pl=O({__name:"WbWidgetFlex",props:{variableWidth:{type:Boolean},fullWidth:{type:Boolean}},setup(t){const e=t,a=p(()=>e.fullWidth?"col-12":e.variableWidth&&v.preferWideBoxes?"col-lg-6":"col-lg-4");return(n,r)=>(l(),m("div",{class:N(["p-2 m-0",a.value])},[o("div",Sl,[o("div",xl,[o("div",$l,[he(n.$slots,"title",{},()=>[Ml],!0),he(n.$slots,"subtitle",{},void 0,!0)]),o("div",Il,[he(n.$slots,"buttons",{},void 0,!0)])]),o("div",Cl,[he(n.$slots,"default",{},void 0,!0)])])],2))}}),Ge=U(Pl,[["__scopeId","data-v-1d5bc1d9"]]),Bl=O({__name:"WbBadge",props:{color:{},bgcolor:{}},setup(t){const e=t,a=p(()=>({color:e.color??"var(--color-bg)","background-color":e.bgcolor??"var(--color-menu)"}));return(n,r)=>(l(),m("span",{class:"pillWbBadge rounded-pill ms-2 px-2",style:Z(a.value)},[he(n.$slots,"default",{},void 0,!0)],4))}}),Me=U(Bl,[["__scopeId","data-v-36112fa3"]]),Je=t=>(oe("data-v-62e55097"),t=t(),ne(),t),Vl={class:"d-flex justify-content-center align-items-center"},Ll=Je(()=>o("span",{class:"fa-solid fa-charging-station"}," ",-1)),Ol={key:0,class:"WbBadge rounded-pill errorWbBadge ms-3"},Al=Je(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-ellipsis-vertical"},null,-1)),Tl=[Al],Dl={key:0},Wl={key:1,class:"row m-0 mt-0 p-0"},zl={class:"col m-0 p-0"},Gl={key:0},El={class:"col"},jl={class:"carTitleLine d-flex justify-content-between align-items-center"},Ul=Je(()=>o("i",{class:"fa-solid fa-sm fa-car me-2"},null,-1)),Fl={key:0,class:"me-1 fa-solid fa-xs fa-star ps-1"},Nl={key:1,class:"me-1 fa-solid fa-xs fa-coins ps-0"},Hl={key:2,class:"me-0 fa-solid fa-xs fa-clock ps-1"},Rl={class:"grid12"},Jl={style:{color:"var(--color-charging)"}},ql={style:{color:"var(--color-charging)"}},Yl={style:{color:"var(--color-charging)"}},Ql={class:"targetCurrent"},Zl={key:5,class:"socEditor rounded mt-2 d-flex flex-column align-items-center grid-col-12 grid-left"},Xl=Je(()=>o("span",{class:"d-flex m-1 p-0 socEditTitle"},"Ladestand einstellen:",-1)),Kl={class:"d-flex justify-content-stretch align-items-center"},ec=Je(()=>o("hr",{class:"divider grid-col-12"},null,-1)),tc={key:0,class:"fa-solid fa-sm fas fa-edit ms-2"},ac=["id"],oc=Je(()=>o("span",{type:"button",class:"d-flex fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),nc=[oc],rc=Je(()=>o("span",{class:"fas fa-gear"}," ",-1)),sc=Je(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),ic=[sc],lc=O({__name:"CPChargePoint",props:{chargepoint:{},fullWidth:{type:Boolean}},setup(t){const e=t,a=X(e.chargepoint),n=p({get(){return e.chargepoint.chargeMode},set(S){V[e.chargepoint.id].chargeMode=S}}),r=p(()=>(Math.round(e.chargepoint.current*10)/10).toLocaleString(void 0)+" A"),s=p(()=>(Math.round(e.chargepoint.realCurrent*10)/10).toLocaleString(void 0)+" A"),h=p(()=>{const S=e.chargepoint.rangeCharged,B=e.chargepoint.chargedSincePlugged,D=e.chargepoint.dailyYield;return B>0?Math.round(S/B*D).toString()+" "+e.chargepoint.rangeUnit:"0 km"}),g=p(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei"),c=p(()=>e.chargepoint.isLocked?"var(--color-evu)":e.chargepoint.isCharging?"var(--color-charging)":e.chargepoint.isPluggedIn?"var(--color-battery)":"var(--color-axis)"),u=p(()=>{let S="";return e.chargepoint.isLocked?S="fa-lock":e.chargepoint.isCharging?S=" fa-bolt":e.chargepoint.isPluggedIn&&(S="fa-plug"),"fa "+S}),d=p(()=>{switch(e.chargepoint.chargeMode){case"stop":return{color:"var(--fg)"};default:return{color:ge[e.chargepoint.chargeMode].color}}}),C=p(()=>e.chargepoint.soc),J=p(()=>({color:e.chargepoint.color})),L=p(()=>e.chargepoint.etMaxPrice>=+k.value?{color:"var(--color-charging)"}:{color:"var(--color-menu)"}),E=p(()=>e.chargepoint.soc<20?"var(--color-evu)":e.chargepoint.soc>=80?"var(--color-pv)":"var(--color-battery)"),T=X(!1),q=X(!1);function I(){ee("socUpdate",1,e.chargepoint.connectedVehicle),V[e.chargepoint.id].waitingForSoc=!0}function H(){ee("setSoc",P.value,e.chargepoint.connectedVehicle),q.value=!1}const P=p({get(){return e.chargepoint.soc},set(S){V[e.chargepoint.id].soc=S}}),k=p(()=>{const[S]=te.etPriceList.values();return(Math.round(S*10)/10).toFixed(1)}),M=X(!1);return(S,B)=>(l(),m(G,null,[T.value?w("",!0):(l(),$($t,{key:0,"variable-width":!0,"full-width":e.fullWidth},{title:y(()=>[o("span",Vl,[o("span",{style:Z(J.value),onClick:B[0]||(B[0]=D=>T.value=!T.value)},[Ll,z(" "+x(e.chargepoint.name),1)],4),a.value.faultState==2?(l(),m("span",Ol,"Fehler")):w("",!0)])]),buttons:y(()=>[o("span",{type:"button",class:"ms-2 ps-1 pt-1",style:Z(d.value),onClick:B[1]||(B[1]=D=>T.value=!T.value)},Tl,4)]),footer:y(()=>[T.value?w("",!0):(l(),m("div",Gl,[o("div",{class:"row",onClick:B[4]||(B[4]=D=>T.value=!T.value)},[o("div",El,[o("div",jl,[o("h3",null,[Ul,z(" "+x(S.chargepoint.vehicleName)+" ",1),S.chargepoint.hasPriority?(l(),m("span",Fl)):w("",!0),S.chargepoint.etActive?(l(),m("span",Nl)):w("",!0),S.chargepoint.timedCharging?(l(),m("span",Hl)):w("",!0)]),b(Me,{bgcolor:E.value},{default:y(()=>[b(It,{soc:C.value,color:"var(--color-bg)",class:"me-2"},null,8,["soc"]),S.chargepoint.isSocConfigured&&S.chargepoint.isSocManual?(l(),m("i",{key:0,class:"fa-solid fa-sm fas fa-edit",style:{color:"var(--color-menu)"},onClick:B[3]||(B[3]=D=>q.value=!q.value)})):w("",!0),S.chargepoint.isSocConfigured&&!S.chargepoint.isSocManual?(l(),m("i",{key:1,type:"button",class:N(["fa-solid fa-sm",S.chargepoint.waitingForSoc?"fa-spinner fa-spin":"fa-sync"]),onClick:I},null,2)):w("",!0)]),_:1},8,["bgcolor"])])])]),o("div",Rl,[b(Pa,{id:"chargemode-"+S.chargepoint.name,modelValue:n.value,"onUpdate:modelValue":B[5]||(B[5]=D=>n.value=D),class:"chargemodes mt-3 mb-3",options:Object.keys(i(ge)).map(D=>({text:i(ge)[D].name,value:D,color:i(ge)[D].color,icon:i(ge)[D].icon,active:i(ge)[D].mode==S.chargepoint.chargeMode}))},null,8,["id","modelValue","options"]),e.chargepoint.power>0?(l(),$(Q,{key:0,heading:"Leistung:",class:"grid-col-3 grid-left mb-3"},{default:y(()=>[o("span",Jl,[b(vt,{watt:e.chargepoint.power},null,8,["watt"])])]),_:1})):w("",!0),e.chargepoint.power>0?(l(),$(Q,{key:1,heading:"Strom:",class:"grid-col-3"},{default:y(()=>[o("span",ql,x(s.value),1)]),_:1})):w("",!0),e.chargepoint.power>0?(l(),$(Q,{key:2,heading:"Phasen:",class:"grid-col-3"},{default:y(()=>[o("span",Yl,x(e.chargepoint.phasesInUse),1)]),_:1})):w("",!0),e.chargepoint.power>0?(l(),$(Q,{key:3,heading:"Sollstrom:",class:"grid-col-3 grid-right"},{default:y(()=>[o("span",Ql,x(r.value),1)]),_:1})):w("",!0),b(Q,{heading:"letzte Ladung:",class:"grid-col-4 grid-left"},{default:y(()=>[b(ze,{"watt-h":Math.max(S.chargepoint.chargedSincePlugged,0)},null,8,["watt-h"])]),_:1}),b(Q,{heading:"gel. Reichw.:",class:"grid-col-4"},{default:y(()=>[z(x(h.value),1)]),_:1}),S.chargepoint.isSocConfigured?(l(),$(Q,{key:4,heading:"Reichweite:",class:"grid-col-4 grid-right"},{default:y(()=>[z(x(i(Y)[e.chargepoint.connectedVehicle]?Math.round(i(Y)[e.chargepoint.connectedVehicle].range):0)+" km ",1)]),_:1})):w("",!0),q.value?(l(),m("div",Zl,[Xl,o("span",Kl,[o("span",null,[b(De,{id:"manualSoc",modelValue:P.value,"onUpdate:modelValue":B[6]||(B[6]=D=>P.value=D),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])])]),o("span",{type:"button",class:"fa-solid d-flex fa-lg me-2 mb-3 align-self-end fa-circle-check",onClick:H})])):w("",!0),ec,i(te).active?(l(),$(Q,{key:6,heading:"Preisladen:",class:"grid-col-4 grid-left"},{default:y(()=>[b(le,{modelValue:a.value.etActive,"onUpdate:modelValue":B[7]||(B[7]=D=>a.value.etActive=D)},null,8,["modelValue"])]),_:1})):w("",!0),i(te).active?(l(),$(Q,{key:7,heading:"max. Preis:",class:"grid-col-4"},{default:y(()=>[o("span",{type:"button",onClick:B[8]||(B[8]=D=>M.value=!M.value)},[z(x(e.chargepoint.etActive?(Math.round(e.chargepoint.etMaxPrice*10)/10).toFixed(1)+" ct":"-")+" ",1),e.chargepoint.etActive?(l(),m("i",tc)):w("",!0)])]),_:1})):w("",!0),i(te).active?(l(),$(Q,{key:8,heading:"akt. Preis:",class:"grid-col-4 grid-right"},{default:y(()=>[o("span",{style:Z(L.value)},x(k.value)+" ct ",5)]),_:1})):w("",!0),M.value?(l(),m("div",{key:9,id:"priceChartInline"+e.chargepoint.id,class:"d-flex flex-column rounded priceEditor grid-col-12"},[i(Y)[e.chargepoint.connectedVehicle]!=null?(l(),$(Da,{key:0,chargepoint:e.chargepoint},null,8,["chargepoint"])):w("",!0),o("span",{class:"d-flex ms-2 my-4 pe-3 pt-1 d-flex align-self-end",style:Z(d.value),onClick:B[9]||(B[9]=D=>M.value=!1)},nc,4)],8,ac)):w("",!0)])]))]),default:y(()=>[T.value?w("",!0):(l(),m("div",Dl,[o("div",{class:"grid12",onClick:B[2]||(B[2]=D=>T.value=!T.value)},[b(Q,{heading:"Status:",class:"grid-col-4 grid-left"},{default:y(()=>[o("span",{style:Z({color:c.value})},[o("i",{class:N(u.value)},null,2),z(" "+x(g.value),1)],4)]),_:1}),b(Q,{heading:"Geladen:",class:"grid-col-4 grid-left"},{default:y(()=>[b(ze,{"watt-h":S.chargepoint.dailyYield},null,8,["watt-h"])]),_:1})])])),T.value?(l(),m("div",Wl,[o("div",zl,[S.chargepoint!=null?(l(),$(Jt,{key:0,chargepoint:S.chargepoint},null,8,["chargepoint"])):w("",!0)])])):w("",!0)]),_:1},8,["full-width"])),T.value?(l(),$(Ge,{key:1,"full-width":e.fullWidth},{title:y(()=>[o("span",{style:Z(J.value),onClick:B[10]||(B[10]=D=>T.value=!T.value)},[rc,z(" Einstellungen "+x(e.chargepoint.name),1)],4)]),buttons:y(()=>[o("span",{class:"ms-2 pt-1",style:Z(d.value),onClick:B[11]||(B[11]=D=>T.value=!T.value)},ic,4)]),default:y(()=>[S.chargepoint!=null?(l(),$(Jt,{key:0,chargepoint:S.chargepoint},null,8,["chargepoint"])):w("",!0)]),_:1},8,["full-width"])):w("",!0)],64))}}),cc=U(lc,[["__scopeId","data-v-62e55097"]]),Wa=t=>(oe("data-v-eaefae30"),t=t(),ne(),t),dc=["id"],uc={class:"modal-dialog modal-lg modal-fullscreen-lg-down"},hc={class:"modal-content"},pc={class:"modal-header"},gc={class:"modal-title"},mc=Wa(()=>o("button",{type:"button",class:"btn-close buttonTextSize d-flex justify-content-center pt-3 pb-0","data-bs-dismiss":"modal"},[o("i",{class:"fa-solid fa-lg fa-rectangle-xmark m-0 p-0"})],-1)),vc={class:"modal-body",style:{"background-color":"var(--color-bg)"}},fc=Wa(()=>o("button",{class:"btn btn-secondary float-end mt-3 ms-1","data-bs-dismiss":"modal"}," Schließen ",-1)),_c=O({__name:"ModalComponent",props:{modalId:{}},setup(t){const e=t;return Ve(()=>{}),(a,n)=>(l(),m("div",{id:e.modalId,class:"modal fade"},[o("div",uc,[o("div",hc,[o("div",pc,[o("h3",gc,[he(a.$slots,"title",{},void 0,!0)]),mc]),o("div",vc,[he(a.$slots,"default",{},void 0,!0),fc])])])],8,dc))}}),za=U(_c,[["__scopeId","data-v-eaefae30"]]),bc=t=>(oe("data-v-2f1df729"),t=t(),ne(),t),yc={class:"d-flex align-items-center"},wc={class:"cpname"},kc={class:"d-flex float-right justify-content-end align-items-center"},Sc=["data-bs-target"],xc=["data-bs-target"],$c={class:"subgrid"},Mc={key:0,class:"d-flex justify-content-center align-items-center vehiclestatus"},Ic={class:"d-flex flex-column align-items-center px-0"},Cc={class:"d-flex justify-content-center flex-wrap"},Pc={class:"d-flex align-items-center"},Bc={class:"badge phasesInUse rounded-pill"},Vc={class:"d-flex flex-wrap justify-content-center chargeinfo"},Lc={class:"me-1"},Oc={key:0,class:"subgrid socEditRow m-0 p-0"},Ac={class:"socEditor rounded mt-2 d-flex flex-column align-items-center grid-col-12"},Tc=bc(()=>o("span",{class:"d-flex m-1 p-0 socEditTitle"},"Ladestand einstellen:",-1)),Dc={class:"d-flex justify-content-stretch align-items-center"},Wc=O({__name:"CpsListItem2",props:{chargepoint:{}},setup(t){const e=t,a=X(!1),n=p(()=>ge[e.chargepoint.chargeMode].icon),r=p(()=>{let I="";return e.chargepoint.isLocked?I="fa-lock":e.chargepoint.isCharging?I=" fa-bolt":e.chargepoint.isPluggedIn&&(I="fa-plug"),"fa "+I}),s=p(()=>{let I="var(--color-axis)";return e.chargepoint.isLocked?I="var(--color-evu)":e.chargepoint.isCharging?I="var(--color-charging)":e.chargepoint.isPluggedIn&&(I="var(--color-battery)"),{color:I,border:`0.5px solid ${I} `}}),h=p(()=>{switch(e.chargepoint.chargeMode){case"stop":return{"background-color":"var(--fg)"};default:return{"background-color":ge[e.chargepoint.chargeMode].color}}}),g=p(()=>$e(e.chargepoint.power,v.decimalPlaces)),c=p(()=>e.chargepoint.current+" A"),u=p(()=>e.chargepoint.phasesInUse),d=p(()=>e.chargepoint.dailyYield>0?ht(e.chargepoint.dailyYield,v.decimalPlaces):"0 Wh"),C=p(()=>"("+Math.round(e.chargepoint.rangeCharged).toString()+" "+e.chargepoint.rangeUnit+")"),J=p(()=>ge[e.chargepoint.chargeMode].name);function L(){ee("socUpdate",1,e.chargepoint.connectedVehicle),V[e.chargepoint.id].waitingForSoc=!0}function E(){ee("setSoc",T.value,e.chargepoint.connectedVehicle),a.value=!1}const T=p({get(){return e.chargepoint.soc},set(I){V[e.chargepoint.id].soc=I}}),q=p(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei");return(I,H)=>(l(),m(G,null,[b(Xe,{titlecolor:I.chargepoint.color,fullwidth:!0,small:!0},{title:y(()=>[o("div",yc,[o("span",wc,x(I.chargepoint.name),1),o("span",{class:"badge rounded-pill statusbadge mx-2",style:Z(s.value)},[o("i",{class:N([r.value,"me-1"])},null,2),z(" "+x(q.value),1)],4)])]),buttons:y(()=>[o("div",kc,[o("span",{class:"badge rounded-pill modebadge mx-2",type:"button",style:Z(h.value),"data-bs-toggle":"modal","data-bs-target":"#cpsconfig-"+I.chargepoint.id},[o("i",{class:N(["fa me-1",n.value])},null,2),z(" "+x(J.value),1)],12,Sc),o("span",{class:"fa-solid ms-2 fa-lg fa-edit ps-1",type:"button","data-bs-toggle":"modal","data-bs-target":"#cpsconfig-"+I.chargepoint.id},null,8,xc)])]),default:y(()=>[o("div",$c,[b(Q,{heading:I.chargepoint.vehicleName,small:!0,class:"grid-left grid-col-4"},{default:y(()=>[I.chargepoint.isSocConfigured?(l(),m("span",Mc,[b(It,{class:"me-1",soc:I.chargepoint.soc},null,8,["soc"]),I.chargepoint.isSocConfigured&&I.chargepoint.isSocManual?(l(),m("i",{key:0,type:"button",class:"fa-solid fa-sm fas fa-edit",style:{color:"var(--color-menu)"},onClick:H[0]||(H[0]=P=>a.value=!a.value)})):w("",!0),I.chargepoint.isSocConfigured&&!I.chargepoint.isSocManual?(l(),m("i",{key:1,type:"button",class:N(["fa-solid fa-sm me-2",I.chargepoint.waitingForSoc?"fa-spinner fa-spin":"fa-sync"]),style:{color:"var(--color-menu)"},onClick:L},null,2)):w("",!0)])):w("",!0)]),_:1},8,["heading"]),b(Q,{heading:"Parameter:",small:!0,class:"grid-col-4"},{default:y(()=>[o("div",Ic,[o("span",Cc,[o("span",null,x(g.value),1),o("span",Pc,[o("span",Bc,x(u.value),1),o("span",null,x(c.value),1)])])])]),_:1}),b(Q,{heading:"Geladen:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[o("div",Vc,[o("span",Lc,x(d.value),1),o("span",null,x(C.value),1)])]),_:1})]),a.value?(l(),m("div",Oc,[o("div",Ac,[Tc,o("span",Dc,[o("span",null,[b(De,{id:"manualSoc",modelValue:T.value,"onUpdate:modelValue":H[1]||(H[1]=P=>T.value=P),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])])]),o("span",{type:"button",class:"fa-solid d-flex fa-lg me-2 mb-3 align-self-end fa-circle-check",onClick:E})])])):w("",!0)]),_:1},8,["titlecolor"]),(l(),$(lo,{to:"body"},[(l(),$(za,{key:I.chargepoint.id,"modal-id":"cpsconfig-"+I.chargepoint.id},{title:y(()=>[z(" Konfiguration: "+x(I.chargepoint.name),1)]),default:y(()=>[I.chargepoint!=null?(l(),$(Jt,{key:0,chargepoint:I.chargepoint},null,8,["chargepoint"])):w("",!0)]),_:1},8,["modal-id"]))]))],64))}}),zc=U(Wc,[["__scopeId","data-v-2f1df729"]]),Gc=t=>(oe("data-v-b8c6b557"),t=t(),ne(),t),Ec=Gc(()=>o("span",{class:"fa-solid fa-charging-station"}," ",-1)),jc=O({__name:"CpSimpleList2",setup(t){const e=p(()=>Object.values(V));return(a,n)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[Ec,z(" Ladepunkte ")]),buttons:y(()=>[i(te).active?(l(),$(Me,{key:0,bgcolor:"var(--color-menu)"},{default:y(()=>[z("Strompreis: "+x(i(te).etCurrentPriceString),1)]),_:1})):w("",!0)]),default:y(()=>[(l(!0),m(G,null,K(e.value,(r,s)=>(l(),m("div",{key:s,class:"subgrid pb-2"},[b(zc,{chargepoint:r},null,8,["chargepoint"])]))),128))]),_:1}))}}),Uc=U(jc,[["__scopeId","data-v-b8c6b557"]]),Lt=O({__name:"ChargePointList",props:{id:{},compact:{type:Boolean}},setup(t){let e,a;const n=t,r=p(()=>{let u=Object.values(V);return c(),u}),s=p(()=>h.value+" "+g.value),h=p(()=>{switch(Object.values(V).length){case 0:return v.preferWideBoxes?"col-lg-6":"col-lg-4";case 1:return v.preferWideBoxes?"col-lg-6":"col-lg-4";case 2:return v.preferWideBoxes?"col-lg-12":"col-lg-8 ";default:return"col-lg-12"}}),g=p(()=>"swiper-chargepoints-"+n.id);function c(){let u=document.querySelector("."+g.value);if(u&&(a=u,e=a.swiper),e){let d="1";if(Re.value)switch(Object.values(V).length){case 0:case 1:d="1";break;case 2:d="2";break;default:d="3"}a.setAttribute("slides-per-view",d),e.update()}}return Ve(()=>{let u=document.querySelector("."+g.value);u&&(a=u,e=a.swiper),window.addEventListener("resize",c),window.document.addEventListener("visibilitychange",c)}),(u,d)=>(l(),m(G,null,[n.compact?w("",!0):(l(),m("swiper-container",{key:0,"space-between":0,"slides-per-view":1,pagination:{clickable:!0},class:N(["cplist m-0 p-0 d-flex align-items-stretch",s.value])},[(l(!0),m(G,null,K(r.value,C=>(l(),m("swiper-slide",{key:C.id},[o("div",{class:N([i(Re)?"mb-0":"mb-5","d-flex align-items-stretch flex-fill"])},[b(cc,{chargepoint:C,"full-width":!0},null,8,["chargepoint"])],2)]))),128))],2)),n.compact?(l(),$(Uc,{key:1})):w("",!0)],64))}}),Fc={class:"container-fluid p-0 m-0"},Nc={class:"row p-0 m-0"},Hc={class:"d-grid gap-2"},Rc=["onClick"],Jc={class:"col-md-4 p-1"},qc={class:"d-grid gap-2"},Yc={key:0},Qc=o("hr",null,null,-1),Zc=o("div",{class:"row"},[o("div",{class:"col text-center"},"Vorrang im Lademodus PV-Laden:")],-1),Xc={class:"row justify-content-center m-1 p-0"},Kc={class:"col-lg-4 p-1 m-0"},ed={class:"d-grid gap-2"},td=o("span",{class:"fas fa-car ms-2"}," ",-1),ad={class:"col-lg-4 p-1 m-0"},od={class:"d-grid gap-2"},nd=o("span",{class:"fas fa-car-battery ms-2"}," ",-1),rd={class:"col-lg-4 p-1 m-0"},sd={class:"d-grid gap-2"},id=o("span",{class:"fas fa-battery-half"}," ",-1),ld=O({__name:"BBSelect",props:{cpId:{}},setup(t){const e=t,a=[{mode:"instant_charging",name:"Sofort",color:"var(--color-charging)"},{mode:"scheduled_charging",name:"Zielladen",color:"var(--color-battery)"},{mode:"pv_charging",name:"PV",color:"var(--color-pv)"},{mode:"standby",name:"Standby",color:"var(--color-axis)"},{mode:"stop",name:"Stop",color:"var(--color-axis)"}],n=p(()=>V[e.cpId]);function r(u){return u==n.value.chargeMode?"btn btn-success buttonTextSize":"btn btn-secondary buttonTextSize"}function s(u){return ue.pvBatteryPriority==u?"btn-success":"btn-secondary"}function h(u){n.value.chargeMode=u}function g(u){n.value.isLocked=u}function c(u){ue.pvBatteryPriority=u}return(u,d)=>(l(),m("div",Fc,[o("div",Nc,[(l(),m(G,null,K(a,(C,J)=>o("div",{key:J,class:"col-md-4 p-1"},[o("div",Hc,[o("button",{type:"button",class:N(r(C.mode)),style:{},onClick:L=>h(C.mode)},x(C.name),11,Rc)])])),64)),o("div",Jc,[o("div",qc,[n.value.isLocked?(l(),m("button",{key:0,type:"button",class:"btn btn-outline-success buttonTextSize","data-bs-dismiss":"modal",onClick:d[0]||(d[0]=C=>g(!1))}," Entsperren ")):w("",!0),n.value.isLocked?w("",!0):(l(),m("button",{key:1,type:"button",class:"btn btn-outline-danger buttonTextSize","data-bs-dismiss":"modal",onClick:d[1]||(d[1]=C=>g(!0))}," Sperren "))])])]),i(ue).isBatteryConfigured?(l(),m("div",Yc,[Qc,Zc,o("div",Xc,[o("div",Kc,[o("div",ed,[o("button",{id:"evPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",s("ev_mode")]),"data-dismiss":"modal",priority:"1",onClick:d[2]||(d[2]=C=>c("ev_mode"))},[z(" EV "),td],2)])]),o("div",ad,[o("div",od,[o("button",{id:"batteryPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",s("bat_mode")]),"data-dismiss":"modal",priority:"0",onClick:d[3]||(d[3]=C=>c("bat_mode"))},[z(" Speicher "),nd],2)])]),o("div",rd,[o("div",sd,[o("button",{id:"minsocPriorityBtn",type:"button",class:N(["priorityModeBtn btn btn-secondary buttonTextSize",s("min_soc_bat_mode")]),"data-dismiss":"modal",priority:"0",onClick:d[4]||(d[4]=C=>c("min_soc_bat_mode"))},[z(" MinSoc "),id],2)])])])])):w("",!0)]))}}),cd={class:"col-lg-4 p-0 m-0 mt-1"},dd={class:"d-grid gap-2"},ud=["data-bs-target"],hd={class:"m-0 p-0 d-flex justify-content-between align-items-center"},pd={class:"mx-1 badge rounded-pill smallTextSize plugIndicator"},gd={key:0,class:"ms-2"},md={class:"m-0 p-0"},vd={key:0,class:"ps-1"},fd=O({__name:"BbChargeButton",props:{chargepoint:{}},setup(t){const e=t,a="chargeSelectModal"+e.chargepoint.id,n=p(()=>ge[e.chargepoint.chargeMode].name),r=p(()=>{let d={background:"var(--color-menu)"};return e.chargepoint.isLocked?d.background="var(--color-evu)":e.chargepoint.isCharging?d.background="var(--color-charging)":e.chargepoint.isPluggedIn&&(d.background="var(--color-battery)"),d}),s=p(()=>{if(ge){let d={background:ge[e.chargepoint.chargeMode].color,color:"white"};switch(e.chargepoint.chargeMode){case fe.instant_charging:e.chargepoint.isCharging&&!e.chargepoint.isLocked&&(d=u(d));break;case fe.standby:case fe.stop:d.background="darkgrey",d.color="black";break;case fe.scheduled_charging:e.chargepoint.isPluggedIn&&!e.chargepoint.isCharging&&!e.chargepoint.isLocked&&(d=u(d));break}return d}else return{background:"var(--color-bg)",color:"var(--color-bg)"}}),h=p(()=>ge?ge[e.chargepoint.chargeMode].icon:""),g=p(()=>{switch(ue.pvBatteryPriority){case"ev_mode":return"fa-car";case"bat_mode":return"fa-car-battery";case"min_soc_bat_mode":return"fa-battery-half";default:return console.log("default"),""}}),c=p(()=>{let d="fa-ellipsis";return e.chargepoint.isLocked?d="fa-lock":e.chargepoint.isCharging?d=" fa-bolt":e.chargepoint.isPluggedIn&&(d="fa-plug"),"fa "+d});function u(d){let C=d.color;return d.color=d.background,d.background=C,d}return(d,C)=>(l(),m("div",cd,[o("div",dd,[o("button",{type:"button",class:"btn mx-1 mb-0 p-1 mediumTextSize chargeButton shadow",style:Z(r.value),"data-bs-toggle":"modal","data-bs-target":"#"+a},[o("div",hd,[o("span",pd,[o("i",{class:N(c.value)},null,2),d.chargepoint.isCharging?(l(),m("span",gd,x(i($e)(d.chargepoint.power)),1)):w("",!0)]),o("span",md,x(d.chargepoint.name),1),o("span",{class:"mx-2 m-0 badge rounded-pill smallTextSize modeIndicator",style:Z(s.value)},[o("i",{class:N(["fa me-1",h.value])},null,2),z(" "+x(n.value)+" ",1),d.chargepoint.chargeMode==i(fe).pv_charging&&i(ue).isBatteryConfigured?(l(),m("span",vd,[z(" ( "),o("i",{class:N(["fa m-0",g.value])},null,2),z(") ")])):w("",!0)],4)])],12,ud)]),b(za,{"modal-id":a},{title:y(()=>[z(" Lademodus für "+x(d.chargepoint.vehicleName),1)]),default:y(()=>[b(ld,{"cp-id":d.chargepoint.id},null,8,["cp-id"])]),_:1})]))}}),_d=U(fd,[["__scopeId","data-v-31df6764"]]),bd={class:"row p-0 mt-0 mb-1 m-0"},yd={class:"col p-0 m-0"},wd={class:"container-fluid p-0 m-0"},kd={class:"row p-0 m-0 d-flex justify-content-center align-items-center"},Sd={key:0,class:"col time-display"},xd=O({__name:"ButtonBar",setup(t){return(e,a)=>(l(),m("div",bd,[o("div",yd,[o("div",wd,[o("div",kd,[i(v).showClock=="buttonbar"?(l(),m("span",Sd,x(i(Ca)(i(Rt))),1)):w("",!0),(l(!0),m(G,null,K(i(V),(n,r)=>(l(),$(_d,{key:r,chargepoint:n,"charge-point-count":Object.values(i(V)).length},null,8,["chargepoint","charge-point-count"]))),128))])])])]))}}),$d=U(xd,[["__scopeId","data-v-791e4be0"]]);class Md{constructor(e){_(this,"id");_(this,"name","Speicher");_(this,"color","var(--color-battery)");_(this,"dailyYieldExport",0);_(this,"dailyYieldImport",0);_(this,"monthlyYieldExport",0);_(this,"monthlyYieldImport",0);_(this,"yearlyYieldExport",0);_(this,"yearlyYieldImport",0);_(this,"exported",0);_(this,"faultState",0);_(this,"faultStr","");_(this,"imported",0);_(this,"power",0);_(this,"soc",0);this.id=e}}class Id{constructor(){_(this,"dailyExport",0);_(this,"dailyImport",0);_(this,"exported",0);_(this,"imported",0);_(this,"power",0);_(this,"soc",0)}}ie(new Id);const ve=X(new Map),Ga=t=>{ve.value.set(t,new Md(t)),ve.value.get(t).color=se["bat"+ve.value.size].color};function Cd(){ve.value=new Map}const Pd={class:"battery-title"},Bd={class:"subgrid pt-1"},Vd=O({__name:"BLBattery",props:{bat:{}},setup(t){const e=t,a=p(()=>e.bat.power<0?`Liefert (${$e(-e.bat.power)})`:e.bat.power>0?`Lädt (${$e(e.bat.power)})`:"Bereit"),n=p(()=>e.bat.power<0?"var(--color-pv)":e.bat.power>0?"var(--color-battery)":"var(--color-menu)");return(r,s)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[o("span",Pd,x(r.bat.name),1)]),buttons:y(()=>[b(Me,{bgcolor:n.value},{default:y(()=>[z(x(a.value),1)]),_:1},8,["bgcolor"])]),default:y(()=>[o("div",Bd,[b(Q,{heading:"Ladestand:",small:!0,class:"grid-left grid-col-4"},{default:y(()=>[b(It,{soc:e.bat.soc},null,8,["soc"])]),_:1}),b(Q,{heading:"Geladen:",small:!0,class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.bat.dailyYieldImport},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Geliefert:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.bat.dailyYieldExport},null,8,["watt-h"])]),_:1})])]),_:1}))}}),Ld=U(Vd,[["__scopeId","data-v-f7f825f7"]]),Ea=t=>(oe("data-v-463638db"),t=t(),ne(),t),Od=Ea(()=>o("span",{class:"fas fa-car-battery me-2",style:{color:"var(--color-battery)"}}," ",-1)),Ad=Ea(()=>o("span",null,"Speicher",-1)),Td={class:"px-3 subgrid grid-12"},Dd=O({__name:"BatteryList",setup(t){const e=p(()=>R.batOut.power>0?`Liefert (${$e(R.batOut.power)})`:j.batIn.power>0?`Lädt (${$e(j.batIn.power)})`:"Bereit:"),a=p(()=>R.batOut.power>0?"var(--color-pv)":j.batIn.power>0?"var(--color-battery)":"var(--color-menu)");return(n,r)=>i(ue).isBatteryConfigured?(l(),$(Ge,{key:0,"variable-width":!0,"full-width":!1},{title:y(()=>[Od,Ad]),buttons:y(()=>[b(Me,{bgcolor:a.value},{default:y(()=>[z(x(e.value),1)]),_:1},8,["bgcolor"])]),default:y(()=>[o("div",Td,[b(Q,{heading:"Ladestand:",class:"grid-left grid-col-4"},{default:y(()=>[b(It,{color:"var(--color-battery)",soc:i(ue).batterySoc},null,8,["soc"])]),_:1}),b(Q,{heading:"Geladen:",class:"grid-col-4"},{default:y(()=>[o("span",null,x(i(ht)(i(j).batIn.energy)),1)]),_:1}),b(Q,{heading:"Geliefert",class:"grid-right grid-col-4"},{default:y(()=>[o("span",null,x(i(ht)(i(R).batOut.energy)),1)]),_:1})]),(l(!0),m(G,null,K(i(ve),([s,h])=>(l(),$(Ld,{key:s,bat:h},null,8,["bat"]))),128))]),_:1})):w("",!0)}}),Ot=U(Dd,[["__scopeId","data-v-463638db"]]),Wd={class:"subgrid"},zd=O({__name:"SHListItem",props:{device:{}},setup(t){const e=t,a=p(()=>e.device.status=="on"?"fa-toggle-on fa-xl":e.device.status=="waiting"?"fa-spinner fa-spin":"fa-toggle-off fa-xl"),n=p(()=>{let g="var(--color-switchRed)";switch(e.device.status){case"on":g="var(--color-switchGreen)";break;case"detection":g="var(--color-switchBlue)";break;case"timeout":g="var(--color-switchWhite)";break;case"waiting":g="var(--color-menu)";break;default:g="var(--color-switchRed)"}return{color:g}});function r(){e.device.isAutomatic||(e.device.status=="on"?ee("shSwitchOn",0,e.device.id):ee("shSwitchOn",1,e.device.id),ae.get(e.device.id).status="waiting")}function s(){e.device.isAutomatic?ee("shSetManual",1,e.device.id):ee("shSetManual",0,e.device.id)}const h=p(()=>e.device.isAutomatic?"Auto":"Man");return(g,c)=>(l(),$(Xe,{titlecolor:g.device.color,fullwidth:!0},{title:y(()=>[z(x(g.device.name),1)]),buttons:y(()=>[(l(!0),m(G,null,K(g.device.temp,(u,d)=>(l(),m("span",{key:d},[u<300?(l(),$(Me,{key:0,bgcolor:"var(--color-battery)"},{default:y(()=>[o("span",null,x(i(tn)(u)),1)]),_:2},1024)):w("",!0)]))),128)),e.device.canSwitch?(l(),m("span",{key:0,class:N([a.value,"fa-solid statusbutton mr-2 ms-2"]),style:Z(n.value),onClick:r},null,6)):w("",!0),e.device.canSwitch?(l(),$(Me,{key:1,type:"button",onClick:s},{default:y(()=>[z(x(h.value),1)]),_:1})):w("",!0)]),default:y(()=>[o("div",Wd,[b(Q,{heading:"Leistung:",class:"grid-col-4 grid-left"},{default:y(()=>[b(vt,{watt:g.device.power},null,8,["watt"])]),_:1}),b(Q,{heading:"Energie:",class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":g.device.energy},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Laufzeit:",class:"grid-col-4 grid-right"},{default:y(()=>[z(x(i(Ko)(g.device.runningTime)),1)]),_:1})])]),_:1},8,["titlecolor"]))}}),Gd=U(zd,[["__scopeId","data-v-92893218"]]),ft=t=>(oe("data-v-5b5cf6b3"),t=t(),ne(),t),Ed=ft(()=>o("span",{class:"fas fa-plug me-2",style:{color:"var(--color-devices)"}}," ",-1)),jd={class:"sh-title py-4"},Ud=ft(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-ellipsis-vertical"},null,-1)),Fd=[Ud],Nd=ft(()=>o("span",{class:"fas fa-gear"}," ",-1)),Hd=ft(()=>o("span",{class:"fa-solid fa-lg ps-1 fa-circle-check"},null,-1)),Rd=[Hd],Jd=["id","onUpdate:modelValue","value"],qd=["for"],Yd=ft(()=>o("div",{class:"col-12 mb-3 pe-3 mt-0"},[o("button",{class:"btn btn-sm btn-secondary float-end"},"Schließen")],-1)),Qd=[Yd],Zd=3,Xd=O({__name:"SmartHomeList",setup(t){const e=p(()=>Re.value?a.value.reduce((h,g)=>{const c=h;let u=h[h.length-1];return u.length>=Zd?h.push([g]):u.push(g),c},[[]]):[a.value]),a=p(()=>[...ae.values()].filter(h=>h.configured));function n(h){return"Geräte"+(Re.value&&e.value.length>1?"("+(h+1)+")":"")}function r(){s.value=!s.value}const s=X(!1);return(h,g)=>(l(),m(G,null,[(l(!0),m(G,null,K(e.value,(c,u)=>(l(),$(Ge,{key:u,"variable-width":!0},{title:y(()=>[o("span",{onClick:r},[Ed,o("span",jd,x(n(u)),1)])]),buttons:y(()=>[o("span",{class:"ms-2 pt-1",onClick:r},Fd)]),default:y(()=>[(l(!0),m(G,null,K(c,d=>(l(),$(Gd,{key:d.id,device:d,class:"subgrid pb-2"},null,8,["device"]))),128))]),_:2},1024))),128)),s.value?(l(),$(Ge,{key:0},{title:y(()=>[o("span",{class:"smarthome",onClick:r},[Nd,z(" Einstellungen")])]),buttons:y(()=>[o("span",{class:"ms-2 pt-1",onClick:r},Rd)]),default:y(()=>[b(F,{title:"Im Energie-Graph anzeigen:",icon:"fa-chart-column",fullwidth:!0},{default:y(()=>[(l(!0),m(G,null,K(a.value,(c,u)=>(l(),m("div",{key:u},[gt(o("input",{id:"check"+u,"onUpdate:modelValue":d=>c.showInGraph=d,class:"form-check-input",type:"checkbox",value:c},null,8,Jd),[[_a,c.showInGraph]]),o("label",{class:"form-check-label px-2",for:"check"+u},x(c.name),9,qd)]))),128))]),_:1}),o("div",{class:"row p-0 m-0",onClick:r},Qd)]),_:1})):w("",!0)],64))}}),At=U(Xd,[["__scopeId","data-v-5b5cf6b3"]]),Kd={class:"countername"},eu={class:"subgrid pt-1"},tu=O({__name:"ClCounter",props:{counter:{}},setup(t){const e=t,a=p(()=>e.counter.power>0?"Bezug":"Export"),n=p(()=>e.counter.power>0?"var(--color-evu)":"var(--color-pv)");return(r,s)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[o("span",Kd,x(r.counter.name),1)]),buttons:y(()=>[e.counter.power!=0?(l(),$(Me,{key:0,bgcolor:n.value},{default:y(()=>[z(x(a.value),1)]),_:1},8,["bgcolor"])):w("",!0),b(Me,{color:"var(--color-bg)"},{default:y(()=>[z(" ID: "+x(e.counter.id),1)]),_:1})]),default:y(()=>[o("div",eu,[b(Q,{heading:"Leistung:",small:!0,class:"grid-left grid-col-4"},{default:y(()=>[b(vt,{watt:Math.abs(e.counter.power)},null,8,["watt"])]),_:1}),b(Q,{heading:"Bezogen:",small:!0,class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.counter.energy_imported},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Exportiert:",small:!0,class:"grid-right grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.counter.energy_exported},null,8,["watt-h"])]),_:1})])]),_:1}))}}),au=U(tu,[["__scopeId","data-v-01dd8c4d"]]);class ou{constructor(e){_(this,"id");_(this,"name","Zähler");_(this,"power",0);_(this,"energy_imported",0);_(this,"energy_exported",0);_(this,"grid",!1);_(this,"type","counter");_(this,"color","var(--color-evu)");_(this,"energyPv",0);_(this,"energyBat",0);_(this,"pvPercentage",0);_(this,"icon","");this.id=e}}const we=ie({});function nu(t,e){if(t in we)console.info("Duplicate counter message: "+t);else switch(we[t]=new ou(t),we[t].type=e,e){case"counter":we[t].color="var(--color-evu)";break;case"inverter":we[t].color="var(--color-pv)";break;case"cp":we[t].color="var(--color-charging)";break;case"bat":we[t].color="var(--color-bat)";break}}const ja=t=>(oe("data-v-5f059284"),t=t(),ne(),t),ru=ja(()=>o("span",{class:"fas fa-bolt me-2",style:{color:"var(--color-evu)"}}," ",-1)),su=ja(()=>o("span",null,"Zähler",-1)),iu=O({__name:"CounterList",setup(t){return(e,a)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[ru,su]),default:y(()=>[(l(!0),m(G,null,K(i(we),(n,r)=>(l(),m("div",{key:r,class:"subgrid pb-2"},[b(au,{counter:n},null,8,["counter"])]))),128))]),_:1}))}}),Tt=U(iu,[["__scopeId","data-v-5f059284"]]),lu={class:"subgrid"},cu=O({__name:"VlVehicle",props:{vehicle:{}},setup(t){const e=t,a=p(()=>{let r="Unterwegs",s=e.vehicle.chargepoint;return s!=null&&(s.isCharging?r="Lädt ("+s.name+")":s.isPluggedIn&&(r="Bereit ("+s.name+")")),r}),n=p(()=>{let r=e.vehicle.chargepoint;return r!=null?r.isLocked?"var(--color-evu)":r.isCharging?"var(--color-charging)":r.isPluggedIn?"var(--color-battery)":"var(--color-axis)":"var(--color-axis)"});return(r,s)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[z(x(e.vehicle.name),1)]),default:y(()=>[o("div",lu,[b(Q,{heading:"Status:",small:!1,class:"grid-left grid-col-4"},{default:y(()=>[o("span",{style:Z({color:n.value}),class:"d-flex justify-content-center align-items-center status-string"},x(a.value),5)]),_:1}),b(Q,{heading:"Ladestand:",small:!1,class:"grid-col-4"},{default:y(()=>[z(x(Math.round(e.vehicle.soc))+" % ",1)]),_:1}),b(Q,{heading:"Reichweite:",small:!1,class:"grid-right grid-col-4"},{default:y(()=>[z(x(Math.round(e.vehicle.range))+" km ",1)]),_:1})])]),_:1}))}}),du=U(cu,[["__scopeId","data-v-f92f4f7b"]]),Ua=t=>(oe("data-v-23b437ea"),t=t(),ne(),t),uu=Ua(()=>o("span",{class:"fas fa-car me-2",style:{color:"var(--color-charging)"}}," ",-1)),hu=Ua(()=>o("span",null,"Fahrzeuge",-1)),pu=O({__name:"VehicleList",setup(t){return(e,a)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[uu,hu]),default:y(()=>[(l(!0),m(G,null,K(Object.values(i(Y)).filter(n=>n.visible),(n,r)=>(l(),m("div",{key:r,class:"subgrid"},[b(du,{vehicle:n},null,8,["vehicle"])]))),128))]),_:1}))}}),Dt=U(pu,[["__scopeId","data-v-23b437ea"]]),Fa=t=>(oe("data-v-3ecadd9f"),t=t(),ne(),t),gu=Fa(()=>o("span",{class:"fas fa-coins me-2",style:{color:"var(--color-battery)"}}," ",-1)),mu=Fa(()=>o("span",null,"Strompreis",-1)),vu={class:"grapharea"},fu={id:"pricechart",class:"p-1 m-0 pricefigure"},_u={viewBox:"0 0 400 280"},bu=["id","origin","transform"],Wt=380,zt=250,Gt=12,yu=O({__name:"GlobalPriceChart",props:{id:{}},setup(t){const e=t,a=X(!1),n={top:0,bottom:15,left:20,right:0},r=p(()=>{let L=[];return te.etPriceList.size>0&&te.etPriceList.forEach((E,T)=>{L.push([T,E])}),L}),s=p(()=>r.value.length>1?(Wt-n.left-n.right)/r.value.length:0),h=p(()=>{let L=Be(r.value,E=>E[0]);return L[1]&&(L[1]=new Date(L[1]),L[1].setTime(L[1].getTime()+36e5)),Qe().range([n.left,Wt-n.right]).domain(L)}),g=p(()=>{let L=Be(r.value,E=>E[1]);return L[0]=Math.floor(L[0])-1,L[1]=Math.floor(L[1])+1,L}),c=p(()=>Ze().range([zt-n.bottom,0]).domain(g.value)),u=p(()=>it(h.value).ticks(r.value.length).tickSize(5).tickSizeInner(-zt).tickFormat(L=>L.getHours()%6==0?ot("%H:%M")(L):"")),d=p(()=>pt(c.value).ticks(15).tickSize(0).tickSizeInner(-(Wt-n.right-n.left)).tickFormat(L=>L.toString())),C=p(()=>{a.value==!0;const L=de("g#"+J.value);L.selectAll("*").remove(),L.selectAll("bar").data(r.value).enter().append("g").append("rect").attr("class","bar").attr("x",k=>h.value(k[0])).attr("y",k=>c.value(k[1])).attr("width",s.value).attr("height",k=>c.value(g.value[0])-c.value(k[1])).attr("fill","var(--color-charging)");const T=L.append("g").attr("class","axis").call(u.value);T.attr("transform","translate(0,"+(zt-n.bottom)+")"),T.selectAll(".tick").attr("font-size",Gt).attr("color","var(--color-bg)"),T.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",k=>k.getHours()%6==0?"2":"0.5"),T.select(".domain").attr("stroke","var(--color-bg");const q=L.append("g").attr("class","axis").call(d.value);q.attr("transform","translate("+n.left+",0)"),q.selectAll(".tick").attr("font-size",Gt).attr("color","var(--color-bg)"),q.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",k=>k%5==0?"2":"0.5"),q.select(".domain").attr("stroke","var(--color-bg)");const I=L.selectAll("ttip").data(r.value).enter().append("g").attr("class","ttarea");I.append("rect").attr("x",k=>h.value(k[0])).attr("y",k=>c.value(k[1])).attr("height",k=>c.value(g.value[0])-c.value(k[1])).attr("class","ttrect").attr("width",s.value).attr("opacity","1%").attr("fill","var(--color-charging)");const H=I.append("g").attr("class","ttmessage").attr("transform",k=>"translate("+(h.value(k[0])-30+s.value/2)+","+(c.value(k[1])-16)+")");H.append("rect").attr("rx",5).attr("width","60").attr("height","30").attr("fill","var(--color-menu)");const P=H.append("text").attr("text-anchor","middle").attr("x",30).attr("y",12).attr("font-size",Gt).attr("fill","var(--color-bg)");return P.append("tspan").attr("x",30).attr("dy","0em").text(k=>ot("%H:%M")(k[0])),P.append("tspan").attr("x",30).attr("dy","1.1em").text(k=>Math.round(k[1]*10)/10+" ct"),"PriceChart.vue"}),J=p(()=>"priceChartCanvas"+e.id);return Ve(()=>{a.value=!a.value}),(L,E)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[gu,mu]),buttons:y(()=>[i(te).active?(l(),$(Me,{key:0,bgcolor:"var(--color-charging)"},{default:y(()=>[z(x(i(te).etCurrentPriceString),1)]),_:1})):w("",!0),i(te).active?(l(),$(Me,{key:1,bgcolor:"var(--color-menu)"},{default:y(()=>[z(x(i(te).etProvider),1)]),_:1})):w("",!0)]),default:y(()=>[o("div",vu,[o("figure",fu,[(l(),m("svg",_u,[o("g",{id:J.value,origin:C.value,transform:"translate("+n.top+","+n.left+") "},null,8,bu)]))])])]),_:1}))}}),Et=U(yu,[["__scopeId","data-v-3ecadd9f"]]),wu={class:"subgrid pt-1"},ku=O({__name:"IlInverter",props:{inverter:{}},setup(t){const e=t,a=p(()=>({color:e.inverter.color}));return(n,r)=>(l(),$(Xe,{titlecolor:"var(--color-title)",fullwidth:!0},{title:y(()=>[o("span",{class:"invertername",style:Z(a.value)},x(n.inverter.name),5)]),buttons:y(()=>[e.inverter.power<0?(l(),$(Me,{key:0,bgcolor:"var(--color-pv)"},{default:y(()=>[z(x(i($e)(-e.inverter.power)),1)]),_:1})):w("",!0)]),default:y(()=>[o("div",wu,[b(Q,{heading:"Heute:",small:!1,class:"grid-col-4 grid-left"},{default:y(()=>[b(ze,{"watt-h":e.inverter.energy},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Monat:",small:!1,class:"grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.inverter.energy_month},null,8,["watt-h"])]),_:1}),b(Q,{heading:"Jahr:",small:!1,class:"grid-right grid-col-4"},{default:y(()=>[b(ze,{"watt-h":e.inverter.energy_year},null,8,["watt-h"])]),_:1})])]),_:1}))}}),Su=U(ku,[["__scopeId","data-v-ee748919"]]),Na=t=>(oe("data-v-b7a71f81"),t=t(),ne(),t),xu=Na(()=>o("span",{class:"fas fa-solar-panel me-2",style:{color:"var(--color-pv)"}}," ",-1)),$u=Na(()=>o("span",null,"Wechselrichter",-1)),Mu=O({__name:"InverterList",setup(t){return(e,a)=>(l(),$(Ge,{"variable-width":!0},{title:y(()=>[xu,$u]),buttons:y(()=>[i(R).pv.power>0?(l(),$(Me,{key:0,bgcolor:"var(--color-pv)"},{default:y(()=>[z(x(i($e)(i(R).pv.power)),1)]),_:1})):w("",!0)]),default:y(()=>[(l(!0),m(G,null,K(i(ke),([n,r])=>(l(),m("div",{key:n,class:"subgrid pb-2"},[b(Su,{inverter:r},null,8,["inverter"])]))),128))]),_:1}))}}),jt=U(Mu,[["__scopeId","data-v-b7a71f81"]]),Iu={class:"row py-0 px-0 m-0"},Cu=["breakpoints"],Pu=O({__name:"CarouselFix",setup(t){let e,a;const n=X(!1),r=p(()=>n.value?{992:{slidesPerView:1,spaceBetween:0}}:{992:{slidesPerView:3,spaceBetween:0}});return co(()=>v.zoomGraph,s=>{if(e){let h=s?"1":"3";a.setAttribute("slides-per-view",h),e.activeIndex=1,e.update()}}),Ve(()=>{let s=document.querySelector(".swiper-carousel");s&&(a=s,e=a.swiper)}),(s,h)=>(l(),m("div",Iu,[o("swiper-container",{"space-between":0,pagination:{clickable:!0},"slides-per-view":"1",class:"p-0 m-0 swiper-carousel",breakpoints:r.value},[o("swiper-slide",null,[o("div",{class:N([i(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(s.$slots,"item1",{},void 0,!0)],2)]),o("swiper-slide",null,[o("div",{class:N([i(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(s.$slots,"item2",{},void 0,!0)],2)]),o("swiper-slide",null,[o("div",{class:N([i(Re)?"mb-0":"mb-5","flex-fill d-flex align-items-stretch"])},[he(s.$slots,"item3",{},void 0,!0)],2)])],8,Cu)]))}}),Bu=U(Pu,[["__scopeId","data-v-dc35b0f6"]]);function Vu(t,e){t=="openWB/graph/boolDisplayLiveGraph"?ue.displayLiveGraph=+e==1:t.match(/^openwb\/graph\/alllivevaluesJson[1-9][0-9]*$/i)?Lu(t,e):t=="openWB/graph/lastlivevaluesJson"?Ou(t,e):t=="openWB/graph/config/duration"&&(pe.duration=JSON.parse(e))}function Lu(t,e){if(!pe.initialized){let a=[];const n=e.toString().split(`
+`);n.length>1?a=n.map(h=>JSON.parse(h)):a=[];const r=t.match(/(\d+)$/g),s=r?r[0]:"";s!=""&&typeof pe.rawDataPacks[+s-1]>"u"&&(pe.rawDataPacks[+s-1]=a,pe.initCounter++)}if(pe.initCounter==16){const a=[];pe.unsubscribeRefresh(),pe.initialized=!0,pe.rawDataPacks.forEach(n=>{n.forEach(r=>{const s=Ha(r);a.push(s)})}),mt(a),pe.subscribeUpdates()}}function Ou(t,e){const a=JSON.parse(e),n=Ha(a);pe.graphRefreshCounter++,mt(f.data.concat(n)),pe.graphRefreshCounter>60&&pe.activate()}function Ha(t){const e=Object.values(V).length>0?Object.values(V)[0].connectedVehicle:0,a=Object.values(V).length>1?Object.values(V)[1].connectedVehicle:1,n="ev"+e+"-soc",r="ev"+a+"-soc",s={};s.date=+t.timestamp*1e3,+t.grid>0?(s.evuIn=+t.grid,s.evuOut=0):+t.grid<=0?(s.evuIn=0,s.evuOut=-t.grid):(s.evuIn=0,s.evuOut=0),+t["pv-all"]>=0?(s.pv=+t["pv-all"],s.inverter=0):(s.pv=0,s.inverter=-t["pv-all"]),s.house=+t["house-power"],+t["bat-all-power"]>0?(s.batOut=0,s.batIn=+t["bat-all-power"]):+t["bat-all-power"]<0?(s.batOut=-t["bat-all-power"],s.batIn=0):(s.batOut=0,s.batIn=0),t["bat-all-soc"]?s.batSoc=+t["bat-all-soc"]:s.batSoc=0,t[n]&&(s["soc"+e]=+t[n]),t[r]&&(s["soc"+a]=+t[r]),s.charging=+t["charging-all"];for(let h=0;h<10;h++){const g="cp"+h;s[g]=+(t[g+"-power"]??0)}return s.selfUsage=s.pv-s.evuOut,s.selfUsage<0&&(s.selfUsage=0),s.devices=0,s}const Au=["evuIn","pv","batOut","evuOut","charging","house"];let St=[];function Tu(t,e){const{entries:a,names:n,totals:r}=JSON.parse(e);Ue.value=new Map(Object.entries(n)),ea(),St=[],Zt.forEach(h=>{A.setEnergyPv(h,0),A.setEnergyBat(h,0)});const s=Du(a);mt(s),Xt(r,St),v.debug&&zu(a,r,s),f.graphMode=="today"&&setTimeout(()=>ce.activate(),3e5)}function Du(t){const e=[];let a={};return t.forEach(n=>{a=Wu(n);const r=a;e.push(r)}),e}function Wu(t){const e={};e.date=t.timestamp*1e3,e.evuOut=0,e.evuIn=0,Object.entries(t.counter).forEach(([r,s])=>{s.grid&&(e.evuOut+=s.power_exported,e.evuIn+=s.power_imported,St.includes(r)||St.push(r))}),e.evuOut==0&&e.evuIn==0&&Object.entries(t.counter).forEach(r=>{e.evuOut+=r[1].power_exported,e.evuIn+=r[1].power_imported}),Object.entries(t.pv).forEach(([r,s])=>{r!="all"?e[r]=s.power_exported:e.pv=s.power_exported}),Object.entries(t.bat).length>0?(e.batIn=t.bat.all.power_imported,e.batOut=t.bat.all.power_exported,e.batSoc=t.bat.all.soc??0):(e.batIn=0,e.batOut=0,e.batSoc=0),Object.entries(t.cp).forEach(([r,s])=>{r!="all"?(e[r]=s.power_imported,A.keys().includes(r)||A.addItem(r)):e.charging=s.power_imported}),Object.entries(t.ev).forEach(([r,s])=>{r!="all"&&(e["soc"+r.substring(2)]=s.soc)}),e.devices=0;let a=0;return Object.entries(t.sh).forEach(([r,s])=>{var h;r!="all"&&(e[r]=s.power_imported??0,A.keys().includes(r)||(A.addItem(r),A.items[r].showInGraph=ae.get(+r.slice(2)).showInGraph),(h=ae.get(+r.slice(2)))!=null&&h.countAsHouse?a+=e[r]:e.devices+=s.power_imported??0)}),e.selfUsage=Math.max(0,e.pv-e.evuOut),t.hc&&t.hc.all?e.house=t.hc.all.power_imported-a:e.house=e.evuIn+e.batOut+e.pv-e.evuOut-e.charging-e.devices-e.batOut,e.evuIn+e.batOut+e.pv>0?A.keys().filter(r=>!Au.includes(r)&&r!="charging").forEach(r=>{Do(r,e)}):Object.keys(e).forEach(r=>{e[r+"Pv"]=0,e[r+"Bat"]=0}),e}function zu(t,e,a){console.debug("---------------------------------------- Graph Data -"),console.debug(["--- Incoming graph data:",t]),console.debug(["--- Incoming energy data:",e]),console.debug(["--- Data to be displayed:",a]),console.debug("-----------------------------------------------------")}let _t={};const ta=["charging","house","batIn","devices"],Gu=["evuIn","pv","batOut","batIn","evuOut","devices","sh1","sh2","sh3","sh4","sh5","sh6","sh7","sh8","sh9"];let Ye=[];function Eu(t,e){const{entries:a,names:n,totals:r}=JSON.parse(e);Ue.value=new Map(Object.entries(n)),ea(),Ye=[],ta.forEach(s=>{A.items[s].energyPv=0,A.items[s].energyBat=0}),a.length>0&&mt(Ra(a)),Xt(r,Ye)}function ju(t,e){const{entries:a,names:n,totals:r}=JSON.parse(e);Ue.value=new Map(Object.entries(n)),ea(),Ye=[],ta.forEach(s=>{A.items[s].energyPv=0,A.items[s].energyBat=0}),a.length>0&&mt(Ra(a)),Xt(r,Ye)}function Ra(t){const e=[];let a={};return _t={},t.forEach(n=>{a=Uu(n),e.push(a),Object.keys(a).forEach(r=>{r!="date"&&(a[r]<0&&(console.warn(`Negative energy value for ${r} in row ${a.date}. Ignoring the value.`),a[r]=0),_t[r]?_t[r]+=a[r]:_t[r]=a[r])})}),e}function Uu(t){const e={},a=uo("%Y%m%d")(t.date);a&&(e.date=f.graphMode=="month"?a.getDate():a.getMonth()+1),e.evuOut=0,e.evuIn=0;let n=0,r=0;return Object.entries(t.counter).forEach(([h,g])=>{n+=g.energy_exported,r+=g.energy_imported,g.grid&&(e.evuOut+=g.energy_exported,e.evuIn+=g.energy_imported,Ye.includes(h)||Ye.push(h))}),Ye.length==0&&(e.evuOut=n,e.evuIn=r),e.pv=t.pv.all.energy_exported,Object.entries(t.bat).length>0?(t.bat.all.energy_imported>=0?e.batIn=t.bat.all.energy_imported:(console.warn("ignoring negative value for batIn on day "+e.date),e.batIn=0),t.bat.all.energy_exported>=0?e.batOut=t.bat.all.energy_exported:(console.warn("ignoring negative value for batOut on day "+e.date),e.batOut=0)):(e.batIn=0,e.batOut=0),Object.entries(t.cp).forEach(([h,g])=>{h!="all"?(A.keys().includes(h)||A.addItem(h,V[+h.slice(2)].color),e[h]=g.energy_imported):e.charging=g.energy_imported}),Object.entries(t.ev).forEach(([h,g])=>{h!="all"&&(e["soc-"+h]=g.soc)}),e.devices=Object.entries(t.sh).reduce((h,g)=>(A.keys().includes(g[0])||A.addItem(g[0]),g[1].energy_imported>=0?h+=g[1].energy_imported:console.warn(`Negative energy value for device ${g[0]} in row ${e.date}. Ignoring this value`),h),0),t.hc&&t.hc.all?e.house=t.hc.all.energy_imported:e.house=e.pv+e.evuIn+e.batOut-e.evuOut-e.batIn-e.charging,e.selfUsage=e.pv-e.evuOut,e.evuIn+e.batOut+e.pv>0?A.keys().filter(h=>!Gu.includes(h)).forEach(h=>{Wo(h,e)}):ta.map(h=>{e[h+"Pv"]=0,e[h+"Bat"]=0}),e}function Fu(t,e){const a=Nu(t);if(a&&!ve.value.has(a)){console.warn("Invalid battery index: ",a);return}t=="openWB/bat/config/configured"?ue.isBatteryConfigured=e=="true":t=="openWB/bat/get/power"?+e>0?(j.batIn.power=+e,R.batOut.power=0):(j.batIn.power=0,R.batOut.power=-e):t=="openWB/bat/get/soc"?ue.batterySoc=+e:t=="openWB/bat/get/daily_exported"?R.batOut.energy=+e:t=="openWB/bat/get/daily_imported"?j.batIn.energy=+e:a&&ve.value.has(a)&&(t.match(/^openwb\/bat\/[0-9]+\/get\/daily_exported$/i)?ve.value.get(a).dailyYieldExport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/daily_imported$/i)?ve.value.get(a).dailyYieldImport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/exported$/i)?ve.value.get(a).exported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_state$/i)?ve.value.get(a).faultState=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_str$/i)?ve.value.get(a).faultStr=e:t.match(/^openwb\/bat\/[0-9]+\/get\/imported$/i)?ve.value.get(a).imported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/power$/i)?ve.value.get(a).power=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/soc$/i)?ve.value.get(a).soc=+e:console.log(t,e))}function Nu(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Hu(t,e){if(t=="openWB/optional/et/provider")JSON.parse(e).type==null?te.active=!1:(te.active=!0,te.etProvider=JSON.parse(e).name);else if(t=="openWB/optional/et/get/prices"){const a=JSON.parse(e);te.etPriceList=new Map,Object.keys(a).forEach(n=>{te.etPriceList.set(new Date(+n*1e3),a[n]*1e5)})}}function Ru(t,e){const a=Ja(t);if(a&&!(a in V)){console.warn("Invalid chargepoint id received: "+a);return}if(t=="openWB/chargepoint/get/power"?j.charging.power=+e:t=="openWB/chargepoint/get/daily_imported"&&(j.charging.energy=+e),t=="openWB/chargepoint/get/daily_exported")ue.cpDailyExported=+e;else if(a){if(t.match(/^openwb\/chargepoint\/[0-9]+\/config$/i))if(V[a]){const n=JSON.parse(e);V[a].name=n.name,V[a].icon=n.name,se["cp"+a]?(se["cp"+a].name=n.name,se["cp"+a].icon=n.name):se["cp"+a]={name:n.name,icon:n.name,color:"var(--color-charging)"}}else console.warn("invalid chargepoint index: "+a);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/state_str$/i))V[a].stateStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_str$/i))V[a].faultStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_state$/i))V[a].faultState=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/power$/i))V[a].power=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/daily_imported$/i))V[a].dailyYield=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/plug_state$/i))V[a].isPluggedIn=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/charge_state$/i))V[a].isCharging=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/manual_lock$/i))V[a].updateIsLocked(e=="true");else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/enabled$/i))V[a].isEnabled=e=="1";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/phases_in_use/i))V[a].phasesInUse=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/current/i))V[a].current=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/currents/i))V[a].currents=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/log/i)){const n=JSON.parse(e);V[a].chargedSincePlugged=n.imported_since_plugged}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/soc$/i)){const n=JSON.parse(e);V[a].soc=n.soc,V[a].waitingForSoc=!1,V[a].rangeCharged=n.range_charged,V[a].rangeUnit=n.range_unit}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/info$/i)){const n=JSON.parse(e);V[a].vehicleName=String(n.name),V[a].updateConnectedVehicle(+n.id)}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/config$/i)){const n=JSON.parse(e);switch(n.chargemode){case"instant_charging":V[a].updateChargeMode(fe.instant_charging);break;case"pv_charging":V[a].updateChargeMode(fe.pv_charging);break;case"scheduled_charging":V[a].updateChargeMode(fe.scheduled_charging);break;case"standby":V[a].updateChargeMode(fe.standby);break;case"stop":V[a].updateChargeMode(fe.stop);break}V[a].chargeTemplate=n.charge_template,V[a].averageConsumption=n.average_consumption}}}function Ju(t,e){const a=Ja(t);if(a!=null){if(!(a in Y)){const n=new Io(a);Y[a]=n}if(t.match(/^openwb\/vehicle\/[0-9]+\/name$/i))Object.values(V).forEach(n=>{n.connectedVehicle==a&&(n.vehicleName=JSON.parse(e))}),Y[a].name=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/soc$/i))Y[a].soc=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/range$/i))isNaN(+e)?Y[a].range=0:Y[a].range=+e;else if(t.match(/^openwb\/vehicle\/[0-9]+\/charge_template$/i))Y[a].updateChargeTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/ev_template$/i))Y[a].updateEvTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/soc_module\/config$/i)){const n=JSON.parse(e);Object.values(V).forEach(r=>{r.connectedVehicle==a&&(r.isSocConfigured=n.type!==null,r.isSocManual=n.type=="manual")})}}}function qu(t,e){if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const n=+a[0],r=JSON.parse(e);ye[n]=r,Yu(n,r)}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/time_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),n=t.match(/[0-9]+$/i);if(a&&n){const r=+a[0].replace(/[^0-9]+/g,""),s=+n[0],h=JSON.parse(e);r in ct||(ct[r]=[]),ct[r][s]=h}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/chargemode\/scheduled_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),n=t.match(/[0-9]+$/i);if(a&&n){const r=+a[0].replace(/[^0-9]+/g,""),s=+n[0],h=JSON.parse(e);r in lt||(lt[r]=[]),lt[r][s]=h}}else if(t.match(/^openwb\/vehicle\/template\/ev_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const n=+a[0],r=JSON.parse(e);Ht[n]=r}}}function Yu(t,e){Object.values(V).forEach(a=>{a.chargeTemplate==t&&(a.updateCpPriority(e.prio),a.updateInstantChargeLimitMode(e.chargemode.instant_charging.limit.selected),a.updateInstantTargetCurrent(e.chargemode.instant_charging.current),a.updateInstantTargetSoc(e.chargemode.instant_charging.limit.soc),a.updateInstantMaxEnergy(e.chargemode.instant_charging.limit.amount),a.updatePvFeedInLimit(e.chargemode.pv_charging.feed_in_limit),a.updatePvMinCurrent(e.chargemode.pv_charging.min_current),a.updatePvMaxSoc(e.chargemode.pv_charging.max_soc),a.updatePvMinSoc(e.chargemode.pv_charging.min_soc),a.updatePvMinSocCurrent(e.chargemode.pv_charging.min_soc_current))})}function Ja(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Qu(t,e){t.match(/^openWB\/LegacySmarthome\/config\//i)?Zu(t,e):t.match(/^openWB\/LegacySmarthome\/Devices\//i)&&Xu(t,e)}function Zu(t,e){const a=qa(t);if(a==null)return;ae.has(a)||qt(a);const n=ae.get(a);t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_configured$/i)?n.configured=e!="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_name$/i)?(n.name=e.toString(),n.icon=e.toString(),se["sh"+a].name=e.toString(),se["sh"+a].icon=e.toString()):t.match(/^openWB\/LegacySmarthome\/config\/set\/Devices\/[0-9]+\/mode$/i)?n.isAutomatic=e=="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_canSwitch$/i)?n.canSwitch=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_homeConsumtion$/i)?n.countAsHouse=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_temperatur_configured$/i)&&(n.tempConfigured=+e)}function Xu(t,e){const a=qa(t);if(a==null){console.warn("Smarthome: Missing index in "+t);return}ae.has(a)||qt(a);const n=ae.get(a);if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Watt$/i))n.power=+e,Ku("power");else if(!t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Wh$/i)){if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/RunningTimeToday$/i))n.runningTime=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor0$/i))n.temp[0]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor1$/i))n.temp[1]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor2$/i))n.temp[2]=+e;else if(t.match(/^openWB\/LegacySmartHome\/Devices\/[0-9]+\/Status$/i))switch(+e){case 10:n.status="off";break;case 11:n.status="on";break;case 20:n.status="detection";break;case 30:n.status="timeout";break;default:n.status="off"}}}function Ku(t){switch(t){case"power":j.devices.power=[...ae.values()].filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.power,0);break;case"energy":j.devices.energy=[...ae.values()].filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.energy,0);break;default:console.error("Unknown category")}}function qa(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}const xt=ie([]);class aa{constructor(e,a,n,r){_(this,"name");_(this,"children");_(this,"count");_(this,"lastValue");this.name=e,this.children=a,this.count=n,this.lastValue=r}insert(e,a){if(e.length){const n=e.splice(1);if(e[0]==this.name)if(n.length){let r=!1;if(this.children.forEach(s=>{s.name==n[0]&&(s.insert(n,a),r=!0)}),!r){const s=new aa(n[0],[],0,"");s.insert(n,a),this.children.push(s)}}else this.count=this.count+1,this.lastValue=a}}}function eh(t,e){const a=t.split("/");if(a.length){let n=!1;if(xt.forEach(r=>{r.name==a[0]&&(r.insert(a,e),n=!0)}),!n){const r=new aa(a[0],[],0,"");xt.push(r),r.insert(a,e)}}}const th=["openWB/counter/#","openWB/bat/#","openWB/pv/#","openWB/chargepoint/#","openWB/vehicle/#","openWB/general/chargemode_config/pv_charging/#","openWB/optional/et/#","openWB/system/#","openWB/LegacySmartHome/#","openWB/command/"+Yt()+"/#"];function ah(){xo(oh),th.forEach(t=>{qe(t)}),me()}function oh(t,e){eh(t,e.toString());const a=e.toString();t.match(/^openwb\/counter\/[0-9]+\//i)?nh(t,a):t.match(/^openwb\/counter\//i)?rh(t,a):t.match(/^openwb\/bat\//i)?Fu(t,a):t.match(/^openwb\/pv\//i)?sh(t,a):t.match(/^openwb\/chargepoint\//i)?Ru(t,a):t.match(/^openwb\/vehicle\/template\//i)?qu(t,a):t.match(/^openwb\/vehicle\//i)?Ju(t,a):t.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)?ih(t,a):t.match(/^openwb\/graph\//i)?Vu(t,a):t.match(/^openwb\/log\/daily\//i)?Tu(t,a):t.match(/^openwb\/log\/monthly\//i)?Eu(t,a):t.match(/^openwb\/log\/yearly\//i)?ju(t,a):t.match(/^openwb\/optional\/et\//i)?Hu(t,a):t.match(/^openwb\/system\//i)?ch(t,a):t.match(/^openwb\/LegacySmartHome\//i)?Qu(t,a):t.match(/^openwb\/command\//i)&&dh(t,a)}function nh(t,e){const a=t.split("/"),n=+a[2];if(n==ue.evuId?lh(t,e):a[3]=="config",a[3]=="get"&&n in we)switch(a[4]){case"power":we[n].power=+e;break;case"config":break;case"fault_str":break;case"fault_state":break;case"power_factors":break;case"imported":break;case"exported":break;case"frequency":break;case"daily_imported":we[n].energy_imported=+e;break;case"daily_exported":we[n].energy_exported=+e;break}}function rh(t,e){if(t.match(/^openwb\/counter\/get\/hierarchy$/i)){const a=JSON.parse(e);if(a.length){Po(),Cd();for(const n of a)n.type=="counter"&&(ue.evuId=n.id);Ya(a[0])}}else t.match(/^openwb\/counter\/set\/home_consumption$/i)?j.house.power=+e:t.match(/^openwb\/counter\/set\/daily_yield_home_consumption$/i)&&(j.house.energy=+e)}function Ya(t){switch(t.type){case"counter":nu(t.id,t.type);break;case"cp":Co(t.id);break;case"bat":Ga(t.id);break}t.children.forEach(e=>Ya(e))}function sh(t,e){const a=uh(t);a&&!ke.value.has(a)&&qo(a),t=="openWB/pv/get/power"?R.pv.power=-e:t=="openWB/pv/get/daily_exported"?R.pv.energy=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/power$/i)?ke.value.get(a).power=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/daily_exported$/i)?ke.value.get(a).energy=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/monthly_exported$/i)?ke.value.get(a).energy_month=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/yearly_exported$/i)?ke.value.get(a).energy_year=+e:t.match(/^openWB\/pv\/[0-9]+\/get\/exported$/i)&&(ke.value.get(a).energy_total=+e)}function ih(t,e){const a=t.split("/");if(a.length>0)switch(a[4]){case"bat_mode":ue.updatePvBatteryPriority(JSON.parse(e));break}}function lh(t,e){switch(t.split("/")[4]){case"power":+e>0?(R.evuIn.power=+e,j.evuOut.power=0):(R.evuIn.power=0,j.evuOut.power=-e);break;case"daily_imported":R.evuIn.energy=+e;break;case"daily_exported":j.evuOut.energy=+e;break}}function ch(t,e){if(t.match(/^openWB\/system\/device\/[0-9]+\/component\/[0-9]+\/config$/i)){const a=JSON.parse(e);switch(a.type){case"counter":case"consumption_counter":we[a.id]&&(we[a.id].name=a.name);break;case"inverter":case"inverter_secondary":ke.value.has(a.id)||ke.value.set(a.id,new ba(a.id)),ke.value.get(a.id).name=a.name;break;case"bat":ve.value.has(a.id)||Ga(a.id),ve.value.get(a.id).name=a.name}}}function dh(t,e){const a=t.split("/");if(t.match(/^openWB\/command\/[a-z]+\/error$/i)&&a[2]==Yt()){const n=JSON.parse(e);console.error(`Error message from openWB: 
+Command: ${n.command}
+Data: JSON.stringify(err.data)
+Error:
+ ${n.error}`)}}function uh(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}const hh={key:0,class:"fas fa-caret-down"},ph={key:1,class:"fas fa-caret-right"},gh={key:0,class:"content p-2 m-2"},mh={key:1,class:"sublist col-md-9 m-0 p-0 ps-2"},vh=O({__name:"MqttNode",props:{node:{},level:{},hide:{type:Boolean},expandAll:{type:Boolean}},setup(t){const e=t;let a=X(!e.hide),n=X(!1);const r=p(()=>e.node.name),s=p(()=>[...e.node.children].sort((d,C)=>d.name<C.name?-1:1)),h=p(()=>e.node.count>0?"("+e.node.count+")":""),g=p(()=>e.node.children.length),c=p(()=>e.node.lastValue!=""?{"font-style":"italic","grid-column-start":e.level,"grid-column-end":-1}:{"grid-column-start":e.level,"grid-column-end":-1});function u(){g.value>0&&(a.value=!a.value),e.node.lastValue!=""&&(n.value=!n.value)}return(d,C)=>{const J=ho("MqttNode",!0);return l(),m(G,null,[o("div",{class:"name py-2 px-2 m-0",style:Z(c.value),onClick:u},[(i(a)||e.expandAll)&&g.value>0||i(n)?(l(),m("span",hh)):(l(),m("span",ph)),z(" "+x(r.value)+x(h.value),1)],4),i(n)?(l(),m("div",gh,[o("code",null,x(e.node.lastValue),1)])):w("",!0),(i(a)||e.expandAll)&&g.value>0?(l(),m("div",mh,[(l(!0),m(G,null,K(s.value,(L,E)=>(l(),$(J,{key:E,level:e.level+1,node:L,hide:!0,"expand-all":e.expandAll},null,8,["level","node","expand-all"]))),128))])):w("",!0)],64)}}}),fh=U(vh,[["__scopeId","data-v-df7e578a"]]),oa=t=>(oe("data-v-a349646d"),t=t(),ne(),t),_h={class:"mqviewer"},bh={class:"row pt-2"},yh={class:"col"},wh=oa(()=>o("h3",{class:"mqtitle ps-2"},"MQTT Message Viewer",-1)),kh=oa(()=>o("hr",null,null,-1)),Sh=oa(()=>o("hr",null,null,-1)),xh={key:0,class:"topiclist"},$h=O({__name:"MQTTViewer",setup(t){Ve(()=>{});const e=X(!1);function a(){e.value=!e.value}const n=p(()=>e.value?"active":"");return(r,s)=>(l(),m("div",_h,[o("div",bh,[o("div",yh,[wh,kh,o("button",{class:N(["btn btn-small btn-outline-primary ms-2",n.value]),onClick:a}," Expand All ",2),Sh])]),i(xt)[0]?(l(),m("div",xh,[(l(!0),m(G,null,K(i(xt)[0].children.sort((h,g)=>h.name<g.name?-1:1),(h,g)=>(l(),$(fh,{key:g,node:h,level:1,hide:!0,"expand-all":e.value},null,8,["node","expand-all"]))),128))])):w("",!0)]))}}),Mh=U($h,[["__scopeId","data-v-a349646d"]]),Ih=["value"],Ch=O({__name:"SelectInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,r=p({get(){return a.modelValue},set(s){n("update:modelValue",s)}});return(s,h)=>gt((l(),m("select",{id:"selectme","onUpdate:modelValue":h[0]||(h[0]=g=>r.value=g),class:"form-select"},[(l(!0),m(G,null,K(s.options,(g,c)=>(l(),m("option",{key:c,value:g[1]},x(g[0]),9,Ih))),128))],512)),[[po,r.value]])}}),Ph=U(Ch,[["__scopeId","data-v-5e33ce1f"]]),Qa=t=>(oe("data-v-01b18db3"),t=t(),ne(),t),Bh=Qa(()=>o("span",{type:"button",class:"float-end mt-0 ms-1","data-bs-toggle":"collapse","data-bs-target":"#themesettings"},[o("span",null,[o("i",{class:"fa-solid fa-circle-check"})])],-1)),Vh={class:"subgrid m-0 p-0"},Lh={class:"settingscolumn"},Oh={class:"settingscolumn"},Ah={class:"settingscolumn"},Th=Qa(()=>o("div",{class:"grid-col-12 mb-3 me-3"},[o("button",{class:"btn btn-sm btn-secondary float-end","data-bs-toggle":"collapse","data-bs-target":"#themesettings"}," Schließen ")],-1)),Dh=O({__name:"ThemeSettings",emits:["reset-arcs"],setup(t,{emit:e}){const a=e,n=[["Dunkel","dark"],["Hell","light"],["Blau","blue"]],r=[["3 kW","0"],["3,1 kW","1"],["3,14 kW","2"],["3,141 kW","3"],["3141 W","4"]],s=[["Orange","normal"],["Grün/Violett","standard"],["Bunt","advanced"]],h=[["Aus","off"],["Menü","navbar"],["Buttonleiste","buttonbar"]],g=[["Aus","no"],['"Alles"-Reiter',"infoview"],["Immer","always"]];return(c,u)=>(l(),$(Ge,{"full-width":!0},{title:y(()=>[z(" Look & Feel ")]),buttons:y(()=>[Bh]),default:y(()=>[o("div",Vh,[o("div",Lh,[b(F,{fullwidth:!0,title:"Farbschema",icon:"fa-adjust",infotext:"Hintergrundfarbe"},{default:y(()=>[b(We,{modelValue:i(v).displayMode,"onUpdate:modelValue":u[0]||(u[0]=d=>i(v).displayMode=d),options:n},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Farbschema Smart-Home-Geräte",icon:"fa-palette",infotext:"Für die Smart-Home-Geräte stehen mehrere Schemata zur Verfügung."},{default:y(()=>[b(We,{modelValue:i(v).smartHomeColors,"onUpdate:modelValue":u[1]||(u[1]=d=>i(v).smartHomeColors=d),options:s},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Grafik: Raster",icon:"fa-th",infotext:"Verwende ein Hintergrundraster in den Grafiken"},{default:y(()=>[b(le,{modelValue:i(v).showGrid,"onUpdate:modelValue":u[2]||(u[2]=d=>i(v).showGrid=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Variable Bogenlänge",icon:"fa-chart-area",infotext:"Im Graph 'Aktuelle Leistung' können die Bögen immer die volle Länge haben, oder entsprechend des aktuellen Gesamtleistung verkürzt dargestellt werden."},{default:y(()=>[b(le,{modelValue:i(v).showRelativeArcs,"onUpdate:modelValue":u[3]||(u[3]=d=>i(v).showRelativeArcs=d)},null,8,["modelValue"])]),_:1}),i(v).showRelativeArcs?(l(),$(F,{key:0,fullwidth:!0,title:"Bögen zurücksetzen",icon:"fa-undo",infotext:"Durch Click auf den Button wird die Maximallänge der Bögen auf den aktuellen Wert gesetzt."},{default:y(()=>[i(v).showRelativeArcs?(l(),m("button",{key:0,class:"btn btn-secondary",onClick:u[4]||(u[4]=d=>a("reset-arcs"))}," Reset ")):w("",!0)]),_:1})):w("",!0),b(F,{fullwidth:!0,title:"Anzahl Dezimalstellen",icon:"fa-sliders-h",infotext:"Alle kW- und kWh-Werte werden mit der gewählten Anzahl an Stellen angezeigt."},{default:y(()=>[b(Ph,{modelValue:i(v).decimalPlaces,"onUpdate:modelValue":u[5]||(u[5]=d=>i(v).decimalPlaces=d),options:r},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Uhrzeit anzeigen",icon:"fa-clock",infotext:"Zeige die aktuelle Uhrzeit an. In der Menüleiste oder neben den Lade-Buttons."},{default:y(()=>[b(We,{modelValue:i(v).showClock,"onUpdate:modelValue":u[6]||(u[6]=d=>i(v).showClock=d),options:h},null,8,["modelValue"])]),_:1})]),o("div",Oh,[b(F,{fullwidth:!0,title:"Kompakte Ladepunktliste",icon:"fa-list",infotext:"Zeige eine einzelne Ladepunktliste statt separater Element pro Ladepunkt."},{default:y(()=>[b(We,{modelValue:i(v).shortCpList,"onUpdate:modelValue":u[7]||(u[7]=d=>i(v).shortCpList=d),options:g},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Buttonleiste für Ladepunkte",icon:"fa-window-maximize",infotext:"Informationen zu Ladepunkten über den Diagrammen anzeigen."},{default:y(()=>[b(le,{modelValue:i(v).showButtonBar,"onUpdate:modelValue":u[8]||(u[8]=d=>i(v).showButtonBar=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Filter-Buttons",icon:"fa-filter",infotext:"Hauptseite mit Buttons zur Auswahl der Kategorie."},{default:y(()=>[b(le,{modelValue:i(v).showQuickAccess,"onUpdate:modelValue":u[9]||(u[9]=d=>i(v).showQuickAccess=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Breite Widgets",icon:"fa-desktop",infotext:"Widgets immer breit machen"},{default:y(()=>[b(le,{modelValue:i(v).preferWideBoxes,"onUpdate:modelValue":u[10]||(u[10]=d=>i(v).preferWideBoxes=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Stufenlose Displaybreite",icon:"fa-maximize",infotext:"Die Breite des Displays wird immer voll ausgenutzt. Dies kann in einigen Fällen zu inkorrekter Darstellung führen."},{default:y(()=>[b(le,{modelValue:i(v).fluidDisplay,"onUpdate:modelValue":u[11]||(u[11]=d=>i(v).fluidDisplay=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Animationen",icon:"fa-film",infotext:"Animationen anzeigen"},{default:y(()=>[b(le,{modelValue:i(v).showAnimations,"onUpdate:modelValue":u[12]||(u[12]=d=>i(v).showAnimations=d)},null,8,["modelValue"])]),_:1})]),o("div",Ah,[b(F,{fullwidth:!0,title:"Zähler anzeigen",icon:"fa-chart-bar",infotext:"Zeige die Werte zusätzlich angelegter Zähler"},{default:y(()=>[b(le,{modelValue:i(v).showCounters,"onUpdate:modelValue":u[13]||(u[13]=d=>i(v).showCounters=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Fahrzeuge anzeigen",icon:"fa-car",infotext:"Zeige alle Fahrzeuge mit Ladestand und Reichweite"},{default:y(()=>[b(le,{modelValue:i(v).showVehicles,"onUpdate:modelValue":u[14]||(u[14]=d=>i(v).showVehicles=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Standardfahrzeug anzeigen",icon:"fa-car",infotext:"Zeige das Standard-Fahrzeug in der Fahzeugliste"},{default:y(()=>[b(le,{modelValue:i(v).showStandardVehicle,"onUpdate:modelValue":u[15]||(u[15]=d=>i(v).showStandardVehicle=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Preistabelle anzeigen",icon:"fa-car",infotext:"Zeige die Strompreistabelle in einer separaten Box an"},{default:y(()=>[b(le,{modelValue:i(v).showPrices,"onUpdate:modelValue":u[16]||(u[16]=d=>i(v).showPrices=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Wechselrichter-Details anzeigen",icon:"fa-solar-panel",infotext:"Zeige Details zu den einzelnen Wechselrichtern"},{default:y(()=>[b(le,{modelValue:i(v).showInverters,"onUpdate:modelValue":u[17]||(u[17]=d=>i(v).showInverters=d)},null,8,["modelValue"])]),_:1}),b(F,{fullwidth:!0,title:"Debug-Modus",icon:"fa-bug-slash",infotext:"Kontrollausgaben in der Console sowie Anzeige von Bildschirmbreite und MQ-Viewer"},{default:y(()=>[b(le,{modelValue:i(v).debug,"onUpdate:modelValue":u[18]||(u[18]=d=>i(v).debug=d)},null,8,["modelValue"])]),_:1})]),Th])]),_:1}))}}),Wh=U(Dh,[["__scopeId","data-v-01b18db3"]]),Se=t=>(oe("data-v-516e2f6a"),t=t(),ne(),t),zh={class:"container-fluid px-2 m-0 theme-colors"},Gh={id:"themesettings",class:"collapse"},Eh={key:2,class:"row py-0 px-0 m-0"},jh={key:3,class:"row py-0 m-0 d-flex justify-content-center"},Uh={key:4,class:"nav nav-tabs nav-justified mx-1 mt-2",role:"tablist"},Fh=go('<a class="nav-link active" data-bs-toggle="tab" data-bs-target="#showAll" data-v-516e2f6a><i class="fa-solid fa-lg fa-circle-info me-1" data-v-516e2f6a></i><span class="d-none d-md-inline ms-2" data-v-516e2f6a>Alles</span></a><a class="nav-link" data-bs-toggle="tab" data-bs-target="#chargepointlist" data-v-516e2f6a><i class="fa-solid fa-lg fa-charging-station" data-v-516e2f6a></i><span class="d-none d-md-inline ms-2" data-v-516e2f6a>Ladepunkte</span></a>',2),Nh={key:0,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pricecharttabbed"},Hh=Se(()=>o("i",{class:"fa-solid fa-lg fa-coins"},null,-1)),Rh=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Strompreis",-1)),Jh=[Hh,Rh],qh={key:1,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#vehiclelist"},Yh=Se(()=>o("i",{class:"fa-solid fa-lg fa-car"},null,-1)),Qh=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Fahrzeuge",-1)),Zh=[Yh,Qh],Xh={key:2,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#batterylist"},Kh=Se(()=>o("i",{class:"fa-solid fa-lg fa-car-battery"},null,-1)),ep=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Speicher",-1)),tp=[Kh,ep],ap={key:3,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#smarthomelist"},op=Se(()=>o("i",{class:"fa-solid fa-lg fa-plug"},null,-1)),np=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Smart Home",-1)),rp=[op,np],sp={key:4,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#counterlist"},ip=Se(()=>o("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),lp=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Zähler",-1)),cp=[ip,lp],dp={key:5,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#inverterlist"},up=Se(()=>o("i",{class:"fa-solid fa-lg fa-solar-panel"},null,-1)),hp=Se(()=>o("span",{class:"d-none d-md-inline ms-2"},"Wechselrichter",-1)),pp=[up,hp],gp={key:5,id:"cpContent",class:"tab-content mx-0 pt-1"},mp={id:"showAll",class:"tab-pane active",role:"tabpanel","aria-labelledby":"showall-tab"},vp={class:"row py-0 m-0 d-flex justify-content-center"},fp={id:"chargepointlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"chargepoint-tab"},_p={class:"row py-0 m-0 d-flex justify-content-center"},bp={id:"vehiclelist",class:"tab-pane",role:"tabpanel","aria-labelledby":"vehicle-tab"},yp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},wp={id:"batterylist",class:"tab-pane",role:"tabpanel","aria-labelledby":"battery-tab"},kp={class:"row py-0 m-0 d-flex justify-content-center"},Sp={id:"smarthomelist",class:"tab-pane",role:"tabpanel","aria-labelledby":"smarthome-tab"},xp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},$p={id:"counterlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"counter-tab"},Mp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},Ip={id:"inverterlist",class:"tab-pane",role:"tabpanel","aria-labelledby":"inverter-tab"},Cp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},Pp={id:"pricecharttabbed",class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},Bp={key:0,class:"row py-0 m-0 d-flex justify-content-center"},Vp={key:0,class:"row p-2 mt-5"},Lp={class:"col p-2"},Op=Se(()=>o("hr",null,null,-1)),Ap={class:"d-flex justify-content-between"},Tp={class:"mx-4"},Dp={key:0},Wp=O({__name:"ColorsTheme",setup(t){const e=X(!1),a=p(()=>[...ae.values()].filter(h=>h.configured).length>0);function n(){Ma()}function r(){e.value=!e.value}Ve(()=>{n(),window.addEventListener("resize",Uo),window.addEventListener("focus",s),ah()});function s(){document.hasFocus()&&me(!0)}return(h,g)=>(l(),m(G,null,[o("div",zh,[o("div",Gh,[b(Wh,{onResetArcs:i(Ho)},null,8,["onResetArcs"])]),i(v).showButtonBar?(l(),$($d,{key:0})):w("",!0),w("",!0),(l(),m("div",Eh,[b(Bu,null,{item1:y(()=>[b(Mn)]),item2:y(()=>[b(Nr)]),item3:y(()=>[b(gs)]),_:1})])),i(v).showQuickAccess?w("",!0):(l(),m("div",jh,[b(Lt,{id:"1",compact:i(v).shortCpList=="always"},null,8,["compact"]),i(v).showPrices?(l(),$(Et,{key:0,id:"NoTabs"})):w("",!0),i(v).showVehicles?(l(),$(Dt,{key:1})):w("",!0),b(Ot),a.value?(l(),$(At,{key:2})):w("",!0),i(v).showCounters?(l(),$(Tt,{key:3})):w("",!0),i(v).showInverters?(l(),$(jt,{key:4})):w("",!0)])),i(v).showQuickAccess?(l(),m("nav",Uh,[Fh,i(v).showPrices?(l(),m("a",Nh,Jh)):w("",!0),i(v).showVehicles?(l(),m("a",qh,Zh)):w("",!0),i(ue).isBatteryConfigured?(l(),m("a",Xh,tp)):w("",!0),a.value?(l(),m("a",ap,rp)):w("",!0),i(v).showCounters?(l(),m("a",sp,cp)):w("",!0),i(v).showInverters?(l(),m("a",dp,pp)):w("",!0)])):w("",!0),i(v).showQuickAccess?(l(),m("div",gp,[o("div",mp,[o("div",vp,[b(Lt,{id:"2",compact:i(v).shortCpList!="no"},null,8,["compact"]),i(v).showPrices?(l(),$(Et,{key:0,id:"Overview"})):w("",!0),i(v).showVehicles?(l(),$(Dt,{key:1})):w("",!0),b(Ot),a.value?(l(),$(At,{key:2})):w("",!0),i(v).showCounters?(l(),$(Tt,{key:3})):w("",!0),i(v).showInverters?(l(),$(jt,{key:4})):w("",!0)])]),o("div",fp,[o("div",_p,[b(Lt,{id:"3",compact:i(v).shortCpList=="always"},null,8,["compact"])])]),o("div",bp,[i(v).showVehicles?(l(),m("div",yp,[b(Dt)])):w("",!0)]),o("div",wp,[o("div",kp,[b(Ot)])]),o("div",Sp,[a.value?(l(),m("div",xp,[b(At)])):w("",!0)]),o("div",$p,[i(v).showCounters?(l(),m("div",Mp,[b(Tt)])):w("",!0)]),o("div",Ip,[i(v).showInverters?(l(),m("div",Cp,[b(jt)])):w("",!0)]),o("div",Pp,[i(v).showPrices?(l(),m("div",Bp,[b(Et,{id:"Tabbed"})])):w("",!0)])])):w("",!0)]),i(v).debug?(l(),m("div",Vp,[o("div",Lp,[Op,o("div",Ap,[o("p",Tp,"Screen Width: "+x(i(wt).x),1),o("button",{class:"btn btn-sm btn-secondary mx-4",onClick:r}," MQ Viewer ")]),e.value?(l(),m("hr",Dp)):w("",!0),e.value?(l(),$(Mh,{key:1})):w("",!0)])])):w("",!0)],64))}}),zp=U(Wp,[["__scopeId","data-v-516e2f6a"]]),Ct=t=>(oe("data-v-ed619966"),t=t(),ne(),t),Gp={class:"navbar navbar-expand-lg px-0 mb-0"},Ep=Ct(()=>o("a",{href:"/",class:"navbar-brand"},[o("span",null,"openWB")],-1)),jp={key:0,class:"position-absolute-50 navbar-text ms-4 navbar-time",style:{color:"var(--color-menu)"}},Up=Ct(()=>o("button",{class:"navbar-toggler togglebutton ps-5",type:"button","data-bs-toggle":"collapse","data-bs-target":"#mainNavbar","aria-controls":"mainNavbar","aria-expanded":"false","aria-label":"Toggle navigation"},[o("span",{class:"fa-solid fa-ellipsis-vertical"})],-1)),Fp=Ct(()=>o("div",{id:"mainNavbar",class:"collapse navbar-collapse justify-content-end"},[o("div",{class:"nav navbar-nav"},[o("a",{id:"navStatus",class:"nav-link",href:"../../settings/#/Status"},"Status"),o("div",{class:"nav-item dropdown"},[o("a",{id:"loggingDropdown",class:"nav-link",href:"#",role:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[z("Auswertungen "),o("i",{class:"fa-solid fa-caret-down"})]),o("div",{class:"dropdown-menu","aria-labelledby":"loggingDropdown"},[o("a",{href:"../../settings/#/Logging/ChargeLog",class:"dropdown-item"},"Ladeprotokoll"),o("a",{href:"../../settings/#/Logging/Chart",class:"dropdown-item"},"Diagramme")])]),o("div",{class:"nav-item dropdown"},[o("a",{id:"settingsDropdown",class:"nav-link",href:"#",role:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[z("Einstellungen "),o("span",{class:"fa-solid fa-caret-down"})]),o("div",{class:"dropdown-menu","aria-labelledby":"settingsDropdown"},[o("a",{id:"navSettings",class:"nav-link",href:"../../settings/index.html"},"openWB"),o("a",{class:"nav-link","data-bs-toggle":"collapse","data-bs-target":"#themesettings","aria-expanded":"false","aria-controls":"themeSettings"},[o("span",null,[z("Look&Feel"),o("span",{class:"fa-solid fa-caret-down"})])])])])])],-1)),Np=Ct(()=>o("hr",{class:"m-0 p-0 mb-2"},null,-1)),Hp=[Np],Rp=O({__name:"NavigationBar",setup(t){let e;const a=p(()=>v.fluidDisplay?"container-fluid":"container-lg");return Ve(()=>{e=setInterval(()=>{Rt.value=new Date},1e3)}),mo(()=>{clearInterval(e)}),(n,r)=>(l(),m(G,null,[o("nav",Gp,[o("div",{class:N(a.value)},[Ep,i(v).showClock=="navbar"?(l(),m("span",jp,x(i(Ca)(i(Rt))),1)):w("",!0),Up,Fp],2)]),o("div",{class:N(a.value)},Hp,2)],64))}}),Jp=U(Rp,[["__scopeId","data-v-ed619966"]]),qp={id:"app",class:"m-0 p-0"},Yp={class:"row p-0 m-0"},Qp={class:"col-12 p-0 m-0"},Zp=O({__name:"App",setup(t){const e=p(()=>v.fluidDisplay?"container-fluid":"container-lg");return(a,n)=>(l(),m("div",qp,[b(Jp),o("div",{class:N(["p-0",e.value])},[o("div",Yp,[o("div",Qp,[b(zp)])])],2)]))}}),Xp=vo(Zp);fo();Xp.mount("#app");
diff --git a/packages/modules/web_themes/colors/web/assets/manifest-DEQalSKE.json b/packages/modules/web_themes/colors/web/assets/manifest-DEQalSKE.json
deleted file mode 100644
index 1cb99cc40d..0000000000
--- a/packages/modules/web_themes/colors/web/assets/manifest-DEQalSKE.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "short_name": "openWB",
-  "name": "openWB",
-  "icons": [
-    {
-      "src": "/favicon-192x192.png",
-      "sizes": "192x192",
-      "type": "image/png"
-    },
-    {
-      "src": "/favicon-512x512.png",
-      "sizes": "512x512",
-      "type": "image/png"
-    }
-  ],
-  "start_url": ".",
-  "display": "standalone",
-  "theme_color": "#000000",
-  "background_color": "#ffffff"
-}
\ No newline at end of file
diff --git a/packages/modules/web_themes/colors/web/index.html b/packages/modules/web_themes/colors/web/index.html
index a92b6aea2b..f9b8ff767d 100644
--- a/packages/modules/web_themes/colors/web/index.html
+++ b/packages/modules/web_themes/colors/web/index.html
@@ -22,11 +22,11 @@
 	<link rel="icon" type="image/png" sizes="16x16" href="/openWB/web/img/favicons/favicon-16x16.png">
 	<link rel="apple-touch-icon" sizes="57x57" href="/openWB/web/img/favicons/apple-touch-icon-57x57.png">
 	<link rel="apple-touch-icon" sizes="60x60" href="/openWB/web/img/favicons/apple-touch-icon-60x60.png">
-	<link rel="manifest" href="/openWB/web/themes/colors/assets/manifest-DEQalSKE.json">
+	<link rel="manifest" href="/openWB/web/manifest.json">
 	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/themes/colors/assets/index-BXxsmrtl.js"></script>
+  <script type="module" crossorigin src="/openWB/web/themes/colors/assets/index-OBHjRVxr.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/themes/colors/assets/vendor-Cj6hjtXS.js">
-  <link rel="stylesheet" crossorigin href="/openWB/web/themes/colors/assets/index-DO1I-sJT.css">
+  <link rel="stylesheet" crossorigin href="/openWB/web/themes/colors/assets/index-C6-JiuzP.css">
 </head>
 
 <body>

From ddce6ae12bcf29918fe582ae1f5f98c2d34e139f Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Sat, 14 Sep 2024 11:26:57 +0200
Subject: [PATCH 041/205] update smart home config

---
 web/settings/modules/legacy_smart_home/smarthomeconfig.php | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/web/settings/modules/legacy_smart_home/smarthomeconfig.php b/web/settings/modules/legacy_smart_home/smarthomeconfig.php
index 4c5726bd64..0040f378dc 100644
--- a/web/settings/modules/legacy_smart_home/smarthomeconfig.php
+++ b/web/settings/modules/legacy_smart_home/smarthomeconfig.php
@@ -308,7 +308,8 @@
 									</div>
 								</div>
 							</div>
-							<div class="device<?php echo $devicenum; ?>-option device<?php echo $devicenum; ?>-option-shelly device<?php echo $devicenum; ?>-option-tasmota device<?php echo $devicenum; ?>-option-acthor device<?php echo $devicenum; ?>-option-lambda device<?php echo $devicenum; ?>-option-elwa device<?php echo $devicenum; ?>-option-idm device<?php echo $devicenum; ?>-option-stiebel device<?php echo $devicenum; ?>-option-avm device<?php echo $devicenum; ?>-option-mystrom device<?php echo $devicenum; ?>-option-vampair device<?php echo $devicenum;  ?>-option-viessmann device<?php echo $devicenum;  ?>-option-ratiotherm device<?php echo $devicenum;  ?>-option-NXDACXX hide">
+							
+							<div class="device<?php echo $devicenum; ?>-option device<?php echo $devicenum; ?>-option-shelly device<?php echo $devicenum; ?>-option-tasmota device<?php echo $devicenum; ?>-option-acthor device<?php echo $devicenum; ?>-option-lambda device<?php echo $devicenum; ?>-option-elwa device<?php echo $devicenum; ?>-option-idm device<?php echo $devicenum; ?>-option-stiebel device<?php echo $devicenum; ?>-option-avm device<?php echo $devicenum; ?>-option-mystrom device<?php echo $devicenum; ?>-option-vampair device<?php echo $devicenum;  ?>-option-viessmann device<?php echo $devicenum;  ?>-option-ratiotherm device<?php echo $devicenum;  ?>-option-askoheat device<?php echo $devicenum;  ?>-option-NXDACXX hide">
 								<hr class="border-secondary">
 								<div class="form-row mb-1">
 									<label for="device_ipDevices<?php echo $devicenum; ?>" class="col-md-4 col-form-label">IP Adresse</label>

From e26caf0a83fc0cc29be274d23b41792dc0d8fe87 Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Mon, 16 Sep 2024 08:41:58 +0200
Subject: [PATCH 042/205] Feature extended debug info (#1830)

* publish openwb serial number
* add manufacturer and model to ev and component
* add vehicle info to setdata
* add vehicle info to bridge
---
 data/config/mosquitto/openwb_local.conf       |  7 ++---
 packages/control/ev.py                        |  4 +++
 .../helpermodules/hardware_configuration.py   |  8 +++---
 packages/helpermodules/modbusserver.py        |  2 +-
 packages/helpermodules/setdata.py             |  2 ++
 packages/helpermodules/update_config.py       | 27 +++++++++++++++++--
 packages/modules/common/component_setup.py    |  1 +
 7 files changed, 39 insertions(+), 12 deletions(-)

diff --git a/data/config/mosquitto/openwb_local.conf b/data/config/mosquitto/openwb_local.conf
index 8909e9280f..4999880fd3 100644
--- a/data/config/mosquitto/openwb_local.conf
+++ b/data/config/mosquitto/openwb_local.conf
@@ -1,4 +1,4 @@
-# openwb-version:14
+# openwb-version:15
 listener 1886 localhost
 allow_anonymous true
 
@@ -9,11 +9,8 @@ topic openWB/set/# both 2
 topic openWB/LegacySmartHome/# out 2
 topic openWB/LegacySmartHome/config/set/# both 2
 
-topic openWB/vehicle/+/name out 2
+topic openWB/vehicle/+/+ out 2
 topic openWB/vehicle/+/soc_module/# out 2
-topic openWB/vehicle/+/tag_id out 2
-topic openWB/vehicle/+/charge_template out 2
-topic openWB/vehicle/+/ev_template out 2
 topic openWB/vehicle/+/get/# out 2
 topic openWB/vehicle/template/# out 2
 
diff --git a/packages/control/ev.py b/packages/control/ev.py
index f19842d783..02cf0884d4 100644
--- a/packages/control/ev.py
+++ b/packages/control/ev.py
@@ -31,6 +31,10 @@ def get_vehicle_default() -> dict:
         "charge_template": 0,
         "ev_template": 0,
         "name": "neues Fahrzeug",
+        "info": {
+            "manufacturer": None,
+            "model": None,
+        },
         "tag_id": [],
         "get/soc": 0
     }
diff --git a/packages/helpermodules/hardware_configuration.py b/packages/helpermodules/hardware_configuration.py
index 179a88eb18..fdf405f9bb 100644
--- a/packages/helpermodules/hardware_configuration.py
+++ b/packages/helpermodules/hardware_configuration.py
@@ -1,6 +1,6 @@
 import json
 import sys
-from typing import Dict
+from typing import Dict, Optional
 
 from helpermodules.utils.json_file_handler import write_and_check
 
@@ -33,12 +33,12 @@ def exists_hardware_configuration_setting(name: str) -> bool:
     return name in _read_configuration()
 
 
-def get_serial_number() -> str:
+def get_serial_number() -> Optional[str]:
     try:
         with open("/home/openwb/snnumber", "r") as file:
-            return file.read().replace("\n", "")
+            return file.read().replace("snnumber=", "").replace("\n", "")
     except FileNotFoundError:
-        return "noSerialNumber"
+        return None
 
 
 if __name__ == "__main__":
diff --git a/packages/helpermodules/modbusserver.py b/packages/helpermodules/modbusserver.py
index 1b9e03a235..0da5dd1a95 100644
--- a/packages/helpermodules/modbusserver.py
+++ b/packages/helpermodules/modbusserver.py
@@ -23,7 +23,7 @@
     TCPServer.allow_reuse_address = True
     app = get_server(TCPServer, ('0.0.0.0', 1502), RequestHandler)
 
-    serial_number = get_serial_number().replace("snnumber=", "")
+    serial_number = get_serial_number()
 except (Exception, OSError):
     log.exception("Fehler im Modbus-Server")
 
diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py
index b332201a47..1658400283 100644
--- a/packages/helpermodules/setdata.py
+++ b/packages/helpermodules/setdata.py
@@ -400,6 +400,8 @@ def process_vehicle_topic(self, msg: mqtt.MQTTMessage):
         try:
             if "/name" in msg.topic:
                 self._validate_value(msg, str)
+            elif "/info" in msg.topic:
+                self._validate_value(msg, "json")
             elif "openWB/set/vehicle/template" in msg.topic:
                 self._subprocess_vehicle_chargemode_topic(msg)
             elif "openWB/set/vehicle/set/vehicle_update_completed" in msg.topic:
diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 5a114f04a3..046959cd5c 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -18,7 +18,11 @@
 from helpermodules import hardware_configuration
 from helpermodules.broker import InternalBrokerClient
 from helpermodules.constants import NO_ERROR
-from helpermodules.hardware_configuration import get_hardware_configuration_setting, update_hardware_configuration
+from helpermodules.hardware_configuration import (
+    get_hardware_configuration_setting,
+    update_hardware_configuration,
+    get_serial_number
+)
 from helpermodules.measurement_logging.process_log import get_default_charge_log_columns, get_totals
 from helpermodules.measurement_logging.write_log import get_names
 from helpermodules.messaging import MessageType, pub_system_message
@@ -43,7 +47,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 58
+    DATASTORE_VERSION = 59
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -275,6 +279,7 @@ class UpdateConfig:
         "^openWB/vehicle/[0-9]+/charge_template$",
         "^openWB/vehicle/[0-9]+/ev_template$",
         "^openWB/vehicle/[0-9]+/name$",
+        "^openWB/vehicle/[0-9]+/info$",
         "^openWB/vehicle/[0-9]+/soc_module/calculated_soc_state$",
         "^openWB/vehicle/[0-9]+/soc_module/config$",
         "^openWB/vehicle/[0-9]+/soc_module/general_config$",
@@ -428,6 +433,7 @@ class UpdateConfig:
         ("openWB/counter/config/consider_less_charging", counter_all.Config().consider_less_charging),
         ("openWB/counter/config/home_consumption_source_id", counter_all.Config().home_consumption_source_id),
         ("openWB/vehicle/0/name", "Standard-Fahrzeug"),
+        ("openWB/vehicle/0/info", {"manufacturer": None, "model": None}),
         ("openWB/vehicle/0/charge_template", ev.Ev(0).charge_template.ct_num),
         ("openWB/vehicle/0/soc_module/config", NO_MODULE),
         ("openWB/vehicle/0/soc_module/general_config", dataclass_utils.asdict(GeneralVehicleConfig())),
@@ -503,6 +509,7 @@ class UpdateConfig:
         ("openWB/system/ip_address", "unknown"),
         ("openWB/system/mqtt/valid_partner_ids", []),
         ("openWB/system/release_train", "master"),
+        ("openWB/system/serial_number", get_serial_number()),
     )
     invalid_topic = (
         # Tuple: (Regex, callable)
@@ -1713,3 +1720,19 @@ def upgrade(topic: str, payload) -> None:
                 Pub().pub(topic, payload)
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 58)
+
+    def upgrade_datastore_58(self) -> None:
+        def upgrade(topic: str, payload) -> Optional[dict]:
+            # add manufacturer and model to vehicles
+            if re.search("openWB/vehicle/[0-9]+/name", topic) is not None:
+                vehicle_info_topic = topic.replace("/name", "/info")
+                if vehicle_info_topic not in self.all_received_topics:
+                    return {vehicle_info_topic: {"manufacturer": None, "model": None}}
+            # add manufacturer and model to components
+            if re.search("openWB/system/device/[0-9]+/component/[0-9]+/config", topic) is not None:
+                config_payload = decode_payload(payload)
+                if "info" not in config_payload:
+                    config_payload.update({"info": {"manufacturer": None, "model": None}})
+                    return {topic: config_payload}
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 59)
diff --git a/packages/modules/common/component_setup.py b/packages/modules/common/component_setup.py
index 47d17ff7e9..c4eaffe1a1 100644
--- a/packages/modules/common/component_setup.py
+++ b/packages/modules/common/component_setup.py
@@ -6,6 +6,7 @@
 class ComponentSetup(Generic[T]):
     def __init__(self, name: str, type: str, id: int, configuration: T) -> None:
         self.name = name
+        self.info = {"manufacturer": None, "model": None}
         self.type = type
         self.id = id
         self.configuration = configuration

From ba645264cd934dcc8758d7fc29a95cc73fd8e0c8 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Mon, 16 Sep 2024 08:43:32 +0200
Subject: [PATCH 043/205] build settings

---
 .../assets/{ChargeLog-83ebac6d.js => ChargeLog-ad45450b.js}    | 2 +-
 ...llation-7ae4661c.js => ChargePointInstallation-92c3e709.js} | 2 +-
 web/settings/assets/{Chart-70b754a3.js => Chart-5ed52ad8.js}   | 2 +-
 .../{CloudConfig-8640925d.js => CloudConfig-50261545.js}       | 2 +-
 .../{DataManagement-6aff49ed.js => DataManagement-0dd4c76f.js} | 2 +-
 .../{DebugConfig-8fb79648.js => DebugConfig-a27684ff.js}       | 2 +-
 ...hargeConfig-e3c03ea2.js => GeneralChargeConfig-ca4f9ae6.js} | 2 +-
 .../{GeneralConfig-0de4c3ba.js => GeneralConfig-92f899f4.js}   | 2 +-
 ...stallation-6ab82611.js => HardwareInstallation-6046586c.js} | 2 +-
 ...stallAssistant-5646f4c7.js => InstallAssistant-ed245998.js} | 2 +-
 ...tantStep0-2109508c.js => InstallAssistantStep0-795cb040.js} | 2 +-
 ...tantStep1-eb28678f.js => InstallAssistantStep1-5a8a51d7.js} | 2 +-
 ...ntStep10-f49c5c61.js => InstallAssistantStep10-2fd9a62d.js} | 2 +-
 ...tantStep2-ecf5ee14.js => InstallAssistantStep2-c12663cc.js} | 2 +-
 ...tantStep3-4274b010.js => InstallAssistantStep3-53904745.js} | 2 +-
 ...tantStep4-3310d3b5.js => InstallAssistantStep4-8b97ea50.js} | 2 +-
 ...tantStep5-3211fa20.js => InstallAssistantStep5-290f8655.js} | 2 +-
 ...tantStep6-df7cce5c.js => InstallAssistantStep6-90ce23b3.js} | 2 +-
 ...tantStep7-ed852473.js => InstallAssistantStep7-acefbf3b.js} | 2 +-
 ...tantStep8-7f8d9e76.js => InstallAssistantStep8-97580236.js} | 2 +-
 ...tantStep9-e32e780a.js => InstallAssistantStep9-7029496d.js} | 2 +-
 ...te-b18c62ce.js => InstallAssistantStepTemplate-06a9f1a7.js} | 2 +-
 ...hargeConfig-9b1ccfc3.js => InstantChargeConfig-a54cb6df.js} | 2 +-
 .../{LegalSettings-9d18b06d.js => LegalSettings-88dd4593.js}   | 2 +-
 ...mentConfig-9fa3e6c0.js => LoadManagementConfig-003e3bae.js} | 2 +-
 ...ttBridgeConfig-87097544.js => MqttBridgeConfig-d5761c85.js} | 2 +-
 ...alComponents-49b0ff6e.js => OptionalComponents-77cf1612.js} | 2 +-
 .../{PVChargeConfig-988712ae.js => PVChargeConfig-4906be0a.js} | 2 +-
 ...rgeConfig-0b6dc1c6.js => ScheduledChargeConfig-78436900.js} | 2 +-
 web/settings/assets/{Status-29efdc6d.js => Status-130a6c94.js} | 2 +-
 web/settings/assets/Support-c0166323.js                        | 3 +++
 web/settings/assets/Support-e534f32f.js                        | 1 -
 web/settings/assets/{System-083c7c2d.js => System-ebad11a3.js} | 2 +-
 .../{TestingStore-92266ef4.js => TestingStore-81bd6c5d.js}     | 2 +-
 ...meChargeConfig-23157950.js => TimeChargeConfig-9f248c3d.js} | 2 +-
 web/settings/assets/VehicleConfig-032e1c73.js                  | 1 +
 web/settings/assets/VehicleConfig-76952b56.js                  | 1 -
 ...icity_tariff-eefa229a.js => electricity_tariff-070f80df.js} | 2 +-
 web/settings/assets/{index-f1ebfb88.js => index-69ef2d36.js}   | 2 +-
 .../assets/{vehicle-33c61ff2.js => vehicle-15310f49.js}        | 2 +-
 web/settings/index.html                                        | 2 +-
 web/settings/modules/legacy_smart_home/smarthomeconfig.php     | 2 +-
 42 files changed, 42 insertions(+), 40 deletions(-)
 rename web/settings/assets/{ChargeLog-83ebac6d.js => ChargeLog-ad45450b.js} (99%)
 rename web/settings/assets/{ChargePointInstallation-7ae4661c.js => ChargePointInstallation-92c3e709.js} (99%)
 rename web/settings/assets/{Chart-70b754a3.js => Chart-5ed52ad8.js} (99%)
 rename web/settings/assets/{CloudConfig-8640925d.js => CloudConfig-50261545.js} (99%)
 rename web/settings/assets/{DataManagement-6aff49ed.js => DataManagement-0dd4c76f.js} (99%)
 rename web/settings/assets/{DebugConfig-8fb79648.js => DebugConfig-a27684ff.js} (98%)
 rename web/settings/assets/{GeneralChargeConfig-e3c03ea2.js => GeneralChargeConfig-ca4f9ae6.js} (98%)
 rename web/settings/assets/{GeneralConfig-0de4c3ba.js => GeneralConfig-92f899f4.js} (99%)
 rename web/settings/assets/{HardwareInstallation-6ab82611.js => HardwareInstallation-6046586c.js} (87%)
 rename web/settings/assets/{InstallAssistant-5646f4c7.js => InstallAssistant-ed245998.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-2109508c.js => InstallAssistantStep0-795cb040.js} (95%)
 rename web/settings/assets/{InstallAssistantStep1-eb28678f.js => InstallAssistantStep1-5a8a51d7.js} (89%)
 rename web/settings/assets/{InstallAssistantStep10-f49c5c61.js => InstallAssistantStep10-2fd9a62d.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-ecf5ee14.js => InstallAssistantStep2-c12663cc.js} (89%)
 rename web/settings/assets/{InstallAssistantStep3-4274b010.js => InstallAssistantStep3-53904745.js} (92%)
 rename web/settings/assets/{InstallAssistantStep4-3310d3b5.js => InstallAssistantStep4-8b97ea50.js} (92%)
 rename web/settings/assets/{InstallAssistantStep5-3211fa20.js => InstallAssistantStep5-290f8655.js} (93%)
 rename web/settings/assets/{InstallAssistantStep6-df7cce5c.js => InstallAssistantStep6-90ce23b3.js} (94%)
 rename web/settings/assets/{InstallAssistantStep7-ed852473.js => InstallAssistantStep7-acefbf3b.js} (93%)
 rename web/settings/assets/{InstallAssistantStep8-7f8d9e76.js => InstallAssistantStep8-97580236.js} (93%)
 rename web/settings/assets/{InstallAssistantStep9-e32e780a.js => InstallAssistantStep9-7029496d.js} (91%)
 rename web/settings/assets/{InstallAssistantStepTemplate-b18c62ce.js => InstallAssistantStepTemplate-06a9f1a7.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-9b1ccfc3.js => InstantChargeConfig-a54cb6df.js} (96%)
 rename web/settings/assets/{LegalSettings-9d18b06d.js => LegalSettings-88dd4593.js} (97%)
 rename web/settings/assets/{LoadManagementConfig-9fa3e6c0.js => LoadManagementConfig-003e3bae.js} (99%)
 rename web/settings/assets/{MqttBridgeConfig-87097544.js => MqttBridgeConfig-d5761c85.js} (99%)
 rename web/settings/assets/{OptionalComponents-49b0ff6e.js => OptionalComponents-77cf1612.js} (99%)
 rename web/settings/assets/{PVChargeConfig-988712ae.js => PVChargeConfig-4906be0a.js} (99%)
 rename web/settings/assets/{ScheduledChargeConfig-0b6dc1c6.js => ScheduledChargeConfig-78436900.js} (97%)
 rename web/settings/assets/{Status-29efdc6d.js => Status-130a6c94.js} (99%)
 create mode 100644 web/settings/assets/Support-c0166323.js
 delete mode 100644 web/settings/assets/Support-e534f32f.js
 rename web/settings/assets/{System-083c7c2d.js => System-ebad11a3.js} (98%)
 rename web/settings/assets/{TestingStore-92266ef4.js => TestingStore-81bd6c5d.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-23157950.js => TimeChargeConfig-9f248c3d.js} (96%)
 create mode 100644 web/settings/assets/VehicleConfig-032e1c73.js
 delete mode 100644 web/settings/assets/VehicleConfig-76952b56.js
 rename web/settings/assets/{electricity_tariff-eefa229a.js => electricity_tariff-070f80df.js} (97%)
 rename web/settings/assets/{index-f1ebfb88.js => index-69ef2d36.js} (96%)
 rename web/settings/assets/{vehicle-33c61ff2.js => vehicle-15310f49.js} (97%)

diff --git a/web/settings/assets/ChargeLog-83ebac6d.js b/web/settings/assets/ChargeLog-ad45450b.js
similarity index 99%
rename from web/settings/assets/ChargeLog-83ebac6d.js
rename to web/settings/assets/ChargeLog-ad45450b.js
index f4bf784d69..3042aa1bf1 100644
--- a/web/settings/assets/ChargeLog-83ebac6d.js
+++ b/web/settings/assets/ChargeLog-ad45450b.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-f1ebfb88.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-69ef2d36.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},y=t=>(W("data-v-8607e7e7"),t=t(),F(),t),M={class:"chargeLog"},P={name:"chargeLogForm"},z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],K=["aria-valuenow"],J=["aria-valuenow"],G=["aria-valuenow"],H=["aria-valuenow"],Q={key:1,class:"td-center"},Y={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ce={class:"hide",ref:"downloadChargeLogLink"},he=y(()=>i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),ge={class:"td-end"},_e={class:"td-end"},ue={class:"td-end"},me={class:"td-end"};function pe(t,e,o,p,l,r){const C=h("openwb-base-text-input"),f=h("font-awesome-icon"),D=h("openwb-base-button-group-input"),m=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),b=h("openwb-base-alert"),L=h("vue3-table-lite"),N=h("openwb-base-click-button");return g(),_("div",M,[i("form",P,[d(v,{title:"Filter"},{default:s(()=>[d(C,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:l.currentMonth,modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())]},null,8,["max","modelValue"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),c(" Erweiterte Optionen ")]),default:s(()=>[d(D,{title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())]},null,8,["modelValue"]),d(m,{title:"Lademodus",multiple:"",options:r.chargeModeList,modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Ladepunkt",multiple:"",options:r.chargePointList,modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Fahrzeug",multiple:"",options:r.vehicleList,modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(q,{title:"ID-Tags",modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Tags als Filter verwendet werden. ")]),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,z)]),_:1}),r.chargeLogRead?(g(),_("div",O,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(g(),_("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:u({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:u({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:u({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G),i("div",{class:"progress-bar bg-success",role:"progressbar",style:u({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,H)],8,j)):(g(),_("div",Q,"-"))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Y,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(g(),_("div",le,[i("div",de,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[c(" Als CSV exportieren "),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ce,null,512)]),he,d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",ge,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",_e,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ue,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",me,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):V("",!0)])):(g(),I(b,{key:0,subtype:"info"},{default:s(()=>[c(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const qe=B(U,[["render",pe],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{qe as default};
diff --git a/web/settings/assets/ChargePointInstallation-7ae4661c.js b/web/settings/assets/ChargePointInstallation-92c3e709.js
similarity index 99%
rename from web/settings/assets/ChargePointInstallation-7ae4661c.js
rename to web/settings/assets/ChargePointInstallation-92c3e709.js
index 525d655a9b..b42f76a8c7 100644
--- a/web/settings/assets/ChargePointInstallation-7ae4661c.js
+++ b/web/settings/assets/ChargePointInstallation-92c3e709.js
@@ -1 +1 @@
-import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-f1ebfb88.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
+import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-69ef2d36.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
diff --git a/web/settings/assets/Chart-70b754a3.js b/web/settings/assets/Chart-5ed52ad8.js
similarity index 99%
rename from web/settings/assets/Chart-70b754a3.js
rename to web/settings/assets/Chart-5ed52ad8.js
index eb788cae48..72e97be101 100644
--- a/web/settings/assets/Chart-70b754a3.js
+++ b/web/settings/assets/Chart-5ed52ad8.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-f1ebfb88.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-69ef2d36.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-8640925d.js b/web/settings/assets/CloudConfig-50261545.js
similarity index 99%
rename from web/settings/assets/CloudConfig-8640925d.js
rename to web/settings/assets/CloudConfig-50261545.js
index 7aadc517fc..125dbc4358 100644
--- a/web/settings/assets/CloudConfig-8640925d.js
+++ b/web/settings/assets/CloudConfig-50261545.js
@@ -1 +1 @@
-import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-f1ebfb88.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
+import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-69ef2d36.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
diff --git a/web/settings/assets/DataManagement-6aff49ed.js b/web/settings/assets/DataManagement-0dd4c76f.js
similarity index 99%
rename from web/settings/assets/DataManagement-6aff49ed.js
rename to web/settings/assets/DataManagement-0dd4c76f.js
index aeb0b4a02c..46462f289a 100644
--- a/web/settings/assets/DataManagement-6aff49ed.js
+++ b/web/settings/assets/DataManagement-0dd4c76f.js
@@ -1 +1 @@
-import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-f1ebfb88.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
+import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-69ef2d36.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
diff --git a/web/settings/assets/DebugConfig-8fb79648.js b/web/settings/assets/DebugConfig-a27684ff.js
similarity index 98%
rename from web/settings/assets/DebugConfig-8fb79648.js
rename to web/settings/assets/DebugConfig-a27684ff.js
index 6ccb677465..8e611e580f 100644
--- a/web/settings/assets/DebugConfig-8fb79648.js
+++ b/web/settings/assets/DebugConfig-a27684ff.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-f1ebfb88.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-69ef2d36.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),p=s("openwb-base-avatar"),m=s("openwb-base-card");return d(),w(m,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(p,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=f($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",mixins:[k],components:{OpenwbLogCard:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),p=s("openwb-base-alert"),m=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),_("div",z,[v("form",V,[i(m,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>[b(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')]),_:1},8,["model-value"]),i(p,{subtype:"warning"},{default:l(()=>[b(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')]),_:1})]),_:1}),i(c,{formName:"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),_(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=f(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-e3c03ea2.js b/web/settings/assets/GeneralChargeConfig-ca4f9ae6.js
similarity index 98%
rename from web/settings/assets/GeneralChargeConfig-e3c03ea2.js
rename to web/settings/assets/GeneralChargeConfig-ca4f9ae6.js
index 447423cbdb..bfa78ae84d 100644
--- a/web/settings/assets/GeneralChargeConfig-e3c03ea2.js
+++ b/web/settings/assets/GeneralChargeConfig-ca4f9ae6.js
@@ -1 +1 @@
-import{_ as g,C as T}from"./index-f1ebfb88.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-eefa229a.js"),["assets/electricity_tariff-eefa229a.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
+import{_ as g,C as T}from"./index-69ef2d36.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-070f80df.js"),["assets/electricity_tariff-070f80df.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
diff --git a/web/settings/assets/GeneralConfig-0de4c3ba.js b/web/settings/assets/GeneralConfig-92f899f4.js
similarity index 99%
rename from web/settings/assets/GeneralConfig-0de4c3ba.js
rename to web/settings/assets/GeneralConfig-92f899f4.js
index 83d9a63ee6..1ec736012d 100644
--- a/web/settings/assets/GeneralConfig-0de4c3ba.js
+++ b/web/settings/assets/GeneralConfig-92f899f4.js
@@ -1 +1 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-f1ebfb88.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-69ef2d36.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
diff --git a/web/settings/assets/HardwareInstallation-6ab82611.js b/web/settings/assets/HardwareInstallation-6046586c.js
similarity index 87%
rename from web/settings/assets/HardwareInstallation-6ab82611.js
rename to web/settings/assets/HardwareInstallation-6046586c.js
index 06113136e4..cfe1a4292a 100644
--- a/web/settings/assets/HardwareInstallation-6ab82611.js
+++ b/web/settings/assets/HardwareInstallation-6046586c.js
@@ -1 +1 @@
-import{l as N,d as U,t as G,a7 as F,a0 as H,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-f1ebfb88.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as w,u as m,k as u,l as p,A as c,N as o,z as l,y as a,D as v,x as E,a2 as W,a3 as $,B as P,J as L,K as h,q as y,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,r,O,s,n){const T=m("openwb-base-alert"),g=m("openwb-base-textarea");return u(),p("div",oe,[Object.keys(r.configuration).length==0?(u(),c(T,{key:0,subtype:"info"},{default:o(()=>[r.componentType?(u(),p("span",ie,' Der Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",re,'Der Gerät-Typ "'+l(r.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(u(),p("div",ne,[v(T,{subtype:"warning"},{default:o(()=>[a(" Es wurde keine Konfigurationsseite für den "),r.componentType?(u(),p("span",ue,' Komponenten-Typ "'+l(r.componentType)+'" ',1)):(u(),p("span",ve,'Geräte-Typ "'+l(r.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),v(g,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":i[0]||(i[0]=D=>n.updateConfiguration(D,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),v(T,{subtype:"info"},{default:o(()=>[E("pre",null,l(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const S=w(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?W({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-3069a051.js"),["assets/counter-3069a051.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/bat.vue":()=>e(()=>import("./bat-7696fb32.js"),["assets/bat-7696fb32.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/counter.vue":()=>e(()=>import("./counter-c9a9f709.js"),["assets/counter-c9a9f709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/inverter.vue":()=>e(()=>import("./inverter-597e2682.js"),["assets/inverter-597e2682.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-4a132ee4.js"),["assets/external_inverter-4a132ee4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/bat.vue":()=>e(()=>import("./bat-4202cb7c.js"),["assets/bat-4202cb7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/counter.vue":()=>e(()=>import("./counter-15d8fd18.js"),["assets/counter-15d8fd18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/inverter.vue":()=>e(()=>import("./inverter-5e52c5a2.js"),["assets/inverter-5e52c5a2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/inverter.vue":()=>e(()=>import("./inverter-8faef1dd.js"),["assets/inverter-8faef1dd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:S}):W({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:S})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,r,O,s,n){return u(),c($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":i[0]||(i[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=w(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(U,G,F,H,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,r){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:r}})},removeComponentModal(_,i,r,O,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:r},this.modalComponentName=O,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(r=>r.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},A=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),Ee={class:"hardwareInstallation"},ce={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=A(()=>E("hr",null,null,-1)),Ae=A(()=>E("hr",null,null,-1)),De=A(()=>E("hr",null,null,-1)),Re=A(()=>E("hr",null,null,-1)),Oe={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=A(()=>E("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),E("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),be=A(()=>E("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),E("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),fe=A(()=>E("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,r,O,s,n){const T=m("openwb-base-modal-dialog"),g=m("router-link"),D=m("openwb-base-alert"),V=m("font-awesome-icon"),b=m("openwb-base-avatar"),k=m("openwb-base-text-input"),C=m("openwb-config-proxy"),q=m("openwb-base-heading"),f=m("openwb-base-card"),x=m("openwb-base-click-button"),z=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return u(),p(L,null,[v(T,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:o(()=>[a(' Wollen Sie das Gerät "'+l(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),v(T,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:o(()=>[a(' Wollen Sie die Komponente "'+l(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),E("div",Ee,[E("form",ce,[r.installAssistantActive?P("",!0):(u(),c(D,{key:0,subtype:"info"},{default:o(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),v(g,{to:"/LoadManagementConfiguration"},{default:o(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),v(f,{title:"Geräte und Komponenten"},{default:o(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(u(),p("div",le,[v(D,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),p("div",Te,[(u(!0),p(L,null,h(n.installedDevices,(t,B)=>(u(),c(f,{key:t.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:o(()=>[v(V,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+l(t.name),1)]),actions:o(d=>[d.collapsed?(u(),p("div",Ie,[(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),I=>(u(),c(b,{key:I.id,class:y("ml-1 bg-"+n.getComponentTypeClass(I.type))},{default:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(I.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(u(),c(b,{key:0,class:"bg-danger clickable",onClick:I=>n.removeDeviceModal(t.id,t.name,I)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":t.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,v(C,{deviceId:t.id,deviceType:t.type,configuration:t.configuration,"onUpdate:configuration":d=>n.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,v(q,null,{default:o(()=>[a("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(t.id)?P("",!0):(u(),c(D,{key:0,subtype:"warning"},{default:o(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(u(!0),p(L,null,h(n.getMyInstalledComponents(t.id),(d,I)=>(u(),c(f,{key:d.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(d.type)},{header:o(()=>[v(V,{"fixed-width":"",icon:n.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+l(d.name),1)]),actions:o(R=>[R.collapsed?P("",!0):(u(),c(b,{key:0,class:"bg-danger clickable",onClick:K=>n.removeComponentModal(t.id,d.id,d.type,d.name,K)},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[v(k,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":R=>_.updateState(I,R,"name")},null,8,["model-value","onUpdate:modelValue"]),De,v(C,{deviceId:t.id,deviceType:t.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":R=>n.updateConfiguration(I,R)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Re,n.getComponentList(t.type).length?(u(),c(z,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(t.type),"model-value":s.componentToAdd[t.id],"onUpdate:modelValue":d=>s.componentToAdd[t.id]=d},{append:o(()=>[E("span",Oe,[v(x,{class:y(s.componentToAdd[t.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[t.id]===void 0,onButtonClicked:d=>n.addComponent(t.id,t.type,s.componentToAdd[t.id])},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:o(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(u(),c(D,{key:2,subtype:"info"},{default:o(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(u(),p("hr",Pe)):P("",!0),v(z,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:n.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=t=>s.deviceToAdd=t)},{append:o(()=>[E("span",Le,[v(x,{class:y(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:o(()=>[v(V,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[ge,be,fe]),_:1},8,["options","model-value"])]))]),_:1}),v(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=t=>_.$emit("save")),onReset:i[2]||(i[2]=t=>_.$emit("reset")),onDefaults:i[3]||(i[3]=t=>_.$emit("defaults"))})])])],64)}const We=w(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{We as default};
+import{l as K,d as N,t as G,a7 as H,a0 as F,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-69ef2d36.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as k,u as m,k as v,l as p,A as c,N as t,z as I,y as a,D as r,x as E,a2 as S,a3 as $,B as L,J as g,K as y,q as w,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,n,R,s,u){const V=m("openwb-base-alert"),f=m("openwb-base-textarea");return v(),p("div",oe,[Object.keys(n.configuration).length==0?(v(),c(V,{key:0,subtype:"info"},{default:t(()=>[n.componentType?(v(),p("span",ie,' Der Komponenten-Typ "'+I(n.componentType)+'" ',1)):(v(),p("span",re,'Der Gerät-Typ "'+I(n.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(v(),p("div",ne,[r(V,{subtype:"warning"},{default:t(()=>[a(" Es wurde keine Konfigurationsseite für den "),n.componentType?(v(),p("span",ue,' Komponenten-Typ "'+I(n.componentType)+'" ',1)):(v(),p("span",ve,'Geräte-Typ "'+I(n.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),r(f,{title:"Konfiguration",subtype:"json","model-value":n.configuration,"onUpdate:modelValue":i[0]||(i[0]=O=>u.updateConfiguration(O,"configuration"))},{help:t(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),r(V,{subtype:"info"},{default:t(()=>[E("pre",null,I(JSON.stringify(n.configuration,void 0,2)),1)]),_:1})]))])}const W=k(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?S({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-3069a051.js"),["assets/counter-3069a051.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/bat.vue":()=>e(()=>import("./bat-7696fb32.js"),["assets/bat-7696fb32.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/counter.vue":()=>e(()=>import("./counter-c9a9f709.js"),["assets/counter-c9a9f709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/inverter.vue":()=>e(()=>import("./inverter-597e2682.js"),["assets/inverter-597e2682.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-4a132ee4.js"),["assets/external_inverter-4a132ee4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/bat.vue":()=>e(()=>import("./bat-4202cb7c.js"),["assets/bat-4202cb7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/counter.vue":()=>e(()=>import("./counter-15d8fd18.js"),["assets/counter-15d8fd18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/inverter.vue":()=>e(()=>import("./inverter-5e52c5a2.js"),["assets/inverter-5e52c5a2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/inverter.vue":()=>e(()=>import("./inverter-8faef1dd.js"),["assets/inverter-8faef1dd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:W}):S({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:W})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,n,R,s,u){return v(),c($(u.myComponent),{configuration:n.configuration,deviceId:n.deviceId,deviceType:n.deviceType,componentId:n.componentId,componentType:n.componentType,"onUpdate:configuration":i[0]||(i[0]=V=>u.updateConfiguration(V))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=k(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);K.add(N,G,H,F,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,n){n.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,n){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:n}})},removeComponentModal(_,i,n,R,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:n},this.modalComponentName=R,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(n=>n.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},D=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),Ee={class:"hardwareInstallation"},ce={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=D(()=>E("hr",null,null,-1)),Ae=D(()=>E("hr",null,null,-1)),De=D(()=>E("hr",null,null,-1)),Oe=D(()=>E("hr",null,null,-1)),Re={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=D(()=>E("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),E("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=D(()=>E("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),E("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=D(()=>E("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,n,R,s,u){const V=m("openwb-base-modal-dialog"),f=m("router-link"),O=m("openwb-base-alert"),A=m("font-awesome-icon"),b=m("openwb-base-avatar"),P=m("openwb-base-text-input"),x=m("openwb-config-proxy"),q=m("openwb-base-heading"),h=m("openwb-base-card"),z=m("openwb-base-click-button"),C=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return v(),p(g,null,[r(V,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u.removeDevice},{default:t(()=>[a(' Wollen Sie das Gerät "'+I(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(V,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u.removeComponent},{default:t(()=>[a(' Wollen Sie die Komponente "'+I(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),E("div",Ee,[E("form",ce,[n.installAssistantActive?L("",!0):(v(),c(O,{key:0,subtype:"info"},{default:t(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),r(f,{to:"/LoadManagementConfiguration"},{default:t(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),r(h,{title:"Geräte und Komponenten"},{default:t(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(v(),p("div",le,[r(O,{subtype:"info"},{default:t(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(v(),p("div",Te,[(v(!0),p(g,null,y(u.installedDevices,(o,B)=>(v(),c(h,{key:o.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:t(()=>[r(A,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+I(o.name),1)]),actions:t(d=>[d.collapsed?(v(),p("div",Ie,[(v(!0),p(g,null,y(u.getMyInstalledComponents(o.id),l=>(v(),c(b,{key:l.id,class:w("ml-1 bg-"+u.getComponentTypeClass(l.type))},{default:t(()=>[r(A,{"fixed-width":"",icon:u.getComponentTypeIcon(l.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(v(),c(b,{key:0,class:"bg-danger clickable",onClick:l=>u.removeDeviceModal(o.id,o.name,l)},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:t(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":o.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,r(x,{deviceId:o.id,deviceType:o.type,configuration:o.configuration,"onUpdate:configuration":d=>u.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,r(q,null,{default:t(()=>[a("Komponenten")]),_:1}),u.deviceHasConfiguredComponents(o.id)?L("",!0):(v(),c(O,{key:0,subtype:"warning"},{default:t(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(v(!0),p(g,null,y(u.getMyInstalledComponents(o.id),(d,l)=>(v(),c(h,{key:d.id,collapsible:!0,collapsed:!0,subtype:u.getComponentTypeClass(d.type)},{header:t(()=>[r(A,{"fixed-width":"",icon:u.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+I(d.name),1)]),actions:t(T=>[T.collapsed?L("",!0):(v(),c(b,{key:0,class:"bg-danger clickable",onClick:U=>u.removeComponentModal(o.id,d.id,d.type,d.name,U)},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:t(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":T=>_.updateState(l,T,"name")},null,8,["model-value","onUpdate:modelValue"]),r(P,{title:"Hersteller",subtype:"text","model-value":d.info.manufacturer,"onUpdate:modelValue":T=>_.updateState(l,T,"info.manufacturer")},{help:t(()=>[a(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(P,{title:"Modell",subtype:"text","model-value":d.info.model,"onUpdate:modelValue":T=>_.updateState(l,T,"info.model")},{help:t(()=>[a(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),De,r(x,{deviceId:o.id,deviceType:o.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":T=>u.updateConfiguration(l,T)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Oe,u.getComponentList(o.type).length?(v(),c(C,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:u.getComponentList(o.type),"model-value":s.componentToAdd[o.id],"onUpdate:modelValue":d=>s.componentToAdd[o.id]=d},{append:t(()=>[E("span",Re,[r(z,{class:w(s.componentToAdd[o.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[o.id]===void 0,onButtonClicked:d=>u.addComponent(o.id,o.type,s.componentToAdd[o.id])},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:t(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(v(),c(O,{key:2,subtype:"info"},{default:t(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(u.installedDevices).length>0?(v(),p("hr",Pe)):L("",!0),r(C,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:u.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=o=>s.deviceToAdd=o)},{append:t(()=>[E("span",Le,[r(z,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:u.addDevice},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:t(()=>[ge,fe,be]),_:1},8,["options","model-value"])]))]),_:1}),r(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=o=>_.$emit("save")),onReset:i[2]||(i[2]=o=>_.$emit("reset")),onDefaults:i[3]||(i[3]=o=>_.$emit("defaults"))})])])],64)}const Se=k(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{Se as default};
diff --git a/web/settings/assets/InstallAssistant-5646f4c7.js b/web/settings/assets/InstallAssistant-ed245998.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-5646f4c7.js
rename to web/settings/assets/InstallAssistant-ed245998.js
index 107c23d384..eb51f80030 100644
--- a/web/settings/assets/InstallAssistant-5646f4c7.js
+++ b/web/settings/assets/InstallAssistant-ed245998.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-f1ebfb88.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-2109508c.js"),["assets/InstallAssistantStep0-2109508c.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-eb28678f.js"),["assets/InstallAssistantStep1-eb28678f.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-6aff49ed.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-f49c5c61.js"),["assets/InstallAssistantStep10-f49c5c61.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-ecf5ee14.js"),["assets/InstallAssistantStep2-ecf5ee14.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-083c7c2d.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-4274b010.js"),["assets/InstallAssistantStep3-4274b010.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-0de4c3ba.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-3310d3b5.js"),["assets/InstallAssistantStep4-3310d3b5.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-7ae4661c.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-3211fa20.js"),["assets/InstallAssistantStep5-3211fa20.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-6ab82611.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-df7cce5c.js"),["assets/InstallAssistantStep6-df7cce5c.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-7ae4661c.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-ed852473.js"),["assets/InstallAssistantStep7-ed852473.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-9fa3e6c0.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-7f8d9e76.js"),["assets/InstallAssistantStep8-7f8d9e76.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-76952b56.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-e32e780a.js"),["assets/InstallAssistantStep9-e32e780a.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b18c62ce.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-6aff49ed.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-b18c62ce.js"),["assets/InstallAssistantStepTemplate-b18c62ce.js","assets/index-f1ebfb88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-69ef2d36.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-795cb040.js"),["assets/InstallAssistantStep0-795cb040.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-5a8a51d7.js"),["assets/InstallAssistantStep1-5a8a51d7.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-0dd4c76f.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-2fd9a62d.js"),["assets/InstallAssistantStep10-2fd9a62d.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-c12663cc.js"),["assets/InstallAssistantStep2-c12663cc.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-ebad11a3.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-53904745.js"),["assets/InstallAssistantStep3-53904745.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-92f899f4.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-8b97ea50.js"),["assets/InstallAssistantStep4-8b97ea50.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-92c3e709.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-290f8655.js"),["assets/InstallAssistantStep5-290f8655.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-6046586c.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-90ce23b3.js"),["assets/InstallAssistantStep6-90ce23b3.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-92c3e709.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-acefbf3b.js"),["assets/InstallAssistantStep7-acefbf3b.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-003e3bae.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-97580236.js"),["assets/InstallAssistantStep8-97580236.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-032e1c73.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-7029496d.js"),["assets/InstallAssistantStep9-7029496d.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-0dd4c76f.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-06a9f1a7.js"),["assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-2109508c.js b/web/settings/assets/InstallAssistantStep0-795cb040.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-2109508c.js
rename to web/settings/assets/InstallAssistantStep0-795cb040.js
index db836b5592..9ac24d6dc4 100644
--- a/web/settings/assets/InstallAssistantStep0-2109508c.js
+++ b/web/settings/assets/InstallAssistantStep0-795cb040.js
@@ -1 +1 @@
-import{C as d}from"./index-f1ebfb88.js";import u from"./InstallAssistantStepTemplate-b18c62ce.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
+import{C as d}from"./index-69ef2d36.js";import u from"./InstallAssistantStepTemplate-06a9f1a7.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
diff --git a/web/settings/assets/InstallAssistantStep1-eb28678f.js b/web/settings/assets/InstallAssistantStep1-5a8a51d7.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep1-eb28678f.js
rename to web/settings/assets/InstallAssistantStep1-5a8a51d7.js
index f09ea1f8f1..208dbe7eb2 100644
--- a/web/settings/assets/InstallAssistantStep1-eb28678f.js
+++ b/web/settings/assets/InstallAssistantStep1-5a8a51d7.js
@@ -1 +1 @@
-import{C as m}from"./index-f1ebfb88.js";import p from"./InstallAssistantStepTemplate-b18c62ce.js";import l from"./DataManagement-6aff49ed.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
+import{C as m}from"./index-69ef2d36.js";import p from"./InstallAssistantStepTemplate-06a9f1a7.js";import l from"./DataManagement-0dd4c76f.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
diff --git a/web/settings/assets/InstallAssistantStep10-f49c5c61.js b/web/settings/assets/InstallAssistantStep10-2fd9a62d.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-f49c5c61.js
rename to web/settings/assets/InstallAssistantStep10-2fd9a62d.js
index ebfd7be4fe..15fc62d405 100644
--- a/web/settings/assets/InstallAssistantStep10-f49c5c61.js
+++ b/web/settings/assets/InstallAssistantStep10-2fd9a62d.js
@@ -1 +1 @@
-import{C as i}from"./index-f1ebfb88.js";import a from"./InstallAssistantStepTemplate-b18c62ce.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
+import{C as i}from"./index-69ef2d36.js";import a from"./InstallAssistantStepTemplate-06a9f1a7.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
diff --git a/web/settings/assets/InstallAssistantStep2-ecf5ee14.js b/web/settings/assets/InstallAssistantStep2-c12663cc.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-ecf5ee14.js
rename to web/settings/assets/InstallAssistantStep2-c12663cc.js
index d1a8740834..d8fe185f92 100644
--- a/web/settings/assets/InstallAssistantStep2-ecf5ee14.js
+++ b/web/settings/assets/InstallAssistantStep2-c12663cc.js
@@ -1 +1 @@
-import{C as d}from"./index-f1ebfb88.js";import p from"./InstallAssistantStepTemplate-b18c62ce.js";import l from"./System-083c7c2d.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
+import{C as d}from"./index-69ef2d36.js";import p from"./InstallAssistantStepTemplate-06a9f1a7.js";import l from"./System-ebad11a3.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep3-4274b010.js b/web/settings/assets/InstallAssistantStep3-53904745.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep3-4274b010.js
rename to web/settings/assets/InstallAssistantStep3-53904745.js
index 850628edcc..406740f202 100644
--- a/web/settings/assets/InstallAssistantStep3-4274b010.js
+++ b/web/settings/assets/InstallAssistantStep3-53904745.js
@@ -1 +1 @@
-import{C as d}from"./index-f1ebfb88.js";import p from"./InstallAssistantStepTemplate-b18c62ce.js";import m from"./GeneralConfig-0de4c3ba.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
+import{C as d}from"./index-69ef2d36.js";import p from"./InstallAssistantStepTemplate-06a9f1a7.js";import m from"./GeneralConfig-92f899f4.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep4-3310d3b5.js b/web/settings/assets/InstallAssistantStep4-8b97ea50.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep4-3310d3b5.js
rename to web/settings/assets/InstallAssistantStep4-8b97ea50.js
index 6bdf91f9d2..f2f7406847 100644
--- a/web/settings/assets/InstallAssistantStep4-3310d3b5.js
+++ b/web/settings/assets/InstallAssistantStep4-8b97ea50.js
@@ -1 +1 @@
-import{C as l}from"./index-f1ebfb88.js";import p from"./InstallAssistantStepTemplate-b18c62ce.js";import u from"./ChargePointInstallation-7ae4661c.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
+import{C as l}from"./index-69ef2d36.js";import p from"./InstallAssistantStepTemplate-06a9f1a7.js";import u from"./ChargePointInstallation-92c3e709.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
diff --git a/web/settings/assets/InstallAssistantStep5-3211fa20.js b/web/settings/assets/InstallAssistantStep5-290f8655.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep5-3211fa20.js
rename to web/settings/assets/InstallAssistantStep5-290f8655.js
index 3e139d1775..fa2348bc18 100644
--- a/web/settings/assets/InstallAssistantStep5-3211fa20.js
+++ b/web/settings/assets/InstallAssistantStep5-290f8655.js
@@ -1 +1 @@
-import{C as l}from"./index-f1ebfb88.js";import m from"./InstallAssistantStepTemplate-b18c62ce.js";import u from"./HardwareInstallation-6ab82611.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
+import{C as l}from"./index-69ef2d36.js";import m from"./InstallAssistantStepTemplate-06a9f1a7.js";import u from"./HardwareInstallation-6046586c.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstallAssistantStep6-df7cce5c.js b/web/settings/assets/InstallAssistantStep6-90ce23b3.js
similarity index 94%
rename from web/settings/assets/InstallAssistantStep6-df7cce5c.js
rename to web/settings/assets/InstallAssistantStep6-90ce23b3.js
index cb3099c9f6..a798f1f44e 100644
--- a/web/settings/assets/InstallAssistantStep6-df7cce5c.js
+++ b/web/settings/assets/InstallAssistantStep6-90ce23b3.js
@@ -1 +1 @@
-import{C as l}from"./index-f1ebfb88.js";import u from"./InstallAssistantStepTemplate-b18c62ce.js";import p from"./ChargePointInstallation-7ae4661c.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
+import{C as l}from"./index-69ef2d36.js";import u from"./InstallAssistantStepTemplate-06a9f1a7.js";import p from"./ChargePointInstallation-92c3e709.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep7-ed852473.js b/web/settings/assets/InstallAssistantStep7-acefbf3b.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-ed852473.js
rename to web/settings/assets/InstallAssistantStep7-acefbf3b.js
index f4cb75007a..47697c8e6e 100644
--- a/web/settings/assets/InstallAssistantStep7-ed852473.js
+++ b/web/settings/assets/InstallAssistantStep7-acefbf3b.js
@@ -1 +1 @@
-import{C as l}from"./index-f1ebfb88.js";import m from"./InstallAssistantStepTemplate-b18c62ce.js";import p from"./LoadManagementConfig-9fa3e6c0.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
+import{C as l}from"./index-69ef2d36.js";import m from"./InstallAssistantStepTemplate-06a9f1a7.js";import p from"./LoadManagementConfig-003e3bae.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep8-7f8d9e76.js b/web/settings/assets/InstallAssistantStep8-97580236.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep8-7f8d9e76.js
rename to web/settings/assets/InstallAssistantStep8-97580236.js
index 212e20e5cb..3989735b9e 100644
--- a/web/settings/assets/InstallAssistantStep8-7f8d9e76.js
+++ b/web/settings/assets/InstallAssistantStep8-97580236.js
@@ -1 +1 @@
-import{C as l}from"./index-f1ebfb88.js";import u from"./InstallAssistantStepTemplate-b18c62ce.js";import m from"./VehicleConfig-76952b56.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
+import{C as l}from"./index-69ef2d36.js";import u from"./InstallAssistantStepTemplate-06a9f1a7.js";import m from"./VehicleConfig-032e1c73.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep9-e32e780a.js b/web/settings/assets/InstallAssistantStep9-7029496d.js
similarity index 91%
rename from web/settings/assets/InstallAssistantStep9-e32e780a.js
rename to web/settings/assets/InstallAssistantStep9-7029496d.js
index 51b74e628c..7da95a8f1d 100644
--- a/web/settings/assets/InstallAssistantStep9-e32e780a.js
+++ b/web/settings/assets/InstallAssistantStep9-7029496d.js
@@ -1 +1 @@
-import{C as l}from"./index-f1ebfb88.js";import p from"./InstallAssistantStepTemplate-b18c62ce.js";import u from"./DataManagement-6aff49ed.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
+import{C as l}from"./index-69ef2d36.js";import p from"./InstallAssistantStepTemplate-06a9f1a7.js";import u from"./DataManagement-0dd4c76f.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-b18c62ce.js b/web/settings/assets/InstallAssistantStepTemplate-06a9f1a7.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-b18c62ce.js
rename to web/settings/assets/InstallAssistantStepTemplate-06a9f1a7.js
index 5496ed0133..695b80b63c 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-b18c62ce.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-06a9f1a7.js
@@ -1 +1 @@
-import{C as v}from"./index-f1ebfb88.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
+import{C as v}from"./index-69ef2d36.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstantChargeConfig-9b1ccfc3.js b/web/settings/assets/InstantChargeConfig-a54cb6df.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-9b1ccfc3.js
rename to web/settings/assets/InstantChargeConfig-a54cb6df.js
index a65f789052..68d9e6de7f 100644
--- a/web/settings/assets/InstantChargeConfig-9b1ccfc3.js
+++ b/web/settings/assets/InstantChargeConfig-a54cb6df.js
@@ -1 +1 @@
-import{C as l}from"./index-f1ebfb88.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-69ef2d36.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-9d18b06d.js b/web/settings/assets/LegalSettings-88dd4593.js
similarity index 97%
rename from web/settings/assets/LegalSettings-9d18b06d.js
rename to web/settings/assets/LegalSettings-88dd4593.js
index 43168c2a4b..5e8cf258aa 100644
--- a/web/settings/assets/LegalSettings-9d18b06d.js
+++ b/web/settings/assets/LegalSettings-88dd4593.js
@@ -1 +1 @@
-import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-f1ebfb88.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
+import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-69ef2d36.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
diff --git a/web/settings/assets/LoadManagementConfig-9fa3e6c0.js b/web/settings/assets/LoadManagementConfig-003e3bae.js
similarity index 99%
rename from web/settings/assets/LoadManagementConfig-9fa3e6c0.js
rename to web/settings/assets/LoadManagementConfig-003e3bae.js
index 83d5605510..b4d3469b86 100644
--- a/web/settings/assets/LoadManagementConfig-9fa3e6c0.js
+++ b/web/settings/assets/LoadManagementConfig-003e3bae.js
@@ -1 +1 @@
-import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-f1ebfb88.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
+import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-69ef2d36.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
diff --git a/web/settings/assets/MqttBridgeConfig-87097544.js b/web/settings/assets/MqttBridgeConfig-d5761c85.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-87097544.js
rename to web/settings/assets/MqttBridgeConfig-d5761c85.js
index d8deca2aae..64b86deccc 100644
--- a/web/settings/assets/MqttBridgeConfig-87097544.js
+++ b/web/settings/assets/MqttBridgeConfig-d5761c85.js
@@ -1 +1 @@
-import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-f1ebfb88.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
+import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-69ef2d36.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
diff --git a/web/settings/assets/OptionalComponents-49b0ff6e.js b/web/settings/assets/OptionalComponents-77cf1612.js
similarity index 99%
rename from web/settings/assets/OptionalComponents-49b0ff6e.js
rename to web/settings/assets/OptionalComponents-77cf1612.js
index b6c8ee6088..b8fd98c393 100644
--- a/web/settings/assets/OptionalComponents-49b0ff6e.js
+++ b/web/settings/assets/OptionalComponents-77cf1612.js
@@ -1,2 +1,2 @@
-import{_ as $,C}from"./index-f1ebfb88.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as z,X as O,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as _,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function A(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),_(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>m.updateConfiguration(g,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const j=y(F,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(O,V);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:j})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),_(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen. Das Fahrzeug wird erst nach dem Anstecken zugeordnet."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
+import{_ as $,C}from"./index-69ef2d36.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as z,X as O,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as _,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function A(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),_(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>m.updateConfiguration(g,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const j=y(F,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(O,V);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:j})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),_(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen. Das Fahrzeug wird erst nach dem Anstecken zugeordnet."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
 `)},{help:o(()=>[a(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(b,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/optional/int_display/active",i)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[a(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",te,[n(b,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/optional/int_display/rotation",i)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ne,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),oe,n(T,null,{default:o(()=>[a(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/optional/int_display/standby",i)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",ae,[ie,n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",se,[le,n(b,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/optional/int_display/only_local_charge_points",i)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[a(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),pe,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",re,[n(D,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=i=>m.updateSelectedDisplayTheme(i))},{help:o(()=>[a(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),_(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=i=>m.updateConfiguration("openWB/optional/int_display/theme",i))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=i=>e.$emit("save")),onReset:t[8]||(t[8]=i=>e.$emit("reset")),onDefaults:t[9]||(t[9]=i=>e.$emit("defaults"))})])])}const ye=y(H,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{ye as default};
diff --git a/web/settings/assets/PVChargeConfig-988712ae.js b/web/settings/assets/PVChargeConfig-4906be0a.js
similarity index 99%
rename from web/settings/assets/PVChargeConfig-988712ae.js
rename to web/settings/assets/PVChargeConfig-4906be0a.js
index 23454e4847..3c3b0009d6 100644
--- a/web/settings/assets/PVChargeConfig-988712ae.js
+++ b/web/settings/assets/PVChargeConfig-4906be0a.js
@@ -1 +1 @@
-import{C as B}from"./index-f1ebfb88.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
+import{C as B}from"./index-69ef2d36.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-0b6dc1c6.js b/web/settings/assets/ScheduledChargeConfig-78436900.js
similarity index 97%
rename from web/settings/assets/ScheduledChargeConfig-0b6dc1c6.js
rename to web/settings/assets/ScheduledChargeConfig-78436900.js
index 99571824bc..68dfbe1400 100644
--- a/web/settings/assets/ScheduledChargeConfig-0b6dc1c6.js
+++ b/web/settings/assets/ScheduledChargeConfig-78436900.js
@@ -1 +1 @@
-import{C as p}from"./index-f1ebfb88.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
+import{C as p}from"./index-69ef2d36.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
diff --git a/web/settings/assets/Status-29efdc6d.js b/web/settings/assets/Status-130a6c94.js
similarity index 99%
rename from web/settings/assets/Status-29efdc6d.js
rename to web/settings/assets/Status-130a6c94.js
index fe99de48de..da38a860d7 100644
--- a/web/settings/assets/Status-29efdc6d.js
+++ b/web/settings/assets/Status-130a6c94.js
@@ -1 +1 @@
-import{C as y}from"./index-f1ebfb88.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
+import{C as y}from"./index-69ef2d36.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
diff --git a/web/settings/assets/Support-c0166323.js b/web/settings/assets/Support-c0166323.js
new file mode 100644
index 0000000000..6af420b158
--- /dev/null
+++ b/web/settings/assets/Support-c0166323.js
@@ -0,0 +1,3 @@
+import{l as S,g as D,F as V}from"./vendor-fortawesome-71546160.js";import{C as W}from"./index-69ef2d36.js";import{_ as A,u as d,k as h,l as f,x as r,A as _,N as t,D as s,a4 as C,B as k,y as e,q as F}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(D);const z={name:"OpenwbSupportView",mixins:[W],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var p,m;if(this.components!==void 0)return this.components;let i="";const o=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const n of Object.values(o)){const u=n.id,a=((p=n.info)==null?void 0:p.manufacturer)||"N/A",c=((m=n.info)==null?void 0:m.model)||"N/A";i+=`(${u}) Hersteller: ${a}, Modell: ${c}
+`}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const o=this.getWildcardTopics("openWB/vehicle/+/info");for(const[p,m]of Object.entries(o)){const n=parseInt(p.split("/")[2]);if(n!==0){const u=m.manufacturer||"N/A",a=m.model||"N/A";i+=`(${n}) Hersteller: ${u}, Modell: ${a}
+`}}return i.trim()}}},x={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T=r("li",null,' Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),H=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),E=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1),K=r("br",null,null,-1),L=r("br",null,null,-1),U=r("br",null,null,-1),j={class:"row justify-content-center"};function $(i,o,p,m,n,u){const a=d("router-link"),c=d("openwb-base-alert"),w=d("FontAwesomeIcon"),g=d("openwb-base-text-input"),b=d("openwb-base-textarea"),v=d("openwb-base-click-button"),y=d("openwb-base-card"),B=d("font-awesome-icon");return h(),f("div",x,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(h(),_(c,{key:0,subtype:"danger"},{default:t(()=>[e(" Du musst der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(h(),f("div",I,[s(c,{subtype:"success"},{default:t(()=>[e(" Du hast der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und kannst Systemberichte senden. ")]),_:1}),s(y,{title:"Systembericht"},C({default:t(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(h(),f("div",N,[s(c,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lies bitte den Hilfetext, der durch Klick auf das "),s(w,{icon:["far","question-circle"]}),e(" angezeigt wird. Nimm das Wiki zur Hilfe. ")]),T,M,H,E])]),_:1}),s(g,{title:"E-Mail",required:"",subtype:"email",modelValue:n.email,"onUpdate:modelValue":o[0]||(o[0]=l=>n.email=l)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(g,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":o[1]||(o[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:t(()=>[e(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),K,e(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")]),_:1},8,["model-value"]),s(b,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":u.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=l=>n.components=l)},{help:t(()=>[e(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind."),L,s(a,{to:"/HardwareInstallation"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":u.vehicleInfo,"onUpdate:modelValue":o[3]||(o[3]=l=>n.vehicles=l)},{help:t(()=>[e(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr)."),U,s(a,{to:"/VehicleConfiguration"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.message,"onUpdate:modelValue":o[4]||(o[4]=l=>n.message=l)},null,8,["modelValue"])])):k("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",j,[s(v,{class:F(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:u.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?k("",!0):(h(),_(c,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. "),s(B,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const X=A(z,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{X as default};
diff --git a/web/settings/assets/Support-e534f32f.js b/web/settings/assets/Support-e534f32f.js
deleted file mode 100644
index bf89aa0795..0000000000
--- a/web/settings/assets/Support-e534f32f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as w,g as y,F as V}from"./vendor-fortawesome-71546160.js";import{C as B}from"./index-f1ebfb88.js";import{_ as v,u as a,k as l,l as c,x as r,A as h,N as t,D as s,a4 as F,B as g,y as e,q as x}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";w.add(y);const z={name:"OpenwbSupportView",mixins:[B],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged"],sendDebugData:{email:"",serialNumber:"",installedComponents:"",vehicles:"",message:""},enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.sendDebugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},C={class:"support"},A={name:"supportForm"},q={key:1},N={key:0},W=r("li",null,' Vergewissern Sie sich, dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stellen Sie beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),E=r("li",null," Stellen Sie sicher, dass der Lademodus korrekt gewählt ist und im Falle von nicht ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),L=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Sie erhalten ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei ihnen. Bitte kontrollieren Sie daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhalten Sie trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes fehlgeschlagen. ",-1),U={class:"row justify-content-center"};function G(d,o,T,H,n,_){const p=a("router-link"),u=a("openwb-base-alert"),f=a("FontAwesomeIcon"),b=a("openwb-base-text-input"),m=a("openwb-base-textarea"),S=a("openwb-base-click-button"),k=a("openwb-base-card"),D=a("font-awesome-icon");return l(),c("div",C,[r("form",A,[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),h(u,{key:0,subtype:"danger"},{default:t(()=>[e(" Sie müssen der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(l(),c("div",q,[s(u,{subtype:"success"},{default:t(()=>[e(" Sie haben der "),s(p,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und können Systemberichte senden. ")]),_:1}),s(k,{title:"Systembericht"},F({default:t(()=>[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(l(),c("div",N,[s(u,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lesen Sie den Hilfetext, der durch Klick auf das "),s(f,{icon:["far","question-circle"]}),e(" angezeigt wird. Nehmen Sie das Wiki zur Hilfe. ")]),W,M,E,L])]),_:1}),s(b,{title:"E-Mail",required:"",subtype:"email",modelValue:n.sendDebugData.email,"onUpdate:modelValue":o[0]||(o[0]=i=>n.sendDebugData.email=i)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(b,{title:"openWB Seriennummer",required:"",modelValue:n.sendDebugData.serialNumber,"onUpdate:modelValue":o[1]||(o[1]=i=>n.sendDebugData.serialNumber=i)},{help:t(()=>[e(" Die Seriennummer der openWB finden Sie außen am Gehäuse - bei Älteren innen im Gehäuse. Sie können uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden! ")]),_:1},8,["modelValue"]),s(m,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=i=>n.sendDebugData.installedComponents=i)},{help:t(()=>[e(" Geben Sie hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind. ")]),_:1},8,["modelValue"]),s(m,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500",modelValue:n.sendDebugData.vehicles,"onUpdate:modelValue":o[3]||(o[3]=i=>n.sendDebugData.vehicles=i)},{help:t(()=>[e(" Geben Sie hier an, welche Fahrzeuge geladen werden (Hersteller, Modell, Baujahr). ")]),_:1},8,["modelValue"]),s(m,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.sendDebugData.message,"onUpdate:modelValue":o[4]||(o[4]=i=>n.sendDebugData.message=i)},null,8,["modelValue"])])):g("",!0)]),_:2},[d.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",U,[s(S,{class:x(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:_.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?g("",!0):(l(),h(u,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Sie können diese Seite jetzt verlassen. "),s(D,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const J=v(z,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{J as default};
diff --git a/web/settings/assets/System-083c7c2d.js b/web/settings/assets/System-ebad11a3.js
similarity index 98%
rename from web/settings/assets/System-083c7c2d.js
rename to web/settings/assets/System-ebad11a3.js
index 92c8b99574..05fb0262f0 100644
--- a/web/settings/assets/System-083c7c2d.js
+++ b/web/settings/assets/System-ebad11a3.js
@@ -1 +1 @@
-import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-f1ebfb88.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
+import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-69ef2d36.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
diff --git a/web/settings/assets/TestingStore-92266ef4.js b/web/settings/assets/TestingStore-81bd6c5d.js
similarity index 99%
rename from web/settings/assets/TestingStore-92266ef4.js
rename to web/settings/assets/TestingStore-81bd6c5d.js
index 10eb29d35b..dd3c74365f 100644
--- a/web/settings/assets/TestingStore-92266ef4.js
+++ b/web/settings/assets/TestingStore-81bd6c5d.js
@@ -1 +1 @@
-import{C as V}from"./index-f1ebfb88.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
+import{C as V}from"./index-69ef2d36.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
diff --git a/web/settings/assets/TimeChargeConfig-23157950.js b/web/settings/assets/TimeChargeConfig-9f248c3d.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-23157950.js
rename to web/settings/assets/TimeChargeConfig-9f248c3d.js
index 6537d27a61..4e3d1d0be4 100644
--- a/web/settings/assets/TimeChargeConfig-23157950.js
+++ b/web/settings/assets/TimeChargeConfig-9f248c3d.js
@@ -1 +1 @@
-import{C as l}from"./index-f1ebfb88.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-69ef2d36.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-032e1c73.js b/web/settings/assets/VehicleConfig-032e1c73.js
new file mode 100644
index 0000000000..190edf9559
--- /dev/null
+++ b/web/settings/assets/VehicleConfig-032e1c73.js
@@ -0,0 +1 @@
+import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-69ef2d36.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as b,N as a,y as l,z as S,D as n,x as h,a2 as re,a3 as ue,J as y,B as m,K as B,a4 as q,P as N,q as O,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,g,F,_,s){const L=C("openwb-base-alert"),v=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(g.configuration).length==0?(r(),b(L,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(g.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(L,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(g.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(v,{title:"Konfiguration",subtype:"json","model-value":g.configuration,"onUpdate:modelValue":d[0]||(d[0]=W=>s.updateConfiguration(W,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(L,{subtype:"info"},{default:a(()=>[h("pre",null,S(JSON.stringify(g.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-15310f49.js"),["assets/vehicle-15310f49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-69ef2d36.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,d,g,F,_,s){const L=C("openwb-base-heading");return r(),c(y,null,[n(L,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(g.vehicle.name)+'" ',1)]),_:1}),(r(),b(ue(s.myComponent),{vehicleId:g.vehicleId,vehicle:g.vehicle,configuration:g.vehicle.configuration,vehicleType:g.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=v=>s.updateConfiguration(v))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=Z(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+g].name;e.push({value:g,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+g].name;e.push({value:g,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(g=>g.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:g}})},removeChargeTemplateSchedulePlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,g){this.showChargeTemplateSchedulePlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:g}})},removeChargeTemplateTimeChargingPlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,g){this.showChargeTemplateTimeChargingPlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>h("br",null,null,-1)),Ue=f(()=>h("hr",null,null,-1)),Te={key:2},We=f(()=>h("br",null,null,-1)),Le=["innerHTML"],Pe=f(()=>h("hr",null,null,-1)),ye=f(()=>h("br",null,null,-1)),Ae=f(()=>h("br",null,null,-1)),Ee=f(()=>h("br",null,null,-1)),Be={key:3},Fe=f(()=>h("hr",{class:"border-secondary"},null,-1)),qe={key:0},Me={key:1},De=f(()=>h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),Ze={key:0},xe=f(()=>h("br",null,null,-1)),Ne=f(()=>h("br",null,null,-1)),Oe=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Re={key:1},He={key:0},je={key:0},Je={key:3},$e={key:0},Ge={key:1},Qe=f(()=>h("br",null,null,-1)),Xe=f(()=>h("br",null,null,-1)),Ye=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),Ke={key:0},et={key:0},tt={key:0},nt=f(()=>h("hr",null,null,-1)),at=f(()=>h("hr",null,null,-1)),lt=f(()=>h("br",null,null,-1)),it=f(()=>h("br",null,null,-1)),ot=f(()=>h("hr",null,null,-1)),dt=f(()=>h("br",null,null,-1)),rt=f(()=>h("br",null,null,-1)),ut=["onClick"],st={key:0},mt={key:1},ct={key:2},ht={key:3},gt={key:4},pt={key:5},bt={key:4},vt=f(()=>h("hr",null,null,-1)),ft=["onClick"],_t={key:0},wt={key:1},kt={key:2},Vt={key:3},Ct={key:4},St={key:5};function zt(e,d,g,F,_,s){const L=C("openwb-base-modal-dialog"),v=C("font-awesome-icon"),W=C("openwb-base-avatar"),E=C("openwb-base-alert"),U=C("openwb-base-text-input"),M=C("openwb-base-select-input"),I=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),A=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(y,null,[n(L,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",ke,[h("form",Ve,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(v,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(y,null,B(s.vehicleIndexes,i=>(r(),b(A,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),i!==0?(r(),b(U,{key:0,title:"Fahrzeughersteller ","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].manufacturer,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"manufacturer")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),i!==0?(r(),b(U,{key:1,title:"Fahrzeugmodell","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].model,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"model")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht."),ze,l(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),Ue,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!g.installAssistantActive?(r(),c("div",Te,[n(I,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),We,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Le)]),_:1}),Pe])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),ye,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Ee,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Be,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Fe,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Me,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),De,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(y,null,B(s.evTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ze,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),xe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ne,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Oe,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Re,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",je," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",$e,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Ge,[(r(!0),c(y,null,B(s.chargeTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Qe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Xe,Ye]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ke,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",et,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",tt,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),nt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),at,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),it,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),ot,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),dt,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),rt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(y,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",st,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",mt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",ct,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ht,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",gt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ut)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),b(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",pt,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),g.installAssistantActive?m("",!0):(r(),c("div",bt,[vt,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(y,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",wt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",kt,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",Vt,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Ct,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ft)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(U,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",St,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Bt=Z(we,[["render",zt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Bt as default};
diff --git a/web/settings/assets/VehicleConfig-76952b56.js b/web/settings/assets/VehicleConfig-76952b56.js
deleted file mode 100644
index d881cac32e..0000000000
--- a/web/settings/assets/VehicleConfig-76952b56.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-f1ebfb88.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as v,N as a,y as l,z as S,D as n,x as g,a2 as re,a3 as ue,J as A,B as m,K as B,a4 as q,P as N,q as I,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,h,F,f,s){const W=C("openwb-base-alert"),b=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(h.configuration).length==0?(r(),v(W,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(h.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(W,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(h.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":h.configuration,"onUpdate:modelValue":d[0]||(d[0]=U=>s.updateConfiguration(U,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(W,{subtype:"info"},{default:a(()=>[g("pre",null,S(JSON.stringify(h.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-33c61ff2.js"),["assets/vehicle-33c61ff2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-f1ebfb88.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function _e(e,d,h,F,f,s){const W=C("openwb-base-heading");return r(),c(A,null,[n(W,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(h.vehicle.name)+'" ',1)]),_:1}),(r(),v(ue(s.myComponent),{vehicleId:h.vehicleId,vehicle:h.vehicle,configuration:h.vehicle.configuration,vehicleType:h.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=b=>s.updateConfiguration(b))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const fe=Z(ve,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:fe},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+h].name;e.push({value:h,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let h=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+h].name;e.push({value:h,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(h=>h.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:h}})},removeChargeTemplateSchedulePlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,h){this.showChargeTemplateSchedulePlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let h=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:h}})},removeChargeTemplateTimeChargingPlanModal(e,d,h){h.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,h){this.showChargeTemplateTimeChargingPlanModal=!1,h=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},_=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=_(()=>g("hr",null,null,-1)),Te={key:0},Ue=_(()=>g("br",null,null,-1)),We=["innerHTML"],Le=_(()=>g("hr",null,null,-1)),Pe=_(()=>g("br",null,null,-1)),Ae=_(()=>g("br",null,null,-1)),ye=_(()=>g("br",null,null,-1)),Ee={key:1},Be=_(()=>g("hr",{class:"border-secondary"},null,-1)),Fe={key:0},qe={key:1},Me=_(()=>g("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),De={key:0},Ze=_(()=>g("br",null,null,-1)),xe=_(()=>g("br",null,null,-1)),Ne=_(()=>g("br",null,null,-1)),Ie=_(()=>g("br",null,null,-1)),Oe={key:1},Re={key:0},He={key:0},je={key:3},Je={key:0},$e={key:1},Ge=_(()=>g("br",null,null,-1)),Qe=_(()=>g("br",null,null,-1)),Xe=_(()=>g("ol",null,[g("li",null," Zielladen (Sofortladen) mit Priorität "),g("li",null,"Zielladen (Sofortladen)"),g("li",null,"Zeitladen mit Priorität"),g("li",null,"Zeitladen"),g("li",null,"Sofortladen mit Priorität"),g("li",null,"Sofortladen"),g("li",null,"PV (Min-Anteil) mit Priorität"),g("li",null,"PV (Min-Anteil)"),g("li",null,"Zielladen (PV) mit Priorität"),g("li",null,"Zielladen (PV)"),g("li",null,"PV (PV-Anteil) mit Priorität"),g("li",null,"PV (PV-Anteil)")],-1)),Ye={key:0},Ke={key:0},et={key:0},tt=_(()=>g("hr",null,null,-1)),nt=_(()=>g("hr",null,null,-1)),at=_(()=>g("br",null,null,-1)),lt=_(()=>g("br",null,null,-1)),it=_(()=>g("hr",null,null,-1)),ot=_(()=>g("br",null,null,-1)),dt=_(()=>g("br",null,null,-1)),rt=["onClick"],ut={key:0},st={key:1},mt={key:2},ct={key:3},ht={key:4},gt={key:5},pt={key:4},bt=_(()=>g("hr",null,null,-1)),vt=["onClick"],_t={key:0},ft={key:1},wt={key:2},kt={key:3},Vt={key:4},Ct={key:5};function St(e,d,h,F,f,s){const W=C("openwb-base-modal-dialog"),b=C("font-awesome-icon"),U=C("openwb-base-avatar"),E=C("openwb-base-alert"),L=C("openwb-base-text-input"),M=C("openwb-base-select-input"),O=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),y=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(A,null,[n(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(f.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(f.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(f.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),g("div",ke,[g("form",Ve,[n(y,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(A,null,B(s.vehicleIndexes,i=>(r(),v(y,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),ze,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!h.installAssistantActive?(r(),c("div",Te,[n(O,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),Ue,g("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,We)]),_:1}),Le])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),Pe,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),ye,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Ee,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Be,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(y,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Fe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),Me,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(A,null,B(s.evTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",De,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),Ze,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),xe,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Ne,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Oe,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",Re," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),v(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(y,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),v(U,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Je,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",$e,[(r(!0),c(A,null,B(s.chargeTemplates,(i,o)=>(r(),v(y,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(L,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Ge,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Qe,Xe]),_:2},1032,["model-value","onUpdate:modelValue"]),h.installAssistantActive?m("",!0):(r(),c("div",Ye,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",Ke,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",et,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),tt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),nt,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),at,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),it,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),ot,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),dt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(A,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",ut,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",st,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",mt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ct,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",ht,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,rt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),v(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",gt,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),h.installAssistantActive?m("",!0):(r(),c("div",pt,[bt,n(P,null,{actions:a(()=>[n(U,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(A,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),v(y,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:I(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(b,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",ft,[n(b,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(b,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",wt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",kt,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Vt,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,vt)):m("",!0),u.collapsed==!1?(r(),v(U,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(L,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),v(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),v(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),v(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(L,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(L,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),v(L,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),v(L,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",Ct,[(r(!0),c(A,null,B(e.weekdays,(u,T)=>(r(),v(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),v(U,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Et=Z(we,[["render",St],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Et as default};
diff --git a/web/settings/assets/electricity_tariff-eefa229a.js b/web/settings/assets/electricity_tariff-070f80df.js
similarity index 97%
rename from web/settings/assets/electricity_tariff-eefa229a.js
rename to web/settings/assets/electricity_tariff-070f80df.js
index 8b82357e01..67a85dbee0 100644
--- a/web/settings/assets/electricity_tariff-eefa229a.js
+++ b/web/settings/assets/electricity_tariff-070f80df.js
@@ -1 +1 @@
-import{C as p}from"./index-f1ebfb88.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
+import{C as p}from"./index-69ef2d36.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
diff --git a/web/settings/assets/index-f1ebfb88.js b/web/settings/assets/index-69ef2d36.js
similarity index 96%
rename from web/settings/assets/index-f1ebfb88.js
rename to web/settings/assets/index-69ef2d36.js
index 64e190de3b..7621be8ec4 100644
--- a/web/settings/assets/index-f1ebfb88.js
+++ b/web/settings/assets/index-69ef2d36.js
@@ -1 +1 @@
-import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-29efdc6d.js"),["assets/Status-29efdc6d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-83ebac6d.js"),["assets/ChargeLog-83ebac6d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-70b754a3.js"),["assets/Chart-70b754a3.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-0de4c3ba.js"),["assets/GeneralConfig-0de4c3ba.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-49b0ff6e.js"),["assets/OptionalComponents-49b0ff6e.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-e3c03ea2.js"),["assets/GeneralChargeConfig-e3c03ea2.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-9b1ccfc3.js"),["assets/InstantChargeConfig-9b1ccfc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-988712ae.js"),["assets/PVChargeConfig-988712ae.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-23157950.js"),["assets/TimeChargeConfig-23157950.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-0b6dc1c6.js"),["assets/ScheduledChargeConfig-0b6dc1c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-6ab82611.js"),["assets/HardwareInstallation-6ab82611.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-9fa3e6c0.js"),["assets/LoadManagementConfig-9fa3e6c0.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-7ae4661c.js"),["assets/ChargePointInstallation-7ae4661c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-76952b56.js"),["assets/VehicleConfig-76952b56.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-8640925d.js"),["assets/CloudConfig-8640925d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-87097544.js"),["assets/MqttBridgeConfig-87097544.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-8fb79648.js"),["assets/DebugConfig-8fb79648.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-e534f32f.js"),["assets/Support-e534f32f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-9d18b06d.js"),["assets/LegalSettings-9d18b06d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-083c7c2d.js"),["assets/System-083c7c2d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-6aff49ed.js"),["assets/DataManagement-6aff49ed.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-5646f4c7.js"),["assets/InstallAssistant-5646f4c7.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-92266ef4.js"),["assets/TestingStore-92266ef4.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
+import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-130a6c94.js"),["assets/Status-130a6c94.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-ad45450b.js"),["assets/ChargeLog-ad45450b.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-5ed52ad8.js"),["assets/Chart-5ed52ad8.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-92f899f4.js"),["assets/GeneralConfig-92f899f4.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-77cf1612.js"),["assets/OptionalComponents-77cf1612.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-ca4f9ae6.js"),["assets/GeneralChargeConfig-ca4f9ae6.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-a54cb6df.js"),["assets/InstantChargeConfig-a54cb6df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-4906be0a.js"),["assets/PVChargeConfig-4906be0a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-9f248c3d.js"),["assets/TimeChargeConfig-9f248c3d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-78436900.js"),["assets/ScheduledChargeConfig-78436900.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-6046586c.js"),["assets/HardwareInstallation-6046586c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-003e3bae.js"),["assets/LoadManagementConfig-003e3bae.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-92c3e709.js"),["assets/ChargePointInstallation-92c3e709.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-032e1c73.js"),["assets/VehicleConfig-032e1c73.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-50261545.js"),["assets/CloudConfig-50261545.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-d5761c85.js"),["assets/MqttBridgeConfig-d5761c85.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-a27684ff.js"),["assets/DebugConfig-a27684ff.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-c0166323.js"),["assets/Support-c0166323.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-88dd4593.js"),["assets/LegalSettings-88dd4593.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-ebad11a3.js"),["assets/System-ebad11a3.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-0dd4c76f.js"),["assets/DataManagement-0dd4c76f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-ed245998.js"),["assets/InstallAssistant-ed245998.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-81bd6c5d.js"),["assets/TestingStore-81bd6c5d.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
diff --git a/web/settings/assets/vehicle-33c61ff2.js b/web/settings/assets/vehicle-15310f49.js
similarity index 97%
rename from web/settings/assets/vehicle-33c61ff2.js
rename to web/settings/assets/vehicle-15310f49.js
index 126018339d..b811dbfc13 100644
--- a/web/settings/assets/vehicle-33c61ff2.js
+++ b/web/settings/assets/vehicle-15310f49.js
@@ -1 +1 @@
-import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-f1ebfb88.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
+import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-69ef2d36.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/index.html b/web/settings/index.html
index cde750e07d..77fe13ffe3 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -7,7 +7,7 @@
 	<meta name="viewport" content="width=device-width,initial-scale=1.0">
 	<link rel="icon" href="/openWB/web/settings/favicon.ico">
 	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-f1ebfb88.js"></script>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-69ef2d36.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-2f1828d0.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-f2b8aa6f.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-71546160.js">
diff --git a/web/settings/modules/legacy_smart_home/smarthomeconfig.php b/web/settings/modules/legacy_smart_home/smarthomeconfig.php
index 0040f378dc..21b5d34734 100644
--- a/web/settings/modules/legacy_smart_home/smarthomeconfig.php
+++ b/web/settings/modules/legacy_smart_home/smarthomeconfig.php
@@ -481,7 +481,7 @@
 									</div>
 								</div>
 							</div>
-							<div class="device<?php echo $devicenum; ?>-option device<?php echo $devicenum; ?>-option-shelly device<?php echo $devicenum; ?>-option-tasmota device<?php echo $devicenum; ?>-option-acthor device<?php echo $devicenum; ?>-option-lambda device<?php echo $devicenum; ?>-option-elwa device<?php echo $devicenum; ?>-option-idm device<?php echo $devicenum; ?>-option-stiebel device<?php echo $devicenum; ?>-option-vampair device<?php echo $devicenum; ?>-option-avm device<?php echo $devicenum; ?>-option-mystrom device<?php echo $devicenum; ?>-option-http device<?php echo $devicenum; ?>-option-mqtt device<?php echo $devicenum;  ?>-option-ratiotherm device<?php echo $devicenum;  ?>-option-NXDACXX device<?php echo $devicenum; ?>-option-viessmann hide">
+							<div class="device<?php echo $devicenum; ?>-option device<?php echo $devicenum; ?>-option-shelly device<?php echo $devicenum; ?>-option-tasmota device<?php echo $devicenum; ?>-option-acthor device<?php echo $devicenum; ?>-option-lambda device<?php echo $devicenum; ?>-option-elwa device<?php echo $devicenum; ?>-option-idm device<?php echo $devicenum; ?>-option-stiebel device<?php echo $devicenum; ?>-option-vampair device<?php echo $devicenum; ?>-option-avm device<?php echo $devicenum; ?>-option-mystrom device<?php echo $devicenum; ?>-option-http device<?php echo $devicenum; ?>-option-mqtt device<?php echo $devicenum;  ?>-option-ratiotherm device<?php echo $devicenum;  ?>-option-NXDACXX device<?php echo $devicenum; ?>-option-askoheat device<?php echo $devicenum;  ?>-option-viessmann hide">
 								<hr class="border-secondary">
 								<div class="form-group">
 									<div class="form-row mb-1">

From a5a54927637cb8a38028380cdb4c4cf96402e1ed Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Mon, 16 Sep 2024 09:25:22 +0200
Subject: [PATCH 044/205] SolarEdge:  Use synergy units of the inverter to
 which the meters are connected (#1877)

* process synergy units for inverter components

* modify test

* Use of synergy units of the inverters to which the meters are connected

* comment

---------

Co-authored-by: LKuemmel <lena.kuemmel@openwb.de>
---
 packages/modules/devices/solaredge/device.py | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/packages/modules/devices/solaredge/device.py b/packages/modules/devices/solaredge/device.py
index 2928b33df6..d1a262063e 100644
--- a/packages/modules/devices/solaredge/device.py
+++ b/packages/modules/devices/solaredge/device.py
@@ -51,7 +51,6 @@ def __init__(self, device_config: Union[Dict, Solaredge]) -> None:
                                                   self.device_config.configuration.port,
                                                   reconnect_delay=reconnect_delay)
             self.inverter_counter = 0
-            self.synergy_units = 1
         except Exception:
             log.exception("Fehler im Modul "+self.device_config.name)
 
@@ -88,16 +87,18 @@ def add_component(self,
             # except Exception as e:
             #     log.exception("Fehler beim Auslesen der Modbus-Register: " + str(e))
             #     pass
-            if self.client.read_holding_registers(40121, modbus.ModbusDataType.UINT_16,
-                                                  unit=component_config.configuration.modbus_id
-                                                  ) == synergy_unit_identifier:
+            if (self.client.read_holding_registers(40121, modbus.ModbusDataType.UINT_16,
+                                                   unit=component_config.configuration.modbus_id
+                                                   ) == synergy_unit_identifier and
+                    (component_type == "external_inverter" or component_type == "counter")):
+                # Snyergy-Units vom Haupt-WR des angeschlossenen Meters ermitteln. Es kann mehrere Haupt-WR mit
+                # # unterschiedlichen Modbus-IDs im Verbund geben.
                 log.debug("Synergy Units supported")
-                self.synergy_units = int(self.client.read_holding_registers(
+                synergy_units = int(self.client.read_holding_registers(
                     40129, modbus.ModbusDataType.UINT_16,
                     unit=component_config.configuration.modbus_id)) or 1
-                log.debug("Synergy Units detected: %s", self.synergy_units)
-            if component_type == "external_inverter" or component_type == "counter" or component_type == "inverter":
-                self.set_component_registers(self.components.values(), self.synergy_units)
+                log.debug("Synergy Units detected: %s", synergy_units)
+                self.set_component_registers(self.components.values(), synergy_units)
         else:
             raise Exception(
                 "illegal component type " + component_type + ". Allowed values: " +

From b25fe80997023eb238b5ad684e25cb35b8fa25b0 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 17 Sep 2024 11:20:48 +0200
Subject: [PATCH 045/205] unlock chargepoint with vehicle id (MAC) (#1889)

---
 packages/control/chargepoint/chargepoint.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index 9146955c2c..c97b311b16 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -165,7 +165,7 @@ def _is_autolock_inactive(self) -> Tuple[bool, Optional[str]]:
 
     def _is_manual_lock_inactive(self) -> Tuple[bool, Optional[str]]:
         if self.data.set.manual_lock and self.template.data.disable_after_unplug or self.data.set.manual_lock is False:
-            if ((self.data.get.rfid or self.data.set.rfid) in self.template.data.valid_tags
+            if ((self.data.get.rfid or self.data.get.vehicle_id or self.data.set.rfid) in self.template.data.valid_tags
                     or self.data.set.manual_lock is False):
                 Pub().pub(f"openWB/set/chargepoint/{self.num}/set/manual_lock", False)
                 charging_possible = True

From 6ebebb4b7cbba3942824252402a9bca060994e0f Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 17 Sep 2024 12:02:25 +0200
Subject: [PATCH 046/205] Home consumption: do not consider any components in
 error status (#1834)

---
 packages/conftest.py            | 28 +++++++++++++++++-----------
 packages/control/counter_all.py | 14 ++++++++++----
 2 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/packages/conftest.py b/packages/conftest.py
index f757e29da9..751edcec83 100644
--- a/packages/conftest.py
+++ b/packages/conftest.py
@@ -115,29 +115,33 @@ def data_() -> None:
         "cp3": Mock(spec=Chargepoint, data=Mock(spec=ChargepointData,
                                                 config=Mock(spec=Config, phase_1=1),
                                                 get=Mock(spec=Get, currents=[30, 0, 0], power=6900,
-                                                         daily_imported=10000, daily_exported=0, imported=56000),
+                                                         daily_imported=10000, daily_exported=0, imported=56000,
+                                                         fault_state=0),
                                                 set=Mock(spec=Set, loadmanagement_available=True))),
         "cp4": Mock(spec=Chargepoint, data=Mock(spec=ChargepointData,
                                                 config=Mock(spec=Config, phase_1=2),
                                                 get=Mock(spec=Get, currents=[0, 15, 15], power=6900,
-                                                         daily_imported=10000, daily_exported=0, imported=60000),
+                                                         daily_imported=10000, daily_exported=0, imported=60000,
+                                                         fault_state=0),
                                                 set=Mock(spec=Set, loadmanagement_available=True))),
         "cp5": Mock(spec=Chargepoint, data=Mock(spec=ChargepointData,
                                                 config=Mock(spec=Config, phase_1=3),
                                                 get=Mock(spec=Get, currents=[10]*3, power=6900,
-                                                         daily_imported=10000, daily_exported=0, imported=62000),
+                                                         daily_imported=10000, daily_exported=0, imported=62000,
+                                                         fault_state=0),
                                                 set=Mock(spec=Set, loadmanagement_available=True)))}
     data.data.bat_data.update({"bat2": Mock(spec=Bat, data=Mock(spec=BatData, get=Mock(
         spec=BatGet, power=-5000, daily_imported=7000, daily_exported=3000, imported=12000, exported=10000,
-        currents=None)))})
+        currents=None, fault_state=0)))})
     data.data.pv_data.update({"pv1": Mock(spec=Pv, data=Mock(
-        spec=PvData, get=Mock(spec=PvGet, power=-10000, daily_exported=6000, exported=27000, currents=None)))})
+        spec=PvData, get=Mock(spec=PvGet, power=-10000, daily_exported=6000, exported=27000, currents=None,
+                              fault_state=0)))})
     data.data.counter_data.update({
         "counter0": Mock(spec=Counter, data=Mock(spec=CounterData, get=Mock(
-            spec=CounterGet, currents=[40]*3, power=6200, daily_imported=45000, daily_exported=3000))),
+            spec=CounterGet, currents=[40]*3, power=6200, daily_imported=45000, daily_exported=3000, fault_state=0))),
         "counter6": Mock(spec=Counter, data=Mock(spec=CounterData, get=Mock(
             spec=CounterGet, currents=[25, 10, 25], power=13800, daily_imported=20000, daily_exported=0,
-            imported=14000, exported=18000),
+            imported=14000, exported=18000, fault_state=0),
             config=Mock(spec=CounterConfig, max_currents=[32]*3),
             set=Mock(spec=CounterSet, raw_currents_left=[31]*3)))})
 
@@ -168,15 +172,17 @@ def data_hc_counter_() -> None:
         "cp3": Mock(spec=Chargepoint, data=Mock(spec=ChargepointData,
                                                 config=Mock(spec=Config, phase_1=1),
                                                 get=Mock(spec=Get, currents=[30, 0, 0], power=6900,
-                                                         daily_imported=10000, daily_exported=0, imported=56000),
+                                                         daily_imported=10000, daily_exported=0, imported=56000,
+                                                         fault_state=0),
                                                 set=Mock(spec=Set, loadmanagement_available=True)))}
     data.data.pv_data.update({"pv1": Mock(spec=Pv, data=Mock(
-        spec=PvData, get=Mock(spec=PvGet, power=-10000, daily_exported=6000, exported=27000, currents=None)))})
+        spec=PvData, get=Mock(spec=PvGet, power=-10000, daily_exported=6000, exported=27000, currents=None,
+                              fault_state=0)))})
     data.data.counter_data.update({
         "counter0": Mock(spec=Counter, data=Mock(spec=CounterData, get=Mock(
-            spec=CounterGet, currents=[40]*3, power=-2000, daily_imported=45000, daily_exported=3000))),
+            spec=CounterGet, currents=[40]*3, power=-2000, daily_imported=45000, daily_exported=3000, fault_state=0))),
         "counter6": Mock(spec=Counter, data=Mock(spec=CounterData, get=Mock(
             spec=CounterGet, currents=[25, 10, 25], power=8000, daily_imported=20000, daily_exported=0,
-            imported=14000, exported=18000),
+            imported=14000, exported=18000, fault_state=0),
             config=Mock(spec=CounterConfig, max_currents=[32]*3),
             set=Mock(spec=CounterSet, raw_currents_left=[31]*3)))})
diff --git a/packages/control/counter_all.py b/packages/control/counter_all.py
index 0f1e919ad2..4a5b64a40f 100644
--- a/packages/control/counter_all.py
+++ b/packages/control/counter_all.py
@@ -158,13 +158,19 @@ def _calc_home_consumption(self) -> Tuple[float, List]:
         elements_to_sum_up = self.get_elements_for_downstream_calculation(id_source)
         for element in elements_to_sum_up:
             if element["type"] == ComponentType.CHARGEPOINT.value:
-                power += data.data.cp_data[f"cp{element['id']}"].data.get.power
+                component = data.data.cp_data[f"cp{element['id']}"]
             elif element["type"] == ComponentType.BAT.value:
-                power += data.data.bat_data[f"bat{element['id']}"].data.get.power
+                component = data.data.bat_data[f"bat{element['id']}"]
             elif element["type"] == ComponentType.COUNTER.value:
-                power += data.data.counter_data[f"counter{element['id']}"].data.get.power
+                component = data.data.counter_data[f"counter{element['id']}"]
             elif element["type"] == ComponentType.INVERTER.value:
-                power += data.data.pv_data[f"pv{element['id']}"].data.get.power
+                component = data.data.pv_data[f"pv{element['id']}"]
+
+            if component.data.get.fault_state < 2:
+                power += component.data.get.power
+            else:
+                log.warning(
+                    f"Komponente {element['type']}{component.num} ist im Fehlerzustand und wird nicht berücksichtigt.")
         evu = data.data.counter_data[f"counter{id_source}"].data.get.power
         return evu - power - self.data.set.smarthome_power_excluded_from_home_consumption, elements_to_sum_up
 

From e53d733cc44f6e46b7e2d6bd9e4e5e553ebc2a09 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 17 Sep 2024 12:04:26 +0200
Subject: [PATCH 047/205] fix consideration of max ac out of inverter (#1810)

---
 packages/control/bat_all.py      |  8 ++++---
 packages/control/bat_all_test.py | 37 ++++++++++++++++----------------
 2 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/packages/control/bat_all.py b/packages/control/bat_all.py
index 620c8bb6ca..dc8214b756 100644
--- a/packages/control/bat_all.py
+++ b/packages/control/bat_all.py
@@ -131,17 +131,17 @@ def calc_power_for_all_components(self):
             log.exception("Fehler im Bat-Modul")
 
     def _max_bat_power_hybrid_system(self, battery: Bat) -> float:
+        """gibt die maximale Entladeleistung des Speichers zurück, bis die maximale Ausgangsleistung des WR erreicht
+        ist."""
         # tested
         parent = data.data.counter_all_data.get_entry_of_parent(battery.num)
         if parent.get("type") == "inverter":
             parent_data = data.data.pv_data[f"pv{parent['id']}"].data
-            # Bei einem Hybrid-System darf die Summe aus Batterie-Ladeleistung, die für den Algorithmus verwendet
-            # werden soll und PV-Leistung nicht größer als die max Ausgangsleistung des WR sein.
             # Wenn vom PV-Ertrag der Speicher geladen wird, kann diese Leistung bis zur max Ausgangsleistung des WR
             # genutzt werden.
             if parent_data.config.max_ac_out > 0:
                 max_bat_discharge_power = parent_data.config.max_ac_out + \
-                    parent_data.get.power + max(battery.data.get.power, 0)
+                    parent_data.get.power + min(battery.data.get.power, 0)
                 return max_bat_discharge_power, True
             else:
                 battery.data.get.fault_state = FaultStateLevel.ERROR.value
@@ -153,6 +153,8 @@ def _max_bat_power_hybrid_system(self, battery: Bat) -> float:
             return abs(battery.data.get.power) + 50, False
 
     def _limit_bat_power_discharge(self, required_power):
+        """begrenzt die für den Algorithmus benötigte Entladeleistung des Speichers, wenn die maximale Ausgangsleistung
+        des WR erreicht ist."""
         available_power = 0
         hybrid = False
         if required_power > 0:
diff --git a/packages/control/bat_all_test.py b/packages/control/bat_all_test.py
index fb7c6cb53c..941e2c2005 100644
--- a/packages/control/bat_all_test.py
+++ b/packages/control/bat_all_test.py
@@ -20,24 +20,25 @@ def data_fixture() -> None:
                                                        config=Mock(spec=Config, max_ac_out=7200)))
 
 
-@pytest.mark.parametrize("parent, bat_power, pv_power, expected_power",
-                         [
-                             pytest.param({"id": 6, "type": "counter", "children": [
-                                          {"id": 2, "type": "bat", "children": []}]}, 100, -6400, (150, False),
-                                          id="kein Hybrid-System, Speicher wird geladen"),
-                             pytest.param({"id": 6, "type": "counter", "children": [
-                                          {"id": 2, "type": "bat", "children": []}]}, -100, -6400, (150, False),
-                                          id="kein Hybrid-System, Speicher wird entladen"),
-                             pytest.param({"id": 1, "type": "inverter", "children": []}, 600, -6400, (1400, True),
-                                          id="maximale Entladeleistung des WR, Speicher lädt"),
-                             pytest.param({"id": 1, "type": "inverter", "children": []}, 600, -7200, (600, True),
-                                          id="maximale Entladeleistung des WR, Speicher lädt"),
-                             pytest.param({"id": 1, "type": "inverter", "children": []}, -600, -6400, (800, True),
-                                          id="maximale Entladeleistung des WR, Speicher entlädt"),
-                         ])
-def test_max_bat_power_hybrid_system(parent, bat_power, pv_power, expected_power, data_fixture, monkeypatch):
+@pytest.mark.parametrize(
+    "parent, bat_power, pv_power, expected_power_hybrid",
+    [
+        pytest.param({"id": 6, "type": "counter", "children": [
+            {"id": 2, "type": "bat", "children": []}]}, 100, -6400, (150, False),
+            id="kein Hybrid-System, Speicher wird geladen"),
+        pytest.param({"id": 6, "type": "counter", "children": [
+            {"id": 2, "type": "bat", "children": []}]}, -100, -6400, (150, False),
+            id="kein Hybrid-System, Speicher wird entladen"),
+        pytest.param({"id": 1, "type": "inverter", "children": []}, 600, -6400, (800, True),
+                     id="Speicher lädt mit 600W, max 800W bis WR max"),
+        pytest.param({"id": 1, "type": "inverter", "children": []}, 600, -7200, (0, True),
+                     id="maximale Entladeleistung des WR erreicht, Speicher lädt, keine Entladeleistung über"),
+        pytest.param({"id": 1, "type": "inverter", "children": []}, -600, -6400, (200, True),
+                     id="Speicher entlädt mit 600W, max 200W bis WR max"),
+    ])
+def test_max_bat_power_hybrid_system(parent, bat_power, pv_power, expected_power_hybrid, data_fixture, monkeypatch):
     # setup
-    # pv1-Data: max_ac_out 7200, power 6400
+    # pv1-Data: max_ac_out 7200
     mock_get_entry_of_parent = Mock(return_value=parent)
     monkeypatch.setattr(data.data.counter_all_data, "get_entry_of_parent", mock_get_entry_of_parent)
     data.data.pv_data["pv1"].data.get.power = pv_power
@@ -50,7 +51,7 @@ def test_max_bat_power_hybrid_system(parent, bat_power, pv_power, expected_power
     power = b._max_bat_power_hybrid_system(bat2)
 
     # evaluation
-    assert power == expected_power
+    assert power == expected_power_hybrid
 
 
 @pytest.mark.parametrize(

From 0258d9ed0277daff8f8be76ee628aa374cfe193c Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 17 Sep 2024 12:07:05 +0200
Subject: [PATCH 048/205] adapt phase switch conditions for ev test device
 (#1836)

* adapt phase switch conditions for ev test device

* ammend
---
 packages/control/chargepoint/chargepoint.py | 2 +-
 packages/control/general.py                 | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index c97b311b16..feeb476699 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -381,7 +381,7 @@ def _is_phase_switch_required(self) -> bool:
                 # Wenn ein Soll-Strom vorgegeben ist, muss das Auto auch laden, damit umgeschaltet wird, sonst
                 # wird zB bei automatischer Umschaltung ständig versucht auf 1 Phase zurück zu schalten, wenn
                 # das Auto bei 3 Phasen voll ist.
-                    ((self.data.set.current != 0 and self.data.get.power != 0) or
+                    ((self.data.set.current != 0 and self.data.get.charge_state) or
                      (self.data.set.current != 0 and self.set_current_prev == 0) or
                      self.data.set.current == 0)):
                 phase_switch_required = True
diff --git a/packages/control/general.py b/packages/control/general.py
index b53fb8dd8e..330434058e 100644
--- a/packages/control/general.py
+++ b/packages/control/general.py
@@ -97,7 +97,7 @@ class ChargemodeConfig:
         "topic": "chargemode_config/phase_switch_delay"})
     pv_charging: PvCharging = field(default_factory=pv_charging_factory)
     retry_failed_phase_switches: bool = field(
-        default=False,
+        default=True,
         metadata={"topic": "chargemode_config/retry_failed_phase_switches"})
     scheduled_charging: ScheduledCharging = field(default_factory=scheduled_charging_factory)
     time_charging: TimeCharging = field(default_factory=time_charging_factory)

From 3accb6203534d180e939ca5c6892c729eff6c0a5 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 17 Sep 2024 14:34:52 +0200
Subject: [PATCH 049/205] build UI (#1891)

---
 .../assets/{ChargeLog-ad45450b.js => ChargeLog-26d874e2.js}   | 2 +-
 ...lation-92c3e709.js => ChargePointInstallation-922a298c.js} | 2 +-
 web/settings/assets/{Chart-5ed52ad8.js => Chart-21256647.js}  | 2 +-
 .../{CloudConfig-50261545.js => CloudConfig-90995ab5.js}      | 2 +-
 ...{DataManagement-0dd4c76f.js => DataManagement-8e77f816.js} | 2 +-
 .../{DebugConfig-a27684ff.js => DebugConfig-fab63baa.js}      | 2 +-
 ...argeConfig-ca4f9ae6.js => GeneralChargeConfig-ecbdf48d.js} | 2 +-
 .../{GeneralConfig-92f899f4.js => GeneralConfig-9cc2f4c2.js}  | 2 +-
 ...tallation-6046586c.js => HardwareInstallation-a105c95d.js} | 2 +-
 ...tallAssistant-ed245998.js => InstallAssistant-cf52f5a9.js} | 2 +-
 ...antStep0-795cb040.js => InstallAssistantStep0-9e7a579c.js} | 2 +-
 ...antStep1-5a8a51d7.js => InstallAssistantStep1-ad2e1612.js} | 2 +-
 ...tStep10-2fd9a62d.js => InstallAssistantStep10-34baf34c.js} | 2 +-
 ...antStep2-c12663cc.js => InstallAssistantStep2-7bc8d141.js} | 2 +-
 ...antStep3-53904745.js => InstallAssistantStep3-b116e741.js} | 2 +-
 ...antStep4-8b97ea50.js => InstallAssistantStep4-7237ac3b.js} | 2 +-
 ...antStep5-290f8655.js => InstallAssistantStep5-2f42076b.js} | 2 +-
 ...antStep6-90ce23b3.js => InstallAssistantStep6-82a042dc.js} | 2 +-
 ...antStep7-acefbf3b.js => InstallAssistantStep7-50482e21.js} | 2 +-
 ...antStep8-97580236.js => InstallAssistantStep8-cc64765b.js} | 2 +-
 ...antStep9-7029496d.js => InstallAssistantStep9-938e13a7.js} | 2 +-
 ...e-06a9f1a7.js => InstallAssistantStepTemplate-eb06cf07.js} | 2 +-
 ...argeConfig-a54cb6df.js => InstantChargeConfig-31e43404.js} | 2 +-
 .../{LegalSettings-88dd4593.js => LegalSettings-fe52cd90.js}  | 2 +-
 ...entConfig-003e3bae.js => LoadManagementConfig-bf9a36c1.js} | 2 +-
 ...tBridgeConfig-d5761c85.js => MqttBridgeConfig-aa7c26e4.js} | 2 +-
 ...lComponents-77cf1612.js => OptionalComponents-71cfebf9.js} | 4 ++--
 ...{PVChargeConfig-4906be0a.js => PVChargeConfig-4e2ab231.js} | 2 +-
 ...geConfig-78436900.js => ScheduledChargeConfig-d8c705e2.js} | 2 +-
 .../assets/{Status-130a6c94.js => Status-2dd83854.js}         | 2 +-
 .../assets/{Support-c0166323.js => Support-34834209.js}       | 2 +-
 .../assets/{System-ebad11a3.js => System-f83e90ce.js}         | 2 +-
 .../{TestingStore-81bd6c5d.js => TestingStore-60647c44.js}    | 2 +-
 ...eChargeConfig-9f248c3d.js => TimeChargeConfig-26b3316f.js} | 2 +-
 .../{VehicleConfig-032e1c73.js => VehicleConfig-4390a03b.js}  | 2 +-
 web/settings/assets/counter-0e19dbc5.js                       | 1 +
 web/settings/assets/counter-3069a051.js                       | 1 -
 ...city_tariff-070f80df.js => electricity_tariff-4caccbff.js} | 2 +-
 web/settings/assets/{index-69ef2d36.js => index-3e910ceb.js}  | 2 +-
 .../assets/{vehicle-15310f49.js => vehicle-39ccb597.js}       | 2 +-
 web/settings/index.html                                       | 2 +-
 41 files changed, 41 insertions(+), 41 deletions(-)
 rename web/settings/assets/{ChargeLog-ad45450b.js => ChargeLog-26d874e2.js} (99%)
 rename web/settings/assets/{ChargePointInstallation-92c3e709.js => ChargePointInstallation-922a298c.js} (99%)
 rename web/settings/assets/{Chart-5ed52ad8.js => Chart-21256647.js} (99%)
 rename web/settings/assets/{CloudConfig-50261545.js => CloudConfig-90995ab5.js} (99%)
 rename web/settings/assets/{DataManagement-0dd4c76f.js => DataManagement-8e77f816.js} (99%)
 rename web/settings/assets/{DebugConfig-a27684ff.js => DebugConfig-fab63baa.js} (98%)
 rename web/settings/assets/{GeneralChargeConfig-ca4f9ae6.js => GeneralChargeConfig-ecbdf48d.js} (98%)
 rename web/settings/assets/{GeneralConfig-92f899f4.js => GeneralConfig-9cc2f4c2.js} (99%)
 rename web/settings/assets/{HardwareInstallation-6046586c.js => HardwareInstallation-a105c95d.js} (99%)
 rename web/settings/assets/{InstallAssistant-ed245998.js => InstallAssistant-cf52f5a9.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-795cb040.js => InstallAssistantStep0-9e7a579c.js} (95%)
 rename web/settings/assets/{InstallAssistantStep1-5a8a51d7.js => InstallAssistantStep1-ad2e1612.js} (89%)
 rename web/settings/assets/{InstallAssistantStep10-2fd9a62d.js => InstallAssistantStep10-34baf34c.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-c12663cc.js => InstallAssistantStep2-7bc8d141.js} (89%)
 rename web/settings/assets/{InstallAssistantStep3-53904745.js => InstallAssistantStep3-b116e741.js} (92%)
 rename web/settings/assets/{InstallAssistantStep4-8b97ea50.js => InstallAssistantStep4-7237ac3b.js} (92%)
 rename web/settings/assets/{InstallAssistantStep5-290f8655.js => InstallAssistantStep5-2f42076b.js} (93%)
 rename web/settings/assets/{InstallAssistantStep6-90ce23b3.js => InstallAssistantStep6-82a042dc.js} (94%)
 rename web/settings/assets/{InstallAssistantStep7-acefbf3b.js => InstallAssistantStep7-50482e21.js} (93%)
 rename web/settings/assets/{InstallAssistantStep8-97580236.js => InstallAssistantStep8-cc64765b.js} (93%)
 rename web/settings/assets/{InstallAssistantStep9-7029496d.js => InstallAssistantStep9-938e13a7.js} (91%)
 rename web/settings/assets/{InstallAssistantStepTemplate-06a9f1a7.js => InstallAssistantStepTemplate-eb06cf07.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-a54cb6df.js => InstantChargeConfig-31e43404.js} (96%)
 rename web/settings/assets/{LegalSettings-88dd4593.js => LegalSettings-fe52cd90.js} (97%)
 rename web/settings/assets/{LoadManagementConfig-003e3bae.js => LoadManagementConfig-bf9a36c1.js} (99%)
 rename web/settings/assets/{MqttBridgeConfig-d5761c85.js => MqttBridgeConfig-aa7c26e4.js} (99%)
 rename web/settings/assets/{OptionalComponents-77cf1612.js => OptionalComponents-71cfebf9.js} (89%)
 rename web/settings/assets/{PVChargeConfig-4906be0a.js => PVChargeConfig-4e2ab231.js} (99%)
 rename web/settings/assets/{ScheduledChargeConfig-78436900.js => ScheduledChargeConfig-d8c705e2.js} (97%)
 rename web/settings/assets/{Status-130a6c94.js => Status-2dd83854.js} (99%)
 rename web/settings/assets/{Support-c0166323.js => Support-34834209.js} (99%)
 rename web/settings/assets/{System-ebad11a3.js => System-f83e90ce.js} (98%)
 rename web/settings/assets/{TestingStore-81bd6c5d.js => TestingStore-60647c44.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-9f248c3d.js => TimeChargeConfig-26b3316f.js} (96%)
 rename web/settings/assets/{VehicleConfig-032e1c73.js => VehicleConfig-4390a03b.js} (99%)
 create mode 100644 web/settings/assets/counter-0e19dbc5.js
 delete mode 100644 web/settings/assets/counter-3069a051.js
 rename web/settings/assets/{electricity_tariff-070f80df.js => electricity_tariff-4caccbff.js} (97%)
 rename web/settings/assets/{index-69ef2d36.js => index-3e910ceb.js} (96%)
 rename web/settings/assets/{vehicle-15310f49.js => vehicle-39ccb597.js} (97%)

diff --git a/web/settings/assets/ChargeLog-ad45450b.js b/web/settings/assets/ChargeLog-26d874e2.js
similarity index 99%
rename from web/settings/assets/ChargeLog-ad45450b.js
rename to web/settings/assets/ChargeLog-26d874e2.js
index 3042aa1bf1..c2395f324a 100644
--- a/web/settings/assets/ChargeLog-ad45450b.js
+++ b/web/settings/assets/ChargeLog-26d874e2.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-69ef2d36.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-3e910ceb.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},y=t=>(W("data-v-8607e7e7"),t=t(),F(),t),M={class:"chargeLog"},P={name:"chargeLogForm"},z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],K=["aria-valuenow"],J=["aria-valuenow"],G=["aria-valuenow"],H=["aria-valuenow"],Q={key:1,class:"td-center"},Y={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ce={class:"hide",ref:"downloadChargeLogLink"},he=y(()=>i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),ge={class:"td-end"},_e={class:"td-end"},ue={class:"td-end"},me={class:"td-end"};function pe(t,e,o,p,l,r){const C=h("openwb-base-text-input"),f=h("font-awesome-icon"),D=h("openwb-base-button-group-input"),m=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),b=h("openwb-base-alert"),L=h("vue3-table-lite"),N=h("openwb-base-click-button");return g(),_("div",M,[i("form",P,[d(v,{title:"Filter"},{default:s(()=>[d(C,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:l.currentMonth,modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())]},null,8,["max","modelValue"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),c(" Erweiterte Optionen ")]),default:s(()=>[d(D,{title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())]},null,8,["modelValue"]),d(m,{title:"Lademodus",multiple:"",options:r.chargeModeList,modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Ladepunkt",multiple:"",options:r.chargePointList,modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Fahrzeug",multiple:"",options:r.vehicleList,modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(q,{title:"ID-Tags",modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Tags als Filter verwendet werden. ")]),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,z)]),_:1}),r.chargeLogRead?(g(),_("div",O,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(g(),_("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:u({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:u({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:u({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G),i("div",{class:"progress-bar bg-success",role:"progressbar",style:u({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,H)],8,j)):(g(),_("div",Q,"-"))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Y,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(g(),_("div",le,[i("div",de,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[c(" Als CSV exportieren "),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ce,null,512)]),he,d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",ge,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",_e,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ue,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",me,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):V("",!0)])):(g(),I(b,{key:0,subtype:"info"},{default:s(()=>[c(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const qe=B(U,[["render",pe],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{qe as default};
diff --git a/web/settings/assets/ChargePointInstallation-92c3e709.js b/web/settings/assets/ChargePointInstallation-922a298c.js
similarity index 99%
rename from web/settings/assets/ChargePointInstallation-92c3e709.js
rename to web/settings/assets/ChargePointInstallation-922a298c.js
index b42f76a8c7..202ebcd18d 100644
--- a/web/settings/assets/ChargePointInstallation-92c3e709.js
+++ b/web/settings/assets/ChargePointInstallation-922a298c.js
@@ -1 +1 @@
-import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-69ef2d36.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
+import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-3e910ceb.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
diff --git a/web/settings/assets/Chart-5ed52ad8.js b/web/settings/assets/Chart-21256647.js
similarity index 99%
rename from web/settings/assets/Chart-5ed52ad8.js
rename to web/settings/assets/Chart-21256647.js
index 72e97be101..d685da1bc8 100644
--- a/web/settings/assets/Chart-5ed52ad8.js
+++ b/web/settings/assets/Chart-21256647.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-69ef2d36.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-3e910ceb.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-50261545.js b/web/settings/assets/CloudConfig-90995ab5.js
similarity index 99%
rename from web/settings/assets/CloudConfig-50261545.js
rename to web/settings/assets/CloudConfig-90995ab5.js
index 125dbc4358..7b6f9521ab 100644
--- a/web/settings/assets/CloudConfig-50261545.js
+++ b/web/settings/assets/CloudConfig-90995ab5.js
@@ -1 +1 @@
-import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-69ef2d36.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
+import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-3e910ceb.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
diff --git a/web/settings/assets/DataManagement-0dd4c76f.js b/web/settings/assets/DataManagement-8e77f816.js
similarity index 99%
rename from web/settings/assets/DataManagement-0dd4c76f.js
rename to web/settings/assets/DataManagement-8e77f816.js
index 46462f289a..c912073028 100644
--- a/web/settings/assets/DataManagement-0dd4c76f.js
+++ b/web/settings/assets/DataManagement-8e77f816.js
@@ -1 +1 @@
-import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-69ef2d36.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
+import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-3e910ceb.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
diff --git a/web/settings/assets/DebugConfig-a27684ff.js b/web/settings/assets/DebugConfig-fab63baa.js
similarity index 98%
rename from web/settings/assets/DebugConfig-a27684ff.js
rename to web/settings/assets/DebugConfig-fab63baa.js
index 8e611e580f..b1e42b6ae9 100644
--- a/web/settings/assets/DebugConfig-a27684ff.js
+++ b/web/settings/assets/DebugConfig-fab63baa.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-69ef2d36.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-3e910ceb.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),p=s("openwb-base-avatar"),m=s("openwb-base-card");return d(),w(m,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(p,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=f($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",mixins:[k],components:{OpenwbLogCard:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),p=s("openwb-base-alert"),m=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),_("div",z,[v("form",V,[i(m,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>[b(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')]),_:1},8,["model-value"]),i(p,{subtype:"warning"},{default:l(()=>[b(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')]),_:1})]),_:1}),i(c,{formName:"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),_(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=f(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-ca4f9ae6.js b/web/settings/assets/GeneralChargeConfig-ecbdf48d.js
similarity index 98%
rename from web/settings/assets/GeneralChargeConfig-ca4f9ae6.js
rename to web/settings/assets/GeneralChargeConfig-ecbdf48d.js
index bfa78ae84d..7d30683e57 100644
--- a/web/settings/assets/GeneralChargeConfig-ca4f9ae6.js
+++ b/web/settings/assets/GeneralChargeConfig-ecbdf48d.js
@@ -1 +1 @@
-import{_ as g,C as T}from"./index-69ef2d36.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-070f80df.js"),["assets/electricity_tariff-070f80df.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
+import{_ as g,C as T}from"./index-3e910ceb.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-4caccbff.js"),["assets/electricity_tariff-4caccbff.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
diff --git a/web/settings/assets/GeneralConfig-92f899f4.js b/web/settings/assets/GeneralConfig-9cc2f4c2.js
similarity index 99%
rename from web/settings/assets/GeneralConfig-92f899f4.js
rename to web/settings/assets/GeneralConfig-9cc2f4c2.js
index 1ec736012d..83360520b5 100644
--- a/web/settings/assets/GeneralConfig-92f899f4.js
+++ b/web/settings/assets/GeneralConfig-9cc2f4c2.js
@@ -1 +1 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-69ef2d36.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-3e910ceb.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
diff --git a/web/settings/assets/HardwareInstallation-6046586c.js b/web/settings/assets/HardwareInstallation-a105c95d.js
similarity index 99%
rename from web/settings/assets/HardwareInstallation-6046586c.js
rename to web/settings/assets/HardwareInstallation-a105c95d.js
index cfe1a4292a..aaae5da6a0 100644
--- a/web/settings/assets/HardwareInstallation-6046586c.js
+++ b/web/settings/assets/HardwareInstallation-a105c95d.js
@@ -1 +1 @@
-import{l as K,d as N,t as G,a7 as H,a0 as F,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-69ef2d36.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as k,u as m,k as v,l as p,A as c,N as t,z as I,y as a,D as r,x as E,a2 as S,a3 as $,B as L,J as g,K as y,q as w,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,n,R,s,u){const V=m("openwb-base-alert"),f=m("openwb-base-textarea");return v(),p("div",oe,[Object.keys(n.configuration).length==0?(v(),c(V,{key:0,subtype:"info"},{default:t(()=>[n.componentType?(v(),p("span",ie,' Der Komponenten-Typ "'+I(n.componentType)+'" ',1)):(v(),p("span",re,'Der Gerät-Typ "'+I(n.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(v(),p("div",ne,[r(V,{subtype:"warning"},{default:t(()=>[a(" Es wurde keine Konfigurationsseite für den "),n.componentType?(v(),p("span",ue,' Komponenten-Typ "'+I(n.componentType)+'" ',1)):(v(),p("span",ve,'Geräte-Typ "'+I(n.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),r(f,{title:"Konfiguration",subtype:"json","model-value":n.configuration,"onUpdate:modelValue":i[0]||(i[0]=O=>u.updateConfiguration(O,"configuration"))},{help:t(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),r(V,{subtype:"info"},{default:t(()=>[E("pre",null,I(JSON.stringify(n.configuration,void 0,2)),1)]),_:1})]))])}const W=k(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?S({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-3069a051.js"),["assets/counter-3069a051.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/bat.vue":()=>e(()=>import("./bat-7696fb32.js"),["assets/bat-7696fb32.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/counter.vue":()=>e(()=>import("./counter-c9a9f709.js"),["assets/counter-c9a9f709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/inverter.vue":()=>e(()=>import("./inverter-597e2682.js"),["assets/inverter-597e2682.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-4a132ee4.js"),["assets/external_inverter-4a132ee4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/bat.vue":()=>e(()=>import("./bat-4202cb7c.js"),["assets/bat-4202cb7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/counter.vue":()=>e(()=>import("./counter-15d8fd18.js"),["assets/counter-15d8fd18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/inverter.vue":()=>e(()=>import("./inverter-5e52c5a2.js"),["assets/inverter-5e52c5a2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/inverter.vue":()=>e(()=>import("./inverter-8faef1dd.js"),["assets/inverter-8faef1dd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:W}):S({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:W})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,n,R,s,u){return v(),c($(u.myComponent),{configuration:n.configuration,deviceId:n.deviceId,deviceType:n.deviceType,componentId:n.componentId,componentType:n.componentType,"onUpdate:configuration":i[0]||(i[0]=V=>u.updateConfiguration(V))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=k(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);K.add(N,G,H,F,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,n){n.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,n){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:n}})},removeComponentModal(_,i,n,R,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:n},this.modalComponentName=R,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(n=>n.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},D=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),Ee={class:"hardwareInstallation"},ce={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=D(()=>E("hr",null,null,-1)),Ae=D(()=>E("hr",null,null,-1)),De=D(()=>E("hr",null,null,-1)),Oe=D(()=>E("hr",null,null,-1)),Re={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=D(()=>E("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),E("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=D(()=>E("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),E("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=D(()=>E("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,n,R,s,u){const V=m("openwb-base-modal-dialog"),f=m("router-link"),O=m("openwb-base-alert"),A=m("font-awesome-icon"),b=m("openwb-base-avatar"),P=m("openwb-base-text-input"),x=m("openwb-config-proxy"),q=m("openwb-base-heading"),h=m("openwb-base-card"),z=m("openwb-base-click-button"),C=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return v(),p(g,null,[r(V,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u.removeDevice},{default:t(()=>[a(' Wollen Sie das Gerät "'+I(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(V,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u.removeComponent},{default:t(()=>[a(' Wollen Sie die Komponente "'+I(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),E("div",Ee,[E("form",ce,[n.installAssistantActive?L("",!0):(v(),c(O,{key:0,subtype:"info"},{default:t(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),r(f,{to:"/LoadManagementConfiguration"},{default:t(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),r(h,{title:"Geräte und Komponenten"},{default:t(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(v(),p("div",le,[r(O,{subtype:"info"},{default:t(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(v(),p("div",Te,[(v(!0),p(g,null,y(u.installedDevices,(o,B)=>(v(),c(h,{key:o.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:t(()=>[r(A,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+I(o.name),1)]),actions:t(d=>[d.collapsed?(v(),p("div",Ie,[(v(!0),p(g,null,y(u.getMyInstalledComponents(o.id),l=>(v(),c(b,{key:l.id,class:w("ml-1 bg-"+u.getComponentTypeClass(l.type))},{default:t(()=>[r(A,{"fixed-width":"",icon:u.getComponentTypeIcon(l.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(v(),c(b,{key:0,class:"bg-danger clickable",onClick:l=>u.removeDeviceModal(o.id,o.name,l)},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:t(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":o.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,r(x,{deviceId:o.id,deviceType:o.type,configuration:o.configuration,"onUpdate:configuration":d=>u.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,r(q,null,{default:t(()=>[a("Komponenten")]),_:1}),u.deviceHasConfiguredComponents(o.id)?L("",!0):(v(),c(O,{key:0,subtype:"warning"},{default:t(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(v(!0),p(g,null,y(u.getMyInstalledComponents(o.id),(d,l)=>(v(),c(h,{key:d.id,collapsible:!0,collapsed:!0,subtype:u.getComponentTypeClass(d.type)},{header:t(()=>[r(A,{"fixed-width":"",icon:u.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+I(d.name),1)]),actions:t(T=>[T.collapsed?L("",!0):(v(),c(b,{key:0,class:"bg-danger clickable",onClick:U=>u.removeComponentModal(o.id,d.id,d.type,d.name,U)},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:t(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":T=>_.updateState(l,T,"name")},null,8,["model-value","onUpdate:modelValue"]),r(P,{title:"Hersteller",subtype:"text","model-value":d.info.manufacturer,"onUpdate:modelValue":T=>_.updateState(l,T,"info.manufacturer")},{help:t(()=>[a(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(P,{title:"Modell",subtype:"text","model-value":d.info.model,"onUpdate:modelValue":T=>_.updateState(l,T,"info.model")},{help:t(()=>[a(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),De,r(x,{deviceId:o.id,deviceType:o.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":T=>u.updateConfiguration(l,T)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Oe,u.getComponentList(o.type).length?(v(),c(C,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:u.getComponentList(o.type),"model-value":s.componentToAdd[o.id],"onUpdate:modelValue":d=>s.componentToAdd[o.id]=d},{append:t(()=>[E("span",Re,[r(z,{class:w(s.componentToAdd[o.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[o.id]===void 0,onButtonClicked:d=>u.addComponent(o.id,o.type,s.componentToAdd[o.id])},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:t(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(v(),c(O,{key:2,subtype:"info"},{default:t(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(u.installedDevices).length>0?(v(),p("hr",Pe)):L("",!0),r(C,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:u.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=o=>s.deviceToAdd=o)},{append:t(()=>[E("span",Le,[r(z,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:u.addDevice},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:t(()=>[ge,fe,be]),_:1},8,["options","model-value"])]))]),_:1}),r(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=o=>_.$emit("save")),onReset:i[2]||(i[2]=o=>_.$emit("reset")),onDefaults:i[3]||(i[3]=o=>_.$emit("defaults"))})])])],64)}const Se=k(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{Se as default};
+import{l as K,d as N,t as G,a7 as H,a0 as F,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-3e910ceb.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as k,u as m,k as v,l as p,A as c,N as t,z as I,y as a,D as r,x as E,a2 as S,a3 as $,B as L,J as g,K as y,q as w,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,n,R,s,u){const V=m("openwb-base-alert"),f=m("openwb-base-textarea");return v(),p("div",oe,[Object.keys(n.configuration).length==0?(v(),c(V,{key:0,subtype:"info"},{default:t(()=>[n.componentType?(v(),p("span",ie,' Der Komponenten-Typ "'+I(n.componentType)+'" ',1)):(v(),p("span",re,'Der Gerät-Typ "'+I(n.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(v(),p("div",ne,[r(V,{subtype:"warning"},{default:t(()=>[a(" Es wurde keine Konfigurationsseite für den "),n.componentType?(v(),p("span",ue,' Komponenten-Typ "'+I(n.componentType)+'" ',1)):(v(),p("span",ve,'Geräte-Typ "'+I(n.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),r(f,{title:"Konfiguration",subtype:"json","model-value":n.configuration,"onUpdate:modelValue":i[0]||(i[0]=O=>u.updateConfiguration(O,"configuration"))},{help:t(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),r(V,{subtype:"info"},{default:t(()=>[E("pre",null,I(JSON.stringify(n.configuration,void 0,2)),1)]),_:1})]))])}const W=k(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?S({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-0e19dbc5.js"),["assets/counter-0e19dbc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/bat.vue":()=>e(()=>import("./bat-7696fb32.js"),["assets/bat-7696fb32.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/counter.vue":()=>e(()=>import("./counter-c9a9f709.js"),["assets/counter-c9a9f709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/inverter.vue":()=>e(()=>import("./inverter-597e2682.js"),["assets/inverter-597e2682.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-4a132ee4.js"),["assets/external_inverter-4a132ee4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/bat.vue":()=>e(()=>import("./bat-4202cb7c.js"),["assets/bat-4202cb7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/counter.vue":()=>e(()=>import("./counter-15d8fd18.js"),["assets/counter-15d8fd18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/inverter.vue":()=>e(()=>import("./inverter-5e52c5a2.js"),["assets/inverter-5e52c5a2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/inverter.vue":()=>e(()=>import("./inverter-8faef1dd.js"),["assets/inverter-8faef1dd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:W}):S({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:W})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,n,R,s,u){return v(),c($(u.myComponent),{configuration:n.configuration,deviceId:n.deviceId,deviceType:n.deviceType,componentId:n.componentId,componentType:n.componentType,"onUpdate:configuration":i[0]||(i[0]=V=>u.updateConfiguration(V))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=k(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);K.add(N,G,H,F,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,n){n.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,n){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:n}})},removeComponentModal(_,i,n,R,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:n},this.modalComponentName=R,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(n=>n.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},D=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),Ee={class:"hardwareInstallation"},ce={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=D(()=>E("hr",null,null,-1)),Ae=D(()=>E("hr",null,null,-1)),De=D(()=>E("hr",null,null,-1)),Oe=D(()=>E("hr",null,null,-1)),Re={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=D(()=>E("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),E("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=D(()=>E("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),E("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=D(()=>E("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,n,R,s,u){const V=m("openwb-base-modal-dialog"),f=m("router-link"),O=m("openwb-base-alert"),A=m("font-awesome-icon"),b=m("openwb-base-avatar"),P=m("openwb-base-text-input"),x=m("openwb-config-proxy"),q=m("openwb-base-heading"),h=m("openwb-base-card"),z=m("openwb-base-click-button"),C=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return v(),p(g,null,[r(V,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u.removeDevice},{default:t(()=>[a(' Wollen Sie das Gerät "'+I(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(V,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u.removeComponent},{default:t(()=>[a(' Wollen Sie die Komponente "'+I(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),E("div",Ee,[E("form",ce,[n.installAssistantActive?L("",!0):(v(),c(O,{key:0,subtype:"info"},{default:t(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),r(f,{to:"/LoadManagementConfiguration"},{default:t(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),r(h,{title:"Geräte und Komponenten"},{default:t(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(v(),p("div",le,[r(O,{subtype:"info"},{default:t(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(v(),p("div",Te,[(v(!0),p(g,null,y(u.installedDevices,(o,B)=>(v(),c(h,{key:o.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:t(()=>[r(A,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+I(o.name),1)]),actions:t(d=>[d.collapsed?(v(),p("div",Ie,[(v(!0),p(g,null,y(u.getMyInstalledComponents(o.id),l=>(v(),c(b,{key:l.id,class:w("ml-1 bg-"+u.getComponentTypeClass(l.type))},{default:t(()=>[r(A,{"fixed-width":"",icon:u.getComponentTypeIcon(l.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(v(),c(b,{key:0,class:"bg-danger clickable",onClick:l=>u.removeDeviceModal(o.id,o.name,l)},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:t(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":o.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,r(x,{deviceId:o.id,deviceType:o.type,configuration:o.configuration,"onUpdate:configuration":d=>u.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,r(q,null,{default:t(()=>[a("Komponenten")]),_:1}),u.deviceHasConfiguredComponents(o.id)?L("",!0):(v(),c(O,{key:0,subtype:"warning"},{default:t(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(v(!0),p(g,null,y(u.getMyInstalledComponents(o.id),(d,l)=>(v(),c(h,{key:d.id,collapsible:!0,collapsed:!0,subtype:u.getComponentTypeClass(d.type)},{header:t(()=>[r(A,{"fixed-width":"",icon:u.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+I(d.name),1)]),actions:t(T=>[T.collapsed?L("",!0):(v(),c(b,{key:0,class:"bg-danger clickable",onClick:U=>u.removeComponentModal(o.id,d.id,d.type,d.name,U)},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:t(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":T=>_.updateState(l,T,"name")},null,8,["model-value","onUpdate:modelValue"]),r(P,{title:"Hersteller",subtype:"text","model-value":d.info.manufacturer,"onUpdate:modelValue":T=>_.updateState(l,T,"info.manufacturer")},{help:t(()=>[a(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(P,{title:"Modell",subtype:"text","model-value":d.info.model,"onUpdate:modelValue":T=>_.updateState(l,T,"info.model")},{help:t(()=>[a(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),De,r(x,{deviceId:o.id,deviceType:o.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":T=>u.updateConfiguration(l,T)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Oe,u.getComponentList(o.type).length?(v(),c(C,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:u.getComponentList(o.type),"model-value":s.componentToAdd[o.id],"onUpdate:modelValue":d=>s.componentToAdd[o.id]=d},{append:t(()=>[E("span",Re,[r(z,{class:w(s.componentToAdd[o.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[o.id]===void 0,onButtonClicked:d=>u.addComponent(o.id,o.type,s.componentToAdd[o.id])},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:t(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(v(),c(O,{key:2,subtype:"info"},{default:t(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(u.installedDevices).length>0?(v(),p("hr",Pe)):L("",!0),r(C,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:u.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=o=>s.deviceToAdd=o)},{append:t(()=>[E("span",Le,[r(z,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:u.addDevice},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:t(()=>[ge,fe,be]),_:1},8,["options","model-value"])]))]),_:1}),r(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=o=>_.$emit("save")),onReset:i[2]||(i[2]=o=>_.$emit("reset")),onDefaults:i[3]||(i[3]=o=>_.$emit("defaults"))})])])],64)}const Se=k(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{Se as default};
diff --git a/web/settings/assets/InstallAssistant-ed245998.js b/web/settings/assets/InstallAssistant-cf52f5a9.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-ed245998.js
rename to web/settings/assets/InstallAssistant-cf52f5a9.js
index eb51f80030..b2d89ea5e3 100644
--- a/web/settings/assets/InstallAssistant-ed245998.js
+++ b/web/settings/assets/InstallAssistant-cf52f5a9.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-69ef2d36.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-795cb040.js"),["assets/InstallAssistantStep0-795cb040.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-5a8a51d7.js"),["assets/InstallAssistantStep1-5a8a51d7.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-0dd4c76f.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-2fd9a62d.js"),["assets/InstallAssistantStep10-2fd9a62d.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-c12663cc.js"),["assets/InstallAssistantStep2-c12663cc.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-ebad11a3.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-53904745.js"),["assets/InstallAssistantStep3-53904745.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-92f899f4.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-8b97ea50.js"),["assets/InstallAssistantStep4-8b97ea50.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-92c3e709.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-290f8655.js"),["assets/InstallAssistantStep5-290f8655.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-6046586c.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-90ce23b3.js"),["assets/InstallAssistantStep6-90ce23b3.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-92c3e709.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-acefbf3b.js"),["assets/InstallAssistantStep7-acefbf3b.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-003e3bae.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-97580236.js"),["assets/InstallAssistantStep8-97580236.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-032e1c73.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-7029496d.js"),["assets/InstallAssistantStep9-7029496d.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-0dd4c76f.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-06a9f1a7.js"),["assets/InstallAssistantStepTemplate-06a9f1a7.js","assets/index-69ef2d36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-3e910ceb.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-9e7a579c.js"),["assets/InstallAssistantStep0-9e7a579c.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-ad2e1612.js"),["assets/InstallAssistantStep1-ad2e1612.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-8e77f816.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-34baf34c.js"),["assets/InstallAssistantStep10-34baf34c.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-7bc8d141.js"),["assets/InstallAssistantStep2-7bc8d141.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-f83e90ce.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-b116e741.js"),["assets/InstallAssistantStep3-b116e741.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-9cc2f4c2.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-7237ac3b.js"),["assets/InstallAssistantStep4-7237ac3b.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-922a298c.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-2f42076b.js"),["assets/InstallAssistantStep5-2f42076b.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-a105c95d.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-82a042dc.js"),["assets/InstallAssistantStep6-82a042dc.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-922a298c.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-50482e21.js"),["assets/InstallAssistantStep7-50482e21.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-bf9a36c1.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-cc64765b.js"),["assets/InstallAssistantStep8-cc64765b.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-4390a03b.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-938e13a7.js"),["assets/InstallAssistantStep9-938e13a7.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-8e77f816.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-eb06cf07.js"),["assets/InstallAssistantStepTemplate-eb06cf07.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-795cb040.js b/web/settings/assets/InstallAssistantStep0-9e7a579c.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-795cb040.js
rename to web/settings/assets/InstallAssistantStep0-9e7a579c.js
index 9ac24d6dc4..75146e05b8 100644
--- a/web/settings/assets/InstallAssistantStep0-795cb040.js
+++ b/web/settings/assets/InstallAssistantStep0-9e7a579c.js
@@ -1 +1 @@
-import{C as d}from"./index-69ef2d36.js";import u from"./InstallAssistantStepTemplate-06a9f1a7.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
+import{C as d}from"./index-3e910ceb.js";import u from"./InstallAssistantStepTemplate-eb06cf07.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
diff --git a/web/settings/assets/InstallAssistantStep1-5a8a51d7.js b/web/settings/assets/InstallAssistantStep1-ad2e1612.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep1-5a8a51d7.js
rename to web/settings/assets/InstallAssistantStep1-ad2e1612.js
index 208dbe7eb2..04d866d5be 100644
--- a/web/settings/assets/InstallAssistantStep1-5a8a51d7.js
+++ b/web/settings/assets/InstallAssistantStep1-ad2e1612.js
@@ -1 +1 @@
-import{C as m}from"./index-69ef2d36.js";import p from"./InstallAssistantStepTemplate-06a9f1a7.js";import l from"./DataManagement-0dd4c76f.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
+import{C as m}from"./index-3e910ceb.js";import p from"./InstallAssistantStepTemplate-eb06cf07.js";import l from"./DataManagement-8e77f816.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
diff --git a/web/settings/assets/InstallAssistantStep10-2fd9a62d.js b/web/settings/assets/InstallAssistantStep10-34baf34c.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-2fd9a62d.js
rename to web/settings/assets/InstallAssistantStep10-34baf34c.js
index 15fc62d405..36e8697bcb 100644
--- a/web/settings/assets/InstallAssistantStep10-2fd9a62d.js
+++ b/web/settings/assets/InstallAssistantStep10-34baf34c.js
@@ -1 +1 @@
-import{C as i}from"./index-69ef2d36.js";import a from"./InstallAssistantStepTemplate-06a9f1a7.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
+import{C as i}from"./index-3e910ceb.js";import a from"./InstallAssistantStepTemplate-eb06cf07.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
diff --git a/web/settings/assets/InstallAssistantStep2-c12663cc.js b/web/settings/assets/InstallAssistantStep2-7bc8d141.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-c12663cc.js
rename to web/settings/assets/InstallAssistantStep2-7bc8d141.js
index d8fe185f92..8e6232434c 100644
--- a/web/settings/assets/InstallAssistantStep2-c12663cc.js
+++ b/web/settings/assets/InstallAssistantStep2-7bc8d141.js
@@ -1 +1 @@
-import{C as d}from"./index-69ef2d36.js";import p from"./InstallAssistantStepTemplate-06a9f1a7.js";import l from"./System-ebad11a3.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
+import{C as d}from"./index-3e910ceb.js";import p from"./InstallAssistantStepTemplate-eb06cf07.js";import l from"./System-f83e90ce.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep3-53904745.js b/web/settings/assets/InstallAssistantStep3-b116e741.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep3-53904745.js
rename to web/settings/assets/InstallAssistantStep3-b116e741.js
index 406740f202..8298f9cb89 100644
--- a/web/settings/assets/InstallAssistantStep3-53904745.js
+++ b/web/settings/assets/InstallAssistantStep3-b116e741.js
@@ -1 +1 @@
-import{C as d}from"./index-69ef2d36.js";import p from"./InstallAssistantStepTemplate-06a9f1a7.js";import m from"./GeneralConfig-92f899f4.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
+import{C as d}from"./index-3e910ceb.js";import p from"./InstallAssistantStepTemplate-eb06cf07.js";import m from"./GeneralConfig-9cc2f4c2.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep4-8b97ea50.js b/web/settings/assets/InstallAssistantStep4-7237ac3b.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep4-8b97ea50.js
rename to web/settings/assets/InstallAssistantStep4-7237ac3b.js
index f2f7406847..1a7b46cd93 100644
--- a/web/settings/assets/InstallAssistantStep4-8b97ea50.js
+++ b/web/settings/assets/InstallAssistantStep4-7237ac3b.js
@@ -1 +1 @@
-import{C as l}from"./index-69ef2d36.js";import p from"./InstallAssistantStepTemplate-06a9f1a7.js";import u from"./ChargePointInstallation-92c3e709.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
+import{C as l}from"./index-3e910ceb.js";import p from"./InstallAssistantStepTemplate-eb06cf07.js";import u from"./ChargePointInstallation-922a298c.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
diff --git a/web/settings/assets/InstallAssistantStep5-290f8655.js b/web/settings/assets/InstallAssistantStep5-2f42076b.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep5-290f8655.js
rename to web/settings/assets/InstallAssistantStep5-2f42076b.js
index fa2348bc18..e6d5f543ac 100644
--- a/web/settings/assets/InstallAssistantStep5-290f8655.js
+++ b/web/settings/assets/InstallAssistantStep5-2f42076b.js
@@ -1 +1 @@
-import{C as l}from"./index-69ef2d36.js";import m from"./InstallAssistantStepTemplate-06a9f1a7.js";import u from"./HardwareInstallation-6046586c.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
+import{C as l}from"./index-3e910ceb.js";import m from"./InstallAssistantStepTemplate-eb06cf07.js";import u from"./HardwareInstallation-a105c95d.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstallAssistantStep6-90ce23b3.js b/web/settings/assets/InstallAssistantStep6-82a042dc.js
similarity index 94%
rename from web/settings/assets/InstallAssistantStep6-90ce23b3.js
rename to web/settings/assets/InstallAssistantStep6-82a042dc.js
index a798f1f44e..430fe1d442 100644
--- a/web/settings/assets/InstallAssistantStep6-90ce23b3.js
+++ b/web/settings/assets/InstallAssistantStep6-82a042dc.js
@@ -1 +1 @@
-import{C as l}from"./index-69ef2d36.js";import u from"./InstallAssistantStepTemplate-06a9f1a7.js";import p from"./ChargePointInstallation-92c3e709.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
+import{C as l}from"./index-3e910ceb.js";import u from"./InstallAssistantStepTemplate-eb06cf07.js";import p from"./ChargePointInstallation-922a298c.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep7-acefbf3b.js b/web/settings/assets/InstallAssistantStep7-50482e21.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-acefbf3b.js
rename to web/settings/assets/InstallAssistantStep7-50482e21.js
index 47697c8e6e..ef623171f0 100644
--- a/web/settings/assets/InstallAssistantStep7-acefbf3b.js
+++ b/web/settings/assets/InstallAssistantStep7-50482e21.js
@@ -1 +1 @@
-import{C as l}from"./index-69ef2d36.js";import m from"./InstallAssistantStepTemplate-06a9f1a7.js";import p from"./LoadManagementConfig-003e3bae.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
+import{C as l}from"./index-3e910ceb.js";import m from"./InstallAssistantStepTemplate-eb06cf07.js";import p from"./LoadManagementConfig-bf9a36c1.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep8-97580236.js b/web/settings/assets/InstallAssistantStep8-cc64765b.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep8-97580236.js
rename to web/settings/assets/InstallAssistantStep8-cc64765b.js
index 3989735b9e..12eba364bd 100644
--- a/web/settings/assets/InstallAssistantStep8-97580236.js
+++ b/web/settings/assets/InstallAssistantStep8-cc64765b.js
@@ -1 +1 @@
-import{C as l}from"./index-69ef2d36.js";import u from"./InstallAssistantStepTemplate-06a9f1a7.js";import m from"./VehicleConfig-032e1c73.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
+import{C as l}from"./index-3e910ceb.js";import u from"./InstallAssistantStepTemplate-eb06cf07.js";import m from"./VehicleConfig-4390a03b.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep9-7029496d.js b/web/settings/assets/InstallAssistantStep9-938e13a7.js
similarity index 91%
rename from web/settings/assets/InstallAssistantStep9-7029496d.js
rename to web/settings/assets/InstallAssistantStep9-938e13a7.js
index 7da95a8f1d..991f8e7840 100644
--- a/web/settings/assets/InstallAssistantStep9-7029496d.js
+++ b/web/settings/assets/InstallAssistantStep9-938e13a7.js
@@ -1 +1 @@
-import{C as l}from"./index-69ef2d36.js";import p from"./InstallAssistantStepTemplate-06a9f1a7.js";import u from"./DataManagement-0dd4c76f.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
+import{C as l}from"./index-3e910ceb.js";import p from"./InstallAssistantStepTemplate-eb06cf07.js";import u from"./DataManagement-8e77f816.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-06a9f1a7.js b/web/settings/assets/InstallAssistantStepTemplate-eb06cf07.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-06a9f1a7.js
rename to web/settings/assets/InstallAssistantStepTemplate-eb06cf07.js
index 695b80b63c..525485c322 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-06a9f1a7.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-eb06cf07.js
@@ -1 +1 @@
-import{C as v}from"./index-69ef2d36.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
+import{C as v}from"./index-3e910ceb.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstantChargeConfig-a54cb6df.js b/web/settings/assets/InstantChargeConfig-31e43404.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-a54cb6df.js
rename to web/settings/assets/InstantChargeConfig-31e43404.js
index 68d9e6de7f..0cdf5cf9e4 100644
--- a/web/settings/assets/InstantChargeConfig-a54cb6df.js
+++ b/web/settings/assets/InstantChargeConfig-31e43404.js
@@ -1 +1 @@
-import{C as l}from"./index-69ef2d36.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-3e910ceb.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-88dd4593.js b/web/settings/assets/LegalSettings-fe52cd90.js
similarity index 97%
rename from web/settings/assets/LegalSettings-88dd4593.js
rename to web/settings/assets/LegalSettings-fe52cd90.js
index 5e8cf258aa..abb2ef8a3d 100644
--- a/web/settings/assets/LegalSettings-88dd4593.js
+++ b/web/settings/assets/LegalSettings-fe52cd90.js
@@ -1 +1 @@
-import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-69ef2d36.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
+import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-3e910ceb.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
diff --git a/web/settings/assets/LoadManagementConfig-003e3bae.js b/web/settings/assets/LoadManagementConfig-bf9a36c1.js
similarity index 99%
rename from web/settings/assets/LoadManagementConfig-003e3bae.js
rename to web/settings/assets/LoadManagementConfig-bf9a36c1.js
index b4d3469b86..b896e13a73 100644
--- a/web/settings/assets/LoadManagementConfig-003e3bae.js
+++ b/web/settings/assets/LoadManagementConfig-bf9a36c1.js
@@ -1 +1 @@
-import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-69ef2d36.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
+import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-3e910ceb.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
diff --git a/web/settings/assets/MqttBridgeConfig-d5761c85.js b/web/settings/assets/MqttBridgeConfig-aa7c26e4.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-d5761c85.js
rename to web/settings/assets/MqttBridgeConfig-aa7c26e4.js
index 64b86deccc..8d24c4d063 100644
--- a/web/settings/assets/MqttBridgeConfig-d5761c85.js
+++ b/web/settings/assets/MqttBridgeConfig-aa7c26e4.js
@@ -1 +1 @@
-import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-69ef2d36.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
+import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-3e910ceb.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
diff --git a/web/settings/assets/OptionalComponents-77cf1612.js b/web/settings/assets/OptionalComponents-71cfebf9.js
similarity index 89%
rename from web/settings/assets/OptionalComponents-77cf1612.js
rename to web/settings/assets/OptionalComponents-71cfebf9.js
index b8fd98c393..717b367dc6 100644
--- a/web/settings/assets/OptionalComponents-77cf1612.js
+++ b/web/settings/assets/OptionalComponents-71cfebf9.js
@@ -1,2 +1,2 @@
-import{_ as $,C}from"./index-69ef2d36.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as z,X as O,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as _,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function A(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),_(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>m.updateConfiguration(g,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const j=y(F,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(O,V);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:j})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),_(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen. Das Fahrzeug wird erst nach dem Anstecken zugeordnet."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
-`)},{help:o(()=>[a(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(b,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/optional/int_display/active",i)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[a(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",te,[n(b,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/optional/int_display/rotation",i)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ne,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),oe,n(T,null,{default:o(()=>[a(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/optional/int_display/standby",i)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",ae,[ie,n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",se,[le,n(b,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/optional/int_display/only_local_charge_points",i)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[a(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),pe,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",re,[n(D,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=i=>m.updateSelectedDisplayTheme(i))},{help:o(()=>[a(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),_(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=i=>m.updateConfiguration("openWB/optional/int_display/theme",i))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=i=>e.$emit("save")),onReset:t[8]||(t[8]=i=>e.$emit("reset")),onDefaults:t[9]||(t[9]=i=>e.$emit("defaults"))})])])}const ye=y(H,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{ye as default};
+import{_ as $,C}from"./index-3e910ceb.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as O,X as V,Y as z,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as g,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function j(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),g(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=_=>m.updateConfiguration(_,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const A=y(F,[["render",j],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);O.add(V,z);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),_=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),g(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),g(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(_,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),g(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),_=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(_,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
+`)},{help:o(()=>[a(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(b,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/optional/int_display/active",i)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[a(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",te,[n(b,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/optional/int_display/rotation",i)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ne,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),oe,n(T,null,{default:o(()=>[a(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/optional/int_display/standby",i)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",ae,[ie,n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",se,[le,n(b,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/optional/int_display/only_local_charge_points",i)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[a(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),pe,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",re,[n(D,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=i=>m.updateSelectedDisplayTheme(i))},{help:o(()=>[a(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),g(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=i=>m.updateConfiguration("openWB/optional/int_display/theme",i))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=i=>e.$emit("save")),onReset:t[8]||(t[8]=i=>e.$emit("reset")),onDefaults:t[9]||(t[9]=i=>e.$emit("defaults"))})])])}const ye=y(H,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{ye as default};
diff --git a/web/settings/assets/PVChargeConfig-4906be0a.js b/web/settings/assets/PVChargeConfig-4e2ab231.js
similarity index 99%
rename from web/settings/assets/PVChargeConfig-4906be0a.js
rename to web/settings/assets/PVChargeConfig-4e2ab231.js
index 3c3b0009d6..0f6bd1f046 100644
--- a/web/settings/assets/PVChargeConfig-4906be0a.js
+++ b/web/settings/assets/PVChargeConfig-4e2ab231.js
@@ -1 +1 @@
-import{C as B}from"./index-69ef2d36.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
+import{C as B}from"./index-3e910ceb.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-78436900.js b/web/settings/assets/ScheduledChargeConfig-d8c705e2.js
similarity index 97%
rename from web/settings/assets/ScheduledChargeConfig-78436900.js
rename to web/settings/assets/ScheduledChargeConfig-d8c705e2.js
index 68dfbe1400..40d1a6f245 100644
--- a/web/settings/assets/ScheduledChargeConfig-78436900.js
+++ b/web/settings/assets/ScheduledChargeConfig-d8c705e2.js
@@ -1 +1 @@
-import{C as p}from"./index-69ef2d36.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
+import{C as p}from"./index-3e910ceb.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
diff --git a/web/settings/assets/Status-130a6c94.js b/web/settings/assets/Status-2dd83854.js
similarity index 99%
rename from web/settings/assets/Status-130a6c94.js
rename to web/settings/assets/Status-2dd83854.js
index da38a860d7..22a63a8e80 100644
--- a/web/settings/assets/Status-130a6c94.js
+++ b/web/settings/assets/Status-2dd83854.js
@@ -1 +1 @@
-import{C as y}from"./index-69ef2d36.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
+import{C as y}from"./index-3e910ceb.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
diff --git a/web/settings/assets/Support-c0166323.js b/web/settings/assets/Support-34834209.js
similarity index 99%
rename from web/settings/assets/Support-c0166323.js
rename to web/settings/assets/Support-34834209.js
index 6af420b158..e359ffd091 100644
--- a/web/settings/assets/Support-c0166323.js
+++ b/web/settings/assets/Support-34834209.js
@@ -1,3 +1,3 @@
-import{l as S,g as D,F as V}from"./vendor-fortawesome-71546160.js";import{C as W}from"./index-69ef2d36.js";import{_ as A,u as d,k as h,l as f,x as r,A as _,N as t,D as s,a4 as C,B as k,y as e,q as F}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(D);const z={name:"OpenwbSupportView",mixins:[W],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var p,m;if(this.components!==void 0)return this.components;let i="";const o=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const n of Object.values(o)){const u=n.id,a=((p=n.info)==null?void 0:p.manufacturer)||"N/A",c=((m=n.info)==null?void 0:m.model)||"N/A";i+=`(${u}) Hersteller: ${a}, Modell: ${c}
+import{l as S,g as D,F as V}from"./vendor-fortawesome-71546160.js";import{C as W}from"./index-3e910ceb.js";import{_ as A,u as d,k as h,l as f,x as r,A as _,N as t,D as s,a4 as C,B as k,y as e,q as F}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(D);const z={name:"OpenwbSupportView",mixins:[W],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var p,m;if(this.components!==void 0)return this.components;let i="";const o=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const n of Object.values(o)){const u=n.id,a=((p=n.info)==null?void 0:p.manufacturer)||"N/A",c=((m=n.info)==null?void 0:m.model)||"N/A";i+=`(${u}) Hersteller: ${a}, Modell: ${c}
 `}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const o=this.getWildcardTopics("openWB/vehicle/+/info");for(const[p,m]of Object.entries(o)){const n=parseInt(p.split("/")[2]);if(n!==0){const u=m.manufacturer||"N/A",a=m.model||"N/A";i+=`(${n}) Hersteller: ${u}, Modell: ${a}
 `}}return i.trim()}}},x={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T=r("li",null,' Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),H=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),E=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1),K=r("br",null,null,-1),L=r("br",null,null,-1),U=r("br",null,null,-1),j={class:"row justify-content-center"};function $(i,o,p,m,n,u){const a=d("router-link"),c=d("openwb-base-alert"),w=d("FontAwesomeIcon"),g=d("openwb-base-text-input"),b=d("openwb-base-textarea"),v=d("openwb-base-click-button"),y=d("openwb-base-card"),B=d("font-awesome-icon");return h(),f("div",x,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(h(),_(c,{key:0,subtype:"danger"},{default:t(()=>[e(" Du musst der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(h(),f("div",I,[s(c,{subtype:"success"},{default:t(()=>[e(" Du hast der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und kannst Systemberichte senden. ")]),_:1}),s(y,{title:"Systembericht"},C({default:t(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(h(),f("div",N,[s(c,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lies bitte den Hilfetext, der durch Klick auf das "),s(w,{icon:["far","question-circle"]}),e(" angezeigt wird. Nimm das Wiki zur Hilfe. ")]),T,M,H,E])]),_:1}),s(g,{title:"E-Mail",required:"",subtype:"email",modelValue:n.email,"onUpdate:modelValue":o[0]||(o[0]=l=>n.email=l)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(g,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":o[1]||(o[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:t(()=>[e(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),K,e(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")]),_:1},8,["model-value"]),s(b,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":u.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=l=>n.components=l)},{help:t(()=>[e(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind."),L,s(a,{to:"/HardwareInstallation"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":u.vehicleInfo,"onUpdate:modelValue":o[3]||(o[3]=l=>n.vehicles=l)},{help:t(()=>[e(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr)."),U,s(a,{to:"/VehicleConfiguration"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.message,"onUpdate:modelValue":o[4]||(o[4]=l=>n.message=l)},null,8,["modelValue"])])):k("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",j,[s(v,{class:F(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:u.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?k("",!0):(h(),_(c,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. "),s(B,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const X=A(z,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{X as default};
diff --git a/web/settings/assets/System-ebad11a3.js b/web/settings/assets/System-f83e90ce.js
similarity index 98%
rename from web/settings/assets/System-ebad11a3.js
rename to web/settings/assets/System-f83e90ce.js
index 05fb0262f0..01d26e1b40 100644
--- a/web/settings/assets/System-ebad11a3.js
+++ b/web/settings/assets/System-f83e90ce.js
@@ -1 +1 @@
-import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-69ef2d36.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
+import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-3e910ceb.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
diff --git a/web/settings/assets/TestingStore-81bd6c5d.js b/web/settings/assets/TestingStore-60647c44.js
similarity index 99%
rename from web/settings/assets/TestingStore-81bd6c5d.js
rename to web/settings/assets/TestingStore-60647c44.js
index dd3c74365f..42c358cade 100644
--- a/web/settings/assets/TestingStore-81bd6c5d.js
+++ b/web/settings/assets/TestingStore-60647c44.js
@@ -1 +1 @@
-import{C as V}from"./index-69ef2d36.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
+import{C as V}from"./index-3e910ceb.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
diff --git a/web/settings/assets/TimeChargeConfig-9f248c3d.js b/web/settings/assets/TimeChargeConfig-26b3316f.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-9f248c3d.js
rename to web/settings/assets/TimeChargeConfig-26b3316f.js
index 4e3d1d0be4..9dcc241f48 100644
--- a/web/settings/assets/TimeChargeConfig-9f248c3d.js
+++ b/web/settings/assets/TimeChargeConfig-26b3316f.js
@@ -1 +1 @@
-import{C as l}from"./index-69ef2d36.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-3e910ceb.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-032e1c73.js b/web/settings/assets/VehicleConfig-4390a03b.js
similarity index 99%
rename from web/settings/assets/VehicleConfig-032e1c73.js
rename to web/settings/assets/VehicleConfig-4390a03b.js
index 190edf9559..28bcf01ad8 100644
--- a/web/settings/assets/VehicleConfig-032e1c73.js
+++ b/web/settings/assets/VehicleConfig-4390a03b.js
@@ -1 +1 @@
-import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-69ef2d36.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as b,N as a,y as l,z as S,D as n,x as h,a2 as re,a3 as ue,J as y,B as m,K as B,a4 as q,P as N,q as O,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,g,F,_,s){const L=C("openwb-base-alert"),v=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(g.configuration).length==0?(r(),b(L,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(g.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(L,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(g.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(v,{title:"Konfiguration",subtype:"json","model-value":g.configuration,"onUpdate:modelValue":d[0]||(d[0]=W=>s.updateConfiguration(W,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(L,{subtype:"info"},{default:a(()=>[h("pre",null,S(JSON.stringify(g.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-15310f49.js"),["assets/vehicle-15310f49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-69ef2d36.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,d,g,F,_,s){const L=C("openwb-base-heading");return r(),c(y,null,[n(L,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(g.vehicle.name)+'" ',1)]),_:1}),(r(),b(ue(s.myComponent),{vehicleId:g.vehicleId,vehicle:g.vehicle,configuration:g.vehicle.configuration,vehicleType:g.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=v=>s.updateConfiguration(v))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=Z(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+g].name;e.push({value:g,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+g].name;e.push({value:g,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(g=>g.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:g}})},removeChargeTemplateSchedulePlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,g){this.showChargeTemplateSchedulePlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:g}})},removeChargeTemplateTimeChargingPlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,g){this.showChargeTemplateTimeChargingPlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>h("br",null,null,-1)),Ue=f(()=>h("hr",null,null,-1)),Te={key:2},We=f(()=>h("br",null,null,-1)),Le=["innerHTML"],Pe=f(()=>h("hr",null,null,-1)),ye=f(()=>h("br",null,null,-1)),Ae=f(()=>h("br",null,null,-1)),Ee=f(()=>h("br",null,null,-1)),Be={key:3},Fe=f(()=>h("hr",{class:"border-secondary"},null,-1)),qe={key:0},Me={key:1},De=f(()=>h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),Ze={key:0},xe=f(()=>h("br",null,null,-1)),Ne=f(()=>h("br",null,null,-1)),Oe=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Re={key:1},He={key:0},je={key:0},Je={key:3},$e={key:0},Ge={key:1},Qe=f(()=>h("br",null,null,-1)),Xe=f(()=>h("br",null,null,-1)),Ye=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),Ke={key:0},et={key:0},tt={key:0},nt=f(()=>h("hr",null,null,-1)),at=f(()=>h("hr",null,null,-1)),lt=f(()=>h("br",null,null,-1)),it=f(()=>h("br",null,null,-1)),ot=f(()=>h("hr",null,null,-1)),dt=f(()=>h("br",null,null,-1)),rt=f(()=>h("br",null,null,-1)),ut=["onClick"],st={key:0},mt={key:1},ct={key:2},ht={key:3},gt={key:4},pt={key:5},bt={key:4},vt=f(()=>h("hr",null,null,-1)),ft=["onClick"],_t={key:0},wt={key:1},kt={key:2},Vt={key:3},Ct={key:4},St={key:5};function zt(e,d,g,F,_,s){const L=C("openwb-base-modal-dialog"),v=C("font-awesome-icon"),W=C("openwb-base-avatar"),E=C("openwb-base-alert"),U=C("openwb-base-text-input"),M=C("openwb-base-select-input"),I=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),A=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(y,null,[n(L,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",ke,[h("form",Ve,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(v,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(y,null,B(s.vehicleIndexes,i=>(r(),b(A,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),i!==0?(r(),b(U,{key:0,title:"Fahrzeughersteller ","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].manufacturer,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"manufacturer")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),i!==0?(r(),b(U,{key:1,title:"Fahrzeugmodell","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].model,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"model")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht."),ze,l(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),Ue,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!g.installAssistantActive?(r(),c("div",Te,[n(I,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),We,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Le)]),_:1}),Pe])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),ye,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Ee,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Be,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Fe,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Me,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),De,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(y,null,B(s.evTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ze,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),xe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ne,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Oe,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Re,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",je," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",$e,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Ge,[(r(!0),c(y,null,B(s.chargeTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Qe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Xe,Ye]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ke,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",et,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",tt,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),nt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),at,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),it,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),ot,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),dt,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),rt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(y,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",st,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",mt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",ct,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ht,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",gt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ut)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),b(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",pt,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),g.installAssistantActive?m("",!0):(r(),c("div",bt,[vt,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(y,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",wt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",kt,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",Vt,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Ct,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ft)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(U,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",St,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Bt=Z(we,[["render",zt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Bt as default};
+import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-3e910ceb.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as b,N as a,y as l,z as S,D as n,x as h,a2 as re,a3 as ue,J as y,B as m,K as B,a4 as q,P as N,q as O,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,g,F,_,s){const L=C("openwb-base-alert"),v=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(g.configuration).length==0?(r(),b(L,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(g.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(L,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(g.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(v,{title:"Konfiguration",subtype:"json","model-value":g.configuration,"onUpdate:modelValue":d[0]||(d[0]=W=>s.updateConfiguration(W,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(L,{subtype:"info"},{default:a(()=>[h("pre",null,S(JSON.stringify(g.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-39ccb597.js"),["assets/vehicle-39ccb597.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-3e910ceb.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,d,g,F,_,s){const L=C("openwb-base-heading");return r(),c(y,null,[n(L,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(g.vehicle.name)+'" ',1)]),_:1}),(r(),b(ue(s.myComponent),{vehicleId:g.vehicleId,vehicle:g.vehicle,configuration:g.vehicle.configuration,vehicleType:g.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=v=>s.updateConfiguration(v))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=Z(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+g].name;e.push({value:g,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+g].name;e.push({value:g,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(g=>g.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:g}})},removeChargeTemplateSchedulePlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,g){this.showChargeTemplateSchedulePlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:g}})},removeChargeTemplateTimeChargingPlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,g){this.showChargeTemplateTimeChargingPlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>h("br",null,null,-1)),Ue=f(()=>h("hr",null,null,-1)),Te={key:2},We=f(()=>h("br",null,null,-1)),Le=["innerHTML"],Pe=f(()=>h("hr",null,null,-1)),ye=f(()=>h("br",null,null,-1)),Ae=f(()=>h("br",null,null,-1)),Ee=f(()=>h("br",null,null,-1)),Be={key:3},Fe=f(()=>h("hr",{class:"border-secondary"},null,-1)),qe={key:0},Me={key:1},De=f(()=>h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),Ze={key:0},xe=f(()=>h("br",null,null,-1)),Ne=f(()=>h("br",null,null,-1)),Oe=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Re={key:1},He={key:0},je={key:0},Je={key:3},$e={key:0},Ge={key:1},Qe=f(()=>h("br",null,null,-1)),Xe=f(()=>h("br",null,null,-1)),Ye=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),Ke={key:0},et={key:0},tt={key:0},nt=f(()=>h("hr",null,null,-1)),at=f(()=>h("hr",null,null,-1)),lt=f(()=>h("br",null,null,-1)),it=f(()=>h("br",null,null,-1)),ot=f(()=>h("hr",null,null,-1)),dt=f(()=>h("br",null,null,-1)),rt=f(()=>h("br",null,null,-1)),ut=["onClick"],st={key:0},mt={key:1},ct={key:2},ht={key:3},gt={key:4},pt={key:5},bt={key:4},vt=f(()=>h("hr",null,null,-1)),ft=["onClick"],_t={key:0},wt={key:1},kt={key:2},Vt={key:3},Ct={key:4},St={key:5};function zt(e,d,g,F,_,s){const L=C("openwb-base-modal-dialog"),v=C("font-awesome-icon"),W=C("openwb-base-avatar"),E=C("openwb-base-alert"),U=C("openwb-base-text-input"),M=C("openwb-base-select-input"),I=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),A=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(y,null,[n(L,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",ke,[h("form",Ve,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(v,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(y,null,B(s.vehicleIndexes,i=>(r(),b(A,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),i!==0?(r(),b(U,{key:0,title:"Fahrzeughersteller ","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].manufacturer,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"manufacturer")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),i!==0?(r(),b(U,{key:1,title:"Fahrzeugmodell","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].model,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"model")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht."),ze,l(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),Ue,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!g.installAssistantActive?(r(),c("div",Te,[n(I,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),We,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Le)]),_:1}),Pe])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),ye,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Ee,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Be,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Fe,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Me,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),De,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(y,null,B(s.evTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ze,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),xe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ne,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Oe,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Re,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",je," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",$e,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Ge,[(r(!0),c(y,null,B(s.chargeTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Qe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Xe,Ye]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ke,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",et,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",tt,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),nt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),at,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),it,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),ot,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),dt,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),rt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(y,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",st,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",mt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",ct,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ht,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",gt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ut)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),b(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",pt,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),g.installAssistantActive?m("",!0):(r(),c("div",bt,[vt,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(y,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",wt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",kt,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",Vt,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Ct,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ft)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(U,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",St,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Bt=Z(we,[["render",zt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Bt as default};
diff --git a/web/settings/assets/counter-0e19dbc5.js b/web/settings/assets/counter-0e19dbc5.js
new file mode 100644
index 0000000000..3b7f15d671
--- /dev/null
+++ b/web/settings/assets/counter-0e19dbc5.js
@@ -0,0 +1 @@
+import{_ as p,u as o,k as l,l as m,D as t,N as a,y as i,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceMTecCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-mtec-counter"},v={class:"small"};function h(n,e,s,w,x,u){const d=o("openwb-base-heading"),r=o("openwb-base-number-input");return l(),m("div",g,[t(d,null,{default:a(()=>[i(" Einstellungen für M-Tec Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>u.updateConfiguration(c,"configuration.modbus_id"))},{help:a(()=>[i(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const C=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-3069a051.js b/web/settings/assets/counter-3069a051.js
deleted file mode 100644
index 01e4ddd0ec..0000000000
--- a/web/settings/assets/counter-3069a051.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u as t,k as _,l as b,D as o,N as a,y as s,x as i,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceMTecCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-mtec-counter"},v={class:"small"},w=i("span",{class:"text-danger"}," M-Tec Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist. ",-1);function x(n,e,r,M,D,d){const u=t("openwb-base-heading"),c=t("openwb-base-alert"),p=t("openwb-base-number-input");return _(),b("div",h,[o(u,null,{default:a(()=>[s(" Einstellungen für M-Tec Zähler "),i("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:a(()=>[w]),_:1}),o(p,{title:"Modbus ID",required:"","model-value":r.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.modbus_id"))},{help:a(()=>[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const k=m(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/electricity_tariff-070f80df.js b/web/settings/assets/electricity_tariff-4caccbff.js
similarity index 97%
rename from web/settings/assets/electricity_tariff-070f80df.js
rename to web/settings/assets/electricity_tariff-4caccbff.js
index 67a85dbee0..040a506ad7 100644
--- a/web/settings/assets/electricity_tariff-070f80df.js
+++ b/web/settings/assets/electricity_tariff-4caccbff.js
@@ -1 +1 @@
-import{C as p}from"./index-69ef2d36.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
+import{C as p}from"./index-3e910ceb.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
diff --git a/web/settings/assets/index-69ef2d36.js b/web/settings/assets/index-3e910ceb.js
similarity index 96%
rename from web/settings/assets/index-69ef2d36.js
rename to web/settings/assets/index-3e910ceb.js
index 7621be8ec4..7dd7ede780 100644
--- a/web/settings/assets/index-69ef2d36.js
+++ b/web/settings/assets/index-3e910ceb.js
@@ -1 +1 @@
-import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-130a6c94.js"),["assets/Status-130a6c94.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-ad45450b.js"),["assets/ChargeLog-ad45450b.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-5ed52ad8.js"),["assets/Chart-5ed52ad8.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-92f899f4.js"),["assets/GeneralConfig-92f899f4.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-77cf1612.js"),["assets/OptionalComponents-77cf1612.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-ca4f9ae6.js"),["assets/GeneralChargeConfig-ca4f9ae6.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-a54cb6df.js"),["assets/InstantChargeConfig-a54cb6df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-4906be0a.js"),["assets/PVChargeConfig-4906be0a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-9f248c3d.js"),["assets/TimeChargeConfig-9f248c3d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-78436900.js"),["assets/ScheduledChargeConfig-78436900.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-6046586c.js"),["assets/HardwareInstallation-6046586c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-003e3bae.js"),["assets/LoadManagementConfig-003e3bae.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-92c3e709.js"),["assets/ChargePointInstallation-92c3e709.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-032e1c73.js"),["assets/VehicleConfig-032e1c73.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-50261545.js"),["assets/CloudConfig-50261545.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-d5761c85.js"),["assets/MqttBridgeConfig-d5761c85.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-a27684ff.js"),["assets/DebugConfig-a27684ff.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-c0166323.js"),["assets/Support-c0166323.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-88dd4593.js"),["assets/LegalSettings-88dd4593.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-ebad11a3.js"),["assets/System-ebad11a3.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-0dd4c76f.js"),["assets/DataManagement-0dd4c76f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-ed245998.js"),["assets/InstallAssistant-ed245998.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-81bd6c5d.js"),["assets/TestingStore-81bd6c5d.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
+import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-2dd83854.js"),["assets/Status-2dd83854.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-26d874e2.js"),["assets/ChargeLog-26d874e2.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-21256647.js"),["assets/Chart-21256647.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-9cc2f4c2.js"),["assets/GeneralConfig-9cc2f4c2.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-71cfebf9.js"),["assets/OptionalComponents-71cfebf9.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-ecbdf48d.js"),["assets/GeneralChargeConfig-ecbdf48d.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-31e43404.js"),["assets/InstantChargeConfig-31e43404.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-4e2ab231.js"),["assets/PVChargeConfig-4e2ab231.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-26b3316f.js"),["assets/TimeChargeConfig-26b3316f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-d8c705e2.js"),["assets/ScheduledChargeConfig-d8c705e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-a105c95d.js"),["assets/HardwareInstallation-a105c95d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-bf9a36c1.js"),["assets/LoadManagementConfig-bf9a36c1.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-922a298c.js"),["assets/ChargePointInstallation-922a298c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-4390a03b.js"),["assets/VehicleConfig-4390a03b.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-90995ab5.js"),["assets/CloudConfig-90995ab5.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-aa7c26e4.js"),["assets/MqttBridgeConfig-aa7c26e4.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-fab63baa.js"),["assets/DebugConfig-fab63baa.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-34834209.js"),["assets/Support-34834209.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-fe52cd90.js"),["assets/LegalSettings-fe52cd90.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-f83e90ce.js"),["assets/System-f83e90ce.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-8e77f816.js"),["assets/DataManagement-8e77f816.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-cf52f5a9.js"),["assets/InstallAssistant-cf52f5a9.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-60647c44.js"),["assets/TestingStore-60647c44.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
diff --git a/web/settings/assets/vehicle-15310f49.js b/web/settings/assets/vehicle-39ccb597.js
similarity index 97%
rename from web/settings/assets/vehicle-15310f49.js
rename to web/settings/assets/vehicle-39ccb597.js
index b811dbfc13..8da09232bf 100644
--- a/web/settings/assets/vehicle-15310f49.js
+++ b/web/settings/assets/vehicle-39ccb597.js
@@ -1 +1 @@
-import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-69ef2d36.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
+import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-3e910ceb.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/index.html b/web/settings/index.html
index 77fe13ffe3..eae69b4814 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -7,7 +7,7 @@
 	<meta name="viewport" content="width=device-width,initial-scale=1.0">
 	<link rel="icon" href="/openWB/web/settings/favicon.ico">
 	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-69ef2d36.js"></script>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-3e910ceb.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-2f1828d0.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-f2b8aa6f.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-71546160.js">

From b54d8c7c4c92281319cf2ccf729dadbf622e1d10 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 17 Sep 2024 14:35:13 +0200
Subject: [PATCH 050/205] apply id tag even if no vehicle is plugged (#1821)

* apply id tag even if no vehicle is plugged

* flake8
---
 packages/control/chargepoint/chargepoint.py   | 78 +++++++------------
 .../chargepoint/chargepoint_template.py       |  8 +-
 packages/control/chargepoint/rfid.py          | 43 +++++-----
 3 files changed, 56 insertions(+), 73 deletions(-)

diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index feeb476699..268ef3dc4a 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -164,18 +164,16 @@ def _is_autolock_inactive(self) -> Tuple[bool, Optional[str]]:
         return state, message
 
     def _is_manual_lock_inactive(self) -> Tuple[bool, Optional[str]]:
-        if self.data.set.manual_lock and self.template.data.disable_after_unplug or self.data.set.manual_lock is False:
-            if ((self.data.get.rfid or self.data.get.vehicle_id or self.data.set.rfid) in self.template.data.valid_tags
-                    or self.data.set.manual_lock is False):
-                Pub().pub(f"openWB/set/chargepoint/{self.num}/set/manual_lock", False)
-                charging_possible = True
-                message = None
-            else:
-                charging_possible = False
-                message = "Ladepunkt gesperrt, da kein zum Ladepunkt passender ID-Tag gefunden wurde."
+        if (self.data.set.manual_lock is False or
+                (self.data.get.rfid or
+                 self.data.get.vehicle_id or
+                 self.data.set.rfid) in self.template.data.valid_tags):
+            Pub().pub(f"openWB/set/chargepoint/{self.num}/set/manual_lock", False)
+            charging_possible = True
+            message = None
         else:
             charging_possible = False
-            message = "Keine Ladung, da der Ladepunkt gesperrt wurde."
+            message = "Keine Ladung, da der Ladepunkt gesperrt ist."
         return charging_possible, message
 
     def _is_ev_plugged(self) -> Tuple[bool, Optional[str]]:
@@ -195,18 +193,14 @@ def is_charging_possible(self) -> Tuple[bool, Optional[str]]:
                 if charging_possible:
                     charging_possible, message = self._is_loadmanagement_available()
                     if charging_possible:
-                        charging_possible, message = self._is_ev_plugged()
+                        charging_possible, message = self._is_manual_lock_inactive()
                         if charging_possible:
-                            charging_possible, message = self._is_autolock_inactive()
+                            charging_possible, message = self._is_ev_plugged()
                             if charging_possible:
-                                charging_possible, message = self._is_manual_lock_inactive()
+                                charging_possible, message = self._is_autolock_inactive()
         except Exception:
             log.exception("Fehler in der Ladepunkt-Klasse von "+str(self.num))
             return False, "Keine Ladung, da ein interner Fehler aufgetreten ist: "+traceback.format_exc()
-        if self.data.get.rfid and message is not None:
-            message += (f"\n ID-Tag {self.data.get.rfid} kann erst einem EV zugeordnet werden, wenn der Ladepunkt"
-                        " nicht mehr gesperrt ist. Wenn nach dem Scannen nicht innerhalb von 5 Minuten ein Auto"
-                        " angesteckt wird, wird der ID-Tag verworfen.")
         return charging_possible, message
 
     def _process_charge_stop(self) -> None:
@@ -318,32 +312,6 @@ def reset_control_parameter_at_charge_stop(self) -> None:
         control_parameter.imported_instant_charging = self.data.control_parameter.imported_instant_charging
         self.data.control_parameter = control_parameter
 
-    def prepare_cp(self) -> Tuple[int, Optional[str]]:
-        try:
-            # Für Control-Pilot-Unterbrechung set current merken.
-            self.set_current_prev = self.data.set.current
-            self._validate_rfid()
-            charging_possible, message = self.is_charging_possible()
-            if charging_possible:
-                if self.data.get.rfid is not None:
-                    self._link_rfid_to_cp()
-                num, message_ev = self.template.get_ev(self.data.set.rfid,
-                                                       self.data.get.vehicle_id,
-                                                       self.data.config.ev)
-                if message_ev:
-                    message = message_ev
-                if num != -1:
-                    return num, message
-                else:
-                    self.data.get.state_str = message
-            else:
-                num = -1
-            self._process_charge_stop()
-            return num, message
-        except Exception:
-            log.exception("Fehler in der Ladepunkt-Klasse von "+str(self.num))
-            return -1, "Keine Ladung, da ein interner Fehler aufgetreten ist: "+traceback.format_exc()
-
     def initiate_control_pilot_interruption(self):
         """ prüft, ob eine Control Pilot- Unterbrechung erforderlich ist und führt diese durch.
         """
@@ -646,8 +614,19 @@ def update_ev(self, ev_list: Dict[str, Ev]) -> None:
 
     def update(self, ev_list: Dict[str, Ev]) -> None:
         try:
-            vehicle, message = self.prepare_cp()
-            if vehicle != -1:
+            # Für Control-Pilot-Unterbrechung set current merken.
+            self.set_current_prev = self.data.set.current
+            self._validate_rfid()
+            charging_possible, message = self.is_charging_possible()
+            if self.data.get.rfid is not None and self.data.get.plug_state:
+                self._link_rfid_to_cp()
+            vehicle, message_ev = self.template.get_ev(self.data.set.rfid or self.data.get.rfid,
+                                                       self.data.get.vehicle_id,
+                                                       self.data.config.ev)
+            if message_ev:
+                message += message_ev
+
+            if charging_possible:
                 try:
                     charging_ev = self._get_charging_ev(vehicle, ev_list)
                     max_phase_hw = self.get_max_phase_hw()
@@ -714,14 +693,17 @@ def update(self, ev_list: Dict[str, Ev]) -> None:
                     log.exception("Fehler im Prepare-Modul für Ladepunkt "+str(self.num))
                     self.data.control_parameter.submode = "stop"
             else:
-                self._pub_configured_ev(ev_list)
+                self._process_charge_stop()
+                if vehicle != -1:
+                    self._pub_connected_vehicle(ev_list[f"ev{vehicle}"])
+                else:
+                    self._pub_configured_ev(ev_list)
             # SoC nach Anstecken aktualisieren
             if ((self.data.get.plug_state and self.data.set.plug_state_prev is False) or
                     (self.data.get.plug_state is False and self.data.set.plug_state_prev)):
                 Pub().pub(f"openWB/set/vehicle/{self.data.config.ev}/get/force_soc_update", True)
                 log.debug("SoC nach Anstecken")
-            if message is not None and self.data.get.state_str is None:
-                self.set_state_and_log(message)
+            self.set_state_and_log(message)
         except Exception:
             log.exception(f"Fehler bei Ladepunkt {self.num}")
 
diff --git a/packages/control/chargepoint/chargepoint_template.py b/packages/control/chargepoint/chargepoint_template.py
index dd21bd5fb1..15127486a1 100644
--- a/packages/control/chargepoint/chargepoint_template.py
+++ b/packages/control/chargepoint/chargepoint_template.py
@@ -98,13 +98,7 @@ def get_ev(self, rfid: str, vehicle_id: str, assigned_ev: int) -> int:
             if data.data.optional_data.data.rfid.active and (rfid is not None or vehicle_id is not None):
                 vehicle = ev_module.get_ev_to_rfid(rfid, vehicle_id)
                 if vehicle is None:
-                    if len(self.data.valid_tags) == 0:
-                        num = -1
-                        message = (
-                            f"Keine Ladung, da dem ID-Tag {rfid} kein Fahrzeug-Profil zugeordnet werden kann. Eine "
-                            "Freischaltung ist nur mit gültigem ID-Tag möglich.")
-                    else:
-                        num = assigned_ev
+                    num = assigned_ev
                 else:
                     num = vehicle
             else:
diff --git a/packages/control/chargepoint/rfid.py b/packages/control/chargepoint/rfid.py
index d72b5d3fe4..3a00314f0c 100644
--- a/packages/control/chargepoint/rfid.py
+++ b/packages/control/chargepoint/rfid.py
@@ -42,29 +42,36 @@ def _validate_rfid(self) -> None:
         """
         msg = ""
         if self.data.get.rfid is not None:
+            rfid = self.data.get.rfid
             if data.data.optional_data.data.rfid.active:
-                if (self.data.set.log.imported_at_plugtime == 0 or
-                        self.data.set.log.imported_at_plugtime == self.data.get.imported):
-                    rfid = self.data.get.rfid
-                    if self.data.get.rfid_timestamp is None:
-                        self.data.get.rfid_timestamp = timecheck.create_timestamp()
-                        Pub().pub(f"openWB/set/chargepoint/{self.num}/get/rfid_timestamp",
-                                  self.data.get.rfid_timestamp)
-                        return
-                    else:
-                        if (timecheck.check_timestamp(self.data.get.rfid_timestamp, 300) or
-                                self.data.get.plug_state is True):
+                if (rfid in self.template.data.valid_tags or
+                        any(rfid in v.data.tag_id for v in data.data.ev_data.values())):
+                    if (self.data.set.log.imported_at_plugtime == 0 or
+                            self.data.set.log.imported_at_plugtime == self.data.get.imported):
+                        if self.data.get.rfid_timestamp is None:
+                            self.data.get.rfid_timestamp = timecheck.create_timestamp()
+                            Pub().pub(f"openWB/set/chargepoint/{self.num}/get/rfid_timestamp",
+                                      self.data.get.rfid_timestamp)
                             return
                         else:
-                            self.data.get.rfid_timestamp = None
-                            if rfid in self.template.data.valid_tags or len(self.template.data.valid_tags) == 0:
-                                Pub().pub(f"openWB/set/chargepoint/{self.num}/get/rfid_timestamp", None)
-                                msg = "Es ist in den letzten 5 Minuten kein EV angesteckt worden, dem " \
-                                    f"der ID-Tag {rfid} zugeordnet werden kann. Daher wird dieser verworfen."
+                            if timecheck.check_timestamp(self.data.get.rfid_timestamp, 300):
+                                self.set_state_and_log("Wenn nach dem Scannen nicht innerhalb von 5 Minuten ein Auto"
+                                                       " angesteckt wird, wird der ID-Tag verworfen.")
+                                return
+                            elif self.data.get.plug_state is True:
+                                return
                             else:
-                                msg = f"Der ID-Tag {rfid} ist an diesem Ladepunkt nicht gültig."
+                                self.data.get.rfid_timestamp = None
+                                if self.template.data.disable_after_unplug:
+                                    self.data.set.manual_lock = True
+                                    Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/manual_lock", True)
+                                Pub().pub(f"openWB/set/chargepoint/{self.num}/get/rfid_timestamp", None)
+                                msg = ("Es ist in den letzten 5 Minuten kein EV angesteckt worden, dem "
+                                       f"der ID-Tag {rfid} zugeordnet werden kann. Daher wird dieser verworfen.")
+                    else:
+                        msg = "Nach Ladestart wird kein anderer ID-Tag akzeptiert."
                 else:
-                    msg = "Nach Ladestart wird kein anderer ID-Tag akzeptiert."
+                    msg = f"Der ID-Tag {rfid} ist an diesem Ladepunkt nicht gültig."
             else:
                 msg = "Identifikation von Fahrzeugen ist nicht aktiviert."
             self.data.get.rfid = None

From 162c9608ca8f0c29571d86a2a7bd0f771736f071 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Wed, 18 Sep 2024 10:31:37 +0200
Subject: [PATCH 051/205] use ComponentSetup

---
 packages/modules/devices/mqtt/config.py | 24 +++++++++---------------
 1 file changed, 9 insertions(+), 15 deletions(-)

diff --git a/packages/modules/devices/mqtt/config.py b/packages/modules/devices/mqtt/config.py
index 11547b3515..db65b2bf28 100644
--- a/packages/modules/devices/mqtt/config.py
+++ b/packages/modules/devices/mqtt/config.py
@@ -1,3 +1,6 @@
+from modules.common.component_setup import ComponentSetup
+
+
 class MqttConfiguration:
     def __init__(self):
         pass
@@ -20,16 +23,13 @@ def __init__(self):
         pass
 
 
-class MqttBatSetup:
+class MqttBatSetup(ComponentSetup[MqttBatConfiguration]):
     def __init__(self,
                  name: str = "MQTT-Speicher",
                  type: str = "bat",
                  id: int = 0,
                  configuration: MqttBatConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or MqttBatConfiguration()
+        super().__init__(name, type, id, configuration or MqttBatConfiguration())
 
 
 class MqttCounterConfiguration:
@@ -37,16 +37,13 @@ def __init__(self):
         pass
 
 
-class MqttCounterSetup:
+class MqttCounterSetup(ComponentSetup[MqttCounterConfiguration]):
     def __init__(self,
                  name: str = "MQTT-Zähler",
                  type: str = "counter",
                  id: int = 0,
                  configuration: MqttCounterConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or MqttCounterConfiguration()
+        super().__init__(name, type, id, configuration or MqttCounterConfiguration())
 
 
 class MqttInverterConfiguration:
@@ -54,13 +51,10 @@ def __init__(self):
         pass
 
 
-class MqttInverterSetup:
+class MqttInverterSetup(ComponentSetup[MqttInverterConfiguration]):
     def __init__(self,
                  name: str = "MQTT-Wechselrichter",
                  type: str = "inverter",
                  id: int = 0,
                  configuration: MqttInverterConfiguration = None) -> None:
-        self.name = name
-        self.type = type
-        self.id = id
-        self.configuration = configuration or MqttInverterConfiguration()
+        super().__init__(name, type, id, configuration or MqttInverterConfiguration())

From c70b86af66e91e99738a8170210f26c73e1f7902 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 18 Sep 2024 11:13:15 +0200
Subject: [PATCH 052/205] deviating evse current (#1840)

* deviating evse current

* flake8
---
 .../control/algorithm/surplus_controlled.py   | 10 ++++----
 .../algorithm/surplus_controlled_test.py      | 23 ++++++++++++-------
 2 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py
index 22ea742680..1661947791 100644
--- a/packages/control/algorithm/surplus_controlled.py
+++ b/packages/control/algorithm/surplus_controlled.py
@@ -55,7 +55,7 @@ def _set(self,
             current = common.get_current_to_set(cp.data.set.current, available_for_cp, cp.data.set.target_current)
             self._set_loadmangement_message(current, limit, cp, counter)
             limited_current = self._limit_adjust_current(cp, current)
-            limited_current = self._add_unused_evse_current(limited_current, cp)
+            limited_current = self._fix_deviating_evse_current(limited_current, cp)
             common.set_current_counterdiff(
                 cp.data.control_parameter.min_current,
                 limited_current,
@@ -109,13 +109,15 @@ def _limit_adjust_current(self, chargepoint: Chargepoint, new_current: float) ->
             chargepoint.set_state_and_log(msg)
             return max(current, chargepoint.data.control_parameter.min_current)
 
-    def _add_unused_evse_current(self, limited_current, chargepoint: Chargepoint) -> float:
+    def _fix_deviating_evse_current(self, limited_current, chargepoint: Chargepoint) -> float:
         """Wenn Autos nicht die volle Ladeleistung nutzen, wird unnötig eingespeist. Dann kann um den noch nicht
-        genutzten Soll-Strom hoch geregelt werden."""
+        genutzten Soll-Strom hochgeregelt werden. Wenn Fahrzeuge entgegen der Norm mehr Ladeleistung beziehen, als
+        freigegeben, wird entsprechend weniger freigegeben, da sonst uU die untere Grenze für die Abschaltschwelle
+        nicht erreicht wird."""
         evse_current = chargepoint.data.get.evse_current
         if evse_current:
             formatted_evse_current = evse_current if evse_current < 32 else evse_current / 100
-            current_with_offset = limited_current + max(formatted_evse_current - max(chargepoint.data.get.currents), 0)
+            current_with_offset = limited_current + formatted_evse_current - max(chargepoint.data.get.currents)
             current = min(current_with_offset, chargepoint.data.control_parameter.required_current)
             if current != limited_current:
                 log.debug(f"Ungenutzten Soll-Strom aufschlagen ergibt {current}A.")
diff --git a/packages/control/algorithm/surplus_controlled_test.py b/packages/control/algorithm/surplus_controlled_test.py
index c20186ca09..7eb5425ea0 100644
--- a/packages/control/algorithm/surplus_controlled_test.py
+++ b/packages/control/algorithm/surplus_controlled_test.py
@@ -97,23 +97,30 @@ def test_set_required_current_to_max(phases: int,
 
 
 @pytest.mark.parametrize(
-    "evse_current, limited_current, expected_current",
+    "evse_current, limited_current, required_current, expected_current",
     [
-        pytest.param(None, 6, 6, id="Kein Soll-Strom aus der EVSE ausgelesen"),
-        pytest.param(15, 15, 15, id="Auto lädt mit Soll-Stromstärke"),
-        pytest.param(15.5, 15.5, 16, id="Auto lädt mit weniger als Soll-Stromstärke"),
-        pytest.param(16, 16, 16,
+        pytest.param(None, 6, 16, 6, id="Kein Soll-Strom aus der EVSE ausgelesen"),
+        pytest.param(15, 15, 16, 15, id="Auto lädt mit Soll-Stromstärke"),
+        pytest.param(14.5, 14.5, 14.5, 14, id="Auto lädt mit mehr als Soll-Stromstärke"),
+        pytest.param(15.5, 15.5, 16, 16, id="Auto lädt mit weniger als Soll-Stromstärke"),
+        pytest.param(16, 16, 16, 16,
                      id="Auto lädt mit weniger als Soll-Stromstärke, aber EVSE-Begrenzung ist erreicht.")
     ])
-def test_add_unused_evse_current(evse_current: float, limited_current: float, expected_current: float):
+def test_add_unused_evse_current(evse_current: float,
+                                 limited_current: float,
+                                 required_current: float,
+                                 expected_current: float):
     # setup
     c = Chargepoint(0, None)
     c.data.get.currents = [15]*3
     c.data.get.evse_current = evse_current
-    c.data.control_parameter.required_current = 16
+    c.data.control_parameter.required_current = required_current
 
     # execution
-    current = SurplusControlled()._add_unused_evse_current(limited_current, c)
+    current = SurplusControlled()._fix_deviating_evse_current(limited_current, c)
+
+    # assertion
+    assert current == expected_current
 
     # evaluation
     assert current == expected_current

From 19765ac22c2e3eda5c879d7f62900e50e4df346c Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 18 Sep 2024 11:13:51 +0200
Subject: [PATCH 053/205] precise phase switch conditions for 2 phase charging
 (#1875)

---
 packages/control/chargepoint/chargepoint.py | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index 268ef3dc4a..64640a3fcc 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -336,6 +336,9 @@ def initiate_control_pilot_interruption(self):
         except Exception:
             log.exception("Fehler in der Ladepunkt-Klasse von "+str(self.num))
 
+    def check_deviating_contactor_states(self, phase_a: int, phase_b: int) -> bool:
+        return (phase_a == 1 and phase_b in [2, 3]) or (phase_b == 1 and phase_a in [2, 3])
+
     def _is_phase_switch_required(self) -> bool:
         phase_switch_required = False
         # Manche EVs brauchen nach der Umschaltung mehrere Zyklen, bis sie mit den drei Phasen laden. Dann darf
@@ -343,9 +346,10 @@ def _is_phase_switch_required(self) -> bool:
         if (self.data.control_parameter.state == ChargepointState.CHARGING_ALLOWED or
                 self.data.control_parameter.state == ChargepointState.PHASE_SWITCH_DELAY_EXPIRED):
             # Nach Ablauf der Laden aktiv halten Zeit, sollte mit der vorgegebenen Phasenzahl geladen werden.
-            if ((self.data.set.phases_to_use != self.data.get.phases_in_use or
+            if ((self.check_deviating_contactor_states(self.data.set.phases_to_use, self.data.get.phases_in_use) or
                 # Vorgegebene Phasenzahl hat sich geändert
-                 self.data.set.phases_to_use != self.data.control_parameter.phases) and
+                 self.check_deviating_contactor_states(self.data.set.phases_to_use,
+                                                       self.data.control_parameter.phases)) and
                 # Wenn ein Soll-Strom vorgegeben ist, muss das Auto auch laden, damit umgeschaltet wird, sonst
                 # wird zB bei automatischer Umschaltung ständig versucht auf 1 Phase zurück zu schalten, wenn
                 # das Auto bei 3 Phasen voll ist.
@@ -354,9 +358,10 @@ def _is_phase_switch_required(self) -> bool:
                      self.data.set.current == 0)):
                 phase_switch_required = True
         if (self.data.control_parameter.state == ChargepointState.NO_CHARGING_ALLOWED and
-            (self.data.set.phases_to_use != self.data.get.phases_in_use or
+            (self.check_deviating_contactor_states(self.data.set.phases_to_use, self.data.get.phases_in_use) or
                 # Vorgegebene Phasenzahl hat sich geändert
-             self.data.set.phases_to_use != self.data.control_parameter.phases) and
+             self.check_deviating_contactor_states(self.data.set.phases_to_use,
+                                                   self.data.control_parameter.phases)) and
                 # Wenn der Ladevorgang gestartet wird, muss vor dem ersten Laden umgeschaltet werden.
                 self.data.set.current != 0):
             phase_switch_required = True

From aa6041a344ae4ad22e38cec78b69ddce8a4cdf9b Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 18 Sep 2024 11:15:19 +0200
Subject: [PATCH 054/205] start pv charging immediately after phase switch
 (#1874)

---
 packages/control/chargepoint/chargepoint.py | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index 64640a3fcc..cf1001cd1d 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -386,9 +386,7 @@ def _is_phase_switch_required(self) -> bool:
 
     STOP_CHARGING = ", dafür wird die Ladung unterbrochen."
 
-    def initiate_phase_switch(self):
-        """prüft, ob eine Phasenumschaltung erforderlich ist und führt diese durch.
-        """
+    def check_phase_switch_completed(self):
         try:
             evu_counter = data.data.counter_all_data.get_evu_counter()
             charging_ev = self.data.set.charging_ev_data
@@ -428,6 +426,15 @@ def initiate_phase_switch(self):
             if self.data.control_parameter.state == ChargepointState.WAIT_FOR_USING_PHASES:
                 if phase_switch.phase_switch_thread_alive(self.num) is False:
                     self.data.control_parameter.state = ChargepointState.CHARGING_ALLOWED
+        except Exception:
+            log.exception("Fehler in der Ladepunkt-Klasse von "+str(self.num))
+
+    def initiate_phase_switch(self):
+        """prüft, ob eine Phasenumschaltung erforderlich ist und führt diese durch.
+        """
+        try:
+            evu_counter = data.data.counter_all_data.get_evu_counter()
+            charging_ev = self.data.set.charging_ev_data
             # Wenn noch kein Eintrag im Protokoll erstellt wurde, wurde noch nicht geladen und die Phase kann noch
             # umgeschaltet werden.
             if (not charging_ev.ev_template.data.prevent_phase_switch or
@@ -655,6 +662,7 @@ def update(self, ev_list: Dict[str, Ev]) -> None:
                     self.set_control_parameter(submode, required_current)
                     self.set_required_currents(required_current)
                     self.handle_less_power()
+                    self.check_phase_switch_completed()
 
                     if charging_ev.chargemode_changed:
                         data.data.counter_all_data.get_evu_counter().reset_switch_on_off(

From 134b827aee2e243b3f9a135ca6a86b4213cad426 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 18 Sep 2024 11:26:23 +0200
Subject: [PATCH 055/205] Bump cryptography from 42.0.4 to 43.0.1 (#1867)

Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.4 to 43.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/42.0.4...43.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 requirements.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements.txt b/requirements.txt
index b149fa5b43..78cb018b81 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -14,7 +14,7 @@ pkce==1.0.3
 # skodaconnect==1.3.4
 evdev==1.5.0
 #telnetlib3==2.0.2
-cryptography==42.0.4
+cryptography==43.0.1
 msal==1.27.0
 python-dateutil==2.8.2
 umodbus==1.0.4

From 8dc0024cf5301955ec8d67241efba54fe0675b80 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Mon, 23 Sep 2024 08:19:36 +0200
Subject: [PATCH 056/205] Independent duo cps (#1894)

* independent duo cps

* fix

* fix

* dc
---
 .../external_openwb/chargepoint_module.py     |  6 +--
 .../openwb_dc_adapter/chargepoint_module.py   |  4 +-
 .../openwb_pro/chargepoint_module.py          |  6 +--
 .../smartwb/chargepoint_module.py             |  4 +-
 packages/modules/common/component_context.py  |  8 ++-
 .../internal_chargepoint_handler/clients.py   |  5 +-
 .../internal_chargepoint_handler.py           | 50 ++++++++++++-------
 7 files changed, 53 insertions(+), 30 deletions(-)

diff --git a/packages/modules/chargepoints/external_openwb/chargepoint_module.py b/packages/modules/chargepoints/external_openwb/chargepoint_module.py
index f9b29f1bc1..f767cd2ed2 100644
--- a/packages/modules/chargepoints/external_openwb/chargepoint_module.py
+++ b/packages/modules/chargepoints/external_openwb/chargepoint_module.py
@@ -22,7 +22,7 @@ def __init__(self, config: OpenWBSeries) -> None:
     def set_current(self, current: float) -> None:
         if self.client_error_context.error_counter_exceeded():
             current = 0
-        with SingleComponentUpdateContext(self.fault_state, False):
+        with SingleComponentUpdateContext(self.fault_state, update_always=False):
             with self.client_error_context:
                 if self.config.configuration.duo_num == 0:
                     pub.pub_single("openWB/set/internal_chargepoint/0/data/set_current", current,
@@ -59,7 +59,7 @@ def get_values(self) -> None:
                 self.client_error_context.reset_error_counter()
 
     def switch_phases(self, phases_to_use: int, duration: int) -> None:
-        with SingleComponentUpdateContext(self.fault_state, False):
+        with SingleComponentUpdateContext(self.fault_state, update_always=False):
             with self.client_error_context:
                 pub.pub_single(
                     f"openWB/set/internal_chargepoint/{self.config.configuration.duo_num}/data/phases_to_use",
@@ -74,7 +74,7 @@ def switch_phases(self, phases_to_use: int, duration: int) -> None:
                 time.sleep(6+duration-1)
 
     def interrupt_cp(self, duration: int) -> None:
-        with SingleComponentUpdateContext(self.fault_state, False):
+        with SingleComponentUpdateContext(self.fault_state, update_always=False):
             with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 if (self.config.configuration.duo_num == 1):
diff --git a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
index 006e7d984c..16c98974d0 100644
--- a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
+++ b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py
@@ -48,7 +48,7 @@ def __init__(self, config: OpenWBDcAdapter) -> None:
                 "DC-Laden muss durch den Support freigeschaltet werden. Bitte nehme Kontakt mit dem Support auf.")
         self.efficiency = None
 
-        with SingleComponentUpdateContext(self.fault_state, False):
+        with SingleComponentUpdateContext(self.fault_state, update_always=False):
             with self.client_error_context:
                 self.__session.post(
                     'http://' + self.config.configuration.ip_address + '/connect.php',
@@ -57,7 +57,7 @@ def __init__(self, config: OpenWBDcAdapter) -> None:
     def set_current(self, current: float) -> None:
         if self.client_error_context.error_counter_exceeded():
             current = 0
-        with SingleComponentUpdateContext(self.fault_state, False):
+        with SingleComponentUpdateContext(self.fault_state, update_always=False):
             with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 raw_current = self.subtract_conversion_loss_from_current(current)
diff --git a/packages/modules/chargepoints/openwb_pro/chargepoint_module.py b/packages/modules/chargepoints/openwb_pro/chargepoint_module.py
index 317c3a8515..5b973636f3 100644
--- a/packages/modules/chargepoints/openwb_pro/chargepoint_module.py
+++ b/packages/modules/chargepoints/openwb_pro/chargepoint_module.py
@@ -31,7 +31,7 @@ def __init__(self, config: OpenWBPro) -> None:
             f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True)
         self.old_chargepoint_state = ChargepointState()
 
-        with SingleComponentUpdateContext(self.fault_state, False):
+        with SingleComponentUpdateContext(self.fault_state, update_always=False):
             with self.client_error_context:
                 self.__session.post(
                     'http://' + self.config.configuration.ip_address + '/connect.php',
@@ -40,7 +40,7 @@ def __init__(self, config: OpenWBPro) -> None:
     def set_current(self, current: float) -> None:
         if self.client_error_context.error_counter_exceeded():
             current = 0
-        with SingleComponentUpdateContext(self.fault_state, False):
+        with SingleComponentUpdateContext(self.fault_state, update_always=False):
             with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 self.__session.post('http://'+ip_address+'/connect.php', data={'ampere': current})
@@ -100,7 +100,7 @@ def validate_values(self, chargepoint_state: ChargepointState) -> None:
             raise ValueError(self.WRONG_PLUG_STATE)
 
     def switch_phases(self, phases_to_use: int, duration: int) -> None:
-        with SingleComponentUpdateContext(self.fault_state, False):
+        with SingleComponentUpdateContext(self.fault_state, update_always=False):
             with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 response = self.__session.get('http://'+ip_address+'/connect.php')
diff --git a/packages/modules/chargepoints/smartwb/chargepoint_module.py b/packages/modules/chargepoints/smartwb/chargepoint_module.py
index 25752b8ec3..4ce93b33d0 100644
--- a/packages/modules/chargepoints/smartwb/chargepoint_module.py
+++ b/packages/modules/chargepoints/smartwb/chargepoint_module.py
@@ -26,7 +26,7 @@ def __init__(self, config: SmartWB) -> None:
     def set_current(self, current: float) -> None:
         if self.client_error_context.error_counter_exceeded():
             current = 0
-        with SingleComponentUpdateContext(self.fault_state, False):
+        with SingleComponentUpdateContext(self.fault_state, update_always=False):
             with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 timeout = self.config.configuration.timeout
@@ -101,7 +101,7 @@ def clear_rfid(self) -> None:
                 req.get_http_session().get('http://'+ip_address+'/clearRfid', timeout=(timeout, None))
 
     def interrupt_cp(self, duration: int) -> None:
-        with SingleComponentUpdateContext(self.fault_state, False):
+        with SingleComponentUpdateContext(self.fault_state, update_always=False):
             with self.client_error_context:
                 ip_address = self.config.configuration.ip_address
                 timeout = self.config.configuration.timeout
diff --git a/packages/modules/common/component_context.py b/packages/modules/common/component_context.py
index 60e45734bd..534bc25416 100644
--- a/packages/modules/common/component_context.py
+++ b/packages/modules/common/component_context.py
@@ -17,9 +17,10 @@ class SingleComponentUpdateContext:
                 component.update()
     """
 
-    def __init__(self, fault_state: FaultState, update_always: bool = True):
+    def __init__(self, fault_state: FaultState, update_always: bool = True, reraise: bool = False):
         self.__fault_state = fault_state
         self.update_always = update_always
+        self.reraise = reraise
 
     def __enter__(self):
         log.debug("Update Komponente ['"+self.__fault_state.component_info.name+"']")
@@ -29,7 +30,10 @@ def __enter__(self):
 
     def __exit__(self, exception_type, exception, exception_traceback) -> bool:
         MultiComponentUpdateContext.override_subcomponent_state(self.__fault_state, exception, self.update_always)
-        return True
+        if self.reraise is False:
+            return True
+        else:
+            return False
 
 
 class MultiComponentUpdateContext:
diff --git a/packages/modules/internal_chargepoint_handler/clients.py b/packages/modules/internal_chargepoint_handler/clients.py
index 011963c772..8b4d3ebc25 100644
--- a/packages/modules/internal_chargepoint_handler/clients.py
+++ b/packages/modules/internal_chargepoint_handler/clients.py
@@ -122,7 +122,10 @@ def get_modbus_client(local_charge_point_num: int,
             # Don't create two clients for one source!
             with ModifyLoglevelContext(log, logging.DEBUG):
                 log.debug("LP1 gleiches Device wie LP0")
-            serial_client = created_client_handler.client
+            if created_client_handler:
+                serial_client = created_client_handler.client
+            else:
+                serial_client = ModbusSerialClient_(resolved_devices[0])
             evse_ids = EVSE_ID_ONE_BUS_CP1
     elif counter > 1:
         with ModifyLoglevelContext(log, logging.DEBUG):
diff --git a/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py b/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py
index 8c004ca50a..2c096726df 100644
--- a/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py
+++ b/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py
@@ -145,24 +145,34 @@ def __init__(self,
         self.event_start = event_start
         self.event_stop = event_stop
         self.heartbeat = False
-        fault_state_info_cp0 = FaultState(
+        self.fault_state_info_cp0 = FaultState(
             ComponentInfo(hierarchy_id_cp0, "Interner Ladepunkt 0", "chargepoint", parent_id=parent_cp0,
                           parent_hostname=global_data.parent_ip))
         fault_state_info_cp1 = FaultState(
             ComponentInfo(hierarchy_id_cp1, "Interner Ladepunkt 1", "chargepoint", parent_id=parent_cp1,
                           parent_hostname=global_data.parent_ip))
-        with SingleComponentUpdateContext(fault_state_info_cp0):
-            # Allgemeine Fehlermeldungen an LP 1:
-            self.cp0_client_handler = client_factory(0, fault_state_info_cp0)
-            self.cp0 = HandlerChargepoint(self.cp0_client_handler, 0, mode, global_data, parent_cp0, hierarchy_id_cp0)
+        with SingleComponentUpdateContext(self.fault_state_info_cp0, reraise=True):
             self.init_gpio()
-        if mode == InternalChargepointMode.DUO.value:
-            with SingleComponentUpdateContext(fault_state_info_cp1):
-                log.debug("Zweiter Ladepunkt für Duo konfiguriert.")
-                self.cp1_client_handler = client_factory(1, fault_state_info_cp1, self.cp0_client_handler)
-                self.cp1 = HandlerChargepoint(self.cp1_client_handler, 1, mode,
-                                              global_data, parent_cp1, hierarchy_id_cp1)
-        else:
+        try:
+            with SingleComponentUpdateContext(self.fault_state_info_cp0, reraise=True):
+                # Allgemeine Fehlermeldungen an LP 1:
+                self.cp0_client_handler = client_factory(0, self.fault_state_info_cp0)
+                self.cp0 = HandlerChargepoint(self.cp0_client_handler, 0, mode,
+                                              global_data, parent_cp0, hierarchy_id_cp0)
+        except Exception:
+            self.cp0_client_handler = None
+            self.cp0 = None
+        try:
+            if mode == InternalChargepointMode.DUO.value:
+                with SingleComponentUpdateContext(fault_state_info_cp1, reraise=True):
+                    log.debug("Zweiter Ladepunkt für Duo konfiguriert.")
+                    self.cp1_client_handler = client_factory(1, fault_state_info_cp1, self.cp0_client_handler)
+                    self.cp1 = HandlerChargepoint(self.cp1_client_handler, 1, mode,
+                                                  global_data, parent_cp1, hierarchy_id_cp1)
+            else:
+                self.cp1 = None
+                self.cp1_client_handler = None
+        except Exception:
             self.cp1 = None
             self.cp1_client_handler = None
 
@@ -190,22 +200,28 @@ def _loop():
                 data = copy.deepcopy(SubData.internal_chargepoint_data)
                 log.debug(data)
                 log.setLevel(SubData.system_data["system"].data["debug_level"])
-                self.cp0.update(data["global_data"], data["cp0"].data, data["rfid_data"])
+                if self.cp0:
+                    self.cp0.update(data["global_data"], data["cp0"].data, data["rfid_data"])
                 if self.cp1:
                     self.cp1.update(data["global_data"], data["cp1"].data, data["rfid_data"])
                 time.sleep(1.1)
-        with SingleComponentUpdateContext(self.cp0.module.fault_state):
-            # Allgemeine Fehlermeldungen an LP 1:
-            if self.cp1_client_handler is None:
+        with SingleComponentUpdateContext(self.fault_state_info_cp0):
+            # Allgemeine Fehlermeldungen an LP 1
+            if self.cp0_client_handler is not None and self.cp1_client_handler is None:
                 with self.cp0_client_handler.client:
                     _loop()
+            elif self.cp0_client_handler is None and self.cp1_client_handler is not None:
+                with self.cp1_client_handler.client:
+                    _loop()
             elif self.cp0_client_handler.client == self.cp1_client_handler.client:
                 with self.cp0_client_handler.client:
                     _loop()
-            else:
+            elif self.cp0_client_handler is not None and self.cp1_client_handler is not None:
                 with self.cp0_client_handler.client:
                     with self.cp1_client_handler.client:
                         _loop()
+            else:
+                log.error("Kein ClientHandler vorhanden. Beende.")
 
 
 class HandlerChargepoint:

From 7343e642080c63aa5d19306a91e38ac0fb14383f Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Mon, 23 Sep 2024 08:33:52 +0200
Subject: [PATCH 057/205] consider min current for calculation of scheduled
 charging duration (#1886)

---
 packages/control/ev.py                      | 7 +++++--
 packages/control/ev_charge_template_test.py | 2 +-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/packages/control/ev.py b/packages/control/ev.py
index 02cf0884d4..d43ec57880 100644
--- a/packages/control/ev.py
+++ b/packages/control/ev.py
@@ -779,7 +779,7 @@ def search_plan(self,
                                      f"oder im Plan {plan.name} als Begrenzung Energie einstellen.")
                 try:
                     duration, missing_amount = self.calculate_duration(
-                        plan, soc, battery_capacity, used_amount, phases, charging_type)
+                        plan, soc, battery_capacity, used_amount, phases, charging_type, ev_template)
                     remaining_time, missed_date_today = timecheck.check_duration(plan, duration, self.BUFFER)
                     if remaining_time:
                         # Wenn der Zeitpunkt vorüber, aber noch nicht abgelaufen ist oder
@@ -818,7 +818,8 @@ def calculate_duration(self,
                            battery_capacity: float,
                            used_amount: float,
                            phases: int,
-                           charging_type: str) -> Tuple[float, float]:
+                           charging_type: str,
+                           ev_template: EvTemplate) -> Tuple[float, float]:
         if plan.limit.selected == "soc":
             if soc:
                 missing_amount = ((plan.limit.soc_scheduled - soc) / 100) * battery_capacity
@@ -827,6 +828,8 @@ def calculate_duration(self,
         else:
             missing_amount = plan.limit.amount - used_amount
         current = plan.current if charging_type == ChargingType.AC.value else plan.dc_current
+        current = max(current, ev_template.data.min_current if charging_type ==
+                      ChargingType.AC.value else ev_template.data.dc_min_current)
         duration = missing_amount/(current * phases*230) * 3600
         return duration, missing_amount
 
diff --git a/packages/control/ev_charge_template_test.py b/packages/control/ev_charge_template_test.py
index dea3c8a24a..0c46ea6b2a 100644
--- a/packages/control/ev_charge_template_test.py
+++ b/packages/control/ev_charge_template_test.py
@@ -172,7 +172,7 @@ def test_calculate_duration(selected: str, phases: int, expected_duration: float
     plan = ScheduledChargingPlan()
     plan.limit.selected = selected
     # execution
-    duration, missing_amount = ct.calculate_duration(plan, 60, 45000, 200, phases, ChargingType.AC.value)
+    duration, missing_amount = ct.calculate_duration(plan, 60, 45000, 200, phases, ChargingType.AC.value, EvTemplate())
 
     # evaluation
     assert duration == expected_duration

From fa864b37cd844b104d0f226bb2c2f2e26631841b Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Mon, 23 Sep 2024 08:34:34 +0200
Subject: [PATCH 058/205] consider bat regulate up == True in case of automatic
 phase switch 3p1p (#1859)

* allow phase switch in switch off delay if phases in and to use don't match

* consider bat regulate up == True in case of automatic phase switch 3p1p

* linting
---
 packages/control/bat_all.py                 | 22 ++++++++++-----------
 packages/control/bat_all_test.py            | 13 ++++++------
 packages/control/chargepoint/chargepoint.py |  3 ++-
 packages/control/counter.py                 |  8 ++------
 4 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/packages/control/bat_all.py b/packages/control/bat_all.py
index dc8214b756..b4aa40021b 100644
--- a/packages/control/bat_all.py
+++ b/packages/control/bat_all.py
@@ -237,22 +237,22 @@ def _get_charging_power_left(self):
                     charging_power_left = self.data.get.power
                 else:
                     if config.bat_power_discharge_active:
-                        if self.data.get.power > 0:
-                            # Speicher wird geladen
-                            charging_power_left = self.data.get.power + config.bat_power_discharge
-                        else:
-                            if self.data.get.power * -1 >= config.bat_power_discharge:
-                                # Wenn der Speicher mit mehr als der erlaubten Entladeleistung entladen wird, muss das
-                                # vom Überschuss subtrahiert werden.
-                                charging_power_left = config.bat_power_discharge + self.data.get.power
-                                log.debug(f"Erlaubte Entlade-Leistung nutzen {charging_power_left}W")
-                            else:
-                                charging_power_left = self.data.get.power + config.bat_power_discharge
+                        # Wenn der Speicher mit mehr als der erlaubten Entladeleistung entladen wird, muss das
+                        # vom Überschuss subtrahiert werden.
+                        # Wenn der Speicher mit weniger als der erlaubten Entladeleistung entladen wird
+                        charging_power_left = config.bat_power_discharge + self.data.get.power
+                        log.debug(f"Erlaubte Entlade-Leistung nutzen {charging_power_left}W")
                     else:
                         # Speicher sollte weder ge- noch entladen werden.
                         charging_power_left = self.data.get.power
             # Keine Ladeleistung vom Speicher für Fahrzeuge einplanen, wenn max
             # Ausgangsleistung erreicht ist.
+            if self.data.set.regulate_up:
+                # 100(50 reichen auch?) W Überschuss übrig lassen, damit der Speicher bis zur max Ladeleistung
+                # hochregeln kann.
+                log.debug("Damit der Speicher hochregeln kann, muss unabhängig vom eingestellten Regelmodus "
+                          "Einspeisung erzeugt werden.")
+                charging_power_left -= 100
             self.data.set.charging_power_left = self._limit_bat_power_discharge(charging_power_left)
         except Exception:
             log.exception("Fehler im Bat-Modul")
diff --git a/packages/control/bat_all_test.py b/packages/control/bat_all_test.py
index 941e2c2005..5d23fe6532 100644
--- a/packages/control/bat_all_test.py
+++ b/packages/control/bat_all_test.py
@@ -88,21 +88,22 @@ class Params:
 
 
 cases = [
-    Params("Speicher, Speicher lädt", PvCharging(bat_mode="bat_mode"), 500, 90, 0, True),
-    Params("Speicher, Speicher entlädt", PvCharging(bat_mode="bat_mode"), -500, 90, -500, True),
+    Params("Speicher, Speicher lädt", PvCharging(bat_mode="bat_mode"), 500, 90, -100, True),
+    Params("Speicher, Speicher entlädt", PvCharging(bat_mode="bat_mode"), -500, 90, -600, True),
     Params("Speicher, Speicher ist voll", PvCharging(bat_mode="bat_mode"), 0, 100, 0, False),
     Params("EV, Speicher lädt", PvCharging(bat_mode="ev_mode"), 500, 90, 500, False),
     Params("EV, Speicher entlädt", PvCharging(bat_mode="ev_mode"), -500, 90, -500, False),
     Params("EV, Speicher ist voll", PvCharging(bat_mode="ev_mode"), 0, 100, 0, False),
     Params("Mindest-SoC, SoC nicht erreicht, Speicher entlädt",
-           PvCharging(bat_mode="min_soc_bat_mode"), -500, 40, -500, True),
-    Params("Mindest-SoC, SoC nicht erreicht, Speicher lädt", PvCharging(bat_mode="min_soc_bat_mode"), 500, 40, 0, True),
+           PvCharging(bat_mode="min_soc_bat_mode"), -500, 40, -600, True),
+    Params("Mindest-SoC, SoC nicht erreicht, Speicher lädt",
+           PvCharging(bat_mode="min_soc_bat_mode"), 500, 40, -100, True),
     Params("Mindest-SoC, SoC nicht erreicht, Speicher-Reserve, Speicher entlädt",
            PvCharging(bat_mode="min_soc_bat_mode", bat_power_reserve=2000, bat_power_reserve_active=True),
-           -500, 40, -500, True),
+           -500, 40, -600, True),
     Params("Mindest-SoC, SoC nicht erreicht, Speicher-Reserve nicht ausgenutzt, Speicher lädt",
            PvCharging(bat_mode="min_soc_bat_mode", bat_power_reserve=2000, bat_power_reserve_active=True),
-           1600, 40, -400, True),
+           1600, 40, -500, True),
     Params("Mindest-SoC, SoC nicht erreicht, Speicher-Reserve ausgenutzt, Speicher lädt",
            PvCharging(bat_mode="min_soc_bat_mode", bat_power_reserve=2000, bat_power_reserve_active=True),
            2200, 40, 200, False),
diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index cf1001cd1d..f4998fb97b 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -344,7 +344,8 @@ def _is_phase_switch_required(self) -> bool:
         # Manche EVs brauchen nach der Umschaltung mehrere Zyklen, bis sie mit den drei Phasen laden. Dann darf
         # nicht zwischendurch eine neue Umschaltung getriggert werden.
         if (self.data.control_parameter.state == ChargepointState.CHARGING_ALLOWED or
-                self.data.control_parameter.state == ChargepointState.PHASE_SWITCH_DELAY_EXPIRED):
+                self.data.control_parameter.state == ChargepointState.PHASE_SWITCH_DELAY_EXPIRED or
+                self.data.control_parameter.state == ChargepointState.SWITCH_OFF_DELAY):
             # Nach Ablauf der Laden aktiv halten Zeit, sollte mit der vorgegebenen Phasenzahl geladen werden.
             if ((self.check_deviating_contactor_states(self.data.set.phases_to_use, self.data.get.phases_in_use) or
                 # Vorgegebene Phasenzahl hat sich geändert
diff --git a/packages/control/counter.py b/packages/control/counter.py
index eb5a8f700e..a940d27292 100644
--- a/packages/control/counter.py
+++ b/packages/control/counter.py
@@ -220,12 +220,8 @@ def get_control_range_state(self, feed_in_yield: int) -> ControlRangeState:
 
     def _control_range_offset(self):
         if data.data.bat_all_data.data.set.regulate_up:
-            # 100(50 reichen auch?) W Überschuss übrig lassen, damit der Speicher bis zur max Ladeleistung hochregeln
-            # kann. Regelmodus ignorieren, denn mit Regelmodus Bezug kann keine Einspeisung für den Speicher erzeugt
-            # werden.
-            log.debug("Damit der Speicher hochregeln kann, muss unabhängig vom eingestellten Regelmodus Einspeisung"
-                      " erzeugt werden.")
-            return - 100
+            # Regelmodus ignorieren, denn mit Regelmodus Bezug kann keine Einspeisung für den Speicher erzeugt werden.
+            return 0
         control_range_low = data.data.general_data.data.chargemode_config.pv_charging.control_range[0]
         control_range_high = data.data.general_data.data.chargemode_config.pv_charging.control_range[1]
         control_range_center = control_range_high - (control_range_high - control_range_low) / 2

From b6e982f19df7203fc1ad95640a0d2036908b8a94 Mon Sep 17 00:00:00 2001
From: pama87 <patrick.mayer@openwb.de>
Date: Wed, 31 Jul 2024 08:29:31 +0200
Subject: [PATCH 059/205] datastore_update

---
 packages/helpermodules/update_config.py | 343 +++++++++++++++++++++++-
 1 file changed, 342 insertions(+), 1 deletion(-)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 046959cd5c..c41f583a15 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -39,7 +39,7 @@
 from modules.display_themes.cards.config import CardsDisplayTheme
 from modules.ripple_control_receivers.gpio.config import GpioRcr
 from modules.web_themes.standard_legacy.config import StandardLegacyWebTheme
-from modules.devices.good_we.version import GoodWeVersion
+from modules.devices.good_we.good_we.version import GoodWeVersion
 
 log = logging.getLogger(__name__)
 
@@ -1736,3 +1736,344 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: config_payload}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 59)
+
+
+    def upgrade_datastore_59(self) -> None:
+        def upgrade(topic: str, payload) -> Optional[dict]:
+            if re.search("openWB/system/device/[0-9]+/config", topic) is not None:
+                device = decode_payload(payload)
+                # Gruppe hinzufügen
+                if (device.get("type") == "openwb_bat_kit" or device.get("type") == "openwb_evu_kit"
+                        or device.get("type") == "openwb_flex" or device.get("type") == "openwb_pv_kit"):
+                    if "group" not in device:
+                        updated_payload = device
+                        updated_payload.update({"group": 'openWB'})
+                        return {topic: updated_payload}
+                if (device.get("type") == "http" or device.get("type") == "json" or device.get("type") == "mqtt"
+                        or device.get("type") == "virtual"):
+                    if "group" not in device:
+                        updated_payload = device
+                        updated_payload.update({"group": 'generic'})
+                        return {topic: updated_payload}
+                if (device.get("type") == "alpha_ess" or device.get("type") == "azzurro_sofar"
+                    or device.get("type") == "azzurro_zcs" or device.get("type") == "batterx"
+                        or device.get("type") == "benning" or device.get("type") == "byd"
+                        or device.get("type") == "carlo_gavazzi" or device.get("type") == "deye"
+                        or device.get("type") == "discovergy" or device.get("type") == "e3dc"
+                        or device.get("type") == "enphase" or device.get("type") == "fems"
+                        or device.get("type") == "fox_ess" or device.get("type") == "fronius"
+                        or device.get("type") == "good_we" or device.get("type") == "huawei"
+                        or device.get("type") == "huawei_smartlogger" or device.get("type") == "janitza"
+                        or device.get("type") == "kostal_piko" or device.get("type") == "kostal_piko_old"
+                        or device.get("type") == "kostal_plenticore" or device.get("type") == "kostal_sem"
+                        or device.get("type") == "kostal_steca" or device.get("type") == "lg"
+                        or device.get("type") == "mtec" or device.get("type") == "opendtu"
+                        or device.get("type") == "powerdog" or device.get("type") == "powerfox"
+                        or device.get("type") == "qcells" or device.get("type") == "rct"
+                        or device.get("type") == "saxpower" or device.get("type") == "shelly"
+                        or device.get("type") == "siemens" or device.get("type") == "siemens_sentron"
+                        or device.get("type") == "sma_shm" or device.get("type") == "sma_sunny_boy"
+                        or device.get("type") == "sma_sunny_island" or device.get("type") == "sma_webbox"
+                        or device.get("type") == "smart_me" or device.get("type") == "smartfox"
+                        or device.get("type") == "solaredge" or device.get("type") == "solar_log"
+                        or device.get("type") == "solar_view" or device.get("type") == "solar_watt"
+                        or device.get("type") == "solar_world" or device.get("type") == "solarmax"
+                        or device.get("type") == "solax" or device.get("type") == "sonnenbatterie"
+                        or device.get("type") == "studer" or device.get("type") == "sungrow"
+                        or device.get("type") == "sunways" or device.get("type") == "tasmota"
+                        or device.get("type") == "tesla" or device.get("type") == "varta"
+                        or device.get("type") == "victron" or device.get("type") == "vzlogger"
+                        or device.get("type") == "youless"):
+                    if "group" not in device:
+                        updated_payload = device
+                        updated_payload.update({"group": 'other'})
+                        return {topic: updated_payload}
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 60)
+
+    def upgrade_datastore_60(self) -> None:
+        def upgrade(topic: str, payload) -> Optional[dict]:
+            if re.search("openWB/system/device/[0-9]+/config", topic) is not None:
+                device = decode_payload(payload)
+                # Hier type updaten - wird für den korrekten Pfad gebraucht
+                # 1. openWB
+                if device.get("type") == "openwb_bat_kit":
+                    updated_payload = device
+                    updated_payload["type"] = ["openWB", "openwb_bat_kit"]
+                    return {topic: updated_payload}
+                if device.get("type") == "openwb_evu_kit":
+                    updated_payload = device
+                    updated_payload["type"] = ["openWB", "openwb_evu_kit"]
+                    return {topic: updated_payload}
+                if device.get("type") == "openwb_flex":
+                    updated_payload = device
+                    updated_payload["type"] = ["openWB", "openwb_flex"]
+                    return {topic: updated_payload}
+                if device.get("type") == "openwb_pv_kit":
+                    updated_payload = device
+                    updated_payload["type"] = ["openWB", "openwb_pv_kit"]
+                    return {topic: updated_payload}
+                # 2. huawei
+                if device.get("type") == "huawei":
+                    updated_payload = device
+                    updated_payload["type"] = ["huawei", "huawei"]
+                    return {topic: updated_payload}
+                if device.get("type") == "huawei_smartlogger":
+                    updated_payload = device
+                    updated_payload["type"] = ["huawei", "huawei_smartlogger"]
+                    return {topic: updated_payload}
+                # 3. kostal
+                if device.get("type") == "kostal_piko":
+                    updated_payload = device
+                    updated_payload["type"] = ["kostal", "kostal_piko"]
+                    return {topic: updated_payload}
+                if device.get("type") == "kostal_piko_old":
+                    updated_payload = device
+                    updated_payload["type"] = ["kostal", "kostal_piko_old"]
+                    return {topic: updated_payload}
+                if device.get("type") == "kostal_plenticore":
+                    updated_payload = device
+                    updated_payload["type"] = ["kostal", "kostal_plenticore"]
+                    return {topic: updated_payload}
+                if device.get("type") == "kostal_sem":
+                    updated_payload = device
+                    updated_payload["type"] = ["kostal", "kostal_sem"]
+                    return {topic: updated_payload}
+                if device.get("type") == "kostal_steca":
+                    updated_payload = device
+                    updated_payload["type"] = ["kostal", "kostal_steca"]
+                    return {topic: updated_payload}
+                # 4. Siemens
+                if device.get("type") == "siemens":
+                    updated_payload = device
+                    updated_payload["type"] = ["siemens", "siemens"]
+                    return {topic: updated_payload}
+                if device.get("type") == "siemens_sentron":
+                    updated_payload = device
+                    updated_payload["type"] = ["siemens", "siemens_sentron"]
+                    return {topic: updated_payload}
+                # 5 sma
+                if device.get("type") == "sma_shm":
+                    updated_payload = device
+                    updated_payload["type"] = ["sma", "sma_shm"]
+                    return {topic: updated_payload}
+                if device.get("type") == "sma_sunny_boy":
+                    updated_payload = device
+                    updated_payload["type"] = ["sma", "sma_sunny_boy"]
+                    return {topic: updated_payload}
+                if device.get("type") == "sma_sunny_island":
+                    updated_payload = device
+                    updated_payload["type"] = ["sma", "sma_sunny_island"]
+                    return {topic: updated_payload}
+                if device.get("type") == "sma_webbox":
+                    updated_payload = device
+                    updated_payload["type"] = ["sma", "sma_webbox"]
+                    return {topic: updated_payload}
+                # 6 Pfade anpassen
+                if (device.get("type") == "alpha_ess"):
+                    updated_payload = device
+                    updated_payload["type"] = ["alpha_ess", "alpha_ess"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "azzurro_sofar"):
+                    updated_payload = device
+                    updated_payload["type"] = ["sofar", "sofar"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "azzurro_zcs"):
+                    updated_payload = device
+                    updated_payload["type"] = ["azzurro_zcs", "azzurro_zcs"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "batterx"):
+                    updated_payload = device
+                    updated_payload["type"] = ["batterx", "batterx"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "benning"):
+                    updated_payload = device
+                    updated_payload["type"] = ["benning", "benning"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "byd"):
+                    updated_payload = device
+                    updated_payload["type"] = ["byd", "byd"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "carlo_gavazzi"):
+                    updated_payload = device
+                    updated_payload["type"] = ["carlo_gavazzi", "carlo_gavazzi"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "deye"):
+                    updated_payload = device
+                    updated_payload["type"] = ["deye", "deye"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "discovergy"):
+                    updated_payload = device
+                    updated_payload["type"] = ["discovergy", "discovergy"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "e3dc"):
+                    updated_payload = device
+                    updated_payload["type"] = ["e3dc", "e3dc"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "enphase"):
+                    updated_payload = device
+                    updated_payload["type"] = ["enphase", "enphase"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "fems"):
+                    updated_payload = device
+                    updated_payload["type"] = ["fems", "fems"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "fox_ess"):
+                    updated_payload = device
+                    updated_payload["type"] = ["fox_ess", "fox_ess"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "fronius"):
+                    updated_payload = device
+                    updated_payload["type"] = ["fronius", "fronius"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "good_we"):
+                    updated_payload = device
+                    updated_payload["type"] = ["good_we", "good_we"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "janitza"):
+                    updated_payload = device
+                    updated_payload["type"] = ["janitza", "janitza"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "lg"):
+                    updated_payload = device
+                    updated_payload["type"] = ["lg", "lg"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "mtec"):
+                    updated_payload = device
+                    updated_payload["type"] = ["mtec", "mtec"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "opendtu"):
+                    updated_payload = device
+                    updated_payload["type"] = ["opendtu", "opendtu"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "powerdog"):
+                    updated_payload = device
+                    updated_payload["type"] = ["powerdog", "powerdog"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "powerfox"):
+                    updated_payload = device
+                    updated_payload["type"] = ["powerfox", "powerfox"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "qcells"):
+                    updated_payload = device
+                    updated_payload["type"] = ["qcells", "qcells"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "rct"):
+                    updated_payload = device
+                    updated_payload["type"] = ["rct", "rct"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "saxpower"):
+                    updated_payload = device
+                    updated_payload["type"] = ["saxpower", "saxpower"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "shelly"):
+                    updated_payload = device
+                    updated_payload["type"] = ["shelly", "shelly"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "smart_me"):
+                    updated_payload = device
+                    updated_payload["type"] = ["smart_me", "smart_me"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "smartfox"):
+                    updated_payload = device
+                    updated_payload["type"] = ["smartfox", "smartfox"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "solar_log"):
+                    updated_payload = device
+                    updated_payload["type"] = ["solar_log", "solar_log"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "solar_view"):
+                    updated_payload = device
+                    updated_payload["type"] = ["solar_view", "solar_view"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "solar_watt"):
+                    updated_payload = device
+                    updated_payload["type"] = ["solar_watt", "solar_watt"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "solar_world"):
+                    updated_payload = device
+                    updated_payload["type"] = ["solar_world", "solar_world"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "solaredge"):
+                    updated_payload = device
+                    updated_payload["type"] = ["solaredge", "solaredge"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "solarmax"):
+                    updated_payload = device
+                    updated_payload["type"] = ["solarmax", "solarmax"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "solax"):
+                    updated_payload = device
+                    updated_payload["type"] = ["solax", "solax"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "sonnenbatterie"):
+                    updated_payload = device
+                    updated_payload["type"] = ["sonnenbatterie", "sonnenbatterie"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "studer"):
+                    updated_payload = device
+                    updated_payload["type"] = ["studer", "studer"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "sungrow"):
+                    updated_payload = device
+                    updated_payload["type"] = ["sungrow", "sungrow"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "sunways"):
+                    updated_payload = device
+                    updated_payload["type"] = ["sunways", "sunways"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "tasmota"):
+                    updated_payload = device
+                    updated_payload["type"] = ["tasmota", "tasmota"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "tesla"):
+                    updated_payload = device
+                    updated_payload["type"] = ["tesla", "tesla"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "varta"):
+                    updated_payload = device
+                    updated_payload["type"] = ["varta", "varta"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "victron"):
+                    updated_payload = device
+                    updated_payload["type"] = ["victron", "victron"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "vzlogger"):
+                    updated_payload = device
+                    updated_payload["type"] = ["vzlogger", "vzlogger"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "youless"):
+                    updated_payload = device
+                    updated_payload["type"] = ["youless", "youless"]
+                    return {topic: updated_payload}
+                # 7 generisch
+                if (device.get("type") == "http"):
+                    updated_payload = device
+                    updated_payload["type"] = ["generic", "http"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "mqtt"):
+                    updated_payload = device
+                    updated_payload["type"] = ["generic", "mqtt"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "json"):
+                    updated_payload = device
+                    updated_payload["type"] = ["generic", "json"]
+                    return {topic: updated_payload}
+                if (device.get("type") == "virtual"):
+                    updated_payload = device
+                    updated_payload["type"] = ["generic", "virtual"]
+                    return {topic: updated_payload}
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 61)
+
+    def upgrade_datastore_61(self) -> None:
+        def upgrade(topic: str, payload) -> Optional[dict]:
+            if re.search("openWB/system/device/[0-9]+/config", topic) is not None:
+                device = decode_payload(payload)
+                # Namensaenderung anpassen
+                if (device.get("name") == "Azzurro - Sofar 3P"):
+                    updated_payload = device
+                    updated_payload["name"] = "SofarSolar"
+                    return {topic: updated_payload}
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 62)

From c1ec5da1650b5cb4b58de67232d6271c281108a0 Mon Sep 17 00:00:00 2001
From: pama87 <patrick.mayer@openwb.de>
Date: Wed, 31 Jul 2024 08:32:19 +0200
Subject: [PATCH 060/205] configuration

---
 .../common/configurable_vehicle_test.py       |  2 +-
 packages/modules/configuration.py             | 26 ++++++++++++++++---
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/packages/modules/common/configurable_vehicle_test.py b/packages/modules/common/configurable_vehicle_test.py
index bea4e2068a..98e71dff49 100644
--- a/packages/modules/common/configurable_vehicle_test.py
+++ b/packages/modules/common/configurable_vehicle_test.py
@@ -5,7 +5,7 @@
 from modules.common.component_state import CarState
 from modules.common.configurable_vehicle import ConfigurableVehicle, SocSource
 from modules.common import store
-from modules.devices.tesla.config import Tesla
+from modules.devices.tesla.tesla.config import Tesla
 from modules.vehicles.common.calc_soc import calc_soc
 from modules.vehicles.manual.config import ManualSoc
 from modules.vehicles.mqtt.config import MqttSocSetup
diff --git a/packages/modules/configuration.py b/packages/modules/configuration.py
index 5d3959e83d..95de00eafa 100644
--- a/packages/modules/configuration.py
+++ b/packages/modules/configuration.py
@@ -177,6 +177,18 @@ def _pub_configurable_soc_modules() -> None:
 
 
 def _pub_configurable_devices_components() -> None:
+    def add_vendor(vendor_path: str, pattern: str) -> None:
+        path_list = Path(_get_packages_path()/"modules"/"devices"/vendor_path).glob(f'**/{pattern}.py')
+        for path in path_list:
+            if path.name.endswith("_test.py"):
+                # Tests überspringen
+                continue
+            vendor_defaults = importlib.import_module(
+                f'modules.devices.{path.parts[-2]}.vendor').vendor_descriptor.configuration_factory()
+            vendor.append({
+                "vendor": vendor_defaults.vendor
+            })
+
     def add_components(device: str, pattern: str) -> None:
         path_list = Path(_get_packages_path()/"modules"/"devices"/device).glob(f'**/{pattern}.py')
         for path in path_list:
@@ -184,7 +196,7 @@ def add_components(device: str, pattern: str) -> None:
                 # Tests überspringen
                 continue
             comp_defaults = importlib.import_module(
-                f".devices.{path.parts[-2]}.{path.parts[-1][:-3]}",
+                f".devices.{path.parts[-3]}.{path.parts[-2]}.{path.parts[-1][:-3]}",
                 "modules").component_descriptor.configuration_factory()
             component.append({
                 "value": comp_defaults.type,
@@ -196,17 +208,23 @@ def add_components(device: str, pattern: str) -> None:
         path_list = Path(_get_packages_path()/"modules"/"devices").glob('**/device.py')
         for path in path_list:
             try:
-                device = path.parts[-2]
+                vendor_path = path.parts[-3]
+                device = path.parts[-3]+"/"+path.parts[-2]
+                device_module_import = path.parts[-3]+"."+path.parts[-2]
                 component: List = []
+                vendor: str = []
                 add_components(device, "*bat*")
                 add_components(device, "*counter*")
                 add_components(device, "*inverter*")
+                add_vendor(vendor_path, "*vendor*")
                 dev_defaults = importlib.import_module(
-                    f".devices.{device}.device", "modules").device_descriptor.configuration_factory()
+                    f".devices.{device_module_import}.device", "modules").device_descriptor.configuration_factory()
                 devices_components.append({
                     "value": dev_defaults.type,
                     "text": dev_defaults.name,
-                    "component": component
+                    "group": dev_defaults.group,
+                    "component": component,
+                    "vendor": vendor
                 })
             except Exception:
                 log.exception("Fehler im configuration-Modul")

From b84c7fb30692d7e48eb339938478766dca2a96a4 Mon Sep 17 00:00:00 2001
From: pama87 <patrick.mayer@openwb.de>
Date: Wed, 31 Jul 2024 11:13:36 +0200
Subject: [PATCH 061/205] module - devices - file structure

---
 packages/helpermodules/update_config.py       |   2 +-
 .../alpha_ess}/__init__.py                    |   0
 .../devices/alpha_ess/{ => alpha_ess}/bat.py  |   2 +-
 .../alpha_ess/{ => alpha_ess}/config.py       |   5 +-
 .../alpha_ess/{ => alpha_ess}/counter.py      |  23 +-
 .../alpha_ess/{ => alpha_ess}/device.py       |   9 +-
 .../alpha_ess/{ => alpha_ess}/inverter.py     |   2 +-
 packages/modules/devices/alpha_ess/vendor.py  |   9 +
 .../azzurro_zcs}/__init__.py                  |   0
 .../azzurro_zcs/{ => azzurro_zcs}/bat.py      |   2 +-
 .../azzurro_zcs/{ => azzurro_zcs}/config.py   |   5 +-
 .../azzurro_zcs/{ => azzurro_zcs}/counter.py  |  18 +-
 .../azzurro_zcs/{ => azzurro_zcs}/device.py   |   8 +-
 .../azzurro_zcs/{ => azzurro_zcs}/inverter.py |   2 +-
 .../modules/devices/azzurro_zcs/vendor.py     |   9 +
 .../{huawei => batterx/batterx}/__init__.py   |   0
 .../devices/batterx/{ => batterx}/bat.py      |   2 +-
 .../batterx/{ => batterx}/batterx_test.py     |   9 +-
 .../devices/batterx/{ => batterx}/config.py   |   5 +-
 .../devices/batterx/{ => batterx}/counter.py  |   2 +-
 .../devices/batterx/{ => batterx}/device.py   |  14 +-
 .../{ => batterx}/external_inverter.py        |   2 +-
 .../devices/batterx/{ => batterx}/inverter.py |   2 +-
 packages/modules/devices/batterx/vendor.py    |   9 +
 .../benning}/__init__.py                      |   0
 .../devices/benning/{ => benning}/config.py   |   9 +-
 .../devices/benning/{ => benning}/device.py   |   4 +-
 .../devices/benning/{ => benning}/inverter.py |   2 +-
 packages/modules/devices/benning/vendor.py    |   9 +
 .../devices/{json => byd/byd}/__init__.py     |   0
 packages/modules/devices/byd/{ => byd}/bat.py |   5 +-
 .../modules/devices/byd/{ => byd}/byd_test.py |   2 +-
 .../byd/{ => byd}/byd_test_sample_home.html   |   2 +-
 .../byd/byd/byd_test_sample_rundata.html      | 249 ++++++++++++++++++
 .../modules/devices/byd/{ => byd}/config.py   |   5 +-
 packages/modules/devices/byd/byd/device.py    |  90 +++++++
 .../devices/byd/byd_test_sample_rundata.html  | 249 ------------------
 packages/modules/devices/byd/device.py        |  25 --
 packages/modules/devices/byd/vendor.py        |   9 +
 .../carlo_gavazzi}/__init__.py                |   0
 .../{ => carlo_gavazzi}/config.py             |   5 +-
 .../{ => carlo_gavazzi}/counter.py            |   5 +-
 .../carlo_gavazzi/carlo_gavazzi/device.py     |  89 +++++++
 .../modules/devices/carlo_gavazzi/device.py   |  39 ---
 .../modules/devices/carlo_gavazzi/vendor.py   |   9 +
 .../{kostal_piko_old => deye}/__init__.py     |   0
 packages/modules/devices/deye/device_type.py  |   9 -
 .../deye}/__init__.py                         |   0
 .../modules/devices/deye/{ => deye}/bat.py    |  34 +--
 .../modules/devices/deye/{ => deye}/config.py |   9 +-
 .../devices/deye/{ => deye}/counter.py        |  38 ++-
 .../modules/devices/deye/{ => deye}/device.py |  27 +-
 .../modules/devices/deye/deye/device_type.py  |   7 +
 .../devices/deye/{ => deye}/inverter.py       |  24 +-
 packages/modules/devices/deye/vendor.py       |   9 +
 .../discovergy}/__init__.py                   |   0
 .../discovergy/{ => discovergy}/api.py        |   0
 .../discovergy/{ => discovergy}/api_test.py   |   2 +-
 .../discovergy/{ => discovergy}/config.py     |   5 +-
 .../discovergy/{ => discovergy}/counter.py    |   4 +-
 .../device test.py}                           |   4 +-
 .../discovergy/{ => discovergy}/device.py     |   4 +-
 .../discovergy/{ => discovergy}/inverter.py   |   4 +-
 packages/modules/devices/discovergy/vendor.py |   9 +
 .../{kostal_steca => e3dc/e3dc}/__init__.py   |   0
 .../modules/devices/e3dc/{ => e3dc}/bat.py    |   2 +-
 .../modules/devices/e3dc/{ => e3dc}/config.py |   4 +-
 .../devices/e3dc/{ => e3dc}/counter.py        |   2 +-
 .../modules/devices/e3dc/{ => e3dc}/device.py |  16 +-
 .../e3dc/{ => e3dc}/external_inverter.py      |   2 +-
 .../devices/e3dc/{ => e3dc}/inverter.py       |   2 +-
 packages/modules/devices/e3dc/vendor.py       |   9 +
 .../{mqtt => enphase/enphase}/__init__.py     |   0
 .../devices/enphase/{ => enphase}/bat.py      |   2 +-
 .../devices/enphase/{ => enphase}/config.py   |   5 +-
 .../devices/enphase/{ => enphase}/counter.py  |   2 +-
 .../devices/enphase/{ => enphase}/device.py   |  20 +-
 .../devices/enphase/{ => enphase}/inverter.py |   2 +-
 .../{ => enphase}/livedata_status-sample.json |   2 +-
 .../{ => enphase}/meters_reading-sample.json  |   2 +-
 packages/modules/devices/enphase/vendor.py    |   9 +
 .../{openwb_bat_kit => fems/fems}/__init__.py |   0
 .../modules/devices/fems/{ => fems}/bat.py    |   4 +-
 .../devices/fems/{ => fems}/bat_test.py       |   4 +-
 .../modules/devices/fems/{ => fems}/config.py |   5 +-
 .../devices/fems/{ => fems}/counter.py        |   4 +-
 .../devices/fems/{ => fems}/counter_test.py   |   4 +-
 .../modules/devices/fems/fems/device test.py  |  81 ++++++
 .../modules/devices/fems/{ => fems}/device.py |   4 +-
 .../devices/fems/{ => fems}/inverter.py       |   4 +-
 .../devices/fems/{ => fems}/inverter_test.py  |   4 +-
 .../devices/fems/{ => fems}/version.py        |   0
 packages/modules/devices/fems/vendor.py       |   9 +
 .../{openwb_evu_kit => fox_ess}/__init__.py   |   0
 .../fox_ess}/__init__.py                      |   0
 .../devices/fox_ess/{ => fox_ess}/bat.py      |   2 +-
 .../devices/fox_ess/{ => fox_ess}/config.py   |   5 +-
 .../devices/fox_ess/{ => fox_ess}/counter.py  |   2 +-
 .../devices/fox_ess/{ => fox_ess}/device.py   |   8 +-
 .../devices/fox_ess/{ => fox_ess}/inverter.py |   2 +-
 packages/modules/devices/fox_ess/vendor.py    |   9 +
 .../fronius}/__init__.py                      |   0
 .../devices/fronius/{ => fronius}/bat.py      |   4 +-
 .../devices/fronius/{ => fronius}/bat_test.py |   4 +-
 .../devices/fronius/{ => fronius}/config.py   |   5 +-
 .../fronius/{ => fronius}/counter_s0.py       |   2 +-
 .../fronius/{ => fronius}/counter_s0_test.py  |   4 +-
 .../fronius/{ => fronius}/counter_sm.py       |   4 +-
 .../fronius/{ => fronius}/counter_sm_test.py  |   4 +-
 .../devices/fronius/{ => fronius}/device.py   |  16 +-
 .../devices/fronius/{ => fronius}/inverter.py |   2 +-
 .../{ => fronius}/inverter_secondary.py       |   2 +-
 .../{ => fronius}/inverter_secondary_test.py  |   4 +-
 .../fronius/{ => fronius}/inverter_test.py    |  40 +--
 .../fronius/{ => fronius}/meter_test.py       |   2 +-
 packages/modules/devices/fronius/vendor.py    |   9 +
 .../devices/{siemens => generic}/__init__.py  |   0
 .../http}/__init__.py                         |   0
 .../modules/devices/{ => generic}/http/api.py |   0
 .../modules/devices/{ => generic}/http/bat.py |   4 +-
 .../devices/{ => generic}/http/config.py      |   5 +-
 .../devices/{ => generic}/http/counter.py     |   4 +-
 .../devices/{ => generic}/http/device.py      |  12 +-
 .../devices/{ => generic}/http/inverter.py    |   4 +-
 .../{sma_shm => generic/json}/__init__.py     |   0
 .../modules/devices/{ => generic}/json/bat.py |   2 +-
 .../devices/{ => generic}/json/config.py      |   6 +-
 .../devices/{ => generic}/json/counter.py     |   2 +-
 .../devices/{ => generic}/json/device.py      |  24 +-
 .../devices/{ => generic}/json/device_test.py |   6 +-
 .../devices/{ => generic}/json/inverter.py    |   2 +-
 .../mqtt}/__init__.py                         |   0
 .../modules/devices/{ => generic}/mqtt/bat.py |   2 +-
 .../devices/{ => generic}/mqtt/config.py      |   5 +-
 .../devices/{ => generic}/mqtt/counter.py     |   2 +-
 .../modules/devices/generic/mqtt/device.py    |  55 ++++
 .../devices/{ => generic}/mqtt/inverter.py    |   2 +-
 packages/modules/devices/generic/vendor.py    |   9 +
 .../virtual}/__init__.py                      |   0
 .../devices/{ => generic}/virtual/config.py   |   5 +-
 .../devices/{ => generic}/virtual/counter.py  |   2 +-
 .../{ => generic}/virtual/counter_test.py     |   4 +-
 .../devices/{ => generic}/virtual/device.py   |   4 +-
 .../good_we}/__init__.py                      |   0
 .../modules/devices/good_we/good_we/api.py    |  32 +++
 .../devices/good_we/{ => good_we}/bat.py      |   4 +-
 .../devices/good_we/{ => good_we}/config.py   |   7 +-
 .../devices/good_we/{ => good_we}/counter.py  |   4 +-
 .../devices/good_we/{ => good_we}/device.py   |   8 +-
 .../devices/good_we/{ => good_we}/inverter.py |   4 +-
 .../devices/good_we/{ => good_we}/version.py  |   0
 packages/modules/devices/good_we/vendor.py    |   9 +
 .../{virtual => huawei/huawei}/__init__.py    |   0
 .../devices/huawei/{ => huawei}/bat.py        |   2 +-
 .../devices/huawei/{ => huawei}/config.py     |   5 +-
 .../devices/huawei/{ => huawei}/counter.py    |   2 +-
 .../devices/huawei/{ => huawei}/device.py     |   8 +-
 .../devices/huawei/{ => huawei}/inverter.py   |   2 +-
 .../huawei/huawei_smartlogger/__init__.py     |   0
 .../{ => huawei}/huawei_smartlogger/bat.py    |   2 +-
 .../{ => huawei}/huawei_smartlogger/config.py |   5 +-
 .../huawei_smartlogger/counter.py             |   2 +-
 .../huawei/huawei_smartlogger/device.py       | 112 ++++++++
 .../huawei_smartlogger/inverter.py            |   2 +-
 packages/modules/devices/huawei/vendor.py     |   9 +
 .../devices/huawei_smartlogger/device.py      |  55 ----
 packages/modules/devices/janitza/device.py    |  39 ---
 .../devices/janitza/janitza/__init__.py       |   0
 .../devices/janitza/{ => janitza}/config.py   |   5 +-
 .../devices/janitza/{ => janitza}/counter.py  |   2 +-
 .../modules/devices/janitza/janitza/device.py |  89 +++++++
 packages/modules/devices/janitza/vendor.py    |   9 +
 .../devices/kostal/kostal_piko/__init__.py    |   0
 .../{ => kostal}/kostal_piko/config.py        |   5 +-
 .../{ => kostal}/kostal_piko/counter.py       |   2 +-
 .../devices/kostal/kostal_piko/device.py      | 137 ++++++++++
 .../{ => kostal}/kostal_piko/inverter.py      |   2 +-
 .../kostal/kostal_piko_old/__init__.py        |   0
 .../{ => kostal}/kostal_piko_old/config.py    |   5 +-
 .../devices/kostal/kostal_piko_old/counter.py |  45 ++++
 .../{ => kostal}/kostal_piko_old/device.py    |   8 +-
 .../{ => kostal}/kostal_piko_old/inverter.py  |   2 +-
 .../kostal_piko_old/inverter_test.py          |   4 +-
 .../{ => kostal}/kostal_piko_old/sample.html  |   2 +-
 .../kostal_piko_old/sample_off.html           |   2 +-
 .../kostal/kostal_plenticore/__init__.py      |   0
 .../{ => kostal}/kostal_plenticore/bat.py     |   2 +-
 .../{ => kostal}/kostal_plenticore/config.py  |   5 +-
 .../{ => kostal}/kostal_plenticore/counter.py |   2 +-
 .../{ => kostal}/kostal_plenticore/device.py  |  11 +-
 .../kostal_plenticore/inverter.py             |   2 +-
 .../devices/kostal/kostal_sem/__init__.py     |   0
 .../devices/{ => kostal}/kostal_sem/config.py |   5 +-
 .../{ => kostal}/kostal_sem/counter.py        |   2 +-
 .../devices/{ => kostal}/kostal_sem/device.py |   4 +-
 .../devices/kostal/kostal_steca/__init__.py   |   0
 .../{ => kostal}/kostal_steca/config.py       |   5 +-
 .../{ => kostal}/kostal_steca/device.py       |   6 +-
 .../{ => kostal}/kostal_steca/inverter.py     |   2 +-
 .../kostal_steca/inverter_test.py             |   8 +-
 .../measurements_no_production.xml            |   2 +-
 .../measurements_no_production_piko3p6mp.xml  |   0
 .../kostal_steca/measurements_production.xml  |   2 +-
 .../{ => kostal}/kostal_steca/yields.xml      |   2 +-
 packages/modules/devices/kostal/vendor.py     |   9 +
 .../modules/devices/kostal_piko/device.py     |  30 ---
 packages/modules/devices/lg/device.py         |  75 ------
 .../devices/lg/{ => lg}/JSON-Beispiele.txt    |   4 +-
 packages/modules/devices/lg/lg/__init__.py    |   0
 packages/modules/devices/lg/{ => lg}/bat.py   |   2 +-
 .../modules/devices/lg/{ => lg}/config.py     |   5 +-
 .../modules/devices/lg/{ => lg}/counter.py    |   2 +-
 packages/modules/devices/lg/lg/device.py      | 146 ++++++++++
 .../modules/devices/lg/{ => lg}/inverter.py   |   2 +-
 .../modules/devices/lg/{ => lg}/lg_test.py    |  24 +-
 packages/modules/devices/lg/vendor.py         |   9 +
 packages/modules/devices/mqtt/device.py       |  37 ---
 packages/modules/devices/mtec/__init__.py     |   0
 .../modules/devices/mtec/mtec/__init__.py     |   0
 .../modules/devices/mtec/{ => mtec}/bat.py    |   2 +-
 .../modules/devices/mtec/{ => mtec}/config.py |   5 +-
 .../devices/mtec/{ => mtec}/counter.py        |   2 +-
 .../modules/devices/mtec/{ => mtec}/device.py |   8 +-
 .../devices/mtec/{ => mtec}/inverter.py       |   2 +-
 packages/modules/devices/mtec/vendor.py       |   9 +
 .../devices/openWB/openwb_bat_kit/__init__.py |   0
 .../{ => openWB}/openwb_bat_kit/bat.py        |   8 +-
 .../{ => openWB}/openwb_bat_kit/config.py     |   4 +-
 .../{ => openWB}/openwb_bat_kit/device.py     |   4 +-
 .../devices/openWB/openwb_evu_kit/__init__.py |   0
 .../{ => openWB}/openwb_evu_kit/bat.py        |   2 +-
 .../{ => openWB}/openwb_evu_kit/config.py     |   4 +-
 .../{ => openWB}/openwb_evu_kit/counter.py    |   6 +-
 .../{ => openWB}/openwb_evu_kit/device.py     |  12 +-
 .../{ => openWB}/openwb_evu_kit/inverter.py   |   2 +-
 .../devices/openWB/openwb_flex/__init__.py    |   0
 .../devices/{ => openWB}/openwb_flex/bat.py   |   4 +-
 .../{ => openWB}/openwb_flex/config.py        |  13 +-
 .../openwb_flex/consumption_counter.py        |   4 +-
 .../{ => openWB}/openwb_flex/counter.py       |   4 +-
 .../{ => openWB}/openwb_flex/device.py        |  15 +-
 .../{ => openWB}/openwb_flex/inverter.py      |   4 +-
 .../{ => openWB}/openwb_flex/versions.py      |   0
 .../devices/openWB/openwb_pv_kit/__init__.py  |   0
 .../{ => openWB}/openwb_pv_kit/config.py      |   4 +-
 .../{ => openWB}/openwb_pv_kit/device.py      |   4 +-
 .../{ => openWB}/openwb_pv_kit/inverter.py    |   8 +-
 packages/modules/devices/openWB/vendor.py     |   9 +
 .../devices/opendtu/opendtu/__init__.py       |   0
 .../devices/opendtu/{ => opendtu}/config.py   |  11 +-
 .../devices/opendtu/{ => opendtu}/device.py   |   4 +-
 .../devices/opendtu/{ => opendtu}/inverter.py |   2 +-
 packages/modules/devices/opendtu/vendor.py    |   9 +
 packages/modules/devices/powerdog/device.py   |  64 -----
 .../devices/powerdog/powerdog/__init__.py     |   0
 .../devices/powerdog/{ => powerdog}/config.py |   5 +-
 .../powerdog/{ => powerdog}/counter.py        |   2 +-
 .../devices/powerdog/powerdog/device.py       | 112 ++++++++
 .../powerdog/{ => powerdog}/inverter.py       |   2 +-
 packages/modules/devices/powerdog/vendor.py   |   9 +
 .../devices/powerfox/powerfox/__init__.py     |   0
 .../devices/powerfox/{ => powerfox}/config.py |   5 +-
 .../powerfox/{ => powerfox}/counter.py        |   2 +-
 .../devices/powerfox/{ => powerfox}/device.py |  10 +-
 .../powerfox/{ => powerfox}/inverter.py       |   2 +-
 packages/modules/devices/powerfox/vendor.py   |   9 +
 .../modules/devices/qcells/qcells/__init__.py |   0
 .../devices/qcells/{ => qcells}/bat.py        |   2 +-
 .../devices/qcells/{ => qcells}/config.py     |   5 +-
 .../devices/qcells/{ => qcells}/counter.py    |   2 +-
 .../devices/qcells/{ => qcells}/device.py     |  12 +-
 .../devices/qcells/{ => qcells}/inverter.py   |   2 +-
 packages/modules/devices/qcells/vendor.py     |   9 +
 packages/modules/devices/rct/rct/__init__.py  |   0
 packages/modules/devices/rct/{ => rct}/bat.py |   4 +-
 .../modules/devices/rct/{ => rct}/config.py   |   5 +-
 .../modules/devices/rct/{ => rct}/counter.py  |   4 +-
 .../modules/devices/rct/{ => rct}/device.py   |  10 +-
 .../modules/devices/rct/{ => rct}/inverter.py |   4 +-
 .../modules/devices/rct/{ => rct}/rct_lib.py  |   0
 packages/modules/devices/rct/vendor.py        |   9 +
 packages/modules/devices/saxpower/device.py   |  38 ---
 .../devices/saxpower/saxpower/__init__.py     |   0
 .../devices/saxpower/{ => saxpower}/bat.py    |   2 +-
 .../devices/saxpower/{ => saxpower}/config.py |   5 +-
 .../devices/saxpower/saxpower/device.py       |  88 +++++++
 packages/modules/devices/saxpower/vendor.py   |   9 +
 packages/modules/devices/shelly/__init__.py   |   0
 .../modules/devices/shelly/shelly/__init__.py |   0
 .../devices/shelly/{ => shelly}/bat.py        |   2 +-
 .../devices/shelly/{ => shelly}/config.py     |   5 +-
 .../devices/shelly/{ => shelly}/counter.py    |   2 +-
 .../devices/shelly/{ => shelly}/device.py     |  14 +-
 .../devices/shelly/{ => shelly}/inverter.py   |   2 +-
 packages/modules/devices/shelly/vendor.py     |   9 +
 packages/modules/devices/siemens/device.py    |  51 ----
 .../devices/siemens/siemens/__init__.py       |   0
 .../devices/siemens/{ => siemens}/bat.py      |   2 +-
 .../devices/siemens/{ => siemens}/config.py   |   5 +-
 .../devices/siemens/{ => siemens}/counter.py  |   2 +-
 .../modules/devices/siemens/siemens/device.py |  99 +++++++
 .../devices/siemens/{ => siemens}/inverter.py |   2 +-
 .../siemens/siemens_sentron/__init__.py       |   0
 .../{ => siemens}/siemens_sentron/config.py   |   5 +-
 .../{ => siemens}/siemens_sentron/counter.py  |   2 +-
 .../{ => siemens}/siemens_sentron/device.py   |   4 +-
 packages/modules/devices/siemens/vendor.py    |   9 +
 .../modules/devices/sma/sma_shm/__init__.py   |   0
 .../devices/{ => sma}/sma_shm/config.py       |   4 +-
 .../devices/{ => sma}/sma_shm/counter.py      |   4 +-
 .../devices/{ => sma}/sma_shm/counter_test.py |   2 +-
 .../devices/{ => sma}/sma_shm/device.py       |  10 +-
 .../devices/{ => sma}/sma_shm/inverter.py     |   4 +-
 .../{ => sma}/sma_shm/speedwire_listener.py   |   2 +-
 .../{ => sma}/sma_shm/speedwiredecoder.py     |   0
 .../devices/{ => sma}/sma_shm/utils.py        |   2 +-
 .../devices/sma/sma_sunny_boy/__init__.py     |   0
 .../devices/{ => sma}/sma_sunny_boy/bat.py    |   2 +-
 .../sma_sunny_boy/bat_smart_energy.py         |   2 +-
 .../devices/{ => sma}/sma_sunny_boy/config.py |   7 +-
 .../{ => sma}/sma_sunny_boy/counter.py        |   5 +-
 .../devices/{ => sma}/sma_sunny_boy/device.py |  28 +-
 .../{ => sma}/sma_sunny_boy/inv_version.py    |   0
 .../{ => sma}/sma_sunny_boy/inverter.py       |   7 +-
 .../sma_sunny_boy/sma_sunny_boy_test.py       |   6 +-
 .../devices/sma/sma_sunny_island/__init__.py  |   0
 .../devices/{ => sma}/sma_sunny_island/bat.py |   2 +-
 .../{ => sma}/sma_sunny_island/config.py      |   5 +-
 .../{ => sma}/sma_sunny_island/device.py      |   6 +-
 .../devices/sma/sma_webbox/__init__.py        |   0
 .../devices/{ => sma}/sma_webbox/config.py    |   5 +-
 .../devices/{ => sma}/sma_webbox/device.py    |   4 +-
 .../devices/{ => sma}/sma_webbox/inverter.py  |   2 +-
 packages/modules/devices/sma/vendor.py        |   9 +
 .../devices/smart_me/smart_me/__init__.py     |   0
 .../devices/smart_me/{ => smart_me}/config.py |   5 +-
 .../smart_me/{ => smart_me}/counter.py        |   2 +-
 .../devices/smart_me/{ => smart_me}/device.py |  10 +-
 .../smart_me/{ => smart_me}/inverter.py       |   2 +-
 packages/modules/devices/smart_me/vendor.py   |   9 +
 .../devices/smartfox/smartfox/__init__.py     |   0
 .../devices/smartfox/{ => smartfox}/config.py |   5 +-
 .../smartfox/{ => smartfox}/counter.py        |   2 +-
 .../devices/smartfox/{ => smartfox}/device.py |   4 +-
 packages/modules/devices/smartfox/vendor.py   |   9 +
 packages/modules/devices/sofar/__init__.py    |   0
 .../modules/devices/sofar/sofar/__init__.py   |   0
 .../{azzurro_sofar => sofar/sofar}/bat.py     |   2 +-
 .../{azzurro_sofar => sofar/sofar}/config.py  |   7 +-
 .../{azzurro_sofar => sofar/sofar}/counter.py |  18 +-
 .../{azzurro_sofar => sofar/sofar}/device.py  |   8 +-
 .../sofar}/inverter.py                        |   2 +-
 packages/modules/devices/sofar/vendor.py      |   9 +
 .../devices/solar_log/solar_log/__init__.py   |   0
 .../solar_log/{ => solar_log}/config.py       |   5 +-
 .../solar_log/{ => solar_log}/counter.py      |   2 +-
 .../solar_log/{ => solar_log}/device.py       |   6 +-
 .../solar_log/{ => solar_log}/inverter.py     |   2 +-
 packages/modules/devices/solar_log/vendor.py  |   9 +
 .../devices/solar_view/solar_view/__init__.py |   0
 .../solar_view/{ => solar_view}/api.py        |   0
 .../solar_view/{ => solar_view}/config.py     |   5 +-
 .../solar_view/{ => solar_view}/counter.py    |   4 +-
 .../solar_view/{ => solar_view}/device.py     |  11 +-
 .../solar_view/{ => solar_view}/inverter.py   |   4 +-
 packages/modules/devices/solar_view/vendor.py |   9 +
 .../devices/solar_watt/solar_watt/__init__.py |   0
 .../solar_watt/{ => solar_watt}/api.py        |   0
 .../solar_watt/{ => solar_watt}/bat.py        |   4 +-
 .../solar_watt/{ => solar_watt}/config.py     |   5 +-
 .../solar_watt/{ => solar_watt}/counter.py    |   4 +-
 .../solar_watt/{ => solar_watt}/device.py     |  12 +-
 .../solar_watt/{ => solar_watt}/inverter.py   |   4 +-
 packages/modules/devices/solar_watt/vendor.py |   9 +
 .../solar_world/solar_world/__init__.py       |   0
 .../solar_world/{ => solar_world}/config.py   |   5 +-
 .../solar_world/{ => solar_world}/counter.py  |   2 +-
 .../solar_world/{ => solar_world}/device.py   |   8 +-
 .../solar_world/{ => solar_world}/inverter.py |   2 +-
 .../modules/devices/solar_world/vendor.py     |   9 +
 .../devices/solaredge/solaredge/__init__.py   |   0
 .../devices/solaredge/{ => solaredge}/bat.py  |   2 +-
 .../solaredge/{ => solaredge}/config.py       |   4 +-
 .../solaredge/{ => solaredge}/counter.py      |   6 +-
 .../solaredge/{ => solaredge}/device.py       |  23 +-
 .../solaredge/{ => solaredge}/device_test.py  |  10 +-
 .../{ => solaredge}/external_inverter.py      |   6 +-
 .../solaredge/{ => solaredge}/inverter.py     |   4 +-
 .../{ => solaredge}/inverter_test.py          |   4 +-
 .../solaredge/{ => solaredge}/meter.py        |   0
 .../solaredge/{ => solaredge}/meter_test.py   |   2 +-
 .../solaredge/{ => solaredge}/scale.py        |   0
 packages/modules/devices/solaredge/vendor.py  |   9 +
 .../devices/solarmax/solarmax/__init__.py     |   0
 .../devices/solarmax/{ => solarmax}/bat.py    |   2 +-
 .../devices/solarmax/{ => solarmax}/config.py |   5 +-
 .../devices/solarmax/{ => solarmax}/device.py |   7 +-
 .../solarmax/{ => solarmax}/inverter.py       |   2 +-
 packages/modules/devices/solarmax/vendor.py   |   9 +
 .../modules/devices/solax/solax/__init__.py   |   0
 .../modules/devices/solax/{ => solax}/bat.py  |   2 +-
 .../devices/solax/{ => solax}/config.py       |   5 +-
 .../devices/solax/{ => solax}/counter.py      |   2 +-
 .../devices/solax/{ => solax}/device.py       |   8 +-
 .../devices/solax/{ => solax}/inverter.py     |   2 +-
 packages/modules/devices/solax/vendor.py      |   9 +
 .../sonnenbatterie/sonnenbatterie/__init__.py |   0
 .../{ => sonnenbatterie}/bat.py               |   2 +-
 .../{ => sonnenbatterie}/config.py            |   7 +-
 .../{ => sonnenbatterie}/counter.py           |   2 +-
 .../{ => sonnenbatterie}/device.py            |   7 +-
 .../{ => sonnenbatterie}/inverter.py          |   2 +-
 .../modules/devices/sonnenbatterie/vendor.py  |   9 +
 .../modules/devices/studer/studer/__init__.py |   0
 .../devices/studer/{ => studer}/bat.py        |   2 +-
 .../devices/studer/{ => studer}/config.py     |   5 +-
 .../devices/studer/{ => studer}/device.py     |   7 +-
 .../devices/studer/{ => studer}/inverter.py   |   2 +-
 packages/modules/devices/studer/vendor.py     |   9 +
 .../devices/sungrow/sungrow/__init__.py       |   0
 .../devices/sungrow/{ => sungrow}/bat.py      |   2 +-
 .../devices/sungrow/{ => sungrow}/config.py   |   7 +-
 .../devices/sungrow/{ => sungrow}/counter.py  |   4 +-
 .../devices/sungrow/{ => sungrow}/device.py   |  13 +-
 .../devices/sungrow/{ => sungrow}/inverter.py |   4 +-
 .../devices/sungrow/{ => sungrow}/modbus.md   |   2 +-
 .../devices/sungrow/{ => sungrow}/version.py  |   0
 packages/modules/devices/sungrow/vendor.py    |   9 +
 .../devices/sunways/sunways/__init__.py       |   0
 .../devices/sunways/{ => sunways}/config.py   |   5 +-
 .../devices/sunways/{ => sunways}/device.py   |   4 +-
 .../devices/sunways/{ => sunways}/inverter.py |   2 +-
 packages/modules/devices/sunways/vendor.py    |   9 +
 .../devices/tasmota/tasmota/__init__.py       |   0
 .../devices/tasmota/{ => tasmota}/config.py   |   5 +-
 .../devices/tasmota/{ => tasmota}/counter.py  |   2 +-
 .../devices/tasmota/{ => tasmota}/device.py   |   6 +-
 packages/modules/devices/tasmota/vendor.py    |   9 +
 .../modules/devices/tesla/tesla/__init__.py   |   0
 .../modules/devices/tesla/{ => tesla}/bat.py  |   4 +-
 .../devices/tesla/{ => tesla}/config.py       |   5 +-
 .../devices/tesla/{ => tesla}/counter.py      |   4 +-
 .../devices/tesla/{ => tesla}/device.py       |   6 +-
 .../devices/tesla/{ => tesla}/http_client.py  |   0
 .../devices/tesla/{ => tesla}/inverter.py     |   4 +-
 .../devices/tesla/{ => tesla}/tesla.php       |   0
 .../devices/tesla/{ => tesla}/tesla_test.py   |   6 +-
 packages/modules/devices/tesla/vendor.py      |   9 +
 .../modules/devices/varta/varta/__init__.py   |   0
 .../devices/varta/{ => varta}/bat_api.py      |   2 +-
 .../devices/varta/{ => varta}/bat_modbus.py   |   2 +-
 .../devices/varta/{ => varta}/config.py       |   5 +-
 .../devices/varta/{ => varta}/counter.py      |   2 +-
 .../devices/varta/{ => varta}/device.py       |  14 +-
 packages/modules/devices/varta/vendor.py      |   9 +
 packages/modules/devices/victron/vendor.py    |   9 +
 .../devices/victron/victron/__init__.py       |   0
 .../devices/victron/{ => victron}/bat.py      |   2 +-
 .../devices/victron/{ => victron}/config.py   |   5 +-
 .../devices/victron/{ => victron}/counter.py  |   2 +-
 .../devices/victron/{ => victron}/device.py   |   8 +-
 .../devices/victron/{ => victron}/inverter.py |   2 +-
 packages/modules/devices/vzlogger/vendor.py   |   9 +
 .../devices/vzlogger/vzlogger/__init__.py     |   0
 .../devices/vzlogger/{ => vzlogger}/config.py |   5 +-
 .../vzlogger/{ => vzlogger}/counter.py        |   4 +-
 .../vzlogger/{ => vzlogger}/counter_test.py   |   8 +-
 .../devices/vzlogger/{ => vzlogger}/device.py |   6 +-
 .../vzlogger/{ => vzlogger}/inverter.py       |   4 +-
 .../devices/vzlogger/{ => vzlogger}/utils.py  |   0
 packages/modules/devices/youless/vendor.py    |   9 +
 .../devices/youless/youless/__init__.py       |   0
 .../devices/youless/{ => youless}/config.py   |   5 +-
 .../devices/youless/{ => youless}/device.py   |   6 +-
 .../devices/youless/{ => youless}/inverter.py |   2 +-
 475 files changed, 2740 insertions(+), 1492 deletions(-)
 rename packages/modules/devices/{azzurro_sofar => alpha_ess/alpha_ess}/__init__.py (100%)
 rename packages/modules/devices/alpha_ess/{ => alpha_ess}/bat.py (96%)
 rename packages/modules/devices/alpha_ess/{ => alpha_ess}/config.py (94%)
 rename packages/modules/devices/alpha_ess/{ => alpha_ess}/counter.py (76%)
 rename packages/modules/devices/alpha_ess/{ => alpha_ess}/device.py (89%)
 rename packages/modules/devices/alpha_ess/{ => alpha_ess}/inverter.py (95%)
 create mode 100644 packages/modules/devices/alpha_ess/vendor.py
 rename packages/modules/devices/{http => azzurro_zcs/azzurro_zcs}/__init__.py (100%)
 rename packages/modules/devices/azzurro_zcs/{ => azzurro_zcs}/bat.py (96%)
 rename packages/modules/devices/azzurro_zcs/{ => azzurro_zcs}/config.py (93%)
 rename packages/modules/devices/azzurro_zcs/{ => azzurro_zcs}/counter.py (77%)
 rename packages/modules/devices/azzurro_zcs/{ => azzurro_zcs}/device.py (84%)
 rename packages/modules/devices/azzurro_zcs/{ => azzurro_zcs}/inverter.py (96%)
 create mode 100644 packages/modules/devices/azzurro_zcs/vendor.py
 rename packages/modules/devices/{huawei => batterx/batterx}/__init__.py (100%)
 rename packages/modules/devices/batterx/{ => batterx}/bat.py (95%)
 rename packages/modules/devices/batterx/{ => batterx}/batterx_test.py (90%)
 rename packages/modules/devices/batterx/{ => batterx}/config.py (95%)
 rename packages/modules/devices/batterx/{ => batterx}/counter.py (96%)
 rename packages/modules/devices/batterx/{ => batterx}/device.py (89%)
 rename packages/modules/devices/batterx/{ => batterx}/external_inverter.py (94%)
 rename packages/modules/devices/batterx/{ => batterx}/inverter.py (95%)
 create mode 100644 packages/modules/devices/batterx/vendor.py
 rename packages/modules/devices/{huawei_smartlogger => benning/benning}/__init__.py (100%)
 rename packages/modules/devices/benning/{ => benning}/config.py (76%)
 rename packages/modules/devices/benning/{ => benning}/device.py (67%)
 rename packages/modules/devices/benning/{ => benning}/inverter.py (70%)
 create mode 100644 packages/modules/devices/benning/vendor.py
 rename packages/modules/devices/{json => byd/byd}/__init__.py (100%)
 rename packages/modules/devices/byd/{ => byd}/bat.py (93%)
 rename packages/modules/devices/byd/{ => byd}/byd_test.py (91%)
 rename packages/modules/devices/byd/{ => byd}/byd_test_sample_home.html (99%)
 create mode 100644 packages/modules/devices/byd/byd/byd_test_sample_rundata.html
 rename packages/modules/devices/byd/{ => byd}/config.py (90%)
 create mode 100644 packages/modules/devices/byd/byd/device.py
 delete mode 100644 packages/modules/devices/byd/byd_test_sample_rundata.html
 delete mode 100644 packages/modules/devices/byd/device.py
 create mode 100644 packages/modules/devices/byd/vendor.py
 rename packages/modules/devices/{kostal_piko => carlo_gavazzi/carlo_gavazzi}/__init__.py (100%)
 rename packages/modules/devices/carlo_gavazzi/{ => carlo_gavazzi}/config.py (89%)
 rename packages/modules/devices/carlo_gavazzi/{ => carlo_gavazzi}/counter.py (91%)
 create mode 100644 packages/modules/devices/carlo_gavazzi/carlo_gavazzi/device.py
 delete mode 100644 packages/modules/devices/carlo_gavazzi/device.py
 create mode 100644 packages/modules/devices/carlo_gavazzi/vendor.py
 rename packages/modules/devices/{kostal_piko_old => deye}/__init__.py (100%)
 delete mode 100644 packages/modules/devices/deye/device_type.py
 rename packages/modules/devices/{kostal_plenticore => deye/deye}/__init__.py (100%)
 rename packages/modules/devices/deye/{ => deye}/bat.py (77%)
 rename packages/modules/devices/deye/{ => deye}/config.py (89%)
 rename packages/modules/devices/deye/{ => deye}/counter.py (78%)
 rename packages/modules/devices/deye/{ => deye}/device.py (70%)
 create mode 100644 packages/modules/devices/deye/deye/device_type.py
 rename packages/modules/devices/deye/{ => deye}/inverter.py (71%)
 create mode 100644 packages/modules/devices/deye/vendor.py
 rename packages/modules/devices/{kostal_sem => discovergy/discovergy}/__init__.py (100%)
 rename packages/modules/devices/discovergy/{ => discovergy}/api.py (100%)
 rename packages/modules/devices/discovergy/{ => discovergy}/api_test.py (98%)
 rename packages/modules/devices/discovergy/{ => discovergy}/config.py (92%)
 rename packages/modules/devices/discovergy/{ => discovergy}/counter.py (85%)
 rename packages/modules/devices/discovergy/{device_test.py => discovergy/device test.py} (95%)
 rename packages/modules/devices/discovergy/{ => discovergy}/device.py (94%)
 rename packages/modules/devices/discovergy/{ => discovergy}/inverter.py (87%)
 create mode 100644 packages/modules/devices/discovergy/vendor.py
 rename packages/modules/devices/{kostal_steca => e3dc/e3dc}/__init__.py (100%)
 rename packages/modules/devices/e3dc/{ => e3dc}/bat.py (96%)
 rename packages/modules/devices/e3dc/{ => e3dc}/config.py (96%)
 rename packages/modules/devices/e3dc/{ => e3dc}/counter.py (97%)
 rename packages/modules/devices/e3dc/{ => e3dc}/device.py (91%)
 rename packages/modules/devices/e3dc/{ => e3dc}/external_inverter.py (96%)
 rename packages/modules/devices/e3dc/{ => e3dc}/inverter.py (96%)
 create mode 100644 packages/modules/devices/e3dc/vendor.py
 rename packages/modules/devices/{mqtt => enphase/enphase}/__init__.py (100%)
 rename packages/modules/devices/enphase/{ => enphase}/bat.py (96%)
 rename packages/modules/devices/enphase/{ => enphase}/config.py (95%)
 rename packages/modules/devices/enphase/{ => enphase}/counter.py (96%)
 rename packages/modules/devices/enphase/{ => enphase}/device.py (94%)
 rename packages/modules/devices/enphase/{ => enphase}/inverter.py (95%)
 rename packages/modules/devices/enphase/{ => enphase}/livedata_status-sample.json (99%)
 rename packages/modules/devices/enphase/{ => enphase}/meters_reading-sample.json (99%)
 create mode 100644 packages/modules/devices/enphase/vendor.py
 rename packages/modules/devices/{openwb_bat_kit => fems/fems}/__init__.py (100%)
 rename packages/modules/devices/fems/{ => fems}/bat.py (97%)
 rename packages/modules/devices/fems/{ => fems}/bat_test.py (95%)
 rename packages/modules/devices/fems/{ => fems}/config.py (94%)
 rename packages/modules/devices/fems/{ => fems}/counter.py (98%)
 rename packages/modules/devices/fems/{ => fems}/counter_test.py (96%)
 create mode 100644 packages/modules/devices/fems/fems/device test.py
 rename packages/modules/devices/fems/{ => fems}/device.py (93%)
 rename packages/modules/devices/fems/{ => fems}/inverter.py (94%)
 rename packages/modules/devices/fems/{ => fems}/inverter_test.py (91%)
 rename packages/modules/devices/fems/{ => fems}/version.py (100%)
 create mode 100644 packages/modules/devices/fems/vendor.py
 rename packages/modules/devices/{openwb_evu_kit => fox_ess}/__init__.py (100%)
 rename packages/modules/devices/{openwb_flex => fox_ess/fox_ess}/__init__.py (100%)
 rename packages/modules/devices/fox_ess/{ => fox_ess}/bat.py (95%)
 rename packages/modules/devices/fox_ess/{ => fox_ess}/config.py (94%)
 rename packages/modules/devices/fox_ess/{ => fox_ess}/counter.py (95%)
 rename packages/modules/devices/fox_ess/{ => fox_ess}/device.py (84%)
 rename packages/modules/devices/fox_ess/{ => fox_ess}/inverter.py (95%)
 create mode 100644 packages/modules/devices/fox_ess/vendor.py
 rename packages/modules/devices/{openwb_pv_kit => fronius/fronius}/__init__.py (100%)
 rename packages/modules/devices/fronius/{ => fronius}/bat.py (94%)
 rename packages/modules/devices/fronius/{ => fronius}/bat_test.py (95%)
 rename packages/modules/devices/fronius/{ => fronius}/config.py (96%)
 rename packages/modules/devices/fronius/{ => fronius}/counter_s0.py (94%)
 rename packages/modules/devices/fronius/{ => fronius}/counter_s0_test.py (94%)
 rename packages/modules/devices/fronius/{ => fronius}/counter_sm.py (97%)
 rename packages/modules/devices/fronius/{ => fronius}/counter_sm_test.py (99%)
 rename packages/modules/devices/fronius/{ => fronius}/device.py (82%)
 rename packages/modules/devices/fronius/{ => fronius}/inverter.py (95%)
 rename packages/modules/devices/fronius/{ => fronius}/inverter_secondary.py (96%)
 rename packages/modules/devices/fronius/{ => fronius}/inverter_secondary_test.py (93%)
 rename packages/modules/devices/fronius/{ => fronius}/inverter_test.py (66%)
 rename packages/modules/devices/fronius/{ => fronius}/meter_test.py (93%)
 create mode 100644 packages/modules/devices/fronius/vendor.py
 rename packages/modules/devices/{siemens => generic}/__init__.py (100%)
 rename packages/modules/devices/{siemens_sentron => generic/http}/__init__.py (100%)
 rename packages/modules/devices/{ => generic}/http/api.py (100%)
 rename packages/modules/devices/{ => generic}/http/bat.py (93%)
 rename packages/modules/devices/{ => generic}/http/config.py (94%)
 rename packages/modules/devices/{ => generic}/http/counter.py (92%)
 rename packages/modules/devices/{ => generic}/http/device.py (89%)
 rename packages/modules/devices/{ => generic}/http/inverter.py (93%)
 rename packages/modules/devices/{sma_shm => generic/json}/__init__.py (100%)
 rename packages/modules/devices/{ => generic}/json/bat.py (96%)
 rename packages/modules/devices/{ => generic}/json/config.py (94%)
 rename packages/modules/devices/{ => generic}/json/counter.py (96%)
 rename packages/modules/devices/{ => generic}/json/device.py (82%)
 rename packages/modules/devices/{ => generic}/json/device_test.py (94%)
 rename packages/modules/devices/{ => generic}/json/inverter.py (95%)
 rename packages/modules/devices/{sma_sunny_boy => generic/mqtt}/__init__.py (100%)
 rename packages/modules/devices/{ => generic}/mqtt/bat.py (90%)
 rename packages/modules/devices/{ => generic}/mqtt/config.py (92%)
 rename packages/modules/devices/{ => generic}/mqtt/counter.py (90%)
 create mode 100644 packages/modules/devices/generic/mqtt/device.py
 rename packages/modules/devices/{ => generic}/mqtt/inverter.py (90%)
 create mode 100644 packages/modules/devices/generic/vendor.py
 rename packages/modules/devices/{sma_sunny_island => generic/virtual}/__init__.py (100%)
 rename packages/modules/devices/{ => generic}/virtual/config.py (86%)
 rename packages/modules/devices/{ => generic}/virtual/counter.py (95%)
 rename packages/modules/devices/{ => generic}/virtual/counter_test.py (95%)
 rename packages/modules/devices/{ => generic}/virtual/device.py (94%)
 rename packages/modules/devices/{sma_webbox => good_we/good_we}/__init__.py (100%)
 create mode 100644 packages/modules/devices/good_we/good_we/api.py
 rename packages/modules/devices/good_we/{ => good_we}/bat.py (94%)
 rename packages/modules/devices/good_we/{ => good_we}/config.py (91%)
 rename packages/modules/devices/good_we/{ => good_we}/counter.py (96%)
 rename packages/modules/devices/good_we/{ => good_we}/device.py (89%)
 rename packages/modules/devices/good_we/{ => good_we}/inverter.py (92%)
 rename packages/modules/devices/good_we/{ => good_we}/version.py (100%)
 create mode 100644 packages/modules/devices/good_we/vendor.py
 rename packages/modules/devices/{virtual => huawei/huawei}/__init__.py (100%)
 rename packages/modules/devices/huawei/{ => huawei}/bat.py (96%)
 rename packages/modules/devices/huawei/{ => huawei}/config.py (94%)
 rename packages/modules/devices/huawei/{ => huawei}/counter.py (96%)
 rename packages/modules/devices/huawei/{ => huawei}/device.py (86%)
 rename packages/modules/devices/huawei/{ => huawei}/inverter.py (95%)
 create mode 100644 packages/modules/devices/huawei/huawei_smartlogger/__init__.py
 rename packages/modules/devices/{ => huawei}/huawei_smartlogger/bat.py (95%)
 rename packages/modules/devices/{ => huawei}/huawei_smartlogger/config.py (94%)
 rename packages/modules/devices/{ => huawei}/huawei_smartlogger/counter.py (95%)
 create mode 100644 packages/modules/devices/huawei/huawei_smartlogger/device.py
 rename packages/modules/devices/{ => huawei}/huawei_smartlogger/inverter.py (94%)
 create mode 100644 packages/modules/devices/huawei/vendor.py
 delete mode 100644 packages/modules/devices/huawei_smartlogger/device.py
 delete mode 100644 packages/modules/devices/janitza/device.py
 create mode 100644 packages/modules/devices/janitza/janitza/__init__.py
 rename packages/modules/devices/janitza/{ => janitza}/config.py (89%)
 rename packages/modules/devices/janitza/{ => janitza}/counter.py (97%)
 create mode 100644 packages/modules/devices/janitza/janitza/device.py
 create mode 100644 packages/modules/devices/janitza/vendor.py
 create mode 100644 packages/modules/devices/kostal/kostal_piko/__init__.py
 rename packages/modules/devices/{ => kostal}/kostal_piko/config.py (92%)
 rename packages/modules/devices/{ => kostal}/kostal_piko/counter.py (96%)
 create mode 100644 packages/modules/devices/kostal/kostal_piko/device.py
 rename packages/modules/devices/{ => kostal}/kostal_piko/inverter.py (95%)
 create mode 100644 packages/modules/devices/kostal/kostal_piko_old/__init__.py
 rename packages/modules/devices/{ => kostal}/kostal_piko_old/config.py (90%)
 create mode 100644 packages/modules/devices/kostal/kostal_piko_old/counter.py
 rename packages/modules/devices/{ => kostal}/kostal_piko_old/device.py (86%)
 rename packages/modules/devices/{ => kostal}/kostal_piko_old/inverter.py (95%)
 rename packages/modules/devices/{ => kostal}/kostal_piko_old/inverter_test.py (88%)
 rename packages/modules/devices/{ => kostal}/kostal_piko_old/sample.html (99%)
 rename packages/modules/devices/{ => kostal}/kostal_piko_old/sample_off.html (99%)
 create mode 100644 packages/modules/devices/kostal/kostal_plenticore/__init__.py
 rename packages/modules/devices/{ => kostal}/kostal_plenticore/bat.py (95%)
 rename packages/modules/devices/{ => kostal}/kostal_plenticore/config.py (94%)
 rename packages/modules/devices/{ => kostal}/kostal_plenticore/counter.py (95%)
 rename packages/modules/devices/{ => kostal}/kostal_plenticore/device.py (91%)
 rename packages/modules/devices/{ => kostal}/kostal_plenticore/inverter.py (94%)
 create mode 100644 packages/modules/devices/kostal/kostal_sem/__init__.py
 rename packages/modules/devices/{ => kostal}/kostal_sem/config.py (90%)
 rename packages/modules/devices/{ => kostal}/kostal_sem/counter.py (97%)
 rename packages/modules/devices/{ => kostal}/kostal_sem/device.py (88%)
 create mode 100644 packages/modules/devices/kostal/kostal_steca/__init__.py
 rename packages/modules/devices/{ => kostal}/kostal_steca/config.py (90%)
 rename packages/modules/devices/{ => kostal}/kostal_steca/device.py (91%)
 rename packages/modules/devices/{ => kostal}/kostal_steca/inverter.py (97%)
 rename packages/modules/devices/{ => kostal}/kostal_steca/inverter_test.py (76%)
 rename packages/modules/devices/{ => kostal}/kostal_steca/measurements_no_production.xml (99%)
 rename packages/modules/devices/{ => kostal}/kostal_steca/measurements_no_production_piko3p6mp.xml (100%)
 rename packages/modules/devices/{ => kostal}/kostal_steca/measurements_production.xml (99%)
 rename packages/modules/devices/{ => kostal}/kostal_steca/yields.xml (98%)
 create mode 100644 packages/modules/devices/kostal/vendor.py
 delete mode 100644 packages/modules/devices/kostal_piko/device.py
 delete mode 100644 packages/modules/devices/lg/device.py
 rename packages/modules/devices/lg/{ => lg}/JSON-Beispiele.txt (99%)
 create mode 100644 packages/modules/devices/lg/lg/__init__.py
 rename packages/modules/devices/lg/{ => lg}/bat.py (96%)
 rename packages/modules/devices/lg/{ => lg}/config.py (94%)
 rename packages/modules/devices/lg/{ => lg}/counter.py (96%)
 create mode 100644 packages/modules/devices/lg/lg/device.py
 rename packages/modules/devices/lg/{ => lg}/inverter.py (95%)
 rename packages/modules/devices/lg/{ => lg}/lg_test.py (84%)
 create mode 100644 packages/modules/devices/lg/vendor.py
 delete mode 100644 packages/modules/devices/mqtt/device.py
 create mode 100644 packages/modules/devices/mtec/__init__.py
 create mode 100644 packages/modules/devices/mtec/mtec/__init__.py
 rename packages/modules/devices/mtec/{ => mtec}/bat.py (97%)
 rename packages/modules/devices/mtec/{ => mtec}/config.py (94%)
 rename packages/modules/devices/mtec/{ => mtec}/counter.py (95%)
 rename packages/modules/devices/mtec/{ => mtec}/device.py (86%)
 rename packages/modules/devices/mtec/{ => mtec}/inverter.py (95%)
 create mode 100644 packages/modules/devices/mtec/vendor.py
 create mode 100644 packages/modules/devices/openWB/openwb_bat_kit/__init__.py
 rename packages/modules/devices/{ => openWB}/openwb_bat_kit/bat.py (75%)
 rename packages/modules/devices/{ => openWB}/openwb_bat_kit/config.py (88%)
 rename packages/modules/devices/{ => openWB}/openwb_bat_kit/device.py (96%)
 create mode 100644 packages/modules/devices/openWB/openwb_evu_kit/__init__.py
 rename packages/modules/devices/{ => openWB}/openwb_evu_kit/bat.py (70%)
 rename packages/modules/devices/{ => openWB}/openwb_evu_kit/config.py (94%)
 rename packages/modules/devices/{ => openWB}/openwb_evu_kit/counter.py (82%)
 rename packages/modules/devices/{ => openWB}/openwb_evu_kit/device.py (91%)
 rename packages/modules/devices/{ => openWB}/openwb_evu_kit/inverter.py (69%)
 create mode 100644 packages/modules/devices/openWB/openwb_flex/__init__.py
 rename packages/modules/devices/{ => openWB}/openwb_flex/bat.py (93%)
 rename packages/modules/devices/{ => openWB}/openwb_flex/config.py (89%)
 rename packages/modules/devices/{ => openWB}/openwb_flex/consumption_counter.py (93%)
 rename packages/modules/devices/{ => openWB}/openwb_flex/counter.py (94%)
 rename packages/modules/devices/{ => openWB}/openwb_flex/device.py (75%)
 rename packages/modules/devices/{ => openWB}/openwb_flex/inverter.py (93%)
 rename packages/modules/devices/{ => openWB}/openwb_flex/versions.py (100%)
 create mode 100644 packages/modules/devices/openWB/openwb_pv_kit/__init__.py
 rename packages/modules/devices/{ => openWB}/openwb_pv_kit/config.py (88%)
 rename packages/modules/devices/{ => openWB}/openwb_pv_kit/device.py (95%)
 rename packages/modules/devices/{ => openWB}/openwb_pv_kit/inverter.py (74%)
 create mode 100644 packages/modules/devices/openWB/vendor.py
 create mode 100644 packages/modules/devices/opendtu/opendtu/__init__.py
 rename packages/modules/devices/opendtu/{ => opendtu}/config.py (71%)
 rename packages/modules/devices/opendtu/{ => opendtu}/device.py (67%)
 rename packages/modules/devices/opendtu/{ => opendtu}/inverter.py (70%)
 create mode 100644 packages/modules/devices/opendtu/vendor.py
 delete mode 100644 packages/modules/devices/powerdog/device.py
 create mode 100644 packages/modules/devices/powerdog/powerdog/__init__.py
 rename packages/modules/devices/powerdog/{ => powerdog}/config.py (92%)
 rename packages/modules/devices/powerdog/{ => powerdog}/counter.py (96%)
 create mode 100644 packages/modules/devices/powerdog/powerdog/device.py
 rename packages/modules/devices/powerdog/{ => powerdog}/inverter.py (95%)
 create mode 100644 packages/modules/devices/powerdog/vendor.py
 create mode 100644 packages/modules/devices/powerfox/powerfox/__init__.py
 rename packages/modules/devices/powerfox/{ => powerfox}/config.py (92%)
 rename packages/modules/devices/powerfox/{ => powerfox}/counter.py (94%)
 rename packages/modules/devices/powerfox/{ => powerfox}/device.py (80%)
 rename packages/modules/devices/powerfox/{ => powerfox}/inverter.py (94%)
 create mode 100644 packages/modules/devices/powerfox/vendor.py
 create mode 100644 packages/modules/devices/qcells/qcells/__init__.py
 rename packages/modules/devices/qcells/{ => qcells}/bat.py (96%)
 rename packages/modules/devices/qcells/{ => qcells}/config.py (94%)
 rename packages/modules/devices/qcells/{ => qcells}/counter.py (97%)
 rename packages/modules/devices/qcells/{ => qcells}/device.py (83%)
 rename packages/modules/devices/qcells/{ => qcells}/inverter.py (96%)
 create mode 100644 packages/modules/devices/qcells/vendor.py
 create mode 100644 packages/modules/devices/rct/rct/__init__.py
 rename packages/modules/devices/rct/{ => rct}/bat.py (94%)
 rename packages/modules/devices/rct/{ => rct}/config.py (94%)
 rename packages/modules/devices/rct/{ => rct}/counter.py (96%)
 rename packages/modules/devices/rct/{ => rct}/device.py (87%)
 rename packages/modules/devices/rct/{ => rct}/inverter.py (93%)
 rename packages/modules/devices/rct/{ => rct}/rct_lib.py (100%)
 mode change 100755 => 100644
 create mode 100644 packages/modules/devices/rct/vendor.py
 delete mode 100644 packages/modules/devices/saxpower/device.py
 create mode 100644 packages/modules/devices/saxpower/saxpower/__init__.py
 rename packages/modules/devices/saxpower/{ => saxpower}/bat.py (96%)
 rename packages/modules/devices/saxpower/{ => saxpower}/config.py (89%)
 create mode 100644 packages/modules/devices/saxpower/saxpower/device.py
 create mode 100644 packages/modules/devices/saxpower/vendor.py
 create mode 100644 packages/modules/devices/shelly/__init__.py
 create mode 100644 packages/modules/devices/shelly/shelly/__init__.py
 rename packages/modules/devices/shelly/{ => shelly}/bat.py (97%)
 rename packages/modules/devices/shelly/{ => shelly}/config.py (94%)
 rename packages/modules/devices/shelly/{ => shelly}/counter.py (97%)
 rename packages/modules/devices/shelly/{ => shelly}/device.py (88%)
 rename packages/modules/devices/shelly/{ => shelly}/inverter.py (97%)
 create mode 100644 packages/modules/devices/shelly/vendor.py
 delete mode 100644 packages/modules/devices/siemens/device.py
 create mode 100644 packages/modules/devices/siemens/siemens/__init__.py
 rename packages/modules/devices/siemens/{ => siemens}/bat.py (96%)
 rename packages/modules/devices/siemens/{ => siemens}/config.py (94%)
 rename packages/modules/devices/siemens/{ => siemens}/counter.py (95%)
 create mode 100644 packages/modules/devices/siemens/siemens/device.py
 rename packages/modules/devices/siemens/{ => siemens}/inverter.py (95%)
 create mode 100644 packages/modules/devices/siemens/siemens_sentron/__init__.py
 rename packages/modules/devices/{ => siemens}/siemens_sentron/config.py (89%)
 rename packages/modules/devices/{ => siemens}/siemens_sentron/counter.py (96%)
 rename packages/modules/devices/{ => siemens}/siemens_sentron/device.py (95%)
 create mode 100644 packages/modules/devices/siemens/vendor.py
 create mode 100644 packages/modules/devices/sma/sma_shm/__init__.py
 rename packages/modules/devices/{ => sma}/sma_shm/config.py (93%)
 rename packages/modules/devices/{ => sma}/sma_shm/counter.py (91%)
 rename packages/modules/devices/{ => sma}/sma_shm/counter_test.py (97%)
 rename packages/modules/devices/{ => sma}/sma_shm/device.py (86%)
 rename packages/modules/devices/{ => sma}/sma_shm/inverter.py (81%)
 rename packages/modules/devices/{ => sma}/sma_shm/speedwire_listener.py (94%)
 rename packages/modules/devices/{ => sma}/sma_shm/speedwiredecoder.py (100%)
 rename packages/modules/devices/{ => sma}/sma_shm/utils.py (93%)
 create mode 100644 packages/modules/devices/sma/sma_sunny_boy/__init__.py
 rename packages/modules/devices/{ => sma}/sma_sunny_boy/bat.py (96%)
 rename packages/modules/devices/{ => sma}/sma_sunny_boy/bat_smart_energy.py (96%)
 rename packages/modules/devices/{ => sma}/sma_sunny_boy/config.py (93%)
 rename packages/modules/devices/{ => sma}/sma_sunny_boy/counter.py (86%)
 rename packages/modules/devices/{ => sma}/sma_sunny_boy/device.py (87%)
 rename packages/modules/devices/{ => sma}/sma_sunny_boy/inv_version.py (100%)
 rename packages/modules/devices/{ => sma}/sma_sunny_boy/inverter.py (94%)
 rename packages/modules/devices/{ => sma}/sma_sunny_boy/sma_sunny_boy_test.py (91%)
 create mode 100644 packages/modules/devices/sma/sma_sunny_island/__init__.py
 rename packages/modules/devices/{ => sma}/sma_sunny_island/bat.py (95%)
 rename packages/modules/devices/{ => sma}/sma_sunny_island/config.py (89%)
 rename packages/modules/devices/{ => sma}/sma_sunny_island/device.py (91%)
 create mode 100644 packages/modules/devices/sma/sma_webbox/__init__.py
 rename packages/modules/devices/{ => sma}/sma_webbox/config.py (89%)
 rename packages/modules/devices/{ => sma}/sma_webbox/device.py (94%)
 rename packages/modules/devices/{ => sma}/sma_webbox/inverter.py (95%)
 create mode 100644 packages/modules/devices/sma/vendor.py
 create mode 100644 packages/modules/devices/smart_me/smart_me/__init__.py
 rename packages/modules/devices/smart_me/{ => smart_me}/config.py (92%)
 rename packages/modules/devices/smart_me/{ => smart_me}/counter.py (96%)
 rename packages/modules/devices/smart_me/{ => smart_me}/device.py (81%)
 rename packages/modules/devices/smart_me/{ => smart_me}/inverter.py (94%)
 create mode 100644 packages/modules/devices/smart_me/vendor.py
 create mode 100644 packages/modules/devices/smartfox/smartfox/__init__.py
 rename packages/modules/devices/smartfox/{ => smartfox}/config.py (88%)
 rename packages/modules/devices/smartfox/{ => smartfox}/counter.py (97%)
 rename packages/modules/devices/smartfox/{ => smartfox}/device.py (87%)
 create mode 100644 packages/modules/devices/smartfox/vendor.py
 create mode 100644 packages/modules/devices/sofar/__init__.py
 create mode 100644 packages/modules/devices/sofar/sofar/__init__.py
 rename packages/modules/devices/{azzurro_sofar => sofar/sofar}/bat.py (97%)
 rename packages/modules/devices/{azzurro_sofar => sofar/sofar}/config.py (92%)
 rename packages/modules/devices/{azzurro_sofar => sofar/sofar}/counter.py (81%)
 rename packages/modules/devices/{azzurro_sofar => sofar/sofar}/device.py (85%)
 rename packages/modules/devices/{azzurro_sofar => sofar/sofar}/inverter.py (97%)
 create mode 100644 packages/modules/devices/sofar/vendor.py
 create mode 100644 packages/modules/devices/solar_log/solar_log/__init__.py
 rename packages/modules/devices/solar_log/{ => solar_log}/config.py (91%)
 rename packages/modules/devices/solar_log/{ => solar_log}/counter.py (95%)
 rename packages/modules/devices/solar_log/{ => solar_log}/device.py (92%)
 rename packages/modules/devices/solar_log/{ => solar_log}/inverter.py (94%)
 create mode 100644 packages/modules/devices/solar_log/vendor.py
 create mode 100644 packages/modules/devices/solar_view/solar_view/__init__.py
 rename packages/modules/devices/solar_view/{ => solar_view}/api.py (100%)
 rename packages/modules/devices/solar_view/{ => solar_view}/config.py (92%)
 rename packages/modules/devices/solar_view/{ => solar_view}/counter.py (92%)
 rename packages/modules/devices/solar_view/{ => solar_view}/device.py (79%)
 rename packages/modules/devices/solar_view/{ => solar_view}/inverter.py (89%)
 create mode 100644 packages/modules/devices/solar_view/vendor.py
 create mode 100644 packages/modules/devices/solar_watt/solar_watt/__init__.py
 rename packages/modules/devices/solar_watt/{ => solar_watt}/api.py (100%)
 rename packages/modules/devices/solar_watt/{ => solar_watt}/bat.py (92%)
 rename packages/modules/devices/solar_watt/{ => solar_watt}/config.py (94%)
 rename packages/modules/devices/solar_watt/{ => solar_watt}/counter.py (91%)
 rename packages/modules/devices/solar_watt/{ => solar_watt}/device.py (87%)
 rename packages/modules/devices/solar_watt/{ => solar_watt}/inverter.py (90%)
 create mode 100644 packages/modules/devices/solar_watt/vendor.py
 create mode 100644 packages/modules/devices/solar_world/solar_world/__init__.py
 rename packages/modules/devices/solar_world/{ => solar_world}/config.py (92%)
 rename packages/modules/devices/solar_world/{ => solar_world}/counter.py (94%)
 rename packages/modules/devices/solar_world/{ => solar_world}/device.py (89%)
 rename packages/modules/devices/solar_world/{ => solar_world}/inverter.py (94%)
 create mode 100644 packages/modules/devices/solar_world/vendor.py
 create mode 100644 packages/modules/devices/solaredge/solaredge/__init__.py
 rename packages/modules/devices/solaredge/{ => solaredge}/bat.py (96%)
 rename packages/modules/devices/solaredge/{ => solaredge}/config.py (96%)
 rename packages/modules/devices/solaredge/{ => solaredge}/counter.py (91%)
 rename packages/modules/devices/solaredge/{ => solaredge}/device.py (93%)
 rename packages/modules/devices/solaredge/{ => solaredge}/device_test.py (84%)
 rename packages/modules/devices/solaredge/{ => solaredge}/external_inverter.py (89%)
 rename packages/modules/devices/solaredge/{ => solaredge}/inverter.py (94%)
 rename packages/modules/devices/solaredge/{ => solaredge}/inverter_test.py (83%)
 rename packages/modules/devices/solaredge/{ => solaredge}/meter.py (100%)
 rename packages/modules/devices/solaredge/{ => solaredge}/meter_test.py (92%)
 rename packages/modules/devices/solaredge/{ => solaredge}/scale.py (100%)
 create mode 100644 packages/modules/devices/solaredge/vendor.py
 create mode 100644 packages/modules/devices/solarmax/solarmax/__init__.py
 rename packages/modules/devices/solarmax/{ => solarmax}/bat.py (95%)
 rename packages/modules/devices/solarmax/{ => solarmax}/config.py (92%)
 rename packages/modules/devices/solarmax/{ => solarmax}/device.py (90%)
 rename packages/modules/devices/solarmax/{ => solarmax}/inverter.py (95%)
 create mode 100644 packages/modules/devices/solarmax/vendor.py
 create mode 100644 packages/modules/devices/solax/solax/__init__.py
 rename packages/modules/devices/solax/{ => solax}/bat.py (96%)
 rename packages/modules/devices/solax/{ => solax}/config.py (94%)
 rename packages/modules/devices/solax/{ => solax}/counter.py (97%)
 rename packages/modules/devices/solax/{ => solax}/device.py (93%)
 rename packages/modules/devices/solax/{ => solax}/inverter.py (96%)
 create mode 100644 packages/modules/devices/solax/vendor.py
 create mode 100644 packages/modules/devices/sonnenbatterie/sonnenbatterie/__init__.py
 rename packages/modules/devices/sonnenbatterie/{ => sonnenbatterie}/bat.py (98%)
 rename packages/modules/devices/sonnenbatterie/{ => sonnenbatterie}/config.py (91%)
 rename packages/modules/devices/sonnenbatterie/{ => sonnenbatterie}/counter.py (98%)
 rename packages/modules/devices/sonnenbatterie/{ => sonnenbatterie}/device.py (91%)
 rename packages/modules/devices/sonnenbatterie/{ => sonnenbatterie}/inverter.py (97%)
 create mode 100644 packages/modules/devices/sonnenbatterie/vendor.py
 create mode 100644 packages/modules/devices/studer/studer/__init__.py
 rename packages/modules/devices/studer/{ => studer}/bat.py (96%)
 rename packages/modules/devices/studer/{ => studer}/config.py (93%)
 rename packages/modules/devices/studer/{ => studer}/device.py (94%)
 rename packages/modules/devices/studer/{ => studer}/inverter.py (97%)
 create mode 100644 packages/modules/devices/studer/vendor.py
 create mode 100644 packages/modules/devices/sungrow/sungrow/__init__.py
 rename packages/modules/devices/sungrow/{ => sungrow}/bat.py (96%)
 rename packages/modules/devices/sungrow/{ => sungrow}/config.py (91%)
 rename packages/modules/devices/sungrow/{ => sungrow}/counter.py (96%)
 rename packages/modules/devices/sungrow/{ => sungrow}/device.py (91%)
 rename packages/modules/devices/sungrow/{ => sungrow}/inverter.py (93%)
 rename packages/modules/devices/sungrow/{ => sungrow}/modbus.md (99%)
 rename packages/modules/devices/sungrow/{ => sungrow}/version.py (100%)
 create mode 100644 packages/modules/devices/sungrow/vendor.py
 create mode 100644 packages/modules/devices/sunways/sunways/__init__.py
 rename packages/modules/devices/sunways/{ => sunways}/config.py (89%)
 rename packages/modules/devices/sunways/{ => sunways}/device.py (96%)
 rename packages/modules/devices/sunways/{ => sunways}/inverter.py (96%)
 create mode 100644 packages/modules/devices/sunways/vendor.py
 create mode 100644 packages/modules/devices/tasmota/tasmota/__init__.py
 rename packages/modules/devices/tasmota/{ => tasmota}/config.py (89%)
 rename packages/modules/devices/tasmota/{ => tasmota}/counter.py (95%)
 rename packages/modules/devices/tasmota/{ => tasmota}/device.py (96%)
 create mode 100644 packages/modules/devices/tasmota/vendor.py
 create mode 100644 packages/modules/devices/tesla/tesla/__init__.py
 rename packages/modules/devices/tesla/{ => tesla}/bat.py (89%)
 rename packages/modules/devices/tesla/{ => tesla}/config.py (94%)
 rename packages/modules/devices/tesla/{ => tesla}/counter.py (94%)
 rename packages/modules/devices/tesla/{ => tesla}/device.py (96%)
 rename packages/modules/devices/tesla/{ => tesla}/http_client.py (100%)
 rename packages/modules/devices/tesla/{ => tesla}/inverter.py (88%)
 rename packages/modules/devices/tesla/{ => tesla}/tesla.php (100%)
 rename packages/modules/devices/tesla/{ => tesla}/tesla_test.py (97%)
 create mode 100644 packages/modules/devices/tesla/vendor.py
 create mode 100644 packages/modules/devices/varta/varta/__init__.py
 rename packages/modules/devices/varta/{ => varta}/bat_api.py (97%)
 rename packages/modules/devices/varta/{ => varta}/bat_modbus.py (96%)
 rename packages/modules/devices/varta/{ => varta}/config.py (95%)
 rename packages/modules/devices/varta/{ => varta}/counter.py (95%)
 rename packages/modules/devices/varta/{ => varta}/device.py (90%)
 create mode 100644 packages/modules/devices/varta/vendor.py
 create mode 100644 packages/modules/devices/victron/vendor.py
 create mode 100644 packages/modules/devices/victron/victron/__init__.py
 rename packages/modules/devices/victron/{ => victron}/bat.py (96%)
 rename packages/modules/devices/victron/{ => victron}/config.py (94%)
 rename packages/modules/devices/victron/{ => victron}/counter.py (97%)
 rename packages/modules/devices/victron/{ => victron}/device.py (94%)
 rename packages/modules/devices/victron/{ => victron}/inverter.py (97%)
 create mode 100644 packages/modules/devices/vzlogger/vendor.py
 create mode 100644 packages/modules/devices/vzlogger/vzlogger/__init__.py
 rename packages/modules/devices/vzlogger/{ => vzlogger}/config.py (93%)
 rename packages/modules/devices/vzlogger/{ => vzlogger}/counter.py (91%)
 rename packages/modules/devices/vzlogger/{ => vzlogger}/counter_test.py (85%)
 rename packages/modules/devices/vzlogger/{ => vzlogger}/device.py (83%)
 rename packages/modules/devices/vzlogger/{ => vzlogger}/inverter.py (91%)
 rename packages/modules/devices/vzlogger/{ => vzlogger}/utils.py (100%)
 create mode 100644 packages/modules/devices/youless/vendor.py
 create mode 100644 packages/modules/devices/youless/youless/__init__.py
 rename packages/modules/devices/youless/{ => youless}/config.py (90%)
 rename packages/modules/devices/youless/{ => youless}/device.py (90%)
 rename packages/modules/devices/youless/{ => youless}/inverter.py (94%)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index c41f583a15..6c0732998b 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -35,7 +35,7 @@
 from control.general import Prices
 from modules.common.abstract_vehicle import GeneralVehicleConfig
 from modules.common.component_type import ComponentType
-from modules.devices.sungrow.version import Version
+from modules.devices.sungrow.sungrow.version import Version
 from modules.display_themes.cards.config import CardsDisplayTheme
 from modules.ripple_control_receivers.gpio.config import GpioRcr
 from modules.web_themes.standard_legacy.config import StandardLegacyWebTheme
diff --git a/packages/modules/devices/azzurro_sofar/__init__.py b/packages/modules/devices/alpha_ess/alpha_ess/__init__.py
similarity index 100%
rename from packages/modules/devices/azzurro_sofar/__init__.py
rename to packages/modules/devices/alpha_ess/alpha_ess/__init__.py
diff --git a/packages/modules/devices/alpha_ess/bat.py b/packages/modules/devices/alpha_ess/alpha_ess/bat.py
similarity index 96%
rename from packages/modules/devices/alpha_ess/bat.py
rename to packages/modules/devices/alpha_ess/alpha_ess/bat.py
index d163fbeb4a..2fc7f1d7c7 100644
--- a/packages/modules/devices/alpha_ess/bat.py
+++ b/packages/modules/devices/alpha_ess/alpha_ess/bat.py
@@ -4,7 +4,7 @@
 from typing import Dict, Union
 
 from dataclass_utils import dataclass_from_dict
-from modules.devices.alpha_ess.config import AlphaEssBatSetup, AlphaEssConfiguration
+from modules.devices.alpha_ess.alpha_ess.config import AlphaEssBatSetup, AlphaEssConfiguration
 from modules.common import modbus
 from modules.common.component_state import BatState
 from modules.common.component_type import ComponentDescriptor
diff --git a/packages/modules/devices/alpha_ess/config.py b/packages/modules/devices/alpha_ess/alpha_ess/config.py
similarity index 94%
rename from packages/modules/devices/alpha_ess/config.py
rename to packages/modules/devices/alpha_ess/alpha_ess/config.py
index b880348dca..7188d5d97f 100644
--- a/packages/modules/devices/alpha_ess/config.py
+++ b/packages/modules/devices/alpha_ess/alpha_ess/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -18,11 +18,12 @@ def __init__(self, modbus_id: int = 85,
 class AlphaEss:
     def __init__(self,
                  name: str = "Alpha ESS",
-                 type: str = "alpha_ess",
+                 type: List[str] = ["alpha_ess", "alpha_ess"],
                  id: int = 0,
                  configuration: AlphaEssConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or AlphaEssConfiguration()
 
diff --git a/packages/modules/devices/alpha_ess/counter.py b/packages/modules/devices/alpha_ess/alpha_ess/counter.py
similarity index 76%
rename from packages/modules/devices/alpha_ess/counter.py
rename to packages/modules/devices/alpha_ess/alpha_ess/counter.py
index 2a9466905b..4af102a5b5 100644
--- a/packages/modules/devices/alpha_ess/counter.py
+++ b/packages/modules/devices/alpha_ess/alpha_ess/counter.py
@@ -1,9 +1,9 @@
 #!/usr/bin/env python3
 import time
-from typing import Callable, Dict, Union
+from typing import Dict, Union
 
 from dataclass_utils import dataclass_from_dict
-from modules.devices.alpha_ess.config import AlphaEssConfiguration, AlphaEssCounterSetup
+from modules.devices.alpha_ess.alpha_ess.config import AlphaEssConfiguration, AlphaEssCounterSetup
 from modules.common import modbus
 from modules.common.component_state import CounterState
 from modules.common.component_type import ComponentDescriptor
@@ -28,23 +28,22 @@ def __init__(self,
 
     def update(self):
         time.sleep(0.1)
-        factory_method = self.__get_values_factory()
-        counter_state = factory_method(self.__modbus_id)
+        counter_state = self.__get_values_factory()
         self.store.set(counter_state)
 
-    def __get_values_factory(self) -> Callable[[int], CounterState]:
+    def __get_values_factory(self) -> CounterState:
         if self.__device_config.source == 0 and self.__device_config.version == 0:
             return self.__get_values_before_v123
         else:
             return self.__get_values_since_v123
 
-    def __get_values_before_v123(self, unit: int) -> CounterState:
+    def __get_values_before_v123(self) -> CounterState:
         power, exported, imported = self.__tcp_client.read_holding_registers(
-            0x6, [modbus.ModbusDataType.INT_32] * 3, unit=unit)
+            0x6, [modbus.ModbusDataType.INT_32] * 3, unit=self.__modbus_id)
         exported *= 10
         imported *= 10
         currents = [val / 230 for val in self.__tcp_client.read_holding_registers(
-            0x0000, [ModbusDataType.INT_32]*3, unit=unit)]
+            0x0000, [ModbusDataType.INT_32]*3, unit=self.__modbus_id)]
 
         counter_state = CounterState(
             currents=currents,
@@ -54,14 +53,14 @@ def __get_values_before_v123(self, unit: int) -> CounterState:
         )
         return counter_state
 
-    def __get_values_since_v123(self, unit: int) -> CounterState:
-        power = self.__tcp_client.read_holding_registers(0x0021, ModbusDataType.INT_32, unit=unit)
+    def __get_values_since_v123(self) -> CounterState:
+        power = self.__tcp_client.read_holding_registers(0x0021, ModbusDataType.INT_32, unit=self.__modbus_id)
         exported, imported = [
             val * 10 for val in self.__tcp_client.read_holding_registers(
-                0x0010, [ModbusDataType.INT_32] * 2, unit=unit
+                0x0010, [ModbusDataType.INT_32] * 2, unit=self.__modbus_id
             )]
         currents = [val / 1000 for val in self.__tcp_client.read_holding_registers(
-            0x0017, [ModbusDataType.INT_16]*3, unit=unit)]
+            0x0017, [ModbusDataType.INT_16]*3, unit=self.__modbus_id)]
 
         counter_state = CounterState(
             currents=currents,
diff --git a/packages/modules/devices/alpha_ess/device.py b/packages/modules/devices/alpha_ess/alpha_ess/device.py
similarity index 89%
rename from packages/modules/devices/alpha_ess/device.py
rename to packages/modules/devices/alpha_ess/alpha_ess/device.py
index 0cfe2407e9..65d887dd7c 100644
--- a/packages/modules/devices/alpha_ess/device.py
+++ b/packages/modules/devices/alpha_ess/alpha_ess/device.py
@@ -3,13 +3,14 @@
 from typing import Iterable, Union
 
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.alpha_ess.config import AlphaEss, AlphaEssBatSetup, AlphaEssCounterSetup, AlphaEssInverterSetup
+from modules.devices.alpha_ess.alpha_ess.config import (
+    AlphaEss, AlphaEssBatSetup, AlphaEssCounterSetup, AlphaEssInverterSetup)
 from modules.common import modbus
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.alpha_ess import bat
-from modules.devices.alpha_ess import counter
-from modules.devices.alpha_ess import inverter
+from modules.devices.alpha_ess.alpha_ess import bat
+from modules.devices.alpha_ess.alpha_ess import counter
+from modules.devices.alpha_ess.alpha_ess import inverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/alpha_ess/inverter.py b/packages/modules/devices/alpha_ess/alpha_ess/inverter.py
similarity index 95%
rename from packages/modules/devices/alpha_ess/inverter.py
rename to packages/modules/devices/alpha_ess/alpha_ess/inverter.py
index b2f0e34634..d80497e061 100644
--- a/packages/modules/devices/alpha_ess/inverter.py
+++ b/packages/modules/devices/alpha_ess/alpha_ess/inverter.py
@@ -2,7 +2,7 @@
 from typing import Dict, Union
 
 from dataclass_utils import dataclass_from_dict
-from modules.devices.alpha_ess.config import AlphaEssConfiguration, AlphaEssInverterSetup
+from modules.devices.alpha_ess.alpha_ess.config import AlphaEssConfiguration, AlphaEssInverterSetup
 from modules.common import modbus
 from modules.common.component_state import InverterState
 from modules.common.component_type import ComponentDescriptor
diff --git a/packages/modules/devices/alpha_ess/vendor.py b/packages/modules/devices/alpha_ess/vendor.py
new file mode 100644
index 0000000000..e2941cf51c
--- /dev/null
+++ b/packages/modules/devices/alpha_ess/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "AlphaESS"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/http/__init__.py b/packages/modules/devices/azzurro_zcs/azzurro_zcs/__init__.py
similarity index 100%
rename from packages/modules/devices/http/__init__.py
rename to packages/modules/devices/azzurro_zcs/azzurro_zcs/__init__.py
diff --git a/packages/modules/devices/azzurro_zcs/bat.py b/packages/modules/devices/azzurro_zcs/azzurro_zcs/bat.py
similarity index 96%
rename from packages/modules/devices/azzurro_zcs/bat.py
rename to packages/modules/devices/azzurro_zcs/azzurro_zcs/bat.py
index efedf0e59f..5d5eb7a7c4 100644
--- a/packages/modules/devices/azzurro_zcs/bat.py
+++ b/packages/modules/devices/azzurro_zcs/azzurro_zcs/bat.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_bat_value_store
-from modules.devices.azzurro_zcs.config import ZCSBatSetup
+from modules.devices.azzurro_zcs.azzurro_zcs.config import ZCSBatSetup
 
 
 class ZCSBat:
diff --git a/packages/modules/devices/azzurro_zcs/config.py b/packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py
similarity index 93%
rename from packages/modules/devices/azzurro_zcs/config.py
rename to packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py
index c0abc3d919..cde64ae6bf 100644
--- a/packages/modules/devices/azzurro_zcs/config.py
+++ b/packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class ZCS:
     def __init__(self,
                  name: str = "Azzurro - ZCS/Sofar HYD3-6k 1P",
-                 type: str = "azzurro_zcs",
+                 type: List[str] = ["azzurro_zcs", "azzurro_zcs"],
                  id: int = 0,
                  configuration: ZCSConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or ZCSConfiguration()
 
diff --git a/packages/modules/devices/azzurro_zcs/counter.py b/packages/modules/devices/azzurro_zcs/azzurro_zcs/counter.py
similarity index 77%
rename from packages/modules/devices/azzurro_zcs/counter.py
rename to packages/modules/devices/azzurro_zcs/azzurro_zcs/counter.py
index 5567094905..33205d44e3 100644
--- a/packages/modules/devices/azzurro_zcs/counter.py
+++ b/packages/modules/devices/azzurro_zcs/azzurro_zcs/counter.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_counter_value_store
-from modules.devices.azzurro_zcs.config import ZCSCounterSetup
+from modules.devices.azzurro_zcs.azzurro_zcs.config import ZCSCounterSetup
 
 
 class ZCSCounter:
@@ -41,16 +41,16 @@ def update(self, client: ModbusTcpClient_):
 
         exported = [value * 10
                     for value in client.read_input_registers(
-                            # 0x021E Total energy injected into the grid UInt16 Unit 1kWh high
-                            # 0x021F Total energy injected into the grid UInt16 Unit 1kWh low
-                            0x021E, [ModbusDataType.UINT_16] * 10,
-                            wordorder=Endian.Little, unit=self.__modbus_id)]
+                        # 0x021E Total energy injected into the grid UInt16 Unit 1kWh high
+                        # 0x021F Total energy injected into the grid UInt16 Unit 1kWh low
+                        0x021E, [ModbusDataType.UINT_16] * 10,
+                        wordorder=Endian.Little, unit=self.__modbus_id)]
         imported = [value * 10
                     for value in client.read_input_registers(
-                            # 0x0220 Total energy taken from the grid UInt16 Unit 1kWh high
-                            # 0x0221 Total energy taken from the grid UInt16 Unit 1kWh low
-                            0x0220, [ModbusDataType.UINT_16] * 10,
-                            wordorder=Endian.Little, unit=self.__modbus_id)]
+                        # 0x0220 Total energy taken from the grid UInt16 Unit 1kWh high
+                        # 0x0221 Total energy taken from the grid UInt16 Unit 1kWh low
+                        0x0220, [ModbusDataType.UINT_16] * 10,
+                        wordorder=Endian.Little, unit=self.__modbus_id)]
 
         counter_state = CounterState(
             imported=imported,
diff --git a/packages/modules/devices/azzurro_zcs/device.py b/packages/modules/devices/azzurro_zcs/azzurro_zcs/device.py
similarity index 84%
rename from packages/modules/devices/azzurro_zcs/device.py
rename to packages/modules/devices/azzurro_zcs/azzurro_zcs/device.py
index cfa94195fc..b175b75ce8 100644
--- a/packages/modules/devices/azzurro_zcs/device.py
+++ b/packages/modules/devices/azzurro_zcs/azzurro_zcs/device.py
@@ -6,10 +6,10 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.azzurro_zcs.bat import ZCSBat
-from modules.devices.azzurro_zcs.config import ZCS, ZCSBatSetup, ZCSCounterSetup, ZCSInverterSetup
-from modules.devices.azzurro_zcs.counter import ZCSCounter
-from modules.devices.azzurro_zcs.inverter import ZCSInverter
+from modules.devices.azzurro_zcs.azzurro_zcs.bat import ZCSBat
+from modules.devices.azzurro_zcs.azzurro_zcs.config import ZCS, ZCSBatSetup, ZCSCounterSetup, ZCSInverterSetup
+from modules.devices.azzurro_zcs.azzurro_zcs.counter import ZCSCounter
+from modules.devices.azzurro_zcs.azzurro_zcs.inverter import ZCSInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/azzurro_zcs/inverter.py b/packages/modules/devices/azzurro_zcs/azzurro_zcs/inverter.py
similarity index 96%
rename from packages/modules/devices/azzurro_zcs/inverter.py
rename to packages/modules/devices/azzurro_zcs/azzurro_zcs/inverter.py
index 11951de0ef..ecd56d3d81 100644
--- a/packages/modules/devices/azzurro_zcs/inverter.py
+++ b/packages/modules/devices/azzurro_zcs/azzurro_zcs/inverter.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_inverter_value_store
-from modules.devices.azzurro_zcs.config import ZCSInverterSetup
+from modules.devices.azzurro_zcs.azzurro_zcs.config import ZCSInverterSetup
 
 
 class ZCSInverter:
diff --git a/packages/modules/devices/azzurro_zcs/vendor.py b/packages/modules/devices/azzurro_zcs/vendor.py
new file mode 100644
index 0000000000..ce8a606213
--- /dev/null
+++ b/packages/modules/devices/azzurro_zcs/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Azzurro ZCS"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/huawei/__init__.py b/packages/modules/devices/batterx/batterx/__init__.py
similarity index 100%
rename from packages/modules/devices/huawei/__init__.py
rename to packages/modules/devices/batterx/batterx/__init__.py
diff --git a/packages/modules/devices/batterx/bat.py b/packages/modules/devices/batterx/batterx/bat.py
similarity index 95%
rename from packages/modules/devices/batterx/bat.py
rename to packages/modules/devices/batterx/batterx/bat.py
index abb5cf460a..4f9e327133 100644
--- a/packages/modules/devices/batterx/bat.py
+++ b/packages/modules/devices/batterx/batterx/bat.py
@@ -2,7 +2,7 @@
 from typing import Dict, Union
 
 from dataclass_utils import dataclass_from_dict
-from modules.devices.batterx.config import BatterXBatSetup
+from modules.devices.batterx.batterx.config import BatterXBatSetup
 from modules.common.component_state import BatState
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
diff --git a/packages/modules/devices/batterx/batterx_test.py b/packages/modules/devices/batterx/batterx/batterx_test.py
similarity index 90%
rename from packages/modules/devices/batterx/batterx_test.py
rename to packages/modules/devices/batterx/batterx/batterx_test.py
index e148bb22c6..5c542ae467 100644
--- a/packages/modules/devices/batterx/batterx_test.py
+++ b/packages/modules/devices/batterx/batterx/batterx_test.py
@@ -4,10 +4,11 @@
 
 
 from modules.common.component_state import BatState, CounterState, InverterState
-from modules.devices.batterx import bat, counter, inverter
-from modules.devices.batterx.config import (BatterX, BatterXBatSetup, BatterXConfiguration, BatterXCounterSetup,
-                                            BatterXInverterSetup)
-from modules.devices.batterx.device import create_device
+from modules.devices.batterx.batterx import bat, counter, inverter
+from modules.devices.batterx.batterx.config import (BatterX, BatterXBatSetup, BatterXConfiguration,
+                                                    BatterXCounterSetup,
+                                                    BatterXInverterSetup)
+from modules.devices.batterx.batterx.device import create_device
 
 
 def test_batterx(monkeypatch, requests_mock: requests_mock.mock):
diff --git a/packages/modules/devices/batterx/config.py b/packages/modules/devices/batterx/batterx/config.py
similarity index 95%
rename from packages/modules/devices/batterx/config.py
rename to packages/modules/devices/batterx/batterx/config.py
index 706e5edcb0..b7e1e42b43 100644
--- a/packages/modules/devices/batterx/config.py
+++ b/packages/modules/devices/batterx/batterx/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -11,11 +11,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class BatterX:
     def __init__(self,
                  name: str = "BatterX",
-                 type: str = "batterx",
+                 type: List[str] = ["batterx", "batterx"],
                  id: int = 0,
                  configuration: BatterXConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or BatterXConfiguration()
 
diff --git a/packages/modules/devices/batterx/counter.py b/packages/modules/devices/batterx/batterx/counter.py
similarity index 96%
rename from packages/modules/devices/batterx/counter.py
rename to packages/modules/devices/batterx/batterx/counter.py
index 5c72c5551a..1ff877154d 100644
--- a/packages/modules/devices/batterx/counter.py
+++ b/packages/modules/devices/batterx/batterx/counter.py
@@ -3,7 +3,7 @@
 from typing import Dict, List, Union
 
 from dataclass_utils import dataclass_from_dict
-from modules.devices.batterx.config import BatterXCounterSetup
+from modules.devices.batterx.batterx.config import BatterXCounterSetup
 from modules.common.component_state import CounterState
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
diff --git a/packages/modules/devices/batterx/device.py b/packages/modules/devices/batterx/batterx/device.py
similarity index 89%
rename from packages/modules/devices/batterx/device.py
rename to packages/modules/devices/batterx/batterx/device.py
index 2969d884b9..69bf308394 100644
--- a/packages/modules/devices/batterx/device.py
+++ b/packages/modules/devices/batterx/batterx/device.py
@@ -7,11 +7,11 @@
 from modules.common.component_context import MultiComponentUpdateContext
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.common.store import get_inverter_value_store
-from modules.devices.batterx import bat, external_inverter
-from modules.devices.batterx import counter
-from modules.devices.batterx import inverter
-from modules.devices.batterx.config import (BatterX, BatterXBatSetup, BatterXCounterSetup,
-                                            BatterXExternalInverterSetup, BatterXInverterSetup)
+from modules.devices.batterx.batterx import bat, external_inverter
+from modules.devices.batterx.batterx import counter
+from modules.devices.batterx.batterx import inverter
+from modules.devices.batterx.batterx.config import (BatterX, BatterXBatSetup, BatterXCounterSetup,
+                                                    BatterXExternalInverterSetup, BatterXInverterSetup)
 from modules.common import req
 
 log = logging.getLogger(__name__)
@@ -36,8 +36,8 @@ def create_external_inverter_component(component_config: BatterXExternalInverter
 
     def update_components(components: Iterable[batterx_component_classes]):
         resp_json = req.get_http_session().get(
-                    'http://' + device_config.configuration.ip_address + '/api.php?get=currentstate',
-                    timeout=5).json()
+            'http://' + device_config.configuration.ip_address + '/api.php?get=currentstate',
+            timeout=5).json()
         for component in components:
             component.update(resp_json)
 
diff --git a/packages/modules/devices/batterx/external_inverter.py b/packages/modules/devices/batterx/batterx/external_inverter.py
similarity index 94%
rename from packages/modules/devices/batterx/external_inverter.py
rename to packages/modules/devices/batterx/batterx/external_inverter.py
index ca19be214e..1ca5923ed1 100644
--- a/packages/modules/devices/batterx/external_inverter.py
+++ b/packages/modules/devices/batterx/batterx/external_inverter.py
@@ -2,7 +2,7 @@
 from typing import Dict, Union
 
 from dataclass_utils import dataclass_from_dict
-from modules.devices.batterx.config import BatterXExternalInverterSetup
+from modules.devices.batterx.batterx.config import BatterXExternalInverterSetup
 from modules.common.component_state import InverterState
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
diff --git a/packages/modules/devices/batterx/inverter.py b/packages/modules/devices/batterx/batterx/inverter.py
similarity index 95%
rename from packages/modules/devices/batterx/inverter.py
rename to packages/modules/devices/batterx/batterx/inverter.py
index ac7062dc9d..4253b5dbd3 100644
--- a/packages/modules/devices/batterx/inverter.py
+++ b/packages/modules/devices/batterx/batterx/inverter.py
@@ -2,7 +2,7 @@
 from typing import Dict, Union
 
 from dataclass_utils import dataclass_from_dict
-from modules.devices.batterx.config import BatterXInverterSetup
+from modules.devices.batterx.batterx.config import BatterXInverterSetup
 from modules.common.component_state import InverterState
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
diff --git a/packages/modules/devices/batterx/vendor.py b/packages/modules/devices/batterx/vendor.py
new file mode 100644
index 0000000000..e7beb0e846
--- /dev/null
+++ b/packages/modules/devices/batterx/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Batterx"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/huawei_smartlogger/__init__.py b/packages/modules/devices/benning/benning/__init__.py
similarity index 100%
rename from packages/modules/devices/huawei_smartlogger/__init__.py
rename to packages/modules/devices/benning/benning/__init__.py
diff --git a/packages/modules/devices/benning/config.py b/packages/modules/devices/benning/benning/config.py
similarity index 76%
rename from packages/modules/devices/benning/config.py
rename to packages/modules/devices/benning/benning/config.py
index 62e1233ef3..411c96736e 100644
--- a/packages/modules/devices/benning/config.py
+++ b/packages/modules/devices/benning/benning/config.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
-from modules.devices.json.config import Json, JsonConfiguration, JsonInverterConfiguration, JsonInverterSetup
+from modules.devices.generic.json.config import Json, JsonConfiguration, JsonInverterConfiguration, JsonInverterSetup
 
 
 @auto_str
@@ -14,10 +14,11 @@ def __init__(self, url: Optional[str] = None):
 class Benning(Json):
     def __init__(self,
                  name: str = "Benning",
-                 type: str = "benning",
+                 type: List[str] = ["benning", "benning"],
+                 group: str = "other",
                  id: int = 0,
                  configuration: BenningConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration)
+        super().__init__(name, type, group, id, configuration)
 
 
 @auto_str
diff --git a/packages/modules/devices/benning/device.py b/packages/modules/devices/benning/benning/device.py
similarity index 67%
rename from packages/modules/devices/benning/device.py
rename to packages/modules/devices/benning/benning/device.py
index dbf66854f7..312870c437 100644
--- a/packages/modules/devices/benning/device.py
+++ b/packages/modules/devices/benning/benning/device.py
@@ -1,8 +1,8 @@
 #!/usr/bin/env python3
 import logging
 from modules.common.abstract_device import DeviceDescriptor
-from modules.devices.benning.config import Benning
-from modules.devices.json.device import create_device as create_device_json
+from modules.devices.benning.benning.config import Benning
+from modules.devices.generic.json.device import create_device as create_device_json
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/benning/inverter.py b/packages/modules/devices/benning/benning/inverter.py
similarity index 70%
rename from packages/modules/devices/benning/inverter.py
rename to packages/modules/devices/benning/benning/inverter.py
index c824bfe348..e982b19c41 100644
--- a/packages/modules/devices/benning/inverter.py
+++ b/packages/modules/devices/benning/benning/inverter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.benning.config import BenningInverterSetup
+from modules.devices.benning.benning.config import BenningInverterSetup
 
 
 component_descriptor = ComponentDescriptor(configuration_factory=BenningInverterSetup)
diff --git a/packages/modules/devices/benning/vendor.py b/packages/modules/devices/benning/vendor.py
new file mode 100644
index 0000000000..adb81798d2
--- /dev/null
+++ b/packages/modules/devices/benning/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Benning"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/json/__init__.py b/packages/modules/devices/byd/byd/__init__.py
similarity index 100%
rename from packages/modules/devices/json/__init__.py
rename to packages/modules/devices/byd/byd/__init__.py
diff --git a/packages/modules/devices/byd/bat.py b/packages/modules/devices/byd/byd/bat.py
similarity index 93%
rename from packages/modules/devices/byd/bat.py
rename to packages/modules/devices/byd/byd/bat.py
index c5c9cbfd03..3154ff9160 100644
--- a/packages/modules/devices/byd/bat.py
+++ b/packages/modules/devices/byd/byd/bat.py
@@ -3,7 +3,8 @@
 from html.parser import HTMLParser
 from typing import Dict, List, Union, Tuple
 
-from modules.devices.byd.config import BYDBatSetup
+from dataclass_utils import dataclass_from_dict
+from modules.devices.byd.byd.config import BYDBatSetup
 from modules.common import req
 from modules.common.component_state import BatState
 from modules.common.component_type import ComponentDescriptor
@@ -19,7 +20,7 @@ def __init__(self,
                  component_config: Union[Dict, BYDBatSetup],
                  device_config) -> None:
         self.__device_config = device_config
-        self.component_config = component_config
+        self.component_config = dataclass_from_dict(BYDBatSetup, component_config)
         self.sim_counter = SimCounter(self.__device_config.id, self.component_config.id, prefix="speicher")
         self.store = get_bat_value_store(self.component_config.id)
         self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
diff --git a/packages/modules/devices/byd/byd_test.py b/packages/modules/devices/byd/byd/byd_test.py
similarity index 91%
rename from packages/modules/devices/byd/byd_test.py
rename to packages/modules/devices/byd/byd/byd_test.py
index a4205559c5..e8c15662a2 100644
--- a/packages/modules/devices/byd/byd_test.py
+++ b/packages/modules/devices/byd/byd/byd_test.py
@@ -1,6 +1,6 @@
 from pathlib import Path
 
-from modules.devices.byd import bat
+from modules.devices.byd.byd import bat
 
 
 def test_byd_rundata():
diff --git a/packages/modules/devices/byd/byd_test_sample_home.html b/packages/modules/devices/byd/byd/byd_test_sample_home.html
similarity index 99%
rename from packages/modules/devices/byd/byd_test_sample_home.html
rename to packages/modules/devices/byd/byd/byd_test_sample_home.html
index b7afdd9923..3c738efeea 100644
--- a/packages/modules/devices/byd/byd_test_sample_home.html
+++ b/packages/modules/devices/byd/byd/byd_test_sample_home.html
@@ -179,4 +179,4 @@ <h3>Home</h3>
 	</div>
 
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/packages/modules/devices/byd/byd/byd_test_sample_rundata.html b/packages/modules/devices/byd/byd/byd_test_sample_rundata.html
new file mode 100644
index 0000000000..1a4e7676cf
--- /dev/null
+++ b/packages/modules/devices/byd/byd/byd_test_sample_rundata.html
@@ -0,0 +1,249 @@
+<html><head>
+    <title>RunData</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" charset="utf-8">
+    <meta http-equiv="Pragma" content="no-cache">
+    <link href="RunData-Dateien/default.css" rel="stylesheet" type="text/css">
+    <script language="javascript">
+    function submitForm(){
+        var form = document.getElementById("RunData");
+        form.submit();
+    }
+    </script>
+    </head>
+    <body>
+    <center>
+    <br>
+    <h3>Run Data</h3>
+    </center>
+    <hr>
+    <center>
+    <br>
+    <form method="post" name="RunData" id="RunData" action="/goform/SetRunData">
+    <table class="common_table" cellspacing="0" cellpadding="0" border="0">
+    <tbody><tr>
+    <td colspan="2" width="20%"><h3>Array Num:</h3></td>
+    <td width="60%"><select name="ArrayNum" onchange="submitForm();">
+    <option value="1" id="1" selected="selected">1</option>
+    </select></td></tr>
+    <tr>
+    <td width="5%"></td>
+    <td width="15%">ArrayVoltage:</td>
+    <td width="60%"><input readonly="readonly" type="text" value="423.607">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>PackVoltage:</td>
+    <td><input readonly="readonly" type="text" value="423.799">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>Current:</td>
+    <td><input readonly="readonly" type="text" value="-3.230">&nbsp;&nbsp;A</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>SOC:</td>
+    <td><input readonly="readonly" type="text" value="95.900%"></td>
+    </tr>
+    <tr>
+    <td></td>
+    </tr><tr>
+    <td></td>
+    <td>SysTemp:</td>
+    <td><input readonly="readonly" type="text" value="24.000">&nbsp;&nbsp;℃</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>MaxCellVol:</td>
+    <td><input readonly="readonly" type="text" value="3.311">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>MinCellVol:</td>
+    <td><input readonly="readonly" type="text" value="3.306">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>MaxCellTemp:</td>
+    <td><input readonly="readonly" type="text" value="24.300">&nbsp;&nbsp;℃</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>MinCellTemp:</td>
+    <td><input readonly="readonly" type="text" value="22.100">&nbsp;&nbsp;℃</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>MaxVolPos:</td>
+    <td><input readonly="readonly" type="text" value="2"></td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>MinVolPos:</td>
+    <td><input readonly="readonly" type="text" value="4"></td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>MaxTempPos:</td>
+    <td><input readonly="readonly" type="text" value="7"></td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>MinTempPos:</td>
+    <td><input readonly="readonly" type="text" value="1"></td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>Power:</td>
+    <td><input readonly="readonly" type="text" value="-1.355">&nbsp;&nbsp;KW</td>
+    </tr>
+    </tbody></table><br>
+    <table class="common_table" cellspacing="0" cellpadding="0" border="0">
+    <tbody><tr>
+    <td colspan="2" width="40%"><h3>Series Battery Num:</h3></td>
+    <td width="40%"><select name="SeriesBatteryNum" onchange="submitForm();">
+    <option value="1" id="1" selected="selected">1</option>
+    <option value="2" id="2">2</option>
+    <option value="3" id="3">3</option>
+    <option value="4" id="4">4</option>
+    <option value="5" id="5">5</option>
+    <option value="6" id="6">6</option>
+    <option value="7" id="7">7</option>
+    <option value="8" id="8">8</option>
+    </select></td>
+    </tr><tr>
+    <td width="5%"></td>
+    <td width="15%">SerialNumber:</td>
+    <td width="60%"><input readonly="readonly" type="text" value="1C361810-00276" 2018="" 9="" 3="" 16:00:18="">&nbsp;&nbsp;</td>
+    </tr><tr>
+    <td width="5%"></td>
+    <td width="15%">BattVol:</td>
+    <td width="60%"><input readonly="readonly" type="text" value="52.929">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVolDiff:</td>
+    <td><input readonly="readonly" type="text" value="0.002">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[1]:</td>
+    <td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[2]:</td>
+    <td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[3]:</td>
+    <td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[4]:</td>
+    <td><input readonly="readonly" type="text" value="3.309">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[5]:</td>
+    <td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[6]:</td>
+    <td><input readonly="readonly" type="text" value="3.309">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[7]:</td>
+    <td><input readonly="readonly" type="text" value="3.309">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[8]:</td>
+    <td><input readonly="readonly" type="text" value="3.309">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[9]:</td>
+    <td><input readonly="readonly" type="text" value="3.307">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[10]:</td>
+    <td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[11]:</td>
+    <td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[12]:</td>
+    <td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[13]:</td>
+    <td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[14]:</td>
+    <td><input readonly="readonly" type="text" value="3.307">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[15]:</td>
+    <td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVol[16]:</td>
+    <td><input readonly="readonly" type="text" value="3.307">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVolMax:</td>
+    <td><input readonly="readonly" type="text" value="3.309">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellVolMin:</td>
+    <td><input readonly="readonly" type="text" value="3.307">&nbsp;&nbsp;V</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellTemp[1]:</td>
+    <td><input readonly="readonly" type="text" value="22.300">&nbsp;&nbsp;℃</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellTemp[2]:</td>
+    <td><input readonly="readonly" type="text" value="22.300">&nbsp;&nbsp;℃</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellTemp[3]:</td>
+    <td><input readonly="readonly" type="text" value="22.400">&nbsp;&nbsp;℃</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>CellTemp[4]:</td>
+    <td><input readonly="readonly" type="text" value="22.100">&nbsp;&nbsp;℃</td>
+    </tr>
+    <tr>
+    <td></td>
+    <td>BalanceCtrl:</td>
+    <td>1:<input type="checkbox" checked="checked" onclick="return false;">2:<input type="checkbox" onclick="return false;">3:<input type="checkbox" onclick="return false;">4:<input type="checkbox" onclick="return false;">5:<input type="checkbox" onclick="return false;">6:<input type="checkbox" onclick="return false;">7:<input type="checkbox" onclick="return false;">8:<input type="checkbox" onclick="return false;">9:<input type="checkbox" onclick="return false;">10:<input type="checkbox" onclick="return false;">11:<input type="checkbox" onclick="return false;">12:<input type="checkbox" onclick="return false;">13:<input type="checkbox" checked="checked" onclick="return false;">14:<input type="checkbox" checked="checked" onclick="return false;">15:<input type="checkbox" onclick="return false;">16:<input type="checkbox" onclick="return false;">
+    </td>
+    </tr>
+    </tbody></table>
+    </form>
+    </center>
+    
+    
+    </body></html>
\ No newline at end of file
diff --git a/packages/modules/devices/byd/config.py b/packages/modules/devices/byd/byd/config.py
similarity index 90%
rename from packages/modules/devices/byd/config.py
rename to packages/modules/devices/byd/byd/config.py
index 7f34a8a25f..fdd63a72b7 100644
--- a/packages/modules/devices/byd/config.py
+++ b/packages/modules/devices/byd/byd/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -16,11 +16,12 @@ def __init__(self,
 class BYD:
     def __init__(self,
                  name: str = "BYD",
-                 type: str = "byd",
+                 type: List[str] = ["byd", "byd"],
                  id: int = 0,
                  configuration: BYDConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or BYDConfiguration()
 
diff --git a/packages/modules/devices/byd/byd/device.py b/packages/modules/devices/byd/byd/device.py
new file mode 100644
index 0000000000..6ef87fd4d3
--- /dev/null
+++ b/packages/modules/devices/byd/byd/device.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python3
+import logging
+from typing import Dict, Optional, List, Union
+
+from dataclass_utils import dataclass_from_dict
+from helpermodules.cli import run_using_positional_cli_args
+from modules.devices.byd.byd.config import BYD, BYDBatSetup, BYDConfiguration
+from modules.devices.byd.byd import bat
+from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+
+log = logging.getLogger(__name__)
+
+
+class Device(AbstractDevice):
+    COMPONENT_TYPE_TO_CLASS = {
+        "bat": bat.BYDBat
+    }
+
+    def __init__(self, device_config:  Union[Dict, BYD]) -> None:
+        self.components = {}  # type: Dict[str, bat.BYDBat]
+        try:
+            self.device_config = dataclass_from_dict(BYD, device_config)
+        except Exception:
+            log.exception("Fehler im Modul "+self.device_config.name)
+
+    def add_component(self, component_config: Union[Dict, BYDBatSetup]) -> None:
+        if isinstance(component_config, Dict):
+            component_type = component_config["type"]
+        else:
+            component_type = component_config.type
+        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
+            component_type].component_descriptor.configuration_factory, component_config)
+        if component_type in self.COMPONENT_TYPE_TO_CLASS:
+            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
+                component_config,
+                self.device_config))
+        else:
+            raise Exception(
+                "illegal component type " + component_type + ". Allowed values: " +
+                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
+            )
+
+    def update(self) -> None:
+        log.debug("Start device reading " + str(self.components))
+        if self.components:
+            for component in self.components:
+                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
+                with SingleComponentUpdateContext(self.components[component].fault_state):
+                    self.components[component].update()
+        else:
+            log.warning(
+                self.device_config.name +
+                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
+            )
+
+
+COMPONENT_TYPE_TO_MODULE = {
+    "bat": bat
+}
+
+
+def read_legacy(component_type: str,
+                ip_address: str,
+                username: str,
+                password: str,
+                num: Optional[int] = None) -> None:
+    dev = Device(BYD(configuration=BYDConfiguration(user=username, password=password, ip_address=ip_address)))
+    if component_type in COMPONENT_TYPE_TO_MODULE:
+        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
+    else:
+        raise Exception(
+            "illegal component type " + component_type + ". Allowed values: " +
+            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
+        )
+    component_config.id = num
+    dev.add_component(component_config)
+
+    log.debug('byd IP-Adresse: ' + ip_address)
+    log.debug('byd Benutzer: ' + username)
+    log.debug('byd Passwort: ' + password)
+
+    dev.update()
+
+
+def main(argv: List[str]):
+    run_using_positional_cli_args(read_legacy, argv)
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=BYD)
diff --git a/packages/modules/devices/byd/byd_test_sample_rundata.html b/packages/modules/devices/byd/byd_test_sample_rundata.html
deleted file mode 100644
index 84a83f19e8..0000000000
--- a/packages/modules/devices/byd/byd_test_sample_rundata.html
+++ /dev/null
@@ -1,249 +0,0 @@
-<html><head>
-<title>RunData</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" charset="utf-8">
-<meta http-equiv="Pragma" content="no-cache">
-<link href="RunData-Dateien/default.css" rel="stylesheet" type="text/css">
-<script language="javascript">
-function submitForm(){
-	var form = document.getElementById("RunData");
-	form.submit();
-}
-</script>
-</head>
-<body>
-<center>
-<br>
-<h3>Run Data</h3>
-</center>
-<hr>
-<center>
-<br>
-<form method="post" name="RunData" id="RunData" action="/goform/SetRunData">
-<table class="common_table" cellspacing="0" cellpadding="0" border="0">
-<tbody><tr>
-<td colspan="2" width="20%"><h3>Array Num:</h3></td>
-<td width="60%"><select name="ArrayNum" onchange="submitForm();">
-<option value="1" id="1" selected="selected">1</option>
-</select></td></tr>
-<tr>
-<td width="5%"></td>
-<td width="15%">ArrayVoltage:</td>
-<td width="60%"><input readonly="readonly" type="text" value="423.607">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>PackVoltage:</td>
-<td><input readonly="readonly" type="text" value="423.799">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>Current:</td>
-<td><input readonly="readonly" type="text" value="-3.230">&nbsp;&nbsp;A</td>
-</tr>
-<tr>
-<td></td>
-<td>SOC:</td>
-<td><input readonly="readonly" type="text" value="95.900%"></td>
-</tr>
-<tr>
-<td></td>
-</tr><tr>
-<td></td>
-<td>SysTemp:</td>
-<td><input readonly="readonly" type="text" value="24.000">&nbsp;&nbsp;℃</td>
-</tr>
-<tr>
-<td></td>
-<td>MaxCellVol:</td>
-<td><input readonly="readonly" type="text" value="3.311">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>MinCellVol:</td>
-<td><input readonly="readonly" type="text" value="3.306">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>MaxCellTemp:</td>
-<td><input readonly="readonly" type="text" value="24.300">&nbsp;&nbsp;℃</td>
-</tr>
-<tr>
-<td></td>
-<td>MinCellTemp:</td>
-<td><input readonly="readonly" type="text" value="22.100">&nbsp;&nbsp;℃</td>
-</tr>
-<tr>
-<td></td>
-<td>MaxVolPos:</td>
-<td><input readonly="readonly" type="text" value="2"></td>
-</tr>
-<tr>
-<td></td>
-<td>MinVolPos:</td>
-<td><input readonly="readonly" type="text" value="4"></td>
-</tr>
-<tr>
-<td></td>
-<td>MaxTempPos:</td>
-<td><input readonly="readonly" type="text" value="7"></td>
-</tr>
-<tr>
-<td></td>
-<td>MinTempPos:</td>
-<td><input readonly="readonly" type="text" value="1"></td>
-</tr>
-<tr>
-<td></td>
-<td>Power:</td>
-<td><input readonly="readonly" type="text" value="-1.355">&nbsp;&nbsp;KW</td>
-</tr>
-</tbody></table><br>
-<table class="common_table" cellspacing="0" cellpadding="0" border="0">
-<tbody><tr>
-<td colspan="2" width="40%"><h3>Series Battery Num:</h3></td>
-<td width="40%"><select name="SeriesBatteryNum" onchange="submitForm();">
-<option value="1" id="1" selected="selected">1</option>
-<option value="2" id="2">2</option>
-<option value="3" id="3">3</option>
-<option value="4" id="4">4</option>
-<option value="5" id="5">5</option>
-<option value="6" id="6">6</option>
-<option value="7" id="7">7</option>
-<option value="8" id="8">8</option>
-</select></td>
-</tr><tr>
-<td width="5%"></td>
-<td width="15%">SerialNumber:</td>
-<td width="60%"><input readonly="readonly" type="text" value="1C361810-00276" 2018="" 9="" 3="" 16:00:18="">&nbsp;&nbsp;</td>
-</tr><tr>
-<td width="5%"></td>
-<td width="15%">BattVol:</td>
-<td width="60%"><input readonly="readonly" type="text" value="52.929">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVolDiff:</td>
-<td><input readonly="readonly" type="text" value="0.002">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[1]:</td>
-<td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[2]:</td>
-<td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[3]:</td>
-<td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[4]:</td>
-<td><input readonly="readonly" type="text" value="3.309">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[5]:</td>
-<td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[6]:</td>
-<td><input readonly="readonly" type="text" value="3.309">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[7]:</td>
-<td><input readonly="readonly" type="text" value="3.309">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[8]:</td>
-<td><input readonly="readonly" type="text" value="3.309">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[9]:</td>
-<td><input readonly="readonly" type="text" value="3.307">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[10]:</td>
-<td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[11]:</td>
-<td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[12]:</td>
-<td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[13]:</td>
-<td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[14]:</td>
-<td><input readonly="readonly" type="text" value="3.307">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[15]:</td>
-<td><input readonly="readonly" type="text" value="3.308">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVol[16]:</td>
-<td><input readonly="readonly" type="text" value="3.307">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVolMax:</td>
-<td><input readonly="readonly" type="text" value="3.309">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellVolMin:</td>
-<td><input readonly="readonly" type="text" value="3.307">&nbsp;&nbsp;V</td>
-</tr>
-<tr>
-<td></td>
-<td>CellTemp[1]:</td>
-<td><input readonly="readonly" type="text" value="22.300">&nbsp;&nbsp;℃</td>
-</tr>
-<tr>
-<td></td>
-<td>CellTemp[2]:</td>
-<td><input readonly="readonly" type="text" value="22.300">&nbsp;&nbsp;℃</td>
-</tr>
-<tr>
-<td></td>
-<td>CellTemp[3]:</td>
-<td><input readonly="readonly" type="text" value="22.400">&nbsp;&nbsp;℃</td>
-</tr>
-<tr>
-<td></td>
-<td>CellTemp[4]:</td>
-<td><input readonly="readonly" type="text" value="22.100">&nbsp;&nbsp;℃</td>
-</tr>
-<tr>
-<td></td>
-<td>BalanceCtrl:</td>
-<td>1:<input type="checkbox" checked="checked" onclick="return false;">2:<input type="checkbox" onclick="return false;">3:<input type="checkbox" onclick="return false;">4:<input type="checkbox" onclick="return false;">5:<input type="checkbox" onclick="return false;">6:<input type="checkbox" onclick="return false;">7:<input type="checkbox" onclick="return false;">8:<input type="checkbox" onclick="return false;">9:<input type="checkbox" onclick="return false;">10:<input type="checkbox" onclick="return false;">11:<input type="checkbox" onclick="return false;">12:<input type="checkbox" onclick="return false;">13:<input type="checkbox" checked="checked" onclick="return false;">14:<input type="checkbox" checked="checked" onclick="return false;">15:<input type="checkbox" onclick="return false;">16:<input type="checkbox" onclick="return false;">
-</td>
-</tr>
-</tbody></table>
-</form>
-</center>
-
-
-</body></html>
diff --git a/packages/modules/devices/byd/device.py b/packages/modules/devices/byd/device.py
deleted file mode 100644
index 116c7244e2..0000000000
--- a/packages/modules/devices/byd/device.py
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env python3
-import logging
-
-from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
-from modules.devices.byd.config import BYD, BYDBatSetup
-from modules.devices.byd import bat
-from modules.common.abstract_device import DeviceDescriptor
-
-log = logging.getLogger(__name__)
-
-
-def create_device(device_config: BYD):
-    def create_bat_component(component_config: BYDBatSetup):
-        return bat.BYDBat(component_config, device_config)
-
-    return ConfigurableDevice(
-        device_config=device_config,
-        component_factory=ComponentFactoryByType(
-            bat=create_bat_component
-        ),
-        component_updater=IndependentComponentUpdater(lambda component: component.update())
-    )
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=BYD)
diff --git a/packages/modules/devices/byd/vendor.py b/packages/modules/devices/byd/vendor.py
new file mode 100644
index 0000000000..cefeec2742
--- /dev/null
+++ b/packages/modules/devices/byd/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "BYD"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/kostal_piko/__init__.py b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/__init__.py
similarity index 100%
rename from packages/modules/devices/kostal_piko/__init__.py
rename to packages/modules/devices/carlo_gavazzi/carlo_gavazzi/__init__.py
diff --git a/packages/modules/devices/carlo_gavazzi/config.py b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py
similarity index 89%
rename from packages/modules/devices/carlo_gavazzi/config.py
rename to packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py
index 93f6e67fec..284f1709c0 100644
--- a/packages/modules/devices/carlo_gavazzi/config.py
+++ b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class CarloGavazzi:
     def __init__(self,
                  name: str = "Carlo Gavazzi",
-                 type: str = "carlo_gavazzi",
+                 type: List[str] = ["carlo_gavazzi", "carlo_gavazzi"],
                  id: int = 0,
                  configuration: CarloGavazziConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or CarloGavazziConfiguration()
 
diff --git a/packages/modules/devices/carlo_gavazzi/counter.py b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/counter.py
similarity index 91%
rename from packages/modules/devices/carlo_gavazzi/counter.py
rename to packages/modules/devices/carlo_gavazzi/carlo_gavazzi/counter.py
index efa07162e4..54cda923b0 100644
--- a/packages/modules/devices/carlo_gavazzi/counter.py
+++ b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/counter.py
@@ -3,7 +3,8 @@
 
 from pymodbus.constants import Endian
 
-from modules.devices.carlo_gavazzi.config import CarloGavazziCounterSetup
+from dataclass_utils import dataclass_from_dict
+from modules.devices.carlo_gavazzi.carlo_gavazzi.config import CarloGavazziCounterSetup
 from modules.common import modbus
 from modules.common.component_state import CounterState
 from modules.common.component_type import ComponentDescriptor
@@ -20,7 +21,7 @@ def __init__(self,
                  tcp_client: modbus.ModbusTcpClient_,
                  modbus_id: int) -> None:
         self.__device_id = device_id
-        self.component_config = component_config
+        self.component_config = dataclass_from_dict(CarloGavazziCounterSetup, component_config)
         self.__tcp_client = tcp_client
         self.__modbus_id = modbus_id
         self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="bezug")
diff --git a/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/device.py b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/device.py
new file mode 100644
index 0000000000..618d75e710
--- /dev/null
+++ b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/device.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python3
+import logging
+from typing import Dict, Optional, List, Union
+
+from dataclass_utils import dataclass_from_dict
+from helpermodules.cli import run_using_positional_cli_args
+from modules.devices.carlo_gavazzi.carlo_gavazzi import counter
+from modules.devices.carlo_gavazzi.carlo_gavazzi.config import CarloGavazzi, CarloGavazziCounterSetup
+from modules.common import modbus
+from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+
+log = logging.getLogger(__name__)
+
+
+class Device(AbstractDevice):
+    COMPONENT_TYPE_TO_CLASS = {
+        "counter": counter.CarloGavazziCounter,
+    }
+
+    def __init__(self, device_config: Union[Dict, CarloGavazzi]) -> None:
+        self.components = {}  # type: Dict[str, counter.CarloGavazziCounter]
+        try:
+            self.device_config = dataclass_from_dict(CarloGavazzi, device_config)
+            self.client = modbus.ModbusTcpClient_(
+                self.device_config.configuration.ip_address, self.device_config.configuration.port)
+        except Exception:
+            log.exception("Fehler im Modul "+self.device_config.name)
+
+    def add_component(self, component_config: Union[Dict, CarloGavazziCounterSetup]) -> None:
+        if isinstance(component_config, Dict):
+            component_type = component_config["type"]
+        else:
+            component_type = component_config.type
+        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
+            component_type].component_descriptor.configuration_factory, component_config)
+        if component_type in self.COMPONENT_TYPE_TO_CLASS:
+            self.components["component"+str(component_config.id)] = self.COMPONENT_TYPE_TO_CLASS[component_type](
+                self.device_config.id, component_config, self.client,
+                self.device_config.configuration.modbus_id)
+        else:
+            raise Exception(
+                "illegal component type " + component_type + ". Allowed values: " +
+                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
+            )
+
+    def update(self) -> None:
+        log.debug("Start device reading " + str(self.components))
+        if self.components:
+            for component in self.components:
+                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
+                with SingleComponentUpdateContext(self.components[component].fault_state):
+                    self.components[component].update()
+        else:
+            log.warning(
+                self.device_config.name +
+                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
+            )
+
+
+COMPONENT_TYPE_TO_MODULE = {
+    "counter": counter
+}
+
+
+def read_legacy(component_type: str, ip_address: str, num: Optional[int] = None) -> None:
+    device_config = CarloGavazzi()
+    device_config.configuration.ip_address = ip_address
+    dev = Device(device_config)
+    if component_type in COMPONENT_TYPE_TO_MODULE:
+        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
+    else:
+        raise Exception(
+            "illegal component type " + component_type + ". Allowed values: " +
+            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
+        )
+    component_config.id = num
+    dev.add_component(component_config)
+
+    log.debug('carlo gavazzi IP-Adresse: ' + str(ip_address))
+
+    dev.update()
+
+
+def main(argv: List[str]):
+    run_using_positional_cli_args(read_legacy, argv)
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=CarloGavazzi)
diff --git a/packages/modules/devices/carlo_gavazzi/device.py b/packages/modules/devices/carlo_gavazzi/device.py
deleted file mode 100644
index e29dfe17bc..0000000000
--- a/packages/modules/devices/carlo_gavazzi/device.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env python3
-import logging
-from typing import Iterable
-
-from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.carlo_gavazzi import counter
-from modules.devices.carlo_gavazzi.config import CarloGavazzi, CarloGavazziCounterSetup
-from modules.common import modbus
-from modules.common.abstract_device import DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-
-log = logging.getLogger(__name__)
-
-
-def create_device(device_config: CarloGavazzi):
-    def create_counter_component(component_config: CarloGavazziCounterSetup):
-        return counter.CarloGavazziCounter(device_config.id, component_config, client,
-                                           device_config.configuration.modbus_id)
-
-    def update_components(components: Iterable[counter.CarloGavazziCounter]):
-        with client:
-            for component in components:
-                with SingleComponentUpdateContext(component.fault_state):
-                    component.update()
-
-    try:
-        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
-    except Exception:
-        log.exception("Fehler in create_device")
-    return ConfigurableDevice(
-        device_config=device_config,
-        component_factory=ComponentFactoryByType(
-            counter=create_counter_component
-        ),
-        component_updater=MultiComponentUpdater(update_components)
-    )
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=CarloGavazzi)
diff --git a/packages/modules/devices/carlo_gavazzi/vendor.py b/packages/modules/devices/carlo_gavazzi/vendor.py
new file mode 100644
index 0000000000..1dad643a15
--- /dev/null
+++ b/packages/modules/devices/carlo_gavazzi/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Carlo Gavazzi"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/kostal_piko_old/__init__.py b/packages/modules/devices/deye/__init__.py
similarity index 100%
rename from packages/modules/devices/kostal_piko_old/__init__.py
rename to packages/modules/devices/deye/__init__.py
diff --git a/packages/modules/devices/deye/device_type.py b/packages/modules/devices/deye/device_type.py
deleted file mode 100644
index 6e38c65bab..0000000000
--- a/packages/modules/devices/deye/device_type.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from enum import Enum
-
-
-class DeviceType(Enum):
-    SINGLE_PHASE_STRING = 0x0200
-    SINGLE_PHASE_HYBRID = 0x0300
-    THREE_PHASE_LV_0 = 0x0500
-    THREE_PHASE_LV_1 = 0x0005
-    THREE_PHASE_HV = 0x0006
diff --git a/packages/modules/devices/kostal_plenticore/__init__.py b/packages/modules/devices/deye/deye/__init__.py
similarity index 100%
rename from packages/modules/devices/kostal_plenticore/__init__.py
rename to packages/modules/devices/deye/deye/__init__.py
diff --git a/packages/modules/devices/deye/bat.py b/packages/modules/devices/deye/deye/bat.py
similarity index 77%
rename from packages/modules/devices/deye/bat.py
rename to packages/modules/devices/deye/deye/bat.py
index aa52ea47c6..98feab67a0 100644
--- a/packages/modules/devices/deye/bat.py
+++ b/packages/modules/devices/deye/deye/bat.py
@@ -7,48 +7,42 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.deye.config import DeyeBatSetup
-from modules.devices.deye.device_type import DeviceType
+from modules.devices.deye.deye.config import DeyeBatSetup
+from modules.devices.deye.deye.device_type import DeviceType
 
 log = logging.getLogger(__name__)
 
 
 class DeyeBat:
-    def __init__(self, device_id: int, component_config: DeyeBatSetup, device_type: DeviceType) -> None:
+    def __init__(self, device_id: int, component_config: DeyeBatSetup) -> None:
         self.component_config = dataclass_from_dict(DeyeBatSetup, component_config)
         self.store = get_bat_value_store(self.component_config.id)
         self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
         self.__device_id = device_id
         self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="speicher")
-        self.device_type = device_type
 
-    def update(self, client: ModbusTcpClient_) -> None:
+    def update(self, client: ModbusTcpClient_, device_type: DeviceType) -> None:
         unit = self.component_config.configuration.modbus_id
 
-        if self.device_type == DeviceType.SINGLE_PHASE_STRING or self.device_type == DeviceType.SINGLE_PHASE_HYBRID:
+        if device_type == DeviceType.THREE_PHASE:
+            power = client.read_holding_registers(590, ModbusDataType.INT_16, unit=unit) * -1
+            soc = client.read_holding_registers(588, ModbusDataType.INT_16, unit=unit)
+            # 516: Geladen in kWh * 0,1
+            imported = client.read_holding_registers(516, ModbusDataType.UINT_16, unit=unit) * 100
+            # 518: Entladen in kWh * 0,1
+            exported = client.read_holding_registers(518, ModbusDataType.UINT_16, unit=unit) * 100
+        elif device_type == DeviceType.SINGLE_PHASE_STRING or device_type == DeviceType.SINGLE_PHASE_HYBRID:
             power = client.read_holding_registers(190, ModbusDataType.INT_16, unit=unit) * -1
             soc = client.read_holding_registers(184, ModbusDataType.INT_16, unit=unit)
 
-            if self.device_type == DeviceType.SINGLE_PHASE_HYBRID:
+            if device_type == DeviceType.SINGLE_PHASE_HYBRID:
                 # 516: Geladen in kWh * 0,1
                 imported = client.read_holding_registers(72, ModbusDataType.UINT_16, unit=unit) * 100
                 # 518: Entladen in kWh * 0,1
                 exported = client.read_holding_registers(74, ModbusDataType.UINT_16, unit=unit) * 100
-
-            elif self.device_type == DeviceType.SINGLE_PHASE_STRING:
+            elif device_type == DeviceType.SINGLE_PHASE_STRING:
                 imported, exported = self.sim_counter.sim_count(power)
 
-        else:  # THREE_PHASE_LV (0x0500, 0x0005), THREE_PHASE_HV (0x0006)
-            power = client.read_holding_registers(590, ModbusDataType.INT_16, unit=unit) * -1
-
-            if self.device_type == DeviceType.THREE_PHASE_HV:
-                power = power * 10
-            soc = client.read_holding_registers(588, ModbusDataType.INT_16, unit=unit)
-            # 516: Geladen in kWh * 0,1
-            imported = client.read_holding_registers(516, ModbusDataType.UINT_16, unit=unit) * 100
-            # 518: Entladen in kWh * 0,1
-            exported = client.read_holding_registers(518, ModbusDataType.UINT_16, unit=unit) * 100
-
         bat_state = BatState(
             power=power,
             soc=soc,
diff --git a/packages/modules/devices/deye/config.py b/packages/modules/devices/deye/deye/config.py
similarity index 89%
rename from packages/modules/devices/deye/config.py
rename to packages/modules/devices/deye/deye/config.py
index 38793440da..8f90f8854e 100644
--- a/packages/modules/devices/deye/config.py
+++ b/packages/modules/devices/deye/deye/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 
 from modules.common.component_setup import ComponentSetup
@@ -7,19 +7,22 @@
 class DeyeConfiguration:
     def __init__(self,
                  ip_address: Optional[str] = None,
-                 port: int = 8899):
+                 port: int = 8899,
+                 device_type: str = "three_phase"):
         self.ip_address = ip_address
         self.port = port
+        self.device_type = device_type
 
 
 class Deye:
     def __init__(self,
                  name: str = "Deye/Jinko (Anbindung per Modbus)",
-                 type: str = "deye",
+                 type: List[str] = ["deye", "deye"],
                  id: int = 0,
                  configuration: DeyeConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or DeyeConfiguration()
 
diff --git a/packages/modules/devices/deye/counter.py b/packages/modules/devices/deye/deye/counter.py
similarity index 78%
rename from packages/modules/devices/deye/counter.py
rename to packages/modules/devices/deye/deye/counter.py
index 1f6fc66bfe..fd936448c9 100644
--- a/packages/modules/devices/deye/counter.py
+++ b/packages/modules/devices/deye/deye/counter.py
@@ -6,51 +6,49 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.deye.config import DeyeCounterSetup
-from modules.devices.deye.device_type import DeviceType
+from modules.devices.deye.deye.config import DeyeCounterSetup
+from modules.devices.deye.deye.device_type import DeviceType
 
 
 class DeyeCounter:
-    def __init__(self, device_id: int, component_config: DeyeCounterSetup, device_type: DeviceType) -> None:
+    def __init__(self, device_id: int, component_config: DeyeCounterSetup) -> None:
         self.component_config = dataclass_from_dict(DeyeCounterSetup, component_config)
         self.store = get_counter_value_store(self.component_config.id)
         self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
         self.__device_id = device_id
         self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="bezug")
-        self.device_type = device_type
 
-    def update(self, client: ModbusTcpClient_):
+    def update(self, client: ModbusTcpClient_, device_type: DeviceType):
         unit = self.component_config.configuration.modbus_id
 
-        if self.device_type == DeviceType.SINGLE_PHASE_STRING or self.device_type == DeviceType.SINGLE_PHASE_HYBRID:
+        if device_type == DeviceType.THREE_PHASE:
+            currents = [c / 100 for c in client.read_holding_registers(613, [ModbusDataType.INT_16]*3, unit=unit)]
+            voltages = [v / 10 for v in client.read_holding_registers(644, [ModbusDataType.INT_16]*3, unit=unit)]
+            powers = client.read_holding_registers(616, [ModbusDataType.INT_16]*3, unit=unit)
+            power = sum(powers)
+            frequency = client.read_holding_registers(187, ModbusDataType.INT_32, unit=unit) * 100
+
+            # Wenn der Import/export Netz in wh gerechnet wird => *100 !! kommt in kw/h *0.1
+            imported = client.read_holding_registers(522, ModbusDataType.INT_16, unit=unit) * 100
+            exported = client.read_holding_registers(524, ModbusDataType.INT_16, unit=unit) * 100
+
+        elif device_type == DeviceType.SINGLE_PHASE_STRING or device_type == DeviceType.SINGLE_PHASE_HYBRID:
             frequency = client.read_holding_registers(79, ModbusDataType.INT_16, unit=unit) * 100
 
-            if self.device_type == DeviceType.SINGLE_PHASE_HYBRID:
+            if device_type == DeviceType.SINGLE_PHASE_HYBRID:
                 powers = [0]*3
                 currents = [0]*3
                 voltages = [0]*3
                 power = [0]
                 # High und low word vom import sind nicht in aufeinanderfolgenden Registern
                 imported, exported = self.sim_counter.sim_count(power)
-
-            elif self.device_type == DeviceType.SINGLE_PHASE_STRING:
+            elif device_type == DeviceType.SINGLE_PHASE_STRING:
                 currents = [c / 100 for c in client.read_holding_registers(76, [ModbusDataType.INT_16]*3, unit=unit)]
                 voltages = [v / 10 for v in client.read_holding_registers(70, [ModbusDataType.INT_16]*3, unit=unit)]
                 powers = [currents[i] * voltages[i] for i in range(0, 3)]
                 power = sum(powers)
                 imported, exported = self.sim_counter.sim_count(power)
 
-        else:  # THREE_PHASE_LV (0x0500, 0x0005), THREE_PHASE_HV (0x0006)
-            currents = [c / 100 for c in client.read_holding_registers(613, [ModbusDataType.INT_16]*3, unit=unit)]
-            voltages = [v / 10 for v in client.read_holding_registers(644, [ModbusDataType.INT_16]*3, unit=unit)]
-            powers = client.read_holding_registers(616, [ModbusDataType.INT_16]*3, unit=unit)
-            power = client.read_holding_registers(625, ModbusDataType.INT_16, unit=unit)
-            frequency = client.read_holding_registers(609, ModbusDataType.INT_16, unit=unit) / 100
-
-            # Wenn der Import/export Netz in wh gerechnet wird => *100 !! kommt in kw/h *0.1
-            imported = client.read_holding_registers(522, ModbusDataType.INT_16, unit=unit) * 100
-            exported = client.read_holding_registers(524, ModbusDataType.INT_16, unit=unit) * 100
-
         counter_state = CounterState(
             currents=currents,
             imported=imported,
diff --git a/packages/modules/devices/deye/device.py b/packages/modules/devices/deye/deye/device.py
similarity index 70%
rename from packages/modules/devices/deye/device.py
rename to packages/modules/devices/deye/deye/device.py
index 18cef2eb42..29722531f6 100644
--- a/packages/modules/devices/deye/device.py
+++ b/packages/modules/devices/deye/deye/device.py
@@ -6,37 +6,32 @@
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
-from modules.common.modbus import ModbusDataType, ModbusTcpClient_
-from modules.devices.deye.bat import DeyeBat
-from modules.devices.deye.counter import DeyeCounter
-from modules.devices.deye.inverter import DeyeInverter
-from modules.devices.deye import bat, counter, inverter
-from modules.devices.deye.config import Deye, DeyeBatSetup, DeyeConfiguration, DeyeCounterSetup, DeyeInverterSetup
+from modules.common.modbus import ModbusTcpClient_
+from modules.devices.deye.deye.bat import DeyeBat
+from modules.devices.deye.deye.counter import DeyeCounter
+from modules.devices.deye.deye.device_type import DeviceType
+from modules.devices.deye.deye.inverter import DeyeInverter
+from modules.devices.deye.deye import bat, counter, inverter
+from modules.devices.deye.deye.config import Deye, DeyeBatSetup, DeyeConfiguration, DeyeCounterSetup, DeyeInverterSetup
 
 log = logging.getLogger(__name__)
 
 
 def create_device(device_config: Deye):
     def create_bat_component(component_config: DeyeBatSetup):
-        device_type = client.read_holding_registers(
-            0, ModbusDataType.INT_16, unit=component_config.configuration.modbus_id)
-        return DeyeBat(device_config.id, component_config, device_type)
+        return DeyeBat(device_config.id, component_config)
 
     def create_counter_component(component_config: DeyeCounterSetup):
-        device_type = client.read_holding_registers(
-            0, ModbusDataType.INT_16, unit=component_config.configuration.modbus_id)
-        return DeyeCounter(device_config.id, component_config, device_type)
+        return DeyeCounter(device_config.id, component_config)
 
     def create_inverter_component(component_config: DeyeInverterSetup):
-        device_type = client.read_holding_registers(
-            0, ModbusDataType.INT_16, unit=component_config.configuration.modbus_id)
-        return DeyeInverter(device_config.id, component_config, device_type)
+        return DeyeInverter(device_config.id, component_config)
 
     def update_components(components: Iterable[Union[DeyeBat, DeyeCounter, DeyeInverter]]):
         with client as c:
             for component in components:
                 with SingleComponentUpdateContext(component.fault_state):
-                    component.update(c)
+                    component.update(c, DeviceType(device_config.configuration.device_type))
 
     try:
         client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
diff --git a/packages/modules/devices/deye/deye/device_type.py b/packages/modules/devices/deye/deye/device_type.py
new file mode 100644
index 0000000000..3baef0a7ba
--- /dev/null
+++ b/packages/modules/devices/deye/deye/device_type.py
@@ -0,0 +1,7 @@
+from enum import Enum
+
+
+class DeviceType(Enum):
+    SINGLE_PHASE_HYBRID = "single_phase_hybrid"
+    SINGLE_PHASE_STRING = "single_phase_string"
+    THREE_PHASE = "three_phase"
diff --git a/packages/modules/devices/deye/inverter.py b/packages/modules/devices/deye/deye/inverter.py
similarity index 71%
rename from packages/modules/devices/deye/inverter.py
rename to packages/modules/devices/deye/deye/inverter.py
index 9d60ebc30d..5322dc90e0 100644
--- a/packages/modules/devices/deye/inverter.py
+++ b/packages/modules/devices/deye/deye/inverter.py
@@ -8,35 +8,29 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.deye.config import DeyeInverterSetup
-from modules.devices.deye.device_type import DeviceType
+from modules.devices.deye.deye.config import DeyeInverterSetup
+from modules.devices.deye.deye.device_type import DeviceType
 
 
 class DeyeInverter:
-    def __init__(self, device_id: int,
-                 component_config: Union[Dict, DeyeInverterSetup],
-                 device_type: DeviceType) -> None:
+    def __init__(self, device_id: int, component_config: Union[Dict, DeyeInverterSetup]) -> None:
         self.component_config = dataclass_from_dict(DeyeInverterSetup, component_config)
         self.store = get_inverter_value_store(self.component_config.id)
         self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
         self.__device_id = device_id
         self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="pv")
-        self.device_type = device_type
 
-    def update(self, client: ModbusTcpClient_) -> None:
+    def update(self, client: ModbusTcpClient_, device_type: DeviceType) -> None:
         unit = self.component_config.configuration.modbus_id
 
-        if self.device_type == DeviceType.SINGLE_PHASE_STRING or self.device_type == DeviceType.SINGLE_PHASE_HYBRID:
-            power = sum(client.read_holding_registers(186, [ModbusDataType.INT_16]*4, unit=unit)) * -1
-            exported = self.sim_counter.sim_count(power)[1]
-
-        else:  # THREE_PHASE_LV (0x0500, 0x0005), THREE_PHASE_HV (0x0006)
+        if device_type == DeviceType.THREE_PHASE:
+            # Wechselrichter hat 2 mppt Tracker
             power = sum(client.read_holding_registers(672, [ModbusDataType.INT_16]*2, unit=unit)) * -1
-
-            if self.device_type == DeviceType.THREE_PHASE_HV:
-                power = power * 10
             # 534: Gesamt Produktion Wechselrichter unsigned integer in kWh * 0,1
             exported = client.read_holding_registers(534, ModbusDataType.UINT_16, unit=unit) * 100
+        elif device_type == DeviceType.SINGLE_PHASE_STRING or device_type == DeviceType.SINGLE_PHASE_HYBRID:
+            power = sum(client.read_holding_registers(186, [ModbusDataType.INT_16]*4, unit=unit)) * -1
+            exported = self.sim_counter.sim_count(power)[1]
 
         inverter_state = InverterState(
             power=power,
diff --git a/packages/modules/devices/deye/vendor.py b/packages/modules/devices/deye/vendor.py
new file mode 100644
index 0000000000..1a1b67fcb6
--- /dev/null
+++ b/packages/modules/devices/deye/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Deye/Jinko"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/kostal_sem/__init__.py b/packages/modules/devices/discovergy/discovergy/__init__.py
similarity index 100%
rename from packages/modules/devices/kostal_sem/__init__.py
rename to packages/modules/devices/discovergy/discovergy/__init__.py
diff --git a/packages/modules/devices/discovergy/api.py b/packages/modules/devices/discovergy/discovergy/api.py
similarity index 100%
rename from packages/modules/devices/discovergy/api.py
rename to packages/modules/devices/discovergy/discovergy/api.py
diff --git a/packages/modules/devices/discovergy/api_test.py b/packages/modules/devices/discovergy/discovergy/api_test.py
similarity index 98%
rename from packages/modules/devices/discovergy/api_test.py
rename to packages/modules/devices/discovergy/discovergy/api_test.py
index 14dedd8178..881f0ffd94 100644
--- a/packages/modules/devices/discovergy/api_test.py
+++ b/packages/modules/devices/discovergy/discovergy/api_test.py
@@ -3,7 +3,7 @@
 import pytest
 import requests
 
-from modules.devices.discovergy.api import get_last_reading
+from modules.devices.discovergy.discovergy.api import get_last_reading
 
 SAMPLE_JSON_1 = """{
     "time":1622132613773,
diff --git a/packages/modules/devices/discovergy/config.py b/packages/modules/devices/discovergy/discovergy/config.py
similarity index 92%
rename from packages/modules/devices/discovergy/config.py
rename to packages/modules/devices/discovergy/discovergy/config.py
index ba48c6634d..8b2d793a10 100644
--- a/packages/modules/devices/discovergy/config.py
+++ b/packages/modules/devices/discovergy/discovergy/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None):
 class Discovergy:
     def __init__(self,
                  name: str = "Discovergy",
-                 type: str = "discovergy",
+                 type: List[str] = ["discovergy", "discovergy"],
                  id: int = 0,
                  configuration: DiscovergyConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or DiscovergyConfiguration()
 
diff --git a/packages/modules/devices/discovergy/counter.py b/packages/modules/devices/discovergy/discovergy/counter.py
similarity index 85%
rename from packages/modules/devices/discovergy/counter.py
rename to packages/modules/devices/discovergy/discovergy/counter.py
index daf72c49a7..7b801d7b85 100644
--- a/packages/modules/devices/discovergy/counter.py
+++ b/packages/modules/devices/discovergy/discovergy/counter.py
@@ -3,8 +3,8 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_counter_value_store
-from modules.devices.discovergy import api
-from modules.devices.discovergy.config import DiscovergyCounterSetup
+from modules.devices.discovergy.discovergy import api
+from modules.devices.discovergy.discovergy.config import DiscovergyCounterSetup
 
 
 class DiscovergyCounter:
diff --git a/packages/modules/devices/discovergy/device_test.py b/packages/modules/devices/discovergy/discovergy/device test.py
similarity index 95%
rename from packages/modules/devices/discovergy/device_test.py
rename to packages/modules/devices/discovergy/discovergy/device test.py
index c92988a68a..eefe1576fb 100644
--- a/packages/modules/devices/discovergy/device_test.py
+++ b/packages/modules/devices/discovergy/discovergy/device test.py	
@@ -4,8 +4,8 @@
 
 from modules.common.component_state import CounterState
 from modules.common.component_state import InverterState
-from modules.devices.discovergy import api, counter, inverter
-from modules.devices.discovergy.device import read_legacy
+from modules.devices.discovergy.discovergy import api, counter, inverter
+from modules.devices.discovergy.discovergy.device import read_legacy
 
 SAMPLE_COUNTER_STATE = CounterState(
     imported=1,
diff --git a/packages/modules/devices/discovergy/device.py b/packages/modules/devices/discovergy/discovergy/device.py
similarity index 94%
rename from packages/modules/devices/discovergy/device.py
rename to packages/modules/devices/discovergy/discovergy/device.py
index d86bd0dc96..8edbfa85bd 100644
--- a/packages/modules/devices/discovergy/device.py
+++ b/packages/modules/devices/discovergy/discovergy/device.py
@@ -5,8 +5,8 @@
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, IndependentComponentUpdater
 from modules.common.req import get_http_session
-from modules.devices.discovergy import counter, inverter
-from modules.devices.discovergy.config import (
+from modules.devices.discovergy.discovergy import counter, inverter
+from modules.devices.discovergy.discovergy.config import (
     Discovergy,
     DiscovergyConfiguration,
     DiscovergyCounterConfiguration,
diff --git a/packages/modules/devices/discovergy/inverter.py b/packages/modules/devices/discovergy/discovergy/inverter.py
similarity index 87%
rename from packages/modules/devices/discovergy/inverter.py
rename to packages/modules/devices/discovergy/discovergy/inverter.py
index 31fcdace61..c004407ed1 100644
--- a/packages/modules/devices/discovergy/inverter.py
+++ b/packages/modules/devices/discovergy/discovergy/inverter.py
@@ -4,8 +4,8 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.discovergy import api
-from modules.devices.discovergy.config import DiscovergyInverterSetup
+from modules.devices.discovergy.discovergy import api
+from modules.devices.discovergy.discovergy.config import DiscovergyInverterSetup
 
 
 class DiscovergyInverter:
diff --git a/packages/modules/devices/discovergy/vendor.py b/packages/modules/devices/discovergy/vendor.py
new file mode 100644
index 0000000000..5a5f21243d
--- /dev/null
+++ b/packages/modules/devices/discovergy/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Discovergy"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/kostal_steca/__init__.py b/packages/modules/devices/e3dc/e3dc/__init__.py
similarity index 100%
rename from packages/modules/devices/kostal_steca/__init__.py
rename to packages/modules/devices/e3dc/e3dc/__init__.py
diff --git a/packages/modules/devices/e3dc/bat.py b/packages/modules/devices/e3dc/e3dc/bat.py
similarity index 96%
rename from packages/modules/devices/e3dc/bat.py
rename to packages/modules/devices/e3dc/e3dc/bat.py
index 22dc225995..04b2ce955f 100644
--- a/packages/modules/devices/e3dc/bat.py
+++ b/packages/modules/devices/e3dc/e3dc/bat.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_bat_value_store
 from modules.common.simcount._simcounter import SimCounter
-from modules.devices.e3dc.config import E3dcBatSetup
+from modules.devices.e3dc.e3dc.config import E3dcBatSetup
 
 
 log = logging.getLogger(__name__)
diff --git a/packages/modules/devices/e3dc/config.py b/packages/modules/devices/e3dc/e3dc/config.py
similarity index 96%
rename from packages/modules/devices/e3dc/config.py
rename to packages/modules/devices/e3dc/e3dc/config.py
index caf963cb49..d72ad7f802 100644
--- a/packages/modules/devices/e3dc/config.py
+++ b/packages/modules/devices/e3dc/e3dc/config.py
@@ -1,5 +1,6 @@
 from modules.common.component_setup import ComponentSetup
 from helpermodules.auto_str import auto_str
+from typing import List
 
 
 @auto_str
@@ -14,11 +15,12 @@ def __init__(self, modbus_id: int = 1, address: str = None, port: int = 502):
 class E3dc:
     def __init__(self,
                  name: str = "E3DC",
-                 type: str = "e3dc",
+                 type: List[str] = ["e3dc", "e3dc"],
                  id: int = 0,
                  configuration: E3dcConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or E3dcConfiguration()
 
diff --git a/packages/modules/devices/e3dc/counter.py b/packages/modules/devices/e3dc/e3dc/counter.py
similarity index 97%
rename from packages/modules/devices/e3dc/counter.py
rename to packages/modules/devices/e3dc/e3dc/counter.py
index df2dd80ca5..f5859c779f 100644
--- a/packages/modules/devices/e3dc/counter.py
+++ b/packages/modules/devices/e3dc/e3dc/counter.py
@@ -9,7 +9,7 @@
 from modules.common.simcount._simcounter import SimCounter
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_counter_value_store
-from modules.devices.e3dc.config import E3dcCounterSetup
+from modules.devices.e3dc.e3dc.config import E3dcCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/e3dc/device.py b/packages/modules/devices/e3dc/e3dc/device.py
similarity index 91%
rename from packages/modules/devices/e3dc/device.py
rename to packages/modules/devices/e3dc/e3dc/device.py
index 6be1d7159a..549569c624 100644
--- a/packages/modules/devices/e3dc/device.py
+++ b/packages/modules/devices/e3dc/e3dc/device.py
@@ -7,14 +7,14 @@
 from modules.common.configurable_device import (ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater,
                                                 SingleComponentUpdateContext)
 from modules.common import modbus
-from modules.devices.e3dc.bat import E3dcBat, read_bat
-from modules.devices.e3dc.inverter import E3dcInverter, read_inverter
-from modules.devices.e3dc.external_inverter import E3dcExternalInverter, read_external_inverter
-from modules.devices.e3dc.counter import E3dcCounter
-from modules.devices.e3dc.config import E3dc, E3dcConfiguration
-from modules.devices.e3dc.config import E3dcBatSetup
-from modules.devices.e3dc.config import E3dcCounterSetup, E3dcCounterConfiguration
-from modules.devices.e3dc.config import E3dcInverterSetup, E3dcExternalInverterSetup
+from modules.devices.e3dc.e3dc.bat import E3dcBat, read_bat
+from modules.devices.e3dc.e3dc.inverter import E3dcInverter, read_inverter
+from modules.devices.e3dc.e3dc.external_inverter import E3dcExternalInverter, read_external_inverter
+from modules.devices.e3dc.e3dc.counter import E3dcCounter
+from modules.devices.e3dc.e3dc.config import E3dc, E3dcConfiguration
+from modules.devices.e3dc.e3dc.config import E3dcBatSetup
+from modules.devices.e3dc.e3dc.config import E3dcCounterSetup, E3dcCounterConfiguration
+from modules.devices.e3dc.e3dc.config import E3dcInverterSetup, E3dcExternalInverterSetup
 from modules.common.store.ramdisk import files
 from modules.common.simcount import sim_count
 from modules.common.store import get_inverter_value_store, get_bat_value_store
diff --git a/packages/modules/devices/e3dc/external_inverter.py b/packages/modules/devices/e3dc/e3dc/external_inverter.py
similarity index 96%
rename from packages/modules/devices/e3dc/external_inverter.py
rename to packages/modules/devices/e3dc/e3dc/external_inverter.py
index f59947c39d..824b99fbd7 100644
--- a/packages/modules/devices/e3dc/external_inverter.py
+++ b/packages/modules/devices/e3dc/e3dc/external_inverter.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
 from modules.common.simcount._simcounter import SimCounter
-from modules.devices.e3dc.config import E3dcExternalInverterSetup
+from modules.devices.e3dc.e3dc.config import E3dcExternalInverterSetup
 
 
 log = logging.getLogger(__name__)
diff --git a/packages/modules/devices/e3dc/inverter.py b/packages/modules/devices/e3dc/e3dc/inverter.py
similarity index 96%
rename from packages/modules/devices/e3dc/inverter.py
rename to packages/modules/devices/e3dc/e3dc/inverter.py
index c3950712a2..16238e06bc 100644
--- a/packages/modules/devices/e3dc/inverter.py
+++ b/packages/modules/devices/e3dc/e3dc/inverter.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
 from modules.common.simcount._simcounter import SimCounter
-from modules.devices.e3dc.config import E3dcInverterSetup
+from modules.devices.e3dc.e3dc.config import E3dcInverterSetup
 
 
 log = logging.getLogger(__name__)
diff --git a/packages/modules/devices/e3dc/vendor.py b/packages/modules/devices/e3dc/vendor.py
new file mode 100644
index 0000000000..82efb517e6
--- /dev/null
+++ b/packages/modules/devices/e3dc/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "E3/DC"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/mqtt/__init__.py b/packages/modules/devices/enphase/enphase/__init__.py
similarity index 100%
rename from packages/modules/devices/mqtt/__init__.py
rename to packages/modules/devices/enphase/enphase/__init__.py
diff --git a/packages/modules/devices/enphase/bat.py b/packages/modules/devices/enphase/enphase/bat.py
similarity index 96%
rename from packages/modules/devices/enphase/bat.py
rename to packages/modules/devices/enphase/enphase/bat.py
index 9453e15413..497e713dbd 100644
--- a/packages/modules/devices/enphase/bat.py
+++ b/packages/modules/devices/enphase/enphase/bat.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_bat_value_store
 from modules.common.simcount import SimCounter
-from modules.devices.enphase.config import EnphaseBatSetup
+from modules.devices.enphase.enphase.config import EnphaseBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/enphase/config.py b/packages/modules/devices/enphase/enphase/config.py
similarity index 95%
rename from packages/modules/devices/enphase/config.py
rename to packages/modules/devices/enphase/enphase/config.py
index c499102a3d..06417079ef 100644
--- a/packages/modules/devices/enphase/config.py
+++ b/packages/modules/devices/enphase/enphase/config.py
@@ -1,5 +1,5 @@
 from enum import Enum
-from typing import Optional
+from typing import Optional, List
 from modules.common.component_setup import ComponentSetup
 
 
@@ -26,11 +26,12 @@ def __init__(self, hostname: Optional[str] = None,
 class Enphase:
     def __init__(self,
                  name: str = "Enphase",
-                 type: str = "enphase",
+                 type: List[str] = ["enphase", "enphase"],
                  id: int = 0,
                  configuration: EnphaseConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or EnphaseConfiguration()
 
diff --git a/packages/modules/devices/enphase/counter.py b/packages/modules/devices/enphase/enphase/counter.py
similarity index 96%
rename from packages/modules/devices/enphase/counter.py
rename to packages/modules/devices/enphase/enphase/counter.py
index bbea9849a7..a0cffa5fee 100644
--- a/packages/modules/devices/enphase/counter.py
+++ b/packages/modules/devices/enphase/enphase/counter.py
@@ -7,7 +7,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_counter_value_store
-from modules.devices.enphase.config import EnphaseCounterSetup
+from modules.devices.enphase.enphase.config import EnphaseCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/enphase/device.py b/packages/modules/devices/enphase/enphase/device.py
similarity index 94%
rename from packages/modules/devices/enphase/device.py
rename to packages/modules/devices/enphase/enphase/device.py
index b0ae34a473..4f16e41963 100644
--- a/packages/modules/devices/enphase/device.py
+++ b/packages/modules/devices/enphase/enphase/device.py
@@ -10,16 +10,16 @@
 from modules.common import req
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import MultiComponentUpdateContext
-from modules.devices.enphase import counter, inverter, bat
-from modules.devices.enphase.config import (EnphaseVersion,
-                                            Enphase,
-                                            EnphaseConfiguration,
-                                            EnphaseCounterConfiguration,
-                                            EnphaseCounterSetup,
-                                            EnphaseInverterConfiguration,
-                                            EnphaseInverterSetup,
-                                            EnphaseBatConfiguration,
-                                            EnphaseBatSetup)
+from modules.devices.enphase.enphase import counter, inverter, bat
+from modules.devices.enphase.enphase.config import (EnphaseVersion,
+                                                    Enphase,
+                                                    EnphaseConfiguration,
+                                                    EnphaseCounterConfiguration,
+                                                    EnphaseCounterSetup,
+                                                    EnphaseInverterConfiguration,
+                                                    EnphaseInverterSetup,
+                                                    EnphaseBatConfiguration,
+                                                    EnphaseBatSetup)
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/enphase/inverter.py b/packages/modules/devices/enphase/enphase/inverter.py
similarity index 95%
rename from packages/modules/devices/enphase/inverter.py
rename to packages/modules/devices/enphase/enphase/inverter.py
index e2c29a6d30..ff5bfde150 100644
--- a/packages/modules/devices/enphase/inverter.py
+++ b/packages/modules/devices/enphase/enphase/inverter.py
@@ -7,7 +7,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.enphase.config import EnphaseInverterSetup
+from modules.devices.enphase.enphase.config import EnphaseInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/enphase/livedata_status-sample.json b/packages/modules/devices/enphase/enphase/livedata_status-sample.json
similarity index 99%
rename from packages/modules/devices/enphase/livedata_status-sample.json
rename to packages/modules/devices/enphase/enphase/livedata_status-sample.json
index 1ba28328c4..404dc3c17f 100644
--- a/packages/modules/devices/enphase/livedata_status-sample.json
+++ b/packages/modules/devices/enphase/enphase/livedata_status-sample.json
@@ -102,4 +102,4 @@
             "dry_contact_status": 3047892
         }
     }
-}
+}
\ No newline at end of file
diff --git a/packages/modules/devices/enphase/meters_reading-sample.json b/packages/modules/devices/enphase/enphase/meters_reading-sample.json
similarity index 99%
rename from packages/modules/devices/enphase/meters_reading-sample.json
rename to packages/modules/devices/enphase/enphase/meters_reading-sample.json
index d2b2fc9e3a..4daf633078 100644
--- a/packages/modules/devices/enphase/meters_reading-sample.json
+++ b/packages/modules/devices/enphase/enphase/meters_reading-sample.json
@@ -139,4 +139,4 @@
             }
         ]
     }
-]
+]
\ No newline at end of file
diff --git a/packages/modules/devices/enphase/vendor.py b/packages/modules/devices/enphase/vendor.py
new file mode 100644
index 0000000000..f790487ff9
--- /dev/null
+++ b/packages/modules/devices/enphase/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Enphase"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/openwb_bat_kit/__init__.py b/packages/modules/devices/fems/fems/__init__.py
similarity index 100%
rename from packages/modules/devices/openwb_bat_kit/__init__.py
rename to packages/modules/devices/fems/fems/__init__.py
diff --git a/packages/modules/devices/fems/bat.py b/packages/modules/devices/fems/fems/bat.py
similarity index 97%
rename from packages/modules/devices/fems/bat.py
rename to packages/modules/devices/fems/fems/bat.py
index 93360d7882..ca1e35457a 100644
--- a/packages/modules/devices/fems/bat.py
+++ b/packages/modules/devices/fems/fems/bat.py
@@ -1,12 +1,12 @@
 import logging
 from requests import Session
 from helpermodules.scale_metric import scale_metric
-from modules.devices.fems.config import FemsBatSetup
+from modules.devices.fems.fems.config import FemsBatSetup
 from modules.common.component_state import BatState
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_bat_value_store
-from modules.devices.fems.version import FemsVersion, get_version
+from modules.devices.fems.fems.version import FemsVersion, get_version
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/fems/bat_test.py b/packages/modules/devices/fems/fems/bat_test.py
similarity index 95%
rename from packages/modules/devices/fems/bat_test.py
rename to packages/modules/devices/fems/fems/bat_test.py
index 31d0bd64da..2b899476ab 100644
--- a/packages/modules/devices/fems/bat_test.py
+++ b/packages/modules/devices/fems/fems/bat_test.py
@@ -4,8 +4,8 @@
 
 
 from modules.common.component_state import BatState
-from modules.devices.fems import bat, device
-from modules.devices.fems.config import Fems, FemsConfiguration, FemsBatSetup
+from modules.devices.fems.fems import bat, device
+from modules.devices.fems.fems.config import Fems, FemsConfiguration, FemsBatSetup
 
 
 def test_fems_bat(monkeypatch, requests_mock: requests_mock.mock):
diff --git a/packages/modules/devices/fems/config.py b/packages/modules/devices/fems/fems/config.py
similarity index 94%
rename from packages/modules/devices/fems/config.py
rename to packages/modules/devices/fems/fems/config.py
index 4414fc1a6e..fcc7ceda4e 100644
--- a/packages/modules/devices/fems/config.py
+++ b/packages/modules/devices/fems/fems/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, ip_address: Optional[str] = None, password: Optional[str] = N
 class Fems:
     def __init__(self,
                  name: str = "openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control",
-                 type: str = "fems",
+                 type: List[str] = ["fems", "fems"],
                  id: int = 0,
                  configuration: FemsConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or FemsConfiguration()
 
diff --git a/packages/modules/devices/fems/counter.py b/packages/modules/devices/fems/fems/counter.py
similarity index 98%
rename from packages/modules/devices/fems/counter.py
rename to packages/modules/devices/fems/fems/counter.py
index c7e325523c..eded191f6e 100644
--- a/packages/modules/devices/fems/counter.py
+++ b/packages/modules/devices/fems/fems/counter.py
@@ -1,12 +1,12 @@
 import logging
 from requests import Session
 from helpermodules.scale_metric import scale_metric
-from modules.devices.fems.config import FemsCounterSetup
+from modules.devices.fems.fems.config import FemsCounterSetup
 from modules.common.component_state import CounterState
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_counter_value_store
-from modules.devices.fems.version import FemsVersion, get_version
+from modules.devices.fems.fems.version import FemsVersion, get_version
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/fems/counter_test.py b/packages/modules/devices/fems/fems/counter_test.py
similarity index 96%
rename from packages/modules/devices/fems/counter_test.py
rename to packages/modules/devices/fems/fems/counter_test.py
index 4ee0ed6a5e..aa4b2a7999 100644
--- a/packages/modules/devices/fems/counter_test.py
+++ b/packages/modules/devices/fems/fems/counter_test.py
@@ -4,8 +4,8 @@
 
 
 from modules.common.component_state import CounterState
-from modules.devices.fems import counter, device
-from modules.devices.fems.config import Fems, FemsConfiguration, FemsCounterSetup
+from modules.devices.fems.fems import counter, device
+from modules.devices.fems.fems.config import Fems, FemsConfiguration, FemsCounterSetup
 
 
 def test_fems_counter(monkeypatch, requests_mock: requests_mock.mock):
diff --git a/packages/modules/devices/fems/fems/device test.py b/packages/modules/devices/fems/fems/device test.py
new file mode 100644
index 0000000000..eefe1576fb
--- /dev/null
+++ b/packages/modules/devices/fems/fems/device test.py	
@@ -0,0 +1,81 @@
+from unittest.mock import Mock
+
+import pytest
+
+from modules.common.component_state import CounterState
+from modules.common.component_state import InverterState
+from modules.devices.discovergy.discovergy import api, counter, inverter
+from modules.devices.discovergy.discovergy.device import read_legacy
+
+SAMPLE_COUNTER_STATE = CounterState(
+    imported=1,
+    exported=2,
+    power=3,
+    voltages=[4, 5, 6],
+    currents=[7, 8, 9],
+    powers=[10, 11, 12],
+)
+SAMPLE_INVERTER_STATE = InverterState(
+    exported=2,
+    power=3,
+    currents=[7, 8, 9],
+)
+SAMPLE_USER = "some username"
+SAMPLE_PASSWORD = "some password"
+SAMPLE_COUNTER_METER_ID = "some counter meter id"
+SAMPLE_INVERTER_METER_ID = "some inverter meter id"
+
+
+class TestDiscovergyDevice:
+    @pytest.fixture(autouse=True)
+    def setup(self, monkeypatch):
+        self.mock_counter_value_store = Mock()
+        self.mock_inverter_value_store = Mock()
+        self.mock_get_last_reading = Mock(return_value=SAMPLE_COUNTER_STATE)
+        monkeypatch.setattr(counter, 'get_counter_value_store', Mock(return_value=self.mock_counter_value_store))
+        monkeypatch.setattr(inverter, 'get_inverter_value_store', Mock(return_value=self.mock_inverter_value_store))
+        monkeypatch.setattr(api, 'get_last_reading', self.mock_get_last_reading)
+
+    def test_read_legacy_reads_counter(self, monkeypatch):
+        # execution
+        read_legacy(SAMPLE_USER, SAMPLE_PASSWORD, SAMPLE_COUNTER_METER_ID, "")
+
+        # evaluation
+        self.assert_get_last_reading_called(SAMPLE_COUNTER_METER_ID)
+        self.assert_counter_state_set()
+
+    def test_read_legacy_reads_inverter(self):
+        # execution
+        read_legacy(SAMPLE_USER, SAMPLE_PASSWORD, "", SAMPLE_INVERTER_METER_ID)
+
+        # evaluation
+        self.assert_get_last_reading_called(SAMPLE_INVERTER_METER_ID)
+        self.assert_inverter_state_set()
+
+    def test_read_legacy_reads_counter_and_inverter(self):
+        # execution
+        read_legacy(SAMPLE_USER, SAMPLE_PASSWORD, SAMPLE_COUNTER_METER_ID, SAMPLE_INVERTER_METER_ID)
+
+        # evaluation
+        self.assert_get_last_reading_called(SAMPLE_COUNTER_METER_ID, SAMPLE_INVERTER_METER_ID)
+        self.assert_inverter_state_set()
+        self.assert_counter_state_set()
+
+    def assert_get_last_reading_called(self, *meter_ids):
+        assert self.mock_get_last_reading.call_count == len(meter_ids)
+        # Check that one call was made for each meter_id, ignoring order:
+        assert sorted(call_args[0][1] for call_args in self.mock_get_last_reading.call_args_list) == sorted(meter_ids)
+        # Check that credentials were passed along each call:
+        for call_args in self.mock_get_last_reading.call_args_list:
+            assert call_args[0][0].auth == (SAMPLE_USER, SAMPLE_PASSWORD)
+
+    def assert_counter_state_set(self):
+        assert self.mock_counter_value_store.set.call_count == 1
+        assert self.mock_counter_value_store.set.call_args[0][0] is SAMPLE_COUNTER_STATE
+
+    def assert_inverter_state_set(self):
+        assert self.mock_inverter_value_store.set.call_count == 1
+        inverter_state = self.mock_inverter_value_store.set.call_args[0][0]  # type: InverterState
+        assert inverter_state.power == SAMPLE_INVERTER_STATE.power
+        assert inverter_state.currents == SAMPLE_INVERTER_STATE.currents
+        assert inverter_state.exported == SAMPLE_INVERTER_STATE.exported
diff --git a/packages/modules/devices/fems/device.py b/packages/modules/devices/fems/fems/device.py
similarity index 93%
rename from packages/modules/devices/fems/device.py
rename to packages/modules/devices/fems/fems/device.py
index f666adb835..1ade03bc6f 100644
--- a/packages/modules/devices/fems/device.py
+++ b/packages/modules/devices/fems/fems/device.py
@@ -6,8 +6,8 @@
 from modules.common import req
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
-from modules.devices.fems import bat, counter, inverter
-from modules.devices.fems.config import Fems, FemsBatSetup, FemsConfiguration, FemsCounterSetup, FemsInverterSetup
+from modules.devices.fems.fems import bat, counter, inverter
+from modules.devices.fems.fems.config import Fems, FemsBatSetup, FemsConfiguration, FemsCounterSetup, FemsInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/fems/inverter.py b/packages/modules/devices/fems/fems/inverter.py
similarity index 94%
rename from packages/modules/devices/fems/inverter.py
rename to packages/modules/devices/fems/fems/inverter.py
index 14c2835e74..daa8bb8c16 100644
--- a/packages/modules/devices/fems/inverter.py
+++ b/packages/modules/devices/fems/fems/inverter.py
@@ -1,12 +1,12 @@
 import logging
 from requests import Session
 from helpermodules.scale_metric import scale_metric
-from modules.devices.fems.config import FemsInverterSetup
+from modules.devices.fems.fems.config import FemsInverterSetup
 from modules.common.component_state import InverterState
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.fems.version import FemsVersion, get_version
+from modules.devices.fems.fems.version import FemsVersion, get_version
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/fems/inverter_test.py b/packages/modules/devices/fems/fems/inverter_test.py
similarity index 91%
rename from packages/modules/devices/fems/inverter_test.py
rename to packages/modules/devices/fems/fems/inverter_test.py
index c010d649b5..e0e6fa5a4b 100644
--- a/packages/modules/devices/fems/inverter_test.py
+++ b/packages/modules/devices/fems/fems/inverter_test.py
@@ -4,8 +4,8 @@
 
 
 from modules.common.component_state import InverterState
-from modules.devices.fems import inverter, device
-from modules.devices.fems.config import Fems, FemsConfiguration, FemsInverterSetup
+from modules.devices.fems.fems import inverter, device
+from modules.devices.fems.fems.config import Fems, FemsConfiguration, FemsInverterSetup
 
 
 def test_fems_inverter(monkeypatch, requests_mock: requests_mock.mock):
diff --git a/packages/modules/devices/fems/version.py b/packages/modules/devices/fems/fems/version.py
similarity index 100%
rename from packages/modules/devices/fems/version.py
rename to packages/modules/devices/fems/fems/version.py
diff --git a/packages/modules/devices/fems/vendor.py b/packages/modules/devices/fems/vendor.py
new file mode 100644
index 0000000000..ff11220b38
--- /dev/null
+++ b/packages/modules/devices/fems/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "openEMS, Fenecon FEMS, CENTURIO, Kaco"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/openwb_evu_kit/__init__.py b/packages/modules/devices/fox_ess/__init__.py
similarity index 100%
rename from packages/modules/devices/openwb_evu_kit/__init__.py
rename to packages/modules/devices/fox_ess/__init__.py
diff --git a/packages/modules/devices/openwb_flex/__init__.py b/packages/modules/devices/fox_ess/fox_ess/__init__.py
similarity index 100%
rename from packages/modules/devices/openwb_flex/__init__.py
rename to packages/modules/devices/fox_ess/fox_ess/__init__.py
diff --git a/packages/modules/devices/fox_ess/bat.py b/packages/modules/devices/fox_ess/fox_ess/bat.py
similarity index 95%
rename from packages/modules/devices/fox_ess/bat.py
rename to packages/modules/devices/fox_ess/fox_ess/bat.py
index fa49a1c7b6..2f6ec8ffe7 100644
--- a/packages/modules/devices/fox_ess/bat.py
+++ b/packages/modules/devices/fox_ess/fox_ess/bat.py
@@ -6,7 +6,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_bat_value_store
-from modules.devices.fox_ess.config import FoxEssBatSetup
+from modules.devices.fox_ess.fox_ess.config import FoxEssBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/fox_ess/config.py b/packages/modules/devices/fox_ess/fox_ess/config.py
similarity index 94%
rename from packages/modules/devices/fox_ess/config.py
rename to packages/modules/devices/fox_ess/fox_ess/config.py
index fd0b7a8019..38375b033c 100644
--- a/packages/modules/devices/fox_ess/config.py
+++ b/packages/modules/devices/fox_ess/fox_ess/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 
 from modules.common.component_setup import ComponentSetup
@@ -15,11 +15,12 @@ def __init__(self,
 class FoxEss:
     def __init__(self,
                  name: str = "FoxESS",
-                 type: str = "fox_ess",
+                 type: List[str] = ["fox_ess", "fox_ess"],
                  id: int = 0,
                  configuration: FoxEssConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or FoxEssConfiguration()
 
diff --git a/packages/modules/devices/fox_ess/counter.py b/packages/modules/devices/fox_ess/fox_ess/counter.py
similarity index 95%
rename from packages/modules/devices/fox_ess/counter.py
rename to packages/modules/devices/fox_ess/fox_ess/counter.py
index 849548a0b7..1522db6e88 100644
--- a/packages/modules/devices/fox_ess/counter.py
+++ b/packages/modules/devices/fox_ess/fox_ess/counter.py
@@ -5,7 +5,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_counter_value_store
-from modules.devices.fox_ess.config import FoxEssCounterSetup
+from modules.devices.fox_ess.fox_ess.config import FoxEssCounterSetup
 
 
 class FoxEssCounter:
diff --git a/packages/modules/devices/fox_ess/device.py b/packages/modules/devices/fox_ess/fox_ess/device.py
similarity index 84%
rename from packages/modules/devices/fox_ess/device.py
rename to packages/modules/devices/fox_ess/fox_ess/device.py
index 70592f4312..3194ecfed7 100644
--- a/packages/modules/devices/fox_ess/device.py
+++ b/packages/modules/devices/fox_ess/fox_ess/device.py
@@ -6,10 +6,10 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.fox_ess.bat import FoxEssBat
-from modules.devices.fox_ess.counter import FoxEssCounter
-from modules.devices.fox_ess.inverter import FoxEssInverter
-from modules.devices.fox_ess.config import FoxEss, FoxEssBatSetup, FoxEssCounterSetup, FoxEssInverterSetup
+from modules.devices.fox_ess.fox_ess.bat import FoxEssBat
+from modules.devices.fox_ess.fox_ess.counter import FoxEssCounter
+from modules.devices.fox_ess.fox_ess.inverter import FoxEssInverter
+from modules.devices.fox_ess.fox_ess.config import FoxEss, FoxEssBatSetup, FoxEssCounterSetup, FoxEssInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/fox_ess/inverter.py b/packages/modules/devices/fox_ess/fox_ess/inverter.py
similarity index 95%
rename from packages/modules/devices/fox_ess/inverter.py
rename to packages/modules/devices/fox_ess/fox_ess/inverter.py
index 3a03811e5d..397b59e28c 100644
--- a/packages/modules/devices/fox_ess/inverter.py
+++ b/packages/modules/devices/fox_ess/fox_ess/inverter.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_inverter_value_store
-from modules.devices.fox_ess.config import FoxEssInverterSetup
+from modules.devices.fox_ess.fox_ess.config import FoxEssInverterSetup
 
 
 class FoxEssInverter:
diff --git a/packages/modules/devices/fox_ess/vendor.py b/packages/modules/devices/fox_ess/vendor.py
new file mode 100644
index 0000000000..850ba02e97
--- /dev/null
+++ b/packages/modules/devices/fox_ess/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Fox ESS"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/openwb_pv_kit/__init__.py b/packages/modules/devices/fronius/fronius/__init__.py
similarity index 100%
rename from packages/modules/devices/openwb_pv_kit/__init__.py
rename to packages/modules/devices/fronius/fronius/__init__.py
diff --git a/packages/modules/devices/fronius/bat.py b/packages/modules/devices/fronius/fronius/bat.py
similarity index 94%
rename from packages/modules/devices/fronius/bat.py
rename to packages/modules/devices/fronius/fronius/bat.py
index 4dc8039ab9..3846228ff3 100644
--- a/packages/modules/devices/fronius/bat.py
+++ b/packages/modules/devices/fronius/fronius/bat.py
@@ -8,8 +8,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.fronius.config import FroniusBatSetup
-from modules.devices.fronius.config import FroniusConfiguration
+from modules.devices.fronius.fronius.config import FroniusBatSetup
+from modules.devices.fronius.fronius.config import FroniusConfiguration
 
 
 class FroniusBat:
diff --git a/packages/modules/devices/fronius/bat_test.py b/packages/modules/devices/fronius/fronius/bat_test.py
similarity index 95%
rename from packages/modules/devices/fronius/bat_test.py
rename to packages/modules/devices/fronius/fronius/bat_test.py
index 569ca4f6af..5a6a5cc449 100644
--- a/packages/modules/devices/fronius/bat_test.py
+++ b/packages/modules/devices/fronius/fronius/bat_test.py
@@ -7,8 +7,8 @@
 from helpermodules import compatibility
 from modules.common.store._api import LoggingValueStore
 from modules.conftest import SAMPLE_IP
-from modules.devices.fronius import bat
-from modules.devices.fronius.config import FroniusBatSetup, FroniusConfiguration
+from modules.devices.fronius.fronius import bat
+from modules.devices.fronius.fronius.config import FroniusBatSetup, FroniusConfiguration
 from test_utils.mock_ramdisk import MockRamdisk
 
 
diff --git a/packages/modules/devices/fronius/config.py b/packages/modules/devices/fronius/fronius/config.py
similarity index 96%
rename from packages/modules/devices/fronius/config.py
rename to packages/modules/devices/fronius/fronius/config.py
index f800eb9088..31c83bc4cc 100644
--- a/packages/modules/devices/fronius/config.py
+++ b/packages/modules/devices/fronius/fronius/config.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 from enum import Enum
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -32,11 +32,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class Fronius:
     def __init__(self,
                  name: str = "Fronius",
-                 type: str = "fronius",
+                 type: List[str] = ["fronius", "fronius"],
                  id: int = 0,
                  configuration: FroniusConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or FroniusConfiguration()
 
diff --git a/packages/modules/devices/fronius/counter_s0.py b/packages/modules/devices/fronius/fronius/counter_s0.py
similarity index 94%
rename from packages/modules/devices/fronius/counter_s0.py
rename to packages/modules/devices/fronius/fronius/counter_s0.py
index aabae39b55..cc77d56b0d 100644
--- a/packages/modules/devices/fronius/counter_s0.py
+++ b/packages/modules/devices/fronius/fronius/counter_s0.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.fronius.config import FroniusConfiguration, FroniusS0CounterSetup
+from modules.devices.fronius.fronius.config import FroniusConfiguration, FroniusS0CounterSetup
 
 
 class FroniusS0Counter:
diff --git a/packages/modules/devices/fronius/counter_s0_test.py b/packages/modules/devices/fronius/fronius/counter_s0_test.py
similarity index 94%
rename from packages/modules/devices/fronius/counter_s0_test.py
rename to packages/modules/devices/fronius/fronius/counter_s0_test.py
index 2c1eacfa65..88725b49b5 100644
--- a/packages/modules/devices/fronius/counter_s0_test.py
+++ b/packages/modules/devices/fronius/fronius/counter_s0_test.py
@@ -7,8 +7,8 @@
 from helpermodules import compatibility
 from modules.common.store._api import LoggingValueStore
 from modules.conftest import SAMPLE_IP
-from modules.devices.fronius import counter_s0
-from modules.devices.fronius.config import FroniusConfiguration, FroniusS0CounterSetup
+from modules.devices.fronius.fronius import counter_s0
+from modules.devices.fronius.fronius.config import FroniusConfiguration, FroniusS0CounterSetup
 from test_utils.mock_ramdisk import MockRamdisk
 
 
diff --git a/packages/modules/devices/fronius/counter_sm.py b/packages/modules/devices/fronius/fronius/counter_sm.py
similarity index 97%
rename from packages/modules/devices/fronius/counter_sm.py
rename to packages/modules/devices/fronius/fronius/counter_sm.py
index eb900f3b3c..a6b8c55697 100644
--- a/packages/modules/devices/fronius/counter_sm.py
+++ b/packages/modules/devices/fronius/fronius/counter_sm.py
@@ -11,8 +11,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.fronius.config import FroniusConfiguration, MeterLocation
-from modules.devices.fronius.config import FroniusSmCounterSetup
+from modules.devices.fronius.fronius.config import FroniusConfiguration, MeterLocation
+from modules.devices.fronius.fronius.config import FroniusSmCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/fronius/counter_sm_test.py b/packages/modules/devices/fronius/fronius/counter_sm_test.py
similarity index 99%
rename from packages/modules/devices/fronius/counter_sm_test.py
rename to packages/modules/devices/fronius/fronius/counter_sm_test.py
index d979247608..c03558397a 100644
--- a/packages/modules/devices/fronius/counter_sm_test.py
+++ b/packages/modules/devices/fronius/fronius/counter_sm_test.py
@@ -7,8 +7,8 @@
 from helpermodules import compatibility
 from modules.common.store._api import LoggingValueStore
 from modules.conftest import SAMPLE_IP
-from modules.devices.fronius import counter_sm
-from modules.devices.fronius.config import FroniusConfiguration, FroniusSmCounterSetup
+from modules.devices.fronius.fronius import counter_sm
+from modules.devices.fronius.fronius.config import FroniusConfiguration, FroniusSmCounterSetup
 from test_utils.mock_ramdisk import MockRamdisk
 
 
diff --git a/packages/modules/devices/fronius/device.py b/packages/modules/devices/fronius/fronius/device.py
similarity index 82%
rename from packages/modules/devices/fronius/device.py
rename to packages/modules/devices/fronius/fronius/device.py
index f997f4efd0..501a115e0b 100644
--- a/packages/modules/devices/fronius/device.py
+++ b/packages/modules/devices/fronius/fronius/device.py
@@ -7,14 +7,14 @@
 from modules.common import req
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.fronius.bat import FroniusBat
-from modules.devices.fronius.config import (Fronius, FroniusBatSetup, FroniusSecondaryInverterSetup,
-                                            FroniusSmCounterSetup, FroniusS0CounterSetup,
-                                            FroniusInverterSetup)
-from modules.devices.fronius.counter_s0 import FroniusS0Counter
-from modules.devices.fronius.counter_sm import FroniusSmCounter
-from modules.devices.fronius.inverter import FroniusInverter
-from modules.devices.fronius.inverter_secondary import FroniusSecondaryInverter
+from modules.devices.fronius.fronius.bat import FroniusBat
+from modules.devices.fronius.fronius.config import (Fronius, FroniusBatSetup, FroniusSecondaryInverterSetup,
+                                                    FroniusSmCounterSetup, FroniusS0CounterSetup,
+                                                    FroniusInverterSetup)
+from modules.devices.fronius.fronius.counter_s0 import FroniusS0Counter
+from modules.devices.fronius.fronius.counter_sm import FroniusSmCounter
+from modules.devices.fronius.fronius.inverter import FroniusInverter
+from modules.devices.fronius.fronius.inverter_secondary import FroniusSecondaryInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/fronius/inverter.py b/packages/modules/devices/fronius/fronius/inverter.py
similarity index 95%
rename from packages/modules/devices/fronius/inverter.py
rename to packages/modules/devices/fronius/fronius/inverter.py
index 5dc37dabaf..523be92d55 100644
--- a/packages/modules/devices/fronius/inverter.py
+++ b/packages/modules/devices/fronius/fronius/inverter.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.fronius.config import FroniusInverterSetup
+from modules.devices.fronius.fronius.config import FroniusInverterSetup
 
 
 class FroniusInverter:
diff --git a/packages/modules/devices/fronius/inverter_secondary.py b/packages/modules/devices/fronius/fronius/inverter_secondary.py
similarity index 96%
rename from packages/modules/devices/fronius/inverter_secondary.py
rename to packages/modules/devices/fronius/fronius/inverter_secondary.py
index 2a1dd422ac..ac0af09c2c 100644
--- a/packages/modules/devices/fronius/inverter_secondary.py
+++ b/packages/modules/devices/fronius/fronius/inverter_secondary.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.fronius.config import FroniusSecondaryInverterSetup
+from modules.devices.fronius.fronius.config import FroniusSecondaryInverterSetup
 
 
 class FroniusSecondaryInverter:
diff --git a/packages/modules/devices/fronius/inverter_secondary_test.py b/packages/modules/devices/fronius/fronius/inverter_secondary_test.py
similarity index 93%
rename from packages/modules/devices/fronius/inverter_secondary_test.py
rename to packages/modules/devices/fronius/fronius/inverter_secondary_test.py
index 655744b2f1..5b4111f7e1 100644
--- a/packages/modules/devices/fronius/inverter_secondary_test.py
+++ b/packages/modules/devices/fronius/fronius/inverter_secondary_test.py
@@ -2,8 +2,8 @@
 
 
 from modules.common.store._api import LoggingValueStore
-from modules.devices.fronius.config import FroniusSecondaryInverterConfiguration, FroniusSecondaryInverterSetup
-from modules.devices.fronius.inverter_secondary import FroniusSecondaryInverter
+from modules.devices.fronius.fronius.config import FroniusSecondaryInverterConfiguration, FroniusSecondaryInverterSetup
+from modules.devices.fronius.fronius.inverter_secondary import FroniusSecondaryInverter
 
 
 def test_update(monkeypatch, mock_simcount):
diff --git a/packages/modules/devices/fronius/inverter_test.py b/packages/modules/devices/fronius/fronius/inverter_test.py
similarity index 66%
rename from packages/modules/devices/fronius/inverter_test.py
rename to packages/modules/devices/fronius/fronius/inverter_test.py
index 7d81a7d958..5b4111f7e1 100644
--- a/packages/modules/devices/fronius/inverter_test.py
+++ b/packages/modules/devices/fronius/fronius/inverter_test.py
@@ -2,12 +2,12 @@
 
 
 from modules.common.store._api import LoggingValueStore
-from modules.devices.fronius import inverter
-from modules.devices.fronius.config import FroniusInverterSetup
+from modules.devices.fronius.fronius.config import FroniusSecondaryInverterConfiguration, FroniusSecondaryInverterSetup
+from modules.devices.fronius.fronius.inverter_secondary import FroniusSecondaryInverter
 
 
 def test_update(monkeypatch, mock_simcount):
-    wr = inverter.FroniusInverter(0, FroniusInverterSetup())
+    wr = FroniusSecondaryInverter(0, FroniusSecondaryInverterSetup(FroniusSecondaryInverterConfiguration(id=1)))
 
     mock = Mock(return_value=None)
     monkeypatch.setattr(LoggingValueStore, "set", mock)
@@ -19,7 +19,7 @@ def test_update(monkeypatch, mock_simcount):
     inverter_state = mock.call_args[0][0]
     assert inverter_state.exported == 0
     assert inverter_state.currents == [0, 0, 0]
-    assert inverter_state.power == -196.08712768554688
+    assert inverter_state.power == -4470.0
 
 
 json_wr1 = {
@@ -30,26 +30,34 @@ def test_update(monkeypatch, mock_simcount):
                     "Battery_Mode": "normal",
                     "DT": 1,
                     "E_Day": None,
-                    "E_Total": 9824871.8336111102,
+                    "E_Total": 148955.258055555,
                     "E_Year": None,
-                    "P": 1263.8095703125,
-                    "SOC": 41.100000000000001
+                    "P": 20.819091796875,
+                    "SOC": 95.299999999999997
+                }
+            },
+            "SecondaryMeters": {
+                "1": {
+                    "Category": "METER_CAT_WR",
+                    "Label": "PV- 1",
+                    "MLoc": 3.0,
+                    "P": 4470.0
                 }
             },
             "Site": {
-                "BackupMode": "false",
-                "BatteryStandby": "true",
+                "BackupMode": False,
+                "BatteryStandby": False,
                 "E_Day": None,
-                "E_Total": 9824871.8336111102,
+                "E_Total": 148955.258055555,
                 "E_Year": None,
                 "Meter_Location": "grid",
                 "Mode": "bidirectional",
-                "P_Akku": 1126.365966796875,
-                "P_Grid": -107.8,
-                "P_Load": -1143.5296386718751,
-                "P_PV": 196.08712768554688,
+                "P_Akku": -11.142402648926,
+                "P_Grid": -2631.999999999,
+                "P_Load": -3933.5058593751,
+                "P_PV": 2173.672851562,
                 "rel_Autonomy": 100.0,
-                "rel_SelfConsumption": 91.385163695601761
+                "rel_SelfConsumption": 59.4570229924
             },
             "Smartloads": {
                 "Ohmpilots": {}
@@ -64,7 +72,7 @@ def test_update(monkeypatch, mock_simcount):
             "Reason": "",
             "UserMessage": ""
         },
-        "Timestamp": "2022-01-04T09:45:59+00:00"
+        "Timestamp": "2023-09-25Txx:xx:xx+00:00"
     }
 }
 
diff --git a/packages/modules/devices/fronius/meter_test.py b/packages/modules/devices/fronius/fronius/meter_test.py
similarity index 93%
rename from packages/modules/devices/fronius/meter_test.py
rename to packages/modules/devices/fronius/fronius/meter_test.py
index b1f83ac7cb..65df5db9b2 100644
--- a/packages/modules/devices/fronius/meter_test.py
+++ b/packages/modules/devices/fronius/fronius/meter_test.py
@@ -1,6 +1,6 @@
 import pytest
 
-from modules.devices.fronius.config import MeterLocation
+from modules.devices.fronius.fronius.config import MeterLocation
 
 
 def test_meter_enum():
diff --git a/packages/modules/devices/fronius/vendor.py b/packages/modules/devices/fronius/vendor.py
new file mode 100644
index 0000000000..598606268f
--- /dev/null
+++ b/packages/modules/devices/fronius/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Fronius"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/siemens/__init__.py b/packages/modules/devices/generic/__init__.py
similarity index 100%
rename from packages/modules/devices/siemens/__init__.py
rename to packages/modules/devices/generic/__init__.py
diff --git a/packages/modules/devices/siemens_sentron/__init__.py b/packages/modules/devices/generic/http/__init__.py
similarity index 100%
rename from packages/modules/devices/siemens_sentron/__init__.py
rename to packages/modules/devices/generic/http/__init__.py
diff --git a/packages/modules/devices/http/api.py b/packages/modules/devices/generic/http/api.py
similarity index 100%
rename from packages/modules/devices/http/api.py
rename to packages/modules/devices/generic/http/api.py
diff --git a/packages/modules/devices/http/bat.py b/packages/modules/devices/generic/http/bat.py
similarity index 93%
rename from packages/modules/devices/http/bat.py
rename to packages/modules/devices/generic/http/bat.py
index fd4b0de1bd..06ef6e217f 100644
--- a/packages/modules/devices/http/bat.py
+++ b/packages/modules/devices/generic/http/bat.py
@@ -9,8 +9,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.http.api import create_request_function
-from modules.devices.http.config import HttpBatSetup
+from modules.devices.generic.http.api import create_request_function
+from modules.devices.generic.http.config import HttpBatSetup
 
 
 class HttpBat:
diff --git a/packages/modules/devices/http/config.py b/packages/modules/devices/generic/http/config.py
similarity index 94%
rename from packages/modules/devices/http/config.py
rename to packages/modules/devices/generic/http/config.py
index 3c219239a0..52d890c3d3 100644
--- a/packages/modules/devices/http/config.py
+++ b/packages/modules/devices/generic/http/config.py
@@ -1,5 +1,6 @@
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from typing import List
 
 
 @auto_str
@@ -12,11 +13,13 @@ def __init__(self, url=None):
 class HTTP:
     def __init__(self,
                  name: str = "HTTP",
-                 type: str = "http",
+                 type: List[str] = ["generic", "http"],
+                 group: str = "generic",
                  id: int = 0,
                  configuration: HTTPConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = group
         self.id = id
         self.configuration = configuration or HTTPConfiguration()
 
diff --git a/packages/modules/devices/http/counter.py b/packages/modules/devices/generic/http/counter.py
similarity index 92%
rename from packages/modules/devices/http/counter.py
rename to packages/modules/devices/generic/http/counter.py
index 3bc6af33d8..622234cf2b 100644
--- a/packages/modules/devices/http/counter.py
+++ b/packages/modules/devices/generic/http/counter.py
@@ -9,8 +9,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.http.api import create_request_function, create_request_function_array
-from modules.devices.http.config import HttpCounterSetup
+from modules.devices.generic.http.api import create_request_function, create_request_function_array
+from modules.devices.generic.http.config import HttpCounterSetup
 
 
 class HttpCounter:
diff --git a/packages/modules/devices/http/device.py b/packages/modules/devices/generic/http/device.py
similarity index 89%
rename from packages/modules/devices/http/device.py
rename to packages/modules/devices/generic/http/device.py
index fb5353408d..c18a2d34dc 100644
--- a/packages/modules/devices/http/device.py
+++ b/packages/modules/devices/generic/http/device.py
@@ -7,11 +7,13 @@
 from modules.common import req
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, IndependentComponentUpdater
-from modules.devices.http.bat import HttpBat
-from modules.devices.http.config import HTTP, HTTPConfiguration, HttpBatSetup, HttpCounterSetup, HttpInverterSetup, \
-    HttpBatConfiguration, HttpCounterConfiguration, HttpInverterConfiguration
-from modules.devices.http.counter import HttpCounter
-from modules.devices.http.inverter import HttpInverter
+from modules.devices.generic.http.bat import HttpBat
+from modules.devices.generic.http.config import (HTTP, HTTPConfiguration, HttpBatSetup, HttpCounterSetup,
+                                                 HttpInverterSetup,
+                                                 HttpBatConfiguration, HttpCounterConfiguration,
+                                                 HttpInverterConfiguration)
+from modules.devices.generic.http.counter import HttpCounter
+from modules.devices.generic.http.inverter import HttpInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/http/inverter.py b/packages/modules/devices/generic/http/inverter.py
similarity index 93%
rename from packages/modules/devices/http/inverter.py
rename to packages/modules/devices/generic/http/inverter.py
index 655d2b4e0d..1e3b690b89 100644
--- a/packages/modules/devices/http/inverter.py
+++ b/packages/modules/devices/generic/http/inverter.py
@@ -10,8 +10,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.http.api import create_request_function
-from modules.devices.http.config import HttpInverterSetup
+from modules.devices.generic.http.api import create_request_function
+from modules.devices.generic.http.config import HttpInverterSetup
 
 
 class HttpInverter:
diff --git a/packages/modules/devices/sma_shm/__init__.py b/packages/modules/devices/generic/json/__init__.py
similarity index 100%
rename from packages/modules/devices/sma_shm/__init__.py
rename to packages/modules/devices/generic/json/__init__.py
diff --git a/packages/modules/devices/json/bat.py b/packages/modules/devices/generic/json/bat.py
similarity index 96%
rename from packages/modules/devices/json/bat.py
rename to packages/modules/devices/generic/json/bat.py
index 6b3ca71082..b4a5fc9863 100644
--- a/packages/modules/devices/json/bat.py
+++ b/packages/modules/devices/generic/json/bat.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.json.config import JsonBatSetup
+from modules.devices.generic.json.config import JsonBatSetup
 
 
 class JsonBat:
diff --git a/packages/modules/devices/json/config.py b/packages/modules/devices/generic/json/config.py
similarity index 94%
rename from packages/modules/devices/json/config.py
rename to packages/modules/devices/generic/json/config.py
index 1af6d338d9..22b1feda63 100644
--- a/packages/modules/devices/json/config.py
+++ b/packages/modules/devices/generic/json/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from modules.common.component_setup import ComponentSetup
 
 
@@ -10,11 +10,13 @@ def __init__(self, url=None):
 class Json:
     def __init__(self,
                  name: str = "Json",
-                 type: str = "json",
+                 type: List[str] = ["generic", "json"],
                  id: int = 0,
+                 group: str = "generic",
                  configuration: JsonConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = group
         self.id = id
         self.configuration = configuration or JsonConfiguration()
 
diff --git a/packages/modules/devices/json/counter.py b/packages/modules/devices/generic/json/counter.py
similarity index 96%
rename from packages/modules/devices/json/counter.py
rename to packages/modules/devices/generic/json/counter.py
index 901ac48e79..59e3232516 100644
--- a/packages/modules/devices/json/counter.py
+++ b/packages/modules/devices/generic/json/counter.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount._simcounter import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.json.config import JsonCounterSetup
+from modules.devices.generic.json.config import JsonCounterSetup
 
 
 class JsonCounter:
diff --git a/packages/modules/devices/json/device.py b/packages/modules/devices/generic/json/device.py
similarity index 82%
rename from packages/modules/devices/json/device.py
rename to packages/modules/devices/generic/json/device.py
index 96395e5d9e..43be25603e 100644
--- a/packages/modules/devices/json/device.py
+++ b/packages/modules/devices/generic/json/device.py
@@ -6,18 +6,18 @@
 from modules.common import req
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
-from modules.devices.json import bat, counter, inverter
-from modules.devices.json.bat import JsonBat
-from modules.devices.json.config import (Json,
-                                         JsonBatConfiguration,
-                                         JsonBatSetup,
-                                         JsonConfiguration,
-                                         JsonCounterConfiguration,
-                                         JsonCounterSetup,
-                                         JsonInverterConfiguration,
-                                         JsonInverterSetup)
-from modules.devices.json.counter import JsonCounter
-from modules.devices.json.inverter import JsonInverter
+from modules.devices.generic.json import bat, counter, inverter
+from modules.devices.generic.json.bat import JsonBat
+from modules.devices.generic.json.config import (Json,
+                                                 JsonBatConfiguration,
+                                                 JsonBatSetup,
+                                                 JsonConfiguration,
+                                                 JsonCounterConfiguration,
+                                                 JsonCounterSetup,
+                                                 JsonInverterConfiguration,
+                                                 JsonInverterSetup)
+from modules.devices.generic.json.counter import JsonCounter
+from modules.devices.generic.json.inverter import JsonInverter
 
 log = logging.getLogger(__name__)
 JsonComponent = Union[JsonBat, JsonCounter, JsonInverter]
diff --git a/packages/modules/devices/json/device_test.py b/packages/modules/devices/generic/json/device_test.py
similarity index 94%
rename from packages/modules/devices/json/device_test.py
rename to packages/modules/devices/generic/json/device_test.py
index 0a9b7c7d99..93b5a5f635 100644
--- a/packages/modules/devices/json/device_test.py
+++ b/packages/modules/devices/generic/json/device_test.py
@@ -4,10 +4,10 @@
 import requests_mock
 
 from modules.common.fault_state import FaultState
-from modules.devices.json import bat, counter, inverter
-from modules.devices.json.config import Json, JsonConfiguration, JsonBatSetup, JsonBatConfiguration, \
+from modules.devices.generic.json import bat, counter, inverter
+from modules.devices.generic.json.config import Json, JsonConfiguration, JsonBatSetup, JsonBatConfiguration, \
     JsonInverterConfiguration, JsonInverterSetup, JsonCounterSetup, JsonCounterConfiguration
-from modules.devices.json.device import create_device
+from modules.devices.generic.json.device import create_device
 
 
 @pytest.fixture
diff --git a/packages/modules/devices/json/inverter.py b/packages/modules/devices/generic/json/inverter.py
similarity index 95%
rename from packages/modules/devices/json/inverter.py
rename to packages/modules/devices/generic/json/inverter.py
index ddd14f58a7..084b8660a6 100644
--- a/packages/modules/devices/json/inverter.py
+++ b/packages/modules/devices/generic/json/inverter.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.json.config import JsonInverterSetup
+from modules.devices.generic.json.config import JsonInverterSetup
 
 
 class JsonInverter:
diff --git a/packages/modules/devices/sma_sunny_boy/__init__.py b/packages/modules/devices/generic/mqtt/__init__.py
similarity index 100%
rename from packages/modules/devices/sma_sunny_boy/__init__.py
rename to packages/modules/devices/generic/mqtt/__init__.py
diff --git a/packages/modules/devices/mqtt/bat.py b/packages/modules/devices/generic/mqtt/bat.py
similarity index 90%
rename from packages/modules/devices/mqtt/bat.py
rename to packages/modules/devices/generic/mqtt/bat.py
index 5d9d7966a0..a4c17bfc10 100644
--- a/packages/modules/devices/mqtt/bat.py
+++ b/packages/modules/devices/generic/mqtt/bat.py
@@ -4,7 +4,7 @@
 
 from dataclass_utils import dataclass_from_dict
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.mqtt.config import MqttBatSetup
+from modules.devices.generic.mqtt.config import MqttBatSetup
 
 
 class MqttBat:
diff --git a/packages/modules/devices/mqtt/config.py b/packages/modules/devices/generic/mqtt/config.py
similarity index 92%
rename from packages/modules/devices/mqtt/config.py
rename to packages/modules/devices/generic/mqtt/config.py
index db65b2bf28..a4915c3a2f 100644
--- a/packages/modules/devices/mqtt/config.py
+++ b/packages/modules/devices/generic/mqtt/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from typing import List
 
 
 class MqttConfiguration:
@@ -9,11 +10,13 @@ def __init__(self):
 class Mqtt:
     def __init__(self,
                  name: str = "MQTT",
-                 type: str = "mqtt",
+                 type: List[str] = ["generic", "mqtt"],
+                 group: str = "generic",
                  id: int = 0,
                  configuration: MqttConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = group
         self.id = id
         self.configuration = configuration or MqttConfiguration()
 
diff --git a/packages/modules/devices/mqtt/counter.py b/packages/modules/devices/generic/mqtt/counter.py
similarity index 90%
rename from packages/modules/devices/mqtt/counter.py
rename to packages/modules/devices/generic/mqtt/counter.py
index 243f73e483..3fe23c6868 100644
--- a/packages/modules/devices/mqtt/counter.py
+++ b/packages/modules/devices/generic/mqtt/counter.py
@@ -4,7 +4,7 @@
 
 from dataclass_utils import dataclass_from_dict
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.mqtt.config import MqttCounterSetup
+from modules.devices.generic.mqtt.config import MqttCounterSetup
 
 
 class MqttCounter:
diff --git a/packages/modules/devices/generic/mqtt/device.py b/packages/modules/devices/generic/mqtt/device.py
new file mode 100644
index 0000000000..a9c9045099
--- /dev/null
+++ b/packages/modules/devices/generic/mqtt/device.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+from typing import Dict, Union
+import logging
+
+from dataclass_utils import dataclass_from_dict
+from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.component_context import MultiComponentUpdateContext
+from modules.devices.generic.mqtt import bat, counter, inverter
+from modules.devices.generic.mqtt.config import Mqtt, MqttBatSetup, MqttCounterSetup, MqttInverterSetup
+
+log = logging.getLogger(__name__)
+
+
+class Device(AbstractDevice):
+    COMPONENT_TYPE_TO_CLASS = {
+        "bat": bat.MqttBat,
+        "counter": counter.MqttCounter,
+        "inverter": inverter.MqttInverter
+    }
+    COMPONENT_TYPE_TO_MODULE = {
+        "bat": bat,
+        "counter": counter,
+        "inverter": inverter
+    }
+
+    def __init__(self, device_config: Union[Dict, Mqtt]) -> None:
+        self.components = {}
+        try:
+            self.device_config = dataclass_from_dict(Mqtt, device_config)
+        except Exception:
+            log.exception("Fehler im Modul " + self.device_config.name)
+
+    def add_component(self, component_config: Union[Dict, MqttBatSetup, MqttCounterSetup, MqttInverterSetup]) -> None:
+        if isinstance(component_config, Dict):
+            component_type = component_config["type"]
+        else:
+            component_type = component_config.type
+        component_config = dataclass_from_dict(self.COMPONENT_TYPE_TO_MODULE[
+            component_type].component_descriptor.configuration_factory, component_config)
+        if component_type in self.COMPONENT_TYPE_TO_CLASS:
+            self.components["component"+str(component_config.id)
+                            ] = (self.COMPONENT_TYPE_TO_CLASS[component_type](component_config))
+
+    def update(self) -> None:
+        if self.components:
+            with MultiComponentUpdateContext(self.components):
+                log.debug("MQTT-Module müssen nicht ausgelesen werden.")
+        else:
+            log.warning(
+                self.device_config.name +
+                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
+            )
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=Mqtt)
diff --git a/packages/modules/devices/mqtt/inverter.py b/packages/modules/devices/generic/mqtt/inverter.py
similarity index 90%
rename from packages/modules/devices/mqtt/inverter.py
rename to packages/modules/devices/generic/mqtt/inverter.py
index 723e6ef9e0..0328daeca5 100644
--- a/packages/modules/devices/mqtt/inverter.py
+++ b/packages/modules/devices/generic/mqtt/inverter.py
@@ -4,7 +4,7 @@
 
 from dataclass_utils import dataclass_from_dict
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.mqtt.config import MqttInverterSetup
+from modules.devices.generic.mqtt.config import MqttInverterSetup
 
 
 class MqttInverter:
diff --git a/packages/modules/devices/generic/vendor.py b/packages/modules/devices/generic/vendor.py
new file mode 100644
index 0000000000..49e162f124
--- /dev/null
+++ b/packages/modules/devices/generic/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "generisch"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sma_sunny_island/__init__.py b/packages/modules/devices/generic/virtual/__init__.py
similarity index 100%
rename from packages/modules/devices/sma_sunny_island/__init__.py
rename to packages/modules/devices/generic/virtual/__init__.py
diff --git a/packages/modules/devices/virtual/config.py b/packages/modules/devices/generic/virtual/config.py
similarity index 86%
rename from packages/modules/devices/virtual/config.py
rename to packages/modules/devices/generic/virtual/config.py
index 5893e8b5de..dd6d199851 100644
--- a/packages/modules/devices/virtual/config.py
+++ b/packages/modules/devices/generic/virtual/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from typing import List
 
 
 class VirtualConfiguration:
@@ -9,11 +10,13 @@ def __init__(self):
 class Virtual:
     def __init__(self,
                  name: str = "Virtuelles Gerät",
-                 type: str = "virtual",
+                 type: List[str] = ["generic", "virtual"],
+                 group: str = "generic",
                  id: int = 0,
                  configuration: VirtualConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = group
         self.id = id
         self.configuration = configuration or VirtualConfiguration()
 
diff --git a/packages/modules/devices/virtual/counter.py b/packages/modules/devices/generic/virtual/counter.py
similarity index 95%
rename from packages/modules/devices/virtual/counter.py
rename to packages/modules/devices/generic/virtual/counter.py
index 62f3970801..bbb4d348b1 100644
--- a/packages/modules/devices/virtual/counter.py
+++ b/packages/modules/devices/generic/virtual/counter.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.virtual.config import VirtualCounterSetup
+from modules.devices.generic.virtual.config import VirtualCounterSetup
 
 
 class VirtualCounter:
diff --git a/packages/modules/devices/virtual/counter_test.py b/packages/modules/devices/generic/virtual/counter_test.py
similarity index 95%
rename from packages/modules/devices/virtual/counter_test.py
rename to packages/modules/devices/generic/virtual/counter_test.py
index 1be8b299c2..9f2c71879c 100644
--- a/packages/modules/devices/virtual/counter_test.py
+++ b/packages/modules/devices/generic/virtual/counter_test.py
@@ -8,8 +8,8 @@
 from control.chargepoint.chargepoint import Chargepoint
 from control.counter_all import CounterAll
 from modules.common.component_state import CounterState
-from modules.devices.virtual import counter
-from modules.devices.virtual.config import VirtualCounterConfiguration, VirtualCounterSetup
+from modules.devices.generic.virtual import counter
+from modules.devices.generic.virtual.config import VirtualCounterConfiguration, VirtualCounterSetup
 from packages.conftest import hierarchy_standard, hierarchy_hybrid, hierarchy_nested
 
 
diff --git a/packages/modules/devices/virtual/device.py b/packages/modules/devices/generic/virtual/device.py
similarity index 94%
rename from packages/modules/devices/virtual/device.py
rename to packages/modules/devices/generic/virtual/device.py
index 3472086efc..8a313fb0cb 100644
--- a/packages/modules/devices/virtual/device.py
+++ b/packages/modules/devices/generic/virtual/device.py
@@ -2,10 +2,10 @@
 from typing import Dict, Union
 
 from dataclass_utils import dataclass_from_dict
-from modules.devices.virtual.config import Virtual, VirtualCounterSetup
+from modules.devices.generic.virtual.config import Virtual, VirtualCounterSetup
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.virtual import counter
+from modules.devices.generic.virtual import counter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sma_webbox/__init__.py b/packages/modules/devices/good_we/good_we/__init__.py
similarity index 100%
rename from packages/modules/devices/sma_webbox/__init__.py
rename to packages/modules/devices/good_we/good_we/__init__.py
diff --git a/packages/modules/devices/good_we/good_we/api.py b/packages/modules/devices/good_we/good_we/api.py
new file mode 100644
index 0000000000..ac3e7526bb
--- /dev/null
+++ b/packages/modules/devices/good_we/good_we/api.py
@@ -0,0 +1,32 @@
+import functools
+import logging
+from typing import Callable, Optional, Iterable, List, TypeVar
+
+from requests import Session
+
+log = logging.getLogger(__name__)
+T = TypeVar('T')
+RequestFunction = Callable[[Session], T]
+
+
+def _request_value(url: str, session: Session) -> float:
+    return float(session.get(url, timeout=5).text.replace("\n", ""))
+
+
+def create_request_function(url: str, path: Optional[str]) -> RequestFunction[Optional[float]]:
+    if path is None:
+        return lambda _: None
+    else:
+        return functools.partial(_request_value, url + path)
+
+
+def create_request_function_array(url: str, paths: Iterable[Optional[str]]) -> RequestFunction[Optional[List[float]]]:
+    functions = []  # type: List[RequestFunction[float]]
+    for path in paths:
+        if path is not None:
+            functions.append(functools.partial(_request_value, url + path))
+        elif functions:
+            raise Exception("Expected all or no paths to be None, got: <%s>" % paths)
+    if functions:
+        return lambda session: [function(session) for function in functions]
+    return lambda _: None
diff --git a/packages/modules/devices/good_we/bat.py b/packages/modules/devices/good_we/good_we/bat.py
similarity index 94%
rename from packages/modules/devices/good_we/bat.py
rename to packages/modules/devices/good_we/good_we/bat.py
index cdcc5109bd..8830424286 100644
--- a/packages/modules/devices/good_we/bat.py
+++ b/packages/modules/devices/good_we/good_we/bat.py
@@ -8,8 +8,8 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_bat_value_store
-from modules.devices.good_we.config import GoodWeBatSetup
-from modules.devices.good_we.version import GoodWeVersion
+from modules.devices.good_we.good_we.config import GoodWeBatSetup
+from modules.devices.good_we.good_we.version import GoodWeVersion
 
 
 class GoodWeBat:
diff --git a/packages/modules/devices/good_we/config.py b/packages/modules/devices/good_we/good_we/config.py
similarity index 91%
rename from packages/modules/devices/good_we/config.py
rename to packages/modules/devices/good_we/good_we/config.py
index 32548da5b1..05075140ac 100644
--- a/packages/modules/devices/good_we/config.py
+++ b/packages/modules/devices/good_we/good_we/config.py
@@ -1,7 +1,7 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
-from modules.devices.good_we.version import GoodWeVersion
+from modules.devices.good_we.good_we.version import GoodWeVersion
 
 
 class GoodWeConfiguration:
@@ -20,11 +20,12 @@ def __init__(self, ip_address: Optional[str] = None,
 class GoodWe:
     def __init__(self,
                  name: str = "GoodWe ET-Serie",
-                 type: str = "good_we",
+                 type: List[str] = ["good_we", "good_we"],
                  id: int = 0,
                  configuration: GoodWeConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or GoodWeConfiguration()
 
diff --git a/packages/modules/devices/good_we/counter.py b/packages/modules/devices/good_we/good_we/counter.py
similarity index 96%
rename from packages/modules/devices/good_we/counter.py
rename to packages/modules/devices/good_we/good_we/counter.py
index f1c3c899a7..c3295e01a5 100644
--- a/packages/modules/devices/good_we/counter.py
+++ b/packages/modules/devices/good_we/good_we/counter.py
@@ -9,8 +9,8 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.good_we.config import GoodWeCounterSetup
-from modules.devices.good_we.version import GoodWeVersion
+from modules.devices.good_we.good_we.config import GoodWeCounterSetup
+from modules.devices.good_we.good_we.version import GoodWeVersion
 
 
 class GoodWeCounter:
diff --git a/packages/modules/devices/good_we/device.py b/packages/modules/devices/good_we/good_we/device.py
similarity index 89%
rename from packages/modules/devices/good_we/device.py
rename to packages/modules/devices/good_we/good_we/device.py
index 661331c8b6..cf939af1aa 100644
--- a/packages/modules/devices/good_we/device.py
+++ b/packages/modules/devices/good_we/good_we/device.py
@@ -6,10 +6,10 @@
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.good_we import bat
-from modules.devices.good_we import counter
-from modules.devices.good_we import inverter
-from modules.devices.good_we.config import GoodWe, GoodWeBatSetup, GoodWeCounterSetup, GoodWeInverterSetup
+from modules.devices.good_we.good_we import bat
+from modules.devices.good_we.good_we import counter
+from modules.devices.good_we.good_we import inverter
+from modules.devices.good_we.good_we.config import GoodWe, GoodWeBatSetup, GoodWeCounterSetup, GoodWeInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/good_we/inverter.py b/packages/modules/devices/good_we/good_we/inverter.py
similarity index 92%
rename from packages/modules/devices/good_we/inverter.py
rename to packages/modules/devices/good_we/good_we/inverter.py
index c2de34fc1a..5a44a4eab8 100644
--- a/packages/modules/devices/good_we/inverter.py
+++ b/packages/modules/devices/good_we/good_we/inverter.py
@@ -8,8 +8,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_inverter_value_store
-from modules.devices.good_we.config import GoodWeInverterSetup
-from modules.devices.good_we.version import GoodWeVersion
+from modules.devices.good_we.good_we.config import GoodWeInverterSetup
+from modules.devices.good_we.good_we.version import GoodWeVersion
 
 
 class GoodWeInverter:
diff --git a/packages/modules/devices/good_we/version.py b/packages/modules/devices/good_we/good_we/version.py
similarity index 100%
rename from packages/modules/devices/good_we/version.py
rename to packages/modules/devices/good_we/good_we/version.py
diff --git a/packages/modules/devices/good_we/vendor.py b/packages/modules/devices/good_we/vendor.py
new file mode 100644
index 0000000000..fc727d6fcc
--- /dev/null
+++ b/packages/modules/devices/good_we/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "GoodWe"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/virtual/__init__.py b/packages/modules/devices/huawei/huawei/__init__.py
similarity index 100%
rename from packages/modules/devices/virtual/__init__.py
rename to packages/modules/devices/huawei/huawei/__init__.py
diff --git a/packages/modules/devices/huawei/bat.py b/packages/modules/devices/huawei/huawei/bat.py
similarity index 96%
rename from packages/modules/devices/huawei/bat.py
rename to packages/modules/devices/huawei/huawei/bat.py
index 3484ae9adc..fd43ae206f 100644
--- a/packages/modules/devices/huawei/bat.py
+++ b/packages/modules/devices/huawei/huawei/bat.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.huawei.config import HuaweiBatSetup
+from modules.devices.huawei.huawei.config import HuaweiBatSetup
 
 
 class HuaweiBat:
diff --git a/packages/modules/devices/huawei/config.py b/packages/modules/devices/huawei/huawei/config.py
similarity index 94%
rename from packages/modules/devices/huawei/config.py
rename to packages/modules/devices/huawei/huawei/config.py
index 335aefe933..1ed36ea2c0 100644
--- a/packages/modules/devices/huawei/config.py
+++ b/packages/modules/devices/huawei/huawei/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Huawei:
     def __init__(self,
                  name: str = "Huawei Hybrid Wechselrichter",
-                 type: str = "huawei",
+                 type: List[str] = ["huawei", "huawei"],
                  id: int = 0,
                  configuration: HuaweiConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or HuaweiConfiguration()
 
diff --git a/packages/modules/devices/huawei/counter.py b/packages/modules/devices/huawei/huawei/counter.py
similarity index 96%
rename from packages/modules/devices/huawei/counter.py
rename to packages/modules/devices/huawei/huawei/counter.py
index 7d9db97a43..6a01797f57 100644
--- a/packages/modules/devices/huawei/counter.py
+++ b/packages/modules/devices/huawei/huawei/counter.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.huawei.config import HuaweiCounterSetup
+from modules.devices.huawei.huawei.config import HuaweiCounterSetup
 
 
 class HuaweiCounter:
diff --git a/packages/modules/devices/huawei/device.py b/packages/modules/devices/huawei/huawei/device.py
similarity index 86%
rename from packages/modules/devices/huawei/device.py
rename to packages/modules/devices/huawei/huawei/device.py
index 853df71ba7..db8bd43806 100644
--- a/packages/modules/devices/huawei/device.py
+++ b/packages/modules/devices/huawei/huawei/device.py
@@ -6,10 +6,10 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.huawei.bat import HuaweiBat
-from modules.devices.huawei.config import Huawei, HuaweiBatSetup, HuaweiCounterSetup, HuaweiInverterSetup
-from modules.devices.huawei.counter import HuaweiCounter
-from modules.devices.huawei.inverter import HuaweiInverter
+from modules.devices.huawei.huawei.bat import HuaweiBat
+from modules.devices.huawei.huawei.config import Huawei, HuaweiBatSetup, HuaweiCounterSetup, HuaweiInverterSetup
+from modules.devices.huawei.huawei.counter import HuaweiCounter
+from modules.devices.huawei.huawei.inverter import HuaweiInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/huawei/inverter.py b/packages/modules/devices/huawei/huawei/inverter.py
similarity index 95%
rename from packages/modules/devices/huawei/inverter.py
rename to packages/modules/devices/huawei/huawei/inverter.py
index 36882280f9..8e98ed1fcd 100644
--- a/packages/modules/devices/huawei/inverter.py
+++ b/packages/modules/devices/huawei/huawei/inverter.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.huawei.config import HuaweiInverterSetup
+from modules.devices.huawei.huawei.config import HuaweiInverterSetup
 
 
 class HuaweiInverter:
diff --git a/packages/modules/devices/huawei/huawei_smartlogger/__init__.py b/packages/modules/devices/huawei/huawei_smartlogger/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/huawei_smartlogger/bat.py b/packages/modules/devices/huawei/huawei_smartlogger/bat.py
similarity index 95%
rename from packages/modules/devices/huawei_smartlogger/bat.py
rename to packages/modules/devices/huawei/huawei_smartlogger/bat.py
index eedf1de681..1fff51eb10 100644
--- a/packages/modules/devices/huawei_smartlogger/bat.py
+++ b/packages/modules/devices/huawei/huawei_smartlogger/bat.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.huawei_smartlogger.config import Huawei_SmartloggerBatSetup
+from modules.devices.huawei.huawei_smartlogger.config import Huawei_SmartloggerBatSetup
 
 
 class Huawei_SmartloggerBat:
diff --git a/packages/modules/devices/huawei_smartlogger/config.py b/packages/modules/devices/huawei/huawei_smartlogger/config.py
similarity index 94%
rename from packages/modules/devices/huawei_smartlogger/config.py
rename to packages/modules/devices/huawei/huawei_smartlogger/config.py
index e295ae5a9f..d9cb74b333 100644
--- a/packages/modules/devices/huawei_smartlogger/config.py
+++ b/packages/modules/devices/huawei/huawei_smartlogger/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
@@ -14,11 +14,12 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class Huawei_Smartlogger:
     def __init__(self,
                  name: str = "Huawei Smartlogger",
-                 type: str = "huawei_smartlogger",
+                 type: List[str] = ["huawei", "huawei_smartlogger"],
                  id: int = 0,
                  configuration: Huawei_SmartloggerConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or Huawei_SmartloggerConfiguration()
 
diff --git a/packages/modules/devices/huawei_smartlogger/counter.py b/packages/modules/devices/huawei/huawei_smartlogger/counter.py
similarity index 95%
rename from packages/modules/devices/huawei_smartlogger/counter.py
rename to packages/modules/devices/huawei/huawei_smartlogger/counter.py
index c8eab2d39e..1bbf5ea788 100644
--- a/packages/modules/devices/huawei_smartlogger/counter.py
+++ b/packages/modules/devices/huawei/huawei_smartlogger/counter.py
@@ -7,7 +7,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.huawei_smartlogger.config import Huawei_SmartloggerCounterSetup
+from modules.devices.huawei.huawei_smartlogger.config import Huawei_SmartloggerCounterSetup
 
 
 class Huawei_SmartloggerCounter:
diff --git a/packages/modules/devices/huawei/huawei_smartlogger/device.py b/packages/modules/devices/huawei/huawei_smartlogger/device.py
new file mode 100644
index 0000000000..75d0788231
--- /dev/null
+++ b/packages/modules/devices/huawei/huawei_smartlogger/device.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python3
+import logging
+from typing import Optional, Union, List, Dict
+from dataclass_utils import dataclass_from_dict
+from helpermodules.cli import run_using_positional_cli_args
+from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.common import modbus
+from modules.devices.huawei.huawei_smartlogger import counter
+from modules.devices.huawei.huawei_smartlogger import inverter
+from modules.devices.huawei.huawei_smartlogger import bat
+from modules.devices.huawei.huawei_smartlogger.config import Huawei_Smartlogger, Huawei_SmartloggerBatSetup
+from modules.devices.huawei.huawei_smartlogger.config import (Huawei_SmartloggerCounterSetup,
+                                                              Huawei_SmartloggerInverterSetup)
+
+
+log = logging.getLogger(__name__)
+
+
+huawei_smartlogger_component_classes = Union[bat.Huawei_SmartloggerBat,
+                                             counter.Huawei_SmartloggerCounter,
+                                             inverter.Huawei_SmartloggerInverter]
+
+
+class Device(AbstractDevice):
+    COMPONENT_TYPE_TO_CLASS = {
+        "bat": bat.Huawei_SmartloggerBat,
+        "counter": counter.Huawei_SmartloggerCounter,
+        "inverter": inverter.Huawei_SmartloggerInverter
+    }
+
+    def __init__(self, device_config: Union[Dict, Huawei_Smartlogger]) -> None:
+        self.components = {}  # type: Dict[str, huawei_smartlogger_component_classes]
+        try:
+            self.device_config = dataclass_from_dict(Huawei_Smartlogger, device_config)
+            ip_address = self.device_config.configuration.ip_address
+            self.port = self.device_config.configuration.port
+            self.client = modbus.ModbusTcpClient_(ip_address, self.device_config.configuration.port)
+            self.client.connect()
+        except Exception:
+            log.exception("Fehler im Modul "+self.device_config.name)
+
+    def add_component(self, component_config: Union[Dict,
+                                                    Huawei_SmartloggerBatSetup,
+                                                    Huawei_SmartloggerCounterSetup,
+                                                    Huawei_SmartloggerInverterSetup]) -> None:
+        if isinstance(component_config, Dict):
+            component_type = component_config["type"]
+        else:
+            component_type = component_config.type
+        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
+            component_type].component_descriptor.configuration_factory, component_config)
+        if component_type in self.COMPONENT_TYPE_TO_CLASS:
+            self.components["component"+str(component_config.id)] = (
+                self.COMPONENT_TYPE_TO_CLASS[component_type](self.device_config.id, component_config, self.client))
+        else:
+            raise Exception(
+                "illegal component type " + component_type + ". Allowed values: " +
+                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
+            )
+
+    def update(self) -> None:
+        log.debug("Start device reading " + str(self.components))
+        if self.components:
+            for component in self.components:
+                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
+                with SingleComponentUpdateContext(self.components[component].fault_state):
+                    self.components[component].update()
+        else:
+            log.warning(
+                self.device_config.name +
+                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
+            )
+
+
+COMPONENT_TYPE_TO_MODULE = {
+    "bat": bat,
+    "counter": counter,
+    "inverter": inverter
+}
+
+
+def read_legacy(component_type: str,
+                ip_address: str,
+                modbus_id: Optional[int] = 1,
+                num: Optional[int] = None) -> None:
+
+    device_config = Huawei_Smartlogger()
+    device_config.configuration.ip_address = ip_address
+    dev = Device(device_config)
+
+    if component_type in COMPONENT_TYPE_TO_MODULE:
+        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
+    else:
+        raise Exception(
+            "illegal component type " + component_type + ". Allowed values: " +
+            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
+        )
+    component_config.id = num
+    component_config.configuration.modbus_id = modbus_id
+    dev.add_component(component_config)
+
+    log.debug('Huawei Smartlogger IP-Adresse: ' + ip_address)
+    log.debug('Huawei Device Modbus-ID: ' + str(modbus_id))
+    dev.update()
+
+
+def main(argv: List[str]):
+    run_using_positional_cli_args(read_legacy, argv)
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=Huawei_Smartlogger)
diff --git a/packages/modules/devices/huawei_smartlogger/inverter.py b/packages/modules/devices/huawei/huawei_smartlogger/inverter.py
similarity index 94%
rename from packages/modules/devices/huawei_smartlogger/inverter.py
rename to packages/modules/devices/huawei/huawei_smartlogger/inverter.py
index a8613b64eb..4b10b35413 100644
--- a/packages/modules/devices/huawei_smartlogger/inverter.py
+++ b/packages/modules/devices/huawei/huawei_smartlogger/inverter.py
@@ -8,7 +8,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.huawei_smartlogger.config import Huawei_SmartloggerInverterSetup
+from modules.devices.huawei.huawei_smartlogger.config import Huawei_SmartloggerInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/huawei/vendor.py b/packages/modules/devices/huawei/vendor.py
new file mode 100644
index 0000000000..e5357fbf86
--- /dev/null
+++ b/packages/modules/devices/huawei/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Huawei"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/huawei_smartlogger/device.py b/packages/modules/devices/huawei_smartlogger/device.py
deleted file mode 100644
index 34f8aa058e..0000000000
--- a/packages/modules/devices/huawei_smartlogger/device.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python3
-import logging
-from typing import Iterable, Union
-
-from modules.common.abstract_device import DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-from modules.common import modbus
-from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.huawei_smartlogger import counter
-from modules.devices.huawei_smartlogger import inverter
-from modules.devices.huawei_smartlogger import bat
-from modules.devices.huawei_smartlogger.config import Huawei_Smartlogger, Huawei_SmartloggerBatSetup
-from modules.devices.huawei_smartlogger.config import Huawei_SmartloggerCounterSetup, Huawei_SmartloggerInverterSetup
-
-
-log = logging.getLogger(__name__)
-
-
-huawei_smartlogger_component_classes = Union[bat.Huawei_SmartloggerBat,
-                                             counter.Huawei_SmartloggerCounter,
-                                             inverter.Huawei_SmartloggerInverter]
-
-
-def create_device(device_config: Huawei_Smartlogger):
-    def create_bat_component(component_config: Huawei_SmartloggerBatSetup):
-        return bat.Huawei_SmartloggerBat(device_config.id, component_config, client)
-
-    def create_counter_component(component_config: Huawei_SmartloggerCounterSetup):
-        return counter.Huawei_SmartloggerCounter(device_config.id, component_config, client)
-
-    def create_inverter_component(component_config: Huawei_SmartloggerInverterSetup):
-        return inverter.Huawei_SmartloggerInverter(device_config.id, component_config, client)
-
-    def update_components(components: Iterable[huawei_smartlogger_component_classes]):
-        with client:
-            for component in components:
-                with SingleComponentUpdateContext(component.fault_state):
-                    component.update()
-
-    try:
-        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
-    except Exception:
-        log.exception("Fehler in create_device")
-    return ConfigurableDevice(
-        device_config=device_config,
-        component_factory=ComponentFactoryByType(
-            bat=create_bat_component,
-            counter=create_counter_component,
-            inverter=create_inverter_component,
-        ),
-        component_updater=MultiComponentUpdater(update_components)
-    )
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=Huawei_Smartlogger)
diff --git a/packages/modules/devices/janitza/device.py b/packages/modules/devices/janitza/device.py
deleted file mode 100644
index e3aef00be8..0000000000
--- a/packages/modules/devices/janitza/device.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env python3
-import logging
-from typing import Iterable
-
-from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.common import modbus
-from modules.common.abstract_device import DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.janitza import counter
-from modules.devices.janitza.config import Janitza, JanitzaCounterSetup
-
-log = logging.getLogger(__name__)
-
-
-def create_device(device_config: Janitza):
-    def create_counter_component(component_config: JanitzaCounterSetup):
-        return counter.JanitzaCounter(device_config.id, component_config, client,
-                                      device_config.configuration.modbus_id)
-
-    def update_components(components: Iterable[counter.JanitzaCounter]):
-        with client:
-            for component in components:
-                with SingleComponentUpdateContext(component.fault_state):
-                    component.update()
-
-    try:
-        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
-    except Exception:
-        log.exception("Fehler in create_device")
-    return ConfigurableDevice(
-        device_config=device_config,
-        component_factory=ComponentFactoryByType(
-            counter=create_counter_component,
-        ),
-        component_updater=MultiComponentUpdater(update_components)
-    )
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=Janitza)
diff --git a/packages/modules/devices/janitza/janitza/__init__.py b/packages/modules/devices/janitza/janitza/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/janitza/config.py b/packages/modules/devices/janitza/janitza/config.py
similarity index 89%
rename from packages/modules/devices/janitza/config.py
rename to packages/modules/devices/janitza/janitza/config.py
index 4c1c91852f..1f92818f05 100644
--- a/packages/modules/devices/janitza/config.py
+++ b/packages/modules/devices/janitza/janitza/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Janitza:
     def __init__(self,
                  name: str = "Janitza",
-                 type: str = "janitza",
+                 type: List[str] = ["janitza", "janitza"],
                  id: int = 0,
                  configuration: JanitzaConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or JanitzaConfiguration()
 
diff --git a/packages/modules/devices/janitza/counter.py b/packages/modules/devices/janitza/janitza/counter.py
similarity index 97%
rename from packages/modules/devices/janitza/counter.py
rename to packages/modules/devices/janitza/janitza/counter.py
index 935743bf9a..8be59cc634 100644
--- a/packages/modules/devices/janitza/counter.py
+++ b/packages/modules/devices/janitza/janitza/counter.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.janitza.config import JanitzaCounterSetup
+from modules.devices.janitza.janitza.config import JanitzaCounterSetup
 
 
 class JanitzaCounter:
diff --git a/packages/modules/devices/janitza/janitza/device.py b/packages/modules/devices/janitza/janitza/device.py
new file mode 100644
index 0000000000..442d13c9ba
--- /dev/null
+++ b/packages/modules/devices/janitza/janitza/device.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python3
+import logging
+from typing import Dict, Optional, List, Union
+
+from dataclass_utils import dataclass_from_dict
+from helpermodules.cli import run_using_positional_cli_args
+from modules.common import modbus
+from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.devices.janitza.janitza import counter
+from modules.devices.janitza.janitza.config import Janitza, JanitzaCounterSetup
+
+log = logging.getLogger(__name__)
+
+
+class Device(AbstractDevice):
+    COMPONENT_TYPE_TO_CLASS = {
+        "counter": counter.JanitzaCounter
+    }
+
+    def __init__(self, device_config: Union[Dict, Janitza]) -> None:
+        self.components = {}  # type: Dict[str, counter.JanitzaCounter]
+        try:
+            self.device_config = dataclass_from_dict(Janitza, device_config)
+            self.client = modbus.ModbusTcpClient_(
+                self.device_config.configuration.ip_address, self.device_config.configuration.port)
+        except Exception:
+            log.exception("Fehler im Modul "+self.device_config.name)
+
+    def add_component(self, component_config: Union[Dict, JanitzaCounterSetup]) -> None:
+        if isinstance(component_config, Dict):
+            component_type = component_config["type"]
+        else:
+            component_type = component_config.type
+        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
+            component_type].component_descriptor.configuration_factory, component_config)
+        if component_type in self.COMPONENT_TYPE_TO_CLASS:
+            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
+                self.device_config.id, component_config, self.client,
+                self.device_config.configuration.modbus_id))
+        else:
+            raise Exception(
+                "illegal component type " + component_type + ". Allowed values: " +
+                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
+            )
+
+    def update(self) -> None:
+        log.debug("Start device reading " + str(self.components))
+        if self.components:
+            for component in self.components:
+                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
+                with SingleComponentUpdateContext(self.components[component].fault_state):
+                    self.components[component].update()
+        else:
+            log.warning(
+                self.device_config.name +
+                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
+            )
+
+
+COMPONENT_TYPE_TO_MODULE = {
+    "counter": counter
+}
+
+
+def read_legacy(component_type: str, ip_address: str, num: Optional[int] = None) -> None:
+    device_config = Janitza()
+    device_config.configuration.ip_address = ip_address
+    dev = Device(device_config)
+    if component_type in COMPONENT_TYPE_TO_MODULE:
+        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
+    else:
+        raise Exception(
+            "illegal component type " + component_type + ". Allowed values: " +
+            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
+        )
+    component_config.id = num
+    dev.add_component(component_config)
+
+    log.debug('Janitza IP-Adresse: ' + ip_address)
+
+    dev.update()
+
+
+def main(argv: List[str]):
+    run_using_positional_cli_args(read_legacy, argv)
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=Janitza)
diff --git a/packages/modules/devices/janitza/vendor.py b/packages/modules/devices/janitza/vendor.py
new file mode 100644
index 0000000000..4cadf41009
--- /dev/null
+++ b/packages/modules/devices/janitza/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Janitza"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/kostal/kostal_piko/__init__.py b/packages/modules/devices/kostal/kostal_piko/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/kostal_piko/config.py b/packages/modules/devices/kostal/kostal_piko/config.py
similarity index 92%
rename from packages/modules/devices/kostal_piko/config.py
rename to packages/modules/devices/kostal/kostal_piko/config.py
index 2045c5717f..f1841a1667 100644
--- a/packages/modules/devices/kostal_piko/config.py
+++ b/packages/modules/devices/kostal/kostal_piko/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -11,11 +11,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class KostalPiko:
     def __init__(self,
                  name: str = "Kostal Piko",
-                 type: str = "kostal_piko",
+                 type: List[str] = ["kostal", "kostal_piko"],
                  id: int = 0,
                  configuration: KostalPikoConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or KostalPikoConfiguration()
 
diff --git a/packages/modules/devices/kostal_piko/counter.py b/packages/modules/devices/kostal/kostal_piko/counter.py
similarity index 96%
rename from packages/modules/devices/kostal_piko/counter.py
rename to packages/modules/devices/kostal/kostal_piko/counter.py
index f175ed1408..9ae46f918c 100644
--- a/packages/modules/devices/kostal_piko/counter.py
+++ b/packages/modules/devices/kostal/kostal_piko/counter.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.kostal_piko.config import KostalPikoCounterSetup
+from modules.devices.kostal.kostal_piko.config import KostalPikoCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/kostal/kostal_piko/device.py b/packages/modules/devices/kostal/kostal_piko/device.py
new file mode 100644
index 0000000000..78cace700e
--- /dev/null
+++ b/packages/modules/devices/kostal/kostal_piko/device.py
@@ -0,0 +1,137 @@
+#!/usr/bin/env python3
+import logging
+from typing import Dict, Union, Optional, List
+
+from dataclass_utils import dataclass_from_dict
+from helpermodules.cli import run_using_positional_cli_args
+from modules.devices.byd.byd.config import BYD, BYDBatSetup, BYDConfiguration
+from modules.devices.byd.byd.device import Device as BYDDevice
+from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.component_state import CounterState
+from modules.common.simcount import sim_count
+from modules.common.store import get_counter_value_store
+from modules.devices.kostal.kostal_piko import counter
+from modules.devices.kostal.kostal_piko import inverter
+from modules.devices.kostal.kostal_piko.config import (KostalPiko,
+                                                       KostalPikoConfiguration,
+                                                       KostalPikoCounterSetup,
+                                                       KostalPikoInverterConfiguration,
+                                                       KostalPikoInverterSetup)
+
+log = logging.getLogger(__name__)
+
+
+kostal_piko_component_classes = Union[counter.KostalPikoCounter, inverter.KostalPikoInverter]
+
+
+class Device(AbstractDevice):
+    COMPONENT_TYPE_TO_CLASS = {
+        "counter": counter.KostalPikoCounter,
+        "inverter": inverter.KostalPikoInverter
+    }
+
+    def __init__(self, device_config: Union[Dict, KostalPiko]) -> None:
+        self.components = {}  # type: Dict[str, kostal_piko_component_classes]
+        try:
+            self.device_config = dataclass_from_dict(KostalPiko, device_config)
+        except Exception:
+            log.exception("Fehler im Modul "+self.device_config.name)
+
+    def add_component(self, component_config: Union[Dict, KostalPikoCounterSetup, KostalPikoInverterSetup]) -> None:
+        if isinstance(component_config, Dict):
+            component_type = component_config["type"]
+        else:
+            component_type = component_config.type
+        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
+            component_type].component_descriptor.configuration_factory, component_config)
+        if component_type in self.COMPONENT_TYPE_TO_CLASS:
+            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
+                self.device_config.id, component_config, self.device_config.configuration.ip_address))
+        else:
+            raise Exception(
+                "illegal component type " + component_type + ". Allowed values: " +
+                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
+            )
+
+    def update(self) -> None:
+        log.debug("Start device reading " + str(self.components))
+        if self.components:
+            for component in self.components:
+                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
+                with SingleComponentUpdateContext(self.components[component].fault_state):
+                    self.components[component].update()
+        else:
+            log.warning(
+                self.device_config.name +
+                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
+            )
+
+
+COMPONENT_TYPE_TO_MODULE = {
+    "counter": counter,
+    "inverter": inverter
+}
+
+
+def read_legacy(component_type: str,
+                address: str,
+                bat_module: str,
+                bat_ip: str,
+                bat_username: str,
+                bat_password: str,
+                num: Optional[int] = None) -> None:
+    dev = Device(KostalPiko(configuration=KostalPikoConfiguration(ip_address=address)))
+    if component_type in COMPONENT_TYPE_TO_MODULE:
+        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
+    else:
+        raise Exception(
+            "illegal component type " + component_type + ". Allowed values: " +
+            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
+        )
+    component_config.id = num
+    if isinstance(component_config, KostalPikoInverterSetup) and bat_module != "none":
+        component_config.configuration.bat_configured = True
+    dev.add_component(component_config)
+
+    log.debug('KostalPiko IP-Adresse: ' + address)
+    log.debug('KostalPiko Speicher: ' + bat_module)
+
+    if isinstance(component_config, KostalPikoInverterSetup):
+        dev.update()
+    elif isinstance(component_config, KostalPikoCounterSetup):
+        with SingleComponentUpdateContext(dev.components["componentNone"].component_info):
+            home_consumption, powers = dev.components["componentNone"].get_values()
+            if bat_module == "speicher_bydhv":
+                bat_power = _get_byd_bat_power(bat_ip, bat_username, bat_password, 1)
+                home_consumption += bat_power
+
+            dev.add_component(KostalPikoInverterSetup(
+                id=1, configuration=KostalPikoInverterConfiguration(bat_configured=True)))
+            inverter_power, _ = dev.components["component"+str(1)].update()
+
+            power = home_consumption + inverter_power
+            imported, exported = sim_count(power, prefix="bezug")
+            counter_state = CounterState(
+                imported=imported,
+                exported=exported,
+                power=power,
+                powers=powers
+            )
+            get_counter_value_store(None).set(counter_state)
+
+
+def _get_byd_bat_power(bat_ip: str, bat_username: str, bat_password: str, num: int) -> float:
+    bat_dev = BYDDevice(BYD(configuration=BYDConfiguration(user=bat_username,
+                                                           password=bat_password,
+                                                           ip_address=bat_ip)))
+    bat_dev.add_component(BYDBatSetup(id=num))
+    bat_power, _ = bat_dev.components["component"+str(num)].get_values()
+    return bat_power
+
+
+def main(argv: List[str]):
+    run_using_positional_cli_args(read_legacy, argv)
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=KostalPiko)
diff --git a/packages/modules/devices/kostal_piko/inverter.py b/packages/modules/devices/kostal/kostal_piko/inverter.py
similarity index 95%
rename from packages/modules/devices/kostal_piko/inverter.py
rename to packages/modules/devices/kostal/kostal_piko/inverter.py
index 93243e90aa..955f43afa0 100644
--- a/packages/modules/devices/kostal_piko/inverter.py
+++ b/packages/modules/devices/kostal/kostal_piko/inverter.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
 from modules.common import req
-from modules.devices.kostal_piko.config import KostalPikoInverterSetup
+from modules.devices.kostal.kostal_piko.config import KostalPikoInverterSetup
 
 
 class KostalPikoInverter:
diff --git a/packages/modules/devices/kostal/kostal_piko_old/__init__.py b/packages/modules/devices/kostal/kostal_piko_old/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/kostal_piko_old/config.py b/packages/modules/devices/kostal/kostal_piko_old/config.py
similarity index 90%
rename from packages/modules/devices/kostal_piko_old/config.py
rename to packages/modules/devices/kostal/kostal_piko_old/config.py
index e22ddbf85e..7d0303b282 100644
--- a/packages/modules/devices/kostal_piko_old/config.py
+++ b/packages/modules/devices/kostal/kostal_piko_old/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
@@ -15,11 +15,12 @@ def __init__(self, url: Optional[str] = None, user: Optional[str] = None, passwo
 class KostalPikoOld:
     def __init__(self,
                  name: str = "Kostal Piko (alte Generation)",
-                 type: str = "kostal_piko_old",
+                 type: List[str] = ["kostal", "kostal_piko_old"],
                  id: int = 0,
                  configuration: KostalPikoOldConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or KostalPikoOldConfiguration()
 
diff --git a/packages/modules/devices/kostal/kostal_piko_old/counter.py b/packages/modules/devices/kostal/kostal_piko_old/counter.py
new file mode 100644
index 0000000000..1bbf5ea788
--- /dev/null
+++ b/packages/modules/devices/kostal/kostal_piko_old/counter.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+from dataclass_utils import dataclass_from_dict
+from modules.common import modbus
+from modules.common.component_state import CounterState
+from modules.common.component_type import ComponentDescriptor
+from modules.common.fault_state import ComponentInfo, FaultState
+from modules.common.modbus import ModbusDataType
+from modules.common.simcount import SimCounter
+from modules.common.store import get_counter_value_store
+from modules.devices.huawei.huawei_smartlogger.config import Huawei_SmartloggerCounterSetup
+
+
+class Huawei_SmartloggerCounter:
+    def __init__(self, device_id: int,
+                 component_config: Huawei_SmartloggerCounterSetup,
+                 tcp_client: modbus.ModbusTcpClient_) -> None:
+        self.__device_id = device_id
+        self.component_config = dataclass_from_dict(Huawei_SmartloggerCounterSetup, component_config)
+        self.client = tcp_client
+        self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="bezug")
+        self.store = get_counter_value_store(self.component_config.id)
+        self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
+
+    def update(self):
+        modbus_id = self.component_config.configuration.modbus_id
+        power = self.client.read_holding_registers(32278, ModbusDataType.INT_32, unit=modbus_id)
+        currents = [val / 100 for val in self.client.read_holding_registers(
+            32272, [ModbusDataType.INT_32] * 3, unit=modbus_id)]
+        voltages = [val / 100 for val in self.client.read_holding_registers(
+            32260, [ModbusDataType.INT_32] * 3, unit=modbus_id)]
+        powers = [val / 1000 for val in self.client.read_holding_registers(
+            32335, [ModbusDataType.INT_32] * 3, unit=modbus_id)]
+        imported, exported = self.sim_counter.sim_count(power)
+        counter_state = CounterState(
+            currents=currents,
+            imported=imported,
+            exported=exported,
+            power=power,
+            powers=powers,
+            voltages=voltages
+        )
+        self.store.set(counter_state)
+
+
+component_descriptor = ComponentDescriptor(configuration_factory=Huawei_SmartloggerCounterSetup)
diff --git a/packages/modules/devices/kostal_piko_old/device.py b/packages/modules/devices/kostal/kostal_piko_old/device.py
similarity index 86%
rename from packages/modules/devices/kostal_piko_old/device.py
rename to packages/modules/devices/kostal/kostal_piko_old/device.py
index 59bb5ccfce..33b8cee767 100644
--- a/packages/modules/devices/kostal_piko_old/device.py
+++ b/packages/modules/devices/kostal/kostal_piko_old/device.py
@@ -7,9 +7,11 @@
 from modules.common import req
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
-from modules.devices.kostal_piko_old import inverter
-from modules.devices.kostal_piko_old.config import KostalPikoOld, KostalPikoOldConfiguration, KostalPikoOldInverterSetup
-from modules.devices.kostal_piko_old.inverter import KostalPikoOldInverter
+from modules.devices.kostal.kostal_piko_old import inverter
+from modules.devices.kostal.kostal_piko_old.config import (KostalPikoOld,
+                                                           KostalPikoOldConfiguration,
+                                                           KostalPikoOldInverterSetup)
+from modules.devices.kostal.kostal_piko_old.inverter import KostalPikoOldInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/kostal_piko_old/inverter.py b/packages/modules/devices/kostal/kostal_piko_old/inverter.py
similarity index 95%
rename from packages/modules/devices/kostal_piko_old/inverter.py
rename to packages/modules/devices/kostal/kostal_piko_old/inverter.py
index 7c466b98c0..a44cdb5120 100644
--- a/packages/modules/devices/kostal_piko_old/inverter.py
+++ b/packages/modules/devices/kostal/kostal_piko_old/inverter.py
@@ -6,7 +6,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.kostal_piko_old.config import KostalPikoOldInverterSetup
+from modules.devices.kostal.kostal_piko_old.config import KostalPikoOldInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/kostal_piko_old/inverter_test.py b/packages/modules/devices/kostal/kostal_piko_old/inverter_test.py
similarity index 88%
rename from packages/modules/devices/kostal_piko_old/inverter_test.py
rename to packages/modules/devices/kostal/kostal_piko_old/inverter_test.py
index 2c6c5deec8..d29a9aebf9 100644
--- a/packages/modules/devices/kostal_piko_old/inverter_test.py
+++ b/packages/modules/devices/kostal/kostal_piko_old/inverter_test.py
@@ -4,8 +4,8 @@
 import pytest
 from modules.common.component_state import InverterState
 
-from modules.devices.kostal_piko_old import inverter
-from modules.devices.kostal_piko_old.config import KostalPikoOldInverterSetup
+from modules.devices.kostal.kostal_piko_old import inverter
+from modules.devices.kostal.kostal_piko_old.config import KostalPikoOldInverterSetup
 
 
 @pytest.mark.parametrize("sample_file_name, expected_inverter_state",
diff --git a/packages/modules/devices/kostal_piko_old/sample.html b/packages/modules/devices/kostal/kostal_piko_old/sample.html
similarity index 99%
rename from packages/modules/devices/kostal_piko_old/sample.html
rename to packages/modules/devices/kostal/kostal_piko_old/sample.html
index 6214c132df..07d31ccdd7 100644
--- a/packages/modules/devices/kostal_piko_old/sample.html
+++ b/packages/modules/devices/kostal/kostal_piko_old/sample.html
@@ -251,4 +251,4 @@
 		</tr></table></font>
 </form>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/packages/modules/devices/kostal_piko_old/sample_off.html b/packages/modules/devices/kostal/kostal_piko_old/sample_off.html
similarity index 99%
rename from packages/modules/devices/kostal_piko_old/sample_off.html
rename to packages/modules/devices/kostal/kostal_piko_old/sample_off.html
index 2ec26e9d7b..6034f29509 100644
--- a/packages/modules/devices/kostal_piko_old/sample_off.html
+++ b/packages/modules/devices/kostal/kostal_piko_old/sample_off.html
@@ -251,4 +251,4 @@
 		</tr></table></font>
 </form>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/packages/modules/devices/kostal/kostal_plenticore/__init__.py b/packages/modules/devices/kostal/kostal_plenticore/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/kostal_plenticore/bat.py b/packages/modules/devices/kostal/kostal_plenticore/bat.py
similarity index 95%
rename from packages/modules/devices/kostal_plenticore/bat.py
rename to packages/modules/devices/kostal/kostal_plenticore/bat.py
index c1bfd6402a..92c643a715 100644
--- a/packages/modules/devices/kostal_plenticore/bat.py
+++ b/packages/modules/devices/kostal/kostal_plenticore/bat.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.kostal_plenticore.config import KostalPlenticoreBatSetup
+from modules.devices.kostal.kostal_plenticore.config import KostalPlenticoreBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/kostal_plenticore/config.py b/packages/modules/devices/kostal/kostal_plenticore/config.py
similarity index 94%
rename from packages/modules/devices/kostal_plenticore/config.py
rename to packages/modules/devices/kostal/kostal_plenticore/config.py
index 92a461728a..f324ace7dc 100644
--- a/packages/modules/devices/kostal_plenticore/config.py
+++ b/packages/modules/devices/kostal/kostal_plenticore/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 71, ip_address: Optional[str] = None, port:
 class KostalPlenticore:
     def __init__(self,
                  name: str = "Kostal Plenticore",
-                 type: str = "kostal_plenticore",
+                 type: List[str] = ["kostal", "kostal_plenticore"],
                  id: int = 0,
                  configuration: KostalPlenticoreConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or KostalPlenticoreConfiguration()
 
diff --git a/packages/modules/devices/kostal_plenticore/counter.py b/packages/modules/devices/kostal/kostal_plenticore/counter.py
similarity index 95%
rename from packages/modules/devices/kostal_plenticore/counter.py
rename to packages/modules/devices/kostal/kostal_plenticore/counter.py
index cc52caa55c..6bce649420 100644
--- a/packages/modules/devices/kostal_plenticore/counter.py
+++ b/packages/modules/devices/kostal/kostal_plenticore/counter.py
@@ -6,7 +6,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.kostal_plenticore.config import KostalPlenticoreCounterSetup
+from modules.devices.kostal.kostal_plenticore.config import KostalPlenticoreCounterSetup
 
 
 class KostalPlenticoreCounter:
diff --git a/packages/modules/devices/kostal_plenticore/device.py b/packages/modules/devices/kostal/kostal_plenticore/device.py
similarity index 91%
rename from packages/modules/devices/kostal_plenticore/device.py
rename to packages/modules/devices/kostal/kostal_plenticore/device.py
index 2b6494c5e8..6e6848e58e 100644
--- a/packages/modules/devices/kostal_plenticore/device.py
+++ b/packages/modules/devices/kostal/kostal_plenticore/device.py
@@ -13,11 +13,12 @@
 from modules.common.component_state import InverterState
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.store import get_counter_value_store
-from modules.devices.kostal_plenticore.bat import KostalPlenticoreBat
-from modules.devices.kostal_plenticore.inverter import KostalPlenticoreInverter
-from modules.devices.kostal_plenticore.config import (KostalPlenticore, KostalPlenticoreBatSetup,
-                                                      KostalPlenticoreCounterSetup, KostalPlenticoreInverterSetup)
-from modules.devices.kostal_plenticore.counter import KostalPlenticoreCounter
+from modules.devices.kostal.kostal_plenticore.bat import KostalPlenticoreBat
+from modules.devices.kostal.kostal_plenticore.inverter import KostalPlenticoreInverter
+from modules.devices.kostal.kostal_plenticore.config import (KostalPlenticore, KostalPlenticoreBatSetup,
+                                                             KostalPlenticoreCounterSetup,
+                                                             KostalPlenticoreInverterSetup)
+from modules.devices.kostal.kostal_plenticore.counter import KostalPlenticoreCounter
 
 
 log = logging.getLogger(__name__)
diff --git a/packages/modules/devices/kostal_plenticore/inverter.py b/packages/modules/devices/kostal/kostal_plenticore/inverter.py
similarity index 94%
rename from packages/modules/devices/kostal_plenticore/inverter.py
rename to packages/modules/devices/kostal/kostal_plenticore/inverter.py
index 2f78d9fbfd..60800b856d 100644
--- a/packages/modules/devices/kostal_plenticore/inverter.py
+++ b/packages/modules/devices/kostal/kostal_plenticore/inverter.py
@@ -5,7 +5,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_inverter_value_store
-from modules.devices.kostal_plenticore.config import KostalPlenticoreInverterSetup
+from modules.devices.kostal.kostal_plenticore.config import KostalPlenticoreInverterSetup
 
 
 class KostalPlenticoreInverter:
diff --git a/packages/modules/devices/kostal/kostal_sem/__init__.py b/packages/modules/devices/kostal/kostal_sem/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/kostal_sem/config.py b/packages/modules/devices/kostal/kostal_sem/config.py
similarity index 90%
rename from packages/modules/devices/kostal_sem/config.py
rename to packages/modules/devices/kostal/kostal_sem/config.py
index a42ebc19dc..c0e106d30a 100644
--- a/packages/modules/devices/kostal_sem/config.py
+++ b/packages/modules/devices/kostal/kostal_sem/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 71, ip_address: Optional[str] = None, port:
 class KostalSem:
     def __init__(self,
                  name: str = "Kostal Smart Energy Meter oder TQ EM 410",
-                 type: str = "kostal_sem",
+                 type: List[str] = ["kostal", "kostal_sem"],
                  id: int = 0,
                  configuration: KostalSemConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or KostalSemConfiguration()
 
diff --git a/packages/modules/devices/kostal_sem/counter.py b/packages/modules/devices/kostal/kostal_sem/counter.py
similarity index 97%
rename from packages/modules/devices/kostal_sem/counter.py
rename to packages/modules/devices/kostal/kostal_sem/counter.py
index d3d8792d3e..b2961cd6fa 100644
--- a/packages/modules/devices/kostal_sem/counter.py
+++ b/packages/modules/devices/kostal/kostal_sem/counter.py
@@ -5,7 +5,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_counter_value_store
-from modules.devices.kostal_sem.config import KostalSemCounterSetup
+from modules.devices.kostal.kostal_sem.config import KostalSemCounterSetup
 
 
 class KostalSemCounter:
diff --git a/packages/modules/devices/kostal_sem/device.py b/packages/modules/devices/kostal/kostal_sem/device.py
similarity index 88%
rename from packages/modules/devices/kostal_sem/device.py
rename to packages/modules/devices/kostal/kostal_sem/device.py
index b4ffe56715..46dd917f53 100644
--- a/packages/modules/devices/kostal_sem/device.py
+++ b/packages/modules/devices/kostal/kostal_sem/device.py
@@ -5,8 +5,8 @@
 from modules.common import modbus
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, IndependentComponentUpdater
-from modules.devices.kostal_sem.counter import KostalSemCounter
-from modules.devices.kostal_sem.config import KostalSem, KostalSemConfiguration, KostalSemCounterSetup
+from modules.devices.kostal.kostal_sem.counter import KostalSemCounter
+from modules.devices.kostal.kostal_sem.config import KostalSem, KostalSemConfiguration, KostalSemCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/kostal/kostal_steca/__init__.py b/packages/modules/devices/kostal/kostal_steca/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/kostal_steca/config.py b/packages/modules/devices/kostal/kostal_steca/config.py
similarity index 90%
rename from packages/modules/devices/kostal_steca/config.py
rename to packages/modules/devices/kostal/kostal_steca/config.py
index 5f4814db4a..35b956aa8f 100644
--- a/packages/modules/devices/kostal_steca/config.py
+++ b/packages/modules/devices/kostal/kostal_steca/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class KostalSteca:
     def __init__(self,
                  name: str = "Kostal Piko MP oder Steca Grid Coolcept",
-                 type: str = "kostal_steca",
+                 type: List[str] = ["kostal", "kostal_steca"],
                  id: int = 0,
                  configuration: KostalStecaConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or KostalStecaConfiguration()
 
diff --git a/packages/modules/devices/kostal_steca/device.py b/packages/modules/devices/kostal/kostal_steca/device.py
similarity index 91%
rename from packages/modules/devices/kostal_steca/device.py
rename to packages/modules/devices/kostal/kostal_steca/device.py
index 9c1eca38f9..c1a489a832 100644
--- a/packages/modules/devices/kostal_steca/device.py
+++ b/packages/modules/devices/kostal/kostal_steca/device.py
@@ -7,9 +7,9 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.component_state import InverterState
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, IndependentComponentUpdater
-from modules.devices.kostal_steca import inverter
-from modules.devices.kostal_steca.config import KostalSteca, KostalStecaInverterSetup
-from modules.devices.kostal_steca.inverter import KostalStecaInverter
+from modules.devices.kostal.kostal_steca import inverter
+from modules.devices.kostal.kostal_steca.config import KostalSteca, KostalStecaInverterSetup
+from modules.devices.kostal.kostal_steca.inverter import KostalStecaInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/kostal_steca/inverter.py b/packages/modules/devices/kostal/kostal_steca/inverter.py
similarity index 97%
rename from packages/modules/devices/kostal_steca/inverter.py
rename to packages/modules/devices/kostal/kostal_steca/inverter.py
index b871ebf44d..82334a2db6 100644
--- a/packages/modules/devices/kostal_steca/inverter.py
+++ b/packages/modules/devices/kostal/kostal_steca/inverter.py
@@ -10,7 +10,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.kostal_steca.config import KostalStecaInverterSetup
+from modules.devices.kostal.kostal_steca.config import KostalStecaInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/kostal_steca/inverter_test.py b/packages/modules/devices/kostal/kostal_steca/inverter_test.py
similarity index 76%
rename from packages/modules/devices/kostal_steca/inverter_test.py
rename to packages/modules/devices/kostal/kostal_steca/inverter_test.py
index 060a03e7e5..1a2553ad60 100644
--- a/packages/modules/devices/kostal_steca/inverter_test.py
+++ b/packages/modules/devices/kostal/kostal_steca/inverter_test.py
@@ -1,8 +1,8 @@
 import pytest
 from modules.conftest import SAMPLE_IP
 
-from modules.devices.kostal_steca.config import KostalStecaInverterSetup
-from modules.devices.kostal_steca.inverter import KostalStecaInverter
+from modules.devices.kostal.kostal_steca.config import KostalStecaInverterSetup
+from modules.devices.kostal.kostal_steca.inverter import KostalStecaInverter
 
 
 @pytest.mark.parametrize("measurements_file, expected_power",
@@ -16,11 +16,11 @@ def test_get_values(measurements_file, expected_power, requests_mock):
     # setup
     inverter = KostalStecaInverter(KostalStecaInverterSetup(), SAMPLE_IP)
 
-    with open("packages/modules/devices/kostal_steca/"+measurements_file, "r") as f:
+    with open("packages/modules/devices/kostal/kostal_steca/"+measurements_file, "r") as f:
         measurements_sample = f.read()
     requests_mock.get("http://" + SAMPLE_IP + "/measurements.xml", text=measurements_sample)
 
-    with open("packages/modules/devices/kostal_steca/yields.xml", "r") as f:
+    with open("packages/modules/devices/kostal/kostal_steca/yields.xml", "r") as f:
         yields_sample = f.read()
     requests_mock.get("http://" + SAMPLE_IP + "/yields.xml", text=yields_sample)
 
diff --git a/packages/modules/devices/kostal_steca/measurements_no_production.xml b/packages/modules/devices/kostal/kostal_steca/measurements_no_production.xml
similarity index 99%
rename from packages/modules/devices/kostal_steca/measurements_no_production.xml
rename to packages/modules/devices/kostal/kostal_steca/measurements_no_production.xml
index 10e2abaf39..163c0f8ec1 100644
--- a/packages/modules/devices/kostal_steca/measurements_no_production.xml
+++ b/packages/modules/devices/kostal/kostal_steca/measurements_no_production.xml
@@ -17,4 +17,4 @@
 			<Measurement Value="100.0" Unit="%" Type="Derating"/>
 		</Measurements>
 	</Device>
-</root>
+</root>
\ No newline at end of file
diff --git a/packages/modules/devices/kostal_steca/measurements_no_production_piko3p6mp.xml b/packages/modules/devices/kostal/kostal_steca/measurements_no_production_piko3p6mp.xml
similarity index 100%
rename from packages/modules/devices/kostal_steca/measurements_no_production_piko3p6mp.xml
rename to packages/modules/devices/kostal/kostal_steca/measurements_no_production_piko3p6mp.xml
diff --git a/packages/modules/devices/kostal_steca/measurements_production.xml b/packages/modules/devices/kostal/kostal_steca/measurements_production.xml
similarity index 99%
rename from packages/modules/devices/kostal_steca/measurements_production.xml
rename to packages/modules/devices/kostal/kostal_steca/measurements_production.xml
index 7f426605b7..4faacf2e18 100644
--- a/packages/modules/devices/kostal_steca/measurements_production.xml
+++ b/packages/modules/devices/kostal/kostal_steca/measurements_production.xml
@@ -17,4 +17,4 @@
 			<Measurement Value="100.0" Unit="%" Type="Derating"/>
 		</Measurements>
 	</Device>
-</root>
+</root>
\ No newline at end of file
diff --git a/packages/modules/devices/kostal_steca/yields.xml b/packages/modules/devices/kostal/kostal_steca/yields.xml
similarity index 98%
rename from packages/modules/devices/kostal_steca/yields.xml
rename to packages/modules/devices/kostal/kostal_steca/yields.xml
index 2444a66795..217eac855a 100644
--- a/packages/modules/devices/kostal_steca/yields.xml
+++ b/packages/modules/devices/kostal/kostal_steca/yields.xml
@@ -6,4 +6,4 @@
 			</Yield>
 		</Yields>
 	</Device>
-</root>
+</root>
\ No newline at end of file
diff --git a/packages/modules/devices/kostal/vendor.py b/packages/modules/devices/kostal/vendor.py
new file mode 100644
index 0000000000..84bbb00e01
--- /dev/null
+++ b/packages/modules/devices/kostal/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Kostal"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/kostal_piko/device.py b/packages/modules/devices/kostal_piko/device.py
deleted file mode 100644
index 567d6f26cd..0000000000
--- a/packages/modules/devices/kostal_piko/device.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env python3
-import logging
-
-from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
-from modules.common.abstract_device import DeviceDescriptor
-from modules.devices.kostal_piko import counter
-from modules.devices.kostal_piko import inverter
-from modules.devices.kostal_piko.config import KostalPiko, KostalPikoCounterSetup, KostalPikoInverterSetup
-
-log = logging.getLogger(__name__)
-
-
-def create_device(device_config: KostalPiko):
-    def create_counter_component(component_config: KostalPikoCounterSetup):
-        return counter.KostalPikoCounter(device_config.id, component_config, device_config.configuration.ip_address)
-
-    def create_inverter_component(component_config: KostalPikoInverterSetup):
-        return inverter.KostalPikoInverter(device_config.id, component_config, device_config.configuration.ip_address)
-
-    return ConfigurableDevice(
-        device_config=device_config,
-        component_factory=ComponentFactoryByType(
-            counter=create_counter_component,
-            inverter=create_inverter_component,
-        ),
-        component_updater=IndependentComponentUpdater(lambda component: component.update())
-    )
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=KostalPiko)
diff --git a/packages/modules/devices/lg/device.py b/packages/modules/devices/lg/device.py
deleted file mode 100644
index 93a01be397..0000000000
--- a/packages/modules/devices/lg/device.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/env python3
-import json
-import logging
-from typing import Dict, Iterable, Union
-from requests import HTTPError, Session
-
-from modules.common import req
-from modules.common.abstract_device import DeviceDescriptor
-from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.lg.bat import LgBat
-from modules.devices.lg.config import LG, LgBatSetup, LgCounterSetup, LgInverterSetup
-from modules.devices.lg.counter import LgCounter
-from modules.devices.lg.inverter import LgInverter
-
-log = logging.getLogger(__name__)
-
-
-def _update_session_key(session: Session, ip_address: str, password: str) -> str:
-    try:
-        headers = {'Content-Type': 'application/json', }
-        data = json.dumps({"password": password})
-        response = session.put(f"https://{ip_address}/v1/login", headers=headers,
-                               data=data, verify=False, timeout=5).json()
-        return response["auth_key"]
-    except (HTTPError, KeyError) as e:
-        e.args += ("login failed! check password!", )
-        raise e
-
-
-def _request_data(session: Session, session_key: str, ip_address: str) -> Dict:
-    headers = {'Content-Type': 'application/json', }
-    data = json.dumps({"auth_key": session_key})
-    return session.post(f"https://{ip_address}/v1/user/essinfo/home",
-                        headers=headers,
-                        data=data,
-                        verify=False,
-                        timeout=5).json()
-
-
-def create_device(device_config: LG):
-    def create_bat_component(component_config: LgBatSetup):
-        return LgBat(device_config.id, component_config)
-
-    def create_counter_component(component_config: LgCounterSetup):
-        return LgCounter(device_config.id, component_config)
-
-    def create_inverter_component(component_config: LgInverterSetup):
-        return LgInverter(device_config.id, component_config)
-
-    def update_components(components: Iterable[Union[LgBat, LgCounter, LgInverter]]):
-        nonlocal session_key
-        session = req.get_http_session()
-        try:
-            response = _request_data(session, session_key, device_config.configuration.ip_address)
-        except HTTPError:
-            session_key = _update_session_key(
-                session, device_config.configuration.ip_address, device_config.configuration.password)
-            response = _request_data(session, session_key, device_config.configuration.ip_address)
-
-        for component in components:
-            component.update(response)
-
-    session_key = " "
-    return ConfigurableDevice(
-        device_config=device_config,
-        component_factory=ComponentFactoryByType(
-            bat=create_bat_component,
-            counter=create_counter_component,
-            inverter=create_inverter_component,
-        ),
-        component_updater=MultiComponentUpdater(update_components)
-    )
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=LG)
diff --git a/packages/modules/devices/lg/JSON-Beispiele.txt b/packages/modules/devices/lg/lg/JSON-Beispiele.txt
similarity index 99%
rename from packages/modules/devices/lg/JSON-Beispiele.txt
rename to packages/modules/devices/lg/lg/JSON-Beispiele.txt
index c5e9182a79..40b347d623 100644
--- a/packages/modules/devices/lg/JSON-Beispiele.txt
+++ b/packages/modules/devices/lg/lg/JSON-Beispiele.txt
@@ -64,6 +64,4 @@ $ curl -k -d '{"auth_key":"67567d76-0c83-11ea-8a59-d84fb802005a"}' -H "Content-T
     {
         "pcs_status": "pcs_ok"
     }
-}
-
-
+}
\ No newline at end of file
diff --git a/packages/modules/devices/lg/lg/__init__.py b/packages/modules/devices/lg/lg/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/lg/bat.py b/packages/modules/devices/lg/lg/bat.py
similarity index 96%
rename from packages/modules/devices/lg/bat.py
rename to packages/modules/devices/lg/lg/bat.py
index d662a82921..bc922d368f 100644
--- a/packages/modules/devices/lg/bat.py
+++ b/packages/modules/devices/lg/lg/bat.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.lg.config import LgBatSetup
+from modules.devices.lg.lg.config import LgBatSetup
 
 
 class LgBat:
diff --git a/packages/modules/devices/lg/config.py b/packages/modules/devices/lg/lg/config.py
similarity index 94%
rename from packages/modules/devices/lg/config.py
rename to packages/modules/devices/lg/lg/config.py
index 5928426041..37787e6241 100644
--- a/packages/modules/devices/lg/config.py
+++ b/packages/modules/devices/lg/lg/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, ip_address: Optional[str] = None, password: Optional[str] = N
 class LG:
     def __init__(self,
                  name: str = "LG ESS V1.0",
-                 type: str = "lg",
+                 type: List[str] = ["lg", "lg"],
                  id: int = 0,
                  configuration: LgConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or LgConfiguration()
 
diff --git a/packages/modules/devices/lg/counter.py b/packages/modules/devices/lg/lg/counter.py
similarity index 96%
rename from packages/modules/devices/lg/counter.py
rename to packages/modules/devices/lg/lg/counter.py
index e849952dc2..f74b5f4f66 100644
--- a/packages/modules/devices/lg/counter.py
+++ b/packages/modules/devices/lg/lg/counter.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.lg.config import LgCounterSetup
+from modules.devices.lg.lg.config import LgCounterSetup
 
 
 class LgCounter:
diff --git a/packages/modules/devices/lg/lg/device.py b/packages/modules/devices/lg/lg/device.py
new file mode 100644
index 0000000000..715b8ba0a0
--- /dev/null
+++ b/packages/modules/devices/lg/lg/device.py
@@ -0,0 +1,146 @@
+#!/usr/bin/env python3
+import json
+import logging
+import os
+from typing import Dict, Union, Optional, List
+from requests import HTTPError, Session
+
+from dataclass_utils import dataclass_from_dict
+from helpermodules.cli import run_using_positional_cli_args
+from modules.common import req
+from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.component_context import MultiComponentUpdateContext
+from modules.devices.lg.lg.config import LG, LgBatSetup, LgConfiguration, LgCounterSetup, LgInverterSetup
+from modules.devices.lg.lg import bat, counter, inverter
+
+log = logging.getLogger(__name__)
+
+
+lg_component_classes = Union[bat.LgBat, counter.LgCounter, inverter.LgInverter]
+
+
+class Device(AbstractDevice):
+    """Beispiel JSON-Objekte liegen im Ordner lgessv1/JSON-Beispiele.txt
+    lg_ess_url:  IP/URL des LG ESS V1.0
+    lg_ess_pass: Passwort, um sich in den LG ESS V1.0 einzuloggen.
+                 Das Passwort ist standardmäßig die Registrierungsnummer,
+                 die sich auf dem PCS (dem Hybridwechselrichter und
+                 Batteriemanagementsystem) befindet (Aufkleber!). Alter-
+                 nativ findet man die Registrierungsnummer in der App unter
+                 dem Menüpunkt "Systeminformationen".
+                 Mit der Registrierungsnummer kann man sich dann in der
+                 Rolle "installer" einloggen."""
+    COMPONENT_TYPE_TO_CLASS = {
+        "bat": bat.LgBat,
+        "counter": counter.LgCounter,
+        "inverter": inverter.LgInverter
+    }
+
+    def __init__(self, device_config: Union[Dict, LG]) -> None:
+        self.components = {}  # type: Dict[str, lg_component_classes]
+        self.session_key = " "
+        try:
+            self.device_config = dataclass_from_dict(LG, device_config)
+        except Exception:
+            log.exception("Fehler im Modul "+self.device_config.name)
+
+    def add_component(self, component_config: Union[Dict, LgBatSetup, LgCounterSetup, LgInverterSetup]) -> None:
+        if isinstance(component_config, Dict):
+            component_type = component_config["type"]
+        else:
+            component_type = component_config.type
+        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
+            component_type].component_descriptor.configuration_factory, component_config)
+        if component_type in self.COMPONENT_TYPE_TO_CLASS:
+            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
+                self.device_config.id,
+                component_config))
+        else:
+            raise Exception(
+                "illegal component type " + component_type + ". Allowed values: " +
+                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
+            )
+
+    def update(self) -> None:
+        log.debug("Start device reading " + str(self.components))
+        if self.components:
+            with MultiComponentUpdateContext(self.components):
+                session = req.get_http_session()
+                try:
+                    response = self._request_data(session)
+                except HTTPError:
+                    self._update_session_key(session)
+                    response = self._request_data(session)
+
+                for component in self.components:
+                    self.components[component].update(response)
+        else:
+            log.warning(
+                self.device_config.name +
+                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
+            )
+
+    def _update_session_key(self, session: Session):
+        try:
+            headers = {'Content-Type': 'application/json', }
+            data = json.dumps({"password": self.device_config.configuration.password})
+            response = session.put("https://"+self.device_config.configuration.ip_address+'/v1/login', headers=headers,
+                                   data=data, verify=False, timeout=5).json()
+            self.session_key = response["auth_key"]
+        except (HTTPError, KeyError) as e:
+            e.args += ("login failed! check password!", )
+            raise e
+
+    def _request_data(self, session: Session) -> Dict:
+        headers = {'Content-Type': 'application/json', }
+        data = json.dumps({"auth_key": self.session_key})
+        return session.post("https://"+self.device_config.configuration.ip_address + "/v1/user/essinfo/home",
+                            headers=headers,
+                            data=data,
+                            verify=False,
+                            timeout=5).json()
+
+
+COMPONENT_TYPE_TO_MODULE = {
+    "bat": bat,
+    "counter": counter,
+    "inverter": inverter
+}
+
+
+def read_legacy(component_type: str, ip: str, password: str, num: Optional[int] = None) -> None:
+    dev = Device(LG(configuration=LgConfiguration(ip_address=ip, password=password)))
+
+    if os.path.isfile("/var/www/html/openWB/ramdisk/ess_session_key"):
+        with open("/var/www/html/openWB/ramdisk/ess_session_key", "r") as f:
+            # erste Zeile ohne Zeilenumbruch lesen
+            old_session_key = f.readline().strip()
+            dev.session_key = old_session_key
+    else:
+        old_session_key = dev.session_key
+
+    if component_type in COMPONENT_TYPE_TO_MODULE:
+        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
+    else:
+        raise Exception(
+            "illegal component type " + component_type + ". Allowed values: " +
+            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
+        )
+    if component_type == "bat" or component_type == "counter":
+        num = None
+    component_config.id = num
+    dev.add_component(component_config)
+    log.debug('LG ESS V1.0 IP: ' + ip)
+    log.debug('LG ESS V1.0 password: ' + password)
+    dev.update()
+
+    if dev.session_key != old_session_key:
+        with open("/var/www/html/openWB/ramdisk/ess_session_key", "w") as f:
+            f.write(str(dev.session_key))
+
+
+def main(argv: List[str]):
+    run_using_positional_cli_args(read_legacy, argv)
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=LG)
diff --git a/packages/modules/devices/lg/inverter.py b/packages/modules/devices/lg/lg/inverter.py
similarity index 95%
rename from packages/modules/devices/lg/inverter.py
rename to packages/modules/devices/lg/lg/inverter.py
index f78b3e869f..d46c15a0b5 100644
--- a/packages/modules/devices/lg/inverter.py
+++ b/packages/modules/devices/lg/lg/inverter.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.lg.config import LgInverterSetup
+from modules.devices.lg.lg.config import LgInverterSetup
 
 
 class LgInverter:
diff --git a/packages/modules/devices/lg/lg_test.py b/packages/modules/devices/lg/lg/lg_test.py
similarity index 84%
rename from packages/modules/devices/lg/lg_test.py
rename to packages/modules/devices/lg/lg/lg_test.py
index 58808a0f8a..5dc67d2f01 100644
--- a/packages/modules/devices/lg/lg_test.py
+++ b/packages/modules/devices/lg/lg/lg_test.py
@@ -3,12 +3,8 @@
 from unittest.mock import Mock
 
 from modules.common.component_state import BatState, CounterState, InverterState
-from modules.common.configurable_device import ConfigurableDevice
-from modules.devices.lg import bat, counter, inverter
-from modules.devices.lg import device
-from modules.devices.lg.device import create_device
-
-from modules.devices.lg.config import LG, LgConfiguration
+from modules.devices.lg.lg import bat, counter, device, inverter
+from modules.devices.lg.lg.config import LG, LgConfiguration
 from test_utils.mock_ramdisk import MockRamdisk
 
 
@@ -18,10 +14,9 @@ def mock_ramdisk(monkeypatch):
 
 
 @pytest.fixture
-def dev(monkeypatch) -> ConfigurableDevice:
-    dev = create_device(LG(configuration=LgConfiguration(ip_address=API_URL, password="some password")))
-    mock_session_key = Mock(return_value="67567d76-0c83-11ea-8a59-d84fb802005a")
-    monkeypatch.setattr(device, "_update_session_key", mock_session_key)
+def dev() -> device.Device:
+    dev = device.Device(LG(configuration=LgConfiguration(ip_address=API_URL, password="some password")))
+    dev.session_key = "67567d76-0c83-11ea-8a59-d84fb802005a"
     return dev
 
 
@@ -43,7 +38,7 @@ def assert_inverter_state_correct(state: InverterState):
     assert state.exported == 200
 
 
-def test_valid_login(monkeypatch, dev: ConfigurableDevice):
+def test_valid_login(monkeypatch, dev: device.Device):
     # setup
     mock_bat_value_store = Mock()
     monkeypatch.setattr(bat, "get_bat_value_store", Mock(return_value=mock_bat_value_store))
@@ -51,7 +46,7 @@ def test_valid_login(monkeypatch, dev: ConfigurableDevice):
     monkeypatch.setattr(counter, "get_counter_value_store", Mock(return_value=mock_counter_value_store))
     mock_inverter_value_store = Mock()
     monkeypatch.setattr(inverter, "get_inverter_value_store", Mock(return_value=mock_inverter_value_store))
-    monkeypatch.setattr(device, "_request_data", Mock(return_value=sample_auth_key_valid))
+    monkeypatch.setattr(device.Device, "_request_data", Mock(return_value=sample_auth_key_valid))
     component_config = bat.component_descriptor.configuration_factory()
     component_config.id = None
     dev.add_component(component_config)
@@ -71,7 +66,7 @@ def test_valid_login(monkeypatch, dev: ConfigurableDevice):
     assert_inverter_state_correct(mock_inverter_value_store.set.call_args[0][0])
 
 
-def test_update_session_key(monkeypatch, dev: ConfigurableDevice):
+def test_update_session_key(monkeypatch, dev: device.Device):
     # setup
     mock_bat_value_store = Mock()
     monkeypatch.setattr(bat, "get_bat_value_store", Mock(return_value=mock_bat_value_store))
@@ -79,7 +74,8 @@ def test_update_session_key(monkeypatch, dev: ConfigurableDevice):
     monkeypatch.setattr(counter, "get_counter_value_store", Mock(return_value=mock_counter_value_store))
     mock_inverter_value_store = Mock()
     monkeypatch.setattr(inverter, "get_inverter_value_store", Mock(return_value=mock_inverter_value_store))
-    monkeypatch.setattr(device, "_request_data", Mock(
+    monkeypatch.setattr(device.Device, "_update_session_key", Mock())
+    monkeypatch.setattr(device.Device, "_request_data", Mock(
         side_effect=[HTTPError, sample_auth_key_valid]))
     component_config = bat.component_descriptor.configuration_factory()
     component_config.id = None
diff --git a/packages/modules/devices/lg/vendor.py b/packages/modules/devices/lg/vendor.py
new file mode 100644
index 0000000000..795935380b
--- /dev/null
+++ b/packages/modules/devices/lg/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "LG"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/mqtt/device.py b/packages/modules/devices/mqtt/device.py
deleted file mode 100644
index 5bf377ed2b..0000000000
--- a/packages/modules/devices/mqtt/device.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env python3
-from typing import Iterable, Union
-import logging
-
-from modules.common.abstract_device import DeviceDescriptor
-from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.mqtt import bat, counter, inverter
-from modules.devices.mqtt.config import Mqtt, MqttBatSetup, MqttCounterSetup, MqttInverterSetup
-
-log = logging.getLogger(__name__)
-
-
-def create_device(device_config: Mqtt):
-    def create_bat_component(component_config: MqttBatSetup):
-        return bat.MqttBat(component_config)
-
-    def create_counter_component(component_config: MqttCounterSetup):
-        return counter.MqttCounter(component_config)
-
-    def create_inverter_component(component_config: MqttInverterSetup):
-        return inverter.MqttInverter(component_config)
-
-    def update_components(components: Iterable[Union[bat.MqttBat, counter.MqttCounter, inverter.MqttInverter]]):
-        log.debug("MQTT-Module müssen nicht ausgelesen werden.")
-
-    return ConfigurableDevice(
-        device_config=device_config,
-        component_factory=ComponentFactoryByType(
-            bat=create_bat_component,
-            counter=create_counter_component,
-            inverter=create_inverter_component,
-        ),
-        component_updater=MultiComponentUpdater(update_components)
-    )
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=Mqtt)
diff --git a/packages/modules/devices/mtec/__init__.py b/packages/modules/devices/mtec/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/mtec/mtec/__init__.py b/packages/modules/devices/mtec/mtec/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/mtec/bat.py b/packages/modules/devices/mtec/mtec/bat.py
similarity index 97%
rename from packages/modules/devices/mtec/bat.py
rename to packages/modules/devices/mtec/mtec/bat.py
index 35caf4ccc7..862b7fccd2 100644
--- a/packages/modules/devices/mtec/bat.py
+++ b/packages/modules/devices/mtec/mtec/bat.py
@@ -7,7 +7,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.mtec.config import MTecBatSetup
+from modules.devices.mtec.mtec.config import MTecBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/mtec/config.py b/packages/modules/devices/mtec/mtec/config.py
similarity index 94%
rename from packages/modules/devices/mtec/config.py
rename to packages/modules/devices/mtec/mtec/config.py
index d8c693d0a1..52a6305867 100644
--- a/packages/modules/devices/mtec/config.py
+++ b/packages/modules/devices/mtec/mtec/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 
 from modules.common.component_setup import ComponentSetup
@@ -15,11 +15,12 @@ def __init__(self,
 class MTec:
     def __init__(self,
                  name: str = "M-Tec",
-                 type: str = "mtec",
+                 type: List[str] = ["mtec", "mtec"],
                  id: int = 0,
                  configuration: MTecConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or MTecConfiguration()
 
diff --git a/packages/modules/devices/mtec/counter.py b/packages/modules/devices/mtec/mtec/counter.py
similarity index 95%
rename from packages/modules/devices/mtec/counter.py
rename to packages/modules/devices/mtec/mtec/counter.py
index c711d8ef82..fa954b5538 100644
--- a/packages/modules/devices/mtec/counter.py
+++ b/packages/modules/devices/mtec/mtec/counter.py
@@ -6,7 +6,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.mtec.config import MTecCounterSetup
+from modules.devices.mtec.mtec.config import MTecCounterSetup
 
 
 class MTecCounter:
diff --git a/packages/modules/devices/mtec/device.py b/packages/modules/devices/mtec/mtec/device.py
similarity index 86%
rename from packages/modules/devices/mtec/device.py
rename to packages/modules/devices/mtec/mtec/device.py
index 3a68c9460a..bab588d6eb 100644
--- a/packages/modules/devices/mtec/device.py
+++ b/packages/modules/devices/mtec/mtec/device.py
@@ -6,10 +6,10 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.mtec.bat import MTecBat
-from modules.devices.mtec.counter import MTecCounter
-from modules.devices.mtec.inverter import MTecInverter
-from modules.devices.mtec.config import MTec, MTecBatSetup, MTecCounterSetup, MTecInverterSetup
+from modules.devices.mtec.mtec.bat import MTecBat
+from modules.devices.mtec.mtec.counter import MTecCounter
+from modules.devices.mtec.mtec.inverter import MTecInverter
+from modules.devices.mtec.mtec.config import MTec, MTecBatSetup, MTecCounterSetup, MTecInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/mtec/inverter.py b/packages/modules/devices/mtec/mtec/inverter.py
similarity index 95%
rename from packages/modules/devices/mtec/inverter.py
rename to packages/modules/devices/mtec/mtec/inverter.py
index 57fb56f136..aec4e82f05 100644
--- a/packages/modules/devices/mtec/inverter.py
+++ b/packages/modules/devices/mtec/mtec/inverter.py
@@ -8,7 +8,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.mtec.config import MTecInverterSetup
+from modules.devices.mtec.mtec.config import MTecInverterSetup
 
 
 class MTecInverter:
diff --git a/packages/modules/devices/mtec/vendor.py b/packages/modules/devices/mtec/vendor.py
new file mode 100644
index 0000000000..2b6ccdf3b3
--- /dev/null
+++ b/packages/modules/devices/mtec/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "M-Tec"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/openWB/openwb_bat_kit/__init__.py b/packages/modules/devices/openWB/openwb_bat_kit/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/openwb_bat_kit/bat.py b/packages/modules/devices/openWB/openwb_bat_kit/bat.py
similarity index 75%
rename from packages/modules/devices/openwb_bat_kit/bat.py
rename to packages/modules/devices/openWB/openwb_bat_kit/bat.py
index 85b64a9767..c5f88b1955 100644
--- a/packages/modules/devices/openwb_bat_kit/bat.py
+++ b/packages/modules/devices/openWB/openwb_bat_kit/bat.py
@@ -3,10 +3,10 @@
 
 from modules.common import modbus
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.openwb_bat_kit.config import BatKitBatSetup
-from modules.devices.openwb_evu_kit.config import EvuKitBatSetup
-from modules.devices.openwb_flex.bat import BatKitFlex
-from modules.devices.openwb_flex.config import convert_to_flex_setup
+from modules.devices.openWB.openwb_bat_kit.config import BatKitBatSetup
+from modules.devices.openWB.openwb_evu_kit.config import EvuKitBatSetup
+from modules.devices.openWB.openwb_flex.bat import BatKitFlex
+from modules.devices.openWB.openwb_flex.config import convert_to_flex_setup
 
 
 class BatKit(BatKitFlex):
diff --git a/packages/modules/devices/openwb_bat_kit/config.py b/packages/modules/devices/openWB/openwb_bat_kit/config.py
similarity index 88%
rename from packages/modules/devices/openwb_bat_kit/config.py
rename to packages/modules/devices/openWB/openwb_bat_kit/config.py
index 4c781ef0d3..2f944c503d 100644
--- a/packages/modules/devices/openwb_bat_kit/config.py
+++ b/packages/modules/devices/openWB/openwb_bat_kit/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from typing import List
 
 
 class BatKitConfiguration:
@@ -9,11 +10,12 @@ def __init__(self):
 class BatKit:
     def __init__(self,
                  name: str = "openWB Speicher-Kit",
-                 type: str = "openwb_bat_kit",
+                 type: List[str] = ["openWB", "openwb_bat_kit"],
                  id: int = 0,
                  configuration: BatKitConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "openWB"
         self.id = id
         self.configuration = configuration or BatKitConfiguration()
 
diff --git a/packages/modules/devices/openwb_bat_kit/device.py b/packages/modules/devices/openWB/openwb_bat_kit/device.py
similarity index 96%
rename from packages/modules/devices/openwb_bat_kit/device.py
rename to packages/modules/devices/openWB/openwb_bat_kit/device.py
index 8a5c4cd713..3b595e425b 100644
--- a/packages/modules/devices/openwb_bat_kit/device.py
+++ b/packages/modules/devices/openWB/openwb_bat_kit/device.py
@@ -6,8 +6,8 @@
 from modules.common import modbus
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.devices.openwb_bat_kit import bat
-from modules.devices.openwb_bat_kit.config import BatKit, BatKitBatSetup
+from modules.devices.openWB.openwb_bat_kit import bat
+from modules.devices.openWB.openwb_bat_kit.config import BatKit, BatKitBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/openWB/openwb_evu_kit/__init__.py b/packages/modules/devices/openWB/openwb_evu_kit/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/openwb_evu_kit/bat.py b/packages/modules/devices/openWB/openwb_evu_kit/bat.py
similarity index 70%
rename from packages/modules/devices/openwb_evu_kit/bat.py
rename to packages/modules/devices/openWB/openwb_evu_kit/bat.py
index 305e797afe..888cfdb880 100644
--- a/packages/modules/devices/openwb_evu_kit/bat.py
+++ b/packages/modules/devices/openWB/openwb_evu_kit/bat.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.openwb_evu_kit.config import EvuKitBatSetup
+from modules.devices.openWB.openwb_evu_kit.config import EvuKitBatSetup
 
 
 component_descriptor = ComponentDescriptor(configuration_factory=EvuKitBatSetup)
diff --git a/packages/modules/devices/openwb_evu_kit/config.py b/packages/modules/devices/openWB/openwb_evu_kit/config.py
similarity index 94%
rename from packages/modules/devices/openwb_evu_kit/config.py
rename to packages/modules/devices/openWB/openwb_evu_kit/config.py
index f01e53a01a..0163fde656 100644
--- a/packages/modules/devices/openwb_evu_kit/config.py
+++ b/packages/modules/devices/openWB/openwb_evu_kit/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from typing import List
 
 
 class EvuKitConfiguration:
@@ -9,11 +10,12 @@ def __init__(self):
 class EvuKit:
     def __init__(self,
                  name: str = "openWB EVU-Kit",
-                 type: str = "openwb_evu_kit",
+                 type: List[str] = ["openWB", "openwb_evu_kit"],
                  id: int = 0,
                  configuration: EvuKitConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "openWB"
         self.id = id
         self.configuration = configuration or EvuKitConfiguration()
 
diff --git a/packages/modules/devices/openwb_evu_kit/counter.py b/packages/modules/devices/openWB/openwb_evu_kit/counter.py
similarity index 82%
rename from packages/modules/devices/openwb_evu_kit/counter.py
rename to packages/modules/devices/openWB/openwb_evu_kit/counter.py
index 37414ad649..504b0ee7f5 100644
--- a/packages/modules/devices/openwb_evu_kit/counter.py
+++ b/packages/modules/devices/openWB/openwb_evu_kit/counter.py
@@ -4,9 +4,9 @@
 from dataclass_utils import dataclass_from_dict
 from modules.common import modbus
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.openwb_evu_kit.config import EvuKitCounterSetup
-from modules.devices.openwb_flex.counter import EvuKitFlex
-from modules.devices.openwb_flex.config import convert_to_flex_setup
+from modules.devices.openWB.openwb_evu_kit.config import EvuKitCounterSetup
+from modules.devices.openWB.openwb_flex.counter import EvuKitFlex
+from modules.devices.openWB.openwb_flex.config import convert_to_flex_setup
 
 
 class EvuKit(EvuKitFlex):
diff --git a/packages/modules/devices/openwb_evu_kit/device.py b/packages/modules/devices/openWB/openwb_evu_kit/device.py
similarity index 91%
rename from packages/modules/devices/openwb_evu_kit/device.py
rename to packages/modules/devices/openWB/openwb_evu_kit/device.py
index 11600bf459..5f603dbab2 100644
--- a/packages/modules/devices/openwb_evu_kit/device.py
+++ b/packages/modules/devices/openWB/openwb_evu_kit/device.py
@@ -7,12 +7,12 @@
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.openwb_bat_kit.bat import BatKit
-from modules.devices.openwb_evu_kit import bat
-from modules.devices.openwb_evu_kit import counter
-from modules.devices.openwb_evu_kit import inverter
-from modules.devices.openwb_evu_kit.config import EvuKit, EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
-from modules.devices.openwb_pv_kit.inverter import PvKit
+from modules.devices.openWB.openwb_bat_kit.bat import BatKit
+from modules.devices.openWB.openwb_evu_kit import bat
+from modules.devices.openWB.openwb_evu_kit import counter
+from modules.devices.openWB.openwb_evu_kit import inverter
+from modules.devices.openWB.openwb_evu_kit.config import EvuKit, EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
+from modules.devices.openWB.openwb_pv_kit.inverter import PvKit
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/openwb_evu_kit/inverter.py b/packages/modules/devices/openWB/openwb_evu_kit/inverter.py
similarity index 69%
rename from packages/modules/devices/openwb_evu_kit/inverter.py
rename to packages/modules/devices/openWB/openwb_evu_kit/inverter.py
index aae14b543f..b42ae826fa 100644
--- a/packages/modules/devices/openwb_evu_kit/inverter.py
+++ b/packages/modules/devices/openWB/openwb_evu_kit/inverter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.openwb_evu_kit.config import EvuKitInverterSetup
+from modules.devices.openWB.openwb_evu_kit.config import EvuKitInverterSetup
 
 
 component_descriptor = ComponentDescriptor(configuration_factory=EvuKitInverterSetup)
diff --git a/packages/modules/devices/openWB/openwb_flex/__init__.py b/packages/modules/devices/openWB/openwb_flex/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/openwb_flex/bat.py b/packages/modules/devices/openWB/openwb_flex/bat.py
similarity index 93%
rename from packages/modules/devices/openwb_flex/bat.py
rename to packages/modules/devices/openWB/openwb_flex/bat.py
index ae01821059..e3d0ccdd0e 100644
--- a/packages/modules/devices/openwb_flex/bat.py
+++ b/packages/modules/devices/openWB/openwb_flex/bat.py
@@ -10,8 +10,8 @@
 from modules.common.sdm import Sdm630_72
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.openwb_flex.config import BatKitFlexSetup
-from modules.devices.openwb_flex.versions import kit_bat_version_factory
+from modules.devices.openWB.openwb_flex.config import BatKitFlexSetup
+from modules.devices.openWB.openwb_flex.versions import kit_bat_version_factory
 
 
 class BatKitFlex:
diff --git a/packages/modules/devices/openwb_flex/config.py b/packages/modules/devices/openWB/openwb_flex/config.py
similarity index 89%
rename from packages/modules/devices/openwb_flex/config.py
rename to packages/modules/devices/openWB/openwb_flex/config.py
index b377b10c8b..ffc487993c 100644
--- a/packages/modules/devices/openwb_flex/config.py
+++ b/packages/modules/devices/openWB/openwb_flex/config.py
@@ -1,9 +1,9 @@
-from typing import Optional, Union, overload
+from typing import Optional, Union, overload, List
 
 from modules.common.component_setup import ComponentSetup
-from modules.devices.openwb_bat_kit.config import BatKitBatSetup
-from modules.devices.openwb_evu_kit.config import EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
-from modules.devices.openwb_pv_kit.config import PvKitInverterSetup
+from modules.devices.openWB.openwb_bat_kit.config import BatKitBatSetup
+from modules.devices.openWB.openwb_evu_kit.config import EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
+from modules.devices.openWB.openwb_pv_kit.config import PvKitInverterSetup
 
 
 class FlexConfiguration:
@@ -15,11 +15,12 @@ def __init__(self, port: int = 8899, ip_address: Optional[str] = None,):
 class Flex:
     def __init__(self,
                  name: str = "openWB-Kit flex",
-                 type: str = "openwb_flex",
+                 type: List[str] = ["openWB", "openwb_flex"],
                  id: int = 0,
                  configuration: FlexConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "openWB"
         self.id = id
         self.configuration = configuration or FlexConfiguration()
 
@@ -62,7 +63,7 @@ def __init__(self, id: int = 115, type: str = "sdm630"):
 
 class ConsumptionCounterFlexSetup(ComponentSetup[ConsumptionCounterFlexConfiguration]):
     def __init__(self,
-                 name: str = "openWB Bezugszähler ohne Einspeisung flex",
+                 name: str = "openWB Verbrauchszähler flex",
                  type: str = "consumption_counter",
                  id: int = 0,
                  configuration: ConsumptionCounterFlexConfiguration = None) -> None:
diff --git a/packages/modules/devices/openwb_flex/consumption_counter.py b/packages/modules/devices/openWB/openwb_flex/consumption_counter.py
similarity index 93%
rename from packages/modules/devices/openwb_flex/consumption_counter.py
rename to packages/modules/devices/openWB/openwb_flex/consumption_counter.py
index e2f6966746..80543c1499 100644
--- a/packages/modules/devices/openwb_flex/consumption_counter.py
+++ b/packages/modules/devices/openWB/openwb_flex/consumption_counter.py
@@ -8,8 +8,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.openwb_flex.config import ConsumptionCounterFlexSetup
-from modules.devices.openwb_flex.versions import consumption_counter_factory
+from modules.devices.openWB.openwb_flex.config import ConsumptionCounterFlexSetup
+from modules.devices.openWB.openwb_flex.versions import consumption_counter_factory
 
 
 class ConsumptionCounterFlex:
diff --git a/packages/modules/devices/openwb_flex/counter.py b/packages/modules/devices/openWB/openwb_flex/counter.py
similarity index 94%
rename from packages/modules/devices/openwb_flex/counter.py
rename to packages/modules/devices/openWB/openwb_flex/counter.py
index 9ede1cd642..a539339578 100644
--- a/packages/modules/devices/openwb_flex/counter.py
+++ b/packages/modules/devices/openWB/openwb_flex/counter.py
@@ -11,8 +11,8 @@
 from modules.common.b23 import B23
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.openwb_flex.config import EvuKitFlexSetup
-from modules.devices.openwb_flex.versions import kit_counter_version_factory
+from modules.devices.openWB.openwb_flex.config import EvuKitFlexSetup
+from modules.devices.openWB.openwb_flex.versions import kit_counter_version_factory
 
 
 class EvuKitFlex:
diff --git a/packages/modules/devices/openwb_flex/device.py b/packages/modules/devices/openWB/openwb_flex/device.py
similarity index 75%
rename from packages/modules/devices/openwb_flex/device.py
rename to packages/modules/devices/openWB/openwb_flex/device.py
index 2ded4a8d99..35cee91f45 100644
--- a/packages/modules/devices/openwb_flex/device.py
+++ b/packages/modules/devices/openWB/openwb_flex/device.py
@@ -6,12 +6,15 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.openwb_flex.bat import BatKitFlex
-from modules.devices.openwb_flex.config import (BatKitFlexSetup, ConsumptionCounterFlexSetup, EvuKitFlexSetup, Flex,
-                                                PvKitFlexSetup)
-from modules.devices.openwb_flex.consumption_counter import ConsumptionCounterFlex
-from modules.devices.openwb_flex.counter import EvuKitFlex
-from modules.devices.openwb_flex.inverter import PvKitFlex
+from modules.devices.openWB.openwb_flex.bat import BatKitFlex
+from modules.devices.openWB.openwb_flex.config import (BatKitFlexSetup,
+                                                       ConsumptionCounterFlexSetup,
+                                                       EvuKitFlexSetup,
+                                                       Flex,
+                                                       PvKitFlexSetup)
+from modules.devices.openWB.openwb_flex.consumption_counter import ConsumptionCounterFlex
+from modules.devices.openWB.openwb_flex.counter import EvuKitFlex
+from modules.devices.openWB.openwb_flex.inverter import PvKitFlex
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/openwb_flex/inverter.py b/packages/modules/devices/openWB/openwb_flex/inverter.py
similarity index 93%
rename from packages/modules/devices/openwb_flex/inverter.py
rename to packages/modules/devices/openWB/openwb_flex/inverter.py
index 0fd5120d29..369370ef5d 100644
--- a/packages/modules/devices/openwb_flex/inverter.py
+++ b/packages/modules/devices/openWB/openwb_flex/inverter.py
@@ -9,8 +9,8 @@
 from modules.common.lovato import Lovato
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.openwb_flex.config import PvKitFlexSetup
-from modules.devices.openwb_flex.versions import kit_inverter_version_factory
+from modules.devices.openWB.openwb_flex.config import PvKitFlexSetup
+from modules.devices.openWB.openwb_flex.versions import kit_inverter_version_factory
 
 
 class PvKitFlex:
diff --git a/packages/modules/devices/openwb_flex/versions.py b/packages/modules/devices/openWB/openwb_flex/versions.py
similarity index 100%
rename from packages/modules/devices/openwb_flex/versions.py
rename to packages/modules/devices/openWB/openwb_flex/versions.py
diff --git a/packages/modules/devices/openWB/openwb_pv_kit/__init__.py b/packages/modules/devices/openWB/openwb_pv_kit/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/openwb_pv_kit/config.py b/packages/modules/devices/openWB/openwb_pv_kit/config.py
similarity index 88%
rename from packages/modules/devices/openwb_pv_kit/config.py
rename to packages/modules/devices/openWB/openwb_pv_kit/config.py
index f09b662c06..0ab51900ba 100644
--- a/packages/modules/devices/openwb_pv_kit/config.py
+++ b/packages/modules/devices/openWB/openwb_pv_kit/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from typing import List
 
 
 class PvKitConfiguration:
@@ -9,11 +10,12 @@ def __init__(self):
 class PvKit:
     def __init__(self,
                  name: str = "openWB PV-Kit",
-                 type: str = "openwb_pv_kit",
+                 type: List[str] = ["openWB", "openwb_pv_kit"],
                  id: int = 0,
                  configuration: PvKitConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "openWB"
         self.id = id
         self.configuration = configuration or PvKitConfiguration()
 
diff --git a/packages/modules/devices/openwb_pv_kit/device.py b/packages/modules/devices/openWB/openwb_pv_kit/device.py
similarity index 95%
rename from packages/modules/devices/openwb_pv_kit/device.py
rename to packages/modules/devices/openWB/openwb_pv_kit/device.py
index 3b6ae99ad9..0e56149820 100644
--- a/packages/modules/devices/openwb_pv_kit/device.py
+++ b/packages/modules/devices/openWB/openwb_pv_kit/device.py
@@ -6,8 +6,8 @@
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.openwb_pv_kit import inverter
-from modules.devices.openwb_pv_kit.config import PvKit, PvKitInverterSetup
+from modules.devices.openWB.openwb_pv_kit import inverter
+from modules.devices.openWB.openwb_pv_kit.config import PvKit, PvKitInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/openwb_pv_kit/inverter.py b/packages/modules/devices/openWB/openwb_pv_kit/inverter.py
similarity index 74%
rename from packages/modules/devices/openwb_pv_kit/inverter.py
rename to packages/modules/devices/openWB/openwb_pv_kit/inverter.py
index dd4bed9804..de543f1b28 100644
--- a/packages/modules/devices/openwb_pv_kit/inverter.py
+++ b/packages/modules/devices/openWB/openwb_pv_kit/inverter.py
@@ -3,10 +3,10 @@
 
 from modules.common import modbus
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.openwb_evu_kit.config import EvuKitInverterSetup
-from modules.devices.openwb_flex.config import convert_to_flex_setup
-from modules.devices.openwb_flex.inverter import PvKitFlex
-from modules.devices.openwb_pv_kit.config import PvKitInverterSetup
+from modules.devices.openWB.openwb_evu_kit.config import EvuKitInverterSetup
+from modules.devices.openWB.openwb_flex.config import convert_to_flex_setup
+from modules.devices.openWB.openwb_flex.inverter import PvKitFlex
+from modules.devices.openWB.openwb_pv_kit.config import PvKitInverterSetup
 
 
 class PvKit(PvKitFlex):
diff --git a/packages/modules/devices/openWB/vendor.py b/packages/modules/devices/openWB/vendor.py
new file mode 100644
index 0000000000..663191823b
--- /dev/null
+++ b/packages/modules/devices/openWB/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "OpenWB"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/opendtu/opendtu/__init__.py b/packages/modules/devices/opendtu/opendtu/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/opendtu/config.py b/packages/modules/devices/opendtu/opendtu/config.py
similarity index 71%
rename from packages/modules/devices/opendtu/config.py
rename to packages/modules/devices/opendtu/opendtu/config.py
index 84a9f82fad..ccd60146eb 100644
--- a/packages/modules/devices/opendtu/config.py
+++ b/packages/modules/devices/opendtu/opendtu/config.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
-from modules.devices.json.config import Json, JsonConfiguration, JsonInverterConfiguration, JsonInverterSetup
+from modules.devices.generic.json.config import Json, JsonConfiguration, JsonInverterConfiguration, JsonInverterSetup
 
 
 @auto_str
@@ -14,10 +14,11 @@ def __init__(self, url: Optional[str] = None):
 class OpenDTU(Json):
     def __init__(self,
                  name: str = "Hoymiles über openDTU",
-                 type: str = "opendtu",
+                 type: List[str] = ["opendtu", "opendtu"],
+                 group: str = "other",
                  id: int = 0,
                  configuration: OpenDTUConfiguration = None) -> None:
-        super().__init__(name, type, id, configuration)
+        super().__init__(name, type, group, id, configuration)
 
 
 @auto_str
@@ -29,7 +30,7 @@ def __init__(self):
 @auto_str
 class OpenDTUInverterSetup(JsonInverterSetup):
     def __init__(self,
-                 name: str = "Hoymiles Wechselrichter über openDTU",
+                 name: str = "Hoymiles Wechselrichter",
                  type: str = "inverter",
                  id: int = 0,
                  configuration: JsonInverterConfiguration = None) -> None:
diff --git a/packages/modules/devices/opendtu/device.py b/packages/modules/devices/opendtu/opendtu/device.py
similarity index 67%
rename from packages/modules/devices/opendtu/device.py
rename to packages/modules/devices/opendtu/opendtu/device.py
index 1271a3c421..30a8aa30f4 100644
--- a/packages/modules/devices/opendtu/device.py
+++ b/packages/modules/devices/opendtu/opendtu/device.py
@@ -1,8 +1,8 @@
 #!/usr/bin/env python3
 import logging
 from modules.common.abstract_device import DeviceDescriptor
-from modules.devices.opendtu.config import OpenDTU
-from modules.devices.json.device import create_device as create_device_json
+from modules.devices.opendtu.opendtu.config import OpenDTU
+from modules.devices.generic.json.device import create_device as create_device_json
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/opendtu/inverter.py b/packages/modules/devices/opendtu/opendtu/inverter.py
similarity index 70%
rename from packages/modules/devices/opendtu/inverter.py
rename to packages/modules/devices/opendtu/opendtu/inverter.py
index dd49f23735..4c1e1ab4b1 100644
--- a/packages/modules/devices/opendtu/inverter.py
+++ b/packages/modules/devices/opendtu/opendtu/inverter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.opendtu.config import OpenDTUInverterSetup
+from modules.devices.opendtu.opendtu.config import OpenDTUInverterSetup
 
 
 component_descriptor = ComponentDescriptor(configuration_factory=OpenDTUInverterSetup)
diff --git a/packages/modules/devices/opendtu/vendor.py b/packages/modules/devices/opendtu/vendor.py
new file mode 100644
index 0000000000..268db2c294
--- /dev/null
+++ b/packages/modules/devices/opendtu/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "OpenDTU"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/powerdog/device.py b/packages/modules/devices/powerdog/device.py
deleted file mode 100644
index ee027fd814..0000000000
--- a/packages/modules/devices/powerdog/device.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env python3
-import logging
-from typing import Iterable, Union
-
-from modules.common import modbus
-from modules.common.abstract_device import DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.powerdog.config import Powerdog, PowerdogCounterSetup, PowerdogInverterSetup
-from modules.devices.powerdog.counter import PowerdogCounter
-from modules.devices.powerdog.inverter import PowerdogInverter
-
-log = logging.getLogger(__name__)
-
-
-def create_device(device_config: Powerdog):
-    def create_counter_component(component_config: PowerdogCounterSetup):
-        return PowerdogCounter(device_config.id, component_config, client, device_config.configuration.modbus_id)
-
-    def create_inverter_component(component_config: PowerdogInverterSetup):
-        return PowerdogInverter(device_config.id, component_config, client, device_config.configuration.modbus_id)
-
-    def update_components(components: Iterable[Union[PowerdogCounter, PowerdogInverter]]):
-        with client:
-            if len(components) == 1:
-                for component in components:
-                    if isinstance(components[component], PowerdogInverter):
-                        with SingleComponentUpdateContext(components[component].fault_state):
-                            components[component].update()
-                    else:
-                        raise Exception(
-                            "Wenn ein EVU-Zähler konfiguriert wurde, muss immer auch ein WR konfiguriert sein.")
-            elif len(components) == 2:
-                for component in components:
-                    if isinstance(components[component], PowerdogInverter):
-                        inverter_power = components[component].update()
-                        break
-                else:
-                    inverter_power = 0
-                for component in components:
-                    if isinstance(components[component], PowerdogCounter):
-                        components[component].update(inverter_power)
-            else:
-                log.warning(
-                    device_config.name +
-                    ": Es konnten keine Werte gelesen werden, da noch keine oder zu viele Komponenten konfiguriert "
-                    + "wurden."
-                )
-
-    try:
-        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
-    except Exception:
-        log.exception("Fehler in create_device")
-    return ConfigurableDevice(
-        device_config=device_config,
-        component_factory=ComponentFactoryByType(
-            counter=create_counter_component,
-            inverter=create_inverter_component,
-        ),
-        component_updater=MultiComponentUpdater(update_components)
-    )
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=Powerdog)
diff --git a/packages/modules/devices/powerdog/powerdog/__init__.py b/packages/modules/devices/powerdog/powerdog/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/powerdog/config.py b/packages/modules/devices/powerdog/powerdog/config.py
similarity index 92%
rename from packages/modules/devices/powerdog/config.py
rename to packages/modules/devices/powerdog/powerdog/config.py
index 8f7abf3a91..f83e26b34d 100644
--- a/packages/modules/devices/powerdog/config.py
+++ b/packages/modules/devices/powerdog/powerdog/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Powerdog:
     def __init__(self,
                  name: str = "Powerdog",
-                 type: str = "powerdog",
+                 type: List[str] = ["powerdog", "powerdog"],
                  id: int = 0,
                  configuration: PowerdogConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or PowerdogConfiguration()
 
diff --git a/packages/modules/devices/powerdog/counter.py b/packages/modules/devices/powerdog/powerdog/counter.py
similarity index 96%
rename from packages/modules/devices/powerdog/counter.py
rename to packages/modules/devices/powerdog/powerdog/counter.py
index e530078dbb..3a6d170734 100644
--- a/packages/modules/devices/powerdog/counter.py
+++ b/packages/modules/devices/powerdog/powerdog/counter.py
@@ -10,7 +10,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.powerdog.config import PowerdogCounterSetup
+from modules.devices.powerdog.powerdog.config import PowerdogCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/powerdog/powerdog/device.py b/packages/modules/devices/powerdog/powerdog/device.py
new file mode 100644
index 0000000000..04384d2adb
--- /dev/null
+++ b/packages/modules/devices/powerdog/powerdog/device.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python3
+import logging
+from typing import Dict, Union, Optional, List
+
+from dataclass_utils import dataclass_from_dict
+from helpermodules.cli import run_using_positional_cli_args
+from modules.common import modbus
+from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.component_context import MultiComponentUpdateContext, SingleComponentUpdateContext
+from modules.devices.powerdog.powerdog import counter
+from modules.devices.powerdog.powerdog import inverter
+from modules.devices.powerdog.powerdog.config import Powerdog, PowerdogConfiguration, PowerdogCounterSetup, PowerdogInverterSetup
+
+log = logging.getLogger(__name__)
+
+
+class Device(AbstractDevice):
+    COMPONENT_TYPE_TO_CLASS = {
+        "counter": counter.PowerdogCounter,
+        "inverter": inverter.PowerdogInverter
+    }
+
+    def __init__(self, device_config: Union[Dict, Powerdog]) -> None:
+        self.components = {}  # type: Dict[str, Union[counter.PowerdogCounter, inverter.PowerdogInverter]]
+        try:
+            self.device_config = dataclass_from_dict(Powerdog, device_config)
+            self.client = modbus.ModbusTcpClient_(
+                self.device_config.configuration.ip_address, self.device_config.configuration.port)
+        except Exception:
+            log.exception("Fehler im Modul "+self.device_config.name)
+
+    def add_component(self, component_config: Union[Dict, PowerdogCounterSetup, PowerdogInverterSetup]) -> None:
+        if isinstance(component_config, Dict):
+            component_type = component_config["type"]
+        else:
+            component_type = component_config.type
+        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
+            component_type].component_descriptor.configuration_factory, component_config)
+        if component_type in self.COMPONENT_TYPE_TO_CLASS:
+            self.components["component"+str(component_config.id)] = (
+                self.COMPONENT_TYPE_TO_CLASS[component_type](
+                    self.device_config.id, component_config, self.client,
+                    self.device_config.configuration.modbus_id))
+        else:
+            raise Exception(
+                "illegal component type " + component_type + ". Allowed values: " +
+                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
+            )
+
+    def update(self) -> None:
+        log.debug("Start device reading " + str(self.components))
+        with MultiComponentUpdateContext(self.components):
+            if len(self.components) == 1:
+                for component in self.components:
+                    if isinstance(self.components[component], inverter.PowerdogInverter):
+                        with SingleComponentUpdateContext(self.components[component].fault_state):
+                            self.components[component].update()
+                    else:
+                        raise Exception(
+                            "Wenn ein EVU-Zähler konfiguriert wurde, muss immer auch ein WR konfiguriert sein.")
+            elif len(self.components) == 2:
+                for component in self.components:
+                    if isinstance(self.components[component], inverter.PowerdogInverter):
+                        inverter_power = self.components[component].update()
+                        break
+                else:
+                    inverter_power = 0
+                for component in self.components:
+                    if isinstance(self.components[component], counter.PowerdogCounter):
+                        self.components[component].update(inverter_power)
+            else:
+                log.warning(
+                    self.device_config.name +
+                    ": Es konnten keine Werte gelesen werden, da noch keine oder zu viele Komponenten konfiguriert "
+                    + "wurden."
+                )
+
+
+COMPONENT_TYPE_TO_MODULE = {
+    "counter": counter,
+    "inverter": inverter
+}
+
+
+def read_legacy(component_type: str, ip_address: str, num: Optional[int] = None) -> None:
+    dev = Device(Powerdog(configuration=PowerdogConfiguration(ip_address=ip_address)))
+    if component_type in COMPONENT_TYPE_TO_MODULE:
+        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
+    else:
+        raise Exception(
+            "illegal component type " + component_type + ". Allowed values: " +
+            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
+        )
+    component_config.id = num
+    dev.add_component(component_config)
+
+    # Wenn der EVU-Zähler ausgelesen werden soll, wird auch noch der Inverter benötigt.
+    if component_type in COMPONENT_TYPE_TO_MODULE and component_type == "counter":
+        inverter_config = PowerdogInverterSetup()
+        inverter_config.id = 1
+        dev.add_component(inverter_config)
+
+    log.debug('Powerdog IP-Adresse: ' + ip_address)
+
+    dev.update()
+
+
+def main(argv: List[str]):
+    run_using_positional_cli_args(read_legacy, argv)
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=Powerdog)
diff --git a/packages/modules/devices/powerdog/inverter.py b/packages/modules/devices/powerdog/powerdog/inverter.py
similarity index 95%
rename from packages/modules/devices/powerdog/inverter.py
rename to packages/modules/devices/powerdog/powerdog/inverter.py
index 552ad80e33..53712c42b1 100644
--- a/packages/modules/devices/powerdog/inverter.py
+++ b/packages/modules/devices/powerdog/powerdog/inverter.py
@@ -10,7 +10,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.powerdog.config import PowerdogInverterSetup
+from modules.devices.powerdog.powerdog.config import PowerdogInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/powerdog/vendor.py b/packages/modules/devices/powerdog/vendor.py
new file mode 100644
index 0000000000..d2f9ca6629
--- /dev/null
+++ b/packages/modules/devices/powerdog/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "PowerDog"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/powerfox/powerfox/__init__.py b/packages/modules/devices/powerfox/powerfox/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/powerfox/config.py b/packages/modules/devices/powerfox/powerfox/config.py
similarity index 92%
rename from packages/modules/devices/powerfox/config.py
rename to packages/modules/devices/powerfox/powerfox/config.py
index 883f47114a..2c52ebacad 100644
--- a/packages/modules/devices/powerfox/config.py
+++ b/packages/modules/devices/powerfox/powerfox/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None):
 class Powerfox:
     def __init__(self,
                  name: str = "Powerfox",
-                 type: str = "powerfox",
+                 type: List[str] = ["powerfox", "powerfox"],
                  id: int = 0,
                  configuration: PowerfoxConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or PowerfoxConfiguration()
 
diff --git a/packages/modules/devices/powerfox/counter.py b/packages/modules/devices/powerfox/powerfox/counter.py
similarity index 94%
rename from packages/modules/devices/powerfox/counter.py
rename to packages/modules/devices/powerfox/powerfox/counter.py
index e0c6764625..73c43fe407 100644
--- a/packages/modules/devices/powerfox/counter.py
+++ b/packages/modules/devices/powerfox/powerfox/counter.py
@@ -9,7 +9,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_counter_value_store
-from modules.devices.powerfox.config import PowerfoxCounterSetup
+from modules.devices.powerfox.powerfox.config import PowerfoxCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/powerfox/device.py b/packages/modules/devices/powerfox/powerfox/device.py
similarity index 80%
rename from packages/modules/devices/powerfox/device.py
rename to packages/modules/devices/powerfox/powerfox/device.py
index 52050f0ae5..472b00e5d2 100644
--- a/packages/modules/devices/powerfox/device.py
+++ b/packages/modules/devices/powerfox/powerfox/device.py
@@ -6,11 +6,11 @@
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
 from modules.common.req import get_http_session
-from modules.devices.powerfox.counter import PowerfoxCounter
-from modules.devices.powerfox.config import (Powerfox, PowerfoxConfiguration,
-                                             PowerfoxCounterConfiguration, PowerfoxCounterSetup,
-                                             PowerfoxInverterConfiguration, PowerfoxInverterSetup)
-from modules.devices.powerfox.inverter import PowerfoxInverter
+from modules.devices.powerfox.powerfox.counter import PowerfoxCounter
+from modules.devices.powerfox.powerfox.config import (Powerfox, PowerfoxConfiguration,
+                                                      PowerfoxCounterConfiguration, PowerfoxCounterSetup,
+                                                      PowerfoxInverterConfiguration, PowerfoxInverterSetup)
+from modules.devices.powerfox.powerfox.inverter import PowerfoxInverter
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/powerfox/inverter.py b/packages/modules/devices/powerfox/powerfox/inverter.py
similarity index 94%
rename from packages/modules/devices/powerfox/inverter.py
rename to packages/modules/devices/powerfox/powerfox/inverter.py
index 1cf9b7572c..8faa3728bb 100644
--- a/packages/modules/devices/powerfox/inverter.py
+++ b/packages/modules/devices/powerfox/powerfox/inverter.py
@@ -9,7 +9,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.powerfox.config import PowerfoxInverterSetup
+from modules.devices.powerfox.powerfox.config import PowerfoxInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/powerfox/vendor.py b/packages/modules/devices/powerfox/vendor.py
new file mode 100644
index 0000000000..2117d42348
--- /dev/null
+++ b/packages/modules/devices/powerfox/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Powerfox"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/qcells/qcells/__init__.py b/packages/modules/devices/qcells/qcells/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/qcells/bat.py b/packages/modules/devices/qcells/qcells/bat.py
similarity index 96%
rename from packages/modules/devices/qcells/bat.py
rename to packages/modules/devices/qcells/qcells/bat.py
index bd1715a116..86348aecbd 100644
--- a/packages/modules/devices/qcells/bat.py
+++ b/packages/modules/devices/qcells/qcells/bat.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_bat_value_store
-from modules.devices.qcells.config import QCellsBatSetup
+from modules.devices.qcells.qcells.config import QCellsBatSetup
 
 
 class QCellsBat:
diff --git a/packages/modules/devices/qcells/config.py b/packages/modules/devices/qcells/qcells/config.py
similarity index 94%
rename from packages/modules/devices/qcells/config.py
rename to packages/modules/devices/qcells/qcells/config.py
index a77897e531..ea4a40089f 100644
--- a/packages/modules/devices/qcells/config.py
+++ b/packages/modules/devices/qcells/qcells/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class QCells:
     def __init__(self,
                  name: str = "QCells ESS",
-                 type: str = "qcells",
+                 type: List[str] = ["qcells", "qcells"],
                  id: int = 0,
                  configuration: QCellsConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or QCellsConfiguration()
 
diff --git a/packages/modules/devices/qcells/counter.py b/packages/modules/devices/qcells/qcells/counter.py
similarity index 97%
rename from packages/modules/devices/qcells/counter.py
rename to packages/modules/devices/qcells/qcells/counter.py
index 8f4979bdcd..549a5bd498 100644
--- a/packages/modules/devices/qcells/counter.py
+++ b/packages/modules/devices/qcells/qcells/counter.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_counter_value_store
-from modules.devices.qcells.config import QCellsCounterSetup
+from modules.devices.qcells.qcells.config import QCellsCounterSetup
 
 
 class QCellsCounter:
diff --git a/packages/modules/devices/qcells/device.py b/packages/modules/devices/qcells/qcells/device.py
similarity index 83%
rename from packages/modules/devices/qcells/device.py
rename to packages/modules/devices/qcells/qcells/device.py
index 889579d491..f3228596ed 100644
--- a/packages/modules/devices/qcells/device.py
+++ b/packages/modules/devices/qcells/qcells/device.py
@@ -6,10 +6,10 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.qcells.bat import QCellsBat
-from modules.devices.qcells.config import QCells, QCellsBatSetup, QCellsCounterSetup, QCellsInverterSetup
-from modules.devices.qcells.counter import QCellsCounter
-from modules.devices.qcells.inverter import QCellsInverter
+from modules.devices.qcells.qcells.bat import QCellsBat
+from modules.devices.qcells.qcells.config import QCells, QCellsBatSetup, QCellsCounterSetup, QCellsInverterSetup
+from modules.devices.qcells.qcells.counter import QCellsCounter
+from modules.devices.qcells.qcells.inverter import QCellsInverter
 
 log = logging.getLogger(__name__)
 
@@ -28,10 +28,10 @@ def create_inverter_component(component_config: QCellsInverterSetup):
                               device_config.configuration.modbus_id)
 
     def update_components(components: Iterable[Union[QCellsBat, QCellsCounter, QCellsInverter]]):
-        with client:
+        with client as c:
             for component in components:
                 with SingleComponentUpdateContext(component.fault_state):
-                    component.update(client)
+                    component.update(c)
 
     try:
         client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
diff --git a/packages/modules/devices/qcells/inverter.py b/packages/modules/devices/qcells/qcells/inverter.py
similarity index 96%
rename from packages/modules/devices/qcells/inverter.py
rename to packages/modules/devices/qcells/qcells/inverter.py
index 03a2162fc6..1133e73074 100644
--- a/packages/modules/devices/qcells/inverter.py
+++ b/packages/modules/devices/qcells/qcells/inverter.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_inverter_value_store
-from modules.devices.qcells.config import QCellsInverterSetup
+from modules.devices.qcells.qcells.config import QCellsInverterSetup
 
 
 class QCellsInverter:
diff --git a/packages/modules/devices/qcells/vendor.py b/packages/modules/devices/qcells/vendor.py
new file mode 100644
index 0000000000..b963c9890c
--- /dev/null
+++ b/packages/modules/devices/qcells/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "QCells"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/rct/rct/__init__.py b/packages/modules/devices/rct/rct/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/rct/bat.py b/packages/modules/devices/rct/rct/bat.py
similarity index 94%
rename from packages/modules/devices/rct/bat.py
rename to packages/modules/devices/rct/rct/bat.py
index e05ee183be..b5f6cfb9a3 100644
--- a/packages/modules/devices/rct/bat.py
+++ b/packages/modules/devices/rct/rct/bat.py
@@ -5,8 +5,8 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_bat_value_store
-from modules.devices.rct.config import RctBatSetup
-from modules.devices.rct.rct_lib import RCT
+from modules.devices.rct.rct.config import RctBatSetup
+from modules.devices.rct.rct.rct_lib import RCT
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/rct/config.py b/packages/modules/devices/rct/rct/config.py
similarity index 94%
rename from packages/modules/devices/rct/config.py
rename to packages/modules/devices/rct/rct/config.py
index e328ac5796..7f5acfb3a6 100644
--- a/packages/modules/devices/rct/config.py
+++ b/packages/modules/devices/rct/rct/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class Rct:
     def __init__(self,
                  name: str = "RCT",
-                 type: str = "rct",
+                 type: List[str] = ["rct", "rct"],
                  id: int = 0,
                  configuration: RctConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or RctConfiguration()
 
diff --git a/packages/modules/devices/rct/counter.py b/packages/modules/devices/rct/rct/counter.py
similarity index 96%
rename from packages/modules/devices/rct/counter.py
rename to packages/modules/devices/rct/rct/counter.py
index 5f2e04e051..6d6ec66184 100644
--- a/packages/modules/devices/rct/counter.py
+++ b/packages/modules/devices/rct/rct/counter.py
@@ -5,8 +5,8 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_counter_value_store
-from modules.devices.rct.config import RctCounterSetup
-from modules.devices.rct.rct_lib import RCT
+from modules.devices.rct.rct.config import RctCounterSetup
+from modules.devices.rct.rct.rct_lib import RCT
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/rct/device.py b/packages/modules/devices/rct/rct/device.py
similarity index 87%
rename from packages/modules/devices/rct/device.py
rename to packages/modules/devices/rct/rct/device.py
index 0f463308c5..a4f94e10c7 100644
--- a/packages/modules/devices/rct/device.py
+++ b/packages/modules/devices/rct/rct/device.py
@@ -6,11 +6,11 @@
 from helpermodules.cli import run_using_positional_cli_args
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, IndependentComponentUpdater
-from modules.devices.rct import bat, counter, inverter, rct_lib
-from modules.devices.rct.bat import RctBat
-from modules.devices.rct.config import Rct, RctConfiguration, RctBatSetup, RctCounterSetup, RctInverterSetup
-from modules.devices.rct.counter import RctCounter
-from modules.devices.rct.inverter import RctInverter
+from modules.devices.rct.rct import bat, counter, inverter, rct_lib
+from modules.devices.rct.rct.bat import RctBat
+from modules.devices.rct.rct.config import Rct, RctConfiguration, RctBatSetup, RctCounterSetup, RctInverterSetup
+from modules.devices.rct.rct.counter import RctCounter
+from modules.devices.rct.rct.inverter import RctInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/rct/inverter.py b/packages/modules/devices/rct/rct/inverter.py
similarity index 93%
rename from packages/modules/devices/rct/inverter.py
rename to packages/modules/devices/rct/rct/inverter.py
index d021b98d5b..9cf1ce9b67 100644
--- a/packages/modules/devices/rct/inverter.py
+++ b/packages/modules/devices/rct/rct/inverter.py
@@ -4,8 +4,8 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.rct.config import RctInverterSetup
-from modules.devices.rct.rct_lib import RCT
+from modules.devices.rct.rct.config import RctInverterSetup
+from modules.devices.rct.rct.rct_lib import RCT
 
 
 class RctInverter:
diff --git a/packages/modules/devices/rct/rct_lib.py b/packages/modules/devices/rct/rct/rct_lib.py
old mode 100755
new mode 100644
similarity index 100%
rename from packages/modules/devices/rct/rct_lib.py
rename to packages/modules/devices/rct/rct/rct_lib.py
diff --git a/packages/modules/devices/rct/vendor.py b/packages/modules/devices/rct/vendor.py
new file mode 100644
index 0000000000..6c9a795389
--- /dev/null
+++ b/packages/modules/devices/rct/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "RCT Power"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/saxpower/device.py b/packages/modules/devices/saxpower/device.py
deleted file mode 100644
index 727be7ed67..0000000000
--- a/packages/modules/devices/saxpower/device.py
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env python3
-import logging
-from typing import Iterable
-
-from modules.common import modbus
-from modules.common.abstract_device import DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.saxpower.bat import SaxpowerBat
-from modules.devices.saxpower.config import Saxpower, SaxpowerBatSetup
-
-log = logging.getLogger(__name__)
-
-
-def create_device(device_config: Saxpower):
-    def create_bat_component(component_config: SaxpowerBatSetup):
-        return SaxpowerBat(device_config.id, component_config, client, device_config.configuration.modbus_id)
-
-    def update_components(components: Iterable[SaxpowerBat]):
-        with client:
-            for component in components:
-                with SingleComponentUpdateContext(component.fault_state):
-                    component.update()
-
-    try:
-        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
-    except Exception:
-        log.exception("Fehler in create_device")
-    return ConfigurableDevice(
-        device_config=device_config,
-        component_factory=ComponentFactoryByType(
-            bat=create_bat_component,
-        ),
-        component_updater=MultiComponentUpdater(update_components)
-    )
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=Saxpower)
diff --git a/packages/modules/devices/saxpower/saxpower/__init__.py b/packages/modules/devices/saxpower/saxpower/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/saxpower/bat.py b/packages/modules/devices/saxpower/saxpower/bat.py
similarity index 96%
rename from packages/modules/devices/saxpower/bat.py
rename to packages/modules/devices/saxpower/saxpower/bat.py
index 71e4b8c2d0..b9bc55741d 100644
--- a/packages/modules/devices/saxpower/bat.py
+++ b/packages/modules/devices/saxpower/saxpower/bat.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.saxpower.config import SaxpowerBatSetup
+from modules.devices.saxpower.saxpower.config import SaxpowerBatSetup
 
 
 class SaxpowerBat:
diff --git a/packages/modules/devices/saxpower/config.py b/packages/modules/devices/saxpower/saxpower/config.py
similarity index 89%
rename from packages/modules/devices/saxpower/config.py
rename to packages/modules/devices/saxpower/saxpower/config.py
index d705689bed..83e4f3d578 100644
--- a/packages/modules/devices/saxpower/config.py
+++ b/packages/modules/devices/saxpower/saxpower/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 64, ip_address: Optional[str] = None, port:
 class Saxpower:
     def __init__(self,
                  name: str = "Saxpower",
-                 type: str = "saxpower",
+                 type: List[str] = ["saxpower", "saxpower"],
                  id: int = 0,
                  configuration: SaxpowerConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SaxpowerConfiguration()
 
diff --git a/packages/modules/devices/saxpower/saxpower/device.py b/packages/modules/devices/saxpower/saxpower/device.py
new file mode 100644
index 0000000000..1735a4a474
--- /dev/null
+++ b/packages/modules/devices/saxpower/saxpower/device.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python3
+import logging
+from typing import Dict, List, Union
+
+from dataclass_utils import dataclass_from_dict
+from helpermodules.cli import run_using_positional_cli_args
+from modules.common import modbus
+from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.devices.saxpower.saxpower import bat
+from modules.devices.saxpower.saxpower.config import Saxpower, SaxpowerBatSetup
+
+log = logging.getLogger(__name__)
+
+
+class Device(AbstractDevice):
+    COMPONENT_TYPE_TO_CLASS = {
+        "bat": bat.SaxpowerBat
+    }
+
+    def __init__(self, device_config: Union[Dict, Saxpower]) -> None:
+        self.components = {}  # type: Dict[str, bat.SaxpowerBat]
+        try:
+            self.device_config = dataclass_from_dict(Saxpower, device_config)
+            self.client = modbus.ModbusTcpClient_(
+                self.device_config.configuration.ip_address, self.device_config.configuration.port)
+        except Exception:
+            log.exception("Fehler im Modul "+self.device_config.name)
+
+    def add_component(self, component_config: Union[Dict, SaxpowerBatSetup]) -> None:
+        if isinstance(component_config, Dict):
+            component_type = component_config["type"]
+        else:
+            component_type = component_config.type
+        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
+            component_type].component_descriptor.configuration_factory, component_config)
+        if component_type in self.COMPONENT_TYPE_TO_CLASS:
+            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
+                self.device_config.id, component_config, self.client, self.device_config.configuration.modbus_id))
+        else:
+            raise Exception(
+                "illegal component type " + component_type + ". Allowed values: " +
+                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
+            )
+
+    def update(self) -> None:
+        log.debug("Start device reading " + str(self.components))
+        if self.components:
+            for component in self.components:
+                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
+                with SingleComponentUpdateContext(self.components[component].fault_state):
+                    self.components[component].update()
+        else:
+            log.warning(
+                self.device_config.name +
+                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
+            )
+
+
+COMPONENT_TYPE_TO_MODULE = {
+    "bat": bat
+}
+
+
+def read_legacy(component_type: str, ip_address: str) -> None:
+    device_config = Saxpower()
+    device_config.configuration.ip_address = ip_address
+    dev = Device(device_config)
+    if component_type in COMPONENT_TYPE_TO_MODULE:
+        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
+    else:
+        raise Exception(
+            "illegal component type " + component_type + ". Allowed values: " +
+            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
+        )
+    component_config.id = None
+    dev.add_component(component_config)
+
+    log.debug('Saxpower IP-Adresse: ' + ip_address)
+
+    dev.update()
+
+
+def main(argv: List[str]):
+    run_using_positional_cli_args(read_legacy, argv)
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=Saxpower)
diff --git a/packages/modules/devices/saxpower/vendor.py b/packages/modules/devices/saxpower/vendor.py
new file mode 100644
index 0000000000..c7c0b97b62
--- /dev/null
+++ b/packages/modules/devices/saxpower/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "SAX Power"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/shelly/__init__.py b/packages/modules/devices/shelly/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/shelly/shelly/__init__.py b/packages/modules/devices/shelly/shelly/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/shelly/bat.py b/packages/modules/devices/shelly/shelly/bat.py
similarity index 97%
rename from packages/modules/devices/shelly/bat.py
rename to packages/modules/devices/shelly/shelly/bat.py
index 5372b30cf5..bcf06a0acd 100644
--- a/packages/modules/devices/shelly/bat.py
+++ b/packages/modules/devices/shelly/shelly/bat.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_bat_value_store
 from modules.common.simcount._simcounter import SimCounter
-from modules.devices.shelly.config import ShellyBatSetup
+from modules.devices.shelly.shelly.config import ShellyBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/shelly/config.py b/packages/modules/devices/shelly/shelly/config.py
similarity index 94%
rename from packages/modules/devices/shelly/config.py
rename to packages/modules/devices/shelly/shelly/config.py
index db5005aba3..b982370fbc 100644
--- a/packages/modules/devices/shelly/config.py
+++ b/packages/modules/devices/shelly/shelly/config.py
@@ -1,5 +1,5 @@
 from modules.common.component_setup import ComponentSetup
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 
 
@@ -14,11 +14,12 @@ def __init__(self, ip_address: Optional[str] = None, generation: Optional[int] =
 class Shelly:
     def __init__(self,
                  name: str = "Shelly",
-                 type: str = "shelly",
+                 type: List[str] = ["shelly", "shelly"],
                  id: int = 0,
                  configuration: ShellyConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or ShellyConfiguration()
 
diff --git a/packages/modules/devices/shelly/counter.py b/packages/modules/devices/shelly/shelly/counter.py
similarity index 97%
rename from packages/modules/devices/shelly/counter.py
rename to packages/modules/devices/shelly/shelly/counter.py
index f348fb0917..3c8f152719 100644
--- a/packages/modules/devices/shelly/counter.py
+++ b/packages/modules/devices/shelly/shelly/counter.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_counter_value_store
 from modules.common.simcount._simcounter import SimCounter
-from modules.devices.shelly.config import ShellyCounterSetup
+from modules.devices.shelly.shelly.config import ShellyCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/shelly/device.py b/packages/modules/devices/shelly/shelly/device.py
similarity index 88%
rename from packages/modules/devices/shelly/device.py
rename to packages/modules/devices/shelly/shelly/device.py
index b2639df22f..b1cdb43379 100644
--- a/packages/modules/devices/shelly/device.py
+++ b/packages/modules/devices/shelly/shelly/device.py
@@ -7,13 +7,13 @@
 from helpermodules.cli import run_using_positional_cli_args
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import (ConfigurableDevice, ComponentFactoryByType, IndependentComponentUpdater)
-from modules.devices.shelly.inverter import ShellyInverter
-from modules.devices.shelly.bat import ShellyBat
-from modules.devices.shelly.counter import ShellyCounter
-from modules.devices.shelly.config import Shelly, ShellyConfiguration
-from modules.devices.shelly.config import ShellyInverterSetup, ShellyInverterConfiguration
-from modules.devices.shelly.config import ShellyBatSetup
-from modules.devices.shelly.config import ShellyCounterSetup
+from modules.devices.shelly.shelly.inverter import ShellyInverter
+from modules.devices.shelly.shelly.bat import ShellyBat
+from modules.devices.shelly.shelly.counter import ShellyCounter
+from modules.devices.shelly.shelly.config import Shelly, ShellyConfiguration
+from modules.devices.shelly.shelly.config import ShellyInverterSetup, ShellyInverterConfiguration
+from modules.devices.shelly.shelly.config import ShellyBatSetup
+from modules.devices.shelly.shelly.config import ShellyCounterSetup
 
 
 log = logging.getLogger(__name__)
diff --git a/packages/modules/devices/shelly/inverter.py b/packages/modules/devices/shelly/shelly/inverter.py
similarity index 97%
rename from packages/modules/devices/shelly/inverter.py
rename to packages/modules/devices/shelly/shelly/inverter.py
index e2131cf325..bff5c227fb 100644
--- a/packages/modules/devices/shelly/inverter.py
+++ b/packages/modules/devices/shelly/shelly/inverter.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
 from modules.common.simcount._simcounter import SimCounter
-from modules.devices.shelly.config import ShellyInverterSetup
+from modules.devices.shelly.shelly.config import ShellyInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/shelly/vendor.py b/packages/modules/devices/shelly/vendor.py
new file mode 100644
index 0000000000..001e4564cd
--- /dev/null
+++ b/packages/modules/devices/shelly/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Shelly"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/siemens/device.py b/packages/modules/devices/siemens/device.py
deleted file mode 100644
index 720c87dbe6..0000000000
--- a/packages/modules/devices/siemens/device.py
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env python3
-import logging
-from typing import Iterable, Union
-
-from modules.common import modbus
-from modules.common.abstract_device import DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.siemens.bat import SiemensBat
-from modules.devices.siemens.config import Siemens, SiemensBatSetup, SiemensCounterSetup, SiemensInverterSetup
-from modules.devices.siemens.counter import SiemensCounter
-from modules.devices.siemens.inverter import SiemensInverter
-
-log = logging.getLogger(__name__)
-
-
-siemens_component_classes = Union[SiemensBat, SiemensCounter, SiemensInverter]
-
-
-def create_device(device_config: Siemens):
-    def create_bat_component(component_config: SiemensBatSetup):
-        return SiemensBat(device_config.id, component_config, client, device_config.configuration.modbus_id)
-
-    def create_counter_component(component_config: SiemensCounterSetup):
-        return SiemensCounter(device_config.id, component_config, client, device_config.configuration.modbus_id)
-
-    def create_inverter_component(component_config: SiemensInverterSetup):
-        return SiemensInverter(device_config.id, component_config, client, device_config.configuration.modbus_id)
-
-    def update_components(components: Iterable[siemens_component_classes]):
-        with client:
-            for component in components:
-                with SingleComponentUpdateContext(component.fault_state):
-                    component.update()
-
-    try:
-        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
-    except Exception:
-        log.exception("Fehler in create_device")
-    return ConfigurableDevice(
-        device_config=device_config,
-        component_factory=ComponentFactoryByType(
-            bat=create_bat_component,
-            counter=create_counter_component,
-            inverter=create_inverter_component,
-        ),
-        component_updater=MultiComponentUpdater(update_components)
-    )
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=Siemens)
diff --git a/packages/modules/devices/siemens/siemens/__init__.py b/packages/modules/devices/siemens/siemens/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/siemens/bat.py b/packages/modules/devices/siemens/siemens/bat.py
similarity index 96%
rename from packages/modules/devices/siemens/bat.py
rename to packages/modules/devices/siemens/siemens/bat.py
index 9a813b1057..396f739fab 100644
--- a/packages/modules/devices/siemens/bat.py
+++ b/packages/modules/devices/siemens/siemens/bat.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.siemens.config import SiemensBatSetup
+from modules.devices.siemens.siemens.config import SiemensBatSetup
 
 
 class SiemensBat:
diff --git a/packages/modules/devices/siemens/config.py b/packages/modules/devices/siemens/siemens/config.py
similarity index 94%
rename from packages/modules/devices/siemens/config.py
rename to packages/modules/devices/siemens/siemens/config.py
index 5738bb3972..db266b6eca 100644
--- a/packages/modules/devices/siemens/config.py
+++ b/packages/modules/devices/siemens/siemens/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Siemens:
     def __init__(self,
                  name: str = "Siemens",
-                 type: str = "siemens",
+                 type: List[str] = ["siemens", "siemens"],
                  id: int = 0,
                  configuration: SiemensConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SiemensConfiguration()
 
diff --git a/packages/modules/devices/siemens/counter.py b/packages/modules/devices/siemens/siemens/counter.py
similarity index 95%
rename from packages/modules/devices/siemens/counter.py
rename to packages/modules/devices/siemens/siemens/counter.py
index 992638ac71..fc9dcccb7e 100644
--- a/packages/modules/devices/siemens/counter.py
+++ b/packages/modules/devices/siemens/siemens/counter.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.siemens.config import SiemensCounterSetup
+from modules.devices.siemens.siemens.config import SiemensCounterSetup
 
 
 class SiemensCounter:
diff --git a/packages/modules/devices/siemens/siemens/device.py b/packages/modules/devices/siemens/siemens/device.py
new file mode 100644
index 0000000000..d914e075c6
--- /dev/null
+++ b/packages/modules/devices/siemens/siemens/device.py
@@ -0,0 +1,99 @@
+#!/usr/bin/env python3
+import logging
+from typing import Dict, Union, Optional, List
+
+from dataclass_utils import dataclass_from_dict
+from helpermodules.cli import run_using_positional_cli_args
+from modules.common import modbus
+from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.devices.siemens.siemens import bat, counter, inverter
+from modules.devices.siemens.siemens.config import Siemens, SiemensBatSetup, SiemensCounterSetup, SiemensInverterSetup
+
+log = logging.getLogger(__name__)
+
+
+siemens_component_classes = Union[bat.SiemensBat, counter.SiemensCounter, inverter.SiemensInverter]
+
+
+class Device(AbstractDevice):
+    COMPONENT_TYPE_TO_CLASS = {
+        "bat": bat.SiemensBat,
+        "counter": counter.SiemensCounter,
+        "inverter": inverter.SiemensInverter
+    }
+
+    def __init__(self, device_config: Union[Dict, Siemens]) -> None:
+        self.components = {}  # type: Dict[str, siemens_component_classes]
+        try:
+            self.device_config = dataclass_from_dict(Siemens, device_config)
+            self.client = modbus.ModbusTcpClient_(
+                self.device_config.configuration.ip_address, self.device_config.configuration.port)
+        except Exception:
+            log.exception("Fehler im Modul "+self.device_config.name)
+
+    def add_component(self, component_config: Union[Dict,
+                                                    SiemensBatSetup,
+                                                    SiemensCounterSetup,
+                                                    SiemensInverterSetup]) -> None:
+        if isinstance(component_config, Dict):
+            component_type = component_config["type"]
+        else:
+            component_type = component_config.type
+        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
+            component_type].component_descriptor.configuration_factory, component_config)
+        if component_type in self.COMPONENT_TYPE_TO_CLASS:
+            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
+                self.device_config.id, component_config, self.client,
+                self.device_config.configuration.modbus_id))
+        else:
+            raise Exception(
+                "illegal component type " + component_type + ". Allowed values: " +
+                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
+            )
+
+    def update(self) -> None:
+        log.debug("Start device reading" + str(self.components))
+        if self.components:
+            for component in self.components:
+                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
+                with SingleComponentUpdateContext(self.components[component].fault_state):
+                    self.components[component].update()
+        else:
+            log.warning(
+                self.device_config.name +
+                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
+            )
+
+
+COMPONENT_TYPE_TO_MODULE = {
+    "bat": bat,
+    "counter": counter,
+    "inverter": inverter
+}
+
+
+def read_legacy(component_type: str, ip_address: str, num: Optional[int] = None) -> None:
+    device_config = Siemens()
+    device_config.configuration.ip_address = ip_address
+    dev = Device(device_config)
+    if component_type in COMPONENT_TYPE_TO_MODULE:
+        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
+    else:
+        raise Exception(
+            "illegal component type " + component_type + ". Allowed values: " +
+            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
+        )
+    component_config.id = num
+    dev.add_component(component_config)
+
+    log.debug('Siemens IP-Adresse: ' + ip_address)
+
+    dev.update()
+
+
+def main(argv: List[str]):
+    run_using_positional_cli_args(read_legacy, argv)
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=Siemens)
diff --git a/packages/modules/devices/siemens/inverter.py b/packages/modules/devices/siemens/siemens/inverter.py
similarity index 95%
rename from packages/modules/devices/siemens/inverter.py
rename to packages/modules/devices/siemens/siemens/inverter.py
index 6607d92db7..656f33006d 100644
--- a/packages/modules/devices/siemens/inverter.py
+++ b/packages/modules/devices/siemens/siemens/inverter.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.siemens.config import SiemensInverterSetup
+from modules.devices.siemens.siemens.config import SiemensInverterSetup
 
 
 class SiemensInverter:
diff --git a/packages/modules/devices/siemens/siemens_sentron/__init__.py b/packages/modules/devices/siemens/siemens_sentron/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/siemens_sentron/config.py b/packages/modules/devices/siemens/siemens_sentron/config.py
similarity index 89%
rename from packages/modules/devices/siemens_sentron/config.py
rename to packages/modules/devices/siemens/siemens_sentron/config.py
index b2fd6a0137..572ed91b3c 100644
--- a/packages/modules/devices/siemens_sentron/config.py
+++ b/packages/modules/devices/siemens/siemens_sentron/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class SiemensSentron:
     def __init__(self,
                  name: str = "Siemens Sentron",
-                 type: str = "siemens_sentron",
+                 type: List[str] = ["siemens", "siemens_sentron"],
                  id: int = 0,
                  configuration: SiemensSentronConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SiemensSentronConfiguration()
 
diff --git a/packages/modules/devices/siemens_sentron/counter.py b/packages/modules/devices/siemens/siemens_sentron/counter.py
similarity index 96%
rename from packages/modules/devices/siemens_sentron/counter.py
rename to packages/modules/devices/siemens/siemens_sentron/counter.py
index da14a6afc3..b2e7f61737 100644
--- a/packages/modules/devices/siemens_sentron/counter.py
+++ b/packages/modules/devices/siemens/siemens_sentron/counter.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_counter_value_store
-from modules.devices.siemens_sentron.config import SiemensSentronCounterSetup
+from modules.devices.siemens.siemens_sentron.config import SiemensSentronCounterSetup
 
 
 class SiemensSentronCounter:
diff --git a/packages/modules/devices/siemens_sentron/device.py b/packages/modules/devices/siemens/siemens_sentron/device.py
similarity index 95%
rename from packages/modules/devices/siemens_sentron/device.py
rename to packages/modules/devices/siemens/siemens_sentron/device.py
index 80122dc25e..38169ed75d 100644
--- a/packages/modules/devices/siemens_sentron/device.py
+++ b/packages/modules/devices/siemens/siemens_sentron/device.py
@@ -7,8 +7,8 @@
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.siemens_sentron import counter
-from modules.devices.siemens_sentron.config import SiemensSentron, SiemensSentronCounterSetup
+from modules.devices.siemens.siemens_sentron import counter
+from modules.devices.siemens.siemens_sentron.config import SiemensSentron, SiemensSentronCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/siemens/vendor.py b/packages/modules/devices/siemens/vendor.py
new file mode 100644
index 0000000000..3f1cddf9df
--- /dev/null
+++ b/packages/modules/devices/siemens/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Siemens"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sma/sma_shm/__init__.py b/packages/modules/devices/sma/sma_shm/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/sma_shm/config.py b/packages/modules/devices/sma/sma_shm/config.py
similarity index 93%
rename from packages/modules/devices/sma_shm/config.py
rename to packages/modules/devices/sma/sma_shm/config.py
index 0e2bd2021f..7e85b18288 100644
--- a/packages/modules/devices/sma_shm/config.py
+++ b/packages/modules/devices/sma/sma_shm/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from typing import List
 
 
 class SpeedwireComponentConfiguration:
@@ -9,11 +10,12 @@ def __init__(self):
 class Speedwire:
     def __init__(self,
                  name: str = "SMA Sunny Home Manager 2.0, Energy Meter",
-                 type: str = "sma_shm",
+                 type: List[str] = ["sma", "sma_shm"],
                  id: int = 0,
                  configuration: SpeedwireComponentConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SpeedwireComponentConfiguration()
 
diff --git a/packages/modules/devices/sma_shm/counter.py b/packages/modules/devices/sma/sma_shm/counter.py
similarity index 91%
rename from packages/modules/devices/sma_shm/counter.py
rename to packages/modules/devices/sma/sma_shm/counter.py
index 082b418776..bb61df6b1b 100644
--- a/packages/modules/devices/sma_shm/counter.py
+++ b/packages/modules/devices/sma/sma_shm/counter.py
@@ -4,8 +4,8 @@
 from modules.common.component_state import CounterState
 from modules.common.store import get_counter_value_store
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.sma_shm.config import SmaHomeManagerCounterSetup
-from modules.devices.sma_shm.utils import SpeedwireComponent
+from modules.devices.sma.sma_shm.config import SmaHomeManagerCounterSetup
+from modules.devices.sma.sma_shm.utils import SpeedwireComponent
 
 
 def parse_datagram(sma_data: dict):
diff --git a/packages/modules/devices/sma_shm/counter_test.py b/packages/modules/devices/sma/sma_shm/counter_test.py
similarity index 97%
rename from packages/modules/devices/sma_shm/counter_test.py
rename to packages/modules/devices/sma/sma_shm/counter_test.py
index 3ff7c9e5e7..a457c6c778 100644
--- a/packages/modules/devices/sma_shm/counter_test.py
+++ b/packages/modules/devices/sma/sma_shm/counter_test.py
@@ -2,7 +2,7 @@
 import pytest
 
 from helpermodules import compatibility
-from modules.devices.sma_shm import counter, speedwiredecoder
+from modules.devices.sma.sma_shm import counter, speedwiredecoder
 from test_utils.mock_ramdisk import MockRamdisk
 
 # This sample was collected from an SMA Energy Meter with Firmware 2.0.18.R on 2021-12-22:
diff --git a/packages/modules/devices/sma_shm/device.py b/packages/modules/devices/sma/sma_shm/device.py
similarity index 86%
rename from packages/modules/devices/sma_shm/device.py
rename to packages/modules/devices/sma/sma_shm/device.py
index 32d507286f..0315f942df 100644
--- a/packages/modules/devices/sma_shm/device.py
+++ b/packages/modules/devices/sma/sma_shm/device.py
@@ -7,12 +7,12 @@
 from helpermodules.cli import run_using_positional_cli_args
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
-from modules.devices.sma_shm import counter
-from modules.devices.sma_shm import inverter
-from modules.devices.sma_shm.config import SmaHomeManagerCounterSetup, SmaHomeManagerInverterSetup, Speedwire, \
+from modules.devices.sma.sma_shm import counter
+from modules.devices.sma.sma_shm import inverter
+from modules.devices.sma.sma_shm.config import SmaHomeManagerCounterSetup, SmaHomeManagerInverterSetup, Speedwire, \
     SmaHomeManagerCounterConfiguration, SmaHomeManagerInverterConfiguration
-from modules.devices.sma_shm.speedwire_listener import SpeedwireListener
-from modules.devices.sma_shm.utils import SpeedwireComponent
+from modules.devices.sma.sma_shm.speedwire_listener import SpeedwireListener
+from modules.devices.sma.sma_shm.utils import SpeedwireComponent
 
 log = logging.getLogger(__name__)
 timeout_seconds = 5
diff --git a/packages/modules/devices/sma_shm/inverter.py b/packages/modules/devices/sma/sma_shm/inverter.py
similarity index 81%
rename from packages/modules/devices/sma_shm/inverter.py
rename to packages/modules/devices/sma/sma_shm/inverter.py
index ebe632ad36..fe54b52aa6 100644
--- a/packages/modules/devices/sma_shm/inverter.py
+++ b/packages/modules/devices/sma/sma_shm/inverter.py
@@ -3,8 +3,8 @@
 from modules.common.component_state import InverterState
 from modules.common.store import get_inverter_value_store
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.sma_shm.config import SmaHomeManagerInverterSetup
-from modules.devices.sma_shm.utils import SpeedwireComponent
+from modules.devices.sma.sma_shm.config import SmaHomeManagerInverterSetup
+from modules.devices.sma.sma_shm.utils import SpeedwireComponent
 
 
 def parse_datagram(sma_data: dict):
diff --git a/packages/modules/devices/sma_shm/speedwire_listener.py b/packages/modules/devices/sma/sma_shm/speedwire_listener.py
similarity index 94%
rename from packages/modules/devices/sma_shm/speedwire_listener.py
rename to packages/modules/devices/sma/sma_shm/speedwire_listener.py
index 863da718d8..ff9ab86998 100644
--- a/packages/modules/devices/sma_shm/speedwire_listener.py
+++ b/packages/modules/devices/sma/sma_shm/speedwire_listener.py
@@ -2,7 +2,7 @@
 import struct
 from typing import Iterator, Optional
 
-from modules.devices.sma_shm.speedwiredecoder import decode_speedwire
+from modules.devices.sma.sma_shm.speedwiredecoder import decode_speedwire
 
 
 class SpeedwireListener:
diff --git a/packages/modules/devices/sma_shm/speedwiredecoder.py b/packages/modules/devices/sma/sma_shm/speedwiredecoder.py
similarity index 100%
rename from packages/modules/devices/sma_shm/speedwiredecoder.py
rename to packages/modules/devices/sma/sma_shm/speedwiredecoder.py
diff --git a/packages/modules/devices/sma_shm/utils.py b/packages/modules/devices/sma/sma_shm/utils.py
similarity index 93%
rename from packages/modules/devices/sma_shm/utils.py
rename to packages/modules/devices/sma/sma_shm/utils.py
index 6380bc80b3..cf17307f8e 100644
--- a/packages/modules/devices/sma_shm/utils.py
+++ b/packages/modules/devices/sma/sma_shm/utils.py
@@ -4,7 +4,7 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import ValueStore
-from modules.devices.sma_shm.config import SmaHomeManagerCounterSetup, SmaHomeManagerInverterSetup
+from modules.devices.sma.sma_shm.config import SmaHomeManagerCounterSetup, SmaHomeManagerInverterSetup
 
 T = TypeVar("T")
 log = logging.getLogger(__name__)
diff --git a/packages/modules/devices/sma/sma_sunny_boy/__init__.py b/packages/modules/devices/sma/sma_sunny_boy/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/sma_sunny_boy/bat.py b/packages/modules/devices/sma/sma_sunny_boy/bat.py
similarity index 96%
rename from packages/modules/devices/sma_sunny_boy/bat.py
rename to packages/modules/devices/sma/sma_sunny_boy/bat.py
index 821a199b19..cc285b27ee 100644
--- a/packages/modules/devices/sma_sunny_boy/bat.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/bat.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusTcpClient_, ModbusDataType
 from modules.common.store import get_bat_value_store
-from modules.devices.sma_sunny_boy.config import SmaSunnyBoyBatSetup
+from modules.devices.sma.sma_sunny_boy.config import SmaSunnyBoyBatSetup
 
 
 class SunnyBoyBat:
diff --git a/packages/modules/devices/sma_sunny_boy/bat_smart_energy.py b/packages/modules/devices/sma/sma_sunny_boy/bat_smart_energy.py
similarity index 96%
rename from packages/modules/devices/sma_sunny_boy/bat_smart_energy.py
rename to packages/modules/devices/sma/sma_sunny_boy/bat_smart_energy.py
index b8f69d5e6d..18355b5c1c 100644
--- a/packages/modules/devices/sma_sunny_boy/bat_smart_energy.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/bat_smart_energy.py
@@ -8,7 +8,7 @@
 from modules.common.modbus import ModbusTcpClient_, ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.sma_sunny_boy.config import SmaSunnyBoySmartEnergyBatSetup
+from modules.devices.sma.sma_sunny_boy.config import SmaSunnyBoySmartEnergyBatSetup
 
 
 class SunnyBoySmartEnergyBat:
diff --git a/packages/modules/devices/sma_sunny_boy/config.py b/packages/modules/devices/sma/sma_sunny_boy/config.py
similarity index 93%
rename from packages/modules/devices/sma_sunny_boy/config.py
rename to packages/modules/devices/sma/sma_sunny_boy/config.py
index f0a8e2f8fa..8b843a64bd 100644
--- a/packages/modules/devices/sma_sunny_boy/config.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/config.py
@@ -1,7 +1,7 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
-from modules.devices.sma_sunny_boy.inv_version import SmaInverterVersion
+from modules.devices.sma.sma_sunny_boy.inv_version import SmaInverterVersion
 
 
 class SmaSunnyBoyConfiguration:
@@ -13,11 +13,12 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class SmaSunnyBoy:
     def __init__(self,
                  name: str = "SMA Sunny Boy/Tripower",
-                 type: str = "sma_sunny_boy",
+                 type: List[str] = ["sma", "sma_sunny_boy"],
                  id: int = 0,
                  configuration: SmaSunnyBoyConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SmaSunnyBoyConfiguration()
 
diff --git a/packages/modules/devices/sma_sunny_boy/counter.py b/packages/modules/devices/sma/sma_sunny_boy/counter.py
similarity index 86%
rename from packages/modules/devices/sma_sunny_boy/counter.py
rename to packages/modules/devices/sma/sma_sunny_boy/counter.py
index f258193944..a5f495fc9a 100644
--- a/packages/modules/devices/sma_sunny_boy/counter.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/counter.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.sma_sunny_boy.config import SmaSunnyBoyCounterSetup
+from modules.devices.sma.sma_sunny_boy.config import SmaSunnyBoyCounterSetup
 
 
 class SmaSunnyBoyCounter:
@@ -34,8 +34,7 @@ def update(self):
         else:
             power = exp * -1
 
-        imported = self.__tcp_client.read_holding_registers(30581, ModbusDataType.UINT_32, unit=unit)
-        exported = self.__tcp_client.read_holding_registers(30583, ModbusDataType.UINT_32, unit=unit)
+        imported, exported = self.sim_counter.sim_count(power)
 
         counter_state = CounterState(
             imported=imported,
diff --git a/packages/modules/devices/sma_sunny_boy/device.py b/packages/modules/devices/sma/sma_sunny_boy/device.py
similarity index 87%
rename from packages/modules/devices/sma_sunny_boy/device.py
rename to packages/modules/devices/sma/sma_sunny_boy/device.py
index 1fdede73da..a924802bbd 100644
--- a/packages/modules/devices/sma_sunny_boy/device.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/device.py
@@ -7,16 +7,16 @@
 from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import MultiComponentUpdateContext, SingleComponentUpdateContext
+from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.component_state import InverterState
 from modules.common.store import get_inverter_value_store
-from modules.devices.sma_sunny_boy import bat, bat_smart_energy, counter, inverter
-from modules.devices.sma_sunny_boy.config import (SmaSunnyBoy, SmaSunnyBoyBatSetup, SmaSunnyBoyConfiguration,
-                                                  SmaSunnyBoyCounterSetup, SmaSunnyBoyInverterConfiguration,
-                                                  SmaSunnyBoyInverterSetup, SmaSunnyBoySmartEnergyBatSetup)
-from modules.devices.sma_sunny_boy.inv_version import SmaInverterVersion
-from modules.devices.sma_webbox.config import SmaWebboxInverterSetup
-from modules.devices.sma_webbox.inverter import SmaWebboxInverter
+from modules.devices.sma.sma_sunny_boy import bat, bat_smart_energy, counter, inverter
+from modules.devices.sma.sma_sunny_boy.config import (SmaSunnyBoy, SmaSunnyBoyBatSetup, SmaSunnyBoyConfiguration,
+                                                      SmaSunnyBoyCounterSetup, SmaSunnyBoyInverterConfiguration,
+                                                      SmaSunnyBoyInverterSetup, SmaSunnyBoySmartEnergyBatSetup)
+from modules.devices.sma.sma_sunny_boy.inv_version import SmaInverterVersion
+from modules.devices.sma.sma_webbox.config import SmaWebboxInverterSetup
+from modules.devices.sma.sma_webbox.inverter import SmaWebboxInverter
 
 log = logging.getLogger(__name__)
 
@@ -71,13 +71,11 @@ def add_component(self, component_config: Union[Dict,
     def update(self) -> None:
         log.debug("Start device reading " + str(self.components))
         if self.components:
-            with MultiComponentUpdateContext(self.components):
-                with self.client:
-                    for component in self.components.values():
-                        # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen
-                        # werden.
-                        with SingleComponentUpdateContext(component.fault_state):
-                            component.update()
+            with self.client:
+                for component in self.components.values():
+                    # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
+                    with SingleComponentUpdateContext(component.fault_state):
+                        component.update()
         else:
             log.warning(
                 self.device_config.name +
diff --git a/packages/modules/devices/sma_sunny_boy/inv_version.py b/packages/modules/devices/sma/sma_sunny_boy/inv_version.py
similarity index 100%
rename from packages/modules/devices/sma_sunny_boy/inv_version.py
rename to packages/modules/devices/sma/sma_sunny_boy/inv_version.py
diff --git a/packages/modules/devices/sma_sunny_boy/inverter.py b/packages/modules/devices/sma/sma_sunny_boy/inverter.py
similarity index 94%
rename from packages/modules/devices/sma_sunny_boy/inverter.py
rename to packages/modules/devices/sma/sma_sunny_boy/inverter.py
index 22a6f6a9c0..22459dd2ee 100644
--- a/packages/modules/devices/sma_sunny_boy/inverter.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/inverter.py
@@ -9,8 +9,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_inverter_value_store
-from modules.devices.sma_sunny_boy.config import SmaSunnyBoyInverterSetup
-from modules.devices.sma_sunny_boy.inv_version import SmaInverterVersion
+from modules.devices.sma.sma_sunny_boy.config import SmaSunnyBoyInverterSetup
+from modules.devices.sma.sma_sunny_boy.inv_version import SmaInverterVersion
 
 log = logging.getLogger(__name__)
 
@@ -18,7 +18,6 @@
 class SmaSunnyBoyInverter:
 
     SMA_INT32_NAN = -0x80000000  # SMA uses this value to represent NaN
-    SMA_UINT_64_NAN = 0x100000000
     SMA_NAN = -0xC000
 
     def __init__(self,
@@ -67,8 +66,6 @@ def read(self) -> InverterState:
             raise ValueError("Unbekannte Version "+str(self.component_config.configuration.version))
         if power_total == self.SMA_INT32_NAN or power_total == self.SMA_NAN:
             power_total = 0
-        if dc_power == self.SMA_UINT_64_NAN:
-            dc_power = 0
 
         inverter_state = InverterState(
             power=power_total * -1,
diff --git a/packages/modules/devices/sma_sunny_boy/sma_sunny_boy_test.py b/packages/modules/devices/sma/sma_sunny_boy/sma_sunny_boy_test.py
similarity index 91%
rename from packages/modules/devices/sma_sunny_boy/sma_sunny_boy_test.py
rename to packages/modules/devices/sma/sma_sunny_boy/sma_sunny_boy_test.py
index d60895425b..85d02a8679 100644
--- a/packages/modules/devices/sma_sunny_boy/sma_sunny_boy_test.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/sma_sunny_boy_test.py
@@ -4,9 +4,9 @@
 from modules.common.component_state import BatState, InverterState
 from modules.common.modbus import ModbusClient
 from modules.conftest import SAMPLE_IP
-from modules.devices.sma_sunny_boy import device
-from modules.devices.sma_sunny_boy.bat import SunnyBoyBat
-from modules.devices.sma_sunny_boy.inverter import SmaSunnyBoyInverter
+from modules.devices.sma.sma_sunny_boy import device
+from modules.devices.sma.sma_sunny_boy.bat import SunnyBoyBat
+from modules.devices.sma.sma_sunny_boy.inverter import SmaSunnyBoyInverter
 
 
 @pytest.fixture(autouse=True)
diff --git a/packages/modules/devices/sma/sma_sunny_island/__init__.py b/packages/modules/devices/sma/sma_sunny_island/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/sma_sunny_island/bat.py b/packages/modules/devices/sma/sma_sunny_island/bat.py
similarity index 95%
rename from packages/modules/devices/sma_sunny_island/bat.py
rename to packages/modules/devices/sma/sma_sunny_island/bat.py
index cc8fd371a7..c1f9cff224 100644
--- a/packages/modules/devices/sma_sunny_island/bat.py
+++ b/packages/modules/devices/sma/sma_sunny_island/bat.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_bat_value_store
-from modules.devices.sma_sunny_island.config import SmaSunnyIslandBatSetup
+from modules.devices.sma.sma_sunny_island.config import SmaSunnyIslandBatSetup
 
 
 class SunnyIslandBat:
diff --git a/packages/modules/devices/sma_sunny_island/config.py b/packages/modules/devices/sma/sma_sunny_island/config.py
similarity index 89%
rename from packages/modules/devices/sma_sunny_island/config.py
rename to packages/modules/devices/sma/sma_sunny_island/config.py
index 459adbfde3..4d126ea8f3 100644
--- a/packages/modules/devices/sma_sunny_island/config.py
+++ b/packages/modules/devices/sma/sma_sunny_island/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class SmaSunnyIsland:
     def __init__(self,
                  name: str = "SMA Sunny Island, Sunny Tripower X",
-                 type: str = "sma_sunny_island",
+                 type: List[str] = ["sma", "sma_sunny_island"],
                  id: int = 0,
                  configuration: SmaSunnyIslandConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SmaSunnyIslandConfiguration()
 
diff --git a/packages/modules/devices/sma_sunny_island/device.py b/packages/modules/devices/sma/sma_sunny_island/device.py
similarity index 91%
rename from packages/modules/devices/sma_sunny_island/device.py
rename to packages/modules/devices/sma/sma_sunny_island/device.py
index 0269218db2..1f4b6e044b 100644
--- a/packages/modules/devices/sma_sunny_island/device.py
+++ b/packages/modules/devices/sma/sma_sunny_island/device.py
@@ -7,8 +7,10 @@
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.sma_sunny_island import bat
-from modules.devices.sma_sunny_island.config import SmaSunnyIsland, SmaSunnyIslandBatSetup, SmaSunnyIslandConfiguration
+from modules.devices.sma.sma_sunny_island import bat
+from modules.devices.sma.sma_sunny_island.config import (SmaSunnyIsland,
+                                                         SmaSunnyIslandBatSetup,
+                                                         SmaSunnyIslandConfiguration)
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sma/sma_webbox/__init__.py b/packages/modules/devices/sma/sma_webbox/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/sma_webbox/config.py b/packages/modules/devices/sma/sma_webbox/config.py
similarity index 89%
rename from packages/modules/devices/sma_webbox/config.py
rename to packages/modules/devices/sma/sma_webbox/config.py
index b5ecfa42c4..49378f9bf8 100644
--- a/packages/modules/devices/sma_webbox/config.py
+++ b/packages/modules/devices/sma/sma_webbox/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -11,11 +11,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class SmaWebbox:
     def __init__(self,
                  name: str = "SMA Webbox",
-                 type: str = "sma_webbox",
+                 type: List[str] = ["sma", "sma_webbox"],
                  id: int = 0,
                  configuration: SmaWWebboxConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SmaWWebboxConfiguration()
 
diff --git a/packages/modules/devices/sma_webbox/device.py b/packages/modules/devices/sma/sma_webbox/device.py
similarity index 94%
rename from packages/modules/devices/sma_webbox/device.py
rename to packages/modules/devices/sma/sma_webbox/device.py
index 67388ab8ec..dc5ebc58e4 100644
--- a/packages/modules/devices/sma_webbox/device.py
+++ b/packages/modules/devices/sma/sma_webbox/device.py
@@ -3,8 +3,8 @@
 from typing import Dict, Union
 
 from dataclass_utils import dataclass_from_dict
-from modules.devices.sma_webbox.config import SmaWebbox, SmaWebboxInverterSetup
-from modules.devices.sma_webbox import inverter
+from modules.devices.sma.sma_webbox.config import SmaWebbox, SmaWebboxInverterSetup
+from modules.devices.sma.sma_webbox import inverter
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
 
diff --git a/packages/modules/devices/sma_webbox/inverter.py b/packages/modules/devices/sma/sma_webbox/inverter.py
similarity index 95%
rename from packages/modules/devices/sma_webbox/inverter.py
rename to packages/modules/devices/sma/sma_webbox/inverter.py
index 9d4a6864ac..619e246b55 100644
--- a/packages/modules/devices/sma_webbox/inverter.py
+++ b/packages/modules/devices/sma/sma_webbox/inverter.py
@@ -7,7 +7,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.sma_webbox.config import SmaWebboxInverterSetup
+from modules.devices.sma.sma_webbox.config import SmaWebboxInverterSetup
 
 
 class SmaWebboxInverter:
diff --git a/packages/modules/devices/sma/vendor.py b/packages/modules/devices/sma/vendor.py
new file mode 100644
index 0000000000..a82e2c1039
--- /dev/null
+++ b/packages/modules/devices/sma/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "SMA"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/smart_me/smart_me/__init__.py b/packages/modules/devices/smart_me/smart_me/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/smart_me/config.py b/packages/modules/devices/smart_me/smart_me/config.py
similarity index 92%
rename from packages/modules/devices/smart_me/config.py
rename to packages/modules/devices/smart_me/smart_me/config.py
index f7207014ed..399101d89b 100644
--- a/packages/modules/devices/smart_me/config.py
+++ b/packages/modules/devices/smart_me/smart_me/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None):
 class SmartMe:
     def __init__(self,
                  name: str = "smart-me",
-                 type: str = "smart_me",
+                 type: List[str] = ["smart_me", "smart_me"],
                  id: int = 0,
                  configuration: SmartMeConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SmartMeConfiguration()
 
diff --git a/packages/modules/devices/smart_me/counter.py b/packages/modules/devices/smart_me/smart_me/counter.py
similarity index 96%
rename from packages/modules/devices/smart_me/counter.py
rename to packages/modules/devices/smart_me/smart_me/counter.py
index 1b4f43e219..a90ebee5e7 100644
--- a/packages/modules/devices/smart_me/counter.py
+++ b/packages/modules/devices/smart_me/smart_me/counter.py
@@ -9,7 +9,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_counter_value_store
-from modules.devices.smart_me.config import SmartMeCounterSetup
+from modules.devices.smart_me.smart_me.config import SmartMeCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/smart_me/device.py b/packages/modules/devices/smart_me/smart_me/device.py
similarity index 81%
rename from packages/modules/devices/smart_me/device.py
rename to packages/modules/devices/smart_me/smart_me/device.py
index e29c9c2385..8a2046e8cd 100644
--- a/packages/modules/devices/smart_me/device.py
+++ b/packages/modules/devices/smart_me/smart_me/device.py
@@ -6,11 +6,11 @@
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
 from modules.common.req import get_http_session
-from modules.devices.smart_me.counter import SmartMeCounter
-from modules.devices.smart_me.config import (SmartMe, SmartMeConfiguration,
-                                             SmartMeCounterConfiguration, SmartMeCounterSetup,
-                                             SmartMeInverterConfiguration, SmartMeInverterSetup)
-from modules.devices.smart_me.inverter import SmartMeInverter
+from modules.devices.smart_me.smart_me.counter import SmartMeCounter
+from modules.devices.smart_me.smart_me.config import (SmartMe, SmartMeConfiguration,
+                                                      SmartMeCounterConfiguration, SmartMeCounterSetup,
+                                                      SmartMeInverterConfiguration, SmartMeInverterSetup)
+from modules.devices.smart_me.smart_me.inverter import SmartMeInverter
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/smart_me/inverter.py b/packages/modules/devices/smart_me/smart_me/inverter.py
similarity index 94%
rename from packages/modules/devices/smart_me/inverter.py
rename to packages/modules/devices/smart_me/smart_me/inverter.py
index bb112978be..5004dbf05d 100644
--- a/packages/modules/devices/smart_me/inverter.py
+++ b/packages/modules/devices/smart_me/smart_me/inverter.py
@@ -9,7 +9,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.smart_me.config import SmartMeInverterSetup
+from modules.devices.smart_me.smart_me.config import SmartMeInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/smart_me/vendor.py b/packages/modules/devices/smart_me/vendor.py
new file mode 100644
index 0000000000..990f262380
--- /dev/null
+++ b/packages/modules/devices/smart_me/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Smart-me"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/smartfox/smartfox/__init__.py b/packages/modules/devices/smartfox/smartfox/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/smartfox/config.py b/packages/modules/devices/smartfox/smartfox/config.py
similarity index 88%
rename from packages/modules/devices/smartfox/config.py
rename to packages/modules/devices/smartfox/smartfox/config.py
index 0b2610e332..37d8f95204 100644
--- a/packages/modules/devices/smartfox/config.py
+++ b/packages/modules/devices/smartfox/smartfox/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -11,11 +11,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class Smartfox:
     def __init__(self,
                  name: str = "Smartfox",
-                 type: str = "smartfox",
+                 type: List[str] = ["smartfox", "smartfox"],
                  id: int = 0,
                  configuration: SmartfoxConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SmartfoxConfiguration()
 
diff --git a/packages/modules/devices/smartfox/counter.py b/packages/modules/devices/smartfox/smartfox/counter.py
similarity index 97%
rename from packages/modules/devices/smartfox/counter.py
rename to packages/modules/devices/smartfox/smartfox/counter.py
index e750b44aed..60d0aff2b8 100644
--- a/packages/modules/devices/smartfox/counter.py
+++ b/packages/modules/devices/smartfox/smartfox/counter.py
@@ -9,7 +9,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_counter_value_store
-from modules.devices.smartfox.config import SmartfoxCounterSetup
+from modules.devices.smartfox.smartfox.config import SmartfoxCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/smartfox/device.py b/packages/modules/devices/smartfox/smartfox/device.py
similarity index 87%
rename from packages/modules/devices/smartfox/device.py
rename to packages/modules/devices/smartfox/smartfox/device.py
index bb08ec0cae..162c23ce75 100644
--- a/packages/modules/devices/smartfox/device.py
+++ b/packages/modules/devices/smartfox/smartfox/device.py
@@ -5,8 +5,8 @@
 from helpermodules.cli import run_using_positional_cli_args
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
-from modules.devices.smartfox.counter import SmartfoxCounter
-from modules.devices.smartfox.config import Smartfox, SmartfoxConfiguration, SmartfoxCounterSetup
+from modules.devices.smartfox.smartfox.counter import SmartfoxCounter
+from modules.devices.smartfox.smartfox.config import Smartfox, SmartfoxConfiguration, SmartfoxCounterSetup
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/smartfox/vendor.py b/packages/modules/devices/smartfox/vendor.py
new file mode 100644
index 0000000000..2c80bd19a1
--- /dev/null
+++ b/packages/modules/devices/smartfox/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Smartfox"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sofar/__init__.py b/packages/modules/devices/sofar/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/sofar/sofar/__init__.py b/packages/modules/devices/sofar/sofar/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/azzurro_sofar/bat.py b/packages/modules/devices/sofar/sofar/bat.py
similarity index 97%
rename from packages/modules/devices/azzurro_sofar/bat.py
rename to packages/modules/devices/sofar/sofar/bat.py
index 7f9d31c766..d97e73b557 100644
--- a/packages/modules/devices/azzurro_sofar/bat.py
+++ b/packages/modules/devices/sofar/sofar/bat.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_bat_value_store
-from modules.devices.azzurro_sofar.config import SofarBatSetup
+from modules.devices.sofar.sofar.config import SofarBatSetup
 
 
 class SofarBat:
diff --git a/packages/modules/devices/azzurro_sofar/config.py b/packages/modules/devices/sofar/sofar/config.py
similarity index 92%
rename from packages/modules/devices/azzurro_sofar/config.py
rename to packages/modules/devices/sofar/sofar/config.py
index 36a134e1d2..ab4cc661f0 100644
--- a/packages/modules/devices/azzurro_sofar/config.py
+++ b/packages/modules/devices/sofar/sofar/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,12 +12,13 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 
 class Sofar:
     def __init__(self,
-                 name: str = "Azzurro - Sofar 3P",
-                 type: str = "azzurro_sofar",
+                 name: str = "SofarSolar",
+                 type: List[str] = ["sofar", "sofar"],
                  id: int = 0,
                  configuration: SofarConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SofarConfiguration()
 
diff --git a/packages/modules/devices/azzurro_sofar/counter.py b/packages/modules/devices/sofar/sofar/counter.py
similarity index 81%
rename from packages/modules/devices/azzurro_sofar/counter.py
rename to packages/modules/devices/sofar/sofar/counter.py
index 5899fad977..10b242e151 100644
--- a/packages/modules/devices/azzurro_sofar/counter.py
+++ b/packages/modules/devices/sofar/sofar/counter.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_counter_value_store
-from modules.devices.azzurro_sofar.config import SofarCounterSetup
+from modules.devices.sofar.sofar.config import SofarCounterSetup
 
 
 class SofarCounter:
@@ -57,16 +57,16 @@ def update(self, client: ModbusTcpClient_):
             voltages = [230, 230, 230]
         exported = [value * 10
                     for value in client.read_input_registers(
-                            # 0x0692 Energy_Selling_Total UInt32 in kwH accuracy 0,01 LSB
-                            # 0x0693 Energy_Selling_Total UInt32 in kwH accuracy 0,01
-                            0x0692, [ModbusDataType.UINT_32] * 10,
-                            wordorder=Endian.Little, unit=self.__modbus_id)]
+                        # 0x0692 Energy_Selling_Total UInt32 in kwH accuracy 0,01 LSB
+                        # 0x0693 Energy_Selling_Total UInt32 in kwH accuracy 0,01
+                        0x0692, [ModbusDataType.UINT_32] * 10,
+                        wordorder=Endian.Little, unit=self.__modbus_id)]
         imported = [value * 10
                     for value in client.read_input_registers(
-                            # 0x068E Energy_Purchase_Total UInt32 in kwH accuracy 0,01 LSB
-                            # 0x068F Energy_Purchase_Total UInt32 in kwH accuracy 0,01
-                            0x068E, [ModbusDataType.UINT_32] * 10,
-                            wordorder=Endian.Little, unit=self.__modbus_id)]
+                        # 0x068E Energy_Purchase_Total UInt32 in kwH accuracy 0,01 LSB
+                        # 0x068F Energy_Purchase_Total UInt32 in kwH accuracy 0,01
+                        0x068E, [ModbusDataType.UINT_32] * 10,
+                        wordorder=Endian.Little, unit=self.__modbus_id)]
 
         counter_state = CounterState(
             imported=imported,
diff --git a/packages/modules/devices/azzurro_sofar/device.py b/packages/modules/devices/sofar/sofar/device.py
similarity index 85%
rename from packages/modules/devices/azzurro_sofar/device.py
rename to packages/modules/devices/sofar/sofar/device.py
index 9ef93ca0eb..f1a9fb7746 100644
--- a/packages/modules/devices/azzurro_sofar/device.py
+++ b/packages/modules/devices/sofar/sofar/device.py
@@ -6,10 +6,10 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.azzurro_sofar.bat import SofarBat
-from modules.devices.azzurro_sofar.config import Sofar, SofarBatSetup, SofarCounterSetup, SofarInverterSetup
-from modules.devices.azzurro_sofar.counter import SofarCounter
-from modules.devices.azzurro_sofar.inverter import SofarInverter
+from modules.devices.sofar.sofar.bat import SofarBat
+from modules.devices.sofar.sofar.config import Sofar, SofarBatSetup, SofarCounterSetup, SofarInverterSetup
+from modules.devices.sofar.sofar.counter import SofarCounter
+from modules.devices.sofar.sofar.inverter import SofarInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/azzurro_sofar/inverter.py b/packages/modules/devices/sofar/sofar/inverter.py
similarity index 97%
rename from packages/modules/devices/azzurro_sofar/inverter.py
rename to packages/modules/devices/sofar/sofar/inverter.py
index 570b63c55e..ec85598ae4 100644
--- a/packages/modules/devices/azzurro_sofar/inverter.py
+++ b/packages/modules/devices/sofar/sofar/inverter.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_inverter_value_store
-from modules.devices.azzurro_sofar.config import SofarInverterSetup
+from modules.devices.sofar.sofar.config import SofarInverterSetup
 
 
 class SofarInverter:
diff --git a/packages/modules/devices/sofar/vendor.py b/packages/modules/devices/sofar/vendor.py
new file mode 100644
index 0000000000..5243525c2a
--- /dev/null
+++ b/packages/modules/devices/sofar/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "SofarSolar"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solar_log/solar_log/__init__.py b/packages/modules/devices/solar_log/solar_log/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/solar_log/config.py b/packages/modules/devices/solar_log/solar_log/config.py
similarity index 91%
rename from packages/modules/devices/solar_log/config.py
rename to packages/modules/devices/solar_log/solar_log/config.py
index 5825952dbf..8437c32128 100644
--- a/packages/modules/devices/solar_log/config.py
+++ b/packages/modules/devices/solar_log/solar_log/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -11,11 +11,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class SolarLog:
     def __init__(self,
                  name: str = "Solar-Log",
-                 type: str = "solar_log",
+                 type: List[str] = ["solar_log", "solar_log"],
                  id: int = 0,
                  configuration: SolarLogConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SolarLogConfiguration()
 
diff --git a/packages/modules/devices/solar_log/counter.py b/packages/modules/devices/solar_log/solar_log/counter.py
similarity index 95%
rename from packages/modules/devices/solar_log/counter.py
rename to packages/modules/devices/solar_log/solar_log/counter.py
index 8c86025acb..0b8ad99cab 100644
--- a/packages/modules/devices/solar_log/counter.py
+++ b/packages/modules/devices/solar_log/solar_log/counter.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.solar_log.config import SolarLogCounterSetup
+from modules.devices.solar_log.solar_log.config import SolarLogCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solar_log/device.py b/packages/modules/devices/solar_log/solar_log/device.py
similarity index 92%
rename from packages/modules/devices/solar_log/device.py
rename to packages/modules/devices/solar_log/solar_log/device.py
index f35499f196..85b4639b63 100644
--- a/packages/modules/devices/solar_log/device.py
+++ b/packages/modules/devices/solar_log/solar_log/device.py
@@ -8,9 +8,9 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.common import req
-from modules.devices.solar_log.counter import SolarLogCounter
-from modules.devices.solar_log.config import SolarLog, SolarLogCounterSetup, SolarLogInverterSetup
-from modules.devices.solar_log.inverter import SolarLogInverter
+from modules.devices.solar_log.solar_log.counter import SolarLogCounter
+from modules.devices.solar_log.solar_log.config import SolarLog, SolarLogCounterSetup, SolarLogInverterSetup
+from modules.devices.solar_log.solar_log.inverter import SolarLogInverter
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/solar_log/inverter.py b/packages/modules/devices/solar_log/solar_log/inverter.py
similarity index 94%
rename from packages/modules/devices/solar_log/inverter.py
rename to packages/modules/devices/solar_log/solar_log/inverter.py
index a610b2dc36..9d25acc713 100644
--- a/packages/modules/devices/solar_log/inverter.py
+++ b/packages/modules/devices/solar_log/solar_log/inverter.py
@@ -7,7 +7,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.solar_log.config import SolarLogInverterSetup
+from modules.devices.solar_log.solar_log.config import SolarLogInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solar_log/vendor.py b/packages/modules/devices/solar_log/vendor.py
new file mode 100644
index 0000000000..d21ee3af56
--- /dev/null
+++ b/packages/modules/devices/solar_log/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Solar-Log"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solar_view/solar_view/__init__.py b/packages/modules/devices/solar_view/solar_view/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/solar_view/api.py b/packages/modules/devices/solar_view/solar_view/api.py
similarity index 100%
rename from packages/modules/devices/solar_view/api.py
rename to packages/modules/devices/solar_view/solar_view/api.py
diff --git a/packages/modules/devices/solar_view/config.py b/packages/modules/devices/solar_view/solar_view/config.py
similarity index 92%
rename from packages/modules/devices/solar_view/config.py
rename to packages/modules/devices/solar_view/solar_view/config.py
index 1c6eecc618..9a3dac03d1 100644
--- a/packages/modules/devices/solar_view/config.py
+++ b/packages/modules/devices/solar_view/solar_view/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -16,11 +16,12 @@ def __init__(self,
 class SolarView:
     def __init__(self,
                  name: str = "SolarView",
-                 type: str = "solar_view",
+                 type: List[str] = ["solar_view", "solar_view"],
                  id: int = 0,
                  configuration: SolarViewConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SolarViewConfiguration()
 
diff --git a/packages/modules/devices/solar_view/counter.py b/packages/modules/devices/solar_view/solar_view/counter.py
similarity index 92%
rename from packages/modules/devices/solar_view/counter.py
rename to packages/modules/devices/solar_view/solar_view/counter.py
index 066c654569..38ee592b34 100644
--- a/packages/modules/devices/solar_view/counter.py
+++ b/packages/modules/devices/solar_view/solar_view/counter.py
@@ -8,8 +8,8 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_counter_value_store
-from modules.devices.solar_view.api import request
-from modules.devices.solar_view.config import SolarViewCounterSetup
+from modules.devices.solar_view.solar_view.api import request
+from modules.devices.solar_view.solar_view.config import SolarViewCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solar_view/device.py b/packages/modules/devices/solar_view/solar_view/device.py
similarity index 79%
rename from packages/modules/devices/solar_view/device.py
rename to packages/modules/devices/solar_view/solar_view/device.py
index f740a72277..0c55b79278 100644
--- a/packages/modules/devices/solar_view/device.py
+++ b/packages/modules/devices/solar_view/solar_view/device.py
@@ -5,11 +5,12 @@
 from helpermodules.cli import run_using_positional_cli_args
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
-from modules.devices.solar_view.counter import SolarViewCounter
-from modules.devices.solar_view.config import (SolarView, SolarViewConfiguration,
-                                               SolarViewCounterSetup,
-                                               SolarViewInverterConfiguration, SolarViewInverterSetup)
-from modules.devices.solar_view.inverter import SolarViewInverter
+from modules.devices.solar_view.solar_view.counter import SolarViewCounter
+from modules.devices.solar_view.solar_view.config import (SolarView, SolarViewConfiguration,
+                                                          SolarViewCounterSetup,
+                                                          SolarViewInverterConfiguration,
+                                                          SolarViewInverterSetup)
+from modules.devices.solar_view.solar_view.inverter import SolarViewInverter
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/solar_view/inverter.py b/packages/modules/devices/solar_view/solar_view/inverter.py
similarity index 89%
rename from packages/modules/devices/solar_view/inverter.py
rename to packages/modules/devices/solar_view/solar_view/inverter.py
index 1c2e539c75..875a61ddee 100644
--- a/packages/modules/devices/solar_view/inverter.py
+++ b/packages/modules/devices/solar_view/solar_view/inverter.py
@@ -8,8 +8,8 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.solar_view.api import request
-from modules.devices.solar_view.config import SolarViewInverterSetup
+from modules.devices.solar_view.solar_view.api import request
+from modules.devices.solar_view.solar_view.config import SolarViewInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solar_view/vendor.py b/packages/modules/devices/solar_view/vendor.py
new file mode 100644
index 0000000000..770c621385
--- /dev/null
+++ b/packages/modules/devices/solar_view/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "SolarView"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solar_watt/solar_watt/__init__.py b/packages/modules/devices/solar_watt/solar_watt/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/solar_watt/api.py b/packages/modules/devices/solar_watt/solar_watt/api.py
similarity index 100%
rename from packages/modules/devices/solar_watt/api.py
rename to packages/modules/devices/solar_watt/solar_watt/api.py
diff --git a/packages/modules/devices/solar_watt/bat.py b/packages/modules/devices/solar_watt/solar_watt/bat.py
similarity index 92%
rename from packages/modules/devices/solar_watt/bat.py
rename to packages/modules/devices/solar_watt/solar_watt/bat.py
index c2619cdf9e..28e84c1132 100644
--- a/packages/modules/devices/solar_watt/bat.py
+++ b/packages/modules/devices/solar_watt/solar_watt/bat.py
@@ -8,8 +8,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.solar_watt.api import parse_value
-from modules.devices.solar_watt.config import SolarWattBatSetup
+from modules.devices.solar_watt.solar_watt.api import parse_value
+from modules.devices.solar_watt.solar_watt.config import SolarWattBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solar_watt/config.py b/packages/modules/devices/solar_watt/solar_watt/config.py
similarity index 94%
rename from packages/modules/devices/solar_watt/config.py
rename to packages/modules/devices/solar_watt/solar_watt/config.py
index a1f622570e..758270fc01 100644
--- a/packages/modules/devices/solar_watt/config.py
+++ b/packages/modules/devices/solar_watt/solar_watt/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, ip_address: Optional[str] = None, energy_manager: bool = True
 class SolarWatt:
     def __init__(self,
                  name: str = "Solarwatt/My Reserve",
-                 type: str = "solar_watt",
+                 type: List[str] = ["solar_watt", "solar_watt"],
                  id: int = 0,
                  configuration: SolarWattConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SolarWattConfiguration()
 
diff --git a/packages/modules/devices/solar_watt/counter.py b/packages/modules/devices/solar_watt/solar_watt/counter.py
similarity index 91%
rename from packages/modules/devices/solar_watt/counter.py
rename to packages/modules/devices/solar_watt/solar_watt/counter.py
index 9b604ec571..4b6a8701d7 100644
--- a/packages/modules/devices/solar_watt/counter.py
+++ b/packages/modules/devices/solar_watt/solar_watt/counter.py
@@ -8,8 +8,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.solar_watt.api import parse_value
-from modules.devices.solar_watt.config import SolarWattCounterSetup
+from modules.devices.solar_watt.solar_watt.api import parse_value
+from modules.devices.solar_watt.solar_watt.config import SolarWattCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solar_watt/device.py b/packages/modules/devices/solar_watt/solar_watt/device.py
similarity index 87%
rename from packages/modules/devices/solar_watt/device.py
rename to packages/modules/devices/solar_watt/solar_watt/device.py
index 6c79cf1fae..7873afaa7d 100644
--- a/packages/modules/devices/solar_watt/device.py
+++ b/packages/modules/devices/solar_watt/solar_watt/device.py
@@ -6,11 +6,13 @@
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.common import req
-from modules.devices.solar_watt.bat import SolarWattBat
-from modules.devices.solar_watt.counter import SolarWattCounter
-from modules.devices.solar_watt.config import (SolarWatt, SolarWattBatSetup, SolarWattConfiguration,
-                                               SolarWattCounterSetup, SolarWattInverterSetup)
-from modules.devices.solar_watt.inverter import SolarWattInverter
+from modules.devices.solar_watt.solar_watt.bat import SolarWattBat
+from modules.devices.solar_watt.solar_watt.counter import SolarWattCounter
+from modules.devices.solar_watt.solar_watt.config import (SolarWatt, SolarWattBatSetup,
+                                                          SolarWattConfiguration,
+                                                          SolarWattCounterSetup,
+                                                          SolarWattInverterSetup)
+from modules.devices.solar_watt.solar_watt.inverter import SolarWattInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solar_watt/inverter.py b/packages/modules/devices/solar_watt/solar_watt/inverter.py
similarity index 90%
rename from packages/modules/devices/solar_watt/inverter.py
rename to packages/modules/devices/solar_watt/solar_watt/inverter.py
index 700ab13cd5..c6c66f0e59 100644
--- a/packages/modules/devices/solar_watt/inverter.py
+++ b/packages/modules/devices/solar_watt/solar_watt/inverter.py
@@ -8,8 +8,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.solar_watt.api import parse_value
-from modules.devices.solar_watt.config import SolarWattInverterSetup
+from modules.devices.solar_watt.solar_watt.api import parse_value
+from modules.devices.solar_watt.solar_watt.config import SolarWattInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solar_watt/vendor.py b/packages/modules/devices/solar_watt/vendor.py
new file mode 100644
index 0000000000..44c0adf946
--- /dev/null
+++ b/packages/modules/devices/solar_watt/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Solarwatt"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solar_world/solar_world/__init__.py b/packages/modules/devices/solar_world/solar_world/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/solar_world/config.py b/packages/modules/devices/solar_world/solar_world/config.py
similarity index 92%
rename from packages/modules/devices/solar_world/config.py
rename to packages/modules/devices/solar_world/solar_world/config.py
index e6fd62cab6..72de0ec21e 100644
--- a/packages/modules/devices/solar_world/config.py
+++ b/packages/modules/devices/solar_world/solar_world/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class SolarWorld:
     def __init__(self,
                  name: str = "SolarWorld",
-                 type: str = "solar_world",
+                 type: List[str] = ["solar_world", "solar_world"],
                  id: int = 0,
                  configuration: SolarWorldConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SolarWorldConfiguration()
 
diff --git a/packages/modules/devices/solar_world/counter.py b/packages/modules/devices/solar_world/solar_world/counter.py
similarity index 94%
rename from packages/modules/devices/solar_world/counter.py
rename to packages/modules/devices/solar_world/solar_world/counter.py
index d8d0d9a77f..7d08276e90 100644
--- a/packages/modules/devices/solar_world/counter.py
+++ b/packages/modules/devices/solar_world/solar_world/counter.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.solar_world.config import SolarWorldCounterSetup
+from modules.devices.solar_world.solar_world.config import SolarWorldCounterSetup
 
 
 class SolarWorldCounter:
diff --git a/packages/modules/devices/solar_world/device.py b/packages/modules/devices/solar_world/solar_world/device.py
similarity index 89%
rename from packages/modules/devices/solar_world/device.py
rename to packages/modules/devices/solar_world/solar_world/device.py
index 227b1ade8f..86469138b6 100644
--- a/packages/modules/devices/solar_world/device.py
+++ b/packages/modules/devices/solar_world/solar_world/device.py
@@ -6,11 +6,11 @@
 from modules.common import req
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
-from modules.devices.solar_world import counter, inverter
-from modules.devices.solar_world.config import (
+from modules.devices.solar_world.solar_world import counter, inverter
+from modules.devices.solar_world.solar_world.config import (
     SolarWorld, SolarWorldConfiguration, SolarWorldCounterSetup, SolarWorldInverterSetup)
-from modules.devices.solar_world.counter import SolarWorldCounter
-from modules.devices.solar_world.inverter import SolarWorldInverter
+from modules.devices.solar_world.solar_world.counter import SolarWorldCounter
+from modules.devices.solar_world.solar_world.inverter import SolarWorldInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solar_world/inverter.py b/packages/modules/devices/solar_world/solar_world/inverter.py
similarity index 94%
rename from packages/modules/devices/solar_world/inverter.py
rename to packages/modules/devices/solar_world/solar_world/inverter.py
index d627dcdc7a..250bf6bbdb 100644
--- a/packages/modules/devices/solar_world/inverter.py
+++ b/packages/modules/devices/solar_world/solar_world/inverter.py
@@ -7,7 +7,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.solar_world.config import SolarWorldInverterSetup
+from modules.devices.solar_world.solar_world.config import SolarWorldInverterSetup
 
 
 class SolarWorldInverter:
diff --git a/packages/modules/devices/solar_world/vendor.py b/packages/modules/devices/solar_world/vendor.py
new file mode 100644
index 0000000000..35108bcd9b
--- /dev/null
+++ b/packages/modules/devices/solar_world/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "SolarWorld"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solaredge/solaredge/__init__.py b/packages/modules/devices/solaredge/solaredge/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/solaredge/bat.py b/packages/modules/devices/solaredge/solaredge/bat.py
similarity index 96%
rename from packages/modules/devices/solaredge/bat.py
rename to packages/modules/devices/solaredge/solaredge/bat.py
index d11d8e50c8..590435b170 100644
--- a/packages/modules/devices/solaredge/bat.py
+++ b/packages/modules/devices/solaredge/solaredge/bat.py
@@ -12,7 +12,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.solaredge.config import SolaredgeBatSetup
+from modules.devices.solaredge.solaredge.config import SolaredgeBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solaredge/config.py b/packages/modules/devices/solaredge/solaredge/config.py
similarity index 96%
rename from packages/modules/devices/solaredge/config.py
rename to packages/modules/devices/solaredge/solaredge/config.py
index e4d7a05cd0..4f2ac1b5d0 100644
--- a/packages/modules/devices/solaredge/config.py
+++ b/packages/modules/devices/solaredge/solaredge/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from typing import List
 
 
 class SolaredgeConfiguration:
@@ -12,11 +13,12 @@ def __init__(self,
 class Solaredge:
     def __init__(self,
                  name: str = "SolarEdge",
-                 type: str = "solaredge",
+                 type: List[str] = ["solaredge", "solaredge"],
                  id: int = 0,
                  configuration:  SolaredgeConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SolaredgeConfiguration()
 
diff --git a/packages/modules/devices/solaredge/counter.py b/packages/modules/devices/solaredge/solaredge/counter.py
similarity index 91%
rename from packages/modules/devices/solaredge/counter.py
rename to packages/modules/devices/solaredge/solaredge/counter.py
index 87067fcf84..8291da5a0b 100644
--- a/packages/modules/devices/solaredge/counter.py
+++ b/packages/modules/devices/solaredge/solaredge/counter.py
@@ -9,9 +9,9 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_counter_value_store
-from modules.devices.solaredge.config import SolaredgeCounterSetup
-from modules.devices.solaredge.scale import create_scaled_reader
-from modules.devices.solaredge.meter import SolaredgeMeterRegisters
+from modules.devices.solaredge.solaredge.config import SolaredgeCounterSetup
+from modules.devices.solaredge.solaredge.scale import create_scaled_reader
+from modules.devices.solaredge.solaredge.meter import SolaredgeMeterRegisters
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solaredge/device.py b/packages/modules/devices/solaredge/solaredge/device.py
similarity index 93%
rename from packages/modules/devices/solaredge/device.py
rename to packages/modules/devices/solaredge/solaredge/device.py
index d1a262063e..b3acd30cbd 100644
--- a/packages/modules/devices/solaredge/device.py
+++ b/packages/modules/devices/solaredge/solaredge/device.py
@@ -14,17 +14,18 @@
 from modules.common.component_state import BatState, InverterState
 from modules.common.fault_state import ComponentInfo
 from modules.common.store import get_inverter_value_store, get_bat_value_store
-from modules.devices.solaredge import bat, counter, external_inverter, inverter
-from modules.devices.solaredge.bat import SolaredgeBat
-from modules.devices.solaredge.counter import SolaredgeCounter
-from modules.devices.solaredge.external_inverter import SolaredgeExternalInverter
-from modules.devices.solaredge.inverter import SolaredgeInverter
-from modules.devices.solaredge.config import (Solaredge, SolaredgeBatConfiguration, SolaredgeBatSetup,
-                                              SolaredgeConfiguration,
-                                              SolaredgeCounterConfiguration, SolaredgeCounterSetup,
-                                              SolaredgeExternalInverterConfiguration, SolaredgeExternalInverterSetup,
-                                              SolaredgeInverterConfiguration, SolaredgeInverterSetup)
-from modules.devices.solaredge.meter import SolaredgeMeterRegisters
+from modules.devices.solaredge.solaredge import bat, counter, external_inverter, inverter
+from modules.devices.solaredge.solaredge.bat import SolaredgeBat
+from modules.devices.solaredge.solaredge.counter import SolaredgeCounter
+from modules.devices.solaredge.solaredge.external_inverter import SolaredgeExternalInverter
+from modules.devices.solaredge.solaredge.inverter import SolaredgeInverter
+from modules.devices.solaredge.solaredge.config import (Solaredge, SolaredgeBatConfiguration, SolaredgeBatSetup,
+                                                        SolaredgeConfiguration,
+                                                        SolaredgeCounterConfiguration, SolaredgeCounterSetup,
+                                                        SolaredgeExternalInverterConfiguration,
+                                                        SolaredgeExternalInverterSetup,
+                                                        SolaredgeInverterConfiguration, SolaredgeInverterSetup)
+from modules.devices.solaredge.solaredge.meter import SolaredgeMeterRegisters
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solaredge/device_test.py b/packages/modules/devices/solaredge/solaredge/device_test.py
similarity index 84%
rename from packages/modules/devices/solaredge/device_test.py
rename to packages/modules/devices/solaredge/solaredge/device_test.py
index 7a1eb5c957..cded2425d1 100644
--- a/packages/modules/devices/solaredge/device_test.py
+++ b/packages/modules/devices/solaredge/solaredge/device_test.py
@@ -3,11 +3,11 @@
 
 import pytest
 
-from modules.devices.solaredge import device
-from modules.devices.solaredge.bat import SolaredgeBat
-from modules.devices.solaredge.counter import SolaredgeCounter
-from modules.devices.solaredge.external_inverter import SolaredgeExternalInverter
-from modules.devices.solaredge.inverter import SolaredgeInverter
+from modules.devices.solaredge.solaredge import device
+from modules.devices.solaredge.solaredge.bat import SolaredgeBat
+from modules.devices.solaredge.solaredge.counter import SolaredgeCounter
+from modules.devices.solaredge.solaredge.external_inverter import SolaredgeExternalInverter
+from modules.devices.solaredge.solaredge.inverter import SolaredgeInverter
 
 
 Params = NamedTuple("Params", [("configured_meter_ids", List[int]), ("effective_meter_ids", List[int])])
diff --git a/packages/modules/devices/solaredge/external_inverter.py b/packages/modules/devices/solaredge/solaredge/external_inverter.py
similarity index 89%
rename from packages/modules/devices/solaredge/external_inverter.py
rename to packages/modules/devices/solaredge/solaredge/external_inverter.py
index 838efe486e..10276581bf 100644
--- a/packages/modules/devices/solaredge/external_inverter.py
+++ b/packages/modules/devices/solaredge/solaredge/external_inverter.py
@@ -9,9 +9,9 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_inverter_value_store
-from modules.devices.solaredge.config import SolaredgeExternalInverterSetup
-from modules.devices.solaredge.scale import create_scaled_reader
-from modules.devices.solaredge.meter import SolaredgeMeterRegisters
+from modules.devices.solaredge.solaredge.config import SolaredgeExternalInverterSetup
+from modules.devices.solaredge.solaredge.scale import create_scaled_reader
+from modules.devices.solaredge.solaredge.meter import SolaredgeMeterRegisters
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solaredge/inverter.py b/packages/modules/devices/solaredge/solaredge/inverter.py
similarity index 94%
rename from packages/modules/devices/solaredge/inverter.py
rename to packages/modules/devices/solaredge/solaredge/inverter.py
index efa0204067..f41bcb8610 100644
--- a/packages/modules/devices/solaredge/inverter.py
+++ b/packages/modules/devices/solaredge/solaredge/inverter.py
@@ -8,8 +8,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_inverter_value_store
-from modules.devices.solaredge.config import SolaredgeInverterSetup
-from modules.devices.solaredge.scale import create_scaled_reader
+from modules.devices.solaredge.solaredge.config import SolaredgeInverterSetup
+from modules.devices.solaredge.solaredge.scale import create_scaled_reader
 
 
 class SolaredgeInverter:
diff --git a/packages/modules/devices/solaredge/inverter_test.py b/packages/modules/devices/solaredge/solaredge/inverter_test.py
similarity index 83%
rename from packages/modules/devices/solaredge/inverter_test.py
rename to packages/modules/devices/solaredge/solaredge/inverter_test.py
index 0cf477fd61..6fc88254ec 100644
--- a/packages/modules/devices/solaredge/inverter_test.py
+++ b/packages/modules/devices/solaredge/solaredge/inverter_test.py
@@ -3,8 +3,8 @@
 from modules.common.component_state import InverterState
 from modules.common.modbus import ModbusTcpClient_
 
-from modules.devices.solaredge.config import SolaredgeInverterSetup
-from modules.devices.solaredge.inverter import SolaredgeInverter
+from modules.devices.solaredge.solaredge.config import SolaredgeInverterSetup
+from modules.devices.solaredge.solaredge.inverter import SolaredgeInverter
 
 
 def test_read_state():
diff --git a/packages/modules/devices/solaredge/meter.py b/packages/modules/devices/solaredge/solaredge/meter.py
similarity index 100%
rename from packages/modules/devices/solaredge/meter.py
rename to packages/modules/devices/solaredge/solaredge/meter.py
diff --git a/packages/modules/devices/solaredge/meter_test.py b/packages/modules/devices/solaredge/solaredge/meter_test.py
similarity index 92%
rename from packages/modules/devices/solaredge/meter_test.py
rename to packages/modules/devices/solaredge/solaredge/meter_test.py
index 015c46aa74..72a1aa4dae 100644
--- a/packages/modules/devices/solaredge/meter_test.py
+++ b/packages/modules/devices/solaredge/solaredge/meter_test.py
@@ -1,7 +1,7 @@
 from typing import NamedTuple
 import pytest
 
-from modules.devices.solaredge.meter import SolaredgeMeterRegisters
+from modules.devices.solaredge.solaredge.meter import SolaredgeMeterRegisters
 
 
 Params = NamedTuple("Params", [("meter_id", int),
diff --git a/packages/modules/devices/solaredge/scale.py b/packages/modules/devices/solaredge/solaredge/scale.py
similarity index 100%
rename from packages/modules/devices/solaredge/scale.py
rename to packages/modules/devices/solaredge/solaredge/scale.py
diff --git a/packages/modules/devices/solaredge/vendor.py b/packages/modules/devices/solaredge/vendor.py
new file mode 100644
index 0000000000..3208c9beb3
--- /dev/null
+++ b/packages/modules/devices/solaredge/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "SolarEdge"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solarmax/solarmax/__init__.py b/packages/modules/devices/solarmax/solarmax/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/solarmax/bat.py b/packages/modules/devices/solarmax/solarmax/bat.py
similarity index 95%
rename from packages/modules/devices/solarmax/bat.py
rename to packages/modules/devices/solarmax/solarmax/bat.py
index 9d1d3cb9a8..a3e2a4a816 100644
--- a/packages/modules/devices/solarmax/bat.py
+++ b/packages/modules/devices/solarmax/solarmax/bat.py
@@ -6,7 +6,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.solarmax.config import SolarmaxBatSetup
+from modules.devices.solarmax.solarmax.config import SolarmaxBatSetup
 
 
 class SolarmaxBat:
diff --git a/packages/modules/devices/solarmax/config.py b/packages/modules/devices/solarmax/solarmax/config.py
similarity index 92%
rename from packages/modules/devices/solarmax/config.py
rename to packages/modules/devices/solarmax/solarmax/config.py
index 70f6c90abc..5a6a2df106 100644
--- a/packages/modules/devices/solarmax/config.py
+++ b/packages/modules/devices/solarmax/solarmax/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class Solarmax:
     def __init__(self,
                  name: str = "Solarmax",
-                 type: str = "solarmax",
+                 type: List[str] = ["solarmax", "solarmax"],
                  id: int = 0,
                  configuration: SolarmaxConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SolarmaxConfiguration()
 
diff --git a/packages/modules/devices/solarmax/device.py b/packages/modules/devices/solarmax/solarmax/device.py
similarity index 90%
rename from packages/modules/devices/solarmax/device.py
rename to packages/modules/devices/solarmax/solarmax/device.py
index fe857649f3..2a71a6ba04 100644
--- a/packages/modules/devices/solarmax/device.py
+++ b/packages/modules/devices/solarmax/solarmax/device.py
@@ -7,9 +7,10 @@
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
-from modules.devices.solarmax import inverter
-from modules.devices.solarmax.bat import SolarmaxBat
-from modules.devices.solarmax.config import Solarmax, SolarmaxBatSetup, SolarmaxConfiguration, SolarmaxInverterSetup
+from modules.devices.solarmax.solarmax import inverter
+from modules.devices.solarmax.solarmax.bat import SolarmaxBat
+from modules.devices.solarmax.solarmax.config import (
+    Solarmax, SolarmaxBatSetup, SolarmaxConfiguration, SolarmaxInverterSetup)
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solarmax/inverter.py b/packages/modules/devices/solarmax/solarmax/inverter.py
similarity index 95%
rename from packages/modules/devices/solarmax/inverter.py
rename to packages/modules/devices/solarmax/solarmax/inverter.py
index 9b2d1ffa34..15ce52a727 100644
--- a/packages/modules/devices/solarmax/inverter.py
+++ b/packages/modules/devices/solarmax/solarmax/inverter.py
@@ -8,7 +8,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.solarmax.config import SolarmaxInverterSetup
+from modules.devices.solarmax.solarmax.config import SolarmaxInverterSetup
 
 
 class SolarmaxInverter:
diff --git a/packages/modules/devices/solarmax/vendor.py b/packages/modules/devices/solarmax/vendor.py
new file mode 100644
index 0000000000..661c2ea98b
--- /dev/null
+++ b/packages/modules/devices/solarmax/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Solarmax"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solax/solax/__init__.py b/packages/modules/devices/solax/solax/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/solax/bat.py b/packages/modules/devices/solax/solax/bat.py
similarity index 96%
rename from packages/modules/devices/solax/bat.py
rename to packages/modules/devices/solax/solax/bat.py
index ae5f73cdab..6e5917dec2 100644
--- a/packages/modules/devices/solax/bat.py
+++ b/packages/modules/devices/solax/solax/bat.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.solax.config import SolaxBatSetup
+from modules.devices.solax.solax.config import SolaxBatSetup
 
 
 class SolaxBat:
diff --git a/packages/modules/devices/solax/config.py b/packages/modules/devices/solax/solax/config.py
similarity index 94%
rename from packages/modules/devices/solax/config.py
rename to packages/modules/devices/solax/solax/config.py
index 60e31b7aed..cca45dace5 100644
--- a/packages/modules/devices/solax/config.py
+++ b/packages/modules/devices/solax/solax/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Solax:
     def __init__(self,
                  name: str = "Solax",
-                 type: str = "solax",
+                 type: List[str] = ["solax", "solax"],
                  id: int = 0,
                  configuration: SolaxConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SolaxConfiguration()
 
diff --git a/packages/modules/devices/solax/counter.py b/packages/modules/devices/solax/solax/counter.py
similarity index 97%
rename from packages/modules/devices/solax/counter.py
rename to packages/modules/devices/solax/solax/counter.py
index 49e5ba1bd1..65acbdf2ec 100644
--- a/packages/modules/devices/solax/counter.py
+++ b/packages/modules/devices/solax/solax/counter.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_counter_value_store
-from modules.devices.solax.config import SolaxCounterSetup
+from modules.devices.solax.solax.config import SolaxCounterSetup
 
 
 class SolaxCounter:
diff --git a/packages/modules/devices/solax/device.py b/packages/modules/devices/solax/solax/device.py
similarity index 93%
rename from packages/modules/devices/solax/device.py
rename to packages/modules/devices/solax/solax/device.py
index 4e8cd05c07..5c189ceb04 100644
--- a/packages/modules/devices/solax/device.py
+++ b/packages/modules/devices/solax/solax/device.py
@@ -7,10 +7,10 @@
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.solax import bat
-from modules.devices.solax import counter
-from modules.devices.solax import inverter
-from modules.devices.solax.config import Solax, SolaxBatSetup, SolaxCounterSetup, SolaxInverterSetup
+from modules.devices.solax.solax import bat
+from modules.devices.solax.solax import counter
+from modules.devices.solax.solax import inverter
+from modules.devices.solax.solax.config import Solax, SolaxBatSetup, SolaxCounterSetup, SolaxInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solax/inverter.py b/packages/modules/devices/solax/solax/inverter.py
similarity index 96%
rename from packages/modules/devices/solax/inverter.py
rename to packages/modules/devices/solax/solax/inverter.py
index 02fc17382f..6050b0fb9b 100644
--- a/packages/modules/devices/solax/inverter.py
+++ b/packages/modules/devices/solax/solax/inverter.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_inverter_value_store
-from modules.devices.solax.config import SolaxInverterSetup
+from modules.devices.solax.solax.config import SolaxInverterSetup
 
 
 class SolaxInverter:
diff --git a/packages/modules/devices/solax/vendor.py b/packages/modules/devices/solax/vendor.py
new file mode 100644
index 0000000000..c7819717ac
--- /dev/null
+++ b/packages/modules/devices/solax/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Solax"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sonnenbatterie/sonnenbatterie/__init__.py b/packages/modules/devices/sonnenbatterie/sonnenbatterie/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/sonnenbatterie/bat.py b/packages/modules/devices/sonnenbatterie/sonnenbatterie/bat.py
similarity index 98%
rename from packages/modules/devices/sonnenbatterie/bat.py
rename to packages/modules/devices/sonnenbatterie/sonnenbatterie/bat.py
index f7549dfe6e..c1d809606f 100644
--- a/packages/modules/devices/sonnenbatterie/bat.py
+++ b/packages/modules/devices/sonnenbatterie/sonnenbatterie/bat.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.sonnenbatterie.config import SonnenbatterieBatSetup
+from modules.devices.sonnenbatterie.sonnenbatterie.config import SonnenbatterieBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sonnenbatterie/config.py b/packages/modules/devices/sonnenbatterie/sonnenbatterie/config.py
similarity index 91%
rename from packages/modules/devices/sonnenbatterie/config.py
rename to packages/modules/devices/sonnenbatterie/sonnenbatterie/config.py
index 15b206b7f3..87494da456 100644
--- a/packages/modules/devices/sonnenbatterie/config.py
+++ b/packages/modules/devices/sonnenbatterie/sonnenbatterie/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -11,12 +11,13 @@ def __init__(self, variant: int = 0, ip_address: Optional[str] = None):
 
 class SonnenBatterie:
     def __init__(self,
-                 name: str = "SonnenBatterie",
-                 type: str = "sonnenbatterie",
+                 name: str = "Sonnenbatterie",
+                 type: List[str] = ["sonnenbatterie", "sonnenbatterie"],
                  id: int = 0,
                  configuration: SonnenBatterieConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SonnenBatterieConfiguration()
 
diff --git a/packages/modules/devices/sonnenbatterie/counter.py b/packages/modules/devices/sonnenbatterie/sonnenbatterie/counter.py
similarity index 98%
rename from packages/modules/devices/sonnenbatterie/counter.py
rename to packages/modules/devices/sonnenbatterie/sonnenbatterie/counter.py
index 387e48a72f..d0c2f1c510 100644
--- a/packages/modules/devices/sonnenbatterie/counter.py
+++ b/packages/modules/devices/sonnenbatterie/sonnenbatterie/counter.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.sonnenbatterie.config import SonnenbatterieCounterSetup
+from modules.devices.sonnenbatterie.sonnenbatterie.config import SonnenbatterieCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sonnenbatterie/device.py b/packages/modules/devices/sonnenbatterie/sonnenbatterie/device.py
similarity index 91%
rename from packages/modules/devices/sonnenbatterie/device.py
rename to packages/modules/devices/sonnenbatterie/sonnenbatterie/device.py
index 209b2ce19d..46d27c21e1 100644
--- a/packages/modules/devices/sonnenbatterie/device.py
+++ b/packages/modules/devices/sonnenbatterie/sonnenbatterie/device.py
@@ -8,9 +8,10 @@
 from helpermodules.cli import run_using_positional_cli_args
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.sonnenbatterie import bat, counter, inverter
-from modules.devices.sonnenbatterie.config import (SonnenBatterie, SonnenbatterieBatSetup, SonnenbatterieCounterSetup,
-                                                   SonnenbatterieInverterSetup)
+from modules.devices.sonnenbatterie.sonnenbatterie import bat, counter, inverter
+from modules.devices.sonnenbatterie.sonnenbatterie.config import (SonnenBatterie, SonnenbatterieBatSetup,
+                                                                  SonnenbatterieCounterSetup,
+                                                                  SonnenbatterieInverterSetup)
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/sonnenbatterie/inverter.py b/packages/modules/devices/sonnenbatterie/sonnenbatterie/inverter.py
similarity index 97%
rename from packages/modules/devices/sonnenbatterie/inverter.py
rename to packages/modules/devices/sonnenbatterie/sonnenbatterie/inverter.py
index 11f01f85ff..30aeeda251 100644
--- a/packages/modules/devices/sonnenbatterie/inverter.py
+++ b/packages/modules/devices/sonnenbatterie/sonnenbatterie/inverter.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.sonnenbatterie.config import SonnenbatterieInverterSetup
+from modules.devices.sonnenbatterie.sonnenbatterie.config import SonnenbatterieInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sonnenbatterie/vendor.py b/packages/modules/devices/sonnenbatterie/vendor.py
new file mode 100644
index 0000000000..fb30d27124
--- /dev/null
+++ b/packages/modules/devices/sonnenbatterie/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Sonnenbatterie"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/studer/studer/__init__.py b/packages/modules/devices/studer/studer/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/studer/bat.py b/packages/modules/devices/studer/studer/bat.py
similarity index 96%
rename from packages/modules/devices/studer/bat.py
rename to packages/modules/devices/studer/studer/bat.py
index 04741a99b1..beedb0a928 100644
--- a/packages/modules/devices/studer/bat.py
+++ b/packages/modules/devices/studer/studer/bat.py
@@ -8,7 +8,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_bat_value_store
-from modules.devices.studer.config import StuderBatSetup
+from modules.devices.studer.studer.config import StuderBatSetup
 
 
 class StuderBat:
diff --git a/packages/modules/devices/studer/config.py b/packages/modules/devices/studer/studer/config.py
similarity index 93%
rename from packages/modules/devices/studer/config.py
rename to packages/modules/devices/studer/studer/config.py
index ce7d26fef4..50dda32ac9 100644
--- a/packages/modules/devices/studer/config.py
+++ b/packages/modules/devices/studer/studer/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class Studer:
     def __init__(self,
                  name: str = "Studer",
-                 type: str = "studer",
+                 type: List[str] = ["studer", "studer"],
                  id: int = 0,
                  configuration: StuderConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or StuderConfiguration()
 
diff --git a/packages/modules/devices/studer/device.py b/packages/modules/devices/studer/studer/device.py
similarity index 94%
rename from packages/modules/devices/studer/device.py
rename to packages/modules/devices/studer/studer/device.py
index baa3b92273..0ca412a371 100644
--- a/packages/modules/devices/studer/device.py
+++ b/packages/modules/devices/studer/studer/device.py
@@ -9,9 +9,10 @@
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.studer import bat
-from modules.devices.studer import inverter
-from modules.devices.studer.config import Studer, StuderBatSetup, StuderInverterConfiguration, StuderInverterSetup
+from modules.devices.studer.studer import bat
+from modules.devices.studer.studer import inverter
+from modules.devices.studer.studer.config import (
+    Studer, StuderBatSetup, StuderInverterConfiguration, StuderInverterSetup)
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/studer/inverter.py b/packages/modules/devices/studer/studer/inverter.py
similarity index 97%
rename from packages/modules/devices/studer/inverter.py
rename to packages/modules/devices/studer/studer/inverter.py
index 3ba0362fe2..ff207aebcb 100644
--- a/packages/modules/devices/studer/inverter.py
+++ b/packages/modules/devices/studer/studer/inverter.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType
 from modules.common.store import get_inverter_value_store
-from modules.devices.studer.config import StuderInverterSetup
+from modules.devices.studer.studer.config import StuderInverterSetup
 
 
 class StuderInverter:
diff --git a/packages/modules/devices/studer/vendor.py b/packages/modules/devices/studer/vendor.py
new file mode 100644
index 0000000000..2909039cdb
--- /dev/null
+++ b/packages/modules/devices/studer/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Studer innotec"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sungrow/sungrow/__init__.py b/packages/modules/devices/sungrow/sungrow/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/sungrow/bat.py b/packages/modules/devices/sungrow/sungrow/bat.py
similarity index 96%
rename from packages/modules/devices/sungrow/bat.py
rename to packages/modules/devices/sungrow/sungrow/bat.py
index dc579b7ebb..3b73669906 100644
--- a/packages/modules/devices/sungrow/bat.py
+++ b/packages/modules/devices/sungrow/sungrow/bat.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.sungrow.config import SungrowBatSetup, Sungrow
+from modules.devices.sungrow.sungrow.config import SungrowBatSetup, Sungrow
 
 
 class SungrowBat:
diff --git a/packages/modules/devices/sungrow/config.py b/packages/modules/devices/sungrow/sungrow/config.py
similarity index 91%
rename from packages/modules/devices/sungrow/config.py
rename to packages/modules/devices/sungrow/sungrow/config.py
index 2d9adfab4b..473e4de5ae 100644
--- a/packages/modules/devices/sungrow/config.py
+++ b/packages/modules/devices/sungrow/sungrow/config.py
@@ -1,7 +1,7 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
-from modules.devices.sungrow.version import Version
+from modules.devices.sungrow.sungrow.version import Version
 
 
 class SungrowConfiguration:
@@ -19,11 +19,12 @@ def __init__(self,
 class Sungrow:
     def __init__(self,
                  name: str = "Sungrow",
-                 type: str = "sungrow",
+                 type: List[str] = ["sungrow", "sungrow"],
                  id: int = 0,
                  configuration: SungrowConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SungrowConfiguration()
 
diff --git a/packages/modules/devices/sungrow/counter.py b/packages/modules/devices/sungrow/sungrow/counter.py
similarity index 96%
rename from packages/modules/devices/sungrow/counter.py
rename to packages/modules/devices/sungrow/sungrow/counter.py
index 04d20a10ae..87f02c2df5 100644
--- a/packages/modules/devices/sungrow/counter.py
+++ b/packages/modules/devices/sungrow/sungrow/counter.py
@@ -9,8 +9,8 @@
 from modules.common.modbus import ModbusDataType, Endian
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.sungrow.config import SungrowCounterSetup, Sungrow
-from modules.devices.sungrow.version import Version
+from modules.devices.sungrow.sungrow.config import SungrowCounterSetup, Sungrow
+from modules.devices.sungrow.sungrow.version import Version
 
 
 class SungrowCounter:
diff --git a/packages/modules/devices/sungrow/device.py b/packages/modules/devices/sungrow/sungrow/device.py
similarity index 91%
rename from packages/modules/devices/sungrow/device.py
rename to packages/modules/devices/sungrow/sungrow/device.py
index 8b24a09e32..1c647c1f4e 100644
--- a/packages/modules/devices/sungrow/device.py
+++ b/packages/modules/devices/sungrow/sungrow/device.py
@@ -7,12 +7,13 @@
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import MultiComponentUpdateContext
-from modules.devices.sungrow import bat
-from modules.devices.sungrow import counter
-from modules.devices.sungrow import inverter
-from modules.devices.sungrow.config import (Sungrow, SungrowBatSetup, SungrowCounterConfiguration, SungrowCounterSetup,
-                                            SungrowInverterSetup)
-from modules.devices.sungrow.version import Version
+from modules.devices.sungrow.sungrow import bat
+from modules.devices.sungrow.sungrow import counter
+from modules.devices.sungrow.sungrow import inverter
+from modules.devices.sungrow.sungrow.config import (Sungrow, SungrowBatSetup, SungrowCounterConfiguration,
+                                                    SungrowCounterSetup,
+                                                    SungrowInverterSetup)
+from modules.devices.sungrow.sungrow.version import Version
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sungrow/inverter.py b/packages/modules/devices/sungrow/sungrow/inverter.py
similarity index 93%
rename from packages/modules/devices/sungrow/inverter.py
rename to packages/modules/devices/sungrow/sungrow/inverter.py
index 23199f9cf4..4f47b21d15 100644
--- a/packages/modules/devices/sungrow/inverter.py
+++ b/packages/modules/devices/sungrow/sungrow/inverter.py
@@ -9,8 +9,8 @@
 from modules.common.modbus import ModbusDataType, Endian
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.sungrow.config import SungrowInverterSetup, Sungrow
-from modules.devices.sungrow.version import Version
+from modules.devices.sungrow.sungrow.config import SungrowInverterSetup, Sungrow
+from modules.devices.sungrow.sungrow.version import Version
 
 
 class SungrowInverter:
diff --git a/packages/modules/devices/sungrow/modbus.md b/packages/modules/devices/sungrow/sungrow/modbus.md
similarity index 99%
rename from packages/modules/devices/sungrow/modbus.md
rename to packages/modules/devices/sungrow/sungrow/modbus.md
index 35a07e588b..d8bf7b210a 100644
--- a/packages/modules/devices/sungrow/modbus.md
+++ b/packages/modules/devices/sungrow/sungrow/modbus.md
@@ -39,4 +39,4 @@
 | Meter: AC Spannung Phase C          | 5742   | --       | --            | 0.1 V   | UINT_16 little |                                                                  |
 | Meter: AC Strom Phase A             | 5743   | --       | --            | 0.01 A  | UINT_16 little | Immer positiv, auch bei Einspeisung                              |
 | Meter: AC Strom Phase B             | 5744   | --       | --            | 0.01 A  | UINT_16 little | Immer positiv, auch bei Einspeisung                              |
-| Meter: AC Strom Phase C             | 5745   | --       | --            | 0.01 A  | UINT_16 little | Immer positiv, auch bei Einspeisung                              |
+| Meter: AC Strom Phase C             | 5745   | --       | --            | 0.01 A  | UINT_16 little | Immer positiv, auch bei Einspeisung                              |
\ No newline at end of file
diff --git a/packages/modules/devices/sungrow/version.py b/packages/modules/devices/sungrow/sungrow/version.py
similarity index 100%
rename from packages/modules/devices/sungrow/version.py
rename to packages/modules/devices/sungrow/sungrow/version.py
diff --git a/packages/modules/devices/sungrow/vendor.py b/packages/modules/devices/sungrow/vendor.py
new file mode 100644
index 0000000000..273e98e535
--- /dev/null
+++ b/packages/modules/devices/sungrow/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Sungrow"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sunways/sunways/__init__.py b/packages/modules/devices/sunways/sunways/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/sunways/config.py b/packages/modules/devices/sunways/sunways/config.py
similarity index 89%
rename from packages/modules/devices/sunways/config.py
rename to packages/modules/devices/sunways/sunways/config.py
index 27c48195de..7e1ba667b6 100644
--- a/packages/modules/devices/sunways/config.py
+++ b/packages/modules/devices/sunways/sunways/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, password: Optional[str] = None, ip_address: Optional[str] = N
 class Sunways:
     def __init__(self,
                  name: str = "Sunways",
-                 type: str = "sunways",
+                 type: List[str] = ["sunways", "sunways"],
                  id: int = 0,
                  configuration: SunwaysConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or SunwaysConfiguration()
 
diff --git a/packages/modules/devices/sunways/device.py b/packages/modules/devices/sunways/sunways/device.py
similarity index 96%
rename from packages/modules/devices/sunways/device.py
rename to packages/modules/devices/sunways/sunways/device.py
index 2e7b9c4e7a..bb0f07f599 100644
--- a/packages/modules/devices/sunways/device.py
+++ b/packages/modules/devices/sunways/sunways/device.py
@@ -6,8 +6,8 @@
 from helpermodules.cli import run_using_positional_cli_args
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.sunways import inverter
-from modules.devices.sunways.config import Sunways, SunwaysInverterSetup
+from modules.devices.sunways.sunways import inverter
+from modules.devices.sunways.sunways.config import Sunways, SunwaysInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sunways/inverter.py b/packages/modules/devices/sunways/sunways/inverter.py
similarity index 96%
rename from packages/modules/devices/sunways/inverter.py
rename to packages/modules/devices/sunways/sunways/inverter.py
index 3f5a49c7db..330163b30f 100644
--- a/packages/modules/devices/sunways/inverter.py
+++ b/packages/modules/devices/sunways/sunways/inverter.py
@@ -8,7 +8,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.sunways.config import SunwaysInverterSetup
+from modules.devices.sunways.sunways.config import SunwaysInverterSetup
 
 """Example Output for ajax.txt
 109 W;103 W;111 VA;41 var;333.8;223.2;0.3;0.5;109.0;103.0;---;---;0.93 c;1.60;105.2;190.2;55342.2;132;0;0;NT 5000;1;
diff --git a/packages/modules/devices/sunways/vendor.py b/packages/modules/devices/sunways/vendor.py
new file mode 100644
index 0000000000..3ad9fa3645
--- /dev/null
+++ b/packages/modules/devices/sunways/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Sunways"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/tasmota/tasmota/__init__.py b/packages/modules/devices/tasmota/tasmota/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/tasmota/config.py b/packages/modules/devices/tasmota/tasmota/config.py
similarity index 89%
rename from packages/modules/devices/tasmota/config.py
rename to packages/modules/devices/tasmota/tasmota/config.py
index 866b92e4db..260cabe7e2 100644
--- a/packages/modules/devices/tasmota/config.py
+++ b/packages/modules/devices/tasmota/tasmota/config.py
@@ -1,5 +1,5 @@
 from modules.common.component_setup import ComponentSetup
-from typing import Optional
+from typing import Optional, List
 
 
 class TasmotaConfiguration:
@@ -11,11 +11,12 @@ def __init__(self, ip_address: Optional[str] = None, phase: int = 1):
 class Tasmota:
     def __init__(self,
                  name: str = "Tasmota",
-                 type: str = "tasmota",
+                 type: List[str] = ["tasmota", "tasmota"],
                  id: int = 0,
                  configuration: TasmotaConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or TasmotaConfiguration()
 
diff --git a/packages/modules/devices/tasmota/counter.py b/packages/modules/devices/tasmota/tasmota/counter.py
similarity index 95%
rename from packages/modules/devices/tasmota/counter.py
rename to packages/modules/devices/tasmota/tasmota/counter.py
index 2dda965f90..2f372fcf1d 100644
--- a/packages/modules/devices/tasmota/counter.py
+++ b/packages/modules/devices/tasmota/tasmota/counter.py
@@ -3,7 +3,7 @@
 import logging
 
 from dataclass_utils import dataclass_from_dict
-from modules.devices.tasmota.config import TasmotaCounterSetup
+from modules.devices.tasmota.tasmota.config import TasmotaCounterSetup
 from modules.common.tasmota import Tasmota
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
diff --git a/packages/modules/devices/tasmota/device.py b/packages/modules/devices/tasmota/tasmota/device.py
similarity index 96%
rename from packages/modules/devices/tasmota/device.py
rename to packages/modules/devices/tasmota/tasmota/device.py
index 645bd01c94..7c014d5262 100644
--- a/packages/modules/devices/tasmota/device.py
+++ b/packages/modules/devices/tasmota/tasmota/device.py
@@ -4,8 +4,8 @@
 
 from dataclass_utils import dataclass_from_dict
 from helpermodules.cli import run_using_positional_cli_args
-from modules.devices.tasmota import counter
-from modules.devices.tasmota.config import Tasmota, TasmotaCounterSetup
+from modules.devices.tasmota.tasmota import counter
+from modules.devices.tasmota.tasmota.config import Tasmota, TasmotaCounterSetup
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
 
@@ -57,7 +57,7 @@ def update(self) -> None:
 
 COMPONENT_TYPE_TO_MODULE = {
     "counter": counter
-    }
+}
 
 
 def read_legacy(component_type: str, ip_address: str, phase: str, num: Optional[int] = None) -> None:
diff --git a/packages/modules/devices/tasmota/vendor.py b/packages/modules/devices/tasmota/vendor.py
new file mode 100644
index 0000000000..075393bc53
--- /dev/null
+++ b/packages/modules/devices/tasmota/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Tasmota"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/tesla/tesla/__init__.py b/packages/modules/devices/tesla/tesla/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/tesla/bat.py b/packages/modules/devices/tesla/tesla/bat.py
similarity index 89%
rename from packages/modules/devices/tesla/bat.py
rename to packages/modules/devices/tesla/tesla/bat.py
index 67fffc64ba..a7f4449ccf 100644
--- a/packages/modules/devices/tesla/bat.py
+++ b/packages/modules/devices/tesla/tesla/bat.py
@@ -6,8 +6,8 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_bat_value_store
-from modules.devices.tesla.http_client import PowerwallHttpClient
-from modules.devices.tesla.config import TeslaBatSetup
+from modules.devices.tesla.tesla.http_client import PowerwallHttpClient
+from modules.devices.tesla.tesla.config import TeslaBatSetup
 
 
 class TeslaBat:
diff --git a/packages/modules/devices/tesla/config.py b/packages/modules/devices/tesla/tesla/config.py
similarity index 94%
rename from packages/modules/devices/tesla/config.py
rename to packages/modules/devices/tesla/tesla/config.py
index 4c802bedf9..fc58ed2c46 100644
--- a/packages/modules/devices/tesla/config.py
+++ b/packages/modules/devices/tesla/tesla/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, password: Optional[str] = None, email: Optional[str] = None,
 class Tesla:
     def __init__(self,
                  name: str = "Tesla",
-                 type: str = "tesla",
+                 type: List[str] = ["tesla", "tesla"],
                  id: int = 0,
                  configuration: TeslaConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or TeslaConfiguration()
 
diff --git a/packages/modules/devices/tesla/counter.py b/packages/modules/devices/tesla/tesla/counter.py
similarity index 94%
rename from packages/modules/devices/tesla/counter.py
rename to packages/modules/devices/tesla/tesla/counter.py
index a690a69da5..49bd62e70d 100644
--- a/packages/modules/devices/tesla/counter.py
+++ b/packages/modules/devices/tesla/tesla/counter.py
@@ -8,8 +8,8 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_counter_value_store
-from modules.devices.tesla.config import TeslaCounterSetup
-from modules.devices.tesla.http_client import PowerwallHttpClient
+from modules.devices.tesla.tesla.config import TeslaCounterSetup
+from modules.devices.tesla.tesla.http_client import PowerwallHttpClient
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/tesla/device.py b/packages/modules/devices/tesla/tesla/device.py
similarity index 96%
rename from packages/modules/devices/tesla/device.py
rename to packages/modules/devices/tesla/tesla/device.py
index 9c360e34f6..671dc7ea9d 100644
--- a/packages/modules/devices/tesla/device.py
+++ b/packages/modules/devices/tesla/tesla/device.py
@@ -12,9 +12,9 @@
 from modules.common.component_context import MultiComponentUpdateContext
 from modules.common.req import get_http_session
 from modules.common.store import RAMDISK_PATH
-from modules.devices.tesla import bat, counter, inverter
-from modules.devices.tesla.config import Tesla, TeslaBatSetup, TeslaCounterSetup, TeslaInverterSetup
-from modules.devices.tesla.http_client import PowerwallHttpClient
+from modules.devices.tesla.tesla import bat, counter, inverter
+from modules.devices.tesla.tesla.config import Tesla, TeslaBatSetup, TeslaCounterSetup, TeslaInverterSetup
+from modules.devices.tesla.tesla.http_client import PowerwallHttpClient
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/tesla/http_client.py b/packages/modules/devices/tesla/tesla/http_client.py
similarity index 100%
rename from packages/modules/devices/tesla/http_client.py
rename to packages/modules/devices/tesla/tesla/http_client.py
diff --git a/packages/modules/devices/tesla/inverter.py b/packages/modules/devices/tesla/tesla/inverter.py
similarity index 88%
rename from packages/modules/devices/tesla/inverter.py
rename to packages/modules/devices/tesla/tesla/inverter.py
index c78dc78cb2..ab5e97227e 100644
--- a/packages/modules/devices/tesla/inverter.py
+++ b/packages/modules/devices/tesla/tesla/inverter.py
@@ -6,8 +6,8 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.tesla.http_client import PowerwallHttpClient
-from modules.devices.tesla.config import TeslaInverterSetup
+from modules.devices.tesla.tesla.http_client import PowerwallHttpClient
+from modules.devices.tesla.tesla.config import TeslaInverterSetup
 
 
 class TeslaInverter:
diff --git a/packages/modules/devices/tesla/tesla.php b/packages/modules/devices/tesla/tesla/tesla.php
similarity index 100%
rename from packages/modules/devices/tesla/tesla.php
rename to packages/modules/devices/tesla/tesla/tesla.php
diff --git a/packages/modules/devices/tesla/tesla_test.py b/packages/modules/devices/tesla/tesla/tesla_test.py
similarity index 97%
rename from packages/modules/devices/tesla/tesla_test.py
rename to packages/modules/devices/tesla/tesla/tesla_test.py
index 690c6b1aaf..36d7ef57ec 100644
--- a/packages/modules/devices/tesla/tesla_test.py
+++ b/packages/modules/devices/tesla/tesla/tesla_test.py
@@ -5,10 +5,10 @@
 import requests
 import requests_mock
 
-from modules.devices.tesla import bat
-from modules.devices.tesla.device import Device, Tesla
+from modules.devices.tesla.tesla import bat
+from modules.devices.tesla.tesla.device import Device, Tesla
 from modules.common.component_state import BatState
-from modules.devices.tesla.config import TeslaConfiguration
+from modules.devices.tesla.tesla.config import TeslaConfiguration
 from test_utils.mock_ramdisk import MockRamdisk
 
 sample_soe_json = """{"percentage":69.16}"""
diff --git a/packages/modules/devices/tesla/vendor.py b/packages/modules/devices/tesla/vendor.py
new file mode 100644
index 0000000000..7d3d3a9d7c
--- /dev/null
+++ b/packages/modules/devices/tesla/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Tesla"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/varta/varta/__init__.py b/packages/modules/devices/varta/varta/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/varta/bat_api.py b/packages/modules/devices/varta/varta/bat_api.py
similarity index 97%
rename from packages/modules/devices/varta/bat_api.py
rename to packages/modules/devices/varta/varta/bat_api.py
index 85cf55ba06..c92d4094c0 100644
--- a/packages/modules/devices/varta/bat_api.py
+++ b/packages/modules/devices/varta/varta/bat_api.py
@@ -8,7 +8,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.varta.config import VartaBatApiSetup
+from modules.devices.varta.varta.config import VartaBatApiSetup
 
 
 class VartaBatApi:
diff --git a/packages/modules/devices/varta/bat_modbus.py b/packages/modules/devices/varta/varta/bat_modbus.py
similarity index 96%
rename from packages/modules/devices/varta/bat_modbus.py
rename to packages/modules/devices/varta/varta/bat_modbus.py
index 902d719385..3db17fff9d 100644
--- a/packages/modules/devices/varta/bat_modbus.py
+++ b/packages/modules/devices/varta/varta/bat_modbus.py
@@ -6,7 +6,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.varta.config import VartaBatModbusSetup
+from modules.devices.varta.varta.config import VartaBatModbusSetup
 
 
 class VartaBatModbus:
diff --git a/packages/modules/devices/varta/config.py b/packages/modules/devices/varta/varta/config.py
similarity index 95%
rename from packages/modules/devices/varta/config.py
rename to packages/modules/devices/varta/varta/config.py
index d49e005e0a..615eb2c9cf 100644
--- a/packages/modules/devices/varta/config.py
+++ b/packages/modules/devices/varta/varta/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
@@ -15,11 +15,12 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Varta:
     def __init__(self,
                  name: str = "Varta",
-                 type: str = "varta",
+                 type: List[str] = ["varta", "varta"],
                  id: int = 0,
                  configuration: VartaConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or VartaConfiguration()
 
diff --git a/packages/modules/devices/varta/counter.py b/packages/modules/devices/varta/varta/counter.py
similarity index 95%
rename from packages/modules/devices/varta/counter.py
rename to packages/modules/devices/varta/varta/counter.py
index b9412ba72d..21cacea5ac 100644
--- a/packages/modules/devices/varta/counter.py
+++ b/packages/modules/devices/varta/varta/counter.py
@@ -6,7 +6,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.varta.config import VartaCounterSetup
+from modules.devices.varta.varta.config import VartaCounterSetup
 
 
 class VartaCounter:
diff --git a/packages/modules/devices/varta/device.py b/packages/modules/devices/varta/varta/device.py
similarity index 90%
rename from packages/modules/devices/varta/device.py
rename to packages/modules/devices/varta/varta/device.py
index 053c58985a..c6c7a04c7b 100644
--- a/packages/modules/devices/varta/device.py
+++ b/packages/modules/devices/varta/varta/device.py
@@ -8,14 +8,14 @@
 from modules.common.component_state import BatState
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.varta import bat_api, counter
-from modules.devices.varta import bat_modbus
-from modules.devices.varta.bat_api import VartaBatApi
-from modules.devices.varta.bat_modbus import VartaBatModbus
-from modules.devices.varta.config import (Varta, VartaConfiguration, VartaBatApiSetup, VartaBatModbusSetup,
-                                          VartaCounterSetup, VartaInverterSetup)
-from modules.devices.varta.counter import VartaCounter
 from modules.devices.varta.inverter import VartaInverter
+from modules.devices.varta.varta import bat_api, counter
+from modules.devices.varta.varta import bat_modbus
+from modules.devices.varta.varta.bat_api import VartaBatApi
+from modules.devices.varta.varta.bat_modbus import VartaBatModbus
+from modules.devices.varta.varta.config import (Varta, VartaConfiguration, VartaBatApiSetup, VartaBatModbusSetup,
+                                                VartaCounterSetup, VartaInverterSetup)
+from modules.devices.varta.varta.counter import VartaCounter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/varta/vendor.py b/packages/modules/devices/varta/vendor.py
new file mode 100644
index 0000000000..7d859da99f
--- /dev/null
+++ b/packages/modules/devices/varta/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Varta"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/victron/vendor.py b/packages/modules/devices/victron/vendor.py
new file mode 100644
index 0000000000..8907fe50fd
--- /dev/null
+++ b/packages/modules/devices/victron/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Victron"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/victron/victron/__init__.py b/packages/modules/devices/victron/victron/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/victron/bat.py b/packages/modules/devices/victron/victron/bat.py
similarity index 96%
rename from packages/modules/devices/victron/bat.py
rename to packages/modules/devices/victron/victron/bat.py
index 3df640677b..e012aad359 100644
--- a/packages/modules/devices/victron/bat.py
+++ b/packages/modules/devices/victron/victron/bat.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.victron.config import VictronBatSetup
+from modules.devices.victron.victron.config import VictronBatSetup
 
 
 class VictronBat:
diff --git a/packages/modules/devices/victron/config.py b/packages/modules/devices/victron/victron/config.py
similarity index 94%
rename from packages/modules/devices/victron/config.py
rename to packages/modules/devices/victron/victron/config.py
index c0f42ab5d9..27ff6f2626 100644
--- a/packages/modules/devices/victron/config.py
+++ b/packages/modules/devices/victron/victron/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,11 +12,12 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class Victron:
     def __init__(self,
                  name: str = "Victron",
-                 type: str = "victron",
+                 type: List[str] = ["victron", "victron"],
                  id: int = 0,
                  configuration: VictronConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or VictronConfiguration()
 
diff --git a/packages/modules/devices/victron/counter.py b/packages/modules/devices/victron/victron/counter.py
similarity index 97%
rename from packages/modules/devices/victron/counter.py
rename to packages/modules/devices/victron/victron/counter.py
index 744d312a2c..a1f21fa72b 100644
--- a/packages/modules/devices/victron/counter.py
+++ b/packages/modules/devices/victron/victron/counter.py
@@ -9,7 +9,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.victron.config import VictronCounterSetup
+from modules.devices.victron.victron.config import VictronCounterSetup
 
 
 class VictronCounter:
diff --git a/packages/modules/devices/victron/device.py b/packages/modules/devices/victron/victron/device.py
similarity index 94%
rename from packages/modules/devices/victron/device.py
rename to packages/modules/devices/victron/victron/device.py
index 264bf3ef78..5a73490459 100644
--- a/packages/modules/devices/victron/device.py
+++ b/packages/modules/devices/victron/victron/device.py
@@ -7,10 +7,10 @@
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.victron import bat
-from modules.devices.victron import counter
-from modules.devices.victron import inverter
-from modules.devices.victron.config import Victron, VictronBatSetup, VictronCounterSetup, VictronInverterSetup
+from modules.devices.victron.victron import bat
+from modules.devices.victron.victron import counter
+from modules.devices.victron.victron import inverter
+from modules.devices.victron.victron.config import Victron, VictronBatSetup, VictronCounterSetup, VictronInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/victron/inverter.py b/packages/modules/devices/victron/victron/inverter.py
similarity index 97%
rename from packages/modules/devices/victron/inverter.py
rename to packages/modules/devices/victron/victron/inverter.py
index b984098d25..6716bbebce 100644
--- a/packages/modules/devices/victron/inverter.py
+++ b/packages/modules/devices/victron/victron/inverter.py
@@ -10,7 +10,7 @@
 from modules.common.modbus import ModbusDataType
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.victron.config import VictronInverterSetup
+from modules.devices.victron.victron.config import VictronInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/vzlogger/vendor.py b/packages/modules/devices/vzlogger/vendor.py
new file mode 100644
index 0000000000..f007261650
--- /dev/null
+++ b/packages/modules/devices/vzlogger/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "VZLogger"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/vzlogger/vzlogger/__init__.py b/packages/modules/devices/vzlogger/vzlogger/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/vzlogger/config.py b/packages/modules/devices/vzlogger/vzlogger/config.py
similarity index 93%
rename from packages/modules/devices/vzlogger/config.py
rename to packages/modules/devices/vzlogger/vzlogger/config.py
index 741576174a..bc0a68eb71 100644
--- a/packages/modules/devices/vzlogger/config.py
+++ b/packages/modules/devices/vzlogger/vzlogger/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class VZLogger:
     def __init__(self,
                  name: str = "VZLogger",
-                 type: str = "vzlogger",
+                 type: List[str] = ["vzlogger", "vzlogger"],
                  id: int = 0,
                  configuration: VZLoggerConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or VZLoggerConfiguration()
 
diff --git a/packages/modules/devices/vzlogger/counter.py b/packages/modules/devices/vzlogger/vzlogger/counter.py
similarity index 91%
rename from packages/modules/devices/vzlogger/counter.py
rename to packages/modules/devices/vzlogger/vzlogger/counter.py
index 55fec7fd45..25a017c4a5 100644
--- a/packages/modules/devices/vzlogger/counter.py
+++ b/packages/modules/devices/vzlogger/vzlogger/counter.py
@@ -5,8 +5,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.vzlogger.config import VZLoggerCounterSetup
-from modules.devices.vzlogger.utils import parse_line
+from modules.devices.vzlogger.vzlogger.config import VZLoggerCounterSetup
+from modules.devices.vzlogger.vzlogger.utils import parse_line
 
 
 class VZLoggerCounter:
diff --git a/packages/modules/devices/vzlogger/counter_test.py b/packages/modules/devices/vzlogger/vzlogger/counter_test.py
similarity index 85%
rename from packages/modules/devices/vzlogger/counter_test.py
rename to packages/modules/devices/vzlogger/vzlogger/counter_test.py
index 29d1c4bc0b..c62e210e67 100644
--- a/packages/modules/devices/vzlogger/counter_test.py
+++ b/packages/modules/devices/vzlogger/vzlogger/counter_test.py
@@ -4,10 +4,10 @@
 
 from modules.common.component_state import CounterState
 from modules.conftest import SAMPLE_IP
-from modules.devices.vzlogger import counter
-from modules.devices.vzlogger.config import (VZLogger, VZLoggerConfiguration, VZLoggerCounterConfiguration,
-                                             VZLoggerCounterSetup)
-from modules.devices.vzlogger.device import create_device
+from modules.devices.vzlogger.vzlogger import counter
+from modules.devices.vzlogger.vzlogger.config import (VZLogger, VZLoggerConfiguration, VZLoggerCounterConfiguration,
+                                                      VZLoggerCounterSetup)
+from modules.devices.vzlogger.vzlogger.device import create_device
 
 
 def test_vzlogger_counter_update(monkeypatch, requests_mock: requests_mock.mock):
diff --git a/packages/modules/devices/vzlogger/device.py b/packages/modules/devices/vzlogger/vzlogger/device.py
similarity index 83%
rename from packages/modules/devices/vzlogger/device.py
rename to packages/modules/devices/vzlogger/vzlogger/device.py
index ead08d6858..30a948d68c 100644
--- a/packages/modules/devices/vzlogger/device.py
+++ b/packages/modules/devices/vzlogger/vzlogger/device.py
@@ -5,9 +5,9 @@
 from modules.common import req
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
-from modules.devices.vzlogger.config import VZLogger, VZLoggerCounterSetup, VZLoggerInverterSetup
-from modules.devices.vzlogger.counter import VZLoggerCounter
-from modules.devices.vzlogger.inverter import VZLoggerInverter
+from modules.devices.vzlogger.vzlogger.config import VZLogger, VZLoggerCounterSetup, VZLoggerInverterSetup
+from modules.devices.vzlogger.vzlogger.counter import VZLoggerCounter
+from modules.devices.vzlogger.vzlogger.inverter import VZLoggerInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/vzlogger/inverter.py b/packages/modules/devices/vzlogger/vzlogger/inverter.py
similarity index 91%
rename from packages/modules/devices/vzlogger/inverter.py
rename to packages/modules/devices/vzlogger/vzlogger/inverter.py
index 5adb4b153f..38f6c367eb 100644
--- a/packages/modules/devices/vzlogger/inverter.py
+++ b/packages/modules/devices/vzlogger/vzlogger/inverter.py
@@ -5,8 +5,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.vzlogger.config import VZLoggerInverterSetup
-from modules.devices.vzlogger.utils import parse_line
+from modules.devices.vzlogger.vzlogger.config import VZLoggerInverterSetup
+from modules.devices.vzlogger.vzlogger.utils import parse_line
 
 
 class VZLoggerInverter:
diff --git a/packages/modules/devices/vzlogger/utils.py b/packages/modules/devices/vzlogger/vzlogger/utils.py
similarity index 100%
rename from packages/modules/devices/vzlogger/utils.py
rename to packages/modules/devices/vzlogger/vzlogger/utils.py
diff --git a/packages/modules/devices/youless/vendor.py b/packages/modules/devices/youless/vendor.py
new file mode 100644
index 0000000000..39879fc466
--- /dev/null
+++ b/packages/modules/devices/youless/vendor.py
@@ -0,0 +1,9 @@
+from modules.common.abstract_device import DeviceDescriptor
+
+
+class Vendor:
+    def __init__(self):
+        self.vendor = "Youless"
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/youless/youless/__init__.py b/packages/modules/devices/youless/youless/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/youless/config.py b/packages/modules/devices/youless/youless/config.py
similarity index 90%
rename from packages/modules/devices/youless/config.py
rename to packages/modules/devices/youless/youless/config.py
index cc49351dd0..3fc1c08273 100644
--- a/packages/modules/devices/youless/config.py
+++ b/packages/modules/devices/youless/youless/config.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
@@ -13,11 +13,12 @@ def __init__(self, ip_address: Optional[str] = None):
 class Youless:
     def __init__(self,
                  name: str = "Youless",
-                 type: str = "youless",
+                 type: List[str] = ["youless", "youless"],
                  id: int = 0,
                  configuration: YoulessConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.group = "other"
         self.id = id
         self.configuration = configuration or YoulessConfiguration()
 
diff --git a/packages/modules/devices/youless/device.py b/packages/modules/devices/youless/youless/device.py
similarity index 90%
rename from packages/modules/devices/youless/device.py
rename to packages/modules/devices/youless/youless/device.py
index 7013ffd8a8..684ff14c42 100644
--- a/packages/modules/devices/youless/device.py
+++ b/packages/modules/devices/youless/youless/device.py
@@ -6,9 +6,9 @@
 from modules.common import req
 from modules.common.abstract_device import DeviceDescriptor
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
-from modules.devices.youless import inverter
-from modules.devices.youless.config import Youless, YoulessConfiguration, YoulessInverterSetup
-from modules.devices.youless.inverter import YoulessInverter
+from modules.devices.youless.youless import inverter
+from modules.devices.youless.youless.config import Youless, YoulessConfiguration, YoulessInverterSetup
+from modules.devices.youless.youless.inverter import YoulessInverter
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/youless/inverter.py b/packages/modules/devices/youless/youless/inverter.py
similarity index 94%
rename from packages/modules/devices/youless/inverter.py
rename to packages/modules/devices/youless/youless/inverter.py
index 7f063be32f..dcf9ec4a5c 100644
--- a/packages/modules/devices/youless/inverter.py
+++ b/packages/modules/devices/youless/youless/inverter.py
@@ -3,7 +3,7 @@
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.store import get_inverter_value_store
-from modules.devices.youless.config import YoulessInverterSetup
+from modules.devices.youless.youless.config import YoulessInverterSetup
 
 
 class YoulessInverter:

From 225f55a438096f3df7601fc45e9868336b127ff4 Mon Sep 17 00:00:00 2001
From: pama87 <patrick.mayer@openwb.de>
Date: Wed, 31 Jul 2024 11:53:11 +0200
Subject: [PATCH 062/205] correction devices

---
 .../modules/devices/generic/json/config.py    |  2 +-
 .../devices/kostal/kostal_piko_old/counter.py | 45 -------------------
 2 files changed, 1 insertion(+), 46 deletions(-)
 delete mode 100644 packages/modules/devices/kostal/kostal_piko_old/counter.py

diff --git a/packages/modules/devices/generic/json/config.py b/packages/modules/devices/generic/json/config.py
index 22b1feda63..65c7f60429 100644
--- a/packages/modules/devices/generic/json/config.py
+++ b/packages/modules/devices/generic/json/config.py
@@ -11,8 +11,8 @@ class Json:
     def __init__(self,
                  name: str = "Json",
                  type: List[str] = ["generic", "json"],
-                 id: int = 0,
                  group: str = "generic",
+                 id: int = 0,
                  configuration: JsonConfiguration = None) -> None:
         self.name = name
         self.type = type
diff --git a/packages/modules/devices/kostal/kostal_piko_old/counter.py b/packages/modules/devices/kostal/kostal_piko_old/counter.py
deleted file mode 100644
index 1bbf5ea788..0000000000
--- a/packages/modules/devices/kostal/kostal_piko_old/counter.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env python3
-from dataclass_utils import dataclass_from_dict
-from modules.common import modbus
-from modules.common.component_state import CounterState
-from modules.common.component_type import ComponentDescriptor
-from modules.common.fault_state import ComponentInfo, FaultState
-from modules.common.modbus import ModbusDataType
-from modules.common.simcount import SimCounter
-from modules.common.store import get_counter_value_store
-from modules.devices.huawei.huawei_smartlogger.config import Huawei_SmartloggerCounterSetup
-
-
-class Huawei_SmartloggerCounter:
-    def __init__(self, device_id: int,
-                 component_config: Huawei_SmartloggerCounterSetup,
-                 tcp_client: modbus.ModbusTcpClient_) -> None:
-        self.__device_id = device_id
-        self.component_config = dataclass_from_dict(Huawei_SmartloggerCounterSetup, component_config)
-        self.client = tcp_client
-        self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="bezug")
-        self.store = get_counter_value_store(self.component_config.id)
-        self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
-
-    def update(self):
-        modbus_id = self.component_config.configuration.modbus_id
-        power = self.client.read_holding_registers(32278, ModbusDataType.INT_32, unit=modbus_id)
-        currents = [val / 100 for val in self.client.read_holding_registers(
-            32272, [ModbusDataType.INT_32] * 3, unit=modbus_id)]
-        voltages = [val / 100 for val in self.client.read_holding_registers(
-            32260, [ModbusDataType.INT_32] * 3, unit=modbus_id)]
-        powers = [val / 1000 for val in self.client.read_holding_registers(
-            32335, [ModbusDataType.INT_32] * 3, unit=modbus_id)]
-        imported, exported = self.sim_counter.sim_count(power)
-        counter_state = CounterState(
-            currents=currents,
-            imported=imported,
-            exported=exported,
-            power=power,
-            powers=powers,
-            voltages=voltages
-        )
-        self.store.set(counter_state)
-
-
-component_descriptor = ComponentDescriptor(configuration_factory=Huawei_SmartloggerCounterSetup)

From 1513f9891fc910bf4d43f4eae9740d4d522ba1b0 Mon Sep 17 00:00:00 2001
From: pama87 <patrick.mayer@openwb.de>
Date: Wed, 31 Jul 2024 11:57:06 +0200
Subject: [PATCH 063/205] flake8

---
 packages/modules/devices/powerdog/powerdog/device.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/packages/modules/devices/powerdog/powerdog/device.py b/packages/modules/devices/powerdog/powerdog/device.py
index 04384d2adb..6461ff4c62 100644
--- a/packages/modules/devices/powerdog/powerdog/device.py
+++ b/packages/modules/devices/powerdog/powerdog/device.py
@@ -9,7 +9,8 @@
 from modules.common.component_context import MultiComponentUpdateContext, SingleComponentUpdateContext
 from modules.devices.powerdog.powerdog import counter
 from modules.devices.powerdog.powerdog import inverter
-from modules.devices.powerdog.powerdog.config import Powerdog, PowerdogConfiguration, PowerdogCounterSetup, PowerdogInverterSetup
+from modules.devices.powerdog.powerdog.config import (
+    Powerdog, PowerdogConfiguration, PowerdogCounterSetup, PowerdogInverterSetup)
 
 log = logging.getLogger(__name__)
 

From 110ba796996910b9285c42bc7e90084ddcd2a986 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Fri, 2 Aug 2024 10:35:47 +0200
Subject: [PATCH 064/205] restructure device list

---
 packages/modules/configuration.py             | 125 +++++++++++-------
 .../devices/alpha_ess/alpha_ess/config.py     |   5 +-
 packages/modules/devices/alpha_ess/vendor.py  |   2 +
 .../devices/azzurro_zcs/azzurro_zcs/config.py |   5 +-
 .../modules/devices/azzurro_zcs/vendor.py     |   2 +
 .../modules/devices/batterx/batterx/config.py |   5 +-
 packages/modules/devices/batterx/vendor.py    |   2 +
 .../modules/devices/benning/benning/config.py |   7 +-
 packages/modules/devices/benning/vendor.py    |   2 +
 packages/modules/devices/byd/byd/config.py    |   5 +-
 packages/modules/devices/byd/vendor.py        |   2 +
 .../carlo_gavazzi/carlo_gavazzi/config.py     |   5 +-
 .../modules/devices/carlo_gavazzi/vendor.py   |   2 +
 packages/modules/devices/deye/deye/config.py  |   5 +-
 packages/modules/devices/deye/vendor.py       |   2 +
 .../devices/discovergy/discovergy/config.py   |   5 +-
 packages/modules/devices/discovergy/vendor.py |   2 +
 packages/modules/devices/e3dc/e3dc/config.py  |   4 +-
 packages/modules/devices/e3dc/vendor.py       |   2 +
 .../modules/devices/enphase/enphase/config.py |   5 +-
 packages/modules/devices/enphase/vendor.py    |   2 +
 packages/modules/devices/fems/fems/config.py  |   5 +-
 packages/modules/devices/fems/vendor.py       |   2 +
 .../modules/devices/fox_ess/fox_ess/config.py |   5 +-
 packages/modules/devices/fox_ess/vendor.py    |   2 +
 .../modules/devices/fronius/fronius/config.py |   5 +-
 packages/modules/devices/fronius/vendor.py    |   2 +
 .../modules/devices/generic/http/config.py    |   5 +-
 .../modules/devices/generic/json/config.py    |   6 +-
 .../modules/devices/generic/mqtt/config.py    |   6 +-
 packages/modules/devices/generic/vendor.py    |   4 +-
 .../modules/devices/generic/virtual/config.py |   5 +-
 .../modules/devices/good_we/good_we/config.py |   5 +-
 packages/modules/devices/good_we/vendor.py    |   2 +
 .../modules/devices/huawei/huawei/config.py   |   5 +-
 .../huawei/huawei_smartlogger/config.py       |   5 +-
 packages/modules/devices/huawei/vendor.py     |   2 +
 .../modules/devices/janitza/janitza/config.py |   5 +-
 packages/modules/devices/janitza/vendor.py    |   2 +
 .../devices/kostal/kostal_piko/config.py      |   3 +-
 .../devices/kostal/kostal_piko_old/config.py  |   3 +-
 .../kostal/kostal_plenticore/config.py        |   3 +-
 .../devices/kostal/kostal_sem/config.py       |   3 +-
 .../devices/kostal/kostal_steca/config.py     |   3 +-
 packages/modules/devices/kostal/vendor.py     |   2 +
 packages/modules/devices/lg/lg/config.py      |   5 +-
 packages/modules/devices/lg/vendor.py         |   2 +
 packages/modules/devices/mtec/mtec/config.py  |   3 +-
 packages/modules/devices/mtec/vendor.py       |   2 +
 .../modules/devices/opendtu/opendtu/config.py |   7 +-
 packages/modules/devices/opendtu/vendor.py    |   2 +
 .../openwb_bat_kit/__init__.py                |   0
 .../{openWB => openwb}/openwb_bat_kit/bat.py  |   8 +-
 .../openwb_bat_kit/config.py                  |   4 +-
 .../openwb_bat_kit/device.py                  |   4 +-
 .../openwb_evu_kit/__init__.py                |   0
 .../{openWB => openwb}/openwb_evu_kit/bat.py  |   2 +-
 .../openwb_evu_kit/config.py                  |   4 +-
 .../openwb_evu_kit/counter.py                 |   6 +-
 .../openwb_evu_kit/device.py                  |  12 +-
 .../openwb_evu_kit/inverter.py                |   2 +-
 .../openwb_flex/__init__.py                   |   0
 .../{openWB => openwb}/openwb_flex/bat.py     |   4 +-
 .../{openWB => openwb}/openwb_flex/config.py  |  11 +-
 .../openwb_flex/consumption_counter.py        |   4 +-
 .../{openWB => openwb}/openwb_flex/counter.py |   4 +-
 .../{openWB => openwb}/openwb_flex/device.py  |  10 +-
 .../openwb_flex/inverter.py                   |   4 +-
 .../openwb_flex/versions.py                   |   0
 .../openwb_pv_kit/__init__.py                 |   0
 .../openwb_pv_kit/config.py                   |   4 +-
 .../openwb_pv_kit/device.py                   |   4 +-
 .../openwb_pv_kit/inverter.py                 |   8 +-
 .../devices/{openWB => openwb}/vendor.py      |   4 +-
 .../devices/powerdog/powerdog/config.py       |   3 +-
 packages/modules/devices/powerdog/vendor.py   |   2 +
 .../devices/powerfox/powerfox/config.py       |   3 +-
 packages/modules/devices/powerfox/vendor.py   |   2 +
 .../modules/devices/qcells/qcells/config.py   |   3 +-
 packages/modules/devices/qcells/vendor.py     |   2 +
 packages/modules/devices/rct/rct/config.py    |   3 +-
 packages/modules/devices/rct/vendor.py        |   2 +
 .../devices/saxpower/saxpower/config.py       |   3 +-
 packages/modules/devices/saxpower/vendor.py   |   2 +
 .../modules/devices/shelly/shelly/config.py   |   3 +-
 packages/modules/devices/shelly/vendor.py     |   2 +
 .../modules/devices/siemens/siemens/config.py |   3 +-
 .../devices/siemens/siemens_sentron/config.py |   3 +-
 packages/modules/devices/siemens/vendor.py    |   2 +
 .../modules/devices/sma/sma_shm/config.py     |   3 +-
 .../devices/sma/sma_sunny_boy/config.py       |   3 +-
 .../devices/sma/sma_sunny_island/config.py    |   3 +-
 .../modules/devices/sma/sma_webbox/config.py  |   3 +-
 packages/modules/devices/sma/vendor.py        |   2 +
 .../devices/smart_me/smart_me/config.py       |   3 +-
 packages/modules/devices/smart_me/vendor.py   |   2 +
 .../devices/smartfox/smartfox/config.py       |   3 +-
 packages/modules/devices/smartfox/vendor.py   |   2 +
 .../modules/devices/sofar/sofar/config.py     |   3 +-
 packages/modules/devices/sofar/vendor.py      |   2 +
 .../devices/solar_log/solar_log/config.py     |   3 +-
 packages/modules/devices/solar_log/vendor.py  |   2 +
 .../devices/solar_view/solar_view/config.py   |   3 +-
 packages/modules/devices/solar_view/vendor.py |   2 +
 .../devices/solar_watt/solar_watt/config.py   |   3 +-
 packages/modules/devices/solar_watt/vendor.py |   2 +
 .../devices/solar_world/solar_world/config.py |   3 +-
 .../modules/devices/solar_world/vendor.py     |   2 +
 .../devices/solaredge/solaredge/config.py     |   3 +-
 packages/modules/devices/solaredge/vendor.py  |   2 +
 .../devices/solarmax/solarmax/config.py       |   3 +-
 packages/modules/devices/solarmax/vendor.py   |   2 +
 .../modules/devices/solax/solax/config.py     |   3 +-
 packages/modules/devices/solax/vendor.py      |   2 +
 .../sonnenbatterie/sonnenbatterie/config.py   |   3 +-
 .../modules/devices/sonnenbatterie/vendor.py  |   4 +-
 .../modules/devices/studer/studer/config.py   |   3 +-
 packages/modules/devices/studer/vendor.py     |   2 +
 .../modules/devices/sungrow/sungrow/config.py |   3 +-
 packages/modules/devices/sungrow/vendor.py    |   2 +
 .../modules/devices/sunways/sunways/config.py |   3 +-
 packages/modules/devices/sunways/vendor.py    |   2 +
 .../modules/devices/tasmota/tasmota/config.py |   3 +-
 packages/modules/devices/tasmota/vendor.py    |   2 +
 .../modules/devices/tesla/tesla/config.py     |   3 +-
 packages/modules/devices/tesla/vendor.py      |   2 +
 .../modules/devices/varta/varta/config.py     |   3 +-
 packages/modules/devices/varta/vendor.py      |   2 +
 packages/modules/devices/vendors.py           |   7 +
 packages/modules/devices/victron/vendor.py    |   2 +
 .../modules/devices/victron/victron/config.py |   3 +-
 packages/modules/devices/vzlogger/vendor.py   |   2 +
 .../devices/vzlogger/vzlogger/config.py       |   3 +-
 packages/modules/devices/youless/vendor.py    |   2 +
 .../modules/devices/youless/youless/config.py |   3 +-
 135 files changed, 317 insertions(+), 250 deletions(-)
 rename packages/modules/devices/{openWB => openwb}/openwb_bat_kit/__init__.py (100%)
 rename packages/modules/devices/{openWB => openwb}/openwb_bat_kit/bat.py (78%)
 rename packages/modules/devices/{openWB => openwb}/openwb_bat_kit/config.py (88%)
 rename packages/modules/devices/{openWB => openwb}/openwb_bat_kit/device.py (96%)
 rename packages/modules/devices/{openWB => openwb}/openwb_evu_kit/__init__.py (100%)
 rename packages/modules/devices/{openWB => openwb}/openwb_evu_kit/bat.py (73%)
 rename packages/modules/devices/{openWB => openwb}/openwb_evu_kit/config.py (94%)
 rename packages/modules/devices/{openWB => openwb}/openwb_evu_kit/counter.py (84%)
 rename packages/modules/devices/{openWB => openwb}/openwb_evu_kit/device.py (92%)
 rename packages/modules/devices/{openWB => openwb}/openwb_evu_kit/inverter.py (74%)
 rename packages/modules/devices/{openWB => openwb}/openwb_flex/__init__.py (100%)
 rename packages/modules/devices/{openWB => openwb}/openwb_flex/bat.py (94%)
 rename packages/modules/devices/{openWB => openwb}/openwb_flex/config.py (92%)
 rename packages/modules/devices/{openWB => openwb}/openwb_flex/consumption_counter.py (94%)
 rename packages/modules/devices/{openWB => openwb}/openwb_flex/counter.py (95%)
 rename packages/modules/devices/{openWB => openwb}/openwb_flex/device.py (87%)
 rename packages/modules/devices/{openWB => openwb}/openwb_flex/inverter.py (94%)
 rename packages/modules/devices/{openWB => openwb}/openwb_flex/versions.py (100%)
 rename packages/modules/devices/{openWB => openwb}/openwb_pv_kit/__init__.py (100%)
 rename packages/modules/devices/{openWB => openwb}/openwb_pv_kit/config.py (88%)
 rename packages/modules/devices/{openWB => openwb}/openwb_pv_kit/device.py (96%)
 rename packages/modules/devices/{openWB => openwb}/openwb_pv_kit/inverter.py (77%)
 rename packages/modules/devices/{openWB => openwb}/vendor.py (60%)
 create mode 100644 packages/modules/devices/vendors.py

diff --git a/packages/modules/configuration.py b/packages/modules/configuration.py
index 95de00eafa..b44d832e4f 100644
--- a/packages/modules/configuration.py
+++ b/packages/modules/configuration.py
@@ -177,59 +177,94 @@ def _pub_configurable_soc_modules() -> None:
 
 
 def _pub_configurable_devices_components() -> None:
-    def add_vendor(vendor_path: str, pattern: str) -> None:
-        path_list = Path(_get_packages_path()/"modules"/"devices"/vendor_path).glob(f'**/{pattern}.py')
-        for path in path_list:
-            if path.name.endswith("_test.py"):
-                # Tests überspringen
-                continue
-            vendor_defaults = importlib.import_module(
-                f'modules.devices.{path.parts[-2]}.vendor').vendor_descriptor.configuration_factory()
-            vendor.append({
-                "vendor": vendor_defaults.vendor
-            })
+    def update_nested_dict(dictionary: Dict, update: Dict) -> Dict:
+        for key, value in update.items():
+            if isinstance(value, dict):
+                dictionary[key] = update_nested_dict(dictionary.get(key, {}), value)
+            else:
+                dictionary[key] = value
+        return dictionary
+
+    def get_vendor_groups() -> Dict:
+        def get_vendor_group_name(group: str) -> str:
+            # ToDo: find a better way to lookup the group names in "devices/vendors.py"
+            if group == "generic":
+                return "herstellerunabhängig"
+            if group == "openwb":
+                return "openWB"
+            if group == "vendors":
+                return "andere Hersteller"
+            return group
 
-    def add_components(device: str, pattern: str) -> None:
-        path_list = Path(_get_packages_path()/"modules"/"devices"/device).glob(f'**/{pattern}.py')
+        vendor_groups = {}
+        path_list = Path(_get_packages_path()/"modules"/"devices").glob('**/vendor.py')
         for path in path_list:
-            if path.name.endswith("_test.py"):
-                # Tests überspringen
-                continue
-            comp_defaults = importlib.import_module(
-                f".devices.{path.parts[-3]}.{path.parts[-2]}.{path.parts[-1][:-3]}",
-                "modules").component_descriptor.configuration_factory()
-            component.append({
-                "value": comp_defaults.type,
-                "text": comp_defaults.name
-            })
+            try:
+                if path.name.endswith("_test.py"):
+                    # Tests überspringen
+                    continue
+                vendor_path = path.parts[-2]
+                vendor_info = importlib.import_module(
+                    f".devices.{vendor_path}.vendor", "modules").vendor_descriptor.configuration_factory()
+                vendor_groups = update_nested_dict(vendor_groups, {
+                    vendor_info.group: {
+                        "group_name": get_vendor_group_name(vendor_info.group),
+                        "vendors": {
+                            vendor_path: {
+                                "vendor_name": vendor_info.vendor,
+                                "devices": get_vendor_devices(vendor_path)
+                            }
+                        }
+                    }
+                })
+            except Exception:
+                log.exception(f"Fehler im configuration-Modul: vendors: {path}")
+        return vendor_groups
 
-    try:
-        devices_components = []
-        path_list = Path(_get_packages_path()/"modules"/"devices").glob('**/device.py')
+    def get_vendor_devices(vendor: str) -> Dict:
+        devices = {}
+        path_list = Path(_get_packages_path()/"modules"/"devices"/vendor).glob('**/device.py')
         for path in path_list:
             try:
-                vendor_path = path.parts[-3]
-                device = path.parts[-3]+"/"+path.parts[-2]
-                device_module_import = path.parts[-3]+"."+path.parts[-2]
-                component: List = []
-                vendor: str = []
-                add_components(device, "*bat*")
-                add_components(device, "*counter*")
-                add_components(device, "*inverter*")
-                add_vendor(vendor_path, "*vendor*")
+                if path.name.endswith("_test.py"):
+                    # Tests überspringen
+                    continue
+                device_path = path.parts[-2]
                 dev_defaults = importlib.import_module(
-                    f".devices.{device_module_import}.device", "modules").device_descriptor.configuration_factory()
-                devices_components.append({
-                    "value": dev_defaults.type,
-                    "text": dev_defaults.name,
-                    "group": dev_defaults.group,
-                    "component": component,
-                    "vendor": vendor
+                    f".devices.{vendor}.{device_path}.device", "modules").device_descriptor.configuration_factory()
+                devices.update({
+                    dev_defaults.type: {
+                        "device_name": dev_defaults.name,
+                        "components": get_device_components(vendor, dev_defaults.type)
+                    }
                 })
             except Exception:
-                log.exception("Fehler im configuration-Modul")
-        devices_components = sorted(devices_components, key=lambda d: d['text'].upper())
-        Pub().pub("openWB/set/system/configurable/devices_components", devices_components)
+                log.exception(f"Fehler im configuration-Modul: devices: {path}")
+        return devices
+
+    def get_device_components(vendor: str, device: str) -> Dict:
+        components = {}
+        for pattern in ["*bat*", "*counter*", "*inverter*"]:
+            path_list = Path(_get_packages_path()/"modules"/"devices"/vendor/device).glob(f'**/{pattern}.py')
+            for path in path_list:
+                try:
+                    if path.name.endswith("_test.py"):
+                        # Tests überspringen
+                        continue
+                    comp_defaults = importlib.import_module(
+                        f".devices.{path.parts[-3]}.{path.parts[-2]}.{path.parts[-1][:-3]}",
+                        "modules").component_descriptor.configuration_factory()
+                    components.update({
+                        comp_defaults.type: {
+                            "component_name": comp_defaults.name
+                        }
+                    })
+                except Exception:
+                    log.exception(f"Fehler im configuration-Modul: components: {path}")
+        return components
+
+    try:
+        Pub().pub("openWB/set/system/configurable/devices_components", get_vendor_groups())
     except Exception:
         log.exception("Fehler im configuration-Modul")
 
diff --git a/packages/modules/devices/alpha_ess/alpha_ess/config.py b/packages/modules/devices/alpha_ess/alpha_ess/config.py
index 7188d5d97f..b880348dca 100644
--- a/packages/modules/devices/alpha_ess/alpha_ess/config.py
+++ b/packages/modules/devices/alpha_ess/alpha_ess/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -18,12 +18,11 @@ def __init__(self, modbus_id: int = 85,
 class AlphaEss:
     def __init__(self,
                  name: str = "Alpha ESS",
-                 type: List[str] = ["alpha_ess", "alpha_ess"],
+                 type: str = "alpha_ess",
                  id: int = 0,
                  configuration: AlphaEssConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or AlphaEssConfiguration()
 
diff --git a/packages/modules/devices/alpha_ess/vendor.py b/packages/modules/devices/alpha_ess/vendor.py
index e2941cf51c..8edec114c9 100644
--- a/packages/modules/devices/alpha_ess/vendor.py
+++ b/packages/modules/devices/alpha_ess/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "AlphaESS"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py b/packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py
index cde64ae6bf..c0abc3d919 100644
--- a/packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py
+++ b/packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class ZCS:
     def __init__(self,
                  name: str = "Azzurro - ZCS/Sofar HYD3-6k 1P",
-                 type: List[str] = ["azzurro_zcs", "azzurro_zcs"],
+                 type: str = "azzurro_zcs",
                  id: int = 0,
                  configuration: ZCSConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or ZCSConfiguration()
 
diff --git a/packages/modules/devices/azzurro_zcs/vendor.py b/packages/modules/devices/azzurro_zcs/vendor.py
index ce8a606213..8b9f4d0944 100644
--- a/packages/modules/devices/azzurro_zcs/vendor.py
+++ b/packages/modules/devices/azzurro_zcs/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Azzurro ZCS"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/batterx/batterx/config.py b/packages/modules/devices/batterx/batterx/config.py
index b7e1e42b43..706e5edcb0 100644
--- a/packages/modules/devices/batterx/batterx/config.py
+++ b/packages/modules/devices/batterx/batterx/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -11,12 +11,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class BatterX:
     def __init__(self,
                  name: str = "BatterX",
-                 type: List[str] = ["batterx", "batterx"],
+                 type: str = "batterx",
                  id: int = 0,
                  configuration: BatterXConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or BatterXConfiguration()
 
diff --git a/packages/modules/devices/batterx/vendor.py b/packages/modules/devices/batterx/vendor.py
index e7beb0e846..0c0141309d 100644
--- a/packages/modules/devices/batterx/vendor.py
+++ b/packages/modules/devices/batterx/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Batterx"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/benning/benning/config.py b/packages/modules/devices/benning/benning/config.py
index 411c96736e..d74c5c4195 100644
--- a/packages/modules/devices/benning/benning/config.py
+++ b/packages/modules/devices/benning/benning/config.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 from modules.devices.generic.json.config import Json, JsonConfiguration, JsonInverterConfiguration, JsonInverterSetup
 
@@ -14,11 +14,10 @@ def __init__(self, url: Optional[str] = None):
 class Benning(Json):
     def __init__(self,
                  name: str = "Benning",
-                 type: List[str] = ["benning", "benning"],
-                 group: str = "other",
+                 type: str = "benning",
                  id: int = 0,
                  configuration: BenningConfiguration = None) -> None:
-        super().__init__(name, type, group, id, configuration)
+        super().__init__(name, type, id, configuration)
 
 
 @auto_str
diff --git a/packages/modules/devices/benning/vendor.py b/packages/modules/devices/benning/vendor.py
index adb81798d2..6a7bf00f92 100644
--- a/packages/modules/devices/benning/vendor.py
+++ b/packages/modules/devices/benning/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Benning"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/byd/byd/config.py b/packages/modules/devices/byd/byd/config.py
index fdd63a72b7..7f34a8a25f 100644
--- a/packages/modules/devices/byd/byd/config.py
+++ b/packages/modules/devices/byd/byd/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -16,12 +16,11 @@ def __init__(self,
 class BYD:
     def __init__(self,
                  name: str = "BYD",
-                 type: List[str] = ["byd", "byd"],
+                 type: str = "byd",
                  id: int = 0,
                  configuration: BYDConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or BYDConfiguration()
 
diff --git a/packages/modules/devices/byd/vendor.py b/packages/modules/devices/byd/vendor.py
index cefeec2742..8ba8572851 100644
--- a/packages/modules/devices/byd/vendor.py
+++ b/packages/modules/devices/byd/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "BYD"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py
index 284f1709c0..93f6e67fec 100644
--- a/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py
+++ b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class CarloGavazzi:
     def __init__(self,
                  name: str = "Carlo Gavazzi",
-                 type: List[str] = ["carlo_gavazzi", "carlo_gavazzi"],
+                 type: str = "carlo_gavazzi",
                  id: int = 0,
                  configuration: CarloGavazziConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or CarloGavazziConfiguration()
 
diff --git a/packages/modules/devices/carlo_gavazzi/vendor.py b/packages/modules/devices/carlo_gavazzi/vendor.py
index 1dad643a15..cdc92c1b3c 100644
--- a/packages/modules/devices/carlo_gavazzi/vendor.py
+++ b/packages/modules/devices/carlo_gavazzi/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Carlo Gavazzi"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/deye/deye/config.py b/packages/modules/devices/deye/deye/config.py
index 8f90f8854e..95211f3155 100644
--- a/packages/modules/devices/deye/deye/config.py
+++ b/packages/modules/devices/deye/deye/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 
 from modules.common.component_setup import ComponentSetup
@@ -17,12 +17,11 @@ def __init__(self,
 class Deye:
     def __init__(self,
                  name: str = "Deye/Jinko (Anbindung per Modbus)",
-                 type: List[str] = ["deye", "deye"],
+                 type: str = "deye",
                  id: int = 0,
                  configuration: DeyeConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or DeyeConfiguration()
 
diff --git a/packages/modules/devices/deye/vendor.py b/packages/modules/devices/deye/vendor.py
index 1a1b67fcb6..5578a9b33c 100644
--- a/packages/modules/devices/deye/vendor.py
+++ b/packages/modules/devices/deye/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Deye/Jinko"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/discovergy/discovergy/config.py b/packages/modules/devices/discovergy/discovergy/config.py
index 8b2d793a10..ba48c6634d 100644
--- a/packages/modules/devices/discovergy/discovergy/config.py
+++ b/packages/modules/devices/discovergy/discovergy/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,12 +12,11 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None):
 class Discovergy:
     def __init__(self,
                  name: str = "Discovergy",
-                 type: List[str] = ["discovergy", "discovergy"],
+                 type: str = "discovergy",
                  id: int = 0,
                  configuration: DiscovergyConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or DiscovergyConfiguration()
 
diff --git a/packages/modules/devices/discovergy/vendor.py b/packages/modules/devices/discovergy/vendor.py
index 5a5f21243d..32b7412ba1 100644
--- a/packages/modules/devices/discovergy/vendor.py
+++ b/packages/modules/devices/discovergy/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Discovergy"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/e3dc/e3dc/config.py b/packages/modules/devices/e3dc/e3dc/config.py
index d72ad7f802..caf963cb49 100644
--- a/packages/modules/devices/e3dc/e3dc/config.py
+++ b/packages/modules/devices/e3dc/e3dc/config.py
@@ -1,6 +1,5 @@
 from modules.common.component_setup import ComponentSetup
 from helpermodules.auto_str import auto_str
-from typing import List
 
 
 @auto_str
@@ -15,12 +14,11 @@ def __init__(self, modbus_id: int = 1, address: str = None, port: int = 502):
 class E3dc:
     def __init__(self,
                  name: str = "E3DC",
-                 type: List[str] = ["e3dc", "e3dc"],
+                 type: str = "e3dc",
                  id: int = 0,
                  configuration: E3dcConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or E3dcConfiguration()
 
diff --git a/packages/modules/devices/e3dc/vendor.py b/packages/modules/devices/e3dc/vendor.py
index 82efb517e6..8b4f329da5 100644
--- a/packages/modules/devices/e3dc/vendor.py
+++ b/packages/modules/devices/e3dc/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "E3/DC"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/enphase/enphase/config.py b/packages/modules/devices/enphase/enphase/config.py
index 06417079ef..c499102a3d 100644
--- a/packages/modules/devices/enphase/enphase/config.py
+++ b/packages/modules/devices/enphase/enphase/config.py
@@ -1,5 +1,5 @@
 from enum import Enum
-from typing import Optional, List
+from typing import Optional
 from modules.common.component_setup import ComponentSetup
 
 
@@ -26,12 +26,11 @@ def __init__(self, hostname: Optional[str] = None,
 class Enphase:
     def __init__(self,
                  name: str = "Enphase",
-                 type: List[str] = ["enphase", "enphase"],
+                 type: str = "enphase",
                  id: int = 0,
                  configuration: EnphaseConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or EnphaseConfiguration()
 
diff --git a/packages/modules/devices/enphase/vendor.py b/packages/modules/devices/enphase/vendor.py
index f790487ff9..6a9177977d 100644
--- a/packages/modules/devices/enphase/vendor.py
+++ b/packages/modules/devices/enphase/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Enphase"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/fems/fems/config.py b/packages/modules/devices/fems/fems/config.py
index fcc7ceda4e..4414fc1a6e 100644
--- a/packages/modules/devices/fems/fems/config.py
+++ b/packages/modules/devices/fems/fems/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,12 +12,11 @@ def __init__(self, ip_address: Optional[str] = None, password: Optional[str] = N
 class Fems:
     def __init__(self,
                  name: str = "openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control",
-                 type: List[str] = ["fems", "fems"],
+                 type: str = "fems",
                  id: int = 0,
                  configuration: FemsConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or FemsConfiguration()
 
diff --git a/packages/modules/devices/fems/vendor.py b/packages/modules/devices/fems/vendor.py
index ff11220b38..b77c66516f 100644
--- a/packages/modules/devices/fems/vendor.py
+++ b/packages/modules/devices/fems/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "openEMS, Fenecon FEMS, CENTURIO, Kaco"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/fox_ess/fox_ess/config.py b/packages/modules/devices/fox_ess/fox_ess/config.py
index 38375b033c..fd0b7a8019 100644
--- a/packages/modules/devices/fox_ess/fox_ess/config.py
+++ b/packages/modules/devices/fox_ess/fox_ess/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 
 from modules.common.component_setup import ComponentSetup
@@ -15,12 +15,11 @@ def __init__(self,
 class FoxEss:
     def __init__(self,
                  name: str = "FoxESS",
-                 type: List[str] = ["fox_ess", "fox_ess"],
+                 type: str = "fox_ess",
                  id: int = 0,
                  configuration: FoxEssConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or FoxEssConfiguration()
 
diff --git a/packages/modules/devices/fox_ess/vendor.py b/packages/modules/devices/fox_ess/vendor.py
index 850ba02e97..f8c12e2374 100644
--- a/packages/modules/devices/fox_ess/vendor.py
+++ b/packages/modules/devices/fox_ess/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Fox ESS"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/fronius/fronius/config.py b/packages/modules/devices/fronius/fronius/config.py
index 31c83bc4cc..f800eb9088 100644
--- a/packages/modules/devices/fronius/fronius/config.py
+++ b/packages/modules/devices/fronius/fronius/config.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 from enum import Enum
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -32,12 +32,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class Fronius:
     def __init__(self,
                  name: str = "Fronius",
-                 type: List[str] = ["fronius", "fronius"],
+                 type: str = "fronius",
                  id: int = 0,
                  configuration: FroniusConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or FroniusConfiguration()
 
diff --git a/packages/modules/devices/fronius/vendor.py b/packages/modules/devices/fronius/vendor.py
index 598606268f..2cd4b9661f 100644
--- a/packages/modules/devices/fronius/vendor.py
+++ b/packages/modules/devices/fronius/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Fronius"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/generic/http/config.py b/packages/modules/devices/generic/http/config.py
index 52d890c3d3..3c219239a0 100644
--- a/packages/modules/devices/generic/http/config.py
+++ b/packages/modules/devices/generic/http/config.py
@@ -1,6 +1,5 @@
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
-from typing import List
 
 
 @auto_str
@@ -13,13 +12,11 @@ def __init__(self, url=None):
 class HTTP:
     def __init__(self,
                  name: str = "HTTP",
-                 type: List[str] = ["generic", "http"],
-                 group: str = "generic",
+                 type: str = "http",
                  id: int = 0,
                  configuration: HTTPConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = group
         self.id = id
         self.configuration = configuration or HTTPConfiguration()
 
diff --git a/packages/modules/devices/generic/json/config.py b/packages/modules/devices/generic/json/config.py
index 65c7f60429..1af6d338d9 100644
--- a/packages/modules/devices/generic/json/config.py
+++ b/packages/modules/devices/generic/json/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from modules.common.component_setup import ComponentSetup
 
 
@@ -10,13 +10,11 @@ def __init__(self, url=None):
 class Json:
     def __init__(self,
                  name: str = "Json",
-                 type: List[str] = ["generic", "json"],
-                 group: str = "generic",
+                 type: str = "json",
                  id: int = 0,
                  configuration: JsonConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = group
         self.id = id
         self.configuration = configuration or JsonConfiguration()
 
diff --git a/packages/modules/devices/generic/mqtt/config.py b/packages/modules/devices/generic/mqtt/config.py
index a4915c3a2f..665f26f3ab 100644
--- a/packages/modules/devices/generic/mqtt/config.py
+++ b/packages/modules/devices/generic/mqtt/config.py
@@ -1,5 +1,5 @@
+#!/usr/bin/env python3
 from modules.common.component_setup import ComponentSetup
-from typing import List
 
 
 class MqttConfiguration:
@@ -10,13 +10,11 @@ def __init__(self):
 class Mqtt:
     def __init__(self,
                  name: str = "MQTT",
-                 type: List[str] = ["generic", "mqtt"],
-                 group: str = "generic",
+                 type: str = "mqtt",
                  id: int = 0,
                  configuration: MqttConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = group
         self.id = id
         self.configuration = configuration or MqttConfiguration()
 
diff --git a/packages/modules/devices/generic/vendor.py b/packages/modules/devices/generic/vendor.py
index 49e162f124..5a79141056 100644
--- a/packages/modules/devices/generic/vendor.py
+++ b/packages/modules/devices/generic/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
-        self.vendor = "generisch"
+        self.vendor = None
+        self.group = "generic"
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/generic/virtual/config.py b/packages/modules/devices/generic/virtual/config.py
index dd6d199851..5893e8b5de 100644
--- a/packages/modules/devices/generic/virtual/config.py
+++ b/packages/modules/devices/generic/virtual/config.py
@@ -1,5 +1,4 @@
 from modules.common.component_setup import ComponentSetup
-from typing import List
 
 
 class VirtualConfiguration:
@@ -10,13 +9,11 @@ def __init__(self):
 class Virtual:
     def __init__(self,
                  name: str = "Virtuelles Gerät",
-                 type: List[str] = ["generic", "virtual"],
-                 group: str = "generic",
+                 type: str = "virtual",
                  id: int = 0,
                  configuration: VirtualConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = group
         self.id = id
         self.configuration = configuration or VirtualConfiguration()
 
diff --git a/packages/modules/devices/good_we/good_we/config.py b/packages/modules/devices/good_we/good_we/config.py
index 05075140ac..51675d538a 100644
--- a/packages/modules/devices/good_we/good_we/config.py
+++ b/packages/modules/devices/good_we/good_we/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 from modules.devices.good_we.good_we.version import GoodWeVersion
@@ -20,12 +20,11 @@ def __init__(self, ip_address: Optional[str] = None,
 class GoodWe:
     def __init__(self,
                  name: str = "GoodWe ET-Serie",
-                 type: List[str] = ["good_we", "good_we"],
+                 type: str = "good_we",
                  id: int = 0,
                  configuration: GoodWeConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or GoodWeConfiguration()
 
diff --git a/packages/modules/devices/good_we/vendor.py b/packages/modules/devices/good_we/vendor.py
index fc727d6fcc..caa80053a0 100644
--- a/packages/modules/devices/good_we/vendor.py
+++ b/packages/modules/devices/good_we/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "GoodWe"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/huawei/huawei/config.py b/packages/modules/devices/huawei/huawei/config.py
index 1ed36ea2c0..335aefe933 100644
--- a/packages/modules/devices/huawei/huawei/config.py
+++ b/packages/modules/devices/huawei/huawei/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Huawei:
     def __init__(self,
                  name: str = "Huawei Hybrid Wechselrichter",
-                 type: List[str] = ["huawei", "huawei"],
+                 type: str = "huawei",
                  id: int = 0,
                  configuration: HuaweiConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or HuaweiConfiguration()
 
diff --git a/packages/modules/devices/huawei/huawei_smartlogger/config.py b/packages/modules/devices/huawei/huawei_smartlogger/config.py
index d9cb74b333..e295ae5a9f 100644
--- a/packages/modules/devices/huawei/huawei_smartlogger/config.py
+++ b/packages/modules/devices/huawei/huawei_smartlogger/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
@@ -14,12 +14,11 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class Huawei_Smartlogger:
     def __init__(self,
                  name: str = "Huawei Smartlogger",
-                 type: List[str] = ["huawei", "huawei_smartlogger"],
+                 type: str = "huawei_smartlogger",
                  id: int = 0,
                  configuration: Huawei_SmartloggerConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or Huawei_SmartloggerConfiguration()
 
diff --git a/packages/modules/devices/huawei/vendor.py b/packages/modules/devices/huawei/vendor.py
index e5357fbf86..9599c78246 100644
--- a/packages/modules/devices/huawei/vendor.py
+++ b/packages/modules/devices/huawei/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Huawei"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/janitza/janitza/config.py b/packages/modules/devices/janitza/janitza/config.py
index 1f92818f05..4c1c91852f 100644
--- a/packages/modules/devices/janitza/janitza/config.py
+++ b/packages/modules/devices/janitza/janitza/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Janitza:
     def __init__(self,
                  name: str = "Janitza",
-                 type: List[str] = ["janitza", "janitza"],
+                 type: str = "janitza",
                  id: int = 0,
                  configuration: JanitzaConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or JanitzaConfiguration()
 
diff --git a/packages/modules/devices/janitza/vendor.py b/packages/modules/devices/janitza/vendor.py
index 4cadf41009..7747efb46c 100644
--- a/packages/modules/devices/janitza/vendor.py
+++ b/packages/modules/devices/janitza/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Janitza"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/kostal/kostal_piko/config.py b/packages/modules/devices/kostal/kostal_piko/config.py
index f1841a1667..30d387ef5f 100644
--- a/packages/modules/devices/kostal/kostal_piko/config.py
+++ b/packages/modules/devices/kostal/kostal_piko/config.py
@@ -11,12 +11,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class KostalPiko:
     def __init__(self,
                  name: str = "Kostal Piko",
-                 type: List[str] = ["kostal", "kostal_piko"],
+                 type: str = "kostal_piko",
                  id: int = 0,
                  configuration: KostalPikoConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or KostalPikoConfiguration()
 
diff --git a/packages/modules/devices/kostal/kostal_piko_old/config.py b/packages/modules/devices/kostal/kostal_piko_old/config.py
index 7d0303b282..e44f59319f 100644
--- a/packages/modules/devices/kostal/kostal_piko_old/config.py
+++ b/packages/modules/devices/kostal/kostal_piko_old/config.py
@@ -15,12 +15,11 @@ def __init__(self, url: Optional[str] = None, user: Optional[str] = None, passwo
 class KostalPikoOld:
     def __init__(self,
                  name: str = "Kostal Piko (alte Generation)",
-                 type: List[str] = ["kostal", "kostal_piko_old"],
+                 type: str = "kostal_piko_old",
                  id: int = 0,
                  configuration: KostalPikoOldConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or KostalPikoOldConfiguration()
 
diff --git a/packages/modules/devices/kostal/kostal_plenticore/config.py b/packages/modules/devices/kostal/kostal_plenticore/config.py
index f324ace7dc..4d02116e4a 100644
--- a/packages/modules/devices/kostal/kostal_plenticore/config.py
+++ b/packages/modules/devices/kostal/kostal_plenticore/config.py
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 71, ip_address: Optional[str] = None, port:
 class KostalPlenticore:
     def __init__(self,
                  name: str = "Kostal Plenticore",
-                 type: List[str] = ["kostal", "kostal_plenticore"],
+                 type: str = "kostal_plenticore",
                  id: int = 0,
                  configuration: KostalPlenticoreConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or KostalPlenticoreConfiguration()
 
diff --git a/packages/modules/devices/kostal/kostal_sem/config.py b/packages/modules/devices/kostal/kostal_sem/config.py
index c0e106d30a..776ceb4353 100644
--- a/packages/modules/devices/kostal/kostal_sem/config.py
+++ b/packages/modules/devices/kostal/kostal_sem/config.py
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 71, ip_address: Optional[str] = None, port:
 class KostalSem:
     def __init__(self,
                  name: str = "Kostal Smart Energy Meter oder TQ EM 410",
-                 type: List[str] = ["kostal", "kostal_sem"],
+                 type: str = "kostal_sem",
                  id: int = 0,
                  configuration: KostalSemConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or KostalSemConfiguration()
 
diff --git a/packages/modules/devices/kostal/kostal_steca/config.py b/packages/modules/devices/kostal/kostal_steca/config.py
index 35b956aa8f..a26568499b 100644
--- a/packages/modules/devices/kostal/kostal_steca/config.py
+++ b/packages/modules/devices/kostal/kostal_steca/config.py
@@ -13,12 +13,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class KostalSteca:
     def __init__(self,
                  name: str = "Kostal Piko MP oder Steca Grid Coolcept",
-                 type: List[str] = ["kostal", "kostal_steca"],
+                 type: str = "kostal_steca",
                  id: int = 0,
                  configuration: KostalStecaConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or KostalStecaConfiguration()
 
diff --git a/packages/modules/devices/kostal/vendor.py b/packages/modules/devices/kostal/vendor.py
index 84bbb00e01..3ac0f47215 100644
--- a/packages/modules/devices/kostal/vendor.py
+++ b/packages/modules/devices/kostal/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Kostal"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/lg/lg/config.py b/packages/modules/devices/lg/lg/config.py
index 37787e6241..5928426041 100644
--- a/packages/modules/devices/lg/lg/config.py
+++ b/packages/modules/devices/lg/lg/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
@@ -12,12 +12,11 @@ def __init__(self, ip_address: Optional[str] = None, password: Optional[str] = N
 class LG:
     def __init__(self,
                  name: str = "LG ESS V1.0",
-                 type: List[str] = ["lg", "lg"],
+                 type: str = "lg",
                  id: int = 0,
                  configuration: LgConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or LgConfiguration()
 
diff --git a/packages/modules/devices/lg/vendor.py b/packages/modules/devices/lg/vendor.py
index 795935380b..b17969d9a5 100644
--- a/packages/modules/devices/lg/vendor.py
+++ b/packages/modules/devices/lg/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "LG"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/mtec/mtec/config.py b/packages/modules/devices/mtec/mtec/config.py
index 52a6305867..2892f55e03 100644
--- a/packages/modules/devices/mtec/mtec/config.py
+++ b/packages/modules/devices/mtec/mtec/config.py
@@ -15,12 +15,11 @@ def __init__(self,
 class MTec:
     def __init__(self,
                  name: str = "M-Tec",
-                 type: List[str] = ["mtec", "mtec"],
+                 type: str = "mtec",
                  id: int = 0,
                  configuration: MTecConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or MTecConfiguration()
 
diff --git a/packages/modules/devices/mtec/vendor.py b/packages/modules/devices/mtec/vendor.py
index 2b6ccdf3b3..eea2dd4d8a 100644
--- a/packages/modules/devices/mtec/vendor.py
+++ b/packages/modules/devices/mtec/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "M-Tec"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/opendtu/opendtu/config.py b/packages/modules/devices/opendtu/opendtu/config.py
index ccd60146eb..79947e384d 100644
--- a/packages/modules/devices/opendtu/opendtu/config.py
+++ b/packages/modules/devices/opendtu/opendtu/config.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 from modules.devices.generic.json.config import Json, JsonConfiguration, JsonInverterConfiguration, JsonInverterSetup
 
@@ -14,11 +14,10 @@ def __init__(self, url: Optional[str] = None):
 class OpenDTU(Json):
     def __init__(self,
                  name: str = "Hoymiles über openDTU",
-                 type: List[str] = ["opendtu", "opendtu"],
-                 group: str = "other",
+                 type: str = "opendtu",
                  id: int = 0,
                  configuration: OpenDTUConfiguration = None) -> None:
-        super().__init__(name, type, group, id, configuration)
+        super().__init__(name, type, id, configuration)
 
 
 @auto_str
diff --git a/packages/modules/devices/opendtu/vendor.py b/packages/modules/devices/opendtu/vendor.py
index 268db2c294..7d8d44c520 100644
--- a/packages/modules/devices/opendtu/vendor.py
+++ b/packages/modules/devices/opendtu/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "OpenDTU"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/openWB/openwb_bat_kit/__init__.py b/packages/modules/devices/openwb/openwb_bat_kit/__init__.py
similarity index 100%
rename from packages/modules/devices/openWB/openwb_bat_kit/__init__.py
rename to packages/modules/devices/openwb/openwb_bat_kit/__init__.py
diff --git a/packages/modules/devices/openWB/openwb_bat_kit/bat.py b/packages/modules/devices/openwb/openwb_bat_kit/bat.py
similarity index 78%
rename from packages/modules/devices/openWB/openwb_bat_kit/bat.py
rename to packages/modules/devices/openwb/openwb_bat_kit/bat.py
index c5f88b1955..c8a793624a 100644
--- a/packages/modules/devices/openWB/openwb_bat_kit/bat.py
+++ b/packages/modules/devices/openwb/openwb_bat_kit/bat.py
@@ -3,10 +3,10 @@
 
 from modules.common import modbus
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.openWB.openwb_bat_kit.config import BatKitBatSetup
-from modules.devices.openWB.openwb_evu_kit.config import EvuKitBatSetup
-from modules.devices.openWB.openwb_flex.bat import BatKitFlex
-from modules.devices.openWB.openwb_flex.config import convert_to_flex_setup
+from modules.devices.openwb.openwb_bat_kit.config import BatKitBatSetup
+from modules.devices.openwb.openwb_evu_kit.config import EvuKitBatSetup
+from modules.devices.openwb.openwb_flex.bat import BatKitFlex
+from modules.devices.openwb.openwb_flex.config import convert_to_flex_setup
 
 
 class BatKit(BatKitFlex):
diff --git a/packages/modules/devices/openWB/openwb_bat_kit/config.py b/packages/modules/devices/openwb/openwb_bat_kit/config.py
similarity index 88%
rename from packages/modules/devices/openWB/openwb_bat_kit/config.py
rename to packages/modules/devices/openwb/openwb_bat_kit/config.py
index 2f944c503d..4c781ef0d3 100644
--- a/packages/modules/devices/openWB/openwb_bat_kit/config.py
+++ b/packages/modules/devices/openwb/openwb_bat_kit/config.py
@@ -1,5 +1,4 @@
 from modules.common.component_setup import ComponentSetup
-from typing import List
 
 
 class BatKitConfiguration:
@@ -10,12 +9,11 @@ def __init__(self):
 class BatKit:
     def __init__(self,
                  name: str = "openWB Speicher-Kit",
-                 type: List[str] = ["openWB", "openwb_bat_kit"],
+                 type: str = "openwb_bat_kit",
                  id: int = 0,
                  configuration: BatKitConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "openWB"
         self.id = id
         self.configuration = configuration or BatKitConfiguration()
 
diff --git a/packages/modules/devices/openWB/openwb_bat_kit/device.py b/packages/modules/devices/openwb/openwb_bat_kit/device.py
similarity index 96%
rename from packages/modules/devices/openWB/openwb_bat_kit/device.py
rename to packages/modules/devices/openwb/openwb_bat_kit/device.py
index 3b595e425b..e41a167b7c 100644
--- a/packages/modules/devices/openWB/openwb_bat_kit/device.py
+++ b/packages/modules/devices/openwb/openwb_bat_kit/device.py
@@ -6,8 +6,8 @@
 from modules.common import modbus
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.devices.openWB.openwb_bat_kit import bat
-from modules.devices.openWB.openwb_bat_kit.config import BatKit, BatKitBatSetup
+from modules.devices.openwb.openwb_bat_kit import bat
+from modules.devices.openwb.openwb_bat_kit.config import BatKit, BatKitBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/openWB/openwb_evu_kit/__init__.py b/packages/modules/devices/openwb/openwb_evu_kit/__init__.py
similarity index 100%
rename from packages/modules/devices/openWB/openwb_evu_kit/__init__.py
rename to packages/modules/devices/openwb/openwb_evu_kit/__init__.py
diff --git a/packages/modules/devices/openWB/openwb_evu_kit/bat.py b/packages/modules/devices/openwb/openwb_evu_kit/bat.py
similarity index 73%
rename from packages/modules/devices/openWB/openwb_evu_kit/bat.py
rename to packages/modules/devices/openwb/openwb_evu_kit/bat.py
index 888cfdb880..40064fe5f9 100644
--- a/packages/modules/devices/openWB/openwb_evu_kit/bat.py
+++ b/packages/modules/devices/openwb/openwb_evu_kit/bat.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.openWB.openwb_evu_kit.config import EvuKitBatSetup
+from modules.devices.openwb.openwb_evu_kit.config import EvuKitBatSetup
 
 
 component_descriptor = ComponentDescriptor(configuration_factory=EvuKitBatSetup)
diff --git a/packages/modules/devices/openWB/openwb_evu_kit/config.py b/packages/modules/devices/openwb/openwb_evu_kit/config.py
similarity index 94%
rename from packages/modules/devices/openWB/openwb_evu_kit/config.py
rename to packages/modules/devices/openwb/openwb_evu_kit/config.py
index 0163fde656..f01e53a01a 100644
--- a/packages/modules/devices/openWB/openwb_evu_kit/config.py
+++ b/packages/modules/devices/openwb/openwb_evu_kit/config.py
@@ -1,5 +1,4 @@
 from modules.common.component_setup import ComponentSetup
-from typing import List
 
 
 class EvuKitConfiguration:
@@ -10,12 +9,11 @@ def __init__(self):
 class EvuKit:
     def __init__(self,
                  name: str = "openWB EVU-Kit",
-                 type: List[str] = ["openWB", "openwb_evu_kit"],
+                 type: str = "openwb_evu_kit",
                  id: int = 0,
                  configuration: EvuKitConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "openWB"
         self.id = id
         self.configuration = configuration or EvuKitConfiguration()
 
diff --git a/packages/modules/devices/openWB/openwb_evu_kit/counter.py b/packages/modules/devices/openwb/openwb_evu_kit/counter.py
similarity index 84%
rename from packages/modules/devices/openWB/openwb_evu_kit/counter.py
rename to packages/modules/devices/openwb/openwb_evu_kit/counter.py
index 504b0ee7f5..2e30026e9a 100644
--- a/packages/modules/devices/openWB/openwb_evu_kit/counter.py
+++ b/packages/modules/devices/openwb/openwb_evu_kit/counter.py
@@ -4,9 +4,9 @@
 from dataclass_utils import dataclass_from_dict
 from modules.common import modbus
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.openWB.openwb_evu_kit.config import EvuKitCounterSetup
-from modules.devices.openWB.openwb_flex.counter import EvuKitFlex
-from modules.devices.openWB.openwb_flex.config import convert_to_flex_setup
+from modules.devices.openwb.openwb_evu_kit.config import EvuKitCounterSetup
+from modules.devices.openwb.openwb_flex.counter import EvuKitFlex
+from modules.devices.openwb.openwb_flex.config import convert_to_flex_setup
 
 
 class EvuKit(EvuKitFlex):
diff --git a/packages/modules/devices/openWB/openwb_evu_kit/device.py b/packages/modules/devices/openwb/openwb_evu_kit/device.py
similarity index 92%
rename from packages/modules/devices/openWB/openwb_evu_kit/device.py
rename to packages/modules/devices/openwb/openwb_evu_kit/device.py
index 5f603dbab2..c141d96b37 100644
--- a/packages/modules/devices/openWB/openwb_evu_kit/device.py
+++ b/packages/modules/devices/openwb/openwb_evu_kit/device.py
@@ -7,12 +7,12 @@
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.openWB.openwb_bat_kit.bat import BatKit
-from modules.devices.openWB.openwb_evu_kit import bat
-from modules.devices.openWB.openwb_evu_kit import counter
-from modules.devices.openWB.openwb_evu_kit import inverter
-from modules.devices.openWB.openwb_evu_kit.config import EvuKit, EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
-from modules.devices.openWB.openwb_pv_kit.inverter import PvKit
+from modules.devices.openwb.openwb_bat_kit.bat import BatKit
+from modules.devices.openwb.openwb_evu_kit import bat
+from modules.devices.openwb.openwb_evu_kit import counter
+from modules.devices.openwb.openwb_evu_kit import inverter
+from modules.devices.openwb.openwb_evu_kit.config import EvuKit, EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
+from modules.devices.openwb.openwb_pv_kit.inverter import PvKit
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/openWB/openwb_evu_kit/inverter.py b/packages/modules/devices/openwb/openwb_evu_kit/inverter.py
similarity index 74%
rename from packages/modules/devices/openWB/openwb_evu_kit/inverter.py
rename to packages/modules/devices/openwb/openwb_evu_kit/inverter.py
index b42ae826fa..99cacd8dd6 100644
--- a/packages/modules/devices/openWB/openwb_evu_kit/inverter.py
+++ b/packages/modules/devices/openwb/openwb_evu_kit/inverter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.openWB.openwb_evu_kit.config import EvuKitInverterSetup
+from modules.devices.openwb.openwb_evu_kit.config import EvuKitInverterSetup
 
 
 component_descriptor = ComponentDescriptor(configuration_factory=EvuKitInverterSetup)
diff --git a/packages/modules/devices/openWB/openwb_flex/__init__.py b/packages/modules/devices/openwb/openwb_flex/__init__.py
similarity index 100%
rename from packages/modules/devices/openWB/openwb_flex/__init__.py
rename to packages/modules/devices/openwb/openwb_flex/__init__.py
diff --git a/packages/modules/devices/openWB/openwb_flex/bat.py b/packages/modules/devices/openwb/openwb_flex/bat.py
similarity index 94%
rename from packages/modules/devices/openWB/openwb_flex/bat.py
rename to packages/modules/devices/openwb/openwb_flex/bat.py
index e3d0ccdd0e..d4df187cad 100644
--- a/packages/modules/devices/openWB/openwb_flex/bat.py
+++ b/packages/modules/devices/openwb/openwb_flex/bat.py
@@ -10,8 +10,8 @@
 from modules.common.sdm import Sdm630_72
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.openWB.openwb_flex.config import BatKitFlexSetup
-from modules.devices.openWB.openwb_flex.versions import kit_bat_version_factory
+from modules.devices.openwb.openwb_flex.config import BatKitFlexSetup
+from modules.devices.openwb.openwb_flex.versions import kit_bat_version_factory
 
 
 class BatKitFlex:
diff --git a/packages/modules/devices/openWB/openwb_flex/config.py b/packages/modules/devices/openwb/openwb_flex/config.py
similarity index 92%
rename from packages/modules/devices/openWB/openwb_flex/config.py
rename to packages/modules/devices/openwb/openwb_flex/config.py
index ffc487993c..37fdcb763b 100644
--- a/packages/modules/devices/openWB/openwb_flex/config.py
+++ b/packages/modules/devices/openwb/openwb_flex/config.py
@@ -1,9 +1,9 @@
-from typing import Optional, Union, overload, List
+from typing import Optional, Union, overload
 
 from modules.common.component_setup import ComponentSetup
-from modules.devices.openWB.openwb_bat_kit.config import BatKitBatSetup
-from modules.devices.openWB.openwb_evu_kit.config import EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
-from modules.devices.openWB.openwb_pv_kit.config import PvKitInverterSetup
+from modules.devices.openwb.openwb_bat_kit.config import BatKitBatSetup
+from modules.devices.openwb.openwb_evu_kit.config import EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
+from modules.devices.openwb.openwb_pv_kit.config import PvKitInverterSetup
 
 
 class FlexConfiguration:
@@ -15,12 +15,11 @@ def __init__(self, port: int = 8899, ip_address: Optional[str] = None,):
 class Flex:
     def __init__(self,
                  name: str = "openWB-Kit flex",
-                 type: List[str] = ["openWB", "openwb_flex"],
+                 type: str = "openwb_flex",
                  id: int = 0,
                  configuration: FlexConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "openWB"
         self.id = id
         self.configuration = configuration or FlexConfiguration()
 
diff --git a/packages/modules/devices/openWB/openwb_flex/consumption_counter.py b/packages/modules/devices/openwb/openwb_flex/consumption_counter.py
similarity index 94%
rename from packages/modules/devices/openWB/openwb_flex/consumption_counter.py
rename to packages/modules/devices/openwb/openwb_flex/consumption_counter.py
index 80543c1499..600f45d30b 100644
--- a/packages/modules/devices/openWB/openwb_flex/consumption_counter.py
+++ b/packages/modules/devices/openwb/openwb_flex/consumption_counter.py
@@ -8,8 +8,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.openWB.openwb_flex.config import ConsumptionCounterFlexSetup
-from modules.devices.openWB.openwb_flex.versions import consumption_counter_factory
+from modules.devices.openwb.openwb_flex.config import ConsumptionCounterFlexSetup
+from modules.devices.openwb.openwb_flex.versions import consumption_counter_factory
 
 
 class ConsumptionCounterFlex:
diff --git a/packages/modules/devices/openWB/openwb_flex/counter.py b/packages/modules/devices/openwb/openwb_flex/counter.py
similarity index 95%
rename from packages/modules/devices/openWB/openwb_flex/counter.py
rename to packages/modules/devices/openwb/openwb_flex/counter.py
index a539339578..ff942af8fd 100644
--- a/packages/modules/devices/openWB/openwb_flex/counter.py
+++ b/packages/modules/devices/openwb/openwb_flex/counter.py
@@ -11,8 +11,8 @@
 from modules.common.b23 import B23
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.openWB.openwb_flex.config import EvuKitFlexSetup
-from modules.devices.openWB.openwb_flex.versions import kit_counter_version_factory
+from modules.devices.openwb.openwb_flex.config import EvuKitFlexSetup
+from modules.devices.openwb.openwb_flex.versions import kit_counter_version_factory
 
 
 class EvuKitFlex:
diff --git a/packages/modules/devices/openWB/openwb_flex/device.py b/packages/modules/devices/openwb/openwb_flex/device.py
similarity index 87%
rename from packages/modules/devices/openWB/openwb_flex/device.py
rename to packages/modules/devices/openwb/openwb_flex/device.py
index 35cee91f45..d74764b4d0 100644
--- a/packages/modules/devices/openWB/openwb_flex/device.py
+++ b/packages/modules/devices/openwb/openwb_flex/device.py
@@ -6,15 +6,15 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.openWB.openwb_flex.bat import BatKitFlex
-from modules.devices.openWB.openwb_flex.config import (BatKitFlexSetup,
+from modules.devices.openwb.openwb_flex.bat import BatKitFlex
+from modules.devices.openwb.openwb_flex.config import (BatKitFlexSetup,
                                                        ConsumptionCounterFlexSetup,
                                                        EvuKitFlexSetup,
                                                        Flex,
                                                        PvKitFlexSetup)
-from modules.devices.openWB.openwb_flex.consumption_counter import ConsumptionCounterFlex
-from modules.devices.openWB.openwb_flex.counter import EvuKitFlex
-from modules.devices.openWB.openwb_flex.inverter import PvKitFlex
+from modules.devices.openwb.openwb_flex.consumption_counter import ConsumptionCounterFlex
+from modules.devices.openwb.openwb_flex.counter import EvuKitFlex
+from modules.devices.openwb.openwb_flex.inverter import PvKitFlex
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/openWB/openwb_flex/inverter.py b/packages/modules/devices/openwb/openwb_flex/inverter.py
similarity index 94%
rename from packages/modules/devices/openWB/openwb_flex/inverter.py
rename to packages/modules/devices/openwb/openwb_flex/inverter.py
index 369370ef5d..d712b81384 100644
--- a/packages/modules/devices/openWB/openwb_flex/inverter.py
+++ b/packages/modules/devices/openwb/openwb_flex/inverter.py
@@ -9,8 +9,8 @@
 from modules.common.lovato import Lovato
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.openWB.openwb_flex.config import PvKitFlexSetup
-from modules.devices.openWB.openwb_flex.versions import kit_inverter_version_factory
+from modules.devices.openwb.openwb_flex.config import PvKitFlexSetup
+from modules.devices.openwb.openwb_flex.versions import kit_inverter_version_factory
 
 
 class PvKitFlex:
diff --git a/packages/modules/devices/openWB/openwb_flex/versions.py b/packages/modules/devices/openwb/openwb_flex/versions.py
similarity index 100%
rename from packages/modules/devices/openWB/openwb_flex/versions.py
rename to packages/modules/devices/openwb/openwb_flex/versions.py
diff --git a/packages/modules/devices/openWB/openwb_pv_kit/__init__.py b/packages/modules/devices/openwb/openwb_pv_kit/__init__.py
similarity index 100%
rename from packages/modules/devices/openWB/openwb_pv_kit/__init__.py
rename to packages/modules/devices/openwb/openwb_pv_kit/__init__.py
diff --git a/packages/modules/devices/openWB/openwb_pv_kit/config.py b/packages/modules/devices/openwb/openwb_pv_kit/config.py
similarity index 88%
rename from packages/modules/devices/openWB/openwb_pv_kit/config.py
rename to packages/modules/devices/openwb/openwb_pv_kit/config.py
index 0ab51900ba..f09b662c06 100644
--- a/packages/modules/devices/openWB/openwb_pv_kit/config.py
+++ b/packages/modules/devices/openwb/openwb_pv_kit/config.py
@@ -1,5 +1,4 @@
 from modules.common.component_setup import ComponentSetup
-from typing import List
 
 
 class PvKitConfiguration:
@@ -10,12 +9,11 @@ def __init__(self):
 class PvKit:
     def __init__(self,
                  name: str = "openWB PV-Kit",
-                 type: List[str] = ["openWB", "openwb_pv_kit"],
+                 type: str = "openwb_pv_kit",
                  id: int = 0,
                  configuration: PvKitConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "openWB"
         self.id = id
         self.configuration = configuration or PvKitConfiguration()
 
diff --git a/packages/modules/devices/openWB/openwb_pv_kit/device.py b/packages/modules/devices/openwb/openwb_pv_kit/device.py
similarity index 96%
rename from packages/modules/devices/openWB/openwb_pv_kit/device.py
rename to packages/modules/devices/openwb/openwb_pv_kit/device.py
index 0e56149820..bd7a47b266 100644
--- a/packages/modules/devices/openWB/openwb_pv_kit/device.py
+++ b/packages/modules/devices/openwb/openwb_pv_kit/device.py
@@ -6,8 +6,8 @@
 from modules.common import modbus
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.openWB.openwb_pv_kit import inverter
-from modules.devices.openWB.openwb_pv_kit.config import PvKit, PvKitInverterSetup
+from modules.devices.openwb.openwb_pv_kit import inverter
+from modules.devices.openwb.openwb_pv_kit.config import PvKit, PvKitInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/openWB/openwb_pv_kit/inverter.py b/packages/modules/devices/openwb/openwb_pv_kit/inverter.py
similarity index 77%
rename from packages/modules/devices/openWB/openwb_pv_kit/inverter.py
rename to packages/modules/devices/openwb/openwb_pv_kit/inverter.py
index de543f1b28..51ac76d3a5 100644
--- a/packages/modules/devices/openWB/openwb_pv_kit/inverter.py
+++ b/packages/modules/devices/openwb/openwb_pv_kit/inverter.py
@@ -3,10 +3,10 @@
 
 from modules.common import modbus
 from modules.common.component_type import ComponentDescriptor
-from modules.devices.openWB.openwb_evu_kit.config import EvuKitInverterSetup
-from modules.devices.openWB.openwb_flex.config import convert_to_flex_setup
-from modules.devices.openWB.openwb_flex.inverter import PvKitFlex
-from modules.devices.openWB.openwb_pv_kit.config import PvKitInverterSetup
+from modules.devices.openwb.openwb_evu_kit.config import EvuKitInverterSetup
+from modules.devices.openwb.openwb_flex.config import convert_to_flex_setup
+from modules.devices.openwb.openwb_flex.inverter import PvKitFlex
+from modules.devices.openwb.openwb_pv_kit.config import PvKitInverterSetup
 
 
 class PvKit(PvKitFlex):
diff --git a/packages/modules/devices/openWB/vendor.py b/packages/modules/devices/openwb/vendor.py
similarity index 60%
rename from packages/modules/devices/openWB/vendor.py
rename to packages/modules/devices/openwb/vendor.py
index 663191823b..7452320418 100644
--- a/packages/modules/devices/openWB/vendor.py
+++ b/packages/modules/devices/openwb/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
-        self.vendor = "OpenWB"
+        self.vendor = "openWB"
+        self.group = "openwb"
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/powerdog/powerdog/config.py b/packages/modules/devices/powerdog/powerdog/config.py
index f83e26b34d..4b64cae52e 100644
--- a/packages/modules/devices/powerdog/powerdog/config.py
+++ b/packages/modules/devices/powerdog/powerdog/config.py
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Powerdog:
     def __init__(self,
                  name: str = "Powerdog",
-                 type: List[str] = ["powerdog", "powerdog"],
+                 type: str = "powerdog",
                  id: int = 0,
                  configuration: PowerdogConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or PowerdogConfiguration()
 
diff --git a/packages/modules/devices/powerdog/vendor.py b/packages/modules/devices/powerdog/vendor.py
index d2f9ca6629..e17c86f5c8 100644
--- a/packages/modules/devices/powerdog/vendor.py
+++ b/packages/modules/devices/powerdog/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "PowerDog"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/powerfox/powerfox/config.py b/packages/modules/devices/powerfox/powerfox/config.py
index 2c52ebacad..daf2ead755 100644
--- a/packages/modules/devices/powerfox/powerfox/config.py
+++ b/packages/modules/devices/powerfox/powerfox/config.py
@@ -12,12 +12,11 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None):
 class Powerfox:
     def __init__(self,
                  name: str = "Powerfox",
-                 type: List[str] = ["powerfox", "powerfox"],
+                 type: str = "powerfox",
                  id: int = 0,
                  configuration: PowerfoxConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or PowerfoxConfiguration()
 
diff --git a/packages/modules/devices/powerfox/vendor.py b/packages/modules/devices/powerfox/vendor.py
index 2117d42348..8a6e1a6afb 100644
--- a/packages/modules/devices/powerfox/vendor.py
+++ b/packages/modules/devices/powerfox/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Powerfox"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/qcells/qcells/config.py b/packages/modules/devices/qcells/qcells/config.py
index ea4a40089f..65558934a5 100644
--- a/packages/modules/devices/qcells/qcells/config.py
+++ b/packages/modules/devices/qcells/qcells/config.py
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class QCells:
     def __init__(self,
                  name: str = "QCells ESS",
-                 type: List[str] = ["qcells", "qcells"],
+                 type: str = "qcells",
                  id: int = 0,
                  configuration: QCellsConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or QCellsConfiguration()
 
diff --git a/packages/modules/devices/qcells/vendor.py b/packages/modules/devices/qcells/vendor.py
index b963c9890c..b10951f772 100644
--- a/packages/modules/devices/qcells/vendor.py
+++ b/packages/modules/devices/qcells/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "QCells"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/rct/rct/config.py b/packages/modules/devices/rct/rct/config.py
index 7f5acfb3a6..a409fcb947 100644
--- a/packages/modules/devices/rct/rct/config.py
+++ b/packages/modules/devices/rct/rct/config.py
@@ -13,12 +13,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class Rct:
     def __init__(self,
                  name: str = "RCT",
-                 type: List[str] = ["rct", "rct"],
+                 type: str = "rct",
                  id: int = 0,
                  configuration: RctConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or RctConfiguration()
 
diff --git a/packages/modules/devices/rct/vendor.py b/packages/modules/devices/rct/vendor.py
index 6c9a795389..dd84067d61 100644
--- a/packages/modules/devices/rct/vendor.py
+++ b/packages/modules/devices/rct/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "RCT Power"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/saxpower/saxpower/config.py b/packages/modules/devices/saxpower/saxpower/config.py
index 83e4f3d578..1b723fb741 100644
--- a/packages/modules/devices/saxpower/saxpower/config.py
+++ b/packages/modules/devices/saxpower/saxpower/config.py
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 64, ip_address: Optional[str] = None, port:
 class Saxpower:
     def __init__(self,
                  name: str = "Saxpower",
-                 type: List[str] = ["saxpower", "saxpower"],
+                 type: str = "saxpower",
                  id: int = 0,
                  configuration: SaxpowerConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SaxpowerConfiguration()
 
diff --git a/packages/modules/devices/saxpower/vendor.py b/packages/modules/devices/saxpower/vendor.py
index c7c0b97b62..457b1ea01b 100644
--- a/packages/modules/devices/saxpower/vendor.py
+++ b/packages/modules/devices/saxpower/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "SAX Power"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/shelly/shelly/config.py b/packages/modules/devices/shelly/shelly/config.py
index b982370fbc..53dfeab186 100644
--- a/packages/modules/devices/shelly/shelly/config.py
+++ b/packages/modules/devices/shelly/shelly/config.py
@@ -14,12 +14,11 @@ def __init__(self, ip_address: Optional[str] = None, generation: Optional[int] =
 class Shelly:
     def __init__(self,
                  name: str = "Shelly",
-                 type: List[str] = ["shelly", "shelly"],
+                 type: str = "shelly",
                  id: int = 0,
                  configuration: ShellyConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or ShellyConfiguration()
 
diff --git a/packages/modules/devices/shelly/vendor.py b/packages/modules/devices/shelly/vendor.py
index 001e4564cd..b038cae43e 100644
--- a/packages/modules/devices/shelly/vendor.py
+++ b/packages/modules/devices/shelly/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Shelly"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/siemens/siemens/config.py b/packages/modules/devices/siemens/siemens/config.py
index db266b6eca..2162f4c814 100644
--- a/packages/modules/devices/siemens/siemens/config.py
+++ b/packages/modules/devices/siemens/siemens/config.py
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Siemens:
     def __init__(self,
                  name: str = "Siemens",
-                 type: List[str] = ["siemens", "siemens"],
+                 type: str = "siemens",
                  id: int = 0,
                  configuration: SiemensConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SiemensConfiguration()
 
diff --git a/packages/modules/devices/siemens/siemens_sentron/config.py b/packages/modules/devices/siemens/siemens_sentron/config.py
index 572ed91b3c..122de4da87 100644
--- a/packages/modules/devices/siemens/siemens_sentron/config.py
+++ b/packages/modules/devices/siemens/siemens_sentron/config.py
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class SiemensSentron:
     def __init__(self,
                  name: str = "Siemens Sentron",
-                 type: List[str] = ["siemens", "siemens_sentron"],
+                 type: str = "siemens_sentron",
                  id: int = 0,
                  configuration: SiemensSentronConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SiemensSentronConfiguration()
 
diff --git a/packages/modules/devices/siemens/vendor.py b/packages/modules/devices/siemens/vendor.py
index 3f1cddf9df..25a9679ad6 100644
--- a/packages/modules/devices/siemens/vendor.py
+++ b/packages/modules/devices/siemens/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Siemens"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sma/sma_shm/config.py b/packages/modules/devices/sma/sma_shm/config.py
index 7e85b18288..e06de42952 100644
--- a/packages/modules/devices/sma/sma_shm/config.py
+++ b/packages/modules/devices/sma/sma_shm/config.py
@@ -10,12 +10,11 @@ def __init__(self):
 class Speedwire:
     def __init__(self,
                  name: str = "SMA Sunny Home Manager 2.0, Energy Meter",
-                 type: List[str] = ["sma", "sma_shm"],
+                 type: str = "sma_shm",
                  id: int = 0,
                  configuration: SpeedwireComponentConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SpeedwireComponentConfiguration()
 
diff --git a/packages/modules/devices/sma/sma_sunny_boy/config.py b/packages/modules/devices/sma/sma_sunny_boy/config.py
index 8b843a64bd..0cc076864f 100644
--- a/packages/modules/devices/sma/sma_sunny_boy/config.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/config.py
@@ -13,12 +13,11 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class SmaSunnyBoy:
     def __init__(self,
                  name: str = "SMA Sunny Boy/Tripower",
-                 type: List[str] = ["sma", "sma_sunny_boy"],
+                 type: str = "sma_sunny_boy",
                  id: int = 0,
                  configuration: SmaSunnyBoyConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SmaSunnyBoyConfiguration()
 
diff --git a/packages/modules/devices/sma/sma_sunny_island/config.py b/packages/modules/devices/sma/sma_sunny_island/config.py
index 4d126ea8f3..056311fd44 100644
--- a/packages/modules/devices/sma/sma_sunny_island/config.py
+++ b/packages/modules/devices/sma/sma_sunny_island/config.py
@@ -12,12 +12,11 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class SmaSunnyIsland:
     def __init__(self,
                  name: str = "SMA Sunny Island, Sunny Tripower X",
-                 type: List[str] = ["sma", "sma_sunny_island"],
+                 type: str = "sma_sunny_island",
                  id: int = 0,
                  configuration: SmaSunnyIslandConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SmaSunnyIslandConfiguration()
 
diff --git a/packages/modules/devices/sma/sma_webbox/config.py b/packages/modules/devices/sma/sma_webbox/config.py
index 49378f9bf8..f6918a5449 100644
--- a/packages/modules/devices/sma/sma_webbox/config.py
+++ b/packages/modules/devices/sma/sma_webbox/config.py
@@ -11,12 +11,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class SmaWebbox:
     def __init__(self,
                  name: str = "SMA Webbox",
-                 type: List[str] = ["sma", "sma_webbox"],
+                 type: str = "sma_webbox",
                  id: int = 0,
                  configuration: SmaWWebboxConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SmaWWebboxConfiguration()
 
diff --git a/packages/modules/devices/sma/vendor.py b/packages/modules/devices/sma/vendor.py
index a82e2c1039..af8f92e0cf 100644
--- a/packages/modules/devices/sma/vendor.py
+++ b/packages/modules/devices/sma/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "SMA"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/smart_me/smart_me/config.py b/packages/modules/devices/smart_me/smart_me/config.py
index 399101d89b..2e87cbb6b3 100644
--- a/packages/modules/devices/smart_me/smart_me/config.py
+++ b/packages/modules/devices/smart_me/smart_me/config.py
@@ -12,12 +12,11 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None):
 class SmartMe:
     def __init__(self,
                  name: str = "smart-me",
-                 type: List[str] = ["smart_me", "smart_me"],
+                 type: str = "smart_me",
                  id: int = 0,
                  configuration: SmartMeConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SmartMeConfiguration()
 
diff --git a/packages/modules/devices/smart_me/vendor.py b/packages/modules/devices/smart_me/vendor.py
index 990f262380..de6209781b 100644
--- a/packages/modules/devices/smart_me/vendor.py
+++ b/packages/modules/devices/smart_me/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Smart-me"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/smartfox/smartfox/config.py b/packages/modules/devices/smartfox/smartfox/config.py
index 37d8f95204..c7028b72b1 100644
--- a/packages/modules/devices/smartfox/smartfox/config.py
+++ b/packages/modules/devices/smartfox/smartfox/config.py
@@ -11,12 +11,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class Smartfox:
     def __init__(self,
                  name: str = "Smartfox",
-                 type: List[str] = ["smartfox", "smartfox"],
+                 type: str = "smartfox",
                  id: int = 0,
                  configuration: SmartfoxConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SmartfoxConfiguration()
 
diff --git a/packages/modules/devices/smartfox/vendor.py b/packages/modules/devices/smartfox/vendor.py
index 2c80bd19a1..729a5f36da 100644
--- a/packages/modules/devices/smartfox/vendor.py
+++ b/packages/modules/devices/smartfox/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Smartfox"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sofar/sofar/config.py b/packages/modules/devices/sofar/sofar/config.py
index ab4cc661f0..c5136d1c5a 100644
--- a/packages/modules/devices/sofar/sofar/config.py
+++ b/packages/modules/devices/sofar/sofar/config.py
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Sofar:
     def __init__(self,
                  name: str = "SofarSolar",
-                 type: List[str] = ["sofar", "sofar"],
+                 type: str = "sofar",
                  id: int = 0,
                  configuration: SofarConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SofarConfiguration()
 
diff --git a/packages/modules/devices/sofar/vendor.py b/packages/modules/devices/sofar/vendor.py
index 5243525c2a..5e7f617d93 100644
--- a/packages/modules/devices/sofar/vendor.py
+++ b/packages/modules/devices/sofar/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "SofarSolar"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solar_log/solar_log/config.py b/packages/modules/devices/solar_log/solar_log/config.py
index 8437c32128..706b61232e 100644
--- a/packages/modules/devices/solar_log/solar_log/config.py
+++ b/packages/modules/devices/solar_log/solar_log/config.py
@@ -11,12 +11,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class SolarLog:
     def __init__(self,
                  name: str = "Solar-Log",
-                 type: List[str] = ["solar_log", "solar_log"],
+                 type: str = "solar_log",
                  id: int = 0,
                  configuration: SolarLogConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SolarLogConfiguration()
 
diff --git a/packages/modules/devices/solar_log/vendor.py b/packages/modules/devices/solar_log/vendor.py
index d21ee3af56..faeabbf921 100644
--- a/packages/modules/devices/solar_log/vendor.py
+++ b/packages/modules/devices/solar_log/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Solar-Log"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solar_view/solar_view/config.py b/packages/modules/devices/solar_view/solar_view/config.py
index 9a3dac03d1..6d1cdd83bd 100644
--- a/packages/modules/devices/solar_view/solar_view/config.py
+++ b/packages/modules/devices/solar_view/solar_view/config.py
@@ -16,12 +16,11 @@ def __init__(self,
 class SolarView:
     def __init__(self,
                  name: str = "SolarView",
-                 type: List[str] = ["solar_view", "solar_view"],
+                 type: str = "solar_view",
                  id: int = 0,
                  configuration: SolarViewConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SolarViewConfiguration()
 
diff --git a/packages/modules/devices/solar_view/vendor.py b/packages/modules/devices/solar_view/vendor.py
index 770c621385..568007ddea 100644
--- a/packages/modules/devices/solar_view/vendor.py
+++ b/packages/modules/devices/solar_view/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "SolarView"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solar_watt/solar_watt/config.py b/packages/modules/devices/solar_watt/solar_watt/config.py
index 758270fc01..406c50a997 100644
--- a/packages/modules/devices/solar_watt/solar_watt/config.py
+++ b/packages/modules/devices/solar_watt/solar_watt/config.py
@@ -12,12 +12,11 @@ def __init__(self, ip_address: Optional[str] = None, energy_manager: bool = True
 class SolarWatt:
     def __init__(self,
                  name: str = "Solarwatt/My Reserve",
-                 type: List[str] = ["solar_watt", "solar_watt"],
+                 type: str = "solar_watt",
                  id: int = 0,
                  configuration: SolarWattConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SolarWattConfiguration()
 
diff --git a/packages/modules/devices/solar_watt/vendor.py b/packages/modules/devices/solar_watt/vendor.py
index 44c0adf946..454e8c5615 100644
--- a/packages/modules/devices/solar_watt/vendor.py
+++ b/packages/modules/devices/solar_watt/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Solarwatt"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solar_world/solar_world/config.py b/packages/modules/devices/solar_world/solar_world/config.py
index 72de0ec21e..0d20d558bf 100644
--- a/packages/modules/devices/solar_world/solar_world/config.py
+++ b/packages/modules/devices/solar_world/solar_world/config.py
@@ -13,12 +13,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class SolarWorld:
     def __init__(self,
                  name: str = "SolarWorld",
-                 type: List[str] = ["solar_world", "solar_world"],
+                 type: str = "solar_world",
                  id: int = 0,
                  configuration: SolarWorldConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SolarWorldConfiguration()
 
diff --git a/packages/modules/devices/solar_world/vendor.py b/packages/modules/devices/solar_world/vendor.py
index 35108bcd9b..de55b9134e 100644
--- a/packages/modules/devices/solar_world/vendor.py
+++ b/packages/modules/devices/solar_world/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "SolarWorld"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solaredge/solaredge/config.py b/packages/modules/devices/solaredge/solaredge/config.py
index 4f2ac1b5d0..7476a76f0e 100644
--- a/packages/modules/devices/solaredge/solaredge/config.py
+++ b/packages/modules/devices/solaredge/solaredge/config.py
@@ -13,12 +13,11 @@ def __init__(self,
 class Solaredge:
     def __init__(self,
                  name: str = "SolarEdge",
-                 type: List[str] = ["solaredge", "solaredge"],
+                 type: str = "solaredge",
                  id: int = 0,
                  configuration:  SolaredgeConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SolaredgeConfiguration()
 
diff --git a/packages/modules/devices/solaredge/vendor.py b/packages/modules/devices/solaredge/vendor.py
index 3208c9beb3..39ad0caf33 100644
--- a/packages/modules/devices/solaredge/vendor.py
+++ b/packages/modules/devices/solaredge/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "SolarEdge"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solarmax/solarmax/config.py b/packages/modules/devices/solarmax/solarmax/config.py
index 5a6a2df106..322193adda 100644
--- a/packages/modules/devices/solarmax/solarmax/config.py
+++ b/packages/modules/devices/solarmax/solarmax/config.py
@@ -12,12 +12,11 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class Solarmax:
     def __init__(self,
                  name: str = "Solarmax",
-                 type: List[str] = ["solarmax", "solarmax"],
+                 type: str = "solarmax",
                  id: int = 0,
                  configuration: SolarmaxConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SolarmaxConfiguration()
 
diff --git a/packages/modules/devices/solarmax/vendor.py b/packages/modules/devices/solarmax/vendor.py
index 661c2ea98b..e47e303073 100644
--- a/packages/modules/devices/solarmax/vendor.py
+++ b/packages/modules/devices/solarmax/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Solarmax"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solax/solax/config.py b/packages/modules/devices/solax/solax/config.py
index cca45dace5..e69feb3d13 100644
--- a/packages/modules/devices/solax/solax/config.py
+++ b/packages/modules/devices/solax/solax/config.py
@@ -13,12 +13,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Solax:
     def __init__(self,
                  name: str = "Solax",
-                 type: List[str] = ["solax", "solax"],
+                 type: str = "solax",
                  id: int = 0,
                  configuration: SolaxConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SolaxConfiguration()
 
diff --git a/packages/modules/devices/solax/vendor.py b/packages/modules/devices/solax/vendor.py
index c7819717ac..e226be105e 100644
--- a/packages/modules/devices/solax/vendor.py
+++ b/packages/modules/devices/solax/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Solax"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sonnenbatterie/sonnenbatterie/config.py b/packages/modules/devices/sonnenbatterie/sonnenbatterie/config.py
index 87494da456..e3a6b60d34 100644
--- a/packages/modules/devices/sonnenbatterie/sonnenbatterie/config.py
+++ b/packages/modules/devices/sonnenbatterie/sonnenbatterie/config.py
@@ -12,12 +12,11 @@ def __init__(self, variant: int = 0, ip_address: Optional[str] = None):
 class SonnenBatterie:
     def __init__(self,
                  name: str = "Sonnenbatterie",
-                 type: List[str] = ["sonnenbatterie", "sonnenbatterie"],
+                 type: str = "sonnenbatterie",
                  id: int = 0,
                  configuration: SonnenBatterieConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SonnenBatterieConfiguration()
 
diff --git a/packages/modules/devices/sonnenbatterie/vendor.py b/packages/modules/devices/sonnenbatterie/vendor.py
index fb30d27124..d8d866372c 100644
--- a/packages/modules/devices/sonnenbatterie/vendor.py
+++ b/packages/modules/devices/sonnenbatterie/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
-        self.vendor = "Sonnenbatterie"
+        self.vendor = "Sonnen"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/studer/studer/config.py b/packages/modules/devices/studer/studer/config.py
index 50dda32ac9..fb99f66daf 100644
--- a/packages/modules/devices/studer/studer/config.py
+++ b/packages/modules/devices/studer/studer/config.py
@@ -12,12 +12,11 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class Studer:
     def __init__(self,
                  name: str = "Studer",
-                 type: List[str] = ["studer", "studer"],
+                 type: str = "studer",
                  id: int = 0,
                  configuration: StuderConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or StuderConfiguration()
 
diff --git a/packages/modules/devices/studer/vendor.py b/packages/modules/devices/studer/vendor.py
index 2909039cdb..ade1b881e9 100644
--- a/packages/modules/devices/studer/vendor.py
+++ b/packages/modules/devices/studer/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Studer innotec"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sungrow/sungrow/config.py b/packages/modules/devices/sungrow/sungrow/config.py
index 473e4de5ae..4ac0647b5b 100644
--- a/packages/modules/devices/sungrow/sungrow/config.py
+++ b/packages/modules/devices/sungrow/sungrow/config.py
@@ -19,12 +19,11 @@ def __init__(self,
 class Sungrow:
     def __init__(self,
                  name: str = "Sungrow",
-                 type: List[str] = ["sungrow", "sungrow"],
+                 type: str = "sungrow",
                  id: int = 0,
                  configuration: SungrowConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SungrowConfiguration()
 
diff --git a/packages/modules/devices/sungrow/vendor.py b/packages/modules/devices/sungrow/vendor.py
index 273e98e535..634b600fbf 100644
--- a/packages/modules/devices/sungrow/vendor.py
+++ b/packages/modules/devices/sungrow/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Sungrow"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/sunways/sunways/config.py b/packages/modules/devices/sunways/sunways/config.py
index 7e1ba667b6..2922021d82 100644
--- a/packages/modules/devices/sunways/sunways/config.py
+++ b/packages/modules/devices/sunways/sunways/config.py
@@ -12,12 +12,11 @@ def __init__(self, password: Optional[str] = None, ip_address: Optional[str] = N
 class Sunways:
     def __init__(self,
                  name: str = "Sunways",
-                 type: List[str] = ["sunways", "sunways"],
+                 type: str = "sunways",
                  id: int = 0,
                  configuration: SunwaysConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or SunwaysConfiguration()
 
diff --git a/packages/modules/devices/sunways/vendor.py b/packages/modules/devices/sunways/vendor.py
index 3ad9fa3645..af7531887e 100644
--- a/packages/modules/devices/sunways/vendor.py
+++ b/packages/modules/devices/sunways/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Sunways"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/tasmota/tasmota/config.py b/packages/modules/devices/tasmota/tasmota/config.py
index 260cabe7e2..53197fc6d8 100644
--- a/packages/modules/devices/tasmota/tasmota/config.py
+++ b/packages/modules/devices/tasmota/tasmota/config.py
@@ -11,12 +11,11 @@ def __init__(self, ip_address: Optional[str] = None, phase: int = 1):
 class Tasmota:
     def __init__(self,
                  name: str = "Tasmota",
-                 type: List[str] = ["tasmota", "tasmota"],
+                 type: str = "tasmota",
                  id: int = 0,
                  configuration: TasmotaConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or TasmotaConfiguration()
 
diff --git a/packages/modules/devices/tasmota/vendor.py b/packages/modules/devices/tasmota/vendor.py
index 075393bc53..0b1f0c5b7a 100644
--- a/packages/modules/devices/tasmota/vendor.py
+++ b/packages/modules/devices/tasmota/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Tasmota"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/tesla/tesla/config.py b/packages/modules/devices/tesla/tesla/config.py
index fc58ed2c46..bbcf097650 100644
--- a/packages/modules/devices/tesla/tesla/config.py
+++ b/packages/modules/devices/tesla/tesla/config.py
@@ -13,12 +13,11 @@ def __init__(self, password: Optional[str] = None, email: Optional[str] = None,
 class Tesla:
     def __init__(self,
                  name: str = "Tesla",
-                 type: List[str] = ["tesla", "tesla"],
+                 type: str = "tesla",
                  id: int = 0,
                  configuration: TeslaConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or TeslaConfiguration()
 
diff --git a/packages/modules/devices/tesla/vendor.py b/packages/modules/devices/tesla/vendor.py
index 7d3d3a9d7c..76b52813f0 100644
--- a/packages/modules/devices/tesla/vendor.py
+++ b/packages/modules/devices/tesla/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Tesla"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/varta/varta/config.py b/packages/modules/devices/varta/varta/config.py
index 615eb2c9cf..8e921e5eb7 100644
--- a/packages/modules/devices/varta/varta/config.py
+++ b/packages/modules/devices/varta/varta/config.py
@@ -15,12 +15,11 @@ def __init__(self, modbus_id: int = 1, ip_address: Optional[str] = None, port: i
 class Varta:
     def __init__(self,
                  name: str = "Varta",
-                 type: List[str] = ["varta", "varta"],
+                 type: str = "varta",
                  id: int = 0,
                  configuration: VartaConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or VartaConfiguration()
 
diff --git a/packages/modules/devices/varta/vendor.py b/packages/modules/devices/varta/vendor.py
index 7d859da99f..477274a74f 100644
--- a/packages/modules/devices/varta/vendor.py
+++ b/packages/modules/devices/varta/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Varta"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/vendors.py b/packages/modules/devices/vendors.py
new file mode 100644
index 0000000000..7dabd03ad1
--- /dev/null
+++ b/packages/modules/devices/vendors.py
@@ -0,0 +1,7 @@
+from enum import Enum
+
+
+class VendorGroup(Enum):
+    GENERIC = "generic"
+    OPENWB = "openwb"
+    VENDORS = "vendors"
diff --git a/packages/modules/devices/victron/vendor.py b/packages/modules/devices/victron/vendor.py
index 8907fe50fd..1888996666 100644
--- a/packages/modules/devices/victron/vendor.py
+++ b/packages/modules/devices/victron/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Victron"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/victron/victron/config.py b/packages/modules/devices/victron/victron/config.py
index 27ff6f2626..610f532f07 100644
--- a/packages/modules/devices/victron/victron/config.py
+++ b/packages/modules/devices/victron/victron/config.py
@@ -12,12 +12,11 @@ def __init__(self, ip_address: Optional[str] = None, port: int = 502):
 class Victron:
     def __init__(self,
                  name: str = "Victron",
-                 type: List[str] = ["victron", "victron"],
+                 type: str = "victron",
                  id: int = 0,
                  configuration: VictronConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or VictronConfiguration()
 
diff --git a/packages/modules/devices/vzlogger/vendor.py b/packages/modules/devices/vzlogger/vendor.py
index f007261650..6a1e6a8b28 100644
--- a/packages/modules/devices/vzlogger/vendor.py
+++ b/packages/modules/devices/vzlogger/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "VZLogger"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/vzlogger/vzlogger/config.py b/packages/modules/devices/vzlogger/vzlogger/config.py
index bc0a68eb71..84ad5ab759 100644
--- a/packages/modules/devices/vzlogger/vzlogger/config.py
+++ b/packages/modules/devices/vzlogger/vzlogger/config.py
@@ -13,12 +13,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class VZLogger:
     def __init__(self,
                  name: str = "VZLogger",
-                 type: List[str] = ["vzlogger", "vzlogger"],
+                 type: str = "vzlogger",
                  id: int = 0,
                  configuration: VZLoggerConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or VZLoggerConfiguration()
 
diff --git a/packages/modules/devices/youless/vendor.py b/packages/modules/devices/youless/vendor.py
index 39879fc466..2bb1c3f9b2 100644
--- a/packages/modules/devices/youless/vendor.py
+++ b/packages/modules/devices/youless/vendor.py
@@ -1,9 +1,11 @@
 from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
         self.vendor = "Youless"
+        self.group = VendorGroup.VENDORS.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/youless/youless/config.py b/packages/modules/devices/youless/youless/config.py
index 3fc1c08273..a66e8569eb 100644
--- a/packages/modules/devices/youless/youless/config.py
+++ b/packages/modules/devices/youless/youless/config.py
@@ -13,12 +13,11 @@ def __init__(self, ip_address: Optional[str] = None):
 class Youless:
     def __init__(self,
                  name: str = "Youless",
-                 type: List[str] = ["youless", "youless"],
+                 type: str = "youless",
                  id: int = 0,
                  configuration: YoulessConfiguration = None) -> None:
         self.name = name
         self.type = type
-        self.group = "other"
         self.id = id
         self.configuration = configuration or YoulessConfiguration()
 

From 7250161570b0913ca2a2b160bb7aef17c514d619 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Wed, 7 Aug 2024 10:39:17 +0200
Subject: [PATCH 065/205] fix vendor groups

---
 packages/modules/devices/generic/vendor.py | 4 ++--
 packages/modules/devices/openwb/vendor.py  | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/packages/modules/devices/generic/vendor.py b/packages/modules/devices/generic/vendor.py
index 5a79141056..b0a4cfb042 100644
--- a/packages/modules/devices/generic/vendor.py
+++ b/packages/modules/devices/generic/vendor.py
@@ -4,8 +4,8 @@
 
 class Vendor:
     def __init__(self):
-        self.vendor = None
-        self.group = "generic"
+        self.vendor = "Universell"
+        self.group = VendorGroup.GENERIC.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/openwb/vendor.py b/packages/modules/devices/openwb/vendor.py
index 7452320418..013da81c62 100644
--- a/packages/modules/devices/openwb/vendor.py
+++ b/packages/modules/devices/openwb/vendor.py
@@ -5,7 +5,7 @@
 class Vendor:
     def __init__(self):
         self.vendor = "openWB"
-        self.group = "openwb"
+        self.group = VendorGroup.OPENWB.value
 
 
 vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)

From 4f5a70d1ba80cfb1f81fd05c4a844b9f079157b0 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Thu, 8 Aug 2024 11:50:46 +0200
Subject: [PATCH 066/205] fix unused imports

---
 packages/modules/devices/kostal/kostal_piko/config.py       | 2 +-
 packages/modules/devices/kostal/kostal_piko_old/config.py   | 2 +-
 packages/modules/devices/kostal/kostal_plenticore/config.py | 2 +-
 packages/modules/devices/kostal/kostal_sem/config.py        | 2 +-
 packages/modules/devices/kostal/kostal_steca/config.py      | 2 +-
 packages/modules/devices/mtec/mtec/config.py                | 2 +-
 packages/modules/devices/powerdog/powerdog/config.py        | 2 +-
 packages/modules/devices/powerfox/powerfox/config.py        | 2 +-
 packages/modules/devices/qcells/qcells/config.py            | 2 +-
 packages/modules/devices/rct/rct/config.py                  | 2 +-
 packages/modules/devices/saxpower/saxpower/config.py        | 2 +-
 packages/modules/devices/shelly/shelly/config.py            | 2 +-
 packages/modules/devices/siemens/siemens/config.py          | 2 +-
 packages/modules/devices/siemens/siemens_sentron/config.py  | 2 +-
 packages/modules/devices/sma/sma_shm/config.py              | 1 -
 packages/modules/devices/sma/sma_sunny_boy/config.py        | 2 +-
 packages/modules/devices/sma/sma_sunny_island/config.py     | 2 +-
 packages/modules/devices/sma/sma_webbox/config.py           | 2 +-
 packages/modules/devices/smart_me/smart_me/config.py        | 2 +-
 packages/modules/devices/smartfox/smartfox/config.py        | 2 +-
 packages/modules/devices/sofar/sofar/config.py              | 2 +-
 packages/modules/devices/solar_log/solar_log/config.py      | 2 +-
 packages/modules/devices/solar_view/solar_view/config.py    | 2 +-
 packages/modules/devices/solar_watt/solar_watt/config.py    | 2 +-
 packages/modules/devices/solar_world/solar_world/config.py  | 2 +-
 packages/modules/devices/solaredge/solaredge/config.py      | 1 -
 packages/modules/devices/solarmax/solarmax/config.py        | 2 +-
 packages/modules/devices/solax/solax/config.py              | 2 +-
 packages/modules/devices/studer/studer/config.py            | 2 +-
 packages/modules/devices/sungrow/sungrow/config.py          | 2 +-
 packages/modules/devices/sunways/sunways/config.py          | 2 +-
 packages/modules/devices/tasmota/tasmota/config.py          | 2 +-
 packages/modules/devices/tesla/tesla/config.py              | 2 +-
 packages/modules/devices/varta/varta/config.py              | 2 +-
 packages/modules/devices/victron/victron/config.py          | 2 +-
 packages/modules/devices/vzlogger/vzlogger/config.py        | 2 +-
 packages/modules/devices/youless/youless/config.py          | 2 +-
 37 files changed, 35 insertions(+), 37 deletions(-)

diff --git a/packages/modules/devices/kostal/kostal_piko/config.py b/packages/modules/devices/kostal/kostal_piko/config.py
index 30d387ef5f..2045c5717f 100644
--- a/packages/modules/devices/kostal/kostal_piko/config.py
+++ b/packages/modules/devices/kostal/kostal_piko/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/kostal/kostal_piko_old/config.py b/packages/modules/devices/kostal/kostal_piko_old/config.py
index e44f59319f..e22ddbf85e 100644
--- a/packages/modules/devices/kostal/kostal_piko_old/config.py
+++ b/packages/modules/devices/kostal/kostal_piko_old/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/kostal/kostal_plenticore/config.py b/packages/modules/devices/kostal/kostal_plenticore/config.py
index 4d02116e4a..92a461728a 100644
--- a/packages/modules/devices/kostal/kostal_plenticore/config.py
+++ b/packages/modules/devices/kostal/kostal_plenticore/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/kostal/kostal_sem/config.py b/packages/modules/devices/kostal/kostal_sem/config.py
index 776ceb4353..a42ebc19dc 100644
--- a/packages/modules/devices/kostal/kostal_sem/config.py
+++ b/packages/modules/devices/kostal/kostal_sem/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/kostal/kostal_steca/config.py b/packages/modules/devices/kostal/kostal_steca/config.py
index a26568499b..5f4814db4a 100644
--- a/packages/modules/devices/kostal/kostal_steca/config.py
+++ b/packages/modules/devices/kostal/kostal_steca/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/mtec/mtec/config.py b/packages/modules/devices/mtec/mtec/config.py
index 2892f55e03..d8c693d0a1 100644
--- a/packages/modules/devices/mtec/mtec/config.py
+++ b/packages/modules/devices/mtec/mtec/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 
 from modules.common.component_setup import ComponentSetup
diff --git a/packages/modules/devices/powerdog/powerdog/config.py b/packages/modules/devices/powerdog/powerdog/config.py
index 4b64cae52e..8f7abf3a91 100644
--- a/packages/modules/devices/powerdog/powerdog/config.py
+++ b/packages/modules/devices/powerdog/powerdog/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/powerfox/powerfox/config.py b/packages/modules/devices/powerfox/powerfox/config.py
index daf2ead755..883f47114a 100644
--- a/packages/modules/devices/powerfox/powerfox/config.py
+++ b/packages/modules/devices/powerfox/powerfox/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/qcells/qcells/config.py b/packages/modules/devices/qcells/qcells/config.py
index 65558934a5..a77897e531 100644
--- a/packages/modules/devices/qcells/qcells/config.py
+++ b/packages/modules/devices/qcells/qcells/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/rct/rct/config.py b/packages/modules/devices/rct/rct/config.py
index a409fcb947..e328ac5796 100644
--- a/packages/modules/devices/rct/rct/config.py
+++ b/packages/modules/devices/rct/rct/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/saxpower/saxpower/config.py b/packages/modules/devices/saxpower/saxpower/config.py
index 1b723fb741..d705689bed 100644
--- a/packages/modules/devices/saxpower/saxpower/config.py
+++ b/packages/modules/devices/saxpower/saxpower/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/shelly/shelly/config.py b/packages/modules/devices/shelly/shelly/config.py
index 53dfeab186..db5005aba3 100644
--- a/packages/modules/devices/shelly/shelly/config.py
+++ b/packages/modules/devices/shelly/shelly/config.py
@@ -1,5 +1,5 @@
 from modules.common.component_setup import ComponentSetup
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 
 
diff --git a/packages/modules/devices/siemens/siemens/config.py b/packages/modules/devices/siemens/siemens/config.py
index 2162f4c814..5738bb3972 100644
--- a/packages/modules/devices/siemens/siemens/config.py
+++ b/packages/modules/devices/siemens/siemens/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/siemens/siemens_sentron/config.py b/packages/modules/devices/siemens/siemens_sentron/config.py
index 122de4da87..b2fd6a0137 100644
--- a/packages/modules/devices/siemens/siemens_sentron/config.py
+++ b/packages/modules/devices/siemens/siemens_sentron/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/sma/sma_shm/config.py b/packages/modules/devices/sma/sma_shm/config.py
index e06de42952..0e2bd2021f 100644
--- a/packages/modules/devices/sma/sma_shm/config.py
+++ b/packages/modules/devices/sma/sma_shm/config.py
@@ -1,5 +1,4 @@
 from modules.common.component_setup import ComponentSetup
-from typing import List
 
 
 class SpeedwireComponentConfiguration:
diff --git a/packages/modules/devices/sma/sma_sunny_boy/config.py b/packages/modules/devices/sma/sma_sunny_boy/config.py
index 0cc076864f..2f49203c42 100644
--- a/packages/modules/devices/sma/sma_sunny_boy/config.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 from modules.devices.sma.sma_sunny_boy.inv_version import SmaInverterVersion
diff --git a/packages/modules/devices/sma/sma_sunny_island/config.py b/packages/modules/devices/sma/sma_sunny_island/config.py
index 056311fd44..459adbfde3 100644
--- a/packages/modules/devices/sma/sma_sunny_island/config.py
+++ b/packages/modules/devices/sma/sma_sunny_island/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/sma/sma_webbox/config.py b/packages/modules/devices/sma/sma_webbox/config.py
index f6918a5449..b5ecfa42c4 100644
--- a/packages/modules/devices/sma/sma_webbox/config.py
+++ b/packages/modules/devices/sma/sma_webbox/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/smart_me/smart_me/config.py b/packages/modules/devices/smart_me/smart_me/config.py
index 2e87cbb6b3..f7207014ed 100644
--- a/packages/modules/devices/smart_me/smart_me/config.py
+++ b/packages/modules/devices/smart_me/smart_me/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/smartfox/smartfox/config.py b/packages/modules/devices/smartfox/smartfox/config.py
index c7028b72b1..0b2610e332 100644
--- a/packages/modules/devices/smartfox/smartfox/config.py
+++ b/packages/modules/devices/smartfox/smartfox/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/sofar/sofar/config.py b/packages/modules/devices/sofar/sofar/config.py
index c5136d1c5a..b065d6c616 100644
--- a/packages/modules/devices/sofar/sofar/config.py
+++ b/packages/modules/devices/sofar/sofar/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/solar_log/solar_log/config.py b/packages/modules/devices/solar_log/solar_log/config.py
index 706b61232e..5825952dbf 100644
--- a/packages/modules/devices/solar_log/solar_log/config.py
+++ b/packages/modules/devices/solar_log/solar_log/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/solar_view/solar_view/config.py b/packages/modules/devices/solar_view/solar_view/config.py
index 6d1cdd83bd..1c6eecc618 100644
--- a/packages/modules/devices/solar_view/solar_view/config.py
+++ b/packages/modules/devices/solar_view/solar_view/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/solar_watt/solar_watt/config.py b/packages/modules/devices/solar_watt/solar_watt/config.py
index 406c50a997..a1f622570e 100644
--- a/packages/modules/devices/solar_watt/solar_watt/config.py
+++ b/packages/modules/devices/solar_watt/solar_watt/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/solar_world/solar_world/config.py b/packages/modules/devices/solar_world/solar_world/config.py
index 0d20d558bf..e6fd62cab6 100644
--- a/packages/modules/devices/solar_world/solar_world/config.py
+++ b/packages/modules/devices/solar_world/solar_world/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/solaredge/solaredge/config.py b/packages/modules/devices/solaredge/solaredge/config.py
index 7476a76f0e..e4d7a05cd0 100644
--- a/packages/modules/devices/solaredge/solaredge/config.py
+++ b/packages/modules/devices/solaredge/solaredge/config.py
@@ -1,5 +1,4 @@
 from modules.common.component_setup import ComponentSetup
-from typing import List
 
 
 class SolaredgeConfiguration:
diff --git a/packages/modules/devices/solarmax/solarmax/config.py b/packages/modules/devices/solarmax/solarmax/config.py
index 322193adda..70f6c90abc 100644
--- a/packages/modules/devices/solarmax/solarmax/config.py
+++ b/packages/modules/devices/solarmax/solarmax/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/solax/solax/config.py b/packages/modules/devices/solax/solax/config.py
index e69feb3d13..60e31b7aed 100644
--- a/packages/modules/devices/solax/solax/config.py
+++ b/packages/modules/devices/solax/solax/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/studer/studer/config.py b/packages/modules/devices/studer/studer/config.py
index fb99f66daf..ce7d26fef4 100644
--- a/packages/modules/devices/studer/studer/config.py
+++ b/packages/modules/devices/studer/studer/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/sungrow/sungrow/config.py b/packages/modules/devices/sungrow/sungrow/config.py
index 4ac0647b5b..28d1c60653 100644
--- a/packages/modules/devices/sungrow/sungrow/config.py
+++ b/packages/modules/devices/sungrow/sungrow/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 from modules.devices.sungrow.sungrow.version import Version
diff --git a/packages/modules/devices/sunways/sunways/config.py b/packages/modules/devices/sunways/sunways/config.py
index 2922021d82..27c48195de 100644
--- a/packages/modules/devices/sunways/sunways/config.py
+++ b/packages/modules/devices/sunways/sunways/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/tasmota/tasmota/config.py b/packages/modules/devices/tasmota/tasmota/config.py
index 53197fc6d8..866b92e4db 100644
--- a/packages/modules/devices/tasmota/tasmota/config.py
+++ b/packages/modules/devices/tasmota/tasmota/config.py
@@ -1,5 +1,5 @@
 from modules.common.component_setup import ComponentSetup
-from typing import Optional, List
+from typing import Optional
 
 
 class TasmotaConfiguration:
diff --git a/packages/modules/devices/tesla/tesla/config.py b/packages/modules/devices/tesla/tesla/config.py
index bbcf097650..4c802bedf9 100644
--- a/packages/modules/devices/tesla/tesla/config.py
+++ b/packages/modules/devices/tesla/tesla/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/varta/varta/config.py b/packages/modules/devices/varta/varta/config.py
index 8e921e5eb7..d49e005e0a 100644
--- a/packages/modules/devices/varta/varta/config.py
+++ b/packages/modules/devices/varta/varta/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/victron/victron/config.py b/packages/modules/devices/victron/victron/config.py
index 610f532f07..c0f42ab5d9 100644
--- a/packages/modules/devices/victron/victron/config.py
+++ b/packages/modules/devices/victron/victron/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/vzlogger/vzlogger/config.py b/packages/modules/devices/vzlogger/vzlogger/config.py
index 84ad5ab759..741576174a 100644
--- a/packages/modules/devices/vzlogger/vzlogger/config.py
+++ b/packages/modules/devices/vzlogger/vzlogger/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/youless/youless/config.py b/packages/modules/devices/youless/youless/config.py
index a66e8569eb..cc49351dd0 100644
--- a/packages/modules/devices/youless/youless/config.py
+++ b/packages/modules/devices/youless/youless/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
 

From 5ede749f55a13dc7579d06e4f1ca13c6c39848d3 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Thu, 8 Aug 2024 11:51:05 +0200
Subject: [PATCH 067/205] rename vendor "sonnen"

---
 packages/modules/devices/{sonnenbatterie => sonnen}/__init__.py | 0
 .../{sonnenbatterie => sonnen}/sonnenbatterie/__init__.py       | 0
 .../devices/{sonnenbatterie => sonnen}/sonnenbatterie/bat.py    | 0
 .../devices/{sonnenbatterie => sonnen}/sonnenbatterie/config.py | 2 +-
 .../{sonnenbatterie => sonnen}/sonnenbatterie/counter.py        | 0
 .../devices/{sonnenbatterie => sonnen}/sonnenbatterie/device.py | 0
 .../{sonnenbatterie => sonnen}/sonnenbatterie/inverter.py       | 0
 packages/modules/devices/{sonnenbatterie => sonnen}/vendor.py   | 0
 8 files changed, 1 insertion(+), 1 deletion(-)
 rename packages/modules/devices/{sonnenbatterie => sonnen}/__init__.py (100%)
 rename packages/modules/devices/{sonnenbatterie => sonnen}/sonnenbatterie/__init__.py (100%)
 rename packages/modules/devices/{sonnenbatterie => sonnen}/sonnenbatterie/bat.py (100%)
 rename packages/modules/devices/{sonnenbatterie => sonnen}/sonnenbatterie/config.py (98%)
 rename packages/modules/devices/{sonnenbatterie => sonnen}/sonnenbatterie/counter.py (100%)
 rename packages/modules/devices/{sonnenbatterie => sonnen}/sonnenbatterie/device.py (100%)
 rename packages/modules/devices/{sonnenbatterie => sonnen}/sonnenbatterie/inverter.py (100%)
 rename packages/modules/devices/{sonnenbatterie => sonnen}/vendor.py (100%)

diff --git a/packages/modules/devices/sonnenbatterie/__init__.py b/packages/modules/devices/sonnen/__init__.py
similarity index 100%
rename from packages/modules/devices/sonnenbatterie/__init__.py
rename to packages/modules/devices/sonnen/__init__.py
diff --git a/packages/modules/devices/sonnenbatterie/sonnenbatterie/__init__.py b/packages/modules/devices/sonnen/sonnenbatterie/__init__.py
similarity index 100%
rename from packages/modules/devices/sonnenbatterie/sonnenbatterie/__init__.py
rename to packages/modules/devices/sonnen/sonnenbatterie/__init__.py
diff --git a/packages/modules/devices/sonnenbatterie/sonnenbatterie/bat.py b/packages/modules/devices/sonnen/sonnenbatterie/bat.py
similarity index 100%
rename from packages/modules/devices/sonnenbatterie/sonnenbatterie/bat.py
rename to packages/modules/devices/sonnen/sonnenbatterie/bat.py
diff --git a/packages/modules/devices/sonnenbatterie/sonnenbatterie/config.py b/packages/modules/devices/sonnen/sonnenbatterie/config.py
similarity index 98%
rename from packages/modules/devices/sonnenbatterie/sonnenbatterie/config.py
rename to packages/modules/devices/sonnen/sonnenbatterie/config.py
index e3a6b60d34..870fd1b24e 100644
--- a/packages/modules/devices/sonnenbatterie/sonnenbatterie/config.py
+++ b/packages/modules/devices/sonnen/sonnenbatterie/config.py
@@ -1,4 +1,4 @@
-from typing import Optional, List
+from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
 
diff --git a/packages/modules/devices/sonnenbatterie/sonnenbatterie/counter.py b/packages/modules/devices/sonnen/sonnenbatterie/counter.py
similarity index 100%
rename from packages/modules/devices/sonnenbatterie/sonnenbatterie/counter.py
rename to packages/modules/devices/sonnen/sonnenbatterie/counter.py
diff --git a/packages/modules/devices/sonnenbatterie/sonnenbatterie/device.py b/packages/modules/devices/sonnen/sonnenbatterie/device.py
similarity index 100%
rename from packages/modules/devices/sonnenbatterie/sonnenbatterie/device.py
rename to packages/modules/devices/sonnen/sonnenbatterie/device.py
diff --git a/packages/modules/devices/sonnenbatterie/sonnenbatterie/inverter.py b/packages/modules/devices/sonnen/sonnenbatterie/inverter.py
similarity index 100%
rename from packages/modules/devices/sonnenbatterie/sonnenbatterie/inverter.py
rename to packages/modules/devices/sonnen/sonnenbatterie/inverter.py
diff --git a/packages/modules/devices/sonnenbatterie/vendor.py b/packages/modules/devices/sonnen/vendor.py
similarity index 100%
rename from packages/modules/devices/sonnenbatterie/vendor.py
rename to packages/modules/devices/sonnen/vendor.py

From c11a09c0524553978f94648127f5baf167a9f000 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Thu, 8 Aug 2024 12:21:58 +0200
Subject: [PATCH 068/205] fix configuration_test.py

---
 packages/modules/configuration_test.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/modules/configuration_test.py b/packages/modules/configuration_test.py
index 0de0c77819..80b9752398 100644
--- a/packages/modules/configuration_test.py
+++ b/packages/modules/configuration_test.py
@@ -6,7 +6,7 @@
 from test_utils.test_environment import running_on_github
 
 
-def test_pub_configurable(monkeypatch):
+def test_pub_configurable(monkeypatch, mock_pub):
     # setup
     if running_on_github():
         # run test on github

From 1c998ee37ac074ff0e6484fff400bb965d6c2686 Mon Sep 17 00:00:00 2001
From: pama87 <patrick.mayer@openwb.de>
Date: Thu, 8 Aug 2024 11:36:39 +0200
Subject: [PATCH 069/205] Anpassung Pfad addDevice

---
 packages/helpermodules/command.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py
index 4440515448..dd0f42b665 100644
--- a/packages/helpermodules/command.py
+++ b/packages/helpermodules/command.py
@@ -140,7 +140,9 @@ def addDevice(self, connection_id: str, payload: dict) -> None:
         """ sendet das Topic, zu dem ein neues Device erstellt werden soll.
         """
         new_id = self.max_id_device + 1
-        dev = importlib.import_module(".devices."+payload["data"]["type"]+".device", "modules")
+        device_data = payload["data"]["type"]
+        device_path = ".".join(device_data)
+        dev = importlib.import_module(".devices."+device_path+".device", "modules")
         device_default = dataclass_utils.asdict(dev.device_descriptor.configuration_factory())
         device_default["id"] = new_id
         Pub().pub(f'openWB/set/system/device/{new_id}/config', device_default)

From e5cf52fa9f922e05615491f7e8d767f5317f273f Mon Sep 17 00:00:00 2001
From: pama87 <patrick.mayer@openwb.de>
Date: Thu, 8 Aug 2024 12:20:22 +0200
Subject: [PATCH 070/205] Korrektur Pfad sonnebatterie

---
 packages/modules/devices/sonnen/sonnenbatterie/bat.py     | 2 +-
 packages/modules/devices/sonnen/sonnenbatterie/counter.py | 2 +-
 packages/modules/devices/sonnen/sonnenbatterie/device.py  | 8 ++++----
 .../modules/devices/sonnen/sonnenbatterie/inverter.py     | 2 +-
 4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/packages/modules/devices/sonnen/sonnenbatterie/bat.py b/packages/modules/devices/sonnen/sonnenbatterie/bat.py
index c1d809606f..120de9598c 100644
--- a/packages/modules/devices/sonnen/sonnenbatterie/bat.py
+++ b/packages/modules/devices/sonnen/sonnenbatterie/bat.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.sonnenbatterie.sonnenbatterie.config import SonnenbatterieBatSetup
+from modules.devices.sonnen.sonnenbatterie.config import SonnenbatterieBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sonnen/sonnenbatterie/counter.py b/packages/modules/devices/sonnen/sonnenbatterie/counter.py
index d0c2f1c510..10b4cf1f7c 100644
--- a/packages/modules/devices/sonnen/sonnenbatterie/counter.py
+++ b/packages/modules/devices/sonnen/sonnenbatterie/counter.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.sonnenbatterie.sonnenbatterie.config import SonnenbatterieCounterSetup
+from modules.devices.sonnen.sonnenbatterie.config import SonnenbatterieCounterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sonnen/sonnenbatterie/device.py b/packages/modules/devices/sonnen/sonnenbatterie/device.py
index 46d27c21e1..c5ac46c461 100644
--- a/packages/modules/devices/sonnen/sonnenbatterie/device.py
+++ b/packages/modules/devices/sonnen/sonnenbatterie/device.py
@@ -8,10 +8,10 @@
 from helpermodules.cli import run_using_positional_cli_args
 from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.sonnenbatterie.sonnenbatterie import bat, counter, inverter
-from modules.devices.sonnenbatterie.sonnenbatterie.config import (SonnenBatterie, SonnenbatterieBatSetup,
-                                                                  SonnenbatterieCounterSetup,
-                                                                  SonnenbatterieInverterSetup)
+from modules.devices.sonnen.sonnenbatterie import bat, counter, inverter
+from modules.devices.sonnen.sonnenbatterie.config import (SonnenBatterie, SonnenbatterieBatSetup,
+                                                          SonnenbatterieCounterSetup,
+                                                          SonnenbatterieInverterSetup)
 log = logging.getLogger(__name__)
 
 
diff --git a/packages/modules/devices/sonnen/sonnenbatterie/inverter.py b/packages/modules/devices/sonnen/sonnenbatterie/inverter.py
index 30aeeda251..134cb015f3 100644
--- a/packages/modules/devices/sonnen/sonnenbatterie/inverter.py
+++ b/packages/modules/devices/sonnen/sonnenbatterie/inverter.py
@@ -9,7 +9,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.sonnenbatterie.sonnenbatterie.config import SonnenbatterieInverterSetup
+from modules.devices.sonnen.sonnenbatterie.config import SonnenbatterieInverterSetup
 
 log = logging.getLogger(__name__)
 

From 51c685299ebb1675388889ba87542f2534992597 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Thu, 8 Aug 2024 12:31:52 +0200
Subject: [PATCH 071/205] Revert "fix configuration_test.py"

This reverts commit d69385b793ceedb6a8169d3c85857d86181c5e6b.
---
 packages/modules/configuration_test.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/modules/configuration_test.py b/packages/modules/configuration_test.py
index 80b9752398..0de0c77819 100644
--- a/packages/modules/configuration_test.py
+++ b/packages/modules/configuration_test.py
@@ -6,7 +6,7 @@
 from test_utils.test_environment import running_on_github
 
 
-def test_pub_configurable(monkeypatch, mock_pub):
+def test_pub_configurable(monkeypatch):
     # setup
     if running_on_github():
         # run test on github

From d4391beb432cc82b906c64d024030118dfb18c5b Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Fri, 9 Aug 2024 09:42:01 +0200
Subject: [PATCH 072/205] add vendor definitions

---
 packages/modules/devices/alpha_ess/vendor.py     | 3 +++
 packages/modules/devices/azzurro_zcs/vendor.py   | 3 +++
 packages/modules/devices/batterx/vendor.py       | 3 +++
 packages/modules/devices/benning/vendor.py       | 3 +++
 packages/modules/devices/byd/vendor.py           | 3 +++
 packages/modules/devices/carlo_gavazzi/vendor.py | 3 +++
 packages/modules/devices/deye/vendor.py          | 3 +++
 packages/modules/devices/discovergy/vendor.py    | 3 +++
 packages/modules/devices/e3dc/vendor.py          | 3 +++
 packages/modules/devices/enphase/vendor.py       | 3 +++
 packages/modules/devices/fems/vendor.py          | 3 +++
 packages/modules/devices/fox_ess/vendor.py       | 3 +++
 packages/modules/devices/fronius/vendor.py       | 3 +++
 packages/modules/devices/generic/vendor.py       | 3 +++
 packages/modules/devices/good_we/vendor.py       | 3 +++
 packages/modules/devices/huawei/__init__.py      | 0
 packages/modules/devices/huawei/vendor.py        | 3 +++
 packages/modules/devices/janitza/vendor.py       | 3 +++
 packages/modules/devices/kostal/__init__.py      | 0
 packages/modules/devices/kostal/vendor.py        | 3 +++
 packages/modules/devices/lg/vendor.py            | 3 +++
 packages/modules/devices/mtec/vendor.py          | 3 +++
 packages/modules/devices/opendtu/vendor.py       | 3 +++
 packages/modules/devices/openwb/__init__.py      | 0
 packages/modules/devices/openwb/vendor.py        | 3 +++
 packages/modules/devices/powerdog/vendor.py      | 3 +++
 packages/modules/devices/powerfox/vendor.py      | 3 +++
 packages/modules/devices/qcells/vendor.py        | 3 +++
 packages/modules/devices/rct/vendor.py           | 3 +++
 packages/modules/devices/saxpower/vendor.py      | 3 +++
 packages/modules/devices/shelly/vendor.py        | 3 +++
 packages/modules/devices/siemens/__init__.py     | 0
 packages/modules/devices/siemens/vendor.py       | 3 +++
 packages/modules/devices/sma/__init__.py         | 0
 packages/modules/devices/sma/vendor.py           | 3 +++
 packages/modules/devices/smart_me/vendor.py      | 3 +++
 packages/modules/devices/smartfox/vendor.py      | 3 +++
 packages/modules/devices/sofar/vendor.py         | 3 +++
 packages/modules/devices/solar_log/vendor.py     | 3 +++
 packages/modules/devices/solar_view/vendor.py    | 3 +++
 packages/modules/devices/solar_watt/vendor.py    | 3 +++
 packages/modules/devices/solar_world/vendor.py   | 3 +++
 packages/modules/devices/solaredge/vendor.py     | 3 +++
 packages/modules/devices/solarmax/vendor.py      | 3 +++
 packages/modules/devices/solax/vendor.py         | 3 +++
 packages/modules/devices/sonnen/vendor.py        | 3 +++
 packages/modules/devices/studer/vendor.py        | 3 +++
 packages/modules/devices/sungrow/vendor.py       | 3 +++
 packages/modules/devices/sunways/vendor.py       | 3 +++
 packages/modules/devices/tasmota/vendor.py       | 3 +++
 packages/modules/devices/tesla/vendor.py         | 3 +++
 packages/modules/devices/varta/vendor.py         | 3 +++
 packages/modules/devices/victron/vendor.py       | 3 +++
 packages/modules/devices/vzlogger/vendor.py      | 3 +++
 packages/modules/devices/youless/vendor.py       | 3 +++
 55 files changed, 150 insertions(+)
 create mode 100644 packages/modules/devices/huawei/__init__.py
 create mode 100644 packages/modules/devices/kostal/__init__.py
 create mode 100644 packages/modules/devices/openwb/__init__.py
 create mode 100644 packages/modules/devices/siemens/__init__.py
 create mode 100644 packages/modules/devices/sma/__init__.py

diff --git a/packages/modules/devices/alpha_ess/vendor.py b/packages/modules/devices/alpha_ess/vendor.py
index 8edec114c9..47e355904a 100644
--- a/packages/modules/devices/alpha_ess/vendor.py
+++ b/packages/modules/devices/alpha_ess/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "AlphaESS"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/azzurro_zcs/vendor.py b/packages/modules/devices/azzurro_zcs/vendor.py
index 8b9f4d0944..8932999af2 100644
--- a/packages/modules/devices/azzurro_zcs/vendor.py
+++ b/packages/modules/devices/azzurro_zcs/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Azzurro ZCS"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/batterx/vendor.py b/packages/modules/devices/batterx/vendor.py
index 0c0141309d..e00b708bb3 100644
--- a/packages/modules/devices/batterx/vendor.py
+++ b/packages/modules/devices/batterx/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Batterx"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/benning/vendor.py b/packages/modules/devices/benning/vendor.py
index 6a7bf00f92..6243c2038b 100644
--- a/packages/modules/devices/benning/vendor.py
+++ b/packages/modules/devices/benning/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Benning"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/byd/vendor.py b/packages/modules/devices/byd/vendor.py
index 8ba8572851..6aad5d5156 100644
--- a/packages/modules/devices/byd/vendor.py
+++ b/packages/modules/devices/byd/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "BYD"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/carlo_gavazzi/vendor.py b/packages/modules/devices/carlo_gavazzi/vendor.py
index cdc92c1b3c..781c66c5eb 100644
--- a/packages/modules/devices/carlo_gavazzi/vendor.py
+++ b/packages/modules/devices/carlo_gavazzi/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Carlo Gavazzi"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/deye/vendor.py b/packages/modules/devices/deye/vendor.py
index 5578a9b33c..4394901491 100644
--- a/packages/modules/devices/deye/vendor.py
+++ b/packages/modules/devices/deye/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Deye/Jinko"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/discovergy/vendor.py b/packages/modules/devices/discovergy/vendor.py
index 32b7412ba1..9bd2ed1600 100644
--- a/packages/modules/devices/discovergy/vendor.py
+++ b/packages/modules/devices/discovergy/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Discovergy"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/e3dc/vendor.py b/packages/modules/devices/e3dc/vendor.py
index 8b4f329da5..71a411b17c 100644
--- a/packages/modules/devices/e3dc/vendor.py
+++ b/packages/modules/devices/e3dc/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "E3/DC"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/enphase/vendor.py b/packages/modules/devices/enphase/vendor.py
index 6a9177977d..d8612f3f6e 100644
--- a/packages/modules/devices/enphase/vendor.py
+++ b/packages/modules/devices/enphase/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Enphase"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/fems/vendor.py b/packages/modules/devices/fems/vendor.py
index b77c66516f..ef31a77583 100644
--- a/packages/modules/devices/fems/vendor.py
+++ b/packages/modules/devices/fems/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "openEMS, Fenecon FEMS, CENTURIO, Kaco"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/fox_ess/vendor.py b/packages/modules/devices/fox_ess/vendor.py
index f8c12e2374..2393312794 100644
--- a/packages/modules/devices/fox_ess/vendor.py
+++ b/packages/modules/devices/fox_ess/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Fox ESS"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/fronius/vendor.py b/packages/modules/devices/fronius/vendor.py
index 2cd4b9661f..0273b4731a 100644
--- a/packages/modules/devices/fronius/vendor.py
+++ b/packages/modules/devices/fronius/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Fronius"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/generic/vendor.py b/packages/modules/devices/generic/vendor.py
index b0a4cfb042..04d4a0c59f 100644
--- a/packages/modules/devices/generic/vendor.py
+++ b/packages/modules/devices/generic/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Universell"
         self.group = VendorGroup.GENERIC.value
 
diff --git a/packages/modules/devices/good_we/vendor.py b/packages/modules/devices/good_we/vendor.py
index caa80053a0..0aecea076f 100644
--- a/packages/modules/devices/good_we/vendor.py
+++ b/packages/modules/devices/good_we/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "GoodWe"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/huawei/__init__.py b/packages/modules/devices/huawei/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/huawei/vendor.py b/packages/modules/devices/huawei/vendor.py
index 9599c78246..c3f16b986e 100644
--- a/packages/modules/devices/huawei/vendor.py
+++ b/packages/modules/devices/huawei/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Huawei"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/janitza/vendor.py b/packages/modules/devices/janitza/vendor.py
index 7747efb46c..92f202a652 100644
--- a/packages/modules/devices/janitza/vendor.py
+++ b/packages/modules/devices/janitza/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Janitza"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/kostal/__init__.py b/packages/modules/devices/kostal/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/kostal/vendor.py b/packages/modules/devices/kostal/vendor.py
index 3ac0f47215..7885e03eed 100644
--- a/packages/modules/devices/kostal/vendor.py
+++ b/packages/modules/devices/kostal/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Kostal"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/lg/vendor.py b/packages/modules/devices/lg/vendor.py
index b17969d9a5..d69bb85b5f 100644
--- a/packages/modules/devices/lg/vendor.py
+++ b/packages/modules/devices/lg/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "LG"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/mtec/vendor.py b/packages/modules/devices/mtec/vendor.py
index eea2dd4d8a..71ab697f69 100644
--- a/packages/modules/devices/mtec/vendor.py
+++ b/packages/modules/devices/mtec/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "M-Tec"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/opendtu/vendor.py b/packages/modules/devices/opendtu/vendor.py
index 7d8d44c520..797a5ed86e 100644
--- a/packages/modules/devices/opendtu/vendor.py
+++ b/packages/modules/devices/opendtu/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "OpenDTU"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/openwb/__init__.py b/packages/modules/devices/openwb/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/openwb/vendor.py b/packages/modules/devices/openwb/vendor.py
index 013da81c62..f07445ac46 100644
--- a/packages/modules/devices/openwb/vendor.py
+++ b/packages/modules/devices/openwb/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "openWB"
         self.group = VendorGroup.OPENWB.value
 
diff --git a/packages/modules/devices/powerdog/vendor.py b/packages/modules/devices/powerdog/vendor.py
index e17c86f5c8..753bea30f1 100644
--- a/packages/modules/devices/powerdog/vendor.py
+++ b/packages/modules/devices/powerdog/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "PowerDog"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/powerfox/vendor.py b/packages/modules/devices/powerfox/vendor.py
index 8a6e1a6afb..b3a3b5c804 100644
--- a/packages/modules/devices/powerfox/vendor.py
+++ b/packages/modules/devices/powerfox/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Powerfox"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/qcells/vendor.py b/packages/modules/devices/qcells/vendor.py
index b10951f772..8dee6e8e53 100644
--- a/packages/modules/devices/qcells/vendor.py
+++ b/packages/modules/devices/qcells/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "QCells"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/rct/vendor.py b/packages/modules/devices/rct/vendor.py
index dd84067d61..8290a70d02 100644
--- a/packages/modules/devices/rct/vendor.py
+++ b/packages/modules/devices/rct/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "RCT Power"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/saxpower/vendor.py b/packages/modules/devices/saxpower/vendor.py
index 457b1ea01b..1b8df62fac 100644
--- a/packages/modules/devices/saxpower/vendor.py
+++ b/packages/modules/devices/saxpower/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "SAX Power"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/shelly/vendor.py b/packages/modules/devices/shelly/vendor.py
index b038cae43e..f4c9e8c5b2 100644
--- a/packages/modules/devices/shelly/vendor.py
+++ b/packages/modules/devices/shelly/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Shelly"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/siemens/__init__.py b/packages/modules/devices/siemens/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/siemens/vendor.py b/packages/modules/devices/siemens/vendor.py
index 25a9679ad6..a1b9c18bd3 100644
--- a/packages/modules/devices/siemens/vendor.py
+++ b/packages/modules/devices/siemens/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Siemens"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/sma/__init__.py b/packages/modules/devices/sma/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/sma/vendor.py b/packages/modules/devices/sma/vendor.py
index af8f92e0cf..ab8a9ef732 100644
--- a/packages/modules/devices/sma/vendor.py
+++ b/packages/modules/devices/sma/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "SMA"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/smart_me/vendor.py b/packages/modules/devices/smart_me/vendor.py
index de6209781b..59c701730a 100644
--- a/packages/modules/devices/smart_me/vendor.py
+++ b/packages/modules/devices/smart_me/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Smart-me"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/smartfox/vendor.py b/packages/modules/devices/smartfox/vendor.py
index 729a5f36da..84f95a1bef 100644
--- a/packages/modules/devices/smartfox/vendor.py
+++ b/packages/modules/devices/smartfox/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Smartfox"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/sofar/vendor.py b/packages/modules/devices/sofar/vendor.py
index 5e7f617d93..e59b381134 100644
--- a/packages/modules/devices/sofar/vendor.py
+++ b/packages/modules/devices/sofar/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "SofarSolar"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/solar_log/vendor.py b/packages/modules/devices/solar_log/vendor.py
index faeabbf921..45f5934768 100644
--- a/packages/modules/devices/solar_log/vendor.py
+++ b/packages/modules/devices/solar_log/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Solar-Log"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/solar_view/vendor.py b/packages/modules/devices/solar_view/vendor.py
index 568007ddea..8eb7c76834 100644
--- a/packages/modules/devices/solar_view/vendor.py
+++ b/packages/modules/devices/solar_view/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "SolarView"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/solar_watt/vendor.py b/packages/modules/devices/solar_watt/vendor.py
index 454e8c5615..f2ba3ee6c7 100644
--- a/packages/modules/devices/solar_watt/vendor.py
+++ b/packages/modules/devices/solar_watt/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Solarwatt"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/solar_world/vendor.py b/packages/modules/devices/solar_world/vendor.py
index de55b9134e..ea78ed9fa0 100644
--- a/packages/modules/devices/solar_world/vendor.py
+++ b/packages/modules/devices/solar_world/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "SolarWorld"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/solaredge/vendor.py b/packages/modules/devices/solaredge/vendor.py
index 39ad0caf33..25356705d4 100644
--- a/packages/modules/devices/solaredge/vendor.py
+++ b/packages/modules/devices/solaredge/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "SolarEdge"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/solarmax/vendor.py b/packages/modules/devices/solarmax/vendor.py
index e47e303073..61021bca54 100644
--- a/packages/modules/devices/solarmax/vendor.py
+++ b/packages/modules/devices/solarmax/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Solarmax"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/solax/vendor.py b/packages/modules/devices/solax/vendor.py
index e226be105e..eadc9e2f22 100644
--- a/packages/modules/devices/solax/vendor.py
+++ b/packages/modules/devices/solax/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Solax"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/sonnen/vendor.py b/packages/modules/devices/sonnen/vendor.py
index d8d866372c..e02a7ab320 100644
--- a/packages/modules/devices/sonnen/vendor.py
+++ b/packages/modules/devices/sonnen/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Sonnen"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/studer/vendor.py b/packages/modules/devices/studer/vendor.py
index ade1b881e9..514fc3b3a3 100644
--- a/packages/modules/devices/studer/vendor.py
+++ b/packages/modules/devices/studer/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Studer innotec"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/sungrow/vendor.py b/packages/modules/devices/sungrow/vendor.py
index 634b600fbf..b352037692 100644
--- a/packages/modules/devices/sungrow/vendor.py
+++ b/packages/modules/devices/sungrow/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Sungrow"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/sunways/vendor.py b/packages/modules/devices/sunways/vendor.py
index af7531887e..1e6831e5b7 100644
--- a/packages/modules/devices/sunways/vendor.py
+++ b/packages/modules/devices/sunways/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Sunways"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/tasmota/vendor.py b/packages/modules/devices/tasmota/vendor.py
index 0b1f0c5b7a..2b5266d933 100644
--- a/packages/modules/devices/tasmota/vendor.py
+++ b/packages/modules/devices/tasmota/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Tasmota"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/tesla/vendor.py b/packages/modules/devices/tesla/vendor.py
index 76b52813f0..fc95165b22 100644
--- a/packages/modules/devices/tesla/vendor.py
+++ b/packages/modules/devices/tesla/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Tesla"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/varta/vendor.py b/packages/modules/devices/varta/vendor.py
index 477274a74f..abc2aca10a 100644
--- a/packages/modules/devices/varta/vendor.py
+++ b/packages/modules/devices/varta/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Varta"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/victron/vendor.py b/packages/modules/devices/victron/vendor.py
index 1888996666..c54aaa4e15 100644
--- a/packages/modules/devices/victron/vendor.py
+++ b/packages/modules/devices/victron/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Victron"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/vzlogger/vendor.py b/packages/modules/devices/vzlogger/vendor.py
index 6a1e6a8b28..f48408bf37 100644
--- a/packages/modules/devices/vzlogger/vendor.py
+++ b/packages/modules/devices/vzlogger/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "VZLogger"
         self.group = VendorGroup.VENDORS.value
 
diff --git a/packages/modules/devices/youless/vendor.py b/packages/modules/devices/youless/vendor.py
index 2bb1c3f9b2..956fe635c8 100644
--- a/packages/modules/devices/youless/vendor.py
+++ b/packages/modules/devices/youless/vendor.py
@@ -1,9 +1,12 @@
+from pathlib import Path
+
 from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.vendors import VendorGroup
 
 
 class Vendor:
     def __init__(self):
+        self.type = Path(__file__).parent.name
         self.vendor = "Youless"
         self.group = VendorGroup.VENDORS.value
 

From c384d5c9ecf45ba0fd26c7ee5175d01a33ead42d Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Fri, 9 Aug 2024 09:44:25 +0200
Subject: [PATCH 073/205] add vendor info for commands and subdata

---
 packages/helpermodules/command.py | 11 ++++++-----
 packages/helpermodules/subdata.py |  9 ++++++---
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/packages/helpermodules/command.py b/packages/helpermodules/command.py
index dd0f42b665..de9ada6524 100644
--- a/packages/helpermodules/command.py
+++ b/packages/helpermodules/command.py
@@ -140,9 +140,9 @@ def addDevice(self, connection_id: str, payload: dict) -> None:
         """ sendet das Topic, zu dem ein neues Device erstellt werden soll.
         """
         new_id = self.max_id_device + 1
-        device_data = payload["data"]["type"]
-        device_path = ".".join(device_data)
-        dev = importlib.import_module(".devices."+device_path+".device", "modules")
+        dev = importlib.import_module(f'.devices.{payload["data"]["vendor"]}'
+                                      f'.{payload["data"]["type"]}.device',
+                                      "modules")
         device_default = dataclass_utils.asdict(dev.device_descriptor.configuration_factory())
         device_default["id"] = new_id
         Pub().pub(f'openWB/set/system/device/{new_id}/config', device_default)
@@ -433,8 +433,9 @@ def set_default(topic: str, defaults: dict):
             for k, v in defaults.items():
                 Pub().pub(f'{topic}/{k}', v)
         new_id = self.max_id_hierarchy + 1
-        component = importlib.import_module(
-            ".devices."+payload["data"]["deviceType"]+"."+payload["data"]["type"], "modules")
+        component = importlib.import_module(f'.devices.{payload["data"]["deviceVendor"]}'
+                                            f'.{payload["data"]["deviceType"]}.{payload["data"]["type"]}',
+                                            "modules")
         component_default = dataclass_utils.asdict(component.component_descriptor.configuration_factory())
         component_default["id"] = new_id
         general_type = special_to_general_type_mapping(payload["data"]["type"])
diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py
index 7de17af1d2..a866fff1b5 100644
--- a/packages/helpermodules/subdata.py
+++ b/packages/helpermodules/subdata.py
@@ -748,7 +748,8 @@ def process_system_topic(self, client: mqtt.Client, var: dict, msg: mqtt.MQTTMes
                                   str(index)+" gefunden werden.")
                 else:
                     device_config = decode_payload(msg.payload)
-                    dev = importlib.import_module(".devices."+device_config["type"]+".device", "modules")
+                    dev = importlib.import_module(f".devices.{device_config['vendor']}.{device_config['type']}.device",
+                                                  "modules")
                     config = dataclass_from_dict(dev.device_descriptor.configuration_factory, device_config)
                     var["device"+index] = (dev.Device if hasattr(dev, "Device") else dev.create_device)(config)
                     # Durch das erneute Subscribe werden die Komponenten mit dem aktualisierten TCP-Client angelegt.
@@ -779,8 +780,10 @@ def process_system_topic(self, client: mqtt.Client, var: dict, msg: mqtt.MQTTMes
                     # Es darf nicht einfach data["config"] aktualisiert werden, da in der __init__ auch die
                     # TCP-Verbindung aufgebaut wird, deren IP dann nicht aktualisiert werden würde.
                     component_config = decode_payload(msg.payload)
-                    component = importlib.import_module(
-                        f'.devices.{var["device"+index].device_config.type}.{component_config["type"]}', "modules")
+                    component = importlib.import_module(f'.devices.{var["device"+index].device_config.vendor}'
+                                                        f'.{var["device"+index].device_config.type}'
+                                                        f'.{component_config["type"]}',
+                                                        "modules")
                     config = dataclass_from_dict(component.component_descriptor.configuration_factory, component_config)
                     var["device"+index].add_component(config)
                     client.subscribe(f"openWB/system/device/{index}/component/{index_second}/simulation", 2)

From 1d305e1d9754b1d5d934eb1c137ab3eb56b80483 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Fri, 9 Aug 2024 09:45:02 +0200
Subject: [PATCH 074/205] add vendor info in device configurations

---
 packages/modules/devices/alpha_ess/alpha_ess/config.py       | 2 ++
 packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py   | 2 ++
 packages/modules/devices/batterx/batterx/config.py           | 2 ++
 packages/modules/devices/benning/benning/config.py           | 3 +++
 packages/modules/devices/byd/byd/config.py                   | 2 ++
 .../modules/devices/carlo_gavazzi/carlo_gavazzi/config.py    | 2 ++
 packages/modules/devices/deye/deye/config.py                 | 2 ++
 packages/modules/devices/discovergy/discovergy/config.py     | 2 ++
 packages/modules/devices/e3dc/e3dc/config.py                 | 2 ++
 packages/modules/devices/enphase/enphase/config.py           | 3 +++
 packages/modules/devices/fems/fems/config.py                 | 2 ++
 packages/modules/devices/fox_ess/fox_ess/config.py           | 4 +++-
 packages/modules/devices/fronius/fronius/config.py           | 2 ++
 packages/modules/devices/generic/http/config.py              | 2 ++
 packages/modules/devices/generic/json/config.py              | 3 +++
 packages/modules/devices/generic/mqtt/config.py              | 2 ++
 packages/modules/devices/generic/virtual/config.py           | 2 ++
 packages/modules/devices/good_we/good_we/config.py           | 2 ++
 packages/modules/devices/huawei/huawei/config.py             | 2 ++
 packages/modules/devices/huawei/huawei_smartlogger/config.py | 3 +++
 packages/modules/devices/janitza/janitza/config.py           | 2 ++
 packages/modules/devices/kostal/kostal_piko/config.py        | 2 ++
 packages/modules/devices/kostal/kostal_piko_old/config.py    | 3 +++
 packages/modules/devices/kostal/kostal_plenticore/config.py  | 2 ++
 packages/modules/devices/kostal/kostal_sem/config.py         | 2 ++
 packages/modules/devices/kostal/kostal_steca/config.py       | 3 +++
 packages/modules/devices/lg/lg/config.py                     | 2 ++
 packages/modules/devices/mtec/mtec/config.py                 | 4 +++-
 packages/modules/devices/opendtu/opendtu/config.py           | 3 +++
 packages/modules/devices/openwb/openwb_bat_kit/config.py     | 2 ++
 packages/modules/devices/openwb/openwb_evu_kit/config.py     | 2 ++
 packages/modules/devices/openwb/openwb_flex/config.py        | 2 ++
 packages/modules/devices/openwb/openwb_pv_kit/config.py      | 2 ++
 packages/modules/devices/powerdog/powerdog/config.py         | 2 ++
 packages/modules/devices/powerfox/powerfox/config.py         | 2 ++
 packages/modules/devices/qcells/qcells/config.py             | 2 ++
 packages/modules/devices/rct/rct/config.py                   | 3 +++
 packages/modules/devices/saxpower/saxpower/config.py         | 2 ++
 packages/modules/devices/shelly/shelly/config.py             | 5 ++++-
 packages/modules/devices/siemens/siemens/config.py           | 2 ++
 packages/modules/devices/siemens/siemens_sentron/config.py   | 2 ++
 packages/modules/devices/sma/sma_shm/config.py               | 2 ++
 packages/modules/devices/sma/sma_sunny_boy/config.py         | 2 ++
 packages/modules/devices/sma/sma_sunny_island/config.py      | 2 ++
 packages/modules/devices/sma/sma_webbox/config.py            | 2 ++
 packages/modules/devices/smart_me/smart_me/config.py         | 2 ++
 packages/modules/devices/smartfox/smartfox/config.py         | 2 ++
 packages/modules/devices/sofar/sofar/config.py               | 2 ++
 packages/modules/devices/solar_log/solar_log/config.py       | 2 ++
 packages/modules/devices/solar_view/solar_view/config.py     | 2 ++
 packages/modules/devices/solar_watt/solar_watt/config.py     | 2 ++
 packages/modules/devices/solar_world/solar_world/config.py   | 3 +++
 packages/modules/devices/solaredge/solaredge/config.py       | 2 ++
 packages/modules/devices/solarmax/solarmax/config.py         | 2 ++
 packages/modules/devices/solax/solax/config.py               | 2 ++
 packages/modules/devices/sonnen/sonnenbatterie/config.py     | 2 ++
 packages/modules/devices/studer/studer/config.py             | 2 ++
 packages/modules/devices/sungrow/sungrow/config.py           | 2 ++
 packages/modules/devices/sunways/sunways/config.py           | 2 ++
 packages/modules/devices/tasmota/tasmota/config.py           | 5 ++++-
 packages/modules/devices/tesla/tesla/config.py               | 2 ++
 packages/modules/devices/varta/varta/config.py               | 3 +++
 packages/modules/devices/victron/victron/config.py           | 2 ++
 packages/modules/devices/vzlogger/vzlogger/config.py         | 3 +++
 packages/modules/devices/youless/youless/config.py           | 3 +++
 65 files changed, 148 insertions(+), 4 deletions(-)

diff --git a/packages/modules/devices/alpha_ess/alpha_ess/config.py b/packages/modules/devices/alpha_ess/alpha_ess/config.py
index b880348dca..7183698ec0 100644
--- a/packages/modules/devices/alpha_ess/alpha_ess/config.py
+++ b/packages/modules/devices/alpha_ess/alpha_ess/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class AlphaEssConfiguration:
@@ -23,6 +24,7 @@ def __init__(self,
                  configuration: AlphaEssConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or AlphaEssConfiguration()
 
diff --git a/packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py b/packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py
index c0abc3d919..f81341f498 100644
--- a/packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py
+++ b/packages/modules/devices/azzurro_zcs/azzurro_zcs/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class ZCSConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: ZCSConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or ZCSConfiguration()
 
diff --git a/packages/modules/devices/batterx/batterx/config.py b/packages/modules/devices/batterx/batterx/config.py
index 706e5edcb0..b2f59f4b25 100644
--- a/packages/modules/devices/batterx/batterx/config.py
+++ b/packages/modules/devices/batterx/batterx/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class BatterXConfiguration:
@@ -16,6 +17,7 @@ def __init__(self,
                  configuration: BatterXConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or BatterXConfiguration()
 
diff --git a/packages/modules/devices/benning/benning/config.py b/packages/modules/devices/benning/benning/config.py
index d74c5c4195..e040dce6ff 100644
--- a/packages/modules/devices/benning/benning/config.py
+++ b/packages/modules/devices/benning/benning/config.py
@@ -1,7 +1,9 @@
 #!/usr/bin/env python3
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
 from modules.devices.generic.json.config import Json, JsonConfiguration, JsonInverterConfiguration, JsonInverterSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -18,6 +20,7 @@ def __init__(self,
                  id: int = 0,
                  configuration: BenningConfiguration = None) -> None:
         super().__init__(name, type, id, configuration)
+        self.vendor = vendor_descriptor.configuration_factory().type
 
 
 @auto_str
diff --git a/packages/modules/devices/byd/byd/config.py b/packages/modules/devices/byd/byd/config.py
index 7f34a8a25f..009e607f04 100644
--- a/packages/modules/devices/byd/byd/config.py
+++ b/packages/modules/devices/byd/byd/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class BYDConfiguration:
@@ -21,6 +22,7 @@ def __init__(self,
                  configuration: BYDConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or BYDConfiguration()
 
diff --git a/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py
index 93f6e67fec..f453b51c7b 100644
--- a/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py
+++ b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class CarloGavazziConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: CarloGavazziConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or CarloGavazziConfiguration()
 
diff --git a/packages/modules/devices/deye/deye/config.py b/packages/modules/devices/deye/deye/config.py
index 95211f3155..a14b8fe1c1 100644
--- a/packages/modules/devices/deye/deye/config.py
+++ b/packages/modules/devices/deye/deye/config.py
@@ -2,6 +2,7 @@
 from helpermodules.auto_str import auto_str
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class DeyeConfiguration:
@@ -22,6 +23,7 @@ def __init__(self,
                  configuration: DeyeConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or DeyeConfiguration()
 
diff --git a/packages/modules/devices/discovergy/discovergy/config.py b/packages/modules/devices/discovergy/discovergy/config.py
index ba48c6634d..4fab443d88 100644
--- a/packages/modules/devices/discovergy/discovergy/config.py
+++ b/packages/modules/devices/discovergy/discovergy/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class DiscovergyConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: DiscovergyConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or DiscovergyConfiguration()
 
diff --git a/packages/modules/devices/e3dc/e3dc/config.py b/packages/modules/devices/e3dc/e3dc/config.py
index caf963cb49..f3f7ff7012 100644
--- a/packages/modules/devices/e3dc/e3dc/config.py
+++ b/packages/modules/devices/e3dc/e3dc/config.py
@@ -1,5 +1,6 @@
 from modules.common.component_setup import ComponentSetup
 from helpermodules.auto_str import auto_str
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -19,6 +20,7 @@ def __init__(self,
                  configuration: E3dcConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or E3dcConfiguration()
 
diff --git a/packages/modules/devices/enphase/enphase/config.py b/packages/modules/devices/enphase/enphase/config.py
index c499102a3d..9a2a40a554 100644
--- a/packages/modules/devices/enphase/enphase/config.py
+++ b/packages/modules/devices/enphase/enphase/config.py
@@ -1,6 +1,8 @@
 from enum import Enum
 from typing import Optional
+
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class EnphaseVersion(Enum):
@@ -31,6 +33,7 @@ def __init__(self,
                  configuration: EnphaseConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or EnphaseConfiguration()
 
diff --git a/packages/modules/devices/fems/fems/config.py b/packages/modules/devices/fems/fems/config.py
index 4414fc1a6e..18c4c8d875 100644
--- a/packages/modules/devices/fems/fems/config.py
+++ b/packages/modules/devices/fems/fems/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class FemsConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: FemsConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or FemsConfiguration()
 
diff --git a/packages/modules/devices/fox_ess/fox_ess/config.py b/packages/modules/devices/fox_ess/fox_ess/config.py
index fd0b7a8019..f4b8ec20a2 100644
--- a/packages/modules/devices/fox_ess/fox_ess/config.py
+++ b/packages/modules/devices/fox_ess/fox_ess/config.py
@@ -1,7 +1,8 @@
 from typing import Optional
-from helpermodules.auto_str import auto_str
 
+from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class FoxEssConfiguration:
@@ -20,6 +21,7 @@ def __init__(self,
                  configuration: FoxEssConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or FoxEssConfiguration()
 
diff --git a/packages/modules/devices/fronius/fronius/config.py b/packages/modules/devices/fronius/fronius/config.py
index f800eb9088..4f6953ccb3 100644
--- a/packages/modules/devices/fronius/fronius/config.py
+++ b/packages/modules/devices/fronius/fronius/config.py
@@ -3,6 +3,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class MeterLocation(Enum):
@@ -37,6 +38,7 @@ def __init__(self,
                  configuration: FroniusConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or FroniusConfiguration()
 
diff --git a/packages/modules/devices/generic/http/config.py b/packages/modules/devices/generic/http/config.py
index 3c219239a0..f2d6bcfa7d 100644
--- a/packages/modules/devices/generic/http/config.py
+++ b/packages/modules/devices/generic/http/config.py
@@ -1,5 +1,6 @@
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: HTTPConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or HTTPConfiguration()
 
diff --git a/packages/modules/devices/generic/json/config.py b/packages/modules/devices/generic/json/config.py
index 1af6d338d9..fc714bbc84 100644
--- a/packages/modules/devices/generic/json/config.py
+++ b/packages/modules/devices/generic/json/config.py
@@ -1,5 +1,7 @@
 from typing import Optional
+
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class JsonConfiguration:
@@ -15,6 +17,7 @@ def __init__(self,
                  configuration: JsonConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or JsonConfiguration()
 
diff --git a/packages/modules/devices/generic/mqtt/config.py b/packages/modules/devices/generic/mqtt/config.py
index 665f26f3ab..cda7d72ca0 100644
--- a/packages/modules/devices/generic/mqtt/config.py
+++ b/packages/modules/devices/generic/mqtt/config.py
@@ -1,5 +1,6 @@
 #!/usr/bin/env python3
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class MqttConfiguration:
@@ -15,6 +16,7 @@ def __init__(self,
                  configuration: MqttConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or MqttConfiguration()
 
diff --git a/packages/modules/devices/generic/virtual/config.py b/packages/modules/devices/generic/virtual/config.py
index 5893e8b5de..eddd8ff345 100644
--- a/packages/modules/devices/generic/virtual/config.py
+++ b/packages/modules/devices/generic/virtual/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class VirtualConfiguration:
@@ -14,6 +15,7 @@ def __init__(self,
                  configuration: VirtualConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or VirtualConfiguration()
 
diff --git a/packages/modules/devices/good_we/good_we/config.py b/packages/modules/devices/good_we/good_we/config.py
index 51675d538a..d8ab88b200 100644
--- a/packages/modules/devices/good_we/good_we/config.py
+++ b/packages/modules/devices/good_we/good_we/config.py
@@ -2,6 +2,7 @@
 
 from modules.common.component_setup import ComponentSetup
 from modules.devices.good_we.good_we.version import GoodWeVersion
+from ..vendor import vendor_descriptor
 
 
 class GoodWeConfiguration:
@@ -25,6 +26,7 @@ def __init__(self,
                  configuration: GoodWeConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or GoodWeConfiguration()
 
diff --git a/packages/modules/devices/huawei/huawei/config.py b/packages/modules/devices/huawei/huawei/config.py
index 335aefe933..88f0dbde67 100644
--- a/packages/modules/devices/huawei/huawei/config.py
+++ b/packages/modules/devices/huawei/huawei/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class HuaweiConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: HuaweiConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or HuaweiConfiguration()
 
diff --git a/packages/modules/devices/huawei/huawei_smartlogger/config.py b/packages/modules/devices/huawei/huawei_smartlogger/config.py
index e295ae5a9f..7301757412 100644
--- a/packages/modules/devices/huawei/huawei_smartlogger/config.py
+++ b/packages/modules/devices/huawei/huawei_smartlogger/config.py
@@ -1,6 +1,8 @@
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -19,6 +21,7 @@ def __init__(self,
                  configuration: Huawei_SmartloggerConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or Huawei_SmartloggerConfiguration()
 
diff --git a/packages/modules/devices/janitza/janitza/config.py b/packages/modules/devices/janitza/janitza/config.py
index 4c1c91852f..ba63b0e06d 100644
--- a/packages/modules/devices/janitza/janitza/config.py
+++ b/packages/modules/devices/janitza/janitza/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class JanitzaConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: JanitzaConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or JanitzaConfiguration()
 
diff --git a/packages/modules/devices/kostal/kostal_piko/config.py b/packages/modules/devices/kostal/kostal_piko/config.py
index 2045c5717f..9d7e3a86d9 100644
--- a/packages/modules/devices/kostal/kostal_piko/config.py
+++ b/packages/modules/devices/kostal/kostal_piko/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class KostalPikoConfiguration:
@@ -15,6 +16,7 @@ def __init__(self,
                  id: int = 0,
                  configuration: KostalPikoConfiguration = None) -> None:
         self.name = name
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.type = type
         self.id = id
         self.configuration = configuration or KostalPikoConfiguration()
diff --git a/packages/modules/devices/kostal/kostal_piko_old/config.py b/packages/modules/devices/kostal/kostal_piko_old/config.py
index e22ddbf85e..e507138be6 100644
--- a/packages/modules/devices/kostal/kostal_piko_old/config.py
+++ b/packages/modules/devices/kostal/kostal_piko_old/config.py
@@ -1,6 +1,8 @@
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -20,6 +22,7 @@ def __init__(self,
                  configuration: KostalPikoOldConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or KostalPikoOldConfiguration()
 
diff --git a/packages/modules/devices/kostal/kostal_plenticore/config.py b/packages/modules/devices/kostal/kostal_plenticore/config.py
index 92a461728a..3971fccbad 100644
--- a/packages/modules/devices/kostal/kostal_plenticore/config.py
+++ b/packages/modules/devices/kostal/kostal_plenticore/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class KostalPlenticoreConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: KostalPlenticoreConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or KostalPlenticoreConfiguration()
 
diff --git a/packages/modules/devices/kostal/kostal_sem/config.py b/packages/modules/devices/kostal/kostal_sem/config.py
index a42ebc19dc..d1fd1e77a0 100644
--- a/packages/modules/devices/kostal/kostal_sem/config.py
+++ b/packages/modules/devices/kostal/kostal_sem/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class KostalSemConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: KostalSemConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or KostalSemConfiguration()
 
diff --git a/packages/modules/devices/kostal/kostal_steca/config.py b/packages/modules/devices/kostal/kostal_steca/config.py
index 5f4814db4a..963a2aea8b 100644
--- a/packages/modules/devices/kostal/kostal_steca/config.py
+++ b/packages/modules/devices/kostal/kostal_steca/config.py
@@ -1,6 +1,8 @@
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -18,6 +20,7 @@ def __init__(self,
                  configuration: KostalStecaConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or KostalStecaConfiguration()
 
diff --git a/packages/modules/devices/lg/lg/config.py b/packages/modules/devices/lg/lg/config.py
index 5928426041..adb3f8e80b 100644
--- a/packages/modules/devices/lg/lg/config.py
+++ b/packages/modules/devices/lg/lg/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class LgConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: LgConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or LgConfiguration()
 
diff --git a/packages/modules/devices/mtec/mtec/config.py b/packages/modules/devices/mtec/mtec/config.py
index d8c693d0a1..88bb5e9d0a 100644
--- a/packages/modules/devices/mtec/mtec/config.py
+++ b/packages/modules/devices/mtec/mtec/config.py
@@ -1,7 +1,8 @@
 from typing import Optional
-from helpermodules.auto_str import auto_str
 
+from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class MTecConfiguration:
@@ -20,6 +21,7 @@ def __init__(self,
                  configuration: MTecConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or MTecConfiguration()
 
diff --git a/packages/modules/devices/opendtu/opendtu/config.py b/packages/modules/devices/opendtu/opendtu/config.py
index 79947e384d..794fe1dbd7 100644
--- a/packages/modules/devices/opendtu/opendtu/config.py
+++ b/packages/modules/devices/opendtu/opendtu/config.py
@@ -1,7 +1,9 @@
 #!/usr/bin/env python3
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
 from modules.devices.generic.json.config import Json, JsonConfiguration, JsonInverterConfiguration, JsonInverterSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -18,6 +20,7 @@ def __init__(self,
                  id: int = 0,
                  configuration: OpenDTUConfiguration = None) -> None:
         super().__init__(name, type, id, configuration)
+        self.vendor = vendor_descriptor.configuration_factory().type
 
 
 @auto_str
diff --git a/packages/modules/devices/openwb/openwb_bat_kit/config.py b/packages/modules/devices/openwb/openwb_bat_kit/config.py
index 4c781ef0d3..799f193bcc 100644
--- a/packages/modules/devices/openwb/openwb_bat_kit/config.py
+++ b/packages/modules/devices/openwb/openwb_bat_kit/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class BatKitConfiguration:
@@ -14,6 +15,7 @@ def __init__(self,
                  configuration: BatKitConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or BatKitConfiguration()
 
diff --git a/packages/modules/devices/openwb/openwb_evu_kit/config.py b/packages/modules/devices/openwb/openwb_evu_kit/config.py
index f01e53a01a..185d16d328 100644
--- a/packages/modules/devices/openwb/openwb_evu_kit/config.py
+++ b/packages/modules/devices/openwb/openwb_evu_kit/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class EvuKitConfiguration:
@@ -14,6 +15,7 @@ def __init__(self,
                  configuration: EvuKitConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or EvuKitConfiguration()
 
diff --git a/packages/modules/devices/openwb/openwb_flex/config.py b/packages/modules/devices/openwb/openwb_flex/config.py
index 37fdcb763b..b3e95f5bf2 100644
--- a/packages/modules/devices/openwb/openwb_flex/config.py
+++ b/packages/modules/devices/openwb/openwb_flex/config.py
@@ -4,6 +4,7 @@
 from modules.devices.openwb.openwb_bat_kit.config import BatKitBatSetup
 from modules.devices.openwb.openwb_evu_kit.config import EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
 from modules.devices.openwb.openwb_pv_kit.config import PvKitInverterSetup
+from ..vendor import vendor_descriptor
 
 
 class FlexConfiguration:
@@ -20,6 +21,7 @@ def __init__(self,
                  configuration: FlexConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or FlexConfiguration()
 
diff --git a/packages/modules/devices/openwb/openwb_pv_kit/config.py b/packages/modules/devices/openwb/openwb_pv_kit/config.py
index f09b662c06..3dd0a110a1 100644
--- a/packages/modules/devices/openwb/openwb_pv_kit/config.py
+++ b/packages/modules/devices/openwb/openwb_pv_kit/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class PvKitConfiguration:
@@ -14,6 +15,7 @@ def __init__(self,
                  configuration: PvKitConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or PvKitConfiguration()
 
diff --git a/packages/modules/devices/powerdog/powerdog/config.py b/packages/modules/devices/powerdog/powerdog/config.py
index 8f7abf3a91..4fa27f122a 100644
--- a/packages/modules/devices/powerdog/powerdog/config.py
+++ b/packages/modules/devices/powerdog/powerdog/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class PowerdogConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: PowerdogConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or PowerdogConfiguration()
 
diff --git a/packages/modules/devices/powerfox/powerfox/config.py b/packages/modules/devices/powerfox/powerfox/config.py
index 883f47114a..0d4da5802a 100644
--- a/packages/modules/devices/powerfox/powerfox/config.py
+++ b/packages/modules/devices/powerfox/powerfox/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class PowerfoxConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: PowerfoxConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or PowerfoxConfiguration()
 
diff --git a/packages/modules/devices/qcells/qcells/config.py b/packages/modules/devices/qcells/qcells/config.py
index a77897e531..445e253b07 100644
--- a/packages/modules/devices/qcells/qcells/config.py
+++ b/packages/modules/devices/qcells/qcells/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class QCellsConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: QCellsConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or QCellsConfiguration()
 
diff --git a/packages/modules/devices/rct/rct/config.py b/packages/modules/devices/rct/rct/config.py
index e328ac5796..9d29925671 100644
--- a/packages/modules/devices/rct/rct/config.py
+++ b/packages/modules/devices/rct/rct/config.py
@@ -1,6 +1,8 @@
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -18,6 +20,7 @@ def __init__(self,
                  configuration: RctConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or RctConfiguration()
 
diff --git a/packages/modules/devices/saxpower/saxpower/config.py b/packages/modules/devices/saxpower/saxpower/config.py
index d705689bed..ba92818059 100644
--- a/packages/modules/devices/saxpower/saxpower/config.py
+++ b/packages/modules/devices/saxpower/saxpower/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SaxpowerConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: SaxpowerConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SaxpowerConfiguration()
 
diff --git a/packages/modules/devices/shelly/shelly/config.py b/packages/modules/devices/shelly/shelly/config.py
index db5005aba3..ecce109a5d 100644
--- a/packages/modules/devices/shelly/shelly/config.py
+++ b/packages/modules/devices/shelly/shelly/config.py
@@ -1,6 +1,8 @@
-from modules.common.component_setup import ComponentSetup
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
+from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -19,6 +21,7 @@ def __init__(self,
                  configuration: ShellyConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or ShellyConfiguration()
 
diff --git a/packages/modules/devices/siemens/siemens/config.py b/packages/modules/devices/siemens/siemens/config.py
index 5738bb3972..30208bdfac 100644
--- a/packages/modules/devices/siemens/siemens/config.py
+++ b/packages/modules/devices/siemens/siemens/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SiemensConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: SiemensConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SiemensConfiguration()
 
diff --git a/packages/modules/devices/siemens/siemens_sentron/config.py b/packages/modules/devices/siemens/siemens_sentron/config.py
index b2fd6a0137..11f23c0b8e 100644
--- a/packages/modules/devices/siemens/siemens_sentron/config.py
+++ b/packages/modules/devices/siemens/siemens_sentron/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SiemensSentronConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: SiemensSentronConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SiemensSentronConfiguration()
 
diff --git a/packages/modules/devices/sma/sma_shm/config.py b/packages/modules/devices/sma/sma_shm/config.py
index 0e2bd2021f..e17ca8338b 100644
--- a/packages/modules/devices/sma/sma_shm/config.py
+++ b/packages/modules/devices/sma/sma_shm/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SpeedwireComponentConfiguration:
@@ -14,6 +15,7 @@ def __init__(self,
                  configuration: SpeedwireComponentConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SpeedwireComponentConfiguration()
 
diff --git a/packages/modules/devices/sma/sma_sunny_boy/config.py b/packages/modules/devices/sma/sma_sunny_boy/config.py
index 2f49203c42..862330209b 100644
--- a/packages/modules/devices/sma/sma_sunny_boy/config.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/config.py
@@ -2,6 +2,7 @@
 
 from modules.common.component_setup import ComponentSetup
 from modules.devices.sma.sma_sunny_boy.inv_version import SmaInverterVersion
+from ..vendor import vendor_descriptor
 
 
 class SmaSunnyBoyConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: SmaSunnyBoyConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SmaSunnyBoyConfiguration()
 
diff --git a/packages/modules/devices/sma/sma_sunny_island/config.py b/packages/modules/devices/sma/sma_sunny_island/config.py
index 459adbfde3..811fa51a04 100644
--- a/packages/modules/devices/sma/sma_sunny_island/config.py
+++ b/packages/modules/devices/sma/sma_sunny_island/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SmaSunnyIslandConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: SmaSunnyIslandConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SmaSunnyIslandConfiguration()
 
diff --git a/packages/modules/devices/sma/sma_webbox/config.py b/packages/modules/devices/sma/sma_webbox/config.py
index b5ecfa42c4..eea7af2b2b 100644
--- a/packages/modules/devices/sma/sma_webbox/config.py
+++ b/packages/modules/devices/sma/sma_webbox/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SmaWWebboxConfiguration:
@@ -16,6 +17,7 @@ def __init__(self,
                  configuration: SmaWWebboxConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SmaWWebboxConfiguration()
 
diff --git a/packages/modules/devices/smart_me/smart_me/config.py b/packages/modules/devices/smart_me/smart_me/config.py
index f7207014ed..61fe8b3b27 100644
--- a/packages/modules/devices/smart_me/smart_me/config.py
+++ b/packages/modules/devices/smart_me/smart_me/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SmartMeConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: SmartMeConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SmartMeConfiguration()
 
diff --git a/packages/modules/devices/smartfox/smartfox/config.py b/packages/modules/devices/smartfox/smartfox/config.py
index 0b2610e332..9a460b1b35 100644
--- a/packages/modules/devices/smartfox/smartfox/config.py
+++ b/packages/modules/devices/smartfox/smartfox/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SmartfoxConfiguration:
@@ -16,6 +17,7 @@ def __init__(self,
                  configuration: SmartfoxConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SmartfoxConfiguration()
 
diff --git a/packages/modules/devices/sofar/sofar/config.py b/packages/modules/devices/sofar/sofar/config.py
index b065d6c616..678986a557 100644
--- a/packages/modules/devices/sofar/sofar/config.py
+++ b/packages/modules/devices/sofar/sofar/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SofarConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: SofarConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SofarConfiguration()
 
diff --git a/packages/modules/devices/solar_log/solar_log/config.py b/packages/modules/devices/solar_log/solar_log/config.py
index 5825952dbf..2ffce43bf3 100644
--- a/packages/modules/devices/solar_log/solar_log/config.py
+++ b/packages/modules/devices/solar_log/solar_log/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SolarLogConfiguration:
@@ -16,6 +17,7 @@ def __init__(self,
                  configuration: SolarLogConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SolarLogConfiguration()
 
diff --git a/packages/modules/devices/solar_view/solar_view/config.py b/packages/modules/devices/solar_view/solar_view/config.py
index 1c6eecc618..c43e9deccd 100644
--- a/packages/modules/devices/solar_view/solar_view/config.py
+++ b/packages/modules/devices/solar_view/solar_view/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SolarViewConfiguration:
@@ -21,6 +22,7 @@ def __init__(self,
                  configuration: SolarViewConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SolarViewConfiguration()
 
diff --git a/packages/modules/devices/solar_watt/solar_watt/config.py b/packages/modules/devices/solar_watt/solar_watt/config.py
index a1f622570e..2f8a6081f9 100644
--- a/packages/modules/devices/solar_watt/solar_watt/config.py
+++ b/packages/modules/devices/solar_watt/solar_watt/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SolarWattConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: SolarWattConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SolarWattConfiguration()
 
diff --git a/packages/modules/devices/solar_world/solar_world/config.py b/packages/modules/devices/solar_world/solar_world/config.py
index e6fd62cab6..2cfcdda2e6 100644
--- a/packages/modules/devices/solar_world/solar_world/config.py
+++ b/packages/modules/devices/solar_world/solar_world/config.py
@@ -1,6 +1,8 @@
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -18,6 +20,7 @@ def __init__(self,
                  configuration: SolarWorldConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SolarWorldConfiguration()
 
diff --git a/packages/modules/devices/solaredge/solaredge/config.py b/packages/modules/devices/solaredge/solaredge/config.py
index e4d7a05cd0..d09a46137a 100644
--- a/packages/modules/devices/solaredge/solaredge/config.py
+++ b/packages/modules/devices/solaredge/solaredge/config.py
@@ -1,4 +1,5 @@
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SolaredgeConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration:  SolaredgeConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SolaredgeConfiguration()
 
diff --git a/packages/modules/devices/solarmax/solarmax/config.py b/packages/modules/devices/solarmax/solarmax/config.py
index 70f6c90abc..32596ef821 100644
--- a/packages/modules/devices/solarmax/solarmax/config.py
+++ b/packages/modules/devices/solarmax/solarmax/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SolarmaxConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: SolarmaxConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SolarmaxConfiguration()
 
diff --git a/packages/modules/devices/solax/solax/config.py b/packages/modules/devices/solax/solax/config.py
index 60e31b7aed..8694baef28 100644
--- a/packages/modules/devices/solax/solax/config.py
+++ b/packages/modules/devices/solax/solax/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SolaxConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: SolaxConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SolaxConfiguration()
 
diff --git a/packages/modules/devices/sonnen/sonnenbatterie/config.py b/packages/modules/devices/sonnen/sonnenbatterie/config.py
index 870fd1b24e..ea0df8814e 100644
--- a/packages/modules/devices/sonnen/sonnenbatterie/config.py
+++ b/packages/modules/devices/sonnen/sonnenbatterie/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SonnenBatterieConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: SonnenBatterieConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SonnenBatterieConfiguration()
 
diff --git a/packages/modules/devices/studer/studer/config.py b/packages/modules/devices/studer/studer/config.py
index ce7d26fef4..d18767d979 100644
--- a/packages/modules/devices/studer/studer/config.py
+++ b/packages/modules/devices/studer/studer/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class StuderConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: StuderConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or StuderConfiguration()
 
diff --git a/packages/modules/devices/sungrow/sungrow/config.py b/packages/modules/devices/sungrow/sungrow/config.py
index 28d1c60653..bc112dd867 100644
--- a/packages/modules/devices/sungrow/sungrow/config.py
+++ b/packages/modules/devices/sungrow/sungrow/config.py
@@ -2,6 +2,7 @@
 
 from modules.common.component_setup import ComponentSetup
 from modules.devices.sungrow.sungrow.version import Version
+from ..vendor import vendor_descriptor
 
 
 class SungrowConfiguration:
@@ -24,6 +25,7 @@ def __init__(self,
                  configuration: SungrowConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SungrowConfiguration()
 
diff --git a/packages/modules/devices/sunways/sunways/config.py b/packages/modules/devices/sunways/sunways/config.py
index 27c48195de..d31af93f95 100644
--- a/packages/modules/devices/sunways/sunways/config.py
+++ b/packages/modules/devices/sunways/sunways/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SunwaysConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: SunwaysConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SunwaysConfiguration()
 
diff --git a/packages/modules/devices/tasmota/tasmota/config.py b/packages/modules/devices/tasmota/tasmota/config.py
index 866b92e4db..bd874e760d 100644
--- a/packages/modules/devices/tasmota/tasmota/config.py
+++ b/packages/modules/devices/tasmota/tasmota/config.py
@@ -1,6 +1,8 @@
-from modules.common.component_setup import ComponentSetup
 from typing import Optional
 
+from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
+
 
 class TasmotaConfiguration:
     def __init__(self, ip_address: Optional[str] = None, phase: int = 1):
@@ -16,6 +18,7 @@ def __init__(self,
                  configuration: TasmotaConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or TasmotaConfiguration()
 
diff --git a/packages/modules/devices/tesla/tesla/config.py b/packages/modules/devices/tesla/tesla/config.py
index 4c802bedf9..c3da1d7d2d 100644
--- a/packages/modules/devices/tesla/tesla/config.py
+++ b/packages/modules/devices/tesla/tesla/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class TeslaConfiguration:
@@ -18,6 +19,7 @@ def __init__(self,
                  configuration: TeslaConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or TeslaConfiguration()
 
diff --git a/packages/modules/devices/varta/varta/config.py b/packages/modules/devices/varta/varta/config.py
index d49e005e0a..e5a68b3c30 100644
--- a/packages/modules/devices/varta/varta/config.py
+++ b/packages/modules/devices/varta/varta/config.py
@@ -1,6 +1,8 @@
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -20,6 +22,7 @@ def __init__(self,
                  configuration: VartaConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or VartaConfiguration()
 
diff --git a/packages/modules/devices/victron/victron/config.py b/packages/modules/devices/victron/victron/config.py
index c0f42ab5d9..808ac01526 100644
--- a/packages/modules/devices/victron/victron/config.py
+++ b/packages/modules/devices/victron/victron/config.py
@@ -1,6 +1,7 @@
 from typing import Optional
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class VictronConfiguration:
@@ -17,6 +18,7 @@ def __init__(self,
                  configuration: VictronConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or VictronConfiguration()
 
diff --git a/packages/modules/devices/vzlogger/vzlogger/config.py b/packages/modules/devices/vzlogger/vzlogger/config.py
index 741576174a..baf8703118 100644
--- a/packages/modules/devices/vzlogger/vzlogger/config.py
+++ b/packages/modules/devices/vzlogger/vzlogger/config.py
@@ -1,6 +1,8 @@
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -18,6 +20,7 @@ def __init__(self,
                  configuration: VZLoggerConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or VZLoggerConfiguration()
 
diff --git a/packages/modules/devices/youless/youless/config.py b/packages/modules/devices/youless/youless/config.py
index cc49351dd0..4c084399e7 100644
--- a/packages/modules/devices/youless/youless/config.py
+++ b/packages/modules/devices/youless/youless/config.py
@@ -1,6 +1,8 @@
 from typing import Optional
+
 from helpermodules.auto_str import auto_str
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 @auto_str
@@ -18,6 +20,7 @@ def __init__(self,
                  configuration: YoulessConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or YoulessConfiguration()
 

From 774df00755648d2b7d1c4aaa17055d09463e2f64 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Wed, 18 Sep 2024 07:45:58 +0200
Subject: [PATCH 075/205] fix after rebase

---
 packages/helpermodules/update_config.py            |  3 +--
 packages/modules/devices/sigenergy/__init__.py     |  0
 .../devices/sigenergy/{ => sigenergy}/bat.py       |  2 +-
 .../devices/sigenergy/{ => sigenergy}/config.py    |  0
 .../devices/sigenergy/{ => sigenergy}/counter.py   |  2 +-
 .../devices/sigenergy/{ => sigenergy}/device.py    | 13 +++++++++----
 .../devices/sigenergy/{ => sigenergy}/inverter.py  |  2 +-
 packages/modules/devices/sigenergy/vendor.py       | 14 ++++++++++++++
 packages/modules/devices/solis/__init__.py         |  0
 packages/modules/devices/solis/{ => solis}/bat.py  |  2 +-
 .../modules/devices/solis/{ => solis}/config.py    |  2 +-
 .../modules/devices/solis/{ => solis}/counter.py   |  4 ++--
 .../modules/devices/solis/{ => solis}/device.py    |  8 ++++----
 .../modules/devices/solis/{ => solis}/inverter.py  |  4 ++--
 .../modules/devices/solis/{ => solis}/version.py   |  0
 packages/modules/devices/solis/vendor.py           | 14 ++++++++++++++
 packages/modules/devices/varta/varta/device.py     |  2 +-
 .../modules/devices/varta/{ => varta}/inverter.py  |  2 +-
 18 files changed, 53 insertions(+), 21 deletions(-)
 create mode 100644 packages/modules/devices/sigenergy/__init__.py
 rename packages/modules/devices/sigenergy/{ => sigenergy}/bat.py (95%)
 rename packages/modules/devices/sigenergy/{ => sigenergy}/config.py (100%)
 rename packages/modules/devices/sigenergy/{ => sigenergy}/counter.py (95%)
 rename packages/modules/devices/sigenergy/{ => sigenergy}/device.py (82%)
 rename packages/modules/devices/sigenergy/{ => sigenergy}/inverter.py (95%)
 create mode 100644 packages/modules/devices/sigenergy/vendor.py
 create mode 100644 packages/modules/devices/solis/__init__.py
 rename packages/modules/devices/solis/{ => solis}/bat.py (96%)
 rename packages/modules/devices/solis/{ => solis}/config.py (97%)
 rename packages/modules/devices/solis/{ => solis}/counter.py (93%)
 rename packages/modules/devices/solis/{ => solis}/device.py (85%)
 rename packages/modules/devices/solis/{ => solis}/inverter.py (93%)
 rename packages/modules/devices/solis/{ => solis}/version.py (100%)
 create mode 100644 packages/modules/devices/solis/vendor.py
 rename packages/modules/devices/varta/{ => varta}/inverter.py (95%)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 6c0732998b..8631130fa9 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -47,7 +47,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 59
+    DATASTORE_VERSION = 62
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -1737,7 +1737,6 @@ def upgrade(topic: str, payload) -> Optional[dict]:
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 59)
 
-
     def upgrade_datastore_59(self) -> None:
         def upgrade(topic: str, payload) -> Optional[dict]:
             if re.search("openWB/system/device/[0-9]+/config", topic) is not None:
diff --git a/packages/modules/devices/sigenergy/__init__.py b/packages/modules/devices/sigenergy/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/sigenergy/bat.py b/packages/modules/devices/sigenergy/sigenergy/bat.py
similarity index 95%
rename from packages/modules/devices/sigenergy/bat.py
rename to packages/modules/devices/sigenergy/sigenergy/bat.py
index 0d2317701c..f5372e0980 100644
--- a/packages/modules/devices/sigenergy/bat.py
+++ b/packages/modules/devices/sigenergy/sigenergy/bat.py
@@ -7,7 +7,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
-from modules.devices.sigenergy.config import SigenergyBatSetup
+from modules.devices.sigenergy.sigenergy.config import SigenergyBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sigenergy/config.py b/packages/modules/devices/sigenergy/sigenergy/config.py
similarity index 100%
rename from packages/modules/devices/sigenergy/config.py
rename to packages/modules/devices/sigenergy/sigenergy/config.py
diff --git a/packages/modules/devices/sigenergy/counter.py b/packages/modules/devices/sigenergy/sigenergy/counter.py
similarity index 95%
rename from packages/modules/devices/sigenergy/counter.py
rename to packages/modules/devices/sigenergy/sigenergy/counter.py
index 7244e4429b..6c36db2762 100644
--- a/packages/modules/devices/sigenergy/counter.py
+++ b/packages/modules/devices/sigenergy/sigenergy/counter.py
@@ -6,7 +6,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_counter_value_store
-from modules.devices.sigenergy.config import SigenergyCounterSetup
+from modules.devices.sigenergy.sigenergy.config import SigenergyCounterSetup
 
 
 class SigenergyCounter:
diff --git a/packages/modules/devices/sigenergy/device.py b/packages/modules/devices/sigenergy/sigenergy/device.py
similarity index 82%
rename from packages/modules/devices/sigenergy/device.py
rename to packages/modules/devices/sigenergy/sigenergy/device.py
index eb389cf1db..df90216673 100644
--- a/packages/modules/devices/sigenergy/device.py
+++ b/packages/modules/devices/sigenergy/sigenergy/device.py
@@ -6,10 +6,15 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.sigenergy.bat import SigenergyBat
-from modules.devices.sigenergy.counter import SigenergyCounter
-from modules.devices.sigenergy.inverter import SigenergyInverter
-from modules.devices.sigenergy.config import Sigenergy, SigenergyBatSetup, SigenergyCounterSetup, SigenergyInverterSetup
+from modules.devices.sigenergy.sigenergy.bat import SigenergyBat
+from modules.devices.sigenergy.sigenergy.counter import SigenergyCounter
+from modules.devices.sigenergy.sigenergy.inverter import SigenergyInverter
+from modules.devices.sigenergy.sigenergy.config import (
+    Sigenergy,
+    SigenergyBatSetup,
+    SigenergyCounterSetup,
+    SigenergyInverterSetup,
+)
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/sigenergy/inverter.py b/packages/modules/devices/sigenergy/sigenergy/inverter.py
similarity index 95%
rename from packages/modules/devices/sigenergy/inverter.py
rename to packages/modules/devices/sigenergy/sigenergy/inverter.py
index f075b7751c..489e3a15ed 100644
--- a/packages/modules/devices/sigenergy/inverter.py
+++ b/packages/modules/devices/sigenergy/sigenergy/inverter.py
@@ -8,7 +8,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.sigenergy.config import SigenergyInverterSetup
+from modules.devices.sigenergy.sigenergy.config import SigenergyInverterSetup
 
 
 class SigenergyInverter:
diff --git a/packages/modules/devices/sigenergy/vendor.py b/packages/modules/devices/sigenergy/vendor.py
new file mode 100644
index 0000000000..657d5cafa6
--- /dev/null
+++ b/packages/modules/devices/sigenergy/vendor.py
@@ -0,0 +1,14 @@
+from pathlib import Path
+
+from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
+
+
+class Vendor:
+    def __init__(self):
+        self.type = Path(__file__).parent.name
+        self.vendor = "Sigenergy"
+        self.group = VendorGroup.VENDORS.value
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/solis/__init__.py b/packages/modules/devices/solis/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/modules/devices/solis/bat.py b/packages/modules/devices/solis/solis/bat.py
similarity index 96%
rename from packages/modules/devices/solis/bat.py
rename to packages/modules/devices/solis/solis/bat.py
index 4ef463864b..b0e97c418a 100644
--- a/packages/modules/devices/solis/bat.py
+++ b/packages/modules/devices/solis/solis/bat.py
@@ -6,7 +6,7 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_bat_value_store
-from modules.devices.solis.config import SolisBatSetup
+from modules.devices.solis.solis.config import SolisBatSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solis/config.py b/packages/modules/devices/solis/solis/config.py
similarity index 97%
rename from packages/modules/devices/solis/config.py
rename to packages/modules/devices/solis/solis/config.py
index dcfac74cb2..2992d5a5c0 100644
--- a/packages/modules/devices/solis/config.py
+++ b/packages/modules/devices/solis/solis/config.py
@@ -2,7 +2,7 @@
 from helpermodules.auto_str import auto_str
 
 from modules.common.component_setup import ComponentSetup
-from modules.devices.solis.version import SolisVersion
+from modules.devices.solis.solis.version import SolisVersion
 
 
 class SolisConfiguration:
diff --git a/packages/modules/devices/solis/counter.py b/packages/modules/devices/solis/solis/counter.py
similarity index 93%
rename from packages/modules/devices/solis/counter.py
rename to packages/modules/devices/solis/solis/counter.py
index 068439dfc0..4da7613cc8 100644
--- a/packages/modules/devices/solis/counter.py
+++ b/packages/modules/devices/solis/solis/counter.py
@@ -5,8 +5,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_counter_value_store
-from modules.devices.solis.config import SolisCounterSetup
-from modules.devices.solis.version import SolisVersion
+from modules.devices.solis.solis.config import SolisCounterSetup
+from modules.devices.solis.solis.version import SolisVersion
 
 
 class SolisCounter:
diff --git a/packages/modules/devices/solis/device.py b/packages/modules/devices/solis/solis/device.py
similarity index 85%
rename from packages/modules/devices/solis/device.py
rename to packages/modules/devices/solis/solis/device.py
index 1f5553edd1..c95b4574f5 100644
--- a/packages/modules/devices/solis/device.py
+++ b/packages/modules/devices/solis/solis/device.py
@@ -6,10 +6,10 @@
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.solis.bat import SolisBat
-from modules.devices.solis.counter import SolisCounter
-from modules.devices.solis.inverter import SolisInverter
-from modules.devices.solis.config import Solis, SolisBatSetup, SolisCounterSetup, SolisInverterSetup
+from modules.devices.solis.solis.bat import SolisBat
+from modules.devices.solis.solis.counter import SolisCounter
+from modules.devices.solis.solis.inverter import SolisInverter
+from modules.devices.solis.solis.config import Solis, SolisBatSetup, SolisCounterSetup, SolisInverterSetup
 
 log = logging.getLogger(__name__)
 
diff --git a/packages/modules/devices/solis/inverter.py b/packages/modules/devices/solis/solis/inverter.py
similarity index 93%
rename from packages/modules/devices/solis/inverter.py
rename to packages/modules/devices/solis/solis/inverter.py
index ace20b837c..11a353fd8e 100644
--- a/packages/modules/devices/solis/inverter.py
+++ b/packages/modules/devices/solis/solis/inverter.py
@@ -7,8 +7,8 @@
 from modules.common.fault_state import ComponentInfo, FaultState
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.store import get_inverter_value_store
-from modules.devices.solis.config import SolisInverterSetup
-from modules.devices.solis.version import SolisVersion
+from modules.devices.solis.solis.config import SolisInverterSetup
+from modules.devices.solis.solis.version import SolisVersion
 
 
 class SolisInverter:
diff --git a/packages/modules/devices/solis/version.py b/packages/modules/devices/solis/solis/version.py
similarity index 100%
rename from packages/modules/devices/solis/version.py
rename to packages/modules/devices/solis/solis/version.py
diff --git a/packages/modules/devices/solis/vendor.py b/packages/modules/devices/solis/vendor.py
new file mode 100644
index 0000000000..fb0b81b1d1
--- /dev/null
+++ b/packages/modules/devices/solis/vendor.py
@@ -0,0 +1,14 @@
+from pathlib import Path
+
+from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.vendors import VendorGroup
+
+
+class Vendor:
+    def __init__(self):
+        self.type = Path(__file__).parent.name
+        self.vendor = "Solis"
+        self.group = VendorGroup.VENDORS.value
+
+
+vendor_descriptor = DeviceDescriptor(configuration_factory=Vendor)
diff --git a/packages/modules/devices/varta/varta/device.py b/packages/modules/devices/varta/varta/device.py
index c6c7a04c7b..0e34ee40f4 100644
--- a/packages/modules/devices/varta/varta/device.py
+++ b/packages/modules/devices/varta/varta/device.py
@@ -8,7 +8,7 @@
 from modules.common.component_state import BatState
 from modules.common.configurable_device import ConfigurableDevice, ComponentFactoryByType, MultiComponentUpdater
 from modules.common.modbus import ModbusTcpClient_
-from modules.devices.varta.inverter import VartaInverter
+from modules.devices.varta.varta.inverter import VartaInverter
 from modules.devices.varta.varta import bat_api, counter
 from modules.devices.varta.varta import bat_modbus
 from modules.devices.varta.varta.bat_api import VartaBatApi
diff --git a/packages/modules/devices/varta/inverter.py b/packages/modules/devices/varta/varta/inverter.py
similarity index 95%
rename from packages/modules/devices/varta/inverter.py
rename to packages/modules/devices/varta/varta/inverter.py
index 264f9973d9..6be1b430fd 100644
--- a/packages/modules/devices/varta/inverter.py
+++ b/packages/modules/devices/varta/varta/inverter.py
@@ -6,7 +6,7 @@
 from modules.common.modbus import ModbusDataType, ModbusTcpClient_
 from modules.common.simcount import SimCounter
 from modules.common.store import get_inverter_value_store
-from modules.devices.varta.config import VartaInverterSetup
+from modules.devices.varta.varta.config import VartaInverterSetup
 
 
 class VartaInverter:

From 0e7d7d3f8dd9f7af4fe2a01f0db3359d46112d7b Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Wed, 18 Sep 2024 13:13:03 +0200
Subject: [PATCH 076/205] fix datastore upgrade

---
 packages/helpermodules/update_config.py | 369 +++---------------------
 1 file changed, 34 insertions(+), 335 deletions(-)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 8631130fa9..fca2d6fa91 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -47,7 +47,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 62
+    DATASTORE_VERSION = 60
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -1740,339 +1740,38 @@ def upgrade(topic: str, payload) -> Optional[dict]:
     def upgrade_datastore_59(self) -> None:
         def upgrade(topic: str, payload) -> Optional[dict]:
             if re.search("openWB/system/device/[0-9]+/config", topic) is not None:
-                device = decode_payload(payload)
-                # Gruppe hinzufügen
-                if (device.get("type") == "openwb_bat_kit" or device.get("type") == "openwb_evu_kit"
-                        or device.get("type") == "openwb_flex" or device.get("type") == "openwb_pv_kit"):
-                    if "group" not in device:
-                        updated_payload = device
-                        updated_payload.update({"group": 'openWB'})
-                        return {topic: updated_payload}
-                if (device.get("type") == "http" or device.get("type") == "json" or device.get("type") == "mqtt"
-                        or device.get("type") == "virtual"):
-                    if "group" not in device:
-                        updated_payload = device
-                        updated_payload.update({"group": 'generic'})
-                        return {topic: updated_payload}
-                if (device.get("type") == "alpha_ess" or device.get("type") == "azzurro_sofar"
-                    or device.get("type") == "azzurro_zcs" or device.get("type") == "batterx"
-                        or device.get("type") == "benning" or device.get("type") == "byd"
-                        or device.get("type") == "carlo_gavazzi" or device.get("type") == "deye"
-                        or device.get("type") == "discovergy" or device.get("type") == "e3dc"
-                        or device.get("type") == "enphase" or device.get("type") == "fems"
-                        or device.get("type") == "fox_ess" or device.get("type") == "fronius"
-                        or device.get("type") == "good_we" or device.get("type") == "huawei"
-                        or device.get("type") == "huawei_smartlogger" or device.get("type") == "janitza"
-                        or device.get("type") == "kostal_piko" or device.get("type") == "kostal_piko_old"
-                        or device.get("type") == "kostal_plenticore" or device.get("type") == "kostal_sem"
-                        or device.get("type") == "kostal_steca" or device.get("type") == "lg"
-                        or device.get("type") == "mtec" or device.get("type") == "opendtu"
-                        or device.get("type") == "powerdog" or device.get("type") == "powerfox"
-                        or device.get("type") == "qcells" or device.get("type") == "rct"
-                        or device.get("type") == "saxpower" or device.get("type") == "shelly"
-                        or device.get("type") == "siemens" or device.get("type") == "siemens_sentron"
-                        or device.get("type") == "sma_shm" or device.get("type") == "sma_sunny_boy"
-                        or device.get("type") == "sma_sunny_island" or device.get("type") == "sma_webbox"
-                        or device.get("type") == "smart_me" or device.get("type") == "smartfox"
-                        or device.get("type") == "solaredge" or device.get("type") == "solar_log"
-                        or device.get("type") == "solar_view" or device.get("type") == "solar_watt"
-                        or device.get("type") == "solar_world" or device.get("type") == "solarmax"
-                        or device.get("type") == "solax" or device.get("type") == "sonnenbatterie"
-                        or device.get("type") == "studer" or device.get("type") == "sungrow"
-                        or device.get("type") == "sunways" or device.get("type") == "tasmota"
-                        or device.get("type") == "tesla" or device.get("type") == "varta"
-                        or device.get("type") == "victron" or device.get("type") == "vzlogger"
-                        or device.get("type") == "youless"):
-                    if "group" not in device:
-                        updated_payload = device
-                        updated_payload.update({"group": 'other'})
-                        return {topic: updated_payload}
+                # add "vendor" to devices
+                device_config = decode_payload(payload)
+                # defaults to vendor = type
+                device_vendor = device_config.get("type")
+                # 1. generic devices
+                if device_config.get("type") in ["http", "json", "mqtt", "virtual"]:
+                    device_vendor = "generic"
+                # 2. openWB
+                if device_config.get("type").startswith("openwb_"):
+                    device_vendor = "openwb"
+                # 3. huawei
+                elif device_config.get("type").startswith("huawei"):
+                    device_vendor = "huawei"
+                # 4. kostal
+                elif device_config.get("type").startswith("kostal"):
+                    device_vendor = "kostal"
+                # 5. Siemens
+                elif device_config.get("type").startswith("siemens"):
+                    device_vendor = "siemens"
+                # 6 sma
+                elif device_config.get("type").startswith("sma_"):
+                    device_vendor = "sma"
+                elif device_config.get("type") == "sonnenbatterie":
+                    device_vendor = "sonnen"
+                elif device_config.get("type") == "azzurro_sofar":
+                    device_config.update({"type": "sofar"})
+                    device_vendor = "sofar"
+                # add "vendor" to device
+                if "vendor" not in device_config:
+                    device_config.update({"vendor": device_vendor})
+                    log.debug(f"Added vendor '{device_vendor}' to device '{device_config['name']}'")
+                    log.debug(f"Device configuration: {device_config}")
+                    return {topic: device_config}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 60)
-
-    def upgrade_datastore_60(self) -> None:
-        def upgrade(topic: str, payload) -> Optional[dict]:
-            if re.search("openWB/system/device/[0-9]+/config", topic) is not None:
-                device = decode_payload(payload)
-                # Hier type updaten - wird für den korrekten Pfad gebraucht
-                # 1. openWB
-                if device.get("type") == "openwb_bat_kit":
-                    updated_payload = device
-                    updated_payload["type"] = ["openWB", "openwb_bat_kit"]
-                    return {topic: updated_payload}
-                if device.get("type") == "openwb_evu_kit":
-                    updated_payload = device
-                    updated_payload["type"] = ["openWB", "openwb_evu_kit"]
-                    return {topic: updated_payload}
-                if device.get("type") == "openwb_flex":
-                    updated_payload = device
-                    updated_payload["type"] = ["openWB", "openwb_flex"]
-                    return {topic: updated_payload}
-                if device.get("type") == "openwb_pv_kit":
-                    updated_payload = device
-                    updated_payload["type"] = ["openWB", "openwb_pv_kit"]
-                    return {topic: updated_payload}
-                # 2. huawei
-                if device.get("type") == "huawei":
-                    updated_payload = device
-                    updated_payload["type"] = ["huawei", "huawei"]
-                    return {topic: updated_payload}
-                if device.get("type") == "huawei_smartlogger":
-                    updated_payload = device
-                    updated_payload["type"] = ["huawei", "huawei_smartlogger"]
-                    return {topic: updated_payload}
-                # 3. kostal
-                if device.get("type") == "kostal_piko":
-                    updated_payload = device
-                    updated_payload["type"] = ["kostal", "kostal_piko"]
-                    return {topic: updated_payload}
-                if device.get("type") == "kostal_piko_old":
-                    updated_payload = device
-                    updated_payload["type"] = ["kostal", "kostal_piko_old"]
-                    return {topic: updated_payload}
-                if device.get("type") == "kostal_plenticore":
-                    updated_payload = device
-                    updated_payload["type"] = ["kostal", "kostal_plenticore"]
-                    return {topic: updated_payload}
-                if device.get("type") == "kostal_sem":
-                    updated_payload = device
-                    updated_payload["type"] = ["kostal", "kostal_sem"]
-                    return {topic: updated_payload}
-                if device.get("type") == "kostal_steca":
-                    updated_payload = device
-                    updated_payload["type"] = ["kostal", "kostal_steca"]
-                    return {topic: updated_payload}
-                # 4. Siemens
-                if device.get("type") == "siemens":
-                    updated_payload = device
-                    updated_payload["type"] = ["siemens", "siemens"]
-                    return {topic: updated_payload}
-                if device.get("type") == "siemens_sentron":
-                    updated_payload = device
-                    updated_payload["type"] = ["siemens", "siemens_sentron"]
-                    return {topic: updated_payload}
-                # 5 sma
-                if device.get("type") == "sma_shm":
-                    updated_payload = device
-                    updated_payload["type"] = ["sma", "sma_shm"]
-                    return {topic: updated_payload}
-                if device.get("type") == "sma_sunny_boy":
-                    updated_payload = device
-                    updated_payload["type"] = ["sma", "sma_sunny_boy"]
-                    return {topic: updated_payload}
-                if device.get("type") == "sma_sunny_island":
-                    updated_payload = device
-                    updated_payload["type"] = ["sma", "sma_sunny_island"]
-                    return {topic: updated_payload}
-                if device.get("type") == "sma_webbox":
-                    updated_payload = device
-                    updated_payload["type"] = ["sma", "sma_webbox"]
-                    return {topic: updated_payload}
-                # 6 Pfade anpassen
-                if (device.get("type") == "alpha_ess"):
-                    updated_payload = device
-                    updated_payload["type"] = ["alpha_ess", "alpha_ess"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "azzurro_sofar"):
-                    updated_payload = device
-                    updated_payload["type"] = ["sofar", "sofar"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "azzurro_zcs"):
-                    updated_payload = device
-                    updated_payload["type"] = ["azzurro_zcs", "azzurro_zcs"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "batterx"):
-                    updated_payload = device
-                    updated_payload["type"] = ["batterx", "batterx"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "benning"):
-                    updated_payload = device
-                    updated_payload["type"] = ["benning", "benning"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "byd"):
-                    updated_payload = device
-                    updated_payload["type"] = ["byd", "byd"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "carlo_gavazzi"):
-                    updated_payload = device
-                    updated_payload["type"] = ["carlo_gavazzi", "carlo_gavazzi"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "deye"):
-                    updated_payload = device
-                    updated_payload["type"] = ["deye", "deye"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "discovergy"):
-                    updated_payload = device
-                    updated_payload["type"] = ["discovergy", "discovergy"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "e3dc"):
-                    updated_payload = device
-                    updated_payload["type"] = ["e3dc", "e3dc"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "enphase"):
-                    updated_payload = device
-                    updated_payload["type"] = ["enphase", "enphase"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "fems"):
-                    updated_payload = device
-                    updated_payload["type"] = ["fems", "fems"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "fox_ess"):
-                    updated_payload = device
-                    updated_payload["type"] = ["fox_ess", "fox_ess"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "fronius"):
-                    updated_payload = device
-                    updated_payload["type"] = ["fronius", "fronius"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "good_we"):
-                    updated_payload = device
-                    updated_payload["type"] = ["good_we", "good_we"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "janitza"):
-                    updated_payload = device
-                    updated_payload["type"] = ["janitza", "janitza"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "lg"):
-                    updated_payload = device
-                    updated_payload["type"] = ["lg", "lg"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "mtec"):
-                    updated_payload = device
-                    updated_payload["type"] = ["mtec", "mtec"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "opendtu"):
-                    updated_payload = device
-                    updated_payload["type"] = ["opendtu", "opendtu"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "powerdog"):
-                    updated_payload = device
-                    updated_payload["type"] = ["powerdog", "powerdog"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "powerfox"):
-                    updated_payload = device
-                    updated_payload["type"] = ["powerfox", "powerfox"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "qcells"):
-                    updated_payload = device
-                    updated_payload["type"] = ["qcells", "qcells"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "rct"):
-                    updated_payload = device
-                    updated_payload["type"] = ["rct", "rct"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "saxpower"):
-                    updated_payload = device
-                    updated_payload["type"] = ["saxpower", "saxpower"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "shelly"):
-                    updated_payload = device
-                    updated_payload["type"] = ["shelly", "shelly"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "smart_me"):
-                    updated_payload = device
-                    updated_payload["type"] = ["smart_me", "smart_me"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "smartfox"):
-                    updated_payload = device
-                    updated_payload["type"] = ["smartfox", "smartfox"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "solar_log"):
-                    updated_payload = device
-                    updated_payload["type"] = ["solar_log", "solar_log"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "solar_view"):
-                    updated_payload = device
-                    updated_payload["type"] = ["solar_view", "solar_view"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "solar_watt"):
-                    updated_payload = device
-                    updated_payload["type"] = ["solar_watt", "solar_watt"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "solar_world"):
-                    updated_payload = device
-                    updated_payload["type"] = ["solar_world", "solar_world"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "solaredge"):
-                    updated_payload = device
-                    updated_payload["type"] = ["solaredge", "solaredge"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "solarmax"):
-                    updated_payload = device
-                    updated_payload["type"] = ["solarmax", "solarmax"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "solax"):
-                    updated_payload = device
-                    updated_payload["type"] = ["solax", "solax"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "sonnenbatterie"):
-                    updated_payload = device
-                    updated_payload["type"] = ["sonnenbatterie", "sonnenbatterie"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "studer"):
-                    updated_payload = device
-                    updated_payload["type"] = ["studer", "studer"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "sungrow"):
-                    updated_payload = device
-                    updated_payload["type"] = ["sungrow", "sungrow"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "sunways"):
-                    updated_payload = device
-                    updated_payload["type"] = ["sunways", "sunways"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "tasmota"):
-                    updated_payload = device
-                    updated_payload["type"] = ["tasmota", "tasmota"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "tesla"):
-                    updated_payload = device
-                    updated_payload["type"] = ["tesla", "tesla"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "varta"):
-                    updated_payload = device
-                    updated_payload["type"] = ["varta", "varta"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "victron"):
-                    updated_payload = device
-                    updated_payload["type"] = ["victron", "victron"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "vzlogger"):
-                    updated_payload = device
-                    updated_payload["type"] = ["vzlogger", "vzlogger"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "youless"):
-                    updated_payload = device
-                    updated_payload["type"] = ["youless", "youless"]
-                    return {topic: updated_payload}
-                # 7 generisch
-                if (device.get("type") == "http"):
-                    updated_payload = device
-                    updated_payload["type"] = ["generic", "http"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "mqtt"):
-                    updated_payload = device
-                    updated_payload["type"] = ["generic", "mqtt"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "json"):
-                    updated_payload = device
-                    updated_payload["type"] = ["generic", "json"]
-                    return {topic: updated_payload}
-                if (device.get("type") == "virtual"):
-                    updated_payload = device
-                    updated_payload["type"] = ["generic", "virtual"]
-                    return {topic: updated_payload}
-        self._loop_all_received_topics(upgrade)
-        self.__update_topic("openWB/system/datastore_version", 61)
-
-    def upgrade_datastore_61(self) -> None:
-        def upgrade(topic: str, payload) -> Optional[dict]:
-            if re.search("openWB/system/device/[0-9]+/config", topic) is not None:
-                device = decode_payload(payload)
-                # Namensaenderung anpassen
-                if (device.get("name") == "Azzurro - Sofar 3P"):
-                    updated_payload = device
-                    updated_payload["name"] = "SofarSolar"
-                    return {topic: updated_payload}
-        self._loop_all_received_topics(upgrade)
-        self.__update_topic("openWB/system/datastore_version", 62)

From 184f50dd06b23a85ef8e4b3b0b82d6d6c6cc79df Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Mon, 23 Sep 2024 12:06:55 +0200
Subject: [PATCH 077/205] not consider unbalanced load for three phase charging
 (#1885)

---
 packages/control/loadmanagement.py | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/packages/control/loadmanagement.py b/packages/control/loadmanagement.py
index efc59ce58e..649a81061b 100644
--- a/packages/control/loadmanagement.py
+++ b/packages/control/loadmanagement.py
@@ -23,7 +23,8 @@ def get_available_currents(self,
             limit = limit_power
         if f"counter{counter.num}" == data.data.counter_all_data.get_evu_counter_str():
             available_currents, limit_unbalanced_load = self._limit_by_unbalanced_load(
-                counter, available_currents, raw_currents_left)
+                counter, available_currents, raw_currents_left,
+                len([value for value in missing_currents if value != 0]))
             if limit_unbalanced_load is not None:
                 limit = limit_unbalanced_load
         return available_currents, limit
@@ -40,7 +41,8 @@ def get_available_currents_surplus(self,
             limit = limit_power
         if f"counter{counter.num}" == data.data.counter_all_data.get_evu_counter_str():
             available_currents, limit_unbalanced_load = self._limit_by_unbalanced_load(
-                counter, available_currents, raw_currents_left)
+                counter, available_currents, raw_currents_left,
+                len([value for value in missing_currents if value != 0]))
             if limit_unbalanced_load is not None:
                 limit = limit_unbalanced_load
         return available_currents, limit
@@ -48,14 +50,18 @@ def get_available_currents_surplus(self,
     def _limit_by_unbalanced_load(self,
                                   counter: Counter,
                                   available_currents: List[float],
-                                  raw_currents_left: List[float]) -> Tuple[List[float], Optional[LimitingValue]]:
+                                  raw_currents_left: List[float],
+                                  phases_to_use: int) -> Tuple[List[float], Optional[LimitingValue]]:
         raw_currents_left_charging = list(map(operator.sub, raw_currents_left, available_currents))
         max_exceeding = counter.get_unbalanced_load_exceeding(raw_currents_left_charging)
         limit = None
         if max(max_exceeding) > 0:
-            available_currents = list(map(operator.sub, available_currents, max_exceeding))
-            log.debug(f"Schieflast {max_exceeding}A korrigieren: {available_currents}")
-            limit = LimitingValue.UNBALANCED_LOAD
+            if phases_to_use < 3 and phases_to_use > 0:
+                available_currents = list(map(operator.sub, available_currents, max_exceeding))
+                log.debug(f"Schieflast {max_exceeding}A korrigieren: {available_currents}")
+                limit = LimitingValue.UNBALANCED_LOAD
+            elif phases_to_use == 3:
+                log.debug("Schieflastkorrektur nicht möglich, da alle Phasen genutzt werden.")
         return available_currents, limit
 
     # tested

From 40bcd1bdd92c4a35fca61a8a1e0b90d9fee03102 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Mon, 23 Sep 2024 12:08:19 +0200
Subject: [PATCH 078/205] build ui

---
 .../assets/{ChargeLog-26d874e2.js => ChargeLog-bb7dcf68.js}     | 2 +-
 ...allation-922a298c.js => ChargePointInstallation-05b3f352.js} | 2 +-
 web/settings/assets/{Chart-21256647.js => Chart-b41732de.js}    | 2 +-
 .../assets/{CloudConfig-90995ab5.js => CloudConfig-fe40cc84.js} | 2 +-
 .../{DataManagement-8e77f816.js => DataManagement-5a70f628.js}  | 2 +-
 .../assets/{DebugConfig-fab63baa.js => DebugConfig-8124d78c.js} | 2 +-
 ...ChargeConfig-ecbdf48d.js => GeneralChargeConfig-d9dcaaa3.js} | 2 +-
 .../{GeneralConfig-9cc2f4c2.js => GeneralConfig-45cfd7f0.js}    | 2 +-
 web/settings/assets/HardwareInstallation-2c12edbc.js            | 1 +
 web/settings/assets/HardwareInstallation-a105c95d.js            | 1 -
 ...nstallAssistant-cf52f5a9.js => InstallAssistant-6dafed2f.js} | 2 +-
 ...stantStep0-9e7a579c.js => InstallAssistantStep0-e9cce727.js} | 2 +-
 ...stantStep1-ad2e1612.js => InstallAssistantStep1-efa3c6bc.js} | 2 +-
 ...antStep10-34baf34c.js => InstallAssistantStep10-7c0c9f39.js} | 2 +-
 ...stantStep2-7bc8d141.js => InstallAssistantStep2-fda9278d.js} | 2 +-
 ...stantStep3-b116e741.js => InstallAssistantStep3-4d332029.js} | 2 +-
 ...stantStep4-7237ac3b.js => InstallAssistantStep4-6da51e7b.js} | 2 +-
 ...stantStep5-2f42076b.js => InstallAssistantStep5-fe505bd8.js} | 2 +-
 ...stantStep6-82a042dc.js => InstallAssistantStep6-0a0862fa.js} | 2 +-
 ...stantStep7-50482e21.js => InstallAssistantStep7-51ebd504.js} | 2 +-
 ...stantStep8-cc64765b.js => InstallAssistantStep8-2ead69e7.js} | 2 +-
 ...stantStep9-938e13a7.js => InstallAssistantStep9-195c286e.js} | 2 +-
 ...ate-eb06cf07.js => InstallAssistantStepTemplate-fc1b6a40.js} | 2 +-
 ...ChargeConfig-31e43404.js => InstantChargeConfig-f62c6c62.js} | 2 +-
 .../{LegalSettings-fe52cd90.js => LegalSettings-30e95de5.js}    | 2 +-
 ...ementConfig-bf9a36c1.js => LoadManagementConfig-6b31901e.js} | 2 +-
 ...qttBridgeConfig-aa7c26e4.js => MqttBridgeConfig-f457be0c.js} | 2 +-
 ...nalComponents-71cfebf9.js => OptionalComponents-d3fca35b.js} | 2 +-
 .../{PVChargeConfig-4e2ab231.js => PVChargeConfig-a0353b9a.js}  | 2 +-
 ...argeConfig-d8c705e2.js => ScheduledChargeConfig-cb777801.js} | 2 +-
 web/settings/assets/{Status-2dd83854.js => Status-0e0f6b66.js}  | 2 +-
 .../assets/{Support-34834209.js => Support-89c6cc7c.js}         | 2 +-
 web/settings/assets/System-d59d61b7.js                          | 1 +
 web/settings/assets/System-f83e90ce.js                          | 1 -
 .../{TestingStore-60647c44.js => TestingStore-a904ffb0.js}      | 2 +-
 ...imeChargeConfig-26b3316f.js => TimeChargeConfig-387e7031.js} | 2 +-
 .../{VehicleConfig-4390a03b.js => VehicleConfig-a1751954.js}    | 2 +-
 web/settings/assets/bat-03b2886a.js                             | 1 -
 web/settings/assets/{bat-743c3fdf.js => bat-0535c59d.js}        | 2 +-
 web/settings/assets/bat-10c5131f.js                             | 1 -
 web/settings/assets/{bat-6cf0ead4.js => bat-11a9e662.js}        | 2 +-
 web/settings/assets/{bat-8c16e92a.js => bat-210e6934.js}        | 2 +-
 web/settings/assets/{bat-992c1fad.js => bat-22e19627.js}        | 2 +-
 web/settings/assets/bat-2eaaeb62.js                             | 1 -
 web/settings/assets/{bat-af818069.js => bat-2ec8a7b2.js}        | 2 +-
 web/settings/assets/{bat-e3476b6f.js => bat-32c9f6fd.js}        | 2 +-
 web/settings/assets/{bat-dde41be1.js => bat-361f190b.js}        | 2 +-
 web/settings/assets/{bat-e274125f.js => bat-37aa8980.js}        | 2 +-
 web/settings/assets/{bat-a3dcba33.js => bat-3e5d89d4.js}        | 2 +-
 web/settings/assets/bat-4202cb7c.js                             | 1 -
 web/settings/assets/bat-46611da3.js                             | 1 +
 web/settings/assets/{bat-07a8e221.js => bat-4ce133fc.js}        | 2 +-
 web/settings/assets/bat-502cd078.js                             | 1 -
 web/settings/assets/bat-5a80b300.js                             | 1 +
 web/settings/assets/{bat-0070e79c.js => bat-5bb162c2.js}        | 2 +-
 web/settings/assets/{bat-7696fb32.js => bat-5f5ccb07.js}        | 2 +-
 web/settings/assets/{bat-00ebc725.js => bat-669886fa.js}        | 2 +-
 web/settings/assets/{bat-03f52267.js => bat-6ec0726a.js}        | 2 +-
 web/settings/assets/{bat-f0682b3b.js => bat-70713ff4.js}        | 2 +-
 web/settings/assets/{bat-cd57b824.js => bat-7a8901e4.js}        | 2 +-
 web/settings/assets/{bat-a6d57bec.js => bat-7cf44039.js}        | 2 +-
 web/settings/assets/{bat-d619a60e.js => bat-7e961860.js}        | 2 +-
 web/settings/assets/{bat-12d70573.js => bat-7f5835ff.js}        | 2 +-
 web/settings/assets/{bat-fbd92ad1.js => bat-84a37ddf.js}        | 2 +-
 web/settings/assets/bat-86050b21.js                             | 1 +
 web/settings/assets/{bat-abfe5184.js => bat-93b96b73.js}        | 2 +-
 web/settings/assets/{bat-a18245a1.js => bat-960570d8.js}        | 2 +-
 web/settings/assets/{bat-fa44fb17.js => bat-a2809c14.js}        | 2 +-
 web/settings/assets/{bat-ced626fd.js => bat-a51c89dc.js}        | 2 +-
 web/settings/assets/bat-a89d2c6d.js                             | 1 +
 web/settings/assets/{bat-fa2d3a69.js => bat-ab2534e0.js}        | 2 +-
 web/settings/assets/{bat-5425fafc.js => bat-ba0e681b.js}        | 2 +-
 web/settings/assets/{bat-6181c19b.js => bat-c023ee7d.js}        | 2 +-
 web/settings/assets/{bat-5521391f.js => bat-c1bb93e7.js}        | 2 +-
 web/settings/assets/{bat-a0fe622c.js => bat-c2e3bd93.js}        | 2 +-
 web/settings/assets/bat-ca879aa3.js                             | 1 +
 web/settings/assets/{bat-cccaeec9.js => bat-e2b4a6f2.js}        | 2 +-
 web/settings/assets/{bat-69046b0c.js => bat-ea7043ef.js}        | 2 +-
 web/settings/assets/{bat-31e29792.js => bat-edeea5ab.js}        | 2 +-
 web/settings/assets/{bat-12bba3ed.js => bat-f0d9c44f.js}        | 2 +-
 web/settings/assets/{bat-1eb4a7db.js => bat-f21d8d0a.js}        | 2 +-
 web/settings/assets/{bat-15d35f20.js => bat-fae6736a.js}        | 2 +-
 .../assets/{bat_api-c6cfe543.js => bat_api-04666400.js}         | 2 +-
 .../assets/{bat_modbus-06ac44e9.js => bat_modbus-ffbf71f1.js}   | 2 +-
 ...at_smart_energy-c274185e.js => bat_smart_energy-8a31af27.js} | 2 +-
 ...tion_counter-7ddecd31.js => consumption_counter-e19fcdd5.js} | 2 +-
 .../assets/{counter-50558177.js => counter-031b0305.js}         | 2 +-
 .../assets/{counter-3430ef92.js => counter-0bf7d9a6.js}         | 2 +-
 .../assets/{counter-e32214a7.js => counter-0f65c1e3.js}         | 2 +-
 web/settings/assets/counter-10685234.js                         | 1 -
 .../assets/{counter-b55f01eb.js => counter-132a4c95.js}         | 2 +-
 .../assets/{counter-e306bbd8.js => counter-147bcc09.js}         | 2 +-
 .../assets/{counter-f98b9cbf.js => counter-15bbcc8d.js}         | 2 +-
 web/settings/assets/counter-160f6b42.js                         | 1 -
 .../assets/{counter-ccf41c41.js => counter-16ad21fd.js}         | 2 +-
 web/settings/assets/counter-17ea177d.js                         | 1 +
 web/settings/assets/counter-1aa978fe.js                         | 1 -
 .../assets/{counter-be7695ff.js => counter-2131ddbc.js}         | 2 +-
 .../assets/{counter-e6c4238b.js => counter-214fbb40.js}         | 2 +-
 .../assets/{counter-7dd04de5.js => counter-27d4acde.js}         | 2 +-
 .../assets/{counter-94b37ec5.js => counter-2844dfce.js}         | 2 +-
 .../assets/{counter-c9a9f709.js => counter-30a3ca76.js}         | 2 +-
 .../assets/{counter-95d74ce1.js => counter-32ed9eb1.js}         | 2 +-
 .../assets/{counter-246eef5f.js => counter-39a750b6.js}         | 2 +-
 .../assets/{counter-43080cd3.js => counter-3b17cd0a.js}         | 2 +-
 .../assets/{counter-a3858d9d.js => counter-419f31a5.js}         | 2 +-
 .../assets/{counter-e63ef9d1.js => counter-49277c48.js}         | 2 +-
 .../assets/{counter-3e87edf3.js => counter-49c86301.js}         | 2 +-
 .../assets/{counter-15d8fd18.js => counter-4cf113fa.js}         | 2 +-
 .../assets/{counter-36a6d397.js => counter-4dcc66e0.js}         | 2 +-
 .../assets/{counter-f95e981c.js => counter-4f739eff.js}         | 2 +-
 .../assets/{counter-e2353bc1.js => counter-5cdd5400.js}         | 2 +-
 .../assets/{counter-7f7c6971.js => counter-6703f6f0.js}         | 2 +-
 .../assets/{counter-b83de018.js => counter-6a7f6553.js}         | 2 +-
 .../assets/{counter-bdaa3d40.js => counter-720f0b7c.js}         | 2 +-
 .../assets/{counter-a7ce2e13.js => counter-761ec99f.js}         | 2 +-
 .../assets/{counter-0e19dbc5.js => counter-776a14ff.js}         | 2 +-
 .../assets/{counter-7baa2b31.js => counter-7de8fa46.js}         | 2 +-
 .../assets/{counter-bb73dd30.js => counter-7e9e02b6.js}         | 2 +-
 .../assets/{counter-3a0288d3.js => counter-8102691a.js}         | 2 +-
 .../assets/{counter-18904432.js => counter-85e02a09.js}         | 2 +-
 .../assets/{counter-c9328771.js => counter-899de3b1.js}         | 2 +-
 .../assets/{counter-425920df.js => counter-8aa3e08a.js}         | 2 +-
 .../assets/{counter-c92f088c.js => counter-90d6c411.js}         | 2 +-
 .../assets/{counter-5fea2f2b.js => counter-92dbeb44.js}         | 2 +-
 .../assets/{counter-1e285dde.js => counter-963b86e8.js}         | 2 +-
 web/settings/assets/counter-9c0b6f8f.js                         | 1 +
 .../assets/{counter-54421a1c.js => counter-9ca02844.js}         | 2 +-
 .../assets/{counter-67f38979.js => counter-9db4f10d.js}         | 2 +-
 .../assets/{counter-70b2a64c.js => counter-a43b7c84.js}         | 2 +-
 web/settings/assets/counter-ae228566.js                         | 1 +
 .../assets/{counter-971740d4.js => counter-b01202f0.js}         | 2 +-
 .../assets/{counter-7ec871ef.js => counter-bf240441.js}         | 2 +-
 .../assets/{counter-a647164b.js => counter-c0599fe6.js}         | 2 +-
 .../assets/{counter-96cdc611.js => counter-ca9e3fe2.js}         | 2 +-
 web/settings/assets/counter-cd4f14cb.js                         | 1 -
 .../assets/{counter-1cc10b54.js => counter-d3b3c371.js}         | 2 +-
 web/settings/assets/counter-d3c67a64.js                         | 1 +
 .../assets/{counter-9f443962.js => counter-d7164453.js}         | 2 +-
 web/settings/assets/counter-d86757f2.js                         | 1 +
 .../assets/{counter-94b6802e.js => counter-dc109611.js}         | 2 +-
 web/settings/assets/counter-e1b176cd.js                         | 1 -
 .../assets/{counter-25d13278.js => counter-fa66cb6a.js}         | 2 +-
 .../assets/{counter_s0-860ec468.js => counter_s0-8459b248.js}   | 2 +-
 .../assets/{counter_sm-a94a3e01.js => counter_sm-157d8b84.js}   | 2 +-
 web/settings/assets/{device-978a39c6.js => device-02184b73.js}  | 2 +-
 web/settings/assets/{device-23a82284.js => device-06345e49.js}  | 2 +-
 web/settings/assets/device-0852663a.js                          | 1 +
 web/settings/assets/{device-26a38357.js => device-1194af1e.js}  | 2 +-
 web/settings/assets/{device-c5df5aff.js => device-12c43ff6.js}  | 2 +-
 web/settings/assets/{device-7d0443e1.js => device-14134a0e.js}  | 2 +-
 web/settings/assets/{device-99dfaf68.js => device-191a8f0d.js}  | 2 +-
 web/settings/assets/{device-973a766d.js => device-1dbf9864.js}  | 2 +-
 web/settings/assets/device-1ea206ee.js                          | 1 -
 web/settings/assets/{device-5ee1f362.js => device-1f5e9c10.js}  | 2 +-
 web/settings/assets/{device-969e7e37.js => device-2004960c.js}  | 2 +-
 web/settings/assets/{device-b0052907.js => device-25323637.js}  | 2 +-
 web/settings/assets/{device-d2cb5a1c.js => device-29ba5b2b.js}  | 2 +-
 web/settings/assets/{device-c6cc93a1.js => device-2a05ce83.js}  | 2 +-
 web/settings/assets/{device-7513ccc0.js => device-34858026.js}  | 2 +-
 web/settings/assets/{device-558befc9.js => device-35945559.js}  | 2 +-
 web/settings/assets/{device-fb0c3879.js => device-3d9e43fe.js}  | 2 +-
 web/settings/assets/{device-c1bc98d9.js => device-4e84dc20.js}  | 2 +-
 web/settings/assets/device-4f252d8d.js                          | 1 +
 web/settings/assets/{device-c95ddafe.js => device-538ad6e5.js}  | 2 +-
 web/settings/assets/device-53c3c990.js                          | 1 +
 web/settings/assets/{device-32f3515c.js => device-560cda8e.js}  | 2 +-
 web/settings/assets/{device-decb34ec.js => device-56cb9ab9.js}  | 2 +-
 web/settings/assets/{device-aeda6c46.js => device-5926f93d.js}  | 2 +-
 web/settings/assets/{device-a7f6d1af.js => device-59ac52ab.js}  | 2 +-
 web/settings/assets/{device-e70fb123.js => device-60a41819.js}  | 2 +-
 web/settings/assets/{device-f408fff0.js => device-66551827.js}  | 2 +-
 web/settings/assets/{device-79947814.js => device-66b6ca53.js}  | 2 +-
 web/settings/assets/{device-4e0ae06c.js => device-67447569.js}  | 2 +-
 web/settings/assets/{device-b21e02e9.js => device-6bc2e333.js}  | 2 +-
 web/settings/assets/{device-fca4d491.js => device-71b3befd.js}  | 2 +-
 web/settings/assets/{device-5c5eff36.js => device-7328c01a.js}  | 2 +-
 web/settings/assets/{device-d35b0355.js => device-74cc8223.js}  | 2 +-
 web/settings/assets/device-7bcef0cb.js                          | 1 -
 web/settings/assets/device-7d20d912.js                          | 1 +
 web/settings/assets/{device-6513a22e.js => device-7e7c253d.js}  | 2 +-
 web/settings/assets/{device-f969614a.js => device-85271457.js}  | 2 +-
 web/settings/assets/{device-f386c17f.js => device-93d7ec8d.js}  | 2 +-
 web/settings/assets/{device-9c5030b4.js => device-96e65ee3.js}  | 2 +-
 web/settings/assets/{device-e62fefa8.js => device-9b78528f.js}  | 2 +-
 web/settings/assets/{device-27b7a3b2.js => device-9f0dbb75.js}  | 2 +-
 web/settings/assets/{device-1ffb41f0.js => device-9ff76175.js}  | 2 +-
 web/settings/assets/{device-e10d0dda.js => device-a100762d.js}  | 2 +-
 web/settings/assets/{device-c6a1db4d.js => device-a326b87b.js}  | 2 +-
 web/settings/assets/{device-6e379819.js => device-a3a79e85.js}  | 2 +-
 web/settings/assets/{device-20c840b8.js => device-a3aaa72b.js}  | 2 +-
 web/settings/assets/{device-e6134b3a.js => device-a5b9720c.js}  | 2 +-
 web/settings/assets/{device-ca6e69b3.js => device-a875f223.js}  | 2 +-
 web/settings/assets/{device-b37a9e8d.js => device-ab2aea83.js}  | 2 +-
 web/settings/assets/{device-03024a15.js => device-accf2fa8.js}  | 2 +-
 web/settings/assets/{device-a1360448.js => device-b0485aae.js}  | 2 +-
 web/settings/assets/{device-c3a7fe4c.js => device-b394014f.js}  | 2 +-
 web/settings/assets/{device-7c73cd7c.js => device-b6cf16cc.js}  | 2 +-
 web/settings/assets/{device-9953198a.js => device-bcd1ab1c.js}  | 2 +-
 web/settings/assets/device-bde30920.js                          | 1 -
 web/settings/assets/{device-cdd190a8.js => device-bee08fb1.js}  | 2 +-
 web/settings/assets/device-bff08244.js                          | 1 -
 web/settings/assets/{device-9d8b0b7b.js => device-c2c254cf.js}  | 2 +-
 web/settings/assets/{device-d89c28aa.js => device-c94e89d5.js}  | 2 +-
 web/settings/assets/{device-85bbc3b6.js => device-cc90e6fa.js}  | 2 +-
 web/settings/assets/{device-8bcc2213.js => device-d7ef046e.js}  | 2 +-
 web/settings/assets/{device-78545a1c.js => device-dd9c6eba.js}  | 2 +-
 web/settings/assets/{device-66c1386d.js => device-df771d66.js}  | 2 +-
 web/settings/assets/{device-03c90ad8.js => device-e4af98fb.js}  | 2 +-
 web/settings/assets/{device-983fa414.js => device-e78c3c94.js}  | 2 +-
 web/settings/assets/{device-3d446bca.js => device-f298ed3b.js}  | 2 +-
 web/settings/assets/{device-88b475f8.js => device-f6cff0ea.js}  | 2 +-
 web/settings/assets/{device-3968fce4.js => device-f8acb969.js}  | 2 +-
 web/settings/assets/{device-f30e2b4f.js => device-f96e49ba.js}  | 2 +-
 web/settings/assets/{device-968f2783.js => device-fa86e6ca.js}  | 2 +-
 web/settings/assets/{device-8ebdd328.js => device-ff88dc47.js}  | 2 +-
 ...ricity_tariff-4caccbff.js => electricity_tariff-78c8d847.js} | 2 +-
 ...ernal_inverter-c36c81de.js => external_inverter-154b0b15.js} | 2 +-
 ...ernal_inverter-4a132ee4.js => external_inverter-355c5719.js} | 2 +-
 ...ernal_inverter-034918bb.js => external_inverter-ee34cc1c.js} | 2 +-
 web/settings/assets/{index-3e910ceb.js => index-0deee932.js}    | 2 +-
 .../assets/{inverter-9fcabcbf.js => inverter-008f792b.js}       | 2 +-
 .../assets/{inverter-d25e077f.js => inverter-01948182.js}       | 2 +-
 .../assets/{inverter-0e6faf4b.js => inverter-022a27f9.js}       | 2 +-
 .../assets/{inverter-62ab631a.js => inverter-0671dbec.js}       | 2 +-
 web/settings/assets/inverter-0773e282.js                        | 1 +
 .../assets/{inverter-78807591.js => inverter-0feca953.js}       | 2 +-
 .../assets/{inverter-2eb2f36e.js => inverter-148b1cf9.js}       | 2 +-
 web/settings/assets/inverter-160edb4d.js                        | 1 +
 .../assets/{inverter-1111bf45.js => inverter-16319c3f.js}       | 2 +-
 .../assets/{inverter-ff52ec92.js => inverter-1f1b0291.js}       | 2 +-
 web/settings/assets/inverter-2e1e52a7.js                        | 1 -
 .../assets/{inverter-f58294c9.js => inverter-317c9702.js}       | 2 +-
 .../assets/{inverter-aa1e9ea5.js => inverter-390b002d.js}       | 2 +-
 .../assets/{inverter-ce73b653.js => inverter-3a00ed3d.js}       | 2 +-
 .../assets/{inverter-0950a8cb.js => inverter-3a35e713.js}       | 2 +-
 .../assets/{inverter-281b7a65.js => inverter-3a81dff8.js}       | 2 +-
 web/settings/assets/inverter-508ccdbf.js                        | 1 -
 .../assets/{inverter-90d810a4.js => inverter-53505c28.js}       | 2 +-
 .../assets/{inverter-39667dd3.js => inverter-53c9dd57.js}       | 2 +-
 web/settings/assets/inverter-564ac740.js                        | 1 +
 web/settings/assets/inverter-5a5ed031.js                        | 1 +
 web/settings/assets/inverter-5e52c5a2.js                        | 1 -
 web/settings/assets/inverter-6429eef9.js                        | 1 -
 .../assets/{inverter-395b265b.js => inverter-671f6a73.js}       | 2 +-
 .../assets/{inverter-620c2cc3.js => inverter-69ae908d.js}       | 2 +-
 .../assets/{inverter-c4e9e5f0.js => inverter-6b993a71.js}       | 2 +-
 .../assets/{inverter-ea12e7e4.js => inverter-79c8fb55.js}       | 2 +-
 web/settings/assets/inverter-7b31a11f.js                        | 1 -
 web/settings/assets/inverter-7f269997.js                        | 1 +
 .../assets/{inverter-c4ca2aa1.js => inverter-80468543.js}       | 2 +-
 .../assets/{inverter-c6690fa5.js => inverter-804d1c85.js}       | 2 +-
 .../assets/{inverter-f46c6992.js => inverter-81caf0c3.js}       | 2 +-
 web/settings/assets/inverter-858c070d.js                        | 1 -
 .../assets/{inverter-c2367805.js => inverter-85d76c41.js}       | 2 +-
 .../assets/{inverter-e62bcc2d.js => inverter-8bd91bf1.js}       | 2 +-
 .../assets/{inverter-f09f6954.js => inverter-9046aa5a.js}       | 2 +-
 .../assets/{inverter-a269797d.js => inverter-927da016.js}       | 2 +-
 .../assets/{inverter-39d17978.js => inverter-929c3f78.js}       | 2 +-
 .../assets/{inverter-001a7dc5.js => inverter-9c9c65d2.js}       | 2 +-
 .../assets/{inverter-aba0125a.js => inverter-9df7c4d9.js}       | 2 +-
 .../assets/{inverter-b3883b88.js => inverter-a1fe6824.js}       | 2 +-
 web/settings/assets/inverter-a3685d5a.js                        | 1 -
 .../assets/{inverter-2d49a3aa.js => inverter-a6b17edd.js}       | 2 +-
 .../assets/{inverter-cb19d4d9.js => inverter-ae598de4.js}       | 2 +-
 web/settings/assets/inverter-b10ff0aa.js                        | 1 -
 .../assets/{inverter-45617c87.js => inverter-b3e8ecb5.js}       | 2 +-
 .../assets/{inverter-5213cff7.js => inverter-b4a67c1c.js}       | 2 +-
 web/settings/assets/inverter-b9d7f198.js                        | 1 +
 .../assets/{inverter-9dc89f1d.js => inverter-bea955ac.js}       | 2 +-
 .../assets/{inverter-597e2682.js => inverter-bff31af2.js}       | 2 +-
 .../assets/{inverter-a5b2e2f6.js => inverter-c5fc8299.js}       | 2 +-
 .../assets/{inverter-5ab60482.js => inverter-cf027bb4.js}       | 2 +-
 .../assets/{inverter-0c59320c.js => inverter-d62075d8.js}       | 2 +-
 .../assets/{inverter-4a61fc24.js => inverter-d785d016.js}       | 2 +-
 web/settings/assets/inverter-e0439727.js                        | 1 +
 web/settings/assets/inverter-e2fcc96e.js                        | 1 +
 .../assets/{inverter-0528aae6.js => inverter-e39deae7.js}       | 2 +-
 .../assets/{inverter-09efda14.js => inverter-e52144a7.js}       | 2 +-
 .../assets/{inverter-d568cbbe.js => inverter-e8d637fe.js}       | 2 +-
 .../assets/{inverter-0ffd0b65.js => inverter-ed15250f.js}       | 2 +-
 .../assets/{inverter-8faef1dd.js => inverter-f329a5ad.js}       | 2 +-
 .../assets/{inverter-b1fa1dd4.js => inverter-f62aa161.js}       | 2 +-
 .../assets/{inverter-d280d9cc.js => inverter-f6495d7c.js}       | 2 +-
 .../assets/{inverter-3b913d29.js => inverter-fcb34a03.js}       | 2 +-
 ...ter_secondary-ec1119a3.js => inverter_secondary-603793ab.js} | 2 +-
 .../assets/{vehicle-39ccb597.js => vehicle-d38b53d4.js}         | 2 +-
 web/settings/index.html                                         | 2 +-
 288 files changed, 264 insertions(+), 264 deletions(-)
 rename web/settings/assets/{ChargeLog-26d874e2.js => ChargeLog-bb7dcf68.js} (99%)
 rename web/settings/assets/{ChargePointInstallation-922a298c.js => ChargePointInstallation-05b3f352.js} (99%)
 rename web/settings/assets/{Chart-21256647.js => Chart-b41732de.js} (99%)
 rename web/settings/assets/{CloudConfig-90995ab5.js => CloudConfig-fe40cc84.js} (99%)
 rename web/settings/assets/{DataManagement-8e77f816.js => DataManagement-5a70f628.js} (99%)
 rename web/settings/assets/{DebugConfig-fab63baa.js => DebugConfig-8124d78c.js} (98%)
 rename web/settings/assets/{GeneralChargeConfig-ecbdf48d.js => GeneralChargeConfig-d9dcaaa3.js} (98%)
 rename web/settings/assets/{GeneralConfig-9cc2f4c2.js => GeneralConfig-45cfd7f0.js} (99%)
 create mode 100644 web/settings/assets/HardwareInstallation-2c12edbc.js
 delete mode 100644 web/settings/assets/HardwareInstallation-a105c95d.js
 rename web/settings/assets/{InstallAssistant-cf52f5a9.js => InstallAssistant-6dafed2f.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-9e7a579c.js => InstallAssistantStep0-e9cce727.js} (95%)
 rename web/settings/assets/{InstallAssistantStep1-ad2e1612.js => InstallAssistantStep1-efa3c6bc.js} (89%)
 rename web/settings/assets/{InstallAssistantStep10-34baf34c.js => InstallAssistantStep10-7c0c9f39.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-7bc8d141.js => InstallAssistantStep2-fda9278d.js} (89%)
 rename web/settings/assets/{InstallAssistantStep3-b116e741.js => InstallAssistantStep3-4d332029.js} (92%)
 rename web/settings/assets/{InstallAssistantStep4-7237ac3b.js => InstallAssistantStep4-6da51e7b.js} (92%)
 rename web/settings/assets/{InstallAssistantStep5-2f42076b.js => InstallAssistantStep5-fe505bd8.js} (93%)
 rename web/settings/assets/{InstallAssistantStep6-82a042dc.js => InstallAssistantStep6-0a0862fa.js} (94%)
 rename web/settings/assets/{InstallAssistantStep7-50482e21.js => InstallAssistantStep7-51ebd504.js} (93%)
 rename web/settings/assets/{InstallAssistantStep8-cc64765b.js => InstallAssistantStep8-2ead69e7.js} (93%)
 rename web/settings/assets/{InstallAssistantStep9-938e13a7.js => InstallAssistantStep9-195c286e.js} (91%)
 rename web/settings/assets/{InstallAssistantStepTemplate-eb06cf07.js => InstallAssistantStepTemplate-fc1b6a40.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-31e43404.js => InstantChargeConfig-f62c6c62.js} (96%)
 rename web/settings/assets/{LegalSettings-fe52cd90.js => LegalSettings-30e95de5.js} (97%)
 rename web/settings/assets/{LoadManagementConfig-bf9a36c1.js => LoadManagementConfig-6b31901e.js} (99%)
 rename web/settings/assets/{MqttBridgeConfig-aa7c26e4.js => MqttBridgeConfig-f457be0c.js} (99%)
 rename web/settings/assets/{OptionalComponents-71cfebf9.js => OptionalComponents-d3fca35b.js} (99%)
 rename web/settings/assets/{PVChargeConfig-4e2ab231.js => PVChargeConfig-a0353b9a.js} (99%)
 rename web/settings/assets/{ScheduledChargeConfig-d8c705e2.js => ScheduledChargeConfig-cb777801.js} (97%)
 rename web/settings/assets/{Status-2dd83854.js => Status-0e0f6b66.js} (99%)
 rename web/settings/assets/{Support-34834209.js => Support-89c6cc7c.js} (99%)
 create mode 100644 web/settings/assets/System-d59d61b7.js
 delete mode 100644 web/settings/assets/System-f83e90ce.js
 rename web/settings/assets/{TestingStore-60647c44.js => TestingStore-a904ffb0.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-26b3316f.js => TimeChargeConfig-387e7031.js} (96%)
 rename web/settings/assets/{VehicleConfig-4390a03b.js => VehicleConfig-a1751954.js} (99%)
 delete mode 100644 web/settings/assets/bat-03b2886a.js
 rename web/settings/assets/{bat-743c3fdf.js => bat-0535c59d.js} (69%)
 delete mode 100644 web/settings/assets/bat-10c5131f.js
 rename web/settings/assets/{bat-6cf0ead4.js => bat-11a9e662.js} (73%)
 rename web/settings/assets/{bat-8c16e92a.js => bat-210e6934.js} (90%)
 rename web/settings/assets/{bat-992c1fad.js => bat-22e19627.js} (71%)
 delete mode 100644 web/settings/assets/bat-2eaaeb62.js
 rename web/settings/assets/{bat-af818069.js => bat-2ec8a7b2.js} (90%)
 rename web/settings/assets/{bat-e3476b6f.js => bat-32c9f6fd.js} (91%)
 rename web/settings/assets/{bat-dde41be1.js => bat-361f190b.js} (68%)
 rename web/settings/assets/{bat-e274125f.js => bat-37aa8980.js} (82%)
 rename web/settings/assets/{bat-a3dcba33.js => bat-3e5d89d4.js} (54%)
 delete mode 100644 web/settings/assets/bat-4202cb7c.js
 create mode 100644 web/settings/assets/bat-46611da3.js
 rename web/settings/assets/{bat-07a8e221.js => bat-4ce133fc.js} (74%)
 delete mode 100644 web/settings/assets/bat-502cd078.js
 create mode 100644 web/settings/assets/bat-5a80b300.js
 rename web/settings/assets/{bat-0070e79c.js => bat-5bb162c2.js} (67%)
 rename web/settings/assets/{bat-7696fb32.js => bat-5f5ccb07.js} (68%)
 rename web/settings/assets/{bat-00ebc725.js => bat-669886fa.js} (60%)
 rename web/settings/assets/{bat-03f52267.js => bat-6ec0726a.js} (61%)
 rename web/settings/assets/{bat-f0682b3b.js => bat-70713ff4.js} (83%)
 rename web/settings/assets/{bat-cd57b824.js => bat-7a8901e4.js} (92%)
 rename web/settings/assets/{bat-a6d57bec.js => bat-7cf44039.js} (94%)
 rename web/settings/assets/{bat-d619a60e.js => bat-7e961860.js} (59%)
 rename web/settings/assets/{bat-12d70573.js => bat-7f5835ff.js} (80%)
 rename web/settings/assets/{bat-fbd92ad1.js => bat-84a37ddf.js} (90%)
 create mode 100644 web/settings/assets/bat-86050b21.js
 rename web/settings/assets/{bat-abfe5184.js => bat-93b96b73.js} (72%)
 rename web/settings/assets/{bat-a18245a1.js => bat-960570d8.js} (89%)
 rename web/settings/assets/{bat-fa44fb17.js => bat-a2809c14.js} (73%)
 rename web/settings/assets/{bat-ced626fd.js => bat-a51c89dc.js} (70%)
 create mode 100644 web/settings/assets/bat-a89d2c6d.js
 rename web/settings/assets/{bat-fa2d3a69.js => bat-ab2534e0.js} (82%)
 rename web/settings/assets/{bat-5425fafc.js => bat-ba0e681b.js} (62%)
 rename web/settings/assets/{bat-6181c19b.js => bat-c023ee7d.js} (92%)
 rename web/settings/assets/{bat-5521391f.js => bat-c1bb93e7.js} (66%)
 rename web/settings/assets/{bat-a0fe622c.js => bat-c2e3bd93.js} (62%)
 create mode 100644 web/settings/assets/bat-ca879aa3.js
 rename web/settings/assets/{bat-cccaeec9.js => bat-e2b4a6f2.js} (90%)
 rename web/settings/assets/{bat-69046b0c.js => bat-ea7043ef.js} (90%)
 rename web/settings/assets/{bat-31e29792.js => bat-edeea5ab.js} (82%)
 rename web/settings/assets/{bat-12bba3ed.js => bat-f0d9c44f.js} (96%)
 rename web/settings/assets/{bat-1eb4a7db.js => bat-f21d8d0a.js} (98%)
 rename web/settings/assets/{bat-15d35f20.js => bat-fae6736a.js} (90%)
 rename web/settings/assets/{bat_api-c6cfe543.js => bat_api-04666400.js} (61%)
 rename web/settings/assets/{bat_modbus-06ac44e9.js => bat_modbus-ffbf71f1.js} (81%)
 rename web/settings/assets/{bat_smart_energy-c274185e.js => bat_smart_energy-8a31af27.js} (75%)
 rename web/settings/assets/{consumption_counter-7ddecd31.js => consumption_counter-e19fcdd5.js} (95%)
 rename web/settings/assets/{counter-50558177.js => counter-031b0305.js} (94%)
 rename web/settings/assets/{counter-3430ef92.js => counter-0bf7d9a6.js} (94%)
 rename web/settings/assets/{counter-e32214a7.js => counter-0f65c1e3.js} (76%)
 delete mode 100644 web/settings/assets/counter-10685234.js
 rename web/settings/assets/{counter-b55f01eb.js => counter-132a4c95.js} (93%)
 rename web/settings/assets/{counter-e306bbd8.js => counter-147bcc09.js} (75%)
 rename web/settings/assets/{counter-f98b9cbf.js => counter-15bbcc8d.js} (80%)
 delete mode 100644 web/settings/assets/counter-160f6b42.js
 rename web/settings/assets/{counter-ccf41c41.js => counter-16ad21fd.js} (58%)
 create mode 100644 web/settings/assets/counter-17ea177d.js
 delete mode 100644 web/settings/assets/counter-1aa978fe.js
 rename web/settings/assets/{counter-be7695ff.js => counter-2131ddbc.js} (82%)
 rename web/settings/assets/{counter-e6c4238b.js => counter-214fbb40.js} (69%)
 rename web/settings/assets/{counter-7dd04de5.js => counter-27d4acde.js} (74%)
 rename web/settings/assets/{counter-94b37ec5.js => counter-2844dfce.js} (90%)
 rename web/settings/assets/{counter-c9a9f709.js => counter-30a3ca76.js} (79%)
 rename web/settings/assets/{counter-95d74ce1.js => counter-32ed9eb1.js} (78%)
 rename web/settings/assets/{counter-246eef5f.js => counter-39a750b6.js} (66%)
 rename web/settings/assets/{counter-43080cd3.js => counter-3b17cd0a.js} (83%)
 rename web/settings/assets/{counter-a3858d9d.js => counter-419f31a5.js} (79%)
 rename web/settings/assets/{counter-e63ef9d1.js => counter-49277c48.js} (94%)
 rename web/settings/assets/{counter-3e87edf3.js => counter-49c86301.js} (83%)
 rename web/settings/assets/{counter-15d8fd18.js => counter-4cf113fa.js} (92%)
 rename web/settings/assets/{counter-36a6d397.js => counter-4dcc66e0.js} (91%)
 rename web/settings/assets/{counter-f95e981c.js => counter-4f739eff.js} (89%)
 rename web/settings/assets/{counter-e2353bc1.js => counter-5cdd5400.js} (76%)
 rename web/settings/assets/{counter-7f7c6971.js => counter-6703f6f0.js} (56%)
 rename web/settings/assets/{counter-b83de018.js => counter-6a7f6553.js} (93%)
 rename web/settings/assets/{counter-bdaa3d40.js => counter-720f0b7c.js} (75%)
 rename web/settings/assets/{counter-a7ce2e13.js => counter-761ec99f.js} (89%)
 rename web/settings/assets/{counter-0e19dbc5.js => counter-776a14ff.js} (58%)
 rename web/settings/assets/{counter-7baa2b31.js => counter-7de8fa46.js} (98%)
 rename web/settings/assets/{counter-bb73dd30.js => counter-7e9e02b6.js} (79%)
 rename web/settings/assets/{counter-3a0288d3.js => counter-8102691a.js} (66%)
 rename web/settings/assets/{counter-18904432.js => counter-85e02a09.js} (60%)
 rename web/settings/assets/{counter-c9328771.js => counter-899de3b1.js} (91%)
 rename web/settings/assets/{counter-425920df.js => counter-8aa3e08a.js} (95%)
 rename web/settings/assets/{counter-c92f088c.js => counter-90d6c411.js} (82%)
 rename web/settings/assets/{counter-5fea2f2b.js => counter-92dbeb44.js} (83%)
 rename web/settings/assets/{counter-1e285dde.js => counter-963b86e8.js} (61%)
 create mode 100644 web/settings/assets/counter-9c0b6f8f.js
 rename web/settings/assets/{counter-54421a1c.js => counter-9ca02844.js} (77%)
 rename web/settings/assets/{counter-67f38979.js => counter-9db4f10d.js} (54%)
 rename web/settings/assets/{counter-70b2a64c.js => counter-a43b7c84.js} (98%)
 create mode 100644 web/settings/assets/counter-ae228566.js
 rename web/settings/assets/{counter-971740d4.js => counter-b01202f0.js} (91%)
 rename web/settings/assets/{counter-7ec871ef.js => counter-bf240441.js} (97%)
 rename web/settings/assets/{counter-a647164b.js => counter-c0599fe6.js} (77%)
 rename web/settings/assets/{counter-96cdc611.js => counter-ca9e3fe2.js} (74%)
 delete mode 100644 web/settings/assets/counter-cd4f14cb.js
 rename web/settings/assets/{counter-1cc10b54.js => counter-d3b3c371.js} (92%)
 create mode 100644 web/settings/assets/counter-d3c67a64.js
 rename web/settings/assets/{counter-9f443962.js => counter-d7164453.js} (70%)
 create mode 100644 web/settings/assets/counter-d86757f2.js
 rename web/settings/assets/{counter-94b6802e.js => counter-dc109611.js} (94%)
 delete mode 100644 web/settings/assets/counter-e1b176cd.js
 rename web/settings/assets/{counter-25d13278.js => counter-fa66cb6a.js} (68%)
 rename web/settings/assets/{counter_s0-860ec468.js => counter_s0-8459b248.js} (74%)
 rename web/settings/assets/{counter_sm-a94a3e01.js => counter_sm-157d8b84.js} (97%)
 rename web/settings/assets/{device-978a39c6.js => device-02184b73.js} (67%)
 rename web/settings/assets/{device-23a82284.js => device-06345e49.js} (62%)
 create mode 100644 web/settings/assets/device-0852663a.js
 rename web/settings/assets/{device-26a38357.js => device-1194af1e.js} (82%)
 rename web/settings/assets/{device-c5df5aff.js => device-12c43ff6.js} (94%)
 rename web/settings/assets/{device-7d0443e1.js => device-14134a0e.js} (69%)
 rename web/settings/assets/{device-99dfaf68.js => device-191a8f0d.js} (97%)
 rename web/settings/assets/{device-973a766d.js => device-1dbf9864.js} (91%)
 delete mode 100644 web/settings/assets/device-1ea206ee.js
 rename web/settings/assets/{device-5ee1f362.js => device-1f5e9c10.js} (75%)
 rename web/settings/assets/{device-969e7e37.js => device-2004960c.js} (90%)
 rename web/settings/assets/{device-b0052907.js => device-25323637.js} (70%)
 rename web/settings/assets/{device-d2cb5a1c.js => device-29ba5b2b.js} (96%)
 rename web/settings/assets/{device-c6cc93a1.js => device-2a05ce83.js} (62%)
 rename web/settings/assets/{device-7513ccc0.js => device-34858026.js} (93%)
 rename web/settings/assets/{device-558befc9.js => device-35945559.js} (94%)
 rename web/settings/assets/{device-fb0c3879.js => device-3d9e43fe.js} (97%)
 rename web/settings/assets/{device-c1bc98d9.js => device-4e84dc20.js} (94%)
 create mode 100644 web/settings/assets/device-4f252d8d.js
 rename web/settings/assets/{device-c95ddafe.js => device-538ad6e5.js} (89%)
 create mode 100644 web/settings/assets/device-53c3c990.js
 rename web/settings/assets/{device-32f3515c.js => device-560cda8e.js} (52%)
 rename web/settings/assets/{device-decb34ec.js => device-56cb9ab9.js} (94%)
 rename web/settings/assets/{device-aeda6c46.js => device-5926f93d.js} (50%)
 rename web/settings/assets/{device-a7f6d1af.js => device-59ac52ab.js} (75%)
 rename web/settings/assets/{device-e70fb123.js => device-60a41819.js} (91%)
 rename web/settings/assets/{device-f408fff0.js => device-66551827.js} (85%)
 rename web/settings/assets/{device-79947814.js => device-66b6ca53.js} (92%)
 rename web/settings/assets/{device-4e0ae06c.js => device-67447569.js} (71%)
 rename web/settings/assets/{device-b21e02e9.js => device-6bc2e333.js} (73%)
 rename web/settings/assets/{device-fca4d491.js => device-71b3befd.js} (74%)
 rename web/settings/assets/{device-5c5eff36.js => device-7328c01a.js} (92%)
 rename web/settings/assets/{device-d35b0355.js => device-74cc8223.js} (94%)
 delete mode 100644 web/settings/assets/device-7bcef0cb.js
 create mode 100644 web/settings/assets/device-7d20d912.js
 rename web/settings/assets/{device-6513a22e.js => device-7e7c253d.js} (79%)
 rename web/settings/assets/{device-f969614a.js => device-85271457.js} (75%)
 rename web/settings/assets/{device-f386c17f.js => device-93d7ec8d.js} (70%)
 rename web/settings/assets/{device-9c5030b4.js => device-96e65ee3.js} (92%)
 rename web/settings/assets/{device-e62fefa8.js => device-9b78528f.js} (94%)
 rename web/settings/assets/{device-27b7a3b2.js => device-9f0dbb75.js} (95%)
 rename web/settings/assets/{device-1ffb41f0.js => device-9ff76175.js} (95%)
 rename web/settings/assets/{device-e10d0dda.js => device-a100762d.js} (63%)
 rename web/settings/assets/{device-c6a1db4d.js => device-a326b87b.js} (93%)
 rename web/settings/assets/{device-6e379819.js => device-a3a79e85.js} (95%)
 rename web/settings/assets/{device-20c840b8.js => device-a3aaa72b.js} (95%)
 rename web/settings/assets/{device-e6134b3a.js => device-a5b9720c.js} (95%)
 rename web/settings/assets/{device-ca6e69b3.js => device-a875f223.js} (91%)
 rename web/settings/assets/{device-b37a9e8d.js => device-ab2aea83.js} (67%)
 rename web/settings/assets/{device-03024a15.js => device-accf2fa8.js} (92%)
 rename web/settings/assets/{device-a1360448.js => device-b0485aae.js} (93%)
 rename web/settings/assets/{device-c3a7fe4c.js => device-b394014f.js} (89%)
 rename web/settings/assets/{device-7c73cd7c.js => device-b6cf16cc.js} (93%)
 rename web/settings/assets/{device-9953198a.js => device-bcd1ab1c.js} (94%)
 delete mode 100644 web/settings/assets/device-bde30920.js
 rename web/settings/assets/{device-cdd190a8.js => device-bee08fb1.js} (82%)
 delete mode 100644 web/settings/assets/device-bff08244.js
 rename web/settings/assets/{device-9d8b0b7b.js => device-c2c254cf.js} (69%)
 rename web/settings/assets/{device-d89c28aa.js => device-c94e89d5.js} (72%)
 rename web/settings/assets/{device-85bbc3b6.js => device-cc90e6fa.js} (96%)
 rename web/settings/assets/{device-8bcc2213.js => device-d7ef046e.js} (92%)
 rename web/settings/assets/{device-78545a1c.js => device-dd9c6eba.js} (86%)
 rename web/settings/assets/{device-66c1386d.js => device-df771d66.js} (93%)
 rename web/settings/assets/{device-03c90ad8.js => device-e4af98fb.js} (94%)
 rename web/settings/assets/{device-983fa414.js => device-e78c3c94.js} (91%)
 rename web/settings/assets/{device-3d446bca.js => device-f298ed3b.js} (57%)
 rename web/settings/assets/{device-88b475f8.js => device-f6cff0ea.js} (69%)
 rename web/settings/assets/{device-3968fce4.js => device-f8acb969.js} (91%)
 rename web/settings/assets/{device-f30e2b4f.js => device-f96e49ba.js} (84%)
 rename web/settings/assets/{device-968f2783.js => device-fa86e6ca.js} (85%)
 rename web/settings/assets/{device-8ebdd328.js => device-ff88dc47.js} (71%)
 rename web/settings/assets/{electricity_tariff-4caccbff.js => electricity_tariff-78c8d847.js} (97%)
 rename web/settings/assets/{external_inverter-c36c81de.js => external_inverter-154b0b15.js} (91%)
 rename web/settings/assets/{external_inverter-4a132ee4.js => external_inverter-355c5719.js} (89%)
 rename web/settings/assets/{external_inverter-034918bb.js => external_inverter-ee34cc1c.js} (93%)
 rename web/settings/assets/{index-3e910ceb.js => index-0deee932.js} (96%)
 rename web/settings/assets/{inverter-9fcabcbf.js => inverter-008f792b.js} (90%)
 rename web/settings/assets/{inverter-d25e077f.js => inverter-01948182.js} (76%)
 rename web/settings/assets/{inverter-0e6faf4b.js => inverter-022a27f9.js} (92%)
 rename web/settings/assets/{inverter-62ab631a.js => inverter-0671dbec.js} (81%)
 create mode 100644 web/settings/assets/inverter-0773e282.js
 rename web/settings/assets/{inverter-78807591.js => inverter-0feca953.js} (94%)
 rename web/settings/assets/{inverter-2eb2f36e.js => inverter-148b1cf9.js} (68%)
 create mode 100644 web/settings/assets/inverter-160edb4d.js
 rename web/settings/assets/{inverter-1111bf45.js => inverter-16319c3f.js} (90%)
 rename web/settings/assets/{inverter-ff52ec92.js => inverter-1f1b0291.js} (90%)
 delete mode 100644 web/settings/assets/inverter-2e1e52a7.js
 rename web/settings/assets/{inverter-f58294c9.js => inverter-317c9702.js} (74%)
 rename web/settings/assets/{inverter-aa1e9ea5.js => inverter-390b002d.js} (64%)
 rename web/settings/assets/{inverter-ce73b653.js => inverter-3a00ed3d.js} (89%)
 rename web/settings/assets/{inverter-0950a8cb.js => inverter-3a35e713.js} (61%)
 rename web/settings/assets/{inverter-281b7a65.js => inverter-3a81dff8.js} (74%)
 delete mode 100644 web/settings/assets/inverter-508ccdbf.js
 rename web/settings/assets/{inverter-90d810a4.js => inverter-53505c28.js} (93%)
 rename web/settings/assets/{inverter-39667dd3.js => inverter-53c9dd57.js} (93%)
 create mode 100644 web/settings/assets/inverter-564ac740.js
 create mode 100644 web/settings/assets/inverter-5a5ed031.js
 delete mode 100644 web/settings/assets/inverter-5e52c5a2.js
 delete mode 100644 web/settings/assets/inverter-6429eef9.js
 rename web/settings/assets/{inverter-395b265b.js => inverter-671f6a73.js} (91%)
 rename web/settings/assets/{inverter-620c2cc3.js => inverter-69ae908d.js} (86%)
 rename web/settings/assets/{inverter-c4e9e5f0.js => inverter-6b993a71.js} (96%)
 rename web/settings/assets/{inverter-ea12e7e4.js => inverter-79c8fb55.js} (66%)
 delete mode 100644 web/settings/assets/inverter-7b31a11f.js
 create mode 100644 web/settings/assets/inverter-7f269997.js
 rename web/settings/assets/{inverter-c4ca2aa1.js => inverter-80468543.js} (93%)
 rename web/settings/assets/{inverter-c6690fa5.js => inverter-804d1c85.js} (91%)
 rename web/settings/assets/{inverter-f46c6992.js => inverter-81caf0c3.js} (74%)
 delete mode 100644 web/settings/assets/inverter-858c070d.js
 rename web/settings/assets/{inverter-c2367805.js => inverter-85d76c41.js} (74%)
 rename web/settings/assets/{inverter-e62bcc2d.js => inverter-8bd91bf1.js} (94%)
 rename web/settings/assets/{inverter-f09f6954.js => inverter-9046aa5a.js} (81%)
 rename web/settings/assets/{inverter-a269797d.js => inverter-927da016.js} (94%)
 rename web/settings/assets/{inverter-39d17978.js => inverter-929c3f78.js} (77%)
 rename web/settings/assets/{inverter-001a7dc5.js => inverter-9c9c65d2.js} (88%)
 rename web/settings/assets/{inverter-aba0125a.js => inverter-9df7c4d9.js} (94%)
 rename web/settings/assets/{inverter-b3883b88.js => inverter-a1fe6824.js} (95%)
 delete mode 100644 web/settings/assets/inverter-a3685d5a.js
 rename web/settings/assets/{inverter-2d49a3aa.js => inverter-a6b17edd.js} (87%)
 rename web/settings/assets/{inverter-cb19d4d9.js => inverter-ae598de4.js} (91%)
 delete mode 100644 web/settings/assets/inverter-b10ff0aa.js
 rename web/settings/assets/{inverter-45617c87.js => inverter-b3e8ecb5.js} (53%)
 rename web/settings/assets/{inverter-5213cff7.js => inverter-b4a67c1c.js} (78%)
 create mode 100644 web/settings/assets/inverter-b9d7f198.js
 rename web/settings/assets/{inverter-9dc89f1d.js => inverter-bea955ac.js} (91%)
 rename web/settings/assets/{inverter-597e2682.js => inverter-bff31af2.js} (90%)
 rename web/settings/assets/{inverter-a5b2e2f6.js => inverter-c5fc8299.js} (82%)
 rename web/settings/assets/{inverter-5ab60482.js => inverter-cf027bb4.js} (89%)
 rename web/settings/assets/{inverter-0c59320c.js => inverter-d62075d8.js} (94%)
 rename web/settings/assets/{inverter-4a61fc24.js => inverter-d785d016.js} (84%)
 create mode 100644 web/settings/assets/inverter-e0439727.js
 create mode 100644 web/settings/assets/inverter-e2fcc96e.js
 rename web/settings/assets/{inverter-0528aae6.js => inverter-e39deae7.js} (88%)
 rename web/settings/assets/{inverter-09efda14.js => inverter-e52144a7.js} (89%)
 rename web/settings/assets/{inverter-d568cbbe.js => inverter-e8d637fe.js} (92%)
 rename web/settings/assets/{inverter-0ffd0b65.js => inverter-ed15250f.js} (84%)
 rename web/settings/assets/{inverter-8faef1dd.js => inverter-f329a5ad.js} (89%)
 rename web/settings/assets/{inverter-b1fa1dd4.js => inverter-f62aa161.js} (71%)
 rename web/settings/assets/{inverter-d280d9cc.js => inverter-f6495d7c.js} (91%)
 rename web/settings/assets/{inverter-3b913d29.js => inverter-fcb34a03.js} (92%)
 rename web/settings/assets/{inverter_secondary-ec1119a3.js => inverter_secondary-603793ab.js} (95%)
 rename web/settings/assets/{vehicle-39ccb597.js => vehicle-d38b53d4.js} (97%)

diff --git a/web/settings/assets/ChargeLog-26d874e2.js b/web/settings/assets/ChargeLog-bb7dcf68.js
similarity index 99%
rename from web/settings/assets/ChargeLog-26d874e2.js
rename to web/settings/assets/ChargeLog-bb7dcf68.js
index c2395f324a..d6b6f9beb6 100644
--- a/web/settings/assets/ChargeLog-26d874e2.js
+++ b/web/settings/assets/ChargeLog-bb7dcf68.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-3e910ceb.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-0deee932.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},y=t=>(W("data-v-8607e7e7"),t=t(),F(),t),M={class:"chargeLog"},P={name:"chargeLogForm"},z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],K=["aria-valuenow"],J=["aria-valuenow"],G=["aria-valuenow"],H=["aria-valuenow"],Q={key:1,class:"td-center"},Y={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ce={class:"hide",ref:"downloadChargeLogLink"},he=y(()=>i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),ge={class:"td-end"},_e={class:"td-end"},ue={class:"td-end"},me={class:"td-end"};function pe(t,e,o,p,l,r){const C=h("openwb-base-text-input"),f=h("font-awesome-icon"),D=h("openwb-base-button-group-input"),m=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),b=h("openwb-base-alert"),L=h("vue3-table-lite"),N=h("openwb-base-click-button");return g(),_("div",M,[i("form",P,[d(v,{title:"Filter"},{default:s(()=>[d(C,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:l.currentMonth,modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())]},null,8,["max","modelValue"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),c(" Erweiterte Optionen ")]),default:s(()=>[d(D,{title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())]},null,8,["modelValue"]),d(m,{title:"Lademodus",multiple:"",options:r.chargeModeList,modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Ladepunkt",multiple:"",options:r.chargePointList,modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Fahrzeug",multiple:"",options:r.vehicleList,modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(q,{title:"ID-Tags",modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Tags als Filter verwendet werden. ")]),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,z)]),_:1}),r.chargeLogRead?(g(),_("div",O,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(g(),_("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:u({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:u({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:u({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G),i("div",{class:"progress-bar bg-success",role:"progressbar",style:u({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,H)],8,j)):(g(),_("div",Q,"-"))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Y,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(g(),_("div",le,[i("div",de,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[c(" Als CSV exportieren "),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ce,null,512)]),he,d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",ge,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",_e,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ue,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",me,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):V("",!0)])):(g(),I(b,{key:0,subtype:"info"},{default:s(()=>[c(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const qe=B(U,[["render",pe],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{qe as default};
diff --git a/web/settings/assets/ChargePointInstallation-922a298c.js b/web/settings/assets/ChargePointInstallation-05b3f352.js
similarity index 99%
rename from web/settings/assets/ChargePointInstallation-922a298c.js
rename to web/settings/assets/ChargePointInstallation-05b3f352.js
index 202ebcd18d..918e73c60f 100644
--- a/web/settings/assets/ChargePointInstallation-922a298c.js
+++ b/web/settings/assets/ChargePointInstallation-05b3f352.js
@@ -1 +1 @@
-import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-3e910ceb.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
+import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-0deee932.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
diff --git a/web/settings/assets/Chart-21256647.js b/web/settings/assets/Chart-b41732de.js
similarity index 99%
rename from web/settings/assets/Chart-21256647.js
rename to web/settings/assets/Chart-b41732de.js
index d685da1bc8..fef9fa6370 100644
--- a/web/settings/assets/Chart-21256647.js
+++ b/web/settings/assets/Chart-b41732de.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-3e910ceb.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-0deee932.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-90995ab5.js b/web/settings/assets/CloudConfig-fe40cc84.js
similarity index 99%
rename from web/settings/assets/CloudConfig-90995ab5.js
rename to web/settings/assets/CloudConfig-fe40cc84.js
index 7b6f9521ab..0a1973c486 100644
--- a/web/settings/assets/CloudConfig-90995ab5.js
+++ b/web/settings/assets/CloudConfig-fe40cc84.js
@@ -1 +1 @@
-import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-3e910ceb.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
+import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-0deee932.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
diff --git a/web/settings/assets/DataManagement-8e77f816.js b/web/settings/assets/DataManagement-5a70f628.js
similarity index 99%
rename from web/settings/assets/DataManagement-8e77f816.js
rename to web/settings/assets/DataManagement-5a70f628.js
index c912073028..24de22a0c7 100644
--- a/web/settings/assets/DataManagement-8e77f816.js
+++ b/web/settings/assets/DataManagement-5a70f628.js
@@ -1 +1 @@
-import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-3e910ceb.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
+import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-0deee932.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
diff --git a/web/settings/assets/DebugConfig-fab63baa.js b/web/settings/assets/DebugConfig-8124d78c.js
similarity index 98%
rename from web/settings/assets/DebugConfig-fab63baa.js
rename to web/settings/assets/DebugConfig-8124d78c.js
index b1e42b6ae9..db8c09276c 100644
--- a/web/settings/assets/DebugConfig-fab63baa.js
+++ b/web/settings/assets/DebugConfig-8124d78c.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-3e910ceb.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-0deee932.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),p=s("openwb-base-avatar"),m=s("openwb-base-card");return d(),w(m,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(p,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=f($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",mixins:[k],components:{OpenwbLogCard:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),p=s("openwb-base-alert"),m=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),_("div",z,[v("form",V,[i(m,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>[b(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')]),_:1},8,["model-value"]),i(p,{subtype:"warning"},{default:l(()=>[b(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')]),_:1})]),_:1}),i(c,{formName:"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),_(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=f(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-ecbdf48d.js b/web/settings/assets/GeneralChargeConfig-d9dcaaa3.js
similarity index 98%
rename from web/settings/assets/GeneralChargeConfig-ecbdf48d.js
rename to web/settings/assets/GeneralChargeConfig-d9dcaaa3.js
index 7d30683e57..03741a1d5a 100644
--- a/web/settings/assets/GeneralChargeConfig-ecbdf48d.js
+++ b/web/settings/assets/GeneralChargeConfig-d9dcaaa3.js
@@ -1 +1 @@
-import{_ as g,C as T}from"./index-3e910ceb.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-4caccbff.js"),["assets/electricity_tariff-4caccbff.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
+import{_ as g,C as T}from"./index-0deee932.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-78c8d847.js"),["assets/electricity_tariff-78c8d847.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
diff --git a/web/settings/assets/GeneralConfig-9cc2f4c2.js b/web/settings/assets/GeneralConfig-45cfd7f0.js
similarity index 99%
rename from web/settings/assets/GeneralConfig-9cc2f4c2.js
rename to web/settings/assets/GeneralConfig-45cfd7f0.js
index 83360520b5..e7785cf320 100644
--- a/web/settings/assets/GeneralConfig-9cc2f4c2.js
+++ b/web/settings/assets/GeneralConfig-45cfd7f0.js
@@ -1 +1 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-3e910ceb.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-0deee932.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
diff --git a/web/settings/assets/HardwareInstallation-2c12edbc.js b/web/settings/assets/HardwareInstallation-2c12edbc.js
new file mode 100644
index 0000000000..e69bc23025
--- /dev/null
+++ b/web/settings/assets/HardwareInstallation-2c12edbc.js
@@ -0,0 +1 @@
+import{l as N,d as G,t as K,a7 as H,a0 as F,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-0deee932.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as x,u as p,k as d,l as c,A as E,N as i,z as I,y as s,D as u,x as l,a2 as S,a3 as $,B as L,J as D,K as y,q as k,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,t=void 0){this.$emit("update:configuration",{value:_,object:t})}}},oe={class:"device-fallback"},re={key:0},ie={key:1},ne={key:1},ue={key:0},de={key:1};function ve(_,t,r,m,a,n){const T=p("openwb-base-alert"),f=p("openwb-base-textarea");return d(),c("div",oe,[Object.keys(r.configuration).length==0?(d(),E(T,{key:0,subtype:"info"},{default:i(()=>[r.componentType?(d(),c("span",re,' Der Komponenten-Typ "'+I(r.componentType)+'" ',1)):(d(),c("span",ie,'Der Gerät-Typ "'+I(r.deviceType)+'"',1)),s(" bietet keine Einstellungen. ")]),_:1})):(d(),c("div",ne,[u(T,{subtype:"warning"},{default:i(()=>[s(" Es wurde keine Konfigurationsseite für den "),r.componentType?(d(),c("span",ue,' Komponenten-Typ "'+I(r.componentType)+'" ',1)):(d(),c("span",de,'Geräte-Typ "'+I(r.deviceType)+'"',1)),s(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),u(f,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":t[0]||(t[0]=R=>n.updateConfiguration(R,"configuration"))},{help:i(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),u(T,{subtype:"info"},{default:i(()=>[l("pre",null,I(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const q=x(te,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),se={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},deviceVendor:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?S({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/bat.vue":()=>e(()=>import("./bat-3e5d89d4.js"),["assets/bat-3e5d89d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/counter.vue":()=>e(()=>import("./counter-27d4acde.js"),["assets/counter-27d4acde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-66b6ca53.js"),["assets/device-66b6ca53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/inverter.vue":()=>e(()=>import("./inverter-b3e8ecb5.js"),["assets/inverter-b3e8ecb5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/bat.vue":()=>e(()=>import("./bat-6ec0726a.js"),["assets/bat-6ec0726a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/counter.vue":()=>e(()=>import("./counter-85e02a09.js"),["assets/counter-85e02a09.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ff88dc47.js"),["assets/device-ff88dc47.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-5a5ed031.js"),["assets/inverter-5a5ed031.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/bat.vue":()=>e(()=>import("./bat-edeea5ab.js"),["assets/bat-edeea5ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/counter.vue":()=>e(()=>import("./counter-d3c67a64.js"),["assets/counter-d3c67a64.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b394014f.js"),["assets/device-b394014f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-154b0b15.js"),["assets/external_inverter-154b0b15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/inverter.vue":()=>e(()=>import("./inverter-9df7c4d9.js"),["assets/inverter-9df7c4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/device.vue":()=>e(()=>import("./device-60a41819.js"),["assets/device-60a41819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/inverter.vue":()=>e(()=>import("./inverter-927da016.js"),["assets/inverter-927da016.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/bat.vue":()=>e(()=>import("./bat-a51c89dc.js"),["assets/bat-a51c89dc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/device.vue":()=>e(()=>import("./device-0852663a.js"),["assets/device-0852663a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-16ad21fd.js"),["assets/counter-16ad21fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-7e7c253d.js"),["assets/device-7e7c253d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-7f5835ff.js"),["assets/bat-7f5835ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-15bbcc8d.js"),["assets/counter-15bbcc8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/device.vue":()=>e(()=>import("./device-b6cf16cc.js"),["assets/device-b6cf16cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-022a27f9.js"),["assets/inverter-022a27f9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-49c86301.js"),["assets/counter-49c86301.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-a100762d.js"),["assets/device-a100762d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-c5fc8299.js"),["assets/inverter-c5fc8299.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/bat.vue":()=>e(()=>import("./bat-fae6736a.js"),["assets/bat-fae6736a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/counter.vue":()=>e(()=>import("./counter-2844dfce.js"),["assets/counter-2844dfce.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-dd9c6eba.js"),["assets/device-dd9c6eba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-ee34cc1c.js"),["assets/external_inverter-ee34cc1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/inverter.vue":()=>e(()=>import("./inverter-e52144a7.js"),["assets/inverter-e52144a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-9ca02844.js"),["assets/counter-9ca02844.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-538ad6e5.js"),["assets/device-538ad6e5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-01948182.js"),["assets/inverter-01948182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-7e961860.js"),["assets/bat-7e961860.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/counter.vue":()=>e(()=>import("./counter-d3b3c371.js"),["assets/counter-d3b3c371.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/device.vue":()=>e(()=>import("./device-d7ef046e.js"),["assets/device-d7ef046e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/inverter.vue":()=>e(()=>import("./inverter-ae598de4.js"),["assets/inverter-ae598de4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-7a8901e4.js"),["assets/bat-7a8901e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-4dcc66e0.js"),["assets/counter-4dcc66e0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-12c43ff6.js"),["assets/device-12c43ff6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-16319c3f.js"),["assets/inverter-16319c3f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-11a9e662.js"),["assets/bat-11a9e662.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-8459b248.js"),["assets/counter_s0-8459b248.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-157d8b84.js"),["assets/counter_sm-157d8b84.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a3a79e85.js"),["assets/device-a3a79e85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/inverter.vue":()=>e(()=>import("./inverter-9046aa5a.js"),["assets/inverter-9046aa5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-603793ab.js"),["assets/inverter_secondary-603793ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-f21d8d0a.js"),["assets/bat-f21d8d0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-a43b7c84.js"),["assets/counter-a43b7c84.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/device.vue":()=>e(()=>import("./device-e78c3c94.js"),["assets/device-e78c3c94.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-6b993a71.js"),["assets/inverter-6b993a71.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-210e6934.js"),["assets/bat-210e6934.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-bf240441.js"),["assets/counter-bf240441.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/device.vue":()=>e(()=>import("./device-4e84dc20.js"),["assets/device-4e84dc20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-b4a67c1c.js"),["assets/inverter-b4a67c1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-a89d2c6d.js"),["assets/bat-a89d2c6d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-7de8fa46.js"),["assets/counter-7de8fa46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f6cff0ea.js"),["assets/device-f6cff0ea.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-0feca953.js"),["assets/inverter-0feca953.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-c0599fe6.js"),["assets/counter-c0599fe6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/device.vue":()=>e(()=>import("./device-df771d66.js"),["assets/device-df771d66.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/bat.vue":()=>e(()=>import("./bat-c2e3bd93.js"),["assets/bat-c2e3bd93.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/counter.vue":()=>e(()=>import("./counter-720f0b7c.js"),["assets/counter-720f0b7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-1194af1e.js"),["assets/device-1194af1e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/inverter.vue":()=>e(()=>import("./inverter-e0439727.js"),["assets/inverter-e0439727.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/bat.vue":()=>e(()=>import("./bat-ba0e681b.js"),["assets/bat-ba0e681b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/counter.vue":()=>e(()=>import("./counter-17ea177d.js"),["assets/counter-17ea177d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-cc90e6fa.js"),["assets/device-cc90e6fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/inverter.vue":()=>e(()=>import("./inverter-3a35e713.js"),["assets/inverter-3a35e713.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-7cf44039.js"),["assets/bat-7cf44039.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-0f65c1e3.js"),["assets/counter-0f65c1e3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-1f5e9c10.js"),["assets/device-1f5e9c10.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-53c9dd57.js"),["assets/inverter-53c9dd57.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-7e9e02b6.js"),["assets/counter-7e9e02b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-fa86e6ca.js"),["assets/device-fa86e6ca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-3b17cd0a.js"),["assets/counter-3b17cd0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-9b78528f.js"),["assets/device-9b78528f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-1f1b0291.js"),["assets/inverter-1f1b0291.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-14134a0e.js"),["assets/device-14134a0e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-d785d016.js"),["assets/inverter-d785d016.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/bat.vue":()=>e(()=>import("./bat-c1bb93e7.js"),["assets/bat-c1bb93e7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-ca9e3fe2.js"),["assets/counter-ca9e3fe2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-560cda8e.js"),["assets/device-560cda8e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-f6495d7c.js"),["assets/inverter-f6495d7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-d7164453.js"),["assets/counter-d7164453.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-6bc2e333.js"),["assets/device-6bc2e333.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-66551827.js"),["assets/device-66551827.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-ed15250f.js"),["assets/inverter-ed15250f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/bat.vue":()=>e(()=>import("./bat-ea7043ef.js"),["assets/bat-ea7043ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/counter.vue":()=>e(()=>import("./counter-5cdd5400.js"),["assets/counter-5cdd5400.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/device.vue":()=>e(()=>import("./device-a5b9720c.js"),["assets/device-a5b9720c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/inverter.vue":()=>e(()=>import("./inverter-7f269997.js"),["assets/inverter-7f269997.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-f0d9c44f.js"),["assets/bat-f0d9c44f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-776a14ff.js"),["assets/counter-776a14ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-53c3c990.js"),["assets/device-53c3c990.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-e8d637fe.js"),["assets/inverter-e8d637fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-2004960c.js"),["assets/device-2004960c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/inverter.vue":()=>e(()=>import("./inverter-317c9702.js"),["assets/inverter-317c9702.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-22e19627.js"),["assets/bat-22e19627.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/device.vue":()=>e(()=>import("./device-f96e49ba.js"),["assets/device-f96e49ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-37aa8980.js"),["assets/bat-37aa8980.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-b01202f0.js"),["assets/counter-b01202f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/device.vue":()=>e(()=>import("./device-1dbf9864.js"),["assets/device-1dbf9864.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-0671dbec.js"),["assets/inverter-0671dbec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-4ce133fc.js"),["assets/bat-4ce133fc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-e19fcdd5.js"),["assets/consumption_counter-e19fcdd5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-132a4c95.js"),["assets/counter-132a4c95.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-2a05ce83.js"),["assets/device-2a05ce83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-148b1cf9.js"),["assets/inverter-148b1cf9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/device.vue":()=>e(()=>import("./device-accf2fa8.js"),["assets/device-accf2fa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-f62aa161.js"),["assets/inverter-f62aa161.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-6703f6f0.js"),["assets/counter-6703f6f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-25323637.js"),["assets/device-25323637.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/inverter.vue":()=>e(()=>import("./inverter-a6b17edd.js"),["assets/inverter-a6b17edd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-419f31a5.js"),["assets/counter-419f31a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f8acb969.js"),["assets/device-f8acb969.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-d62075d8.js"),["assets/inverter-d62075d8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/bat.vue":()=>e(()=>import("./bat-361f190b.js"),["assets/bat-361f190b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/counter.vue":()=>e(()=>import("./counter-2131ddbc.js"),["assets/counter-2131ddbc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-ab2aea83.js"),["assets/device-ab2aea83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/inverter.vue":()=>e(()=>import("./inverter-9c9c65d2.js"),["assets/inverter-9c9c65d2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/bat.vue":()=>e(()=>import("./bat-32c9f6fd.js"),["assets/bat-32c9f6fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/counter.vue":()=>e(()=>import("./counter-899de3b1.js"),["assets/counter-899de3b1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/device.vue":()=>e(()=>import("./device-67447569.js"),["assets/device-67447569.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/inverter.vue":()=>e(()=>import("./inverter-008f792b.js"),["assets/inverter-008f792b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/bat.vue":()=>e(()=>import("./bat-ab2534e0.js"),["assets/bat-ab2534e0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-a326b87b.js"),["assets/device-a326b87b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/bat.vue":()=>e(()=>import("./bat-0535c59d.js"),["assets/bat-0535c59d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-147bcc09.js"),["assets/counter-147bcc09.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-93d7ec8d.js"),["assets/device-93d7ec8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/inverter.vue":()=>e(()=>import("./inverter-e39deae7.js"),["assets/inverter-e39deae7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/bat.vue":()=>e(()=>import("./bat-960570d8.js"),["assets/bat-960570d8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/counter.vue":()=>e(()=>import("./counter-761ec99f.js"),["assets/counter-761ec99f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-34858026.js"),["assets/device-34858026.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/inverter.vue":()=>e(()=>import("./inverter-8bd91bf1.js"),["assets/inverter-8bd91bf1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/counter.vue":()=>e(()=>import("./counter-8102691a.js"),["assets/counter-8102691a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-06345e49.js"),["assets/device-06345e49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-5f5ccb07.js"),["assets/bat-5f5ccb07.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-30a3ca76.js"),["assets/counter-30a3ca76.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-f298ed3b.js"),["assets/device-f298ed3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-bff31af2.js"),["assets/inverter-bff31af2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-8aa3e08a.js"),["assets/counter-8aa3e08a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/device.vue":()=>e(()=>import("./device-96e65ee3.js"),["assets/device-96e65ee3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-53505c28.js"),["assets/inverter-53505c28.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e2b4a6f2.js"),["assets/bat-e2b4a6f2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-8a31af27.js"),["assets/bat_smart_energy-8a31af27.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-4f739eff.js"),["assets/counter-4f739eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-a3aaa72b.js"),["assets/device-a3aaa72b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-69ae908d.js"),["assets/inverter-69ae908d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-2ec8a7b2.js"),["assets/bat-2ec8a7b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-7328c01a.js"),["assets/device-7328c01a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-9ff76175.js"),["assets/device-9ff76175.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/inverter.vue":()=>e(()=>import("./inverter-81caf0c3.js"),["assets/inverter-81caf0c3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-0bf7d9a6.js"),["assets/counter-0bf7d9a6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-a875f223.js"),["assets/device-a875f223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-80468543.js"),["assets/inverter-80468543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/counter.vue":()=>e(()=>import("./counter-963b86e8.js"),["assets/counter-963b86e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-c2c254cf.js"),["assets/device-c2c254cf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/bat.vue":()=>e(()=>import("./bat-5a80b300.js"),["assets/bat-5a80b300.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/counter.vue":()=>e(()=>import("./counter-ae228566.js"),["assets/counter-ae228566.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f252d8d.js"),["assets/device-4f252d8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/inverter.vue":()=>e(()=>import("./inverter-b9d7f198.js"),["assets/inverter-b9d7f198.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-32ed9eb1.js"),["assets/counter-32ed9eb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-59ac52ab.js"),["assets/device-59ac52ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/inverter.vue":()=>e(()=>import("./inverter-0773e282.js"),["assets/inverter-0773e282.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/counter.vue":()=>e(()=>import("./counter-9db4f10d.js"),["assets/counter-9db4f10d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c94e89d5.js"),["assets/device-c94e89d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-a1fe6824.js"),["assets/inverter-a1fe6824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/bat.vue":()=>e(()=>import("./bat-5bb162c2.js"),["assets/bat-5bb162c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/counter.vue":()=>e(()=>import("./counter-39a750b6.js"),["assets/counter-39a750b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-bee08fb1.js"),["assets/device-bee08fb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/inverter.vue":()=>e(()=>import("./inverter-79c8fb55.js"),["assets/inverter-79c8fb55.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/counter.vue":()=>e(()=>import("./counter-031b0305.js"),["assets/counter-031b0305.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-56cb9ab9.js"),["assets/device-56cb9ab9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/inverter.vue":()=>e(()=>import("./inverter-564ac740.js"),["assets/inverter-564ac740.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-ca879aa3.js"),["assets/bat-ca879aa3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-6a7f6553.js"),["assets/counter-6a7f6553.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-9f0dbb75.js"),["assets/device-9f0dbb75.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-355c5719.js"),["assets/external_inverter-355c5719.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-929c3f78.js"),["assets/inverter-929c3f78.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-93b96b73.js"),["assets/bat-93b96b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-02184b73.js"),["assets/device-02184b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-160edb4d.js"),["assets/inverter-160edb4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/bat.vue":()=>e(()=>import("./bat-70713ff4.js"),["assets/bat-70713ff4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/counter.vue":()=>e(()=>import("./counter-92dbeb44.js"),["assets/counter-92dbeb44.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/device.vue":()=>e(()=>import("./device-bcd1ab1c.js"),["assets/device-bcd1ab1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/inverter.vue":()=>e(()=>import("./inverter-cf027bb4.js"),["assets/inverter-cf027bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-86050b21.js"),["assets/bat-86050b21.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-4cf113fa.js"),["assets/counter-4cf113fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/device.vue":()=>e(()=>import("./device-191a8f0d.js"),["assets/device-191a8f0d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-e2fcc96e.js"),["assets/inverter-e2fcc96e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/bat.vue":()=>e(()=>import("./bat-669886fa.js"),["assets/bat-669886fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-49277c48.js"),["assets/counter-49277c48.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-3d9e43fe.js"),["assets/device-3d9e43fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-fcb34a03.js"),["assets/inverter-fcb34a03.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-c023ee7d.js"),["assets/bat-c023ee7d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/device.vue":()=>e(()=>import("./device-e4af98fb.js"),["assets/device-e4af98fb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-390b002d.js"),["assets/inverter-390b002d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/bat.vue":()=>e(()=>import("./bat-46611da3.js"),["assets/bat-46611da3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-fa66cb6a.js"),["assets/counter-fa66cb6a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-29ba5b2b.js"),["assets/device-29ba5b2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/inverter.vue":()=>e(()=>import("./inverter-3a81dff8.js"),["assets/inverter-3a81dff8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-71b3befd.js"),["assets/device-71b3befd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/inverter.vue":()=>e(()=>import("./inverter-85d76c41.js"),["assets/inverter-85d76c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/counter.vue":()=>e(()=>import("./counter-d86757f2.js"),["assets/counter-d86757f2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-b0485aae.js"),["assets/device-b0485aae.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/bat.vue":()=>e(()=>import("./bat-84a37ddf.js"),["assets/bat-84a37ddf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-9c0b6f8f.js"),["assets/counter-9c0b6f8f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5926f93d.js"),["assets/device-5926f93d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/inverter.vue":()=>e(()=>import("./inverter-3a00ed3d.js"),["assets/inverter-3a00ed3d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/bat_api.vue":()=>e(()=>import("./bat_api-04666400.js"),["assets/bat_api-04666400.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-ffbf71f1.js"),["assets/bat_modbus-ffbf71f1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/counter.vue":()=>e(()=>import("./counter-214fbb40.js"),["assets/counter-214fbb40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/device.vue":()=>e(()=>import("./device-74cc8223.js"),["assets/device-74cc8223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/inverter.vue":()=>e(()=>import("./inverter-f329a5ad.js"),["assets/inverter-f329a5ad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-a2809c14.js"),["assets/bat-a2809c14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-dc109611.js"),["assets/counter-dc109611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/device.vue":()=>e(()=>import("./device-35945559.js"),["assets/device-35945559.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-671f6a73.js"),["assets/inverter-671f6a73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-90d6c411.js"),["assets/counter-90d6c411.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-85271457.js"),["assets/device-85271457.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-804d1c85.js"),["assets/inverter-804d1c85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/device.vue":()=>e(()=>import("./device-7d20d912.js"),["assets/device-7d20d912.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-bea955ac.js"),["assets/inverter-bea955ac.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceVendor}/${this.deviceType}/${this.componentType}.vue`),errorComponent:q}):S({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-66b6ca53.js"),["assets/device-66b6ca53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ff88dc47.js"),["assets/device-ff88dc47.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b394014f.js"),["assets/device-b394014f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/device.vue":()=>e(()=>import("./device-60a41819.js"),["assets/device-60a41819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/device.vue":()=>e(()=>import("./device-0852663a.js"),["assets/device-0852663a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-7e7c253d.js"),["assets/device-7e7c253d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/device.vue":()=>e(()=>import("./device-b6cf16cc.js"),["assets/device-b6cf16cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-a100762d.js"),["assets/device-a100762d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-dd9c6eba.js"),["assets/device-dd9c6eba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-538ad6e5.js"),["assets/device-538ad6e5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/device.vue":()=>e(()=>import("./device-d7ef046e.js"),["assets/device-d7ef046e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-12c43ff6.js"),["assets/device-12c43ff6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a3a79e85.js"),["assets/device-a3a79e85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/device.vue":()=>e(()=>import("./device-e78c3c94.js"),["assets/device-e78c3c94.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/device.vue":()=>e(()=>import("./device-4e84dc20.js"),["assets/device-4e84dc20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f6cff0ea.js"),["assets/device-f6cff0ea.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/device.vue":()=>e(()=>import("./device-df771d66.js"),["assets/device-df771d66.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-1194af1e.js"),["assets/device-1194af1e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-cc90e6fa.js"),["assets/device-cc90e6fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-1f5e9c10.js"),["assets/device-1f5e9c10.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-fa86e6ca.js"),["assets/device-fa86e6ca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-9b78528f.js"),["assets/device-9b78528f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-14134a0e.js"),["assets/device-14134a0e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-560cda8e.js"),["assets/device-560cda8e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-6bc2e333.js"),["assets/device-6bc2e333.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-66551827.js"),["assets/device-66551827.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/device.vue":()=>e(()=>import("./device-a5b9720c.js"),["assets/device-a5b9720c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-53c3c990.js"),["assets/device-53c3c990.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-2004960c.js"),["assets/device-2004960c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/device.vue":()=>e(()=>import("./device-f96e49ba.js"),["assets/device-f96e49ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/device.vue":()=>e(()=>import("./device-1dbf9864.js"),["assets/device-1dbf9864.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-2a05ce83.js"),["assets/device-2a05ce83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/device.vue":()=>e(()=>import("./device-accf2fa8.js"),["assets/device-accf2fa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-25323637.js"),["assets/device-25323637.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f8acb969.js"),["assets/device-f8acb969.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-ab2aea83.js"),["assets/device-ab2aea83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/device.vue":()=>e(()=>import("./device-67447569.js"),["assets/device-67447569.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-a326b87b.js"),["assets/device-a326b87b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-93d7ec8d.js"),["assets/device-93d7ec8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-34858026.js"),["assets/device-34858026.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-06345e49.js"),["assets/device-06345e49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-f298ed3b.js"),["assets/device-f298ed3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/device.vue":()=>e(()=>import("./device-96e65ee3.js"),["assets/device-96e65ee3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-a3aaa72b.js"),["assets/device-a3aaa72b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-7328c01a.js"),["assets/device-7328c01a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-9ff76175.js"),["assets/device-9ff76175.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-a875f223.js"),["assets/device-a875f223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-c2c254cf.js"),["assets/device-c2c254cf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f252d8d.js"),["assets/device-4f252d8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-59ac52ab.js"),["assets/device-59ac52ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c94e89d5.js"),["assets/device-c94e89d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-bee08fb1.js"),["assets/device-bee08fb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-56cb9ab9.js"),["assets/device-56cb9ab9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-9f0dbb75.js"),["assets/device-9f0dbb75.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-02184b73.js"),["assets/device-02184b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/device.vue":()=>e(()=>import("./device-bcd1ab1c.js"),["assets/device-bcd1ab1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/device.vue":()=>e(()=>import("./device-191a8f0d.js"),["assets/device-191a8f0d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-3d9e43fe.js"),["assets/device-3d9e43fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/device.vue":()=>e(()=>import("./device-e4af98fb.js"),["assets/device-e4af98fb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-29ba5b2b.js"),["assets/device-29ba5b2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-71b3befd.js"),["assets/device-71b3befd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-b0485aae.js"),["assets/device-b0485aae.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5926f93d.js"),["assets/device-5926f93d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/device.vue":()=>e(()=>import("./device-74cc8223.js"),["assets/device-74cc8223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/device.vue":()=>e(()=>import("./device-35945559.js"),["assets/device-35945559.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-85271457.js"),["assets/device-85271457.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/device.vue":()=>e(()=>import("./device-7d20d912.js"),["assets/device-7d20d912.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceVendor}/${this.deviceType}/device.vue`),errorComponent:q})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function ae(_,t,r,m,a,n){return d(),E($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":t[0]||(t[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=x(se,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(G,K,H,F,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([_,t])=>({label:t.group_name,options:Object.entries(t.vendors).map(([r,m])=>({value:[_,r],text:m.vendor_name})).sort((r,m)=>r.text.localeCompare(m.text))})).sort((_,t)=>-_.label.localeCompare(t.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[_,t]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][_].vendors[t].devices).map(([r,m])=>({value:[t,r],text:m.device_name})).sort((r,m)=>r.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(_,t,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=t,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(_,t,r,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:r,deviceVendor:t,type:m}})},removeComponentModal(_,t,r,m,a){a.stopPropagation(),this.modalComponent={deviceId:_,id:t,type:r},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_,t){if(_===void 0||t===void 0)return[];console.debug("finding components for",_,t);let r=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[_]!==void 0?(m.vendors[_].devices[t]!==void 0&&(r=Object.entries(m.vendors[_].devices[t].components).map(([n,T])=>({value:n,text:T.component_name}))),!1):!0),r},updateConfiguration(_,t){console.debug("updateConfiguration",_,t),this.updateState(_,t.value,t.object)}}},O=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),ce={class:"hardwareInstallation"},le={name:"hardwareInstallationForm"},Ee={key:0},Te={key:1},Ve={key:1},ge=O(()=>l("hr",null,null,-1)),Ie=O(()=>l("hr",null,null,-1)),Ae=O(()=>l("hr",null,null,-1)),Oe=O(()=>l("hr",null,null,-1)),Re={class:"col-1"},Pe={key:0},Le={class:"col-1"},De=O(()=>l("p",null,[s(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),s(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=O(()=>l("p",null,[s(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),s(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=O(()=>l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function we(_,t,r,m,a,n){const T=p("openwb-base-modal-dialog"),f=p("router-link"),R=p("openwb-base-alert"),A=p("font-awesome-icon"),b=p("openwb-base-avatar"),P=p("openwb-base-text-input"),z=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),C=p("openwb-base-click-button"),h=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return d(),c(D,null,[u(T,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:i(()=>[s(' Wollen Sie das Gerät "'+I(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),u(T,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:i(()=>[s(' Wollen Sie die Komponente "'+I(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",ce,[l("form",le,[r.installAssistantActive?L("",!0):(d(),E(R,{key:0,subtype:"info"},{default:i(()=>[s(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),u(f,{to:"/LoadManagementConfiguration"},{default:i(()=>[s(" Lastmanagement ")]),_:1}),s(" zu prüfen! ")]),_:1})),u(w,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(d(),c("div",Ee,[u(R,{subtype:"info"},{default:i(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),c("div",Te,[(d(!0),c(D,null,y(n.installedDevices,(o,B)=>(d(),E(w,{key:o.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[u(A,{"fixed-width":"",icon:["fas","network-wired"]}),s(" "+I(o.name),1)]),actions:i(v=>[v.collapsed?(d(),c("div",Ve,[(d(!0),c(D,null,y(n.getMyInstalledComponents(o.id),V=>(d(),E(b,{key:V.id,class:k("ml-1 bg-"+n.getComponentTypeClass(V.type))},{default:i(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(V.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(d(),E(b,{key:0,class:"bg-danger clickable",onClick:V=>n.removeDeviceModal(o.id,o.name,V)},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[u(P,{title:"Bezeichnung",subtype:"text","model-value":o.name,"onUpdate:modelValue":v=>_.updateState(B,v,"name")},null,8,["model-value","onUpdate:modelValue"]),ge,u(z,{deviceId:o.id,deviceType:o.type,deviceVendor:o.vendor,configuration:o.configuration,"onUpdate:configuration":v=>n.updateConfiguration(B,v)},null,8,["deviceId","deviceType","deviceVendor","configuration","onUpdate:configuration"]),Ie,u(W,null,{default:i(()=>[s("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(o.id)?L("",!0):(d(),E(R,{key:0,subtype:"warning"},{default:i(()=>[s(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(d(!0),c(D,null,y(n.getMyInstalledComponents(o.id),(v,V)=>(d(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(v.type)},{header:i(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(v.type)},null,8,["icon"]),s(" "+I(v.name),1)]),actions:i(g=>[g.collapsed?L("",!0):(d(),E(b,{key:0,class:"bg-danger clickable",onClick:U=>n.removeComponentModal(o.id,v.id,v.type,v.name,U)},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[u(P,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":g=>_.updateState(V,g,"name")},null,8,["model-value","onUpdate:modelValue"]),u(P,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":g=>_.updateState(V,g,"info.manufacturer")},{help:i(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),u(P,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":g=>_.updateState(V,g,"info.model")},{help:i(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ae,u(z,{deviceId:o.id,deviceType:o.type,deviceVendor:o.vendor,componentId:v.id,componentType:v.type,configuration:v.configuration,"onUpdate:configuration":g=>n.updateConfiguration(V,g)},null,8,["deviceId","deviceType","deviceVendor","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Oe,n.getComponentList(o.vendor,o.type).length?(d(),E(h,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(o.vendor,o.type),"model-value":a.componentToAdd[o.id],"onUpdate:modelValue":v=>a.componentToAdd[o.id]=v},{append:i(()=>[l("span",Re,[u(C,{class:k(a.componentToAdd[o.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[o.id]===void 0,onButtonClicked:v=>n.addComponent(o.id,o.vendor,o.type,a.componentToAdd[o.id])},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[s(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(d(),E(R,{key:2,subtype:"info"},{default:i(()=>[s(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(d(),c("hr",Pe)):L("",!0),u(h,{title:"Hersteller",notSelected:"Bitte auswählen",groups:n.vendorList,modelValue:a.selectedVendor,"onUpdate:modelValue":t[0]||(t[0]=o=>a.selectedVendor=o)},null,8,["groups","modelValue"]),u(h,{title:"Verfügbare Geräte",notSelected:"Bitte auswählen",disabled:a.selectedVendor===void 0,options:n.deviceList,modelValue:a.deviceToAdd,"onUpdate:modelValue":t[1]||(t[1]=o=>a.deviceToAdd=o)},{append:i(()=>[l("span",Le,[u(C,{class:k(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[De,fe,be]),_:1},8,["disabled","options","modelValue"])]))]),_:1}),u(j,{formName:"hardwareInstallationForm",onSave:t[2]||(t[2]=o=>_.$emit("save")),onReset:t[3]||(t[3]=o=>_.$emit("reset")),onDefaults:t[4]||(t[4]=o=>_.$emit("defaults"))})])])],64)}const Se=x(pe,[["render",we],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{Se as default};
diff --git a/web/settings/assets/HardwareInstallation-a105c95d.js b/web/settings/assets/HardwareInstallation-a105c95d.js
deleted file mode 100644
index aaae5da6a0..0000000000
--- a/web/settings/assets/HardwareInstallation-a105c95d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as K,d as N,t as G,a7 as H,a0 as F,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-3e910ceb.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as k,u as m,k as v,l as p,A as c,N as t,z as I,y as a,D as r,x as E,a2 as S,a3 as $,B as L,J as g,K as y,q as w,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,i=void 0){this.$emit("update:configuration",{value:_,object:i})}}},oe={class:"device-fallback"},ie={key:0},re={key:1},ne={key:1},ue={key:0},ve={key:1};function de(_,i,n,R,s,u){const V=m("openwb-base-alert"),f=m("openwb-base-textarea");return v(),p("div",oe,[Object.keys(n.configuration).length==0?(v(),c(V,{key:0,subtype:"info"},{default:t(()=>[n.componentType?(v(),p("span",ie,' Der Komponenten-Typ "'+I(n.componentType)+'" ',1)):(v(),p("span",re,'Der Gerät-Typ "'+I(n.deviceType)+'"',1)),a(" bietet keine Einstellungen. ")]),_:1})):(v(),p("div",ne,[r(V,{subtype:"warning"},{default:t(()=>[a(" Es wurde keine Konfigurationsseite für den "),n.componentType?(v(),p("span",ue,' Komponenten-Typ "'+I(n.componentType)+'" ',1)):(v(),p("span",ve,'Geräte-Typ "'+I(n.deviceType)+'"',1)),a(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),r(f,{title:"Konfiguration",subtype:"json","model-value":n.configuration,"onUpdate:modelValue":i[0]||(i[0]=O=>u.updateConfiguration(O,"configuration"))},{help:t(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),r(V,{subtype:"info"},{default:t(()=>[E("pre",null,I(JSON.stringify(n.configuration,void 0,2)),1)]),_:1})]))])}const W=k(te,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ae={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?S({loader:()=>M(Object.assign({"./alpha_ess/bat.vue":()=>e(()=>import("./bat-a3dcba33.js"),["assets/bat-a3dcba33.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/counter.vue":()=>e(()=>import("./counter-7dd04de5.js"),["assets/counter-7dd04de5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/inverter.vue":()=>e(()=>import("./inverter-45617c87.js"),["assets/inverter-45617c87.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/bat.vue":()=>e(()=>import("./bat-03b2886a.js"),["assets/bat-03b2886a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/counter.vue":()=>e(()=>import("./counter-1aa978fe.js"),["assets/counter-1aa978fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/inverter.vue":()=>e(()=>import("./inverter-a3685d5a.js"),["assets/inverter-a3685d5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/bat.vue":()=>e(()=>import("./bat-03f52267.js"),["assets/bat-03f52267.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/counter.vue":()=>e(()=>import("./counter-18904432.js"),["assets/counter-18904432.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-6429eef9.js"),["assets/inverter-6429eef9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/bat.vue":()=>e(()=>import("./bat-31e29792.js"),["assets/bat-31e29792.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/counter.vue":()=>e(()=>import("./counter-10685234.js"),["assets/counter-10685234.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-c36c81de.js"),["assets/external_inverter-c36c81de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/inverter.vue":()=>e(()=>import("./inverter-aba0125a.js"),["assets/inverter-aba0125a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/inverter.vue":()=>e(()=>import("./inverter-a269797d.js"),["assets/inverter-a269797d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/bat.vue":()=>e(()=>import("./bat-ced626fd.js"),["assets/bat-ced626fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-ccf41c41.js"),["assets/counter-ccf41c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/bat.vue":()=>e(()=>import("./bat-12d70573.js"),["assets/bat-12d70573.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/counter.vue":()=>e(()=>import("./counter-f98b9cbf.js"),["assets/counter-f98b9cbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/inverter.vue":()=>e(()=>import("./inverter-0e6faf4b.js"),["assets/inverter-0e6faf4b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/counter.vue":()=>e(()=>import("./counter-3e87edf3.js"),["assets/counter-3e87edf3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/inverter.vue":()=>e(()=>import("./inverter-a5b2e2f6.js"),["assets/inverter-a5b2e2f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/bat.vue":()=>e(()=>import("./bat-15d35f20.js"),["assets/bat-15d35f20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/counter.vue":()=>e(()=>import("./counter-94b37ec5.js"),["assets/counter-94b37ec5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-034918bb.js"),["assets/external_inverter-034918bb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/inverter.vue":()=>e(()=>import("./inverter-09efda14.js"),["assets/inverter-09efda14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/counter.vue":()=>e(()=>import("./counter-54421a1c.js"),["assets/counter-54421a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/inverter.vue":()=>e(()=>import("./inverter-d25e077f.js"),["assets/inverter-d25e077f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/bat.vue":()=>e(()=>import("./bat-d619a60e.js"),["assets/bat-d619a60e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/counter.vue":()=>e(()=>import("./counter-1cc10b54.js"),["assets/counter-1cc10b54.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/inverter.vue":()=>e(()=>import("./inverter-cb19d4d9.js"),["assets/inverter-cb19d4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/bat.vue":()=>e(()=>import("./bat-cd57b824.js"),["assets/bat-cd57b824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/counter.vue":()=>e(()=>import("./counter-36a6d397.js"),["assets/counter-36a6d397.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/inverter.vue":()=>e(()=>import("./inverter-1111bf45.js"),["assets/inverter-1111bf45.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/bat.vue":()=>e(()=>import("./bat-6cf0ead4.js"),["assets/bat-6cf0ead4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-860ec468.js"),["assets/counter_s0-860ec468.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-a94a3e01.js"),["assets/counter_sm-a94a3e01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter.vue":()=>e(()=>import("./inverter-f09f6954.js"),["assets/inverter-f09f6954.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-ec1119a3.js"),["assets/inverter_secondary-ec1119a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/bat.vue":()=>e(()=>import("./bat-a0fe622c.js"),["assets/bat-a0fe622c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/counter.vue":()=>e(()=>import("./counter-bdaa3d40.js"),["assets/counter-bdaa3d40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/inverter.vue":()=>e(()=>import("./inverter-2e1e52a7.js"),["assets/inverter-2e1e52a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/bat.vue":()=>e(()=>import("./bat-1eb4a7db.js"),["assets/bat-1eb4a7db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/counter.vue":()=>e(()=>import("./counter-70b2a64c.js"),["assets/counter-70b2a64c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/inverter.vue":()=>e(()=>import("./inverter-c4e9e5f0.js"),["assets/inverter-c4e9e5f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/bat.vue":()=>e(()=>import("./bat-5425fafc.js"),["assets/bat-5425fafc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/counter.vue":()=>e(()=>import("./counter-e1b176cd.js"),["assets/counter-e1b176cd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/inverter.vue":()=>e(()=>import("./inverter-0950a8cb.js"),["assets/inverter-0950a8cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-a6d57bec.js"),["assets/bat-a6d57bec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-e32214a7.js"),["assets/counter-e32214a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-39667dd3.js"),["assets/inverter-39667dd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/counter.vue":()=>e(()=>import("./counter-bb73dd30.js"),["assets/counter-bb73dd30.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/bat.vue":()=>e(()=>import("./bat-8c16e92a.js"),["assets/bat-8c16e92a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/counter.vue":()=>e(()=>import("./counter-7ec871ef.js"),["assets/counter-7ec871ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/inverter.vue":()=>e(()=>import("./inverter-5213cff7.js"),["assets/inverter-5213cff7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/counter.vue":()=>e(()=>import("./counter-43080cd3.js"),["assets/counter-43080cd3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/inverter.vue":()=>e(()=>import("./inverter-ff52ec92.js"),["assets/inverter-ff52ec92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-4a61fc24.js"),["assets/inverter-4a61fc24.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/bat.vue":()=>e(()=>import("./bat-5521391f.js"),["assets/bat-5521391f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/counter.vue":()=>e(()=>import("./counter-96cdc611.js"),["assets/counter-96cdc611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-d280d9cc.js"),["assets/inverter-d280d9cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/counter.vue":()=>e(()=>import("./counter-9f443962.js"),["assets/counter-9f443962.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/inverter.vue":()=>e(()=>import("./inverter-0ffd0b65.js"),["assets/inverter-0ffd0b65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/bat.vue":()=>e(()=>import("./bat-69046b0c.js"),["assets/bat-69046b0c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/counter.vue":()=>e(()=>import("./counter-e2353bc1.js"),["assets/counter-e2353bc1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/inverter.vue":()=>e(()=>import("./inverter-508ccdbf.js"),["assets/inverter-508ccdbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/bat.vue":()=>e(()=>import("./bat-2eaaeb62.js"),["assets/bat-2eaaeb62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/counter.vue":()=>e(()=>import("./counter-7baa2b31.js"),["assets/counter-7baa2b31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/inverter.vue":()=>e(()=>import("./inverter-78807591.js"),["assets/inverter-78807591.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/bat.vue":()=>e(()=>import("./bat-12bba3ed.js"),["assets/bat-12bba3ed.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/counter.vue":()=>e(()=>import("./counter-0e19dbc5.js"),["assets/counter-0e19dbc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/inverter.vue":()=>e(()=>import("./inverter-d568cbbe.js"),["assets/inverter-d568cbbe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/inverter.vue":()=>e(()=>import("./inverter-f58294c9.js"),["assets/inverter-f58294c9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-992c1fad.js"),["assets/bat-992c1fad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e274125f.js"),["assets/bat-e274125f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-971740d4.js"),["assets/counter-971740d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-62ab631a.js"),["assets/inverter-62ab631a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/bat.vue":()=>e(()=>import("./bat-07a8e221.js"),["assets/bat-07a8e221.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-7ddecd31.js"),["assets/consumption_counter-7ddecd31.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/counter.vue":()=>e(()=>import("./counter-b55f01eb.js"),["assets/counter-b55f01eb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/inverter.vue":()=>e(()=>import("./inverter-2eb2f36e.js"),["assets/inverter-2eb2f36e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-b1fa1dd4.js"),["assets/inverter-b1fa1dd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/counter.vue":()=>e(()=>import("./counter-7f7c6971.js"),["assets/counter-7f7c6971.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/inverter.vue":()=>e(()=>import("./inverter-2d49a3aa.js"),["assets/inverter-2d49a3aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/counter.vue":()=>e(()=>import("./counter-a3858d9d.js"),["assets/counter-a3858d9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/inverter.vue":()=>e(()=>import("./inverter-0c59320c.js"),["assets/inverter-0c59320c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/bat.vue":()=>e(()=>import("./bat-dde41be1.js"),["assets/bat-dde41be1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/counter.vue":()=>e(()=>import("./counter-be7695ff.js"),["assets/counter-be7695ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/inverter.vue":()=>e(()=>import("./inverter-001a7dc5.js"),["assets/inverter-001a7dc5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/bat.vue":()=>e(()=>import("./bat-e3476b6f.js"),["assets/bat-e3476b6f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/counter.vue":()=>e(()=>import("./counter-c9328771.js"),["assets/counter-c9328771.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/inverter.vue":()=>e(()=>import("./inverter-9fcabcbf.js"),["assets/inverter-9fcabcbf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/bat.vue":()=>e(()=>import("./bat-fa2d3a69.js"),["assets/bat-fa2d3a69.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/bat.vue":()=>e(()=>import("./bat-743c3fdf.js"),["assets/bat-743c3fdf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/counter.vue":()=>e(()=>import("./counter-e306bbd8.js"),["assets/counter-e306bbd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/inverter.vue":()=>e(()=>import("./inverter-0528aae6.js"),["assets/inverter-0528aae6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/bat.vue":()=>e(()=>import("./bat-a18245a1.js"),["assets/bat-a18245a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/counter.vue":()=>e(()=>import("./counter-a7ce2e13.js"),["assets/counter-a7ce2e13.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/inverter.vue":()=>e(()=>import("./inverter-e62bcc2d.js"),["assets/inverter-e62bcc2d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/counter.vue":()=>e(()=>import("./counter-3a0288d3.js"),["assets/counter-3a0288d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/bat.vue":()=>e(()=>import("./bat-7696fb32.js"),["assets/bat-7696fb32.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/counter.vue":()=>e(()=>import("./counter-c9a9f709.js"),["assets/counter-c9a9f709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/inverter.vue":()=>e(()=>import("./inverter-597e2682.js"),["assets/inverter-597e2682.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/counter.vue":()=>e(()=>import("./counter-425920df.js"),["assets/counter-425920df.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/inverter.vue":()=>e(()=>import("./inverter-90d810a4.js"),["assets/inverter-90d810a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cccaeec9.js"),["assets/bat-cccaeec9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-c274185e.js"),["assets/bat_smart_energy-c274185e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f95e981c.js"),["assets/counter-f95e981c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-620c2cc3.js"),["assets/inverter-620c2cc3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/bat.vue":()=>e(()=>import("./bat-af818069.js"),["assets/bat-af818069.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/inverter.vue":()=>e(()=>import("./inverter-f46c6992.js"),["assets/inverter-f46c6992.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/counter.vue":()=>e(()=>import("./counter-3430ef92.js"),["assets/counter-3430ef92.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/inverter.vue":()=>e(()=>import("./inverter-c4ca2aa1.js"),["assets/inverter-c4ca2aa1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/counter.vue":()=>e(()=>import("./counter-1e285dde.js"),["assets/counter-1e285dde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/counter.vue":()=>e(()=>import("./counter-95d74ce1.js"),["assets/counter-95d74ce1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/inverter.vue":()=>e(()=>import("./inverter-7b31a11f.js"),["assets/inverter-7b31a11f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/counter.vue":()=>e(()=>import("./counter-67f38979.js"),["assets/counter-67f38979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/inverter.vue":()=>e(()=>import("./inverter-b3883b88.js"),["assets/inverter-b3883b88.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/bat.vue":()=>e(()=>import("./bat-0070e79c.js"),["assets/bat-0070e79c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/counter.vue":()=>e(()=>import("./counter-246eef5f.js"),["assets/counter-246eef5f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/inverter.vue":()=>e(()=>import("./inverter-ea12e7e4.js"),["assets/inverter-ea12e7e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/counter.vue":()=>e(()=>import("./counter-50558177.js"),["assets/counter-50558177.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/inverter.vue":()=>e(()=>import("./inverter-b10ff0aa.js"),["assets/inverter-b10ff0aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/bat.vue":()=>e(()=>import("./bat-502cd078.js"),["assets/bat-502cd078.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/counter.vue":()=>e(()=>import("./counter-b83de018.js"),["assets/counter-b83de018.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-4a132ee4.js"),["assets/external_inverter-4a132ee4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/inverter.vue":()=>e(()=>import("./inverter-39d17978.js"),["assets/inverter-39d17978.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/bat.vue":()=>e(()=>import("./bat-abfe5184.js"),["assets/bat-abfe5184.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/inverter.vue":()=>e(()=>import("./inverter-858c070d.js"),["assets/inverter-858c070d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/bat.vue":()=>e(()=>import("./bat-f0682b3b.js"),["assets/bat-f0682b3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/counter.vue":()=>e(()=>import("./counter-5fea2f2b.js"),["assets/counter-5fea2f2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/inverter.vue":()=>e(()=>import("./inverter-5ab60482.js"),["assets/inverter-5ab60482.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/bat.vue":()=>e(()=>import("./bat-4202cb7c.js"),["assets/bat-4202cb7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/counter.vue":()=>e(()=>import("./counter-15d8fd18.js"),["assets/counter-15d8fd18.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/inverter.vue":()=>e(()=>import("./inverter-5e52c5a2.js"),["assets/inverter-5e52c5a2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/bat.vue":()=>e(()=>import("./bat-00ebc725.js"),["assets/bat-00ebc725.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/counter.vue":()=>e(()=>import("./counter-e63ef9d1.js"),["assets/counter-e63ef9d1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-3b913d29.js"),["assets/inverter-3b913d29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/bat.vue":()=>e(()=>import("./bat-6181c19b.js"),["assets/bat-6181c19b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/inverter.vue":()=>e(()=>import("./inverter-aa1e9ea5.js"),["assets/inverter-aa1e9ea5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/bat.vue":()=>e(()=>import("./bat-10c5131f.js"),["assets/bat-10c5131f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/counter.vue":()=>e(()=>import("./counter-25d13278.js"),["assets/counter-25d13278.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/inverter.vue":()=>e(()=>import("./inverter-281b7a65.js"),["assets/inverter-281b7a65.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/inverter.vue":()=>e(()=>import("./inverter-c2367805.js"),["assets/inverter-c2367805.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/counter.vue":()=>e(()=>import("./counter-cd4f14cb.js"),["assets/counter-cd4f14cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/bat.vue":()=>e(()=>import("./bat-fbd92ad1.js"),["assets/bat-fbd92ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/counter.vue":()=>e(()=>import("./counter-160f6b42.js"),["assets/counter-160f6b42.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/inverter.vue":()=>e(()=>import("./inverter-ce73b653.js"),["assets/inverter-ce73b653.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_api.vue":()=>e(()=>import("./bat_api-c6cfe543.js"),["assets/bat_api-c6cfe543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-06ac44e9.js"),["assets/bat_modbus-06ac44e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/counter.vue":()=>e(()=>import("./counter-e6c4238b.js"),["assets/counter-e6c4238b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/inverter.vue":()=>e(()=>import("./inverter-8faef1dd.js"),["assets/inverter-8faef1dd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/bat.vue":()=>e(()=>import("./bat-fa44fb17.js"),["assets/bat-fa44fb17.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/counter.vue":()=>e(()=>import("./counter-94b6802e.js"),["assets/counter-94b6802e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/inverter.vue":()=>e(()=>import("./inverter-395b265b.js"),["assets/inverter-395b265b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/counter.vue":()=>e(()=>import("./counter-a647164b.js"),["assets/counter-a647164b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/counter.vue":()=>e(()=>import("./counter-c92f088c.js"),["assets/counter-c92f088c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/inverter.vue":()=>e(()=>import("./inverter-c6690fa5.js"),["assets/inverter-c6690fa5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/inverter.vue":()=>e(()=>import("./inverter-9dc89f1d.js"),["assets/inverter-9dc89f1d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/${this.componentType}.vue`),errorComponent:W}):S({loader:()=>M(Object.assign({"./alpha_ess/device.vue":()=>e(()=>import("./device-79947814.js"),["assets/device-79947814.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_sofar/device.vue":()=>e(()=>import("./device-1ea206ee.js"),["assets/device-1ea206ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/device.vue":()=>e(()=>import("./device-8ebdd328.js"),["assets/device-8ebdd328.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/device.vue":()=>e(()=>import("./device-c3a7fe4c.js"),["assets/device-c3a7fe4c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/device.vue":()=>e(()=>import("./device-e70fb123.js"),["assets/device-e70fb123.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/device.vue":()=>e(()=>import("./device-7bcef0cb.js"),["assets/device-7bcef0cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/device.vue":()=>e(()=>import("./device-6513a22e.js"),["assets/device-6513a22e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/device.vue":()=>e(()=>import("./device-7c73cd7c.js"),["assets/device-7c73cd7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/device.vue":()=>e(()=>import("./device-e10d0dda.js"),["assets/device-e10d0dda.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/device.vue":()=>e(()=>import("./device-78545a1c.js"),["assets/device-78545a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/device.vue":()=>e(()=>import("./device-c95ddafe.js"),["assets/device-c95ddafe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/device.vue":()=>e(()=>import("./device-8bcc2213.js"),["assets/device-8bcc2213.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/device.vue":()=>e(()=>import("./device-c5df5aff.js"),["assets/device-c5df5aff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/device.vue":()=>e(()=>import("./device-6e379819.js"),["assets/device-6e379819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/device.vue":()=>e(()=>import("./device-26a38357.js"),["assets/device-26a38357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/device.vue":()=>e(()=>import("./device-983fa414.js"),["assets/device-983fa414.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/device.vue":()=>e(()=>import("./device-85bbc3b6.js"),["assets/device-85bbc3b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei_smartlogger/device.vue":()=>e(()=>import("./device-5ee1f362.js"),["assets/device-5ee1f362.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/device.vue":()=>e(()=>import("./device-968f2783.js"),["assets/device-968f2783.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./json/device.vue":()=>e(()=>import("./device-c1bc98d9.js"),["assets/device-c1bc98d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko/device.vue":()=>e(()=>import("./device-e62fefa8.js"),["assets/device-e62fefa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_piko_old/device.vue":()=>e(()=>import("./device-7d0443e1.js"),["assets/device-7d0443e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_plenticore/device.vue":()=>e(()=>import("./device-32f3515c.js"),["assets/device-32f3515c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_sem/device.vue":()=>e(()=>import("./device-b21e02e9.js"),["assets/device-b21e02e9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal_steca/device.vue":()=>e(()=>import("./device-f408fff0.js"),["assets/device-f408fff0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/device.vue":()=>e(()=>import("./device-e6134b3a.js"),["assets/device-e6134b3a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/device.vue":()=>e(()=>import("./device-88b475f8.js"),["assets/device-88b475f8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/device.vue":()=>e(()=>import("./device-bde30920.js"),["assets/device-bde30920.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/device.vue":()=>e(()=>import("./device-969e7e37.js"),["assets/device-969e7e37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_bat_kit/device.vue":()=>e(()=>import("./device-f30e2b4f.js"),["assets/device-f30e2b4f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_evu_kit/device.vue":()=>e(()=>import("./device-973a766d.js"),["assets/device-973a766d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_flex/device.vue":()=>e(()=>import("./device-c6cc93a1.js"),["assets/device-c6cc93a1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pv_kit/device.vue":()=>e(()=>import("./device-03024a15.js"),["assets/device-03024a15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/device.vue":()=>e(()=>import("./device-b0052907.js"),["assets/device-b0052907.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/device.vue":()=>e(()=>import("./device-3968fce4.js"),["assets/device-3968fce4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/device.vue":()=>e(()=>import("./device-b37a9e8d.js"),["assets/device-b37a9e8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/device.vue":()=>e(()=>import("./device-4e0ae06c.js"),["assets/device-4e0ae06c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/device.vue":()=>e(()=>import("./device-c6a1db4d.js"),["assets/device-c6a1db4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/device.vue":()=>e(()=>import("./device-f386c17f.js"),["assets/device-f386c17f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/device.vue":()=>e(()=>import("./device-7513ccc0.js"),["assets/device-7513ccc0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens_sentron/device.vue":()=>e(()=>import("./device-23a82284.js"),["assets/device-23a82284.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/device.vue":()=>e(()=>import("./device-3d446bca.js"),["assets/device-3d446bca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_shm/device.vue":()=>e(()=>import("./device-9c5030b4.js"),["assets/device-9c5030b4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_boy/device.vue":()=>e(()=>import("./device-20c840b8.js"),["assets/device-20c840b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_sunny_island/device.vue":()=>e(()=>import("./device-5c5eff36.js"),["assets/device-5c5eff36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma_webbox/device.vue":()=>e(()=>import("./device-1ffb41f0.js"),["assets/device-1ffb41f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/device.vue":()=>e(()=>import("./device-ca6e69b3.js"),["assets/device-ca6e69b3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/device.vue":()=>e(()=>import("./device-9d8b0b7b.js"),["assets/device-9d8b0b7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/device.vue":()=>e(()=>import("./device-a7f6d1af.js"),["assets/device-a7f6d1af.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/device.vue":()=>e(()=>import("./device-d89c28aa.js"),["assets/device-d89c28aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/device.vue":()=>e(()=>import("./device-cdd190a8.js"),["assets/device-cdd190a8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/device.vue":()=>e(()=>import("./device-decb34ec.js"),["assets/device-decb34ec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/device.vue":()=>e(()=>import("./device-27b7a3b2.js"),["assets/device-27b7a3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/device.vue":()=>e(()=>import("./device-978a39c6.js"),["assets/device-978a39c6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/device.vue":()=>e(()=>import("./device-9953198a.js"),["assets/device-9953198a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/device.vue":()=>e(()=>import("./device-99dfaf68.js"),["assets/device-99dfaf68.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnenbatterie/device.vue":()=>e(()=>import("./device-fb0c3879.js"),["assets/device-fb0c3879.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/device.vue":()=>e(()=>import("./device-03c90ad8.js"),["assets/device-03c90ad8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/device.vue":()=>e(()=>import("./device-d2cb5a1c.js"),["assets/device-d2cb5a1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/device.vue":()=>e(()=>import("./device-fca4d491.js"),["assets/device-fca4d491.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/device.vue":()=>e(()=>import("./device-a1360448.js"),["assets/device-a1360448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/device.vue":()=>e(()=>import("./device-aeda6c46.js"),["assets/device-aeda6c46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/device.vue":()=>e(()=>import("./device-d35b0355.js"),["assets/device-d35b0355.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/device.vue":()=>e(()=>import("./device-558befc9.js"),["assets/device-558befc9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./virtual/device.vue":()=>e(()=>import("./device-66c1386d.js"),["assets/device-66c1386d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/device.vue":()=>e(()=>import("./device-f969614a.js"),["assets/device-f969614a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/device.vue":()=>e(()=>import("./device-bff08244.js"),["assets/device-bff08244.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceType}/device.vue`),errorComponent:W})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function se(_,i,n,R,s,u){return v(),c($(u.myComponent),{configuration:n.configuration,deviceId:n.deviceId,deviceType:n.deviceType,componentId:n.componentId,componentType:n.componentType,"onUpdate:configuration":i[0]||(i[0]=V=>u.updateConfiguration(V))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=k(ae,[["render",se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);K.add(N,G,H,F,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{type:this.deviceToAdd}})},removeDeviceModal(_,i,n){n.stopPropagation(),this.modalDevice=_,this.modalDeviceName=i,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},getDeviceList(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]},addComponent(_,i,n){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:i,type:n}})},removeComponentModal(_,i,n,R,s){s.stopPropagation(),this.modalComponent={deviceId:_,id:i,type:n},this.modalComponentName=R,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_){return _===void 0?[]:(console.debug("finding components for '"+_+"'"),this.$store.state.mqtt["openWB/system/configurable/devices_components"].find(n=>n.value===_).component)},updateConfiguration(_,i){console.debug("updateConfiguration",_,i),this.updateState(_,i.value,i.object)}}},D=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),Ee={class:"hardwareInstallation"},ce={name:"hardwareInstallationForm"},le={key:0},Te={key:1},Ie={key:1},Ve=D(()=>E("hr",null,null,-1)),Ae=D(()=>E("hr",null,null,-1)),De=D(()=>E("hr",null,null,-1)),Oe=D(()=>E("hr",null,null,-1)),Re={class:"col-1"},Pe={key:0},Le={class:"col-1"},ge=D(()=>E("p",null,[a(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),E("br"),a(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=D(()=>E("p",null,[a(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),E("br"),a(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=D(()=>E("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function he(_,i,n,R,s,u){const V=m("openwb-base-modal-dialog"),f=m("router-link"),O=m("openwb-base-alert"),A=m("font-awesome-icon"),b=m("openwb-base-avatar"),P=m("openwb-base-text-input"),x=m("openwb-config-proxy"),q=m("openwb-base-heading"),h=m("openwb-base-card"),z=m("openwb-base-click-button"),C=m("openwb-base-select-input"),j=m("openwb-base-submit-buttons");return v(),p(g,null,[r(V,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u.removeDevice},{default:t(()=>[a(' Wollen Sie das Gerät "'+I(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(V,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u.removeComponent},{default:t(()=>[a(' Wollen Sie die Komponente "'+I(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),E("div",Ee,[E("form",ce,[n.installAssistantActive?L("",!0):(v(),c(O,{key:0,subtype:"info"},{default:t(()=>[a(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),r(f,{to:"/LoadManagementConfiguration"},{default:t(()=>[a(" Lastmanagement ")]),_:1}),a(" zu prüfen! ")]),_:1})),r(h,{title:"Geräte und Komponenten"},{default:t(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(v(),p("div",le,[r(O,{subtype:"info"},{default:t(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(v(),p("div",Te,[(v(!0),p(g,null,y(u.installedDevices,(o,B)=>(v(),c(h,{key:o.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:t(()=>[r(A,{"fixed-width":"",icon:["fas","network-wired"]}),a(" "+I(o.name),1)]),actions:t(d=>[d.collapsed?(v(),p("div",Ie,[(v(!0),p(g,null,y(u.getMyInstalledComponents(o.id),l=>(v(),c(b,{key:l.id,class:w("ml-1 bg-"+u.getComponentTypeClass(l.type))},{default:t(()=>[r(A,{"fixed-width":"",icon:u.getComponentTypeIcon(l.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(v(),c(b,{key:0,class:"bg-danger clickable",onClick:l=>u.removeDeviceModal(o.id,o.name,l)},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:t(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":o.name,"onUpdate:modelValue":d=>_.updateState(B,d,"name")},null,8,["model-value","onUpdate:modelValue"]),Ve,r(x,{deviceId:o.id,deviceType:o.type,configuration:o.configuration,"onUpdate:configuration":d=>u.updateConfiguration(B,d)},null,8,["deviceId","deviceType","configuration","onUpdate:configuration"]),Ae,r(q,null,{default:t(()=>[a("Komponenten")]),_:1}),u.deviceHasConfiguredComponents(o.id)?L("",!0):(v(),c(O,{key:0,subtype:"warning"},{default:t(()=>[a(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(v(!0),p(g,null,y(u.getMyInstalledComponents(o.id),(d,l)=>(v(),c(h,{key:d.id,collapsible:!0,collapsed:!0,subtype:u.getComponentTypeClass(d.type)},{header:t(()=>[r(A,{"fixed-width":"",icon:u.getComponentTypeIcon(d.type)},null,8,["icon"]),a(" "+I(d.name),1)]),actions:t(T=>[T.collapsed?L("",!0):(v(),c(b,{key:0,class:"bg-danger clickable",onClick:U=>u.removeComponentModal(o.id,d.id,d.type,d.name,U)},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:t(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":d.name,"onUpdate:modelValue":T=>_.updateState(l,T,"name")},null,8,["model-value","onUpdate:modelValue"]),r(P,{title:"Hersteller",subtype:"text","model-value":d.info.manufacturer,"onUpdate:modelValue":T=>_.updateState(l,T,"info.manufacturer")},{help:t(()=>[a(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(P,{title:"Modell",subtype:"text","model-value":d.info.model,"onUpdate:modelValue":T=>_.updateState(l,T,"info.model")},{help:t(()=>[a(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),De,r(x,{deviceId:o.id,deviceType:o.type,componentId:d.id,componentType:d.type,configuration:d.configuration,"onUpdate:configuration":T=>u.updateConfiguration(l,T)},null,8,["deviceId","deviceType","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Oe,u.getComponentList(o.type).length?(v(),c(C,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:u.getComponentList(o.type),"model-value":s.componentToAdd[o.id],"onUpdate:modelValue":d=>s.componentToAdd[o.id]=d},{append:t(()=>[E("span",Re,[r(z,{class:w(s.componentToAdd[o.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[o.id]===void 0,onButtonClicked:d=>u.addComponent(o.id,o.type,s.componentToAdd[o.id])},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:t(()=>[a(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(v(),c(O,{key:2,subtype:"info"},{default:t(()=>[a(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(u.installedDevices).length>0?(v(),p("hr",Pe)):L("",!0),r(C,{class:"mb-2",title:"Verfügbare Geräte",notSelected:"Bitte auswählen",options:u.getDeviceList(),"model-value":s.deviceToAdd,"onUpdate:modelValue":i[0]||(i[0]=o=>s.deviceToAdd=o)},{append:t(()=>[E("span",Le,[r(z,{class:w(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:u.addDevice},{default:t(()=>[r(A,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:t(()=>[ge,fe,be]),_:1},8,["options","model-value"])]))]),_:1}),r(j,{formName:"hardwareInstallationForm",onSave:i[1]||(i[1]=o=>_.$emit("save")),onReset:i[2]||(i[2]=o=>_.$emit("reset")),onDefaults:i[3]||(i[3]=o=>_.$emit("defaults"))})])])],64)}const Se=k(pe,[["render",he],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{Se as default};
diff --git a/web/settings/assets/InstallAssistant-cf52f5a9.js b/web/settings/assets/InstallAssistant-6dafed2f.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-cf52f5a9.js
rename to web/settings/assets/InstallAssistant-6dafed2f.js
index b2d89ea5e3..54d806bc3a 100644
--- a/web/settings/assets/InstallAssistant-cf52f5a9.js
+++ b/web/settings/assets/InstallAssistant-6dafed2f.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-3e910ceb.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-9e7a579c.js"),["assets/InstallAssistantStep0-9e7a579c.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-ad2e1612.js"),["assets/InstallAssistantStep1-ad2e1612.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-8e77f816.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-34baf34c.js"),["assets/InstallAssistantStep10-34baf34c.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-7bc8d141.js"),["assets/InstallAssistantStep2-7bc8d141.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-f83e90ce.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-b116e741.js"),["assets/InstallAssistantStep3-b116e741.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-9cc2f4c2.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-7237ac3b.js"),["assets/InstallAssistantStep4-7237ac3b.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-922a298c.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-2f42076b.js"),["assets/InstallAssistantStep5-2f42076b.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-a105c95d.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-82a042dc.js"),["assets/InstallAssistantStep6-82a042dc.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-922a298c.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-50482e21.js"),["assets/InstallAssistantStep7-50482e21.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-bf9a36c1.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-cc64765b.js"),["assets/InstallAssistantStep8-cc64765b.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-4390a03b.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-938e13a7.js"),["assets/InstallAssistantStep9-938e13a7.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-eb06cf07.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-8e77f816.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-eb06cf07.js"),["assets/InstallAssistantStepTemplate-eb06cf07.js","assets/index-3e910ceb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-0deee932.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-e9cce727.js"),["assets/InstallAssistantStep0-e9cce727.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-efa3c6bc.js"),["assets/InstallAssistantStep1-efa3c6bc.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-5a70f628.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-7c0c9f39.js"),["assets/InstallAssistantStep10-7c0c9f39.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-fda9278d.js"),["assets/InstallAssistantStep2-fda9278d.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-d59d61b7.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-4d332029.js"),["assets/InstallAssistantStep3-4d332029.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-45cfd7f0.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-6da51e7b.js"),["assets/InstallAssistantStep4-6da51e7b.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-05b3f352.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-fe505bd8.js"),["assets/InstallAssistantStep5-fe505bd8.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-2c12edbc.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-0a0862fa.js"),["assets/InstallAssistantStep6-0a0862fa.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-05b3f352.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-51ebd504.js"),["assets/InstallAssistantStep7-51ebd504.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-6b31901e.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-2ead69e7.js"),["assets/InstallAssistantStep8-2ead69e7.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-a1751954.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-195c286e.js"),["assets/InstallAssistantStep9-195c286e.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-5a70f628.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-fc1b6a40.js"),["assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-9e7a579c.js b/web/settings/assets/InstallAssistantStep0-e9cce727.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-9e7a579c.js
rename to web/settings/assets/InstallAssistantStep0-e9cce727.js
index 75146e05b8..4e5ba641e2 100644
--- a/web/settings/assets/InstallAssistantStep0-9e7a579c.js
+++ b/web/settings/assets/InstallAssistantStep0-e9cce727.js
@@ -1 +1 @@
-import{C as d}from"./index-3e910ceb.js";import u from"./InstallAssistantStepTemplate-eb06cf07.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
+import{C as d}from"./index-0deee932.js";import u from"./InstallAssistantStepTemplate-fc1b6a40.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
diff --git a/web/settings/assets/InstallAssistantStep1-ad2e1612.js b/web/settings/assets/InstallAssistantStep1-efa3c6bc.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep1-ad2e1612.js
rename to web/settings/assets/InstallAssistantStep1-efa3c6bc.js
index 04d866d5be..40c00515ec 100644
--- a/web/settings/assets/InstallAssistantStep1-ad2e1612.js
+++ b/web/settings/assets/InstallAssistantStep1-efa3c6bc.js
@@ -1 +1 @@
-import{C as m}from"./index-3e910ceb.js";import p from"./InstallAssistantStepTemplate-eb06cf07.js";import l from"./DataManagement-8e77f816.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
+import{C as m}from"./index-0deee932.js";import p from"./InstallAssistantStepTemplate-fc1b6a40.js";import l from"./DataManagement-5a70f628.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
diff --git a/web/settings/assets/InstallAssistantStep10-34baf34c.js b/web/settings/assets/InstallAssistantStep10-7c0c9f39.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-34baf34c.js
rename to web/settings/assets/InstallAssistantStep10-7c0c9f39.js
index 36e8697bcb..4a68ef139e 100644
--- a/web/settings/assets/InstallAssistantStep10-34baf34c.js
+++ b/web/settings/assets/InstallAssistantStep10-7c0c9f39.js
@@ -1 +1 @@
-import{C as i}from"./index-3e910ceb.js";import a from"./InstallAssistantStepTemplate-eb06cf07.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
+import{C as i}from"./index-0deee932.js";import a from"./InstallAssistantStepTemplate-fc1b6a40.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
diff --git a/web/settings/assets/InstallAssistantStep2-7bc8d141.js b/web/settings/assets/InstallAssistantStep2-fda9278d.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-7bc8d141.js
rename to web/settings/assets/InstallAssistantStep2-fda9278d.js
index 8e6232434c..9ec0d20038 100644
--- a/web/settings/assets/InstallAssistantStep2-7bc8d141.js
+++ b/web/settings/assets/InstallAssistantStep2-fda9278d.js
@@ -1 +1 @@
-import{C as d}from"./index-3e910ceb.js";import p from"./InstallAssistantStepTemplate-eb06cf07.js";import l from"./System-f83e90ce.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
+import{C as d}from"./index-0deee932.js";import p from"./InstallAssistantStepTemplate-fc1b6a40.js";import l from"./System-d59d61b7.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep3-b116e741.js b/web/settings/assets/InstallAssistantStep3-4d332029.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep3-b116e741.js
rename to web/settings/assets/InstallAssistantStep3-4d332029.js
index 8298f9cb89..69725997ad 100644
--- a/web/settings/assets/InstallAssistantStep3-b116e741.js
+++ b/web/settings/assets/InstallAssistantStep3-4d332029.js
@@ -1 +1 @@
-import{C as d}from"./index-3e910ceb.js";import p from"./InstallAssistantStepTemplate-eb06cf07.js";import m from"./GeneralConfig-9cc2f4c2.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
+import{C as d}from"./index-0deee932.js";import p from"./InstallAssistantStepTemplate-fc1b6a40.js";import m from"./GeneralConfig-45cfd7f0.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep4-7237ac3b.js b/web/settings/assets/InstallAssistantStep4-6da51e7b.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep4-7237ac3b.js
rename to web/settings/assets/InstallAssistantStep4-6da51e7b.js
index 1a7b46cd93..9d1cf53a60 100644
--- a/web/settings/assets/InstallAssistantStep4-7237ac3b.js
+++ b/web/settings/assets/InstallAssistantStep4-6da51e7b.js
@@ -1 +1 @@
-import{C as l}from"./index-3e910ceb.js";import p from"./InstallAssistantStepTemplate-eb06cf07.js";import u from"./ChargePointInstallation-922a298c.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
+import{C as l}from"./index-0deee932.js";import p from"./InstallAssistantStepTemplate-fc1b6a40.js";import u from"./ChargePointInstallation-05b3f352.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
diff --git a/web/settings/assets/InstallAssistantStep5-2f42076b.js b/web/settings/assets/InstallAssistantStep5-fe505bd8.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep5-2f42076b.js
rename to web/settings/assets/InstallAssistantStep5-fe505bd8.js
index e6d5f543ac..5b6d6213d5 100644
--- a/web/settings/assets/InstallAssistantStep5-2f42076b.js
+++ b/web/settings/assets/InstallAssistantStep5-fe505bd8.js
@@ -1 +1 @@
-import{C as l}from"./index-3e910ceb.js";import m from"./InstallAssistantStepTemplate-eb06cf07.js";import u from"./HardwareInstallation-a105c95d.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
+import{C as l}from"./index-0deee932.js";import m from"./InstallAssistantStepTemplate-fc1b6a40.js";import u from"./HardwareInstallation-2c12edbc.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstallAssistantStep6-82a042dc.js b/web/settings/assets/InstallAssistantStep6-0a0862fa.js
similarity index 94%
rename from web/settings/assets/InstallAssistantStep6-82a042dc.js
rename to web/settings/assets/InstallAssistantStep6-0a0862fa.js
index 430fe1d442..5959f2ddc8 100644
--- a/web/settings/assets/InstallAssistantStep6-82a042dc.js
+++ b/web/settings/assets/InstallAssistantStep6-0a0862fa.js
@@ -1 +1 @@
-import{C as l}from"./index-3e910ceb.js";import u from"./InstallAssistantStepTemplate-eb06cf07.js";import p from"./ChargePointInstallation-922a298c.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
+import{C as l}from"./index-0deee932.js";import u from"./InstallAssistantStepTemplate-fc1b6a40.js";import p from"./ChargePointInstallation-05b3f352.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep7-50482e21.js b/web/settings/assets/InstallAssistantStep7-51ebd504.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-50482e21.js
rename to web/settings/assets/InstallAssistantStep7-51ebd504.js
index ef623171f0..9ca2e09e34 100644
--- a/web/settings/assets/InstallAssistantStep7-50482e21.js
+++ b/web/settings/assets/InstallAssistantStep7-51ebd504.js
@@ -1 +1 @@
-import{C as l}from"./index-3e910ceb.js";import m from"./InstallAssistantStepTemplate-eb06cf07.js";import p from"./LoadManagementConfig-bf9a36c1.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
+import{C as l}from"./index-0deee932.js";import m from"./InstallAssistantStepTemplate-fc1b6a40.js";import p from"./LoadManagementConfig-6b31901e.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep8-cc64765b.js b/web/settings/assets/InstallAssistantStep8-2ead69e7.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep8-cc64765b.js
rename to web/settings/assets/InstallAssistantStep8-2ead69e7.js
index 12eba364bd..d9fc4d8dc1 100644
--- a/web/settings/assets/InstallAssistantStep8-cc64765b.js
+++ b/web/settings/assets/InstallAssistantStep8-2ead69e7.js
@@ -1 +1 @@
-import{C as l}from"./index-3e910ceb.js";import u from"./InstallAssistantStepTemplate-eb06cf07.js";import m from"./VehicleConfig-4390a03b.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
+import{C as l}from"./index-0deee932.js";import u from"./InstallAssistantStepTemplate-fc1b6a40.js";import m from"./VehicleConfig-a1751954.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep9-938e13a7.js b/web/settings/assets/InstallAssistantStep9-195c286e.js
similarity index 91%
rename from web/settings/assets/InstallAssistantStep9-938e13a7.js
rename to web/settings/assets/InstallAssistantStep9-195c286e.js
index 991f8e7840..c4eeeaa197 100644
--- a/web/settings/assets/InstallAssistantStep9-938e13a7.js
+++ b/web/settings/assets/InstallAssistantStep9-195c286e.js
@@ -1 +1 @@
-import{C as l}from"./index-3e910ceb.js";import p from"./InstallAssistantStepTemplate-eb06cf07.js";import u from"./DataManagement-8e77f816.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
+import{C as l}from"./index-0deee932.js";import p from"./InstallAssistantStepTemplate-fc1b6a40.js";import u from"./DataManagement-5a70f628.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-eb06cf07.js b/web/settings/assets/InstallAssistantStepTemplate-fc1b6a40.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-eb06cf07.js
rename to web/settings/assets/InstallAssistantStepTemplate-fc1b6a40.js
index 525485c322..05de21a06f 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-eb06cf07.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-fc1b6a40.js
@@ -1 +1 @@
-import{C as v}from"./index-3e910ceb.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
+import{C as v}from"./index-0deee932.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstantChargeConfig-31e43404.js b/web/settings/assets/InstantChargeConfig-f62c6c62.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-31e43404.js
rename to web/settings/assets/InstantChargeConfig-f62c6c62.js
index 0cdf5cf9e4..e8a77c2b49 100644
--- a/web/settings/assets/InstantChargeConfig-31e43404.js
+++ b/web/settings/assets/InstantChargeConfig-f62c6c62.js
@@ -1 +1 @@
-import{C as l}from"./index-3e910ceb.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-0deee932.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-fe52cd90.js b/web/settings/assets/LegalSettings-30e95de5.js
similarity index 97%
rename from web/settings/assets/LegalSettings-fe52cd90.js
rename to web/settings/assets/LegalSettings-30e95de5.js
index abb2ef8a3d..f08e5219e9 100644
--- a/web/settings/assets/LegalSettings-fe52cd90.js
+++ b/web/settings/assets/LegalSettings-30e95de5.js
@@ -1 +1 @@
-import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-3e910ceb.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
+import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-0deee932.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
diff --git a/web/settings/assets/LoadManagementConfig-bf9a36c1.js b/web/settings/assets/LoadManagementConfig-6b31901e.js
similarity index 99%
rename from web/settings/assets/LoadManagementConfig-bf9a36c1.js
rename to web/settings/assets/LoadManagementConfig-6b31901e.js
index b896e13a73..c4c36fa739 100644
--- a/web/settings/assets/LoadManagementConfig-bf9a36c1.js
+++ b/web/settings/assets/LoadManagementConfig-6b31901e.js
@@ -1 +1 @@
-import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-3e910ceb.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
+import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-0deee932.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
diff --git a/web/settings/assets/MqttBridgeConfig-aa7c26e4.js b/web/settings/assets/MqttBridgeConfig-f457be0c.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-aa7c26e4.js
rename to web/settings/assets/MqttBridgeConfig-f457be0c.js
index 8d24c4d063..8ec9b9a58b 100644
--- a/web/settings/assets/MqttBridgeConfig-aa7c26e4.js
+++ b/web/settings/assets/MqttBridgeConfig-f457be0c.js
@@ -1 +1 @@
-import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-3e910ceb.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
+import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-0deee932.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
diff --git a/web/settings/assets/OptionalComponents-71cfebf9.js b/web/settings/assets/OptionalComponents-d3fca35b.js
similarity index 99%
rename from web/settings/assets/OptionalComponents-71cfebf9.js
rename to web/settings/assets/OptionalComponents-d3fca35b.js
index 717b367dc6..a580b8ebbf 100644
--- a/web/settings/assets/OptionalComponents-71cfebf9.js
+++ b/web/settings/assets/OptionalComponents-d3fca35b.js
@@ -1,2 +1,2 @@
-import{_ as $,C}from"./index-3e910ceb.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as O,X as V,Y as z,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as g,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function j(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),g(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=_=>m.updateConfiguration(_,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const A=y(F,[["render",j],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);O.add(V,z);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),_=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),g(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),g(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(_,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),g(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),_=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(_,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
+import{_ as $,C}from"./index-0deee932.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as O,X as V,Y as z,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as g,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function j(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),g(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=_=>m.updateConfiguration(_,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const A=y(F,[["render",j],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);O.add(V,z);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),_=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),g(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),g(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(_,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),g(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),_=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(_,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
 `)},{help:o(()=>[a(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(b,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/optional/int_display/active",i)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[a(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",te,[n(b,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/optional/int_display/rotation",i)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ne,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),oe,n(T,null,{default:o(()=>[a(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/optional/int_display/standby",i)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",ae,[ie,n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",se,[le,n(b,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/optional/int_display/only_local_charge_points",i)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[a(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),pe,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",re,[n(D,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=i=>m.updateSelectedDisplayTheme(i))},{help:o(()=>[a(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),g(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=i=>m.updateConfiguration("openWB/optional/int_display/theme",i))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=i=>e.$emit("save")),onReset:t[8]||(t[8]=i=>e.$emit("reset")),onDefaults:t[9]||(t[9]=i=>e.$emit("defaults"))})])])}const ye=y(H,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{ye as default};
diff --git a/web/settings/assets/PVChargeConfig-4e2ab231.js b/web/settings/assets/PVChargeConfig-a0353b9a.js
similarity index 99%
rename from web/settings/assets/PVChargeConfig-4e2ab231.js
rename to web/settings/assets/PVChargeConfig-a0353b9a.js
index 0f6bd1f046..5684d7d9b8 100644
--- a/web/settings/assets/PVChargeConfig-4e2ab231.js
+++ b/web/settings/assets/PVChargeConfig-a0353b9a.js
@@ -1 +1 @@
-import{C as B}from"./index-3e910ceb.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
+import{C as B}from"./index-0deee932.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-d8c705e2.js b/web/settings/assets/ScheduledChargeConfig-cb777801.js
similarity index 97%
rename from web/settings/assets/ScheduledChargeConfig-d8c705e2.js
rename to web/settings/assets/ScheduledChargeConfig-cb777801.js
index 40d1a6f245..966f3c7113 100644
--- a/web/settings/assets/ScheduledChargeConfig-d8c705e2.js
+++ b/web/settings/assets/ScheduledChargeConfig-cb777801.js
@@ -1 +1 @@
-import{C as p}from"./index-3e910ceb.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
+import{C as p}from"./index-0deee932.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
diff --git a/web/settings/assets/Status-2dd83854.js b/web/settings/assets/Status-0e0f6b66.js
similarity index 99%
rename from web/settings/assets/Status-2dd83854.js
rename to web/settings/assets/Status-0e0f6b66.js
index 22a63a8e80..7f8ebb2f60 100644
--- a/web/settings/assets/Status-2dd83854.js
+++ b/web/settings/assets/Status-0e0f6b66.js
@@ -1 +1 @@
-import{C as y}from"./index-3e910ceb.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
+import{C as y}from"./index-0deee932.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
diff --git a/web/settings/assets/Support-34834209.js b/web/settings/assets/Support-89c6cc7c.js
similarity index 99%
rename from web/settings/assets/Support-34834209.js
rename to web/settings/assets/Support-89c6cc7c.js
index e359ffd091..5d007f4706 100644
--- a/web/settings/assets/Support-34834209.js
+++ b/web/settings/assets/Support-89c6cc7c.js
@@ -1,3 +1,3 @@
-import{l as S,g as D,F as V}from"./vendor-fortawesome-71546160.js";import{C as W}from"./index-3e910ceb.js";import{_ as A,u as d,k as h,l as f,x as r,A as _,N as t,D as s,a4 as C,B as k,y as e,q as F}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(D);const z={name:"OpenwbSupportView",mixins:[W],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var p,m;if(this.components!==void 0)return this.components;let i="";const o=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const n of Object.values(o)){const u=n.id,a=((p=n.info)==null?void 0:p.manufacturer)||"N/A",c=((m=n.info)==null?void 0:m.model)||"N/A";i+=`(${u}) Hersteller: ${a}, Modell: ${c}
+import{l as S,g as D,F as V}from"./vendor-fortawesome-71546160.js";import{C as W}from"./index-0deee932.js";import{_ as A,u as d,k as h,l as f,x as r,A as _,N as t,D as s,a4 as C,B as k,y as e,q as F}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(D);const z={name:"OpenwbSupportView",mixins:[W],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var p,m;if(this.components!==void 0)return this.components;let i="";const o=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const n of Object.values(o)){const u=n.id,a=((p=n.info)==null?void 0:p.manufacturer)||"N/A",c=((m=n.info)==null?void 0:m.model)||"N/A";i+=`(${u}) Hersteller: ${a}, Modell: ${c}
 `}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const o=this.getWildcardTopics("openWB/vehicle/+/info");for(const[p,m]of Object.entries(o)){const n=parseInt(p.split("/")[2]);if(n!==0){const u=m.manufacturer||"N/A",a=m.model||"N/A";i+=`(${n}) Hersteller: ${u}, Modell: ${a}
 `}}return i.trim()}}},x={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T=r("li",null,' Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),H=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),E=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1),K=r("br",null,null,-1),L=r("br",null,null,-1),U=r("br",null,null,-1),j={class:"row justify-content-center"};function $(i,o,p,m,n,u){const a=d("router-link"),c=d("openwb-base-alert"),w=d("FontAwesomeIcon"),g=d("openwb-base-text-input"),b=d("openwb-base-textarea"),v=d("openwb-base-click-button"),y=d("openwb-base-card"),B=d("font-awesome-icon");return h(),f("div",x,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(h(),_(c,{key:0,subtype:"danger"},{default:t(()=>[e(" Du musst der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(h(),f("div",I,[s(c,{subtype:"success"},{default:t(()=>[e(" Du hast der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und kannst Systemberichte senden. ")]),_:1}),s(y,{title:"Systembericht"},C({default:t(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(h(),f("div",N,[s(c,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lies bitte den Hilfetext, der durch Klick auf das "),s(w,{icon:["far","question-circle"]}),e(" angezeigt wird. Nimm das Wiki zur Hilfe. ")]),T,M,H,E])]),_:1}),s(g,{title:"E-Mail",required:"",subtype:"email",modelValue:n.email,"onUpdate:modelValue":o[0]||(o[0]=l=>n.email=l)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(g,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":o[1]||(o[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:t(()=>[e(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),K,e(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")]),_:1},8,["model-value"]),s(b,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":u.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=l=>n.components=l)},{help:t(()=>[e(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind."),L,s(a,{to:"/HardwareInstallation"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":u.vehicleInfo,"onUpdate:modelValue":o[3]||(o[3]=l=>n.vehicles=l)},{help:t(()=>[e(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr)."),U,s(a,{to:"/VehicleConfiguration"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.message,"onUpdate:modelValue":o[4]||(o[4]=l=>n.message=l)},null,8,["modelValue"])])):k("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",j,[s(v,{class:F(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:u.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?k("",!0):(h(),_(c,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. "),s(B,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const X=A(z,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{X as default};
diff --git a/web/settings/assets/System-d59d61b7.js b/web/settings/assets/System-d59d61b7.js
new file mode 100644
index 0000000000..e11001eb9a
--- /dev/null
+++ b/web/settings/assets/System-d59d61b7.js
@@ -0,0 +1 @@
+import{l as A,ae as q,p as S,a3 as C,U,af as z,F as $}from"./vendor-fortawesome-71546160.js";import{C as x}from"./index-0deee932.js";import{_ as E,u as p,k as m,l as _,A as B,N as a,B as w,x as o,D as s,y as i,q as k,J as F,K as j,z as D,S as T,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,U,z);const L={name:"OpenwbSystemView",mixins:[x],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],b=(l,d)=>l.value==d.value?0:l.value==t?-1:d.value==t?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var r=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(r!==void 0){var c=0;for(const[l,d]of Object.entries(r))v.includes(l)?c=0:l==u?c=1:c=2,f[c].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(b),f[1].options.sort(b)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},h=t=>(T("data-v-059847f6"),t=t(),I(),t),N={class:"system"},R=h(()=>o("h2",null,"Achtung!",-1)),Z=h(()=>o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),O={key:1},P={name:"versionInfoForm"},G={class:"missing-commits"},J=h(()=>o("br",null,null,-1)),H={class:"row justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={class:"col-md-4 d-flex py-1 justify-content-center"},Q={key:0,name:"powerForm"},X={class:"row justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={class:"col-md-4 d-flex py-1 justify-content-center"},te={key:1,name:"releaseChangeForm"},se=h(()=>o("br",null,null,-1)),ne=h(()=>o("br",null,null,-1)),ae=h(()=>o("br",null,null,-1)),oe=h(()=>o("br",null,null,-1)),re={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(t,e,u,v,b,r){const f=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),d=p("openwb-base-card"),g=p("font-awesome-icon"),y=p("openwb-base-click-button"),V=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?w("",!0):(m(),B(c,{key:0,subtype:"danger"},{default:a(()=>[R,Z,s(f,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),b.warningAcknowledged||u.installAssistantActive?(m(),_("div",O,[o("form",P,[s(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[o("div",H,[o("div",K,[s(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[i(" Informationen aktualisieren "),s(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),o("div",M,[s(y,{class:k(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>r.systemUpdate())},{default:a(()=>[i(" Update "),s(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:k(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(m(),B(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[o("ul",G,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},D(n),1))),128))])]),_:1})):w("",!0),s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1}),t.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(m(),B(c,{key:1,subtype:"danger"},{default:a(()=>[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),J,i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")]),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(m(),_("form",Q,[s(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",X,[o("div",Y,[s(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemReboot"))},{default:a(()=>[i(" Neustart "),s(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),o("div",ee,[s(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>r.sendSystemCommand("systemShutdown"))},{default:a(()=>[i(" Ausschalten "),s(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(m(),_("form",te,[s(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",re,[o("div",le,[s(y,{class:k(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>r.switchBranch())},{default:a(()=>[s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),se,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),ne,i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ae,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),oe,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(V,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(V,{title:"Tag",options:r.getBranchTagOptions(),modelValue:b.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>b.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):w("",!0)])}const fe=E(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{fe as default};
diff --git a/web/settings/assets/System-f83e90ce.js b/web/settings/assets/System-f83e90ce.js
deleted file mode 100644
index 01d26e1b40..0000000000
--- a/web/settings/assets/System-f83e90ce.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as A,ae as q,p as S,a3 as C,U as x,af as U,F as $}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-3e910ceb.js";import{_ as E,u as p,k as m,l as _,A as V,N as a,B as y,x as r,D as s,y as d,q as B,J as F,K as j,z as T,S as D,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,x,U);const L={name:"OpenwbSystemView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],h=(l,i)=>l.value==i.value?0:l.value==t?-1:i.value==t?1:l.value==e?-1:i.value==e?1:l.value==u?-1:i.value==u||l.value>i.value?1:l.value<i.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],b=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var c=0;for(const[l,i]of Object.entries(o))v.includes(l)?c=0:l==u?c=1:c=2,b[c].options.push({value:l,text:l+" ("+i.commit+")"});b[0].options.sort(h),b[1].options.sort(h)}return b},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},g=t=>(D("data-v-059847f6"),t=t(),I(),t),N={class:"system"},O=g(()=>r("h2",null,"Achtung!",-1)),Z=g(()=>r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),R={key:1},P={name:"versionInfoForm"},J={class:"missing-commits"},G={class:"row justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={key:0,name:"powerForm"},Q={class:"row justify-content-center"},X={class:"col-md-4 d-flex py-1 justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={key:1,name:"releaseChangeForm"},te=g(()=>r("br",null,null,-1)),se=g(()=>r("br",null,null,-1)),ne=g(()=>r("br",null,null,-1)),ae=g(()=>r("br",null,null,-1)),oe={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function re(t,e,u,v,h,o){const b=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),i=p("openwb-base-card"),f=p("font-awesome-icon"),w=p("openwb-base-click-button"),k=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?y("",!0):(m(),V(c,{key:0,subtype:"danger"},{default:a(()=>[O,Z,s(b,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),h.warningAcknowledged||u.installAssistantActive?(m(),_("div",R,[r("form",P,[s(i,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",G,[r("div",H,[s(w,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[d(" Informationen aktualisieren "),s(f,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",K,[s(w,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>o.systemUpdate())},{default:a(()=>[d(" Update "),s(f,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),o.updateAvailable?(m(),V(i,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",J,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},T(n),1))),128))])]),_:1})):y("",!0),s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1})]),_:1},8,["collapsed"])]),u.installAssistantActive?y("",!0):(m(),_("form",M,[s(i,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",Q,[r("div",X,[s(w,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[d(" Neustart "),s(f,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",Y,[s(w,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Ausschalten "),s(f,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?y("",!0):(m(),_("form",ee,[s(i,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",oe,[r("div",le,[s(w,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>o.switchBranch())},{default:a(()=>[s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]}),d(" Branch und Tag wechseln "),s(f,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[d(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[d(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),te,d(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),se,d(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ne,d(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),ae,d(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(k,{title:"Tag",options:o.getBranchTagOptions(),modelValue:h.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>h.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):y("",!0)])}const be=E(L,[["render",re],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{be as default};
diff --git a/web/settings/assets/TestingStore-60647c44.js b/web/settings/assets/TestingStore-a904ffb0.js
similarity index 99%
rename from web/settings/assets/TestingStore-60647c44.js
rename to web/settings/assets/TestingStore-a904ffb0.js
index 42c358cade..fcb5ec0ad2 100644
--- a/web/settings/assets/TestingStore-60647c44.js
+++ b/web/settings/assets/TestingStore-a904ffb0.js
@@ -1 +1 @@
-import{C as V}from"./index-3e910ceb.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
+import{C as V}from"./index-0deee932.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
diff --git a/web/settings/assets/TimeChargeConfig-26b3316f.js b/web/settings/assets/TimeChargeConfig-387e7031.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-26b3316f.js
rename to web/settings/assets/TimeChargeConfig-387e7031.js
index 9dcc241f48..b9d254f006 100644
--- a/web/settings/assets/TimeChargeConfig-26b3316f.js
+++ b/web/settings/assets/TimeChargeConfig-387e7031.js
@@ -1 +1 @@
-import{C as l}from"./index-3e910ceb.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-0deee932.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-4390a03b.js b/web/settings/assets/VehicleConfig-a1751954.js
similarity index 99%
rename from web/settings/assets/VehicleConfig-4390a03b.js
rename to web/settings/assets/VehicleConfig-a1751954.js
index 28bcf01ad8..fcc926ad6a 100644
--- a/web/settings/assets/VehicleConfig-4390a03b.js
+++ b/web/settings/assets/VehicleConfig-a1751954.js
@@ -1 +1 @@
-import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-3e910ceb.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as b,N as a,y as l,z as S,D as n,x as h,a2 as re,a3 as ue,J as y,B as m,K as B,a4 as q,P as N,q as O,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,g,F,_,s){const L=C("openwb-base-alert"),v=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(g.configuration).length==0?(r(),b(L,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(g.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(L,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(g.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(v,{title:"Konfiguration",subtype:"json","model-value":g.configuration,"onUpdate:modelValue":d[0]||(d[0]=W=>s.updateConfiguration(W,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(L,{subtype:"info"},{default:a(()=>[h("pre",null,S(JSON.stringify(g.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-39ccb597.js"),["assets/vehicle-39ccb597.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-3e910ceb.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,d,g,F,_,s){const L=C("openwb-base-heading");return r(),c(y,null,[n(L,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(g.vehicle.name)+'" ',1)]),_:1}),(r(),b(ue(s.myComponent),{vehicleId:g.vehicleId,vehicle:g.vehicle,configuration:g.vehicle.configuration,vehicleType:g.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=v=>s.updateConfiguration(v))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=Z(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+g].name;e.push({value:g,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+g].name;e.push({value:g,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(g=>g.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:g}})},removeChargeTemplateSchedulePlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,g){this.showChargeTemplateSchedulePlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:g}})},removeChargeTemplateTimeChargingPlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,g){this.showChargeTemplateTimeChargingPlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>h("br",null,null,-1)),Ue=f(()=>h("hr",null,null,-1)),Te={key:2},We=f(()=>h("br",null,null,-1)),Le=["innerHTML"],Pe=f(()=>h("hr",null,null,-1)),ye=f(()=>h("br",null,null,-1)),Ae=f(()=>h("br",null,null,-1)),Ee=f(()=>h("br",null,null,-1)),Be={key:3},Fe=f(()=>h("hr",{class:"border-secondary"},null,-1)),qe={key:0},Me={key:1},De=f(()=>h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),Ze={key:0},xe=f(()=>h("br",null,null,-1)),Ne=f(()=>h("br",null,null,-1)),Oe=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Re={key:1},He={key:0},je={key:0},Je={key:3},$e={key:0},Ge={key:1},Qe=f(()=>h("br",null,null,-1)),Xe=f(()=>h("br",null,null,-1)),Ye=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),Ke={key:0},et={key:0},tt={key:0},nt=f(()=>h("hr",null,null,-1)),at=f(()=>h("hr",null,null,-1)),lt=f(()=>h("br",null,null,-1)),it=f(()=>h("br",null,null,-1)),ot=f(()=>h("hr",null,null,-1)),dt=f(()=>h("br",null,null,-1)),rt=f(()=>h("br",null,null,-1)),ut=["onClick"],st={key:0},mt={key:1},ct={key:2},ht={key:3},gt={key:4},pt={key:5},bt={key:4},vt=f(()=>h("hr",null,null,-1)),ft=["onClick"],_t={key:0},wt={key:1},kt={key:2},Vt={key:3},Ct={key:4},St={key:5};function zt(e,d,g,F,_,s){const L=C("openwb-base-modal-dialog"),v=C("font-awesome-icon"),W=C("openwb-base-avatar"),E=C("openwb-base-alert"),U=C("openwb-base-text-input"),M=C("openwb-base-select-input"),I=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),A=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(y,null,[n(L,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",ke,[h("form",Ve,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(v,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(y,null,B(s.vehicleIndexes,i=>(r(),b(A,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),i!==0?(r(),b(U,{key:0,title:"Fahrzeughersteller ","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].manufacturer,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"manufacturer")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),i!==0?(r(),b(U,{key:1,title:"Fahrzeugmodell","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].model,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"model")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht."),ze,l(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),Ue,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!g.installAssistantActive?(r(),c("div",Te,[n(I,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),We,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Le)]),_:1}),Pe])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),ye,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Ee,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Be,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Fe,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Me,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),De,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(y,null,B(s.evTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ze,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),xe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ne,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Oe,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Re,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",je," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",$e,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Ge,[(r(!0),c(y,null,B(s.chargeTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Qe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Xe,Ye]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ke,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",et,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",tt,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),nt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),at,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),it,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),ot,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),dt,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),rt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(y,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",st,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",mt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",ct,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ht,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",gt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ut)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),b(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",pt,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),g.installAssistantActive?m("",!0):(r(),c("div",bt,[vt,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(y,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",wt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",kt,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",Vt,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Ct,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ft)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(U,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",St,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Bt=Z(we,[["render",zt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Bt as default};
+import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-0deee932.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as b,N as a,y as l,z as S,D as n,x as h,a2 as re,a3 as ue,J as y,B as m,K as B,a4 as q,P as N,q as O,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,g,F,_,s){const L=C("openwb-base-alert"),v=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(g.configuration).length==0?(r(),b(L,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(g.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(L,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(g.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(v,{title:"Konfiguration",subtype:"json","model-value":g.configuration,"onUpdate:modelValue":d[0]||(d[0]=W=>s.updateConfiguration(W,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(L,{subtype:"info"},{default:a(()=>[h("pre",null,S(JSON.stringify(g.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-d38b53d4.js"),["assets/vehicle-d38b53d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-0deee932.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,d,g,F,_,s){const L=C("openwb-base-heading");return r(),c(y,null,[n(L,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(g.vehicle.name)+'" ',1)]),_:1}),(r(),b(ue(s.myComponent),{vehicleId:g.vehicleId,vehicle:g.vehicle,configuration:g.vehicle.configuration,vehicleType:g.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=v=>s.updateConfiguration(v))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=Z(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+g].name;e.push({value:g,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+g].name;e.push({value:g,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(g=>g.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:g}})},removeChargeTemplateSchedulePlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,g){this.showChargeTemplateSchedulePlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:g}})},removeChargeTemplateTimeChargingPlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,g){this.showChargeTemplateTimeChargingPlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>h("br",null,null,-1)),Ue=f(()=>h("hr",null,null,-1)),Te={key:2},We=f(()=>h("br",null,null,-1)),Le=["innerHTML"],Pe=f(()=>h("hr",null,null,-1)),ye=f(()=>h("br",null,null,-1)),Ae=f(()=>h("br",null,null,-1)),Ee=f(()=>h("br",null,null,-1)),Be={key:3},Fe=f(()=>h("hr",{class:"border-secondary"},null,-1)),qe={key:0},Me={key:1},De=f(()=>h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),Ze={key:0},xe=f(()=>h("br",null,null,-1)),Ne=f(()=>h("br",null,null,-1)),Oe=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Re={key:1},He={key:0},je={key:0},Je={key:3},$e={key:0},Ge={key:1},Qe=f(()=>h("br",null,null,-1)),Xe=f(()=>h("br",null,null,-1)),Ye=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),Ke={key:0},et={key:0},tt={key:0},nt=f(()=>h("hr",null,null,-1)),at=f(()=>h("hr",null,null,-1)),lt=f(()=>h("br",null,null,-1)),it=f(()=>h("br",null,null,-1)),ot=f(()=>h("hr",null,null,-1)),dt=f(()=>h("br",null,null,-1)),rt=f(()=>h("br",null,null,-1)),ut=["onClick"],st={key:0},mt={key:1},ct={key:2},ht={key:3},gt={key:4},pt={key:5},bt={key:4},vt=f(()=>h("hr",null,null,-1)),ft=["onClick"],_t={key:0},wt={key:1},kt={key:2},Vt={key:3},Ct={key:4},St={key:5};function zt(e,d,g,F,_,s){const L=C("openwb-base-modal-dialog"),v=C("font-awesome-icon"),W=C("openwb-base-avatar"),E=C("openwb-base-alert"),U=C("openwb-base-text-input"),M=C("openwb-base-select-input"),I=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),A=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(y,null,[n(L,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",ke,[h("form",Ve,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(v,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(y,null,B(s.vehicleIndexes,i=>(r(),b(A,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),i!==0?(r(),b(U,{key:0,title:"Fahrzeughersteller ","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].manufacturer,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"manufacturer")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),i!==0?(r(),b(U,{key:1,title:"Fahrzeugmodell","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].model,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"model")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht."),ze,l(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),Ue,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!g.installAssistantActive?(r(),c("div",Te,[n(I,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),We,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Le)]),_:1}),Pe])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),ye,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Ee,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Be,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Fe,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Me,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),De,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(y,null,B(s.evTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ze,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),xe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ne,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Oe,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Re,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",je," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",$e,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Ge,[(r(!0),c(y,null,B(s.chargeTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Qe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Xe,Ye]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ke,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",et,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",tt,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),nt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),at,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),it,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),ot,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),dt,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),rt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(y,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",st,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",mt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",ct,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ht,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",gt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ut)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),b(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",pt,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),g.installAssistantActive?m("",!0):(r(),c("div",bt,[vt,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(y,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",wt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",kt,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",Vt,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Ct,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ft)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(U,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",St,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Bt=Z(we,[["render",zt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Bt as default};
diff --git a/web/settings/assets/bat-03b2886a.js b/web/settings/assets/bat-03b2886a.js
deleted file mode 100644
index acf1bef238..0000000000
--- a/web/settings/assets/bat-03b2886a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as p,l as d,D as n,N as a,y as s,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceSofarBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_sofar-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Sofar Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_sofar/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-743c3fdf.js b/web/settings/assets/bat-0535c59d.js
similarity index 69%
rename from web/settings/assets/bat-743c3fdf.js
rename to web/settings/assets/bat-0535c59d.js
index 7b8001ecf2..aff3418d21 100644
--- a/web/settings/assets/bat-743c3fdf.js
+++ b/web/settings/assets/bat-0535c59d.js
@@ -1 +1 @@
-import{_ as r,u as n,k as l,l as p,D as o,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-bat"},m={class:"small"};function b(e,t,h,g,v,y){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Speicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/bat.vue"]]);export{x as default};
+import{_ as l,u as n,k as r,l as p,D as o,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-bat"},m={class:"small"};function b(e,t,h,g,v,y){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Speicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-10c5131f.js b/web/settings/assets/bat-10c5131f.js
deleted file mode 100644
index bc556c00c3..0000000000
--- a/web/settings/assets/bat-10c5131f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/bat.vue"]]);export{B as default};
diff --git a/web/settings/assets/bat-6cf0ead4.js b/web/settings/assets/bat-11a9e662.js
similarity index 73%
rename from web/settings/assets/bat-6cf0ead4.js
rename to web/settings/assets/bat-11a9e662.js
index 267c8d5c1f..7088db8cc5 100644
--- a/web/settings/assets/bat-6cf0ead4.js
+++ b/web/settings/assets/bat-11a9e662.js
@@ -1 +1 @@
-import{_ as d,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const D=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/bat.vue"]]);export{D as default};
+import{_ as d,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const D=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-8c16e92a.js b/web/settings/assets/bat-210e6934.js
similarity index 90%
rename from web/settings/assets/bat-8c16e92a.js
rename to web/settings/assets/bat-210e6934.js
index 707ddf2139..f80de085e1 100644
--- a/web/settings/assets/bat-8c16e92a.js
+++ b/web/settings/assets/bat-210e6934.js
@@ -1 +1 @@
-import{_ as m,u,k as f,l as g,D as n,N as d,y as o,x as s,z as c}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return f(),g("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),w,o(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const y=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/bat.vue"]]);export{y as default};
+import{_ as m,u,k as g,l as f,D as n,N as d,y as o,x as s,z as c}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return g(),f("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),w,o(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const y=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{y as default};
diff --git a/web/settings/assets/bat-992c1fad.js b/web/settings/assets/bat-22e19627.js
similarity index 71%
rename from web/settings/assets/bat-992c1fad.js
rename to web/settings/assets/bat-22e19627.js
index 44186e2e49..cb6f21c3ff 100644
--- a/web/settings/assets/bat-992c1fad.js
+++ b/web/settings/assets/bat-22e19627.js
@@ -1 +1 @@
-import{_ as d,u as n,k as r,l as p,D as o,N as c,y as _,x as m,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return r(),p("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const D=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/bat.vue"]]);export{D as default};
+import{_ as d,u as n,k as p,l as r,D as o,N as c,y as _,x as b,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),b("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const D=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-2eaaeb62.js b/web/settings/assets/bat-2eaaeb62.js
deleted file mode 100644
index 4f7b129169..0000000000
--- a/web/settings/assets/bat-2eaaeb62.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as c,k as _,l as m,D as n,N as o,y as t,x as e,z as i}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),z=e("br",null,null,-1),W=e("span",{class:"text-info"},"123.45",-1),D=e("br",null,null,-1),N=e("br",null,null,-1),T=e("span",{class:"text-info"},"95",-1);function y(a,d,l,E,q,F){const r=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),u=c("openwb-base-alert");return _(),m("div",b,[n(r,null,{default:o(()=>[t(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),n(u,{subtype:"info"},{default:o(()=>[t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+i(l.componentId)+"/get/power",1)]),_:1}),g,t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,t(" Beispiel: "),B]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+i(l.componentId)+"/get/imported",1)]),_:1}),x,t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,t(" Beispiel: "),I]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+i(l.componentId)+"/get/exported",1)]),_:1}),w,t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),z,t(" Beispiel: "),W]),e("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t("openWB/set/bat/"+i(l.componentId)+"/get/soc",1)]),_:1}),D,t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),N,t(" Beispiel: "),T])])]),_:1})])}const C=p(h,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-af818069.js b/web/settings/assets/bat-2ec8a7b2.js
similarity index 90%
rename from web/settings/assets/bat-af818069.js
rename to web/settings/assets/bat-2ec8a7b2.js
index e2fba5b4e3..7ad3da3131 100644
--- a/web/settings/assets/bat-af818069.js
+++ b/web/settings/assets/bat-2ec8a7b2.js
@@ -1 +1 @@
-import{_ as r,u as t,k as c,l,D as o,N as p,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland-bat"},v={class:"small"};function h(n,e,a,y,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[o(i,null,{default:p(()=>[m(" Einstellungen für Sunny Island Batteriespeicher "),_("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const I=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/bat.vue"]]);export{I as default};
+import{_ as r,u as t,k as c,l,D as o,N as p,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland-bat"},v={class:"small"};function h(n,e,a,y,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[o(i,null,{default:p(()=>[m(" Einstellungen für Sunny Island Batteriespeicher "),_("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const I=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{I as default};
diff --git a/web/settings/assets/bat-e3476b6f.js b/web/settings/assets/bat-32c9f6fd.js
similarity index 91%
rename from web/settings/assets/bat-e3476b6f.js
rename to web/settings/assets/bat-32c9f6fd.js
index 667c225da8..13fbe4e6f2 100644
--- a/web/settings/assets/bat-e3476b6f.js
+++ b/web/settings/assets/bat-32c9f6fd.js
@@ -1 +1 @@
-import{_ as r,u as n,k as p,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/bat.vue"]]);export{x as default};
+import{_ as r,u as n,k as p,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-dde41be1.js b/web/settings/assets/bat-361f190b.js
similarity index 68%
rename from web/settings/assets/bat-dde41be1.js
rename to web/settings/assets/bat-361f190b.js
index 29f2844794..5de1158c69 100644
--- a/web/settings/assets/bat-dde41be1.js
+++ b/web/settings/assets/bat-361f190b.js
@@ -1 +1 @@
-import{_ as r,u as n,k as l,l as p,D as o,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/bat.vue"]]);export{x as default};
+import{_ as l,u as n,k as r,l as p,D as o,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/bat.vue"]]);export{q as default};
diff --git a/web/settings/assets/bat-e274125f.js b/web/settings/assets/bat-37aa8980.js
similarity index 82%
rename from web/settings/assets/bat-e274125f.js
rename to web/settings/assets/bat-37aa8980.js
index 2fd8488867..8c992212d7 100644
--- a/web/settings/assets/bat-e274125f.js
+++ b/web/settings/assets/bat-37aa8980.js
@@ -1 +1 @@
-import{_ as d,u as n,k as r,l as p,D as o,N as c,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return r(),p("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const D=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/bat.vue"]]);export{D as default};
+import{_ as d,u as n,k as p,l as r,D as o,N as c,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const D=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-a3dcba33.js b/web/settings/assets/bat-3e5d89d4.js
similarity index 54%
rename from web/settings/assets/bat-a3dcba33.js
rename to web/settings/assets/bat-3e5d89d4.js
index cedf8cdf50..d4e5b67e5b 100644
--- a/web/settings/assets/bat-a3dcba33.js
+++ b/web/settings/assets/bat-3e5d89d4.js
@@ -1 +1 @@
-import{_ as c,u as n,k as r,l as d,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/bat.vue"]]);export{x as default};
+import{_ as c,u as n,k as r,l as d,D as s,N as a,y as o,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[s(i,null,{default:a(()=>[o(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),s(p,{subtype:"info"},{default:a(()=>[o(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-4202cb7c.js b/web/settings/assets/bat-4202cb7c.js
deleted file mode 100644
index a1cfebe3aa..0000000000
--- a/web/settings/assets/bat-4202cb7c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as t,k as c,l,D as n,N as p,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSolisBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solis-bat"},v={class:"small"};function h(o,e,s,w,x,a){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für Solis Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-46611da3.js b/web/settings/assets/bat-46611da3.js
new file mode 100644
index 0000000000..cdc6884af1
--- /dev/null
+++ b/web/settings/assets/bat-46611da3.js
@@ -0,0 +1 @@
+import{_ as c,u as t,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,n,g,w,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/bat.vue"]]);export{B as default};
diff --git a/web/settings/assets/bat-07a8e221.js b/web/settings/assets/bat-4ce133fc.js
similarity index 74%
rename from web/settings/assets/bat-07a8e221.js
rename to web/settings/assets/bat-4ce133fc.js
index 2f3dec5ff8..0dbabc3cdb 100644
--- a/web/settings/assets/bat-07a8e221.js
+++ b/web/settings/assets/bat-4ce133fc.js
@@ -1 +1 @@
-import{_ as r,u as o,k as p,l as c,D as a,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},x={class:"small"};function w(t,e,i,M,B,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/bat.vue"]]);export{C as default};
+import{_ as r,u as o,k as p,l as c,D as a,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},w={class:"small"};function x(t,e,i,M,B,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=r(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-502cd078.js b/web/settings/assets/bat-502cd078.js
deleted file mode 100644
index b1b2f69ecc..0000000000
--- a/web/settings/assets/bat-502cd078.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as l,l as c,D as n,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(t,e,a,w,x,i){const s=o("openwb-base-heading"),d=o("openwb-base-number-input");return l(),c("div",g,[n(s,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(d,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-5a80b300.js b/web/settings/assets/bat-5a80b300.js
new file mode 100644
index 0000000000..88ef825870
--- /dev/null
+++ b/web/settings/assets/bat-5a80b300.js
@@ -0,0 +1 @@
+import{_ as c,u as o,k as p,l as d,D as n,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSofarBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sofar-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Sofar Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-0070e79c.js b/web/settings/assets/bat-5bb162c2.js
similarity index 67%
rename from web/settings/assets/bat-0070e79c.js
rename to web/settings/assets/bat-5bb162c2.js
index 64f7cef2bd..f13b232dfe 100644
--- a/web/settings/assets/bat-0070e79c.js
+++ b/web/settings/assets/bat-5bb162c2.js
@@ -1 +1 @@
-import{_ as c,u as n,k as p,l as d,D as o,N as a,y as s,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/bat.vue"]]);export{x as default};
+import{_ as c,u as o,k as p,l as d,D as n,N as a,y as s,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,w,v,h){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-7696fb32.js b/web/settings/assets/bat-5f5ccb07.js
similarity index 68%
rename from web/settings/assets/bat-7696fb32.js
rename to web/settings/assets/bat-5f5ccb07.js
index 46b541ed9a..b8a53d69c6 100644
--- a/web/settings/assets/bat-7696fb32.js
+++ b/web/settings/assets/bat-5f5ccb07.js
@@ -1 +1 @@
-import{_ as p,u as t,k as l,l as m,D as o,N as i,y as a,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSigenergyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},f={class:"device-sigenergy-bat"},v={class:"small"};function h(n,e,s,y,w,d){const r=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),m("div",f,[o(r,null,{default:i(()=>[a(" Einstellungen für Sigenergy Batteriespeicher "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>d.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[a(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const D=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/bat.vue"]]);export{D as default};
+import{_ as p,u as t,k as l,l as m,D as o,N as i,y as a,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSigenergyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},f={class:"device-sigenergy-bat"},v={class:"small"};function y(n,e,s,h,w,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für Sigenergy Batteriespeicher "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[a(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const D=p(b,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-00ebc725.js b/web/settings/assets/bat-669886fa.js
similarity index 60%
rename from web/settings/assets/bat-00ebc725.js
rename to web/settings/assets/bat-669886fa.js
index 77ee6b7808..8909a76bf6 100644
--- a/web/settings/assets/bat-00ebc725.js
+++ b/web/settings/assets/bat-669886fa.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/bat.vue"]]);export{x as default};
+import{_ as c,u as t,k as d,l as p,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-03f52267.js b/web/settings/assets/bat-6ec0726a.js
similarity index 61%
rename from web/settings/assets/bat-03f52267.js
rename to web/settings/assets/bat-6ec0726a.js
index f246c2cbd6..3a96ea9f5c 100644
--- a/web/settings/assets/bat-03f52267.js
+++ b/web/settings/assets/bat-6ec0726a.js
@@ -1 +1 @@
-import{_ as c,u as n,k as p,l as d,D as o,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceZCSBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_zcs"},m={class:"small"};function b(e,t,g,h,v,z){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Azzurro ZCS Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/bat.vue"]]);export{$ as default};
+import{_ as c,u as n,k as p,l as u,D as o,N as s,y as a,x as d,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceZCSBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_zcs"},m={class:"small"};function b(e,t,z,g,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Azzurro ZCS Batteriespeicher "),d("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-f0682b3b.js b/web/settings/assets/bat-70713ff4.js
similarity index 83%
rename from web/settings/assets/bat-f0682b3b.js
rename to web/settings/assets/bat-70713ff4.js
index f2c1cf1a7a..33a9f562dd 100644
--- a/web/settings/assets/bat-f0682b3b.js
+++ b/web/settings/assets/bat-70713ff4.js
@@ -1 +1 @@
-import{_ as c,u as o,k as d,l as p,D as n,N as a,y as s,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,h,v,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/bat.vue"]]);export{$ as default};
+import{_ as c,u as o,k as d,l as p,D as n,N as a,y as s,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,x,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-cd57b824.js b/web/settings/assets/bat-7a8901e4.js
similarity index 92%
rename from web/settings/assets/bat-cd57b824.js
rename to web/settings/assets/bat-7a8901e4.js
index e4b2f3215e..1380325b4b 100644
--- a/web/settings/assets/bat-cd57b824.js
+++ b/web/settings/assets/bat-7a8901e4.js
@@ -1 +1 @@
-import{_ as r,u as t,k as c,l as p,D as n,N as l,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFoxEssBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-fox_ess-bat"},v={class:"small"};function x(o,e,s,h,w,a){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für FoxEss Batteriespeicher "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/bat.vue"]]);export{D as default};
+import{_ as r,u as t,k as c,l as p,D as n,N as l,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFoxEssBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-fox_ess-bat"},v={class:"small"};function x(o,e,s,h,w,a){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für FoxEss Batteriespeicher "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-a6d57bec.js b/web/settings/assets/bat-7cf44039.js
similarity index 94%
rename from web/settings/assets/bat-a6d57bec.js
rename to web/settings/assets/bat-7cf44039.js
index e3286bedd0..6dbba908a3 100644
--- a/web/settings/assets/bat-a6d57bec.js
+++ b/web/settings/assets/bat-7cf44039.js
@@ -1 +1 @@
-import{_ as d,u as o,k as c,l as p,D as n,N as l,y as m,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceHuaweiSmartLoggerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"device-huawei-smart-logger-bat"},v={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),p("div",f,[n(s,null,{default:l(()=>[m(" Einstellungen für Huawei SmartLogger Batteriespeicher "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/bat.vue"]]);export{D as default};
+import{_ as d,u as o,k as c,l as p,D as n,N as l,y as m,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceHuaweiSmartLoggerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"device-huawei-smart-logger-bat"},v={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),p("div",f,[n(s,null,{default:l(()=>[m(" Einstellungen für Huawei SmartLogger Batteriespeicher "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-d619a60e.js b/web/settings/assets/bat-7e961860.js
similarity index 59%
rename from web/settings/assets/bat-d619a60e.js
rename to web/settings/assets/bat-7e961860.js
index 5be5c45356..43c9ee3593 100644
--- a/web/settings/assets/bat-d619a60e.js
+++ b/web/settings/assets/bat-7e961860.js
@@ -1 +1 @@
-import{_ as d,u as t,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const E=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/bat.vue"]]);export{E as default};
+import{_ as d,u as t,k as c,l as p,D as o,N as l,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(i,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher "),f("span",v,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const E=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-12d70573.js b/web/settings/assets/bat-7f5835ff.js
similarity index 80%
rename from web/settings/assets/bat-12d70573.js
rename to web/settings/assets/bat-7f5835ff.js
index dbc110e334..208fff2232 100644
--- a/web/settings/assets/bat-12d70573.js
+++ b/web/settings/assets/bat-7f5835ff.js
@@ -1 +1 @@
-import{_ as r,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceDeyeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-deye-bat"},v={class:"small"};function h(t,e,a,y,w,i){const s=n("openwb-base-heading"),d=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Deye Batteriespeicher "),_("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/bat.vue"]]);export{D as default};
+import{_ as r,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceDeyeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-deye-bat"},v={class:"small"};function y(t,e,a,h,w,i){const s=n("openwb-base-heading"),d=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Deye Batteriespeicher "),_("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-fbd92ad1.js b/web/settings/assets/bat-84a37ddf.js
similarity index 90%
rename from web/settings/assets/bat-fbd92ad1.js
rename to web/settings/assets/bat-84a37ddf.js
index ed2702a76e..516cce319d 100644
--- a/web/settings/assets/bat-fbd92ad1.js
+++ b/web/settings/assets/bat-84a37ddf.js
@@ -1 +1 @@
-import{_ as r,u as n,k as p,l as d,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/bat.vue"]]);export{x as default};
+import{_ as r,u as n,k as p,l as d,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-86050b21.js b/web/settings/assets/bat-86050b21.js
new file mode 100644
index 0000000000..5fe326695a
--- /dev/null
+++ b/web/settings/assets/bat-86050b21.js
@@ -0,0 +1 @@
+import{_ as r,u as t,k as l,l as c,D as n,N as p,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSolisBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solis-bat"},v={class:"small"};function h(o,e,s,w,x,i){const a=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),c("div",g,[n(a,null,{default:p(()=>[m(" Einstellungen für Solis Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-abfe5184.js b/web/settings/assets/bat-93b96b73.js
similarity index 72%
rename from web/settings/assets/bat-abfe5184.js
rename to web/settings/assets/bat-93b96b73.js
index 93a3d07118..ba9b124316 100644
--- a/web/settings/assets/bat-abfe5184.js
+++ b/web/settings/assets/bat-93b96b73.js
@@ -1 +1 @@
-import{_ as p,u as n,k as m,l as _,D as o,N as a,y as s,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},v={class:"small"};function x(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const y=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/bat.vue"]]);export{y as default};
+import{_ as p,u as n,k as m,l as _,D as o,N as a,y as s,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},x={class:"small"};function v(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const y=p(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{y as default};
diff --git a/web/settings/assets/bat-a18245a1.js b/web/settings/assets/bat-960570d8.js
similarity index 89%
rename from web/settings/assets/bat-a18245a1.js
rename to web/settings/assets/bat-960570d8.js
index b2703c2491..7dcbcd2243 100644
--- a/web/settings/assets/bat-a18245a1.js
+++ b/web/settings/assets/bat-960570d8.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/bat.vue"]]);export{x as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-fa44fb17.js b/web/settings/assets/bat-a2809c14.js
similarity index 73%
rename from web/settings/assets/bat-fa44fb17.js
rename to web/settings/assets/bat-a2809c14.js
index 1b7a3ed786..4deb2f7862 100644
--- a/web/settings/assets/bat-fa44fb17.js
+++ b/web/settings/assets/bat-a2809c14.js
@@ -1 +1 @@
-import{_ as u,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,a,w,x,i){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/bat.vue"]]);export{C as default};
+import{_ as u,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>a.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-ced626fd.js b/web/settings/assets/bat-a51c89dc.js
similarity index 70%
rename from web/settings/assets/bat-ced626fd.js
rename to web/settings/assets/bat-a51c89dc.js
index 4af6104e68..cd5670c0ae 100644
--- a/web/settings/assets/bat-ced626fd.js
+++ b/web/settings/assets/bat-a51c89dc.js
@@ -1 +1 @@
-import{_ as r,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const D=r(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/bat.vue"]]);export{D as default};
+import{_ as d,u as n,k as r,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const D=d(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-a89d2c6d.js b/web/settings/assets/bat-a89d2c6d.js
new file mode 100644
index 0000000000..a5cb203bb5
--- /dev/null
+++ b/web/settings/assets/bat-a89d2c6d.js
@@ -0,0 +1 @@
+import{_ as p,u as c,k as _,l as m,D as t,N as o,y as n,x as e,z as i}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),z=e("br",null,null,-1),W=e("span",{class:"text-info"},"123.45",-1),D=e("br",null,null,-1),N=e("br",null,null,-1),T=e("span",{class:"text-info"},"95",-1);function y(a,d,l,E,q,F){const r=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),u=c("openwb-base-alert");return _(),m("div",b,[t(r,null,{default:o(()=>[n(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),t(u,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+i(l.componentId)+"/get/power",1)]),_:1}),g,n(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,n(" Beispiel: "),B]),e("li",null,[t(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+i(l.componentId)+"/get/imported",1)]),_:1}),x,n(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,n(" Beispiel: "),I]),e("li",null,[t(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+i(l.componentId)+"/get/exported",1)]),_:1}),w,n(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),z,n(" Beispiel: "),W]),e("li",null,[t(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+i(l.componentId)+"/get/soc",1)]),_:1}),D,n(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),N,n(" Beispiel: "),T])])]),_:1})])}const C=p(h,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-fa2d3a69.js b/web/settings/assets/bat-ab2534e0.js
similarity index 82%
rename from web/settings/assets/bat-fa2d3a69.js
rename to web/settings/assets/bat-ab2534e0.js
index 00c15dec7a..805487ef18 100644
--- a/web/settings/assets/bat-fa2d3a69.js
+++ b/web/settings/assets/bat-ab2534e0.js
@@ -1 +1 @@
-import{_ as p,u as o,k as c,l as d,D as n,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,g,w,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/bat.vue"]]);export{$ as default};
+import{_ as p,u as o,k as c,l as d,D as n,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,w,g,x,h){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-5425fafc.js b/web/settings/assets/bat-ba0e681b.js
similarity index 62%
rename from web/settings/assets/bat-5425fafc.js
rename to web/settings/assets/bat-ba0e681b.js
index 9a7ec40b15..87dae59872 100644
--- a/web/settings/assets/bat-5425fafc.js
+++ b/web/settings/assets/bat-ba0e681b.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/bat.vue"]]);export{x as default};
+import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,w,g,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-6181c19b.js b/web/settings/assets/bat-c023ee7d.js
similarity index 92%
rename from web/settings/assets/bat-6181c19b.js
rename to web/settings/assets/bat-c023ee7d.js
index bb259f5048..713053360d 100644
--- a/web/settings/assets/bat-6181c19b.js
+++ b/web/settings/assets/bat-c023ee7d.js
@@ -1 +1 @@
-import{_ as r,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer-bat"},v={class:"small"};function h(t,e,a,w,x,s){const i=n("openwb-base-heading"),d=n("openwb-base-number-input");return c(),p("div",g,[o(i,null,{default:l(()=>[m(" Einstellungen für Studer Batteriespeicher "),_("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/bat.vue"]]);export{D as default};
+import{_ as r,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer-bat"},v={class:"small"};function h(t,e,a,w,x,s){const i=n("openwb-base-heading"),d=n("openwb-base-number-input");return c(),p("div",g,[o(i,null,{default:l(()=>[m(" Einstellungen für Studer Batteriespeicher "),_("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-5521391f.js b/web/settings/assets/bat-c1bb93e7.js
similarity index 66%
rename from web/settings/assets/bat-5521391f.js
rename to web/settings/assets/bat-c1bb93e7.js
index f969d8d65e..4a2b1224b9 100644
--- a/web/settings/assets/bat-5521391f.js
+++ b/web/settings/assets/bat-c1bb93e7.js
@@ -1 +1 @@
-import{_ as r,u as n,k as p,l,D as o,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),l("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/bat.vue"]]);export{$ as default};
+import{_ as r,u as o,k as p,l,D as n,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=o("openwb-base-heading"),c=o("openwb-base-alert");return p(),l("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-a0fe622c.js b/web/settings/assets/bat-c2e3bd93.js
similarity index 62%
rename from web/settings/assets/bat-a0fe622c.js
rename to web/settings/assets/bat-c2e3bd93.js
index 1f129e935f..4b918a7ee3 100644
--- a/web/settings/assets/bat-a0fe622c.js
+++ b/web/settings/assets/bat-c2e3bd93.js
@@ -1 +1 @@
-import{_ as c,u as o,k as r,l as p,D as n,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/bat.vue"]]);export{x as default};
+import{_ as c,u as o,k as r,l as p,D as n,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-ca879aa3.js b/web/settings/assets/bat-ca879aa3.js
new file mode 100644
index 0000000000..9b29037c44
--- /dev/null
+++ b/web/settings/assets/bat-ca879aa3.js
@@ -0,0 +1 @@
+import{_ as u,u as t,k as l,l as c,D as n,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),c("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(d,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-cccaeec9.js b/web/settings/assets/bat-e2b4a6f2.js
similarity index 90%
rename from web/settings/assets/bat-cccaeec9.js
rename to web/settings/assets/bat-e2b4a6f2.js
index 86f831bfbf..993809056d 100644
--- a/web/settings/assets/bat-cccaeec9.js
+++ b/web/settings/assets/bat-e2b4a6f2.js
@@ -1 +1 @@
-import{_ as r,u as o,k as c,l as p,D as t,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyboy-bat"},v={class:"small"};function y(n,e,a,B,h,s){const i=o("openwb-base-heading"),u=o("openwb-base-number-input");return c(),p("div",g,[t(i,null,{default:l(()=>[m(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher "),_("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=r(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat.vue"]]);export{C as default};
+import{_ as r,u as o,k as c,l as p,D as t,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyboy-bat"},v={class:"small"};function y(n,e,a,B,h,s){const i=o("openwb-base-heading"),u=o("openwb-base-number-input");return c(),p("div",g,[t(i,null,{default:l(()=>[m(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher "),_("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=r(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-69046b0c.js b/web/settings/assets/bat-ea7043ef.js
similarity index 90%
rename from web/settings/assets/bat-69046b0c.js
rename to web/settings/assets/bat-ea7043ef.js
index e359c67bca..5812073de1 100644
--- a/web/settings/assets/bat-69046b0c.js
+++ b/web/settings/assets/bat-ea7043ef.js
@@ -1 +1 @@
-import{_ as r,u as n,k as p,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/bat.vue"]]);export{x as default};
+import{_ as r,u as n,k as p,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-31e29792.js b/web/settings/assets/bat-edeea5ab.js
similarity index 82%
rename from web/settings/assets/bat-31e29792.js
rename to web/settings/assets/bat-edeea5ab.js
index 26ba170519..db8ce52ff3 100644
--- a/web/settings/assets/bat-31e29792.js
+++ b/web/settings/assets/bat-edeea5ab.js
@@ -1 +1 @@
-import{_ as c,u as n,k as p,l as d,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/bat.vue"]]);export{$ as default};
+import{_ as c,u as n,k as p,l as d,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-12bba3ed.js b/web/settings/assets/bat-f0d9c44f.js
similarity index 96%
rename from web/settings/assets/bat-12bba3ed.js
rename to web/settings/assets/bat-f0d9c44f.js
index 7c1157d4c8..2d8805bc64 100644
--- a/web/settings/assets/bat-12bba3ed.js
+++ b/web/settings/assets/bat-f0d9c44f.js
@@ -1 +1 @@
-import{_ as p,u as o,k as m,l as _,D as a,N as u,y as d,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceMTecBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-mtec-bat"},w={class:"small"};function x(t,e,i,h,B,s){const r=o("openwb-base-heading"),l=o("openwb-base-select-input"),c=o("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für M-Tec Batteriespeicher "),b("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":i.configuration.generation,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),a(c,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const C=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/bat.vue"]]);export{C as default};
+import{_ as p,u as o,k as m,l as _,D as a,N as u,y as d,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceMTecBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-mtec-bat"},w={class:"small"};function x(t,e,i,h,B,s){const r=o("openwb-base-heading"),l=o("openwb-base-select-input"),c=o("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für M-Tec Batteriespeicher "),b("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":i.configuration.generation,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),a(c,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const C=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-1eb4a7db.js b/web/settings/assets/bat-f21d8d0a.js
similarity index 98%
rename from web/settings/assets/bat-1eb4a7db.js
rename to web/settings/assets/bat-f21d8d0a.js
index 8fc9661dd8..9a5bb72640 100644
--- a/web/settings/assets/bat-1eb4a7db.js
+++ b/web/settings/assets/bat-f21d8d0a.js
@@ -1 +1 @@
-import{_ as h,u,k as p,l as c,D as i,N as r,y as t,x as a,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},f={class:"device-http-bat"},b={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),z=a("br",null,null,-1),S=a("br",null,null,-1);function x(s,e,l,Z,D,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",f,[i(m,null,{default:r(()=>[t(" Einstellungen für Http Batteriespeicher "),a("span",b,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),S,t(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const A=h(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/bat.vue"]]);export{A as default};
+import{_ as h,u,k as p,l as c,D as i,N as r,y as t,x as a,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},f={class:"device-http-bat"},b={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),z=a("br",null,null,-1),S=a("br",null,null,-1);function x(s,e,l,Z,D,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",f,[i(m,null,{default:r(()=>[t(" Einstellungen für Http Batteriespeicher "),a("span",b,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),S,t(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const A=h(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{A as default};
diff --git a/web/settings/assets/bat-15d35f20.js b/web/settings/assets/bat-fae6736a.js
similarity index 90%
rename from web/settings/assets/bat-15d35f20.js
rename to web/settings/assets/bat-fae6736a.js
index ea1df22d15..728c8c14c3 100644
--- a/web/settings/assets/bat-15d35f20.js
+++ b/web/settings/assets/bat-fae6736a.js
@@ -1 +1 @@
-import{_ as d,u as n,k as r,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/bat.vue"]]);export{x as default};
+import{_ as d,u as n,k as r,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat_api-c6cfe543.js b/web/settings/assets/bat_api-04666400.js
similarity index 61%
rename from web/settings/assets/bat_api-c6cfe543.js
rename to web/settings/assets/bat_api-04666400.js
index cf5d77c648..26352664a4 100644
--- a/web/settings/assets/bat_api-c6cfe543.js
+++ b/web/settings/assets/bat_api-04666400.js
@@ -1 +1 @@
-import{_ as c,u as n,k as p,l as d,D as a,N as o,y as s,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[a(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_api.vue"]]);export{x as default};
+import{_ as c,u as a,k as p,l as d,D as n,N as o,y as s,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,v,g,h,w){const i=a("openwb-base-heading"),r=a("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/bat_api.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat_modbus-06ac44e9.js b/web/settings/assets/bat_modbus-ffbf71f1.js
similarity index 81%
rename from web/settings/assets/bat_modbus-06ac44e9.js
rename to web/settings/assets/bat_modbus-ffbf71f1.js
index 59c9964ff6..3f96b8478c 100644
--- a/web/settings/assets/bat_modbus-06ac44e9.js
+++ b/web/settings/assets/bat_modbus-ffbf71f1.js
@@ -1 +1 @@
-import{_ as d,u as n,k as c,l as p,D as o,N as a,y as s,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/bat_modbus.vue"]]);export{x as default};
+import{_ as d,u as n,k as c,l as p,D as o,N as a,y as s,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/bat_modbus.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat_smart_energy-c274185e.js b/web/settings/assets/bat_smart_energy-8a31af27.js
similarity index 75%
rename from web/settings/assets/bat_smart_energy-c274185e.js
rename to web/settings/assets/bat_smart_energy-8a31af27.js
index 83a2416124..a5c6b3f343 100644
--- a/web/settings/assets/bat_smart_energy-c274185e.js
+++ b/web/settings/assets/bat_smart_energy-8a31af27.js
@@ -1 +1 @@
-import{_ as d,u as t,k as c,l as p,D as o,N as m,y as _,x as l,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyboy-bat-smart-energy"},y={class:"small"};function v(n,e,a,B,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(i,null,{default:m(()=>[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher "),l("span",y,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const S=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/bat_smart_energy.vue"]]);export{S as default};
+import{_ as d,u as t,k as c,l as m,D as o,N as p,y as _,x as l,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyboy-bat-smart-energy"},y={class:"small"};function v(n,e,a,B,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),m("div",g,[o(i,null,{default:p(()=>[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher "),l("span",y,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const S=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{S as default};
diff --git a/web/settings/assets/consumption_counter-7ddecd31.js b/web/settings/assets/consumption_counter-e19fcdd5.js
similarity index 95%
rename from web/settings/assets/consumption_counter-7ddecd31.js
rename to web/settings/assets/consumption_counter-e19fcdd5.js
index a91a88c22a..58dd085cb8 100644
--- a/web/settings/assets/consumption_counter-7ddecd31.js
+++ b/web/settings/assets/consumption_counter-e19fcdd5.js
@@ -1 +1 @@
-import{_ as m,u as n,k as _,l as b,D as t,N as u,y as l,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenwbFlexConsumptionCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},h={class:"device-openwb-flex-consumption-counter"},w={class:"small"};function x(o,e,s,B,D,a){const d=n("openwb-base-heading"),r=n("openwb-base-alert"),p=n("openwb-base-select-input"),c=n("openwb-base-number-input");return _(),b("div",h,[t(d,null,{default:u(()=>[l(" Einstellungen für openWB-Flex Verbrauchszähler "),f("span",w,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:u(()=>[l(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")]),_:1}),t(p,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":s.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=i=>a.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(c,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":s.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>a.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const C=m(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/consumption_counter.vue"]]);export{C as default};
+import{_ as m,u as n,k as _,l as b,D as t,N as u,y as l,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenwbFlexConsumptionCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},h={class:"device-openwb-flex-consumption-counter"},w={class:"small"};function x(o,e,s,B,D,a){const d=n("openwb-base-heading"),r=n("openwb-base-alert"),p=n("openwb-base-select-input"),c=n("openwb-base-number-input");return _(),b("div",h,[t(d,null,{default:u(()=>[l(" Einstellungen für openWB-Flex Verbrauchszähler "),f("span",w,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:u(()=>[l(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")]),_:1}),t(p,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":s.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=i=>a.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(c,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":s.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>a.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const C=m(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-50558177.js b/web/settings/assets/counter-031b0305.js
similarity index 94%
rename from web/settings/assets/counter-50558177.js
rename to web/settings/assets/counter-031b0305.js
index 044f68ce5e..492bcd20ee 100644
--- a/web/settings/assets/counter-50558177.js
+++ b/web/settings/assets/counter-031b0305.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l,D as n,N as s,y as a,x as u,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),u("span",m,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/counter.vue"]]);export{k as default};
+import{_ as c,u as t,k as d,l,D as n,N as s,y as a,x as u,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),u("span",m,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-3430ef92.js b/web/settings/assets/counter-0bf7d9a6.js
similarity index 94%
rename from web/settings/assets/counter-3430ef92.js
rename to web/settings/assets/counter-0bf7d9a6.js
index eb270879b4..d5b41dca53 100644
--- a/web/settings/assets/counter-3430ef92.js
+++ b/web/settings/assets/counter-0bf7d9a6.js
@@ -1 +1 @@
-import{_ as d,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const D=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/counter.vue"]]);export{D as default};
+import{_ as d,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const D=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-e32214a7.js b/web/settings/assets/counter-0f65c1e3.js
similarity index 76%
rename from web/settings/assets/counter-e32214a7.js
rename to web/settings/assets/counter-0f65c1e3.js
index 3bccfe1cc0..926fc769a3 100644
--- a/web/settings/assets/counter-e32214a7.js
+++ b/web/settings/assets/counter-0f65c1e3.js
@@ -1 +1 @@
-import{_ as d,u as t,k as c,l,D as n,N as p,y as m,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceHuaweiSmartLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-huawei-smart-logger-counter"},v={class:"small"};function w(o,e,a,h,x,i){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),l("div",b,[n(s,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Zähler "),_("span",v,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/counter.vue"]]);export{D as default};
+import{_ as d,u as t,k as c,l,D as n,N as p,y as m,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceHuaweiSmartLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-huawei-smart-logger-counter"},v={class:"small"};function w(o,e,a,h,x,i){const s=t("openwb-base-heading"),u=t("openwb-base-number-input");return c(),l("div",b,[n(s,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Zähler "),_("span",v,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const D=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-10685234.js b/web/settings/assets/counter-10685234.js
deleted file mode 100644
index e4c7184bcb..0000000000
--- a/web/settings/assets/counter-10685234.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für BatterX Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-b55f01eb.js b/web/settings/assets/counter-132a4c95.js
similarity index 93%
rename from web/settings/assets/counter-b55f01eb.js
rename to web/settings/assets/counter-132a4c95.js
index d70a57cf38..f59e549b70 100644
--- a/web/settings/assets/counter-b55f01eb.js
+++ b/web/settings/assets/counter-132a4c95.js
@@ -1 +1 @@
-import{_,u as n,k as m,l as b,D as t,N as u,y as l,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},w={class:"device-openwb-flex-counter"},h={class:"small"};function x(o,e,i,M,B,s){const d=n("openwb-base-heading"),r=n("openwb-base-alert"),p=n("openwb-base-select-input"),c=n("openwb-base-number-input");return m(),b("div",w,[t(d,null,{default:u(()=>[l(" Einstellungen für openWB-Flex Zähler "),f("span",h,"(Modul: "+v(o.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:u(()=>[l(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")]),_:1}),t(p,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=a=>s.updateConfiguration(a,"configuration.version"))},null,8,["model-value"]),t(c,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=a=>s.updateConfiguration(a,"configuration.id"))},null,8,["model-value"])])}const C=_(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/counter.vue"]]);export{C as default};
+import{_,u as n,k as m,l as b,D as t,N as u,y as l,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},w={class:"device-openwb-flex-counter"},h={class:"small"};function x(o,e,i,M,B,s){const d=n("openwb-base-heading"),r=n("openwb-base-alert"),p=n("openwb-base-select-input"),c=n("openwb-base-number-input");return m(),b("div",w,[t(d,null,{default:u(()=>[l(" Einstellungen für openWB-Flex Zähler "),f("span",h,"(Modul: "+v(o.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:u(()=>[l(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")]),_:1}),t(p,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=a=>s.updateConfiguration(a,"configuration.version"))},null,8,["model-value"]),t(c,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=a=>s.updateConfiguration(a,"configuration.id"))},null,8,["model-value"])])}const C=_(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-e306bbd8.js b/web/settings/assets/counter-147bcc09.js
similarity index 75%
rename from web/settings/assets/counter-e306bbd8.js
rename to web/settings/assets/counter-147bcc09.js
index 5c6e4d14c4..76ca2684ec 100644
--- a/web/settings/assets/counter-e306bbd8.js
+++ b/web/settings/assets/counter-147bcc09.js
@@ -1 +1 @@
-import{_ as c,u as n,k as l,l as u,D as o,N as s,y as a,x as d,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-counter"},m={class:"small"};function b(e,t,h,g,v,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Zähler "),d("span",m,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/counter.vue"]]);export{x as default};
+import{_ as c,u as n,k as l,l as u,D as o,N as s,y as a,x as d,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-counter"},m={class:"small"};function h(e,t,b,g,v,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Zähler "),d("span",m,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{x as default};
diff --git a/web/settings/assets/counter-f98b9cbf.js b/web/settings/assets/counter-15bbcc8d.js
similarity index 80%
rename from web/settings/assets/counter-f98b9cbf.js
rename to web/settings/assets/counter-15bbcc8d.js
index 2689601cfc..150b4199e3 100644
--- a/web/settings/assets/counter-f98b9cbf.js
+++ b/web/settings/assets/counter-15bbcc8d.js
@@ -1 +1 @@
-import{_ as r,u as o,k as c,l as p,D as t,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceDeyeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-deye-counter"},v={class:"small"};function h(n,e,a,y,w,i){const s=o("openwb-base-heading"),u=o("openwb-base-number-input");return c(),p("div",g,[t(s,null,{default:l(()=>[m(" Einstellungen für Deye Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/counter.vue"]]);export{C as default};
+import{_ as r,u as o,k as c,l as p,D as t,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceDeyeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-deye-counter"},v={class:"small"};function y(n,e,a,h,w,i){const s=o("openwb-base-heading"),u=o("openwb-base-number-input");return c(),p("div",g,[t(s,null,{default:l(()=>[m(" Einstellungen für Deye Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=r(b,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-160f6b42.js b/web/settings/assets/counter-160f6b42.js
deleted file mode 100644
index b508bc0175..0000000000
--- a/web/settings/assets/counter-160f6b42.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l as u,D as o,N as a,y as s,x as l,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:a(()=>[s(" Einstellungen für Tesla Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-ccf41c41.js b/web/settings/assets/counter-16ad21fd.js
similarity index 58%
rename from web/settings/assets/counter-ccf41c41.js
rename to web/settings/assets/counter-16ad21fd.js
index 7f5bc1813f..1a102e1798 100644
--- a/web/settings/assets/counter-ccf41c41.js
+++ b/web/settings/assets/counter-16ad21fd.js
@@ -1 +1 @@
-import{_ as c,u as t,k as u,l as d,D as n,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,z,h){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/counter.vue"]]);export{$ as default};
+import{_ as c,u as t,k as u,l as d,D as a,N as n,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,z,h){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[a(i,null,{default:n(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:n(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-17ea177d.js b/web/settings/assets/counter-17ea177d.js
new file mode 100644
index 0000000000..14acf83a93
--- /dev/null
+++ b/web/settings/assets/counter-17ea177d.js
@@ -0,0 +1 @@
+import{_ as u,u as n,k as c,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,w,g,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-1aa978fe.js b/web/settings/assets/counter-1aa978fe.js
deleted file mode 100644
index 40f22d3ab3..0000000000
--- a/web/settings/assets/counter-1aa978fe.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as u,l as d,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSofarCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-azzurro_sofar-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return u(),d("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für Sofar ESS Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_sofar/counter.vue"]]);export{z as default};
diff --git a/web/settings/assets/counter-be7695ff.js b/web/settings/assets/counter-2131ddbc.js
similarity index 82%
rename from web/settings/assets/counter-be7695ff.js
rename to web/settings/assets/counter-2131ddbc.js
index 1262671ce6..508b2c0529 100644
--- a/web/settings/assets/counter-be7695ff.js
+++ b/web/settings/assets/counter-2131ddbc.js
@@ -1 +1 @@
-import{_ as r,u as n,k as l,l as u,D as o,N as s,y as a,x as d,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),d("span",m,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/counter.vue"]]);export{x as default};
+import{_ as r,u as n,k as l,l as u,D as o,N as s,y as a,x as d,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),d("span",m,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/counter.vue"]]);export{q as default};
diff --git a/web/settings/assets/counter-e6c4238b.js b/web/settings/assets/counter-214fbb40.js
similarity index 69%
rename from web/settings/assets/counter-e6c4238b.js
rename to web/settings/assets/counter-214fbb40.js
index 0c31aa4b62..aad28f413c 100644
--- a/web/settings/assets/counter-e6c4238b.js
+++ b/web/settings/assets/counter-214fbb40.js
@@ -1 +1 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/counter.vue"]]);export{V as default};
+import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,v,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return u(),d("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-7dd04de5.js b/web/settings/assets/counter-27d4acde.js
similarity index 74%
rename from web/settings/assets/counter-7dd04de5.js
rename to web/settings/assets/counter-27d4acde.js
index 5bb09c3918..df78021059 100644
--- a/web/settings/assets/counter-7dd04de5.js
+++ b/web/settings/assets/counter-27d4acde.js
@@ -1 +1 @@
-import{_ as c,u as n,k as p,l as u,D as o,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/counter.vue"]]);export{k as default};
+import{_ as c,u as n,k as p,l as u,D as o,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function h(e,t,b,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-94b37ec5.js b/web/settings/assets/counter-2844dfce.js
similarity index 90%
rename from web/settings/assets/counter-94b37ec5.js
rename to web/settings/assets/counter-2844dfce.js
index 6567f29cbc..aa466948b1 100644
--- a/web/settings/assets/counter-94b37ec5.js
+++ b/web/settings/assets/counter-2844dfce.js
@@ -1 +1 @@
-import{_ as r,u as n,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/counter.vue"]]);export{C as default};
+import{_ as r,u as n,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-c9a9f709.js b/web/settings/assets/counter-30a3ca76.js
similarity index 79%
rename from web/settings/assets/counter-c9a9f709.js
rename to web/settings/assets/counter-30a3ca76.js
index 62f1ba7b65..6c917a9f3c 100644
--- a/web/settings/assets/counter-c9a9f709.js
+++ b/web/settings/assets/counter-30a3ca76.js
@@ -1 +1 @@
-import{_ as p,u as o,k as l,l as m,D as t,N as i,y as s,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSigenergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sigenergy-counter"},v={class:"small"};function h(n,e,a,y,w,r){const u=o("openwb-base-heading"),d=o("openwb-base-number-input");return l(),m("div",b,[t(u,null,{default:i(()=>[s(" Einstellungen für Sigenergy Zähler "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),t(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const C=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/counter.vue"]]);export{C as default};
+import{_ as p,u as o,k as l,l as m,D as t,N as i,y as s,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSigenergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sigenergy-counter"},v={class:"small"};function y(n,e,a,h,w,r){const u=o("openwb-base-heading"),d=o("openwb-base-number-input");return l(),m("div",b,[t(u,null,{default:i(()=>[s(" Einstellungen für Sigenergy Zähler "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),t(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const C=p(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-95d74ce1.js b/web/settings/assets/counter-32ed9eb1.js
similarity index 78%
rename from web/settings/assets/counter-95d74ce1.js
rename to web/settings/assets/counter-32ed9eb1.js
index f7c03c4794..748c036bed 100644
--- a/web/settings/assets/counter-95d74ce1.js
+++ b/web/settings/assets/counter-32ed9eb1.js
@@ -1 +1 @@
-import{_ as u,u as r,k as c,l as d,D as s,N as a,y as e,x as t,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,o=void 0){this.$emit("update:configuration",{value:n,object:o})}}},h={class:"device-solar_log-counter"},m={class:"small"},g=t("span",{class:"text-danger"},[e(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),t("br")],-1),f=t("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1);function b(n,o,v,k,w,Z){const i=r("openwb-base-heading"),l=r("openwb-base-alert");return c(),d("div",h,[s(i,null,{default:a(()=>[e(" Einstellungen für Solar-Log Zähler "),t("span",m,"(Modul: "+p(n.$options.name)+")",1)]),_:1}),s(l,{subtype:"info"},{default:a(()=>[g,e(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),f,e(". ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/counter.vue"]]);export{B as default};
+import{_ as u,u as r,k as c,l as d,D as s,N as a,y as e,x as t,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,n=void 0){this.$emit("update:configuration",{value:o,object:n})}}},h={class:"device-solar_log-counter"},m={class:"small"},g=t("span",{class:"text-danger"},[e(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),t("br")],-1),f=t("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1);function b(o,n,v,k,w,Z){const i=r("openwb-base-heading"),l=r("openwb-base-alert");return c(),d("div",h,[s(i,null,{default:a(()=>[e(" Einstellungen für Solar-Log Zähler "),t("span",m,"(Modul: "+p(o.$options.name)+")",1)]),_:1}),s(l,{subtype:"info"},{default:a(()=>[g,e(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),f,e(". ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{B as default};
diff --git a/web/settings/assets/counter-246eef5f.js b/web/settings/assets/counter-39a750b6.js
similarity index 66%
rename from web/settings/assets/counter-246eef5f.js
rename to web/settings/assets/counter-39a750b6.js
index 7254d5fb5c..b9b5daa53e 100644
--- a/web/settings/assets/counter-246eef5f.js
+++ b/web/settings/assets/counter-39a750b6.js
@@ -1 +1 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,v,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return u(),d("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const y=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/counter.vue"]]);export{y as default};
+import{_ as c,u as o,k as u,l as d,D as n,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,w,v,h){const r=o("openwb-base-heading"),i=o("openwb-base-alert");return u(),d("div",f,[n(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const y=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/counter.vue"]]);export{y as default};
diff --git a/web/settings/assets/counter-43080cd3.js b/web/settings/assets/counter-3b17cd0a.js
similarity index 83%
rename from web/settings/assets/counter-43080cd3.js
rename to web/settings/assets/counter-3b17cd0a.js
index a165e4f85d..fa7db71a77 100644
--- a/web/settings/assets/counter-43080cd3.js
+++ b/web/settings/assets/counter-3b17cd0a.js
@@ -1 +1 @@
-import{_ as c,u as t,k as u,l as p,D as n,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/counter.vue"]]);export{x as default};
+import{_ as c,u as t,k as u,l as p,D as n,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,k,v,g){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{x as default};
diff --git a/web/settings/assets/counter-a3858d9d.js b/web/settings/assets/counter-419f31a5.js
similarity index 79%
rename from web/settings/assets/counter-a3858d9d.js
rename to web/settings/assets/counter-419f31a5.js
index 5d7846d1bf..d5d64ae814 100644
--- a/web/settings/assets/counter-a3858d9d.js
+++ b/web/settings/assets/counter-419f31a5.js
@@ -1 +1 @@
-import{_ as l,u as i,k as f,l as _,D as s,N as r,y as n,x as o,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-powerfox-counter"},b={class:"small"},w=o("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),v=o("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1);function x(t,e,a,D,k,d){const u=i("openwb-base-heading"),c=i("openwb-base-text-input");return f(),_("div",g,[s(u,null,{default:r(()=>[n(" Einstellungen für Powerfox Zähler "),o("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),s(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:r(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),w,n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),v,n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")]),_:1},8,["model-value"])])}const I=l(h,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/counter.vue"]]);export{I as default};
+import{_ as l,u as i,k as f,l as _,D as r,N as s,y as n,x as o,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-powerfox-counter"},b={class:"small"},w=o("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),v=o("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1);function x(t,e,a,D,k,d){const u=i("openwb-base-heading"),c=i("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:s(()=>[n(" Einstellungen für Powerfox Zähler "),o("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:s(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),w,n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),v,n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")]),_:1},8,["model-value"])])}const I=l(h,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{I as default};
diff --git a/web/settings/assets/counter-e63ef9d1.js b/web/settings/assets/counter-49277c48.js
similarity index 94%
rename from web/settings/assets/counter-e63ef9d1.js
rename to web/settings/assets/counter-49277c48.js
index 78fb3187f9..806de99db3 100644
--- a/web/settings/assets/counter-e63ef9d1.js
+++ b/web/settings/assets/counter-49277c48.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/counter.vue"]]);export{x as default};
+import{_ as c,u as t,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{x as default};
diff --git a/web/settings/assets/counter-3e87edf3.js b/web/settings/assets/counter-49c86301.js
similarity index 83%
rename from web/settings/assets/counter-3e87edf3.js
rename to web/settings/assets/counter-49c86301.js
index 3183564f93..a8e8e16ac0 100644
--- a/web/settings/assets/counter-3e87edf3.js
+++ b/web/settings/assets/counter-49c86301.js
@@ -1 +1 @@
-import{_ as l,u as o,k as m,l as _,D as r,N as i,y as n,x as s,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/counter.vue"]]);export{C as default};
+import{_ as l,u as o,k as m,l as _,D as r,N as i,y as n,x as s,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function y(t,e,a,w,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-15d8fd18.js b/web/settings/assets/counter-4cf113fa.js
similarity index 92%
rename from web/settings/assets/counter-15d8fd18.js
rename to web/settings/assets/counter-4cf113fa.js
index 8cc3d002b7..4008f2a9f2 100644
--- a/web/settings/assets/counter-15d8fd18.js
+++ b/web/settings/assets/counter-4cf113fa.js
@@ -1 +1 @@
-import{_ as r,u as n,k as c,l,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolisCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solis-counter"},v={class:"small"};function h(o,e,s,w,x,i){const a=n("openwb-base-heading"),u=n("openwb-base-number-input");return c(),l("div",g,[t(a,null,{default:p(()=>[m(" Einstellungen für Solis Zähler "),_("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/counter.vue"]]);export{D as default};
+import{_ as r,u as n,k as c,l,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolisCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solis-counter"},v={class:"small"};function h(o,e,s,w,x,i){const a=n("openwb-base-heading"),u=n("openwb-base-number-input");return c(),l("div",g,[t(a,null,{default:p(()=>[m(" Einstellungen für Solis Zähler "),_("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-36a6d397.js b/web/settings/assets/counter-4dcc66e0.js
similarity index 91%
rename from web/settings/assets/counter-36a6d397.js
rename to web/settings/assets/counter-4dcc66e0.js
index b96c41fc26..c89386abba 100644
--- a/web/settings/assets/counter-36a6d397.js
+++ b/web/settings/assets/counter-4dcc66e0.js
@@ -1 +1 @@
-import{_ as r,u as n,k as c,l as p,D as t,N as l,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFoxEssCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-fox_ess-counter"},v={class:"small"};function x(o,e,s,h,w,a){const i=n("openwb-base-heading"),u=n("openwb-base-number-input");return c(),p("div",g,[t(i,null,{default:l(()=>[_(" Einstellungen für FoxEss Zähler "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>a.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/counter.vue"]]);export{D as default};
+import{_ as r,u as n,k as c,l as p,D as t,N as l,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFoxEssCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-fox_ess-counter"},v={class:"small"};function x(o,e,s,h,w,a){const i=n("openwb-base-heading"),u=n("openwb-base-number-input");return c(),p("div",g,[t(i,null,{default:l(()=>[_(" Einstellungen für FoxEss Zähler "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>a.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-f95e981c.js b/web/settings/assets/counter-4f739eff.js
similarity index 89%
rename from web/settings/assets/counter-f95e981c.js
rename to web/settings/assets/counter-4f739eff.js
index c84d9bd5c3..43e4f38235 100644
--- a/web/settings/assets/counter-f95e981c.js
+++ b/web/settings/assets/counter-4f739eff.js
@@ -1 +1 @@
-import{_ as d,u as o,k as c,l as p,D as t,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyboy-counter"},v={class:"small"};function y(n,e,s,h,w,a){const i=o("openwb-base-heading"),u=o("openwb-base-number-input");return c(),p("div",g,[t(i,null,{default:l(()=>[m(" Einstellungen für SMA Sunny Boy/Tripower Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const C=d(b,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/counter.vue"]]);export{C as default};
+import{_ as d,u as o,k as c,l as p,D as t,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyboy-counter"},v={class:"small"};function y(n,e,s,h,w,a){const i=o("openwb-base-heading"),u=o("openwb-base-number-input");return c(),p("div",g,[t(i,null,{default:l(()=>[m(" Einstellungen für SMA Sunny Boy/Tripower Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const C=d(b,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-e2353bc1.js b/web/settings/assets/counter-5cdd5400.js
similarity index 76%
rename from web/settings/assets/counter-e2353bc1.js
rename to web/settings/assets/counter-5cdd5400.js
index 0754ef19cc..f509db5f92 100644
--- a/web/settings/assets/counter-e2353bc1.js
+++ b/web/settings/assets/counter-5cdd5400.js
@@ -1 +1 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/counter.vue"]]);export{k as default};
+import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function g(e,t,b,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-7f7c6971.js b/web/settings/assets/counter-6703f6f0.js
similarity index 56%
rename from web/settings/assets/counter-7f7c6971.js
rename to web/settings/assets/counter-6703f6f0.js
index 7c301bcf51..d8e21a46e2 100644
--- a/web/settings/assets/counter-7f7c6971.js
+++ b/web/settings/assets/counter-6703f6f0.js
@@ -1 +1 @@
-import{_ as d,u as t,k as p,l as c,D as n,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/counter.vue"]]);export{k as default};
+import{_ as d,u as t,k as p,l as c,D as n,N as l,y as _,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(m,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-b83de018.js b/web/settings/assets/counter-6a7f6553.js
similarity index 93%
rename from web/settings/assets/counter-b83de018.js
rename to web/settings/assets/counter-6a7f6553.js
index 166a62dc60..89f71ebb08 100644
--- a/web/settings/assets/counter-b83de018.js
+++ b/web/settings/assets/counter-6a7f6553.js
@@ -1 +1 @@
-import{_ as m,u as a,k as p,l as _,D as n,N as u,y as d,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,r,E,x,i){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")]),_:1}),n(s,{title:"SolarEdge-Geräte-ID",required:"","model-value":r.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"SolarEdge-Meter-ID","model-value":r.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const S=m(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/counter.vue"]]);export{S as default};
+import{_ as m,u as a,k as p,l as _,D as n,N as u,y as d,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,r,E,x,i){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")]),_:1}),n(s,{title:"SolarEdge-Geräte-ID",required:"","model-value":r.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"SolarEdge-Meter-ID","model-value":r.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const S=m(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{S as default};
diff --git a/web/settings/assets/counter-bdaa3d40.js b/web/settings/assets/counter-720f0b7c.js
similarity index 75%
rename from web/settings/assets/counter-bdaa3d40.js
rename to web/settings/assets/counter-720f0b7c.js
index 594a7fbc77..e64f6dfd76 100644
--- a/web/settings/assets/counter-bdaa3d40.js
+++ b/web/settings/assets/counter-720f0b7c.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l as u,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function b(e,o,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/counter.vue"]]);export{k as default};
+import{_ as c,u as t,k as d,l as u,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function g(e,o,b,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-a7ce2e13.js b/web/settings/assets/counter-761ec99f.js
similarity index 89%
rename from web/settings/assets/counter-a7ce2e13.js
rename to web/settings/assets/counter-761ec99f.js
index 4900a3c3e9..c8c2493b8f 100644
--- a/web/settings/assets/counter-a7ce2e13.js
+++ b/web/settings/assets/counter-761ec99f.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/counter.vue"]]);export{k as default};
+import{_ as c,u as t,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-0e19dbc5.js b/web/settings/assets/counter-776a14ff.js
similarity index 58%
rename from web/settings/assets/counter-0e19dbc5.js
rename to web/settings/assets/counter-776a14ff.js
index 3b7f15d671..7d47e30a13 100644
--- a/web/settings/assets/counter-0e19dbc5.js
+++ b/web/settings/assets/counter-776a14ff.js
@@ -1 +1 @@
-import{_ as p,u as o,k as l,l as m,D as t,N as a,y as i,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceMTecCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-mtec-counter"},v={class:"small"};function h(n,e,s,w,x,u){const d=o("openwb-base-heading"),r=o("openwb-base-number-input");return l(),m("div",g,[t(d,null,{default:a(()=>[i(" Einstellungen für M-Tec Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>u.updateConfiguration(c,"configuration.modbus_id"))},{help:a(()=>[i(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const C=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/counter.vue"]]);export{C as default};
+import{_ as p,u as n,k as l,l as m,D as o,N as a,y as i,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceMTecCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-mtec-counter"},v={class:"small"};function h(t,e,s,w,x,u){const d=n("openwb-base-heading"),r=n("openwb-base-number-input");return l(),m("div",g,[o(d,null,{default:a(()=>[i(" Einstellungen für M-Tec Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>u.updateConfiguration(c,"configuration.modbus_id"))},{help:a(()=>[i(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const C=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-7baa2b31.js b/web/settings/assets/counter-7de8fa46.js
similarity index 98%
rename from web/settings/assets/counter-7baa2b31.js
rename to web/settings/assets/counter-7de8fa46.js
index 42936d9fff..c19eb66db8 100644
--- a/web/settings/assets/counter-7baa2b31.js
+++ b/web/settings/assets/counter-7de8fa46.js
@@ -1 +1 @@
-import{_ as p,u as c,k as _,l as m,D as t,N as o,y as n,x as e,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),z=e("br",null,null,-1),v=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),I=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),W=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),P=e("br",null,null,-1),D=e("br",null,null,-1),j=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),E=e("br",null,null,-1),F=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),A=e("br",null,null,-1),L=e("br",null,null,-1),S=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function M(a,u,s,G,H,O){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),d=c("openwb-base-alert");return _(),m("div",f,[t(r,null,{default:o(()=>[n(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,n(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,n(" Beispiel: "),B]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,n(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),z,n(" Beispiel: "),v]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),w,n(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),I,n(" Beispiel: "),N])]),n(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),W,n(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),T,n(" Beispiel: "),y])]),n(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),P,n(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),D,n(" Beispiel: "),j]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),q,n(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),E,n(" Beispiel: "),F]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),A,n(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),L,n(" Beispiel: "),S]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,n(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),Z,n(" Beispiel: "),C])])]),_:1})])}const J=p(h,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/counter.vue"]]);export{J as default};
+import{_ as p,u as c,k as _,l as m,D as t,N as o,y as n,x as e,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),z=e("br",null,null,-1),v=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),I=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),W=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),P=e("br",null,null,-1),D=e("br",null,null,-1),j=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),E=e("br",null,null,-1),F=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),A=e("br",null,null,-1),L=e("br",null,null,-1),S=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function M(a,u,s,G,H,O){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),d=c("openwb-base-alert");return _(),m("div",f,[t(r,null,{default:o(()=>[n(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,n(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,n(" Beispiel: "),B]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,n(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),z,n(" Beispiel: "),v]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),w,n(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),I,n(" Beispiel: "),N])]),n(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),W,n(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),T,n(" Beispiel: "),y])]),n(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),P,n(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),D,n(" Beispiel: "),j]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),q,n(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),E,n(" Beispiel: "),F]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),A,n(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),L,n(" Beispiel: "),S]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,n(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),Z,n(" Beispiel: "),C])])]),_:1})])}const J=p(h,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{J as default};
diff --git a/web/settings/assets/counter-bb73dd30.js b/web/settings/assets/counter-7e9e02b6.js
similarity index 79%
rename from web/settings/assets/counter-bb73dd30.js
rename to web/settings/assets/counter-7e9e02b6.js
index 491e238893..8803df99be 100644
--- a/web/settings/assets/counter-bb73dd30.js
+++ b/web/settings/assets/counter-7e9e02b6.js
@@ -1 +1 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/counter.vue"]]);export{x as default};
+import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,z){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const j=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{j as default};
diff --git a/web/settings/assets/counter-3a0288d3.js b/web/settings/assets/counter-8102691a.js
similarity index 66%
rename from web/settings/assets/counter-3a0288d3.js
rename to web/settings/assets/counter-8102691a.js
index e1b54e2bea..cf291d4312 100644
--- a/web/settings/assets/counter-3a0288d3.js
+++ b/web/settings/assets/counter-8102691a.js
@@ -1 +1 @@
-import{_ as c,u as t,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Sentron Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/counter.vue"]]);export{S as default};
+import{_ as c,u as t,k as u,l as d,D as o,N as s,y as i,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Sentron Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/counter.vue"]]);export{S as default};
diff --git a/web/settings/assets/counter-18904432.js b/web/settings/assets/counter-85e02a09.js
similarity index 60%
rename from web/settings/assets/counter-18904432.js
rename to web/settings/assets/counter-85e02a09.js
index f0703a83bb..5659e37926 100644
--- a/web/settings/assets/counter-18904432.js
+++ b/web/settings/assets/counter-85e02a09.js
@@ -1 +1 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceZCSCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_zcs-counter"},m={class:"small"};function b(e,t,g,h,v,z){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return u(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Azzurro ZCS Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/counter.vue"]]);export{$ as default};
+import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceZCSCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_zcs-counter"},m={class:"small"};function b(e,t,z,g,h,v){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return u(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Azzurro ZCS Zähler "),p("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-c9328771.js b/web/settings/assets/counter-899de3b1.js
similarity index 91%
rename from web/settings/assets/counter-c9328771.js
rename to web/settings/assets/counter-899de3b1.js
index aeb4ea87c9..64c5394a9f 100644
--- a/web/settings/assets/counter-c9328771.js
+++ b/web/settings/assets/counter-899de3b1.js
@@ -1 +1 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/counter.vue"]]);export{x as default};
+import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/counter.vue"]]);export{x as default};
diff --git a/web/settings/assets/counter-425920df.js b/web/settings/assets/counter-8aa3e08a.js
similarity index 95%
rename from web/settings/assets/counter-425920df.js
rename to web/settings/assets/counter-8aa3e08a.js
index efa130738d..e3656df027 100644
--- a/web/settings/assets/counter-425920df.js
+++ b/web/settings/assets/counter-8aa3e08a.js
@@ -1 +1 @@
-import{_ as m,u as o,k as p,l as _,D as a,N as i,y as t,x as r,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/counter.vue"]]);export{C as default};
+import{_ as m,u as o,k as p,l as _,D as a,N as i,y as t,x as r,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-c92f088c.js b/web/settings/assets/counter-90d6c411.js
similarity index 82%
rename from web/settings/assets/counter-c92f088c.js
rename to web/settings/assets/counter-90d6c411.js
index 45a602d603..25b24792b4 100644
--- a/web/settings/assets/counter-c92f088c.js
+++ b/web/settings/assets/counter-90d6c411.js
@@ -1 +1 @@
-import{_ as c,u as r,k as m,l as g,D as t,N as u,y as d,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return m(),g("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')]),_:1}),t(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const C=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/counter.vue"]]);export{C as default};
+import{_ as c,u as r,k as g,l as m,D as t,N as u,y as d,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),m("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')]),_:1}),t(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{B as default};
diff --git a/web/settings/assets/counter-5fea2f2b.js b/web/settings/assets/counter-92dbeb44.js
similarity index 83%
rename from web/settings/assets/counter-5fea2f2b.js
rename to web/settings/assets/counter-92dbeb44.js
index 6ba80ffc53..8e655890de 100644
--- a/web/settings/assets/counter-5fea2f2b.js
+++ b/web/settings/assets/counter-92dbeb44.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l as u,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,h,v,x){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/counter.vue"]]);export{k as default};
+import{_ as c,u as t,k as d,l as u,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,x,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-1e285dde.js b/web/settings/assets/counter-963b86e8.js
similarity index 61%
rename from web/settings/assets/counter-1e285dde.js
rename to web/settings/assets/counter-963b86e8.js
index f795b0d8a8..f0cbc2c99b 100644
--- a/web/settings/assets/counter-1e285dde.js
+++ b/web/settings/assets/counter-963b86e8.js
@@ -1 +1 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/counter.vue"]]);export{k as default};
+import{_ as c,u as o,k as u,l as d,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,x,h,v){const r=o("openwb-base-heading"),i=o("openwb-base-alert");return u(),d("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-9c0b6f8f.js b/web/settings/assets/counter-9c0b6f8f.js
new file mode 100644
index 0000000000..8ee83af6e4
--- /dev/null
+++ b/web/settings/assets/counter-9c0b6f8f.js
@@ -0,0 +1 @@
+import{_ as c,u as t,k as d,l,D as a,N as o,y as s,x as u,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),l("div",m,[a(i,null,{default:o(()=>[s(" Einstellungen für Tesla Zähler "),u("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-54421a1c.js b/web/settings/assets/counter-9ca02844.js
similarity index 77%
rename from web/settings/assets/counter-54421a1c.js
rename to web/settings/assets/counter-9ca02844.js
index f8fc5480f8..41892b2771 100644
--- a/web/settings/assets/counter-54421a1c.js
+++ b/web/settings/assets/counter-9ca02844.js
@@ -1 +1 @@
-import{_ as c,u as t,k as l,l as _,D as o,N as a,y as s,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-enphase-counter"},h={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",g,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const C=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/counter.vue"]]);export{C as default};
+import{_ as c,u as t,k as l,l as _,D as o,N as a,y as s,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-enphase-counter"},g={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",h,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const C=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-67f38979.js b/web/settings/assets/counter-9db4f10d.js
similarity index 54%
rename from web/settings/assets/counter-67f38979.js
rename to web/settings/assets/counter-9db4f10d.js
index fbb51e56bc..3f3eb5018f 100644
--- a/web/settings/assets/counter-67f38979.js
+++ b/web/settings/assets/counter-9db4f10d.js
@@ -1 +1 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,t,g,v,w,h){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/counter.vue"]]);export{V as default};
+import{_ as c,u as t,k as u,l as d,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,o,v,g,w,h){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-70b2a64c.js b/web/settings/assets/counter-a43b7c84.js
similarity index 98%
rename from web/settings/assets/counter-70b2a64c.js
rename to web/settings/assets/counter-a43b7c84.js
index c269ee9ad9..849233994e 100644
--- a/web/settings/assets/counter-70b2a64c.js
+++ b/web/settings/assets/counter-a43b7c84.js
@@ -1 +1 @@
-import{_ as h,u,k as c,l as g,D as a,N as l,y as e,x as t,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),x=t("br",null,null,-1),A=t("br",null,null,-1),D=t("br",null,null,-1),U=t("br",null,null,-1);function F(s,n,i,L,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),A,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),U,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const E=h(_,[["render",F],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/counter.vue"]]);export{E as default};
+import{_ as h,u,k as c,l as g,D as a,N as l,y as e,x as t,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),x=t("br",null,null,-1),A=t("br",null,null,-1),D=t("br",null,null,-1),U=t("br",null,null,-1);function F(s,n,i,L,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),A,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),U,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const E=h(_,[["render",F],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-ae228566.js b/web/settings/assets/counter-ae228566.js
new file mode 100644
index 0000000000..3fb6fc6505
--- /dev/null
+++ b/web/settings/assets/counter-ae228566.js
@@ -0,0 +1 @@
+import{_ as c,u as t,k as u,l as d,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSofarCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-sofar-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return u(),d("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für Sofar ESS Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/counter.vue"]]);export{S as default};
diff --git a/web/settings/assets/counter-971740d4.js b/web/settings/assets/counter-b01202f0.js
similarity index 91%
rename from web/settings/assets/counter-971740d4.js
rename to web/settings/assets/counter-b01202f0.js
index 0e4daa8582..5c75ce99d8 100644
--- a/web/settings/assets/counter-971740d4.js
+++ b/web/settings/assets/counter-b01202f0.js
@@ -1 +1 @@
-import{_ as r,u as o,k as c,l as d,D as n,N as p,y as _,x as v,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),v("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=r(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/counter.vue"]]);export{k as default};
+import{_ as r,u as o,k as c,l as d,D as n,N as p,y as _,x as v,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),v("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=r(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-7ec871ef.js b/web/settings/assets/counter-bf240441.js
similarity index 97%
rename from web/settings/assets/counter-7ec871ef.js
rename to web/settings/assets/counter-bf240441.js
index 1bdbe66cac..822382cb51 100644
--- a/web/settings/assets/counter-7ec871ef.js
+++ b/web/settings/assets/counter-bf240441.js
@@ -1 +1 @@
-import{_ as g,u as d,k as p,l as _,D as n,N as u,y as r,x as s,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),j,r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")]),_:1}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const V=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/counter.vue"]]);export{V as default};
+import{_ as g,u as d,k as p,l as _,D as n,N as u,y as r,x as s,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),j,r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")]),_:1}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const V=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-a647164b.js b/web/settings/assets/counter-c0599fe6.js
similarity index 77%
rename from web/settings/assets/counter-a647164b.js
rename to web/settings/assets/counter-c0599fe6.js
index 8a9d10ae1b..210b5a2983 100644
--- a/web/settings/assets/counter-a647164b.js
+++ b/web/settings/assets/counter-c0599fe6.js
@@ -1 +1 @@
-import{_ as l,u as t,k as p,l as m,D as o,N as i,y as r,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c*1e3,"configuration.external_consumption"))},{help:i(()=>[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/counter.vue"]]);export{C as default};
+import{_ as l,u as t,k as p,l as m,D as o,N as i,y as r,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),c=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(c,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d*1e3,"configuration.external_consumption"))},{help:i(()=>[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-96cdc611.js b/web/settings/assets/counter-ca9e3fe2.js
similarity index 74%
rename from web/settings/assets/counter-96cdc611.js
rename to web/settings/assets/counter-ca9e3fe2.js
index 1b886df0bc..9faeaddc8d 100644
--- a/web/settings/assets/counter-96cdc611.js
+++ b/web/settings/assets/counter-ca9e3fe2.js
@@ -1 +1 @@
-import{_ as u,u as n,k as l,l as d,D as r,N as s,y as t,x as a,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/counter.vue"]]);export{B as default};
+import{_ as l,u as n,k as u,l as d,D as r,N as s,y as t,x as a,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return u(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{B as default};
diff --git a/web/settings/assets/counter-cd4f14cb.js b/web/settings/assets/counter-cd4f14cb.js
deleted file mode 100644
index de526fd9b8..0000000000
--- a/web/settings/assets/counter-cd4f14cb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTasmotaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-tasmota-counter"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Tasmota Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-1cc10b54.js b/web/settings/assets/counter-d3b3c371.js
similarity index 92%
rename from web/settings/assets/counter-1cc10b54.js
rename to web/settings/assets/counter-d3b3c371.js
index 3f7de6b19d..fd61ba794f 100644
--- a/web/settings/assets/counter-1cc10b54.js
+++ b/web/settings/assets/counter-d3b3c371.js
@@ -1 +1 @@
-import{_ as r,u as t,k as p,l as u,D as o,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/counter.vue"]]);export{$ as default};
+import{_ as r,u as t,k as p,l as u,D as o,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-d3c67a64.js b/web/settings/assets/counter-d3c67a64.js
new file mode 100644
index 0000000000..b92cf305f9
--- /dev/null
+++ b/web/settings/assets/counter-d3c67a64.js
@@ -0,0 +1 @@
+import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return u(),d("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für BatterX Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-9f443962.js b/web/settings/assets/counter-d7164453.js
similarity index 70%
rename from web/settings/assets/counter-9f443962.js
rename to web/settings/assets/counter-d7164453.js
index 7d7feb67cc..4229b554ab 100644
--- a/web/settings/assets/counter-9f443962.js
+++ b/web/settings/assets/counter-d7164453.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as u,D as o,N as s,y as a,x as l,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),u("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/counter.vue"]]);export{x as default};
+import{_ as c,u as o,k as d,l as u,D as n,N as s,y as a,x as l,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=o("openwb-base-heading"),i=o("openwb-base-alert");return d(),u("div",m,[n(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{x as default};
diff --git a/web/settings/assets/counter-d86757f2.js b/web/settings/assets/counter-d86757f2.js
new file mode 100644
index 0000000000..0ee1073203
--- /dev/null
+++ b/web/settings/assets/counter-d86757f2.js
@@ -0,0 +1 @@
+import{_ as c,u as o,k as u,l as d,D as n,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTasmotaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-tasmota-counter"},f={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",m,[n(i,null,{default:a(()=>[s(" Einstellungen für Tasmota Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-94b6802e.js b/web/settings/assets/counter-dc109611.js
similarity index 94%
rename from web/settings/assets/counter-94b6802e.js
rename to web/settings/assets/counter-dc109611.js
index 4f582d78d0..ade7d49811 100644
--- a/web/settings/assets/counter-94b6802e.js
+++ b/web/settings/assets/counter-dc109611.js
@@ -1 +1 @@
-import{_ as l,u as o,k as c,l as p,D as u,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/counter.vue"]]);export{B as default};
+import{_ as l,u as o,k as c,l as p,D as u,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{B as default};
diff --git a/web/settings/assets/counter-e1b176cd.js b/web/settings/assets/counter-e1b176cd.js
deleted file mode 100644
index 0cf3aaaa2f..0000000000
--- a/web/settings/assets/counter-e1b176cd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,g,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-25d13278.js b/web/settings/assets/counter-fa66cb6a.js
similarity index 68%
rename from web/settings/assets/counter-25d13278.js
rename to web/settings/assets/counter-fa66cb6a.js
index c76c58c3d4..f348fefb42 100644
--- a/web/settings/assets/counter-25d13278.js
+++ b/web/settings/assets/counter-fa66cb6a.js
@@ -1 +1 @@
-import{_ as c,u as o,k as u,l as d,D as t,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-counter"},m={class:"small"};function g(e,n,b,w,h,v){const r=o("openwb-base-heading"),i=o("openwb-base-alert");return u(),d("div",f,[t(r,null,{default:s(()=>[a(" Einstellungen für Sungrow Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/counter.vue"]]);export{k as default};
+import{_ as u,u as o,k as c,l as d,D as t,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-counter"},m={class:"small"};function g(e,n,b,w,h,v){const r=o("openwb-base-heading"),i=o("openwb-base-alert");return c(),d("div",f,[t(r,null,{default:s(()=>[a(" Einstellungen für Sungrow Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=u(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter_s0-860ec468.js b/web/settings/assets/counter_s0-8459b248.js
similarity index 74%
rename from web/settings/assets/counter_s0-860ec468.js
rename to web/settings/assets/counter_s0-8459b248.js
index 84c2cbaf32..e5b52d0d36 100644
--- a/web/settings/assets/counter_s0-860ec468.js
+++ b/web/settings/assets/counter_s0-8459b248.js
@@ -1 +1 @@
-import{_ as c,u as o,k as u,l as d,D as t,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_s0.vue"]]);export{k as default};
+import{_ as u,u as o,k as c,l as d,D as t,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_s0.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter_sm-a94a3e01.js b/web/settings/assets/counter_sm-157d8b84.js
similarity index 97%
rename from web/settings/assets/counter_sm-a94a3e01.js
rename to web/settings/assets/counter_sm-157d8b84.js
index 6c107b9c03..e8ef201955 100644
--- a/web/settings/assets/counter_sm-a94a3e01.js
+++ b/web/settings/assets/counter_sm-157d8b84.js
@@ -1 +1 @@
-import{_,u as a,k as f,l as g,D as o,N as s,y as r,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},computed:{meterRealtimeUrl:{get(){return`http://${this.deviceIpAddress}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}},deviceIpAddress:{get(){var e;return(e=this.$store.state.mqtt[`openWB/system/device/${this.deviceId}/config`])==null?void 0:e.configuration.ip_address}}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-fronius-counter-sm"},v={class:"small"},w=["href"],D=d("br",null,null,-1);function M(e,t,l,S,k,n){const m=a("openwb-base-heading"),c=a("openwb-base-select-input"),p=a("openwb-base-number-input");return f(),g("div",b,[o(m,null,{default:s(()=>[r(" Einstellungen für Fronius SmartMeter "),d("span",v,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":l.configuration.variant,"onUpdate:modelValue":t[0]||(t[0]=i=>n.updateConfiguration(i,"configuration.variant"))},{help:s(()=>[r(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")]),_:1},8,["model-value"]),o(p,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":l.configuration.meter_id,"onUpdate:modelValue":t[1]||(t[1]=i=>n.updateConfiguration(i,"configuration.meter_id"))},{help:s(()=>[r(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. "),d("a",{href:n.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},u(n.meterRealtimeUrl),9,w),D,r(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. ')]),_:1},8,["model-value"])])}const V=_(h,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/counter_sm.vue"]]);export{V as default};
+import{_,u as a,k as f,l as g,D as o,N as s,y as r,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},computed:{meterRealtimeUrl:{get(){return`http://${this.deviceIpAddress}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}},deviceIpAddress:{get(){var e;return(e=this.$store.state.mqtt[`openWB/system/device/${this.deviceId}/config`])==null?void 0:e.configuration.ip_address}}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-fronius-counter-sm"},v={class:"small"},w=["href"],D=d("br",null,null,-1);function M(e,t,l,S,k,n){const m=a("openwb-base-heading"),c=a("openwb-base-select-input"),p=a("openwb-base-number-input");return f(),g("div",b,[o(m,null,{default:s(()=>[r(" Einstellungen für Fronius SmartMeter "),d("span",v,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":l.configuration.variant,"onUpdate:modelValue":t[0]||(t[0]=i=>n.updateConfiguration(i,"configuration.variant"))},{help:s(()=>[r(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")]),_:1},8,["model-value"]),o(p,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":l.configuration.meter_id,"onUpdate:modelValue":t[1]||(t[1]=i=>n.updateConfiguration(i,"configuration.meter_id"))},{help:s(()=>[r(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. "),d("a",{href:n.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},u(n.meterRealtimeUrl),9,w),D,r(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. ')]),_:1},8,["model-value"])])}const V=_(h,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-978a39c6.js b/web/settings/assets/device-02184b73.js
similarity index 67%
rename from web/settings/assets/device-978a39c6.js
rename to web/settings/assets/device-02184b73.js
index 50f2cf57c1..6721e0c80d 100644
--- a/web/settings/assets/device-978a39c6.js
+++ b/web/settings/assets/device-02184b73.js
@@ -1 +1 @@
-import{_ as l,u as n,k as p,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solarmax"},x={class:"small"};function w(o,e,i,h,C,s){const u=n("openwb-base-heading"),d=n("openwb-base-text-input"),r=n("openwb-base-number-input");return p(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für Solarmax "),f("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/device.vue"]]);export{B as default};
+import{_ as l,u as n,k as p,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solarmax"},x={class:"small"};function w(o,e,i,h,C,s){const r=n("openwb-base-heading"),u=n("openwb-base-text-input"),d=n("openwb-base-number-input");return p(),c("div",v,[a(r,null,{default:m(()=>[_(" Einstellungen für Solarmax "),f("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-23a82284.js b/web/settings/assets/device-06345e49.js
similarity index 62%
rename from web/settings/assets/device-23a82284.js
rename to web/settings/assets/device-06345e49.js
index db0b1fa8e2..3936302349 100644
--- a/web/settings/assets/device-23a82284.js
+++ b/web/settings/assets/device-06345e49.js
@@ -1 +1 @@
-import{_ as c,u as o,k as _,l as b,D as t,N as r,y as d,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-siemens-sentron"},x={class:"small"};function C(i,e,a,y,S,s){const l=o("openwb-base-heading"),p=o("openwb-base-alert"),m=o("openwb-base-text-input"),u=o("openwb-base-number-input");return _(),b("div",w,[t(l,null,{default:r(()=>[d(" Einstellungen für Siemens Sentron "),f("span",x,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:r(()=>[d(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const q=c(v,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens_sentron/device.vue"]]);export{q as default};
+import{_ as c,u as o,k as _,l as b,D as t,N as r,y as d,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-siemens-sentron"},x={class:"small"};function C(i,e,s,y,S,a){const l=o("openwb-base-heading"),p=o("openwb-base-alert"),m=o("openwb-base-text-input"),u=o("openwb-base-number-input");return _(),b("div",w,[t(l,null,{default:r(()=>[d(" Einstellungen für Siemens Sentron "),f("span",x,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:r(()=>[d(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const q=c(v,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-0852663a.js b/web/settings/assets/device-0852663a.js
new file mode 100644
index 0000000000..e6e3756a4d
--- /dev/null
+++ b/web/settings/assets/device-0852663a.js
@@ -0,0 +1 @@
+import{_ as r,u as d,k as l,l as p,D as o,N as c,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-byd"},v={class:"small"};function w(n,e,a,y,x,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return l(),p("div",b,[o(u,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",v,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-26a38357.js b/web/settings/assets/device-1194af1e.js
similarity index 82%
rename from web/settings/assets/device-26a38357.js
rename to web/settings/assets/device-1194af1e.js
index b38f186e5c..dac507608d 100644
--- a/web/settings/assets/device-26a38357.js
+++ b/web/settings/assets/device-1194af1e.js
@@ -1 +1 @@
-import{_ as f,u as a,k as _,l as b,D as t,N as u,y as d,x as g,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const w={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},h={class:"device-goodwe"},W={class:"small"};function x(s,e,o,V,D,i){const p=a("openwb-base-heading"),m=a("openwb-base-alert"),c=a("openwb-base-text-input"),l=a("openwb-base-number-input"),r=a("openwb-base-select-input");return _(),b("div",h,[t(p,null,{default:u(()=>[d(" Einstellungen für GoodWe "),g("span",W,"(Modul: "+v(s.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:u(()=>[d(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")]),_:1}),t(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":o.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":o.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(r,{title:"API-Version",notSelected:"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.version"))},{help:u(()=>[d(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")]),_:1},8,["model-value"]),t(r,{title:"Firmware",notSelected:"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.configuration.firmware,"onUpdate:modelValue":e[4]||(e[4]=n=>i.updateConfiguration(n,"configuration.firmware"))},{help:u(()=>[d(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")]),_:1},8,["model-value"])])}const B=f(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/device.vue"]]);export{B as default};
+import{_ as f,u as a,k as _,l as g,D as t,N as d,y as u,x as b,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const w={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},h={class:"device-goodwe"},W={class:"small"};function x(s,e,o,V,D,i){const p=a("openwb-base-heading"),m=a("openwb-base-alert"),c=a("openwb-base-text-input"),l=a("openwb-base-number-input"),r=a("openwb-base-select-input");return _(),g("div",h,[t(p,null,{default:d(()=>[u(" Einstellungen für GoodWe "),b("span",W,"(Modul: "+v(s.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:d(()=>[u(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")]),_:1}),t(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":o.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":o.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(r,{title:"API-Version",notSelected:"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.version"))},{help:d(()=>[u(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")]),_:1},8,["model-value"]),t(r,{title:"Firmware",notSelected:"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.configuration.firmware,"onUpdate:modelValue":e[4]||(e[4]=n=>i.updateConfiguration(n,"configuration.firmware"))},{help:d(()=>[u(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")]),_:1},8,["model-value"])])}const B=f(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-c5df5aff.js b/web/settings/assets/device-12c43ff6.js
similarity index 94%
rename from web/settings/assets/device-c5df5aff.js
rename to web/settings/assets/device-12c43ff6.js
index a388c24d6f..d7d3e0e7ee 100644
--- a/web/settings/assets/device-c5df5aff.js
+++ b/web/settings/assets/device-12c43ff6.js
@@ -1 +1 @@
-import{_ as p,u as n,k as l,l as c,D as s,N as _,y as m,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFoxEss",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fox_ess"},x={class:"small"};function w(o,e,a,h,C,i){const u=n("openwb-base-heading"),d=n("openwb-base-text-input"),r=n("openwb-base-number-input");return l(),c("div",v,[s(u,null,{default:_(()=>[m(" Einstellungen für FoxEss "),f("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),s(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),s(r,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/device.vue"]]);export{B as default};
+import{_ as p,u as n,k as l,l as c,D as s,N as _,y as m,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFoxEss",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fox_ess"},x={class:"small"};function w(o,e,a,h,C,i){const u=n("openwb-base-heading"),d=n("openwb-base-text-input"),r=n("openwb-base-number-input");return l(),c("div",v,[s(u,null,{default:_(()=>[m(" Einstellungen für FoxEss "),f("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),s(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),s(r,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-7d0443e1.js b/web/settings/assets/device-14134a0e.js
similarity index 69%
rename from web/settings/assets/device-7d0443e1.js
rename to web/settings/assets/device-14134a0e.js
index 2fe65296f2..3421ea7932 100644
--- a/web/settings/assets/device-7d0443e1.js
+++ b/web/settings/assets/device-14134a0e.js
@@ -1 +1 @@
-import{_ as p,u as r,k as c,l as m,D as o,N as u,y as l,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceKostalPikoOld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-piko-old"},b={class:"small"};function w(n,e,a,k,h,i){const d=r("openwb-base-heading"),s=r("openwb-base-text-input");return c(),m("div",v,[o(d,null,{default:u(()=>[l(" Einstellungen für Kostal Piko (alte Generation) "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"URL",subtype:"url",required:"","model-value":a.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.url"))},{help:u(()=>[l(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')]),_:1},8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const C=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/device.vue"]]);export{C as default};
+import{_ as p,u as l,k as c,l as m,D as o,N as r,y as u,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceKostalPikoOld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-piko-old"},b={class:"small"};function k(n,e,a,w,h,i){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return c(),m("div",v,[o(d,null,{default:r(()=>[u(" Einstellungen für Kostal Piko (alte Generation) "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"URL",subtype:"url",required:"","model-value":a.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.url"))},{help:r(()=>[u(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')]),_:1},8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const C=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-99dfaf68.js b/web/settings/assets/device-191a8f0d.js
similarity index 97%
rename from web/settings/assets/device-99dfaf68.js
rename to web/settings/assets/device-191a8f0d.js
index 00428e12e1..85acf0afff 100644
--- a/web/settings/assets/device-99dfaf68.js
+++ b/web/settings/assets/device-191a8f0d.js
@@ -1 +1 @@
-import{_ as p,u as n,k as c,l as m,D as o,N as _,y as b,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolis",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-solis"},h={class:"small"};function x(i,e,a,S,V,s){const u=n("openwb-base-heading"),l=n("openwb-base-text-input"),r=n("openwb-base-number-input"),d=n("openwb-base-select-input");return c(),m("div",w,[o(u,null,{default:_(()=>[b(" Einstellungen für Solis "),f("span",h,"(Modul: "+v(i.$options.name)+")",1)]),_:1}),o(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),o(d,{title:"Version",notSelected:"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>s.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const B=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/device.vue"]]);export{B as default};
+import{_ as p,u as n,k as c,l as m,D as o,N as _,y as b,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolis",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-solis"},h={class:"small"};function x(i,e,a,S,V,s){const u=n("openwb-base-heading"),l=n("openwb-base-text-input"),r=n("openwb-base-number-input"),d=n("openwb-base-select-input");return c(),m("div",w,[o(u,null,{default:_(()=>[b(" Einstellungen für Solis "),f("span",h,"(Modul: "+v(i.$options.name)+")",1)]),_:1}),o(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),o(d,{title:"Version",notSelected:"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>s.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const B=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-973a766d.js b/web/settings/assets/device-1dbf9864.js
similarity index 91%
rename from web/settings/assets/device-973a766d.js
rename to web/settings/assets/device-1dbf9864.js
index 7b36cfc61c..90ff613391 100644
--- a/web/settings/assets/device-973a766d.js
+++ b/web/settings/assets/device-1dbf9864.js
@@ -1 +1 @@
-import{_ as p,u as n,k as r,l as d,D as o,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/device.vue"]]);export{x as default};
+import{_ as p,u as n,k as r,l as d,D as o,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/device.vue"]]);export{x as default};
diff --git a/web/settings/assets/device-1ea206ee.js b/web/settings/assets/device-1ea206ee.js
deleted file mode 100644
index b522123a79..0000000000
--- a/web/settings/assets/device-1ea206ee.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u,k as p,l as m,D as n,N as c,y as f,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSofar",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-azzurro_sofar"},x={class:"small"};function w(t,e,a,C,V,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[n(s,null,{default:c(()=>[f(" Einstellungen für Sofar "),_("span",x,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),n(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_sofar/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-5ee1f362.js b/web/settings/assets/device-1f5e9c10.js
similarity index 75%
rename from web/settings/assets/device-5ee1f362.js
rename to web/settings/assets/device-1f5e9c10.js
index 22f819b621..7e7d8ed56a 100644
--- a/web/settings/assets/device-5ee1f362.js
+++ b/web/settings/assets/device-1f5e9c10.js
@@ -1 +1 @@
-import{_ as p,u as n,k as l,l as c,D as a,N as m,y as _,x as g,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceHuaweiSmartLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-huawei-smart-logger"},w={class:"small"};function x(t,e,i,h,C,s){const r=n("openwb-base-heading"),u=n("openwb-base-text-input"),d=n("openwb-base-number-input");return l(),c("div",v,[a(r,null,{default:m(()=>[_(" Einstellungen für Huawei SmartLogger "),g("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const y=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/device.vue"]]);export{y as default};
+import{_ as p,u as n,k as l,l as c,D as a,N as m,y as _,x as g,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceHuaweiSmartLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-huawei-smart-logger"},w={class:"small"};function h(t,e,i,x,C,s){const r=n("openwb-base-heading"),u=n("openwb-base-text-input"),d=n("openwb-base-number-input");return l(),c("div",v,[a(r,null,{default:m(()=>[_(" Einstellungen für Huawei SmartLogger "),g("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const y=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-969e7e37.js b/web/settings/assets/device-2004960c.js
similarity index 90%
rename from web/settings/assets/device-969e7e37.js
rename to web/settings/assets/device-2004960c.js
index 787d8206b7..04e2772d9b 100644
--- a/web/settings/assets/device-969e7e37.js
+++ b/web/settings/assets/device-2004960c.js
@@ -1 +1 @@
-import{_ as p,u as n,k as r,l as c,D as o,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenDTU",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-opendtu"},g={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return r(),c("div",b,[o(i,null,{default:l(()=>[_(" Einstellungen für OpenDTU "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.url"))},null,8,["model-value"])])}const B=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/device.vue"]]);export{B as default};
+import{_ as p,u as n,k as r,l as c,D as o,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenDTU",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-opendtu"},g={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return r(),c("div",b,[o(i,null,{default:l(()=>[_(" Einstellungen für OpenDTU "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.url"))},null,8,["model-value"])])}const B=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-b0052907.js b/web/settings/assets/device-25323637.js
similarity index 70%
rename from web/settings/assets/device-b0052907.js
rename to web/settings/assets/device-25323637.js
index f85003bf4f..48289d5701 100644
--- a/web/settings/assets/device-b0052907.js
+++ b/web/settings/assets/device-25323637.js
@@ -1 +1 @@
-import{_ as c,u as n,k as _,l as b,D as t,N as d,y as r,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-powerdog"},x={class:"small"};function C(a,e,i,V,q,u){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),m=n("openwb-base-text-input"),s=n("openwb-base-number-input");return _(),b("div",w,[t(l,null,{default:d(()=>[r(" Einstellungen für Powerdog "),f("span",x,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:d(()=>[r(" ModbusTCP muss aktiviert sein. ")]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>u.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>u.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>u.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const k=c(v,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/device.vue"]]);export{k as default};
+import{_ as c,u as n,k as _,l as b,D as t,N as s,y as r,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-powerdog"},x={class:"small"};function C(a,e,i,V,q,u){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),m=n("openwb-base-text-input"),d=n("openwb-base-number-input");return _(),b("div",w,[t(l,null,{default:s(()=>[r(" Einstellungen für Powerdog "),f("span",x,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:s(()=>[r(" ModbusTCP muss aktiviert sein. ")]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>u.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>u.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>u.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const k=c(v,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{k as default};
diff --git a/web/settings/assets/device-d2cb5a1c.js b/web/settings/assets/device-29ba5b2b.js
similarity index 96%
rename from web/settings/assets/device-d2cb5a1c.js
rename to web/settings/assets/device-29ba5b2b.js
index 11f2353196..cd170193e7 100644
--- a/web/settings/assets/device-d2cb5a1c.js
+++ b/web/settings/assets/device-29ba5b2b.js
@@ -1 +1 @@
-import{_ as b,u as o,k as g,l as _,D as t,N as r,y as l,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const w={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(u,e=void 0){this.$emit("update:configuration",{value:u,object:e})}}},S={class:"device-sungrow"},h={class:"small"};function x(u,e,i,D,N,a){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),m=o("openwb-base-text-input"),s=o("openwb-base-number-input"),c=o("openwb-base-select-input");return g(),_("div",S,[t(d,null,{default:r(()=>[l(" Einstellungen für Sungrow "),f("span",h,"(Modul: "+v(u.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:r(()=>[l(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(c,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[3]||(e[3]=n=>a.updateConfiguration(n,"configuration.version"))},{help:r(()=>[l(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um iSolarCloud nutzen zu können. ")]),_:1},8,["model-value"])])}const H=b(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/device.vue"]]);export{H as default};
+import{_ as b,u as o,k as g,l as _,D as t,N as r,y as l,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const w={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(u,e=void 0){this.$emit("update:configuration",{value:u,object:e})}}},S={class:"device-sungrow"},h={class:"small"};function x(u,e,i,D,N,a){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),m=o("openwb-base-text-input"),s=o("openwb-base-number-input"),c=o("openwb-base-select-input");return g(),_("div",S,[t(d,null,{default:r(()=>[l(" Einstellungen für Sungrow "),f("span",h,"(Modul: "+v(u.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:r(()=>[l(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(c,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[3]||(e[3]=n=>a.updateConfiguration(n,"configuration.version"))},{help:r(()=>[l(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um iSolarCloud nutzen zu können. ")]),_:1},8,["model-value"])])}const H=b(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{H as default};
diff --git a/web/settings/assets/device-c6cc93a1.js b/web/settings/assets/device-2a05ce83.js
similarity index 62%
rename from web/settings/assets/device-c6cc93a1.js
rename to web/settings/assets/device-2a05ce83.js
index 955d6dc6b4..09049ba6fc 100644
--- a/web/settings/assets/device-c6cc93a1.js
+++ b/web/settings/assets/device-2a05ce83.js
@@ -1 +1 @@
-import{_ as p,u as t,k as l,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-openwb-flex"},x={class:"small"};function w(n,e,i,h,B,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/device.vue"]]);export{q as default};
+import{_ as p,u as t,k as l,l as c,D as a,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(n,e,i,h,B,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex "),b("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-7513ccc0.js b/web/settings/assets/device-34858026.js
similarity index 93%
rename from web/settings/assets/device-7513ccc0.js
rename to web/settings/assets/device-34858026.js
index bf73af4923..caea3c6629 100644
--- a/web/settings/assets/device-7513ccc0.js
+++ b/web/settings/assets/device-34858026.js
@@ -1 +1 @@
-import{_ as c,u as o,k as _,l as b,D as t,N as d,y as r,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-siemens"},x={class:"small"};function h(i,e,a,C,S,s){const l=o("openwb-base-heading"),p=o("openwb-base-alert"),m=o("openwb-base-text-input"),u=o("openwb-base-number-input");return _(),b("div",w,[t(l,null,{default:d(()=>[r(" Einstellungen für Siemens "),f("span",x,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:d(()=>[r(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/device.vue"]]);export{y as default};
+import{_ as c,u as o,k as _,l as b,D as t,N as d,y as r,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-siemens"},x={class:"small"};function h(i,e,a,C,S,s){const l=o("openwb-base-heading"),p=o("openwb-base-alert"),m=o("openwb-base-text-input"),u=o("openwb-base-number-input");return _(),b("div",w,[t(l,null,{default:d(()=>[r(" Einstellungen für Siemens "),f("span",x,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:d(()=>[r(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-558befc9.js b/web/settings/assets/device-35945559.js
similarity index 94%
rename from web/settings/assets/device-558befc9.js
rename to web/settings/assets/device-35945559.js
index dde05bb5d2..e7ed5fe3b6 100644
--- a/web/settings/assets/device-558befc9.js
+++ b/web/settings/assets/device-35945559.js
@@ -1 +1 @@
-import{_ as p,u as n,k as c,l,D as i,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron"},w={class:"small"};function x(t,e,a,V,h,s){const r=n("openwb-base-heading"),u=n("openwb-base-text-input"),d=n("openwb-base-number-input");return c(),l("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron "),f("span",w,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),i(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const y=p(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/device.vue"]]);export{y as default};
+import{_ as p,u as n,k as c,l,D as i,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron"},w={class:"small"};function x(t,e,a,V,h,s){const r=n("openwb-base-heading"),u=n("openwb-base-text-input"),d=n("openwb-base-number-input");return c(),l("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron "),f("span",w,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),i(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const y=p(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-fb0c3879.js b/web/settings/assets/device-3d9e43fe.js
similarity index 97%
rename from web/settings/assets/device-fb0c3879.js
rename to web/settings/assets/device-3d9e43fe.js
index 5ace2cf9cd..b0bec3c433 100644
--- a/web/settings/assets/device-fb0c3879.js
+++ b/web/settings/assets/device-3d9e43fe.js
@@ -1 +1 @@
-import{_ as b,u as o,k as h,l as g,D as s,N as u,y as t,x as n,z as i}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,y,z,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["model-value"])])}const D=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/device.vue"]]);export{D as default};
+import{_ as b,u as o,k as h,l as g,D as s,N as u,y as t,x as n,z as i}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,y,z,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["model-value"])])}const D=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{D as default};
diff --git a/web/settings/assets/device-c1bc98d9.js b/web/settings/assets/device-4e84dc20.js
similarity index 94%
rename from web/settings/assets/device-c1bc98d9.js
rename to web/settings/assets/device-4e84dc20.js
index 9fd7c290bf..08e763d970 100644
--- a/web/settings/assets/device-c1bc98d9.js
+++ b/web/settings/assets/device-4e84dc20.js
@@ -1 +1 @@
-import{_ as c,u as o,k as m,l as _,D as s,N as i,y as n,x as a,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[n(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const N=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/device.vue"]]);export{N as default};
+import{_ as c,u as o,k as m,l as _,D as s,N as i,y as n,x as a,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[n(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const N=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-4f252d8d.js b/web/settings/assets/device-4f252d8d.js
new file mode 100644
index 0000000000..4d3e83b072
--- /dev/null
+++ b/web/settings/assets/device-4f252d8d.js
@@ -0,0 +1 @@
+import{_ as l,u,k as p,l as m,D as n,N as c,y as f,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSofar",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sofar"},x={class:"small"};function w(t,e,a,C,V,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[n(s,null,{default:c(()=>[f(" Einstellungen für Sofar "),_("span",x,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),n(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-c95ddafe.js b/web/settings/assets/device-538ad6e5.js
similarity index 89%
rename from web/settings/assets/device-c95ddafe.js
rename to web/settings/assets/device-538ad6e5.js
index a8f19fd111..500a768d55 100644
--- a/web/settings/assets/device-c95ddafe.js
+++ b/web/settings/assets/device-538ad6e5.js
@@ -1 +1 @@
-import{_ as v,u as m,k as r,l as b,D as p,N as u,y as i,x as c,z as w,A as s,B as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},h={class:"device-enphase"},y={class:"small"},k=c("br",null,null,-1),V=c("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"},"Enphase-Webseite",-1);function E(d,e,t,B,C,o){const f=m("openwb-base-heading"),a=m("openwb-base-text-input"),g=m("openwb-base-select-input");return r(),b("div",h,[p(f,null,{default:u(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway "),c("span",y,"(Modul: "+w(d.$options.name)+")",1)]),_:1}),p(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.hostname"))},{help:u(()=>[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')]),_:1},8,["model-value"]),p(g,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":t.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.version"))},{help:u(()=>[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")]),_:1},8,["model-value"]),t.configuration.version>1?(r(),s(a,{key:0,title:"Benutzer",subtype:"user","model-value":t.configuration.user,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"])):l("",!0),t.configuration.version>1?(r(),s(a,{key:1,title:"Kennwort",subtype:"password","model-value":t.configuration.password,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])):l("",!0),t.configuration.version>1?(r(),s(a,{key:2,title:"Envoy Seriennummer","model-value":t.configuration.serial,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.serial"))},null,8,["model-value"])):l("",!0),t.configuration.version>1?(r(),s(a,{key:3,title:"Token",subtype:"password","model-value":t.configuration.token,"onUpdate:modelValue":e[5]||(e[5]=n=>o.updateConfiguration(n,"configuration.token"))},{help:u(()=>[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),k,i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),V,i(" erledigen. ")]),_:1},8,["model-value"])):l("",!0)])}const I=v(_,[["render",E],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/device.vue"]]);export{I as default};
+import{_ as v,u as m,k as r,l as b,D as p,N as u,y as i,x as c,z as w,A as s,B as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"device-enphase"},y={class:"small"},k=c("br",null,null,-1),V=c("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"},"Enphase-Webseite",-1);function E(d,e,t,B,C,o){const f=m("openwb-base-heading"),a=m("openwb-base-text-input"),g=m("openwb-base-select-input");return r(),b("div",_,[p(f,null,{default:u(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway "),c("span",y,"(Modul: "+w(d.$options.name)+")",1)]),_:1}),p(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.hostname"))},{help:u(()=>[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')]),_:1},8,["model-value"]),p(g,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":t.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.version"))},{help:u(()=>[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")]),_:1},8,["model-value"]),t.configuration.version>1?(r(),s(a,{key:0,title:"Benutzer",subtype:"user","model-value":t.configuration.user,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"])):l("",!0),t.configuration.version>1?(r(),s(a,{key:1,title:"Kennwort",subtype:"password","model-value":t.configuration.password,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])):l("",!0),t.configuration.version>1?(r(),s(a,{key:2,title:"Envoy Seriennummer","model-value":t.configuration.serial,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.serial"))},null,8,["model-value"])):l("",!0),t.configuration.version>1?(r(),s(a,{key:3,title:"Token",subtype:"password","model-value":t.configuration.token,"onUpdate:modelValue":e[5]||(e[5]=n=>o.updateConfiguration(n,"configuration.token"))},{help:u(()=>[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),k,i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),V,i(" erledigen. ")]),_:1},8,["model-value"])):l("",!0)])}const I=v(h,[["render",E],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{I as default};
diff --git a/web/settings/assets/device-53c3c990.js b/web/settings/assets/device-53c3c990.js
new file mode 100644
index 0000000000..3dd3e66299
--- /dev/null
+++ b/web/settings/assets/device-53c3c990.js
@@ -0,0 +1 @@
+import{_ as p,u as o,k as c,l,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceMTec",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-mtec"},w={class:"small"};function x(t,e,i,h,C,s){const u=o("openwb-base-heading"),d=o("openwb-base-text-input"),r=o("openwb-base-number-input");return c(),l("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für M-Tec "),f("span",w,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),a(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const B=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-32f3515c.js b/web/settings/assets/device-560cda8e.js
similarity index 52%
rename from web/settings/assets/device-32f3515c.js
rename to web/settings/assets/device-560cda8e.js
index cc64d0e414..6a3f0f276a 100644
--- a/web/settings/assets/device-32f3515c.js
+++ b/web/settings/assets/device-560cda8e.js
@@ -1 +1 @@
-import{_ as m,u as o,k as _,l as f,D as t,N as r,y as u,x as b,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-kostalplenticore"},h={class:"small"};function x(a,e,i,y,C,s){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),c=o("openwb-base-text-input"),l=o("openwb-base-number-input");return _(),f("div",w,[t(d,null,{default:r(()=>[u(" Einstellungen für Kostal Plenticore "),b("span",h,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:r(()=>[u(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),t(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const k=m(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/device.vue"]]);export{k as default};
+import{_ as m,u as o,k as _,l as f,D as n,N as r,y as u,x as b,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-kostalplenticore"},h={class:"small"};function x(a,e,i,k,y,s){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),c=o("openwb-base-text-input"),l=o("openwb-base-number-input");return _(),f("div",w,[n(d,null,{default:r(()=>[u(" Einstellungen für Kostal Plenticore "),b("span",h,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:r(()=>[u(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),n(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(l,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),n(l,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>s.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])])}const V=m(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-decb34ec.js b/web/settings/assets/device-56cb9ab9.js
similarity index 94%
rename from web/settings/assets/device-decb34ec.js
rename to web/settings/assets/device-56cb9ab9.js
index 14ba7a1efc..c5c66daa70 100644
--- a/web/settings/assets/device-decb34ec.js
+++ b/web/settings/assets/device-56cb9ab9.js
@@ -1 +1 @@
-import{_ as l,u as t,k as u,l as c,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),c("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/device.vue"]]);export{C as default};
+import{_ as l,u as t,k as u,l as c,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),c("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-aeda6c46.js b/web/settings/assets/device-5926f93d.js
similarity index 50%
rename from web/settings/assets/device-aeda6c46.js
rename to web/settings/assets/device-5926f93d.js
index 9cb935ac8d..ee72fa0973 100644
--- a/web/settings/assets/device-aeda6c46.js
+++ b/web/settings/assets/device-5926f93d.js
@@ -1 +1 @@
-import{_ as l,u as d,k as r,l as p,D as o,N as c,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(n,e,a,x,y,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(u,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":a.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/device.vue"]]);export{q as default};
+import{_ as u,u as d,k as r,l as p,D as o,N as c,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(a,e,n,x,y,i){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(l,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(a.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":n.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":n.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-a7f6d1af.js b/web/settings/assets/device-59ac52ab.js
similarity index 75%
rename from web/settings/assets/device-a7f6d1af.js
rename to web/settings/assets/device-59ac52ab.js
index 723adbf0ce..58d9ee3b31 100644
--- a/web/settings/assets/device-a7f6d1af.js
+++ b/web/settings/assets/device-59ac52ab.js
@@ -1 +1 @@
-import{_ as u,u as t,k as l,l as c,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),c("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/device.vue"]]);export{C as default};
+import{_ as l,u as t,k as u,l as c,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),c("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-e70fb123.js b/web/settings/assets/device-60a41819.js
similarity index 91%
rename from web/settings/assets/device-e70fb123.js
rename to web/settings/assets/device-60a41819.js
index 73f2445203..4b0dae4f2f 100644
--- a/web/settings/assets/device-e70fb123.js
+++ b/web/settings/assets/device-60a41819.js
@@ -1 +1 @@
-import{_ as r,u as t,k as c,l,D as o,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceBenning",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-benning"},v={class:"small"};function h(n,e,i,x,w,a){const s=t("openwb-base-heading"),d=t("openwb-base-text-input");return c(),l("div",b,[o(s,null,{default:p(()=>[_(" Einstellungen für Benning "),f("span",v,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.url"))},null,8,["model-value"])])}const C=r(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/device.vue"]]);export{C as default};
+import{_ as r,u as t,k as c,l,D as o,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceBenning",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-benning"},v={class:"small"};function h(n,e,i,x,w,a){const s=t("openwb-base-heading"),d=t("openwb-base-text-input");return c(),l("div",b,[o(s,null,{default:p(()=>[_(" Einstellungen für Benning "),f("span",v,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.url"))},null,8,["model-value"])])}const C=r(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-f408fff0.js b/web/settings/assets/device-66551827.js
similarity index 85%
rename from web/settings/assets/device-f408fff0.js
rename to web/settings/assets/device-66551827.js
index 57b29c40af..bcd50d2b24 100644
--- a/web/settings/assets/device-f408fff0.js
+++ b/web/settings/assets/device-66551827.js
@@ -1 +1 @@
-import{_ as r,u as o,k as u,l,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,x,k,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),l("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/device.vue"]]);export{y as default};
+import{_ as r,u as o,k as u,l,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),l("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-79947814.js b/web/settings/assets/device-66b6ca53.js
similarity index 92%
rename from web/settings/assets/device-79947814.js
rename to web/settings/assets/device-66b6ca53.js
index 40e9924784..d3de4d3c11 100644
--- a/web/settings/assets/device-79947814.js
+++ b/web/settings/assets/device-66b6ca53.js
@@ -1 +1 @@
-import{_ as f,u as a,k as i,l as _,D as l,N as g,y as v,x as b,z as w,A as s,B as d}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const x={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(u,e=void 0){this.$emit("update:configuration",{value:u,object:e})}}},V={class:"device-alphaess"},C={class:"small"};function S(u,e,o,y,B,n){const m=a("openwb-base-heading"),r=a("openwb-base-select-input"),p=a("openwb-base-text-input"),c=a("openwb-base-number-input");return i(),_("div",V,[l(m,null,{default:g(()=>[v(" Einstellungen für Alpha ESS "),b("span",C,"(Modul: "+w(u.$options.name)+")",1)]),_:1}),l(r,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(i(),s(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):d("",!0),o.configuration.source==1?(i(),s(c,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":o.configuration.port,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])):d("",!0),o.configuration.source==1?(i(),s(c,{key:2,title:"Modbus ID",required:"","model-value":o.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])):d("",!0),l(r,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const E=f(x,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/device.vue"]]);export{E as default};
+import{_ as f,u as a,k as i,l as _,D as l,N as g,y as v,x as b,z as w,A as s,B as d}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const x={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(u,e=void 0){this.$emit("update:configuration",{value:u,object:e})}}},V={class:"device-alphaess"},C={class:"small"};function S(u,e,o,h,y,n){const m=a("openwb-base-heading"),r=a("openwb-base-select-input"),p=a("openwb-base-text-input"),c=a("openwb-base-number-input");return i(),_("div",V,[l(m,null,{default:g(()=>[v(" Einstellungen für Alpha ESS "),b("span",C,"(Modul: "+w(u.$options.name)+")",1)]),_:1}),l(r,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(i(),s(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):d("",!0),o.configuration.source==1?(i(),s(c,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":o.configuration.port,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])):d("",!0),o.configuration.source==1?(i(),s(c,{key:2,title:"Modbus ID",required:"","model-value":o.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])):d("",!0),l(r,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const E=f(x,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-4e0ae06c.js b/web/settings/assets/device-67447569.js
similarity index 71%
rename from web/settings/assets/device-4e0ae06c.js
rename to web/settings/assets/device-67447569.js
index f9bd76c506..d419affa1d 100644
--- a/web/settings/assets/device-4e0ae06c.js
+++ b/web/settings/assets/device-67447569.js
@@ -1 +1 @@
-import{_ as u,u as o,k as c,l as p,D as n,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const B=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/device.vue"]]);export{B as default};
+import{_ as c,u as o,k as u,l as p,D as n,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-b21e02e9.js b/web/settings/assets/device-6bc2e333.js
similarity index 73%
rename from web/settings/assets/device-b21e02e9.js
rename to web/settings/assets/device-6bc2e333.js
index befb0baf00..650ff30b49 100644
--- a/web/settings/assets/device-b21e02e9.js
+++ b/web/settings/assets/device-6bc2e333.js
@@ -1 +1 @@
-import{_ as l,u as s,k as p,l as m,D as t,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-sem"},x={class:"small"};function w(n,e,a,C,V,i){const d=s("openwb-base-heading"),r=s("openwb-base-text-input"),u=s("openwb-base-number-input");return p(),m("div",v,[t(d,null,{default:c(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const E=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_sem/device.vue"]]);export{E as default};
+import{_ as r,u as s,k as p,l as m,D as t,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-sem"},x={class:"small"};function w(n,e,a,k,C,i){const d=s("openwb-base-heading"),l=s("openwb-base-text-input"),u=s("openwb-base-number-input");return p(),m("div",v,[t(d,null,{default:c(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const E=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-fca4d491.js b/web/settings/assets/device-71b3befd.js
similarity index 74%
rename from web/settings/assets/device-fca4d491.js
rename to web/settings/assets/device-71b3befd.js
index a26ed182da..e94ab96a0b 100644
--- a/web/settings/assets/device-fca4d491.js
+++ b/web/settings/assets/device-71b3befd.js
@@ -1 +1 @@
-import{_ as r,u,k as l,l as p,D as n,N as c,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sunways"},w={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/device.vue"]]);export{V as default};
+import{_ as r,u,k as l,l as p,D as n,N as c,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},w={class:"device-sunways"},v={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",w,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-5c5eff36.js b/web/settings/assets/device-7328c01a.js
similarity index 92%
rename from web/settings/assets/device-5c5eff36.js
rename to web/settings/assets/device-7328c01a.js
index 764d0a46bd..cbf12865a4 100644
--- a/web/settings/assets/device-5c5eff36.js
+++ b/web/settings/assets/device-7328c01a.js
@@ -1 +1 @@
-import{_ as l,u as o,k as p,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-sunnyisland"},w={class:"small"};function x(n,e,s,y,h,i){const u=o("openwb-base-heading"),d=o("openwb-base-text-input"),r=o("openwb-base-number-input");return p(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für Sunny Island "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Port",required:"",min:1,max:65535,"model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_island/device.vue"]]);export{q as default};
+import{_ as l,u as o,k as p,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-sunnyisland"},w={class:"small"};function x(n,e,s,y,h,i){const u=o("openwb-base-heading"),d=o("openwb-base-text-input"),r=o("openwb-base-number-input");return p(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für Sunny Island "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Port",required:"",min:1,max:65535,"model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-d35b0355.js b/web/settings/assets/device-74cc8223.js
similarity index 94%
rename from web/settings/assets/device-d35b0355.js
rename to web/settings/assets/device-74cc8223.js
index dbdac94200..5e08d1e71e 100644
--- a/web/settings/assets/device-d35b0355.js
+++ b/web/settings/assets/device-74cc8223.js
@@ -1 +1 @@
-import{_ as l,u,k as p,l as m,D as o,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-varta"},x={class:"small"};function w(n,e,a,V,C,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[o(s,null,{default:c(()=>[_(" Einstellungen für Varta "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/device.vue"]]);export{B as default};
+import{_ as l,u,k as p,l as m,D as o,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-varta"},x={class:"small"};function w(n,e,a,V,C,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[o(s,null,{default:c(()=>[_(" Einstellungen für Varta "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-7bcef0cb.js b/web/settings/assets/device-7bcef0cb.js
deleted file mode 100644
index 5e3e676673..0000000000
--- a/web/settings/assets/device-7bcef0cb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u,k as l,l as p,D as o,N as c,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-byd"},b={class:"small"};function w(n,e,a,y,x,i){const d=u("openwb-base-heading"),s=u("openwb-base-text-input");return l(),p("div",v,[o(d,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-7d20d912.js b/web/settings/assets/device-7d20d912.js
new file mode 100644
index 0000000000..25da44ca8b
--- /dev/null
+++ b/web/settings/assets/device-7d20d912.js
@@ -0,0 +1 @@
+import{_ as r,u as t,k as l,l as c,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(o,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),c("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-6513a22e.js b/web/settings/assets/device-7e7c253d.js
similarity index 79%
rename from web/settings/assets/device-6513a22e.js
rename to web/settings/assets/device-7e7c253d.js
index 1cd68aa828..89882f59ea 100644
--- a/web/settings/assets/device-6513a22e.js
+++ b/web/settings/assets/device-7e7c253d.js
@@ -1 +1 @@
-import{_ as l,u,k as p,l as m,D as t,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-carlogavazzi"},x={class:"small"};function z(n,e,a,w,C,i){const r=u("openwb-base-heading"),s=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[t(r,null,{default:c(()=>[_(" Einstellungen für Carlo Gavazzi "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const y=l(g,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/device.vue"]]);export{y as default};
+import{_ as l,u,k as p,l as m,D as t,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-carlogavazzi"},z={class:"small"};function x(n,e,a,w,C,i){const r=u("openwb-base-heading"),s=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[t(r,null,{default:c(()=>[_(" Einstellungen für Carlo Gavazzi "),f("span",z,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const y=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-f969614a.js b/web/settings/assets/device-85271457.js
similarity index 75%
rename from web/settings/assets/device-f969614a.js
rename to web/settings/assets/device-85271457.js
index 8f6a610dd2..1ae93f3895 100644
--- a/web/settings/assets/device-f969614a.js
+++ b/web/settings/assets/device-85271457.js
@@ -1 +1 @@
-import{_ as c,u as o,k as l,l as _,D as n,N as s,y as a,x as g,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),_("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),g("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const y=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/device.vue"]]);export{y as default};
+import{_ as c,u as o,k as l,l as g,D as n,N as s,y as a,x as _,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),g("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),_("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const y=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-f386c17f.js b/web/settings/assets/device-93d7ec8d.js
similarity index 70%
rename from web/settings/assets/device-f386c17f.js
rename to web/settings/assets/device-93d7ec8d.js
index 99c076e934..485adf8c9c 100644
--- a/web/settings/assets/device-f386c17f.js
+++ b/web/settings/assets/device-93d7ec8d.js
@@ -1 +1 @@
-import{_ as p,u as o,k as r,l as c,D as a,N as _,y as m,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceShelly",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-shelly"},h={class:"small"};function y(t,e,i,w,x,l){const s=o("openwb-base-heading"),u=o("openwb-base-text-input"),d=o("openwb-base-select-input");return r(),c("div",b,[a(s,null,{default:_(()=>[m(" Einstellungen für Shelly "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>l.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:1,text:"1 (z.B. Shelly 1pm/ Shelly 3EM/ ...)"},{value:2,text:"2 (z.B. Shelly 1pm plus/ Shelly Pro3EM/ ...)"}],"model-value":i.configuration.generation,"onUpdate:modelValue":e[1]||(e[1]=n=>l.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"])])}const C=p(v,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/device.vue"]]);export{C as default};
+import{_ as p,u as o,k as r,l as c,D as a,N as _,y as m,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceShelly",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-shelly"},h={class:"small"};function y(t,e,l,w,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-text-input"),d=o("openwb-base-select-input");return r(),c("div",b,[a(s,null,{default:_(()=>[m(" Einstellungen für Shelly "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":l.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:1,text:"1 (z.B. Shelly 1pm/ Shelly 3EM/ ...)"},{value:2,text:"2 (z.B. Shelly 1pm plus/ Shelly Pro3EM/ ...)"}],"model-value":l.configuration.generation,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"])])}const C=p(v,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-9c5030b4.js b/web/settings/assets/device-96e65ee3.js
similarity index 92%
rename from web/settings/assets/device-9c5030b4.js
rename to web/settings/assets/device-96e65ee3.js
index ae9ff97fb5..28aea1fdd5 100644
--- a/web/settings/assets/device-9c5030b4.js
+++ b/web/settings/assets/device-96e65ee3.js
@@ -1 +1 @@
-import{_ as r,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const y=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/device.vue"]]);export{y as default};
+import{_ as r,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const y=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-e62fefa8.js b/web/settings/assets/device-9b78528f.js
similarity index 94%
rename from web/settings/assets/device-e62fefa8.js
rename to web/settings/assets/device-9b78528f.js
index 5636f1f012..b1b0f5969a 100644
--- a/web/settings/assets/device-e62fefa8.js
+++ b/web/settings/assets/device-9b78528f.js
@@ -1 +1 @@
-import{_ as p,u as n,k as _,l as f,D as o,N as s,y as a,x as m,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const N=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/device.vue"]]);export{N as default};
+import{_ as p,u as n,k as _,l as f,D as o,N as s,y as a,x as m,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const N=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-27b7a3b2.js b/web/settings/assets/device-9f0dbb75.js
similarity index 95%
rename from web/settings/assets/device-27b7a3b2.js
rename to web/settings/assets/device-9f0dbb75.js
index f48d2ba3e2..57f78c9000 100644
--- a/web/settings/assets/device-27b7a3b2.js
+++ b/web/settings/assets/device-9f0dbb75.js
@@ -1 +1 @@
-import{_,u as n,k as b,l as f,D as t,N as a,y as o,x as u,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,x,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren Smarthome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")]),_:1}),t(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"",min:1,max:65535,"model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const y=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/device.vue"]]);export{y as default};
+import{_,u as n,k as b,l as f,D as t,N as a,y as o,x as u,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,x,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren Smarthome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")]),_:1}),t(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"",min:1,max:65535,"model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const y=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-1ffb41f0.js b/web/settings/assets/device-9ff76175.js
similarity index 95%
rename from web/settings/assets/device-1ffb41f0.js
rename to web/settings/assets/device-9ff76175.js
index 417efff742..0e15b08120 100644
--- a/web/settings/assets/device-1ffb41f0.js
+++ b/web/settings/assets/device-9ff76175.js
@@ -1 +1 @@
-import{_ as u,u as t,k as p,l as c,D as n,N as l,y as _,x as m,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/device.vue"]]);export{C as default};
+import{_ as u,u as t,k as p,l as c,D as n,N as l,y as _,x as m,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-e10d0dda.js b/web/settings/assets/device-a100762d.js
similarity index 63%
rename from web/settings/assets/device-e10d0dda.js
rename to web/settings/assets/device-a100762d.js
index b06e977edc..b648dfad48 100644
--- a/web/settings/assets/device-e10d0dda.js
+++ b/web/settings/assets/device-a100762d.js
@@ -1 +1 @@
-import{_ as r,u,k as l,l as c,D as n,N as p,y as f,x as m,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",v,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const D=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/device.vue"]]);export{D as default};
+import{_ as r,u,k as l,l as c,D as n,N as p,y as f,x as m,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},_={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",_,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{D as default};
diff --git a/web/settings/assets/device-c6a1db4d.js b/web/settings/assets/device-a326b87b.js
similarity index 93%
rename from web/settings/assets/device-c6a1db4d.js
rename to web/settings/assets/device-a326b87b.js
index e42fc5c62c..c4d6439940 100644
--- a/web/settings/assets/device-c6a1db4d.js
+++ b/web/settings/assets/device-a326b87b.js
@@ -1 +1 @@
-import{_ as l,u,k as p,l as m,D as t,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-saxpower"},x={class:"small"};function w(n,e,a,C,V,i){const d=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-number-input");return p(),m("div",v,[t(d,null,{default:c(()=>[_(" Einstellungen für Saxpower "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/device.vue"]]);export{B as default};
+import{_ as l,u,k as p,l as m,D as t,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-saxpower"},x={class:"small"};function w(n,e,a,C,V,i){const d=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-number-input");return p(),m("div",v,[t(d,null,{default:c(()=>[_(" Einstellungen für Saxpower "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-6e379819.js b/web/settings/assets/device-a3a79e85.js
similarity index 95%
rename from web/settings/assets/device-6e379819.js
rename to web/settings/assets/device-a3a79e85.js
index 386aee576b..e9ed34d6da 100644
--- a/web/settings/assets/device-6e379819.js
+++ b/web/settings/assets/device-a3a79e85.js
@@ -1 +1 @@
-import{_ as m,u as t,k as _,l as f,D as o,N as i,y as s,x as r,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function y(n,e,a,S,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const B=m(g,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/device.vue"]]);export{B as default};
+import{_ as m,u as t,k as _,l as f,D as o,N as i,y as s,x as r,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function y(n,e,a,S,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const B=m(g,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-20c840b8.js b/web/settings/assets/device-a3aaa72b.js
similarity index 95%
rename from web/settings/assets/device-20c840b8.js
rename to web/settings/assets/device-a3aaa72b.js
index 42b34b9cf0..5f7e3e7cf8 100644
--- a/web/settings/assets/device-20c840b8.js
+++ b/web/settings/assets/device-a3aaa72b.js
@@ -1 +1 @@
-import{_,u as n,k as m,l as b,D as t,N as r,y as u,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},y={class:"device-sunnyboy"},w={class:"small"};function x(o,e,i,h,k,s){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),l=n("openwb-base-text-input"),c=n("openwb-base-number-input");return m(),b("div",y,[t(d,null,{default:r(()=>[u(" Einstellungen für SMA Sunny Boy/Tripower "),f("span",w,"(Modul: "+v(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:r(()=>[u(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>s.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),t(c,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=a=>s.updateConfiguration(a,"configuration.port"))},null,8,["model-value"])])}const S=_(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/device.vue"]]);export{S as default};
+import{_,u as n,k as m,l as b,D as t,N as r,y as u,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},y={class:"device-sunnyboy"},w={class:"small"};function x(o,e,i,h,k,s){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),l=n("openwb-base-text-input"),c=n("openwb-base-number-input");return m(),b("div",y,[t(d,null,{default:r(()=>[u(" Einstellungen für SMA Sunny Boy/Tripower "),f("span",w,"(Modul: "+v(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:r(()=>[u(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>s.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),t(c,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=a=>s.updateConfiguration(a,"configuration.port"))},null,8,["model-value"])])}const S=_(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{S as default};
diff --git a/web/settings/assets/device-e6134b3a.js b/web/settings/assets/device-a5b9720c.js
similarity index 95%
rename from web/settings/assets/device-e6134b3a.js
rename to web/settings/assets/device-a5b9720c.js
index 904ad932d1..3959fdce8d 100644
--- a/web/settings/assets/device-e6134b3a.js
+++ b/web/settings/assets/device-a5b9720c.js
@@ -1 +1 @@
-import{_ as m,u as d,k as p,l as c,D as i,N as r,y as u,x as g,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-lg"},v={class:"small"};function w(n,e,o,h,y,s){const l=d("openwb-base-heading"),a=d("openwb-base-text-input");return p(),c("div",b,[i(l,null,{default:r(()=>[u(" Einstellungen für LG ESS V1.0 "),g("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Passwort",subtype:"password",required:"","model-value":o.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')]),_:1},8,["model-value"])])}const V=m(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/device.vue"]]);export{V as default};
+import{_ as m,u as d,k as p,l as c,D as i,N as r,y as u,x as g,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-lg"},v={class:"small"};function w(n,e,o,h,y,s){const l=d("openwb-base-heading"),a=d("openwb-base-text-input");return p(),c("div",b,[i(l,null,{default:r(()=>[u(" Einstellungen für LG ESS V1.0 "),g("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Passwort",subtype:"password",required:"","model-value":o.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')]),_:1},8,["model-value"])])}const V=m(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-ca6e69b3.js b/web/settings/assets/device-a875f223.js
similarity index 91%
rename from web/settings/assets/device-ca6e69b3.js
rename to web/settings/assets/device-a875f223.js
index 7615520b4a..5719cb0fef 100644
--- a/web/settings/assets/device-ca6e69b3.js
+++ b/web/settings/assets/device-a875f223.js
@@ -1 +1 @@
-import{_ as d,u,k as l,l as p,D as n,N as c,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,y,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const V=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/device.vue"]]);export{V as default};
+import{_ as d,u,k as l,l as p,D as n,N as c,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,y,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const V=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-b37a9e8d.js b/web/settings/assets/device-ab2aea83.js
similarity index 67%
rename from web/settings/assets/device-b37a9e8d.js
rename to web/settings/assets/device-ab2aea83.js
index 2de7348484..46ffe7b1c2 100644
--- a/web/settings/assets/device-b37a9e8d.js
+++ b/web/settings/assets/device-ab2aea83.js
@@ -1 +1 @@
-import{_ as r,u,k as p,l as m,D as n,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceQCells",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-qcells"},x={class:"small"};function w(t,e,i,C,q,a){const s=u("openwb-base-heading"),l=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[n(s,null,{default:c(()=>[_(" Einstellungen für QCells ESS "),f("span",x,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),n(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),n(d,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/device.vue"]]);export{B as default};
+import{_ as r,u,k as p,l as c,D as n,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceQCells",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-qcells"},x={class:"small"};function w(t,e,i,C,q,a){const d=u("openwb-base-heading"),l=u("openwb-base-text-input"),s=u("openwb-base-number-input");return p(),c("div",v,[n(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",x,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),n(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),n(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-03024a15.js b/web/settings/assets/device-accf2fa8.js
similarity index 92%
rename from web/settings/assets/device-03024a15.js
rename to web/settings/assets/device-accf2fa8.js
index 567bea3996..e433a14339 100644
--- a/web/settings/assets/device-03024a15.js
+++ b/web/settings/assets/device-accf2fa8.js
@@ -1 +1 @@
-import{_ as c,u as n,k as r,l as d,D as o,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/device.vue"]]);export{x as default};
+import{_ as c,u as n,k as r,l as d,D as o,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/device.vue"]]);export{x as default};
diff --git a/web/settings/assets/device-a1360448.js b/web/settings/assets/device-b0485aae.js
similarity index 93%
rename from web/settings/assets/device-a1360448.js
rename to web/settings/assets/device-b0485aae.js
index e491bc18ee..776d15549b 100644
--- a/web/settings/assets/device-a1360448.js
+++ b/web/settings/assets/device-b0485aae.js
@@ -1 +1 @@
-import{_ as p,u as n,k as r,l as c,D as a,N as m,y as _,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceTasmota",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-tasmota"},x={class:"small"};function h(t,e,s,w,B,i){const u=n("openwb-base-heading"),d=n("openwb-base-text-input"),l=n("openwb-base-select-input");return r(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für Tasmota "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Phase",notSelected:"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":s.configuration.phase,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const y=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/device.vue"]]);export{y as default};
+import{_ as p,u as n,k as r,l as c,D as a,N as m,y as _,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceTasmota",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-tasmota"},x={class:"small"};function h(t,e,s,w,B,i){const u=n("openwb-base-heading"),d=n("openwb-base-text-input"),l=n("openwb-base-select-input");return r(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für Tasmota "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Phase",notSelected:"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":s.configuration.phase,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const y=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-c3a7fe4c.js b/web/settings/assets/device-b394014f.js
similarity index 89%
rename from web/settings/assets/device-c3a7fe4c.js
rename to web/settings/assets/device-b394014f.js
index 3b40389843..982a8050b2 100644
--- a/web/settings/assets/device-c3a7fe4c.js
+++ b/web/settings/assets/device-b394014f.js
@@ -1 +1 @@
-import{_ as u,u as o,k as c,l as p,D as n,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/device.vue"]]);export{C as default};
+import{_ as u,u as o,k as c,l as p,D as n,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-7c73cd7c.js b/web/settings/assets/device-b6cf16cc.js
similarity index 93%
rename from web/settings/assets/device-7c73cd7c.js
rename to web/settings/assets/device-b6cf16cc.js
index ebc807d51a..35e2802365 100644
--- a/web/settings/assets/device-7c73cd7c.js
+++ b/web/settings/assets/device-b6cf16cc.js
@@ -1 +1 @@
-import{_,u as t,k as m,l as b,D as n,N as d,y as f,x as r,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceDeye",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},w={class:"device-deye"},y={class:"small"},h=r("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1);function x(o,e,i,C,D,s){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),p=t("openwb-base-text-input"),c=t("openwb-base-number-input");return m(),b("div",w,[n(u,null,{default:d(()=>[f(" Einstellungen für Deye "),r("span",y,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(l,{subtype:"info"},{default:d(()=>[h]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>s.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),n(c,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=a=>s.updateConfiguration(a,"configuration.port"))},null,8,["model-value"])])}const k=_(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/device.vue"]]);export{k as default};
+import{_,u as t,k as m,l as b,D as n,N as d,y as f,x as r,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceDeye",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},w={class:"device-deye"},y={class:"small"},h=r("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1);function x(o,e,i,C,D,s){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),p=t("openwb-base-text-input"),c=t("openwb-base-number-input");return m(),b("div",w,[n(u,null,{default:d(()=>[f(" Einstellungen für Deye "),r("span",y,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(l,{subtype:"info"},{default:d(()=>[h]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>s.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),n(c,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=a=>s.updateConfiguration(a,"configuration.port"))},null,8,["model-value"])])}const k=_(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{k as default};
diff --git a/web/settings/assets/device-9953198a.js b/web/settings/assets/device-bcd1ab1c.js
similarity index 94%
rename from web/settings/assets/device-9953198a.js
rename to web/settings/assets/device-bcd1ab1c.js
index 2cb3f5cf7e..0c516088ad 100644
--- a/web/settings/assets/device-9953198a.js
+++ b/web/settings/assets/device-bcd1ab1c.js
@@ -1 +1 @@
-import{_ as c,u as r,k as m,l as g,D as t,N as s,y as d,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function h(o,e,i,w,S,a){const l=r("openwb-base-heading"),p=r("openwb-base-text-input"),u=r("openwb-base-number-input");return m(),g("div",v,[t(l,null,{default:s(()=>[d(" Einstellungen für Solax "),_("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",min:1,max:65535,placeholder:502,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},{help:s(()=>[d(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")]),_:1},8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},{help:s(()=>[d(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/device.vue"]]);export{C as default};
+import{_ as c,u as r,k as m,l as g,D as t,N as s,y as d,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function h(o,e,i,w,S,a){const l=r("openwb-base-heading"),p=r("openwb-base-text-input"),u=r("openwb-base-number-input");return m(),g("div",v,[t(l,null,{default:s(()=>[d(" Einstellungen für Solax "),_("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",min:1,max:65535,placeholder:502,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},{help:s(()=>[d(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")]),_:1},8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},{help:s(()=>[d(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-bde30920.js b/web/settings/assets/device-bde30920.js
deleted file mode 100644
index cf1c4b4b25..0000000000
--- a/web/settings/assets/device-bde30920.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as o,k as l,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceMTec",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-mtec"},w={class:"small"};function x(t,e,i,h,C,s){const u=o("openwb-base-heading"),d=o("openwb-base-text-input"),r=o("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für M-Tec "),f("span",w,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),a(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const B=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-cdd190a8.js b/web/settings/assets/device-bee08fb1.js
similarity index 82%
rename from web/settings/assets/device-cdd190a8.js
rename to web/settings/assets/device-bee08fb1.js
index dd126da49c..714769a062 100644
--- a/web/settings/assets/device-cdd190a8.js
+++ b/web/settings/assets/device-bee08fb1.js
@@ -1 +1 @@
-import{_ as c,u as o,k as _,l as m,D as a,N as d,y as r,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:d(()=>[r(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:d(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/device.vue"]]);export{V as default};
+import{_ as c,u as o,k as _,l as m,D as a,N as r,y as d,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:r(()=>[d(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:r(()=>[d(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-bff08244.js b/web/settings/assets/device-bff08244.js
deleted file mode 100644
index e37e15de85..0000000000
--- a/web/settings/assets/device-bff08244.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as o,k as c,l,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),l("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-9d8b0b7b.js b/web/settings/assets/device-c2c254cf.js
similarity index 69%
rename from web/settings/assets/device-9d8b0b7b.js
rename to web/settings/assets/device-c2c254cf.js
index 17478939d5..287d60475a 100644
--- a/web/settings/assets/device-9d8b0b7b.js
+++ b/web/settings/assets/device-c2c254cf.js
@@ -1 +1 @@
-import{_ as u,u as o,k as c,l as p,D as n,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Smartfox "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/device.vue"]]);export{C as default};
+import{_ as u,u as o,k as c,l as p,D as n,N as l,y as f,x as m,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[f(" Einstellungen für Smartfox "),m("span",g,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-d89c28aa.js b/web/settings/assets/device-c94e89d5.js
similarity index 72%
rename from web/settings/assets/device-d89c28aa.js
rename to web/settings/assets/device-c94e89d5.js
index 5de7038930..8fa941c094 100644
--- a/web/settings/assets/device-d89c28aa.js
+++ b/web/settings/assets/device-c94e89d5.js
@@ -1 +1 @@
-import{_ as l,u,k as p,l as m,D as t,N as c,y as _,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[t(s,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const B=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/device.vue"]]);export{B as default};
+import{_ as l,u,k as p,l as m,D as t,N as c,y as _,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const d=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-number-input");return p(),m("div",g,[t(d,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const B=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-85bbc3b6.js b/web/settings/assets/device-cc90e6fa.js
similarity index 96%
rename from web/settings/assets/device-85bbc3b6.js
rename to web/settings/assets/device-cc90e6fa.js
index fd23048315..3c31ee6863 100644
--- a/web/settings/assets/device-85bbc3b6.js
+++ b/web/settings/assets/device-cc90e6fa.js
@@ -1 +1 @@
-import{_ as c,u,k as _,l as b,D as t,N as d,y as r,x as l,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-huawei"},w={class:"small"},h=l("br",null,null,-1);function x(o,e,i,D,V,a){const m=u("openwb-base-heading"),p=u("openwb-base-text-input"),s=u("openwb-base-number-input");return _(),b("div",v,[t(m,null,{default:d(()=>[r(" Einstellungen für Huawei "),l("span",w,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},{help:d(()=>[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),h,r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=c(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/device.vue"]]);export{q as default};
+import{_ as c,u,k as _,l as b,D as t,N as d,y as r,x as l,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-huawei"},w={class:"small"},h=l("br",null,null,-1);function x(o,e,i,D,V,a){const m=u("openwb-base-heading"),p=u("openwb-base-text-input"),s=u("openwb-base-number-input");return _(),b("div",v,[t(m,null,{default:d(()=>[r(" Einstellungen für Huawei "),l("span",w,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},{help:d(()=>[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),h,r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=c(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-8bcc2213.js b/web/settings/assets/device-d7ef046e.js
similarity index 92%
rename from web/settings/assets/device-8bcc2213.js
rename to web/settings/assets/device-d7ef046e.js
index 67bbab1bd4..d9f005050a 100644
--- a/web/settings/assets/device-8bcc2213.js
+++ b/web/settings/assets/device-d7ef046e.js
@@ -1 +1 @@
-import{_ as p,u as d,k as c,l as m,D as n,N as r,y as u,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,C,x,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")]),_:1},8,["model-value"])])}const h=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/device.vue"]]);export{h as default};
+import{_ as p,u as d,k as c,l as m,D as n,N as r,y as u,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,C,x,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")]),_:1},8,["model-value"])])}const h=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-78545a1c.js b/web/settings/assets/device-dd9c6eba.js
similarity index 86%
rename from web/settings/assets/device-78545a1c.js
rename to web/settings/assets/device-dd9c6eba.js
index a3816d0d7f..fd61de4908 100644
--- a/web/settings/assets/device-78545a1c.js
+++ b/web/settings/assets/device-dd9c6eba.js
@@ -1 +1 @@
-import{_ as l,u,k as p,l as m,D as t,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-e3dc"},x={class:"small"};function w(n,e,a,C,V,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[t(s,null,{default:c(()=>[_(" Einstellungen für E3DC "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/device.vue"]]);export{y as default};
+import{_ as l,u,k as p,l as c,D as t,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-e3dc"},x={class:"small"};function w(n,e,a,C,V,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),c("div",v,[t(s,null,{default:m(()=>[_(" Einstellungen für E3DC "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-66c1386d.js b/web/settings/assets/device-df771d66.js
similarity index 93%
rename from web/settings/assets/device-66c1386d.js
rename to web/settings/assets/device-df771d66.js
index 486ba67471..b141908516 100644
--- a/web/settings/assets/device-66c1386d.js
+++ b/web/settings/assets/device-df771d66.js
@@ -1 +1 @@
-import{_ as c,u as n,k as p,l as u,D as o,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/virtual/device.vue"]]);export{k as default};
+import{_ as c,u as n,k as p,l as u,D as o,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/device.vue"]]);export{k as default};
diff --git a/web/settings/assets/device-03c90ad8.js b/web/settings/assets/device-e4af98fb.js
similarity index 94%
rename from web/settings/assets/device-03c90ad8.js
rename to web/settings/assets/device-e4af98fb.js
index c490509c8f..1ec775ab15 100644
--- a/web/settings/assets/device-03c90ad8.js
+++ b/web/settings/assets/device-e4af98fb.js
@@ -1 +1 @@
-import{_ as p,u as n,k as l,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer"},w={class:"small"};function x(t,e,i,h,C,s){const u=n("openwb-base-heading"),r=n("openwb-base-text-input"),d=n("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für Studer "),f("span",w,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const y=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/device.vue"]]);export{y as default};
+import{_ as p,u as n,k as l,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer"},w={class:"small"};function x(t,e,i,h,C,s){const u=n("openwb-base-heading"),r=n("openwb-base-text-input"),d=n("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für Studer "),f("span",w,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const y=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-983fa414.js b/web/settings/assets/device-e78c3c94.js
similarity index 91%
rename from web/settings/assets/device-983fa414.js
rename to web/settings/assets/device-e78c3c94.js
index 3067b0439c..6a415d15cb 100644
--- a/web/settings/assets/device-983fa414.js
+++ b/web/settings/assets/device-e78c3c94.js
@@ -1 +1 @@
-import{_ as c,u as o,k as _,l as m,D as i,N as r,y as n,x as a,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const u=o("openwb-base-heading"),p=o("openwb-base-text-input");return _(),m("div",b,[i(u,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const y=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/device.vue"]]);export{y as default};
+import{_ as c,u as o,k as _,l as m,D as i,N as r,y as n,x as a,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const u=o("openwb-base-heading"),p=o("openwb-base-text-input");return _(),m("div",b,[i(u,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const y=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-3d446bca.js b/web/settings/assets/device-f298ed3b.js
similarity index 57%
rename from web/settings/assets/device-3d446bca.js
rename to web/settings/assets/device-f298ed3b.js
index 62335e36d2..e0f4d053d3 100644
--- a/web/settings/assets/device-3d446bca.js
+++ b/web/settings/assets/device-f298ed3b.js
@@ -1 +1 @@
-import{_ as p,u as o,k as l,l as c,D as i,N as m,y as _,x as g,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSigenergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-sigenergy"},w={class:"small"};function x(n,e,a,y,h,s){const u=o("openwb-base-heading"),d=o("openwb-base-text-input"),r=o("openwb-base-number-input");return l(),c("div",v,[i(u,null,{default:m(()=>[_(" Einstellungen für Sigenergy "),g("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const B=p(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/device.vue"]]);export{B as default};
+import{_ as p,u as o,k as l,l as c,D as i,N as m,y as _,x as g,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSigenergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-sigenergy"},y={class:"small"};function w(n,e,a,x,h,s){const r=o("openwb-base-heading"),u=o("openwb-base-text-input"),d=o("openwb-base-number-input");return l(),c("div",v,[i(r,null,{default:m(()=>[_(" Einstellungen für Sigenergy "),g("span",y,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-88b475f8.js b/web/settings/assets/device-f6cff0ea.js
similarity index 69%
rename from web/settings/assets/device-88b475f8.js
rename to web/settings/assets/device-f6cff0ea.js
index c03edafee2..5e59d9fe31 100644
--- a/web/settings/assets/device-88b475f8.js
+++ b/web/settings/assets/device-f6cff0ea.js
@@ -1 +1 @@
-import{_ as l,u as a,k as c,l as u,D as s,N as o,y as n,x as i,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},g={class:"device-mqtt"},_={class:"small"},h=i("br",null,null,-1);function f(e,t,b,v,k,w){const r=a("openwb-base-heading"),d=a("openwb-base-alert");return c(),u("div",g,[s(r,null,{default:o(()=>[n(" Einstellungen für MQTT "),i("span",_,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),s(d,{subtype:"info"},{default:o(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),h,n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")]),_:1})])}const T=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/device.vue"]]);export{T as default};
+import{_ as c,u as a,k as l,l as u,D as s,N as i,y as n,x as o,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},g={class:"device-mqtt"},_={class:"small"},h=o("br",null,null,-1);function f(e,t,b,v,k,w){const r=a("openwb-base-heading"),d=a("openwb-base-alert");return l(),u("div",g,[s(r,null,{default:i(()=>[n(" Einstellungen für MQTT "),o("span",_,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),s(d,{subtype:"info"},{default:i(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),h,n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")]),_:1})])}const T=c(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{T as default};
diff --git a/web/settings/assets/device-3968fce4.js b/web/settings/assets/device-f8acb969.js
similarity index 91%
rename from web/settings/assets/device-3968fce4.js
rename to web/settings/assets/device-f8acb969.js
index 7ac88e1907..f57465831f 100644
--- a/web/settings/assets/device-3968fce4.js
+++ b/web/settings/assets/device-f8acb969.js
@@ -1 +1 @@
-import{_ as d,u,k as l,l as p,D as n,N as c,y as f,x as m,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,y,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/device.vue"]]);export{V as default};
+import{_ as d,u,k as l,l as p,D as n,N as c,y as f,x as m,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,y,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-f30e2b4f.js b/web/settings/assets/device-f96e49ba.js
similarity index 84%
rename from web/settings/assets/device-f30e2b4f.js
rename to web/settings/assets/device-f96e49ba.js
index b420ba9b58..d91830d313 100644
--- a/web/settings/assets/device-f30e2b4f.js
+++ b/web/settings/assets/device-f96e49ba.js
@@ -1 +1 @@
-import{_ as p,u as n,k as r,l as d,D as o,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_bat_kit/device.vue"]]);export{$ as default};
+import{_ as p,u as n,k as r,l as d,D as o,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-968f2783.js b/web/settings/assets/device-fa86e6ca.js
similarity index 85%
rename from web/settings/assets/device-968f2783.js
rename to web/settings/assets/device-fa86e6ca.js
index 9392a3301d..b196dfec1d 100644
--- a/web/settings/assets/device-968f2783.js
+++ b/web/settings/assets/device-fa86e6ca.js
@@ -1 +1 @@
-import{_ as l,u,k as p,l as m,D as n,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-janitza"},x={class:"small"};function w(o,e,a,C,V,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[n(s,null,{default:c(()=>[_(" Einstellungen für Janitza "),f("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),n(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])])}const j=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/device.vue"]]);export{j as default};
+import{_ as l,u,k as p,l as m,D as n,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-janitza"},x={class:"small"};function w(o,e,a,z,C,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[n(s,null,{default:c(()=>[_(" Einstellungen für Janitza "),f("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),n(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-8ebdd328.js b/web/settings/assets/device-ff88dc47.js
similarity index 71%
rename from web/settings/assets/device-8ebdd328.js
rename to web/settings/assets/device-ff88dc47.js
index 1612907217..09d2baf0b1 100644
--- a/web/settings/assets/device-8ebdd328.js
+++ b/web/settings/assets/device-ff88dc47.js
@@ -1 +1 @@
-import{_ as l,u,k as p,l as m,D as n,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceZCS",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-azzurro_zcs"},x={class:"small"};function z(t,e,a,w,C,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[n(s,null,{default:c(()=>[_(" Einstellungen für Azzurro ZCS "),f("span",x,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),n(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const y=l(g,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/device.vue"]]);export{y as default};
+import{_ as l,u,k as p,l as c,D as n,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceZCS",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-azzurro_zcs"},z={class:"small"};function x(t,e,a,w,C,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),c("div",v,[n(s,null,{default:m(()=>[_(" Einstellungen für Azzurro ZCS "),f("span",z,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),n(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const y=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/electricity_tariff-4caccbff.js b/web/settings/assets/electricity_tariff-78c8d847.js
similarity index 97%
rename from web/settings/assets/electricity_tariff-4caccbff.js
rename to web/settings/assets/electricity_tariff-78c8d847.js
index 040a506ad7..06ef5158fe 100644
--- a/web/settings/assets/electricity_tariff-4caccbff.js
+++ b/web/settings/assets/electricity_tariff-78c8d847.js
@@ -1 +1 @@
-import{C as p}from"./index-3e910ceb.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
+import{C as p}from"./index-0deee932.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
diff --git a/web/settings/assets/external_inverter-c36c81de.js b/web/settings/assets/external_inverter-154b0b15.js
similarity index 91%
rename from web/settings/assets/external_inverter-c36c81de.js
rename to web/settings/assets/external_inverter-154b0b15.js
index 9b3c63cffa..244a9abcbc 100644
--- a/web/settings/assets/external_inverter-c36c81de.js
+++ b/web/settings/assets/external_inverter-154b0b15.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as a,y as r,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-external-inverter"},m={class:"small"};function b(e,t,v,x,g,h){const s=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(s,null,{default:a(()=>[r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/external_inverter.vue"]]);export{$ as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as a,y as r,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-external-inverter"},m={class:"small"};function b(e,t,v,x,g,h){const s=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(s,null,{default:a(()=>[r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/external_inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/external_inverter-4a132ee4.js b/web/settings/assets/external_inverter-355c5719.js
similarity index 89%
rename from web/settings/assets/external_inverter-4a132ee4.js
rename to web/settings/assets/external_inverter-355c5719.js
index b4a634b933..f1f75664c4 100644
--- a/web/settings/assets/external_inverter-4a132ee4.js
+++ b/web/settings/assets/external_inverter-355c5719.js
@@ -1 +1 @@
-import{_ as p,u as o,k as f,l as g,D as t,N as s,y as l,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},h={class:"device-solaredge-external-inverter"},x={class:"small"};function w(i,e,a,S,E,r){const d=o("openwb-base-heading"),c=o("openwb-base-alert"),u=o("openwb-base-number-input"),m=o("openwb-base-select-input");return f(),g("div",h,[t(d,null,{default:s(()=>[l(" Einstellungen für SolarEdge externen Wechselrichter "),_("span",x,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),t(c,{subtype:"info"},{default:s(()=>[l(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')]),_:1}),t(u,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(u,{title:"SolarEdge-Meter-ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.meter_id"))},null,8,["model-value"]),t(m,{title:"Leistung invertieren",notSelected:"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":a.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.factor"))},{help:s(()=>[l(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")]),_:1},8,["model-value"])])}const D=p(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/external_inverter.vue"]]);export{D as default};
+import{_ as p,u as o,k as g,l as f,D as t,N as s,y as l,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},h={class:"device-solaredge-external-inverter"},x={class:"small"};function w(i,e,a,S,E,r){const d=o("openwb-base-heading"),c=o("openwb-base-alert"),u=o("openwb-base-number-input"),m=o("openwb-base-select-input");return g(),f("div",h,[t(d,null,{default:s(()=>[l(" Einstellungen für SolarEdge externen Wechselrichter "),_("span",x,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),t(c,{subtype:"info"},{default:s(()=>[l(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')]),_:1}),t(u,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(u,{title:"SolarEdge-Meter-ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.meter_id"))},null,8,["model-value"]),t(m,{title:"Leistung invertieren",notSelected:"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":a.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.factor"))},{help:s(()=>[l(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")]),_:1},8,["model-value"])])}const D=p(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/external_inverter-034918bb.js b/web/settings/assets/external_inverter-ee34cc1c.js
similarity index 93%
rename from web/settings/assets/external_inverter-034918bb.js
rename to web/settings/assets/external_inverter-ee34cc1c.js
index eedf22e1be..ada37815f3 100644
--- a/web/settings/assets/external_inverter-034918bb.js
+++ b/web/settings/assets/external_inverter-ee34cc1c.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/external_inverter.vue"]]);export{$ as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/external_inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/index-3e910ceb.js b/web/settings/assets/index-0deee932.js
similarity index 96%
rename from web/settings/assets/index-3e910ceb.js
rename to web/settings/assets/index-0deee932.js
index 7dd7ede780..8662cd87c7 100644
--- a/web/settings/assets/index-3e910ceb.js
+++ b/web/settings/assets/index-0deee932.js
@@ -1 +1 @@
-import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-2dd83854.js"),["assets/Status-2dd83854.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-26d874e2.js"),["assets/ChargeLog-26d874e2.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-21256647.js"),["assets/Chart-21256647.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-9cc2f4c2.js"),["assets/GeneralConfig-9cc2f4c2.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-71cfebf9.js"),["assets/OptionalComponents-71cfebf9.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-ecbdf48d.js"),["assets/GeneralChargeConfig-ecbdf48d.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-31e43404.js"),["assets/InstantChargeConfig-31e43404.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-4e2ab231.js"),["assets/PVChargeConfig-4e2ab231.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-26b3316f.js"),["assets/TimeChargeConfig-26b3316f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-d8c705e2.js"),["assets/ScheduledChargeConfig-d8c705e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-a105c95d.js"),["assets/HardwareInstallation-a105c95d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-bf9a36c1.js"),["assets/LoadManagementConfig-bf9a36c1.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-922a298c.js"),["assets/ChargePointInstallation-922a298c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-4390a03b.js"),["assets/VehicleConfig-4390a03b.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-90995ab5.js"),["assets/CloudConfig-90995ab5.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-aa7c26e4.js"),["assets/MqttBridgeConfig-aa7c26e4.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-fab63baa.js"),["assets/DebugConfig-fab63baa.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-34834209.js"),["assets/Support-34834209.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-fe52cd90.js"),["assets/LegalSettings-fe52cd90.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-f83e90ce.js"),["assets/System-f83e90ce.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-8e77f816.js"),["assets/DataManagement-8e77f816.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-cf52f5a9.js"),["assets/InstallAssistant-cf52f5a9.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-60647c44.js"),["assets/TestingStore-60647c44.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
+import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-0e0f6b66.js"),["assets/Status-0e0f6b66.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-bb7dcf68.js"),["assets/ChargeLog-bb7dcf68.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-b41732de.js"),["assets/Chart-b41732de.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-45cfd7f0.js"),["assets/GeneralConfig-45cfd7f0.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-d3fca35b.js"),["assets/OptionalComponents-d3fca35b.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-d9dcaaa3.js"),["assets/GeneralChargeConfig-d9dcaaa3.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-f62c6c62.js"),["assets/InstantChargeConfig-f62c6c62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-a0353b9a.js"),["assets/PVChargeConfig-a0353b9a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-387e7031.js"),["assets/TimeChargeConfig-387e7031.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-cb777801.js"),["assets/ScheduledChargeConfig-cb777801.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-2c12edbc.js"),["assets/HardwareInstallation-2c12edbc.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-6b31901e.js"),["assets/LoadManagementConfig-6b31901e.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-05b3f352.js"),["assets/ChargePointInstallation-05b3f352.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-a1751954.js"),["assets/VehicleConfig-a1751954.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-fe40cc84.js"),["assets/CloudConfig-fe40cc84.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-f457be0c.js"),["assets/MqttBridgeConfig-f457be0c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-8124d78c.js"),["assets/DebugConfig-8124d78c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-89c6cc7c.js"),["assets/Support-89c6cc7c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-30e95de5.js"),["assets/LegalSettings-30e95de5.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-d59d61b7.js"),["assets/System-d59d61b7.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-5a70f628.js"),["assets/DataManagement-5a70f628.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-6dafed2f.js"),["assets/InstallAssistant-6dafed2f.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-a904ffb0.js"),["assets/TestingStore-a904ffb0.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
diff --git a/web/settings/assets/inverter-9fcabcbf.js b/web/settings/assets/inverter-008f792b.js
similarity index 90%
rename from web/settings/assets/inverter-9fcabcbf.js
rename to web/settings/assets/inverter-008f792b.js
index 25b9459133..1a4f11fb20 100644
--- a/web/settings/assets/inverter-9fcabcbf.js
+++ b/web/settings/assets/inverter-008f792b.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/inverter.vue"]]);export{C as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/inverter.vue"]]);export{C as default};
diff --git a/web/settings/assets/inverter-d25e077f.js b/web/settings/assets/inverter-01948182.js
similarity index 76%
rename from web/settings/assets/inverter-d25e077f.js
rename to web/settings/assets/inverter-01948182.js
index 7a4ff239a9..c5dbffd3d1 100644
--- a/web/settings/assets/inverter-d25e077f.js
+++ b/web/settings/assets/inverter-01948182.js
@@ -1 +1 @@
-import{_ as c,u as t,k as l,l as _,D as o,N as a,y as i,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-enphase-inverter"},h={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",b,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const y=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/inverter.vue"]]);export{y as default};
+import{_ as c,u as t,k as l,l as _,D as o,N as a,y as i,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-enphase-inverter"},b={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",h,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const y=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{y as default};
diff --git a/web/settings/assets/inverter-0e6faf4b.js b/web/settings/assets/inverter-022a27f9.js
similarity index 92%
rename from web/settings/assets/inverter-0e6faf4b.js
rename to web/settings/assets/inverter-022a27f9.js
index 41e346df6e..23975e329c 100644
--- a/web/settings/assets/inverter-0e6faf4b.js
+++ b/web/settings/assets/inverter-022a27f9.js
@@ -1 +1 @@
-import{_ as u,u as t,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceDeyeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-deye-inverter"},g={class:"small"};function h(n,e,i,y,w,a){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Deye Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>a.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/inverter.vue"]]);export{B as default};
+import{_ as u,u as t,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceDeyeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-deye-inverter"},g={class:"small"};function h(n,e,i,y,w,a){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Deye Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>a.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-62ab631a.js b/web/settings/assets/inverter-0671dbec.js
similarity index 81%
rename from web/settings/assets/inverter-62ab631a.js
rename to web/settings/assets/inverter-0671dbec.js
index 92425dce69..e58f1d0e2b 100644
--- a/web/settings/assets/inverter-62ab631a.js
+++ b/web/settings/assets/inverter-0671dbec.js
@@ -1 +1 @@
-import{_ as l,u as n,k as d,l as c,D as o,N as p,y as v,x as _,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_evu_kit/inverter.vue"]]);export{B as default};
+import{_ as l,u as n,k as d,l as c,D as o,N as p,y as v,x as _,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function w(t,e,i,h,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-0773e282.js b/web/settings/assets/inverter-0773e282.js
new file mode 100644
index 0000000000..71509ed5c5
--- /dev/null
+++ b/web/settings/assets/inverter-0773e282.js
@@ -0,0 +1 @@
+import{_ as c,u as t,k as l,l as d,D as n,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,o,b,v,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return l(),d("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-78807591.js b/web/settings/assets/inverter-0feca953.js
similarity index 94%
rename from web/settings/assets/inverter-78807591.js
rename to web/settings/assets/inverter-0feca953.js
index 5a84c01541..8a0900bc54 100644
--- a/web/settings/assets/inverter-78807591.js
+++ b/web/settings/assets/inverter-0feca953.js
@@ -1 +1 @@
-import{_ as u,u as s,k as _,l as m,D as t,N as o,y as n,x as e,z as a}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),z=e("br",null,null,-1),x=e("span",{class:"text-info"},"123.45",-1);function B(i,l,r,k,y,I){const d=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert");return _(),m("div",b,[t(d,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),z,n(" Beispiel: "),x])])]),_:1})])}const N=u(h,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mqtt/inverter.vue"]]);export{N as default};
+import{_ as u,u as s,k as _,l as m,D as t,N as o,y as n,x as e,z as a}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),z=e("br",null,null,-1),x=e("span",{class:"text-info"},"123.45",-1);function B(i,l,r,k,y,I){const d=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert");return _(),m("div",b,[t(d,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),z,n(" Beispiel: "),x])])]),_:1})])}const N=u(h,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-2eb2f36e.js b/web/settings/assets/inverter-148b1cf9.js
similarity index 68%
rename from web/settings/assets/inverter-2eb2f36e.js
rename to web/settings/assets/inverter-148b1cf9.js
index 03f350e829..1f9063458b 100644
--- a/web/settings/assets/inverter-2eb2f36e.js
+++ b/web/settings/assets/inverter-148b1cf9.js
@@ -1 +1 @@
-import{_ as d,u as o,k as p,l as c,D as i,N as m,y as _,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(t,e,a,M,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_flex/inverter.vue"]]);export{C as default};
+import{_ as d,u as o,k as p,l as c,D as i,N as m,y as _,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(n,e,a,M,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const C=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{C as default};
diff --git a/web/settings/assets/inverter-160edb4d.js b/web/settings/assets/inverter-160edb4d.js
new file mode 100644
index 0000000000..27dfc991bc
--- /dev/null
+++ b/web/settings/assets/inverter-160edb4d.js
@@ -0,0 +1 @@
+import{_ as u,u as o,k as l,l as c,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return l(),c("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-1111bf45.js b/web/settings/assets/inverter-16319c3f.js
similarity index 90%
rename from web/settings/assets/inverter-1111bf45.js
rename to web/settings/assets/inverter-16319c3f.js
index 12dc0ad4ee..372ce80102 100644
--- a/web/settings/assets/inverter-1111bf45.js
+++ b/web/settings/assets/inverter-16319c3f.js
@@ -1 +1 @@
-import{_ as u,u as o,k as c,l as p,D as t,N as l,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFoxEssInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fox_ess-inverter"},g={class:"small"};function x(n,e,s,h,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),p("div",v,[t(a,null,{default:l(()=>[_(" Einstellungen für FoxEss Wechselrichter "),m("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/inverter.vue"]]);export{D as default};
+import{_ as u,u as o,k as c,l as p,D as t,N as l,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFoxEssInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fox_ess-inverter"},g={class:"small"};function x(n,e,s,h,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),p("div",v,[t(a,null,{default:l(()=>[_(" Einstellungen für FoxEss Wechselrichter "),m("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-ff52ec92.js b/web/settings/assets/inverter-1f1b0291.js
similarity index 90%
rename from web/settings/assets/inverter-ff52ec92.js
rename to web/settings/assets/inverter-1f1b0291.js
index c6f42c0239..1c86874489 100644
--- a/web/settings/assets/inverter-ff52ec92.js
+++ b/web/settings/assets/inverter-1f1b0291.js
@@ -1 +1 @@
-import{_ as d,u as o,k as c,l,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko/inverter.vue"]]);export{B as default};
+import{_ as d,u as o,k as c,l,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-2e1e52a7.js b/web/settings/assets/inverter-2e1e52a7.js
deleted file mode 100644
index 78ade66bab..0000000000
--- a/web/settings/assets/inverter-2e1e52a7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-f58294c9.js b/web/settings/assets/inverter-317c9702.js
similarity index 74%
rename from web/settings/assets/inverter-f58294c9.js
rename to web/settings/assets/inverter-317c9702.js
index 414dbc70cf..d066cce54c 100644
--- a/web/settings/assets/inverter-f58294c9.js
+++ b/web/settings/assets/inverter-317c9702.js
@@ -1 +1 @@
-import{_ as c,u as t,k as p,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceOpenDTUInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-opendtu-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für OpenDTU Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/inverter.vue"]]);export{x as default};
+import{_ as p,u as t,k as c,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceOpenDTUInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-opendtu-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für OpenDTU Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-aa1e9ea5.js b/web/settings/assets/inverter-390b002d.js
similarity index 64%
rename from web/settings/assets/inverter-aa1e9ea5.js
rename to web/settings/assets/inverter-390b002d.js
index 7e8070d637..7d5caf5226 100644
--- a/web/settings/assets/inverter-aa1e9ea5.js
+++ b/web/settings/assets/inverter-390b002d.js
@@ -1 +1 @@
-import{_ as p,u as o,k as _,l as m,D as a,N as i,y as d,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,r,T,h,u){const s=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),c=o("openwb-base-number-input");return _(),m("div",v,[a(s,null,{default:i(()=>[d(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":r.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["model-value"]),a(c,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":r.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[d(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=p(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/inverter.vue"]]);export{y as default};
+import{_ as p,u as o,k as _,l as m,D as r,N as i,y as d,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,a,T,h,u){const s=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),c=o("openwb-base-number-input");return _(),m("div",v,[r(s,null,{default:i(()=>[d(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(l,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":a.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["model-value"]),r(c,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":a.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[d(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=p(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{y as default};
diff --git a/web/settings/assets/inverter-ce73b653.js b/web/settings/assets/inverter-3a00ed3d.js
similarity index 89%
rename from web/settings/assets/inverter-ce73b653.js
rename to web/settings/assets/inverter-3a00ed3d.js
index 6d02a6255c..e35905f632 100644
--- a/web/settings/assets/inverter-ce73b653.js
+++ b/web/settings/assets/inverter-3a00ed3d.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/inverter.vue"]]);export{k as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-0950a8cb.js b/web/settings/assets/inverter-3a35e713.js
similarity index 61%
rename from web/settings/assets/inverter-0950a8cb.js
rename to web/settings/assets/inverter-3a35e713.js
index d77ee162e7..7952b891d8 100644
--- a/web/settings/assets/inverter-0950a8cb.js
+++ b/web/settings/assets/inverter-3a35e713.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function v(e,t,b,h,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/inverter.vue"]]);export{k as default};
+import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function h(e,t,v,b,w,g){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-281b7a65.js b/web/settings/assets/inverter-3a81dff8.js
similarity index 74%
rename from web/settings/assets/inverter-281b7a65.js
rename to web/settings/assets/inverter-3a81dff8.js
index 7549dc5381..0212bbefda 100644
--- a/web/settings/assets/inverter-281b7a65.js
+++ b/web/settings/assets/inverter-3a81dff8.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l as u,D as o,N as s,y as r,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),u("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/inverter.vue"]]);export{k as default};
+import{_ as c,u as t,k as u,l as d,D as o,N as s,y as r,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,w,h){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return u(),d("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-508ccdbf.js b/web/settings/assets/inverter-508ccdbf.js
deleted file mode 100644
index b41df93568..0000000000
--- a/web/settings/assets/inverter-508ccdbf.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-90d810a4.js b/web/settings/assets/inverter-53505c28.js
similarity index 93%
rename from web/settings/assets/inverter-90d810a4.js
rename to web/settings/assets/inverter-53505c28.js
index 524c290df4..f739888e60 100644
--- a/web/settings/assets/inverter-90d810a4.js
+++ b/web/settings/assets/inverter-53505c28.js
@@ -1 +1 @@
-import{_ as p,u as t,k as m,l as _,D as o,N as s,y as i,x as f,z as h}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,y,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')]),_:1}),o(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_shm/inverter.vue"]]);export{B as default};
+import{_ as p,u as t,k as m,l as _,D as o,N as s,y as i,x as f,z as h}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,y,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')]),_:1}),o(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-39667dd3.js b/web/settings/assets/inverter-53c9dd57.js
similarity index 93%
rename from web/settings/assets/inverter-39667dd3.js
rename to web/settings/assets/inverter-53c9dd57.js
index e5a6d6bd8e..8a28a99cd3 100644
--- a/web/settings/assets/inverter-39667dd3.js
+++ b/web/settings/assets/inverter-53c9dd57.js
@@ -1 +1 @@
-import{_ as d,u as n,k as c,l,D as o,N as p,y as m,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceHuaweiSmartLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-huawei-smart-logger-inverter"},v={class:"small"};function h(t,e,a,w,x,i){const r=n("openwb-base-heading"),s=n("openwb-base-number-input");return c(),l("div",b,[o(r,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Wechselrichter "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),o(s,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=d(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei_smartlogger/inverter.vue"]]);export{D as default};
+import{_ as d,u as n,k as c,l,D as o,N as p,y as m,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceHuaweiSmartLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-huawei-smart-logger-inverter"},v={class:"small"};function h(t,e,a,w,x,i){const r=n("openwb-base-heading"),s=n("openwb-base-number-input");return c(),l("div",b,[o(r,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Wechselrichter "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),o(s,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=d(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-564ac740.js b/web/settings/assets/inverter-564ac740.js
new file mode 100644
index 0000000000..31ffa66a9c
--- /dev/null
+++ b/web/settings/assets/inverter-564ac740.js
@@ -0,0 +1 @@
+import{_ as d,u as t,k as c,l,D as n,N as s,y as r,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,o,v,g,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),l("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-5a5ed031.js b/web/settings/assets/inverter-5a5ed031.js
new file mode 100644
index 0000000000..63f852bf59
--- /dev/null
+++ b/web/settings/assets/inverter-5a5ed031.js
@@ -0,0 +1 @@
+import{_ as c,u as n,k as u,l as d,D as o,N as s,y as r,x as p,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceZCSInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_zcs-inverter"},m={class:"small"};function b(e,t,v,z,g,h){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return u(),d("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Azzurro ZCS Wechselrichter "),p("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-5e52c5a2.js b/web/settings/assets/inverter-5e52c5a2.js
deleted file mode 100644
index 37f149d736..0000000000
--- a/web/settings/assets/inverter-5e52c5a2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as c,l,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolisInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solis-inverter"},g={class:"small"};function h(n,e,i,w,x,s){const a=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(a,null,{default:p(()=>[m(" Einstellungen für Solis Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-6429eef9.js b/web/settings/assets/inverter-6429eef9.js
deleted file mode 100644
index 460b9b24f9..0000000000
--- a/web/settings/assets/inverter-6429eef9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as r,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceZCSInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_zcs-inverter"},m={class:"small"};function b(e,t,v,g,h,z){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Azzurro ZCS Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-395b265b.js b/web/settings/assets/inverter-671f6a73.js
similarity index 91%
rename from web/settings/assets/inverter-395b265b.js
rename to web/settings/assets/inverter-671f6a73.js
index 4957e0a910..f594f7b4f8 100644
--- a/web/settings/assets/inverter-395b265b.js
+++ b/web/settings/assets/inverter-671f6a73.js
@@ -1 +1 @@
-import{_ as l,u as o,k as p,l as c,D as i,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/inverter.vue"]]);export{B as default};
+import{_ as l,u as o,k as p,l as c,D as i,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-620c2cc3.js b/web/settings/assets/inverter-69ae908d.js
similarity index 86%
rename from web/settings/assets/inverter-620c2cc3.js
rename to web/settings/assets/inverter-69ae908d.js
index 18d66b1c01..8b6209906d 100644
--- a/web/settings/assets/inverter-620c2cc3.js
+++ b/web/settings/assets/inverter-69ae908d.js
@@ -1 +1 @@
-import{_ as b,u as t,k as m,l as _,D as o,N as u,y as s,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},y={class:"device-sunnyboy-inverter"},w={class:"small"};function h(a,e,i,S,C,r){const d=t("openwb-base-heading"),l=t("openwb-base-button-group-input"),p=t("openwb-base-select-input"),c=t("openwb-base-number-input");return m(),_("div",y,[o(d,null,{default:u(()=>[s(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter "),f("span",w,"(Modul: "+v(a.$options.name)+")",1)]),_:1}),o(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:u(()=>[s(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),o(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),o(c,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[s(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")]),_:1},8,["model-value"])])}const V=b(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_sunny_boy/inverter.vue"]]);export{V as default};
+import{_ as m,u as t,k as b,l as _,D as o,N as u,y as s,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},y={class:"device-sunnyboy-inverter"},w={class:"small"};function h(a,e,i,S,C,r){const d=t("openwb-base-heading"),l=t("openwb-base-button-group-input"),p=t("openwb-base-select-input"),c=t("openwb-base-number-input");return b(),_("div",y,[o(d,null,{default:u(()=>[s(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter "),f("span",w,"(Modul: "+v(a.$options.name)+")",1)]),_:1}),o(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:u(()=>[s(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),o(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),o(c,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[s(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")]),_:1},8,["model-value"])])}const V=m(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-c4e9e5f0.js b/web/settings/assets/inverter-6b993a71.js
similarity index 96%
rename from web/settings/assets/inverter-c4e9e5f0.js
rename to web/settings/assets/inverter-6b993a71.js
index 42d65bbe70..d2e9644206 100644
--- a/web/settings/assets/inverter-c4e9e5f0.js
+++ b/web/settings/assets/inverter-6b993a71.js
@@ -1 +1 @@
-import{_ as p,u,k as m,l as h,D as a,N as o,y as t,x as n,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,y,l){const c=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(c,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")]),_:1},8,["model-value"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const V=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/http/inverter.vue"]]);export{V as default};
+import{_ as p,u,k as m,l as h,D as a,N as o,y as t,x as n,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,y,l){const c=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(c,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")]),_:1},8,["model-value"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const V=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-ea12e7e4.js b/web/settings/assets/inverter-79c8fb55.js
similarity index 66%
rename from web/settings/assets/inverter-ea12e7e4.js
rename to web/settings/assets/inverter-79c8fb55.js
index 7a88c3e11d..fbdab7b5bf 100644
--- a/web/settings/assets/inverter-ea12e7e4.js
+++ b/web/settings/assets/inverter-79c8fb55.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const y=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/inverter.vue"]]);export{y as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as a,y as s,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const y=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/inverter.vue"]]);export{y as default};
diff --git a/web/settings/assets/inverter-7b31a11f.js b/web/settings/assets/inverter-7b31a11f.js
deleted file mode 100644
index 70e924cf9e..0000000000
--- a/web/settings/assets/inverter-7b31a11f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l,D as o,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-7f269997.js b/web/settings/assets/inverter-7f269997.js
new file mode 100644
index 0000000000..6a4bb635b7
--- /dev/null
+++ b/web/settings/assets/inverter-7f269997.js
@@ -0,0 +1 @@
+import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-c4ca2aa1.js b/web/settings/assets/inverter-80468543.js
similarity index 93%
rename from web/settings/assets/inverter-c4ca2aa1.js
rename to web/settings/assets/inverter-80468543.js
index 274a363eca..a6243f2f80 100644
--- a/web/settings/assets/inverter-c4ca2aa1.js
+++ b/web/settings/assets/inverter-80468543.js
@@ -1 +1 @@
-import{_ as u,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const D=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/inverter.vue"]]);export{D as default};
+import{_ as u,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const D=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-c6690fa5.js b/web/settings/assets/inverter-804d1c85.js
similarity index 91%
rename from web/settings/assets/inverter-c6690fa5.js
rename to web/settings/assets/inverter-804d1c85.js
index 28432086d1..cb67c6b754 100644
--- a/web/settings/assets/inverter-c6690fa5.js
+++ b/web/settings/assets/inverter-804d1c85.js
@@ -1 +1 @@
-import{_ as c,u as r,k as g,l as _,D as n,N as s,y as u,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')]),_:1}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const z=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/inverter.vue"]]);export{z as default};
+import{_ as c,u as r,k as g,l as _,D as n,N as s,y as u,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')]),_:1}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const B=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-f46c6992.js b/web/settings/assets/inverter-81caf0c3.js
similarity index 74%
rename from web/settings/assets/inverter-f46c6992.js
rename to web/settings/assets/inverter-81caf0c3.js
index 561dd2ef4d..8533af870b 100644
--- a/web/settings/assets/inverter-f46c6992.js
+++ b/web/settings/assets/inverter-81caf0c3.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-sma-webbox-inverter"},m={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",b,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma_webbox/inverter.vue"]]);export{k as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-sma-webbox-inverter"},b={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-858c070d.js b/web/settings/assets/inverter-858c070d.js
deleted file mode 100644
index 4e94cd7da6..0000000000
--- a/web/settings/assets/inverter-858c070d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as c,l,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),l("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-c2367805.js b/web/settings/assets/inverter-85d76c41.js
similarity index 74%
rename from web/settings/assets/inverter-c2367805.js
rename to web/settings/assets/inverter-85d76c41.js
index c3471e0fa0..405a20f903 100644
--- a/web/settings/assets/inverter-c2367805.js
+++ b/web/settings/assets/inverter-85d76c41.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),u("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/inverter.vue"]]);export{x as default};
+import{_ as c,u as t,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,w,g,h){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return u(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-e62bcc2d.js b/web/settings/assets/inverter-8bd91bf1.js
similarity index 94%
rename from web/settings/assets/inverter-e62bcc2d.js
rename to web/settings/assets/inverter-8bd91bf1.js
index 09b6553c6a..c8e1b39e19 100644
--- a/web/settings/assets/inverter-e62bcc2d.js
+++ b/web/settings/assets/inverter-8bd91bf1.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l as p,D as o,N as s,y as i,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/inverter.vue"]]);export{k as default};
+import{_ as c,u as t,k as d,l as p,D as o,N as s,y as i,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-f09f6954.js b/web/settings/assets/inverter-9046aa5a.js
similarity index 81%
rename from web/settings/assets/inverter-f09f6954.js
rename to web/settings/assets/inverter-9046aa5a.js
index 3f5c4d890f..d839ccc258 100644
--- a/web/settings/assets/inverter-f09f6954.js
+++ b/web/settings/assets/inverter-9046aa5a.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l as u,D as o,N as s,y as r,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return d(),u("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter.vue"]]);export{k as default};
+import{_ as c,u as t,k as u,l as d,D as o,N as s,y as r,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-a269797d.js b/web/settings/assets/inverter-927da016.js
similarity index 94%
rename from web/settings/assets/inverter-a269797d.js
rename to web/settings/assets/inverter-927da016.js
index 65ea4b6018..1eea9ade80 100644
--- a/web/settings/assets/inverter-a269797d.js
+++ b/web/settings/assets/inverter-927da016.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l as p,D as o,N as s,y as i,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBenningInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-benning-inverter"},m={class:"small"};function b(e,n,g,v,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[i(" Einstellungen für Benning Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/inverter.vue"]]);export{x as default};
+import{_ as c,u as t,k as d,l as p,D as o,N as s,y as i,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBenningInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-benning-inverter"},m={class:"small"};function b(e,n,g,v,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[i(" Einstellungen für Benning Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-39d17978.js b/web/settings/assets/inverter-929c3f78.js
similarity index 77%
rename from web/settings/assets/inverter-39d17978.js
rename to web/settings/assets/inverter-929c3f78.js
index 905491cc43..d547ac3f70 100644
--- a/web/settings/assets/inverter-39d17978.js
+++ b/web/settings/assets/inverter-929c3f78.js
@@ -1 +1 @@
-import{_ as u,u as o,k as l,l as c,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,i){const r=o("openwb-base-heading"),s=o("openwb-base-number-input");return l(),c("div",b,[t(r,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(s,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/inverter.vue"]]);export{C as default};
+import{_ as u,u as o,k as l,l as c,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,r){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return l(),c("div",b,[t(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(s,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>r.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{C as default};
diff --git a/web/settings/assets/inverter-001a7dc5.js b/web/settings/assets/inverter-9c9c65d2.js
similarity index 88%
rename from web/settings/assets/inverter-001a7dc5.js
rename to web/settings/assets/inverter-9c9c65d2.js
index bde6048a52..924fe7508d 100644
--- a/web/settings/assets/inverter-001a7dc5.js
+++ b/web/settings/assets/inverter-9c9c65d2.js
@@ -1 +1 @@
-import{_ as c,u as n,k as l,l as d,D as o,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/inverter.vue"]]);export{C as default};
+import{_ as c,u as n,k as l,l as d,D as o,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-aba0125a.js b/web/settings/assets/inverter-9df7c4d9.js
similarity index 94%
rename from web/settings/assets/inverter-aba0125a.js
rename to web/settings/assets/inverter-9df7c4d9.js
index 391642ed1a..27e863814f 100644
--- a/web/settings/assets/inverter-aba0125a.js
+++ b/web/settings/assets/inverter-9df7c4d9.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/inverter.vue"]]);export{$ as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-b3883b88.js b/web/settings/assets/inverter-a1fe6824.js
similarity index 95%
rename from web/settings/assets/inverter-b3883b88.js
rename to web/settings/assets/inverter-a1fe6824.js
index c04ab3a777..073bb6c7c8 100644
--- a/web/settings/assets/inverter-b3883b88.js
+++ b/web/settings/assets/inverter-a1fe6824.js
@@ -1 +1 @@
-import{_ as u,u as o,k as p,l as m,D as n,N as a,y as i,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/inverter.vue"]]);export{k as default};
+import{_ as u,u as o,k as p,l as m,D as n,N as a,y as i,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-a3685d5a.js b/web/settings/assets/inverter-a3685d5a.js
deleted file mode 100644
index d22ef121f5..0000000000
--- a/web/settings/assets/inverter-a3685d5a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSofarInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_sofar-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sofar Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const z=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_sofar/inverter.vue"]]);export{z as default};
diff --git a/web/settings/assets/inverter-2d49a3aa.js b/web/settings/assets/inverter-a6b17edd.js
similarity index 87%
rename from web/settings/assets/inverter-2d49a3aa.js
rename to web/settings/assets/inverter-a6b17edd.js
index 9358d017cf..387b81e555 100644
--- a/web/settings/assets/inverter-2d49a3aa.js
+++ b/web/settings/assets/inverter-a6b17edd.js
@@ -1 +1 @@
-import{_ as d,u as t,k as c,l as p,D as n,N as s,y as r,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/inverter.vue"]]);export{k as default};
+import{_ as d,u as t,k as c,l as p,D as n,N as s,y as r,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,w,h){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-cb19d4d9.js b/web/settings/assets/inverter-ae598de4.js
similarity index 91%
rename from web/settings/assets/inverter-cb19d4d9.js
rename to web/settings/assets/inverter-ae598de4.js
index 5a580bbea2..ac73c0a448 100644
--- a/web/settings/assets/inverter-cb19d4d9.js
+++ b/web/settings/assets/inverter-ae598de4.js
@@ -1 +1 @@
-import{_ as c,u as t,k as p,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/inverter.vue"]]);export{x as default};
+import{_ as c,u as t,k as p,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-b10ff0aa.js b/web/settings/assets/inverter-b10ff0aa.js
deleted file mode 100644
index 12c7be3b1e..0000000000
--- a/web/settings/assets/inverter-b10ff0aa.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l,D as o,N as s,y as r,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),l("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-45617c87.js b/web/settings/assets/inverter-b3e8ecb5.js
similarity index 53%
rename from web/settings/assets/inverter-45617c87.js
rename to web/settings/assets/inverter-b3e8ecb5.js
index d6d7e4e06b..4078b9ff57 100644
--- a/web/settings/assets/inverter-45617c87.js
+++ b/web/settings/assets/inverter-b3e8ecb5.js
@@ -1 +1 @@
-import{_ as c,u as n,k as p,l as d,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/inverter.vue"]]);export{k as default};
+import{_ as p,u as n,k as c,l as d,D as s,N as o,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[s(i,null,{default:o(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),s(r,{subtype:"info"},{default:o(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-5213cff7.js b/web/settings/assets/inverter-b4a67c1c.js
similarity index 78%
rename from web/settings/assets/inverter-5213cff7.js
rename to web/settings/assets/inverter-b4a67c1c.js
index 351b7c6ecf..2c6ac77bf6 100644
--- a/web/settings/assets/inverter-5213cff7.js
+++ b/web/settings/assets/inverter-b4a67c1c.js
@@ -1 +1 @@
-import{_ as p,u as l,k as m,l as _,D as i,N as r,y as t,x as u,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const c=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),_("div",h,[i(c,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),b,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")]),_:1},8,["model-value"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const k=p(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/json/inverter.vue"]]);export{k as default};
+import{_ as p,u as l,k as m,l as g,D as i,N as r,y as t,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const c=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),g("div",h,[i(c,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),b,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")]),_:1},8,["model-value"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const k=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-b9d7f198.js b/web/settings/assets/inverter-b9d7f198.js
new file mode 100644
index 0000000000..3b3cce44bb
--- /dev/null
+++ b/web/settings/assets/inverter-b9d7f198.js
@@ -0,0 +1 @@
+import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSofarInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sofar-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sofar Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-9dc89f1d.js b/web/settings/assets/inverter-bea955ac.js
similarity index 91%
rename from web/settings/assets/inverter-9dc89f1d.js
rename to web/settings/assets/inverter-bea955ac.js
index b358a9862d..ce02640e32 100644
--- a/web/settings/assets/inverter-9dc89f1d.js
+++ b/web/settings/assets/inverter-bea955ac.js
@@ -1 +1 @@
-import{_ as l,u as n,k as c,l as d,D as o,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/inverter.vue"]]);export{B as default};
+import{_ as l,u as n,k as c,l as d,D as o,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-597e2682.js b/web/settings/assets/inverter-bff31af2.js
similarity index 90%
rename from web/settings/assets/inverter-597e2682.js
rename to web/settings/assets/inverter-bff31af2.js
index 0e48ab3fa5..126b5a9097 100644
--- a/web/settings/assets/inverter-597e2682.js
+++ b/web/settings/assets/inverter-bff31af2.js
@@ -1 +1 @@
-import{_ as p,u as t,k as l,l as m,D as o,N as i,y as s,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSigenergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sigenergy-inverter"},v={class:"small"};function h(n,e,r,y,w,a){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),m("div",b,[o(d,null,{default:i(()=>[s(" Einstellungen für Sigenergy Wechselrichter "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":r.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>a.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const I=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/inverter.vue"]]);export{I as default};
+import{_ as p,u as t,k as l,l as m,D as o,N as i,y as s,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSigenergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sigenergy-inverter"},v={class:"small"};function h(n,e,r,y,w,a){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),m("div",b,[o(d,null,{default:i(()=>[s(" Einstellungen für Sigenergy Wechselrichter "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":r.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>a.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const I=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-a5b2e2f6.js b/web/settings/assets/inverter-c5fc8299.js
similarity index 82%
rename from web/settings/assets/inverter-a5b2e2f6.js
rename to web/settings/assets/inverter-c5fc8299.js
index 70e698ec09..27b9e72e8c 100644
--- a/web/settings/assets/inverter-a5b2e2f6.js
+++ b/web/settings/assets/inverter-c5fc8299.js
@@ -1 +1 @@
-import{_ as l,u as o,k as m,l as _,D as r,N as i,y as n,x as s,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function w(t,e,a,y,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/inverter.vue"]]);export{I as default};
+import{_ as l,u as o,k as m,l as _,D as r,N as i,y as n,x as s,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function y(t,e,a,w,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-5ab60482.js b/web/settings/assets/inverter-cf027bb4.js
similarity index 89%
rename from web/settings/assets/inverter-5ab60482.js
rename to web/settings/assets/inverter-cf027bb4.js
index cdf162cf0e..59d0fc9762 100644
--- a/web/settings/assets/inverter-5ab60482.js
+++ b/web/settings/assets/inverter-cf027bb4.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/inverter.vue"]]);export{k as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-0c59320c.js b/web/settings/assets/inverter-d62075d8.js
similarity index 94%
rename from web/settings/assets/inverter-0c59320c.js
rename to web/settings/assets/inverter-d62075d8.js
index e4f9f09fc7..3f2bfacc80 100644
--- a/web/settings/assets/inverter-0c59320c.js
+++ b/web/settings/assets/inverter-d62075d8.js
@@ -1 +1 @@
-import{_ as l,u as i,k as f,l as _,D as r,N as s,y as n,x as o,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-powerfox-inverter"},b={class:"small"},v=o("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),w=o("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1);function x(t,e,a,D,k,d){const u=i("openwb-base-heading"),c=i("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:s(()=>[n(" Einstellungen für Powerfox Wechselrichter "),o("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:s(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),v,n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),w,n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")]),_:1},8,["model-value"])])}const z=l(h,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/inverter.vue"]]);export{z as default};
+import{_ as l,u as i,k as f,l as _,D as r,N as s,y as n,x as o,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-powerfox-inverter"},b={class:"small"},v=o("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),w=o("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1);function x(t,e,a,D,k,d){const u=i("openwb-base-heading"),c=i("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:s(()=>[n(" Einstellungen für Powerfox Wechselrichter "),o("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:s(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),v,n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),w,n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")]),_:1},8,["model-value"])])}const z=l(h,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{z as default};
diff --git a/web/settings/assets/inverter-4a61fc24.js b/web/settings/assets/inverter-d785d016.js
similarity index 84%
rename from web/settings/assets/inverter-4a61fc24.js
rename to web/settings/assets/inverter-d785d016.js
index 8f90fbb519..87469458b1 100644
--- a/web/settings/assets/inverter-4a61fc24.js
+++ b/web/settings/assets/inverter-d785d016.js
@@ -1 +1 @@
-import{_ as c,u as o,k as d,l,D as n,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPikoOldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostal-piko-old-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),l("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Wechselrichter (alte Generation) "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_piko_old/inverter.vue"]]);export{x as default};
+import{_ as c,u as o,k as d,l,D as n,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPikoOldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostal-piko-old-inverter"},m={class:"small"};function b(e,t,v,g,k,h){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),l("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Wechselrichter (alte Generation) "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-e0439727.js b/web/settings/assets/inverter-e0439727.js
new file mode 100644
index 0000000000..05f042a9f7
--- /dev/null
+++ b/web/settings/assets/inverter-e0439727.js
@@ -0,0 +1 @@
+import{_ as d,u as t,k as c,l as p,D as n,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function g(e,o,b,v,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-e2fcc96e.js b/web/settings/assets/inverter-e2fcc96e.js
new file mode 100644
index 0000000000..3a40d30c5b
--- /dev/null
+++ b/web/settings/assets/inverter-e2fcc96e.js
@@ -0,0 +1 @@
+import{_ as u,u as o,k as l,l as c,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolisInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solis-inverter"},g={class:"small"};function h(n,e,i,w,x,s){const a=o("openwb-base-heading"),r=o("openwb-base-number-input");return l(),c("div",v,[t(a,null,{default:p(()=>[m(" Einstellungen für Solis Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-0528aae6.js b/web/settings/assets/inverter-e39deae7.js
similarity index 88%
rename from web/settings/assets/inverter-0528aae6.js
rename to web/settings/assets/inverter-e39deae7.js
index 6ea7159db0..b1a940d83f 100644
--- a/web/settings/assets/inverter-0528aae6.js
+++ b/web/settings/assets/inverter-e39deae7.js
@@ -1 +1 @@
-import{_ as c,u as n,k as l,l as d,D as o,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-inverter"},m={class:"small"};function h(e,t,b,v,g,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/inverter.vue"]]);export{x as default};
+import{_ as c,u as n,k as l,l as d,D as o,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-inverter"},m={class:"small"};function h(e,t,b,v,g,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-09efda14.js b/web/settings/assets/inverter-e52144a7.js
similarity index 89%
rename from web/settings/assets/inverter-09efda14.js
rename to web/settings/assets/inverter-e52144a7.js
index e987e1b9f3..e3f3678260 100644
--- a/web/settings/assets/inverter-09efda14.js
+++ b/web/settings/assets/inverter-e52144a7.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const D=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/inverter.vue"]]);export{D as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const D=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-d568cbbe.js b/web/settings/assets/inverter-e8d637fe.js
similarity index 92%
rename from web/settings/assets/inverter-d568cbbe.js
rename to web/settings/assets/inverter-e8d637fe.js
index 83c8bc6c90..6bcacda6d5 100644
--- a/web/settings/assets/inverter-d568cbbe.js
+++ b/web/settings/assets/inverter-e8d637fe.js
@@ -1 +1 @@
-import{_ as p,u as n,k as l,l as m,D as o,N as i,y as a,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceMTecInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-mtec-inverter"},g={class:"small"};function h(t,e,s,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-number-input");return l(),m("div",v,[o(d,null,{default:i(()=>[a(" Einstellungen für M-Tec Wechselrichter "),_("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[a(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const I=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/inverter.vue"]]);export{I as default};
+import{_ as p,u as n,k as l,l as m,D as o,N as i,y as a,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceMTecInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-mtec-inverter"},g={class:"small"};function h(t,e,s,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-number-input");return l(),m("div",v,[o(d,null,{default:i(()=>[a(" Einstellungen für M-Tec Wechselrichter "),_("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[a(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const I=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-0ffd0b65.js b/web/settings/assets/inverter-ed15250f.js
similarity index 84%
rename from web/settings/assets/inverter-0ffd0b65.js
rename to web/settings/assets/inverter-ed15250f.js
index 20abafc335..267daf2fe0 100644
--- a/web/settings/assets/inverter-0ffd0b65.js
+++ b/web/settings/assets/inverter-ed15250f.js
@@ -1 +1 @@
-import{_ as c,u as o,k as l,l as d,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca-inverter"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["model-value"])])}const C=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_steca/inverter.vue"]]);export{C as default};
+import{_ as c,u as o,k as l,l as d,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca-inverter"},g={class:"small"};function k(t,e,a,h,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["model-value"])])}const C=c(v,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{C as default};
diff --git a/web/settings/assets/inverter-8faef1dd.js b/web/settings/assets/inverter-f329a5ad.js
similarity index 89%
rename from web/settings/assets/inverter-8faef1dd.js
rename to web/settings/assets/inverter-f329a5ad.js
index bd2a578f95..b5df1be37d 100644
--- a/web/settings/assets/inverter-8faef1dd.js
+++ b/web/settings/assets/inverter-f329a5ad.js
@@ -1 +1 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceVartaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Varta Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/inverter.vue"]]);export{V as default};
+import{_ as c,u as n,k as d,l as p,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceVartaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Varta Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-b1fa1dd4.js b/web/settings/assets/inverter-f62aa161.js
similarity index 71%
rename from web/settings/assets/inverter-b1fa1dd4.js
rename to web/settings/assets/inverter-f62aa161.js
index 622be07f97..1f75c926e4 100644
--- a/web/settings/assets/inverter-b1fa1dd4.js
+++ b/web/settings/assets/inverter-f62aa161.js
@@ -1 +1 @@
-import{_ as u,u as n,k as d,l as p,D as o,N as c,y as v,x as _,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),p("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const B=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb_pv_kit/inverter.vue"]]);export{B as default};
+import{_ as u,u as n,k as p,l as d,D as o,N as c,y as v,x as _,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function w(t,e,i,h,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const B=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-d280d9cc.js b/web/settings/assets/inverter-f6495d7c.js
similarity index 91%
rename from web/settings/assets/inverter-d280d9cc.js
rename to web/settings/assets/inverter-f6495d7c.js
index 519c059833..66a81c2f2a 100644
--- a/web/settings/assets/inverter-d280d9cc.js
+++ b/web/settings/assets/inverter-f6495d7c.js
@@ -1 +1 @@
-import{_ as c,u as n,k as l,l as p,D as o,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal_plenticore/inverter.vue"]]);export{x as default};
+import{_ as c,u as n,k as l,l as p,D as o,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-3b913d29.js b/web/settings/assets/inverter-fcb34a03.js
similarity index 92%
rename from web/settings/assets/inverter-3b913d29.js
rename to web/settings/assets/inverter-fcb34a03.js
index ec3af26f49..fcdb8a6f04 100644
--- a/web/settings/assets/inverter-3b913d29.js
+++ b/web/settings/assets/inverter-fcb34a03.js
@@ -1 +1 @@
-import{_ as c,u as t,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnenbatterie/inverter.vue"]]);export{B as default};
+import{_ as c,u as t,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter_secondary-ec1119a3.js b/web/settings/assets/inverter_secondary-603793ab.js
similarity index 95%
rename from web/settings/assets/inverter_secondary-ec1119a3.js
rename to web/settings/assets/inverter_secondary-603793ab.js
index 1cb9515c46..813c70c593 100644
--- a/web/settings/assets/inverter_secondary-ec1119a3.js
+++ b/web/settings/assets/inverter_secondary-603793ab.js
@@ -1 +1 @@
-import{_ as m,u as i,k as _,l as f,D as s,N as d,y as r,x as o,z as a}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFroniusSecondaryInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},computed:{powerFlowUrl:{get(){return`http://${this.deviceIpAddress}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}},deviceIpAddress:{get(){var e;return(e=this.$store.state.mqtt[`openWB/system/device/${this.deviceId}/config`])==null?void 0:e.configuration.ip_address}}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},h={class:"device-fronius-inverter-secondary"},v={class:"small"},w=["href"],b=o("br",null,null,-1);function D(e,n,l,I,k,t){const u=i("openwb-base-heading"),c=i("openwb-base-number-input");return _(),f("div",h,[s(u,null,{default:d(()=>[r(" Einstellungen für einen sekundären Wechselrichter "),o("span",v,"(Modul: "+a(e.$options.name)+")",1)]),_:1}),s(c,{title:"ID","model-value":l.configuration.id,min:"0","onUpdate:modelValue":n[0]||(n[0]=p=>t.updateConfiguration(p,"configuration.id"))},{help:d(()=>[r(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. "),o("a",{href:t.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},a(t.powerFlowUrl),9,w),b,r(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. ')]),_:1},8,["model-value"])])}const S=m(g,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/inverter_secondary.vue"]]);export{S as default};
+import{_ as m,u as i,k as _,l as f,D as s,N as d,y as r,x as o,z as a}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFroniusSecondaryInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},computed:{powerFlowUrl:{get(){return`http://${this.deviceIpAddress}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}},deviceIpAddress:{get(){var e;return(e=this.$store.state.mqtt[`openWB/system/device/${this.deviceId}/config`])==null?void 0:e.configuration.ip_address}}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},h={class:"device-fronius-inverter-secondary"},v={class:"small"},w=["href"],b=o("br",null,null,-1);function D(e,n,l,I,k,t){const u=i("openwb-base-heading"),c=i("openwb-base-number-input");return _(),f("div",h,[s(u,null,{default:d(()=>[r(" Einstellungen für einen sekundären Wechselrichter "),o("span",v,"(Modul: "+a(e.$options.name)+")",1)]),_:1}),s(c,{title:"ID","model-value":l.configuration.id,min:"0","onUpdate:modelValue":n[0]||(n[0]=p=>t.updateConfiguration(p,"configuration.id"))},{help:d(()=>[r(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. "),o("a",{href:t.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},a(t.powerFlowUrl),9,w),b,r(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. ')]),_:1},8,["model-value"])])}const S=m(g,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{S as default};
diff --git a/web/settings/assets/vehicle-39ccb597.js b/web/settings/assets/vehicle-d38b53d4.js
similarity index 97%
rename from web/settings/assets/vehicle-39ccb597.js
rename to web/settings/assets/vehicle-d38b53d4.js
index 8da09232bf..3c933f76c1 100644
--- a/web/settings/assets/vehicle-39ccb597.js
+++ b/web/settings/assets/vehicle-d38b53d4.js
@@ -1 +1 @@
-import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-3e910ceb.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
+import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-0deee932.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/index.html b/web/settings/index.html
index eae69b4814..9621f866b3 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -7,7 +7,7 @@
 	<meta name="viewport" content="width=device-width,initial-scale=1.0">
 	<link rel="icon" href="/openWB/web/settings/favicon.ico">
 	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-3e910ceb.js"></script>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-0deee932.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-2f1828d0.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-f2b8aa6f.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-71546160.js">

From 8e5a450d06f30e243ce7ee07ea25cea0df8eeac7 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 24 Sep 2024 09:28:06 +0200
Subject: [PATCH 079/205] Use create device: siemens sentron, sma sunny boy,
 kits, enphase&sunny island (#1774)

* siemens sentron

* sma sunny boy

* kits

* enphase

* sunny island

* remove legacy test

* flake8
---
 .../modules/devices/enphase/enphase/device.py | 311 ++++++------------
 .../devices/openwb/openwb_bat_kit/config.py   |   2 +-
 .../devices/openwb/openwb_bat_kit/device.py   |  98 ++----
 .../devices/openwb/openwb_evu_kit/config.py   |   2 +-
 .../devices/openwb/openwb_evu_kit/device.py   | 132 ++------
 .../devices/openwb/openwb_pv_kit/config.py    |   2 +-
 .../devices/openwb/openwb_pv_kit/device.py    |  95 ++----
 .../devices/siemens/siemens_sentron/device.py | 100 ++----
 .../devices/sma/sma_sunny_boy/device.py       | 221 +++----------
 .../sma/sma_sunny_boy/sma_sunny_boy_test.py   |  67 ----
 .../devices/sma/sma_sunny_island/device.py    |  93 ++----
 11 files changed, 272 insertions(+), 851 deletions(-)
 delete mode 100644 packages/modules/devices/sma/sma_sunny_boy/sma_sunny_boy_test.py

diff --git a/packages/modules/devices/enphase/enphase/device.py b/packages/modules/devices/enphase/enphase/device.py
index 4f16e41963..a44bb1a67e 100644
--- a/packages/modules/devices/enphase/enphase/device.py
+++ b/packages/modules/devices/enphase/enphase/device.py
@@ -1,179 +1,81 @@
 #!/usr/bin/env python3
 import jwt
 import logging
-import re
 import time
-from typing import Dict, List, Union
-from dataclass_utils import asdict, dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
+from typing import Iterable, Union
+
+from dataclass_utils import asdict
 from helpermodules.pub import Pub
 from modules.common import req
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import MultiComponentUpdateContext
-from modules.devices.enphase.enphase import counter, inverter, bat
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.devices.enphase.enphase.bat import EnphaseBat
 from modules.devices.enphase.enphase.config import (EnphaseVersion,
                                                     Enphase,
-                                                    EnphaseConfiguration,
-                                                    EnphaseCounterConfiguration,
                                                     EnphaseCounterSetup,
-                                                    EnphaseInverterConfiguration,
                                                     EnphaseInverterSetup,
-                                                    EnphaseBatConfiguration,
                                                     EnphaseBatSetup)
+from modules.devices.enphase.enphase.counter import EnphaseCounter
+from modules.devices.enphase.enphase.inverter import EnphaseInverter
 
 log = logging.getLogger(__name__)
 
-enphase_component_classes = Union[counter.EnphaseCounter, inverter.EnphaseInverter, bat.EnphaseBat]
-
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "counter": counter.EnphaseCounter,
-        "inverter": inverter.EnphaseInverter,
-        "bat": bat.EnphaseBat,
-    }
+def create_device(device_config: Enphase):
+    def create_bat_component(component_config: EnphaseBatSetup):
+        nonlocal read_live_data
+        read_live_data = True
+        return EnphaseBat(device_config.id, component_config)
 
-    def __init__(self, device_config: Union[Dict, Enphase]) -> None:
-        self.components = {}  # type: Dict[str, enphase_component_classes]
-        self.read_live_data = False
-        self.token_tries = 0
-        self.token_fails = 0
-        try:
-            self.device_config = dataclass_from_dict(Enphase, device_config)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
+    def create_counter_component(component_config: EnphaseCounterSetup):
+        return EnphaseCounter(device_config.id, component_config)
 
-    def add_component(
-        self,
-        component_config: Union[Dict, EnphaseCounterSetup, EnphaseInverterSetup, EnphaseBatSetup]
-    ) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config)
-            if "bat" in component_type:
-                self.read_live_data = True
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def auto_set_version(self) -> None:
-        response = req.get_http_session().get(
-            'http://'+self.device_config.configuration.hostname+'/',
-            timeout=5, allow_redirects=False)
-        if response.status_code == 200:
-            self.device_config.configuration.version = EnphaseVersion.V1.value
-        elif response.status_code == 301:
-            if response.headers.get('Location', '').startswith('https'):
-                self.device_config.configuration.version = EnphaseVersion.V2.value
-            else:
-                self.device_config.configuration.version = EnphaseVersion.V1.value
-        else:
-            log.error("Could not identify Envoy firmware version")
-            return
-        try:
-            log.debug("saving envoy version")
-            Pub().pub("openWB/set/system/device/" + str(self.device_config.id) + "/config", asdict(self.device_config))
-        except Exception as e:
-            log.exception('Token mqtt write exception ' + str(e))
-
-    def auto_set_serial(self) -> None:
-        if self.device_config.configuration.version == EnphaseVersion.V1.value:
-            response = req.get_http_session().get(
-                'http://'+self.device_config.configuration.hostname+'/',
-                timeout=5)
-        elif self.device_config.configuration.version == EnphaseVersion.V2.value:
-            response = req.get_http_session().get(
-                'https://'+self.device_config.configuration.hostname+'/',
-                timeout=5, verify=False)
-        else:
-            log.error(f"unknown version: {self.device_config.configuration.version}")
-            return
-        pattern = re.compile('<title.*>.* ([0-9]+)</title>')
-        match = re.search(pattern, response.text)
-        if match is None:
-            log.error("could not find Envoy serial")
-            return
-        self.device_config.configuration.serial = match.group(1)
-        try:
-            log.debug("saving envoy serial")
-            Pub().pub("openWB/set/system/device/" + str(self.device_config.id) + "/config", asdict(self.device_config))
-        except Exception as e:
-            log.exception('Token mqtt write exception ' + str(e))
+    def create_inverter_component(component_config: EnphaseInverterSetup):
+        return EnphaseInverter(device_config.id, component_config)
 
-    def find_counter_eid(self, measurement_type: str) -> str:
-        if self.device_config.configuration.version == EnphaseVersion.V1.value:
-            json_response = req.get_http_session().get(
-                'http://'+self.device_config.configuration.hostname+'/ivp/meters', timeout=5).json()
-        elif self.device_config.configuration.version == EnphaseVersion.V2.value:
-            # v2 requires token authentication
-            if self.check_token() is False:
-                log.error("no valid token to connect to envoy")
-                return
-            response = req.get_http_session().get(
-                'https://'+self.device_config.configuration.hostname+'/ivp/meters',
-                timeout=5, verify=False,
-                headers={"Authorization": f"Bearer {self.device_config.configuration.token}"})
-            if response.ok is False:
-                log.info("token invalid, will be renewed if credentials are set")
-                self.device_config.configuration.token = None
-                self.token_fails += 1
-                return
-            self.token_fails = 0
-            json_response = response.json()
-        for cnt in json_response:
-            if cnt.get('measurementType') == measurement_type:
-                return str(cnt.get('eid'))
-
-    def check_token(self) -> bool:
-        if (self.device_config.configuration.token is None or
-                self.device_config.configuration.token == ""):
+    def check_token() -> bool:
+        if (device_config.configuration.token is None or
+                device_config.configuration.token == ""):
             log.info("no valid token found, trying to receive token")
-            if self.receive_token() is False:
+            if receive_token() is False:
                 return False
         try:
             token_exp = jwt.decode(
-                self.device_config.configuration.token, options={"verify_signature": False})["exp"]
+                device_config.configuration.token, options={"verify_signature": False})["exp"]
         except jwt.exceptions.InvalidTokenError as e:
             log.error("invalid token stored, trying to receive new token: " + str(e))
-            if self.receive_token() is False:
+            if receive_token() is False:
                 return False
             try:
                 token_exp = jwt.decode(
-                    self.device_config.configuration.token, options={"verify_signature": False})["exp"]
+                    device_config.configuration.token, options={"verify_signature": False})["exp"]
             except jwt.exceptions.InvalidTokenError as e:
                 log.error("received token invalid: " + str(e))
                 return False
         if token_exp < (time.time() + 3600*24):
             log.info("token will expire in less than one day, trying to receive new token")
-            self.receive_token()
+            receive_token()
         return True
 
-    def receive_token(self) -> bool:
-        if self.token_tries > 5:
+    def receive_token() -> bool:
+        nonlocal token_tries
+        if token_tries > 5:
             log.error("unsuccessfully tried 5 times to receive valid token, giving up. check log")
             return False
-        if self.token_fails > 5:
+        if token_fails > 5:
             log.error("received 5 times a non-working token, giving up. check Envoy / gateway serial number")
             return False
-        self.token_tries += 1
-        if (self.device_config.configuration.user is None or
-                self.device_config.configuration.password is None or
-                self.device_config.configuration.serial is None):
+        token_tries += 1
+        if (device_config.configuration.user is None or
+                device_config.configuration.password is None or
+                device_config.configuration.serial is None):
             log.error("no credentials to authenticate to get token!")
             return False
         with req.get_http_session() as session:
             response = session.post(
                 'https://enlighten.enphaseenergy.com/login/login.json?',
-                data={'user[email]': self.device_config.configuration.user,
-                      'user[password]': self.device_config.configuration.password},
+                data={'user[email]': device_config.configuration.user,
+                      'user[password]': device_config.configuration.password},
                 timeout=5)
             if response.ok is False:
                 log.error(f"could not authenticate at enphase, check credentials. "
@@ -183,106 +85,77 @@ def receive_token(self) -> bool:
             response = session.post(
                 'https://entrez.enphaseenergy.com/tokens',
                 json={'session_id': response_json['session_id'],
-                      'serial_num': self.device_config.configuration.serial,
-                      'username': self.device_config.configuration.user},
+                      'serial_num': device_config.configuration.serial,
+                      'username': device_config.configuration.user},
                 timeout=5)
             if response.ok is False:
                 log.error(f"could not receive token from enphase, check Envoy serial number. "
                           f"HTTP status code returned: {response.status_code}")
                 return False
-            self.token_tries = 0
+            token_tries = 0
             token = response.text.strip()
             log.info(f"received new token: {token}")
-            self.device_config.configuration.token = token
+            device_config.configuration.token = token
             try:
                 log.debug("saving new access token")
-                Pub().pub("openWB/set/system/device/" + str(self.device_config.id) + "/config",
-                          asdict(self.device_config))
+                Pub().pub("openWB/set/system/device/" + str(device_config.id) + "/config",
+                          asdict(device_config))
             except Exception as e:
                 log.exception('Token mqtt write exception ' + str(e))
                 return False
             return True
 
-    def update(self) -> None:
-        if self.components:
-            with MultiComponentUpdateContext(self.components):
-                if self.device_config.configuration.version == EnphaseVersion.V2.value:
-                    # v2 requires token authentication
-                    if self.check_token() is False:
-                        log.error("no valid token to connect to envoy")
-                        return
-                log.debug("Start device reading " + str(self.components))
-                with req.get_http_session() as session:
-                    json_live_data = None
-                    if self.device_config.configuration.version == EnphaseVersion.V1.value:
-                        json_response = session.get(
-                            'http://'+self.device_config.configuration.hostname+'/ivp/meters/readings',
-                            timeout=5).json()
-                        # json_live_data does not exist on older firmware
-                    elif self.device_config.configuration.version == EnphaseVersion.V2.value:
-                        response = session.get(
-                            'https://'+self.device_config.configuration.hostname+'/ivp/meters/readings',
-                            timeout=5, verify=False,
-                            headers={"Authorization": f"Bearer {self.device_config.configuration.token}"})
-                        if response.ok is False:
-                            log.info("token invalid, will be renewed if credentials are set")
-                            self.device_config.configuration.token = None
-                            self.token_fails += 1
-                            return
-                        self.token_fails = 0
-                        json_response = response.json()
-                        log.debug(f"meters/readings json response: {json_response}")
-                        if self.read_live_data:
-                            json_live_data = session.get(
-                                'https://'+self.device_config.configuration.hostname+'/ivp/livedata/status',
-                                timeout=5, verify=False,
-                                headers={"Authorization": f"Bearer {self.device_config.configuration.token}"}).json()
-                            log.debug(f"livedata/status json response: {json_live_data}")
-                    else:
-                        log.error(f"unknown version: {self.device_config.configuration.version}")
-                        return
-                    for component in self.components:
-                        self.components[component].update(json_response, json_live_data)
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "counter": counter,
-    "inverter": inverter,
-    "bat": bat
-}
-
-
-def read_legacy(hostname: str, component_config: Union[EnphaseCounterSetup, EnphaseInverterSetup]) -> None:
-    dev = Device(Enphase(configuration=EnphaseConfiguration(hostname=hostname)))
-    dev.add_component(component_config)
-    dev.update()
-
-
-def read_legacy_counter(ip_address: str, eid: str):
-    config = EnphaseCounterConfiguration(eid=eid)
-    read_legacy(
-        ip_address,
-        counter.component_descriptor.configuration_factory(id=None, configuration=config))
-
-
-def read_legacy_inverter(ip_address: str, eid: str, num: int):
-    config = EnphaseInverterConfiguration(eid=eid)
-    read_legacy(ip_address, inverter.component_descriptor.configuration_factory(id=num, configuration=config))
-
-
-def read_legacy_bat(ip_address: str, eid: str, num: int):
-    config = EnphaseBatConfiguration()
-    read_legacy(ip_address, bat.component_descriptor.configuration_factory(id=num, configuration=config))
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(
-        {"counter": read_legacy_counter, "inverter": read_legacy_inverter}, argv
+    def update_components(components: Iterable[Union[EnphaseBat, EnphaseCounter, EnphaseInverter]]):
+        nonlocal token_fails
+        if device_config.configuration.version == EnphaseVersion.V2.value:
+            # v2 requires token authentication
+            if check_token() is False:
+                log.error("no valid token to connect to envoy")
+                return
+        log.debug("Start device reading " + str(components))
+        with req.get_http_session() as session:
+            json_live_data = None
+            if device_config.configuration.version == EnphaseVersion.V1.value:
+                json_response = session.get(
+                    'http://'+device_config.configuration.hostname+'/ivp/meters/readings',
+                    timeout=5).json()
+                # json_live_data does not exist on older firmware
+            elif device_config.configuration.version == EnphaseVersion.V2.value:
+                response = session.get(
+                    'https://'+device_config.configuration.hostname+'/ivp/meters/readings',
+                    timeout=5, verify=False,
+                    headers={"Authorization": f"Bearer {device_config.configuration.token}"})
+                if response.ok is False:
+                    log.info("token invalid, will be renewed if credentials are set")
+                    device_config.configuration.token = None
+                    token_fails += 1
+                    return
+                token_fails = 0
+                json_response = response.json()
+                log.debug(f"meters/readings json response: {json_response}")
+                if read_live_data:
+                    json_live_data = session.get(
+                        'https://'+device_config.configuration.hostname+'/ivp/livedata/status',
+                        timeout=5, verify=False,
+                        headers={"Authorization": f"Bearer {device_config.configuration.token}"}).json()
+                    log.debug(f"livedata/status json response: {json_live_data}")
+            else:
+                log.error(f"unknown version: {device_config.configuration.version}")
+                return
+            for component in components:
+                components[component].update(json_response, json_live_data)
+
+    read_live_data = False
+    token_tries = 0
+    token_fails = 0
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
     )
 
 
diff --git a/packages/modules/devices/openwb/openwb_bat_kit/config.py b/packages/modules/devices/openwb/openwb_bat_kit/config.py
index 799f193bcc..daf996c8e4 100644
--- a/packages/modules/devices/openwb/openwb_bat_kit/config.py
+++ b/packages/modules/devices/openwb/openwb_bat_kit/config.py
@@ -7,7 +7,7 @@ def __init__(self):
         pass
 
 
-class BatKit:
+class BatKitSetup:
     def __init__(self,
                  name: str = "openWB Speicher-Kit",
                  type: str = "openwb_bat_kit",
diff --git a/packages/modules/devices/openwb/openwb_bat_kit/device.py b/packages/modules/devices/openwb/openwb_bat_kit/device.py
index e41a167b7c..a363126239 100644
--- a/packages/modules/devices/openwb/openwb_bat_kit/device.py
+++ b/packages/modules/devices/openwb/openwb_bat_kit/device.py
@@ -1,85 +1,37 @@
 import logging
-from typing import Dict, Optional, List, Union
+from typing import Iterable
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.devices.openwb.openwb_bat_kit import bat
-from modules.devices.openwb.openwb_bat_kit.config import BatKit, BatKitBatSetup
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.devices.openwb.openwb_bat_kit.config import BatKitSetup, BatKitBatSetup
+from modules.devices.openwb.openwb_bat_kit.bat import BatKit
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    def __init__(self, device_config: Union[Dict, BatKit]) -> None:
-        self.device_config = dataclass_from_dict(BatKit, device_config)
-        self.components = {}  # type: Dict[str, bat.BatKit]
-        self.client = modbus.ModbusTcpClient_("192.168.193.19", 8899)
+def create_device(device_config: BatKitSetup):
+    def create_bat_component(component_config: BatKitBatSetup):
+        return BatKit(device_config.id, component_config, client)
 
-    def add_component(self, component_config: Union[Dict, BatKitBatSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type == "bat":
-            self.components["component"+str(component_config.id)] = bat.BatKit(
-                self.device_config.id, component_config, self.client)
-        else:
-            raise Exception(
-                "illegal component type " + component_type)
+    def update_components(components: Iterable[BatKit]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
 
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
+    try:
+        client = modbus.ModbusTcpClient_("192.168.193.19", 8899)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat
-}
-
-
-def read_legacy(component_type: str, version: int, num: Optional[int] = None, evu_version: Optional[int] = None):
-    """ Ausführung des Moduls als Python-Skript
-    """
-    dev = Device(BatKit())
-
-    component_config = get_component_config(component_type, version, num)
-    dev.add_component(component_config)
-    log.debug('openWB Version: ' + str(version))
-
-    if component_type == "evu_inverter" and evu_version:
-        component_config = get_component_config("counter", evu_version, None)
-        dev.add_component(component_config)
-        log.debug('openWB EVU-Version: ' + str(evu_version))
-
-    dev.update()
-
-
-def get_component_config(component_type: str, version: int, num: Optional[int] = None) -> Dict:
-    if component_type == "bat":
-        component_config = bat.component_descriptor.configuration_factory()
-    else:
-        raise Exception("illegal component type " + component_type)
-    component_config.id = None
-    component_config.configuration.version = version
-    return component_config
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=BatKit)
+device_descriptor = DeviceDescriptor(configuration_factory=BatKitSetup)
diff --git a/packages/modules/devices/openwb/openwb_evu_kit/config.py b/packages/modules/devices/openwb/openwb_evu_kit/config.py
index 185d16d328..6074550b68 100644
--- a/packages/modules/devices/openwb/openwb_evu_kit/config.py
+++ b/packages/modules/devices/openwb/openwb_evu_kit/config.py
@@ -7,7 +7,7 @@ def __init__(self):
         pass
 
 
-class EvuKit:
+class EvuKitSetup:
     def __init__(self,
                  name: str = "openWB EVU-Kit",
                  type: str = "openwb_evu_kit",
diff --git a/packages/modules/devices/openwb/openwb_evu_kit/device.py b/packages/modules/devices/openwb/openwb_evu_kit/device.py
index c141d96b37..d7661b08b5 100644
--- a/packages/modules/devices/openwb/openwb_evu_kit/device.py
+++ b/packages/modules/devices/openwb/openwb_evu_kit/device.py
@@ -1,114 +1,50 @@
 import logging
 import time
-from typing import Dict, Union, Optional, List
+from typing import Iterable, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.devices.openwb.openwb_bat_kit.bat import BatKit
-from modules.devices.openwb.openwb_evu_kit import bat
-from modules.devices.openwb.openwb_evu_kit import counter
-from modules.devices.openwb.openwb_evu_kit import inverter
-from modules.devices.openwb.openwb_evu_kit.config import EvuKit, EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
+from modules.devices.openwb.openwb_evu_kit.counter import EvuKit
+from modules.devices.openwb.openwb_evu_kit.config import (EvuKitSetup, EvuKitBatSetup, EvuKitCounterSetup,
+                                                          EvuKitInverterSetup)
 from modules.devices.openwb.openwb_pv_kit.inverter import PvKit
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": BatKit,
-        "counter": counter.EvuKit,
-        "inverter": PvKit
-    }
+def create_device(device_config: EvuKitSetup):
+    def create_bat_component(component_config: EvuKitBatSetup):
+        return BatKit(device_config.id, component_config, client)
 
-    def __init__(self, device_config: Union[Dict, EvuKit]) -> None:
-        self.device_config = dataclass_from_dict(EvuKit, device_config)
-        self.components = {}  # type: Dict[str, Union[BatKit, counter.EvuKit, PvKit]]
-        self.client = modbus.ModbusTcpClient_("192.168.193.15", 8899)
+    def create_counter_component(component_config: EvuKitCounterSetup):
+        return EvuKit(device_config.id, component_config, client)
 
-    def add_component(self,
-                      component_config: Union[Dict, EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config, self.client))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
+    def create_inverter_component(component_config: EvuKitInverterSetup):
+        return PvKit(device_config.id, component_config, client)
 
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
+    def update_components(components: Iterable[Union[BatKit, EvuKit, PvKit]]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
                     time.sleep(0.2)
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
 
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str,
-                evu_version: int,
-                bat_module: Optional[str] = "",
-                bat_version: Optional[int] = 0,
-                num: Optional[int] = None,
-                inverter_module: Optional[str] = "",
-                inverter_version: Optional[int] = 0):
-    """ Ausführung des Moduls als Python-Skript
-    """
-    dev = Device(EvuKit())
-
-    component_config = get_component_config(component_type, evu_version, None)
-    dev.add_component(component_config)
-    log.debug('openWB Version: ' + str(evu_version))
-
-    if inverter_module == "wr_ethmpm3pmaevu" or inverter_module == "wr2_ethlovatoaevu":
-        component_config = get_component_config("inverter", inverter_version, num)
-        dev.add_component(component_config)
-        log.debug('openWB Inverter-Version: ' + str(inverter_version))
-    if bat_module == "speicher_sdmaevu":
-        component_config = get_component_config("bat", bat_version, None)
-        dev.add_component(component_config)
-        log.debug('openWB Bat-Version: ' + str(bat_version))
-
-    dev.update()
-
-
-def get_component_config(component_type: str, version: Optional[int], num: Optional[int] = None) -> Dict:
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception("illegal component type " + component_type +
-                        ". Allowed values: " +
-                        ','.join(COMPONENT_TYPE_TO_MODULE.keys()))
-    component_config.id = num
-    component_config.configuration.version = version
-    return component_config
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=EvuKit)
+    try:
+        client = modbus.ModbusTcpClient_("192.168.193.15", 8899)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
+
+
+device_descriptor = DeviceDescriptor(configuration_factory=EvuKitSetup)
diff --git a/packages/modules/devices/openwb/openwb_pv_kit/config.py b/packages/modules/devices/openwb/openwb_pv_kit/config.py
index 3dd0a110a1..71c23ec79c 100644
--- a/packages/modules/devices/openwb/openwb_pv_kit/config.py
+++ b/packages/modules/devices/openwb/openwb_pv_kit/config.py
@@ -7,7 +7,7 @@ def __init__(self):
         pass
 
 
-class PvKit:
+class PvKitSetup:
     def __init__(self,
                  name: str = "openWB PV-Kit",
                  type: str = "openwb_pv_kit",
diff --git a/packages/modules/devices/openwb/openwb_pv_kit/device.py b/packages/modules/devices/openwb/openwb_pv_kit/device.py
index bd7a47b266..e2704eeee2 100644
--- a/packages/modules/devices/openwb/openwb_pv_kit/device.py
+++ b/packages/modules/devices/openwb/openwb_pv_kit/device.py
@@ -1,84 +1,37 @@
 import logging
-from typing import Dict, Optional, List, Union
+from typing import Iterable
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.devices.openwb.openwb_pv_kit import inverter
-from modules.devices.openwb.openwb_pv_kit.config import PvKit, PvKitInverterSetup
+from modules.devices.openwb.openwb_pv_kit.config import PvKitSetup, PvKitInverterSetup
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    def __init__(self, device_config: Union[Dict, PvKit]) -> None:
-        self.device_config = dataclass_from_dict(PvKit, device_config)
-        self.components = {}  # type: Dict[str, inverter.PvKit]
-        self.client = modbus.ModbusTcpClient_("192.168.193.13", 8899)
+def create_device(device_config: PvKitSetup):
+    def create_inverter_component(component_config: PvKitInverterSetup):
+        return inverter.PvKit(device_config.id, component_config, client)
 
-    def add_component(self, component_config: Union[Dict, PvKitInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type == "inverter":
-            self.components["component"+str(component_config.id)] = inverter.PvKit(
-                self.device_config.id, component_config, self.client)
-        else:
-            raise Exception("illegal component type " + component_type)
+    def update_components(components: Iterable[inverter.PvKit]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
 
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
+    try:
+        client = modbus.ModbusTcpClient_("192.168.193.13", 8899)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
-COMPONENT_TYPE_TO_MODULE = {
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str, version: int, num: Optional[int] = None, evu_version: Optional[int] = None):
-    """ Ausführung des Moduls als Python-Skript
-    """
-    dev = Device(PvKit())
-
-    component_config = get_component_config(component_type, version, num)
-    dev.add_component(component_config)
-    log.debug('openWB Version: ' + str(version))
-
-    if component_type == "evu_inverter" and evu_version:
-        component_config = get_component_config("counter", evu_version, None)
-        dev.add_component(component_config)
-        log.debug('openWB EVU-Version: ' + str(evu_version))
-
-    dev.update()
-
-
-def get_component_config(component_type: str, version: int, num: Optional[int] = None) -> Dict:
-    if component_type == "inverter":
-        component_config = inverter.component_descriptor.configuration_factory()
-    else:
-        raise Exception("illegal component type " + component_type)
-    component_config.id = num
-    component_config.configuration.version = version
-    return component_config
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
-
-
-device_descriptor = DeviceDescriptor(configuration_factory=PvKit)
+device_descriptor = DeviceDescriptor(configuration_factory=PvKitSetup)
diff --git a/packages/modules/devices/siemens/siemens_sentron/device.py b/packages/modules/devices/siemens/siemens_sentron/device.py
index 38169ed75d..4347f62ab4 100644
--- a/packages/modules/devices/siemens/siemens_sentron/device.py
+++ b/packages/modules/devices/siemens/siemens_sentron/device.py
@@ -1,86 +1,38 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, List, Union, Optional
+from typing import Iterable
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.siemens.siemens_sentron import counter
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.common.modbus import ModbusTcpClient_
 from modules.devices.siemens.siemens_sentron.config import SiemensSentron, SiemensSentronCounterSetup
+from modules.devices.siemens.siemens_sentron.counter import SiemensSentronCounter
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "counter": counter.SiemensSentronCounter,
-    }
-
-    def __init__(self, device_config: Union[Dict, SiemensSentron]) -> None:
-        self.components = {}  # type: Dict[str, counter.SiemensSentronCounter]
-        try:
-            self.device_config = dataclass_from_dict(SiemensSentron, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, SiemensSentronCounterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = self.COMPONENT_TYPE_TO_CLASS[component_type](
-                component_config, self.client, self.device_config.configuration.modbus_id)
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "counter": counter,
-}
-
-
-def read_legacy(component_type: str, ip_address: str, num: Optional[int] = None) -> None:
-    device_config = SiemensSentron()
-    device_config.configuration.ip_address = ip_address
-    dev = Device(device_config)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+def create_device(device_config: SiemensSentron):
+    def create_counter_component(component_config: SiemensSentronCounterSetup):
+        return SiemensSentronCounter(component_config, client, device_config.configuration.modbus_id)
+
+    def update_components(components: Iterable[SiemensSentronCounter]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
+
+    try:
+        client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            counter=create_counter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=SiemensSentron)
diff --git a/packages/modules/devices/sma/sma_sunny_boy/device.py b/packages/modules/devices/sma/sma_sunny_boy/device.py
index a924802bbd..4a539b5f05 100644
--- a/packages/modules/devices/sma/sma_sunny_boy/device.py
+++ b/packages/modules/devices/sma/sma_sunny_boy/device.py
@@ -1,191 +1,62 @@
 #!/usr/bin/env python3
-import itertools
 import logging
-from typing import Dict, Optional, Union, List
+from typing import Iterable, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.common.component_state import InverterState
-from modules.common.store import get_inverter_value_store
-from modules.devices.sma.sma_sunny_boy import bat, bat_smart_energy, counter, inverter
-from modules.devices.sma.sma_sunny_boy.config import (SmaSunnyBoy, SmaSunnyBoyBatSetup, SmaSunnyBoyConfiguration,
-                                                      SmaSunnyBoyCounterSetup, SmaSunnyBoyInverterConfiguration,
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.common.modbus import ModbusTcpClient_
+from modules.devices.sma.sma_sunny_boy.bat import SunnyBoyBat
+from modules.devices.sma.sma_sunny_boy.bat_smart_energy import SunnyBoySmartEnergyBat
+from modules.devices.sma.sma_sunny_boy.config import (SmaSunnyBoy, SmaSunnyBoyBatSetup, SmaSunnyBoyCounterSetup,
                                                       SmaSunnyBoyInverterSetup, SmaSunnyBoySmartEnergyBatSetup)
-from modules.devices.sma.sma_sunny_boy.inv_version import SmaInverterVersion
-from modules.devices.sma.sma_webbox.config import SmaWebboxInverterSetup
-from modules.devices.sma.sma_webbox.inverter import SmaWebboxInverter
+from modules.devices.sma.sma_sunny_boy.counter import SmaSunnyBoyCounter
+from modules.devices.sma.sma_sunny_boy.inverter import SmaSunnyBoyInverter
 
 log = logging.getLogger(__name__)
 
 
 sma_modbus_tcp_component_classes = Union[
-    bat.SunnyBoyBat,
-    bat_smart_energy.SunnyBoySmartEnergyBat,
-    counter.SmaSunnyBoyCounter,
-    inverter.SmaSunnyBoyInverter
+    SunnyBoyBat,
+    SunnyBoySmartEnergyBat,
+    SmaSunnyBoyCounter,
+    SmaSunnyBoyInverter
 ]
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.SunnyBoyBat,
-        "bat_smart_energy": bat_smart_energy.SunnyBoySmartEnergyBat,
-        "counter": counter.SmaSunnyBoyCounter,
-        "inverter": inverter.SmaSunnyBoyInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, SmaSunnyBoy]) -> None:
-        self.components = {}  # type: Dict[str, sma_modbus_tcp_component_classes]
-        try:
-            self.device_config = dataclass_from_dict(SmaSunnyBoy, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict,
-                                                    SmaSunnyBoyBatSetup,
-                                                    SmaSunnyBoySmartEnergyBatSetup,
-                                                    SmaSunnyBoyCounterSetup,
-                                                    SmaSunnyBoyInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id,
-                component_config,
-                self.client))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            with self.client:
-                for component in self.components.values():
-                    # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                    with SingleComponentUpdateContext(component.fault_state):
-                        component.update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "bat_smart_energy": bat_smart_energy,
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str,
-                ip1: str,
-                webbox: Optional[int] = None,
-                ip2: Optional[str] = None,
-                ip3: Optional[str] = None,
-                ip4: Optional[str] = None,
-                version: Optional[int] = None,
-                hybrid: Optional[int] = 0,
-                sunny_boy_smart_energy: Optional[int] = 0,
-                num: Optional[int] = None) -> None:
-
-    log.debug("SMA Modbus Ip-Adresse: "+ip1)
-    log.debug("SMA Modbus Webbox: "+str(webbox))
-    log.debug("SMA Modbus weitere IPs: "+str(ip2)+", "+str(ip3)+", "+str(ip4))
-    log.debug("SMA Modbus Version: "+str(version))
-    log.debug("SMA Modbus Hybrid: "+str(hybrid))
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        if component_type == "inverter":
-            read_inverter(ip1, webbox, ip2, ip3, ip4, version, hybrid, num, sunny_boy_smart_energy)
-            return
-        else:
-            component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-            component_config.id = None
-            dev = Device(SmaSunnyBoy(configuration=SmaSunnyBoyConfiguration(ip_address=ip1)))
-            dev.add_component(component_config)
-            dev.update()
-    else:
-        raise Exception("illegal component type " + component_type +
-                        ". Allowed values: " +
-                        ','.join(COMPONENT_TYPE_TO_MODULE.keys()))
-
-
-def read_inverter(ip1: str,
-                  webbox: int,
-                  ip2: str,
-                  ip3: str,
-                  ip4: str,
-                  version: int,
-                  hybrid: int,
-                  num: int,
-                  sunny_boy_smart_energy: int):
-    def create_webbox_inverter(address: str) -> SmaWebboxInverter:
-        return SmaWebboxInverter(address, SmaWebboxInverterSetup(id=num))
-
-    def create_modbus_inverter(address: str) -> inverter.SmaSunnyBoyInverter:
-        config = SmaSunnyBoyInverterSetup(
-            id=num,
-            configuration=SmaSunnyBoyInverterConfiguration(hybrid=bool(hybrid),
-                                                           version=SmaInverterVersion(version)))
-        return inverter.SmaSunnyBoyInverter(0, config, modbus.ModbusTcpClient_(address, 502))
-
-    inverter1 = (create_webbox_inverter if webbox else create_modbus_inverter)(ip1)
-    inverters_additional = (create_modbus_inverter(address) for address in [ip2, ip3, ip4] if address != "none")
-    # In legacy we were able to configure multiple IP-Addresses for a single SMA-component, effectively creating a
-    # virtual component that represents the sum of its subcomponents. This was probably done in order to circumvent
-    # the limitation to have a maximum of two inverters configured in legacy.
-    # Since openWB 2 does not have a limitation on the number of inverters we do not implement this there. However
-    # we still need to implement this for the read_legacy-bridge.
-    # Here we act like we only update the first inverter, while we actually query all inverters and sum them up:
-    with SingleComponentUpdateContext(inverter1.fault_state):
-        if isinstance(inverter1, SmaWebboxInverter):
-            state = inverter1.read()
-            total_power = state.power
-            total_energy = state.exported
-        else:
-            total_energy = 0
-            with inverter1.tcp_client:
-                if hybrid == 1:
-                    if sunny_boy_smart_energy == 0:
-                        bat_comp = bat.SunnyBoyBat(0, SmaSunnyBoyBatSetup(), inverter1.tcp_client)
-                    else:
-                        bat_comp = bat_smart_energy.SunnyBoySmartEnergyBat(0,
-                                                                           SmaSunnyBoySmartEnergyBatSetup(),
-                                                                           inverter1.tcp_client)
-                    bat_state = bat_comp.read()
-                    total_energy = bat_state.imported-bat_state.exported
-                state = inverter1.read()
-            total_power = state.power
-            total_energy += state.exported
-            if state.dc_power != 0:
-                if hybrid == 1:
-                    total_power -= bat_state.power
-            else:
-                total_power = 0
-            print("WR 1 nach Korrektur: {}".format(state))
-        for inv in itertools.chain(inverters_additional):
-            with inv.tcp_client:
-                state = inv.read()
-            total_power += state.power
-            total_energy += state.exported
-        get_inverter_value_store(num).set(InverterState(exported=total_energy, power=total_power))
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+def create_device(device_config: SmaSunnyBoy):
+    def create_bat_component(component_config: SmaSunnyBoyBatSetup):
+        return SunnyBoyBat(device_config.id, component_config, client)
+
+    def create_bat_smart_energy_component(component_config: SmaSunnyBoySmartEnergyBatSetup):
+        return SunnyBoySmartEnergyBat(device_config.id, component_config, client)
+
+    def create_counter_component(component_config: SmaSunnyBoyCounterSetup):
+        return SmaSunnyBoyCounter(device_config.id, component_config, client)
+
+    def create_inverter_component(component_config: SmaSunnyBoyInverterSetup):
+        return SmaSunnyBoyInverter(device_config.id, component_config, client)
+
+    def update_components(components: Iterable[sma_modbus_tcp_component_classes]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
+
+    try:
+        client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            bat_smart_energy=create_bat_smart_energy_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=SmaSunnyBoy)
diff --git a/packages/modules/devices/sma/sma_sunny_boy/sma_sunny_boy_test.py b/packages/modules/devices/sma/sma_sunny_boy/sma_sunny_boy_test.py
deleted file mode 100644
index 85d02a8679..0000000000
--- a/packages/modules/devices/sma/sma_sunny_boy/sma_sunny_boy_test.py
+++ /dev/null
@@ -1,67 +0,0 @@
-from unittest.mock import Mock
-import pytest
-
-from modules.common.component_state import BatState, InverterState
-from modules.common.modbus import ModbusClient
-from modules.conftest import SAMPLE_IP
-from modules.devices.sma.sma_sunny_boy import device
-from modules.devices.sma.sma_sunny_boy.bat import SunnyBoyBat
-from modules.devices.sma.sma_sunny_boy.inverter import SmaSunnyBoyInverter
-
-
-@pytest.fixture(autouse=True)
-def mock_modbus_client(monkeypatch):
-    monkeypatch.setattr(ModbusClient, '__enter__',  Mock())
-    monkeypatch.setattr(ModbusClient, '__exit__',  Mock())
-
-
-class Params:
-    def __init__(self, name: str,
-                 expected_inverter_power: float,
-                 ip2: str = "none",
-                 ip3: str = "none",
-                 ip4: str = "none",
-                 hybrid: int = 0) -> None:
-        self.name = name
-        self.expected_inverter_power = expected_inverter_power
-        self.ip2 = ip2
-        self.ip3 = ip3
-        self.ip4 = ip4
-        self.hybrid = hybrid
-
-
-cases = [
-    Params("no hybrid, one inverter", -5786, "none", "none", "none", 0),
-    Params("no hybrid, four inverter", -23144, SAMPLE_IP, SAMPLE_IP, SAMPLE_IP, 0),
-    Params("hybrid, one inverter", -6009, "none", "none", "none", 1),
-    Params("hybrid, four inverter", -23367, SAMPLE_IP, SAMPLE_IP, SAMPLE_IP, 1),
-]
-
-
-@pytest.mark.parametrize("params", cases, ids=[c.name for c in cases])
-def test_sma_modbus_hybrid(monkeypatch, params: Params):
-    # setup
-    mock_inverter_value_store = Mock()
-    monkeypatch.setattr(device, "get_inverter_value_store", Mock(return_value=mock_inverter_value_store))
-    monkeypatch.setattr(SmaSunnyBoyInverter, "read", Mock(return_value=SAMPLE_INVERTER_STATE))
-    monkeypatch.setattr(SunnyBoyBat, "read", Mock(return_value=SAMPLE_BAT_STATE))
-
-    # execution
-    device.read_legacy("inverter", SAMPLE_IP, 0, params.ip2, params.ip3,
-                       params.ip4, 0, params.hybrid, 0, 0)
-    # evaluation
-    assert mock_inverter_value_store.set.call_args[0][0].power == params.expected_inverter_power
-
-
-SAMPLE_BAT_STATE = BatState(
-    exported=200,
-    imported=100,
-    power=223,
-    soc=100,
-)
-
-SAMPLE_INVERTER_STATE = InverterState(
-    power=-5786,
-    exported=200,
-    dc_power=-1
-)
diff --git a/packages/modules/devices/sma/sma_sunny_island/device.py b/packages/modules/devices/sma/sma_sunny_island/device.py
index 1f4b6e044b..9d11cbafec 100644
--- a/packages/modules/devices/sma/sma_sunny_island/device.py
+++ b/packages/modules/devices/sma/sma_sunny_island/device.py
@@ -1,87 +1,38 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, List, Union
+from typing import Iterable
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.sma.sma_sunny_island import bat
-from modules.devices.sma.sma_sunny_island.config import (SmaSunnyIsland,
-                                                         SmaSunnyIslandBatSetup,
-                                                         SmaSunnyIslandConfiguration)
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.devices.sma.sma_sunny_island.bat import SunnyIslandBat
+from modules.devices.sma.sma_sunny_island.config import SmaSunnyIsland, SmaSunnyIslandBatSetup
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.SunnyIslandBat
-    }
+def create_device(device_config: SmaSunnyIsland):
+    def create_bat_component(component_config: SmaSunnyIslandBatSetup):
+        return SunnyIslandBat(component_config, client)
 
-    def __init__(self, device_config: Union[Dict, SmaSunnyIsland]) -> None:
-        self.components = {}  # type: Dict[str, bat.SunnyIslandBat]
-        try:
-            self.device_config = dataclass_from_dict(SmaSunnyIsland, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, SmaSunnyIslandBatSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                component_config,
-                self.client))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components.values():
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
+    def update_components(components: Iterable[SunnyIslandBat]):
+        with client:
+            for component in components:
                 with SingleComponentUpdateContext(component.fault_state):
                     component.update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat
-}
-
-
-def read_legacy(component_type: str, ip_address: str) -> None:
-    log.debug("SMA Modbus Ip-Adresse: "+ip_address)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception("illegal component type " + component_type +
-                        ". Allowed values: " +
-                        ','.join(COMPONENT_TYPE_TO_MODULE.keys()))
-
-    component_config.id = None
-    dev = Device(SmaSunnyIsland(configuration=SmaSunnyIslandConfiguration(ip_address=ip_address)))
-    dev.add_component(component_config)
-    dev.update()
-
 
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+    try:
+        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=SmaSunnyIsland)

From 1f624751fbe9a8267f7f30ea0a04a6edcc775123 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Tue, 24 Sep 2024 09:31:53 +0200
Subject: [PATCH 080/205] fix missed vendor information

---
 packages/modules/devices/sigenergy/sigenergy/config.py | 2 ++
 packages/modules/devices/solis/solis/config.py         | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/packages/modules/devices/sigenergy/sigenergy/config.py b/packages/modules/devices/sigenergy/sigenergy/config.py
index 48ae1deff1..d723015f5f 100644
--- a/packages/modules/devices/sigenergy/sigenergy/config.py
+++ b/packages/modules/devices/sigenergy/sigenergy/config.py
@@ -2,6 +2,7 @@
 from helpermodules.auto_str import auto_str
 
 from modules.common.component_setup import ComponentSetup
+from ..vendor import vendor_descriptor
 
 
 class SigenergyConfiguration:
@@ -20,6 +21,7 @@ def __init__(self,
                  configuration: SigenergyConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SigenergyConfiguration()
 
diff --git a/packages/modules/devices/solis/solis/config.py b/packages/modules/devices/solis/solis/config.py
index 2992d5a5c0..470c7c55bb 100644
--- a/packages/modules/devices/solis/solis/config.py
+++ b/packages/modules/devices/solis/solis/config.py
@@ -3,6 +3,7 @@
 
 from modules.common.component_setup import ComponentSetup
 from modules.devices.solis.solis.version import SolisVersion
+from ..vendor import vendor_descriptor
 
 
 class SolisConfiguration:
@@ -23,6 +24,7 @@ def __init__(self,
                  configuration: SolisConfiguration = None) -> None:
         self.name = name
         self.type = type
+        self.vendor = vendor_descriptor.configuration_factory().type
         self.id = id
         self.configuration = configuration or SolisConfiguration()
 

From 33eeb690701f6d39aa40e46cae1cf56758c68970 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 25 Sep 2024 07:56:20 +0200
Subject: [PATCH 081/205] Use create device 2: sma webbox, solax, sonnen,
 studer, sungrow (#1775)

* sma webbox

* solax

* sonnenbatterie

* studer

* sungrow
---
 .../modules/devices/sma/sma_webbox/device.py  |  61 ++-----
 .../modules/devices/solax/solax/device.py     | 123 ++++---------
 .../devices/sonnen/sonnenbatterie/device.py   | 124 ++++---------
 .../modules/devices/studer/studer/device.py   | 109 ++++--------
 .../modules/devices/sungrow/sungrow/device.py | 167 +++++-------------
 5 files changed, 160 insertions(+), 424 deletions(-)

diff --git a/packages/modules/devices/sma/sma_webbox/device.py b/packages/modules/devices/sma/sma_webbox/device.py
index dc5ebc58e4..8e5ee62baf 100644
--- a/packages/modules/devices/sma/sma_webbox/device.py
+++ b/packages/modules/devices/sma/sma_webbox/device.py
@@ -1,59 +1,26 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Union
 
-from dataclass_utils import dataclass_from_dict
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
 from modules.devices.sma.sma_webbox.config import SmaWebbox, SmaWebboxInverterSetup
-from modules.devices.sma.sma_webbox import inverter
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.sma.sma_webbox.inverter import SmaWebboxInverter
 
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "inverter": inverter.SmaWebboxInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, SmaWebbox]) -> None:
-        self.components = {}  # type: Dict[str, inverter.SmaWebboxInverter]
-        try:
-            self.device_config = dataclass_from_dict(SmaWebbox, device_config)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, SmaWebboxInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(SmaWebboxInverterSetup, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.configuration.ip_address,
-                component_config))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components.values():
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(component.fault_state):
-                    component.update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-# read_legacy in sma_modbus
+def create_device(device_config: SmaWebbox):
+    def create_inverter_component(component_config: SmaWebboxInverterSetup):
+        return SmaWebboxInverter(device_config.configuration.ip_address, component_config)
+
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            inverter=create_inverter_component,
+        ),
+        component_updater=IndependentComponentUpdater(lambda component: component.update())
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=SmaWebbox)
diff --git a/packages/modules/devices/solax/solax/device.py b/packages/modules/devices/solax/solax/device.py
index 5c189ceb04..d612f2f16e 100644
--- a/packages/modules/devices/solax/solax/device.py
+++ b/packages/modules/devices/solax/solax/device.py
@@ -1,99 +1,48 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Optional, List, Union
+from typing import Iterable, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.solax.solax import bat
-from modules.devices.solax.solax import counter
-from modules.devices.solax.solax import inverter
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.common.modbus import ModbusTcpClient_
+from modules.devices.solax.solax.bat import SolaxBat
 from modules.devices.solax.solax.config import Solax, SolaxBatSetup, SolaxCounterSetup, SolaxInverterSetup
+from modules.devices.solax.solax.counter import SolaxCounter
+from modules.devices.solax.solax.inverter import SolaxInverter
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.SolaxBat,
-        "counter": counter.SolaxCounter,
-        "inverter": inverter.SolaxInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, Solax]) -> None:
-        self.components = {}  # type: Dict[str, counter.SolaxCounter]
-        try:
-            self.device_config = dataclass_from_dict(Solax, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict,
-                                                    SolaxBatSetup,
-                                                    SolaxCounterSetup,
-                                                    SolaxInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config, self.client,
-                self.device_config.configuration.modbus_id))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden.")
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str, ip_address: str, modbus_id: int, num: Optional[int] = None) -> None:
-    device_config = Solax()
-    device_config.configuration.ip_address = ip_address
-    device_config.configuration.modbus_id = modbus_id
-    dev = Device(device_config)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-
-    log.debug('Solax IP-Adresse: ' + ip_address)
-    log.debug('Solax ID: ' + str(modbus_id))
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+def create_device(device_config: Solax):
+    def create_bat_component(component_config: SolaxBatSetup):
+        return SolaxBat(device_config.id, component_config, client, device_config.configuration.modbus_id)
+
+    def create_counter_component(component_config: SolaxCounterSetup):
+        return SolaxCounter(device_config.id, component_config, client, device_config.configuration.modbus_id)
+
+    def create_inverter_component(component_config: SolaxInverterSetup):
+        return SolaxInverter(device_config.id, component_config, client, device_config.configuration.modbus_id)
+
+    def update_components(components: Iterable[Union[SolaxBat, SolaxCounter, SolaxInverter]]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
+
+    try:
+        client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Solax)
diff --git a/packages/modules/devices/sonnen/sonnenbatterie/device.py b/packages/modules/devices/sonnen/sonnenbatterie/device.py
index c5ac46c461..bfd73cdb81 100644
--- a/packages/modules/devices/sonnen/sonnenbatterie/device.py
+++ b/packages/modules/devices/sonnen/sonnenbatterie/device.py
@@ -2,104 +2,48 @@
 """ Modul zum Auslesen von sonnenBatterie Speichern.
 """
 import logging
-from typing import Dict, Union, Optional, List
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.sonnen.sonnenbatterie import bat, counter, inverter
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
+from modules.devices.sonnen.sonnenbatterie.bat import SonnenbatterieBat
 from modules.devices.sonnen.sonnenbatterie.config import (SonnenBatterie, SonnenbatterieBatSetup,
                                                           SonnenbatterieCounterSetup,
                                                           SonnenbatterieInverterSetup)
-log = logging.getLogger(__name__)
-
-
-sonnenbatterie_component_classes = Union[
-    bat.SonnenbatterieBat,
-    counter.SonnenbatterieCounter,
-    inverter.SonnenbatterieInverter
-]
-
-
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.SonnenbatterieBat,
-        "counter": counter.SonnenbatterieCounter,
-        "inverter": inverter.SonnenbatterieInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, SonnenBatterie]) -> None:
-        self.components = {}  # type: Dict[str, sonnenbatterie_component_classes]
-        try:
-            self.device_config = dataclass_from_dict(SonnenBatterie, device_config)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
+from modules.devices.sonnen.sonnenbatterie.counter import SonnenbatterieCounter
+from modules.devices.sonnen.sonnenbatterie.inverter import SonnenbatterieInverter
 
-    def add_component(self, component_config: Union[Dict,
-                                                    SonnenbatterieBatSetup,
-                                                    SonnenbatterieCounterSetup,
-                                                    SonnenbatterieInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id,
-                self.device_config.configuration.ip_address,
-                self.device_config.configuration.variant,
-                component_config))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
 
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str, address: str, variant: int, num: Optional[int] = None) -> None:
-    device_config = SonnenBatterie()
-    device_config.configuration.ip_address = address
-    device_config.configuration.variant = variant
-    dev = Device(device_config)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-    log.debug('SonnenBatterie address: ' + address)
-    log.debug('SonnenBatterie variant: ' + str(variant))
-    dev.update()
+log = logging.getLogger(__name__)
 
 
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+def create_device(device_config: SonnenBatterie):
+    def create_bat_component(component_config: SonnenbatterieBatSetup):
+        return SonnenbatterieBat(device_config.id,
+                                 device_config.configuration.ip_address,
+                                 device_config.configuration.variant,
+                                 component_config)
+
+    def create_counter_component(component_config: SonnenbatterieCounterSetup):
+        return SonnenbatterieCounter(device_config.id,
+                                     device_config.configuration.ip_address,
+                                     device_config.configuration.variant,
+                                     component_config)
+
+    def create_inverter_component(component_config: SonnenbatterieInverterSetup):
+        return SonnenbatterieInverter(device_config.id,
+                                      device_config.configuration.ip_address,
+                                      device_config.configuration.variant,
+                                      component_config)
+
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=IndependentComponentUpdater(lambda component: component.update())
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=SonnenBatterie)
diff --git a/packages/modules/devices/studer/studer/device.py b/packages/modules/devices/studer/studer/device.py
index 0ca412a371..dbbd51528a 100644
--- a/packages/modules/devices/studer/studer/device.py
+++ b/packages/modules/devices/studer/studer/device.py
@@ -2,91 +2,44 @@
 """ Modul zum Auslesen von Alpha Ess Speichern, Zählern und Wechselrichtern.
 """
 import logging
-from typing import Dict, List, Union, Optional
+from typing import Iterable, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.studer.studer import bat
-from modules.devices.studer.studer import inverter
-from modules.devices.studer.studer.config import (
-    Studer, StuderBatSetup, StuderInverterConfiguration, StuderInverterSetup)
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.devices.studer.studer.bat import StuderBat
+from modules.devices.studer.studer.config import Studer, StuderBatSetup, StuderInverterSetup
+from modules.devices.studer.studer.inverter import StuderInverter
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.StuderBat,
-        "inverter": inverter.StuderInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, Studer]) -> None:
-        self.components = {}  # type: Dict[str, Union[bat.StuderBat, inverter.StuderInverter]]
-        try:
-            self.device_config = dataclass_from_dict(Studer, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, StuderBatSetup, StuderInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                component_config, self.client))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "inverter": inverter
-}
-
-
-def read_legacy(ip_address: str, component_config: Union[StuderBatSetup, StuderInverterSetup]):
-    device_config = Studer()
-    device_config.configuration.ip_address = ip_address
-    dev = Device(device_config)
-    dev.add_component(component_config)
-    dev.update()
-
-
-def read_legacy_bat(ip_address: str, num: Optional[int] = None):
-    read_legacy(ip_address, bat.component_descriptor.configuration_factory(id=None))
-
-
-def read_legacy_inverter(ip_address: str, vc_count: int, vc_type: str, num: int):
-    read_legacy(ip_address, inverter.component_descriptor.configuration_factory(
-        id=num, configuration=StuderInverterConfiguration(vc_count=vc_count, vc_type=vc_type)))
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args({"bat": read_legacy_bat, "inverter": read_legacy_inverter}, argv)
+def create_device(device_config: Studer):
+    def create_bat_component(component_config: StuderBatSetup):
+        return StuderBat(component_config, client)
+
+    def create_inverter_component(component_config: StuderInverterSetup):
+        return StuderInverter(component_config, client)
+
+    def update_components(components: Iterable[Union[StuderBat, StuderInverter]]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
+
+    try:
+        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Studer)
diff --git a/packages/modules/devices/sungrow/sungrow/device.py b/packages/modules/devices/sungrow/sungrow/device.py
index 1c647c1f4e..9f00a7eef9 100644
--- a/packages/modules/devices/sungrow/sungrow/device.py
+++ b/packages/modules/devices/sungrow/sungrow/device.py
@@ -1,133 +1,56 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, List, Union
+from typing import Iterable, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import MultiComponentUpdateContext
-from modules.devices.sungrow.sungrow import bat
-from modules.devices.sungrow.sungrow import counter
-from modules.devices.sungrow.sungrow import inverter
-from modules.devices.sungrow.sungrow.config import (Sungrow, SungrowBatSetup, SungrowCounterConfiguration,
-                                                    SungrowCounterSetup,
-                                                    SungrowInverterSetup)
-from modules.devices.sungrow.sungrow.version import Version
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.devices.sungrow.sungrow.bat import SungrowBat
+from modules.devices.sungrow.sungrow.config import Sungrow, SungrowBatSetup, SungrowCounterSetup, SungrowInverterSetup
+from modules.devices.sungrow.sungrow.counter import SungrowCounter
+from modules.devices.sungrow.sungrow.inverter import SungrowInverter
 
 log = logging.getLogger(__name__)
 
-sungrow_component_classes = Union[bat.SungrowBat, counter.SungrowCounter, inverter.SungrowInverter]
 
-
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.SungrowBat,
-        "counter": counter.SungrowCounter,
-        "inverter": inverter.SungrowInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, Sungrow]) -> None:
-        self.components = {}  # type: Dict[str, sungrow_component_classes]
-        try:
-            self.device_config = dataclass_from_dict(Sungrow, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul " + self.device_config.name)
-
-    def add_component(self,
-                      component_config: Union[
-                          Dict, SungrowBatSetup, SungrowCounterSetup, SungrowInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(
-            COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component" + str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config, component_config, self.client))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            with MultiComponentUpdateContext(self.components):
-                with self.client:
-                    for component in self.components.values():
-                        if isinstance(component, inverter.SungrowInverter):
-                            pv_power = component.update()
-                    for component in self.components.values():
-                        if isinstance(component, counter.SungrowCounter):
-                            component.update(pv_power)
-                    for component in self.components.values():
-                        if isinstance(component, bat.SungrowBat):
-                            component.update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(ip_address: str,
-                port: int,
-                modbus_id: int,
-                version: int,
-                component_config: dict):
-    device_config = Sungrow()
-    device_config.configuration.ip_address = ip_address
-    device_config.configuration.port = port
-    device_config.configuration.modbus_id = modbus_id
-    device_config.configuration.version = Version(version)
-    dev = Device(device_config)
-    dev.add_component(component_config)
-    dev.update()
-
-
-def read_legacy_bat(ip_address: str, port: int, modbus_id: int, version: int):
-    read_legacy(ip_address, port, modbus_id, version, bat.component_descriptor.configuration_factory(id=None))
-
-
-def read_legacy_counter(ip_address: str, port: int, modbus_id: int, version: int):
-    read_legacy(ip_address, port, modbus_id, version, counter.component_descriptor.configuration_factory(
-        id=None, configuration=SungrowCounterConfiguration()))
-
-
-def read_legacy_inverter(ip_address: str,
-                         port: int,
-                         modbus_id: int,
-                         num: int,
-                         read_counter: int,
-                         version: int):
-    device_config = Sungrow()
-    device_config.configuration.ip_address = ip_address
-    device_config.configuration.port = port
-    device_config.configuration.modbus_id = modbus_id
-    device_config.configuration.version = Version(version)
-    dev = Device(device_config)
-    dev.add_component(inverter.component_descriptor.configuration_factory(id=num))
-    if read_counter == 1:
-        dev.add_component(counter.component_descriptor.configuration_factory(
-            id=None, configuration=SungrowCounterConfiguration()))
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(
-        {"bat": read_legacy_bat, "counter": read_legacy_counter, "inverter": read_legacy_inverter}, argv
+def create_device(device_config: Sungrow):
+    def create_bat_component(component_config: SungrowBatSetup):
+        return SungrowBat(device_config, component_config, client)
+
+    def create_counter_component(component_config: SungrowCounterSetup):
+        return SungrowCounter(device_config, component_config, client)
+
+    def create_inverter_component(component_config: SungrowInverterSetup):
+        return SungrowInverter(device_config, component_config, client)
+
+    def update_components(components: Iterable[Union[SungrowBat, SungrowCounter, SungrowInverter]]):
+        with client:
+            for component in components.values():
+                if isinstance(component, SungrowInverter):
+                    with SingleComponentUpdateContext(component.fault_state):
+                        pv_power = component.update()
+            for component in components.values():
+                if isinstance(component, SungrowCounter):
+                    with SingleComponentUpdateContext(component.fault_state):
+                        component.update(pv_power)
+            for component in components.values():
+                if isinstance(component, SungrowBat):
+                    with SingleComponentUpdateContext(component.fault_state):
+                        component.update()
+
+    try:
+        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
     )
 
 

From 702d3aec859114e6eb0213f9b3c68a1c5259b5f4 Mon Sep 17 00:00:00 2001
From: ndrsnhs <156670705+ndrsnhs@users.noreply.github.com>
Date: Wed, 25 Sep 2024 08:30:48 +0200
Subject: [PATCH 082/205] improve shelly (#1851)

---
 packages/helpermodules/update_config.py        | 18 ++++++++++++++++--
 packages/modules/devices/shelly/shelly/bat.py  | 17 ++++++++++++++---
 .../modules/devices/shelly/shelly/config.py    |  4 ++--
 .../modules/devices/shelly/shelly/counter.py   |  6 ++++--
 .../modules/devices/shelly/shelly/device.py    | 14 +++++++-------
 .../modules/devices/shelly/shelly/inverter.py  |  6 +++++-
 6 files changed, 48 insertions(+), 17 deletions(-)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index fca2d6fa91..8099201ca1 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -47,7 +47,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 60
+    DATASTORE_VERSION = 61
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -1631,7 +1631,7 @@ def upgrade_datastore_51(self) -> None:
         def upgrade(topic: str, payload) -> None:
             if re.search("openWB/system/device/[0-9]+", topic) is not None:
                 payload = decode_payload(payload)
-                # update version and firmware of GoodWe
+                # remove device type of deye
                 if payload.get("type") == "deye" and "device_type" in payload["configuration"]:
                     payload["configuration"].pop("device_type")
                 Pub().pub(topic, payload)
@@ -1775,3 +1775,17 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {topic: device_config}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 60)
+
+    def upgrade_datastore_60(self) -> None:
+        def upgrade(topic: str, payload) -> None:
+            if re.search("openWB/system/device/[0-9]+", topic) is not None:
+                payload = decode_payload(payload)
+                # remove shelly generation
+                if payload.get("type") == "shelly" and "generation" in payload["configuration"]:
+                    payload["configuration"].pop("generation")
+                # add factor
+                if payload.get("type") == "shelly" and "factor" not in payload["configuration"]:
+                    payload["configuration"].update({"factor": -1})
+                Pub().pub(topic, payload)
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 61)
diff --git a/packages/modules/devices/shelly/shelly/bat.py b/packages/modules/devices/shelly/shelly/bat.py
index bcf06a0acd..e113c18e36 100644
--- a/packages/modules/devices/shelly/shelly/bat.py
+++ b/packages/modules/devices/shelly/shelly/bat.py
@@ -18,12 +18,14 @@ def __init__(self,
                  device_id: int,
                  component_config: ShellyBatSetup,
                  address: str,
+                 factor: int,
                  generation: Optional[int]) -> None:
         self.component_config = component_config
         self.sim_counter = SimCounter(device_id, self.component_config.id, prefix="speicher")
         self.store = get_bat_value_store(self.component_config.id)
         self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
         self.address = address
+        self.factor = factor
         self.generation = generation
 
     def total_power_from_shelly(self) -> int:
@@ -35,18 +37,27 @@ def total_power_from_shelly(self) -> int:
         status = req.get_http_session().get(status_url, timeout=3).json()
         try:
             if self.generation == 1:
-                meters = status['emeters']  # shelly3EM
+                if 'meters' in status:
+                    meters = status['meters']  # shelly
+                else:
+                    meters = status['emeters']  # shellyEM & shelly3EM
+                # shellyEM has one meter, shelly3EM has three meters:
                 for meter in meters:
                     total = total + meter['power']
             else:
-                total = status['em:0']['total_act_power']  # shelly Pro3EM
+                if 'switch:0' in status:
+                    total = status['switch:0']['apower']
+                elif 'pm1:0' in status:
+                    total = status['pm1:0']['apower']  # shelly PM Mini Gen 3
+                else:
+                    total = status['em:0']['total_act_power']  # shelly Pro3EM
         except KeyError:
             log.exception("unsupported shelly device?")
         finally:
             return int(total)
 
     def update(self) -> None:
-        bat = self.total_power_from_shelly() * -1
+        bat = self.total_power_from_shelly() * self.factor
         imported, exported = self.sim_counter.sim_count(bat)
         bat_state = BatState(
             power=bat,
diff --git a/packages/modules/devices/shelly/shelly/config.py b/packages/modules/devices/shelly/shelly/config.py
index ecce109a5d..1e5570f33a 100644
--- a/packages/modules/devices/shelly/shelly/config.py
+++ b/packages/modules/devices/shelly/shelly/config.py
@@ -7,9 +7,9 @@
 
 @auto_str
 class ShellyConfiguration:
-    def __init__(self, ip_address: Optional[str] = None, generation: Optional[int] = None):
+    def __init__(self, ip_address: Optional[str] = None, factor: Optional[int] = -1):
         self.ip_address = ip_address
-        self.generation = generation
+        self.factor = factor
 
 
 @auto_str
diff --git a/packages/modules/devices/shelly/shelly/counter.py b/packages/modules/devices/shelly/shelly/counter.py
index 3c8f152719..b6e4f1d3df 100644
--- a/packages/modules/devices/shelly/shelly/counter.py
+++ b/packages/modules/devices/shelly/shelly/counter.py
@@ -18,12 +18,14 @@ def __init__(self,
                  device_id: int,
                  component_config: ShellyCounterSetup,
                  address: str,
+                 factor: int,
                  generation: Optional[int]) -> None:
         self.component_config = component_config
         self.sim_counter = SimCounter(device_id, self.component_config.id, prefix="bezug")
         self.store = get_counter_value_store(self.component_config.id)
         self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
         self.address = address
+        self.factor = factor
         self.generation = generation
 
     def update(self) -> None:
@@ -39,7 +41,7 @@ def update(self) -> None:
                 # shelly3EM has three meters:
                 for meter in meters:
                     power = power + meter['power']
-                power = power * -1
+                power = power * self.factor
 
                 voltages = [status['emeters'][i]['voltage'] for i in range(0, 3)]
                 currents = [status['emeters'][i]['current'] for i in range(0, 3)]
@@ -52,7 +54,7 @@ def update(self) -> None:
                 currents = [status['em:0'][f'{i}_current'] for i in 'abc']
                 powers = [status['em:0'][f'{i}_act_power'] for i in 'abc']
                 power_factors = [status['em:0'][f'{i}_pf'] for i in 'abc']
-                power = status['em:0']['total_act_power'] * -1
+                power = status['em:0']['total_act_power'] * self.factor
                 imported, exported = self.sim_counter.sim_count(power)
 
             counter_state = CounterState(
diff --git a/packages/modules/devices/shelly/shelly/device.py b/packages/modules/devices/shelly/shelly/device.py
index b1cdb43379..6b207bddaf 100644
--- a/packages/modules/devices/shelly/shelly/device.py
+++ b/packages/modules/devices/shelly/shelly/device.py
@@ -23,7 +23,7 @@ def get_device_generation(address: str) -> int:
     url = "http://" + address + "/shelly"
     generation = 1
     device_info = req.get_http_session().get(url, timeout=3).json()
-    if 'gen' in device_info:
+    if 'gen' in device_info:  # gen 2+
         generation = int(device_info['gen'])
     return generation
 
@@ -31,18 +31,18 @@ def get_device_generation(address: str) -> int:
 def create_device(device_config: Shelly) -> ConfigurableDevice:
     def create_counter_component(component_config: ShellyCounterSetup) -> ShellyCounter:
         return ShellyCounter(device_config.id, component_config, device_config.configuration.ip_address,
-                             device_config.configuration.generation)
+                             device_config.configuration.factor,
+                             get_device_generation(device_config.configuration.ip_address))
 
     def create_inverter_component(component_config: ShellyInverterSetup) -> ShellyInverter:
         return ShellyInverter(device_config.id, component_config, device_config.configuration.ip_address,
-                              device_config.configuration.generation)
+                              device_config.configuration.factor,
+                              get_device_generation(device_config.configuration.ip_address))
 
     def create_bat_component(component_config: ShellyBatSetup) -> ShellyBat:
         return ShellyBat(device_config.id, component_config, device_config.configuration.ip_address,
-                         device_config.configuration.generation)
-
-    if device_config.configuration.generation is None and device_config.configuration.ip_address is not None:
-        device_config.configuration.generation = get_device_generation(device_config.configuration.ip_address)
+                         device_config.configuration.factor,
+                         get_device_generation(device_config.configuration.ip_address))
 
     return ConfigurableDevice(
         device_config=device_config,
diff --git a/packages/modules/devices/shelly/shelly/inverter.py b/packages/modules/devices/shelly/shelly/inverter.py
index bff5c227fb..771513edec 100644
--- a/packages/modules/devices/shelly/shelly/inverter.py
+++ b/packages/modules/devices/shelly/shelly/inverter.py
@@ -18,12 +18,14 @@ def __init__(self,
                  device_id: int,
                  component_config: ShellyInverterSetup,
                  address: str,
+                 factor: int,
                  generation: Optional[int]) -> None:
         self.component_config = component_config
         self.sim_counter = SimCounter(device_id, self.component_config.id, prefix="pv")
         self.store = get_inverter_value_store(self.component_config.id)
         self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
         self.address = address
+        self.factor = factor
         self.generation = generation
 
     def total_power_from_shelly(self) -> int:
@@ -45,6 +47,8 @@ def total_power_from_shelly(self) -> int:
             else:
                 if 'switch:0' in status:
                     total = status['switch:0']['apower']
+                elif 'pm1:0' in status:
+                    total = status['pm1:0']['apower']  # shelly PM Mini Gen 3
                 else:
                     total = status['em:0']['total_act_power']  # shelly Pro3EM
         except KeyError:
@@ -53,7 +57,7 @@ def total_power_from_shelly(self) -> int:
             return int(total)
 
     def update(self) -> None:
-        pv = self.total_power_from_shelly() * -1
+        pv = self.total_power_from_shelly() * self.factor
         _, pv_exported = self.sim_counter.sim_count(pv)
         inverter_state = InverterState(
             power=pv,

From 461a40928ebc2510ec50258f90202b0ae4ad604d Mon Sep 17 00:00:00 2001
From: ndrsnhs <156670705+ndrsnhs@users.noreply.github.com>
Date: Wed, 25 Sep 2024 08:47:28 +0200
Subject: [PATCH 083/205] Improve M-Tec (#1850)

* add powers

* use correct modbus id in counter

* remove unused generation variable from bat update
---
 packages/modules/devices/mtec/mtec/bat.py     | 2 +-
 packages/modules/devices/mtec/mtec/counter.py | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/packages/modules/devices/mtec/mtec/bat.py b/packages/modules/devices/mtec/mtec/bat.py
index 862b7fccd2..d165d62406 100644
--- a/packages/modules/devices/mtec/mtec/bat.py
+++ b/packages/modules/devices/mtec/mtec/bat.py
@@ -20,7 +20,7 @@ def __init__(self, device_id: int, component_config: MTecBatSetup) -> None:
         self.__device_id = device_id
         self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="speicher")
 
-    def update(self, client: ModbusTcpClient_, generation: int) -> None:
+    def update(self, client: ModbusTcpClient_) -> None:
         unit = self.component_config.configuration.modbus_id
         generation = self.component_config.configuration.generation
 
diff --git a/packages/modules/devices/mtec/mtec/counter.py b/packages/modules/devices/mtec/mtec/counter.py
index fa954b5538..0992e7e842 100644
--- a/packages/modules/devices/mtec/mtec/counter.py
+++ b/packages/modules/devices/mtec/mtec/counter.py
@@ -21,12 +21,14 @@ def update(self, client: ModbusTcpClient_):
         unit = self.component_config.configuration.modbus_id
 
         power = client.read_holding_registers(11000, ModbusDataType.INT_32, unit=unit)
+        powers = client.read_holding_registers(10994, [ModbusDataType.INT_32]*3, unit=unit)
         imported, exported = self.sim_counter.sim_count(power)
 
         counter_state = CounterState(
             imported=imported,
             exported=exported,
-            power=power
+            power=power,
+            powers=powers
         )
         self.store.set(counter_state)
 

From bdbbcfc0fc66469e17a53db701e7e21f0f4df14a Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 25 Sep 2024 08:53:24 +0200
Subject: [PATCH 084/205] build UI (#1898)

---
 .../assets/{ChargeLog-bb7dcf68.js => ChargeLog-6b2cc49d.js}     | 2 +-
 ...allation-05b3f352.js => ChargePointInstallation-4fc37543.js} | 2 +-
 web/settings/assets/{Chart-b41732de.js => Chart-3cf86dec.js}    | 2 +-
 .../assets/{CloudConfig-fe40cc84.js => CloudConfig-cb19843a.js} | 2 +-
 .../{DataManagement-5a70f628.js => DataManagement-10c6dd29.js}  | 2 +-
 .../assets/{DebugConfig-8124d78c.js => DebugConfig-40886be8.js} | 2 +-
 ...ChargeConfig-d9dcaaa3.js => GeneralChargeConfig-67ad6713.js} | 2 +-
 .../{GeneralConfig-45cfd7f0.js => GeneralConfig-9529e63d.js}    | 2 +-
 ...nstallation-2c12edbc.js => HardwareInstallation-dd85fd7a.js} | 2 +-
 ...nstallAssistant-6dafed2f.js => InstallAssistant-ce6c9cb7.js} | 2 +-
 ...stantStep0-e9cce727.js => InstallAssistantStep0-431f88fd.js} | 2 +-
 ...stantStep1-efa3c6bc.js => InstallAssistantStep1-30da7200.js} | 2 +-
 ...antStep10-7c0c9f39.js => InstallAssistantStep10-b816c6c6.js} | 2 +-
 ...stantStep2-fda9278d.js => InstallAssistantStep2-c6a872c9.js} | 2 +-
 ...stantStep3-4d332029.js => InstallAssistantStep3-c18ad6b3.js} | 2 +-
 ...stantStep4-6da51e7b.js => InstallAssistantStep4-afb36773.js} | 2 +-
 ...stantStep5-fe505bd8.js => InstallAssistantStep5-87ff5089.js} | 2 +-
 ...stantStep6-0a0862fa.js => InstallAssistantStep6-db3c77b6.js} | 2 +-
 ...stantStep7-51ebd504.js => InstallAssistantStep7-4abd3c6f.js} | 2 +-
 ...stantStep8-2ead69e7.js => InstallAssistantStep8-1d34ec58.js} | 2 +-
 ...stantStep9-195c286e.js => InstallAssistantStep9-03bed1b3.js} | 2 +-
 ...ate-fc1b6a40.js => InstallAssistantStepTemplate-cb1e241d.js} | 2 +-
 ...ChargeConfig-f62c6c62.js => InstantChargeConfig-3316e506.js} | 2 +-
 .../{LegalSettings-30e95de5.js => LegalSettings-63440fac.js}    | 2 +-
 ...ementConfig-6b31901e.js => LoadManagementConfig-755ca06f.js} | 2 +-
 ...qttBridgeConfig-f457be0c.js => MqttBridgeConfig-94739887.js} | 2 +-
 ...nalComponents-d3fca35b.js => OptionalComponents-40d19b76.js} | 2 +-
 .../{PVChargeConfig-a0353b9a.js => PVChargeConfig-0d060176.js}  | 2 +-
 ...argeConfig-cb777801.js => ScheduledChargeConfig-4e583e67.js} | 2 +-
 web/settings/assets/{Status-0e0f6b66.js => Status-c3faa234.js}  | 2 +-
 .../assets/{Support-89c6cc7c.js => Support-48f5d97a.js}         | 2 +-
 web/settings/assets/{System-d59d61b7.js => System-d516542d.js}  | 2 +-
 .../{TestingStore-a904ffb0.js => TestingStore-af0aad03.js}      | 2 +-
 ...imeChargeConfig-387e7031.js => TimeChargeConfig-182836cc.js} | 2 +-
 .../{VehicleConfig-a1751954.js => VehicleConfig-ee86d81f.js}    | 2 +-
 web/settings/assets/counter-147bcc09.js                         | 1 -
 web/settings/assets/counter-b75b921d.js                         | 1 +
 web/settings/assets/device-68cdbdd8.js                          | 1 +
 web/settings/assets/device-93d7ec8d.js                          | 1 -
 ...ricity_tariff-78c8d847.js => electricity_tariff-1126e706.js} | 2 +-
 web/settings/assets/{index-0deee932.js => index-068b063d.js}    | 2 +-
 .../assets/{vehicle-d38b53d4.js => vehicle-060018aa.js}         | 2 +-
 web/settings/index.html                                         | 2 +-
 43 files changed, 41 insertions(+), 41 deletions(-)
 rename web/settings/assets/{ChargeLog-bb7dcf68.js => ChargeLog-6b2cc49d.js} (99%)
 rename web/settings/assets/{ChargePointInstallation-05b3f352.js => ChargePointInstallation-4fc37543.js} (99%)
 rename web/settings/assets/{Chart-b41732de.js => Chart-3cf86dec.js} (99%)
 rename web/settings/assets/{CloudConfig-fe40cc84.js => CloudConfig-cb19843a.js} (99%)
 rename web/settings/assets/{DataManagement-5a70f628.js => DataManagement-10c6dd29.js} (99%)
 rename web/settings/assets/{DebugConfig-8124d78c.js => DebugConfig-40886be8.js} (98%)
 rename web/settings/assets/{GeneralChargeConfig-d9dcaaa3.js => GeneralChargeConfig-67ad6713.js} (98%)
 rename web/settings/assets/{GeneralConfig-45cfd7f0.js => GeneralConfig-9529e63d.js} (99%)
 rename web/settings/assets/{HardwareInstallation-2c12edbc.js => HardwareInstallation-dd85fd7a.js} (99%)
 rename web/settings/assets/{InstallAssistant-6dafed2f.js => InstallAssistant-ce6c9cb7.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-e9cce727.js => InstallAssistantStep0-431f88fd.js} (95%)
 rename web/settings/assets/{InstallAssistantStep1-efa3c6bc.js => InstallAssistantStep1-30da7200.js} (89%)
 rename web/settings/assets/{InstallAssistantStep10-7c0c9f39.js => InstallAssistantStep10-b816c6c6.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-fda9278d.js => InstallAssistantStep2-c6a872c9.js} (89%)
 rename web/settings/assets/{InstallAssistantStep3-4d332029.js => InstallAssistantStep3-c18ad6b3.js} (92%)
 rename web/settings/assets/{InstallAssistantStep4-6da51e7b.js => InstallAssistantStep4-afb36773.js} (92%)
 rename web/settings/assets/{InstallAssistantStep5-fe505bd8.js => InstallAssistantStep5-87ff5089.js} (93%)
 rename web/settings/assets/{InstallAssistantStep6-0a0862fa.js => InstallAssistantStep6-db3c77b6.js} (94%)
 rename web/settings/assets/{InstallAssistantStep7-51ebd504.js => InstallAssistantStep7-4abd3c6f.js} (93%)
 rename web/settings/assets/{InstallAssistantStep8-2ead69e7.js => InstallAssistantStep8-1d34ec58.js} (93%)
 rename web/settings/assets/{InstallAssistantStep9-195c286e.js => InstallAssistantStep9-03bed1b3.js} (91%)
 rename web/settings/assets/{InstallAssistantStepTemplate-fc1b6a40.js => InstallAssistantStepTemplate-cb1e241d.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-f62c6c62.js => InstantChargeConfig-3316e506.js} (96%)
 rename web/settings/assets/{LegalSettings-30e95de5.js => LegalSettings-63440fac.js} (97%)
 rename web/settings/assets/{LoadManagementConfig-6b31901e.js => LoadManagementConfig-755ca06f.js} (99%)
 rename web/settings/assets/{MqttBridgeConfig-f457be0c.js => MqttBridgeConfig-94739887.js} (99%)
 rename web/settings/assets/{OptionalComponents-d3fca35b.js => OptionalComponents-40d19b76.js} (99%)
 rename web/settings/assets/{PVChargeConfig-a0353b9a.js => PVChargeConfig-0d060176.js} (99%)
 rename web/settings/assets/{ScheduledChargeConfig-cb777801.js => ScheduledChargeConfig-4e583e67.js} (97%)
 rename web/settings/assets/{Status-0e0f6b66.js => Status-c3faa234.js} (99%)
 rename web/settings/assets/{Support-89c6cc7c.js => Support-48f5d97a.js} (99%)
 rename web/settings/assets/{System-d59d61b7.js => System-d516542d.js} (99%)
 rename web/settings/assets/{TestingStore-a904ffb0.js => TestingStore-af0aad03.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-387e7031.js => TimeChargeConfig-182836cc.js} (96%)
 rename web/settings/assets/{VehicleConfig-a1751954.js => VehicleConfig-ee86d81f.js} (99%)
 delete mode 100644 web/settings/assets/counter-147bcc09.js
 create mode 100644 web/settings/assets/counter-b75b921d.js
 create mode 100644 web/settings/assets/device-68cdbdd8.js
 delete mode 100644 web/settings/assets/device-93d7ec8d.js
 rename web/settings/assets/{electricity_tariff-78c8d847.js => electricity_tariff-1126e706.js} (97%)
 rename web/settings/assets/{index-0deee932.js => index-068b063d.js} (96%)
 rename web/settings/assets/{vehicle-d38b53d4.js => vehicle-060018aa.js} (97%)

diff --git a/web/settings/assets/ChargeLog-bb7dcf68.js b/web/settings/assets/ChargeLog-6b2cc49d.js
similarity index 99%
rename from web/settings/assets/ChargeLog-bb7dcf68.js
rename to web/settings/assets/ChargeLog-6b2cc49d.js
index d6b6f9beb6..69c607bad6 100644
--- a/web/settings/assets/ChargeLog-bb7dcf68.js
+++ b/web/settings/assets/ChargeLog-6b2cc49d.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-0deee932.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-068b063d.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},y=t=>(W("data-v-8607e7e7"),t=t(),F(),t),M={class:"chargeLog"},P={name:"chargeLogForm"},z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],K=["aria-valuenow"],J=["aria-valuenow"],G=["aria-valuenow"],H=["aria-valuenow"],Q={key:1,class:"td-center"},Y={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ce={class:"hide",ref:"downloadChargeLogLink"},he=y(()=>i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),ge={class:"td-end"},_e={class:"td-end"},ue={class:"td-end"},me={class:"td-end"};function pe(t,e,o,p,l,r){const C=h("openwb-base-text-input"),f=h("font-awesome-icon"),D=h("openwb-base-button-group-input"),m=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),b=h("openwb-base-alert"),L=h("vue3-table-lite"),N=h("openwb-base-click-button");return g(),_("div",M,[i("form",P,[d(v,{title:"Filter"},{default:s(()=>[d(C,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:l.currentMonth,modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())]},null,8,["max","modelValue"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),c(" Erweiterte Optionen ")]),default:s(()=>[d(D,{title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())]},null,8,["modelValue"]),d(m,{title:"Lademodus",multiple:"",options:r.chargeModeList,modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Ladepunkt",multiple:"",options:r.chargePointList,modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Fahrzeug",multiple:"",options:r.vehicleList,modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(q,{title:"ID-Tags",modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Tags als Filter verwendet werden. ")]),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,z)]),_:1}),r.chargeLogRead?(g(),_("div",O,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(g(),_("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:u({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:u({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:u({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G),i("div",{class:"progress-bar bg-success",role:"progressbar",style:u({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,H)],8,j)):(g(),_("div",Q,"-"))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Y,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(g(),_("div",le,[i("div",de,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[c(" Als CSV exportieren "),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ce,null,512)]),he,d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",ge,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",_e,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ue,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",me,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):V("",!0)])):(g(),I(b,{key:0,subtype:"info"},{default:s(()=>[c(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const qe=B(U,[["render",pe],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{qe as default};
diff --git a/web/settings/assets/ChargePointInstallation-05b3f352.js b/web/settings/assets/ChargePointInstallation-4fc37543.js
similarity index 99%
rename from web/settings/assets/ChargePointInstallation-05b3f352.js
rename to web/settings/assets/ChargePointInstallation-4fc37543.js
index 918e73c60f..5dfe2cbb99 100644
--- a/web/settings/assets/ChargePointInstallation-05b3f352.js
+++ b/web/settings/assets/ChargePointInstallation-4fc37543.js
@@ -1 +1 @@
-import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-0deee932.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
+import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-068b063d.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
diff --git a/web/settings/assets/Chart-b41732de.js b/web/settings/assets/Chart-3cf86dec.js
similarity index 99%
rename from web/settings/assets/Chart-b41732de.js
rename to web/settings/assets/Chart-3cf86dec.js
index fef9fa6370..0bc9a5b514 100644
--- a/web/settings/assets/Chart-b41732de.js
+++ b/web/settings/assets/Chart-3cf86dec.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-0deee932.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-068b063d.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-fe40cc84.js b/web/settings/assets/CloudConfig-cb19843a.js
similarity index 99%
rename from web/settings/assets/CloudConfig-fe40cc84.js
rename to web/settings/assets/CloudConfig-cb19843a.js
index 0a1973c486..68569698e0 100644
--- a/web/settings/assets/CloudConfig-fe40cc84.js
+++ b/web/settings/assets/CloudConfig-cb19843a.js
@@ -1 +1 @@
-import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-0deee932.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
+import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-068b063d.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
diff --git a/web/settings/assets/DataManagement-5a70f628.js b/web/settings/assets/DataManagement-10c6dd29.js
similarity index 99%
rename from web/settings/assets/DataManagement-5a70f628.js
rename to web/settings/assets/DataManagement-10c6dd29.js
index 24de22a0c7..6a1d506594 100644
--- a/web/settings/assets/DataManagement-5a70f628.js
+++ b/web/settings/assets/DataManagement-10c6dd29.js
@@ -1 +1 @@
-import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-0deee932.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
+import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-068b063d.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
diff --git a/web/settings/assets/DebugConfig-8124d78c.js b/web/settings/assets/DebugConfig-40886be8.js
similarity index 98%
rename from web/settings/assets/DebugConfig-8124d78c.js
rename to web/settings/assets/DebugConfig-40886be8.js
index db8c09276c..4f3cafa8d7 100644
--- a/web/settings/assets/DebugConfig-8124d78c.js
+++ b/web/settings/assets/DebugConfig-40886be8.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-0deee932.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-068b063d.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),p=s("openwb-base-avatar"),m=s("openwb-base-card");return d(),w(m,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(p,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=f($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",mixins:[k],components:{OpenwbLogCard:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),p=s("openwb-base-alert"),m=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),_("div",z,[v("form",V,[i(m,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>[b(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')]),_:1},8,["model-value"]),i(p,{subtype:"warning"},{default:l(()=>[b(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')]),_:1})]),_:1}),i(c,{formName:"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),_(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=f(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-d9dcaaa3.js b/web/settings/assets/GeneralChargeConfig-67ad6713.js
similarity index 98%
rename from web/settings/assets/GeneralChargeConfig-d9dcaaa3.js
rename to web/settings/assets/GeneralChargeConfig-67ad6713.js
index 03741a1d5a..ad9d2b8fe0 100644
--- a/web/settings/assets/GeneralChargeConfig-d9dcaaa3.js
+++ b/web/settings/assets/GeneralChargeConfig-67ad6713.js
@@ -1 +1 @@
-import{_ as g,C as T}from"./index-0deee932.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-78c8d847.js"),["assets/electricity_tariff-78c8d847.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
+import{_ as g,C as T}from"./index-068b063d.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-1126e706.js"),["assets/electricity_tariff-1126e706.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
diff --git a/web/settings/assets/GeneralConfig-45cfd7f0.js b/web/settings/assets/GeneralConfig-9529e63d.js
similarity index 99%
rename from web/settings/assets/GeneralConfig-45cfd7f0.js
rename to web/settings/assets/GeneralConfig-9529e63d.js
index e7785cf320..d46c890b5a 100644
--- a/web/settings/assets/GeneralConfig-45cfd7f0.js
+++ b/web/settings/assets/GeneralConfig-9529e63d.js
@@ -1 +1 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-0deee932.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-068b063d.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
diff --git a/web/settings/assets/HardwareInstallation-2c12edbc.js b/web/settings/assets/HardwareInstallation-dd85fd7a.js
similarity index 99%
rename from web/settings/assets/HardwareInstallation-2c12edbc.js
rename to web/settings/assets/HardwareInstallation-dd85fd7a.js
index e69bc23025..ed129016b1 100644
--- a/web/settings/assets/HardwareInstallation-2c12edbc.js
+++ b/web/settings/assets/HardwareInstallation-dd85fd7a.js
@@ -1 +1 @@
-import{l as N,d as G,t as K,a7 as H,a0 as F,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-0deee932.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as x,u as p,k as d,l as c,A as E,N as i,z as I,y as s,D as u,x as l,a2 as S,a3 as $,B as L,J as D,K as y,q as k,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,t=void 0){this.$emit("update:configuration",{value:_,object:t})}}},oe={class:"device-fallback"},re={key:0},ie={key:1},ne={key:1},ue={key:0},de={key:1};function ve(_,t,r,m,a,n){const T=p("openwb-base-alert"),f=p("openwb-base-textarea");return d(),c("div",oe,[Object.keys(r.configuration).length==0?(d(),E(T,{key:0,subtype:"info"},{default:i(()=>[r.componentType?(d(),c("span",re,' Der Komponenten-Typ "'+I(r.componentType)+'" ',1)):(d(),c("span",ie,'Der Gerät-Typ "'+I(r.deviceType)+'"',1)),s(" bietet keine Einstellungen. ")]),_:1})):(d(),c("div",ne,[u(T,{subtype:"warning"},{default:i(()=>[s(" Es wurde keine Konfigurationsseite für den "),r.componentType?(d(),c("span",ue,' Komponenten-Typ "'+I(r.componentType)+'" ',1)):(d(),c("span",de,'Geräte-Typ "'+I(r.deviceType)+'"',1)),s(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),u(f,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":t[0]||(t[0]=R=>n.updateConfiguration(R,"configuration"))},{help:i(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),u(T,{subtype:"info"},{default:i(()=>[l("pre",null,I(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const q=x(te,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),se={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},deviceVendor:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?S({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/bat.vue":()=>e(()=>import("./bat-3e5d89d4.js"),["assets/bat-3e5d89d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/counter.vue":()=>e(()=>import("./counter-27d4acde.js"),["assets/counter-27d4acde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-66b6ca53.js"),["assets/device-66b6ca53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/inverter.vue":()=>e(()=>import("./inverter-b3e8ecb5.js"),["assets/inverter-b3e8ecb5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/bat.vue":()=>e(()=>import("./bat-6ec0726a.js"),["assets/bat-6ec0726a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/counter.vue":()=>e(()=>import("./counter-85e02a09.js"),["assets/counter-85e02a09.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ff88dc47.js"),["assets/device-ff88dc47.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-5a5ed031.js"),["assets/inverter-5a5ed031.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/bat.vue":()=>e(()=>import("./bat-edeea5ab.js"),["assets/bat-edeea5ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/counter.vue":()=>e(()=>import("./counter-d3c67a64.js"),["assets/counter-d3c67a64.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b394014f.js"),["assets/device-b394014f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-154b0b15.js"),["assets/external_inverter-154b0b15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/inverter.vue":()=>e(()=>import("./inverter-9df7c4d9.js"),["assets/inverter-9df7c4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/device.vue":()=>e(()=>import("./device-60a41819.js"),["assets/device-60a41819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/inverter.vue":()=>e(()=>import("./inverter-927da016.js"),["assets/inverter-927da016.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/bat.vue":()=>e(()=>import("./bat-a51c89dc.js"),["assets/bat-a51c89dc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/device.vue":()=>e(()=>import("./device-0852663a.js"),["assets/device-0852663a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-16ad21fd.js"),["assets/counter-16ad21fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-7e7c253d.js"),["assets/device-7e7c253d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-7f5835ff.js"),["assets/bat-7f5835ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-15bbcc8d.js"),["assets/counter-15bbcc8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/device.vue":()=>e(()=>import("./device-b6cf16cc.js"),["assets/device-b6cf16cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-022a27f9.js"),["assets/inverter-022a27f9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-49c86301.js"),["assets/counter-49c86301.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-a100762d.js"),["assets/device-a100762d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-c5fc8299.js"),["assets/inverter-c5fc8299.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/bat.vue":()=>e(()=>import("./bat-fae6736a.js"),["assets/bat-fae6736a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/counter.vue":()=>e(()=>import("./counter-2844dfce.js"),["assets/counter-2844dfce.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-dd9c6eba.js"),["assets/device-dd9c6eba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-ee34cc1c.js"),["assets/external_inverter-ee34cc1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/inverter.vue":()=>e(()=>import("./inverter-e52144a7.js"),["assets/inverter-e52144a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-9ca02844.js"),["assets/counter-9ca02844.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-538ad6e5.js"),["assets/device-538ad6e5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-01948182.js"),["assets/inverter-01948182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-7e961860.js"),["assets/bat-7e961860.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/counter.vue":()=>e(()=>import("./counter-d3b3c371.js"),["assets/counter-d3b3c371.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/device.vue":()=>e(()=>import("./device-d7ef046e.js"),["assets/device-d7ef046e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/inverter.vue":()=>e(()=>import("./inverter-ae598de4.js"),["assets/inverter-ae598de4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-7a8901e4.js"),["assets/bat-7a8901e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-4dcc66e0.js"),["assets/counter-4dcc66e0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-12c43ff6.js"),["assets/device-12c43ff6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-16319c3f.js"),["assets/inverter-16319c3f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-11a9e662.js"),["assets/bat-11a9e662.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-8459b248.js"),["assets/counter_s0-8459b248.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-157d8b84.js"),["assets/counter_sm-157d8b84.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a3a79e85.js"),["assets/device-a3a79e85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/inverter.vue":()=>e(()=>import("./inverter-9046aa5a.js"),["assets/inverter-9046aa5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-603793ab.js"),["assets/inverter_secondary-603793ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-f21d8d0a.js"),["assets/bat-f21d8d0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-a43b7c84.js"),["assets/counter-a43b7c84.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/device.vue":()=>e(()=>import("./device-e78c3c94.js"),["assets/device-e78c3c94.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-6b993a71.js"),["assets/inverter-6b993a71.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-210e6934.js"),["assets/bat-210e6934.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-bf240441.js"),["assets/counter-bf240441.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/device.vue":()=>e(()=>import("./device-4e84dc20.js"),["assets/device-4e84dc20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-b4a67c1c.js"),["assets/inverter-b4a67c1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-a89d2c6d.js"),["assets/bat-a89d2c6d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-7de8fa46.js"),["assets/counter-7de8fa46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f6cff0ea.js"),["assets/device-f6cff0ea.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-0feca953.js"),["assets/inverter-0feca953.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-c0599fe6.js"),["assets/counter-c0599fe6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/device.vue":()=>e(()=>import("./device-df771d66.js"),["assets/device-df771d66.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/bat.vue":()=>e(()=>import("./bat-c2e3bd93.js"),["assets/bat-c2e3bd93.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/counter.vue":()=>e(()=>import("./counter-720f0b7c.js"),["assets/counter-720f0b7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-1194af1e.js"),["assets/device-1194af1e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/inverter.vue":()=>e(()=>import("./inverter-e0439727.js"),["assets/inverter-e0439727.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/bat.vue":()=>e(()=>import("./bat-ba0e681b.js"),["assets/bat-ba0e681b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/counter.vue":()=>e(()=>import("./counter-17ea177d.js"),["assets/counter-17ea177d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-cc90e6fa.js"),["assets/device-cc90e6fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/inverter.vue":()=>e(()=>import("./inverter-3a35e713.js"),["assets/inverter-3a35e713.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-7cf44039.js"),["assets/bat-7cf44039.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-0f65c1e3.js"),["assets/counter-0f65c1e3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-1f5e9c10.js"),["assets/device-1f5e9c10.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-53c9dd57.js"),["assets/inverter-53c9dd57.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-7e9e02b6.js"),["assets/counter-7e9e02b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-fa86e6ca.js"),["assets/device-fa86e6ca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-3b17cd0a.js"),["assets/counter-3b17cd0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-9b78528f.js"),["assets/device-9b78528f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-1f1b0291.js"),["assets/inverter-1f1b0291.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-14134a0e.js"),["assets/device-14134a0e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-d785d016.js"),["assets/inverter-d785d016.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/bat.vue":()=>e(()=>import("./bat-c1bb93e7.js"),["assets/bat-c1bb93e7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-ca9e3fe2.js"),["assets/counter-ca9e3fe2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-560cda8e.js"),["assets/device-560cda8e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-f6495d7c.js"),["assets/inverter-f6495d7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-d7164453.js"),["assets/counter-d7164453.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-6bc2e333.js"),["assets/device-6bc2e333.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-66551827.js"),["assets/device-66551827.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-ed15250f.js"),["assets/inverter-ed15250f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/bat.vue":()=>e(()=>import("./bat-ea7043ef.js"),["assets/bat-ea7043ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/counter.vue":()=>e(()=>import("./counter-5cdd5400.js"),["assets/counter-5cdd5400.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/device.vue":()=>e(()=>import("./device-a5b9720c.js"),["assets/device-a5b9720c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/inverter.vue":()=>e(()=>import("./inverter-7f269997.js"),["assets/inverter-7f269997.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-f0d9c44f.js"),["assets/bat-f0d9c44f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-776a14ff.js"),["assets/counter-776a14ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-53c3c990.js"),["assets/device-53c3c990.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-e8d637fe.js"),["assets/inverter-e8d637fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-2004960c.js"),["assets/device-2004960c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/inverter.vue":()=>e(()=>import("./inverter-317c9702.js"),["assets/inverter-317c9702.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-22e19627.js"),["assets/bat-22e19627.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/device.vue":()=>e(()=>import("./device-f96e49ba.js"),["assets/device-f96e49ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-37aa8980.js"),["assets/bat-37aa8980.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-b01202f0.js"),["assets/counter-b01202f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/device.vue":()=>e(()=>import("./device-1dbf9864.js"),["assets/device-1dbf9864.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-0671dbec.js"),["assets/inverter-0671dbec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-4ce133fc.js"),["assets/bat-4ce133fc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-e19fcdd5.js"),["assets/consumption_counter-e19fcdd5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-132a4c95.js"),["assets/counter-132a4c95.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-2a05ce83.js"),["assets/device-2a05ce83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-148b1cf9.js"),["assets/inverter-148b1cf9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/device.vue":()=>e(()=>import("./device-accf2fa8.js"),["assets/device-accf2fa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-f62aa161.js"),["assets/inverter-f62aa161.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-6703f6f0.js"),["assets/counter-6703f6f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-25323637.js"),["assets/device-25323637.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/inverter.vue":()=>e(()=>import("./inverter-a6b17edd.js"),["assets/inverter-a6b17edd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-419f31a5.js"),["assets/counter-419f31a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f8acb969.js"),["assets/device-f8acb969.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-d62075d8.js"),["assets/inverter-d62075d8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/bat.vue":()=>e(()=>import("./bat-361f190b.js"),["assets/bat-361f190b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/counter.vue":()=>e(()=>import("./counter-2131ddbc.js"),["assets/counter-2131ddbc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-ab2aea83.js"),["assets/device-ab2aea83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/inverter.vue":()=>e(()=>import("./inverter-9c9c65d2.js"),["assets/inverter-9c9c65d2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/bat.vue":()=>e(()=>import("./bat-32c9f6fd.js"),["assets/bat-32c9f6fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/counter.vue":()=>e(()=>import("./counter-899de3b1.js"),["assets/counter-899de3b1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/device.vue":()=>e(()=>import("./device-67447569.js"),["assets/device-67447569.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/inverter.vue":()=>e(()=>import("./inverter-008f792b.js"),["assets/inverter-008f792b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/bat.vue":()=>e(()=>import("./bat-ab2534e0.js"),["assets/bat-ab2534e0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-a326b87b.js"),["assets/device-a326b87b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/bat.vue":()=>e(()=>import("./bat-0535c59d.js"),["assets/bat-0535c59d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-147bcc09.js"),["assets/counter-147bcc09.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-93d7ec8d.js"),["assets/device-93d7ec8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/inverter.vue":()=>e(()=>import("./inverter-e39deae7.js"),["assets/inverter-e39deae7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/bat.vue":()=>e(()=>import("./bat-960570d8.js"),["assets/bat-960570d8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/counter.vue":()=>e(()=>import("./counter-761ec99f.js"),["assets/counter-761ec99f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-34858026.js"),["assets/device-34858026.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/inverter.vue":()=>e(()=>import("./inverter-8bd91bf1.js"),["assets/inverter-8bd91bf1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/counter.vue":()=>e(()=>import("./counter-8102691a.js"),["assets/counter-8102691a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-06345e49.js"),["assets/device-06345e49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-5f5ccb07.js"),["assets/bat-5f5ccb07.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-30a3ca76.js"),["assets/counter-30a3ca76.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-f298ed3b.js"),["assets/device-f298ed3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-bff31af2.js"),["assets/inverter-bff31af2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-8aa3e08a.js"),["assets/counter-8aa3e08a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/device.vue":()=>e(()=>import("./device-96e65ee3.js"),["assets/device-96e65ee3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-53505c28.js"),["assets/inverter-53505c28.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e2b4a6f2.js"),["assets/bat-e2b4a6f2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-8a31af27.js"),["assets/bat_smart_energy-8a31af27.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-4f739eff.js"),["assets/counter-4f739eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-a3aaa72b.js"),["assets/device-a3aaa72b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-69ae908d.js"),["assets/inverter-69ae908d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-2ec8a7b2.js"),["assets/bat-2ec8a7b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-7328c01a.js"),["assets/device-7328c01a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-9ff76175.js"),["assets/device-9ff76175.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/inverter.vue":()=>e(()=>import("./inverter-81caf0c3.js"),["assets/inverter-81caf0c3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-0bf7d9a6.js"),["assets/counter-0bf7d9a6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-a875f223.js"),["assets/device-a875f223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-80468543.js"),["assets/inverter-80468543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/counter.vue":()=>e(()=>import("./counter-963b86e8.js"),["assets/counter-963b86e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-c2c254cf.js"),["assets/device-c2c254cf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/bat.vue":()=>e(()=>import("./bat-5a80b300.js"),["assets/bat-5a80b300.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/counter.vue":()=>e(()=>import("./counter-ae228566.js"),["assets/counter-ae228566.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f252d8d.js"),["assets/device-4f252d8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/inverter.vue":()=>e(()=>import("./inverter-b9d7f198.js"),["assets/inverter-b9d7f198.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-32ed9eb1.js"),["assets/counter-32ed9eb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-59ac52ab.js"),["assets/device-59ac52ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/inverter.vue":()=>e(()=>import("./inverter-0773e282.js"),["assets/inverter-0773e282.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/counter.vue":()=>e(()=>import("./counter-9db4f10d.js"),["assets/counter-9db4f10d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c94e89d5.js"),["assets/device-c94e89d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-a1fe6824.js"),["assets/inverter-a1fe6824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/bat.vue":()=>e(()=>import("./bat-5bb162c2.js"),["assets/bat-5bb162c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/counter.vue":()=>e(()=>import("./counter-39a750b6.js"),["assets/counter-39a750b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-bee08fb1.js"),["assets/device-bee08fb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/inverter.vue":()=>e(()=>import("./inverter-79c8fb55.js"),["assets/inverter-79c8fb55.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/counter.vue":()=>e(()=>import("./counter-031b0305.js"),["assets/counter-031b0305.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-56cb9ab9.js"),["assets/device-56cb9ab9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/inverter.vue":()=>e(()=>import("./inverter-564ac740.js"),["assets/inverter-564ac740.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-ca879aa3.js"),["assets/bat-ca879aa3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-6a7f6553.js"),["assets/counter-6a7f6553.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-9f0dbb75.js"),["assets/device-9f0dbb75.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-355c5719.js"),["assets/external_inverter-355c5719.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-929c3f78.js"),["assets/inverter-929c3f78.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-93b96b73.js"),["assets/bat-93b96b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-02184b73.js"),["assets/device-02184b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-160edb4d.js"),["assets/inverter-160edb4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/bat.vue":()=>e(()=>import("./bat-70713ff4.js"),["assets/bat-70713ff4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/counter.vue":()=>e(()=>import("./counter-92dbeb44.js"),["assets/counter-92dbeb44.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/device.vue":()=>e(()=>import("./device-bcd1ab1c.js"),["assets/device-bcd1ab1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/inverter.vue":()=>e(()=>import("./inverter-cf027bb4.js"),["assets/inverter-cf027bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-86050b21.js"),["assets/bat-86050b21.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-4cf113fa.js"),["assets/counter-4cf113fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/device.vue":()=>e(()=>import("./device-191a8f0d.js"),["assets/device-191a8f0d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-e2fcc96e.js"),["assets/inverter-e2fcc96e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/bat.vue":()=>e(()=>import("./bat-669886fa.js"),["assets/bat-669886fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-49277c48.js"),["assets/counter-49277c48.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-3d9e43fe.js"),["assets/device-3d9e43fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-fcb34a03.js"),["assets/inverter-fcb34a03.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-c023ee7d.js"),["assets/bat-c023ee7d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/device.vue":()=>e(()=>import("./device-e4af98fb.js"),["assets/device-e4af98fb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-390b002d.js"),["assets/inverter-390b002d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/bat.vue":()=>e(()=>import("./bat-46611da3.js"),["assets/bat-46611da3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-fa66cb6a.js"),["assets/counter-fa66cb6a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-29ba5b2b.js"),["assets/device-29ba5b2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/inverter.vue":()=>e(()=>import("./inverter-3a81dff8.js"),["assets/inverter-3a81dff8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-71b3befd.js"),["assets/device-71b3befd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/inverter.vue":()=>e(()=>import("./inverter-85d76c41.js"),["assets/inverter-85d76c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/counter.vue":()=>e(()=>import("./counter-d86757f2.js"),["assets/counter-d86757f2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-b0485aae.js"),["assets/device-b0485aae.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/bat.vue":()=>e(()=>import("./bat-84a37ddf.js"),["assets/bat-84a37ddf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-9c0b6f8f.js"),["assets/counter-9c0b6f8f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5926f93d.js"),["assets/device-5926f93d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/inverter.vue":()=>e(()=>import("./inverter-3a00ed3d.js"),["assets/inverter-3a00ed3d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/bat_api.vue":()=>e(()=>import("./bat_api-04666400.js"),["assets/bat_api-04666400.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-ffbf71f1.js"),["assets/bat_modbus-ffbf71f1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/counter.vue":()=>e(()=>import("./counter-214fbb40.js"),["assets/counter-214fbb40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/device.vue":()=>e(()=>import("./device-74cc8223.js"),["assets/device-74cc8223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/inverter.vue":()=>e(()=>import("./inverter-f329a5ad.js"),["assets/inverter-f329a5ad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-a2809c14.js"),["assets/bat-a2809c14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-dc109611.js"),["assets/counter-dc109611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/device.vue":()=>e(()=>import("./device-35945559.js"),["assets/device-35945559.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-671f6a73.js"),["assets/inverter-671f6a73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-90d6c411.js"),["assets/counter-90d6c411.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-85271457.js"),["assets/device-85271457.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-804d1c85.js"),["assets/inverter-804d1c85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/device.vue":()=>e(()=>import("./device-7d20d912.js"),["assets/device-7d20d912.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-bea955ac.js"),["assets/inverter-bea955ac.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceVendor}/${this.deviceType}/${this.componentType}.vue`),errorComponent:q}):S({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-66b6ca53.js"),["assets/device-66b6ca53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ff88dc47.js"),["assets/device-ff88dc47.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b394014f.js"),["assets/device-b394014f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/device.vue":()=>e(()=>import("./device-60a41819.js"),["assets/device-60a41819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/device.vue":()=>e(()=>import("./device-0852663a.js"),["assets/device-0852663a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-7e7c253d.js"),["assets/device-7e7c253d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/device.vue":()=>e(()=>import("./device-b6cf16cc.js"),["assets/device-b6cf16cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-a100762d.js"),["assets/device-a100762d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-dd9c6eba.js"),["assets/device-dd9c6eba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-538ad6e5.js"),["assets/device-538ad6e5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/device.vue":()=>e(()=>import("./device-d7ef046e.js"),["assets/device-d7ef046e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-12c43ff6.js"),["assets/device-12c43ff6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a3a79e85.js"),["assets/device-a3a79e85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/device.vue":()=>e(()=>import("./device-e78c3c94.js"),["assets/device-e78c3c94.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/device.vue":()=>e(()=>import("./device-4e84dc20.js"),["assets/device-4e84dc20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f6cff0ea.js"),["assets/device-f6cff0ea.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/device.vue":()=>e(()=>import("./device-df771d66.js"),["assets/device-df771d66.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-1194af1e.js"),["assets/device-1194af1e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-cc90e6fa.js"),["assets/device-cc90e6fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-1f5e9c10.js"),["assets/device-1f5e9c10.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-fa86e6ca.js"),["assets/device-fa86e6ca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-9b78528f.js"),["assets/device-9b78528f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-14134a0e.js"),["assets/device-14134a0e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-560cda8e.js"),["assets/device-560cda8e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-6bc2e333.js"),["assets/device-6bc2e333.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-66551827.js"),["assets/device-66551827.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/device.vue":()=>e(()=>import("./device-a5b9720c.js"),["assets/device-a5b9720c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-53c3c990.js"),["assets/device-53c3c990.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-2004960c.js"),["assets/device-2004960c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/device.vue":()=>e(()=>import("./device-f96e49ba.js"),["assets/device-f96e49ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/device.vue":()=>e(()=>import("./device-1dbf9864.js"),["assets/device-1dbf9864.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-2a05ce83.js"),["assets/device-2a05ce83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/device.vue":()=>e(()=>import("./device-accf2fa8.js"),["assets/device-accf2fa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-25323637.js"),["assets/device-25323637.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f8acb969.js"),["assets/device-f8acb969.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-ab2aea83.js"),["assets/device-ab2aea83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/device.vue":()=>e(()=>import("./device-67447569.js"),["assets/device-67447569.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-a326b87b.js"),["assets/device-a326b87b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-93d7ec8d.js"),["assets/device-93d7ec8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-34858026.js"),["assets/device-34858026.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-06345e49.js"),["assets/device-06345e49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-f298ed3b.js"),["assets/device-f298ed3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/device.vue":()=>e(()=>import("./device-96e65ee3.js"),["assets/device-96e65ee3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-a3aaa72b.js"),["assets/device-a3aaa72b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-7328c01a.js"),["assets/device-7328c01a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-9ff76175.js"),["assets/device-9ff76175.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-a875f223.js"),["assets/device-a875f223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-c2c254cf.js"),["assets/device-c2c254cf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f252d8d.js"),["assets/device-4f252d8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-59ac52ab.js"),["assets/device-59ac52ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c94e89d5.js"),["assets/device-c94e89d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-bee08fb1.js"),["assets/device-bee08fb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-56cb9ab9.js"),["assets/device-56cb9ab9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-9f0dbb75.js"),["assets/device-9f0dbb75.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-02184b73.js"),["assets/device-02184b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/device.vue":()=>e(()=>import("./device-bcd1ab1c.js"),["assets/device-bcd1ab1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/device.vue":()=>e(()=>import("./device-191a8f0d.js"),["assets/device-191a8f0d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-3d9e43fe.js"),["assets/device-3d9e43fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/device.vue":()=>e(()=>import("./device-e4af98fb.js"),["assets/device-e4af98fb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-29ba5b2b.js"),["assets/device-29ba5b2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-71b3befd.js"),["assets/device-71b3befd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-b0485aae.js"),["assets/device-b0485aae.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5926f93d.js"),["assets/device-5926f93d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/device.vue":()=>e(()=>import("./device-74cc8223.js"),["assets/device-74cc8223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/device.vue":()=>e(()=>import("./device-35945559.js"),["assets/device-35945559.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-85271457.js"),["assets/device-85271457.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/device.vue":()=>e(()=>import("./device-7d20d912.js"),["assets/device-7d20d912.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceVendor}/${this.deviceType}/device.vue`),errorComponent:q})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function ae(_,t,r,m,a,n){return d(),E($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":t[0]||(t[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=x(se,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(G,K,H,F,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([_,t])=>({label:t.group_name,options:Object.entries(t.vendors).map(([r,m])=>({value:[_,r],text:m.vendor_name})).sort((r,m)=>r.text.localeCompare(m.text))})).sort((_,t)=>-_.label.localeCompare(t.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[_,t]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][_].vendors[t].devices).map(([r,m])=>({value:[t,r],text:m.device_name})).sort((r,m)=>r.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(_,t,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=t,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(_,t,r,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:r,deviceVendor:t,type:m}})},removeComponentModal(_,t,r,m,a){a.stopPropagation(),this.modalComponent={deviceId:_,id:t,type:r},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_,t){if(_===void 0||t===void 0)return[];console.debug("finding components for",_,t);let r=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[_]!==void 0?(m.vendors[_].devices[t]!==void 0&&(r=Object.entries(m.vendors[_].devices[t].components).map(([n,T])=>({value:n,text:T.component_name}))),!1):!0),r},updateConfiguration(_,t){console.debug("updateConfiguration",_,t),this.updateState(_,t.value,t.object)}}},O=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),ce={class:"hardwareInstallation"},le={name:"hardwareInstallationForm"},Ee={key:0},Te={key:1},Ve={key:1},ge=O(()=>l("hr",null,null,-1)),Ie=O(()=>l("hr",null,null,-1)),Ae=O(()=>l("hr",null,null,-1)),Oe=O(()=>l("hr",null,null,-1)),Re={class:"col-1"},Pe={key:0},Le={class:"col-1"},De=O(()=>l("p",null,[s(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),s(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=O(()=>l("p",null,[s(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),s(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=O(()=>l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function we(_,t,r,m,a,n){const T=p("openwb-base-modal-dialog"),f=p("router-link"),R=p("openwb-base-alert"),A=p("font-awesome-icon"),b=p("openwb-base-avatar"),P=p("openwb-base-text-input"),z=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),C=p("openwb-base-click-button"),h=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return d(),c(D,null,[u(T,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:i(()=>[s(' Wollen Sie das Gerät "'+I(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),u(T,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:i(()=>[s(' Wollen Sie die Komponente "'+I(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",ce,[l("form",le,[r.installAssistantActive?L("",!0):(d(),E(R,{key:0,subtype:"info"},{default:i(()=>[s(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),u(f,{to:"/LoadManagementConfiguration"},{default:i(()=>[s(" Lastmanagement ")]),_:1}),s(" zu prüfen! ")]),_:1})),u(w,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(d(),c("div",Ee,[u(R,{subtype:"info"},{default:i(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),c("div",Te,[(d(!0),c(D,null,y(n.installedDevices,(o,B)=>(d(),E(w,{key:o.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[u(A,{"fixed-width":"",icon:["fas","network-wired"]}),s(" "+I(o.name),1)]),actions:i(v=>[v.collapsed?(d(),c("div",Ve,[(d(!0),c(D,null,y(n.getMyInstalledComponents(o.id),V=>(d(),E(b,{key:V.id,class:k("ml-1 bg-"+n.getComponentTypeClass(V.type))},{default:i(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(V.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(d(),E(b,{key:0,class:"bg-danger clickable",onClick:V=>n.removeDeviceModal(o.id,o.name,V)},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[u(P,{title:"Bezeichnung",subtype:"text","model-value":o.name,"onUpdate:modelValue":v=>_.updateState(B,v,"name")},null,8,["model-value","onUpdate:modelValue"]),ge,u(z,{deviceId:o.id,deviceType:o.type,deviceVendor:o.vendor,configuration:o.configuration,"onUpdate:configuration":v=>n.updateConfiguration(B,v)},null,8,["deviceId","deviceType","deviceVendor","configuration","onUpdate:configuration"]),Ie,u(W,null,{default:i(()=>[s("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(o.id)?L("",!0):(d(),E(R,{key:0,subtype:"warning"},{default:i(()=>[s(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(d(!0),c(D,null,y(n.getMyInstalledComponents(o.id),(v,V)=>(d(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(v.type)},{header:i(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(v.type)},null,8,["icon"]),s(" "+I(v.name),1)]),actions:i(g=>[g.collapsed?L("",!0):(d(),E(b,{key:0,class:"bg-danger clickable",onClick:U=>n.removeComponentModal(o.id,v.id,v.type,v.name,U)},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[u(P,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":g=>_.updateState(V,g,"name")},null,8,["model-value","onUpdate:modelValue"]),u(P,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":g=>_.updateState(V,g,"info.manufacturer")},{help:i(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),u(P,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":g=>_.updateState(V,g,"info.model")},{help:i(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ae,u(z,{deviceId:o.id,deviceType:o.type,deviceVendor:o.vendor,componentId:v.id,componentType:v.type,configuration:v.configuration,"onUpdate:configuration":g=>n.updateConfiguration(V,g)},null,8,["deviceId","deviceType","deviceVendor","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Oe,n.getComponentList(o.vendor,o.type).length?(d(),E(h,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(o.vendor,o.type),"model-value":a.componentToAdd[o.id],"onUpdate:modelValue":v=>a.componentToAdd[o.id]=v},{append:i(()=>[l("span",Re,[u(C,{class:k(a.componentToAdd[o.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[o.id]===void 0,onButtonClicked:v=>n.addComponent(o.id,o.vendor,o.type,a.componentToAdd[o.id])},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[s(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(d(),E(R,{key:2,subtype:"info"},{default:i(()=>[s(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(d(),c("hr",Pe)):L("",!0),u(h,{title:"Hersteller",notSelected:"Bitte auswählen",groups:n.vendorList,modelValue:a.selectedVendor,"onUpdate:modelValue":t[0]||(t[0]=o=>a.selectedVendor=o)},null,8,["groups","modelValue"]),u(h,{title:"Verfügbare Geräte",notSelected:"Bitte auswählen",disabled:a.selectedVendor===void 0,options:n.deviceList,modelValue:a.deviceToAdd,"onUpdate:modelValue":t[1]||(t[1]=o=>a.deviceToAdd=o)},{append:i(()=>[l("span",Le,[u(C,{class:k(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[De,fe,be]),_:1},8,["disabled","options","modelValue"])]))]),_:1}),u(j,{formName:"hardwareInstallationForm",onSave:t[2]||(t[2]=o=>_.$emit("save")),onReset:t[3]||(t[3]=o=>_.$emit("reset")),onDefaults:t[4]||(t[4]=o=>_.$emit("defaults"))})])])],64)}const Se=x(pe,[["render",we],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{Se as default};
+import{l as N,d as G,t as K,a7 as H,a0 as F,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-068b063d.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as x,u as p,k as d,l as c,A as E,N as i,z as I,y as s,D as u,x as l,a2 as S,a3 as $,B as L,J as D,K as y,q as k,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,t=void 0){this.$emit("update:configuration",{value:_,object:t})}}},oe={class:"device-fallback"},re={key:0},ie={key:1},ne={key:1},ue={key:0},de={key:1};function ve(_,t,r,m,a,n){const T=p("openwb-base-alert"),f=p("openwb-base-textarea");return d(),c("div",oe,[Object.keys(r.configuration).length==0?(d(),E(T,{key:0,subtype:"info"},{default:i(()=>[r.componentType?(d(),c("span",re,' Der Komponenten-Typ "'+I(r.componentType)+'" ',1)):(d(),c("span",ie,'Der Gerät-Typ "'+I(r.deviceType)+'"',1)),s(" bietet keine Einstellungen. ")]),_:1})):(d(),c("div",ne,[u(T,{subtype:"warning"},{default:i(()=>[s(" Es wurde keine Konfigurationsseite für den "),r.componentType?(d(),c("span",ue,' Komponenten-Typ "'+I(r.componentType)+'" ',1)):(d(),c("span",de,'Geräte-Typ "'+I(r.deviceType)+'"',1)),s(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),u(f,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":t[0]||(t[0]=R=>n.updateConfiguration(R,"configuration"))},{help:i(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),u(T,{subtype:"info"},{default:i(()=>[l("pre",null,I(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const q=x(te,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),se={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},deviceVendor:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?S({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/bat.vue":()=>e(()=>import("./bat-3e5d89d4.js"),["assets/bat-3e5d89d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/counter.vue":()=>e(()=>import("./counter-27d4acde.js"),["assets/counter-27d4acde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-66b6ca53.js"),["assets/device-66b6ca53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/inverter.vue":()=>e(()=>import("./inverter-b3e8ecb5.js"),["assets/inverter-b3e8ecb5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/bat.vue":()=>e(()=>import("./bat-6ec0726a.js"),["assets/bat-6ec0726a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/counter.vue":()=>e(()=>import("./counter-85e02a09.js"),["assets/counter-85e02a09.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ff88dc47.js"),["assets/device-ff88dc47.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-5a5ed031.js"),["assets/inverter-5a5ed031.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/bat.vue":()=>e(()=>import("./bat-edeea5ab.js"),["assets/bat-edeea5ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/counter.vue":()=>e(()=>import("./counter-d3c67a64.js"),["assets/counter-d3c67a64.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b394014f.js"),["assets/device-b394014f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-154b0b15.js"),["assets/external_inverter-154b0b15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/inverter.vue":()=>e(()=>import("./inverter-9df7c4d9.js"),["assets/inverter-9df7c4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/device.vue":()=>e(()=>import("./device-60a41819.js"),["assets/device-60a41819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/inverter.vue":()=>e(()=>import("./inverter-927da016.js"),["assets/inverter-927da016.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/bat.vue":()=>e(()=>import("./bat-a51c89dc.js"),["assets/bat-a51c89dc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/device.vue":()=>e(()=>import("./device-0852663a.js"),["assets/device-0852663a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-16ad21fd.js"),["assets/counter-16ad21fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-7e7c253d.js"),["assets/device-7e7c253d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-7f5835ff.js"),["assets/bat-7f5835ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-15bbcc8d.js"),["assets/counter-15bbcc8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/device.vue":()=>e(()=>import("./device-b6cf16cc.js"),["assets/device-b6cf16cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-022a27f9.js"),["assets/inverter-022a27f9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-49c86301.js"),["assets/counter-49c86301.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-a100762d.js"),["assets/device-a100762d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-c5fc8299.js"),["assets/inverter-c5fc8299.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/bat.vue":()=>e(()=>import("./bat-fae6736a.js"),["assets/bat-fae6736a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/counter.vue":()=>e(()=>import("./counter-2844dfce.js"),["assets/counter-2844dfce.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-dd9c6eba.js"),["assets/device-dd9c6eba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-ee34cc1c.js"),["assets/external_inverter-ee34cc1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/inverter.vue":()=>e(()=>import("./inverter-e52144a7.js"),["assets/inverter-e52144a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-9ca02844.js"),["assets/counter-9ca02844.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-538ad6e5.js"),["assets/device-538ad6e5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-01948182.js"),["assets/inverter-01948182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-7e961860.js"),["assets/bat-7e961860.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/counter.vue":()=>e(()=>import("./counter-d3b3c371.js"),["assets/counter-d3b3c371.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/device.vue":()=>e(()=>import("./device-d7ef046e.js"),["assets/device-d7ef046e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/inverter.vue":()=>e(()=>import("./inverter-ae598de4.js"),["assets/inverter-ae598de4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-7a8901e4.js"),["assets/bat-7a8901e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-4dcc66e0.js"),["assets/counter-4dcc66e0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-12c43ff6.js"),["assets/device-12c43ff6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-16319c3f.js"),["assets/inverter-16319c3f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-11a9e662.js"),["assets/bat-11a9e662.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-8459b248.js"),["assets/counter_s0-8459b248.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-157d8b84.js"),["assets/counter_sm-157d8b84.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a3a79e85.js"),["assets/device-a3a79e85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/inverter.vue":()=>e(()=>import("./inverter-9046aa5a.js"),["assets/inverter-9046aa5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-603793ab.js"),["assets/inverter_secondary-603793ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-f21d8d0a.js"),["assets/bat-f21d8d0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-a43b7c84.js"),["assets/counter-a43b7c84.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/device.vue":()=>e(()=>import("./device-e78c3c94.js"),["assets/device-e78c3c94.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-6b993a71.js"),["assets/inverter-6b993a71.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-210e6934.js"),["assets/bat-210e6934.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-bf240441.js"),["assets/counter-bf240441.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/device.vue":()=>e(()=>import("./device-4e84dc20.js"),["assets/device-4e84dc20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-b4a67c1c.js"),["assets/inverter-b4a67c1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-a89d2c6d.js"),["assets/bat-a89d2c6d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-7de8fa46.js"),["assets/counter-7de8fa46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f6cff0ea.js"),["assets/device-f6cff0ea.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-0feca953.js"),["assets/inverter-0feca953.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-c0599fe6.js"),["assets/counter-c0599fe6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/device.vue":()=>e(()=>import("./device-df771d66.js"),["assets/device-df771d66.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/bat.vue":()=>e(()=>import("./bat-c2e3bd93.js"),["assets/bat-c2e3bd93.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/counter.vue":()=>e(()=>import("./counter-720f0b7c.js"),["assets/counter-720f0b7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-1194af1e.js"),["assets/device-1194af1e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/inverter.vue":()=>e(()=>import("./inverter-e0439727.js"),["assets/inverter-e0439727.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/bat.vue":()=>e(()=>import("./bat-ba0e681b.js"),["assets/bat-ba0e681b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/counter.vue":()=>e(()=>import("./counter-17ea177d.js"),["assets/counter-17ea177d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-cc90e6fa.js"),["assets/device-cc90e6fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/inverter.vue":()=>e(()=>import("./inverter-3a35e713.js"),["assets/inverter-3a35e713.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-7cf44039.js"),["assets/bat-7cf44039.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-0f65c1e3.js"),["assets/counter-0f65c1e3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-1f5e9c10.js"),["assets/device-1f5e9c10.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-53c9dd57.js"),["assets/inverter-53c9dd57.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-7e9e02b6.js"),["assets/counter-7e9e02b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-fa86e6ca.js"),["assets/device-fa86e6ca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-3b17cd0a.js"),["assets/counter-3b17cd0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-9b78528f.js"),["assets/device-9b78528f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-1f1b0291.js"),["assets/inverter-1f1b0291.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-14134a0e.js"),["assets/device-14134a0e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-d785d016.js"),["assets/inverter-d785d016.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/bat.vue":()=>e(()=>import("./bat-c1bb93e7.js"),["assets/bat-c1bb93e7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-ca9e3fe2.js"),["assets/counter-ca9e3fe2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-560cda8e.js"),["assets/device-560cda8e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-f6495d7c.js"),["assets/inverter-f6495d7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-d7164453.js"),["assets/counter-d7164453.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-6bc2e333.js"),["assets/device-6bc2e333.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-66551827.js"),["assets/device-66551827.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-ed15250f.js"),["assets/inverter-ed15250f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/bat.vue":()=>e(()=>import("./bat-ea7043ef.js"),["assets/bat-ea7043ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/counter.vue":()=>e(()=>import("./counter-5cdd5400.js"),["assets/counter-5cdd5400.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/device.vue":()=>e(()=>import("./device-a5b9720c.js"),["assets/device-a5b9720c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/inverter.vue":()=>e(()=>import("./inverter-7f269997.js"),["assets/inverter-7f269997.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-f0d9c44f.js"),["assets/bat-f0d9c44f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-776a14ff.js"),["assets/counter-776a14ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-53c3c990.js"),["assets/device-53c3c990.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-e8d637fe.js"),["assets/inverter-e8d637fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-2004960c.js"),["assets/device-2004960c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/inverter.vue":()=>e(()=>import("./inverter-317c9702.js"),["assets/inverter-317c9702.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-22e19627.js"),["assets/bat-22e19627.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/device.vue":()=>e(()=>import("./device-f96e49ba.js"),["assets/device-f96e49ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-37aa8980.js"),["assets/bat-37aa8980.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-b01202f0.js"),["assets/counter-b01202f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/device.vue":()=>e(()=>import("./device-1dbf9864.js"),["assets/device-1dbf9864.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-0671dbec.js"),["assets/inverter-0671dbec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-4ce133fc.js"),["assets/bat-4ce133fc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-e19fcdd5.js"),["assets/consumption_counter-e19fcdd5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-132a4c95.js"),["assets/counter-132a4c95.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-2a05ce83.js"),["assets/device-2a05ce83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-148b1cf9.js"),["assets/inverter-148b1cf9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/device.vue":()=>e(()=>import("./device-accf2fa8.js"),["assets/device-accf2fa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-f62aa161.js"),["assets/inverter-f62aa161.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-6703f6f0.js"),["assets/counter-6703f6f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-25323637.js"),["assets/device-25323637.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/inverter.vue":()=>e(()=>import("./inverter-a6b17edd.js"),["assets/inverter-a6b17edd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-419f31a5.js"),["assets/counter-419f31a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f8acb969.js"),["assets/device-f8acb969.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-d62075d8.js"),["assets/inverter-d62075d8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/bat.vue":()=>e(()=>import("./bat-361f190b.js"),["assets/bat-361f190b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/counter.vue":()=>e(()=>import("./counter-2131ddbc.js"),["assets/counter-2131ddbc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-ab2aea83.js"),["assets/device-ab2aea83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/inverter.vue":()=>e(()=>import("./inverter-9c9c65d2.js"),["assets/inverter-9c9c65d2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/bat.vue":()=>e(()=>import("./bat-32c9f6fd.js"),["assets/bat-32c9f6fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/counter.vue":()=>e(()=>import("./counter-899de3b1.js"),["assets/counter-899de3b1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/device.vue":()=>e(()=>import("./device-67447569.js"),["assets/device-67447569.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/inverter.vue":()=>e(()=>import("./inverter-008f792b.js"),["assets/inverter-008f792b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/bat.vue":()=>e(()=>import("./bat-ab2534e0.js"),["assets/bat-ab2534e0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-a326b87b.js"),["assets/device-a326b87b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/bat.vue":()=>e(()=>import("./bat-0535c59d.js"),["assets/bat-0535c59d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-b75b921d.js"),["assets/counter-b75b921d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-68cdbdd8.js"),["assets/device-68cdbdd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/inverter.vue":()=>e(()=>import("./inverter-e39deae7.js"),["assets/inverter-e39deae7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/bat.vue":()=>e(()=>import("./bat-960570d8.js"),["assets/bat-960570d8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/counter.vue":()=>e(()=>import("./counter-761ec99f.js"),["assets/counter-761ec99f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-34858026.js"),["assets/device-34858026.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/inverter.vue":()=>e(()=>import("./inverter-8bd91bf1.js"),["assets/inverter-8bd91bf1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/counter.vue":()=>e(()=>import("./counter-8102691a.js"),["assets/counter-8102691a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-06345e49.js"),["assets/device-06345e49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-5f5ccb07.js"),["assets/bat-5f5ccb07.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-30a3ca76.js"),["assets/counter-30a3ca76.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-f298ed3b.js"),["assets/device-f298ed3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-bff31af2.js"),["assets/inverter-bff31af2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-8aa3e08a.js"),["assets/counter-8aa3e08a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/device.vue":()=>e(()=>import("./device-96e65ee3.js"),["assets/device-96e65ee3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-53505c28.js"),["assets/inverter-53505c28.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e2b4a6f2.js"),["assets/bat-e2b4a6f2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-8a31af27.js"),["assets/bat_smart_energy-8a31af27.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-4f739eff.js"),["assets/counter-4f739eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-a3aaa72b.js"),["assets/device-a3aaa72b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-69ae908d.js"),["assets/inverter-69ae908d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-2ec8a7b2.js"),["assets/bat-2ec8a7b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-7328c01a.js"),["assets/device-7328c01a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-9ff76175.js"),["assets/device-9ff76175.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/inverter.vue":()=>e(()=>import("./inverter-81caf0c3.js"),["assets/inverter-81caf0c3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-0bf7d9a6.js"),["assets/counter-0bf7d9a6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-a875f223.js"),["assets/device-a875f223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-80468543.js"),["assets/inverter-80468543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/counter.vue":()=>e(()=>import("./counter-963b86e8.js"),["assets/counter-963b86e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-c2c254cf.js"),["assets/device-c2c254cf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/bat.vue":()=>e(()=>import("./bat-5a80b300.js"),["assets/bat-5a80b300.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/counter.vue":()=>e(()=>import("./counter-ae228566.js"),["assets/counter-ae228566.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f252d8d.js"),["assets/device-4f252d8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/inverter.vue":()=>e(()=>import("./inverter-b9d7f198.js"),["assets/inverter-b9d7f198.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-32ed9eb1.js"),["assets/counter-32ed9eb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-59ac52ab.js"),["assets/device-59ac52ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/inverter.vue":()=>e(()=>import("./inverter-0773e282.js"),["assets/inverter-0773e282.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/counter.vue":()=>e(()=>import("./counter-9db4f10d.js"),["assets/counter-9db4f10d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c94e89d5.js"),["assets/device-c94e89d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-a1fe6824.js"),["assets/inverter-a1fe6824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/bat.vue":()=>e(()=>import("./bat-5bb162c2.js"),["assets/bat-5bb162c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/counter.vue":()=>e(()=>import("./counter-39a750b6.js"),["assets/counter-39a750b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-bee08fb1.js"),["assets/device-bee08fb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/inverter.vue":()=>e(()=>import("./inverter-79c8fb55.js"),["assets/inverter-79c8fb55.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/counter.vue":()=>e(()=>import("./counter-031b0305.js"),["assets/counter-031b0305.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-56cb9ab9.js"),["assets/device-56cb9ab9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/inverter.vue":()=>e(()=>import("./inverter-564ac740.js"),["assets/inverter-564ac740.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-ca879aa3.js"),["assets/bat-ca879aa3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-6a7f6553.js"),["assets/counter-6a7f6553.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-9f0dbb75.js"),["assets/device-9f0dbb75.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-355c5719.js"),["assets/external_inverter-355c5719.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-929c3f78.js"),["assets/inverter-929c3f78.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-93b96b73.js"),["assets/bat-93b96b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-02184b73.js"),["assets/device-02184b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-160edb4d.js"),["assets/inverter-160edb4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/bat.vue":()=>e(()=>import("./bat-70713ff4.js"),["assets/bat-70713ff4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/counter.vue":()=>e(()=>import("./counter-92dbeb44.js"),["assets/counter-92dbeb44.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/device.vue":()=>e(()=>import("./device-bcd1ab1c.js"),["assets/device-bcd1ab1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/inverter.vue":()=>e(()=>import("./inverter-cf027bb4.js"),["assets/inverter-cf027bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-86050b21.js"),["assets/bat-86050b21.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-4cf113fa.js"),["assets/counter-4cf113fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/device.vue":()=>e(()=>import("./device-191a8f0d.js"),["assets/device-191a8f0d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-e2fcc96e.js"),["assets/inverter-e2fcc96e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/bat.vue":()=>e(()=>import("./bat-669886fa.js"),["assets/bat-669886fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-49277c48.js"),["assets/counter-49277c48.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-3d9e43fe.js"),["assets/device-3d9e43fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-fcb34a03.js"),["assets/inverter-fcb34a03.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-c023ee7d.js"),["assets/bat-c023ee7d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/device.vue":()=>e(()=>import("./device-e4af98fb.js"),["assets/device-e4af98fb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-390b002d.js"),["assets/inverter-390b002d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/bat.vue":()=>e(()=>import("./bat-46611da3.js"),["assets/bat-46611da3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-fa66cb6a.js"),["assets/counter-fa66cb6a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-29ba5b2b.js"),["assets/device-29ba5b2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/inverter.vue":()=>e(()=>import("./inverter-3a81dff8.js"),["assets/inverter-3a81dff8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-71b3befd.js"),["assets/device-71b3befd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/inverter.vue":()=>e(()=>import("./inverter-85d76c41.js"),["assets/inverter-85d76c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/counter.vue":()=>e(()=>import("./counter-d86757f2.js"),["assets/counter-d86757f2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-b0485aae.js"),["assets/device-b0485aae.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/bat.vue":()=>e(()=>import("./bat-84a37ddf.js"),["assets/bat-84a37ddf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-9c0b6f8f.js"),["assets/counter-9c0b6f8f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5926f93d.js"),["assets/device-5926f93d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/inverter.vue":()=>e(()=>import("./inverter-3a00ed3d.js"),["assets/inverter-3a00ed3d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/bat_api.vue":()=>e(()=>import("./bat_api-04666400.js"),["assets/bat_api-04666400.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-ffbf71f1.js"),["assets/bat_modbus-ffbf71f1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/counter.vue":()=>e(()=>import("./counter-214fbb40.js"),["assets/counter-214fbb40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/device.vue":()=>e(()=>import("./device-74cc8223.js"),["assets/device-74cc8223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/inverter.vue":()=>e(()=>import("./inverter-f329a5ad.js"),["assets/inverter-f329a5ad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-a2809c14.js"),["assets/bat-a2809c14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-dc109611.js"),["assets/counter-dc109611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/device.vue":()=>e(()=>import("./device-35945559.js"),["assets/device-35945559.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-671f6a73.js"),["assets/inverter-671f6a73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-90d6c411.js"),["assets/counter-90d6c411.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-85271457.js"),["assets/device-85271457.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-804d1c85.js"),["assets/inverter-804d1c85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/device.vue":()=>e(()=>import("./device-7d20d912.js"),["assets/device-7d20d912.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-bea955ac.js"),["assets/inverter-bea955ac.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceVendor}/${this.deviceType}/${this.componentType}.vue`),errorComponent:q}):S({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-66b6ca53.js"),["assets/device-66b6ca53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ff88dc47.js"),["assets/device-ff88dc47.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b394014f.js"),["assets/device-b394014f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/device.vue":()=>e(()=>import("./device-60a41819.js"),["assets/device-60a41819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/device.vue":()=>e(()=>import("./device-0852663a.js"),["assets/device-0852663a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-7e7c253d.js"),["assets/device-7e7c253d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/device.vue":()=>e(()=>import("./device-b6cf16cc.js"),["assets/device-b6cf16cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-a100762d.js"),["assets/device-a100762d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-dd9c6eba.js"),["assets/device-dd9c6eba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-538ad6e5.js"),["assets/device-538ad6e5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/device.vue":()=>e(()=>import("./device-d7ef046e.js"),["assets/device-d7ef046e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-12c43ff6.js"),["assets/device-12c43ff6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a3a79e85.js"),["assets/device-a3a79e85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/device.vue":()=>e(()=>import("./device-e78c3c94.js"),["assets/device-e78c3c94.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/device.vue":()=>e(()=>import("./device-4e84dc20.js"),["assets/device-4e84dc20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f6cff0ea.js"),["assets/device-f6cff0ea.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/device.vue":()=>e(()=>import("./device-df771d66.js"),["assets/device-df771d66.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-1194af1e.js"),["assets/device-1194af1e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-cc90e6fa.js"),["assets/device-cc90e6fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-1f5e9c10.js"),["assets/device-1f5e9c10.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-fa86e6ca.js"),["assets/device-fa86e6ca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-9b78528f.js"),["assets/device-9b78528f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-14134a0e.js"),["assets/device-14134a0e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-560cda8e.js"),["assets/device-560cda8e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-6bc2e333.js"),["assets/device-6bc2e333.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-66551827.js"),["assets/device-66551827.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/device.vue":()=>e(()=>import("./device-a5b9720c.js"),["assets/device-a5b9720c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-53c3c990.js"),["assets/device-53c3c990.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-2004960c.js"),["assets/device-2004960c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/device.vue":()=>e(()=>import("./device-f96e49ba.js"),["assets/device-f96e49ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/device.vue":()=>e(()=>import("./device-1dbf9864.js"),["assets/device-1dbf9864.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-2a05ce83.js"),["assets/device-2a05ce83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/device.vue":()=>e(()=>import("./device-accf2fa8.js"),["assets/device-accf2fa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-25323637.js"),["assets/device-25323637.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f8acb969.js"),["assets/device-f8acb969.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-ab2aea83.js"),["assets/device-ab2aea83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/device.vue":()=>e(()=>import("./device-67447569.js"),["assets/device-67447569.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-a326b87b.js"),["assets/device-a326b87b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-68cdbdd8.js"),["assets/device-68cdbdd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-34858026.js"),["assets/device-34858026.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-06345e49.js"),["assets/device-06345e49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-f298ed3b.js"),["assets/device-f298ed3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/device.vue":()=>e(()=>import("./device-96e65ee3.js"),["assets/device-96e65ee3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-a3aaa72b.js"),["assets/device-a3aaa72b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-7328c01a.js"),["assets/device-7328c01a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-9ff76175.js"),["assets/device-9ff76175.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-a875f223.js"),["assets/device-a875f223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-c2c254cf.js"),["assets/device-c2c254cf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f252d8d.js"),["assets/device-4f252d8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-59ac52ab.js"),["assets/device-59ac52ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c94e89d5.js"),["assets/device-c94e89d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-bee08fb1.js"),["assets/device-bee08fb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-56cb9ab9.js"),["assets/device-56cb9ab9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-9f0dbb75.js"),["assets/device-9f0dbb75.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-02184b73.js"),["assets/device-02184b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/device.vue":()=>e(()=>import("./device-bcd1ab1c.js"),["assets/device-bcd1ab1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/device.vue":()=>e(()=>import("./device-191a8f0d.js"),["assets/device-191a8f0d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-3d9e43fe.js"),["assets/device-3d9e43fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/device.vue":()=>e(()=>import("./device-e4af98fb.js"),["assets/device-e4af98fb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-29ba5b2b.js"),["assets/device-29ba5b2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-71b3befd.js"),["assets/device-71b3befd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-b0485aae.js"),["assets/device-b0485aae.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5926f93d.js"),["assets/device-5926f93d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/device.vue":()=>e(()=>import("./device-74cc8223.js"),["assets/device-74cc8223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/device.vue":()=>e(()=>import("./device-35945559.js"),["assets/device-35945559.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-85271457.js"),["assets/device-85271457.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/device.vue":()=>e(()=>import("./device-7d20d912.js"),["assets/device-7d20d912.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceVendor}/${this.deviceType}/device.vue`),errorComponent:q})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function ae(_,t,r,m,a,n){return d(),E($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":t[0]||(t[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=x(se,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(G,K,H,F,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([_,t])=>({label:t.group_name,options:Object.entries(t.vendors).map(([r,m])=>({value:[_,r],text:m.vendor_name})).sort((r,m)=>r.text.localeCompare(m.text))})).sort((_,t)=>-_.label.localeCompare(t.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[_,t]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][_].vendors[t].devices).map(([r,m])=>({value:[t,r],text:m.device_name})).sort((r,m)=>r.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(_,t,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=t,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(_,t,r,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:r,deviceVendor:t,type:m}})},removeComponentModal(_,t,r,m,a){a.stopPropagation(),this.modalComponent={deviceId:_,id:t,type:r},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_,t){if(_===void 0||t===void 0)return[];console.debug("finding components for",_,t);let r=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[_]!==void 0?(m.vendors[_].devices[t]!==void 0&&(r=Object.entries(m.vendors[_].devices[t].components).map(([n,T])=>({value:n,text:T.component_name}))),!1):!0),r},updateConfiguration(_,t){console.debug("updateConfiguration",_,t),this.updateState(_,t.value,t.object)}}},O=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),ce={class:"hardwareInstallation"},le={name:"hardwareInstallationForm"},Ee={key:0},Te={key:1},Ve={key:1},ge=O(()=>l("hr",null,null,-1)),Ie=O(()=>l("hr",null,null,-1)),Ae=O(()=>l("hr",null,null,-1)),Oe=O(()=>l("hr",null,null,-1)),Re={class:"col-1"},Pe={key:0},Le={class:"col-1"},De=O(()=>l("p",null,[s(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),s(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=O(()=>l("p",null,[s(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),s(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=O(()=>l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function we(_,t,r,m,a,n){const T=p("openwb-base-modal-dialog"),f=p("router-link"),R=p("openwb-base-alert"),A=p("font-awesome-icon"),b=p("openwb-base-avatar"),P=p("openwb-base-text-input"),z=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),C=p("openwb-base-click-button"),h=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return d(),c(D,null,[u(T,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:i(()=>[s(' Wollen Sie das Gerät "'+I(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),u(T,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:i(()=>[s(' Wollen Sie die Komponente "'+I(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",ce,[l("form",le,[r.installAssistantActive?L("",!0):(d(),E(R,{key:0,subtype:"info"},{default:i(()=>[s(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),u(f,{to:"/LoadManagementConfiguration"},{default:i(()=>[s(" Lastmanagement ")]),_:1}),s(" zu prüfen! ")]),_:1})),u(w,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(d(),c("div",Ee,[u(R,{subtype:"info"},{default:i(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),c("div",Te,[(d(!0),c(D,null,y(n.installedDevices,(o,B)=>(d(),E(w,{key:o.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[u(A,{"fixed-width":"",icon:["fas","network-wired"]}),s(" "+I(o.name),1)]),actions:i(v=>[v.collapsed?(d(),c("div",Ve,[(d(!0),c(D,null,y(n.getMyInstalledComponents(o.id),V=>(d(),E(b,{key:V.id,class:k("ml-1 bg-"+n.getComponentTypeClass(V.type))},{default:i(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(V.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(d(),E(b,{key:0,class:"bg-danger clickable",onClick:V=>n.removeDeviceModal(o.id,o.name,V)},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[u(P,{title:"Bezeichnung",subtype:"text","model-value":o.name,"onUpdate:modelValue":v=>_.updateState(B,v,"name")},null,8,["model-value","onUpdate:modelValue"]),ge,u(z,{deviceId:o.id,deviceType:o.type,deviceVendor:o.vendor,configuration:o.configuration,"onUpdate:configuration":v=>n.updateConfiguration(B,v)},null,8,["deviceId","deviceType","deviceVendor","configuration","onUpdate:configuration"]),Ie,u(W,null,{default:i(()=>[s("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(o.id)?L("",!0):(d(),E(R,{key:0,subtype:"warning"},{default:i(()=>[s(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(d(!0),c(D,null,y(n.getMyInstalledComponents(o.id),(v,V)=>(d(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(v.type)},{header:i(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(v.type)},null,8,["icon"]),s(" "+I(v.name),1)]),actions:i(g=>[g.collapsed?L("",!0):(d(),E(b,{key:0,class:"bg-danger clickable",onClick:U=>n.removeComponentModal(o.id,v.id,v.type,v.name,U)},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[u(P,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":g=>_.updateState(V,g,"name")},null,8,["model-value","onUpdate:modelValue"]),u(P,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":g=>_.updateState(V,g,"info.manufacturer")},{help:i(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),u(P,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":g=>_.updateState(V,g,"info.model")},{help:i(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ae,u(z,{deviceId:o.id,deviceType:o.type,deviceVendor:o.vendor,componentId:v.id,componentType:v.type,configuration:v.configuration,"onUpdate:configuration":g=>n.updateConfiguration(V,g)},null,8,["deviceId","deviceType","deviceVendor","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Oe,n.getComponentList(o.vendor,o.type).length?(d(),E(h,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(o.vendor,o.type),"model-value":a.componentToAdd[o.id],"onUpdate:modelValue":v=>a.componentToAdd[o.id]=v},{append:i(()=>[l("span",Re,[u(C,{class:k(a.componentToAdd[o.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[o.id]===void 0,onButtonClicked:v=>n.addComponent(o.id,o.vendor,o.type,a.componentToAdd[o.id])},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[s(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(d(),E(R,{key:2,subtype:"info"},{default:i(()=>[s(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(d(),c("hr",Pe)):L("",!0),u(h,{title:"Hersteller",notSelected:"Bitte auswählen",groups:n.vendorList,modelValue:a.selectedVendor,"onUpdate:modelValue":t[0]||(t[0]=o=>a.selectedVendor=o)},null,8,["groups","modelValue"]),u(h,{title:"Verfügbare Geräte",notSelected:"Bitte auswählen",disabled:a.selectedVendor===void 0,options:n.deviceList,modelValue:a.deviceToAdd,"onUpdate:modelValue":t[1]||(t[1]=o=>a.deviceToAdd=o)},{append:i(()=>[l("span",Le,[u(C,{class:k(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[De,fe,be]),_:1},8,["disabled","options","modelValue"])]))]),_:1}),u(j,{formName:"hardwareInstallationForm",onSave:t[2]||(t[2]=o=>_.$emit("save")),onReset:t[3]||(t[3]=o=>_.$emit("reset")),onDefaults:t[4]||(t[4]=o=>_.$emit("defaults"))})])])],64)}const Se=x(pe,[["render",we],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{Se as default};
diff --git a/web/settings/assets/InstallAssistant-6dafed2f.js b/web/settings/assets/InstallAssistant-ce6c9cb7.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-6dafed2f.js
rename to web/settings/assets/InstallAssistant-ce6c9cb7.js
index 54d806bc3a..6191b424f2 100644
--- a/web/settings/assets/InstallAssistant-6dafed2f.js
+++ b/web/settings/assets/InstallAssistant-ce6c9cb7.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-0deee932.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-e9cce727.js"),["assets/InstallAssistantStep0-e9cce727.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-efa3c6bc.js"),["assets/InstallAssistantStep1-efa3c6bc.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-5a70f628.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-7c0c9f39.js"),["assets/InstallAssistantStep10-7c0c9f39.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-fda9278d.js"),["assets/InstallAssistantStep2-fda9278d.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-d59d61b7.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-4d332029.js"),["assets/InstallAssistantStep3-4d332029.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-45cfd7f0.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-6da51e7b.js"),["assets/InstallAssistantStep4-6da51e7b.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-05b3f352.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-fe505bd8.js"),["assets/InstallAssistantStep5-fe505bd8.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-2c12edbc.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-0a0862fa.js"),["assets/InstallAssistantStep6-0a0862fa.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-05b3f352.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-51ebd504.js"),["assets/InstallAssistantStep7-51ebd504.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-6b31901e.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-2ead69e7.js"),["assets/InstallAssistantStep8-2ead69e7.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-a1751954.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-195c286e.js"),["assets/InstallAssistantStep9-195c286e.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-5a70f628.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-fc1b6a40.js"),["assets/InstallAssistantStepTemplate-fc1b6a40.js","assets/index-0deee932.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-068b063d.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-431f88fd.js"),["assets/InstallAssistantStep0-431f88fd.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-30da7200.js"),["assets/InstallAssistantStep1-30da7200.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-10c6dd29.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-b816c6c6.js"),["assets/InstallAssistantStep10-b816c6c6.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-c6a872c9.js"),["assets/InstallAssistantStep2-c6a872c9.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-d516542d.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-c18ad6b3.js"),["assets/InstallAssistantStep3-c18ad6b3.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-9529e63d.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-afb36773.js"),["assets/InstallAssistantStep4-afb36773.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-4fc37543.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-87ff5089.js"),["assets/InstallAssistantStep5-87ff5089.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-dd85fd7a.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-db3c77b6.js"),["assets/InstallAssistantStep6-db3c77b6.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-4fc37543.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-4abd3c6f.js"),["assets/InstallAssistantStep7-4abd3c6f.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-755ca06f.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-1d34ec58.js"),["assets/InstallAssistantStep8-1d34ec58.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-ee86d81f.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-03bed1b3.js"),["assets/InstallAssistantStep9-03bed1b3.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-10c6dd29.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-cb1e241d.js"),["assets/InstallAssistantStepTemplate-cb1e241d.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-e9cce727.js b/web/settings/assets/InstallAssistantStep0-431f88fd.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-e9cce727.js
rename to web/settings/assets/InstallAssistantStep0-431f88fd.js
index 4e5ba641e2..e5ddf98050 100644
--- a/web/settings/assets/InstallAssistantStep0-e9cce727.js
+++ b/web/settings/assets/InstallAssistantStep0-431f88fd.js
@@ -1 +1 @@
-import{C as d}from"./index-0deee932.js";import u from"./InstallAssistantStepTemplate-fc1b6a40.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
+import{C as d}from"./index-068b063d.js";import u from"./InstallAssistantStepTemplate-cb1e241d.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
diff --git a/web/settings/assets/InstallAssistantStep1-efa3c6bc.js b/web/settings/assets/InstallAssistantStep1-30da7200.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep1-efa3c6bc.js
rename to web/settings/assets/InstallAssistantStep1-30da7200.js
index 40c00515ec..2d8b68f86a 100644
--- a/web/settings/assets/InstallAssistantStep1-efa3c6bc.js
+++ b/web/settings/assets/InstallAssistantStep1-30da7200.js
@@ -1 +1 @@
-import{C as m}from"./index-0deee932.js";import p from"./InstallAssistantStepTemplate-fc1b6a40.js";import l from"./DataManagement-5a70f628.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
+import{C as m}from"./index-068b063d.js";import p from"./InstallAssistantStepTemplate-cb1e241d.js";import l from"./DataManagement-10c6dd29.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
diff --git a/web/settings/assets/InstallAssistantStep10-7c0c9f39.js b/web/settings/assets/InstallAssistantStep10-b816c6c6.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-7c0c9f39.js
rename to web/settings/assets/InstallAssistantStep10-b816c6c6.js
index 4a68ef139e..8801ad3c0c 100644
--- a/web/settings/assets/InstallAssistantStep10-7c0c9f39.js
+++ b/web/settings/assets/InstallAssistantStep10-b816c6c6.js
@@ -1 +1 @@
-import{C as i}from"./index-0deee932.js";import a from"./InstallAssistantStepTemplate-fc1b6a40.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
+import{C as i}from"./index-068b063d.js";import a from"./InstallAssistantStepTemplate-cb1e241d.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
diff --git a/web/settings/assets/InstallAssistantStep2-fda9278d.js b/web/settings/assets/InstallAssistantStep2-c6a872c9.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-fda9278d.js
rename to web/settings/assets/InstallAssistantStep2-c6a872c9.js
index 9ec0d20038..ef878d0c32 100644
--- a/web/settings/assets/InstallAssistantStep2-fda9278d.js
+++ b/web/settings/assets/InstallAssistantStep2-c6a872c9.js
@@ -1 +1 @@
-import{C as d}from"./index-0deee932.js";import p from"./InstallAssistantStepTemplate-fc1b6a40.js";import l from"./System-d59d61b7.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
+import{C as d}from"./index-068b063d.js";import p from"./InstallAssistantStepTemplate-cb1e241d.js";import l from"./System-d516542d.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep3-4d332029.js b/web/settings/assets/InstallAssistantStep3-c18ad6b3.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep3-4d332029.js
rename to web/settings/assets/InstallAssistantStep3-c18ad6b3.js
index 69725997ad..32a9fb8a91 100644
--- a/web/settings/assets/InstallAssistantStep3-4d332029.js
+++ b/web/settings/assets/InstallAssistantStep3-c18ad6b3.js
@@ -1 +1 @@
-import{C as d}from"./index-0deee932.js";import p from"./InstallAssistantStepTemplate-fc1b6a40.js";import m from"./GeneralConfig-45cfd7f0.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
+import{C as d}from"./index-068b063d.js";import p from"./InstallAssistantStepTemplate-cb1e241d.js";import m from"./GeneralConfig-9529e63d.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep4-6da51e7b.js b/web/settings/assets/InstallAssistantStep4-afb36773.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep4-6da51e7b.js
rename to web/settings/assets/InstallAssistantStep4-afb36773.js
index 9d1cf53a60..c3e29636b1 100644
--- a/web/settings/assets/InstallAssistantStep4-6da51e7b.js
+++ b/web/settings/assets/InstallAssistantStep4-afb36773.js
@@ -1 +1 @@
-import{C as l}from"./index-0deee932.js";import p from"./InstallAssistantStepTemplate-fc1b6a40.js";import u from"./ChargePointInstallation-05b3f352.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
+import{C as l}from"./index-068b063d.js";import p from"./InstallAssistantStepTemplate-cb1e241d.js";import u from"./ChargePointInstallation-4fc37543.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
diff --git a/web/settings/assets/InstallAssistantStep5-fe505bd8.js b/web/settings/assets/InstallAssistantStep5-87ff5089.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep5-fe505bd8.js
rename to web/settings/assets/InstallAssistantStep5-87ff5089.js
index 5b6d6213d5..0b3f066428 100644
--- a/web/settings/assets/InstallAssistantStep5-fe505bd8.js
+++ b/web/settings/assets/InstallAssistantStep5-87ff5089.js
@@ -1 +1 @@
-import{C as l}from"./index-0deee932.js";import m from"./InstallAssistantStepTemplate-fc1b6a40.js";import u from"./HardwareInstallation-2c12edbc.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
+import{C as l}from"./index-068b063d.js";import m from"./InstallAssistantStepTemplate-cb1e241d.js";import u from"./HardwareInstallation-dd85fd7a.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstallAssistantStep6-0a0862fa.js b/web/settings/assets/InstallAssistantStep6-db3c77b6.js
similarity index 94%
rename from web/settings/assets/InstallAssistantStep6-0a0862fa.js
rename to web/settings/assets/InstallAssistantStep6-db3c77b6.js
index 5959f2ddc8..52d1a3a5d7 100644
--- a/web/settings/assets/InstallAssistantStep6-0a0862fa.js
+++ b/web/settings/assets/InstallAssistantStep6-db3c77b6.js
@@ -1 +1 @@
-import{C as l}from"./index-0deee932.js";import u from"./InstallAssistantStepTemplate-fc1b6a40.js";import p from"./ChargePointInstallation-05b3f352.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
+import{C as l}from"./index-068b063d.js";import u from"./InstallAssistantStepTemplate-cb1e241d.js";import p from"./ChargePointInstallation-4fc37543.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep7-51ebd504.js b/web/settings/assets/InstallAssistantStep7-4abd3c6f.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-51ebd504.js
rename to web/settings/assets/InstallAssistantStep7-4abd3c6f.js
index 9ca2e09e34..773148c19b 100644
--- a/web/settings/assets/InstallAssistantStep7-51ebd504.js
+++ b/web/settings/assets/InstallAssistantStep7-4abd3c6f.js
@@ -1 +1 @@
-import{C as l}from"./index-0deee932.js";import m from"./InstallAssistantStepTemplate-fc1b6a40.js";import p from"./LoadManagementConfig-6b31901e.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
+import{C as l}from"./index-068b063d.js";import m from"./InstallAssistantStepTemplate-cb1e241d.js";import p from"./LoadManagementConfig-755ca06f.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep8-2ead69e7.js b/web/settings/assets/InstallAssistantStep8-1d34ec58.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep8-2ead69e7.js
rename to web/settings/assets/InstallAssistantStep8-1d34ec58.js
index d9fc4d8dc1..4b1b2f0948 100644
--- a/web/settings/assets/InstallAssistantStep8-2ead69e7.js
+++ b/web/settings/assets/InstallAssistantStep8-1d34ec58.js
@@ -1 +1 @@
-import{C as l}from"./index-0deee932.js";import u from"./InstallAssistantStepTemplate-fc1b6a40.js";import m from"./VehicleConfig-a1751954.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
+import{C as l}from"./index-068b063d.js";import u from"./InstallAssistantStepTemplate-cb1e241d.js";import m from"./VehicleConfig-ee86d81f.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep9-195c286e.js b/web/settings/assets/InstallAssistantStep9-03bed1b3.js
similarity index 91%
rename from web/settings/assets/InstallAssistantStep9-195c286e.js
rename to web/settings/assets/InstallAssistantStep9-03bed1b3.js
index c4eeeaa197..b347e8123d 100644
--- a/web/settings/assets/InstallAssistantStep9-195c286e.js
+++ b/web/settings/assets/InstallAssistantStep9-03bed1b3.js
@@ -1 +1 @@
-import{C as l}from"./index-0deee932.js";import p from"./InstallAssistantStepTemplate-fc1b6a40.js";import u from"./DataManagement-5a70f628.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
+import{C as l}from"./index-068b063d.js";import p from"./InstallAssistantStepTemplate-cb1e241d.js";import u from"./DataManagement-10c6dd29.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-fc1b6a40.js b/web/settings/assets/InstallAssistantStepTemplate-cb1e241d.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-fc1b6a40.js
rename to web/settings/assets/InstallAssistantStepTemplate-cb1e241d.js
index 05de21a06f..a839cf997d 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-fc1b6a40.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-cb1e241d.js
@@ -1 +1 @@
-import{C as v}from"./index-0deee932.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
+import{C as v}from"./index-068b063d.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstantChargeConfig-f62c6c62.js b/web/settings/assets/InstantChargeConfig-3316e506.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-f62c6c62.js
rename to web/settings/assets/InstantChargeConfig-3316e506.js
index e8a77c2b49..dbee47fb09 100644
--- a/web/settings/assets/InstantChargeConfig-f62c6c62.js
+++ b/web/settings/assets/InstantChargeConfig-3316e506.js
@@ -1 +1 @@
-import{C as l}from"./index-0deee932.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-068b063d.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-30e95de5.js b/web/settings/assets/LegalSettings-63440fac.js
similarity index 97%
rename from web/settings/assets/LegalSettings-30e95de5.js
rename to web/settings/assets/LegalSettings-63440fac.js
index f08e5219e9..3f17152395 100644
--- a/web/settings/assets/LegalSettings-30e95de5.js
+++ b/web/settings/assets/LegalSettings-63440fac.js
@@ -1 +1 @@
-import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-0deee932.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
+import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-068b063d.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
diff --git a/web/settings/assets/LoadManagementConfig-6b31901e.js b/web/settings/assets/LoadManagementConfig-755ca06f.js
similarity index 99%
rename from web/settings/assets/LoadManagementConfig-6b31901e.js
rename to web/settings/assets/LoadManagementConfig-755ca06f.js
index c4c36fa739..33acba55b2 100644
--- a/web/settings/assets/LoadManagementConfig-6b31901e.js
+++ b/web/settings/assets/LoadManagementConfig-755ca06f.js
@@ -1 +1 @@
-import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-0deee932.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
+import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-068b063d.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
diff --git a/web/settings/assets/MqttBridgeConfig-f457be0c.js b/web/settings/assets/MqttBridgeConfig-94739887.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-f457be0c.js
rename to web/settings/assets/MqttBridgeConfig-94739887.js
index 8ec9b9a58b..1b1c798cad 100644
--- a/web/settings/assets/MqttBridgeConfig-f457be0c.js
+++ b/web/settings/assets/MqttBridgeConfig-94739887.js
@@ -1 +1 @@
-import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-0deee932.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
+import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-068b063d.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
diff --git a/web/settings/assets/OptionalComponents-d3fca35b.js b/web/settings/assets/OptionalComponents-40d19b76.js
similarity index 99%
rename from web/settings/assets/OptionalComponents-d3fca35b.js
rename to web/settings/assets/OptionalComponents-40d19b76.js
index a580b8ebbf..1378859675 100644
--- a/web/settings/assets/OptionalComponents-d3fca35b.js
+++ b/web/settings/assets/OptionalComponents-40d19b76.js
@@ -1,2 +1,2 @@
-import{_ as $,C}from"./index-0deee932.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as O,X as V,Y as z,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as g,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function j(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),g(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=_=>m.updateConfiguration(_,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const A=y(F,[["render",j],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);O.add(V,z);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),_=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),g(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),g(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(_,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),g(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),_=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(_,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
+import{_ as $,C}from"./index-068b063d.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as O,X as V,Y as z,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as g,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function j(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),g(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=_=>m.updateConfiguration(_,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const A=y(F,[["render",j],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);O.add(V,z);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),_=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),g(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),g(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(_,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),g(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),_=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(_,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
 `)},{help:o(()=>[a(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(b,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/optional/int_display/active",i)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[a(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",te,[n(b,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/optional/int_display/rotation",i)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ne,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),oe,n(T,null,{default:o(()=>[a(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/optional/int_display/standby",i)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",ae,[ie,n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",se,[le,n(b,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/optional/int_display/only_local_charge_points",i)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[a(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),pe,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",re,[n(D,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=i=>m.updateSelectedDisplayTheme(i))},{help:o(()=>[a(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),g(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=i=>m.updateConfiguration("openWB/optional/int_display/theme",i))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=i=>e.$emit("save")),onReset:t[8]||(t[8]=i=>e.$emit("reset")),onDefaults:t[9]||(t[9]=i=>e.$emit("defaults"))})])])}const ye=y(H,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{ye as default};
diff --git a/web/settings/assets/PVChargeConfig-a0353b9a.js b/web/settings/assets/PVChargeConfig-0d060176.js
similarity index 99%
rename from web/settings/assets/PVChargeConfig-a0353b9a.js
rename to web/settings/assets/PVChargeConfig-0d060176.js
index 5684d7d9b8..110920493a 100644
--- a/web/settings/assets/PVChargeConfig-a0353b9a.js
+++ b/web/settings/assets/PVChargeConfig-0d060176.js
@@ -1 +1 @@
-import{C as B}from"./index-0deee932.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
+import{C as B}from"./index-068b063d.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-cb777801.js b/web/settings/assets/ScheduledChargeConfig-4e583e67.js
similarity index 97%
rename from web/settings/assets/ScheduledChargeConfig-cb777801.js
rename to web/settings/assets/ScheduledChargeConfig-4e583e67.js
index 966f3c7113..bf55902e4a 100644
--- a/web/settings/assets/ScheduledChargeConfig-cb777801.js
+++ b/web/settings/assets/ScheduledChargeConfig-4e583e67.js
@@ -1 +1 @@
-import{C as p}from"./index-0deee932.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
+import{C as p}from"./index-068b063d.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
diff --git a/web/settings/assets/Status-0e0f6b66.js b/web/settings/assets/Status-c3faa234.js
similarity index 99%
rename from web/settings/assets/Status-0e0f6b66.js
rename to web/settings/assets/Status-c3faa234.js
index 7f8ebb2f60..bf08fe70c5 100644
--- a/web/settings/assets/Status-0e0f6b66.js
+++ b/web/settings/assets/Status-c3faa234.js
@@ -1 +1 @@
-import{C as y}from"./index-0deee932.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
+import{C as y}from"./index-068b063d.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
diff --git a/web/settings/assets/Support-89c6cc7c.js b/web/settings/assets/Support-48f5d97a.js
similarity index 99%
rename from web/settings/assets/Support-89c6cc7c.js
rename to web/settings/assets/Support-48f5d97a.js
index 5d007f4706..a731831e90 100644
--- a/web/settings/assets/Support-89c6cc7c.js
+++ b/web/settings/assets/Support-48f5d97a.js
@@ -1,3 +1,3 @@
-import{l as S,g as D,F as V}from"./vendor-fortawesome-71546160.js";import{C as W}from"./index-0deee932.js";import{_ as A,u as d,k as h,l as f,x as r,A as _,N as t,D as s,a4 as C,B as k,y as e,q as F}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(D);const z={name:"OpenwbSupportView",mixins:[W],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var p,m;if(this.components!==void 0)return this.components;let i="";const o=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const n of Object.values(o)){const u=n.id,a=((p=n.info)==null?void 0:p.manufacturer)||"N/A",c=((m=n.info)==null?void 0:m.model)||"N/A";i+=`(${u}) Hersteller: ${a}, Modell: ${c}
+import{l as S,g as D,F as V}from"./vendor-fortawesome-71546160.js";import{C as W}from"./index-068b063d.js";import{_ as A,u as d,k as h,l as f,x as r,A as _,N as t,D as s,a4 as C,B as k,y as e,q as F}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(D);const z={name:"OpenwbSupportView",mixins:[W],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var p,m;if(this.components!==void 0)return this.components;let i="";const o=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const n of Object.values(o)){const u=n.id,a=((p=n.info)==null?void 0:p.manufacturer)||"N/A",c=((m=n.info)==null?void 0:m.model)||"N/A";i+=`(${u}) Hersteller: ${a}, Modell: ${c}
 `}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const o=this.getWildcardTopics("openWB/vehicle/+/info");for(const[p,m]of Object.entries(o)){const n=parseInt(p.split("/")[2]);if(n!==0){const u=m.manufacturer||"N/A",a=m.model||"N/A";i+=`(${n}) Hersteller: ${u}, Modell: ${a}
 `}}return i.trim()}}},x={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T=r("li",null,' Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),H=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),E=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1),K=r("br",null,null,-1),L=r("br",null,null,-1),U=r("br",null,null,-1),j={class:"row justify-content-center"};function $(i,o,p,m,n,u){const a=d("router-link"),c=d("openwb-base-alert"),w=d("FontAwesomeIcon"),g=d("openwb-base-text-input"),b=d("openwb-base-textarea"),v=d("openwb-base-click-button"),y=d("openwb-base-card"),B=d("font-awesome-icon");return h(),f("div",x,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(h(),_(c,{key:0,subtype:"danger"},{default:t(()=>[e(" Du musst der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(h(),f("div",I,[s(c,{subtype:"success"},{default:t(()=>[e(" Du hast der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und kannst Systemberichte senden. ")]),_:1}),s(y,{title:"Systembericht"},C({default:t(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(h(),f("div",N,[s(c,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lies bitte den Hilfetext, der durch Klick auf das "),s(w,{icon:["far","question-circle"]}),e(" angezeigt wird. Nimm das Wiki zur Hilfe. ")]),T,M,H,E])]),_:1}),s(g,{title:"E-Mail",required:"",subtype:"email",modelValue:n.email,"onUpdate:modelValue":o[0]||(o[0]=l=>n.email=l)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(g,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":o[1]||(o[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:t(()=>[e(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),K,e(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")]),_:1},8,["model-value"]),s(b,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":u.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=l=>n.components=l)},{help:t(()=>[e(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind."),L,s(a,{to:"/HardwareInstallation"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":u.vehicleInfo,"onUpdate:modelValue":o[3]||(o[3]=l=>n.vehicles=l)},{help:t(()=>[e(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr)."),U,s(a,{to:"/VehicleConfiguration"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.message,"onUpdate:modelValue":o[4]||(o[4]=l=>n.message=l)},null,8,["modelValue"])])):k("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",j,[s(v,{class:F(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:u.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?k("",!0):(h(),_(c,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. "),s(B,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const X=A(z,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{X as default};
diff --git a/web/settings/assets/System-d59d61b7.js b/web/settings/assets/System-d516542d.js
similarity index 99%
rename from web/settings/assets/System-d59d61b7.js
rename to web/settings/assets/System-d516542d.js
index e11001eb9a..f0ae788d04 100644
--- a/web/settings/assets/System-d59d61b7.js
+++ b/web/settings/assets/System-d516542d.js
@@ -1 +1 @@
-import{l as A,ae as q,p as S,a3 as C,U,af as z,F as $}from"./vendor-fortawesome-71546160.js";import{C as x}from"./index-0deee932.js";import{_ as E,u as p,k as m,l as _,A as B,N as a,B as w,x as o,D as s,y as i,q as k,J as F,K as j,z as D,S as T,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,U,z);const L={name:"OpenwbSystemView",mixins:[x],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],b=(l,d)=>l.value==d.value?0:l.value==t?-1:d.value==t?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var r=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(r!==void 0){var c=0;for(const[l,d]of Object.entries(r))v.includes(l)?c=0:l==u?c=1:c=2,f[c].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(b),f[1].options.sort(b)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},h=t=>(T("data-v-059847f6"),t=t(),I(),t),N={class:"system"},R=h(()=>o("h2",null,"Achtung!",-1)),Z=h(()=>o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),O={key:1},P={name:"versionInfoForm"},G={class:"missing-commits"},J=h(()=>o("br",null,null,-1)),H={class:"row justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={class:"col-md-4 d-flex py-1 justify-content-center"},Q={key:0,name:"powerForm"},X={class:"row justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={class:"col-md-4 d-flex py-1 justify-content-center"},te={key:1,name:"releaseChangeForm"},se=h(()=>o("br",null,null,-1)),ne=h(()=>o("br",null,null,-1)),ae=h(()=>o("br",null,null,-1)),oe=h(()=>o("br",null,null,-1)),re={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(t,e,u,v,b,r){const f=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),d=p("openwb-base-card"),g=p("font-awesome-icon"),y=p("openwb-base-click-button"),V=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?w("",!0):(m(),B(c,{key:0,subtype:"danger"},{default:a(()=>[R,Z,s(f,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),b.warningAcknowledged||u.installAssistantActive?(m(),_("div",O,[o("form",P,[s(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[o("div",H,[o("div",K,[s(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[i(" Informationen aktualisieren "),s(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),o("div",M,[s(y,{class:k(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>r.systemUpdate())},{default:a(()=>[i(" Update "),s(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:k(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(m(),B(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[o("ul",G,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},D(n),1))),128))])]),_:1})):w("",!0),s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1}),t.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(m(),B(c,{key:1,subtype:"danger"},{default:a(()=>[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),J,i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")]),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(m(),_("form",Q,[s(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",X,[o("div",Y,[s(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemReboot"))},{default:a(()=>[i(" Neustart "),s(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),o("div",ee,[s(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>r.sendSystemCommand("systemShutdown"))},{default:a(()=>[i(" Ausschalten "),s(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(m(),_("form",te,[s(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",re,[o("div",le,[s(y,{class:k(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>r.switchBranch())},{default:a(()=>[s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),se,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),ne,i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ae,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),oe,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(V,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(V,{title:"Tag",options:r.getBranchTagOptions(),modelValue:b.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>b.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):w("",!0)])}const fe=E(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{fe as default};
+import{l as A,ae as q,p as S,a3 as C,U,af as z,F as $}from"./vendor-fortawesome-71546160.js";import{C as x}from"./index-068b063d.js";import{_ as E,u as p,k as m,l as _,A as B,N as a,B as w,x as o,D as s,y as i,q as k,J as F,K as j,z as D,S as T,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,U,z);const L={name:"OpenwbSystemView",mixins:[x],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],b=(l,d)=>l.value==d.value?0:l.value==t?-1:d.value==t?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var r=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(r!==void 0){var c=0;for(const[l,d]of Object.entries(r))v.includes(l)?c=0:l==u?c=1:c=2,f[c].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(b),f[1].options.sort(b)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},h=t=>(T("data-v-059847f6"),t=t(),I(),t),N={class:"system"},R=h(()=>o("h2",null,"Achtung!",-1)),Z=h(()=>o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),O={key:1},P={name:"versionInfoForm"},G={class:"missing-commits"},J=h(()=>o("br",null,null,-1)),H={class:"row justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={class:"col-md-4 d-flex py-1 justify-content-center"},Q={key:0,name:"powerForm"},X={class:"row justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={class:"col-md-4 d-flex py-1 justify-content-center"},te={key:1,name:"releaseChangeForm"},se=h(()=>o("br",null,null,-1)),ne=h(()=>o("br",null,null,-1)),ae=h(()=>o("br",null,null,-1)),oe=h(()=>o("br",null,null,-1)),re={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(t,e,u,v,b,r){const f=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),d=p("openwb-base-card"),g=p("font-awesome-icon"),y=p("openwb-base-click-button"),V=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?w("",!0):(m(),B(c,{key:0,subtype:"danger"},{default:a(()=>[R,Z,s(f,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),b.warningAcknowledged||u.installAssistantActive?(m(),_("div",O,[o("form",P,[s(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[o("div",H,[o("div",K,[s(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[i(" Informationen aktualisieren "),s(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),o("div",M,[s(y,{class:k(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>r.systemUpdate())},{default:a(()=>[i(" Update "),s(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:k(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(m(),B(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[o("ul",G,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},D(n),1))),128))])]),_:1})):w("",!0),s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1}),t.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(m(),B(c,{key:1,subtype:"danger"},{default:a(()=>[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),J,i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")]),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(m(),_("form",Q,[s(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",X,[o("div",Y,[s(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemReboot"))},{default:a(()=>[i(" Neustart "),s(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),o("div",ee,[s(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>r.sendSystemCommand("systemShutdown"))},{default:a(()=>[i(" Ausschalten "),s(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(m(),_("form",te,[s(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",re,[o("div",le,[s(y,{class:k(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>r.switchBranch())},{default:a(()=>[s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),se,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),ne,i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ae,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),oe,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(V,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(V,{title:"Tag",options:r.getBranchTagOptions(),modelValue:b.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>b.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):w("",!0)])}const fe=E(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{fe as default};
diff --git a/web/settings/assets/TestingStore-a904ffb0.js b/web/settings/assets/TestingStore-af0aad03.js
similarity index 99%
rename from web/settings/assets/TestingStore-a904ffb0.js
rename to web/settings/assets/TestingStore-af0aad03.js
index fcb5ec0ad2..a4f2790867 100644
--- a/web/settings/assets/TestingStore-a904ffb0.js
+++ b/web/settings/assets/TestingStore-af0aad03.js
@@ -1 +1 @@
-import{C as V}from"./index-0deee932.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
+import{C as V}from"./index-068b063d.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
diff --git a/web/settings/assets/TimeChargeConfig-387e7031.js b/web/settings/assets/TimeChargeConfig-182836cc.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-387e7031.js
rename to web/settings/assets/TimeChargeConfig-182836cc.js
index b9d254f006..e6fc45bcc2 100644
--- a/web/settings/assets/TimeChargeConfig-387e7031.js
+++ b/web/settings/assets/TimeChargeConfig-182836cc.js
@@ -1 +1 @@
-import{C as l}from"./index-0deee932.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-068b063d.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-a1751954.js b/web/settings/assets/VehicleConfig-ee86d81f.js
similarity index 99%
rename from web/settings/assets/VehicleConfig-a1751954.js
rename to web/settings/assets/VehicleConfig-ee86d81f.js
index fcc926ad6a..d7c80194be 100644
--- a/web/settings/assets/VehicleConfig-a1751954.js
+++ b/web/settings/assets/VehicleConfig-ee86d81f.js
@@ -1 +1 @@
-import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-0deee932.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as b,N as a,y as l,z as S,D as n,x as h,a2 as re,a3 as ue,J as y,B as m,K as B,a4 as q,P as N,q as O,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,g,F,_,s){const L=C("openwb-base-alert"),v=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(g.configuration).length==0?(r(),b(L,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(g.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(L,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(g.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(v,{title:"Konfiguration",subtype:"json","model-value":g.configuration,"onUpdate:modelValue":d[0]||(d[0]=W=>s.updateConfiguration(W,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(L,{subtype:"info"},{default:a(()=>[h("pre",null,S(JSON.stringify(g.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-d38b53d4.js"),["assets/vehicle-d38b53d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-0deee932.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,d,g,F,_,s){const L=C("openwb-base-heading");return r(),c(y,null,[n(L,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(g.vehicle.name)+'" ',1)]),_:1}),(r(),b(ue(s.myComponent),{vehicleId:g.vehicleId,vehicle:g.vehicle,configuration:g.vehicle.configuration,vehicleType:g.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=v=>s.updateConfiguration(v))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=Z(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+g].name;e.push({value:g,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+g].name;e.push({value:g,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(g=>g.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:g}})},removeChargeTemplateSchedulePlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,g){this.showChargeTemplateSchedulePlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:g}})},removeChargeTemplateTimeChargingPlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,g){this.showChargeTemplateTimeChargingPlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>h("br",null,null,-1)),Ue=f(()=>h("hr",null,null,-1)),Te={key:2},We=f(()=>h("br",null,null,-1)),Le=["innerHTML"],Pe=f(()=>h("hr",null,null,-1)),ye=f(()=>h("br",null,null,-1)),Ae=f(()=>h("br",null,null,-1)),Ee=f(()=>h("br",null,null,-1)),Be={key:3},Fe=f(()=>h("hr",{class:"border-secondary"},null,-1)),qe={key:0},Me={key:1},De=f(()=>h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),Ze={key:0},xe=f(()=>h("br",null,null,-1)),Ne=f(()=>h("br",null,null,-1)),Oe=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Re={key:1},He={key:0},je={key:0},Je={key:3},$e={key:0},Ge={key:1},Qe=f(()=>h("br",null,null,-1)),Xe=f(()=>h("br",null,null,-1)),Ye=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),Ke={key:0},et={key:0},tt={key:0},nt=f(()=>h("hr",null,null,-1)),at=f(()=>h("hr",null,null,-1)),lt=f(()=>h("br",null,null,-1)),it=f(()=>h("br",null,null,-1)),ot=f(()=>h("hr",null,null,-1)),dt=f(()=>h("br",null,null,-1)),rt=f(()=>h("br",null,null,-1)),ut=["onClick"],st={key:0},mt={key:1},ct={key:2},ht={key:3},gt={key:4},pt={key:5},bt={key:4},vt=f(()=>h("hr",null,null,-1)),ft=["onClick"],_t={key:0},wt={key:1},kt={key:2},Vt={key:3},Ct={key:4},St={key:5};function zt(e,d,g,F,_,s){const L=C("openwb-base-modal-dialog"),v=C("font-awesome-icon"),W=C("openwb-base-avatar"),E=C("openwb-base-alert"),U=C("openwb-base-text-input"),M=C("openwb-base-select-input"),I=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),A=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(y,null,[n(L,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",ke,[h("form",Ve,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(v,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(y,null,B(s.vehicleIndexes,i=>(r(),b(A,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),i!==0?(r(),b(U,{key:0,title:"Fahrzeughersteller ","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].manufacturer,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"manufacturer")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),i!==0?(r(),b(U,{key:1,title:"Fahrzeugmodell","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].model,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"model")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht."),ze,l(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),Ue,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!g.installAssistantActive?(r(),c("div",Te,[n(I,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),We,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Le)]),_:1}),Pe])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),ye,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Ee,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Be,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Fe,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Me,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),De,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(y,null,B(s.evTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ze,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),xe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ne,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Oe,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Re,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",je," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",$e,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Ge,[(r(!0),c(y,null,B(s.chargeTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Qe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Xe,Ye]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ke,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",et,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",tt,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),nt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),at,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),it,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),ot,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),dt,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),rt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(y,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",st,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",mt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",ct,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ht,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",gt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ut)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),b(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",pt,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),g.installAssistantActive?m("",!0):(r(),c("div",bt,[vt,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(y,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",wt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",kt,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",Vt,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Ct,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ft)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(U,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",St,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Bt=Z(we,[["render",zt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Bt as default};
+import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-068b063d.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as b,N as a,y as l,z as S,D as n,x as h,a2 as re,a3 as ue,J as y,B as m,K as B,a4 as q,P as N,q as O,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,g,F,_,s){const L=C("openwb-base-alert"),v=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(g.configuration).length==0?(r(),b(L,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(g.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(L,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(g.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(v,{title:"Konfiguration",subtype:"json","model-value":g.configuration,"onUpdate:modelValue":d[0]||(d[0]=W=>s.updateConfiguration(W,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(L,{subtype:"info"},{default:a(()=>[h("pre",null,S(JSON.stringify(g.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-060018aa.js"),["assets/vehicle-060018aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-068b063d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,d,g,F,_,s){const L=C("openwb-base-heading");return r(),c(y,null,[n(L,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(g.vehicle.name)+'" ',1)]),_:1}),(r(),b(ue(s.myComponent),{vehicleId:g.vehicleId,vehicle:g.vehicle,configuration:g.vehicle.configuration,vehicleType:g.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=v=>s.updateConfiguration(v))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=Z(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+g].name;e.push({value:g,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+g].name;e.push({value:g,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(g=>g.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:g}})},removeChargeTemplateSchedulePlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,g){this.showChargeTemplateSchedulePlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:g}})},removeChargeTemplateTimeChargingPlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,g){this.showChargeTemplateTimeChargingPlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>h("br",null,null,-1)),Ue=f(()=>h("hr",null,null,-1)),Te={key:2},We=f(()=>h("br",null,null,-1)),Le=["innerHTML"],Pe=f(()=>h("hr",null,null,-1)),ye=f(()=>h("br",null,null,-1)),Ae=f(()=>h("br",null,null,-1)),Ee=f(()=>h("br",null,null,-1)),Be={key:3},Fe=f(()=>h("hr",{class:"border-secondary"},null,-1)),qe={key:0},Me={key:1},De=f(()=>h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),Ze={key:0},xe=f(()=>h("br",null,null,-1)),Ne=f(()=>h("br",null,null,-1)),Oe=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Re={key:1},He={key:0},je={key:0},Je={key:3},$e={key:0},Ge={key:1},Qe=f(()=>h("br",null,null,-1)),Xe=f(()=>h("br",null,null,-1)),Ye=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),Ke={key:0},et={key:0},tt={key:0},nt=f(()=>h("hr",null,null,-1)),at=f(()=>h("hr",null,null,-1)),lt=f(()=>h("br",null,null,-1)),it=f(()=>h("br",null,null,-1)),ot=f(()=>h("hr",null,null,-1)),dt=f(()=>h("br",null,null,-1)),rt=f(()=>h("br",null,null,-1)),ut=["onClick"],st={key:0},mt={key:1},ct={key:2},ht={key:3},gt={key:4},pt={key:5},bt={key:4},vt=f(()=>h("hr",null,null,-1)),ft=["onClick"],_t={key:0},wt={key:1},kt={key:2},Vt={key:3},Ct={key:4},St={key:5};function zt(e,d,g,F,_,s){const L=C("openwb-base-modal-dialog"),v=C("font-awesome-icon"),W=C("openwb-base-avatar"),E=C("openwb-base-alert"),U=C("openwb-base-text-input"),M=C("openwb-base-select-input"),I=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),A=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(y,null,[n(L,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",ke,[h("form",Ve,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(v,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(y,null,B(s.vehicleIndexes,i=>(r(),b(A,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),i!==0?(r(),b(U,{key:0,title:"Fahrzeughersteller ","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].manufacturer,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"manufacturer")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),i!==0?(r(),b(U,{key:1,title:"Fahrzeugmodell","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].model,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"model")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht."),ze,l(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),Ue,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!g.installAssistantActive?(r(),c("div",Te,[n(I,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),We,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Le)]),_:1}),Pe])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),ye,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Ee,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Be,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Fe,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Me,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),De,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(y,null,B(s.evTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ze,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),xe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ne,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Oe,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Re,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",je," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",$e,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Ge,[(r(!0),c(y,null,B(s.chargeTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Qe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Xe,Ye]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ke,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",et,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",tt,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),nt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),at,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),it,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),ot,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),dt,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),rt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(y,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",st,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",mt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",ct,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ht,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",gt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ut)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),b(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",pt,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),g.installAssistantActive?m("",!0):(r(),c("div",bt,[vt,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(y,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",wt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",kt,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",Vt,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Ct,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ft)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(U,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",St,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Bt=Z(we,[["render",zt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Bt as default};
diff --git a/web/settings/assets/counter-147bcc09.js b/web/settings/assets/counter-147bcc09.js
deleted file mode 100644
index 76ca2684ec..0000000000
--- a/web/settings/assets/counter-147bcc09.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as l,l as u,D as o,N as s,y as a,x as d,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-counter"},m={class:"small"};function h(e,t,b,g,v,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Zähler "),d("span",m,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{x as default};
diff --git a/web/settings/assets/counter-b75b921d.js b/web/settings/assets/counter-b75b921d.js
new file mode 100644
index 0000000000..05a5a01e7a
--- /dev/null
+++ b/web/settings/assets/counter-b75b921d.js
@@ -0,0 +1 @@
+import{_ as c,u as o,k as d,l as u,D as s,N as a,y as l,x as t,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},h={class:"device-shelly-counter"},f={class:"small"},m=t("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shellys unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM) ",-1),b=t("br",null,null,-1);function g(e,n,y,v,w,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),u("div",h,[s(i,null,{default:a(()=>[l(" Einstellungen für Shelly Zähler "),t("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),s(r,{subtype:"info"},{default:a(()=>[m,b,l(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-68cdbdd8.js b/web/settings/assets/device-68cdbdd8.js
new file mode 100644
index 0000000000..e7f971e12b
--- /dev/null
+++ b/web/settings/assets/device-68cdbdd8.js
@@ -0,0 +1 @@
+import{_,u as t,k as m,l as f,D as n,N as s,y as a,x as h,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceShelly",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-shelly"},y={class:"small"};function w(o,e,l,x,S,d){const r=t("openwb-base-heading"),u=t("openwb-base-alert"),p=t("openwb-base-text-input"),c=t("openwb-base-select-input");return m(),f("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Shelly "),h("span",y,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(u,{subtype:"info"},{default:s(()=>[a(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shellys der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro 3EM, Plug S. ")]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":l.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>d.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),n(c,{title:"Vorzeichen invertieren",notSelected:"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":l.configuration.factor,"onUpdate:modelValue":e[1]||(e[1]=i=>d.updateConfiguration(i,"configuration.factor"))},{help:s(()=>[a(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")]),_:1},8,["model-value"])])}const B=_(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-93d7ec8d.js b/web/settings/assets/device-93d7ec8d.js
deleted file mode 100644
index 485adf8c9c..0000000000
--- a/web/settings/assets/device-93d7ec8d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as o,k as r,l as c,D as a,N as _,y as m,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceShelly",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-shelly"},h={class:"small"};function y(t,e,l,w,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-text-input"),d=o("openwb-base-select-input");return r(),c("div",b,[a(s,null,{default:_(()=>[m(" Einstellungen für Shelly "),f("span",h,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":l.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:1,text:"1 (z.B. Shelly 1pm/ Shelly 3EM/ ...)"},{value:2,text:"2 (z.B. Shelly 1pm plus/ Shelly Pro3EM/ ...)"}],"model-value":l.configuration.generation,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"])])}const C=p(v,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/electricity_tariff-78c8d847.js b/web/settings/assets/electricity_tariff-1126e706.js
similarity index 97%
rename from web/settings/assets/electricity_tariff-78c8d847.js
rename to web/settings/assets/electricity_tariff-1126e706.js
index 06ef5158fe..b34cc58dda 100644
--- a/web/settings/assets/electricity_tariff-78c8d847.js
+++ b/web/settings/assets/electricity_tariff-1126e706.js
@@ -1 +1 @@
-import{C as p}from"./index-0deee932.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
+import{C as p}from"./index-068b063d.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
diff --git a/web/settings/assets/index-0deee932.js b/web/settings/assets/index-068b063d.js
similarity index 96%
rename from web/settings/assets/index-0deee932.js
rename to web/settings/assets/index-068b063d.js
index 8662cd87c7..220bd65a2e 100644
--- a/web/settings/assets/index-0deee932.js
+++ b/web/settings/assets/index-068b063d.js
@@ -1 +1 @@
-import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-0e0f6b66.js"),["assets/Status-0e0f6b66.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-bb7dcf68.js"),["assets/ChargeLog-bb7dcf68.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-b41732de.js"),["assets/Chart-b41732de.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-45cfd7f0.js"),["assets/GeneralConfig-45cfd7f0.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-d3fca35b.js"),["assets/OptionalComponents-d3fca35b.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-d9dcaaa3.js"),["assets/GeneralChargeConfig-d9dcaaa3.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-f62c6c62.js"),["assets/InstantChargeConfig-f62c6c62.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-a0353b9a.js"),["assets/PVChargeConfig-a0353b9a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-387e7031.js"),["assets/TimeChargeConfig-387e7031.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-cb777801.js"),["assets/ScheduledChargeConfig-cb777801.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-2c12edbc.js"),["assets/HardwareInstallation-2c12edbc.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-6b31901e.js"),["assets/LoadManagementConfig-6b31901e.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-05b3f352.js"),["assets/ChargePointInstallation-05b3f352.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-a1751954.js"),["assets/VehicleConfig-a1751954.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-fe40cc84.js"),["assets/CloudConfig-fe40cc84.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-f457be0c.js"),["assets/MqttBridgeConfig-f457be0c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-8124d78c.js"),["assets/DebugConfig-8124d78c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-89c6cc7c.js"),["assets/Support-89c6cc7c.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-30e95de5.js"),["assets/LegalSettings-30e95de5.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-d59d61b7.js"),["assets/System-d59d61b7.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-5a70f628.js"),["assets/DataManagement-5a70f628.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-6dafed2f.js"),["assets/InstallAssistant-6dafed2f.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-a904ffb0.js"),["assets/TestingStore-a904ffb0.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
+import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-c3faa234.js"),["assets/Status-c3faa234.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-6b2cc49d.js"),["assets/ChargeLog-6b2cc49d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-3cf86dec.js"),["assets/Chart-3cf86dec.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-9529e63d.js"),["assets/GeneralConfig-9529e63d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-40d19b76.js"),["assets/OptionalComponents-40d19b76.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-67ad6713.js"),["assets/GeneralChargeConfig-67ad6713.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-3316e506.js"),["assets/InstantChargeConfig-3316e506.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-0d060176.js"),["assets/PVChargeConfig-0d060176.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-182836cc.js"),["assets/TimeChargeConfig-182836cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-4e583e67.js"),["assets/ScheduledChargeConfig-4e583e67.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-dd85fd7a.js"),["assets/HardwareInstallation-dd85fd7a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-755ca06f.js"),["assets/LoadManagementConfig-755ca06f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-4fc37543.js"),["assets/ChargePointInstallation-4fc37543.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-ee86d81f.js"),["assets/VehicleConfig-ee86d81f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-cb19843a.js"),["assets/CloudConfig-cb19843a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-94739887.js"),["assets/MqttBridgeConfig-94739887.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-40886be8.js"),["assets/DebugConfig-40886be8.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-48f5d97a.js"),["assets/Support-48f5d97a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-63440fac.js"),["assets/LegalSettings-63440fac.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-d516542d.js"),["assets/System-d516542d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-10c6dd29.js"),["assets/DataManagement-10c6dd29.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-ce6c9cb7.js"),["assets/InstallAssistant-ce6c9cb7.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-af0aad03.js"),["assets/TestingStore-af0aad03.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
diff --git a/web/settings/assets/vehicle-d38b53d4.js b/web/settings/assets/vehicle-060018aa.js
similarity index 97%
rename from web/settings/assets/vehicle-d38b53d4.js
rename to web/settings/assets/vehicle-060018aa.js
index 3c933f76c1..dc1f0b06a7 100644
--- a/web/settings/assets/vehicle-d38b53d4.js
+++ b/web/settings/assets/vehicle-060018aa.js
@@ -1 +1 @@
-import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-0deee932.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
+import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-068b063d.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/index.html b/web/settings/index.html
index 9621f866b3..e13e099c9a 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -7,7 +7,7 @@
 	<meta name="viewport" content="width=device-width,initial-scale=1.0">
 	<link rel="icon" href="/openWB/web/settings/favicon.ico">
 	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-0deee932.js"></script>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-068b063d.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-2f1828d0.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-f2b8aa6f.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-71546160.js">

From 386e5ae1cc969c159a6751ce8d8b55bb76250d2d Mon Sep 17 00:00:00 2001
From: ndrsnhs <156670705+ndrsnhs@users.noreply.github.com>
Date: Wed, 25 Sep 2024 12:02:37 +0200
Subject: [PATCH 085/205] Improve sungrow (#1899)

* improve sungrow

* fix imports
---
 .../modules/devices/sungrow/sungrow/bat.py    | 29 ++++++++++++++-----
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/packages/modules/devices/sungrow/sungrow/bat.py b/packages/modules/devices/sungrow/sungrow/bat.py
index 3b73669906..1c42d1d99d 100644
--- a/packages/modules/devices/sungrow/sungrow/bat.py
+++ b/packages/modules/devices/sungrow/sungrow/bat.py
@@ -6,10 +6,11 @@
 from modules.common.component_state import BatState
 from modules.common.component_type import ComponentDescriptor
 from modules.common.fault_state import ComponentInfo, FaultState
-from modules.common.modbus import ModbusDataType
+from modules.common.modbus import ModbusDataType, Endian
 from modules.common.simcount import SimCounter
 from modules.common.store import get_bat_value_store
 from modules.devices.sungrow.sungrow.config import SungrowBatSetup, Sungrow
+from modules.devices.sungrow.sungrow.version import Version
 
 
 class SungrowBat:
@@ -27,15 +28,27 @@ def __init__(self,
     def update(self) -> None:
         unit = self.device_config.configuration.modbus_id
         soc = int(self.__tcp_client.read_input_registers(13022, ModbusDataType.INT_16, unit=unit) / 10)
-        resp = self.__tcp_client._delegate.read_input_registers(13000, 1, unit=unit)
-        binary = bin(resp.registers[0])[2:].zfill(8)
-        power = self.__tcp_client.read_input_registers(13021, ModbusDataType.INT_16, unit=unit)
-        if binary[5] == "1":
-            power = power * -1
+        bat_power = self.__tcp_client.read_input_registers(13021, ModbusDataType.INT_16, unit=unit)
 
-        imported, exported = self.sim_counter.sim_count(power)
+        # Beim WiNet S-Dongle fehlt das Register für das Vorzeichen der Speicherleistung
+        if self.device_config.configuration.version == Version.SH_winet_dongle:
+            total_power = self.__tcp_client.read_input_registers(13033, ModbusDataType.INT_32,
+                                                                 wordorder=Endian.Little, unit=unit)
+            pv_power = self.__tcp_client.read_input_registers(5016, ModbusDataType.UINT_32,
+                                                              wordorder=Endian.Little, unit=unit)
+
+            # Ist die Gesamtleistung des WR größer als die PV-Erzeugung wird der Speicher entladen
+            if total_power > pv_power:
+                bat_power = bat_power * -1
+        else:
+            resp = self.__tcp_client._delegate.read_input_registers(13000, 1, unit=unit)
+            binary = bin(resp.registers[0])[2:].zfill(8)
+            if binary[5] == "1":
+                bat_power = bat_power * -1
+
+        imported, exported = self.sim_counter.sim_count(bat_power)
         bat_state = BatState(
-            power=power,
+            power=bat_power,
             soc=soc,
             imported=imported,
             exported=exported

From f382cd46ab0acb7b17856b5a95c4986b3d3a2f4a Mon Sep 17 00:00:00 2001
From: Thomas Papendieck <14850347+tpd-opitz@users.noreply.github.com>
Date: Wed, 25 Sep 2024 15:00:58 +0200
Subject: [PATCH 086/205] fix: grid part in consumption (#1799)

* fix: grid part in consumption

- resolve variable assess before declaration
- resolve odd ball solution

* remove empty line

* fix: adopt different structure of counters

* revert refactoring, just fix missing declartion

expected to have one counter only, last counter will be included in calculation

* raise exception when no grid counter found

* fix return type syntax

* fix filter syntax

* fix spelling Tuple

* fix indentation

* fix no space in empty lines

* fix counter list access
---
 .../measurement_logging/process_log.py            | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py
index 72f1583c68..4a2dfc3ca6 100644
--- a/packages/helpermodules/measurement_logging/process_log.py
+++ b/packages/helpermodules/measurement_logging/process_log.py
@@ -383,18 +383,19 @@ def _analyse_energy_source(data) -> Dict:
 def analyse_percentage(entry):
     def format(value):
         return round(value, 4)
+
+    def get_grid_from(entry) -> Tuple[float, float]:
+        grids = [counter for counter in entry["counter"].values() if counter.get("grid")]
+        if not grids:
+            raise KeyError(f"Kein Zähler für das Netz gefunden in Eintrag '{entry['timestamp']}'.")
+        return sum(grid["energy_imported"] for grid in grids), sum(grid["energy_exported"] for grid in grids)
+
     try:
         bat_imported = entry["bat"]["all"]["energy_imported"] if "all" in entry["bat"].keys() else 0
         bat_exported = entry["bat"]["all"]["energy_exported"] if "all" in entry["bat"].keys() else 0
         cp_exported = entry["cp"]["all"]["energy_exported"] if "all" in entry["cp"].keys() else 0
         pv = entry["pv"]["all"]["energy_exported"] if "all" in entry["pv"].keys() else 0
-        for counter in entry["counter"].values():
-            if counter.get("grid") is None:
-                return
-            # ToDo: add "grid" to old data in update_config.py
-            if counter["grid"]:
-                grid_imported = counter["energy_imported"]
-                grid_exported = counter["energy_exported"]
+        grid_imported, grid_exported = get_grid_from(entry)
         consumption = grid_imported - grid_exported + pv + bat_exported - bat_imported + cp_exported
         try:
             if grid_exported > pv:

From 5b3c110fa03d14cccd4adcc5d04f2a069b7d3b3d Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 25 Sep 2024 15:18:09 +0200
Subject: [PATCH 087/205] Use create device 4: sunways, tasmota, tesla,
 victron, virtual (#1787)

* sunways

* tasmota

* tesla

* tesla remove cookie file

* fix tesla test

* victron

* virtual

* flake8
---
 .../modules/devices/generic/virtual/device.py |  55 ++---
 .../modules/devices/sunways/sunways/device.py |  93 ++------
 .../modules/devices/tasmota/tasmota/device.py |  91 ++------
 .../modules/devices/tesla/tesla/device.py     | 204 ++++++------------
 .../devices/tesla/tesla/http_client.py        |   4 +-
 .../modules/devices/tesla/tesla/tesla_test.py |  51 +----
 .../modules/devices/victron/victron/device.py | 137 ++++--------
 7 files changed, 155 insertions(+), 480 deletions(-)

diff --git a/packages/modules/devices/generic/virtual/device.py b/packages/modules/devices/generic/virtual/device.py
index 8a313fb0cb..47e1c2e67b 100644
--- a/packages/modules/devices/generic/virtual/device.py
+++ b/packages/modules/devices/generic/virtual/device.py
@@ -1,53 +1,24 @@
 import logging
-from typing import Dict, Union
 
-from dataclass_utils import dataclass_from_dict
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
 from modules.devices.generic.virtual.config import Virtual, VirtualCounterSetup
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.generic.virtual import counter
+from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.generic.virtual.counter import VirtualCounter
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "counter": counter.VirtualCounter
-    }
-    COMPONENT_TYPE_TO_MODULE = {
-        "counter": counter
-    }
+def create_device(device_config: Virtual):
+    def create_counter_component(component_config: VirtualCounterSetup):
+        return VirtualCounter(device_config.id, component_config)
 
-    def __init__(self, device_config: Union[Dict, Virtual]) -> None:
-        self.components = {}  # type: Dict[str, counter.VirtualCounter]
-        try:
-            self.device_config = dataclass_from_dict(Virtual, device_config)
-        except Exception:
-            log.exception("Fehler im Modul " + self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, VirtualCounterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(self.COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config))
-
-    def update(self) -> None:
-        log.debug("Start device reading" + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            counter=create_counter_component,
+        ),
+        component_updater=IndependentComponentUpdater(lambda component: component.update())
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Virtual)
diff --git a/packages/modules/devices/sunways/sunways/device.py b/packages/modules/devices/sunways/sunways/device.py
index bb0f07f599..9844567d22 100644
--- a/packages/modules/devices/sunways/sunways/device.py
+++ b/packages/modules/devices/sunways/sunways/device.py
@@ -1,90 +1,27 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Optional, List, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.sunways.sunways import inverter
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
 from modules.devices.sunways.sunways.config import Sunways, SunwaysInverterSetup
+from modules.devices.sunways.sunways.inverter import SunwaysInverter
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "inverter": inverter.SunwaysInverter
-    }
+def create_device(device_config: Sunways):
+    def create_inverter_component(component_config: SunwaysInverterSetup):
+        return SunwaysInverter(component_config,
+                               device_config.configuration.ip_address,
+                               device_config.configuration.password)
 
-    def __init__(self, device_config: Union[Dict, Sunways]) -> None:
-        self.components = {}  # type: Dict[str, inverter.SunwaysInverter]
-        try:
-            self.device_config = dataclass_from_dict(Sunways, device_config)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, SunwaysInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = self.COMPONENT_TYPE_TO_CLASS[component_type](
-                component_config,
-                self.device_config.configuration.ip_address,
-                self.device_config.configuration.password)
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine oder zu viele Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str, ip_address: str, password: str, num: Optional[int] = None) -> None:
-
-    device_config = Sunways()
-    device_config.configuration.ip_address = ip_address
-    device_config.configuration.password = password
-    dev = Device(device_config)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-
-    log.debug('Sunways IP-Adresse: ' + ip_address)
-    log.debug('Sunways Passwort: ' + password)
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            inverter=create_inverter_component,
+        ),
+        component_updater=IndependentComponentUpdater(lambda component: component.update())
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Sunways)
diff --git a/packages/modules/devices/tasmota/tasmota/device.py b/packages/modules/devices/tasmota/tasmota/device.py
index 7c014d5262..d571ad3847 100644
--- a/packages/modules/devices/tasmota/tasmota/device.py
+++ b/packages/modules/devices/tasmota/tasmota/device.py
@@ -1,85 +1,28 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Optional, List, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.devices.tasmota.tasmota import counter
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
 from modules.devices.tasmota.tasmota.config import Tasmota, TasmotaCounterSetup
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.abstract_device import DeviceDescriptor
+from modules.devices.tasmota.tasmota.counter import TasmotaCounter
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "counter": counter.TasmotaCounter,
-    }
-
-    def __init__(self, device_config: Union[Dict, Tasmota]) -> None:
-        self.components = {}  # type: Dict[str, counter.TasmotaCounter]
-        try:
-            self.device_config = dataclass_from_dict(Tasmota, device_config)
-            self.ip_address = self.device_config.configuration.ip_address
-            self.phase = int(self.device_config.configuration.phase)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, TasmotaCounterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config, self.ip_address, self.phase)
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        if self.components:
-            for component in self.components:
-                # with SingleComponentUpdateContext(self.components[component].component_info):
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "counter": counter
-}
-
-
-def read_legacy(component_type: str, ip_address: str, phase: str, num: Optional[int] = None) -> None:
-    device_config = Tasmota()
-    device_config.configuration.ip_address = ip_address
-    device_config.configuration.phase = int(phase)
-    dev = Device(device_config)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+def create_device(device_config: Tasmota):
+    def create_counter_component(component_config: TasmotaCounterSetup):
+        return TasmotaCounter(device_config.id,
+                              component_config,
+                              device_config.configuration.ip_address,
+                              int(device_config.configuration.phase))
+
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            counter=create_counter_component,
+        ),
+        component_updater=IndependentComponentUpdater(lambda component: component.update())
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Tasmota)
diff --git a/packages/modules/devices/tesla/tesla/device.py b/packages/modules/devices/tesla/tesla/device.py
index 671dc7ea9d..0d6bbd2d61 100644
--- a/packages/modules/devices/tesla/tesla/device.py
+++ b/packages/modules/devices/tesla/tesla/device.py
@@ -1,163 +1,85 @@
 #!/usr/bin/env python3
-import json
 import logging
 import requests
-from json import JSONDecodeError
 from requests import HTTPError
-from typing import Callable, Dict, Union, Optional, List
+from typing import Iterable, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import MultiComponentUpdateContext
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.common.req import get_http_session
-from modules.common.store import RAMDISK_PATH
-from modules.devices.tesla.tesla import bat, counter, inverter
+from modules.devices.tesla.tesla.bat import TeslaBat
 from modules.devices.tesla.tesla.config import Tesla, TeslaBatSetup, TeslaCounterSetup, TeslaInverterSetup
+from modules.devices.tesla.tesla.counter import TeslaCounter
 from modules.devices.tesla.tesla.http_client import PowerwallHttpClient
+from modules.devices.tesla.tesla.inverter import TeslaInverter
 
 log = logging.getLogger(__name__)
 
 
-UpdateFunction = Callable[[PowerwallHttpClient], None]
-COOKIE_FILE = RAMDISK_PATH / "powerwall_cookie.txt"
-tesla_component_classes = Union[bat.TeslaBat, counter.TeslaCounter, inverter.TeslaInverter]
+def __update_components(client: PowerwallHttpClient,
+                        components: Iterable[Union[TeslaBat, TeslaCounter, TeslaInverter]]):
+    aggregate = client.get_json("/api/meters/aggregates")
+    for component in components:
+        component.update(client, aggregate)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.TeslaBat,
-        "counter": counter.TeslaCounter,
-        "inverter": inverter.TeslaInverter
-    }
+def _authenticate(session: requests.Session, url: str, email: str, password: str):
+    """
+    email is not yet required for login (2022/01), but we simulate the whole login page
+    """
+    response = session.post(
+        "https://" + url + "/api/login/Basic",
+        json={"username": "customer", "email": email, "password": password, "force_sm_off": False},
+        verify=False,
+        timeout=5
+    )
+    log.debug("Authentication endpoint send cookies %s", str(response.cookies))
+    return {"AuthCookie": response.cookies["AuthCookie"], "UserRecord": response.cookies["UserRecord"]}
 
-    def __init__(self, device_config: Union[Dict, Tesla]) -> None:
-        self.components = {}  # type: Dict[str, tesla_component_classes]
-        try:
-            self.device_config = dataclass_from_dict(Tesla, device_config)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict,
-                                                    TeslaBatSetup,
-                                                    TeslaCounterSetup,
-                                                    TeslaInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                component_config))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Beginning update")
-        cookies = None
-        address = self.device_config.configuration.ip_address
-        email = self.device_config.configuration.email
-        password = self.device_config.configuration.password
-        with MultiComponentUpdateContext(self.components):
-            try:
-                cookies = json.loads(COOKIE_FILE.read_text())
-            except FileNotFoundError:
-                log.debug("Cookie-File <%s> does not exist. It will be created.", COOKIE_FILE)
-            except JSONDecodeError:
-                log.warning("Could not parse Cookie-File "+str(COOKIE_FILE)+". It will be re-created.", exc_info=True)
-
-            session = get_http_session()
-            if cookies is None:
-                self.__authenticate_and_update(session, address, email, password, self.__update_components)
-                return
-            try:
-                self.__update_components(PowerwallHttpClient(address, session, cookies))
-                return
-            except HTTPError as e:
-                if e.response.status_code != 401 and e.response.status_code != 403:
-                    raise e
-                log.warning(
-                    "Login to powerwall with existing cookie failed. Will retry with new cookie...")
-            self.__authenticate_and_update(session, address, email, password, self.__update_components)
-            log.debug("Update completed successfully")
-
-    def __update_components(self, client: PowerwallHttpClient):
-        if self.components:
-            aggregate = client.get_json("/api/meters/aggregates")
-            for component in self.components:
-                self.components[component].update(client, aggregate)
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-    def __authenticate(self, session: requests.Session, url: str, email: str, password: str):
-        """
-        email is not yet required for login (2022/01), but we simulate the whole login page
-        """
-        response = session.post(
-            "https://" + url + "/api/login/Basic",
-            json={"username": "customer", "email": email, "password": password, "force_sm_off": False},
-            verify=False,
-            timeout=5
-        )
-        log.debug("Authentication endpoint send cookies %s", str(response.cookies))
-        return {"AuthCookie": response.cookies["AuthCookie"], "UserRecord": response.cookies["UserRecord"]}
-
-    def __authenticate_and_update(self,
-                                  session: requests.Session,
-                                  address: str,
-                                  email: str,
-                                  password: str,
-                                  update_function: UpdateFunction):
-        cookie = self.__authenticate(session, address, email, password)
-        COOKIE_FILE.write_text(json.dumps(cookie))
-        update_function(PowerwallHttpClient(address, session, cookie))
 
+def create_device(device_config: Tesla):
+    def create_bat_component(component_config: TeslaBatSetup):
+        return TeslaBat(component_config)
 
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "counter": counter,
-    "inverter": inverter
-}
+    def create_counter_component(component_config: TeslaCounterSetup):
+        return TeslaCounter(component_config)
 
+    def create_inverter_component(component_config: TeslaInverterSetup):
+        return TeslaInverter(component_config)
 
-def read_legacy(component_type: str,
-                address: str,
-                email: str,
-                password: str,
-                num: Optional[int] = None) -> None:
-    device_config = Tesla()
-    device_config.configuration.ip_address = address
-    device_config.configuration.email = email
-    device_config.configuration.password = password
-
-    dev = Device(device_config)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-
-    log.debug('Tesla Powerwall IP-Adresse: ' + address)
-    log.debug('Tesla Powerwall Mail-Adresse: ' + email)
-    log.debug('Tesla Powerwall Passwort: ' + password)
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+    def update_components(components: Iterable[Union[TeslaBat, TeslaCounter, TeslaInverter]]):
+        log.debug("Beginning update")
+        nonlocal http_client
+        address = device_config.configuration.ip_address
+        email = device_config.configuration.email
+        password = device_config.configuration.password
+
+        if http_client.cookies is None:
+            http_client.cookies = _authenticate(session, address, email, password)
+            __update_components(http_client, components)
+            return
+        try:
+            __update_components(http_client, components)
+            return
+        except HTTPError as e:
+            if e.response.status_code != 401 and e.response.status_code != 403:
+                raise e
+            log.warning("Login to powerwall with existing cookie failed. Will retry with new cookie...")
+        http_client.cookies = _authenticate(session, address, email, password)
+        __update_components(http_client, components)
+        log.debug("Update completed successfully")
+
+    session = get_http_session()
+    http_client = PowerwallHttpClient(device_config.configuration.ip_address, session, None)
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Tesla)
diff --git a/packages/modules/devices/tesla/tesla/http_client.py b/packages/modules/devices/tesla/tesla/http_client.py
index e9653d12c6..f02eb15094 100644
--- a/packages/modules/devices/tesla/tesla/http_client.py
+++ b/packages/modules/devices/tesla/tesla/http_client.py
@@ -4,9 +4,9 @@
 class PowerwallHttpClient:
     def __init__(self, host: str, session: requests.Session, cookies):
         self.__base_url = "https://" + host
-        self.__cookies = cookies
+        self.cookies = cookies
         self.__session = session
 
     def get_json(self, relative_url: str):
         url = self.__base_url + relative_url
-        return self.__session.get(url, cookies=self.__cookies, verify=False, timeout=5).json()
+        return self.__session.get(url, cookies=self.cookies, verify=False, timeout=5).json()
diff --git a/packages/modules/devices/tesla/tesla/tesla_test.py b/packages/modules/devices/tesla/tesla/tesla_test.py
index 36d7ef57ec..249c3a923d 100644
--- a/packages/modules/devices/tesla/tesla/tesla_test.py
+++ b/packages/modules/devices/tesla/tesla/tesla_test.py
@@ -1,15 +1,14 @@
-import json
 from unittest.mock import Mock
 
-import pytest
 import requests
 import requests_mock
 
+from modules.common.configurable_device import ConfigurableDevice
 from modules.devices.tesla.tesla import bat
-from modules.devices.tesla.tesla.device import Device, Tesla
+from modules.devices.tesla.tesla import device
+from modules.devices.tesla.tesla.device import Tesla, create_device
 from modules.common.component_state import BatState
 from modules.devices.tesla.tesla.config import TeslaConfiguration
-from test_utils.mock_ramdisk import MockRamdisk
 
 sample_soe_json = """{"percentage":69.16}"""
 
@@ -116,12 +115,12 @@
 }"""
 
 
-def setup_battery_component() -> Device:
+def setup_battery_component() -> ConfigurableDevice:
     device_config = Tesla(configuration=TeslaConfiguration(
         ip_address="sample-address",
         email="sample@mail.com",
         password="some password"))
-    dev = Device(device_config)
+    dev = create_device(device_config)
     dev.add_component(bat.component_descriptor.configuration_factory())
     return dev
 
@@ -134,11 +133,6 @@ def match_cookie_reject(request: requests.PreparedRequest):
     return not match_cookie_ok(request)
 
 
-@pytest.fixture
-def mock_ramdisk(monkeypatch):
-    return MockRamdisk(monkeypatch)
-
-
 API_URL = "https://sample-address/api"
 COOKIE_FILE_NAME = "powerwall_cookie.txt"
 
@@ -150,7 +144,7 @@ def assert_battery_state_correct(state: BatState):
     assert state.exported == 1169030
 
 
-def test_powerwall_update_if_cookie_cached(monkeypatch, requests_mock: requests_mock.Mocker, mock_ramdisk: MockRamdisk):
+def test_powerwall_update_if_cookie_cached(monkeypatch, requests_mock: requests_mock.Mocker):
     # setup
     mock_bat_value_store = Mock()
     monkeypatch.setattr(bat, "get_bat_value_store", Mock(return_value=mock_bat_value_store))
@@ -158,40 +152,11 @@ def test_powerwall_update_if_cookie_cached(monkeypatch, requests_mock: requests_
                       additional_matcher=match_cookie_ok)
     requests_mock.get("https://sample-address/api/system_status/soe", text=sample_soe_json,
                       additional_matcher=match_cookie_ok)
-    mock_ramdisk[COOKIE_FILE_NAME] = """{"AuthCookie": "auth-cookie", "UserRecord": "user-record"}"""
-
-    # execution
-    setup_battery_component().update()
-
-    # evaluation
-    assert_battery_state_correct(mock_bat_value_store.set.call_args[0][0])
-
-
-@pytest.mark.parametrize(
-    "cookie_file", [
-        pytest.param("""{"AuthCookie": "reject-me", "UserRecord": "user-record"}""", id="expired cookie"),
-        pytest.param("""{this is not valid json}""", id="garbage file"),
-        pytest.param(None, id="no cookie file")
-    ]
-)
-def test_powerwall_update_retrieves_new_cookie_if_cookie_rejected(monkeypatch,
-                                                                  requests_mock: requests_mock.Mocker,
-                                                                  mock_ramdisk: MockRamdisk,
-                                                                  cookie_file: str):
-    # setup
-    mock_bat_value_store = Mock()
-    monkeypatch.setattr(bat, "get_bat_value_store", Mock(return_value=mock_bat_value_store))
-    requests_mock.post(API_URL + "/login/Basic", cookies={"AuthCookie": "auth-cookie", "UserRecord": "user-record"})
-    requests_mock.get(API_URL + "/meters/aggregates", status_code=401, additional_matcher=match_cookie_reject)
-    requests_mock.get(API_URL + "/system_status/soe", status_code=401, additional_matcher=match_cookie_reject)
-    requests_mock.get(API_URL + "/meters/aggregates", text=sample_aggregates_json, additional_matcher=match_cookie_ok)
-    requests_mock.get(API_URL + "/system_status/soe", text=sample_soe_json, additional_matcher=match_cookie_ok)
-    if cookie_file is not None:
-        mock_ramdisk[COOKIE_FILE_NAME] = cookie_file
+    authenticate_mock = Mock(return_value={"AuthCookie": "auth-cookie", "UserRecord": "user-record"})
+    monkeypatch.setattr(device, "_authenticate", authenticate_mock)
 
     # execution
     setup_battery_component().update()
 
     # evaluation
-    assert json.loads(mock_ramdisk[COOKIE_FILE_NAME]) == {"AuthCookie": "auth-cookie", "UserRecord": "user-record"}
     assert_battery_state_correct(mock_bat_value_store.set.call_args[0][0])
diff --git a/packages/modules/devices/victron/victron/device.py b/packages/modules/devices/victron/victron/device.py
index 5a73490459..4c91665ab8 100644
--- a/packages/modules/devices/victron/victron/device.py
+++ b/packages/modules/devices/victron/victron/device.py
@@ -1,112 +1,49 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Optional, Union, List
+from typing import Iterable, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.victron.victron import bat
-from modules.devices.victron.victron import counter
-from modules.devices.victron.victron import inverter
+
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.common.modbus import ModbusTcpClient_
+from modules.devices.victron.victron.bat import VictronBat
 from modules.devices.victron.victron.config import Victron, VictronBatSetup, VictronCounterSetup, VictronInverterSetup
+from modules.devices.victron.victron.counter import VictronCounter
+from modules.devices.victron.victron.inverter import VictronInverter
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.VictronBat,
-        "counter": counter.VictronCounter,
-        "inverter": inverter.VictronInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, Victron]) -> None:
-        self.components = {}  # type: Dict[str, Union[bat.VictronBat, counter.VictronCounter]]
-        try:
-            self.device_config = dataclass_from_dict(Victron, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict,
-                                                    VictronBatSetup,
-                                                    VictronCounterSetup,
-                                                    VictronInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (
-                self.COMPONENT_TYPE_TO_CLASS[component_type](self.device_config.id, component_config, self.client))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(
-        component_type: str,
-        ip_address: str,
-        modbus_id: Optional[int] = 100,
-        energy_meter: Optional[int] = 1,
-        mppt: Optional[int] = 0,
-        num: Optional[int] = None) -> None:
-
-    device_config = Victron()
-    device_config.configuration.ip_address = ip_address
-    dev = Device(device_config)
-
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-        if component_type == "counter":
-            component_config.configuration.energy_meter = bool(energy_meter)
-        elif component_type == "inverter":
-            component_config.configuration.mppt = mppt
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    component_config.configuration.modbus_id = modbus_id
-    dev.add_component(component_config)
-
-    log.debug('Victron IP-Adresse: ' + ip_address)
-    log.debug('Victron Energy Meter: ' + str(bool(energy_meter)))
-    log.debug('Victron Modbus-ID: ' + str(modbus_id))
-    log.debug('Victron MPPT: ' + str(mppt))
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+def create_device(device_config: Victron):
+    def create_bat_component(component_config: VictronBatSetup):
+        return VictronBat(device_config.id, component_config, client)
+
+    def create_counter_component(component_config: VictronCounterSetup):
+        return VictronCounter(device_config.id, component_config, client)
+
+    def create_inverter_component(component_config: VictronInverterSetup):
+        return VictronInverter(device_config.id, component_config, client)
+
+    def update_components(components: Iterable[Union[VictronBat, VictronCounter, VictronInverter]]):
+        with client as c:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update(c)
+
+    try:
+        client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Victron)

From 97969e23b2787b347074a2561e91f50e5e6bb0e5 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Thu, 26 Sep 2024 07:58:11 +0200
Subject: [PATCH 088/205] build settings

---
 .../assets/{ChargeLog-6b2cc49d.js => ChargeLog-f3c14ea7.js}     | 2 +-
 web/settings/assets/ChargePointInstallation-4fc37543.js         | 1 -
 web/settings/assets/ChargePointInstallation-fba1b24e.js         | 1 +
 web/settings/assets/{Chart-3cf86dec.js => Chart-0ed3fc8e.js}    | 2 +-
 .../assets/{CloudConfig-cb19843a.js => CloudConfig-5ecdadd6.js} | 2 +-
 web/settings/assets/DataManagement-10c6dd29.js                  | 1 -
 web/settings/assets/DataManagement-eb2fc5d7.js                  | 1 +
 .../assets/{DebugConfig-40886be8.js => DebugConfig-4a040dc7.js} | 2 +-
 web/settings/assets/GeneralChargeConfig-4b985756.js             | 1 +
 web/settings/assets/GeneralChargeConfig-67ad6713.js             | 1 -
 web/settings/assets/GeneralConfig-1396a845.js                   | 1 +
 web/settings/assets/GeneralConfig-9529e63d.js                   | 1 -
 web/settings/assets/HardwareInstallation-a0083e3a.js            | 1 +
 web/settings/assets/HardwareInstallation-dd85fd7a.js            | 1 -
 ...nstallAssistant-ce6c9cb7.js => InstallAssistant-e098a326.js} | 2 +-
 ...stantStep0-431f88fd.js => InstallAssistantStep0-3aacc430.js} | 2 +-
 web/settings/assets/InstallAssistantStep1-30da7200.js           | 1 -
 web/settings/assets/InstallAssistantStep1-92925871.js           | 1 +
 ...antStep10-b816c6c6.js => InstallAssistantStep10-a0cc0c5c.js} | 2 +-
 ...stantStep2-c6a872c9.js => InstallAssistantStep2-5a5716af.js} | 2 +-
 web/settings/assets/InstallAssistantStep3-433c8ac0.js           | 1 +
 web/settings/assets/InstallAssistantStep3-c18ad6b3.js           | 1 -
 web/settings/assets/InstallAssistantStep4-082fc830.js           | 1 +
 web/settings/assets/InstallAssistantStep4-afb36773.js           | 1 -
 web/settings/assets/InstallAssistantStep5-86511db2.js           | 1 +
 web/settings/assets/InstallAssistantStep5-87ff5089.js           | 1 -
 web/settings/assets/InstallAssistantStep6-40f3e62a.js           | 1 +
 web/settings/assets/InstallAssistantStep6-db3c77b6.js           | 1 -
 ...stantStep7-4abd3c6f.js => InstallAssistantStep7-b99ff659.js} | 2 +-
 web/settings/assets/InstallAssistantStep8-1d34ec58.js           | 1 -
 web/settings/assets/InstallAssistantStep8-a481c31b.js           | 1 +
 web/settings/assets/InstallAssistantStep9-03bed1b3.js           | 1 -
 web/settings/assets/InstallAssistantStep9-df6f7a62.js           | 1 +
 ...ate-cb1e241d.js => InstallAssistantStepTemplate-b7a8caa2.js} | 2 +-
 ...ChargeConfig-3316e506.js => InstantChargeConfig-13725bb2.js} | 2 +-
 .../{LegalSettings-63440fac.js => LegalSettings-c607b1a5.js}    | 2 +-
 ...ementConfig-755ca06f.js => LoadManagementConfig-5e0d6325.js} | 2 +-
 ...qttBridgeConfig-94739887.js => MqttBridgeConfig-4de54ead.js} | 2 +-
 web/settings/assets/OptionalComponents-40d19b76.js              | 2 --
 web/settings/assets/OptionalComponents-963feb73.js              | 2 ++
 web/settings/assets/PVChargeConfig-0d060176.js                  | 1 -
 web/settings/assets/PVChargeConfig-cce066fd.js                  | 1 +
 ...argeConfig-4e583e67.js => ScheduledChargeConfig-a25b4908.js} | 2 +-
 web/settings/assets/{Status-c3faa234.js => Status-f1da0c38.js}  | 2 +-
 .../assets/{Support-48f5d97a.js => Support-5eca5ed7.js}         | 2 +-
 web/settings/assets/{System-d516542d.js => System-c2920436.js}  | 2 +-
 .../{TestingStore-af0aad03.js => TestingStore-1bc32428.js}      | 2 +-
 ...imeChargeConfig-182836cc.js => TimeChargeConfig-46c6427d.js} | 2 +-
 web/settings/assets/VehicleConfig-5050794d.js                   | 1 +
 web/settings/assets/VehicleConfig-ee86d81f.js                   | 1 -
 web/settings/assets/backup_cloud-0c265ebd.js                    | 1 +
 web/settings/assets/backup_cloud-17c766db.js                    | 1 -
 web/settings/assets/backup_cloud-190eaa49.js                    | 1 -
 web/settings/assets/backup_cloud-198617e1.js                    | 1 -
 web/settings/assets/backup_cloud-7c8657cf.js                    | 1 +
 web/settings/assets/backup_cloud-ca22b0b2.js                    | 1 +
 web/settings/assets/backup_cloud-f0bc932b.js                    | 1 -
 web/settings/assets/backup_cloud-f487f6db.js                    | 1 +
 web/settings/assets/bat-037fc88f.js                             | 1 +
 web/settings/assets/bat-0535c59d.js                             | 1 -
 web/settings/assets/bat-053db3b2.js                             | 1 +
 web/settings/assets/bat-11a9e662.js                             | 1 -
 web/settings/assets/bat-1c6c9346.js                             | 1 +
 web/settings/assets/bat-210e6934.js                             | 1 -
 web/settings/assets/bat-22e19627.js                             | 1 -
 web/settings/assets/bat-26612c12.js                             | 1 +
 web/settings/assets/bat-2ad336ba.js                             | 1 +
 web/settings/assets/bat-2ec8a7b2.js                             | 1 -
 web/settings/assets/bat-32c9f6fd.js                             | 1 -
 web/settings/assets/bat-361f190b.js                             | 1 -
 web/settings/assets/bat-3688b404.js                             | 1 +
 web/settings/assets/bat-375e955a.js                             | 1 +
 web/settings/assets/bat-37aa8980.js                             | 1 -
 web/settings/assets/bat-3bf3716c.js                             | 1 +
 web/settings/assets/bat-3e5d89d4.js                             | 1 -
 web/settings/assets/bat-46611da3.js                             | 1 -
 web/settings/assets/bat-4ce133fc.js                             | 1 -
 web/settings/assets/bat-5261b4cb.js                             | 1 +
 web/settings/assets/bat-5a80b300.js                             | 1 -
 web/settings/assets/bat-5bb162c2.js                             | 1 -
 web/settings/assets/bat-5f5ccb07.js                             | 1 -
 web/settings/assets/bat-669886fa.js                             | 1 -
 web/settings/assets/bat-6ec0726a.js                             | 1 -
 web/settings/assets/bat-70713ff4.js                             | 1 -
 web/settings/assets/bat-7a8901e4.js                             | 1 -
 web/settings/assets/bat-7cf44039.js                             | 1 -
 web/settings/assets/bat-7e961860.js                             | 1 -
 web/settings/assets/bat-7f5835ff.js                             | 1 -
 web/settings/assets/bat-84a37ddf.js                             | 1 -
 web/settings/assets/bat-86050b21.js                             | 1 -
 web/settings/assets/bat-862c0f08.js                             | 1 +
 web/settings/assets/bat-86d1c852.js                             | 1 +
 web/settings/assets/bat-93b96b73.js                             | 1 -
 web/settings/assets/bat-960570d8.js                             | 1 -
 web/settings/assets/bat-a2809c14.js                             | 1 -
 web/settings/assets/bat-a51c89dc.js                             | 1 -
 web/settings/assets/bat-a89d2c6d.js                             | 1 -
 web/settings/assets/bat-ab2534e0.js                             | 1 -
 web/settings/assets/bat-afab0752.js                             | 1 +
 web/settings/assets/bat-ba0e681b.js                             | 1 -
 web/settings/assets/bat-c023ee7d.js                             | 1 -
 web/settings/assets/bat-c1bb93e7.js                             | 1 -
 web/settings/assets/bat-c2e3bd93.js                             | 1 -
 web/settings/assets/bat-c566a75f.js                             | 1 +
 web/settings/assets/bat-ca879aa3.js                             | 1 -
 web/settings/assets/bat-cbe7bc84.js                             | 1 +
 web/settings/assets/bat-cc1835de.js                             | 1 +
 web/settings/assets/bat-d04a40d4.js                             | 1 +
 web/settings/assets/bat-da9423e8.js                             | 1 +
 web/settings/assets/bat-e23118da.js                             | 1 +
 web/settings/assets/bat-e2b4a6f2.js                             | 1 -
 web/settings/assets/bat-e4573157.js                             | 1 +
 web/settings/assets/bat-ea7043ef.js                             | 1 -
 web/settings/assets/bat-edeea5ab.js                             | 1 -
 web/settings/assets/bat-f0d9c44f.js                             | 1 -
 web/settings/assets/bat-f21d8d0a.js                             | 1 -
 web/settings/assets/bat-f5f3db47.js                             | 1 +
 web/settings/assets/bat-fae6736a.js                             | 1 -
 web/settings/assets/bat_api-04666400.js                         | 1 -
 web/settings/assets/bat_modbus-ffbf71f1.js                      | 1 -
 web/settings/assets/bat_smart_energy-8a31af27.js                | 1 -
 web/settings/assets/bat_smart_energy-f0537d91.js                | 1 +
 web/settings/assets/chargePoint-0eec3eeb.js                     | 1 -
 web/settings/assets/chargePoint-20a5e448.js                     | 1 -
 web/settings/assets/chargePoint-218a4f96.js                     | 1 +
 web/settings/assets/chargePoint-4b4f3b43.js                     | 1 +
 web/settings/assets/chargePoint-5a865626.js                     | 1 -
 web/settings/assets/chargePoint-756bf3c2.js                     | 1 +
 web/settings/assets/chargePoint-8dec0709.js                     | 1 -
 web/settings/assets/chargePoint-a2f06ead.js                     | 1 +
 web/settings/assets/chargePoint-c6c27c6b.js                     | 1 -
 web/settings/assets/chargePoint-d36f4e64.js                     | 1 +
 web/settings/assets/chargePoint-db6ab728.js                     | 1 +
 web/settings/assets/chargePoint-dd6fab0a.js                     | 1 -
 web/settings/assets/chargePoint-ddcd5f93.js                     | 1 +
 web/settings/assets/chargePoint-f3aa01e8.js                     | 1 -
 web/settings/assets/commands-61e8eed9.js                        | 1 -
 web/settings/assets/commands-f4c13b15.js                        | 1 +
 web/settings/assets/consumption_counter-6e608762.js             | 1 +
 web/settings/assets/consumption_counter-e19fcdd5.js             | 1 -
 web/settings/assets/counter-031b0305.js                         | 1 -
 web/settings/assets/counter-079772c2.js                         | 1 +
 web/settings/assets/counter-0bf7d9a6.js                         | 1 -
 web/settings/assets/counter-0f65c1e3.js                         | 1 -
 web/settings/assets/counter-132a4c95.js                         | 1 -
 web/settings/assets/counter-15bbcc8d.js                         | 1 -
 web/settings/assets/counter-16ad21fd.js                         | 1 -
 web/settings/assets/counter-17ea177d.js                         | 1 -
 web/settings/assets/counter-18ec27d5.js                         | 1 +
 web/settings/assets/counter-2131ddbc.js                         | 1 -
 web/settings/assets/counter-214fbb40.js                         | 1 -
 web/settings/assets/counter-2407fa25.js                         | 1 +
 web/settings/assets/counter-27d4acde.js                         | 1 -
 web/settings/assets/counter-2844dfce.js                         | 1 -
 web/settings/assets/counter-30a3ca76.js                         | 1 -
 web/settings/assets/counter-32ed9eb1.js                         | 1 -
 web/settings/assets/counter-38233839.js                         | 1 +
 web/settings/assets/counter-39a750b6.js                         | 1 -
 web/settings/assets/counter-3b17cd0a.js                         | 1 -
 web/settings/assets/counter-3d61895d.js                         | 1 +
 web/settings/assets/counter-3fc7917c.js                         | 1 +
 web/settings/assets/counter-419f31a5.js                         | 1 -
 web/settings/assets/counter-49277c48.js                         | 1 -
 web/settings/assets/counter-49c86301.js                         | 1 -
 web/settings/assets/counter-4cf113fa.js                         | 1 -
 web/settings/assets/counter-4dcc66e0.js                         | 1 -
 web/settings/assets/counter-4f739eff.js                         | 1 -
 web/settings/assets/counter-51f51be9.js                         | 1 +
 web/settings/assets/counter-55bd9132.js                         | 1 +
 web/settings/assets/counter-5cdd5400.js                         | 1 -
 web/settings/assets/counter-6703f6f0.js                         | 1 -
 web/settings/assets/counter-6a7f6553.js                         | 1 -
 web/settings/assets/counter-70ddc5c4.js                         | 1 +
 web/settings/assets/counter-720f0b7c.js                         | 1 -
 web/settings/assets/counter-761ec99f.js                         | 1 -
 web/settings/assets/counter-776a14ff.js                         | 1 -
 web/settings/assets/counter-7de8fa46.js                         | 1 -
 web/settings/assets/counter-7e9e02b6.js                         | 1 -
 web/settings/assets/counter-809d5a8a.js                         | 1 +
 web/settings/assets/counter-8102691a.js                         | 1 -
 web/settings/assets/counter-851af979.js                         | 1 +
 web/settings/assets/counter-85e02a09.js                         | 1 -
 web/settings/assets/counter-863d779b.js                         | 1 +
 web/settings/assets/counter-899de3b1.js                         | 1 -
 web/settings/assets/counter-8aa3e08a.js                         | 1 -
 web/settings/assets/counter-90d6c411.js                         | 1 -
 web/settings/assets/counter-92895c7b.js                         | 1 +
 web/settings/assets/counter-92dbeb44.js                         | 1 -
 web/settings/assets/counter-963b86e8.js                         | 1 -
 web/settings/assets/counter-9c04d80d.js                         | 1 +
 web/settings/assets/counter-9c0b6f8f.js                         | 1 -
 web/settings/assets/counter-9ca02844.js                         | 1 -
 web/settings/assets/counter-9db4f10d.js                         | 1 -
 web/settings/assets/counter-9dd2e78b.js                         | 1 +
 web/settings/assets/counter-a1a84381.js                         | 1 +
 web/settings/assets/counter-a43b7c84.js                         | 1 -
 web/settings/assets/counter-a51c4464.js                         | 1 +
 web/settings/assets/counter-ae228566.js                         | 1 -
 web/settings/assets/counter-aea90a37.js                         | 1 +
 web/settings/assets/counter-b01202f0.js                         | 1 -
 web/settings/assets/counter-b75b921d.js                         | 1 -
 web/settings/assets/counter-bb7c4b01.js                         | 1 +
 web/settings/assets/counter-bf240441.js                         | 1 -
 web/settings/assets/counter-c0599fe6.js                         | 1 -
 web/settings/assets/counter-c3ed00fb.js                         | 1 +
 web/settings/assets/counter-c4a0dc83.js                         | 1 +
 web/settings/assets/counter-ca9e3fe2.js                         | 1 -
 web/settings/assets/counter-d2cdbd98.js                         | 1 +
 web/settings/assets/counter-d3b3c371.js                         | 1 -
 web/settings/assets/counter-d3c67a64.js                         | 1 -
 web/settings/assets/counter-d7164453.js                         | 1 -
 web/settings/assets/counter-d86757f2.js                         | 1 -
 web/settings/assets/counter-db36cac3.js                         | 1 +
 web/settings/assets/counter-dc109611.js                         | 1 -
 web/settings/assets/counter-ddf406fa.js                         | 1 +
 web/settings/assets/counter-dfc0206c.js                         | 1 +
 web/settings/assets/counter-e17b6711.js                         | 1 +
 web/settings/assets/counter-e525bf90.js                         | 1 +
 web/settings/assets/counter-eacbb4cc.js                         | 1 +
 web/settings/assets/counter-eb577878.js                         | 1 +
 web/settings/assets/counter-f1f7547c.js                         | 1 +
 web/settings/assets/counter-f3a88abe.js                         | 1 +
 web/settings/assets/counter-fa66cb6a.js                         | 1 -
 web/settings/assets/counter-fc3afadd.js                         | 1 +
 web/settings/assets/counter_s0-8459b248.js                      | 1 -
 web/settings/assets/counter_sm-157d8b84.js                      | 1 -
 web/settings/assets/counter_sm-ae20b8ea.js                      | 1 +
 web/settings/assets/device-02184b73.js                          | 1 -
 web/settings/assets/device-06345e49.js                          | 1 -
 web/settings/assets/device-0852663a.js                          | 1 -
 web/settings/assets/device-08fe3db1.js                          | 1 +
 web/settings/assets/device-0a578374.js                          | 1 +
 web/settings/assets/device-0c94f34d.js                          | 1 +
 web/settings/assets/device-0f4599b8.js                          | 1 +
 web/settings/assets/device-1194af1e.js                          | 1 -
 web/settings/assets/device-12c43ff6.js                          | 1 -
 web/settings/assets/device-13ac66a2.js                          | 1 +
 web/settings/assets/device-14134a0e.js                          | 1 -
 web/settings/assets/device-1859f43b.js                          | 1 +
 web/settings/assets/device-191a8f0d.js                          | 1 -
 web/settings/assets/device-1c46f4b0.js                          | 1 +
 web/settings/assets/device-1dbf9864.js                          | 1 -
 web/settings/assets/device-1f0b55db.js                          | 1 +
 web/settings/assets/device-1f5e9c10.js                          | 1 -
 web/settings/assets/device-2004960c.js                          | 1 -
 web/settings/assets/device-25323637.js                          | 1 -
 web/settings/assets/device-29ba5b2b.js                          | 1 -
 web/settings/assets/device-2a05ce83.js                          | 1 -
 web/settings/assets/device-34858026.js                          | 1 -
 web/settings/assets/device-35945559.js                          | 1 -
 web/settings/assets/device-359d7e50.js                          | 1 +
 web/settings/assets/device-38fb8261.js                          | 1 +
 web/settings/assets/device-3b65739e.js                          | 1 +
 web/settings/assets/device-3c0a0263.js                          | 1 +
 web/settings/assets/device-3c779cdd.js                          | 1 +
 web/settings/assets/device-3d9e43fe.js                          | 1 -
 web/settings/assets/device-3e055cd7.js                          | 1 +
 web/settings/assets/device-40b4b0c5.js                          | 1 +
 web/settings/assets/device-4498198c.js                          | 1 +
 web/settings/assets/device-44b38c3f.js                          | 1 +
 web/settings/assets/device-4e84dc20.js                          | 1 -
 web/settings/assets/device-4f252d8d.js                          | 1 -
 web/settings/assets/device-4f7c15a3.js                          | 1 +
 web/settings/assets/device-538ad6e5.js                          | 1 -
 web/settings/assets/device-53c3c990.js                          | 1 -
 web/settings/assets/device-560cda8e.js                          | 1 -
 web/settings/assets/device-56cb9ab9.js                          | 1 -
 web/settings/assets/device-57e7ea16.js                          | 1 +
 web/settings/assets/device-58a430d5.js                          | 1 +
 web/settings/assets/device-5926f93d.js                          | 1 -
 web/settings/assets/device-59ac52ab.js                          | 1 -
 web/settings/assets/device-5a9d2acd.js                          | 1 +
 web/settings/assets/device-60a41819.js                          | 1 -
 web/settings/assets/device-622f0263.js                          | 1 +
 web/settings/assets/device-646a2df0.js                          | 1 +
 web/settings/assets/device-66551827.js                          | 1 -
 web/settings/assets/device-66b6ca53.js                          | 1 -
 web/settings/assets/device-671cfac2.js                          | 1 +
 web/settings/assets/device-67447569.js                          | 1 -
 web/settings/assets/device-68cdbdd8.js                          | 1 -
 web/settings/assets/device-6bc2e333.js                          | 1 -
 web/settings/assets/device-71b3befd.js                          | 1 -
 web/settings/assets/device-7328c01a.js                          | 1 -
 web/settings/assets/device-74cc8223.js                          | 1 -
 web/settings/assets/device-76f55505.js                          | 1 +
 web/settings/assets/device-7bfbb863.js                          | 1 +
 web/settings/assets/device-7d20d912.js                          | 1 -
 web/settings/assets/device-7e7c253d.js                          | 1 -
 web/settings/assets/device-7ea3222f.js                          | 1 +
 web/settings/assets/device-7f837c71.js                          | 1 +
 web/settings/assets/device-7fb9b18e.js                          | 1 +
 web/settings/assets/device-7fc12e51.js                          | 1 +
 web/settings/assets/device-8118a66e.js                          | 1 +
 web/settings/assets/device-829b538b.js                          | 1 +
 web/settings/assets/device-850717d0.js                          | 1 +
 web/settings/assets/device-85271457.js                          | 1 -
 web/settings/assets/device-86046891.js                          | 1 +
 web/settings/assets/device-86f88cbb.js                          | 1 +
 web/settings/assets/device-8c349616.js                          | 1 +
 web/settings/assets/device-96e65ee3.js                          | 1 -
 web/settings/assets/device-98e25fe5.js                          | 1 +
 web/settings/assets/device-98fd1cc4.js                          | 1 +
 web/settings/assets/device-99fa45c8.js                          | 1 +
 web/settings/assets/device-9b78528f.js                          | 1 -
 web/settings/assets/device-9f0dbb75.js                          | 1 -
 web/settings/assets/device-9ff76175.js                          | 1 -
 web/settings/assets/device-a100762d.js                          | 1 -
 web/settings/assets/device-a1e3a710.js                          | 1 +
 web/settings/assets/device-a326b87b.js                          | 1 -
 web/settings/assets/device-a3a79e85.js                          | 1 -
 web/settings/assets/device-a3aaa72b.js                          | 1 -
 web/settings/assets/device-a3d36699.js                          | 1 +
 web/settings/assets/device-a5b9720c.js                          | 1 -
 web/settings/assets/device-a875f223.js                          | 1 -
 web/settings/assets/device-aa58f408.js                          | 1 +
 web/settings/assets/device-ab0439ee.js                          | 1 +
 web/settings/assets/device-ab2aea83.js                          | 1 -
 web/settings/assets/device-accf2fa8.js                          | 1 -
 web/settings/assets/device-b0485aae.js                          | 1 -
 web/settings/assets/device-b394014f.js                          | 1 -
 web/settings/assets/device-b4d24a29.js                          | 1 +
 web/settings/assets/device-b6ab13cb.js                          | 1 +
 web/settings/assets/device-b6cf16cc.js                          | 1 -
 web/settings/assets/device-bcd1ab1c.js                          | 1 -
 web/settings/assets/device-bee08fb1.js                          | 1 -
 web/settings/assets/device-bf4936ba.js                          | 1 +
 web/settings/assets/device-c034f6f0.js                          | 1 +
 web/settings/assets/device-c0dfc296.js                          | 1 +
 web/settings/assets/device-c2c254cf.js                          | 1 -
 web/settings/assets/device-c491b9c2.js                          | 1 +
 web/settings/assets/device-c605ea36.js                          | 1 +
 web/settings/assets/device-c94e89d5.js                          | 1 -
 web/settings/assets/device-ca2bde32.js                          | 1 +
 web/settings/assets/device-cc59c62c.js                          | 1 +
 web/settings/assets/device-cc90e6fa.js                          | 1 -
 web/settings/assets/device-d659f206.js                          | 1 +
 web/settings/assets/device-d6d46ef8.js                          | 1 +
 web/settings/assets/device-d7ef046e.js                          | 1 -
 web/settings/assets/device-d9f34fe2.js                          | 1 +
 web/settings/assets/device-db16ee4d.js                          | 1 +
 web/settings/assets/device-dd9c6eba.js                          | 1 -
 web/settings/assets/device-df771d66.js                          | 1 -
 web/settings/assets/device-e372d627.js                          | 1 +
 web/settings/assets/device-e4af98fb.js                          | 1 -
 web/settings/assets/device-e4d1ba40.js                          | 1 +
 web/settings/assets/device-e78c3c94.js                          | 1 -
 web/settings/assets/device-f065b014.js                          | 1 +
 web/settings/assets/device-f298ed3b.js                          | 1 -
 web/settings/assets/device-f6cff0ea.js                          | 1 -
 web/settings/assets/device-f8acb969.js                          | 1 -
 web/settings/assets/device-f96e49ba.js                          | 1 -
 web/settings/assets/device-f9bc5796.js                          | 1 +
 web/settings/assets/device-fa86e6ca.js                          | 1 -
 web/settings/assets/device-fbd8e09f.js                          | 1 +
 web/settings/assets/device-fcfe882c.js                          | 1 +
 web/settings/assets/device-ff88dc47.js                          | 1 -
 web/settings/assets/displayTheme-28647fcd.js                    | 1 -
 web/settings/assets/displayTheme-97f12f16.js                    | 1 +
 web/settings/assets/electricity_tariff-1126e706.js              | 1 -
 web/settings/assets/electricity_tariff-2e93397c.js              | 1 -
 web/settings/assets/electricity_tariff-3790750f.js              | 1 -
 web/settings/assets/electricity_tariff-86994943.js              | 1 +
 web/settings/assets/electricity_tariff-8c65c060.js              | 1 +
 web/settings/assets/electricity_tariff-921487ff.js              | 1 +
 web/settings/assets/electricity_tariff-9a6e448e.js              | 1 -
 web/settings/assets/electricity_tariff-bc229946.js              | 1 +
 web/settings/assets/electricity_tariff-c641235d.js              | 1 +
 web/settings/assets/electricity_tariff-e02e508f.js              | 1 -
 web/settings/assets/external_inverter-154b0b15.js               | 1 -
 web/settings/assets/external_inverter-355c5719.js               | 1 -
 web/settings/assets/external_inverter-3f39a305.js               | 1 +
 web/settings/assets/external_inverter-ee34cc1c.js               | 1 -
 web/settings/assets/{index-068b063d.js => index-b0e5e618.js}    | 2 +-
 web/settings/assets/inverter-008f792b.js                        | 1 -
 web/settings/assets/inverter-01948182.js                        | 1 -
 web/settings/assets/inverter-022a27f9.js                        | 1 -
 web/settings/assets/inverter-0671dbec.js                        | 1 -
 web/settings/assets/inverter-0773e282.js                        | 1 -
 web/settings/assets/inverter-0feca953.js                        | 1 -
 web/settings/assets/inverter-148b1cf9.js                        | 1 -
 web/settings/assets/inverter-1528dc9b.js                        | 1 +
 web/settings/assets/inverter-160edb4d.js                        | 1 -
 web/settings/assets/inverter-16319c3f.js                        | 1 -
 web/settings/assets/inverter-1b5f20c2.js                        | 1 +
 web/settings/assets/inverter-1f1b0291.js                        | 1 -
 web/settings/assets/inverter-2671797a.js                        | 1 +
 web/settings/assets/inverter-317c9702.js                        | 1 -
 web/settings/assets/inverter-390b002d.js                        | 1 -
 web/settings/assets/inverter-3a00ed3d.js                        | 1 -
 web/settings/assets/inverter-3a35e713.js                        | 1 -
 web/settings/assets/inverter-3a81dff8.js                        | 1 -
 web/settings/assets/inverter-3d8e5c7f.js                        | 1 +
 web/settings/assets/inverter-4130514e.js                        | 1 +
 web/settings/assets/inverter-53505c28.js                        | 1 -
 web/settings/assets/inverter-53c9dd57.js                        | 1 -
 web/settings/assets/inverter-564ac740.js                        | 1 -
 web/settings/assets/inverter-5a5ed031.js                        | 1 -
 web/settings/assets/inverter-61827c16.js                        | 1 +
 web/settings/assets/inverter-6217c8a3.js                        | 1 +
 web/settings/assets/inverter-671f6a73.js                        | 1 -
 web/settings/assets/inverter-69ae908d.js                        | 1 -
 web/settings/assets/inverter-6b993a71.js                        | 1 -
 web/settings/assets/inverter-6d12a3f1.js                        | 1 +
 web/settings/assets/inverter-79c8fb55.js                        | 1 -
 web/settings/assets/inverter-79d423ad.js                        | 1 +
 web/settings/assets/inverter-7f269997.js                        | 1 -
 web/settings/assets/inverter-80468543.js                        | 1 -
 web/settings/assets/inverter-804d1c85.js                        | 1 -
 web/settings/assets/inverter-80adcee2.js                        | 1 +
 web/settings/assets/inverter-81caf0c3.js                        | 1 -
 web/settings/assets/inverter-85d76c41.js                        | 1 -
 web/settings/assets/inverter-89ab9892.js                        | 1 +
 web/settings/assets/inverter-8bd91bf1.js                        | 1 -
 web/settings/assets/inverter-9046aa5a.js                        | 1 -
 web/settings/assets/inverter-927da016.js                        | 1 -
 web/settings/assets/inverter-929c3f78.js                        | 1 -
 web/settings/assets/inverter-93d278b2.js                        | 1 +
 web/settings/assets/inverter-94706045.js                        | 1 +
 web/settings/assets/inverter-97406357.js                        | 1 +
 web/settings/assets/inverter-9c9c65d2.js                        | 1 -
 web/settings/assets/inverter-9df7c4d9.js                        | 1 -
 web/settings/assets/inverter-a005080e.js                        | 1 +
 web/settings/assets/inverter-a1fe6824.js                        | 1 -
 web/settings/assets/inverter-a6b17edd.js                        | 1 -
 web/settings/assets/inverter-a9cee12b.js                        | 1 +
 web/settings/assets/inverter-ae598de4.js                        | 1 -
 web/settings/assets/inverter-b0ea296b.js                        | 1 +
 web/settings/assets/inverter-b3e8ecb5.js                        | 1 -
 web/settings/assets/inverter-b47b017e.js                        | 1 +
 web/settings/assets/inverter-b4a67c1c.js                        | 1 -
 web/settings/assets/inverter-b9d7f198.js                        | 1 -
 web/settings/assets/inverter-bb47d837.js                        | 1 +
 web/settings/assets/inverter-bea955ac.js                        | 1 -
 web/settings/assets/inverter-beac0910.js                        | 1 +
 web/settings/assets/inverter-bff31af2.js                        | 1 -
 web/settings/assets/inverter-c5fc8299.js                        | 1 -
 web/settings/assets/inverter-c861a20b.js                        | 1 +
 web/settings/assets/inverter-cf027bb4.js                        | 1 -
 web/settings/assets/inverter-d5bf52e5.js                        | 1 +
 web/settings/assets/inverter-d62075d8.js                        | 1 -
 web/settings/assets/inverter-d785d016.js                        | 1 -
 web/settings/assets/inverter-e0439727.js                        | 1 -
 web/settings/assets/inverter-e2fcc96e.js                        | 1 -
 web/settings/assets/inverter-e39deae7.js                        | 1 -
 web/settings/assets/inverter-e52144a7.js                        | 1 -
 web/settings/assets/inverter-e8d637fe.js                        | 1 -
 web/settings/assets/inverter-ec40e2ac.js                        | 1 +
 web/settings/assets/inverter-ed15250f.js                        | 1 -
 web/settings/assets/inverter-f329a5ad.js                        | 1 -
 web/settings/assets/inverter-f3b65772.js                        | 1 +
 web/settings/assets/inverter-f504e343.js                        | 1 +
 web/settings/assets/inverter-f62aa161.js                        | 1 -
 web/settings/assets/inverter-f6495d7c.js                        | 1 -
 web/settings/assets/inverter-f857c467.js                        | 1 +
 web/settings/assets/inverter-fab7ed1c.js                        | 1 +
 web/settings/assets/inverter-fcb34a03.js                        | 1 -
 web/settings/assets/inverter_secondary-603793ab.js              | 1 -
 web/settings/assets/inverter_secondary-f8fdf5c3.js              | 1 +
 web/settings/assets/ripple_control_receiver-51e952e1.js         | 1 -
 web/settings/assets/ripple_control_receiver-6eba6a9a.js         | 1 +
 web/settings/assets/ripple_control_receiver-7a1236a4.js         | 1 -
 web/settings/assets/ripple_control_receiver-d8f4b5b9.js         | 1 +
 web/settings/assets/vehicle-023614f3.js                         | 1 +
 web/settings/assets/vehicle-060018aa.js                         | 1 -
 web/settings/assets/vehicle-08379fee.js                         | 1 +
 web/settings/assets/vehicle-1e7f87e2.js                         | 1 -
 web/settings/assets/vehicle-29ff37c0.js                         | 1 +
 web/settings/assets/vehicle-2f9b7b98.js                         | 1 +
 web/settings/assets/vehicle-3a34ea9e.js                         | 1 +
 web/settings/assets/vehicle-4452f15b.js                         | 1 -
 web/settings/assets/vehicle-47636774.js                         | 1 -
 web/settings/assets/vehicle-4ca53182.js                         | 1 -
 web/settings/assets/vehicle-5ad6c2de.js                         | 1 -
 web/settings/assets/vehicle-5f51066d.js                         | 1 +
 web/settings/assets/vehicle-63ef87a5.js                         | 1 -
 web/settings/assets/vehicle-65e40931.js                         | 1 +
 web/settings/assets/vehicle-6605520f.js                         | 1 -
 web/settings/assets/vehicle-836328f6.js                         | 1 -
 web/settings/assets/vehicle-891d5eff.js                         | 1 -
 web/settings/assets/vehicle-8ec5d670.js                         | 1 +
 web/settings/assets/vehicle-951b0c53.js                         | 1 -
 web/settings/assets/vehicle-98ffa49f.js                         | 1 +
 web/settings/assets/vehicle-9dbb1f9d.js                         | 1 +
 web/settings/assets/vehicle-b04d281c.js                         | 1 -
 web/settings/assets/vehicle-b1a2ecd4.js                         | 1 -
 web/settings/assets/vehicle-b28cb25d.js                         | 1 -
 web/settings/assets/vehicle-c0891ece.js                         | 1 +
 web/settings/assets/vehicle-c5ee02d8.js                         | 1 +
 web/settings/assets/vehicle-cea9d72d.js                         | 1 -
 web/settings/assets/vehicle-d0d26522.js                         | 1 +
 web/settings/assets/vehicle-d78b6b11.js                         | 1 +
 web/settings/assets/vehicle-e84c6485.js                         | 1 -
 web/settings/assets/vehicle-e909e122.js                         | 1 +
 web/settings/assets/vehicle-f30d6420.js                         | 1 +
 web/settings/assets/vehicle-f3b10eaa.js                         | 1 +
 web/settings/assets/vehicle-f67e18a5.js                         | 1 -
 web/settings/assets/vehicle-fa2b1ad1.js                         | 1 +
 web/settings/assets/vehicle-fc0096d3.js                         | 1 -
 web/settings/index.html                                         | 2 +-
 499 files changed, 222 insertions(+), 301 deletions(-)
 rename web/settings/assets/{ChargeLog-6b2cc49d.js => ChargeLog-f3c14ea7.js} (99%)
 delete mode 100644 web/settings/assets/ChargePointInstallation-4fc37543.js
 create mode 100644 web/settings/assets/ChargePointInstallation-fba1b24e.js
 rename web/settings/assets/{Chart-3cf86dec.js => Chart-0ed3fc8e.js} (99%)
 rename web/settings/assets/{CloudConfig-cb19843a.js => CloudConfig-5ecdadd6.js} (99%)
 delete mode 100644 web/settings/assets/DataManagement-10c6dd29.js
 create mode 100644 web/settings/assets/DataManagement-eb2fc5d7.js
 rename web/settings/assets/{DebugConfig-40886be8.js => DebugConfig-4a040dc7.js} (98%)
 create mode 100644 web/settings/assets/GeneralChargeConfig-4b985756.js
 delete mode 100644 web/settings/assets/GeneralChargeConfig-67ad6713.js
 create mode 100644 web/settings/assets/GeneralConfig-1396a845.js
 delete mode 100644 web/settings/assets/GeneralConfig-9529e63d.js
 create mode 100644 web/settings/assets/HardwareInstallation-a0083e3a.js
 delete mode 100644 web/settings/assets/HardwareInstallation-dd85fd7a.js
 rename web/settings/assets/{InstallAssistant-ce6c9cb7.js => InstallAssistant-e098a326.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-431f88fd.js => InstallAssistantStep0-3aacc430.js} (95%)
 delete mode 100644 web/settings/assets/InstallAssistantStep1-30da7200.js
 create mode 100644 web/settings/assets/InstallAssistantStep1-92925871.js
 rename web/settings/assets/{InstallAssistantStep10-b816c6c6.js => InstallAssistantStep10-a0cc0c5c.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-c6a872c9.js => InstallAssistantStep2-5a5716af.js} (89%)
 create mode 100644 web/settings/assets/InstallAssistantStep3-433c8ac0.js
 delete mode 100644 web/settings/assets/InstallAssistantStep3-c18ad6b3.js
 create mode 100644 web/settings/assets/InstallAssistantStep4-082fc830.js
 delete mode 100644 web/settings/assets/InstallAssistantStep4-afb36773.js
 create mode 100644 web/settings/assets/InstallAssistantStep5-86511db2.js
 delete mode 100644 web/settings/assets/InstallAssistantStep5-87ff5089.js
 create mode 100644 web/settings/assets/InstallAssistantStep6-40f3e62a.js
 delete mode 100644 web/settings/assets/InstallAssistantStep6-db3c77b6.js
 rename web/settings/assets/{InstallAssistantStep7-4abd3c6f.js => InstallAssistantStep7-b99ff659.js} (93%)
 delete mode 100644 web/settings/assets/InstallAssistantStep8-1d34ec58.js
 create mode 100644 web/settings/assets/InstallAssistantStep8-a481c31b.js
 delete mode 100644 web/settings/assets/InstallAssistantStep9-03bed1b3.js
 create mode 100644 web/settings/assets/InstallAssistantStep9-df6f7a62.js
 rename web/settings/assets/{InstallAssistantStepTemplate-cb1e241d.js => InstallAssistantStepTemplate-b7a8caa2.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-3316e506.js => InstantChargeConfig-13725bb2.js} (96%)
 rename web/settings/assets/{LegalSettings-63440fac.js => LegalSettings-c607b1a5.js} (97%)
 rename web/settings/assets/{LoadManagementConfig-755ca06f.js => LoadManagementConfig-5e0d6325.js} (55%)
 rename web/settings/assets/{MqttBridgeConfig-94739887.js => MqttBridgeConfig-4de54ead.js} (99%)
 delete mode 100644 web/settings/assets/OptionalComponents-40d19b76.js
 create mode 100644 web/settings/assets/OptionalComponents-963feb73.js
 delete mode 100644 web/settings/assets/PVChargeConfig-0d060176.js
 create mode 100644 web/settings/assets/PVChargeConfig-cce066fd.js
 rename web/settings/assets/{ScheduledChargeConfig-4e583e67.js => ScheduledChargeConfig-a25b4908.js} (97%)
 rename web/settings/assets/{Status-c3faa234.js => Status-f1da0c38.js} (99%)
 rename web/settings/assets/{Support-48f5d97a.js => Support-5eca5ed7.js} (99%)
 rename web/settings/assets/{System-d516542d.js => System-c2920436.js} (99%)
 rename web/settings/assets/{TestingStore-af0aad03.js => TestingStore-1bc32428.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-182836cc.js => TimeChargeConfig-46c6427d.js} (96%)
 create mode 100644 web/settings/assets/VehicleConfig-5050794d.js
 delete mode 100644 web/settings/assets/VehicleConfig-ee86d81f.js
 create mode 100644 web/settings/assets/backup_cloud-0c265ebd.js
 delete mode 100644 web/settings/assets/backup_cloud-17c766db.js
 delete mode 100644 web/settings/assets/backup_cloud-190eaa49.js
 delete mode 100644 web/settings/assets/backup_cloud-198617e1.js
 create mode 100644 web/settings/assets/backup_cloud-7c8657cf.js
 create mode 100644 web/settings/assets/backup_cloud-ca22b0b2.js
 delete mode 100644 web/settings/assets/backup_cloud-f0bc932b.js
 create mode 100644 web/settings/assets/backup_cloud-f487f6db.js
 create mode 100644 web/settings/assets/bat-037fc88f.js
 delete mode 100644 web/settings/assets/bat-0535c59d.js
 create mode 100644 web/settings/assets/bat-053db3b2.js
 delete mode 100644 web/settings/assets/bat-11a9e662.js
 create mode 100644 web/settings/assets/bat-1c6c9346.js
 delete mode 100644 web/settings/assets/bat-210e6934.js
 delete mode 100644 web/settings/assets/bat-22e19627.js
 create mode 100644 web/settings/assets/bat-26612c12.js
 create mode 100644 web/settings/assets/bat-2ad336ba.js
 delete mode 100644 web/settings/assets/bat-2ec8a7b2.js
 delete mode 100644 web/settings/assets/bat-32c9f6fd.js
 delete mode 100644 web/settings/assets/bat-361f190b.js
 create mode 100644 web/settings/assets/bat-3688b404.js
 create mode 100644 web/settings/assets/bat-375e955a.js
 delete mode 100644 web/settings/assets/bat-37aa8980.js
 create mode 100644 web/settings/assets/bat-3bf3716c.js
 delete mode 100644 web/settings/assets/bat-3e5d89d4.js
 delete mode 100644 web/settings/assets/bat-46611da3.js
 delete mode 100644 web/settings/assets/bat-4ce133fc.js
 create mode 100644 web/settings/assets/bat-5261b4cb.js
 delete mode 100644 web/settings/assets/bat-5a80b300.js
 delete mode 100644 web/settings/assets/bat-5bb162c2.js
 delete mode 100644 web/settings/assets/bat-5f5ccb07.js
 delete mode 100644 web/settings/assets/bat-669886fa.js
 delete mode 100644 web/settings/assets/bat-6ec0726a.js
 delete mode 100644 web/settings/assets/bat-70713ff4.js
 delete mode 100644 web/settings/assets/bat-7a8901e4.js
 delete mode 100644 web/settings/assets/bat-7cf44039.js
 delete mode 100644 web/settings/assets/bat-7e961860.js
 delete mode 100644 web/settings/assets/bat-7f5835ff.js
 delete mode 100644 web/settings/assets/bat-84a37ddf.js
 delete mode 100644 web/settings/assets/bat-86050b21.js
 create mode 100644 web/settings/assets/bat-862c0f08.js
 create mode 100644 web/settings/assets/bat-86d1c852.js
 delete mode 100644 web/settings/assets/bat-93b96b73.js
 delete mode 100644 web/settings/assets/bat-960570d8.js
 delete mode 100644 web/settings/assets/bat-a2809c14.js
 delete mode 100644 web/settings/assets/bat-a51c89dc.js
 delete mode 100644 web/settings/assets/bat-a89d2c6d.js
 delete mode 100644 web/settings/assets/bat-ab2534e0.js
 create mode 100644 web/settings/assets/bat-afab0752.js
 delete mode 100644 web/settings/assets/bat-ba0e681b.js
 delete mode 100644 web/settings/assets/bat-c023ee7d.js
 delete mode 100644 web/settings/assets/bat-c1bb93e7.js
 delete mode 100644 web/settings/assets/bat-c2e3bd93.js
 create mode 100644 web/settings/assets/bat-c566a75f.js
 delete mode 100644 web/settings/assets/bat-ca879aa3.js
 create mode 100644 web/settings/assets/bat-cbe7bc84.js
 create mode 100644 web/settings/assets/bat-cc1835de.js
 create mode 100644 web/settings/assets/bat-d04a40d4.js
 create mode 100644 web/settings/assets/bat-da9423e8.js
 create mode 100644 web/settings/assets/bat-e23118da.js
 delete mode 100644 web/settings/assets/bat-e2b4a6f2.js
 create mode 100644 web/settings/assets/bat-e4573157.js
 delete mode 100644 web/settings/assets/bat-ea7043ef.js
 delete mode 100644 web/settings/assets/bat-edeea5ab.js
 delete mode 100644 web/settings/assets/bat-f0d9c44f.js
 delete mode 100644 web/settings/assets/bat-f21d8d0a.js
 create mode 100644 web/settings/assets/bat-f5f3db47.js
 delete mode 100644 web/settings/assets/bat-fae6736a.js
 delete mode 100644 web/settings/assets/bat_api-04666400.js
 delete mode 100644 web/settings/assets/bat_modbus-ffbf71f1.js
 delete mode 100644 web/settings/assets/bat_smart_energy-8a31af27.js
 create mode 100644 web/settings/assets/bat_smart_energy-f0537d91.js
 delete mode 100644 web/settings/assets/chargePoint-0eec3eeb.js
 delete mode 100644 web/settings/assets/chargePoint-20a5e448.js
 create mode 100644 web/settings/assets/chargePoint-218a4f96.js
 create mode 100644 web/settings/assets/chargePoint-4b4f3b43.js
 delete mode 100644 web/settings/assets/chargePoint-5a865626.js
 create mode 100644 web/settings/assets/chargePoint-756bf3c2.js
 delete mode 100644 web/settings/assets/chargePoint-8dec0709.js
 create mode 100644 web/settings/assets/chargePoint-a2f06ead.js
 delete mode 100644 web/settings/assets/chargePoint-c6c27c6b.js
 create mode 100644 web/settings/assets/chargePoint-d36f4e64.js
 create mode 100644 web/settings/assets/chargePoint-db6ab728.js
 delete mode 100644 web/settings/assets/chargePoint-dd6fab0a.js
 create mode 100644 web/settings/assets/chargePoint-ddcd5f93.js
 delete mode 100644 web/settings/assets/chargePoint-f3aa01e8.js
 delete mode 100644 web/settings/assets/commands-61e8eed9.js
 create mode 100644 web/settings/assets/commands-f4c13b15.js
 create mode 100644 web/settings/assets/consumption_counter-6e608762.js
 delete mode 100644 web/settings/assets/consumption_counter-e19fcdd5.js
 delete mode 100644 web/settings/assets/counter-031b0305.js
 create mode 100644 web/settings/assets/counter-079772c2.js
 delete mode 100644 web/settings/assets/counter-0bf7d9a6.js
 delete mode 100644 web/settings/assets/counter-0f65c1e3.js
 delete mode 100644 web/settings/assets/counter-132a4c95.js
 delete mode 100644 web/settings/assets/counter-15bbcc8d.js
 delete mode 100644 web/settings/assets/counter-16ad21fd.js
 delete mode 100644 web/settings/assets/counter-17ea177d.js
 create mode 100644 web/settings/assets/counter-18ec27d5.js
 delete mode 100644 web/settings/assets/counter-2131ddbc.js
 delete mode 100644 web/settings/assets/counter-214fbb40.js
 create mode 100644 web/settings/assets/counter-2407fa25.js
 delete mode 100644 web/settings/assets/counter-27d4acde.js
 delete mode 100644 web/settings/assets/counter-2844dfce.js
 delete mode 100644 web/settings/assets/counter-30a3ca76.js
 delete mode 100644 web/settings/assets/counter-32ed9eb1.js
 create mode 100644 web/settings/assets/counter-38233839.js
 delete mode 100644 web/settings/assets/counter-39a750b6.js
 delete mode 100644 web/settings/assets/counter-3b17cd0a.js
 create mode 100644 web/settings/assets/counter-3d61895d.js
 create mode 100644 web/settings/assets/counter-3fc7917c.js
 delete mode 100644 web/settings/assets/counter-419f31a5.js
 delete mode 100644 web/settings/assets/counter-49277c48.js
 delete mode 100644 web/settings/assets/counter-49c86301.js
 delete mode 100644 web/settings/assets/counter-4cf113fa.js
 delete mode 100644 web/settings/assets/counter-4dcc66e0.js
 delete mode 100644 web/settings/assets/counter-4f739eff.js
 create mode 100644 web/settings/assets/counter-51f51be9.js
 create mode 100644 web/settings/assets/counter-55bd9132.js
 delete mode 100644 web/settings/assets/counter-5cdd5400.js
 delete mode 100644 web/settings/assets/counter-6703f6f0.js
 delete mode 100644 web/settings/assets/counter-6a7f6553.js
 create mode 100644 web/settings/assets/counter-70ddc5c4.js
 delete mode 100644 web/settings/assets/counter-720f0b7c.js
 delete mode 100644 web/settings/assets/counter-761ec99f.js
 delete mode 100644 web/settings/assets/counter-776a14ff.js
 delete mode 100644 web/settings/assets/counter-7de8fa46.js
 delete mode 100644 web/settings/assets/counter-7e9e02b6.js
 create mode 100644 web/settings/assets/counter-809d5a8a.js
 delete mode 100644 web/settings/assets/counter-8102691a.js
 create mode 100644 web/settings/assets/counter-851af979.js
 delete mode 100644 web/settings/assets/counter-85e02a09.js
 create mode 100644 web/settings/assets/counter-863d779b.js
 delete mode 100644 web/settings/assets/counter-899de3b1.js
 delete mode 100644 web/settings/assets/counter-8aa3e08a.js
 delete mode 100644 web/settings/assets/counter-90d6c411.js
 create mode 100644 web/settings/assets/counter-92895c7b.js
 delete mode 100644 web/settings/assets/counter-92dbeb44.js
 delete mode 100644 web/settings/assets/counter-963b86e8.js
 create mode 100644 web/settings/assets/counter-9c04d80d.js
 delete mode 100644 web/settings/assets/counter-9c0b6f8f.js
 delete mode 100644 web/settings/assets/counter-9ca02844.js
 delete mode 100644 web/settings/assets/counter-9db4f10d.js
 create mode 100644 web/settings/assets/counter-9dd2e78b.js
 create mode 100644 web/settings/assets/counter-a1a84381.js
 delete mode 100644 web/settings/assets/counter-a43b7c84.js
 create mode 100644 web/settings/assets/counter-a51c4464.js
 delete mode 100644 web/settings/assets/counter-ae228566.js
 create mode 100644 web/settings/assets/counter-aea90a37.js
 delete mode 100644 web/settings/assets/counter-b01202f0.js
 delete mode 100644 web/settings/assets/counter-b75b921d.js
 create mode 100644 web/settings/assets/counter-bb7c4b01.js
 delete mode 100644 web/settings/assets/counter-bf240441.js
 delete mode 100644 web/settings/assets/counter-c0599fe6.js
 create mode 100644 web/settings/assets/counter-c3ed00fb.js
 create mode 100644 web/settings/assets/counter-c4a0dc83.js
 delete mode 100644 web/settings/assets/counter-ca9e3fe2.js
 create mode 100644 web/settings/assets/counter-d2cdbd98.js
 delete mode 100644 web/settings/assets/counter-d3b3c371.js
 delete mode 100644 web/settings/assets/counter-d3c67a64.js
 delete mode 100644 web/settings/assets/counter-d7164453.js
 delete mode 100644 web/settings/assets/counter-d86757f2.js
 create mode 100644 web/settings/assets/counter-db36cac3.js
 delete mode 100644 web/settings/assets/counter-dc109611.js
 create mode 100644 web/settings/assets/counter-ddf406fa.js
 create mode 100644 web/settings/assets/counter-dfc0206c.js
 create mode 100644 web/settings/assets/counter-e17b6711.js
 create mode 100644 web/settings/assets/counter-e525bf90.js
 create mode 100644 web/settings/assets/counter-eacbb4cc.js
 create mode 100644 web/settings/assets/counter-eb577878.js
 create mode 100644 web/settings/assets/counter-f1f7547c.js
 create mode 100644 web/settings/assets/counter-f3a88abe.js
 delete mode 100644 web/settings/assets/counter-fa66cb6a.js
 create mode 100644 web/settings/assets/counter-fc3afadd.js
 delete mode 100644 web/settings/assets/counter_s0-8459b248.js
 delete mode 100644 web/settings/assets/counter_sm-157d8b84.js
 create mode 100644 web/settings/assets/counter_sm-ae20b8ea.js
 delete mode 100644 web/settings/assets/device-02184b73.js
 delete mode 100644 web/settings/assets/device-06345e49.js
 delete mode 100644 web/settings/assets/device-0852663a.js
 create mode 100644 web/settings/assets/device-08fe3db1.js
 create mode 100644 web/settings/assets/device-0a578374.js
 create mode 100644 web/settings/assets/device-0c94f34d.js
 create mode 100644 web/settings/assets/device-0f4599b8.js
 delete mode 100644 web/settings/assets/device-1194af1e.js
 delete mode 100644 web/settings/assets/device-12c43ff6.js
 create mode 100644 web/settings/assets/device-13ac66a2.js
 delete mode 100644 web/settings/assets/device-14134a0e.js
 create mode 100644 web/settings/assets/device-1859f43b.js
 delete mode 100644 web/settings/assets/device-191a8f0d.js
 create mode 100644 web/settings/assets/device-1c46f4b0.js
 delete mode 100644 web/settings/assets/device-1dbf9864.js
 create mode 100644 web/settings/assets/device-1f0b55db.js
 delete mode 100644 web/settings/assets/device-1f5e9c10.js
 delete mode 100644 web/settings/assets/device-2004960c.js
 delete mode 100644 web/settings/assets/device-25323637.js
 delete mode 100644 web/settings/assets/device-29ba5b2b.js
 delete mode 100644 web/settings/assets/device-2a05ce83.js
 delete mode 100644 web/settings/assets/device-34858026.js
 delete mode 100644 web/settings/assets/device-35945559.js
 create mode 100644 web/settings/assets/device-359d7e50.js
 create mode 100644 web/settings/assets/device-38fb8261.js
 create mode 100644 web/settings/assets/device-3b65739e.js
 create mode 100644 web/settings/assets/device-3c0a0263.js
 create mode 100644 web/settings/assets/device-3c779cdd.js
 delete mode 100644 web/settings/assets/device-3d9e43fe.js
 create mode 100644 web/settings/assets/device-3e055cd7.js
 create mode 100644 web/settings/assets/device-40b4b0c5.js
 create mode 100644 web/settings/assets/device-4498198c.js
 create mode 100644 web/settings/assets/device-44b38c3f.js
 delete mode 100644 web/settings/assets/device-4e84dc20.js
 delete mode 100644 web/settings/assets/device-4f252d8d.js
 create mode 100644 web/settings/assets/device-4f7c15a3.js
 delete mode 100644 web/settings/assets/device-538ad6e5.js
 delete mode 100644 web/settings/assets/device-53c3c990.js
 delete mode 100644 web/settings/assets/device-560cda8e.js
 delete mode 100644 web/settings/assets/device-56cb9ab9.js
 create mode 100644 web/settings/assets/device-57e7ea16.js
 create mode 100644 web/settings/assets/device-58a430d5.js
 delete mode 100644 web/settings/assets/device-5926f93d.js
 delete mode 100644 web/settings/assets/device-59ac52ab.js
 create mode 100644 web/settings/assets/device-5a9d2acd.js
 delete mode 100644 web/settings/assets/device-60a41819.js
 create mode 100644 web/settings/assets/device-622f0263.js
 create mode 100644 web/settings/assets/device-646a2df0.js
 delete mode 100644 web/settings/assets/device-66551827.js
 delete mode 100644 web/settings/assets/device-66b6ca53.js
 create mode 100644 web/settings/assets/device-671cfac2.js
 delete mode 100644 web/settings/assets/device-67447569.js
 delete mode 100644 web/settings/assets/device-68cdbdd8.js
 delete mode 100644 web/settings/assets/device-6bc2e333.js
 delete mode 100644 web/settings/assets/device-71b3befd.js
 delete mode 100644 web/settings/assets/device-7328c01a.js
 delete mode 100644 web/settings/assets/device-74cc8223.js
 create mode 100644 web/settings/assets/device-76f55505.js
 create mode 100644 web/settings/assets/device-7bfbb863.js
 delete mode 100644 web/settings/assets/device-7d20d912.js
 delete mode 100644 web/settings/assets/device-7e7c253d.js
 create mode 100644 web/settings/assets/device-7ea3222f.js
 create mode 100644 web/settings/assets/device-7f837c71.js
 create mode 100644 web/settings/assets/device-7fb9b18e.js
 create mode 100644 web/settings/assets/device-7fc12e51.js
 create mode 100644 web/settings/assets/device-8118a66e.js
 create mode 100644 web/settings/assets/device-829b538b.js
 create mode 100644 web/settings/assets/device-850717d0.js
 delete mode 100644 web/settings/assets/device-85271457.js
 create mode 100644 web/settings/assets/device-86046891.js
 create mode 100644 web/settings/assets/device-86f88cbb.js
 create mode 100644 web/settings/assets/device-8c349616.js
 delete mode 100644 web/settings/assets/device-96e65ee3.js
 create mode 100644 web/settings/assets/device-98e25fe5.js
 create mode 100644 web/settings/assets/device-98fd1cc4.js
 create mode 100644 web/settings/assets/device-99fa45c8.js
 delete mode 100644 web/settings/assets/device-9b78528f.js
 delete mode 100644 web/settings/assets/device-9f0dbb75.js
 delete mode 100644 web/settings/assets/device-9ff76175.js
 delete mode 100644 web/settings/assets/device-a100762d.js
 create mode 100644 web/settings/assets/device-a1e3a710.js
 delete mode 100644 web/settings/assets/device-a326b87b.js
 delete mode 100644 web/settings/assets/device-a3a79e85.js
 delete mode 100644 web/settings/assets/device-a3aaa72b.js
 create mode 100644 web/settings/assets/device-a3d36699.js
 delete mode 100644 web/settings/assets/device-a5b9720c.js
 delete mode 100644 web/settings/assets/device-a875f223.js
 create mode 100644 web/settings/assets/device-aa58f408.js
 create mode 100644 web/settings/assets/device-ab0439ee.js
 delete mode 100644 web/settings/assets/device-ab2aea83.js
 delete mode 100644 web/settings/assets/device-accf2fa8.js
 delete mode 100644 web/settings/assets/device-b0485aae.js
 delete mode 100644 web/settings/assets/device-b394014f.js
 create mode 100644 web/settings/assets/device-b4d24a29.js
 create mode 100644 web/settings/assets/device-b6ab13cb.js
 delete mode 100644 web/settings/assets/device-b6cf16cc.js
 delete mode 100644 web/settings/assets/device-bcd1ab1c.js
 delete mode 100644 web/settings/assets/device-bee08fb1.js
 create mode 100644 web/settings/assets/device-bf4936ba.js
 create mode 100644 web/settings/assets/device-c034f6f0.js
 create mode 100644 web/settings/assets/device-c0dfc296.js
 delete mode 100644 web/settings/assets/device-c2c254cf.js
 create mode 100644 web/settings/assets/device-c491b9c2.js
 create mode 100644 web/settings/assets/device-c605ea36.js
 delete mode 100644 web/settings/assets/device-c94e89d5.js
 create mode 100644 web/settings/assets/device-ca2bde32.js
 create mode 100644 web/settings/assets/device-cc59c62c.js
 delete mode 100644 web/settings/assets/device-cc90e6fa.js
 create mode 100644 web/settings/assets/device-d659f206.js
 create mode 100644 web/settings/assets/device-d6d46ef8.js
 delete mode 100644 web/settings/assets/device-d7ef046e.js
 create mode 100644 web/settings/assets/device-d9f34fe2.js
 create mode 100644 web/settings/assets/device-db16ee4d.js
 delete mode 100644 web/settings/assets/device-dd9c6eba.js
 delete mode 100644 web/settings/assets/device-df771d66.js
 create mode 100644 web/settings/assets/device-e372d627.js
 delete mode 100644 web/settings/assets/device-e4af98fb.js
 create mode 100644 web/settings/assets/device-e4d1ba40.js
 delete mode 100644 web/settings/assets/device-e78c3c94.js
 create mode 100644 web/settings/assets/device-f065b014.js
 delete mode 100644 web/settings/assets/device-f298ed3b.js
 delete mode 100644 web/settings/assets/device-f6cff0ea.js
 delete mode 100644 web/settings/assets/device-f8acb969.js
 delete mode 100644 web/settings/assets/device-f96e49ba.js
 create mode 100644 web/settings/assets/device-f9bc5796.js
 delete mode 100644 web/settings/assets/device-fa86e6ca.js
 create mode 100644 web/settings/assets/device-fbd8e09f.js
 create mode 100644 web/settings/assets/device-fcfe882c.js
 delete mode 100644 web/settings/assets/device-ff88dc47.js
 delete mode 100644 web/settings/assets/displayTheme-28647fcd.js
 create mode 100644 web/settings/assets/displayTheme-97f12f16.js
 delete mode 100644 web/settings/assets/electricity_tariff-1126e706.js
 delete mode 100644 web/settings/assets/electricity_tariff-2e93397c.js
 delete mode 100644 web/settings/assets/electricity_tariff-3790750f.js
 create mode 100644 web/settings/assets/electricity_tariff-86994943.js
 create mode 100644 web/settings/assets/electricity_tariff-8c65c060.js
 create mode 100644 web/settings/assets/electricity_tariff-921487ff.js
 delete mode 100644 web/settings/assets/electricity_tariff-9a6e448e.js
 create mode 100644 web/settings/assets/electricity_tariff-bc229946.js
 create mode 100644 web/settings/assets/electricity_tariff-c641235d.js
 delete mode 100644 web/settings/assets/electricity_tariff-e02e508f.js
 delete mode 100644 web/settings/assets/external_inverter-154b0b15.js
 delete mode 100644 web/settings/assets/external_inverter-355c5719.js
 create mode 100644 web/settings/assets/external_inverter-3f39a305.js
 delete mode 100644 web/settings/assets/external_inverter-ee34cc1c.js
 rename web/settings/assets/{index-068b063d.js => index-b0e5e618.js} (80%)
 delete mode 100644 web/settings/assets/inverter-008f792b.js
 delete mode 100644 web/settings/assets/inverter-01948182.js
 delete mode 100644 web/settings/assets/inverter-022a27f9.js
 delete mode 100644 web/settings/assets/inverter-0671dbec.js
 delete mode 100644 web/settings/assets/inverter-0773e282.js
 delete mode 100644 web/settings/assets/inverter-0feca953.js
 delete mode 100644 web/settings/assets/inverter-148b1cf9.js
 create mode 100644 web/settings/assets/inverter-1528dc9b.js
 delete mode 100644 web/settings/assets/inverter-160edb4d.js
 delete mode 100644 web/settings/assets/inverter-16319c3f.js
 create mode 100644 web/settings/assets/inverter-1b5f20c2.js
 delete mode 100644 web/settings/assets/inverter-1f1b0291.js
 create mode 100644 web/settings/assets/inverter-2671797a.js
 delete mode 100644 web/settings/assets/inverter-317c9702.js
 delete mode 100644 web/settings/assets/inverter-390b002d.js
 delete mode 100644 web/settings/assets/inverter-3a00ed3d.js
 delete mode 100644 web/settings/assets/inverter-3a35e713.js
 delete mode 100644 web/settings/assets/inverter-3a81dff8.js
 create mode 100644 web/settings/assets/inverter-3d8e5c7f.js
 create mode 100644 web/settings/assets/inverter-4130514e.js
 delete mode 100644 web/settings/assets/inverter-53505c28.js
 delete mode 100644 web/settings/assets/inverter-53c9dd57.js
 delete mode 100644 web/settings/assets/inverter-564ac740.js
 delete mode 100644 web/settings/assets/inverter-5a5ed031.js
 create mode 100644 web/settings/assets/inverter-61827c16.js
 create mode 100644 web/settings/assets/inverter-6217c8a3.js
 delete mode 100644 web/settings/assets/inverter-671f6a73.js
 delete mode 100644 web/settings/assets/inverter-69ae908d.js
 delete mode 100644 web/settings/assets/inverter-6b993a71.js
 create mode 100644 web/settings/assets/inverter-6d12a3f1.js
 delete mode 100644 web/settings/assets/inverter-79c8fb55.js
 create mode 100644 web/settings/assets/inverter-79d423ad.js
 delete mode 100644 web/settings/assets/inverter-7f269997.js
 delete mode 100644 web/settings/assets/inverter-80468543.js
 delete mode 100644 web/settings/assets/inverter-804d1c85.js
 create mode 100644 web/settings/assets/inverter-80adcee2.js
 delete mode 100644 web/settings/assets/inverter-81caf0c3.js
 delete mode 100644 web/settings/assets/inverter-85d76c41.js
 create mode 100644 web/settings/assets/inverter-89ab9892.js
 delete mode 100644 web/settings/assets/inverter-8bd91bf1.js
 delete mode 100644 web/settings/assets/inverter-9046aa5a.js
 delete mode 100644 web/settings/assets/inverter-927da016.js
 delete mode 100644 web/settings/assets/inverter-929c3f78.js
 create mode 100644 web/settings/assets/inverter-93d278b2.js
 create mode 100644 web/settings/assets/inverter-94706045.js
 create mode 100644 web/settings/assets/inverter-97406357.js
 delete mode 100644 web/settings/assets/inverter-9c9c65d2.js
 delete mode 100644 web/settings/assets/inverter-9df7c4d9.js
 create mode 100644 web/settings/assets/inverter-a005080e.js
 delete mode 100644 web/settings/assets/inverter-a1fe6824.js
 delete mode 100644 web/settings/assets/inverter-a6b17edd.js
 create mode 100644 web/settings/assets/inverter-a9cee12b.js
 delete mode 100644 web/settings/assets/inverter-ae598de4.js
 create mode 100644 web/settings/assets/inverter-b0ea296b.js
 delete mode 100644 web/settings/assets/inverter-b3e8ecb5.js
 create mode 100644 web/settings/assets/inverter-b47b017e.js
 delete mode 100644 web/settings/assets/inverter-b4a67c1c.js
 delete mode 100644 web/settings/assets/inverter-b9d7f198.js
 create mode 100644 web/settings/assets/inverter-bb47d837.js
 delete mode 100644 web/settings/assets/inverter-bea955ac.js
 create mode 100644 web/settings/assets/inverter-beac0910.js
 delete mode 100644 web/settings/assets/inverter-bff31af2.js
 delete mode 100644 web/settings/assets/inverter-c5fc8299.js
 create mode 100644 web/settings/assets/inverter-c861a20b.js
 delete mode 100644 web/settings/assets/inverter-cf027bb4.js
 create mode 100644 web/settings/assets/inverter-d5bf52e5.js
 delete mode 100644 web/settings/assets/inverter-d62075d8.js
 delete mode 100644 web/settings/assets/inverter-d785d016.js
 delete mode 100644 web/settings/assets/inverter-e0439727.js
 delete mode 100644 web/settings/assets/inverter-e2fcc96e.js
 delete mode 100644 web/settings/assets/inverter-e39deae7.js
 delete mode 100644 web/settings/assets/inverter-e52144a7.js
 delete mode 100644 web/settings/assets/inverter-e8d637fe.js
 create mode 100644 web/settings/assets/inverter-ec40e2ac.js
 delete mode 100644 web/settings/assets/inverter-ed15250f.js
 delete mode 100644 web/settings/assets/inverter-f329a5ad.js
 create mode 100644 web/settings/assets/inverter-f3b65772.js
 create mode 100644 web/settings/assets/inverter-f504e343.js
 delete mode 100644 web/settings/assets/inverter-f62aa161.js
 delete mode 100644 web/settings/assets/inverter-f6495d7c.js
 create mode 100644 web/settings/assets/inverter-f857c467.js
 create mode 100644 web/settings/assets/inverter-fab7ed1c.js
 delete mode 100644 web/settings/assets/inverter-fcb34a03.js
 delete mode 100644 web/settings/assets/inverter_secondary-603793ab.js
 create mode 100644 web/settings/assets/inverter_secondary-f8fdf5c3.js
 delete mode 100644 web/settings/assets/ripple_control_receiver-51e952e1.js
 create mode 100644 web/settings/assets/ripple_control_receiver-6eba6a9a.js
 delete mode 100644 web/settings/assets/ripple_control_receiver-7a1236a4.js
 create mode 100644 web/settings/assets/ripple_control_receiver-d8f4b5b9.js
 create mode 100644 web/settings/assets/vehicle-023614f3.js
 delete mode 100644 web/settings/assets/vehicle-060018aa.js
 create mode 100644 web/settings/assets/vehicle-08379fee.js
 delete mode 100644 web/settings/assets/vehicle-1e7f87e2.js
 create mode 100644 web/settings/assets/vehicle-29ff37c0.js
 create mode 100644 web/settings/assets/vehicle-2f9b7b98.js
 create mode 100644 web/settings/assets/vehicle-3a34ea9e.js
 delete mode 100644 web/settings/assets/vehicle-4452f15b.js
 delete mode 100644 web/settings/assets/vehicle-47636774.js
 delete mode 100644 web/settings/assets/vehicle-4ca53182.js
 delete mode 100644 web/settings/assets/vehicle-5ad6c2de.js
 create mode 100644 web/settings/assets/vehicle-5f51066d.js
 delete mode 100644 web/settings/assets/vehicle-63ef87a5.js
 create mode 100644 web/settings/assets/vehicle-65e40931.js
 delete mode 100644 web/settings/assets/vehicle-6605520f.js
 delete mode 100644 web/settings/assets/vehicle-836328f6.js
 delete mode 100644 web/settings/assets/vehicle-891d5eff.js
 create mode 100644 web/settings/assets/vehicle-8ec5d670.js
 delete mode 100644 web/settings/assets/vehicle-951b0c53.js
 create mode 100644 web/settings/assets/vehicle-98ffa49f.js
 create mode 100644 web/settings/assets/vehicle-9dbb1f9d.js
 delete mode 100644 web/settings/assets/vehicle-b04d281c.js
 delete mode 100644 web/settings/assets/vehicle-b1a2ecd4.js
 delete mode 100644 web/settings/assets/vehicle-b28cb25d.js
 create mode 100644 web/settings/assets/vehicle-c0891ece.js
 create mode 100644 web/settings/assets/vehicle-c5ee02d8.js
 delete mode 100644 web/settings/assets/vehicle-cea9d72d.js
 create mode 100644 web/settings/assets/vehicle-d0d26522.js
 create mode 100644 web/settings/assets/vehicle-d78b6b11.js
 delete mode 100644 web/settings/assets/vehicle-e84c6485.js
 create mode 100644 web/settings/assets/vehicle-e909e122.js
 create mode 100644 web/settings/assets/vehicle-f30d6420.js
 create mode 100644 web/settings/assets/vehicle-f3b10eaa.js
 delete mode 100644 web/settings/assets/vehicle-f67e18a5.js
 create mode 100644 web/settings/assets/vehicle-fa2b1ad1.js
 delete mode 100644 web/settings/assets/vehicle-fc0096d3.js

diff --git a/web/settings/assets/ChargeLog-6b2cc49d.js b/web/settings/assets/ChargeLog-f3c14ea7.js
similarity index 99%
rename from web/settings/assets/ChargeLog-6b2cc49d.js
rename to web/settings/assets/ChargeLog-f3c14ea7.js
index 69c607bad6..b6e2bb1d48 100644
--- a/web/settings/assets/ChargeLog-6b2cc49d.js
+++ b/web/settings/assets/ChargeLog-f3c14ea7.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-068b063d.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-b0e5e618.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},y=t=>(W("data-v-8607e7e7"),t=t(),F(),t),M={class:"chargeLog"},P={name:"chargeLogForm"},z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],K=["aria-valuenow"],J=["aria-valuenow"],G=["aria-valuenow"],H=["aria-valuenow"],Q={key:1,class:"td-center"},Y={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ce={class:"hide",ref:"downloadChargeLogLink"},he=y(()=>i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),ge={class:"td-end"},_e={class:"td-end"},ue={class:"td-end"},me={class:"td-end"};function pe(t,e,o,p,l,r){const C=h("openwb-base-text-input"),f=h("font-awesome-icon"),D=h("openwb-base-button-group-input"),m=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),b=h("openwb-base-alert"),L=h("vue3-table-lite"),N=h("openwb-base-click-button");return g(),_("div",M,[i("form",P,[d(v,{title:"Filter"},{default:s(()=>[d(C,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:l.currentMonth,modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())]},null,8,["max","modelValue"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),c(" Erweiterte Optionen ")]),default:s(()=>[d(D,{title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())]},null,8,["modelValue"]),d(m,{title:"Lademodus",multiple:"",options:r.chargeModeList,modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Ladepunkt",multiple:"",options:r.chargePointList,modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Fahrzeug",multiple:"",options:r.vehicleList,modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(q,{title:"ID-Tags",modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Tags als Filter verwendet werden. ")]),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,z)]),_:1}),r.chargeLogRead?(g(),_("div",O,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(g(),_("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:u({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:u({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:u({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G),i("div",{class:"progress-bar bg-success",role:"progressbar",style:u({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,H)],8,j)):(g(),_("div",Q,"-"))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Y,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(g(),_("div",le,[i("div",de,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[c(" Als CSV exportieren "),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ce,null,512)]),he,d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",ge,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",_e,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ue,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",me,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):V("",!0)])):(g(),I(b,{key:0,subtype:"info"},{default:s(()=>[c(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const qe=B(U,[["render",pe],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{qe as default};
diff --git a/web/settings/assets/ChargePointInstallation-4fc37543.js b/web/settings/assets/ChargePointInstallation-4fc37543.js
deleted file mode 100644
index 5dfe2cbb99..0000000000
--- a/web/settings/assets/ChargePointInstallation-4fc37543.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-068b063d.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as g,k as i,l as m,A as f,N as o,y as s,z as v,D as n,x as p,a2 as D,a3 as M,J as S,K as I,B as h,q as F,a4 as O,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ue={name:"ChargePointConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de={class:"device-fallback"},pe={key:1};function me(e,a,r,P,c,d){const C=g("openwb-base-alert"),b=g("openwb-base-textarea");return i(),m("div",de,[Object.keys(r.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),m("div",pe,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+v(r.chargePointType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>d.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[p("pre",null,v(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const ce=U(ue,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={name:"ChargePointCommandsFallback",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0},chargePointType:String}},he={class:"charge-point-commands-fallback"};function _e(e,a,r,P,c,d){const C=g("openwb-base-alert");return i(),m("div",he,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+v(r.chargePointType)+'" bietet keine Befehle an. ',1)]),_:1})])}const be=U(ge,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),fe={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePointId:{required:!0},chargePointType:{type:String,required:!0},configuration:{type:Object,required:!0},moduleName:{type:String,required:!1,default:void 0}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-dd6fab0a.js"),["assets/chargePoint-dd6fab0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-8dec0709.js"),["assets/chargePoint-8dec0709.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-0eec3eeb.js"),["assets/chargePoint-0eec3eeb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-20a5e448.js"),["assets/chargePoint-20a5e448.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-5a865626.js"),["assets/chargePoint-5a865626.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-c6c27c6b.js"),["assets/chargePoint-c6c27c6b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-f3aa01e8.js"),["assets/chargePoint-f3aa01e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/chargePoint.vue`),errorComponent:ce})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePointType}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-61e8eed9.js"),["assets/commands-61e8eed9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.chargePointType}/commands.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},we=p("hr",null,null,-1);function ke(e,a,r,P,c,d){const C=g("openwb-base-heading");return i(),m(S,null,[n(C,null,{default:o(()=>[s(" Einstellungen für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointSettingsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType,"onUpdate:configuration":a[0]||(a[0]=b=>d.updateConfiguration(b))},null,40,["configuration","chargePointId","chargePointType"])),we,n(C,null,{default:o(()=>[s(" Befehle für Ladepunkt "+v(r.moduleName),1)]),_:1}),(i(),f(M(d.myChargePointCommandsComponent),{configuration:r.configuration,chargePointId:r.chargePointId,chargePointType:r.chargePointType},null,8,["configuration","chargePointId","chargePointType"]))],64)}const ve=U(fe,[["render",ke],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[r,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[r]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let r=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+r].name;e.push({value:r,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let r=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:r}})},removeChargePointTemplateAutolockPlanModal(e,a,r){r.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,r){this.showChargePointTemplateAutolockPlanModal=!1,r=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},w=e=>(se("data-v-75fe5743"),e=e(),re(),e),ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le=w(()=>p("hr",null,null,-1)),Be={key:1},Ae=w(()=>p("hr",null,null,-1)),We=w(()=>p("br",null,null,-1)),Se=w(()=>p("br",null,null,-1)),Te=w(()=>p("br",null,null,-1)),Ie=w(()=>p("br",null,null,-1)),Ue={key:0},xe={class:"col-1"},qe=w(()=>p("br",null,null,-1)),ze=w(()=>p("ul",null,[p("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),p("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),p("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),p("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),p("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),p("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Ee=w(()=>p("hr",{class:"border-secondary"},null,-1)),De={key:0},Me={key:1},Fe=w(()=>p("hr",null,null,-1)),Oe={key:1},Ne=w(()=>p("hr",null,null,-1)),Re=w(()=>p("br",null,null,-1)),je={key:0},Ze=w(()=>p("br",null,null,-1)),Je=w(()=>p("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),$e={key:2},He=w(()=>p("hr",null,null,-1)),Ge={key:4},Qe=w(()=>p("hr",null,null,-1)),Xe=["onClick"],Ye={key:0},Ke={key:1},et={key:2},tt={key:2};function nt(e,a,r,P,c,d){const C=g("openwb-base-modal-dialog"),b=g("font-awesome-icon"),B=g("openwb-base-avatar"),V=g("openwb-base-text-input"),x=g("openwb-base-select-input"),N=g("openwb-charge-point-proxy"),A=g("openwb-base-heading"),y=g("openwb-base-button-group-input"),T=g("openwb-base-card"),R=g("openwb-base-click-button"),j=g("font-awesome-layers"),q=g("openwb-base-alert"),Z=g("openwb-base-array-input"),z=g("openwb-base-range-input"),J=g("openwb-base-number-input"),$=g("openwb-base-submit-buttons");return i(),m(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>d.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+v(d.getChargePointName(c.modalChargePointIndex))+'" (ID: '+v(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>d.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+v(d.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+v(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>d.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+v(d.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),p("div",ye,[p("form",Pe,[n(T,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!r.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),m(S,null,I(d.installedChargePoints,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[u].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),m("span",Ve,[n(x,{title:"Ladepunkt-Profil",options:d.chargePointTemplateList,"model-value":e.$store.state.mqtt[u].template,"onUpdate:modelValue":t=>e.updateState(u,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),Le,n(N,{chargePointId:l.id,chargePointType:e.$store.state.mqtt[u].type,moduleName:e.$store.state.mqtt[u].name,configuration:l.configuration,"onUpdate:configuration":t=>d.updateConfiguration(u,t)},null,8,["chargePointId","chargePointType","moduleName","configuration","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),m("div",Be,[Ae,n(A,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(u,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(u,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),We,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Se,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),Te,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),Ie,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(d.installedChargePoints).length>0?(i(),m("hr",Ue)):h("",!0),n(x,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:d.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[p("span",xe,[n(R,{class:F(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:d.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),qe,ze]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Ee,n(T,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:d.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),m("div",De,[n(q,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),m("div",Me,[(i(!0),m(S,null,I(d.chargePointTemplates,(l,u)=>(i(),f(T,{key:u,title:l.name+" (ID: "+d.getChargePointTemplateIndex(u)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(u,t,"name"),disabled:u.endsWith("/0")},O({_:2},[u.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),d.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(u,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),Fe,n(A,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(u,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!r.installAssistantActive?(i(),m("div",Oe,[l.disable_after_unplug?(i(),f(Z,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(u,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),Ne,n(A,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(q,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Re,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),m("span",je," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),Ze,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Je,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||d.dcChargingEnabled!==!0?(i(),m("div",$e,[n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(u,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(J,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(u,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),He,r.installAssistantActive?h("",!0):(i(),m("div",Ge,[Qe,n(A,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(u,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(A,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>d.addChargePointTemplateAutolockPlan(u,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),m(S,null,I(d.getChargePointTemplateAutolockPlans(u),(t,k)=>(i(),f(T,{key:k,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),m("span",{key:0,onClick:le(W=>e.updateState(k,!t.active,"active"),["stop"]),class:F(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+v(t.time[0])+" - "+v(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),m("span",Ye,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+v(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):h("",!0),t.frequency.selected=="daily"?(i(),m("span",Ke,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),t.frequency.selected=="weekly"?(i(),m("span",et,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Xe)):h("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:W=>d.removeChargePointTemplateAutolockPlanModal(u,k,W)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(k,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(k,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(k,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(k,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(k,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),t.frequency.selected=="weekly"?(i(),m("div",tt,[(i(!0),m(S,null,I(e.weekdays,(_,W)=>(i(),f(y,{key:W,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[W],"onUpdate:modelValue":H=>e.updateState(k,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[u.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?h("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:k=>d.removeChargePointTemplateModal(u,k)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n($,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const pt=U(Ce,[["render",nt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]);export{pt as default};
diff --git a/web/settings/assets/ChargePointInstallation-fba1b24e.js b/web/settings/assets/ChargePointInstallation-fba1b24e.js
new file mode 100644
index 0000000000..41aa0f390b
--- /dev/null
+++ b/web/settings/assets/ChargePointInstallation-fba1b24e.js
@@ -0,0 +1 @@
+import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-b0e5e618.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as h,k as i,l as p,A as f,N as o,y as s,z as k,D as n,x as d,a2 as D,a3 as M,J as S,K as T,B as g,q as O,a4 as F,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";const ue={emits:["update:configuration"],props:{chargePoint:{type:Object,required:!0}},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de=U(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),pe={name:"ChargePointConfigFallback",mixins:[de]},me={class:"charge-point-config-fallback"},ce={key:1};function he(e,a,m,P,c,u){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return i(),p("div",me,[Object.keys(e.chargePoint.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+k(e.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),p("div",ce,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(e.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":e.chargePoint.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>e.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[d("pre",null,k(JSON.stringify(e.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const ge=U(pe,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),_e={props:{chargePoint:{type:Object,required:!0}}},be=U(_e,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),fe={name:"ChargePointCommandsFallback",mixins:[be]},ve={class:"charge-point-commands-fallback"};function we(e,a,m,P,c,u){const C=h("openwb-base-alert");return i(),p("div",ve,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+k(e.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const ke=U(fe,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),Ce={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePoint:{required:!0,type:Object}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-218a4f96.js"),["assets/chargePoint-218a4f96.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-4b4f3b43.js"),["assets/chargePoint-4b4f3b43.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-d36f4e64.js"),["assets/chargePoint-d36f4e64.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-756bf3c2.js"),["assets/chargePoint-756bf3c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-db6ab728.js"),["assets/chargePoint-db6ab728.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-ddcd5f93.js"),["assets/chargePoint-ddcd5f93.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a2f06ead.js"),["assets/chargePoint-a2f06ead.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:ge})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-f4c13b15.js"),["assets/commands-f4c13b15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:ke})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},ye=d("hr",null,null,-1);function Pe(e,a,m,P,c,u){const C=h("openwb-base-heading");return i(),p(S,null,[n(C,null,{default:o(()=>[s(' Einstellungen für Ladepunkt Typ "'+k(m.chargePoint.type)+'" ',1)]),_:1}),(i(),f(M(u.myChargePointSettingsComponent),{chargePoint:m.chargePoint,"onUpdate:configuration":a[0]||(a[0]=b=>u.updateConfiguration(b))},null,40,["chargePoint"])),ye,n(C,null,{default:o(()=>[s(' Befehle für Ladepunkt Typ "'+k(m.chargePoint.type)+'" ',1)]),_:1}),(i(),f(M(u.myChargePointCommandsComponent),{chargePoint:m.chargePoint},null,8,["chargePoint"]))],64)}const Ve=U(Ce,[["render",Pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Le={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:Ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[m,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},v=e=>(se("data-v-75fe5743"),e=e(),re(),e),Be={class:"chargePointInstallation"},We={name:"chargePointInstallationForm"},Ae={key:0},Se=v(()=>d("hr",null,null,-1)),Ue={key:1},xe=v(()=>d("hr",null,null,-1)),Te=v(()=>d("br",null,null,-1)),Ie=v(()=>d("br",null,null,-1)),ze=v(()=>d("br",null,null,-1)),qe=v(()=>d("br",null,null,-1)),Ee={key:0},De={class:"col-1"},Me=v(()=>d("br",null,null,-1)),Oe=v(()=>d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),d("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),d("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Fe=v(()=>d("hr",{class:"border-secondary"},null,-1)),Ne={key:0},$e={key:1},je=v(()=>d("hr",null,null,-1)),Re={key:1},Ze=v(()=>d("hr",null,null,-1)),Je=v(()=>d("br",null,null,-1)),He={key:0},Ge=v(()=>d("br",null,null,-1)),Qe=v(()=>d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Xe={key:2},Ye=v(()=>d("hr",null,null,-1)),Ke={key:4},et=v(()=>d("hr",null,null,-1)),tt=["onClick"],nt={key:0},at={key:1},ot={key:2},it={key:2};function lt(e,a,m,P,c,u){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-avatar"),V=h("openwb-base-text-input"),I=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),y=h("openwb-base-button-group-input"),x=h("openwb-base-card"),$=h("openwb-base-click-button"),j=h("font-awesome-layers"),z=h("openwb-base-alert"),R=h("openwb-base-array-input"),q=h("openwb-base-range-input"),Z=h("openwb-base-number-input"),J=h("openwb-base-submit-buttons");return i(),p(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>u.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+k(u.getChargePointName(c.modalChargePointIndex))+'" (ID: '+k(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>u.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+k(u.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+k(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>u.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+k(u.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",Be,[d("form",We,[n(x,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),p(S,null,T(u.installedChargePoints,(l,r)=>(i(),f(x,{key:r,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?g("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:w=>u.removeChargePointModal(r,w)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(r,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[r].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),p("span",Ae,[n(I,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":e.$store.state.mqtt[r].template,"onUpdate:modelValue":t=>e.updateState(r,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):g("",!0),Se,n(N,{chargePoint:l,"onUpdate:configuration":t=>u.updateConfiguration(r,t)},null,8,["chargePoint","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),p("div",Ue,[xe,n(W,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(r,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(r,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(W,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(r,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(r,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),Te,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Ie,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),ze,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),qe,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):g("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(i(),p("hr",Ee)):g("",!0),n(I,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:u.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[d("span",De,[n($,{class:O(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:u.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),Me,Oe]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Fe,n(x,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):g("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),p("div",Ne,[n(z,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),p("div",$e,[(i(!0),p(S,null,T(u.chargePointTemplates,(l,r)=>(i(),f(x,{key:r,title:l.name+" (ID: "+u.getChargePointTemplateIndex(r)+")",collapsible:!0,collapsed:!0},F({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(r,t,"name"),disabled:r.endsWith("/0")},F({_:2},[r.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),u.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(r,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),je,n(W,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(r,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(i(),p("div",Re,[l.disable_after_unplug?(i(),f(R,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(r,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):g("",!0)])):g("",!0),Ze,n(W,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(z,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Je,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),p("span",He," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):g("",!0),Ge,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Qe,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||u.dcChargingEnabled!==!0?(i(),p("div",Xe,[n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(r,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(r,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(Z,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(r,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),Ye,m.installAssistantActive?g("",!0):(i(),p("div",Ke,[et,n(W,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(r,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(r,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(W,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>u.addChargePointTemplateAutolockPlan(r,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),p(S,null,T(u.getChargePointTemplateAutolockPlans(r),(t,w)=>(i(),f(x,{key:w,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),p("span",{key:0,onClick:le(A=>e.updateState(w,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),p("span",nt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):g("",!0),t.frequency.selected=="daily"?(i(),p("span",at,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):g("",!0),t.frequency.selected=="weekly"?(i(),p("span",ot,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):g("",!0)],10,tt)):g("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:A=>u.removeChargePointTemplateAutolockPlanModal(r,w,A)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):g("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(w,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(w,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(w,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(w,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(w,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(w,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(w,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):g("",!0),t.frequency.selected=="weekly"?(i(),p("div",it,[(i(!0),p(S,null,T(e.weekdays,(_,A)=>(i(),f(y,{key:A,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[A],"onUpdate:modelValue":H=>e.updateState(w,H,"frequency.weekly."+A)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):g("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?g("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:w=>u.removeChargePointTemplateModal(r,w)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(J,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const st=U(Le,[["render",lt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),mt=Object.freeze(Object.defineProperty({__proto__:null,default:st},Symbol.toStringTag,{value:"Module"}));export{de as C,be as a,st as b,mt as c};
diff --git a/web/settings/assets/Chart-3cf86dec.js b/web/settings/assets/Chart-0ed3fc8e.js
similarity index 99%
rename from web/settings/assets/Chart-3cf86dec.js
rename to web/settings/assets/Chart-0ed3fc8e.js
index 0bc9a5b514..643f73f052 100644
--- a/web/settings/assets/Chart-3cf86dec.js
+++ b/web/settings/assets/Chart-0ed3fc8e.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-068b063d.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-b0e5e618.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-cb19843a.js b/web/settings/assets/CloudConfig-5ecdadd6.js
similarity index 99%
rename from web/settings/assets/CloudConfig-cb19843a.js
rename to web/settings/assets/CloudConfig-5ecdadd6.js
index 68569698e0..05be2ec17c 100644
--- a/web/settings/assets/CloudConfig-cb19843a.js
+++ b/web/settings/assets/CloudConfig-5ecdadd6.js
@@ -1 +1 @@
-import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-068b063d.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
+import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-b0e5e618.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
diff --git a/web/settings/assets/DataManagement-10c6dd29.js b/web/settings/assets/DataManagement-10c6dd29.js
deleted file mode 100644
index 6a1d506594..0000000000
--- a/web/settings/assets/DataManagement-10c6dd29.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as L,af as V,ag as z,ah as R,ai as j,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-068b063d.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as W,u as m,k as r,l as b,A as w,N as l,y as i,z as k,D as o,x as n,a2 as U,a3 as q,J as O,B as v,q as D,K as M,a4 as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const G={name:"BackupCloudConfigFallback",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},J={class:"backup-cloud-fallback"},Z={key:1};function K(t,e,u,g,a,s){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",J,[Object.keys(u.backupCloud.configuration).length==0?(r(),w(h,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+k(u.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",Z,[o(h,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(u.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":u.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>s.updateConfiguration(y,"configuration"))},{help:l(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(u.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const Q=W(G,[["render",K],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),X={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-190eaa49.js"),["assets/backup_cloud-190eaa49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-17c766db.js"),["assets/backup_cloud-17c766db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-198617e1.js"),["assets/backup_cloud-198617e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f0bc932b.js"),["assets/backup_cloud-f0bc932b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:Q})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Y(t,e,u,g,a,s){const h=m("openwb-base-heading");return r(),b(O,null,[o(h,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(s.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>s.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>s.sendCommand(c))},null,40,["backupCloud"]))],64)}const $=W(X,[["render",Y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(V,z,R,j,H);const ee={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:$},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let a=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:a,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${a}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let a=new FormData;a.append("file",e),a.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",a,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(s=>{if(s.response){console.error(s.response.status,s.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+s.response.status+": "+s.response.data}else s.request?(console.error(s.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",s.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},te={class:"system"},ne=n("h2",null,"Achtung!",-1),oe=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ie={key:1},se={name:"backupForm"},ae=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),le={class:"row justify-content-center"},ue={class:"col-md-4 d-flex py-1 justify-content-center"},de={key:0,name:"restoreForm"},re=n("hr",null,null,-1),ce=n("br",null,null,-1),pe={class:"input-group"},me={class:"input-group-prepend"},he={class:"input-group-text"},be={class:"custom-file"},ge={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},fe={class:"input-group-append"},_e=["disabled"],ke={class:"row justify-content-center"},ye={class:"col-md-4 d-flex py-1 justify-content-center"},ve={key:1,name:"cloudBackupForm"},we=n("hr",null,null,-1),Ce=n("br",null,null,-1),Be=n("br",null,null,-1),De=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Se={key:0},Oe={name:"dataMigrationForm"},We=n("br",null,null,-1),Fe=n("br",null,null,-1),Me={class:"input-group"},xe={class:"input-group-prepend"},Ae={class:"input-group-text"},Te={class:"custom-file"},Le={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Ve={class:"input-group-append"},ze=["disabled"],Re={class:"row justify-content-center"},je={class:"col-md-4 d-flex py-1 justify-content-center"},He={key:1,name:"resetForm"},Ee={class:"row justify-content-center"},Pe={class:"col-md-4 d-flex py-1 justify-content-center"};function Ne(t,e,u,g,a,s){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),C=m("openwb-base-click-button"),F=m("openwb-base-select-input"),x=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),T=m("openwb-base-submit-buttons"),S=m("openwb-base-card");return r(),b("div",te,[u.installAssistantActive?v("",!0):(r(),w(c,{key:0,subtype:"danger"},{default:l(()=>[ne,oe,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),a.warningAcknowledged||u.installAssistantActive?(r(),b("div",ie,[o(S,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",se,[o(y,null,{default:l(()=>[i("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ae,i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",le,[n("div",ue,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>s.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[i(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),a.showRestoreSection?(r(),b("form",de,[re,o(y,null,{default:l(()=>[i("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),ce,i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",pe,[n("div",me,[n("div",he,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",be,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>s.updateSelectedRestoreFile(d))},null,32),n("label",ge,k(a.selectedRestoreFile?a.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",fe,[n("button",{class:D(["btn",a.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>s.uploadRestoreFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,_e)])]),n("div",ke,[n("div",ye,[o(C,{class:D(a.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>s.restoreBackup())},{default:l(()=>[i(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",ve,[we,o(y,null,{default:l(()=>[i(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),Ce,i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Be,i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),De,i(" . ")]),_:1}),o(F,{class:"mb-2",title:"Backup-Cloud",options:s.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>s.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",Se,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(x,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>s.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>s.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>s.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(T,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),w(S,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Oe,[o(c,{subtype:"info"},{default:l(()=>[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),We,i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Fe,i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Me,[n("div",xe,[n("div",Ae,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Te,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>s.updateSelectedDataMigrationFile(p))},null,32),n("label",Le,k(a.selectedDataMigrationFile?a.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Ve,[n("button",{class:D(["btn",a.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!a.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>s.uploadDataMigrationFile())},[i(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ze)])]),o(y,null,{default:l(()=>[i("Zuordnung der Komponenten")]),_:1}),(r(!0),b(O,null,M(a.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[i(k(p.sectionName),1)]),_:2},1024),(r(!0),b(O,null,M(p.sectionComponents,f=>(r(),w(F,{key:f.key,title:f.label,options:s.getMigrationOptions(f.validTypes),modelValue:a.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>a.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[i(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",Re,[n("div",je,[o(C,{class:D(a.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!a.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>s.dataMigration())},{default:l(()=>[i(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",He,[o(S,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ee,[n("div",Pe,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>s.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Xe=W(ee,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]);export{Xe as default};
diff --git a/web/settings/assets/DataManagement-eb2fc5d7.js b/web/settings/assets/DataManagement-eb2fc5d7.js
new file mode 100644
index 0000000000..8e383b293d
--- /dev/null
+++ b/web/settings/assets/DataManagement-eb2fc5d7.js
@@ -0,0 +1 @@
+import{l as L,af as z,ag as V,ah as j,ai as R,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-b0e5e618.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as S,u as m,k as r,l as b,A as C,N as l,y as s,z as k,D as o,x as n,a2 as U,a3 as q,J as W,B as v,q as D,K as F,a4 as I}from"./vendor-f2b8aa6f.js";const G={emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},J=S(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),$={name:"BackupCloudConfigFallback",mixins:[J]},Z={class:"backup-cloud-fallback"},K={key:1};function Q(t,e,u,g,i,a){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",Z,[Object.keys(t.backupCloud.configuration).length==0?(r(),C(h,{key:0,subtype:"info"},{default:l(()=>[s(' Die Backup-Cloud "'+k(t.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",K,[o(h,{subtype:"warning"},{default:l(()=>[s(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(t.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":t.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>t.updateConfiguration(y,"configuration"))},{help:l(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(t.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const X=S($,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),Y={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-7c8657cf.js"),["assets/backup_cloud-7c8657cf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f487f6db.js"),["assets/backup_cloud-f487f6db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-ca22b0b2.js"),["assets/backup_cloud-ca22b0b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-0c265ebd.js"),["assets/backup_cloud-0c265ebd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:X})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function ee(t,e,u,g,i,a){const h=m("openwb-base-heading");return r(),b(W,null,[o(h,null,{default:l(()=>[s(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),C(q(a.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>a.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>a.sendCommand(c))},null,40,["backupCloud"]))],64)}const te=S(Y,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(z,V,j,R,H);const ne={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:te},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let i=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:i,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let i=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:i,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${i}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let i=new FormData;i.append("file",e),i.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",i,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},oe={class:"system"},se=n("h2",null,"Achtung!",-1),ie=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ae={key:1},le={name:"backupForm"},ue=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),de={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"},ce={key:0,name:"restoreForm"},pe=n("hr",null,null,-1),me=n("br",null,null,-1),he={class:"input-group"},be={class:"input-group-prepend"},ge={class:"input-group-text"},fe={class:"custom-file"},_e={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},ke={class:"input-group-append"},ye=["disabled"],ve={class:"row justify-content-center"},Ce={class:"col-md-4 d-flex py-1 justify-content-center"},we={key:1,name:"cloudBackupForm"},Be=n("hr",null,null,-1),De=n("br",null,null,-1),Se=n("br",null,null,-1),Oe=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),We={key:0},Me={name:"dataMigrationForm"},Fe=n("br",null,null,-1),Te=n("br",null,null,-1),Ae={class:"input-group"},xe={class:"input-group-prepend"},Le={class:"input-group-text"},ze={class:"custom-file"},Ve={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},je={class:"input-group-append"},Re=["disabled"],He={class:"row justify-content-center"},Ee={class:"col-md-4 d-flex py-1 justify-content-center"},Pe={key:1,name:"resetForm"},Ne={class:"row justify-content-center"},Ue={class:"col-md-4 d-flex py-1 justify-content-center"};function qe(t,e,u,g,i,a){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),w=m("openwb-base-click-button"),M=m("openwb-base-select-input"),T=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),x=m("openwb-base-submit-buttons"),O=m("openwb-base-card");return r(),b("div",oe,[u.installAssistantActive?v("",!0):(r(),C(c,{key:0,subtype:"danger"},{default:l(()=>[se,ie,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),i.warningAcknowledged||u.installAssistantActive?(r(),b("div",ae,[o(O,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",le,[o(y,null,{default:l(()=>[s("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[s(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ue,s(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",de,[n("div",re,[o(w,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[s(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),i.showRestoreSection?(r(),b("form",ce,[pe,o(y,null,{default:l(()=>[s("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[s(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),me,s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",he,[n("div",be,[n("div",ge,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",fe,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>a.updateSelectedRestoreFile(d))},null,32),n("label",_e,k(i.selectedRestoreFile?i.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",ke,[n("button",{class:D(["btn",i.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>a.uploadRestoreFile())},[s(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ye)])]),n("div",ve,[n("div",Ce,[o(w,{class:D(i.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>a.restoreBackup())},{default:l(()=>[s(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",we,[Be,o(y,null,{default:l(()=>[s(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[s(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),De,s(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Se,s(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Oe,s(" . ")]),_:1}),o(M,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>a.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",We,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[s(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(T,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>a.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>a.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>a.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(x,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),C(O,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Me,[o(c,{subtype:"info"},{default:l(()=>[s(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[s(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),Fe,s(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,s(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Ae,[n("div",xe,[n("div",Le,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ze,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>a.updateSelectedDataMigrationFile(p))},null,32),n("label",Ve,k(i.selectedDataMigrationFile?i.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",je,[n("button",{class:D(["btn",i.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>a.uploadDataMigrationFile())},[s(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,Re)])]),o(y,null,{default:l(()=>[s("Zuordnung der Komponenten")]),_:1}),(r(!0),b(W,null,F(i.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[s(k(p.sectionName),1)]),_:2},1024),(r(!0),b(W,null,F(p.sectionComponents,f=>(r(),C(M,{key:f.key,title:f.label,options:a.getMigrationOptions(f.validTypes),modelValue:i.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>i.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[s(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",He,[n("div",Ee,[o(w,{class:D(i.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>a.dataMigration())},{default:l(()=>[s(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",Pe,[o(O,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ne,[n("div",Ue,[o(w,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>a.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),s(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[s(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Ie=S(ne,[["render",qe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Ke=Object.freeze(Object.defineProperty({__proto__:null,default:Ie},Symbol.toStringTag,{value:"Module"}));export{J as B,Ie as D,Ke as a};
diff --git a/web/settings/assets/DebugConfig-40886be8.js b/web/settings/assets/DebugConfig-4a040dc7.js
similarity index 98%
rename from web/settings/assets/DebugConfig-40886be8.js
rename to web/settings/assets/DebugConfig-4a040dc7.js
index 4f3cafa8d7..202d3efc97 100644
--- a/web/settings/assets/DebugConfig-40886be8.js
+++ b/web/settings/assets/DebugConfig-4a040dc7.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-068b063d.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-b0e5e618.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),p=s("openwb-base-avatar"),m=s("openwb-base-card");return d(),w(m,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(p,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=f($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",mixins:[k],components:{OpenwbLogCard:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),p=s("openwb-base-alert"),m=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),_("div",z,[v("form",V,[i(m,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>[b(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')]),_:1},8,["model-value"]),i(p,{subtype:"warning"},{default:l(()=>[b(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')]),_:1})]),_:1}),i(c,{formName:"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),_(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=f(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-4b985756.js b/web/settings/assets/GeneralChargeConfig-4b985756.js
new file mode 100644
index 0000000000..35ec9ba341
--- /dev/null
+++ b/web/settings/assets/GeneralChargeConfig-4b985756.js
@@ -0,0 +1 @@
+import{_ as g,C}from"./index-b0e5e618.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as b,u as o,k as l,l as s,D as n,N as a,y as r,z as h,x as d,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";const L={emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q=b(L,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),M={name:"ElectricityTariffConfigFallback",mixins:[q]},O={class:"backup-cloud-fallback"};function A(e,t,c,v,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",O,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+h(e.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":e.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>e.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[d("pre",null,h(JSON.stringify(e.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const U=b(M,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),F={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>T(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-c641235d.js"),["assets/electricity_tariff-c641235d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-8c65c060.js"),["assets/electricity_tariff-8c65c060.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-bc229946.js"),["assets/electricity_tariff-bc229946.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-86994943.js"),["assets/electricity_tariff-86994943.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-921487ff.js"),["assets/electricity_tariff-921487ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:U})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function D(e,t,c,v,y,p){const u=o("openwb-base-heading");return l(),s(P,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+h(c.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:c.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const N=b(F,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),I={name:"OpenwbGeneralChargeConfigView",mixins:[C],components:{OpenwbElectricityTariffProxy:N},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(c=>c.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},j={class:"generalChargeConfig"},R={name:"generalChargeConfigForm"},Z={key:0},G={key:1},x=d("br",null,null,-1),J=d("br",null,null,-1),K=d("br",null,null,-1),H=d("hr",null,null,-1),Q=d("br",null,null,-1),X={key:1},Y={key:2},ee={key:0},te={key:1},ne=d("br",null,null,-1),ie={key:0};function re(e,t,c,v,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),_=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),$=o("openwb-base-submit-buttons");return l(),s("div",j,[d("form",R,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",Z,[n(u,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",G,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),x,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),J,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),K,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),H,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),Q,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",X,[n(u,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Y,[n(_,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(_,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(_,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",ee,[n(u,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",te,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(u,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ne,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",ie,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n($,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const ae=b(I,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ue=Object.freeze(Object.defineProperty({__proto__:null,default:ae},Symbol.toStringTag,{value:"Module"}));export{q as E,ue as G};
diff --git a/web/settings/assets/GeneralChargeConfig-67ad6713.js b/web/settings/assets/GeneralChargeConfig-67ad6713.js
deleted file mode 100644
index ad9d2b8fe0..0000000000
--- a/web/settings/assets/GeneralChargeConfig-67ad6713.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as g,C as T}from"./index-068b063d.js";import{_ as $}from"./dynamic-import-helper-be004503.js";import{_ as h,u as o,k as l,l as s,D as n,N as a,y as r,z as _,x as c,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const L={name:"ElectricityTariffConfigFallback",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q={class:"backup-cloud-fallback"};function A(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",q,[n(d,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+_(u.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":u.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>p.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:a(()=>[c("pre",null,_(JSON.stringify(u.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const M=h(L,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),O={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>$(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9a6e448e.js"),["assets/electricity_tariff-9a6e448e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-1126e706.js"),["assets/electricity_tariff-1126e706.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-e02e508f.js"),["assets/electricity_tariff-e02e508f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-3790750f.js"),["assets/electricity_tariff-3790750f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-2e93397c.js"),["assets/electricity_tariff-2e93397c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:M})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function U(e,t,u,v,y,p){const d=o("openwb-base-heading");return l(),s(P,null,[n(d,null,{default:a(()=>[r(' Einstellungen für Modul "'+_(u.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:u.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const F=h(O,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),D={name:"OpenwbGeneralChargeConfigView",mixins:[T],components:{OpenwbElectricityTariffProxy:F},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},N={class:"generalChargeConfig"},I={name:"generalChargeConfigForm"},R={key:0},Z={key:1},j=c("br",null,null,-1),x=c("br",null,null,-1),J=c("br",null,null,-1),G=c("hr",null,null,-1),K=c("br",null,null,-1),H={key:1},Q={key:2},X={key:0},Y={key:1},ee=c("br",null,null,-1),te={key:0};function ne(e,t,u,v,y,p){const d=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),b=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",N,[c("form",I,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",R,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Z,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),j,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),x,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),J,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),G,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),K,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",H,[n(d,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Q,[n(b,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(b,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(b,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",X,[n(d,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",Y,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(d,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ee,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",te,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n(C,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const pe=h(D,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]);export{pe as default};
diff --git a/web/settings/assets/GeneralConfig-1396a845.js b/web/settings/assets/GeneralConfig-1396a845.js
new file mode 100644
index 0000000000..8af3365773
--- /dev/null
+++ b/web/settings/assets/GeneralConfig-1396a845.js
@@ -0,0 +1 @@
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-b0e5e618.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as w,u as c,k as l,l as d,A as h,N as o,y as a,z as f,D as n,x as s,a2 as M,a3 as I,J as G,B as _}from"./vendor-f2b8aa6f.js";const ie={emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le=w(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),se={name:"WebThemeFallback",mixins:[le]},ue={class:"web-theme-fallback"},de={key:1};function pe(e,t,p,B,y,m){const g=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),d("div",ue,[Object.keys(e.webTheme.configuration).length==0?(l(),h(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(e.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",de,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(e.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":e.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>e.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,f(JSON.stringify(e.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const ge=w(se,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const me={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),M({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ce(e,t,p,B,y,m){const g=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),d(G,null,[p.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(p.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(p.webTheme.name)+'" ',1)]),_:1}),(l(),h(I(m.myComponent),{webTheme:p.webTheme,"onUpdate:configuration":t[0]||(t[0]=W=>m.updateConfiguration(W))},null,40,["webTheme"]))],64)}const be=w(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),fe={emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},_e=w(fe,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),he={name:"RippleControlReceiverConfigFallback",mixins:[_e]},ve={class:"ripple-control-receiver-fallback"},we={key:1};function We(e,t,p,B,y,m){const g=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),d("div",ve,[Object.keys(e.rippleControlReceiver.configuration).length==0?(l(),h(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(e.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",we,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(e.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":e.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>e.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,f(JSON.stringify(e.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const Be=w(he,[["render",We],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ye={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),M({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-6eba6a9a.js"),["assets/ripple_control_receiver-6eba6a9a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-d8f4b5b9.js"),["assets/ripple_control_receiver-d8f4b5b9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:Be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function Se(e,t,p,B,y,m){const g=c("openwb-base-heading");return l(),d(G,null,[n(g,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(p.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(I(m.myComponent),{rippleControlReceiver:p.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>m.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>m.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const ke=w(ye,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const Ce={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:be,OpenwbRippleControlReceiverProxy:ke,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},Ve={class:"generalConfig"},Re={name:"generalConfigForm"},Te=s("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),$e=s("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),s("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),s("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),qe={key:0},ze=s("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),De={key:1},Oe={key:1},Ee=s("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),Ne=s("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),Ae=s("br",null,null,-1),xe=s("br",null,null,-1),Pe=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Le={class:"border border-info w-100 p-1"},Ue=s("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Je=s("p",null,"Beispiel 2: integriertes Display abschalten",-1),Fe=s("br",null,null,-1),je=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Me={class:"border border-info w-100 p-1"},Ie={key:0},Ge={key:1},Ke={key:0},He=s("br",null,null,-1),Ze=s("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Xe=s("br",null,null,-1),Qe=s("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),Ye=s("hr",null,null,-1),et={key:2},tt={key:0},nt={key:0},ot={key:1},at={key:0},rt={key:0},it={key:1};function lt(e,t,p,B,y,m){const g=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),W=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),d("div",Ve,[s("form",Re,[n(W,{title:"Steuerungsmodus"},{default:o(()=>[n(g,{subtype:"info"},{default:o(()=>[Te,$e]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=u=>e.updateState("openWB/general/extern",u))},null,8,["model-value"]),p.installAssistantActive?_("",!0):(l(),d("div",qe,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=u=>e.updateState("openWB/general/modbus_control",u))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),ze,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),d("div",De,[n(g,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),p.installAssistantActive?_("",!0):(l(),d("div",Oe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=u=>e.updateState("openWB/general/http_api",u))},{help:o(()=>[Ee,Ne,s("ul",null,[s("li",null,[a(" GET-Request:"),Ae,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(m.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),s("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),xe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,s("pre",Le,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),Ue,Je,s("ul",null,[s("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Fe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),je,s("pre",Me,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(W,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Ie,[n(g,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),p.installAssistantActive?_("",!0):(l(),d("div",Ge,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ke,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=u=>e.updateState("openWB/general/control_interval",u))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),He,Ze]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=u=>e.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Xe,Qe]),_:1},8,["model-value"])])):_("",!0),Ye])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",et,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(g,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:m.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=u=>m.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),d("div",tt,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=u=>m.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),p.installAssistantActive?_("",!0):(l(),h(W,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",nt,[n(g,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),d("div",ot,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),d("div",at,[n(k,{class:"mb-2",title:"Theme",groups:m.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=u=>m.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=u=>m.updateConfiguration("openWB/general/web_theme",u))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),p.installAssistantActive?_("",!0):(l(),h(W,{key:1,title:"Lade-Log"},{default:o(()=>{var u,C,V,R,T,$,q,z,D,O,E,N,A,x,P,L;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",rt,[n(g,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),d("div",it,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=u=>e.$emit("save")),onReset:t[27]||(t[27]=u=>e.$emit("reset")),onDefaults:t[28]||(t[28]=u=>e.$emit("defaults"))})])])}const st=w(Ce,[["render",lt],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),mt=Object.freeze(Object.defineProperty({__proto__:null,default:st},Symbol.toStringTag,{value:"Module"}));export{st as G,_e as R,mt as a};
diff --git a/web/settings/assets/GeneralConfig-9529e63d.js b/web/settings/assets/GeneralConfig-9529e63d.js
deleted file mode 100644
index d46c890b5a..0000000000
--- a/web/settings/assets/GeneralConfig-9529e63d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-068b063d.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as B,u as c,k as l,l as g,A as h,N as o,y as a,z as f,D as n,x as u,a2 as I,a3 as M,J as G,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ie={name:"WebThemeFallback",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le={class:"web-theme-fallback"},se={key:1};function ue(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",le,[Object.keys(s.webTheme.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(s.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",se,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(s.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":s.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const de=B(ie,[["render",ue],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const pe={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),I({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:de})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ge(e,t,s,W,y,p){const m=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),g(G,null,[s.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(s.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(s.webTheme.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{webTheme:s.webTheme,"onUpdate:configuration":t[0]||(t[0]=w=>p.updateConfiguration(w))},null,40,["webTheme"]))],64)}const me=B(pe,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={name:"RippleControlReceiverConfigFallback",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},be={class:"ripple-control-receiver-fallback"},fe={key:1};function _e(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),g("div",be,[Object.keys(s.rippleControlReceiver.configuration).length==0?(l(),h(m,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),g("div",fe,[n(m,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(s.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":s.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>p.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:o(()=>[u("pre",null,f(JSON.stringify(s.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const he=B(ce,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ve={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),I({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-51e952e1.js"),["assets/ripple_control_receiver-51e952e1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7a1236a4.js"),["assets/ripple_control_receiver-7a1236a4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:he})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function we(e,t,s,W,y,p){const m=c("openwb-base-heading");return l(),g(G,null,[n(m,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(s.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(M(p.myComponent),{rippleControlReceiver:s.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>p.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>p.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const Be=B(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const We={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:me,OpenwbRippleControlReceiverProxy:Be,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(s=>s.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},ye={class:"generalConfig"},Se={name:"generalConfigForm"},ke=u("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),Ve=u("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),u("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),u("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),Ce={key:0},Re=u("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),Te={key:1},qe={key:1},$e=u("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),De=u("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),ze=u("br",null,null,-1),Oe=u("br",null,null,-1),Ee=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ne={class:"border border-info w-100 p-1"},xe=u("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Ae=u("p",null,"Beispiel 2: integriertes Display abschalten",-1),Le=u("br",null,null,-1),Pe=u("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Ue={class:"border border-info w-100 p-1"},Je={key:0},Fe={key:1},je={key:0},Ie=u("br",null,null,-1),Me=u("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Ge=u("br",null,null,-1),Ke=u("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),He=u("hr",null,null,-1),Ze={key:2},Xe={key:0},Qe={key:0},Ye={key:1},et={key:0},tt={key:0},nt={key:1};function ot(e,t,s,W,y,p){const m=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),w=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),g("div",ye,[u("form",Se,[n(w,{title:"Steuerungsmodus"},{default:o(()=>[n(m,{subtype:"info"},{default:o(()=>[ke,Ve]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=d=>e.updateState("openWB/general/extern",d))},null,8,["model-value"]),s.installAssistantActive?_("",!0):(l(),g("div",Ce,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=d=>e.updateState("openWB/general/modbus_control",d))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),Re,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),g("div",Te,[n(m,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),s.installAssistantActive?_("",!0):(l(),g("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=d=>e.updateState("openWB/general/http_api",d))},{help:o(()=>[$e,De,u("ul",null,[u("li",null,[a(" GET-Request:"),ze,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(p.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Oe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Ee,u("pre",Ne,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),xe,Ae,u("ul",null,[u("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Le,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(p.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,u("pre",Ue,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(w,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Je,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),s.installAssistantActive?_("",!0):(l(),g("div",Fe,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",je,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=d=>e.updateState("openWB/general/control_interval",d))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),Ie,Me]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=d=>e.updateState("openWB/general/grid_protection_configured",d))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Ge,Ke]),_:1},8,["model-value"])])):_("",!0),He])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),g("div",Ze,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(m,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:p.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=d=>p.updateSelectedRippleControlReceiverModule(d))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),g("div",Xe,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=d=>p.updateConfiguration("openWB/general/ripple_control_receiver/module",d))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),s.installAssistantActive?_("",!0):(l(),h(w,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",Qe,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",Ye,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),g("div",et,[n(k,{class:"mb-2",title:"Theme",groups:p.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=d=>p.updateSelectedWebTheme(d))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=d=>p.updateConfiguration("openWB/general/web_theme",d))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),s.installAssistantActive?_("",!0):(l(),h(w,{key:1,title:"Lade-Log"},{default:o(()=>{var d,V,C,R,T,q,$,D,z,O,E,N,x,A,L,P;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),g("div",tt,[n(m,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),g("div",nt,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(d=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:d.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=d=>e.$emit("save")),onReset:t[27]||(t[27]=d=>e.$emit("reset")),onDefaults:t[28]||(t[28]=d=>e.$emit("defaults"))})])])}const gt=B(We,[["render",ot],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]);export{gt as default};
diff --git a/web/settings/assets/HardwareInstallation-a0083e3a.js b/web/settings/assets/HardwareInstallation-a0083e3a.js
new file mode 100644
index 0000000000..46a59a3da8
--- /dev/null
+++ b/web/settings/assets/HardwareInstallation-a0083e3a.js
@@ -0,0 +1 @@
+import{l as N,d as G,t as K,a7 as H,a0 as F,P as $,O as J,N as Z,F as Q}from"./vendor-fortawesome-71546160.js";import{_ as e,C as X}from"./index-b0e5e618.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as A,u as p,k as u,l as g,A as E,N as _,y as s,z as b,D as r,x as c,a2 as j,a3 as Y,B as R,J as L,K as k,q as C,S as ee,U as oe}from"./vendor-f2b8aa6f.js";const te={emits:["update:configuration"],props:{device:{type:Object,required:!0}},methods:{updateConfiguration(o,t=void 0){this.$emit("update:configuration",{value:o,object:t})}}},W=A(te,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),_e={name:"DeviceFallback",mixins:[W]},ie={class:"device-fallback"},ne={key:1};function re(o,t,i,m,a,d){const l=p("openwb-base-alert"),D=p("openwb-base-textarea");return u(),g("div",ie,[Object.keys(o.device.configuration).length==0?(u(),E(l,{key:0,subtype:"info"},{default:_(()=>[s(' Der Gerät-Typ "'+b(o.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(u(),g("div",ne,[r(l,{subtype:"warning"},{default:_(()=>[s(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+b(o.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(D,{title:"Konfiguration",subtype:"json","model-value":o.device.configuration,"onUpdate:modelValue":t[0]||(t[0]=T=>o.updateConfiguration(T,"configuration"))},{help:_(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),r(l,{subtype:"info"},{default:_(()=>[c("pre",null,b(JSON.stringify(o.device.configuration,void 0,2)),1)]),_:1})]))])}const de=A(_e,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={mixins:[W],props:{component:{type:Object,required:!0}}},se=A(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),ae={name:"ComponentFallback",mixins:[se]},ve={class:"component-fallback"},me={key:1};function pe(o,t,i,m,a,d){const l=p("openwb-base-alert"),D=p("openwb-base-textarea");return u(),g("div",ve,[Object.keys(o.component.configuration).length==0?(u(),E(l,{key:0,subtype:"info"},{default:_(()=>[s(' Der Komponenten-Typ "'+b(o.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(u(),g("div",me,[r(l,{subtype:"warning"},{default:_(()=>[s(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+b(o.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(D,{title:"Konfiguration",subtype:"json","model-value":o.component.configuration,"onUpdate:modelValue":t[0]||(t[0]=T=>o.updateConfiguration(T,"configuration"))},{help:_(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),r(l,{subtype:"info"},{default:_(()=>[c("pre",null,b(JSON.stringify(o.component.configuration,void 0,2)),1)]),_:1})]))])}const ce=A(ae,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),le={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},computed:{myComponent(){var o;return console.debug(`loading component: ${this.device.type} / ${(o=this.component)==null?void 0:o.type}`),this.component!==void 0?j({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-4f7c15a3.js"),["assets/device-4f7c15a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-40b4b0c5.js"),["assets/device-40b4b0c5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-db16ee4d.js"),["assets/device-db16ee4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-c034f6f0.js"),["assets/device-c034f6f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-bf4936ba.js"),["assets/device-bf4936ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-863d779b.js"),["assets/counter-863d779b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-8118a66e.js"),["assets/device-8118a66e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-3688b404.js"),["assets/bat-3688b404.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-eacbb4cc.js"),["assets/counter-eacbb4cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-3c0a0263.js"),["assets/device-3c0a0263.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-fab7ed1c.js"),["assets/inverter-fab7ed1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-db36cac3.js"),["assets/counter-db36cac3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-829b538b.js"),["assets/device-829b538b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-f3b65772.js"),["assets/inverter-f3b65772.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-d9f34fe2.js"),["assets/device-d9f34fe2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-92895c7b.js"),["assets/counter-92895c7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-7bfbb863.js"),["assets/device-7bfbb863.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-79d423ad.js"),["assets/inverter-79d423ad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-f5f3db47.js"),["assets/bat-f5f3db47.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-646a2df0.js"),["assets/device-646a2df0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-862c0f08.js"),["assets/bat-862c0f08.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-bb7c4b01.js"),["assets/counter-bb7c4b01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-ca2bde32.js"),["assets/device-ca2bde32.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-beac0910.js"),["assets/inverter-beac0910.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-037fc88f.js"),["assets/bat-037fc88f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ae20b8ea.js"),["assets/counter_sm-ae20b8ea.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-850717d0.js"),["assets/device-850717d0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-f8fdf5c3.js"),["assets/inverter_secondary-f8fdf5c3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-5261b4cb.js"),["assets/bat-5261b4cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-c4a0dc83.js"),["assets/counter-c4a0dc83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-7fc12e51.js"),["assets/device-7fc12e51.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-6217c8a3.js"),["assets/inverter-6217c8a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-26612c12.js"),["assets/bat-26612c12.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-fc3afadd.js"),["assets/counter-fc3afadd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-c0dfc296.js"),["assets/device-c0dfc296.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-f504e343.js"),["assets/inverter-f504e343.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-cc1835de.js"),["assets/bat-cc1835de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-809d5a8a.js"),["assets/counter-809d5a8a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f9bc5796.js"),["assets/device-f9bc5796.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-1528dc9b.js"),["assets/inverter-1528dc9b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-2407fa25.js"),["assets/counter-2407fa25.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-99fa45c8.js"),["assets/device-99fa45c8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-d6d46ef8.js"),["assets/device-d6d46ef8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-1c6c9346.js"),["assets/bat-1c6c9346.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-ddf406fa.js"),["assets/counter-ddf406fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-c605ea36.js"),["assets/device-c605ea36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-bb47d837.js"),["assets/inverter-bb47d837.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-a51c4464.js"),["assets/counter-a51c4464.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-aa58f408.js"),["assets/device-aa58f408.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-c3ed00fb.js"),["assets/counter-c3ed00fb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-1859f43b.js"),["assets/device-1859f43b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-b0ea296b.js"),["assets/inverter-b0ea296b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-3b65739e.js"),["assets/device-3b65739e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-e525bf90.js"),["assets/counter-e525bf90.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-d659f206.js"),["assets/device-d659f206.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-3fc7917c.js"),["assets/counter-3fc7917c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-44b38c3f.js"),["assets/device-44b38c3f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-86046891.js"),["assets/device-86046891.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-93d278b2.js"),["assets/inverter-93d278b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-98e25fe5.js"),["assets/device-98e25fe5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-cbe7bc84.js"),["assets/bat-cbe7bc84.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-70ddc5c4.js"),["assets/counter-70ddc5c4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-ab0439ee.js"),["assets/device-ab0439ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-b47b017e.js"),["assets/inverter-b47b017e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-3e055cd7.js"),["assets/device-3e055cd7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-e23118da.js"),["assets/bat-e23118da.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-375e955a.js"),["assets/bat-375e955a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-e17b6711.js"),["assets/counter-e17b6711.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-61827c16.js"),["assets/inverter-61827c16.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-3bf3716c.js"),["assets/bat-3bf3716c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-6e608762.js"),["assets/consumption_counter-6e608762.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-eb577878.js"),["assets/counter-eb577878.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-58a430d5.js"),["assets/device-58a430d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-c861a20b.js"),["assets/inverter-c861a20b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-d5bf52e5.js"),["assets/inverter-d5bf52e5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-079772c2.js"),["assets/counter-079772c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-671cfac2.js"),["assets/device-671cfac2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-d2cdbd98.js"),["assets/counter-d2cdbd98.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-c491b9c2.js"),["assets/device-c491b9c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-3d8e5c7f.js"),["assets/inverter-3d8e5c7f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-359d7e50.js"),["assets/device-359d7e50.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-622f0263.js"),["assets/device-622f0263.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-98fd1cc4.js"),["assets/device-98fd1cc4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-9dd2e78b.js"),["assets/counter-9dd2e78b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-3c779cdd.js"),["assets/device-3c779cdd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-08fe3db1.js"),["assets/device-08fe3db1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-b6ab13cb.js"),["assets/device-b6ab13cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-86d1c852.js"),["assets/bat-86d1c852.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-18ec27d5.js"),["assets/counter-18ec27d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-8c349616.js"),["assets/device-8c349616.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-4130514e.js"),["assets/inverter-4130514e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-55bd9132.js"),["assets/counter-55bd9132.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-97406357.js"),["assets/inverter-97406357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-afab0752.js"),["assets/bat-afab0752.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-f0537d91.js"),["assets/bat_smart_energy-f0537d91.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f3a88abe.js"),["assets/counter-f3a88abe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-cc59c62c.js"),["assets/device-cc59c62c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-6d12a3f1.js"),["assets/inverter-6d12a3f1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-053db3b2.js"),["assets/bat-053db3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-b4d24a29.js"),["assets/device-b4d24a29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-0a578374.js"),["assets/device-0a578374.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-38233839.js"),["assets/counter-38233839.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-86f88cbb.js"),["assets/device-86f88cbb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-89ab9892.js"),["assets/inverter-89ab9892.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-38fb8261.js"),["assets/device-38fb8261.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-fcfe882c.js"),["assets/device-fcfe882c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-9c04d80d.js"),["assets/counter-9c04d80d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-a1e3a710.js"),["assets/device-a1e3a710.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-fbd8e09f.js"),["assets/device-fbd8e09f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-f857c467.js"),["assets/inverter-f857c467.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-e372d627.js"),["assets/device-e372d627.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-5a9d2acd.js"),["assets/device-5a9d2acd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-d04a40d4.js"),["assets/bat-d04a40d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-3d61895d.js"),["assets/counter-3d61895d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-13ac66a2.js"),["assets/device-13ac66a2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-3f39a305.js"),["assets/external_inverter-3f39a305.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-80adcee2.js"),["assets/inverter-80adcee2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-e4573157.js"),["assets/bat-e4573157.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-0c94f34d.js"),["assets/device-0c94f34d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-ec40e2ac.js"),["assets/inverter-ec40e2ac.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-7f837c71.js"),["assets/device-7f837c71.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-2ad336ba.js"),["assets/bat-2ad336ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-aea90a37.js"),["assets/counter-aea90a37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-e4d1ba40.js"),["assets/device-e4d1ba40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-1b5f20c2.js"),["assets/inverter-1b5f20c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-dfc0206c.js"),["assets/counter-dfc0206c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-f065b014.js"),["assets/device-f065b014.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-c566a75f.js"),["assets/bat-c566a75f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-7fb9b18e.js"),["assets/device-7fb9b18e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-a005080e.js"),["assets/inverter-a005080e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-51f51be9.js"),["assets/counter-51f51be9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-57e7ea16.js"),["assets/device-57e7ea16.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-1f0b55db.js"),["assets/device-1f0b55db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-4498198c.js"),["assets/device-4498198c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-a1a84381.js"),["assets/counter-a1a84381.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-76f55505.js"),["assets/device-76f55505.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-a3d36699.js"),["assets/device-a3d36699.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-da9423e8.js"),["assets/bat-da9423e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-f1f7547c.js"),["assets/counter-f1f7547c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-0f4599b8.js"),["assets/device-0f4599b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-2671797a.js"),["assets/inverter-2671797a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-851af979.js"),["assets/counter-851af979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-7ea3222f.js"),["assets/device-7ea3222f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-a9cee12b.js"),["assets/inverter-a9cee12b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-1c46f4b0.js"),["assets/device-1c46f4b0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-94706045.js"),["assets/inverter-94706045.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ce}):j({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-4f7c15a3.js"),["assets/device-4f7c15a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-40b4b0c5.js"),["assets/device-40b4b0c5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-db16ee4d.js"),["assets/device-db16ee4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-c034f6f0.js"),["assets/device-c034f6f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-bf4936ba.js"),["assets/device-bf4936ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-8118a66e.js"),["assets/device-8118a66e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-3c0a0263.js"),["assets/device-3c0a0263.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-829b538b.js"),["assets/device-829b538b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-d9f34fe2.js"),["assets/device-d9f34fe2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-7bfbb863.js"),["assets/device-7bfbb863.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-646a2df0.js"),["assets/device-646a2df0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-ca2bde32.js"),["assets/device-ca2bde32.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-850717d0.js"),["assets/device-850717d0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-7fc12e51.js"),["assets/device-7fc12e51.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-c0dfc296.js"),["assets/device-c0dfc296.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f9bc5796.js"),["assets/device-f9bc5796.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-99fa45c8.js"),["assets/device-99fa45c8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-d6d46ef8.js"),["assets/device-d6d46ef8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-c605ea36.js"),["assets/device-c605ea36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-aa58f408.js"),["assets/device-aa58f408.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-1859f43b.js"),["assets/device-1859f43b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-3b65739e.js"),["assets/device-3b65739e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-d659f206.js"),["assets/device-d659f206.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-44b38c3f.js"),["assets/device-44b38c3f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-86046891.js"),["assets/device-86046891.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-98e25fe5.js"),["assets/device-98e25fe5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-ab0439ee.js"),["assets/device-ab0439ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-3e055cd7.js"),["assets/device-3e055cd7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-58a430d5.js"),["assets/device-58a430d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-671cfac2.js"),["assets/device-671cfac2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-c491b9c2.js"),["assets/device-c491b9c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-359d7e50.js"),["assets/device-359d7e50.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-622f0263.js"),["assets/device-622f0263.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-98fd1cc4.js"),["assets/device-98fd1cc4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-3c779cdd.js"),["assets/device-3c779cdd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-08fe3db1.js"),["assets/device-08fe3db1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-b6ab13cb.js"),["assets/device-b6ab13cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-8c349616.js"),["assets/device-8c349616.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-cc59c62c.js"),["assets/device-cc59c62c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-b4d24a29.js"),["assets/device-b4d24a29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-0a578374.js"),["assets/device-0a578374.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-86f88cbb.js"),["assets/device-86f88cbb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-38fb8261.js"),["assets/device-38fb8261.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-fcfe882c.js"),["assets/device-fcfe882c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-a1e3a710.js"),["assets/device-a1e3a710.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-fbd8e09f.js"),["assets/device-fbd8e09f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-e372d627.js"),["assets/device-e372d627.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-5a9d2acd.js"),["assets/device-5a9d2acd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-13ac66a2.js"),["assets/device-13ac66a2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-0c94f34d.js"),["assets/device-0c94f34d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-7f837c71.js"),["assets/device-7f837c71.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-e4d1ba40.js"),["assets/device-e4d1ba40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-f065b014.js"),["assets/device-f065b014.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-7fb9b18e.js"),["assets/device-7fb9b18e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-57e7ea16.js"),["assets/device-57e7ea16.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-1f0b55db.js"),["assets/device-1f0b55db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-4498198c.js"),["assets/device-4498198c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-76f55505.js"),["assets/device-76f55505.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-a3d36699.js"),["assets/device-a3d36699.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-0f4599b8.js"),["assets/device-0f4599b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-7ea3222f.js"),["assets/device-7ea3222f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-1c46f4b0.js"),["assets/device-1c46f4b0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:de})}},methods:{updateConfiguration(o){this.$emit("update:configuration",o)}}};function Ee(o,t,i,m,a,d){return u(),E(Y(d.myComponent),{device:i.device,component:i.component,configuration:i.component?i.component.configuration:i.device.configuration,deviceId:i.device.id,deviceType:i.device.type,componentId:i.component?i.component.id:void 0,componentType:i.component?i.component.type:void 0,"onUpdate:configuration":t[0]||(t[0]=l=>d.updateConfiguration(l))},null,40,["device","component","configuration","deviceId","deviceType","componentId","componentType"])}const ge=A(le,[["render",Ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(G,K,H,F,$,J,Z);const fe={name:"OpenwbHardwareInstallationView",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:Q,OpenwbConfigProxy:ge},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([o,t])=>({label:t.group_name,options:Object.entries(t.vendors).map(([i,m])=>({value:[o,i],text:m.vendor_name})).sort((i,m)=>i.text.localeCompare(m.text))})).sort((o,t)=>-o.label.localeCompare(t.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[o,t]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][o].vendors[t].devices).map(([i,m])=>({value:[t,i],text:m.device_name})).sort((i,m)=>i.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(o){return o.match(/^(.+_)?counter(_.+)?$/)?"danger":o.match(/^(.+_)?inverter(_.+)?$/)?"success":o.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(o){return o.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:o.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:o.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(o){return this.getWildcardTopics("openWB/system/device/"+o+"/component/+/config")},deviceHasConfiguredComponents(o){return Object.keys(this.getMyInstalledComponents(o)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(o,t,i){i.stopPropagation(),this.modalDevice=o,this.modalDeviceName=t,this.showDeviceRemoveModal=!0},removeDevice(o){this.showDeviceRemoveModal=!1,o=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(o,t,i,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:o,deviceType:i,deviceVendor:t,type:m}})},removeComponentModal(o,t,i,m,a){a.stopPropagation(),this.modalComponent={deviceId:o,id:t,type:i},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(o){this.showComponentRemoveModal=!1,o=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(o,t){if(o===void 0||t===void 0)return[];console.debug("finding components for",o,t);let i=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[o]!==void 0?(m.vendors[o].devices[t]!==void 0&&(i=Object.entries(m.vendors[o].devices[t].components).map(([d,l])=>({value:d,text:l.component_name}))),!1):!0),i},updateConfiguration(o,t){console.debug("updateConfiguration",o,t),this.updateState(o,t.value,t.object)}}},O=o=>(ee("data-v-8595d6ae"),o=o(),oe(),o),be={class:"hardwareInstallation"},Ve={name:"hardwareInstallationForm"},Te={key:0},Ie={key:1},Oe={key:1},Ae=O(()=>c("hr",null,null,-1)),De=O(()=>c("hr",null,null,-1)),Pe=O(()=>c("hr",null,null,-1)),Re=O(()=>c("hr",null,null,-1)),Le={class:"col-1"},he={key:0},we={class:"col-1"},ye=O(()=>c("p",null,[s(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),s(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),ke=O(()=>c("p",null,[s(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),s(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),Ce=O(()=>c("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function xe(o,t,i,m,a,d){const l=p("openwb-base-modal-dialog"),D=p("router-link"),T=p("openwb-base-alert"),I=p("font-awesome-icon"),h=p("openwb-base-avatar"),P=p("openwb-base-text-input"),x=p("openwb-config-proxy"),S=p("openwb-base-heading"),w=p("openwb-base-card"),z=p("openwb-base-click-button"),y=p("openwb-base-select-input"),q=p("openwb-base-submit-buttons");return u(),g(L,null,[r(l,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeDevice},{default:_(()=>[s(' Wollen Sie das Gerät "'+b(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(l,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeComponent},{default:_(()=>[s(' Wollen Sie die Komponente "'+b(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",be,[c("form",Ve,[i.installAssistantActive?R("",!0):(u(),E(T,{key:0,subtype:"info"},{default:_(()=>[s(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),r(D,{to:"/LoadManagementConfiguration"},{default:_(()=>[s(" Lastmanagement ")]),_:1}),s(" zu prüfen! ")]),_:1})),r(w,{title:"Geräte und Komponenten"},{default:_(()=>[o.$store.state.mqtt["openWB/general/extern"]===!0?(u(),g("div",Te,[r(T,{subtype:"info"},{default:_(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),g("div",Ie,[(u(!0),g(L,null,k(d.installedDevices,(n,B)=>(u(),E(w,{key:n.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:_(()=>[r(I,{"fixed-width":"",icon:["fas","network-wired"]}),s(" "+b(n.name),1)]),actions:_(v=>[v.collapsed?(u(),g("div",Oe,[(u(!0),g(L,null,k(d.getMyInstalledComponents(n.id),f=>(u(),E(h,{key:f.id,class:C("ml-1 bg-"+d.getComponentTypeClass(f.type))},{default:_(()=>[r(I,{"fixed-width":"",icon:d.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(u(),E(h,{key:0,class:"bg-danger clickable",onClick:f=>d.removeDeviceModal(n.id,n.name,f)},{default:_(()=>[r(I,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:_(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":n.name,"onUpdate:modelValue":v=>o.updateState(B,v,"name")},null,8,["model-value","onUpdate:modelValue"]),Ae,r(x,{device:n,"onUpdate:configuration":v=>d.updateConfiguration(B,v)},null,8,["device","onUpdate:configuration"]),De,r(S,null,{default:_(()=>[s("Komponenten")]),_:1}),d.deviceHasConfiguredComponents(n.id)?R("",!0):(u(),E(T,{key:0,subtype:"warning"},{default:_(()=>[s(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(u(!0),g(L,null,k(d.getMyInstalledComponents(n.id),(v,f)=>(u(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:d.getComponentTypeClass(v.type)},{header:_(()=>[r(I,{"fixed-width":"",icon:d.getComponentTypeIcon(v.type)},null,8,["icon"]),s(" "+b(v.name),1)]),actions:_(V=>[V.collapsed?R("",!0):(u(),E(h,{key:0,class:"bg-danger clickable",onClick:U=>d.removeComponentModal(n.id,v.id,v.type,v.name,U)},{default:_(()=>[r(I,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:_(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":V=>o.updateState(f,V,"name")},null,8,["model-value","onUpdate:modelValue"]),r(P,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":V=>o.updateState(f,V,"info.manufacturer")},{help:_(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(P,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":V=>o.updateState(f,V,"info.model")},{help:_(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Pe,r(x,{device:n,component:v,"onUpdate:configuration":V=>d.updateConfiguration(f,V)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Re,d.getComponentList(n.vendor,n.type).length?(u(),E(y,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:d.getComponentList(n.vendor,n.type),"model-value":a.componentToAdd[n.id],"onUpdate:modelValue":v=>a.componentToAdd[n.id]=v},{append:_(()=>[c("span",Le,[r(z,{class:C(a.componentToAdd[n.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[n.id]===void 0,onButtonClicked:v=>d.addComponent(n.id,n.vendor,n.type,a.componentToAdd[n.id])},{default:_(()=>[r(I,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:_(()=>[s(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(u(),E(T,{key:2,subtype:"info"},{default:_(()=>[s(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(d.installedDevices).length>0?(u(),g("hr",he)):R("",!0),r(y,{title:"Hersteller",notSelected:"Bitte auswählen",groups:d.vendorList,modelValue:a.selectedVendor,"onUpdate:modelValue":t[0]||(t[0]=n=>a.selectedVendor=n)},null,8,["groups","modelValue"]),r(y,{title:"Verfügbare Geräte",notSelected:"Bitte auswählen",disabled:a.selectedVendor===void 0,options:d.deviceList,modelValue:a.deviceToAdd,"onUpdate:modelValue":t[1]||(t[1]=n=>a.deviceToAdd=n)},{append:_(()=>[c("span",we,[r(z,{class:C(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:d.addDevice},{default:_(()=>[r(I,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:_(()=>[ye,ke,Ce]),_:1},8,["disabled","options","modelValue"])]))]),_:1}),r(q,{formName:"hardwareInstallationForm",onSave:t[2]||(t[2]=n=>o.$emit("save")),onReset:t[3]||(t[3]=n=>o.$emit("reset")),onDefaults:t[4]||(t[4]=n=>o.$emit("defaults"))})])])],64)}const ze=A(fe,[["render",xe],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),Se=Object.freeze(Object.defineProperty({__proto__:null,default:ze},Symbol.toStringTag,{value:"Module"}));export{se as C,W as D,ze as H,Se as a};
diff --git a/web/settings/assets/HardwareInstallation-dd85fd7a.js b/web/settings/assets/HardwareInstallation-dd85fd7a.js
deleted file mode 100644
index ed129016b1..0000000000
--- a/web/settings/assets/HardwareInstallation-dd85fd7a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as N,d as G,t as K,a7 as H,a0 as F,P as J,O as Z,N as Q,F as X}from"./vendor-fortawesome-71546160.js";import{_ as e,C as Y}from"./index-068b063d.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as x,u as p,k as d,l as c,A as E,N as i,z as I,y as s,D as u,x as l,a2 as S,a3 as $,B as L,J as D,K as y,q as k,S as ee,U as _e}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const te={name:"DeviceFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},deviceType:String,componentId:{default:void 0},componentType:String},methods:{updateConfiguration(_,t=void 0){this.$emit("update:configuration",{value:_,object:t})}}},oe={class:"device-fallback"},re={key:0},ie={key:1},ne={key:1},ue={key:0},de={key:1};function ve(_,t,r,m,a,n){const T=p("openwb-base-alert"),f=p("openwb-base-textarea");return d(),c("div",oe,[Object.keys(r.configuration).length==0?(d(),E(T,{key:0,subtype:"info"},{default:i(()=>[r.componentType?(d(),c("span",re,' Der Komponenten-Typ "'+I(r.componentType)+'" ',1)):(d(),c("span",ie,'Der Gerät-Typ "'+I(r.deviceType)+'"',1)),s(" bietet keine Einstellungen. ")]),_:1})):(d(),c("div",ne,[u(T,{subtype:"warning"},{default:i(()=>[s(" Es wurde keine Konfigurationsseite für den "),r.componentType?(d(),c("span",ue,' Komponenten-Typ "'+I(r.componentType)+'" ',1)):(d(),c("span",de,'Geräte-Typ "'+I(r.deviceType)+'"',1)),s(" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ")]),_:1}),u(f,{title:"Konfiguration",subtype:"json","model-value":r.configuration,"onUpdate:modelValue":t[0]||(t[0]=R=>n.updateConfiguration(R,"configuration"))},{help:i(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),u(T,{subtype:"info"},{default:i(()=>[l("pre",null,I(JSON.stringify(r.configuration,void 0,2)),1)]),_:1})]))])}const q=x(te,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),se={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{deviceId:{required:!0},deviceType:{type:String,required:!0},deviceVendor:{type:String,required:!0},componentId:{default:void 0},componentType:{type:String,default:void 0},configuration:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading component: ${this.deviceType} / ${this.componentType}`),this.componentType!==void 0?S({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/bat.vue":()=>e(()=>import("./bat-3e5d89d4.js"),["assets/bat-3e5d89d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/counter.vue":()=>e(()=>import("./counter-27d4acde.js"),["assets/counter-27d4acde.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-66b6ca53.js"),["assets/device-66b6ca53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./alpha_ess/alpha_ess/inverter.vue":()=>e(()=>import("./inverter-b3e8ecb5.js"),["assets/inverter-b3e8ecb5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/bat.vue":()=>e(()=>import("./bat-6ec0726a.js"),["assets/bat-6ec0726a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/counter.vue":()=>e(()=>import("./counter-85e02a09.js"),["assets/counter-85e02a09.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ff88dc47.js"),["assets/device-ff88dc47.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/inverter.vue":()=>e(()=>import("./inverter-5a5ed031.js"),["assets/inverter-5a5ed031.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/bat.vue":()=>e(()=>import("./bat-edeea5ab.js"),["assets/bat-edeea5ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/counter.vue":()=>e(()=>import("./counter-d3c67a64.js"),["assets/counter-d3c67a64.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b394014f.js"),["assets/device-b394014f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/external_inverter.vue":()=>e(()=>import("./external_inverter-154b0b15.js"),["assets/external_inverter-154b0b15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/inverter.vue":()=>e(()=>import("./inverter-9df7c4d9.js"),["assets/inverter-9df7c4d9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/device.vue":()=>e(()=>import("./device-60a41819.js"),["assets/device-60a41819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/inverter.vue":()=>e(()=>import("./inverter-927da016.js"),["assets/inverter-927da016.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/bat.vue":()=>e(()=>import("./bat-a51c89dc.js"),["assets/bat-a51c89dc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/device.vue":()=>e(()=>import("./device-0852663a.js"),["assets/device-0852663a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-16ad21fd.js"),["assets/counter-16ad21fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-7e7c253d.js"),["assets/device-7e7c253d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-7f5835ff.js"),["assets/bat-7f5835ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-15bbcc8d.js"),["assets/counter-15bbcc8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/device.vue":()=>e(()=>import("./device-b6cf16cc.js"),["assets/device-b6cf16cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-022a27f9.js"),["assets/inverter-022a27f9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-49c86301.js"),["assets/counter-49c86301.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-a100762d.js"),["assets/device-a100762d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-c5fc8299.js"),["assets/inverter-c5fc8299.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/bat.vue":()=>e(()=>import("./bat-fae6736a.js"),["assets/bat-fae6736a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/counter.vue":()=>e(()=>import("./counter-2844dfce.js"),["assets/counter-2844dfce.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-dd9c6eba.js"),["assets/device-dd9c6eba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/external_inverter.vue":()=>e(()=>import("./external_inverter-ee34cc1c.js"),["assets/external_inverter-ee34cc1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/inverter.vue":()=>e(()=>import("./inverter-e52144a7.js"),["assets/inverter-e52144a7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-9ca02844.js"),["assets/counter-9ca02844.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-538ad6e5.js"),["assets/device-538ad6e5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-01948182.js"),["assets/inverter-01948182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-7e961860.js"),["assets/bat-7e961860.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/counter.vue":()=>e(()=>import("./counter-d3b3c371.js"),["assets/counter-d3b3c371.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/device.vue":()=>e(()=>import("./device-d7ef046e.js"),["assets/device-d7ef046e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/inverter.vue":()=>e(()=>import("./inverter-ae598de4.js"),["assets/inverter-ae598de4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-7a8901e4.js"),["assets/bat-7a8901e4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-4dcc66e0.js"),["assets/counter-4dcc66e0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-12c43ff6.js"),["assets/device-12c43ff6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-16319c3f.js"),["assets/inverter-16319c3f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-11a9e662.js"),["assets/bat-11a9e662.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/counter_s0.vue":()=>e(()=>import("./counter_s0-8459b248.js"),["assets/counter_s0-8459b248.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-157d8b84.js"),["assets/counter_sm-157d8b84.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a3a79e85.js"),["assets/device-a3a79e85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/inverter.vue":()=>e(()=>import("./inverter-9046aa5a.js"),["assets/inverter-9046aa5a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-603793ab.js"),["assets/inverter_secondary-603793ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-f21d8d0a.js"),["assets/bat-f21d8d0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-a43b7c84.js"),["assets/counter-a43b7c84.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/device.vue":()=>e(()=>import("./device-e78c3c94.js"),["assets/device-e78c3c94.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-6b993a71.js"),["assets/inverter-6b993a71.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-210e6934.js"),["assets/bat-210e6934.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-bf240441.js"),["assets/counter-bf240441.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/device.vue":()=>e(()=>import("./device-4e84dc20.js"),["assets/device-4e84dc20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-b4a67c1c.js"),["assets/inverter-b4a67c1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-a89d2c6d.js"),["assets/bat-a89d2c6d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-7de8fa46.js"),["assets/counter-7de8fa46.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f6cff0ea.js"),["assets/device-f6cff0ea.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-0feca953.js"),["assets/inverter-0feca953.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-c0599fe6.js"),["assets/counter-c0599fe6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/device.vue":()=>e(()=>import("./device-df771d66.js"),["assets/device-df771d66.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/bat.vue":()=>e(()=>import("./bat-c2e3bd93.js"),["assets/bat-c2e3bd93.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/counter.vue":()=>e(()=>import("./counter-720f0b7c.js"),["assets/counter-720f0b7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-1194af1e.js"),["assets/device-1194af1e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/inverter.vue":()=>e(()=>import("./inverter-e0439727.js"),["assets/inverter-e0439727.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/bat.vue":()=>e(()=>import("./bat-ba0e681b.js"),["assets/bat-ba0e681b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/counter.vue":()=>e(()=>import("./counter-17ea177d.js"),["assets/counter-17ea177d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-cc90e6fa.js"),["assets/device-cc90e6fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/inverter.vue":()=>e(()=>import("./inverter-3a35e713.js"),["assets/inverter-3a35e713.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-7cf44039.js"),["assets/bat-7cf44039.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-0f65c1e3.js"),["assets/counter-0f65c1e3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-1f5e9c10.js"),["assets/device-1f5e9c10.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-53c9dd57.js"),["assets/inverter-53c9dd57.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-7e9e02b6.js"),["assets/counter-7e9e02b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-fa86e6ca.js"),["assets/device-fa86e6ca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-3b17cd0a.js"),["assets/counter-3b17cd0a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-9b78528f.js"),["assets/device-9b78528f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-1f1b0291.js"),["assets/inverter-1f1b0291.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-14134a0e.js"),["assets/device-14134a0e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/inverter.vue":()=>e(()=>import("./inverter-d785d016.js"),["assets/inverter-d785d016.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/bat.vue":()=>e(()=>import("./bat-c1bb93e7.js"),["assets/bat-c1bb93e7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-ca9e3fe2.js"),["assets/counter-ca9e3fe2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-560cda8e.js"),["assets/device-560cda8e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/inverter.vue":()=>e(()=>import("./inverter-f6495d7c.js"),["assets/inverter-f6495d7c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-d7164453.js"),["assets/counter-d7164453.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-6bc2e333.js"),["assets/device-6bc2e333.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-66551827.js"),["assets/device-66551827.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-ed15250f.js"),["assets/inverter-ed15250f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/bat.vue":()=>e(()=>import("./bat-ea7043ef.js"),["assets/bat-ea7043ef.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/counter.vue":()=>e(()=>import("./counter-5cdd5400.js"),["assets/counter-5cdd5400.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/device.vue":()=>e(()=>import("./device-a5b9720c.js"),["assets/device-a5b9720c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/inverter.vue":()=>e(()=>import("./inverter-7f269997.js"),["assets/inverter-7f269997.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-f0d9c44f.js"),["assets/bat-f0d9c44f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-776a14ff.js"),["assets/counter-776a14ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-53c3c990.js"),["assets/device-53c3c990.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-e8d637fe.js"),["assets/inverter-e8d637fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-2004960c.js"),["assets/device-2004960c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/inverter.vue":()=>e(()=>import("./inverter-317c9702.js"),["assets/inverter-317c9702.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-22e19627.js"),["assets/bat-22e19627.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/device.vue":()=>e(()=>import("./device-f96e49ba.js"),["assets/device-f96e49ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-37aa8980.js"),["assets/bat-37aa8980.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-b01202f0.js"),["assets/counter-b01202f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/device.vue":()=>e(()=>import("./device-1dbf9864.js"),["assets/device-1dbf9864.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-0671dbec.js"),["assets/inverter-0671dbec.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-4ce133fc.js"),["assets/bat-4ce133fc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-e19fcdd5.js"),["assets/consumption_counter-e19fcdd5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-132a4c95.js"),["assets/counter-132a4c95.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-2a05ce83.js"),["assets/device-2a05ce83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-148b1cf9.js"),["assets/inverter-148b1cf9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/device.vue":()=>e(()=>import("./device-accf2fa8.js"),["assets/device-accf2fa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-f62aa161.js"),["assets/inverter-f62aa161.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-6703f6f0.js"),["assets/counter-6703f6f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-25323637.js"),["assets/device-25323637.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/inverter.vue":()=>e(()=>import("./inverter-a6b17edd.js"),["assets/inverter-a6b17edd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-419f31a5.js"),["assets/counter-419f31a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f8acb969.js"),["assets/device-f8acb969.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-d62075d8.js"),["assets/inverter-d62075d8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/bat.vue":()=>e(()=>import("./bat-361f190b.js"),["assets/bat-361f190b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/counter.vue":()=>e(()=>import("./counter-2131ddbc.js"),["assets/counter-2131ddbc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-ab2aea83.js"),["assets/device-ab2aea83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/inverter.vue":()=>e(()=>import("./inverter-9c9c65d2.js"),["assets/inverter-9c9c65d2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/bat.vue":()=>e(()=>import("./bat-32c9f6fd.js"),["assets/bat-32c9f6fd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/counter.vue":()=>e(()=>import("./counter-899de3b1.js"),["assets/counter-899de3b1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/device.vue":()=>e(()=>import("./device-67447569.js"),["assets/device-67447569.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/inverter.vue":()=>e(()=>import("./inverter-008f792b.js"),["assets/inverter-008f792b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/bat.vue":()=>e(()=>import("./bat-ab2534e0.js"),["assets/bat-ab2534e0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-a326b87b.js"),["assets/device-a326b87b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/bat.vue":()=>e(()=>import("./bat-0535c59d.js"),["assets/bat-0535c59d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-b75b921d.js"),["assets/counter-b75b921d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-68cdbdd8.js"),["assets/device-68cdbdd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/inverter.vue":()=>e(()=>import("./inverter-e39deae7.js"),["assets/inverter-e39deae7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/bat.vue":()=>e(()=>import("./bat-960570d8.js"),["assets/bat-960570d8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/counter.vue":()=>e(()=>import("./counter-761ec99f.js"),["assets/counter-761ec99f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-34858026.js"),["assets/device-34858026.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/inverter.vue":()=>e(()=>import("./inverter-8bd91bf1.js"),["assets/inverter-8bd91bf1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/counter.vue":()=>e(()=>import("./counter-8102691a.js"),["assets/counter-8102691a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-06345e49.js"),["assets/device-06345e49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-5f5ccb07.js"),["assets/bat-5f5ccb07.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-30a3ca76.js"),["assets/counter-30a3ca76.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-f298ed3b.js"),["assets/device-f298ed3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-bff31af2.js"),["assets/inverter-bff31af2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-8aa3e08a.js"),["assets/counter-8aa3e08a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/device.vue":()=>e(()=>import("./device-96e65ee3.js"),["assets/device-96e65ee3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-53505c28.js"),["assets/inverter-53505c28.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-e2b4a6f2.js"),["assets/bat-e2b4a6f2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-8a31af27.js"),["assets/bat_smart_energy-8a31af27.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-4f739eff.js"),["assets/counter-4f739eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-a3aaa72b.js"),["assets/device-a3aaa72b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-69ae908d.js"),["assets/inverter-69ae908d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-2ec8a7b2.js"),["assets/bat-2ec8a7b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-7328c01a.js"),["assets/device-7328c01a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-9ff76175.js"),["assets/device-9ff76175.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/inverter.vue":()=>e(()=>import("./inverter-81caf0c3.js"),["assets/inverter-81caf0c3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-0bf7d9a6.js"),["assets/counter-0bf7d9a6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-a875f223.js"),["assets/device-a875f223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-80468543.js"),["assets/inverter-80468543.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/counter.vue":()=>e(()=>import("./counter-963b86e8.js"),["assets/counter-963b86e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-c2c254cf.js"),["assets/device-c2c254cf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/bat.vue":()=>e(()=>import("./bat-5a80b300.js"),["assets/bat-5a80b300.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/counter.vue":()=>e(()=>import("./counter-ae228566.js"),["assets/counter-ae228566.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f252d8d.js"),["assets/device-4f252d8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/inverter.vue":()=>e(()=>import("./inverter-b9d7f198.js"),["assets/inverter-b9d7f198.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-32ed9eb1.js"),["assets/counter-32ed9eb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-59ac52ab.js"),["assets/device-59ac52ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/inverter.vue":()=>e(()=>import("./inverter-0773e282.js"),["assets/inverter-0773e282.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/counter.vue":()=>e(()=>import("./counter-9db4f10d.js"),["assets/counter-9db4f10d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c94e89d5.js"),["assets/device-c94e89d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-a1fe6824.js"),["assets/inverter-a1fe6824.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/bat.vue":()=>e(()=>import("./bat-5bb162c2.js"),["assets/bat-5bb162c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/counter.vue":()=>e(()=>import("./counter-39a750b6.js"),["assets/counter-39a750b6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-bee08fb1.js"),["assets/device-bee08fb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/inverter.vue":()=>e(()=>import("./inverter-79c8fb55.js"),["assets/inverter-79c8fb55.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/counter.vue":()=>e(()=>import("./counter-031b0305.js"),["assets/counter-031b0305.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-56cb9ab9.js"),["assets/device-56cb9ab9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/inverter.vue":()=>e(()=>import("./inverter-564ac740.js"),["assets/inverter-564ac740.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-ca879aa3.js"),["assets/bat-ca879aa3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-6a7f6553.js"),["assets/counter-6a7f6553.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-9f0dbb75.js"),["assets/device-9f0dbb75.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-355c5719.js"),["assets/external_inverter-355c5719.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-929c3f78.js"),["assets/inverter-929c3f78.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-93b96b73.js"),["assets/bat-93b96b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-02184b73.js"),["assets/device-02184b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-160edb4d.js"),["assets/inverter-160edb4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/bat.vue":()=>e(()=>import("./bat-70713ff4.js"),["assets/bat-70713ff4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/counter.vue":()=>e(()=>import("./counter-92dbeb44.js"),["assets/counter-92dbeb44.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/device.vue":()=>e(()=>import("./device-bcd1ab1c.js"),["assets/device-bcd1ab1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/inverter.vue":()=>e(()=>import("./inverter-cf027bb4.js"),["assets/inverter-cf027bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-86050b21.js"),["assets/bat-86050b21.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-4cf113fa.js"),["assets/counter-4cf113fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/device.vue":()=>e(()=>import("./device-191a8f0d.js"),["assets/device-191a8f0d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-e2fcc96e.js"),["assets/inverter-e2fcc96e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/bat.vue":()=>e(()=>import("./bat-669886fa.js"),["assets/bat-669886fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-49277c48.js"),["assets/counter-49277c48.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-3d9e43fe.js"),["assets/device-3d9e43fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/inverter.vue":()=>e(()=>import("./inverter-fcb34a03.js"),["assets/inverter-fcb34a03.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-c023ee7d.js"),["assets/bat-c023ee7d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/device.vue":()=>e(()=>import("./device-e4af98fb.js"),["assets/device-e4af98fb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-390b002d.js"),["assets/inverter-390b002d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/bat.vue":()=>e(()=>import("./bat-46611da3.js"),["assets/bat-46611da3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-fa66cb6a.js"),["assets/counter-fa66cb6a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-29ba5b2b.js"),["assets/device-29ba5b2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/inverter.vue":()=>e(()=>import("./inverter-3a81dff8.js"),["assets/inverter-3a81dff8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-71b3befd.js"),["assets/device-71b3befd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/inverter.vue":()=>e(()=>import("./inverter-85d76c41.js"),["assets/inverter-85d76c41.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/counter.vue":()=>e(()=>import("./counter-d86757f2.js"),["assets/counter-d86757f2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-b0485aae.js"),["assets/device-b0485aae.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/bat.vue":()=>e(()=>import("./bat-84a37ddf.js"),["assets/bat-84a37ddf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-9c0b6f8f.js"),["assets/counter-9c0b6f8f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5926f93d.js"),["assets/device-5926f93d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/inverter.vue":()=>e(()=>import("./inverter-3a00ed3d.js"),["assets/inverter-3a00ed3d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/bat_api.vue":()=>e(()=>import("./bat_api-04666400.js"),["assets/bat_api-04666400.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/bat_modbus.vue":()=>e(()=>import("./bat_modbus-ffbf71f1.js"),["assets/bat_modbus-ffbf71f1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/counter.vue":()=>e(()=>import("./counter-214fbb40.js"),["assets/counter-214fbb40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/device.vue":()=>e(()=>import("./device-74cc8223.js"),["assets/device-74cc8223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/inverter.vue":()=>e(()=>import("./inverter-f329a5ad.js"),["assets/inverter-f329a5ad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-a2809c14.js"),["assets/bat-a2809c14.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-dc109611.js"),["assets/counter-dc109611.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/device.vue":()=>e(()=>import("./device-35945559.js"),["assets/device-35945559.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-671f6a73.js"),["assets/inverter-671f6a73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-90d6c411.js"),["assets/counter-90d6c411.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-85271457.js"),["assets/device-85271457.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-804d1c85.js"),["assets/inverter-804d1c85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/device.vue":()=>e(()=>import("./device-7d20d912.js"),["assets/device-7d20d912.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-bea955ac.js"),["assets/inverter-bea955ac.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceVendor}/${this.deviceType}/${this.componentType}.vue`),errorComponent:q}):S({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-66b6ca53.js"),["assets/device-66b6ca53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-ff88dc47.js"),["assets/device-ff88dc47.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b394014f.js"),["assets/device-b394014f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./benning/benning/device.vue":()=>e(()=>import("./device-60a41819.js"),["assets/device-60a41819.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./byd/byd/device.vue":()=>e(()=>import("./device-0852663a.js"),["assets/device-0852663a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-7e7c253d.js"),["assets/device-7e7c253d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./deye/deye/device.vue":()=>e(()=>import("./device-b6cf16cc.js"),["assets/device-b6cf16cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-a100762d.js"),["assets/device-a100762d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-dd9c6eba.js"),["assets/device-dd9c6eba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-538ad6e5.js"),["assets/device-538ad6e5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fems/fems/device.vue":()=>e(()=>import("./device-d7ef046e.js"),["assets/device-d7ef046e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-12c43ff6.js"),["assets/device-12c43ff6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-a3a79e85.js"),["assets/device-a3a79e85.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/http/device.vue":()=>e(()=>import("./device-e78c3c94.js"),["assets/device-e78c3c94.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/json/device.vue":()=>e(()=>import("./device-4e84dc20.js"),["assets/device-4e84dc20.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f6cff0ea.js"),["assets/device-f6cff0ea.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./generic/virtual/device.vue":()=>e(()=>import("./device-df771d66.js"),["assets/device-df771d66.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-1194af1e.js"),["assets/device-1194af1e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-cc90e6fa.js"),["assets/device-cc90e6fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-1f5e9c10.js"),["assets/device-1f5e9c10.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-fa86e6ca.js"),["assets/device-fa86e6ca.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-9b78528f.js"),["assets/device-9b78528f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-14134a0e.js"),["assets/device-14134a0e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-560cda8e.js"),["assets/device-560cda8e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-6bc2e333.js"),["assets/device-6bc2e333.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-66551827.js"),["assets/device-66551827.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./lg/lg/device.vue":()=>e(()=>import("./device-a5b9720c.js"),["assets/device-a5b9720c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-53c3c990.js"),["assets/device-53c3c990.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-2004960c.js"),["assets/device-2004960c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_bat_kit/device.vue":()=>e(()=>import("./device-f96e49ba.js"),["assets/device-f96e49ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_evu_kit/device.vue":()=>e(()=>import("./device-1dbf9864.js"),["assets/device-1dbf9864.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-2a05ce83.js"),["assets/device-2a05ce83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./openwb/openwb_pv_kit/device.vue":()=>e(()=>import("./device-accf2fa8.js"),["assets/device-accf2fa8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-25323637.js"),["assets/device-25323637.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f8acb969.js"),["assets/device-f8acb969.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-ab2aea83.js"),["assets/device-ab2aea83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./rct/rct/device.vue":()=>e(()=>import("./device-67447569.js"),["assets/device-67447569.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-a326b87b.js"),["assets/device-a326b87b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-68cdbdd8.js"),["assets/device-68cdbdd8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-34858026.js"),["assets/device-34858026.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-06345e49.js"),["assets/device-06345e49.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-f298ed3b.js"),["assets/device-f298ed3b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_shm/device.vue":()=>e(()=>import("./device-96e65ee3.js"),["assets/device-96e65ee3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-a3aaa72b.js"),["assets/device-a3aaa72b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-7328c01a.js"),["assets/device-7328c01a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-9ff76175.js"),["assets/device-9ff76175.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-a875f223.js"),["assets/device-a875f223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-c2c254cf.js"),["assets/device-c2c254cf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f252d8d.js"),["assets/device-4f252d8d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-59ac52ab.js"),["assets/device-59ac52ab.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c94e89d5.js"),["assets/device-c94e89d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-bee08fb1.js"),["assets/device-bee08fb1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-56cb9ab9.js"),["assets/device-56cb9ab9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-9f0dbb75.js"),["assets/device-9f0dbb75.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-02184b73.js"),["assets/device-02184b73.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solax/solax/device.vue":()=>e(()=>import("./device-bcd1ab1c.js"),["assets/device-bcd1ab1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./solis/solis/device.vue":()=>e(()=>import("./device-191a8f0d.js"),["assets/device-191a8f0d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-3d9e43fe.js"),["assets/device-3d9e43fe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./studer/studer/device.vue":()=>e(()=>import("./device-e4af98fb.js"),["assets/device-e4af98fb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-29ba5b2b.js"),["assets/device-29ba5b2b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-71b3befd.js"),["assets/device-71b3befd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-b0485aae.js"),["assets/device-b0485aae.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5926f93d.js"),["assets/device-5926f93d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./varta/varta/device.vue":()=>e(()=>import("./device-74cc8223.js"),["assets/device-74cc8223.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./victron/victron/device.vue":()=>e(()=>import("./device-35945559.js"),["assets/device-35945559.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-85271457.js"),["assets/device-85271457.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./youless/youless/device.vue":()=>e(()=>import("./device-7d20d912.js"),["assets/device-7d20d912.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.deviceVendor}/${this.deviceType}/device.vue`),errorComponent:q})}},methods:{updateConfiguration(_){this.$emit("update:configuration",_)}}};function ae(_,t,r,m,a,n){return d(),E($(n.myComponent),{configuration:r.configuration,deviceId:r.deviceId,deviceType:r.deviceType,componentId:r.componentId,componentType:r.componentType,"onUpdate:configuration":t[0]||(t[0]=T=>n.updateConfiguration(T))},null,40,["configuration","deviceId","deviceType","componentId","componentType"])}const me=x(se,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(G,K,H,F,J,Z,Q);const pe={name:"OpenwbHardwareInstallationView",mixins:[Y],emits:["sendCommand"],components:{FontAwesomeIcon:X,OpenwbConfigProxy:me},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([_,t])=>({label:t.group_name,options:Object.entries(t.vendors).map(([r,m])=>({value:[_,r],text:m.vendor_name})).sort((r,m)=>r.text.localeCompare(m.text))})).sort((_,t)=>-_.label.localeCompare(t.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[_,t]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][_].vendors[t].devices).map(([r,m])=>({value:[t,r],text:m.device_name})).sort((r,m)=>r.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(_){return _.match(/^(.+_)?counter(_.+)?$/)?"danger":_.match(/^(.+_)?inverter(_.+)?$/)?"success":_.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(_){return _.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:_.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:_.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(_){return this.getWildcardTopics("openWB/system/device/"+_+"/component/+/config")},deviceHasConfiguredComponents(_){return Object.keys(this.getMyInstalledComponents(_)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(_,t,r){r.stopPropagation(),this.modalDevice=_,this.modalDeviceName=t,this.showDeviceRemoveModal=!0},removeDevice(_){this.showDeviceRemoveModal=!1,_=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(_,t,r,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:_,deviceType:r,deviceVendor:t,type:m}})},removeComponentModal(_,t,r,m,a){a.stopPropagation(),this.modalComponent={deviceId:_,id:t,type:r},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(_){this.showComponentRemoveModal=!1,_=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(_,t){if(_===void 0||t===void 0)return[];console.debug("finding components for",_,t);let r=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[_]!==void 0?(m.vendors[_].devices[t]!==void 0&&(r=Object.entries(m.vendors[_].devices[t].components).map(([n,T])=>({value:n,text:T.component_name}))),!1):!0),r},updateConfiguration(_,t){console.debug("updateConfiguration",_,t),this.updateState(_,t.value,t.object)}}},O=_=>(ee("data-v-8595d6ae"),_=_(),_e(),_),ce={class:"hardwareInstallation"},le={name:"hardwareInstallationForm"},Ee={key:0},Te={key:1},Ve={key:1},ge=O(()=>l("hr",null,null,-1)),Ie=O(()=>l("hr",null,null,-1)),Ae=O(()=>l("hr",null,null,-1)),Oe=O(()=>l("hr",null,null,-1)),Re={class:"col-1"},Pe={key:0},Le={class:"col-1"},De=O(()=>l("p",null,[s(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),s(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),fe=O(()=>l("p",null,[s(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),s(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),be=O(()=>l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function we(_,t,r,m,a,n){const T=p("openwb-base-modal-dialog"),f=p("router-link"),R=p("openwb-base-alert"),A=p("font-awesome-icon"),b=p("openwb-base-avatar"),P=p("openwb-base-text-input"),z=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),C=p("openwb-base-click-button"),h=p("openwb-base-select-input"),j=p("openwb-base-submit-buttons");return d(),c(D,null,[u(T,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:i(()=>[s(' Wollen Sie das Gerät "'+I(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),u(T,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:i(()=>[s(' Wollen Sie die Komponente "'+I(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",ce,[l("form",le,[r.installAssistantActive?L("",!0):(d(),E(R,{key:0,subtype:"info"},{default:i(()=>[s(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),u(f,{to:"/LoadManagementConfiguration"},{default:i(()=>[s(" Lastmanagement ")]),_:1}),s(" zu prüfen! ")]),_:1})),u(w,{title:"Geräte und Komponenten"},{default:i(()=>[_.$store.state.mqtt["openWB/general/extern"]===!0?(d(),c("div",Ee,[u(R,{subtype:"info"},{default:i(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),c("div",Te,[(d(!0),c(D,null,y(n.installedDevices,(o,B)=>(d(),E(w,{key:o.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[u(A,{"fixed-width":"",icon:["fas","network-wired"]}),s(" "+I(o.name),1)]),actions:i(v=>[v.collapsed?(d(),c("div",Ve,[(d(!0),c(D,null,y(n.getMyInstalledComponents(o.id),V=>(d(),E(b,{key:V.id,class:k("ml-1 bg-"+n.getComponentTypeClass(V.type))},{default:i(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(V.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(d(),E(b,{key:0,class:"bg-danger clickable",onClick:V=>n.removeDeviceModal(o.id,o.name,V)},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[u(P,{title:"Bezeichnung",subtype:"text","model-value":o.name,"onUpdate:modelValue":v=>_.updateState(B,v,"name")},null,8,["model-value","onUpdate:modelValue"]),ge,u(z,{deviceId:o.id,deviceType:o.type,deviceVendor:o.vendor,configuration:o.configuration,"onUpdate:configuration":v=>n.updateConfiguration(B,v)},null,8,["deviceId","deviceType","deviceVendor","configuration","onUpdate:configuration"]),Ie,u(W,null,{default:i(()=>[s("Komponenten")]),_:1}),n.deviceHasConfiguredComponents(o.id)?L("",!0):(d(),E(R,{key:0,subtype:"warning"},{default:i(()=>[s(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(d(!0),c(D,null,y(n.getMyInstalledComponents(o.id),(v,V)=>(d(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(v.type)},{header:i(()=>[u(A,{"fixed-width":"",icon:n.getComponentTypeIcon(v.type)},null,8,["icon"]),s(" "+I(v.name),1)]),actions:i(g=>[g.collapsed?L("",!0):(d(),E(b,{key:0,class:"bg-danger clickable",onClick:U=>n.removeComponentModal(o.id,v.id,v.type,v.name,U)},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[u(P,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":g=>_.updateState(V,g,"name")},null,8,["model-value","onUpdate:modelValue"]),u(P,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":g=>_.updateState(V,g,"info.manufacturer")},{help:i(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),u(P,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":g=>_.updateState(V,g,"info.model")},{help:i(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Ae,u(z,{deviceId:o.id,deviceType:o.type,deviceVendor:o.vendor,componentId:v.id,componentType:v.type,configuration:v.configuration,"onUpdate:configuration":g=>n.updateConfiguration(V,g)},null,8,["deviceId","deviceType","deviceVendor","componentId","componentType","configuration","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Oe,n.getComponentList(o.vendor,o.type).length?(d(),E(h,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:n.getComponentList(o.vendor,o.type),"model-value":a.componentToAdd[o.id],"onUpdate:modelValue":v=>a.componentToAdd[o.id]=v},{append:i(()=>[l("span",Re,[u(C,{class:k(a.componentToAdd[o.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[o.id]===void 0,onButtonClicked:v=>n.addComponent(o.id,o.vendor,o.type,a.componentToAdd[o.id])},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[s(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(d(),E(R,{key:2,subtype:"info"},{default:i(()=>[s(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(d(),c("hr",Pe)):L("",!0),u(h,{title:"Hersteller",notSelected:"Bitte auswählen",groups:n.vendorList,modelValue:a.selectedVendor,"onUpdate:modelValue":t[0]||(t[0]=o=>a.selectedVendor=o)},null,8,["groups","modelValue"]),u(h,{title:"Verfügbare Geräte",notSelected:"Bitte auswählen",disabled:a.selectedVendor===void 0,options:n.deviceList,modelValue:a.deviceToAdd,"onUpdate:modelValue":t[1]||(t[1]=o=>a.deviceToAdd=o)},{append:i(()=>[l("span",Le,[u(C,{class:k(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:i(()=>[u(A,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>[De,fe,be]),_:1},8,["disabled","options","modelValue"])]))]),_:1}),u(j,{formName:"hardwareInstallationForm",onSave:t[2]||(t[2]=o=>_.$emit("save")),onReset:t[3]||(t[3]=o=>_.$emit("reset")),onDefaults:t[4]||(t[4]=o=>_.$emit("defaults"))})])])],64)}const Se=x(pe,[["render",we],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]);export{Se as default};
diff --git a/web/settings/assets/InstallAssistant-ce6c9cb7.js b/web/settings/assets/InstallAssistant-e098a326.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-ce6c9cb7.js
rename to web/settings/assets/InstallAssistant-e098a326.js
index 6191b424f2..9e656a78b3 100644
--- a/web/settings/assets/InstallAssistant-ce6c9cb7.js
+++ b/web/settings/assets/InstallAssistant-e098a326.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-068b063d.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-431f88fd.js"),["assets/InstallAssistantStep0-431f88fd.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-30da7200.js"),["assets/InstallAssistantStep1-30da7200.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-10c6dd29.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-b816c6c6.js"),["assets/InstallAssistantStep10-b816c6c6.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-c6a872c9.js"),["assets/InstallAssistantStep2-c6a872c9.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-d516542d.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-c18ad6b3.js"),["assets/InstallAssistantStep3-c18ad6b3.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-9529e63d.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-afb36773.js"),["assets/InstallAssistantStep4-afb36773.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-4fc37543.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-87ff5089.js"),["assets/InstallAssistantStep5-87ff5089.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-dd85fd7a.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-db3c77b6.js"),["assets/InstallAssistantStep6-db3c77b6.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-4fc37543.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-4abd3c6f.js"),["assets/InstallAssistantStep7-4abd3c6f.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-755ca06f.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-1d34ec58.js"),["assets/InstallAssistantStep8-1d34ec58.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-ee86d81f.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-03bed1b3.js"),["assets/InstallAssistantStep9-03bed1b3.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cb1e241d.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-10c6dd29.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-cb1e241d.js"),["assets/InstallAssistantStepTemplate-cb1e241d.js","assets/index-068b063d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-b0e5e618.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-3aacc430.js"),["assets/InstallAssistantStep0-3aacc430.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-92925871.js"),["assets/InstallAssistantStep1-92925871.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-eb2fc5d7.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-a0cc0c5c.js"),["assets/InstallAssistantStep10-a0cc0c5c.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-5a5716af.js"),["assets/InstallAssistantStep2-5a5716af.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-c2920436.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-433c8ac0.js"),["assets/InstallAssistantStep3-433c8ac0.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-1396a845.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-082fc830.js"),["assets/InstallAssistantStep4-082fc830.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-fba1b24e.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-86511db2.js"),["assets/InstallAssistantStep5-86511db2.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-a0083e3a.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-40f3e62a.js"),["assets/InstallAssistantStep6-40f3e62a.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-fba1b24e.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-b99ff659.js"),["assets/InstallAssistantStep7-b99ff659.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-5e0d6325.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-a481c31b.js"),["assets/InstallAssistantStep8-a481c31b.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-5050794d.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-df6f7a62.js"),["assets/InstallAssistantStep9-df6f7a62.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-eb2fc5d7.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-b7a8caa2.js"),["assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-431f88fd.js b/web/settings/assets/InstallAssistantStep0-3aacc430.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-431f88fd.js
rename to web/settings/assets/InstallAssistantStep0-3aacc430.js
index e5ddf98050..d80d30f93b 100644
--- a/web/settings/assets/InstallAssistantStep0-431f88fd.js
+++ b/web/settings/assets/InstallAssistantStep0-3aacc430.js
@@ -1 +1 @@
-import{C as d}from"./index-068b063d.js";import u from"./InstallAssistantStepTemplate-cb1e241d.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
+import{C as d}from"./index-b0e5e618.js";import u from"./InstallAssistantStepTemplate-b7a8caa2.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
diff --git a/web/settings/assets/InstallAssistantStep1-30da7200.js b/web/settings/assets/InstallAssistantStep1-30da7200.js
deleted file mode 100644
index 2d8b68f86a..0000000000
--- a/web/settings/assets/InstallAssistantStep1-30da7200.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./index-068b063d.js";import p from"./InstallAssistantStepTemplate-cb1e241d.js";import l from"./DataManagement-10c6dd29.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,s){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:s.nextPage,onPreviousPage:s.previousPage,onEndAssistant:s.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
diff --git a/web/settings/assets/InstallAssistantStep1-92925871.js b/web/settings/assets/InstallAssistantStep1-92925871.js
new file mode 100644
index 0000000000..90a6da4801
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep1-92925871.js
@@ -0,0 +1 @@
+import{C as m}from"./index-b0e5e618.js";import p from"./InstallAssistantStepTemplate-b7a8caa2.js";import{D as l}from"./DataManagement-eb2fc5d7.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,n){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
diff --git a/web/settings/assets/InstallAssistantStep10-b816c6c6.js b/web/settings/assets/InstallAssistantStep10-a0cc0c5c.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-b816c6c6.js
rename to web/settings/assets/InstallAssistantStep10-a0cc0c5c.js
index 8801ad3c0c..53b9f48356 100644
--- a/web/settings/assets/InstallAssistantStep10-b816c6c6.js
+++ b/web/settings/assets/InstallAssistantStep10-a0cc0c5c.js
@@ -1 +1 @@
-import{C as i}from"./index-068b063d.js";import a from"./InstallAssistantStepTemplate-cb1e241d.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
+import{C as i}from"./index-b0e5e618.js";import a from"./InstallAssistantStepTemplate-b7a8caa2.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
diff --git a/web/settings/assets/InstallAssistantStep2-c6a872c9.js b/web/settings/assets/InstallAssistantStep2-5a5716af.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-c6a872c9.js
rename to web/settings/assets/InstallAssistantStep2-5a5716af.js
index ef878d0c32..d83564d9cb 100644
--- a/web/settings/assets/InstallAssistantStep2-c6a872c9.js
+++ b/web/settings/assets/InstallAssistantStep2-5a5716af.js
@@ -1 +1 @@
-import{C as d}from"./index-068b063d.js";import p from"./InstallAssistantStepTemplate-cb1e241d.js";import l from"./System-d516542d.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
+import{C as d}from"./index-b0e5e618.js";import p from"./InstallAssistantStepTemplate-b7a8caa2.js";import l from"./System-c2920436.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep3-433c8ac0.js b/web/settings/assets/InstallAssistantStep3-433c8ac0.js
new file mode 100644
index 0000000000..1a3c7c032a
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep3-433c8ac0.js
@@ -0,0 +1 @@
+import{C as d}from"./index-b0e5e618.js";import p from"./InstallAssistantStepTemplate-b7a8caa2.js";import{G as m}from"./GeneralConfig-1396a845.js";import{_ as u,u as a,k as g,A as f,N as r,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=a("GeneralConfigView"),l=a("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[A,b,k,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep3-c18ad6b3.js b/web/settings/assets/InstallAssistantStep3-c18ad6b3.js
deleted file mode 100644
index 32a9fb8a91..0000000000
--- a/web/settings/assets/InstallAssistantStep3-c18ad6b3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./index-068b063d.js";import p from"./InstallAssistantStepTemplate-cb1e241d.js";import m from"./GeneralConfig-9529e63d.js";import{_ as u,u as r,k as g,A as f,N as a,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=r("GeneralConfigView"),l=r("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[A,b,k,B]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep4-082fc830.js b/web/settings/assets/InstallAssistantStep4-082fc830.js
new file mode 100644
index 0000000000..cd6705fd48
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep4-082fc830.js
@@ -0,0 +1 @@
+import{C as l}from"./index-b0e5e618.js";import p from"./InstallAssistantStepTemplate-b7a8caa2.js";import{b as u}from"./ChargePointInstallation-fba1b24e.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
diff --git a/web/settings/assets/InstallAssistantStep4-afb36773.js b/web/settings/assets/InstallAssistantStep4-afb36773.js
deleted file mode 100644
index c3e29636b1..0000000000
--- a/web/settings/assets/InstallAssistantStep4-afb36773.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-068b063d.js";import p from"./InstallAssistantStepTemplate-cb1e241d.js";import u from"./ChargePointInstallation-4fc37543.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
diff --git a/web/settings/assets/InstallAssistantStep5-86511db2.js b/web/settings/assets/InstallAssistantStep5-86511db2.js
new file mode 100644
index 0000000000..20e904eea6
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep5-86511db2.js
@@ -0,0 +1 @@
+import{C as l}from"./index-b0e5e618.js";import m from"./InstallAssistantStepTemplate-b7a8caa2.js";import{H as u}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep5-87ff5089.js b/web/settings/assets/InstallAssistantStep5-87ff5089.js
deleted file mode 100644
index 0b3f066428..0000000000
--- a/web/settings/assets/InstallAssistantStep5-87ff5089.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-068b063d.js";import m from"./InstallAssistantStepTemplate-cb1e241d.js";import u from"./HardwareInstallation-dd85fd7a.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const H=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstallAssistantStep6-40f3e62a.js b/web/settings/assets/InstallAssistantStep6-40f3e62a.js
new file mode 100644
index 0000000000..f6faebe89a
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep6-40f3e62a.js
@@ -0,0 +1 @@
+import{C as l}from"./index-b0e5e618.js";import u from"./InstallAssistantStepTemplate-b7a8caa2.js";import{b as p}from"./ChargePointInstallation-fba1b24e.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),b=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),k=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,b,k,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep6-db3c77b6.js b/web/settings/assets/InstallAssistantStep6-db3c77b6.js
deleted file mode 100644
index 52d1a3a5d7..0000000000
--- a/web/settings/assets/InstallAssistantStep6-db3c77b6.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-068b063d.js";import u from"./InstallAssistantStepTemplate-cb1e241d.js";import p from"./ChargePointInstallation-4fc37543.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),k=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),b=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,k,b,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep7-4abd3c6f.js b/web/settings/assets/InstallAssistantStep7-b99ff659.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-4abd3c6f.js
rename to web/settings/assets/InstallAssistantStep7-b99ff659.js
index 773148c19b..d811b9178f 100644
--- a/web/settings/assets/InstallAssistantStep7-4abd3c6f.js
+++ b/web/settings/assets/InstallAssistantStep7-b99ff659.js
@@ -1 +1 @@
-import{C as l}from"./index-068b063d.js";import m from"./InstallAssistantStepTemplate-cb1e241d.js";import p from"./LoadManagementConfig-755ca06f.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
+import{C as l}from"./index-b0e5e618.js";import m from"./InstallAssistantStepTemplate-b7a8caa2.js";import p from"./LoadManagementConfig-5e0d6325.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep8-1d34ec58.js b/web/settings/assets/InstallAssistantStep8-1d34ec58.js
deleted file mode 100644
index 4b1b2f0948..0000000000
--- a/web/settings/assets/InstallAssistantStep8-1d34ec58.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-068b063d.js";import u from"./InstallAssistantStepTemplate-cb1e241d.js";import m from"./VehicleConfig-ee86d81f.js";import{_ as h,u as r,k as g,A as p,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=r("VehicleConfigView"),d=r("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[z,P,w,A,v,F]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep8-a481c31b.js b/web/settings/assets/InstallAssistantStep8-a481c31b.js
new file mode 100644
index 0000000000..1d19b7f90c
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep8-a481c31b.js
@@ -0,0 +1 @@
+import{C as l}from"./index-b0e5e618.js";import u from"./InstallAssistantStepTemplate-b7a8caa2.js";import{a as m}from"./VehicleConfig-5050794d.js";import{_ as h,u as a,k as g,A as p,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=a("VehicleConfigView"),d=a("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[z,P,w,A,v,F]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep9-03bed1b3.js b/web/settings/assets/InstallAssistantStep9-03bed1b3.js
deleted file mode 100644
index b347e8123d..0000000000
--- a/web/settings/assets/InstallAssistantStep9-03bed1b3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-068b063d.js";import p from"./InstallAssistantStepTemplate-cb1e241d.js";import u from"./DataManagement-10c6dd29.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,_,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep9-df6f7a62.js b/web/settings/assets/InstallAssistantStep9-df6f7a62.js
new file mode 100644
index 0000000000..c0d97e4f0b
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep9-df6f7a62.js
@@ -0,0 +1 @@
+import{C as l}from"./index-b0e5e618.js";import p from"./InstallAssistantStepTemplate-b7a8caa2.js";import{D as u}from"./DataManagement-eb2fc5d7.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,D,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-cb1e241d.js b/web/settings/assets/InstallAssistantStepTemplate-b7a8caa2.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-cb1e241d.js
rename to web/settings/assets/InstallAssistantStepTemplate-b7a8caa2.js
index a839cf997d..c43a54b8e5 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-cb1e241d.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-b7a8caa2.js
@@ -1 +1 @@
-import{C as v}from"./index-068b063d.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
+import{C as v}from"./index-b0e5e618.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstantChargeConfig-3316e506.js b/web/settings/assets/InstantChargeConfig-13725bb2.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-3316e506.js
rename to web/settings/assets/InstantChargeConfig-13725bb2.js
index dbee47fb09..5cbbbcbf27 100644
--- a/web/settings/assets/InstantChargeConfig-3316e506.js
+++ b/web/settings/assets/InstantChargeConfig-13725bb2.js
@@ -1 +1 @@
-import{C as l}from"./index-068b063d.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-b0e5e618.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-63440fac.js b/web/settings/assets/LegalSettings-c607b1a5.js
similarity index 97%
rename from web/settings/assets/LegalSettings-63440fac.js
rename to web/settings/assets/LegalSettings-c607b1a5.js
index 3f17152395..cc14f59fb5 100644
--- a/web/settings/assets/LegalSettings-63440fac.js
+++ b/web/settings/assets/LegalSettings-c607b1a5.js
@@ -1 +1 @@
-import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-068b063d.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
+import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-b0e5e618.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
diff --git a/web/settings/assets/LoadManagementConfig-755ca06f.js b/web/settings/assets/LoadManagementConfig-5e0d6325.js
similarity index 55%
rename from web/settings/assets/LoadManagementConfig-755ca06f.js
rename to web/settings/assets/LoadManagementConfig-5e0d6325.js
index 33acba55b2..0714a82347 100644
--- a/web/settings/assets/LoadManagementConfig-755ca06f.js
+++ b/web/settings/assets/LoadManagementConfig-5e0d6325.js
@@ -1 +1 @@
-import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-068b063d.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as Z,u as l,k as u,l as m,x as d,D as s,N as i,y as r,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const q={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:i(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:i(()=>[r(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,r(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:i(()=>[r(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:i(()=>[r(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,r(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:i(()=>[r(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:i(()=>[r(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:i(()=>[r(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:i(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),r(" "+W(n.name),1)]),default:i(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:i(()=>[r(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:i(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:i(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:i(()=>[r(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,r(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,r(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,r(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const ie=Z(q,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{ie as default};
+import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-b0e5e618.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as q,u as l,k as u,l as m,x as d,D as s,N as r,y as i,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const Z={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:r(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:r(()=>[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:r(()=>[i(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+W(n.name),1)]),default:r(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,required:"",unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[i(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+W(n.name),1)]),default:r(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:r(()=>[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const re=q(Z,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default};
diff --git a/web/settings/assets/MqttBridgeConfig-94739887.js b/web/settings/assets/MqttBridgeConfig-4de54ead.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-94739887.js
rename to web/settings/assets/MqttBridgeConfig-4de54ead.js
index 1b1c798cad..ba68cbcdaf 100644
--- a/web/settings/assets/MqttBridgeConfig-94739887.js
+++ b/web/settings/assets/MqttBridgeConfig-4de54ead.js
@@ -1 +1 @@
-import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-068b063d.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
+import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-b0e5e618.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
diff --git a/web/settings/assets/OptionalComponents-40d19b76.js b/web/settings/assets/OptionalComponents-40d19b76.js
deleted file mode 100644
index 1378859675..0000000000
--- a/web/settings/assets/OptionalComponents-40d19b76.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import{_ as $,C}from"./index-068b063d.js";import{_ as S}from"./dynamic-import-helper-be004503.js";import{l as O,X as V,Y as z,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as p,k as s,l as d,A as g,N as o,y as a,z as c,D as n,x as r,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const F={name:"DisplayThemeFallback",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N={class:"display-theme-fallback"},x={key:1};function j(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-textarea");return s(),d("div",N,[Object.keys(l.displayTheme.configuration).length==0?(s(),g(u,{key:0,subtype:"info"},{default:o(()=>[a(' Das Display-Theme "'+c(l.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),d("div",x,[n(u,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(l.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":l.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=_=>m.updateConfiguration(_,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[r("pre",null,c(JSON.stringify(l.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const A=y(F,[["render",j],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);O.add(V,z);const M={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>S(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-28647fcd.js"),["assets/displayTheme-28647fcd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:A})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function P(e,t,l,v,w,m){const u=p("font-awesome-icon"),b=p("openwb-base-alert"),_=p("openwb-base-heading");return s(),d(q,null,[l.displayTheme.official?(s(),g(b,{key:0,subtype:"success"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),g(b,{key:1,subtype:"info"},{default:o(()=>[n(u,{"fixed-width":"",icon:["fas","people-group"]}),a(' Das ausgewählte Display Theme "'+c(l.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(_,null,{default:o(()=>[a(' Einstellungen für Display Theme "'+c(l.displayTheme.name)+'" ',1)]),_:1}),(s(),g(E(m.myComponent),{displayTheme:l.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>m.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const U=y(M,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),H={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:U},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(l=>l.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},R={class:"optionalComponents"},J={name:"optionalComponentsForm"},G={key:0},K={key:1},Z=r("ul",null,[r("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),r("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),r("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),X={key:0},Y=r("br",null,null,-1),Q=r("br",null,null,-1),ee=["innerHTML"],te={key:0},ne=r("br",null,null,-1),oe=r("hr",null,null,-1),ae={key:1},ie=r("hr",null,null,-1),se={key:2},le=r("hr",null,null,-1),pe=r("hr",null,null,-1),re={key:0};function de(e,t,l,v,w,m){const u=p("openwb-base-alert"),b=p("openwb-base-button-group-input"),_=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),d("div",R,[r("form",J,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",G,[n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",K,[n(b,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/optional/rfid/active",i)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[a(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Z]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),d("div",X,[n(u,{subtype:"info",class:"mb-1"},{default:o(()=>[a(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),Y,a(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen."),Q,r("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ee)]),_:1}),n(_,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
-`)},{help:o(()=>[a(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(b,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/optional/int_display/active",i)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[a(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),d("div",te,[n(b,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/optional/int_display/rotation",i)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[a(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ne,a(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),oe,n(T,null,{default:o(()=>[a(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/optional/int_display/standby",i)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[a(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),d("div",ae,[ie,n(u,{subtype:"info"},{default:o(()=>[a(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),d("div",se,[le,n(b,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/optional/int_display/only_local_charge_points",i)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[a(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),pe,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),d("div",re,[n(D,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=i=>m.updateSelectedDisplayTheme(i))},{help:o(()=>[a(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),g(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=i=>m.updateConfiguration("openWB/optional/int_display/theme",i))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=i=>e.$emit("save")),onReset:t[8]||(t[8]=i=>e.$emit("reset")),onDefaults:t[9]||(t[9]=i=>e.$emit("defaults"))})])])}const ye=y(H,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]);export{ye as default};
diff --git a/web/settings/assets/OptionalComponents-963feb73.js b/web/settings/assets/OptionalComponents-963feb73.js
new file mode 100644
index 0000000000..eb991d401d
--- /dev/null
+++ b/web/settings/assets/OptionalComponents-963feb73.js
@@ -0,0 +1,2 @@
+import{_ as $,C}from"./index-b0e5e618.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,X as z,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as l,k as s,l as r,A as _,N as o,y as i,z as c,D as n,x as p,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";const F={emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N=y(F,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),M={name:"DisplayThemeFallback",mixins:[N]},j={class:"display-theme-fallback"},x={key:1};function A(e,t,u,v,w,b){const d=l("openwb-base-alert"),m=l("openwb-base-textarea");return s(),r("div",j,[Object.keys(e.displayTheme.configuration).length==0?(s(),_(d,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+c(e.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),r("div",x,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(e.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(m,{title:"Konfiguration",subtype:"json","model-value":e.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>e.updateConfiguration(g,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[p("pre",null,c(JSON.stringify(e.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const P=y(M,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-97f12f16.js"),["assets/displayTheme-97f12f16.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:P})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function H(e,t,u,v,w,b){const d=l("font-awesome-icon"),m=l("openwb-base-alert"),g=l("openwb-base-heading");return s(),r(q,null,[u.displayTheme.official?(s(),_(m,{key:0,subtype:"success"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+c(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(m,{key:1,subtype:"info"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+c(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+c(u.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(b.myComponent),{displayTheme:u.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>b.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const R=y(U,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:R},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},X={key:1},Y=p("ul",null,[p("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),p("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),p("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),Q={key:0},ee=p("br",null,null,-1),te=p("br",null,null,-1),ne=["innerHTML"],oe={key:0},ie=p("br",null,null,-1),ae=p("hr",null,null,-1),se={key:1},le=p("hr",null,null,-1),pe={key:2},re=p("hr",null,null,-1),de=p("hr",null,null,-1),ue={key:0};function me(e,t,u,v,w,b){const d=l("openwb-base-alert"),m=l("openwb-base-button-group-input"),g=l("openwb-base-textarea"),h=l("openwb-base-card"),T=l("openwb-base-heading"),B=l("openwb-base-range-input"),D=l("openwb-base-select-input"),W=l("openwb-display-theme-proxy"),k=l("openwb-base-submit-buttons");return s(),r("div",G,[p("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",Z,[n(d,{subtype:"info"},{default:o(()=>[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),r("div",X,[n(m,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=a=>e.updateState("openWB/optional/rfid/active",a)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Y]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),r("div",Q,[n(d,{subtype:"info",class:"mb-1"},{default:o(()=>[i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),ee,i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen."),te,p("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ne)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":b.idTagList.join(`
+`)},{help:o(()=>[i(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(m,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=a=>e.updateState("openWB/optional/int_display/active",a)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[i(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),r("div",oe,[n(m,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=a=>e.updateState("openWB/optional/int_display/rotation",a)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[i(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ie,i(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),ae,n(T,null,{default:o(()=>[i(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=a=>e.updateState("openWB/optional/int_display/standby",a)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[i(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",se,[le,n(d,{subtype:"info"},{default:o(()=>[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),r("div",pe,[re,n(m,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=a=>e.updateState("openWB/optional/int_display/only_local_charge_points",a)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[i(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),de,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),r("div",ue,[n(D,{class:"mb-2",title:"Theme des Displays",groups:b.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=a=>b.updateSelectedDisplayTheme(a))},{help:o(()=>[i(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),_(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=a=>b.updateConfiguration("openWB/optional/int_display/theme",a))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=a=>e.$emit("save")),onReset:t[8]||(t[8]=a=>e.$emit("reset")),onDefaults:t[9]||(t[9]=a=>e.$emit("defaults"))})])])}const be=y(J,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]),fe=Object.freeze(Object.defineProperty({__proto__:null,default:be},Symbol.toStringTag,{value:"Module"}));export{N as D,fe as O};
diff --git a/web/settings/assets/PVChargeConfig-0d060176.js b/web/settings/assets/PVChargeConfig-0d060176.js
deleted file mode 100644
index 110920493a..0000000000
--- a/web/settings/assets/PVChargeConfig-0d060176.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as B}from"./index-068b063d.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},M={class:"pvChargeConfig"},q={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",M,[o("form",q,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["required","model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["required","model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
diff --git a/web/settings/assets/PVChargeConfig-cce066fd.js b/web/settings/assets/PVChargeConfig-cce066fd.js
new file mode 100644
index 0000000000..16b1a8eb91
--- /dev/null
+++ b/web/settings/assets/PVChargeConfig-cce066fd.js
@@ -0,0 +1 @@
+import{C as B}from"./index-b0e5e618.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},q={class:"pvChargeConfig"},M={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",q,[o("form",M,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-4e583e67.js b/web/settings/assets/ScheduledChargeConfig-a25b4908.js
similarity index 97%
rename from web/settings/assets/ScheduledChargeConfig-4e583e67.js
rename to web/settings/assets/ScheduledChargeConfig-a25b4908.js
index bf55902e4a..d62b6cbadb 100644
--- a/web/settings/assets/ScheduledChargeConfig-4e583e67.js
+++ b/web/settings/assets/ScheduledChargeConfig-a25b4908.js
@@ -1 +1 @@
-import{C as p}from"./index-068b063d.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
+import{C as p}from"./index-b0e5e618.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
diff --git a/web/settings/assets/Status-c3faa234.js b/web/settings/assets/Status-f1da0c38.js
similarity index 99%
rename from web/settings/assets/Status-c3faa234.js
rename to web/settings/assets/Status-f1da0c38.js
index bf08fe70c5..b2375178cf 100644
--- a/web/settings/assets/Status-c3faa234.js
+++ b/web/settings/assets/Status-f1da0c38.js
@@ -1 +1 @@
-import{C as y}from"./index-068b063d.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
+import{C as y}from"./index-b0e5e618.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
diff --git a/web/settings/assets/Support-48f5d97a.js b/web/settings/assets/Support-5eca5ed7.js
similarity index 99%
rename from web/settings/assets/Support-48f5d97a.js
rename to web/settings/assets/Support-5eca5ed7.js
index a731831e90..eab5d1649a 100644
--- a/web/settings/assets/Support-48f5d97a.js
+++ b/web/settings/assets/Support-5eca5ed7.js
@@ -1,3 +1,3 @@
-import{l as S,g as D,F as V}from"./vendor-fortawesome-71546160.js";import{C as W}from"./index-068b063d.js";import{_ as A,u as d,k as h,l as f,x as r,A as _,N as t,D as s,a4 as C,B as k,y as e,q as F}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(D);const z={name:"OpenwbSupportView",mixins:[W],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var p,m;if(this.components!==void 0)return this.components;let i="";const o=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const n of Object.values(o)){const u=n.id,a=((p=n.info)==null?void 0:p.manufacturer)||"N/A",c=((m=n.info)==null?void 0:m.model)||"N/A";i+=`(${u}) Hersteller: ${a}, Modell: ${c}
+import{l as S,g as D,F as V}from"./vendor-fortawesome-71546160.js";import{C as W}from"./index-b0e5e618.js";import{_ as A,u as d,k as h,l as f,x as r,A as _,N as t,D as s,a4 as C,B as k,y as e,q as F}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(D);const z={name:"OpenwbSupportView",mixins:[W],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var p,m;if(this.components!==void 0)return this.components;let i="";const o=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const n of Object.values(o)){const u=n.id,a=((p=n.info)==null?void 0:p.manufacturer)||"N/A",c=((m=n.info)==null?void 0:m.model)||"N/A";i+=`(${u}) Hersteller: ${a}, Modell: ${c}
 `}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const o=this.getWildcardTopics("openWB/vehicle/+/info");for(const[p,m]of Object.entries(o)){const n=parseInt(p.split("/")[2]);if(n!==0){const u=m.manufacturer||"N/A",a=m.model||"N/A";i+=`(${n}) Hersteller: ${u}, Modell: ${a}
 `}}return i.trim()}}},x={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T=r("li",null,' Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),H=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),E=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1),K=r("br",null,null,-1),L=r("br",null,null,-1),U=r("br",null,null,-1),j={class:"row justify-content-center"};function $(i,o,p,m,n,u){const a=d("router-link"),c=d("openwb-base-alert"),w=d("FontAwesomeIcon"),g=d("openwb-base-text-input"),b=d("openwb-base-textarea"),v=d("openwb-base-click-button"),y=d("openwb-base-card"),B=d("font-awesome-icon");return h(),f("div",x,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(h(),_(c,{key:0,subtype:"danger"},{default:t(()=>[e(" Du musst der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(h(),f("div",I,[s(c,{subtype:"success"},{default:t(()=>[e(" Du hast der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und kannst Systemberichte senden. ")]),_:1}),s(y,{title:"Systembericht"},C({default:t(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(h(),f("div",N,[s(c,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lies bitte den Hilfetext, der durch Klick auf das "),s(w,{icon:["far","question-circle"]}),e(" angezeigt wird. Nimm das Wiki zur Hilfe. ")]),T,M,H,E])]),_:1}),s(g,{title:"E-Mail",required:"",subtype:"email",modelValue:n.email,"onUpdate:modelValue":o[0]||(o[0]=l=>n.email=l)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(g,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":o[1]||(o[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:t(()=>[e(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),K,e(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")]),_:1},8,["model-value"]),s(b,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":u.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=l=>n.components=l)},{help:t(()=>[e(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind."),L,s(a,{to:"/HardwareInstallation"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":u.vehicleInfo,"onUpdate:modelValue":o[3]||(o[3]=l=>n.vehicles=l)},{help:t(()=>[e(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr)."),U,s(a,{to:"/VehicleConfiguration"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.message,"onUpdate:modelValue":o[4]||(o[4]=l=>n.message=l)},null,8,["modelValue"])])):k("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",j,[s(v,{class:F(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:u.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?k("",!0):(h(),_(c,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. "),s(B,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const X=A(z,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{X as default};
diff --git a/web/settings/assets/System-d516542d.js b/web/settings/assets/System-c2920436.js
similarity index 99%
rename from web/settings/assets/System-d516542d.js
rename to web/settings/assets/System-c2920436.js
index f0ae788d04..86cd79fe50 100644
--- a/web/settings/assets/System-d516542d.js
+++ b/web/settings/assets/System-c2920436.js
@@ -1 +1 @@
-import{l as A,ae as q,p as S,a3 as C,U,af as z,F as $}from"./vendor-fortawesome-71546160.js";import{C as x}from"./index-068b063d.js";import{_ as E,u as p,k as m,l as _,A as B,N as a,B as w,x as o,D as s,y as i,q as k,J as F,K as j,z as D,S as T,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,U,z);const L={name:"OpenwbSystemView",mixins:[x],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],b=(l,d)=>l.value==d.value?0:l.value==t?-1:d.value==t?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var r=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(r!==void 0){var c=0;for(const[l,d]of Object.entries(r))v.includes(l)?c=0:l==u?c=1:c=2,f[c].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(b),f[1].options.sort(b)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},h=t=>(T("data-v-059847f6"),t=t(),I(),t),N={class:"system"},R=h(()=>o("h2",null,"Achtung!",-1)),Z=h(()=>o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),O={key:1},P={name:"versionInfoForm"},G={class:"missing-commits"},J=h(()=>o("br",null,null,-1)),H={class:"row justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={class:"col-md-4 d-flex py-1 justify-content-center"},Q={key:0,name:"powerForm"},X={class:"row justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={class:"col-md-4 d-flex py-1 justify-content-center"},te={key:1,name:"releaseChangeForm"},se=h(()=>o("br",null,null,-1)),ne=h(()=>o("br",null,null,-1)),ae=h(()=>o("br",null,null,-1)),oe=h(()=>o("br",null,null,-1)),re={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(t,e,u,v,b,r){const f=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),d=p("openwb-base-card"),g=p("font-awesome-icon"),y=p("openwb-base-click-button"),V=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?w("",!0):(m(),B(c,{key:0,subtype:"danger"},{default:a(()=>[R,Z,s(f,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),b.warningAcknowledged||u.installAssistantActive?(m(),_("div",O,[o("form",P,[s(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[o("div",H,[o("div",K,[s(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[i(" Informationen aktualisieren "),s(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),o("div",M,[s(y,{class:k(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>r.systemUpdate())},{default:a(()=>[i(" Update "),s(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:k(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(m(),B(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[o("ul",G,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},D(n),1))),128))])]),_:1})):w("",!0),s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1}),t.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(m(),B(c,{key:1,subtype:"danger"},{default:a(()=>[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),J,i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")]),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(m(),_("form",Q,[s(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",X,[o("div",Y,[s(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemReboot"))},{default:a(()=>[i(" Neustart "),s(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),o("div",ee,[s(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>r.sendSystemCommand("systemShutdown"))},{default:a(()=>[i(" Ausschalten "),s(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(m(),_("form",te,[s(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",re,[o("div",le,[s(y,{class:k(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>r.switchBranch())},{default:a(()=>[s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),se,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),ne,i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ae,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),oe,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(V,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(V,{title:"Tag",options:r.getBranchTagOptions(),modelValue:b.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>b.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):w("",!0)])}const fe=E(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{fe as default};
+import{l as A,ae as q,p as S,a3 as C,U,af as z,F as $}from"./vendor-fortawesome-71546160.js";import{C as x}from"./index-b0e5e618.js";import{_ as E,u as p,k as m,l as _,A as B,N as a,B as w,x as o,D as s,y as i,q as k,J as F,K as j,z as D,S as T,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,U,z);const L={name:"OpenwbSystemView",mixins:[x],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],b=(l,d)=>l.value==d.value?0:l.value==t?-1:d.value==t?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var r=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(r!==void 0){var c=0;for(const[l,d]of Object.entries(r))v.includes(l)?c=0:l==u?c=1:c=2,f[c].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(b),f[1].options.sort(b)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},h=t=>(T("data-v-059847f6"),t=t(),I(),t),N={class:"system"},R=h(()=>o("h2",null,"Achtung!",-1)),Z=h(()=>o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),O={key:1},P={name:"versionInfoForm"},G={class:"missing-commits"},J=h(()=>o("br",null,null,-1)),H={class:"row justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={class:"col-md-4 d-flex py-1 justify-content-center"},Q={key:0,name:"powerForm"},X={class:"row justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={class:"col-md-4 d-flex py-1 justify-content-center"},te={key:1,name:"releaseChangeForm"},se=h(()=>o("br",null,null,-1)),ne=h(()=>o("br",null,null,-1)),ae=h(()=>o("br",null,null,-1)),oe=h(()=>o("br",null,null,-1)),re={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(t,e,u,v,b,r){const f=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),d=p("openwb-base-card"),g=p("font-awesome-icon"),y=p("openwb-base-click-button"),V=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?w("",!0):(m(),B(c,{key:0,subtype:"danger"},{default:a(()=>[R,Z,s(f,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),b.warningAcknowledged||u.installAssistantActive?(m(),_("div",O,[o("form",P,[s(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[o("div",H,[o("div",K,[s(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[i(" Informationen aktualisieren "),s(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),o("div",M,[s(y,{class:k(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>r.systemUpdate())},{default:a(()=>[i(" Update "),s(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:k(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(m(),B(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[o("ul",G,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},D(n),1))),128))])]),_:1})):w("",!0),s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1}),t.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(m(),B(c,{key:1,subtype:"danger"},{default:a(()=>[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),J,i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")]),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(m(),_("form",Q,[s(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",X,[o("div",Y,[s(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemReboot"))},{default:a(()=>[i(" Neustart "),s(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),o("div",ee,[s(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>r.sendSystemCommand("systemShutdown"))},{default:a(()=>[i(" Ausschalten "),s(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(m(),_("form",te,[s(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",re,[o("div",le,[s(y,{class:k(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>r.switchBranch())},{default:a(()=>[s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),se,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),ne,i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ae,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),oe,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(V,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(V,{title:"Tag",options:r.getBranchTagOptions(),modelValue:b.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>b.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):w("",!0)])}const fe=E(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{fe as default};
diff --git a/web/settings/assets/TestingStore-af0aad03.js b/web/settings/assets/TestingStore-1bc32428.js
similarity index 99%
rename from web/settings/assets/TestingStore-af0aad03.js
rename to web/settings/assets/TestingStore-1bc32428.js
index a4f2790867..658092c337 100644
--- a/web/settings/assets/TestingStore-af0aad03.js
+++ b/web/settings/assets/TestingStore-1bc32428.js
@@ -1 +1 @@
-import{C as V}from"./index-068b063d.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
+import{C as V}from"./index-b0e5e618.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
diff --git a/web/settings/assets/TimeChargeConfig-182836cc.js b/web/settings/assets/TimeChargeConfig-46c6427d.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-182836cc.js
rename to web/settings/assets/TimeChargeConfig-46c6427d.js
index e6fc45bcc2..6f46f9f3fd 100644
--- a/web/settings/assets/TimeChargeConfig-182836cc.js
+++ b/web/settings/assets/TimeChargeConfig-46c6427d.js
@@ -1 +1 @@
-import{C as l}from"./index-068b063d.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-b0e5e618.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-5050794d.js b/web/settings/assets/VehicleConfig-5050794d.js
new file mode 100644
index 0000000000..ffba6b108d
--- /dev/null
+++ b/web/settings/assets/VehicleConfig-5050794d.js
@@ -0,0 +1 @@
+import{l as H,d as j,a0 as J,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-b0e5e618.js";import{_ as re}from"./dynamic-import-helper-be004503.js";import{_ as M,u as C,k as d,l as c,A as p,N as a,y as l,z as S,D as n,x as h,a2 as de,a3 as ue,J as y,B as m,K as B,a4 as q,P as N,q as O,S as se,U as me}from"./vendor-f2b8aa6f.js";const ce={emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},methods:{updateConfiguration(e,r=void 0){this.$emit("update:configuration",{value:e,object:r})}}},he=M(ce,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),ge={name:"VehicleConfigFallback",mixins:[he]},pe={class:"vehicle-fallback"},be={key:1};function ve(e,r,b,F,_,s){const L=C("openwb-base-alert"),v=C("openwb-base-textarea");return d(),c("div",pe,[Object.keys(e.vehicle.configuration).length==0?(d(),p(L,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(e.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),c("div",be,[n(L,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(e.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(v,{title:"Konfiguration",subtype:"json","model-value":e.vehicle.configuration,"onUpdate:modelValue":r[0]||(r[0]=W=>e.updateConfiguration(W,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(L,{subtype:"info"},{default:a(()=>[h("pre",null,S(JSON.stringify(e.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const fe=M(ge,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),_e={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),de({loader:()=>re(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-2f9b7b98.js"),["assets/vehicle-2f9b7b98.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-c0891ece.js"),["assets/vehicle-c0891ece.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-d78b6b11.js"),["assets/vehicle-d78b6b11.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-08379fee.js"),["assets/vehicle-08379fee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e909e122.js"),["assets/vehicle-e909e122.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-d0d26522.js"),["assets/vehicle-d0d26522.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-9dbb1f9d.js"),["assets/vehicle-9dbb1f9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-8ec5d670.js"),["assets/vehicle-8ec5d670.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-fa2b1ad1.js"),["assets/vehicle-fa2b1ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-5f51066d.js"),["assets/vehicle-5f51066d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-c5ee02d8.js"),["assets/vehicle-c5ee02d8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-f30d6420.js"),["assets/vehicle-f30d6420.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-98ffa49f.js"),["assets/vehicle-98ffa49f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-3a34ea9e.js"),["assets/vehicle-3a34ea9e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-65e40931.js"),["assets/vehicle-65e40931.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-29ff37c0.js"),["assets/vehicle-29ff37c0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-023614f3.js"),["assets/vehicle-023614f3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-f3b10eaa.js"),["assets/vehicle-f3b10eaa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:fe})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function we(e,r,b,F,_,s){const L=C("openwb-base-heading");return d(),c(y,null,[n(L,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(ue(s.myComponent),{vehicleId:b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":r[0]||(r[0]=v=>s.updateConfiguration(v))},null,40,["vehicleId","vehicle"]))],64)}const ke=M(_e,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);H.add(j,J,G,Q,X,Y,K,ee,te,ne,ae);const Ve={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:ke},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(r=>{let b=parseInt(r.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;e.push({value:b,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(r=>{let b=parseInt(r.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;e.push({value:b,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let r=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+r+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let r=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+r+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,r){r.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,r){this.showVehicleModal=!1,r=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const r=this.socModuleList.find(b=>b.value==e);return Object.prototype.hasOwnProperty.call(r,"defaults")?{...JSON.parse(JSON.stringify(r.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,r){this.updateState("openWB/vehicle/"+e+"/soc_module/config",r,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(r))},updateConfiguration(e,r){console.debug("updateConfiguration",e,r),this.updateState(e,r.value,r.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,r){r.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,r){this.showEvTemplateModal=!1,r=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,r){r.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,r){this.showChargeTemplateModal=!1,r=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,r){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+r]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+r].name:"Zielladen Zeitplan "+e+"/"+r},addChargeTemplateSchedulePlan(e,r){r.stopPropagation(),console.info("requesting new charge template schedule plan...");let b=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(e,r,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(r.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,r,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+r+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:r}}))},getChargeTemplateTimeChargingPlanName(e,r){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+r]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+r].name:"Zeitladen Zeitplan "+e+"/"+r},addChargeTemplateTimeChargingPlan(e,r){r.stopPropagation(),console.info("requesting new charge template time charging plan...");let b=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(e,r,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(r.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,r,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+r+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:r}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),Ce={class:"vehicleConfig"},Se={name:"vehicleConfigForm"},ze={key:0},Ue={key:1},Te=f(()=>h("br",null,null,-1)),We=f(()=>h("hr",null,null,-1)),Le={key:2},Pe=f(()=>h("br",null,null,-1)),ye=["innerHTML"],Ae=f(()=>h("hr",null,null,-1)),Ee=f(()=>h("br",null,null,-1)),Be=f(()=>h("br",null,null,-1)),Fe=f(()=>h("br",null,null,-1)),qe={key:3},Me=f(()=>h("hr",{class:"border-secondary"},null,-1)),De={key:0},Ze={key:1},xe=f(()=>h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),Ne={key:0},Oe=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Re=f(()=>h("br",null,null,-1)),$e=f(()=>h("br",null,null,-1)),He={key:1},je={key:0},Je={key:0},Ge={key:3},Qe={key:0},Xe={key:1},Ye=f(()=>h("br",null,null,-1)),Ke=f(()=>h("br",null,null,-1)),et=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),tt={key:0},nt={key:0},at={key:0},lt=f(()=>h("hr",null,null,-1)),it=f(()=>h("hr",null,null,-1)),ot=f(()=>h("br",null,null,-1)),rt=f(()=>h("br",null,null,-1)),dt=f(()=>h("hr",null,null,-1)),ut=f(()=>h("br",null,null,-1)),st=f(()=>h("br",null,null,-1)),mt=["onClick"],ct={key:0},ht={key:1},gt={key:2},pt={key:3},bt={key:4},vt={key:5},ft={key:4},_t=f(()=>h("hr",null,null,-1)),wt=["onClick"],kt={key:0},Vt={key:1},Ct={key:2},St={key:3},zt={key:4},Ut={key:5};function Tt(e,r,b,F,_,s){const L=C("openwb-base-modal-dialog"),v=C("font-awesome-icon"),W=C("openwb-base-avatar"),E=C("openwb-base-alert"),U=C("openwb-base-text-input"),D=C("openwb-base-select-input"),I=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),A=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),$=C("openwb-base-submit-buttons");return d(),c(y,null,[n(L,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r[0]||(r[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r[1]||(r[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r[2]||(r[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r[3]||(r[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r[4]||(r[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",Ce,[h("form",Se,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(v,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(W,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),c("div",ze,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),c("div",Ue,[(d(!0),c(y,null,B(s.vehicleIndexes,i=>(d(),p(A,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),i!==0?(d(),p(U,{key:0,title:"Fahrzeughersteller ","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].manufacturer,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"manufacturer")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),i!==0?(d(),p(U,{key:1,title:"Fahrzeugmodell","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].model,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"model")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht."),Te,l(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(D,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(D,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),We,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!b.installAssistantActive?(d(),c("div",Le,[n(I,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),Pe,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ye)]),_:1}),Ae])):m("",!0),n(D,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),Ee,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Be,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Fe,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(d(),c("div",qe,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(d(),p(W,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Me,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(W,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),c("div",De,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),c("div",Ze,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),xe,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(d(!0),c(y,null,B(s.evTemplates,(i,o)=>(d(),p(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),c("div",Ne,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),Oe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ie,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Re,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),$e]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),c("div",He,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(d(),c("span",je," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(d(),c("span",Je," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(d(),p(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),c("div",Ge,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(d(),p(W,{key:0,class:"bg-danger clickable",onClick:g=>s.removeEvTemplateModal(o,g)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(W,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),c("div",Qe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),c("div",Xe,[(d(!0),c(y,null,B(s.chargeTemplates,(i,o)=>(d(),p(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Ye,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Ke,et]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),c("div",tt,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(d(),c("div",nt,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),c("div",at,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),lt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),it,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),ot,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),rt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),dt,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),ut,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),st,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(d(!0),c(y,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,g)=>(d(),p(A,{key:g,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(d(),c("span",{key:0,onClick:N(T=>e.updateState(g,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(d(),c("span",ct,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(d(),c("span",ht,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(d(),c("span",gt,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(d(),c("span",pt,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(d(),c("span",bt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,mt)):m("",!0),u.collapsed==!1?(d(),p(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,g,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(g,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(g,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(g,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(g,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(g,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(g,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(d(),p(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(g,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(d(),p(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(g,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(d(),p(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(g,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(g,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(d(),p(U,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(g,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(d(),c("div",vt,[(d(!0),c(y,null,B(e.weekdays,(u,T)=>(d(),p(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":Z=>e.updateState(g,Z,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),b.installAssistantActive?m("",!0):(d(),c("div",ft,[_t,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(d(!0),c(y,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,g)=>(d(),p(A,{key:g,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(d(),c("span",{key:0,onClick:N(T=>e.updateState(g,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(d(),c("span",kt,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(d(),c("span",Vt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(d(),c("span",Ct,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(d(),c("span",St,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(d(),c("span",zt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,wt)):m("",!0),u.collapsed==!1?(d(),p(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,g,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(g,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(g,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(g,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(g,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(g,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(d(),p(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(g,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(d(),p(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(g,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(U,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(g,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(g,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(g,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(d(),p(U,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(g,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(d(),p(U,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(g,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(d(),c("div",Ut,[(d(!0),c(y,null,B(e.weekdays,(u,T)=>(d(),p(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":Z=>e.updateState(g,Z,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(d(),p(W,{key:0,class:"bg-danger clickable",onClick:g=>s.removeChargeTemplateModal(o,g)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n($,{formName:"vehicleConfigForm",onSave:r[5]||(r[5]=i=>e.$emit("save")),onReset:r[6]||(r[6]=i=>e.$emit("reset")),onDefaults:r[7]||(r[7]=i=>e.$emit("defaults"))})])])],64)}const Wt=M(Ve,[["render",Tt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),Et=Object.freeze(Object.defineProperty({__proto__:null,default:Wt},Symbol.toStringTag,{value:"Module"}));export{he as V,Wt as a,Et as b};
diff --git a/web/settings/assets/VehicleConfig-ee86d81f.js b/web/settings/assets/VehicleConfig-ee86d81f.js
deleted file mode 100644
index d7c80194be..0000000000
--- a/web/settings/assets/VehicleConfig-ee86d81f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as j,d as J,a0 as $,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-068b063d.js";import{_ as de}from"./dynamic-import-helper-be004503.js";import{_ as Z,u as C,k as r,l as c,A as b,N as a,y as l,z as S,D as n,x as h,a2 as re,a3 as ue,J as y,B as m,K as B,a4 as q,P as N,q as O,S as se,U as me}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const ce={name:"VehicleConfigFallback",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},vehicleId:{default:void 0},vehicleType:String},methods:{updateConfiguration(e,d=void 0){this.$emit("update:configuration",{value:e,object:d})}}},he={class:"vehicle-fallback"},ge={key:1};function pe(e,d,g,F,_,s){const L=C("openwb-base-alert"),v=C("openwb-base-textarea");return r(),c("div",he,[Object.keys(g.configuration).length==0?(r(),b(L,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(g.vehicleType)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),c("div",ge,[n(L,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(g.vehicleType)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(v,{title:"Konfiguration",subtype:"json","model-value":g.configuration,"onUpdate:modelValue":d[0]||(d[0]=W=>s.updateConfiguration(W,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(L,{subtype:"info"},{default:a(()=>[h("pre",null,S(JSON.stringify(g.configuration,void 0,2)),1)]),_:1})]))])}const be=Z(ce,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),ve={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>de(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-1e7f87e2.js"),["assets/vehicle-1e7f87e2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-4452f15b.js"),["assets/vehicle-4452f15b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-cea9d72d.js"),["assets/vehicle-cea9d72d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-f67e18a5.js"),["assets/vehicle-f67e18a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e84c6485.js"),["assets/vehicle-e84c6485.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-4ca53182.js"),["assets/vehicle-4ca53182.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-b04d281c.js"),["assets/vehicle-b04d281c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-891d5eff.js"),["assets/vehicle-891d5eff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-b28cb25d.js"),["assets/vehicle-b28cb25d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-fc0096d3.js"),["assets/vehicle-fc0096d3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-836328f6.js"),["assets/vehicle-836328f6.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-951b0c53.js"),["assets/vehicle-951b0c53.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-5ad6c2de.js"),["assets/vehicle-5ad6c2de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-47636774.js"),["assets/vehicle-47636774.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-b1a2ecd4.js"),["assets/vehicle-b1a2ecd4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-060018aa.js"),["assets/vehicle-060018aa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-068b063d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-6605520f.js"),["assets/vehicle-6605520f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-63ef87a5.js"),["assets/vehicle-63ef87a5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function fe(e,d,g,F,_,s){const L=C("openwb-base-heading");return r(),c(y,null,[n(L,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(g.vehicle.name)+'" ',1)]),_:1}),(r(),b(ue(s.myComponent),{vehicleId:g.vehicleId,vehicle:g.vehicle,configuration:g.vehicle.configuration,vehicleType:g.vehicle.type,"onUpdate:configuration":d[0]||(d[0]=v=>s.updateConfiguration(v))},null,40,["vehicleId","vehicle","configuration","vehicleType"]))],64)}const _e=Z(ve,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);j.add(J,$,G,Q,X,Y,K,ee,te,ne,ae);const we={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:_e},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+g].name;e.push({value:g,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(d=>{let g=parseInt(d.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+g].name;e.push({value:g,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let d=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+d+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,d){d.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,d){this.showVehicleModal=!1,d=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const d=this.socModuleList.find(g=>g.value==e);return Object.prototype.hasOwnProperty.call(d,"defaults")?{...JSON.parse(JSON.stringify(d.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,d){this.updateState("openWB/vehicle/"+e+"/soc_module/config",d,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(d))},updateConfiguration(e,d){console.debug("updateConfiguration",e,d),this.updateState(e,d.value,d.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,d){d.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,d){this.showEvTemplateModal=!1,d=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,d){d.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,d){this.showChargeTemplateModal=!1,d=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+d].name:"Zielladen Zeitplan "+e+"/"+d},addChargeTemplateSchedulePlan(e,d){d.stopPropagation(),console.info("requesting new charge template schedule plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:g}})},removeChargeTemplateSchedulePlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,d,g){this.showChargeTemplateSchedulePlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:d}}))},getChargeTemplateTimeChargingPlanName(e,d){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+d].name:"Zeitladen Zeitplan "+e+"/"+d},addChargeTemplateTimeChargingPlan(e,d){d.stopPropagation(),console.info("requesting new charge template time charging plan...");let g=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:g}})},removeChargeTemplateTimeChargingPlanModal(e,d,g){g.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(d.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,d,g){this.showChargeTemplateTimeChargingPlanModal=!1,g=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+d+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:d}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),ke={class:"vehicleConfig"},Ve={name:"vehicleConfigForm"},Ce={key:0},Se={key:1},ze=f(()=>h("br",null,null,-1)),Ue=f(()=>h("hr",null,null,-1)),Te={key:2},We=f(()=>h("br",null,null,-1)),Le=["innerHTML"],Pe=f(()=>h("hr",null,null,-1)),ye=f(()=>h("br",null,null,-1)),Ae=f(()=>h("br",null,null,-1)),Ee=f(()=>h("br",null,null,-1)),Be={key:3},Fe=f(()=>h("hr",{class:"border-secondary"},null,-1)),qe={key:0},Me={key:1},De=f(()=>h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),Ze={key:0},xe=f(()=>h("br",null,null,-1)),Ne=f(()=>h("br",null,null,-1)),Oe=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Re={key:1},He={key:0},je={key:0},Je={key:3},$e={key:0},Ge={key:1},Qe=f(()=>h("br",null,null,-1)),Xe=f(()=>h("br",null,null,-1)),Ye=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),Ke={key:0},et={key:0},tt={key:0},nt=f(()=>h("hr",null,null,-1)),at=f(()=>h("hr",null,null,-1)),lt=f(()=>h("br",null,null,-1)),it=f(()=>h("br",null,null,-1)),ot=f(()=>h("hr",null,null,-1)),dt=f(()=>h("br",null,null,-1)),rt=f(()=>h("br",null,null,-1)),ut=["onClick"],st={key:0},mt={key:1},ct={key:2},ht={key:3},gt={key:4},pt={key:5},bt={key:4},vt=f(()=>h("hr",null,null,-1)),ft=["onClick"],_t={key:0},wt={key:1},kt={key:2},Vt={key:3},Ct={key:4},St={key:5};function zt(e,d,g,F,_,s){const L=C("openwb-base-modal-dialog"),v=C("font-awesome-icon"),W=C("openwb-base-avatar"),E=C("openwb-base-alert"),U=C("openwb-base-text-input"),M=C("openwb-base-select-input"),I=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),A=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),H=C("openwb-base-submit-buttons");return r(),c(y,null,[n(L,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[0]||(d[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[1]||(d[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[2]||(d[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[3]||(d[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d[4]||(d[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",ke,[h("form",Ve,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(v,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",Ce,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Se,[(r(!0),c(y,null,B(s.vehicleIndexes,i=>(r(),b(A,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),i!==0?(r(),b(U,{key:0,title:"Fahrzeughersteller ","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].manufacturer,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"manufacturer")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),i!==0?(r(),b(U,{key:1,title:"Fahrzeugmodell","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].model,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"model")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht."),ze,l(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),Ue,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!g.installAssistantActive?(r(),c("div",Te,[n(I,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),We,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,Le)]),_:1}),Pe])):m("",!0),n(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),ye,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Ae,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Ee,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(r(),c("div",Be,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Fe,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",qe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Me,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),De,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(r(!0),c(y,null,B(s.evTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,"model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ze,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),xe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ne,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Oe,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),Ie]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:0,step:.1,"model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),c("div",Re,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(r(),c("span",He," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(r(),c("span",je," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(r(),b(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,"model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Je,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,"model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeEvTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),b(W,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),c("div",$e,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(r(),c("div",Ge,[(r(!0),c(y,null,B(s.chargeTemplates,(i,o)=>(r(),b(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Qe,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Xe,Ye]),_:2},1032,["model-value","onUpdate:modelValue"]),g.installAssistantActive?m("",!0):(r(),c("div",Ke,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(r(),c("div",et,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(r(),c("div",tt,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),nt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),at,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),lt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),it,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),ot,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),dt,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),rt,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(r(!0),c(y,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",st,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",mt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(r(),c("span",ct,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",ht,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",gt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ut)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(p,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(r(),b(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",pt,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),g.installAssistantActive?m("",!0):(r(),c("div",bt,[vt,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(r(!0),c(y,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,p)=>(r(),b(A,{key:p,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(r(),c("span",{key:0,onClick:N(T=>e.updateState(p,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(r(),c("span",_t,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(r(),c("span",wt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(r(),c("span",kt,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(r(),c("span",Vt,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(r(),c("span",Ct,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,ft)):m("",!0),u.collapsed==!1?(r(),b(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,p,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(p,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(p,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(p,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(r(),b(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(p,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(r(),b(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(p,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(r(),b(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(p,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(U,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(p,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(p,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(r(),b(U,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(r(),b(U,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(p,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(r(),c("div",St,[(r(!0),c(y,null,B(e.weekdays,(u,T)=>(r(),b(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":D=>e.updateState(p,D,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(r(),b(W,{key:0,class:"bg-danger clickable",onClick:p=>s.removeChargeTemplateModal(o,p)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n(H,{formName:"vehicleConfigForm",onSave:d[5]||(d[5]=i=>e.$emit("save")),onReset:d[6]||(d[6]=i=>e.$emit("reset")),onDefaults:d[7]||(d[7]=i=>e.$emit("defaults"))})])])],64)}const Bt=Z(we,[["render",zt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]);export{Bt as default};
diff --git a/web/settings/assets/backup_cloud-0c265ebd.js b/web/settings/assets/backup_cloud-0c265ebd.js
new file mode 100644
index 0000000000..ee491b28cd
--- /dev/null
+++ b/web/settings/assets/backup_cloud-0c265ebd.js
@@ -0,0 +1 @@
+import{B as i}from"./DataManagement-eb2fc5d7.js";import{_ as r,u as s,k as p,l as d,D as u,N as m,y as a,x as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[i]},f={class:"backup-cloud-samba"},c=l("br",null,null,-1),g=l("br",null,null,-1),v=l("br",null,null,-1);function _(e,o,C,k,w,B){const t=s("openwb-base-text-input");return p(),d("div",f,[u(t,{title:"Server",subtype:"host",required:"","model-value":e.backupCloud.configuration.smb_server,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),u(t,{title:"Freigabe",required:"","model-value":e.backupCloud.configuration.smb_share,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),u(t,{title:"Unterordner (optional)","model-value":e.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>[a(" Jeder Unterordner muss mit / enden."),c,a(' Die Zeichen \\:"|*?<> sind verboten!'),g,a(" Beispiel 1: openwb/ "),v,a(" Beispiel 2: openwb/lp2/ ")]),_:1},8,["model-value"]),u(t,{title:"Benutzer",subtype:"user","model-value":e.backupCloud.configuration.smb_user,"onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),u(t,{title:"Kennwort",subtype:"password","model-value":e.backupCloud.configuration.smb_password,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const z=r(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{z as default};
diff --git a/web/settings/assets/backup_cloud-17c766db.js b/web/settings/assets/backup_cloud-17c766db.js
deleted file mode 100644
index 0af85dce3a..0000000000
--- a/web/settings/assets/backup_cloud-17c766db.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as s,u as c,k as p,l as r,D as d}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const i={name:"BackupCloudNfs",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},l={class:"backup-cloud-nfs"};function _(t,e,o,f,m,n){const a=c("openwb-base-text-input");return p(),r("div",l,[d(a,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$","model-value":o.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateConfiguration(u,"configuration.nfs_share"))},null,8,["model-value"])])}const g=s(i,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{g as default};
diff --git a/web/settings/assets/backup_cloud-190eaa49.js b/web/settings/assets/backup_cloud-190eaa49.js
deleted file mode 100644
index 3df99fb64c..0000000000
--- a/web/settings/assets/backup_cloud-190eaa49.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as s,k as r,l as i,D as a,N as p,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"BackupCloudNextCloud",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},f={class:"backup-cloud-next-cloud"};function _(d,e,o,b,g,u){const n=s("openwb-base-text-input");return r(),i("div",f,[a(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":o.backupCloud.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.ip_address"))},{help:p(()=>[c(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")]),_:1},8,["model-value"]),a(n,{title:"Benutzername",subtype:"user","model-value":o.backupCloud.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),a(n,{title:"Passwort",subtype:"password","model-value":o.backupCloud.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>u.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const C=l(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{C as default};
diff --git a/web/settings/assets/backup_cloud-198617e1.js b/web/settings/assets/backup_cloud-198617e1.js
deleted file mode 100644
index 096df34de2..0000000000
--- a/web/settings/assets/backup_cloud-198617e1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as b,u as d,k as f,l as g,D as t,N as o,y as n,x as r}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"BackupCloudOneDrive",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(u,e=void 0){this.$emit("update:configuration",{value:u,object:e})},sendSystemCommand(u,e={}){this.$emit("sendCommand",{command:u,data:e})}}},h={class:"backup-cloud-one-drive"},v=r("br",null,null,-1),k=r("br",null,null,-1),w=r("br",null,null,-1),C=r("br",null,null,-1),B=r("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),y=r("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1);function x(u,e,i,A,D,s){const p=d("openwb-base-alert"),a=d("openwb-base-text-input"),m=d("openwb-base-heading"),c=d("openwb-base-button-input");return f(),g("div",h,[t(p,{subtype:"info"},{default:o(()=>[n(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),v,n(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")]),_:1}),t(a,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":i.backupCloud.configuration.backuppath,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.backuppath"))},{help:o(()=>[n(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),k,n(" Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),t(a,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":i.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(m,null,{default:o(()=>[n(" Zugang zu OneDrive für diese openWB autorisieren ")]),_:1}),t(c,{title:"1. Anmeldeanforderung erstellen",buttonText:"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:e[1]||(e[1]=l=>s.sendSystemCommand("requestMSALAuthCode",{}))},{help:o(()=>[n(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),w,n(" Weitere Infos:"),C,B,y]),_:1}),t(a,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":i.backupCloud.configuration.authcode},null,8,["model-value"]),t(a,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":i.backupCloud.configuration.authurl},{help:o(()=>[n(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),t(c,{title:"4. Token abrufen und speichern",buttonText:"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:e[2]||(e[2]=l=>s.sendSystemCommand("retrieveMSALTokens",{}))},{help:o(()=>[n(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const Z=b(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{Z as default};
diff --git a/web/settings/assets/backup_cloud-7c8657cf.js b/web/settings/assets/backup_cloud-7c8657cf.js
new file mode 100644
index 0000000000..099a6a45b2
--- /dev/null
+++ b/web/settings/assets/backup_cloud-7c8657cf.js
@@ -0,0 +1 @@
+import{B as a}from"./DataManagement-eb2fc5d7.js";import{_ as s,u as r,k as i,l,D as u,N as d,y as p}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[a]},c={class:"backup-cloud-next-cloud"};function f(e,o,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":e.backupCloud.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")]),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":e.backupCloud.configuration.user,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":e.backupCloud.configuration.password,"onUpdate:modelValue":o[2]||(o[2]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=s(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{y as default};
diff --git a/web/settings/assets/backup_cloud-ca22b0b2.js b/web/settings/assets/backup_cloud-ca22b0b2.js
new file mode 100644
index 0000000000..7bb1b7a2af
--- /dev/null
+++ b/web/settings/assets/backup_cloud-ca22b0b2.js
@@ -0,0 +1 @@
+import{B as c}from"./DataManagement-eb2fc5d7.js";import{_ as m,u as a,k as b,l as f,D as n,N as r,y as e,x as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},h={class:"backup-cloud-one-drive"},_=i("br",null,null,-1),v=i("br",null,null,-1),k=i("br",null,null,-1),w=i("br",null,null,-1),B=i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),C=i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1);function y(t,o,A,D,z,W){const l=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),d=a("openwb-base-button-input");return b(),f("div",h,[n(l,{subtype:"info"},{default:r(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),_,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")]),_:1}),n(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":t.backupCloud.configuration.backuppath,"onUpdate:modelValue":o[0]||(o[0]=s=>t.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>[e(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),v,e(" Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),n(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":t.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),n(p,null,{default:r(()=>[e(" Zugang zu OneDrive für diese openWB autorisieren ")]),_:1}),n(d,{title:"1. Anmeldeanforderung erstellen",buttonText:"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:o[1]||(o[1]=s=>t.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>[e(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),k,e(" Weitere Infos:"),w,B,C]),_:1}),n(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":t.backupCloud.configuration.authcode},null,8,["model-value"]),n(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":t.backupCloud.configuration.authurl},{help:r(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),n(d,{title:"4. Token abrufen und speichern",buttonText:"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:o[2]||(o[2]=s=>t.sendSystemCommand("retrieveMSALTokens",{}))},{help:r(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const U=m(g,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{U as default};
diff --git a/web/settings/assets/backup_cloud-f0bc932b.js b/web/settings/assets/backup_cloud-f0bc932b.js
deleted file mode 100644
index 0501e946db..0000000000
--- a/web/settings/assets/backup_cloud-f0bc932b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as s,k as p,l as m,D as a,N as b,y as l,x as r}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"BackupCloudSamba",emits:["update:configuration"],props:{backupCloud:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},_={class:"backup-cloud-samba"},f=r("br",null,null,-1),g=r("br",null,null,-1),v=r("br",null,null,-1);function C(i,e,t,k,w,u){const n=s("openwb-base-text-input");return p(),m("div",_,[a(n,{title:"Server",subtype:"host",required:"","model-value":t.backupCloud.configuration.smb_server,"onUpdate:modelValue":e[0]||(e[0]=o=>u.updateConfiguration(o,"configuration.smb_server"))},null,8,["model-value"]),a(n,{title:"Freigabe",required:"","model-value":t.backupCloud.configuration.smb_share,"onUpdate:modelValue":e[1]||(e[1]=o=>u.updateConfiguration(o,"configuration.smb_share"))},null,8,["model-value"]),a(n,{title:"Unterordner (optional)","model-value":t.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":e[2]||(e[2]=o=>u.updateConfiguration(o,"configuration.smb_path"))},{help:b(()=>[l(" Jeder Unterordner muss mit / enden."),f,l(' Die Zeichen \\:"|*?<> sind verboten!'),g,l(" Beispiel 1: openwb/ "),v,l(" Beispiel 2: openwb/lp2/ ")]),_:1},8,["model-value"]),a(n,{title:"Benutzer",subtype:"user","model-value":t.backupCloud.configuration.smb_user,"onUpdate:modelValue":e[3]||(e[3]=o=>u.updateConfiguration(o,"configuration.smb_user"))},null,8,["model-value"]),a(n,{title:"Kennwort",subtype:"password","model-value":t.backupCloud.configuration.smb_password,"onUpdate:modelValue":e[4]||(e[4]=o=>u.updateConfiguration(o,"configuration.smb_password"))},null,8,["model-value"])])}const V=d(c,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{V as default};
diff --git a/web/settings/assets/backup_cloud-f487f6db.js b/web/settings/assets/backup_cloud-f487f6db.js
new file mode 100644
index 0000000000..7f8dce7984
--- /dev/null
+++ b/web/settings/assets/backup_cloud-f487f6db.js
@@ -0,0 +1 @@
+import{B as a}from"./DataManagement-eb2fc5d7.js";import{_ as p,u as s,k as r,l as u,D as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"BackupCloudNfs",mixins:[a]},l={class:"backup-cloud-nfs"};function d(o,e,m,_,f,b){const t=s("openwb-base-text-input");return r(),u("div",l,[i(t,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":o.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.nfs_share"))},null,8,["model-value"])])}const N=p(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-037fc88f.js b/web/settings/assets/bat-037fc88f.js
new file mode 100644
index 0000000000..5934da985c
--- /dev/null
+++ b/web/settings/assets/bat-037fc88f.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as c,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(e,o,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:c(()=>[d(" Einstellungen für Fronius Batteriespeicher ")]),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":e.component.configuration.meter_id,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const E=p(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-0535c59d.js b/web/settings/assets/bat-0535c59d.js
deleted file mode 100644
index aff3418d21..0000000000
--- a/web/settings/assets/bat-0535c59d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as n,k as r,l as p,D as o,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-bat"},m={class:"small"};function b(e,t,h,g,v,y){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Speicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-053db3b2.js b/web/settings/assets/bat-053db3b2.js
new file mode 100644
index 0000000000..640061b84c
--- /dev/null
+++ b/web/settings/assets/bat-053db3b2.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as o,k as m,l as u,D as t,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIslandBat",mixins:[r]},_={class:"device-sunnyisland-bat"};function b(e,n,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",_,[t(s,null,{default:d(()=>[l(" Einstellungen für Sunny Island Batteriespeicher ")]),_:1}),t(i,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[0]||(n[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const N=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-11a9e662.js b/web/settings/assets/bat-11a9e662.js
deleted file mode 100644
index 7088db8cc5..0000000000
--- a/web/settings/assets/bat-11a9e662.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFroniusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-fronius-bat"},v={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Fronius Batteriespeicher "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":i.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.meter_id"))},null,8,["model-value"])])}const D=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-1c6c9346.js b/web/settings/assets/bat-1c6c9346.js
new file mode 100644
index 0000000000..9ba542a67e
--- /dev/null
+++ b/web/settings/assets/bat-1c6c9346.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as t,k as p,l as u,D as n,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},_={class:"device-huawei-smart-logger-bat"};function b(e,o,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",_,[n(i,null,{default:d(()=>[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")]),_:1}),n(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-210e6934.js b/web/settings/assets/bat-210e6934.js
deleted file mode 100644
index f80de085e1..0000000000
--- a/web/settings/assets/bat-210e6934.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u,k as g,l as f,D as n,N as d,y as o,x as s,z as c}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceJsonBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},b={class:"device-json-bat"},v={class:"small"},w=s("br",null,null,-1);function h(l,e,a,j,q,i){const p=u("openwb-base-heading"),r=u("openwb-base-text-input");return g(),f("div",b,[n(p,null,{default:d(()=>[o(" Einstellungen für JSON Batteriespeicher "),s("span",v,"(Modul: "+c(l.$options.name)+")",1)]),_:1}),n(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":a.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.jq_power"))},{help:d(()=>[o(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),w,o(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":a.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.jq_soc"))},null,8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":a.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.jq_imported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(r,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":a.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=t=>i.updateConfiguration(t,"configuration.jq_exported"))},{help:d(()=>[o(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const y=m(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{y as default};
diff --git a/web/settings/assets/bat-22e19627.js b/web/settings/assets/bat-22e19627.js
deleted file mode 100644
index cb6f21c3ff..0000000000
--- a/web/settings/assets/bat-22e19627.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as n,k as p,l as r,D as o,N as c,y as _,x as b,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-openwb-batkit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",v,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),b("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const D=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-26612c12.js b/web/settings/assets/bat-26612c12.js
new file mode 100644
index 0000000000..77a78f390b
--- /dev/null
+++ b/web/settings/assets/bat-26612c12.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as l,k as p,l as m,D as o,N as a,y as r,x as g}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"},c=g("br",null,null,-1);function w(e,t,_,v,j,h){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>[r(" Einstellungen für JSON Batteriespeicher ")]),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":e.component.configuration.jq_power,"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),c,r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")]),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":e.component.configuration.jq_soc,"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":e.component.configuration.jq_imported,"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":e.component.configuration.jq_exported,"onUpdate:modelValue":t[3]||(t[3]=n=>e.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const N=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-2ad336ba.js b/web/settings/assets/bat-2ad336ba.js
new file mode 100644
index 0000000000..50aa4ac329
--- /dev/null
+++ b/web/settings/assets/bat-2ad336ba.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(e,o,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>[d(" Einstellungen für Solis Batteriespeicher ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-2ec8a7b2.js b/web/settings/assets/bat-2ec8a7b2.js
deleted file mode 100644
index 7ad3da3131..0000000000
--- a/web/settings/assets/bat-2ec8a7b2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as t,k as c,l,D as o,N as p,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSunnyIslandBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyisland-bat"},v={class:"small"};function h(n,e,a,y,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),l("div",g,[o(i,null,{default:p(()=>[m(" Einstellungen für Sunny Island Batteriespeicher "),_("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const I=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{I as default};
diff --git a/web/settings/assets/bat-32c9f6fd.js b/web/settings/assets/bat-32c9f6fd.js
deleted file mode 100644
index 13fbe4e6f2..0000000000
--- a/web/settings/assets/bat-32c9f6fd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as n,k as p,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceRCTBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-361f190b.js b/web/settings/assets/bat-361f190b.js
deleted file mode 100644
index 5de1158c69..0000000000
--- a/web/settings/assets/bat-361f190b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as n,k as r,l as p,D as o,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceQCelllsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/bat.vue"]]);export{q as default};
diff --git a/web/settings/assets/bat-3688b404.js b/web/settings/assets/bat-3688b404.js
new file mode 100644
index 0000000000..82ae5448a0
--- /dev/null
+++ b/web/settings/assets/bat-3688b404.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as d,D as t,N as u,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(e,o,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>[c(" Einstellungen für Deye Batteriespeicher ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-375e955a.js b/web/settings/assets/bat-375e955a.js
new file mode 100644
index 0000000000..cc44fcd340
--- /dev/null
+++ b/web/settings/assets/bat-375e955a.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as o,k as l,l as u,D as n,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[p]},_={class:"device-openwb-evukit-bat"};function v(e,t,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:c(()=>[m(" Einstellungen für openWB EVU-Kit Batteriespeicher ")]),_:1}),n(s,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":t[0]||(t[0]=a=>e.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const V=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-37aa8980.js b/web/settings/assets/bat-37aa8980.js
deleted file mode 100644
index 8c992212d7..0000000000
--- a/web/settings/assets/bat-37aa8980.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as n,k as p,l as r,D as o,N as c,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenwbEvukitBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-bat"},g={class:"small"};function w(t,e,a,h,x,i){const s=n("openwb-base-heading"),u=n("openwb-base-select-input");return p(),r("div",b,[o(s,null,{default:c(()=>[_(" Einstellungen für openWB EVU-Kit Batteriespeicher "),m("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const D=d(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-3bf3716c.js b/web/settings/assets/bat-3bf3716c.js
new file mode 100644
index 0000000000..eafcb3d27f
--- /dev/null
+++ b/web/settings/assets/bat-3bf3716c.js
@@ -0,0 +1 @@
+import{C as l}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as t,k as u,l as m,D as i,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlexBat",mixins:[l]},_={class:"device-openwb-flex-bat"};function f(e,o,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",_,[i(a,null,{default:d(()=>[c(" Einstellungen für openWB-Flex Batteriespeicher ")]),_:1}),i(p,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":e.component.configuration.id,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const N=r(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-3e5d89d4.js b/web/settings/assets/bat-3e5d89d4.js
deleted file mode 100644
index d4e5b67e5b..0000000000
--- a/web/settings/assets/bat-3e5d89d4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as r,l as d,D as s,N as a,y as o,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceAlphaessBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-bat"},m={class:"small"};function b(e,t,h,g,v,w){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[s(i,null,{default:a(()=>[o(" Einstellungen für Alpha ESS Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),s(p,{subtype:"info"},{default:a(()=>[o(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-46611da3.js b/web/settings/assets/bat-46611da3.js
deleted file mode 100644
index cdc6884af1..0000000000
--- a/web/settings/assets/bat-46611da3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSungrowBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-bat"},m={class:"small"};function b(e,n,g,w,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Sungrow Speicher "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/bat.vue"]]);export{B as default};
diff --git a/web/settings/assets/bat-4ce133fc.js b/web/settings/assets/bat-4ce133fc.js
deleted file mode 100644
index 0dbabc3cdb..0000000000
--- a/web/settings/assets/bat-4ce133fc.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as o,k as p,l as c,D as a,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenwbFlexBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-openwb-flex-bat"},w={class:"small"};function x(t,e,i,M,B,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),d=o("openwb-base-number-input");return p(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Batteriespeicher "),b("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),a(d,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const C=r(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-5261b4cb.js b/web/settings/assets/bat-5261b4cb.js
new file mode 100644
index 0000000000..3fa54d48ec
--- /dev/null
+++ b/web/settings/assets/bat-5261b4cb.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as s,k as p,l as h,D as o,N as i,y as e,x as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceHttpBat",mixins:[u]},c={class:"device-http-bat"},_=r("br",null,null,-1),b=r("br",null,null,-1),f=r("br",null,null,-1),v=r("br",null,null,-1),w=r("br",null,null,-1);function k(n,t,z,S,Z,C){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),h("div",c,[o(d,null,{default:i(()=>[e(" Einstellungen für Http Batteriespeicher ")]),_:1}),o(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":n.component.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=a=>n.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),_,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),o(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":n.component.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=a=>n.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),b,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")]),_:1},8,["model-value"]),o(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=a=>n.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),f,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")]),_:1},8,["model-value"]),o(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=a=>n.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),w,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const E=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-5a80b300.js b/web/settings/assets/bat-5a80b300.js
deleted file mode 100644
index 88ef825870..0000000000
--- a/web/settings/assets/bat-5a80b300.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as p,l as d,D as n,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSofarBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sofar-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Sofar Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-5bb162c2.js b/web/settings/assets/bat-5bb162c2.js
deleted file mode 100644
index f13b232dfe..0000000000
--- a/web/settings/assets/bat-5bb162c2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as p,l as d,D as n,N as a,y as s,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarwattBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-bat"},m={class:"small"};function b(e,t,g,w,v,h){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-5f5ccb07.js b/web/settings/assets/bat-5f5ccb07.js
deleted file mode 100644
index b8a53d69c6..0000000000
--- a/web/settings/assets/bat-5f5ccb07.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as t,k as l,l as m,D as o,N as i,y as a,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSigenergyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},f={class:"device-sigenergy-bat"},v={class:"small"};function y(n,e,s,h,w,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),m("div",f,[o(d,null,{default:i(()=>[a(" Einstellungen für Sigenergy Batteriespeicher "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[a(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const D=p(b,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-669886fa.js b/web/settings/assets/bat-669886fa.js
deleted file mode 100644
index 8909a76bf6..0000000000
--- a/web/settings/assets/bat-669886fa.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l as p,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSonnenbatterieBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-bat"},b={class:"small"};function m(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für SonnenBatterie Speicher "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-6ec0726a.js b/web/settings/assets/bat-6ec0726a.js
deleted file mode 100644
index 3a96ea9f5c..0000000000
--- a/web/settings/assets/bat-6ec0726a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as p,l as u,D as o,N as s,y as a,x as d,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceZCSBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_zcs"},m={class:"small"};function b(e,t,z,g,h,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Azzurro ZCS Batteriespeicher "),d("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-70713ff4.js b/web/settings/assets/bat-70713ff4.js
deleted file mode 100644
index 33a9f562dd..0000000000
--- a/web/settings/assets/bat-70713ff4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as d,l as p,D as n,N as a,y as s,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-bat"},m={class:"small"};function b(e,t,g,x,h,v){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),p("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Solax Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-7a8901e4.js b/web/settings/assets/bat-7a8901e4.js
deleted file mode 100644
index 1380325b4b..0000000000
--- a/web/settings/assets/bat-7a8901e4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as t,k as c,l as p,D as n,N as l,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFoxEssBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-fox_ess-bat"},v={class:"small"};function x(o,e,s,h,w,a){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return c(),p("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für FoxEss Batteriespeicher "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-7cf44039.js b/web/settings/assets/bat-7cf44039.js
deleted file mode 100644
index 6dbba908a3..0000000000
--- a/web/settings/assets/bat-7cf44039.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as o,k as c,l as p,D as n,N as l,y as m,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceHuaweiSmartLoggerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},f={class:"device-huawei-smart-logger-bat"},v={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),p("div",f,[n(s,null,{default:l(()=>[m(" Einstellungen für Huawei SmartLogger Batteriespeicher "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),n(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-7e961860.js b/web/settings/assets/bat-7e961860.js
deleted file mode 100644
index 43c9ee3593..0000000000
--- a/web/settings/assets/bat-7e961860.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as t,k as c,l as p,D as o,N as l,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFemsBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-fems-bat"},v={class:"small"};function h(n,e,a,w,x,s){const i=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",g,[o(i,null,{default:l(()=>[m(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher "),f("span",v,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(r,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":a.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.num"))},null,8,["model-value"])])}const E=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-7f5835ff.js b/web/settings/assets/bat-7f5835ff.js
deleted file mode 100644
index 208fff2232..0000000000
--- a/web/settings/assets/bat-7f5835ff.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceDeyeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-deye-bat"},v={class:"small"};function y(t,e,a,h,w,i){const s=n("openwb-base-heading"),d=n("openwb-base-number-input");return c(),p("div",g,[o(s,null,{default:l(()=>[m(" Einstellungen für Deye Batteriespeicher "),_("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-84a37ddf.js b/web/settings/assets/bat-84a37ddf.js
deleted file mode 100644
index 516cce319d..0000000000
--- a/web/settings/assets/bat-84a37ddf.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as n,k as p,l as d,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTeslaBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Batteriespeicher "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-86050b21.js b/web/settings/assets/bat-86050b21.js
deleted file mode 100644
index 5fe326695a..0000000000
--- a/web/settings/assets/bat-86050b21.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as t,k as l,l as c,D as n,N as p,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSolisBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solis-bat"},v={class:"small"};function h(o,e,s,w,x,i){const a=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),c("div",g,[n(a,null,{default:p(()=>[m(" Einstellungen für Solis Batteriespeicher "),_("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-862c0f08.js b/web/settings/assets/bat-862c0f08.js
new file mode 100644
index 0000000000..fc7b66fb34
--- /dev/null
+++ b/web/settings/assets/bat-862c0f08.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEssBat",mixins:[r]},l={class:"device-fox_ess-bat"};function b(e,o,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",l,[t(s,null,{default:d(()=>[_(" Einstellungen für FoxEss Batteriespeicher ")]),_:1}),t(i,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-86d1c852.js b/web/settings/assets/bat-86d1c852.js
new file mode 100644
index 0000000000..1d3d1c99f5
--- /dev/null
+++ b/web/settings/assets/bat-86d1c852.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as n,k as u,l as c,D as t,N as i,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSigenergyBat",mixins:[m]},l={class:"device-sigenergy-bat"};function g(e,o,b,f,v,y){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),c("div",l,[t(r,null,{default:i(()=>[s(" Einstellungen für Sigenergy Batteriespeicher ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const M=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{M as default};
diff --git a/web/settings/assets/bat-93b96b73.js b/web/settings/assets/bat-93b96b73.js
deleted file mode 100644
index ba9b124316..0000000000
--- a/web/settings/assets/bat-93b96b73.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as m,l as _,D as o,N as a,y as s,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarmaxBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},h={class:"device-solarmax-bat"},x={class:"small"};function v(t,e,i,w,A,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),l=n("openwb-base-number-input");return m(),_("div",h,[o(d,null,{default:a(()=>[s(" Einstellungen für Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher "),b("span",x,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:a(()=>[s(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),o(l,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},null,8,["model-value"])])}const y=p(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{y as default};
diff --git a/web/settings/assets/bat-960570d8.js b/web/settings/assets/bat-960570d8.js
deleted file mode 100644
index 7dcbcd2243..0000000000
--- a/web/settings/assets/bat-960570d8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-siemens-bat"},f={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-a2809c14.js b/web/settings/assets/bat-a2809c14.js
deleted file mode 100644
index 4deb2f7862..0000000000
--- a/web/settings/assets/bat-a2809c14.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceVictronBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-bat"},g={class:"small"};function h(t,e,i,w,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Victron Batteriespeicher "),_("span",g,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>a.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=u(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-a51c89dc.js b/web/settings/assets/bat-a51c89dc.js
deleted file mode 100644
index cd5670c0ae..0000000000
--- a/web/settings/assets/bat-a51c89dc.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as n,k as r,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBYDBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-byd-bat"},f={class:"small"};function m(e,t,g,h,v,B){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",b,[o(i,null,{default:s(()=>[a(" Einstellungen für BYD Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const D=d(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-a89d2c6d.js b/web/settings/assets/bat-a89d2c6d.js
deleted file mode 100644
index a5cb203bb5..0000000000
--- a/web/settings/assets/bat-a89d2c6d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as c,k as _,l as m,D as t,N as o,y as n,x as e,z as i}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceMqttBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,d=void 0){this.$emit("update:configuration",{value:a,object:d})}}},b={class:"device-mqtt-bat"},f={class:"small"},g=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),I=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),z=e("br",null,null,-1),W=e("span",{class:"text-info"},"123.45",-1),D=e("br",null,null,-1),N=e("br",null,null,-1),T=e("span",{class:"text-info"},"95",-1);function y(a,d,l,E,q,F){const r=c("openwb-base-heading"),s=c("openwb-base-copy-to-clipboard"),u=c("openwb-base-alert");return _(),m("div",b,[t(r,null,{default:o(()=>[n(" Einstellungen für MQTT Batteriespeicher "),e("span",f,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),t(u,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+i(l.componentId)+"/get/power",1)]),_:1}),g,n(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),k,n(" Beispiel: "),B]),e("li",null,[t(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+i(l.componentId)+"/get/imported",1)]),_:1}),x,n(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,n(" Beispiel: "),I]),e("li",null,[t(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+i(l.componentId)+"/get/exported",1)]),_:1}),w,n(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),z,n(" Beispiel: "),W]),e("li",null,[t(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+i(l.componentId)+"/get/soc",1)]),_:1}),D,n(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),N,n(" Beispiel: "),T])])]),_:1})])}const C=p(h,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-ab2534e0.js b/web/settings/assets/bat-ab2534e0.js
deleted file mode 100644
index 805487ef18..0000000000
--- a/web/settings/assets/bat-ab2534e0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as o,k as c,l as d,D as n,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSaxpowerBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-saxpower-bat"},m={class:"small"};function b(e,t,w,g,x,h){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[n(i,null,{default:a(()=>[s(" Einstellungen für Saxpower Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const $=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-afab0752.js b/web/settings/assets/bat-afab0752.js
new file mode 100644
index 0000000000..8774bba244
--- /dev/null
+++ b/web/settings/assets/bat-afab0752.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},l={class:"device-sunnyboy-bat"};function b(e,o,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",l,[t(i,null,{default:d(()=>[c(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const N=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-ba0e681b.js b/web/settings/assets/bat-ba0e681b.js
deleted file mode 100644
index 87dae59872..0000000000
--- a/web/settings/assets/bat-ba0e681b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHuaweiBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-bat"},m={class:"small"};function b(e,t,h,w,g,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Batteriespeicher "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-c023ee7d.js b/web/settings/assets/bat-c023ee7d.js
deleted file mode 100644
index 713053360d..0000000000
--- a/web/settings/assets/bat-c023ee7d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceStuderBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-studer-bat"},v={class:"small"};function h(t,e,a,w,x,s){const i=n("openwb-base-heading"),d=n("openwb-base-number-input");return c(),p("div",g,[o(i,null,{default:l(()=>[m(" Einstellungen für Studer Batteriespeicher "),_("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-c1bb93e7.js b/web/settings/assets/bat-c1bb93e7.js
deleted file mode 100644
index 4a2b1224b9..0000000000
--- a/web/settings/assets/bat-c1bb93e7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as o,k as p,l,D as n,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPlenticoreBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-bat"},m={class:"small"};function b(e,t,g,h,v,k){const i=o("openwb-base-heading"),c=o("openwb-base-alert");return p(),l("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Batteriespeicher "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-c2e3bd93.js b/web/settings/assets/bat-c2e3bd93.js
deleted file mode 100644
index 4b918a7ee3..0000000000
--- a/web/settings/assets/bat-c2e3bd93.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as r,l as p,D as n,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceGoodWeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-goodwe-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),d=o("openwb-base-alert");return r(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),n(d,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-c566a75f.js b/web/settings/assets/bat-c566a75f.js
new file mode 100644
index 0000000000..f75d8aa6a8
--- /dev/null
+++ b/web/settings/assets/bat-c566a75f.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as u,l as d,D as n,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(e,o,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return u(),d("div",_,[n(i,null,{default:m(()=>[c(" Einstellungen für Studer Batteriespeicher ")]),_:1}),n(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-ca879aa3.js b/web/settings/assets/bat-ca879aa3.js
deleted file mode 100644
index 9b29037c44..0000000000
--- a/web/settings/assets/bat-ca879aa3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as t,k as l,l as c,D as n,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarEdgeBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solaredge-bat"},v={class:"small"};function h(o,e,a,w,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),c("div",g,[n(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Batteriespeicher "),_("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),n(d,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const C=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-cbe7bc84.js b/web/settings/assets/bat-cbe7bc84.js
new file mode 100644
index 0000000000..8f67cc8b31
--- /dev/null
+++ b/web/settings/assets/bat-cbe7bc84.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as t,k as d,l as c,D as i,N as a,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTecBat",mixins:[m]},b={class:"device-mtec-bat"};function f(e,o,v,g,w,C){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",b,[i(p,null,{default:a(()=>[s(" Einstellungen für M-Tec Batteriespeicher ")]),_:1}),i(r,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":e.component.configuration.generation,required:"","onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const G=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{G as default};
diff --git a/web/settings/assets/bat-cc1835de.js b/web/settings/assets/bat-cc1835de.js
new file mode 100644
index 0000000000..d1cb1ddd0c
--- /dev/null
+++ b/web/settings/assets/bat-cc1835de.js
@@ -0,0 +1 @@
+import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as a,k as u,l as _,D as t,N as o,y as n,x as e,z as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceMqttBat",mixins:[c]},h={class:"device-mqtt-bat"},b=e("br",null,null,-1),f=e("br",null,null,-1),g=e("span",{class:"text-info"},"-123",-1),k=e("br",null,null,-1),B=e("br",null,null,-1),x=e("span",{class:"text-info"},"123.45",-1),v=e("br",null,null,-1),w=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),W=e("br",null,null,-1),D=e("br",null,null,-1),N=e("span",{class:"text-info"},"95",-1);function T(i,E,y,C,F,I){const p=a("openwb-base-heading"),l=a("openwb-base-copy-to-clipboard"),r=a("openwb-base-alert");return u(),_("div",h,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Batteriespeicher ")]),_:1}),t(r,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(l,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+s(i.component.id)+"/get/power",1)]),_:1}),b,n(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),f,n(" Beispiel: "),g]),e("li",null,[t(l,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+s(i.component.id)+"/get/imported",1)]),_:1}),k,n(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),B,n(" Beispiel: "),x]),e("li",null,[t(l,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+s(i.component.id)+"/get/exported",1)]),_:1}),v,n(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),w,n(" Beispiel: "),z]),e("li",null,[t(l,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+s(i.component.id)+"/get/soc",1)]),_:1}),W,n(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),D,n(" Beispiel: "),N])])]),_:1})])}const Q=d(m,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{Q as default};
diff --git a/web/settings/assets/bat-d04a40d4.js b/web/settings/assets/bat-d04a40d4.js
new file mode 100644
index 0000000000..285c6b79b0
--- /dev/null
+++ b/web/settings/assets/bat-d04a40d4.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(e,o,f,g,v,w){const a=n("openwb-base-heading"),i=n("openwb-base-number-input");return d(),m("div",_,[t(a,null,{default:l(()=>[u(" Einstellungen für SolarEdge Batteriespeicher ")]),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{S as default};
diff --git a/web/settings/assets/bat-da9423e8.js b/web/settings/assets/bat-da9423e8.js
new file mode 100644
index 0000000000..6ad4923465
--- /dev/null
+++ b/web/settings/assets/bat-da9423e8.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as c,D as t,N as u,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(e,o,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),c("div",_,[t(i,null,{default:u(()=>[d(" Einstellungen für Victron Batteriespeicher ")]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-e23118da.js b/web/settings/assets/bat-e23118da.js
new file mode 100644
index 0000000000..5d3ec65f16
--- /dev/null
+++ b/web/settings/assets/bat-e23118da.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as o,k as l,l as c,D as n,N as m,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(e,t,f,v,w,g){const i=o("openwb-base-heading"),a=o("openwb-base-select-input");return l(),c("div",_,[n(i,null,{default:m(()=>[u(" Einstellungen für openWB EVU-Kit Batteriespeicher ")]),_:1}),n(a,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":t[0]||(t[0]=s=>e.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-e2b4a6f2.js b/web/settings/assets/bat-e2b4a6f2.js
deleted file mode 100644
index 993809056d..0000000000
--- a/web/settings/assets/bat-e2b4a6f2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as o,k as c,l as p,D as t,N as l,y as m,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSunnyBoyBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyboy-bat"},v={class:"small"};function y(n,e,a,B,h,s){const i=o("openwb-base-heading"),u=o("openwb-base-number-input");return c(),p("div",g,[t(i,null,{default:l(()=>[m(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher "),_("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=r(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-e4573157.js b/web/settings/assets/bat-e4573157.js
new file mode 100644
index 0000000000..702cca1a69
--- /dev/null
+++ b/web/settings/assets/bat-e4573157.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as t,k as p,l,D as n,N as u,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceSolarmaxBat",mixins:[r]},_={class:"device-solarmax-bat"};function b(e,o,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",_,[n(a,{subtype:"info"},{default:u(()=>[c(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),n(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=i=>e.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const T=m(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{T as default};
diff --git a/web/settings/assets/bat-ea7043ef.js b/web/settings/assets/bat-ea7043ef.js
deleted file mode 100644
index 5812073de1..0000000000
--- a/web/settings/assets/bat-ea7043ef.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as n,k as p,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLGBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat-edeea5ab.js b/web/settings/assets/bat-edeea5ab.js
deleted file mode 100644
index db8ce52ff3..0000000000
--- a/web/settings/assets/bat-edeea5ab.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as p,l as d,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-batterx-bat"},f={class:"small"};function m(e,t,g,h,v,x){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),d("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für BatterX Batteriespeicher "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-f0d9c44f.js b/web/settings/assets/bat-f0d9c44f.js
deleted file mode 100644
index 2d8805bc64..0000000000
--- a/web/settings/assets/bat-f0d9c44f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as o,k as m,l as _,D as a,N as u,y as d,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceMTecBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-mtec-bat"},w={class:"small"};function x(t,e,i,h,B,s){const r=o("openwb-base-heading"),l=o("openwb-base-select-input"),c=o("openwb-base-number-input");return m(),_("div",v,[a(r,null,{default:u(()=>[d(" Einstellungen für M-Tec Batteriespeicher "),b("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(l,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":i.configuration.generation,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),a(c,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[d(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const C=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{C as default};
diff --git a/web/settings/assets/bat-f21d8d0a.js b/web/settings/assets/bat-f21d8d0a.js
deleted file mode 100644
index 9a5bb72640..0000000000
--- a/web/settings/assets/bat-f21d8d0a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as h,u,k as p,l as c,D as i,N as r,y as t,x as a,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHttpBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},f={class:"device-http-bat"},b={class:"small"},v=a("br",null,null,-1),w=a("br",null,null,-1),k=a("br",null,null,-1),z=a("br",null,null,-1),S=a("br",null,null,-1);function x(s,e,l,Z,D,o){const m=u("openwb-base-heading"),d=u("openwb-base-text-input");return p(),c("div",f,[i(m,null,{default:r(()=>[t(" Einstellungen für Http Batteriespeicher "),a("span",b,"(Modul: "+g(s.$options.name)+")",1)]),_:1}),i(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.power_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":l.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.soc_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.imported_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")]),_:1},8,["model-value"]),i(d,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":l.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.exported_path"))},{help:r(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),S,t(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const A=h(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{A as default};
diff --git a/web/settings/assets/bat-f5f3db47.js b/web/settings/assets/bat-f5f3db47.js
new file mode 100644
index 0000000000..de8c01bbeb
--- /dev/null
+++ b/web/settings/assets/bat-f5f3db47.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as o,k as m,l as c,D as t,N as u,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},_={class:"device-fems-bat"};function f(e,n,b,v,g,C){const i=o("openwb-base-heading"),a=o("openwb-base-number-input");return m(),c("div",_,[t(i,null,{default:u(()=>[l(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")]),_:1}),t(a,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":e.component.configuration.num,"onUpdate:modelValue":n[0]||(n[0]=s=>e.updateConfiguration(s,"configuration.num"))},null,8,["model-value"])])}const M=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{M as default};
diff --git a/web/settings/assets/bat-fae6736a.js b/web/settings/assets/bat-fae6736a.js
deleted file mode 100644
index 728c8c14c3..0000000000
--- a/web/settings/assets/bat-fae6736a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as n,k as r,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-bat"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Batteriespeicher "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/bat.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat_api-04666400.js b/web/settings/assets/bat_api-04666400.js
deleted file mode 100644
index 26352664a4..0000000000
--- a/web/settings/assets/bat_api-04666400.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as a,k as p,l as d,D as n,N as o,y as s,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceVartaAPIBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-bat"},m={class:"small"};function b(e,t,v,g,h,w){const i=a("openwb-base-heading"),r=a("openwb-base-alert");return p(),d("div",f,[n(i,null,{default:o(()=>[s(" Einstellungen für Varta API Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:o(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/bat_api.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat_modbus-ffbf71f1.js b/web/settings/assets/bat_modbus-ffbf71f1.js
deleted file mode 100644
index 3f96b8478c..0000000000
--- a/web/settings/assets/bat_modbus-ffbf71f1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as n,k as c,l as p,D as o,N as a,y as s,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceVartaModbusBat",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-varta-bat"},m={class:"small"};function f(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),p("div",b,[o(i,null,{default:a(()=>[s(" Einstellungen für Varta Modbus Batteriespeicher "),u("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=d(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/bat_modbus.vue"]]);export{x as default};
diff --git a/web/settings/assets/bat_smart_energy-8a31af27.js b/web/settings/assets/bat_smart_energy-8a31af27.js
deleted file mode 100644
index a5c6b3f343..0000000000
--- a/web/settings/assets/bat_smart_energy-8a31af27.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as t,k as c,l as m,D as o,N as p,y as _,x as l,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSunnyBoyBatSmartEnergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyboy-bat-smart-energy"},y={class:"small"};function v(n,e,a,B,h,s){const i=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),m("div",g,[o(i,null,{default:p(()=>[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher "),l("span",y,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const S=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{S as default};
diff --git a/web/settings/assets/bat_smart_energy-f0537d91.js b/web/settings/assets/bat_smart_energy-f0537d91.js
new file mode 100644
index 0000000000..abcea9ec76
--- /dev/null
+++ b/web/settings/assets/bat_smart_energy-f0537d91.js
@@ -0,0 +1 @@
+import{C as i}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as o,k as p,l as u,D as t,N as _,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[i]},l={class:"device-sunnyboy-bat-smart-energy"};function b(e,n,f,y,g,v){const s=o("openwb-base-heading"),a=o("openwb-base-number-input");return p(),u("div",l,[t(s,null,{default:_(()=>[d(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[0]||(n[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const D=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{D as default};
diff --git a/web/settings/assets/chargePoint-0eec3eeb.js b/web/settings/assets/chargePoint-0eec3eeb.js
deleted file mode 100644
index ec6485acdc..0000000000
--- a/web/settings/assets/chargePoint-0eec3eeb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u,k as p,l as _,D as n,N as l,y as t,x as e,z as s}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"ChargePointMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},g={class:"charge-point-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),m=e("br",null,null,-1),k=e("span",{class:"text-info"},"12.34",-1),B=e("br",null,null,-1),x=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),P=e("br",null,null,-1),z=e("br",null,null,-1),L=e("span",{class:"text-info"},"123.45",-1),I=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),N=e("br",null,null,-1),A=e("br",null,null,-1),D=e("span",{class:"text-info"},"true",-1),Z=e("br",null,null,-1),S=e("br",null,null,-1),E=e("span",{class:"text-info"},"3",-1),M=e("br",null,null,-1),V=e("br",null,null,-1),q=e("br",null,null,-1),C=e("span",{class:"text-info"},"123.45",-1),G=e("br",null,null,-1),j=e("br",null,null,-1),O=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),Q=e("br",null,null,-1),H=e("br",null,null,-1),R=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),U=e("br",null,null,-1),X=e("br",null,null,-1),Y=e("br",null,null,-1),$=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),ee=e("br",null,null,-1),te=e("br",null,null,-1),ne=e("span",{class:"text-info"},'"123654"',-1);function le(a,r,i,ie,oe,se){const d=u("openwb-base-alert"),o=u("openwb-base-copy-to-clipboard");return p(),_("div",g,[n(d,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(d,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),f,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/current",1)]),_:1}),b,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),k]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePointId)+"/set/phases_to_use",1)]),_:1}),B,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),x,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power",1)]),_:1}),P,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),z,t(" Beispiel: "),L]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/plug_state",1)]),_:1}),I,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/charge_state",1)]),_:1}),N,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),A,t(" Beispiel: "),D]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/phases_in_use",1)]),_:1}),Z,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),E])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/imported",1)]),_:1}),M,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),V,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),q,t(" Beispiel: "),C]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/exported",1)]),_:1}),G,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),j,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),O,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),Q,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),H,t(" Beispiel: "),R]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/power_factors",1)]),_:1}),U,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),X,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Y,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePointId)+"/get/rfid_tag",1)]),_:1}),ee,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),te,t(" Beispiel: "),ne])])])])]),_:1})])}const de=c(h,[["render",le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{de as default};
diff --git a/web/settings/assets/chargePoint-20a5e448.js b/web/settings/assets/chargePoint-20a5e448.js
deleted file mode 100644
index a6b4e450b6..0000000000
--- a/web/settings/assets/chargePoint-20a5e448.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as s,k as d,l as p,D as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"ChargePointOpenwbDcAdapter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},_={class:"charge-point-openwbdcadapter"};function l(t,e,o,f,m,n){const a=s("openwb-base-text-input");return d(),p("div",_,[u(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"ip_address"))},null,8,["model-value"])])}const v=r(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{v as default};
diff --git a/web/settings/assets/chargePoint-218a4f96.js b/web/settings/assets/chargePoint-218a4f96.js
new file mode 100644
index 0000000000..3e6e86ab4f
--- /dev/null
+++ b/web/settings/assets/chargePoint-218a4f96.js
@@ -0,0 +1 @@
+import{C as p}from"./ChargePointInstallation-fba1b24e.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointExternalOpenwb",mixins:[p]},_={class:"charge-point-external-openwb"};function g(e,n,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",_,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')]),_:1},8,["model-value"])])}const $=s(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{$ as default};
diff --git a/web/settings/assets/chargePoint-4b4f3b43.js b/web/settings/assets/chargePoint-4b4f3b43.js
new file mode 100644
index 0000000000..7950514ab4
--- /dev/null
+++ b/web/settings/assets/chargePoint-4b4f3b43.js
@@ -0,0 +1 @@
+import{C as u}from"./ChargePointInstallation-fba1b24e.js";import{_ as p,u as t,k as i,l as d,D as m,A as l,N as c,y as g,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){(e=="series"||e=="socket")&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},h={class:"charge-point-internal-openwb"};function b(e,n,B,w,k,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",h,[m(r,{title:"Bauart",notSelected:"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":n[0]||(n[0]=o=>a.updateMode(o))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:c(()=>[g(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')]),_:1},8,["model-value"])):_("",!0)])}const M=p(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{M as default};
diff --git a/web/settings/assets/chargePoint-5a865626.js b/web/settings/assets/chargePoint-5a865626.js
deleted file mode 100644
index 7574145a1b..0000000000
--- a/web/settings/assets/chargePoint-5a865626.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as a,u as s,k as u,l as p,D as d}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"ChargePointOpenwbPro",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:o,object:e})}}},_={class:"charge-point-openwbpro"};function l(o,e,t,f,m,n){const i=s("openwb-base-text-input");return u(),p("div",_,[d(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"ip_address"))},null,8,["model-value"])])}const v=a(c,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{v as default};
diff --git a/web/settings/assets/chargePoint-756bf3c2.js b/web/settings/assets/chargePoint-756bf3c2.js
new file mode 100644
index 0000000000..3181597cd9
--- /dev/null
+++ b/web/settings/assets/chargePoint-756bf3c2.js
@@ -0,0 +1 @@
+import{C as r}from"./ChargePointInstallation-fba1b24e.js";import{_ as i,u as a,k as p,l as s,D as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{B as default};
diff --git a/web/settings/assets/chargePoint-8dec0709.js b/web/settings/assets/chargePoint-8dec0709.js
deleted file mode 100644
index c6bd5c026a..0000000000
--- a/web/settings/assets/chargePoint-8dec0709.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as a,k as u,l as c,D as l,A as m,N as p,y as f,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"ChargePointInternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e==="mode"&&(n=="series"||n=="socket")&&this.updateConfiguration(0,"duo_num"),e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},b={class:"charge-point-internalopenwb"};function B(n,e,t,h,w,i){const r=a("openwb-base-select-input"),s=a("openwb-base-number-input");return u(),c("div",b,[l(r,{title:"Bauart",notSelected:"Bitte auswählen",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"}],"model-value":t.configuration.mode,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"mode"))},null,8,["model-value"]),t.configuration.mode=="duo"?(u(),m(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":t.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o-1,"duo_num"))},{help:p(()=>[f(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')]),_:1},8,["model-value"])):_("",!0)])}const x=d(g,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{x as default};
diff --git a/web/settings/assets/chargePoint-a2f06ead.js b/web/settings/assets/chargePoint-a2f06ead.js
new file mode 100644
index 0000000000..db4fa83e99
--- /dev/null
+++ b/web/settings/assets/chargePoint-a2f06ead.js
@@ -0,0 +1 @@
+import{C as s}from"./ChargePointInstallation-fba1b24e.js";import{_ as p,u as n,k as u,l as m,D as i,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},c={class:"charge-point-smartwb"};function _(e,t,b,f,w,h){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":e.chargePoint.configuration.timeout,"onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")]),_:1},8,["model-value"])])}const W=p(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{W as default};
diff --git a/web/settings/assets/chargePoint-c6c27c6b.js b/web/settings/assets/chargePoint-c6c27c6b.js
deleted file mode 100644
index 984fa26789..0000000000
--- a/web/settings/assets/chargePoint-c6c27c6b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as s,u as a,k as p,l,D as u,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ChargePointSatellite",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-satellite"};function g(t,e,o,b,h,i){const r=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[u(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),u(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')]),_:1},8,["model-value"])])}const x=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{x as default};
diff --git a/web/settings/assets/chargePoint-d36f4e64.js b/web/settings/assets/chargePoint-d36f4e64.js
new file mode 100644
index 0000000000..5b2d8f5179
--- /dev/null
+++ b/web/settings/assets/chargePoint-d36f4e64.js
@@ -0,0 +1 @@
+import{C as d}from"./ChargePointInstallation-fba1b24e.js";import{_ as p,u as r,k as u,l as c,D as n,N as l,y as t,x as e,z as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"ChargePointMqtt",mixins:[d]},_={class:"charge-point-mqtt"},g=e("br",null,null,-1),f=e("br",null,null,-1),m=e("br",null,null,-1),b=e("span",{class:"text-info"},"12.34",-1),k=e("br",null,null,-1),B=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),x=e("br",null,null,-1),P=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),L=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),N=e("br",null,null,-1),A=e("br",null,null,-1),D=e("span",{class:"text-info"},"true",-1),Z=e("br",null,null,-1),S=e("br",null,null,-1),C=e("span",{class:"text-info"},"3",-1),E=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),$=e("span",{class:"text-info"},"123.45",-1),q=e("br",null,null,-1),G=e("br",null,null,-1),I=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),O=e("br",null,null,-1),Q=e("br",null,null,-1),j=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),H=e("br",null,null,-1),R=e("br",null,null,-1),U=e("br",null,null,-1),X=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),Y=e("br",null,null,-1),ee=e("br",null,null,-1),te=e("span",{class:"text-info"},'"123654"',-1);function ne(i,le,ie,oe,se,ae){const a=r("openwb-base-alert"),o=r("openwb-base-copy-to-clipboard");return u(),c("div",_,[n(a,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(a,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),g,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePoint.id)+"/set/current",1)]),_:1}),f,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),b]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePoint.id)+"/set/phases_to_use",1)]),_:1}),k,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),B,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/power",1)]),_:1}),x,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),P,t(" Beispiel: "),z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/plug_state",1)]),_:1}),L,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/charge_state",1)]),_:1}),N,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),A,t(" Beispiel: "),D]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/phases_in_use",1)]),_:1}),Z,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),C])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/imported",1)]),_:1}),E,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/exported",1)]),_:1}),q,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),G,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),I,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),O,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Q,t(" Beispiel: "),j]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/power_factors",1)]),_:1}),H,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),R,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),U,t(" Beispiel: "),X]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/rfid_tag",1)]),_:1}),Y,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),ee,t(" Beispiel: "),te])])])])]),_:1})])}const me=p(h,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{me as default};
diff --git a/web/settings/assets/chargePoint-db6ab728.js b/web/settings/assets/chargePoint-db6ab728.js
new file mode 100644
index 0000000000..4acf6c61bb
--- /dev/null
+++ b/web/settings/assets/chargePoint-db6ab728.js
@@ -0,0 +1 @@
+import{C as r}from"./ChargePointInstallation-fba1b24e.js";import{_ as i,u as p,k as s,l as a,D as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{B as default};
diff --git a/web/settings/assets/chargePoint-dd6fab0a.js b/web/settings/assets/chargePoint-dd6fab0a.js
deleted file mode 100644
index 928acfded7..0000000000
--- a/web/settings/assets/chargePoint-dd6fab0a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as s,u as a,k as p,l,D as r,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ChargePointExternalOpenwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:t,object:e})}}},f={class:"charge-point-externalopenwb"};function g(t,e,o,b,h,i){const u=a("openwb-base-text-input"),d=a("openwb-base-number-input");return p(),l("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"ip_address"))},null,8,["model-value"]),r(d,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":o.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n-1,"duo_num"))},{help:m(()=>[c(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')]),_:1},8,["model-value"])])}const v=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{v as default};
diff --git a/web/settings/assets/chargePoint-ddcd5f93.js b/web/settings/assets/chargePoint-ddcd5f93.js
new file mode 100644
index 0000000000..01587f5f85
--- /dev/null
+++ b/web/settings/assets/chargePoint-ddcd5f93.js
@@ -0,0 +1 @@
+import{C as p}from"./ChargePointInstallation-fba1b24e.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointSatellite",mixins:[p]},_={class:"charge-point-openwb-satellite"};function g(e,n,f,b,h,w){const a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),m("div",_,[i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')]),_:1},8,["model-value"])])}const $=s(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{$ as default};
diff --git a/web/settings/assets/chargePoint-f3aa01e8.js b/web/settings/assets/chargePoint-f3aa01e8.js
deleted file mode 100644
index e9968adf00..0000000000
--- a/web/settings/assets/chargePoint-f3aa01e8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as a,k as p,l as m,D as r,N as c,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ChargePointSmartwb",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){e&&(e="configuration."+e),this.$emit("update:configuration",{value:n,object:e})}}},f={class:"charge-point-smartwb"};function g(n,e,o,b,w,i){const u=a("openwb-base-text-input"),s=a("openwb-base-number-input");return p(),m("div",f,[r(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"ip_address"))},null,8,["model-value"]),r(s,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":o.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"timeout"))},{help:c(()=>[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")]),_:1},8,["model-value"])])}const h=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{h as default};
diff --git a/web/settings/assets/commands-61e8eed9.js b/web/settings/assets/commands-61e8eed9.js
deleted file mode 100644
index c1665d7635..0000000000
--- a/web/settings/assets/commands-61e8eed9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as i,u as r,k as p,l as d,D as c,N as u,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"ChargePointCommandsOpenwbPro",props:{configuration:{type:Object,required:!0},chargePointId:{default:void 0}},methods:{async triggerUpdate(){let s=new FormData;s.append("command","update"),s.append("data",'{"ip_address":"'+this.configuration.ip_address+'"}');const n="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(n,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",s,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var t="Aktualisierung fehlgeschlagen!<br />";e.response?(console.error(e.response.status,e.response.data),t+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),t+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),t+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(t,"danger")})}}},m={class:"charge-point-commands-openwbpro"};function h(s,n,e,t,_,o){const a=r("openwb-base-button-input");return p(),d("div",m,[c(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:e.configuration.ip_address==null,onButtonClicked:o.triggerUpdate},{help:u(()=>[l(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")]),_:1},8,["disabled","onButtonClicked"])])}const k=i(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{k as default};
diff --git a/web/settings/assets/commands-f4c13b15.js b/web/settings/assets/commands-f4c13b15.js
new file mode 100644
index 0000000000..3cdee750a0
--- /dev/null
+++ b/web/settings/assets/commands-f4c13b15.js
@@ -0,0 +1 @@
+import{a as i}from"./ChargePointInstallation-fba1b24e.js";import{_ as r,u as p,k as c,l as d,D as u,N as m,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointCommandsOpenwbPro",mixins:[i],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!<br />";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})}}},h={class:"charge-point-commands-openwb-pro"};function _(t,o,e,s,f,n){const a=p("openwb-base-button-input");return c(),d("div",h,[u(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:m(()=>[l(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")]),_:1},8,["disabled","onButtonClicked"])])}const $=r(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{$ as default};
diff --git a/web/settings/assets/consumption_counter-6e608762.js b/web/settings/assets/consumption_counter-6e608762.js
new file mode 100644
index 0000000000..0c96d870ca
--- /dev/null
+++ b/web/settings/assets/consumption_counter-6e608762.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as o,k as c,l as b,D as t,N as s,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(e,n,w,v,h,x){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),a=o("openwb-base-select-input"),p=o("openwb-base-number-input");return c(),b("div",f,[t(l,null,{default:s(()=>[r(" Einstellungen für openWB-Flex Verbrauchszähler ")]),_:1}),t(u,{subtype:"info"},{default:s(()=>[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")]),_:1}),t(a,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":n[0]||(n[0]=i=>e.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":e.component.configuration.id,"onUpdate:modelValue":n[1]||(n[1]=i=>e.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/consumption_counter-e19fcdd5.js b/web/settings/assets/consumption_counter-e19fcdd5.js
deleted file mode 100644
index 58dd085cb8..0000000000
--- a/web/settings/assets/consumption_counter-e19fcdd5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u as n,k as _,l as b,D as t,N as u,y as l,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenwbFlexConsumptionCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},h={class:"device-openwb-flex-consumption-counter"},w={class:"small"};function x(o,e,s,B,D,a){const d=n("openwb-base-heading"),r=n("openwb-base-alert"),p=n("openwb-base-select-input"),c=n("openwb-base-number-input");return _(),b("div",h,[t(d,null,{default:u(()=>[l(" Einstellungen für openWB-Flex Verbrauchszähler "),f("span",w,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:u(()=>[l(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")]),_:1}),t(p,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":s.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=i=>a.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(c,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":s.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>a.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const C=m(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-031b0305.js b/web/settings/assets/counter-031b0305.js
deleted file mode 100644
index 492bcd20ee..0000000000
--- a/web/settings/assets/counter-031b0305.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l,D as n,N as s,y as a,x as u,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarWorldCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),l("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für SolarWorld Zähler "),u("span",m,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-079772c2.js b/web/settings/assets/counter-079772c2.js
new file mode 100644
index 0000000000..6f833b95dd
--- /dev/null
+++ b/web/settings/assets/counter-079772c2.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as a,l as c,D as n,N as l,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(o,e,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),c("div",_,[n(i,null,{default:l(()=>[d(" Einstellungen für Powerdog Zähler ")]),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":o.component.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-0bf7d9a6.js b/web/settings/assets/counter-0bf7d9a6.js
deleted file mode 100644
index d5b41dca53..0000000000
--- a/web/settings/assets/counter-0bf7d9a6.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSmartMeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smart-me-counter"},v={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),r=n("openwb-base-text-input");return c(),p("div",b,[o(i,null,{default:l(()=>[m(" Einstellungen für smart-me Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.id"))},null,8,["model-value"])])}const D=d(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-0f65c1e3.js b/web/settings/assets/counter-0f65c1e3.js
deleted file mode 100644
index 926fc769a3..0000000000
--- a/web/settings/assets/counter-0f65c1e3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as t,k as c,l,D as n,N as p,y as m,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceHuaweiSmartLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-huawei-smart-logger-counter"},v={class:"small"};function w(o,e,a,h,x,i){const s=t("openwb-base-heading"),u=t("openwb-base-number-input");return c(),l("div",b,[n(s,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Zähler "),_("span",v,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>i.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const D=d(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-132a4c95.js b/web/settings/assets/counter-132a4c95.js
deleted file mode 100644
index f59e549b70..0000000000
--- a/web/settings/assets/counter-132a4c95.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_,u as n,k as m,l as b,D as t,N as u,y as l,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceOpenwbFlexCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},w={class:"device-openwb-flex-counter"},h={class:"small"};function x(o,e,i,M,B,s){const d=n("openwb-base-heading"),r=n("openwb-base-alert"),p=n("openwb-base-select-input"),c=n("openwb-base-number-input");return m(),b("div",w,[t(d,null,{default:u(()=>[l(" Einstellungen für openWB-Flex Zähler "),f("span",h,"(Modul: "+v(o.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:u(()=>[l(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")]),_:1}),t(p,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=a=>s.updateConfiguration(a,"configuration.version"))},null,8,["model-value"]),t(c,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":i.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=a=>s.updateConfiguration(a,"configuration.id"))},null,8,["model-value"])])}const C=_(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-15bbcc8d.js b/web/settings/assets/counter-15bbcc8d.js
deleted file mode 100644
index 150b4199e3..0000000000
--- a/web/settings/assets/counter-15bbcc8d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as o,k as c,l as p,D as t,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceDeyeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-deye-counter"},v={class:"small"};function y(n,e,a,h,w,i){const s=o("openwb-base-heading"),u=o("openwb-base-number-input");return c(),p("div",g,[t(s,null,{default:l(()=>[m(" Einstellungen für Deye Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=r(b,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-16ad21fd.js b/web/settings/assets/counter-16ad21fd.js
deleted file mode 100644
index 1a102e1798..0000000000
--- a/web/settings/assets/counter-16ad21fd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as u,l as d,D as a,N as n,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceCarloGavazziCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-carlogavazzi-counter"},m={class:"small"};function v(e,o,b,g,z,h){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[a(i,null,{default:n(()=>[s(" Einstellungen für Carlo Gavazzi EM24 LAN "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:n(()=>[s(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const $=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-17ea177d.js b/web/settings/assets/counter-17ea177d.js
deleted file mode 100644
index 14acf83a93..0000000000
--- a/web/settings/assets/counter-17ea177d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as n,k as c,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHuaweiCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-counter"},m={class:"small"};function b(e,t,h,w,g,v){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Huawei Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-18ec27d5.js b/web/settings/assets/counter-18ec27d5.js
new file mode 100644
index 0000000000..de75f276a9
--- /dev/null
+++ b/web/settings/assets/counter-18ec27d5.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as n,k as d,l as c,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function g(e,o,b,f,v,y){const s=n("openwb-base-heading"),a=n("openwb-base-number-input");return d(),c("div",_,[t(s,null,{default:i(()=>[r(" Einstellungen für Sigenergy Zähler ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const M=u(l,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{M as default};
diff --git a/web/settings/assets/counter-2131ddbc.js b/web/settings/assets/counter-2131ddbc.js
deleted file mode 100644
index 508b2c0529..0000000000
--- a/web/settings/assets/counter-2131ddbc.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as n,k as l,l as u,D as o,N as s,y as a,x as d,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceQCelllsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return l(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Zähler "),d("span",m,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const q=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/counter.vue"]]);export{q as default};
diff --git a/web/settings/assets/counter-214fbb40.js b/web/settings/assets/counter-214fbb40.js
deleted file mode 100644
index aad28f413c..0000000000
--- a/web/settings/assets/counter-214fbb40.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceVartaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-counter"},m={class:"small"};function b(e,t,v,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return u(),d("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Varta Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-2407fa25.js b/web/settings/assets/counter-2407fa25.js
new file mode 100644
index 0000000000..58ea9b1a0e
--- /dev/null
+++ b/web/settings/assets/counter-2407fa25.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as t,k as c,l as m,D as o,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(e,n,b,g,h,v){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return c(),m("div",_,[o(s,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler ")]),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":e.component.configuration.external_consumption/1e3,"onUpdate:modelValue":n[0]||(n[0]=u=>e.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")]),_:1},8,["model-value"])])}const N=l(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-27d4acde.js b/web/settings/assets/counter-27d4acde.js
deleted file mode 100644
index df78021059..0000000000
--- a/web/settings/assets/counter-27d4acde.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as p,l as u,D as o,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceAlphaessCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-counter"},m={class:"small"};function h(e,t,b,g,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Alpha ESS Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-2844dfce.js b/web/settings/assets/counter-2844dfce.js
deleted file mode 100644
index aa466948b1..0000000000
--- a/web/settings/assets/counter-2844dfce.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as n,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-30a3ca76.js b/web/settings/assets/counter-30a3ca76.js
deleted file mode 100644
index 6c917a9f3c..0000000000
--- a/web/settings/assets/counter-30a3ca76.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as o,k as l,l as m,D as t,N as i,y as s,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSigenergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sigenergy-counter"},v={class:"small"};function y(n,e,a,h,w,r){const u=o("openwb-base-heading"),d=o("openwb-base-number-input");return l(),m("div",b,[t(u,null,{default:i(()=>[s(" Einstellungen für Sigenergy Zähler "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),t(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const C=p(f,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-32ed9eb1.js b/web/settings/assets/counter-32ed9eb1.js
deleted file mode 100644
index 748c036bed..0000000000
--- a/web/settings/assets/counter-32ed9eb1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as r,k as c,l as d,D as s,N as a,y as e,x as t,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarLogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,n=void 0){this.$emit("update:configuration",{value:o,object:n})}}},h={class:"device-solar_log-counter"},m={class:"small"},g=t("span",{class:"text-danger"},[e(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),t("br")],-1),f=t("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1);function b(o,n,v,k,w,Z){const i=r("openwb-base-heading"),l=r("openwb-base-alert");return c(),d("div",h,[s(i,null,{default:a(()=>[e(" Einstellungen für Solar-Log Zähler "),t("span",m,"(Modul: "+p(o.$options.name)+")",1)]),_:1}),s(l,{subtype:"info"},{default:a(()=>[g,e(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),f,e(". ")]),_:1})])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{B as default};
diff --git a/web/settings/assets/counter-38233839.js b/web/settings/assets/counter-38233839.js
new file mode 100644
index 0000000000..a8695d98a4
--- /dev/null
+++ b/web/settings/assets/counter-38233839.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as t,k as p,l as c,D as n,N as u,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(e,o,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),c("div",_,[n(r,null,{default:u(()=>[l(" Einstellungen für smart-me Zähler ")]),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":e.component.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-39a750b6.js b/web/settings/assets/counter-39a750b6.js
deleted file mode 100644
index b9b5daa53e..0000000000
--- a/web/settings/assets/counter-39a750b6.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as u,l as d,D as n,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarwattCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-counter"},m={class:"small"};function b(e,t,g,w,v,h){const r=o("openwb-base-heading"),i=o("openwb-base-alert");return u(),d("div",f,[n(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const y=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/counter.vue"]]);export{y as default};
diff --git a/web/settings/assets/counter-3b17cd0a.js b/web/settings/assets/counter-3b17cd0a.js
deleted file mode 100644
index fa7db71a77..0000000000
--- a/web/settings/assets/counter-3b17cd0a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as u,l as p,D as n,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPikoCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalpiko-counter"},m={class:"small"};function b(e,o,h,k,v,g){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Hausverbrauchszähler ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{x as default};
diff --git a/web/settings/assets/counter-3d61895d.js b/web/settings/assets/counter-3d61895d.js
new file mode 100644
index 0000000000..5d8b22a229
--- /dev/null
+++ b/web/settings/assets/counter-3d61895d.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as r,k as p,l as c,D as n,N as a,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolaredgeCounter",mixins:[d]},f={class:"device-solaredge-counter"};function g(e,o,b,v,h,w){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),c("div",f,[n(l,null,{default:a(()=>[s(" Einstellungen für SolarEdge Zähler ")]),_:1}),n(u,{subtype:"info"},{default:a(()=>[s(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")]),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":e.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default};
diff --git a/web/settings/assets/counter-3fc7917c.js b/web/settings/assets/counter-3fc7917c.js
new file mode 100644
index 0000000000..052f4f153d
--- /dev/null
+++ b/web/settings/assets/counter-3fc7917c.js
@@ -0,0 +1 @@
+import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as o,u as s,k as n,l as r,D as a,N as i,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceKostalSemCounter",mixins:[t]},m={class:"device-kostal-sem-counter"};function l(_,d,u,f,h,b){const e=s("openwb-base-alert");return n(),r("div",m,[a(e,{subtype:"info"},{default:i(()=>[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")]),_:1})])}const D=o(p,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-419f31a5.js b/web/settings/assets/counter-419f31a5.js
deleted file mode 100644
index d5d64ae814..0000000000
--- a/web/settings/assets/counter-419f31a5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as i,k as f,l as _,D as r,N as s,y as n,x as o,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DevicePowerfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-powerfox-counter"},b={class:"small"},w=o("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),v=o("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1);function x(t,e,a,D,k,d){const u=i("openwb-base-heading"),c=i("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:s(()=>[n(" Einstellungen für Powerfox Zähler "),o("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:s(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),w,n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),v,n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")]),_:1},8,["model-value"])])}const I=l(h,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{I as default};
diff --git a/web/settings/assets/counter-49277c48.js b/web/settings/assets/counter-49277c48.js
deleted file mode 100644
index 806de99db3..0000000000
--- a/web/settings/assets/counter-49277c48.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSonnenbatterieCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-sonnenbatterie-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Mit diesem Modul ist kein Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{x as default};
diff --git a/web/settings/assets/counter-49c86301.js b/web/settings/assets/counter-49c86301.js
deleted file mode 100644
index a8e8e16ac0..0000000000
--- a/web/settings/assets/counter-49c86301.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as o,k as m,l as _,D as r,N as i,y as n,x as s,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceDiscovergyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-discovergy-counter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function y(t,e,a,w,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",v,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Zähler "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-4cf113fa.js b/web/settings/assets/counter-4cf113fa.js
deleted file mode 100644
index 4008f2a9f2..0000000000
--- a/web/settings/assets/counter-4cf113fa.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as n,k as c,l,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolisCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-solis-counter"},v={class:"small"};function h(o,e,s,w,x,i){const a=n("openwb-base-heading"),u=n("openwb-base-number-input");return c(),l("div",g,[t(a,null,{default:p(()=>[m(" Einstellungen für Solis Zähler "),_("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-4dcc66e0.js b/web/settings/assets/counter-4dcc66e0.js
deleted file mode 100644
index c89386abba..0000000000
--- a/web/settings/assets/counter-4dcc66e0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as n,k as c,l as p,D as t,N as l,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFoxEssCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-fox_ess-counter"},v={class:"small"};function x(o,e,s,h,w,a){const i=n("openwb-base-heading"),u=n("openwb-base-number-input");return c(),p("div",g,[t(i,null,{default:l(()=>[_(" Einstellungen für FoxEss Zähler "),m("span",v,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>a.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=r(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-4f739eff.js b/web/settings/assets/counter-4f739eff.js
deleted file mode 100644
index 43e4f38235..0000000000
--- a/web/settings/assets/counter-4f739eff.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as o,k as c,l as p,D as t,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSunnyBoyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-sunnyboy-counter"},v={class:"small"};function y(n,e,s,h,w,a){const i=o("openwb-base-heading"),u=o("openwb-base-number-input");return c(),p("div",g,[t(i,null,{default:l(()=>[m(" Einstellungen für SMA Sunny Boy/Tripower Zähler "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const C=d(b,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-51f51be9.js b/web/settings/assets/counter-51f51be9.js
new file mode 100644
index 0000000000..ace1814417
--- /dev/null
+++ b/web/settings/assets/counter-51f51be9.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as o,k as c,l as m,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceSungrowCounter",mixins:[p]},_={class:"device-sungrow-counter"};function g(e,n,b,f,v,w){const s=o("openwb-base-heading"),a=o("openwb-base-select-input");return c(),m("div",_,[t(s,null,{default:i(()=>[r(" Einstellungen für Sungrow Zähler ")]),_:1}),t(a,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":e.component.configuration.version,"onUpdate:modelValue":n[0]||(n[0]=u=>e.updateConfiguration(u,"configuration.version"))},{help:i(()=>[r(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["model-value"])])}const W=l(d,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/counter.vue"]]);export{W as default};
diff --git a/web/settings/assets/counter-55bd9132.js b/web/settings/assets/counter-55bd9132.js
new file mode 100644
index 0000000000..13c0515764
--- /dev/null
+++ b/web/settings/assets/counter-55bd9132.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as c,l,D as r,N as i,y as e,x as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"},b=d("br",null,null,-1);function h(n,o,g,v,M,w){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return c(),l("div",f,[r(s,null,{default:i(()=>[e(" Einstellungen für SMA-HM/EM Zähler ")]),_:1}),r(a,{title:"Seriennummer","model-value":n.component.configuration.serials,"onUpdate:modelValue":o[0]||(o[0]=m=>n.updateConfiguration(m,"configuration.serials"))},{help:i(()=>[e(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),b,e(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")]),_:1},8,["model-value"])])}const H=u(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{H as default};
diff --git a/web/settings/assets/counter-5cdd5400.js b/web/settings/assets/counter-5cdd5400.js
deleted file mode 100644
index f509db5f92..0000000000
--- a/web/settings/assets/counter-5cdd5400.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLGCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-counter"},m={class:"small"};function g(e,t,b,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-6703f6f0.js b/web/settings/assets/counter-6703f6f0.js
deleted file mode 100644
index d8e21a46e2..0000000000
--- a/web/settings/assets/counter-6703f6f0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as t,k as p,l as c,D as n,N as l,y as _,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"DevicePowerdogCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-powerdog-counter"},v={class:"small"};function w(o,e,u,h,x,a){const i=t("openwb-base-heading"),s=t("openwb-base-button-group-input");return p(),c("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für Powerdog Zähler "),f("span",v,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(s,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":u.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.position_evu"))},null,8,["model-value"])])}const k=d(m,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-6a7f6553.js b/web/settings/assets/counter-6a7f6553.js
deleted file mode 100644
index 89f71ebb08..0000000000
--- a/web/settings/assets/counter-6a7f6553.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u as a,k as p,l as _,D as n,N as u,y as d,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarEdgeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solaredge-counter"},h={class:"small"};function w(o,e,r,E,x,i){const l=a("openwb-base-heading"),c=a("openwb-base-alert"),s=a("openwb-base-number-input");return p(),_("div",v,[n(l,null,{default:u(()=>[d(" Einstellungen für SolarEdge Zähler "),f("span",h,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(c,{subtype:"info"},{default:u(()=>[d(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")]),_:1}),n(s,{title:"SolarEdge-Geräte-ID",required:"","model-value":r.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(s,{title:"SolarEdge-Meter-ID","model-value":r.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const S=m(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{S as default};
diff --git a/web/settings/assets/counter-70ddc5c4.js b/web/settings/assets/counter-70ddc5c4.js
new file mode 100644
index 0000000000..4bdbf0dacf
--- /dev/null
+++ b/web/settings/assets/counter-70ddc5c4.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as n,k as u,l as d,D as t,N as i,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[m]},_={class:"device-mtec-counter"};function b(e,o,f,v,g,C){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),d("div",_,[t(r,null,{default:i(()=>[s(" Einstellungen für M-Tec Zähler ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const N=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-720f0b7c.js b/web/settings/assets/counter-720f0b7c.js
deleted file mode 100644
index e64f6dfd76..0000000000
--- a/web/settings/assets/counter-720f0b7c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l as u,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceGoodWeCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-counter"},m={class:"small"};function g(e,o,b,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-761ec99f.js b/web/settings/assets/counter-761ec99f.js
deleted file mode 100644
index c8c2493b8f..0000000000
--- a/web/settings/assets/counter-761ec99f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l as u,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-counter"},f={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für Siemens Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-776a14ff.js b/web/settings/assets/counter-776a14ff.js
deleted file mode 100644
index 7d47e30a13..0000000000
--- a/web/settings/assets/counter-776a14ff.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as l,l as m,D as o,N as a,y as i,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceMTecCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-mtec-counter"},v={class:"small"};function h(t,e,s,w,x,u){const d=n("openwb-base-heading"),r=n("openwb-base-number-input");return l(),m("div",g,[o(d,null,{default:a(()=>[i(" Einstellungen für M-Tec Zähler "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>u.updateConfiguration(c,"configuration.modbus_id"))},{help:a(()=>[i(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const C=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-7de8fa46.js b/web/settings/assets/counter-7de8fa46.js
deleted file mode 100644
index c19eb66db8..0000000000
--- a/web/settings/assets/counter-7de8fa46.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as c,k as _,l as m,D as t,N as o,y as n,x as e,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceMqttCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,u=void 0){this.$emit("update:configuration",{value:a,object:u})}}},f={class:"device-mqtt-counter"},g={class:"small"},b=e("br",null,null,-1),k=e("br",null,null,-1),B=e("span",{class:"text-info"},"-123.45",-1),x=e("br",null,null,-1),z=e("br",null,null,-1),v=e("span",{class:"text-info"},"123.45",-1),w=e("br",null,null,-1),I=e("br",null,null,-1),N=e("span",{class:"text-info"},"123.45",-1),W=e("br",null,null,-1),T=e("br",null,null,-1),y=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),P=e("br",null,null,-1),D=e("br",null,null,-1),j=e("span",{class:"text-info"},"50.12",-1),q=e("br",null,null,-1),E=e("br",null,null,-1),F=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),A=e("br",null,null,-1),L=e("br",null,null,-1),S=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),V=e("br",null,null,-1),Z=e("br",null,null,-1),C=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function M(a,u,s,G,H,O){const r=c("openwb-base-heading"),i=c("openwb-base-copy-to-clipboard"),d=c("openwb-base-alert");return _(),m("div",f,[t(r,null,{default:o(()=>[n(" Einstellungen für MQTT Zähler "),e("span",g,"(Modul: "+l(a.$options.name)+")",1)]),_:1}),t(d,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/power",1)]),_:1}),b,n(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),k,n(" Beispiel: "),B]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/imported",1)]),_:1}),x,n(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),z,n(" Beispiel: "),v]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/exported",1)]),_:1}),w,n(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),I,n(" Beispiel: "),N])]),n(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/currents",1)]),_:1}),W,n(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),T,n(" Beispiel: "),y])]),n(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/frequency",1)]),_:1}),P,n(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),D,n(" Beispiel: "),j]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/voltages",1)]),_:1}),q,n(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),E,n(" Beispiel: "),F]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/powers",1)]),_:1}),A,n(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),L,n(" Beispiel: "),S]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.componentId)+"/get/power_factors",1)]),_:1}),V,n(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),Z,n(" Beispiel: "),C])])]),_:1})])}const J=p(h,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{J as default};
diff --git a/web/settings/assets/counter-7e9e02b6.js b/web/settings/assets/counter-7e9e02b6.js
deleted file mode 100644
index 8803df99be..0000000000
--- a/web/settings/assets/counter-7e9e02b6.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceJanitzaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-janitza-counter"},m={class:"small"};function b(e,t,g,v,h,z){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:a(()=>[s(" Einstellungen für Janitza Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:a(()=>[s(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const j=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{j as default};
diff --git a/web/settings/assets/counter-809d5a8a.js b/web/settings/assets/counter-809d5a8a.js
new file mode 100644
index 0000000000..21d853d059
--- /dev/null
+++ b/web/settings/assets/counter-809d5a8a.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as a,k as d,l as _,D as t,N as o,y as n,x as e,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceMqttCounter",mixins:[u]},h={class:"device-mqtt-counter"},f=e("br",null,null,-1),g=e("br",null,null,-1),b=e("span",{class:"text-info"},"-123.45",-1),k=e("br",null,null,-1),B=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),P=e("br",null,null,-1),y=e("br",null,null,-1),D=e("span",{class:"text-info"},"50.12",-1),E=e("br",null,null,-1),F=e("br",null,null,-1),j=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),q=e("br",null,null,-1),A=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),L=e("br",null,null,-1),S=e("br",null,null,-1),V=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function Z(s,I,$,M,G,H){const r=a("openwb-base-heading"),i=a("openwb-base-copy-to-clipboard"),c=a("openwb-base-alert");return d(),_("div",h,[t(r,null,{default:o(()=>[n(" Einstellungen für MQTT Zähler ")]),_:1}),t(c,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/power",1)]),_:1}),f,n(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),g,n(" Beispiel: "),b]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/imported",1)]),_:1}),k,n(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),B,n(" Beispiel: "),z]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/exported",1)]),_:1}),x,n(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,n(" Beispiel: "),w])]),n(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/currents",1)]),_:1}),N,n(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),W,n(" Beispiel: "),T])]),n(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/frequency",1)]),_:1}),P,n(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),y,n(" Beispiel: "),D]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/voltages",1)]),_:1}),E,n(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),F,n(" Beispiel: "),j]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/powers",1)]),_:1}),q,n(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),A,n(" Beispiel: "),C]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/power_factors",1)]),_:1}),L,n(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),S,n(" Beispiel: "),V])])]),_:1})])}const ne=p(m,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{ne as default};
diff --git a/web/settings/assets/counter-8102691a.js b/web/settings/assets/counter-8102691a.js
deleted file mode 100644
index cf291d4312..0000000000
--- a/web/settings/assets/counter-8102691a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as u,l as d,D as o,N as s,y as i,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensSentronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-sentron-counter"},f={class:"small"};function b(e,n,g,h,v,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Sentron Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/counter.vue"]]);export{S as default};
diff --git a/web/settings/assets/counter-851af979.js b/web/settings/assets/counter-851af979.js
new file mode 100644
index 0000000000..ec1b1526a6
--- /dev/null
+++ b/web/settings/assets/counter-851af979.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as r,k as m,l as g,D as t,N as l,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVZLoggerCounter",mixins:[s]},f={class:"device-vzlogger-counter"};function _(e,n,b,v,w,Z){const u=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",f,[t(u,null,{default:l(()=>[a(" Einstellungen für VZLogger Zähler ")]),_:1}),t(p,{subtype:"info"},{default:l(()=>[a(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')]),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":e.component.configuration.line_power,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":e.component.configuration.line_exported,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":e.component.configuration.line_imported,"onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const E=d(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-85e02a09.js b/web/settings/assets/counter-85e02a09.js
deleted file mode 100644
index 5659e37926..0000000000
--- a/web/settings/assets/counter-85e02a09.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceZCSCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_zcs-counter"},m={class:"small"};function b(e,t,z,g,h,v){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return u(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Azzurro ZCS Zähler "),p("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-863d779b.js b/web/settings/assets/counter-863d779b.js
new file mode 100644
index 0000000000..36b621c25f
--- /dev/null
+++ b/web/settings/assets/counter-863d779b.js
@@ -0,0 +1 @@
+import{C as o}from"./HardwareInstallation-a0083e3a.js";import{_ as t,u as a,k as r,l as s,D as n,N as i,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceCarloGavazziCounter",mixins:[o]},m={class:"device-carlo-gavazzi-counter"};function _(u,l,d,f,v,z){const e=a("openwb-base-alert");return r(),s("div",m,[n(e,{subtype:"info"},{default:i(()=>[c(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const D=t(p,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-899de3b1.js b/web/settings/assets/counter-899de3b1.js
deleted file mode 100644
index 64c5394a9f..0000000000
--- a/web/settings/assets/counter-899de3b1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceRCTCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-counter"},m={class:"small"};function b(e,t,g,h,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/counter.vue"]]);export{x as default};
diff --git a/web/settings/assets/counter-8aa3e08a.js b/web/settings/assets/counter-8aa3e08a.js
deleted file mode 100644
index e3656df027..0000000000
--- a/web/settings/assets/counter-8aa3e08a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u as o,k as p,l as _,D as a,N as i,y as t,x as r,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSmahmCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-counter"},h={class:"small"},v=r("br",null,null,-1);function M(n,e,s,w,S,u){const d=o("openwb-base-heading"),c=o("openwb-base-number-input");return p(),_("div",g,[a(d,null,{default:i(()=>[t(" Einstellungen für SMA-HM/EM Zähler "),r("span",h,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(c,{title:"Seriennummer","model-value":s.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>u.updateConfiguration(l,"configuration.serials"))},{help:i(()=>[t(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),v,t(" Funktioniert auch mit Energy Meter statt Home Manager. ")]),_:1},8,["model-value"])])}const C=m(b,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-90d6c411.js b/web/settings/assets/counter-90d6c411.js
deleted file mode 100644
index 25b24792b4..0000000000
--- a/web/settings/assets/counter-90d6c411.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as r,k as g,l as m,D as t,N as u,y as d,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceVZLoggerCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-vzlogger-counter"},w={class:"small"};function h(o,e,i,Z,V,a){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),m("div",v,[t(s,null,{default:u(()=>[d(" Einstellungen für VZLogger Zähler "),f("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:u(()=>[d(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')]),_:1}),t(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.line_power"))},null,8,["model-value"]),t(l,{title:"Zeile der Einspeisung",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.line_exported"))},null,8,["model-value"]),t(l,{title:"Zeile des Bezugs",min:0,"model-value":i.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.line_imported"))},null,8,["model-value"])])}const B=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{B as default};
diff --git a/web/settings/assets/counter-92895c7b.js b/web/settings/assets/counter-92895c7b.js
new file mode 100644
index 0000000000..7d7a7016df
--- /dev/null
+++ b/web/settings/assets/counter-92895c7b.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as o,k as c,l as d,D as t,N as i,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(e,n,b,h,v,g){const p=o("openwb-base-heading"),a=o("openwb-base-number-input");return c(),d("div",_,[t(p,null,{default:i(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")]),_:1}),t(a,{title:"EID",required:"","model-value":e.component.configuration.eid,"onUpdate:modelValue":n[0]||(n[0]=r=>e.updateConfiguration(r,"configuration.eid"))},{help:i(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=u(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{I as default};
diff --git a/web/settings/assets/counter-92dbeb44.js b/web/settings/assets/counter-92dbeb44.js
deleted file mode 100644
index 8e655890de..0000000000
--- a/web/settings/assets/counter-92dbeb44.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l as u,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolaxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solax-counter"},m={class:"small"};function b(e,o,g,x,h,v){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),u("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Solax Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-963b86e8.js b/web/settings/assets/counter-963b86e8.js
deleted file mode 100644
index f0cbc2c99b..0000000000
--- a/web/settings/assets/counter-963b86e8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as u,l as d,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSmartfoxCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-smartfox-counter"},m={class:"small"};function b(e,t,g,x,h,v){const r=o("openwb-base-heading"),i=o("openwb-base-alert");return u(),d("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für Smartfox Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-9c04d80d.js b/web/settings/assets/counter-9c04d80d.js
new file mode 100644
index 0000000000..ca9f06e226
--- /dev/null
+++ b/web/settings/assets/counter-9c04d80d.js
@@ -0,0 +1 @@
+import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as s,u as n,k as a,l as i,D as c,N as l,y as e,x as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceSolarLogCounter",mixins:[t]},m={class:"device-solar_log-counter"},u=r("span",{class:"text-danger"},[e(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),r("br")],-1),_=r("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1);function d(h,g,f,b,v,k){const o=n("openwb-base-alert");return a(),i("div",m,[c(o,{subtype:"info"},{default:l(()=>[u,e(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),_,e(". ")]),_:1})])}const W=s(p,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{W as default};
diff --git a/web/settings/assets/counter-9c0b6f8f.js b/web/settings/assets/counter-9c0b6f8f.js
deleted file mode 100644
index 8ee83af6e4..0000000000
--- a/web/settings/assets/counter-9c0b6f8f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l,D as a,N as o,y as s,x as u,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTeslaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-tesla-counter"},f={class:"small"};function h(e,n,b,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),l("div",m,[a(i,null,{default:o(()=>[s(" Einstellungen für Tesla Zähler "),u("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),a(r,{subtype:"info"},{default:o(()=>[s(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const V=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-9ca02844.js b/web/settings/assets/counter-9ca02844.js
deleted file mode 100644
index 41892b2771..0000000000
--- a/web/settings/assets/counter-9ca02844.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as l,l as _,D as o,N as a,y as s,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceEnphaseCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-enphase-counter"},g={class:"small"};function v(n,e,i,w,E,r){const u=t("openwb-base-heading"),d=t("openwb-base-number-input");return l(),_("div",h,[o(u,null,{default:a(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler "),m("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(d,{title:"EID",required:"","model-value":i.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const C=c(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-9db4f10d.js b/web/settings/assets/counter-9db4f10d.js
deleted file mode 100644
index 3f3eb5018f..0000000000
--- a/web/settings/assets/counter-9db4f10d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as u,l as d,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarViewCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar-view-counter"},m={class:"small"};function b(e,o,v,g,w,h){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return u(),d("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für SolarView Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-9dd2e78b.js b/web/settings/assets/counter-9dd2e78b.js
new file mode 100644
index 0000000000..f300d4386c
--- /dev/null
+++ b/web/settings/assets/counter-9dd2e78b.js
@@ -0,0 +1 @@
+import{C as i}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as c,l as _,D as n,N as o,y as s,x as e,z as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceShellyCounter",mixins:[i]},u={class:"device-shelly-counter"},h={class:"small"},f=e("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shellys unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),b=e("br",null,null,-1);function y(l,g,x,v,w,C){const r=t("openwb-base-heading"),a=t("openwb-base-alert");return c(),_("div",u,[n(r,null,{default:o(()=>[s(" Einstellungen für Shelly Zähler "),e("span",h,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(a,{subtype:"info"},{default:o(()=>[f,b,s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const z=p(m,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{z as default};
diff --git a/web/settings/assets/counter-a1a84381.js b/web/settings/assets/counter-a1a84381.js
new file mode 100644
index 0000000000..80c18f9f72
--- /dev/null
+++ b/web/settings/assets/counter-a1a84381.js
@@ -0,0 +1 @@
+import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as n,u as o,k as s,l as r,D as a,N as i,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceTeslaCounter",mixins:[t]},p={class:"device-tesla-counter"};function l(_,d,u,f,h,v){const e=o("openwb-base-alert");return s(),r("div",p,[a(e,{subtype:"info"},{default:i(()=>[c(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const N=n(m,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-a43b7c84.js b/web/settings/assets/counter-a43b7c84.js
deleted file mode 100644
index 849233994e..0000000000
--- a/web/settings/assets/counter-a43b7c84.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as h,u,k as c,l as g,D as a,N as l,y as e,x as t,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHttpCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(s,n=void 0){this.$emit("update:configuration",{value:s,object:n})}}},f={class:"device-http-counter"},b={class:"small"},w=t("br",null,null,-1),v=t("br",null,null,-1),k=t("br",null,null,-1),S=t("br",null,null,-1),P=t("br",null,null,-1),z=t("br",null,null,-1),Z=t("br",null,null,-1),x=t("br",null,null,-1),A=t("br",null,null,-1),D=t("br",null,null,-1),U=t("br",null,null,-1);function F(s,n,i,L,C,d){const m=u("openwb-base-heading"),o=u("openwb-base-text-input");return c(),g("div",f,[a(m,null,{default:l(()=>[e(" Einstellungen für Http Zähler "),t("span",b,"(Modul: "+p(s.$options.name)+")",1)]),_:1}),a(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":i.configuration.power_path,"onUpdate:modelValue":n[0]||(n[0]=r=>d.updateConfiguration(r,"configuration.power_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.imported_path,"onUpdate:modelValue":n[1]||(n[1]=r=>d.updateConfiguration(r,"configuration.imported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),k,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.exported_path,"onUpdate:modelValue":n[2]||(n[2]=r=>d.updateConfiguration(r,"configuration.exported_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),S,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),P,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l1_path,"onUpdate:modelValue":n[3]||(n[3]=r=>d.updateConfiguration(r,"configuration.current_l1_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),z,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),Z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l2_path,"onUpdate:modelValue":n[4]||(n[4]=r=>d.updateConfiguration(r,"configuration.current_l2_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),x,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),A,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),a(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":i.configuration.current_l3_path,"onUpdate:modelValue":n[5]||(n[5]=r=>d.updateConfiguration(r,"configuration.current_l3_path"))},{help:l(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),D,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),U,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const E=h(_,[["render",F],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-a51c4464.js b/web/settings/assets/counter-a51c4464.js
new file mode 100644
index 0000000000..a354da6abf
--- /dev/null
+++ b/web/settings/assets/counter-a51c4464.js
@@ -0,0 +1 @@
+import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as o,u as n,k as a,l as i,D as s,N as r,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceJanitzaBat",mixins:[t]},m={class:"device-janitza-counter"};function _(u,d,f,l,v,b){const e=n("openwb-base-alert");return a(),i("div",m,[s(e,{subtype:"info"},{default:r(()=>[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const j=o(p,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{j as default};
diff --git a/web/settings/assets/counter-ae228566.js b/web/settings/assets/counter-ae228566.js
deleted file mode 100644
index 3fb6fc6505..0000000000
--- a/web/settings/assets/counter-ae228566.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as u,l as d,D as n,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSofarCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-sofar-counter"},m={class:"small"};function b(e,o,g,h,v,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return u(),d("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für Sofar ESS Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const S=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/counter.vue"]]);export{S as default};
diff --git a/web/settings/assets/counter-aea90a37.js b/web/settings/assets/counter-aea90a37.js
new file mode 100644
index 0000000000..c40398c8cb
--- /dev/null
+++ b/web/settings/assets/counter-aea90a37.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as l,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceSolisCounter",mixins:[a]},_={class:"device-solis-counter"};function b(e,o,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>[c(" Einstellungen für Solis Zähler ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-b01202f0.js b/web/settings/assets/counter-b01202f0.js
deleted file mode 100644
index 5c75ce99d8..0000000000
--- a/web/settings/assets/counter-b01202f0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as o,k as c,l as d,D as n,N as p,y as _,x as v,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbEvukitCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-counter"},g={class:"small"};function w(t,e,a,h,x,i){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return c(),d("div",b,[n(s,null,{default:p(()=>[_(" Einstellungen für openWB EVU-Kit Zähler "),v("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(u,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>i.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const k=r(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-b75b921d.js b/web/settings/assets/counter-b75b921d.js
deleted file mode 100644
index 05a5a01e7a..0000000000
--- a/web/settings/assets/counter-b75b921d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as d,l as u,D as s,N as a,y as l,x as t,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},h={class:"device-shelly-counter"},f={class:"small"},m=t("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shellys unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM) ",-1),b=t("br",null,null,-1);function g(e,n,y,v,w,x){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),u("div",h,[s(i,null,{default:a(()=>[l(" Einstellungen für Shelly Zähler "),t("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),s(r,{subtype:"info"},{default:a(()=>[m,b,l(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-bb7c4b01.js b/web/settings/assets/counter-bb7c4b01.js
new file mode 100644
index 0000000000..4c5e4476c8
--- /dev/null
+++ b/web/settings/assets/counter-bb7c4b01.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as c,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[a]},l={class:"device-fox_ess-counter"};function f(e,o,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",l,[t(s,null,{default:c(()=>[d(" Einstellungen für FoxEss Zähler ")]),_:1}),t(i,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-bf240441.js b/web/settings/assets/counter-bf240441.js
deleted file mode 100644
index 822382cb51..0000000000
--- a/web/settings/assets/counter-bf240441.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as g,u as d,k as p,l as _,D as n,N as u,y as r,x as s,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"DeviceJsonCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-json-counter"},v={class:"small"},j=s("br",null,null,-1);function q(i,e,o,h,x,a){const f=d("openwb-base-heading"),l=d("openwb-base-text-input"),m=d("openwb-base-alert");return p(),_("div",w,[n(f,null,{default:u(()=>[r(" Einstellungen für JSON Zähler "),s("span",v,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),n(l,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":o.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.jq_power"))},{help:u(()=>[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),j,r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":o.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.jq_imported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(l,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":o.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=t=>a.updateConfiguration(t,"configuration.jq_exported"))},{help:u(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),n(m,{subtype:"info"},{default:u(()=>[r(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")]),_:1}),n(l,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":o.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=t=>a.updateConfiguration(t,"configuration.jq_power_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":o.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=t=>a.updateConfiguration(t,"configuration.jq_power_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":o.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=t=>a.updateConfiguration(t,"configuration.jq_power_l3"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":o.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=t=>a.updateConfiguration(t,"configuration.jq_current_l1"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":o.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=t=>a.updateConfiguration(t,"configuration.jq_current_l2"))},null,8,["model-value"]),n(l,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":o.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=t=>a.updateConfiguration(t,"configuration.jq_current_l3"))},null,8,["model-value"])])}const V=g(c,[["render",q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-c0599fe6.js b/web/settings/assets/counter-c0599fe6.js
deleted file mode 100644
index 210b5a2983..0000000000
--- a/web/settings/assets/counter-c0599fe6.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as t,k as p,l as m,D as o,N as i,y as r,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceVirtualCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-virtual-counter"},b={class:"small"};function v(n,e,a,w,x,s){const u=t("openwb-base-heading"),c=t("openwb-base-number-input");return p(),m("div",h,[o(u,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler "),_("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(c,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":a.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d*1e3,"configuration.external_consumption"))},{help:i(()=>[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")]),_:1},8,["model-value"])])}const C=l(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{C as default};
diff --git a/web/settings/assets/counter-c3ed00fb.js b/web/settings/assets/counter-c3ed00fb.js
new file mode 100644
index 0000000000..605bdc5341
--- /dev/null
+++ b/web/settings/assets/counter-c3ed00fb.js
@@ -0,0 +1 @@
+import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as s,k as n,l as i,D as a,N as c,y as e,x as p}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPikoCounter",mixins:[t]},l={class:"device-kostal-piko-counter"},_=p("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function u(d,h,f,b,k,v){const o=s("openwb-base-alert");return n(),i("div",l,[a(o,{subtype:"info"},{default:c(()=>[e(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),_,e(" beschrieben, angeordnet werden. ")]),_:1})])}const $=r(m,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-c4a0dc83.js b/web/settings/assets/counter-c4a0dc83.js
new file mode 100644
index 0000000000..bfe46b8976
--- /dev/null
+++ b/web/settings/assets/counter-c4a0dc83.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as s,k as h,l as p,D as l,N as a,y as e,x as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceHttpCounter",mixins:[u]},c={class:"device-http-counter"},_=i("br",null,null,-1),b=i("br",null,null,-1),f=i("br",null,null,-1),w=i("br",null,null,-1),v=i("br",null,null,-1),k=i("br",null,null,-1),S=i("br",null,null,-1),P=i("br",null,null,-1),z=i("br",null,null,-1),Z=i("br",null,null,-1),A=i("br",null,null,-1);function D(n,t,C,U,F,L){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return h(),p("div",c,[l(d,null,{default:a(()=>[e(" Einstellungen für Http Zähler ")]),_:1}),l(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":n.component.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=r=>n.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),_,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),l(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.imported_path,"onUpdate:modelValue":t[1]||(t[1]=r=>n.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),b,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),f,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),l(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.exported_path,"onUpdate:modelValue":t[2]||(t[2]=r=>n.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),v,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),l(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.current_l1_path,"onUpdate:modelValue":t[3]||(t[3]=r=>n.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),l(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.current_l2_path,"onUpdate:modelValue":t[4]||(t[4]=r=>n.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),P,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),l(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.current_l3_path,"onUpdate:modelValue":t[5]||(t[5]=r=>n.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),Z,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),A,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const $=m(g,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-ca9e3fe2.js b/web/settings/assets/counter-ca9e3fe2.js
deleted file mode 100644
index 9faeaddc8d..0000000000
--- a/web/settings/assets/counter-ca9e3fe2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as n,k as u,l as d,D as r,N as s,y as t,x as a,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPlenticoreCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-kostalplenticore-counter"},h={class:"small"},m=a("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function b(e,o,g,v,w,k){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return u(),d("div",f,[r(i,null,{default:s(()=>[t(" Einstellungen für Kostal Plenticore Zähler "),a("span",h,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),r(c,{subtype:"info"},{default:s(()=>[t(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m,t(" beschrieben, angeordnet werden. ")]),_:1})])}const B=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{B as default};
diff --git a/web/settings/assets/counter-d2cdbd98.js b/web/settings/assets/counter-d2cdbd98.js
new file mode 100644
index 0000000000..82303f4335
--- /dev/null
+++ b/web/settings/assets/counter-d2cdbd98.js
@@ -0,0 +1 @@
+import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as l,l as m,D as r,N as i,y as e,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[c]},_={class:"device-powerfox-counter"},h=s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),b=s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1);function g(n,o,w,x,v,D){const a=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),m("div",_,[r(a,null,{default:i(()=>[e(" Einstellungen für Powerfox Zähler ")]),_:1}),r(d,{title:"ID",required:"","model-value":n.component.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=p=>n.updateConfiguration(p,"configuration.id"))},{help:i(()=>[e(" Um die ID herauszufinden mit dem Browser die Adresse "),h,e(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),b,e(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")]),_:1},8,["model-value"])])}const A=u(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{A as default};
diff --git a/web/settings/assets/counter-d3b3c371.js b/web/settings/assets/counter-d3b3c371.js
deleted file mode 100644
index fd61ba794f..0000000000
--- a/web/settings/assets/counter-d3b3c371.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as t,k as p,l as u,D as o,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFemsCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-counter"},m={class:"small"};function b(e,n,g,h,v,w){const i=t("openwb-base-heading"),c=t("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Zähler "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-d3c67a64.js b/web/settings/assets/counter-d3c67a64.js
deleted file mode 100644
index b92cf305f9..0000000000
--- a/web/settings/assets/counter-d3c67a64.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-counter"},m={class:"small"};function b(e,t,g,h,v,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return u(),d("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für BatterX Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-d7164453.js b/web/settings/assets/counter-d7164453.js
deleted file mode 100644
index 4229b554ab..0000000000
--- a/web/settings/assets/counter-d7164453.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as d,l as u,D as n,N as s,y as a,x as l,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalSEMCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-kostal-sem-counter"},f={class:"small"};function h(e,t,g,b,v,w){const r=o("openwb-base-heading"),i=o("openwb-base-alert");return d(),u("div",m,[n(r,null,{default:s(()=>[a(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 Zähler "),l("span",f,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{x as default};
diff --git a/web/settings/assets/counter-d86757f2.js b/web/settings/assets/counter-d86757f2.js
deleted file mode 100644
index 0ee1073203..0000000000
--- a/web/settings/assets/counter-d86757f2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as u,l as d,D as n,N as a,y as s,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTasmotaCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-tasmota-counter"},f={class:"small"};function b(e,t,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return u(),d("div",m,[n(i,null,{default:a(()=>[s(" Einstellungen für Tasmota Zähler "),p("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-db36cac3.js b/web/settings/assets/counter-db36cac3.js
new file mode 100644
index 0000000000..88cd291479
--- /dev/null
+++ b/web/settings/assets/counter-db36cac3.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as n,k as u,l as m,D as r,N as i,y as e,x as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceDiscovergyCounter",mixins:[d]},f={class:"device-discovergy-counter"},g=l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function v(o,t,b,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return u(),m("div",f,[r(s,null,{default:i(()=>[e(" Einstellungen für Discovergy Zähler ")]),_:1}),r(a,{title:"Meter-ID",required:"","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":t[0]||(t[0]=p=>o.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[e(" Um die ID herauszufinden mit dem Browser die Adresse "),g,e(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{I as default};
diff --git a/web/settings/assets/counter-dc109611.js b/web/settings/assets/counter-dc109611.js
deleted file mode 100644
index ade7d49811..0000000000
--- a/web/settings/assets/counter-dc109611.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as o,k as c,l as p,D as u,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceVictronCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-victron-counter"},V={class:"small"};function w(t,e,i,x,C,a){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return c(),p("div",v,[u(r,null,{default:m(()=>[_(" Einstellungen für Victron Zähler "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),u(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),u(d,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":i.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{B as default};
diff --git a/web/settings/assets/counter-ddf406fa.js b/web/settings/assets/counter-ddf406fa.js
new file mode 100644
index 0000000000..e038218d1e
--- /dev/null
+++ b/web/settings/assets/counter-ddf406fa.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as n,k as m,l as p,D as t,N as c,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(e,o,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),p("div",_,[t(i,null,{default:c(()=>[d(" Einstellungen für Huawei SmartLogger Zähler ")]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(l,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-dfc0206c.js b/web/settings/assets/counter-dfc0206c.js
new file mode 100644
index 0000000000..46ad6cc82d
--- /dev/null
+++ b/web/settings/assets/counter-dfc0206c.js
@@ -0,0 +1 @@
+import{C as n}from"./HardwareInstallation-a0083e3a.js";import{_ as t,u as o,k as s,l as i,D as r,N as a,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceSonnenbatterieCounter",mixins:[n]},m={class:"device-sonnenbatterie-counter"};function _(d,l,u,f,b,v){const e=o("openwb-base-alert");return s(),i("div",m,[r(e,{subtype:"info"},{default:a(()=>[c(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const N=t(p,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-e17b6711.js b/web/settings/assets/counter-e17b6711.js
new file mode 100644
index 0000000000..b7182cb609
--- /dev/null
+++ b/web/settings/assets/counter-e17b6711.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as a,u as t,k as l,l as u,D as n,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},_={class:"device-openwb-evukit-counter"};function v(e,o,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:c(()=>[m(" Einstellungen für openWB EVU-Kit Zähler ")]),_:1}),n(s,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-e525bf90.js b/web/settings/assets/counter-e525bf90.js
new file mode 100644
index 0000000000..e624d0e17f
--- /dev/null
+++ b/web/settings/assets/counter-e525bf90.js
@@ -0,0 +1 @@
+import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as s,k as n,l as i,D as a,N as c,y as e,x as p}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPlenticoreCounter",mixins:[t]},m={class:"device-kostal-plenticore-counter"},_=p("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function u(d,h,f,b,v,k){const o=s("openwb-base-alert");return n(),i("div",m,[a(o,{subtype:"info"},{default:c(()=>[e(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),_,e(" beschrieben, angeordnet werden. ")]),_:1})])}const $=r(l,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-eacbb4cc.js b/web/settings/assets/counter-eacbb4cc.js
new file mode 100644
index 0000000000..69c2c2371c
--- /dev/null
+++ b/web/settings/assets/counter-eacbb4cc.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceDeyeCounter",mixins:[a]},_={class:"device-deye-counter"};function b(e,o,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>[c(" Einstellungen für Deye Zähler ")]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-eb577878.js b/web/settings/assets/counter-eb577878.js
new file mode 100644
index 0000000000..4e49d62719
--- /dev/null
+++ b/web/settings/assets/counter-eb577878.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as o,k as c,l as b,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexCounter",mixins:[d]},f={class:"device-openwb-flex-counter"};function v(e,n,w,g,M,x){const l=o("openwb-base-heading"),s=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return c(),b("div",f,[t(l,null,{default:r(()=>[a(" Einstellungen für openWB-Flex Zähler ")]),_:1}),t(s,{subtype:"info"},{default:r(()=>[a(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")]),_:1}),t(p,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":n[0]||(n[0]=i=>e.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":e.component.configuration.id,"onUpdate:modelValue":n[1]||(n[1]=i=>e.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-f1f7547c.js b/web/settings/assets/counter-f1f7547c.js
new file mode 100644
index 0000000000..00cda414d7
--- /dev/null
+++ b/web/settings/assets/counter-f1f7547c.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as m,l,D as i,N as c,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictronCounter",mixins:[a]},b={class:"device-victron-counter"};function f(e,o,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",b,[i(r,null,{default:c(()=>[d(" Einstellungen für Victron Zähler ")]),_:1}),i(u,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":e.component.configuration.energy_meter,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const N=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-f3a88abe.js b/web/settings/assets/counter-f3a88abe.js
new file mode 100644
index 0000000000..dd3c2259ee
--- /dev/null
+++ b/web/settings/assets/counter-f3a88abe.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as u,l as m,D as t,N as c,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyCounter",mixins:[a]},_={class:"device-sunnyboy-counter"};function b(e,o,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return u(),m("div",_,[t(i,null,{default:c(()=>[d(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const N=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-fa66cb6a.js b/web/settings/assets/counter-fa66cb6a.js
deleted file mode 100644
index f348fefb42..0000000000
--- a/web/settings/assets/counter-fa66cb6a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as c,l as d,D as t,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSungrowCounter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-counter"},m={class:"small"};function g(e,n,b,w,h,v){const r=o("openwb-base-heading"),i=o("openwb-base-alert");return c(),d("div",f,[t(r,null,{default:s(()=>[a(" Einstellungen für Sungrow Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=u(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-fc3afadd.js b/web/settings/assets/counter-fc3afadd.js
new file mode 100644
index 0000000000..5d87a1ee65
--- /dev/null
+++ b/web/settings/assets/counter-fc3afadd.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as i,k as m,l as f,D as t,N as a,y as l,x as g}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"},v=g("br",null,null,-1);function _(e,n,j,q,c,h){const u=i("openwb-base-heading"),r=i("openwb-base-text-input"),s=i("openwb-base-alert");return m(),f("div",w,[t(u,null,{default:a(()=>[l(" Einstellungen für JSON Zähler ")]),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":e.component.configuration.jq_power,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),v,l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":e.component.configuration.jq_imported,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":e.component.configuration.jq_exported,"onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")]),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":e.component.configuration.jq_power_l1,"onUpdate:modelValue":n[3]||(n[3]=o=>e.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":e.component.configuration.jq_power_l2,"onUpdate:modelValue":n[4]||(n[4]=o=>e.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":e.component.configuration.jq_power_l3,"onUpdate:modelValue":n[5]||(n[5]=o=>e.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":e.component.configuration.jq_current_l1,"onUpdate:modelValue":n[6]||(n[6]=o=>e.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":e.component.configuration.jq_current_l2,"onUpdate:modelValue":n[7]||(n[7]=o=>e.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":e.component.configuration.jq_current_l3,"onUpdate:modelValue":n[8]||(n[8]=o=>e.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const L=p(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{L as default};
diff --git a/web/settings/assets/counter_s0-8459b248.js b/web/settings/assets/counter_s0-8459b248.js
deleted file mode 100644
index e5b52d0d36..0000000000
--- a/web/settings/assets/counter_s0-8459b248.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as c,l as d,D as t,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFroniusCounterS0",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-counter-s0"},m={class:"small"};function b(e,n,g,h,v,w){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return c(),d("div",f,[t(i,null,{default:s(()=>[a(" Einstellungen für Fronius S0 Zähler "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),t(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_s0.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter_sm-157d8b84.js b/web/settings/assets/counter_sm-157d8b84.js
deleted file mode 100644
index e8ef201955..0000000000
--- a/web/settings/assets/counter_sm-157d8b84.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_,u as a,k as f,l as g,D as o,N as s,y as r,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceFroniusCounterSM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},computed:{meterRealtimeUrl:{get(){return`http://${this.deviceIpAddress}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}},deviceIpAddress:{get(){var e;return(e=this.$store.state.mqtt[`openWB/system/device/${this.deviceId}/config`])==null?void 0:e.configuration.ip_address}}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},b={class:"device-fronius-counter-sm"},v={class:"small"},w=["href"],D=d("br",null,null,-1);function M(e,t,l,S,k,n){const m=a("openwb-base-heading"),c=a("openwb-base-select-input"),p=a("openwb-base-number-input");return f(),g("div",b,[o(m,null,{default:s(()=>[r(" Einstellungen für Fronius SmartMeter "),d("span",v,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(c,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":l.configuration.variant,"onUpdate:modelValue":t[0]||(t[0]=i=>n.updateConfiguration(i,"configuration.variant"))},{help:s(()=>[r(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")]),_:1},8,["model-value"]),o(p,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":l.configuration.meter_id,"onUpdate:modelValue":t[1]||(t[1]=i=>n.updateConfiguration(i,"configuration.meter_id"))},{help:s(()=>[r(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. "),d("a",{href:n.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},u(n.meterRealtimeUrl),9,w),D,r(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. ')]),_:1},8,["model-value"])])}const V=_(h,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter_sm-ae20b8ea.js b/web/settings/assets/counter_sm-ae20b8ea.js
new file mode 100644
index 0000000000..8311c81a7c
--- /dev/null
+++ b/web/settings/assets/counter_sm-ae20b8ea.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as i,k as _,l as f,D as o,N as a,y as t,x as l,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},b={class:"device-fronius-counter-sm"},v=["href"],w=l("br",null,null,-1);function D(e,n,M,S,k,s){const d=i("openwb-base-heading"),m=i("openwb-base-select-input"),u=i("openwb-base-number-input");return _(),f("div",b,[o(d,null,{default:a(()=>[t(" Einstellungen für Fronius SmartMeter ")]),_:1}),o(m,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":e.component.configuration.variant,"onUpdate:modelValue":n[0]||(n[0]=r=>e.updateConfiguration(r,"configuration.variant"))},{help:a(()=>[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")]),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":e.component.configuration.meter_id,"onUpdate:modelValue":n[1]||(n[1]=r=>e.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. "),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},g(s.meterRealtimeUrl),9,v),w,t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. ')]),_:1},8,["model-value"])])}const F=c(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{F as default};
diff --git a/web/settings/assets/device-02184b73.js b/web/settings/assets/device-02184b73.js
deleted file mode 100644
index 6721e0c80d..0000000000
--- a/web/settings/assets/device-02184b73.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as n,k as p,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarmax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solarmax"},x={class:"small"};function w(o,e,i,h,C,s){const r=n("openwb-base-heading"),u=n("openwb-base-text-input"),d=n("openwb-base-number-input");return p(),c("div",v,[a(r,null,{default:m(()=>[_(" Einstellungen für Solarmax "),f("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-06345e49.js b/web/settings/assets/device-06345e49.js
deleted file mode 100644
index 3936302349..0000000000
--- a/web/settings/assets/device-06345e49.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as _,l as b,D as t,N as r,y as d,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSiemensSentron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-siemens-sentron"},x={class:"small"};function C(i,e,s,y,S,a){const l=o("openwb-base-heading"),p=o("openwb-base-alert"),m=o("openwb-base-text-input"),u=o("openwb-base-number-input");return _(),b("div",w,[t(l,null,{default:r(()=>[d(" Einstellungen für Siemens Sentron "),f("span",x,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:r(()=>[d(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const q=c(v,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-0852663a.js b/web/settings/assets/device-0852663a.js
deleted file mode 100644
index e6e3756a4d..0000000000
--- a/web/settings/assets/device-0852663a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as d,k as l,l as p,D as o,N as c,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceBYD",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-byd"},v={class:"small"};function w(n,e,a,y,x,i){const u=d("openwb-base-heading"),s=d("openwb-base-text-input");return l(),p("div",b,[o(u,null,{default:c(()=>[m(" Einstellungen für BYD "),f("span",v,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-08fe3db1.js b/web/settings/assets/device-08fe3db1.js
new file mode 100644
index 0000000000..2d60827125
--- /dev/null
+++ b/web/settings/assets/device-08fe3db1.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as i,k as c,l as _,D as t,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSiemens",mixins:[m]},f={class:"device-siemens"};function v(e,o,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),_("div",f,[t(p,null,{default:a(()=>[r(" Einstellungen für Siemens ")]),_:1}),t(d,{subtype:"info"},{default:a(()=>[r(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{I as default};
diff --git a/web/settings/assets/device-0a578374.js b/web/settings/assets/device-0a578374.js
new file mode 100644
index 0000000000..ab082b1328
--- /dev/null
+++ b/web/settings/assets/device-0a578374.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as t,k as d,l as m,D as n,N as c,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(e,o,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:c(()=>[l(" Einstellungen für SMA Webbox ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const W=r(u,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{W as default};
diff --git a/web/settings/assets/device-0c94f34d.js b/web/settings/assets/device-0c94f34d.js
new file mode 100644
index 0000000000..a8f391c662
--- /dev/null
+++ b/web/settings/assets/device-0c94f34d.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as t,k as m,l as d,D as i,N as u,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(e,o,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return m(),d("div",f,[i(a,null,{default:u(()=>[c(" Einstellungen für Solarmax ")]),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-0f4599b8.js b/web/settings/assets/device-0f4599b8.js
new file mode 100644
index 0000000000..5b03d26773
--- /dev/null
+++ b/web/settings/assets/device-0f4599b8.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[p]},v={class:"device-victron"};function f(e,o,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),l("div",v,[i(r,null,{default:m(()=>[c(" Einstellungen für Victron ")]),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-1194af1e.js b/web/settings/assets/device-1194af1e.js
deleted file mode 100644
index dac507608d..0000000000
--- a/web/settings/assets/device-1194af1e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as f,u as a,k as _,l as g,D as t,N as d,y as u,x as b,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const w={name:"DeviceGoodWe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})}}},h={class:"device-goodwe"},W={class:"small"};function x(s,e,o,V,D,i){const p=a("openwb-base-heading"),m=a("openwb-base-alert"),c=a("openwb-base-text-input"),l=a("openwb-base-number-input"),r=a("openwb-base-select-input");return _(),g("div",h,[t(p,null,{default:d(()=>[u(" Einstellungen für GoodWe "),b("span",W,"(Modul: "+v(s.$options.name)+")",1)]),_:1}),t(m,{subtype:"info"},{default:d(()=>[u(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")]),_:1}),t(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":o.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":o.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(r,{title:"API-Version",notSelected:"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.version"))},{help:d(()=>[u(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")]),_:1},8,["model-value"]),t(r,{title:"Firmware",notSelected:"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.configuration.firmware,"onUpdate:modelValue":e[4]||(e[4]=n=>i.updateConfiguration(n,"configuration.firmware"))},{help:d(()=>[u(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")]),_:1},8,["model-value"])])}const B=f(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-12c43ff6.js b/web/settings/assets/device-12c43ff6.js
deleted file mode 100644
index d7d3e0e7ee..0000000000
--- a/web/settings/assets/device-12c43ff6.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as l,l as c,D as s,N as _,y as m,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFoxEss",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fox_ess"},x={class:"small"};function w(o,e,a,h,C,i){const u=n("openwb-base-heading"),d=n("openwb-base-text-input"),r=n("openwb-base-number-input");return l(),c("div",v,[s(u,null,{default:_(()=>[m(" Einstellungen für FoxEss "),f("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),s(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),s(r,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const B=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-13ac66a2.js b/web/settings/assets/device-13ac66a2.js
new file mode 100644
index 0000000000..05ca7f04ff
--- /dev/null
+++ b/web/settings/assets/device-13ac66a2.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as n,k as c,l as b,D as t,N as s,y as r,x as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarEdge",mixins:[u]},g={class:"device-solaredge"},v=_("br",null,null,-1);function h(e,o,w,B,k,S){const a=n("openwb-base-heading"),d=n("openwb-base-alert"),p=n("openwb-base-text-input"),l=n("openwb-base-number-input");return c(),b("div",g,[t(a,null,{default:s(()=>[r(" Einstellungen für SolarEdge ")]),_:1}),t(d,{subtype:"info"},{default:s(()=>[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),v,r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren Smarthome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=i=>e.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=i=>e.updateConfiguration(i,"configuration.port"))},{help:s(()=>[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const $=m(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-14134a0e.js b/web/settings/assets/device-14134a0e.js
deleted file mode 100644
index 3421ea7932..0000000000
--- a/web/settings/assets/device-14134a0e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as l,k as c,l as m,D as o,N as r,y as u,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceKostalPikoOld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-piko-old"},b={class:"small"};function k(n,e,a,w,h,i){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return c(),m("div",v,[o(d,null,{default:r(()=>[u(" Einstellungen für Kostal Piko (alte Generation) "),f("span",b,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),o(s,{title:"URL",subtype:"url",required:"","model-value":a.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.url"))},{help:r(()=>[u(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')]),_:1},8,["model-value"]),o(s,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const C=p(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-1859f43b.js b/web/settings/assets/device-1859f43b.js
new file mode 100644
index 0000000000..23efe30f56
--- /dev/null
+++ b/web/settings/assets/device-1859f43b.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as e,k as u,l as _,D as t,N as s,y as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPiko",mixins:[l]},f={class:"device-kostal-piko"};function b(o,n,v,h,g,k){const a=e("openwb-base-heading"),r=e("openwb-base-alert"),p=e("openwb-base-text-input");return u(),_("div",f,[t(a,null,{default:s(()=>[i(" Einstellungen für Kostal Piko ")]),_:1}),t(r,{subtype:"info"},{default:s(()=>[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=c=>o.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const $=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-191a8f0d.js b/web/settings/assets/device-191a8f0d.js
deleted file mode 100644
index 85acf0afff..0000000000
--- a/web/settings/assets/device-191a8f0d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as c,l as m,D as o,N as _,y as b,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolis",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-solis"},h={class:"small"};function x(i,e,a,S,V,s){const u=n("openwb-base-heading"),l=n("openwb-base-text-input"),r=n("openwb-base-number-input"),d=n("openwb-base-select-input");return c(),m("div",w,[o(u,null,{default:_(()=>[b(" Einstellungen für Solis "),f("span",h,"(Modul: "+v(i.$options.name)+")",1)]),_:1}),o(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(r,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),o(d,{title:"Version",notSelected:"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=t=>s.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const B=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-1c46f4b0.js b/web/settings/assets/device-1c46f4b0.js
new file mode 100644
index 0000000000..91de025d8e
--- /dev/null
+++ b/web/settings/assets/device-1c46f4b0.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as t,k as d,l,D as s,N as u,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceYouless",mixins:[p]},_={class:"device-youless"};function f(e,o,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>[c(" Einstellungen für Youless ")]),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const V=r(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-1dbf9864.js b/web/settings/assets/device-1dbf9864.js
deleted file mode 100644
index 90ff613391..0000000000
--- a/web/settings/assets/device-1dbf9864.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as r,l as d,D as o,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceOpenwbEvuKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-evukit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB EVU-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/device.vue"]]);export{x as default};
diff --git a/web/settings/assets/device-1f0b55db.js b/web/settings/assets/device-1f0b55db.js
new file mode 100644
index 0000000000..902ead8c6d
--- /dev/null
+++ b/web/settings/assets/device-1f0b55db.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as i,k as d,l as u,D as t,N as l,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function _(e,o,v,w,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>[m(" Einstellungen für Sunways ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const h=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-1f5e9c10.js b/web/settings/assets/device-1f5e9c10.js
deleted file mode 100644
index 7e7d8ed56a..0000000000
--- a/web/settings/assets/device-1f5e9c10.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as l,l as c,D as a,N as m,y as _,x as g,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceHuaweiSmartLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-huawei-smart-logger"},w={class:"small"};function h(t,e,i,x,C,s){const r=n("openwb-base-heading"),u=n("openwb-base-text-input"),d=n("openwb-base-number-input");return l(),c("div",v,[a(r,null,{default:m(()=>[_(" Einstellungen für Huawei SmartLogger "),g("span",w,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const y=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-2004960c.js b/web/settings/assets/device-2004960c.js
deleted file mode 100644
index 04e2772d9b..0000000000
--- a/web/settings/assets/device-2004960c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as r,l as c,D as o,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceOpenDTU",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-opendtu"},g={class:"small"};function h(t,e,a,x,w,s){const i=n("openwb-base-heading"),d=n("openwb-base-text-input");return r(),c("div",b,[o(i,null,{default:l(()=>[_(" Einstellungen für OpenDTU "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.url"))},null,8,["model-value"])])}const B=p(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-25323637.js b/web/settings/assets/device-25323637.js
deleted file mode 100644
index 48289d5701..0000000000
--- a/web/settings/assets/device-25323637.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as _,l as b,D as t,N as s,y as r,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DevicePowerdog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-powerdog"},x={class:"small"};function C(a,e,i,V,q,u){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),m=n("openwb-base-text-input"),d=n("openwb-base-number-input");return _(),b("div",w,[t(l,null,{default:s(()=>[r(" Einstellungen für Powerdog "),f("span",x,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:s(()=>[r(" ModbusTCP muss aktiviert sein. ")]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>u.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>u.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>u.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const k=c(v,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{k as default};
diff --git a/web/settings/assets/device-29ba5b2b.js b/web/settings/assets/device-29ba5b2b.js
deleted file mode 100644
index cd170193e7..0000000000
--- a/web/settings/assets/device-29ba5b2b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as b,u as o,k as g,l as _,D as t,N as r,y as l,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const w={name:"DeviceSungrow",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(u,e=void 0){this.$emit("update:configuration",{value:u,object:e})}}},S={class:"device-sungrow"},h={class:"small"};function x(u,e,i,D,N,a){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),m=o("openwb-base-text-input"),s=o("openwb-base-number-input"),c=o("openwb-base-select-input");return g(),_("div",S,[t(d,null,{default:r(()=>[l(" Einstellungen für Sungrow "),f("span",h,"(Modul: "+v(u.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:r(()=>[l(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(c,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[3]||(e[3]=n=>a.updateConfiguration(n,"configuration.version"))},{help:r(()=>[l(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um iSolarCloud nutzen zu können. ")]),_:1},8,["model-value"])])}const H=b(w,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{H as default};
diff --git a/web/settings/assets/device-2a05ce83.js b/web/settings/assets/device-2a05ce83.js
deleted file mode 100644
index 09049ba6fc..0000000000
--- a/web/settings/assets/device-2a05ce83.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as t,k as l,l as c,D as a,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceOpenwbFlex",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-openwb-flex"},w={class:"small"};function x(n,e,i,h,B,s){const u=t("openwb-base-heading"),r=t("openwb-base-text-input"),d=t("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex "),b("span",w,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-34858026.js b/web/settings/assets/device-34858026.js
deleted file mode 100644
index caea3c6629..0000000000
--- a/web/settings/assets/device-34858026.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as _,l as b,D as t,N as d,y as r,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSiemens",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},w={class:"device-siemens"},x={class:"small"};function h(i,e,a,C,S,s){const l=o("openwb-base-heading"),p=o("openwb-base-alert"),m=o("openwb-base-text-input"),u=o("openwb-base-number-input");return _(),b("div",w,[t(l,null,{default:d(()=>[r(" Einstellungen für Siemens "),f("span",x,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:d(()=>[r(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),t(m,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>s.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-35945559.js b/web/settings/assets/device-35945559.js
deleted file mode 100644
index e7ed5fe3b6..0000000000
--- a/web/settings/assets/device-35945559.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as c,l,D as i,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVictron",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron"},w={class:"small"};function x(t,e,a,V,h,s){const r=n("openwb-base-heading"),u=n("openwb-base-text-input"),d=n("openwb-base-number-input");return c(),l("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron "),f("span",w,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),i(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const y=p(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-359d7e50.js b/web/settings/assets/device-359d7e50.js
new file mode 100644
index 0000000000..9da2fd24b8
--- /dev/null
+++ b/web/settings/assets/device-359d7e50.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as i,k as u,l as p,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},_={class:"device-qcells"};function b(e,o,v,g,w,C){const a=i("openwb-base-heading"),l=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",_,[t(a,null,{default:m(()=>[c(" Einstellungen für QCells ESS ")]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-38fb8261.js b/web/settings/assets/device-38fb8261.js
new file mode 100644
index 0000000000..3359913b13
--- /dev/null
+++ b/web/settings/assets/device-38fb8261.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as d,l as m,D as n,N as c,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSmartfox",mixins:[r]},_={class:"device-smartfox"};function f(e,o,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:c(()=>[l(" Einstellungen für Smartfox ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-3b65739e.js b/web/settings/assets/device-3b65739e.js
new file mode 100644
index 0000000000..49f3ba38d9
--- /dev/null
+++ b/web/settings/assets/device-3b65739e.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as r,k as d,l as m,D as i,N as s,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceKostalPikoOld",mixins:[u]},f={class:"device-kostal-piko-old"};function v(e,o,g,_,b,k){const l=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",f,[i(l,null,{default:s(()=>[a(" Einstellungen für Kostal Piko (alte Generation) ")]),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":e.device.configuration.url,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.url"))},{help:s(()=>[a(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')]),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":e.device.configuration.user,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[2]||(o[2]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const N=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-3c0a0263.js b/web/settings/assets/device-3c0a0263.js
new file mode 100644
index 0000000000..37fe4dd5cd
--- /dev/null
+++ b/web/settings/assets/device-3c0a0263.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as t,k as c,l as m,D as n,N as s,y as _,x as b}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"},g=b("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1);function w(e,o,y,x,D,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input");return c(),m("div",v,[n(a,null,{default:s(()=>[_("Einstellungen für Deye")]),_:1}),n(r,{subtype:"info"},{default:s(()=>[g]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=i=>e.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=i=>e.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-3c779cdd.js b/web/settings/assets/device-3c779cdd.js
new file mode 100644
index 0000000000..f0bea1aca9
--- /dev/null
+++ b/web/settings/assets/device-3c779cdd.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as n,k as m,l as _,D as o,N as l,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(e,t,h,g,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[o(r,null,{default:l(()=>[s(" Einstellungen für Shelly ")]),_:1}),o(a,{subtype:"info"},{default:l(()=>[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shellys der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren",notSelected:"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":e.device.configuration.factor,required:"","onUpdate:modelValue":t[1]||(t[1]=i=>e.updateConfiguration(i,"configuration.factor"))},{help:l(()=>[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")]),_:1},8,["model-value"])])}const P=c(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-3d9e43fe.js b/web/settings/assets/device-3d9e43fe.js
deleted file mode 100644
index b0bec3c433..0000000000
--- a/web/settings/assets/device-3d9e43fe.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as b,u as o,k as h,l as g,D as s,N as u,y as t,x as n,z as i}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"DeviceSonnenbatterie",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},computed:{linkRestApi1(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.configuration.ip_address+"/api/v2/status"}},methods:{updateConfiguration(a,r=void 0){this.$emit("update:configuration",{value:a,object:r})}}},v={class:"device-sonnenbatterie"},A={class:"small"},k={style:{display:"block"}},w=n("br",null,null,-1),B=["href"],I=n("br",null,null,-1),J=["href"],R=n("br",null,null,-1),x=["href"],P=n("br",null,null,-1),O=["href"];function S(a,r,d,y,z,e){const p=o("openwb-base-heading"),c=o("openwb-base-alert"),_=o("openwb-base-text-input"),f=o("openwb-base-select-input");return h(),g("div",v,[s(p,null,{default:u(()=>[t(" Einstellungen für SonnenBatterie "),n("span",A,"(Modul: "+i(a.$options.name)+")",1)]),_:1}),s(c,{subtype:"info"},{default:u(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(_,{title:"IP oder Hostname",subtype:"host",required:"","model-value":d.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>e.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(f,{title:"Datenverbindung",required:"",notSelected:"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":d.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>e.updateConfiguration(l,"configuration.variant"))},{help:u(()=>[n("span",k,[t(" Je nach Sonnen Batterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:"),w,t(" Rest-API 1: "),n("a",{href:e.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi1),9,B),I,t(" Rest-API 2: "),n("a",{href:e.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkRestApi2),9,J),R,t(" JSON-API v1: "),n("a",{href:e.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi1),9,x),P,t(" JSON-API v2: "),n("a",{href:e.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},i(e.linkJsonApi2),9,O)])]),_:1},8,["model-value"])])}const D=b(m,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{D as default};
diff --git a/web/settings/assets/device-3e055cd7.js b/web/settings/assets/device-3e055cd7.js
new file mode 100644
index 0000000000..5f5bfdb13e
--- /dev/null
+++ b/web/settings/assets/device-3e055cd7.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as a,u as t,k as d,l as u,D as n,N as c,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(e,o,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:c(()=>[l("Einstellungen für OpenDTU")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.url,"onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const U=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-40b4b0c5.js b/web/settings/assets/device-40b4b0c5.js
new file mode 100644
index 0000000000..c48d670f1b
--- /dev/null
+++ b/web/settings/assets/device-40b4b0c5.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(e,o,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>[c(" Einstellungen für Azzurro ZCS ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-4498198c.js b/web/settings/assets/device-4498198c.js
new file mode 100644
index 0000000000..1a0d559af1
--- /dev/null
+++ b/web/settings/assets/device-4498198c.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as n,k as u,l as d,D as a,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(e,t,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>[c("Einstellungen für Tasmota")]),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase",notSelected:"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":e.device.configuration.phase,required:"","onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-44b38c3f.js b/web/settings/assets/device-44b38c3f.js
new file mode 100644
index 0000000000..d9b14808ed
--- /dev/null
+++ b/web/settings/assets/device-44b38c3f.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as i,k as l,l as p,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalSEM",mixins:[d]},f={class:"device-kostal-sem"};function b(e,o,v,g,w,k){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",f,[t(s,null,{default:m(()=>[c(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-4e84dc20.js b/web/settings/assets/device-4e84dc20.js
deleted file mode 100644
index 08e763d970..0000000000
--- a/web/settings/assets/device-4e84dc20.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as m,l as _,D as s,N as i,y as n,x as a,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceJson",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-json"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,r,j,x,u){const d=o("openwb-base-heading"),l=o("openwb-base-text-input");return m(),_("div",g,[s(d,null,{default:i(()=>[n(" Einstellungen für JSON "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),s(l,{title:"URL",subtype:"url",required:"","model-value":r.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>u.updateConfiguration(p,"configuration.url"))},{help:i(()=>[n(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),h,n(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const N=c(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-4f252d8d.js b/web/settings/assets/device-4f252d8d.js
deleted file mode 100644
index 4d3e83b072..0000000000
--- a/web/settings/assets/device-4f252d8d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u,k as p,l as m,D as n,N as c,y as f,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSofar",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-sofar"},x={class:"small"};function w(t,e,a,C,V,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[n(s,null,{default:c(()=>[f(" Einstellungen für Sofar "),_("span",x,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),n(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-4f7c15a3.js b/web/settings/assets/device-4f7c15a3.js
new file mode 100644
index 0000000000..2163c85fa9
--- /dev/null
+++ b/web/settings/assets/device-4f7c15a3.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as v,u as t,k as i,l as c,D as a,N as f,y as b,A as u,B as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,S,k){const d=t("openwb-base-heading"),s=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),c("div",_,[a(d,null,{default:f(()=>[b(" Einstellungen für Alpha ESS ")]),_:1}),a(s,{title:"Ausleseart",notSelected:"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):r("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):r("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):r("",!0),a(s,{title:"Firmware Version",notSelected:"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const N=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-538ad6e5.js b/web/settings/assets/device-538ad6e5.js
deleted file mode 100644
index 500a768d55..0000000000
--- a/web/settings/assets/device-538ad6e5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as v,u as m,k as r,l as b,D as p,N as u,y as i,x as c,z as w,A as s,B as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceEnphase",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},_={class:"device-enphase"},y={class:"small"},k=c("br",null,null,-1),V=c("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"},"Enphase-Webseite",-1);function E(d,e,t,B,C,o){const f=m("openwb-base-heading"),a=m("openwb-base-text-input"),g=m("openwb-base-select-input");return r(),b("div",_,[p(f,null,{default:u(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway "),c("span",y,"(Modul: "+w(d.$options.name)+")",1)]),_:1}),p(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.hostname"))},{help:u(()=>[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')]),_:1},8,["model-value"]),p(g,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":t.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.version"))},{help:u(()=>[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")]),_:1},8,["model-value"]),t.configuration.version>1?(r(),s(a,{key:0,title:"Benutzer",subtype:"user","model-value":t.configuration.user,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"])):l("",!0),t.configuration.version>1?(r(),s(a,{key:1,title:"Kennwort",subtype:"password","model-value":t.configuration.password,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])):l("",!0),t.configuration.version>1?(r(),s(a,{key:2,title:"Envoy Seriennummer","model-value":t.configuration.serial,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.serial"))},null,8,["model-value"])):l("",!0),t.configuration.version>1?(r(),s(a,{key:3,title:"Token",subtype:"password","model-value":t.configuration.token,"onUpdate:modelValue":e[5]||(e[5]=n=>o.updateConfiguration(n,"configuration.token"))},{help:u(()=>[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),k,i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),V,i(" erledigen. ")]),_:1},8,["model-value"])):l("",!0)])}const I=v(h,[["render",E],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{I as default};
diff --git a/web/settings/assets/device-53c3c990.js b/web/settings/assets/device-53c3c990.js
deleted file mode 100644
index 3dd3e66299..0000000000
--- a/web/settings/assets/device-53c3c990.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as o,k as c,l,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceMTec",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-mtec"},w={class:"small"};function x(t,e,i,h,C,s){const u=o("openwb-base-heading"),d=o("openwb-base-text-input"),r=o("openwb-base-number-input");return c(),l("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für M-Tec "),f("span",w,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),a(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>s.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>s.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const B=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-560cda8e.js b/web/settings/assets/device-560cda8e.js
deleted file mode 100644
index 6a3f0f276a..0000000000
--- a/web/settings/assets/device-560cda8e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u as o,k as _,l as f,D as n,N as r,y as u,x as b,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceKostalPlenticore",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},w={class:"device-kostalplenticore"},h={class:"small"};function x(a,e,i,k,y,s){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),c=o("openwb-base-text-input"),l=o("openwb-base-number-input");return _(),f("div",w,[n(d,null,{default:r(()=>[u(" Einstellungen für Kostal Plenticore "),b("span",h,"(Modul: "+g(a.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:r(()=>[u(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),n(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(l,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),n(l,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>s.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])])}const V=m(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-56cb9ab9.js b/web/settings/assets/device-56cb9ab9.js
deleted file mode 100644
index c5c66daa70..0000000000
--- a/web/settings/assets/device-56cb9ab9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as t,k as u,l as c,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSolarWorld",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-solar_world"},g={class:"small"};function w(o,e,a,h,x,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),c("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für SolarWorld "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-57e7ea16.js b/web/settings/assets/device-57e7ea16.js
new file mode 100644
index 0000000000..b9c8fb8743
--- /dev/null
+++ b/web/settings/assets/device-57e7ea16.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as b,u as i,k as g,l as c,D as t,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceSungrow",mixins:[m]},_={class:"device-sungrow"};function f(e,n,w,S,D,h){const l=i("openwb-base-heading"),s=i("openwb-base-alert"),d=i("openwb-base-text-input"),a=i("openwb-base-number-input"),p=i("openwb-base-select-input");return g(),c("div",_,[t(l,null,{default:r(()=>[u(" Einstellungen für Sungrow ")]),_:1}),t(s,{subtype:"info"},{default:r(()=>[u(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")]),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(p,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":e.device.configuration.version,required:"","onUpdate:modelValue":n[3]||(n[3]=o=>e.updateConfiguration(o,"configuration.version"))},{help:r(()=>[u(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um iSolarCloud nutzen zu können. ")]),_:1},8,["model-value"])])}const q=b(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-58a430d5.js b/web/settings/assets/device-58a430d5.js
new file mode 100644
index 0000000000..e7359b4dda
--- /dev/null
+++ b/web/settings/assets/device-58a430d5.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as t,k as l,l as u,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlex",mixins:[r]},b={class:"device-openwb-flex"};function f(e,o,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),u("div",b,[i(p,null,{default:m(()=>[c(" Einstellungen für openWB-Flex ")]),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-5926f93d.js b/web/settings/assets/device-5926f93d.js
deleted file mode 100644
index ee72fa0973..0000000000
--- a/web/settings/assets/device-5926f93d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as d,k as r,l as p,D as o,N as c,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceTesla",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},v={class:"device-tesla"},b={class:"small"};function w(a,e,n,x,y,i){const l=d("openwb-base-heading"),s=d("openwb-base-text-input");return r(),p("div",v,[o(l,null,{default:c(()=>[m(" Einstellungen für Tesla "),f("span",b,"(Modul: "+_(a.$options.name)+")",1)]),_:1}),o(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(s,{title:"E-Mail",subtype:"email",required:"","model-value":n.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),o(s,{title:"Passwort",subtype:"password",required:"","model-value":n.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=u(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-59ac52ab.js b/web/settings/assets/device-59ac52ab.js
deleted file mode 100644
index 58d9ee3b31..0000000000
--- a/web/settings/assets/device-59ac52ab.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as t,k as u,l as c,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarLog",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solar_log"},b={class:"small"};function h(o,e,a,x,w,s){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return u(),c("div",v,[n(i,null,{default:p(()=>[_(" Einstellungen für Solar-Log "),f("span",b,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=l(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-5a9d2acd.js b/web/settings/assets/device-5a9d2acd.js
new file mode 100644
index 0000000000..c4aa0c10e2
--- /dev/null
+++ b/web/settings/assets/device-5a9d2acd.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as d,l,D as n,N as c,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceSolarWorld",mixins:[a]},u={class:"device-solar_world"};function f(e,o,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",u,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const W=p(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{W as default};
diff --git a/web/settings/assets/device-60a41819.js b/web/settings/assets/device-60a41819.js
deleted file mode 100644
index 4b0dae4f2f..0000000000
--- a/web/settings/assets/device-60a41819.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as t,k as c,l,D as o,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceBenning",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-benning"},v={class:"small"};function h(n,e,i,x,w,a){const s=t("openwb-base-heading"),d=t("openwb-base-text-input");return c(),l("div",b,[o(s,null,{default:p(()=>[_(" Einstellungen für Benning "),f("span",v,"(Modul: "+m(n.$options.name)+")",1)]),_:1}),o(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.url"))},null,8,["model-value"])])}const C=r(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-622f0263.js b/web/settings/assets/device-622f0263.js
new file mode 100644
index 0000000000..4d35ac80f7
--- /dev/null
+++ b/web/settings/assets/device-622f0263.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as c,l as d,D as n,N as m,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[a]},_={class:"device-rct"};function f(e,o,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return c(),d("div",_,[n(i,null,{default:m(()=>[l(" Einstellungen für RCT ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-646a2df0.js b/web/settings/assets/device-646a2df0.js
new file mode 100644
index 0000000000..3f03d91f3e
--- /dev/null
+++ b/web/settings/assets/device-646a2df0.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as i,k as m,l as u,D as n,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFems",mixins:[d]},f={class:"device-fems"};function _(e,o,v,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return m(),u("div",f,[n(p,null,{default:a(()=>[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},{help:a(()=>[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")]),_:1},8,["model-value"])])}const P=l(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-66551827.js b/web/settings/assets/device-66551827.js
deleted file mode 100644
index bcd50d2b24..0000000000
--- a/web/settings/assets/device-66551827.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as o,k as u,l,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceKostalSteca",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca"},g={class:"small"};function h(t,e,a,k,x,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),l("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=c=>s.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const y=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-66b6ca53.js b/web/settings/assets/device-66b6ca53.js
deleted file mode 100644
index d3de4d3c11..0000000000
--- a/web/settings/assets/device-66b6ca53.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as f,u as a,k as i,l as _,D as l,N as g,y as v,x as b,z as w,A as s,B as d}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const x={name:"DeviceAlphaess",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(u,e=void 0){this.$emit("update:configuration",{value:u,object:e})}}},V={class:"device-alphaess"},C={class:"small"};function S(u,e,o,h,y,n){const m=a("openwb-base-heading"),r=a("openwb-base-select-input"),p=a("openwb-base-text-input"),c=a("openwb-base-number-input");return i(),_("div",V,[l(m,null,{default:g(()=>[v(" Einstellungen für Alpha ESS "),b("span",C,"(Modul: "+w(u.$options.name)+")",1)]),_:1}),l(r,{title:"Ausleseart",notSelected:"Bitte auswählen",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":o.configuration.source,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.source"))},null,8,["model-value"]),o.configuration.source==1?(i(),s(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"])):d("",!0),o.configuration.source==1?(i(),s(c,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":o.configuration.port,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])):d("",!0),o.configuration.source==1?(i(),s(c,{key:2,title:"Modbus ID",required:"","model-value":o.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])):d("",!0),l(r,{title:"Firmware Version",notSelected:"Bitte auswählen",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":o.configuration.version,"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.version"))},null,8,["model-value"])])}const E=f(x,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-671cfac2.js b/web/settings/assets/device-671cfac2.js
new file mode 100644
index 0000000000..72e6b29764
--- /dev/null
+++ b/web/settings/assets/device-671cfac2.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as i,k as b,l as _,D as t,N as r,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdog",mixins:[l]},f={class:"device-powerdog"};function v(e,o,g,w,C,x){const d=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),a=i("openwb-base-number-input");return b(),_("div",f,[t(d,null,{default:r(()=>[s(" Einstellungen für Powerdog ")]),_:1}),t(p,{subtype:"info"},{default:r(()=>[s(" ModbusTCP muss aktiviert sein. ")]),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-67447569.js b/web/settings/assets/device-67447569.js
deleted file mode 100644
index d419affa1d..0000000000
--- a/web/settings/assets/device-67447569.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as u,l as p,D as n,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceRCT",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-rct"},g={class:"small"};function h(t,e,s,x,w,a){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return u(),p("div",b,[n(i,null,{default:l(()=>[_(" Einstellungen für RCT "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const B=c(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-68cdbdd8.js b/web/settings/assets/device-68cdbdd8.js
deleted file mode 100644
index e7f971e12b..0000000000
--- a/web/settings/assets/device-68cdbdd8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_,u as t,k as m,l as f,D as n,N as s,y as a,x as h,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceShelly",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-shelly"},y={class:"small"};function w(o,e,l,x,S,d){const r=t("openwb-base-heading"),u=t("openwb-base-alert"),p=t("openwb-base-text-input"),c=t("openwb-base-select-input");return m(),f("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für Shelly "),h("span",y,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(u,{subtype:"info"},{default:s(()=>[a(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shellys der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro 3EM, Plug S. ")]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":l.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>d.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),n(c,{title:"Vorzeichen invertieren",notSelected:"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":l.configuration.factor,"onUpdate:modelValue":e[1]||(e[1]=i=>d.updateConfiguration(i,"configuration.factor"))},{help:s(()=>[a(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")]),_:1},8,["model-value"])])}const B=_(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-6bc2e333.js b/web/settings/assets/device-6bc2e333.js
deleted file mode 100644
index 650ff30b49..0000000000
--- a/web/settings/assets/device-6bc2e333.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as s,k as p,l as m,D as t,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceKostalSEM",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-kostal-sem"},x={class:"small"};function w(n,e,a,k,C,i){const d=s("openwb-base-heading"),l=s("openwb-base-text-input"),u=s("openwb-base-number-input");return p(),m("div",v,[t(d,null,{default:c(()=>[_(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(u,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const E=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-71b3befd.js b/web/settings/assets/device-71b3befd.js
deleted file mode 100644
index e94ab96a0b..0000000000
--- a/web/settings/assets/device-71b3befd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u,k as l,l as p,D as n,N as c,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunways",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},w={class:"device-sunways"},v={class:"small"};function b(t,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",w,[n(d,null,{default:c(()=>[m(" Einstellungen für Sunways "),_("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const V=r(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-7328c01a.js b/web/settings/assets/device-7328c01a.js
deleted file mode 100644
index cbf12865a4..0000000000
--- a/web/settings/assets/device-7328c01a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as o,k as p,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunnyIsland",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-sunnyisland"},w={class:"small"};function x(n,e,s,y,h,i){const u=o("openwb-base-heading"),d=o("openwb-base-text-input"),r=o("openwb-base-number-input");return p(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für Sunny Island "),f("span",w,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),a(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),a(r,{title:"Port",required:"",min:1,max:65535,"model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-74cc8223.js b/web/settings/assets/device-74cc8223.js
deleted file mode 100644
index 5e08d1e71e..0000000000
--- a/web/settings/assets/device-74cc8223.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u,k as p,l as m,D as o,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVarta",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-varta"},x={class:"small"};function w(n,e,a,V,C,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",g,[o(s,null,{default:c(()=>[_(" Einstellungen für Varta "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),o(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-76f55505.js b/web/settings/assets/device-76f55505.js
new file mode 100644
index 0000000000..75ce627296
--- /dev/null
+++ b/web/settings/assets/device-76f55505.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as a,k as d,l as p,D as i,N as u,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceTesla",mixins:[l]},c={class:"device-tesla"};function v(e,o,g,_,b,w){const s=a("openwb-base-heading"),n=a("openwb-base-text-input");return d(),p("div",c,[i(s,null,{default:u(()=>[m(" Einstellungen für Tesla ")]),_:1}),i(n,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(n,{title:"E-Mail",subtype:"email",required:"","model-value":e.device.configuration.email,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[2]||(o[2]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const E=r(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-7bfbb863.js b/web/settings/assets/device-7bfbb863.js
new file mode 100644
index 0000000000..b17a1a2458
--- /dev/null
+++ b/web/settings/assets/device-7bfbb863.js
@@ -0,0 +1 @@
+import{D as f}from"./HardwareInstallation-a0083e3a.js";import{_ as g,u as d,k as r,l as c,D as l,N as a,y as i,A as s,B as u,x as p}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceEnphase",mixins:[f]},w={class:"device-enphase"},h=p("br",null,null,-1),y=p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1);function k(e,n,V,E,B,C){const m=d("openwb-base-heading"),t=d("openwb-base-text-input"),v=d("openwb-base-select-input");return r(),c("div",w,[l(m,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway ")]),_:1}),l(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.hostname,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')]),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.version"))},{help:a(()=>[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")]),_:1},8,["model-value"]),e.device.configuration.version>1?(r(),s(t,{key:0,title:"Benutzer",subtype:"user","model-value":e.device.configuration.user,required:"","onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),e.device.configuration.version>1?(r(),s(t,{key:1,title:"Kennwort",subtype:"password","model-value":e.device.configuration.password,required:"","onUpdate:modelValue":n[3]||(n[3]=o=>e.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),e.device.configuration.version>1?(r(),s(t,{key:2,title:"Envoy Seriennummer","model-value":e.device.configuration.serial,required:"","onUpdate:modelValue":n[4]||(n[4]=o=>e.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),e.device.configuration.version>1?(r(),s(t,{key:3,title:"Token",subtype:"password","model-value":e.device.configuration.token,required:"","onUpdate:modelValue":n[5]||(n[5]=o=>e.updateConfiguration(o,"configuration.token"))},{help:a(()=>[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),h,i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),y,i(" erledigen. ")]),_:1},8,["model-value"])):u("",!0)])}const W=g(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{W as default};
diff --git a/web/settings/assets/device-7d20d912.js b/web/settings/assets/device-7d20d912.js
deleted file mode 100644
index 25da44ca8b..0000000000
--- a/web/settings/assets/device-7d20d912.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as t,k as l,l as c,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceYouless",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},b={class:"device-youless"},g={class:"small"};function h(o,e,s,x,y,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),c("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für Youless "),f("span",g,"(Modul: "+m(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const C=r(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-7e7c253d.js b/web/settings/assets/device-7e7c253d.js
deleted file mode 100644
index 89882f59ea..0000000000
--- a/web/settings/assets/device-7e7c253d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u,k as p,l as m,D as t,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceCarloGavazzi",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-carlogavazzi"},z={class:"small"};function x(n,e,a,w,C,i){const r=u("openwb-base-heading"),s=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[t(r,null,{default:c(()=>[_(" Einstellungen für Carlo Gavazzi "),f("span",z,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const y=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-7ea3222f.js b/web/settings/assets/device-7ea3222f.js
new file mode 100644
index 0000000000..9c62fcdc70
--- /dev/null
+++ b/web/settings/assets/device-7ea3222f.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as t,k as m,l,D as n,N as i,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceVZLogger",mixins:[d]},_={class:"device-vzlogger"};function g(e,o,v,f,b,h){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return m(),l("div",_,[n(r,null,{default:i(()=>[s(" Einstellungen für VZLogger ")]),_:1}),n(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.ip_address"))},{help:i(()=>[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const N=c(u,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-7f837c71.js b/web/settings/assets/device-7f837c71.js
new file mode 100644
index 0000000000..318cc332aa
--- /dev/null
+++ b/web/settings/assets/device-7f837c71.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as i,k as m,l as c,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolax",mixins:[u]},b={class:"device-solax"};function f(e,o,_,v,x,w){const d=i("openwb-base-heading"),l=i("openwb-base-text-input"),s=i("openwb-base-number-input");return m(),c("div",b,[t(d,null,{default:r(()=>[a(" Einstellungen für Solax ")]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",min:1,max:65535,placeholder:502,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},{help:r(()=>[a(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")]),_:1},8,["model-value"]),t(s,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":e.device.configuration.modbus_id,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},{help:r(()=>[a(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")]),_:1},8,["model-value"])])}const $=p(g,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-7fb9b18e.js b/web/settings/assets/device-7fb9b18e.js
new file mode 100644
index 0000000000..9b82c0f31d
--- /dev/null
+++ b/web/settings/assets/device-7fb9b18e.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as n,k as u,l,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[p]},f={class:"device-studer"};function b(e,o,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),l("div",f,[i(r,null,{default:m(()=>[c(" Einstellungen für Studer ")]),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const y=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-7fc12e51.js b/web/settings/assets/device-7fc12e51.js
new file mode 100644
index 0000000000..079de9e49b
--- /dev/null
+++ b/web/settings/assets/device-7fc12e51.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as o,k as c,l as u,D as i,N as r,y as e,x as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHttp",mixins:[d]},f={class:"device-http"},v=m("br",null,null,-1);function b(t,n,g,h,x,w){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return c(),u("div",f,[i(s,null,{default:r(()=>[e(" Einstellungen für Http ")]),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":t.device.configuration.url,"onUpdate:modelValue":n[0]||(n[0]=a=>t.updateConfiguration(a,"configuration.url"))},{help:r(()=>[e(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),v,e(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const z=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{z as default};
diff --git a/web/settings/assets/device-8118a66e.js b/web/settings/assets/device-8118a66e.js
new file mode 100644
index 0000000000..b7d089b877
--- /dev/null
+++ b/web/settings/assets/device-8118a66e.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as l,l as p,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceCarloGavazzi",mixins:[d]},_={class:"device-carlogavazzi"};function f(e,o,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",_,[i(r,null,{default:m(()=>[c(" Einstellungen für Carlo Gavazzi ")]),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-829b538b.js b/web/settings/assets/device-829b538b.js
new file mode 100644
index 0000000000..c7c65371e0
--- /dev/null
+++ b/web/settings/assets/device-829b538b.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as s,k as d,l as u,D as n,N as l,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(e,o,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>[c(" Einstellungen für Discovergy ")]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":e.device.configuration.user,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-850717d0.js b/web/settings/assets/device-850717d0.js
new file mode 100644
index 0000000000..e7e141d5be
--- /dev/null
+++ b/web/settings/assets/device-850717d0.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as e,k as m,l as c,D as n,N as s,y as t,x as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"},h=_("br",null,null,-1);function g(o,i,v,w,x,S){const r=e("openwb-base-heading"),a=e("openwb-base-alert"),d=e("openwb-base-text-input");return m(),c("div",b,[n(r,null,{default:s(()=>[t(" Einstellungen für Fronius ")]),_:1}),n(a,{subtype:"info"},{default:s(()=>[t(" Die Fronius API muss aktiviert sein."),h,t(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":i[0]||(i[0]=u=>o.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const V=p(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-85271457.js b/web/settings/assets/device-85271457.js
deleted file mode 100644
index 1ae93f3895..0000000000
--- a/web/settings/assets/device-85271457.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as l,l as g,D as n,N as s,y as a,x as _,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceVZLogger",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-vzlogger"},b={class:"small"};function h(t,e,i,w,x,d){const r=o("openwb-base-heading"),p=o("openwb-base-text-input");return l(),g("div",v,[n(r,null,{default:s(()=>[a(" Einstellungen für VZLogger "),_("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>d.updateConfiguration(u,"configuration.ip_address"))},{help:s(()=>[a(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const y=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-86046891.js b/web/settings/assets/device-86046891.js
new file mode 100644
index 0000000000..f2fcbcba25
--- /dev/null
+++ b/web/settings/assets/device-86046891.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as c,l as d,D as n,N as l,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(e,o,v,b,g,k){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return c(),d("div",_,[n(s,null,{default:l(()=>[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const V=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-86f88cbb.js b/web/settings/assets/device-86f88cbb.js
new file mode 100644
index 0000000000..fe7fd34961
--- /dev/null
+++ b/web/settings/assets/device-86f88cbb.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as s,k as u,l as m,D as n,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function _(e,o,v,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),m("div",f,[n(r,null,{default:d(()=>[l(" Einstellungen für smart-me ")]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":e.device.configuration.user,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-8c349616.js b/web/settings/assets/device-8c349616.js
new file mode 100644
index 0000000000..70f597e7b6
--- /dev/null
+++ b/web/settings/assets/device-8c349616.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSigenergy",mixins:[p]},g={class:"device-sigenergy"};function f(e,o,b,v,w,y){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),l("div",g,[i(r,null,{default:m(()=>[c("Einstellungen für Sigenergy")]),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-96e65ee3.js b/web/settings/assets/device-96e65ee3.js
deleted file mode 100644
index 28aea1fdd5..0000000000
--- a/web/settings/assets/device-96e65ee3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSmaHm",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-smahm"},f={class:"small"};function b(e,t,g,v,h,w){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return d(),p("div",m,[o(i,null,{default:s(()=>[a(" Einstellungen für SMA Home Manager / Energy Meter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät benötigt keine Einstellungen. ")]),_:1})])}const y=r(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-98e25fe5.js b/web/settings/assets/device-98e25fe5.js
new file mode 100644
index 0000000000..f795baf9ed
--- /dev/null
+++ b/web/settings/assets/device-98e25fe5.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as s,k as p,l,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceLG",mixins:[m]},g={class:"device-lg"};function f(e,n,_,v,b,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",g,[t(d,null,{default:r(()=>[a(" Einstellungen für LG ESS V1.0 ")]),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=i=>e.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":n[1]||(n[1]=i=>e.updateConfiguration(i,"configuration.password"))},{help:r(()=>[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')]),_:1},8,["model-value"])])}const B=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-98fd1cc4.js b/web/settings/assets/device-98fd1cc4.js
new file mode 100644
index 0000000000..5bafb589a0
--- /dev/null
+++ b/web/settings/assets/device-98fd1cc4.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as i,k as u,l,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSaxpower",mixins:[p]},_={class:"device-saxpower"};function b(e,o,v,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",_,[t(r,null,{default:m(()=>[c(" Einstellungen für Saxpower ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-99fa45c8.js b/web/settings/assets/device-99fa45c8.js
new file mode 100644
index 0000000000..0d552963e6
--- /dev/null
+++ b/web/settings/assets/device-99fa45c8.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as v,u as t,k as b,l as f,D as i,N as r,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},c={class:"device-goodwe"};function _(e,o,w,W,h,D){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),p=t("openwb-base-text-input"),s=t("openwb-base-number-input"),a=t("openwb-base-select-input");return b(),f("div",c,[i(u,null,{default:r(()=>[d("Einstellungen für GoodWe")]),_:1}),i(l,{subtype:"info"},{default:r(()=>[d(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")]),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(s,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(a,{title:"API-Version",notSelected:"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":e.device.configuration.version,required:"","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.version"))},{help:r(()=>[d(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")]),_:1},8,["model-value"]),i(a,{title:"Firmware",notSelected:"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":e.device.configuration.firmware,required:"","onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>[d(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")]),_:1},8,["model-value"])])}const P=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-9b78528f.js b/web/settings/assets/device-9b78528f.js
deleted file mode 100644
index b1b0f5969a..0000000000
--- a/web/settings/assets/device-9b78528f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as _,l as f,D as o,N as s,y as a,x as m,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceKostalPiko",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-kostalpiko"},v={class:"small"};function k(t,e,i,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-alert"),c=n("openwb-base-text-input");return _(),f("div",g,[o(d,null,{default:s(()=>[a(" Einstellungen für Kostal Piko "),m("span",v,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),o(u,{subtype:"info"},{default:s(()=>[a(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>r.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const N=p(h,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-9f0dbb75.js b/web/settings/assets/device-9f0dbb75.js
deleted file mode 100644
index 57f78c9000..0000000000
--- a/web/settings/assets/device-9f0dbb75.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_,u as n,k as b,l as f,D as t,N as a,y as o,x as u,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceSolarEdge",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},v={class:"device-solaredge"},w={class:"small"},B=u("br",null,null,-1);function S(i,e,s,k,x,d){const l=n("openwb-base-heading"),p=n("openwb-base-alert"),c=n("openwb-base-text-input"),m=n("openwb-base-number-input");return b(),f("div",v,[t(l,null,{default:a(()=>[o(" Einstellungen für SolarEdge "),u("span",w,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:a(()=>[o(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),B,o(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren Smarthome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")]),_:1}),t(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>d.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"]),t(m,{title:"Port",required:"",min:1,max:65535,"model-value":s.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=r=>d.updateConfiguration(r,"configuration.port"))},{help:a(()=>[o(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const y=_(h,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-9ff76175.js b/web/settings/assets/device-9ff76175.js
deleted file mode 100644
index 0e15b08120..0000000000
--- a/web/settings/assets/device-9ff76175.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as t,k as p,l as c,D as n,N as l,y as _,x as m,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSmaWebbox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},g={class:"device-sma-webbox"},v={class:"small"};function x(o,e,s,w,h,a){const i=t("openwb-base-heading"),d=t("openwb-base-text-input");return p(),c("div",g,[n(i,null,{default:l(()=>[_(" Einstellungen für SMA Webbox "),m("span",v,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(f,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-a100762d.js b/web/settings/assets/device-a100762d.js
deleted file mode 100644
index b648dfad48..0000000000
--- a/web/settings/assets/device-a100762d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u,k as l,l as c,D as n,N as p,y as f,x as m,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceDiscovergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},_={class:"device-discovergy"},b={class:"small"};function w(o,e,s,y,x,a){const d=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),c("div",_,[n(d,null,{default:p(()=>[f(" Einstellungen für Discovergy "),m("span",b,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":s.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const D=r(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{D as default};
diff --git a/web/settings/assets/device-a1e3a710.js b/web/settings/assets/device-a1e3a710.js
new file mode 100644
index 0000000000..0407a56a55
--- /dev/null
+++ b/web/settings/assets/device-a1e3a710.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as l,l as d,D as n,N as c,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceSolarLog",mixins:[r]},u={class:"device-solar_log"};function f(e,o,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",u,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-a326b87b.js b/web/settings/assets/device-a326b87b.js
deleted file mode 100644
index c4d6439940..0000000000
--- a/web/settings/assets/device-a326b87b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u,k as p,l as m,D as t,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSaxpower",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-saxpower"},x={class:"small"};function w(n,e,a,C,V,i){const d=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-number-input");return p(),m("div",v,[t(d,null,{default:c(()=>[_(" Einstellungen für Saxpower "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-a3a79e85.js b/web/settings/assets/device-a3a79e85.js
deleted file mode 100644
index e9ed34d6da..0000000000
--- a/web/settings/assets/device-a3a79e85.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u as t,k as _,l as f,D as o,N as i,y as s,x as r,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFronius",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-fronius"},v={class:"small"},w=r("br",null,null,-1);function y(n,e,a,S,x,d){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),c=t("openwb-base-text-input");return _(),f("div",h,[o(u,null,{default:i(()=>[s(" Einstellungen für Fronius "),r("span",v,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),o(l,{subtype:"info"},{default:i(()=>[s(" Die Fronius API muss aktiviert sein."),w,s(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")]),_:1}),o(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const B=m(g,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-a3aaa72b.js b/web/settings/assets/device-a3aaa72b.js
deleted file mode 100644
index 5f7e3e7cf8..0000000000
--- a/web/settings/assets/device-a3aaa72b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_,u as n,k as m,l as b,D as t,N as r,y as u,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunnyBoy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},y={class:"device-sunnyboy"},w={class:"small"};function x(o,e,i,h,k,s){const d=n("openwb-base-heading"),p=n("openwb-base-alert"),l=n("openwb-base-text-input"),c=n("openwb-base-number-input");return m(),b("div",y,[t(d,null,{default:r(()=>[u(" Einstellungen für SMA Sunny Boy/Tripower "),f("span",w,"(Modul: "+v(o.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:r(()=>[u(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>s.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),t(c,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=a=>s.updateConfiguration(a,"configuration.port"))},null,8,["model-value"])])}const S=_(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{S as default};
diff --git a/web/settings/assets/device-a3d36699.js b/web/settings/assets/device-a3d36699.js
new file mode 100644
index 0000000000..6b2606da2f
--- /dev/null
+++ b/web/settings/assets/device-a3d36699.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVarta",mixins:[d]},f={class:"device-varta"};function _(e,o,b,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",f,[t(r,null,{default:m(()=>[v(" Einstellungen für Varta ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-a5b9720c.js b/web/settings/assets/device-a5b9720c.js
deleted file mode 100644
index 3959fdce8d..0000000000
--- a/web/settings/assets/device-a5b9720c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u as d,k as p,l as c,D as i,N as r,y as u,x as g,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLG",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-lg"},v={class:"small"};function w(n,e,o,h,y,s){const l=d("openwb-base-heading"),a=d("openwb-base-text-input");return p(),c("div",b,[i(l,null,{default:r(()=>[u(" Einstellungen für LG ESS V1.0 "),g("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Passwort",subtype:"password",required:"","model-value":o.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')]),_:1},8,["model-value"])])}const V=m(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-a875f223.js b/web/settings/assets/device-a875f223.js
deleted file mode 100644
index 5719cb0fef..0000000000
--- a/web/settings/assets/device-a875f223.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u,k as l,l as p,D as n,N as c,y as m,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSmartMe",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-smart-me"},b={class:"small"};function w(t,e,a,x,y,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[m(" Einstellungen für smart-me "),f("span",b,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])])}const V=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-aa58f408.js b/web/settings/assets/device-aa58f408.js
new file mode 100644
index 0000000000..09010f95ec
--- /dev/null
+++ b/web/settings/assets/device-aa58f408.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJanitza",mixins:[d]},_={class:"device-janitza"};function b(e,o,v,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:m(()=>[c(" Einstellungen für Janitza ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-ab0439ee.js b/web/settings/assets/device-ab0439ee.js
new file mode 100644
index 0000000000..ee458ec7d8
--- /dev/null
+++ b/web/settings/assets/device-ab0439ee.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as n,k as u,l as m,D as i,N as l,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[p]},f={class:"device-mtec"};function b(e,o,v,g,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input"),r=n("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>[c("Einstellungen für M-Tec")]),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const h=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-ab2aea83.js b/web/settings/assets/device-ab2aea83.js
deleted file mode 100644
index 46ffe7b1c2..0000000000
--- a/web/settings/assets/device-ab2aea83.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u,k as p,l as c,D as n,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceQCells",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-qcells"},x={class:"small"};function w(t,e,i,C,q,a){const d=u("openwb-base-heading"),l=u("openwb-base-text-input"),s=u("openwb-base-number-input");return p(),c("div",v,[n(d,null,{default:m(()=>[_(" Einstellungen für QCells ESS "),f("span",x,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),n(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),n(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const B=r(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-accf2fa8.js b/web/settings/assets/device-accf2fa8.js
deleted file mode 100644
index e433a14339..0000000000
--- a/web/settings/assets/device-accf2fa8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as r,l as d,D as o,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceOpenwbPvKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-pvkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),p=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB PV-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(p,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/device.vue"]]);export{x as default};
diff --git a/web/settings/assets/device-b0485aae.js b/web/settings/assets/device-b0485aae.js
deleted file mode 100644
index 776d15549b..0000000000
--- a/web/settings/assets/device-b0485aae.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as r,l as c,D as a,N as m,y as _,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceTasmota",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-tasmota"},x={class:"small"};function h(t,e,s,w,B,i){const u=n("openwb-base-heading"),d=n("openwb-base-text-input"),l=n("openwb-base-select-input");return r(),c("div",g,[a(u,null,{default:m(()=>[_(" Einstellungen für Tasmota "),f("span",x,"(Modul: "+v(t.$options.name)+")",1)]),_:1}),a(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(l,{title:"Phase",notSelected:"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":s.configuration.phase,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const y=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-b394014f.js b/web/settings/assets/device-b394014f.js
deleted file mode 100644
index 982a8050b2..0000000000
--- a/web/settings/assets/device-b394014f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as c,l as p,D as n,N as l,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceBatterX",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-batterx"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",v,[n(i,null,{default:l(()=>[_(" Einstellungen für BatterX "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-b4d24a29.js b/web/settings/assets/device-b4d24a29.js
new file mode 100644
index 0000000000..5b0f76194f
--- /dev/null
+++ b/web/settings/assets/device-b4d24a29.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(e,n,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>[c(" Einstellungen für Sunny Island ")]),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const h=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-b6ab13cb.js b/web/settings/assets/device-b6ab13cb.js
new file mode 100644
index 0000000000..5254318760
--- /dev/null
+++ b/web/settings/assets/device-b6ab13cb.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as i,k as _,l as b,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSiemensSentron",mixins:[m]},f={class:"device-siemens-sentron"};function v(e,n,g,w,C,D){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return _(),b("div",f,[t(u,null,{default:r(()=>[a(" Einstellungen für Siemens Sentron ")]),_:1}),t(p,{subtype:"info"},{default:r(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const E=l(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-b6cf16cc.js b/web/settings/assets/device-b6cf16cc.js
deleted file mode 100644
index 35e2802365..0000000000
--- a/web/settings/assets/device-b6cf16cc.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_,u as t,k as m,l as b,D as n,N as d,y as f,x as r,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceDeye",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},w={class:"device-deye"},y={class:"small"},h=r("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1);function x(o,e,i,C,D,s){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),p=t("openwb-base-text-input"),c=t("openwb-base-number-input");return m(),b("div",w,[n(u,null,{default:d(()=>[f(" Einstellungen für Deye "),r("span",y,"(Modul: "+g(o.$options.name)+")",1)]),_:1}),n(l,{subtype:"info"},{default:d(()=>[h]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>s.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),n(c,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=a=>s.updateConfiguration(a,"configuration.port"))},null,8,["model-value"])])}const k=_(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{k as default};
diff --git a/web/settings/assets/device-bcd1ab1c.js b/web/settings/assets/device-bcd1ab1c.js
deleted file mode 100644
index 0c516088ad..0000000000
--- a/web/settings/assets/device-bcd1ab1c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as r,k as m,l as g,D as t,N as s,y as d,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSolax",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-solax"},x={class:"small"};function h(o,e,i,w,S,a){const l=r("openwb-base-heading"),p=r("openwb-base-text-input"),u=r("openwb-base-number-input");return m(),g("div",v,[t(l,null,{default:s(()=>[d(" Einstellungen für Solax "),_("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",min:1,max:65535,placeholder:502,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},{help:s(()=>[d(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")]),_:1},8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":i.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},{help:s(()=>[d(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")]),_:1},8,["model-value"])])}const C=c(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-bee08fb1.js b/web/settings/assets/device-bee08fb1.js
deleted file mode 100644
index 714769a062..0000000000
--- a/web/settings/assets/device-bee08fb1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as _,l as m,D as a,N as r,y as d,x as f,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarwatt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-solarwatt"},w={class:"small"};function h(t,e,s,x,y,i){const l=o("openwb-base-heading"),u=o("openwb-base-text-input"),p=o("openwb-base-select-input");return _(),m("div",v,[a(l,null,{default:r(()=>[d(" Einstellungen für Solarwatt/My Reserve "),f("span",w,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),a(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":s.configuration.energy_manager,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.energy_manager"))},{help:r(()=>[d(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-bf4936ba.js b/web/settings/assets/device-bf4936ba.js
new file mode 100644
index 0000000000..31e8d7075c
--- /dev/null
+++ b/web/settings/assets/device-bf4936ba.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as s,k as u,l as p,D as t,N as l,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[r]},c={class:"device-byd"};function v(e,o,b,g,_,w){const a=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",c,[t(a,null,{default:l(()=>[m(" Einstellungen für BYD ")]),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":e.device.configuration.user,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const N=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-c034f6f0.js b/web/settings/assets/device-c034f6f0.js
new file mode 100644
index 0000000000..20926aa481
--- /dev/null
+++ b/web/settings/assets/device-c034f6f0.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as o,k as c,l as d,D as t,N as l,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceBenning",mixins:[a]},_={class:"device-benning"};function f(e,n,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return c(),d("div",_,[t(i,null,{default:l(()=>[u("Einstellungen für Benning")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.url,"onUpdate:modelValue":n[0]||(n[0]=r=>e.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const y=p(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-c0dfc296.js b/web/settings/assets/device-c0dfc296.js
new file mode 100644
index 0000000000..5ec254985b
--- /dev/null
+++ b/web/settings/assets/device-c0dfc296.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as n,k as m,l as u,D as i,N as s,y as e,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"},b=c("br",null,null,-1);function v(o,t,g,w,x,h){const r=n("openwb-base-heading"),a=n("openwb-base-text-input");return m(),u("div",f,[i(r,null,{default:s(()=>[e(" Einstellungen für JSON ")]),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":t[0]||(t[0]=p=>o.updateConfiguration(p,"configuration.url"))},{help:s(()=>[e(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),b,e(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const E=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-c2c254cf.js b/web/settings/assets/device-c2c254cf.js
deleted file mode 100644
index 287d60475a..0000000000
--- a/web/settings/assets/device-c2c254cf.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as c,l as p,D as n,N as l,y as f,x as m,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSmartfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-smartfox"},g={class:"small"};function x(t,e,a,h,w,s){const i=o("openwb-base-heading"),d=o("openwb-base-text-input");return c(),p("div",b,[n(i,null,{default:l(()=>[f(" Einstellungen für Smartfox "),m("span",g,"(Modul: "+_(t.$options.name)+")",1)]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>s.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const C=u(v,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{C as default};
diff --git a/web/settings/assets/device-c491b9c2.js b/web/settings/assets/device-c491b9c2.js
new file mode 100644
index 0000000000..8bc0d0b6b7
--- /dev/null
+++ b/web/settings/assets/device-c491b9c2.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as r,k as u,l as d,D as n,N as l,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerfox",mixins:[a]},f={class:"device-powerfox"};function v(e,o,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",f,[n(s,null,{default:l(()=>[m(" Einstellungen für Powerfox ")]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":e.device.configuration.user,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const P=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-c605ea36.js b/web/settings/assets/device-c605ea36.js
new file mode 100644
index 0000000000..5f6ac3e8fb
--- /dev/null
+++ b/web/settings/assets/device-c605ea36.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as n,k as d,l as m,D as i,N as l,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(e,o,b,v,w,x){const a=n("openwb-base-heading"),r=n("openwb-base-text-input"),s=n("openwb-base-number-input");return d(),m("div",g,[i(a,null,{default:l(()=>[c(" Einstellungen für Huawei SmartLogger ")]),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-c94e89d5.js b/web/settings/assets/device-c94e89d5.js
deleted file mode 100644
index 8fa941c094..0000000000
--- a/web/settings/assets/device-c94e89d5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u,k as p,l as m,D as t,N as c,y as _,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarView",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-solar-view"},w={class:"small"};function x(n,e,i,V,C,a){const d=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-number-input");return p(),m("div",g,[t(d,null,{default:c(()=>[_(" Einstellungen für SolarView "),f("span",w,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Timeout",required:"","model-value":i.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=o=>a.updateConfiguration(o,"configuration.timeout"))},null,8,["model-value"])])}const B=l(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-ca2bde32.js b/web/settings/assets/device-ca2bde32.js
new file mode 100644
index 0000000000..a04107a50f
--- /dev/null
+++ b/web/settings/assets/device-ca2bde32.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[p]},f={class:"device-fox_ess"};function b(e,o,v,g,x,w){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>[_("Einstellungen für FoxEss")]),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-cc59c62c.js b/web/settings/assets/device-cc59c62c.js
new file mode 100644
index 0000000000..f6ce8c25f1
--- /dev/null
+++ b/web/settings/assets/device-cc59c62c.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as n,k as _,l as c,D as t,N as r,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(e,o,w,y,g,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return _(),c("div",f,[t(a,null,{default:r(()=>[s(" Einstellungen für SMA Sunny Boy/Tripower ")]),_:1}),t(p,{subtype:"info"},{default:r(()=>[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=i=>e.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=i=>e.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const $=m(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-cc90e6fa.js b/web/settings/assets/device-cc90e6fa.js
deleted file mode 100644
index 3c31ee6863..0000000000
--- a/web/settings/assets/device-cc90e6fa.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u,k as _,l as b,D as t,N as d,y as r,x as l,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceHuawei",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-huawei"},w={class:"small"},h=l("br",null,null,-1);function x(o,e,i,D,V,a){const m=u("openwb-base-heading"),p=u("openwb-base-text-input"),s=u("openwb-base-number-input");return _(),b("div",v,[t(m,null,{default:d(()=>[r(" Einstellungen für Huawei "),l("span",w,"(Modul: "+f(o.$options.name)+")",1)]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>a.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>a.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>a.updateConfiguration(n,"configuration.modbus_id"))},{help:d(()=>[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),h,r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const q=c(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-d659f206.js b/web/settings/assets/device-d659f206.js
new file mode 100644
index 0000000000..4f28bafff7
--- /dev/null
+++ b/web/settings/assets/device-d659f206.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as i,k as c,l as _,D as t,N as s,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalPlenticore",mixins:[u]},f={class:"device-kostal-plenticore"};function v(e,o,g,w,h,k){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),a=i("openwb-base-number-input");return c(),_("div",f,[t(l,null,{default:s(()=>[r(" Einstellungen für Kostal Plenticore ")]),_:1}),t(p,{subtype:"info"},{default:s(()=>[r(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const W=m(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{W as default};
diff --git a/web/settings/assets/device-d6d46ef8.js b/web/settings/assets/device-d6d46ef8.js
new file mode 100644
index 0000000000..6fe5a2187c
--- /dev/null
+++ b/web/settings/assets/device-d6d46ef8.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as m,l as c,D as i,N as s,y as r,x as b}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuawei",mixins:[l]},f={class:"device-huawei"},v=b("br",null,null,-1);function g(e,n,w,h,D,V){const u=t("openwb-base-heading"),d=t("openwb-base-text-input"),a=t("openwb-base-number-input");return m(),c("div",f,[i(u,null,{default:s(()=>[r(" Einstellungen für Huawei ")]),_:1}),i(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.modbus_id"))},{help:s(()=>[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),v,r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const z=p(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{z as default};
diff --git a/web/settings/assets/device-d7ef046e.js b/web/settings/assets/device-d7ef046e.js
deleted file mode 100644
index d9f005050a..0000000000
--- a/web/settings/assets/device-d7ef046e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as d,k as c,l as m,D as n,N as r,y as u,x as f,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFems",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-fems"},b={class:"small"};function w(o,e,s,C,x,a){const l=d("openwb-base-heading"),i=d("openwb-base-text-input");return c(),m("div",v,[n(l,null,{default:r(()=>[u(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control "),f("span",b,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":s.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":s.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.password"))},{help:r(()=>[u(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")]),_:1},8,["model-value"])])}const h=p(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-d9f34fe2.js b/web/settings/assets/device-d9f34fe2.js
new file mode 100644
index 0000000000..2180e8dc03
--- /dev/null
+++ b/web/settings/assets/device-d9f34fe2.js
@@ -0,0 +1 @@
+import{D as s}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(e,o,_,g,w,C){const d=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(d,null,{default:m(()=>[c(" Einstellungen für E3DC ")]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-db16ee4d.js b/web/settings/assets/device-db16ee4d.js
new file mode 100644
index 0000000000..568d676a4d
--- /dev/null
+++ b/web/settings/assets/device-db16ee4d.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as o,k as d,l as c,D as n,N as m,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceBatterX",mixins:[r]},_={class:"device-batterx"};function f(e,t,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>[l(" Einstellungen für BatterX ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":t[0]||(t[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-dd9c6eba.js b/web/settings/assets/device-dd9c6eba.js
deleted file mode 100644
index fd61de4908..0000000000
--- a/web/settings/assets/device-dd9c6eba.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u,k as p,l as c,D as t,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceE3dc",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-e3dc"},x={class:"small"};function w(n,e,a,C,V,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),c("div",v,[t(s,null,{default:m(()=>[_(" Einstellungen für E3DC "),f("span",x,"(Modul: "+b(n.$options.name)+")",1)]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const y=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-df771d66.js b/web/settings/assets/device-df771d66.js
deleted file mode 100644
index b141908516..0000000000
--- a/web/settings/assets/device-df771d66.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as p,l as u,D as o,N as s,y as a,x as d,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceVirtual",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-virtual"},m={class:"small"};function v(e,t,b,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return p(),u("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für virtuelle Geräte "),d("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/device.vue"]]);export{k as default};
diff --git a/web/settings/assets/device-e372d627.js b/web/settings/assets/device-e372d627.js
new file mode 100644
index 0000000000..19ddc3a4b8
--- /dev/null
+++ b/web/settings/assets/device-e372d627.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as n,k as m,l as c,D as a,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarwatt",mixins:[p]},f={class:"device-solarwatt"};function v(e,t,w,b,g,h){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),c("div",f,[a(s,null,{default:i(()=>[r(" Einstellungen für Solarwatt/My Reserve ")]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":e.device.configuration.energy_manager,required:"","onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const E=u(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-e4af98fb.js b/web/settings/assets/device-e4af98fb.js
deleted file mode 100644
index 1ec775ab15..0000000000
--- a/web/settings/assets/device-e4af98fb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as l,l as c,D as a,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceStuder",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer"},w={class:"small"};function x(t,e,i,h,C,s){const u=n("openwb-base-heading"),r=n("openwb-base-text-input"),d=n("openwb-base-number-input");return l(),c("div",v,[a(u,null,{default:m(()=>[_(" Einstellungen für Studer "),f("span",w,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),a(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>s.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Port",required:"",min:1,max:65535,"model-value":i.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>s.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const y=p(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-e4d1ba40.js b/web/settings/assets/device-e4d1ba40.js
new file mode 100644
index 0000000000..e320cb0ad6
--- /dev/null
+++ b/web/settings/assets/device-e4d1ba40.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as d,l as m,D as i,N as c,y as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(e,o,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>[v("Einstellungen für Solis")]),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version",notSelected:"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const N=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-e78c3c94.js b/web/settings/assets/device-e78c3c94.js
deleted file mode 100644
index 6a415d15cb..0000000000
--- a/web/settings/assets/device-e78c3c94.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as _,l as m,D as i,N as r,y as n,x as a,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceHttp",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-http"},v={class:"small"},h=a("br",null,null,-1);function w(t,e,s,x,B,d){const u=o("openwb-base-heading"),p=o("openwb-base-text-input");return _(),m("div",b,[i(u,null,{default:r(()=>[n(" Einstellungen für Http "),a("span",v,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":s.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=l=>d.updateConfiguration(l,"configuration.url"))},{help:r(()=>[n(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),h,n(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const y=c(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-f065b014.js b/web/settings/assets/device-f065b014.js
new file mode 100644
index 0000000000..0ba3c9614c
--- /dev/null
+++ b/web/settings/assets/device-f065b014.js
@@ -0,0 +1 @@
+import{D as f}from"./HardwareInstallation-a0083e3a.js";import{_ as b,u as o,k as v,l as h,D as s,N as d,y as t,x as e,z as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSonnenbatterie",mixins:[f],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},m={class:"device-sonnenbatterie"},A={style:{display:"block"}},k=e("br",null,null,-1),w=["href"],B=e("br",null,null,-1),J=["href"],R=e("br",null,null,-1),I=["href"],P=e("br",null,null,-1),x=["href"];function S(i,r,z,C,D,n){const u=o("openwb-base-heading"),p=o("openwb-base-alert"),c=o("openwb-base-text-input"),_=o("openwb-base-select-input");return v(),h("div",m,[s(u,null,{default:d(()=>[t(" Einstellungen für SonnenBatterie ")]),_:1}),s(p,{subtype:"info"},{default:d(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>i.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(_,{title:"Datenverbindung",required:"",notSelected:"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":i.device.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>i.updateConfiguration(l,"configuration.variant"))},{help:d(()=>[e("span",A,[t(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:"),k,t(" Rest-API 1: "),e("a",{href:n.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},a(n.linkRestApi1),9,w),B,t(" Rest-API 2: "),e("a",{href:n.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},a(n.linkRestApi2),9,J),R,t(" JSON-API v1: "),e("a",{href:n.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},a(n.linkJsonApi1),9,I),P,t(" JSON-API v2: "),e("a",{href:n.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},a(n.linkJsonApi2),9,x)])]),_:1},8,["model-value"])])}const F=b(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{F as default};
diff --git a/web/settings/assets/device-f298ed3b.js b/web/settings/assets/device-f298ed3b.js
deleted file mode 100644
index e0f4d053d3..0000000000
--- a/web/settings/assets/device-f298ed3b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as o,k as l,l as c,D as i,N as m,y as _,x as g,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSigenergy",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-sigenergy"},y={class:"small"};function w(n,e,a,x,h,s){const r=o("openwb-base-heading"),u=o("openwb-base-text-input"),d=o("openwb-base-number-input");return l(),c("div",v,[i(r,null,{default:m(()=>[_(" Einstellungen für Sigenergy "),g("span",y,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),i(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-f6cff0ea.js b/web/settings/assets/device-f6cff0ea.js
deleted file mode 100644
index 5e59d9fe31..0000000000
--- a/web/settings/assets/device-f6cff0ea.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as a,k as l,l as u,D as s,N as i,y as n,x as o,z as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"DeviceMqtt",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},g={class:"device-mqtt"},_={class:"small"},h=o("br",null,null,-1);function f(e,t,b,v,k,w){const r=a("openwb-base-heading"),d=a("openwb-base-alert");return l(),u("div",g,[s(r,null,{default:i(()=>[n(" Einstellungen für MQTT "),o("span",_,"(Modul: "+p(e.$options.name)+")",1)]),_:1}),s(d,{subtype:"info"},{default:i(()=>[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),h,n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")]),_:1})])}const T=c(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{T as default};
diff --git a/web/settings/assets/device-f8acb969.js b/web/settings/assets/device-f8acb969.js
deleted file mode 100644
index f57465831f..0000000000
--- a/web/settings/assets/device-f8acb969.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u,k as l,l as p,D as n,N as c,y as f,x as m,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DevicePowerfox",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-powerfox"},w={class:"small"};function b(o,e,a,x,y,s){const r=u("openwb-base-heading"),i=u("openwb-base-text-input");return l(),p("div",v,[n(r,null,{default:c(()=>[f(" Einstellungen für Powerfox "),m("span",w,"(Modul: "+_(o.$options.name)+")",1)]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":a.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":a.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const V=d(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-f96e49ba.js b/web/settings/assets/device-f96e49ba.js
deleted file mode 100644
index d91830d313..0000000000
--- a/web/settings/assets/device-f96e49ba.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as r,l as d,D as o,N as s,y as a,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceOpenwbBatKit",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-openwb-batkit"},b={class:"small"};function m(e,t,v,g,w,h){const i=n("openwb-base-heading"),c=n("openwb-base-alert");return r(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openWB Speicher-Kit "),u("span",b,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(c,{subtype:"info"},{default:s(()=>[a(" Dieses Gerät erfordert keine Einstellungen. ")]),_:1})])}const $=p(l,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-f9bc5796.js b/web/settings/assets/device-f9bc5796.js
new file mode 100644
index 0000000000..fb31a8a677
--- /dev/null
+++ b/web/settings/assets/device-f9bc5796.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as n,k as d,l as c,D as t,N as i,y as e,x as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceMqtt",mixins:[a]},p={class:"device-mqtt"},u=l("br",null,null,-1);function _(g,h,b,f,v,k){const s=n("openwb-base-heading"),o=n("openwb-base-alert");return d(),c("div",p,[t(s,null,{default:i(()=>[e("Einstellungen für MQTT")]),_:1}),t(o,{subtype:"info"},{default:i(()=>[e(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),u,e(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")]),_:1})])}const z=r(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{z as default};
diff --git a/web/settings/assets/device-fa86e6ca.js b/web/settings/assets/device-fa86e6ca.js
deleted file mode 100644
index b196dfec1d..0000000000
--- a/web/settings/assets/device-fa86e6ca.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u,k as p,l as m,D as n,N as c,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceJanitza",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},componentId:{required:!0}},methods:{updateConfiguration(o,e=void 0){this.$emit("update:configuration",{value:o,object:e})}}},v={class:"device-janitza"},x={class:"small"};function w(o,e,a,z,C,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),m("div",v,[n(s,null,{default:c(()=>[_(" Einstellungen für Janitza "),f("span",x,"(Modul: "+b(o.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),n(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])])}const q=l(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-fbd8e09f.js b/web/settings/assets/device-fbd8e09f.js
new file mode 100644
index 0000000000..9146743278
--- /dev/null
+++ b/web/settings/assets/device-fbd8e09f.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as i,k as p,l as d,D as t,N as m,y as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarView",mixins:[u]},f={class:"device-solar-view"};function _(e,o,b,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),d("div",f,[t(r,null,{default:m(()=>[v(" Einstellungen für SolarView ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Timeout",required:"","model-value":e.device.configuration.timeout,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const y=l(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-fcfe882c.js b/web/settings/assets/device-fcfe882c.js
new file mode 100644
index 0000000000..3ce085337a
--- /dev/null
+++ b/web/settings/assets/device-fcfe882c.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSofar",mixins:[d]},_={class:"device-sofar"};function b(e,o,v,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:m(()=>[f("Einstellungen für Sofar")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-ff88dc47.js b/web/settings/assets/device-ff88dc47.js
deleted file mode 100644
index 09d2baf0b1..0000000000
--- a/web/settings/assets/device-ff88dc47.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u,k as p,l as c,D as n,N as m,y as _,x as f,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceZCS",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-azzurro_zcs"},z={class:"small"};function x(t,e,a,w,C,i){const s=u("openwb-base-heading"),r=u("openwb-base-text-input"),d=u("openwb-base-number-input");return p(),c("div",v,[n(s,null,{default:m(()=>[_(" Einstellungen für Azzurro ZCS "),f("span",z,"(Modul: "+b(t.$options.name)+")",1)]),_:1}),n(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":a.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":a.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),n(d,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const y=l(g,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/displayTheme-28647fcd.js b/web/settings/assets/displayTheme-28647fcd.js
deleted file mode 100644
index 29296d2874..0000000000
--- a/web/settings/assets/displayTheme-28647fcd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_,u as d,k as r,l as f,D as a,N as o,y as s,A as c,B as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"DisplayThemeCards",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(b,e=void 0){this.$emit("update:configuration",{value:b,object:e})}}},h={class:"display-theme-cards"};function v(b,e,n,V,y,u){const i=d("openwb-base-heading"),l=d("openwb-base-button-group-input"),m=d("openwb-base-text-input");return r(),f("div",h,[a(i,null,{default:o(()=>[s("Bediensperre")]),_:1}),a(l,{title:"Bedienung sperren","model-value":n.displayTheme.configuration.lock_changes,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[s(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')]),_:1},8,["model-value"]),n.displayTheme.configuration.lock_changes?(r(),c(m,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.lock_changes_code"))},{help:o(()=>[s(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):g("",!0),a(i,null,{default:o(()=>[s("Ansichten")]),_:1}),a(l,{title:"Übersicht anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_view,"onUpdate:modelValue":e[2]||(e[2]=t=>u.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(l,{title:"Energiefluss anzeigen","model-value":n.displayTheme.configuration.enable_energy_flow_view,"onUpdate:modelValue":e[3]||(e[3]=t=>u.updateConfiguration(t,"configuration.enable_energy_flow_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(l,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_charge_points_view,"onUpdate:modelValue":e[4]||(e[4]=t=>u.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),n.displayTheme.configuration.enable_charge_points_view==!0?(r(),c(l,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":n.displayTheme.configuration.simple_charge_point_view,"onUpdate:modelValue":e[5]||(e[5]=t=>u.updateConfiguration(t,"configuration.simple_charge_point_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):g("",!0),a(l,{title:"Status anzeigen","model-value":n.displayTheme.configuration.enable_status_view,"onUpdate:modelValue":e[6]||(e[6]=t=>u.updateConfiguration(t,"configuration.enable_status_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(i,null,{help:o(()=>[s(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')]),default:o(()=>[s(" Datenauswahl ")]),_:1}),a(l,{title:"EVU anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":e[7]||(e[7]=t=>u.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(l,{title:"Hausverbrauch anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":e[8]||(e[8]=t=>u.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(l,{title:"PV anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":e[9]||(e[9]=t=>u.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(l,{title:"Batteriespeicher anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":e[10]||(e[10]=t=>u.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(l,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":e[11]||(e[11]=t=>u.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(l,{title:"Fahrzeuge anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_vehicles,"onUpdate:modelValue":e[12]||(e[12]=t=>u.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])])}const w=_(p,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{w as default};
diff --git a/web/settings/assets/displayTheme-97f12f16.js b/web/settings/assets/displayTheme-97f12f16.js
new file mode 100644
index 0000000000..5e179f4e3c
--- /dev/null
+++ b/web/settings/assets/displayTheme-97f12f16.js
@@ -0,0 +1 @@
+import{D as g}from"./OptionalComponents-963feb73.js";import{_ as m,u as i,k as d,l as c,D as a,N as l,y as u,A as r,B as b}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DisplayThemeCards",mixins:[g]},_={class:"display-theme-cards"};function h(e,n,v,V,y,A){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),c("div",_,[a(s,null,{default:l(()=>[u("Bediensperre")]),_:1}),a(o,{title:"Bedienung sperren","model-value":e.displayTheme.configuration.lock_changes,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')]),_:1},8,["model-value"]),e.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":e.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>[u("Ansichten")]),_:1}),a(o,{title:"Übersicht anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_view,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":e.displayTheme.configuration.enable_energy_flow_view,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.enable_energy_flow_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":e.displayTheme.configuration.enable_charge_points_view,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),e.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":e.displayTheme.configuration.simple_charge_point_view,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.simple_charge_point_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":e.displayTheme.configuration.enable_status_view,"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateConfiguration(t,"configuration.enable_status_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(s,null,{help:l(()=>[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')]),default:l(()=>[u(" Datenauswahl ")]),_:1}),a(o,{title:"EVU anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_vehicles,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])])}const x=m(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{x as default};
diff --git a/web/settings/assets/electricity_tariff-1126e706.js b/web/settings/assets/electricity_tariff-1126e706.js
deleted file mode 100644
index b34cc58dda..0000000000
--- a/web/settings/assets/electricity_tariff-1126e706.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./index-068b063d.js";import{_ as f,u as n,k as m,l as g,D as r,N as u,y as i,x as h}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffEnergyCharts",mixins:[p],emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"electricity-tariff-energycharts"},y=h("br",null,null,-1);function w(a,e,o,v,x,s){const l=n("openwb-base-alert"),c=n("openwb-base-select-input"),d=n("openwb-base-number-input");return m(),g("div",b,[r(l,{subtype:"info"},{default:u(()=>[i(" Börsenstrompreise von Energy Charts (energy-charts.info)"),y,i(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),r(c,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":o.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.country"))},null,8,["model-value"]),r(d,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,unit:"ct/kWh","model-value":o.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(parseFloat(t.toFixed(3)),"configuration.surcharge"))},{help:u(()=>[i(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const z=f(_,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{z as default};
diff --git a/web/settings/assets/electricity_tariff-2e93397c.js b/web/settings/assets/electricity_tariff-2e93397c.js
deleted file mode 100644
index 05524afbe3..0000000000
--- a/web/settings/assets/electricity_tariff-2e93397c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as s,u as l,k as u,l as d,D as i,N as f,y as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffVoltego",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},m={class:"electricity-tariff-voltego"};function g(n,e,o,b,y,a){const c=l("openwb-base-alert"),r=l("openwb-base-text-input");return u(),d("div",m,[i(c,{subtype:"info"},{default:f(()=>[p(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")]),_:1}),i(r,{title:"Client-ID",subtype:"user",required:"","model-value":o.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=t=>a.updateConfiguration(t,"configuration.client_id"))},null,8,["model-value"]),i(r,{title:"Client-Secret",subtype:"password",required:"","model-value":o.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=t=>a.updateConfiguration(t,"configuration.client_secret"))},null,8,["model-value"])])}const w=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{w as default};
diff --git a/web/settings/assets/electricity_tariff-3790750f.js b/web/settings/assets/electricity_tariff-3790750f.js
deleted file mode 100644
index 2631d23ba2..0000000000
--- a/web/settings/assets/electricity_tariff-3790750f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u as s,k as _,l as g,D as r,N as h,y as u,x as y}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"ElectricityTariffTibber",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{updateConfiguration(o,t=void 0){this.$emit("update:configuration",{value:o,object:t})},async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const o='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const t=await this.axios.post(this.tibberAPI,o,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=t.data.data.viewer.homes.map(e=>{let i=e.address.address1;return e.address.address2&&(i=i+", "+e.address.address2),e.address.address3&&(i=i+", "+e.address.address3),i=i+`, ${e.address.postalCode} ${e.address.city}, ${e.address.country}`,{value:e.id,text:i}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},k={class:"electricity-tariff-tibber"},v=y("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1);function w(o,t,e,i,c,a){var l;const b=s("openwb-base-alert"),d=s("openwb-base-text-input"),f=s("openwb-base-button-input"),p=s("openwb-base-select-input");return _(),g("div",k,[r(b,{subtype:"info"},{default:h(()=>[u(" Ihren persönlichen Tibber-Token erhalten Sie über die "),v,u(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")]),_:1}),r(d,{title:"Token",required:"",ref:"tokenInput","model-value":e.electricityTariff.configuration.token,"onUpdate:modelValue":t[0]||(t[0]=n=>a.updateConfiguration(n,"configuration.token"))},null,8,["model-value"]),r(f,{title:"Home-IDs abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:!((l=e.electricityTariff.configuration.token)!=null&&l.length),onButtonClicked:a.getTibberHomeList},null,8,["disabled","onButtonClicked"]),r(p,{title:"Verfügbare Home-IDs",options:c.tibberHomeList,"model-value":e.electricityTariff.configuration.home_id,"onUpdate:modelValue":t[1]||(t[1]=n=>a.updateConfiguration(n,"configuration.home_id"))},null,8,["options","model-value"]),r(d,{title:"Home-ID",required:"","model-value":e.electricityTariff.configuration.home_id,"onUpdate:modelValue":t[2]||(t[2]=n=>a.updateConfiguration(n,"configuration.home_id"))},null,8,["model-value"])])}const x=m(T,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{x as default};
diff --git a/web/settings/assets/electricity_tariff-86994943.js b/web/settings/assets/electricity_tariff-86994943.js
new file mode 100644
index 0000000000..c24d1683eb
--- /dev/null
+++ b/web/settings/assets/electricity_tariff-86994943.js
@@ -0,0 +1 @@
+import{E as m}from"./GeneralChargeConfig-4b985756.js";import{_ as g,u as s,k as h,l as _,D as n,N as y,y as l,x as T}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!<pre>"+e+"</pre>","danger")}}}},v={class:"electricity-tariff-tibber"},w=T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1);function C(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),w,l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")]),_:1}),n(a,{title:"Token",required:"",ref:"tokenInput","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const L=g(k,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{L as default};
diff --git a/web/settings/assets/electricity_tariff-8c65c060.js b/web/settings/assets/electricity_tariff-8c65c060.js
new file mode 100644
index 0000000000..c3b261252c
--- /dev/null
+++ b/web/settings/assets/electricity_tariff-8c65c060.js
@@ -0,0 +1 @@
+import{E as c}from"./GeneralChargeConfig-4b985756.js";import{_ as p,u as r,k as d,l as f,D as i,N as a,y as s,x as m}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energycharts"},_=m("br",null,null,-1);function b(e,t,y,w,v,B){const o=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(o,{subtype:"info"},{default:a(()=>[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),_,s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),i(l,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":e.electricityTariff.configuration.country,"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":e.electricityTariff.configuration.surcharge,"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:a(()=>[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const A=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{A as default};
diff --git a/web/settings/assets/electricity_tariff-921487ff.js b/web/settings/assets/electricity_tariff-921487ff.js
new file mode 100644
index 0000000000..bd22efe479
--- /dev/null
+++ b/web/settings/assets/electricity_tariff-921487ff.js
@@ -0,0 +1 @@
+import{E as l}from"./GeneralChargeConfig-4b985756.js";import{_ as s,u as r,k as c,l as p,D as o,N as u,y as f}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(e,t,g,b,y,v){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")]),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":e.electricityTariff.configuration.client_id,"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":e.electricityTariff.configuration.client_secret,"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const E=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{E as default};
diff --git a/web/settings/assets/electricity_tariff-9a6e448e.js b/web/settings/assets/electricity_tariff-9a6e448e.js
deleted file mode 100644
index 8bc7e4a5d8..0000000000
--- a/web/settings/assets/electricity_tariff-9a6e448e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as o,u as c,k as s,l as u,D as l,N as d,y as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"ElectricityTariffAwattar",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},_={class:"electricity-tariff-awattar"};function m(t,e,a,b,w,r){const i=c("openwb-base-select-input");return s(),u("div",_,[l(i,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":a.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.country"))},{help:d(()=>[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")]),_:1},8,["model-value"])])}const h=o(p,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{h as default};
diff --git a/web/settings/assets/electricity_tariff-bc229946.js b/web/settings/assets/electricity_tariff-bc229946.js
new file mode 100644
index 0000000000..03e4c603ef
--- /dev/null
+++ b/web/settings/assets/electricity_tariff-bc229946.js
@@ -0,0 +1 @@
+import{E as s}from"./GeneralChargeConfig-4b985756.js";import{_ as l,u as r,k as c,l as p,D as n,N as u,y as f}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(e,t,b,y,g,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")]),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":e.electricityTariff.configuration.client_id,"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":e.electricityTariff.configuration.client_secret,"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{I as default};
diff --git a/web/settings/assets/electricity_tariff-c641235d.js b/web/settings/assets/electricity_tariff-c641235d.js
new file mode 100644
index 0000000000..e562764a79
--- /dev/null
+++ b/web/settings/assets/electricity_tariff-c641235d.js
@@ -0,0 +1 @@
+import{E as o}from"./GeneralChargeConfig-4b985756.js";import{_ as a,u as n,k as s,l as c,D as l,N as p,y as f}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(e,t,_,w,y,b){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":e.electricityTariff.configuration.country,"onUpdate:modelValue":t[0]||(t[0]=r=>e.updateConfiguration(r,"configuration.country"))},{help:p(()=>[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")]),_:1},8,["model-value"])])}const $=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{$ as default};
diff --git a/web/settings/assets/electricity_tariff-e02e508f.js b/web/settings/assets/electricity_tariff-e02e508f.js
deleted file mode 100644
index bd5e56df5a..0000000000
--- a/web/settings/assets/electricity_tariff-e02e508f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as s,u as c,k as u,l as d,D as i,N as f,y as p}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"ElectricityTariffRabot",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"electricity-tariff-rabot"};function m(n,e,a,g,y,r){const l=c("openwb-base-alert"),o=c("openwb-base-text-input");return u(),d("div",b,[i(l,{subtype:"info"},{default:f(()=>[p(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")]),_:1}),i(o,{title:"Client-ID",subtype:"user",required:"","model-value":a.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=t=>r.updateConfiguration(t,"configuration.client_id"))},null,8,["model-value"]),i(o,{title:"Client-Secret",subtype:"password",required:"","model-value":a.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=t=>r.updateConfiguration(t,"configuration.client_secret"))},null,8,["model-value"])])}const w=s(_,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{w as default};
diff --git a/web/settings/assets/external_inverter-154b0b15.js b/web/settings/assets/external_inverter-154b0b15.js
deleted file mode 100644
index 244a9abcbc..0000000000
--- a/web/settings/assets/external_inverter-154b0b15.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as a,y as r,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-external-inverter"},m={class:"small"};function b(e,t,v,x,g,h){const s=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(s,null,{default:a(()=>[r(" Einstellungen für externen BatterX Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/external_inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/external_inverter-355c5719.js b/web/settings/assets/external_inverter-355c5719.js
deleted file mode 100644
index f1f75664c4..0000000000
--- a/web/settings/assets/external_inverter-355c5719.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as o,k as g,l as f,D as t,N as s,y as l,x as _,z as b}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSolarEdgeExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},h={class:"device-solaredge-external-inverter"},x={class:"small"};function w(i,e,a,S,E,r){const d=o("openwb-base-heading"),c=o("openwb-base-alert"),u=o("openwb-base-number-input"),m=o("openwb-base-select-input");return g(),f("div",h,[t(d,null,{default:s(()=>[l(" Einstellungen für SolarEdge externen Wechselrichter "),_("span",x,"(Modul: "+b(i.$options.name)+")",1)]),_:1}),t(c,{subtype:"info"},{default:s(()=>[l(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')]),_:1}),t(u,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),t(u,{title:"SolarEdge-Meter-ID","model-value":a.configuration.meter_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.meter_id"))},null,8,["model-value"]),t(m,{title:"Leistung invertieren",notSelected:"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":a.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.factor"))},{help:s(()=>[l(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")]),_:1},8,["model-value"])])}const D=p(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/external_inverter-3f39a305.js b/web/settings/assets/external_inverter-3f39a305.js
new file mode 100644
index 0000000000..8b9da55e5b
--- /dev/null
+++ b/web/settings/assets/external_inverter-3f39a305.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as i,k as c,l as g,D as o,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolaredgeExternalInverter",mixins:[m]},_={class:"device-solaredge-external-inverter"};function b(e,n,v,w,h,x){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),s=i("openwb-base-number-input"),d=i("openwb-base-select-input");return c(),g("div",_,[o(l,null,{default:r(()=>[a(" Einstellungen für SolarEdge externen Wechselrichter ")]),_:1}),o(u,{subtype:"info"},{default:r(()=>[a(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')]),_:1}),o(s,{title:"SolarEdge-Geräte-ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(s,{title:"SolarEdge-Meter-ID","model-value":e.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":n[1]||(n[1]=t=>e.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren",notSelected:"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":e.component.configuration.factor,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.factor"))},{help:r(()=>[a(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")]),_:1},8,["model-value"])])}const L=p(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default};
diff --git a/web/settings/assets/external_inverter-ee34cc1c.js b/web/settings/assets/external_inverter-ee34cc1c.js
deleted file mode 100644
index ada37815f3..0000000000
--- a/web/settings/assets/external_inverter-ee34cc1c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcExternalInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-external-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für externe E3DC Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/external_inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/index-068b063d.js b/web/settings/assets/index-b0e5e618.js
similarity index 80%
rename from web/settings/assets/index-068b063d.js
rename to web/settings/assets/index-b0e5e618.js
index 220bd65a2e..704db3dacc 100644
--- a/web/settings/assets/index-068b063d.js
+++ b/web/settings/assets/index-b0e5e618.js
@@ -1 +1 @@
-import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as B,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as O,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Be,u as Oe,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:O}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:O}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Bt={class:"form-row"},Ot={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Bt,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Ot,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));B.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:O},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));B.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));B.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:O},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Bs={class:"input-group-prepend"},Os={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Bs,[o("div",Os,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));B.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:O}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));B.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));B.add(T,V,Se,Ce,Be,Oe,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:O}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},Bn={class:"input-group-text"},On=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[On],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",Bn,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));B.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:O}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));B.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Bo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Oo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Bo,Oo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);B.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);B.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:O,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-c3faa234.js"),["assets/Status-c3faa234.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-6b2cc49d.js"),["assets/ChargeLog-6b2cc49d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-3cf86dec.js"),["assets/Chart-3cf86dec.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-9529e63d.js"),["assets/GeneralConfig-9529e63d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-40d19b76.js"),["assets/OptionalComponents-40d19b76.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-67ad6713.js"),["assets/GeneralChargeConfig-67ad6713.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-3316e506.js"),["assets/InstantChargeConfig-3316e506.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-0d060176.js"),["assets/PVChargeConfig-0d060176.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-182836cc.js"),["assets/TimeChargeConfig-182836cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-4e583e67.js"),["assets/ScheduledChargeConfig-4e583e67.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-dd85fd7a.js"),["assets/HardwareInstallation-dd85fd7a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-755ca06f.js"),["assets/LoadManagementConfig-755ca06f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-4fc37543.js"),["assets/ChargePointInstallation-4fc37543.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-ee86d81f.js"),["assets/VehicleConfig-ee86d81f.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-cb19843a.js"),["assets/CloudConfig-cb19843a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-94739887.js"),["assets/MqttBridgeConfig-94739887.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-40886be8.js"),["assets/DebugConfig-40886be8.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-48f5d97a.js"),["assets/Support-48f5d97a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-63440fac.js"),["assets/LegalSettings-63440fac.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-d516542d.js"),["assets/System-d516542d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-10c6dd29.js"),["assets/DataManagement-10c6dd29.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-ce6c9cb7.js"),["assets/InstallAssistant-ce6c9cb7.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-af0aad03.js"),["assets/TestingStore-af0aad03.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
+import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as O,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as B,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Oe,u as Be,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));O.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:B}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));O.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:B}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));O.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:B}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Ot={class:"form-row"},Bt={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Ot,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Bt,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));O.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:B},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));O.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:B}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));O.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:B},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));O.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:B},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));O.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:B}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Os={class:"input-group-prepend"},Bs={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Os,[o("div",Bs,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));O.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:B}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));O.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:B}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));O.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:B},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));O.add(T,V,Se,Ce,Oe,Be,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:B}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},On={class:"input-group-text"},Bn=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[Bn],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",On,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));O.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:B}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));O.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:B},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Oo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Bo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Oo,Bo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);O.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:B}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);O.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:B,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-f1da0c38.js"),["assets/Status-f1da0c38.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-f3c14ea7.js"),["assets/ChargeLog-f3c14ea7.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-0ed3fc8e.js"),["assets/Chart-0ed3fc8e.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-1396a845.js").then(e=>e.a),["assets/GeneralConfig-1396a845.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-963feb73.js").then(e=>e.O),["assets/OptionalComponents-963feb73.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-4b985756.js").then(e=>e.G),["assets/GeneralChargeConfig-4b985756.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-13725bb2.js"),["assets/InstantChargeConfig-13725bb2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-cce066fd.js"),["assets/PVChargeConfig-cce066fd.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-46c6427d.js"),["assets/TimeChargeConfig-46c6427d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-a25b4908.js"),["assets/ScheduledChargeConfig-a25b4908.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-a0083e3a.js").then(e=>e.a),["assets/HardwareInstallation-a0083e3a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-5e0d6325.js"),["assets/LoadManagementConfig-5e0d6325.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-fba1b24e.js").then(e=>e.c),["assets/ChargePointInstallation-fba1b24e.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-5050794d.js").then(e=>e.b),["assets/VehicleConfig-5050794d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-5ecdadd6.js"),["assets/CloudConfig-5ecdadd6.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-4de54ead.js"),["assets/MqttBridgeConfig-4de54ead.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-4a040dc7.js"),["assets/DebugConfig-4a040dc7.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-5eca5ed7.js"),["assets/Support-5eca5ed7.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-c607b1a5.js"),["assets/LegalSettings-c607b1a5.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-c2920436.js"),["assets/System-c2920436.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-eb2fc5d7.js").then(e=>e.a),["assets/DataManagement-eb2fc5d7.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-e098a326.js"),["assets/InstallAssistant-e098a326.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-1bc32428.js"),["assets/TestingStore-1bc32428.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
diff --git a/web/settings/assets/inverter-008f792b.js b/web/settings/assets/inverter-008f792b.js
deleted file mode 100644
index 1a4f11fb20..0000000000
--- a/web/settings/assets/inverter-008f792b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceRCTInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-rct-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für RCT Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const C=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/inverter.vue"]]);export{C as default};
diff --git a/web/settings/assets/inverter-01948182.js b/web/settings/assets/inverter-01948182.js
deleted file mode 100644
index c5dbffd3d1..0000000000
--- a/web/settings/assets/inverter-01948182.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as l,l as _,D as o,N as a,y as i,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceEnphaseInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-enphase-inverter"},b={class:"small"};function g(n,e,s,w,E,r){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),_("div",h,[o(d,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter "),m("span",b,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(u,{title:"EID",required:"","model-value":s.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.eid"))},{help:a(()=>[i(' EID für "production" ')]),_:1},8,["model-value"])])}const y=c(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{y as default};
diff --git a/web/settings/assets/inverter-022a27f9.js b/web/settings/assets/inverter-022a27f9.js
deleted file mode 100644
index 23975e329c..0000000000
--- a/web/settings/assets/inverter-022a27f9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as t,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceDeyeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-deye-inverter"},g={class:"small"};function h(n,e,i,y,w,a){const s=t("openwb-base-heading"),r=t("openwb-base-number-input");return c(),p("div",v,[o(s,null,{default:l(()=>[m(" Einstellungen für Deye Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),o(r,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>a.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-0671dbec.js b/web/settings/assets/inverter-0671dbec.js
deleted file mode 100644
index e58f1d0e2b..0000000000
--- a/web/settings/assets/inverter-0671dbec.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as n,k as d,l as c,D as o,N as p,y as v,x as _,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbEvukitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-evukit-inverter"},g={class:"small"};function w(t,e,i,h,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return d(),c("div",b,[o(s,null,{default:p(()=>[v(" Einstellungen für openWB EVU-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=u=>a.updateConfiguration(u,"configuration.version"))},null,8,["model-value"])])}const B=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-0773e282.js b/web/settings/assets/inverter-0773e282.js
deleted file mode 100644
index 71509ed5c5..0000000000
--- a/web/settings/assets/inverter-0773e282.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as l,l as d,D as n,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarLogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_log-inverter"},m={class:"small"};function g(e,o,b,v,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return l(),d("div",f,[n(r,null,{default:s(()=>[a(" Einstellungen für Solar-Log Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-0feca953.js b/web/settings/assets/inverter-0feca953.js
deleted file mode 100644
index 8a0900bc54..0000000000
--- a/web/settings/assets/inverter-0feca953.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as s,k as _,l as m,D as t,N as o,y as n,x as e,z as a}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DeviceMqttInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},b={class:"device-mqtt-inverter"},f={class:"small"},g=e("br",null,null,-1),v=e("span",{class:"text-info"},"-123",-1),w=e("br",null,null,-1),z=e("br",null,null,-1),x=e("span",{class:"text-info"},"123.45",-1);function B(i,l,r,k,y,I){const d=s("openwb-base-heading"),c=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert");return _(),m("div",b,[t(d,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter "),e("span",f,"(Modul: "+a(i.$options.name)+")",1)]),_:1}),t(p,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/power",1)]),_:1}),g,n(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: "),v]),e("li",null,[t(c,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+a(r.componentId)+"/get/exported",1)]),_:1}),w,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),z,n(" Beispiel: "),x])])]),_:1})])}const N=u(h,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-148b1cf9.js b/web/settings/assets/inverter-148b1cf9.js
deleted file mode 100644
index 1f9063458b..0000000000
--- a/web/settings/assets/inverter-148b1cf9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as o,k as p,l as c,D as i,N as m,y as _,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceOpenwbFlexInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-openwb-flex-inverter"},x={class:"small"};function w(n,e,a,M,h,s){const u=o("openwb-base-heading"),l=o("openwb-base-select-input"),r=o("openwb-base-number-input");return p(),c("div",g,[i(u,null,{default:m(()=>[_(" Einstellungen für openWB-Flex Wechselrichter "),f("span",x,"(Modul: "+v(n.$options.name)+")",1)]),_:1}),i(l,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":a.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=t=>s.updateConfiguration(t,"configuration.version"))},null,8,["model-value"]),i(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":a.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=t=>s.updateConfiguration(t,"configuration.id"))},null,8,["model-value"])])}const C=d(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{C as default};
diff --git a/web/settings/assets/inverter-1528dc9b.js b/web/settings/assets/inverter-1528dc9b.js
new file mode 100644
index 0000000000..cf88b52c6e
--- /dev/null
+++ b/web/settings/assets/inverter-1528dc9b.js
@@ -0,0 +1 @@
+import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as i,k as m,l as _,D as t,N as o,y as n,x as e,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceMqttInverter",mixins:[c]},h={class:"device-mqtt-inverter"},b=e("br",null,null,-1),f=e("span",{class:"text-info"},"-123",-1),g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"123.45",-1);function x(s,z,B,k,y,W){const a=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return m(),_("div",h,[t(a,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter ")]),_:1}),t(p,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+l(s.component.id)+"/get/power",1)]),_:1}),b,n(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: "),f]),e("li",null,[t(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+l(s.component.id)+"/get/exported",1)]),_:1}),g,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,n(" Beispiel: "),w])])]),_:1})])}const q=d(u,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{q as default};
diff --git a/web/settings/assets/inverter-160edb4d.js b/web/settings/assets/inverter-160edb4d.js
deleted file mode 100644
index 27dfc991bc..0000000000
--- a/web/settings/assets/inverter-160edb4d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as l,l as c,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolarmaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solarmax-inverter"},g={class:"small"};function x(n,e,a,h,w,i){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return l(),c("div",v,[t(s,null,{default:p(()=>[m(" Einstellungen für Solarmax Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-16319c3f.js b/web/settings/assets/inverter-16319c3f.js
deleted file mode 100644
index 372ce80102..0000000000
--- a/web/settings/assets/inverter-16319c3f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as c,l as p,D as t,N as l,y as _,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceFoxEssInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-fox_ess-inverter"},g={class:"small"};function x(n,e,s,h,w,i){const a=o("openwb-base-heading"),r=o("openwb-base-number-input");return c(),p("div",v,[t(a,null,{default:l(()=>[_(" Einstellungen für FoxEss Wechselrichter "),m("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=u(b,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-1b5f20c2.js b/web/settings/assets/inverter-1b5f20c2.js
new file mode 100644
index 0000000000..75f3b2efd9
--- /dev/null
+++ b/web/settings/assets/inverter-1b5f20c2.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[a]},_={class:"device-solis-inverter"};function b(e,o,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>[d(" Einstellungen für Solis Wechselrichter ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-1f1b0291.js b/web/settings/assets/inverter-1f1b0291.js
deleted file mode 100644
index 1c86874489..0000000000
--- a/web/settings/assets/inverter-1f1b0291.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as o,k as c,l,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceKostalPikoInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-kostalpiko-inverter"},g={class:"small"};function h(t,e,a,k,x,i){const s=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return c(),l("div",v,[n(s,null,{default:p(()=>[_(" Einstellungen für Kostal Piko Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":a.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.bat_configured"))},null,8,["model-value"])])}const B=d(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-2671797a.js b/web/settings/assets/inverter-2671797a.js
new file mode 100644
index 0000000000..00fdf138fe
--- /dev/null
+++ b/web/settings/assets/inverter-2671797a.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as s,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[a]},_={class:"device-victron-inverter"};function f(e,o,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>[c(" Einstellungen für Victron Wechselrichter ")]),_:1}),i(p,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":e.component.configuration.mppt,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const E=s(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-317c9702.js b/web/settings/assets/inverter-317c9702.js
deleted file mode 100644
index d066cce54c..0000000000
--- a/web/settings/assets/inverter-317c9702.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as t,k as c,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceOpenDTUInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-opendtu-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für OpenDTU Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-390b002d.js b/web/settings/assets/inverter-390b002d.js
deleted file mode 100644
index 7d5caf5226..0000000000
--- a/web/settings/assets/inverter-390b002d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as o,k as _,l as m,D as r,N as i,y as d,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceStuderInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-studer-inverter"},V={class:"small"};function S(t,e,a,T,h,u){const s=o("openwb-base-heading"),l=o("openwb-base-button-group-input"),c=o("openwb-base-number-input");return _(),m("div",v,[r(s,null,{default:i(()=>[d(" Einstellungen für Studer Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(l,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":a.configuration.vc_type,"onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.vc_type"))},null,8,["model-value"]),r(c,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":a.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.vc_count"))},{help:i(()=>[d(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const y=p(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{y as default};
diff --git a/web/settings/assets/inverter-3a00ed3d.js b/web/settings/assets/inverter-3a00ed3d.js
deleted file mode 100644
index e35905f632..0000000000
--- a/web/settings/assets/inverter-3a00ed3d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceTeslaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-tesla-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Tesla Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-3a35e713.js b/web/settings/assets/inverter-3a35e713.js
deleted file mode 100644
index 7952b891d8..0000000000
--- a/web/settings/assets/inverter-3a35e713.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHuaweiInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-huawei-inverter"},m={class:"small"};function h(e,t,v,b,w,g){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Huawei Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-3a81dff8.js b/web/settings/assets/inverter-3a81dff8.js
deleted file mode 100644
index 0212bbefda..0000000000
--- a/web/settings/assets/inverter-3a81dff8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as u,l as d,D as o,N as s,y as r,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSungrowInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sungrow-inverter"},m={class:"small"};function g(e,n,v,b,w,h){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return u(),d("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Sungrow Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-3d8e5c7f.js b/web/settings/assets/inverter-3d8e5c7f.js
new file mode 100644
index 0000000000..0786f30470
--- /dev/null
+++ b/web/settings/assets/inverter-3d8e5c7f.js
@@ -0,0 +1 @@
+import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as l,l as m,D as r,N as i,y as e,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[c]},_={class:"device-powerfox-inverter"},h=s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),b=s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1);function g(n,o,v,w,x,D){const a=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),m("div",_,[r(a,null,{default:i(()=>[e(" Einstellungen für Powerfox Wechselrichter ")]),_:1}),r(d,{title:"ID",required:"","model-value":n.component.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=p=>n.updateConfiguration(p,"configuration.id"))},{help:i(()=>[e(" Um die ID herauszufinden mit dem Browser die Adresse "),h,e(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),b,e(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")]),_:1},8,["model-value"])])}const A=u(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{A as default};
diff --git a/web/settings/assets/inverter-4130514e.js b/web/settings/assets/inverter-4130514e.js
new file mode 100644
index 0000000000..d81b58aa37
--- /dev/null
+++ b/web/settings/assets/inverter-4130514e.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as o,k as u,l as c,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function g(e,n,b,f,v,y){const s=o("openwb-base-heading"),a=o("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>[r(" Einstellungen für Sigenergy Wechselrichter ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[0]||(n[0]=p=>e.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const I=d(l,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-53505c28.js b/web/settings/assets/inverter-53505c28.js
deleted file mode 100644
index f739888e60..0000000000
--- a/web/settings/assets/inverter-53505c28.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as t,k as m,l as _,D as o,N as s,y as i,x as f,z as h}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSmahmInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},g={class:"device-smahm-inverter"},v={class:"small"};function w(n,e,r,M,y,a){const u=t("openwb-base-heading"),d=t("openwb-base-alert"),c=t("openwb-base-number-input");return m(),_("div",g,[o(u,null,{default:s(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter "),f("span",v,"(Modul: "+h(n.$options.name)+")",1)]),_:1}),o(d,{subtype:"info"},{default:s(()=>[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')]),_:1}),o(c,{title:"Seriennummer",required:"","model-value":r.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.serials"))},null,8,["model-value"])])}const B=p(b,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-53c9dd57.js b/web/settings/assets/inverter-53c9dd57.js
deleted file mode 100644
index 8a28a99cd3..0000000000
--- a/web/settings/assets/inverter-53c9dd57.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as n,k as c,l,D as o,N as p,y as m,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceHuaweiSmartLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-huawei-smart-logger-inverter"},v={class:"small"};function h(t,e,a,w,x,i){const r=n("openwb-base-heading"),s=n("openwb-base-number-input");return c(),l("div",b,[o(r,null,{default:p(()=>[m(" Einstellungen für Huawei SmartLogger Wechselrichter "),_("span",v,"(Modul: "+g(t.$options.name)+")",1)]),_:1}),o(s,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.modbus_id"))},null,8,["model-value"])])}const D=d(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-564ac740.js b/web/settings/assets/inverter-564ac740.js
deleted file mode 100644
index 31ffa66a9c..0000000000
--- a/web/settings/assets/inverter-564ac740.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as t,k as c,l,D as n,N as s,y as r,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarWorldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-solar_world-inverter"},m={class:"small"};function b(e,o,v,g,h,w){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),l("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für SolarWorld Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-5a5ed031.js b/web/settings/assets/inverter-5a5ed031.js
deleted file mode 100644
index 63f852bf59..0000000000
--- a/web/settings/assets/inverter-5a5ed031.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as u,l as d,D as o,N as s,y as r,x as p,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const l={name:"DeviceZCSInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-azzurro_zcs-inverter"},m={class:"small"};function b(e,t,v,z,g,h){const a=n("openwb-base-heading"),i=n("openwb-base-alert");return u(),d("div",f,[o(a,null,{default:s(()=>[r(" Einstellungen für Azzurro ZCS Wechselrichter "),p("span",m,"(Modul: "+_(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-61827c16.js b/web/settings/assets/inverter-61827c16.js
new file mode 100644
index 0000000000..4895e935b9
--- /dev/null
+++ b/web/settings/assets/inverter-61827c16.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as a,u as o,k as l,l as u,D as n,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(e,t,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:c(()=>[m(" Einstellungen für openWB EVU-Kit Wechselrichter ")]),_:1}),n(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":t[0]||(t[0]=s=>e.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-6217c8a3.js b/web/settings/assets/inverter-6217c8a3.js
new file mode 100644
index 0000000000..4087958a36
--- /dev/null
+++ b/web/settings/assets/inverter-6217c8a3.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as l,k as m,l as c,D as r,N as o,y as e,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},g={class:"device-http-inverter"},_=a("br",null,null,-1),b=a("br",null,null,-1),v=a("br",null,null,-1);function f(n,t,w,z,x,k){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),c("div",g,[r(d,null,{default:o(()=>[e(" Einstellungen für Http Wechselrichter ")]),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":n.component.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=i=>n.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),_,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")]),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.exported_path,"onUpdate:modelValue":t[1]||(t[1]=i=>n.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),b,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),v,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const B=u(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-671f6a73.js b/web/settings/assets/inverter-671f6a73.js
deleted file mode 100644
index f594f7b4f8..0000000000
--- a/web/settings/assets/inverter-671f6a73.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as o,k as p,l as c,D as i,N as m,y as _,x as b,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVictronInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-victron-inverter"},V={class:"small"};function w(t,e,a,x,h,u){const r=o("openwb-base-heading"),s=o("openwb-base-number-input"),d=o("openwb-base-button-group-input");return p(),c("div",g,[i(r,null,{default:m(()=>[_(" Einstellungen für Victron Wechselrichter "),b("span",V,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),i(s,{title:"Modbus ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>u.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(d,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":a.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>u.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const B=l(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-69ae908d.js b/web/settings/assets/inverter-69ae908d.js
deleted file mode 100644
index 8b6209906d..0000000000
--- a/web/settings/assets/inverter-69ae908d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u as t,k as b,l as _,D as o,N as u,y as s,x as f,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSunnyBoyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},y={class:"device-sunnyboy-inverter"},w={class:"small"};function h(a,e,i,S,C,r){const d=t("openwb-base-heading"),l=t("openwb-base-button-group-input"),p=t("openwb-base-select-input"),c=t("openwb-base-number-input");return b(),_("div",y,[o(d,null,{default:u(()=>[s(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter "),f("span",w,"(Modul: "+v(a.$options.name)+")",1)]),_:1}),o(l,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":i.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=n=>r.updateConfiguration(n,"configuration.hybrid"))},{help:u(()=>[s(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),o(p,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=n=>r.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),o(c,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>r.updateConfiguration(n,"configuration.modbus_id"))},{help:u(()=>[s(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")]),_:1},8,["model-value"])])}const V=m(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-6b993a71.js b/web/settings/assets/inverter-6b993a71.js
deleted file mode 100644
index d2e9644206..0000000000
--- a/web/settings/assets/inverter-6b993a71.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u,k as m,l as h,D as a,N as o,y as t,x as n,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceHttpInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(i,e=void 0){this.$emit("update:configuration",{value:i,object:e})}}},f={class:"device-http-inverter"},b={class:"small"},v=n("br",null,null,-1),w=n("br",null,null,-1),z=n("br",null,null,-1);function x(i,e,s,k,y,l){const c=u("openwb-base-heading"),d=u("openwb-base-text-input");return m(),h("div",f,[a(c,null,{default:o(()=>[t(" Einstellungen für Http Wechselrichter "),n("span",b,"(Modul: "+g(i.$options.name)+")",1)]),_:1}),a(d,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":s.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>l.updateConfiguration(r,"configuration.power_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")]),_:1},8,["model-value"]),a(d,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":s.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>l.updateConfiguration(r,"configuration.exported_path"))},{help:o(()=>[t(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),z,t(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const V=p(_,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-6d12a3f1.js b/web/settings/assets/inverter-6d12a3f1.js
new file mode 100644
index 0000000000..f6a1a55ef1
--- /dev/null
+++ b/web/settings/assets/inverter-6d12a3f1.js
@@ -0,0 +1 @@
+import{C as l}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as t,k as b,l as c,D as r,N as i,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyInverter",mixins:[l]},v={class:"device-sunnyboy-inverter"};function f(e,n,g,y,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),c("div",v,[r(s,null,{default:i(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")]),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":e.component.configuration.hybrid,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),r(d,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")]),_:1},8,["model-value"])])}const I=m(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-79c8fb55.js b/web/settings/assets/inverter-79c8fb55.js
deleted file mode 100644
index fbdab7b5bf..0000000000
--- a/web/settings/assets/inverter-79c8fb55.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as a,y as s,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolarwattInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solarwatt-inverter"},m={class:"small"};function v(e,t,b,g,w,h){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Solarwatt/My Reserve Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const y=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/inverter.vue"]]);export{y as default};
diff --git a/web/settings/assets/inverter-79d423ad.js b/web/settings/assets/inverter-79d423ad.js
new file mode 100644
index 0000000000..798faab596
--- /dev/null
+++ b/web/settings/assets/inverter-79d423ad.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as o,k as d,l as u,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(e,n,v,b,h,g){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return d(),u("div",_,[t(s,null,{default:i(()=>[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")]),_:1}),t(p,{title:"EID",required:"","model-value":e.component.configuration.eid,"onUpdate:modelValue":n[0]||(n[0]=a=>e.updateConfiguration(a,"configuration.eid"))},{help:i(()=>[r(' EID für "production" ')]),_:1},8,["model-value"])])}const B=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-7f269997.js b/web/settings/assets/inverter-7f269997.js
deleted file mode 100644
index 6a4bb635b7..0000000000
--- a/web/settings/assets/inverter-7f269997.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceLGInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-lg-inverter"},m={class:"small"};function g(e,t,b,v,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für LG ESS V1.0 Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-80468543.js b/web/settings/assets/inverter-80468543.js
deleted file mode 100644
index a6243f2f80..0000000000
--- a/web/settings/assets/inverter-80468543.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as n,k as c,l as p,D as o,N as l,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSmartMeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-smart-me-inverter"},b={class:"small"};function h(t,e,a,x,w,i){const r=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),p("div",g,[o(r,null,{default:l(()=>[m(" Einstellungen für smart-me Wechselrichter "),_("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(s,{title:"Geräte-ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>i.updateConfiguration(d,"configuration.id"))},null,8,["model-value"])])}const D=u(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-804d1c85.js b/web/settings/assets/inverter-804d1c85.js
deleted file mode 100644
index cb67c6b754..0000000000
--- a/web/settings/assets/inverter-804d1c85.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as r,k as g,l as _,D as n,N as s,y as u,x as m,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceVZLoggerInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-vzlogger-inverter"},h={class:"small"};function w(t,e,i,x,V,a){const d=r("openwb-base-heading"),p=r("openwb-base-alert"),l=r("openwb-base-number-input");return g(),_("div",b,[n(d,null,{default:s(()=>[u(" Einstellungen für VZLogger Wechselrichter "),m("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(p,{subtype:"info"},{default:s(()=>[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')]),_:1}),n(l,{title:"Zeile der Leistung",required:"",min:0,"model-value":i.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),n(l,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":i.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"])])}const B=c(v,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-80adcee2.js b/web/settings/assets/inverter-80adcee2.js
new file mode 100644
index 0000000000..6e690bfc45
--- /dev/null
+++ b/web/settings/assets/inverter-80adcee2.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(e,o,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return d(),m("div",_,[t(r,null,{default:l(()=>[u(" Einstellungen für SolarEdge Wechselrichter ")]),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-81caf0c3.js b/web/settings/assets/inverter-81caf0c3.js
deleted file mode 100644
index 8533af870b..0000000000
--- a/web/settings/assets/inverter-81caf0c3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSmaWebboxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},m={class:"device-sma-webbox-inverter"},b={class:"small"};function f(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",m,[o(r,null,{default:s(()=>[a(" Einstellungen für SMA Webbox Wechselrichter "),u("span",b,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-85d76c41.js b/web/settings/assets/inverter-85d76c41.js
deleted file mode 100644
index 405a20f903..0000000000
--- a/web/settings/assets/inverter-85d76c41.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as u,l as d,D as o,N as s,y as a,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSunwaysInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sunways-inverter"},m={class:"small"};function v(e,n,b,w,g,h){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return u(),d("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sunways Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-89ab9892.js b/web/settings/assets/inverter-89ab9892.js
new file mode 100644
index 0000000000..dcb0218012
--- /dev/null
+++ b/web/settings/assets/inverter-89ab9892.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as o,k as p,l as c,D as n,N as l,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(e,t,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),c("div",_,[n(r,null,{default:l(()=>[d(" Einstellungen für smart-me Wechselrichter ")]),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":e.component.configuration.id,"onUpdate:modelValue":t[0]||(t[0]=s=>e.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-8bd91bf1.js b/web/settings/assets/inverter-8bd91bf1.js
deleted file mode 100644
index c8e1b39e19..0000000000
--- a/web/settings/assets/inverter-8bd91bf1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l as p,D as o,N as s,y as i,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSiemensInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},m={class:"device-siemens-inverter"},f={class:"small"};function v(e,n,b,g,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",m,[o(a,null,{default:s(()=>[i(" Einstellungen für Siemens Wechselrichter "),u("span",f,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-9046aa5a.js b/web/settings/assets/inverter-9046aa5a.js
deleted file mode 100644
index d839ccc258..0000000000
--- a/web/settings/assets/inverter-9046aa5a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as u,l as d,D as o,N as s,y as r,x as p,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFroniusInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fronius-inverter"},m={class:"small"};function v(e,n,b,g,h,w){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return u(),d("div",f,[o(i,null,{default:s(()=>[r(" Einstellungen für Fronius Wechselrichter "),p("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-927da016.js b/web/settings/assets/inverter-927da016.js
deleted file mode 100644
index 1eea9ade80..0000000000
--- a/web/settings/assets/inverter-927da016.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l as p,D as o,N as s,y as i,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBenningInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-benning-inverter"},m={class:"small"};function b(e,n,g,v,h,w){const a=t("openwb-base-heading"),r=t("openwb-base-alert");return d(),p("div",f,[o(a,null,{default:s(()=>[i(" Einstellungen für Benning Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[i(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-929c3f78.js b/web/settings/assets/inverter-929c3f78.js
deleted file mode 100644
index d547ac3f70..0000000000
--- a/web/settings/assets/inverter-929c3f78.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as l,l as c,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceSolarEdgeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-solaredge-inverter"},v={class:"small"};function h(n,e,a,w,x,r){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return l(),c("div",b,[t(i,null,{default:p(()=>[m(" Einstellungen für SolarEdge Wechselrichter "),_("span",v,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(s,{title:"SolarEdge-Geräte-ID",required:"","model-value":a.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>r.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const C=u(g,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{C as default};
diff --git a/web/settings/assets/inverter-93d278b2.js b/web/settings/assets/inverter-93d278b2.js
new file mode 100644
index 0000000000..36a2b737ed
--- /dev/null
+++ b/web/settings/assets/inverter-93d278b2.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as o,k as l,l as c,D as n,N as u,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(e,t,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),c("div",_,[n(a,null,{default:u(()=>[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")]),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":e.component.configuration.variant_steca,"onUpdate:modelValue":t[0]||(t[0]=s=>e.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const B=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-94706045.js b/web/settings/assets/inverter-94706045.js
new file mode 100644
index 0000000000..5002ed9a8a
--- /dev/null
+++ b/web/settings/assets/inverter-94706045.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as p,l,D as n,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[a]},d={class:"device-youless-inverter"};function f(e,o,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:c(()=>[m(" Einstellungen für Youless LS120 Wechselrichter ")]),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":e.component.configuration.source_s0,"onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=u(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-97406357.js b/web/settings/assets/inverter-97406357.js
new file mode 100644
index 0000000000..9b84206b3e
--- /dev/null
+++ b/web/settings/assets/inverter-97406357.js
@@ -0,0 +1 @@
+import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as e,k as u,l as d,D as n,N as r,y as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[c]},f={class:"device-smahm-inverter"};function b(o,t,h,v,g,w){const s=e("openwb-base-heading"),a=e("openwb-base-alert"),m=e("openwb-base-number-input");return u(),d("div",f,[n(s,null,{default:r(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter ")]),_:1}),n(a,{subtype:"info"},{default:r(()=>[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')]),_:1}),n(m,{title:"Seriennummer",required:"","model-value":o.component.configuration.serials,"onUpdate:modelValue":t[0]||(t[0]=p=>o.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-9c9c65d2.js b/web/settings/assets/inverter-9c9c65d2.js
deleted file mode 100644
index 924fe7508d..0000000000
--- a/web/settings/assets/inverter-9c9c65d2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as l,l as d,D as o,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceQCelllsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-qcells-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für QCells ESS Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-9df7c4d9.js b/web/settings/assets/inverter-9df7c4d9.js
deleted file mode 100644
index 27e863814f..0000000000
--- a/web/settings/assets/inverter-9df7c4d9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceBatterXInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-batterx-inverter"},m={class:"small"};function b(e,t,v,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für BatterX Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const $=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-a005080e.js b/web/settings/assets/inverter-a005080e.js
new file mode 100644
index 0000000000..004c21852f
--- /dev/null
+++ b/web/settings/assets/inverter-a005080e.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as n,k as m,l as c,D as r,N as i,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(e,t,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>[a(" Einstellungen für Studer Wechselrichter ")]),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":e.component.configuration.vc_type,required:"","onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":e.component.configuration.vc_count,"onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const $=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-a1fe6824.js b/web/settings/assets/inverter-a1fe6824.js
deleted file mode 100644
index 073bb6c7c8..0000000000
--- a/web/settings/assets/inverter-a1fe6824.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as p,l as m,D as n,N as a,y as i,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceSolarViewInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-solar-view-inverter"},h={class:"small"};function b(t,e,r,w,x,s){const d=o("openwb-base-heading"),c=o("openwb-base-text-input");return p(),m("div",g,[n(d,null,{default:a(()=>[i(" Einstellungen für SolarView Wechselrichter "),_("span",h,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),n(c,{title:"Kommando für die Abfrage",required:"","model-value":r.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=l=>s.updateConfiguration(l,"configuration.command"))},{help:a(()=>[i(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const k=u(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-a6b17edd.js b/web/settings/assets/inverter-a6b17edd.js
deleted file mode 100644
index 387b81e555..0000000000
--- a/web/settings/assets/inverter-a6b17edd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as t,k as c,l as p,D as n,N as s,y as r,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DevicePowerdogInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-powerdog-inverter"},m={class:"small"};function g(e,o,v,b,w,h){const a=t("openwb-base-heading"),i=t("openwb-base-alert");return c(),p("div",f,[n(a,null,{default:s(()=>[r(" Einstellungen für Powerdog Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(i,{subtype:"info"},{default:s(()=>[r(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-a9cee12b.js b/web/settings/assets/inverter-a9cee12b.js
new file mode 100644
index 0000000000..907a75911a
--- /dev/null
+++ b/web/settings/assets/inverter-a9cee12b.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as r,k as m,l as g,D as o,N as l,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function f(e,n,v,b,w,h){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[o(s,null,{default:l(()=>[a(" Einstellungen für VZLogger Wechselrichter ")]),_:1}),o(p,{subtype:"info"},{default:l(()=>[a(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')]),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":e.component.configuration.line_power,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":e.component.configuration.line_exported,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const k=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-ae598de4.js b/web/settings/assets/inverter-ae598de4.js
deleted file mode 100644
index ac73c0a448..0000000000
--- a/web/settings/assets/inverter-ae598de4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as p,l as d,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceFemsInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-fems-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return p(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-b0ea296b.js b/web/settings/assets/inverter-b0ea296b.js
new file mode 100644
index 0000000000..665cfa0dc2
--- /dev/null
+++ b/web/settings/assets/inverter-b0ea296b.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as u,l,D as n,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[s]},_={class:"device-kostal-piko-inverter"};function f(e,o,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:c(()=>[m(" Einstellungen für Kostal Piko Wechselrichter ")]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":e.component.configuration.bat_configured,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.bat_configured"))},null,8,["model-value"])])}const E=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-b3e8ecb5.js b/web/settings/assets/inverter-b3e8ecb5.js
deleted file mode 100644
index 4078b9ff57..0000000000
--- a/web/settings/assets/inverter-b3e8ecb5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as c,l as d,D as s,N as o,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceAlphaessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-alphaess-inverter"},m={class:"small"};function h(e,t,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return c(),d("div",f,[s(i,null,{default:o(()=>[a(" Einstellungen für Alpha ESS Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),s(r,{subtype:"info"},{default:o(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-b47b017e.js b/web/settings/assets/inverter-b47b017e.js
new file mode 100644
index 0000000000..a8d640cbbc
--- /dev/null
+++ b/web/settings/assets/inverter-b47b017e.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as n,k as d,l as u,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[m]},_={class:"device-mtec-inverter"};function b(e,o,f,v,g,h){const s=n("openwb-base-heading"),a=n("openwb-base-number-input");return d(),u("div",_,[t(s,null,{default:i(()=>[r(" Einstellungen für M-Tec Wechselrichter ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const I=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-b4a67c1c.js b/web/settings/assets/inverter-b4a67c1c.js
deleted file mode 100644
index 2c6ac77bf6..0000000000
--- a/web/settings/assets/inverter-b4a67c1c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as l,k as m,l as g,D as i,N as r,y as t,x as u,z as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceJsonInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"device-json-inverter"},w={class:"small"},b=u("br",null,null,-1);function v(n,e,s,j,x,a){const c=l("openwb-base-heading"),d=l("openwb-base-text-input");return m(),g("div",h,[i(c,null,{default:r(()=>[t(" Einstellungen für JSON Wechselrichter "),u("span",w,"(Modul: "+_(n.$options.name)+")",1)]),_:1}),i(d,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":s.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>a.updateConfiguration(o,"configuration.jq_power"))},{help:r(()=>[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),b,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")]),_:1},8,["model-value"]),i(d,{title:"Abfrage für Zählerstand",subtype:"text","model-value":s.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>a.updateConfiguration(o,"configuration.jq_exported"))},{help:r(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const k=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-b9d7f198.js b/web/settings/assets/inverter-b9d7f198.js
deleted file mode 100644
index 3b3cce44bb..0000000000
--- a/web/settings/assets/inverter-b9d7f198.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSofarInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-sofar-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Sofar Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-bb47d837.js b/web/settings/assets/inverter-bb47d837.js
new file mode 100644
index 0000000000..ac61512df7
--- /dev/null
+++ b/web/settings/assets/inverter-bb47d837.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as n,k as p,l as u,D as t,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[s]},_={class:"device-huawei-smart-logger-inverter"};function g(e,o,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-bea955ac.js b/web/settings/assets/inverter-bea955ac.js
deleted file mode 100644
index ce02640e32..0000000000
--- a/web/settings/assets/inverter-bea955ac.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as n,k as c,l as d,D as o,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceYoulessInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-youless-inverter"},v={class:"small"};function h(t,e,s,x,w,a){const u=n("openwb-base-heading"),i=n("openwb-base-button-group-input");return c(),d("div",g,[o(u,null,{default:p(()=>[_(" Einstellungen für Youless LS120 Wechselrichter "),f("span",v,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":s.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>a.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const B=l(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-beac0910.js b/web/settings/assets/inverter-beac0910.js
new file mode 100644
index 0000000000..5fe429932f
--- /dev/null
+++ b/web/settings/assets/inverter-beac0910.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[a]},l={class:"device-fox_ess-inverter"};function f(e,o,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",l,[t(s,null,{default:d(()=>[c(" Einstellungen für FoxEss Wechselrichter ")]),_:1}),t(i,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-bff31af2.js b/web/settings/assets/inverter-bff31af2.js
deleted file mode 100644
index 126b5a9097..0000000000
--- a/web/settings/assets/inverter-bff31af2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as t,k as l,l as m,D as o,N as i,y as s,x as _,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceSigenergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},b={class:"device-sigenergy-inverter"},v={class:"small"};function h(n,e,r,y,w,a){const d=t("openwb-base-heading"),u=t("openwb-base-number-input");return l(),m("div",b,[o(d,null,{default:i(()=>[s(" Einstellungen für Sigenergy Wechselrichter "),_("span",v,"(Modul: "+g(n.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":r.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>a.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const I=p(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-c5fc8299.js b/web/settings/assets/inverter-c5fc8299.js
deleted file mode 100644
index 27b9e72e8c..0000000000
--- a/web/settings/assets/inverter-c5fc8299.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as o,k as m,l as _,D as r,N as i,y as n,x as s,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceDiscovergyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-discovergy-inverter"},b={class:"small"},h=s("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function y(t,e,a,w,D,d){const u=o("openwb-base-heading"),c=o("openwb-base-text-input");return m(),_("div",g,[r(u,null,{default:i(()=>[n(" Einstellungen für Discovergy Wechselrichter "),s("span",b,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),r(c,{title:"Meter-ID",required:"","model-value":a.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),h,n(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=l(v,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-c861a20b.js b/web/settings/assets/inverter-c861a20b.js
new file mode 100644
index 0000000000..29b6cf6214
--- /dev/null
+++ b/web/settings/assets/inverter-c861a20b.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[p]},_={class:"device-openwb-flex-inverter"};function b(e,o,f,w,x,g){const r=t("openwb-base-heading"),a=t("openwb-base-select-input"),l=t("openwb-base-number-input");return u(),m("div",_,[i(r,null,{default:d(()=>[c(" Einstellungen für openWB-Flex Wechselrichter ")]),_:1}),i(a,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(l,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":e.component.configuration.id,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const N=s(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-cf027bb4.js b/web/settings/assets/inverter-cf027bb4.js
deleted file mode 100644
index 59d0fc9762..0000000000
--- a/web/settings/assets/inverter-cf027bb4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as l,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSolaxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-solax-inverter"},m={class:"small"};function v(e,t,b,g,h,x){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für Solax Wechselrichter "),l("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const k=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-d5bf52e5.js b/web/settings/assets/inverter-d5bf52e5.js
new file mode 100644
index 0000000000..93ad01e05e
--- /dev/null
+++ b/web/settings/assets/inverter-d5bf52e5.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as a,u as o,k as l,l as c,D as n,N as m,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(e,t,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),c("div",v,[n(i,null,{default:m(()=>[u(" Einstellungen für openWB PV-Kit Wechselrichter ")]),_:1}),n(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":t[0]||(t[0]=s=>e.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-d62075d8.js b/web/settings/assets/inverter-d62075d8.js
deleted file mode 100644
index 3f2bfacc80..0000000000
--- a/web/settings/assets/inverter-d62075d8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as i,k as f,l as _,D as r,N as s,y as n,x as o,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"DevicePowerfoxInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},g={class:"device-powerfox-inverter"},b={class:"small"},v=o("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),w=o("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1);function x(t,e,a,D,k,d){const u=i("openwb-base-heading"),c=i("openwb-base-text-input");return f(),_("div",g,[r(u,null,{default:s(()=>[n(" Einstellungen für Powerfox Wechselrichter "),o("span",b,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),r(c,{title:"ID",required:"","model-value":a.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=p=>d.updateConfiguration(p,"configuration.id"))},{help:s(()=>[n(" Um die ID herauszufinden mit dem Browser die Adresse "),v,n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),w,n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")]),_:1},8,["model-value"])])}const z=l(h,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{z as default};
diff --git a/web/settings/assets/inverter-d785d016.js b/web/settings/assets/inverter-d785d016.js
deleted file mode 100644
index 87469458b1..0000000000
--- a/web/settings/assets/inverter-d785d016.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as d,l,D as n,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPikoOldInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostal-piko-old-inverter"},m={class:"small"};function b(e,t,v,g,k,h){const i=o("openwb-base-heading"),r=o("openwb-base-alert");return d(),l("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für Kostal Piko Wechselrichter (alte Generation) "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-e0439727.js b/web/settings/assets/inverter-e0439727.js
deleted file mode 100644
index 05f042a9f7..0000000000
--- a/web/settings/assets/inverter-e0439727.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as t,k as c,l as p,D as n,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceGoodWeInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,o=void 0){this.$emit("update:configuration",{value:e,object:o})}}},f={class:"device-goodwe-inverter"},m={class:"small"};function g(e,o,b,v,h,w){const i=t("openwb-base-heading"),r=t("openwb-base-alert");return c(),p("div",f,[n(i,null,{default:s(()=>[a(" Einstellungen für GoodWe Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),n(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const k=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-e2fcc96e.js b/web/settings/assets/inverter-e2fcc96e.js
deleted file mode 100644
index 3a40d30c5b..0000000000
--- a/web/settings/assets/inverter-e2fcc96e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as o,k as l,l as c,D as t,N as p,y as m,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceSolisInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},v={class:"device-solis-inverter"},g={class:"small"};function h(n,e,i,w,x,s){const a=o("openwb-base-heading"),r=o("openwb-base-number-input");return l(),c("div",v,[t(a,null,{default:p(()=>[m(" Einstellungen für Solis Wechselrichter "),_("span",g,"(Modul: "+f(n.$options.name)+")",1)]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":i.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=d=>s.updateConfiguration(d,"configuration.modbus_id"))},null,8,["model-value"])])}const D=u(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-e39deae7.js b/web/settings/assets/inverter-e39deae7.js
deleted file mode 100644
index b1a940d83f..0000000000
--- a/web/settings/assets/inverter-e39deae7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as l,l as d,D as o,N as s,y as a,x as p,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceShellyInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-shelly-inverter"},m={class:"small"};function h(e,t,b,v,g,y){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),d("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Shelly Wechselrichter "),p("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-e52144a7.js b/web/settings/assets/inverter-e52144a7.js
deleted file mode 100644
index e3f3678260..0000000000
--- a/web/settings/assets/inverter-e52144a7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceE3dcInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-e3dc-inverter"},m={class:"small"};function b(e,t,v,g,h,w){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return d(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für E3DC Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const D=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/inverter.vue"]]);export{D as default};
diff --git a/web/settings/assets/inverter-e8d637fe.js b/web/settings/assets/inverter-e8d637fe.js
deleted file mode 100644
index 6bcacda6d5..0000000000
--- a/web/settings/assets/inverter-e8d637fe.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as n,k as l,l as m,D as o,N as i,y as a,x as _,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"DeviceMTecInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},v={class:"device-mtec-inverter"},g={class:"small"};function h(t,e,s,w,x,r){const d=n("openwb-base-heading"),u=n("openwb-base-number-input");return l(),m("div",v,[o(d,null,{default:i(()=>[a(" Einstellungen für M-Tec Wechselrichter "),_("span",g,"(Modul: "+f(t.$options.name)+")",1)]),_:1}),o(u,{title:"Modbus ID",required:"","model-value":s.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=c=>r.updateConfiguration(c,"configuration.modbus_id"))},{help:i(()=>[a(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const I=p(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-ec40e2ac.js b/web/settings/assets/inverter-ec40e2ac.js
new file mode 100644
index 0000000000..1fcc5d7f5c
--- /dev/null
+++ b/web/settings/assets/inverter-ec40e2ac.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as n,k as p,l,D as t,N as u,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[s]},_={class:"device-solarmax-inverter"};function b(e,o,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>[d(" Einstellungen für Solarmax Wechselrichter ")]),_:1}),t(i,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-ed15250f.js b/web/settings/assets/inverter-ed15250f.js
deleted file mode 100644
index 267daf2fe0..0000000000
--- a/web/settings/assets/inverter-ed15250f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as o,k as l,l as d,D as n,N as p,y as _,x as f,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"DeviceKostalStecaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-kostal-steca-inverter"},g={class:"small"};function k(t,e,a,h,x,s){const i=o("openwb-base-heading"),r=o("openwb-base-button-group-input");return l(),d("div",b,[n(i,null,{default:p(()=>[_(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter "),f("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),n(r,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":a.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=u=>s.updateConfiguration(u,"configuration.variant_steca"))},null,8,["model-value"])])}const C=c(v,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{C as default};
diff --git a/web/settings/assets/inverter-f329a5ad.js b/web/settings/assets/inverter-f329a5ad.js
deleted file mode 100644
index b5df1be37d..0000000000
--- a/web/settings/assets/inverter-f329a5ad.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as d,l as p,D as o,N as a,y as s,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceVartaInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-varta-inverter"},m={class:"small"};function v(e,t,b,g,h,w){const r=n("openwb-base-heading"),i=n("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:a(()=>[s(" Einstellungen für Varta Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:a(()=>[s(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const V=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-f3b65772.js b/web/settings/assets/inverter-f3b65772.js
new file mode 100644
index 0000000000..49deec1faa
--- /dev/null
+++ b/web/settings/assets/inverter-f3b65772.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as n,k as m,l as u,D as r,N as i,y as e,x as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceDiscovergyInverter",mixins:[d]},v={class:"device-discovergy-inverter"},f=l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function g(o,t,b,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return m(),u("div",v,[r(s,null,{default:i(()=>[e(" Einstellungen für Discovergy Wechselrichter ")]),_:1}),r(a,{title:"Meter-ID",required:"","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":t[0]||(t[0]=p=>o.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[e(" Um die ID herauszufinden mit dem Browser die Adresse "),f,e(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const z=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{z as default};
diff --git a/web/settings/assets/inverter-f504e343.js b/web/settings/assets/inverter-f504e343.js
new file mode 100644
index 0000000000..32cb474f2f
--- /dev/null
+++ b/web/settings/assets/inverter-f504e343.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as a,k as p,l as m,D as r,N as i,y as t,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceJsonInverter",mixins:[d]},w={class:"device-json-inverter"},_=c("br",null,null,-1);function f(e,n,b,h,v,x){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",w,[r(l,null,{default:i(()=>[t(" Einstellungen für JSON Wechselrichter ")]),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":e.component.configuration.jq_power,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),_,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")]),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":e.component.configuration.jq_exported,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const N=u(g,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-f62aa161.js b/web/settings/assets/inverter-f62aa161.js
deleted file mode 100644
index 1f75c926e4..0000000000
--- a/web/settings/assets/inverter-f62aa161.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as n,k as p,l as d,D as o,N as c,y as v,x as _,z as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"DeviceOpenwbPvkitInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},b={class:"device-openwb-pvkit-inverter"},g={class:"small"};function w(t,e,i,h,x,a){const s=n("openwb-base-heading"),r=n("openwb-base-select-input");return p(),d("div",b,[o(s,null,{default:c(()=>[v(" Einstellungen für openWB PV-Kit Wechselrichter "),_("span",g,"(Modul: "+m(t.$options.name)+")",1)]),_:1}),o(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":i.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=l=>a.updateConfiguration(l,"configuration.version"))},null,8,["model-value"])])}const B=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-f6495d7c.js b/web/settings/assets/inverter-f6495d7c.js
deleted file mode 100644
index 66a81c2f2a..0000000000
--- a/web/settings/assets/inverter-f6495d7c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as n,k as l,l as p,D as o,N as s,y as a,x as d,z as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceKostalPlenticoreInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},f={class:"device-kostalplenticore-inverter"},m={class:"small"};function b(e,t,v,g,h,k){const i=n("openwb-base-heading"),r=n("openwb-base-alert");return l(),p("div",f,[o(i,null,{default:s(()=>[a(" Einstellungen für Kostal Plenticore Wechselrichter "),d("span",m,"(Modul: "+u(e.$options.name)+")",1)]),_:1}),o(r,{subtype:"info"},{default:s(()=>[a(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const x=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/inverter.vue"]]);export{x as default};
diff --git a/web/settings/assets/inverter-f857c467.js b/web/settings/assets/inverter-f857c467.js
new file mode 100644
index 0000000000..313c5a5af9
--- /dev/null
+++ b/web/settings/assets/inverter-f857c467.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as n,k as c,l as d,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarViewInverter",mixins:[p]},u={class:"device-solar-view-inverter"};function f(e,o,v,g,w,b){const a=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),d("div",u,[t(a,null,{default:i(()=>[r(" Einstellungen für SolarView Wechselrichter ")]),_:1}),t(s,{title:"Kommando für die Abfrage",required:"","model-value":e.component.configuration.command,"onUpdate:modelValue":o[0]||(o[0]=m=>e.updateConfiguration(m,"configuration.command"))},{help:i(()=>[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const N=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-fab7ed1c.js b/web/settings/assets/inverter-fab7ed1c.js
new file mode 100644
index 0000000000..4ba99e003f
--- /dev/null
+++ b/web/settings/assets/inverter-fab7ed1c.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as d,D as t,N as u,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceDeyeInverter",mixins:[a]},_={class:"device-deye-inverter"};function b(e,o,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>[c(" Einstellungen für Deye Wechselrichter ")]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-fcb34a03.js b/web/settings/assets/inverter-fcb34a03.js
deleted file mode 100644
index fcdb8a6f04..0000000000
--- a/web/settings/assets/inverter-fcb34a03.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as t,k as d,l as p,D as o,N as s,y as a,x as u,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"DeviceSonnenbatterieInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},f={class:"device-sonnenbatterie-inverter"},m={class:"small"};function b(e,n,v,g,h,w){const r=t("openwb-base-heading"),i=t("openwb-base-alert");return d(),p("div",f,[o(r,null,{default:s(()=>[a(" Einstellungen für SonnenBatterie Wechselrichter "),u("span",m,"(Modul: "+l(e.$options.name)+")",1)]),_:1}),o(i,{subtype:"info"},{default:s(()=>[a(" Diese Komponente erfordert keine Einstellungen. ")]),_:1})])}const B=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter_secondary-603793ab.js b/web/settings/assets/inverter_secondary-603793ab.js
deleted file mode 100644
index 813c70c593..0000000000
--- a/web/settings/assets/inverter_secondary-603793ab.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,u as i,k as _,l as f,D as s,N as d,y as r,x as o,z as a}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const g={name:"DeviceFroniusSecondaryInverter",emits:["update:configuration"],props:{configuration:{type:Object,required:!0},deviceId:{default:void 0},componentId:{required:!0}},computed:{powerFlowUrl:{get(){return`http://${this.deviceIpAddress}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}},deviceIpAddress:{get(){var e;return(e=this.$store.state.mqtt[`openWB/system/device/${this.deviceId}/config`])==null?void 0:e.configuration.ip_address}}},methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})}}},h={class:"device-fronius-inverter-secondary"},v={class:"small"},w=["href"],b=o("br",null,null,-1);function D(e,n,l,I,k,t){const u=i("openwb-base-heading"),c=i("openwb-base-number-input");return _(),f("div",h,[s(u,null,{default:d(()=>[r(" Einstellungen für einen sekundären Wechselrichter "),o("span",v,"(Modul: "+a(e.$options.name)+")",1)]),_:1}),s(c,{title:"ID","model-value":l.configuration.id,min:"0","onUpdate:modelValue":n[0]||(n[0]=p=>t.updateConfiguration(p,"configuration.id"))},{help:d(()=>[r(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. "),o("a",{href:t.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},a(t.powerFlowUrl),9,w),b,r(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. ')]),_:1},8,["model-value"])])}const S=m(g,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter_secondary-f8fdf5c3.js b/web/settings/assets/inverter_secondary-f8fdf5c3.js
new file mode 100644
index 0000000000..3c93a5d303
--- /dev/null
+++ b/web/settings/assets/inverter_secondary-f8fdf5c3.js
@@ -0,0 +1 @@
+import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as m,l as _,D as i,N as s,y as e,x as a,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceFroniusInverterSecondary",mixins:[c],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},w={class:"device-fronius-inverter-secondary"},h=["href"],v=a("br",null,null,-1);function D(n,r,b,k,y,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return m(),_("div",w,[i(d,null,{default:s(()=>[e(" Einstellungen für einen sekundären Wechselrichter ")]),_:1}),i(l,{title:"ID","model-value":n.component.configuration.id,min:"0",required:"","onUpdate:modelValue":r[0]||(r[0]=p=>n.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. "),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},f(o.powerFlowUrl),9,h),v,e(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. ')]),_:1},8,["model-value"])])}const V=u(g,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{V as default};
diff --git a/web/settings/assets/ripple_control_receiver-51e952e1.js b/web/settings/assets/ripple_control_receiver-51e952e1.js
deleted file mode 100644
index c7a96f99ab..0000000000
--- a/web/settings/assets/ripple_control_receiver-51e952e1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as r,k as s,l as m,D as n,N as c,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const f={name:"RippleControlReceiverDimmKit",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(a,e=void 0){this.$emit("update:configuration",{value:a,object:e})}}},b={class:"ripple-control-receiver-dimm-kit"};function v(a,e,o,g,w,i){const u=r("openwb-base-alert"),d=r("openwb-base-text-input"),l=r("openwb-base-number-input");return s(),m("div",b,[n(u,{subtype:"info"},{default:c(()=>[_(" In der aktuellen Implementierung werden Kontakt 1 und 2 des Dimm-Kits ausgewertet. Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte geschlossen sind, darf geladen werden. ")]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.rippleControlReceiver.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>i.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(l,{title:"Port",required:"","model-value":o.rippleControlReceiver.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>i.updateConfiguration(t,"configuration.port"))},null,8,["model-value"]),n(l,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.rippleControlReceiver.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=t=>i.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"])])}const x=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/dimm_kit/ripple_control_receiver.vue"]]);export{x as default};
diff --git a/web/settings/assets/ripple_control_receiver-6eba6a9a.js b/web/settings/assets/ripple_control_receiver-6eba6a9a.js
new file mode 100644
index 0000000000..560ba3acf5
--- /dev/null
+++ b/web/settings/assets/ripple_control_receiver-6eba6a9a.js
@@ -0,0 +1 @@
+import{R as s}from"./GeneralConfig-1396a845.js";import{_ as a,u as i,k as d,l as u,D as t,N as m,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"RippleControlReceiverDimmKit",mixins:[s]},f={class:"ripple-control-receiver-dimm-kit"};function b(e,o,v,g,w,C){const p=i("openwb-base-alert"),l=i("openwb-base-text-input"),r=i("openwb-base-number-input");return d(),u("div",f,[t(p,{subtype:"info"},{default:m(()=>[_(" In der aktuellen Implementierung werden Kontakt 1 und 2 des Dimm-Kits ausgewertet. Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte geschlossen sind, darf geladen werden. ")]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.rippleControlReceiver.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"","model-value":e.rippleControlReceiver.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":e.rippleControlReceiver.configuration.modbus_id,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/dimm_kit/ripple_control_receiver.vue"]]);export{y as default};
diff --git a/web/settings/assets/ripple_control_receiver-7a1236a4.js b/web/settings/assets/ripple_control_receiver-7a1236a4.js
deleted file mode 100644
index 89d98a6f7a..0000000000
--- a/web/settings/assets/ripple_control_receiver-7a1236a4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as n,u as r,k as i,l as s,D as p,N as a,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const d={name:"RippleControlReceiverGpio",emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},data(){return{}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},l={class:"ripple-control-receiver-gpio"};function _(e,t,u,f,m,v){const o=r("openwb-base-alert");return i(),s("div",l,[p(o,{subtype:"info"},{default:a(()=>[c(" Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakte offen sind, darf geladen werden. ")]),_:1})])}const h=n(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/gpio/ripple_control_receiver.vue"]]);export{h as default};
diff --git a/web/settings/assets/ripple_control_receiver-d8f4b5b9.js b/web/settings/assets/ripple_control_receiver-d8f4b5b9.js
new file mode 100644
index 0000000000..d23d06c63c
--- /dev/null
+++ b/web/settings/assets/ripple_control_receiver-d8f4b5b9.js
@@ -0,0 +1 @@
+import{R as o}from"./GeneralConfig-1396a845.js";import{_ as t,u as r,k as n,l as i,D as p,N as s,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const a={name:"RippleControlReceiverGpio",mixins:[o]},l={class:"ripple-control-receiver-gpio"};function _(d,m,f,u,v,g){const e=r("openwb-base-alert");return n(),i("div",l,[p(e,{subtype:"info"},{default:s(()=>[c(" Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakte offen sind, darf geladen werden. ")]),_:1})])}const N=t(a,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/gpio/ripple_control_receiver.vue"]]);export{N as default};
diff --git a/web/settings/assets/vehicle-023614f3.js b/web/settings/assets/vehicle-023614f3.js
new file mode 100644
index 0000000000..d894a2485f
--- /dev/null
+++ b/web/settings/assets/vehicle-023614f3.js
@@ -0,0 +1 @@
+import{V as s}from"./VehicleConfig-5050794d.js";import{_ as d,u as a,k as p,l as c,D as o,N as l,y as i,x as g}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[s]},f={class:"vehicle-soc-tronity"},b=g("br",null,null,-1);function h(e,n,v,_,C,w){const r=a("openwb-base-text-input"),u=a("openwb-base-button-group-input");return p(),c("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":e.vehicle.configuration.vehicle_id,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')]),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":e.vehicle.configuration.client_id,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')]),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":e.vehicle.configuration.client_secret,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')]),_:1},8,["model-value"]),o(u,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.vehicle.configuration.calculate_soc,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),b,i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")]),_:1},8,["model-value"])])}const N=d(m,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/assets/vehicle-060018aa.js b/web/settings/assets/vehicle-060018aa.js
deleted file mode 100644
index dc1f0b06a7..0000000000
--- a/web/settings/assets/vehicle-060018aa.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,a6 as p,a7 as g,a8 as f,u as l,k as b,l as k,D as a,N as s,y as r,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-068b063d.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";const C={name:"VehicleSocTesla",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y],methods:{updateConfiguration(e,n=void 0){this.$emit("update:configuration",{value:e,object:n})},tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=p.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=p.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const t=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",t),this.updateConfiguration({access_token:t.data.access_token,refresh_token:t.data.refresh_token,created_at:t.data.created_at,expires_in:t.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(t){console.error(t),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+t+"</pre>","danger")}}}},T={class:"vehicle-soc-tesla"},x=v("hr",null,null,-1);function U(e,n,t,B,u,i){const d=l("openwb-base-number-input"),h=l("openwb-base-heading"),_=l("openwb-base-button-input"),c=l("openwb-base-text-input");return b(),k("div",T,[a(d,{title:"Fahrzeug-ID",required:"",min:0,"model-value":t.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=o=>i.updateConfiguration(o,"configuration.tesla_ev_num"))},{help:s(()=>[r(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),a(h,null,{default:s(()=>[r("Token abrufen oder eingeben")]),_:1}),a(_,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:i.tesla_login_window},{help:s(()=>[r(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),a(c,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:u.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=o=>u.page_not_found_url=o)},{help:s(()=>[r(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),a(_,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:u.page_not_found_url===null,onButtonClicked:i.tesla_login},{help:s(()=>[r(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),x,a(c,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=o=>i.updateConfiguration(o,"configuration.token.access_token"))},null,8,["model-value"]),a(c,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=o=>i.updateConfiguration(o,"configuration.token.refresh_token"))},null,8,["model-value"]),a(d,{title:"Erstellt um",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=o=>i.updateConfiguration(o,"configuration.token.created_at"))},{help:s(()=>[r(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),a(d,{title:"Ungültig in",unit:"s",required:"","model-value":t.vehicle.configuration.token?t.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=o=>i.updateConfiguration(o,"configuration.token.expires_in"))},{help:s(()=>[r(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const N=m(C,[["render",U],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/assets/vehicle-08379fee.js b/web/settings/assets/vehicle-08379fee.js
new file mode 100644
index 0000000000..cc12c9c644
--- /dev/null
+++ b/web/settings/assets/vehicle-08379fee.js
@@ -0,0 +1 @@
+import{V as a}from"./VehicleConfig-5050794d.js";import{_ as u,u as l,k as p,l as s,D as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default};
diff --git a/web/settings/assets/vehicle-1e7f87e2.js b/web/settings/assets/vehicle-1e7f87e2.js
deleted file mode 100644
index 3b19473797..0000000000
--- a/web/settings/assets/vehicle-1e7f87e2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as s,k as m,l as p,D as r,N as a,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"VehicleSocBmw",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},v={class:"vehicle-soc-bmw"};function f(d,e,n,g,_,o){const i=s("openwb-base-text-input");return m(),p("div",v,[r(i,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},{help:a(()=>[u(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),r(i,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>[u(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),r(i,{title:"VIN",required:"","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.vin"))},{help:a(()=>[u(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const w=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{w as default};
diff --git a/web/settings/assets/vehicle-29ff37c0.js b/web/settings/assets/vehicle-29ff37c0.js
new file mode 100644
index 0000000000..2284b492c1
--- /dev/null
+++ b/web/settings/assets/vehicle-29ff37c0.js
@@ -0,0 +1 @@
+import{_ as m,a6 as _,a7 as g,a8 as f,u as r,k as b,l as k,D as i,N as a,y as s,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-b0e5e618.js";import{V as C}from"./VehicleConfig-5050794d.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y,C],methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=_.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=_.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+o+"</pre>","danger")}}}},U={class:"vehicle-soc-tesla"},B=v("hr",null,null,-1);function V(e,n,o,z,l,p){const u=r("openwb-base-number-input"),h=r("openwb-base-heading"),c=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",U,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),i(h,null,{default:a(()=>[s("Token abrufen oder eingeben")]),_:1}),i(c,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),i(d,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t)},{help:a(()=>[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),i(c,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),B,i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const x=m(T,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{x as default};
diff --git a/web/settings/assets/vehicle-2f9b7b98.js b/web/settings/assets/vehicle-2f9b7b98.js
new file mode 100644
index 0000000000..acda1d2ec4
--- /dev/null
+++ b/web/settings/assets/vehicle-2f9b7b98.js
@@ -0,0 +1 @@
+import{V as s}from"./VehicleConfig-5050794d.js";import{_ as l,u,k as p,l as d,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocBmw",mixins:[s]},v={class:"vehicle-soc-bmw"};function f(e,o,c,g,w,h){const i=u("openwb-base-text-input");return p(),d("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-3a34ea9e.js b/web/settings/assets/vehicle-3a34ea9e.js
new file mode 100644
index 0000000000..4b3b0834bb
--- /dev/null
+++ b/web/settings/assets/vehicle-3a34ea9e.js
@@ -0,0 +1 @@
+import{V as s}from"./VehicleConfig-5050794d.js";import{_ as l,u,k as p,l as d,D as i,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmarteq",mixins:[s]},v={class:"vehicle-soc-smarteq"};function f(e,o,c,g,h,_){const t=u("openwb-base-text-input");return p(),d("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-4452f15b.js b/web/settings/assets/vehicle-4452f15b.js
deleted file mode 100644
index f6bc1ea1d9..0000000000
--- a/web/settings/assets/vehicle-4452f15b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as d,k as m,l as b,D as a,N as i,y as n,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"VehicleSocBmw-bimmer_connected",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},g={class:"vehicle-soc-bmwbc"},f=s("br",null,null,-1),v=s("br",null,null,-1);function h(l,e,o,w,B,u){const r=d("openwb-base-text-input"),c=d("openwb-base-button-group-input");return m(),b("div",g,[a(r,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>u.updateConfiguration(t,"configuration.user_id"))},{help:i(()=>[n(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),a(r,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>u.updateConfiguration(t,"configuration.password"))},{help:i(()=>[n(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),a(r,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=t=>u.updateConfiguration(t,"configuration.vin"))},{help:i(()=>[n(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),a(c,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>u.updateConfiguration(t,"configuration.calculate_soc"))},{help:i(()=>[n(" Berechnet den Ladestand (SoC) während der Ladung. "),f,n(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),v]),_:1},8,["model-value"])])}const C=p(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{C as default};
diff --git a/web/settings/assets/vehicle-47636774.js b/web/settings/assets/vehicle-47636774.js
deleted file mode 100644
index 50beb9af24..0000000000
--- a/web/settings/assets/vehicle-47636774.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as s,k as m,l as p,D as i,N as a,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"VehicleSocSmarteq",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},v={class:"vehicle-soc-smarteq"};function f(d,e,n,g,_,o){const r=s("openwb-base-text-input");return m(),p("div",v,[i(r,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},{help:a(()=>[u(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),i(r,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>[u(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),i(r,{title:"VIN",required:"","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.vin"))},{help:a(()=>[u(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const w=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{w as default};
diff --git a/web/settings/assets/vehicle-4ca53182.js b/web/settings/assets/vehicle-4ca53182.js
deleted file mode 100644
index c6d9a9ca37..0000000000
--- a/web/settings/assets/vehicle-4ca53182.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as s,k as p,l as m,D as r,N as a,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"VehicleSocKia",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},v={class:"vehicle-soc-kia"};function f(d,e,t,g,_,i){const o=s("openwb-base-text-input");return p(),m("div",v,[r(o,{title:"Benutzername",required:"",subtype:"user","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>i.updateConfiguration(n,"configuration.user_id"))},{help:a(()=>[u(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),r(o,{title:"Kennwort",required:"",subtype:"password","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>i.updateConfiguration(n,"configuration.password"))},{help:a(()=>[u(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),r(o,{title:"PIN",required:"",subtype:"password","model-value":t.vehicle.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>i.updateConfiguration(n,"configuration.pin"))},{help:a(()=>[u(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),r(o,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>i.updateConfiguration(n,"configuration.vin"))},{help:a(()=>[u(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const w=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{w as default};
diff --git a/web/settings/assets/vehicle-5ad6c2de.js b/web/settings/assets/vehicle-5ad6c2de.js
deleted file mode 100644
index b47763e1f4..0000000000
--- a/web/settings/assets/vehicle-5ad6c2de.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as s,k as c,l as p,D as i,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"VehicleSocSkodaconnect",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},v={class:"vehicle-soc-skodaconnect"};function f(d,e,t,g,_,o){const a=s("openwb-base-text-input");return c(),p("div",v,[i(a,{title:"Benutzername",required:"",subtype:"user","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[u(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),i(a,{title:"Kennwort",required:"",subtype:"password","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>[u(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[u(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const w=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{w as default};
diff --git a/web/settings/assets/vehicle-5f51066d.js b/web/settings/assets/vehicle-5f51066d.js
new file mode 100644
index 0000000000..ed1a3b0198
--- /dev/null
+++ b/web/settings/assets/vehicle-5f51066d.js
@@ -0,0 +1 @@
+import{V as a}from"./VehicleConfig-5050794d.js";import{_ as d,u as l,k as u,l as p,D as n,N as r,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocOVMS",mixins:[a]},v={class:"vehicle-soc-ovms"};function c(e,o,f,h,g,V){const i=l("openwb-base-text-input");return u(),p("div",v,[n(i,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.user_id"))},{help:r(()=>[s(" Der Benutzername für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")]),_:1},8,["model-value"]),n(i,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},{help:r(()=>[s(" Das Passwort für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")]),_:1},8,["model-value"]),n(i,{title:"Vehicle Id",required:"","model-value":e.vehicle.configuration.vehicleId,"onUpdate:modelValue":o[2]||(o[2]=t=>e.updateConfiguration(t,"configuration.vehicleId"))},{help:r(()=>[s(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")]),_:1},8,["model-value"])])}const D=d(m,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{D as default};
diff --git a/web/settings/assets/vehicle-63ef87a5.js b/web/settings/assets/vehicle-63ef87a5.js
deleted file mode 100644
index 5b3be55a3b..0000000000
--- a/web/settings/assets/vehicle-63ef87a5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as l,u as s,k as p,l as c,D as r,N as a,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"VehicleSocVwid",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},v={class:"vehicle-soc-vwid"};function f(d,e,n,g,_,o){const i=s("openwb-base-text-input");return p(),c("div",v,[r(i,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},{help:a(()=>[u(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),r(i,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>[u(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),r(i,{title:"VIN",required:"","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.vin"))},{help:a(()=>[u(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const b=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{b as default};
diff --git a/web/settings/assets/vehicle-65e40931.js b/web/settings/assets/vehicle-65e40931.js
new file mode 100644
index 0000000000..8c6bbc38d2
--- /dev/null
+++ b/web/settings/assets/vehicle-65e40931.js
@@ -0,0 +1 @@
+import{V as r}from"./VehicleConfig-5050794d.js";import{_ as l,u as s,k as a,l as u,D as i,N as p,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},c={class:"vehicle-soc-smart-hello"};function f(e,o,v,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",c,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":e.vehicle.configuration.VIN,"onUpdate:modelValue":o[2]||(o[2]=t=>e.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")]),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-6605520f.js b/web/settings/assets/vehicle-6605520f.js
deleted file mode 100644
index 1c921ca70a..0000000000
--- a/web/settings/assets/vehicle-6605520f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as c,u as d,k as p,l as g,D as u,N as a,y as n,x as f}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const b={name:"VehicleSocTronity",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},_={class:"vehicle-soc-tronity"},m=f("br",null,null,-1);function h(r,e,i,v,C,o){const l=d("openwb-base-text-input"),s=d("openwb-base-button-group-input");return p(),g("div",_,[u(l,{title:"Vehicle ID",subtype:"text",required:"","model-value":i.vehicle.configuration.vehicle_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.vehicle_id"))},{help:a(()=>[n(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')]),_:1},8,["model-value"]),u(l,{title:"Client ID",subtype:"text",required:"","model-value":i.vehicle.configuration.client_id,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.client_id"))},{help:a(()=>[n(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')]),_:1},8,["model-value"]),u(l,{title:"Client Secret",subtype:"password",required:"","model-value":i.vehicle.configuration.client_secret,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.client_secret"))},{help:a(()=>[n(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')]),_:1},8,["model-value"]),u(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>o.updateConfiguration(t,"configuration.calculate_soc"))},{help:a(()=>[n(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),m,n(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")]),_:1},8,["model-value"])])}const V=c(b,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{V as default};
diff --git a/web/settings/assets/vehicle-836328f6.js b/web/settings/assets/vehicle-836328f6.js
deleted file mode 100644
index 25d78453d2..0000000000
--- a/web/settings/assets/vehicle-836328f6.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as r,u as i,k as s,l as a,D as c,N as u,y as n,x as d}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"VehicleSocPSA",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},l={class:"vehicle-soc-psa"},h=d("br",null,null,-1);function _(e,t,f,m,b,g){const o=i("openwb-base-alert");return s(),a("div",l,[c(o,{subtype:"danger"},{default:u(()=>[n(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),h,n(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")]),_:1})])}const B=r(p,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{B as default};
diff --git a/web/settings/assets/vehicle-891d5eff.js b/web/settings/assets/vehicle-891d5eff.js
deleted file mode 100644
index 4ccf62e199..0000000000
--- a/web/settings/assets/vehicle-891d5eff.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as b,u as r,k as m,l as h,D as i,N as o,y as t,z as g,x as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const v={name:"VehicleSocMercedesEq",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{updateConfiguration(s,e=void 0){this.$emit("update:configuration",{value:s,object:e})},login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var s=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");s.focus()}}},f={class:"vehicle-soc-mercedeseq"},w=u("br",null,null,-1),k=u("br",null,null,-1),y=u("br",null,null,-1);function C(s,e,a,x,D,n){const c=r("openwb-base-text-input"),d=r("openwb-base-copy-to-clipboard"),p=r("openwb-base-alert"),_=r("openwb-base-button-input");return m(),h("div",f,[i(c,{title:"Client-ID",required:"",subtype:"user","model-value":a.vehicle.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=l=>n.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),i(c,{title:"Client Secret",required:"",subtype:"password","model-value":a.vehicle.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=l=>n.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),i(c,{title:"VIN",required:"","model-value":a.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>n.updateConfiguration(l,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),i(p,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),w,t(" Die Callback-URL für die Anmeldung lautet:"),k,i(d,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(g(n.callback_url),1)]),_:1})]),_:1}),i(_,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!n.input_complete,onButtonClicked:n.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),y]),_:1},8,["disabled","onButtonClicked"])])}const V=b(v,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{V as default};
diff --git a/web/settings/assets/vehicle-8ec5d670.js b/web/settings/assets/vehicle-8ec5d670.js
new file mode 100644
index 0000000000..e73f92ec2e
--- /dev/null
+++ b/web/settings/assets/vehicle-8ec5d670.js
@@ -0,0 +1 @@
+import{V as _}from"./VehicleConfig-5050794d.js";import{_ as m,u as s,k as b,l as h,D as i,N as o,y as t,z as g,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const v={name:"VehicleSocMercedesEq",mixins:[_],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var e=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()}}},f={class:"vehicle-soc-mercedeseq"},w=c("br",null,null,-1),k=c("br",null,null,-1),C=c("br",null,null,-1);function y(e,n,V,D,B,r){const a=s("openwb-base-text-input"),u=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert"),p=s("openwb-base-button-input");return b(),h("div",f,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":e.vehicle.configuration.client_id,"onUpdate:modelValue":n[0]||(n[0]=l=>e.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":e.vehicle.configuration.client_secret,"onUpdate:modelValue":n[1]||(n[1]=l=>e.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":n[2]||(n[2]=l=>e.updateConfiguration(l,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),i(d,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),w,t(" Die Callback-URL für die Anmeldung lautet:"),k,i(u,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(g(r.callback_url),1)]),_:1})]),_:1}),i(p,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),C]),_:1},8,["disabled","onButtonClicked"])])}const L=m(v,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{L as default};
diff --git a/web/settings/assets/vehicle-951b0c53.js b/web/settings/assets/vehicle-951b0c53.js
deleted file mode 100644
index cc7a2f3bde..0000000000
--- a/web/settings/assets/vehicle-951b0c53.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as s,k as c,l as m,D as u,N as r,y as i}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"VehicleSocRenault",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(l,e=void 0){this.$emit("update:configuration",{value:l,object:e})}}},v={class:"vehicle-soc-renault"};function f(l,e,t,g,h,o){const a=s("openwb-base-text-input");return c(),m("div",v,[u(a,{title:"Benutzername",required:"",subtype:"user","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[i(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),u(a,{title:"Kennwort",required:"",subtype:"password","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>[i(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),u(a,{title:"Land",required:"","model-value":t.vehicle.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.country"))},{help:r(()=>[i(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),u(a,{title:"VIN","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[i(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const w=d(p,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{w as default};
diff --git a/web/settings/assets/vehicle-98ffa49f.js b/web/settings/assets/vehicle-98ffa49f.js
new file mode 100644
index 0000000000..b83418903e
--- /dev/null
+++ b/web/settings/assets/vehicle-98ffa49f.js
@@ -0,0 +1 @@
+import{V as s}from"./VehicleConfig-5050794d.js";import{_ as l,u as d,k as u,l as p,D as i,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[s]},c={class:"vehicle-soc-skodaconnect"};function v(e,o,f,g,h,_){const t=d("openwb-base-text-input");return u(),p("div",c,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const $=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-9dbb1f9d.js b/web/settings/assets/vehicle-9dbb1f9d.js
new file mode 100644
index 0000000000..a1a9e8609f
--- /dev/null
+++ b/web/settings/assets/vehicle-9dbb1f9d.js
@@ -0,0 +1 @@
+import{V as t}from"./VehicleConfig-5050794d.js";import{_ as n,u as s,k as i,l as o,D as a,N as r,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"VehicleSocManual",mixins:[t]},c={class:"vehicle-soc-tesla"};function p(u,m,_,h,f,g){const e=s("openwb-base-alert");return i(),o("div",c,[a(e,{subtype:"info"},{default:r(()=>[d(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')]),_:1})])}const z=n(l,[["render",p],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default};
diff --git a/web/settings/assets/vehicle-b04d281c.js b/web/settings/assets/vehicle-b04d281c.js
deleted file mode 100644
index e363a9d1e6..0000000000
--- a/web/settings/assets/vehicle-b04d281c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as a,u as s,k as r,l as i,D as o,N as d,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const c={name:"VehicleSocManual",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},l={class:"vehicle-soc-tesla"};function p(e,t,h,m,_,f){const n=s("openwb-base-alert");return r(),i("div",l,[o(n,{subtype:"info"},{default:d(()=>[u(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')]),_:1})])}const v=a(c,[["render",p],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{v as default};
diff --git a/web/settings/assets/vehicle-b1a2ecd4.js b/web/settings/assets/vehicle-b1a2ecd4.js
deleted file mode 100644
index 106dbb6dbc..0000000000
--- a/web/settings/assets/vehicle-b1a2ecd4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as u,u as l,k as s,l as d,D as a,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"VehicleSocSmarthello",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},f={class:"vehicle-soc-smarthello"};function v(r,e,o,h,g,n){const i=l("openwb-base-text-input");return s(),d("div",f,[a(i,{title:"Benutzername",subtype:"text",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":o.vehicle.configuration.VIN,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.VIN"))},{help:c(()=>[m(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")]),_:1},8,["model-value"])])}const V=u(p,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{V as default};
diff --git a/web/settings/assets/vehicle-b28cb25d.js b/web/settings/assets/vehicle-b28cb25d.js
deleted file mode 100644
index 5eb3eb4c6c..0000000000
--- a/web/settings/assets/vehicle-b28cb25d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as p,u as c,k as u,l as _,D as o,N as n,y as t,x as e,z as r}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"VehicleSocMqtt",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(i,l=void 0){this.$emit("update:configuration",{value:i,object:l})}}},m={class:"vehicle-soc-mqtt"},f=e("br",null,null,-1),b=e("br",null,null,-1),v=e("span",{class:"text-info"},"89.5",-1),g=e("br",null,null,-1),w=e("br",null,null,-1),k=e("br",null,null,-1),x=e("span",{class:"text-info"},"356.5",-1);function B(i,l,s,y,z,N){const a=c("openwb-base-copy-to-clipboard"),d=c("openwb-base-alert");return u(),_("div",m,[o(d,{subtype:"info"},{default:n(()=>[t(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. "),e("ul",null,[e("li",null,[o(a,{class:"text-info",tooltip:"Topic kopieren"},{default:n(()=>[t("openWB/set/vehicle/"+r(s.vehicleId)+"/get/soc",1)]),_:1}),f,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),b,t(" Beispiel: "),v]),e("li",null,[o(a,{class:"text-info",tooltip:"Topic kopieren"},{default:n(()=>[t("openWB/set/vehicle/"+r(s.vehicleId)+"/get/range",1)]),_:1}),g,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),w,t(" Diese Info ist optional."),k,t(" Beispiel: "),x])])]),_:1})])}const C=p(h,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{C as default};
diff --git a/web/settings/assets/vehicle-c0891ece.js b/web/settings/assets/vehicle-c0891ece.js
new file mode 100644
index 0000000000..8b3be4b5e3
--- /dev/null
+++ b/web/settings/assets/vehicle-c0891ece.js
@@ -0,0 +1 @@
+import{V as d}from"./VehicleConfig-5050794d.js";import{_ as p,u,k as m,l as c,D as i,N as r,y as t,x as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocBmw-bimmer_connected",mixins:[d]},g={class:"vehicle-soc-bmwbc"},f=l("br",null,null,-1),v=l("br",null,null,-1);function _(e,n,h,w,V,B){const a=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return m(),c("div",g,[i(a,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),i(a,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.password"))},{help:r(()=>[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.vin"))},{help:r(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),i(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.vehicle.configuration.calculate_soc,"onUpdate:modelValue":n[3]||(n[3]=o=>e.updateConfiguration(o,"configuration.calculate_soc"))},{help:r(()=>[t(" Berechnet den Ladestand (SoC) während der Ladung. "),f,t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),v]),_:1},8,["model-value"])])}const q=p(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-c5ee02d8.js b/web/settings/assets/vehicle-c5ee02d8.js
new file mode 100644
index 0000000000..09d59b6322
--- /dev/null
+++ b/web/settings/assets/vehicle-c5ee02d8.js
@@ -0,0 +1 @@
+import{V as t}from"./VehicleConfig-5050794d.js";import{_ as o,u as i,k as r,l as s,D as a,N as c,y as e,x as p}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"VehicleSocPSA",mixins:[t]},d={class:"vehicle-soc-psa"},m=p("br",null,null,-1);function u(_,h,f,b,g,v){const n=i("openwb-base-alert");return r(),s("div",d,[a(n,{subtype:"danger"},{default:c(()=>[e(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),m,e(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")]),_:1})])}const T=o(l,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{T as default};
diff --git a/web/settings/assets/vehicle-cea9d72d.js b/web/settings/assets/vehicle-cea9d72d.js
deleted file mode 100644
index 92da154a89..0000000000
--- a/web/settings/assets/vehicle-cea9d72d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as v,u as s,k as p,l as c,D as n,N as u,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"VehicleSocEVCC",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(r,e=void 0){this.$emit("update:configuration",{value:r,object:e})}}},x={class:"vehicle-soc-evcc"};function g(r,e,a,f,h,o){const i=s("openwb-base-text-input"),d=s("openwb-base-select-input");return p(),c("div",x,[n(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":a.vehicle.configuration.sponsor_token,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.sponsor_token"))},{help:u(()=>[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")]),_:1},8,["model-value"]),n(i,{title:"Benutzername",subtype:"text",required:"","model-value":a.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user_id"))},{help:u(()=>[l(" Benutzername beim Fahrzeughersteller. ")]),_:1},8,["model-value"]),n(i,{title:"Kennwort",subtype:"password",required:"","model-value":a.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},{help:u(()=>[l(" Kennwort beim Fahrzeughersteller. ")]),_:1},8,["model-value"]),n(d,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":a.vehicle.configuration.vehicle_type,"onUpdate:modelValue":e[3]||(e[3]=t=>o.updateConfiguration(t,"configuration.vehicle_type"))},{help:u(()=>[l(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),n(i,{title:"VIN",subtype:"text","model-value":a.vehicle.configuration.VIN,"onUpdate:modelValue":e[4]||(e[4]=t=>o.updateConfiguration(t,"configuration.VIN"))},{help:u(()=>[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")]),_:1},8,["model-value"])])}const V=v(m,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{V as default};
diff --git a/web/settings/assets/vehicle-d0d26522.js b/web/settings/assets/vehicle-d0d26522.js
new file mode 100644
index 0000000000..3a16e96e6d
--- /dev/null
+++ b/web/settings/assets/vehicle-d0d26522.js
@@ -0,0 +1 @@
+import{V as l}from"./VehicleConfig-5050794d.js";import{_ as u,u as s,k as d,l as p,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[l]},v={class:"vehicle-soc-kia"};function f(e,o,g,c,h,w){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":e.vehicle.configuration.pin,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.pin"))},{help:r(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const y=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{y as default};
diff --git a/web/settings/assets/vehicle-d78b6b11.js b/web/settings/assets/vehicle-d78b6b11.js
new file mode 100644
index 0000000000..55d8785815
--- /dev/null
+++ b/web/settings/assets/vehicle-d78b6b11.js
@@ -0,0 +1 @@
+import{V as s}from"./VehicleConfig-5050794d.js";import{_ as p,u,k as d,l as v,D as a,N as n,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},c={class:"vehicle-soc-evcc"};function g(e,t,x,f,h,V){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",c,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":e.vehicle.configuration.sponsor_token,"onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")]),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>[l(" Benutzername beim Fahrzeughersteller. ")]),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":t[2]||(t[2]=o=>e.updateConfiguration(o,"configuration.password"))},{help:n(()=>[l(" Kennwort beim Fahrzeughersteller. ")]),_:1},8,["model-value"]),a(r,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":e.vehicle.configuration.vehicle_type,"onUpdate:modelValue":t[3]||(t[3]=o=>e.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>[l(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":e.vehicle.configuration.VIN,"onUpdate:modelValue":t[4]||(t[4]=o=>e.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")]),_:1},8,["model-value"])])}const F=p(m,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{F as default};
diff --git a/web/settings/assets/vehicle-e84c6485.js b/web/settings/assets/vehicle-e84c6485.js
deleted file mode 100644
index 67d2370973..0000000000
--- a/web/settings/assets/vehicle-e84c6485.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as s,u as c,k as d,l as p,D as a,N as l,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const m={name:"VehicleSocHttp",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(n,e=void 0){this.$emit("update:configuration",{value:n,object:e})}}},h={class:"vehicle-soc-http"};function v(n,e,i,_,f,o){const r=c("openwb-base-text-input");return d(),p("div",h,[a(r,{title:"SoC URL",subtype:"url",required:"","model-value":i.vehicle.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.soc_url"))},{help:l(()=>[u(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")]),_:1},8,["model-value"]),a(r,{title:"Reichweiten URL",subtype:"url","model-value":i.vehicle.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.range_url"))},{help:l(()=>[u(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")]),_:1},8,["model-value"])])}const w=s(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{w as default};
diff --git a/web/settings/assets/vehicle-e909e122.js b/web/settings/assets/vehicle-e909e122.js
new file mode 100644
index 0000000000..6e79af09d7
--- /dev/null
+++ b/web/settings/assets/vehicle-e909e122.js
@@ -0,0 +1 @@
+import{V as a}from"./VehicleConfig-5050794d.js";import{_ as s,u as p,k as u,l as c,D as n,N as r,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocHttp",mixins:[a]},d={class:"vehicle-soc-http"};function h(e,t,v,_,f,g){const i=p("openwb-base-text-input");return u(),c("div",d,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":e.vehicle.configuration.soc_url,"onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")]),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":e.vehicle.configuration.range_url,"onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")]),_:1},8,["model-value"])])}const S=s(m,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{S as default};
diff --git a/web/settings/assets/vehicle-f30d6420.js b/web/settings/assets/vehicle-f30d6420.js
new file mode 100644
index 0000000000..d5b1e1b1b5
--- /dev/null
+++ b/web/settings/assets/vehicle-f30d6420.js
@@ -0,0 +1 @@
+import{V as l}from"./VehicleConfig-5050794d.js";import{_ as u,u as s,k as d,l as p,D as i,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[l]},f={class:"vehicle-soc-renault"};function v(e,n,c,g,h,V){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":e.vehicle.configuration.country,"onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.country"))},{help:r(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":n[3]||(n[3]=o=>e.updateConfiguration(o,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const N=u(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/assets/vehicle-f3b10eaa.js b/web/settings/assets/vehicle-f3b10eaa.js
new file mode 100644
index 0000000000..f7a5462197
--- /dev/null
+++ b/web/settings/assets/vehicle-f3b10eaa.js
@@ -0,0 +1 @@
+import{V as s}from"./VehicleConfig-5050794d.js";import{_ as l,u,k as d,l as p,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[s]},v={class:"vehicle-soc-vwid"};function f(e,o,c,g,w,V){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-f67e18a5.js b/web/settings/assets/vehicle-f67e18a5.js
deleted file mode 100644
index 98e2b07cfe..0000000000
--- a/web/settings/assets/vehicle-f67e18a5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as d,u as l,k as c,l as s,D as i}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"VehicleSocEvnotify",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(u,e=void 0){this.$emit("update:configuration",{value:u,object:e})}}},m={class:"vehicle-soc-evnotify"};function f(u,e,n,v,_,o){const r=l("openwb-base-number-input"),a=l("openwb-base-text-input");return c(),s("div",m,[i(r,{title:"ID",required:"",min:0,"model-value":n.vehicle.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.id"))},null,8,["model-value"]),i(a,{title:"AKey",required:"","model-value":n.vehicle.configuration.akey,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.akey"))},null,8,["model-value"]),i(a,{title:"Token",required:"","model-value":n.vehicle.configuration.token,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.token"))},null,8,["model-value"])])}const h=d(p,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{h as default};
diff --git a/web/settings/assets/vehicle-fa2b1ad1.js b/web/settings/assets/vehicle-fa2b1ad1.js
new file mode 100644
index 0000000000..dde9d3f233
--- /dev/null
+++ b/web/settings/assets/vehicle-fa2b1ad1.js
@@ -0,0 +1 @@
+import{V as r}from"./VehicleConfig-5050794d.js";import{_ as p,u as l,k as _,l as d,D as o,N as n,y as t,x as e,z as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocMqtt",mixins:[r]},h={class:"vehicle-soc-mqtt"},u=e("br",null,null,-1),f=e("br",null,null,-1),b=e("span",{class:"text-info"},"89.5",-1),v=e("br",null,null,-1),g=e("br",null,null,-1),w=e("br",null,null,-1),k=e("span",{class:"text-info"},"356.5",-1);function x(i,B,z,D,N,V){const s=l("openwb-base-copy-to-clipboard"),c=l("openwb-base-alert");return _(),d("div",h,[o(c,{subtype:"info"},{default:n(()=>[t(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. "),e("ul",null,[e("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:n(()=>[t("openWB/set/vehicle/"+a(i.vehicleId)+"/get/soc",1)]),_:1}),u,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),f,t(" Beispiel: "),b]),e("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:n(()=>[t("openWB/set/vehicle/"+a(i.vehicleId)+"/get/range",1)]),_:1}),v,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),g,t(" Diese Info ist optional."),w,t(" Beispiel: "),k])])]),_:1})])}const G=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{G as default};
diff --git a/web/settings/assets/vehicle-fc0096d3.js b/web/settings/assets/vehicle-fc0096d3.js
deleted file mode 100644
index b94afa1635..0000000000
--- a/web/settings/assets/vehicle-fc0096d3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as s,u as l,k as c,l as m,D as r,N as a,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"VehicleSocOVMS",emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},data(){return{}},methods:{updateConfiguration(d,e=void 0){this.$emit("update:configuration",{value:d,object:e})}}},v={class:"vehicle-soc-ovms"};function f(d,e,o,h,g,n){const i=l("openwb-base-text-input");return c(),m("div",v,[r(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.user_id"))},{help:a(()=>[u(" Der Benutzername für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")]),_:1},8,["model-value"]),r(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.password"))},{help:a(()=>[u(" Das Passwort für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")]),_:1},8,["model-value"]),r(i,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.vehicleId"))},{help:a(()=>[u(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")]),_:1},8,["model-value"])])}const w=s(p,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{w as default};
diff --git a/web/settings/index.html b/web/settings/index.html
index e13e099c9a..ad22660826 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -7,7 +7,7 @@
 	<meta name="viewport" content="width=device-width,initial-scale=1.0">
 	<link rel="icon" href="/openWB/web/settings/favicon.ico">
 	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-068b063d.js"></script>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-b0e5e618.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-2f1828d0.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-f2b8aa6f.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-71546160.js">

From 4cfaa1c6c2d38407dc54331f417def8656889513 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Thu, 26 Sep 2024 08:27:30 +0200
Subject: [PATCH 089/205] Fix sungrow (#1902)

---
 packages/modules/devices/sungrow/sungrow/device.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/packages/modules/devices/sungrow/sungrow/device.py b/packages/modules/devices/sungrow/sungrow/device.py
index 9f00a7eef9..8de4c559c8 100644
--- a/packages/modules/devices/sungrow/sungrow/device.py
+++ b/packages/modules/devices/sungrow/sungrow/device.py
@@ -26,15 +26,15 @@ def create_inverter_component(component_config: SungrowInverterSetup):
 
     def update_components(components: Iterable[Union[SungrowBat, SungrowCounter, SungrowInverter]]):
         with client:
-            for component in components.values():
+            for component in components:
                 if isinstance(component, SungrowInverter):
                     with SingleComponentUpdateContext(component.fault_state):
                         pv_power = component.update()
-            for component in components.values():
+            for component in components:
                 if isinstance(component, SungrowCounter):
                     with SingleComponentUpdateContext(component.fault_state):
                         component.update(pv_power)
-            for component in components.values():
+            for component in components:
                 if isinstance(component, SungrowBat):
                     with SingleComponentUpdateContext(component.fault_state):
                         component.update()

From 744b1c6ca72168e9ac7a08b21951cebacbee83cc Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Thu, 26 Sep 2024 09:47:29 +0200
Subject: [PATCH 090/205] update wiki samples gui

---
 docs/samples/samples_gui/bat.vue      | 15 +++------------
 docs/samples/samples_gui/counter.vue  | 15 +++------------
 docs/samples/samples_gui/device.vue   | 16 ++++------------
 docs/samples/samples_gui/inverter.vue | 15 +++------------
 4 files changed, 13 insertions(+), 48 deletions(-)

diff --git a/docs/samples/samples_gui/bat.vue b/docs/samples/samples_gui/bat.vue
index d82a7cfb19..d67a31a718 100644
--- a/docs/samples/samples_gui/bat.vue
+++ b/docs/samples/samples_gui/bat.vue
@@ -2,24 +2,15 @@
 	<div class="device-sample-bat">
 		<openwb-base-heading>
 			Einstellungen für Sample Batteriespeicher
-			<span class="small">(Modul: {{ $options.name }})</span>
 		</openwb-base-heading>
 	</div>
 </template>
 
 <script>
+import ComponentConfigMixin from "../../ComponentConfigMixin.vue";
+
 export default {
 	name: "DeviceSampleBat",
-	emits: ["update:configuration"],
-	props: {
-		configuration: { type: Object, required: true },
-		deviceId: { type: Number, default: undefined },
-		componentId: { type: Number, required: true },
-	},
-	methods: {
-		updateConfiguration(event, path = undefined) {
-			this.$emit("update:configuration", { value: event, object: path });
-		},
-	},
+	mixins: [ComponentConfigMixin],
 };
 </script>
diff --git a/docs/samples/samples_gui/counter.vue b/docs/samples/samples_gui/counter.vue
index 8711d9aaec..2d1f80528e 100644
--- a/docs/samples/samples_gui/counter.vue
+++ b/docs/samples/samples_gui/counter.vue
@@ -2,24 +2,15 @@
 	<div class="device-sample-counter">
 		<openwb-base-heading>
 			Einstellungen für Sample Zähler
-			<span class="small">(Modul: {{ $options.name }})</span>
 		</openwb-base-heading>
 	</div>
 </template>
 
 <script>
+import ComponentConfigMixin from "../../ComponentConfigMixin.vue";
+
 export default {
 	name: "DeviceSampleCounter",
-	emits: ["update:configuration"],
-	props: {
-		configuration: { type: Object, required: true },
-		deviceId: { type: Number, default: undefined },
-		componentId: { type: Number, required: true },
-	},
-	methods: {
-		updateConfiguration(event, path = undefined) {
-			this.$emit("update:configuration", { value: event, object: path });
-		},
-	},
+	mixins: [ComponentConfigMixin],
 };
 </script>
diff --git a/docs/samples/samples_gui/device.vue b/docs/samples/samples_gui/device.vue
index d107652994..ce113374a5 100644
--- a/docs/samples/samples_gui/device.vue
+++ b/docs/samples/samples_gui/device.vue
@@ -2,13 +2,12 @@
 	<div class="device-sample">
 		<openwb-base-heading>
 			Einstellungen für Sample
-			<span class="small">(Modul: {{ $options.name }})</span>
 		</openwb-base-heading>
 		<openwb-base-text-input
 			title="IP oder Hostname"
 			subtype="host"
 			required
-			:model-value="configuration.ip_address"
+			:model-value="device.configuration.ip_address"
 			@update:model-value="
 				updateConfiguration($event, 'configuration.ip_address')
 			"
@@ -17,17 +16,10 @@
 </template>
 
 <script>
+import DeviceConfigMixin from "../../DeviceConfigMixin.vue";
+
 export default {
 	name: "DeviceSample",
-	emits: ["update:configuration"],
-	props: {
-		configuration: { type: Object, required: true },
-		deviceId: { type: Number, default: undefined },
-	},
-	methods: {
-		updateConfiguration(event, path = undefined) {
-			this.$emit("update:configuration", { value: event, object: path });
-		},
-	},
+	mixins: [DeviceConfigMixin],
 };
 </script>
diff --git a/docs/samples/samples_gui/inverter.vue b/docs/samples/samples_gui/inverter.vue
index ad5d568073..42de558f6a 100644
--- a/docs/samples/samples_gui/inverter.vue
+++ b/docs/samples/samples_gui/inverter.vue
@@ -2,24 +2,15 @@
 	<div class="device-sample-inverter">
 		<openwb-base-heading>
 			Einstellungen für Sample Wechselrichter
-			<span class="small">(Modul: {{ $options.name }})</span>
 		</openwb-base-heading>
 	</div>
 </template>
 
 <script>
+import ComponentConfigMixin from "../../ComponentConfigMixin.vue";
+
 export default {
 	name: "DeviceSampleInverter",
-	emits: ["update:configuration"],
-	props: {
-		configuration: { type: Object, required: true },
-		deviceId: { type: Number, default: undefined },
-		componentId: { type: Number, required: true },
-	},
-	methods: {
-		updateConfiguration(event, path = undefined) {
-			this.$emit("update:configuration", { value: event, object: path });
-		},
-	},
+	mixins: [ComponentConfigMixin],
 };
 </script>

From 51aa96b6c68226dc6dba2dfab7d265fb72fd65a9 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Thu, 26 Sep 2024 09:49:03 +0200
Subject: [PATCH 091/205] fix markdown syntax

---
 docs/Anzeige-Steuerung.md                     |  4 ++-
 docs/Cloud-Sicherung.md                       |  8 ++---
 docs/Einstellungs-Seite erstellen.md          | 22 ++++++++----
 docs/Fehlersuche.md                           | 16 +++++----
 docs/Grundkonzept.md                          |  9 ++---
 "docs/Hausverbrauchs-Z\303\244hler.md"        | 12 +++----
 docs/Huawei-Smartlogger.md                    | 26 +++++++-------
 ... System aus Wechselrichter und Speicher.md |  6 ++--
 docs/Ladeprofile.md                           |  4 +--
 docs/Ladung nur nach Freischaltung.md         | 35 ++++++++++++-------
 docs/MQTT.md                                  | 16 ++++-----
 docs/Neues Modul programmieren.md             | 16 +++++----
 ...xtCloud als Sicherungs-Cloud einrichten.md |  4 +--
 docs/Samba als Sicherung einrichten.md        | 10 +++---
 docs/Typische-Anwendungsfaelle.md             | 31 +++++++++-------
 docs/Wiki-Eintrag erstellen.md                |  4 +--
 docs/Zaehler.md                               | 27 +++++++-------
 docs/_Sidebar.md                              |  2 +-
 18 files changed, 142 insertions(+), 110 deletions(-)

diff --git a/docs/Anzeige-Steuerung.md b/docs/Anzeige-Steuerung.md
index 4d60949873..45beb1b78c 100644
--- a/docs/Anzeige-Steuerung.md
+++ b/docs/Anzeige-Steuerung.md
@@ -1,7 +1,9 @@
 Die Kontrolle der openWB geschieht über einen Webbrowser. Aufruf geschieht über Eingabe der IP-Adresse der openWB.
 
 ## Startseite
+
 Die hier angezeigten Leistungen werden direkt aus den Leistungsdaten, welche vom Zähler übertragen werden, übernommen.
 
 ## Auswertungen - Diagramme
-In der Auswertung (und für's Langzeit-Logging) werden 5min-Intervalle der Zählerstände (kWh-Differenz/5min = kW) verwendet.
\ No newline at end of file
+
+In der Auswertung (und für's Langzeit-Logging) werden 5min-Intervalle der Zählerstände (kWh-Differenz/5min = kW) verwendet.
diff --git a/docs/Cloud-Sicherung.md b/docs/Cloud-Sicherung.md
index 5659f4a858..69e3996a4d 100644
--- a/docs/Cloud-Sicherung.md
+++ b/docs/Cloud-Sicherung.md
@@ -1,10 +1,10 @@
 _Einstellungen -> System -> System -> Sicherung/Wiederherstellung_
 
-In den Sicherungseinstellungen kann ein Cloud-Dienst für automatische Sicherungen hinterlegt werden. 
-Die Konfiguration des Cloud-Dienstes wird in diesem Wiki-Beitrag beschrieben. 
+In den Sicherungseinstellungen kann ein Cloud-Dienst für automatische Sicherungen hinterlegt werden.
+Die Konfiguration des Cloud-Dienstes wird in diesem Wiki-Beitrag beschrieben.
 
-Automatische Sicherungen werden nur ausgeführt, wenn die openWB als *primary* konfiguriert (oder die einzige) ist.
-Auf als *secondary* konfigurierten openWBs werden nur manuelle Sicherungen und Sicherungen vor einem Update (falls aktiviert)  ausgeführt, da hier keine Arbeitsdaten (Log-Dateien) zu sichern sind.
+Automatische Sicherungen werden nur ausgeführt, wenn die openWB als **primary** konfiguriert (oder die einzige) ist.
+Auf als **secondary** konfigurierten openWBs werden nur manuelle Sicherungen und Sicherungen vor einem Update (falls aktiviert)  ausgeführt, da hier keine Arbeitsdaten (Log-Dateien) zu sichern sind.
 
 Folgende Anbieter werden unterstützt:
 
diff --git a/docs/Einstellungs-Seite erstellen.md b/docs/Einstellungs-Seite erstellen.md
index 70cab3337b..776e5a6c85 100644
--- a/docs/Einstellungs-Seite erstellen.md	
+++ b/docs/Einstellungs-Seite erstellen.md	
@@ -5,20 +5,28 @@ Die Installation des GUI-Repositories ist in eben diesem beschrieben: [openwb-ui
 Die Auswahllisten werden dynamisch erzeugt. Damit euer Element darin enthalten ist, muss im entsprechenden Ordner im Core-Repo eine config.py-Datei wie in den Samples beschrieben enthalten sein. Wenn keine Einstellungsseiten in vue hinterlegt sind, sind die Einstellungen als json-Objekt editierbar. Dies ist für einen PR im Core-Repo ausreichend. Wie Ihr auch einen PR im GUI-Repo für die Einstellungen erstellen könnt, erklären wir Euch hier am Beispiel eines Fahrzeugs:
 
 ### Einstellungen erzeugen
+
 Im Ordner src/components des GUI-Repos legt Ihr im Ordner `vehicles` einen neuen Ordner `sample` an. Dort hinein kopiert Ihr die Vorlage aus dem Ordner [samples_gui](https://github.com/openWB/core/tree/master/docs/samples/samples_gui) und ersetzt sample durch den Namen eures neuen Fahrzeugs. Bitte auf die Groß- und Kleinschreibung achten.
 
 Nun müssen noch Frames für einzelnen Einstellungen ergänzt werden. Dafür könnt Ihr euch entweder an den bereits existierenden Modulen orientieren oder die Beispiele nutzen, die Ihr euch im GUI unter Einstellungen -> Beispiele anschauen könnt. Die Frames findet Ihr [hier](https://github.com/openWB/openwb-ui-settings/blob/main/src/views/TestingStore.vue).
 
-`:model-value="$store.state.examples.text3"`  
-`@update:model-value="updateState('text3', $event)"`  
-Diese beiden Zeilen gibt es in jedem Frame. Die erste Zeile gibt den Wert an, der vom Broker gelesen werden soll. Die zweite den Wert, der aktualisiert werden soll. 
-Für die Einstellungen müssen die Zeilen immer so aussehen:  
-`:model-value="configuration.sample"`  
-`@update:model-value="updateConfiguration($event, 'configuration.sample')`
+```javascript
+:model-value="$store.state.examples.text3"
+@update:model-value="updateState('text3', $event)"
+```
+
+Diese beiden Zeilen gibt es in jedem Frame. Die erste Zeile gibt den Wert an, der vom Broker gelesen werden soll. Die zweite den Wert, der aktualisiert werden soll.
+Für die Einstellungen müssen die Zeilen immer so aussehen:
+
+```javascript
+:model-value="configuration.sample"
+@update:model-value="updateConfiguration($event, 'configuration.sample')
+```
 
 Dann werden die Einstellungen automatisch dem richtigen Topic im Broker zugeordnet. Wichtig ist, dass sample immer genau so heißt, wie die Einstellung in der config.py. Nach dem Tag `<template #help>` könnt Ihr einen Hilfetext eingeben, der angezeigt wird, wenn man auf das Fragezeichen klickt.
 
 ### Pull Request stellen
+
 Die kompilierten vue-Dateien im Core-Repo können nicht gemergt werden. Deshalb dürfen im PR des Core-Repos keine kompilierten vue-Dateien enthalten sein. Für die Einstellungs-Seiten bitte einen PR im openwb-ui-settings-Repo stellen. Nach dem Mergen kompilieren wir die vue-Dateien neu und aktualisieren diese im Core-Repo.
 
-_Bei Fragen programmiert Ihr die Einstellungs-Seite vorerst, wie Ihr es versteht, und erstellt einen (Draft-)PR. Wir unterstützen Euch gerne per Review._
\ No newline at end of file
+_Bei Fragen programmiert Ihr die Einstellungs-Seite vorerst, wie Ihr es versteht, und erstellt einen (Draft-)PR. Wir unterstützen Euch gerne per Review._
diff --git a/docs/Fehlersuche.md b/docs/Fehlersuche.md
index 96c5ab26e0..c6e2c744da 100644
--- a/docs/Fehlersuche.md
+++ b/docs/Fehlersuche.md
@@ -1,19 +1,22 @@
 # Fehlersuche
+
 Es kann immer mal passieren, dass etwas nicht wie gedacht funktioniert. Das kann an einem Fehler im Programmcode, an einem Hardwaredefekt oder an einer fehlerhaften oder nicht zu den Gegebenheiten passenden Konfiguration liegen.
 
-Wenn nun eine Funktion nicht wie erwartet ausgeführt wird oder plötzlich ein Fehler auftritt, ist die erste Frage: 
+Wenn nun eine Funktion nicht wie erwartet ausgeführt wird oder plötzlich ein Fehler auftritt, ist die erste Frage:
 > Habe ich vor Kurzem etwas verändert?
 
 Dies betrifft ebenso Änderungen der Einstellungen im Fahrzeug, Wechselrichter (Softwareupdate?)  oder der Hauselektrik. Unter Umständen kann das Problem so schon gelöst werden.
 
-
 ## Wo bekomme ich Hilfe?
+
 ### Hardwaresupport
-Mit Problemen bei Inbetriebnahme / Anschluss oder Hardwareproblemen mit openWB-Hardware bitte direkt über die Support-Funktion unter System -> Support an openWB wenden (Notfalls auch per Mail an support@openwb.de).
+
+Mit Problemen bei Inbetriebnahme / Anschluss oder Hardwareproblemen mit openWB-Hardware bitte direkt über die Support-Funktion unter System -> Support an openWB wenden (Notfalls auch per Mail an <support@openwb.de>).
 Im Forum kann durchaus mal etwas untergehen. Das führt zu Frust und soll nicht sein.
 
 ### Forum
-Im [Forum](https://forum.openwb.de/index.php) findet man folgende Hilfestellung für Hilfesuchende. Die hier erbetene Herangehensweise dient dazu, den Fehler mit dem für alle niedrigsten Aufwand zu beheben. 
+
+Im [Forum](https://forum.openwb.de/index.php) findet man folgende Hilfestellung für Hilfesuchende. Die hier erbetene Herangehensweise dient dazu, den Fehler mit dem für alle niedrigsten Aufwand zu beheben.
 
 > Bitte keine Mehrfach-Meldung per Mail, Support-Ticket und Forum.
 Das spart auf unserer Seite Supportzeit und bringt erfahrungsgemäß keine Beschleunigung des Vorgangs.
@@ -31,7 +34,8 @@ Formuliert Eure Frage freundlich, beschreibt was ihr tun wolltet und was anstell
 Da es schon Wechselwirkungen mit anderen Smarthome-Systemen gegeben hat, erwähnt ggf. weitere im Heimnetzwerk laufende SmartHome-Systeme.
 
 ### Log-Erstellung
-In der Standard-Einstellung des Logs werden nur Warnungen & Fehler erfasst.  Außerdem wird bei einem Neustart der openWB der Fehlerlog gelöscht. 
+
+In der Standard-Einstellung des Logs werden nur Warnungen & Fehler erfasst.  Außerdem wird bei einem Neustart der openWB der Fehlerlog gelöscht.
 
 Um aussagekräftige Logs zu erzeugen, müssen Log-Dateien im Debug-Modus erstellt werden. Hierzu ist folgende Schaltfläche zu aktivieren:
 
@@ -40,4 +44,4 @@ Um aussagekräftige Logs zu erzeugen, müssen Log-Dateien im Debug-Modus erstell
 Aufgrund des detaillierten Loggings, ist die Dauer der Aufnahme ca. auf die letzten zwei Stunden begrenzt.  Beachtet also, dass ihr sich der Fehler innerhalb des aufgezeichneten Abschnitts befindet.
 Dann ist in den meisten Fällen das Main.log, aufzuklappen und mit der grünen Schaltfläche zu aktualisieren. Der entsprechende Auszug kann nun in eine Textdatei oder direkt in die Nachricht im Forum kopiert werden.
 
-![Main-Log](pictures/Fehlersuche_Main-Log.jpg)
\ No newline at end of file
+![Main-Log](pictures/Fehlersuche_Main-Log.jpg)
diff --git a/docs/Grundkonzept.md b/docs/Grundkonzept.md
index 786f96a222..53a4548f2c 100644
--- a/docs/Grundkonzept.md
+++ b/docs/Grundkonzept.md
@@ -1,5 +1,6 @@
 Hier werden die Grundeinstellungen für Anfänger mit einer einfachen Konstellation, welche im privaten Umfeld häufig vorkommt, erklärt.
-Üblicherweise sind da ein oder zwei Autos und ein oder zwei Wallboxen, die bei der software2 nur noch openWBs sein dürfen. Hat man nur ein Auto und eine openWB ist es ganz simpel. Mit zwei Autos muss man sich - wenn man weiterreichende Features nutzen - oder nur ganz einfach die geladenen kWh loggen möchte - damit auseinander setzen, wie man der openWB mitteilt, welches Auto nun angeschlossen ist: 
+Üblicherweise sind da ein oder zwei Autos und ein oder zwei Wallboxen, die bei der software2 nur noch openWBs sein dürfen. Hat man nur ein Auto und eine openWB ist es ganz simpel. Mit zwei Autos muss man sich - wenn man weiterreichende Features nutzen - oder nur ganz einfach die geladenen kWh loggen möchte - damit auseinander setzen, wie man der openWB mitteilt, welches Auto nun angeschlossen ist:
+
 - man wählt das zu ladende Auto auf dem Handy oder auf dem Display der openWB aus
 - man macht das bei mit RFID-Leser ausgestatteten openWBs per RFID-Karte
 - man kauft für jedes Auto eine eigene openWB; das hat den Vorteil, dass die Autos immer eingesteckt bleiben können und so der gesamte PV-Überschuss garantiert in den Autos landet.
@@ -7,17 +8,17 @@ Hier werden die Grundeinstellungen für Anfänger mit einer einfachen Konstellat
 
 ## Konfiguration
 
-Die Konfiguration der Wallbox-Funktionalität verteilt sich auf zwei oder drei Menüpunkte im Konfigurations-Menü: Ladepunkte (ggf. Lastmanagement) und Fahrzeuge 
+Die Konfiguration der Wallbox-Funktionalität verteilt sich auf zwei oder drei Menüpunkte im Konfigurations-Menü: Ladepunkte (ggf. Lastmanagement) und Fahrzeuge
 
 ### Ladepunkte - die Infrastruktur
 
 Hier werden die vorhandenen Wallboxen als Ladepunkt angelegt und ihnen gemeinsame Eigenschaften in Form von Ladepunkt-Profilen zugewiesen. Im privaten Bereich ist es ja üblicherweise so, dass mit maximal 11kW geladen wird und die Ladepunkte entweder vor unbefugtem Zugriff geschützt werden wollen oder nicht. Das versteckt sich im Ladepunkt-Profil, weshalb wir uns um eigene Ladepunkt-Profile gar nicht kümmern müssen. Wir nehmen das Standard Ladepunkt-Profil für alle unsere openWBs und passen das nach unseren Wünschen an.
 
 Sind mehrere Ladepunkte an einer Unterverteilung angeschlossen, deren Zuleitung weniger verträgt, als die Ladepunkte abgeben können, muss man sich noch über das Loadsharing Gedanken machen. Zum Beispiel ist eine Unterverteilung an der zwei 22kW openWBs angeschlossen sind, in den seltensten Fällen mit den dafür notwendigen 63A abgesichert; häufig z.B. nur 35A. Hier fügt man noch eine Komponente "virtuellen Zähler" ein, setzt den im [Lastmanagement](https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Zähler) in der Struktur über die beiden Ladepunkte und trägt dort die 24kW / 35A ein. Die maximal zulässige Leistung am EVU-Punkt trägt man dementsprechend in diesem [Zähler](https://github.com/openWB/core/wiki/Zaehler) ein.
- 
+
 ### Fahrzeuge - warum wir das hier alles machen
 
-Bei den Fahrzeugen zerteilt sich die Konfiguration in die technischen Eigenschaften und die ladungstechnischen Aspekte - das sind die beiden Profile für Fahrzeug und Ladung. Die beiden zusammengefasst ergibt das Fahrzeug. 
+Bei den Fahrzeugen zerteilt sich die Konfiguration in die technischen Eigenschaften und die ladungstechnischen Aspekte - das sind die beiden Profile für Fahrzeug und Ladung. Die beiden zusammengefasst ergibt das Fahrzeug.
 
 #### Fahrzeug-Profile
 
diff --git "a/docs/Hausverbrauchs-Z\303\244hler.md" "b/docs/Hausverbrauchs-Z\303\244hler.md"
index c5ddc5582a..15afb76590 100644
--- "a/docs/Hausverbrauchs-Z\303\244hler.md"
+++ "b/docs/Hausverbrauchs-Z\303\244hler.md"
@@ -1,17 +1,17 @@
-Es gibt zwei mögliche Einbaupositionen für Zähler: EVU-Punkt und Hausverbrauchs-Zweig.  
-Ist der Zähler am EVU-Punkt installiert, misst er am EVU-Punkt (EVU=Elektrizitätsversorgungsunternehmen) Bezug und Einspeisung ins öffentliche Netz. Der Hausverbrauch wird dann aus den Werten der Ladepunkte, Wechselrichter und Speicher berechnet.  
-Ist der Zähler im Hausverbrauchs-Zweig installiert, misst er die Leistung der Ladepunkte und den Hausverbrauch. Bezug und Einspeisung ins öffentliche Netz werden dann aus den Werten des Zählers, Wechselrichter und Speicher berechnet. Dazu gibt es in openWB einen virtuellen Zähler. Dieser addiert die Werte aller in der Struktur dahinter angeordneten Komponenten. 
+Es gibt zwei mögliche Einbaupositionen für Zähler: EVU-Punkt und Hausverbrauchs-Zweig.
+Ist der Zähler am EVU-Punkt installiert, misst er am EVU-Punkt (EVU=Elektrizitätsversorgungsunternehmen) Bezug und Einspeisung ins öffentliche Netz. Der Hausverbrauch wird dann aus den Werten der Ladepunkte, Wechselrichter und Speicher berechnet.
+Ist der Zähler im Hausverbrauchs-Zweig installiert, misst er die Leistung der Ladepunkte und den Hausverbrauch. Bezug und Einspeisung ins öffentliche Netz werden dann aus den Werten des Zählers, Wechselrichter und Speicher berechnet. Dazu gibt es in openWB einen virtuellen Zähler. Dieser addiert die Werte aller in der Struktur dahinter angeordneten Komponenten.
 
 Zunächst ein Virtuelles Gerät mit einem virtuellen Zähler anlegen. Die Komponenten müssen in der Hierarchie wie in den Abbildungen unten angeordnet werden. In den Einstellungen für das Lastmanagement beim Punkt `Hausverbrauch` den Hausverbrauchs-Zähler auswählen. Der Hausverbrauch ist die Leistung des ausgewählten Zählers abzüglich der Ladeleistung.
 
 Misst der Zähler den Hausverbrauch, ergibt sich folgende Anordnung:
 
-<img src="Hausverbrauchs-Zaehler.png" width="500">
+![Hausverbrauchs-Zähler](Hausverbrauchs-Zaehler.png)
 
 Misst der Zähler den Hausverbrauchs und ist ein Hybrid-Wechselrichter vorhanden, ergibt sich folgende Struktur:
 
-<img src="Hausverbrauchs-Zaehler_Hybrid.png" width="500">
+![Hausverbrauchs-Zähler Hybrid](Hausverbrauchs-Zaehler_Hybrid.png)
 
 Ist der Zähler wie üblich am EVU-Punkt installiert und misst den gesamten Verbrauch/Einspeisung, muss die Struktur wie folgt aussehen:
 
-<img src="standard.png" width="500">
+![Standard Zähler](standard.png)
diff --git a/docs/Huawei-Smartlogger.md b/docs/Huawei-Smartlogger.md
index bbf082c46e..63f4a3e356 100644
--- a/docs/Huawei-Smartlogger.md
+++ b/docs/Huawei-Smartlogger.md
@@ -1,17 +1,15 @@
 Im Smartlogger3000a müssen folgende Einstellungen festgelegt werden:
 
-1. Zunächst unter Einstell.-> Bef.-Param. -> Modbus TCP
-   Folgende Einstellungen festlegen:
-     Leitungseinstellungen: Akt.(Unbegrenzt)
-     Addressmodus: Logische Addresse
-     Logger-Addresse: z.B.4 (Muss eine freie ModBus ID sein, logische Addresse 2tes Bild.)
-     Schnelle Planung: Aktivieren
-    ![Huawei Smartlogger ModBusTCP](HuaweiSmartloggerModBusTCP.PNG)
-2.  Unter Wartung->Geräte-Mgmt.-> Geräte Liste
-    kann man jetzt die logische Adresse der einzelnen Geräte ablesen. Diese wird dann in der openWB in der Einstellung ModbusID eingetragen.
+1. Zunächst unter Einstell.-> Bef.-Param. -> Modbus TCP Folgende Einstellungen festlegen:
+    - Leitungseinstellungen: Akt.(Unbegrenzt)
+    - Addressmodus: Logische Addresse
+    - Logger-Addresse: z.B.4 (Muss eine freie ModBus ID sein, logische Addresse 2tes Bild.)
+    - Schnelle Planung: Aktivieren
+![Huawei Smartlogger ModBusTCP](HuaweiSmartloggerModBusTCP.PNG)
+2. Unter Wartung->Geräte-Mgmt.-> Geräte Liste kann man jetzt die logische Adresse der einzelnen Geräte ablesen. Diese wird dann in der openWB in der Einstellung ModbusID eingetragen.
     ![HuaweiSmartloggerLogischeAdressen](HuaweiSmartloggerLogischeAdressen.PNG)
-4. in den Einstellungen der openWB das Modul Huawei Smartlogger auswählen.
-5. Jetzt muss man die IP des Smartloggers und den Port 502 eintragen, außer dieser wurde geändert.
-6. Jetzt die passenden Komponenten hinzufügen und die jeweilige ModbusID eintragen.
-7. Zum Schluss auf Speichern drücken und unter dem Lastmanagement die passende Anordnung wählen.
-  ![Huawei Smartlogger Komponenten](HuaweiSmartloggerKomponenten.PNG)
+3. in den Einstellungen der openWB das Modul Huawei Smartlogger auswählen.
+4. Jetzt muss man die IP des Smartloggers und den Port 502 eintragen, außer dieser wurde geändert.
+5. Jetzt die passenden Komponenten hinzufügen und die jeweilige ModbusID eintragen.
+6. Zum Schluss auf Speichern drücken und unter dem Lastmanagement die passende Anordnung wählen.
+    ![Huawei Smartlogger Komponenten](HuaweiSmartloggerKomponenten.PNG)
diff --git a/docs/Hybrid System aus Wechselrichter und Speicher.md b/docs/Hybrid System aus Wechselrichter und Speicher.md
index 2f0965371f..e93550cc75 100644
--- a/docs/Hybrid System aus Wechselrichter und Speicher.md	
+++ b/docs/Hybrid System aus Wechselrichter und Speicher.md	
@@ -1,4 +1,4 @@
-Bei Hybrid-Systemen ist ein DC- Speicher an den Wechselrichter angeschlossen. Bei den meisten Herstellern wird dann die Wechselrichter-Leistung anstelle der PV-Leistung ausgegeben. Auch die Zählerstände werden miteinander verrechnet. 
+Bei Hybrid-Systemen ist ein DC- Speicher an den Wechselrichter angeschlossen. Bei den meisten Herstellern wird dann die Wechselrichter-Leistung anstelle der PV-Leistung ausgegeben. Auch die Zählerstände werden miteinander verrechnet.
 
 Wechselrichter-Leistung: Summe aus PV- und Speicher-Leistung, die der Wechselrichter ins Hausnetz abgibt.
 PV-Leistung: Auf dem Dach erzeugte Leistung.
@@ -10,7 +10,7 @@ Die Struktur muss wie in der ersten Abbildung angeordnet werden, wenn die PV-Lei
 
 Hybrid-System, wenn die Wechselrichter-Leistung ausgegeben wird:
 
-<img src="hybrid.png" width="500">
+![Hybrid-System](hybrid.png)
 
 Hybrid-System, wenn die PV-Leistung ausgegeben wird:
-<img src="standard.png" width="500">
+![Hybrid-System](standard.png)
diff --git a/docs/Ladeprofile.md b/docs/Ladeprofile.md
index f32aba2167..1238da39ad 100644
--- a/docs/Ladeprofile.md
+++ b/docs/Ladeprofile.md
@@ -1,5 +1,5 @@
 _Einstellungen -> Konfiguration -> Fahrzeuge -> Lade-Profile_
 
 Unter den Lade-Profilen werden die Einstellungen für das Ladeprofil verwaltet. Die Einstellungen auf der Hauptseite werden aus diesem Profil geladen und dorthin geschrieben. Ist nur ein Fahrzeug vorhanden, so wird in den meisten Fällen nur das Standard-Ladeprofil benötigt. Ausgenommen hiervon ist, wenn per RFID-Tag Ladevorgaben ausgewählt werden.
- 
-In den fahrzeugspezifischen Einstellungen wird ein Ladeprofil einem Fahrzeug zugeordnet. Werden zwei Fahrzeuge geladen, empfiehlt es sich dazu ein zweites Ladeprofil anzulegen.
\ No newline at end of file
+
+In den fahrzeugspezifischen Einstellungen wird ein Ladeprofil einem Fahrzeug zugeordnet. Werden zwei Fahrzeuge geladen, empfiehlt es sich dazu ein zweites Ladeprofil anzulegen.
diff --git a/docs/Ladung nur nach Freischaltung.md b/docs/Ladung nur nach Freischaltung.md
index 2bb79e90c1..7e697ecb84 100644
--- a/docs/Ladung nur nach Freischaltung.md	
+++ b/docs/Ladung nur nach Freischaltung.md	
@@ -1,50 +1,57 @@
-Die openWB bietet die Möglichkeit den Ladepunkt gegen ungewollten Zugriff zu schützen.   
-Diese Option ist vor allem für öffentlich zugängliche Ladepunkte sinnvoll aber auch im privaten Bereich nützlich.  
+Die openWB bietet die Möglichkeit den Ladepunkt gegen ungewollten Zugriff zu schützen.
+Diese Option ist vor allem für öffentlich zugängliche Ladepunkte sinnvoll aber auch im privaten Bereich nützlich.
 Dazu gibt es zwei grundlegende Konzepte:
 
-#### **A** Nach Abstecken des Fahrzeugs wird der Ladepunkt gesperrt (Sperre nach Abstecken)  
+#### **A** Nach Abstecken des Fahrzeugs wird der Ladepunkt gesperrt (Sperre nach Abstecken)
+
 Ein neuer Ladevorgang erfolgt erst nach Freischalten durch:
+
 - Eingeben einer **PIN** am openWB-Display (sofern mit Touchdisplay)
 - Vorhalten eines **RFID-Tags** an der openWB mit RFID-Reader
 - Fahrzeugerkennung über den **Ladestecker** mit der openWB-Pro
 - händisches Entsperren des Ladepunktes im User Interface
 
-#### **B** Nach Abstecken des Fahrzeugs wird auf das Standardfahrzeug (Standard nach Abstecken) mit Lademodus **Stop** gewechselt  
+#### **B** Nach Abstecken des Fahrzeugs wird auf das Standardfahrzeug (Standard nach Abstecken) mit Lademodus **Stop** gewechselt
+
 Ein neuer Ladevorgang erfolgt erst durch:
+
 - auswählen eines Fahrzeugs mit Lademodus Sofortladen, PV- oder Zielladen
 - händischer Wechsel des Lademodus oder Fahrzeuges im User Interface
 - vorhalten eines ID-Tags, welcher einem Fahrzeug zugeordnet ist
 
 #### Allgemeine Konfiguration
+
 Wenn ID-Tags genutzt werden sollen, dann ist in der Navigationsbar unter **Einstellungen - Optionale Hardware** unter dem Punkt Identifikation von Fahrzeugen die Option **Identifikation aktivieren** auf **An** zustellen.
 
-**I.** Fahrzeuge  
+**I.** Fahrzeuge
 In der Navigationsbar auf Einstellungen klicken, dann den Reiter Konfiguration auswählen und **Fahrzeuge** aufrufen. Standardmäßig ist hier das **Standard-Fahrzeug** angelegt, welches die Option **Zugeordnete ID-Tags** beinhaltet. Hier müssen die ID-Tags eingetragen werden, welche ausschliesslich zur Zuordnung von Fahrzeugen verwendet werden. Hier zeigt sich auch die Stärke der openWB im Fahrzeugkonzept, welches die Möglichkeit bietet, verschiedene Fahrzeuge mit verschiedenen Fahrzeug- und Ladeprofilen über die ID-Kennung aufzurufen.
 
 Hier muss für jedes Fahrzeug mit Freischaltwunsch ein **separates Fahrzeug** angelegt werden und die jeweiligen ID-Tags eingetragen werden, die zur Zuordnung genutzt werden.
 
 Achtung: Lade-Profile müssen den Fahrzeugen unter Fahrzeuge zugeordnet werden!
 
-**II.** Ladepunkte  
+**II.** Ladepunkte
 In der Navigationsbar auf Einstellungen klicken, dann den Reiter Konfiguration auswählen und **Ladepunkte** aufrufen.
 Standardmäßig ist hier das **Standard-Ladepunkt-Profil** angelegt, welches die Option **Sperre nach Abstecken** bietet. Wird diese Option aktiviert, dann ist das Feld **Zugeordnete ID-Tags** zugänglich.
-Hier müssen die ID-Tags eingetragen werden, welche ausschliesslich zur Entsperrung des Ladepunktes verwendet werden. Sind mehrere Ladepunkte vorhanden (z.B. Duo oder mehrere ferngesteuerte openWBs) kann für jeden Ladepunkt ein eigenes Ladepunkt-Profil angelegt werden, wobei hier jeweils eine eigene ID-Kennung zur Freischaltung hinterlegbar ist. 
+Hier müssen die ID-Tags eingetragen werden, welche ausschliesslich zur Entsperrung des Ladepunktes verwendet werden. Sind mehrere Ladepunkte vorhanden (z.B. Duo oder mehrere ferngesteuerte openWBs) kann für jeden Ladepunkt ein eigenes Ladepunkt-Profil angelegt werden, wobei hier jeweils eine eigene ID-Kennung zur Freischaltung hinterlegbar ist.
 
 Achtung: Ladepunkt-Profile müssen den Ladepunkten unter Ladepunkte zugeordnet werden!
 
 ##### Anmerkung: Bei allen Anpassungen der Einstellungen Speichern nicht vergessen!
 
-Zu **A. Sperre nach Abstecken** ist folgendes zu konfigurieren:  
+Zu **A. Sperre nach Abstecken** ist folgendes zu konfigurieren:
 Die Option **Sperre nach Abstecken** ist im **Ladepunkt-Profil** bei Ladepunkte auswählbar und bewirkt, dass der Ladepunkt nach Abstecken eines Fahrzeugs gesperrt wird. Es gibt hier dann folgende zwei Möglichkeiten diesen Ladepunkt wieder zu entsperren:
+
 1. die Option *Ladepunkt sperren* händisch im User Interface auf Nein setzen. Dadurch startet nach Anstecken eines Fahrzeugs das voreingestellte Fahrzeug den Ladevorgang.
-2. ein ID-Tag vorhalten, der im Ladepunkt-Profil hinterlegt ist. Dadurch wird der Ladepunkt automatisch entsperrt und das voreingestellte Fahrzeug startet den Ladevorgang. Ist der ID-Tag, welcher im Ladepunkt-Profil hinterlegt wurde identisch mit einem ID-Tag, der einem Fahrzeug zugeordnet ist, dann findet hier auch direkt eine Zuordnung zu einem Fahrzeug statt. Dabei wird der Ladepunkt entsperrt und das dem ID-Tag zugeordnete Fahrzeug startet den Ladevorgang. 
+2. ein ID-Tag vorhalten, der im Ladepunkt-Profil hinterlegt ist. Dadurch wird der Ladepunkt automatisch entsperrt und das voreingestellte Fahrzeug startet den Ladevorgang. Ist der ID-Tag, welcher im Ladepunkt-Profil hinterlegt wurde identisch mit einem ID-Tag, der einem Fahrzeug zugeordnet ist, dann findet hier auch direkt eine Zuordnung zu einem Fahrzeug statt. Dabei wird der Ladepunkt entsperrt und das dem ID-Tag zugeordnete Fahrzeug startet den Ladevorgang.
+
 Wurden mehrere Fahrzeuge mit demselben ID-Tag angelegt, dann startet das Fahrzeug den Ladevorgang, welches auf der Liste der Fahrzeuge dem ID-Tag zuerst zugeordnet wurde.
 Solange der Ladepunkt gesperrt ist, wird kein gültiger ausschliesslich einem Fahrzeug zugeordneter ID-Tag akzeptiert.
 Nach Starten eines Ladevorgangs wird kein neuer ID-Tag akzeptiert.
 
 Anmerkung: Im Fall, dass zwei oder mehrere Fahrzeuge mit unterschiedlichen ID-Tags an demselben (gesperrten) Ladepunkt laden dürfen, müssen beide ID-Tags der Fahrzeuge auch im Ladepunkt-Profil hinterlegt werden. Dadurch wird erstens der Ladepunkt entsperrt und zweitens das dem Fahrzeug zugeordnete Lade-Profil ausgewählt, wodurch dann das damit verknüpfte Fahrzeug mit den dort hinterlegten Ladeeinstellungen den Ladevorgang startet.
 
-Zu **B. Standard nach Abstecken** ist folgendes zu konfigurieren:  
+Zu **B. Standard nach Abstecken** ist folgendes zu konfigurieren:
 Die Option **Standard nach Abstecken** ist im **Lade-Profil** bei Fahrzeuge auswählbar. Diese Option macht nur Sinn, wenn neben dem Standard-Lade-Profil mindestens ein weiteres Lade-Profil und mindestens ein weiteres Fahrzeug angelegt wurde. Dabei ist dem Standard-Fahrzeug das Standard-Lade-Profil und dem weiteren Fahrzeug das weitere Lade-Profil zuzuweisen.
 Um diese Option sinnvoll zu nutzen, muss im Standard-Lade-Profil unter Allgemeine Optionen der aktive Lademodus auf **Stop** gestellt werden.
 Weiterhin muss in einem anderen zu nutzenden Lade-Profil unter Allgemeine Optionen **Standard nach Abstecken** aktiviert werden.
@@ -54,14 +61,16 @@ Insofern der Ladepunkt nicht gesperrt wurde, kann über einen ID-Tag der Ladevor
 Startet ein Fahrzeug über einen ID-Tag den Ladevorgang und ist in diesem Fahrzeug Standard nach Abstecken aktiviert, dann wird nach Abstecken auf das Standardfahrzeug gewechselt, unabhängig davon, welches Fahrzeug vorher ausgewählt war.
 Startet ein Fahrzeug über einen ID-Tag den Ladevorgang und ist in diesem Fahrzeug Standard nach Abstecken nicht aktiviert, dann wird nach Abstecken auf das letzte vorher ausgewählte Fahrzeug gewechselt.
 
-### Use Cases:
+### Use Cases
 
 #### Sperre nach Abstecken
+
 Sperre nach Abstecken kann an einem Ladepunkt verwendet werden, welcher das Laden gegenüber fremden Zugriff sichert. Wird der ID-Tag nur zum Sperren/Entsperren des Ladepunktes verwendet, dann startet immer das ausgewählte Fahrzeug den Ladevorgang. Dies kann im privaten Bereich mit nur einem Fahrzeug sinnvoll sein, damit nur dieses Fahrzeug auch laden darf. Die Option ist aber auch für Ladeparks sinnvoll, bei denen die Ladepunkte nur für eine Gruppe von ID-Tags freischaltbar sind und dem ID-Tag zum Entsperren auch gleichzeitig zugeordnet sind.
 
-#### Standard nach Abstecken:
+#### Standard nach Abstecken
+
 Standard nach Abstecken kann an einem Ladepunkt verwendet werden, welcher das Laden mehrere verschiedener Fahrzeuge ermöglichen soll. Werden mehrere Fahrzeuge mit verschiedenen Lade-Profilen und verschiedenen ID-Kennungen neben dem Standard-Fahrzeug angelegt, kann über die ID-Kennung zwischen den einzelnen Fahrzeugen gewechselt werden. Hier bietet sich beispielsweise ein privater Ladepunkt mit zwei Fahrzeugen an oder ein Ladepunkt in einer Firma mit verschiedenen Mitarbeitern.
 
 Standard nach Abstecken kann auch dazu verwendet werden, um beispielsweise zwischen zwei Fahrzeugen (und damit Fahrzeug-Profilen und Lade-Profilen) ohne ID-Tag zu wechseln, vor allem wenn nur eines der Fahrzeuge über die ID-Kennung zuverlässig erkannt wird.
 
-Stand 02. Juli 2024
\ No newline at end of file
+Stand 02. Juli 2024
diff --git a/docs/MQTT.md b/docs/MQTT.md
index 5681b86447..fd41df626c 100644
--- a/docs/MQTT.md
+++ b/docs/MQTT.md
@@ -1,10 +1,11 @@
 # MQTT
 
 ## Grundsätzliches
+
 MQTT bedeutet: Message Queuing Telemetry Transport. Es handelt sich hierbei um ein M2M (Machine to Machine) Protokoll.
-Für eine Kommunikation wird ein Broker (=Verwalter) benötigt, welcher die Nachrichten von den Sendern empfängt und an die Empfänger, welche sich für den Inhalt angemeldet haben, weiterleitet. Man spricht bei MQTT von publish und subscribe. Die Nachrichten werden in topics verschickt. 
+Für eine Kommunikation wird ein Broker (=Verwalter) benötigt, welcher die Nachrichten von den Sendern empfängt und an die Empfänger, welche sich für den Inhalt angemeldet haben, weiterleitet. Man spricht bei MQTT von publish und subscribe. Die Nachrichten werden in topics verschickt.
 
-openWB hat einen eigenen MQTT-Broker integriert, über den die Kommunikation läuft. Möchte man die Wallbox steuern oder Status-Nachrichten empfangen, sollte man sich als Client an diesem Broker anmelden. Der Broker läuft auf der IP der openWB unter Port 1883 ohne Nutzerauthentifizierung. 
+openWB hat einen eigenen MQTT-Broker integriert, über den die Kommunikation läuft. Möchte man die Wallbox steuern oder Status-Nachrichten empfangen, sollte man sich als Client an diesem Broker anmelden. Der Broker läuft auf der IP der openWB unter Port 1883 ohne Nutzerauthentifizierung.
 
 ## Zähler
 
@@ -12,10 +13,9 @@ Als EVU-Zähler können auch Werte über MQTT empfangen werden. Die Integration
 
 ## Smarthome
 
-
 ## Steuerbefehle
 
-Auf eigene Gefahr! Die folgenden Einstellungen und Kommunikationsmöglichkeiten sind nicht spezifiziert und nur von kundigen Nutzern mit entpsrechendem Fachwissen über die Konsequenzen durchzuführen. 
+Auf eigene Gefahr! Die folgenden Einstellungen und Kommunikationsmöglichkeiten sind nicht spezifiziert und nur von kundigen Nutzern mit entpsrechendem Fachwissen über die Konsequenzen durchzuführen.
 
 Bei den Steuerbefehlen ist # immer durch den entsprechenden Ladepunkt/Zähler/Fahrzeug zu ersetzen. Dies ist zwingend zu beachten, da ansonsten neue Fahrzeuge/Zähler etc. erstellt werden, wenn es nicht die ID eines Konfigurierten Gerätes ist.
 
@@ -25,7 +25,7 @@ Lademodus auf "Sofortladen"
 PV-Laden
 `openWB/set/vehicle/template/charge_template/#/chargemode/selected -> pv_charging`
 
-"Minimal Stromstärke" im PV-Laden auf z.B. 6A 
+"Minimal Stromstärke" im PV-Laden auf z.B. 6A
 `openWB/set/vehicle/template/charge_template/#/chargemode/pv_charging/min_current -> 6`
 
 SoC-Limit auf z.B. 80% setzen
@@ -44,7 +44,7 @@ _Work in Progress_
 
 ## Statusnachrichten
 
-Wo wird welcher nützliche Inhalt gesendet. 
+Wo wird welcher nützliche Inhalt gesendet.
 
 Ladeprofil Status (verschachteltes JSON, muss entsprechend weiter decodiert werden...):
 openWB/vehicle/template/charge_template/1
@@ -65,7 +65,7 @@ SoC im manuellen Modus setzen:
 `openWB/set/vehicle/#/soc_module/calculated_soc_state/manual_soc`
 
 ### Lademodus
-Lademodus des angesteckten Auto wird in den LP geschrieben. Solange immer dasselbe Auto dran steckt ist das gleich, aber wenn Du ein anderes Auto ansteckst, bei mir z.b. ein Gastauto und Du nur den Lademodus deines normalen Auto ausliest und damit steuerst, ist der dortige Lademodus halt dann nicht der eigentliche des LP
 
+Lademodus des angesteckten Auto wird in den LP geschrieben. Solange immer dasselbe Auto dran steckt ist das gleich, aber wenn Du ein anderes Auto ansteckst, bei mir z.b. ein Gastauto und Du nur den Lademodus deines normalen Auto ausliest und damit steuerst, ist der dortige Lademodus halt dann nicht der eigentliche des LP
 
-_Work in Progress_
\ No newline at end of file
+_Work in Progress_
diff --git a/docs/Neues Modul programmieren.md b/docs/Neues Modul programmieren.md
index b856463bdc..476ae462c2 100644
--- a/docs/Neues Modul programmieren.md	
+++ b/docs/Neues Modul programmieren.md	
@@ -1,24 +1,27 @@
 Um die Programmierung neuer Module zu erleichtern, findet Ihr unter [docs/samples](https://github.com/openWB/core/tree/master/docs/samples?v30-12-2022) Muster für neue Geräte, Fahrzeuge, Cloud-Sicherung und Stromanbieter für strompreisbasiertes Laden.
-Die Muster sind nur als einheitlicher Ausgangspunkt zu verstehen! Es kann durchaus notwendig sein, Elemente der verschiedenen Muster zu kombinieren, weitere Einstellungs-Parameter hinzuzufügen oder bei einem Http-Request eine Authentifizierung durchzuführen.  
+Die Muster sind nur als einheitlicher Ausgangspunkt zu verstehen! Es kann durchaus notwendig sein, Elemente der verschiedenen Muster zu kombinieren, weitere Einstellungs-Parameter hinzuzufügen oder bei einem Http-Request eine Authentifizierung durchzuführen.
 Das Muster kopiert Ihr in den _packages/modules/\*Modul-Typ\*/\*Modul-Name\*_-Ordner. Ordnername und Typ in config.py->Sample->type müssen identisch sein, damit das Gerät in der automatisch generierten Auswahlliste im UI angezeigt wird.
 
 Wenn keine Einstellungsseiten in vue hinterlegt sind, sind die Einstellungen als json-Objekt editierbar. Muster für die Einstellungsseiten findet Ihr im Ordner [samples/samples_gui](https://github.com/openWB/core/tree/02b34ff216b0dfc83fdc56a53b63d52d5d9a79d2/docs/samples/samples_gui)
 
 Außer der modulspezifischen Abfrage erfolgt alles weitere zentral und muss daher nicht in jedem Modul implementiert werden:
+
 * Speichern, Runden, Loggen und eine Plausibilitätsprüfung der Werte
 * Prüfung, ob das Intervall zB zur SoC- oder Preis-Abfrage abgelaufen ist
 * Behandlung von Exceptions
 
-Exceptions dürfen daher nur abgefangen werden, wenn sie 
+Exceptions dürfen daher nur abgefangen werden, wenn sie
+
 * behoben werden können.
 * weitere Aktionen vorgenommen werden sollen. Danach mit `raise e` die Exception erneut werfen, damit sie weiterverarbeitet werden kann.
 
-Bei Modulen, die einen http-Request ausführen, get/post-Requests immer mit `req.get_http_session().get/post()` aus dem Ordner modules/common stellen. [get_http_session](https://github.com/openWB/core/blob/02b34ff216b0dfc83fdc56a53b63d52d5d9a79d2/packages/modules/common/req.py#L8) loggt die Antwort und prüft in einem Callback, ob ein Fehler aufgetreten ist und wirft eine Exception. Bei gängigen Fehlern wird diese in einen Text übersetzt, der auch für den Benutzer verständlich ist.  
+Bei Modulen, die einen http-Request ausführen, get/post-Requests immer mit `req.get_http_session().get/post()` aus dem Ordner modules/common stellen. [get_http_session](https://github.com/openWB/core/blob/02b34ff216b0dfc83fdc56a53b63d52d5d9a79d2/packages/modules/common/req.py#L8) loggt die Antwort und prüft in einem Callback, ob ein Fehler aufgetreten ist und wirft eine Exception. Bei gängigen Fehlern wird diese in einen Text übersetzt, der auch für den Benutzer verständlich ist.
 
-Ein paar Hintergrund-Details, wie die Fehlerbehandlung umgesetzt ist:  
+Ein paar Hintergrund-Details, wie die Fehlerbehandlung umgesetzt ist:
 Die update-Methode des Moduls wird immer mit dem [Kontextmanager](https://github.com/openWB/core/blob/02b34ff216b0dfc83fdc56a53b63d52d5d9a79d2/packages/modules/common/component_context.py#L11) aufgerufen. Dieser prüft nach dem Ende der Update-Methode, ob eine Exception aufgetreten ist und loggt diese und setzt die Topics `.../get/fault_state/` auf 2 und in `.../get/fault_str` den Text der Exception. fault_str wird dann im jeweiligen Modul auf der Status-Seite ausgegeben, um dem Benutzer eine Rückmeldung zu geben.
 
 ### Neues Gerät programmieren
+
 Für neue Geräte gibt es drei Muster:
 
 1. sample_modbus: Für Geräte, die per Modbus abgefragt werden. Dazu wird im Gerät ein Modbus-Client instanziiert, der dann an die Komponenten übergeben wird.
@@ -31,9 +34,10 @@ Wenn von der Komponente die Zählerstände für Import und Export gelesen werden
 Bei Hybrid-Systemen erfolgt die Verrechnung von Speicher-und PV-Leistung automatisiert, wenn Speicher und Wechselrichter in der Hierarchie wie [hier](https://github.com/openWB/core/wiki/Hybrid-System-aus-Wechselrichter-und-Speicher) beschrieben angeordnet sind. Wenn noch weitere spezifische Berechnungen erforderlich sind, müsst Ihr die Komponenten wie unter sample_request_per_device abfragen. Die update-Methode der Komponenten wird dann in eine get- und set-Methode aufgeteilt. Die get-Methode liefert den Component-State zurück, dieser wird in der update_components-Methode des Geräts verrechnet und dann die set-Methode der Komponente aufgerufen, die die store-Methode der Komponente aufruft.
 
 ### Neues Fahrzeug programmieren
-Beim Aufruf der _updater_-Funktion wird die Variable _vehicle_update_data_ übergeben. Darin sind aktuelle Daten aus der Regelung, wie zB Stecker-Status oder die geladene Energie seit Anstecken, enthalten, um Besonderheiten wie zB das Aufwecken des Fahrzeugs oder eine manuelle Berechnung während des Ladevorgangs umsetzen zu können.  
+
+Beim Aufruf der _updater_-Funktion wird die Variable _vehicle_update_data_ übergeben. Darin sind aktuelle Daten aus der Regelung, wie zB Stecker-Status oder die geladene Energie seit Anstecken, enthalten, um Besonderheiten wie zB das Aufwecken des Fahrzeugs oder eine manuelle Berechnung während des Ladevorgangs umsetzen zu können.
 Bei manchen Fahrzeugen kann der SoC nicht während der Ladung abgefragt werden. Damit dieser während der Ladung berechnet wird, muss in der soc.py bei der Instanziierung von `ConfigurableVehicle` der Parameter `calc_while_charging` auf `True` gesetzt werden.
 
-Nach dreimaliger fehlgeschlagener Abfrage wird der SoC auf 0% gesetzt, damit in jedem Fall geladen wird. 
+Nach dreimaliger fehlgeschlagener Abfrage wird der SoC auf 0% gesetzt, damit in jedem Fall geladen wird.
 
 _Bei Fragen programmiert Ihr das SoC-Modul vorerst, wie Ihr es versteht, und erstellt einen (Draft-)PR. Wir unterstützen Euch gerne per Review.
diff --git a/docs/NextCloud als Sicherungs-Cloud einrichten.md b/docs/NextCloud als Sicherungs-Cloud einrichten.md
index bdb7a9041b..9077e27424 100644
--- a/docs/NextCloud als Sicherungs-Cloud einrichten.md	
+++ b/docs/NextCloud als Sicherungs-Cloud einrichten.md	
@@ -14,10 +14,10 @@ Freigabelink z.B.: https://kim.nl.tab.digital/s/tUbHHrEdGltSRgx
 
 Wahl: BackupCloud: NextCloud
 Unterpunkt: Einstellungen für Backup-Cloud Modul "NextCloud"
-Cloud-URL: https://mydomain.de z.B.: https://kim.nl.tab.digital OHNE /s/ oder /
+Cloud-URL: <https://mydomain.de> z.B.: <https://kim.nl.tab.digital> OHNE /s/ oder /
 Benutzername: dein shared token, also z.B.: tUbHHrEdGltSRgx
 Passwort: kann leergelassen oder irgendetwas eingetragen werden, spielt keine Rolle
 
 Beide Varianten wurden getestet und funktionieren.
 
-Stand 10. April 2024
\ No newline at end of file
+Stand 10. April 2024
diff --git a/docs/Samba als Sicherung einrichten.md b/docs/Samba als Sicherung einrichten.md
index 600de6540e..adcb638e0e 100644
--- a/docs/Samba als Sicherung einrichten.md	
+++ b/docs/Samba als Sicherung einrichten.md	
@@ -1,6 +1,7 @@
 Zunächst einen neuen Ordner erstellen/auswählen, in den die Sicherungen hochgeladen werden sollen.
 
 Nachfolgende Schritte müssen auf dem Bereitstellenden system gemacht werden
+
 1. SMB Freigabe erstellen (Auf NAS etc.)
 2. User einrichten und berechtigen - R/W
 
@@ -22,7 +23,7 @@ Bei manchen Systemen kann es notwendig sein das Mindest-SMB-Protokoll auf SMB2 z
 
 Anleitung für Samba Server auf einem Raspberry Pi (z.B.: Stand alone)
 
-1. Installieren von Samba 
+1. Installieren von Samba
 sudo apt-get update
 sudo apt-get install samba samba-common smbclient
 2. Prüfen ob Samba läuft
@@ -30,8 +31,8 @@ sudo service smbd status
 sudo service nmbd status
 3. Samba User anlegen
 sudo useradd testsmb
-Optional: 
-4. Falls users nicht vorhanden: sudo groupadd users 
+Optional:
+4. Falls users nicht vorhanden: sudo groupadd users
 check mit getent group
 5. Hinzufügen des Samba Users zur Gruppe users
 sudo usermod -aG users testsmb
@@ -58,14 +59,13 @@ sudo nano /etc/samba/smb.conf
   valid users = testsmb
   path = /home/smb/testsmb
   read only = no
-  
 9. Testen ob die smb.conf noch funktioniert
 testparm
 10. Benutzer aktivieren
 sudo smbpasswd -a testsmb
 New SMB password: testSMB
 Retype new SMB password: testSMB
-Optional 
+Optional
 11. Sichergehen, dass Benutzer aktiviert ist
 sudo smbpasswd -e testsmb
 12. IP-Adresse des Raspberry Pis notieren
diff --git a/docs/Typische-Anwendungsfaelle.md b/docs/Typische-Anwendungsfaelle.md
index e24483be49..6152ebb72f 100644
--- a/docs/Typische-Anwendungsfaelle.md
+++ b/docs/Typische-Anwendungsfaelle.md
@@ -1,29 +1,36 @@
-#Typische Anwendungsfälle
+# Typische Anwendungsfälle
+
 ## Privater Haushalt, ein E-Auto und PV-Anlage
+
 In diesem Szenario sind die Ziele meistens, das Auto morgens für den Weg zur Arbeit fahrbereit zu haben, aber bis dahin möglichst viel Energie aus der PV-Anlage zum Laden zu nutzen.
-Hierfür ist die Funktion *Zielladen* zu nutzen. Auch, wenn es vom Namen her scheint, dass nur zu einem festen Zeitpunkt eine definierte Energiemenge in das EV geladen sein soll, wird dennoch bis zum Beginn dieses erzwingenen Ladevorgangs PV-Energie, sofern vorhanden, genutzt. 
+Hierfür ist die Funktion *Zielladen* zu nutzen. Auch, wenn es vom Namen her scheint, dass nur zu einem festen Zeitpunkt eine definierte Energiemenge in das EV geladen sein soll, wird dennoch bis zum Beginn dieses erzwingenen Ladevorgangs PV-Energie, sofern vorhanden, genutzt.
 
 ![Zielladen](pictures/Anwendungsfaelle_zielladen.jpg)
 
-Einstellbar ist der Ziel SoC, der in vielen Fällen auf 80% eingestellt wird, da eine höhere Ladung den Akku des EV überproportional belastet. Dennoch sollte ab und zu der Akku auf 100% geladen und dort über kurze Zeit gehalten werden, damit die Zellen sich wieder balancieren können. 
+Einstellbar ist der Ziel SoC, der in vielen Fällen auf 80% eingestellt wird, da eine höhere Ladung den Akku des EV überproportional belastet. Dennoch sollte ab und zu der Akku auf 100% geladen und dort über kurze Zeit gehalten werden, damit die Zellen sich wieder balancieren können.
 In dem oben gezeigten Beispiel ist der Ladestrom mit 13A eingestellt. Somit bleibt bei einem 3-phasigen 11kW-Lader noch Reserve, um die Stromstärke kurz vor Ende ggf. noch zu erhöhen.
 
-Als Zielzeit ist die Abfahrtzeit Abfahrt einzustellen. Die Regelung berechnet aus dem aktuellen SoC des Fahrzeugs, sowie aus den zwingend korrekt anzugebenden Maximalwerten der Ladeströme im Ladeprofil, den Zeitpunkt, an dem die Ladung starten muss. 
+Als Zielzeit ist die Abfahrtzeit Abfahrt einzustellen. Die Regelung berechnet aus dem aktuellen SoC des Fahrzeugs, sowie aus den zwingend korrekt anzugebenden Maximalwerten der Ladeströme im Ladeprofil, den Zeitpunkt, an dem die Ladung starten muss.
 Es empfielt sich den Ladestrom im Ladeprofil unter Zielladen etwas niedriger als die Möglichkeiten der Wallbox und des Fahrzeugs anzugeben, damit etwas Puffer vorhanden ist, falls das Auto zu spät angesteckt worden ist.
 
-Falls das EV durch eine Standheizung vor Fahrtbeginn vorgeheizt werden soll, kann hierfür ein Zeitslot mit _Laden nach Zeitplan_ konfiguriert werden. Zeitladen kann zusätzlich zum gewählten Lademodus, hier Zielladen, aktiviert werden. So wird der Akku durch die Standheizung nicht belastet, sondern der Strom kommt aus dem EVU-Netz. Hier kann dann ein minimaler Strom von z.B. 6A gewählt werden, da die Leistungsaufnahme für die Heizung meist nicht mehr als 1kW benötigt. 
+Falls das EV durch eine Standheizung vor Fahrtbeginn vorgeheizt werden soll, kann hierfür ein Zeitslot mit _Laden nach Zeitplan_ konfiguriert werden. Zeitladen kann zusätzlich zum gewählten Lademodus, hier Zielladen, aktiviert werden. So wird der Akku durch die Standheizung nicht belastet, sondern der Strom kommt aus dem EVU-Netz. Hier kann dann ein minimaler Strom von z.B. 6A gewählt werden, da die Leistungsaufnahme für die Heizung meist nicht mehr als 1kW benötigt.
+
+### Außerplanmäßige Fahrt
 
-###Außerplanmäßige Fahrt
 Wird das Fahrzeug außer der Reihe benötigt und es soll kurzfristig viel Energie in den Akku geladen werden, ist die openWB auf der Startseite auf *Sofortladen* zu stellen. Hier ist es möglich, mit der maximal verfügbaren Leistung den Akku so schnell wie möglich aufzuladen.
 
 ### Ausnutzen der PV-Anlage bei wechseldem Wetter
-Insbesondere im Frühling und Herbst kann die PV-Leistung bei bewölktem Himmel stark schwanken. Um ein häufiges Beenden und Starten des Ladevorgangs zu vermeiden, kann bei dem Modus PV ein *Minimaler Dauerstrom* eingestellt werden.  
-Ist die Einstellung auf 0A, so wird ausschließlich mit solarem Überschuss geladen. Steigt die Netzeinspeisung über den in _Konfiguration->Ladeeinstellungen ->PV-Laden_ eingestellten Grenzwert, wird nach Ablauf der Einschaltverzögerung die Ladung gestartet. Mit der nächstgrößeren Einstellmöglichkeit 6A, wird (z.B. bei einphasigem Laden) kontinuierlich mit ~1,3kW geladen. Wird ins Netz eingespeist, wird die Ladeleistung hochgeregelt, sodass möglichst weder Strom eingespeist noch bezogen wird und, je nach Möglichkeiten des Fahrzeugs, auf 3-phasiges Laden umgeschaltet. 
+
+Insbesondere im Frühling und Herbst kann die PV-Leistung bei bewölktem Himmel stark schwanken. Um ein häufiges Beenden und Starten des Ladevorgangs zu vermeiden, kann bei dem Modus PV ein *Minimaler Dauerstrom* eingestellt werden.
+Ist die Einstellung auf 0A, so wird ausschließlich mit solarem Überschuss geladen. Steigt die Netzeinspeisung über den in _Konfiguration->Ladeeinstellungen ->PV-Laden_ eingestellten Grenzwert, wird nach Ablauf der Einschaltverzögerung die Ladung gestartet. Mit der nächstgrößeren Einstellmöglichkeit 6A, wird (z.B. bei einphasigem Laden) kontinuierlich mit ~1,3kW geladen. Wird ins Netz eingespeist, wird die Ladeleistung hochgeregelt, sodass möglichst weder Strom eingespeist noch bezogen wird und, je nach Möglichkeiten des Fahrzeugs, auf 3-phasiges Laden umgeschaltet.
 
 ![PV-Min](pictures/Anwendungsfaelle_minStrom.jpg)
 
-##Integration in Hausautomation
-openWB eignet sich hervorragend zur Integration in eine bestehende Hausautomatins-Infrastruktur, da über den integrierten MQTT-Broker Befehle sowie Statusmeldungen ausgetauscht werden können. 
+## Integration in Hausautomation
+
+openWB eignet sich hervorragend zur Integration in eine bestehende Hausautomatins-Infrastruktur, da über den integrierten MQTT-Broker Befehle sowie Statusmeldungen ausgetauscht werden können.
+
 ### MQTT
-Zum Debugging empfiehlt sich das Programm [MQTT-Explorer?](http://mqtt-explorer.com/). 
-Eine detailierte Erklärung ist auf der [MQTT-Seite](https://github.com/openWB/core/wiki/MQTT) zu finden.
\ No newline at end of file
+
+Zum Debugging empfiehlt sich das Programm [MQTT-Explorer?](http://mqtt-explorer.com/).
+Eine detailierte Erklärung ist auf der [MQTT-Seite](https://github.com/openWB/core/wiki/MQTT) zu finden.
diff --git a/docs/Wiki-Eintrag erstellen.md b/docs/Wiki-Eintrag erstellen.md
index af529a2e6e..04df94fff6 100644
--- a/docs/Wiki-Eintrag erstellen.md	
+++ b/docs/Wiki-Eintrag erstellen.md	
@@ -9,9 +9,9 @@ Wenn ihr euch am Wiki beteiligen wollt müsst ihr zunächst einen Github Account
 ![Fork](pictures/Wiki-Eintrag_erstellen_Fork.png)
 
 Dies ist nötig, da dem "normalen Mitarbeiter" das Projekt nicht gehört und man somit keine Schreibrechte im Projekt des OpenWB Accounts hat. Man erstellt also eine verknüfpte Kopie in seinem eigenen Account.
-Hier wird dann am besten ein Branch erstellt, den ihr sinnvoll benennt (z.B. Wiki oder ähnlich). In diesem Branch arbeitet ihr und ändert und ergänzt entsprechend euren Erfahrungen zu den Themen in denen ihr euch auskennt. Danach müsst ihr Änderungen mit *Commit* in die (lokale) Git-Umgebung übernehmen und mit *Push* zu Github übertragen. 
+Hier wird dann am besten ein Branch erstellt, den ihr sinnvoll benennt (z.B. Wiki oder ähnlich). In diesem Branch arbeitet ihr und ändert und ergänzt entsprechend euren Erfahrungen zu den Themen in denen ihr euch auskennt. Danach müsst ihr Änderungen mit *Commit* in die (lokale) Git-Umgebung übernehmen und mit *Push* zu Github übertragen.
 Dies beginnt ihr in eurem eigenen Branch und wählt im Menü oben Pull-Request aus und füllt die Felder mit einer Beschreibung was ihr gemacht habt.
 
 ![Pull-Request](pictures/Wiki-Eintrag_erstellen_Pull.jpg)
 
-Für euren ersten Beitrag müsst ihr noch von einem Projektmitarbeiter freigeschaltet werden. Dies kann einige Zeit dauern. Eventuell werden auch noch Änderungen vorgeschlagen, die ihr dann diskutieren oder einfach annehmen könnt. 
+Für euren ersten Beitrag müsst ihr noch von einem Projektmitarbeiter freigeschaltet werden. Dies kann einige Zeit dauern. Eventuell werden auch noch Änderungen vorgeschlagen, die ihr dann diskutieren oder einfach annehmen könnt.
diff --git a/docs/Zaehler.md b/docs/Zaehler.md
index 1abb80e036..f904f05b54 100644
--- a/docs/Zaehler.md
+++ b/docs/Zaehler.md
@@ -7,7 +7,6 @@ Im einfachsten Fall geschieht dies durch Kauf und Einbau eines [EVU-Kits](##EVU-
 
 Es gibt viele verschiedene Möglichkeiten, Zähler als auch Wechselrichter in das openWB-System einzufügen.  Die Struktur der Zähler muss dann im  [Lastmanagement](https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Zähler) dem System bekanntgegeben werden. Hier können auch [virtuelle Zähler](##Virtuelle Zähler)  hinzugefügt werden, welche openWB-intern die untergeordneten Zähler verrechnen.
 
-
 ## EVU-Kit
 
 Das [EVU-Kit (Link zum Shop)](https://openwb.de/shop/?product=openwb-evu-kit) ist die einfachste Art in der Software einen Zähler an die openWB zu integrieren. Der Zähler muss von einem Elektriker direkt hinter dem Zähler des EVU in den Zählerschrank integriert werden. Es gibt, je nach Kapazität des Hausanschlusses, verschiedene Messvarianten des Zählers, welche sich von der Integration unterscheiden. Dies betrifft aber nur die Arbeit des Elektrikers.
@@ -21,6 +20,7 @@ openWB hat einen MQTT-Broker integriert, welcher unter Port 1883 (ohne Verschlü
 
 Folgende Werte können dem MQTT-Zähler übergeben werden. Die ID ist individuell und wird beim Anlegen der MQTT-Komponente angezeigt.
 Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich:
+
 - **openWB/set/counter/id/get/power**
   - **Beschreibung**: Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv für Bezug, negativ für Einspeisung.
   - **Beispiel**: `-123.45`
@@ -34,11 +34,13 @@ Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlic
   - **Beispiel**: `123.45`
 
 Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt:
+
 - **openWB/set/counter/id/get/currents**
   - **Beschreibung**: Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv für Bezug, negativ für Einspeisung.
   - **Beispiel**: `[1.2,2.3,-2.1]`
 
 Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet:
+
 - **openWB/set/counter/id/get/frequency**
   - **Beschreibung**: Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen.
   - **Beispiel**: `50.12`
@@ -65,27 +67,24 @@ Eine weitere Möglichkeit des Datenabrufs wird im [openWB-Forum](https://openwb.
 
 ### Solaranzeige
 
-[Solaranzeige](https://solaranzeige.de)  ist ebenfalls ein OpenSource Projekt, welches der Visualisierung, Speicherung und Weiterverarbeitung von PV-Daten dient. 
-Dieses Projekt unterstützt aktuell (Stand 2024-02) mehr Wechselrichter als openWB. Somit können hier mit etwas Aufwand existierende Wechselrichter eingebunden und die Daten weitergereicht werden, ohne Arbeiten am Zählerschrank durchzuführen zu lassen. 
+[Solaranzeige](https://solaranzeige.de)  ist ebenfalls ein OpenSource Projekt, welches der Visualisierung, Speicherung und Weiterverarbeitung von PV-Daten dient.
+Dieses Projekt unterstützt aktuell (Stand 2024-02) mehr Wechselrichter als openWB. Somit können hier mit etwas Aufwand existierende Wechselrichter eingebunden und die Daten weitergereicht werden, ohne Arbeiten am Zählerschrank durchzuführen zu lassen.
 Die Software ist originär dafür vorgesehen auf einen Raspberry per Image installiert zu werden und nach wenigen Konfigurationsschritten lauffähig zu sein. Es gibt auch schon Portierungen für [Docker](https://github.com/DeBaschdi/docker.solaranzeige).
 Solaranzeige kann mit vielen Wechselrichtern kommunizieren und auch teilweise die angeschlossenen Zähler auslesen. Eine zeitbasierte Datenbank (InfluxDb), Datenweitergabe über einen MQTT-Client sowie eine Visualisierung mit Grafana sind direkt integriert. Es kann aber auch bereits existierende Infrastruktur verwendet werden.
 In dem Projekt wird (mit Stand von 2021) auch die Möglichkeit dokumentiert die Daten direkt an openWB weiterzuleiten. Dann kann jedoch kein weiterer MQTT-Broker bedient werden.
-Alternativ können die Zählerwerte an eine Hausautomationsserver weitergegeben, dort ggf. vorzeichenkorrigiert und dann über einen zweiten MQTT-Client zur openWB geschickt werden. 
+Alternativ können die Zählerwerte an eine Hausautomationsserver weitergegeben, dort ggf. vorzeichenkorrigiert und dann über einen zweiten MQTT-Client zur openWB geschickt werden.
 
 ## Virtuelle Zähler
 
-Virtuelle Zähler sind, wie der Name schon sagt, nicht physikalisch vorhanden. Sie dienen in der Struktur des [Lastmanagement](https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Zähler) dazu, Ströme und/oder Leistung zu begrenzen oder Werte aus untergeordneten einzelnen Zählern zu akkumulieren. 
+Virtuelle Zähler sind, wie der Name schon sagt, nicht physikalisch vorhanden. Sie dienen in der Struktur des [Lastmanagement](https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Zähler) dazu, Ströme und/oder Leistung zu begrenzen oder Werte aus untergeordneten einzelnen Zählern zu akkumulieren.
 
 ## Timing
-Das zyklische Senden bzw. Bereitstellen der Zählerwerte ist für eine funktionierende Regelung essentiell. Unter 
-
-> Einstellungen - Allgemein - Hardware
 
-kann die Regelgeschwindigkeit ausgewählt werden. Es gibt die Intervalle:
- - Normal
- - Langsam (20s)
- - Sehr langsam (60s)
+Das zyklische Senden bzw. Bereitstellen der Zählerwerte ist für eine funktionierende Regelung essentiell. Unter ``Einstellungen - Allgemein - Hardware`` kann die Regelgeschwindigkeit ausgewählt werden. Es gibt die Intervalle:
 
-Hier muss eine Regelgeschwindigkeit entsprechend der Aktualisierungsrate der Zählerwerte angegeben werden, da ansonsten die Rückmeldung des Systems zu spät kommt und die openWB weiter versucht nachzuregeln. 
-Insbesondere bei der Verwendung von [Solaranzeige](### Solaranzeige) ist aufgrund der 20-30s dauerenden Aktualisierungsrate die Regelungsgeschwindigkeit anzupassen. 
+- Normal
+- Langsam (20s)
+- Sehr langsam (60s)
 
+Hier muss eine Regelgeschwindigkeit entsprechend der Aktualisierungsrate der Zählerwerte angegeben werden, da ansonsten die Rückmeldung des Systems zu spät kommt und die openWB weiter versucht nachzuregeln.
+Insbesondere bei der Verwendung von [Solaranzeige](### Solaranzeige) ist aufgrund der 20-30s dauerenden Aktualisierungsrate die Regelungsgeschwindigkeit anzupassen.
diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md
index 46a5e1bd78..5738f7aa23 100644
--- a/docs/_Sidebar.md
+++ b/docs/_Sidebar.md
@@ -15,7 +15,7 @@
   * [ID-Tag/Ladung nur nach Freischaltung](https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung)
   * [Hybrid-System aus Wechselrichter und Speicher](https://github.com/openWB/core/wiki/Hybrid-System-aus-Wechselrichter-und-Speicher)
 * Integration in Heimautomation
-  *  [MQTT](https://github.com/openWB/core/wiki/MQTT)
+  * [MQTT](https://github.com/openWB/core/wiki/MQTT)
 * Mitarbeit am Projekt
   * [Wiki-Eintrag erstellen](https://github.com/openWB/core/wiki/Wiki-Eintrag_erstellen)
   * [Entwicklungsumgebung](https://github.com/openWB/core/wiki/Entwicklungsumgebung)

From 909cc426aba2aefea9cf5f3ab80ac0de45131403 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Mon, 30 Sep 2024 10:06:37 +0200
Subject: [PATCH 092/205] updated gui samples

---
 docs/samples/samples_gui/backup_cloud.vue | 31 +++++++++-------------
 docs/samples/samples_gui/bat.vue          | 14 +++++-----
 docs/samples/samples_gui/counter.vue      | 14 +++++-----
 docs/samples/samples_gui/device.vue       | 32 +++++++++++------------
 docs/samples/samples_gui/inverter.vue     | 14 +++++-----
 docs/samples/samples_gui/vehicle.vue      | 32 +++++++++--------------
 6 files changed, 61 insertions(+), 76 deletions(-)

diff --git a/docs/samples/samples_gui/backup_cloud.vue b/docs/samples/samples_gui/backup_cloud.vue
index 1084e6f743..1a2222d095 100644
--- a/docs/samples/samples_gui/backup_cloud.vue
+++ b/docs/samples/samples_gui/backup_cloud.vue
@@ -1,26 +1,19 @@
 <template>
-	<div class="backup-cloud-sample">
-		<openwb-base-heading>
-			Einstellungen für Sample-Backup Cloud
-			<span class="small">(Modul: {{ $options.name }})</span>
-		</openwb-base-heading>
-	</div>
+  <div class="backup-cloud-sample">
+    <openwb-base-heading>
+      Einstellungen für Sample-Backup Cloud
+    </openwb-base-heading>
+  </div>
 </template>
 
 <script>
+import BackupCloudConfigMixin from "../BackupCloudConfigMixin.vue";
+
 export default {
-	name: "BackupCloudSample",
-	emits: ["update:configuration"],
-	props: {
-		configuration: { type: Object, required: true },
-	},
-	data() {
-		return {};
-	},
-	methods: {
-		updateConfiguration(event, path = undefined) {
-			this.$emit("update:configuration", { value: event, object: path });
-		},
-	},
+  name: "BackupCloudSample",
+  mixins: [BackupCloudConfigMixin],
+  data() {
+    return {};
+  },
 };
 </script>
diff --git a/docs/samples/samples_gui/bat.vue b/docs/samples/samples_gui/bat.vue
index d67a31a718..4620fd2ab1 100644
--- a/docs/samples/samples_gui/bat.vue
+++ b/docs/samples/samples_gui/bat.vue
@@ -1,16 +1,16 @@
 <template>
-	<div class="device-sample-bat">
-		<openwb-base-heading>
-			Einstellungen für Sample Batteriespeicher
-		</openwb-base-heading>
-	</div>
+  <div class="device-sample-bat">
+    <openwb-base-heading>
+      Einstellungen für Sample Batteriespeicher
+    </openwb-base-heading>
+  </div>
 </template>
 
 <script>
 import ComponentConfigMixin from "../../ComponentConfigMixin.vue";
 
 export default {
-	name: "DeviceSampleBat",
-	mixins: [ComponentConfigMixin],
+  name: "DeviceSampleBat",
+  mixins: [ComponentConfigMixin],
 };
 </script>
diff --git a/docs/samples/samples_gui/counter.vue b/docs/samples/samples_gui/counter.vue
index 2d1f80528e..9b6678d8e3 100644
--- a/docs/samples/samples_gui/counter.vue
+++ b/docs/samples/samples_gui/counter.vue
@@ -1,16 +1,16 @@
 <template>
-	<div class="device-sample-counter">
-		<openwb-base-heading>
-			Einstellungen für Sample Zähler
-		</openwb-base-heading>
-	</div>
+  <div class="device-sample-counter">
+    <openwb-base-heading>
+      Einstellungen für Sample Zähler
+    </openwb-base-heading>
+  </div>
 </template>
 
 <script>
 import ComponentConfigMixin from "../../ComponentConfigMixin.vue";
 
 export default {
-	name: "DeviceSampleCounter",
-	mixins: [ComponentConfigMixin],
+  name: "DeviceSampleCounter",
+  mixins: [ComponentConfigMixin],
 };
 </script>
diff --git a/docs/samples/samples_gui/device.vue b/docs/samples/samples_gui/device.vue
index ce113374a5..f070ba7ec3 100644
--- a/docs/samples/samples_gui/device.vue
+++ b/docs/samples/samples_gui/device.vue
@@ -1,25 +1,25 @@
 <template>
-	<div class="device-sample">
-		<openwb-base-heading>
-			Einstellungen für Sample
-		</openwb-base-heading>
-		<openwb-base-text-input
-			title="IP oder Hostname"
-			subtype="host"
-			required
-			:model-value="device.configuration.ip_address"
-			@update:model-value="
-				updateConfiguration($event, 'configuration.ip_address')
-			"
-		/>
-	</div>
+  <div class="device-sample">
+    <openwb-base-heading>
+      Einstellungen für Sample
+    </openwb-base-heading>
+    <openwb-base-text-input
+      title="IP oder Hostname"
+      subtype="host"
+      required
+      :model-value="configuration.ip_address"
+      @update:model-value="
+        updateConfiguration($event, 'configuration.ip_address')
+      "
+    />
+  </div>
 </template>
 
 <script>
 import DeviceConfigMixin from "../../DeviceConfigMixin.vue";
 
 export default {
-	name: "DeviceSample",
-	mixins: [DeviceConfigMixin],
+  name: "DeviceSample",
+  mixins: [DeviceConfigMixin],
 };
 </script>
diff --git a/docs/samples/samples_gui/inverter.vue b/docs/samples/samples_gui/inverter.vue
index 42de558f6a..56b6882679 100644
--- a/docs/samples/samples_gui/inverter.vue
+++ b/docs/samples/samples_gui/inverter.vue
@@ -1,16 +1,16 @@
 <template>
-	<div class="device-sample-inverter">
-		<openwb-base-heading>
-			Einstellungen für Sample Wechselrichter
-		</openwb-base-heading>
-	</div>
+  <div class="device-sample-inverter">
+    <openwb-base-heading>
+      Einstellungen für Sample Wechselrichter
+    </openwb-base-heading>
+  </div>
 </template>
 
 <script>
 import ComponentConfigMixin from "../../ComponentConfigMixin.vue";
 
 export default {
-	name: "DeviceSampleInverter",
-	mixins: [ComponentConfigMixin],
+  name: "DeviceSampleInverter",
+  mixins: [ComponentConfigMixin],
 };
 </script>
diff --git a/docs/samples/samples_gui/vehicle.vue b/docs/samples/samples_gui/vehicle.vue
index 6612896b95..58e2fee2a5 100644
--- a/docs/samples/samples_gui/vehicle.vue
+++ b/docs/samples/samples_gui/vehicle.vue
@@ -1,27 +1,19 @@
 <template>
-	<div class="vehicle-soc-sample">
-		<openwb-base-heading>
-			Einstellungen für Sample SoC
-			<span class="small">(Modul: {{ $options.name }})</span>
-		</openwb-base-heading>
-	</div>
+  <div class="vehicle-soc-sample">
+    <openwb-base-heading>
+      Einstellungen für Sample SoC
+    </openwb-base-heading>
+  </div>
 </template>
 
 <script>
+import VehicleConfigMixin from "../VehicleConfigMixin.vue";
+
 export default {
-	name: "VehicleSocSample",
-	emits: ["update:configuration"],
-	props: {
-		configuration: { type: Object, required: true },
-		vehicleId: { required: true },
-	},
-	data() {
-		return {};
-	},
-	methods: {
-		updateConfiguration(event, path = undefined) {
-			this.$emit("update:configuration", { value: event, object: path });
-		},
-	},
+  name: "VehicleSocSample",
+  mixins: [VehicleConfigMixin],
+  data() {
+    return {};
+  },
 };
 </script>

From 057a1bc3d8d10234351a1155957ffc69dddff242 Mon Sep 17 00:00:00 2001
From: Lutz Bender <github@lutz-bender.de>
Date: Mon, 30 Sep 2024 10:16:40 +0200
Subject: [PATCH 093/205] build ui

---
 web/settings/.htaccess                        |  10 +-
 web/settings/assets/ChargeLog-9836d756.js     |   3 +
 web/settings/assets/ChargeLog-f3c14ea7.js     |   3 -
 .../ChargePointInstallation-12a5c989.js       |   1 +
 .../ChargePointInstallation-fba1b24e.js       |   1 -
 .../{Chart-0ed3fc8e.js => Chart-eb294839.js}  |   2 +-
 web/settings/assets/CloudConfig-5ecdadd6.js   |   1 -
 web/settings/assets/CloudConfig-d834b2a3.js   |   1 +
 .../assets/DataManagement-ad71d105.js         |   1 +
 .../assets/DataManagement-eb2fc5d7.js         |   1 -
 web/settings/assets/DebugConfig-0ce8b81e.js   |   2 +
 web/settings/assets/DebugConfig-4a040dc7.js   |   2 -
 .../assets/GeneralChargeConfig-4b985756.js    |   1 -
 .../assets/GeneralChargeConfig-a5add01a.js    |   1 +
 web/settings/assets/GeneralConfig-1396a845.js |   1 -
 web/settings/assets/GeneralConfig-2f07ba45.js |   1 +
 .../assets/HardwareInstallation-6cc98da9.js   |   1 +
 .../assets/HardwareInstallation-a0083e3a.js   |   1 -
 .../assets/InstallAssistant-c6a6444f.js       |   1 +
 .../assets/InstallAssistant-e098a326.js       |   1 -
 .../assets/InstallAssistantStep0-3aacc430.js  |   1 -
 .../assets/InstallAssistantStep0-de111777.js  |   1 +
 .../assets/InstallAssistantStep1-92925871.js  |   1 -
 .../assets/InstallAssistantStep1-eec2b42e.js  |   1 +
 .../assets/InstallAssistantStep10-a0cc0c5c.js |   1 -
 .../assets/InstallAssistantStep10-a22f74f5.js |   1 +
 .../assets/InstallAssistantStep2-5a5716af.js  |   1 -
 .../assets/InstallAssistantStep2-95ec4f8b.js  |   1 +
 .../assets/InstallAssistantStep3-433c8ac0.js  |   1 -
 .../assets/InstallAssistantStep3-e076a393.js  |   1 +
 .../assets/InstallAssistantStep4-07e22013.js  |   1 +
 .../assets/InstallAssistantStep4-082fc830.js  |   1 -
 .../assets/InstallAssistantStep5-4b69dc5b.js  |   1 +
 .../assets/InstallAssistantStep5-86511db2.js  |   1 -
 .../assets/InstallAssistantStep6-40f3e62a.js  |   1 -
 .../assets/InstallAssistantStep6-ae56da1e.js  |   1 +
 .../assets/InstallAssistantStep7-824e5762.js  |   1 +
 .../assets/InstallAssistantStep7-b99ff659.js  |   1 -
 .../assets/InstallAssistantStep8-37e813b9.js  |   1 +
 .../assets/InstallAssistantStep8-a481c31b.js  |   1 -
 .../assets/InstallAssistantStep9-7a22998e.js  |   1 +
 .../assets/InstallAssistantStep9-df6f7a62.js  |   1 -
 .../InstallAssistantStepTemplate-0780226f.js  |   1 +
 .../InstallAssistantStepTemplate-b7a8caa2.js  |   1 -
 .../assets/InstantChargeConfig-13725bb2.js    |   1 -
 .../assets/InstantChargeConfig-d3719370.js    |   1 +
 web/settings/assets/LegalSettings-b9806df1.js |   1 +
 web/settings/assets/LegalSettings-c607b1a5.js |   1 -
 .../assets/LoadManagementConfig-5e0d6325.js   |   1 -
 .../assets/LoadManagementConfig-87715007.js   |   1 +
 .../assets/MqttBridgeConfig-4de54ead.js       |   1 -
 .../assets/MqttBridgeConfig-a467e292.js       |   1 +
 .../assets/OpenwbSortableList-3ce7f991.js     |   1 +
 .../assets/OpenwbSortableList-641f6bb4.js     |   1 -
 .../assets/OptionalComponents-963feb73.js     |   2 -
 .../assets/OptionalComponents-be1b1295.js     |   2 +
 .../assets/PVChargeConfig-cce066fd.js         |   1 -
 .../assets/PVChargeConfig-f08197ff.js         |   1 +
 .../assets/ScheduledChargeConfig-6d89b998.js  |   1 +
 .../assets/ScheduledChargeConfig-a25b4908.js  |   1 -
 web/settings/assets/Status-425f485b.js        |   1 +
 web/settings/assets/Status-f1da0c38.js        |   1 -
 web/settings/assets/Support-5eca5ed7.js       |   3 -
 web/settings/assets/Support-9ecadb2d.js       |   3 +
 web/settings/assets/System-8e218ae4.js        |   1 +
 web/settings/assets/System-c2920436.js        |   1 -
 web/settings/assets/TestingStore-1bc32428.js  |   1 -
 web/settings/assets/TestingStore-ffe2c569.js  |   1 +
 .../assets/TimeChargeConfig-46c6427d.js       |   1 -
 .../assets/TimeChargeConfig-7cd7d455.js       |   1 +
 web/settings/assets/VehicleConfig-0ab604e8.js |   1 +
 web/settings/assets/VehicleConfig-5050794d.js |   1 -
 web/settings/assets/backup_cloud-0c265ebd.js  |   1 -
 ...d-f487f6db.js => backup_cloud-333e299c.js} |   2 +-
 web/settings/assets/backup_cloud-3f7a1039.js  |   1 +
 web/settings/assets/backup_cloud-510cc7e0.js  |   1 +
 web/settings/assets/backup_cloud-71b57f4d.js  |   1 +
 web/settings/assets/backup_cloud-7c8657cf.js  |   1 -
 web/settings/assets/backup_cloud-ca22b0b2.js  |   1 -
 web/settings/assets/bat-037fc88f.js           |   1 -
 web/settings/assets/bat-03d10b16.js           |   1 +
 web/settings/assets/bat-053db3b2.js           |   1 -
 web/settings/assets/bat-1c6c9346.js           |   1 -
 web/settings/assets/bat-26612c12.js           |   1 -
 web/settings/assets/bat-2a37d4a1.js           |   1 +
 web/settings/assets/bat-2ad336ba.js           |   1 -
 web/settings/assets/bat-3688b404.js           |   1 -
 web/settings/assets/bat-375e955a.js           |   1 -
 web/settings/assets/bat-3bf3716c.js           |   1 -
 web/settings/assets/bat-45a2224e.js           |   1 +
 web/settings/assets/bat-5261b4cb.js           |   1 -
 web/settings/assets/bat-5763ad59.js           |   1 +
 web/settings/assets/bat-713dd112.js           |   1 +
 web/settings/assets/bat-7c88776b.js           |   1 +
 web/settings/assets/bat-7dc3e16d.js           |   1 +
 web/settings/assets/bat-862c0f08.js           |   1 -
 web/settings/assets/bat-86d1c852.js           |   1 -
 web/settings/assets/bat-8c346425.js           |   1 +
 web/settings/assets/bat-8dd42ecd.js           |   1 +
 web/settings/assets/bat-9577327c.js           |   1 +
 web/settings/assets/bat-9807eb70.js           |   1 +
 web/settings/assets/bat-98a7f166.js           |   1 +
 web/settings/assets/bat-9eca6500.js           |   1 +
 web/settings/assets/bat-af534ff4.js           |   1 +
 web/settings/assets/bat-afab0752.js           |   1 -
 web/settings/assets/bat-b62c3097.js           |   1 +
 web/settings/assets/bat-c3b737a8.js           |   1 +
 web/settings/assets/bat-c566a75f.js           |   1 -
 web/settings/assets/bat-c6e7f4e5.js           |   1 +
 web/settings/assets/bat-cbe7bc84.js           |   1 -
 web/settings/assets/bat-cc1835de.js           |   1 -
 web/settings/assets/bat-d04a40d4.js           |   1 -
 web/settings/assets/bat-da9423e8.js           |   1 -
 web/settings/assets/bat-dc1d9a2f.js           |   1 +
 web/settings/assets/bat-e05764b6.js           |   1 +
 web/settings/assets/bat-e23118da.js           |   1 -
 web/settings/assets/bat-e4573157.js           |   1 -
 web/settings/assets/bat-f5f3db47.js           |   1 -
 web/settings/assets/bat-fefe88d3.js           |   1 +
 .../assets/bat_smart_energy-2291c4ec.js       |   1 +
 .../assets/bat_smart_energy-f0537d91.js       |   1 -
 web/settings/assets/chargePoint-218a4f96.js   |   1 -
 web/settings/assets/chargePoint-3f4bb03f.js   |   1 +
 web/settings/assets/chargePoint-4b4f3b43.js   |   1 -
 web/settings/assets/chargePoint-72c59831.js   |   1 +
 ...nt-756bf3c2.js => chargePoint-8472765d.js} |   2 +-
 web/settings/assets/chargePoint-8d89f54f.js   |   1 +
 web/settings/assets/chargePoint-a2f06ead.js   |   1 -
 web/settings/assets/chargePoint-d36f4e64.js   |   1 -
 web/settings/assets/chargePoint-ddcd5f93.js   |   1 -
 web/settings/assets/chargePoint-f3a56f90.js   |   1 +
 ...nt-db6ab728.js => chargePoint-f77b98b5.js} |   2 +-
 web/settings/assets/chargePoint-f92622dd.js   |   1 +
 ...mands-f4c13b15.js => commands-0749d4c7.js} |   2 +-
 .../assets/consumption_counter-6e608762.js    |   1 -
 .../assets/consumption_counter-a72d5a10.js    |   1 +
 web/settings/assets/counter-079772c2.js       |   1 -
 web/settings/assets/counter-11a808b3.js       |   1 +
 web/settings/assets/counter-18ec27d5.js       |   1 -
 web/settings/assets/counter-211768c3.js       |   1 +
 web/settings/assets/counter-2407fa25.js       |   1 -
 web/settings/assets/counter-2af1b45c.js       |   1 +
 web/settings/assets/counter-2d7b83ed.js       |   1 +
 web/settings/assets/counter-339b78e6.js       |   1 +
 web/settings/assets/counter-37e09ebf.js       |   1 +
 web/settings/assets/counter-38233839.js       |   1 -
 web/settings/assets/counter-3c3a8ee4.js       |   1 +
 web/settings/assets/counter-3d61895d.js       |   1 -
 web/settings/assets/counter-3fc7917c.js       |   1 -
 web/settings/assets/counter-4760f2a8.js       |   1 +
 web/settings/assets/counter-4e0e153d.js       |   1 +
 web/settings/assets/counter-4e131617.js       |   1 +
 web/settings/assets/counter-51f51be9.js       |   1 -
 web/settings/assets/counter-55bd9132.js       |   1 -
 web/settings/assets/counter-59a65215.js       |   1 +
 web/settings/assets/counter-5e68cf56.js       |   1 +
 web/settings/assets/counter-61e6692b.js       |   1 +
 web/settings/assets/counter-62b27636.js       |   1 +
 web/settings/assets/counter-6a117469.js       |   1 +
 web/settings/assets/counter-6dd39fae.js       |   1 +
 web/settings/assets/counter-6f319353.js       |   1 +
 web/settings/assets/counter-70744c17.js       |   1 +
 web/settings/assets/counter-70ddc5c4.js       |   1 -
 web/settings/assets/counter-809d5a8a.js       |   1 -
 web/settings/assets/counter-851af979.js       |   1 -
 web/settings/assets/counter-863d779b.js       |   1 -
 web/settings/assets/counter-873539d4.js       |   1 +
 web/settings/assets/counter-87bd2dba.js       |   1 +
 web/settings/assets/counter-8cf3e538.js       |   1 +
 web/settings/assets/counter-9028760b.js       |   1 +
 web/settings/assets/counter-92895c7b.js       |   1 -
 web/settings/assets/counter-9c04d80d.js       |   1 -
 web/settings/assets/counter-9dd2e78b.js       |   1 -
 web/settings/assets/counter-9f134879.js       |   1 +
 web/settings/assets/counter-9fd0b8be.js       |   1 +
 web/settings/assets/counter-a1a84381.js       |   1 -
 web/settings/assets/counter-a51c4464.js       |   1 -
 web/settings/assets/counter-ab7dda04.js       |   1 +
 web/settings/assets/counter-aea90a37.js       |   1 -
 web/settings/assets/counter-b3df37ca.js       |   1 +
 web/settings/assets/counter-b8ca89e1.js       |   1 +
 web/settings/assets/counter-bb7c4b01.js       |   1 -
 web/settings/assets/counter-c3ed00fb.js       |   1 -
 web/settings/assets/counter-c4a0dc83.js       |   1 -
 web/settings/assets/counter-c524e146.js       |   1 +
 web/settings/assets/counter-d2cdbd98.js       |   1 -
 web/settings/assets/counter-dae0c479.js       |   1 +
 web/settings/assets/counter-db36cac3.js       |   1 -
 web/settings/assets/counter-ddf406fa.js       |   1 -
 web/settings/assets/counter-dfc0206c.js       |   1 -
 web/settings/assets/counter-e17b6711.js       |   1 -
 web/settings/assets/counter-e2aa39de.js       |   1 +
 web/settings/assets/counter-e2ea1207.js       |   1 +
 web/settings/assets/counter-e43b2263.js       |   1 +
 web/settings/assets/counter-e525bf90.js       |   1 -
 web/settings/assets/counter-eacbb4cc.js       |   1 -
 web/settings/assets/counter-eb577878.js       |   1 -
 web/settings/assets/counter-f1f7547c.js       |   1 -
 web/settings/assets/counter-f3a88abe.js       |   1 -
 web/settings/assets/counter-fc3afadd.js       |   1 -
 web/settings/assets/counter_sm-ae20b8ea.js    |   1 -
 web/settings/assets/counter_sm-ce85abde.js    |   1 +
 web/settings/assets/device-00ea06ea.js        |   1 +
 web/settings/assets/device-08fe3db1.js        |   1 -
 web/settings/assets/device-09e0b5dd.js        |   1 +
 web/settings/assets/device-0a578374.js        |   1 -
 web/settings/assets/device-0c94f34d.js        |   1 -
 web/settings/assets/device-0f4599b8.js        |   1 -
 web/settings/assets/device-13ac66a2.js        |   1 -
 web/settings/assets/device-13bf79c7.js        |   1 +
 web/settings/assets/device-17ee5402.js        |   1 +
 web/settings/assets/device-1859f43b.js        |   1 -
 web/settings/assets/device-191071c7.js        |   1 +
 web/settings/assets/device-19334006.js        |   1 +
 web/settings/assets/device-1a057dc5.js        |   1 +
 web/settings/assets/device-1c46f4b0.js        |   1 -
 web/settings/assets/device-1f0b55db.js        |   1 -
 web/settings/assets/device-20a3cc0b.js        |   1 +
 web/settings/assets/device-264b9607.js        |   1 +
 web/settings/assets/device-2bd6af83.js        |   1 +
 web/settings/assets/device-2dc6cc3c.js        |   1 +
 web/settings/assets/device-359d7e50.js        |   1 -
 web/settings/assets/device-38fb8261.js        |   1 -
 web/settings/assets/device-3b65739e.js        |   1 -
 web/settings/assets/device-3c0a0263.js        |   1 -
 web/settings/assets/device-3c779cdd.js        |   1 -
 web/settings/assets/device-3e055cd7.js        |   1 -
 web/settings/assets/device-40b4b0c5.js        |   1 -
 web/settings/assets/device-41c2f368.js        |   1 +
 web/settings/assets/device-4498198c.js        |   1 -
 web/settings/assets/device-44b38c3f.js        |   1 -
 web/settings/assets/device-4f01c44f.js        |   1 +
 web/settings/assets/device-4f7c15a3.js        |   1 -
 web/settings/assets/device-511acdb3.js        |   1 +
 web/settings/assets/device-51a9d57c.js        |   1 +
 web/settings/assets/device-57a08fa3.js        |   1 +
 web/settings/assets/device-57e7ea16.js        |   1 -
 web/settings/assets/device-58a430d5.js        |   1 -
 web/settings/assets/device-5a9d2acd.js        |   1 -
 web/settings/assets/device-5aef24bb.js        |   1 +
 web/settings/assets/device-622f0263.js        |   1 -
 web/settings/assets/device-63bdcc3c.js        |   1 +
 web/settings/assets/device-646a2df0.js        |   1 -
 web/settings/assets/device-667da2bf.js        |   1 +
 web/settings/assets/device-671cfac2.js        |   1 -
 web/settings/assets/device-73279a9d.js        |   1 +
 web/settings/assets/device-7552eed1.js        |   1 +
 web/settings/assets/device-76f55505.js        |   1 -
 web/settings/assets/device-7aeda0a3.js        |   1 +
 web/settings/assets/device-7bfbb863.js        |   1 -
 web/settings/assets/device-7c975c06.js        |   1 +
 web/settings/assets/device-7d21f4f3.js        |   1 +
 web/settings/assets/device-7ea3222f.js        |   1 -
 web/settings/assets/device-7f837c71.js        |   1 -
 web/settings/assets/device-7fb9b18e.js        |   1 -
 web/settings/assets/device-7fc12e51.js        |   1 -
 web/settings/assets/device-8118a66e.js        |   1 -
 web/settings/assets/device-829b538b.js        |   1 -
 web/settings/assets/device-84e9833f.js        |   1 +
 web/settings/assets/device-850717d0.js        |   1 -
 web/settings/assets/device-86046891.js        |   1 -
 web/settings/assets/device-86f88cbb.js        |   1 -
 web/settings/assets/device-8770c372.js        |   1 +
 web/settings/assets/device-8a6c3a9f.js        |   1 +
 web/settings/assets/device-8b304fd5.js        |   1 +
 web/settings/assets/device-8c349616.js        |   1 -
 web/settings/assets/device-8f5f7340.js        |   1 +
 web/settings/assets/device-92f55c21.js        |   1 +
 web/settings/assets/device-930131aa.js        |   1 +
 web/settings/assets/device-944bfe1b.js        |   1 +
 web/settings/assets/device-95627a98.js        |   1 +
 web/settings/assets/device-967835b8.js        |   1 +
 web/settings/assets/device-97810824.js        |   1 +
 web/settings/assets/device-97dc9354.js        |   1 +
 web/settings/assets/device-98e25fe5.js        |   1 -
 web/settings/assets/device-98fd1cc4.js        |   1 -
 web/settings/assets/device-99fa45c8.js        |   1 -
 web/settings/assets/device-9eedb23a.js        |   1 +
 web/settings/assets/device-a1e3a710.js        |   1 -
 web/settings/assets/device-a3d36699.js        |   1 -
 web/settings/assets/device-a4ac3a30.js        |   1 +
 web/settings/assets/device-a55b4f4a.js        |   1 +
 web/settings/assets/device-a5ad3257.js        |   1 +
 web/settings/assets/device-a945746f.js        |   1 +
 web/settings/assets/device-aa58f408.js        |   1 -
 web/settings/assets/device-ab0439ee.js        |   1 -
 web/settings/assets/device-b4d24a29.js        |   1 -
 web/settings/assets/device-b5ff9479.js        |   1 +
 web/settings/assets/device-b6ab13cb.js        |   1 -
 web/settings/assets/device-ba7411f1.js        |   1 +
 web/settings/assets/device-bf4936ba.js        |   1 -
 web/settings/assets/device-c034f6f0.js        |   1 -
 web/settings/assets/device-c0ddbba1.js        |   1 +
 web/settings/assets/device-c0dfc296.js        |   1 -
 web/settings/assets/device-c1920155.js        |   1 +
 web/settings/assets/device-c1c7f277.js        |   1 +
 web/settings/assets/device-c37bf0a2.js        |   1 +
 web/settings/assets/device-c3aaf957.js        |   1 +
 web/settings/assets/device-c3e49e5d.js        |   1 +
 web/settings/assets/device-c491b9c2.js        |   1 -
 web/settings/assets/device-c605ea36.js        |   1 -
 web/settings/assets/device-c9df224a.js        |   1 +
 web/settings/assets/device-ca2bde32.js        |   1 -
 web/settings/assets/device-cbb1f36f.js        |   1 +
 web/settings/assets/device-cc59c62c.js        |   1 -
 web/settings/assets/device-d659f206.js        |   1 -
 web/settings/assets/device-d6d46ef8.js        |   1 -
 web/settings/assets/device-d779a283.js        |   1 +
 web/settings/assets/device-d9f34fe2.js        |   1 -
 web/settings/assets/device-db16ee4d.js        |   1 -
 web/settings/assets/device-dc9695a4.js        |   1 +
 web/settings/assets/device-dcaa50ab.js        |   1 +
 web/settings/assets/device-e1695c1b.js        |   1 +
 web/settings/assets/device-e372d627.js        |   1 -
 web/settings/assets/device-e4d1ba40.js        |   1 -
 web/settings/assets/device-e6c608f5.js        |   1 +
 web/settings/assets/device-f057baf4.js        |   1 +
 web/settings/assets/device-f065b014.js        |   1 -
 web/settings/assets/device-f2ca9f52.js        |   1 +
 web/settings/assets/device-f2e0c7de.js        |   1 +
 web/settings/assets/device-f5beaf39.js        |   1 +
 web/settings/assets/device-f9bc5796.js        |   1 -
 web/settings/assets/device-fa6313a5.js        |   1 +
 web/settings/assets/device-fb6dbf7a.js        |   1 +
 web/settings/assets/device-fbd8e09f.js        |   1 -
 web/settings/assets/device-fcfe882c.js        |   1 -
 web/settings/assets/displayTheme-78ab078b.js  |   1 +
 web/settings/assets/displayTheme-97f12f16.js  |   1 -
 .../assets/electricity_tariff-18981e99.js     |   1 +
 .../assets/electricity_tariff-86994943.js     |   1 -
 .../assets/electricity_tariff-8c65c060.js     |   1 -
 .../assets/electricity_tariff-921487ff.js     |   1 -
 .../assets/electricity_tariff-9f4ce3a7.js     |   1 +
 .../assets/electricity_tariff-ac583f0a.js     |   1 +
 .../assets/electricity_tariff-b400ca32.js     |   1 +
 .../assets/electricity_tariff-bc229946.js     |   1 -
 .../assets/electricity_tariff-c1ffcfa7.js     |   1 +
 .../assets/electricity_tariff-c641235d.js     |   1 -
 .../assets/external_inverter-319dd94a.js      |   1 +
 .../assets/external_inverter-3f39a305.js      |   1 -
 web/settings/assets/index-b0e5e618.js         |   1 -
 web/settings/assets/index-dc0e711f.js         |   1 +
 web/settings/assets/inverter-00707516.js      |   1 +
 web/settings/assets/inverter-0372b463.js      |   1 +
 web/settings/assets/inverter-0fe312b3.js      |   1 +
 web/settings/assets/inverter-1528dc9b.js      |   1 -
 web/settings/assets/inverter-1b5f20c2.js      |   1 -
 web/settings/assets/inverter-22aad90d.js      |   1 +
 web/settings/assets/inverter-2671797a.js      |   1 -
 web/settings/assets/inverter-3661665d.js      |   1 +
 web/settings/assets/inverter-3a770b71.js      |   1 +
 web/settings/assets/inverter-3c18bfc8.js      |   1 +
 web/settings/assets/inverter-3d8e5c7f.js      |   1 -
 web/settings/assets/inverter-3f3aa74b.js      |   1 +
 web/settings/assets/inverter-4130514e.js      |   1 -
 web/settings/assets/inverter-521e60bd.js      |   1 +
 web/settings/assets/inverter-61827c16.js      |   1 -
 web/settings/assets/inverter-6217c8a3.js      |   1 -
 web/settings/assets/inverter-62aebfd4.js      |   1 +
 web/settings/assets/inverter-668ceedf.js      |   1 +
 web/settings/assets/inverter-6d12a3f1.js      |   1 -
 web/settings/assets/inverter-6f930abf.js      |   1 +
 web/settings/assets/inverter-79d423ad.js      |   1 -
 web/settings/assets/inverter-7c07833e.js      |   1 +
 web/settings/assets/inverter-80adcee2.js      |   1 -
 web/settings/assets/inverter-832fb3b7.js      |   1 +
 web/settings/assets/inverter-89ab9892.js      |   1 -
 web/settings/assets/inverter-90d5660d.js      |   1 +
 web/settings/assets/inverter-93d278b2.js      |   1 -
 web/settings/assets/inverter-94706045.js      |   1 -
 web/settings/assets/inverter-97406357.js      |   1 -
 web/settings/assets/inverter-a005080e.js      |   1 -
 web/settings/assets/inverter-a77daa25.js      |   1 +
 web/settings/assets/inverter-a9cee12b.js      |   1 -
 web/settings/assets/inverter-ab8a80e4.js      |   1 +
 web/settings/assets/inverter-b0ea296b.js      |   1 -
 web/settings/assets/inverter-b47b017e.js      |   1 -
 web/settings/assets/inverter-b4941105.js      |   1 +
 web/settings/assets/inverter-bb47d837.js      |   1 -
 web/settings/assets/inverter-beac0910.js      |   1 -
 web/settings/assets/inverter-c319320b.js      |   1 +
 web/settings/assets/inverter-c861a20b.js      |   1 -
 web/settings/assets/inverter-cf814a97.js      |   1 +
 web/settings/assets/inverter-d090560a.js      |   1 +
 web/settings/assets/inverter-d1ef1a1b.js      |   1 +
 web/settings/assets/inverter-d5bf52e5.js      |   1 -
 web/settings/assets/inverter-d79a2e57.js      |   1 +
 web/settings/assets/inverter-ec40e2ac.js      |   1 -
 web/settings/assets/inverter-eee7c6e5.js      |   1 +
 web/settings/assets/inverter-efcd16da.js      |   1 +
 web/settings/assets/inverter-f293b026.js      |   1 +
 web/settings/assets/inverter-f30a6830.js      |   1 +
 web/settings/assets/inverter-f3b65772.js      |   1 -
 web/settings/assets/inverter-f504e343.js      |   1 -
 web/settings/assets/inverter-f857c467.js      |   1 -
 web/settings/assets/inverter-fab7ed1c.js      |   1 -
 .../assets/inverter_secondary-67eeedf8.js     |   1 +
 .../assets/inverter_secondary-f8fdf5c3.js     |   1 -
 .../ripple_control_receiver-6eba6a9a.js       |   1 -
 .../ripple_control_receiver-9035a86a.js       |   1 +
 .../ripple_control_receiver-d8f4b5b9.js       |   1 -
 .../ripple_control_receiver-fed88f10.js       |   1 +
 web/settings/assets/vehicle-023614f3.js       |   1 -
 web/settings/assets/vehicle-039c8759.js       |   1 +
 web/settings/assets/vehicle-03c9aa3d.js       |   1 +
 web/settings/assets/vehicle-0babcb51.js       |   1 +
 web/settings/assets/vehicle-0bc01aa8.js       |   1 +
 web/settings/assets/vehicle-19e3adb9.js       |   1 +
 web/settings/assets/vehicle-28a9dcf3.js       |   1 +
 web/settings/assets/vehicle-29ff37c0.js       |   1 -
 web/settings/assets/vehicle-2f9b7b98.js       |   1 -
 web/settings/assets/vehicle-3a34ea9e.js       |   1 -
 web/settings/assets/vehicle-42f1ed52.js       |   1 +
 web/settings/assets/vehicle-47ed0a84.js       |   1 +
 web/settings/assets/vehicle-5b8d1dc8.js       |   1 +
 web/settings/assets/vehicle-5f51066d.js       |   1 -
 web/settings/assets/vehicle-65e40931.js       |   1 -
 web/settings/assets/vehicle-7adb9a7c.js       |   1 +
 web/settings/assets/vehicle-7bb9b768.js       |   1 +
 web/settings/assets/vehicle-7f1d1c67.js       |   1 +
 web/settings/assets/vehicle-7f7d2e44.js       |   1 +
 web/settings/assets/vehicle-85478721.js       |   1 +
 web/settings/assets/vehicle-8ec5d670.js       |   1 -
 web/settings/assets/vehicle-98ffa49f.js       |   1 -
 web/settings/assets/vehicle-9ce6bac4.js       |   1 +
 web/settings/assets/vehicle-9dbb1f9d.js       |   1 -
 web/settings/assets/vehicle-b9845ca5.js       |   1 +
 web/settings/assets/vehicle-bedc772a.js       |   1 +
 web/settings/assets/vehicle-c0891ece.js       |   1 -
 web/settings/assets/vehicle-c5ee02d8.js       |   1 -
 web/settings/assets/vehicle-d0d26522.js       |   1 -
 web/settings/assets/vehicle-d78b6b11.js       |   1 -
 web/settings/assets/vehicle-e909e122.js       |   1 -
 ...ehicle-08379fee.js => vehicle-f050a85d.js} |   2 +-
 web/settings/assets/vehicle-f30d6420.js       |   1 -
 web/settings/assets/vehicle-f3b10eaa.js       |   1 -
 web/settings/assets/vehicle-fa2b1ad1.js       |   1 -
 web/settings/assets/vendor-a21b3a62.js        | 134 ++++++
 web/settings/assets/vendor-axios-0e6de98a.js  |   6 +
 web/settings/assets/vendor-axios-65ecee4b.js  |   6 -
 ...d604fa.js => vendor-bootstrap-d0c3645c.js} |   2 +-
 .../assets/vendor-chartjs-35992f4a.js         |  23 -
 .../assets/vendor-chartjs-5fa56b74.js         |  23 +
 web/settings/assets/vendor-f2b8aa6f.js        | 135 ------
 ...6160.js => vendor-fortawesome-41164876.js} |   2 +-
 ...-d3cb8fad.js => vendor-jquery-a5dbbab1.js} |   2 +-
 ...828d0.js => vendor-sortablejs-3016fed8.js} |   2 +-
 web/settings/index.html                       |  36 +-
 .../legacy_smart_home/css/settings_style.css  | 427 +++++++++---------
 449 files changed, 641 insertions(+), 621 deletions(-)
 create mode 100644 web/settings/assets/ChargeLog-9836d756.js
 delete mode 100644 web/settings/assets/ChargeLog-f3c14ea7.js
 create mode 100644 web/settings/assets/ChargePointInstallation-12a5c989.js
 delete mode 100644 web/settings/assets/ChargePointInstallation-fba1b24e.js
 rename web/settings/assets/{Chart-0ed3fc8e.js => Chart-eb294839.js} (57%)
 delete mode 100644 web/settings/assets/CloudConfig-5ecdadd6.js
 create mode 100644 web/settings/assets/CloudConfig-d834b2a3.js
 create mode 100644 web/settings/assets/DataManagement-ad71d105.js
 delete mode 100644 web/settings/assets/DataManagement-eb2fc5d7.js
 create mode 100644 web/settings/assets/DebugConfig-0ce8b81e.js
 delete mode 100644 web/settings/assets/DebugConfig-4a040dc7.js
 delete mode 100644 web/settings/assets/GeneralChargeConfig-4b985756.js
 create mode 100644 web/settings/assets/GeneralChargeConfig-a5add01a.js
 delete mode 100644 web/settings/assets/GeneralConfig-1396a845.js
 create mode 100644 web/settings/assets/GeneralConfig-2f07ba45.js
 create mode 100644 web/settings/assets/HardwareInstallation-6cc98da9.js
 delete mode 100644 web/settings/assets/HardwareInstallation-a0083e3a.js
 create mode 100644 web/settings/assets/InstallAssistant-c6a6444f.js
 delete mode 100644 web/settings/assets/InstallAssistant-e098a326.js
 delete mode 100644 web/settings/assets/InstallAssistantStep0-3aacc430.js
 create mode 100644 web/settings/assets/InstallAssistantStep0-de111777.js
 delete mode 100644 web/settings/assets/InstallAssistantStep1-92925871.js
 create mode 100644 web/settings/assets/InstallAssistantStep1-eec2b42e.js
 delete mode 100644 web/settings/assets/InstallAssistantStep10-a0cc0c5c.js
 create mode 100644 web/settings/assets/InstallAssistantStep10-a22f74f5.js
 delete mode 100644 web/settings/assets/InstallAssistantStep2-5a5716af.js
 create mode 100644 web/settings/assets/InstallAssistantStep2-95ec4f8b.js
 delete mode 100644 web/settings/assets/InstallAssistantStep3-433c8ac0.js
 create mode 100644 web/settings/assets/InstallAssistantStep3-e076a393.js
 create mode 100644 web/settings/assets/InstallAssistantStep4-07e22013.js
 delete mode 100644 web/settings/assets/InstallAssistantStep4-082fc830.js
 create mode 100644 web/settings/assets/InstallAssistantStep5-4b69dc5b.js
 delete mode 100644 web/settings/assets/InstallAssistantStep5-86511db2.js
 delete mode 100644 web/settings/assets/InstallAssistantStep6-40f3e62a.js
 create mode 100644 web/settings/assets/InstallAssistantStep6-ae56da1e.js
 create mode 100644 web/settings/assets/InstallAssistantStep7-824e5762.js
 delete mode 100644 web/settings/assets/InstallAssistantStep7-b99ff659.js
 create mode 100644 web/settings/assets/InstallAssistantStep8-37e813b9.js
 delete mode 100644 web/settings/assets/InstallAssistantStep8-a481c31b.js
 create mode 100644 web/settings/assets/InstallAssistantStep9-7a22998e.js
 delete mode 100644 web/settings/assets/InstallAssistantStep9-df6f7a62.js
 create mode 100644 web/settings/assets/InstallAssistantStepTemplate-0780226f.js
 delete mode 100644 web/settings/assets/InstallAssistantStepTemplate-b7a8caa2.js
 delete mode 100644 web/settings/assets/InstantChargeConfig-13725bb2.js
 create mode 100644 web/settings/assets/InstantChargeConfig-d3719370.js
 create mode 100644 web/settings/assets/LegalSettings-b9806df1.js
 delete mode 100644 web/settings/assets/LegalSettings-c607b1a5.js
 delete mode 100644 web/settings/assets/LoadManagementConfig-5e0d6325.js
 create mode 100644 web/settings/assets/LoadManagementConfig-87715007.js
 delete mode 100644 web/settings/assets/MqttBridgeConfig-4de54ead.js
 create mode 100644 web/settings/assets/MqttBridgeConfig-a467e292.js
 create mode 100644 web/settings/assets/OpenwbSortableList-3ce7f991.js
 delete mode 100644 web/settings/assets/OpenwbSortableList-641f6bb4.js
 delete mode 100644 web/settings/assets/OptionalComponents-963feb73.js
 create mode 100644 web/settings/assets/OptionalComponents-be1b1295.js
 delete mode 100644 web/settings/assets/PVChargeConfig-cce066fd.js
 create mode 100644 web/settings/assets/PVChargeConfig-f08197ff.js
 create mode 100644 web/settings/assets/ScheduledChargeConfig-6d89b998.js
 delete mode 100644 web/settings/assets/ScheduledChargeConfig-a25b4908.js
 create mode 100644 web/settings/assets/Status-425f485b.js
 delete mode 100644 web/settings/assets/Status-f1da0c38.js
 delete mode 100644 web/settings/assets/Support-5eca5ed7.js
 create mode 100644 web/settings/assets/Support-9ecadb2d.js
 create mode 100644 web/settings/assets/System-8e218ae4.js
 delete mode 100644 web/settings/assets/System-c2920436.js
 delete mode 100644 web/settings/assets/TestingStore-1bc32428.js
 create mode 100644 web/settings/assets/TestingStore-ffe2c569.js
 delete mode 100644 web/settings/assets/TimeChargeConfig-46c6427d.js
 create mode 100644 web/settings/assets/TimeChargeConfig-7cd7d455.js
 create mode 100644 web/settings/assets/VehicleConfig-0ab604e8.js
 delete mode 100644 web/settings/assets/VehicleConfig-5050794d.js
 delete mode 100644 web/settings/assets/backup_cloud-0c265ebd.js
 rename web/settings/assets/{backup_cloud-f487f6db.js => backup_cloud-333e299c.js} (58%)
 create mode 100644 web/settings/assets/backup_cloud-3f7a1039.js
 create mode 100644 web/settings/assets/backup_cloud-510cc7e0.js
 create mode 100644 web/settings/assets/backup_cloud-71b57f4d.js
 delete mode 100644 web/settings/assets/backup_cloud-7c8657cf.js
 delete mode 100644 web/settings/assets/backup_cloud-ca22b0b2.js
 delete mode 100644 web/settings/assets/bat-037fc88f.js
 create mode 100644 web/settings/assets/bat-03d10b16.js
 delete mode 100644 web/settings/assets/bat-053db3b2.js
 delete mode 100644 web/settings/assets/bat-1c6c9346.js
 delete mode 100644 web/settings/assets/bat-26612c12.js
 create mode 100644 web/settings/assets/bat-2a37d4a1.js
 delete mode 100644 web/settings/assets/bat-2ad336ba.js
 delete mode 100644 web/settings/assets/bat-3688b404.js
 delete mode 100644 web/settings/assets/bat-375e955a.js
 delete mode 100644 web/settings/assets/bat-3bf3716c.js
 create mode 100644 web/settings/assets/bat-45a2224e.js
 delete mode 100644 web/settings/assets/bat-5261b4cb.js
 create mode 100644 web/settings/assets/bat-5763ad59.js
 create mode 100644 web/settings/assets/bat-713dd112.js
 create mode 100644 web/settings/assets/bat-7c88776b.js
 create mode 100644 web/settings/assets/bat-7dc3e16d.js
 delete mode 100644 web/settings/assets/bat-862c0f08.js
 delete mode 100644 web/settings/assets/bat-86d1c852.js
 create mode 100644 web/settings/assets/bat-8c346425.js
 create mode 100644 web/settings/assets/bat-8dd42ecd.js
 create mode 100644 web/settings/assets/bat-9577327c.js
 create mode 100644 web/settings/assets/bat-9807eb70.js
 create mode 100644 web/settings/assets/bat-98a7f166.js
 create mode 100644 web/settings/assets/bat-9eca6500.js
 create mode 100644 web/settings/assets/bat-af534ff4.js
 delete mode 100644 web/settings/assets/bat-afab0752.js
 create mode 100644 web/settings/assets/bat-b62c3097.js
 create mode 100644 web/settings/assets/bat-c3b737a8.js
 delete mode 100644 web/settings/assets/bat-c566a75f.js
 create mode 100644 web/settings/assets/bat-c6e7f4e5.js
 delete mode 100644 web/settings/assets/bat-cbe7bc84.js
 delete mode 100644 web/settings/assets/bat-cc1835de.js
 delete mode 100644 web/settings/assets/bat-d04a40d4.js
 delete mode 100644 web/settings/assets/bat-da9423e8.js
 create mode 100644 web/settings/assets/bat-dc1d9a2f.js
 create mode 100644 web/settings/assets/bat-e05764b6.js
 delete mode 100644 web/settings/assets/bat-e23118da.js
 delete mode 100644 web/settings/assets/bat-e4573157.js
 delete mode 100644 web/settings/assets/bat-f5f3db47.js
 create mode 100644 web/settings/assets/bat-fefe88d3.js
 create mode 100644 web/settings/assets/bat_smart_energy-2291c4ec.js
 delete mode 100644 web/settings/assets/bat_smart_energy-f0537d91.js
 delete mode 100644 web/settings/assets/chargePoint-218a4f96.js
 create mode 100644 web/settings/assets/chargePoint-3f4bb03f.js
 delete mode 100644 web/settings/assets/chargePoint-4b4f3b43.js
 create mode 100644 web/settings/assets/chargePoint-72c59831.js
 rename web/settings/assets/{chargePoint-756bf3c2.js => chargePoint-8472765d.js} (59%)
 create mode 100644 web/settings/assets/chargePoint-8d89f54f.js
 delete mode 100644 web/settings/assets/chargePoint-a2f06ead.js
 delete mode 100644 web/settings/assets/chargePoint-d36f4e64.js
 delete mode 100644 web/settings/assets/chargePoint-ddcd5f93.js
 create mode 100644 web/settings/assets/chargePoint-f3a56f90.js
 rename web/settings/assets/{chargePoint-db6ab728.js => chargePoint-f77b98b5.js} (59%)
 create mode 100644 web/settings/assets/chargePoint-f92622dd.js
 rename web/settings/assets/{commands-f4c13b15.js => commands-0749d4c7.js} (53%)
 delete mode 100644 web/settings/assets/consumption_counter-6e608762.js
 create mode 100644 web/settings/assets/consumption_counter-a72d5a10.js
 delete mode 100644 web/settings/assets/counter-079772c2.js
 create mode 100644 web/settings/assets/counter-11a808b3.js
 delete mode 100644 web/settings/assets/counter-18ec27d5.js
 create mode 100644 web/settings/assets/counter-211768c3.js
 delete mode 100644 web/settings/assets/counter-2407fa25.js
 create mode 100644 web/settings/assets/counter-2af1b45c.js
 create mode 100644 web/settings/assets/counter-2d7b83ed.js
 create mode 100644 web/settings/assets/counter-339b78e6.js
 create mode 100644 web/settings/assets/counter-37e09ebf.js
 delete mode 100644 web/settings/assets/counter-38233839.js
 create mode 100644 web/settings/assets/counter-3c3a8ee4.js
 delete mode 100644 web/settings/assets/counter-3d61895d.js
 delete mode 100644 web/settings/assets/counter-3fc7917c.js
 create mode 100644 web/settings/assets/counter-4760f2a8.js
 create mode 100644 web/settings/assets/counter-4e0e153d.js
 create mode 100644 web/settings/assets/counter-4e131617.js
 delete mode 100644 web/settings/assets/counter-51f51be9.js
 delete mode 100644 web/settings/assets/counter-55bd9132.js
 create mode 100644 web/settings/assets/counter-59a65215.js
 create mode 100644 web/settings/assets/counter-5e68cf56.js
 create mode 100644 web/settings/assets/counter-61e6692b.js
 create mode 100644 web/settings/assets/counter-62b27636.js
 create mode 100644 web/settings/assets/counter-6a117469.js
 create mode 100644 web/settings/assets/counter-6dd39fae.js
 create mode 100644 web/settings/assets/counter-6f319353.js
 create mode 100644 web/settings/assets/counter-70744c17.js
 delete mode 100644 web/settings/assets/counter-70ddc5c4.js
 delete mode 100644 web/settings/assets/counter-809d5a8a.js
 delete mode 100644 web/settings/assets/counter-851af979.js
 delete mode 100644 web/settings/assets/counter-863d779b.js
 create mode 100644 web/settings/assets/counter-873539d4.js
 create mode 100644 web/settings/assets/counter-87bd2dba.js
 create mode 100644 web/settings/assets/counter-8cf3e538.js
 create mode 100644 web/settings/assets/counter-9028760b.js
 delete mode 100644 web/settings/assets/counter-92895c7b.js
 delete mode 100644 web/settings/assets/counter-9c04d80d.js
 delete mode 100644 web/settings/assets/counter-9dd2e78b.js
 create mode 100644 web/settings/assets/counter-9f134879.js
 create mode 100644 web/settings/assets/counter-9fd0b8be.js
 delete mode 100644 web/settings/assets/counter-a1a84381.js
 delete mode 100644 web/settings/assets/counter-a51c4464.js
 create mode 100644 web/settings/assets/counter-ab7dda04.js
 delete mode 100644 web/settings/assets/counter-aea90a37.js
 create mode 100644 web/settings/assets/counter-b3df37ca.js
 create mode 100644 web/settings/assets/counter-b8ca89e1.js
 delete mode 100644 web/settings/assets/counter-bb7c4b01.js
 delete mode 100644 web/settings/assets/counter-c3ed00fb.js
 delete mode 100644 web/settings/assets/counter-c4a0dc83.js
 create mode 100644 web/settings/assets/counter-c524e146.js
 delete mode 100644 web/settings/assets/counter-d2cdbd98.js
 create mode 100644 web/settings/assets/counter-dae0c479.js
 delete mode 100644 web/settings/assets/counter-db36cac3.js
 delete mode 100644 web/settings/assets/counter-ddf406fa.js
 delete mode 100644 web/settings/assets/counter-dfc0206c.js
 delete mode 100644 web/settings/assets/counter-e17b6711.js
 create mode 100644 web/settings/assets/counter-e2aa39de.js
 create mode 100644 web/settings/assets/counter-e2ea1207.js
 create mode 100644 web/settings/assets/counter-e43b2263.js
 delete mode 100644 web/settings/assets/counter-e525bf90.js
 delete mode 100644 web/settings/assets/counter-eacbb4cc.js
 delete mode 100644 web/settings/assets/counter-eb577878.js
 delete mode 100644 web/settings/assets/counter-f1f7547c.js
 delete mode 100644 web/settings/assets/counter-f3a88abe.js
 delete mode 100644 web/settings/assets/counter-fc3afadd.js
 delete mode 100644 web/settings/assets/counter_sm-ae20b8ea.js
 create mode 100644 web/settings/assets/counter_sm-ce85abde.js
 create mode 100644 web/settings/assets/device-00ea06ea.js
 delete mode 100644 web/settings/assets/device-08fe3db1.js
 create mode 100644 web/settings/assets/device-09e0b5dd.js
 delete mode 100644 web/settings/assets/device-0a578374.js
 delete mode 100644 web/settings/assets/device-0c94f34d.js
 delete mode 100644 web/settings/assets/device-0f4599b8.js
 delete mode 100644 web/settings/assets/device-13ac66a2.js
 create mode 100644 web/settings/assets/device-13bf79c7.js
 create mode 100644 web/settings/assets/device-17ee5402.js
 delete mode 100644 web/settings/assets/device-1859f43b.js
 create mode 100644 web/settings/assets/device-191071c7.js
 create mode 100644 web/settings/assets/device-19334006.js
 create mode 100644 web/settings/assets/device-1a057dc5.js
 delete mode 100644 web/settings/assets/device-1c46f4b0.js
 delete mode 100644 web/settings/assets/device-1f0b55db.js
 create mode 100644 web/settings/assets/device-20a3cc0b.js
 create mode 100644 web/settings/assets/device-264b9607.js
 create mode 100644 web/settings/assets/device-2bd6af83.js
 create mode 100644 web/settings/assets/device-2dc6cc3c.js
 delete mode 100644 web/settings/assets/device-359d7e50.js
 delete mode 100644 web/settings/assets/device-38fb8261.js
 delete mode 100644 web/settings/assets/device-3b65739e.js
 delete mode 100644 web/settings/assets/device-3c0a0263.js
 delete mode 100644 web/settings/assets/device-3c779cdd.js
 delete mode 100644 web/settings/assets/device-3e055cd7.js
 delete mode 100644 web/settings/assets/device-40b4b0c5.js
 create mode 100644 web/settings/assets/device-41c2f368.js
 delete mode 100644 web/settings/assets/device-4498198c.js
 delete mode 100644 web/settings/assets/device-44b38c3f.js
 create mode 100644 web/settings/assets/device-4f01c44f.js
 delete mode 100644 web/settings/assets/device-4f7c15a3.js
 create mode 100644 web/settings/assets/device-511acdb3.js
 create mode 100644 web/settings/assets/device-51a9d57c.js
 create mode 100644 web/settings/assets/device-57a08fa3.js
 delete mode 100644 web/settings/assets/device-57e7ea16.js
 delete mode 100644 web/settings/assets/device-58a430d5.js
 delete mode 100644 web/settings/assets/device-5a9d2acd.js
 create mode 100644 web/settings/assets/device-5aef24bb.js
 delete mode 100644 web/settings/assets/device-622f0263.js
 create mode 100644 web/settings/assets/device-63bdcc3c.js
 delete mode 100644 web/settings/assets/device-646a2df0.js
 create mode 100644 web/settings/assets/device-667da2bf.js
 delete mode 100644 web/settings/assets/device-671cfac2.js
 create mode 100644 web/settings/assets/device-73279a9d.js
 create mode 100644 web/settings/assets/device-7552eed1.js
 delete mode 100644 web/settings/assets/device-76f55505.js
 create mode 100644 web/settings/assets/device-7aeda0a3.js
 delete mode 100644 web/settings/assets/device-7bfbb863.js
 create mode 100644 web/settings/assets/device-7c975c06.js
 create mode 100644 web/settings/assets/device-7d21f4f3.js
 delete mode 100644 web/settings/assets/device-7ea3222f.js
 delete mode 100644 web/settings/assets/device-7f837c71.js
 delete mode 100644 web/settings/assets/device-7fb9b18e.js
 delete mode 100644 web/settings/assets/device-7fc12e51.js
 delete mode 100644 web/settings/assets/device-8118a66e.js
 delete mode 100644 web/settings/assets/device-829b538b.js
 create mode 100644 web/settings/assets/device-84e9833f.js
 delete mode 100644 web/settings/assets/device-850717d0.js
 delete mode 100644 web/settings/assets/device-86046891.js
 delete mode 100644 web/settings/assets/device-86f88cbb.js
 create mode 100644 web/settings/assets/device-8770c372.js
 create mode 100644 web/settings/assets/device-8a6c3a9f.js
 create mode 100644 web/settings/assets/device-8b304fd5.js
 delete mode 100644 web/settings/assets/device-8c349616.js
 create mode 100644 web/settings/assets/device-8f5f7340.js
 create mode 100644 web/settings/assets/device-92f55c21.js
 create mode 100644 web/settings/assets/device-930131aa.js
 create mode 100644 web/settings/assets/device-944bfe1b.js
 create mode 100644 web/settings/assets/device-95627a98.js
 create mode 100644 web/settings/assets/device-967835b8.js
 create mode 100644 web/settings/assets/device-97810824.js
 create mode 100644 web/settings/assets/device-97dc9354.js
 delete mode 100644 web/settings/assets/device-98e25fe5.js
 delete mode 100644 web/settings/assets/device-98fd1cc4.js
 delete mode 100644 web/settings/assets/device-99fa45c8.js
 create mode 100644 web/settings/assets/device-9eedb23a.js
 delete mode 100644 web/settings/assets/device-a1e3a710.js
 delete mode 100644 web/settings/assets/device-a3d36699.js
 create mode 100644 web/settings/assets/device-a4ac3a30.js
 create mode 100644 web/settings/assets/device-a55b4f4a.js
 create mode 100644 web/settings/assets/device-a5ad3257.js
 create mode 100644 web/settings/assets/device-a945746f.js
 delete mode 100644 web/settings/assets/device-aa58f408.js
 delete mode 100644 web/settings/assets/device-ab0439ee.js
 delete mode 100644 web/settings/assets/device-b4d24a29.js
 create mode 100644 web/settings/assets/device-b5ff9479.js
 delete mode 100644 web/settings/assets/device-b6ab13cb.js
 create mode 100644 web/settings/assets/device-ba7411f1.js
 delete mode 100644 web/settings/assets/device-bf4936ba.js
 delete mode 100644 web/settings/assets/device-c034f6f0.js
 create mode 100644 web/settings/assets/device-c0ddbba1.js
 delete mode 100644 web/settings/assets/device-c0dfc296.js
 create mode 100644 web/settings/assets/device-c1920155.js
 create mode 100644 web/settings/assets/device-c1c7f277.js
 create mode 100644 web/settings/assets/device-c37bf0a2.js
 create mode 100644 web/settings/assets/device-c3aaf957.js
 create mode 100644 web/settings/assets/device-c3e49e5d.js
 delete mode 100644 web/settings/assets/device-c491b9c2.js
 delete mode 100644 web/settings/assets/device-c605ea36.js
 create mode 100644 web/settings/assets/device-c9df224a.js
 delete mode 100644 web/settings/assets/device-ca2bde32.js
 create mode 100644 web/settings/assets/device-cbb1f36f.js
 delete mode 100644 web/settings/assets/device-cc59c62c.js
 delete mode 100644 web/settings/assets/device-d659f206.js
 delete mode 100644 web/settings/assets/device-d6d46ef8.js
 create mode 100644 web/settings/assets/device-d779a283.js
 delete mode 100644 web/settings/assets/device-d9f34fe2.js
 delete mode 100644 web/settings/assets/device-db16ee4d.js
 create mode 100644 web/settings/assets/device-dc9695a4.js
 create mode 100644 web/settings/assets/device-dcaa50ab.js
 create mode 100644 web/settings/assets/device-e1695c1b.js
 delete mode 100644 web/settings/assets/device-e372d627.js
 delete mode 100644 web/settings/assets/device-e4d1ba40.js
 create mode 100644 web/settings/assets/device-e6c608f5.js
 create mode 100644 web/settings/assets/device-f057baf4.js
 delete mode 100644 web/settings/assets/device-f065b014.js
 create mode 100644 web/settings/assets/device-f2ca9f52.js
 create mode 100644 web/settings/assets/device-f2e0c7de.js
 create mode 100644 web/settings/assets/device-f5beaf39.js
 delete mode 100644 web/settings/assets/device-f9bc5796.js
 create mode 100644 web/settings/assets/device-fa6313a5.js
 create mode 100644 web/settings/assets/device-fb6dbf7a.js
 delete mode 100644 web/settings/assets/device-fbd8e09f.js
 delete mode 100644 web/settings/assets/device-fcfe882c.js
 create mode 100644 web/settings/assets/displayTheme-78ab078b.js
 delete mode 100644 web/settings/assets/displayTheme-97f12f16.js
 create mode 100644 web/settings/assets/electricity_tariff-18981e99.js
 delete mode 100644 web/settings/assets/electricity_tariff-86994943.js
 delete mode 100644 web/settings/assets/electricity_tariff-8c65c060.js
 delete mode 100644 web/settings/assets/electricity_tariff-921487ff.js
 create mode 100644 web/settings/assets/electricity_tariff-9f4ce3a7.js
 create mode 100644 web/settings/assets/electricity_tariff-ac583f0a.js
 create mode 100644 web/settings/assets/electricity_tariff-b400ca32.js
 delete mode 100644 web/settings/assets/electricity_tariff-bc229946.js
 create mode 100644 web/settings/assets/electricity_tariff-c1ffcfa7.js
 delete mode 100644 web/settings/assets/electricity_tariff-c641235d.js
 create mode 100644 web/settings/assets/external_inverter-319dd94a.js
 delete mode 100644 web/settings/assets/external_inverter-3f39a305.js
 delete mode 100644 web/settings/assets/index-b0e5e618.js
 create mode 100644 web/settings/assets/index-dc0e711f.js
 create mode 100644 web/settings/assets/inverter-00707516.js
 create mode 100644 web/settings/assets/inverter-0372b463.js
 create mode 100644 web/settings/assets/inverter-0fe312b3.js
 delete mode 100644 web/settings/assets/inverter-1528dc9b.js
 delete mode 100644 web/settings/assets/inverter-1b5f20c2.js
 create mode 100644 web/settings/assets/inverter-22aad90d.js
 delete mode 100644 web/settings/assets/inverter-2671797a.js
 create mode 100644 web/settings/assets/inverter-3661665d.js
 create mode 100644 web/settings/assets/inverter-3a770b71.js
 create mode 100644 web/settings/assets/inverter-3c18bfc8.js
 delete mode 100644 web/settings/assets/inverter-3d8e5c7f.js
 create mode 100644 web/settings/assets/inverter-3f3aa74b.js
 delete mode 100644 web/settings/assets/inverter-4130514e.js
 create mode 100644 web/settings/assets/inverter-521e60bd.js
 delete mode 100644 web/settings/assets/inverter-61827c16.js
 delete mode 100644 web/settings/assets/inverter-6217c8a3.js
 create mode 100644 web/settings/assets/inverter-62aebfd4.js
 create mode 100644 web/settings/assets/inverter-668ceedf.js
 delete mode 100644 web/settings/assets/inverter-6d12a3f1.js
 create mode 100644 web/settings/assets/inverter-6f930abf.js
 delete mode 100644 web/settings/assets/inverter-79d423ad.js
 create mode 100644 web/settings/assets/inverter-7c07833e.js
 delete mode 100644 web/settings/assets/inverter-80adcee2.js
 create mode 100644 web/settings/assets/inverter-832fb3b7.js
 delete mode 100644 web/settings/assets/inverter-89ab9892.js
 create mode 100644 web/settings/assets/inverter-90d5660d.js
 delete mode 100644 web/settings/assets/inverter-93d278b2.js
 delete mode 100644 web/settings/assets/inverter-94706045.js
 delete mode 100644 web/settings/assets/inverter-97406357.js
 delete mode 100644 web/settings/assets/inverter-a005080e.js
 create mode 100644 web/settings/assets/inverter-a77daa25.js
 delete mode 100644 web/settings/assets/inverter-a9cee12b.js
 create mode 100644 web/settings/assets/inverter-ab8a80e4.js
 delete mode 100644 web/settings/assets/inverter-b0ea296b.js
 delete mode 100644 web/settings/assets/inverter-b47b017e.js
 create mode 100644 web/settings/assets/inverter-b4941105.js
 delete mode 100644 web/settings/assets/inverter-bb47d837.js
 delete mode 100644 web/settings/assets/inverter-beac0910.js
 create mode 100644 web/settings/assets/inverter-c319320b.js
 delete mode 100644 web/settings/assets/inverter-c861a20b.js
 create mode 100644 web/settings/assets/inverter-cf814a97.js
 create mode 100644 web/settings/assets/inverter-d090560a.js
 create mode 100644 web/settings/assets/inverter-d1ef1a1b.js
 delete mode 100644 web/settings/assets/inverter-d5bf52e5.js
 create mode 100644 web/settings/assets/inverter-d79a2e57.js
 delete mode 100644 web/settings/assets/inverter-ec40e2ac.js
 create mode 100644 web/settings/assets/inverter-eee7c6e5.js
 create mode 100644 web/settings/assets/inverter-efcd16da.js
 create mode 100644 web/settings/assets/inverter-f293b026.js
 create mode 100644 web/settings/assets/inverter-f30a6830.js
 delete mode 100644 web/settings/assets/inverter-f3b65772.js
 delete mode 100644 web/settings/assets/inverter-f504e343.js
 delete mode 100644 web/settings/assets/inverter-f857c467.js
 delete mode 100644 web/settings/assets/inverter-fab7ed1c.js
 create mode 100644 web/settings/assets/inverter_secondary-67eeedf8.js
 delete mode 100644 web/settings/assets/inverter_secondary-f8fdf5c3.js
 delete mode 100644 web/settings/assets/ripple_control_receiver-6eba6a9a.js
 create mode 100644 web/settings/assets/ripple_control_receiver-9035a86a.js
 delete mode 100644 web/settings/assets/ripple_control_receiver-d8f4b5b9.js
 create mode 100644 web/settings/assets/ripple_control_receiver-fed88f10.js
 delete mode 100644 web/settings/assets/vehicle-023614f3.js
 create mode 100644 web/settings/assets/vehicle-039c8759.js
 create mode 100644 web/settings/assets/vehicle-03c9aa3d.js
 create mode 100644 web/settings/assets/vehicle-0babcb51.js
 create mode 100644 web/settings/assets/vehicle-0bc01aa8.js
 create mode 100644 web/settings/assets/vehicle-19e3adb9.js
 create mode 100644 web/settings/assets/vehicle-28a9dcf3.js
 delete mode 100644 web/settings/assets/vehicle-29ff37c0.js
 delete mode 100644 web/settings/assets/vehicle-2f9b7b98.js
 delete mode 100644 web/settings/assets/vehicle-3a34ea9e.js
 create mode 100644 web/settings/assets/vehicle-42f1ed52.js
 create mode 100644 web/settings/assets/vehicle-47ed0a84.js
 create mode 100644 web/settings/assets/vehicle-5b8d1dc8.js
 delete mode 100644 web/settings/assets/vehicle-5f51066d.js
 delete mode 100644 web/settings/assets/vehicle-65e40931.js
 create mode 100644 web/settings/assets/vehicle-7adb9a7c.js
 create mode 100644 web/settings/assets/vehicle-7bb9b768.js
 create mode 100644 web/settings/assets/vehicle-7f1d1c67.js
 create mode 100644 web/settings/assets/vehicle-7f7d2e44.js
 create mode 100644 web/settings/assets/vehicle-85478721.js
 delete mode 100644 web/settings/assets/vehicle-8ec5d670.js
 delete mode 100644 web/settings/assets/vehicle-98ffa49f.js
 create mode 100644 web/settings/assets/vehicle-9ce6bac4.js
 delete mode 100644 web/settings/assets/vehicle-9dbb1f9d.js
 create mode 100644 web/settings/assets/vehicle-b9845ca5.js
 create mode 100644 web/settings/assets/vehicle-bedc772a.js
 delete mode 100644 web/settings/assets/vehicle-c0891ece.js
 delete mode 100644 web/settings/assets/vehicle-c5ee02d8.js
 delete mode 100644 web/settings/assets/vehicle-d0d26522.js
 delete mode 100644 web/settings/assets/vehicle-d78b6b11.js
 delete mode 100644 web/settings/assets/vehicle-e909e122.js
 rename web/settings/assets/{vehicle-08379fee.js => vehicle-f050a85d.js} (69%)
 delete mode 100644 web/settings/assets/vehicle-f30d6420.js
 delete mode 100644 web/settings/assets/vehicle-f3b10eaa.js
 delete mode 100644 web/settings/assets/vehicle-fa2b1ad1.js
 create mode 100644 web/settings/assets/vendor-a21b3a62.js
 create mode 100644 web/settings/assets/vendor-axios-0e6de98a.js
 delete mode 100644 web/settings/assets/vendor-axios-65ecee4b.js
 rename web/settings/assets/{vendor-bootstrap-4ad604fa.js => vendor-bootstrap-d0c3645c.js} (99%)
 delete mode 100644 web/settings/assets/vendor-chartjs-35992f4a.js
 create mode 100644 web/settings/assets/vendor-chartjs-5fa56b74.js
 delete mode 100644 web/settings/assets/vendor-f2b8aa6f.js
 rename web/settings/assets/{vendor-fortawesome-71546160.js => vendor-fortawesome-41164876.js} (99%)
 rename web/settings/assets/{vendor-jquery-d3cb8fad.js => vendor-jquery-a5dbbab1.js} (99%)
 rename web/settings/assets/{vendor-sortablejs-2f1828d0.js => vendor-sortablejs-3016fed8.js} (99%)

diff --git a/web/settings/.htaccess b/web/settings/.htaccess
index 2385f88c5e..0d219e975f 100644
--- a/web/settings/.htaccess
+++ b/web/settings/.htaccess
@@ -1,7 +1,7 @@
 <Files *.html>
-    FileETag None
-    Header unset ETag
-    Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
-    Header set Pragma "no-cache"
-    Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
+  FileETag None
+  Header unset ETag
+  Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
+  Header set Pragma "no-cache"
+  Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
 </Files>
diff --git a/web/settings/assets/ChargeLog-9836d756.js b/web/settings/assets/ChargeLog-9836d756.js
new file mode 100644
index 0000000000..5d7705be94
--- /dev/null
+++ b/web/settings/assets/ChargeLog-9836d756.js
@@ -0,0 +1,3 @@
+import{l as R,T as k,U as x,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,$ as S,u as g,k as h,l as u,x as i,D as d,N as s,A as V,B as I,y as c,z as n,M as _,q as w}from"./vendor-a21b3a62.js";import{C as W}from"./index-dc0e711f.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";R.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:E},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+`)+`
+`}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}}},T={class:"chargeLog"},U={name:"chargeLogForm"},y=["href"],M={key:1},P={class:"td-end"},z={class:"td-end"},O=["title"],A=["aria-valuenow"],Z=["aria-valuenow"],j=["aria-valuenow"],K=["aria-valuenow"],J={key:1,class:"td-center"},G={class:"td-end"},H={class:"no-wrap"},Y={class:"no-wrap"},Q={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"td-end"},se={key:0},oe={class:"row justify-content-center"},ne={ref:"downloadChargeLogLink",class:"hide"},le={class:"td-end"},de={class:"td-end"},ce={class:"td-end"},ge={class:"td-end"};function he(t,e,o,p,l,r){const C=g("openwb-base-text-input"),f=g("font-awesome-icon"),D=g("openwb-base-button-group-input"),m=g("openwb-base-select-input"),q=g("openwb-base-array-input"),v=g("openwb-base-card"),b=g("openwb-base-alert"),L=g("vue3-table-lite"),N=g("openwb-base-click-button");return h(),u("div",T,[i("form",U,[d(v,{title:"Filter"},{default:s(()=>[d(C,{modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())],title:"Zeitraum",subtype:"month",min:"2018-01","show-quick-buttons":!0,max:l.currentMonth},null,8,["modelValue","max"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),e[13]||(e[13]=c(" Erweiterte Optionen "))]),default:s(()=>[d(D,{modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())],title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"]),d(m,{modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())],title:"Lademodus",multiple:"",options:r.chargeModeList},{help:s(()=>e[14]||(e[14]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(m,{modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())],title:"Ladepunkt",multiple:"",options:r.chargePointList},{help:s(()=>e[15]||(e[15]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(m,{modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())],title:"Fahrzeug",multiple:"",options:r.vehicleList},{help:s(()=>e[16]||(e[16]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(q,{modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())],title:"ID-Tags"},{help:s(()=>e[17]||(e[17]=[c(" Es können mehrere Tags als Filter verwendet werden. ")])),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[e[18]||(e[18]=c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,y)]),_:1}),r.chargeLogRead?(h(),u("div",M,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",P,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(h(),u("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:_({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,A),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:_({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,Z),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:_({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,j),i("div",{class:"progress-bar bg-success",role:"progressbar",style:_({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K)],8,O)):(h(),u("div",J," - "))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",G,[i("span",H,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",Y," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",Q,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",ee,[i("span",te,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",ae," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",re,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ie,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(h(),u("div",se,[i("div",oe,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[e[20]||(e[20]=c(" Als CSV exportieren ")),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ne,null,512)]),e[21]||(e[21]=i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",le,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",de,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ce,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",ge,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):I("",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>e[19]||(e[19]=[c(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const Le=B(F,[["render",he],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{Le as default};
diff --git a/web/settings/assets/ChargeLog-f3c14ea7.js b/web/settings/assets/ChargeLog-f3c14ea7.js
deleted file mode 100644
index b6e2bb1d48..0000000000
--- a/web/settings/assets/ChargeLog-f3c14ea7.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import{l as R,T as k,U as x,F as S}from"./vendor-fortawesome-71546160.js";import{_ as B,a1 as E,u as h,k as g,l as _,x as i,D as d,N as s,A as I,B as V,y as c,z as n,M as u,q as w,S as W,U as F}from"./vendor-f2b8aa6f.js";import{C as T}from"./index-b0e5e618.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";R.add(k,x);const U={name:"OpenwbChargeLogView",components:{Vue3TableLite:E,FontAwesomeIcon:S},mixins:[T],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
-`)+`
-`}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()}},y=t=>(W("data-v-8607e7e7"),t=t(),F(),t),M={class:"chargeLog"},P={name:"chargeLogForm"},z=["href"],O={key:1},A={class:"td-end"},Z={class:"td-end"},j=["title"],K=["aria-valuenow"],J=["aria-valuenow"],G=["aria-valuenow"],H=["aria-valuenow"],Q={key:1,class:"td-center"},Y={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"no-wrap"},se={class:"no-wrap"},oe={class:"td-end"},ne={class:"td-end"},le={key:0},de={class:"row justify-content-center"},ce={class:"hide",ref:"downloadChargeLogLink"},he=y(()=>i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),ge={class:"td-end"},_e={class:"td-end"},ue={class:"td-end"},me={class:"td-end"};function pe(t,e,o,p,l,r){const C=h("openwb-base-text-input"),f=h("font-awesome-icon"),D=h("openwb-base-button-group-input"),m=h("openwb-base-select-input"),q=h("openwb-base-array-input"),v=h("openwb-base-card"),b=h("openwb-base-alert"),L=h("vue3-table-lite"),N=h("openwb-base-click-button");return g(),_("div",M,[i("form",P,[d(v,{title:"Filter"},{default:s(()=>[d(C,{title:"Zeitraum",subtype:"month",min:"2018-01",showQuickButtons:!0,max:l.currentMonth,modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())]},null,8,["max","modelValue"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),c(" Erweiterte Optionen ")]),default:s(()=>[d(D,{title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())]},null,8,["modelValue"]),d(m,{title:"Lademodus",multiple:"",options:r.chargeModeList,modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Ladepunkt",multiple:"",options:r.chargePointList,modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(m,{title:"Fahrzeug",multiple:"",options:r.vehicleList,modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Elemente ausgewählt werden. ")]),_:1},8,["options","modelValue"]),d(q,{title:"ID-Tags",modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())]},{help:s(()=>[c(" Es können mehrere Tags als Filter verwendet werden. ")]),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: "),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,z)]),_:1}),r.chargeLogRead?(g(),_("div",O,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",A,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",Z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(g(),_("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:u({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:u({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,J),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:u({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,G),i("div",{class:"progress-bar bg-success",role:"progressbar",style:u({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,H)],8,j)):(g(),_("div",Q,"-"))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",Y,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",ee,[i("span",te,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",ae," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",re,[i("span",ie,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",se," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",oe,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ne,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(g(),_("div",le,[i("div",de,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[c(" Als CSV exportieren "),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ce,null,512)]),he,d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",ge,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",_e,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ue,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",me,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):V("",!0)])):(g(),I(b,{key:0,subtype:"info"},{default:s(()=>[c(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const qe=B(U,[["render",pe],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{qe as default};
diff --git a/web/settings/assets/ChargePointInstallation-12a5c989.js b/web/settings/assets/ChargePointInstallation-12a5c989.js
new file mode 100644
index 0000000000..1353d5896c
--- /dev/null
+++ b/web/settings/assets/ChargePointInstallation-12a5c989.js
@@ -0,0 +1 @@
+import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-41164876.js";import{_ as V,C as le}from"./index-dc0e711f.js";import{_ as q}from"./dynamic-import-helper-be004503.js";import{_ as S,u as g,k as l,l as p,A as _,N as o,y as s,z as w,D as a,x as d,a0 as E,a1 as D,J as A,K as x,B as h,q as M,a2 as F,P as ie}from"./vendor-a21b3a62.js";const se={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},O=S(se,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[O]},ue={class:"charge-point-config-fallback"},de={key:1};function pe(t,e,c,y,m,u){const k=g("openwb-base-alert"),f=g("openwb-base-textarea");return l(),p("div",ue,[Object.keys(t.chargePoint.configuration).length==0?(l(),_(k,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),p("div",de,[a(k,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=L=>t.updateConfiguration(L,"configuration"))},{help:o(()=>e[1]||(e[1]=[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const me=S(re,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={props:{chargePoint:{type:Object,required:!0}}},he=S(ge,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),ce={name:"ChargePointCommandsFallback",mixins:[he]},be={class:"charge-point-commands-fallback"};function fe(t,e,c,y,m,u){const k=g("openwb-base-alert");return l(),p("div",be,[a(k,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const _e=S(ce,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),ve={name:"OpenwbChargePointProxy",mixins:[O],computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),E({loader:()=>q(Object.assign({"./external_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-3f4bb03f.js"),["assets/chargePoint-3f4bb03f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-8d89f54f.js"),["assets/chargePoint-8d89f54f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>V(()=>import("./chargePoint-f3a56f90.js"),["assets/chargePoint-f3a56f90.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>V(()=>import("./chargePoint-8472765d.js"),["assets/chargePoint-8472765d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>V(()=>import("./chargePoint-f77b98b5.js"),["assets/chargePoint-f77b98b5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>V(()=>import("./chargePoint-f92622dd.js"),["assets/chargePoint-f92622dd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>V(()=>import("./chargePoint-72c59831.js"),["assets/chargePoint-72c59831.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:me})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),E({loader:()=>q(Object.assign({"./openwb_pro/commands.vue":()=>V(()=>import("./commands-0749d4c7.js"),["assets/commands-0749d4c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:_e})}}};function we(t,e,c,y,m,u){const k=g("openwb-base-heading");return l(),p(A,null,[a(k,null,{default:o(()=>[s(' Einstellungen für Ladepunkt Typ "'+w(t.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointSettingsComponent),{"charge-point":t.chargePoint,"onUpdate:configuration":e[0]||(e[0]=f=>t.updateConfiguration(f))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[s(' Befehle für Ladepunkt Typ "'+w(t.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointCommandsComponent),{"charge-point":t.chargePoint},null,8,["charge-point"]))],64)}const ke=S(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ke},mixins:[le],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[c,y]of Object.entries(t))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[c]=y);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let c=parseInt(e.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+c].name;t.push({value:c,text:y})}),t}}},methods:{addChargePoint(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&(console.debug("request removal of charge point '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}}))},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation(),console.info("requesting new charge point template autolock plan...");let c=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:c}})},removeChargePointTemplateAutolockPlanModal(t,e,c){c.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,c){this.showChargePointTemplateAutolockPlanModal=!1,c=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"' autolock plan '"+e+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}}))},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le={key:1},Be={key:0},We={class:"col-1"},Ae={key:0},Se={key:1},Ue={key:1},xe={key:0},Te={key:2},ze={key:4},Ie=["onClick"],qe={key:0},Ee={key:1},De={key:2},Me={key:2};function Fe(t,e,c,y,m,u){const k=g("openwb-base-modal-dialog"),f=g("font-awesome-icon"),L=g("openwb-base-avatar"),P=g("openwb-base-text-input"),T=g("openwb-base-select-input"),$=g("openwb-charge-point-proxy"),B=g("openwb-base-heading"),C=g("openwb-base-button-group-input"),U=g("openwb-base-card"),N=g("openwb-base-click-button"),j=g("font-awesome-layers"),z=g("openwb-base-alert"),R=g("openwb-base-array-input"),I=g("openwb-base-range-input"),Z=g("openwb-base-number-input"),J=g("openwb-base-submit-buttons");return l(),p(A,null,[a(k,{show:m.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=i=>u.removeChargePoint(m.modalChargePointIndex,i))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(m.modalChargePointIndex))+'" (ID: '+w(m.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:m.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=i=>u.removeChargePointTemplate(m.modalChargePointTemplateIndex,i))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(m.modalChargePointTemplateIndex))+'" (ID: '+w(m.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:m.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=i=>u.removeChargePointTemplateAutolockPlan(m.modalChargePointTemplateIndex,m.modalChargePointTemplateAutolockPlanIndex,i))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(m.modalChargePointTemplateIndex,m.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",ye,[d("form",Pe,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!c.installAssistantActive},{header:o(()=>[a(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=s(" Ladepunkte "))]),default:o(()=>[(l(!0),p(A,null,x(u.installedChargePoints,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+i.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?h("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":n=>t.updateState(r,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[r].type},null,8,["model-value"]),i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),p("span",Ve,[a(T,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[r].template,"onUpdate:modelValue":n=>t.updateState(r,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),e[13]||(e[13]=d("hr",null,null,-1)),a($,{"charge-point":i,"onUpdate:configuration":n=>u.updateConfiguration(r,n)},null,8,["charge-point","onUpdate:configuration"]),(i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&i.charging_type!=="DC"?(l(),p("div",Le,[e[12]||(e[12]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[8]||(e[8]=[s(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[9]||(e[9]=[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{default:o(()=>[...e[10]||(e[10]=[s(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.connected_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":i.phase_1,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_1")},{help:o(()=>[...e[11]||(e[11]=[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(l(),p("hr",Be)):h("",!0),a(T,{class:"mb-2",title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":m.chargePointToAdd,"onUpdate:modelValue":e[3]||(e[3]=i=>m.chargePointToAdd=i)},{append:o(()=>[d("span",We,[a(N,{class:M(m.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:m.chargePointToAdd===void 0,onButtonClicked:u.addChargePoint},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>e[14]||(e[14]=[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),d("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),d("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),e[37]||(e[37]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[15]||(e[15]=s(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),_(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),p("div",Ae,[a(z,{subtype:"info"},{default:o(()=>e[16]||(e[16]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),p("div",Se,[(l(!0),p(A,null,x(u.chargePointTemplates,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+u.getChargePointTemplateIndex(r)+")",collapsible:!0,collapsed:!0},F({default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:o(()=>[e[17]||(e[17]=s(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(l(),_(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":i.charging_type,"onUpdate:modelValue":n=>t.updateState(r,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),e[34]||(e[34]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[18]||(e[18]=[s(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(r,n,"disable_after_unplug")},{help:o(()=>[...e[19]||(e[19]=[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!c.installAssistantActive?(l(),p("div",Ue,[i.disable_after_unplug?(l(),_(R,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":i.valid_tags,"onUpdate:modelValue":n=>t.updateState(r,n,"valid_tags")},{help:o(()=>[...e[20]||(e[20]=[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[21]||(e[21]=[s(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(z,{subtype:"info"},{default:o(()=>[e[22]||(e[22]=s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[23]||(e[23]=d("br",null,null,-1)),e[24]||(e[24]=s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),i.charging_type==="AC"?(l(),p("span",xe," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),e[25]||(e[25]=d("br",null,null,-1)),e[26]||(e[26]=s(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[27]||(e[27]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[28]||(e[28]=s(" beschrieben. "))]),_:2},1024),i.charging_type==="AC"||u.dcChargingEnabled!==!0?(l(),p("div",Te,[a(I,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(I,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(l(),_(Z,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),e[36]||(e[36]=d("hr",null,null,-1)),c.installAssistantActive?h("",!0):(l(),p("div",ze,[e[33]||(e[33]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[29]||(e[29]=[s(" Automatische Sperre ")])]),_:1}),a(C,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.active,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.active")},{help:o(()=>[...e[30]||(e[30]=[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[31]||(e[31]=[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{actions:o(()=>[a(L,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(r,n)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[32]||(e[32]=s(" Zeitpläne für die automatische Sperre "))]),_:2},1024)])),(l(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(r),(n,v)=>(l(),_(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(l(),p("span",{key:0,class:M(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:ie(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(f,{"fixed-width":"",icon:["fas","clock"]}),s(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(l(),p("span",qe,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):h("",!0),n.frequency.selected=="daily"?(l(),p("span",Ee,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),n.frequency.selected=="weekly"?(l(),p("span",De,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Ie)):h("",!0),b.collapsed==!1?(l(),_(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(r,v,W)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[a(P,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(l(),_(P,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),n.frequency.selected=="once"?(l(),_(P,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),n.frequency.selected=="weekly"?(l(),p("div",Me,[(l(!0),p(A,null,x(t.weekdays,(b,W)=>(l(),_(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":H=>t.updateState(v,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?h("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(J,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=i=>t.$emit("save")),onReset:e[5]||(e[5]=i=>t.$emit("reset")),onDefaults:e[6]||(e[6]=i=>t.$emit("defaults"))})])])],64)}const Oe=S(Ce,[["render",Fe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Oe},Symbol.toStringTag,{value:"Module"}));export{O as C,he as a,Oe as b,Ze as c};
diff --git a/web/settings/assets/ChargePointInstallation-fba1b24e.js b/web/settings/assets/ChargePointInstallation-fba1b24e.js
deleted file mode 100644
index 41aa0f390b..0000000000
--- a/web/settings/assets/ChargePointInstallation-fba1b24e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-71546160.js";import{_ as L,C as ie}from"./index-b0e5e618.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as U,u as h,k as i,l as p,A as f,N as o,y as s,z as k,D as n,x as d,a2 as D,a3 as M,J as S,K as T,B as g,q as O,a4 as F,P as le,S as se,U as re}from"./vendor-f2b8aa6f.js";const ue={emits:["update:configuration"],props:{chargePoint:{type:Object,required:!0}},methods:{updateConfiguration(e,a=void 0){this.$emit("update:configuration",{value:e,object:a})}}},de=U(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),pe={name:"ChargePointConfigFallback",mixins:[de]},me={class:"charge-point-config-fallback"},ce={key:1};function he(e,a,m,P,c,u){const C=h("openwb-base-alert"),b=h("openwb-base-textarea");return i(),p("div",me,[Object.keys(e.chargePoint.configuration).length==0?(i(),f(C,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+k(e.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),p("div",ce,[n(C,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+k(e.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(b,{title:"Konfiguration",subtype:"json","model-value":e.chargePoint.configuration,"onUpdate:modelValue":a[0]||(a[0]=B=>e.updateConfiguration(B,"configuration"))},{help:o(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(C,{subtype:"info"},{default:o(()=>[d("pre",null,k(JSON.stringify(e.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const ge=U(pe,[["render",he],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),_e={props:{chargePoint:{type:Object,required:!0}}},be=U(_e,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),fe={name:"ChargePointCommandsFallback",mixins:[be]},ve={class:"charge-point-commands-fallback"};function we(e,a,m,P,c,u){const C=h("openwb-base-alert");return i(),p("div",ve,[n(C,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+k(e.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const ke=U(fe,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),Ce={name:"OpenwbChargePointProxy",emits:["update:configuration"],props:{chargePoint:{required:!0,type:Object}},computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),D({loader:()=>E(Object.assign({"./external_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-218a4f96.js"),["assets/chargePoint-218a4f96.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>L(()=>import("./chargePoint-4b4f3b43.js"),["assets/chargePoint-4b4f3b43.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>L(()=>import("./chargePoint-d36f4e64.js"),["assets/chargePoint-d36f4e64.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>L(()=>import("./chargePoint-756bf3c2.js"),["assets/chargePoint-756bf3c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>L(()=>import("./chargePoint-db6ab728.js"),["assets/chargePoint-db6ab728.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>L(()=>import("./chargePoint-ddcd5f93.js"),["assets/chargePoint-ddcd5f93.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>L(()=>import("./chargePoint-a2f06ead.js"),["assets/chargePoint-a2f06ead.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:ge})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),D({loader:()=>E(Object.assign({"./openwb_pro/commands.vue":()=>L(()=>import("./commands-f4c13b15.js"),["assets/commands-f4c13b15.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:ke})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}},ye=d("hr",null,null,-1);function Pe(e,a,m,P,c,u){const C=h("openwb-base-heading");return i(),p(S,null,[n(C,null,{default:o(()=>[s(' Einstellungen für Ladepunkt Typ "'+k(m.chargePoint.type)+'" ',1)]),_:1}),(i(),f(M(u.myChargePointSettingsComponent),{chargePoint:m.chargePoint,"onUpdate:configuration":a[0]||(a[0]=b=>u.updateConfiguration(b))},null,40,["chargePoint"])),ye,n(C,null,{default:o(()=>[s(' Befehle für Ladepunkt Typ "'+k(m.chargePoint.type)+'" ',1)]),_:1}),(i(),f(M(u.myChargePointCommandsComponent),{chargePoint:m.chargePoint},null,8,["chargePoint"]))],64)}const Ve=U(Ce,[["render",Pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Le={name:"OpenwbChargePointInstallationView",mixins:[ie],emits:["sendCommand"],components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:Ve},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),a={};for(const[m,P]of Object.entries(e))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(a[m]=P);return a}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let e=[];return Object.keys(this.chargePointTemplates).forEach(a=>{let m=parseInt(a.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;e.push({value:m,text:P})}),e}}},methods:{addChargePoint(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(e,a){a.stopPropagation(),this.modalChargePointIndex=parseInt(e.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(e,a){this.showChargePointModal=!1,a=="confirm"&&(console.debug("request removal of charge point '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:e}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getChargePointTemplateName(e){return this.$store.state.mqtt["openWB/chargepoint/template/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+e].name:"Profil "+e},addChargePointTemplate(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(e,a){a.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.showChargePointTemplateModal=!0},removeChargePointTemplate(e,a){this.showChargePointTemplateModal=!1,a=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:e}}))},addChargePointTemplateAutolockPlan(e,a){a.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(e);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(e,a,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(e),this.modalChargePointTemplateAutolockPlanIndex=parseInt(a.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(e,a,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.debug("request removal of chargePoint template '"+e+"' autolock plan '"+a+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:e,plan:a}}))},getChargePointTemplateAutolockPlanName(e,a){return this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a]?this.$store.state.mqtt["openWB/chargepoint/template/"+e+"/autolock/"+a].name:"Autolock Zeitplan "+e+"/"+a},getChargePointTemplateAutolockPlans(e){let a=this.getChargePointTemplateIndex(e);return this.getWildcardTopics("openWB/chargepoint/template/"+a+"/autolock/+")},updateConfiguration(e,a){console.debug("updateConfiguration",e,a),this.updateState(e,a.value,a.object)}}},v=e=>(se("data-v-75fe5743"),e=e(),re(),e),Be={class:"chargePointInstallation"},We={name:"chargePointInstallationForm"},Ae={key:0},Se=v(()=>d("hr",null,null,-1)),Ue={key:1},xe=v(()=>d("hr",null,null,-1)),Te=v(()=>d("br",null,null,-1)),Ie=v(()=>d("br",null,null,-1)),ze=v(()=>d("br",null,null,-1)),qe=v(()=>d("br",null,null,-1)),Ee={key:0},De={class:"col-1"},Me=v(()=>d("br",null,null,-1)),Oe=v(()=>d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),d("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),d("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)),Fe=v(()=>d("hr",{class:"border-secondary"},null,-1)),Ne={key:0},$e={key:1},je=v(()=>d("hr",null,null,-1)),Re={key:1},Ze=v(()=>d("hr",null,null,-1)),Je=v(()=>d("br",null,null,-1)),He={key:0},Ge=v(()=>d("br",null,null,-1)),Qe=v(()=>d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),Xe={key:2},Ye=v(()=>d("hr",null,null,-1)),Ke={key:4},et=v(()=>d("hr",null,null,-1)),tt=["onClick"],nt={key:0},at={key:1},ot={key:2},it={key:2};function lt(e,a,m,P,c,u){const C=h("openwb-base-modal-dialog"),b=h("font-awesome-icon"),B=h("openwb-base-avatar"),V=h("openwb-base-text-input"),I=h("openwb-base-select-input"),N=h("openwb-charge-point-proxy"),W=h("openwb-base-heading"),y=h("openwb-base-button-group-input"),x=h("openwb-base-card"),$=h("openwb-base-click-button"),j=h("font-awesome-layers"),z=h("openwb-base-alert"),R=h("openwb-base-array-input"),q=h("openwb-base-range-input"),Z=h("openwb-base-number-input"),J=h("openwb-base-submit-buttons");return i(),p(S,null,[n(C,{show:c.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[0]||(a[0]=l=>u.removeChargePoint(c.modalChargePointIndex,l))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+k(u.getChargePointName(c.modalChargePointIndex))+'" (ID: '+k(c.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[1]||(a[1]=l=>u.removeChargePointTemplate(c.modalChargePointTemplateIndex,l))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+k(u.getChargePointTemplateName(c.modalChargePointTemplateIndex))+'" (ID: '+k(c.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),n(C,{show:c.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:a[2]||(a[2]=l=>u.removeChargePointTemplateAutolockPlan(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex,l))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+k(u.getChargePointTemplateAutolockPlanName(c.modalChargePointTemplateIndex,c.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",Be,[d("form",We,[n(x,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),s(" Ladepunkte ")]),default:o(()=>[(i(!0),p(S,null,T(u.installedChargePoints,(l,r)=>(i(),f(x,{key:r,title:l.name+" (ID: "+l.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(t=>[t.collapsed?g("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:w=>u.removeChargePointModal(r,w)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(r,t,"name")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":e.$store.state.mqtt[r].type},null,8,["model-value"]),l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),p("span",Ae,[n(I,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":e.$store.state.mqtt[r].template,"onUpdate:modelValue":t=>e.updateState(r,t,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):g("",!0),Se,n(N,{chargePoint:l,"onUpdate:configuration":t=>u.updateConfiguration(r,t)},null,8,["chargePoint","onUpdate:configuration"]),(l.type!=="internal_openwb"||e.$store.state.mqtt["openWB/general/extern"]===!1)&&l.charging_type!=="DC"?(i(),p("div",Ue,[xe,n(W,null,{default:o(()=>[s("Hardware-Optionen")]),_:1}),n(y,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.auto_phase_switch_hw,"onUpdate:modelValue":t=>e.updateState(r,t,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.control_pilot_interruption_hw,"onUpdate:modelValue":t=>e.updateState(r,t,"control_pilot_interruption_hw")},{help:o(()=>[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(W,null,{default:o(()=>[s(" Elektrischer Anschluss ")]),_:1}),n(y,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":l.connected_phases,"onUpdate:modelValue":t=>e.updateState(r,t,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":l.phase_1,"onUpdate:modelValue":t=>e.updateState(r,t,"phase_1")},{help:o(()=>[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),Te,s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),Ie,s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),ze,s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),qe,s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):g("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(i(),p("hr",Ee)):g("",!0),n(I,{class:"mb-2",title:"Verfügbare Ladepunkte",notSelected:"Bitte auswählen",options:u.getChargePointList(),"model-value":c.chargePointToAdd,"onUpdate:modelValue":a[3]||(a[3]=l=>c.chargePointToAdd=l)},{append:o(()=>[d("span",De,[n($,{class:O(c.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:c.chargePointToAdd===void 0,onButtonClicked:u.addChargePoint},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),Me,Oe]),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),Fe,n(x,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[n(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[n(b,{"fixed-width":"",icon:["far","file"]}),n(b,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),s(" Ladepunkt-Profile ")]),actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(i(),f(B,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):g("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(i(),p("div",Ne,[n(z,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),p("div",$e,[(i(!0),p(S,null,T(u.chargePointTemplates,(l,r)=>(i(),f(x,{key:r,title:l.name+" (ID: "+u.getChargePointTemplateIndex(r)+")",collapsible:!0,collapsed:!0},F({default:o(()=>[n(V,{title:"Bezeichnung",subtype:"text","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(r,t,"name"),disabled:r.endsWith("/0")},F({_:2},[r.endsWith("/0")?{name:"help",fn:o(()=>[s(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),u.dcChargingEnabled===!0?(i(),f(y,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":l.charging_type,"onUpdate:modelValue":t=>e.updateState(r,t,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),je,n(W,null,{default:o(()=>[s(" Zugangskontrolle ")]),_:1}),n(y,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.disable_after_unplug,"onUpdate:modelValue":t=>e.updateState(r,t,"disable_after_unplug")},{help:o(()=>[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")]),_:2},1032,["model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(i(),p("div",Re,[l.disable_after_unplug?(i(),f(R,{key:0,title:"Zugeordnete ID-Tags",noElementsMessage:"Keine ID-Tags zugeordnet.","model-value":l.valid_tags,"onUpdate:modelValue":t=>e.updateState(r,t,"valid_tags")},{help:o(()=>[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):g("",!0)])):g("",!0),Ze,n(W,null,{default:o(()=>[s(" Angaben zum konfigurierten Ladestrom der openWB ")]),_:1}),n(z,{subtype:"info"},{default:o(()=>[s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt."),Je,s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. "),l.charging_type==="AC"?(i(),p("span",He," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):g("",!0),Ge,s(" Komplexere Installationen mit mehreren Ladepunkten werden im "),Qe,s(" beschrieben. ")]),_:2},1024),l.charging_type==="AC"||u.dcChargingEnabled!==!0?(i(),p("div",Xe,[n(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":l.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(r,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":l.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(r,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(i(),f(Z,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":e.ac_current2dc_power(l.dc_max_current),"onUpdate:modelValue":t=>e.updateState(r,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),Ye,m.installAssistantActive?g("",!0):(i(),p("div",Ke,[et,n(W,null,{default:o(()=>[s("Automatische Sperre")]),_:1}),n(y,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.active,"onUpdate:modelValue":t=>e.updateState(r,t,"autolock.active")},{help:o(()=>[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(y,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":l.autolock.wait_for_charging_end,"onUpdate:modelValue":t=>e.updateState(r,t,"autolock.wait_for_charging_end")},{help:o(()=>[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(W,null,{actions:o(()=>[n(B,{class:"bg-success clickable",onClick:t=>u.addChargePointTemplateAutolockPlan(r,t)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[s(" Zeitpläne für die automatische Sperre ")]),_:2},1024)])),(i(!0),p(S,null,T(u.getChargePointTemplateAutolockPlans(r),(t,w)=>(i(),f(x,{key:w,title:t.name,collapsible:!0,collapsed:!0},{actions:o(_=>[_.collapsed==!0?(i(),p("span",{key:0,onClick:le(A=>e.updateState(w,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[n(b,{"fixed-width":"",icon:["fas","clock"]}),s(" "+k(t.time[0])+" - "+k(t.time[1])+" ",1),t.frequency.selected=="once"?(i(),p("span",nt,[n(b,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+k(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):g("",!0),t.frequency.selected=="daily"?(i(),p("span",at,[n(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):g("",!0),t.frequency.selected=="weekly"?(i(),p("span",ot,[n(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):g("",!0)],10,tt)):g("",!0),_.collapsed==!1?(i(),f(B,{key:1,class:"bg-danger clickable",onClick:A=>u.removeChargePointTemplateAutolockPlanModal(r,w,A)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):g("",!0)]),default:o(()=>[n(V,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":_=>e.updateState(w,_,"name")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":_=>e.updateState(w,_,"active")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Sperren um",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":_=>e.updateState(w,_,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(V,{title:"Freigeben um",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":_=>e.updateState(w,_,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(y,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":_=>e.updateState(w,_,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(i(),f(V,{key:0,title:"Sperren ab ...",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":_=>e.updateState(w,_,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):g("",!0),t.frequency.selected=="once"?(i(),f(V,{key:1,title:"... bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":_=>e.updateState(w,_,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):g("",!0),t.frequency.selected=="weekly"?(i(),p("div",it,[(i(!0),p(S,null,T(e.weekdays,(_,A)=>(i(),f(y,{key:A,title:_,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[A],"onUpdate:modelValue":H=>e.updateState(w,H,"frequency.weekly."+A)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):g("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:o(t=>[t.collapsed?g("",!0):(i(),f(B,{key:0,class:"bg-danger clickable",onClick:w=>u.removeChargePointTemplateModal(r,w)},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(J,{formName:"chargePointInstallationForm",onSave:a[4]||(a[4]=l=>e.$emit("save")),onReset:a[5]||(a[5]=l=>e.$emit("reset")),onDefaults:a[6]||(a[6]=l=>e.$emit("defaults"))})])])],64)}const st=U(Le,[["render",lt],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),mt=Object.freeze(Object.defineProperty({__proto__:null,default:st},Symbol.toStringTag,{value:"Module"}));export{de as C,be as a,st as b,mt as c};
diff --git a/web/settings/assets/Chart-0ed3fc8e.js b/web/settings/assets/Chart-eb294839.js
similarity index 57%
rename from web/settings/assets/Chart-0ed3fc8e.js
rename to web/settings/assets/Chart-eb294839.js
index 643f73f052..d960a3f66d 100644
--- a/web/settings/assets/Chart-0ed3fc8e.js
+++ b/web/settings/assets/Chart-eb294839.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as j,V as q,W as M,F as V}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-b0e5e618.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-35992f4a.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,j,q,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],emits:["sendCommand"],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}},watch:{chartRange(){this.init()}},mounted(){this.init()}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{title:"Zeitraum",modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,showQuickButtons:!0,modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())]},null,8,["title","subtype","min","max","modelValue"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")]),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>[f(" Es wurden noch keine Daten abgerufen. ")]),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as q,V as j,W as M,F as V}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-dc0e711f.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-5fa56b74.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,q,j,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[4]||(t[4]=[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[3]||(t[3]=[f(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-5ecdadd6.js b/web/settings/assets/CloudConfig-5ecdadd6.js
deleted file mode 100644
index 05be2ec17c..0000000000
--- a/web/settings/assets/CloudConfig-5ecdadd6.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as S,$ as q,F as P}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-b0e5e618.js";import{_ as Z,u as d,k as l,l as f,D as r,N as t,x as p,A as m,B as i,a4 as v,J as I,y as s,q as k}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(q);const x={name:"OpenwbCloudConfigView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:P},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,y]of Object.entries(o))y.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},M={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},N=p("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),A={class:"row justify-content-center"},R={key:2,name:"cloudConfigConnectForm"},F={class:"row justify-content-center"},j={key:3,name:"cloudConfigured"},E=p("span",null,[s(" Mit diesen Zugangsdaten können Sie sich in der "),p("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),s(" anmelden. ")],-1),G=p("hr",null,null,-1),T={class:"row justify-content-center"};function L(o,e,y,O,a,u){const D=d("openwb-base-modal-dialog"),h=d("router-link"),g=d("openwb-base-alert"),c=d("openwb-base-text-input"),w=d("openwb-base-button-group-input"),b=d("font-awesome-icon"),C=d("openwb-base-array-input"),B=d("openwb-base-click-button"),_=d("openwb-base-card"),V=d("openwb-base-heading"),W=d("openwb-base-submit-buttons");return l(),f(I,null,[r(D,{show:a.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>u.removeCloud(n))},{default:t(()=>[s(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")]),_:1},8,["show"]),p("div",M,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(l(),m(g,{key:0,subtype:"danger"},{default:t(()=>[s(" Sie müssen der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zustimmen, um die openWB Cloud nutzen zu können. ")]),_:1})):(l(),f("div",K,[r(g,{subtype:"success"},{default:t(()=>[s(" Sie haben der "),r(h,{to:"/System/LegalSettings"},{default:t(()=>[s(" Datenschutzerklärung ")]),_:1}),s(" zugestimmt und können die openWB Cloud nutzen. ")]),_:1}),a.enableRemoveCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})),u.cloudBridgeKey?i("",!0):(l(),f("form",U,[r(_,{title:"Neuen Zugang erstellen"},v({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>[s(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),N,s(" . ")]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",modelValue:a.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>a.newCloudData.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"E-Mail",required:"",subtype:"email",modelValue:a.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>a.newCloudData.email=n),disabled:""},null,8,["modelValue"]),r(w,{disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>a.newCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.newCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",A,[r(B,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>[s(" Zugang erstellen ")]),_:1})])]),key:"0"}:void 0]),1024),a.enableNewCloudButton?i("",!0):(l(),m(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>[s(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")]),_:1}))])),u.cloudBridgeKey?i("",!0):(l(),f("form",R,[r(_,{title:"Vorhandenen Zugang einrichten"},v({default:t(()=>[r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:a.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>a.connectCloudData.username=n)},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:a.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>a.connectCloudData.password=n)},null,8,["modelValue"]),r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],modelValue:a.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>a.connectCloudData.partner=n)},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["modelValue"]),a.connectCloudData.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[p("div",F,[r(B,{class:k(["col-4",a.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!a.enableCloudConnectButton,onButtonClicked:u.connectCloud},{default:t(()=>[s(" Mit Cloud verbinden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),u.cloudBridgeKey?(l(),f("form",j,[!a.enableCloudConnectButton||!a.enableNewCloudButton?(l(),m(g,{key:0,subtype:"warning"},{default:t(()=>[s(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")]),_:1})):i("",!0),r(_,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[p("div",T,[r(B,{class:k(["col-4",a.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!a.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>u.removeCloudModal(n))},{default:t(()=>[s(" Zugang löschen ")]),_:1},8,["class","disabled"])])]),default:t(()=>[r(V,null,{default:t(()=>[E]),_:1}),r(c,{title:"Benutzername",required:"",subtype:"user",modelValue:u.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>u.cloudSettings.username=n),disabled:""},null,8,["modelValue"]),r(c,{title:"Passwort",required:"",subtype:"password",modelValue:u.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>u.cloudSettings.password=n),disabled:""},null,8,["modelValue"]),G,r(w,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":u.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(u.cloudBridgeKey,n,"access.partner"))},{help:t(()=>[s(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")]),_:1},8,["model-value"]),u.cloudSettings.partner?(l(),m(C,{key:0,title:"Gültige Partner-IDs",noElementsMessage:"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(b,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>[s(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")]),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),u.cloudBridgeKey?(l(),m(W,{key:4,formName:"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const te=Z(x,[["render",L],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{te as default};
diff --git a/web/settings/assets/CloudConfig-d834b2a3.js b/web/settings/assets/CloudConfig-d834b2a3.js
new file mode 100644
index 0000000000..ef54478121
--- /dev/null
+++ b/web/settings/assets/CloudConfig-d834b2a3.js
@@ -0,0 +1 @@
+import{l as q,$ as P,F as z}from"./vendor-fortawesome-41164876.js";import{C as Z}from"./index-dc0e711f.js";import{_ as I,u as d,k as a,l as w,D as r,N as t,x as m,A as p,B as i,a2 as D,J as x,y as u,q as V}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";q.add(P);const M={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[Z],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,k]of Object.entries(o))k.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},h={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},A={class:"row justify-content-center"},N={key:2,name:"cloudConfigConnectForm"},R={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j={class:"row justify-content-center"};function G(o,e,k,T,s,l){const W=d("openwb-base-modal-dialog"),c=d("router-link"),g=d("openwb-base-alert"),b=d("openwb-base-text-input"),C=d("openwb-base-button-group-input"),f=d("font-awesome-icon"),B=d("openwb-base-array-input"),y=d("openwb-base-click-button"),v=d("openwb-base-card"),S=d("openwb-base-heading"),_=d("openwb-base-submit-buttons");return a(),w(x,null,[r(W,{show:s.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>l.removeCloud(n))},{default:t(()=>e[17]||(e[17]=[u(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",h,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(a(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[19]||(e[19]=u(" Sie müssen der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[18]||(e[18]=[u(" Datenschutzerklärung ")])),_:1}),e[20]||(e[20]=u(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(a(),w("div",K,[r(g,{subtype:"success"},{default:t(()=>[e[22]||(e[22]=u(" Sie haben der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[21]||(e[21]=[u(" Datenschutzerklärung ")])),_:1}),e[23]||(e[23]=u(" zugestimmt und können die openWB Cloud nutzen. "))]),_:1}),s.enableRemoveCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[24]||(e[24]=[u(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),l.cloudBridgeKey?i("",!0):(a(),w("form",U,[r(v,{title:"Neuen Zugang erstellen"},D({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[25]||(e[25]=[u(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),u(" . ")])),_:1}),r(b,{modelValue:s.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>s.newCloudData.username=n),title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",disabled:""},null,8,["modelValue"]),r(b,{modelValue:s.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>s.newCloudData.email=n),title:"E-Mail",required:"",subtype:"email",disabled:""},null,8,["modelValue"]),r(C,{modelValue:s.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>s.newCloudData.partner=n),disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[26]||(e[26]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.newCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[27]||(e[27]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",A,[r(y,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>e[28]||(e[28]=[u(" Zugang erstellen ")])),_:1})])]),key:"0"}:void 0]),1024),s.enableNewCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>e[29]||(e[29]=[u(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")])),_:1}))])),l.cloudBridgeKey?i("",!0):(a(),w("form",N,[r(v,{title:"Vorhandenen Zugang einrichten"},D({default:t(()=>[r(b,{modelValue:s.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>s.connectCloudData.username=n),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(b,{modelValue:s.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>s.connectCloudData.password=n),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(C,{modelValue:s.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>s.connectCloudData.partner=n),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[30]||(e[30]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.connectCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[31]||(e[31]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",R,[r(y,{class:V(["col-4",s.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!s.enableCloudConnectButton,onButtonClicked:l.connectCloud},{default:t(()=>e[32]||(e[32]=[u(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),l.cloudBridgeKey?(a(),w("form",F,[!s.enableCloudConnectButton||!s.enableNewCloudButton?(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[33]||(e[33]=[u(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(v,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",j,[r(y,{class:V(["col-4",s.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!s.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>l.removeCloudModal(n))},{default:t(()=>e[37]||(e[37]=[u(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(S,null,{default:t(()=>e[34]||(e[34]=[m("span",null,[u(" Mit diesen Zugangsdaten können Sie sich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),u(" anmelden. ")],-1)])),_:1}),r(b,{modelValue:l.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>l.cloudSettings.username=n),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(b,{modelValue:l.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>l.cloudSettings.password=n),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[38]||(e[38]=m("hr",null,null,-1)),r(C,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(l.cloudBridgeKey,n,"access.partner"))},{help:t(()=>e[35]||(e[35]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),l.cloudSettings.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[36]||(e[36]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),l.cloudBridgeKey?(a(),p(_,{key:4,"form-name":"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const Y=I(M,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{Y as default};
diff --git a/web/settings/assets/DataManagement-ad71d105.js b/web/settings/assets/DataManagement-ad71d105.js
new file mode 100644
index 0000000000..327514bb5b
--- /dev/null
+++ b/web/settings/assets/DataManagement-ad71d105.js
@@ -0,0 +1 @@
+import{l as z,af as V,ag as j,ah as H,ai as R,aj as E,F as P}from"./vendor-fortawesome-41164876.js";import{_ as B,C as U}from"./index-dc0e711f.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as S,u as m,k as d,l as f,A as w,N as a,y as s,z as y,D as o,x as n,a0 as q,a1 as I,J as W,B as _,q as D,K as F,a2 as G}from"./vendor-a21b3a62.js";const J={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})},sendCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},A=S(J,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),$={name:"BackupCloudConfigFallback",mixins:[A]},Z={class:"backup-cloud-fallback"},K={key:1};function Q(t,e,u,g,i,l){const b=m("openwb-base-alert"),p=m("openwb-base-textarea");return d(),f("div",Z,[Object.keys(t.backupCloud.configuration).length==0?(d(),w(b,{key:0,subtype:"info"},{default:a(()=>[s(' Die Backup-Cloud "'+y(t.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),f("div",K,[o(b,{subtype:"warning"},{default:a(()=>[s(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+y(t.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(p,{title:"Konfiguration",subtype:"json","model-value":t.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=v=>t.updateConfiguration(v,"configuration"))},{help:a(()=>e[1]||(e[1]=[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),o(b,{subtype:"info"},{default:a(()=>[n("pre",null,y(JSON.stringify(t.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const X=S($,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),Y={name:"OpenwbBackupCloudProxy",mixins:[A],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),q({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-510cc7e0.js"),["assets/backup_cloud-510cc7e0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-333e299c.js"),["assets/backup_cloud-333e299c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-71b57f4d.js"),["assets/backup_cloud-71b57f4d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-3f7a1039.js"),["assets/backup_cloud-3f7a1039.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:X})}}};function ee(t,e,u,g,i,l){const b=m("openwb-base-heading");return d(),f(W,null,[o(b,null,{default:a(()=>[s(' Einstellungen für Backup-Cloud Modul "'+y(t.backupCloud.name)+'" ',1)]),_:1}),(d(),w(I(l.myComponent),{"backup-cloud":t.backupCloud,"onUpdate:configuration":e[0]||(e[0]=p=>t.updateConfiguration(p)),onSendCommand:e[1]||(e[1]=p=>t.sendCommand(p))},null,40,["backup-cloud"]))],64)}const te=S(Y,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,j,H,R,E);const ne={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:P,OpenwbBackupCloudProxy:te},mixins:[U],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let i=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:i,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let i=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:i,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${i}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let i=new FormData;i.append("file",e),i.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",i,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(l=>{if(l.response){console.error(l.response.status,l.response.data);var b="Hochladen der Datei fehlgeschlagen!<br />"+l.response.status+": "+l.response.data}else l.request?(console.error(l.request),b+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",l.message),b+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(b,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},oe={class:"system"},se={key:1},ie={name:"backupForm"},ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue={key:0,name:"restoreForm"},re={class:"input-group"},de={class:"input-group-prepend"},pe={class:"input-group-text"},ce={class:"custom-file"},me={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},be={class:"input-group-append"},fe=["disabled"],ge={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:1,name:"cloudBackupForm"},ye={key:0},ve={name:"dataMigrationForm"},_e={class:"input-group"},we={class:"input-group-prepend"},Ce={class:"input-group-text"},Be={class:"custom-file"},De={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Se={class:"input-group-append"},Oe=["disabled"],We={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},Fe={key:1,name:"resetForm"},Ae={class:"row justify-content-center"},Te={class:"col-md-4 d-flex py-1 justify-content-center"};function xe(t,e,u,g,i,l){const b=m("openwb-base-button-group-input"),p=m("openwb-base-alert"),v=m("openwb-base-heading"),k=m("font-awesome-icon"),C=m("openwb-base-click-button"),M=m("openwb-base-select-input"),T=m("openwb-base-button-input"),x=m("openwb-backup-cloud-proxy"),L=m("openwb-base-submit-buttons"),O=m("openwb-base-card");return d(),f("div",oe,[u.installAssistantActive?_("",!0):(d(),w(p,{key:0,subtype:"danger"},{default:a(()=>[e[17]||(e[17]=n("h2",null,"Achtung!",-1)),e[18]||(e[18]=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),o(b,{modelValue:i.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=c=>i.warningAcknowledged=c),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),i.warningAcknowledged||u.installAssistantActive?(d(),f("div",se,[o(O,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:a(()=>{var c,h;return[n("form",ie,[o(v,null,{default:a(()=>e[19]||(e[19]=[s("Sicherung")])),_:1}),o(p,{subtype:"danger"},{default:a(()=>e[20]||(e[20]=[s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o(p,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[s(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),s(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),n("div",ae,[n("div",le,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=r=>l.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:a(()=>[e[22]||(e[22]=s(" Sicherung erstellen ")),o(k,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),i.showRestoreSection?(d(),f("form",ue,[e[27]||(e[27]=n("hr",null,null,-1)),o(v,null,{default:a(()=>e[23]||(e[23]=[s("Wiederherstellung")])),_:1}),o(p,{subtype:"danger"},{default:a(()=>e[24]||(e[24]=[s(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),n("br",null,null,-1),s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),n("div",re,[n("div",de,[n("div",pe,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ce,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=r=>l.updateSelectedRestoreFile(r))},null,32),n("label",me,y(i.selectedRestoreFile?i.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",be,[n("button",{class:D(["btn",i.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=r=>l.uploadRestoreFile())},[e[25]||(e[25]=s(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,fe)])]),n("div",ge,[n("div",he,[o(C,{class:D(i.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.restoreUploadDone,onButtonClicked:e[4]||(e[4]=r=>l.restoreBackup())},{default:a(()=>[e[26]||(e[26]=s(" Wiederherstellung starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),u.showBackupCloudSection?(d(),f("form",ke,[e[31]||(e[31]=n("hr",null,null,-1)),o(v,null,{default:a(()=>e[28]||(e[28]=[s(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),o(p,{subtype:"info"},{default:a(()=>e[29]||(e[29]=[s(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),n("br",null,null,-1),s(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),n("br",null,null,-1),s(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),s(" . ")])),_:1}),o(M,{class:"mb-2",title:"Backup-Cloud",options:l.backupCloudList,"model-value":(c=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:c.type,"onUpdate:modelValue":e[5]||(e[5]=r=>l.updateSelectedBackupCloud(r))},null,8,["options","model-value"]),(h=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&h.type?(d(),f("div",ye,[o(b,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=r=>t.updateState("openWB/system/backup_cloud/backup_before_update",r))},{help:a(()=>e[30]||(e[30]=[s(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),o(T,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=r=>l.sendSystemCommand("createCloudBackup",{}))}),o(x,{"backup-cloud":t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=r=>l.updateConfiguration("openWB/system/backup_cloud/config",r)),onSendCommand:e[9]||(e[9]=r=>l.sendSystemCommand(r.command,r.args))},null,8,["backup-cloud"])])):_("",!0),o(L,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=r=>t.$emit("save")),onReset:e[11]||(e[11]=r=>t.$emit("reset")),onDefaults:e[12]||(e[12]=r=>t.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?_("",!0):(d(),w(O,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:a(()=>[n("form",ve,[o(p,{subtype:"info"},{default:a(()=>e[32]||(e[32]=[s(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),o(p,{subtype:"danger"},{default:a(()=>e[33]||(e[33]=[s(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),n("br",null,null,-1),s(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),n("br",null,null,-1),s(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),n("div",_e,[n("div",we,[n("div",Ce,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Be,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=c=>l.updateSelectedDataMigrationFile(c))},null,32),n("label",De,y(i.selectedDataMigrationFile?i.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Se,[n("button",{class:D(["btn",i.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=c=>l.uploadDataMigrationFile())},[e[34]||(e[34]=s(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,Oe)])]),o(v,null,{default:a(()=>e[35]||(e[35]=[s(" Zuordnung der Komponenten ")])),_:1}),(d(!0),f(W,null,F(i.dataMigrationConfig,c=>(d(),f("div",{key:c.sectionName},[o(v,null,{default:a(()=>[s(y(c.sectionName),1)]),_:2},1024),(d(!0),f(W,null,F(c.sectionComponents,h=>(d(),w(M,{key:h.key,modelValue:i.dataMigrationMapping[h.key],"onUpdate:modelValue":r=>i.dataMigrationMapping[h.key]=r,title:h.label,options:l.getMigrationOptions(h.validTypes)},G({_:2},[h.help?{name:"help",fn:a(()=>[s(y(h.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),n("div",We,[n("div",Me,[o(C,{class:D(i.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=c=>l.dataMigration())},{default:a(()=>[e[36]||(e[36]=s(" Datenübernahme starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?_("",!0):(d(),f("form",Fe,[o(O,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[n("div",Ae,[n("div",Te,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=c=>l.factoryReset())},{default:a(()=>[o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[38]||(e[38]=s(" Zurücksetzen ")),o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:a(()=>[o(p,{subtype:"danger"},{default:a(()=>e[37]||(e[37]=[s(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})]))])):_("",!0)])}const Le=S(ne,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Re=Object.freeze(Object.defineProperty({__proto__:null,default:Le},Symbol.toStringTag,{value:"Module"}));export{A as B,Le as D,Re as a};
diff --git a/web/settings/assets/DataManagement-eb2fc5d7.js b/web/settings/assets/DataManagement-eb2fc5d7.js
deleted file mode 100644
index 8e383b293d..0000000000
--- a/web/settings/assets/DataManagement-eb2fc5d7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as L,af as z,ag as V,ah as j,ai as R,aj as H,F as E}from"./vendor-fortawesome-71546160.js";import{_ as B,C as P}from"./index-b0e5e618.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as S,u as m,k as r,l as b,A as C,N as l,y as s,z as k,D as o,x as n,a2 as U,a3 as q,J as W,B as v,q as D,K as F,a4 as I}from"./vendor-f2b8aa6f.js";const G={emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},J=S(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),$={name:"BackupCloudConfigFallback",mixins:[J]},Z={class:"backup-cloud-fallback"},K={key:1};function Q(t,e,u,g,i,a){const h=m("openwb-base-alert"),c=m("openwb-base-textarea");return r(),b("div",Z,[Object.keys(t.backupCloud.configuration).length==0?(r(),C(h,{key:0,subtype:"info"},{default:l(()=>[s(' Die Backup-Cloud "'+k(t.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),b("div",K,[o(h,{subtype:"warning"},{default:l(()=>[s(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+k(t.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(c,{title:"Konfiguration",subtype:"json","model-value":t.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=y=>t.updateConfiguration(y,"configuration"))},{help:l(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),o(h,{subtype:"info"},{default:l(()=>[n("pre",null,k(JSON.stringify(t.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const X=S($,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),Y={name:"OpenwbBackupCloudProxy",emits:["update:configuration","sendCommand"],props:{backupCloud:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),U({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-7c8657cf.js"),["assets/backup_cloud-7c8657cf.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-f487f6db.js"),["assets/backup_cloud-f487f6db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-ca22b0b2.js"),["assets/backup_cloud-ca22b0b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-0c265ebd.js"),["assets/backup_cloud-0c265ebd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:X})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function ee(t,e,u,g,i,a){const h=m("openwb-base-heading");return r(),b(W,null,[o(h,null,{default:l(()=>[s(' Einstellungen für Backup-Cloud Modul "'+k(u.backupCloud.name)+'" ',1)]),_:1}),(r(),C(q(a.myComponent),{backupCloud:u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=c=>a.updateConfiguration(c)),onSendCommand:e[1]||(e[1]=c=>a.sendCommand(c))},null,40,["backupCloud"]))],64)}const te=S(Y,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(z,V,j,R,H);const ne={name:"OpenwbDataManagementView",mixins:[P],emits:["sendCommand"],components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:te},props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let i=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:i,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let i=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:i,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${i}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let i=new FormData;i.append("file",e),i.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",i,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var h="Hochladen der Datei fehlgeschlagen!<br />"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),h+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),h+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(h,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},oe={class:"system"},se=n("h2",null,"Achtung!",-1),ie=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1),ae={key:1},le={name:"backupForm"},ue=n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),de={class:"row justify-content-center"},re={class:"col-md-4 d-flex py-1 justify-content-center"},ce={key:0,name:"restoreForm"},pe=n("hr",null,null,-1),me=n("br",null,null,-1),he={class:"input-group"},be={class:"input-group-prepend"},ge={class:"input-group-text"},fe={class:"custom-file"},_e={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},ke={class:"input-group-append"},ye=["disabled"],ve={class:"row justify-content-center"},Ce={class:"col-md-4 d-flex py-1 justify-content-center"},we={key:1,name:"cloudBackupForm"},Be=n("hr",null,null,-1),De=n("br",null,null,-1),Se=n("br",null,null,-1),Oe=n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),We={key:0},Me={name:"dataMigrationForm"},Fe=n("br",null,null,-1),Te=n("br",null,null,-1),Ae={class:"input-group"},xe={class:"input-group-prepend"},Le={class:"input-group-text"},ze={class:"custom-file"},Ve={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},je={class:"input-group-append"},Re=["disabled"],He={class:"row justify-content-center"},Ee={class:"col-md-4 d-flex py-1 justify-content-center"},Pe={key:1,name:"resetForm"},Ne={class:"row justify-content-center"},Ue={class:"col-md-4 d-flex py-1 justify-content-center"};function qe(t,e,u,g,i,a){const h=m("openwb-base-button-group-input"),c=m("openwb-base-alert"),y=m("openwb-base-heading"),_=m("font-awesome-icon"),w=m("openwb-base-click-button"),M=m("openwb-base-select-input"),T=m("openwb-base-button-input"),A=m("openwb-backup-cloud-proxy"),x=m("openwb-base-submit-buttons"),O=m("openwb-base-card");return r(),b("div",oe,[u.installAssistantActive?v("",!0):(r(),C(c,{key:0,subtype:"danger"},{default:l(()=>[se,ie,o(h,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=p=>this.warningAcknowledged=p)},null,8,["modelValue"])]),_:1})),i.warningAcknowledged||u.installAssistantActive?(r(),b("div",ae,[o(O,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var p,f;return[n("form",le,[o(y,null,{default:l(()=>[s("Sicherung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),o(c,{subtype:"info"},{default:l(()=>[s(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),ue,s(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")]),_:1}),n("div",de,[n("div",re,[o(w,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[s(" Sicherung erstellen "),o(_,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),i.showRestoreSection?(r(),b("form",ce,[pe,o(y,null,{default:l(()=>[s("Wiederherstellung")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[s(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),me,s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')]),_:1}),n("div",he,[n("div",be,[n("div",ge,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",fe,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>a.updateSelectedRestoreFile(d))},null,32),n("label",_e,k(i.selectedRestoreFile?i.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",ke,[n("button",{class:D(["btn",i.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>a.uploadRestoreFile())},[s(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,ye)])]),n("div",ve,[n("div",Ce,[o(w,{class:D(i.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>a.restoreBackup())},{default:l(()=>[s(" Wiederherstellung starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):v("",!0),u.showBackupCloudSection?(r(),b("form",we,[Be,o(y,null,{default:l(()=>[s(" Automatische Sicherung in einen Cloud-Dienst ")]),_:1}),o(c,{subtype:"info"},{default:l(()=>[s(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),De,s(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),Se,s(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),Oe,s(" . ")]),_:1}),o(M,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(p=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:p.type,"onUpdate:modelValue":e[5]||(e[5]=d=>a.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(f=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&f.type?(r(),b("div",We,[o(h,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>[s(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")]),_:1},8,["model-value"]),o(T,{title:"Manuelle Cloud-Sicherung",buttonText:"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>a.sendSystemCommand("createCloudBackup",{}))}),o(A,{backupCloud:t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>a.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>a.sendSystemCommand(d.command,d.args))},null,8,["backupCloud"])])):v("",!0),o(x,{formName:"cloudBackupForm",hideReset:!0,hideDefaults:!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):v("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?v("",!0):(r(),C(O,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",Me,[o(c,{subtype:"info"},{default:l(()=>[s(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")]),_:1}),o(c,{subtype:"danger"},{default:l(()=>[s(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),Fe,s(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),Te,s(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")]),_:1}),n("div",Ae,[n("div",xe,[n("div",Le,[o(_,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ze,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=p=>a.updateSelectedDataMigrationFile(p))},null,32),n("label",Ve,k(i.selectedDataMigrationFile?i.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",je,[n("button",{class:D(["btn",i.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=p=>a.uploadDataMigrationFile())},[s(" Hochladen "),o(_,{"fixed-width":"",icon:["fas","upload"]})],10,Re)])]),o(y,null,{default:l(()=>[s("Zuordnung der Komponenten")]),_:1}),(r(!0),b(W,null,F(i.dataMigrationConfig,p=>(r(),b("div",{key:p.sectionName},[o(y,null,{default:l(()=>[s(k(p.sectionName),1)]),_:2},1024),(r(!0),b(W,null,F(p.sectionComponents,f=>(r(),C(M,{key:f.key,title:f.label,options:a.getMigrationOptions(f.validTypes),modelValue:i.dataMigrationMapping[f.key],"onUpdate:modelValue":d=>i.dataMigrationMapping[f.key]=d},I({_:2},[f.help?{name:"help",fn:l(()=>[s(k(f.help),1)]),key:"0"}:void 0]),1032,["title","options","modelValue","onUpdate:modelValue"]))),128))]))),128)),n("div",He,[n("div",Ee,[o(w,{class:D(i.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=p=>a.dataMigration())},{default:l(()=>[s(" Datenübernahme starten "),o(_,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?v("",!0):(r(),b("form",Pe,[o(O,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ne,[n("div",Ue,[o(w,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=p=>a.factoryReset())},{default:l(()=>[o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]}),s(" Zurücksetzen "),o(_,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(c,{subtype:"danger"},{default:l(()=>[s(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")]),_:1})]),_:1})]))])):v("",!0)])}const Ie=S(ne,[["render",qe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Ke=Object.freeze(Object.defineProperty({__proto__:null,default:Ie},Symbol.toStringTag,{value:"Module"}));export{J as B,Ie as D,Ke as a};
diff --git a/web/settings/assets/DebugConfig-0ce8b81e.js b/web/settings/assets/DebugConfig-0ce8b81e.js
new file mode 100644
index 0000000000..a8eac39574
--- /dev/null
+++ b/web/settings/assets/DebugConfig-0ce8b81e.js
@@ -0,0 +1,2 @@
+import{C as k}from"./index-dc0e711f.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-41164876.js";import{_,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as b,J as F,K as N,y as f}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+`+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),m=s("openwb-base-avatar"),p=s("openwb-base-card");return d(),w(p,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(m,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=_($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",components:{OpenwbLogCard:I},mixins:[k],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),m=s("openwb-base-alert"),p=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),b("div",z,[v("form",V,[i(p,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>e[4]||(e[4]=[f(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')])),_:1},8,["model-value"]),i(m,{subtype:"warning"},{default:l(()=>e[5]||(e[5]=[f(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')])),_:1})]),_:1}),i(c,{"form-name":"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),b(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=_(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/DebugConfig-4a040dc7.js b/web/settings/assets/DebugConfig-4a040dc7.js
deleted file mode 100644
index 202d3efc97..0000000000
--- a/web/settings/assets/DebugConfig-4a040dc7.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import{C as k}from"./index-b0e5e618.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-71546160.js";import{_ as f,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as _,J as F,K as N,y as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
-`+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),p=s("openwb-base-avatar"),m=s("openwb-base-card");return d(),w(m,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(p,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=f($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",mixins:[k],components:{OpenwbLogCard:I},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),p=s("openwb-base-alert"),m=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),_("div",z,[v("form",V,[i(m,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>[b(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')]),_:1},8,["model-value"]),i(p,{subtype:"warning"},{default:l(()=>[b(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')]),_:1})]),_:1}),i(c,{formName:"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),_(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=f(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-4b985756.js b/web/settings/assets/GeneralChargeConfig-4b985756.js
deleted file mode 100644
index 35ec9ba341..0000000000
--- a/web/settings/assets/GeneralChargeConfig-4b985756.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as g,C}from"./index-b0e5e618.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as b,u as o,k as l,l as s,D as n,N as a,y as r,z as h,x as d,a2 as E,A as k,a3 as V,J as P,B as W}from"./vendor-f2b8aa6f.js";const L={emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},q=b(L,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),M={name:"ElectricityTariffConfigFallback",mixins:[q]},O={class:"backup-cloud-fallback"};function A(e,t,c,v,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",O,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+h(e.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":e.electricityTariff.configuration,"onUpdate:modelValue":t[0]||(t[0]=m=>e.updateConfiguration(m,"configuration"))},{help:a(()=>[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[d("pre",null,h(JSON.stringify(e.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const U=b(M,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),F={name:"OpenwbElectricityTariffProxy",emits:["update:configuration"],props:{electricityTariff:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),E({loader:()=>T(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-c641235d.js"),["assets/electricity_tariff-c641235d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-8c65c060.js"),["assets/electricity_tariff-8c65c060.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-bc229946.js"),["assets/electricity_tariff-bc229946.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-86994943.js"),["assets/electricity_tariff-86994943.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-921487ff.js"),["assets/electricity_tariff-921487ff.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:U})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function D(e,t,c,v,y,p){const u=o("openwb-base-heading");return l(),s(P,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+h(c.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{electricityTariff:c.electricityTariff,"onUpdate:configuration":t[0]||(t[0]=f=>p.updateConfiguration(f))},null,40,["electricityTariff"]))],64)}const N=b(F,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),I={name:"OpenwbGeneralChargeConfigView",mixins:[C],components:{OpenwbElectricityTariffProxy:N},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(e){const t=this.electricityTariffList.find(c=>c.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedElectricityTariff(e){this.updateState("openWB/optional/et/provider",e,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},j={class:"generalChargeConfig"},R={name:"generalChargeConfigForm"},Z={key:0},G={key:1},x=d("br",null,null,-1),J=d("br",null,null,-1),K=d("br",null,null,-1),H=d("hr",null,null,-1),Q=d("br",null,null,-1),X={key:1},Y={key:2},ee={key:0},te={key:1},ne=d("br",null,null,-1),ie={key:0};function re(e,t,c,v,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),m=o("openwb-base-range-input"),w=o("openwb-base-heading"),_=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),$=o("openwb-base-submit-buttons");return l(),s("div",j,[d("form",R,[n(B,{title:"Allgemein"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",Z,[n(u,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",G,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),x,r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(m,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":e.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")]),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":t[2]||(t[2]=i=>e.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),J,r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")]),_:1},8,["model-value"]),n(m,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":e.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":t[3]||(t[3]=i=>e.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),K,r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")]),_:1},8,["model-value"]),H,n(w,null,{help:a(()=>[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),Q,r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")]),default:a(()=>[r(" Berechnung der Ladekosten ")]),_:1}),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",X,[n(u,{subtype:"info"},{default:a(()=>[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")]),_:1})])):(l(),s("div",Y,[n(_,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":e.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":t[4]||(t[4]=i=>e.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(_,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":e.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":t[5]||(t[5]=i=>e.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(_,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":e.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":t[6]||(t[6]=i=>e.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",ee,[n(u,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),s("div",te,[n(w,null,{default:a(()=>[r(" Variable Stromtarife ")]),_:1}),n(u,{subtype:"info"},{default:a(()=>[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),ne,r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")]),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":e.$store.state.mqtt["openWB/optional/et/provider"]?e.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":t[7]||(t[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/optional/et/provider"]&&e.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",ie,[n(S,{electricityTariff:e.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":t[8]||(t[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricityTariff"])])):W("",!0)]))]),_:1}),n($,{formName:"generalChargeConfigForm",onSave:t[9]||(t[9]=i=>e.$emit("save")),onReset:t[10]||(t[10]=i=>e.$emit("reset")),onDefaults:t[11]||(t[11]=i=>e.$emit("defaults"))})])])}const ae=b(I,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ue=Object.freeze(Object.defineProperty({__proto__:null,default:ae},Symbol.toStringTag,{value:"Module"}));export{q as E,ue as G};
diff --git a/web/settings/assets/GeneralChargeConfig-a5add01a.js b/web/settings/assets/GeneralChargeConfig-a5add01a.js
new file mode 100644
index 0000000000..cb19563e98
--- /dev/null
+++ b/web/settings/assets/GeneralChargeConfig-a5add01a.js
@@ -0,0 +1 @@
+import{_ as g,C as E}from"./index-dc0e711f.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as b,u as o,k as l,l as s,D as n,N as a,y as r,z as v,x as d,a0 as V,A as k,a1 as P,J as L,B as W}from"./vendor-a21b3a62.js";const M={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},$=b(M,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),q={name:"ElectricityTariffConfigFallback",mixins:[$]},O={class:"backup-cloud-fallback"};function A(t,e,m,h,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",O,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+v(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=c=>t.updateConfiguration(c,"configuration"))},{help:a(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[d("pre",null,v(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const U=b(q,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),F={name:"OpenwbElectricityTariffProxy",mixins:[$],computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),V({loader:()=>T(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9f4ce3a7.js"),["assets/electricity_tariff-9f4ce3a7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-b400ca32.js"),["assets/electricity_tariff-b400ca32.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-ac583f0a.js"),["assets/electricity_tariff-ac583f0a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-c1ffcfa7.js"),["assets/electricity_tariff-c1ffcfa7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-18981e99.js"),["assets/electricity_tariff-18981e99.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:U})}}};function D(t,e,m,h,y,p){const u=o("openwb-base-heading");return l(),s(L,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+v(t.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(P(p.myComponent),{"electricity-tariff":t.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=f=>t.updateConfiguration(f))},null,40,["electricity-tariff"]))],64)}const N=b(F,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),I={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:N},mixins:[E],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(m=>m.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},j={class:"generalChargeConfig"},R={name:"generalChargeConfigForm"},Z={key:0},G={key:1},J={key:1},K={key:2},x={key:0},H={key:1},Q={key:0};function X(t,e,m,h,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),c=o("openwb-base-range-input"),w=o("openwb-base-heading"),_=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",j,[d("form",R,[n(B,{title:"Allgemein"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",Z,[n(u,{subtype:"info"},{default:a(()=>e[12]||(e[12]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",G,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>e[13]||(e[13]=[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),d("br",null,null,-1),r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(c,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>e[14]||(e[14]=[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=i=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>e[15]||(e[15]=[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),d("br",null,null,-1),r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(c,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=i=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>e[16]||(e[16]=[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),d("br",null,null,-1),r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[20]||(e[20]=d("hr",null,null,-1)),n(w,null,{help:a(()=>e[17]||(e[17]=[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),d("br",null,null,-1),r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:a(()=>[e[18]||(e[18]=r(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",J,[n(u,{subtype:"info"},{default:a(()=>e[19]||(e[19]=[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")])),_:1})])):(l(),s("div",K,[n(_,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=i=>t.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(_,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=i=>t.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(_,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=i=>t.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",x,[n(u,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",H,[n(w,null,{default:a(()=>e[22]||(e[22]=[r(" Variable Stromtarife ")])),_:1}),n(u,{subtype:"info"},{default:a(()=>e[23]||(e[23]=[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),d("br",null,null,-1),r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",Q,[n(S,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricity-tariff"])])):W("",!0)]))]),_:1}),n(C,{"form-name":"generalChargeConfigForm",onSave:e[9]||(e[9]=i=>t.$emit("save")),onReset:e[10]||(e[10]=i=>t.$emit("reset")),onDefaults:e[11]||(e[11]=i=>t.$emit("defaults"))})])])}const Y=b(I,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ie=Object.freeze(Object.defineProperty({__proto__:null,default:Y},Symbol.toStringTag,{value:"Module"}));export{$ as E,ie as G};
diff --git a/web/settings/assets/GeneralConfig-1396a845.js b/web/settings/assets/GeneralConfig-1396a845.js
deleted file mode 100644
index 8af3365773..0000000000
--- a/web/settings/assets/GeneralConfig-1396a845.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-71546160.js";import{_ as U,C as re}from"./index-b0e5e618.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as w,u as c,k as l,l as d,A as h,N as o,y as a,z as f,D as n,x as s,a2 as M,a3 as I,J as G,B as _}from"./vendor-f2b8aa6f.js";const ie={emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},le=w(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),se={name:"WebThemeFallback",mixins:[le]},ue={class:"web-theme-fallback"},de={key:1};function pe(e,t,p,B,y,m){const g=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),d("div",ue,[Object.keys(e.webTheme.configuration).length==0?(l(),h(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(e.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",de,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(e.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":e.webTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>e.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,f(JSON.stringify(e.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const ge=w(se,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const me={name:"OpenwbWebThemeProxy",emits:["update:configuration"],props:{webTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:F},computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),M({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:ge})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function ce(e,t,p,B,y,m){const g=c("font-awesome-icon"),r=c("openwb-base-alert"),v=c("openwb-base-heading");return l(),d(G,null,[p.webTheme.official?(l(),h(r,{key:0,subtype:"success"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(p.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),h(r,{key:1,subtype:"info"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","people-group"]}),a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ")]),_:1})),n(v,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(p.webTheme.name)+'" ',1)]),_:1}),(l(),h(I(m.myComponent),{webTheme:p.webTheme,"onUpdate:configuration":t[0]||(t[0]=W=>m.updateConfiguration(W))},null,40,["webTheme"]))],64)}const be=w(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),fe={emits:["update:configuration"],props:{rippleControlReceiver:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},_e=w(fe,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),he={name:"RippleControlReceiverConfigFallback",mixins:[_e]},ve={class:"ripple-control-receiver-fallback"},we={key:1};function We(e,t,p,B,y,m){const g=c("openwb-base-alert"),r=c("openwb-base-textarea");return l(),d("div",ve,[Object.keys(e.rippleControlReceiver.configuration).length==0?(l(),h(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(e.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",we,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(e.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":e.rippleControlReceiver.configuration,"onUpdate:modelValue":t[0]||(t[0]=v=>e.updateConfiguration(v,"configuration"))},{help:o(()=>[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,f(JSON.stringify(e.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const Be=w(he,[["render",We],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ye={name:"OpenwbRippleControlReceiverProxy",emits:["update:configuration","sendCommand"],props:{rippleControlReceiver:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),M({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-6eba6a9a.js"),["assets/ripple_control_receiver-6eba6a9a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-d8f4b5b9.js"),["assets/ripple_control_receiver-d8f4b5b9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:Be})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)},sendCommand(e){this.$emit("sendCommand",e)}}};function Se(e,t,p,B,y,m){const g=c("openwb-base-heading");return l(),d(G,null,[n(g,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(p.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),h(I(m.myComponent),{rippleControlReceiver:p.rippleControlReceiver,"onUpdate:configuration":t[0]||(t[0]=r=>m.updateConfiguration(r)),onSendCommand:t[1]||(t[1]=r=>m.sendCommand(r))},null,40,["rippleControlReceiver"]))],64)}const ke=w(ye,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const Ce={name:"OpenwbGeneralConfigView",mixins:[re],components:{OpenwbWebThemeProxy:be,OpenwbRippleControlReceiverProxy:ke,FontAwesomeIcon:F},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(e){const t=this.webThemeList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for web theme type!",e),{})},updateSelectedWebTheme(e){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)},getRippleControlReceiverDefaultConfiguration(e){const t=this.rippleControlReceiverList.find(p=>p.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...t.defaults}:(console.warn("no default configuration found for electricity tariff type!",e),{})},updateSelectedRippleControlReceiverModule(e){this.updateState("openWB/general/ripple_control_receiver/module",e,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(e))}}},Ve={class:"generalConfig"},Re={name:"generalConfigForm"},Te=s("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),$e=s("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),s("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),s("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1),qe={key:0},ze=s("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),De={key:1},Oe={key:1},Ee=s("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1),Ne=s("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1),Ae=s("br",null,null,-1),xe=s("br",null,null,-1),Pe=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Le={class:"border border-info w-100 p-1"},Ue=s("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1),Je=s("p",null,"Beispiel 2: integriertes Display abschalten",-1),Fe=s("br",null,null,-1),je=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1),Me={class:"border border-info w-100 p-1"},Ie={key:0},Ge={key:1},Ke={key:0},He=s("br",null,null,-1),Ze=s("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1),Xe=s("br",null,null,-1),Qe=s("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1),Ye=s("hr",null,null,-1),et={key:2},tt={key:0},nt={key:0},ot={key:1},at={key:0},rt={key:0},it={key:1};function lt(e,t,p,B,y,m){const g=c("openwb-base-alert"),r=c("openwb-base-button-group-input"),v=c("openwb-base-copy-to-clipboard"),W=c("openwb-base-card"),S=c("openwb-base-heading"),k=c("openwb-base-select-input"),K=c("openwb-ripple-control-receiver-proxy"),H=c("openwb-web-theme-proxy"),b=c("font-awesome-icon"),Z=c("openwb-base-submit-buttons");return l(),d("div",Ve,[s("form",Re,[n(W,{title:"Steuerungsmodus"},{default:o(()=>[n(g,{subtype:"info"},{default:o(()=>[Te,$e]),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":t[0]||(t[0]=u=>e.updateState("openWB/general/extern",u))},null,8,["model-value"]),p.installAssistantActive?_("",!0):(l(),d("div",qe,[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),h(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":t[1]||(t[1]=u=>e.updateState("openWB/general/modbus_control",u))},{help:o(()=>[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),ze,a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")]),_:1},8,["model-value"])):_("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0&&e.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),d("div",De,[n(g,{subtype:"info"},{default:o(()=>[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')]),_:1})])):_("",!0)])),p.installAssistantActive?_("",!0):(l(),d("div",Oe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":t[2]||(t[2]=u=>e.updateState("openWB/general/http_api",u))},{help:o(()=>[Ee,Ne,s("ul",null,[s("li",null,[a(" GET-Request:"),Ae,n(v,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(m.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),s("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),xe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),Pe,s("pre",Le,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),Ue,Je,s("ul",null,[s("li",null,[a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':"),Fe,n(v,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),je,s("pre",Me,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(W,{title:"Hardware"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Ie,[n(g,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):_("",!0),p.installAssistantActive?_("",!0):(l(),d("div",Ge,[e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ke,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":e.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":t[3]||(t[3]=u=>e.updateState("openWB/general/control_interval",u))},{help:o(()=>[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),He,Ze]),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":t[4]||(t[4]=u=>e.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),Xe,Qe]),_:1},8,["model-value"])])):_("",!0),Ye])),e.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",et,[n(S,{class:"mt-0"},{default:o(()=>[a(" Steuerbare Verbrauchseinrichtung ")]),_:1}),n(g,{sub_type:"info"},{default:o(()=>[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')]),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:m.rippleControlReceiverList,"model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":t[5]||(t[5]=u=>m.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),d("div",tt,[n(K,{rippleControlReceiver:e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":t[6]||(t[6]=u=>m.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["rippleControlReceiver"])])):_("",!0)])):_("",!0)]),_:1}),p.installAssistantActive?_("",!0):(l(),h(W,{key:0,title:"Darstellung"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",nt,[n(g,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),d("div",ot,[n(S,{class:"mt-0"},{default:o(()=>[a(" Hauptseite ")]),_:1}),e.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),d("div",at,[n(k,{class:"mb-2",title:"Theme",groups:m.webThemeGroupList,"model-value":e.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":t[7]||(t[7]=u=>m.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),e.$store.state.mqtt["openWB/general/web_theme"].type?(l(),h(H,{key:0,webTheme:e.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":t[8]||(t[8]=u=>m.updateConfiguration("openWB/general/web_theme",u))},null,8,["webTheme"])):_("",!0)])):_("",!0)]))]),_:1})),p.installAssistantActive?_("",!0):(l(),h(W,{key:1,title:"Lade-Log"},{default:o(()=>{var u,C,V,R,T,$,q,z,D,O,E,N,A,x,P,L;return[e.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",rt,[n(g,{subtype:"info"},{default:o(()=>[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(l(),d("div",it,[n(r,{title:"Einheit für Entfernungen","model-value":e.$store.state.mqtt["openWB/general/range_unit"],"onUpdate:modelValue":t[9]||(t[9]=i=>e.updateState("openWB/general/range_unit",i)),buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}]},null,8,["model-value"]),n(S,null,{default:o(()=>[a(" Auswahl der Datenfelder ")]),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":t[10]||(t[10]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Beginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_end,"onUpdate:modelValue":t[11]||(t[11]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","calendar"]}),a(" Ende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_time_charged,"onUpdate:modelValue":t[12]||(t[12]=i=>e.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","clock"]}),a(" Dauer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":t[13]||(t[13]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","coins"]}),a(" Kosten ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.data_power_source,"onUpdate:modelValue":t[14]||(t[14]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","pie-chart"]}),a(" Energieaufteilung ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.vehicle_name,"onUpdate:modelValue":t[15]||(t[15]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":t[16]||(t[16]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Lademodus ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_prio,"onUpdate:modelValue":t[17]||(t[17]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" Priorität ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_rfid,"onUpdate:modelValue":t[18]||(t[18]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" ID-Tag ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":t[19]||(t[19]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":t[20]||(t[20]=i=>e.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","car"]}),a(" SoC bei Ladende ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":t[21]||(t[21]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Name ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":t[22]||(t[22]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Seriennummer ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.data_imported_since_mode_switch,"onUpdate:modelValue":t[23]||(t[23]=i=>e.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Geladene Energie ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_start,"onUpdate:modelValue":t[24]||(t[24]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladebeginn ")]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=e.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_end,"onUpdate:modelValue":t[25]||(t[25]=i=>e.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(b,{"fixed-width":"",icon:["fas","charging-station"]}),a(" Zählerstand bei Ladeende ")]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{formName:"generalConfigForm",onSave:t[26]||(t[26]=u=>e.$emit("save")),onReset:t[27]||(t[27]=u=>e.$emit("reset")),onDefaults:t[28]||(t[28]=u=>e.$emit("defaults"))})])])}const st=w(Ce,[["render",lt],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),mt=Object.freeze(Object.defineProperty({__proto__:null,default:st},Symbol.toStringTag,{value:"Module"}));export{st as G,_e as R,mt as a};
diff --git a/web/settings/assets/GeneralConfig-2f07ba45.js b/web/settings/assets/GeneralConfig-2f07ba45.js
new file mode 100644
index 0000000000..1639a56284
--- /dev/null
+++ b/web/settings/assets/GeneralConfig-2f07ba45.js
@@ -0,0 +1 @@
+import{l as J,X as Y,Y as ee,F,R as te,K as ne,z as oe,a4 as ae,a5 as re,a6 as le}from"./vendor-fortawesome-41164876.js";import{_ as x,C as ie}from"./index-dc0e711f.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as h,u as g,k as i,l as d,A as v,N as o,y as a,z as f,D as n,x as s,a0 as j,a1 as I,J as G,B as _}from"./vendor-a21b3a62.js";const se={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},K=h(se,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),ue={name:"WebThemeFallback",mixins:[K]},de={class:"web-theme-fallback"},pe={key:1};function ge(t,e,c,B,y,b){const p=g("openwb-base-alert"),l=g("openwb-base-textarea");return i(),d("div",de,[Object.keys(t.webTheme.configuration).length==0?(i(),v(p,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),d("div",pe,[n(p,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(l,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(p,{subtype:"info"},{default:o(()=>[s("pre",null,f(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const me=h(ue,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(Y,ee);const be={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:F},mixins:[K],computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),j({loader:()=>M(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:me})}}};function fe(t,e,c,B,y,b){const p=g("font-awesome-icon"),l=g("openwb-base-alert"),w=g("openwb-base-heading");return i(),d(G,null,[t.webTheme.official?(i(),v(l,{key:0,subtype:"success"},{default:o(()=>[n(p,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(t.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(i(),v(l,{key:1,subtype:"info"},{default:o(()=>[n(p,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(w,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(t.webTheme.name)+'" ',1)]),_:1}),(i(),v(I(b.myComponent),{"web-theme":t.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>t.updateConfiguration(W))},null,40,["web-theme"]))],64)}const ce=h(be,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),_e={props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},H=h(_e,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),ve={name:"RippleControlReceiverConfigFallback",mixins:[H]},we={class:"ripple-control-receiver-fallback"},he={key:1};function We(t,e,c,B,y,b){const p=g("openwb-base-alert"),l=g("openwb-base-textarea");return i(),d("div",we,[Object.keys(t.rippleControlReceiver.configuration).length==0?(i(),v(p,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(t.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),d("div",he,[n(p,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(t.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(l,{title:"Konfiguration",subtype:"json","model-value":t.rippleControlReceiver.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(p,{subtype:"info"},{default:o(()=>[s("pre",null,f(JSON.stringify(t.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const Be=h(ve,[["render",We],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ye={name:"OpenwbRippleControlReceiverProxy",mixins:[H],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),j({loader:()=>M(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>x(()=>import("./ripple_control_receiver-fed88f10.js"),["assets/ripple_control_receiver-fed88f10.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>x(()=>import("./ripple_control_receiver-9035a86a.js"),["assets/ripple_control_receiver-9035a86a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:Be})}}};function Se(t,e,c,B,y,b){const p=g("openwb-base-heading");return i(),d(G,null,[n(p,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(t.rippleControlReceiver.name)+'" ',1)]),_:1}),(i(),v(I(b.myComponent),{"ripple-control-receiver":t.rippleControlReceiver,"onUpdate:configuration":e[0]||(e[0]=l=>t.updateConfiguration(l))},null,40,["ripple-control-receiver"]))],64)}const ke=h(ye,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(te,ne,oe,ae,re,le);const Ve={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:ce,OpenwbRippleControlReceiverProxy:ke,FontAwesomeIcon:F},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(c=>c.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},getRippleControlReceiverDefaultConfiguration(t){const e=this.rippleControlReceiverList.find(c=>c.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedRippleControlReceiverModule(t){this.updateState("openWB/general/ripple_control_receiver/module",t,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(t))}}},Ce={class:"generalConfig"},$e={name:"generalConfigForm"},Re={key:0},Te={key:1},qe={key:1},ze={class:"border border-info w-100 p-1"},De={class:"border border-info w-100 p-1"},Oe={key:0},Ee={key:1},Ne={key:0},Ae={key:2},Pe={key:0},Le={key:0},Ue={key:1},xe={key:0},Je={key:0},Fe={key:1};function Me(t,e,c,B,y,b){const p=g("openwb-base-alert"),l=g("openwb-base-button-group-input"),w=g("openwb-base-copy-to-clipboard"),W=g("openwb-base-card"),S=g("openwb-base-heading"),k=g("openwb-base-select-input"),Z=g("openwb-ripple-control-receiver-proxy"),X=g("openwb-web-theme-proxy"),m=g("font-awesome-icon"),Q=g("openwb-base-submit-buttons");return i(),d("div",Ce,[s("form",$e,[n(W,{title:"Steuerungsmodus"},{default:o(()=>[n(p,{subtype:"info"},{default:o(()=>e[29]||(e[29]=[s("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),s("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),s("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),s("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(l,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=u=>t.updateState("openWB/general/extern",u))},null,8,["model-value"]),c.installAssistantActive?_("",!0):(i(),d("div",Re,[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),v(l,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=u=>t.updateState("openWB/general/modbus_control",u))},{help:o(()=>e[30]||(e[30]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),s("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(i(),d("div",Te,[n(p,{subtype:"info"},{default:o(()=>e[31]||(e[31]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):_("",!0)])),c.installAssistantActive?_("",!0):(i(),d("div",qe,[n(l,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=u=>t.updateState("openWB/general/http_api",u))},{help:o(()=>[e[38]||(e[38]=s("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1)),e[39]||(e[39]=s("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1)),s("ul",null,[s("li",null,[e[32]||(e[32]=a(" GET-Request:")),e[33]||(e[33]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(b.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),s("li",null,[e[34]||(e[34]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[35]||(e[35]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(b.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[40]||(e[40]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",ze,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),e[41]||(e[41]=s("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1)),e[42]||(e[42]=s("p",null,"Beispiel 2: integriertes Display abschalten",-1)),s("ul",null,[s("li",null,[e[36]||(e[36]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[37]||(e[37]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(b.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[43]||(e[43]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",De,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(W,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),d("div",Oe,[n(p,{subtype:"info"},{default:o(()=>e[44]||(e[44]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):_("",!0),c.installAssistantActive?_("",!0):(i(),d("div",Ee,[t.$store.state.mqtt["openWB/general/extern"]===!1?(i(),d("div",Ne,[n(l,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=u=>t.updateState("openWB/general/control_interval",u))},{help:o(()=>e[45]||(e[45]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),s("br",null,null,-1),s("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(l,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=u=>t.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>e[46]||(e[46]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),s("br",null,null,-1),s("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):_("",!0),e[47]||(e[47]=s("hr",null,null,-1))])),t.$store.state.mqtt["openWB/general/extern"]===!1?(i(),d("div",Ae,[n(S,{class:"mt-0"},{default:o(()=>e[48]||(e[48]=[a(" Steuerbare Verbrauchseinrichtung ")])),_:1}),n(p,{sub_type:"info"},{default:o(()=>e[49]||(e[49]=[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')])),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:b.rippleControlReceiverList,"model-value":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":e[5]||(e[5]=u=>b.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(i(),d("div",Pe,[n(Z,{"ripple-control-receiver":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":e[6]||(e[6]=u=>b.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["ripple-control-receiver"])])):_("",!0)])):_("",!0)]),_:1}),c.installAssistantActive?_("",!0):(i(),v(W,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),d("div",Le,[n(p,{subtype:"info"},{default:o(()=>e[50]||(e[50]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),d("div",Ue,[n(S,{class:"mt-0"},{default:o(()=>e[51]||(e[51]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(i(),d("div",xe,[n(k,{class:"mb-2",title:"Theme",groups:b.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[7]||(e[7]=u=>b.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(i(),v(X,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[8]||(e[8]=u=>b.updateConfiguration("openWB/general/web_theme",u))},null,8,["web-theme"])):_("",!0)])):_("",!0)]))]),_:1})),c.installAssistantActive?_("",!0):(i(),v(W,{key:1,title:"Lade-Log"},{default:o(()=>{var u,V,C,$,R,T,q,z,D,O,E,N,A,P,L,U;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),d("div",Je,[n(p,{subtype:"info"},{default:o(()=>e[52]||(e[52]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),d("div",Fe,[n(l,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[9]||(e[9]=r=>t.updateState("openWB/general/range_unit",r))},null,8,["model-value"]),n(S,null,{default:o(()=>e[53]||(e[53]=[a(" Auswahl der Datenfelder ")])),_:1}),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":e[10]||(e[10]=r=>t.updateState("openWB/general/charge_log_data_config",r,"time_begin"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","calendar"]}),e[54]||(e[54]=a(" Beginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":e[11]||(e[11]=r=>t.updateState("openWB/general/charge_log_data_config",r,"time_end"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","calendar"]}),e[55]||(e[55]=a(" Ende "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":e[12]||(e[12]=r=>t.updateState("openWB/general/charge_log_data_config",r,"time_time_charged"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","clock"]}),e[56]||(e[56]=a(" Dauer "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.data_costs,"onUpdate:modelValue":e[13]||(e[13]=r=>t.updateState("openWB/general/charge_log_data_config",r,"data_costs"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","coins"]}),e[57]||(e[57]=a(" Kosten "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_power_source,"onUpdate:modelValue":e[14]||(e[14]=r=>t.updateState("openWB/general/charge_log_data_config",r,"data_power_source"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","pie-chart"]}),e[58]||(e[58]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.vehicle_name,"onUpdate:modelValue":e[15]||(e[15]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_name"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[59]||(e[59]=a(" Name "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":e[16]||(e[16]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_chargemode"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[60]||(e[60]=a(" Lademodus "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_prio,"onUpdate:modelValue":e[17]||(e[17]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_prio"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[61]||(e[61]=a(" Priorität "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_rfid,"onUpdate:modelValue":e[18]||(e[18]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_rfid"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[62]||(e[62]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":e[19]||(e[19]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_soc_at_start"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[63]||(e[63]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":e[20]||(e[20]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_soc_at_end"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[64]||(e[64]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":e[21]||(e[21]=r=>t.updateState("openWB/general/charge_log_data_config",r,"chargepoint_name"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[65]||(e[65]=a(" Name "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":e[22]||(e[22]=r=>t.updateState("openWB/general/charge_log_data_config",r,"chargepoint_serial_number"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[66]||(e[66]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.data_imported_since_mode_switch,"onUpdate:modelValue":e[23]||(e[23]=r=>t.updateState("openWB/general/charge_log_data_config",r,"data_imported_since_mode_switch"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[67]||(e[67]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":e[24]||(e[24]=r=>t.updateState("openWB/general/charge_log_data_config",r,"chargepoint_imported_at_start"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[68]||(e[68]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(U=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:U.chargepoint_imported_at_end,"onUpdate:modelValue":e[25]||(e[25]=r=>t.updateState("openWB/general/charge_log_data_config",r,"chargepoint_imported_at_end"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[69]||(e[69]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(Q,{"form-name":"generalConfigForm",onSave:e[26]||(e[26]=u=>t.$emit("save")),onReset:e[27]||(e[27]=u=>t.$emit("reset")),onDefaults:e[28]||(e[28]=u=>t.$emit("defaults"))})])])}const je=h(Ve,[["render",Me],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));export{je as G,H as R,Ze as a};
diff --git a/web/settings/assets/HardwareInstallation-6cc98da9.js b/web/settings/assets/HardwareInstallation-6cc98da9.js
new file mode 100644
index 0000000000..f30ea93100
--- /dev/null
+++ b/web/settings/assets/HardwareInstallation-6cc98da9.js
@@ -0,0 +1 @@
+import{l as q,d as $,t as N,a7 as G,a0 as K,P as H,O as F,N as J,F as Z}from"./vendor-fortawesome-41164876.js";import{_ as e,C as Q}from"./index-dc0e711f.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as I,u as p,k as d,l as g,A as E,N as _,y as u,z as b,D as r,x as l,a0 as j,a1 as X,B as P,J as R,K as h,q as k}from"./vendor-a21b3a62.js";const Y={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,o=void 0){this.$emit("update:configuration",{value:t,object:o})}}},C=I(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),ee={name:"DeviceFallback",mixins:[C]},oe={class:"device-fallback"},te={key:1};function _e(t,o,v,m,s,n){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return d(),g("div",oe,[Object.keys(t.device.configuration).length==0?(d(),E(c,{key:0,subtype:"info"},{default:_(()=>[u(' Der Gerät-Typ "'+b(t.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",te,[r(c,{subtype:"warning"},{default:_(()=>[u(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+b(t.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.device.configuration,"onUpdate:modelValue":o[0]||(o[0]=T=>t.updateConfiguration(T,"configuration"))},{help:_(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:_(()=>[l("pre",null,b(JSON.stringify(t.device.configuration,void 0,2)),1)]),_:1})]))])}const ie=I(ee,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),re={mixins:[C],props:{component:{type:Object,required:!0}}},ne=I(re,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),ue={name:"ComponentFallback",mixins:[ne]},de={class:"component-fallback"},se={key:1};function ve(t,o,v,m,s,n){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return d(),g("div",de,[Object.keys(t.component.configuration).length==0?(d(),E(c,{key:0,subtype:"info"},{default:_(()=>[u(' Der Komponenten-Typ "'+b(t.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",se,[r(c,{subtype:"warning"},{default:_(()=>[u(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+b(t.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.component.configuration,"onUpdate:modelValue":o[0]||(o[0]=T=>t.updateConfiguration(T,"configuration"))},{help:_(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:_(()=>[l("pre",null,b(JSON.stringify(t.component.configuration,void 0,2)),1)]),_:1})]))])}const ae=I(ue,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),me={name:"OpenwbConfigProxy",mixins:[C],computed:{myComponent(){var t;return console.debug(`loading component: ${this.device.type} / ${(t=this.component)==null?void 0:t.type}`),this.component!==void 0?j({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-00ea06ea.js"),["assets/device-00ea06ea.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-20a3cc0b.js"),["assets/device-20a3cc0b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-92f55c21.js"),["assets/device-92f55c21.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-13bf79c7.js"),["assets/device-13bf79c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-63bdcc3c.js"),["assets/device-63bdcc3c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-e43b2263.js"),["assets/counter-e43b2263.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-c3e49e5d.js"),["assets/device-c3e49e5d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-b62c3097.js"),["assets/bat-b62c3097.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-873539d4.js"),["assets/counter-873539d4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-dc9695a4.js"),["assets/device-dc9695a4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-d79a2e57.js"),["assets/inverter-d79a2e57.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-87bd2dba.js"),["assets/counter-87bd2dba.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-511acdb3.js"),["assets/device-511acdb3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-cf814a97.js"),["assets/inverter-cf814a97.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-97dc9354.js"),["assets/device-97dc9354.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-dae0c479.js"),["assets/counter-dae0c479.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-2dc6cc3c.js"),["assets/device-2dc6cc3c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-b4941105.js"),["assets/inverter-b4941105.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-03d10b16.js"),["assets/bat-03d10b16.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-667da2bf.js"),["assets/device-667da2bf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-713dd112.js"),["assets/bat-713dd112.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-8cf3e538.js"),["assets/counter-8cf3e538.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-930131aa.js"),["assets/device-930131aa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-90d5660d.js"),["assets/inverter-90d5660d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-dc1d9a2f.js"),["assets/bat-dc1d9a2f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ce85abde.js"),["assets/counter_sm-ce85abde.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-c1c7f277.js"),["assets/device-c1c7f277.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-67eeedf8.js"),["assets/inverter_secondary-67eeedf8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-9577327c.js"),["assets/bat-9577327c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-4e131617.js"),["assets/counter-4e131617.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-f057baf4.js"),["assets/device-f057baf4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-832fb3b7.js"),["assets/inverter-832fb3b7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-e05764b6.js"),["assets/bat-e05764b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-339b78e6.js"),["assets/counter-339b78e6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-97810824.js"),["assets/device-97810824.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-f293b026.js"),["assets/inverter-f293b026.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-7dc3e16d.js"),["assets/bat-7dc3e16d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-11a808b3.js"),["assets/counter-11a808b3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-7552eed1.js"),["assets/device-7552eed1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-f30a6830.js"),["assets/inverter-f30a6830.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-3c3a8ee4.js"),["assets/counter-3c3a8ee4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-7aeda0a3.js"),["assets/device-7aeda0a3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-191071c7.js"),["assets/device-191071c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-2a37d4a1.js"),["assets/bat-2a37d4a1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-59a65215.js"),["assets/counter-59a65215.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-c3aaf957.js"),["assets/device-c3aaf957.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-00707516.js"),["assets/inverter-00707516.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-61e6692b.js"),["assets/counter-61e6692b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-8f5f7340.js"),["assets/device-8f5f7340.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-2d7b83ed.js"),["assets/counter-2d7b83ed.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-c1920155.js"),["assets/device-c1920155.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-eee7c6e5.js"),["assets/inverter-eee7c6e5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-b5ff9479.js"),["assets/device-b5ff9479.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-70744c17.js"),["assets/counter-70744c17.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-2bd6af83.js"),["assets/device-2bd6af83.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-b3df37ca.js"),["assets/counter-b3df37ca.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-c9df224a.js"),["assets/device-c9df224a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-8b304fd5.js"),["assets/device-8b304fd5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-6f930abf.js"),["assets/inverter-6f930abf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-41c2f368.js"),["assets/device-41c2f368.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-9eca6500.js"),["assets/bat-9eca6500.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-6f319353.js"),["assets/counter-6f319353.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-09e0b5dd.js"),["assets/device-09e0b5dd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-c319320b.js"),["assets/inverter-c319320b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-f5beaf39.js"),["assets/device-f5beaf39.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-45a2224e.js"),["assets/bat-45a2224e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-5763ad59.js"),["assets/bat-5763ad59.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-6dd39fae.js"),["assets/counter-6dd39fae.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-3c18bfc8.js"),["assets/inverter-3c18bfc8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-8c346425.js"),["assets/bat-8c346425.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-a72d5a10.js"),["assets/consumption_counter-a72d5a10.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-c524e146.js"),["assets/counter-c524e146.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-e1695c1b.js"),["assets/device-e1695c1b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-521e60bd.js"),["assets/inverter-521e60bd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-3661665d.js"),["assets/inverter-3661665d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-4760f2a8.js"),["assets/counter-4760f2a8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-d779a283.js"),["assets/device-d779a283.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-211768c3.js"),["assets/counter-211768c3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-cbb1f36f.js"),["assets/device-cbb1f36f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-3a770b71.js"),["assets/inverter-3a770b71.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-fa6313a5.js"),["assets/device-fa6313a5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-fb6dbf7a.js"),["assets/device-fb6dbf7a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-95627a98.js"),["assets/device-95627a98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-4e0e153d.js"),["assets/counter-4e0e153d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-944bfe1b.js"),["assets/device-944bfe1b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-a5ad3257.js"),["assets/device-a5ad3257.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-c37bf0a2.js"),["assets/device-c37bf0a2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-7c88776b.js"),["assets/bat-7c88776b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-9028760b.js"),["assets/counter-9028760b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-5aef24bb.js"),["assets/device-5aef24bb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-0fe312b3.js"),["assets/inverter-0fe312b3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-62b27636.js"),["assets/counter-62b27636.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-3f3aa74b.js"),["assets/inverter-3f3aa74b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-fefe88d3.js"),["assets/bat-fefe88d3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-2291c4ec.js"),["assets/bat_smart_energy-2291c4ec.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-9f134879.js"),["assets/counter-9f134879.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-8a6c3a9f.js"),["assets/device-8a6c3a9f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-7c07833e.js"),["assets/inverter-7c07833e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-c6e7f4e5.js"),["assets/bat-c6e7f4e5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-f2ca9f52.js"),["assets/device-f2ca9f52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-f2e0c7de.js"),["assets/device-f2e0c7de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-e2ea1207.js"),["assets/counter-e2ea1207.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-ba7411f1.js"),["assets/device-ba7411f1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-a77daa25.js"),["assets/inverter-a77daa25.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-dcaa50ab.js"),["assets/device-dcaa50ab.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f01c44f.js"),["assets/device-4f01c44f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-5e68cf56.js"),["assets/counter-5e68cf56.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-57a08fa3.js"),["assets/device-57a08fa3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-967835b8.js"),["assets/device-967835b8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-d090560a.js"),["assets/inverter-d090560a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-7d21f4f3.js"),["assets/device-7d21f4f3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-8770c372.js"),["assets/device-8770c372.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-9807eb70.js"),["assets/bat-9807eb70.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-2af1b45c.js"),["assets/counter-2af1b45c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-e6c608f5.js"),["assets/device-e6c608f5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-319dd94a.js"),["assets/external_inverter-319dd94a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-0372b463.js"),["assets/inverter-0372b463.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-98a7f166.js"),["assets/bat-98a7f166.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-73279a9d.js"),["assets/device-73279a9d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-22aad90d.js"),["assets/inverter-22aad90d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-a55b4f4a.js"),["assets/device-a55b4f4a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-8dd42ecd.js"),["assets/bat-8dd42ecd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-9fd0b8be.js"),["assets/counter-9fd0b8be.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-84e9833f.js"),["assets/device-84e9833f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-ab8a80e4.js"),["assets/inverter-ab8a80e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-6a117469.js"),["assets/counter-6a117469.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-264b9607.js"),["assets/device-264b9607.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-af534ff4.js"),["assets/bat-af534ff4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-c0ddbba1.js"),["assets/device-c0ddbba1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-d1ef1a1b.js"),["assets/inverter-d1ef1a1b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-b8ca89e1.js"),["assets/counter-b8ca89e1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-9eedb23a.js"),["assets/device-9eedb23a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-7c975c06.js"),["assets/device-7c975c06.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-1a057dc5.js"),["assets/device-1a057dc5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-37e09ebf.js"),["assets/counter-37e09ebf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-51a9d57c.js"),["assets/device-51a9d57c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-a4ac3a30.js"),["assets/device-a4ac3a30.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-c3b737a8.js"),["assets/bat-c3b737a8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-e2aa39de.js"),["assets/counter-e2aa39de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-a945746f.js"),["assets/device-a945746f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-efcd16da.js"),["assets/inverter-efcd16da.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-ab7dda04.js"),["assets/counter-ab7dda04.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-19334006.js"),["assets/device-19334006.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-668ceedf.js"),["assets/inverter-668ceedf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-17ee5402.js"),["assets/device-17ee5402.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-62aebfd4.js"),["assets/inverter-62aebfd4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ae}):j({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-00ea06ea.js"),["assets/device-00ea06ea.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-20a3cc0b.js"),["assets/device-20a3cc0b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-92f55c21.js"),["assets/device-92f55c21.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-13bf79c7.js"),["assets/device-13bf79c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-63bdcc3c.js"),["assets/device-63bdcc3c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-c3e49e5d.js"),["assets/device-c3e49e5d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-dc9695a4.js"),["assets/device-dc9695a4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-511acdb3.js"),["assets/device-511acdb3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-97dc9354.js"),["assets/device-97dc9354.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-2dc6cc3c.js"),["assets/device-2dc6cc3c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-667da2bf.js"),["assets/device-667da2bf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-930131aa.js"),["assets/device-930131aa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-c1c7f277.js"),["assets/device-c1c7f277.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-f057baf4.js"),["assets/device-f057baf4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-97810824.js"),["assets/device-97810824.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-7552eed1.js"),["assets/device-7552eed1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-7aeda0a3.js"),["assets/device-7aeda0a3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-191071c7.js"),["assets/device-191071c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-c3aaf957.js"),["assets/device-c3aaf957.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-8f5f7340.js"),["assets/device-8f5f7340.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-c1920155.js"),["assets/device-c1920155.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-b5ff9479.js"),["assets/device-b5ff9479.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-2bd6af83.js"),["assets/device-2bd6af83.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-c9df224a.js"),["assets/device-c9df224a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-8b304fd5.js"),["assets/device-8b304fd5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-41c2f368.js"),["assets/device-41c2f368.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-09e0b5dd.js"),["assets/device-09e0b5dd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-f5beaf39.js"),["assets/device-f5beaf39.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-e1695c1b.js"),["assets/device-e1695c1b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-d779a283.js"),["assets/device-d779a283.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-cbb1f36f.js"),["assets/device-cbb1f36f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-fa6313a5.js"),["assets/device-fa6313a5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-fb6dbf7a.js"),["assets/device-fb6dbf7a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-95627a98.js"),["assets/device-95627a98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-944bfe1b.js"),["assets/device-944bfe1b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-a5ad3257.js"),["assets/device-a5ad3257.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-c37bf0a2.js"),["assets/device-c37bf0a2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-5aef24bb.js"),["assets/device-5aef24bb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-8a6c3a9f.js"),["assets/device-8a6c3a9f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-f2ca9f52.js"),["assets/device-f2ca9f52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-f2e0c7de.js"),["assets/device-f2e0c7de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-ba7411f1.js"),["assets/device-ba7411f1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-dcaa50ab.js"),["assets/device-dcaa50ab.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f01c44f.js"),["assets/device-4f01c44f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-57a08fa3.js"),["assets/device-57a08fa3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-967835b8.js"),["assets/device-967835b8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-7d21f4f3.js"),["assets/device-7d21f4f3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-8770c372.js"),["assets/device-8770c372.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-e6c608f5.js"),["assets/device-e6c608f5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-73279a9d.js"),["assets/device-73279a9d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-a55b4f4a.js"),["assets/device-a55b4f4a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-84e9833f.js"),["assets/device-84e9833f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-264b9607.js"),["assets/device-264b9607.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-c0ddbba1.js"),["assets/device-c0ddbba1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-9eedb23a.js"),["assets/device-9eedb23a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-7c975c06.js"),["assets/device-7c975c06.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-1a057dc5.js"),["assets/device-1a057dc5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-51a9d57c.js"),["assets/device-51a9d57c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-a4ac3a30.js"),["assets/device-a4ac3a30.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-a945746f.js"),["assets/device-a945746f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-19334006.js"),["assets/device-19334006.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-17ee5402.js"),["assets/device-17ee5402.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:ie})}}};function pe(t,o,v,m,s,n){return d(),E(X(n.myComponent),{device:t.device,component:t.component,"onUpdate:configuration":o[0]||(o[0]=c=>t.updateConfiguration(c))},null,40,["device","component"])}const le=I(me,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);q.add($,N,G,K,H,F,J);const ce={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:Z,OpenwbConfigProxy:le},mixins:[Q],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([t,o])=>({label:o.group_name,options:Object.entries(o.vendors).map(([v,m])=>({value:[t,v],text:m.vendor_name})).sort((v,m)=>v.text.localeCompare(m.text))})).sort((t,o)=>-t.label.localeCompare(o.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[t,o]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][t].vendors[o].devices).map(([v,m])=>({value:[o,v],text:m.device_name})).sort((v,m)=>v.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(t){return t.match(/^(.+_)?counter(_.+)?$/)?"danger":t.match(/^(.+_)?inverter(_.+)?$/)?"success":t.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(t){return t.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:t.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:t.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(t){return this.getWildcardTopics("openWB/system/device/"+t+"/component/+/config")},deviceHasConfiguredComponents(t){return Object.keys(this.getMyInstalledComponents(t)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(t,o,v){v.stopPropagation(),this.modalDevice=t,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(t){this.showDeviceRemoveModal=!1,t=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(t,o,v,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:t,deviceType:v,deviceVendor:o,type:m}})},removeComponentModal(t,o,v,m,s){s.stopPropagation(),this.modalComponent={deviceId:t,id:o,type:v},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(t){this.showComponentRemoveModal=!1,t=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(t,o){if(t===void 0||o===void 0)return[];console.debug("finding components for",t,o);let v=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[t]!==void 0?(m.vendors[t].devices[o]!==void 0&&(v=Object.entries(m.vendors[t].devices[o].components).map(([n,c])=>({value:n,text:c.component_name}))),!1):!0),v},updateConfiguration(t,o){console.debug("updateConfiguration",t,o),this.updateState(t,o.value,o.object)}}},Ee={class:"hardwareInstallation"},ge={name:"hardwareInstallationForm"},fe={key:0},be={key:1},Ve={key:1},Te={class:"col-1"},Oe={key:0},Ie={class:"col-1"};function Ae(t,o,v,m,s,n){const c=p("openwb-base-modal-dialog"),A=p("router-link"),T=p("openwb-base-alert"),O=p("font-awesome-icon"),L=p("openwb-base-avatar"),D=p("openwb-base-text-input"),x=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),z=p("openwb-base-click-button"),y=p("openwb-base-select-input"),S=p("openwb-base-submit-buttons");return d(),g(R,null,[r(c,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:_(()=>[u(' Wollen Sie das Gerät "'+b(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(c,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:_(()=>[u(' Wollen Sie die Komponente "'+b(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",Ee,[l("form",ge,[v.installAssistantActive?P("",!0):(d(),E(T,{key:0,subtype:"info"},{default:_(()=>[o[6]||(o[6]=u(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),r(A,{to:"/LoadManagementConfiguration"},{default:_(()=>o[5]||(o[5]=[u(" Lastmanagement ")])),_:1}),o[7]||(o[7]=u(" zu prüfen! "))]),_:1})),r(w,{title:"Geräte und Komponenten"},{default:_(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",fe,[r(T,{subtype:"info"},{default:_(()=>o[8]||(o[8]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",be,[(d(!0),g(R,null,h(n.installedDevices,(i,B)=>(d(),E(w,{key:i.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:_(()=>[r(O,{"fixed-width":"",icon:["fas","network-wired"]}),u(" "+b(i.name),1)]),actions:_(a=>[a.collapsed?(d(),g("div",Ve,[(d(!0),g(R,null,h(n.getMyInstalledComponents(i.id),f=>(d(),E(L,{key:f.id,class:k("ml-1 bg-"+n.getComponentTypeClass(f.type))},{default:_(()=>[r(O,{"fixed-width":"",icon:n.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(d(),E(L,{key:0,class:"bg-danger clickable",onClick:f=>n.removeDeviceModal(i.id,i.name,f)},{default:_(()=>[r(O,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:_(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":a=>t.updateState(B,a,"name")},null,8,["model-value","onUpdate:modelValue"]),o[16]||(o[16]=l("hr",null,null,-1)),r(x,{device:i,"onUpdate:configuration":a=>n.updateConfiguration(B,a)},null,8,["device","onUpdate:configuration"]),o[17]||(o[17]=l("hr",null,null,-1)),r(W,null,{default:_(()=>[...o[9]||(o[9]=[u("Komponenten")])]),_:1}),n.deviceHasConfiguredComponents(i.id)?P("",!0):(d(),E(T,{key:0,subtype:"warning"},{default:_(()=>[...o[10]||(o[10]=[u(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(d(!0),g(R,null,h(n.getMyInstalledComponents(i.id),(a,f)=>(d(),E(w,{key:a.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(a.type)},{header:_(()=>[r(O,{"fixed-width":"",icon:n.getComponentTypeIcon(a.type)},null,8,["icon"]),u(" "+b(a.name),1)]),actions:_(V=>[V.collapsed?P("",!0):(d(),E(L,{key:0,class:"bg-danger clickable",onClick:U=>n.removeComponentModal(i.id,a.id,a.type,a.name,U)},{default:_(()=>[r(O,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:_(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":a.name,"onUpdate:modelValue":V=>t.updateState(f,V,"name")},null,8,["model-value","onUpdate:modelValue"]),r(D,{title:"Hersteller",subtype:"text","model-value":a.info.manufacturer,"onUpdate:modelValue":V=>t.updateState(f,V,"info.manufacturer")},{help:_(()=>[...o[11]||(o[11]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),r(D,{title:"Modell",subtype:"text","model-value":a.info.model,"onUpdate:modelValue":V=>t.updateState(f,V,"info.model")},{help:_(()=>[...o[12]||(o[12]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o[13]||(o[13]=l("hr",null,null,-1)),r(x,{device:i,component:a,"onUpdate:configuration":V=>n.updateConfiguration(f,V)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),o[18]||(o[18]=l("hr",null,null,-1)),n.getComponentList(i.vendor,i.type).length?(d(),E(y,{key:1,class:"mb-2",title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:n.getComponentList(i.vendor,i.type),"model-value":s.componentToAdd[i.id],"onUpdate:modelValue":a=>s.componentToAdd[i.id]=a},{append:_(()=>[l("span",Te,[r(z,{class:k(s.componentToAdd[i.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[i.id]===void 0,onButtonClicked:a=>n.addComponent(i.id,i.vendor,i.type,s.componentToAdd[i.id])},{default:_(()=>[r(O,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:_(()=>[...o[14]||(o[14]=[u(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(d(),E(T,{key:2,subtype:"info"},{default:_(()=>[...o[15]||(o[15]=[u(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(d(),g("hr",Oe)):P("",!0),r(y,{modelValue:s.selectedVendor,"onUpdate:modelValue":o[0]||(o[0]=i=>s.selectedVendor=i),title:"Hersteller","not-selected":"Bitte auswählen",groups:n.vendorList},null,8,["modelValue","groups"]),r(y,{modelValue:s.deviceToAdd,"onUpdate:modelValue":o[1]||(o[1]=i=>s.deviceToAdd=i),title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:s.selectedVendor===void 0,options:n.deviceList},{append:_(()=>[l("span",Ie,[r(z,{class:k(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:_(()=>[r(O,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:_(()=>o[19]||(o[19]=[l("p",null,[u(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),u(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),l("p",null,[u(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),u(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options"])]))]),_:1}),r(S,{"form-name":"hardwareInstallationForm",onSave:o[2]||(o[2]=i=>t.$emit("save")),onReset:o[3]||(o[3]=i=>t.$emit("reset")),onDefaults:o[4]||(o[4]=i=>t.$emit("defaults"))})])])],64)}const De=I(ce,[["render",Ae],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),ye=Object.freeze(Object.defineProperty({__proto__:null,default:De},Symbol.toStringTag,{value:"Module"}));export{ne as C,C as D,De as H,ye as a};
diff --git a/web/settings/assets/HardwareInstallation-a0083e3a.js b/web/settings/assets/HardwareInstallation-a0083e3a.js
deleted file mode 100644
index 46a59a3da8..0000000000
--- a/web/settings/assets/HardwareInstallation-a0083e3a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as N,d as G,t as K,a7 as H,a0 as F,P as $,O as J,N as Z,F as Q}from"./vendor-fortawesome-71546160.js";import{_ as e,C as X}from"./index-b0e5e618.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as A,u as p,k as u,l as g,A as E,N as _,y as s,z as b,D as r,x as c,a2 as j,a3 as Y,B as R,J as L,K as k,q as C,S as ee,U as oe}from"./vendor-f2b8aa6f.js";const te={emits:["update:configuration"],props:{device:{type:Object,required:!0}},methods:{updateConfiguration(o,t=void 0){this.$emit("update:configuration",{value:o,object:t})}}},W=A(te,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),_e={name:"DeviceFallback",mixins:[W]},ie={class:"device-fallback"},ne={key:1};function re(o,t,i,m,a,d){const l=p("openwb-base-alert"),D=p("openwb-base-textarea");return u(),g("div",ie,[Object.keys(o.device.configuration).length==0?(u(),E(l,{key:0,subtype:"info"},{default:_(()=>[s(' Der Gerät-Typ "'+b(o.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(u(),g("div",ne,[r(l,{subtype:"warning"},{default:_(()=>[s(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+b(o.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(D,{title:"Konfiguration",subtype:"json","model-value":o.device.configuration,"onUpdate:modelValue":t[0]||(t[0]=T=>o.updateConfiguration(T,"configuration"))},{help:_(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),r(l,{subtype:"info"},{default:_(()=>[c("pre",null,b(JSON.stringify(o.device.configuration,void 0,2)),1)]),_:1})]))])}const de=A(_e,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ue={mixins:[W],props:{component:{type:Object,required:!0}}},se=A(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),ae={name:"ComponentFallback",mixins:[se]},ve={class:"component-fallback"},me={key:1};function pe(o,t,i,m,a,d){const l=p("openwb-base-alert"),D=p("openwb-base-textarea");return u(),g("div",ve,[Object.keys(o.component.configuration).length==0?(u(),E(l,{key:0,subtype:"info"},{default:_(()=>[s(' Der Komponenten-Typ "'+b(o.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(u(),g("div",me,[r(l,{subtype:"warning"},{default:_(()=>[s(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+b(o.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(D,{title:"Konfiguration",subtype:"json","model-value":o.component.configuration,"onUpdate:modelValue":t[0]||(t[0]=T=>o.updateConfiguration(T,"configuration"))},{help:_(()=>[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),r(l,{subtype:"info"},{default:_(()=>[c("pre",null,b(JSON.stringify(o.component.configuration,void 0,2)),1)]),_:1})]))])}const ce=A(ae,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),le={name:"OpenwbConfigProxy",emits:["update:configuration"],props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},computed:{myComponent(){var o;return console.debug(`loading component: ${this.device.type} / ${(o=this.component)==null?void 0:o.type}`),this.component!==void 0?j({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-4f7c15a3.js"),["assets/device-4f7c15a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-40b4b0c5.js"),["assets/device-40b4b0c5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-db16ee4d.js"),["assets/device-db16ee4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-c034f6f0.js"),["assets/device-c034f6f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-bf4936ba.js"),["assets/device-bf4936ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-863d779b.js"),["assets/counter-863d779b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-8118a66e.js"),["assets/device-8118a66e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-3688b404.js"),["assets/bat-3688b404.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-eacbb4cc.js"),["assets/counter-eacbb4cc.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-3c0a0263.js"),["assets/device-3c0a0263.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-fab7ed1c.js"),["assets/inverter-fab7ed1c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-db36cac3.js"),["assets/counter-db36cac3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-829b538b.js"),["assets/device-829b538b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-f3b65772.js"),["assets/inverter-f3b65772.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-d9f34fe2.js"),["assets/device-d9f34fe2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-92895c7b.js"),["assets/counter-92895c7b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-7bfbb863.js"),["assets/device-7bfbb863.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-79d423ad.js"),["assets/inverter-79d423ad.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-f5f3db47.js"),["assets/bat-f5f3db47.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-646a2df0.js"),["assets/device-646a2df0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-862c0f08.js"),["assets/bat-862c0f08.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-bb7c4b01.js"),["assets/counter-bb7c4b01.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-ca2bde32.js"),["assets/device-ca2bde32.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-beac0910.js"),["assets/inverter-beac0910.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-037fc88f.js"),["assets/bat-037fc88f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ae20b8ea.js"),["assets/counter_sm-ae20b8ea.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-850717d0.js"),["assets/device-850717d0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-f8fdf5c3.js"),["assets/inverter_secondary-f8fdf5c3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-5261b4cb.js"),["assets/bat-5261b4cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-c4a0dc83.js"),["assets/counter-c4a0dc83.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-7fc12e51.js"),["assets/device-7fc12e51.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-6217c8a3.js"),["assets/inverter-6217c8a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-26612c12.js"),["assets/bat-26612c12.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-fc3afadd.js"),["assets/counter-fc3afadd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-c0dfc296.js"),["assets/device-c0dfc296.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-f504e343.js"),["assets/inverter-f504e343.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-cc1835de.js"),["assets/bat-cc1835de.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-809d5a8a.js"),["assets/counter-809d5a8a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f9bc5796.js"),["assets/device-f9bc5796.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-1528dc9b.js"),["assets/inverter-1528dc9b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-2407fa25.js"),["assets/counter-2407fa25.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-99fa45c8.js"),["assets/device-99fa45c8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-d6d46ef8.js"),["assets/device-d6d46ef8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-1c6c9346.js"),["assets/bat-1c6c9346.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-ddf406fa.js"),["assets/counter-ddf406fa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-c605ea36.js"),["assets/device-c605ea36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-bb47d837.js"),["assets/inverter-bb47d837.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-a51c4464.js"),["assets/counter-a51c4464.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-aa58f408.js"),["assets/device-aa58f408.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-c3ed00fb.js"),["assets/counter-c3ed00fb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-1859f43b.js"),["assets/device-1859f43b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-b0ea296b.js"),["assets/inverter-b0ea296b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-3b65739e.js"),["assets/device-3b65739e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-e525bf90.js"),["assets/counter-e525bf90.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-d659f206.js"),["assets/device-d659f206.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-3fc7917c.js"),["assets/counter-3fc7917c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-44b38c3f.js"),["assets/device-44b38c3f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-86046891.js"),["assets/device-86046891.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-93d278b2.js"),["assets/inverter-93d278b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-98e25fe5.js"),["assets/device-98e25fe5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-cbe7bc84.js"),["assets/bat-cbe7bc84.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-70ddc5c4.js"),["assets/counter-70ddc5c4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-ab0439ee.js"),["assets/device-ab0439ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-b47b017e.js"),["assets/inverter-b47b017e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-3e055cd7.js"),["assets/device-3e055cd7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-e23118da.js"),["assets/bat-e23118da.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-375e955a.js"),["assets/bat-375e955a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-e17b6711.js"),["assets/counter-e17b6711.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-61827c16.js"),["assets/inverter-61827c16.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-3bf3716c.js"),["assets/bat-3bf3716c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-6e608762.js"),["assets/consumption_counter-6e608762.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-eb577878.js"),["assets/counter-eb577878.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-58a430d5.js"),["assets/device-58a430d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-c861a20b.js"),["assets/inverter-c861a20b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-d5bf52e5.js"),["assets/inverter-d5bf52e5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-079772c2.js"),["assets/counter-079772c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-671cfac2.js"),["assets/device-671cfac2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-d2cdbd98.js"),["assets/counter-d2cdbd98.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-c491b9c2.js"),["assets/device-c491b9c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-3d8e5c7f.js"),["assets/inverter-3d8e5c7f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-359d7e50.js"),["assets/device-359d7e50.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-622f0263.js"),["assets/device-622f0263.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-98fd1cc4.js"),["assets/device-98fd1cc4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-9dd2e78b.js"),["assets/counter-9dd2e78b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-3c779cdd.js"),["assets/device-3c779cdd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-08fe3db1.js"),["assets/device-08fe3db1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-b6ab13cb.js"),["assets/device-b6ab13cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-86d1c852.js"),["assets/bat-86d1c852.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-18ec27d5.js"),["assets/counter-18ec27d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-8c349616.js"),["assets/device-8c349616.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-4130514e.js"),["assets/inverter-4130514e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-55bd9132.js"),["assets/counter-55bd9132.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-97406357.js"),["assets/inverter-97406357.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-afab0752.js"),["assets/bat-afab0752.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-f0537d91.js"),["assets/bat_smart_energy-f0537d91.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-f3a88abe.js"),["assets/counter-f3a88abe.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-cc59c62c.js"),["assets/device-cc59c62c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-6d12a3f1.js"),["assets/inverter-6d12a3f1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-053db3b2.js"),["assets/bat-053db3b2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-b4d24a29.js"),["assets/device-b4d24a29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-0a578374.js"),["assets/device-0a578374.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-38233839.js"),["assets/counter-38233839.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-86f88cbb.js"),["assets/device-86f88cbb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-89ab9892.js"),["assets/inverter-89ab9892.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-38fb8261.js"),["assets/device-38fb8261.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-fcfe882c.js"),["assets/device-fcfe882c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-9c04d80d.js"),["assets/counter-9c04d80d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-a1e3a710.js"),["assets/device-a1e3a710.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-fbd8e09f.js"),["assets/device-fbd8e09f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-f857c467.js"),["assets/inverter-f857c467.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-e372d627.js"),["assets/device-e372d627.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-5a9d2acd.js"),["assets/device-5a9d2acd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-d04a40d4.js"),["assets/bat-d04a40d4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-3d61895d.js"),["assets/counter-3d61895d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-13ac66a2.js"),["assets/device-13ac66a2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-3f39a305.js"),["assets/external_inverter-3f39a305.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-80adcee2.js"),["assets/inverter-80adcee2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-e4573157.js"),["assets/bat-e4573157.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-0c94f34d.js"),["assets/device-0c94f34d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-ec40e2ac.js"),["assets/inverter-ec40e2ac.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-7f837c71.js"),["assets/device-7f837c71.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-2ad336ba.js"),["assets/bat-2ad336ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-aea90a37.js"),["assets/counter-aea90a37.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-e4d1ba40.js"),["assets/device-e4d1ba40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-1b5f20c2.js"),["assets/inverter-1b5f20c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-dfc0206c.js"),["assets/counter-dfc0206c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-f065b014.js"),["assets/device-f065b014.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-c566a75f.js"),["assets/bat-c566a75f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-7fb9b18e.js"),["assets/device-7fb9b18e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-a005080e.js"),["assets/inverter-a005080e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-51f51be9.js"),["assets/counter-51f51be9.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-57e7ea16.js"),["assets/device-57e7ea16.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-1f0b55db.js"),["assets/device-1f0b55db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-4498198c.js"),["assets/device-4498198c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-a1a84381.js"),["assets/counter-a1a84381.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-76f55505.js"),["assets/device-76f55505.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-a3d36699.js"),["assets/device-a3d36699.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-da9423e8.js"),["assets/bat-da9423e8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-f1f7547c.js"),["assets/counter-f1f7547c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-0f4599b8.js"),["assets/device-0f4599b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-2671797a.js"),["assets/inverter-2671797a.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-851af979.js"),["assets/counter-851af979.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-7ea3222f.js"),["assets/device-7ea3222f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-a9cee12b.js"),["assets/inverter-a9cee12b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-1c46f4b0.js"),["assets/device-1c46f4b0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-94706045.js"),["assets/inverter-94706045.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ce}):j({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-4f7c15a3.js"),["assets/device-4f7c15a3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-40b4b0c5.js"),["assets/device-40b4b0c5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-db16ee4d.js"),["assets/device-db16ee4d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-c034f6f0.js"),["assets/device-c034f6f0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-bf4936ba.js"),["assets/device-bf4936ba.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-8118a66e.js"),["assets/device-8118a66e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-3c0a0263.js"),["assets/device-3c0a0263.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-829b538b.js"),["assets/device-829b538b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-d9f34fe2.js"),["assets/device-d9f34fe2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-7bfbb863.js"),["assets/device-7bfbb863.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-646a2df0.js"),["assets/device-646a2df0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-ca2bde32.js"),["assets/device-ca2bde32.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-850717d0.js"),["assets/device-850717d0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-7fc12e51.js"),["assets/device-7fc12e51.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-c0dfc296.js"),["assets/device-c0dfc296.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f9bc5796.js"),["assets/device-f9bc5796.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-99fa45c8.js"),["assets/device-99fa45c8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-d6d46ef8.js"),["assets/device-d6d46ef8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-c605ea36.js"),["assets/device-c605ea36.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-aa58f408.js"),["assets/device-aa58f408.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-1859f43b.js"),["assets/device-1859f43b.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-3b65739e.js"),["assets/device-3b65739e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-d659f206.js"),["assets/device-d659f206.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-44b38c3f.js"),["assets/device-44b38c3f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-86046891.js"),["assets/device-86046891.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-98e25fe5.js"),["assets/device-98e25fe5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-ab0439ee.js"),["assets/device-ab0439ee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-3e055cd7.js"),["assets/device-3e055cd7.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-58a430d5.js"),["assets/device-58a430d5.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-671cfac2.js"),["assets/device-671cfac2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-c491b9c2.js"),["assets/device-c491b9c2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-359d7e50.js"),["assets/device-359d7e50.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-622f0263.js"),["assets/device-622f0263.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-98fd1cc4.js"),["assets/device-98fd1cc4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-3c779cdd.js"),["assets/device-3c779cdd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-08fe3db1.js"),["assets/device-08fe3db1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-b6ab13cb.js"),["assets/device-b6ab13cb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-8c349616.js"),["assets/device-8c349616.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-cc59c62c.js"),["assets/device-cc59c62c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-b4d24a29.js"),["assets/device-b4d24a29.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-0a578374.js"),["assets/device-0a578374.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-86f88cbb.js"),["assets/device-86f88cbb.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-38fb8261.js"),["assets/device-38fb8261.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-fcfe882c.js"),["assets/device-fcfe882c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-a1e3a710.js"),["assets/device-a1e3a710.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-fbd8e09f.js"),["assets/device-fbd8e09f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-e372d627.js"),["assets/device-e372d627.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-5a9d2acd.js"),["assets/device-5a9d2acd.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-13ac66a2.js"),["assets/device-13ac66a2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-0c94f34d.js"),["assets/device-0c94f34d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-7f837c71.js"),["assets/device-7f837c71.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-e4d1ba40.js"),["assets/device-e4d1ba40.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-f065b014.js"),["assets/device-f065b014.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-7fb9b18e.js"),["assets/device-7fb9b18e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-57e7ea16.js"),["assets/device-57e7ea16.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-1f0b55db.js"),["assets/device-1f0b55db.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-4498198c.js"),["assets/device-4498198c.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-76f55505.js"),["assets/device-76f55505.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-a3d36699.js"),["assets/device-a3d36699.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-0f4599b8.js"),["assets/device-0f4599b8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-7ea3222f.js"),["assets/device-7ea3222f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-1c46f4b0.js"),["assets/device-1c46f4b0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:de})}},methods:{updateConfiguration(o){this.$emit("update:configuration",o)}}};function Ee(o,t,i,m,a,d){return u(),E(Y(d.myComponent),{device:i.device,component:i.component,configuration:i.component?i.component.configuration:i.device.configuration,deviceId:i.device.id,deviceType:i.device.type,componentId:i.component?i.component.id:void 0,componentType:i.component?i.component.type:void 0,"onUpdate:configuration":t[0]||(t[0]=l=>d.updateConfiguration(l))},null,40,["device","component","configuration","deviceId","deviceType","componentId","componentType"])}const ge=A(le,[["render",Ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);N.add(G,K,H,F,$,J,Z);const fe={name:"OpenwbHardwareInstallationView",mixins:[X],emits:["sendCommand"],components:{FontAwesomeIcon:Q,OpenwbConfigProxy:ge},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([o,t])=>({label:t.group_name,options:Object.entries(t.vendors).map(([i,m])=>({value:[o,i],text:m.vendor_name})).sort((i,m)=>i.text.localeCompare(m.text))})).sort((o,t)=>-o.label.localeCompare(t.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[o,t]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][o].vendors[t].devices).map(([i,m])=>({value:[t,i],text:m.device_name})).sort((i,m)=>i.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(o){return o.match(/^(.+_)?counter(_.+)?$/)?"danger":o.match(/^(.+_)?inverter(_.+)?$/)?"success":o.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(o){return o.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:o.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:o.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(o){return this.getWildcardTopics("openWB/system/device/"+o+"/component/+/config")},deviceHasConfiguredComponents(o){return Object.keys(this.getMyInstalledComponents(o)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(o,t,i){i.stopPropagation(),this.modalDevice=o,this.modalDeviceName=t,this.showDeviceRemoveModal=!0},removeDevice(o){this.showDeviceRemoveModal=!1,o=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(o,t,i,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:o,deviceType:i,deviceVendor:t,type:m}})},removeComponentModal(o,t,i,m,a){a.stopPropagation(),this.modalComponent={deviceId:o,id:t,type:i},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(o){this.showComponentRemoveModal=!1,o=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(o,t){if(o===void 0||t===void 0)return[];console.debug("finding components for",o,t);let i=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[o]!==void 0?(m.vendors[o].devices[t]!==void 0&&(i=Object.entries(m.vendors[o].devices[t].components).map(([d,l])=>({value:d,text:l.component_name}))),!1):!0),i},updateConfiguration(o,t){console.debug("updateConfiguration",o,t),this.updateState(o,t.value,t.object)}}},O=o=>(ee("data-v-8595d6ae"),o=o(),oe(),o),be={class:"hardwareInstallation"},Ve={name:"hardwareInstallationForm"},Te={key:0},Ie={key:1},Oe={key:1},Ae=O(()=>c("hr",null,null,-1)),De=O(()=>c("hr",null,null,-1)),Pe=O(()=>c("hr",null,null,-1)),Re=O(()=>c("hr",null,null,-1)),Le={class:"col-1"},he={key:0},we={class:"col-1"},ye=O(()=>c("p",null,[s(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),c("br"),s(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1)),ke=O(()=>c("p",null,[s(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),c("br"),s(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1)),Ce=O(()=>c("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1));function xe(o,t,i,m,a,d){const l=p("openwb-base-modal-dialog"),D=p("router-link"),T=p("openwb-base-alert"),I=p("font-awesome-icon"),h=p("openwb-base-avatar"),P=p("openwb-base-text-input"),x=p("openwb-config-proxy"),S=p("openwb-base-heading"),w=p("openwb-base-card"),z=p("openwb-base-click-button"),y=p("openwb-base-select-input"),q=p("openwb-base-submit-buttons");return u(),g(L,null,[r(l,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeDevice},{default:_(()=>[s(' Wollen Sie das Gerät "'+b(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(l,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeComponent},{default:_(()=>[s(' Wollen Sie die Komponente "'+b(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),c("div",be,[c("form",Ve,[i.installAssistantActive?R("",!0):(u(),E(T,{key:0,subtype:"info"},{default:_(()=>[s(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das "),r(D,{to:"/LoadManagementConfiguration"},{default:_(()=>[s(" Lastmanagement ")]),_:1}),s(" zu prüfen! ")]),_:1})),r(w,{title:"Geräte und Komponenten"},{default:_(()=>[o.$store.state.mqtt["openWB/general/extern"]===!0?(u(),g("div",Te,[r(T,{subtype:"info"},{default:_(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),g("div",Ie,[(u(!0),g(L,null,k(d.installedDevices,(n,B)=>(u(),E(w,{key:n.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:_(()=>[r(I,{"fixed-width":"",icon:["fas","network-wired"]}),s(" "+b(n.name),1)]),actions:_(v=>[v.collapsed?(u(),g("div",Oe,[(u(!0),g(L,null,k(d.getMyInstalledComponents(n.id),f=>(u(),E(h,{key:f.id,class:C("ml-1 bg-"+d.getComponentTypeClass(f.type))},{default:_(()=>[r(I,{"fixed-width":"",icon:d.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(u(),E(h,{key:0,class:"bg-danger clickable",onClick:f=>d.removeDeviceModal(n.id,n.name,f)},{default:_(()=>[r(I,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:_(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":n.name,"onUpdate:modelValue":v=>o.updateState(B,v,"name")},null,8,["model-value","onUpdate:modelValue"]),Ae,r(x,{device:n,"onUpdate:configuration":v=>d.updateConfiguration(B,v)},null,8,["device","onUpdate:configuration"]),De,r(S,null,{default:_(()=>[s("Komponenten")]),_:1}),d.deviceHasConfiguredComponents(n.id)?R("",!0):(u(),E(T,{key:0,subtype:"warning"},{default:_(()=>[s(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")]),_:1})),(u(!0),g(L,null,k(d.getMyInstalledComponents(n.id),(v,f)=>(u(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:d.getComponentTypeClass(v.type)},{header:_(()=>[r(I,{"fixed-width":"",icon:d.getComponentTypeIcon(v.type)},null,8,["icon"]),s(" "+b(v.name),1)]),actions:_(V=>[V.collapsed?R("",!0):(u(),E(h,{key:0,class:"bg-danger clickable",onClick:U=>d.removeComponentModal(n.id,v.id,v.type,v.name,U)},{default:_(()=>[r(I,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:_(()=>[r(P,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":V=>o.updateState(f,V,"name")},null,8,["model-value","onUpdate:modelValue"]),r(P,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":V=>o.updateState(f,V,"info.manufacturer")},{help:_(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),r(P,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":V=>o.updateState(f,V,"info.model")},{help:_(()=>[s(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),Pe,r(x,{device:n,component:v,"onUpdate:configuration":V=>d.updateConfiguration(f,V)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),Re,d.getComponentList(n.vendor,n.type).length?(u(),E(y,{key:1,class:"mb-2",title:"Verfügbare Komponenten",notSelected:"Bitte auswählen",options:d.getComponentList(n.vendor,n.type),"model-value":a.componentToAdd[n.id],"onUpdate:modelValue":v=>a.componentToAdd[n.id]=v},{append:_(()=>[c("span",Le,[r(z,{class:C(a.componentToAdd[n.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[n.id]===void 0,onButtonClicked:v=>d.addComponent(n.id,n.vendor,n.type,a.componentToAdd[n.id])},{default:_(()=>[r(I,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:_(()=>[s(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(u(),E(T,{key:2,subtype:"info"},{default:_(()=>[s(" Dieses System bietet keine Komponenten zur Installation an. ")]),_:1}))]),_:2},1024))),128)),Object.keys(d.installedDevices).length>0?(u(),g("hr",he)):R("",!0),r(y,{title:"Hersteller",notSelected:"Bitte auswählen",groups:d.vendorList,modelValue:a.selectedVendor,"onUpdate:modelValue":t[0]||(t[0]=n=>a.selectedVendor=n)},null,8,["groups","modelValue"]),r(y,{title:"Verfügbare Geräte",notSelected:"Bitte auswählen",disabled:a.selectedVendor===void 0,options:d.deviceList,modelValue:a.deviceToAdd,"onUpdate:modelValue":t[1]||(t[1]=n=>a.deviceToAdd=n)},{append:_(()=>[c("span",we,[r(z,{class:C(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:d.addDevice},{default:_(()=>[r(I,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:_(()=>[ye,ke,Ce]),_:1},8,["disabled","options","modelValue"])]))]),_:1}),r(q,{formName:"hardwareInstallationForm",onSave:t[2]||(t[2]=n=>o.$emit("save")),onReset:t[3]||(t[3]=n=>o.$emit("reset")),onDefaults:t[4]||(t[4]=n=>o.$emit("defaults"))})])])],64)}const ze=A(fe,[["render",xe],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),Se=Object.freeze(Object.defineProperty({__proto__:null,default:ze},Symbol.toStringTag,{value:"Module"}));export{se as C,W as D,ze as H,Se as a};
diff --git a/web/settings/assets/InstallAssistant-c6a6444f.js b/web/settings/assets/InstallAssistant-c6a6444f.js
new file mode 100644
index 0000000000..eb6781d47c
--- /dev/null
+++ b/web/settings/assets/InstallAssistant-c6a6444f.js
@@ -0,0 +1 @@
+import{C as r,_ as t}from"./index-dc0e711f.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a0 as p,u as d,k as i,l as u,D as A,N as v,A as E,a1 as I,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-de111777.js"),["assets/InstallAssistantStep0-de111777.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-eec2b42e.js"),["assets/InstallAssistantStep1-eec2b42e.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-ad71d105.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-a22f74f5.js"),["assets/InstallAssistantStep10-a22f74f5.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-95ec4f8b.js"),["assets/InstallAssistantStep2-95ec4f8b.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-8e218ae4.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-e076a393.js"),["assets/InstallAssistantStep3-e076a393.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-2f07ba45.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-07e22013.js"),["assets/InstallAssistantStep4-07e22013.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-12a5c989.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-4b69dc5b.js"),["assets/InstallAssistantStep5-4b69dc5b.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-6cc98da9.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-ae56da1e.js"),["assets/InstallAssistantStep6-ae56da1e.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-12a5c989.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-824e5762.js"),["assets/InstallAssistantStep7-824e5762.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-87715007.js","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-37e813b9.js"),["assets/InstallAssistantStep8-37e813b9.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-0ab604e8.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-7a22998e.js"),["assets/InstallAssistantStep9-7a22998e.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-ad71d105.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-0780226f.js"),["assets/InstallAssistantStepTemplate-0780226f.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistant-e098a326.js b/web/settings/assets/InstallAssistant-e098a326.js
deleted file mode 100644
index 9e656a78b3..0000000000
--- a/web/settings/assets/InstallAssistant-e098a326.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as r,_ as t}from"./index-b0e5e618.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a2 as p,u as d,k as i,l as u,D as A,N as v,A as c,a3 as E,y as I}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-3aacc430.js"),["assets/InstallAssistantStep0-3aacc430.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-92925871.js"),["assets/InstallAssistantStep1-92925871.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-eb2fc5d7.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-a0cc0c5c.js"),["assets/InstallAssistantStep10-a0cc0c5c.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-5a5716af.js"),["assets/InstallAssistantStep2-5a5716af.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-c2920436.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-433c8ac0.js"),["assets/InstallAssistantStep3-433c8ac0.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-1396a845.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-082fc830.js"),["assets/InstallAssistantStep4-082fc830.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-fba1b24e.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-86511db2.js"),["assets/InstallAssistantStep5-86511db2.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-a0083e3a.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-40f3e62a.js"),["assets/InstallAssistantStep6-40f3e62a.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-fba1b24e.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-b99ff659.js"),["assets/InstallAssistantStep7-b99ff659.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-5e0d6325.js","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-a481c31b.js"),["assets/InstallAssistantStep8-a481c31b.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-5050794d.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-df6f7a62.js"),["assets/InstallAssistantStep9-df6f7a62.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-eb2fc5d7.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-b7a8caa2.js"),["assets/InstallAssistantStepTemplate-b7a8caa2.js","assets/index-b0e5e618.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>[I(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")]),_:1},8,["show","onModalResult"]),(i(),c(E(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-3aacc430.js b/web/settings/assets/InstallAssistantStep0-3aacc430.js
deleted file mode 100644
index d80d30f93b..0000000000
--- a/web/settings/assets/InstallAssistantStep0-3aacc430.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./index-b0e5e618.js";import u from"./InstallAssistantStepTemplate-b7a8caa2.js";import{_ as c,u as i,k as h,A as p,N as a,D as m,y as g,x as e}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"InstallAssistantStep0",mixins:[d],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u},data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(n){this.showModalWarning=!1,n==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}},f=e("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1),A=e("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1),b=e("ol",null,[e("li",null,"Datensicherung - Eine Sicherung erstellen"),e("li",null,"Aktualisierung des Systems"),e("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1),w=e("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1),P=e("ol",{start:"4"},[e("li",null,"Energiesystem - Geräte und Komponenten einrichten"),e("li",null,"Einrichten der Ladepunkte (openWB als primary)"),e("li",null,"Konfiguration des Lastmanagements"),e("li",null,"Einrichten der Fahrzeuge"),e("li",null,"Datensicherung - Eine Sicherung erstellen")],-1),S=e("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1);function k(n,s,v,x,y,t){const o=i("openwb-base-modal-dialog"),l=i("InstallAssistantStepTemplate");return h(),p(l,{title:"Start",onNextPage:t.requestNextPage,onPreviousPage:t.previousPage,onEndAssistant:t.endAssistant,hidePrevious:!0},{content:a(()=>[m(o,{show:n.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:s[0]||(s[0]=r=>t.nextPage(r))},{default:a(()=>[g(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")]),_:1},8,["show"]),f,A,b,w,P,S]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const M=c(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{M as default};
diff --git a/web/settings/assets/InstallAssistantStep0-de111777.js b/web/settings/assets/InstallAssistantStep0-de111777.js
new file mode 100644
index 0000000000..901610fe1b
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep0-de111777.js
@@ -0,0 +1 @@
+import{C as u}from"./index-dc0e711f.js";import d from"./InstallAssistantStepTemplate-0780226f.js";import{_ as p,u as i,k as m,A as g,N as a,D as h,y as c,x as t}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function A(s,e,b,w,P,n){const l=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(l,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=o=>n.nextPage(o))},{default:a(()=>e[1]||(e[1]=[c(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung - Eine Sicherung erstellen"),t("li",null,"Aktualisierung des Systems"),t("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung - Eine Sicherung erstellen")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const z=p(f,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{z as default};
diff --git a/web/settings/assets/InstallAssistantStep1-92925871.js b/web/settings/assets/InstallAssistantStep1-92925871.js
deleted file mode 100644
index 90a6da4801..0000000000
--- a/web/settings/assets/InstallAssistantStep1-92925871.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./index-b0e5e618.js";import p from"./InstallAssistantStepTemplate-b7a8caa2.js";import{D as l}from"./DataManagement-eb2fc5d7.js";import{_ as d,u as a,k as u,A as g,N as i,D as f,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}},v=c("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1);function S(t,e,P,h,w,n){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:i(()=>[v]),content:i(()=>[f(o,{installAssistantActive:!0,showBackupCloudSection:!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const b=d(A,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{b as default};
diff --git a/web/settings/assets/InstallAssistantStep1-eec2b42e.js b/web/settings/assets/InstallAssistantStep1-eec2b42e.js
new file mode 100644
index 0000000000..307ea272ed
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep1-eec2b42e.js
@@ -0,0 +1 @@
+import{C as m}from"./index-dc0e711f.js";import p from"./InstallAssistantStepTemplate-0780226f.js";import{D as l}from"./DataManagement-ad71d105.js";import{_ as d,u as a,k as u,A as g,N as i,x as f,D as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,P,S,w,n){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:i(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:i(()=>[v(o,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=d(A,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep10-a0cc0c5c.js b/web/settings/assets/InstallAssistantStep10-a0cc0c5c.js
deleted file mode 100644
index 53b9f48356..0000000000
--- a/web/settings/assets/InstallAssistantStep10-a0cc0c5c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as i}from"./index-b0e5e618.js";import a from"./InstallAssistantStepTemplate-b7a8caa2.js";import{_ as o,u as r,k as l,A as d,N as m,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const p={name:"InstallAssistantStep10",mixins:[i],emits:["switchPage","endAssistant"],components:{InstallAssistantStepTemplate:a},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}},c=s("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),g=s("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1);function u(t,_,h,f,A,e){const n=r("InstallAssistantStepTemplate");return l(),d(n,{title:"Abgeschlossen",onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant,hideNext:!0},{content:m(()=>[c,g]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const k=o(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{k as default};
diff --git a/web/settings/assets/InstallAssistantStep10-a22f74f5.js b/web/settings/assets/InstallAssistantStep10-a22f74f5.js
new file mode 100644
index 0000000000..22f6f7a16b
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep10-a22f74f5.js
@@ -0,0 +1 @@
+import{C as a}from"./index-dc0e711f.js";import o from"./InstallAssistantStepTemplate-0780226f.js";import{_ as r,u as l,k as d,A as m,N as p,x as n}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const g={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function u(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return d(),m(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:p(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const v=r(g,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{v as default};
diff --git a/web/settings/assets/InstallAssistantStep2-5a5716af.js b/web/settings/assets/InstallAssistantStep2-5a5716af.js
deleted file mode 100644
index d83564d9cb..0000000000
--- a/web/settings/assets/InstallAssistantStep2-5a5716af.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./index-b0e5e618.js";import p from"./InstallAssistantStepTemplate-b7a8caa2.js";import l from"./System-c2920436.js";import{_ as u,u as i,k as f,A as g,N as o,D as A,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S={name:"InstallAssistantStep2",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,SystemView:l},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),c=a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),P=a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1);function w(e,t,_,$,k,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,c,P]),content:o(()=>[A(r,{installAssistantActive:!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(S,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep2-95ec4f8b.js b/web/settings/assets/InstallAssistantStep2-95ec4f8b.js
new file mode 100644
index 0000000000..d6d7732ad5
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep2-95ec4f8b.js
@@ -0,0 +1 @@
+import{C as p}from"./index-dc0e711f.js";import d from"./InstallAssistantStepTemplate-0780226f.js";import l from"./System-8e218ae4.js";import{_ as u,u as i,k as f,A as g,N as o,x as a,D as S}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const A={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:d,SystemView:l},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function v(e,t,P,w,$,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>t[4]||(t[4]=[a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1)])),content:o(()=>[S(r,{"install-assistant-active":!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(A,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep3-433c8ac0.js b/web/settings/assets/InstallAssistantStep3-433c8ac0.js
deleted file mode 100644
index 1a3c7c032a..0000000000
--- a/web/settings/assets/InstallAssistantStep3-433c8ac0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./index-b0e5e618.js";import p from"./InstallAssistantStepTemplate-b7a8caa2.js";import{G as m}from"./GeneralConfig-1396a845.js";import{_ as u,u as a,k as g,A as f,N as r,D as c,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep3",mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,GeneralConfigView:m},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}},A=s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),b=s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),k=s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),B=s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,h,P,v,i){const o=a("GeneralConfigView"),l=a("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[A,b,k,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=n=>t.$emit("sendCommand",n)),onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=u(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep3-e076a393.js b/web/settings/assets/InstallAssistantStep3-e076a393.js
new file mode 100644
index 0000000000..ff80cd9cb0
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep3-e076a393.js
@@ -0,0 +1 @@
+import{C as p}from"./index-dc0e711f.js";import d from"./InstallAssistantStepTemplate-0780226f.js";import{G as m}from"./GeneralConfig-2f07ba45.js";import{_ as u,u as i,k as g,A as f,N as r,x as s,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function k(n,e,B,S,A,a){const o=i("GeneralConfigView"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:a.nextPage,onPreviousPage:a.previousPage,onEndAssistant:a.endAssistant},{help:r(()=>e[4]||(e[4]=[s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=t=>n.$emit("sendCommand",t)),onSave:e[1]||(e[1]=t=>n.$emit("save")),onReset:e[2]||(e[2]=t=>n.$emit("reset")),onDefaults:e[3]||(e[3]=t=>n.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStep4-07e22013.js b/web/settings/assets/InstallAssistantStep4-07e22013.js
new file mode 100644
index 0000000000..e30f34b299
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep4-07e22013.js
@@ -0,0 +1 @@
+import{C as l}from"./index-dc0e711f.js";import p from"./InstallAssistantStepTemplate-0780226f.js";import{b as u}from"./ChargePointInstallation-12a5c989.js";import{_ as m,u as a,k as g,A as f,N as o,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,B,h,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const L=m(k,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep4-082fc830.js b/web/settings/assets/InstallAssistantStep4-082fc830.js
deleted file mode 100644
index cd6705fd48..0000000000
--- a/web/settings/assets/InstallAssistantStep4-082fc830.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-b0e5e618.js";import p from"./InstallAssistantStepTemplate-b7a8caa2.js";import{b as u}from"./ChargePointInstallation-fba1b24e.js";import{_ as m,u as o,k as g,A as c,N as a,D as f,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep4",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),k=n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),B=n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),_=n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),v=n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),P=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),S=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function A(t,e,b,W,I,i){const r=o("ChargePointInstallationView"),d=o("InstallAssistantStepTemplate");return g(),c(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,k,B,_,v,P,S]),content:a(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const y=m(h,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{y as default};
diff --git a/web/settings/assets/InstallAssistantStep5-4b69dc5b.js b/web/settings/assets/InstallAssistantStep5-4b69dc5b.js
new file mode 100644
index 0000000000..25aeb95bac
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep5-4b69dc5b.js
@@ -0,0 +1 @@
+import{C as l}from"./index-dc0e711f.js";import m from"./InstallAssistantStepTemplate-0780226f.js";import{H as u}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as r,k as g,A as f,N as a,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,b,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default};
diff --git a/web/settings/assets/InstallAssistantStep5-86511db2.js b/web/settings/assets/InstallAssistantStep5-86511db2.js
deleted file mode 100644
index 20e904eea6..0000000000
--- a/web/settings/assets/InstallAssistantStep5-86511db2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-b0e5e618.js";import m from"./InstallAssistantStepTemplate-b7a8caa2.js";import{H as u}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as r,k as g,A as f,N as a,D as h,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep5",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}},w=n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),v=n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),A=n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),S=n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),b=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function P(t,e,_,k,I,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[w,v,A,S,b]),content:a(()=>[h(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=p(c,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep6-40f3e62a.js b/web/settings/assets/InstallAssistantStep6-40f3e62a.js
deleted file mode 100644
index f6faebe89a..0000000000
--- a/web/settings/assets/InstallAssistantStep6-40f3e62a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-b0e5e618.js";import u from"./InstallAssistantStepTemplate-b7a8caa2.js";import{b as p}from"./ChargePointInstallation-fba1b24e.js";import{_ as m,u as a,k as h,A as g,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const w={name:"InstallAssistantStep6",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}},P=n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),f=n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),b=n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),k=n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),A=n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),B=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function S(t,e,_,v,L,i){const o=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return h(),g(d,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[P,f,b,k,A,B]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const D=m(w,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstallAssistantStep6-ae56da1e.js b/web/settings/assets/InstallAssistantStep6-ae56da1e.js
new file mode 100644
index 0000000000..7ba3beceed
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep6-ae56da1e.js
@@ -0,0 +1 @@
+import{C as d}from"./index-dc0e711f.js";import u from"./InstallAssistantStepTemplate-0780226f.js";import{b as p}from"./ChargePointInstallation-12a5c989.js";import{_ as m,u as a,k as g,A as h,N as r,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default};
diff --git a/web/settings/assets/InstallAssistantStep7-824e5762.js b/web/settings/assets/InstallAssistantStep7-824e5762.js
new file mode 100644
index 0000000000..83e0841a6e
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep7-824e5762.js
@@ -0,0 +1 @@
+import{C as l}from"./index-dc0e711f.js";import m from"./InstallAssistantStepTemplate-0780226f.js";import p from"./LoadManagementConfig-87715007.js";import{_ as u,u as r,k as g,A as h,N as a,x as n,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./OpenwbSortableList-3ce7f991.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStep7-b99ff659.js b/web/settings/assets/InstallAssistantStep7-b99ff659.js
deleted file mode 100644
index d811b9178f..0000000000
--- a/web/settings/assets/InstallAssistantStep7-b99ff659.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-b0e5e618.js";import m from"./InstallAssistantStepTemplate-b7a8caa2.js";import p from"./LoadManagementConfig-5e0d6325.js";import{_ as u,u as r,k as h,A as g,N as a,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./OpenwbSortableList-641f6bb4.js";const f={name:"InstallAssistantStep7",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}},b=n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),A=n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),S=n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),w=n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),P=n("p",null,null,-1),_=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function k(t,e,v,V,x,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return h(),g(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>[b,A,S,w,P,_]),content:a(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(f,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep8-37e813b9.js b/web/settings/assets/InstallAssistantStep8-37e813b9.js
new file mode 100644
index 0000000000..7a02b601a9
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep8-37e813b9.js
@@ -0,0 +1 @@
+import{C as l}from"./index-dc0e711f.js";import u from"./InstallAssistantStepTemplate-0780226f.js";import{a as m}from"./VehicleConfig-0ab604e8.js";import{_ as g,u as a,k as h,A as p,N as r,x as n,D as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}};function z(t,e,P,w,v,i){const o=a("VehicleConfigView"),d=a("InstallAssistantStepTemplate");return h(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[f(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=g(c,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{x as default};
diff --git a/web/settings/assets/InstallAssistantStep8-a481c31b.js b/web/settings/assets/InstallAssistantStep8-a481c31b.js
deleted file mode 100644
index 1d19b7f90c..0000000000
--- a/web/settings/assets/InstallAssistantStep8-a481c31b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-b0e5e618.js";import u from"./InstallAssistantStepTemplate-b7a8caa2.js";import{a as m}from"./VehicleConfig-5050794d.js";import{_ as h,u as a,k as g,A as p,N as r,D as c,x as n}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"InstallAssistantStep8",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}},z=n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),P=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),w=n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),A=n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),v=n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),F=n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1);function _(t,e,S,b,V,i){const o=a("VehicleConfigView"),d=a("InstallAssistantStepTemplate");return g(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>[z,P,w,A,v,F]),content:r(()=>[c(o,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=h(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep9-7a22998e.js b/web/settings/assets/InstallAssistantStep9-7a22998e.js
new file mode 100644
index 0000000000..88c8236e4a
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStep9-7a22998e.js
@@ -0,0 +1 @@
+import{C as l}from"./index-dc0e711f.js";import p from"./InstallAssistantStepTemplate-0780226f.js";import{D as u}from"./DataManagement-ad71d105.js";import{_ as d,u as i,k as g,A as f,N as r,x as a,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,S,A,P,n){const o=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),f(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:r(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:r(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const I=d(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStep9-df6f7a62.js b/web/settings/assets/InstallAssistantStep9-df6f7a62.js
deleted file mode 100644
index c0d97e4f0b..0000000000
--- a/web/settings/assets/InstallAssistantStep9-df6f7a62.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-b0e5e618.js";import p from"./InstallAssistantStepTemplate-b7a8caa2.js";import{D as u}from"./DataManagement-eb2fc5d7.js";import{_ as d,u as i,k as g,A as c,N as o,D as f,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep9",mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],components:{InstallAssistantStepTemplate:p,DataManagement:u},data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}},v=a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),A=a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),S=a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1);function P(t,e,$,B,D,n){const r=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),c(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>[v,A,S]),content:o(()=>[f(r,{installAssistantActive:!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const T=d(h,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-0780226f.js b/web/settings/assets/InstallAssistantStepTemplate-0780226f.js
new file mode 100644
index 0000000000..8ace279eb4
--- /dev/null
+++ b/web/settings/assets/InstallAssistantStepTemplate-0780226f.js
@@ -0,0 +1 @@
+import{C as g}from"./index-dc0e711f.js";import{l as v,ak as y,al as w,F as x}from"./vendor-fortawesome-41164876.js";import{_ as k,u as r,k as i,l as a,D as t,N as s,x as n,y as c,B as p,m as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(y,w);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},S={class:"row justify-content-center"},T={class:"page-help-text col-md-3 py-2"},I={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",N,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",S,[n("div",T,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",I,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const Z=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{Z as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-b7a8caa2.js b/web/settings/assets/InstallAssistantStepTemplate-b7a8caa2.js
deleted file mode 100644
index c43a54b8e5..0000000000
--- a/web/settings/assets/InstallAssistantStepTemplate-b7a8caa2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as v}from"./index-b0e5e618.js";import{l as g,ak as h,al as w,F as y}from"./vendor-fortawesome-71546160.js";import{_ as x,u as r,k as i,l,D as s,N as n,x as o,y as p,B as _,m as f,S as k,U as B}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const S="/openWB/web/settings/img/openWB_logo_light.png";g.add(h,w);const A={name:"InstallAssistantStepTemplate",mixins:[v],emits:["previousPage","nextPage","endAssistant"],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},components:{FontAwesomeIcon:y},methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},C=e=>(k("data-v-db9e78cb"),e=e(),B(),e),P={class:"row justify-content-center mb-1"},I={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},T={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},$={class:"row justify-content-center"},j={class:"page-help-text col-md-3 py-2"},W=C(()=>o("img",{src:S,alt:"openWB Logo",class:"w-100"},null,-1)),q={class:"col py-2"};function V(e,t,a,E,F,d){const u=r("font-awesome-icon"),c=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),l("div",null,[s(b,{title:a.title,class:"p-0 mx-3"},{footer:n(()=>[o("div",P,[a.hidePrevious?_("",!0):(i(),l("div",I,[s(c,{class:"btn-block btn-warning",onButtonClicked:t[0]||(t[0]=m=>d.previousPage())},{default:n(()=>[s(u,{"fixed-width":"",icon:["fas","caret-left"]}),p(" Zurück ")]),_:1})])),a.hideNext?_("",!0):(i(),l("div",N,[s(c,{class:"btn-block btn-success",onButtonClicked:t[1]||(t[1]=m=>d.nextPage())},{default:n(()=>[p(" Weiter "),s(u,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),a.hideEnd?_("",!0):(i(),l("div",T,[s(c,{class:"btn-block btn-danger",onButtonClicked:t[2]||(t[2]=m=>d.endAssistant())},{default:n(()=>[p(" Assistent beenden ")]),_:1})]))])]),default:n(()=>[o("div",$,[o("div",j,[f(e.$slots,"help",{},()=>[W],!0)]),o("div",q,[f(e.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const H=x(A,[["render",V],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{H as default};
diff --git a/web/settings/assets/InstantChargeConfig-13725bb2.js b/web/settings/assets/InstantChargeConfig-13725bb2.js
deleted file mode 100644
index 5cbbbcbf27..0000000000
--- a/web/settings/assets/InstantChargeConfig-13725bb2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-b0e5e618.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbInstantChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},c={class:"instantChargeConfig"},f={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/InstantChargeConfig-d3719370.js b/web/settings/assets/InstantChargeConfig-d3719370.js
new file mode 100644
index 0000000000..d2c1aa9b18
--- /dev/null
+++ b/web/settings/assets/InstantChargeConfig-d3719370.js
@@ -0,0 +1 @@
+import{C as l}from"./index-dc0e711f.js";import{_ as b,u as o,k as a,l as i,x as _,D as s,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-b9806df1.js b/web/settings/assets/LegalSettings-b9806df1.js
new file mode 100644
index 0000000000..fc38cff553
--- /dev/null
+++ b/web/settings/assets/LegalSettings-b9806df1.js
@@ -0,0 +1 @@
+import{l as _,a3 as k,F as y}from"./vendor-fortawesome-41164876.js";import{C as v}from"./index-dc0e711f.js";import{_ as B,u as n,k as i,l as h,x as a,D as o,N as r,A as m,y as d,B as p}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";_.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:y},mixins:[v],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",$,[a("form",z,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const O=B(S,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{O as default};
diff --git a/web/settings/assets/LegalSettings-c607b1a5.js b/web/settings/assets/LegalSettings-c607b1a5.js
deleted file mode 100644
index cc14f59fb5..0000000000
--- a/web/settings/assets/LegalSettings-c607b1a5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as f,a3 as k,F as h}from"./vendor-fortawesome-71546160.js";import{C as y}from"./index-b0e5e618.js";import{_ as v,u as n,k as r,l as B,x as i,D as o,N as a,A as m,y as d,B as c}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";f.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:h},mixins:[y],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C=i("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1),V=i("hr",null,null,-1),W={class:"row justify-content-center"},N={class:"col-md-4 d-flex justify-content-center"};function x(t,e,A,D,P,p){const u=n("openwb-base-button-group-input"),b=n("font-awesome-icon"),_=n("openwb-base-click-button"),l=n("openwb-base-alert"),g=n("openwb-base-submit-buttons"),w=n("openwb-base-card");return r(),B("div",$,[i("form",z,[o(w,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:a(()=>[o(g,{formName:"dataProtectionForm",hideReset:!0,hideDefaults:!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:a(()=>[C,V,o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?c("",!0):(r(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:a(()=>[d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. "),i("div",W,[i("div",N,[o(_,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>p.sendSystemCommand("systemShutdown"))},{default:a(()=>[d(" Nicht akzeptieren und ausschalten "),o(b,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?c("",!0):(r(),m(l,{key:1,subtype:"warning"},{default:a(()=>[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")]),_:1}))]),_:1})])])}const U=v(S,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{U as default};
diff --git a/web/settings/assets/LoadManagementConfig-5e0d6325.js b/web/settings/assets/LoadManagementConfig-5e0d6325.js
deleted file mode 100644
index 0714a82347..0000000000
--- a/web/settings/assets/LoadManagementConfig-5e0d6325.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-71546160.js";import{C as V}from"./index-b0e5e618.js";import{S as $}from"./OpenwbSortableList-641f6bb4.js";import{_ as q,u as l,k as u,l as m,x as d,D as s,N as r,y as i,J as _,K as w,A as v,z as W}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";z.add(C,x);const Z={name:"OpenwbLoadManagementConfigView",mixins:[V],emits:["sendCommand"],components:{SortableList:$,FontAwesomeIcon:L},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("counter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},counterOptions(){var e=[];for(const t of Object.values(this.componentConfigurations))this.isComponentType(t.type,"counter")&&e.push({value:t.id,text:t.name});return e.sort((t,o)=>t.text==o.text?0:t.text>o.text?1:-1)},inverterConfigs:{get(){let e=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(e).filter(t=>e[t].type.includes("inverter")).reduce((t,o)=>({...t,[o]:e[o]}),{})}},hierarchyLabels:{get(){let e={};for(const t of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))e={...e,...this.getElementTreeNames(t)};return e}},getHcSourceIdOptions(){let e=[{value:null,text:"von openWB berechnen"}],t=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:e,groups:t}}},methods:{getElementTreeNames(e){let t={};if(e.type=="cp"){let o=this.getChargePoint(e.id);o&&(t[e.id]=o.name)}else{let o=this.getComponent(e.id);o&&(t[e.id]=o.name)}return e.children.forEach(o=>{t={...t,...this.getElementTreeNames(o)}}),t},getComponent(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/system/device/[0-9]+/component/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},getChargePoint(e){let t;return Object.keys(this.$store.state.mqtt).forEach(o=>{o.match("^openWB/chargepoint/"+e+"/config$")&&(t=this.$store.state.mqtt[o])}),t},isComponentType(e,t){return e.split("_").includes(t)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),O=d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1),F=d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),H=d("br",null,null,-1),N={key:0},P={key:1},T=d("br",null,null,-1),j=d("br",null,null,-1),K=d("br",null,null,-1);function I(e,t,o,R,G,c){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),g=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(g,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateState("openWB/counter/config/consider_less_charging",n))},{help:r(()=>[E,O]),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:c.getHcSourceIdOptions.options,groups:c.getHcSourceIdOptions.groups,"model-value":e.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:r(()=>[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),F,i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")]),_:1},8,["options","groups","model-value"]),s(f,null,{default:r(()=>[i(" Vorhandene Zählermodule ")]),_:1}),s(h,{subtype:"info"},{default:r(()=>[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),H,i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")]),_:1}),(u(!0),m(_,null,w(c.counterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+W(n.name),1)]),default:r(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,required:"",unit:"kW","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:r(()=>[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:r(()=>[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:r(()=>[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":e.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>e.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:r(()=>[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:r(()=>[i(" Vorhandene Wechselrichtermodule ")]),_:1}),(u(!0),m(_,null,w(c.inverterConfigs,n=>(u(),v(g,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:r(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+W(n.name),1)]),default:r(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":e.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>e.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:r(()=>[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(g,{title:"Struktur",collapsible:!0,collapsed:!0},{default:r(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",N,[s(h,{subtype:"info"},{default:r(()=>[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(u(),m("div",P,[s(S,{title:"Anordnung der Komponenten","model-value":e.$store.state.mqtt["openWB/counter/get/hierarchy"],"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateState("openWB/counter/get/hierarchy",n)),labels:c.hierarchyLabels},{help:r(()=>[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),T,i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),j,i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),K,i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")]),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{formName:"loadManagementConfigForm",onSave:t[3]||(t[3]=n=>e.$emit("save")),onReset:t[4]||(t[4]=n=>e.$emit("reset")),onDefaults:t[5]||(t[5]=n=>e.$emit("defaults"))})])])}const re=q(Z,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{re as default};
diff --git a/web/settings/assets/LoadManagementConfig-87715007.js b/web/settings/assets/LoadManagementConfig-87715007.js
new file mode 100644
index 0000000000..d5da3879a6
--- /dev/null
+++ b/web/settings/assets/LoadManagementConfig-87715007.js
@@ -0,0 +1 @@
+import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-41164876.js";import{C as V}from"./index-dc0e711f.js";import{S as $}from"./OpenwbSortableList-3ce7f991.js";import{_ as q,u as l,k as u,l as m,x as d,D as s,N as o,y as i,J as v,K as w,A as W,z as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";z.add(C,x);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:L},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("counter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,r)=>e.text==r.text?0:e.text>r.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("inverter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let r=this.getChargePoint(t.id);r&&(e[t.id]=r.name)}else{let r=this.getComponent(t.id);r&&(e[t.id]=r.name)}return t.children.forEach(r=>{e={...e,...this.getElementTreeNames(r)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},isComponentType(t,e){return t.split("_").includes(e)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E={key:0},O={key:1};function F(t,e,r,H,P,p){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),g=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/counter/config/consider_less_charging",n))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:p.getHcSourceIdOptions.options,groups:p.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(v,null,w(p.counterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(n.name),1)]),default:o(()=>[s(g,{title:"Maximale Leistung",min:1,step:1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[15]||(e[15]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(v,null,w(p.inverterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(n.name),1)]),default:o(()=>[s(g,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[16]||(e[16]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",E,[s(h,{subtype:"info"},{default:o(()=>e[17]||(e[17]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",O,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:p.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateState("openWB/counter/get/hierarchy",n))},{help:o(()=>e[18]||(e[18]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=n=>t.$emit("save")),onReset:e[4]||(e[4]=n=>t.$emit("reset")),onDefaults:e[5]||(e[5]=n=>t.$emit("defaults"))})])])}const Q=q(Z,[["render",F],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Q as default};
diff --git a/web/settings/assets/MqttBridgeConfig-4de54ead.js b/web/settings/assets/MqttBridgeConfig-4de54ead.js
deleted file mode 100644
index ba68cbcdaf..0000000000
--- a/web/settings/assets/MqttBridgeConfig-4de54ead.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as C,d as A,a0 as q,F as D}from"./vendor-fortawesome-71546160.js";import{C as z}from"./index-b0e5e618.js";import{_ as I,u as r,k as m,l as c,D as n,N as o,x as b,J as M,y as s,z as y,A as T,B as S,K as W,S as E,U as N}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";C.add(A,q);const P={name:"OpenwbMqttBridgeConfigurationView",mixins:[z],emits:["sendCommand"],components:{FontAwesomeIcon:D},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let e=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[u,g]of Object.entries(e))g.remote.is_openwb_cloud&&delete e[u];return e}}},methods:{addMqttBridge(e){e.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(e){return parseInt(e.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(e,u){u.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(e),this.showMqttBridgeModal=!0},removeMqttBridge(e,u){this.showMqttBridgeModal=!1,u=="confirm"&&(console.info("request removal of mqtt bridge '"+e+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:e}}))},getMqttBridgeName(e){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+e].name:e}}},_=e=>(E("data-v-1ec2f2f5"),e=e(),N(),e),Q={class:"mqttBridgeConfiguration"},Z=_(()=>b("br",null,null,-1)),F={key:0},L={key:1},$=["name"],O=_(()=>b("hr",null,null,-1)),j=_(()=>b("hr",null,null,-1));function R(e,u,g,J,f,i){const U=r("openwb-base-modal-dialog"),h=r("openwb-base-alert"),v=r("font-awesome-icon"),w=r("openwb-base-avatar"),p=r("openwb-base-text-input"),d=r("openwb-base-button-group-input"),V=r("openwb-base-heading"),B=r("openwb-base-number-input"),x=r("openwb-base-submit-buttons"),k=r("openwb-base-card");return m(),c(M,null,[n(U,{show:f.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:u[0]||(u[0]=l=>i.removeMqttBridge(f.modalMqttBridgeIndex,l))},{default:o(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(f.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),b("div",Q,[n(h,{subtype:"danger"},{default:o(()=>[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),Z,s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')]),_:1}),n(k,{title:"Konfigurierte MQTT-Brücken"},{actions:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(m(),T(w,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):S("",!0)]),default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(m(),c("div",F,[n(h,{subtype:"info"},{default:o(()=>[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(m(),c("div",L,[Object.keys(i.configuredMqttBridges).length===0?(m(),T(h,{key:0,subtype:"info"},{default:o(()=>[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")]),_:1})):S("",!0),(m(!0),c(M,null,W(i.configuredMqttBridges,(l,a)=>(m(),c("form",{key:a,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a)},[n(k,{title:l.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(()=>[n(w,{class:"bg-danger clickable",onClick:t=>i.removeMqttBridgeModal(a,t)},{default:o(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:o(()=>[n(x,{formName:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(a),hideDefaults:!0,onSave:t=>e.$emit("save",[a]),onReset:t=>e.$emit("reset",[a])},null,8,["formName","onSave","onReset"])]),default:o(()=>[n(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":l.name,"onUpdate:modelValue":t=>e.updateState(a,t,"name")},{help:o(()=>[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":l.active,"onUpdate:modelValue":t=>e.updateState(a,t,"active")},null,8,["model-value","onUpdate:modelValue"]),O,n(V,null,{default:o(()=>[s(" Einstellungen zur Verbindung ")]),_:1}),n(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":l.remote.host,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),n(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":l.remote.port,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":l.remote.username,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Passwort",subtype:"password",required:"","model-value":l.remote.password,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),n(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":l.remote.prefix,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.prefix")},{help:o(()=>[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":l.remote.client_id,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.client_id")},{help:o(()=>[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":l.remote.protocol,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),n(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":l.remote.tls_version,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.tls_version")},{help:o(()=>[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.remote.try_private,"onUpdate:modelValue":t=>e.updateState(a,t,"remote.try_private")},{help:o(()=>[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),j,n(V,null,{default:o(()=>[s("Datenübertragung")]),_:1}),n(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.status,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.status")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.graph,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.graph")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.data_transfer.configuration,"onUpdate:modelValue":t=>e.updateState(a,t,"data_transfer.configuration")},{help:o(()=>[s("ToDo...")]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,$))),128))]))]),_:1})])],64)}const ne=I(P,[["render",R],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{ne as default};
diff --git a/web/settings/assets/MqttBridgeConfig-a467e292.js b/web/settings/assets/MqttBridgeConfig-a467e292.js
new file mode 100644
index 0000000000..994d96e98c
--- /dev/null
+++ b/web/settings/assets/MqttBridgeConfig-a467e292.js
@@ -0,0 +1 @@
+import{l as x,d as C,a0 as A,F as q}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-dc0e711f.js";import{_ as D,u,k as m,l as b,D as o,N as a,x as f,J as k,y as s,z as y,A as M,B as T,K as W}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";x.add(C,A);const E={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&(console.info("request removal of mqtt bridge '"+t+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}}))},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},I={class:"mqttBridgeConfiguration"},P={key:0},Q={key:1},Z=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),_=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),w=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),V=u("openwb-base-card");return m(),b(k,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",I,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(V,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),M(_,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",P,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Q,[Object.keys(i.configuredMqttBridges).length===0?(m(),M(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(k,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(V,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(_,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,Z))),128))]))]),_:1})])],64)}const H=D(E,[["render",N],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{H as default};
diff --git a/web/settings/assets/OpenwbSortableList-3ce7f991.js b/web/settings/assets/OpenwbSortableList-3ce7f991.js
new file mode 100644
index 0000000000..7deb87bdec
--- /dev/null
+++ b/web/settings/assets/OpenwbSortableList-3ce7f991.js
@@ -0,0 +1 @@
+import{_ as b,a3 as C,u as i,k as a,A as u,N as H,x as n,q as g,D as _,B as m,y as h,z as w,l as f,m as L}from"./vendor-a21b3a62.js";import{l as y,a8 as N,K as O,P as S,O as x,N as q,F as v,f as B,a as A}from"./vendor-fortawesome-41164876.js";y.add(N,O,S,x,q);const E={name:"OpenwbNestedList",components:{draggable:C,FontAwesomeIcon:v},props:{list:{type:Object,required:!1,default:void 0},labels:{type:Object,required:!1,default:void 0}},methods:{classes(e){var t="";switch(e.type){case"bat":t+="battery";break;case"cp":t+="charge-point";break;default:t+=e.type;break}return t},getElementLabel(e){return this.labels&&e in this.labels?this.labels[e]:e},getElementIcon(e){switch(e.type){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"inverter":return["fas","solar-panel"];default:return}}}};function j(e,t,o,k,d,s){const c=i("font-awesome-icon"),p=i("openwb-nested-list",!0),r=i("draggable");return a(),u(r,{class:"dragArea w-100 mb-0",tag:"ul",list:o.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:H(({element:l})=>[n("li",null,[n("div",{class:g(["element-titel",s.classes(l)])},[n("span",null,[_(c,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(l)?(a(),u(c,{key:0,"fixed-width":"",icon:s.getElementIcon(l)},null,8,["icon"])):m("",!0),h(" "+w(s.getElementLabel(l.id)),1)])],2),_(p,{modelValue:l.children,"onUpdate:modelValue":V=>l.children=V,labels:o.labels},null,8,["modelValue","onUpdate:modelValue","labels"])])]),_:1},8,["list"])}const D=b(E,[["render",j],["__scopeId","data-v-82c9421a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbNestedList.vue"]]);y.add(B,A);const I={name:"OpenwbSortableList",components:{FontAwesomeIcon:v,OpenwbNestedList:D},props:{id:{type:String,required:!1,default:void 0},title:{type:String,required:!1,default:""},modelValue:{type:Array,required:!1,default:void 0},labels:{type:Object,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){console.debug("update in sortableList",e),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},U={class:"form-row mb-1"},W={class:"col-md-8"},z={class:"form-row"},F={key:1},P={key:0,class:"form-row alert alert-info my-1 small"};function Q(e,t,o,k,d,s){const c=i("font-awesome-icon"),p=i("openwb-nested-list");return a(),f("div",U,[n("label",{class:"col-md-4 col-form-label",onClick:t[0]||(t[0]=(...r)=>s.toggleHelp&&s.toggleHelp(...r))},[h(w(o.title)+" ",1),e.$slots.help?(a(),u(c,{key:0,icon:d.showHelp?["fas","question-circle"]:["far","question-circle"],class:g(d.showHelp?"text-info":"")},null,8,["icon","class"])):m("",!0)]),n("div",W,[n("div",z,[s.value!==void 0?(a(),u(p,{key:0,modelValue:s.value,"onUpdate:modelValue":t[1]||(t[1]=r=>s.value=r),labels:o.labels},null,8,["modelValue","labels"])):(a(),f("div",F," Warte auf Daten... "))]),d.showHelp?(a(),f("span",P,[L(e.$slots,"help")])):m("",!0)])])}const T=b(I,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbSortableList.vue"]]);export{T as S};
diff --git a/web/settings/assets/OpenwbSortableList-641f6bb4.js b/web/settings/assets/OpenwbSortableList-641f6bb4.js
deleted file mode 100644
index e8e314ba33..0000000000
--- a/web/settings/assets/OpenwbSortableList-641f6bb4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as f,a5 as O,u as i,k as a,A as u,N as C,x as o,q as g,D as b,B as _,y as h,z as w,l as m,m as H}from"./vendor-f2b8aa6f.js";import{l as y,a8 as L,K as N,P as S,O as x,N as B,F as v,f as E,a as A}from"./vendor-fortawesome-71546160.js";y.add(L,N,S,x,B);const j={name:"OpenwbNestedList",props:{list:{type:Object},labels:{type:Object}},components:{draggable:O,FontAwesomeIcon:v},methods:{classes(e){var t="";switch(e.type){case"bat":t+="battery";break;case"cp":t+="charge-point";break;default:t+=e.type;break}return t},getElementLabel(e){return this.labels&&e in this.labels?this.labels[e]:e},getElementIcon(e){switch(e.type){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"inverter":return["fas","solar-panel"];default:return}}}};function q(e,t,n,k,c,s){const d=i("font-awesome-icon"),p=i("openwb-nested-list",!0),r=i("draggable");return a(),u(r,{class:"dragArea w-100 mb-0",tag:"ul",list:n.list,group:{name:"g1"},"item-key":"id",handle:".handle"},{item:C(({element:l})=>[o("li",null,[o("div",{class:g(["element-titel",s.classes(l)])},[o("span",null,[b(d,{class:"handle","fixed-width":"",icon:["fas","arrows-alt"]}),s.getElementIcon(l)?(a(),u(d,{key:0,"fixed-width":"",icon:s.getElementIcon(l)},null,8,["icon"])):_("",!0),h(" "+w(s.getElementLabel(l.id)),1)])],2),b(p,{modelValue:l.children,"onUpdate:modelValue":V=>l.children=V,labels:n.labels},null,8,["modelValue","onUpdate:modelValue","labels"])])]),_:1},8,["list"])}const D=f(j,[["render",q],["__scopeId","data-v-82c9421a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbNestedList.vue"]]);y.add(E,A);const I={name:"OpenwbSortableList",props:{id:String,title:String,modelValue:Object,labels:{type:Object,default:void 0}},emits:["update:modelValue"],components:{FontAwesomeIcon:v,OpenwbNestedList:D},data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){console.debug("update in sortableList",e),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},U={class:"form-row mb-1"},W={class:"col-md-8"},z={class:"form-row"},F={key:1},P={key:0,class:"form-row alert alert-info my-1 small"};function Q(e,t,n,k,c,s){const d=i("font-awesome-icon"),p=i("openwb-nested-list");return a(),m("div",U,[o("label",{onClick:t[0]||(t[0]=(...r)=>s.toggleHelp&&s.toggleHelp(...r)),class:"col-md-4 col-form-label"},[h(w(n.title)+" ",1),e.$slots.help?(a(),u(d,{key:0,icon:c.showHelp?["fas","question-circle"]:["far","question-circle"],class:g(c.showHelp?"text-info":"")},null,8,["icon","class"])):_("",!0)]),o("div",W,[o("div",z,[s.value!==void 0?(a(),u(p,{key:0,modelValue:s.value,"onUpdate:modelValue":t[1]||(t[1]=r=>s.value=r),labels:n.labels},null,8,["modelValue","labels"])):(a(),m("div",F,"Warte auf Daten..."))]),c.showHelp?(a(),m("span",P,[H(e.$slots,"help")])):_("",!0)])])}const T=f(I,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbSortableList.vue"]]);export{T as S};
diff --git a/web/settings/assets/OptionalComponents-963feb73.js b/web/settings/assets/OptionalComponents-963feb73.js
deleted file mode 100644
index eb991d401d..0000000000
--- a/web/settings/assets/OptionalComponents-963feb73.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import{_ as $,C}from"./index-b0e5e618.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,X as z,Y as V,F as L}from"./vendor-fortawesome-71546160.js";import{_ as y,u as l,k as s,l as r,A as _,N as o,y as i,z as c,D as n,x as p,a2 as I,a3 as E,J as q,B as f}from"./vendor-f2b8aa6f.js";const F={emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},methods:{updateConfiguration(e,t=void 0){this.$emit("update:configuration",{value:e,object:t})}}},N=y(F,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),M={name:"DisplayThemeFallback",mixins:[N]},j={class:"display-theme-fallback"},x={key:1};function A(e,t,u,v,w,b){const d=l("openwb-base-alert"),m=l("openwb-base-textarea");return s(),r("div",j,[Object.keys(e.displayTheme.configuration).length==0?(s(),_(d,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+c(e.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),r("div",x,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+c(e.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(m,{title:"Konfiguration",subtype:"json","model-value":e.displayTheme.configuration,"onUpdate:modelValue":t[0]||(t[0]=g=>e.updateConfiguration(g,"configuration"))},{help:o(()=>[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[p("pre",null,c(JSON.stringify(e.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const P=y(M,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",emits:["update:configuration"],props:{displayTheme:{type:Object,required:!0}},components:{FontAwesomeIcon:L},computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-97f12f16.js"),["assets/displayTheme-97f12f16.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:P})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function H(e,t,u,v,w,b){const d=l("font-awesome-icon"),m=l("openwb-base-alert"),g=l("openwb-base-heading");return s(),r(q,null,[u.displayTheme.official?(s(),_(m,{key:0,subtype:"success"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+c(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),_(m,{key:1,subtype:"info"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+c(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+c(u.displayTheme.name)+'" ',1)]),_:1}),(s(),_(E(b.myComponent),{displayTheme:u.displayTheme,"onUpdate:configuration":t[0]||(t[0]=h=>b.updateConfiguration(h))},null,40,["displayTheme"]))],64)}const R=y(U,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",mixins:[C],components:{OpenwbDisplayThemeProxy:R},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let e=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(t=>{t.official===!0?e[0].options.push(t):e[1].options.push(t)}),e}},methods:{getIdFromTopic(e){return e.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(e=>{e[1]!==null&&(this.tempIdTagList[e[1]]=`${e[1]} (${e[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(e[0]))})`)}),this.tempIdTagList},getChargePointName(e){return this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+e+"/config"].name:"Ladepunkt "+e},getDisplayThemeDefaults(e){const t=this.displayThemeList.find(u=>u.value==e);return Object.prototype.hasOwnProperty.call(t,"defaults")?{...JSON.parse(JSON.stringify(t.defaults))}:(console.warn("no default configuration found for display theme type!",e),{})},updateSelectedDisplayTheme(e){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(e))},updateConfiguration(e,t){console.debug("updateConfiguration",e,t),this.updateState(e,t.value,t.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},X={key:1},Y=p("ul",null,[p("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),p("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),p("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1),Q={key:0},ee=p("br",null,null,-1),te=p("br",null,null,-1),ne=["innerHTML"],oe={key:0},ie=p("br",null,null,-1),ae=p("hr",null,null,-1),se={key:1},le=p("hr",null,null,-1),pe={key:2},re=p("hr",null,null,-1),de=p("hr",null,null,-1),ue={key:0};function me(e,t,u,v,w,b){const d=l("openwb-base-alert"),m=l("openwb-base-button-group-input"),g=l("openwb-base-textarea"),h=l("openwb-base-card"),T=l("openwb-base-heading"),B=l("openwb-base-range-input"),D=l("openwb-base-select-input"),W=l("openwb-display-theme-proxy"),k=l("openwb-base-submit-buttons");return s(),r("div",G,[p("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",Z,[n(d,{subtype:"info"},{default:o(()=>[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),r("div",X,[n(m,{title:"Identifikation aktivieren","model-value":e.$store.state.mqtt["openWB/optional/rfid/active"],"onUpdate:modelValue":t[0]||(t[0]=a=>e.updateState("openWB/optional/rfid/active",a)),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:o(()=>[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),Y]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),r("div",Q,[n(d,{subtype:"info",class:"mb-1"},{default:o(()=>[i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden."),ee,i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen."),te,p("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ne)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":b.idTagList.join(`
-`)},{help:o(()=>[i(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")]),_:1},8,["model-value"])])):f("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(m,{title:"Integriertes Display","model-value":e.$store.state.mqtt["openWB/optional/int_display/active"],"onUpdate:modelValue":t[1]||(t[1]=a=>e.updateState("openWB/optional/int_display/active",a)),buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},{help:o(()=>[i(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')]),_:1},8,["model-value"]),e.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),r("div",oe,[n(m,{title:"Orientierung","model-value":e.$store.state.mqtt["openWB/optional/int_display/rotation"],"onUpdate:modelValue":t[2]||(t[2]=a=>e.updateState("openWB/optional/int_display/rotation",a)),buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}]},{help:o(()=>[i(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),ie,i(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")]),_:1},8,["model-value"]),ae,n(T,null,{default:o(()=>[i(" Display Standby ")]),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":e.$store.state.mqtt["openWB/optional/int_display/standby"],"onUpdate:modelValue":t[3]||(t[3]=a=>e.updateState("openWB/optional/int_display/standby",a)),unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}]},{help:o(()=>[i(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")]),_:1},8,["model-value"])])):f("",!0),e.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",se,[le,n(d,{subtype:"info"},{default:o(()=>[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),r("div",pe,[re,n(m,{title:"Ladepunkte auf externen openWB","model-value":e.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],"onUpdate:modelValue":t[4]||(t[4]=a=>e.updateState("openWB/optional/int_display/only_local_charge_points",a)),buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}]},{help:o(()=>[i(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")]),_:1},8,["model-value"]),de,e.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),r("div",ue,[n(D,{class:"mb-2",title:"Theme des Displays",groups:b.displayThemeGroupList,"model-value":e.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":t[5]||(t[5]=a=>b.updateSelectedDisplayTheme(a))},{help:o(()=>[i(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")]),_:1},8,["groups","model-value"]),e.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),_(W,{key:0,displayTheme:e.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":t[6]||(t[6]=a=>b.updateConfiguration("openWB/optional/int_display/theme",a))},null,8,["displayTheme"])):f("",!0)])):f("",!0)]))]),_:1}),n(k,{formName:"optionalComponentsForm",onSave:t[7]||(t[7]=a=>e.$emit("save")),onReset:t[8]||(t[8]=a=>e.$emit("reset")),onDefaults:t[9]||(t[9]=a=>e.$emit("defaults"))})])])}const be=y(J,[["render",me],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]),fe=Object.freeze(Object.defineProperty({__proto__:null,default:be},Symbol.toStringTag,{value:"Module"}));export{N as D,fe as O};
diff --git a/web/settings/assets/OptionalComponents-be1b1295.js b/web/settings/assets/OptionalComponents-be1b1295.js
new file mode 100644
index 0000000000..e90ed0e50f
--- /dev/null
+++ b/web/settings/assets/OptionalComponents-be1b1295.js
@@ -0,0 +1,2 @@
+import{_ as C,C as S}from"./index-dc0e711f.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as z,X as V,Y as L,F as I}from"./vendor-fortawesome-41164876.js";import{_ as v,u as p,k as s,l as r,A as f,N as o,y as i,z as b,D as n,x as l,a0 as E,a1 as q,J as F,B as _}from"./vendor-a21b3a62.js";const M={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},T=v(M,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[T]},j={class:"display-theme-fallback"},A={key:1};function P(t,e,y,w,c,m){const d=p("openwb-base-alert"),u=p("openwb-base-textarea");return s(),r("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),f(d,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+b(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),r("div",A,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+b(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(u,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=g=>t.updateConfiguration(g,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[l("pre",null,b(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const U=v(N,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(V,L);const H={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:I},mixins:[T],computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),E({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>C(()=>import("./displayTheme-78ab078b.js"),["assets/displayTheme-78ab078b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:U})}}};function R(t,e,y,w,c,m){const d=p("font-awesome-icon"),u=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),r(F,null,[t.displayTheme.official?(s(),f(u,{key:0,subtype:"success"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+b(t.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),f(u,{key:1,subtype:"info"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+b(t.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+b(t.displayTheme.name)+'" ',1)]),_:1}),(s(),f(q(m.myComponent),{"display-theme":t.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>t.updateConfiguration(h))},null,40,["display-theme"]))],64)}const x=v(H,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:x},mixins:[S],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(y=>y.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},X={key:1},Y={key:0},Q=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,y,w,c,m){const d=p("openwb-base-alert"),u=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),B=p("openwb-base-heading"),D=p("openwb-base-range-input"),W=p("openwb-base-select-input"),k=p("openwb-display-theme-proxy"),$=p("openwb-base-submit-buttons");return s(),r("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",Z,[n(d,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",X,[n(u,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[11]||(e[11]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),r("div",Y,[n(d,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Q)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
+`)},{help:o(()=>e[16]||(e[16]=[i(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")])),_:1},8,["model-value"])])):_("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(u,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateState("openWB/optional/int_display/active",a))},{help:o(()=>e[17]||(e[17]=[i(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),r("div",ee,[n(u,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}],"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateState("openWB/optional/int_display/rotation",a))},{help:o(()=>e[18]||(e[18]=[i(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),l("br",null,null,-1),i(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")])),_:1},8,["model-value"]),e[21]||(e[21]=l("hr",null,null,-1)),n(B,null,{default:o(()=>e[19]||(e[19]=[i(" Display Standby ")])),_:1}),n(D,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}],"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateState("openWB/optional/int_display/standby",a))},{help:o(()=>e[20]||(e[20]=[i(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")])),_:1},8,["model-value"])])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",te,[e[23]||(e[23]=l("hr",null,null,-1)),n(d,{subtype:"info"},{default:o(()=>e[22]||(e[22]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",ne,[e[26]||(e[26]=l("hr",null,null,-1)),n(u,{title:"Ladepunkte auf externen openWB","model-value":t.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=a=>t.updateState("openWB/optional/int_display/only_local_charge_points",a))},{help:o(()=>e[24]||(e[24]=[i(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")])),_:1},8,["model-value"]),e[27]||(e[27]=l("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),r("div",oe,[n(W,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":e[5]||(e[5]=a=>m.updateSelectedDisplayTheme(a))},{help:o(()=>e[25]||(e[25]=[i(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")])),_:1},8,["groups","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),f(k,{key:0,"display-theme":t.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":e[6]||(e[6]=a=>m.updateConfiguration("openWB/optional/int_display/theme",a))},null,8,["display-theme"])):_("",!0)])):_("",!0)]))]),_:1}),n($,{"form-name":"optionalComponentsForm",onSave:e[7]||(e[7]=a=>t.$emit("save")),onReset:e[8]||(e[8]=a=>t.$emit("reset")),onDefaults:e[9]||(e[9]=a=>t.$emit("defaults"))})])])}const ae=v(J,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]),de=Object.freeze(Object.defineProperty({__proto__:null,default:ae},Symbol.toStringTag,{value:"Module"}));export{T as D,de as O};
diff --git a/web/settings/assets/PVChargeConfig-cce066fd.js b/web/settings/assets/PVChargeConfig-cce066fd.js
deleted file mode 100644
index 16b1a8eb91..0000000000
--- a/web/settings/assets/PVChargeConfig-cce066fd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as B}from"./index-b0e5e618.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-71546160.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as f,B as b}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",mixins:[B],components:{FontAwesomeIcon:y},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var h="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?h="export":e[0]===0&&e[1]===230?h="import":e[0]===-115&&e[1]===115?h="balanced":h="individual"),h},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},q={class:"pvChargeConfig"},M={name:"pvChargeConfigForm"},L={key:0},A={key:1},P=o("br",null,null,-1),R=o("br",null,null,-1),$=o("hr",null,null,-1),U=o("br",null,null,-1),F=o("br",null,null,-1),D=o("hr",null,null,-1),N=o("br",null,null,-1),I=o("br",null,null,-1),Z=o("hr",null,null,-1),O=o("br",null,null,-1),T=o("br",null,null,-1),G=o("br",null,null,-1),H=o("br",null,null,-1),J={key:0},j={key:1},K={key:0},Q={key:1},X=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1),Y={key:0},x=o("br",null,null,-1);function ee(n,e,h,ne,te,d){const m=g("openwb-base-alert"),p=g("openwb-base-button-group-input"),l=g("openwb-base-number-input"),_=g("openwb-base-card"),c=g("font-awesome-icon"),w=g("openwb-base-range-input"),v=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",q,[o("form",M,[i(_,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",A,[i(p,{title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}],modelValue:d.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>d.controlMode=t)},{help:a(()=>[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),P,r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),R,r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")]),_:1},8,["modelValue"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>[r(" Untere Grenze des Regelbereichs. ")]),_:1},8,["disabled","readonly","model-value"]),i(l,{disabled:d.controlMode!=="individual",readonly:d.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>[r("Obere Grenze des Regelbereichs.")]),_:1},8,["disabled","readonly","model-value"]),$,i(l,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),U,r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")]),_:1},8,["model-value"]),i(l,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),F,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")]),_:1},8,["model-value"]),D,i(l,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),N,r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")]),_:1},8,["model-value"]),i(l,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),I,r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")]),_:1},8,["model-value"]),Z,i(l,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),O,r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),T,r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),G,r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),H,r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",J,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",j,[i(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),i(_,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",K,[i(m,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(s(),u("div",Q,[i(p,{title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],modelValue:d.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>d.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(" Fahrzeuge ")]),"label-bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(" Speicher ")]),"label-min_soc_bat_mode":a(()=>[i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(" Mindest-SoC des Speichers ")]),help:a(()=>[X,o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","car-side"]}),r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. ')]),o("p",null,[r(' Bei Auswahl " '),i(c,{"fixed-width":"",icon:["fas","fa-battery-half"]}),r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. ')])]),_:1},8,["modelValue","model-value"]),d.batMode==="min_soc_bat_mode"?(s(),u("div",Y,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(v,null,{default:a(()=>[r("Speicher-SoC unterhalb Mindest-SoC")]),_:1}),i(p,{title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>[r("ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),x,r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),f(l,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["model-value"])):b("",!0),i(v,null,{default:a(()=>[r("Speicher-SoC oberhalb Mindest-SoC")]),_:1}),i(p,{title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>[r("Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet.")]),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),f(l,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["model-value"])):b("",!0)])):b("",!0)]))]),_:1}),i(W,{formName:"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const ge=E(C,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{ge as default};
diff --git a/web/settings/assets/PVChargeConfig-f08197ff.js b/web/settings/assets/PVChargeConfig-f08197ff.js
new file mode 100644
index 0000000000..eb24c754d8
--- /dev/null
+++ b/web/settings/assets/PVChargeConfig-f08197ff.js
@@ -0,0 +1 @@
+import{C as B}from"./index-dc0e711f.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-41164876.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as _,B as v}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[B],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},q={class:"pvChargeConfig"},M={name:"pvChargeConfigForm"},L={key:0},A={key:1},P={key:0},R={key:1},$={key:0},U={key:1},F={key:0};function D(n,e,p,N,I,l){const b=g("openwb-base-alert"),h=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),c=g("openwb-base-card"),m=g("font-awesome-icon"),w=g("openwb-base-range-input"),f=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",q,[o("form",M,[i(c,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(b,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",A,[i(h,{modelValue:l.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>l.controlMode=t),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[22]||(e[22]=[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>e[23]||(e[23]=[r(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>e[24]||(e[24]=[r(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>e[25]||(e[25]=[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>e[26]||(e[26]=[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[31]||(e[31]=o("hr",null,null,-1)),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>e[27]||(e[27]=[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),o("br",null,null,-1),r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>e[28]||(e[28]=[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[32]||(e[32]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>e[29]||(e[29]=[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",P,[i(b,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",R,[i(h,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>e[34]||(e[34]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",$,[i(b,{subtype:"info"},{default:a(()=>e[35]||(e[35]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",U,[i(h,{modelValue:l.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>l.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[36]||(e[36]=r(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[37]||(e[37]=r(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[38]||(e[38]=r(" Mindest-SoC des Speichers "))]),help:a(()=>[e[45]||(e[45]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[39]||(e[39]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[40]||(e[40]=r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[41]||(e[41]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[42]||(e[42]=r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[43]||(e[43]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[44]||(e[44]=r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue","model-value"]),l.batMode==="min_soc_bat_mode"?(s(),u("div",F,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(f,null,{default:a(()=>e[46]||(e[46]=[r(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>e[47]||(e[47]=[r(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),_(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["model-value"])):v("",!0),i(f,null,{default:a(()=>e[48]||(e[48]=[r(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>e[49]||(e[49]=[r(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),_(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["model-value"])):v("",!0)])):v("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const K=E(C,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{K as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-6d89b998.js b/web/settings/assets/ScheduledChargeConfig-6d89b998.js
new file mode 100644
index 0000000000..7b8329eedf
--- /dev/null
+++ b/web/settings/assets/ScheduledChargeConfig-6d89b998.js
@@ -0,0 +1 @@
+import{C as h}from"./index-dc0e711f.js";import{_ as b,u as o,k as i,l as u,x as l,D as s,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[h],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},c={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const g=o("openwb-base-alert"),d=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return i(),u("div",c,[l("form",f,[s(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[s(g,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[s(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"]),e[8]||(e[8]=l("hr",null,null,-1)),s(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(p,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const E=b(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-a25b4908.js b/web/settings/assets/ScheduledChargeConfig-a25b4908.js
deleted file mode 100644
index d62b6cbadb..0000000000
--- a/web/settings/assets/ScheduledChargeConfig-a25b4908.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./index-b0e5e618.js";import{_ as c,u as s,k as i,l as u,x as l,D as o,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[p],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},b={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1},k=l("hr",null,null,-1);function C(t,e,V,B,$,z){const g=s("openwb-base-alert"),d=s("openwb-base-button-group-input"),m=s("openwb-base-card"),h=s("openwb-base-submit-buttons");return i(),u("div",b,[l("form",f,[o(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[o(g,{subtype:"info"},{default:a(()=>[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(i(),u("div",w,[o(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"]),k,o(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),o(h,{formName:"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const y=c(_,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{y as default};
diff --git a/web/settings/assets/Status-425f485b.js b/web/settings/assets/Status-425f485b.js
new file mode 100644
index 0000000000..4ba5cd0cd7
--- /dev/null
+++ b/web/settings/assets/Status-425f485b.js
@@ -0,0 +1 @@
+import{C as y}from"./index-dc0e711f.js";import{l as w,K as S,F as x,L as k,M as C,c as q,N as z,O as $,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-41164876.js";import{_ as W,u as o,k as r,A as l,N as d,D as n,y as p,z as f,x as v,B as T,l as I,J as P,K as L}from"./vendor-a21b3a62.js";import{C as H,p as Z,a as K,L as F,b as J,P as G,c as Q,T as U,i as X,d as Y,e as ee}from"./vendor-chartjs-5fa56b74.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";w.add(S);const te={name:"ChargePointSumCard",components:{FontAwesomeIcon:x},mixins:[y]};function ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-text-input"),c=o("openwb-base-heading"),u=o("openwb-base-card");return r(),l(u,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),t[0]||(t[0]=p(" Alle Ladepunkte "))]),default:d(()=>[n(m,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[1]||(t[1]=[p("Historie")])),_:1}),n(m,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const oe=W(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,q,S);const ae={name:"ChargePointCard",components:{FontAwesomeIcon:x},mixins:[y],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}};function re(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-checkbox-input"),u=o("openwb-base-text-input"),_=o("openwb-base-heading"),B=o("openwb-base-card");return r(),l(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),p(" "+f(a.installedChargePoint.name)+" (ID: "+f(s.chargePointIndex)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(m,{subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/state_str"]),1)]),_:1}),n(c,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),n(c,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),n(u,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/current",2)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[4]||(t[4]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[5]||(t[5]=[p("Phasen")])),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),l(u,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+s.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(r(),l(u,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),n(u,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const se=W(ae,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,q,z);const le={name:"CounterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{counter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ie(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-card");return r(),l(_,{subtype:"danger",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","gauge-high"]}),p(" "+f(a.counter.name)+" (ID: "+f(a.counter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]!=null?(r(),l(m,{key:0,subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]),1)]),_:1})):T("",!0),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Zählerstände")])),_:1}),n(u,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/frequency",3)},null,8,["model-value"]),n(c,null,{default:d(()=>t[6]||(t[6]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const ue=W(le,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,q,$);const pe={name:"InverterSumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function de(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),t[0]||(t[0]=p(" Alle Wechselrichter "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[3]||(t[3]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ce=W(pe,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,q,$);const me={name:"InverterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{inverter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ge(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),p(" "+f(a.inverter.name)+" (ID: "+f(a.inverter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[2]||(t[2]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const fe=W(me,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,q,A);const be={name:"BatterySumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function _e(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),t[0]||(t[0]=p(" Alle Speicher "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Tageswerte")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const he=W(be,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,q,A);const ve={name:"BatteryCard",components:{FontAwesomeIcon:x},mixins:[y],props:{battery:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ye(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),p(" "+f(a.battery.name)+" (ID: "+f(a.battery.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Aktuelle Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/soc"]},null,8,["model-value"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const We=W(ve,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,q,E);const we={name:"RippleControlReceiverCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}};function xe(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(r(),l(u,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{icon:["fas","tower-broadcast"]}),t[0]||(t[0]=p(" Steuerbare Verbrauchseinrichtung (RSE) "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):T("",!0)}const Be=W(we,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,q,M);const ke={name:"VehicleCard",components:{FontAwesomeIcon:x},mixins:[y],props:{vehicle:{type:Object,required:!1,default:void 0},vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}};function Ce(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-number-input"),_=o("openwb-base-text-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car"]}),p(" "+f(a.vehicleName)+" (ID: "+f(s.vehicleIndex)+") ",1)]),default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]!==void 0?(r(),l(m,{key:0,subtype:g.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):T("",!0),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Fahrzeugdaten")])),_:1}),n(u,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/soc"]},null,8,["model-value"]),n(u,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":s.socRange},null,8,["model-value"]),n(_,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":s.socTimestamp},null,8,["model-value"])]),_:1})}const qe=W(ke,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,q,V);H.register(Z,K,F,J,G,Q,U,X,Y);const Te={name:"ElectricityTariffCard",components:{ChartjsLine:ee,FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],t=[];for(const[g,s]of Object.entries(e))t.push({timestamp:g*1e3,price:s*1e5});const b=t.slice(-1)[0];t.push({timestamp:b.timestamp+(60*60-1)*1e3,price:b.price})}const a=this.chartDatasets;return a.datasets[0].data=t,a}}},Ie={class:"openwb-chart"};function Ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("chartjs-line"),_=o("openwb-base-card");return s.electricityTariffConfigured?(r(),l(_,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","ranking-star"]}),t[0]||(t[0]=p(" Variabler Stromtarif "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ie,[s.chartDataRead?(r(),l(u,{key:0,ref:"myChart",data:s.chartDataObject,options:g.chartOptions},null,8,["data","options"])):T("",!0)])]),_:1})):T("",!0)}const Pe=W(Te,[["render",Ne],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Le={name:"OpenwbStatusView",components:{ChargePointSumCard:oe,ChargePointCard:se,CounterCard:ue,InverterSumCard:ce,InverterCard:fe,BatterySumCard:he,BatteryCard:We,RippleControlReceiverCard:Be,VehicleCard:qe,ElectricityTariffCard:Pe},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),t={};for(const[a,b]of Object.entries(e))(b.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(t[a]=b);return t}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,t){return Object.keys(e).filter(a=>e[a].type.includes(t)).reduce((a,b)=>({...a,[b]:e[b]}),{})}}},Se={class:"status"};function $e(e,t,a,b,g,s){const i=o("charge-point-sum-card"),m=o("charge-point-card"),c=o("counter-card"),u=o("inverter-sum-card"),_=o("inverter-card"),B=o("battery-sum-card"),O=o("battery-card"),j=o("vehicle-card"),D=o("electricity-tariff-card"),R=o("ripple-control-receiver-card");return r(),I("div",Se,[s.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(i,{key:0})):T("",!0),(r(!0),I(P,null,L(s.installedChargePoints,(h,N)=>(r(),l(m,{key:N,"installed-charge-point":h,"installed-charge-point-key":N},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(r(!0),I(P,null,L(s.counterConfigs,h=>(r(),l(c,{key:h.id,counter:h},null,8,["counter"]))),128)),s.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(u,{key:1})):T("",!0),(r(!0),I(P,null,L(s.inverterConfigs,h=>(r(),l(_,{key:h.id,inverter:h},null,8,["inverter"]))),128)),s.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(B,{key:2})):T("",!0),(r(!0),I(P,null,L(s.batteryConfigs,h=>(r(),l(O,{key:h.id,battery:h},null,8,["battery"]))),128)),(r(!0),I(P,null,L(s.vehicleNames,(h,N)=>(r(),l(j,{key:N,"vehicle-key":N,"vehicle-name":h},null,8,["vehicle-key","vehicle-name"]))),128)),n(D),n(R)])}const He=W(Le,[["render",$e],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{He as default};
diff --git a/web/settings/assets/Status-f1da0c38.js b/web/settings/assets/Status-f1da0c38.js
deleted file mode 100644
index b2375178cf..0000000000
--- a/web/settings/assets/Status-f1da0c38.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as y}from"./index-b0e5e618.js";import{l as w,K as L,F as x,L as k,M as C,c as T,N as z,O as S,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-71546160.js";import{_ as W,u as n,k as a,A as s,N as u,D as t,y as c,z as g,x as v,B as q,S as H,U as Z,l as I,J as P,K as $}from"./vendor-f2b8aa6f.js";import{C as K,p as F,a as J,L as U,b as G,P as Q,c as X,T as Y,i as ee,d as te,e as ne}from"./vendor-chartjs-35992f4a.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-luxon-8ddd27a0.js";w.add(L);const oe={name:"ChargePointSumCard",mixins:[y],components:{FontAwesomeIcon:x}};function ae(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-text-input"),d=n("openwb-base-heading"),i=n("openwb-base-card");return a(),s(i,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" Alle Ladepunkte ")]),default:u(()=>[t(p,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Historie")]),_:1}),t(p,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(p,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const re=W(oe,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,T,L);const se={name:"ChargePointCard",mixins:[y],components:{FontAwesomeIcon:x},props:{installedChargePointKey:String,installedChargePoint:Object},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}},le=v("br",null,null,-1),ie=v("br",null,null,-1);function ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-checkbox-input"),i=n("openwb-base-text-input"),f=n("openwb-base-heading"),B=n("openwb-base-card");return a(),s(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","charging-station"]}),c(" "+g(o.installedChargePoint.name)+" (ID: "+g(r.chargePointIndex)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),le,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(p,{subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),ie,c(" "+g(e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/state_str"]),1)]),_:1}),t(d,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),t(d,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+r.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),t(i,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/current",2)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),t(f,null,{default:u(()=>[c("Phasen")]),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(a(),s(i,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+r.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(a(),s(i,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),t(i,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+r.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const ue=W(se,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,T,z);const de={name:"CounterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{counter:Object},data(){return{statusLevel:["success","warning","danger"]}}},pe=v("br",null,null,-1),me=v("br",null,null,-1);function ge(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-card");return a(),s(f,{subtype:"danger",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","gauge-high"]}),c(" "+g(o.counter.name)+" (ID: "+g(o.counter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),pe,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]!=null?(a(),s(p,{key:0,subtype:"info"},{default:u(()=>[c(" Statusmeldung:"),me,c(" "+g(e.$store.state.mqtt["openWB/counter/"+o.counter.id+"/get/state_str"]),1)]),_:1})):q("",!0),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+o.counter.id+"/get/frequency",3)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Werte pro Phase")]),_:1}),t(i,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/voltages",1)},null,8,["model-value"]),t(i,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/currents",2)},null,8,["model-value"]),t(i,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),t(i,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+o.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const _e=W(de,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,T,S);const he={name:"InverterSumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},fe=v("br",null,null,-1);function be(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" Alle Wechselrichter ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),fe,c(" "+g(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ve=W(he,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,T,S);const ye={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{inverter:Object},data(){return{statusLevel:["success","warning","danger"]}}},We=v("br",null,null,-1);function we(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-heading"),f=n("openwb-base-card");return a(),s(f,{subtype:"success",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","solar-panel"]}),c(" "+g(o.inverter.name)+" (ID: "+g(o.inverter.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),We,c(" "+g(e.$store.state.mqtt["openWB/pv/"+o.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(i,null,{default:u(()=>[c("Erträge")]),_:1}),t(d,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),t(d,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+o.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const xe=W(ye,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,T,A);const Be={name:"BatterySumCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{statusLevel:["success","warning","danger"]}}},ke=v("br",null,null,-1);function Ce(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" Alle Speicher ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),ke,c(" "+g(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Tageswerte")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Saldierte Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const Te=W(Be,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,T,A);const qe={name:"InverterCard",mixins:[y],components:{FontAwesomeIcon:x},props:{battery:Object},data(){return{statusLevel:["success","warning","danger"]}}},Ie=v("br",null,null,-1);function Ne(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-text-input"),f=n("openwb-base-number-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car-battery"]}),c(" "+g(o.battery.name)+" (ID: "+g(o.battery.id)+") ",1)]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Ie,c(" "+g(e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,null,{default:u(()=>[c("Aktuelle Werte")]),_:1}),t(i,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),t(f,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+o.battery.id+"/get/soc"]},null,8,["model-value"]),t(d,null,{default:u(()=>[c("Zählerstände")]),_:1}),t(i,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),t(i,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+o.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const Pe=W(qe,[["render",Ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,T,E);const $e={name:"RippleControlReceiverCard",mixins:[y],components:{FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}},Le=v("br",null,null,-1);function Se(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(a(),s(i,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{icon:["fas","tower-broadcast"]}),c(" Steuerbare Verbrauchseinrichtung (RSE) ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Le,c(" "+g(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):q("",!0)}const Ae=W($e,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,T,M);const Oe={name:"VehicleCard",mixins:[y],components:{FontAwesomeIcon:x},props:{vehicle:Object,vehicleKey:String,vehicleName:String},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}},je=v("br",null,null,-1);function De(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-heading"),i=n("openwb-base-number-input"),f=n("openwb-base-text-input"),B=n("openwb-base-card");return a(),s(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","car"]}),c(" "+g(o.vehicleName)+" (ID: "+g(r.vehicleIndex)+") ",1)]),default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]!==void 0?(a(),s(p,{key:0,subtype:m.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),je,c(" "+g(e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):q("",!0),t(d,null,{default:u(()=>[c("Fahrzeugdaten")]),_:1}),t(i,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+r.vehicleIndex+"/get/soc"]},null,8,["model-value"]),t(i,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":r.socRange},null,8,["model-value"]),t(f,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":r.socTimestamp},null,8,["model-value"])]),_:1})}const Re=W(Oe,[["render",De],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,T,V);K.register(F,J,U,G,Q,X,Y,ee,te);const ze={name:"ElectricityTariffCard",mixins:[y],components:{ChartjsLine:ne,FontAwesomeIcon:x},data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],_=[];for(const[m,r]of Object.entries(e))_.push({timestamp:m*1e3,price:r*1e5});const h=_.slice(-1)[0];_.push({timestamp:h.timestamp+(60*60-1)*1e3,price:h.price})}const o=this.chartDatasets;return o.datasets[0].data=_,o}}},Ee=e=>(H("data-v-f4769d2f"),e=e(),Z(),e),Me=Ee(()=>v("br",null,null,-1)),Ve={class:"openwb-chart"};function He(e,_,o,h,m,r){const l=n("font-awesome-icon"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),i=n("chartjs-line"),f=n("openwb-base-card");return r.electricityTariffConfigured?(a(),s(f,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:u(()=>[t(l,{"fixed-width":"",icon:["fas","ranking-star"]}),c(" Variabler Stromtarif ")]),default:u(()=>[t(p,{subtype:m.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:u(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(a(),s(l,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(a(),s(l,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(a(),s(l,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),c(" Modulmeldung:"),Me,c(" "+g(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),t(d,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ve,[r.chartDataRead?(a(),s(i,{key:0,ref:"myChart",data:r.chartDataObject,options:m.chartOptions},null,8,["data","options"])):q("",!0)])]),_:1})):q("",!0)}const Ze=W(ze,[["render",He],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Ke={name:"OpenwbStatusView",mixins:[y],components:{ChargePointSumCard:re,ChargePointCard:ue,CounterCard:_e,InverterSumCard:ve,InverterCard:xe,BatterySumCard:Te,BatteryCard:Pe,RippleControlReceiverCard:Ae,VehicleCard:Re,ElectricityTariffCard:Ze},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),_={};for(const[o,h]of Object.entries(e))(h.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(_[o]=h);return _}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,_){return Object.keys(e).filter(o=>e[o].type.includes(_)).reduce((o,h)=>({...o,[h]:e[h]}),{})}}},Fe={class:"status"};function Je(e,_,o,h,m,r){const l=n("charge-point-sum-card"),p=n("charge-point-card"),d=n("counter-card"),i=n("inverter-sum-card"),f=n("inverter-card"),B=n("battery-sum-card"),O=n("battery-card"),j=n("vehicle-card"),D=n("electricity-tariff-card"),R=n("ripple-control-receiver-card");return a(),I("div",Fe,[r.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(l,{key:0})):q("",!0),(a(!0),I(P,null,$(r.installedChargePoints,(b,N)=>(a(),s(p,{key:N,installedChargePoint:b,installedChargePointKey:N},null,8,["installedChargePoint","installedChargePointKey"]))),128)),(a(!0),I(P,null,$(r.counterConfigs,b=>(a(),s(d,{key:b.id,counter:b},null,8,["counter"]))),128)),r.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(i,{key:1})):q("",!0),(a(!0),I(P,null,$(r.inverterConfigs,b=>(a(),s(f,{key:b.id,inverter:b},null,8,["inverter"]))),128)),r.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(a(),s(B,{key:2})):q("",!0),(a(!0),I(P,null,$(r.batteryConfigs,b=>(a(),s(O,{key:b.id,battery:b},null,8,["battery"]))),128)),(a(!0),I(P,null,$(r.vehicleNames,(b,N)=>(a(),s(j,{key:N,vehicleKey:N,vehicleName:b},null,8,["vehicleKey","vehicleName"]))),128)),t(D),t(R)])}const at=W(Ke,[["render",Je],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{at as default};
diff --git a/web/settings/assets/Support-5eca5ed7.js b/web/settings/assets/Support-5eca5ed7.js
deleted file mode 100644
index eab5d1649a..0000000000
--- a/web/settings/assets/Support-5eca5ed7.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import{l as S,g as D,F as V}from"./vendor-fortawesome-71546160.js";import{C as W}from"./index-b0e5e618.js";import{_ as A,u as d,k as h,l as f,x as r,A as _,N as t,D as s,a4 as C,B as k,y as e,q as F}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";S.add(D);const z={name:"OpenwbSupportView",mixins:[W],emits:["sendCommand"],components:{FontAwesomeIcon:V},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var p,m;if(this.components!==void 0)return this.components;let i="";const o=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const n of Object.values(o)){const u=n.id,a=((p=n.info)==null?void 0:p.manufacturer)||"N/A",c=((m=n.info)==null?void 0:m.model)||"N/A";i+=`(${u}) Hersteller: ${a}, Modell: ${c}
-`}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const o=this.getWildcardTopics("openWB/vehicle/+/info");for(const[p,m]of Object.entries(o)){const n=parseInt(p.split("/")[2]);if(n!==0){const u=m.manufacturer||"N/A",a=m.model||"N/A";i+=`(${n}) Hersteller: ${u}, Modell: ${a}
-`}}return i.trim()}}},x={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T=r("li",null,' Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist. ',-1),M=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1),H=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1),E=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1),K=r("br",null,null,-1),L=r("br",null,null,-1),U=r("br",null,null,-1),j={class:"row justify-content-center"};function $(i,o,p,m,n,u){const a=d("router-link"),c=d("openwb-base-alert"),w=d("FontAwesomeIcon"),g=d("openwb-base-text-input"),b=d("openwb-base-textarea"),v=d("openwb-base-click-button"),y=d("openwb-base-card"),B=d("font-awesome-icon");return h(),f("div",x,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(h(),_(c,{key:0,subtype:"danger"},{default:t(()=>[e(" Du musst der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zustimmen, um einen Systembericht senden zu können. ")]),_:1})):(h(),f("div",I,[s(c,{subtype:"success"},{default:t(()=>[e(" Du hast der "),s(a,{to:"/System/LegalSettings"},{default:t(()=>[e(" Datenschutzerklärung ")]),_:1}),e(" zugestimmt und kannst Systemberichte senden. ")]),_:1}),s(y,{title:"Systembericht"},C({default:t(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(h(),f("div",N,[s(c,{subtype:"info"},{default:t(()=>[r("ul",null,[r("li",null,[e(" Lies bitte den Hilfetext, der durch Klick auf das "),s(w,{icon:["far","question-circle"]}),e(" angezeigt wird. Nimm das Wiki zur Hilfe. ")]),T,M,H,E])]),_:1}),s(g,{title:"E-Mail",required:"",subtype:"email",modelValue:n.email,"onUpdate:modelValue":o[0]||(o[0]=l=>n.email=l)},{help:t(()=>[e(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")]),_:1},8,["modelValue"]),s(g,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":o[1]||(o[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:t(()=>[e(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),K,e(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")]),_:1},8,["model-value"]),s(b,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":u.installedComponents,"onUpdate:modelValue":o[2]||(o[2]=l=>n.components=l)},{help:t(()=>[e(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind."),L,s(a,{to:"/HardwareInstallation"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":u.vehicleInfo,"onUpdate:modelValue":o[3]||(o[3]=l=>n.vehicles=l)},{help:t(()=>[e(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr)."),U,s(a,{to:"/VehicleConfiguration"},{default:t(()=>[e(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")]),_:1})]),_:1},8,["model-value"]),s(b,{title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500",modelValue:n.message,"onUpdate:modelValue":o[4]||(o[4]=l=>n.message=l)},null,8,["modelValue"])])):k("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[r("div",j,[s(v,{class:F(["col-4",n.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!n.enableSendDebugButton,onButtonClicked:u.sendDebugMessage},{default:t(()=>[e(" Absenden ")]),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),n.enableSendDebugButton?k("",!0):(h(),_(c,{key:0,subtype:"success"},{default:t(()=>[e(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. "),s(B,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const X=A(z,[["render",$],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{X as default};
diff --git a/web/settings/assets/Support-9ecadb2d.js b/web/settings/assets/Support-9ecadb2d.js
new file mode 100644
index 0000000000..9f60a51c74
--- /dev/null
+++ b/web/settings/assets/Support-9ecadb2d.js
@@ -0,0 +1,3 @@
+import{l as D,g as V,F as W}from"./vendor-fortawesome-41164876.js";import{C as A}from"./index-dc0e711f.js";import{_ as C,u,k as f,l as c,x as r,A as k,N as s,D as o,a2 as F,B as w,y as n,q as z}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[A],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p}
+`}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const e=this.getWildcardTopics("openWB/vehicle/+/info");for(const[b,m]of Object.entries(e)){const t=parseInt(b.split("/")[2]);if(t!==0){const a=m.manufacturer||"N/A",d=m.model||"N/A";i+=`(${t}) Hersteller: ${a}, Modell: ${d}
+`}}return i.trim()}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},_={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T={class:"row justify-content-center"};function M(i,e,b,m,t,a){const d=u("router-link"),p=u("openwb-base-alert"),v=u("FontAwesomeIcon"),h=u("openwb-base-text-input"),g=u("openwb-base-textarea"),y=u("openwb-base-click-button"),B=u("openwb-base-card"),S=u("font-awesome-icon");return f(),c("div",_,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(f(),k(p,{key:0,subtype:"danger"},{default:s(()=>[e[6]||(e[6]=n(" Du musst der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[5]||(e[5]=[n(" Datenschutzerklärung ")])),_:1}),e[7]||(e[7]=n(" zustimmen, um einen Systembericht senden zu können. "))]),_:1})):(f(),c("div",I,[o(p,{subtype:"success"},{default:s(()=>[e[9]||(e[9]=n(" Du hast der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[8]||(e[8]=[n(" Datenschutzerklärung ")])),_:1}),e[10]||(e[10]=n(" zugestimmt und kannst Systemberichte senden. "))]),_:1}),o(B,{title:"Systembericht"},F({default:s(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(f(),c("div",N,[o(p,{subtype:"info"},{default:s(()=>[r("ul",null,[r("li",null,[e[11]||(e[11]=n(" Lies bitte den Hilfetext, der durch Klick auf das ")),o(v,{icon:["far","question-circle"]}),e[12]||(e[12]=n(" angezeigt wird. Nimm das Wiki zur Hilfe. "))]),e[13]||(e[13]=r("li",null,' Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist. ',-1)),e[14]||(e[14]=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1)),e[15]||(e[15]=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1)),e[16]||(e[16]=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1))])]),_:1}),o(h,{modelValue:t.email,"onUpdate:modelValue":e[0]||(e[0]=l=>t.email=l),title:"E-Mail",required:"",subtype:"email"},{help:s(()=>e[17]||(e[17]=[n(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")])),_:1},8,["modelValue"]),o(h,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:s(()=>e[18]||(e[18]=[n(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),r("br",null,null,-1),n(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")])),_:1},8,["model-value"]),o(g,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":a.installedComponents,"onUpdate:modelValue":e[2]||(e[2]=l=>t.components=l)},{help:s(()=>[e[20]||(e[20]=n(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind.")),e[21]||(e[21]=r("br",null,null,-1)),o(d,{to:"/HardwareInstallation"},{default:s(()=>e[19]||(e[19]=[n(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":a.vehicleInfo,"onUpdate:modelValue":e[3]||(e[3]=l=>t.vehicles=l)},{help:s(()=>[e[23]||(e[23]=n(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr).")),e[24]||(e[24]=r("br",null,null,-1)),o(d,{to:"/VehicleConfiguration"},{default:s(()=>e[22]||(e[22]=[n(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{modelValue:t.message,"onUpdate:modelValue":e[4]||(e[4]=l=>t.message=l),title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500"},null,8,["modelValue"])])):w("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[r("div",T,[o(y,{class:z(["col-4",t.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!t.enableSendDebugButton,onButtonClicked:a.sendDebugMessage},{default:s(()=>e[25]||(e[25]=[n(" Absenden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),t.enableSendDebugButton?w("",!0):(f(),k(p,{key:0,subtype:"success"},{default:s(()=>[e[26]||(e[26]=n(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. ")),o(S,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const G=C(x,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{G as default};
diff --git a/web/settings/assets/System-8e218ae4.js b/web/settings/assets/System-8e218ae4.js
new file mode 100644
index 0000000000..5ee2703983
--- /dev/null
+++ b/web/settings/assets/System-8e218ae4.js
@@ -0,0 +1 @@
+import{l as W,ae as A,p as q,a3 as C,U as S,af as z,F as U}from"./vendor-fortawesome-41164876.js";import{C as x}from"./index-dc0e711f.js";import{_ as E,u as b,k as c,l as h,A as _,N as a,B as w,x as r,D as t,y as i,q as B,J as $,K as F,z as j}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";W.add(A,q,C,S,z);const D={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[x],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getBranchGroups(){const n="Release",e="Beta",u="master",v=[n,e],p=(l,d)=>l.value==d.value?0:l.value==n?-1:d.value==n?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var m=0;for(const[l,d]of Object.entries(o))v.includes(l)?m=0:l==u?m=1:m=2,f[m].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(p),f[1].options.sort(p)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var n=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(n!==void 0)for(const[u,v]of Object.entries(n))e.unshift({value:u,text:v});return e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},T={class:"system"},L={key:1},N={name:"versionInfoForm"},R={class:"missing-commits"},Z={class:"row justify-content-center"},I={class:"col-md-4 d-flex py-1 justify-content-center"},O={class:"col-md-4 d-flex py-1 justify-content-center"},P={key:0,name:"powerForm"},G={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={key:1,name:"releaseChangeForm"},M={class:"row justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"};function X(n,e,u,v,p,o){const f=b("openwb-base-button-group-input"),m=b("openwb-base-alert"),l=b("openwb-base-text-input"),d=b("openwb-base-card"),g=b("font-awesome-icon"),y=b("openwb-base-click-button"),k=b("openwb-base-select-input");return c(),h("div",T,[u.installAssistantActive?w("",!0):(c(),_(m,{key:0,subtype:"danger"},{default:a(()=>[e[12]||(e[12]=r("h2",null,"Achtung!",-1)),e[13]||(e[13]=r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=s=>p.warningAcknowledged=s),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),h("div",L,[r("form",N,[t(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",Z,[r("div",I,[t(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=s=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[e[16]||(e[16]=i(" Informationen aktualisieren ")),t(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",O,[t(y,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=s=>o.systemUpdate())},{default:a(()=>[e[17]||(e[17]=i(" Update ")),t(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=s=>n.$store.state.mqtt["openWB/system/current_branch"]=s),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=s=>n.$store.state.mqtt["openWB/system/version"]=s),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=s=>n.$store.state.mqtt["openWB/system/current_commit"]=s),title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=s=>n.$store.state.mqtt["openWB/system/current_branch_commit"]=s),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),o.updateAvailable?(c(),_(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",R,[(c(!0),h($,null,F(n.$store.state.mqtt["openWB/system/current_missing_commits"],(s,V)=>(c(),h("li",{key:V},j(s),1))),128))])]),_:1})):w("",!0),t(m,{subtype:"danger"},{default:a(()=>e[14]||(e[14]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),n.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),_(m,{key:1,subtype:"danger"},{default:a(()=>e[15]||(e[15]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),r("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(c(),h("form",P,[t(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",G,[r("div",J,[t(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=s=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[e[19]||(e[19]=i(" Neustart ")),t(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",H,[t(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=s=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[e[20]||(e[20]=i(" Ausschalten ")),t(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[18]||(e[18]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(c(),h("form",K,[t(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",M,[r("div",Q,[t(y,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=s=>o.switchBranch())},{default:a(()=>[t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[23]||(e[23]=i(" Branch und Tag wechseln ")),t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[21]||(e[21]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),t(m,{subtype:"warning"},{default:a(()=>e[22]||(e[22]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),r("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),r("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),r("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),r("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),t(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=s=>n.updateState("openWB/system/current_branch",s))},null,8,["groups","model-value"]),t(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=s=>p.selectedTag=s),title:"Tag",options:o.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):w("",!0)])}const oe=E(D,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{oe as default};
diff --git a/web/settings/assets/System-c2920436.js b/web/settings/assets/System-c2920436.js
deleted file mode 100644
index 86cd79fe50..0000000000
--- a/web/settings/assets/System-c2920436.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as A,ae as q,p as S,a3 as C,U,af as z,F as $}from"./vendor-fortawesome-71546160.js";import{C as x}from"./index-b0e5e618.js";import{_ as E,u as p,k as m,l as _,A as B,N as a,B as w,x as o,D as s,y as i,q as k,J as F,K as j,z as D,S as T,U as I}from"./vendor-f2b8aa6f.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";A.add(q,S,C,U,z);const L={name:"OpenwbSystemView",mixins:[x],emits:["sendCommand"],components:{FontAwesomeIcon:$},data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getBranchGroups(){const t="Release",e="Beta",u="master",v=[t,e],b=(l,d)=>l.value==d.value?0:l.value==t?-1:d.value==t?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var r=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(r!==void 0){var c=0;for(const[l,d]of Object.entries(r))v.includes(l)?c=0:l==u?c=1:c=2,f[c].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(b),f[1].options.sort(b)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var t=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(t!==void 0)for(const[u,v]of Object.entries(t))e.unshift({value:u,text:v});return e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},h=t=>(T("data-v-059847f6"),t=t(),I(),t),N={class:"system"},R=h(()=>o("h2",null,"Achtung!",-1)),Z=h(()=>o("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),O={key:1},P={name:"versionInfoForm"},G={class:"missing-commits"},J=h(()=>o("br",null,null,-1)),H={class:"row justify-content-center"},K={class:"col-md-4 d-flex py-1 justify-content-center"},M={class:"col-md-4 d-flex py-1 justify-content-center"},Q={key:0,name:"powerForm"},X={class:"row justify-content-center"},Y={class:"col-md-4 d-flex py-1 justify-content-center"},ee={class:"col-md-4 d-flex py-1 justify-content-center"},te={key:1,name:"releaseChangeForm"},se=h(()=>o("br",null,null,-1)),ne=h(()=>o("br",null,null,-1)),ae=h(()=>o("br",null,null,-1)),oe=h(()=>o("br",null,null,-1)),re={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"};function ie(t,e,u,v,b,r){const f=p("openwb-base-button-group-input"),c=p("openwb-base-alert"),l=p("openwb-base-text-input"),d=p("openwb-base-card"),g=p("font-awesome-icon"),y=p("openwb-base-click-button"),V=p("openwb-base-select-input");return m(),_("div",N,[u.installAssistantActive?w("",!0):(m(),B(c,{key:0,subtype:"danger"},{default:a(()=>[R,Z,s(f,{title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],modelValue:this.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=n=>this.warningAcknowledged=n)},null,8,["modelValue"])]),_:1})),b.warningAcknowledged||u.installAssistantActive?(m(),_("div",O,[o("form",P,[s(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[o("div",H,[o("div",K,[s(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=n=>r.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[i(" Informationen aktualisieren "),s(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),o("div",M,[s(y,{class:k(r.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!r.updateAvailable,onButtonClicked:e[6]||(e[6]=n=>r.systemUpdate())},{default:a(()=>[i(" Update "),s(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(l,{title:"Entwicklungszweig",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.$store.state.mqtt["openWB/system/current_branch"]=n)},null,8,["modelValue"]),s(l,{title:"Bezeichnung",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=n=>t.$store.state.mqtt["openWB/system/version"]=n)},null,8,["modelValue"]),s(l,{title:"installierte Version",readonly:"",class:k(r.updateAvailable?"text-danger":"text-success"),modelValue:t.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=n=>t.$store.state.mqtt["openWB/system/current_commit"]=n)},null,8,["class","modelValue"]),s(l,{title:"aktuellste Version",readonly:"",modelValue:t.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=n=>t.$store.state.mqtt["openWB/system/current_branch_commit"]=n)},null,8,["modelValue"]),r.updateAvailable?(m(),B(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[o("ul",G,[(m(!0),_(F,null,j(t.$store.state.mqtt["openWB/system/current_missing_commits"],(n,W)=>(m(),_("li",{key:W},D(n),1))),128))])]),_:1})):w("",!0),s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")]),_:1}),t.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(m(),B(c,{key:1,subtype:"danger"},{default:a(()=>[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),J,i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")]),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(m(),_("form",Q,[s(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",X,[o("div",Y,[s(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=n=>r.sendSystemCommand("systemReboot"))},{default:a(()=>[i(" Neustart "),s(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),o("div",ee,[s(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=n=>r.sendSystemCommand("systemShutdown"))},{default:a(()=>[i(" Ausschalten "),s(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(m(),_("form",te,[s(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[o("div",re,[o("div",le,[s(y,{class:k(r.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!r.releaseChangeValid,onButtonClicked:e[11]||(e[11]=n=>r.switchBranch())},{default:a(()=>[s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),i(" Branch und Tag wechseln "),s(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[s(c,{subtype:"danger"},{default:a(()=>[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")]),_:1}),s(c,{subtype:"warning"},{default:a(()=>[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),se,i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),ne,i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),ae,i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),oe,i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')]),_:1}),s(V,{title:"Entwicklungszweig",groups:r.getBranchGroups(),"model-value":t.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=n=>t.updateState("openWB/system/current_branch",n))},null,8,["groups","model-value"]),s(V,{title:"Tag",options:r.getBranchTagOptions(),modelValue:b.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=n=>b.selectedTag=n)},null,8,["options","modelValue"])]),_:1})]))])):w("",!0)])}const fe=E(L,[["render",ie],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{fe as default};
diff --git a/web/settings/assets/TestingStore-1bc32428.js b/web/settings/assets/TestingStore-1bc32428.js
deleted file mode 100644
index 658092c337..0000000000
--- a/web/settings/assets/TestingStore-1bc32428.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as V}from"./index-b0e5e618.js";import{S as U}from"./OpenwbSortableList-641f6bb4.js";import{_ as y,u as s,k as E,l as k,x as u,D as o,N as a,y as n,z as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const T={name:"OpenwbTestingStoreView",mixins:[V],components:{SortableList:U},data(){return{mqttTopicsToSubscribe:[]}}},_={class:"testingStore"},N={name:"testingStoreForm"},z=u("hr",null,null,-1),O=u("br",null,null,-1),Z=u("br",null,null,-1),j=u("hr",null,null,-1),D=u("hr",null,null,-1),B=u("hr",null,null,-1),J=u("hr",null,null,-1),L=u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[n(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),n(" Slot ")],-1);function W(e,t,G,R,H,A){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),g=s("openwb-base-textarea"),i=s("openwb-base-card"),r=s("openwb-base-range-input"),b=s("openwb-base-select-input"),f=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),h=s("openwb-base-array-input"),w=s("openwb-base-heading"),d=s("openwb-base-alert"),x=s("sortable-list"),$=s("openwb-base-submit-buttons");return E(),k("div",_,[u("form",N,[o(i,{title:"Einfache Eingabefelder"},{default:a(()=>[o(p,{title:"1. Text","model-value":e.$store.state.examples.text1,"onUpdate:modelValue":t[0]||(t[0]=l=>e.updateState("text1",l))},{help:a(()=>[n("Einfacher Text")]),_:1},8,["model-value"]),o(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":e.$store.state.examples.text2,"onUpdate:modelValue":t[1]||(t[1]=l=>e.updateState("text2",l))},{help:a(()=>[n("Eingabefeld für E-Mailadressen")]),_:1},8,["model-value"]),o(p,{title:"3. Text (Host)",subtype:"host","model-value":e.$store.state.examples.text3,"onUpdate:modelValue":t[2]||(t[2]=l=>e.updateState("text3",l))},{help:a(()=>[n(" Eingabefeld für Hosts (IP oder Namen) ")]),_:1},8,["model-value"]),o(p,{title:"4. Text (URL)",subtype:"url","model-value":e.$store.state.examples.text4,"onUpdate:modelValue":t[3]||(t[3]=l=>e.updateState("text4",l))},{help:a(()=>[n("Eingabefeld für URLs")]),_:1},8,["model-value"]),o(p,{title:"5. Text (User)",subtype:"user","model-value":e.$store.state.examples.text5,"onUpdate:modelValue":t[4]||(t[4]=l=>e.updateState("text5",l))},{help:a(()=>[n("Eingabefeld für Benutzernamen")]),_:1},8,["model-value"]),o(p,{title:"6. Text (Time)",subtype:"time","model-value":e.$store.state.examples.text6,"onUpdate:modelValue":t[5]||(t[5]=l=>e.updateState("text6",l))},{help:a(()=>[n("Eingabefeld für Zeiten")]),_:1},8,["model-value"]),o(p,{title:"7. Text (Date)",subtype:"date","model-value":e.$store.state.examples.text7,"onUpdate:modelValue":t[6]||(t[6]=l=>e.updateState("text7",l))},{help:a(()=>[n("Eingabefeld für ein Datum")]),_:1},8,["model-value"]),z,o(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":e.$store.state.examples.number1,"onUpdate:modelValue":t[7]||(t[7]=l=>e.updateState("number1",l))},{help:a(()=>[n("Zahl mit Einheit")]),_:1},8,["model-value"]),o(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":e.$store.state.examples.number2,"onUpdate:modelValue":t[8]||(t[8]=l=>e.updateState("number2",l))},{help:a(()=>[n("Eingabefeld für Zahlen ohne Einheit")]),_:1},8,["model-value"]),o(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":e.$store.state.examples.number3*1e5,"onUpdate:modelValue":t[9]||(t[9]=l=>e.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:a(()=>[n(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),O,n(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),Z,n(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")]),_:1},8,["model-value"]),o(p,{title:"1. Passwort",subtype:"password","model-value":e.$store.state.examples.password1,"onUpdate:modelValue":t[10]||(t[10]=l=>e.updateState("password1",l))},{help:a(()=>[n(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")]),_:1},8,["model-value"]),j,o(g,{title:"1. Textarea",maxlength:"50","model-value":e.$store.state.examples.textarea1,"onUpdate:modelValue":t[11]||(t[11]=l=>e.updateState("textarea1",l))},{help:a(()=>[n(" Textarea mit maximaler Länge von 50 Zeichen. ")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Spezielle Elemente"},{default:a(()=>[o(r,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":e.$store.state.examples.range1,"onUpdate:modelValue":t[12]||(t[12]=l=>e.updateState("range1",l))},{help:a(()=>[n("Range ohne spezielle Labels")]),_:1},8,["model-value"]),o(r,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.$store.state.examples.range2,"onUpdate:modelValue":t[13]||(t[13]=l=>e.updateState("range2",l))},{help:a(()=>[n("Range mit speziellen Labels")]),_:1},8,["model-value"]),D,o(b,{title:"1. Select",notSelected:"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":e.$store.state.examples.select1,"onUpdate:modelValue":t[14]||(t[14]=l=>e.updateState("select1",l))},{help:a(()=>[n("Select mit einfachen Optionen")]),_:1},8,["model-value"]),o(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":e.$store.state.examples.select2,"onUpdate:modelValue":t[15]||(t[15]=l=>e.updateState("select2",l))},{help:a(()=>[n("Select mit Gruppen")]),_:1},8,["model-value"]),B,o(f,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":e.$store.state.examples.buttonGroup1,"onUpdate:modelValue":t[16]||(t[16]=l=>e.updateState("buttonGroup1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"]),J,o(S,{title:"1. Checkbox","model-value":e.$store.state.examples.checkbox1,"onUpdate:modelValue":t[17]||(t[17]=l=>e.updateState("checkbox1",l))},{help:a(()=>[n("Hilfetext")]),_:1},8,["model-value"])]),_:1}),o(i,{title:"JSON Gruppe"},{default:a(()=>[o(p,{title:"JSON 1",subtype:"json","model-value":e.$store.state.examples.json1,"onUpdate:modelValue":t[18]||(t[18]=l=>e.updateState("json1",l))},{help:a(()=>[n("JSON Objekt")]),_:1},8,["model-value"]),o(p,{title:"JSON 1 Text","model-value":e.$store.state.examples.json1.text,"onUpdate:modelValue":t[19]||(t[19]=l=>e.updateState("json1",l,"text"))},{help:a(()=>[n("Text im JSON Objekt")]),_:1},8,["model-value"]),o(m,{title:"JSON 1 Zahl","model-value":e.$store.state.examples.json1.number,"onUpdate:modelValue":t[20]||(t[20]=l=>e.updateState("json1",l,"number"))},{help:a(()=>[n("Zahl im JSON Objekt")]),_:1},8,["model-value"]),o(h,{title:"Tag Array","model-value":e.$store.state.examples.tags,"onUpdate:modelValue":t[21]||(t[21]=l=>e.updateState("tags",l))},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),o(i,{title:"Meldungen"},{header:a(()=>[L]),default:a(()=>[o(w,null,{help:a(()=>[n(" Es sind auch Hilfetexte im #help Slot möglich. ")]),default:a(()=>[n(" Das ist eine Überschrift ")]),_:1}),o(d,null,{default:a(()=>[n(" Meldung ohne speziellen Subtype. ")]),_:1}),o(d,{subtype:"info"},{default:a(()=>[n("Infomeldung")]),_:1}),o(d,{subtype:"warning"},{default:a(()=>[n("Warnmeldung")]),_:1}),o(d,{subtype:"danger"},{default:a(()=>[n(" Fehlermeldung ")]),_:1})]),_:1}),o(i,{title:"Listen"},{default:a(()=>[o(x,{title:"Liste 1",modelValue:e.$store.state.examples.hierarchy1,"onUpdate:modelValue":t[22]||(t[22]=l=>e.$store.state.examples.hierarchy1=l),labels:e.$store.state.examples.hierarchy1Labels},{help:a(()=>[u("pre",null,v(JSON.stringify(e.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),o($,{formName:"testingStoreForm",onSave:t[23]||(t[23]=l=>e.$emit("save")),onReset:t[24]||(t[24]=l=>e.$emit("reset")),onDefaults:t[25]||(t[25]=l=>e.$emit("defaults"))})])])}const X=y(T,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{X as default};
diff --git a/web/settings/assets/TestingStore-ffe2c569.js b/web/settings/assets/TestingStore-ffe2c569.js
new file mode 100644
index 0000000000..1490611c25
--- /dev/null
+++ b/web/settings/assets/TestingStore-ffe2c569.js
@@ -0,0 +1 @@
+import{C as U}from"./index-dc0e711f.js";import{S as y}from"./OpenwbSortableList-3ce7f991.js";import{_ as E,u as s,k,l as T,x as u,D as a,N as n,y as o,z as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const z={name:"OpenwbTestingStoreView",components:{SortableList:y},mixins:[U],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},N={class:"testingStore"},O={name:"testingStoreForm"};function Z(t,e,j,D,B,J){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),d=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),w=s("openwb-base-array-input"),x=s("openwb-base-heading"),r=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return k(),T("div",N,[u("form",O,[a(i,{title:"Einfache Eingabefelder"},{default:n(()=>[a(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("text1",l))},{help:n(()=>e[26]||(e[26]=[o(" Einfacher Text ")])),_:1},8,["model-value"]),a(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text2",l))},{help:n(()=>e[27]||(e[27]=[o(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),a(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text3",l))},{help:n(()=>e[28]||(e[28]=[o(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),a(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text4",l))},{help:n(()=>e[29]||(e[29]=[o(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),a(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text5",l))},{help:n(()=>e[30]||(e[30]=[o(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),a(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text6",l))},{help:n(()=>e[31]||(e[31]=[o(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),a(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text7",l))},{help:n(()=>e[32]||(e[32]=[o(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[38]||(e[38]=u("hr",null,null,-1)),a(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("number1",l))},{help:n(()=>e[33]||(e[33]=[o(" Zahl mit Einheit ")])),_:1},8,["model-value"]),a(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number2",l))},{help:n(()=>e[34]||(e[34]=[o(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),a(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[35]||(e[35]=[o(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),u("br",null,null,-1),o(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),u("br",null,null,-1),o(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),a(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("password1",l))},{help:n(()=>e[36]||(e[36]=[o(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[39]||(e[39]=u("hr",null,null,-1)),a(f,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("textarea1",l))},{help:n(()=>e[37]||(e[37]=[o(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"Spezielle Elemente"},{default:n(()=>[a(d,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("range1",l))},{help:n(()=>e[40]||(e[40]=[o(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),a(d,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range2",l))},{help:n(()=>e[41]||(e[41]=[o(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[46]||(e[46]=u("hr",null,null,-1)),a(b,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("select1",l))},{help:n(()=>e[42]||(e[42]=[o(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),a(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select2",l))},{help:n(()=>e[43]||(e[43]=[o(" Select mit Gruppen ")])),_:1},8,["model-value"]),e[47]||(e[47]=u("hr",null,null,-1)),a(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[44]||(e[44]=[o(" Hilfetext ")])),_:1},8,["model-value"]),e[48]||(e[48]=u("hr",null,null,-1)),a(S,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[17]||(e[17]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[45]||(e[45]=[o(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"JSON Gruppe"},{default:n(()=>[a(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("json1",l))},{help:n(()=>e[49]||(e[49]=[o(" JSON Objekt ")])),_:1},8,["model-value"]),a(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[50]||(e[50]=[o(" Text im JSON Objekt ")])),_:1},8,["model-value"]),a(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[51]||(e[51]=[o(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),a(w,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("tags",l))},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),a(i,{title:"Meldungen"},{header:n(()=>e[52]||(e[52]=[u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[o(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),o(" Slot ")],-1)])),default:n(()=>[a(x,null,{help:n(()=>e[53]||(e[53]=[o(" Es sind auch Hilfetexte im #help Slot möglich. ")])),default:n(()=>[e[54]||(e[54]=o(" Das ist eine Überschrift "))]),_:1}),a(r,null,{default:n(()=>e[55]||(e[55]=[o(" Meldung ohne speziellen Subtype. ")])),_:1}),a(r,{subtype:"info"},{default:n(()=>e[56]||(e[56]=[o(" Infomeldung ")])),_:1}),a(r,{subtype:"warning"},{default:n(()=>e[57]||(e[57]=[o(" Warnmeldung ")])),_:1}),a(r,{subtype:"danger"},{default:n(()=>e[58]||(e[58]=[o(" Fehlermeldung ")])),_:1})]),_:1}),a(i,{title:"Listen"},{default:n(()=>[a($,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[22]||(e[22]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),a(V,{"form-name":"testingStoreForm",onSave:e[23]||(e[23]=l=>t.$emit("save")),onReset:e[24]||(e[24]=l=>t.$emit("reset")),onDefaults:e[25]||(e[25]=l=>t.$emit("defaults"))})])])}const M=E(z,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{M as default};
diff --git a/web/settings/assets/TimeChargeConfig-46c6427d.js b/web/settings/assets/TimeChargeConfig-46c6427d.js
deleted file mode 100644
index 6f46f9f3fd..0000000000
--- a/web/settings/assets/TimeChargeConfig-46c6427d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./index-b0e5e618.js";import{_,u as o,k as a,l as i,x as b,D as s,N as r,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";const h={name:"OpenwbTimeChargeConfigView",mixins:[l],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},c={class:"timeChargeConfig"},f={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",c,[b("form",f,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(u,{subtype:"info"},{default:r(()=>[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(a(),i("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')]),_:1},8,["model-value"])]))]),_:1}),s(d,{formName:"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=_(h,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/TimeChargeConfig-7cd7d455.js b/web/settings/assets/TimeChargeConfig-7cd7d455.js
new file mode 100644
index 0000000000..be4a4b1a16
--- /dev/null
+++ b/web/settings/assets/TimeChargeConfig-7cd7d455.js
@@ -0,0 +1 @@
+import{C as l}from"./index-dc0e711f.js";import{_ as b,u as o,k as i,l as a,x as _,D as s,N as r,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-0ab604e8.js b/web/settings/assets/VehicleConfig-0ab604e8.js
new file mode 100644
index 0000000000..291c4935d5
--- /dev/null
+++ b/web/settings/assets/VehicleConfig-0ab604e8.js
@@ -0,0 +1 @@
+import{l as H,d as j,a0 as J,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-41164876.js";import{_ as k,C as oe}from"./index-dc0e711f.js";import{_ as re}from"./dynamic-import-helper-be004503.js";import{_ as q,u as V,k as d,l as g,A as p,N as l,y as i,z as C,D as a,x as h,a0 as de,a1 as ue,J as P,B as s,K as E,a2 as F,q as x,P as N}from"./vendor-a21b3a62.js";const se={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},O=q(se,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[O]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,v,B,f,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=q(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",mixins:[O],computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),de({loader:()=>re(Object.assign({"./bmw/vehicle.vue":()=>k(()=>import("./vehicle-7adb9a7c.js"),["assets/vehicle-7adb9a7c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-28a9dcf3.js"),["assets/vehicle-28a9dcf3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-039c8759.js"),["assets/vehicle-039c8759.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-f050a85d.js"),["assets/vehicle-f050a85d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-b9845ca5.js"),["assets/vehicle-b9845ca5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-bedc772a.js"),["assets/vehicle-bedc772a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-47ed0a84.js"),["assets/vehicle-47ed0a84.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-0bc01aa8.js"),["assets/vehicle-0bc01aa8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-03c9aa3d.js"),["assets/vehicle-03c9aa3d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-7bb9b768.js"),["assets/vehicle-7bb9b768.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-5b8d1dc8.js"),["assets/vehicle-5b8d1dc8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-7f7d2e44.js"),["assets/vehicle-7f7d2e44.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-19e3adb9.js"),["assets/vehicle-19e3adb9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarteq/vehicle.vue":()=>k(()=>import("./vehicle-0babcb51.js"),["assets/vehicle-0babcb51.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-7f1d1c67.js"),["assets/vehicle-7f1d1c67.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-42f1ed52.js"),["assets/vehicle-42f1ed52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-axios-0e6de98a.js","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-9ce6bac4.js"),["assets/vehicle-9ce6bac4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-85478721.js"),["assets/vehicle-85478721.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})}}};function ve(t,e,v,B,f,m){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(t.vehicle.name)+'" ',1)]),_:1}),(d(),p(ue(m.myComponent),{"vehicle-id":t.vehicleId,vehicle:t.vehicle,"onUpdate:configuration":e[0]||(e[0]=b=>t.updateConfiguration(b))},null,40,["vehicle-id","vehicle"]))],64)}const fe=q(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);H.add(j,J,G,Q,X,Y,K,ee,te,ne,ae);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:fe},mixins:[oe],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let v=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+v].name;t.push({value:v,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let v=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+v].name;t.push({value:v,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&(console.info("request removal of vehicle '"+t+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}}))},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(v=>v.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&(console.info("request removal of ev template '"+t+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}}))},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&(console.info("request removal of charge template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}}))},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation(),console.info("requesting new charge template schedule plan...");let v=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:v}})},removeChargeTemplateSchedulePlanModal(t,e,v){v.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,v){this.showChargeTemplateSchedulePlanModal=!1,v=="confirm"&&(console.info("request removal of charge template '"+t+"' schedule plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}}))},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation(),console.info("requesting new charge template time charging plan...");let v=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:v}})},removeChargeTemplateTimeChargingPlanModal(t,e,v){v.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,v){this.showChargeTemplateTimeChargingPlanModal=!1,v=="confirm"&&(console.info("request removal of charge template '"+t+"' time charging plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}}))}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},Ae={key:0},ye={key:0},Ee={key:3},Be={key:0},Fe={key:1},qe={key:0},Me={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Re={key:3},Ie={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:5};function et(t,e,v,B,f,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),T=V("openwb-base-avatar"),y=V("openwb-base-alert"),z=V("openwb-base-text-input"),M=V("openwb-base-select-input"),R=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),A=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),$=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>m.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(m.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>m.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(m.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>m.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(m.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>m.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(m.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[4]||(e[4]=o=>m.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zeitladen Zeitplan "'+C(m.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",we,[h("form",ke,[a(A,{subtype:"info",collapsible:!0,collapsed:t.$route.params.section!="vehicle"},{header:l(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),e[8]||(e[8]=i(" Fahrzeuge "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Ve,[a(y,{subtype:"info"},{default:l(()=>e[9]||(e[9]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Ce,[(d(!0),g(P,null,E(m.vehicleIndexes,o=>(d(),p(A,{key:o,title:m.getVehicleName(o),collapsible:!0,collapsed:!(t.$route.params.section=="vehicle"&&parseInt(t.$route.params.section_index)==o),subtype:"info"},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/name"],disabled:o===0,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/name",r)},F({_:2},[o===0?{name:"help",fn:l(()=>[e[10]||(e[10]=i(" Das Standard-Fahrzeug kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),o!==0?(d(),p(z,{key:0,title:"Fahrzeughersteller ","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].manufacturer,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"manufacturer")},{help:l(()=>[...e[11]||(e[11]=[i(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),o!==0?(d(),p(z,{key:1,title:"Fahrzeugmodell","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].model,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"model")},{help:l(()=>[...e[12]||(e[12]=[i(" Optional: zusätzliche Information für den Systembericht."),h("br",null,null,-1),i(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),a(y,{subtype:"info"},{default:l(()=>[...e[13]||(e[13]=[i(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])]),_:1}),a(M,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/ev_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/ev_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),a(M,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/charge_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/charge_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),e[24]||(e[24]=h("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!v.installAssistantActive?(d(),g("div",Se,[a(R,{title:"Zugeordnete ID-Tags","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/tag_id"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/tag_id",r)},null,8,["model-value","onUpdate:modelValue"]),a(y,{subtype:"info"},{default:l(()=>[e[14]||(e[14]=i(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung.")),e[15]||(e[15]=h("br",null,null,-1)),h("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,ze)]),_:1}),e[16]||(e[16]=h("hr",null,null,-1))])):s("",!0),a(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:m.socModuleList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type,"onUpdate:modelValue":r=>m.updateSelectedSocModule(o,r)},{help:l(()=>[...e[17]||(e[17]=[i(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),h("br",null,null,-1),i(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),h("br",null,null,-1),i(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),h("br",null,null,-1),i(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type?(d(),g("div",Ue,[a(_,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"use_soc_from_cp")},{help:l(()=>[...e[18]||(e[18]=[i(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{help:l(()=>[...e[19]||(e[19]=[i(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")])]),default:l(()=>[e[20]||(e[20]=i(" Aktualisierung der Fahrzeugdaten "))]),_:1}),a(w,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_charging")},{help:l(()=>[...e[21]||(e[21]=[i(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_not_charging")},{help:l(()=>[...e[22]||(e[22]=[i(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"request_only_plugged")},{help:l(()=>[...e[23]||(e[23]=[i(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(I,{"vehicle-id":o,vehicle:t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"],"onUpdate:configuration":r=>m.updateConfiguration("openWB/vehicle/"+o+"/soc_module/config",r)},null,8,["vehicle-id","vehicle","onUpdate:configuration"])])):s("",!0)]),_:2},[o!==0?{name:"actions",fn:l(r=>[r.collapsed?s("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:n=>m.removeVehicleModal(o,n)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),e[81]||(e[81]=h("hr",{class:"border-secondary"},null,-1)),a(L,null,{default:l(()=>e[25]||(e[25]=[i("Profile")])),_:1}),a(A,{collapsible:!0,collapsed:!0},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),e[26]||(e[26]=i(" Fahrzeug-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Te,[a(y,{subtype:"info"},{default:l(()=>e[27]||(e[27]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",We,[a(y,{subtype:"info"},{default:l(()=>e[28]||(e[28]=[i(" Ein anderes Fahrzeug-Profil wird erst "),h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1),i(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])),_:1}),(d(!0),g(P,null,E(m.evTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!0},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[29]||(e[29]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[30]||(e[30]=[i(" Angaben zur Batterie ")])]),_:1}),a(w,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":o.battery_capacity/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"battery_capacity")},{help:l(()=>[...e[31]||(e[31]=[i(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),v.installAssistantActive?s("",!0):(d(),g("div",Le,[a(w,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":o.efficiency,"onUpdate:modelValue":n=>t.updateState(r,n,"efficiency")},{help:l(()=>[...e[32]||(e[32]=[i(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),h("br",null,null,-1),i(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),h("br",null,null,-1),i(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),h("br",null,null,-1),i(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),h("br",null,null,-1)])]),_:2},1032,["model-value","onUpdate:modelValue"])])),a(w,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":o.average_consump/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),g("div",Pe,[a(L,null,{default:l(()=>[...e[33]||(e[33]=[i(" Angaben zur Ladeleistung (DC) ")])]),_:1}),a(w,{title:"Mindestleistung",min:5,unit:"kW","model-value":t.ac_current2dc_power(o.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Maximalleistung",unit:"kW","model-value":t.ac_current2dc_power(o.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):s("",!0),a(L,null,{default:l(()=>[e[34]||(e[34]=i(" Angaben zum Ladestrom ")),m.dcChargingEnabled===!0?(d(),g("span",Ae," (AC) ")):s("",!0)]),_:1}),a(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":o.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":o.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":o.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":o.nominal_difference,"onUpdate:modelValue":n=>t.updateState(r,n,"nominal_difference")},{help:l(()=>[...e[35]||(e[35]=[i(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:l(()=>[e[36]||(e[36]=i(" Angaben zur Handhabung von Phasen ")),m.dcChargingEnabled===!0?(d(),g("span",ye," (AC) ")):s("",!0)]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":o.max_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_phases")},{help:l(()=>[...e[37]||(e[37]=[i(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.control_pilot_interruption,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption")},{help:l(()=>[...e[38]||(e[38]=[i(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o.control_pilot_interruption?(d(),p(w,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":o.control_pilot_interruption_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_phase_switch,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_phase_switch")},{help:l(()=>[...e[39]||(e[39]=[i(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_charge_stop,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_charge_stop")},{help:l(()=>[...e[40]||(e[40]=[i(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":o.phase_switch_pause,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),v.installAssistantActive?s("",!0):(d(),g("div",Ee,[a(w,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":o.keep_charge_active_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"keep_charge_active_duration")},{help:l(()=>[...e[41]||(e[41]=[i(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[t.$store.state.mqtt["openWB/general/extern"]===!1&&!n.collapsed?(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>m.removeEvTemplateModal(r,c)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(A,{collapsible:!0,collapsed:t.$route.params.section!="charge_template"},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),e[42]||(e[42]=i(" Lade-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Be,[a(y,{subtype:"info"},{default:l(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Fe,[(d(!0),g(P,null,E(m.chargeTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!(t.$route.params.section=="charge_template"&&parseInt(t.$route.params.section_index)==m.getChargeTemplateIndex(r))},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[44]||(e[44]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[45]||(e[45]=[i(" Allgemeine Optionen ")])]),_:1}),a(_,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":o.chargemode.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.selected")},{help:l(()=>[...e[46]||(e[46]=[i(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),h("br",null,null,-1),i(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),h("br",null,null,-1),h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)])]),_:2},1032,["model-value","onUpdate:modelValue"]),v.installAssistantActive?s("",!0):(d(),g("div",qe,[a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.prio,"onUpdate:modelValue":n=>t.updateState(r,n,"prio")},{help:l(()=>[...e[47]||(e[47]=[i(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.time_charging.active,"onUpdate:modelValue":n=>t.updateState(r,n,"time_charging.active")},{help:l(()=>[...e[48]||(e[48]=[i(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.load_default,"onUpdate:modelValue":n=>t.updateState(r,n,"load_default")},{help:l(()=>[...e[49]||(e[49]=[i(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.et.active,"onUpdate:modelValue":n=>t.updateState(r,n,"et.active")},null,8,["model-value","onUpdate:modelValue"]),o.et.active==!0?(d(),g("div",Me,[!t.$store.state.mqtt["openWB/optional/et/provider"]||!t.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),g("div",De,[a(y,{subtype:"danger"},{default:l(()=>[...e[50]||(e[50]=[i(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")])]),_:1})])):s("",!0),a(w,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":o.et.max_price*1e5,"onUpdate:modelValue":n=>t.updateState(r,parseFloat((n/1e5).toFixed(7)),"et.max_price")},{help:l(()=>[...e[51]||(e[51]=[i(" Für Zielladen werden die günstigsten Stunden ermittelt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("",!0),e[52]||(e[52]=h("hr",null,null,-1))])),a(L,null,{default:l(()=>[...e[53]||(e[53]=[i("Sofortladen")])]),_:1}),a(S,{title:"Soll-Ladestrom"+(m.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.instant_charging.current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),p(w,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.instant_charging.dc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":o.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.selected")},{help:l(()=>[...e[54]||(e[54]=[i(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":o.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.soc")},{help:l(()=>[...e[55]||(e[55]=[i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":o.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"chargemode.instant_charging.limit.amount")},{help:l(()=>[...e[56]||(e[56]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[79]||(e[79]=h("hr",null,null,-1)),a(L,null,{default:l(()=>[...e[57]||(e[57]=[i("PV-Laden")])]),_:1}),a(S,{title:"Minimaler Dauerstrom"+(m.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":o.chargemode.pv_charging.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_current")},{help:l(()=>[...e[58]||(e[58]=[i(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),p(w,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_current")},{help:l(()=>[...e[59]||(e[59]=[i(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),a(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":o.chargemode.pv_charging.max_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.max_soc")},{help:l(()=>[...e[60]||(e[60]=[i(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":o.chargemode.pv_charging.min_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc")},{help:l(()=>[...e[61]||(e[61]=[i(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC-Strom"+(m.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc_current")},{help:l(()=>[...e[62]||(e[62]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),p(w,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_soc_current")},{help:l(()=>[...e[63]||(e[63]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.feed_in_limit")},{help:l(()=>[...e[64]||(e[64]=[i(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[80]||(e[80]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>m.addChargeTemplateSchedulePlan(r,n)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[65]||(e[65]=[i(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),h("br",null,null,-1),i(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),h("br",null,null,-1),i(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")])]),default:l(()=>[e[66]||(e[66]=i(" Zielladen "))]),_:2},1024),(d(!0),g(P,null,E(m.getChargeTemplateScheduledChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",xe,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc_scheduled)+"% ",1)])):s("",!0),n.limit.selected=="amount"?(d(),g("span",Ne,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):s("",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time)+" ",1),n.frequency.selected=="once"?(d(),g("span",Oe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once)),1)])):s("",!0),n.frequency.selected=="daily"?(d(),g("span",Re,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ie,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("",!0)],10,Ze)):s("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>m.removeChargeTemplateSchedulePlanModal(r,c,U)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Ziel-Uhrzeit",subtype:"time","model-value":n.time,"onUpdate:modelValue":u=>t.updateState(c,u,"time")},{help:l(()=>[...e[67]||(e[67]=[i(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(m.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},{help:l(()=>[...e[68]||(e[68]=[i(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[69]||(e[69]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_scheduled,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_scheduled")},{help:l(()=>[...e[70]||(e[70]=[i(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),n.limit.selected=="soc"?(d(),p(S,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_limit,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_limit")},{help:l(()=>[...e[71]||(e[71]=[i(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),n.limit.selected=="amount"?(d(),p(w,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[72]||(e[72]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Datum",subtype:"date","model-value":n.frequency.once,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),n.frequency.selected=="weekly"?(d(),g("div",$e,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("",!0)]),_:2},1032,["title"]))),128)),v.installAssistantActive?s("",!0):(d(),g("div",He,[e[75]||(e[75]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>m.addChargeTemplateTimeChargingPlan(r,n)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[73]||(e[73]=[i(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")])]),default:l(()=>[e[74]||(e[74]=i(" Laden nach Zeitplan "))]),_:2},1024)])),(d(!0),g(P,null,E(m.getChargeTemplateTimeChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc)+"% ",1)])):s("",!0),n.limit.selected=="amount"?(d(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):s("",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time[0])+" - "+C(n.time[1])+" ",1),n.frequency.selected=="once"?(d(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):s("",!0),n.frequency.selected=="daily"?(d(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("",!0)],10,je)):s("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>m.removeChargeTemplateTimeChargingPlanModal(r,c,U)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(m.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[76]||(e[76]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc")},{help:l(()=>[...e[77]||(e[77]=[i(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),n.limit.selected=="amount"?(d(),p(w,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[78]||(e[78]=[i(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),a(z,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":u=>t.updateState(c,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":u=>t.updateState(c,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:3,title:"Gültig ab",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Gültig bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("",!0),n.frequency.selected=="weekly"?(d(),g("div",Ke,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[n.collapsed?s("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>m.removeChargeTemplateModal(r,c)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a($,{"form-name":"vehicleConfigForm",onSave:e[5]||(e[5]=o=>t.$emit("save")),onReset:e[6]||(e[6]=o=>t.$emit("reset")),onDefaults:e[7]||(e[7]=o=>t.$emit("defaults"))})])])],64)}const tt=q(_e,[["render",et],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),ot=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{O as V,tt as a,ot as b};
diff --git a/web/settings/assets/VehicleConfig-5050794d.js b/web/settings/assets/VehicleConfig-5050794d.js
deleted file mode 100644
index ffba6b108d..0000000000
--- a/web/settings/assets/VehicleConfig-5050794d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as H,d as j,a0 as J,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-71546160.js";import{_ as V,C as oe}from"./index-b0e5e618.js";import{_ as re}from"./dynamic-import-helper-be004503.js";import{_ as M,u as C,k as d,l as c,A as p,N as a,y as l,z as S,D as n,x as h,a2 as de,a3 as ue,J as y,B as m,K as B,a4 as q,P as N,q as O,S as se,U as me}from"./vendor-f2b8aa6f.js";const ce={emits:["update:configuration"],props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},methods:{updateConfiguration(e,r=void 0){this.$emit("update:configuration",{value:e,object:r})}}},he=M(ce,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),ge={name:"VehicleConfigFallback",mixins:[he]},pe={class:"vehicle-fallback"},be={key:1};function ve(e,r,b,F,_,s){const L=C("openwb-base-alert"),v=C("openwb-base-textarea");return d(),c("div",pe,[Object.keys(e.vehicle.configuration).length==0?(d(),p(L,{key:0,subtype:"info"},{default:a(()=>[l(' Der Fahrzeug-Typ "'+S(e.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),c("div",be,[n(L,{subtype:"warning"},{default:a(()=>[l(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+S(e.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(v,{title:"Konfiguration",subtype:"json","model-value":e.vehicle.configuration,"onUpdate:modelValue":r[0]||(r[0]=W=>e.updateConfiguration(W,"configuration"))},{help:a(()=>[l(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")]),_:1},8,["model-value"]),n(L,{subtype:"info"},{default:a(()=>[h("pre",null,S(JSON.stringify(e.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const fe=M(ge,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),_e={name:"OpenwbVehicleProxy",emits:["update:configuration"],props:{vehicleId:{required:!0},vehicle:{type:Object,required:!0}},computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),de({loader:()=>re(Object.assign({"./bmw/vehicle.vue":()=>V(()=>import("./vehicle-2f9b7b98.js"),["assets/vehicle-2f9b7b98.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>V(()=>import("./vehicle-c0891ece.js"),["assets/vehicle-c0891ece.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>V(()=>import("./vehicle-d78b6b11.js"),["assets/vehicle-d78b6b11.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>V(()=>import("./vehicle-08379fee.js"),["assets/vehicle-08379fee.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>V(()=>import("./vehicle-e909e122.js"),["assets/vehicle-e909e122.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>V(()=>import("./vehicle-d0d26522.js"),["assets/vehicle-d0d26522.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>V(()=>import("./vehicle-9dbb1f9d.js"),["assets/vehicle-9dbb1f9d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>V(()=>import("./vehicle-8ec5d670.js"),["assets/vehicle-8ec5d670.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>V(()=>import("./vehicle-fa2b1ad1.js"),["assets/vehicle-fa2b1ad1.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>V(()=>import("./vehicle-5f51066d.js"),["assets/vehicle-5f51066d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>V(()=>import("./vehicle-c5ee02d8.js"),["assets/vehicle-c5ee02d8.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>V(()=>import("./vehicle-f30d6420.js"),["assets/vehicle-f30d6420.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>V(()=>import("./vehicle-98ffa49f.js"),["assets/vehicle-98ffa49f.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarteq/vehicle.vue":()=>V(()=>import("./vehicle-3a34ea9e.js"),["assets/vehicle-3a34ea9e.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>V(()=>import("./vehicle-65e40931.js"),["assets/vehicle-65e40931.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>V(()=>import("./vehicle-29ff37c0.js"),["assets/vehicle-29ff37c0.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-axios-65ecee4b.js","assets/index-b0e5e618.js","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>V(()=>import("./vehicle-023614f3.js"),["assets/vehicle-023614f3.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>V(()=>import("./vehicle-f3b10eaa.js"),["assets/vehicle-f3b10eaa.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/index-b0e5e618.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:fe})}},methods:{updateConfiguration(e){this.$emit("update:configuration",e)}}};function we(e,r,b,F,_,s){const L=C("openwb-base-heading");return d(),c(y,null,[n(L,null,{default:a(()=>[l(' Einstellungen für SoC-Modul "'+S(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(ue(s.myComponent),{vehicleId:b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":r[0]||(r[0]=v=>s.updateConfiguration(v))},null,40,["vehicleId","vehicle"]))],64)}const ke=M(_e,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);H.add(j,J,G,Q,X,Y,K,ee,te,ne,ae);const Ve={name:"OpenwbVehicleConfigView",mixins:[oe],emits:["sendCommand"],components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:ke},props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let e=[];return Object.keys(this.evTemplates).forEach(r=>{let b=parseInt(r.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;e.push({value:b,text:F})}),e}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let e=[];return Object.keys(this.chargeTemplates).forEach(r=>{let b=parseInt(r.match(/([0-9]+)$/g)[0]),F=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;e.push({value:b,text:F})}),e}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(e){let r=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+r+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(e){let r=e.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+r+"/time_charging/plans/+")},addVehicle(e){e.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(e,r){r.stopPropagation(),this.modalVehicleIndex=e,this.showVehicleModal=!0},removeVehicle(e,r){this.showVehicleModal=!1,r=="confirm"&&(console.info("request removal of vehicle '"+e+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:e}}))},getVehicleName(e){return this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+e+"/name"]:"Fahrzeug "+e},getSocDefaultConfiguration(e){const r=this.socModuleList.find(b=>b.value==e);return Object.prototype.hasOwnProperty.call(r,"defaults")?{...JSON.parse(JSON.stringify(r.defaults))}:(console.warn("no default configuration found for soc type!",e),{})},updateSelectedSocModule(e,r){this.updateState("openWB/vehicle/"+e+"/soc_module/config",r,"type"),this.updateState("openWB/vehicle/"+e+"/soc_module/config",this.getSocDefaultConfiguration(r))},updateConfiguration(e,r){console.debug("updateConfiguration",e,r),this.updateState(e,r.value,r.object)},addEvTemplate(e){e.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(e,r){r.stopPropagation(),this.modalEvTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(e,r){this.showEvTemplateModal=!1,r=="confirm"&&(console.info("request removal of ev template '"+e+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:e}}))},getEvTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+e].name:"Fahrzeug-Profil "+e},addChargeTemplate(e){e.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(e){return parseInt(e.match(/([^/]+)$/)[0])},removeChargeTemplateModal(e,r){r.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(e),this.showChargeTemplateModal=!0},removeChargeTemplate(e,r){this.showChargeTemplateModal=!1,r=="confirm"&&(console.info("request removal of charge template '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:e}}))},getChargeTemplateName(e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e].name:"Lade-Profil "+e},getChargeTemplateSchedulePlanName(e,r){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+r]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/"+r].name:"Zielladen Zeitplan "+e+"/"+r},addChargeTemplateSchedulePlan(e,r){r.stopPropagation(),console.info("requesting new charge template schedule plan...");let b=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(e,r,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(r.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(e,r,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+e+"' schedule plan '"+r+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:e,plan:r}}))},getChargeTemplateTimeChargingPlanName(e,r){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+r]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/"+r].name:"Zeitladen Zeitplan "+e+"/"+r},addChargeTemplateTimeChargingPlan(e,r){r.stopPropagation(),console.info("requesting new charge template time charging plan...");let b=parseInt(e.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(e,r,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(e.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(r.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(e,r,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+e+"' time charging plan '"+r+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:e,plan:r}}))}}},f=e=>(se("data-v-d7193cf0"),e=e(),me(),e),Ce={class:"vehicleConfig"},Se={name:"vehicleConfigForm"},ze={key:0},Ue={key:1},Te=f(()=>h("br",null,null,-1)),We=f(()=>h("hr",null,null,-1)),Le={key:2},Pe=f(()=>h("br",null,null,-1)),ye=["innerHTML"],Ae=f(()=>h("hr",null,null,-1)),Ee=f(()=>h("br",null,null,-1)),Be=f(()=>h("br",null,null,-1)),Fe=f(()=>h("br",null,null,-1)),qe={key:3},Me=f(()=>h("hr",{class:"border-secondary"},null,-1)),De={key:0},Ze={key:1},xe=f(()=>h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1)),Ne={key:0},Oe=f(()=>h("br",null,null,-1)),Ie=f(()=>h("br",null,null,-1)),Re=f(()=>h("br",null,null,-1)),$e=f(()=>h("br",null,null,-1)),He={key:1},je={key:0},Je={key:0},Ge={key:3},Qe={key:0},Xe={key:1},Ye=f(()=>h("br",null,null,-1)),Ke=f(()=>h("br",null,null,-1)),et=f(()=>h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)),tt={key:0},nt={key:0},at={key:0},lt=f(()=>h("hr",null,null,-1)),it=f(()=>h("hr",null,null,-1)),ot=f(()=>h("br",null,null,-1)),rt=f(()=>h("br",null,null,-1)),dt=f(()=>h("hr",null,null,-1)),ut=f(()=>h("br",null,null,-1)),st=f(()=>h("br",null,null,-1)),mt=["onClick"],ct={key:0},ht={key:1},gt={key:2},pt={key:3},bt={key:4},vt={key:5},ft={key:4},_t=f(()=>h("hr",null,null,-1)),wt=["onClick"],kt={key:0},Vt={key:1},Ct={key:2},St={key:3},zt={key:4},Ut={key:5};function Tt(e,r,b,F,_,s){const L=C("openwb-base-modal-dialog"),v=C("font-awesome-icon"),W=C("openwb-base-avatar"),E=C("openwb-base-alert"),U=C("openwb-base-text-input"),D=C("openwb-base-select-input"),I=C("openwb-base-array-input"),w=C("openwb-base-button-group-input"),P=C("openwb-base-heading"),k=C("openwb-base-number-input"),R=C("openwb-vehicle-proxy"),A=C("openwb-base-card"),x=C("font-awesome-layers"),z=C("openwb-base-range-input"),$=C("openwb-base-submit-buttons");return d(),c(y,null,[n(L,{show:_.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r[0]||(r[0]=i=>s.removeVehicle(_.modalVehicleIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug "'+S(s.getVehicleName(_.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r[1]||(r[1]=i=>s.removeEvTemplate(_.modalEvTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Fahrzeug-Profil "'+S(s.getEvTemplateName(_.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r[2]||(r[2]=i=>s.removeChargeTemplate(_.modalChargeTemplateIndex,i))},{default:a(()=>[l(' Wollen Sie das Lade-Profil "'+S(s.getChargeTemplateName(_.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r[3]||(r[3]=i=>s.removeChargeTemplateSchedulePlan(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zielladen Zeitplan "'+S(s.getChargeTemplateSchedulePlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),n(L,{show:_.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:r[4]||(r[4]=i=>s.removeChargeTemplateTimeChargingPlan(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex,i))},{default:a(()=>[l(' Wollen Sie den Zeitladen Zeitplan "'+S(s.getChargeTemplateTimeChargingPlanName(_.modalChargeTemplateIndex,_.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",Ce,[h("form",Se,[n(A,{subtype:"info",collapsible:!0,collapsed:e.$route.params.section!="vehicle"},{header:a(()=>[n(v,{"fixed-width":"",icon:["fas","car"]}),l(" Fahrzeuge ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(W,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),c("div",ze,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),c("div",Ue,[(d(!0),c(y,null,B(s.vehicleIndexes,i=>(d(),p(A,{key:i,title:s.getVehicleName(i),collapsible:!0,collapsed:!(e.$route.params.section=="vehicle"&&parseInt(e.$route.params.section_index)==i),subtype:"info"},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/name"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/name",o),disabled:i===0},q({_:2},[i===0?{name:"help",fn:a(()=>[l(" Das Standard-Fahrzeug kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),i!==0?(d(),p(U,{key:0,title:"Fahrzeughersteller ","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].manufacturer,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"manufacturer")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),i!==0?(d(),p(U,{key:1,title:"Fahrzeugmodell","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/info"].model,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/info",o,"model")},{help:a(()=>[l(" Optional: zusätzliche Information für den Systembericht."),Te,l(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),n(D,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/ev_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/ev_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),n(D,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/charge_template"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/charge_template",o)},null,8,["options","model-value","onUpdate:modelValue"]),We,e.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!b.installAssistantActive?(d(),c("div",Le,[n(I,{title:"Zugeordnete ID-Tags","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/tag_id"],"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/tag_id",o)},null,8,["model-value","onUpdate:modelValue"]),n(E,{subtype:"info"},{default:a(()=>[l(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung."),Pe,h("span",{innerHTML:e.$store.state.text.rfidWiki},null,8,ye)]),_:1}),Ae])):m("",!0),n(D,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type,"onUpdate:modelValue":o=>s.updateSelectedSocModule(i,o)},{help:a(()=>[l(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),Ee,l(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),Be,l(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),Fe,l(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")]),_:2},1032,["options","model-value","onUpdate:modelValue"]),e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"].type?(d(),c("div",qe,[n(w,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"use_soc_from_cp")},{help:a(()=>[l(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{help:a(()=>[l(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")]),default:a(()=>[l(" Aktualisierung der Fahrzeugdaten ")]),_:1}),n(k,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o*60,"request_interval_not_charging")},{help:a(()=>[l(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":o=>e.updateState("openWB/vehicle/"+i+"/soc_module/general_config",o,"request_only_plugged")},{help:a(()=>[l(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(R,{vehicleId:i,vehicle:e.$store.state.mqtt["openWB/vehicle/"+i+"/soc_module/config"],"onUpdate:configuration":o=>s.updateConfiguration("openWB/vehicle/"+i+"/soc_module/config",o)},null,8,["vehicleId","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[i!==0?{name:"actions",fn:a(o=>[o.collapsed?m("",!0):(d(),p(W,{key:0,class:"bg-danger clickable",onClick:t=>s.removeVehicleModal(i,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),Me,n(P,null,{default:a(()=>[l("Profile")]),_:1}),n(A,{collapsible:!0,collapsed:!0},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),l(" Fahrzeug-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(W,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),c("div",De,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),c("div",Ze,[n(E,{subtype:"info"},{default:a(()=>[l(" Ein anderes Fahrzeug-Profil wird erst "),xe,l(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")]),_:1}),(d(!0),c(y,null,B(s.evTemplates,(i,o)=>(d(),p(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!0},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Angaben zur Batterie ")]),_:1}),n(k,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":i.battery_capacity/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"battery_capacity")},{help:a(()=>[l(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),c("div",Ne,[n(k,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":i.efficiency,"onUpdate:modelValue":t=>e.updateState(o,t,"efficiency")},{help:a(()=>[l(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),Oe,l(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),Ie,l(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),Re,l(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),$e]),_:2},1032,["model-value","onUpdate:modelValue"])])),n(k,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":i.average_consump/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),c("div",He,[n(P,null,{default:a(()=>[l(" Angaben zur Ladeleistung (DC) ")]),_:1}),n(k,{title:"Mindestleistung",min:5,unit:"kW","model-value":e.ac_current2dc_power(i.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Maximalleistung",unit:"kW","model-value":e.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),n(P,null,{default:a(()=>[l(" Angaben zum Ladestrom "),s.dcChargingEnabled===!0?(d(),c("span",je," (AC) ")):m("",!0)]),_:1}),n(z,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":i.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"min_current")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),n(k,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":i.nominal_difference,"onUpdate:modelValue":t=>e.updateState(o,t,"nominal_difference")},{help:a(()=>[l(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(P,null,{default:a(()=>[l(" Angaben zur Handhabung von Phasen "),s.dcChargingEnabled===!0?(d(),c("span",Je," (AC) ")):m("",!0)]),_:1}),n(w,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.max_phases,"onUpdate:modelValue":t=>e.updateState(o,t,"max_phases")},{help:a(()=>[l(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.control_pilot_interruption,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption")},{help:a(()=>[l(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')]),_:2},1032,["model-value","onUpdate:modelValue"]),i.control_pilot_interruption?(d(),p(k,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":i.control_pilot_interruption_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_phase_switch,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_phase_switch")},{help:a(()=>[l(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":i.prevent_charge_stop,"onUpdate:modelValue":t=>e.updateState(o,t,"prevent_charge_stop")},{help:a(()=>[l(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":i.phase_switch_pause,"onUpdate:modelValue":t=>e.updateState(o,t,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),c("div",Ge,[n(k,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":i.keep_charge_active_duration,"onUpdate:modelValue":t=>e.updateState(o,t,"keep_charge_active_duration")},{help:a(()=>[l(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[e.$store.state.mqtt["openWB/general/extern"]===!1&&!t.collapsed?(d(),p(W,{key:0,class:"bg-danger clickable",onClick:g=>s.removeEvTemplateModal(o,g)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),n(A,{collapsible:!0,collapsed:e.$route.params.section!="charge_template"},{header:a(()=>[n(x,{"fixed-width":"",class:"fa-lg"},{default:a(()=>[n(v,{"fixed-width":"",icon:["far","file"]}),n(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),l(" Lade-Profile ")]),actions:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(W,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:a(()=>[e.$store.state.mqtt["openWB/general/extern"]===!0?(d(),c("div",Qe,[n(E,{subtype:"info"},{default:a(()=>[l(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')]),_:1})])):(d(),c("div",Xe,[(d(!0),c(y,null,B(s.chargeTemplates,(i,o)=>(d(),p(A,{key:o,title:i.name?i.name:o,collapsible:!0,collapsed:!(e.$route.params.section=="charge_template"&&parseInt(e.$route.params.section_index)==s.getChargeTemplateIndex(o))},q({default:a(()=>[n(U,{title:"Bezeichnung","model-value":i.name,"onUpdate:modelValue":t=>e.updateState(o,t,"name"),disabled:o.endsWith("/0")},q({_:2},[o.endsWith("/0")?{name:"help",fn:a(()=>[l(" Das Standard-Profil kann nicht umbenannt werden. ")]),key:"0"}:void 0]),1032,["model-value","onUpdate:modelValue","disabled"]),n(P,null,{default:a(()=>[l(" Allgemeine Optionen ")]),_:1}),n(w,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":i.chargemode.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.selected")},{help:a(()=>[l(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),Ye,l(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),Ke,et]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),c("div",tt,[n(w,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.prio,"onUpdate:modelValue":t=>e.updateState(o,t,"prio")},{help:a(()=>[l(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.time_charging.active,"onUpdate:modelValue":t=>e.updateState(o,t,"time_charging.active")},{help:a(()=>[l(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.load_default,"onUpdate:modelValue":t=>e.updateState(o,t,"load_default")},{help:a(()=>[l(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(w,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.et.active,"onUpdate:modelValue":t=>e.updateState(o,t,"et.active")},null,8,["model-value","onUpdate:modelValue"]),i.et.active==!0?(d(),c("div",nt,[!e.$store.state.mqtt["openWB/optional/et/provider"]||!e.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),c("div",at,[n(E,{subtype:"danger"},{default:a(()=>[l(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")]),_:1})])):m("",!0),n(k,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":i.et.max_price*1e5,"onUpdate:modelValue":t=>e.updateState(o,parseFloat((t/1e5).toFixed(7)),"et.max_price")},{help:a(()=>[l(" Für Zielladen werden die günstigsten Stunden ermittelt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),lt])),n(P,null,{default:a(()=>[l("Sofortladen")]),_:1}),n(z,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.instant_charging.current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(k,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.instant_charging.dc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":i.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.selected")},{help:a(()=>[l(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":i.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.instant_charging.limit.soc")},{help:a(()=>[l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(k,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":i.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":t=>e.updateState(o,t*1e3,"chargemode.instant_charging.limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),it,n(P,null,{default:a(()=>[l("PV-Laden")]),_:1}),n(z,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":i.chargemode.pv_charging.min_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_current")},{help:a(()=>[l(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(k,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_current")},{help:a(()=>[l(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(z,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":i.chargemode.pv_charging.max_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.max_soc")},{help:a(()=>[l(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),ot,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":i.chargemode.pv_charging.min_soc,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc")},{help:a(()=>[l(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),rt,l(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":i.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(k,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(i.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":t=>e.updateState(o,e.dc_power2ac_current(t),"chargemode.pv_charging.dc_min_soc_current")},{help:a(()=>[l(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":t=>e.updateState(o,t,"chargemode.pv_charging.feed_in_limit")},{help:a(()=>[l(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')]),_:2},1032,["model-value","onUpdate:modelValue"]),dt,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateSchedulePlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),ut,l(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),st,l(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")]),default:a(()=>[l(" Zielladen ")]),_:2},1024),(d(!0),c(y,null,B(s.getChargeTemplateScheduledChargingPlans(o),(t,g)=>(d(),p(A,{key:g,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(d(),c("span",{key:0,onClick:N(T=>e.updateState(g,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(d(),c("span",ct,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc_scheduled)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(d(),c("span",ht,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time)+" ",1),t.frequency.selected=="once"?(d(),c("span",gt,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once)),1)])):m("",!0),t.frequency.selected=="daily"?(d(),c("span",pt,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(d(),c("span",bt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,mt)):m("",!0),u.collapsed==!1?(d(),p(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateSchedulePlanModal(o,g,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(g,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(g,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Ziel-Uhrzeit",subtype:"time","model-value":t.time,"onUpdate:modelValue":u=>e.updateState(g,u,"time")},{help:a(()=>[l(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(g,u,"current")},{help:a(()=>[l(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(g,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(g,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(d(),p(z,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_scheduled,"onUpdate:modelValue":u=>e.updateState(g,u,"limit.soc_scheduled")},{help:a(()=>[l(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="soc"?(d(),p(z,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc_limit,"onUpdate:modelValue":u=>e.updateState(g,u,"limit.soc_limit")},{help:a(()=>[l(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(d(),p(k,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(g,u*1e3,"limit.amount")},{help:a(()=>[l(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(g,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(d(),p(U,{key:4,title:"Datum",subtype:"date","model-value":t.frequency.once,"onUpdate:modelValue":u=>e.updateState(g,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(d(),c("div",vt,[(d(!0),c(y,null,B(e.weekdays,(u,T)=>(d(),p(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":Z=>e.updateState(g,Z,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),b.installAssistantActive?m("",!0):(d(),c("div",ft,[_t,n(P,null,{actions:a(()=>[n(W,{class:"bg-success clickable",onClick:t=>s.addChargeTemplateTimeChargingPlan(o,t)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:a(()=>[l(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")]),default:a(()=>[l(" Laden nach Zeitplan ")]),_:2},1024)])),(d(!0),c(y,null,B(s.getChargeTemplateTimeChargingPlans(o),(t,g)=>(d(),p(A,{key:g,title:t.name,collapsible:!0,collapsed:!0},{actions:a(u=>[u.collapsed==!0?(d(),c("span",{key:0,onClick:N(T=>e.updateState(g,!t.active,"active"),["stop"]),class:O(["subheader pill clickable",t.active?"bg-success":"bg-danger"])},[t.limit.selected=="soc"?(d(),c("span",kt,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),l(" "+S(t.limit.soc)+"% ",1)])):m("",!0),t.limit.selected=="amount"?(d(),c("span",Vt,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),l(" "+S(t.limit.amount/1e3)+"kWh ",1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),l(" "+S(t.time[0])+" - "+S(t.time[1])+" ",1),t.frequency.selected=="once"?(d(),c("span",Ct,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),l(" "+S(e.formatDate(t.frequency.once[0])==e.formatDate(t.frequency.once[1])?e.formatDate(t.frequency.once[0]):e.formatDate(t.frequency.once[0])+" - "+e.formatDate(t.frequency.once[1])),1)])):m("",!0),t.frequency.selected=="daily"?(d(),c("span",St,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),t.frequency.selected=="weekly"?(d(),c("span",zt,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,wt)):m("",!0),u.collapsed==!1?(d(),p(W,{key:1,class:"bg-danger clickable",onClick:T=>s.removeChargeTemplateTimeChargingPlanModal(o,g,T)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:a(()=>[n(U,{title:"Bezeichnung","model-value":t.name,"onUpdate:modelValue":u=>e.updateState(g,u,"name")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.active,"onUpdate:modelValue":u=>e.updateState(g,u,"active")},null,8,["model-value","onUpdate:modelValue"]),n(z,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":t.current,"onUpdate:modelValue":u=>e.updateState(g,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(k,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":e.ac_current2dc_power(t.dc_current),"onUpdate:modelValue":u=>e.updateState(g,e.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n(w,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":t.limit.selected,"onUpdate:modelValue":u=>e.updateState(g,u,"limit.selected")},{help:a(()=>[l(" Bestimmt die Art der Grenze für den Ladevorgang. ")]),_:2},1032,["model-value","onUpdate:modelValue"]),t.limit.selected=="soc"?(d(),p(z,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":t.limit.soc,"onUpdate:modelValue":u=>e.updateState(g,u,"limit.soc")},{help:a(()=>[l(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),t.limit.selected=="amount"?(d(),p(k,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":t.limit.amount/1e3,"onUpdate:modelValue":u=>e.updateState(g,u*1e3,"limit.amount")},{help:a(()=>[l(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n(U,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":t.time[0],"onUpdate:modelValue":u=>e.updateState(g,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),n(U,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":t.time[1],"onUpdate:modelValue":u=>e.updateState(g,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),n(w,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":t.frequency.selected,"onUpdate:modelValue":u=>e.updateState(g,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),t.frequency.selected=="once"?(d(),p(U,{key:3,title:"Gültig ab",subtype:"date","model-value":t.frequency.once[0],"onUpdate:modelValue":u=>e.updateState(g,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="once"?(d(),p(U,{key:4,title:"Gültig bis",subtype:"date",min:t.frequency.once[0],"model-value":t.frequency.once[1],"onUpdate:modelValue":u=>e.updateState(g,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),t.frequency.selected=="weekly"?(d(),c("div",Ut,[(d(!0),c(y,null,B(e.weekdays,(u,T)=>(d(),p(w,{key:T,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.frequency.weekly[T],"onUpdate:modelValue":Z=>e.updateState(g,Z,"frequency.weekly."+T)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[o.endsWith("/0")?void 0:{name:"actions",fn:a(t=>[t.collapsed?m("",!0):(d(),p(W,{key:0,class:"bg-danger clickable",onClick:g=>s.removeChargeTemplateModal(o,g)},{default:a(()=>[n(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),n($,{formName:"vehicleConfigForm",onSave:r[5]||(r[5]=i=>e.$emit("save")),onReset:r[6]||(r[6]=i=>e.$emit("reset")),onDefaults:r[7]||(r[7]=i=>e.$emit("defaults"))})])])],64)}const Wt=M(Ve,[["render",Tt],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),Et=Object.freeze(Object.defineProperty({__proto__:null,default:Wt},Symbol.toStringTag,{value:"Module"}));export{he as V,Wt as a,Et as b};
diff --git a/web/settings/assets/backup_cloud-0c265ebd.js b/web/settings/assets/backup_cloud-0c265ebd.js
deleted file mode 100644
index ee491b28cd..0000000000
--- a/web/settings/assets/backup_cloud-0c265ebd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{B as i}from"./DataManagement-eb2fc5d7.js";import{_ as r,u as s,k as p,l as d,D as u,N as m,y as a,x as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[i]},f={class:"backup-cloud-samba"},c=l("br",null,null,-1),g=l("br",null,null,-1),v=l("br",null,null,-1);function _(e,o,C,k,w,B){const t=s("openwb-base-text-input");return p(),d("div",f,[u(t,{title:"Server",subtype:"host",required:"","model-value":e.backupCloud.configuration.smb_server,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),u(t,{title:"Freigabe",required:"","model-value":e.backupCloud.configuration.smb_share,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),u(t,{title:"Unterordner (optional)","model-value":e.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>[a(" Jeder Unterordner muss mit / enden."),c,a(' Die Zeichen \\:"|*?<> sind verboten!'),g,a(" Beispiel 1: openwb/ "),v,a(" Beispiel 2: openwb/lp2/ ")]),_:1},8,["model-value"]),u(t,{title:"Benutzer",subtype:"user","model-value":e.backupCloud.configuration.smb_user,"onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),u(t,{title:"Kennwort",subtype:"password","model-value":e.backupCloud.configuration.smb_password,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const z=r(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{z as default};
diff --git a/web/settings/assets/backup_cloud-f487f6db.js b/web/settings/assets/backup_cloud-333e299c.js
similarity index 58%
rename from web/settings/assets/backup_cloud-f487f6db.js
rename to web/settings/assets/backup_cloud-333e299c.js
index 7f8dce7984..f0421da69c 100644
--- a/web/settings/assets/backup_cloud-f487f6db.js
+++ b/web/settings/assets/backup_cloud-333e299c.js
@@ -1 +1 @@
-import{B as a}from"./DataManagement-eb2fc5d7.js";import{_ as p,u as s,k as r,l as u,D as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"BackupCloudNfs",mixins:[a]},l={class:"backup-cloud-nfs"};function d(o,e,m,_,f,b){const t=s("openwb-base-text-input");return r(),u("div",l,[i(t,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":o.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.nfs_share"))},null,8,["model-value"])])}const N=p(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{N as default};
+import{B as a}from"./DataManagement-ad71d105.js";import{_ as p,u as s,k as r,l as u,D as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"BackupCloudNfs",mixins:[a]},l={class:"backup-cloud-nfs"};function d(o,e,m,_,f,b){const t=s("openwb-base-text-input");return r(),u("div",l,[i(t,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":o.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.nfs_share"))},null,8,["model-value"])])}const N=p(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{N as default};
diff --git a/web/settings/assets/backup_cloud-3f7a1039.js b/web/settings/assets/backup_cloud-3f7a1039.js
new file mode 100644
index 0000000000..090608fd51
--- /dev/null
+++ b/web/settings/assets/backup_cloud-3f7a1039.js
@@ -0,0 +1 @@
+import{B as r}from"./DataManagement-ad71d105.js";import{_ as i,u as s,k as p,l as d,D as t,N as m,y as a,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[r]},f={class:"backup-cloud-samba"};function g(o,e,v,C,k,c){const u=s("openwb-base-text-input");return p(),d("div",f,[t(u,{title:"Server",subtype:"host",required:"","model-value":o.backupCloud.configuration.smb_server,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),t(u,{title:"Freigabe",required:"","model-value":o.backupCloud.configuration.smb_share,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),t(u,{title:"Unterordner (optional)","model-value":o.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>e[5]||(e[5]=[a(" Jeder Unterordner muss mit / enden."),l("br",null,null,-1),a(' Die Zeichen \\:"|*?<> sind verboten!'),l("br",null,null,-1),a(" Beispiel 1: openwb/ "),l("br",null,null,-1),a(" Beispiel 2: openwb/lp2/ ")])),_:1},8,["model-value"]),t(u,{title:"Benutzer",subtype:"user","model-value":o.backupCloud.configuration.smb_user,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),t(u,{title:"Kennwort",subtype:"password","model-value":o.backupCloud.configuration.smb_password,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const D=i(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{D as default};
diff --git a/web/settings/assets/backup_cloud-510cc7e0.js b/web/settings/assets/backup_cloud-510cc7e0.js
new file mode 100644
index 0000000000..e8e19a817a
--- /dev/null
+++ b/web/settings/assets/backup_cloud-510cc7e0.js
@@ -0,0 +1 @@
+import{B as s}from"./DataManagement-ad71d105.js";import{_ as a,u as r,k as i,l,D as u,N as d,y as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[s]},c={class:"backup-cloud-next-cloud"};function f(o,e,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":o.backupCloud.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>e[3]||(e[3]=[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")])),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":o.backupCloud.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":o.backupCloud.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{$ as default};
diff --git a/web/settings/assets/backup_cloud-71b57f4d.js b/web/settings/assets/backup_cloud-71b57f4d.js
new file mode 100644
index 0000000000..43dcfcd284
--- /dev/null
+++ b/web/settings/assets/backup_cloud-71b57f4d.js
@@ -0,0 +1 @@
+import{B as c}from"./DataManagement-ad71d105.js";import{_ as m,u as a,k as b,l as f,D as t,N as r,y as n,x as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},v={class:"backup-cloud-one-drive"};function k(o,e,h,w,B,C){const d=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),l=a("openwb-base-button-input");return b(),f("div",v,[t(d,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[n(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),i("br",null,null,-1),n(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")])),_:1}),t(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":o.backupCloud.configuration.backuppath,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>e[4]||(e[4]=[n(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),i("br",null,null,-1),n(" Beispiel: /openWB/Backup/ ")])),_:1},8,["model-value"]),t(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":o.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(p,null,{default:r(()=>e[5]||(e[5]=[n(" Zugang zu OneDrive für diese openWB autorisieren ")])),_:1}),t(l,{title:"1. Anmeldeanforderung erstellen","button-text":"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:e[1]||(e[1]=s=>o.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>e[6]||(e[6]=[n(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),i("br",null,null,-1),n(" Weitere Infos:"),i("br",null,null,-1),i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1)])),_:1}),t(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":o.backupCloud.configuration.authcode},null,8,["model-value"]),t(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":o.backupCloud.configuration.authurl},{help:r(()=>e[7]||(e[7]=[n(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")])),_:1},8,["model-value"]),t(l,{title:"4. Token abrufen und speichern","button-text":"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:e[2]||(e[2]=s=>o.sendCommand("retrieveMSALTokens",{}))},{help:r(()=>e[8]||(e[8]=[n(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")])),_:1})])}const L=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{L as default};
diff --git a/web/settings/assets/backup_cloud-7c8657cf.js b/web/settings/assets/backup_cloud-7c8657cf.js
deleted file mode 100644
index 099a6a45b2..0000000000
--- a/web/settings/assets/backup_cloud-7c8657cf.js
+++ /dev/null
@@ -1 +0,0 @@
-import{B as a}from"./DataManagement-eb2fc5d7.js";import{_ as s,u as r,k as i,l,D as u,N as d,y as p}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[a]},c={class:"backup-cloud-next-cloud"};function f(e,o,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":e.backupCloud.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")]),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":e.backupCloud.configuration.user,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":e.backupCloud.configuration.password,"onUpdate:modelValue":o[2]||(o[2]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const y=s(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{y as default};
diff --git a/web/settings/assets/backup_cloud-ca22b0b2.js b/web/settings/assets/backup_cloud-ca22b0b2.js
deleted file mode 100644
index 7bb1b7a2af..0000000000
--- a/web/settings/assets/backup_cloud-ca22b0b2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{B as c}from"./DataManagement-eb2fc5d7.js";import{_ as m,u as a,k as b,l as f,D as n,N as r,y as e,x as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},h={class:"backup-cloud-one-drive"},_=i("br",null,null,-1),v=i("br",null,null,-1),k=i("br",null,null,-1),w=i("br",null,null,-1),B=i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),C=i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1);function y(t,o,A,D,z,W){const l=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),d=a("openwb-base-button-input");return b(),f("div",h,[n(l,{subtype:"info"},{default:r(()=>[e(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),_,e(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")]),_:1}),n(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":t.backupCloud.configuration.backuppath,"onUpdate:modelValue":o[0]||(o[0]=s=>t.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>[e(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),v,e(" Beispiel: /openWB/Backup/ ")]),_:1},8,["model-value"]),n(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":t.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),n(p,null,{default:r(()=>[e(" Zugang zu OneDrive für diese openWB autorisieren ")]),_:1}),n(d,{title:"1. Anmeldeanforderung erstellen",buttonText:"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:o[1]||(o[1]=s=>t.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>[e(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),k,e(" Weitere Infos:"),w,B,C]),_:1}),n(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":t.backupCloud.configuration.authcode},null,8,["model-value"]),n(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":t.backupCloud.configuration.authurl},{help:r(()=>[e(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")]),_:1},8,["model-value"]),n(d,{title:"4. Token abrufen und speichern",buttonText:"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:o[2]||(o[2]=s=>t.sendSystemCommand("retrieveMSALTokens",{}))},{help:r(()=>[e(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")]),_:1})])}const U=m(g,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{U as default};
diff --git a/web/settings/assets/bat-037fc88f.js b/web/settings/assets/bat-037fc88f.js
deleted file mode 100644
index 5934da985c..0000000000
--- a/web/settings/assets/bat-037fc88f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as c,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(e,o,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:c(()=>[d(" Einstellungen für Fronius Batteriespeicher ")]),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":e.component.configuration.meter_id,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const E=p(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-03d10b16.js b/web/settings/assets/bat-03d10b16.js
new file mode 100644
index 0000000000..c8c8806796
--- /dev/null
+++ b/web/settings/assets/bat-03d10b16.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as o,k as m,l as u,D as t,N as l,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},f={class:"device-fems-bat"};function _(n,e,b,v,g,C){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return m(),u("div",f,[t(i,null,{default:l(()=>e[1]||(e[1]=[c(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")])),_:1}),t(s,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":n.component.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.num"))},null,8,["model-value"])])}const M=p(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{M as default};
diff --git a/web/settings/assets/bat-053db3b2.js b/web/settings/assets/bat-053db3b2.js
deleted file mode 100644
index 640061b84c..0000000000
--- a/web/settings/assets/bat-053db3b2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as o,k as m,l as u,D as t,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIslandBat",mixins:[r]},_={class:"device-sunnyisland-bat"};function b(e,n,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",_,[t(s,null,{default:d(()=>[l(" Einstellungen für Sunny Island Batteriespeicher ")]),_:1}),t(i,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[0]||(n[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const N=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-1c6c9346.js b/web/settings/assets/bat-1c6c9346.js
deleted file mode 100644
index 9ba542a67e..0000000000
--- a/web/settings/assets/bat-1c6c9346.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as t,k as p,l as u,D as n,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},_={class:"device-huawei-smart-logger-bat"};function b(e,o,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",_,[n(i,null,{default:d(()=>[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")]),_:1}),n(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-26612c12.js b/web/settings/assets/bat-26612c12.js
deleted file mode 100644
index 77a78f390b..0000000000
--- a/web/settings/assets/bat-26612c12.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as l,k as p,l as m,D as o,N as a,y as r,x as g}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"},c=g("br",null,null,-1);function w(e,t,_,v,j,h){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>[r(" Einstellungen für JSON Batteriespeicher ")]),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":e.component.configuration.jq_power,"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),c,r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")]),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":e.component.configuration.jq_soc,"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":e.component.configuration.jq_imported,"onUpdate:modelValue":t[2]||(t[2]=n=>e.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":e.component.configuration.jq_exported,"onUpdate:modelValue":t[3]||(t[3]=n=>e.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const N=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-2a37d4a1.js b/web/settings/assets/bat-2a37d4a1.js
new file mode 100644
index 0000000000..09cd0c2d30
--- /dev/null
+++ b/web/settings/assets/bat-2a37d4a1.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as p,l as u,D as n,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},c={class:"device-huawei-smart-logger-bat"};function b(o,e,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",c,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")])),_:1}),n(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-2ad336ba.js b/web/settings/assets/bat-2ad336ba.js
deleted file mode 100644
index 50aa4ac329..0000000000
--- a/web/settings/assets/bat-2ad336ba.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(e,o,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>[d(" Einstellungen für Solis Batteriespeicher ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-3688b404.js b/web/settings/assets/bat-3688b404.js
deleted file mode 100644
index 82ae5448a0..0000000000
--- a/web/settings/assets/bat-3688b404.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as d,D as t,N as u,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(e,o,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>[c(" Einstellungen für Deye Batteriespeicher ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-375e955a.js b/web/settings/assets/bat-375e955a.js
deleted file mode 100644
index cc44fcd340..0000000000
--- a/web/settings/assets/bat-375e955a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as o,k as l,l as u,D as n,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[p]},_={class:"device-openwb-evukit-bat"};function v(e,t,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:c(()=>[m(" Einstellungen für openWB EVU-Kit Batteriespeicher ")]),_:1}),n(s,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":t[0]||(t[0]=a=>e.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const V=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-3bf3716c.js b/web/settings/assets/bat-3bf3716c.js
deleted file mode 100644
index eafcb3d27f..0000000000
--- a/web/settings/assets/bat-3bf3716c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as t,k as u,l as m,D as i,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlexBat",mixins:[l]},_={class:"device-openwb-flex-bat"};function f(e,o,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",_,[i(a,null,{default:d(()=>[c(" Einstellungen für openWB-Flex Batteriespeicher ")]),_:1}),i(p,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":e.component.configuration.id,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const N=r(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-45a2224e.js b/web/settings/assets/bat-45a2224e.js
new file mode 100644
index 0000000000..4bf21f5bb5
--- /dev/null
+++ b/web/settings/assets/bat-45a2224e.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as o,k as l,l as m,D as n,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(t,e,f,v,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),m("div",_,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const E=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-5261b4cb.js b/web/settings/assets/bat-5261b4cb.js
deleted file mode 100644
index 3fa54d48ec..0000000000
--- a/web/settings/assets/bat-5261b4cb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as u}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as s,k as p,l as h,D as o,N as i,y as e,x as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceHttpBat",mixins:[u]},c={class:"device-http-bat"},_=r("br",null,null,-1),b=r("br",null,null,-1),f=r("br",null,null,-1),v=r("br",null,null,-1),w=r("br",null,null,-1);function k(n,t,z,S,Z,C){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),h("div",c,[o(d,null,{default:i(()=>[e(" Einstellungen für Http Batteriespeicher ")]),_:1}),o(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":n.component.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=a=>n.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),_,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),o(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":n.component.configuration.soc_path,"onUpdate:modelValue":t[1]||(t[1]=a=>n.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),b,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")]),_:1},8,["model-value"]),o(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.imported_path,"onUpdate:modelValue":t[2]||(t[2]=a=>n.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),f,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")]),_:1},8,["model-value"]),o(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.exported_path,"onUpdate:modelValue":t[3]||(t[3]=a=>n.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),v,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),w,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const E=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-5763ad59.js b/web/settings/assets/bat-5763ad59.js
new file mode 100644
index 0000000000..4829d6cff6
--- /dev/null
+++ b/web/settings/assets/bat-5763ad59.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as o,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[a]},_={class:"device-openwb-evukit-bat"};function v(t,e,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-713dd112.js b/web/settings/assets/bat-713dd112.js
new file mode 100644
index 0000000000..38b31e416a
--- /dev/null
+++ b/web/settings/assets/bat-713dd112.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssBat",mixins:[r]},c={class:"device-fox_ess-bat"};function b(o,e,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{h as default};
diff --git a/web/settings/assets/bat-7c88776b.js b/web/settings/assets/bat-7c88776b.js
new file mode 100644
index 0000000000..f981c4f2da
--- /dev/null
+++ b/web/settings/assets/bat-7c88776b.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as n,k as u,l,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyBat",mixins:[m]},b={class:"device-sigenergy-bat"};function _(o,e,c,f,v,y){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),l("div",b,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Sigenergy Batteriespeicher ")])),_:1}),t(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const N=d(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-7dc3e16d.js b/web/settings/assets/bat-7dc3e16d.js
new file mode 100644
index 0000000000..727068d95c
--- /dev/null
+++ b/web/settings/assets/bat-7dc3e16d.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as r,k as b,l as f,D as o,N as l,y as t,x as n,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttBat",mixins:[m]},k={class:"device-mqtt-bat"};function B(i,e,x,v,w,z){const u=r("openwb-base-heading"),s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return b(),f("div",k,[o(u,null,{default:l(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Batteriespeicher ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>[e[21]||(e[21]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung")),e[3]||(e[3]=n("br",null,null,-1)),e[4]||(e[4]=t(" Beispiel: ")),e[5]||(e[5]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/imported ",1)]),_:1}),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[8]||(e[8]=n("br",null,null,-1)),e[9]||(e[9]=t(" Beispiel: ")),e[10]||(e[10]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/exported ",1)]),_:1}),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[13]||(e[13]=n("br",null,null,-1)),e[14]||(e[14]=t(" Beispiel: ")),e[15]||(e[15]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/soc ",1)]),_:1}),e[16]||(e[16]=n("br",null,null,-1)),e[17]||(e[17]=t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100")),e[18]||(e[18]=n("br",null,null,-1)),e[19]||(e[19]=t(" Beispiel: ")),e[20]||(e[20]=n("span",{class:"text-info"},"95",-1))])])]),_:1})])}const P=d(g,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{P as default};
diff --git a/web/settings/assets/bat-862c0f08.js b/web/settings/assets/bat-862c0f08.js
deleted file mode 100644
index fc7b66fb34..0000000000
--- a/web/settings/assets/bat-862c0f08.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEssBat",mixins:[r]},l={class:"device-fox_ess-bat"};function b(e,o,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",l,[t(s,null,{default:d(()=>[_(" Einstellungen für FoxEss Batteriespeicher ")]),_:1}),t(i,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-86d1c852.js b/web/settings/assets/bat-86d1c852.js
deleted file mode 100644
index 1d3d1c99f5..0000000000
--- a/web/settings/assets/bat-86d1c852.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as n,k as u,l as c,D as t,N as i,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSigenergyBat",mixins:[m]},l={class:"device-sigenergy-bat"};function g(e,o,b,f,v,y){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),c("div",l,[t(r,null,{default:i(()=>[s(" Einstellungen für Sigenergy Batteriespeicher ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const M=d(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{M as default};
diff --git a/web/settings/assets/bat-8c346425.js b/web/settings/assets/bat-8c346425.js
new file mode 100644
index 0000000000..64de8e848f
--- /dev/null
+++ b/web/settings/assets/bat-8c346425.js
@@ -0,0 +1 @@
+import{C as l}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as t,k as u,l as m,D as i,N as d,y as b}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenwbFlexBat",mixins:[l]},f={class:"device-openwb-flex-bat"};function _(o,e,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",f,[i(a,null,{default:d(()=>e[2]||(e[2]=[b(" Einstellungen für openWB-Flex Batteriespeicher ")])),_:1}),i(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const h=r(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{h as default};
diff --git a/web/settings/assets/bat-8dd42ecd.js b/web/settings/assets/bat-8dd42ecd.js
new file mode 100644
index 0000000000..5ab13f57f7
--- /dev/null
+++ b/web/settings/assets/bat-8dd42ecd.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-9577327c.js b/web/settings/assets/bat-9577327c.js
new file mode 100644
index 0000000000..fa68319413
--- /dev/null
+++ b/web/settings/assets/bat-9577327c.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as s,k as p,l as g,D as r,N as i,y as n,x as o}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpBat",mixins:[u]},b={class:"device-http-bat"};function f(t,e,v,w,c,k){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),g("div",b,[r(d,null,{default:i(()=>e[4]||(e[4]=[n(" Einstellungen für Http Batteriespeicher ")])),_:1}),r(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>e[5]||(e[5]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>e[6]||(e[6]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),o("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const A=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{A as default};
diff --git a/web/settings/assets/bat-9807eb70.js b/web/settings/assets/bat-9807eb70.js
new file mode 100644
index 0000000000..8ada093cfe
--- /dev/null
+++ b/web/settings/assets/bat-9807eb70.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(o,e,f,g,v,w){const i=n("openwb-base-heading"),a=n("openwb-base-number-input");return d(),m("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Batteriespeicher ")])),_:1}),t(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-98a7f166.js b/web/settings/assets/bat-98a7f166.js
new file mode 100644
index 0000000000..c243629034
--- /dev/null
+++ b/web/settings/assets/bat-98a7f166.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as p,l,D as n,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxBat",mixins:[r]},b={class:"device-solarmax-bat"};function _(o,e,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",b,[n(a,{subtype:"info"},{default:u(()=>e[1]||(e[1]=[d(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const T=m(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{T as default};
diff --git a/web/settings/assets/bat-9eca6500.js b/web/settings/assets/bat-9eca6500.js
new file mode 100644
index 0000000000..8f1b7f481b
--- /dev/null
+++ b/web/settings/assets/bat-9eca6500.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as t,k as d,l as c,D as i,N as a,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMTecBat",mixins:[m]},_={class:"device-mtec-bat"};function f(o,e,v,g,w,C){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",_,[i(p,null,{default:a(()=>e[2]||(e[2]=[s(" Einstellungen für M-Tec Batteriespeicher ")])),_:1}),i(r,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":o.component.configuration.generation,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>e[3]||(e[3]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const N=l(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-af534ff4.js b/web/settings/assets/bat-af534ff4.js
new file mode 100644
index 0000000000..f017422141
--- /dev/null
+++ b/web/settings/assets/bat-af534ff4.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as u,l as d,D as n,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(o,e,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return u(),d("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für Studer Batteriespeicher ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-afab0752.js b/web/settings/assets/bat-afab0752.js
deleted file mode 100644
index 8774bba244..0000000000
--- a/web/settings/assets/bat-afab0752.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},l={class:"device-sunnyboy-bat"};function b(e,o,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",l,[t(i,null,{default:d(()=>[c(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const N=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-b62c3097.js b/web/settings/assets/bat-b62c3097.js
new file mode 100644
index 0000000000..0bd5e59b64
--- /dev/null
+++ b/web/settings/assets/bat-b62c3097.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as d,D as t,N as u,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{h as default};
diff --git a/web/settings/assets/bat-c3b737a8.js b/web/settings/assets/bat-c3b737a8.js
new file mode 100644
index 0000000000..5ea22bd2f7
--- /dev/null
+++ b/web/settings/assets/bat-c3b737a8.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[c(" Einstellungen für Victron Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-c566a75f.js b/web/settings/assets/bat-c566a75f.js
deleted file mode 100644
index f75d8aa6a8..0000000000
--- a/web/settings/assets/bat-c566a75f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as u,l as d,D as n,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(e,o,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return u(),d("div",_,[n(i,null,{default:m(()=>[c(" Einstellungen für Studer Batteriespeicher ")]),_:1}),n(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-c6e7f4e5.js b/web/settings/assets/bat-c6e7f4e5.js
new file mode 100644
index 0000000000..aca680beda
--- /dev/null
+++ b/web/settings/assets/bat-c6e7f4e5.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as o,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIslandBat",mixins:[r]},c={class:"device-sunnyisland-bat"};function b(n,e,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Sunny Island Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-cbe7bc84.js b/web/settings/assets/bat-cbe7bc84.js
deleted file mode 100644
index 8f67cc8b31..0000000000
--- a/web/settings/assets/bat-cbe7bc84.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as t,k as d,l as c,D as i,N as a,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTecBat",mixins:[m]},b={class:"device-mtec-bat"};function f(e,o,v,g,w,C){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",b,[i(p,null,{default:a(()=>[s(" Einstellungen für M-Tec Batteriespeicher ")]),_:1}),i(r,{title:"Generation",notSelected:"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":e.component.configuration.generation,required:"","onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const G=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{G as default};
diff --git a/web/settings/assets/bat-cc1835de.js b/web/settings/assets/bat-cc1835de.js
deleted file mode 100644
index d1cb1ddd0c..0000000000
--- a/web/settings/assets/bat-cc1835de.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as a,k as u,l as _,D as t,N as o,y as n,x as e,z as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceMqttBat",mixins:[c]},h={class:"device-mqtt-bat"},b=e("br",null,null,-1),f=e("br",null,null,-1),g=e("span",{class:"text-info"},"-123",-1),k=e("br",null,null,-1),B=e("br",null,null,-1),x=e("span",{class:"text-info"},"123.45",-1),v=e("br",null,null,-1),w=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),W=e("br",null,null,-1),D=e("br",null,null,-1),N=e("span",{class:"text-info"},"95",-1);function T(i,E,y,C,F,I){const p=a("openwb-base-heading"),l=a("openwb-base-copy-to-clipboard"),r=a("openwb-base-alert");return u(),_("div",h,[t(p,null,{default:o(()=>[n(" Einstellungen für MQTT Batteriespeicher ")]),_:1}),t(r,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(l,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+s(i.component.id)+"/get/power",1)]),_:1}),b,n(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung"),f,n(" Beispiel: "),g]),e("li",null,[t(l,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+s(i.component.id)+"/get/imported",1)]),_:1}),k,n(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),B,n(" Beispiel: "),x]),e("li",null,[t(l,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+s(i.component.id)+"/get/exported",1)]),_:1}),v,n(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),w,n(" Beispiel: "),z]),e("li",null,[t(l,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/bat/"+s(i.component.id)+"/get/soc",1)]),_:1}),W,n(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100"),D,n(" Beispiel: "),N])])]),_:1})])}const Q=d(m,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{Q as default};
diff --git a/web/settings/assets/bat-d04a40d4.js b/web/settings/assets/bat-d04a40d4.js
deleted file mode 100644
index 285c6b79b0..0000000000
--- a/web/settings/assets/bat-d04a40d4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(e,o,f,g,v,w){const a=n("openwb-base-heading"),i=n("openwb-base-number-input");return d(),m("div",_,[t(a,null,{default:l(()=>[u(" Einstellungen für SolarEdge Batteriespeicher ")]),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{S as default};
diff --git a/web/settings/assets/bat-da9423e8.js b/web/settings/assets/bat-da9423e8.js
deleted file mode 100644
index 6ad4923465..0000000000
--- a/web/settings/assets/bat-da9423e8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as c,D as t,N as u,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(e,o,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),c("div",_,[t(i,null,{default:u(()=>[d(" Einstellungen für Victron Batteriespeicher ")]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-dc1d9a2f.js b/web/settings/assets/bat-dc1d9a2f.js
new file mode 100644
index 0000000000..484588bff7
--- /dev/null
+++ b/web/settings/assets/bat-dc1d9a2f.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(o,e,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Fronius Batteriespeicher ")])),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const E=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-e05764b6.js b/web/settings/assets/bat-e05764b6.js
new file mode 100644
index 0000000000..6edbe47722
--- /dev/null
+++ b/web/settings/assets/bat-e05764b6.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as l,k as p,l as m,D as o,N as a,y as r,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"};function w(t,e,v,j,q,_){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>e[4]||(e[4]=[r(" Einstellungen für JSON Batteriespeicher ")])),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":t.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>e[5]||(e[5]=[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":t.component.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":t.component.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>e[6]||(e[6]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":t.component.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=n=>t.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>e[7]||(e[7]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const N=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-e23118da.js b/web/settings/assets/bat-e23118da.js
deleted file mode 100644
index 5d3ec65f16..0000000000
--- a/web/settings/assets/bat-e23118da.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as o,k as l,l as c,D as n,N as m,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(e,t,f,v,w,g){const i=o("openwb-base-heading"),a=o("openwb-base-select-input");return l(),c("div",_,[n(i,null,{default:m(()=>[u(" Einstellungen für openWB EVU-Kit Batteriespeicher ")]),_:1}),n(a,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":t[0]||(t[0]=s=>e.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-e4573157.js b/web/settings/assets/bat-e4573157.js
deleted file mode 100644
index 702cca1a69..0000000000
--- a/web/settings/assets/bat-e4573157.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as t,k as p,l,D as n,N as u,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceSolarmaxBat",mixins:[r]},_={class:"device-solarmax-bat"};function b(e,o,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",_,[n(a,{subtype:"info"},{default:u(()=>[c(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")]),_:1}),n(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=i=>e.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const T=m(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{T as default};
diff --git a/web/settings/assets/bat-f5f3db47.js b/web/settings/assets/bat-f5f3db47.js
deleted file mode 100644
index de8c01bbeb..0000000000
--- a/web/settings/assets/bat-f5f3db47.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as o,k as m,l as c,D as t,N as u,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},_={class:"device-fems-bat"};function f(e,n,b,v,g,C){const i=o("openwb-base-heading"),a=o("openwb-base-number-input");return m(),c("div",_,[t(i,null,{default:u(()=>[l(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")]),_:1}),t(a,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":e.component.configuration.num,"onUpdate:modelValue":n[0]||(n[0]=s=>e.updateConfiguration(s,"configuration.num"))},null,8,["model-value"])])}const M=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{M as default};
diff --git a/web/settings/assets/bat-fefe88d3.js b/web/settings/assets/bat-fefe88d3.js
new file mode 100644
index 0000000000..c0596933c8
--- /dev/null
+++ b/web/settings/assets/bat-fefe88d3.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},b={class:"device-sunnyboy-bat"};function c(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",b,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{S as default};
diff --git a/web/settings/assets/bat_smart_energy-2291c4ec.js b/web/settings/assets/bat_smart_energy-2291c4ec.js
new file mode 100644
index 0000000000..455c6f832b
--- /dev/null
+++ b/web/settings/assets/bat_smart_energy-2291c4ec.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as o,k as p,l as u,D as t,N as d,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[a]},b={class:"device-sunnyboy-bat-smart-energy"};function c(n,e,f,y,g,v){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return p(),u("div",b,[t(s,null,{default:d(()=>e[1]||(e[1]=[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const M=m(l,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{M as default};
diff --git a/web/settings/assets/bat_smart_energy-f0537d91.js b/web/settings/assets/bat_smart_energy-f0537d91.js
deleted file mode 100644
index abcea9ec76..0000000000
--- a/web/settings/assets/bat_smart_energy-f0537d91.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as i}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as o,k as p,l as u,D as t,N as _,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[i]},l={class:"device-sunnyboy-bat-smart-energy"};function b(e,n,f,y,g,v){const s=o("openwb-base-heading"),a=o("openwb-base-number-input");return p(),u("div",l,[t(s,null,{default:_(()=>[d(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[0]||(n[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const D=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{D as default};
diff --git a/web/settings/assets/chargePoint-218a4f96.js b/web/settings/assets/chargePoint-218a4f96.js
deleted file mode 100644
index 3e6e86ab4f..0000000000
--- a/web/settings/assets/chargePoint-218a4f96.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./ChargePointInstallation-fba1b24e.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointExternalOpenwb",mixins:[p]},_={class:"charge-point-external-openwb"};function g(e,n,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",_,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')]),_:1},8,["model-value"])])}const $=s(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{$ as default};
diff --git a/web/settings/assets/chargePoint-3f4bb03f.js b/web/settings/assets/chargePoint-3f4bb03f.js
new file mode 100644
index 0000000000..3a0a2976bf
--- /dev/null
+++ b/web/settings/assets/chargePoint-3f4bb03f.js
@@ -0,0 +1 @@
+import{C as p}from"./ChargePointInstallation-12a5c989.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointExternalOpenwb",mixins:[p]},c={class:"charge-point-external-openwb"};function g(n,e,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const $=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{$ as default};
diff --git a/web/settings/assets/chargePoint-4b4f3b43.js b/web/settings/assets/chargePoint-4b4f3b43.js
deleted file mode 100644
index 7950514ab4..0000000000
--- a/web/settings/assets/chargePoint-4b4f3b43.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as u}from"./ChargePointInstallation-fba1b24e.js";import{_ as p,u as t,k as i,l as d,D as m,A as l,N as c,y as g,B as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){(e=="series"||e=="socket")&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},h={class:"charge-point-internal-openwb"};function b(e,n,B,w,k,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",h,[m(r,{title:"Bauart",notSelected:"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":n[0]||(n[0]=o=>a.updateMode(o))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:c(()=>[g(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')]),_:1},8,["model-value"])):_("",!0)])}const M=p(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{M as default};
diff --git a/web/settings/assets/chargePoint-72c59831.js b/web/settings/assets/chargePoint-72c59831.js
new file mode 100644
index 0000000000..8b7fdc3b7f
--- /dev/null
+++ b/web/settings/assets/chargePoint-72c59831.js
@@ -0,0 +1 @@
+import{C as s}from"./ChargePointInstallation-12a5c989.js";import{_ as p,u as n,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},b={class:"charge-point-smartwb"};function c(t,e,f,_,w,v){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",b,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":t.chargePoint.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>e[2]||(e[2]=[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")])),_:1},8,["model-value"])])}const W=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{W as default};
diff --git a/web/settings/assets/chargePoint-756bf3c2.js b/web/settings/assets/chargePoint-8472765d.js
similarity index 59%
rename from web/settings/assets/chargePoint-756bf3c2.js
rename to web/settings/assets/chargePoint-8472765d.js
index 3181597cd9..4e68f5e9b5 100644
--- a/web/settings/assets/chargePoint-756bf3c2.js
+++ b/web/settings/assets/chargePoint-8472765d.js
@@ -1 +1 @@
-import{C as r}from"./ChargePointInstallation-fba1b24e.js";import{_ as i,u as a,k as p,l as s,D as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{B as default};
+import{C as r}from"./ChargePointInstallation-12a5c989.js";import{_ as i,u as a,k as p,l as s,D as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{B as default};
diff --git a/web/settings/assets/chargePoint-8d89f54f.js b/web/settings/assets/chargePoint-8d89f54f.js
new file mode 100644
index 0000000000..daef6df8e1
--- /dev/null
+++ b/web/settings/assets/chargePoint-8d89f54f.js
@@ -0,0 +1 @@
+import{C as u}from"./ChargePointInstallation-12a5c989.js";import{_ as p,u as t,k as i,l as d,D as m,A as l,N as c,y as g,B as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){(e=="series"||e=="socket")&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},h={class:"charge-point-internal-openwb"};function b(e,n,B,w,k,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",h,[m(r,{title:"Bauart","not-selected":"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":n[0]||(n[0]=o=>a.updateMode(o))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:c(()=>n[2]||(n[2]=[g(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])):f("",!0)])}const M=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{M as default};
diff --git a/web/settings/assets/chargePoint-a2f06ead.js b/web/settings/assets/chargePoint-a2f06ead.js
deleted file mode 100644
index db4fa83e99..0000000000
--- a/web/settings/assets/chargePoint-a2f06ead.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as s}from"./ChargePointInstallation-fba1b24e.js";import{_ as p,u as n,k as u,l as m,D as i,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},c={class:"charge-point-smartwb"};function _(e,t,b,f,w,h){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":e.chargePoint.configuration.timeout,"onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")]),_:1},8,["model-value"])])}const W=p(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{W as default};
diff --git a/web/settings/assets/chargePoint-d36f4e64.js b/web/settings/assets/chargePoint-d36f4e64.js
deleted file mode 100644
index 5b2d8f5179..0000000000
--- a/web/settings/assets/chargePoint-d36f4e64.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./ChargePointInstallation-fba1b24e.js";import{_ as p,u as r,k as u,l as c,D as n,N as l,y as t,x as e,z as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"ChargePointMqtt",mixins:[d]},_={class:"charge-point-mqtt"},g=e("br",null,null,-1),f=e("br",null,null,-1),m=e("br",null,null,-1),b=e("span",{class:"text-info"},"12.34",-1),k=e("br",null,null,-1),B=e("br",null,null,-1),v=e("span",{class:"text-info"},"1",-1),w=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[6.78,6.89,6.94]",-1),x=e("br",null,null,-1),P=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),L=e("br",null,null,-1),y=e("br",null,null,-1),F=e("span",{class:"text-info"},"true",-1),N=e("br",null,null,-1),A=e("br",null,null,-1),D=e("span",{class:"text-info"},"true",-1),Z=e("br",null,null,-1),S=e("br",null,null,-1),C=e("span",{class:"text-info"},"3",-1),E=e("br",null,null,-1),M=e("br",null,null,-1),V=e("br",null,null,-1),$=e("span",{class:"text-info"},"123.45",-1),q=e("br",null,null,-1),G=e("br",null,null,-1),I=e("br",null,null,-1),J=e("span",{class:"text-info"},"123.45",-1),K=e("br",null,null,-1),O=e("br",null,null,-1),Q=e("br",null,null,-1),j=e("span",{class:"text-info"},"[230.12,231.08,232.54]",-1),H=e("br",null,null,-1),R=e("br",null,null,-1),U=e("br",null,null,-1),X=e("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1),Y=e("br",null,null,-1),ee=e("br",null,null,-1),te=e("span",{class:"text-info"},'"123654"',-1);function ne(i,le,ie,oe,se,ae){const a=r("openwb-base-alert"),o=r("openwb-base-copy-to-clipboard");return u(),c("div",_,[n(a,{subtype:"danger"},{default:l(()=>[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")]),_:1}),n(a,{subtype:"info"},{default:l(()=>[t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden."),g,t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). "),e("ol",null,[e("li",null,[t(" von openWB gesendete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePoint.id)+"/set/current",1)]),_:1}),f,t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),m,t(" Beispiel: "),b]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/chargepoint/"+s(i.chargePoint.id)+"/set/phases_to_use",1)]),_:1}),k,t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3"),B,t(" Beispiel: "),v])])]),e("li",null,[t(" von openWB zwingend erwartete Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/currents",1)]),_:1}),w,t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),W,t(" Beispiel: "),T]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/power",1)]),_:1}),x,t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt)."),P,t(" Beispiel: "),z]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/plug_state",1)]),_:1}),L,t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool)."),y,t(" Beispiel: "),F]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/charge_state",1)]),_:1}),N,t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool)."),A,t(" Beispiel: "),D]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/phases_in_use",1)]),_:1}),Z,t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3"),S,t(" Beispiel: "),C])])]),e("li",null,[t(" optionale Topics "),e("ul",null,[e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/imported",1)]),_:1}),E,t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),M,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),V,t(" Beispiel: "),$]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/exported",1)]),_:1}),q,t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv"),G,t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert."),I,t(" Beispiel: "),J]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/voltages",1)]),_:1}),K,t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv."),O,t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt."),Q,t(" Beispiel: "),j]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/power_factors",1)]),_:1}),H,t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1."),R,t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt."),U,t(" Beispiel: "),X]),e("li",null,[n(o,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/chargepoint/"+s(i.chargePoint.id)+"/get/rfid_tag",1)]),_:1}),Y,t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert."),ee,t(" Beispiel: "),te])])])])]),_:1})])}const me=p(h,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{me as default};
diff --git a/web/settings/assets/chargePoint-ddcd5f93.js b/web/settings/assets/chargePoint-ddcd5f93.js
deleted file mode 100644
index 01587f5f85..0000000000
--- a/web/settings/assets/chargePoint-ddcd5f93.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./ChargePointInstallation-fba1b24e.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointSatellite",mixins:[p]},_={class:"charge-point-openwb-satellite"};function g(e,n,f,b,h,w){const a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),m("div",_,[i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')]),_:1},8,["model-value"])])}const $=s(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{$ as default};
diff --git a/web/settings/assets/chargePoint-f3a56f90.js b/web/settings/assets/chargePoint-f3a56f90.js
new file mode 100644
index 0000000000..4de05d56f1
--- /dev/null
+++ b/web/settings/assets/chargePoint-f3a56f90.js
@@ -0,0 +1 @@
+import{C as d}from"./ChargePointInstallation-12a5c989.js";import{_ as g,u,k as a,l as f,D as e,N as i,y as t,x as l,z as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"ChargePointMqtt",mixins:[d]},b={class:"charge-point-mqtt"};function k(o,n,B,v,w,W){const p=u("openwb-base-alert"),s=u("openwb-base-copy-to-clipboard");return a(),f("div",b,[e(p,{subtype:"danger"},{default:i(()=>n[0]||(n[0]=[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")])),_:1}),e(p,{subtype:"info"},{default:i(()=>[n[72]||(n[72]=t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden.")),n[73]||(n[73]=l("br",null,null,-1)),n[74]||(n[74]=t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). ")),l("ol",null,[l("li",null,[n[11]||(n[11]=t(" von openWB gesendete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/current ",1)]),_:1}),n[1]||(n[1]=l("br",null,null,-1)),n[2]||(n[2]=t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[3]||(n[3]=l("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=l("span",{class:"text-info"},"12.34",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/phases_to_use ",1)]),_:1}),n[6]||(n[6]=l("br",null,null,-1)),n[7]||(n[7]=t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3")),n[8]||(n[8]=l("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=l("span",{class:"text-info"},"1",-1))])])]),l("li",null,[n[37]||(n[37]=t(" von openWB zwingend erwartete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/currents ",1)]),_:1}),n[12]||(n[12]=l("br",null,null,-1)),n[13]||(n[13]=t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[14]||(n[14]=l("br",null,null,-1)),n[15]||(n[15]=t(" Beispiel: ")),n[16]||(n[16]=l("span",{class:"text-info"},"[6.78,6.89,6.94]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power ",1)]),_:1}),n[17]||(n[17]=l("br",null,null,-1)),n[18]||(n[18]=t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[19]||(n[19]=l("br",null,null,-1)),n[20]||(n[20]=t(" Beispiel: ")),n[21]||(n[21]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/plug_state ",1)]),_:1}),n[22]||(n[22]=l("br",null,null,-1)),n[23]||(n[23]=t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool).")),n[24]||(n[24]=l("br",null,null,-1)),n[25]||(n[25]=t(" Beispiel: ")),n[26]||(n[26]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/charge_state ",1)]),_:1}),n[27]||(n[27]=l("br",null,null,-1)),n[28]||(n[28]=t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool).")),n[29]||(n[29]=l("br",null,null,-1)),n[30]||(n[30]=t(" Beispiel: ")),n[31]||(n[31]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/phases_in_use ",1)]),_:1}),n[32]||(n[32]=l("br",null,null,-1)),n[33]||(n[33]=t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3")),n[34]||(n[34]=l("br",null,null,-1)),n[35]||(n[35]=t(" Beispiel: ")),n[36]||(n[36]=l("span",{class:"text-info"},"3",-1))])])]),l("li",null,[n[71]||(n[71]=t(" optionale Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/imported ",1)]),_:1}),n[38]||(n[38]=l("br",null,null,-1)),n[39]||(n[39]=t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[40]||(n[40]=l("br",null,null,-1)),n[41]||(n[41]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[42]||(n[42]=l("br",null,null,-1)),n[43]||(n[43]=t(" Beispiel: ")),n[44]||(n[44]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/exported ",1)]),_:1}),n[45]||(n[45]=l("br",null,null,-1)),n[46]||(n[46]=t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[47]||(n[47]=l("br",null,null,-1)),n[48]||(n[48]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[49]||(n[49]=l("br",null,null,-1)),n[50]||(n[50]=t(" Beispiel: ")),n[51]||(n[51]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/voltages ",1)]),_:1}),n[52]||(n[52]=l("br",null,null,-1)),n[53]||(n[53]=t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv.")),n[54]||(n[54]=l("br",null,null,-1)),n[55]||(n[55]=t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[56]||(n[56]=l("br",null,null,-1)),n[57]||(n[57]=t(" Beispiel: ")),n[58]||(n[58]=l("span",{class:"text-info"},"[230.12,231.08,232.54]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power_factors ",1)]),_:1}),n[59]||(n[59]=l("br",null,null,-1)),n[60]||(n[60]=t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1.")),n[61]||(n[61]=l("br",null,null,-1)),n[62]||(n[62]=t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[63]||(n[63]=l("br",null,null,-1)),n[64]||(n[64]=t(" Beispiel: ")),n[65]||(n[65]=l("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/rfid_tag ",1)]),_:1}),n[66]||(n[66]=l("br",null,null,-1)),n[67]||(n[67]=t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert.")),n[68]||(n[68]=l("br",null,null,-1)),n[69]||(n[69]=t(" Beispiel: ")),n[70]||(n[70]=l("span",{class:"text-info"},'"123654"',-1))])])])])]),_:1})])}const D=g(m,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{D as default};
diff --git a/web/settings/assets/chargePoint-db6ab728.js b/web/settings/assets/chargePoint-f77b98b5.js
similarity index 59%
rename from web/settings/assets/chargePoint-db6ab728.js
rename to web/settings/assets/chargePoint-f77b98b5.js
index 4acf6c61bb..957b58dd16 100644
--- a/web/settings/assets/chargePoint-db6ab728.js
+++ b/web/settings/assets/chargePoint-f77b98b5.js
@@ -1 +1 @@
-import{C as r}from"./ChargePointInstallation-fba1b24e.js";import{_ as i,u as p,k as s,l as a,D as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{B as default};
+import{C as r}from"./ChargePointInstallation-12a5c989.js";import{_ as i,u as p,k as s,l as a,D as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{B as default};
diff --git a/web/settings/assets/chargePoint-f92622dd.js b/web/settings/assets/chargePoint-f92622dd.js
new file mode 100644
index 0000000000..98f8a4bbf6
--- /dev/null
+++ b/web/settings/assets/chargePoint-f92622dd.js
@@ -0,0 +1 @@
+import{C as p}from"./ChargePointInstallation-12a5c989.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointSatellite",mixins:[p]},c={class:"charge-point-openwb-satellite"};function g(n,e,f,b,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const $=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{$ as default};
diff --git a/web/settings/assets/commands-f4c13b15.js b/web/settings/assets/commands-0749d4c7.js
similarity index 53%
rename from web/settings/assets/commands-f4c13b15.js
rename to web/settings/assets/commands-0749d4c7.js
index 3cdee750a0..8aa1b0620f 100644
--- a/web/settings/assets/commands-f4c13b15.js
+++ b/web/settings/assets/commands-0749d4c7.js
@@ -1 +1 @@
-import{a as i}from"./ChargePointInstallation-fba1b24e.js";import{_ as r,u as p,k as c,l as d,D as u,N as m,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointCommandsOpenwbPro",mixins:[i],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!<br />";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})}}},h={class:"charge-point-commands-openwb-pro"};function _(t,o,e,s,f,n){const a=p("openwb-base-button-input");return c(),d("div",h,[u(a,{title:"Ladepunkt aktualisieren",buttonText:"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:m(()=>[l(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")]),_:1},8,["disabled","onButtonClicked"])])}const $=r(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{$ as default};
+import{a as i}from"./ChargePointInstallation-12a5c989.js";import{_ as r,u as p,k as d,l as c,D as u,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointCommandsOpenwbPro",mixins:[i],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!<br />";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})}}},h={class:"charge-point-commands-openwb-pro"};function _(t,o,e,s,f,n){const a=p("openwb-base-button-input");return d(),c("div",h,[u(a,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:m(()=>o[0]||(o[0]=[l(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["disabled","onButtonClicked"])])}const $=r(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{$ as default};
diff --git a/web/settings/assets/consumption_counter-6e608762.js b/web/settings/assets/consumption_counter-6e608762.js
deleted file mode 100644
index 0c96d870ca..0000000000
--- a/web/settings/assets/consumption_counter-6e608762.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as o,k as c,l as b,D as t,N as s,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(e,n,w,v,h,x){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),a=o("openwb-base-select-input"),p=o("openwb-base-number-input");return c(),b("div",f,[t(l,null,{default:s(()=>[r(" Einstellungen für openWB-Flex Verbrauchszähler ")]),_:1}),t(u,{subtype:"info"},{default:s(()=>[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")]),_:1}),t(a,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":n[0]||(n[0]=i=>e.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":e.component.configuration.id,"onUpdate:modelValue":n[1]||(n[1]=i=>e.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/consumption_counter-a72d5a10.js b/web/settings/assets/consumption_counter-a72d5a10.js
new file mode 100644
index 0000000000..512d434345
--- /dev/null
+++ b/web/settings/assets/consumption_counter-a72d5a10.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as o,k as b,l as c,D as t,N as s,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(n,e,w,v,x,B){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),p=o("openwb-base-select-input"),a=o("openwb-base-number-input");return b(),c("div",f,[t(l,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für openWB-Flex Verbrauchszähler ")])),_:1}),t(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-079772c2.js b/web/settings/assets/counter-079772c2.js
deleted file mode 100644
index 6f833b95dd..0000000000
--- a/web/settings/assets/counter-079772c2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as a,l as c,D as n,N as l,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(o,e,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),c("div",_,[n(i,null,{default:l(()=>[d(" Einstellungen für Powerdog Zähler ")]),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":o.component.configuration.position_evu,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-11a808b3.js b/web/settings/assets/counter-11a808b3.js
new file mode 100644
index 0000000000..2156a06172
--- /dev/null
+++ b/web/settings/assets/counter-11a808b3.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u,k as f,l as g,D as l,N as o,y as t,x as e,z as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMqttCounter",mixins:[d]},k={class:"device-mqtt-counter"};function B(i,n,z,x,v,w){const p=u("openwb-base-heading"),s=u("openwb-base-copy-to-clipboard"),m=u("openwb-base-alert");return f(),g("div",k,[l(p,null,{default:o(()=>n[0]||(n[0]=[t(" Einstellungen für MQTT Zähler ")])),_:1}),l(m,{subtype:"info"},{default:o(()=>[n[41]||(n[41]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power ",1)]),_:1}),n[1]||(n[1]=e("br",null,null,-1)),n[2]||(n[2]=t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung")),n[3]||(n[3]=e("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=e("span",{class:"text-info"},"-123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/imported ",1)]),_:1}),n[6]||(n[6]=e("br",null,null,-1)),n[7]||(n[7]=t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[8]||(n[8]=e("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=e("span",{class:"text-info"},"123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/exported ",1)]),_:1}),n[11]||(n[11]=e("br",null,null,-1)),n[12]||(n[12]=t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[13]||(n[13]=e("br",null,null,-1)),n[14]||(n[14]=t(" Beispiel: ")),n[15]||(n[15]=e("span",{class:"text-info"},"123.45",-1))])]),n[42]||(n[42]=t(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/currents ",1)]),_:1}),n[16]||(n[16]=e("br",null,null,-1)),n[17]||(n[17]=t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung")),n[18]||(n[18]=e("br",null,null,-1)),n[19]||(n[19]=t(" Beispiel: ")),n[20]||(n[20]=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1))])]),n[43]||(n[43]=t(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/frequency ",1)]),_:1}),n[21]||(n[21]=e("br",null,null,-1)),n[22]||(n[22]=t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen")),n[23]||(n[23]=e("br",null,null,-1)),n[24]||(n[24]=t(" Beispiel: ")),n[25]||(n[25]=e("span",{class:"text-info"},"50.12",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/voltages ",1)]),_:1}),n[26]||(n[26]=e("br",null,null,-1)),n[27]||(n[27]=t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)")),n[28]||(n[28]=e("br",null,null,-1)),n[29]||(n[29]=t(" Beispiel: ")),n[30]||(n[30]=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/powers ",1)]),_:1}),n[31]||(n[31]=e("br",null,null,-1)),n[32]||(n[32]=t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)")),n[33]||(n[33]=e("br",null,null,-1)),n[34]||(n[34]=t(" Beispiel: ")),n[35]||(n[35]=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power_factors ",1)]),_:1}),n[36]||(n[36]=e("br",null,null,-1)),n[37]||(n[37]=t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1")),n[38]||(n[38]=e("br",null,null,-1)),n[39]||(n[39]=t(" Beispiel: ")),n[40]||(n[40]=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1))])])]),_:1})])}const q=a(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{q as default};
diff --git a/web/settings/assets/counter-18ec27d5.js b/web/settings/assets/counter-18ec27d5.js
deleted file mode 100644
index de75f276a9..0000000000
--- a/web/settings/assets/counter-18ec27d5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as n,k as d,l as c,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function g(e,o,b,f,v,y){const s=n("openwb-base-heading"),a=n("openwb-base-number-input");return d(),c("div",_,[t(s,null,{default:i(()=>[r(" Einstellungen für Sigenergy Zähler ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const M=u(l,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{M as default};
diff --git a/web/settings/assets/counter-211768c3.js b/web/settings/assets/counter-211768c3.js
new file mode 100644
index 0000000000..375bcf0e44
--- /dev/null
+++ b/web/settings/assets/counter-211768c3.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as t,k as c,l as m,D as r,N as i,y as n,x as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[u]},b={class:"device-powerfox-counter"};function g(o,e,w,x,_,h){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return c(),m("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Zähler ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-2407fa25.js b/web/settings/assets/counter-2407fa25.js
deleted file mode 100644
index 58ea9b1a0e..0000000000
--- a/web/settings/assets/counter-2407fa25.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as t,k as c,l as m,D as o,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(e,n,b,g,h,v){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return c(),m("div",_,[o(s,null,{default:i(()=>[r(" Einstellungen für virtuelle Zähler ")]),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":e.component.configuration.external_consumption/1e3,"onUpdate:modelValue":n[0]||(n[0]=u=>e.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")]),_:1},8,["model-value"])])}const N=l(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-2af1b45c.js b/web/settings/assets/counter-2af1b45c.js
new file mode 100644
index 0000000000..a9b6add078
--- /dev/null
+++ b/web/settings/assets/counter-2af1b45c.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as r,k as p,l as f,D as n,N as s,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolaredgeCounter",mixins:[d]},b={class:"device-solaredge-counter"};function c(o,e,_,v,w,C){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),f("div",b,[n(l,null,{default:s(()=>e[2]||(e[2]=[a(" Einstellungen für SolarEdge Zähler ")])),_:1}),n(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[a(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")])),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":o.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=m(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default};
diff --git a/web/settings/assets/counter-2d7b83ed.js b/web/settings/assets/counter-2d7b83ed.js
new file mode 100644
index 0000000000..f44bfcb385
--- /dev/null
+++ b/web/settings/assets/counter-2d7b83ed.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as s,u as n,k as i,l as a,D as p,N as c,y as o,x as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPikoCounter",mixins:[r]},u={class:"device-kostal-piko-counter"};function _(d,e,f,b,h,k){const t=n("openwb-base-alert");return i(),a("div",u,[p(t,{subtype:"info"},{default:c(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const Z=s(l,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{Z as default};
diff --git a/web/settings/assets/counter-339b78e6.js b/web/settings/assets/counter-339b78e6.js
new file mode 100644
index 0000000000..ff3e49308c
--- /dev/null
+++ b/web/settings/assets/counter-339b78e6.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u,k as m,l as f,D as t,N as a,y as l,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"};function v(n,e,j,q,P,C){const i=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-alert");return m(),f("div",w,[t(i,null,{default:a(()=>e[9]||(e[9]=[l(" Einstellungen für JSON Zähler ")])),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>e[10]||(e[10]=[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":n.component.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>e[11]||(e[11]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>e[12]||(e[12]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>e[13]||(e[13]=[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")])),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=o=>n.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const z=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{z as default};
diff --git a/web/settings/assets/counter-37e09ebf.js b/web/settings/assets/counter-37e09ebf.js
new file mode 100644
index 0000000000..7a81b3d00b
--- /dev/null
+++ b/web/settings/assets/counter-37e09ebf.js
@@ -0,0 +1 @@
+import{C as n}from"./HardwareInstallation-6cc98da9.js";import{_ as o,u as s,k as r,l as a,D as i,N as m,y as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceTeslaCounter",mixins:[n]},l={class:"device-tesla-counter"};function _(d,e,u,f,v,x){const t=s("openwb-base-alert");return r(),a("div",l,[i(t,{subtype:"info"},{default:m(()=>e[0]||(e[0]=[p(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")])),_:1})])}const N=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-38233839.js b/web/settings/assets/counter-38233839.js
deleted file mode 100644
index a8695d98a4..0000000000
--- a/web/settings/assets/counter-38233839.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as t,k as p,l as c,D as n,N as u,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(e,o,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),c("div",_,[n(r,null,{default:u(()=>[l(" Einstellungen für smart-me Zähler ")]),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":e.component.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-3c3a8ee4.js b/web/settings/assets/counter-3c3a8ee4.js
new file mode 100644
index 0000000000..e8807888bb
--- /dev/null
+++ b/web/settings/assets/counter-3c3a8ee4.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as t,k as m,l as d,D as o,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(n,e,b,g,v,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return m(),d("div",_,[o(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für virtuelle Zähler ")])),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":n.component.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>e[2]||(e[2]=[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")])),_:1},8,["model-value"])])}const N=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-3d61895d.js b/web/settings/assets/counter-3d61895d.js
deleted file mode 100644
index 5d8b22a229..0000000000
--- a/web/settings/assets/counter-3d61895d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as r,k as p,l as c,D as n,N as a,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolaredgeCounter",mixins:[d]},f={class:"device-solaredge-counter"};function g(e,o,b,v,h,w){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),c("div",f,[n(l,null,{default:a(()=>[s(" Einstellungen für SolarEdge Zähler ")]),_:1}),n(u,{subtype:"info"},{default:a(()=>[s(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")]),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":e.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default};
diff --git a/web/settings/assets/counter-3fc7917c.js b/web/settings/assets/counter-3fc7917c.js
deleted file mode 100644
index 052f4f153d..0000000000
--- a/web/settings/assets/counter-3fc7917c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as o,u as s,k as n,l as r,D as a,N as i,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceKostalSemCounter",mixins:[t]},m={class:"device-kostal-sem-counter"};function l(_,d,u,f,h,b){const e=s("openwb-base-alert");return n(),r("div",m,[a(e,{subtype:"info"},{default:i(()=>[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")]),_:1})])}const D=o(p,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-4760f2a8.js b/web/settings/assets/counter-4760f2a8.js
new file mode 100644
index 0000000000..94fca010a4
--- /dev/null
+++ b/web/settings/assets/counter-4760f2a8.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as t,k as a,l,D as n,N as d,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(e,o,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),l("div",_,[n(i,null,{default:d(()=>o[1]||(o[1]=[m(" Einstellungen für Powerdog Zähler ")])),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":e.component.configuration.position_evu,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-4e0e153d.js b/web/settings/assets/counter-4e0e153d.js
new file mode 100644
index 0000000000..5a4d4ba21a
--- /dev/null
+++ b/web/settings/assets/counter-4e0e153d.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as c,u as t,k as m,l as u,D as o,N as s,y as l,x as n,z as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShellyCounter",mixins:[p]},f={class:"device-shelly-counter"},h={class:"small"};function b(r,e,y,g,x,v){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return m(),u("div",f,[o(i,null,{default:s(()=>[e[0]||(e[0]=l(" Einstellungen für Shelly Zähler ")),n("span",h,"(Modul: "+d(r.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shellys unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),n("br",null,null,-1),l(" Diese Komponente benötigt keine Einstellungen. ")])),_:1})])}const N=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-4e131617.js b/web/settings/assets/counter-4e131617.js
new file mode 100644
index 0000000000..f6add0677c
--- /dev/null
+++ b/web/settings/assets/counter-4e131617.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as s,k as p,l as g,D as i,N as a,y as n,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpCounter",mixins:[u]},b={class:"device-http-counter"};function f(t,e,w,v,k,S){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),g("div",b,[i(d,null,{default:a(()=>e[6]||(e[6]=[n(" Einstellungen für Http Zähler ")])),_:1}),i(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>e[9]||(e[9]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l1_path,"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>e[10]||(e[10]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l2_path,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>e[11]||(e[11]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l3_path,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>e[12]||(e[12]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const F=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{F as default};
diff --git a/web/settings/assets/counter-51f51be9.js b/web/settings/assets/counter-51f51be9.js
deleted file mode 100644
index ace1814417..0000000000
--- a/web/settings/assets/counter-51f51be9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as o,k as c,l as m,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceSungrowCounter",mixins:[p]},_={class:"device-sungrow-counter"};function g(e,n,b,f,v,w){const s=o("openwb-base-heading"),a=o("openwb-base-select-input");return c(),m("div",_,[t(s,null,{default:i(()=>[r(" Einstellungen für Sungrow Zähler ")]),_:1}),t(a,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":e.component.configuration.version,"onUpdate:modelValue":n[0]||(n[0]=u=>e.updateConfiguration(u,"configuration.version"))},{help:i(()=>[r(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")]),_:1},8,["model-value"])])}const W=l(d,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/counter.vue"]]);export{W as default};
diff --git a/web/settings/assets/counter-55bd9132.js b/web/settings/assets/counter-55bd9132.js
deleted file mode 100644
index 13c0515764..0000000000
--- a/web/settings/assets/counter-55bd9132.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as c,l,D as r,N as i,y as e,x as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"},b=d("br",null,null,-1);function h(n,o,g,v,M,w){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return c(),l("div",f,[r(s,null,{default:i(()=>[e(" Einstellungen für SMA-HM/EM Zähler ")]),_:1}),r(a,{title:"Seriennummer","model-value":n.component.configuration.serials,"onUpdate:modelValue":o[0]||(o[0]=m=>n.updateConfiguration(m,"configuration.serials"))},{help:i(()=>[e(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),b,e(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")]),_:1},8,["model-value"])])}const H=u(_,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{H as default};
diff --git a/web/settings/assets/counter-59a65215.js b/web/settings/assets/counter-59a65215.js
new file mode 100644
index 0000000000..cd58b4b0b7
--- /dev/null
+++ b/web/settings/assets/counter-59a65215.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as m,l as p,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(o,e,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),p("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-5e68cf56.js b/web/settings/assets/counter-5e68cf56.js
new file mode 100644
index 0000000000..5f303686a4
--- /dev/null
+++ b/web/settings/assets/counter-5e68cf56.js
@@ -0,0 +1 @@
+import{C as n}from"./HardwareInstallation-6cc98da9.js";import{_ as s,u as a,k as i,l,D as p,N as c,x as e,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceSolarLogCounter",mixins:[n]},u={class:"device-solar_log-counter"};function d(_,o,g,h,f,b){const t=a("openwb-base-alert");return i(),l("div",u,[p(t,{subtype:"info"},{default:c(()=>o[0]||(o[0]=[e("span",{class:"text-danger"},[r(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),e("br")],-1),r(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),e("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1),r(". ")])),_:1})])}const N=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-61e6692b.js b/web/settings/assets/counter-61e6692b.js
new file mode 100644
index 0000000000..662c27fd47
--- /dev/null
+++ b/web/settings/assets/counter-61e6692b.js
@@ -0,0 +1 @@
+import{C as o}from"./HardwareInstallation-6cc98da9.js";import{_ as n,u as i,k as s,l as a,D as r,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceJanitzaBat",mixins:[o]},u={class:"device-janitza-counter"};function _(d,e,f,l,v,b){const t=i("openwb-base-alert");return s(),a("div",u,[r(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')])),_:1})])}const D=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-62b27636.js b/web/settings/assets/counter-62b27636.js
new file mode 100644
index 0000000000..79a599b539
--- /dev/null
+++ b/web/settings/assets/counter-62b27636.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as t,k as l,l as d,D as r,N as i,y as n,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"};function b(o,e,g,v,M,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return l(),d("div",f,[r(s,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für SMA-HM/EM Zähler ")])),_:1}),r(a,{title:"Seriennummer","model-value":o.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.serials"))},{help:i(()=>e[2]||(e[2]=[n(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),c("br",null,null,-1),n(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")])),_:1},8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-6a117469.js b/web/settings/assets/counter-6a117469.js
new file mode 100644
index 0000000000..29520545fb
--- /dev/null
+++ b/web/settings/assets/counter-6a117469.js
@@ -0,0 +1 @@
+import{C as t}from"./HardwareInstallation-6cc98da9.js";import{_ as o,u as s,k as i,l as r,D as a,N as p,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSonnenbatterieCounter",mixins:[t]},d={class:"device-sonnenbatterie-counter"};function _(l,e,u,f,b,v){const n=s("openwb-base-alert");return i(),r("div",d,[a(n,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[m(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")])),_:1})])}const N=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-6dd39fae.js b/web/settings/assets/counter-6dd39fae.js
new file mode 100644
index 0000000000..b7fb3c69f6
--- /dev/null
+++ b/web/settings/assets/counter-6dd39fae.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},v={class:"device-openwb-evukit-counter"};function _(o,e,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Zähler ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-6f319353.js b/web/settings/assets/counter-6f319353.js
new file mode 100644
index 0000000000..4fcecffcca
--- /dev/null
+++ b/web/settings/assets/counter-6f319353.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as d,l as c,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[a]},_={class:"device-mtec-counter"};function b(o,e,f,v,g,C){const r=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),c("div",_,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für M-Tec Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const V=u(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-70744c17.js b/web/settings/assets/counter-70744c17.js
new file mode 100644
index 0000000000..f7a4f56f2a
--- /dev/null
+++ b/web/settings/assets/counter-70744c17.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as n,u as s,k as i,l as a,D as c,N as p,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPlenticoreCounter",mixins:[r]},u={class:"device-kostal-plenticore-counter"};function _(d,e,f,b,h,v){const t=s("openwb-base-alert");return i(),a("div",u,[c(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),l("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const Z=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{Z as default};
diff --git a/web/settings/assets/counter-70ddc5c4.js b/web/settings/assets/counter-70ddc5c4.js
deleted file mode 100644
index 4bdbf0dacf..0000000000
--- a/web/settings/assets/counter-70ddc5c4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as n,k as u,l as d,D as t,N as i,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[m]},_={class:"device-mtec-counter"};function b(e,o,f,v,g,C){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),d("div",_,[t(r,null,{default:i(()=>[s(" Einstellungen für M-Tec Zähler ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const N=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-809d5a8a.js b/web/settings/assets/counter-809d5a8a.js
deleted file mode 100644
index 21d853d059..0000000000
--- a/web/settings/assets/counter-809d5a8a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as u}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as a,k as d,l as _,D as t,N as o,y as n,x as e,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceMqttCounter",mixins:[u]},h={class:"device-mqtt-counter"},f=e("br",null,null,-1),g=e("br",null,null,-1),b=e("span",{class:"text-info"},"-123.45",-1),k=e("br",null,null,-1),B=e("br",null,null,-1),z=e("span",{class:"text-info"},"123.45",-1),x=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"123.45",-1),N=e("br",null,null,-1),W=e("br",null,null,-1),T=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1),P=e("br",null,null,-1),y=e("br",null,null,-1),D=e("span",{class:"text-info"},"50.12",-1),E=e("br",null,null,-1),F=e("br",null,null,-1),j=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1),q=e("br",null,null,-1),A=e("br",null,null,-1),C=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1),L=e("br",null,null,-1),S=e("br",null,null,-1),V=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1);function Z(s,I,$,M,G,H){const r=a("openwb-base-heading"),i=a("openwb-base-copy-to-clipboard"),c=a("openwb-base-alert");return d(),_("div",h,[t(r,null,{default:o(()=>[n(" Einstellungen für MQTT Zähler ")]),_:1}),t(c,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/power",1)]),_:1}),f,n(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung"),g,n(" Beispiel: "),b]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/imported",1)]),_:1}),k,n(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),B,n(" Beispiel: "),z]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/exported",1)]),_:1}),x,n(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,n(" Beispiel: "),w])]),n(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/currents",1)]),_:1}),N,n(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung"),W,n(" Beispiel: "),T])]),n(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: "),e("ul",null,[e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/frequency",1)]),_:1}),P,n(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen"),y,n(" Beispiel: "),D]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/voltages",1)]),_:1}),E,n(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)"),F,n(" Beispiel: "),j]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/powers",1)]),_:1}),q,n(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)"),A,n(" Beispiel: "),C]),e("li",null,[t(i,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/counter/"+l(s.component.id)+"/get/power_factors",1)]),_:1}),L,n(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1"),S,n(" Beispiel: "),V])])]),_:1})])}const ne=p(m,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{ne as default};
diff --git a/web/settings/assets/counter-851af979.js b/web/settings/assets/counter-851af979.js
deleted file mode 100644
index ec1b1526a6..0000000000
--- a/web/settings/assets/counter-851af979.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as r,k as m,l as g,D as t,N as l,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVZLoggerCounter",mixins:[s]},f={class:"device-vzlogger-counter"};function _(e,n,b,v,w,Z){const u=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",f,[t(u,null,{default:l(()=>[a(" Einstellungen für VZLogger Zähler ")]),_:1}),t(p,{subtype:"info"},{default:l(()=>[a(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')]),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":e.component.configuration.line_power,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":e.component.configuration.line_exported,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":e.component.configuration.line_imported,"onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const E=d(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-863d779b.js b/web/settings/assets/counter-863d779b.js
deleted file mode 100644
index 36b621c25f..0000000000
--- a/web/settings/assets/counter-863d779b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as o}from"./HardwareInstallation-a0083e3a.js";import{_ as t,u as a,k as r,l as s,D as n,N as i,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceCarloGavazziCounter",mixins:[o]},m={class:"device-carlo-gavazzi-counter"};function _(u,l,d,f,v,z){const e=a("openwb-base-alert");return r(),s("div",m,[n(e,{subtype:"info"},{default:i(()=>[c(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")]),_:1})])}const D=t(p,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-873539d4.js b/web/settings/assets/counter-873539d4.js
new file mode 100644
index 0000000000..893313a128
--- /dev/null
+++ b/web/settings/assets/counter-873539d4.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeCounter",mixins:[p]},_={class:"device-deye-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const h=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{h as default};
diff --git a/web/settings/assets/counter-87bd2dba.js b/web/settings/assets/counter-87bd2dba.js
new file mode 100644
index 0000000000..c839e87846
--- /dev/null
+++ b/web/settings/assets/counter-87bd2dba.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as m,l as c,D as r,N as i,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDiscovergyCounter",mixins:[d]},g={class:"device-discovergy-counter"};function _(t,e,v,b,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return m(),c("div",g,[r(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Zähler ")])),_:1}),r(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const z=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{z as default};
diff --git a/web/settings/assets/counter-8cf3e538.js b/web/settings/assets/counter-8cf3e538.js
new file mode 100644
index 0000000000..5821d3a149
--- /dev/null
+++ b/web/settings/assets/counter-8cf3e538.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[p]},c={class:"device-fox_ess-counter"};function f(o,e,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Zähler ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const h=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{h as default};
diff --git a/web/settings/assets/counter-9028760b.js b/web/settings/assets/counter-9028760b.js
new file mode 100644
index 0000000000..ed907add1c
--- /dev/null
+++ b/web/settings/assets/counter-9028760b.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as d,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function c(o,e,b,f,v,y){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const N=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-92895c7b.js b/web/settings/assets/counter-92895c7b.js
deleted file mode 100644
index 7d7a7016df..0000000000
--- a/web/settings/assets/counter-92895c7b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as o,k as c,l as d,D as t,N as i,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(e,n,b,h,v,g){const p=o("openwb-base-heading"),a=o("openwb-base-number-input");return c(),d("div",_,[t(p,null,{default:i(()=>[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")]),_:1}),t(a,{title:"EID",required:"","model-value":e.component.configuration.eid,"onUpdate:modelValue":n[0]||(n[0]=r=>e.updateConfiguration(r,"configuration.eid"))},{help:i(()=>[s(' EID für "net-consumption" ')]),_:1},8,["model-value"])])}const I=u(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{I as default};
diff --git a/web/settings/assets/counter-9c04d80d.js b/web/settings/assets/counter-9c04d80d.js
deleted file mode 100644
index ca9f06e226..0000000000
--- a/web/settings/assets/counter-9c04d80d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as s,u as n,k as a,l as i,D as c,N as l,y as e,x as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceSolarLogCounter",mixins:[t]},m={class:"device-solar_log-counter"},u=r("span",{class:"text-danger"},[e(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),r("br")],-1),_=r("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1);function d(h,g,f,b,v,k){const o=n("openwb-base-alert");return a(),i("div",m,[c(o,{subtype:"info"},{default:l(()=>[u,e(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),_,e(". ")]),_:1})])}const W=s(p,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{W as default};
diff --git a/web/settings/assets/counter-9dd2e78b.js b/web/settings/assets/counter-9dd2e78b.js
deleted file mode 100644
index f300d4386c..0000000000
--- a/web/settings/assets/counter-9dd2e78b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as i}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as c,l as _,D as n,N as o,y as s,x as e,z as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceShellyCounter",mixins:[i]},u={class:"device-shelly-counter"},h={class:"small"},f=e("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shellys unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),b=e("br",null,null,-1);function y(l,g,x,v,w,C){const r=t("openwb-base-heading"),a=t("openwb-base-alert");return c(),_("div",u,[n(r,null,{default:o(()=>[s(" Einstellungen für Shelly Zähler "),e("span",h,"(Modul: "+d(l.$options.name)+")",1)]),_:1}),n(a,{subtype:"info"},{default:o(()=>[f,b,s(" Diese Komponente benötigt keine Einstellungen. ")]),_:1})])}const z=p(m,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{z as default};
diff --git a/web/settings/assets/counter-9f134879.js b/web/settings/assets/counter-9f134879.js
new file mode 100644
index 0000000000..cea472b20e
--- /dev/null
+++ b/web/settings/assets/counter-9f134879.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as a,l as m,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyCounter",mixins:[p]},_={class:"device-sunnyboy-counter"};function b(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return a(),m("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const S=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{S as default};
diff --git a/web/settings/assets/counter-9fd0b8be.js b/web/settings/assets/counter-9fd0b8be.js
new file mode 100644
index 0000000000..ebbc6626f0
--- /dev/null
+++ b/web/settings/assets/counter-9fd0b8be.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l as u,D as t,N as l,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisCounter",mixins:[p]},_={class:"device-solis-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-a1a84381.js b/web/settings/assets/counter-a1a84381.js
deleted file mode 100644
index 80c18f9f72..0000000000
--- a/web/settings/assets/counter-a1a84381.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as n,u as o,k as s,l as r,D as a,N as i,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceTeslaCounter",mixins:[t]},p={class:"device-tesla-counter"};function l(_,d,u,f,h,v){const e=o("openwb-base-alert");return s(),r("div",p,[a(e,{subtype:"info"},{default:i(()=>[c(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")]),_:1})])}const N=n(m,[["render",l],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-a51c4464.js b/web/settings/assets/counter-a51c4464.js
deleted file mode 100644
index a354da6abf..0000000000
--- a/web/settings/assets/counter-a51c4464.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as o,u as n,k as a,l as i,D as s,N as r,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceJanitzaBat",mixins:[t]},m={class:"device-janitza-counter"};function _(u,d,f,l,v,b){const e=n("openwb-base-alert");return a(),i("div",m,[s(e,{subtype:"info"},{default:r(()=>[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')]),_:1})])}const j=o(p,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{j as default};
diff --git a/web/settings/assets/counter-ab7dda04.js b/web/settings/assets/counter-ab7dda04.js
new file mode 100644
index 0000000000..9e0df63122
--- /dev/null
+++ b/web/settings/assets/counter-ab7dda04.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as r,k as m,l as g,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerCounter",mixins:[s]},_={class:"device-vzlogger-counter"};function c(n,e,b,v,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[t(a,null,{default:l(()=>e[3]||(e[3]=[u(" Einstellungen für VZLogger Zähler ")])),_:1}),t(p,{subtype:"info"},{default:l(()=>e[4]||(e[4]=[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":n.component.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const E=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-aea90a37.js b/web/settings/assets/counter-aea90a37.js
deleted file mode 100644
index c40398c8cb..0000000000
--- a/web/settings/assets/counter-aea90a37.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as l,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceSolisCounter",mixins:[a]},_={class:"device-solis-counter"};function b(e,o,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>[c(" Einstellungen für Solis Zähler ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-b3df37ca.js b/web/settings/assets/counter-b3df37ca.js
new file mode 100644
index 0000000000..87d99a463c
--- /dev/null
+++ b/web/settings/assets/counter-b3df37ca.js
@@ -0,0 +1 @@
+import{C as o}from"./HardwareInstallation-6cc98da9.js";import{_ as s,u as n,k as r,l as i,D as a,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalSemCounter",mixins:[o]},l={class:"device-kostal-sem-counter"};function d(_,e,u,f,b,h){const t=n("openwb-base-alert");return r(),i("div",l,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")])),_:1})])}const D=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-b8ca89e1.js b/web/settings/assets/counter-b8ca89e1.js
new file mode 100644
index 0000000000..f7f70312ec
--- /dev/null
+++ b/web/settings/assets/counter-b8ca89e1.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as o,k as m,l as d,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSungrowCounter",mixins:[p]},g={class:"device-sungrow-counter"};function _(n,e,b,f,v,w){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return m(),d("div",g,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sungrow Zähler ")])),_:1}),t(u,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":n.component.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.version"))},{help:i(()=>e[2]||(e[2]=[r(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")])),_:1},8,["model-value"])])}const V=l(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-bb7c4b01.js b/web/settings/assets/counter-bb7c4b01.js
deleted file mode 100644
index 4c5e4476c8..0000000000
--- a/web/settings/assets/counter-bb7c4b01.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as c,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[a]},l={class:"device-fox_ess-counter"};function f(e,o,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",l,[t(s,null,{default:c(()=>[d(" Einstellungen für FoxEss Zähler ")]),_:1}),t(i,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-c3ed00fb.js b/web/settings/assets/counter-c3ed00fb.js
deleted file mode 100644
index 605bdc5341..0000000000
--- a/web/settings/assets/counter-c3ed00fb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as s,k as n,l as i,D as a,N as c,y as e,x as p}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPikoCounter",mixins:[t]},l={class:"device-kostal-piko-counter"},_=p("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function u(d,h,f,b,k,v){const o=s("openwb-base-alert");return n(),i("div",l,[a(o,{subtype:"info"},{default:c(()=>[e(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),_,e(" beschrieben, angeordnet werden. ")]),_:1})])}const $=r(m,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-c4a0dc83.js b/web/settings/assets/counter-c4a0dc83.js
deleted file mode 100644
index bfe46b8976..0000000000
--- a/web/settings/assets/counter-c4a0dc83.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as u}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as s,k as h,l as p,D as l,N as a,y as e,x as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceHttpCounter",mixins:[u]},c={class:"device-http-counter"},_=i("br",null,null,-1),b=i("br",null,null,-1),f=i("br",null,null,-1),w=i("br",null,null,-1),v=i("br",null,null,-1),k=i("br",null,null,-1),S=i("br",null,null,-1),P=i("br",null,null,-1),z=i("br",null,null,-1),Z=i("br",null,null,-1),A=i("br",null,null,-1);function D(n,t,C,U,F,L){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return h(),p("div",c,[l(d,null,{default:a(()=>[e(" Einstellungen für Http Zähler ")]),_:1}),l(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":n.component.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=r=>n.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),_,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),l(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.imported_path,"onUpdate:modelValue":t[1]||(t[1]=r=>n.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),b,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),f,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),l(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.exported_path,"onUpdate:modelValue":t[2]||(t[2]=r=>n.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),w,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),v,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"]),l(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.current_l1_path,"onUpdate:modelValue":t[3]||(t[3]=r=>n.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),k,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),S,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),l(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.current_l2_path,"onUpdate:modelValue":t[4]||(t[4]=r=>n.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),P,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),z,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"]),l(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.current_l3_path,"onUpdate:modelValue":t[5]||(t[5]=r=>n.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),Z,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),A,e(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")]),_:1},8,["model-value"])])}const $=m(g,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-c524e146.js b/web/settings/assets/counter-c524e146.js
new file mode 100644
index 0000000000..b8bcbfb853
--- /dev/null
+++ b/web/settings/assets/counter-c524e146.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as o,k as b,l as c,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceOpenwbFlexCounter",mixins:[d]},_={class:"device-openwb-flex-counter"};function v(n,e,w,g,M,x){const l=o("openwb-base-heading"),a=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return b(),c("div",_,[t(l,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für openWB-Flex Zähler ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-d2cdbd98.js b/web/settings/assets/counter-d2cdbd98.js
deleted file mode 100644
index 82303f4335..0000000000
--- a/web/settings/assets/counter-d2cdbd98.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as l,l as m,D as r,N as i,y as e,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[c]},_={class:"device-powerfox-counter"},h=s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),b=s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1);function g(n,o,w,x,v,D){const a=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),m("div",_,[r(a,null,{default:i(()=>[e(" Einstellungen für Powerfox Zähler ")]),_:1}),r(d,{title:"ID",required:"","model-value":n.component.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=p=>n.updateConfiguration(p,"configuration.id"))},{help:i(()=>[e(" Um die ID herauszufinden mit dem Browser die Adresse "),h,e(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),b,e(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")]),_:1},8,["model-value"])])}const A=u(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{A as default};
diff --git a/web/settings/assets/counter-dae0c479.js b/web/settings/assets/counter-dae0c479.js
new file mode 100644
index 0000000000..3288bd7798
--- /dev/null
+++ b/web/settings/assets/counter-dae0c479.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as o,k as d,l,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(n,e,b,v,g,w){const p=o("openwb-base-heading"),r=o("openwb-base-number-input");return d(),l("div",_,[t(p,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")])),_:1}),t(r,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[s(' EID für "net-consumption" ')])),_:1},8,["model-value"])])}const I=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{I as default};
diff --git a/web/settings/assets/counter-db36cac3.js b/web/settings/assets/counter-db36cac3.js
deleted file mode 100644
index 88cd291479..0000000000
--- a/web/settings/assets/counter-db36cac3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as n,k as u,l as m,D as r,N as i,y as e,x as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceDiscovergyCounter",mixins:[d]},f={class:"device-discovergy-counter"},g=l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function v(o,t,b,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return u(),m("div",f,[r(s,null,{default:i(()=>[e(" Einstellungen für Discovergy Zähler ")]),_:1}),r(a,{title:"Meter-ID",required:"","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":t[0]||(t[0]=p=>o.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[e(" Um die ID herauszufinden mit dem Browser die Adresse "),g,e(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const I=c(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{I as default};
diff --git a/web/settings/assets/counter-ddf406fa.js b/web/settings/assets/counter-ddf406fa.js
deleted file mode 100644
index e038218d1e..0000000000
--- a/web/settings/assets/counter-ddf406fa.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as n,k as m,l as p,D as t,N as c,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(e,o,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),p("div",_,[t(i,null,{default:c(()=>[d(" Einstellungen für Huawei SmartLogger Zähler ")]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(l,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-dfc0206c.js b/web/settings/assets/counter-dfc0206c.js
deleted file mode 100644
index 46ad6cc82d..0000000000
--- a/web/settings/assets/counter-dfc0206c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as n}from"./HardwareInstallation-a0083e3a.js";import{_ as t,u as o,k as s,l as i,D as r,N as a,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceSonnenbatterieCounter",mixins:[n]},m={class:"device-sonnenbatterie-counter"};function _(d,l,u,f,b,v){const e=o("openwb-base-alert");return s(),i("div",m,[r(e,{subtype:"info"},{default:a(()=>[c(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")]),_:1})])}const N=t(p,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-e17b6711.js b/web/settings/assets/counter-e17b6711.js
deleted file mode 100644
index b7182cb609..0000000000
--- a/web/settings/assets/counter-e17b6711.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as a,u as t,k as l,l as u,D as n,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},_={class:"device-openwb-evukit-counter"};function v(e,o,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:c(()=>[m(" Einstellungen für openWB EVU-Kit Zähler ")]),_:1}),n(s,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-e2aa39de.js b/web/settings/assets/counter-e2aa39de.js
new file mode 100644
index 0000000000..95debd7cc7
--- /dev/null
+++ b/web/settings/assets/counter-e2aa39de.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronCounter",mixins:[p]},_={class:"device-victron-counter"};function f(o,e,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Zähler ")])),_:1}),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":o.component.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const N=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-e2ea1207.js b/web/settings/assets/counter-e2ea1207.js
new file mode 100644
index 0000000000..0ecfb6d019
--- /dev/null
+++ b/web/settings/assets/counter-e2ea1207.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as p,l as u,D as n,N as l,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(o,e,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),u("div",_,[n(r,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für smart-me Zähler ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-e43b2263.js b/web/settings/assets/counter-e43b2263.js
new file mode 100644
index 0000000000..0d2e200005
--- /dev/null
+++ b/web/settings/assets/counter-e43b2263.js
@@ -0,0 +1 @@
+import{C as t}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as s,k as n,l as a,D as i,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceCarloGavazziCounter",mixins:[t]},_={class:"device-carlo-gavazzi-counter"};function u(l,e,d,f,v,z){const o=s("openwb-base-alert");return n(),a("div",_,[i(o,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")])),_:1})])}const N=r(m,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-e525bf90.js b/web/settings/assets/counter-e525bf90.js
deleted file mode 100644
index e624d0e17f..0000000000
--- a/web/settings/assets/counter-e525bf90.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as t}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as s,k as n,l as i,D as a,N as c,y as e,x as p}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPlenticoreCounter",mixins:[t]},m={class:"device-kostal-plenticore-counter"},_=p("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1);function u(d,h,f,b,v,k){const o=s("openwb-base-alert");return n(),i("div",m,[a(o,{subtype:"info"},{default:c(()=>[e(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),_,e(" beschrieben, angeordnet werden. ")]),_:1})])}const $=r(l,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-eacbb4cc.js b/web/settings/assets/counter-eacbb4cc.js
deleted file mode 100644
index 69c2c2371c..0000000000
--- a/web/settings/assets/counter-eacbb4cc.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceDeyeCounter",mixins:[a]},_={class:"device-deye-counter"};function b(e,o,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>[c(" Einstellungen für Deye Zähler ")]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-eb577878.js b/web/settings/assets/counter-eb577878.js
deleted file mode 100644
index 4e49d62719..0000000000
--- a/web/settings/assets/counter-eb577878.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as o,k as c,l as b,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexCounter",mixins:[d]},f={class:"device-openwb-flex-counter"};function v(e,n,w,g,M,x){const l=o("openwb-base-heading"),s=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return c(),b("div",f,[t(l,null,{default:r(()=>[a(" Einstellungen für openWB-Flex Zähler ")]),_:1}),t(s,{subtype:"info"},{default:r(()=>[a(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")]),_:1}),t(p,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":n[0]||(n[0]=i=>e.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":e.component.configuration.id,"onUpdate:modelValue":n[1]||(n[1]=i=>e.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-f1f7547c.js b/web/settings/assets/counter-f1f7547c.js
deleted file mode 100644
index 00cda414d7..0000000000
--- a/web/settings/assets/counter-f1f7547c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as m,l,D as i,N as c,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictronCounter",mixins:[a]},b={class:"device-victron-counter"};function f(e,o,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",b,[i(r,null,{default:c(()=>[d(" Einstellungen für Victron Zähler ")]),_:1}),i(u,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":e.component.configuration.energy_meter,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const N=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-f3a88abe.js b/web/settings/assets/counter-f3a88abe.js
deleted file mode 100644
index dd3c2259ee..0000000000
--- a/web/settings/assets/counter-f3a88abe.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as u,l as m,D as t,N as c,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyCounter",mixins:[a]},_={class:"device-sunnyboy-counter"};function b(e,o,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return u(),m("div",_,[t(i,null,{default:c(()=>[d(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const N=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-fc3afadd.js b/web/settings/assets/counter-fc3afadd.js
deleted file mode 100644
index 5d87a1ee65..0000000000
--- a/web/settings/assets/counter-fc3afadd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as i,k as m,l as f,D as t,N as a,y as l,x as g}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"},v=g("br",null,null,-1);function _(e,n,j,q,c,h){const u=i("openwb-base-heading"),r=i("openwb-base-text-input"),s=i("openwb-base-alert");return m(),f("div",w,[t(u,null,{default:a(()=>[l(" Einstellungen für JSON Zähler ")]),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":e.component.configuration.jq_power,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),v,l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")]),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":e.component.configuration.jq_imported,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":e.component.configuration.jq_exported,"onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")]),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":e.component.configuration.jq_power_l1,"onUpdate:modelValue":n[3]||(n[3]=o=>e.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":e.component.configuration.jq_power_l2,"onUpdate:modelValue":n[4]||(n[4]=o=>e.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":e.component.configuration.jq_power_l3,"onUpdate:modelValue":n[5]||(n[5]=o=>e.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":e.component.configuration.jq_current_l1,"onUpdate:modelValue":n[6]||(n[6]=o=>e.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":e.component.configuration.jq_current_l2,"onUpdate:modelValue":n[7]||(n[7]=o=>e.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":e.component.configuration.jq_current_l3,"onUpdate:modelValue":n[8]||(n[8]=o=>e.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const L=p(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{L as default};
diff --git a/web/settings/assets/counter_sm-ae20b8ea.js b/web/settings/assets/counter_sm-ae20b8ea.js
deleted file mode 100644
index 8311c81a7c..0000000000
--- a/web/settings/assets/counter_sm-ae20b8ea.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as i,k as _,l as f,D as o,N as a,y as t,x as l,z as g}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},b={class:"device-fronius-counter-sm"},v=["href"],w=l("br",null,null,-1);function D(e,n,M,S,k,s){const d=i("openwb-base-heading"),m=i("openwb-base-select-input"),u=i("openwb-base-number-input");return _(),f("div",b,[o(d,null,{default:a(()=>[t(" Einstellungen für Fronius SmartMeter ")]),_:1}),o(m,{title:"Kompatibilitätsmodus",notSelected:"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":e.component.configuration.variant,"onUpdate:modelValue":n[0]||(n[0]=r=>e.updateConfiguration(r,"configuration.variant"))},{help:a(()=>[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")]),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":e.component.configuration.meter_id,"onUpdate:modelValue":n[1]||(n[1]=r=>e.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. "),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},g(s.meterRealtimeUrl),9,v),w,t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. ')]),_:1},8,["model-value"])])}const F=c(h,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{F as default};
diff --git a/web/settings/assets/counter_sm-ce85abde.js b/web/settings/assets/counter_sm-ce85abde.js
new file mode 100644
index 0000000000..102cd920b9
--- /dev/null
+++ b/web/settings/assets/counter_sm-ce85abde.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as f,u as i,k as g,l as c,D as o,N as a,y as t,x as l,z as b}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},v={class:"device-fronius-counter-sm"},w=["href"];function D(n,e,M,k,S,s){const d=i("openwb-base-heading"),m=i("openwb-base-select-input"),u=i("openwb-base-number-input");return g(),c("div",v,[o(d,null,{default:a(()=>e[2]||(e[2]=[t(" Einstellungen für Fronius SmartMeter ")])),_:1}),o(m,{title:"Kompatibilitätsmodus","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":n.component.configuration.variant,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.variant"))},{help:a(()=>e[3]||(e[3]=[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")])),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":n.component.configuration.meter_id,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[e[4]||(e[4]=t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. ")),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},b(s.meterRealtimeUrl),9,w),e[5]||(e[5]=l("br",null,null,-1)),e[6]||(e[6]=t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. '))]),_:1},8,["model-value"])])}const U=f(_,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-00ea06ea.js b/web/settings/assets/device-00ea06ea.js
new file mode 100644
index 0000000000..510ab0d80f
--- /dev/null
+++ b/web/settings/assets/device-00ea06ea.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as v,u as t,k as i,l as f,D as a,N as c,y as b,A as u,B as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,k,B){const d=t("openwb-base-heading"),r=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),f("div",_,[a(d,null,{default:c(()=>o[5]||(o[5]=[b(" Einstellungen für Alpha ESS ")])),_:1}),a(r,{title:"Ausleseart","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):s("",!0),a(r,{title:"Firmware Version","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const $=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-08fe3db1.js b/web/settings/assets/device-08fe3db1.js
deleted file mode 100644
index 2d60827125..0000000000
--- a/web/settings/assets/device-08fe3db1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as i,k as c,l as _,D as t,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSiemens",mixins:[m]},f={class:"device-siemens"};function v(e,o,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),_("div",f,[t(p,null,{default:a(()=>[r(" Einstellungen für Siemens ")]),_:1}),t(d,{subtype:"info"},{default:a(()=>[r(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")]),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const I=l(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{I as default};
diff --git a/web/settings/assets/device-09e0b5dd.js b/web/settings/assets/device-09e0b5dd.js
new file mode 100644
index 0000000000..0e0baa3058
--- /dev/null
+++ b/web/settings/assets/device-09e0b5dd.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as n,k as u,l as m,D as i,N as l,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[a]},f={class:"device-mtec"};function b(o,e,v,g,w,x){const s=n("openwb-base-heading"),r=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[c("Einstellungen für M-Tec")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-0a578374.js b/web/settings/assets/device-0a578374.js
deleted file mode 100644
index ab082b1328..0000000000
--- a/web/settings/assets/device-0a578374.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as t,k as d,l as m,D as n,N as c,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(e,o,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:c(()=>[l(" Einstellungen für SMA Webbox ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const W=r(u,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{W as default};
diff --git a/web/settings/assets/device-0c94f34d.js b/web/settings/assets/device-0c94f34d.js
deleted file mode 100644
index a8f391c662..0000000000
--- a/web/settings/assets/device-0c94f34d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as t,k as m,l as d,D as i,N as u,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(e,o,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return m(),d("div",f,[i(a,null,{default:u(()=>[c(" Einstellungen für Solarmax ")]),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-0f4599b8.js b/web/settings/assets/device-0f4599b8.js
deleted file mode 100644
index 5b03d26773..0000000000
--- a/web/settings/assets/device-0f4599b8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[p]},v={class:"device-victron"};function f(e,o,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),l("div",v,[i(r,null,{default:m(()=>[c(" Einstellungen für Victron ")]),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-13ac66a2.js b/web/settings/assets/device-13ac66a2.js
deleted file mode 100644
index 05ca7f04ff..0000000000
--- a/web/settings/assets/device-13ac66a2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as n,k as c,l as b,D as t,N as s,y as r,x as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarEdge",mixins:[u]},g={class:"device-solaredge"},v=_("br",null,null,-1);function h(e,o,w,B,k,S){const a=n("openwb-base-heading"),d=n("openwb-base-alert"),p=n("openwb-base-text-input"),l=n("openwb-base-number-input");return c(),b("div",g,[t(a,null,{default:s(()=>[r(" Einstellungen für SolarEdge ")]),_:1}),t(d,{subtype:"info"},{default:s(()=>[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),v,r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren Smarthome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=i=>e.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=i=>e.updateConfiguration(i,"configuration.port"))},{help:s(()=>[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")]),_:1},8,["model-value"])])}const $=m(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-13bf79c7.js b/web/settings/assets/device-13bf79c7.js
new file mode 100644
index 0000000000..cfaec13f75
--- /dev/null
+++ b/web/settings/assets/device-13bf79c7.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as o,k as d,l,D as t,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBenning",mixins:[p]},_={class:"device-benning"};function f(n,e,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[m("Einstellungen für Benning")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const y=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-17ee5402.js b/web/settings/assets/device-17ee5402.js
new file mode 100644
index 0000000000..92bb449939
--- /dev/null
+++ b/web/settings/assets/device-17ee5402.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as d,l,D as s,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceYouless",mixins:[r]},_={class:"device-youless"};function f(o,e,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>e[1]||(e[1]=[m(" Einstellungen für Youless ")])),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const h=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-1859f43b.js b/web/settings/assets/device-1859f43b.js
deleted file mode 100644
index 23efe30f56..0000000000
--- a/web/settings/assets/device-1859f43b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as e,k as u,l as _,D as t,N as s,y as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPiko",mixins:[l]},f={class:"device-kostal-piko"};function b(o,n,v,h,g,k){const a=e("openwb-base-heading"),r=e("openwb-base-alert"),p=e("openwb-base-text-input");return u(),_("div",f,[t(a,null,{default:s(()=>[i(" Einstellungen für Kostal Piko ")]),_:1}),t(r,{subtype:"info"},{default:s(()=>[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")]),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=c=>o.updateConfiguration(c,"configuration.ip_address"))},null,8,["model-value"])])}const $=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-191071c7.js b/web/settings/assets/device-191071c7.js
new file mode 100644
index 0000000000..3f1036b4f0
--- /dev/null
+++ b/web/settings/assets/device-191071c7.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as m,l as b,D as i,N as s,y as r,x as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceHuawei",mixins:[l]},c={class:"device-huawei"};function g(n,e,_,w,D,h){const u=t("openwb-base-heading"),d=t("openwb-base-text-input"),a=t("openwb-base-number-input");return m(),b("div",c,[i(u,null,{default:s(()=>e[3]||(e[3]=[r(" Einstellungen für Huawei ")])),_:1}),i(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:s(()=>e[4]||(e[4]=[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),f("br",null,null,-1),r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")])),_:1},8,["model-value"])])}const q=p(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-19334006.js b/web/settings/assets/device-19334006.js
new file mode 100644
index 0000000000..70eea8717c
--- /dev/null
+++ b/web/settings/assets/device-19334006.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as l,l as u,D as n,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceVZLogger",mixins:[d]},c={class:"device-vzlogger"};function _(o,e,v,f,b,w){const r=t("openwb-base-heading"),p=t("openwb-base-text-input");return l(),u("div",c,[n(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für VZLogger ")])),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},{help:i(()=>e[2]||(e[2]=[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")])),_:1},8,["model-value"])])}const N=m(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-1a057dc5.js b/web/settings/assets/device-1a057dc5.js
new file mode 100644
index 0000000000..0116fe2a61
--- /dev/null
+++ b/web/settings/assets/device-1a057dc5.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as n,k as u,l as d,D as a,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(t,e,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>e[2]||(e[2]=[c("Einstellungen für Tasmota")])),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase","not-selected":"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":t.device.configuration.phase,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-1c46f4b0.js b/web/settings/assets/device-1c46f4b0.js
deleted file mode 100644
index 91de025d8e..0000000000
--- a/web/settings/assets/device-1c46f4b0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as t,k as d,l,D as s,N as u,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceYouless",mixins:[p]},_={class:"device-youless"};function f(e,o,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>[c(" Einstellungen für Youless ")]),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const V=r(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-1f0b55db.js b/web/settings/assets/device-1f0b55db.js
deleted file mode 100644
index 902ead8c6d..0000000000
--- a/web/settings/assets/device-1f0b55db.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as i,k as d,l as u,D as t,N as l,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function _(e,o,v,w,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>[m(" Einstellungen für Sunways ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const h=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-20a3cc0b.js b/web/settings/assets/device-20a3cc0b.js
new file mode 100644
index 0000000000..b962427000
--- /dev/null
+++ b/web/settings/assets/device-20a3cc0b.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as i,k as p,l,D as t,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(o,e,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>e[3]||(e[3]=[_(" Einstellungen für Azzurro ZCS ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-264b9607.js b/web/settings/assets/device-264b9607.js
new file mode 100644
index 0000000000..255c734e22
--- /dev/null
+++ b/web/settings/assets/device-264b9607.js
@@ -0,0 +1 @@
+import{D as v}from"./HardwareInstallation-6cc98da9.js";import{_ as g,u as o,k as m,l as _,D as s,N as u,y as i,x as n,z as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"DeviceSonnenbatterie",mixins:[v],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},k={class:"device-sonnenbatterie"},w={style:{display:"block"}},B=["href"],J=["href"],R=["href"],I=["href"];function P(r,e,x,h,z,t){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),f=o("openwb-base-text-input"),b=o("openwb-base-select-input");return m(),_("div",k,[s(d,null,{default:u(()=>e[2]||(e[2]=[i(" Einstellungen für SonnenBatterie ")])),_:1}),s(p,{subtype:"info"},{default:u(()=>e[3]||(e[3]=[i(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')])),_:1}),s(f,{title:"IP oder Hostname",subtype:"host",required:"","model-value":r.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>r.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),s(b,{title:"Datenverbindung",required:"","not-selected":"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":r.device.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=a=>r.updateConfiguration(a,"configuration.variant"))},{help:u(()=>[n("span",w,[e[4]||(e[4]=i(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:")),e[5]||(e[5]=n("br",null,null,-1)),e[6]||(e[6]=i(" Rest-API 1: ")),n("a",{href:t.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi1),9,B),e[7]||(e[7]=n("br",null,null,-1)),e[8]||(e[8]=i(" Rest-API 2: ")),n("a",{href:t.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi2),9,J),e[9]||(e[9]=n("br",null,null,-1)),e[10]||(e[10]=i(" JSON-API v1: ")),n("a",{href:t.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi1),9,R),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=i(" JSON-API v2: ")),n("a",{href:t.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi2),9,I)])]),_:1},8,["model-value"])])}const U=g(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-2bd6af83.js b/web/settings/assets/device-2bd6af83.js
new file mode 100644
index 0000000000..2aeef3047c
--- /dev/null
+++ b/web/settings/assets/device-2bd6af83.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as i,k as c,l as b,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPlenticore",mixins:[u]},_={class:"device-kostal-plenticore"};function v(o,e,g,w,k,C){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),b("div",_,[t(l,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Kostal Plenticore ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-2dc6cc3c.js b/web/settings/assets/device-2dc6cc3c.js
new file mode 100644
index 0000000000..0ca959881a
--- /dev/null
+++ b/web/settings/assets/device-2dc6cc3c.js
@@ -0,0 +1 @@
+import{D as f}from"./HardwareInstallation-6cc98da9.js";import{_ as g,u as d,k as t,l as b,D as l,N as a,y as i,A as s,B as u,x as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceEnphase",mixins:[f]},y={class:"device-enphase"};function k(n,e,V,c,E,h){const m=d("openwb-base-heading"),r=d("openwb-base-text-input"),v=d("openwb-base-select-input");return t(),b("div",y,[l(m,null,{default:a(()=>e[6]||(e[6]=[i(" Einstellungen für Enphase Envoy / IQ Gateway ")])),_:1}),l(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>e[7]||(e[7]=[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')])),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":n.device.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[8]||(e[8]=[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")])),_:1},8,["model-value"]),n.device.configuration.version>1?(t(),s(r,{key:0,title:"Benutzer",subtype:"user","model-value":n.device.configuration.user,required:"","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:1,title:"Kennwort",subtype:"password","model-value":n.device.configuration.password,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:2,title:"Envoy Seriennummer","model-value":n.device.configuration.serial,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:3,title:"Token",subtype:"password","model-value":n.device.configuration.token,required:"","onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.token"))},{help:a(()=>e[9]||(e[9]=[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),p("br",null,null,-1),i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1),i(" erledigen. ")])),_:1},8,["model-value"])):u("",!0)])}const T=g(w,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{T as default};
diff --git a/web/settings/assets/device-359d7e50.js b/web/settings/assets/device-359d7e50.js
deleted file mode 100644
index 9da2fd24b8..0000000000
--- a/web/settings/assets/device-359d7e50.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as i,k as u,l as p,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},_={class:"device-qcells"};function b(e,o,v,g,w,C){const a=i("openwb-base-heading"),l=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",_,[t(a,null,{default:m(()=>[c(" Einstellungen für QCells ESS ")]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-38fb8261.js b/web/settings/assets/device-38fb8261.js
deleted file mode 100644
index 3359913b13..0000000000
--- a/web/settings/assets/device-38fb8261.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as d,l as m,D as n,N as c,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSmartfox",mixins:[r]},_={class:"device-smartfox"};function f(e,o,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:c(()=>[l(" Einstellungen für Smartfox ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-3b65739e.js b/web/settings/assets/device-3b65739e.js
deleted file mode 100644
index 49f3ba38d9..0000000000
--- a/web/settings/assets/device-3b65739e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as r,k as d,l as m,D as i,N as s,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceKostalPikoOld",mixins:[u]},f={class:"device-kostal-piko-old"};function v(e,o,g,_,b,k){const l=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",f,[i(l,null,{default:s(()=>[a(" Einstellungen für Kostal Piko (alte Generation) ")]),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":e.device.configuration.url,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.url"))},{help:s(()=>[a(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')]),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":e.device.configuration.user,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[2]||(o[2]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const N=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-3c0a0263.js b/web/settings/assets/device-3c0a0263.js
deleted file mode 100644
index 37fe4dd5cd..0000000000
--- a/web/settings/assets/device-3c0a0263.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as t,k as c,l as m,D as n,N as s,y as _,x as b}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"},g=b("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1);function w(e,o,y,x,D,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input");return c(),m("div",v,[n(a,null,{default:s(()=>[_("Einstellungen für Deye")]),_:1}),n(r,{subtype:"info"},{default:s(()=>[g]),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=i=>e.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),n(d,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=i=>e.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=l(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-3c779cdd.js b/web/settings/assets/device-3c779cdd.js
deleted file mode 100644
index f0bea1aca9..0000000000
--- a/web/settings/assets/device-3c779cdd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as n,k as m,l as _,D as o,N as l,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(e,t,h,g,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[o(r,null,{default:l(()=>[s(" Einstellungen für Shelly ")]),_:1}),o(a,{subtype:"info"},{default:l(()=>[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shellys der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")]),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren",notSelected:"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":e.device.configuration.factor,required:"","onUpdate:modelValue":t[1]||(t[1]=i=>e.updateConfiguration(i,"configuration.factor"))},{help:l(()=>[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")]),_:1},8,["model-value"])])}const P=c(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-3e055cd7.js b/web/settings/assets/device-3e055cd7.js
deleted file mode 100644
index 5f5bfdb13e..0000000000
--- a/web/settings/assets/device-3e055cd7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as a,u as t,k as d,l as u,D as n,N as c,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(e,o,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:c(()=>[l("Einstellungen für OpenDTU")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.url,"onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const U=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-40b4b0c5.js b/web/settings/assets/device-40b4b0c5.js
deleted file mode 100644
index c48d670f1b..0000000000
--- a/web/settings/assets/device-40b4b0c5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(e,o,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>[c(" Einstellungen für Azzurro ZCS ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-41c2f368.js b/web/settings/assets/device-41c2f368.js
new file mode 100644
index 0000000000..ae1de08867
--- /dev/null
+++ b/web/settings/assets/device-41c2f368.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as s,k as p,l,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceLG",mixins:[m]},f={class:"device-lg"};function c(n,e,v,b,_,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",f,[t(d,null,{default:r(()=>e[2]||(e[2]=[a(" Einstellungen für LG ESS V1.0 ")])),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.password"))},{help:r(()=>e[3]||(e[3]=[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')])),_:1},8,["model-value"])])}const B=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-4498198c.js b/web/settings/assets/device-4498198c.js
deleted file mode 100644
index 1a0d559af1..0000000000
--- a/web/settings/assets/device-4498198c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as n,k as u,l as d,D as a,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(e,t,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>[c("Einstellungen für Tasmota")]),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase",notSelected:"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":e.device.configuration.phase,required:"","onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-44b38c3f.js b/web/settings/assets/device-44b38c3f.js
deleted file mode 100644
index d9b14808ed..0000000000
--- a/web/settings/assets/device-44b38c3f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as i,k as l,l as p,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalSEM",mixins:[d]},f={class:"device-kostal-sem"};function b(e,o,v,g,w,k){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",f,[t(s,null,{default:m(()=>[c(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-4f01c44f.js b/web/settings/assets/device-4f01c44f.js
new file mode 100644
index 0000000000..03bc580a10
--- /dev/null
+++ b/web/settings/assets/device-4f01c44f.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSofar",mixins:[d]},v={class:"device-sofar"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f("Einstellungen für Sofar")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-4f7c15a3.js b/web/settings/assets/device-4f7c15a3.js
deleted file mode 100644
index 2163c85fa9..0000000000
--- a/web/settings/assets/device-4f7c15a3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as v,u as t,k as i,l as c,D as a,N as f,y as b,A as u,B as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,S,k){const d=t("openwb-base-heading"),s=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),c("div",_,[a(d,null,{default:f(()=>[b(" Einstellungen für Alpha ESS ")]),_:1}),a(s,{title:"Ausleseart",notSelected:"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):r("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):r("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):r("",!0),a(s,{title:"Firmware Version",notSelected:"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const N=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-511acdb3.js b/web/settings/assets/device-511acdb3.js
new file mode 100644
index 0000000000..c4e3a09f80
--- /dev/null
+++ b/web/settings/assets/device-511acdb3.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as s,k as d,l as u,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(o,e,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Discovergy ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-51a9d57c.js b/web/settings/assets/device-51a9d57c.js
new file mode 100644
index 0000000000..d41c8dee94
--- /dev/null
+++ b/web/settings/assets/device-51a9d57c.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as a,k as d,l as p,D as i,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceTesla",mixins:[l]},v={class:"device-tesla"};function c(o,e,g,b,_,w){const s=a("openwb-base-heading"),n=a("openwb-base-text-input");return d(),p("div",v,[i(s,null,{default:u(()=>e[3]||(e[3]=[m(" Einstellungen für Tesla ")])),_:1}),i(n,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(n,{title:"E-Mail",subtype:"email",required:"","model-value":o.device.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const E=r(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-57a08fa3.js b/web/settings/assets/device-57a08fa3.js
new file mode 100644
index 0000000000..74cef54531
--- /dev/null
+++ b/web/settings/assets/device-57a08fa3.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as l,l as d,D as n,N as m,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarLog",mixins:[a]},c={class:"device-solar_log"};function f(o,e,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für Solar-Log ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-57e7ea16.js b/web/settings/assets/device-57e7ea16.js
deleted file mode 100644
index b9c8fb8743..0000000000
--- a/web/settings/assets/device-57e7ea16.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as b,u as i,k as g,l as c,D as t,N as r,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceSungrow",mixins:[m]},_={class:"device-sungrow"};function f(e,n,w,S,D,h){const l=i("openwb-base-heading"),s=i("openwb-base-alert"),d=i("openwb-base-text-input"),a=i("openwb-base-number-input"),p=i("openwb-base-select-input");return g(),c("div",_,[t(l,null,{default:r(()=>[u(" Einstellungen für Sungrow ")]),_:1}),t(s,{subtype:"info"},{default:r(()=>[u(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")]),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(p,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":e.device.configuration.version,required:"","onUpdate:modelValue":n[3]||(n[3]=o=>e.updateConfiguration(o,"configuration.version"))},{help:r(()=>[u(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um iSolarCloud nutzen zu können. ")]),_:1},8,["model-value"])])}const q=b(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-58a430d5.js b/web/settings/assets/device-58a430d5.js
deleted file mode 100644
index e7359b4dda..0000000000
--- a/web/settings/assets/device-58a430d5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as t,k as l,l as u,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlex",mixins:[r]},b={class:"device-openwb-flex"};function f(e,o,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),u("div",b,[i(p,null,{default:m(()=>[c(" Einstellungen für openWB-Flex ")]),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-5a9d2acd.js b/web/settings/assets/device-5a9d2acd.js
deleted file mode 100644
index c4aa0c10e2..0000000000
--- a/web/settings/assets/device-5a9d2acd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as d,l,D as n,N as c,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceSolarWorld",mixins:[a]},u={class:"device-solar_world"};function f(e,o,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",u,[n(i,null,{default:c(()=>[_(" Einstellungen für SolarWorld ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const W=p(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{W as default};
diff --git a/web/settings/assets/device-5aef24bb.js b/web/settings/assets/device-5aef24bb.js
new file mode 100644
index 0000000000..bf69514a17
--- /dev/null
+++ b/web/settings/assets/device-5aef24bb.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSigenergy",mixins:[a]},_={class:"device-sigenergy"};function f(o,e,b,v,w,y){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",_,[i(r,null,{default:m(()=>e[2]||(e[2]=[g("Einstellungen für Sigenergy")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-622f0263.js b/web/settings/assets/device-622f0263.js
deleted file mode 100644
index 4d35ac80f7..0000000000
--- a/web/settings/assets/device-622f0263.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as c,l as d,D as n,N as m,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[a]},_={class:"device-rct"};function f(e,o,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return c(),d("div",_,[n(i,null,{default:m(()=>[l(" Einstellungen für RCT ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const V=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-63bdcc3c.js b/web/settings/assets/device-63bdcc3c.js
new file mode 100644
index 0000000000..afafbc44ba
--- /dev/null
+++ b/web/settings/assets/device-63bdcc3c.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as s,k as u,l as p,D as t,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[a]},v={class:"device-byd"};function b(o,e,c,g,_,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",v,[t(r,null,{default:l(()=>e[3]||(e[3]=[m(" Einstellungen für BYD ")])),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const N=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-646a2df0.js b/web/settings/assets/device-646a2df0.js
deleted file mode 100644
index 3f03d91f3e..0000000000
--- a/web/settings/assets/device-646a2df0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as i,k as m,l as u,D as n,N as a,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFems",mixins:[d]},f={class:"device-fems"};function _(e,o,v,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return m(),u("div",f,[n(p,null,{default:a(()=>[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},{help:a(()=>[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")]),_:1},8,["model-value"])])}const P=l(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-667da2bf.js b/web/settings/assets/device-667da2bf.js
new file mode 100644
index 0000000000..4ce91a64f0
--- /dev/null
+++ b/web/settings/assets/device-667da2bf.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as i,k as m,l as u,D as n,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFems",mixins:[d]},c={class:"device-fems"};function v(o,e,_,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return m(),u("div",c,[n(p,null,{default:a(()=>e[2]||(e[2]=[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>e[3]||(e[3]=[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")])),_:1},8,["model-value"])])}const P=l(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-671cfac2.js b/web/settings/assets/device-671cfac2.js
deleted file mode 100644
index 72e6b29764..0000000000
--- a/web/settings/assets/device-671cfac2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as i,k as b,l as _,D as t,N as r,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdog",mixins:[l]},f={class:"device-powerdog"};function v(e,o,g,w,C,x){const d=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),a=i("openwb-base-number-input");return b(),_("div",f,[t(d,null,{default:r(()=>[s(" Einstellungen für Powerdog ")]),_:1}),t(p,{subtype:"info"},{default:r(()=>[s(" ModbusTCP muss aktiviert sein. ")]),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-73279a9d.js b/web/settings/assets/device-73279a9d.js
new file mode 100644
index 0000000000..f003533735
--- /dev/null
+++ b/web/settings/assets/device-73279a9d.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as t,k as m,l as d,D as i,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(o,e,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return m(),d("div",f,[i(a,null,{default:u(()=>e[2]||(e[2]=[c(" Einstellungen für Solarmax ")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-7552eed1.js b/web/settings/assets/device-7552eed1.js
new file mode 100644
index 0000000000..1e4a15d6d6
--- /dev/null
+++ b/web/settings/assets/device-7552eed1.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as l,l as m,D as i,N as s,y as n,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceMqtt",mixins:[a]},u={class:"device-mqtt"};function g(_,e,b,f,h,v){const r=t("openwb-base-heading"),o=t("openwb-base-alert");return l(),m("div",u,[i(r,null,{default:s(()=>e[0]||(e[0]=[n("Einstellungen für MQTT")])),_:1}),i(o,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),c("br",null,null,-1),n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")])),_:1})])}const y=d(p,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-76f55505.js b/web/settings/assets/device-76f55505.js
deleted file mode 100644
index 75ce627296..0000000000
--- a/web/settings/assets/device-76f55505.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as a,k as d,l as p,D as i,N as u,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceTesla",mixins:[l]},c={class:"device-tesla"};function v(e,o,g,_,b,w){const s=a("openwb-base-heading"),n=a("openwb-base-text-input");return d(),p("div",c,[i(s,null,{default:u(()=>[m(" Einstellungen für Tesla ")]),_:1}),i(n,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(n,{title:"E-Mail",subtype:"email",required:"","model-value":e.device.configuration.email,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[2]||(o[2]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const E=r(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-7aeda0a3.js b/web/settings/assets/device-7aeda0a3.js
new file mode 100644
index 0000000000..a4f2e51fe2
--- /dev/null
+++ b/web/settings/assets/device-7aeda0a3.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as v,u as t,k as b,l as f,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},w={class:"device-goodwe"};function _(o,e,W,c,D,V){const l=t("openwb-base-heading"),a=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input"),u=t("openwb-base-select-input");return b(),f("div",w,[i(l,null,{default:r(()=>e[5]||(e[5]=[s("Einstellungen für GoodWe")])),_:1}),i(a,{subtype:"info"},{default:r(()=>e[6]||(e[6]=[s(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")])),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"API-Version","not-selected":"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.version"))},{help:r(()=>e[7]||(e[7]=[s(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"]),i(u,{title:"Firmware","not-selected":"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>e[8]||(e[8]=[s(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")])),_:1},8,["model-value"])])}const P=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-7bfbb863.js b/web/settings/assets/device-7bfbb863.js
deleted file mode 100644
index b17a1a2458..0000000000
--- a/web/settings/assets/device-7bfbb863.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as f}from"./HardwareInstallation-a0083e3a.js";import{_ as g,u as d,k as r,l as c,D as l,N as a,y as i,A as s,B as u,x as p}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceEnphase",mixins:[f]},w={class:"device-enphase"},h=p("br",null,null,-1),y=p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1);function k(e,n,V,E,B,C){const m=d("openwb-base-heading"),t=d("openwb-base-text-input"),v=d("openwb-base-select-input");return r(),c("div",w,[l(m,null,{default:a(()=>[i(" Einstellungen für Enphase Envoy / IQ Gateway ")]),_:1}),l(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.hostname,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')]),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.version"))},{help:a(()=>[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")]),_:1},8,["model-value"]),e.device.configuration.version>1?(r(),s(t,{key:0,title:"Benutzer",subtype:"user","model-value":e.device.configuration.user,required:"","onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),e.device.configuration.version>1?(r(),s(t,{key:1,title:"Kennwort",subtype:"password","model-value":e.device.configuration.password,required:"","onUpdate:modelValue":n[3]||(n[3]=o=>e.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),e.device.configuration.version>1?(r(),s(t,{key:2,title:"Envoy Seriennummer","model-value":e.device.configuration.serial,required:"","onUpdate:modelValue":n[4]||(n[4]=o=>e.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),e.device.configuration.version>1?(r(),s(t,{key:3,title:"Token",subtype:"password","model-value":e.device.configuration.token,required:"","onUpdate:modelValue":n[5]||(n[5]=o=>e.updateConfiguration(o,"configuration.token"))},{help:a(()=>[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),h,i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),y,i(" erledigen. ")]),_:1},8,["model-value"])):u("",!0)])}const W=g(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{W as default};
diff --git a/web/settings/assets/device-7c975c06.js b/web/settings/assets/device-7c975c06.js
new file mode 100644
index 0000000000..dd00914eb6
--- /dev/null
+++ b/web/settings/assets/device-7c975c06.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as i,k as d,l as u,D as t,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function v(o,e,w,_,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Sunways ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-7d21f4f3.js b/web/settings/assets/device-7d21f4f3.js
new file mode 100644
index 0000000000..5b3223a9e3
--- /dev/null
+++ b/web/settings/assets/device-7d21f4f3.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as m,l as _,D as a,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarwatt",mixins:[p]},v={class:"device-solarwatt"};function c(t,e,w,b,g,x){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[a(s,null,{default:i(()=>e[2]||(e[2]=[r(" Einstellungen für Solarwatt/My Reserve ")])),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode","not-selected":"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":t.device.configuration.energy_manager,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>e[3]||(e[3]=[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")])),_:1},8,["model-value"])])}const E=u(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-7ea3222f.js b/web/settings/assets/device-7ea3222f.js
deleted file mode 100644
index 9c62fcdc70..0000000000
--- a/web/settings/assets/device-7ea3222f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as t,k as m,l,D as n,N as i,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceVZLogger",mixins:[d]},_={class:"device-vzlogger"};function g(e,o,v,f,b,h){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return m(),l("div",_,[n(r,null,{default:i(()=>[s(" Einstellungen für VZLogger ")]),_:1}),n(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.ip_address"))},{help:i(()=>[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")]),_:1},8,["model-value"])])}const N=c(u,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-7f837c71.js b/web/settings/assets/device-7f837c71.js
deleted file mode 100644
index 318cc332aa..0000000000
--- a/web/settings/assets/device-7f837c71.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as i,k as m,l as c,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolax",mixins:[u]},b={class:"device-solax"};function f(e,o,_,v,x,w){const d=i("openwb-base-heading"),l=i("openwb-base-text-input"),s=i("openwb-base-number-input");return m(),c("div",b,[t(d,null,{default:r(()=>[a(" Einstellungen für Solax ")]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",min:1,max:65535,placeholder:502,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},{help:r(()=>[a(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")]),_:1},8,["model-value"]),t(s,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":e.device.configuration.modbus_id,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},{help:r(()=>[a(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")]),_:1},8,["model-value"])])}const $=p(g,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-7fb9b18e.js b/web/settings/assets/device-7fb9b18e.js
deleted file mode 100644
index 9b82c0f31d..0000000000
--- a/web/settings/assets/device-7fb9b18e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as n,k as u,l,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[p]},f={class:"device-studer"};function b(e,o,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),l("div",f,[i(r,null,{default:m(()=>[c(" Einstellungen für Studer ")]),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const y=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-7fc12e51.js b/web/settings/assets/device-7fc12e51.js
deleted file mode 100644
index 079de9e49b..0000000000
--- a/web/settings/assets/device-7fc12e51.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as o,k as c,l as u,D as i,N as r,y as e,x as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHttp",mixins:[d]},f={class:"device-http"},v=m("br",null,null,-1);function b(t,n,g,h,x,w){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return c(),u("div",f,[i(s,null,{default:r(()=>[e(" Einstellungen für Http ")]),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":t.device.configuration.url,"onUpdate:modelValue":n[0]||(n[0]=a=>t.updateConfiguration(a,"configuration.url"))},{help:r(()=>[e(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),v,e(" Beispiel: http://mein.server:8080 ")]),_:1},8,["model-value"])])}const z=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{z as default};
diff --git a/web/settings/assets/device-8118a66e.js b/web/settings/assets/device-8118a66e.js
deleted file mode 100644
index b7d089b877..0000000000
--- a/web/settings/assets/device-8118a66e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as l,l as p,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceCarloGavazzi",mixins:[d]},_={class:"device-carlogavazzi"};function f(e,o,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",_,[i(r,null,{default:m(()=>[c(" Einstellungen für Carlo Gavazzi ")]),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-829b538b.js b/web/settings/assets/device-829b538b.js
deleted file mode 100644
index c7c65371e0..0000000000
--- a/web/settings/assets/device-829b538b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as s,k as d,l as u,D as n,N as l,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(e,o,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>[c(" Einstellungen für Discovergy ")]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":e.device.configuration.user,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-84e9833f.js b/web/settings/assets/device-84e9833f.js
new file mode 100644
index 0000000000..0799efd599
--- /dev/null
+++ b/web/settings/assets/device-84e9833f.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as t,k as d,l as m,D as i,N as c,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(o,e,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>e[3]||(e[3]=[v("Einstellungen für Solis")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":o.device.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const N=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-850717d0.js b/web/settings/assets/device-850717d0.js
deleted file mode 100644
index e7e141d5be..0000000000
--- a/web/settings/assets/device-850717d0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as e,k as m,l as c,D as n,N as s,y as t,x as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"},h=_("br",null,null,-1);function g(o,i,v,w,x,S){const r=e("openwb-base-heading"),a=e("openwb-base-alert"),d=e("openwb-base-text-input");return m(),c("div",b,[n(r,null,{default:s(()=>[t(" Einstellungen für Fronius ")]),_:1}),n(a,{subtype:"info"},{default:s(()=>[t(" Die Fronius API muss aktiviert sein."),h,t(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")]),_:1}),n(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":i[0]||(i[0]=u=>o.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const V=p(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-86046891.js b/web/settings/assets/device-86046891.js
deleted file mode 100644
index f2fcbcba25..0000000000
--- a/web/settings/assets/device-86046891.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as c,l as d,D as n,N as l,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(e,o,v,b,g,k){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return c(),d("div",_,[n(s,null,{default:l(()=>[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")]),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const V=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-86f88cbb.js b/web/settings/assets/device-86f88cbb.js
deleted file mode 100644
index fe7fd34961..0000000000
--- a/web/settings/assets/device-86f88cbb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as s,k as u,l as m,D as n,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function _(e,o,v,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),m("div",f,[n(r,null,{default:d(()=>[l(" Einstellungen für smart-me ")]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":e.device.configuration.user,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-8770c372.js b/web/settings/assets/device-8770c372.js
new file mode 100644
index 0000000000..bee8f1cdf1
--- /dev/null
+++ b/web/settings/assets/device-8770c372.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as d,l,D as n,N as m,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarWorld",mixins:[a]},c={class:"device-solar_world"};function f(o,e,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für SolarWorld ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-8a6c3a9f.js b/web/settings/assets/device-8a6c3a9f.js
new file mode 100644
index 0000000000..1633424e6a
--- /dev/null
+++ b/web/settings/assets/device-8a6c3a9f.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as n,k as b,l as _,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(o,e,w,y,g,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return b(),_("div",f,[t(a,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für SMA Sunny Boy/Tripower ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-8b304fd5.js b/web/settings/assets/device-8b304fd5.js
new file mode 100644
index 0000000000..1a5b192290
--- /dev/null
+++ b/web/settings/assets/device-8b304fd5.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as d,l,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(o,e,v,b,g,k){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[n(s,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")])),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-8c349616.js b/web/settings/assets/device-8c349616.js
deleted file mode 100644
index 70f597e7b6..0000000000
--- a/web/settings/assets/device-8c349616.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSigenergy",mixins:[p]},g={class:"device-sigenergy"};function f(e,o,b,v,w,y){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),l("div",g,[i(r,null,{default:m(()=>[c("Einstellungen für Sigenergy")]),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-8f5f7340.js b/web/settings/assets/device-8f5f7340.js
new file mode 100644
index 0000000000..f47f187dd5
--- /dev/null
+++ b/web/settings/assets/device-8f5f7340.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJanitza",mixins:[d]},v={class:"device-janitza"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Janitza ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-92f55c21.js b/web/settings/assets/device-92f55c21.js
new file mode 100644
index 0000000000..48da2f00f7
--- /dev/null
+++ b/web/settings/assets/device-92f55c21.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as o,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBatterX",mixins:[a]},_={class:"device-batterx"};function f(t,e,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für BatterX ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-930131aa.js b/web/settings/assets/device-930131aa.js
new file mode 100644
index 0000000000..9666b6e29d
--- /dev/null
+++ b/web/settings/assets/device-930131aa.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[a]},f={class:"device-fox_ess"};function b(o,e,v,g,x,w){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_("Einstellungen für FoxEss")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-944bfe1b.js b/web/settings/assets/device-944bfe1b.js
new file mode 100644
index 0000000000..f3ec9792fb
--- /dev/null
+++ b/web/settings/assets/device-944bfe1b.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as n,k as c,l as f,D as o,N as l,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(t,e,g,h,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return c(),f("div",v,[o(r,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für Shelly ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shellys der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren","not-selected":"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":t.device.configuration.factor,required:"","onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.factor"))},{help:l(()=>e[4]||(e[4]=[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")])),_:1},8,["model-value"])])}const P=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-95627a98.js b/web/settings/assets/device-95627a98.js
new file mode 100644
index 0000000000..a382c831d2
--- /dev/null
+++ b/web/settings/assets/device-95627a98.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as i,k as u,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSaxpower",mixins:[p]},v={class:"device-saxpower"};function _(o,e,c,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Saxpower ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-967835b8.js b/web/settings/assets/device-967835b8.js
new file mode 100644
index 0000000000..16f35b7fa3
--- /dev/null
+++ b/web/settings/assets/device-967835b8.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as i,k as p,l as d,D as t,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarView",mixins:[u]},_={class:"device-solar-view"};function c(o,e,b,g,w,V){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),d("div",_,[t(a,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für SolarView ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Timeout",required:"","model-value":o.device.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const y=l(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-97810824.js b/web/settings/assets/device-97810824.js
new file mode 100644
index 0000000000..91fb387e10
--- /dev/null
+++ b/web/settings/assets/device-97810824.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as m,l as u,D as i,N as s,y as o,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return m(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const E=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-97dc9354.js b/web/settings/assets/device-97dc9354.js
new file mode 100644
index 0000000000..930798b0fb
--- /dev/null
+++ b/web/settings/assets/device-97dc9354.js
@@ -0,0 +1 @@
+import{D as s}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(o,e,_,g,w,C){const a=i("openwb-base-heading"),r=i("openwb-base-text-input"),d=i("openwb-base-number-input");return p(),l("div",b,[t(a,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für E3DC ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-98e25fe5.js b/web/settings/assets/device-98e25fe5.js
deleted file mode 100644
index f795baf9ed..0000000000
--- a/web/settings/assets/device-98e25fe5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as s,k as p,l,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceLG",mixins:[m]},g={class:"device-lg"};function f(e,n,_,v,b,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",g,[t(d,null,{default:r(()=>[a(" Einstellungen für LG ESS V1.0 ")]),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=i=>e.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":n[1]||(n[1]=i=>e.updateConfiguration(i,"configuration.password"))},{help:r(()=>[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')]),_:1},8,["model-value"])])}const B=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-98fd1cc4.js b/web/settings/assets/device-98fd1cc4.js
deleted file mode 100644
index 5bafb589a0..0000000000
--- a/web/settings/assets/device-98fd1cc4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as i,k as u,l,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSaxpower",mixins:[p]},_={class:"device-saxpower"};function b(e,o,v,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",_,[t(r,null,{default:m(()=>[c(" Einstellungen für Saxpower ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-99fa45c8.js b/web/settings/assets/device-99fa45c8.js
deleted file mode 100644
index 0d552963e6..0000000000
--- a/web/settings/assets/device-99fa45c8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as v,u as t,k as b,l as f,D as i,N as r,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},c={class:"device-goodwe"};function _(e,o,w,W,h,D){const u=t("openwb-base-heading"),l=t("openwb-base-alert"),p=t("openwb-base-text-input"),s=t("openwb-base-number-input"),a=t("openwb-base-select-input");return b(),f("div",c,[i(u,null,{default:r(()=>[d("Einstellungen für GoodWe")]),_:1}),i(l,{subtype:"info"},{default:r(()=>[d(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")]),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(s,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(a,{title:"API-Version",notSelected:"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":e.device.configuration.version,required:"","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.version"))},{help:r(()=>[d(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")]),_:1},8,["model-value"]),i(a,{title:"Firmware",notSelected:"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":e.device.configuration.firmware,required:"","onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>[d(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")]),_:1},8,["model-value"])])}const P=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-9eedb23a.js b/web/settings/assets/device-9eedb23a.js
new file mode 100644
index 0000000000..71b116b4c8
--- /dev/null
+++ b/web/settings/assets/device-9eedb23a.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as b,u as i,k as g,l as v,D as t,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSungrow",mixins:[m]},w={class:"device-sungrow"};function _(n,e,c,S,D,W){const s=i("openwb-base-heading"),a=i("openwb-base-alert"),d=i("openwb-base-text-input"),l=i("openwb-base-number-input"),p=i("openwb-base-select-input");return g(),v("div",w,[t(s,null,{default:r(()=>e[4]||(e[4]=[u(" Einstellungen für Sungrow ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[5]||(e[5]=[u(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(p,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},{help:r(()=>e[6]||(e[6]=[u(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um iSolarCloud nutzen zu können. ")])),_:1},8,["model-value"])])}const q=b(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-a1e3a710.js b/web/settings/assets/device-a1e3a710.js
deleted file mode 100644
index 0407a56a55..0000000000
--- a/web/settings/assets/device-a1e3a710.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as l,l as d,D as n,N as c,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceSolarLog",mixins:[r]},u={class:"device-solar_log"};function f(e,o,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",u,[n(i,null,{default:c(()=>[_(" Einstellungen für Solar-Log ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-a3d36699.js b/web/settings/assets/device-a3d36699.js
deleted file mode 100644
index 6b2606da2f..0000000000
--- a/web/settings/assets/device-a3d36699.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVarta",mixins:[d]},f={class:"device-varta"};function _(e,o,b,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",f,[t(r,null,{default:m(()=>[v(" Einstellungen für Varta ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-a4ac3a30.js b/web/settings/assets/device-a4ac3a30.js
new file mode 100644
index 0000000000..a86b802e2f
--- /dev/null
+++ b/web/settings/assets/device-a4ac3a30.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVarta",mixins:[d]},b={class:"device-varta"};function _(o,e,c,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Varta ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-a55b4f4a.js b/web/settings/assets/device-a55b4f4a.js
new file mode 100644
index 0000000000..a03fb94a70
--- /dev/null
+++ b/web/settings/assets/device-a55b4f4a.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as i,k as m,l as g,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolax",mixins:[u]},f={class:"device-solax"};function v(o,e,c,_,x,w){const d=i("openwb-base-heading"),l=i("openwb-base-text-input"),a=i("openwb-base-number-input");return m(),g("div",f,[t(d,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für Solax ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",min:1,max:65535,placeholder:502,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},{help:r(()=>e[4]||(e[4]=[s(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")])),_:1},8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":o.device.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:r(()=>e[5]||(e[5]=[s(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")])),_:1},8,["model-value"])])}const h=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-a5ad3257.js b/web/settings/assets/device-a5ad3257.js
new file mode 100644
index 0000000000..c1a9addaf1
--- /dev/null
+++ b/web/settings/assets/device-a5ad3257.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as i,k as b,l as f,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemens",mixins:[m]},v={class:"device-siemens"};function c(o,e,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(p,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens ")])),_:1}),t(d,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-a945746f.js b/web/settings/assets/device-a945746f.js
new file mode 100644
index 0000000000..1dc9d636d5
--- /dev/null
+++ b/web/settings/assets/device-a945746f.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[a]},v={class:"device-victron"};function f(o,e,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",v,[i(r,null,{default:m(()=>e[2]||(e[2]=[c(" Einstellungen für Victron ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-aa58f408.js b/web/settings/assets/device-aa58f408.js
deleted file mode 100644
index 09010f95ec..0000000000
--- a/web/settings/assets/device-aa58f408.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJanitza",mixins:[d]},_={class:"device-janitza"};function b(e,o,v,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:m(()=>[c(" Einstellungen für Janitza ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-ab0439ee.js b/web/settings/assets/device-ab0439ee.js
deleted file mode 100644
index ee458ec7d8..0000000000
--- a/web/settings/assets/device-ab0439ee.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as n,k as u,l as m,D as i,N as l,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[p]},f={class:"device-mtec"};function b(e,o,v,g,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input"),r=n("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>[c("Einstellungen für M-Tec")]),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const h=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-b4d24a29.js b/web/settings/assets/device-b4d24a29.js
deleted file mode 100644
index 5b0f76194f..0000000000
--- a/web/settings/assets/device-b4d24a29.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(e,n,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>[c(" Einstellungen für Sunny Island ")]),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const h=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-b5ff9479.js b/web/settings/assets/device-b5ff9479.js
new file mode 100644
index 0000000000..b0a476599e
--- /dev/null
+++ b/web/settings/assets/device-b5ff9479.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as r,k as d,l as m,D as i,N as s,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPikoOld",mixins:[u]},v={class:"device-kostal-piko-old"};function c(o,e,g,b,k,w){const a=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",v,[i(a,null,{default:s(()=>e[3]||(e[3]=[l(" Einstellungen für Kostal Piko (alte Generation) ")])),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.url"))},{help:s(()=>e[4]||(e[4]=[l(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')])),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=p(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-b6ab13cb.js b/web/settings/assets/device-b6ab13cb.js
deleted file mode 100644
index 5254318760..0000000000
--- a/web/settings/assets/device-b6ab13cb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as m}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as i,k as _,l as b,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSiemensSentron",mixins:[m]},f={class:"device-siemens-sentron"};function v(e,n,g,w,C,D){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return _(),b("div",f,[t(u,null,{default:r(()=>[a(" Einstellungen für Siemens Sentron ")]),_:1}),t(p,{subtype:"info"},{default:r(()=>[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')]),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const E=l(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-ba7411f1.js b/web/settings/assets/device-ba7411f1.js
new file mode 100644
index 0000000000..14eb9228c9
--- /dev/null
+++ b/web/settings/assets/device-ba7411f1.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as s,k as u,l as m,D as n,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function v(o,e,_,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),m("div",f,[n(r,null,{default:d(()=>e[2]||(e[2]=[l(" Einstellungen für smart-me ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-bf4936ba.js b/web/settings/assets/device-bf4936ba.js
deleted file mode 100644
index 31e8d7075c..0000000000
--- a/web/settings/assets/device-bf4936ba.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as s,k as u,l as p,D as t,N as l,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[r]},c={class:"device-byd"};function v(e,o,b,g,_,w){const a=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",c,[t(a,null,{default:l(()=>[m(" Einstellungen für BYD ")]),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":e.device.configuration.user,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const N=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-c034f6f0.js b/web/settings/assets/device-c034f6f0.js
deleted file mode 100644
index 20926aa481..0000000000
--- a/web/settings/assets/device-c034f6f0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as o,k as c,l as d,D as t,N as l,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceBenning",mixins:[a]},_={class:"device-benning"};function f(e,n,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return c(),d("div",_,[t(i,null,{default:l(()=>[u("Einstellungen für Benning")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.url,"onUpdate:modelValue":n[0]||(n[0]=r=>e.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const y=p(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-c0ddbba1.js b/web/settings/assets/device-c0ddbba1.js
new file mode 100644
index 0000000000..d34a2b053b
--- /dev/null
+++ b/web/settings/assets/device-c0ddbba1.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as n,k as u,l,D as i,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[a]},f={class:"device-studer"};function b(o,e,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),l("div",f,[i(r,null,{default:m(()=>e[2]||(e[2]=[c(" Einstellungen für Studer ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const E=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-c0dfc296.js b/web/settings/assets/device-c0dfc296.js
deleted file mode 100644
index 5ec254985b..0000000000
--- a/web/settings/assets/device-c0dfc296.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as n,k as m,l as u,D as i,N as s,y as e,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"},b=c("br",null,null,-1);function v(o,t,g,w,x,h){const r=n("openwb-base-heading"),a=n("openwb-base-text-input");return m(),u("div",f,[i(r,null,{default:s(()=>[e(" Einstellungen für JSON ")]),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":t[0]||(t[0]=p=>o.updateConfiguration(p,"configuration.url"))},{help:s(()=>[e(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),b,e(" Beispiel: http://192.168.1.1:8080/json?data=1 ")]),_:1},8,["model-value"])])}const E=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-c1920155.js b/web/settings/assets/device-c1920155.js
new file mode 100644
index 0000000000..6bc3e6a31a
--- /dev/null
+++ b/web/settings/assets/device-c1920155.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as t,k as c,l as m,D as o,N as s,y as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalPiko",mixins:[d]},f={class:"device-kostal-piko"};function b(n,e,v,g,k,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input");return c(),m("div",f,[o(a,null,{default:s(()=>e[1]||(e[1]=[i(" Einstellungen für Kostal Piko ")])),_:1}),o(r,{subtype:"info"},{default:s(()=>e[2]||(e[2]=[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>n.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-c1c7f277.js b/web/settings/assets/device-c1c7f277.js
new file mode 100644
index 0000000000..63ad7bdf98
--- /dev/null
+++ b/web/settings/assets/device-c1c7f277.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as c,D as t,N as r,y as o,x as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"};function g(i,e,v,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),d=n("openwb-base-text-input");return m(),c("div",b,[t(s,null,{default:r(()=>e[1]||(e[1]=[o(" Einstellungen für Fronius ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[o(" Die Fronius API muss aktiviert sein."),_("br",null,null,-1),o(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const M=p(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{M as default};
diff --git a/web/settings/assets/device-c37bf0a2.js b/web/settings/assets/device-c37bf0a2.js
new file mode 100644
index 0000000000..757aa3cfef
--- /dev/null
+++ b/web/settings/assets/device-c37bf0a2.js
@@ -0,0 +1 @@
+import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as i,k as b,l as f,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemensSentron",mixins:[m]},v={class:"device-siemens-sentron"};function c(n,e,g,w,C,D){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(u,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens Sentron ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const E=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-c3aaf957.js b/web/settings/assets/device-c3aaf957.js
new file mode 100644
index 0000000000..254cab92c7
--- /dev/null
+++ b/web/settings/assets/device-c3aaf957.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as d,l as m,D as i,N as l,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(o,e,b,v,w,x){const r=n("openwb-base-heading"),a=n("openwb-base-text-input"),s=n("openwb-base-number-input");return d(),m("div",g,[i(r,null,{default:l(()=>e[2]||(e[2]=[_(" Einstellungen für Huawei SmartLogger ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-c3e49e5d.js b/web/settings/assets/device-c3e49e5d.js
new file mode 100644
index 0000000000..e5feba7b49
--- /dev/null
+++ b/web/settings/assets/device-c3e49e5d.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as t,k as l,l as p,D as i,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceCarloGavazzi",mixins:[d]},f={class:"device-carlogavazzi"};function _(o,e,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",f,[i(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Carlo Gavazzi ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-c491b9c2.js b/web/settings/assets/device-c491b9c2.js
deleted file mode 100644
index 8bc0d0b6b7..0000000000
--- a/web/settings/assets/device-c491b9c2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as r,k as u,l as d,D as n,N as l,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerfox",mixins:[a]},f={class:"device-powerfox"};function v(e,o,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",f,[n(s,null,{default:l(()=>[m(" Einstellungen für Powerfox ")]),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":e.device.configuration.user,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":e.device.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const P=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-c605ea36.js b/web/settings/assets/device-c605ea36.js
deleted file mode 100644
index 5f6ac3e8fb..0000000000
--- a/web/settings/assets/device-c605ea36.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as n,k as d,l as m,D as i,N as l,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(e,o,b,v,w,x){const a=n("openwb-base-heading"),r=n("openwb-base-text-input"),s=n("openwb-base-number-input");return d(),m("div",g,[i(a,null,{default:l(()=>[c(" Einstellungen für Huawei SmartLogger ")]),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-c9df224a.js b/web/settings/assets/device-c9df224a.js
new file mode 100644
index 0000000000..6bb61adc8a
--- /dev/null
+++ b/web/settings/assets/device-c9df224a.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as i,k as l,l as p,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalSEM",mixins:[d]},v={class:"device-kostal-sem"};function _(o,e,c,g,w,k){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",v,[t(s,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-ca2bde32.js b/web/settings/assets/device-ca2bde32.js
deleted file mode 100644
index a04107a50f..0000000000
--- a/web/settings/assets/device-ca2bde32.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[p]},f={class:"device-fox_ess"};function b(e,o,v,g,x,w){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>[_("Einstellungen für FoxEss")]),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-cbb1f36f.js b/web/settings/assets/device-cbb1f36f.js
new file mode 100644
index 0000000000..56613b828c
--- /dev/null
+++ b/web/settings/assets/device-cbb1f36f.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as r,k as u,l as d,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfox",mixins:[a]},c={class:"device-powerfox"};function v(o,e,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",c,[n(s,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Powerfox ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const P=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-cc59c62c.js b/web/settings/assets/device-cc59c62c.js
deleted file mode 100644
index f6ce8c25f1..0000000000
--- a/web/settings/assets/device-cc59c62c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as n,k as _,l as c,D as t,N as r,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(e,o,w,y,g,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return _(),c("div",f,[t(a,null,{default:r(()=>[s(" Einstellungen für SMA Sunny Boy/Tripower ")]),_:1}),t(p,{subtype:"info"},{default:r(()=>[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')]),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=i=>e.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=i=>e.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const $=m(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-d659f206.js b/web/settings/assets/device-d659f206.js
deleted file mode 100644
index 4f28bafff7..0000000000
--- a/web/settings/assets/device-d659f206.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as i,k as c,l as _,D as t,N as s,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalPlenticore",mixins:[u]},f={class:"device-kostal-plenticore"};function v(e,o,g,w,h,k){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),a=i("openwb-base-number-input");return c(),_("div",f,[t(l,null,{default:s(()=>[r(" Einstellungen für Kostal Plenticore ")]),_:1}),t(p,{subtype:"info"},{default:s(()=>[r(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")]),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const W=m(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{W as default};
diff --git a/web/settings/assets/device-d6d46ef8.js b/web/settings/assets/device-d6d46ef8.js
deleted file mode 100644
index 6fe5a2187c..0000000000
--- a/web/settings/assets/device-d6d46ef8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as l}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as m,l as c,D as i,N as s,y as r,x as b}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuawei",mixins:[l]},f={class:"device-huawei"},v=b("br",null,null,-1);function g(e,n,w,h,D,V){const u=t("openwb-base-heading"),d=t("openwb-base-text-input"),a=t("openwb-base-number-input");return m(),c("div",f,[i(u,null,{default:s(()=>[r(" Einstellungen für Huawei ")]),_:1}),i(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.modbus_id"))},{help:s(()=>[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),v,r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")]),_:1},8,["model-value"])])}const z=p(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{z as default};
diff --git a/web/settings/assets/device-d779a283.js b/web/settings/assets/device-d779a283.js
new file mode 100644
index 0000000000..da2eccad85
--- /dev/null
+++ b/web/settings/assets/device-d779a283.js
@@ -0,0 +1 @@
+import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as i,k as b,l as f,D as t,N as s,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DevicePowerdog",mixins:[l]},v={class:"device-powerdog"};function g(o,e,c,w,C,x){const a=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),r=i("openwb-base-number-input");return b(),f("div",v,[t(a,null,{default:s(()=>e[3]||(e[3]=[d(" Einstellungen für Powerdog ")])),_:1}),t(p,{subtype:"info"},{default:s(()=>e[4]||(e[4]=[d(" ModbusTCP muss aktiviert sein. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-d9f34fe2.js b/web/settings/assets/device-d9f34fe2.js
deleted file mode 100644
index 2180e8dc03..0000000000
--- a/web/settings/assets/device-d9f34fe2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as s}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(e,o,_,g,w,C){const d=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(d,null,{default:m(()=>[c(" Einstellungen für E3DC ")]),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-db16ee4d.js b/web/settings/assets/device-db16ee4d.js
deleted file mode 100644
index 568d676a4d..0000000000
--- a/web/settings/assets/device-db16ee4d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as o,k as d,l as c,D as n,N as m,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceBatterX",mixins:[r]},_={class:"device-batterx"};function f(e,t,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>[l(" Einstellungen für BatterX ")]),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":t[0]||(t[0]=a=>e.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-dc9695a4.js b/web/settings/assets/device-dc9695a4.js
new file mode 100644
index 0000000000..2de045f318
--- /dev/null
+++ b/web/settings/assets/device-dc9695a4.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as n,k as m,l as b,D as t,N as s,y as c,x as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"};function g(o,e,w,y,x,D){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-number-input");return m(),b("div",v,[t(r,null,{default:s(()=>e[2]||(e[2]=[c("Einstellungen für Deye")])),_:1}),t(a,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[_("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1)])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-dcaa50ab.js b/web/settings/assets/device-dcaa50ab.js
new file mode 100644
index 0000000000..00488a9d31
--- /dev/null
+++ b/web/settings/assets/device-dcaa50ab.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartfox",mixins:[a]},f={class:"device-smartfox"};function _(o,e,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",f,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für Smartfox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-e1695c1b.js b/web/settings/assets/device-e1695c1b.js
new file mode 100644
index 0000000000..b1774fa6fe
--- /dev/null
+++ b/web/settings/assets/device-e1695c1b.js
@@ -0,0 +1 @@
+import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as l,l as u,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlex",mixins:[a]},c={class:"device-openwb-flex"};function f(o,e,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),r=t("openwb-base-number-input");return l(),u("div",c,[i(p,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für openWB-Flex ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-e372d627.js b/web/settings/assets/device-e372d627.js
deleted file mode 100644
index 19ddc3a4b8..0000000000
--- a/web/settings/assets/device-e372d627.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as n,k as m,l as c,D as a,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarwatt",mixins:[p]},f={class:"device-solarwatt"};function v(e,t,w,b,g,h){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),c("div",f,[a(s,null,{default:i(()=>[r(" Einstellungen für Solarwatt/My Reserve ")]),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode",notSelected:"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":e.device.configuration.energy_manager,required:"","onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")]),_:1},8,["model-value"])])}const E=u(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-e4d1ba40.js b/web/settings/assets/device-e4d1ba40.js
deleted file mode 100644
index e320cb0ad6..0000000000
--- a/web/settings/assets/device-e4d1ba40.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as d,l as m,D as i,N as c,y as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(e,o,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>[v("Einstellungen für Solis")]),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version",notSelected:"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const N=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-e6c608f5.js b/web/settings/assets/device-e6c608f5.js
new file mode 100644
index 0000000000..d3779423ea
--- /dev/null
+++ b/web/settings/assets/device-e6c608f5.js
@@ -0,0 +1 @@
+import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as o,k as b,l as c,D as t,N as s,y as r,x as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolarEdge",mixins:[u]},_={class:"device-solaredge"};function v(n,e,w,h,B,k){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),p=o("openwb-base-text-input"),l=o("openwb-base-number-input");return b(),c("div",_,[t(a,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für SolarEdge ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),f("br",null,null,-1),r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren Smarthome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},{help:s(()=>e[4]||(e[4]=[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")])),_:1},8,["model-value"])])}const D=m(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{D as default};
diff --git a/web/settings/assets/device-f057baf4.js b/web/settings/assets/device-f057baf4.js
new file mode 100644
index 0000000000..cac5ac21ae
--- /dev/null
+++ b/web/settings/assets/device-f057baf4.js
@@ -0,0 +1 @@
+import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as o,k as u,l as m,D as i,N as r,y as t,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceHttp",mixins:[d]},v={class:"device-http"};function _(n,e,b,g,x,w){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return u(),m("div",v,[i(s,null,{default:r(()=>e[1]||(e[1]=[t(" Einstellungen für Http ")])),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.url"))},{help:r(()=>e[2]||(e[2]=[t(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),c("br",null,null,-1),t(" Beispiel: http://mein.server:8080 ")])),_:1},8,["model-value"])])}const y=l(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-f065b014.js b/web/settings/assets/device-f065b014.js
deleted file mode 100644
index 0ba3c9614c..0000000000
--- a/web/settings/assets/device-f065b014.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as f}from"./HardwareInstallation-a0083e3a.js";import{_ as b,u as o,k as v,l as h,D as s,N as d,y as t,x as e,z as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSonnenbatterie",mixins:[f],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},m={class:"device-sonnenbatterie"},A={style:{display:"block"}},k=e("br",null,null,-1),w=["href"],B=e("br",null,null,-1),J=["href"],R=e("br",null,null,-1),I=["href"],P=e("br",null,null,-1),x=["href"];function S(i,r,z,C,D,n){const u=o("openwb-base-heading"),p=o("openwb-base-alert"),c=o("openwb-base-text-input"),_=o("openwb-base-select-input");return v(),h("div",m,[s(u,null,{default:d(()=>[t(" Einstellungen für SonnenBatterie ")]),_:1}),s(p,{subtype:"info"},{default:d(()=>[t(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')]),_:1}),s(c,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":r[0]||(r[0]=l=>i.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"]),s(_,{title:"Datenverbindung",required:"",notSelected:"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":i.device.configuration.variant,"onUpdate:modelValue":r[1]||(r[1]=l=>i.updateConfiguration(l,"configuration.variant"))},{help:d(()=>[e("span",A,[t(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:"),k,t(" Rest-API 1: "),e("a",{href:n.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},a(n.linkRestApi1),9,w),B,t(" Rest-API 2: "),e("a",{href:n.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},a(n.linkRestApi2),9,J),R,t(" JSON-API v1: "),e("a",{href:n.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},a(n.linkJsonApi1),9,I),P,t(" JSON-API v2: "),e("a",{href:n.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},a(n.linkJsonApi2),9,x)])]),_:1},8,["model-value"])])}const F=b(g,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{F as default};
diff --git a/web/settings/assets/device-f2ca9f52.js b/web/settings/assets/device-f2ca9f52.js
new file mode 100644
index 0000000000..de86919d15
--- /dev/null
+++ b/web/settings/assets/device-f2ca9f52.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(n,e,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für Sunny Island ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-f2e0c7de.js b/web/settings/assets/device-f2e0c7de.js
new file mode 100644
index 0000000000..15194a763e
--- /dev/null
+++ b/web/settings/assets/device-f2e0c7de.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as t,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(o,e,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SMA Webbox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=r(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-f5beaf39.js b/web/settings/assets/device-f5beaf39.js
new file mode 100644
index 0000000000..d70f99c5c8
--- /dev/null
+++ b/web/settings/assets/device-f5beaf39.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as d,l as u,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[m("Einstellungen für OpenDTU")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const V=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-f9bc5796.js b/web/settings/assets/device-f9bc5796.js
deleted file mode 100644
index fb31a8a677..0000000000
--- a/web/settings/assets/device-f9bc5796.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as a}from"./HardwareInstallation-a0083e3a.js";import{_ as r,u as n,k as d,l as c,D as t,N as i,y as e,x as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceMqtt",mixins:[a]},p={class:"device-mqtt"},u=l("br",null,null,-1);function _(g,h,b,f,v,k){const s=n("openwb-base-heading"),o=n("openwb-base-alert");return d(),c("div",p,[t(s,null,{default:i(()=>[e("Einstellungen für MQTT")]),_:1}),t(o,{subtype:"info"},{default:i(()=>[e(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),u,e(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")]),_:1})])}const z=r(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{z as default};
diff --git a/web/settings/assets/device-fa6313a5.js b/web/settings/assets/device-fa6313a5.js
new file mode 100644
index 0000000000..f890834577
--- /dev/null
+++ b/web/settings/assets/device-fa6313a5.js
@@ -0,0 +1 @@
+import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as i,k as u,l as p,D as t,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},b={class:"device-qcells"};function v(o,e,_,g,w,C){const l=i("openwb-base-heading"),a=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",b,[t(l,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für QCells ESS ")])),_:1}),t(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-fb6dbf7a.js b/web/settings/assets/device-fb6dbf7a.js
new file mode 100644
index 0000000000..dddd386d0d
--- /dev/null
+++ b/web/settings/assets/device-fb6dbf7a.js
@@ -0,0 +1 @@
+import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as d,l as c,D as n,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[p]},_={class:"device-rct"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für RCT ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const h=a(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-fbd8e09f.js b/web/settings/assets/device-fbd8e09f.js
deleted file mode 100644
index 9146743278..0000000000
--- a/web/settings/assets/device-fbd8e09f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as u}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as i,k as p,l as d,D as t,N as m,y as v}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarView",mixins:[u]},f={class:"device-solar-view"};function _(e,o,b,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),d("div",f,[t(r,null,{default:m(()=>[v(" Einstellungen für SolarView ")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Timeout",required:"","model-value":e.device.configuration.timeout,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const y=l(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-fcfe882c.js b/web/settings/assets/device-fcfe882c.js
deleted file mode 100644
index 3ce085337a..0000000000
--- a/web/settings/assets/device-fcfe882c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSofar",mixins:[d]},_={class:"device-sofar"};function b(e,o,v,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:m(()=>[f("Einstellungen für Sofar")]),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/displayTheme-78ab078b.js b/web/settings/assets/displayTheme-78ab078b.js
new file mode 100644
index 0000000000..923858218f
--- /dev/null
+++ b/web/settings/assets/displayTheme-78ab078b.js
@@ -0,0 +1 @@
+import{D as g}from"./OptionalComponents-be1b1295.js";import{_ as m,u as i,k as d,l as f,D as a,N as l,y as u,A as r,B as b}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeCards",mixins:[g]},c={class:"display-theme-cards"};function v(n,e,V,h,y,A){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),f("div",c,[a(s,null,{default:l(()=>e[13]||(e[13]=[u("Bediensperre")])),_:1}),a(o,{title:"Bedienung sperren","model-value":n.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.lock_changes"))},{help:l(()=>e[14]||(e[14]=[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),n.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>e[15]||(e[15]=[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>e[16]||(e[16]=[u("Ansichten")])),_:1}),a(o,{title:"Übersicht anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_view"))},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":n.displayTheme.configuration.enable_energy_flow_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.enable_energy_flow_view"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_charge_points_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.enable_charge_points_view"))},null,8,["model-value"]),n.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":n.displayTheme.configuration.simple_charge_point_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateConfiguration(t,"configuration.simple_charge_point_view"))},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":n.displayTheme.configuration.enable_status_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateConfiguration(t,"configuration.enable_status_view"))},null,8,["model-value"]),a(s,null,{help:l(()=>e[17]||(e[17]=[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')])),default:l(()=>[e[18]||(e[18]=u(" Datenauswahl "))]),_:1}),a(o,{title:"EVU anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_grid,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_grid"))},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_home_consumption,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption"))},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_inverter_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[9]||(e[9]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum"))},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_battery_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[10]||(e[10]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_charge_point_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum"))},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_vehicles,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[12]||(e[12]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles"))},null,8,["model-value"])])}const x=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{x as default};
diff --git a/web/settings/assets/displayTheme-97f12f16.js b/web/settings/assets/displayTheme-97f12f16.js
deleted file mode 100644
index 5e179f4e3c..0000000000
--- a/web/settings/assets/displayTheme-97f12f16.js
+++ /dev/null
@@ -1 +0,0 @@
-import{D as g}from"./OptionalComponents-963feb73.js";import{_ as m,u as i,k as d,l as c,D as a,N as l,y as u,A as r,B as b}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DisplayThemeCards",mixins:[g]},_={class:"display-theme-cards"};function h(e,n,v,V,y,A){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),c("div",_,[a(s,null,{default:l(()=>[u("Bediensperre")]),_:1}),a(o,{title:"Bedienung sperren","model-value":e.displayTheme.configuration.lock_changes,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.lock_changes")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:l(()=>[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')]),_:1},8,["model-value"]),e.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":e.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")]),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>[u("Ansichten")]),_:1}),a(o,{title:"Übersicht anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_view,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":e.displayTheme.configuration.enable_energy_flow_view,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.enable_energy_flow_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":e.displayTheme.configuration.enable_charge_points_view,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.enable_charge_points_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),e.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":e.displayTheme.configuration.simple_charge_point_view,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.simple_charge_point_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":e.displayTheme.configuration.enable_status_view,"onUpdate:modelValue":n[6]||(n[6]=t=>e.updateConfiguration(t,"configuration.enable_status_view")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(s,null,{help:l(()=>[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')]),default:l(()=>[u(" Datenauswahl ")]),_:1}),a(o,{title:"EVU anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_grid,"onUpdate:modelValue":n[7]||(n[7]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_grid")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_home_consumption,"onUpdate:modelValue":n[8]||(n[8]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_inverter_sum,"onUpdate:modelValue":n[9]||(n[9]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_battery_sum,"onUpdate:modelValue":n[10]||(n[10]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_charge_point_sum,"onUpdate:modelValue":n[11]||(n[11]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":e.displayTheme.configuration.enable_dashboard_card_vehicles,"onUpdate:modelValue":n[12]||(n[12]=t=>e.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles")),buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},null,8,["model-value"])])}const x=m(f,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{x as default};
diff --git a/web/settings/assets/electricity_tariff-18981e99.js b/web/settings/assets/electricity_tariff-18981e99.js
new file mode 100644
index 0000000000..a74cd22c14
--- /dev/null
+++ b/web/settings/assets/electricity_tariff-18981e99.js
@@ -0,0 +1 @@
+import{E as l}from"./GeneralChargeConfig-a5add01a.js";import{_ as s,u as r,k as c,l as p,D as o,N as u,y as f}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(t,e,g,b,y,v){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")])),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const E=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{E as default};
diff --git a/web/settings/assets/electricity_tariff-86994943.js b/web/settings/assets/electricity_tariff-86994943.js
deleted file mode 100644
index c24d1683eb..0000000000
--- a/web/settings/assets/electricity_tariff-86994943.js
+++ /dev/null
@@ -1 +0,0 @@
-import{E as m}from"./GeneralChargeConfig-4b985756.js";import{_ as g,u as s,k as h,l as _,D as n,N as y,y as l,x as T}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!<pre>"+e+"</pre>","danger")}}}},v={class:"electricity-tariff-tibber"},w=T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1);function C(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),w,l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")]),_:1}),n(a,{title:"Token",required:"",ref:"tokenInput","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const L=g(k,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{L as default};
diff --git a/web/settings/assets/electricity_tariff-8c65c060.js b/web/settings/assets/electricity_tariff-8c65c060.js
deleted file mode 100644
index c3b261252c..0000000000
--- a/web/settings/assets/electricity_tariff-8c65c060.js
+++ /dev/null
@@ -1 +0,0 @@
-import{E as c}from"./GeneralChargeConfig-4b985756.js";import{_ as p,u as r,k as d,l as f,D as i,N as a,y as s,x as m}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energycharts"},_=m("br",null,null,-1);function b(e,t,y,w,v,B){const o=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(o,{subtype:"info"},{default:a(()=>[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),_,s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")]),_:1}),i(l,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":e.electricityTariff.configuration.country,"onUpdate:modelValue":t[0]||(t[0]=n=>e.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":e.electricityTariff.configuration.surcharge,"onUpdate:modelValue":t[1]||(t[1]=n=>e.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:a(()=>[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")]),_:1},8,["model-value"])])}const A=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{A as default};
diff --git a/web/settings/assets/electricity_tariff-921487ff.js b/web/settings/assets/electricity_tariff-921487ff.js
deleted file mode 100644
index bd22efe479..0000000000
--- a/web/settings/assets/electricity_tariff-921487ff.js
+++ /dev/null
@@ -1 +0,0 @@
-import{E as l}from"./GeneralChargeConfig-4b985756.js";import{_ as s,u as r,k as c,l as p,D as o,N as u,y as f}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(e,t,g,b,y,v){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")]),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":e.electricityTariff.configuration.client_id,"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":e.electricityTariff.configuration.client_secret,"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const E=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{E as default};
diff --git a/web/settings/assets/electricity_tariff-9f4ce3a7.js b/web/settings/assets/electricity_tariff-9f4ce3a7.js
new file mode 100644
index 0000000000..364ec1039b
--- /dev/null
+++ b/web/settings/assets/electricity_tariff-9f4ce3a7.js
@@ -0,0 +1 @@
+import{E as o}from"./GeneralChargeConfig-a5add01a.js";import{_ as a,u as n,k as s,l as c,D as l,N as p,y as f}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(t,e,_,w,y,b){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.country"))},{help:p(()=>e[1]||(e[1]=[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")])),_:1},8,["model-value"])])}const $=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{$ as default};
diff --git a/web/settings/assets/electricity_tariff-ac583f0a.js b/web/settings/assets/electricity_tariff-ac583f0a.js
new file mode 100644
index 0000000000..1b014b75e5
--- /dev/null
+++ b/web/settings/assets/electricity_tariff-ac583f0a.js
@@ -0,0 +1 @@
+import{E as s}from"./GeneralChargeConfig-a5add01a.js";import{_ as l,u as r,k as c,l as p,D as n,N as u,y as f}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(t,e,b,y,g,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")])),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{I as default};
diff --git a/web/settings/assets/electricity_tariff-b400ca32.js b/web/settings/assets/electricity_tariff-b400ca32.js
new file mode 100644
index 0000000000..5198826382
--- /dev/null
+++ b/web/settings/assets/electricity_tariff-b400ca32.js
@@ -0,0 +1 @@
+import{E as c}from"./GeneralChargeConfig-a5add01a.js";import{_ as p,u as r,k as d,l as f,D as i,N as o,y as s,x as m}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energycharts"};function b(t,e,y,_,w,v){const a=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(a,{subtype:"info"},{default:o(()=>e[2]||(e[2]=[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),m("br",null,null,-1),s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")])),_:1}),i(l,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":t.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:o(()=>e[3]||(e[3]=[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")])),_:1},8,["model-value"])])}const V=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{V as default};
diff --git a/web/settings/assets/electricity_tariff-bc229946.js b/web/settings/assets/electricity_tariff-bc229946.js
deleted file mode 100644
index 03e4c603ef..0000000000
--- a/web/settings/assets/electricity_tariff-bc229946.js
+++ /dev/null
@@ -1 +0,0 @@
-import{E as s}from"./GeneralChargeConfig-4b985756.js";import{_ as l,u as r,k as c,l as p,D as n,N as u,y as f}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(e,t,b,y,g,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")]),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":e.electricityTariff.configuration.client_id,"onUpdate:modelValue":t[0]||(t[0]=i=>e.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":e.electricityTariff.configuration.client_secret,"onUpdate:modelValue":t[1]||(t[1]=i=>e.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{I as default};
diff --git a/web/settings/assets/electricity_tariff-c1ffcfa7.js b/web/settings/assets/electricity_tariff-c1ffcfa7.js
new file mode 100644
index 0000000000..61c27a9a61
--- /dev/null
+++ b/web/settings/assets/electricity_tariff-c1ffcfa7.js
@@ -0,0 +1 @@
+import{E as m}from"./GeneralChargeConfig-a5add01a.js";import{_ as g,u as s,k as h,l as _,D as n,N as y,y as l,x as T}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!<pre>"+e+"</pre>","danger")}}}},v={class:"electricity-tariff-tibber"};function w(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>e[3]||(e[3]=[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1),l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")])),_:1}),n(a,{ref:"tokenInput",title:"Token",required:"","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const E=g(k,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{E as default};
diff --git a/web/settings/assets/electricity_tariff-c641235d.js b/web/settings/assets/electricity_tariff-c641235d.js
deleted file mode 100644
index e562764a79..0000000000
--- a/web/settings/assets/electricity_tariff-c641235d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{E as o}from"./GeneralChargeConfig-4b985756.js";import{_ as a,u as n,k as s,l as c,D as l,N as p,y as f}from"./vendor-f2b8aa6f.js";import"./index-b0e5e618.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(e,t,_,w,y,b){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land",notSelected:"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":e.electricityTariff.configuration.country,"onUpdate:modelValue":t[0]||(t[0]=r=>e.updateConfiguration(r,"configuration.country"))},{help:p(()=>[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")]),_:1},8,["model-value"])])}const $=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{$ as default};
diff --git a/web/settings/assets/external_inverter-319dd94a.js b/web/settings/assets/external_inverter-319dd94a.js
new file mode 100644
index 0000000000..52e338ae64
--- /dev/null
+++ b/web/settings/assets/external_inverter-319dd94a.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as i,k as g,l as f,D as o,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolaredgeExternalInverter",mixins:[m]},c={class:"device-solaredge-external-inverter"};function v(n,e,_,w,x,C){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),a=i("openwb-base-number-input"),d=i("openwb-base-select-input");return g(),f("div",c,[o(l,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für SolarEdge externen Wechselrichter ")])),_:1}),o(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[s(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')])),_:1}),o(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(a,{title:"SolarEdge-Meter-ID","model-value":n.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren","not-selected":"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":n.component.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.factor"))},{help:r(()=>e[5]||(e[5]=[s(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")])),_:1},8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default};
diff --git a/web/settings/assets/external_inverter-3f39a305.js b/web/settings/assets/external_inverter-3f39a305.js
deleted file mode 100644
index 8b9da55e5b..0000000000
--- a/web/settings/assets/external_inverter-3f39a305.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as i,k as c,l as g,D as o,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolaredgeExternalInverter",mixins:[m]},_={class:"device-solaredge-external-inverter"};function b(e,n,v,w,h,x){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),s=i("openwb-base-number-input"),d=i("openwb-base-select-input");return c(),g("div",_,[o(l,null,{default:r(()=>[a(" Einstellungen für SolarEdge externen Wechselrichter ")]),_:1}),o(u,{subtype:"info"},{default:r(()=>[a(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')]),_:1}),o(s,{title:"SolarEdge-Geräte-ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(s,{title:"SolarEdge-Meter-ID","model-value":e.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":n[1]||(n[1]=t=>e.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren",notSelected:"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":e.component.configuration.factor,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.factor"))},{help:r(()=>[a(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")]),_:1},8,["model-value"])])}const L=p(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default};
diff --git a/web/settings/assets/index-b0e5e618.js b/web/settings/assets/index-b0e5e618.js
deleted file mode 100644
index 704db3dacc..0000000000
--- a/web/settings/assets/index-b0e5e618.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as w,k as r,l as d,m as h,q as k,u as f,x as o,y as p,z as b,A as g,B as u,D as m,E as C,F as I,G as S,I as Y,J as x,K as D,L as Z,M as X,N as _,O as ee,P as te,T as U,Q as se,R as N,S as E,U as L,V as ne,W as oe,X as ae,Y as ie,Z as le,$ as re,a0 as de}from"./vendor-f2b8aa6f.js";import{l as O,f as T,a as V,b as ce,c as ue,d as pe,e as me,F as B,g as j,h as _e,i as fe,j as he,k as ge,m as be,n as ve,o as we,p as ye,q as ke,r as Se,s as Ce,t as Oe,u as Be,v as $e,w as Ie,x as xe,y as Te,z as Ve,A as Me,B as Ae,C as Pe,D as He,E as De,G as qe,H as Ee,I as Le,J as je}from"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import{p as We,a as Re}from"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-jquery-d3cb8fad.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))c(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&c(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Ne={name:"OpenwbAlert",props:{subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}}};function Fe(e,t,n,c,i,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(e.$slots,"default")],2)}const Ue=w(Ne,[["render",Fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));O.add(T,V,ce,ue,pe,me);const Ge={name:"OpenwbArrayInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let e=this.value;e.push(this.newTag),e.sort(),this.value=e,this.newTag=""}this.$refs.tagInput.focus()},removeTag(e){let t=this.value;t.splice(e,1),this.value=t}},components:{FontAwesomeIcon:B}},Je={class:"form-row mb-1"},Ke={class:"col-md-8"},Qe={class:"form-row"},Ye={class:"input-group"},Ze={class:"input-group-prepend"},Xe={class:"input-group-text"},et={class:"input-group-append"},tt={class:"form-row tagList mt-1"},st={key:0,class:"noTag"},nt={key:0,class:"form-row alert alert-info my-1 small"};function ot(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Je,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ke,[o("div",Qe,[o("div",Ye,[o("div",Ze,[o("div",Xe,[h(e.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),C(o("input",S({ref:"tagInput",type:"text",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>i.newTag=l)},e.$attrs,{onKeyup:t[2]||(t[2]=Y((...l)=>s.addTag&&s.addTag(...l),["enter"]))}),null,16),[[I,i.newTag]]),o("div",et,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:t[3]||(t[3]=(...l)=>s.addTag&&s.addTag(...l))},[h(e.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",tt,[s.value.length==0?(r(),d("span",st,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):u("",!0),(r(!0),d(x,null,D(s.value,(l,v)=>(r(),d("span",{class:"tag",key:v},[h(e.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(l)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),i.showHelp?(r(),d("span",nt,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const at=w(Ge,[["render",ot],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),it=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));const lt={name:"OpenwbAvatar"},rt={class:"avatar"};function dt(e,t,n,c,i,s){return r(),d("div",rt,[h(e.$slots,"default",{},()=>[p("?")],!0)])}const ct=w(lt,[["render",dt],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),ut=Object.freeze(Object.defineProperty({__proto__:null,default:ct},Symbol.toStringTag,{value:"Module"}));O.add(T,V,j);const pt={name:"OpenwbButtonGroupInput",inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean]},buttons:Object},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:B}},mt={class:"form-row mb-1"},_t={class:"col-md-8"},ft={class:"form-row"},ht={class:"btn-group btn-block btn-group-toggle"},gt=["value"],bt={key:0,class:"form-row alert alert-info my-1 small"};function vt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[h(e.$slots,"default",{},()=>[p(b(n.title),1)]),e.$slots.help?(r(),g(a,{key:0,"fixed-width":"",icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_t,[o("div",ft,[o("div",ht,[(r(!0),d(x,null,D(n.buttons,l=>(r(),d("label",{key:l.value,class:k(["btn",[s.value==l.buttonValue?"active":"",l.class?l.class:"btn-outline-info"]])},[C(o("input",S({type:"radio","onUpdate:modelValue":t[1]||(t[1]=v=>s.value=v),value:l.buttonValue,ref_for:!0},e.$attrs),null,16,gt),[[Z,s.value]]),h(e.$slots,"label-"+l.buttonValue,{},()=>[p(b(l.text),1)]),m(a,{icon:["fas","check"],style:X([s.value==l.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),i.showHelp?(r(),d("span",bt,[h(e.$slots,"help")])):u("",!0)])])}const wt=w(pt,[["render",vt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),yt=Object.freeze(Object.defineProperty({__proto__:null,default:wt},Symbol.toStringTag,{value:"Module"}));O.add(T,V);const kt={name:"OpenwbButtonInput",inheritAttrs:!1,props:{title:String,buttonText:String,disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"}},data(){return{showHelp:!1}},emits:["buttonClicked"],methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(e){this.$emit("buttonClicked",e)}},components:{FontAwesomeIcon:B}},St={class:"form-row mb-1"},Ct={class:"col-md-8"},Ot={class:"form-row"},Bt={key:0,class:"form-row alert alert-info my-1 small"};function $t(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("openwb-base-click-button");return r(),d("div",St,[o("label",{onClick:t[0]||(t[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Ct,[o("div",Ot,[m(l,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},e.$attrs,{onButtonClicked:s.handleClick}),{default:_(()=>[h(e.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),i.showHelp?(r(),d("span",Bt,[h(e.$slots,"help")])):u("",!0)])])}const It=w(kt,[["render",$t],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),xt=Object.freeze(Object.defineProperty({__proto__:null,default:It},Symbol.toStringTag,{value:"Module"}));O.add(_e,fe);const Tt={name:"OpenwbCard",inheritAttrs:!1,components:{FontAwesomeIcon:B},props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(e)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Vt={class:"form-group mb-0"},Mt={class:"form-row vaRow mb-0 py-2"},At={class:"col"},Pt={class:"card-actions ml-4"},Ht={key:0,class:"card-actions mr-4"},Dt={key:1,class:"card-footer"};function qt(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:t[0]||(t[0]=(...l)=>s.toggleBody&&s.toggleBody(...l))},[o("div",Vt,[o("div",Mt,[o("div",At,[h(e.$slots,"header",{collapsed:i.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Pt,[e.$slots.actions?(r(),d("span",Ht,[h(e.$slots,"actions",{collapsed:i.isCollapsed})])):u("",!0),n.collapsible?(r(),g(a,{key:1,"fixed-width":"",icon:i.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):u("",!0)])],2),i.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},e.$attrs),[h(e.$slots,"default")],16)):u("",!0),e.$slots.footer&&i.isCollapsed===!1?(r(),d("div",Dt,[h(e.$slots,"footer")])):u("",!0)],2)}const Et=w(Tt,[["render",qt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:Et},Symbol.toStringTag,{value:"Module"}));O.add(T,V);const jt={name:"OpenwbCheckboxInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:B}},Wt={class:"form-row mb-1"},Rt={class:"col-md-8"},Nt={class:"form-row"},Ft={key:0,class:"form-row alert alert-info my-1 small"};function Ut(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Wt,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Rt,[o("div",Nt,[C(o("input",S({class:"form-control",type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[ee,s.value]])]),i.showHelp?(r(),d("span",Ft,[h(e.$slots,"help")])):u("",!0)])])}const zt=w(jt,[["render",Ut],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:zt},Symbol.toStringTag,{value:"Module"}));const Jt={name:"OpenwbClickButton",props:{title:String},emits:["buttonClicked"],methods:{click(e){this.$emit("buttonClicked",e)}}};function Kt(e,t,n,c,i,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:t[0]||(t[0]=te((...a)=>s.click&&s.click(...a),["prevent"]))},[h(e.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Qt=w(Jt,[["render",Kt],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));O.add(he,ge);const Zt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:B},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const e=window.getSelection(),t=document.createRange();t.selectNodeContents(this.$refs["slot-wrapper"]),e.removeAllRanges(),e.addRange(t);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const e=document.body.createTextRange();e.moveToElementText(this.$refs["slot-wrapper"]),e.select()}else console.warn("could not select text, unsupported browser")}}}},Xt=["title"];function es(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:t[0]||(t[0]=(...l)=>s.click&&s.click(...l))},[h(e.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:i.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Xt)}const ts=w(Zt,[["render",es],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),ss=Object.freeze(Object.defineProperty({__proto__:null,default:ts},Symbol.toStringTag,{value:"Module"}));O.add(T,V,j);const ns={name:"OpenwbHeading",inheritAttrs:!1,components:{FontAwesomeIcon:B},data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},os={key:0,class:"actions"},as={class:""},is={key:0,class:"form-row alert alert-info small"};function ls(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d(x,null,[o("div",S({class:"card-text card-text-heading"},e.$attrs),[o("div",{class:"heading-text",onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l))},[h(e.$slots,"default",{},void 0,!0),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),e.$slots.actions?(r(),d("span",os,[h(e.$slots,"actions",{},void 0,!0)])):u("",!0)],16),o("div",as,[i.showHelp?(r(),d("span",is,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])],64)}const rs=w(ns,[["render",ls],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),ds=Object.freeze(Object.defineProperty({__proto__:null,default:rs},Symbol.toStringTag,{value:"Module"})),cs={name:"OpenwbModalDialog",emits:["modal-result"],props:{title:String,subtype:{type:String,validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(e){return["around","between","center","end","start"].indexOf(e)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},computed:{myButtons(){var e=[];return this.buttons!==void 0&&(e=this.buttons),this.preventClose||e.push({text:"Schließen",event:"close"}),e}},methods:{handleClick(e){e.stopPropagation();let t=e.target.getAttribute("data-event");t===null&&(t="close"),(t!="close"||!this.preventClose)&&this.$emit("modal-result",t)}}},us=o("div",{class:"modal-backdrop fade show"},null,-1),ps={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},ms={class:"modal-content"},_s={class:"modal-title"},fs={class:"modal-body"},hs=["data-event"];function gs(e,t,n,c,i,s){return n.show?(r(),g(U,{key:0,to:"body"},[us,o("div",{class:"modal fade d-block show",role:"dialog",onClick:t[2]||(t[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ps,[o("div",ms,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",_s,b(n.title),1),n.preventClose?u("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:t[0]||(t[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",fs,[h(e.$slots,"default",{},()=>[p("# Body #")])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(x,null,D(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:t[1]||(t[1]=(...l)=>s.handleClick&&s.handleClick(...l))},b(a.text),11,hs))),128))],2)):u("",!0)])])])])):u("",!0)}const bs=w(cs,[["render",gs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),vs=Object.freeze(Object.defineProperty({__proto__:null,default:bs},Symbol.toStringTag,{value:"Module"}));O.add(T,V,be);const ws={name:"OpenwbNumberInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,precision:{type:Number,default:void 0},emptyValue:{required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(e){(isNaN(e)||typeof e!="number")&&(e=this.emptyValue),this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:B}},ys={class:"form-row mb-1"},ks={class:"col-md-8"},Ss={class:"form-row"},Cs={class:"input-group"},Os={class:"input-group-prepend"},Bs={class:"input-group-text"},$s={key:0,class:"input-group-append"},Is={class:"input-group-text"},xs={key:0,class:"form-row alert alert-info my-1 small"};function Ts(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",ys,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",ks,[o("div",Ss,[o("div",Cs,[o("div",Os,[o("div",Bs,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),C(o("input",S({type:"number",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16),[[I,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",$s,[o("div",Is,b(n.unit),1)])):u("",!0)])]),i.showHelp?(r(),d("span",xs,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Vs=w(ws,[["render",Ts],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:Vs},Symbol.toStringTag,{value:"Module"}));O.add(T,V,ve,we);const As={name:"OpenwbRangeInput",inheritAttrs:!1,props:{title:String,modelValue:{type:Number},unit:String,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var e;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?e=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):e=this.sliderValue,typeof e=="number"&&(e=e.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(e+=" "+this.unit)),e},precision(){if(!isFinite(this.step))return 0;for(var e=1,t=0;Math.round(this.step*e)/e!==this.step;)e*=10,t++;return t},sliderValue:{get(){if(this.labels){var e=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){e=t;break}return e===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):e}return this.modelValue},set(e){if(this.labels){var t=this.labels[e].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var e=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var e=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(e*Math.pow(10,this.precision))/Math.pow(10,this.precision)}},components:{FontAwesomeIcon:B}},Ps={class:"form-row mb-1"},Hs={class:"col-md-8"},Ds={class:"form-row vaRow mb-1"},qs={key:0,class:"col-2 col-form-label valueLabel"},Es={class:"col"},Ls=["min","max","step"],js={key:0,class:"form-row alert alert-info my-1 small"},Ws={class:"col"};function Rs(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Ps,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Hs,[o("div",Ds,[s.label?(r(),d("label",qs,b(s.label),1)):u("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[1]||(t[1]=(...l)=>s.decrement&&s.decrement(...l))},[m(a,{icon:["fas","step-backward"]})]),o("div",Es,[C(o("input",S({type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step,"onUpdate:modelValue":t[2]||(t[2]=l=>s.sliderValue=l)},e.$attrs),null,16,Ls),[[I,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:t[3]||(t[3]=(...l)=>s.increment&&s.increment(...l))},[m(a,{icon:["fas","step-forward"]})])]),i.showHelp?(r(),d("div",js,[o("div",Ws,[h(e.$slots,"help",{},void 0,!0)])])):u("",!0)])])}const Ns=w(As,[["render",Rs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Fs=Object.freeze(Object.defineProperty({__proto__:null,default:Ns},Symbol.toStringTag,{value:"Module"}));O.add(T,V);const Us={name:"OpenwbSelectInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Number,Array]},groups:Object,options:Object,notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:B}},zs={class:"form-row mb-1"},Gs={class:"col-md-8"},Js={class:"form-row"},Ks={key:0,value:void 0,disabled:""},Qs=["value"],Ys=["label"],Zs=["value"],Xs={key:0,class:"form-row alert alert-info my-1 small"};function en(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",zs,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Gs,[o("div",Js,[C(o("select",S({class:"col form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),[n.notSelected!==void 0?(r(),d("option",Ks," -- "+b(n.notSelected)+" -- ",1)):u("",!0),(r(!0),d(x,null,D(n.options,l=>(r(),d("option",{key:l.value,value:l.value},b(l.text),9,Qs))),128)),(r(!0),d(x,null,D(n.groups,l=>(r(),d("optgroup",{key:l.label,label:l.label},[(r(!0),d(x,null,D(l.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,Zs))),128))],8,Ys))),128))],16),[[se,s.value]]),h(e.$slots,"append")]),i.showHelp?(r(),d("span",Xs,[h(e.$slots,"help")])):u("",!0)])])}const tn=w(Us,[["render",en],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),sn=Object.freeze(Object.defineProperty({__proto__:null,default:tn},Symbol.toStringTag,{value:"Module"}));O.add(j,ye,ke);const nn={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:B},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},data(){return{showModalReset:!1,showModalDefaults:!1}},emits:["reset","defaults","save"],computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(e){this.showModalReset=!1,e=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(e){this.showModalDefaults=!1,e=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},on={class:"row justify-content-center mb-1"},an={class:"col-md-4 d-flex py-1 justify-content-center"},ln={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},rn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function dn(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog"),l=f("font-awesome-icon");return r(),d(x,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success",preventClose:!0},{default:_(()=>[p(" Einstellungen werden gespeichert... ")]),_:1},8,["show"]),m(a,{show:i.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:_(()=>[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")]),_:1},8,["show","onModalResult"]),m(a,{show:i.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:_(()=>[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")]),_:1},8,["show","onModalResult"]),o("div",on,[o("div",an,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:t[0]||(t[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[p(" Speichern "),m(l,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?u("",!0):(r(),d("div",ln,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:t[1]||(t[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[p(" Änderungen verwerfen "),m(l,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?u("",!0):(r(),d("div",rn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:t[2]||(t[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[p(" Werkseinstellungen "),m(l,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const cn=w(nn,[["render",dn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),un=Object.freeze(Object.defineProperty({__proto__:null,default:cn},Symbol.toStringTag,{value:"Module"}));O.add(T,V,Se,Ce,Oe,Be,$e,Ie,xe,Te,Ve,Me,Ae,Pe);const pn={name:"OpenwbTextInput",inheritAttrs:!1,props:{title:String,modelValue:{type:[String,Object]},subtype:{validator:function(e){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(e)!==-1},default:"text"},pattern:String,unit:String,emptyValue:{required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.error("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else e==""&&(e=this.emptyValue),this.$emit("update:modelValue",e)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(e){var t,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+e),t=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+e),t=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}t>this.inputRef.max||t<this.inputRef.min||(this.value=t)}},components:{FontAwesomeIcon:B}},z=e=>(E("data-v-6927d479"),e=e(),L(),e),mn={class:"form-row mb-1"},_n={class:"col-md-8"},fn={class:"form-row"},hn={class:"input-group"},gn={class:"input-group-prepend"},bn={class:"input-group-text"},vn=["pattern"],wn=["pattern"],yn=["type","pattern"],kn=["type"],Sn={key:9,class:"input-group-append"},Cn={class:"input-group-text"},On={class:"input-group-text"},Bn=z(()=>o("div",{class:"input-group-text"},"-",-1)),$n=[Bn],In=z(()=>o("div",{class:"input-group-text"},"+",-1)),xn=[In],Tn={key:0,class:"form-row alert alert-info my-1 small"};function Vn(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",mn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",_n,[o("div",fn,[o("div",hn,[o("div",gn,[o("div",bn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="email"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):u("",!0),n.subtype=="host"?(r(),g(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):u("",!0),n.subtype=="url"?(r(),g(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):u("",!0),n.subtype=="user"?(r(),g(a,{key:4,"fixed-width":"",icon:["fas","user"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:5,"fixed-width":"",icon:["fas","code"]})):u("",!0),n.subtype=="password"?(r(),g(a,{key:6,"fixed-width":"",icon:i.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):u("",!0),n.subtype=="time"?(r(),g(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):u("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),g(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):u("",!0)])]),["text","user"].includes(n.subtype)?C((r(),d("input",S({key:0,ref:"textInput",type:"text",class:["form-control",{invalid:i.inputInvalid}],"onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,vn)),[[I,s.value]]):u("",!0),n.subtype=="json"?C((r(),d("input",S({key:1,ref:"jsonInput",type:"text",class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,wn)),[[I,s.value]]):u("",!0),n.subtype=="password"?C((r(),d("input",S({key:2,ref:"passwordInput",type:i.showPassword?"text":"password",class:"form-control","onUpdate:modelValue":t[3]||(t[3]=l=>s.value=l)},e.$attrs,{pattern:n.pattern}),null,16,yn)),[[N,s.value]]):u("",!0),n.subtype=="host"?C((r(),d("input",S({key:3,ref:"hostInput",type:"text",class:"form-control","onUpdate:modelValue":t[4]||(t[4]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),["email","url"].includes(n.subtype)?C((r(),d("input",S({key:4,refs:"urlInput",type:n.subtype,class:"form-control","onUpdate:modelValue":t[5]||(t[5]=l=>s.value=l)},e.$attrs),null,16,kn)),[[N,s.value]]):u("",!0),n.subtype=="time"?C((r(),d("input",S({key:5,ref:"timeInput",type:"time",class:"form-control","onUpdate:modelValue":t[6]||(t[6]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="date"?C((r(),d("input",S({key:6,type:"date",ref:"dateInput",class:"form-control","onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="month"?C((r(),d("input",S({key:7,type:"month",ref:"monthInput",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.subtype=="year"?C((r(),d("input",S({key:8,type:"number",ref:"yearInput",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]):u("",!0),n.unit?(r(),d("div",Sn,[o("div",Cn,b(n.unit),1)])):u("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:t[10]||(t[10]=(...l)=>s.togglePassword&&s.togglePassword(...l))},[o("div",On,[m(a,{"fixed-width":"",icon:i.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:t[11]||(t[11]=l=>s.modify(-1))},[...$n])):u("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:t[12]||(t[12]=l=>s.modify(1))},[...xn])):u("",!0)])]),i.showHelp?(r(),d("span",Tn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const Mn=w(pn,[["render",Vn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:Mn},Symbol.toStringTag,{value:"Module"}));O.add(T,V);const Pn={name:"OpenwbTextareaInput",inheritAttrs:!1,props:{title:String,modelValue:{String,Object},subtype:{validator:function(e){return["text","json"].indexOf(e)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(e){if(this.subtype=="json")try{let t=JSON.parse(e);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=t,this.$emit("update:modelValue",t)}catch{console.warn("parsing JSON failed: "+e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=e}else this.$emit("update:modelValue",e)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}},components:{FontAwesomeIcon:B}},Hn={class:"form-row mb-1"},Dn={class:"col-md-8"},qn={class:"form-row"},En={class:"input-group"},Ln={class:"input-group-prepend"},jn={class:"input-group-text"},Wn={key:2,class:"input-group-append"},Rn={class:"input-group-text"},Nn={class:"form-text text-muted text-right"},Fn={key:0,class:"form-row alert alert-info my-1 small"};function Un(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",Hn,[o("label",{onClick:t[0]||(t[0]=(...l)=>s.toggleHelp&&s.toggleHelp(...l)),class:"col-md-4 col-form-label"},[p(b(n.title)+" ",1),e.$slots.help?(r(),g(a,{key:0,icon:i.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(i.showHelp?"text-info":"")},null,8,["icon","class"])):u("",!0)]),o("div",Dn,[o("div",qn,[o("div",En,[o("div",Ln,[o("div",jn,[n.subtype=="text"?(r(),g(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):u("",!0),n.subtype=="json"?(r(),g(a,{key:1,"fixed-width":"",icon:["fas","code"]})):u("",!0)])]),n.subtype==="json"?C((r(),d("textarea",S({key:0,ref:"jsonInput",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value,void 0,{lazy:!0}]]):C((r(),d("textarea",S({key:1,class:"form-control","onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l)},e.$attrs),null,16)),[[I,s.value]]),e.$attrs.maxlength?(r(),d("div",Wn,[o("div",Rn,[o("small",Nn,b(s.length)+" / "+b(e.$attrs.maxlength),1)])])):u("",!0)])]),i.showHelp?(r(),d("span",Fn,[h(e.$slots,"help",{},void 0,!0)])):u("",!0)])])}const zn=w(Pn,[["render",Un],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Gn=Object.freeze(Object.defineProperty({__proto__:null,default:zn},Symbol.toStringTag,{value:"Module"}));const Jn={name:"OpenwbToast",emits:["dismiss","hide"],props:{topic:{type:String,required:!0},subtype:{validator:function(e){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(e)!==-1},default:"secondary"},source:{validator:function(e){return["system","client","command"].indexOf(e)!==-1}},timestamp:{type:Number}},data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var t=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const c=new Date-this.timestamp*1e3;for(var i in e)if(Math.abs(c)>e[i]){this.relativeTime=t.format(Math.round(-c/e[i]),i);break}c>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)}},G=e=>(E("data-v-c51b5764"),e=e(),L(),e),Kn=G(()=>o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),Qn={key:0,class:"time-diff"},Yn=G(()=>o("span",{"aria-hidden":"true"},"×",-1)),Zn=[Yn],Xn={class:"toast-body"};function eo(e,t,n,c,i,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[Kn,n.timestamp?(r(),d("small",Qn,b(i.relativeTime),1)):u("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:t[0]||(t[0]=(...a)=>s.dismiss&&s.dismiss(...a))},[...Zn])],2),o("div",Xn,[h(e.$slots,"default",{},void 0,!0)])],2)}const to=w(Jn,[["render",eo],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),so=Object.freeze(Object.defineProperty({__proto__:null,default:to},Symbol.toStringTag,{value:"Module"}));O.add(He);const no={name:"OpenwbNavBar",components:{FontAwesomeIcon:B},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},A=e=>(E("data-v-e7a6d0c0"),e=e(),L(),e),oo={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},ao=A(()=>o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),io={class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar",ref:"navbarButton"},lo=A(()=>o("span",{class:"navbar-toggler-icon"},null,-1)),ro=[lo],co={class:"collapse navbar-collapse navbar-nav-scroll",id:"collapsibleNavbar",ref:"collapsibleNavbar"},uo={class:"navbar-nav"},po={class:"nav-item"},mo={class:"nav-item dropdown nav-separator-after"},_o=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),fo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ho={class:"nav-item dropdown"},go=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),bo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},vo={class:"nav-item dropdown"},wo=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),yo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},ko={class:"nav-item dropdown"},So=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),Co={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Oo=A(()=>o("div",{class:"dropdown-divider"},null,-1)),Bo=A(()=>o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1)),$o={class:"nav-item dropdown"},Io=A(()=>o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),xo={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},To={class:"nav-item nav-separator-before"},Vo={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function Mo(e,t,n,c,i,s){const a=f("router-link"),l=f("font-awesome-icon");return r(),d("nav",oo,[ao,o("button",io,[...ro],512),o("div",co,[o("ul",uo,[o("li",po,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:_(()=>[p(" Status ")]),_:1})]),o("li",mo,[_o,o("div",fo,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladeprotokoll ")]),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Diagramme ")]),_:1})])]),o("li",ho,[go,o("div",bo,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Allgemein ")]),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Optionale Hardware ")]),_:1})])]),o("li",vo,[wo,o("div",yo,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Übergreifendes ")]),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Sofortladen ")]),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" PV-Laden ")]),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zeitladen ")]),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Zielladen ")]),_:1})])]),o("li",ko,[So,o("div",Co,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Geräte und Komponenten ")]),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Lastmanagement ")]),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Ladepunkte ")]),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fahrzeuge ")]),_:1}),Oo,Bo])]),o("li",$o,[Io,o("div",xo,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Einrichtungsassistent ")]),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" openWB Cloud ")]),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" MQTT-Brücken ")]),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Fehlersuche ")]),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Support ")]),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Datenverwaltung ")]),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" System ")]),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:_(()=>[p(" Rechtliches ")]),_:1})])]),o("li",To,[o("a",Vo,[p(" Wiki "),m(l,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const Ao=w(no,[["render",Mo],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const Po={name:"OpenwbPageFooter"},Ho={id:"footer",class:"footer bg-dark text-light font-small"},Do={class:"container text-center"};function qo(e,t,n,c,i,s){return r(),d("footer",Ho,[o("div",Do,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(e.$route.meta.heading),1)])])}const Eo=w(Po,[["render",qo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);O.add(De);const Lo={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:B}},jo={class:"mt-3 alert alert-dark text-center"},Wo=o("br",null,null,-1),Ro=o("br",null,null,-1),No={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},Fo=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1),Uo=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1),zo={type:"submit",class:"btn btn-primary"};function Go(e,t,n,c,i,s){const a=f("font-awesome-icon");return r(),d("div",jo,[p(" Open Source made with love!"),Wo,p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben"),Ro,o("form",No,[Fo,Uo,o("button",zo,[p(" Spenden "),m(a,{icon:["fab","paypal"]})])])])}const Jo=w(Lo,[["render",Go],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),Ko={name:"ComponentState",data(){return{mqttTopicsToSubscribe:[]}},emits:["reset","defaults","save"],computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},methods:{updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.$store.commit({type:"updateTopic",topic:e,objectPath:n,payload:t})},ac_current2dc_power(e){return parseFloat((e*3*230/1e3).toFixed(2))},dc_power2ac_current(e){return parseFloat((e*1e3/230/3).toFixed(2))},getWildcardIndexList(e,t=!1){let n=e;t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let c=Object.keys(this.$store.state.mqtt).filter(i=>i.match(n));return c.forEach((i,s,a)=>{a[s]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),c},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatNumber(e,t=0,n=t,c=1){if(!(e==null||isNaN(e)))return(e*c).toLocaleString(void 0,{minimumFractionDigits:t,maximumFractionDigits:n})},formatNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.formatNumber(this.$store.state.mqtt[e],t,n,c):"-"},formatPhaseArrayNumberTopic(e,t=0,n=t,c=1){return this.$store.state.mqtt[e]?this.$store.state.mqtt[e].map(i=>this.formatNumber(i,t,n,c)).join(" / "):"- / - / -"},translateChargeMode(e){switch(e){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",e),e}}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)}},J=w(Ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);O.add(qe,Ee);const Qo={name:"OpenwbPageMessages",mixins:[J],components:{FontAwesomeIcon:B,FontAwesomeLayers:Le,FontAwesomeLayersText:je},data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((t,n)=>((t=="light"&&["info","success","warning","danger"].includes(n.type)||t=="info"&&["success","warning","danger"].includes(n.type)||t=="success"&&["warning","danger"].includes(n.type)||t=="warning"&&n.type=="danger")&&(t=n.type),t),"light")},messages(){const e=[];return this.systemMessages.forEach(t=>{e.push(t)}),this.clientMessages.forEach(t=>{e.push(t)}),e.sort(this.compareMessagesByTimestamp),e},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(e=>!this.hiddenMessages.includes(e.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let e=this.getWildcardTopics("openWB/system/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t},clientMessages(){let e=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var t=[];for(const[n,c]of Object.entries(e))t.push({topic:n,...c});return t}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(e,t){return t.timestamp-e.timestamp},clearTopic(e){this.$root.doPublish(e,void 0)},dismissMessage(e){this.clearTopic(e.topic);var t=this.hiddenMessages.indexOf(e.topic);t>-1&&this.hiddenMessages.splice(t,1)},dismissAllMessages(){this.messages.forEach(e=>{this.clearTopic(e.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(e){this.hiddenMessages.includes(e.topic)||this.hiddenMessages.push(e.topic)}}},Yo=["innerHTML"];function Zo(e,t,n,c,i,s){const a=f("font-awesome-icon"),l=f("font-awesome-layers-text"),v=f("font-awesome-layers"),$=f("openwb-base-alert"),M=f("openwb-base-click-button"),P=f("openwb-base-toast");return r(),d(x,null,[(r(),g(U,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",i.showAllMessages?"active":""]),onClick:t[0]||(t[0]=(...H)=>s.toggleAllMessages&&s.toggleAllMessages(...H))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:_(()=>[m(a,{"fixed-width":"",icon:i.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),g(l,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):u("",!0)]),_:1})],2)])),s.recentMessages.length>0||i.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",i.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),g($,{key:0,subtype:"info"},{default:_(()=>[p(" Keine Nachrichten vorhanden. ")]),_:1})):i.showAllMessages?(r(),g(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:_(()=>[p(" Alle Nachrichten löschen ")]),_:1},8,["onButtonClicked"])):u("",!0),(r(!0),d(x,null,D(s.recentMessages,H=>(r(),g(P,{key:H.topic,topic:H.topic,source:H.source,subtype:H.type,timestamp:H.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:_(()=>[o("span",{innerHTML:H.message},null,8,Yo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):u("",!0)],64)}const Xo=w(Qo,[["render",Zo],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),ea={name:"OpenwbPageBlocker",mixins:[J],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(e){e=="reload"?location.reload():console.warn("unknown event",e)}}},ta={class:"openwb-blocker"},sa={key:0},na={key:1},oa={key:2},aa={key:3};function ia(e,t,n,c,i,s){const a=f("openwb-base-modal-dialog");return r(),d("div",ta,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark",preventClose:!0,buttons:s.myButtons,onModalResult:t[0]||(t[0]=l=>s.handleModalResult(l))},{default:_(()=>[s.bootInProgress?(r(),d("p",sa," Der Systemstart ist noch nicht abgeschlossen. ")):u("",!0),s.updateInProgress?(r(),d("p",na," Es wird eine Systemaktualisierung ausgeführt. ")):u("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",oa," Bitte die Seite neu laden. ")):(r(),d("p",aa,"Bitte warten..."))]),_:1},8,["show","title","buttons"])])}const la=w(ea,[["render",ia],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const ra={name:"OpenwbSettingsApp",components:{NavBar:Ao,PageFooter:Eo,DonationBanner:Jo,Messages:Xo,Blocker:la},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch{return}},topicList(){return Object.keys(this.$store.state.mqtt)}},methods:{async saveValues(e=void 0){function t(c){return new Promise(i=>setTimeout(i,c))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};e===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(e)?e.forEach(c=>{n[c]=this.$store.state.mqtt[c]}):console.error("expected array, got ",typeof e);for(const[c,i]of Object.entries(n)){let s=c.replace("openWB/","openWB/set/");console.debug("saving data:",s,i),this.doPublish(s,i),await t(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(e=this.topicList){console.debug("resetting values..."),console.debug("topics: ",e),this.doUnsubscribe(e),this.doSubscribe(e)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},createConnection(){const{protocol:e,host:t,port:n,endpoint:c,...i}=this.connection,s=`${e}://${t}:${n}${c}`;console.debug("connecting to broker:",s);try{this.client=ne.connect(s,i)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,l)=>{if(l.toString().length>0){let v;try{v=JSON.parse(l.toString())}catch{console.debug("Json parsing failed, fallback to string: ",a),v=l.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(e){console.debug("doSubscribe",e),e.forEach(t=>{this.$store.commit("addSubscription",t),this.$store.getters.subscriptionCount(t)==1?(t.includes("#")||t.includes("+")?console.debug("skipping init of wildcard topic:",t):this.$store.commit("addTopic",{topic:t,payload:void 0}),this.client.subscribe(t,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",t)})},doUnsubscribe(e){console.debug("doUnsubscribe",e),e.forEach(t=>{this.$store.commit("removeSubscription",t),this.$store.getters.subscriptionCount(t)==0?(this.client.unsubscribe(t,n=>{n&&console.error("Unsubscribe error",n)}),t.includes("#")||t.includes("+")?(console.debug("expanding wildcard topic:",t),Object.keys(this.getWildcardTopics(t)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",t),this.$store.commit("removeTopic",t))):console.debug("Still subscribed to topic: ",t)})},doPublish(e,t,n=!0,c=2){let i={qos:c,retain:n};this.client.publish(e,JSON.stringify(t),i,s=>{s&&console.error("Publish error",s)})},postClientMessage(e,t="secondary"){console.debug("postMessage:",e,t);const n=Date.now(),c="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:c,payload:{message:e,type:t,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(e,t=!1){let n=e;return t||(n="^"+e.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(c=>c.match(n)).reduce((c,i)=>({...c,[i]:this.$store.state.mqtt[i]}),{})}},created(){this.createConnection()}},da={role:"main",class:"container"},ca={id:"content"};function ua(e,t,n,c,i,s){const a=f("nav-bar"),l=f("router-view"),v=f("donation-banner"),$=f("page-footer"),M=f("messages"),P=f("blocker");return r(),d(x,null,[o("header",null,[m(a)]),o("div",da,[o("div",ca,[o("h1",null,b(e.$route.meta.heading),1),m(l,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(P)],64)}const pa=w(ra,[["render",ua],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),ma="modulepreload",_a=function(e){return"/openWB/web/settings/"+e},F={},y=function(t,n,c){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=_a(s),s in F)return;F[s]=!0;const a=s.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!c)for(let M=i.length-1;M>=0;M--){const P=i[M];if(P.href===s&&(!a||P.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":ma,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,P)=>{$.addEventListener("load",M),$.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let K={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};K.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const q=oe({state:K,mutations:{storeLocal(e,t){e.local[t.name]=t.value},addTopic(e,t){Object.keys(e.mqtt).includes(t.topic)?console.warn("topic already exists: ",t.topic):e.mqtt[t.topic]=t.payload},removeTopic(e,t){delete e.mqtt[t]},updateTopic(e,t){const n=(c,i,s)=>i.split(".").reduce((a,l,v)=>a[l]=i.split(".").length===++v?s:a[l]||{},c);t.topic in e.mqtt||!(t.topic in e.examples)?t.objectPath!=null?n(e.mqtt[t.topic],t.objectPath,t.payload):e.mqtt[t.topic]=t.payload:(console.debug("topic not found in state.mqtt: ",t.topic),t.topic in e.examples?t.objectPath!=null?n(e.examples[t.topic],t.objectPath,t.payload):e.examples[t.topic]=t.payload:console.warn("topic not found in state: ",t.topic," giving up"))},addSubscription(e,t){t in e.mqttSubscriptions?e.mqttSubscriptions[t]+=1:e.mqttSubscriptions[t]=1,console.debug("subscription count: ",t,e.mqttSubscriptions[t])},removeSubscription(e,t){t in e.mqttSubscriptions&&(e.mqttSubscriptions[t]-=1,e.mqttSubscriptions[t]<=0&&delete e.mqttSubscriptions[t])}},actions:{},modules:{},getters:{usageTermsAcknowledged(e){return new Promise(t=>{if(e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)t(e.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(e){return new Promise(t=>{if(e.mqtt["openWB/system/installAssistantDone"]!==void 0)t(e.mqtt["openWB/system/installAssistantDone"]);else{var n,c;n=setTimeout(()=>{clearInterval(c),t(!1)},5e3),c=setInterval(()=>{e.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(c),t(e.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:e=>t=>e.mqttSubscriptions[t]||0}}),Q=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>y(()=>import("./Status-f1da0c38.js"),["assets/Status-f1da0c38.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>y(()=>import("./ChargeLog-f3c14ea7.js"),["assets/ChargeLog-f3c14ea7.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>y(()=>import("./Chart-0ed3fc8e.js"),["assets/Chart-0ed3fc8e.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-35992f4a.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>y(()=>import("./GeneralConfig-1396a845.js").then(e=>e.a),["assets/GeneralConfig-1396a845.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>y(()=>import("./OptionalComponents-963feb73.js").then(e=>e.O),["assets/OptionalComponents-963feb73.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>y(()=>import("./GeneralChargeConfig-4b985756.js").then(e=>e.G),["assets/GeneralChargeConfig-4b985756.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>y(()=>import("./InstantChargeConfig-13725bb2.js"),["assets/InstantChargeConfig-13725bb2.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>y(()=>import("./PVChargeConfig-cce066fd.js"),["assets/PVChargeConfig-cce066fd.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>y(()=>import("./TimeChargeConfig-46c6427d.js"),["assets/TimeChargeConfig-46c6427d.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>y(()=>import("./ScheduledChargeConfig-a25b4908.js"),["assets/ScheduledChargeConfig-a25b4908.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>y(()=>import("./HardwareInstallation-a0083e3a.js").then(e=>e.a),["assets/HardwareInstallation-a0083e3a.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>y(()=>import("./LoadManagementConfig-5e0d6325.js"),["assets/LoadManagementConfig-5e0d6325.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-641f6bb4.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>y(()=>import("./ChargePointInstallation-fba1b24e.js").then(e=>e.c),["assets/ChargePointInstallation-fba1b24e.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>y(()=>import("./VehicleConfig-5050794d.js").then(e=>e.b),["assets/VehicleConfig-5050794d.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>y(()=>import("./CloudConfig-5ecdadd6.js"),["assets/CloudConfig-5ecdadd6.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>y(()=>import("./MqttBridgeConfig-4de54ead.js"),["assets/MqttBridgeConfig-4de54ead.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>y(()=>import("./DebugConfig-4a040dc7.js"),["assets/DebugConfig-4a040dc7.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>y(()=>import("./Support-5eca5ed7.js"),["assets/Support-5eca5ed7.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>y(()=>import("./LegalSettings-c607b1a5.js"),["assets/LegalSettings-c607b1a5.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>y(()=>import("./System-c2920436.js"),["assets/System-c2920436.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>y(()=>import("./DataManagement-eb2fc5d7.js").then(e=>e.a),["assets/DataManagement-eb2fc5d7.js","assets/vendor-fortawesome-71546160.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>y(()=>import("./InstallAssistant-e098a326.js"),["assets/InstallAssistant-e098a326.js","assets/dynamic-import-helper-be004503.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])}];Q.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>y(()=>import("./TestingStore-1bc32428.js"),["assets/TestingStore-1bc32428.js","assets/OpenwbSortableList-641f6bb4.js","assets/vendor-f2b8aa6f.js","assets/vendor-sortablejs-2f1828d0.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-71546160.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-4ad604fa.js","assets/vendor-jquery-d3cb8fad.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-65ecee4b.js"])});const W=ae({history:ie(),routes:Q});W.beforeEach(async e=>{if(await q.getters.usageTermsAcknowledged){if(!await q.getters.installAssistantDone&&e.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(e.name!=="LegalSettings")return{name:"LegalSettings"}});W.afterEach(e=>{e.meta.heading?document.title="openWB | "+e.meta.heading:document.title="openWB"});const R=le(pa);R.use(q).use(W).use(We,Re);const fa=Object.assign({"./components/OpenwbBaseAlert.vue":ze,"./components/OpenwbBaseArrayInput.vue":it,"./components/OpenwbBaseAvatar.vue":ut,"./components/OpenwbBaseButtonGroupInput.vue":yt,"./components/OpenwbBaseButtonInput.vue":xt,"./components/OpenwbBaseCard.vue":Lt,"./components/OpenwbBaseCheckboxInput.vue":Gt,"./components/OpenwbBaseClickButton.vue":Yt,"./components/OpenwbBaseCopyToClipboard.vue":ss,"./components/OpenwbBaseHeading.vue":ds,"./components/OpenwbBaseModalDialog.vue":vs,"./components/OpenwbBaseNumberInput.vue":Ms,"./components/OpenwbBaseRangeInput.vue":Fs,"./components/OpenwbBaseSelectInput.vue":sn,"./components/OpenwbBaseSubmitButtons.vue":un,"./components/OpenwbBaseTextInput.vue":An,"./components/OpenwbBaseTextarea.vue":Gn,"./components/OpenwbBaseToast.vue":so});Object.entries(fa).forEach(([e,t])=>{const n=re(de(e.split("/").pop().replace(/\.\w+$/,"")));R.component(n,t.default)});R.mount("#app");export{J as C,y as _};
diff --git a/web/settings/assets/index-dc0e711f.js b/web/settings/assets/index-dc0e711f.js
new file mode 100644
index 0000000000..4ecf28a346
--- /dev/null
+++ b/web/settings/assets/index-dc0e711f.js
@@ -0,0 +1 @@
+import{_ as y,k as r,l as d,m as h,q as k,u as g,x as o,y as p,z as b,A as _,B as c,D as m,E as B,F as x,G as S,I as z,J as T,K as P,L as G,M as J,N as f,O as K,P as Q,T as R,Q as Y,R as j,S as Z,U as X,V as ee,W as te,X as se,Y as ne,Z as oe}from"./vendor-a21b3a62.js";import{l as C,f as I,a as V,b as ae,c as le,d as ie,e as re,F as O,g as D,h as de,i as ue,j as ce,k as pe,m as me,n as fe,o as ge,p as he,q as _e,r as be,s as ve,t as ye,u as we,v as ke,w as Se,x as Be,y as Ce,z as Oe,A as $e,B as xe,C as Te,D as Ie,E as Ve,G as Me,H as Ae,I as qe,J as Pe}from"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import{p as He,a as De}from"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-jquery-a5dbbab1.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))u(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&u(a)}).observe(document,{childList:!0,subtree:!0});function n(l){const s={};return l.integrity&&(s.integrity=l.integrity),l.referrerPolicy&&(s.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?s.credentials="include":l.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function u(l){if(l.ep)return;l.ep=!0;const s=n(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}}};function Le(t,e,n,u,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(t.$slots,"default")],2)}const je=y(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));C.add(I,V,ae,le,ie,re);const Re={name:"OpenwbArrayInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!0,default:"#TITLE#"},modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let t=this.value;t.push(this.newTag),t.sort(),this.value=t,this.newTag=""}this.$refs.tagInput.focus()},removeTag(t){let e=this.value;e.splice(t,1),this.value=e}}},Ne={class:"form-row mb-1"},Fe={class:"col-md-8"},Ue={class:"form-row"},ze={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Ne,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Fe,[o("div",Ue,[o("div",ze,[o("div",Ge,[o("div",Je,[h(t.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),B(o("input",S({ref:"tagInput","onUpdate:modelValue":e[1]||(e[1]=i=>l.newTag=i),type:"text",class:"form-control"},t.$attrs,{onKeyup:e[2]||(e[2]=z((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[x,l.newTag]]),o("div",Ke,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:e[3]||(e[3]=(...i)=>s.addTag&&s.addTag(...i))},[h(t.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):c("",!0),(r(!0),d(T,null,P(s.value,(i,v)=>(r(),d("span",{key:v,class:"tag"},[h(t.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(i)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const et=y(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},nt={class:"avatar"};function ot(t,e,n,u,l,s){return r(),d("div",nt,[h(t.$slots,"default",{},()=>[e[0]||(e[0]=p("?"))],!0)])}const at=y(st,[["render",ot],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),lt=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));C.add(I,V,D);const it={name:"OpenwbButtonGroupInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean],default:void 0},buttons:{type:Array,required:!0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ut={class:"form-row"},ct={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",rt,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[h(t.$slots,"default",{},()=>[p(b(n.title),1)]),t.$slots.help?(r(),_(a,{key:0,"fixed-width":"",icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",dt,[o("div",ut,[o("div",ct,[(r(!0),d(T,null,P(n.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=v=>s.value=v),type:"radio",value:i.buttonValue,ref_for:!0},t.$attrs),null,16,pt),[[G,s.value]]),h(t.$slots,"label-"+i.buttonValue,{},()=>[p(b(i.text),1)]),m(a,{icon:["fas","check"],style:J([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[h(t.$slots,"help")])):c("",!0)])])}const gt=y(it,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:gt},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const _t={name:"OpenwbButtonInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},buttonText:{type:String,required:!1,default:void 0},disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}},emits:["buttonClicked"],data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(t){this.$emit("buttonClicked",t)}}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},yt={class:"form-row"},wt={key:0,class:"form-row alert alert-info my-1 small"};function kt(t,e,n,u,l,s){const a=g("font-awesome-icon"),i=g("openwb-base-click-button");return r(),d("div",bt,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",vt,[o("div",yt,[m(i,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},t.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[h(t.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",wt,[h(t.$slots,"help")])):c("",!0)])])}const St=y(_t,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Bt=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));C.add(de,ue);const Ct={name:"OpenwbCard",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(t)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},xt={class:"col"},Tt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:1,class:"card-footer"};function Mt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:e[0]||(e[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[o("div",Ot,[o("div",$t,[o("div",xt,[h(t.$slots,"header",{collapsed:l.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Tt,[t.$slots.actions?(r(),d("span",It,[h(t.$slots,"actions",{collapsed:l.isCollapsed})])):c("",!0),n.collapsible?(r(),_(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):c("",!0)])],2),l.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},t.$attrs),[h(t.$slots,"default")],16)):c("",!0),t.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Vt,[h(t.$slots,"footer")])):c("",!0)],2)}const At=y(Ct,[["render",Mt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),qt=Object.freeze(Object.defineProperty({__proto__:null,default:At},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Pt={name:"OpenwbCheckboxInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Ht={class:"form-row mb-1"},Dt={class:"col-md-8"},Et={class:"form-row"},Lt={key:0,class:"form-row alert alert-info my-1 small"};function jt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Ht,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Dt,[o("div",Et,[B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"form-control",type:"checkbox"},t.$attrs),null,16),[[K,s.value]])]),l.showHelp?(r(),d("span",Lt,[h(t.$slots,"help")])):c("",!0)])])}const Wt=y(Pt,[["render",jt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Rt=Object.freeze(Object.defineProperty({__proto__:null,default:Wt},Symbol.toStringTag,{value:"Module"}));const Nt={name:"OpenwbClickButton",props:{title:{type:String,required:!1,default:""}},emits:["buttonClicked"],methods:{click(t){this.$emit("buttonClicked",t)}}};function Ft(t,e,n,u,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:e[0]||(e[0]=Q((...a)=>s.click&&s.click(...a),["prevent"]))},[h(t.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Ut=y(Nt,[["render",Ft],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),zt=Object.freeze(Object.defineProperty({__proto__:null,default:Ut},Symbol.toStringTag,{value:"Module"}));C.add(ce,pe);const Gt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const t=window.getSelection(),e=document.createRange();e.selectNodeContents(this.$refs["slot-wrapper"]),t.removeAllRanges(),t.addRange(e);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const t=document.body.createTextRange();t.moveToElementText(this.$refs["slot-wrapper"]),t.select()}else console.warn("could not select text, unsupported browser")}}}},Jt=["title"];function Kt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:e[0]||(e[0]=(...i)=>s.click&&s.click(...i))},[h(t.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Jt)}const Qt=y(Gt,[["render",Kt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));C.add(I,V,D);const Zt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},inheritAttrs:!1,data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Xt={key:0,class:"actions"},es={class:""},ts={key:0,class:"form-row alert alert-info small"};function ss(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d(T,null,[o("div",S({class:"card-text card-text-heading"},t.$attrs),[o("div",{class:"heading-text",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[h(t.$slots,"default",{},void 0,!0),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),t.$slots.actions?(r(),d("span",Xt,[h(t.$slots,"actions",{},void 0,!0)])):c("",!0)],16),o("div",es,[l.showHelp?(r(),d("span",ts,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])],64)}const ns=y(Zt,[["render",ss],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),os=Object.freeze(Object.defineProperty({__proto__:null,default:ns},Symbol.toStringTag,{value:"Module"})),as={name:"OpenwbModalDialog",props:{title:{type:String,required:!1,default:""},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(t){return["around","between","center","end","start"].indexOf(t)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},emits:["modal-result"],computed:{myButtons(){var t=[];return this.buttons!==void 0&&(t=this.buttons),this.preventClose||t.push({text:"Schließen",event:"close"}),t}},methods:{handleClick(t){t.stopPropagation();let e=t.target.getAttribute("data-event");e===null&&(e="close"),(e!="close"||!this.preventClose)&&this.$emit("modal-result",e)}}},ls={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},is={class:"modal-content"},rs={class:"modal-title"},ds={class:"modal-body"},us=["data-event"];function cs(t,e,n,u,l,s){return n.show?(r(),_(R,{key:0,to:"body"},[e[4]||(e[4]=o("div",{class:"modal-backdrop fade show"},null,-1)),o("div",{class:"modal fade d-block show",role:"dialog",onClick:e[2]||(e[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ls,[o("div",is,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",rs,b(n.title),1),n.preventClose?c("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:e[0]||(e[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",ds,[h(t.$slots,"default",{},()=>[e[3]||(e[3]=p("# Body #"))])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(T,null,P(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:e[1]||(e[1]=(...i)=>s.handleClick&&s.handleClick(...i))},b(a.text),11,us))),128))],2)):c("",!0)])])])])):c("",!0)}const ps=y(as,[["render",cs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),ms=Object.freeze(Object.defineProperty({__proto__:null,default:ps},Symbol.toStringTag,{value:"Module"}));C.add(I,V,me);const fs={name:"OpenwbNumberInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},precision:{type:Number,default:void 0},emptyValue:{type:[Number,null],required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(t){(isNaN(t)||typeof t!="number")&&(t=this.emptyValue),this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},gs={class:"form-row mb-1"},hs={class:"col-md-8"},_s={class:"form-row"},bs={class:"input-group"},vs={class:"input-group-prepend"},ys={class:"input-group-text"},ws={key:0,class:"input-group-append"},ks={class:"input-group-text"},Ss={key:0,class:"form-row alert alert-info my-1 small"};function Bs(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",gs,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",hs,[o("div",_s,[o("div",bs,[o("div",vs,[o("div",ys,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),type:"number",class:"form-control"},t.$attrs),null,16),[[x,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",ws,[o("div",ks,b(n.unit),1)])):c("",!0)])]),l.showHelp?(r(),d("span",Ss,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const Cs=y(fs,[["render",Bs],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Os=Object.freeze(Object.defineProperty({__proto__:null,default:Cs},Symbol.toStringTag,{value:"Module"}));C.add(I,V,fe,ge);const $s={name:"OpenwbRangeInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},min:{type:Number,required:!0,default:0},max:{type:Number,required:!0,default:100},step:{type:Number,required:!1,default:1},labels:{type:Array,required:!1,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var t;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?t=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):t=this.sliderValue,typeof t=="number"&&(t=t.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(t+=" "+this.unit)),t},precision(){if(!isFinite(this.step))return 0;for(var t=1,e=0;Math.round(this.step*t)/t!==this.step;)t*=10,e++;return e},sliderValue:{get(){if(this.labels){var t=void 0;for(let e=0;e<this.labels.length;e++)if(this.labels[e].value==this.modelValue){t=e;break}return t===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):t}return this.modelValue},set(t){if(this.labels){var e=this.labels[t].value;this.$emit("update:modelValue",e)}else this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var t=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(t*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var t=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(t*Math.pow(10,this.precision))/Math.pow(10,this.precision)}}},xs={class:"form-row mb-1"},Ts={class:"col-md-8"},Is={class:"form-row vaRow mb-1"},Vs={key:0,class:"col-2 col-form-label valueLabel"},Ms={class:"col"},As=["min","max","step"],qs={key:0,class:"form-row alert alert-info my-1 small"},Ps={class:"col"};function Hs(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",xs,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Ts,[o("div",Is,[s.label?(r(),d("label",Vs,b(s.label),1)):c("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[1]||(e[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),o("div",Ms,[B(o("input",S({"onUpdate:modelValue":e[2]||(e[2]=i=>s.sliderValue=i),type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step},t.$attrs),null,16,As),[[x,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[3]||(e[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[o("div",Ps,[h(t.$slots,"help",{},void 0,!0)])])):c("",!0)])])}const Ds=y($s,[["render",Hs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Es=Object.freeze(Object.defineProperty({__proto__:null,default:Ds},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Ls={name:"OpenwbSelectInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Array,null],required:!1,default:void 0},groups:{type:Array,required:!1,default:void 0},options:{type:Array,required:!1,default:void 0},notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},js={class:"form-row mb-1"},Ws={class:"col-md-8"},Rs={class:"form-row"},Ns={key:0,value:void 0,disabled:""},Fs=["value"],Us=["label"],zs=["value"],Gs={key:0,class:"form-row alert alert-info my-1 small"};function Js(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",js,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Ws,[o("div",Rs,[B(o("select",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"col form-control"},t.$attrs),[n.notSelected!==void 0?(r(),d("option",Ns," -- "+b(n.notSelected)+" -- ",1)):c("",!0),(r(!0),d(T,null,P(n.options,i=>(r(),d("option",{key:i.value,value:i.value},b(i.text),9,Fs))),128)),(r(!0),d(T,null,P(n.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(T,null,P(i.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,zs))),128))],8,Us))),128))],16),[[Y,s.value]]),h(t.$slots,"append")]),l.showHelp?(r(),d("span",Gs,[h(t.$slots,"help")])):c("",!0)])])}const Ks=y(Ls,[["render",Js],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Qs=Object.freeze(Object.defineProperty({__proto__:null,default:Ks},Symbol.toStringTag,{value:"Module"}));C.add(D,he,_e);const Ys={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},emits:["reset","defaults","save"],data(){return{showModalReset:!1,showModalDefaults:!1}},computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(t){this.showModalReset=!1,t=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(t){this.showModalDefaults=!1,t=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},Zs={class:"row justify-content-center mb-1"},Xs={class:"col-md-4 d-flex py-1 justify-content-center"},en={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},tn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function sn(t,e,n,u,l,s){const a=g("openwb-base-modal-dialog"),i=g("font-awesome-icon");return r(),d(T,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success","prevent-close":!0},{default:f(()=>e[3]||(e[3]=[p(" Einstellungen werden gespeichert... ")])),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>e[4]||(e[4]=[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")])),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>e[5]||(e[5]=[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")])),_:1},8,["show","onModalResult"]),o("div",Zs,[o("div",Xs,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:e[0]||(e[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[e[6]||(e[6]=p(" Speichern ")),m(i,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?c("",!0):(r(),d("div",en,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:e[1]||(e[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[e[7]||(e[7]=p(" Änderungen verwerfen ")),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?c("",!0):(r(),d("div",tn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:e[2]||(e[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[e[8]||(e[8]=p(" Werkseinstellungen ")),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const nn=y(Ys,[["render",sn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),on=Object.freeze(Object.defineProperty({__proto__:null,default:nn},Symbol.toStringTag,{value:"Module"}));C.add(I,V,be,ve,ye,we,ke,Se,Be,Ce,Oe,$e,xe,Te);const an={name:"OpenwbTextInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(t)!==-1},default:"text"},pattern:{type:String,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},emptyValue:{type:[String,Object,null],required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.error("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else t==""&&(t=this.emptyValue),this.$emit("update:modelValue",t)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(t){var e,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+t),e=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}e>this.inputRef.max||e<this.inputRef.min||(this.value=e)}}},ln={class:"form-row mb-1"},rn={class:"col-md-8"},dn={class:"form-row"},un={class:"input-group"},cn={class:"input-group-prepend"},pn={class:"input-group-text"},mn=["pattern"],fn=["pattern"],gn=["type","pattern"],hn=["type"],_n={key:9,class:"input-group-append"},bn={class:"input-group-text"},vn={class:"input-group-text"},yn={key:0,class:"form-row alert alert-info my-1 small"};function wn(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",ln,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",rn,[o("div",dn,[o("div",un,[o("div",cn,[o("div",pn,[n.subtype=="text"?(r(),_(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):c("",!0),n.subtype=="email"?(r(),_(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):c("",!0),n.subtype=="host"?(r(),_(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):c("",!0),n.subtype=="url"?(r(),_(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):c("",!0),n.subtype=="user"?(r(),_(a,{key:4,"fixed-width":"",icon:["fas","user"]})):c("",!0),n.subtype=="json"?(r(),_(a,{key:5,"fixed-width":"",icon:["fas","code"]})):c("",!0),n.subtype=="password"?(r(),_(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):c("",!0),n.subtype=="time"?(r(),_(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):c("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),_(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):c("",!0)])]),["text","user"].includes(n.subtype)?B((r(),d("input",S({key:0,ref:"textInput","onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),type:"text",class:["form-control",{invalid:l.inputInvalid}]},t.$attrs,{pattern:n.pattern}),null,16,mn)),[[x,s.value]]):c("",!0),n.subtype=="json"?B((r(),d("input",S({key:1,ref:"jsonInput","onUpdate:modelValue":e[2]||(e[2]=i=>s.value=i),type:"text",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,fn)),[[x,s.value]]):c("",!0),n.subtype=="password"?B((r(),d("input",S({key:2,ref:"passwordInput","onUpdate:modelValue":e[3]||(e[3]=i=>s.value=i),type:l.showPassword?"text":"password",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,gn)),[[j,s.value]]):c("",!0),n.subtype=="host"?B((r(),d("input",S({key:3,ref:"hostInput","onUpdate:modelValue":e[4]||(e[4]=i=>s.value=i),type:"text",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),["email","url"].includes(n.subtype)?B((r(),d("input",S({key:4,"onUpdate:modelValue":e[5]||(e[5]=i=>s.value=i),refs:"urlInput",type:n.subtype,class:"form-control"},t.$attrs),null,16,hn)),[[j,s.value]]):c("",!0),n.subtype=="time"?B((r(),d("input",S({key:5,ref:"timeInput","onUpdate:modelValue":e[6]||(e[6]=i=>s.value=i),type:"time",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="date"?B((r(),d("input",S({key:6,ref:"dateInput","onUpdate:modelValue":e[7]||(e[7]=i=>s.value=i),type:"date",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="month"?B((r(),d("input",S({key:7,ref:"monthInput","onUpdate:modelValue":e[8]||(e[8]=i=>s.value=i),type:"month",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="year"?B((r(),d("input",S({key:8,ref:"yearInput","onUpdate:modelValue":e[9]||(e[9]=i=>s.value=i),type:"number",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.unit?(r(),d("div",_n,[o("div",bn,b(n.unit),1)])):c("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:e[10]||(e[10]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[o("div",vn,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):c("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:e[11]||(e[11]=i=>s.modify(-1))},e[13]||(e[13]=[o("div",{class:"input-group-text"}," - ",-1)]))):c("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:e[12]||(e[12]=i=>s.modify(1))},e[14]||(e[14]=[o("div",{class:"input-group-text"}," + ",-1)]))):c("",!0)])]),l.showHelp?(r(),d("span",yn,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const kn=y(an,[["render",wn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Sn=Object.freeze(Object.defineProperty({__proto__:null,default:kn},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Bn={name:"OpenwbTextareaInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","json"].indexOf(t)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.warn("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else this.$emit("update:modelValue",t)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Cn={class:"form-row mb-1"},On={class:"col-md-8"},$n={class:"form-row"},xn={class:"input-group"},Tn={class:"input-group-prepend"},In={class:"input-group-text"},Vn={key:2,class:"input-group-append"},Mn={class:"input-group-text"},An={class:"form-text text-muted text-right"},qn={key:0,class:"form-row alert alert-info my-1 small"};function Pn(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Cn,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",On,[o("div",$n,[o("div",xn,[o("div",Tn,[o("div",In,[n.subtype=="text"?(r(),_(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):c("",!0),n.subtype=="json"?(r(),_(a,{key:1,"fixed-width":"",icon:["fas","code"]})):c("",!0)])]),n.subtype==="json"?B((r(),d("textarea",S({key:0,ref:"jsonInput","onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"form-control"},t.$attrs),null,16)),[[x,s.value,void 0,{lazy:!0}]]):B((r(),d("textarea",S({key:1,"onUpdate:modelValue":e[2]||(e[2]=i=>s.value=i),class:"form-control"},t.$attrs),null,16)),[[x,s.value]]),t.$attrs.maxlength?(r(),d("div",Vn,[o("div",Mn,[o("small",An,b(s.length)+" / "+b(t.$attrs.maxlength),1)])])):c("",!0)])]),l.showHelp?(r(),d("span",qn,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const Hn=y(Bn,[["render",Pn],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Dn=Object.freeze(Object.defineProperty({__proto__:null,default:Hn},Symbol.toStringTag,{value:"Module"}));const En={name:"OpenwbToast",props:{topic:{type:String,required:!0},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},source:{type:String,required:!0,validator:function(t){return["system","client","command"].indexOf(t)!==-1}},timestamp:{type:Number,required:!0}},emits:["dismiss","hide"],data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const t={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var e=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const u=new Date-this.timestamp*1e3;for(var l in t)if(Math.abs(u)>t[l]){this.relativeTime=e.format(Math.round(-u/t[l]),l);break}u>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}}},Ln={key:0,class:"time-diff"},jn={class:"toast-body"};function Wn(t,e,n,u,l,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[e[2]||(e[2]=o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),n.timestamp?(r(),d("small",Ln,b(l.relativeTime),1)):c("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:e[0]||(e[0]=(...a)=>s.dismiss&&s.dismiss(...a))},e[1]||(e[1]=[o("span",{"aria-hidden":"true"},"×",-1)]))],2),o("div",jn,[h(t.$slots,"default",{},void 0,!0)])],2)}const Rn=y(En,[["render",Wn],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Nn=Object.freeze(Object.defineProperty({__proto__:null,default:Rn},Symbol.toStringTag,{value:"Module"}));C.add(Ie);const Fn={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},Un={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},zn={ref:"navbarButton",class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar"},Gn={id:"collapsibleNavbar",ref:"collapsibleNavbar",class:"collapse navbar-collapse navbar-nav-scroll"},Jn={class:"navbar-nav"},Kn={class:"nav-item"},Qn={class:"nav-item dropdown nav-separator-after"},Yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Zn={class:"nav-item dropdown"},Xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},eo={class:"nav-item dropdown"},to={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},so={class:"nav-item dropdown"},no={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},oo={class:"nav-item dropdown"},ao={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},lo={class:"nav-item nav-separator-before"},io={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function ro(t,e,n,u,l,s){const a=g("router-link"),i=g("font-awesome-icon");return r(),d("nav",Un,[e[31]||(e[31]=o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),o("button",zn,e[0]||(e[0]=[o("span",{class:"navbar-toggler-icon"},null,-1)]),512),o("div",Gn,[o("ul",Jn,[o("li",Kn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>e[1]||(e[1]=[p(" Status ")])),_:1})]),o("li",Qn,[e[4]||(e[4]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),o("div",Yn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[2]||(e[2]=[p(" Ladeprotokoll ")])),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[3]||(e[3]=[p(" Diagramme ")])),_:1})])]),o("li",Zn,[e[7]||(e[7]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),o("div",Xn,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[5]||(e[5]=[p(" Allgemein ")])),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[6]||(e[6]=[p(" Optionale Hardware ")])),_:1})])]),o("li",eo,[e[13]||(e[13]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),o("div",to,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[8]||(e[8]=[p(" Übergreifendes ")])),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[9]||(e[9]=[p(" Sofortladen ")])),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[10]||(e[10]=[p(" PV-Laden ")])),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[11]||(e[11]=[p(" Zeitladen ")])),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[12]||(e[12]=[p(" Zielladen ")])),_:1})])]),o("li",so,[e[20]||(e[20]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),o("div",no,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[14]||(e[14]=[p(" Geräte und Komponenten ")])),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[15]||(e[15]=[p(" Lastmanagement ")])),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[16]||(e[16]=[p(" Ladepunkte ")])),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[17]||(e[17]=[p(" Fahrzeuge ")])),_:1}),e[18]||(e[18]=o("div",{class:"dropdown-divider"},null,-1)),e[19]||(e[19]=o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1))])]),o("li",oo,[e[29]||(e[29]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),o("div",ao,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[21]||(e[21]=[p(" Einrichtungsassistent ")])),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[22]||(e[22]=[p(" openWB Cloud ")])),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[23]||(e[23]=[p(" MQTT-Brücken ")])),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[24]||(e[24]=[p(" Fehlersuche ")])),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[25]||(e[25]=[p(" Support ")])),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[26]||(e[26]=[p(" Datenverwaltung ")])),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[27]||(e[27]=[p(" System ")])),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[28]||(e[28]=[p(" Rechtliches ")])),_:1})])]),o("li",lo,[o("a",io,[e[30]||(e[30]=p(" Wiki ")),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const uo=y(Fn,[["render",ro],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const co={name:"OpenwbPageFooter"},po={id:"footer",class:"footer bg-dark text-light font-small"},mo={class:"container text-center"};function fo(t,e,n,u,l,s){return r(),d("footer",po,[o("div",mo,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(t.$route.meta.heading),1)])])}const go=y(co,[["render",fo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);C.add(Ve);const ho={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},_o={class:"mt-3 alert alert-dark text-center"},bo={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},vo={type:"submit",class:"btn btn-primary"};function yo(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",_o,[e[3]||(e[3]=p(" Open Source made with love!")),e[4]||(e[4]=o("br",null,null,-1)),e[5]||(e[5]=p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben")),e[6]||(e[6]=o("br",null,null,-1)),o("form",bo,[e[1]||(e[1]=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1)),e[2]||(e[2]=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1)),o("button",vo,[e[0]||(e[0]=p(" Spenden ")),m(a,{icon:["fab","paypal"]})])])])}const wo=y(ho,[["render",yo],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),ko={name:"ComponentState",emits:["reset","defaults","save"],data(){return{mqttTopicsToSubscribe:[]}},computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)},methods:{updateState(t,e,n=void 0){console.debug("updateState:",t,e,n),this.$store.commit({type:"updateTopic",topic:t,objectPath:n,payload:e})},ac_current2dc_power(t){return parseFloat((t*3*230/1e3).toFixed(2))},dc_power2ac_current(t){return parseFloat((t*1e3/230/3).toFixed(2))},getWildcardIndexList(t,e=!1){let n=t;e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let u=Object.keys(this.$store.state.mqtt).filter(l=>l.match(n));return u.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),u},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(u=>u.match(n)).reduce((u,l)=>({...u,[l]:this.$store.state.mqtt[l]}),{})},formatDate(t,e={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(t).toLocaleDateString(void 0,e)},formatNumber(t,e=0,n=e,u=1){if(!(t==null||isNaN(t)))return(t*u).toLocaleString(void 0,{minimumFractionDigits:e,maximumFractionDigits:n})},formatNumberTopic(t,e=0,n=e,u=1){return this.$store.state.mqtt[t]?this.formatNumber(this.$store.state.mqtt[t],e,n,u):"-"},formatPhaseArrayNumberTopic(t,e=0,n=e,u=1){return this.$store.state.mqtt[t]?this.$store.state.mqtt[t].map(l=>this.formatNumber(l,e,n,u)).join(" / "):"- / - / -"},translateChargeMode(t){switch(t){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",t),t}}}},N=y(ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);C.add(Me,Ae);const So={name:"OpenwbPageMessages",components:{FontAwesomeIcon:O,FontAwesomeLayers:qe,FontAwesomeLayersText:Pe},mixins:[N],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((e,n)=>((e=="light"&&["info","success","warning","danger"].includes(n.type)||e=="info"&&["success","warning","danger"].includes(n.type)||e=="success"&&["warning","danger"].includes(n.type)||e=="warning"&&n.type=="danger")&&(e=n.type),e),"light")},messages(){const t=[];return this.systemMessages.forEach(e=>{t.push(e)}),this.clientMessages.forEach(e=>{t.push(e)}),t.sort(this.compareMessagesByTimestamp),t},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(t=>!this.hiddenMessages.includes(t.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let t=this.getWildcardTopics("openWB/system/messages/+");var e=[];for(const[n,u]of Object.entries(t))e.push({topic:n,...u});return e},clientMessages(){let t=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var e=[];for(const[n,u]of Object.entries(t))e.push({topic:n,...u});return e}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(t,e){return e.timestamp-t.timestamp},clearTopic(t){this.$root.doPublish(t,void 0)},dismissMessage(t){this.clearTopic(t.topic);var e=this.hiddenMessages.indexOf(t.topic);e>-1&&this.hiddenMessages.splice(e,1)},dismissAllMessages(){this.messages.forEach(t=>{this.clearTopic(t.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(t){this.hiddenMessages.includes(t.topic)||this.hiddenMessages.push(t.topic)}}},Bo=["innerHTML"];function Co(t,e,n,u,l,s){const a=g("font-awesome-icon"),i=g("font-awesome-layers-text"),v=g("font-awesome-layers"),$=g("openwb-base-alert"),M=g("openwb-base-click-button"),A=g("openwb-base-toast");return r(),d(T,null,[(r(),_(R,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",l.showAllMessages?"active":""]),onClick:e[0]||(e[0]=(...q)=>s.toggleAllMessages&&s.toggleAllMessages(...q))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:f(()=>[m(a,{"fixed-width":"",icon:l.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),_(i,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):c("",!0)]),_:1})],2)])),s.recentMessages.length>0||l.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",l.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),_($,{key:0,subtype:"info"},{default:f(()=>e[1]||(e[1]=[p(" Keine Nachrichten vorhanden. ")])),_:1})):l.showAllMessages?(r(),_(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:f(()=>e[2]||(e[2]=[p(" Alle Nachrichten löschen ")])),_:1},8,["onButtonClicked"])):c("",!0),(r(!0),d(T,null,P(s.recentMessages,q=>(r(),_(A,{key:q.topic,topic:q.topic,source:q.source,subtype:q.type,timestamp:q.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:f(()=>[o("span",{innerHTML:q.message},null,8,Bo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):c("",!0)],64)}const Oo=y(So,[["render",Co],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),$o={name:"OpenwbPageBlocker",mixins:[N],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(t){t=="reload"?location.reload():console.warn("unknown event",t)}}},xo={class:"openwb-blocker"},To={key:0},Io={key:1},Vo={key:2},Mo={key:3};function Ao(t,e,n,u,l,s){const a=g("openwb-base-modal-dialog");return r(),d("div",xo,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark","prevent-close":!0,buttons:s.myButtons,onModalResult:e[0]||(e[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",To," Der Systemstart ist noch nicht abgeschlossen. ")):c("",!0),s.updateInProgress?(r(),d("p",Io," Es wird eine Systemaktualisierung ausgeführt. ")):c("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",Vo," Bitte die Seite neu laden. ")):(r(),d("p",Mo," Bitte warten... "))]),_:1},8,["show","title","buttons"])])}const qo=y($o,[["render",Ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const Po={name:"OpenwbSettingsApp",components:{NavBar:uo,PageFooter:go,DonationBanner:wo,Messages:Oo,Blocker:qo},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch(t){console.error("mqttClientId error",t);return}},topicList(){return Object.keys(this.$store.state.mqtt)}},created(){this.createConnection()},methods:{async saveValues(t=void 0){function e(u){return new Promise(l=>setTimeout(l,u))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};t===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(t)?t.forEach(u=>{n[u]=this.$store.state.mqtt[u]}):console.error("expected array, got ",typeof t);for(const[u,l]of Object.entries(n)){let s=u.replace("openWB/","openWB/set/");console.debug("saving data:",s,l),this.doPublish(s,l),await e(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(t=this.topicList){console.debug("resetting values..."),console.debug("topics: ",t),this.doUnsubscribe(t),this.doSubscribe(t)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(t){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",t,!1)},createConnection(){const{protocol:t,host:e,port:n,endpoint:u,...l}=this.connection,s=`${t}://${e}:${n}${u}`;console.debug("connecting to broker:",s);try{this.client=Z.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let v;try{v=JSON.parse(i.toString())}catch($){console.debug("Json parsing failed, fallback to string: ",a,$),v=i.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(t){console.debug("doSubscribe",t),t.forEach(e=>{this.$store.commit("addSubscription",e),this.$store.getters.subscriptionCount(e)==1?(e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.$store.commit("addTopic",{topic:e,payload:void 0}),this.client.subscribe(e,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",e)})},doUnsubscribe(t){console.debug("doUnsubscribe",t),t.forEach(e=>{this.$store.commit("removeSubscription",e),this.$store.getters.subscriptionCount(e)==0?(this.client.unsubscribe(e,n=>{n&&console.error("Unsubscribe error",n)}),e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",e),this.$store.commit("removeTopic",e))):console.debug("Still subscribed to topic: ",e)})},doPublish(t,e,n=!0,u=2){let l={qos:u,retain:n};this.client.publish(t,JSON.stringify(e),l,s=>{s&&console.error("Publish error",s)})},postClientMessage(t,e="secondary"){console.debug("postMessage:",t,e);const n=Date.now(),u="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:u,payload:{message:t,type:e,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(u=>u.match(n)).reduce((u,l)=>({...u,[l]:this.$store.state.mqtt[l]}),{})}}},Ho={role:"main",class:"container"},Do={id:"content"};function Eo(t,e,n,u,l,s){const a=g("nav-bar"),i=g("router-view"),v=g("donation-banner"),$=g("page-footer"),M=g("messages"),A=g("blocker");return r(),d(T,null,[o("header",null,[m(a)]),o("div",Ho,[o("div",Do,[o("h1",null,b(t.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(A)],64)}const Lo=y(Po,[["render",Eo],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),jo="modulepreload",Wo=function(t){return"/openWB/web/settings/"+t},W={},w=function(e,n,u){if(!n||n.length===0)return e();const l=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=Wo(s),s in W)return;W[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!u)for(let M=l.length-1;M>=0;M--){const A=l[M];if(A.href===s&&(!a||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":jo,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,A)=>{$.addEventListener("load",M),$.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};F.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const H=X({state:F,mutations:{storeLocal(t,e){t.local[e.name]=e.value},addTopic(t,e){Object.keys(t.mqtt).includes(e.topic)?console.warn("topic already exists: ",e.topic):t.mqtt[e.topic]=e.payload},removeTopic(t,e){delete t.mqtt[e]},updateTopic(t,e){const n=(u,l,s)=>l.split(".").reduce((a,i,v)=>a[i]=l.split(".").length===++v?s:a[i]||{},u);e.topic in t.mqtt||!(e.topic in t.examples)?e.objectPath!=null?n(t.mqtt[e.topic],e.objectPath,e.payload):t.mqtt[e.topic]=e.payload:(console.debug("topic not found in state.mqtt: ",e.topic),e.topic in t.examples?e.objectPath!=null?n(t.examples[e.topic],e.objectPath,e.payload):t.examples[e.topic]=e.payload:console.warn("topic not found in state: ",e.topic," giving up"))},addSubscription(t,e){e in t.mqttSubscriptions?t.mqttSubscriptions[e]+=1:t.mqttSubscriptions[e]=1,console.debug("subscription count: ",e,t.mqttSubscriptions[e])},removeSubscription(t,e){e in t.mqttSubscriptions&&(t.mqttSubscriptions[e]-=1,t.mqttSubscriptions[e]<=0&&delete t.mqttSubscriptions[e])}},actions:{},modules:{},getters:{usageTermsAcknowledged(t){return new Promise(e=>{if(t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)e(t.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,u;n=setTimeout(()=>{clearInterval(u),e(!1)},5e3),u=setInterval(()=>{t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(u),e(t.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(t){return new Promise(e=>{if(t.mqtt["openWB/system/installAssistantDone"]!==void 0)e(t.mqtt["openWB/system/installAssistantDone"]);else{var n,u;n=setTimeout(()=>{clearInterval(u),e(!1)},5e3),u=setInterval(()=>{t.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(u),e(t.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:t=>e=>t.mqttSubscriptions[e]||0}}),U=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>w(()=>import("./Status-425f485b.js"),["assets/Status-425f485b.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-5fa56b74.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>w(()=>import("./ChargeLog-9836d756.js"),["assets/ChargeLog-9836d756.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>w(()=>import("./Chart-eb294839.js"),["assets/Chart-eb294839.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-5fa56b74.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>w(()=>import("./GeneralConfig-2f07ba45.js").then(t=>t.a),["assets/GeneralConfig-2f07ba45.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>w(()=>import("./OptionalComponents-be1b1295.js").then(t=>t.O),["assets/OptionalComponents-be1b1295.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>w(()=>import("./GeneralChargeConfig-a5add01a.js").then(t=>t.G),["assets/GeneralChargeConfig-a5add01a.js","assets/dynamic-import-helper-be004503.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>w(()=>import("./InstantChargeConfig-d3719370.js"),["assets/InstantChargeConfig-d3719370.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>w(()=>import("./PVChargeConfig-f08197ff.js"),["assets/PVChargeConfig-f08197ff.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>w(()=>import("./TimeChargeConfig-7cd7d455.js"),["assets/TimeChargeConfig-7cd7d455.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>w(()=>import("./ScheduledChargeConfig-6d89b998.js"),["assets/ScheduledChargeConfig-6d89b998.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>w(()=>import("./HardwareInstallation-6cc98da9.js").then(t=>t.a),["assets/HardwareInstallation-6cc98da9.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>w(()=>import("./LoadManagementConfig-87715007.js"),["assets/LoadManagementConfig-87715007.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>w(()=>import("./ChargePointInstallation-12a5c989.js").then(t=>t.c),["assets/ChargePointInstallation-12a5c989.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>w(()=>import("./VehicleConfig-0ab604e8.js").then(t=>t.b),["assets/VehicleConfig-0ab604e8.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>w(()=>import("./CloudConfig-d834b2a3.js"),["assets/CloudConfig-d834b2a3.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>w(()=>import("./MqttBridgeConfig-a467e292.js"),["assets/MqttBridgeConfig-a467e292.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>w(()=>import("./DebugConfig-0ce8b81e.js"),["assets/DebugConfig-0ce8b81e.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>w(()=>import("./Support-9ecadb2d.js"),["assets/Support-9ecadb2d.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>w(()=>import("./LegalSettings-b9806df1.js"),["assets/LegalSettings-b9806df1.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>w(()=>import("./System-8e218ae4.js"),["assets/System-8e218ae4.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>w(()=>import("./DataManagement-ad71d105.js").then(t=>t.a),["assets/DataManagement-ad71d105.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>w(()=>import("./InstallAssistant-c6a6444f.js"),["assets/InstallAssistant-c6a6444f.js","assets/dynamic-import-helper-be004503.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])}];U.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>w(()=>import("./TestingStore-ffe2c569.js"),["assets/TestingStore-ffe2c569.js","assets/OpenwbSortableList-3ce7f991.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])});const E=ee({history:te(),routes:U});E.beforeEach(async t=>{if(await H.getters.usageTermsAcknowledged){if(!await H.getters.installAssistantDone&&t.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(t.name!=="LegalSettings")return{name:"LegalSettings"}});E.afterEach(t=>{t.meta.heading?document.title="openWB | "+t.meta.heading:document.title="openWB"});const L=se(Lo);L.use(H).use(E).use(He,De);const Ro=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":lt,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Bt,"./components/OpenwbBaseCard.vue":qt,"./components/OpenwbBaseCheckboxInput.vue":Rt,"./components/OpenwbBaseClickButton.vue":zt,"./components/OpenwbBaseCopyToClipboard.vue":Yt,"./components/OpenwbBaseHeading.vue":os,"./components/OpenwbBaseModalDialog.vue":ms,"./components/OpenwbBaseNumberInput.vue":Os,"./components/OpenwbBaseRangeInput.vue":Es,"./components/OpenwbBaseSelectInput.vue":Qs,"./components/OpenwbBaseSubmitButtons.vue":on,"./components/OpenwbBaseTextInput.vue":Sn,"./components/OpenwbBaseTextarea.vue":Dn,"./components/OpenwbBaseToast.vue":Nn});Object.entries(Ro).forEach(([t,e])=>{const n=ne(oe(t.split("/").pop().replace(/\.\w+$/,"")));L.component(n,e.default)});L.mount("#app");export{N as C,w as _};
diff --git a/web/settings/assets/inverter-00707516.js b/web/settings/assets/inverter-00707516.js
new file mode 100644
index 0000000000..b4cc74a339
--- /dev/null
+++ b/web/settings/assets/inverter-00707516.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as n,k as p,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[a]},_={class:"device-huawei-smart-logger-inverter"};function g(o,e,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-0372b463.js b/web/settings/assets/inverter-0372b463.js
new file mode 100644
index 0000000000..6167312794
--- /dev/null
+++ b/web/settings/assets/inverter-0372b463.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(o,e,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return d(),m("div",_,[t(r,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Wechselrichter ")])),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-0fe312b3.js b/web/settings/assets/inverter-0fe312b3.js
new file mode 100644
index 0000000000..0acb988541
--- /dev/null
+++ b/web/settings/assets/inverter-0fe312b3.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as o,k as u,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function c(n,e,b,f,v,y){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{M as default};
diff --git a/web/settings/assets/inverter-1528dc9b.js b/web/settings/assets/inverter-1528dc9b.js
deleted file mode 100644
index cf88b52c6e..0000000000
--- a/web/settings/assets/inverter-1528dc9b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as i,k as m,l as _,D as t,N as o,y as n,x as e,z as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceMqttInverter",mixins:[c]},h={class:"device-mqtt-inverter"},b=e("br",null,null,-1),f=e("span",{class:"text-info"},"-123",-1),g=e("br",null,null,-1),v=e("br",null,null,-1),w=e("span",{class:"text-info"},"123.45",-1);function x(s,z,B,k,y,W){const a=i("openwb-base-heading"),r=i("openwb-base-copy-to-clipboard"),p=i("openwb-base-alert");return m(),_("div",h,[t(a,null,{default:o(()=>[n(" Einstellungen für MQTT Wechselrichter ")]),_:1}),t(p,{subtype:"info"},{default:o(()=>[n(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: "),e("ul",null,[e("li",null,[t(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+l(s.component.id)+"/get/power",1)]),_:1}),b,n(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: "),f]),e("li",null,[t(r,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[n("openWB/set/pv/"+l(s.component.id)+"/get/exported",1)]),_:1}),g,n(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv"),v,n(" Beispiel: "),w])])]),_:1})])}const q=d(u,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{q as default};
diff --git a/web/settings/assets/inverter-1b5f20c2.js b/web/settings/assets/inverter-1b5f20c2.js
deleted file mode 100644
index 75f3b2efd9..0000000000
--- a/web/settings/assets/inverter-1b5f20c2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[a]},_={class:"device-solis-inverter"};function b(e,o,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>[d(" Einstellungen für Solis Wechselrichter ")]),_:1}),t(s,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-22aad90d.js b/web/settings/assets/inverter-22aad90d.js
new file mode 100644
index 0000000000..0b31f4006d
--- /dev/null
+++ b/web/settings/assets/inverter-22aad90d.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as n,k as p,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[a]},_={class:"device-solarmax-inverter"};function b(o,e,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solarmax Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-2671797a.js b/web/settings/assets/inverter-2671797a.js
deleted file mode 100644
index 00fdf138fe..0000000000
--- a/web/settings/assets/inverter-2671797a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as s,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[a]},_={class:"device-victron-inverter"};function f(e,o,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>[c(" Einstellungen für Victron Wechselrichter ")]),_:1}),i(p,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":e.component.configuration.mppt,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const E=s(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-3661665d.js b/web/settings/assets/inverter-3661665d.js
new file mode 100644
index 0000000000..cc54268003
--- /dev/null
+++ b/web/settings/assets/inverter-3661665d.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as o,k as l,l as m,D as n,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),m("div",v,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB PV-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-3a770b71.js b/web/settings/assets/inverter-3a770b71.js
new file mode 100644
index 0000000000..880c6e7f9c
--- /dev/null
+++ b/web/settings/assets/inverter-3a770b71.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as t,k as m,l as c,D as r,N as i,y as n,x as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[u]},b={class:"device-powerfox-inverter"};function g(o,e,v,w,x,_){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Wechselrichter ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-3c18bfc8.js b/web/settings/assets/inverter-3c18bfc8.js
new file mode 100644
index 0000000000..349da7d9e3
--- /dev/null
+++ b/web/settings/assets/inverter-3c18bfc8.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as o,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-3d8e5c7f.js b/web/settings/assets/inverter-3d8e5c7f.js
deleted file mode 100644
index 0786f30470..0000000000
--- a/web/settings/assets/inverter-3d8e5c7f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as l,l as m,D as r,N as i,y as e,x as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[c]},_={class:"device-powerfox-inverter"},h=s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),b=s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1);function g(n,o,v,w,x,D){const a=t("openwb-base-heading"),d=t("openwb-base-text-input");return l(),m("div",_,[r(a,null,{default:i(()=>[e(" Einstellungen für Powerfox Wechselrichter ")]),_:1}),r(d,{title:"ID",required:"","model-value":n.component.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=p=>n.updateConfiguration(p,"configuration.id"))},{help:i(()=>[e(" Um die ID herauszufinden mit dem Browser die Adresse "),h,e(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),b,e(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")]),_:1},8,["model-value"])])}const A=u(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{A as default};
diff --git a/web/settings/assets/inverter-3f3aa74b.js b/web/settings/assets/inverter-3f3aa74b.js
new file mode 100644
index 0000000000..9cc8bd0983
--- /dev/null
+++ b/web/settings/assets/inverter-3f3aa74b.js
@@ -0,0 +1 @@
+import{C as l}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as d,l as c,D as o,N as r,y as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[l]},f={class:"device-smahm-inverter"};function b(t,e,v,g,h,w){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),m=n("openwb-base-number-input");return d(),c("div",f,[o(s,null,{default:r(()=>e[1]||(e[1]=[i(" Einstellungen für SMA-HM/EM Wechselrichter ")])),_:1}),o(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')])),_:1}),o(m,{title:"Seriennummer",required:"","model-value":t.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-4130514e.js b/web/settings/assets/inverter-4130514e.js
deleted file mode 100644
index d81b58aa37..0000000000
--- a/web/settings/assets/inverter-4130514e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as o,k as u,l as c,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function g(e,n,b,f,v,y){const s=o("openwb-base-heading"),a=o("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>[r(" Einstellungen für Sigenergy Wechselrichter ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[0]||(n[0]=p=>e.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")]),_:1},8,["model-value"])])}const I=d(l,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-521e60bd.js b/web/settings/assets/inverter-521e60bd.js
new file mode 100644
index 0000000000..469939b77e
--- /dev/null
+++ b/web/settings/assets/inverter-521e60bd.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as u,l as m,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[s]},b={class:"device-openwb-flex-inverter"};function f(o,e,_,w,x,g){const r=t("openwb-base-heading"),l=t("openwb-base-select-input"),p=t("openwb-base-number-input");return u(),m("div",b,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für openWB-Flex Wechselrichter ")])),_:1}),i(l,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const S=a(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-61827c16.js b/web/settings/assets/inverter-61827c16.js
deleted file mode 100644
index 4895e935b9..0000000000
--- a/web/settings/assets/inverter-61827c16.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as a,u as o,k as l,l as u,D as n,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(e,t,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:c(()=>[m(" Einstellungen für openWB EVU-Kit Wechselrichter ")]),_:1}),n(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":t[0]||(t[0]=s=>e.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-6217c8a3.js b/web/settings/assets/inverter-6217c8a3.js
deleted file mode 100644
index 4087958a36..0000000000
--- a/web/settings/assets/inverter-6217c8a3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as l,k as m,l as c,D as r,N as o,y as e,x as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},g={class:"device-http-inverter"},_=a("br",null,null,-1),b=a("br",null,null,-1),v=a("br",null,null,-1);function f(n,t,w,z,x,k){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),c("div",g,[r(d,null,{default:o(()=>[e(" Einstellungen für Http Wechselrichter ")]),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":n.component.configuration.power_path,"onUpdate:modelValue":t[0]||(t[0]=i=>n.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),_,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")]),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":n.component.configuration.exported_path,"onUpdate:modelValue":t[1]||(t[1]=i=>n.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>[e(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),b,e(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),v,e(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")]),_:1},8,["model-value"])])}const B=u(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-62aebfd4.js b/web/settings/assets/inverter-62aebfd4.js
new file mode 100644
index 0000000000..7e9bab9892
--- /dev/null
+++ b/web/settings/assets/inverter-62aebfd4.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as p,l,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[u]},d={class:"device-youless-inverter"};function f(o,e,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Youless LS120 Wechselrichter ")])),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":o.component.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-668ceedf.js b/web/settings/assets/inverter-668ceedf.js
new file mode 100644
index 0000000000..ab5d93a02c
--- /dev/null
+++ b/web/settings/assets/inverter-668ceedf.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as r,k as m,l as g,D as o,N as l,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function c(n,e,v,b,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[o(a,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für VZLogger Wechselrichter ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const k=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-6d12a3f1.js b/web/settings/assets/inverter-6d12a3f1.js
deleted file mode 100644
index f6a1a55ef1..0000000000
--- a/web/settings/assets/inverter-6d12a3f1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as l}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as t,k as b,l as c,D as r,N as i,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyInverter",mixins:[l]},v={class:"device-sunnyboy-inverter"};function f(e,n,g,y,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),c("div",v,[r(s,null,{default:i(()=>[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")]),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":e.component.configuration.hybrid,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")]),_:1},8,["model-value"]),r(d,{title:"Version",notSelected:"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")]),_:1},8,["model-value"])])}const I=m(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-6f930abf.js b/web/settings/assets/inverter-6f930abf.js
new file mode 100644
index 0000000000..43c5e581f3
--- /dev/null
+++ b/web/settings/assets/inverter-6f930abf.js
@@ -0,0 +1 @@
+import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as o,k as l,l as u,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(t,e,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),u("div",_,[n(a,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")])),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":t.component.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const B=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-79d423ad.js b/web/settings/assets/inverter-79d423ad.js
deleted file mode 100644
index 798faab596..0000000000
--- a/web/settings/assets/inverter-79d423ad.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as o,k as d,l as u,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(e,n,v,b,h,g){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return d(),u("div",_,[t(s,null,{default:i(()=>[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")]),_:1}),t(p,{title:"EID",required:"","model-value":e.component.configuration.eid,"onUpdate:modelValue":n[0]||(n[0]=a=>e.updateConfiguration(a,"configuration.eid"))},{help:i(()=>[r(' EID für "production" ')]),_:1},8,["model-value"])])}const B=c(l,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-7c07833e.js b/web/settings/assets/inverter-7c07833e.js
new file mode 100644
index 0000000000..73a5945752
--- /dev/null
+++ b/web/settings/assets/inverter-7c07833e.js
@@ -0,0 +1 @@
+import{C as l}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as b,l as v,D as r,N as i,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSunnyBoyInverter",mixins:[l]},_={class:"device-sunnyboy-inverter"};function g(n,e,y,c,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),v("div",_,[r(s,null,{default:i(()=>e[3]||(e[3]=[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")])),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":n.component.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>e[4]||(e[4]=[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")])),_:1},8,["model-value"]),r(d,{title:"Version","not-selected":"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>e[5]||(e[5]=[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")])),_:1},8,["model-value"])])}const I=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-80adcee2.js b/web/settings/assets/inverter-80adcee2.js
deleted file mode 100644
index 6e690bfc45..0000000000
--- a/web/settings/assets/inverter-80adcee2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(e,o,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return d(),m("div",_,[t(r,null,{default:l(()=>[u(" Einstellungen für SolarEdge Wechselrichter ")]),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-832fb3b7.js b/web/settings/assets/inverter-832fb3b7.js
new file mode 100644
index 0000000000..53a32537dc
--- /dev/null
+++ b/web/settings/assets/inverter-832fb3b7.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as l,k as m,l as g,D as r,N as o,y as n,x as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},c={class:"device-http-inverter"};function b(t,e,v,f,w,_){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),g("div",c,[r(d,null,{default:o(()=>e[2]||(e[2]=[n(" Einstellungen für Http Wechselrichter ")])),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>e[3]||(e[3]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>e[4]||(e[4]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),a("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"])])}const S=u(h,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-89ab9892.js b/web/settings/assets/inverter-89ab9892.js
deleted file mode 100644
index dcb0218012..0000000000
--- a/web/settings/assets/inverter-89ab9892.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as o,k as p,l as c,D as n,N as l,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(e,t,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),c("div",_,[n(r,null,{default:l(()=>[d(" Einstellungen für smart-me Wechselrichter ")]),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":e.component.configuration.id,"onUpdate:modelValue":t[0]||(t[0]=s=>e.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-90d5660d.js b/web/settings/assets/inverter-90d5660d.js
new file mode 100644
index 0000000000..6fc2f34031
--- /dev/null
+++ b/web/settings/assets/inverter-90d5660d.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[p]},c={class:"device-fox_ess-inverter"};function f(o,e,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-93d278b2.js b/web/settings/assets/inverter-93d278b2.js
deleted file mode 100644
index 36a2b737ed..0000000000
--- a/web/settings/assets/inverter-93d278b2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as r}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as o,k as l,l as c,D as n,N as u,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(e,t,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),c("div",_,[n(a,null,{default:u(()=>[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")]),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":e.component.configuration.variant_steca,"onUpdate:modelValue":t[0]||(t[0]=s=>e.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const B=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-94706045.js b/web/settings/assets/inverter-94706045.js
deleted file mode 100644
index 5002ed9a8a..0000000000
--- a/web/settings/assets/inverter-94706045.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as p,l,D as n,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[a]},d={class:"device-youless-inverter"};function f(e,o,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:c(()=>[m(" Einstellungen für Youless LS120 Wechselrichter ")]),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":e.component.configuration.source_s0,"onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=u(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-97406357.js b/web/settings/assets/inverter-97406357.js
deleted file mode 100644
index 9b84206b3e..0000000000
--- a/web/settings/assets/inverter-97406357.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as e,k as u,l as d,D as n,N as r,y as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[c]},f={class:"device-smahm-inverter"};function b(o,t,h,v,g,w){const s=e("openwb-base-heading"),a=e("openwb-base-alert"),m=e("openwb-base-number-input");return u(),d("div",f,[n(s,null,{default:r(()=>[i(" Einstellungen für SMA-HM/EM Wechselrichter ")]),_:1}),n(a,{subtype:"info"},{default:r(()=>[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')]),_:1}),n(m,{title:"Seriennummer",required:"","model-value":o.component.configuration.serials,"onUpdate:modelValue":t[0]||(t[0]=p=>o.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-a005080e.js b/web/settings/assets/inverter-a005080e.js
deleted file mode 100644
index 004c21852f..0000000000
--- a/web/settings/assets/inverter-a005080e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as n,k as m,l as c,D as r,N as i,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(e,t,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>[a(" Einstellungen für Studer Wechselrichter ")]),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":e.component.configuration.vc_type,required:"","onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":e.component.configuration.vc_count,"onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")]),_:1},8,["model-value"])])}const $=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-a77daa25.js b/web/settings/assets/inverter-a77daa25.js
new file mode 100644
index 0000000000..95f25b01df
--- /dev/null
+++ b/web/settings/assets/inverter-a77daa25.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as o,k as p,l,D as n,N as d,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(t,e,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),l("div",_,[n(r,null,{default:d(()=>e[1]||(e[1]=[u(" Einstellungen für smart-me Wechselrichter ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":t.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-a9cee12b.js b/web/settings/assets/inverter-a9cee12b.js
deleted file mode 100644
index 907a75911a..0000000000
--- a/web/settings/assets/inverter-a9cee12b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as u}from"./HardwareInstallation-a0083e3a.js";import{_ as d,u as r,k as m,l as g,D as o,N as l,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function f(e,n,v,b,w,h){const s=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[o(s,null,{default:l(()=>[a(" Einstellungen für VZLogger Wechselrichter ")]),_:1}),o(p,{subtype:"info"},{default:l(()=>[a(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')]),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":e.component.configuration.line_power,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":e.component.configuration.line_exported,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const k=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-ab8a80e4.js b/web/settings/assets/inverter-ab8a80e4.js
new file mode 100644
index 0000000000..28062fdfee
--- /dev/null
+++ b/web/settings/assets/inverter-ab8a80e4.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[p]},_={class:"device-solis-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Wechselrichter ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-b0ea296b.js b/web/settings/assets/inverter-b0ea296b.js
deleted file mode 100644
index 665cfa0dc2..0000000000
--- a/web/settings/assets/inverter-b0ea296b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as t,k as u,l,D as n,N as c,y as m}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[s]},_={class:"device-kostal-piko-inverter"};function f(e,o,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:c(()=>[m(" Einstellungen für Kostal Piko Wechselrichter ")]),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":e.component.configuration.bat_configured,"onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.bat_configured"))},null,8,["model-value"])])}const E=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-b47b017e.js b/web/settings/assets/inverter-b47b017e.js
deleted file mode 100644
index a8d640cbbc..0000000000
--- a/web/settings/assets/inverter-b47b017e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as m}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as n,k as d,l as u,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[m]},_={class:"device-mtec-inverter"};function b(e,o,f,v,g,h){const s=n("openwb-base-heading"),a=n("openwb-base-number-input");return d(),u("div",_,[t(s,null,{default:i(()=>[r(" Einstellungen für M-Tec Wechselrichter ")]),_:1}),t(a,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=p=>e.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")]),_:1},8,["model-value"])])}const I=c(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-b4941105.js b/web/settings/assets/inverter-b4941105.js
new file mode 100644
index 0000000000..e5c48e4cee
--- /dev/null
+++ b/web/settings/assets/inverter-b4941105.js
@@ -0,0 +1 @@
+import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as o,k as u,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(n,e,v,b,g,h){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")])),_:1}),t(p,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[r(' EID für "production" ')])),_:1},8,["model-value"])])}const B=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-bb47d837.js b/web/settings/assets/inverter-bb47d837.js
deleted file mode 100644
index ac61512df7..0000000000
--- a/web/settings/assets/inverter-bb47d837.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as n,k as p,l as u,D as t,N as d,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[s]},_={class:"device-huawei-smart-logger-inverter"};function g(e,o,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-beac0910.js b/web/settings/assets/inverter-beac0910.js
deleted file mode 100644
index 5fe429932f..0000000000
--- a/web/settings/assets/inverter-beac0910.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[a]},l={class:"device-fox_ess-inverter"};function f(e,o,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",l,[t(s,null,{default:d(()=>[c(" Einstellungen für FoxEss Wechselrichter ")]),_:1}),t(i,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=r=>e.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-c319320b.js b/web/settings/assets/inverter-c319320b.js
new file mode 100644
index 0000000000..43214f2468
--- /dev/null
+++ b/web/settings/assets/inverter-c319320b.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as n,k as u,l as c,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[a]},_={class:"device-mtec-inverter"};function b(o,e,f,v,g,w){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für M-Tec Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const N=d(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-c861a20b.js b/web/settings/assets/inverter-c861a20b.js
deleted file mode 100644
index 29b6cf6214..0000000000
--- a/web/settings/assets/inverter-c861a20b.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[p]},_={class:"device-openwb-flex-inverter"};function b(e,o,f,w,x,g){const r=t("openwb-base-heading"),a=t("openwb-base-select-input"),l=t("openwb-base-number-input");return u(),m("div",_,[i(r,null,{default:d(()=>[c(" Einstellungen für openWB-Flex Wechselrichter ")]),_:1}),i(a,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(l,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":e.component.configuration.id,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const N=s(v,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-cf814a97.js b/web/settings/assets/inverter-cf814a97.js
new file mode 100644
index 0000000000..d873daf5f1
--- /dev/null
+++ b/web/settings/assets/inverter-cf814a97.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as r,k as u,l as c,D as n,N as i,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceDiscovergyInverter",mixins:[d]},f={class:"device-discovergy-inverter"};function g(t,e,_,b,w,x){const s=r("openwb-base-heading"),a=r("openwb-base-text-input");return u(),c("div",f,[n(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Wechselrichter ")])),_:1}),n(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const $=m(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-d090560a.js b/web/settings/assets/inverter-d090560a.js
new file mode 100644
index 0000000000..2af929dc62
--- /dev/null
+++ b/web/settings/assets/inverter-d090560a.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as n,k as d,l as c,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSolarViewInverter",mixins:[p]},_={class:"device-solar-view-inverter"};function f(o,e,v,g,w,b){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return d(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für SolarView Wechselrichter ")])),_:1}),t(a,{title:"Kommando für die Abfrage",required:"","model-value":o.component.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.command"))},{help:i(()=>e[2]||(e[2]=[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")])),_:1},8,["model-value"])])}const N=l(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-d1ef1a1b.js b/web/settings/assets/inverter-d1ef1a1b.js
new file mode 100644
index 0000000000..572dbda477
--- /dev/null
+++ b/web/settings/assets/inverter-d1ef1a1b.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as n,k as m,l as c,D as r,N as i,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(t,e,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>e[2]||(e[2]=[a(" Einstellungen für Studer Wechselrichter ")])),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":t.component.configuration.vc_type,required:"","onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":t.component.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>e[3]||(e[3]=[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")])),_:1},8,["model-value"])])}const B=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-d5bf52e5.js b/web/settings/assets/inverter-d5bf52e5.js
deleted file mode 100644
index 93ad01e05e..0000000000
--- a/web/settings/assets/inverter-d5bf52e5.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as a,u as o,k as l,l as c,D as n,N as m,y as u}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(e,t,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),c("div",v,[n(i,null,{default:m(()=>[u(" Einstellungen für openWB PV-Kit Wechselrichter ")]),_:1}),n(r,{title:"Zählermodell",notSelected:"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":e.component.configuration.version,required:"","onUpdate:modelValue":t[0]||(t[0]=s=>e.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-d79a2e57.js b/web/settings/assets/inverter-d79a2e57.js
new file mode 100644
index 0000000000..8998e81d00
--- /dev/null
+++ b/web/settings/assets/inverter-d79a2e57.js
@@ -0,0 +1 @@
+import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l as d,D as t,N as u,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeInverter",mixins:[p]},_={class:"device-deye-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const V=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-ec40e2ac.js b/web/settings/assets/inverter-ec40e2ac.js
deleted file mode 100644
index 1fcc5d7f5c..0000000000
--- a/web/settings/assets/inverter-ec40e2ac.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as s}from"./HardwareInstallation-a0083e3a.js";import{_ as m,u as n,k as p,l,D as t,N as u,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[s]},_={class:"device-solarmax-inverter"};function b(e,o,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>[d(" Einstellungen für Solarmax Wechselrichter ")]),_:1}),t(i,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=a=>e.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-eee7c6e5.js b/web/settings/assets/inverter-eee7c6e5.js
new file mode 100644
index 0000000000..9c2276dd82
--- /dev/null
+++ b/web/settings/assets/inverter-eee7c6e5.js
@@ -0,0 +1 @@
+import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as u,l,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[a]},_={class:"device-kostal-piko-inverter"};function f(o,e,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko Wechselrichter ")])),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":o.component.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.bat_configured"))},null,8,["model-value"])])}const E=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-efcd16da.js b/web/settings/assets/inverter-efcd16da.js
new file mode 100644
index 0000000000..6e566b392e
--- /dev/null
+++ b/web/settings/assets/inverter-efcd16da.js
@@ -0,0 +1 @@
+import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[s]},_={class:"device-victron-inverter"};function f(o,e,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Wechselrichter ")])),_:1}),i(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":o.component.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const I=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-f293b026.js b/web/settings/assets/inverter-f293b026.js
new file mode 100644
index 0000000000..9e1c8d9fc5
--- /dev/null
+++ b/web/settings/assets/inverter-f293b026.js
@@ -0,0 +1 @@
+import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as a,k as p,l as m,D as r,N as i,y as t,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceJsonInverter",mixins:[d]},f={class:"device-json-inverter"};function b(n,e,c,v,_,h){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",f,[r(l,null,{default:i(()=>e[2]||(e[2]=[t(" Einstellungen für JSON Wechselrichter ")])),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>e[3]||(e[3]=[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>e[4]||(e[4]=[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const B=u(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-f30a6830.js b/web/settings/assets/inverter-f30a6830.js
new file mode 100644
index 0000000000..242302f9fb
--- /dev/null
+++ b/web/settings/assets/inverter-f30a6830.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as s,k as b,l as f,D as o,N as i,y as t,x as n,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttInverter",mixins:[u]},v={class:"device-mqtt-inverter"};function w(r,e,c,x,z,B){const a=s("openwb-base-heading"),l=s("openwb-base-copy-to-clipboard"),m=s("openwb-base-alert");return b(),f("div",v,[o(a,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Wechselrichter ")])),_:1}),o(m,{subtype:"info"},{default:i(()=>[e[9]||(e[9]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: ")),e[3]||(e[3]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/exported ",1)]),_:1}),e[4]||(e[4]=n("br",null,null,-1)),e[5]||(e[5]=t(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Beispiel: ")),e[8]||(e[8]=n("span",{class:"text-info"},"123.45",-1))])])]),_:1})])}const E=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-f3b65772.js b/web/settings/assets/inverter-f3b65772.js
deleted file mode 100644
index 49deec1faa..0000000000
--- a/web/settings/assets/inverter-f3b65772.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as c,u as n,k as m,l as u,D as r,N as i,y as e,x as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceDiscovergyInverter",mixins:[d]},v={class:"device-discovergy-inverter"},f=l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1);function g(o,t,b,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return m(),u("div",v,[r(s,null,{default:i(()=>[e(" Einstellungen für Discovergy Wechselrichter ")]),_:1}),r(a,{title:"Meter-ID",required:"","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":t[0]||(t[0]=p=>o.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>[e(" Um die ID herauszufinden mit dem Browser die Adresse "),f,e(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")]),_:1},8,["model-value"])])}const z=c(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{z as default};
diff --git a/web/settings/assets/inverter-f504e343.js b/web/settings/assets/inverter-f504e343.js
deleted file mode 100644
index 32cb474f2f..0000000000
--- a/web/settings/assets/inverter-f504e343.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as d}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as a,k as p,l as m,D as r,N as i,y as t,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceJsonInverter",mixins:[d]},w={class:"device-json-inverter"},_=c("br",null,null,-1);function f(e,n,b,h,v,x){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",w,[r(l,null,{default:i(()=>[t(" Einstellungen für JSON Wechselrichter ")]),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":e.component.configuration.jq_power,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),_,t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")]),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":e.component.configuration.jq_exported,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")]),_:1},8,["model-value"])])}const N=u(g,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-f857c467.js b/web/settings/assets/inverter-f857c467.js
deleted file mode 100644
index 313c5a5af9..0000000000
--- a/web/settings/assets/inverter-f857c467.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as p}from"./HardwareInstallation-a0083e3a.js";import{_ as l,u as n,k as c,l as d,D as t,N as i,y as r}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarViewInverter",mixins:[p]},u={class:"device-solar-view-inverter"};function f(e,o,v,g,w,b){const a=n("openwb-base-heading"),s=n("openwb-base-text-input");return c(),d("div",u,[t(a,null,{default:i(()=>[r(" Einstellungen für SolarView Wechselrichter ")]),_:1}),t(s,{title:"Kommando für die Abfrage",required:"","model-value":e.component.configuration.command,"onUpdate:modelValue":o[0]||(o[0]=m=>e.updateConfiguration(m,"configuration.command"))},{help:i(()=>[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")]),_:1},8,["model-value"])])}const N=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-fab7ed1c.js b/web/settings/assets/inverter-fab7ed1c.js
deleted file mode 100644
index 4ba99e003f..0000000000
--- a/web/settings/assets/inverter-fab7ed1c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as a}from"./HardwareInstallation-a0083e3a.js";import{_ as p,u as n,k as m,l as d,D as t,N as u,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceDeyeInverter",mixins:[a]},_={class:"device-deye-inverter"};function b(e,o,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>[c(" Einstellungen für Deye Wechselrichter ")]),_:1}),t(r,{title:"Modbus ID",required:"","model-value":e.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter_secondary-67eeedf8.js b/web/settings/assets/inverter_secondary-67eeedf8.js
new file mode 100644
index 0000000000..d942462e3a
--- /dev/null
+++ b/web/settings/assets/inverter_secondary-67eeedf8.js
@@ -0,0 +1 @@
+import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as f,l as c,D as i,N as s,y as n,x as a,z as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceFroniusInverterSecondary",mixins:[u],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},_={class:"device-fronius-inverter-secondary"},v=["href"];function D(r,e,b,k,h,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return f(),c("div",_,[i(d,null,{default:s(()=>e[1]||(e[1]=[n(" Einstellungen für einen sekundären Wechselrichter ")])),_:1}),i(l,{title:"ID","model-value":r.component.configuration.id,min:"0",required:"","onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e[2]||(e[2]=n(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. ")),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},g(o.powerFlowUrl),9,v),e[3]||(e[3]=a("br",null,null,-1)),e[4]||(e[4]=n(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. '))]),_:1},8,["model-value"])])}const U=m(w,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{U as default};
diff --git a/web/settings/assets/inverter_secondary-f8fdf5c3.js b/web/settings/assets/inverter_secondary-f8fdf5c3.js
deleted file mode 100644
index 3c93a5d303..0000000000
--- a/web/settings/assets/inverter_secondary-f8fdf5c3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as c}from"./HardwareInstallation-a0083e3a.js";import{_ as u,u as t,k as m,l as _,D as i,N as s,y as e,x as a,z as f}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceFroniusInverterSecondary",mixins:[c],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},w={class:"device-fronius-inverter-secondary"},h=["href"],v=a("br",null,null,-1);function D(n,r,b,k,y,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return m(),_("div",w,[i(d,null,{default:s(()=>[e(" Einstellungen für einen sekundären Wechselrichter ")]),_:1}),i(l,{title:"ID","model-value":n.component.configuration.id,min:"0",required:"","onUpdate:modelValue":r[0]||(r[0]=p=>n.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. "),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},f(o.powerFlowUrl),9,h),v,e(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. ')]),_:1},8,["model-value"])])}const V=u(g,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{V as default};
diff --git a/web/settings/assets/ripple_control_receiver-6eba6a9a.js b/web/settings/assets/ripple_control_receiver-6eba6a9a.js
deleted file mode 100644
index 560ba3acf5..0000000000
--- a/web/settings/assets/ripple_control_receiver-6eba6a9a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{R as s}from"./GeneralConfig-1396a845.js";import{_ as a,u as i,k as d,l as u,D as t,N as m,y as _}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const c={name:"RippleControlReceiverDimmKit",mixins:[s]},f={class:"ripple-control-receiver-dimm-kit"};function b(e,o,v,g,w,C){const p=i("openwb-base-alert"),l=i("openwb-base-text-input"),r=i("openwb-base-number-input");return d(),u("div",f,[t(p,{subtype:"info"},{default:m(()=>[_(" In der aktuellen Implementierung werden Kontakt 1 und 2 des Dimm-Kits ausgewertet. Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte geschlossen sind, darf geladen werden. ")]),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.rippleControlReceiver.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"","model-value":e.rippleControlReceiver.configuration.port,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":e.rippleControlReceiver.configuration.modbus_id,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/dimm_kit/ripple_control_receiver.vue"]]);export{y as default};
diff --git a/web/settings/assets/ripple_control_receiver-9035a86a.js b/web/settings/assets/ripple_control_receiver-9035a86a.js
new file mode 100644
index 0000000000..cbfe0fd38f
--- /dev/null
+++ b/web/settings/assets/ripple_control_receiver-9035a86a.js
@@ -0,0 +1 @@
+import{R as t}from"./GeneralConfig-2f07ba45.js";import{_ as r,u as n,k as i,l as p,D as s,N as a,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"RippleControlReceiverGpio",mixins:[t]},_={class:"ripple-control-receiver-gpio"};function d(m,e,f,u,v,g){const o=n("openwb-base-alert");return i(),p("div",_,[s(o,{subtype:"info"},{default:a(()=>e[0]||(e[0]=[c(" Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakte offen sind, darf geladen werden. ")])),_:1})])}const W=r(l,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/gpio/ripple_control_receiver.vue"]]);export{W as default};
diff --git a/web/settings/assets/ripple_control_receiver-d8f4b5b9.js b/web/settings/assets/ripple_control_receiver-d8f4b5b9.js
deleted file mode 100644
index d23d06c63c..0000000000
--- a/web/settings/assets/ripple_control_receiver-d8f4b5b9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{R as o}from"./GeneralConfig-1396a845.js";import{_ as t,u as r,k as n,l as i,D as p,N as s,y as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const a={name:"RippleControlReceiverGpio",mixins:[o]},l={class:"ripple-control-receiver-gpio"};function _(d,m,f,u,v,g){const e=r("openwb-base-alert");return n(),i("div",l,[p(e,{subtype:"info"},{default:s(()=>[c(" Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakte offen sind, darf geladen werden. ")]),_:1})])}const N=t(a,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/gpio/ripple_control_receiver.vue"]]);export{N as default};
diff --git a/web/settings/assets/ripple_control_receiver-fed88f10.js b/web/settings/assets/ripple_control_receiver-fed88f10.js
new file mode 100644
index 0000000000..93c9677cbc
--- /dev/null
+++ b/web/settings/assets/ripple_control_receiver-fed88f10.js
@@ -0,0 +1 @@
+import{R as s}from"./GeneralConfig-2f07ba45.js";import{_ as a,u as i,k as d,l as u,D as t,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"RippleControlReceiverDimmKit",mixins:[s]},c={class:"ripple-control-receiver-dimm-kit"};function b(o,e,v,g,w,C){const p=i("openwb-base-alert"),l=i("openwb-base-text-input"),r=i("openwb-base-number-input");return d(),u("div",c,[t(p,{subtype:"info"},{default:m(()=>e[3]||(e[3]=[_(" In der aktuellen Implementierung werden Kontakt 1 und 2 des Dimm-Kits ausgewertet. Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte geschlossen sind, darf geladen werden. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.rippleControlReceiver.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"","model-value":o.rippleControlReceiver.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.rippleControlReceiver.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=a(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/dimm_kit/ripple_control_receiver.vue"]]);export{y as default};
diff --git a/web/settings/assets/vehicle-023614f3.js b/web/settings/assets/vehicle-023614f3.js
deleted file mode 100644
index d894a2485f..0000000000
--- a/web/settings/assets/vehicle-023614f3.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as s}from"./VehicleConfig-5050794d.js";import{_ as d,u as a,k as p,l as c,D as o,N as l,y as i,x as g}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[s]},f={class:"vehicle-soc-tronity"},b=g("br",null,null,-1);function h(e,n,v,_,C,w){const r=a("openwb-base-text-input"),u=a("openwb-base-button-group-input");return p(),c("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":e.vehicle.configuration.vehicle_id,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')]),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":e.vehicle.configuration.client_id,"onUpdate:modelValue":n[1]||(n[1]=t=>e.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')]),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":e.vehicle.configuration.client_secret,"onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')]),_:1},8,["model-value"]),o(u,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.vehicle.configuration.calculate_soc,"onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),b,i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")]),_:1},8,["model-value"])])}const N=d(m,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/assets/vehicle-039c8759.js b/web/settings/assets/vehicle-039c8759.js
new file mode 100644
index 0000000000..419de2ba87
--- /dev/null
+++ b/web/settings/assets/vehicle-039c8759.js
@@ -0,0 +1 @@
+import{V as s}from"./VehicleConfig-0ab604e8.js";import{_ as p,u,k as d,l as v,D as a,N as n,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},g={class:"vehicle-soc-evcc"};function x(t,e,f,V,w,b){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",g,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":t.vehicle.configuration.sponsor_token,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>e[5]||(e[5]=[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")])),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>e[6]||(e[6]=[l(" Benutzername beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.password"))},{help:n(()=>e[7]||(e[7]=[l(" Kennwort beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(r,{title:"Marke",required:"","not-selected":"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":t.vehicle.configuration.vehicle_type,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>e[8]||(e[8]=[l(" Marke aus des Fahrzeugs. ")])),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":t.vehicle.configuration.VIN,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>e[9]||(e[9]=[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const B=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{B as default};
diff --git a/web/settings/assets/vehicle-03c9aa3d.js b/web/settings/assets/vehicle-03c9aa3d.js
new file mode 100644
index 0000000000..a2a31ba72a
--- /dev/null
+++ b/web/settings/assets/vehicle-03c9aa3d.js
@@ -0,0 +1 @@
+import{V as m}from"./VehicleConfig-0ab604e8.js";import{_ as d,u as r,k as u,l as f,D as n,N as l,y as o,x as t,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocMqtt",mixins:[m]},v={class:"vehicle-soc-mqtt"};function g(i,e,w,k,x,B){const s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return u(),f("div",v,[n(a,{subtype:"info"},{default:l(()=>[e[12]||(e[12]=o(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. ")),t("ul",null,[t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/soc ",1)]),_:1}),e[0]||(e[0]=t("br",null,null,-1)),e[1]||(e[1]=o(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl")),e[2]||(e[2]=t("br",null,null,-1)),e[3]||(e[3]=o(" Beispiel: ")),e[4]||(e[4]=t("span",{class:"text-info"},"89.5",-1))]),t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/range ",1)]),_:1}),e[5]||(e[5]=t("br",null,null,-1)),e[6]||(e[6]=o(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl")),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Diese Info ist optional.")),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Beispiel: ")),e[11]||(e[11]=t("span",{class:"text-info"},"356.5",-1))])])]),_:1})])}const $=d(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-0babcb51.js b/web/settings/assets/vehicle-0babcb51.js
new file mode 100644
index 0000000000..4ad9a94a6d
--- /dev/null
+++ b/web/settings/assets/vehicle-0babcb51.js
@@ -0,0 +1 @@
+import{V as a}from"./VehicleConfig-0ab604e8.js";import{_ as l,u,k as p,l as d,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmarteq",mixins:[a]},v={class:"vehicle-soc-smarteq"};function f(o,e,g,w,V,b){const t=u("openwb-base-text-input");return p(),d("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-0bc01aa8.js b/web/settings/assets/vehicle-0bc01aa8.js
new file mode 100644
index 0000000000..3708011c51
--- /dev/null
+++ b/web/settings/assets/vehicle-0bc01aa8.js
@@ -0,0 +1 @@
+import{V as m}from"./VehicleConfig-0ab604e8.js";import{_ as b,u as s,k as g,l as v,D as i,N as o,y as n,x as u,z as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocMercedesEq",mixins:[m],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var t=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");t.focus()}}},h={class:"vehicle-soc-mercedeseq"};function w(t,e,k,C,y,r){const a=s("openwb-base-text-input"),d=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert"),c=s("openwb-base-button-input");return g(),v("div",h,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":t.vehicle.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>e[3]||(e[3]=[n(" Die im Developer Portal angelegte Client-ID. ")])),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":t.vehicle.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>e[4]||(e[4]=[n(" Das im Developer Portal angelegte Client Secret. ")])),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateConfiguration(l,"configuration.vin"))},{help:o(()=>e[5]||(e[5]=[n(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(p,{subtype:"info"},{default:o(()=>[e[6]||(e[6]=n(" Vor dem Anmelden bitte die Angaben speichern.")),e[7]||(e[7]=u("br",null,null,-1)),e[8]||(e[8]=n(" Die Callback-URL für die Anmeldung lautet:")),e[9]||(e[9]=u("br",null,null,-1)),i(d,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[n(_(r.callback_url),1)]),_:1})]),_:1}),i(c,{title:"Anmelden","button-text":"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>e[10]||(e[10]=[n(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),u("br",null,null,-1)])),_:1},8,["disabled","onButtonClicked"])])}const S=b(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{S as default};
diff --git a/web/settings/assets/vehicle-19e3adb9.js b/web/settings/assets/vehicle-19e3adb9.js
new file mode 100644
index 0000000000..def4ee6e1e
--- /dev/null
+++ b/web/settings/assets/vehicle-19e3adb9.js
@@ -0,0 +1 @@
+import{V as a}from"./VehicleConfig-0ab604e8.js";import{_ as l,u as d,k as u,l as p,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[a]},v={class:"vehicle-soc-skodaconnect"};function f(o,e,c,g,w,V){const t=d("openwb-base-text-input");return u(),p("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-28a9dcf3.js b/web/settings/assets/vehicle-28a9dcf3.js
new file mode 100644
index 0000000000..36eaf1bcd7
--- /dev/null
+++ b/web/settings/assets/vehicle-28a9dcf3.js
@@ -0,0 +1 @@
+import{V as d}from"./VehicleConfig-0ab604e8.js";import{_ as p,u as l,k as m,l as b,D as i,N as r,y as t,x as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"VehicleSocBmwBimmerConnected",mixins:[d]},f={class:"vehicle-soc-bmwbc"};function v(n,e,c,w,V,B){const u=l("openwb-base-text-input"),s=l("openwb-base-button-group-input");return m(),b("div",f,[i(u,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"VIN",required:"","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[6]||(e[6]=[t(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.calculate_soc"))},{help:r(()=>e[7]||(e[7]=[t(" Berechnet den Ladestand (SoC) während der Ladung. "),a("br",null,null,-1),t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),a("br",null,null,-1)])),_:1},8,["model-value"])])}const $=p(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-29ff37c0.js b/web/settings/assets/vehicle-29ff37c0.js
deleted file mode 100644
index 2284b492c1..0000000000
--- a/web/settings/assets/vehicle-29ff37c0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,a6 as _,a7 as g,a8 as f,u as r,k as b,l as k,D as i,N as a,y as s,x as v}from"./vendor-f2b8aa6f.js";import{a as w}from"./vendor-axios-65ecee4b.js";import{C as y}from"./index-b0e5e618.js";import{V as C}from"./VehicleConfig-5050794d.js";import"./vendor-sortablejs-2f1828d0.js";import"./vendor-fortawesome-71546160.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},mixins:[y,C],methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=_.encode(g.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=g.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=_.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+o+"</pre>","danger")}}}},U={class:"vehicle-soc-tesla"},B=v("hr",null,null,-1);function V(e,n,o,z,l,p){const u=r("openwb-base-number-input"),h=r("openwb-base-heading"),c=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",U,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')]),_:1},8,["model-value"]),i(h,null,{default:a(()=>[s("Token abrufen oder eingeben")]),_:1}),i(c,{title:"1. Anmelden",buttonText:"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")]),_:1},8,["onButtonClicked"]),i(d,{title:"2. URL kopieren und einfügen",subtype:"url",emptyValue:null,modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t)},{help:a(()=>[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')]),_:1},8,["modelValue"]),i(c,{title:"3. Token abrufen",buttonText:"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")]),_:1},8,["disabled","onButtonClicked"]),B,i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")]),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")]),_:1},8,["model-value"])])}const x=m(T,[["render",V],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{x as default};
diff --git a/web/settings/assets/vehicle-2f9b7b98.js b/web/settings/assets/vehicle-2f9b7b98.js
deleted file mode 100644
index acda1d2ec4..0000000000
--- a/web/settings/assets/vehicle-2f9b7b98.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as s}from"./VehicleConfig-5050794d.js";import{_ as l,u,k as p,l as d,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocBmw",mixins:[s]},v={class:"vehicle-soc-bmw"};function f(e,o,c,g,w,h){const i=u("openwb-base-text-input");return p(),d("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-3a34ea9e.js b/web/settings/assets/vehicle-3a34ea9e.js
deleted file mode 100644
index 4b3b0834bb..0000000000
--- a/web/settings/assets/vehicle-3a34ea9e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as s}from"./VehicleConfig-5050794d.js";import{_ as l,u,k as p,l as d,D as i,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmarteq",mixins:[s]},v={class:"vehicle-soc-smarteq"};function f(e,o,c,g,h,_){const t=u("openwb-base-text-input");return p(),d("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-42f1ed52.js b/web/settings/assets/vehicle-42f1ed52.js
new file mode 100644
index 0000000000..1650086a67
--- /dev/null
+++ b/web/settings/assets/vehicle-42f1ed52.js
@@ -0,0 +1 @@
+import{_ as h,a4 as c,a5 as _,a6 as f,u as r,k as b,l as k,D as i,N as a,y as s,x as v}from"./vendor-a21b3a62.js";import{a as w}from"./vendor-axios-0e6de98a.js";import{C as y}from"./index-dc0e711f.js";import{V as C}from"./VehicleConfig-0ab604e8.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",mixins:[y,C],data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=c.encode(_.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=_.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=c.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+o+"</pre>","danger")}}}},U={class:"vehicle-soc-tesla"};function B(e,n,o,z,l,p){const u=r("openwb-base-number-input"),m=r("openwb-base-heading"),g=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",U,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>n[6]||(n[6]=[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')])),_:1},8,["model-value"]),i(m,null,{default:a(()=>n[7]||(n[7]=[s("Token abrufen oder eingeben")])),_:1}),i(g,{title:"1. Anmelden","button-text":"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>n[8]||(n[8]=[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")])),_:1},8,["onButtonClicked"]),i(d,{modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t),title:"2. URL kopieren und einfügen",subtype:"url","empty-value":null},{help:a(()=>n[9]||(n[9]=[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')])),_:1},8,["modelValue"]),i(g,{title:"3. Token abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>n[10]||(n[10]=[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")])),_:1},8,["disabled","onButtonClicked"]),n[13]||(n[13]=v("hr",null,null,-1)),i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>n[11]||(n[11]=[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")])),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>n[12]||(n[12]=[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")])),_:1},8,["model-value"])])}const R=h(T,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{R as default};
diff --git a/web/settings/assets/vehicle-47ed0a84.js b/web/settings/assets/vehicle-47ed0a84.js
new file mode 100644
index 0000000000..8a358c2fec
--- /dev/null
+++ b/web/settings/assets/vehicle-47ed0a84.js
@@ -0,0 +1 @@
+import{V as n}from"./VehicleConfig-0ab604e8.js";import{_ as s,u as i,k as o,l as r,D as a,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const p={name:"VehicleSocManual",mixins:[n]},c={class:"vehicle-soc-tesla"};function u(m,e,_,f,h,g){const t=i("openwb-base-alert");return o(),r("div",c,[a(t,{subtype:"info"},{default:d(()=>e[0]||(e[0]=[l(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')])),_:1})])}const z=s(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default};
diff --git a/web/settings/assets/vehicle-5b8d1dc8.js b/web/settings/assets/vehicle-5b8d1dc8.js
new file mode 100644
index 0000000000..06ca303604
--- /dev/null
+++ b/web/settings/assets/vehicle-5b8d1dc8.js
@@ -0,0 +1 @@
+import{V as o}from"./VehicleConfig-0ab604e8.js";import{_ as i,u as r,k as s,l as a,D as c,N as p,y as n,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocPSA",mixins:[o]},m={class:"vehicle-soc-psa"};function u(f,e,_,h,b,g){const t=r("openwb-base-alert");return s(),a("div",m,[c(t,{subtype:"danger"},{default:p(()=>e[0]||(e[0]=[n(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),l("br",null,null,-1),n(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")])),_:1})])}const N=i(d,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/assets/vehicle-5f51066d.js b/web/settings/assets/vehicle-5f51066d.js
deleted file mode 100644
index ed1a3b0198..0000000000
--- a/web/settings/assets/vehicle-5f51066d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as a}from"./VehicleConfig-5050794d.js";import{_ as d,u as l,k as u,l as p,D as n,N as r,y as s}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocOVMS",mixins:[a]},v={class:"vehicle-soc-ovms"};function c(e,o,f,h,g,V){const i=l("openwb-base-text-input");return u(),p("div",v,[n(i,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.user_id"))},{help:r(()=>[s(" Der Benutzername für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")]),_:1},8,["model-value"]),n(i,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},{help:r(()=>[s(" Das Passwort für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")]),_:1},8,["model-value"]),n(i,{title:"Vehicle Id",required:"","model-value":e.vehicle.configuration.vehicleId,"onUpdate:modelValue":o[2]||(o[2]=t=>e.updateConfiguration(t,"configuration.vehicleId"))},{help:r(()=>[s(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")]),_:1},8,["model-value"])])}const D=d(m,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{D as default};
diff --git a/web/settings/assets/vehicle-65e40931.js b/web/settings/assets/vehicle-65e40931.js
deleted file mode 100644
index 8c6bbc38d2..0000000000
--- a/web/settings/assets/vehicle-65e40931.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as r}from"./VehicleConfig-5050794d.js";import{_ as l,u as s,k as a,l as u,D as i,N as p,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},c={class:"vehicle-soc-smart-hello"};function f(e,o,v,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",c,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=t=>e.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=t=>e.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":e.vehicle.configuration.VIN,"onUpdate:modelValue":o[2]||(o[2]=t=>e.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")]),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-7adb9a7c.js b/web/settings/assets/vehicle-7adb9a7c.js
new file mode 100644
index 0000000000..9f0b58a1fb
--- /dev/null
+++ b/web/settings/assets/vehicle-7adb9a7c.js
@@ -0,0 +1 @@
+import{V as l}from"./VehicleConfig-0ab604e8.js";import{_ as a,u,k as p,l as d,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocBmw",mixins:[l]},v={class:"vehicle-soc-bmw"};function f(o,e,g,w,b,V){const i=u("openwb-base-text-input");return p(),d("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const q=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-7bb9b768.js b/web/settings/assets/vehicle-7bb9b768.js
new file mode 100644
index 0000000000..e36724bded
--- /dev/null
+++ b/web/settings/assets/vehicle-7bb9b768.js
@@ -0,0 +1 @@
+import{V as d}from"./VehicleConfig-0ab604e8.js";import{_ as l,u as a,k as u,l as p,D as n,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocOVMS",mixins:[d]},v={class:"vehicle-soc-ovms"};function f(o,e,g,V,c,w){const i=a("openwb-base-text-input");return u(),p("div",v,[n(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")])),_:1},8,["model-value"]),n(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")])),_:1},8,["model-value"]),n(i,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.vehicleId"))},{help:r(()=>e[5]||(e[5]=[s(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")])),_:1},8,["model-value"])])}const D=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{D as default};
diff --git a/web/settings/assets/vehicle-7f1d1c67.js b/web/settings/assets/vehicle-7f1d1c67.js
new file mode 100644
index 0000000000..bebc59e7a9
--- /dev/null
+++ b/web/settings/assets/vehicle-7f1d1c67.js
@@ -0,0 +1 @@
+import{V as r}from"./VehicleConfig-0ab604e8.js";import{_ as l,u as s,k as a,l as u,D as i,N as p,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},f={class:"vehicle-soc-smart-hello"};function v(o,e,c,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",f,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":o.vehicle.configuration.VIN,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>e[3]||(e[3]=[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-7f7d2e44.js b/web/settings/assets/vehicle-7f7d2e44.js
new file mode 100644
index 0000000000..d04c4a8c18
--- /dev/null
+++ b/web/settings/assets/vehicle-7f7d2e44.js
@@ -0,0 +1 @@
+import{V as u}from"./VehicleConfig-0ab604e8.js";import{_ as a,u as s,k as d,l as p,D as i,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[u]},f={class:"vehicle-soc-renault"};function v(n,e,g,V,w,b){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":n.vehicle.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.country"))},{help:r(()=>e[6]||(e[6]=[l(" Land des Fahrzeugs, z.b. DE für Deutschland. ")])),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")])),_:1},8,["model-value"])])}const U=a(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{U as default};
diff --git a/web/settings/assets/vehicle-85478721.js b/web/settings/assets/vehicle-85478721.js
new file mode 100644
index 0000000000..aff14eacc3
--- /dev/null
+++ b/web/settings/assets/vehicle-85478721.js
@@ -0,0 +1 @@
+import{V as l}from"./VehicleConfig-0ab604e8.js";import{_ as a,u,k as d,l as p,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[l]},v={class:"vehicle-soc-vwid"};function f(o,e,g,w,V,b){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const q=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-8ec5d670.js b/web/settings/assets/vehicle-8ec5d670.js
deleted file mode 100644
index e73f92ec2e..0000000000
--- a/web/settings/assets/vehicle-8ec5d670.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as _}from"./VehicleConfig-5050794d.js";import{_ as m,u as s,k as b,l as h,D as i,N as o,y as t,z as g,x as c}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const v={name:"VehicleSocMercedesEq",mixins:[_],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var e=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()}}},f={class:"vehicle-soc-mercedeseq"},w=c("br",null,null,-1),k=c("br",null,null,-1),C=c("br",null,null,-1);function y(e,n,V,D,B,r){const a=s("openwb-base-text-input"),u=s("openwb-base-copy-to-clipboard"),d=s("openwb-base-alert"),p=s("openwb-base-button-input");return b(),h("div",f,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":e.vehicle.configuration.client_id,"onUpdate:modelValue":n[0]||(n[0]=l=>e.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>[t(" Die im Developer Portal angelegte Client-ID. ")]),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":e.vehicle.configuration.client_secret,"onUpdate:modelValue":n[1]||(n[1]=l=>e.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>[t(" Das im Developer Portal angelegte Client Secret. ")]),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":n[2]||(n[2]=l=>e.updateConfiguration(l,"configuration.vin"))},{help:o(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),i(d,{subtype:"info"},{default:o(()=>[t(" Vor dem Anmelden bitte die Angaben speichern."),w,t(" Die Callback-URL für die Anmeldung lautet:"),k,i(u,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[t(g(r.callback_url),1)]),_:1})]),_:1}),i(p,{title:"Anmelden",buttonText:"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>[t(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),C]),_:1},8,["disabled","onButtonClicked"])])}const L=m(v,[["render",y],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{L as default};
diff --git a/web/settings/assets/vehicle-98ffa49f.js b/web/settings/assets/vehicle-98ffa49f.js
deleted file mode 100644
index b83418903e..0000000000
--- a/web/settings/assets/vehicle-98ffa49f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as s}from"./VehicleConfig-5050794d.js";import{_ as l,u as d,k as u,l as p,D as i,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[s]},c={class:"vehicle-soc-skodaconnect"};function v(e,o,f,g,h,_){const t=d("openwb-base-text-input");return u(),p("div",c,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")]),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const $=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-9ce6bac4.js b/web/settings/assets/vehicle-9ce6bac4.js
new file mode 100644
index 0000000000..0a79338e6f
--- /dev/null
+++ b/web/settings/assets/vehicle-9ce6bac4.js
@@ -0,0 +1 @@
+import{V as a}from"./VehicleConfig-0ab604e8.js";import{_ as d,u,k as p,l as g,D as o,N as l,y as i,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[a]},f={class:"vehicle-soc-tronity"};function b(n,e,v,C,w,h){const r=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return p(),g("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>e[4]||(e[4]=[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":n.vehicle.configuration.client_id,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>e[5]||(e[5]=[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":n.vehicle.configuration.client_secret,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>e[6]||(e[6]=[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')])),_:1},8,["model-value"]),o(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>e[7]||(e[7]=[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),c("br",null,null,-1),i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"])])}const L=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{L as default};
diff --git a/web/settings/assets/vehicle-9dbb1f9d.js b/web/settings/assets/vehicle-9dbb1f9d.js
deleted file mode 100644
index a1a9e8609f..0000000000
--- a/web/settings/assets/vehicle-9dbb1f9d.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as t}from"./VehicleConfig-5050794d.js";import{_ as n,u as s,k as i,l as o,D as a,N as r,y as d}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"VehicleSocManual",mixins:[t]},c={class:"vehicle-soc-tesla"};function p(u,m,_,h,f,g){const e=s("openwb-base-alert");return i(),o("div",c,[a(e,{subtype:"info"},{default:r(()=>[d(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')]),_:1})])}const z=n(l,[["render",p],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default};
diff --git a/web/settings/assets/vehicle-b9845ca5.js b/web/settings/assets/vehicle-b9845ca5.js
new file mode 100644
index 0000000000..96f19d24f4
--- /dev/null
+++ b/web/settings/assets/vehicle-b9845ca5.js
@@ -0,0 +1 @@
+import{V as a}from"./VehicleConfig-0ab604e8.js";import{_ as s,u as p,k as u,l as m,D as n,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocHttp",mixins:[a]},c={class:"vehicle-soc-http"};function v(t,e,f,h,g,w){const i=p("openwb-base-text-input");return u(),m("div",c,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":t.vehicle.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>e[2]||(e[2]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")])),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":t.vehicle.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>e[3]||(e[3]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")])),_:1},8,["model-value"])])}const S=s(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{S as default};
diff --git a/web/settings/assets/vehicle-bedc772a.js b/web/settings/assets/vehicle-bedc772a.js
new file mode 100644
index 0000000000..8b35c85a78
--- /dev/null
+++ b/web/settings/assets/vehicle-bedc772a.js
@@ -0,0 +1 @@
+import{V as u}from"./VehicleConfig-0ab604e8.js";import{_ as a,u as s,k as d,l as p,D as t,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[u]},v={class:"vehicle-soc-kia"};function f(o,e,g,w,V,b){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":o.vehicle.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.pin"))},{help:r(()=>e[6]||(e[6]=[l(" Die PIN für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-c0891ece.js b/web/settings/assets/vehicle-c0891ece.js
deleted file mode 100644
index 8b3be4b5e3..0000000000
--- a/web/settings/assets/vehicle-c0891ece.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as d}from"./VehicleConfig-5050794d.js";import{_ as p,u,k as m,l as c,D as i,N as r,y as t,x as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocBmw-bimmer_connected",mixins:[d]},g={class:"vehicle-soc-bmwbc"},f=l("br",null,null,-1),v=l("br",null,null,-1);function _(e,n,h,w,V,B){const a=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return m(),c("div",g,[i(a,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),i(a,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.password"))},{help:r(()=>[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")]),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.vin"))},{help:r(()=>[t(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"]),i(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":e.vehicle.configuration.calculate_soc,"onUpdate:modelValue":n[3]||(n[3]=o=>e.updateConfiguration(o,"configuration.calculate_soc"))},{help:r(()=>[t(" Berechnet den Ladestand (SoC) während der Ladung. "),f,t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),v]),_:1},8,["model-value"])])}const q=p(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-c5ee02d8.js b/web/settings/assets/vehicle-c5ee02d8.js
deleted file mode 100644
index 09d59b6322..0000000000
--- a/web/settings/assets/vehicle-c5ee02d8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as t}from"./VehicleConfig-5050794d.js";import{_ as o,u as i,k as r,l as s,D as a,N as c,y as e,x as p}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const l={name:"VehicleSocPSA",mixins:[t]},d={class:"vehicle-soc-psa"},m=p("br",null,null,-1);function u(_,h,f,b,g,v){const n=i("openwb-base-alert");return r(),s("div",d,[a(n,{subtype:"danger"},{default:c(()=>[e(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),m,e(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")]),_:1})])}const T=o(l,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{T as default};
diff --git a/web/settings/assets/vehicle-d0d26522.js b/web/settings/assets/vehicle-d0d26522.js
deleted file mode 100644
index 3a16e96e6d..0000000000
--- a/web/settings/assets/vehicle-d0d26522.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as l}from"./VehicleConfig-5050794d.js";import{_ as u,u as s,k as d,l as p,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[l]},v={class:"vehicle-soc-kia"};function f(e,o,g,c,h,w){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":e.vehicle.configuration.pin,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.pin"))},{help:r(()=>[a(" Die PIN für die Anmeldung an den Servern. ")]),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const y=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{y as default};
diff --git a/web/settings/assets/vehicle-d78b6b11.js b/web/settings/assets/vehicle-d78b6b11.js
deleted file mode 100644
index 55d8785815..0000000000
--- a/web/settings/assets/vehicle-d78b6b11.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as s}from"./VehicleConfig-5050794d.js";import{_ as p,u,k as d,l as v,D as a,N as n,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},c={class:"vehicle-soc-evcc"};function g(e,t,x,f,h,V){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",c,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":e.vehicle.configuration.sponsor_token,"onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")]),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>[l(" Benutzername beim Fahrzeughersteller. ")]),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":t[2]||(t[2]=o=>e.updateConfiguration(o,"configuration.password"))},{help:n(()=>[l(" Kennwort beim Fahrzeughersteller. ")]),_:1},8,["model-value"]),a(r,{title:"Marke",required:"",notSelected:"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":e.vehicle.configuration.vehicle_type,"onUpdate:modelValue":t[3]||(t[3]=o=>e.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>[l(" Marke aus des Fahrzeugs.")]),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":e.vehicle.configuration.VIN,"onUpdate:modelValue":t[4]||(t[4]=o=>e.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")]),_:1},8,["model-value"])])}const F=p(m,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{F as default};
diff --git a/web/settings/assets/vehicle-e909e122.js b/web/settings/assets/vehicle-e909e122.js
deleted file mode 100644
index 6e79af09d7..0000000000
--- a/web/settings/assets/vehicle-e909e122.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as a}from"./VehicleConfig-5050794d.js";import{_ as s,u as p,k as u,l as c,D as n,N as r,y as l}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocHttp",mixins:[a]},d={class:"vehicle-soc-http"};function h(e,t,v,_,f,g){const i=p("openwb-base-text-input");return u(),c("div",d,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":e.vehicle.configuration.soc_url,"onUpdate:modelValue":t[0]||(t[0]=o=>e.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")]),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":e.vehicle.configuration.range_url,"onUpdate:modelValue":t[1]||(t[1]=o=>e.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")]),_:1},8,["model-value"])])}const S=s(m,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{S as default};
diff --git a/web/settings/assets/vehicle-08379fee.js b/web/settings/assets/vehicle-f050a85d.js
similarity index 69%
rename from web/settings/assets/vehicle-08379fee.js
rename to web/settings/assets/vehicle-f050a85d.js
index cc12c9c644..23ea709519 100644
--- a/web/settings/assets/vehicle-08379fee.js
+++ b/web/settings/assets/vehicle-f050a85d.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-5050794d.js";import{_ as u,u as l,k as p,l as s,D as i}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default};
+import{V as a}from"./VehicleConfig-0ab604e8.js";import{_ as u,u as l,k as p,l as s,D as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default};
diff --git a/web/settings/assets/vehicle-f30d6420.js b/web/settings/assets/vehicle-f30d6420.js
deleted file mode 100644
index d5b1e1b1b5..0000000000
--- a/web/settings/assets/vehicle-f30d6420.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as l}from"./VehicleConfig-5050794d.js";import{_ as u,u as s,k as d,l as p,D as i,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[l]},f={class:"vehicle-soc-renault"};function v(e,n,c,g,h,V){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":n[0]||(n[0]=o=>e.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den Renault-Servern. ")]),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":e.vehicle.configuration.country,"onUpdate:modelValue":n[2]||(n[2]=o=>e.updateConfiguration(o,"configuration.country"))},{help:r(()=>[a(" Land des Fahrzeugs, z.b. DE für Deutschland. ")]),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":n[3]||(n[3]=o=>e.updateConfiguration(o,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")]),_:1},8,["model-value"])])}const N=u(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/assets/vehicle-f3b10eaa.js b/web/settings/assets/vehicle-f3b10eaa.js
deleted file mode 100644
index f7a5462197..0000000000
--- a/web/settings/assets/vehicle-f3b10eaa.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as s}from"./VehicleConfig-5050794d.js";import{_ as l,u,k as d,l as p,D as t,N as r,y as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[s]},v={class:"vehicle-soc-vwid"};function f(e,o,c,g,w,V){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":e.vehicle.configuration.user_id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>[a(" Der Benutzername für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":e.vehicle.configuration.password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.password"))},{help:r(()=>[a(" Das Passwort für die Anmeldung an den VW-Servern. ")]),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":e.vehicle.configuration.vin,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.vin"))},{help:r(()=>[a(" Die Fahrgestellnummer des Fahrzeugs. ")]),_:1},8,["model-value"])])}const q=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-fa2b1ad1.js b/web/settings/assets/vehicle-fa2b1ad1.js
deleted file mode 100644
index dde9d3f233..0000000000
--- a/web/settings/assets/vehicle-fa2b1ad1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{V as r}from"./VehicleConfig-5050794d.js";import{_ as p,u as l,k as _,l as d,D as o,N as n,y as t,x as e,z as a}from"./vendor-f2b8aa6f.js";import"./vendor-fortawesome-71546160.js";import"./index-b0e5e618.js";import"./vendor-bootstrap-4ad604fa.js";import"./vendor-jquery-d3cb8fad.js";import"./vendor-axios-65ecee4b.js";import"./vendor-sortablejs-2f1828d0.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocMqtt",mixins:[r]},h={class:"vehicle-soc-mqtt"},u=e("br",null,null,-1),f=e("br",null,null,-1),b=e("span",{class:"text-info"},"89.5",-1),v=e("br",null,null,-1),g=e("br",null,null,-1),w=e("br",null,null,-1),k=e("span",{class:"text-info"},"356.5",-1);function x(i,B,z,D,N,V){const s=l("openwb-base-copy-to-clipboard"),c=l("openwb-base-alert");return _(),d("div",h,[o(c,{subtype:"info"},{default:n(()=>[t(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. "),e("ul",null,[e("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:n(()=>[t("openWB/set/vehicle/"+a(i.vehicleId)+"/get/soc",1)]),_:1}),u,t(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl"),f,t(" Beispiel: "),b]),e("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:n(()=>[t("openWB/set/vehicle/"+a(i.vehicleId)+"/get/range",1)]),_:1}),v,t(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl"),g,t(" Diese Info ist optional."),w,t(" Beispiel: "),k])])]),_:1})])}const G=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{G as default};
diff --git a/web/settings/assets/vendor-a21b3a62.js b/web/settings/assets/vendor-a21b3a62.js
new file mode 100644
index 0000000000..ebabc60adf
--- /dev/null
+++ b/web/settings/assets/vendor-a21b3a62.js
@@ -0,0 +1,134 @@
+import{r as c8}from"./vendor-sortablejs-3016fed8.js";var Ze=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Vo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function wl(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function i(){return this instanceof i?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})}),r}var Le={},Ch={};Ch.byteLength=v8;Ch.toByteArray=m8;Ch.fromByteArray=w8;var un=[],pi=[],d8=typeof Uint8Array<"u"?Uint8Array:Array,nd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Wa=0,p8=nd.length;Wa<p8;++Wa)un[Wa]=nd[Wa],pi[nd.charCodeAt(Wa)]=Wa;pi["-".charCodeAt(0)]=62;pi["_".charCodeAt(0)]=63;function q2(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function v8(e){var t=q2(e),r=t[0],i=t[1];return(r+i)*3/4-i}function g8(e,t,r){return(t+r)*3/4-r}function m8(e){var t,r=q2(e),i=r[0],a=r[1],n=new d8(g8(e,i,a)),l=0,h=a>0?i-4:i,d;for(d=0;d<h;d+=4)t=pi[e.charCodeAt(d)]<<18|pi[e.charCodeAt(d+1)]<<12|pi[e.charCodeAt(d+2)]<<6|pi[e.charCodeAt(d+3)],n[l++]=t>>16&255,n[l++]=t>>8&255,n[l++]=t&255;return a===2&&(t=pi[e.charCodeAt(d)]<<2|pi[e.charCodeAt(d+1)]>>4,n[l++]=t&255),a===1&&(t=pi[e.charCodeAt(d)]<<10|pi[e.charCodeAt(d+1)]<<4|pi[e.charCodeAt(d+2)]>>2,n[l++]=t>>8&255,n[l++]=t&255),n}function y8(e){return un[e>>18&63]+un[e>>12&63]+un[e>>6&63]+un[e&63]}function b8(e,t,r){for(var i,a=[],n=t;n<r;n+=3)i=(e[n]<<16&16711680)+(e[n+1]<<8&65280)+(e[n+2]&255),a.push(y8(i));return a.join("")}function w8(e){for(var t,r=e.length,i=r%3,a=[],n=16383,l=0,h=r-i;l<h;l+=n)a.push(b8(e,l,l+n>h?h:l+n));return i===1?(t=e[r-1],a.push(un[t>>2]+un[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],a.push(un[t>>10]+un[t>>4&63]+un[t<<2&63]+"=")),a.join("")}var $v={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */$v.read=function(e,t,r,i,a){var n,l,h=a*8-i-1,d=(1<<h)-1,m=d>>1,_=-7,S=r?a-1:0,R=r?-1:1,I=e[t+S];for(S+=R,n=I&(1<<-_)-1,I>>=-_,_+=h;_>0;n=n*256+e[t+S],S+=R,_-=8);for(l=n&(1<<-_)-1,n>>=-_,_+=i;_>0;l=l*256+e[t+S],S+=R,_-=8);if(n===0)n=1-m;else{if(n===d)return l?NaN:(I?-1:1)*(1/0);l=l+Math.pow(2,i),n=n-m}return(I?-1:1)*l*Math.pow(2,n-i)};$v.write=function(e,t,r,i,a,n){var l,h,d,m=n*8-a-1,_=(1<<m)-1,S=_>>1,R=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=i?0:n-1,O=i?1:-1,L=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(h=isNaN(t)?1:0,l=_):(l=Math.floor(Math.log(t)/Math.LN2),t*(d=Math.pow(2,-l))<1&&(l--,d*=2),l+S>=1?t+=R/d:t+=R*Math.pow(2,1-S),t*d>=2&&(l++,d/=2),l+S>=_?(h=0,l=_):l+S>=1?(h=(t*d-1)*Math.pow(2,a),l=l+S):(h=t*Math.pow(2,S-1)*Math.pow(2,a),l=0));a>=8;e[r+I]=h&255,I+=O,h/=256,a-=8);for(l=l<<a|h,m+=a;m>0;e[r+I]=l&255,I+=O,l/=256,m-=8);e[r+I-O]|=L*128};/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <https://feross.org>
+ * @license  MIT
+ */(function(e){var t=Ch,r=$v,i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=h,e.SlowBuffer=C,e.INSPECT_MAX_BYTES=50;var a=2147483647;e.kMaxLength=a,h.TYPED_ARRAY_SUPPORT=n(),!h.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function n(){try{var j=new Uint8Array(1),k={foo:function(){return 42}};return Object.setPrototypeOf(k,Uint8Array.prototype),Object.setPrototypeOf(j,k),j.foo()===42}catch{return!1}}Object.defineProperty(h.prototype,"parent",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.buffer}}),Object.defineProperty(h.prototype,"offset",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.byteOffset}});function l(j){if(j>a)throw new RangeError('The value "'+j+'" is invalid for option "size"');var k=new Uint8Array(j);return Object.setPrototypeOf(k,h.prototype),k}function h(j,k,H){if(typeof j=="number"){if(typeof k=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(j)}return d(j,k,H)}h.poolSize=8192;function d(j,k,H){if(typeof j=="string")return R(j,k);if(ArrayBuffer.isView(j))return O(j);if(j==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof j);if(F(j,ArrayBuffer)||j&&F(j.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(F(j,SharedArrayBuffer)||j&&F(j.buffer,SharedArrayBuffer)))return L(j,k,H);if(typeof j=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var z=j.valueOf&&j.valueOf();if(z!=null&&z!==j)return h.from(z,k,H);var oe=B(j);if(oe)return oe;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof j[Symbol.toPrimitive]=="function")return h.from(j[Symbol.toPrimitive]("string"),k,H);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof j)}h.from=function(j,k,H){return d(j,k,H)},Object.setPrototypeOf(h.prototype,Uint8Array.prototype),Object.setPrototypeOf(h,Uint8Array);function m(j){if(typeof j!="number")throw new TypeError('"size" argument must be of type number');if(j<0)throw new RangeError('The value "'+j+'" is invalid for option "size"')}function _(j,k,H){return m(j),j<=0?l(j):k!==void 0?typeof H=="string"?l(j).fill(k,H):l(j).fill(k):l(j)}h.alloc=function(j,k,H){return _(j,k,H)};function S(j){return m(j),l(j<0?0:P(j)|0)}h.allocUnsafe=function(j){return S(j)},h.allocUnsafeSlow=function(j){return S(j)};function R(j,k){if((typeof k!="string"||k==="")&&(k="utf8"),!h.isEncoding(k))throw new TypeError("Unknown encoding: "+k);var H=N(j,k)|0,z=l(H),oe=z.write(j,k);return oe!==H&&(z=z.slice(0,oe)),z}function I(j){for(var k=j.length<0?0:P(j.length)|0,H=l(k),z=0;z<k;z+=1)H[z]=j[z]&255;return H}function O(j){if(F(j,Uint8Array)){var k=new Uint8Array(j);return L(k.buffer,k.byteOffset,k.byteLength)}return I(j)}function L(j,k,H){if(k<0||j.byteLength<k)throw new RangeError('"offset" is outside of buffer bounds');if(j.byteLength<k+(H||0))throw new RangeError('"length" is outside of buffer bounds');var z;return k===void 0&&H===void 0?z=new Uint8Array(j):H===void 0?z=new Uint8Array(j,k):z=new Uint8Array(j,k,H),Object.setPrototypeOf(z,h.prototype),z}function B(j){if(h.isBuffer(j)){var k=P(j.length)|0,H=l(k);return H.length===0||j.copy(H,0,0,k),H}if(j.length!==void 0)return typeof j.length!="number"||U(j.length)?l(0):I(j);if(j.type==="Buffer"&&Array.isArray(j.data))return I(j.data)}function P(j){if(j>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return j|0}function C(j){return+j!=j&&(j=0),h.alloc(+j)}h.isBuffer=function(k){return k!=null&&k._isBuffer===!0&&k!==h.prototype},h.compare=function(k,H){if(F(k,Uint8Array)&&(k=h.from(k,k.offset,k.byteLength)),F(H,Uint8Array)&&(H=h.from(H,H.offset,H.byteLength)),!h.isBuffer(k)||!h.isBuffer(H))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(k===H)return 0;for(var z=k.length,oe=H.length,ee=0,ne=Math.min(z,oe);ee<ne;++ee)if(k[ee]!==H[ee]){z=k[ee],oe=H[ee];break}return z<oe?-1:oe<z?1:0},h.isEncoding=function(k){switch(String(k).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},h.concat=function(k,H){if(!Array.isArray(k))throw new TypeError('"list" argument must be an Array of Buffers');if(k.length===0)return h.alloc(0);var z;if(H===void 0)for(H=0,z=0;z<k.length;++z)H+=k[z].length;var oe=h.allocUnsafe(H),ee=0;for(z=0;z<k.length;++z){var ne=k[z];if(F(ne,Uint8Array))ee+ne.length>oe.length?h.from(ne).copy(oe,ee):Uint8Array.prototype.set.call(oe,ne,ee);else if(h.isBuffer(ne))ne.copy(oe,ee);else throw new TypeError('"list" argument must be an Array of Buffers');ee+=ne.length}return oe};function N(j,k){if(h.isBuffer(j))return j.length;if(ArrayBuffer.isView(j)||F(j,ArrayBuffer))return j.byteLength;if(typeof j!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof j);var H=j.length,z=arguments.length>2&&arguments[2]===!0;if(!z&&H===0)return 0;for(var oe=!1;;)switch(k){case"ascii":case"latin1":case"binary":return H;case"utf8":case"utf-8":return q(j).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return H*2;case"hex":return H>>>1;case"base64":return b(j).length;default:if(oe)return z?-1:q(j).length;k=(""+k).toLowerCase(),oe=!0}}h.byteLength=N;function $(j,k,H){var z=!1;if((k===void 0||k<0)&&(k=0),k>this.length||((H===void 0||H>this.length)&&(H=this.length),H<=0)||(H>>>=0,k>>>=0,H<=k))return"";for(j||(j="utf8");;)switch(j){case"hex":return g(this,k,H);case"utf8":case"utf-8":return u(this,k,H);case"ascii":return w(this,k,H);case"latin1":case"binary":return x(this,k,H);case"base64":return f(this,k,H);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s(this,k,H);default:if(z)throw new TypeError("Unknown encoding: "+j);j=(j+"").toLowerCase(),z=!0}}h.prototype._isBuffer=!0;function W(j,k,H){var z=j[k];j[k]=j[H],j[H]=z}h.prototype.swap16=function(){var k=this.length;if(k%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var H=0;H<k;H+=2)W(this,H,H+1);return this},h.prototype.swap32=function(){var k=this.length;if(k%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var H=0;H<k;H+=4)W(this,H,H+3),W(this,H+1,H+2);return this},h.prototype.swap64=function(){var k=this.length;if(k%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var H=0;H<k;H+=8)W(this,H,H+7),W(this,H+1,H+6),W(this,H+2,H+5),W(this,H+3,H+4);return this},h.prototype.toString=function(){var k=this.length;return k===0?"":arguments.length===0?u(this,0,k):$.apply(this,arguments)},h.prototype.toLocaleString=h.prototype.toString,h.prototype.equals=function(k){if(!h.isBuffer(k))throw new TypeError("Argument must be a Buffer");return this===k?!0:h.compare(this,k)===0},h.prototype.inspect=function(){var k="",H=e.INSPECT_MAX_BYTES;return k=this.toString("hex",0,H).replace(/(.{2})/g,"$1 ").trim(),this.length>H&&(k+=" ... "),"<Buffer "+k+">"},i&&(h.prototype[i]=h.prototype.inspect),h.prototype.compare=function(k,H,z,oe,ee){if(F(k,Uint8Array)&&(k=h.from(k,k.offset,k.byteLength)),!h.isBuffer(k))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof k);if(H===void 0&&(H=0),z===void 0&&(z=k?k.length:0),oe===void 0&&(oe=0),ee===void 0&&(ee=this.length),H<0||z>k.length||oe<0||ee>this.length)throw new RangeError("out of range index");if(oe>=ee&&H>=z)return 0;if(oe>=ee)return-1;if(H>=z)return 1;if(H>>>=0,z>>>=0,oe>>>=0,ee>>>=0,this===k)return 0;for(var ne=ee-oe,me=z-H,he=Math.min(ne,me),ue=this.slice(oe,ee),xe=k.slice(H,z),le=0;le<he;++le)if(ue[le]!==xe[le]){ne=ue[le],me=xe[le];break}return ne<me?-1:me<ne?1:0};function G(j,k,H,z,oe){if(j.length===0)return-1;if(typeof H=="string"?(z=H,H=0):H>2147483647?H=2147483647:H<-2147483648&&(H=-2147483648),H=+H,U(H)&&(H=oe?0:j.length-1),H<0&&(H=j.length+H),H>=j.length){if(oe)return-1;H=j.length-1}else if(H<0)if(oe)H=0;else return-1;if(typeof k=="string"&&(k=h.from(k,z)),h.isBuffer(k))return k.length===0?-1:re(j,k,H,z,oe);if(typeof k=="number")return k=k&255,typeof Uint8Array.prototype.indexOf=="function"?oe?Uint8Array.prototype.indexOf.call(j,k,H):Uint8Array.prototype.lastIndexOf.call(j,k,H):re(j,[k],H,z,oe);throw new TypeError("val must be string, number or Buffer")}function re(j,k,H,z,oe){var ee=1,ne=j.length,me=k.length;if(z!==void 0&&(z=String(z).toLowerCase(),z==="ucs2"||z==="ucs-2"||z==="utf16le"||z==="utf-16le")){if(j.length<2||k.length<2)return-1;ee=2,ne/=2,me/=2,H/=2}function he(ce,ie){return ee===1?ce[ie]:ce.readUInt16BE(ie*ee)}var ue;if(oe){var xe=-1;for(ue=H;ue<ne;ue++)if(he(j,ue)===he(k,xe===-1?0:ue-xe)){if(xe===-1&&(xe=ue),ue-xe+1===me)return xe*ee}else xe!==-1&&(ue-=ue-xe),xe=-1}else for(H+me>ne&&(H=ne-me),ue=H;ue>=0;ue--){for(var le=!0,ve=0;ve<me;ve++)if(he(j,ue+ve)!==he(k,ve)){le=!1;break}if(le)return ue}return-1}h.prototype.includes=function(k,H,z){return this.indexOf(k,H,z)!==-1},h.prototype.indexOf=function(k,H,z){return G(this,k,H,z,!0)},h.prototype.lastIndexOf=function(k,H,z){return G(this,k,H,z,!1)};function J(j,k,H,z){H=Number(H)||0;var oe=j.length-H;z?(z=Number(z),z>oe&&(z=oe)):z=oe;var ee=k.length;z>ee/2&&(z=ee/2);for(var ne=0;ne<z;++ne){var me=parseInt(k.substr(ne*2,2),16);if(U(me))return ne;j[H+ne]=me}return ne}function K(j,k,H,z){return y(q(k,j.length-H),j,H,z)}function se(j,k,H,z){return y(V(k),j,H,z)}function M(j,k,H,z){return y(b(k),j,H,z)}function o(j,k,H,z){return y(X(k,j.length-H),j,H,z)}h.prototype.write=function(k,H,z,oe){if(H===void 0)oe="utf8",z=this.length,H=0;else if(z===void 0&&typeof H=="string")oe=H,z=this.length,H=0;else if(isFinite(H))H=H>>>0,isFinite(z)?(z=z>>>0,oe===void 0&&(oe="utf8")):(oe=z,z=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var ee=this.length-H;if((z===void 0||z>ee)&&(z=ee),k.length>0&&(z<0||H<0)||H>this.length)throw new RangeError("Attempt to write outside buffer bounds");oe||(oe="utf8");for(var ne=!1;;)switch(oe){case"hex":return J(this,k,H,z);case"utf8":case"utf-8":return K(this,k,H,z);case"ascii":case"latin1":case"binary":return se(this,k,H,z);case"base64":return M(this,k,H,z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o(this,k,H,z);default:if(ne)throw new TypeError("Unknown encoding: "+oe);oe=(""+oe).toLowerCase(),ne=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function f(j,k,H){return k===0&&H===j.length?t.fromByteArray(j):t.fromByteArray(j.slice(k,H))}function u(j,k,H){H=Math.min(j.length,H);for(var z=[],oe=k;oe<H;){var ee=j[oe],ne=null,me=ee>239?4:ee>223?3:ee>191?2:1;if(oe+me<=H){var he,ue,xe,le;switch(me){case 1:ee<128&&(ne=ee);break;case 2:he=j[oe+1],(he&192)===128&&(le=(ee&31)<<6|he&63,le>127&&(ne=le));break;case 3:he=j[oe+1],ue=j[oe+2],(he&192)===128&&(ue&192)===128&&(le=(ee&15)<<12|(he&63)<<6|ue&63,le>2047&&(le<55296||le>57343)&&(ne=le));break;case 4:he=j[oe+1],ue=j[oe+2],xe=j[oe+3],(he&192)===128&&(ue&192)===128&&(xe&192)===128&&(le=(ee&15)<<18|(he&63)<<12|(ue&63)<<6|xe&63,le>65535&&le<1114112&&(ne=le))}}ne===null?(ne=65533,me=1):ne>65535&&(ne-=65536,z.push(ne>>>10&1023|55296),ne=56320|ne&1023),z.push(ne),oe+=me}return p(z)}var c=4096;function p(j){var k=j.length;if(k<=c)return String.fromCharCode.apply(String,j);for(var H="",z=0;z<k;)H+=String.fromCharCode.apply(String,j.slice(z,z+=c));return H}function w(j,k,H){var z="";H=Math.min(j.length,H);for(var oe=k;oe<H;++oe)z+=String.fromCharCode(j[oe]&127);return z}function x(j,k,H){var z="";H=Math.min(j.length,H);for(var oe=k;oe<H;++oe)z+=String.fromCharCode(j[oe]);return z}function g(j,k,H){var z=j.length;(!k||k<0)&&(k=0),(!H||H<0||H>z)&&(H=z);for(var oe="",ee=k;ee<H;++ee)oe+=Z[j[ee]];return oe}function s(j,k,H){for(var z=j.slice(k,H),oe="",ee=0;ee<z.length-1;ee+=2)oe+=String.fromCharCode(z[ee]+z[ee+1]*256);return oe}h.prototype.slice=function(k,H){var z=this.length;k=~~k,H=H===void 0?z:~~H,k<0?(k+=z,k<0&&(k=0)):k>z&&(k=z),H<0?(H+=z,H<0&&(H=0)):H>z&&(H=z),H<k&&(H=k);var oe=this.subarray(k,H);return Object.setPrototypeOf(oe,h.prototype),oe};function v(j,k,H){if(j%1!==0||j<0)throw new RangeError("offset is not uint");if(j+k>H)throw new RangeError("Trying to access beyond buffer length")}h.prototype.readUintLE=h.prototype.readUIntLE=function(k,H,z){k=k>>>0,H=H>>>0,z||v(k,H,this.length);for(var oe=this[k],ee=1,ne=0;++ne<H&&(ee*=256);)oe+=this[k+ne]*ee;return oe},h.prototype.readUintBE=h.prototype.readUIntBE=function(k,H,z){k=k>>>0,H=H>>>0,z||v(k,H,this.length);for(var oe=this[k+--H],ee=1;H>0&&(ee*=256);)oe+=this[k+--H]*ee;return oe},h.prototype.readUint8=h.prototype.readUInt8=function(k,H){return k=k>>>0,H||v(k,1,this.length),this[k]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(k,H){return k=k>>>0,H||v(k,2,this.length),this[k]|this[k+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(k,H){return k=k>>>0,H||v(k,2,this.length),this[k]<<8|this[k+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(k,H){return k=k>>>0,H||v(k,4,this.length),(this[k]|this[k+1]<<8|this[k+2]<<16)+this[k+3]*16777216},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(k,H){return k=k>>>0,H||v(k,4,this.length),this[k]*16777216+(this[k+1]<<16|this[k+2]<<8|this[k+3])},h.prototype.readIntLE=function(k,H,z){k=k>>>0,H=H>>>0,z||v(k,H,this.length);for(var oe=this[k],ee=1,ne=0;++ne<H&&(ee*=256);)oe+=this[k+ne]*ee;return ee*=128,oe>=ee&&(oe-=Math.pow(2,8*H)),oe},h.prototype.readIntBE=function(k,H,z){k=k>>>0,H=H>>>0,z||v(k,H,this.length);for(var oe=H,ee=1,ne=this[k+--oe];oe>0&&(ee*=256);)ne+=this[k+--oe]*ee;return ee*=128,ne>=ee&&(ne-=Math.pow(2,8*H)),ne},h.prototype.readInt8=function(k,H){return k=k>>>0,H||v(k,1,this.length),this[k]&128?(255-this[k]+1)*-1:this[k]},h.prototype.readInt16LE=function(k,H){k=k>>>0,H||v(k,2,this.length);var z=this[k]|this[k+1]<<8;return z&32768?z|4294901760:z},h.prototype.readInt16BE=function(k,H){k=k>>>0,H||v(k,2,this.length);var z=this[k+1]|this[k]<<8;return z&32768?z|4294901760:z},h.prototype.readInt32LE=function(k,H){return k=k>>>0,H||v(k,4,this.length),this[k]|this[k+1]<<8|this[k+2]<<16|this[k+3]<<24},h.prototype.readInt32BE=function(k,H){return k=k>>>0,H||v(k,4,this.length),this[k]<<24|this[k+1]<<16|this[k+2]<<8|this[k+3]},h.prototype.readFloatLE=function(k,H){return k=k>>>0,H||v(k,4,this.length),r.read(this,k,!0,23,4)},h.prototype.readFloatBE=function(k,H){return k=k>>>0,H||v(k,4,this.length),r.read(this,k,!1,23,4)},h.prototype.readDoubleLE=function(k,H){return k=k>>>0,H||v(k,8,this.length),r.read(this,k,!0,52,8)},h.prototype.readDoubleBE=function(k,H){return k=k>>>0,H||v(k,8,this.length),r.read(this,k,!1,52,8)};function T(j,k,H,z,oe,ee){if(!h.isBuffer(j))throw new TypeError('"buffer" argument must be a Buffer instance');if(k>oe||k<ee)throw new RangeError('"value" argument is out of bounds');if(H+z>j.length)throw new RangeError("Index out of range")}h.prototype.writeUintLE=h.prototype.writeUIntLE=function(k,H,z,oe){if(k=+k,H=H>>>0,z=z>>>0,!oe){var ee=Math.pow(2,8*z)-1;T(this,k,H,z,ee,0)}var ne=1,me=0;for(this[H]=k&255;++me<z&&(ne*=256);)this[H+me]=k/ne&255;return H+z},h.prototype.writeUintBE=h.prototype.writeUIntBE=function(k,H,z,oe){if(k=+k,H=H>>>0,z=z>>>0,!oe){var ee=Math.pow(2,8*z)-1;T(this,k,H,z,ee,0)}var ne=z-1,me=1;for(this[H+ne]=k&255;--ne>=0&&(me*=256);)this[H+ne]=k/me&255;return H+z},h.prototype.writeUint8=h.prototype.writeUInt8=function(k,H,z){return k=+k,H=H>>>0,z||T(this,k,H,1,255,0),this[H]=k&255,H+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(k,H,z){return k=+k,H=H>>>0,z||T(this,k,H,2,65535,0),this[H]=k&255,this[H+1]=k>>>8,H+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(k,H,z){return k=+k,H=H>>>0,z||T(this,k,H,2,65535,0),this[H]=k>>>8,this[H+1]=k&255,H+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(k,H,z){return k=+k,H=H>>>0,z||T(this,k,H,4,4294967295,0),this[H+3]=k>>>24,this[H+2]=k>>>16,this[H+1]=k>>>8,this[H]=k&255,H+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(k,H,z){return k=+k,H=H>>>0,z||T(this,k,H,4,4294967295,0),this[H]=k>>>24,this[H+1]=k>>>16,this[H+2]=k>>>8,this[H+3]=k&255,H+4},h.prototype.writeIntLE=function(k,H,z,oe){if(k=+k,H=H>>>0,!oe){var ee=Math.pow(2,8*z-1);T(this,k,H,z,ee-1,-ee)}var ne=0,me=1,he=0;for(this[H]=k&255;++ne<z&&(me*=256);)k<0&&he===0&&this[H+ne-1]!==0&&(he=1),this[H+ne]=(k/me>>0)-he&255;return H+z},h.prototype.writeIntBE=function(k,H,z,oe){if(k=+k,H=H>>>0,!oe){var ee=Math.pow(2,8*z-1);T(this,k,H,z,ee-1,-ee)}var ne=z-1,me=1,he=0;for(this[H+ne]=k&255;--ne>=0&&(me*=256);)k<0&&he===0&&this[H+ne+1]!==0&&(he=1),this[H+ne]=(k/me>>0)-he&255;return H+z},h.prototype.writeInt8=function(k,H,z){return k=+k,H=H>>>0,z||T(this,k,H,1,127,-128),k<0&&(k=255+k+1),this[H]=k&255,H+1},h.prototype.writeInt16LE=function(k,H,z){return k=+k,H=H>>>0,z||T(this,k,H,2,32767,-32768),this[H]=k&255,this[H+1]=k>>>8,H+2},h.prototype.writeInt16BE=function(k,H,z){return k=+k,H=H>>>0,z||T(this,k,H,2,32767,-32768),this[H]=k>>>8,this[H+1]=k&255,H+2},h.prototype.writeInt32LE=function(k,H,z){return k=+k,H=H>>>0,z||T(this,k,H,4,2147483647,-2147483648),this[H]=k&255,this[H+1]=k>>>8,this[H+2]=k>>>16,this[H+3]=k>>>24,H+4},h.prototype.writeInt32BE=function(k,H,z){return k=+k,H=H>>>0,z||T(this,k,H,4,2147483647,-2147483648),k<0&&(k=4294967295+k+1),this[H]=k>>>24,this[H+1]=k>>>16,this[H+2]=k>>>8,this[H+3]=k&255,H+4};function D(j,k,H,z,oe,ee){if(H+z>j.length)throw new RangeError("Index out of range");if(H<0)throw new RangeError("Index out of range")}function Y(j,k,H,z,oe){return k=+k,H=H>>>0,oe||D(j,k,H,4),r.write(j,k,H,z,23,4),H+4}h.prototype.writeFloatLE=function(k,H,z){return Y(this,k,H,!0,z)},h.prototype.writeFloatBE=function(k,H,z){return Y(this,k,H,!1,z)};function Q(j,k,H,z,oe){return k=+k,H=H>>>0,oe||D(j,k,H,8),r.write(j,k,H,z,52,8),H+8}h.prototype.writeDoubleLE=function(k,H,z){return Q(this,k,H,!0,z)},h.prototype.writeDoubleBE=function(k,H,z){return Q(this,k,H,!1,z)},h.prototype.copy=function(k,H,z,oe){if(!h.isBuffer(k))throw new TypeError("argument should be a Buffer");if(z||(z=0),!oe&&oe!==0&&(oe=this.length),H>=k.length&&(H=k.length),H||(H=0),oe>0&&oe<z&&(oe=z),oe===z||k.length===0||this.length===0)return 0;if(H<0)throw new RangeError("targetStart out of bounds");if(z<0||z>=this.length)throw new RangeError("Index out of range");if(oe<0)throw new RangeError("sourceEnd out of bounds");oe>this.length&&(oe=this.length),k.length-H<oe-z&&(oe=k.length-H+z);var ee=oe-z;return this===k&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(H,z,oe):Uint8Array.prototype.set.call(k,this.subarray(z,oe),H),ee},h.prototype.fill=function(k,H,z,oe){if(typeof k=="string"){if(typeof H=="string"?(oe=H,H=0,z=this.length):typeof z=="string"&&(oe=z,z=this.length),oe!==void 0&&typeof oe!="string")throw new TypeError("encoding must be a string");if(typeof oe=="string"&&!h.isEncoding(oe))throw new TypeError("Unknown encoding: "+oe);if(k.length===1){var ee=k.charCodeAt(0);(oe==="utf8"&&ee<128||oe==="latin1")&&(k=ee)}}else typeof k=="number"?k=k&255:typeof k=="boolean"&&(k=Number(k));if(H<0||this.length<H||this.length<z)throw new RangeError("Out of range index");if(z<=H)return this;H=H>>>0,z=z===void 0?this.length:z>>>0,k||(k=0);var ne;if(typeof k=="number")for(ne=H;ne<z;++ne)this[ne]=k;else{var me=h.isBuffer(k)?k:h.from(k,oe),he=me.length;if(he===0)throw new TypeError('The value "'+k+'" is invalid for argument "value"');for(ne=0;ne<z-H;++ne)this[ne+H]=me[ne%he]}return this};var A=/[^+/0-9A-Za-z-_]/g;function E(j){if(j=j.split("=")[0],j=j.trim().replace(A,""),j.length<2)return"";for(;j.length%4!==0;)j=j+"=";return j}function q(j,k){k=k||1/0;for(var H,z=j.length,oe=null,ee=[],ne=0;ne<z;++ne){if(H=j.charCodeAt(ne),H>55295&&H<57344){if(!oe){if(H>56319){(k-=3)>-1&&ee.push(239,191,189);continue}else if(ne+1===z){(k-=3)>-1&&ee.push(239,191,189);continue}oe=H;continue}if(H<56320){(k-=3)>-1&&ee.push(239,191,189),oe=H;continue}H=(oe-55296<<10|H-56320)+65536}else oe&&(k-=3)>-1&&ee.push(239,191,189);if(oe=null,H<128){if((k-=1)<0)break;ee.push(H)}else if(H<2048){if((k-=2)<0)break;ee.push(H>>6|192,H&63|128)}else if(H<65536){if((k-=3)<0)break;ee.push(H>>12|224,H>>6&63|128,H&63|128)}else if(H<1114112){if((k-=4)<0)break;ee.push(H>>18|240,H>>12&63|128,H>>6&63|128,H&63|128)}else throw new Error("Invalid code point")}return ee}function V(j){for(var k=[],H=0;H<j.length;++H)k.push(j.charCodeAt(H)&255);return k}function X(j,k){for(var H,z,oe,ee=[],ne=0;ne<j.length&&!((k-=2)<0);++ne)H=j.charCodeAt(ne),z=H>>8,oe=H%256,ee.push(oe),ee.push(z);return ee}function b(j){return t.toByteArray(E(j))}function y(j,k,H,z){for(var oe=0;oe<z&&!(oe+H>=k.length||oe>=j.length);++oe)k[oe+H]=j[oe];return oe}function F(j,k){return j instanceof k||j!=null&&j.constructor!=null&&j.constructor.name!=null&&j.constructor.name===k.name}function U(j){return j!==j}var Z=function(){for(var j="0123456789abcdef",k=new Array(256),H=0;H<16;++H)for(var z=H*16,oe=0;oe<16;++oe)k[z+oe]=j[H]+j[oe];return k}()})(Le);var W2={exports:{}},nr=W2.exports={},an,sn;function fp(){throw new Error("setTimeout has not been defined")}function lp(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?an=setTimeout:an=fp}catch{an=fp}try{typeof clearTimeout=="function"?sn=clearTimeout:sn=lp}catch{sn=lp}})();function K2(e){if(an===setTimeout)return setTimeout(e,0);if((an===fp||!an)&&setTimeout)return an=setTimeout,setTimeout(e,0);try{return an(e,0)}catch{try{return an.call(null,e,0)}catch{return an.call(this,e,0)}}}function _8(e){if(sn===clearTimeout)return clearTimeout(e);if((sn===lp||!sn)&&clearTimeout)return sn=clearTimeout,clearTimeout(e);try{return sn(e)}catch{try{return sn.call(null,e)}catch{return sn.call(this,e)}}}var Yn=[],as=!1,sa,yu=-1;function M8(){!as||!sa||(as=!1,sa.length?Yn=sa.concat(Yn):yu=-1,Yn.length&&V2())}function V2(){if(!as){var e=K2(M8);as=!0;for(var t=Yn.length;t;){for(sa=Yn,Yn=[];++yu<t;)sa&&sa[yu].run();yu=-1,t=Yn.length}sa=null,as=!1,_8(e)}}nr.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Yn.push(new z2(e,t)),Yn.length===1&&!as&&K2(V2)};function z2(e,t){this.fun=e,this.array=t}z2.prototype.run=function(){this.fun.apply(null,this.array)};nr.title="browser";nr.browser=!0;nr.env={};nr.argv=[];nr.version="";nr.versions={};function fo(){}nr.on=fo;nr.addListener=fo;nr.once=fo;nr.off=fo;nr.removeListener=fo;nr.removeAllListeners=fo;nr.emit=fo;nr.prependListener=fo;nr.prependOnceListener=fo;nr.listeners=function(e){return[]};nr.binding=function(e){throw new Error("process.binding is not supported")};nr.cwd=function(){return"/"};nr.chdir=function(e){throw new Error("process.chdir is not supported")};nr.umask=function(){return 0};var S8=W2.exports;const ye=Vo(S8);var x8=function(e){function t(){var i=this||self;return delete e.prototype.__magic__,i}if(typeof globalThis=="object")return globalThis;if(this)return t();e.defineProperty(e.prototype,"__magic__",{configurable:!0,get:t});var r=__magic__;return r}(Object),Wm=x8;const up=typeof Wm<"u"?Wm:typeof self<"u"?self:typeof window<"u"?window:{};/**
+* @vue/shared v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**//*! #__NO_SIDE_EFFECTS__ */function ni(e){const t=Object.create(null);for(const r of e.split(","))t[r]=1;return r=>r in t}const mt=Object.freeze({}),ss=Object.freeze([]),Pr=()=>{},E8=()=>!1,Ys=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Hu=e=>e.startsWith("onUpdate:"),Nt=Object.assign,Dv=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},R8=Object.prototype.hasOwnProperty,Rt=(e,t)=>R8.call(e,t),ze=Array.isArray,ha=e=>Zs(e)==="[object Map]",Oa=e=>Zs(e)==="[object Set]",Km=e=>Zs(e)==="[object Date]",A8=e=>Zs(e)==="[object RegExp]",Xe=e=>typeof e=="function",kt=e=>typeof e=="string",wn=e=>typeof e=="symbol",At=e=>e!==null&&typeof e=="object",Bh=e=>(At(e)||Xe(e))&&Xe(e.then)&&Xe(e.catch),G2=Object.prototype.toString,Zs=e=>G2.call(e),Fv=e=>Zs(e).slice(8,-1),Lh=e=>Zs(e)==="[object Object]",jv=e=>kt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,fs=ni(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),T8=ni("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),Nh=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},O8=/-(\w)/g,fr=Nh(e=>e.replace(O8,(t,r)=>r?r.toUpperCase():"")),I8=/\B([A-Z])/g,wr=Nh(e=>e.replace(I8,"-$1").toLowerCase()),No=Nh(e=>e.charAt(0).toUpperCase()+e.slice(1)),Hn=Nh(e=>e?`on${No(e)}`:""),Ur=(e,t)=>!Object.is(e,t),Ao=(e,...t)=>{for(let r=0;r<e.length;r++)e[r](...t)},Ms=(e,t,r,i=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:r})},qu=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Wu=e=>{const t=kt(e)?Number(e):NaN;return isNaN(t)?e:t};let Vm;const Uv=()=>Vm||(Vm=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof up<"u"?up:{}),P8="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol",C8=ni(P8);function cn(e){if(ze(e)){const t={};for(let r=0;r<e.length;r++){const i=e[r],a=kt(i)?k8(i):cn(i);if(a)for(const n in a)t[n]=a[n]}return t}else if(kt(e)||At(e))return e}const B8=/;(?![^(]*\))/g,L8=/:([^]+)/,N8=/\/\*[^]*?\*\//g;function k8(e){const t={};return e.replace(N8,"").split(B8).forEach(r=>{if(r){const i=r.split(L8);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function $8(e){let t="";if(!e||kt(e))return t;for(const r in e){const i=e[r];if(kt(i)||typeof i=="number"){const a=r.startsWith("--")?r:wr(r);t+=`${a}:${i};`}}return t}function cr(e){let t="";if(kt(e))t=e;else if(ze(e))for(let r=0;r<e.length;r++){const i=cr(e[r]);i&&(t+=i+" ")}else if(At(e))for(const r in e)e[r]&&(t+=r+" ");return t.trim()}function D8(e){if(!e)return null;let{class:t,style:r}=e;return t&&!kt(t)&&(e.class=cr(t)),r&&(e.style=cn(r)),e}const F8="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot",j8="svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view",U8="annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics",H8=ni(F8),q8=ni(j8),W8=ni(U8),Y2="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",K8=ni(Y2),zm=ni(Y2+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected");function Hv(e){return!!e||e===""}const V8=ni("accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap"),z8=ni("xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan");function G8(e){if(e==null)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"}const Y8=/[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g;function Z8(e,t){return e.replace(Y8,r=>t?r==='"'?'\\\\\\"':`\\\\${r}`:`\\${r}`)}function X8(e,t){if(e.length!==t.length)return!1;let r=!0;for(let i=0;r&&i<e.length;i++)r=ko(e[i],t[i]);return r}function ko(e,t){if(e===t)return!0;let r=Km(e),i=Km(t);if(r||i)return r&&i?e.getTime()===t.getTime():!1;if(r=wn(e),i=wn(t),r||i)return e===t;if(r=ze(e),i=ze(t),r||i)return r&&i?X8(e,t):!1;if(r=At(e),i=At(t),r||i){if(!r||!i)return!1;const a=Object.keys(e).length,n=Object.keys(t).length;if(a!==n)return!1;for(const l in e){const h=e.hasOwnProperty(l),d=t.hasOwnProperty(l);if(h&&!d||!h&&d||!ko(e[l],t[l]))return!1}}return String(e)===String(t)}function kh(e,t){return e.findIndex(r=>ko(r,t))}const Z2=e=>!!(e&&e.__v_isRef===!0),di=e=>kt(e)?e:e==null?"":ze(e)||At(e)&&(e.toString===G2||!Xe(e.toString))?Z2(e)?di(e.value):JSON.stringify(e,X2,2):String(e),X2=(e,t)=>Z2(t)?X2(e,t.value):ha(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[i,a],n)=>(r[od(i,n)+" =>"]=a,r),{})}:Oa(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>od(r))}:wn(t)?od(t):At(t)&&!ze(t)&&!Lh(t)?String(t):t,od=(e,t="")=>{var r;return wn(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/**
+* @vue/reactivity v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function wi(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let jr;class qv{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=jr,!t&&jr&&(this.index=(jr.scopes||(jr.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,r;if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].pause();for(t=0,r=this.effects.length;t<r;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,r;if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].resume();for(t=0,r=this.effects.length;t<r;t++)this.effects[t].resume()}}run(t){if(this._active){const r=jr;try{return jr=this,t()}finally{jr=r}}else wi("cannot run an inactive effect scope.")}on(){jr=this}off(){jr=this.parent}stop(t){if(this._active){let r,i;for(r=0,i=this.effects.length;r<i;r++)this.effects[r].stop();for(r=0,i=this.cleanups.length;r<i;r++)this.cleanups[r]();if(this.scopes)for(r=0,i=this.scopes.length;r<i;r++)this.scopes[r].stop(!0);if(!this.detached&&this.parent&&!t){const a=this.parent.scopes.pop();a&&a!==this&&(this.parent.scopes[this.index]=a,a.index=this.index)}this.parent=void 0,this._active=!1}}}function J2(e){return new qv(e)}function Q2(){return jr}function J8(e,t=!1){jr?jr.cleanups.push(e):t||wi("onScopeDispose() is called when there is no active effect scope to be associated with.")}let Ut;const ad=new WeakSet;class tl{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,jr&&jr.active&&jr.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ad.has(this)&&(ad.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||t_(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Gm(this),r_(this);const t=Ut,r=zi;Ut=this,zi=!0;try{return this.fn()}finally{Ut!==this&&wi("Active effect was not restored correctly - this is likely a Vue internal bug."),i_(this),Ut=t,zi=r,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Vv(t);this.deps=this.depsTail=void 0,Gm(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ad.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){hp(this)&&this.run()}get dirty(){return hp(this)}}let e_=0,is;function t_(e){e.flags|=8,e.next=is,is=e}function Wv(){e_++}function Kv(){if(--e_>0)return;let e;for(;is;){let t=is,r;for(;t;)t.flags&1||(t.flags&=-9),t=t.next;for(t=is,is=void 0;t;){if(r=t.next,t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=r}}if(e)throw e}function r_(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function i_(e){let t,r=e.depsTail,i=r;for(;i;){const a=i.prevDep;i.version===-1?(i===r&&(r=a),Vv(i),Q8(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=a}e.deps=t,e.depsTail=r}function hp(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(n_(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function n_(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===rl))return;e.globalVersion=rl;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!hp(e)){e.flags&=-3;return}const r=Ut,i=zi;Ut=e,zi=!0;try{r_(e);const a=e.fn(e._value);(t.version===0||Ur(a,e._value))&&(e._value=a,t.version++)}catch(a){throw t.version++,a}finally{Ut=r,zi=i,i_(e),e.flags&=-3}}function Vv(e,t=!1){const{dep:r,prevSub:i,nextSub:a}=e;if(i&&(i.nextSub=a,e.prevSub=void 0),a&&(a.prevSub=i,e.nextSub=void 0),r.subs===e&&(r.subs=i),r.subsHead===e&&(r.subsHead=a),!r.subs&&r.computed){r.computed.flags&=-5;for(let n=r.computed.deps;n;n=n.nextDep)Vv(n,!0)}!t&&!--r.sc&&r.map&&r.map.delete(r.key)}function Q8(e){const{prevDep:t,nextDep:r}=e;t&&(t.nextDep=r,e.prevDep=void 0),r&&(r.prevDep=t,e.nextDep=void 0)}function e5(e,t){e.effect instanceof tl&&(e=e.effect.fn);const r=new tl(e);t&&Nt(r,t);try{r.run()}catch(a){throw r.stop(),a}const i=r.run.bind(r);return i.effect=r,i}function t5(e){e.effect.stop()}let zi=!0;const o_=[];function lo(){o_.push(zi),zi=!1}function uo(){const e=o_.pop();zi=e===void 0?!0:e}function Gm(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const r=Ut;Ut=void 0;try{t()}finally{Ut=r}}}let rl=0;class r5{constructor(t,r){this.sub=t,this.dep=r,this.version=r.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $h{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.target=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.subsHead=void 0}track(t){if(!Ut||!zi||Ut===this.computed)return;let r=this.activeLink;if(r===void 0||r.sub!==Ut)r=this.activeLink=new r5(Ut,this),Ut.deps?(r.prevDep=Ut.depsTail,Ut.depsTail.nextDep=r,Ut.depsTail=r):Ut.deps=Ut.depsTail=r,a_(r);else if(r.version===-1&&(r.version=this.version,r.nextDep)){const i=r.nextDep;i.prevDep=r.prevDep,r.prevDep&&(r.prevDep.nextDep=i),r.prevDep=Ut.depsTail,r.nextDep=void 0,Ut.depsTail.nextDep=r,Ut.depsTail=r,Ut.deps===r&&(Ut.deps=i)}return Ut.onTrack&&Ut.onTrack(Nt({effect:Ut},t)),r}trigger(t){this.version++,rl++,this.notify(t)}notify(t){Wv();try{for(let r=this.subsHead;r;r=r.nextSub)r.sub.onTrigger&&!(r.sub.flags&8)&&r.sub.onTrigger(Nt({effect:r.sub},t));for(let r=this.subs;r;r=r.prevSub)r.sub.notify()&&r.sub.dep.notify()}finally{Kv()}}}function a_(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)a_(i)}const r=e.dep.subs;r!==e&&(e.prevSub=r,r&&(r.nextSub=e)),e.dep.subsHead===void 0&&(e.dep.subsHead=e),e.dep.subs=e}}const Ku=new WeakMap,ca=Symbol("Object iterate"),cp=Symbol("Map keys iterate"),il=Symbol("Array iterate");function gr(e,t,r){if(zi&&Ut){let i=Ku.get(e);i||Ku.set(e,i=new Map);let a=i.get(r);a||(i.set(r,a=new $h),a.target=e,a.map=i,a.key=r),a.track({target:e,type:t,key:r})}}function pn(e,t,r,i,a,n){const l=Ku.get(e);if(!l){rl++;return}const h=d=>{d&&d.trigger({target:e,type:t,key:r,newValue:i,oldValue:a,oldTarget:n})};if(Wv(),t==="clear")l.forEach(h);else{const d=ze(e),m=d&&jv(r);if(d&&r==="length"){const _=Number(i);l.forEach((S,R)=>{(R==="length"||R===il||!wn(R)&&R>=_)&&h(S)})}else switch(r!==void 0&&h(l.get(r)),m&&h(l.get(il)),t){case"add":d?m&&h(l.get("length")):(h(l.get(ca)),ha(e)&&h(l.get(cp)));break;case"delete":d||(h(l.get(ca)),ha(e)&&h(l.get(cp)));break;case"set":ha(e)&&h(l.get(ca));break}}Kv()}function i5(e,t){const r=Ku.get(e);return r&&r.get(t)}function Ka(e){const t=at(e);return t===e?t:(gr(t,"iterate",il),Br(e)?t:t.map(Ir))}function Dh(e){return gr(e=at(e),"iterate",il),e}const n5={__proto__:null,[Symbol.iterator](){return sd(this,Symbol.iterator,Ir)},concat(...e){return Ka(this).concat(...e.map(t=>ze(t)?Ka(t):t))},entries(){return sd(this,"entries",e=>(e[1]=Ir(e[1]),e))},every(e,t){return Pn(this,"every",e,t,void 0,arguments)},filter(e,t){return Pn(this,"filter",e,t,r=>r.map(Ir),arguments)},find(e,t){return Pn(this,"find",e,t,Ir,arguments)},findIndex(e,t){return Pn(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Pn(this,"findLast",e,t,Ir,arguments)},findLastIndex(e,t){return Pn(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Pn(this,"forEach",e,t,void 0,arguments)},includes(...e){return fd(this,"includes",e)},indexOf(...e){return fd(this,"indexOf",e)},join(e){return Ka(this).join(e)},lastIndexOf(...e){return fd(this,"lastIndexOf",e)},map(e,t){return Pn(this,"map",e,t,void 0,arguments)},pop(){return df(this,"pop")},push(...e){return df(this,"push",e)},reduce(e,...t){return Ym(this,"reduce",e,t)},reduceRight(e,...t){return Ym(this,"reduceRight",e,t)},shift(){return df(this,"shift")},some(e,t){return Pn(this,"some",e,t,void 0,arguments)},splice(...e){return df(this,"splice",e)},toReversed(){return Ka(this).toReversed()},toSorted(e){return Ka(this).toSorted(e)},toSpliced(...e){return Ka(this).toSpliced(...e)},unshift(...e){return df(this,"unshift",e)},values(){return sd(this,"values",Ir)}};function sd(e,t,r){const i=Dh(e),a=i[t]();return i!==e&&!Br(e)&&(a._next=a.next,a.next=()=>{const n=a._next();return n.value&&(n.value=r(n.value)),n}),a}const o5=Array.prototype;function Pn(e,t,r,i,a,n){const l=Dh(e),h=l!==e&&!Br(e),d=l[t];if(d!==o5[t]){const S=d.apply(e,n);return h?Ir(S):S}let m=r;l!==e&&(h?m=function(S,R){return r.call(this,Ir(S),R,e)}:r.length>2&&(m=function(S,R){return r.call(this,S,R,e)}));const _=d.call(l,m,i);return h&&a?a(_):_}function Ym(e,t,r,i){const a=Dh(e);let n=r;return a!==e&&(Br(e)?r.length>3&&(n=function(l,h,d){return r.call(this,l,h,d,e)}):n=function(l,h,d){return r.call(this,l,Ir(h),d,e)}),a[t](n,...i)}function fd(e,t,r){const i=at(e);gr(i,"iterate",il);const a=i[t](...r);return(a===-1||a===!1)&&Ss(r[0])?(r[0]=at(r[0]),i[t](...r)):a}function df(e,t,r=[]){lo(),Wv();const i=at(e)[t].apply(e,r);return Kv(),uo(),i}const a5=ni("__proto__,__v_isRef,__isVue"),s_=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(wn));function s5(e){wn(e)||(e=String(e));const t=at(this);return gr(t,"has",e),t.hasOwnProperty(e)}class f_{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,i){const a=this._isReadonly,n=this._isShallow;if(r==="__v_isReactive")return!a;if(r==="__v_isReadonly")return a;if(r==="__v_isShallow")return n;if(r==="__v_raw")return i===(a?n?v_:p_:n?d_:c_).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const l=ze(t);if(!a){let d;if(l&&(d=n5[r]))return d;if(r==="hasOwnProperty")return s5}const h=Reflect.get(t,r,tr(t)?t:i);return(wn(r)?s_.has(r):a5(r))||(a||gr(t,"get",r),n)?h:tr(h)?l&&jv(r)?h:h.value:At(h)?a?Uh(h):Ia(h):h}}class l_ extends f_{constructor(t=!1){super(!1,t)}set(t,r,i,a){let n=t[r];if(!this._isShallow){const d=_n(n);if(!Br(i)&&!_n(i)&&(n=at(n),i=at(i)),!ze(t)&&tr(n)&&!tr(i))return d?!1:(n.value=i,!0)}const l=ze(t)&&jv(r)?Number(r)<t.length:Rt(t,r),h=Reflect.set(t,r,i,tr(t)?t:a);return t===at(a)&&(l?Ur(i,n)&&pn(t,"set",r,i,n):pn(t,"add",r,i)),h}deleteProperty(t,r){const i=Rt(t,r),a=t[r],n=Reflect.deleteProperty(t,r);return n&&i&&pn(t,"delete",r,void 0,a),n}has(t,r){const i=Reflect.has(t,r);return(!wn(r)||!s_.has(r))&&gr(t,"has",r),i}ownKeys(t){return gr(t,"iterate",ze(t)?"length":ca),Reflect.ownKeys(t)}}class u_ extends f_{constructor(t=!1){super(!0,t)}set(t,r){return wi(`Set operation on key "${String(r)}" failed: target is readonly.`,t),!0}deleteProperty(t,r){return wi(`Delete operation on key "${String(r)}" failed: target is readonly.`,t),!0}}const f5=new l_,l5=new u_,u5=new l_(!0),h5=new u_(!0),zv=e=>e,Fh=e=>Reflect.getPrototypeOf(e);function Jl(e,t,r=!1,i=!1){e=e.__v_raw;const a=at(e),n=at(t);r||(Ur(t,n)&&gr(a,"get",t),gr(a,"get",n));const{has:l}=Fh(a),h=i?zv:r?Yv:Ir;if(l.call(a,t))return h(e.get(t));if(l.call(a,n))return h(e.get(n));e!==a&&e.get(t)}function Ql(e,t=!1){const r=this.__v_raw,i=at(r),a=at(e);return t||(Ur(e,a)&&gr(i,"has",e),gr(i,"has",a)),e===a?r.has(e):r.has(e)||r.has(a)}function eu(e,t=!1){return e=e.__v_raw,!t&&gr(at(e),"iterate",ca),Reflect.get(e,"size",e)}function Zm(e,t=!1){!t&&!Br(e)&&!_n(e)&&(e=at(e));const r=at(this);return Fh(r).has.call(r,e)||(r.add(e),pn(r,"add",e,e)),this}function Xm(e,t,r=!1){!r&&!Br(t)&&!_n(t)&&(t=at(t));const i=at(this),{has:a,get:n}=Fh(i);let l=a.call(i,e);l?h_(i,a,e):(e=at(e),l=a.call(i,e));const h=n.call(i,e);return i.set(e,t),l?Ur(t,h)&&pn(i,"set",e,t,h):pn(i,"add",e,t),this}function Jm(e){const t=at(this),{has:r,get:i}=Fh(t);let a=r.call(t,e);a?h_(t,r,e):(e=at(e),a=r.call(t,e));const n=i?i.call(t,e):void 0,l=t.delete(e);return a&&pn(t,"delete",e,void 0,n),l}function Qm(){const e=at(this),t=e.size!==0,r=ha(e)?new Map(e):new Set(e),i=e.clear();return t&&pn(e,"clear",void 0,void 0,r),i}function tu(e,t){return function(i,a){const n=this,l=n.__v_raw,h=at(l),d=t?zv:e?Yv:Ir;return!e&&gr(h,"iterate",ca),l.forEach((m,_)=>i.call(a,d(m),d(_),n))}}function ru(e,t,r){return function(...i){const a=this.__v_raw,n=at(a),l=ha(n),h=e==="entries"||e===Symbol.iterator&&l,d=e==="keys"&&l,m=a[e](...i),_=r?zv:t?Yv:Ir;return!t&&gr(n,"iterate",d?cp:ca),{next(){const{value:S,done:R}=m.next();return R?{value:S,done:R}:{value:h?[_(S[0]),_(S[1])]:_(S),done:R}},[Symbol.iterator](){return this}}}}function go(e){return function(...t){{const r=t[0]?`on key "${t[0]}" `:"";wi(`${No(e)} operation ${r}failed: target is readonly.`,at(this))}return e==="delete"?!1:e==="clear"?void 0:this}}function c5(){const e={get(n){return Jl(this,n)},get size(){return eu(this)},has:Ql,add:Zm,set:Xm,delete:Jm,clear:Qm,forEach:tu(!1,!1)},t={get(n){return Jl(this,n,!1,!0)},get size(){return eu(this)},has:Ql,add(n){return Zm.call(this,n,!0)},set(n,l){return Xm.call(this,n,l,!0)},delete:Jm,clear:Qm,forEach:tu(!1,!0)},r={get(n){return Jl(this,n,!0)},get size(){return eu(this,!0)},has(n){return Ql.call(this,n,!0)},add:go("add"),set:go("set"),delete:go("delete"),clear:go("clear"),forEach:tu(!0,!1)},i={get(n){return Jl(this,n,!0,!0)},get size(){return eu(this,!0)},has(n){return Ql.call(this,n,!0)},add:go("add"),set:go("set"),delete:go("delete"),clear:go("clear"),forEach:tu(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(n=>{e[n]=ru(n,!1,!1),r[n]=ru(n,!0,!1),t[n]=ru(n,!1,!0),i[n]=ru(n,!0,!0)}),[e,r,t,i]}const[d5,p5,v5,g5]=c5();function jh(e,t){const r=t?e?g5:v5:e?p5:d5;return(i,a,n)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?i:Reflect.get(Rt(r,a)&&a in i?r:i,a,n)}const m5={get:jh(!1,!1)},y5={get:jh(!1,!0)},b5={get:jh(!0,!1)},w5={get:jh(!0,!0)};function h_(e,t,r){const i=at(r);if(i!==r&&t.call(e,i)){const a=Fv(e);wi(`Reactive ${a} contains both the raw and reactive versions of the same object${a==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const c_=new WeakMap,d_=new WeakMap,p_=new WeakMap,v_=new WeakMap;function _5(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function M5(e){return e.__v_skip||!Object.isExtensible(e)?0:_5(Fv(e))}function Ia(e){return _n(e)?e:Hh(e,!1,f5,m5,c_)}function Gv(e){return Hh(e,!1,u5,y5,d_)}function Uh(e){return Hh(e,!0,l5,b5,p_)}function Ki(e){return Hh(e,!0,h5,w5,v_)}function Hh(e,t,r,i,a){if(!At(e))return wi(`value cannot be made ${t?"readonly":"reactive"}: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=a.get(e);if(n)return n;const l=M5(e);if(l===0)return e;const h=new Proxy(e,l===2?i:r);return a.set(e,h),h}function Io(e){return _n(e)?Io(e.__v_raw):!!(e&&e.__v_isReactive)}function _n(e){return!!(e&&e.__v_isReadonly)}function Br(e){return!!(e&&e.__v_isShallow)}function Ss(e){return e?!!e.__v_raw:!1}function at(e){const t=e&&e.__v_raw;return t?at(t):e}function g_(e){return!Rt(e,"__v_skip")&&Object.isExtensible(e)&&Ms(e,"__v_skip",!0),e}const Ir=e=>At(e)?Ia(e):e,Yv=e=>At(e)?Uh(e):e;function tr(e){return e?e.__v_isRef===!0:!1}function Tr(e){return m_(e,!1)}function Zv(e){return m_(e,!0)}function m_(e,t){return tr(e)?e:new S5(e,t)}class S5{constructor(t,r){this.dep=new $h,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=r?t:at(t),this._value=r?t:Ir(t),this.__v_isShallow=r}get value(){return this.dep.track({target:this,type:"get",key:"value"}),this._value}set value(t){const r=this._rawValue,i=this.__v_isShallow||Br(t)||_n(t);t=i?t:at(t),Ur(t,r)&&(this._rawValue=t,this._value=i?t:Ir(t),this.dep.trigger({target:this,type:"set",key:"value",newValue:t,oldValue:r}))}}function x5(e){e.dep&&e.dep.trigger({target:e,type:"set",key:"value",newValue:e._value})}function dn(e){return tr(e)?e.value:e}function E5(e){return Xe(e)?e():dn(e)}const R5={get:(e,t,r)=>t==="__v_raw"?e:dn(Reflect.get(e,t,r)),set:(e,t,r,i)=>{const a=e[t];return tr(a)&&!tr(r)?(a.value=r,!0):Reflect.set(e,t,r,i)}};function Xv(e){return Io(e)?e:new Proxy(e,R5)}class A5{constructor(t){this.__v_isRef=!0,this._value=void 0;const r=this.dep=new $h,{get:i,set:a}=t(r.track.bind(r),r.trigger.bind(r));this._get=i,this._set=a}get value(){return this._value=this._get()}set value(t){this._set(t)}}function y_(e){return new A5(e)}function T5(e){Ss(e)||wi("toRefs() expects a reactive object but received a plain one.");const t=ze(e)?new Array(e.length):{};for(const r in e)t[r]=b_(e,r);return t}class O5{constructor(t,r,i){this._object=t,this._key=r,this._defaultValue=i,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return i5(at(this._object),this._key)}}class I5{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function P5(e,t,r){return tr(e)?e:Xe(e)?new I5(e):At(e)&&arguments.length>1?b_(e,t,r):Tr(e)}function b_(e,t,r){const i=e[t];return tr(i)?i:new O5(e,t,r)}class C5{constructor(t,r,i){this.fn=t,this.setter=r,this._value=void 0,this.dep=new $h(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=rl-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!r,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&Ut!==this)return t_(this),!0}get value(){const t=this.dep.track({target:this,type:"get",key:"value"});return n_(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter?this.setter(t):wi("Write operation failed: computed value is readonly")}}function B5(e,t,r=!1){let i,a;Xe(e)?i=e:(i=e.get,a=e.set);const n=new C5(i,a,r);return t&&!r&&(n.onTrack=t.onTrack,n.onTrigger=t.onTrigger),n}const L5={GET:"get",HAS:"has",ITERATE:"iterate"},N5={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},iu={},Vu=new WeakMap;let _o;function k5(){return _o}function w_(e,t=!1,r=_o){if(r){let i=Vu.get(r);i||Vu.set(r,i=[]),i.push(e)}else t||wi("onWatcherCleanup() was called when there was no active watcher to associate with.")}function $5(e,t,r=mt){const{immediate:i,deep:a,once:n,scheduler:l,augmentJob:h,call:d}=r,m=W=>{(r.onWarn||wi)("Invalid watch source: ",W,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},_=W=>a?W:Br(W)||a===!1||a===0?Vn(W,1):Vn(W);let S,R,I,O,L=!1,B=!1;if(tr(e)?(R=()=>e.value,L=Br(e)):Io(e)?(R=()=>_(e),L=!0):ze(e)?(B=!0,L=e.some(W=>Io(W)||Br(W)),R=()=>e.map(W=>{if(tr(W))return W.value;if(Io(W))return _(W);if(Xe(W))return d?d(W,2):W();m(W)})):Xe(e)?t?R=d?()=>d(e,2):e:R=()=>{if(I){lo();try{I()}finally{uo()}}const W=_o;_o=S;try{return d?d(e,3,[O]):e(O)}finally{_o=W}}:(R=Pr,m(e)),t&&a){const W=R,G=a===!0?1/0:a;R=()=>Vn(W(),G)}const P=Q2(),C=()=>{S.stop(),P&&Dv(P.effects,S)};if(n&&t){const W=t;t=(...G)=>{W(...G),C()}}let N=B?new Array(e.length).fill(iu):iu;const $=W=>{if(!(!(S.flags&1)||!S.dirty&&!W))if(t){const G=S.run();if(a||L||(B?G.some((re,J)=>Ur(re,N[J])):Ur(G,N))){I&&I();const re=_o;_o=S;try{const J=[G,N===iu?void 0:B&&N[0]===iu?[]:N,O];d?d(t,3,J):t(...J),N=G}finally{_o=re}}}else S.run()};return h&&h($),S=new tl(R),S.scheduler=l?()=>l($,!1):$,O=W=>w_(W,!1,S),I=S.onStop=()=>{const W=Vu.get(S);if(W){if(d)d(W,4);else for(const G of W)G();Vu.delete(S)}},S.onTrack=r.onTrack,S.onTrigger=r.onTrigger,t?i?$(!0):N=S.run():l?l($.bind(null,!0),!0):S.run(),C.pause=S.pause.bind(S),C.resume=S.resume.bind(S),C.stop=C,C}function Vn(e,t=1/0,r){if(t<=0||!At(e)||e.__v_skip||(r=r||new Set,r.has(e)))return e;if(r.add(e),t--,tr(e))Vn(e.value,t,r);else if(ze(e))for(let i=0;i<e.length;i++)Vn(e[i],t,r);else if(Oa(e)||ha(e))e.forEach(i=>{Vn(i,t,r)});else if(Lh(e)){for(const i in e)Vn(e[i],t,r);for(const i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&Vn(e[i],t,r)}return e}/**
+* @vue/runtime-core v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/const da=[];function ls(e){da.push(e)}function us(){da.pop()}let ld=!1;function Ue(e,...t){if(ld)return;ld=!0,lo();const r=da.length?da[da.length-1].component:null,i=r&&r.appContext.config.warnHandler,a=D5();if(i)Pa(i,r,11,[e+t.map(n=>{var l,h;return(h=(l=n.toString)==null?void 0:l.call(n))!=null?h:JSON.stringify(n)}).join(""),r&&r.proxy,a.map(({vnode:n})=>`at <${Qh(r,n.type)}>`).join(`
+`),a]);else{const n=[`[Vue warn]: ${e}`,...t];a.length&&n.push(`
+`,...F5(a)),console.warn(...n)}uo(),ld=!1}function D5(){let e=da[da.length-1];if(!e)return[];const t=[];for(;e;){const r=t[0];r&&r.vnode===e?r.recurseCount++:t.push({vnode:e,recurseCount:0});const i=e.component&&e.component.parent;e=i&&i.vnode}return t}function F5(e){const t=[];return e.forEach((r,i)=>{t.push(...i===0?[]:[`
+`],...j5(r))}),t}function j5({vnode:e,recurseCount:t}){const r=t>0?`... (${t} recursive calls)`:"",i=e.component?e.component.parent==null:!1,a=` at <${Qh(e.component,e.type,i)}`,n=">"+r;return e.props?[a,...U5(e.props),n]:[a+n]}function U5(e){const t=[],r=Object.keys(e);return r.slice(0,3).forEach(i=>{t.push(...__(i,e[i]))}),r.length>3&&t.push(" ..."),t}function __(e,t,r){return kt(t)?(t=JSON.stringify(t),r?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?r?t:[`${e}=${t}`]:tr(t)?(t=__(e,at(t.value),!0),r?t:[`${e}=Ref<`,t,">"]):Xe(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=at(t),r?t:[`${e}=`,t])}function Jv(e,t){e!==void 0&&(typeof e!="number"?Ue(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&Ue(`${t} is NaN - the duration expression might be incorrect.`))}const H5={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER",COMPONENT_UPDATE:15,15:"COMPONENT_UPDATE",APP_UNMOUNT_CLEANUP:16,16:"APP_UNMOUNT_CLEANUP"},qh={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update",16:"app unmount cleanup function"};function Pa(e,t,r,i){try{return i?e(...i):e()}catch(a){zo(a,t,r)}}function _i(e,t,r,i){if(Xe(e)){const a=Pa(e,t,r,i);return a&&Bh(a)&&a.catch(n=>{zo(n,t,r)}),a}if(ze(e)){const a=[];for(let n=0;n<e.length;n++)a.push(_i(e[n],t,r,i));return a}else Ue(`Invalid value type passed to callWithAsyncErrorHandling(): ${typeof e}`)}function zo(e,t,r,i=!0){const a=t?t.vnode:null,{errorHandler:n,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||mt;if(t){let h=t.parent;const d=t.proxy,m=qh[r];for(;h;){const _=h.ec;if(_){for(let S=0;S<_.length;S++)if(_[S](e,d,m)===!1)return}h=h.parent}if(n){lo(),Pa(n,null,10,[e,d,m]),uo();return}}q5(e,r,a,i,l)}function q5(e,t,r,i=!0,a=!1){{const n=qh[t];if(r&&ls(r),Ue(`Unhandled error${n?` during execution of ${n}`:""}`),r&&us(),i)throw e;console.error(e)}}let nl=!1,dp=!1;const Hr=[];let on=0;const hs=[];let Mo=null,Qa=0;const M_=Promise.resolve();let Qv=null;const W5=100;function Zn(e){const t=Qv||M_;return e?t.then(this?e.bind(this):e):t}function K5(e){let t=nl?on+1:0,r=Hr.length;for(;t<r;){const i=t+r>>>1,a=Hr[i],n=al(a);n<e||n===e&&a.flags&2?t=i+1:r=i}return t}function Wh(e){if(!(e.flags&1)){const t=al(e),r=Hr[Hr.length-1];!r||!(e.flags&2)&&t>=al(r)?Hr.push(e):Hr.splice(K5(t),0,e),e.flags|=1,S_()}}function S_(){!nl&&!dp&&(dp=!0,Qv=M_.then(x_))}function ol(e){ze(e)?hs.push(...e):Mo&&e.id===-1?Mo.splice(Qa+1,0,e):e.flags&1||(hs.push(e),e.flags|=1),S_()}function ey(e,t,r=nl?on+1:0){for(t=t||new Map;r<Hr.length;r++){const i=Hr[r];if(i&&i.flags&2){if(e&&i.id!==e.uid||eg(t,i))continue;Hr.splice(r,1),r--,i.flags&4&&(i.flags&=-2),i(),i.flags&4||(i.flags&=-2)}}}function zu(e){if(hs.length){const t=[...new Set(hs)].sort((r,i)=>al(r)-al(i));if(hs.length=0,Mo){Mo.push(...t);return}for(Mo=t,e=e||new Map,Qa=0;Qa<Mo.length;Qa++){const r=Mo[Qa];eg(e,r)||(r.flags&4&&(r.flags&=-2),r.flags&8||r(),r.flags&=-2)}Mo=null,Qa=0}}const al=e=>e.id==null?e.flags&2?-1:1/0:e.id;function x_(e){dp=!1,nl=!0,e=e||new Map;const t=r=>eg(e,r);try{for(on=0;on<Hr.length;on++){const r=Hr[on];if(r&&!(r.flags&8)){if(t(r))continue;r.flags&4&&(r.flags&=-2),Pa(r,r.i,r.i?15:14),r.flags&4||(r.flags&=-2)}}}finally{for(;on<Hr.length;on++){const r=Hr[on];r&&(r.flags&=-2)}on=0,Hr.length=0,zu(e),nl=!1,Qv=null,(Hr.length||hs.length)&&x_(e)}}function eg(e,t){const r=e.get(t)||0;if(r>W5){const i=t.i,a=i&&ul(i.type);return zo(`Maximum recursive updates exceeded${a?` in component <${a}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}return e.set(t,r+1),!1}let Vi=!1;const bu=new Map;Uv().__VUE_HMR_RUNTIME__={createRecord:ud(E_),rerender:ud(G5),reload:ud(Y5)};const wa=new Map;function V5(e){const t=e.type.__hmrId;let r=wa.get(t);r||(E_(t,e.type),r=wa.get(t)),r.instances.add(e)}function z5(e){wa.get(e.type.__hmrId).instances.delete(e)}function E_(e,t){return wa.has(e)?!1:(wa.set(e,{initialDef:Gu(t),instances:new Set}),!0)}function Gu(e){return PM(e)?e.__vccOpts:e}function G5(e,t){const r=wa.get(e);r&&(r.initialDef.render=t,[...r.instances].forEach(i=>{t&&(i.render=t,Gu(i.type).render=t),i.renderCache=[],Vi=!0,i.update(),Vi=!1}))}function Y5(e,t){const r=wa.get(e);if(!r)return;t=Gu(t),ty(r.initialDef,t);const i=[...r.instances];for(let a=0;a<i.length;a++){const n=i[a],l=Gu(n.type);let h=bu.get(l);h||(l!==r.initialDef&&ty(l,t),bu.set(l,h=new Set)),h.add(n),n.appContext.propsCache.delete(n.type),n.appContext.emitsCache.delete(n.type),n.appContext.optionsCache.delete(n.type),n.ceReload?(h.add(n),n.ceReload(t.styles),h.delete(n)):n.parent?Wh(()=>{Vi=!0,n.parent.update(),Vi=!1,h.delete(n)}):n.appContext.reload?n.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required."),n.root.ce&&n!==n.root&&n.root.ce._removeChildStyle(l)}ol(()=>{bu.clear()})}function ty(e,t){Nt(e,t);for(const r in e)r!=="__file"&&!(r in t)&&delete e[r]}function ud(e){return(t,r)=>{try{return e(t,r)}catch(i){console.error(i),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Hi,$f=[],pp=!1;function _l(e,...t){Hi?Hi.emit(e,...t):pp||$f.push({event:e,args:t})}function tg(e,t){var r,i;Hi=e,Hi?(Hi.enabled=!0,$f.forEach(({event:a,args:n})=>Hi.emit(a,...n)),$f=[]):typeof window<"u"&&window.HTMLElement&&!((i=(r=window.navigator)==null?void 0:r.userAgent)!=null&&i.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(n=>{tg(n,t)}),setTimeout(()=>{Hi||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,pp=!0,$f=[])},3e3)):(pp=!0,$f=[])}function Z5(e,t){_l("app:init",e,t,{Fragment:Ot,Text:gn,Comment:Xt,Static:Co})}function X5(e){_l("app:unmount",e)}const vp=rg("component:added"),R_=rg("component:updated"),J5=rg("component:removed"),Q5=e=>{Hi&&typeof Hi.cleanupBuffer=="function"&&!Hi.cleanupBuffer(e)&&J5(e)};/*! #__NO_SIDE_EFFECTS__ */function rg(e){return t=>{_l(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const eR=A_("perf:start"),tR=A_("perf:end");function A_(e){return(t,r,i)=>{_l(e,t.appContext.app,t.uid,t,r,i)}}function rR(e,t,r){_l("component:emit",e.appContext.app,e,t,r)}let Qt=null,Kh=null;function sl(e){const t=Qt;return Qt=e,Kh=e&&e.type.__scopeId||null,t}function iR(e){Kh=e}function nR(){Kh=null}const oR=e=>ig;function ig(e,t=Qt,r){if(!t||e._n)return e;const i=(...a)=>{i._d&&Ep(-1);const n=sl(t);let l;try{l=e(...a)}finally{sl(n),i._d&&Ep(1)}return R_(t),l};return i._n=!0,i._c=!0,i._d=!0,i}function T_(e){T8(e)&&Ue("Do not use built-in directive ids as custom directive id: "+e)}function wu(e,t){if(Qt===null)return Ue("withDirectives can only be used inside render functions."),e;const r=xl(Qt),i=e.dirs||(e.dirs=[]);for(let a=0;a<t.length;a++){let[n,l,h,d=mt]=t[a];n&&(Xe(n)&&(n={mounted:n,updated:n}),n.deep&&Vn(l),i.push({dir:n,instance:r,value:l,oldValue:void 0,arg:h,modifiers:d}))}return e}function fn(e,t,r,i){const a=e.dirs,n=t&&t.dirs;for(let l=0;l<a.length;l++){const h=a[l];n&&(h.oldValue=n[l].value);let d=h.dir[i];d&&(lo(),_i(d,r,8,[e.el,h,e,t]),uo())}}const O_=Symbol("_vte"),I_=e=>e.__isTeleport,pa=e=>e&&(e.disabled||e.disabled===""),aR=e=>e&&(e.defer||e.defer===""),ry=e=>typeof SVGElement<"u"&&e instanceof SVGElement,iy=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,gp=(e,t)=>{const r=e&&e.to;if(kt(r))if(t){const i=t(r);return!i&&!pa(e)&&Ue(`Failed to locate Teleport target with selector "${r}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`),i}else return Ue("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null;else return!r&&!pa(e)&&Ue(`Invalid Teleport target: ${r}`),r},sR={name:"Teleport",__isTeleport:!0,process(e,t,r,i,a,n,l,h,d,m){const{mc:_,pc:S,pbc:R,o:{insert:I,querySelector:O,createText:L,createComment:B}}=m,P=pa(t.props);let{shapeFlag:C,children:N,dynamicChildren:$}=t;if(Vi&&(d=!1,$=null),e==null){const W=t.el=B("teleport start"),G=t.anchor=B("teleport end");I(W,r,i),I(G,r,i);const re=(K,se)=>{C&16&&(a&&a.isCE&&(a.ce._teleportTarget=K),_(N,K,se,a,n,l,h,d))},J=()=>{const K=t.target=gp(t.props,O),se=P_(K,t,L,I);K?(l!=="svg"&&ry(K)?l="svg":l!=="mathml"&&iy(K)&&(l="mathml"),P||(re(K,se),_u(t))):P||Ue("Invalid Teleport target on mount:",K,`(${typeof K})`)};P&&(re(r,G),_u(t)),aR(t.props)?dr(J,n):J()}else{t.el=e.el,t.targetStart=e.targetStart;const W=t.anchor=e.anchor,G=t.target=e.target,re=t.targetAnchor=e.targetAnchor,J=pa(e.props),K=J?r:G,se=J?W:re;if(l==="svg"||ry(G)?l="svg":(l==="mathml"||iy(G))&&(l="mathml"),$?(R(e.dynamicChildren,$,K,a,n,l,h),Qu(e,t,!0)):d||S(e,t,K,se,a,n,l,h,!1),P)J?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):nu(t,r,W,m,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const M=t.target=gp(t.props,O);M?nu(t,M,null,m,0):Ue("Invalid Teleport target on update:",G,`(${typeof G})`)}else J&&nu(t,G,re,m,1);_u(t)}},remove(e,t,r,{um:i,o:{remove:a}},n){const{shapeFlag:l,children:h,anchor:d,targetStart:m,targetAnchor:_,target:S,props:R}=e;if(S&&(a(m),a(_)),n&&a(d),l&16){const I=n||!pa(R);for(let O=0;O<h.length;O++){const L=h[O];i(L,t,r,I,!!L.dynamicChildren)}}},move:nu,hydrate:fR};function nu(e,t,r,{o:{insert:i},m:a},n=2){n===0&&i(e.targetAnchor,t,r);const{el:l,anchor:h,shapeFlag:d,children:m,props:_}=e,S=n===2;if(S&&i(l,t,r),(!S||pa(_))&&d&16)for(let R=0;R<m.length;R++)a(m[R],t,r,2);S&&i(h,t,r)}function fR(e,t,r,i,a,n,{o:{nextSibling:l,parentNode:h,querySelector:d,insert:m,createText:_}},S){const R=t.target=gp(t.props,d);if(R){const I=R._lpa||R.firstChild;if(t.shapeFlag&16)if(pa(t.props))t.anchor=S(l(e),t,h(e),r,i,a,n),t.targetStart=I,t.targetAnchor=I&&l(I);else{t.anchor=l(e);let O=I;for(;O;){if(O&&O.nodeType===8){if(O.data==="teleport start anchor")t.targetStart=O;else if(O.data==="teleport anchor"){t.targetAnchor=O,R._lpa=t.targetAnchor&&l(t.targetAnchor);break}}O=l(O)}t.targetAnchor||P_(R,t,_,m),S(I&&l(I),t,R,r,i,a,n)}_u(t)}return t.anchor&&l(t.anchor)}const lR=sR;function _u(e){const t=e.ctx;if(t&&t.ut){let r=e.targetStart;for(;r&&r!==e.targetAnchor;)r.nodeType===1&&r.setAttribute("data-v-owner",t.uid),r=r.nextSibling;t.ut()}}function P_(e,t,r,i){const a=t.targetStart=r(""),n=t.targetAnchor=r("");return a[O_]=n,e&&(i(a,e),i(n,e)),n}const So=Symbol("_leaveCb"),ou=Symbol("_enterCb");function ng(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Qs(()=>{e.isMounted=!0}),Yh(()=>{e.isUnmounting=!0}),e}const li=[Function,Array],og={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:li,onEnter:li,onAfterEnter:li,onEnterCancelled:li,onBeforeLeave:li,onLeave:li,onAfterLeave:li,onLeaveCancelled:li,onBeforeAppear:li,onAppear:li,onAfterAppear:li,onAppearCancelled:li},C_=e=>{const t=e.subTree;return t.component?C_(t.component):t},uR={name:"BaseTransition",props:og,setup(e,{slots:t}){const r=zr(),i=ng();return()=>{const a=t.default&&Vh(t.default(),!0);if(!a||!a.length)return;const n=B_(a),l=at(e),{mode:h}=l;if(h&&h!=="in-out"&&h!=="out-in"&&h!=="default"&&Ue(`invalid <transition> mode: ${h}`),i.isLeaving)return hd(n);const d=ny(n);if(!d)return hd(n);let m=xs(d,l,i,r,R=>m=R);d.type!==Xt&&Qn(d,m);const _=r.subTree,S=_&&ny(_);if(S&&S.type!==Xt&&!qi(d,S)&&C_(r).type!==Xt){const R=xs(S,l,i,r);if(Qn(S,R),h==="out-in"&&d.type!==Xt)return i.isLeaving=!0,R.afterLeave=()=>{i.isLeaving=!1,r.job.flags&8||r.update(),delete R.afterLeave},hd(n);h==="in-out"&&d.type!==Xt&&(R.delayLeave=(I,O,L)=>{const B=N_(i,S);B[String(S.key)]=S,I[So]=()=>{O(),I[So]=void 0,delete m.delayedLeave},m.delayedLeave=L})}return n}}};function B_(e){let t=e[0];if(e.length>1){let r=!1;for(const i of e)if(i.type!==Xt){if(r){Ue("<transition> can only be used on a single element or component. Use <transition-group> for lists.");break}t=i,r=!0}}return t}const L_=uR;function N_(e,t){const{leavingVNodes:r}=e;let i=r.get(t.type);return i||(i=Object.create(null),r.set(t.type,i)),i}function xs(e,t,r,i,a){const{appear:n,mode:l,persisted:h=!1,onBeforeEnter:d,onEnter:m,onAfterEnter:_,onEnterCancelled:S,onBeforeLeave:R,onLeave:I,onAfterLeave:O,onLeaveCancelled:L,onBeforeAppear:B,onAppear:P,onAfterAppear:C,onAppearCancelled:N}=t,$=String(e.key),W=N_(r,e),G=(K,se)=>{K&&_i(K,i,9,se)},re=(K,se)=>{const M=se[1];G(K,se),ze(K)?K.every(o=>o.length<=1)&&M():K.length<=1&&M()},J={mode:l,persisted:h,beforeEnter(K){let se=d;if(!r.isMounted)if(n)se=B||d;else return;K[So]&&K[So](!0);const M=W[$];M&&qi(e,M)&&M.el[So]&&M.el[So](),G(se,[K])},enter(K){let se=m,M=_,o=S;if(!r.isMounted)if(n)se=P||m,M=C||_,o=N||S;else return;let f=!1;const u=K[ou]=c=>{f||(f=!0,c?G(o,[K]):G(M,[K]),J.delayedLeave&&J.delayedLeave(),K[ou]=void 0)};se?re(se,[K,u]):u()},leave(K,se){const M=String(e.key);if(K[ou]&&K[ou](!0),r.isUnmounting)return se();G(R,[K]);let o=!1;const f=K[So]=u=>{o||(o=!0,se(),u?G(L,[K]):G(O,[K]),K[So]=void 0,W[M]===e&&delete W[M])};W[M]=e,I?re(I,[K,f]):f()},clone(K){const se=xs(K,t,r,i,a);return a&&a(se),se}};return J}function hd(e){if(Js(e))return e=Mi(e),e.children=null,e}function ny(e){if(!Js(e))return I_(e.type)&&e.children?B_(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:r}=e;if(r){if(t&16)return r[0];if(t&32&&Xe(r.default))return r.default()}}function Qn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Qn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Vh(e,t=!1,r){let i=[],a=0;for(let n=0;n<e.length;n++){let l=e[n];const h=r==null?l.key:String(r)+String(l.key!=null?l.key:n);l.type===Ot?(l.patchFlag&128&&a++,i=i.concat(Vh(l.children,t,h))):(t||l.type!==Xt)&&i.push(h!=null?Mi(l,{key:h}):l)}if(a>1)for(let n=0;n<i.length;n++)i[n].patchFlag=-2;return i}/*! #__NO_SIDE_EFFECTS__ */function Xs(e,t){return Xe(e)?(()=>Nt({name:e.name},t,{setup:e}))():e}function hR(){const e=zr();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:(Ue("useId() is called when there is no active component instance to be associated with."),"")}function ag(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const k_=new WeakSet;function cR(e){const t=zr(),r=Zv(null);if(t){const a=t.refs===mt?t.refs={}:t.refs;let n;(n=Object.getOwnPropertyDescriptor(a,e))&&!n.configurable?Ue(`useTemplateRef('${e}') already exists.`):Object.defineProperty(a,e,{enumerable:!0,get:()=>r.value,set:l=>r.value=l})}else Ue("useTemplateRef() is called when there is no active component instance to be associated with.");const i=Uh(r);return k_.add(i),i}function Yu(e,t,r,i,a=!1){if(ze(e)){e.forEach((O,L)=>Yu(O,t&&(ze(t)?t[L]:t),r,i,a));return}if(Po(i)&&!a)return;const n=i.shapeFlag&4?xl(i.component):i.el,l=a?null:n,{i:h,r:d}=e;if(!h){Ue("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");return}const m=t&&t.r,_=h.refs===mt?h.refs={}:h.refs,S=h.setupState,R=at(S),I=S===mt?()=>!1:O=>k_.has(R[O])?!1:Rt(R,O);if(m!=null&&m!==d&&(kt(m)?(_[m]=null,I(m)&&(S[m]=null)):tr(m)&&(m.value=null)),Xe(d))Pa(d,h,12,[l,_]);else{const O=kt(d),L=tr(d);if(O||L){const B=()=>{if(e.f){const P=O?I(d)?S[d]:_[d]:d.value;a?ze(P)&&Dv(P,n):ze(P)?P.includes(n)||P.push(n):O?(_[d]=[n],I(d)&&(S[d]=_[d])):(d.value=[n],e.k&&(_[e.k]=d.value))}else O?(_[d]=l,I(d)&&(S[d]=l)):L?(d.value=l,e.k&&(_[e.k]=l)):Ue("Invalid template ref type:",d,`(${typeof d})`)};l?(B.id=-1,dr(B,r)):B()}else Ue("Invalid template ref type:",d,`(${typeof d})`)}}let oy=!1;const Xo=()=>{oy||(console.error("Hydration completed but contains mismatches."),oy=!0)},dR=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",pR=e=>e.namespaceURI.includes("MathML"),au=e=>{if(e.nodeType===1){if(dR(e))return"svg";if(pR(e))return"mathml"}},na=e=>e.nodeType===8;function vR(e){const{mt:t,p:r,o:{patchProp:i,createText:a,nextSibling:n,parentNode:l,remove:h,insert:d,createComment:m}}=e,_=(N,$)=>{if(!$.hasChildNodes()){Ue("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),r(null,N,$),zu(),$._vnode=N;return}S($.firstChild,N,null,null,null),zu(),$._vnode=N},S=(N,$,W,G,re,J=!1)=>{J=J||!!$.dynamicChildren;const K=na(N)&&N.data==="[",se=()=>L(N,$,W,G,re,K),{type:M,ref:o,shapeFlag:f,patchFlag:u}=$;let c=N.nodeType;$.el=N,Ms(N,"__vnode",$,!0),Ms(N,"__vueParentComponent",W,!0),u===-2&&(J=!1,$.dynamicChildren=null);let p=null;switch(M){case gn:c!==3?$.children===""?(d($.el=a(""),l(N),N),p=N):p=se():(N.data!==$.children&&(Ue("Hydration text mismatch in",N.parentNode,`
+  - rendered on server: ${JSON.stringify(N.data)}
+  - expected on client: ${JSON.stringify($.children)}`),Xo(),N.data=$.children),p=n(N));break;case Xt:C(N)?(p=n(N),P($.el=N.content.firstChild,N,W)):c!==8||K?p=se():p=n(N);break;case Co:if(K&&(N=n(N),c=N.nodeType),c===1||c===3){p=N;const w=!$.children.length;for(let x=0;x<$.staticCount;x++)w&&($.children+=p.nodeType===1?p.outerHTML:p.data),x===$.staticCount-1&&($.anchor=p),p=n(p);return K?n(p):p}else se();break;case Ot:K?p=O(N,$,W,G,re,J):p=se();break;default:if(f&1)(c!==1||$.type.toLowerCase()!==N.tagName.toLowerCase())&&!C(N)?p=se():p=R(N,$,W,G,re,J);else if(f&6){$.slotScopeIds=re;const w=l(N);if(K?p=B(N):na(N)&&N.data==="teleport start"?p=B(N,N.data,"teleport end"):p=n(N),t($,w,null,W,G,au(w),J),Po($)){let x;K?(x=Jt(Ot),x.anchor=p?p.previousSibling:w.lastChild):x=N.nodeType===3?gg(""):Jt("div"),x.el=N,$.component.subTree=x}}else f&64?c!==8?p=se():p=$.type.hydrate(N,$,W,G,re,J,e,I):f&128?p=$.type.hydrate(N,$,W,G,au(l(N)),re,J,e,S):Ue("Invalid HostVNode type:",M,`(${typeof M})`)}return o!=null&&Yu(o,null,G,$),p},R=(N,$,W,G,re,J)=>{J=J||!!$.dynamicChildren;const{type:K,props:se,patchFlag:M,shapeFlag:o,dirs:f,transition:u}=$,c=K==="input"||K==="option";{f&&fn($,null,W,"created");let p=!1;if(C(N)){p=sM(G,u)&&W&&W.vnode.props&&W.vnode.props.appear;const x=N.content.firstChild;p&&u.beforeEnter(x),P(x,N,W),$.el=N=x}if(o&16&&!(se&&(se.innerHTML||se.textContent))){let x=I(N.firstChild,$,N,W,G,re,J),g=!1;for(;x;){Df(N,1)||(g||(Ue("Hydration children mismatch on",N,`
+Server rendered element contains more child nodes than client vdom.`),g=!0),Xo());const s=x;x=x.nextSibling,h(s)}}else if(o&8){let x=$.children;x[0]===`
+`&&(N.tagName==="PRE"||N.tagName==="TEXTAREA")&&(x=x.slice(1)),N.textContent!==x&&(Df(N,0)||(Ue("Hydration text content mismatch on",N,`
+  - rendered on server: ${N.textContent}
+  - expected on client: ${$.children}`),Xo()),N.textContent=$.children)}if(se){const x=N.tagName.includes("-");for(const g in se)!(f&&f.some(s=>s.dir.created))&&gR(N,g,se[g],$,W)&&Xo(),(c&&(g.endsWith("value")||g==="indeterminate")||Ys(g)&&!fs(g)||g[0]==="."||x)&&i(N,g,null,se[g],void 0,W)}let w;(w=se&&se.onVnodeBeforeMount)&&Yr(w,W,$),f&&fn($,null,W,"beforeMount"),((w=se&&se.onVnodeMounted)||f||p)&&bM(()=>{w&&Yr(w,W,$),p&&u.enter(N),f&&fn($,null,W,"mounted")},G)}return N.nextSibling},I=(N,$,W,G,re,J,K)=>{K=K||!!$.dynamicChildren;const se=$.children,M=se.length;let o=!1;for(let f=0;f<M;f++){const u=K?se[f]:se[f]=qr(se[f]),c=u.type===gn;N?(c&&!K&&f+1<M&&qr(se[f+1]).type===gn&&(d(a(N.data.slice(u.children.length)),W,n(N)),N.data=u.children),N=S(N,u,G,re,J,K)):c&&!u.children?d(u.el=a(""),W):(Df(W,1)||(o||(Ue("Hydration children mismatch on",W,`
+Server rendered element contains fewer child nodes than client vdom.`),o=!0),Xo()),r(null,u,W,null,G,re,au(W),J))}return N},O=(N,$,W,G,re,J)=>{const{slotScopeIds:K}=$;K&&(re=re?re.concat(K):K);const se=l(N),M=I(n(N),$,se,W,G,re,J);return M&&na(M)&&M.data==="]"?n($.anchor=M):(Xo(),d($.anchor=m("]"),se,M),M)},L=(N,$,W,G,re,J)=>{if(Df(N.parentElement,1)||(Ue(`Hydration node mismatch:
+- rendered on server:`,N,N.nodeType===3?"(text)":na(N)&&N.data==="["?"(start of fragment)":"",`
+- expected on client:`,$.type),Xo()),$.el=null,J){const M=B(N);for(;;){const o=n(N);if(o&&o!==M)h(o);else break}}const K=n(N),se=l(N);return h(N),r(null,$,se,K,W,G,au(se),re),K},B=(N,$="[",W="]")=>{let G=0;for(;N;)if(N=n(N),N&&na(N)&&(N.data===$&&G++,N.data===W)){if(G===0)return n(N);G--}return N},P=(N,$,W)=>{const G=$.parentNode;G&&G.replaceChild(N,$);let re=W;for(;re;)re.vnode.el===$&&(re.vnode.el=re.subTree.el=N),re=re.parent},C=N=>N.nodeType===1&&N.tagName==="TEMPLATE";return[_,S]}function gR(e,t,r,i,a){let n,l,h,d;if(t==="class")h=e.getAttribute("class"),d=cr(r),mR(ay(h||""),ay(d))||(n=2,l="class");else if(t==="style"){h=e.getAttribute("style")||"",d=kt(r)?r:$8(cn(r));const m=sy(h),_=sy(d);if(i.dirs)for(const{dir:S,value:R}of i.dirs)S.name==="show"&&!R&&_.set("display","none");a&&$_(a,i,_),yR(m,_)||(n=3,l="style")}else(e instanceof SVGElement&&z8(t)||e instanceof HTMLElement&&(zm(t)||V8(t)))&&(zm(t)?(h=e.hasAttribute(t),d=Hv(r)):r==null?(h=e.hasAttribute(t),d=!1):(e.hasAttribute(t)?h=e.getAttribute(t):t==="value"&&e.tagName==="TEXTAREA"?h=e.value:h=!1,d=G8(r)?String(r):!1),h!==d&&(n=4,l=t));if(n!=null&&!Df(e,n)){const m=R=>R===!1?"(not rendered)":`${l}="${R}"`,_=`Hydration ${D_[n]} mismatch on`,S=`
+  - rendered on server: ${m(h)}
+  - expected on client: ${m(d)}
+  Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.
+  You should fix the source of the mismatch.`;return Ue(_,e,S),!0}return!1}function ay(e){return new Set(e.trim().split(/\s+/))}function mR(e,t){if(e.size!==t.size)return!1;for(const r of e)if(!t.has(r))return!1;return!0}function sy(e){const t=new Map;for(const r of e.split(";")){let[i,a]=r.split(":");i=i.trim(),a=a&&a.trim(),i&&a&&t.set(i,a)}return t}function yR(e,t){if(e.size!==t.size)return!1;for(const[r,i]of e)if(i!==t.get(r))return!1;return!0}function $_(e,t,r){const i=e.subTree;if(e.getCssVars&&(t===i||i&&i.type===Ot&&i.children.includes(t))){const a=e.getCssVars();for(const n in a)r.set(`--${Z8(n,!1)}`,String(a[n]))}t===i&&e.parent&&$_(e.parent,e.vnode,r)}const fy="data-allow-mismatch",D_={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function Df(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(fy);)e=e.parentElement;const r=e&&e.getAttribute(fy);if(r==null)return!1;if(r==="")return!0;{const i=r.split(",");return t===0&&i.includes("children")?!0:r.split(",").includes(D_[t])}}const bR=(e=1e4)=>t=>{const r=requestIdleCallback(t,{timeout:e});return()=>cancelIdleCallback(r)};function wR(e){const{top:t,left:r,bottom:i,right:a}=e.getBoundingClientRect(),{innerHeight:n,innerWidth:l}=window;return(t>0&&t<n||i>0&&i<n)&&(r>0&&r<l||a>0&&a<l)}const _R=e=>(t,r)=>{const i=new IntersectionObserver(a=>{for(const n of a)if(n.isIntersecting){i.disconnect(),t();break}},e);return r(a=>{if(a instanceof Element){if(wR(a))return t(),i.disconnect(),!1;i.observe(a)}}),()=>i.disconnect()},MR=e=>t=>{if(e){const r=matchMedia(e);if(r.matches)t();else return r.addEventListener("change",t,{once:!0}),()=>r.removeEventListener("change",t)}},SR=(e=[])=>(t,r)=>{kt(e)&&(e=[e]);let i=!1;const a=l=>{i||(i=!0,n(),t(),l.target.dispatchEvent(new l.constructor(l.type,l)))},n=()=>{r(l=>{for(const h of e)l.removeEventListener(h,a)})};return r(l=>{for(const h of e)l.addEventListener(h,a,{once:!0})}),n};function xR(e,t){if(na(e)&&e.data==="["){let r=1,i=e.nextSibling;for(;i;){if(i.nodeType===1){if(t(i)===!1)break}else if(na(i))if(i.data==="]"){if(--r===0)break}else i.data==="["&&r++;i=i.nextSibling}}else t(e)}const Po=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function ER(e){Xe(e)&&(e={loader:e});const{loader:t,loadingComponent:r,errorComponent:i,delay:a=200,hydrate:n,timeout:l,suspensible:h=!0,onError:d}=e;let m=null,_,S=0;const R=()=>(S++,m=null,I()),I=()=>{let O;return m||(O=m=t().catch(L=>{if(L=L instanceof Error?L:new Error(String(L)),d)return new Promise((B,P)=>{d(L,()=>B(R()),()=>P(L),S+1)});throw L}).then(L=>{if(O!==m&&m)return m;if(L||Ue("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),L&&(L.__esModule||L[Symbol.toStringTag]==="Module")&&(L=L.default),L&&!At(L)&&!Xe(L))throw new Error(`Invalid async component load result: ${L}`);return _=L,L}))};return Xs({name:"AsyncComponentWrapper",__asyncLoader:I,__asyncHydrate(O,L,B){const P=n?()=>{const C=n(B,N=>xR(O,N));C&&(L.bum||(L.bum=[])).push(C)}:B;_?P():I().then(()=>!L.isUnmounted&&P())},get __asyncResolved(){return _},setup(){const O=ir;if(ag(O),_)return()=>cd(_,O);const L=N=>{m=null,zo(N,O,13,!i)};if(h&&O.suspense||Sl)return I().then(N=>()=>cd(N,O)).catch(N=>(L(N),()=>i?Jt(i,{error:N}):null));const B=Tr(!1),P=Tr(),C=Tr(!!a);return a&&setTimeout(()=>{C.value=!1},a),l!=null&&setTimeout(()=>{if(!B.value&&!P.value){const N=new Error(`Async component timed out after ${l}ms.`);L(N),P.value=N}},l),I().then(()=>{B.value=!0,O.parent&&Js(O.parent.vnode)&&O.parent.update()}).catch(N=>{L(N),P.value=N}),()=>{if(B.value&&_)return cd(_,O);if(P.value&&i)return Jt(i,{error:P.value});if(r&&!C.value)return Jt(r)}}})}function cd(e,t){const{ref:r,props:i,children:a,ce:n}=t.vnode,l=Jt(e,i,a);return l.ref=r,l.ce=n,delete t.vnode.ce,l}const Js=e=>e.type.__isKeepAlive,RR={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const r=zr(),i=r.ctx;if(!i.renderer)return()=>{const C=t.default&&t.default();return C&&C.length===1?C[0]:C};const a=new Map,n=new Set;let l=null;r.__v_cache=a;const h=r.suspense,{renderer:{p:d,m,um:_,o:{createElement:S}}}=i,R=S("div");i.activate=(C,N,$,W,G)=>{const re=C.component;m(C,N,$,0,h),d(re.vnode,C,N,$,re,h,W,C.slotScopeIds,G),dr(()=>{re.isDeactivated=!1,re.a&&Ao(re.a);const J=C.props&&C.props.onVnodeMounted;J&&Yr(J,re.parent,C)},h),vp(re)},i.deactivate=C=>{const N=C.component;eh(N.m),eh(N.a),m(C,R,null,1,h),dr(()=>{N.da&&Ao(N.da);const $=C.props&&C.props.onVnodeUnmounted;$&&Yr($,N.parent,C),N.isDeactivated=!0},h),vp(N)};function I(C){dd(C),_(C,r,h,!0)}function O(C){a.forEach((N,$)=>{const W=ul(N.type);W&&!C(W)&&L($)})}function L(C){const N=a.get(C);N&&(!l||!qi(N,l))?I(N):l&&dd(l),a.delete(C),n.delete(C)}Or(()=>[e.include,e.exclude],([C,N])=>{C&&O($=>Ff(C,$)),N&&O($=>!Ff(N,$))},{flush:"post",deep:!0});let B=null;const P=()=>{B!=null&&(rh(r.subTree.type)?dr(()=>{a.set(B,su(r.subTree))},r.subTree.suspense):a.set(B,su(r.subTree)))};return Qs(P),Gh(P),Yh(()=>{a.forEach(C=>{const{subTree:N,suspense:$}=r,W=su(N);if(C.type===W.type&&C.key===W.key){dd(W);const G=W.component.da;G&&dr(G,$);return}I(C)})}),()=>{if(B=null,!t.default)return l=null;const C=t.default(),N=C[0];if(C.length>1)return Ue("KeepAlive should contain exactly one component child."),l=null,C;if(!Mn(N)||!(N.shapeFlag&4)&&!(N.shapeFlag&128))return l=null,N;let $=su(N);if($.type===Xt)return l=null,$;const W=$.type,G=ul(Po($)?$.type.__asyncResolved||{}:W),{include:re,exclude:J,max:K}=e;if(re&&(!G||!Ff(re,G))||J&&G&&Ff(J,G))return $.shapeFlag&=-257,l=$,N;const se=$.key==null?W:$.key,M=a.get(se);return $.el&&($=Mi($),N.shapeFlag&128&&(N.ssContent=$)),B=se,M?($.el=M.el,$.component=M.component,$.transition&&Qn($,$.transition),$.shapeFlag|=512,n.delete(se),n.add(se)):(n.add(se),K&&n.size>parseInt(K,10)&&L(n.values().next().value)),$.shapeFlag|=256,l=$,rh(N.type)?N:$}}},AR=RR;function Ff(e,t){return ze(e)?e.some(r=>Ff(r,t)):kt(e)?e.split(",").includes(t):A8(e)?(e.lastIndex=0,e.test(t)):!1}function F_(e,t){U_(e,"a",t)}function j_(e,t){U_(e,"da",t)}function U_(e,t,r=ir){const i=e.__wdc||(e.__wdc=()=>{let a=r;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(zh(t,i,r),r){let a=r.parent;for(;a&&a.parent;)Js(a.parent.vnode)&&TR(i,t,r,a),a=a.parent}}function TR(e,t,r,i){const a=zh(t,e,i,!0);Zh(()=>{Dv(i[t],a)},r)}function dd(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function su(e){return e.shapeFlag&128?e.ssContent:e}function zh(e,t,r=ir,i=!1){if(r){const a=r[e]||(r[e]=[]),n=t.__weh||(t.__weh=(...l)=>{lo();const h=Ma(r),d=_i(t,r,e,l);return h(),uo(),d});return i?a.unshift(n):a.push(n),n}else{const a=Hn(qh[e].replace(/ hook$/,""));Ue(`${a} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`)}}const ho=e=>(t,r=ir)=>{(!Sl||e==="sp")&&zh(e,(...i)=>t(...i),r)},sg=ho("bm"),Qs=ho("m"),fg=ho("bu"),Gh=ho("u"),Yh=ho("bum"),Zh=ho("um"),H_=ho("sp"),q_=ho("rtg"),W_=ho("rtc");function K_(e,t=ir){zh("ec",e,t)}const Zu="components",OR="directives";function IR(e,t){return ug(Zu,e,!0,t)||e}const lg=Symbol.for("v-ndc");function PR(e){return kt(e)?ug(Zu,e,!1)||e:e||lg}function CR(e){return ug(OR,e)}function ug(e,t,r=!0,i=!1){const a=Qt||ir;if(a){const n=a.type;if(e===Zu){const h=ul(n,!1);if(h&&(h===t||h===fr(t)||h===No(fr(t))))return n}const l=ly(a[e]||n[e],t)||ly(a.appContext[e],t);if(!l&&i)return n;if(r&&!l){const h=e===Zu?`
+If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";Ue(`Failed to resolve ${e.slice(0,-1)}: ${t}${h}`)}return l}else Ue(`resolve${No(e.slice(0,-1))} can only be used in render() or setup().`)}function ly(e,t){return e&&(e[t]||e[fr(t)]||e[No(fr(t))])}function Fi(e,t,r,i){let a;const n=r&&r[i],l=ze(e);if(l||kt(e)){const h=l&&Io(e);let d=!1;h&&(d=!Br(e),e=Dh(e)),a=new Array(e.length);for(let m=0,_=e.length;m<_;m++)a[m]=t(d?Ir(e[m]):e[m],m,void 0,n&&n[m])}else if(typeof e=="number"){Number.isInteger(e)||Ue(`The v-for range expect an integer value but got ${e}.`),a=new Array(e);for(let h=0;h<e;h++)a[h]=t(h+1,h,void 0,n&&n[h])}else if(At(e))if(e[Symbol.iterator])a=Array.from(e,(h,d)=>t(h,d,void 0,n&&n[d]));else{const h=Object.keys(e);a=new Array(h.length);for(let d=0,m=h.length;d<m;d++){const _=h[d];a[d]=t(e[_],_,d,n&&n[d])}}else a=[];return r&&(r[i]=a),a}function BR(e,t){for(let r=0;r<t.length;r++){const i=t[r];if(ze(i))for(let a=0;a<i.length;a++)e[i[a].name]=i[a].fn;else i&&(e[i.name]=i.key?(...a)=>{const n=i.fn(...a);return n&&(n.key=i.key),n}:i.fn)}return e}function mp(e,t,r={},i,a){if(Qt.ce||Qt.parent&&Po(Qt.parent)&&Qt.parent.ce)return t!=="default"&&(r.name=t),Qe(),ih(Ot,null,[Jt("slot",r,i&&i())],64);let n=e[t];n&&n.length>1&&(Ue("SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template."),n=()=>[]),n&&n._c&&(n._d=!1),Qe();const l=n&&hg(n(r)),h=ih(Ot,{key:(r.key||l&&l.key||`_${t}`)+(!l&&i?"_fb":"")},l||(i?i():[]),l&&e._===1?64:-2);return!a&&h.scopeId&&(h.slotScopeIds=[h.scopeId+"-s"]),n&&n._c&&(n._d=!0),h}function hg(e){return e.some(t=>Mn(t)?!(t.type===Xt||t.type===Ot&&!hg(t.children)):!0)?e:null}function LR(e,t){const r={};if(!At(e))return Ue("v-on with no argument expects an object value."),r;for(const i in e)r[t&&/[A-Z]/.test(i)?`on:${i}`:Hn(i)]=e[i];return r}const yp=e=>e?AM(e)?xl(e):yp(e.parent):null,va=Nt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>Ki(e.props),$attrs:e=>Ki(e.attrs),$slots:e=>Ki(e.slots),$refs:e=>Ki(e.refs),$parent:e=>yp(e.parent),$root:e=>yp(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>dg(e),$forceUpdate:e=>e.f||(e.f=()=>{Wh(e.update)}),$nextTick:e=>e.n||(e.n=Zn.bind(e.proxy)),$watch:e=>MA.bind(e)}),cg=e=>e==="_"||e==="$",pd=(e,t)=>e!==mt&&!e.__isScriptSetup&&Rt(e,t),Kf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:r,setupState:i,data:a,props:n,accessCache:l,type:h,appContext:d}=e;if(t==="__isVue")return!0;let m;if(t[0]!=="$"){const I=l[t];if(I!==void 0)switch(I){case 1:return i[t];case 2:return a[t];case 4:return r[t];case 3:return n[t]}else{if(pd(i,t))return l[t]=1,i[t];if(a!==mt&&Rt(a,t))return l[t]=2,a[t];if((m=e.propsOptions[0])&&Rt(m,t))return l[t]=3,n[t];if(r!==mt&&Rt(r,t))return l[t]=4,r[t];bp&&(l[t]=0)}}const _=va[t];let S,R;if(_)return t==="$attrs"?(gr(e.attrs,"get",""),th()):t==="$slots"&&gr(e,"get",t),_(e);if((S=h.__cssModules)&&(S=S[t]))return S;if(r!==mt&&Rt(r,t))return l[t]=4,r[t];if(R=d.config.globalProperties,Rt(R,t))return R[t];Qt&&(!kt(t)||t.indexOf("__v")!==0)&&(a!==mt&&cg(t[0])&&Rt(a,t)?Ue(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===Qt&&Ue(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,r){const{data:i,setupState:a,ctx:n}=e;return pd(a,t)?(a[t]=r,!0):a.__isScriptSetup&&Rt(a,t)?(Ue(`Cannot mutate <script setup> binding "${t}" from Options API.`),!1):i!==mt&&Rt(i,t)?(i[t]=r,!0):Rt(e.props,t)?(Ue(`Attempting to mutate prop "${t}". Props are readonly.`),!1):t[0]==="$"&&t.slice(1)in e?(Ue(`Attempting to mutate public property "${t}". Properties starting with $ are reserved and readonly.`),!1):(t in e.appContext.config.globalProperties?Object.defineProperty(n,t,{enumerable:!0,configurable:!0,value:r}):n[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:i,appContext:a,propsOptions:n}},l){let h;return!!r[l]||e!==mt&&Rt(e,l)||pd(t,l)||(h=n[0])&&Rt(h,l)||Rt(i,l)||Rt(va,l)||Rt(a.config.globalProperties,l)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:Rt(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};Kf.ownKeys=e=>(Ue("Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead."),Reflect.ownKeys(e));const NR=Nt({},Kf,{get(e,t){if(t!==Symbol.unscopables)return Kf.get(e,t,e)},has(e,t){const r=t[0]!=="_"&&!C8(t);return!r&&Kf.has(e,t)&&Ue(`Property ${JSON.stringify(t)} should not start with _ which is a reserved prefix for Vue internals.`),r}});function kR(e){const t={};return Object.defineProperty(t,"_",{configurable:!0,enumerable:!1,get:()=>e}),Object.keys(va).forEach(r=>{Object.defineProperty(t,r,{configurable:!0,enumerable:!1,get:()=>va[r](e),set:Pr})}),t}function $R(e){const{ctx:t,propsOptions:[r]}=e;r&&Object.keys(r).forEach(i=>{Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>e.props[i],set:Pr})})}function DR(e){const{ctx:t,setupState:r}=e;Object.keys(at(r)).forEach(i=>{if(!r.__isScriptSetup){if(cg(i[0])){Ue(`setup() return property ${JSON.stringify(i)} should not start with "$" or "_" which are reserved prefixes for Vue internals.`);return}Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>r[i],set:Pr})}})}const Ca=e=>Ue(`${e}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`);function FR(){return Ca("defineProps"),null}function jR(){return Ca("defineEmits"),null}function UR(e){Ca("defineExpose")}function HR(e){Ca("defineOptions")}function qR(){return Ca("defineSlots"),null}function WR(){Ca("defineModel")}function KR(e,t){return Ca("withDefaults"),null}function VR(){return V_().slots}function zR(){return V_().attrs}function V_(){const e=zr();return e||Ue("useContext() called without active instance."),e.setupContext||(e.setupContext=IM(e))}function fl(e){return ze(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}function GR(e,t){const r=fl(e);for(const i in t){if(i.startsWith("__skip"))continue;let a=r[i];a?ze(a)||Xe(a)?a=r[i]={type:a,default:t[i]}:a.default=t[i]:a===null?a=r[i]={default:t[i]}:Ue(`props default key "${i}" has no corresponding declaration.`),a&&t[`__skip_${i}`]&&(a.skipFactory=!0)}return r}function YR(e,t){return!e||!t?e||t:ze(e)&&ze(t)?e.concat(t):Nt({},fl(e),fl(t))}function ZR(e,t){const r={};for(const i in e)t.includes(i)||Object.defineProperty(r,i,{enumerable:!0,get:()=>e[i]});return r}function XR(e){const t=zr();t||Ue("withAsyncContext called without active current instance. This is likely a bug.");let r=e();return Tp(),Bh(r)&&(r=r.catch(i=>{throw Ma(t),i})),[r,()=>Ma(t)]}function JR(){const e=Object.create(null);return(t,r)=>{e[r]?Ue(`${t} property "${r}" is already defined in ${e[r]}.`):e[r]=t}}let bp=!0;function QR(e){const t=dg(e),r=e.proxy,i=e.ctx;bp=!1,t.beforeCreate&&uy(t.beforeCreate,e,"bc");const{data:a,computed:n,methods:l,watch:h,provide:d,inject:m,created:_,beforeMount:S,mounted:R,beforeUpdate:I,updated:O,activated:L,deactivated:B,beforeDestroy:P,beforeUnmount:C,destroyed:N,unmounted:$,render:W,renderTracked:G,renderTriggered:re,errorCaptured:J,serverPrefetch:K,expose:se,inheritAttrs:M,components:o,directives:f,filters:u}=t,c=JR();{const[w]=e.propsOptions;if(w)for(const x in w)c("Props",x)}if(m&&eA(m,i,c),l)for(const w in l){const x=l[w];Xe(x)?(Object.defineProperty(i,w,{value:x.bind(r),configurable:!0,enumerable:!0,writable:!0}),c("Methods",w)):Ue(`Method "${w}" has type "${typeof x}" in the component definition. Did you reference the function correctly?`)}if(a){Xe(a)||Ue("The data option must be a function. Plain object usage is no longer supported.");const w=a.call(r,r);if(Bh(w)&&Ue("data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>."),!At(w))Ue("data() should return an object.");else{e.data=Ia(w);for(const x in w)c("Data",x),cg(x[0])||Object.defineProperty(i,x,{configurable:!0,enumerable:!0,get:()=>w[x],set:Pr})}}if(bp=!0,n)for(const w in n){const x=n[w],g=Xe(x)?x.bind(r,r):Xe(x.get)?x.get.bind(r,r):Pr;g===Pr&&Ue(`Computed property "${w}" has no getter.`);const s=!Xe(x)&&Xe(x.set)?x.set.bind(r):()=>{Ue(`Write operation failed: computed property "${w}" is readonly.`)},v=ar({get:g,set:s});Object.defineProperty(i,w,{enumerable:!0,configurable:!0,get:()=>v.value,set:T=>v.value=T}),c("Computed",w)}if(h)for(const w in h)z_(h[w],i,r,w);if(d){const w=Xe(d)?d.call(r):d;Reflect.ownKeys(w).forEach(x=>{Vf(x,w[x])})}_&&uy(_,e,"c");function p(w,x){ze(x)?x.forEach(g=>w(g.bind(r))):x&&w(x.bind(r))}if(p(sg,S),p(Qs,R),p(fg,I),p(Gh,O),p(F_,L),p(j_,B),p(K_,J),p(W_,G),p(q_,re),p(Yh,C),p(Zh,$),p(H_,K),ze(se))if(se.length){const w=e.exposed||(e.exposed={});se.forEach(x=>{Object.defineProperty(w,x,{get:()=>r[x],set:g=>r[x]=g})})}else e.exposed||(e.exposed={});W&&e.render===Pr&&(e.render=W),M!=null&&(e.inheritAttrs=M),o&&(e.components=o),f&&(e.directives=f),K&&ag(e)}function eA(e,t,r=Pr){ze(e)&&(e=wp(e));for(const i in e){const a=e[i];let n;At(a)?"default"in a?n=vn(a.from||i,a.default,!0):n=vn(a.from||i):n=vn(a),tr(n)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>n.value,set:l=>n.value=l}):t[i]=n,r("Inject",i)}}function uy(e,t,r){_i(ze(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,r)}function z_(e,t,r,i){let a=i.includes(".")?pM(r,i):()=>r[i];if(kt(e)){const n=t[e];Xe(n)?Or(a,n):Ue(`Invalid watch handler specified by key "${e}"`,n)}else if(Xe(e))Or(a,e.bind(r));else if(At(e))if(ze(e))e.forEach(n=>z_(n,t,r,i));else{const n=Xe(e.handler)?e.handler.bind(r):t[e.handler];Xe(n)?Or(a,n,e):Ue(`Invalid watch handler specified by key "${e.handler}"`,n)}else Ue(`Invalid watch option: "${i}"`,e)}function dg(e){const t=e.type,{mixins:r,extends:i}=t,{mixins:a,optionsCache:n,config:{optionMergeStrategies:l}}=e.appContext,h=n.get(t);let d;return h?d=h:!a.length&&!r&&!i?d=t:(d={},a.length&&a.forEach(m=>Xu(d,m,l,!0)),Xu(d,t,l)),At(t)&&n.set(t,d),d}function Xu(e,t,r,i=!1){const{mixins:a,extends:n}=t;n&&Xu(e,n,r,!0),a&&a.forEach(l=>Xu(e,l,r,!0));for(const l in t)if(i&&l==="expose")Ue('"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.');else{const h=tA[l]||r&&r[l];e[l]=h?h(e[l],t[l]):t[l]}return e}const tA={data:hy,props:cy,emits:cy,methods:jf,computed:jf,beforeCreate:Fr,created:Fr,beforeMount:Fr,mounted:Fr,beforeUpdate:Fr,updated:Fr,beforeDestroy:Fr,beforeUnmount:Fr,destroyed:Fr,unmounted:Fr,activated:Fr,deactivated:Fr,errorCaptured:Fr,serverPrefetch:Fr,components:jf,directives:jf,watch:iA,provide:hy,inject:rA};function hy(e,t){return t?e?function(){return Nt(Xe(e)?e.call(this,this):e,Xe(t)?t.call(this,this):t)}:t:e}function rA(e,t){return jf(wp(e),wp(t))}function wp(e){if(ze(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function Fr(e,t){return e?[...new Set([].concat(e,t))]:t}function jf(e,t){return e?Nt(Object.create(null),e,t):t}function cy(e,t){return e?ze(e)&&ze(t)?[...new Set([...e,...t])]:Nt(Object.create(null),fl(e),fl(t??{})):t}function iA(e,t){if(!e)return t;if(!t)return e;const r=Nt(Object.create(null),e);for(const i in t)r[i]=Fr(e[i],t[i]);return r}function G_(){return{app:null,config:{isNativeTag:E8,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let nA=0;function oA(e,t){return function(i,a=null){Xe(i)||(i=Nt({},i)),a!=null&&!At(a)&&(Ue("root props passed to app.mount() must be an object."),a=null);const n=G_(),l=new WeakSet,h=[];let d=!1;const m=n.app={_uid:nA++,_component:i,_props:a,_container:null,_context:n,_instance:null,version:Cp,get config(){return n.config},set config(_){Ue("app.config cannot be replaced. Modify individual options instead.")},use(_,...S){return l.has(_)?Ue("Plugin has already been applied to target app."):_&&Xe(_.install)?(l.add(_),_.install(m,...S)):Xe(_)?(l.add(_),_(m,...S)):Ue('A plugin must either be a function or an object with an "install" function.'),m},mixin(_){return n.mixins.includes(_)?Ue("Mixin has already been applied to target app"+(_.name?`: ${_.name}`:"")):n.mixins.push(_),m},component(_,S){return Op(_,n.config),S?(n.components[_]&&Ue(`Component "${_}" has already been registered in target app.`),n.components[_]=S,m):n.components[_]},directive(_,S){return T_(_),S?(n.directives[_]&&Ue(`Directive "${_}" has already been registered in target app.`),n.directives[_]=S,m):n.directives[_]},mount(_,S,R){if(d)Ue("App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. `const createMyApp = () => createApp(App)`");else{_.__vue_app__&&Ue("There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling `app.unmount()` first.");const I=m._ceVNode||Jt(i,a);return I.appContext=n,R===!0?R="svg":R===!1&&(R=void 0),n.reload=()=>{e(Mi(I),_,R)},S&&t?t(I,_):e(I,_,R),d=!0,m._container=_,_.__vue_app__=m,m._instance=I.component,Z5(m,Cp),xl(I.component)}},onUnmount(_){typeof _!="function"&&Ue(`Expected function as first argument to app.onUnmount(), but got ${typeof _}`),h.push(_)},unmount(){d?(_i(h,m._instance,16),e(null,m._container),m._instance=null,X5(m),delete m._container.__vue_app__):Ue("Cannot unmount an app that is not mounted.")},provide(_,S){return _ in n.provides&&Ue(`App already provides property with key "${String(_)}". It will be overwritten with the new value.`),n.provides[_]=S,m},runWithContext(_){const S=ga;ga=m;try{return _()}finally{ga=S}}};return m}}let ga=null;function Vf(e,t){if(!ir)Ue("provide() can only be used inside setup().");else{let r=ir.provides;const i=ir.parent&&ir.parent.provides;i===r&&(r=ir.provides=Object.create(i)),r[e]=t}}function vn(e,t,r=!1){const i=ir||Qt;if(i||ga){const a=ga?ga._context.provides:i?i.parent==null?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides:void 0;if(a&&e in a)return a[e];if(arguments.length>1)return r&&Xe(t)?t.call(i&&i.proxy):t;Ue(`injection "${String(e)}" not found.`)}else Ue("inject() can only be used inside setup() or functional components.")}function aA(){return!!(ir||Qt||ga)}const Y_={},Z_=()=>Object.create(Y_),X_=e=>Object.getPrototypeOf(e)===Y_;function sA(e,t,r,i=!1){const a={},n=Z_();e.propsDefaults=Object.create(null),J_(e,t,a,n);for(const l in e.propsOptions[0])l in a||(a[l]=void 0);eM(t||{},a,e),r?e.props=i?a:Gv(a):e.type.props?e.props=a:e.props=n,e.attrs=n}function fA(e){for(;e;){if(e.type.__hmrId)return!0;e=e.parent}}function lA(e,t,r,i){const{props:a,attrs:n,vnode:{patchFlag:l}}=e,h=at(a),[d]=e.propsOptions;let m=!1;if(!fA(e)&&(i||l>0)&&!(l&16)){if(l&8){const _=e.vnode.dynamicProps;for(let S=0;S<_.length;S++){let R=_[S];if(Xh(e.emitsOptions,R))continue;const I=t[R];if(d)if(Rt(n,R))I!==n[R]&&(n[R]=I,m=!0);else{const O=fr(R);a[O]=_p(d,h,O,I,e,!1)}else I!==n[R]&&(n[R]=I,m=!0)}}}else{J_(e,t,a,n)&&(m=!0);let _;for(const S in h)(!t||!Rt(t,S)&&((_=wr(S))===S||!Rt(t,_)))&&(d?r&&(r[S]!==void 0||r[_]!==void 0)&&(a[S]=_p(d,h,S,void 0,e,!0)):delete a[S]);if(n!==h)for(const S in n)(!t||!Rt(t,S))&&(delete n[S],m=!0)}m&&pn(e.attrs,"set",""),eM(t||{},a,e)}function J_(e,t,r,i){const[a,n]=e.propsOptions;let l=!1,h;if(t)for(let d in t){if(fs(d))continue;const m=t[d];let _;a&&Rt(a,_=fr(d))?!n||!n.includes(_)?r[_]=m:(h||(h={}))[_]=m:Xh(e.emitsOptions,d)||(!(d in i)||m!==i[d])&&(i[d]=m,l=!0)}if(n){const d=at(r),m=h||mt;for(let _=0;_<n.length;_++){const S=n[_];r[S]=_p(a,d,S,m[S],e,!Rt(m,S))}}return l}function _p(e,t,r,i,a,n){const l=e[r];if(l!=null){const h=Rt(l,"default");if(h&&i===void 0){const d=l.default;if(l.type!==Function&&!l.skipFactory&&Xe(d)){const{propsDefaults:m}=a;if(r in m)i=m[r];else{const _=Ma(a);i=m[r]=d.call(null,t),_()}}else i=d;a.ce&&a.ce._setProp(r,i)}l[0]&&(n&&!h?i=!1:l[1]&&(i===""||i===wr(r))&&(i=!0))}return i}const uA=new WeakMap;function Q_(e,t,r=!1){const i=r?uA:t.propsCache,a=i.get(e);if(a)return a;const n=e.props,l={},h=[];let d=!1;if(!Xe(e)){const _=S=>{d=!0;const[R,I]=Q_(S,t,!0);Nt(l,R),I&&h.push(...I)};!r&&t.mixins.length&&t.mixins.forEach(_),e.extends&&_(e.extends),e.mixins&&e.mixins.forEach(_)}if(!n&&!d)return At(e)&&i.set(e,ss),ss;if(ze(n))for(let _=0;_<n.length;_++){kt(n[_])||Ue("props must be strings when using array syntax.",n[_]);const S=fr(n[_]);dy(S)&&(l[S]=mt)}else if(n){At(n)||Ue("invalid props options",n);for(const _ in n){const S=fr(_);if(dy(S)){const R=n[_],I=l[S]=ze(R)||Xe(R)?{type:R}:Nt({},R),O=I.type;let L=!1,B=!0;if(ze(O))for(let P=0;P<O.length;++P){const C=O[P],N=Xe(C)&&C.name;if(N==="Boolean"){L=!0;break}else N==="String"&&(B=!1)}else L=Xe(O)&&O.name==="Boolean";I[0]=L,I[1]=B,(L||Rt(I,"default"))&&h.push(S)}}}const m=[l,h];return At(e)&&i.set(e,m),m}function dy(e){return e[0]!=="$"&&!fs(e)?!0:(Ue(`Invalid prop name: "${e}" is a reserved property.`),!1)}function hA(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function eM(e,t,r){const i=at(t),a=r.propsOptions[0];for(const n in a){let l=a[n];l!=null&&cA(n,i[n],l,Ki(i),!Rt(e,n)&&!Rt(e,wr(n)))}}function cA(e,t,r,i,a){const{type:n,required:l,validator:h,skipCheck:d}=r;if(l&&a){Ue('Missing required prop: "'+e+'"');return}if(!(t==null&&!l)){if(n!=null&&n!==!0&&!d){let m=!1;const _=ze(n)?n:[n],S=[];for(let R=0;R<_.length&&!m;R++){const{valid:I,expectedType:O}=pA(t,_[R]);S.push(O||""),m=I}if(!m){Ue(vA(e,t,S));return}}h&&!h(t,i)&&Ue('Invalid prop: custom validator check failed for prop "'+e+'".')}}const dA=ni("String,Number,Boolean,Function,Symbol,BigInt");function pA(e,t){let r;const i=hA(t);if(i==="null")r=e===null;else if(dA(i)){const a=typeof e;r=a===i.toLowerCase(),!r&&a==="object"&&(r=e instanceof t)}else i==="Object"?r=At(e):i==="Array"?r=ze(e):r=e instanceof t;return{valid:r,expectedType:i}}function vA(e,t,r){if(r.length===0)return`Prop type [] for prop "${e}" won't match anything. Did you mean to use type Array instead?`;let i=`Invalid prop: type check failed for prop "${e}". Expected ${r.map(No).join(" | ")}`;const a=r[0],n=Fv(t),l=py(t,a),h=py(t,n);return r.length===1&&vy(a)&&!gA(a,n)&&(i+=` with value ${l}`),i+=`, got ${n} `,vy(n)&&(i+=`with value ${h}.`),i}function py(e,t){return t==="String"?`"${e}"`:t==="Number"?`${Number(e)}`:`${e}`}function vy(e){return["string","number","boolean"].some(r=>e.toLowerCase()===r)}function gA(...e){return e.some(t=>t.toLowerCase()==="boolean")}const tM=e=>e[0]==="_"||e==="$stable",pg=e=>ze(e)?e.map(qr):[qr(e)],mA=(e,t,r)=>{if(t._n)return t;const i=ig((...a)=>(ir&&(!r||r.root===ir.root)&&Ue(`Slot "${e}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`),pg(t(...a))),r);return i._c=!1,i},rM=(e,t,r)=>{const i=e._ctx;for(const a in e){if(tM(a))continue;const n=e[a];if(Xe(n))t[a]=mA(a,n,i);else if(n!=null){Ue(`Non-function value encountered for slot "${a}". Prefer function slots for better performance.`);const l=pg(n);t[a]=()=>l}}},iM=(e,t)=>{Js(e.vnode)||Ue("Non-function value encountered for default slot. Prefer function slots for better performance.");const r=pg(t);e.slots.default=()=>r},Mp=(e,t,r)=>{for(const i in t)(r||i!=="_")&&(e[i]=t[i])},yA=(e,t,r)=>{const i=e.slots=Z_();if(e.vnode.shapeFlag&32){const a=t._;a?(Mp(i,t,r),r&&Ms(i,"_",a,!0)):rM(t,i)}else t&&iM(e,t)},bA=(e,t,r)=>{const{vnode:i,slots:a}=e;let n=!0,l=mt;if(i.shapeFlag&32){const h=t._;h?Vi?(Mp(a,t,r),pn(e,"set","$slots")):r&&h===1?n=!1:Mp(a,t,r):(n=!t.$stable,rM(t,a)),l=t}else t&&(iM(e,t),l={default:1});if(n)for(const h in a)!tM(h)&&l[h]==null&&delete a[h]};let pf,To;function kn(e,t){e.appContext.config.performance&&Ju()&&To.mark(`vue-${t}-${e.uid}`),eR(e,t,Ju()?To.now():Date.now())}function $n(e,t){if(e.appContext.config.performance&&Ju()){const r=`vue-${t}-${e.uid}`,i=r+":end";To.mark(i),To.measure(`<${Qh(e,e.type)}> ${t}`,r,i),To.clearMarks(r),To.clearMarks(i)}tR(e,t,Ju()?To.now():Date.now())}function Ju(){return pf!==void 0||(typeof window<"u"&&window.performance?(pf=!0,To=window.performance):pf=!1),pf}function wA(){const e=[];if(e.length){const t=e.length>1;console.warn(`Feature flag${t?"s":""} ${e.join(", ")} ${t?"are":"is"} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.
+
+For more details, see https://link.vuejs.org/feature-flags.`)}}const dr=bM;function nM(e){return aM(e)}function oM(e){return aM(e,vR)}function aM(e,t){wA();const r=Uv();r.__VUE__=!0,tg(r.__VUE_DEVTOOLS_GLOBAL_HOOK__,r);const{insert:i,remove:a,patchProp:n,createElement:l,createText:h,createComment:d,setText:m,setElementText:_,parentNode:S,nextSibling:R,setScopeId:I=Pr,insertStaticContent:O}=e,L=(U,Z,j,k=null,H=null,z=null,oe=void 0,ee=null,ne=Vi?!1:!!Z.dynamicChildren)=>{if(U===Z)return;U&&!qi(U,Z)&&(k=q(U),D(U,H,z,!0),U=null),Z.patchFlag===-2&&(ne=!1,Z.dynamicChildren=null);const{type:me,ref:he,shapeFlag:ue}=Z;switch(me){case gn:B(U,Z,j,k);break;case Xt:P(U,Z,j,k);break;case Co:U==null?C(Z,j,k,oe):N(U,Z,j,oe);break;case Ot:f(U,Z,j,k,H,z,oe,ee,ne);break;default:ue&1?G(U,Z,j,k,H,z,oe,ee,ne):ue&6?u(U,Z,j,k,H,z,oe,ee,ne):ue&64||ue&128?me.process(U,Z,j,k,H,z,oe,ee,ne,b):Ue("Invalid VNode type:",me,`(${typeof me})`)}he!=null&&H&&Yu(he,U&&U.ref,z,Z||U,!Z)},B=(U,Z,j,k)=>{if(U==null)i(Z.el=h(Z.children),j,k);else{const H=Z.el=U.el;Z.children!==U.children&&m(H,Z.children)}},P=(U,Z,j,k)=>{U==null?i(Z.el=d(Z.children||""),j,k):Z.el=U.el},C=(U,Z,j,k)=>{[U.el,U.anchor]=O(U.children,Z,j,k,U.el,U.anchor)},N=(U,Z,j,k)=>{if(Z.children!==U.children){const H=R(U.anchor);W(U),[Z.el,Z.anchor]=O(Z.children,j,H,k)}else Z.el=U.el,Z.anchor=U.anchor},$=({el:U,anchor:Z},j,k)=>{let H;for(;U&&U!==Z;)H=R(U),i(U,j,k),U=H;i(Z,j,k)},W=({el:U,anchor:Z})=>{let j;for(;U&&U!==Z;)j=R(U),a(U),U=j;a(Z)},G=(U,Z,j,k,H,z,oe,ee,ne)=>{Z.type==="svg"?oe="svg":Z.type==="math"&&(oe="mathml"),U==null?re(Z,j,k,H,z,oe,ee,ne):se(U,Z,H,z,oe,ee,ne)},re=(U,Z,j,k,H,z,oe,ee)=>{let ne,me;const{props:he,shapeFlag:ue,transition:xe,dirs:le}=U;if(ne=U.el=l(U.type,z,he&&he.is,he),ue&8?_(ne,U.children):ue&16&&K(U.children,ne,null,k,H,vd(U,z),oe,ee),le&&fn(U,null,k,"created"),J(ne,U,U.scopeId,oe,k),he){for(const ce in he)ce!=="value"&&!fs(ce)&&n(ne,ce,null,he[ce],z,k);"value"in he&&n(ne,"value",null,he.value,z),(me=he.onVnodeBeforeMount)&&Yr(me,k,U)}Ms(ne,"__vnode",U,!0),Ms(ne,"__vueParentComponent",k,!0),le&&fn(U,null,k,"beforeMount");const ve=sM(H,xe);ve&&xe.beforeEnter(ne),i(ne,Z,j),((me=he&&he.onVnodeMounted)||ve||le)&&dr(()=>{me&&Yr(me,k,U),ve&&xe.enter(ne),le&&fn(U,null,k,"mounted")},H)},J=(U,Z,j,k,H)=>{if(j&&I(U,j),k)for(let z=0;z<k.length;z++)I(U,k[z]);if(H){let z=H.subTree;if(z.patchFlag>0&&z.patchFlag&2048&&(z=Jh(z.children)||z),Z===z||rh(z.type)&&(z.ssContent===Z||z.ssFallback===Z)){const oe=H.vnode;J(U,oe,oe.scopeId,oe.slotScopeIds,H.parent)}}},K=(U,Z,j,k,H,z,oe,ee,ne=0)=>{for(let me=ne;me<U.length;me++){const he=U[me]=ee?xo(U[me]):qr(U[me]);L(null,he,Z,j,k,H,z,oe,ee)}},se=(U,Z,j,k,H,z,oe)=>{const ee=Z.el=U.el;ee.__vnode=Z;let{patchFlag:ne,dynamicChildren:me,dirs:he}=Z;ne|=U.patchFlag&16;const ue=U.props||mt,xe=Z.props||mt;let le;if(j&&Jo(j,!1),(le=xe.onVnodeBeforeUpdate)&&Yr(le,j,Z,U),he&&fn(Z,U,j,"beforeUpdate"),j&&Jo(j,!0),Vi&&(ne=0,oe=!1,me=null),(ue.innerHTML&&xe.innerHTML==null||ue.textContent&&xe.textContent==null)&&_(ee,""),me?(M(U.dynamicChildren,me,ee,j,k,vd(Z,H),z),Qu(U,Z)):oe||g(U,Z,ee,null,j,k,vd(Z,H),z,!1),ne>0){if(ne&16)o(ee,ue,xe,j,H);else if(ne&2&&ue.class!==xe.class&&n(ee,"class",null,xe.class,H),ne&4&&n(ee,"style",ue.style,xe.style,H),ne&8){const ve=Z.dynamicProps;for(let ce=0;ce<ve.length;ce++){const ie=ve[ce],fe=ue[ie],Ee=xe[ie];(Ee!==fe||ie==="value")&&n(ee,ie,fe,Ee,H,j)}}ne&1&&U.children!==Z.children&&_(ee,Z.children)}else!oe&&me==null&&o(ee,ue,xe,j,H);((le=xe.onVnodeUpdated)||he)&&dr(()=>{le&&Yr(le,j,Z,U),he&&fn(Z,U,j,"updated")},k)},M=(U,Z,j,k,H,z,oe)=>{for(let ee=0;ee<Z.length;ee++){const ne=U[ee],me=Z[ee],he=ne.el&&(ne.type===Ot||!qi(ne,me)||ne.shapeFlag&70)?S(ne.el):j;L(ne,me,he,null,k,H,z,oe,!0)}},o=(U,Z,j,k,H)=>{if(Z!==j){if(Z!==mt)for(const z in Z)!fs(z)&&!(z in j)&&n(U,z,Z[z],null,H,k);for(const z in j){if(fs(z))continue;const oe=j[z],ee=Z[z];oe!==ee&&z!=="value"&&n(U,z,ee,oe,H,k)}"value"in j&&n(U,"value",Z.value,j.value,H)}},f=(U,Z,j,k,H,z,oe,ee,ne)=>{const me=Z.el=U?U.el:h(""),he=Z.anchor=U?U.anchor:h("");let{patchFlag:ue,dynamicChildren:xe,slotScopeIds:le}=Z;(Vi||ue&2048)&&(ue=0,ne=!1,xe=null),le&&(ee=ee?ee.concat(le):le),U==null?(i(me,j,k),i(he,j,k),K(Z.children||[],j,he,H,z,oe,ee,ne)):ue>0&&ue&64&&xe&&U.dynamicChildren?(M(U.dynamicChildren,xe,j,H,z,oe,ee),Qu(U,Z)):g(U,Z,j,he,H,z,oe,ee,ne)},u=(U,Z,j,k,H,z,oe,ee,ne)=>{Z.slotScopeIds=ee,U==null?Z.shapeFlag&512?H.ctx.activate(Z,j,k,oe,ne):c(Z,j,k,H,z,oe,ne):p(U,Z,ne)},c=(U,Z,j,k,H,z,oe)=>{const ee=U.component=RM(U,k,H);if(ee.type.__hmrId&&V5(ee),ls(U),kn(ee,"mount"),Js(U)&&(ee.ctx.renderer=b),kn(ee,"init"),TM(ee,!1,oe),$n(ee,"init"),ee.asyncDep){if(Vi&&(U.el=null),H&&H.registerDep(ee,w,oe),!U.el){const ne=ee.subTree=Jt(Xt);P(null,ne,Z,j)}}else w(ee,U,Z,j,H,z,oe);us(),$n(ee,"mount")},p=(U,Z,j)=>{const k=Z.component=U.component;if(AA(U,Z,j))if(k.asyncDep&&!k.asyncResolved){ls(Z),x(k,Z,j),us();return}else k.next=Z,k.update();else Z.el=U.el,k.vnode=Z},w=(U,Z,j,k,H,z,oe)=>{const ee=()=>{if(U.isMounted){let{next:ue,bu:xe,u:le,parent:ve,vnode:ce}=U;{const be=fM(U);if(be){ue&&(ue.el=ce.el,x(U,ue,oe)),be.asyncDep.then(()=>{U.isUnmounted||ee()});return}}let ie=ue,fe;ls(ue||U.vnode),Jo(U,!1),ue?(ue.el=ce.el,x(U,ue,oe)):ue=ce,xe&&Ao(xe),(fe=ue.props&&ue.props.onVnodeBeforeUpdate)&&Yr(fe,ve,ue,ce),Jo(U,!0),kn(U,"render");const Ee=Mu(U);$n(U,"render");const de=U.subTree;U.subTree=Ee,kn(U,"patch"),L(de,Ee,S(de.el),q(de),U,H,z),$n(U,"patch"),ue.el=Ee.el,ie===null&&vg(U,Ee.el),le&&dr(le,H),(fe=ue.props&&ue.props.onVnodeUpdated)&&dr(()=>Yr(fe,ve,ue,ce),H),R_(U),us()}else{let ue;const{el:xe,props:le}=Z,{bm:ve,m:ce,parent:ie,root:fe,type:Ee}=U,de=Po(Z);if(Jo(U,!1),ve&&Ao(ve),!de&&(ue=le&&le.onVnodeBeforeMount)&&Yr(ue,ie,Z),Jo(U,!0),xe&&F){const be=()=>{kn(U,"render"),U.subTree=Mu(U),$n(U,"render"),kn(U,"hydrate"),F(xe,U.subTree,U,H,null),$n(U,"hydrate")};de&&Ee.__asyncHydrate?Ee.__asyncHydrate(xe,U,be):be()}else{fe.ce&&fe.ce._injectChildStyle(Ee),kn(U,"render");const be=U.subTree=Mu(U);$n(U,"render"),kn(U,"patch"),L(null,be,j,k,U,H,z),$n(U,"patch"),Z.el=be.el}if(ce&&dr(ce,H),!de&&(ue=le&&le.onVnodeMounted)){const be=Z;dr(()=>Yr(ue,ie,be),H)}(Z.shapeFlag&256||ie&&Po(ie.vnode)&&ie.vnode.shapeFlag&256)&&U.a&&dr(U.a,H),U.isMounted=!0,vp(U),Z=j=k=null}};U.scope.on();const ne=U.effect=new tl(ee);U.scope.off();const me=U.update=ne.run.bind(ne),he=U.job=ne.runIfDirty.bind(ne);he.i=U,he.id=U.uid,ne.scheduler=()=>Wh(he),Jo(U,!0),ne.onTrack=U.rtc?ue=>Ao(U.rtc,ue):void 0,ne.onTrigger=U.rtg?ue=>Ao(U.rtg,ue):void 0,me()},x=(U,Z,j)=>{Z.component=U;const k=U.vnode.props;U.vnode=Z,U.next=null,lA(U,Z.props,k,j),bA(U,Z.children,j),lo(),ey(U),uo()},g=(U,Z,j,k,H,z,oe,ee,ne=!1)=>{const me=U&&U.children,he=U?U.shapeFlag:0,ue=Z.children,{patchFlag:xe,shapeFlag:le}=Z;if(xe>0){if(xe&128){v(me,ue,j,k,H,z,oe,ee,ne);return}else if(xe&256){s(me,ue,j,k,H,z,oe,ee,ne);return}}le&8?(he&16&&E(me,H,z),ue!==me&&_(j,ue)):he&16?le&16?v(me,ue,j,k,H,z,oe,ee,ne):E(me,H,z,!0):(he&8&&_(j,""),le&16&&K(ue,j,k,H,z,oe,ee,ne))},s=(U,Z,j,k,H,z,oe,ee,ne)=>{U=U||ss,Z=Z||ss;const me=U.length,he=Z.length,ue=Math.min(me,he);let xe;for(xe=0;xe<ue;xe++){const le=Z[xe]=ne?xo(Z[xe]):qr(Z[xe]);L(U[xe],le,j,null,H,z,oe,ee,ne)}me>he?E(U,H,z,!0,!1,ue):K(Z,j,k,H,z,oe,ee,ne,ue)},v=(U,Z,j,k,H,z,oe,ee,ne)=>{let me=0;const he=Z.length;let ue=U.length-1,xe=he-1;for(;me<=ue&&me<=xe;){const le=U[me],ve=Z[me]=ne?xo(Z[me]):qr(Z[me]);if(qi(le,ve))L(le,ve,j,null,H,z,oe,ee,ne);else break;me++}for(;me<=ue&&me<=xe;){const le=U[ue],ve=Z[xe]=ne?xo(Z[xe]):qr(Z[xe]);if(qi(le,ve))L(le,ve,j,null,H,z,oe,ee,ne);else break;ue--,xe--}if(me>ue){if(me<=xe){const le=xe+1,ve=le<he?Z[le].el:k;for(;me<=xe;)L(null,Z[me]=ne?xo(Z[me]):qr(Z[me]),j,ve,H,z,oe,ee,ne),me++}}else if(me>xe)for(;me<=ue;)D(U[me],H,z,!0),me++;else{const le=me,ve=me,ce=new Map;for(me=ve;me<=xe;me++){const Se=Z[me]=ne?xo(Z[me]):qr(Z[me]);Se.key!=null&&(ce.has(Se.key)&&Ue("Duplicate keys found during update:",JSON.stringify(Se.key),"Make sure keys are unique."),ce.set(Se.key,me))}let ie,fe=0;const Ee=xe-ve+1;let de=!1,be=0;const Ke=new Array(Ee);for(me=0;me<Ee;me++)Ke[me]=0;for(me=le;me<=ue;me++){const Se=U[me];if(fe>=Ee){D(Se,H,z,!0);continue}let qe;if(Se.key!=null)qe=ce.get(Se.key);else for(ie=ve;ie<=xe;ie++)if(Ke[ie-ve]===0&&qi(Se,Z[ie])){qe=ie;break}qe===void 0?D(Se,H,z,!0):(Ke[qe-ve]=me+1,qe>=be?be=qe:de=!0,L(Se,Z[qe],j,null,H,z,oe,ee,ne),fe++)}const we=de?_A(Ke):ss;for(ie=we.length-1,me=Ee-1;me>=0;me--){const Se=ve+me,qe=Z[Se],ge=Se+1<he?Z[Se+1].el:k;Ke[me]===0?L(null,qe,j,ge,H,z,oe,ee,ne):de&&(ie<0||me!==we[ie]?T(qe,j,ge,2):ie--)}}},T=(U,Z,j,k,H=null)=>{const{el:z,type:oe,transition:ee,children:ne,shapeFlag:me}=U;if(me&6){T(U.component.subTree,Z,j,k);return}if(me&128){U.suspense.move(Z,j,k);return}if(me&64){oe.move(U,Z,j,b);return}if(oe===Ot){i(z,Z,j);for(let ue=0;ue<ne.length;ue++)T(ne[ue],Z,j,k);i(U.anchor,Z,j);return}if(oe===Co){$(U,Z,j);return}if(k!==2&&me&1&&ee)if(k===0)ee.beforeEnter(z),i(z,Z,j),dr(()=>ee.enter(z),H);else{const{leave:ue,delayLeave:xe,afterLeave:le}=ee,ve=()=>i(z,Z,j),ce=()=>{ue(z,()=>{ve(),le&&le()})};xe?xe(z,ve,ce):ce()}else i(z,Z,j)},D=(U,Z,j,k=!1,H=!1)=>{const{type:z,props:oe,ref:ee,children:ne,dynamicChildren:me,shapeFlag:he,patchFlag:ue,dirs:xe,cacheIndex:le}=U;if(ue===-2&&(H=!1),ee!=null&&Yu(ee,null,j,U,!0),le!=null&&(Z.renderCache[le]=void 0),he&256){Z.ctx.deactivate(U);return}const ve=he&1&&xe,ce=!Po(U);let ie;if(ce&&(ie=oe&&oe.onVnodeBeforeUnmount)&&Yr(ie,Z,U),he&6)A(U.component,j,k);else{if(he&128){U.suspense.unmount(j,k);return}ve&&fn(U,null,Z,"beforeUnmount"),he&64?U.type.remove(U,Z,j,b,k):me&&!me.hasOnce&&(z!==Ot||ue>0&&ue&64)?E(me,Z,j,!1,!0):(z===Ot&&ue&384||!H&&he&16)&&E(ne,Z,j),k&&Y(U)}(ce&&(ie=oe&&oe.onVnodeUnmounted)||ve)&&dr(()=>{ie&&Yr(ie,Z,U),ve&&fn(U,null,Z,"unmounted")},j)},Y=U=>{const{type:Z,el:j,anchor:k,transition:H}=U;if(Z===Ot){U.patchFlag>0&&U.patchFlag&2048&&H&&!H.persisted?U.children.forEach(oe=>{oe.type===Xt?a(oe.el):Y(oe)}):Q(j,k);return}if(Z===Co){W(U);return}const z=()=>{a(j),H&&!H.persisted&&H.afterLeave&&H.afterLeave()};if(U.shapeFlag&1&&H&&!H.persisted){const{leave:oe,delayLeave:ee}=H,ne=()=>oe(j,z);ee?ee(U.el,z,ne):ne()}else z()},Q=(U,Z)=>{let j;for(;U!==Z;)j=R(U),a(U),U=j;a(Z)},A=(U,Z,j)=>{U.type.__hmrId&&z5(U);const{bum:k,scope:H,job:z,subTree:oe,um:ee,m:ne,a:me}=U;eh(ne),eh(me),k&&Ao(k),H.stop(),z&&(z.flags|=8,D(oe,U,Z,j)),ee&&dr(ee,Z),dr(()=>{U.isUnmounted=!0},Z),Z&&Z.pendingBranch&&!Z.isUnmounted&&U.asyncDep&&!U.asyncResolved&&U.suspenseId===Z.pendingId&&(Z.deps--,Z.deps===0&&Z.resolve()),Q5(U)},E=(U,Z,j,k=!1,H=!1,z=0)=>{for(let oe=z;oe<U.length;oe++)D(U[oe],Z,j,k,H)},q=U=>{if(U.shapeFlag&6)return q(U.component.subTree);if(U.shapeFlag&128)return U.suspense.next();const Z=R(U.anchor||U.el),j=Z&&Z[O_];return j?R(j):Z};let V=!1;const X=(U,Z,j)=>{U==null?Z._vnode&&D(Z._vnode,null,null,!0):L(Z._vnode||null,U,Z,null,null,null,j),Z._vnode=U,V||(V=!0,ey(),zu(),V=!1)},b={p:L,um:D,m:T,r:Y,mt:c,mc:K,pc:g,pbc:M,n:q,o:e};let y,F;return t&&([y,F]=t(b)),{render:X,hydrate:y,createApp:oA(X,y)}}function vd({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function Jo({effect:e,job:t},r){r?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function sM(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Qu(e,t,r=!1){const i=e.children,a=t.children;if(ze(i)&&ze(a))for(let n=0;n<i.length;n++){const l=i[n];let h=a[n];h.shapeFlag&1&&!h.dynamicChildren&&((h.patchFlag<=0||h.patchFlag===32)&&(h=a[n]=xo(a[n]),h.el=l.el),!r&&h.patchFlag!==-2&&Qu(l,h)),h.type===gn&&(h.el=l.el),h.type===Xt&&!h.el&&(h.el=l.el)}}function _A(e){const t=e.slice(),r=[0];let i,a,n,l,h;const d=e.length;for(i=0;i<d;i++){const m=e[i];if(m!==0){if(a=r[r.length-1],e[a]<m){t[i]=a,r.push(i);continue}for(n=0,l=r.length-1;n<l;)h=n+l>>1,e[r[h]]<m?n=h+1:l=h;m<e[r[n]]&&(n>0&&(t[i]=r[n-1]),r[n]=i)}}for(n=r.length,l=r[n-1];n-- >0;)r[n]=l,l=t[l];return r}function fM(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:fM(t)}function eh(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const lM=Symbol.for("v-scx"),uM=()=>{{const e=vn(lM);return e||Ue("Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build."),e}};function hM(e,t){return Ml(e,null,t)}function cM(e,t){return Ml(e,null,Nt({},t,{flush:"post"}))}function dM(e,t){return Ml(e,null,Nt({},t,{flush:"sync"}))}function Or(e,t,r){return Xe(t)||Ue("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),Ml(e,t,r)}function Ml(e,t,r=mt){const{immediate:i,deep:a,flush:n,once:l}=r;t||(i!==void 0&&Ue('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),a!==void 0&&Ue('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'),l!==void 0&&Ue('watch() "once" option is only respected when using the watch(source, callback, options?) signature.'));const h=Nt({},r);h.onWarn=Ue;let d;if(Sl)if(n==="sync"){const R=uM();d=R.__watcherHandles||(R.__watcherHandles=[])}else if(!t||i)h.once=!0;else{const R=()=>{};return R.stop=Pr,R.resume=Pr,R.pause=Pr,R}const m=ir;h.call=(R,I,O)=>_i(R,m,I,O);let _=!1;n==="post"?h.scheduler=R=>{dr(R,m&&m.suspense)}:n!=="sync"&&(_=!0,h.scheduler=(R,I)=>{I?R():Wh(R)}),h.augmentJob=R=>{t&&(R.flags|=4),_&&(R.flags|=2,m&&(R.id=m.uid,R.i=m))};const S=$5(e,t,h);return d&&d.push(S),S}function MA(e,t,r){const i=this.proxy,a=kt(e)?e.includes(".")?pM(i,e):()=>i[e]:e.bind(i,i);let n;Xe(t)?n=t:(n=t.handler,r=t);const l=Ma(this),h=Ml(a,n.bind(i),r);return l(),h}function pM(e,t){const r=t.split(".");return()=>{let i=e;for(let a=0;a<r.length&&i;a++)i=i[r[a]];return i}}function SA(e,t,r=mt){const i=zr();if(!i)return Ue("useModel() called without active instance."),Tr();if(!i.propsOptions[0][t])return Ue(`useModel() called with prop "${t}" which is not declared.`),Tr();const a=fr(t),n=wr(t),l=vM(e,t),h=y_((d,m)=>{let _,S=mt,R;return dM(()=>{const I=e[t];Ur(_,I)&&(_=I,m())}),{get(){return d(),r.get?r.get(_):_},set(I){const O=r.set?r.set(I):I;if(!Ur(O,_)&&!(S!==mt&&Ur(I,S)))return;const L=i.vnode.props;L&&(t in L||a in L||n in L)&&(`onUpdate:${t}`in L||`onUpdate:${a}`in L||`onUpdate:${n}`in L)||(_=I,m()),i.emit(`update:${t}`,O),Ur(I,O)&&Ur(I,S)&&!Ur(O,R)&&m(),S=I,R=O}}});return h[Symbol.iterator]=()=>{let d=0;return{next(){return d<2?{value:d++?l||mt:h,done:!1}:{done:!0}}}},h}const vM=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${fr(t)}Modifiers`]||e[`${wr(t)}Modifiers`];function xA(e,t,...r){if(e.isUnmounted)return;const i=e.vnode.props||mt;{const{emitsOptions:_,propsOptions:[S]}=e;if(_)if(!(t in _))(!S||!(Hn(fr(t))in S))&&Ue(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${Hn(fr(t))}" prop.`);else{const R=_[t];Xe(R)&&(R(...r)||Ue(`Invalid event arguments: event validation failed for event "${t}".`))}}let a=r;const n=t.startsWith("update:"),l=n&&vM(i,t.slice(7));l&&(l.trim&&(a=r.map(_=>kt(_)?_.trim():_)),l.number&&(a=r.map(qu))),rR(e,t,a);{const _=t.toLowerCase();_!==t&&i[Hn(_)]&&Ue(`Event "${_}" is emitted in component ${Qh(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${wr(t)}" instead of "${t}".`)}let h,d=i[h=Hn(t)]||i[h=Hn(fr(t))];!d&&n&&(d=i[h=Hn(wr(t))]),d&&_i(d,e,6,a);const m=i[h+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[h])return;e.emitted[h]=!0,_i(m,e,6,a)}}function gM(e,t,r=!1){const i=t.emitsCache,a=i.get(e);if(a!==void 0)return a;const n=e.emits;let l={},h=!1;if(!Xe(e)){const d=m=>{const _=gM(m,t,!0);_&&(h=!0,Nt(l,_))};!r&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!n&&!h?(At(e)&&i.set(e,null),null):(ze(n)?n.forEach(d=>l[d]=null):Nt(l,n),At(e)&&i.set(e,l),l)}function Xh(e,t){return!e||!Ys(t)?!1:(t=t.slice(2).replace(/Once$/,""),Rt(e,t[0].toLowerCase()+t.slice(1))||Rt(e,wr(t))||Rt(e,t))}let Sp=!1;function th(){Sp=!0}function Mu(e){const{type:t,vnode:r,proxy:i,withProxy:a,propsOptions:[n],slots:l,attrs:h,emit:d,render:m,renderCache:_,props:S,data:R,setupState:I,ctx:O,inheritAttrs:L}=e,B=sl(e);let P,C;Sp=!1;try{if(r.shapeFlag&4){const W=a||i,G=I.__isScriptSetup?new Proxy(W,{get(re,J,K){return Ue(`Property '${String(J)}' was accessed via 'this'. Avoid using 'this' in templates.`),Reflect.get(re,J,K)}}):W;P=qr(m.call(G,W,_,Ki(S),I,R,O)),C=h}else{const W=t;h===S&&th(),P=qr(W.length>1?W(Ki(S),{get attrs(){return th(),Ki(h)},slots:l,emit:d}):W(Ki(S),null)),C=t.props?h:EA(h)}}catch(W){zf.length=0,zo(W,e,1),P=Jt(Xt)}let N=P,$;if(P.patchFlag>0&&P.patchFlag&2048&&([N,$]=mM(P)),C&&L!==!1){const W=Object.keys(C),{shapeFlag:G}=N;if(W.length){if(G&7)n&&W.some(Hu)&&(C=RA(C,n)),N=Mi(N,C,!1,!0);else if(!Sp&&N.type!==Xt){const re=Object.keys(h),J=[],K=[];for(let se=0,M=re.length;se<M;se++){const o=re[se];Ys(o)?Hu(o)||J.push(o[2].toLowerCase()+o.slice(3)):K.push(o)}K.length&&Ue(`Extraneous non-props attributes (${K.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`),J.length&&Ue(`Extraneous non-emits event listeners (${J.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`)}}}return r.dirs&&(gy(N)||Ue("Runtime directive used on component with non-element root node. The directives will not function as intended."),N=Mi(N,null,!1,!0),N.dirs=N.dirs?N.dirs.concat(r.dirs):r.dirs),r.transition&&(gy(N)||Ue("Component inside <Transition> renders non-element root node that cannot be animated."),Qn(N,r.transition)),$?$(N):P=N,sl(B),P}const mM=e=>{const t=e.children,r=e.dynamicChildren,i=Jh(t,!1);if(i){if(i.patchFlag>0&&i.patchFlag&2048)return mM(i)}else return[e,void 0];const a=t.indexOf(i),n=r?r.indexOf(i):-1,l=h=>{t[a]=h,r&&(n>-1?r[n]=h:h.patchFlag>0&&(e.dynamicChildren=[...r,h]))};return[qr(i),l]};function Jh(e,t=!0){let r;for(let i=0;i<e.length;i++){const a=e[i];if(Mn(a)){if(a.type!==Xt||a.children==="v-if"){if(r)return;if(r=a,t&&r.patchFlag>0&&r.patchFlag&2048)return Jh(r.children)}}else return}return r}const EA=e=>{let t;for(const r in e)(r==="class"||r==="style"||Ys(r))&&((t||(t={}))[r]=e[r]);return t},RA=(e,t)=>{const r={};for(const i in e)(!Hu(i)||!(i.slice(9)in t))&&(r[i]=e[i]);return r},gy=e=>e.shapeFlag&7||e.type===Xt;function AA(e,t,r){const{props:i,children:a,component:n}=e,{props:l,children:h,patchFlag:d}=t,m=n.emitsOptions;if((a||h)&&Vi||t.dirs||t.transition)return!0;if(r&&d>=0){if(d&1024)return!0;if(d&16)return i?my(i,l,m):!!l;if(d&8){const _=t.dynamicProps;for(let S=0;S<_.length;S++){const R=_[S];if(l[R]!==i[R]&&!Xh(m,R))return!0}}}else return(a||h)&&(!h||!h.$stable)?!0:i===l?!1:i?l?my(i,l,m):!0:!!l;return!1}function my(e,t,r){const i=Object.keys(t);if(i.length!==Object.keys(e).length)return!0;for(let a=0;a<i.length;a++){const n=i[a];if(t[n]!==e[n]&&!Xh(r,n))return!0}return!1}function vg({vnode:e,parent:t},r){for(;t;){const i=t.subTree;if(i.suspense&&i.suspense.activeBranch===e&&(i.el=e.el),i===e)(e=t.vnode).el=r,t=t.parent;else break}}const rh=e=>e.__isSuspense;let xp=0;const TA={name:"Suspense",__isSuspense:!0,process(e,t,r,i,a,n,l,h,d,m){if(e==null)IA(t,r,i,a,n,l,h,d,m);else{if(n&&n.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}PA(e,t,r,i,a,l,h,d,m)}},hydrate:CA,normalize:BA},OA=TA;function ll(e,t){const r=e.props&&e.props[t];Xe(r)&&r()}function IA(e,t,r,i,a,n,l,h,d){const{p:m,o:{createElement:_}}=d,S=_("div"),R=e.suspense=yM(e,a,i,t,S,r,n,l,h,d);m(null,R.pendingBranch=e.ssContent,S,null,i,R,n,l),R.deps>0?(ll(e,"onPending"),ll(e,"onFallback"),m(null,e.ssFallback,t,r,i,null,n,l),cs(R,e.ssFallback)):R.resolve(!1,!0)}function PA(e,t,r,i,a,n,l,h,{p:d,um:m,o:{createElement:_}}){const S=t.suspense=e.suspense;S.vnode=t,t.el=e.el;const R=t.ssContent,I=t.ssFallback,{activeBranch:O,pendingBranch:L,isInFallback:B,isHydrating:P}=S;if(L)S.pendingBranch=R,qi(R,L)?(d(L,R,S.hiddenContainer,null,a,S,n,l,h),S.deps<=0?S.resolve():B&&(P||(d(O,I,r,i,a,null,n,l,h),cs(S,I)))):(S.pendingId=xp++,P?(S.isHydrating=!1,S.activeBranch=L):m(L,a,S),S.deps=0,S.effects.length=0,S.hiddenContainer=_("div"),B?(d(null,R,S.hiddenContainer,null,a,S,n,l,h),S.deps<=0?S.resolve():(d(O,I,r,i,a,null,n,l,h),cs(S,I))):O&&qi(R,O)?(d(O,R,r,i,a,S,n,l,h),S.resolve(!0)):(d(null,R,S.hiddenContainer,null,a,S,n,l,h),S.deps<=0&&S.resolve()));else if(O&&qi(R,O))d(O,R,r,i,a,S,n,l,h),cs(S,R);else if(ll(t,"onPending"),S.pendingBranch=R,R.shapeFlag&512?S.pendingId=R.component.suspenseId:S.pendingId=xp++,d(null,R,S.hiddenContainer,null,a,S,n,l,h),S.deps<=0)S.resolve();else{const{timeout:C,pendingId:N}=S;C>0?setTimeout(()=>{S.pendingId===N&&S.fallback(I)},C):C===0&&S.fallback(I)}}let yy=!1;function yM(e,t,r,i,a,n,l,h,d,m,_=!1){yy||(yy=!0,console[console.info?"info":"log"]("<Suspense> is an experimental feature and its API will likely change."));const{p:S,m:R,um:I,n:O,o:{parentNode:L,remove:B}}=m;let P;const C=LA(e);C&&t&&t.pendingBranch&&(P=t.pendingId,t.deps++);const N=e.props?Wu(e.props.timeout):void 0;Jv(N,"Suspense timeout");const $=n,W={vnode:e,parent:t,parentComponent:r,namespace:l,container:i,hiddenContainer:a,deps:0,pendingId:xp++,timeout:typeof N=="number"?N:-1,activeBranch:null,pendingBranch:null,isInFallback:!_,isHydrating:_,isUnmounted:!1,effects:[],resolve(G=!1,re=!1){{if(!G&&!W.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(W.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.")}const{vnode:J,activeBranch:K,pendingBranch:se,pendingId:M,effects:o,parentComponent:f,container:u}=W;let c=!1;W.isHydrating?W.isHydrating=!1:G||(c=K&&se.transition&&se.transition.mode==="out-in",c&&(K.transition.afterLeave=()=>{M===W.pendingId&&(R(se,u,n===$?O(K):n,0),ol(o))}),K&&(L(K.el)===u&&(n=O(K)),I(K,f,W,!0)),c||R(se,u,n,0)),cs(W,se),W.pendingBranch=null,W.isInFallback=!1;let p=W.parent,w=!1;for(;p;){if(p.pendingBranch){p.effects.push(...o),w=!0;break}p=p.parent}!w&&!c&&ol(o),W.effects=[],C&&t&&t.pendingBranch&&P===t.pendingId&&(t.deps--,t.deps===0&&!re&&t.resolve()),ll(J,"onResolve")},fallback(G){if(!W.pendingBranch)return;const{vnode:re,activeBranch:J,parentComponent:K,container:se,namespace:M}=W;ll(re,"onFallback");const o=O(J),f=()=>{W.isInFallback&&(S(null,G,se,o,K,null,M,h,d),cs(W,G))},u=G.transition&&G.transition.mode==="out-in";u&&(J.transition.afterLeave=f),W.isInFallback=!0,I(J,K,null,!0),u||f()},move(G,re,J){W.activeBranch&&R(W.activeBranch,G,re,J),W.container=G},next(){return W.activeBranch&&O(W.activeBranch)},registerDep(G,re,J){const K=!!W.pendingBranch;K&&W.deps++;const se=G.vnode.el;G.asyncDep.catch(M=>{zo(M,G,0)}).then(M=>{if(G.isUnmounted||W.isUnmounted||W.pendingId!==G.suspenseId)return;G.asyncResolved=!0;const{vnode:o}=G;ls(o),Ip(G,M,!1),se&&(o.el=se);const f=!se&&G.subTree.el;re(G,o,L(se||G.subTree.el),se?null:O(G.subTree),W,l,J),f&&B(f),vg(G,o.el),us(),K&&--W.deps===0&&W.resolve()})},unmount(G,re){W.isUnmounted=!0,W.activeBranch&&I(W.activeBranch,r,G,re),W.pendingBranch&&I(W.pendingBranch,r,G,re)}};return W}function CA(e,t,r,i,a,n,l,h,d){const m=t.suspense=yM(t,i,r,e.parentNode,document.createElement("div"),null,a,n,l,h,!0),_=d(e,m.pendingBranch=t.ssContent,r,m,n,l);return m.deps===0&&m.resolve(!1,!0),_}function BA(e){const{shapeFlag:t,children:r}=e,i=t&32;e.ssContent=by(i?r.default:r),e.ssFallback=i?by(r.fallback):Jt(Xt)}function by(e){let t;if(Xe(e)){const r=_a&&e._c;r&&(e._d=!1,Qe()),e=e(),r&&(e._d=!0,t=Cr,wM())}if(ze(e)){const r=Jh(e);!r&&e.filter(i=>i!==lg).length>0&&Ue("<Suspense> slots expect a single root node."),e=r}return e=qr(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(r=>r!==e)),e}function bM(e,t){t&&t.pendingBranch?ze(e)?t.effects.push(...e):t.effects.push(e):ol(e)}function cs(e,t){e.activeBranch=t;const{vnode:r,parentComponent:i}=e;let a=t.el;for(;!a&&t.component;)t=t.component.subTree,a=t.el;r.el=a,i&&i.subTree===r&&(i.vnode.el=a,vg(i,a))}function LA(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const Ot=Symbol.for("v-fgt"),gn=Symbol.for("v-txt"),Xt=Symbol.for("v-cmt"),Co=Symbol.for("v-stc"),zf=[];let Cr=null;function Qe(e=!1){zf.push(Cr=e?null:[])}function wM(){zf.pop(),Cr=zf[zf.length-1]||null}let _a=1;function Ep(e){_a+=e,e<0&&Cr&&(Cr.hasOnce=!0)}function _M(e){return e.dynamicChildren=_a>0?Cr||ss:null,wM(),_a>0&&Cr&&Cr.push(e),e}function it(e,t,r,i,a,n){return _M(Je(e,t,r,i,a,n,!0))}function ih(e,t,r,i,a){return _M(Jt(e,t,r,i,a,!0))}function Mn(e){return e?e.__v_isVNode===!0:!1}function qi(e,t){if(t.shapeFlag&6&&e.component){const r=bu.get(t.type);if(r&&r.has(e.component))return e.shapeFlag&=-257,t.shapeFlag&=-513,!1}return e.type===t.type&&e.key===t.key}let Rp;function NA(e){Rp=e}const kA=(...e)=>$A(...Rp?Rp(e,Qt):e),MM=({key:e})=>e??null,Su=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?kt(e)||tr(e)||Xe(e)?{i:Qt,r:e,k:t,f:!!r}:e:null);function Je(e,t=null,r=null,i=0,a=null,n=e===Ot?0:1,l=!1,h=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&MM(t),ref:t&&Su(t),scopeId:Kh,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:n,patchFlag:i,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:Qt};return h?(mg(d,r),n&128&&e.normalize(d)):r&&(d.shapeFlag|=kt(r)?8:16),d.key!==d.key&&Ue("VNode created with invalid key (NaN). VNode type:",d.type),_a>0&&!l&&Cr&&(d.patchFlag>0||n&6)&&d.patchFlag!==32&&Cr.push(d),d}const Jt=kA;function $A(e,t=null,r=null,i=0,a=null,n=!1){if((!e||e===lg)&&(e||Ue(`Invalid vnode type when creating vnode: ${e}.`),e=Xt),Mn(e)){const h=Mi(e,t,!0);return r&&mg(h,r),_a>0&&!n&&Cr&&(h.shapeFlag&6?Cr[Cr.indexOf(e)]=h:Cr.push(h)),h.patchFlag=-2,h}if(PM(e)&&(e=e.__vccOpts),t){t=SM(t);let{class:h,style:d}=t;h&&!kt(h)&&(t.class=cr(h)),At(d)&&(Ss(d)&&!ze(d)&&(d=Nt({},d)),t.style=cn(d))}const l=kt(e)?1:rh(e)?128:I_(e)?64:At(e)?4:Xe(e)?2:0;return l&4&&Ss(e)&&(e=at(e),Ue("Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.",`
+Component that was made reactive: `,e)),Je(e,t,r,i,a,l,n,!0)}function SM(e){return e?Ss(e)||X_(e)?Nt({},e):e:null}function Mi(e,t,r=!1,i=!1){const{props:a,ref:n,patchFlag:l,children:h,transition:d}=e,m=t?EM(a||{},t):a,_={__v_isVNode:!0,__v_skip:!0,type:e.type,props:m,key:m&&MM(m),ref:t&&t.ref?r&&n?ze(n)?n.concat(Su(t)):[n,Su(t)]:Su(t):n,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l===-1&&ze(h)?h.map(xM):h,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ot?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:d,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Mi(e.ssContent),ssFallback:e.ssFallback&&Mi(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return d&&i&&Qn(_,d.clone(_)),_}function xM(e){const t=Mi(e);return ze(e.children)&&(t.children=e.children.map(xM)),t}function gg(e=" ",t=0){return Jt(gn,null,e,t)}function DA(e,t){const r=Jt(Co,null,e);return r.staticCount=t,r}function ci(e="",t=!1){return t?(Qe(),ih(Xt,null,e)):Jt(Xt,null,e)}function qr(e){return e==null||typeof e=="boolean"?Jt(Xt):ze(e)?Jt(Ot,null,e.slice()):Mn(e)?xo(e):Jt(gn,null,String(e))}function xo(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Mi(e)}function mg(e,t){let r=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(ze(t))r=16;else if(typeof t=="object")if(i&65){const a=t.default;a&&(a._c&&(a._d=!1),mg(e,a()),a._c&&(a._d=!0));return}else{r=32;const a=t._;!a&&!X_(t)?t._ctx=Qt:a===3&&Qt&&(Qt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Xe(t)?(t={default:t,_ctx:Qt},r=32):(t=String(t),i&64?(r=16,t=[gg(t)]):r=8);e.children=t,e.shapeFlag|=r}function EM(...e){const t={};for(let r=0;r<e.length;r++){const i=e[r];for(const a in i)if(a==="class")t.class!==i.class&&(t.class=cr([t.class,i.class]));else if(a==="style")t.style=cn([t.style,i.style]);else if(Ys(a)){const n=t[a],l=i[a];l&&n!==l&&!(ze(n)&&n.includes(l))&&(t[a]=n?[].concat(n,l):l)}else a!==""&&(t[a]=i[a])}return t}function Yr(e,t,r,i=null){_i(e,t,7,[r,i])}const FA=G_();let jA=0;function RM(e,t,r){const i=e.type,a=(t?t.appContext:e.appContext)||FA,n={uid:jA++,vnode:e,type:i,parent:t,appContext:a,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new qv(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(a.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Q_(i,a),emitsOptions:gM(i,a),emit:null,emitted:null,propsDefaults:mt,inheritAttrs:i.inheritAttrs,ctx:mt,data:mt,props:mt,attrs:mt,slots:mt,refs:mt,setupState:mt,setupContext:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return n.ctx=kR(n),n.root=t?t.root:n,n.emit=xA.bind(null,n),e.ce&&e.ce(n),n}let ir=null;const zr=()=>ir||Qt;let nh,Ap;{const e=Uv(),t=(r,i)=>{let a;return(a=e[r])||(a=e[r]=[]),a.push(i),n=>{a.length>1?a.forEach(l=>l(n)):a[0](n)}};nh=t("__VUE_INSTANCE_SETTERS__",r=>ir=r),Ap=t("__VUE_SSR_SETTERS__",r=>Sl=r)}const Ma=e=>{const t=ir;return nh(e),e.scope.on(),()=>{e.scope.off(),nh(t)}},Tp=()=>{ir&&ir.scope.off(),nh(null)},UA=ni("slot,component");function Op(e,{isNativeTag:t}){(UA(e)||t(e))&&Ue("Do not use built-in or reserved HTML elements as component id: "+e)}function AM(e){return e.vnode.shapeFlag&4}let Sl=!1;function TM(e,t=!1,r=!1){t&&Ap(t);const{props:i,children:a}=e.vnode,n=AM(e);sA(e,i,n,t),yA(e,a,r);const l=n?HA(e,t):void 0;return t&&Ap(!1),l}function HA(e,t){var r;const i=e.type;{if(i.name&&Op(i.name,e.appContext.config),i.components){const n=Object.keys(i.components);for(let l=0;l<n.length;l++)Op(n[l],e.appContext.config)}if(i.directives){const n=Object.keys(i.directives);for(let l=0;l<n.length;l++)T_(n[l])}i.compilerOptions&&yg()&&Ue('"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.')}e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Kf),$R(e);const{setup:a}=i;if(a){const n=e.setupContext=a.length>1?IM(e):null,l=Ma(e);lo();const h=Pa(a,e,0,[Ki(e.props),n]);if(uo(),l(),Bh(h)){if(Po(e)||ag(e),h.then(Tp,Tp),t)return h.then(d=>{Ip(e,d,t)}).catch(d=>{zo(d,e,0)});if(e.asyncDep=h,!e.suspense){const d=(r=i.name)!=null?r:"Anonymous";Ue(`Component <${d}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`)}}else Ip(e,h,t)}else OM(e,t)}function Ip(e,t,r){Xe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:At(t)?(Mn(t)&&Ue("setup() should not return VNodes directly - return a render function instead."),e.devtoolsRawSetupState=t,e.setupState=Xv(t),DR(e)):t!==void 0&&Ue(`setup() should return an object. Received: ${t===null?"null":typeof t}`),OM(e,r)}let Gf,Pp;function qA(e){Gf=e,Pp=t=>{t.render._rc&&(t.withProxy=new Proxy(t.ctx,NR))}}const yg=()=>!Gf;function OM(e,t,r){const i=e.type;if(!e.render){if(!t&&Gf&&!i.render){const a=i.template||dg(e).template;if(a){kn(e,"compile");const{isCustomElement:n,compilerOptions:l}=e.appContext.config,{delimiters:h,compilerOptions:d}=i,m=Nt(Nt({isCustomElement:n,delimiters:h},l),d);i.render=Gf(a,m),$n(e,"compile")}}e.render=i.render||Pr,Pp&&Pp(e)}{const a=Ma(e);lo();try{QR(e)}finally{uo(),a()}}!i.render&&e.render===Pr&&!t&&(!Gf&&i.template?Ue('Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".'):Ue("Component is missing template or render function: ",i))}const WA={get(e,t){return th(),gr(e,"get",""),e[t]},set(){return Ue("setupContext.attrs is readonly."),!1},deleteProperty(){return Ue("setupContext.attrs is readonly."),!1}};function KA(e){return new Proxy(e.slots,{get(t,r){return gr(e,"get","$slots"),t[r]}})}function IM(e){const t=r=>{if(e.exposed&&Ue("expose() should be called only once per setup()."),r!=null){let i=typeof r;i==="object"&&(ze(r)?i="array":tr(r)&&(i="ref")),i!=="object"&&Ue(`expose() should be passed a plain object, received ${i}.`)}e.exposed=r||{}};{let r,i;return Object.freeze({get attrs(){return r||(r=new Proxy(e.attrs,WA))},get slots(){return i||(i=KA(e))},get emit(){return(a,...n)=>e.emit(a,...n)},expose:t})}}function xl(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Xv(g_(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in va)return va[r](e)},has(t,r){return r in t||r in va}})):e.proxy}const VA=/(?:^|[-_])(\w)/g,zA=e=>e.replace(VA,t=>t.toUpperCase()).replace(/[-_]/g,"");function ul(e,t=!0){return Xe(e)?e.displayName||e.name:e.name||t&&e.__name}function Qh(e,t,r=!1){let i=ul(t);if(!i&&t.__file){const a=t.__file.match(/([^/\\]+)\.\w+$/);a&&(i=a[1])}if(!i&&e&&e.parent){const a=n=>{for(const l in n)if(n[l]===t)return l};i=a(e.components||e.parent.type.components)||a(e.appContext.components)}return i?zA(i):r?"App":"Anonymous"}function PM(e){return Xe(e)&&"__vccOpts"in e}const ar=(e,t)=>{const r=B5(e,t,Sl);{const i=zr();i&&i.appContext.config.warnRecursiveComputed&&(r._warnRecursive=!0)}return r};function ec(e,t,r){const i=arguments.length;return i===2?At(t)&&!ze(t)?Mn(t)?Jt(e,null,[t]):Jt(e,t):Jt(e,null,t):(i>3?r=Array.prototype.slice.call(arguments,2):i===3&&Mn(r)&&(r=[r]),Jt(e,t,r))}function CM(){if(typeof window>"u")return;const e={style:"color:#3ba776"},t={style:"color:#1677ff"},r={style:"color:#f5222d"},i={style:"color:#eb2f96"},a={__vue_custom_formatter:!0,header(S){return At(S)?S.__isVue?["div",e,"VueInstance"]:tr(S)?["div",{},["span",e,_(S)],"<",h("_value"in S?S._value:S),">"]:Io(S)?["div",{},["span",e,Br(S)?"ShallowReactive":"Reactive"],"<",h(S),`>${_n(S)?" (readonly)":""}`]:_n(S)?["div",{},["span",e,Br(S)?"ShallowReadonly":"Readonly"],"<",h(S),">"]:null:null},hasBody(S){return S&&S.__isVue},body(S){if(S&&S.__isVue)return["div",{},...n(S.$)]}};function n(S){const R=[];S.type.props&&S.props&&R.push(l("props",at(S.props))),S.setupState!==mt&&R.push(l("setup",S.setupState)),S.data!==mt&&R.push(l("data",at(S.data)));const I=d(S,"computed");I&&R.push(l("computed",I));const O=d(S,"inject");return O&&R.push(l("injected",O)),R.push(["div",{},["span",{style:i.style+";opacity:0.66"},"$ (internal): "],["object",{object:S}]]),R}function l(S,R){return R=Nt({},R),Object.keys(R).length?["div",{style:"line-height:1.25em;margin-bottom:0.6em"},["div",{style:"color:#476582"},S],["div",{style:"padding-left:1.25em"},...Object.keys(R).map(I=>["div",{},["span",i,I+": "],h(R[I],!1)])]]:["span",{}]}function h(S,R=!0){return typeof S=="number"?["span",t,S]:typeof S=="string"?["span",r,JSON.stringify(S)]:typeof S=="boolean"?["span",i,S]:At(S)?["object",{object:R?at(S):S}]:["span",r,String(S)]}function d(S,R){const I=S.type;if(Xe(I))return;const O={};for(const L in S.ctx)m(I,L,R)&&(O[L]=S.ctx[L]);return O}function m(S,R,I){const O=S[I];if(ze(O)&&O.includes(R)||At(O)&&R in O||S.extends&&m(S.extends,R,I)||S.mixins&&S.mixins.some(L=>m(L,R,I)))return!0}function _(S){return Br(S)?"ShallowRef":S.effect?"ComputedRef":"Ref"}window.devtoolsFormatters?window.devtoolsFormatters.push(a):window.devtoolsFormatters=[a]}function GA(e,t,r,i){const a=r[i];if(a&&BM(a,e))return a;const n=t();return n.memo=e.slice(),n.cacheIndex=i,r[i]=n}function BM(e,t){const r=e.memo;if(r.length!=t.length)return!1;for(let i=0;i<r.length;i++)if(Ur(r[i],t[i]))return!1;return _a>0&&Cr&&Cr.push(e),!0}const Cp="3.5.10",rr=Ue,YA=qh,ZA=Hi,XA=tg,JA={createComponentInstance:RM,setupComponent:TM,renderComponentRoot:Mu,setCurrentRenderingInstance:sl,isVNode:Mn,normalizeVNode:qr,getComponentPublicInstance:xl,ensureValidVNode:hg,pushWarningContext:ls,popWarningContext:us},QA=JA,e7=null,t7=null,r7=null;/**
+* @vue/runtime-dom v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let Bp;const wy=typeof window<"u"&&window.trustedTypes;if(wy)try{Bp=wy.createPolicy("vue",{createHTML:e=>e})}catch(e){rr(`Error creating trusted types policy: ${e}`)}const LM=Bp?e=>Bp.createHTML(e):e=>e,i7="http://www.w3.org/2000/svg",n7="http://www.w3.org/1998/Math/MathML",jn=typeof document<"u"?document:null,_y=jn&&jn.createElement("template"),o7={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,i)=>{const a=t==="svg"?jn.createElementNS(i7,e):t==="mathml"?jn.createElementNS(n7,e):r?jn.createElement(e,{is:r}):jn.createElement(e);return e==="select"&&i&&i.multiple!=null&&a.setAttribute("multiple",i.multiple),a},createText:e=>jn.createTextNode(e),createComment:e=>jn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>jn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,i,a,n){const l=r?r.previousSibling:t.lastChild;if(a&&(a===n||a.nextSibling))for(;t.insertBefore(a.cloneNode(!0),r),!(a===n||!(a=a.nextSibling)););else{_y.innerHTML=LM(i==="svg"?`<svg>${e}</svg>`:i==="mathml"?`<math>${e}</math>`:e);const h=_y.content;if(i==="svg"||i==="mathml"){const d=h.firstChild;for(;d.firstChild;)h.appendChild(d.firstChild);h.removeChild(d)}t.insertBefore(h,r)}return[l?l.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},mo="transition",vf="animation",Es=Symbol("_vtc"),NM={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},kM=Nt({},og,NM),a7=e=>(e.displayName="Transition",e.props=kM,e),s7=a7((e,{slots:t})=>ec(L_,$M(e),t)),Qo=(e,t=[])=>{ze(e)?e.forEach(r=>r(...t)):e&&e(...t)},My=e=>e?ze(e)?e.some(t=>t.length>1):e.length>1:!1;function $M(e){const t={};for(const o in e)o in NM||(t[o]=e[o]);if(e.css===!1)return t;const{name:r="v",type:i,duration:a,enterFromClass:n=`${r}-enter-from`,enterActiveClass:l=`${r}-enter-active`,enterToClass:h=`${r}-enter-to`,appearFromClass:d=n,appearActiveClass:m=l,appearToClass:_=h,leaveFromClass:S=`${r}-leave-from`,leaveActiveClass:R=`${r}-leave-active`,leaveToClass:I=`${r}-leave-to`}=e,O=f7(a),L=O&&O[0],B=O&&O[1],{onBeforeEnter:P,onEnter:C,onEnterCancelled:N,onLeave:$,onLeaveCancelled:W,onBeforeAppear:G=P,onAppear:re=C,onAppearCancelled:J=N}=t,K=(o,f,u)=>{wo(o,f?_:h),wo(o,f?m:l),u&&u()},se=(o,f)=>{o._isLeaving=!1,wo(o,S),wo(o,I),wo(o,R),f&&f()},M=o=>(f,u)=>{const c=o?re:C,p=()=>K(f,o,u);Qo(c,[f,p]),Sy(()=>{wo(f,o?d:n),Dn(f,o?_:h),My(c)||xy(f,i,L,p)})};return Nt(t,{onBeforeEnter(o){Qo(P,[o]),Dn(o,n),Dn(o,l)},onBeforeAppear(o){Qo(G,[o]),Dn(o,d),Dn(o,m)},onEnter:M(!1),onAppear:M(!0),onLeave(o,f){o._isLeaving=!0;const u=()=>se(o,f);Dn(o,S),Dn(o,R),FM(),Sy(()=>{o._isLeaving&&(wo(o,S),Dn(o,I),My($)||xy(o,i,B,u))}),Qo($,[o,u])},onEnterCancelled(o){K(o,!1),Qo(N,[o])},onAppearCancelled(o){K(o,!0),Qo(J,[o])},onLeaveCancelled(o){se(o),Qo(W,[o])}})}function f7(e){if(e==null)return null;if(At(e))return[gd(e.enter),gd(e.leave)];{const t=gd(e);return[t,t]}}function gd(e){const t=Wu(e);return Jv(t,"<transition> explicit duration"),t}function Dn(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.add(r)),(e[Es]||(e[Es]=new Set)).add(t)}function wo(e,t){t.split(/\s+/).forEach(i=>i&&e.classList.remove(i));const r=e[Es];r&&(r.delete(t),r.size||(e[Es]=void 0))}function Sy(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let l7=0;function xy(e,t,r,i){const a=e._endId=++l7,n=()=>{a===e._endId&&i()};if(r!=null)return setTimeout(n,r);const{type:l,timeout:h,propCount:d}=DM(e,t);if(!l)return i();const m=l+"end";let _=0;const S=()=>{e.removeEventListener(m,R),n()},R=I=>{I.target===e&&++_>=d&&S()};setTimeout(()=>{_<d&&S()},h+1),e.addEventListener(m,R)}function DM(e,t){const r=window.getComputedStyle(e),i=O=>(r[O]||"").split(", "),a=i(`${mo}Delay`),n=i(`${mo}Duration`),l=Ey(a,n),h=i(`${vf}Delay`),d=i(`${vf}Duration`),m=Ey(h,d);let _=null,S=0,R=0;t===mo?l>0&&(_=mo,S=l,R=n.length):t===vf?m>0&&(_=vf,S=m,R=d.length):(S=Math.max(l,m),_=S>0?l>m?mo:vf:null,R=_?_===mo?n.length:d.length:0);const I=_===mo&&/\b(transform|all)(,|$)/.test(i(`${mo}Property`).toString());return{type:_,timeout:S,propCount:R,hasTransform:I}}function Ey(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((r,i)=>Ry(r)+Ry(e[i])))}function Ry(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function FM(){return document.body.offsetHeight}function u7(e,t,r){const i=e[Es];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const oh=Symbol("_vod"),jM=Symbol("_vsh"),bg={beforeMount(e,{value:t},{transition:r}){e[oh]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):gf(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:i}){!t!=!r&&(i?t?(i.beforeEnter(e),gf(e,!0),i.enter(e)):i.leave(e,()=>{gf(e,!1)}):gf(e,t))},beforeUnmount(e,{value:t}){gf(e,t)}};bg.name="show";function gf(e,t){e.style.display=t?e[oh]:"none",e[jM]=!t}function h7(){bg.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}}}const UM=Symbol("CSS_VAR_TEXT");function c7(e){const t=zr();if(!t){rr("useCssVars is called without current active component instance.");return}const r=t.ut=(a=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(n=>ah(n,a))};t.getCssVars=()=>e(t.proxy);const i=()=>{const a=e(t.proxy);t.ce?ah(t.ce,a):Lp(t.subTree,a),r(a)};sg(()=>{cM(i)}),Qs(()=>{const a=new MutationObserver(i);a.observe(t.subTree.el.parentNode,{childList:!0}),Zh(()=>a.disconnect())})}function Lp(e,t){if(e.shapeFlag&128){const r=e.suspense;e=r.activeBranch,r.pendingBranch&&!r.isHydrating&&r.effects.push(()=>{Lp(r.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)ah(e.el,t);else if(e.type===Ot)e.children.forEach(r=>Lp(r,t));else if(e.type===Co){let{el:r,anchor:i}=e;for(;r&&(ah(r,t),r!==i);)r=r.nextSibling}}function ah(e,t){if(e.nodeType===1){const r=e.style;let i="";for(const a in t)r.setProperty(`--${a}`,t[a]),i+=`--${a}: ${t[a]};`;r[UM]=i}}const d7=/(^|;)\s*display\s*:/;function p7(e,t,r){const i=e.style,a=kt(r);let n=!1;if(r&&!a){if(t)if(kt(t))for(const l of t.split(";")){const h=l.slice(0,l.indexOf(":")).trim();r[h]==null&&xu(i,h,"")}else for(const l in t)r[l]==null&&xu(i,l,"");for(const l in r)l==="display"&&(n=!0),xu(i,l,r[l])}else if(a){if(t!==r){const l=i[UM];l&&(r+=";"+l),i.cssText=r,n=d7.test(r)}}else t&&e.removeAttribute("style");oh in e&&(e[oh]=n?i.display:"",e[jM]&&(i.display="none"))}const v7=/[^\\];\s*$/,Ay=/\s*!important$/;function xu(e,t,r){if(ze(r))r.forEach(i=>xu(e,t,i));else if(r==null&&(r=""),v7.test(r)&&rr(`Unexpected semicolon at the end of '${t}' style value: '${r}'`),t.startsWith("--"))e.setProperty(t,r);else{const i=g7(e,t);Ay.test(r)?e.setProperty(wr(i),r.replace(Ay,""),"important"):e[i]=r}}const Ty=["Webkit","Moz","ms"],md={};function g7(e,t){const r=md[t];if(r)return r;let i=fr(t);if(i!=="filter"&&i in e)return md[t]=i;i=No(i);for(let a=0;a<Ty.length;a++){const n=Ty[a]+i;if(n in e)return md[t]=n}return t}const Oy="http://www.w3.org/1999/xlink";function Iy(e,t,r,i,a,n=K8(t)){i&&t.startsWith("xlink:")?r==null?e.removeAttributeNS(Oy,t.slice(6,t.length)):e.setAttributeNS(Oy,t,r):r==null||n&&!Hv(r)?e.removeAttribute(t):e.setAttribute(t,n?"":wn(r)?String(r):r)}function Py(e,t,r,i){if(t==="innerHTML"||t==="textContent"){r!=null&&(e[t]=t==="innerHTML"?LM(r):r);return}const a=e.tagName;if(t==="value"&&a!=="PROGRESS"&&!a.includes("-")){const l=a==="OPTION"?e.getAttribute("value")||"":e.value,h=r==null?e.type==="checkbox"?"on":"":String(r);(l!==h||!("_value"in e))&&(e.value=h),r==null&&e.removeAttribute(t),e._value=r;return}let n=!1;if(r===""||r==null){const l=typeof e[t];l==="boolean"?r=Hv(r):r==null&&l==="string"?(r="",n=!0):l==="number"&&(r=0,n=!0)}try{e[t]=r}catch(l){n||rr(`Failed setting prop "${t}" on <${a.toLowerCase()}>: value ${r} is invalid.`,l)}n&&e.removeAttribute(t)}function zn(e,t,r,i){e.addEventListener(t,r,i)}function m7(e,t,r,i){e.removeEventListener(t,r,i)}const Cy=Symbol("_vei");function y7(e,t,r,i,a=null){const n=e[Cy]||(e[Cy]={}),l=n[t];if(i&&l)l.value=Ly(i,t);else{const[h,d]=b7(t);if(i){const m=n[t]=M7(Ly(i,t),a);zn(e,h,m,d)}else l&&(m7(e,h,l,d),n[t]=void 0)}}const By=/(?:Once|Passive|Capture)$/;function b7(e){let t;if(By.test(e)){t={};let i;for(;i=e.match(By);)e=e.slice(0,e.length-i[0].length),t[i[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):wr(e.slice(2)),t]}let yd=0;const w7=Promise.resolve(),_7=()=>yd||(w7.then(()=>yd=0),yd=Date.now());function M7(e,t){const r=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=r.attached)return;_i(S7(i,r.value),t,5,[i])};return r.value=e,r.attached=_7(),r}function Ly(e,t){return Xe(e)||ze(e)?e:(rr(`Wrong type passed as event handler to ${t} - did you forget @ or : in front of your prop?
+Expected function or array of functions, received type ${typeof e}.`),Pr)}function S7(e,t){if(ze(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(i=>a=>!a._stopped&&i&&i(a))}else return t}const Ny=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,x7=(e,t,r,i,a,n)=>{const l=a==="svg";t==="class"?u7(e,i,l):t==="style"?p7(e,r,i):Ys(t)?Hu(t)||y7(e,t,r,i,n):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):E7(e,t,i,l))?(Py(e,t,i),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Iy(e,t,i,l,n,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!kt(i))?Py(e,fr(t),i):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),Iy(e,t,i,l))};function E7(e,t,r,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ny(t)&&Xe(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const a=e.tagName;if(a==="IMG"||a==="VIDEO"||a==="CANVAS"||a==="SOURCE")return!1}return Ny(t)&&kt(r)?!1:t in e}const ky={};/*! #__NO_SIDE_EFFECTS__ */function HM(e,t,r){const i=Xs(e,t);Lh(i)&&Nt(i,t);class a extends tc{constructor(l){super(i,l,r)}}return a.def=i,a}/*! #__NO_SIDE_EFFECTS__ */const R7=(e,t)=>HM(e,t,QM),A7=typeof HTMLElement<"u"?HTMLElement:class{};class tc extends A7{constructor(t,r={},i=Np){super(),this._def=t,this._props=r,this._createApp=i,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._ob=null,this.shadowRoot&&i!==Np?this._root=this.shadowRoot:(this.shadowRoot&&rr("Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use `defineSSRCustomElement`."),t.shadowRoot!==!1?(this.attachShadow({mode:"open"}),this._root=this.shadowRoot):this._root=this),this._def.__asyncLoader||this._resolveProps(this._def)}connectedCallback(){if(!this.isConnected)return;this.shadowRoot||this._parseSlots(),this._connected=!0;let t=this;for(;t=t&&(t.parentNode||t.host);)if(t instanceof tc){this._parent=t;break}this._instance||(this._resolved?(this._setParent(),this._update()):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._instance.provides=t._instance.provides)}disconnectedCallback(){this._connected=!1,Zn(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null)})}_resolveDef(){if(this._pendingResolve)return;for(let i=0;i<this.attributes.length;i++)this._setAttr(this.attributes[i].name);this._ob=new MutationObserver(i=>{for(const a of i)this._setAttr(a.attributeName)}),this._ob.observe(this,{attributes:!0});const t=(i,a=!1)=>{this._resolved=!0,this._pendingResolve=void 0;const{props:n,styles:l}=i;let h;if(n&&!ze(n))for(const d in n){const m=n[d];(m===Number||m&&m.type===Number)&&(d in this._props&&(this._props[d]=Wu(this._props[d])),(h||(h=Object.create(null)))[fr(d)]=!0)}this._numberProps=h,a&&this._resolveProps(i),this.shadowRoot?this._applyStyles(l):l&&rr("Custom element style injection is not supported when using shadowRoot: false"),this._mount(i)},r=this._def.__asyncLoader;r?this._pendingResolve=r().then(i=>t(this._def=i,!0)):t(this._def)}_mount(t){t.name||(t.name="VueElement"),this._app=this._createApp(t),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const r=this._instance&&this._instance.exposed;if(r)for(const i in r)Rt(this,i)?rr(`Exposed property "${i}" already exists on custom element.`):Object.defineProperty(this,i,{get:()=>dn(r[i])})}_resolveProps(t){const{props:r}=t,i=ze(r)?r:Object.keys(r||{});for(const a of Object.keys(this))a[0]!=="_"&&i.includes(a)&&this._setProp(a,this[a]);for(const a of i.map(fr))Object.defineProperty(this,a,{get(){return this._getProp(a)},set(n){this._setProp(a,n,!0,!0)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const r=this.hasAttribute(t);let i=r?this.getAttribute(t):ky;const a=fr(t);r&&this._numberProps&&this._numberProps[a]&&(i=Wu(i)),this._setProp(a,i,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,r,i=!0,a=!1){r!==this._props[t]&&(r===ky?delete this._props[t]:(this._props[t]=r,t==="key"&&this._app&&(this._app._ceVNode.key=r)),a&&this._instance&&this._update(),i&&(r===!0?this.setAttribute(wr(t),""):typeof r=="string"||typeof r=="number"?this.setAttribute(wr(t),r+""):r||this.removeAttribute(wr(t))))}_update(){JM(this._createVNode(),this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const r=Jt(this._def,Nt(t,this._props));return this._instance||(r.ce=i=>{this._instance=i,i.ce=this,i.isCE=!0,i.ceReload=n=>{this._styles&&(this._styles.forEach(l=>this._root.removeChild(l)),this._styles.length=0),this._applyStyles(n),this._instance=null,this._update()};const a=(n,l)=>{this.dispatchEvent(new CustomEvent(n,Lh(l[0])?Nt({detail:l},l[0]):{detail:l}))};i.emit=(n,...l)=>{a(n,l),wr(n)!==n&&a(wr(n),l)},this._setParent()}),r}_applyStyles(t,r){if(!t)return;if(r){if(r===this._def||this._styleChildren.has(r))return;this._styleChildren.add(r)}const i=this._nonce;for(let a=t.length-1;a>=0;a--){const n=document.createElement("style");if(i&&n.setAttribute("nonce",i),n.textContent=t[a],this.shadowRoot.prepend(n),r){if(r.__hmrId){this._childStyles||(this._childStyles=new Map);let l=this._childStyles.get(r.__hmrId);l||this._childStyles.set(r.__hmrId,l=[]),l.push(n)}}else(this._styles||(this._styles=[])).push(n)}}_parseSlots(){const t=this._slots={};let r;for(;r=this.firstChild;){const i=r.nodeType===1&&r.getAttribute("slot")||"default";(t[i]||(t[i]=[])).push(r),this.removeChild(r)}}_renderSlots(){const t=(this._teleportTarget||this).querySelectorAll("slot"),r=this._instance.type.__scopeId;for(let i=0;i<t.length;i++){const a=t[i],n=a.getAttribute("name")||"default",l=this._slots[n],h=a.parentNode;if(l)for(const d of l){if(r&&d.nodeType===1){const m=r+"-s",_=document.createTreeWalker(d,1);d.setAttribute(m,"");let S;for(;S=_.nextNode();)S.setAttribute(m,"")}h.insertBefore(d,a)}else for(;a.firstChild;)h.insertBefore(a.firstChild,a);h.removeChild(a)}}_injectChildStyle(t){this._applyStyles(t.styles,t)}_removeChildStyle(t){if(this._styleChildren.delete(t),this._childStyles&&t.__hmrId){const r=this._childStyles.get(t.__hmrId);r&&(r.forEach(i=>this._root.removeChild(i)),r.length=0)}}}function qM(e){const t=zr(),r=t&&t.ce;return r||(rr(t?`${e||"useHost"} can only be used in components defined via defineCustomElement.`:`${e||"useHost"} called without an active component instance.`),null)}function T7(){const e=qM("useShadowRoot");return e&&e.shadowRoot}function O7(e="$style"){{const t=zr();if(!t)return rr("useCssModule must be called inside setup()"),mt;const r=t.type.__cssModules;if(!r)return rr("Current instance does not have CSS modules injected."),mt;const i=r[e];return i||(rr(`Current instance does not have CSS module named "${e}".`),mt)}}const WM=new WeakMap,KM=new WeakMap,sh=Symbol("_moveCb"),$y=Symbol("_enterCb"),I7=e=>(delete e.props.mode,e),P7=I7({name:"TransitionGroup",props:Nt({},kM,{tag:String,moveClass:String}),setup(e,{slots:t}){const r=zr(),i=ng();let a,n;return Gh(()=>{if(!a.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!k7(a[0].el,r.vnode.el,l))return;a.forEach(B7),a.forEach(L7);const h=a.filter(N7);FM(),h.forEach(d=>{const m=d.el,_=m.style;Dn(m,l),_.transform=_.webkitTransform=_.transitionDuration="";const S=m[sh]=R=>{R&&R.target!==m||(!R||/transform$/.test(R.propertyName))&&(m.removeEventListener("transitionend",S),m[sh]=null,wo(m,l))};m.addEventListener("transitionend",S)})}),()=>{const l=at(e),h=$M(l);let d=l.tag||Ot;if(a=[],n)for(let m=0;m<n.length;m++){const _=n[m];_.el&&_.el instanceof Element&&(a.push(_),Qn(_,xs(_,h,i,r)),WM.set(_,_.el.getBoundingClientRect()))}n=t.default?Vh(t.default()):[];for(let m=0;m<n.length;m++){const _=n[m];_.key!=null?Qn(_,xs(_,h,i,r)):_.type!==gn&&rr("<TransitionGroup> children must be keyed.")}return Jt(d,null,n)}}}),C7=P7;function B7(e){const t=e.el;t[sh]&&t[sh](),t[$y]&&t[$y]()}function L7(e){KM.set(e,e.el.getBoundingClientRect())}function N7(e){const t=WM.get(e),r=KM.get(e),i=t.left-r.left,a=t.top-r.top;if(i||a){const n=e.el.style;return n.transform=n.webkitTransform=`translate(${i}px,${a}px)`,n.transitionDuration="0s",e}}function k7(e,t,r){const i=e.cloneNode(),a=e[Es];a&&a.forEach(h=>{h.split(/\s+/).forEach(d=>d&&i.classList.remove(d))}),r.split(/\s+/).forEach(h=>h&&i.classList.add(h)),i.style.display="none";const n=t.nodeType===1?t:t.parentNode;n.appendChild(i);const{hasTransform:l}=DM(i);return n.removeChild(i),l}const $o=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ze(t)?r=>Ao(t,r):t};function $7(e){e.target.composing=!0}function Dy(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const yi=Symbol("_assign"),fh={created(e,{modifiers:{lazy:t,trim:r,number:i}},a){e[yi]=$o(a);const n=i||a.props&&a.props.type==="number";zn(e,t?"change":"input",l=>{if(l.target.composing)return;let h=e.value;r&&(h=h.trim()),n&&(h=qu(h)),e[yi](h)}),r&&zn(e,"change",()=>{e.value=e.value.trim()}),t||(zn(e,"compositionstart",$7),zn(e,"compositionend",Dy),zn(e,"change",Dy))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:r,modifiers:{lazy:i,trim:a,number:n}},l){if(e[yi]=$o(l),e.composing)return;const h=(n||e.type==="number")&&!/^0\d/.test(e.value)?qu(e.value):e.value,d=t??"";h!==d&&(document.activeElement===e&&e.type!=="range"&&(i&&t===r||a&&e.value.trim()===d)||(e.value=d))}},rc={deep:!0,created(e,t,r){e[yi]=$o(r),zn(e,"change",()=>{const i=e._modelValue,a=Rs(e),n=e.checked,l=e[yi];if(ze(i)){const h=kh(i,a),d=h!==-1;if(n&&!d)l(i.concat(a));else if(!n&&d){const m=[...i];m.splice(h,1),l(m)}}else if(Oa(i)){const h=new Set(i);n?h.add(a):h.delete(a),l(h)}else l(VM(e,n))})},mounted:Fy,beforeUpdate(e,t,r){e[yi]=$o(r),Fy(e,t,r)}};function Fy(e,{value:t},r){e._modelValue=t;let i;ze(t)?i=kh(t,r.props.value)>-1:Oa(t)?i=t.has(r.props.value):i=ko(t,VM(e,!0)),e.checked!==i&&(e.checked=i)}const wg={created(e,{value:t},r){e.checked=ko(t,r.props.value),e[yi]=$o(r),zn(e,"change",()=>{e[yi](Rs(e))})},beforeUpdate(e,{value:t,oldValue:r},i){e[yi]=$o(i),t!==r&&(e.checked=ko(t,i.props.value))}},lh={deep:!0,created(e,{value:t,modifiers:{number:r}},i){const a=Oa(t);zn(e,"change",()=>{const n=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>r?qu(Rs(l)):Rs(l));e[yi](e.multiple?a?new Set(n):n:n[0]),e._assigning=!0,Zn(()=>{e._assigning=!1})}),e[yi]=$o(i)},mounted(e,{value:t}){jy(e,t)},beforeUpdate(e,t,r){e[yi]=$o(r)},updated(e,{value:t}){e._assigning||jy(e,t)}};function jy(e,t){const r=e.multiple,i=ze(t);if(r&&!i&&!Oa(t)){rr(`<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(t).slice(8,-1)}.`);return}for(let a=0,n=e.options.length;a<n;a++){const l=e.options[a],h=Rs(l);if(r)if(i){const d=typeof h;d==="string"||d==="number"?l.selected=t.some(m=>String(m)===String(h)):l.selected=kh(t,h)>-1}else l.selected=t.has(h);else if(ko(Rs(l),t)){e.selectedIndex!==a&&(e.selectedIndex=a);return}}!r&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}function Rs(e){return"_value"in e?e._value:e.value}function VM(e,t){const r=t?"_trueValue":"_falseValue";return r in e?e[r]:t}const zM={created(e,t,r){fu(e,t,r,null,"created")},mounted(e,t,r){fu(e,t,r,null,"mounted")},beforeUpdate(e,t,r,i){fu(e,t,r,i,"beforeUpdate")},updated(e,t,r,i){fu(e,t,r,i,"updated")}};function GM(e,t){switch(e){case"SELECT":return lh;case"TEXTAREA":return fh;default:switch(t){case"checkbox":return rc;case"radio":return wg;default:return fh}}}function fu(e,t,r,i,a){const l=GM(e.tagName,r.props&&r.props.type)[a];l&&l(e,t,r,i)}function D7(){fh.getSSRProps=({value:e})=>({value:e}),wg.getSSRProps=({value:e},t)=>{if(t.props&&ko(t.props.value,e))return{checked:!0}},rc.getSSRProps=({value:e},t)=>{if(ze(e)){if(t.props&&kh(e,t.props.value)>-1)return{checked:!0}}else if(Oa(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},zM.getSSRProps=(e,t)=>{if(typeof t.type!="string")return;const r=GM(t.type.toUpperCase(),t.props&&t.props.type);if(r.getSSRProps)return r.getSSRProps(e,t)}}const F7=["ctrl","shift","alt","meta"],j7={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>F7.some(r=>e[`${r}Key`]&&!t.includes(r))},Fn=(e,t)=>{const r=e._withMods||(e._withMods={}),i=t.join(".");return r[i]||(r[i]=(a,...n)=>{for(let l=0;l<t.length;l++){const h=j7[t[l]];if(h&&h(a,t))return}return e(a,...n)})},U7={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},H7=(e,t)=>{const r=e._withKeys||(e._withKeys={}),i=t.join(".");return r[i]||(r[i]=a=>{if(!("key"in a))return;const n=wr(a.key);if(t.some(l=>l===n||U7[l]===n))return e(a)})},YM=Nt({patchProp:x7},o7);let Yf,Uy=!1;function ZM(){return Yf||(Yf=nM(YM))}function XM(){return Yf=Uy?Yf:oM(YM),Uy=!0,Yf}const JM=(...e)=>{ZM().render(...e)},q7=(...e)=>{XM().hydrate(...e)},Np=(...e)=>{const t=ZM().createApp(...e);t3(t),r3(t);const{mount:r}=t;return t.mount=i=>{const a=i3(i);if(!a)return;const n=t._component;!Xe(n)&&!n.render&&!n.template&&(n.template=a.innerHTML),a.nodeType===1&&(a.textContent="");const l=r(a,!1,e3(a));return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),l},t},QM=(...e)=>{const t=XM().createApp(...e);t3(t),r3(t);const{mount:r}=t;return t.mount=i=>{const a=i3(i);if(a)return r(a,!0,e3(a))},t};function e3(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function t3(e){Object.defineProperty(e.config,"isNativeTag",{value:t=>H8(t)||q8(t)||W8(t),writable:!1})}function r3(e){if(yg()){const t=e.config.isCustomElement;Object.defineProperty(e.config,"isCustomElement",{get(){return t},set(){rr("The `isCustomElement` config option is deprecated. Use `compilerOptions.isCustomElement` instead.")}});const r=e.config.compilerOptions,i='The `compilerOptions` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, `compilerOptions` must be passed to `@vue/compiler-dom` in the build setup instead.\n- For vue-loader: pass it via vue-loader\'s `compilerOptions` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc';Object.defineProperty(e.config,"compilerOptions",{get(){return rr(i),r},set(){rr(i)}})}}function i3(e){if(kt(e)){const t=document.querySelector(e);return t||rr(`Failed to mount app: mount target selector "${e}" returned null.`),t}return window.ShadowRoot&&e instanceof window.ShadowRoot&&e.mode==="closed"&&rr('mounting on a ShadowRoot with `{mode: "closed"}` may lead to unpredictable bugs'),e}let Hy=!1;const W7=()=>{Hy||(Hy=!0,D7(),h7())};/**
+* vue v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function K7(){CM()}K7();const V7=()=>{rr('Runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".')},z7=Object.freeze(Object.defineProperty({__proto__:null,BaseTransition:L_,BaseTransitionPropsValidators:og,Comment:Xt,DeprecationTypes:r7,EffectScope:qv,ErrorCodes:H5,ErrorTypeStrings:YA,Fragment:Ot,KeepAlive:AR,ReactiveEffect:tl,Static:Co,Suspense:OA,Teleport:lR,Text:gn,TrackOpTypes:L5,Transition:s7,TransitionGroup:C7,TriggerOpTypes:N5,VueElement:tc,assertNumber:Jv,callWithAsyncErrorHandling:_i,callWithErrorHandling:Pa,camelize:fr,capitalize:No,cloneVNode:Mi,compatUtils:t7,compile:V7,computed:ar,createApp:Np,createBlock:ih,createCommentVNode:ci,createElementBlock:it,createElementVNode:Je,createHydrationRenderer:oM,createPropsRestProxy:ZR,createRenderer:nM,createSSRApp:QM,createSlots:BR,createStaticVNode:DA,createTextVNode:gg,createVNode:Jt,customRef:y_,defineAsyncComponent:ER,defineComponent:Xs,defineCustomElement:HM,defineEmits:jR,defineExpose:UR,defineModel:WR,defineOptions:HR,defineProps:FR,defineSSRCustomElement:R7,defineSlots:qR,devtools:ZA,effect:e5,effectScope:J2,getCurrentInstance:zr,getCurrentScope:Q2,getCurrentWatcher:k5,getTransitionRawChildren:Vh,guardReactiveProps:SM,h:ec,handleError:zo,hasInjectionContext:aA,hydrate:q7,hydrateOnIdle:bR,hydrateOnInteraction:SR,hydrateOnMediaQuery:MR,hydrateOnVisible:_R,initCustomFormatter:CM,initDirectivesForSSR:W7,inject:vn,isMemoSame:BM,isProxy:Ss,isReactive:Io,isReadonly:_n,isRef:tr,isRuntimeOnly:yg,isShallow:Br,isVNode:Mn,markRaw:g_,mergeDefaults:GR,mergeModels:YR,mergeProps:EM,nextTick:Zn,normalizeClass:cr,normalizeProps:D8,normalizeStyle:cn,onActivated:F_,onBeforeMount:sg,onBeforeUnmount:Yh,onBeforeUpdate:fg,onDeactivated:j_,onErrorCaptured:K_,onMounted:Qs,onRenderTracked:W_,onRenderTriggered:q_,onScopeDispose:J8,onServerPrefetch:H_,onUnmounted:Zh,onUpdated:Gh,onWatcherCleanup:w_,openBlock:Qe,popScopeId:nR,provide:Vf,proxyRefs:Xv,pushScopeId:iR,queuePostFlushCb:ol,reactive:Ia,readonly:Uh,ref:Tr,registerRuntimeCompiler:qA,render:JM,renderList:Fi,renderSlot:mp,resolveComponent:IR,resolveDirective:CR,resolveDynamicComponent:PR,resolveFilter:e7,resolveTransitionHooks:xs,setBlockTracking:Ep,setDevtoolsHook:XA,setTransitionHooks:Qn,shallowReactive:Gv,shallowReadonly:Ki,shallowRef:Zv,ssrContextKey:lM,ssrUtils:QA,stop:t5,toDisplayString:di,toHandlerKey:Hn,toHandlers:LR,toRaw:at,toRef:P5,toRefs:T5,toValue:E5,transformVNodeArgs:NA,triggerRef:x5,unref:dn,useAttrs:zR,useCssModule:O7,useCssVars:c7,useHost:qM,useId:hR,useModel:SA,useSSRContext:uM,useShadowRoot:T7,useSlots:VR,useTemplateRef:cR,useTransitionState:ng,vModelCheckbox:rc,vModelDynamic:zM,vModelRadio:wg,vModelSelect:lh,vModelText:fh,vShow:bg,version:Cp,warn:rr,watch:Or,watchEffect:hM,watchPostEffect:cM,watchSyncEffect:dM,withAsyncContext:XR,withCtx:ig,withDefaults:KR,withDirectives:wu,withKeys:H7,withMemo:GA,withModifiers:Fn,withScopeId:oR},Symbol.toStringTag,{value:"Module"})),G7=(e,t)=>{const r=e.__vccOpts||e;for(const[i,a]of t)r[i]=a;return r};var El={exports:{}},_g={exports:{}},ds=typeof Reflect=="object"?Reflect:null,qy=ds&&typeof ds.apply=="function"?ds.apply:function(t,r,i){return Function.prototype.apply.call(t,r,i)},Eu;ds&&typeof ds.ownKeys=="function"?Eu=ds.ownKeys:Object.getOwnPropertySymbols?Eu=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Eu=function(t){return Object.getOwnPropertyNames(t)};function Y7(e){console&&console.warn&&console.warn(e)}var n3=Number.isNaN||function(t){return t!==t};function Vt(){Vt.init.call(this)}_g.exports=Vt;_g.exports.once=Q7;Vt.EventEmitter=Vt;Vt.prototype._events=void 0;Vt.prototype._eventsCount=0;Vt.prototype._maxListeners=void 0;var Wy=10;function ic(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Vt,"defaultMaxListeners",{enumerable:!0,get:function(){return Wy},set:function(e){if(typeof e!="number"||e<0||n3(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Wy=e}});Vt.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Vt.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||n3(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function o3(e){return e._maxListeners===void 0?Vt.defaultMaxListeners:e._maxListeners}Vt.prototype.getMaxListeners=function(){return o3(this)};Vt.prototype.emit=function(t){for(var r=[],i=1;i<arguments.length;i++)r.push(arguments[i]);var a=t==="error",n=this._events;if(n!==void 0)a=a&&n.error===void 0;else if(!a)return!1;if(a){var l;if(r.length>0&&(l=r[0]),l instanceof Error)throw l;var h=new Error("Unhandled error."+(l?" ("+l.message+")":""));throw h.context=l,h}var d=n[t];if(d===void 0)return!1;if(typeof d=="function")qy(d,this,r);else for(var m=d.length,_=u3(d,m),i=0;i<m;++i)qy(_[i],this,r);return!0};function a3(e,t,r,i){var a,n,l;if(ic(r),n=e._events,n===void 0?(n=e._events=Object.create(null),e._eventsCount=0):(n.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),l=n[t]),l===void 0)l=n[t]=r,++e._eventsCount;else if(typeof l=="function"?l=n[t]=i?[r,l]:[l,r]:i?l.unshift(r):l.push(r),a=o3(e),a>0&&l.length>a&&!l.warned){l.warned=!0;var h=new Error("Possible EventEmitter memory leak detected. "+l.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");h.name="MaxListenersExceededWarning",h.emitter=e,h.type=t,h.count=l.length,Y7(h)}return e}Vt.prototype.addListener=function(t,r){return a3(this,t,r,!1)};Vt.prototype.on=Vt.prototype.addListener;Vt.prototype.prependListener=function(t,r){return a3(this,t,r,!0)};function Z7(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function s3(e,t,r){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},a=Z7.bind(i);return a.listener=r,i.wrapFn=a,a}Vt.prototype.once=function(t,r){return ic(r),this.on(t,s3(this,t,r)),this};Vt.prototype.prependOnceListener=function(t,r){return ic(r),this.prependListener(t,s3(this,t,r)),this};Vt.prototype.removeListener=function(t,r){var i,a,n,l,h;if(ic(r),a=this._events,a===void 0)return this;if(i=a[t],i===void 0)return this;if(i===r||i.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete a[t],a.removeListener&&this.emit("removeListener",t,i.listener||r));else if(typeof i!="function"){for(n=-1,l=i.length-1;l>=0;l--)if(i[l]===r||i[l].listener===r){h=i[l].listener,n=l;break}if(n<0)return this;n===0?i.shift():X7(i,n),i.length===1&&(a[t]=i[0]),a.removeListener!==void 0&&this.emit("removeListener",t,h||r)}return this};Vt.prototype.off=Vt.prototype.removeListener;Vt.prototype.removeAllListeners=function(t){var r,i,a;if(i=this._events,i===void 0)return this;if(i.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):i[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete i[t]),this;if(arguments.length===0){var n=Object.keys(i),l;for(a=0;a<n.length;++a)l=n[a],l!=="removeListener"&&this.removeAllListeners(l);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=i[t],typeof r=="function")this.removeListener(t,r);else if(r!==void 0)for(a=r.length-1;a>=0;a--)this.removeListener(t,r[a]);return this};function f3(e,t,r){var i=e._events;if(i===void 0)return[];var a=i[t];return a===void 0?[]:typeof a=="function"?r?[a.listener||a]:[a]:r?J7(a):u3(a,a.length)}Vt.prototype.listeners=function(t){return f3(this,t,!0)};Vt.prototype.rawListeners=function(t){return f3(this,t,!1)};Vt.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):l3.call(e,t)};Vt.prototype.listenerCount=l3;function l3(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Vt.prototype.eventNames=function(){return this._eventsCount>0?Eu(this._events):[]};function u3(e,t){for(var r=new Array(t),i=0;i<t;++i)r[i]=e[i];return r}function X7(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}function J7(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}function Q7(e,t){return new Promise(function(r,i){function a(l){e.removeListener(t,n),i(l)}function n(){typeof e.removeListener=="function"&&e.removeListener("error",a),r([].slice.call(arguments))}h3(e,t,n,{once:!0}),t!=="error"&&e9(e,a,{once:!0})})}function e9(e,t,r){typeof e.on=="function"&&h3(e,"error",t,r)}function h3(e,t,r,i){if(typeof e.on=="function")i.once?e.once(t,r):e.on(t,r);else if(typeof e.addEventListener=="function")e.addEventListener(t,function a(n){i.once&&e.removeEventListener(t,a),r(n)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e)}var kr=_g.exports,Mg=r9,t9=Object.prototype.hasOwnProperty;function r9(){for(var e={},t=0;t<arguments.length;t++){var r=arguments[t];for(var i in r)t9.call(r,i)&&(e[i]=r[i])}return e}var kp={exports:{}},c3=kr.EventEmitter,oi={},d3={},p3=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var t={},r=Symbol("test"),i=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(i)!=="[object Symbol]")return!1;var a=42;t[r]=a;for(r in t)return!1;if(typeof Object.keys=="function"&&Object.keys(t).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(t).length!==0)return!1;var n=Object.getOwnPropertySymbols(t);if(n.length!==1||n[0]!==r||!Object.prototype.propertyIsEnumerable.call(t,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var l=Object.getOwnPropertyDescriptor(t,r);if(l.value!==a||l.enumerable!==!0)return!1}return!0},i9=p3,Sg=function(){return i9()&&!!Symbol.toStringTag},n9=Error,o9=EvalError,a9=RangeError,s9=ReferenceError,v3=SyntaxError,nc=TypeError,f9=URIError,Ky=typeof Symbol<"u"&&Symbol,l9=p3,u9=function(){return typeof Ky!="function"||typeof Symbol!="function"||typeof Ky("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:l9()},Vy={foo:{}},h9=Object,c9=function(){return{__proto__:Vy}.foo===Vy.foo&&!({__proto__:null}instanceof h9)},d9="Function.prototype.bind called on incompatible ",p9=Object.prototype.toString,v9=Math.max,g9="[object Function]",zy=function(t,r){for(var i=[],a=0;a<t.length;a+=1)i[a]=t[a];for(var n=0;n<r.length;n+=1)i[n+t.length]=r[n];return i},m9=function(t,r){for(var i=[],a=r||0,n=0;a<t.length;a+=1,n+=1)i[n]=t[a];return i},y9=function(e,t){for(var r="",i=0;i<e.length;i+=1)r+=e[i],i+1<e.length&&(r+=t);return r},b9=function(t){var r=this;if(typeof r!="function"||p9.apply(r)!==g9)throw new TypeError(d9+r);for(var i=m9(arguments,1),a,n=function(){if(this instanceof a){var _=r.apply(this,zy(i,arguments));return Object(_)===_?_:this}return r.apply(t,zy(i,arguments))},l=v9(0,r.length-i.length),h=[],d=0;d<l;d++)h[d]="$"+d;if(a=Function("binder","return function ("+y9(h,",")+"){ return binder.apply(this,arguments); }")(n),r.prototype){var m=function(){};m.prototype=r.prototype,a.prototype=new m,m.prototype=null}return a},w9=b9,xg=Function.prototype.bind||w9,_9=Function.prototype.call,M9=Object.prototype.hasOwnProperty,S9=xg,x9=S9.call(_9,M9),St,E9=n9,R9=o9,A9=a9,T9=s9,As=v3,ps=nc,O9=f9,g3=Function,bd=function(e){try{return g3('"use strict"; return ('+e+").constructor;")()}catch{}},ma=Object.getOwnPropertyDescriptor;if(ma)try{ma({},"")}catch{ma=null}var wd=function(){throw new ps},I9=ma?function(){try{return arguments.callee,wd}catch{try{return ma(arguments,"callee").get}catch{return wd}}}():wd,Va=u9(),P9=c9(),pr=Object.getPrototypeOf||(P9?function(e){return e.__proto__}:null),es={},C9=typeof Uint8Array>"u"||!pr?St:pr(Uint8Array),ya={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?St:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?St:ArrayBuffer,"%ArrayIteratorPrototype%":Va&&pr?pr([][Symbol.iterator]()):St,"%AsyncFromSyncIteratorPrototype%":St,"%AsyncFunction%":es,"%AsyncGenerator%":es,"%AsyncGeneratorFunction%":es,"%AsyncIteratorPrototype%":es,"%Atomics%":typeof Atomics>"u"?St:Atomics,"%BigInt%":typeof BigInt>"u"?St:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?St:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?St:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?St:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":E9,"%eval%":eval,"%EvalError%":R9,"%Float32Array%":typeof Float32Array>"u"?St:Float32Array,"%Float64Array%":typeof Float64Array>"u"?St:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?St:FinalizationRegistry,"%Function%":g3,"%GeneratorFunction%":es,"%Int8Array%":typeof Int8Array>"u"?St:Int8Array,"%Int16Array%":typeof Int16Array>"u"?St:Int16Array,"%Int32Array%":typeof Int32Array>"u"?St:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Va&&pr?pr(pr([][Symbol.iterator]())):St,"%JSON%":typeof JSON=="object"?JSON:St,"%Map%":typeof Map>"u"?St:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Va||!pr?St:pr(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?St:Promise,"%Proxy%":typeof Proxy>"u"?St:Proxy,"%RangeError%":A9,"%ReferenceError%":T9,"%Reflect%":typeof Reflect>"u"?St:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?St:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Va||!pr?St:pr(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?St:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Va&&pr?pr(""[Symbol.iterator]()):St,"%Symbol%":Va?Symbol:St,"%SyntaxError%":As,"%ThrowTypeError%":I9,"%TypedArray%":C9,"%TypeError%":ps,"%Uint8Array%":typeof Uint8Array>"u"?St:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?St:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?St:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?St:Uint32Array,"%URIError%":O9,"%WeakMap%":typeof WeakMap>"u"?St:WeakMap,"%WeakRef%":typeof WeakRef>"u"?St:WeakRef,"%WeakSet%":typeof WeakSet>"u"?St:WeakSet};if(pr)try{null.error}catch(e){var B9=pr(pr(e));ya["%Error.prototype%"]=B9}var L9=function e(t){var r;if(t==="%AsyncFunction%")r=bd("async function () {}");else if(t==="%GeneratorFunction%")r=bd("function* () {}");else if(t==="%AsyncGeneratorFunction%")r=bd("async function* () {}");else if(t==="%AsyncGenerator%"){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if(t==="%AsyncIteratorPrototype%"){var a=e("%AsyncGenerator%");a&&pr&&(r=pr(a.prototype))}return ya[t]=r,r},Gy={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Rl=xg,uh=x9,N9=Rl.call(Function.call,Array.prototype.concat),k9=Rl.call(Function.apply,Array.prototype.splice),Yy=Rl.call(Function.call,String.prototype.replace),hh=Rl.call(Function.call,String.prototype.slice),$9=Rl.call(Function.call,RegExp.prototype.exec),D9=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,F9=/\\(\\)?/g,j9=function(t){var r=hh(t,0,1),i=hh(t,-1);if(r==="%"&&i!=="%")throw new As("invalid intrinsic syntax, expected closing `%`");if(i==="%"&&r!=="%")throw new As("invalid intrinsic syntax, expected opening `%`");var a=[];return Yy(t,D9,function(n,l,h,d){a[a.length]=h?Yy(d,F9,"$1"):l||n}),a},U9=function(t,r){var i=t,a;if(uh(Gy,i)&&(a=Gy[i],i="%"+a[0]+"%"),uh(ya,i)){var n=ya[i];if(n===es&&(n=L9(i)),typeof n>"u"&&!r)throw new ps("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:a,name:i,value:n}}throw new As("intrinsic "+t+" does not exist!")},Al=function(t,r){if(typeof t!="string"||t.length===0)throw new ps("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new ps('"allowMissing" argument must be a boolean');if($9(/^%?[^%]*%?$/,t)===null)throw new As("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var i=j9(t),a=i.length>0?i[0]:"",n=U9("%"+a+"%",r),l=n.name,h=n.value,d=!1,m=n.alias;m&&(a=m[0],k9(i,N9([0,1],m)));for(var _=1,S=!0;_<i.length;_+=1){var R=i[_],I=hh(R,0,1),O=hh(R,-1);if((I==='"'||I==="'"||I==="`"||O==='"'||O==="'"||O==="`")&&I!==O)throw new As("property names with quotes must have matching quotes");if((R==="constructor"||!S)&&(d=!0),a+="."+R,l="%"+a+"%",uh(ya,l))h=ya[l];else if(h!=null){if(!(R in h)){if(!r)throw new ps("base intrinsic for "+t+" exists, but the property is not available.");return}if(ma&&_+1>=i.length){var L=ma(h,R);S=!!L,S&&"get"in L&&!("originalValue"in L.get)?h=L.get:h=h[R]}else S=uh(h,R),h=h[R];S&&!d&&(ya[l]=h)}}return h},m3={exports:{}},_d,Zy;function Eg(){if(Zy)return _d;Zy=1;var e=Al,t=e("%Object.defineProperty%",!0)||!1;if(t)try{t({},"a",{value:1})}catch{t=!1}return _d=t,_d}var H9=Al,Ru=H9("%Object.getOwnPropertyDescriptor%",!0);if(Ru)try{Ru([],"length")}catch{Ru=null}var Rg=Ru,Xy=Eg(),q9=v3,za=nc,Jy=Rg,W9=function(t,r,i){if(!t||typeof t!="object"&&typeof t!="function")throw new za("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new za("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new za("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new za("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new za("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new za("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,n=arguments.length>4?arguments[4]:null,l=arguments.length>5?arguments[5]:null,h=arguments.length>6?arguments[6]:!1,d=!!Jy&&Jy(t,r);if(Xy)Xy(t,r,{configurable:l===null&&d?d.configurable:!l,enumerable:a===null&&d?d.enumerable:!a,value:i,writable:n===null&&d?d.writable:!n});else if(h||!a&&!n&&!l)t[r]=i;else throw new q9("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},$p=Eg(),y3=function(){return!!$p};y3.hasArrayLengthDefineBug=function(){if(!$p)return null;try{return $p([],"length",{value:1}).length!==1}catch{return!0}};var K9=y3,V9=Al,Qy=W9,z9=K9(),e1=Rg,t1=nc,G9=V9("%Math.floor%"),Y9=function(t,r){if(typeof t!="function")throw new t1("`fn` is not a function");if(typeof r!="number"||r<0||r>4294967295||G9(r)!==r)throw new t1("`length` must be a positive 32-bit integer");var i=arguments.length>2&&!!arguments[2],a=!0,n=!0;if("length"in t&&e1){var l=e1(t,"length");l&&!l.configurable&&(a=!1),l&&!l.writable&&(n=!1)}return(a||n||!i)&&(z9?Qy(t,"length",r,!0,!0):Qy(t,"length",r)),t};(function(e){var t=xg,r=Al,i=Y9,a=nc,n=r("%Function.prototype.apply%"),l=r("%Function.prototype.call%"),h=r("%Reflect.apply%",!0)||t.call(l,n),d=Eg(),m=r("%Math.max%");e.exports=function(R){if(typeof R!="function")throw new a("a function is required");var I=h(t,l,arguments);return i(I,1+m(0,R.length-(arguments.length-1)),!0)};var _=function(){return h(t,n,arguments)};d?d(e.exports,"apply",{value:_}):e.exports.apply=_})(m3);var b3=m3.exports,w3=Al,_3=b3,Z9=_3(w3("String.prototype.indexOf")),M3=function(t,r){var i=w3(t,!!r);return typeof i=="function"&&Z9(t,".prototype.")>-1?_3(i):i},X9=Sg(),J9=M3,Dp=J9("Object.prototype.toString"),oc=function(t){return X9&&t&&typeof t=="object"&&Symbol.toStringTag in t?!1:Dp(t)==="[object Arguments]"},S3=function(t){return oc(t)?!0:t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&Dp(t)!=="[object Array]"&&Dp(t.callee)==="[object Function]"},Q9=function(){return oc(arguments)}();oc.isLegacyArguments=S3;var eT=Q9?oc:S3,tT=Object.prototype.toString,rT=Function.prototype.toString,iT=/^\s*(?:function)?\*/,x3=Sg(),Md=Object.getPrototypeOf,nT=function(){if(!x3)return!1;try{return Function("return function*() {}")()}catch{}},Sd,oT=function(t){if(typeof t!="function")return!1;if(iT.test(rT.call(t)))return!0;if(!x3){var r=tT.call(t);return r==="[object GeneratorFunction]"}if(!Md)return!1;if(typeof Sd>"u"){var i=nT();Sd=i?Md(i):!1}return Md(t)===Sd},E3=Function.prototype.toString,ns=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,Fp,Au;if(typeof ns=="function"&&typeof Object.defineProperty=="function")try{Fp=Object.defineProperty({},"length",{get:function(){throw Au}}),Au={},ns(function(){throw 42},null,Fp)}catch(e){e!==Au&&(ns=null)}else ns=null;var aT=/^\s*class\b/,jp=function(t){try{var r=E3.call(t);return aT.test(r)}catch{return!1}},xd=function(t){try{return jp(t)?!1:(E3.call(t),!0)}catch{return!1}},Tu=Object.prototype.toString,sT="[object Object]",fT="[object Function]",lT="[object GeneratorFunction]",uT="[object HTMLAllCollection]",hT="[object HTML document.all class]",cT="[object HTMLCollection]",dT=typeof Symbol=="function"&&!!Symbol.toStringTag,pT=!(0 in[,]),Up=function(){return!1};if(typeof document=="object"){var vT=document.all;Tu.call(vT)===Tu.call(document.all)&&(Up=function(t){if((pT||!t)&&(typeof t>"u"||typeof t=="object"))try{var r=Tu.call(t);return(r===uT||r===hT||r===cT||r===sT)&&t("")==null}catch{}return!1})}var gT=ns?function(t){if(Up(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;try{ns(t,null,Fp)}catch(r){if(r!==Au)return!1}return!jp(t)&&xd(t)}:function(t){if(Up(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;if(dT)return xd(t);if(jp(t))return!1;var r=Tu.call(t);return r!==fT&&r!==lT&&!/^\[object HTML/.test(r)?!1:xd(t)},mT=gT,yT=Object.prototype.toString,R3=Object.prototype.hasOwnProperty,bT=function(t,r,i){for(var a=0,n=t.length;a<n;a++)R3.call(t,a)&&(i==null?r(t[a],a,t):r.call(i,t[a],a,t))},wT=function(t,r,i){for(var a=0,n=t.length;a<n;a++)i==null?r(t.charAt(a),a,t):r.call(i,t.charAt(a),a,t)},_T=function(t,r,i){for(var a in t)R3.call(t,a)&&(i==null?r(t[a],a,t):r.call(i,t[a],a,t))},MT=function(t,r,i){if(!mT(r))throw new TypeError("iterator must be a function");var a;arguments.length>=3&&(a=i),yT.call(t)==="[object Array]"?bT(t,r,a):typeof t=="string"?wT(t,r,a):_T(t,r,a)},ST=MT,Ed=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],xT=typeof globalThis>"u"?Ze:globalThis,ET=function(){for(var t=[],r=0;r<Ed.length;r++)typeof xT[Ed[r]]=="function"&&(t[t.length]=Ed[r]);return t},ch=ST,RT=ET,r1=b3,Ag=M3,Ou=Rg,AT=Ag("Object.prototype.toString"),A3=Sg(),i1=typeof globalThis>"u"?Ze:globalThis,Hp=RT(),Tg=Ag("String.prototype.slice"),Rd=Object.getPrototypeOf,TT=Ag("Array.prototype.indexOf",!0)||function(t,r){for(var i=0;i<t.length;i+=1)if(t[i]===r)return i;return-1},dh={__proto__:null};A3&&Ou&&Rd?ch(Hp,function(e){var t=new i1[e];if(Symbol.toStringTag in t){var r=Rd(t),i=Ou(r,Symbol.toStringTag);if(!i){var a=Rd(r);i=Ou(a,Symbol.toStringTag)}dh["$"+e]=r1(i.get)}}):ch(Hp,function(e){var t=new i1[e],r=t.slice||t.set;r&&(dh["$"+e]=r1(r))});var OT=function(t){var r=!1;return ch(dh,function(i,a){if(!r)try{"$"+i(t)===a&&(r=Tg(a,1))}catch{}}),r},IT=function(t){var r=!1;return ch(dh,function(i,a){if(!r)try{i(t),r=Tg(a,1)}catch{}}),r},T3=function(t){if(!t||typeof t!="object")return!1;if(!A3){var r=Tg(AT(t),8,-1);return TT(Hp,r)>-1?r:r!=="Object"?!1:IT(t)}return Ou?OT(t):null},PT=T3,CT=function(t){return!!PT(t)};(function(e){var t=eT,r=oT,i=T3,a=CT;function n(z){return z.call.bind(z)}var l=typeof BigInt<"u",h=typeof Symbol<"u",d=n(Object.prototype.toString),m=n(Number.prototype.valueOf),_=n(String.prototype.valueOf),S=n(Boolean.prototype.valueOf);if(l)var R=n(BigInt.prototype.valueOf);if(h)var I=n(Symbol.prototype.valueOf);function O(z,oe){if(typeof z!="object")return!1;try{return oe(z),!0}catch{return!1}}e.isArgumentsObject=t,e.isGeneratorFunction=r,e.isTypedArray=a;function L(z){return typeof Promise<"u"&&z instanceof Promise||z!==null&&typeof z=="object"&&typeof z.then=="function"&&typeof z.catch=="function"}e.isPromise=L;function B(z){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?ArrayBuffer.isView(z):a(z)||D(z)}e.isArrayBufferView=B;function P(z){return i(z)==="Uint8Array"}e.isUint8Array=P;function C(z){return i(z)==="Uint8ClampedArray"}e.isUint8ClampedArray=C;function N(z){return i(z)==="Uint16Array"}e.isUint16Array=N;function $(z){return i(z)==="Uint32Array"}e.isUint32Array=$;function W(z){return i(z)==="Int8Array"}e.isInt8Array=W;function G(z){return i(z)==="Int16Array"}e.isInt16Array=G;function re(z){return i(z)==="Int32Array"}e.isInt32Array=re;function J(z){return i(z)==="Float32Array"}e.isFloat32Array=J;function K(z){return i(z)==="Float64Array"}e.isFloat64Array=K;function se(z){return i(z)==="BigInt64Array"}e.isBigInt64Array=se;function M(z){return i(z)==="BigUint64Array"}e.isBigUint64Array=M;function o(z){return d(z)==="[object Map]"}o.working=typeof Map<"u"&&o(new Map);function f(z){return typeof Map>"u"?!1:o.working?o(z):z instanceof Map}e.isMap=f;function u(z){return d(z)==="[object Set]"}u.working=typeof Set<"u"&&u(new Set);function c(z){return typeof Set>"u"?!1:u.working?u(z):z instanceof Set}e.isSet=c;function p(z){return d(z)==="[object WeakMap]"}p.working=typeof WeakMap<"u"&&p(new WeakMap);function w(z){return typeof WeakMap>"u"?!1:p.working?p(z):z instanceof WeakMap}e.isWeakMap=w;function x(z){return d(z)==="[object WeakSet]"}x.working=typeof WeakSet<"u"&&x(new WeakSet);function g(z){return x(z)}e.isWeakSet=g;function s(z){return d(z)==="[object ArrayBuffer]"}s.working=typeof ArrayBuffer<"u"&&s(new ArrayBuffer);function v(z){return typeof ArrayBuffer>"u"?!1:s.working?s(z):z instanceof ArrayBuffer}e.isArrayBuffer=v;function T(z){return d(z)==="[object DataView]"}T.working=typeof ArrayBuffer<"u"&&typeof DataView<"u"&&T(new DataView(new ArrayBuffer(1),0,1));function D(z){return typeof DataView>"u"?!1:T.working?T(z):z instanceof DataView}e.isDataView=D;var Y=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:void 0;function Q(z){return d(z)==="[object SharedArrayBuffer]"}function A(z){return typeof Y>"u"?!1:(typeof Q.working>"u"&&(Q.working=Q(new Y)),Q.working?Q(z):z instanceof Y)}e.isSharedArrayBuffer=A;function E(z){return d(z)==="[object AsyncFunction]"}e.isAsyncFunction=E;function q(z){return d(z)==="[object Map Iterator]"}e.isMapIterator=q;function V(z){return d(z)==="[object Set Iterator]"}e.isSetIterator=V;function X(z){return d(z)==="[object Generator]"}e.isGeneratorObject=X;function b(z){return d(z)==="[object WebAssembly.Module]"}e.isWebAssemblyCompiledModule=b;function y(z){return O(z,m)}e.isNumberObject=y;function F(z){return O(z,_)}e.isStringObject=F;function U(z){return O(z,S)}e.isBooleanObject=U;function Z(z){return l&&O(z,R)}e.isBigIntObject=Z;function j(z){return h&&O(z,I)}e.isSymbolObject=j;function k(z){return y(z)||F(z)||U(z)||Z(z)||j(z)}e.isBoxedPrimitive=k;function H(z){return typeof Uint8Array<"u"&&(v(z)||A(z))}e.isAnyArrayBuffer=H,["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(z){Object.defineProperty(e,z,{enumerable:!1,value:function(){throw new Error(z+" is not supported in userland")}})})})(d3);var BT=function(t){return t&&typeof t=="object"&&typeof t.copy=="function"&&typeof t.fill=="function"&&typeof t.readUInt8=="function"},qp={exports:{}};typeof Object.create=="function"?qp.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:qp.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}};var Ye=qp.exports;(function(e){var t=Object.getOwnPropertyDescriptors||function(D){for(var Y=Object.keys(D),Q={},A=0;A<Y.length;A++)Q[Y[A]]=Object.getOwnPropertyDescriptor(D,Y[A]);return Q},r=/%[sdj%]/g;e.format=function(T){if(!W(T)){for(var D=[],Y=0;Y<arguments.length;Y++)D.push(l(arguments[Y]));return D.join(" ")}for(var Y=1,Q=arguments,A=Q.length,E=String(T).replace(r,function(V){if(V==="%%")return"%";if(Y>=A)return V;switch(V){case"%s":return String(Q[Y++]);case"%d":return Number(Q[Y++]);case"%j":try{return JSON.stringify(Q[Y++])}catch{return"[Circular]"}default:return V}}),q=Q[Y];Y<A;q=Q[++Y])C(q)||!K(q)?E+=" "+q:E+=" "+l(q);return E},e.deprecate=function(T,D){if(typeof ye<"u"&&ye.noDeprecation===!0)return T;if(typeof ye>"u")return function(){return e.deprecate(T,D).apply(this,arguments)};var Y=!1;function Q(){if(!Y){if(ye.throwDeprecation)throw new Error(D);ye.traceDeprecation?console.trace(D):console.error(D),Y=!0}return T.apply(this,arguments)}return Q};var i={},a=/^$/;if({}.NODE_DEBUG){var n={}.NODE_DEBUG;n=n.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),a=new RegExp("^"+n+"$","i")}e.debuglog=function(T){if(T=T.toUpperCase(),!i[T])if(a.test(T)){var D=ye.pid;i[T]=function(){var Y=e.format.apply(e,arguments);console.error("%s %d: %s",T,D,Y)}}else i[T]=function(){};return i[T]};function l(T,D){var Y={seen:[],stylize:d};return arguments.length>=3&&(Y.depth=arguments[2]),arguments.length>=4&&(Y.colors=arguments[3]),P(D)?Y.showHidden=D:D&&e._extend(Y,D),re(Y.showHidden)&&(Y.showHidden=!1),re(Y.depth)&&(Y.depth=2),re(Y.colors)&&(Y.colors=!1),re(Y.customInspect)&&(Y.customInspect=!0),Y.colors&&(Y.stylize=h),_(Y,T,Y.depth)}e.inspect=l,l.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},l.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function h(T,D){var Y=l.styles[D];return Y?"\x1B["+l.colors[Y][0]+"m"+T+"\x1B["+l.colors[Y][1]+"m":T}function d(T,D){return T}function m(T){var D={};return T.forEach(function(Y,Q){D[Y]=!0}),D}function _(T,D,Y){if(T.customInspect&&D&&o(D.inspect)&&D.inspect!==e.inspect&&!(D.constructor&&D.constructor.prototype===D)){var Q=D.inspect(Y,T);return W(Q)||(Q=_(T,Q,Y)),Q}var A=S(T,D);if(A)return A;var E=Object.keys(D),q=m(E);if(T.showHidden&&(E=Object.getOwnPropertyNames(D)),M(D)&&(E.indexOf("message")>=0||E.indexOf("description")>=0))return R(D);if(E.length===0){if(o(D)){var V=D.name?": "+D.name:"";return T.stylize("[Function"+V+"]","special")}if(J(D))return T.stylize(RegExp.prototype.toString.call(D),"regexp");if(se(D))return T.stylize(Date.prototype.toString.call(D),"date");if(M(D))return R(D)}var X="",b=!1,y=["{","}"];if(B(D)&&(b=!0,y=["[","]"]),o(D)){var F=D.name?": "+D.name:"";X=" [Function"+F+"]"}if(J(D)&&(X=" "+RegExp.prototype.toString.call(D)),se(D)&&(X=" "+Date.prototype.toUTCString.call(D)),M(D)&&(X=" "+R(D)),E.length===0&&(!b||D.length==0))return y[0]+X+y[1];if(Y<0)return J(D)?T.stylize(RegExp.prototype.toString.call(D),"regexp"):T.stylize("[Object]","special");T.seen.push(D);var U;return b?U=I(T,D,Y,q,E):U=E.map(function(Z){return O(T,D,Y,q,Z,b)}),T.seen.pop(),L(U,X,y)}function S(T,D){if(re(D))return T.stylize("undefined","undefined");if(W(D)){var Y="'"+JSON.stringify(D).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return T.stylize(Y,"string")}if($(D))return T.stylize(""+D,"number");if(P(D))return T.stylize(""+D,"boolean");if(C(D))return T.stylize("null","null")}function R(T){return"["+Error.prototype.toString.call(T)+"]"}function I(T,D,Y,Q,A){for(var E=[],q=0,V=D.length;q<V;++q)x(D,String(q))?E.push(O(T,D,Y,Q,String(q),!0)):E.push("");return A.forEach(function(X){X.match(/^\d+$/)||E.push(O(T,D,Y,Q,X,!0))}),E}function O(T,D,Y,Q,A,E){var q,V,X;if(X=Object.getOwnPropertyDescriptor(D,A)||{value:D[A]},X.get?X.set?V=T.stylize("[Getter/Setter]","special"):V=T.stylize("[Getter]","special"):X.set&&(V=T.stylize("[Setter]","special")),x(Q,A)||(q="["+A+"]"),V||(T.seen.indexOf(X.value)<0?(C(Y)?V=_(T,X.value,null):V=_(T,X.value,Y-1),V.indexOf(`
+`)>-1&&(E?V=V.split(`
+`).map(function(b){return"  "+b}).join(`
+`).slice(2):V=`
+`+V.split(`
+`).map(function(b){return"   "+b}).join(`
+`))):V=T.stylize("[Circular]","special")),re(q)){if(E&&A.match(/^\d+$/))return V;q=JSON.stringify(""+A),q.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(q=q.slice(1,-1),q=T.stylize(q,"name")):(q=q.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),q=T.stylize(q,"string"))}return q+": "+V}function L(T,D,Y){var Q=T.reduce(function(A,E){return E.indexOf(`
+`)>=0,A+E.replace(/\u001b\[\d\d?m/g,"").length+1},0);return Q>60?Y[0]+(D===""?"":D+`
+ `)+" "+T.join(`,
+  `)+" "+Y[1]:Y[0]+D+" "+T.join(", ")+" "+Y[1]}e.types=d3;function B(T){return Array.isArray(T)}e.isArray=B;function P(T){return typeof T=="boolean"}e.isBoolean=P;function C(T){return T===null}e.isNull=C;function N(T){return T==null}e.isNullOrUndefined=N;function $(T){return typeof T=="number"}e.isNumber=$;function W(T){return typeof T=="string"}e.isString=W;function G(T){return typeof T=="symbol"}e.isSymbol=G;function re(T){return T===void 0}e.isUndefined=re;function J(T){return K(T)&&u(T)==="[object RegExp]"}e.isRegExp=J,e.types.isRegExp=J;function K(T){return typeof T=="object"&&T!==null}e.isObject=K;function se(T){return K(T)&&u(T)==="[object Date]"}e.isDate=se,e.types.isDate=se;function M(T){return K(T)&&(u(T)==="[object Error]"||T instanceof Error)}e.isError=M,e.types.isNativeError=M;function o(T){return typeof T=="function"}e.isFunction=o;function f(T){return T===null||typeof T=="boolean"||typeof T=="number"||typeof T=="string"||typeof T=="symbol"||typeof T>"u"}e.isPrimitive=f,e.isBuffer=BT;function u(T){return Object.prototype.toString.call(T)}function c(T){return T<10?"0"+T.toString(10):T.toString(10)}var p=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function w(){var T=new Date,D=[c(T.getHours()),c(T.getMinutes()),c(T.getSeconds())].join(":");return[T.getDate(),p[T.getMonth()],D].join(" ")}e.log=function(){console.log("%s - %s",w(),e.format.apply(e,arguments))},e.inherits=Ye,e._extend=function(T,D){if(!D||!K(D))return T;for(var Y=Object.keys(D),Q=Y.length;Q--;)T[Y[Q]]=D[Y[Q]];return T};function x(T,D){return Object.prototype.hasOwnProperty.call(T,D)}var g=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;e.promisify=function(D){if(typeof D!="function")throw new TypeError('The "original" argument must be of type Function');if(g&&D[g]){var Y=D[g];if(typeof Y!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(Y,g,{value:Y,enumerable:!1,writable:!1,configurable:!0}),Y}function Y(){for(var Q,A,E=new Promise(function(X,b){Q=X,A=b}),q=[],V=0;V<arguments.length;V++)q.push(arguments[V]);q.push(function(X,b){X?A(X):Q(b)});try{D.apply(this,q)}catch(X){A(X)}return E}return Object.setPrototypeOf(Y,Object.getPrototypeOf(D)),g&&Object.defineProperty(Y,g,{value:Y,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(Y,t(D))},e.promisify.custom=g;function s(T,D){if(!T){var Y=new Error("Promise was rejected with a falsy value");Y.reason=T,T=Y}return D(T)}function v(T){if(typeof T!="function")throw new TypeError('The "original" argument must be of type Function');function D(){for(var Y=[],Q=0;Q<arguments.length;Q++)Y.push(arguments[Q]);var A=Y.pop();if(typeof A!="function")throw new TypeError("The last argument must be of type Function");var E=this,q=function(){return A.apply(E,arguments)};T.apply(this,Y).then(function(V){ye.nextTick(q.bind(null,null,V))},function(V){ye.nextTick(s.bind(null,V,q))})}return Object.setPrototypeOf(D,Object.getPrototypeOf(T)),Object.defineProperties(D,t(T)),D}e.callbackify=v})(oi);var Ad,n1;function LT(){if(n1)return Ad;n1=1;function e(O,L){var B=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);L&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),B.push.apply(B,P)}return B}function t(O){for(var L=1;L<arguments.length;L++){var B=arguments[L]!=null?arguments[L]:{};L%2?e(Object(B),!0).forEach(function(P){r(O,P,B[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(B)):e(Object(B)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(B,P))})}return O}function r(O,L,B){return L=l(L),L in O?Object.defineProperty(O,L,{value:B,enumerable:!0,configurable:!0,writable:!0}):O[L]=B,O}function i(O,L){if(!(O instanceof L))throw new TypeError("Cannot call a class as a function")}function a(O,L){for(var B=0;B<L.length;B++){var P=L[B];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,L,B){return L&&a(O.prototype,L),B&&a(O,B),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var L=h(O,"string");return typeof L=="symbol"?L:String(L)}function h(O,L){if(typeof O!="object"||O===null)return O;var B=O[Symbol.toPrimitive];if(B!==void 0){var P=B.call(O,L||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(L==="string"?String:Number)(O)}var d=Le,m=d.Buffer,_=oi,S=_.inspect,R=S&&S.custom||"inspect";function I(O,L,B){m.prototype.copy.call(O,L,B)}return Ad=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(B){var P={data:B,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(B){var P={data:B,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var B=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,B}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(B){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=B+P.data;return C}},{key:"concat",value:function(B){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(B>>>0),C=this.head,N=0;C;)I(C.data,P,N),N+=C.data.length,C=C.next;return P}},{key:"consume",value:function(B,P){var C;return B<this.head.data.length?(C=this.head.data.slice(0,B),this.head.data=this.head.data.slice(B)):B===this.head.data.length?C=this.shift():C=P?this._getString(B):this._getBuffer(B),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(B){var P=this.head,C=1,N=P.data;for(B-=N.length;P=P.next;){var $=P.data,W=B>$.length?$.length:B;if(W===$.length?N+=$:N+=$.slice(0,B),B-=W,B===0){W===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(W));break}++C}return this.length-=C,N}},{key:"_getBuffer",value:function(B){var P=m.allocUnsafe(B),C=this.head,N=1;for(C.data.copy(P),B-=C.data.length;C=C.next;){var $=C.data,W=B>$.length?$.length:B;if($.copy(P,P.length-B,0,W),B-=W,B===0){W===$.length?(++N,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(W));break}++N}return this.length-=N,P}},{key:R,value:function(B,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),Ad}function NT(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,ye.nextTick(Wp,this,e)):ye.nextTick(Wp,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?ye.nextTick(Iu,r):(r._writableState.errorEmitted=!0,ye.nextTick(o1,r,n)):ye.nextTick(o1,r,n):t?(ye.nextTick(Iu,r),t(n)):ye.nextTick(Iu,r)}),this)}function o1(e,t){Wp(e,t),Iu(e)}function Iu(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function kT(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Wp(e,t){e.emit("error",t)}function $T(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}var O3={destroy:NT,undestroy:kT,errorOrDestroy:$T},Ba={};function DT(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var I3={};function Ai(e,t,r){r||(r=Error);function i(n,l,h){return typeof t=="string"?t:t(n,l,h)}var a=function(n){DT(l,n);function l(h,d,m){return n.call(this,i(h,d,m))||this}return l}(r);a.prototype.name=r.name,a.prototype.code=e,I3[e]=a}function a1(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(i){return String(i)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function FT(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function jT(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function UT(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Ai("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Ai("ERR_INVALID_ARG_TYPE",function(e,t,r){var i;typeof t=="string"&&FT(t,"not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";var a;if(jT(e," argument"))a="The ".concat(e," ").concat(i," ").concat(a1(t,"type"));else{var n=UT(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(n," ").concat(i," ").concat(a1(t,"type"))}return a+=". Received type ".concat(typeof r),a},TypeError);Ai("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Ai("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Ai("ERR_STREAM_PREMATURE_CLOSE","Premature close");Ai("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Ai("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Ai("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Ai("ERR_STREAM_WRITE_AFTER_END","write after end");Ai("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Ai("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Ai("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Ba.codes=I3;var HT=Ba.codes.ERR_INVALID_OPT_VALUE;function qT(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function WT(e,t,r,i){var a=qT(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=i?r:"highWaterMark";throw new HT(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}var P3={getHighWaterMark:WT},ef=KT;function KT(e,t){if(Td("noDeprecation"))return e;var r=!1;function i(){if(!r){if(Td("throwDeprecation"))throw new Error(t);Td("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}return i}function Td(e){try{if(!Ze.localStorage)return!1}catch{return!1}var t=Ze.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}var Od,s1;function C3(){if(s1)return Od;s1=1,Od=J;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){Q(E,A)}}var t;J.WritableState=G;var r={deprecate:ef},i=c3,a=Le.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function h(A){return a.isBuffer(A)||A instanceof n}var d=O3,m=P3,_=m.getHighWaterMark,S=Ba.codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,L=S.ERR_STREAM_CANNOT_PIPE,B=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,N=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(J,i);function W(){}function G(A,E,q){t=t||Ts(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=_(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var re;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(re=Function.prototype[Symbol.hasInstance],Object.defineProperty(J,Symbol.hasInstance,{value:function(E){return re.call(this,E)?!0:this!==J?!1:E&&E._writableState instanceof G}})):re=function(E){return E instanceof this};function J(A){t=t||Ts();var E=this instanceof t;if(!E&&!re.call(J,this))return new J(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}J.prototype.pipe=function(){$(this,new L)};function K(A,E){var q=new C;$(A,q),ye.nextTick(E,q)}function se(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),ye.nextTick(V,X),!1):!0}J.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&h(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=W),V.ending?K(this,q):(b||se(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},J.prototype.cork=function(){this._writableState.corked++},J.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},J.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new N(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(J.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function M(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(J.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=M(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var F=E.objectMode?1:V.length;E.length+=F;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,F,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new B("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(ye.nextTick(X,V),ye.nextTick(D,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),D(A,E))}function c(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(c(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?ye.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),D(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,F=!0;q;)X[y]=q,q.isBuf||(F=!1),q=q.next,y+=1;X.allBuffers=F,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,j=q.callback,k=E.objectMode?1:U.length;if(f(A,E,!1,k,U,Z,j),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}J.prototype._write=function(A,E,q){q(new I("_write()"))},J.prototype._writev=null,J.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(J.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),D(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,ye.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function D(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,D(A,E),q&&(E.finished?ye.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function Q(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(J.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),J.prototype.destroy=d.destroy,J.prototype._undestroy=d.undestroy,J.prototype._destroy=function(A,E){E(A)},Od}var Id,f1;function Ts(){if(f1)return Id;f1=1;var e=Object.keys||function(m){var _=[];for(var S in m)_.push(S);return _};Id=l;var t=L3(),r=C3();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",h)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function h(){this._writableState.ended||ye.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(_){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=_,this._writableState.destroyed=_)}}),Id}var Pd={},Kp={exports:{}};/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */(function(e,t){var r=Le,i=r.Buffer;function a(l,h){for(var d in l)h[d]=l[d]}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=r:(a(r,t),t.Buffer=n);function n(l,h,d){return i(l,h,d)}n.prototype=Object.create(i.prototype),a(i,n),n.from=function(l,h,d){if(typeof l=="number")throw new TypeError("Argument must not be a number");return i(l,h,d)},n.alloc=function(l,h,d){if(typeof l!="number")throw new TypeError("Argument must be a number");var m=i(l);return h!==void 0?typeof d=="string"?m.fill(h,d):m.fill(h):m.fill(0),m},n.allocUnsafe=function(l){if(typeof l!="number")throw new TypeError("Argument must be a number");return i(l)},n.allocUnsafeSlow=function(l){if(typeof l!="number")throw new TypeError("Argument must be a number");return r.SlowBuffer(l)}})(Kp,Kp.exports);var vt=Kp.exports,l1;function ti(){if(l1)return Pd;l1=1;var e=vt.Buffer,t=e.isEncoding||function(P){switch(P=""+P,P&&P.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function r(P){if(!P)return"utf8";for(var C;;)switch(P){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return P;default:if(C)return;P=(""+P).toLowerCase(),C=!0}}function i(P){var C=r(P);if(typeof C!="string"&&(e.isEncoding===t||!t(P)))throw new Error("Unknown encoding: "+P);return C||P}Pd.StringDecoder=a;function a(P){this.encoding=i(P);var C;switch(this.encoding){case"utf16le":this.text=S,this.end=R,C=4;break;case"utf8":this.fillLast=d,C=4;break;case"base64":this.text=I,this.end=O,C=3;break;default:this.write=L,this.end=B;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=e.allocUnsafe(C)}a.prototype.write=function(P){if(P.length===0)return"";var C,N;if(this.lastNeed){if(C=this.fillLast(P),C===void 0)return"";N=this.lastNeed,this.lastNeed=0}else N=0;return N<P.length?C?C+this.text(P,N):this.text(P,N):C||""},a.prototype.end=_,a.prototype.text=m,a.prototype.fillLast=function(P){if(this.lastNeed<=P.length)return P.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);P.copy(this.lastChar,this.lastTotal-this.lastNeed,0,P.length),this.lastNeed-=P.length};function n(P){return P<=127?0:P>>5===6?2:P>>4===14?3:P>>3===30?4:P>>6===2?-1:-2}function l(P,C,N){var $=C.length-1;if($<N)return 0;var W=n(C[$]);return W>=0?(W>0&&(P.lastNeed=W-1),W):--$<N||W===-2?0:(W=n(C[$]),W>=0?(W>0&&(P.lastNeed=W-2),W):--$<N||W===-2?0:(W=n(C[$]),W>=0?(W>0&&(W===2?W=0:P.lastNeed=W-3),W):0))}function h(P,C,N){if((C[0]&192)!==128)return P.lastNeed=0,"�";if(P.lastNeed>1&&C.length>1){if((C[1]&192)!==128)return P.lastNeed=1,"�";if(P.lastNeed>2&&C.length>2&&(C[2]&192)!==128)return P.lastNeed=2,"�"}}function d(P){var C=this.lastTotal-this.lastNeed,N=h(this,P);if(N!==void 0)return N;if(this.lastNeed<=P.length)return P.copy(this.lastChar,C,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);P.copy(this.lastChar,C,0,P.length),this.lastNeed-=P.length}function m(P,C){var N=l(this,P,C);if(!this.lastNeed)return P.toString("utf8",C);this.lastTotal=N;var $=P.length-(N-this.lastNeed);return P.copy(this.lastChar,0,$),P.toString("utf8",C,$)}function _(P){var C=P&&P.length?this.write(P):"";return this.lastNeed?C+"�":C}function S(P,C){if((P.length-C)%2===0){var N=P.toString("utf16le",C);if(N){var $=N.charCodeAt(N.length-1);if($>=55296&&$<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=P[P.length-2],this.lastChar[1]=P[P.length-1],N.slice(0,-1)}return N}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=P[P.length-1],P.toString("utf16le",C,P.length-1)}function R(P){var C=P&&P.length?this.write(P):"";if(this.lastNeed){var N=this.lastTotal-this.lastNeed;return C+this.lastChar.toString("utf16le",0,N)}return C}function I(P,C){var N=(P.length-C)%3;return N===0?P.toString("base64",C):(this.lastNeed=3-N,this.lastTotal=3,N===1?this.lastChar[0]=P[P.length-1]:(this.lastChar[0]=P[P.length-2],this.lastChar[1]=P[P.length-1]),P.toString("base64",C,P.length-N))}function O(P){var C=P&&P.length?this.write(P):"";return this.lastNeed?C+this.lastChar.toString("base64",0,3-this.lastNeed):C}function L(P){return P.toString(this.encoding)}function B(P){return P&&P.length?this.write(P):""}return Pd}var u1=Ba.codes.ERR_STREAM_PREMATURE_CLOSE;function VT(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];e.apply(this,i)}}}function zT(){}function GT(e){return e.setHeader&&typeof e.abort=="function"}function B3(e,t,r){if(typeof t=="function")return B3(e,null,t);t||(t={}),r=VT(r||zT);var i=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||h()},l=e._writableState&&e._writableState.finished,h=function(){a=!1,l=!0,i||r.call(e)},d=e._readableState&&e._readableState.endEmitted,m=function(){i=!1,d=!0,a||r.call(e)},_=function(O){r.call(e,O)},S=function(){var O;if(i&&!d)return(!e._readableState||!e._readableState.ended)&&(O=new u1),r.call(e,O);if(a&&!l)return(!e._writableState||!e._writableState.ended)&&(O=new u1),r.call(e,O)},R=function(){e.req.on("finish",h)};return GT(e)?(e.on("complete",h),e.on("abort",S),e.req?R():e.on("request",R)):a&&!e._writableState&&(e.on("end",n),e.on("close",n)),e.on("end",m),e.on("finish",h),t.error!==!1&&e.on("error",_),e.on("close",S),function(){e.removeListener("complete",h),e.removeListener("abort",S),e.removeListener("request",R),e.req&&e.req.removeListener("finish",h),e.removeListener("end",n),e.removeListener("close",n),e.removeListener("finish",h),e.removeListener("end",m),e.removeListener("error",_),e.removeListener("close",S)}}var Og=B3,Cd,h1;function YT(){if(h1)return Cd;h1=1;var e;function t(N,$,W){return $=r($),$ in N?Object.defineProperty(N,$,{value:W,enumerable:!0,configurable:!0,writable:!0}):N[$]=W,N}function r(N){var $=i(N,"string");return typeof $=="symbol"?$:String($)}function i(N,$){if(typeof N!="object"||N===null)return N;var W=N[Symbol.toPrimitive];if(W!==void 0){var G=W.call(N,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(N)}var a=Og,n=Symbol("lastResolve"),l=Symbol("lastReject"),h=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),_=Symbol("handlePromise"),S=Symbol("stream");function R(N,$){return{value:N,done:$}}function I(N){var $=N[n];if($!==null){var W=N[S].read();W!==null&&(N[m]=null,N[n]=null,N[l]=null,$(R(W,!1)))}}function O(N){ye.nextTick(I,N)}function L(N,$){return function(W,G){N.then(function(){if($[d]){W(R(void 0,!0));return}$[_](W,G)},G)}}var B=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,W=this[h];if(W!==null)return Promise.reject(W);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(K,se){ye.nextTick(function(){$[h]?se($[h]):K(R(void 0,!0))})});var G=this[m],re;if(G)re=new Promise(L(G,this));else{var J=this[S].read();if(J!==null)return Promise.resolve(R(J,!1));re=new Promise(this[_])}return this[m]=re,re}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(W,G){$[S].destroy(null,function(re){if(re){G(re);return}W(R(void 0,!0))})})}),e),B),C=function($){var W,G=Object.create(P,(W={},t(W,S,{value:$,writable:!0}),t(W,n,{value:null,writable:!0}),t(W,l,{value:null,writable:!0}),t(W,h,{value:null,writable:!0}),t(W,d,{value:$._readableState.endEmitted,writable:!0}),t(W,_,{value:function(J,K){var se=G[S].read();se?(G[m]=null,G[n]=null,G[l]=null,J(R(se,!1))):(G[n]=J,G[l]=K)},writable:!0}),W));return G[m]=null,a($,function(re){if(re&&re.code!=="ERR_STREAM_PREMATURE_CLOSE"){var J=G[l];J!==null&&(G[m]=null,G[n]=null,G[l]=null,J(re)),G[h]=re;return}var K=G[n];K!==null&&(G[m]=null,G[n]=null,G[l]=null,K(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return Cd=C,Cd}var Bd,c1;function ZT(){return c1||(c1=1,Bd=function(){throw new Error("Readable.from is not available in the browser")}),Bd}var Ld,d1;function L3(){if(d1)return Ld;d1=1,Ld=K;var e;K.ReadableState=J,kr.EventEmitter;var t=function(y,F){return y.listeners(F).length},r=c3,i=Le.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var h=oi,d;h&&h.debuglog?d=h.debuglog("stream"):d=function(){};var m=LT(),_=O3,S=P3,R=S.getHighWaterMark,I=Ba.codes,O=I.ERR_INVALID_ARG_TYPE,L=I.ERR_STREAM_PUSH_AFTER_EOF,B=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,N,$;Ye(K,r);var W=_.errorOrDestroy,G=["error","close","destroy","pause","resume"];function re(b,y,F){if(typeof b.prependListener=="function")return b.prependListener(y,F);!b._events||!b._events[y]?b.on(y,F):Array.isArray(b._events[y])?b._events[y].unshift(F):b._events[y]=[F,b._events[y]]}function J(b,y,F){e=e||Ts(),b=b||{},typeof F!="boolean"&&(F=y instanceof e),this.objectMode=!!b.objectMode,F&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",F),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=ti().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function K(b){if(e=e||Ts(),!(this instanceof K))return new K(b);var y=this instanceof e;this._readableState=new J(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(K.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),K.prototype.destroy=_.destroy,K.prototype._undestroy=_.undestroy,K.prototype._destroy=function(b,y){y(b)},K.prototype.push=function(b,y){var F=this._readableState,U;return F.objectMode?U=!0:typeof b=="string"&&(y=y||F.defaultEncoding,y!==F.encoding&&(b=i.from(b,y),y=""),U=!0),se(this,b,y,!1,U)},K.prototype.unshift=function(b){return se(this,b,null,!0,!1)};function se(b,y,F,U,Z){d("readableAddChunk",y);var j=b._readableState;if(y===null)j.reading=!1,p(b,j);else{var k;if(Z||(k=o(j,y)),k)W(b,k);else if(j.objectMode||y&&y.length>0)if(typeof y!="string"&&!j.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)j.endEmitted?W(b,new P):M(b,j,y,!0);else if(j.ended)W(b,new L);else{if(j.destroyed)return!1;j.reading=!1,j.decoder&&!F?(y=j.decoder.write(y),j.objectMode||y.length!==0?M(b,j,y,!1):g(b,j)):M(b,j,y,!1)}else U||(j.reading=!1,g(b,j))}return!j.ended&&(j.length<j.highWaterMark||j.length===0)}function M(b,y,F,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",F)):(y.length+=y.objectMode?1:F.length,U?y.buffer.unshift(F):y.buffer.push(F),y.needReadable&&w(b)),g(b,y)}function o(b,y){var F;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(F=new O("chunk",["string","Buffer","Uint8Array"],y)),F}K.prototype.isPaused=function(){return this._readableState.flowing===!1},K.prototype.setEncoding=function(b){C||(C=ti().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var F=this._readableState.buffer.head,U="";F!==null;)U+=y.write(F.data),F=F.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function c(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}K.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,F=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=c(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=c(F,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),F!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var F=y.decoder.end();F&&F.length&&(y.buffer.push(F),y.length+=y.objectMode?1:F.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,ye.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,ye.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var F=y.length;if(d("maybeReadMore read 0"),b.read(0),F===y.length)break}y.readingMore=!1}K.prototype._read=function(b){W(this,new B("_read()"))},K.prototype.pipe=function(b,y){var F=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==ye.stdout&&b!==ye.stderr,j=Z?H:xe;U.endEmitted?ye.nextTick(j):F.once("end",j),b.on("unpipe",k);function k(le,ve){d("onunpipe"),le===F&&ve&&ve.hasUnpiped===!1&&(ve.hasUnpiped=!0,ee())}function H(){d("onend"),b.end()}var z=v(F);b.on("drain",z);var oe=!1;function ee(){d("cleanup"),b.removeListener("close",he),b.removeListener("finish",ue),b.removeListener("drain",z),b.removeListener("error",me),b.removeListener("unpipe",k),F.removeListener("end",H),F.removeListener("end",xe),F.removeListener("data",ne),oe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}F.on("data",ne);function ne(le){d("ondata");var ve=b.write(le);d("dest.write",ve),ve===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!oe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),F.pause())}function me(le){d("onerror",le),xe(),b.removeListener("error",me),t(b,"error")===0&&W(b,le)}re(b,"error",me);function he(){b.removeListener("finish",ue),xe()}b.once("close",he);function ue(){d("onfinish"),b.removeListener("close",he),xe()}b.once("finish",ue);function xe(){d("unpipe"),F.unpipe(b)}return b.emit("pipe",F),U.flowing||(d("pipe resume"),F.resume()),b};function v(b){return function(){var F=b._readableState;d("pipeOnDrain",F.awaitDrain),F.awaitDrain&&F.awaitDrain--,F.awaitDrain===0&&t(b,"data")&&(F.flowing=!0,A(b))}}K.prototype.unpipe=function(b){var y=this._readableState,F={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,F),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var j=0;j<Z;j++)U[j].emit("unpipe",this,{hasUnpiped:!1});return this}var k=X(y.pipes,b);return k===-1?this:(y.pipes.splice(k,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,F),this)},K.prototype.on=function(b,y){var F=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||ye.nextTick(D,this)),F},K.prototype.addListener=K.prototype.on,K.prototype.removeListener=function(b,y){var F=r.prototype.removeListener.call(this,b,y);return b==="readable"&&ye.nextTick(T,this),F},K.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&ye.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function D(b){d("readable nexttick read 0"),b.read(0)}K.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,ye.nextTick(Q,b,y))}function Q(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}K.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}K.prototype.wrap=function(b){var y=this,F=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),F.decoder&&!F.ended){var k=F.decoder.end();k&&k.length&&y.push(k)}y.push(null)}),b.on("data",function(k){if(d("wrapped data"),F.decoder&&(k=F.decoder.write(k)),!(F.objectMode&&k==null)&&!(!F.objectMode&&(!k||!k.length))){var H=y.push(k);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var j=0;j<G.length;j++)b.on(G[j],this.emit.bind(this,G[j]));return this._read=function(k){d("wrapped _read",k),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(K.prototype[Symbol.asyncIterator]=function(){return N===void 0&&(N=YT()),N(this)}),Object.defineProperty(K.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(K.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(K.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),K._fromList=E,Object.defineProperty(K.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var F;return y.objectMode?F=y.buffer.shift():!b||b>=y.length?(y.decoder?F=y.buffer.join(""):y.buffer.length===1?F=y.buffer.first():F=y.buffer.concat(y.length),y.buffer.clear()):F=y.buffer.consume(b,y.decoder),F}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,ye.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var F=y._writableState;(!F||F.autoDestroy&&F.finished)&&y.destroy()}}typeof Symbol=="function"&&(K.from=function(b,y){return $===void 0&&($=ZT()),$(K,b,y)});function X(b,y){for(var F=0,U=b.length;F<U;F++)if(b[F]===y)return F;return-1}return Ld}var N3=eo,ac=Ba.codes,XT=ac.ERR_METHOD_NOT_IMPLEMENTED,JT=ac.ERR_MULTIPLE_CALLBACK,QT=ac.ERR_TRANSFORM_ALREADY_TRANSFORMING,eO=ac.ERR_TRANSFORM_WITH_LENGTH_0,sc=Ts();Ye(eo,sc);function tO(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new JT);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function eo(e){if(!(this instanceof eo))return new eo(e);sc.call(this,e),this._transformState={afterTransform:tO.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",rO)}function rO(){var e=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(t,r){p1(e,t,r)}):p1(this,null,null)}eo.prototype.push=function(e,t){return this._transformState.needTransform=!1,sc.prototype.push.call(this,e,t)};eo.prototype._transform=function(e,t,r){r(new XT("_transform()"))};eo.prototype._write=function(e,t,r){var i=this._transformState;if(i.writecb=r,i.writechunk=e,i.writeencoding=t,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};eo.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};eo.prototype._destroy=function(e,t){sc.prototype._destroy.call(this,e,function(r){t(r)})};function p1(e,t,r){if(t)return e.emit("error",t);if(r!=null&&e.push(r),e._writableState.length)throw new eO;if(e._transformState.transforming)throw new QT;return e.push(null)}var iO=hl,k3=N3;Ye(hl,k3);function hl(e){if(!(this instanceof hl))return new hl(e);k3.call(this,e)}hl.prototype._transform=function(e,t,r){r(null,e)};var Nd;function nO(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var $3=Ba.codes,oO=$3.ERR_MISSING_ARGS,aO=$3.ERR_STREAM_DESTROYED;function v1(e){if(e)throw e}function sO(e){return e.setHeader&&typeof e.abort=="function"}function fO(e,t,r,i){i=nO(i);var a=!1;e.on("close",function(){a=!0}),Nd===void 0&&(Nd=Og),Nd(e,{readable:t,writable:r},function(l){if(l)return i(l);a=!0,i()});var n=!1;return function(l){if(!a&&!n){if(n=!0,sO(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();i(l||new aO("pipe"))}}}function g1(e){e()}function lO(e,t){return e.pipe(t)}function uO(e){return!e.length||typeof e[e.length-1]!="function"?v1:e.pop()}function hO(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=uO(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new oO("streams");var a,n=t.map(function(l,h){var d=h<t.length-1,m=h>0;return fO(l,d,m,function(_){a||(a=_),_&&n.forEach(g1),!d&&(n.forEach(g1),i(a))})});return t.reduce(lO)}var cO=hO;(function(e,t){t=e.exports=L3(),t.Stream=t,t.Readable=t,t.Writable=C3(),t.Duplex=Ts(),t.Transform=N3,t.PassThrough=iO,t.finished=Og,t.pipeline=cO})(kp,kp.exports);var Tl=kp.exports;const dO=Mg,pO=Tl.Readable,vO={objectMode:!0},gO={clean:!0};function Do(e){if(!(this instanceof Do))return new Do(e);this.options=e||{},this.options=dO(gO,e),this._inflights=new Map}Do.prototype.put=function(e,t){return this._inflights.set(e.messageId,e),t&&t(),this};Do.prototype.createStream=function(){const e=new pO(vO),t=[];let r=!1,i=0;return this._inflights.forEach(function(a,n){t.push(a)}),e._read=function(){!r&&i<t.length?this.push(t[i++]):this.push(null)},e.destroy=function(){if(r)return;const a=this;r=!0,setTimeout(function(){a.emit("close")},0)},e};Do.prototype.del=function(e,t){return e=this._inflights.get(e.messageId),e?(this._inflights.delete(e.messageId),t(null,e)):t&&t(new Error("missing packet")),this};Do.prototype.get=function(e,t){return e=this._inflights.get(e.messageId),e?t(null,e):t&&t(new Error("missing packet")),this};Do.prototype.close=function(e){this.options.clean&&(this._inflights=null),e&&e()};var D3=Do;function Os(e){if(!(this instanceof Os))return new Os(e);this.aliasToTopic={},this.max=e}Os.prototype.put=function(e,t){return t===0||t>this.max?!1:(this.aliasToTopic[t]=e,this.length=Object.keys(this.aliasToTopic).length,!0)};Os.prototype.getTopicByAlias=function(e){return this.aliasToTopic[e]};Os.prototype.clear=function(){this.aliasToTopic={}};var mO=Os,kd,m1;function yO(){return m1||(m1=1,kd=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}),kd}var bO=$t;$t.Node=Sa;$t.create=$t;function $t(e){var t=this;if(t instanceof $t||(t=new $t),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(a){t.push(a)});else if(arguments.length>0)for(var r=0,i=arguments.length;r<i;r++)t.push(arguments[r]);return t}$t.prototype.removeNode=function(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");var t=e.next,r=e.prev;return t&&(t.prev=r),r&&(r.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=r),e.list.length--,e.next=null,e.prev=null,e.list=null,t};$t.prototype.unshiftNode=function(e){if(e!==this.head){e.list&&e.list.removeNode(e);var t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}};$t.prototype.pushNode=function(e){if(e!==this.tail){e.list&&e.list.removeNode(e);var t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}};$t.prototype.push=function(){for(var e=0,t=arguments.length;e<t;e++)_O(this,arguments[e]);return this.length};$t.prototype.unshift=function(){for(var e=0,t=arguments.length;e<t;e++)MO(this,arguments[e]);return this.length};$t.prototype.pop=function(){if(this.tail){var e=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,e}};$t.prototype.shift=function(){if(this.head){var e=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,e}};$t.prototype.forEach=function(e,t){t=t||this;for(var r=this.head,i=0;r!==null;i++)e.call(t,r.value,i,this),r=r.next};$t.prototype.forEachReverse=function(e,t){t=t||this;for(var r=this.tail,i=this.length-1;r!==null;i--)e.call(t,r.value,i,this),r=r.prev};$t.prototype.get=function(e){for(var t=0,r=this.head;r!==null&&t<e;t++)r=r.next;if(t===e&&r!==null)return r.value};$t.prototype.getReverse=function(e){for(var t=0,r=this.tail;r!==null&&t<e;t++)r=r.prev;if(t===e&&r!==null)return r.value};$t.prototype.map=function(e,t){t=t||this;for(var r=new $t,i=this.head;i!==null;)r.push(e.call(t,i.value,this)),i=i.next;return r};$t.prototype.mapReverse=function(e,t){t=t||this;for(var r=new $t,i=this.tail;i!==null;)r.push(e.call(t,i.value,this)),i=i.prev;return r};$t.prototype.reduce=function(e,t){var r,i=this.head;if(arguments.length>1)r=t;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;i!==null;a++)r=e(r,i.value,a),i=i.next;return r};$t.prototype.reduceReverse=function(e,t){var r,i=this.tail;if(arguments.length>1)r=t;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;i!==null;a--)r=e(r,i.value,a),i=i.prev;return r};$t.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};$t.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};$t.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new $t;if(t<e||t<0)return r;e<0&&(e=0),t>this.length&&(t=this.length);for(var i=0,a=this.head;a!==null&&i<e;i++)a=a.next;for(;a!==null&&i<t;i++,a=a.next)r.push(a.value);return r};$t.prototype.sliceReverse=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new $t;if(t<e||t<0)return r;e<0&&(e=0),t>this.length&&(t=this.length);for(var i=this.length,a=this.tail;a!==null&&i>t;i--)a=a.prev;for(;a!==null&&i>e;i--,a=a.prev)r.push(a.value);return r};$t.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,a=this.head;a!==null&&i<e;i++)a=a.next;for(var n=[],i=0;a&&i<t;i++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var i=0;i<r.length;i++)a=wO(this,a,r[i]);return n};$t.prototype.reverse=function(){for(var e=this.head,t=this.tail,r=e;r!==null;r=r.prev){var i=r.prev;r.prev=r.next,r.next=i}return this.head=t,this.tail=e,this};function wO(e,t,r){var i=t===e.head?new Sa(r,null,t,e):new Sa(r,t,t.next,e);return i.next===null&&(e.tail=i),i.prev===null&&(e.head=i),e.length++,i}function _O(e,t){e.tail=new Sa(t,e.tail,null,e),e.head||(e.head=e.tail),e.length++}function MO(e,t){e.head=new Sa(t,null,e.head,e),e.tail||(e.tail=e.head),e.length++}function Sa(e,t,r,i){if(!(this instanceof Sa))return new Sa(e,t,r,i);this.list=i,this.value=e,t?(t.next=this,this.prev=t):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{yO()($t)}catch{}const SO=bO,oa=Symbol("max"),qn=Symbol("length"),Ga=Symbol("lengthCalculator"),Zf=Symbol("allowStale"),fa=Symbol("maxAge"),Un=Symbol("dispose"),y1=Symbol("noDisposeOnSet"),hr=Symbol("lruList"),ji=Symbol("cache"),F3=Symbol("updateAgeOnGet"),$d=()=>1;class xO{constructor(t){if(typeof t=="number"&&(t={max:t}),t||(t={}),t.max&&(typeof t.max!="number"||t.max<0))throw new TypeError("max must be a non-negative number");this[oa]=t.max||1/0;const r=t.length||$d;if(this[Ga]=typeof r!="function"?$d:r,this[Zf]=t.stale||!1,t.maxAge&&typeof t.maxAge!="number")throw new TypeError("maxAge must be a number");this[fa]=t.maxAge||0,this[Un]=t.dispose,this[y1]=t.noDisposeOnSet||!1,this[F3]=t.updateAgeOnGet||!1,this.reset()}set max(t){if(typeof t!="number"||t<0)throw new TypeError("max must be a non-negative number");this[oa]=t||1/0,mf(this)}get max(){return this[oa]}set allowStale(t){this[Zf]=!!t}get allowStale(){return this[Zf]}set maxAge(t){if(typeof t!="number")throw new TypeError("maxAge must be a non-negative number");this[fa]=t,mf(this)}get maxAge(){return this[fa]}set lengthCalculator(t){typeof t!="function"&&(t=$d),t!==this[Ga]&&(this[Ga]=t,this[qn]=0,this[hr].forEach(r=>{r.length=this[Ga](r.value,r.key),this[qn]+=r.length})),mf(this)}get lengthCalculator(){return this[Ga]}get length(){return this[qn]}get itemCount(){return this[hr].length}rforEach(t,r){r=r||this;for(let i=this[hr].tail;i!==null;){const a=i.prev;b1(this,t,i,r),i=a}}forEach(t,r){r=r||this;for(let i=this[hr].head;i!==null;){const a=i.next;b1(this,t,i,r),i=a}}keys(){return this[hr].toArray().map(t=>t.key)}values(){return this[hr].toArray().map(t=>t.value)}reset(){this[Un]&&this[hr]&&this[hr].length&&this[hr].forEach(t=>this[Un](t.key,t.value)),this[ji]=new Map,this[hr]=new SO,this[qn]=0}dump(){return this[hr].map(t=>ph(this,t)?!1:{k:t.key,v:t.value,e:t.now+(t.maxAge||0)}).toArray().filter(t=>t)}dumpLru(){return this[hr]}set(t,r,i){if(i=i||this[fa],i&&typeof i!="number")throw new TypeError("maxAge must be a number");const a=i?Date.now():0,n=this[Ga](r,t);if(this[ji].has(t)){if(n>this[oa])return vs(this,this[ji].get(t)),!1;const d=this[ji].get(t).value;return this[Un]&&(this[y1]||this[Un](t,d.value)),d.now=a,d.maxAge=i,d.value=r,this[qn]+=n-d.length,d.length=n,this.get(t),mf(this),!0}const l=new EO(t,r,n,a,i);return l.length>this[oa]?(this[Un]&&this[Un](t,r),!1):(this[qn]+=l.length,this[hr].unshift(l),this[ji].set(t,this[hr].head),mf(this),!0)}has(t){if(!this[ji].has(t))return!1;const r=this[ji].get(t).value;return!ph(this,r)}get(t){return Dd(this,t,!0)}peek(t){return Dd(this,t,!1)}pop(){const t=this[hr].tail;return t?(vs(this,t),t.value):null}del(t){vs(this,this[ji].get(t))}load(t){this.reset();const r=Date.now();for(let i=t.length-1;i>=0;i--){const a=t[i],n=a.e||0;if(n===0)this.set(a.k,a.v);else{const l=n-r;l>0&&this.set(a.k,a.v,l)}}}prune(){this[ji].forEach((t,r)=>Dd(this,r,!1))}}const Dd=(e,t,r)=>{const i=e[ji].get(t);if(i){const a=i.value;if(ph(e,a)){if(vs(e,i),!e[Zf])return}else r&&(e[F3]&&(i.value.now=Date.now()),e[hr].unshiftNode(i));return a.value}},ph=(e,t)=>{if(!t||!t.maxAge&&!e[fa])return!1;const r=Date.now()-t.now;return t.maxAge?r>t.maxAge:e[fa]&&r>e[fa]},mf=e=>{if(e[qn]>e[oa])for(let t=e[hr].tail;e[qn]>e[oa]&&t!==null;){const r=t.prev;vs(e,t),t=r}},vs=(e,t)=>{if(t){const r=t.value;e[Un]&&e[Un](r.key,r.value),e[qn]-=r.length,e[ji].delete(r.key),e[hr].removeNode(t)}};class EO{constructor(t,r,i,a,n){this.key=t,this.value=r,this.length=i,this.now=a,this.maxAge=n||0}}const b1=(e,t,r,i)=>{let a=r.value;ph(e,a)&&(vs(e,r),e[Zf]||(a=void 0)),a&&t.call(i,a.value,a.key,e)};var RO=xO,j3={},AO=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),fc=function(){function e(t){t===void 0&&(t=0),this.iteratorType=t}return e.prototype.equals=function(t){return this.o===t.o},e}(),lc=function(){function e(){this.M=0}return Object.defineProperty(e.prototype,"length",{get:function(){return this.M},enumerable:!1,configurable:!0}),e.prototype.size=function(){return this.M},e.prototype.empty=function(){return this.M===0},e}(),Ig=function(e){AO(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(lc),TO=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),OO=function(e){TO(t,e);function t(r){r===void 0&&(r=[]);var i=e.call(this)||this;i.nt=[];var a=i;return r.forEach(function(n){a.push(n)}),i}return t.prototype.clear=function(){this.M=0,this.nt=[]},t.prototype.push=function(r){return this.nt.push(r),this.M+=1,this.M},t.prototype.pop=function(){if(this.M!==0)return this.M-=1,this.nt.pop()},t.prototype.top=function(){return this.nt[this.M-1]},t}(lc);const IO=OO;var PO=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),CO=function(e){PO(t,e);function t(r){r===void 0&&(r=[]);var i=e.call(this)||this;i.A=0,i.tt=[];var a=i;return r.forEach(function(n){a.push(n)}),i}return t.prototype.clear=function(){this.tt=[],this.M=this.A=0},t.prototype.push=function(r){var i=this.tt.length;if(this.A/i>.5&&this.A+this.M>=i&&i>4096){for(var a=this.M,n=0;n<a;++n)this.tt[n]=this.tt[this.A+n];this.A=0,this.tt[this.M]=r}else this.tt[this.A+this.M]=r;return++this.M},t.prototype.pop=function(){if(this.M!==0){var r=this.tt[this.A++];return this.M-=1,r}},t.prototype.front=function(){if(this.M!==0)return this.tt[this.A]},t}(lc);const BO=CO;var LO=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),w1=globalThis&&globalThis.q||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var i=r.call(e),a,n=[],l;try{for(;(t===void 0||t-- >0)&&!(a=i.next()).done;)n.push(a.value)}catch(h){l={error:h}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(l)throw l.error}}return n},_1=globalThis&&globalThis.D||function(e,t,r){if(r||arguments.length===2)for(var i=0,a=t.length,n;i<a;i++)(n||!(i in t))&&(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))},NO=function(e){LO(t,e);function t(r,i,a){r===void 0&&(r=[]),i===void 0&&(i=function(m,_){return m>_?-1:m<_?1:0}),a===void 0&&(a=!0);var n=e.call(this)||this;if(n.$=i,Array.isArray(r))n.ii=a?_1([],w1(r),!1):r;else{n.ii=[];var l=n;r.forEach(function(m){l.ii.push(m)})}n.M=n.ii.length;for(var h=n.M>>1,d=n.M-1>>1;d>=0;--d)n.ri(d,h);return n}return t.prototype.ti=function(r){for(var i=this.ii[r];r>0;){var a=r-1>>1,n=this.ii[a];if(this.$(n,i)<=0)break;this.ii[r]=n,r=a}this.ii[r]=i},t.prototype.ri=function(r,i){for(var a=this.ii[r];r<i;){var n=r<<1|1,l=n+1,h=this.ii[n];if(l<this.M&&this.$(h,this.ii[l])>0&&(n=l,h=this.ii[l]),this.$(h,a)>=0)break;this.ii[r]=h,r=n}this.ii[r]=a},t.prototype.clear=function(){this.M=0,this.ii.length=0},t.prototype.push=function(r){this.ii.push(r),this.ti(this.M),this.M+=1},t.prototype.pop=function(){if(this.M!==0){var r=this.ii[0],i=this.ii.pop();return this.M-=1,this.M&&(this.ii[0]=i,this.ri(0,this.M>>1)),r}},t.prototype.top=function(){return this.ii[0]},t.prototype.find=function(r){return this.ii.indexOf(r)>=0},t.prototype.remove=function(r){var i=this.ii.indexOf(r);return i<0?!1:(i===0?this.pop():i===this.M-1?(this.ii.pop(),this.M-=1):(this.ii.splice(i,1,this.ii.pop()),this.M-=1,this.ti(i),this.ri(i,this.M>>1)),!0)},t.prototype.updateItem=function(r){var i=this.ii.indexOf(r);return i<0?!1:(this.ti(i),this.ri(i,this.M>>1),!0)},t.prototype.toArray=function(){return _1([],w1(this.ii),!1)},t}(lc);const kO=NO;var $O=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),DO=function(e){$O(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(Ig);const Pg=DO;function Gt(){throw new RangeError("Iterator access denied!")}var FO=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),U3=function(e){FO(t,e);function t(r,i){var a=e.call(this,i)||this;return a.o=r,a.iteratorType===0?(a.pre=function(){return this.o===0&&Gt(),this.o-=1,this},a.next=function(){return this.o===this.container.size()&&Gt(),this.o+=1,this}):(a.pre=function(){return this.o===this.container.size()-1&&Gt(),this.o+=1,this},a.next=function(){return this.o===-1&&Gt(),this.o-=1,this}),a}return Object.defineProperty(t.prototype,"pointer",{get:function(){return this.container.getElementByPos(this.o)},set:function(r){this.container.setElementByPos(this.o,r)},enumerable:!1,configurable:!0}),t}(fc),H3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),jO=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:h(0),throw:h(1),return:h(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function h(m){return function(_){return d([m,_])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(_){m=[6,_],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},M1=globalThis&&globalThis.q||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var i=r.call(e),a,n=[],l;try{for(;(t===void 0||t-- >0)&&!(a=i.next()).done;)n.push(a.value)}catch(h){l={error:h}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(l)throw l.error}}return n},S1=globalThis&&globalThis.D||function(e,t,r){if(r||arguments.length===2)for(var i=0,a=t.length,n;i<a;i++)(n||!(i in t))&&(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))},UO=globalThis&&globalThis.V||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},yf=function(e){H3(t,e);function t(r,i,a){var n=e.call(this,r,a)||this;return n.container=i,n}return t.prototype.copy=function(){return new t(this.o,this.container,this.iteratorType)},t}(U3),HO=function(e){H3(t,e);function t(r,i){r===void 0&&(r=[]),i===void 0&&(i=!0);var a=e.call(this)||this;if(Array.isArray(r))a.J=i?S1([],M1(r),!1):r,a.M=r.length;else{a.J=[];var n=a;r.forEach(function(l){n.pushBack(l)})}return a}return t.prototype.clear=function(){this.M=0,this.J.length=0},t.prototype.begin=function(){return new yf(0,this)},t.prototype.end=function(){return new yf(this.M,this)},t.prototype.rBegin=function(){return new yf(this.M-1,this,1)},t.prototype.rEnd=function(){return new yf(-1,this,1)},t.prototype.front=function(){return this.J[0]},t.prototype.back=function(){return this.J[this.M-1]},t.prototype.getElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;return this.J[r]},t.prototype.eraseElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;return this.J.splice(r,1),this.M-=1,this.M},t.prototype.eraseElementByValue=function(r){for(var i=0,a=0;a<this.M;++a)this.J[a]!==r&&(this.J[i++]=this.J[a]);return this.M=this.J.length=i,this.M},t.prototype.eraseElementByIterator=function(r){var i=r.o;return r=r.next(),this.eraseElementByPos(i),r},t.prototype.pushBack=function(r){return this.J.push(r),this.M+=1,this.M},t.prototype.popBack=function(){if(this.M!==0)return this.M-=1,this.J.pop()},t.prototype.setElementByPos=function(r,i){if(r<0||r>this.M-1)throw new RangeError;this.J[r]=i},t.prototype.insert=function(r,i,a){var n;if(a===void 0&&(a=1),r<0||r>this.M)throw new RangeError;return(n=this.J).splice.apply(n,S1([r,0],M1(new Array(a).fill(i)),!1)),this.M+=a,this.M},t.prototype.find=function(r){for(var i=0;i<this.M;++i)if(this.J[i]===r)return new yf(i,this);return this.end()},t.prototype.reverse=function(){this.J.reverse()},t.prototype.unique=function(){for(var r=1,i=1;i<this.M;++i)this.J[i]!==this.J[i-1]&&(this.J[r++]=this.J[i]);return this.M=this.J.length=r,this.M},t.prototype.sort=function(r){this.J.sort(r)},t.prototype.forEach=function(r){for(var i=0;i<this.M;++i)r(this.J[i],i,this)},t.prototype[Symbol.iterator]=function(){return(function(){return jO(this,function(r){switch(r.label){case 0:return[5,UO(this.J)];case 1:return r.sent(),[2]}})}).bind(this)()},t}(Pg);const qO=HO;var q3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),WO=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:h(0),throw:h(1),return:h(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function h(m){return function(_){return d([m,_])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(_){m=[6,_],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},bf=function(e){q3(t,e);function t(r,i,a,n){var l=e.call(this,n)||this;return l.o=r,l.h=i,l.container=a,l.iteratorType===0?(l.pre=function(){return this.o.L===this.h&&Gt(),this.o=this.o.L,this},l.next=function(){return this.o===this.h&&Gt(),this.o=this.o.m,this}):(l.pre=function(){return this.o.m===this.h&&Gt(),this.o=this.o.m,this},l.next=function(){return this.o===this.h&&Gt(),this.o=this.o.L,this}),l}return Object.defineProperty(t.prototype,"pointer",{get:function(){return this.o===this.h&&Gt(),this.o.p},set:function(r){this.o===this.h&&Gt(),this.o.p=r},enumerable:!1,configurable:!0}),t.prototype.copy=function(){return new t(this.o,this.h,this.container,this.iteratorType)},t}(fc),KO=function(e){q3(t,e);function t(r){r===void 0&&(r=[]);var i=e.call(this)||this;i.h={},i.H=i.l=i.h.L=i.h.m=i.h;var a=i;return r.forEach(function(n){a.pushBack(n)}),i}return t.prototype.G=function(r){var i=r.L,a=r.m;i.m=a,a.L=i,r===this.H&&(this.H=a),r===this.l&&(this.l=i),this.M-=1},t.prototype.F=function(r,i){var a=i.m,n={p:r,L:i,m:a};i.m=n,a.L=n,i===this.h&&(this.H=n),a===this.h&&(this.l=n),this.M+=1},t.prototype.clear=function(){this.M=0,this.H=this.l=this.h.L=this.h.m=this.h},t.prototype.begin=function(){return new bf(this.H,this.h,this)},t.prototype.end=function(){return new bf(this.h,this.h,this)},t.prototype.rBegin=function(){return new bf(this.l,this.h,this,1)},t.prototype.rEnd=function(){return new bf(this.h,this.h,this,1)},t.prototype.front=function(){return this.H.p},t.prototype.back=function(){return this.l.p},t.prototype.getElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;for(var i=this.H;r--;)i=i.m;return i.p},t.prototype.eraseElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;for(var i=this.H;r--;)i=i.m;return this.G(i),this.M},t.prototype.eraseElementByValue=function(r){for(var i=this.H;i!==this.h;)i.p===r&&this.G(i),i=i.m;return this.M},t.prototype.eraseElementByIterator=function(r){var i=r.o;return i===this.h&&Gt(),r=r.next(),this.G(i),r},t.prototype.pushBack=function(r){return this.F(r,this.l),this.M},t.prototype.popBack=function(){if(this.M!==0){var r=this.l.p;return this.G(this.l),r}},t.prototype.pushFront=function(r){return this.F(r,this.h),this.M},t.prototype.popFront=function(){if(this.M!==0){var r=this.H.p;return this.G(this.H),r}},t.prototype.setElementByPos=function(r,i){if(r<0||r>this.M-1)throw new RangeError;for(var a=this.H;r--;)a=a.m;a.p=i},t.prototype.insert=function(r,i,a){if(a===void 0&&(a=1),r<0||r>this.M)throw new RangeError;if(a<=0)return this.M;if(r===0)for(;a--;)this.pushFront(i);else if(r===this.M)for(;a--;)this.pushBack(i);else{for(var n=this.H,l=1;l<r;++l)n=n.m;var h=n.m;for(this.M+=a;a--;)n.m={p:i,L:n},n.m.L=n,n=n.m;n.m=h,h.L=n}return this.M},t.prototype.find=function(r){for(var i=this.H;i!==this.h;){if(i.p===r)return new bf(i,this.h,this);i=i.m}return this.end()},t.prototype.reverse=function(){if(!(this.M<=1))for(var r=this.H,i=this.l,a=0;a<<1<this.M;){var n=r.p;r.p=i.p,i.p=n,r=r.m,i=i.L,a+=1}},t.prototype.unique=function(){if(this.M<=1)return this.M;for(var r=this.H;r!==this.h;){for(var i=r;i.m!==this.h&&i.p===i.m.p;)i=i.m,this.M-=1;r.m=i.m,r.m.L=r,r=r.m}return this.M},t.prototype.sort=function(r){if(!(this.M<=1)){var i=[];this.forEach(function(n){i.push(n)}),i.sort(r);var a=this.H;i.forEach(function(n){a.p=n,a=a.m})}},t.prototype.merge=function(r){var i=this;if(this.M===0)r.forEach(function(n){i.pushBack(n)});else{var a=this.H;r.forEach(function(n){for(;a!==i.h&&a.p<=n;)a=a.m;i.F(n,a.L)})}return this.M},t.prototype.forEach=function(r){for(var i=this.H,a=0;i!==this.h;)r(i.p,a++,this),i=i.m},t.prototype[Symbol.iterator]=function(){return(function(){var r;return WO(this,function(i){switch(i.label){case 0:if(this.M===0)return[2];r=this.H,i.label=1;case 1:return r===this.h?[3,3]:[4,r.p];case 2:return i.sent(),r=r.m,[3,1];case 3:return[2]}})}).bind(this)()},t}(Pg);const VO=KO;var W3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),zO=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:h(0),throw:h(1),return:h(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function h(m){return function(_){return d([m,_])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(_){m=[6,_],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},GO=globalThis&&globalThis.q||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var i=r.call(e),a,n=[],l;try{for(;(t===void 0||t-- >0)&&!(a=i.next()).done;)n.push(a.value)}catch(h){l={error:h}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(l)throw l.error}}return n},YO=globalThis&&globalThis.D||function(e,t,r){if(r||arguments.length===2)for(var i=0,a=t.length,n;i<a;i++)(n||!(i in t))&&(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))},wf=function(e){W3(t,e);function t(r,i,a){var n=e.call(this,r,a)||this;return n.container=i,n}return t.prototype.copy=function(){return new t(this.o,this.container,this.iteratorType)},t}(U3),ZO=function(e){W3(t,e);function t(r,i){r===void 0&&(r=[]),i===void 0&&(i=4096);var a=e.call(this)||this;a.A=0,a.S=0,a.R=0,a.k=0,a.C=0,a.j=[];var n=function(){if(typeof r.length=="number")return r.length;if(typeof r.size=="number")return r.size;if(typeof r.size=="function")return r.size();throw new TypeError("Cannot get the length or size of the container")}();a.B=i,a.C=Math.max(Math.ceil(n/a.B),1);for(var l=0;l<a.C;++l)a.j.push(new Array(a.B));var h=Math.ceil(n/a.B);a.A=a.R=(a.C>>1)-(h>>1),a.S=a.k=a.B-n%a.B>>1;var d=a;return r.forEach(function(m){d.pushBack(m)}),a}return t.prototype.O=function(){for(var r=[],i=Math.max(this.C>>1,1),a=0;a<i;++a)r[a]=new Array(this.B);for(var a=this.A;a<this.C;++a)r[r.length]=this.j[a];for(var a=0;a<this.R;++a)r[r.length]=this.j[a];r[r.length]=YO([],GO(this.j[this.R]),!1),this.A=i,this.R=r.length-1;for(var a=0;a<i;++a)r[r.length]=new Array(this.B);this.j=r,this.C=r.length},t.prototype.T=function(r){var i=this.S+r+1,a=i%this.B,n=a-1,l=this.A+(i-a)/this.B;return a===0&&(l-=1),l%=this.C,n<0&&(n+=this.B),{curNodeBucketIndex:l,curNodePointerIndex:n}},t.prototype.clear=function(){this.j=[new Array(this.B)],this.C=1,this.A=this.R=this.M=0,this.S=this.k=this.B>>1},t.prototype.begin=function(){return new wf(0,this)},t.prototype.end=function(){return new wf(this.M,this)},t.prototype.rBegin=function(){return new wf(this.M-1,this,1)},t.prototype.rEnd=function(){return new wf(-1,this,1)},t.prototype.front=function(){if(this.M!==0)return this.j[this.A][this.S]},t.prototype.back=function(){if(this.M!==0)return this.j[this.R][this.k]},t.prototype.pushBack=function(r){return this.M&&(this.k<this.B-1?this.k+=1:this.R<this.C-1?(this.R+=1,this.k=0):(this.R=0,this.k=0),this.R===this.A&&this.k===this.S&&this.O()),this.M+=1,this.j[this.R][this.k]=r,this.M},t.prototype.popBack=function(){if(this.M!==0){var r=this.j[this.R][this.k];return this.M!==1&&(this.k>0?this.k-=1:this.R>0?(this.R-=1,this.k=this.B-1):(this.R=this.C-1,this.k=this.B-1)),this.M-=1,r}},t.prototype.pushFront=function(r){return this.M&&(this.S>0?this.S-=1:this.A>0?(this.A-=1,this.S=this.B-1):(this.A=this.C-1,this.S=this.B-1),this.A===this.R&&this.S===this.k&&this.O()),this.M+=1,this.j[this.A][this.S]=r,this.M},t.prototype.popFront=function(){if(this.M!==0){var r=this.j[this.A][this.S];return this.M!==1&&(this.S<this.B-1?this.S+=1:this.A<this.C-1?(this.A+=1,this.S=0):(this.A=0,this.S=0)),this.M-=1,r}},t.prototype.getElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;var i=this.T(r),a=i.curNodeBucketIndex,n=i.curNodePointerIndex;return this.j[a][n]},t.prototype.setElementByPos=function(r,i){if(r<0||r>this.M-1)throw new RangeError;var a=this.T(r),n=a.curNodeBucketIndex,l=a.curNodePointerIndex;this.j[n][l]=i},t.prototype.insert=function(r,i,a){if(a===void 0&&(a=1),r<0||r>this.M)throw new RangeError;if(r===0)for(;a--;)this.pushFront(i);else if(r===this.M)for(;a--;)this.pushBack(i);else{for(var n=[],l=r;l<this.M;++l)n.push(this.getElementByPos(l));this.cut(r-1);for(var l=0;l<a;++l)this.pushBack(i);for(var l=0;l<n.length;++l)this.pushBack(n[l])}return this.M},t.prototype.cut=function(r){if(r<0)return this.clear(),0;var i=this.T(r),a=i.curNodeBucketIndex,n=i.curNodePointerIndex;return this.R=a,this.k=n,this.M=r+1,this.M},t.prototype.eraseElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;if(r===0)this.popFront();else if(r===this.M-1)this.popBack();else{for(var i=[],a=r+1;a<this.M;++a)i.push(this.getElementByPos(a));this.cut(r),this.popBack();var n=this;i.forEach(function(l){n.pushBack(l)})}return this.M},t.prototype.eraseElementByValue=function(r){if(this.M===0)return 0;for(var i=[],a=0;a<this.M;++a){var n=this.getElementByPos(a);n!==r&&i.push(n)}for(var l=i.length,a=0;a<l;++a)this.setElementByPos(a,i[a]);return this.cut(l-1)},t.prototype.eraseElementByIterator=function(r){var i=r.o;return this.eraseElementByPos(i),r=r.next(),r},t.prototype.find=function(r){for(var i=0;i<this.M;++i)if(this.getElementByPos(i)===r)return new wf(i,this);return this.end()},t.prototype.reverse=function(){for(var r=0,i=this.M-1;r<i;){var a=this.getElementByPos(r);this.setElementByPos(r,this.getElementByPos(i)),this.setElementByPos(i,a),r+=1,i-=1}},t.prototype.unique=function(){if(this.M<=1)return this.M;for(var r=1,i=this.getElementByPos(0),a=1;a<this.M;++a){var n=this.getElementByPos(a);n!==i&&(i=n,this.setElementByPos(r++,n))}for(;this.M>r;)this.popBack();return this.M},t.prototype.sort=function(r){for(var i=[],a=0;a<this.M;++a)i.push(this.getElementByPos(a));i.sort(r);for(var a=0;a<this.M;++a)this.setElementByPos(a,i[a])},t.prototype.shrinkToFit=function(){if(this.M!==0){var r=[];this.forEach(function(a){r.push(a)}),this.C=Math.max(Math.ceil(this.M/this.B),1),this.M=this.A=this.R=this.S=this.k=0,this.j=[];for(var i=0;i<this.C;++i)this.j.push(new Array(this.B));for(var i=0;i<r.length;++i)this.pushBack(r[i])}},t.prototype.forEach=function(r){for(var i=0;i<this.M;++i)r(this.getElementByPos(i),i,this)},t.prototype[Symbol.iterator]=function(){return(function(){var r;return zO(this,function(i){switch(i.label){case 0:r=0,i.label=1;case 1:return r<this.M?[4,this.getElementByPos(r)]:[3,4];case 2:i.sent(),i.label=3;case 3:return++r,[3,1];case 4:return[2]}})}).bind(this)()},t}(Pg);const XO=ZO;var JO=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),K3=function(){function e(t,r){this.ee=1,this.u=void 0,this.p=void 0,this.K=void 0,this.N=void 0,this.rr=void 0,this.u=t,this.p=r}return e.prototype.L=function(){var t=this;if(t.ee===1&&t.rr.rr===t)t=t.N;else if(t.K)for(t=t.K;t.N;)t=t.N;else{for(var r=t.rr;r.K===t;)t=r,r=t.rr;t=r}return t},e.prototype.m=function(){var t=this;if(t.N){for(t=t.N;t.K;)t=t.K;return t}else{for(var r=t.rr;r.N===t;)t=r,r=t.rr;return t.N!==r?r:t}},e.prototype.ne=function(){var t=this.rr,r=this.N,i=r.K;return t.rr===this?t.rr=r:t.K===this?t.K=r:t.N=r,r.rr=t,r.K=this,this.rr=r,this.N=i,i&&(i.rr=this),r},e.prototype.te=function(){var t=this.rr,r=this.K,i=r.N;return t.rr===this?t.rr=r:t.K===this?t.K=r:t.N=r,r.rr=t,r.N=this,this.rr=r,this.K=i,i&&(i.rr=this),r},e}(),QO=function(e){JO(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.tr=1,r}return t.prototype.ne=function(){var r=e.prototype.ne.call(this);return this.ie(),r.ie(),r},t.prototype.te=function(){var r=e.prototype.te.call(this);return this.ie(),r.ie(),r},t.prototype.ie=function(){this.tr=1,this.K&&(this.tr+=this.K.tr),this.N&&(this.tr+=this.N.tr)},t}(K3),eI=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),x1=globalThis&&globalThis.q||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var i=r.call(e),a,n=[],l;try{for(;(t===void 0||t-- >0)&&!(a=i.next()).done;)n.push(a.value)}catch(h){l={error:h}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(l)throw l.error}}return n},E1=globalThis&&globalThis.V||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},tI=function(e){eI(t,e);function t(r,i){r===void 0&&(r=function(n,l){return n<l?-1:n>l?1:0}),i===void 0&&(i=!1);var a=e.call(this)||this;return a.W=void 0,a.$=r,i?(a.re=QO,a.v=function(n,l,h){var d=this.se(n,l,h);if(d){for(var m=d.rr;m!==this.h;)m.tr+=1,m=m.rr;var _=this.fe(d);if(_){var S=_,R=S.parentNode,I=S.grandParent,O=S.curNode;R.ie(),I.ie(),O.ie()}}return this.M},a.G=function(n){for(var l=this.he(n);l!==this.h;)l.tr-=1,l=l.rr}):(a.re=K3,a.v=function(n,l,h){var d=this.se(n,l,h);return d&&this.fe(d),this.M},a.G=a.he),a.h=new a.re,a}return t.prototype.U=function(r,i){for(var a=this.h;r;){var n=this.$(r.u,i);if(n<0)r=r.N;else if(n>0)a=r,r=r.K;else return r}return a},t.prototype.X=function(r,i){for(var a=this.h;r;){var n=this.$(r.u,i);n<=0?r=r.N:(a=r,r=r.K)}return a},t.prototype.Y=function(r,i){for(var a=this.h;r;){var n=this.$(r.u,i);if(n<0)a=r,r=r.N;else if(n>0)r=r.K;else return r}return a},t.prototype.Z=function(r,i){for(var a=this.h;r;){var n=this.$(r.u,i);n<0?(a=r,r=r.N):r=r.K}return a},t.prototype.ue=function(r){for(;;){var i=r.rr;if(i===this.h)return;if(r.ee===1){r.ee=0;return}if(r===i.K){var a=i.N;if(a.ee===1)a.ee=0,i.ee=1,i===this.W?this.W=i.ne():i.ne();else if(a.N&&a.N.ee===1){a.ee=i.ee,i.ee=0,a.N.ee=0,i===this.W?this.W=i.ne():i.ne();return}else a.K&&a.K.ee===1?(a.ee=1,a.K.ee=0,a.te()):(a.ee=1,r=i)}else{var a=i.K;if(a.ee===1)a.ee=0,i.ee=1,i===this.W?this.W=i.te():i.te();else if(a.K&&a.K.ee===1){a.ee=i.ee,i.ee=0,a.K.ee=0,i===this.W?this.W=i.te():i.te();return}else a.N&&a.N.ee===1?(a.ee=1,a.N.ee=0,a.ne()):(a.ee=1,r=i)}}},t.prototype.he=function(r){var i,a;if(this.M===1)return this.clear(),this.h;for(var n=r;n.K||n.N;){if(n.N)for(n=n.N;n.K;)n=n.K;else n=n.K;i=x1([n.u,r.u],2),r.u=i[0],n.u=i[1],a=x1([n.p,r.p],2),r.p=a[0],n.p=a[1],r=n}this.h.K===n?this.h.K=n.rr:this.h.N===n&&(this.h.N=n.rr),this.ue(n);var l=n.rr;return n===l.K?l.K=void 0:l.N=void 0,this.M-=1,this.W.ee=0,l},t.prototype.ae=function(r,i){if(r===void 0)return!1;var a=this.ae(r.K,i);return a||i(r)?!0:this.ae(r.N,i)},t.prototype.fe=function(r){for(;;){var i=r.rr;if(i.ee===0)return;var a=i.rr;if(i===a.K){var n=a.N;if(n&&n.ee===1){if(n.ee=i.ee=0,a===this.W)return;a.ee=1,r=a;continue}else if(r===i.N){if(r.ee=0,r.K&&(r.K.rr=i),r.N&&(r.N.rr=a),i.N=r.K,a.K=r.N,r.K=i,r.N=a,a===this.W)this.W=r,this.h.rr=r;else{var l=a.rr;l.K===a?l.K=r:l.N=r}return r.rr=a.rr,i.rr=r,a.rr=r,a.ee=1,{parentNode:i,grandParent:a,curNode:r}}else i.ee=0,a===this.W?this.W=a.te():a.te(),a.ee=1}else{var n=a.K;if(n&&n.ee===1){if(n.ee=i.ee=0,a===this.W)return;a.ee=1,r=a;continue}else if(r===i.K){if(r.ee=0,r.K&&(r.K.rr=a),r.N&&(r.N.rr=i),a.N=r.K,i.K=r.N,r.K=a,r.N=i,a===this.W)this.W=r,this.h.rr=r;else{var l=a.rr;l.K===a?l.K=r:l.N=r}return r.rr=a.rr,i.rr=r,a.rr=r,a.ee=1,{parentNode:i,grandParent:a,curNode:r}}else i.ee=0,a===this.W?this.W=a.ne():a.ne(),a.ee=1}return}},t.prototype.se=function(r,i,a){if(this.W===void 0){this.M+=1,this.W=new this.re(r,i),this.W.ee=0,this.W.rr=this.h,this.h.rr=this.W,this.h.K=this.W,this.h.N=this.W;return}var n,l=this.h.K,h=this.$(l.u,r);if(h===0){l.p=i;return}else if(h>0)l.K=new this.re(r,i),l.K.rr=l,n=l.K,this.h.K=n;else{var d=this.h.N,m=this.$(d.u,r);if(m===0){d.p=i;return}else if(m<0)d.N=new this.re(r,i),d.N.rr=d,n=d.N,this.h.N=n;else{if(a!==void 0){var _=a.o;if(_!==this.h){var S=this.$(_.u,r);if(S===0){_.p=i;return}else if(S>0){var R=_.L(),I=this.$(R.u,r);if(I===0){R.p=i;return}else I<0&&(n=new this.re(r,i),R.N===void 0?(R.N=n,n.rr=R):(_.K=n,n.rr=_))}}}if(n===void 0)for(n=this.W;;){var O=this.$(n.u,r);if(O>0){if(n.K===void 0){n.K=new this.re(r,i),n.K.rr=n,n=n.K;break}n=n.K}else if(O<0){if(n.N===void 0){n.N=new this.re(r,i),n.N.rr=n,n=n.N;break}n=n.N}else{n.p=i;return}}}}return this.M+=1,n},t.prototype.g=function(r,i){for(;r;){var a=this.$(r.u,i);if(a<0)r=r.N;else if(a>0)r=r.K;else return r}return r||this.h},t.prototype.clear=function(){this.M=0,this.W=void 0,this.h.rr=void 0,this.h.K=this.h.N=void 0},t.prototype.updateKeyByIterator=function(r,i){var a=r.o;if(a===this.h&&Gt(),this.M===1)return a.u=i,!0;if(a===this.h.K)return this.$(a.m().u,i)>0?(a.u=i,!0):!1;if(a===this.h.N)return this.$(a.L().u,i)<0?(a.u=i,!0):!1;var n=a.L().u;if(this.$(n,i)>=0)return!1;var l=a.m().u;return this.$(l,i)<=0?!1:(a.u=i,!0)},t.prototype.eraseElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;var i=0,a=this;return this.ae(this.W,function(n){return r===i?(a.G(n),!0):(i+=1,!1)}),this.M},t.prototype.eraseElementByKey=function(r){if(this.M===0)return!1;var i=this.g(this.W,r);return i===this.h?!1:(this.G(i),!0)},t.prototype.eraseElementByIterator=function(r){var i=r.o;i===this.h&&Gt();var a=i.N===void 0,n=r.iteratorType===0;return n?a&&r.next():(!a||i.K===void 0)&&r.next(),this.G(i),r},t.prototype.forEach=function(r){var i,a,n=0;try{for(var l=E1(this),h=l.next();!h.done;h=l.next()){var d=h.value;r(d,n++,this)}}catch(m){i={error:m}}finally{try{h&&!h.done&&(a=l.return)&&a.call(l)}finally{if(i)throw i.error}}},t.prototype.getElementByPos=function(r){var i,a;if(r<0||r>this.M-1)throw new RangeError;var n,l=0;try{for(var h=E1(this),d=h.next();!d.done;d=h.next()){var m=d.value;if(l===r){n=m;break}l+=1}}catch(_){i={error:_}}finally{try{d&&!d.done&&(a=h.return)&&a.call(h)}finally{if(i)throw i.error}}return n},t.prototype.getHeight=function(){if(this.M===0)return 0;var r=function(i){return i?Math.max(r(i.K),r(i.N))+1:0};return r(this.W)},t}(Ig);const V3=tI;var rI=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),iI=function(e){rI(t,e);function t(r,i,a){var n=e.call(this,a)||this;return n.o=r,n.h=i,n.iteratorType===0?(n.pre=function(){return this.o===this.h.K&&Gt(),this.o=this.o.L(),this},n.next=function(){return this.o===this.h&&Gt(),this.o=this.o.m(),this}):(n.pre=function(){return this.o===this.h.N&&Gt(),this.o=this.o.m(),this},n.next=function(){return this.o===this.h&&Gt(),this.o=this.o.L(),this}),n}return Object.defineProperty(t.prototype,"index",{get:function(){var r=this.o,i=this.h.rr;if(r===this.h)return i?i.tr-1:0;var a=0;for(r.K&&(a+=r.K.tr);r!==i;){var n=r.rr;r===n.N&&(a+=1,n.K&&(a+=n.K.tr)),r=n}return a},enumerable:!1,configurable:!0}),t}(fc);const z3=iI;var G3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),nI=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:h(0),throw:h(1),return:h(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function h(m){return function(_){return d([m,_])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(_){m=[6,_],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},R1=globalThis&&globalThis.V||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Cn=function(e){G3(t,e);function t(r,i,a,n){var l=e.call(this,r,i,n)||this;return l.container=a,l}return Object.defineProperty(t.prototype,"pointer",{get:function(){return this.o===this.h&&Gt(),this.o.u},enumerable:!1,configurable:!0}),t.prototype.copy=function(){return new t(this.o,this.h,this.container,this.iteratorType)},t}(z3),oI=function(e){G3(t,e);function t(r,i,a){r===void 0&&(r=[]);var n=e.call(this,i,a)||this,l=n;return r.forEach(function(h){l.insert(h)}),n}return t.prototype.P=function(r){return nI(this,function(i){switch(i.label){case 0:return r===void 0?[2]:[5,R1(this.P(r.K))];case 1:return i.sent(),[4,r.u];case 2:return i.sent(),[5,R1(this.P(r.N))];case 3:return i.sent(),[2]}})},t.prototype.begin=function(){return new Cn(this.h.K||this.h,this.h,this)},t.prototype.end=function(){return new Cn(this.h,this.h,this)},t.prototype.rBegin=function(){return new Cn(this.h.N||this.h,this.h,this,1)},t.prototype.rEnd=function(){return new Cn(this.h,this.h,this,1)},t.prototype.front=function(){return this.h.K?this.h.K.u:void 0},t.prototype.back=function(){return this.h.N?this.h.N.u:void 0},t.prototype.insert=function(r,i){return this.v(r,void 0,i)},t.prototype.find=function(r){var i=this.g(this.W,r);return new Cn(i,this.h,this)},t.prototype.lowerBound=function(r){var i=this.U(this.W,r);return new Cn(i,this.h,this)},t.prototype.upperBound=function(r){var i=this.X(this.W,r);return new Cn(i,this.h,this)},t.prototype.reverseLowerBound=function(r){var i=this.Y(this.W,r);return new Cn(i,this.h,this)},t.prototype.reverseUpperBound=function(r){var i=this.Z(this.W,r);return new Cn(i,this.h,this)},t.prototype.union=function(r){var i=this;return r.forEach(function(a){i.insert(a)}),this.M},t.prototype[Symbol.iterator]=function(){return this.P(this.W)},t}(V3);const aI=oI;var Y3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),sI=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:h(0),throw:h(1),return:h(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function h(m){return function(_){return d([m,_])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(_){m=[6,_],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},A1=globalThis&&globalThis.V||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Bn=function(e){Y3(t,e);function t(r,i,a,n){var l=e.call(this,r,i,n)||this;return l.container=a,l}return Object.defineProperty(t.prototype,"pointer",{get:function(){this.o===this.h&&Gt();var r=this;return new Proxy([],{get:function(i,a){if(a==="0")return r.o.u;if(a==="1")return r.o.p},set:function(i,a,n){if(a!=="1")throw new TypeError("props must be 1");return r.o.p=n,!0}})},enumerable:!1,configurable:!0}),t.prototype.copy=function(){return new t(this.o,this.h,this.container,this.iteratorType)},t}(z3),fI=function(e){Y3(t,e);function t(r,i,a){r===void 0&&(r=[]);var n=e.call(this,i,a)||this,l=n;return r.forEach(function(h){l.setElement(h[0],h[1])}),n}return t.prototype.P=function(r){return sI(this,function(i){switch(i.label){case 0:return r===void 0?[2]:[5,A1(this.P(r.K))];case 1:return i.sent(),[4,[r.u,r.p]];case 2:return i.sent(),[5,A1(this.P(r.N))];case 3:return i.sent(),[2]}})},t.prototype.begin=function(){return new Bn(this.h.K||this.h,this.h,this)},t.prototype.end=function(){return new Bn(this.h,this.h,this)},t.prototype.rBegin=function(){return new Bn(this.h.N||this.h,this.h,this,1)},t.prototype.rEnd=function(){return new Bn(this.h,this.h,this,1)},t.prototype.front=function(){if(this.M!==0){var r=this.h.K;return[r.u,r.p]}},t.prototype.back=function(){if(this.M!==0){var r=this.h.N;return[r.u,r.p]}},t.prototype.lowerBound=function(r){var i=this.U(this.W,r);return new Bn(i,this.h,this)},t.prototype.upperBound=function(r){var i=this.X(this.W,r);return new Bn(i,this.h,this)},t.prototype.reverseLowerBound=function(r){var i=this.Y(this.W,r);return new Bn(i,this.h,this)},t.prototype.reverseUpperBound=function(r){var i=this.Z(this.W,r);return new Bn(i,this.h,this)},t.prototype.setElement=function(r,i,a){return this.v(r,i,a)},t.prototype.find=function(r){var i=this.g(this.W,r);return new Bn(i,this.h,this)},t.prototype.getElementByKey=function(r){var i=this.g(this.W,r);return i.p},t.prototype.union=function(r){var i=this;return r.forEach(function(a){i.setElement(a[0],a[1])}),this.M},t.prototype[Symbol.iterator]=function(){return this.P(this.W)},t}(V3);const lI=fI;function Pu(e){var t=typeof e;return t==="object"&&e!==null||t==="function"}var Z3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),X3=function(e){Z3(t,e);function t(r,i,a){var n=e.call(this,a)||this;return n.o=r,n.h=i,n.iteratorType===0?(n.pre=function(){return this.o.L===this.h&&Gt(),this.o=this.o.L,this},n.next=function(){return this.o===this.h&&Gt(),this.o=this.o.m,this}):(n.pre=function(){return this.o.m===this.h&&Gt(),this.o=this.o.m,this},n.next=function(){return this.o===this.h&&Gt(),this.o=this.o.L,this}),n}return t}(fc),J3=function(e){Z3(t,e);function t(){var r=e.call(this)||this;return r._=[],r.I={},r.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(r.I,null),r.h={},r.h.L=r.h.m=r.H=r.l=r.h,r}return t.prototype.G=function(r){var i=r.L,a=r.m;i.m=a,a.L=i,r===this.H&&(this.H=a),r===this.l&&(this.l=i),this.M-=1},t.prototype.v=function(r,i,a){a===void 0&&(a=Pu(r));var n;if(a){var l=r[this.HASH_TAG];if(l!==void 0)return this._[l].p=i,this.M;Object.defineProperty(r,this.HASH_TAG,{value:this._.length,configurable:!0}),n={u:r,p:i,L:this.l,m:this.h},this._.push(n)}else{var h=this.I[r];if(h)return h.p=i,this.M;n={u:r,p:i,L:this.l,m:this.h},this.I[r]=n}return this.M===0?(this.H=n,this.h.m=n):this.l.m=n,this.l=n,this.h.L=n,++this.M},t.prototype.g=function(r,i){if(i===void 0&&(i=Pu(r)),i){var a=r[this.HASH_TAG];return a===void 0?this.h:this._[a]}else return this.I[r]||this.h},t.prototype.clear=function(){var r=this.HASH_TAG;this._.forEach(function(i){delete i.u[r]}),this._=[],this.I={},Object.setPrototypeOf(this.I,null),this.M=0,this.H=this.l=this.h.L=this.h.m=this.h},t.prototype.eraseElementByKey=function(r,i){var a;if(i===void 0&&(i=Pu(r)),i){var n=r[this.HASH_TAG];if(n===void 0)return!1;delete r[this.HASH_TAG],a=this._[n],delete this._[n]}else{if(a=this.I[r],a===void 0)return!1;delete this.I[r]}return this.G(a),!0},t.prototype.eraseElementByIterator=function(r){var i=r.o;return i===this.h&&Gt(),this.G(i),r.next()},t.prototype.eraseElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;for(var i=this.H;r--;)i=i.m;return this.G(i),this.M},t}(Ig),Q3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),uI=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:h(0),throw:h(1),return:h(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function h(m){return function(_){return d([m,_])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(_){m=[6,_],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},_f=function(e){Q3(t,e);function t(r,i,a,n){var l=e.call(this,r,i,n)||this;return l.container=a,l}return Object.defineProperty(t.prototype,"pointer",{get:function(){return this.o===this.h&&Gt(),this.o.u},enumerable:!1,configurable:!0}),t.prototype.copy=function(){return new t(this.o,this.h,this.container,this.iteratorType)},t}(X3),hI=function(e){Q3(t,e);function t(r){r===void 0&&(r=[]);var i=e.call(this)||this,a=i;return r.forEach(function(n){a.insert(n)}),i}return t.prototype.begin=function(){return new _f(this.H,this.h,this)},t.prototype.end=function(){return new _f(this.h,this.h,this)},t.prototype.rBegin=function(){return new _f(this.l,this.h,this,1)},t.prototype.rEnd=function(){return new _f(this.h,this.h,this,1)},t.prototype.front=function(){return this.H.u},t.prototype.back=function(){return this.l.u},t.prototype.insert=function(r,i){return this.v(r,void 0,i)},t.prototype.getElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;for(var i=this.H;r--;)i=i.m;return i.u},t.prototype.find=function(r,i){var a=this.g(r,i);return new _f(a,this.h,this)},t.prototype.forEach=function(r){for(var i=0,a=this.H;a!==this.h;)r(a.u,i++,this),a=a.m},t.prototype[Symbol.iterator]=function(){return(function(){var r;return uI(this,function(i){switch(i.label){case 0:r=this.H,i.label=1;case 1:return r===this.h?[3,3]:[4,r.u];case 2:return i.sent(),r=r.m,[3,1];case 3:return[2]}})}).bind(this)()},t}(J3);const cI=hI;var e6=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),dI=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:h(0),throw:h(1),return:h(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function h(m){return function(_){return d([m,_])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(_){m=[6,_],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},Mf=function(e){e6(t,e);function t(r,i,a,n){var l=e.call(this,r,i,n)||this;return l.container=a,l}return Object.defineProperty(t.prototype,"pointer",{get:function(){this.o===this.h&&Gt();var r=this;return new Proxy([],{get:function(i,a){if(a==="0")return r.o.u;if(a==="1")return r.o.p},set:function(i,a,n){if(a!=="1")throw new TypeError("props must be 1");return r.o.p=n,!0}})},enumerable:!1,configurable:!0}),t.prototype.copy=function(){return new t(this.o,this.h,this.container,this.iteratorType)},t}(X3),pI=function(e){e6(t,e);function t(r){r===void 0&&(r=[]);var i=e.call(this)||this,a=i;return r.forEach(function(n){a.setElement(n[0],n[1])}),i}return t.prototype.begin=function(){return new Mf(this.H,this.h,this)},t.prototype.end=function(){return new Mf(this.h,this.h,this)},t.prototype.rBegin=function(){return new Mf(this.l,this.h,this,1)},t.prototype.rEnd=function(){return new Mf(this.h,this.h,this,1)},t.prototype.front=function(){if(this.M!==0)return[this.H.u,this.H.p]},t.prototype.back=function(){if(this.M!==0)return[this.l.u,this.l.p]},t.prototype.setElement=function(r,i,a){return this.v(r,i,a)},t.prototype.getElementByKey=function(r,i){if(i===void 0&&(i=Pu(r)),i){var a=r[this.HASH_TAG];return a!==void 0?this._[a].p:void 0}var n=this.I[r];return n?n.p:void 0},t.prototype.getElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;for(var i=this.H;r--;)i=i.m;return[i.u,i.p]},t.prototype.find=function(r,i){var a=this.g(r,i);return new Mf(a,this.h,this)},t.prototype.forEach=function(r){for(var i=0,a=this.H;a!==this.h;)r([a.u,a.p],i++,this),a=a.m},t.prototype[Symbol.iterator]=function(){return(function(){var r;return dI(this,function(i){switch(i.label){case 0:r=this.H,i.label=1;case 1:return r===this.h?[3,3]:[4,[r.u,r.p]];case 2:return i.sent(),r=r.m,[3,1];case 3:return[2]}})}).bind(this)()},t}(J3);const vI=pI,gI=Object.freeze(Object.defineProperty({__proto__:null,Deque:XO,HashMap:vI,HashSet:cI,LinkList:VO,OrderedMap:lI,OrderedSet:aI,PriorityQueue:kO,Queue:BO,Stack:IO,Vector:qO},Symbol.toStringTag,{value:"Module"})),mI=wl(gI);var Vp={exports:{}},Fd,T1;function yI(){if(T1)return Fd;T1=1;var e=1e3,t=e*60,r=t*60,i=r*24,a=i*7,n=i*365.25;Fd=function(_,S){S=S||{};var R=typeof _;if(R==="string"&&_.length>0)return l(_);if(R==="number"&&isFinite(_))return S.long?d(_):h(_);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(_))};function l(_){if(_=String(_),!(_.length>100)){var S=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(_);if(S){var R=parseFloat(S[1]),I=(S[2]||"ms").toLowerCase();switch(I){case"years":case"year":case"yrs":case"yr":case"y":return R*n;case"weeks":case"week":case"w":return R*a;case"days":case"day":case"d":return R*i;case"hours":case"hour":case"hrs":case"hr":case"h":return R*r;case"minutes":case"minute":case"mins":case"min":case"m":return R*t;case"seconds":case"second":case"secs":case"sec":case"s":return R*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return R;default:return}}}}function h(_){var S=Math.abs(_);return S>=i?Math.round(_/i)+"d":S>=r?Math.round(_/r)+"h":S>=t?Math.round(_/t)+"m":S>=e?Math.round(_/e)+"s":_+"ms"}function d(_){var S=Math.abs(_);return S>=i?m(_,S,i,"day"):S>=r?m(_,S,r,"hour"):S>=t?m(_,S,t,"minute"):S>=e?m(_,S,e,"second"):_+" ms"}function m(_,S,R,I){var O=S>=R*1.5;return Math.round(_/R)+" "+I+(O?"s":"")}return Fd}function bI(e){r.debug=r,r.default=r,r.coerce=d,r.disable=n,r.enable=a,r.enabled=l,r.humanize=yI(),r.destroy=m,Object.keys(e).forEach(_=>{r[_]=e[_]}),r.names=[],r.skips=[],r.formatters={};function t(_){let S=0;for(let R=0;R<_.length;R++)S=(S<<5)-S+_.charCodeAt(R),S|=0;return r.colors[Math.abs(S)%r.colors.length]}r.selectColor=t;function r(_){let S,R=null,I,O;function L(...B){if(!L.enabled)return;const P=L,C=Number(new Date),N=C-(S||C);P.diff=N,P.prev=S,P.curr=C,S=C,B[0]=r.coerce(B[0]),typeof B[0]!="string"&&B.unshift("%O");let $=0;B[0]=B[0].replace(/%([a-zA-Z%])/g,(G,re)=>{if(G==="%%")return"%";$++;const J=r.formatters[re];if(typeof J=="function"){const K=B[$];G=J.call(P,K),B.splice($,1),$--}return G}),r.formatArgs.call(P,B),(P.log||r.log).apply(P,B)}return L.namespace=_,L.useColors=r.useColors(),L.color=r.selectColor(_),L.extend=i,L.destroy=r.destroy,Object.defineProperty(L,"enabled",{enumerable:!0,configurable:!1,get:()=>R!==null?R:(I!==r.namespaces&&(I=r.namespaces,O=r.enabled(_)),O),set:B=>{R=B}}),typeof r.init=="function"&&r.init(L),L}function i(_,S){const R=r(this.namespace+(typeof S>"u"?":":S)+_);return R.log=this.log,R}function a(_){r.save(_),r.namespaces=_,r.names=[],r.skips=[];let S;const R=(typeof _=="string"?_:"").split(/[\s,]+/),I=R.length;for(S=0;S<I;S++)R[S]&&(_=R[S].replace(/\*/g,".*?"),_[0]==="-"?r.skips.push(new RegExp("^"+_.slice(1)+"$")):r.names.push(new RegExp("^"+_+"$")))}function n(){const _=[...r.names.map(h),...r.skips.map(h).map(S=>"-"+S)].join(",");return r.enable(""),_}function l(_){if(_[_.length-1]==="*")return!0;let S,R;for(S=0,R=r.skips.length;S<R;S++)if(r.skips[S].test(_))return!1;for(S=0,R=r.names.length;S<R;S++)if(r.names[S].test(_))return!0;return!1}function h(_){return _.toString().substring(2,_.toString().length-2).replace(/\.\*\?$/,"*")}function d(_){return _ instanceof Error?_.stack||_.message:_}function m(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}var wI=bI;(function(e,t){t.formatArgs=i,t.save=a,t.load=n,t.useColors=r,t.storage=l(),t.destroy=(()=>{let d=!1;return()=>{d||(d=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function i(d){if(d[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+d[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const m="color: "+this.color;d.splice(1,0,m,"color: inherit");let _=0,S=0;d[0].replace(/%[a-zA-Z%]/g,R=>{R!=="%%"&&(_++,R==="%c"&&(S=_))}),d.splice(S,0,m)}t.log=console.debug||console.log||(()=>{});function a(d){try{d?t.storage.setItem("debug",d):t.storage.removeItem("debug")}catch{}}function n(){let d;try{d=t.storage.getItem("debug")}catch{}return!d&&typeof ye<"u"&&"env"in ye&&(d={}.DEBUG),d}function l(){try{return localStorage}catch{}}e.exports=wI(t);const{formatters:h}=e.exports;h.j=function(d){try{return JSON.stringify(d)}catch(m){return"[UnexpectedJSONParseError]: "+m.message}}})(Vp,Vp.exports);var co=Vp.exports;const _I=mI.OrderedSet,hn=co("number-allocator:trace"),MI=co("number-allocator:error");function Wr(e,t){this.low=e,this.high=t}Wr.prototype.equals=function(e){return this.low===e.low&&this.high===e.high};Wr.prototype.compare=function(e){return this.low<e.low&&this.high<e.low?-1:e.low<this.low&&e.high<this.low?1:0};function Sn(e,t){if(!(this instanceof Sn))return new Sn(e,t);this.min=e,this.max=t,this.ss=new _I([],(r,i)=>r.compare(i)),hn("Create"),this.clear()}Sn.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low};Sn.prototype.alloc=function(){if(this.ss.size()===0)return hn("alloc():empty"),null;const e=this.ss.begin(),t=e.pointer.low,r=e.pointer.high,i=t;return i+1<=r?this.ss.updateKeyByIterator(e,new Wr(t+1,r)):this.ss.eraseElementByPos(0),hn("alloc():"+i),i};Sn.prototype.use=function(e){const t=new Wr(e,e),r=this.ss.lowerBound(t);if(!r.equals(this.ss.end())){const i=r.pointer.low,a=r.pointer.high;return r.pointer.equals(t)?(this.ss.eraseElementByIterator(r),hn("use():"+e),!0):i>e?!1:i===e?(this.ss.updateKeyByIterator(r,new Wr(i+1,a)),hn("use():"+e),!0):a===e?(this.ss.updateKeyByIterator(r,new Wr(i,a-1)),hn("use():"+e),!0):(this.ss.updateKeyByIterator(r,new Wr(e+1,a)),this.ss.insert(new Wr(i,e-1)),hn("use():"+e),!0)}return hn("use():failed"),!1};Sn.prototype.free=function(e){if(e<this.min||e>this.max){MI("free():"+e+" is out of range");return}const t=new Wr(e,e),r=this.ss.upperBound(t);if(r.equals(this.ss.end())){if(r.equals(this.ss.begin())){this.ss.insert(t);return}r.pre();const i=r.pointer.high;r.pointer.high+1===e?this.ss.updateKeyByIterator(r,new Wr(i,e)):this.ss.insert(t)}else if(r.equals(this.ss.begin()))if(e+1===r.pointer.low){const i=r.pointer.high;this.ss.updateKeyByIterator(r,new Wr(e,i))}else this.ss.insert(t);else{const i=r.pointer.low,a=r.pointer.high;r.pre();const n=r.pointer.low;r.pointer.high+1===e?e+1===i?(this.ss.eraseElementByIterator(r),this.ss.updateKeyByIterator(r,new Wr(n,a))):this.ss.updateKeyByIterator(r,new Wr(n,e)):e+1===i?(this.ss.eraseElementByIterator(r.next()),this.ss.insert(new Wr(e,a))):this.ss.insert(t)}hn("free():"+e)};Sn.prototype.clear=function(){hn("clear()"),this.ss.clear(),this.ss.insert(new Wr(this.min,this.max))};Sn.prototype.intervalCount=function(){return this.ss.size()};Sn.prototype.dump=function(){console.log("length:"+this.ss.size());for(const e of this.ss)console.log(e)};var SI=Sn;const xI=SI;j3.NumberAllocator=xI;const EI=RO,RI=j3.NumberAllocator;function Fo(e){if(!(this instanceof Fo))return new Fo(e);e>0&&(this.aliasToTopic=new EI({max:e}),this.topicToAlias={},this.numberAllocator=new RI(1,e),this.max=e,this.length=0)}Fo.prototype.put=function(e,t){if(t===0||t>this.max)return!1;const r=this.aliasToTopic.get(t);return r&&delete this.topicToAlias[r],this.aliasToTopic.set(t,e),this.topicToAlias[e]=t,this.numberAllocator.use(t),this.length=this.aliasToTopic.length,!0};Fo.prototype.getTopicByAlias=function(e){return this.aliasToTopic.get(e)};Fo.prototype.getAliasByTopic=function(e){const t=this.topicToAlias[e];return typeof t<"u"&&this.aliasToTopic.get(t),t};Fo.prototype.clear=function(){this.aliasToTopic.reset(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0};Fo.prototype.getLruAlias=function(){const e=this.numberAllocator.firstVacant();return e||this.aliasToTopic.keys()[this.aliasToTopic.length-1]};var AI=Fo,uc={},hc={exports:{}},zp={exports:{}},t6=kr.EventEmitter,jd,O1;function TI(){if(O1)return jd;O1=1;function e(O,L){var B=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);L&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),B.push.apply(B,P)}return B}function t(O){for(var L=1;L<arguments.length;L++){var B=arguments[L]!=null?arguments[L]:{};L%2?e(Object(B),!0).forEach(function(P){r(O,P,B[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(B)):e(Object(B)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(B,P))})}return O}function r(O,L,B){return L=l(L),L in O?Object.defineProperty(O,L,{value:B,enumerable:!0,configurable:!0,writable:!0}):O[L]=B,O}function i(O,L){if(!(O instanceof L))throw new TypeError("Cannot call a class as a function")}function a(O,L){for(var B=0;B<L.length;B++){var P=L[B];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,L,B){return L&&a(O.prototype,L),B&&a(O,B),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var L=h(O,"string");return typeof L=="symbol"?L:String(L)}function h(O,L){if(typeof O!="object"||O===null)return O;var B=O[Symbol.toPrimitive];if(B!==void 0){var P=B.call(O,L||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(L==="string"?String:Number)(O)}var d=Le,m=d.Buffer,_=oi,S=_.inspect,R=S&&S.custom||"inspect";function I(O,L,B){m.prototype.copy.call(O,L,B)}return jd=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(B){var P={data:B,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(B){var P={data:B,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var B=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,B}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(B){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=B+P.data;return C}},{key:"concat",value:function(B){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(B>>>0),C=this.head,N=0;C;)I(C.data,P,N),N+=C.data.length,C=C.next;return P}},{key:"consume",value:function(B,P){var C;return B<this.head.data.length?(C=this.head.data.slice(0,B),this.head.data=this.head.data.slice(B)):B===this.head.data.length?C=this.shift():C=P?this._getString(B):this._getBuffer(B),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(B){var P=this.head,C=1,N=P.data;for(B-=N.length;P=P.next;){var $=P.data,W=B>$.length?$.length:B;if(W===$.length?N+=$:N+=$.slice(0,B),B-=W,B===0){W===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(W));break}++C}return this.length-=C,N}},{key:"_getBuffer",value:function(B){var P=m.allocUnsafe(B),C=this.head,N=1;for(C.data.copy(P),B-=C.data.length;C=C.next;){var $=C.data,W=B>$.length?$.length:B;if($.copy(P,P.length-B,0,W),B-=W,B===0){W===$.length?(++N,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(W));break}++N}return this.length-=N,P}},{key:R,value:function(B,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),jd}function OI(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,ye.nextTick(Gp,this,e)):ye.nextTick(Gp,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?ye.nextTick(Cu,r):(r._writableState.errorEmitted=!0,ye.nextTick(I1,r,n)):ye.nextTick(I1,r,n):t?(ye.nextTick(Cu,r),t(n)):ye.nextTick(Cu,r)}),this)}function I1(e,t){Gp(e,t),Cu(e)}function Cu(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function II(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Gp(e,t){e.emit("error",t)}function PI(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}var r6={destroy:OI,undestroy:II,errorOrDestroy:PI},La={};function CI(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var i6={};function Ti(e,t,r){r||(r=Error);function i(n,l,h){return typeof t=="string"?t:t(n,l,h)}var a=function(n){CI(l,n);function l(h,d,m){return n.call(this,i(h,d,m))||this}return l}(r);a.prototype.name=r.name,a.prototype.code=e,i6[e]=a}function P1(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(i){return String(i)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function BI(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function LI(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function NI(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Ti("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Ti("ERR_INVALID_ARG_TYPE",function(e,t,r){var i;typeof t=="string"&&BI(t,"not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";var a;if(LI(e," argument"))a="The ".concat(e," ").concat(i," ").concat(P1(t,"type"));else{var n=NI(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(n," ").concat(i," ").concat(P1(t,"type"))}return a+=". Received type ".concat(typeof r),a},TypeError);Ti("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Ti("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Ti("ERR_STREAM_PREMATURE_CLOSE","Premature close");Ti("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Ti("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Ti("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Ti("ERR_STREAM_WRITE_AFTER_END","write after end");Ti("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Ti("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Ti("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");La.codes=i6;var kI=La.codes.ERR_INVALID_OPT_VALUE;function $I(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function DI(e,t,r,i){var a=$I(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=i?r:"highWaterMark";throw new kI(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}var n6={getHighWaterMark:DI},Ud,C1;function o6(){if(C1)return Ud;C1=1,Ud=J;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){Q(E,A)}}var t;J.WritableState=G;var r={deprecate:ef},i=t6,a=Le.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function h(A){return a.isBuffer(A)||A instanceof n}var d=r6,m=n6,_=m.getHighWaterMark,S=La.codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,L=S.ERR_STREAM_CANNOT_PIPE,B=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,N=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(J,i);function W(){}function G(A,E,q){t=t||Is(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=_(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var re;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(re=Function.prototype[Symbol.hasInstance],Object.defineProperty(J,Symbol.hasInstance,{value:function(E){return re.call(this,E)?!0:this!==J?!1:E&&E._writableState instanceof G}})):re=function(E){return E instanceof this};function J(A){t=t||Is();var E=this instanceof t;if(!E&&!re.call(J,this))return new J(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}J.prototype.pipe=function(){$(this,new L)};function K(A,E){var q=new C;$(A,q),ye.nextTick(E,q)}function se(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),ye.nextTick(V,X),!1):!0}J.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&h(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=W),V.ending?K(this,q):(b||se(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},J.prototype.cork=function(){this._writableState.corked++},J.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},J.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new N(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(J.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function M(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(J.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=M(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var F=E.objectMode?1:V.length;E.length+=F;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,F,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new B("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(ye.nextTick(X,V),ye.nextTick(D,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),D(A,E))}function c(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(c(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?ye.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),D(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,F=!0;q;)X[y]=q,q.isBuf||(F=!1),q=q.next,y+=1;X.allBuffers=F,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,j=q.callback,k=E.objectMode?1:U.length;if(f(A,E,!1,k,U,Z,j),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}J.prototype._write=function(A,E,q){q(new I("_write()"))},J.prototype._writev=null,J.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(J.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),D(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,ye.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function D(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,D(A,E),q&&(E.finished?ye.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function Q(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(J.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),J.prototype.destroy=d.destroy,J.prototype._undestroy=d.undestroy,J.prototype._destroy=function(A,E){E(A)},Ud}var Hd,B1;function Is(){if(B1)return Hd;B1=1;var e=Object.keys||function(m){var _=[];for(var S in m)_.push(S);return _};Hd=l;var t=s6(),r=o6();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",h)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function h(){this._writableState.ended||ye.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(_){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=_,this._writableState.destroyed=_)}}),Hd}var L1=La.codes.ERR_STREAM_PREMATURE_CLOSE;function FI(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];e.apply(this,i)}}}function jI(){}function UI(e){return e.setHeader&&typeof e.abort=="function"}function a6(e,t,r){if(typeof t=="function")return a6(e,null,t);t||(t={}),r=FI(r||jI);var i=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||h()},l=e._writableState&&e._writableState.finished,h=function(){a=!1,l=!0,i||r.call(e)},d=e._readableState&&e._readableState.endEmitted,m=function(){i=!1,d=!0,a||r.call(e)},_=function(O){r.call(e,O)},S=function(){var O;if(i&&!d)return(!e._readableState||!e._readableState.ended)&&(O=new L1),r.call(e,O);if(a&&!l)return(!e._writableState||!e._writableState.ended)&&(O=new L1),r.call(e,O)},R=function(){e.req.on("finish",h)};return UI(e)?(e.on("complete",h),e.on("abort",S),e.req?R():e.on("request",R)):a&&!e._writableState&&(e.on("end",n),e.on("close",n)),e.on("end",m),e.on("finish",h),t.error!==!1&&e.on("error",_),e.on("close",S),function(){e.removeListener("complete",h),e.removeListener("abort",S),e.removeListener("request",R),e.req&&e.req.removeListener("finish",h),e.removeListener("end",n),e.removeListener("close",n),e.removeListener("finish",h),e.removeListener("end",m),e.removeListener("error",_),e.removeListener("close",S)}}var Cg=a6,qd,N1;function HI(){if(N1)return qd;N1=1;var e;function t(N,$,W){return $=r($),$ in N?Object.defineProperty(N,$,{value:W,enumerable:!0,configurable:!0,writable:!0}):N[$]=W,N}function r(N){var $=i(N,"string");return typeof $=="symbol"?$:String($)}function i(N,$){if(typeof N!="object"||N===null)return N;var W=N[Symbol.toPrimitive];if(W!==void 0){var G=W.call(N,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(N)}var a=Cg,n=Symbol("lastResolve"),l=Symbol("lastReject"),h=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),_=Symbol("handlePromise"),S=Symbol("stream");function R(N,$){return{value:N,done:$}}function I(N){var $=N[n];if($!==null){var W=N[S].read();W!==null&&(N[m]=null,N[n]=null,N[l]=null,$(R(W,!1)))}}function O(N){ye.nextTick(I,N)}function L(N,$){return function(W,G){N.then(function(){if($[d]){W(R(void 0,!0));return}$[_](W,G)},G)}}var B=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,W=this[h];if(W!==null)return Promise.reject(W);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(K,se){ye.nextTick(function(){$[h]?se($[h]):K(R(void 0,!0))})});var G=this[m],re;if(G)re=new Promise(L(G,this));else{var J=this[S].read();if(J!==null)return Promise.resolve(R(J,!1));re=new Promise(this[_])}return this[m]=re,re}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(W,G){$[S].destroy(null,function(re){if(re){G(re);return}W(R(void 0,!0))})})}),e),B),C=function($){var W,G=Object.create(P,(W={},t(W,S,{value:$,writable:!0}),t(W,n,{value:null,writable:!0}),t(W,l,{value:null,writable:!0}),t(W,h,{value:null,writable:!0}),t(W,d,{value:$._readableState.endEmitted,writable:!0}),t(W,_,{value:function(J,K){var se=G[S].read();se?(G[m]=null,G[n]=null,G[l]=null,J(R(se,!1))):(G[n]=J,G[l]=K)},writable:!0}),W));return G[m]=null,a($,function(re){if(re&&re.code!=="ERR_STREAM_PREMATURE_CLOSE"){var J=G[l];J!==null&&(G[m]=null,G[n]=null,G[l]=null,J(re)),G[h]=re;return}var K=G[n];K!==null&&(G[m]=null,G[n]=null,G[l]=null,K(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return qd=C,qd}var Wd,k1;function qI(){return k1||(k1=1,Wd=function(){throw new Error("Readable.from is not available in the browser")}),Wd}var Kd,$1;function s6(){if($1)return Kd;$1=1,Kd=K;var e;K.ReadableState=J,kr.EventEmitter;var t=function(y,F){return y.listeners(F).length},r=t6,i=Le.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var h=oi,d;h&&h.debuglog?d=h.debuglog("stream"):d=function(){};var m=TI(),_=r6,S=n6,R=S.getHighWaterMark,I=La.codes,O=I.ERR_INVALID_ARG_TYPE,L=I.ERR_STREAM_PUSH_AFTER_EOF,B=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,N,$;Ye(K,r);var W=_.errorOrDestroy,G=["error","close","destroy","pause","resume"];function re(b,y,F){if(typeof b.prependListener=="function")return b.prependListener(y,F);!b._events||!b._events[y]?b.on(y,F):Array.isArray(b._events[y])?b._events[y].unshift(F):b._events[y]=[F,b._events[y]]}function J(b,y,F){e=e||Is(),b=b||{},typeof F!="boolean"&&(F=y instanceof e),this.objectMode=!!b.objectMode,F&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",F),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=ti().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function K(b){if(e=e||Is(),!(this instanceof K))return new K(b);var y=this instanceof e;this._readableState=new J(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(K.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),K.prototype.destroy=_.destroy,K.prototype._undestroy=_.undestroy,K.prototype._destroy=function(b,y){y(b)},K.prototype.push=function(b,y){var F=this._readableState,U;return F.objectMode?U=!0:typeof b=="string"&&(y=y||F.defaultEncoding,y!==F.encoding&&(b=i.from(b,y),y=""),U=!0),se(this,b,y,!1,U)},K.prototype.unshift=function(b){return se(this,b,null,!0,!1)};function se(b,y,F,U,Z){d("readableAddChunk",y);var j=b._readableState;if(y===null)j.reading=!1,p(b,j);else{var k;if(Z||(k=o(j,y)),k)W(b,k);else if(j.objectMode||y&&y.length>0)if(typeof y!="string"&&!j.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)j.endEmitted?W(b,new P):M(b,j,y,!0);else if(j.ended)W(b,new L);else{if(j.destroyed)return!1;j.reading=!1,j.decoder&&!F?(y=j.decoder.write(y),j.objectMode||y.length!==0?M(b,j,y,!1):g(b,j)):M(b,j,y,!1)}else U||(j.reading=!1,g(b,j))}return!j.ended&&(j.length<j.highWaterMark||j.length===0)}function M(b,y,F,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",F)):(y.length+=y.objectMode?1:F.length,U?y.buffer.unshift(F):y.buffer.push(F),y.needReadable&&w(b)),g(b,y)}function o(b,y){var F;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(F=new O("chunk",["string","Buffer","Uint8Array"],y)),F}K.prototype.isPaused=function(){return this._readableState.flowing===!1},K.prototype.setEncoding=function(b){C||(C=ti().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var F=this._readableState.buffer.head,U="";F!==null;)U+=y.write(F.data),F=F.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function c(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}K.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,F=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=c(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=c(F,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),F!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var F=y.decoder.end();F&&F.length&&(y.buffer.push(F),y.length+=y.objectMode?1:F.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,ye.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,ye.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var F=y.length;if(d("maybeReadMore read 0"),b.read(0),F===y.length)break}y.readingMore=!1}K.prototype._read=function(b){W(this,new B("_read()"))},K.prototype.pipe=function(b,y){var F=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==ye.stdout&&b!==ye.stderr,j=Z?H:xe;U.endEmitted?ye.nextTick(j):F.once("end",j),b.on("unpipe",k);function k(le,ve){d("onunpipe"),le===F&&ve&&ve.hasUnpiped===!1&&(ve.hasUnpiped=!0,ee())}function H(){d("onend"),b.end()}var z=v(F);b.on("drain",z);var oe=!1;function ee(){d("cleanup"),b.removeListener("close",he),b.removeListener("finish",ue),b.removeListener("drain",z),b.removeListener("error",me),b.removeListener("unpipe",k),F.removeListener("end",H),F.removeListener("end",xe),F.removeListener("data",ne),oe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}F.on("data",ne);function ne(le){d("ondata");var ve=b.write(le);d("dest.write",ve),ve===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!oe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),F.pause())}function me(le){d("onerror",le),xe(),b.removeListener("error",me),t(b,"error")===0&&W(b,le)}re(b,"error",me);function he(){b.removeListener("finish",ue),xe()}b.once("close",he);function ue(){d("onfinish"),b.removeListener("close",he),xe()}b.once("finish",ue);function xe(){d("unpipe"),F.unpipe(b)}return b.emit("pipe",F),U.flowing||(d("pipe resume"),F.resume()),b};function v(b){return function(){var F=b._readableState;d("pipeOnDrain",F.awaitDrain),F.awaitDrain&&F.awaitDrain--,F.awaitDrain===0&&t(b,"data")&&(F.flowing=!0,A(b))}}K.prototype.unpipe=function(b){var y=this._readableState,F={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,F),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var j=0;j<Z;j++)U[j].emit("unpipe",this,{hasUnpiped:!1});return this}var k=X(y.pipes,b);return k===-1?this:(y.pipes.splice(k,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,F),this)},K.prototype.on=function(b,y){var F=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||ye.nextTick(D,this)),F},K.prototype.addListener=K.prototype.on,K.prototype.removeListener=function(b,y){var F=r.prototype.removeListener.call(this,b,y);return b==="readable"&&ye.nextTick(T,this),F},K.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&ye.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function D(b){d("readable nexttick read 0"),b.read(0)}K.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,ye.nextTick(Q,b,y))}function Q(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}K.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}K.prototype.wrap=function(b){var y=this,F=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),F.decoder&&!F.ended){var k=F.decoder.end();k&&k.length&&y.push(k)}y.push(null)}),b.on("data",function(k){if(d("wrapped data"),F.decoder&&(k=F.decoder.write(k)),!(F.objectMode&&k==null)&&!(!F.objectMode&&(!k||!k.length))){var H=y.push(k);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var j=0;j<G.length;j++)b.on(G[j],this.emit.bind(this,G[j]));return this._read=function(k){d("wrapped _read",k),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(K.prototype[Symbol.asyncIterator]=function(){return N===void 0&&(N=HI()),N(this)}),Object.defineProperty(K.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(K.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(K.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),K._fromList=E,Object.defineProperty(K.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var F;return y.objectMode?F=y.buffer.shift():!b||b>=y.length?(y.decoder?F=y.buffer.join(""):y.buffer.length===1?F=y.buffer.first():F=y.buffer.concat(y.length),y.buffer.clear()):F=y.buffer.consume(b,y.decoder),F}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,ye.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var F=y._writableState;(!F||F.autoDestroy&&F.finished)&&y.destroy()}}typeof Symbol=="function"&&(K.from=function(b,y){return $===void 0&&($=qI()),$(K,b,y)});function X(b,y){for(var F=0,U=b.length;F<U;F++)if(b[F]===y)return F;return-1}return Kd}var f6=to,cc=La.codes,WI=cc.ERR_METHOD_NOT_IMPLEMENTED,KI=cc.ERR_MULTIPLE_CALLBACK,VI=cc.ERR_TRANSFORM_ALREADY_TRANSFORMING,zI=cc.ERR_TRANSFORM_WITH_LENGTH_0,dc=Is();Ye(to,dc);function GI(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new KI);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function to(e){if(!(this instanceof to))return new to(e);dc.call(this,e),this._transformState={afterTransform:GI.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",YI)}function YI(){var e=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(t,r){D1(e,t,r)}):D1(this,null,null)}to.prototype.push=function(e,t){return this._transformState.needTransform=!1,dc.prototype.push.call(this,e,t)};to.prototype._transform=function(e,t,r){r(new WI("_transform()"))};to.prototype._write=function(e,t,r){var i=this._transformState;if(i.writecb=r,i.writechunk=e,i.writeencoding=t,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};to.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};to.prototype._destroy=function(e,t){dc.prototype._destroy.call(this,e,function(r){t(r)})};function D1(e,t,r){if(t)return e.emit("error",t);if(r!=null&&e.push(r),e._writableState.length)throw new zI;if(e._transformState.transforming)throw new VI;return e.push(null)}var ZI=cl,l6=f6;Ye(cl,l6);function cl(e){if(!(this instanceof cl))return new cl(e);l6.call(this,e)}cl.prototype._transform=function(e,t,r){r(null,e)};var Vd;function XI(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var u6=La.codes,JI=u6.ERR_MISSING_ARGS,QI=u6.ERR_STREAM_DESTROYED;function F1(e){if(e)throw e}function eP(e){return e.setHeader&&typeof e.abort=="function"}function tP(e,t,r,i){i=XI(i);var a=!1;e.on("close",function(){a=!0}),Vd===void 0&&(Vd=Cg),Vd(e,{readable:t,writable:r},function(l){if(l)return i(l);a=!0,i()});var n=!1;return function(l){if(!a&&!n){if(n=!0,eP(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();i(l||new QI("pipe"))}}}function j1(e){e()}function rP(e,t){return e.pipe(t)}function iP(e){return!e.length||typeof e[e.length-1]!="function"?F1:e.pop()}function nP(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=iP(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new JI("streams");var a,n=t.map(function(l,h){var d=h<t.length-1,m=h>0;return tP(l,d,m,function(_){a||(a=_),_&&n.forEach(j1),!d&&(n.forEach(j1),i(a))})});return t.reduce(rP)}var oP=nP;(function(e,t){t=e.exports=s6(),t.Stream=t,t.Readable=t,t.Writable=o6(),t.Duplex=Is(),t.Transform=f6,t.PassThrough=ZI,t.finished=Cg,t.pipeline=oP})(zp,zp.exports);var aP=zp.exports;const{Buffer:Wi}=Le,h6=Symbol.for("BufferList");function Yt(e){if(!(this instanceof Yt))return new Yt(e);Yt._init.call(this,e)}Yt._init=function(t){Object.defineProperty(this,h6,{value:!0}),this._bufs=[],this.length=0,t&&this.append(t)};Yt.prototype._new=function(t){return new Yt(t)};Yt.prototype._offset=function(t){if(t===0)return[0,0];let r=0;for(let i=0;i<this._bufs.length;i++){const a=r+this._bufs[i].length;if(t<a||i===this._bufs.length-1)return[i,t-r];r=a}};Yt.prototype._reverseOffset=function(e){const t=e[0];let r=e[1];for(let i=0;i<t;i++)r+=this._bufs[i].length;return r};Yt.prototype.get=function(t){if(t>this.length||t<0)return;const r=this._offset(t);return this._bufs[r[0]][r[1]]};Yt.prototype.slice=function(t,r){return typeof t=="number"&&t<0&&(t+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,t,r)};Yt.prototype.copy=function(t,r,i,a){if((typeof i!="number"||i<0)&&(i=0),(typeof a!="number"||a>this.length)&&(a=this.length),i>=this.length||a<=0)return t||Wi.alloc(0);const n=!!t,l=this._offset(i),h=a-i;let d=h,m=n&&r||0,_=l[1];if(i===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:Wi.concat(this._bufs,this.length);for(let S=0;S<this._bufs.length;S++)this._bufs[S].copy(t,m),m+=this._bufs[S].length;return t}if(d<=this._bufs[l[0]].length-_)return n?this._bufs[l[0]].copy(t,r,_,_+d):this._bufs[l[0]].slice(_,_+d);n||(t=Wi.allocUnsafe(h));for(let S=l[0];S<this._bufs.length;S++){const R=this._bufs[S].length-_;if(d>R)this._bufs[S].copy(t,m,_),m+=R;else{this._bufs[S].copy(t,m,_,_+d),m+=R;break}d-=R,_&&(_=0)}return t.length>m?t.slice(0,m):t};Yt.prototype.shallowSlice=function(t,r){if(t=t||0,r=typeof r!="number"?this.length:r,t<0&&(t+=this.length),r<0&&(r+=this.length),t===r)return this._new();const i=this._offset(t),a=this._offset(r),n=this._bufs.slice(i[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),i[1]!==0&&(n[0]=n[0].slice(i[1])),this._new(n)};Yt.prototype.toString=function(t,r,i){return this.slice(r,i).toString(t)};Yt.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};Yt.prototype.duplicate=function(){const t=this._new();for(let r=0;r<this._bufs.length;r++)t.append(this._bufs[r]);return t};Yt.prototype.append=function(t){if(t==null)return this;if(t.buffer)this._appendBuffer(Wi.from(t.buffer,t.byteOffset,t.byteLength));else if(Array.isArray(t))for(let r=0;r<t.length;r++)this.append(t[r]);else if(this._isBufferList(t))for(let r=0;r<t._bufs.length;r++)this.append(t._bufs[r]);else typeof t=="number"&&(t=t.toString()),this._appendBuffer(Wi.from(t));return this};Yt.prototype._appendBuffer=function(t){this._bufs.push(t),this.length+=t.length};Yt.prototype.indexOf=function(e,t,r){if(r===void 0&&typeof t=="string"&&(r=t,t=void 0),typeof e=="function"||Array.isArray(e))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof e=="number"?e=Wi.from([e]):typeof e=="string"?e=Wi.from(e,r):this._isBufferList(e)?e=e.slice():Array.isArray(e.buffer)?e=Wi.from(e.buffer,e.byteOffset,e.byteLength):Wi.isBuffer(e)||(e=Wi.from(e)),t=Number(t||0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;const i=this._offset(t);let a=i[0],n=i[1];for(;a<this._bufs.length;a++){const l=this._bufs[a];for(;n<l.length;)if(l.length-n>=e.length){const d=l.indexOf(e,n);if(d!==-1)return this._reverseOffset([a,d]);n=l.length-e.length+1}else{const d=this._reverseOffset([a,n]);if(this._match(d,e))return d;n++}n=0}return-1};Yt.prototype._match=function(e,t){if(this.length-e<t.length)return!1;for(let r=0;r<t.length;r++)if(this.get(e+r)!==t[r])return!1;return!0};(function(){const e={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(const t in e)(function(r){e[r]===null?Yt.prototype[r]=function(i,a){return this.slice(i,i+a)[r](0,a)}:Yt.prototype[r]=function(i=0){return this.slice(i,i+e[r])[r](0)}})(t)})();Yt.prototype._isBufferList=function(t){return t instanceof Yt||Yt.isBufferList(t)};Yt.isBufferList=function(t){return t!=null&&t[h6]};var sP=Yt;const Bg=aP.Duplex,fP=Ye,Ol=sP;function Lr(e){if(!(this instanceof Lr))return new Lr(e);if(typeof e=="function"){this._callback=e;const t=(function(i){this._callback&&(this._callback(i),this._callback=null)}).bind(this);this.on("pipe",function(i){i.on("error",t)}),this.on("unpipe",function(i){i.removeListener("error",t)}),e=null}Ol._init.call(this,e),Bg.call(this)}fP(Lr,Bg);Object.assign(Lr.prototype,Ol.prototype);Lr.prototype._new=function(t){return new Lr(t)};Lr.prototype._write=function(t,r,i){this._appendBuffer(t),typeof i=="function"&&i()};Lr.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};Lr.prototype.end=function(t){Bg.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Lr.prototype._destroy=function(t,r){this._bufs.length=0,this.length=0,r(t)};Lr.prototype._isBufferList=function(t){return t instanceof Lr||t instanceof Ol||Lr.isBufferList(t)};Lr.isBufferList=Ol.isBufferList;hc.exports=Lr;hc.exports.BufferListStream=Lr;hc.exports.BufferList=Ol;var lP=hc.exports;let uP=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};var hP=uP,c6={exports:{}};(function(e){const t=e.exports;t.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},t.codes={};for(const i in t.types){const a=t.types[i];t.codes[a]=i}t.CMD_SHIFT=4,t.CMD_MASK=240,t.DUP_MASK=8,t.QOS_MASK=3,t.QOS_SHIFT=1,t.RETAIN_MASK=1,t.VARBYTEINT_MASK=127,t.VARBYTEINT_FIN_MASK=128,t.VARBYTEINT_MAX=268435455,t.SESSIONPRESENT_MASK=1,t.SESSIONPRESENT_HEADER=Le.Buffer.from([t.SESSIONPRESENT_MASK]),t.CONNACK_HEADER=Le.Buffer.from([t.codes.connack<<t.CMD_SHIFT]),t.USERNAME_MASK=128,t.PASSWORD_MASK=64,t.WILL_RETAIN_MASK=32,t.WILL_QOS_MASK=24,t.WILL_QOS_SHIFT=3,t.WILL_FLAG_MASK=4,t.CLEAN_SESSION_MASK=2,t.CONNECT_HEADER=Le.Buffer.from([t.codes.connect<<t.CMD_SHIFT]),t.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},t.propertiesCodes={};for(const i in t.properties){const a=t.properties[i];t.propertiesCodes[a]=i}t.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function r(i){return[0,1,2].map(a=>[0,1].map(n=>[0,1].map(l=>{const h=Le.Buffer.alloc(1);return h.writeUInt8(t.codes[i]<<t.CMD_SHIFT|(n?t.DUP_MASK:0)|a<<t.QOS_SHIFT|l,0,!0),h})))}t.PUBLISH_HEADER=r("publish"),t.SUBSCRIBE_HEADER=r("subscribe"),t.SUBSCRIBE_OPTIONS_QOS_MASK=3,t.SUBSCRIBE_OPTIONS_NL_MASK=1,t.SUBSCRIBE_OPTIONS_NL_SHIFT=2,t.SUBSCRIBE_OPTIONS_RAP_MASK=1,t.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,t.SUBSCRIBE_OPTIONS_RH_MASK=3,t.SUBSCRIBE_OPTIONS_RH_SHIFT=4,t.SUBSCRIBE_OPTIONS_RH=[0,16,32],t.SUBSCRIBE_OPTIONS_NL=4,t.SUBSCRIBE_OPTIONS_RAP=8,t.SUBSCRIBE_OPTIONS_QOS=[0,1,2],t.UNSUBSCRIBE_HEADER=r("unsubscribe"),t.ACKS={unsuback:r("unsuback"),puback:r("puback"),pubcomp:r("pubcomp"),pubrel:r("pubrel"),pubrec:r("pubrec")},t.SUBACK_HEADER=Le.Buffer.from([t.codes.suback<<t.CMD_SHIFT]),t.VERSION3=Le.Buffer.from([3]),t.VERSION4=Le.Buffer.from([4]),t.VERSION5=Le.Buffer.from([5]),t.VERSION131=Le.Buffer.from([131]),t.VERSION132=Le.Buffer.from([132]),t.QOS=[0,1,2].map(i=>Le.Buffer.from([i])),t.EMPTY={pingreq:Le.Buffer.from([t.codes.pingreq<<4,0]),pingresp:Le.Buffer.from([t.codes.pingresp<<4,0]),disconnect:Le.Buffer.from([t.codes.disconnect<<4,0])}})(c6);var d6=c6.exports;const cP=lP,dP=kr,U1=hP,Kt=d6,rt=co("mqtt-packet:parser");class vh extends dP{constructor(){super(),this.parser=this.constructor.parser}static parser(t){return this instanceof vh?(this.settings=t||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new vh().parser(t)}_resetState(){rt("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new U1,this.error=null,this._list=cP(),this._stateCounter=0}parse(t){for(this.error&&this._resetState(),this._list.append(t),rt("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,rt("parse: state complete. _stateCounter is now: %d",this._stateCounter),rt("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return rt("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){const t=this._list.readUInt8(0);return this.packet.cmd=Kt.types[t>>Kt.CMD_SHIFT],this.packet.retain=(t&Kt.RETAIN_MASK)!==0,this.packet.qos=t>>Kt.QOS_SHIFT&Kt.QOS_MASK,this.packet.dup=(t&Kt.DUP_MASK)!==0,rt("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0}_parseLength(){const t=this._parseVarByteNum(!0);return t&&(this.packet.length=t.value,this._list.consume(t.bytes)),rt("_parseLength %d",t.value),!!t}_parsePayload(){rt("_parsePayload: payload %O",this._list);let t=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}t=!0}return rt("_parsePayload complete result: %s",t),t}_parseConnect(){rt("_parseConnect");let t,r,i,a;const n={},l=this.packet,h=this._parseString();if(h===null)return this._emitError(new Error("Cannot parse protocolId"));if(h!=="MQTT"&&h!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(l.protocolId=h,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(l.protocolVersion=this._list.readUInt8(this._pos),l.protocolVersion>=128&&(l.bridgeMode=!0,l.protocolVersion=l.protocolVersion-128),l.protocolVersion!==3&&l.protocolVersion!==4&&l.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(n.username=this._list.readUInt8(this._pos)&Kt.USERNAME_MASK,n.password=this._list.readUInt8(this._pos)&Kt.PASSWORD_MASK,n.will=this._list.readUInt8(this._pos)&Kt.WILL_FLAG_MASK,n.will&&(l.will={},l.will.retain=(this._list.readUInt8(this._pos)&Kt.WILL_RETAIN_MASK)!==0,l.will.qos=(this._list.readUInt8(this._pos)&Kt.WILL_QOS_MASK)>>Kt.WILL_QOS_SHIFT),l.clean=(this._list.readUInt8(this._pos)&Kt.CLEAN_SESSION_MASK)!==0,this._pos++,l.keepalive=this._parseNum(),l.keepalive===-1)return this._emitError(new Error("Packet too short"));if(l.protocolVersion===5){const m=this._parseProperties();Object.getOwnPropertyNames(m).length&&(l.properties=m)}const d=this._parseString();if(d===null)return this._emitError(new Error("Packet too short"));if(l.clientId=d,rt("_parseConnect: packet.clientId: %s",l.clientId),n.will){if(l.protocolVersion===5){const m=this._parseProperties();Object.getOwnPropertyNames(m).length&&(l.will.properties=m)}if(t=this._parseString(),t===null)return this._emitError(new Error("Cannot parse will topic"));if(l.will.topic=t,rt("_parseConnect: packet.will.topic: %s",l.will.topic),r=this._parseBuffer(),r===null)return this._emitError(new Error("Cannot parse will payload"));l.will.payload=r,rt("_parseConnect: packet.will.paylaod: %s",l.will.payload)}if(n.username){if(a=this._parseString(),a===null)return this._emitError(new Error("Cannot parse username"));l.username=a,rt("_parseConnect: packet.username: %s",l.username)}if(n.password){if(i=this._parseBuffer(),i===null)return this._emitError(new Error("Cannot parse password"));l.password=i}return this.settings=l,rt("_parseConnect: complete"),l}_parseConnack(){rt("_parseConnack");const t=this.packet;if(this._list.length<1)return null;if(t.sessionPresent=!!(this._list.readUInt8(this._pos++)&Kt.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?t.reasonCode=this._list.readUInt8(this._pos++):t.reasonCode=0;else{if(this._list.length<2)return null;t.returnCode=this._list.readUInt8(this._pos++)}if(t.returnCode===-1||t.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}rt("_parseConnack: complete")}_parsePublish(){rt("_parsePublish");const t=this.packet;if(t.topic=this._parseString(),t.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(t.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}t.payload=this._list.slice(this._pos,t.length),rt("_parsePublish: payload from buffer list: %o",t.payload)}}_parseSubscribe(){rt("_parseSubscribe");const t=this.packet;let r,i,a,n,l,h,d;if(t.qos!==1)return this._emitError(new Error("Wrong subscribe header"));if(t.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){const m=this._parseProperties();Object.getOwnPropertyNames(m).length&&(t.properties=m)}for(;this._pos<t.length;){if(r=this._parseString(),r===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=t.length)return this._emitError(new Error("Malformed Subscribe Payload"));i=this._parseByte(),a=i&Kt.SUBSCRIBE_OPTIONS_QOS_MASK,h=(i>>Kt.SUBSCRIBE_OPTIONS_NL_SHIFT&Kt.SUBSCRIBE_OPTIONS_NL_MASK)!==0,l=(i>>Kt.SUBSCRIBE_OPTIONS_RAP_SHIFT&Kt.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,n=i>>Kt.SUBSCRIBE_OPTIONS_RH_SHIFT&Kt.SUBSCRIBE_OPTIONS_RH_MASK,d={topic:r,qos:a},this.settings.protocolVersion===5?(d.nl=h,d.rap=l,d.rh=n):this.settings.bridgeMode&&(d.rh=0,d.rap=!0,d.nl=!0),rt("_parseSubscribe: push subscription `%s` to subscription",d),t.subscriptions.push(d)}}}_parseSuback(){rt("_parseSuback");const t=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}for(;this._pos<this.packet.length;)this.packet.granted.push(this._list.readUInt8(this._pos++))}}_parseUnsubscribe(){rt("_parseUnsubscribe");const t=this.packet;if(t.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}for(;this._pos<t.length;){const r=this._parseString();if(r===null)return this._emitError(new Error("Cannot parse topic"));rt("_parseUnsubscribe: push topic `%s` to unsubscriptions",r),t.unsubscriptions.push(r)}}}_parseUnsuback(){rt("_parseUnsuback");const t=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if(this.settings.protocolVersion===5){const r=this._parseProperties();for(Object.getOwnPropertyNames(r).length&&(t.properties=r),t.granted=[];this._pos<this.packet.length;)this.packet.granted.push(this._list.readUInt8(this._pos++))}}_parseConfirmation(){rt("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);const t=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5&&(t.length>2?(t.reasonCode=this._parseByte(),rt("_parseConfirmation: packet.reasonCode `%d`",t.reasonCode)):t.reasonCode=0,t.length>3)){const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}return!0}_parseDisconnect(){const t=this.packet;if(rt("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?t.reasonCode=this._parseByte():t.reasonCode=0;const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}return rt("_parseDisconnect result: true"),!0}_parseAuth(){rt("_parseAuth");const t=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));t.reasonCode=this._parseByte();const r=this._parseProperties();return Object.getOwnPropertyNames(r).length&&(t.properties=r),rt("_parseAuth: result: true"),!0}_parseMessageId(){const t=this.packet;return t.messageId=this._parseNum(),t.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(rt("_parseMessageId: packet.messageId %d",t.messageId),!0)}_parseString(t){const r=this._parseNum(),i=r+this._pos;if(r===-1||i>this._list.length||i>this.packet.length)return null;const a=this._list.toString("utf8",this._pos,i);return this._pos+=r,rt("_parseString: result: %s",a),a}_parseStringPair(){return rt("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){const t=this._parseNum(),r=t+this._pos;if(t===-1||r>this._list.length||r>this.packet.length)return null;const i=this._list.slice(this._pos,r);return this._pos+=t,rt("_parseBuffer: result: %o",i),i}_parseNum(){if(this._list.length-this._pos<2)return-1;const t=this._list.readUInt16BE(this._pos);return this._pos+=2,rt("_parseNum: result: %s",t),t}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;const t=this._list.readUInt32BE(this._pos);return this._pos+=4,rt("_parse4ByteNum: result: %s",t),t}_parseVarByteNum(t){rt("_parseVarByteNum");const r=4;let i=0,a=1,n=0,l=!1,h;const d=this._pos?this._pos:0;for(;i<r&&d+i<this._list.length;){if(h=this._list.readUInt8(d+i++),n+=a*(h&Kt.VARBYTEINT_MASK),a*=128,!(h&Kt.VARBYTEINT_FIN_MASK)){l=!0;break}if(this._list.length<=i)break}return!l&&i===r&&this._list.length>=i&&this._emitError(new Error("Invalid variable byte integer")),d&&(this._pos+=i),l=l?t?{bytes:i,value:n}:n:!1,rt("_parseVarByteNum: result: %o",l),l}_parseByte(){let t;return this._pos<this._list.length&&(t=this._list.readUInt8(this._pos),this._pos++),rt("_parseByte: result: %o",t),t}_parseByType(t){switch(rt("_parseByType: type: %s",t),t){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){rt("_parseProperties");const t=this._parseVarByteNum(),i=this._pos+t,a={};for(;this._pos<i;){const n=this._parseByte();if(!n)return this._emitError(new Error("Cannot parse property code type")),!1;const l=Kt.propertiesCodes[n];if(!l)return this._emitError(new Error("Unknown property")),!1;if(l==="userProperties"){a[l]||(a[l]=Object.create(null));const h=this._parseByType(Kt.propertiesTypes[l]);if(a[l][h.name])if(Array.isArray(a[l][h.name]))a[l][h.name].push(h.value);else{const d=a[l][h.name];a[l][h.name]=[d],a[l][h.name].push(h.value)}else a[l][h.name]=h.value;continue}a[l]?Array.isArray(a[l])?a[l].push(this._parseByType(Kt.propertiesTypes[l])):(a[l]=[a[l]],a[l].push(this._parseByType(Kt.propertiesTypes[l]))):a[l]=this._parseByType(Kt.propertiesTypes[l])}return a}_newPacket(){return rt("_newPacket"),this.packet&&(this._list.consume(this.packet.length),rt("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),rt("_newPacket: new packet"),this.packet=new U1,this._pos=0,!0}_emitError(t){rt("_emitError"),this.error=t,this.emit("error",t)}}var pP=vh;const vP=65536,p6={},gP=Le.Buffer.isBuffer(Le.Buffer.from([1,2]).subarray(0,1));function v6(e){const t=Le.Buffer.allocUnsafe(2);return t.writeUInt8(e>>8,0),t.writeUInt8(e&255,0+1),t}function mP(){for(let e=0;e<vP;e++)p6[e]=v6(e)}function yP(e){let r=0,i=0;const a=Le.Buffer.allocUnsafe(4);do r=e%128|0,e=e/128|0,e>0&&(r=r|128),a.writeUInt8(r,i++);while(e>0&&i<4);return e>0&&(i=0),gP?a.subarray(0,i):a.slice(0,i)}function bP(e){const t=Le.Buffer.allocUnsafe(4);return t.writeUInt32BE(e,0),t}var wP={cache:p6,generateCache:mP,generateNumber:v6,genBufVariableByteInt:yP,generate4ByteBuffer:bP},Yp={exports:{}};typeof ye>"u"||!ye.version||ye.version.indexOf("v0.")===0||ye.version.indexOf("v1.")===0&&ye.version.indexOf("v1.8.")!==0?Yp.exports={nextTick:_P}:Yp.exports=ye;function _P(e,t,r,i){if(typeof e!="function")throw new TypeError('"callback" argument must be a function');var a=arguments.length,n,l;switch(a){case 0:case 1:return ye.nextTick(e);case 2:return ye.nextTick(function(){e.call(null,t)});case 3:return ye.nextTick(function(){e.call(null,t,r)});case 4:return ye.nextTick(function(){e.call(null,t,r,i)});default:for(n=new Array(a-1),l=0;l<n.length;)n[l++]=arguments[l];return ye.nextTick(function(){e.apply(null,n)})}}var MP=Yp.exports;const nt=d6,SP=Le.Buffer.allocUnsafe(0),xP=Le.Buffer.from([0]),Il=wP,EP=MP.nextTick,Si=co("mqtt-packet:writeToStream"),gh=Il.cache,RP=Il.generateNumber,AP=Il.generateCache,Zp=Il.genBufVariableByteInt,TP=Il.generate4ByteBuffer;let Kr=Xp,mh=!0;function g6(e,t,r){switch(Si("generate called"),t.cork&&(t.cork(),EP(OP,t)),mh&&(mh=!1,AP()),Si("generate: packet.cmd: %s",e.cmd),e.cmd){case"connect":return IP(e,t);case"connack":return PP(e,t,r);case"publish":return CP(e,t,r);case"puback":case"pubrec":case"pubrel":case"pubcomp":return BP(e,t,r);case"subscribe":return LP(e,t,r);case"suback":return NP(e,t,r);case"unsubscribe":return kP(e,t,r);case"unsuback":return $P(e,t,r);case"pingreq":case"pingresp":return DP(e,t);case"disconnect":return FP(e,t,r);case"auth":return jP(e,t,r);default:return t.emit("error",new Error("Unknown command")),!1}}Object.defineProperty(g6,"cacheNumbers",{get(){return Kr===Xp},set(e){e?((!gh||Object.keys(gh).length===0)&&(mh=!0),Kr=Xp):(mh=!1,Kr=UP)}});function OP(e){e.uncork()}function IP(e,t,r){const i=e||{},a=i.protocolId||"MQTT";let n=i.protocolVersion||4;const l=i.will;let h=i.clean;const d=i.keepalive||0,m=i.clientId||"",_=i.username,S=i.password,R=i.properties;h===void 0&&(h=!0);let I=0;if(!a||typeof a!="string"&&!Le.Buffer.isBuffer(a))return t.emit("error",new Error("Invalid protocolId")),!1;if(I+=a.length+2,n!==3&&n!==4&&n!==5)return t.emit("error",new Error("Invalid protocol version")),!1;if(I+=1,(typeof m=="string"||Le.Buffer.isBuffer(m))&&(m||n>=4)&&(m||h))I+=Le.Buffer.byteLength(m)+2;else{if(n<4)return t.emit("error",new Error("clientId must be supplied before 3.1.1")),!1;if(h*1===0)return t.emit("error",new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof d!="number"||d<0||d>65535||d%1!==0)return t.emit("error",new Error("Invalid keepalive")),!1;if(I+=2,I+=1,n===5){var O=jo(t,R);if(!O)return!1;I+=O.length}if(l){if(typeof l!="object")return t.emit("error",new Error("Invalid will")),!1;if(!l.topic||typeof l.topic!="string")return t.emit("error",new Error("Invalid will topic")),!1;if(I+=Le.Buffer.byteLength(l.topic)+2,I+=2,l.payload)if(l.payload.length>=0)typeof l.payload=="string"?I+=Le.Buffer.byteLength(l.payload):I+=l.payload.length;else return t.emit("error",new Error("Invalid will payload")),!1;var L={};if(n===5){if(L=jo(t,l.properties),!L)return!1;I+=L.length}}let B=!1;if(_!=null)if(V1(_))B=!0,I+=Le.Buffer.byteLength(_)+2;else return t.emit("error",new Error("Invalid username")),!1;if(S!=null){if(!B)return t.emit("error",new Error("Username is required to use password")),!1;if(V1(S))I+=m6(S)+2;else return t.emit("error",new Error("Invalid password")),!1}t.write(nt.CONNECT_HEADER),Oi(t,I),ts(t,a),i.bridgeMode&&(n+=128),t.write(n===131?nt.VERSION131:n===132?nt.VERSION132:n===4?nt.VERSION4:n===5?nt.VERSION5:nt.VERSION3);let P=0;return P|=_!=null?nt.USERNAME_MASK:0,P|=S!=null?nt.PASSWORD_MASK:0,P|=l&&l.retain?nt.WILL_RETAIN_MASK:0,P|=l&&l.qos?l.qos<<nt.WILL_QOS_SHIFT:0,P|=l?nt.WILL_FLAG_MASK:0,P|=h?nt.CLEAN_SESSION_MASK:0,t.write(Le.Buffer.from([P])),Kr(t,d),n===5&&O.write(),ts(t,m),l&&(n===5&&L.write(),xa(t,l.topic),ts(t,l.payload)),_!=null&&ts(t,_),S!=null&&ts(t,S),!0}function PP(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=i===5?a.reasonCode:a.returnCode,l=a.properties;let h=2;if(typeof n!="number")return t.emit("error",new Error("Invalid return code")),!1;let d=null;if(i===5){if(d=jo(t,l),!d)return!1;h+=d.length}return t.write(nt.CONNACK_HEADER),Oi(t,h),t.write(a.sessionPresent?nt.SESSIONPRESENT_HEADER:xP),t.write(Le.Buffer.from([n])),d!=null&&d.write(),!0}function CP(e,t,r){Si("publish: packet: %o",e);const i=r?r.protocolVersion:4,a=e||{},n=a.qos||0,l=a.retain?nt.RETAIN_MASK:0,h=a.topic,d=a.payload||SP,m=a.messageId,_=a.properties;let S=0;if(typeof h=="string")S+=Le.Buffer.byteLength(h)+2;else if(Le.Buffer.isBuffer(h))S+=h.length+2;else return t.emit("error",new Error("Invalid topic")),!1;if(Le.Buffer.isBuffer(d)?S+=d.length:S+=Le.Buffer.byteLength(d),n&&typeof m!="number")return t.emit("error",new Error("Invalid messageId")),!1;n&&(S+=2);let R=null;if(i===5){if(R=jo(t,_),!R)return!1;S+=R.length}return t.write(nt.PUBLISH_HEADER[n][a.dup?1:0][l?1:0]),Oi(t,S),Kr(t,m6(h)),t.write(h),n>0&&Kr(t,m),R!=null&&R.write(),Si("publish: payload: %o",d),t.write(d)}function BP(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.cmd||"puback",l=a.messageId,h=a.dup&&n==="pubrel"?nt.DUP_MASK:0;let d=0;const m=a.reasonCode,_=a.properties;let S=i===5?3:2;if(n==="pubrel"&&(d=1),typeof l!="number")return t.emit("error",new Error("Invalid messageId")),!1;let R=null;if(i===5&&typeof _=="object"){if(R=Pl(t,_,r,S),!R)return!1;S+=R.length}return t.write(nt.ACKS[n][d][h][0]),Oi(t,S),Kr(t,l),i===5&&t.write(Le.Buffer.from([m])),R!==null&&R.write(),!0}function LP(e,t,r){Si("subscribe: packet: ");const i=r?r.protocolVersion:4,a=e||{},n=a.dup?nt.DUP_MASK:0,l=a.messageId,h=a.subscriptions,d=a.properties;let m=0;if(typeof l!="number")return t.emit("error",new Error("Invalid messageId")),!1;m+=2;let _=null;if(i===5){if(_=jo(t,d),!_)return!1;m+=_.length}if(typeof h=="object"&&h.length)for(let R=0;R<h.length;R+=1){const I=h[R].topic,O=h[R].qos;if(typeof I!="string")return t.emit("error",new Error("Invalid subscriptions - invalid topic")),!1;if(typeof O!="number")return t.emit("error",new Error("Invalid subscriptions - invalid qos")),!1;if(i===5){if(typeof(h[R].nl||!1)!="boolean")return t.emit("error",new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(h[R].rap||!1)!="boolean")return t.emit("error",new Error("Invalid subscriptions - invalid Retain as Published")),!1;const P=h[R].rh||0;if(typeof P!="number"||P>2)return t.emit("error",new Error("Invalid subscriptions - invalid Retain Handling")),!1}m+=Le.Buffer.byteLength(I)+2+1}else return t.emit("error",new Error("Invalid subscriptions")),!1;Si("subscribe: writing to stream: %o",nt.SUBSCRIBE_HEADER),t.write(nt.SUBSCRIBE_HEADER[1][n?1:0][0]),Oi(t,m),Kr(t,l),_!==null&&_.write();let S=!0;for(const R of h){const I=R.topic,O=R.qos,L=+R.nl,B=+R.rap,P=R.rh;let C;xa(t,I),C=nt.SUBSCRIBE_OPTIONS_QOS[O],i===5&&(C|=L?nt.SUBSCRIBE_OPTIONS_NL:0,C|=B?nt.SUBSCRIBE_OPTIONS_RAP:0,C|=P?nt.SUBSCRIBE_OPTIONS_RH[P]:0),S=t.write(Le.Buffer.from([C]))}return S}function NP(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.messageId,l=a.granted,h=a.properties;let d=0;if(typeof n!="number")return t.emit("error",new Error("Invalid messageId")),!1;if(d+=2,typeof l=="object"&&l.length)for(let _=0;_<l.length;_+=1){if(typeof l[_]!="number")return t.emit("error",new Error("Invalid qos vector")),!1;d+=1}else return t.emit("error",new Error("Invalid qos vector")),!1;let m=null;if(i===5){if(m=Pl(t,h,r,d),!m)return!1;d+=m.length}return t.write(nt.SUBACK_HEADER),Oi(t,d),Kr(t,n),m!==null&&m.write(),t.write(Le.Buffer.from(l))}function kP(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.messageId,l=a.dup?nt.DUP_MASK:0,h=a.unsubscriptions,d=a.properties;let m=0;if(typeof n!="number")return t.emit("error",new Error("Invalid messageId")),!1;if(m+=2,typeof h=="object"&&h.length)for(let R=0;R<h.length;R+=1){if(typeof h[R]!="string")return t.emit("error",new Error("Invalid unsubscriptions")),!1;m+=Le.Buffer.byteLength(h[R])+2}else return t.emit("error",new Error("Invalid unsubscriptions")),!1;let _=null;if(i===5){if(_=jo(t,d),!_)return!1;m+=_.length}t.write(nt.UNSUBSCRIBE_HEADER[1][l?1:0][0]),Oi(t,m),Kr(t,n),_!==null&&_.write();let S=!0;for(let R=0;R<h.length;R++)S=xa(t,h[R]);return S}function $P(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.messageId,l=a.dup?nt.DUP_MASK:0,h=a.granted,d=a.properties,m=a.cmd,_=0;let S=2;if(typeof n!="number")return t.emit("error",new Error("Invalid messageId")),!1;if(i===5)if(typeof h=="object"&&h.length)for(let I=0;I<h.length;I+=1){if(typeof h[I]!="number")return t.emit("error",new Error("Invalid qos vector")),!1;S+=1}else return t.emit("error",new Error("Invalid qos vector")),!1;let R=null;if(i===5){if(R=Pl(t,d,r,S),!R)return!1;S+=R.length}return t.write(nt.ACKS[m][_][l][0]),Oi(t,S),Kr(t,n),R!==null&&R.write(),i===5&&t.write(Le.Buffer.from(h)),!0}function DP(e,t,r){return t.write(nt.EMPTY[e.cmd])}function FP(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.reasonCode,l=a.properties;let h=i===5?1:0,d=null;if(i===5){if(d=Pl(t,l,r,h),!d)return!1;h+=d.length}return t.write(Le.Buffer.from([nt.codes.disconnect<<4])),Oi(t,h),i===5&&t.write(Le.Buffer.from([n])),d!==null&&d.write(),!0}function jP(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.reasonCode,l=a.properties;let h=i===5?1:0;i!==5&&t.emit("error",new Error("Invalid mqtt version for auth packet"));const d=Pl(t,l,r,h);return d?(h+=d.length,t.write(Le.Buffer.from([nt.codes.auth<<4])),Oi(t,h),t.write(Le.Buffer.from([n])),d!==null&&d.write(),!0):!1}const H1={};function Oi(e,t){if(t>nt.VARBYTEINT_MAX)return e.emit("error",new Error(`Invalid variable byte integer: ${t}`)),!1;let r=H1[t];return r||(r=Zp(t),t<16384&&(H1[t]=r)),Si("writeVarByteInt: writing to stream: %o",r),e.write(r)}function xa(e,t){const r=Le.Buffer.byteLength(t);return Kr(e,r),Si("writeString: %s",t),e.write(t,"utf8")}function q1(e,t,r){xa(e,t),xa(e,r)}function Xp(e,t){return Si("writeNumberCached: number: %d",t),Si("writeNumberCached: %o",gh[t]),e.write(gh[t])}function UP(e,t){const r=RP(t);return Si("writeNumberGenerated: %o",r),e.write(r)}function HP(e,t){const r=TP(t);return Si("write4ByteNumber: %o",r),e.write(r)}function ts(e,t){typeof t=="string"?xa(e,t):t?(Kr(e,t.length),e.write(t)):Kr(e,0)}function jo(e,t){if(typeof t!="object"||t.length!=null)return{length:1,write(){K1(e,{},0)}};let r=0;function i(n,l){const h=nt.propertiesTypes[n];let d=0;switch(h){case"byte":{if(typeof l!="boolean")return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+1;break}case"int8":{if(typeof l!="number"||l<0||l>255)return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+1;break}case"binary":{if(l&&l===null)return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+Le.Buffer.byteLength(l)+2;break}case"int16":{if(typeof l!="number"||l<0||l>65535)return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+2;break}case"int32":{if(typeof l!="number"||l<0||l>4294967295)return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+4;break}case"var":{if(typeof l!="number"||l<0||l>268435455)return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+Le.Buffer.byteLength(Zp(l));break}case"string":{if(typeof l!="string")return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+2+Le.Buffer.byteLength(l.toString());break}case"pair":{if(typeof l!="object")return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=Object.getOwnPropertyNames(l).reduce((m,_)=>{const S=l[_];return Array.isArray(S)?m+=S.reduce((R,I)=>(R+=1+2+Le.Buffer.byteLength(_.toString())+2+Le.Buffer.byteLength(I.toString()),R),0):m+=1+2+Le.Buffer.byteLength(_.toString())+2+Le.Buffer.byteLength(l[_].toString()),m},0);break}default:return e.emit("error",new Error(`Invalid property ${n}: ${l}`)),!1}return d}if(t)for(const n in t){let l=0,h=0;const d=t[n];if(Array.isArray(d))for(let m=0;m<d.length;m++){if(h=i(n,d[m]),!h)return!1;l+=h}else{if(h=i(n,d),!h)return!1;l=h}if(!l)return!1;r+=l}return{length:Le.Buffer.byteLength(Zp(r))+r,write(){K1(e,t,r)}}}function Pl(e,t,r,i){const a=["reasonString","userProperties"],n=r&&r.properties&&r.properties.maximumPacketSize?r.properties.maximumPacketSize:0;let l=jo(e,t);if(n)for(;i+l.length>n;){const h=a.shift();if(h&&t[h])delete t[h],l=jo(e,t);else return!1}return l}function W1(e,t,r){switch(nt.propertiesTypes[t]){case"byte":{e.write(Le.Buffer.from([nt.properties[t]])),e.write(Le.Buffer.from([+r]));break}case"int8":{e.write(Le.Buffer.from([nt.properties[t]])),e.write(Le.Buffer.from([r]));break}case"binary":{e.write(Le.Buffer.from([nt.properties[t]])),ts(e,r);break}case"int16":{e.write(Le.Buffer.from([nt.properties[t]])),Kr(e,r);break}case"int32":{e.write(Le.Buffer.from([nt.properties[t]])),HP(e,r);break}case"var":{e.write(Le.Buffer.from([nt.properties[t]])),Oi(e,r);break}case"string":{e.write(Le.Buffer.from([nt.properties[t]])),xa(e,r);break}case"pair":{Object.getOwnPropertyNames(r).forEach(a=>{const n=r[a];Array.isArray(n)?n.forEach(l=>{e.write(Le.Buffer.from([nt.properties[t]])),q1(e,a.toString(),l.toString())}):(e.write(Le.Buffer.from([nt.properties[t]])),q1(e,a.toString(),n.toString()))});break}default:return e.emit("error",new Error(`Invalid property ${t} value: ${r}`)),!1}}function K1(e,t,r){Oi(e,r);for(const i in t)if(Object.prototype.hasOwnProperty.call(t,i)&&t[i]!==null){const a=t[i];if(Array.isArray(a))for(let n=0;n<a.length;n++)W1(e,i,a[n]);else W1(e,i,a)}}function m6(e){return e?e instanceof Le.Buffer?e.length:Le.Buffer.byteLength(e):0}function V1(e){return typeof e=="string"||e instanceof Le.Buffer}var y6=g6;const qP=y6,WP=kr;function KP(e,t){const r=new VP;return qP(e,r,t),r.concat()}class VP extends WP{constructor(){super(),this._array=new Array(20),this._i=0}write(t){return this._array[this._i++]=t,!0}concat(){let t=0;const r=new Array(this._array.length),i=this._array;let a=0,n;for(n=0;n<i.length&&i[n]!==void 0;n++)typeof i[n]!="string"?r[n]=i[n].length:r[n]=Le.Buffer.byteLength(i[n]),t+=r[n];const l=Le.Buffer.allocUnsafe(t);for(n=0;n<i.length&&i[n]!==void 0;n++)typeof i[n]!="string"?(i[n].copy(l,a),a+=r[n]):(l.write(i[n],a),a+=r[n]);return l}}var zP=KP;uc.parser=pP.parser;uc.generate=zP;uc.writeToStream=y6;function Uo(){if(!(this instanceof Uo))return new Uo;this.nextId=Math.max(1,Math.floor(Math.random()*65535))}Uo.prototype.allocate=function(){const e=this.nextId++;return this.nextId===65536&&(this.nextId=1),e};Uo.prototype.getLastAllocated=function(){return this.nextId===1?65535:this.nextId-1};Uo.prototype.register=function(e){return!0};Uo.prototype.deallocate=function(e){};Uo.prototype.clear=function(){};var GP=Uo;function YP(e,t,r){var i=this;this._callback=e,this._args=r,this._interval=setInterval(e,t,this._args),this.reschedule=function(a){a||(a=i._interval),i._interval&&clearInterval(i._interval),i._interval=setInterval(i._callback,a,i._args)},this.clear=function(){i._interval&&(clearInterval(i._interval),i._interval=void 0)},this.destroy=function(){i._interval&&clearInterval(i._interval),i._callback=void 0,i._interval=void 0,i._args=void 0}}function ZP(){if(typeof arguments[0]!="function")throw new Error("callback needed");if(typeof arguments[1]!="number")throw new Error("interval needed");var e;if(arguments.length>0){e=new Array(arguments.length-2);for(var t=0;t<e.length;t++)e[t]=arguments[t+2]}return new YP(arguments[0],arguments[1],e)}var XP=ZP,JP=QP;function gs(e){return e instanceof Le.Buffer?Le.Buffer.from(e):new e.constructor(e.buffer.slice(),e.byteOffset,e.length)}function QP(e){if(e=e||{},e.circles)return eC(e);return e.proto?i:r;function t(a,n){for(var l=Object.keys(a),h=new Array(l.length),d=0;d<l.length;d++){var m=l[d],_=a[m];typeof _!="object"||_===null?h[m]=_:_ instanceof Date?h[m]=new Date(_):ArrayBuffer.isView(_)?h[m]=gs(_):h[m]=n(_)}return h}function r(a){if(typeof a!="object"||a===null)return a;if(a instanceof Date)return new Date(a);if(Array.isArray(a))return t(a,r);if(a instanceof Map)return new Map(t(Array.from(a),r));if(a instanceof Set)return new Set(t(Array.from(a),r));var n={};for(var l in a)if(Object.hasOwnProperty.call(a,l)!==!1){var h=a[l];typeof h!="object"||h===null?n[l]=h:h instanceof Date?n[l]=new Date(h):h instanceof Map?n[l]=new Map(t(Array.from(h),r)):h instanceof Set?n[l]=new Set(t(Array.from(h),r)):ArrayBuffer.isView(h)?n[l]=gs(h):n[l]=r(h)}return n}function i(a){if(typeof a!="object"||a===null)return a;if(a instanceof Date)return new Date(a);if(Array.isArray(a))return t(a,i);if(a instanceof Map)return new Map(t(Array.from(a),i));if(a instanceof Set)return new Set(t(Array.from(a),i));var n={};for(var l in a){var h=a[l];typeof h!="object"||h===null?n[l]=h:h instanceof Date?n[l]=new Date(h):h instanceof Map?n[l]=new Map(t(Array.from(h),i)):h instanceof Set?n[l]=new Set(t(Array.from(h),i)):ArrayBuffer.isView(h)?n[l]=gs(h):n[l]=i(h)}return n}}function eC(e){var t=[],r=[];return e.proto?n:a;function i(l,h){for(var d=Object.keys(l),m=new Array(d.length),_=0;_<d.length;_++){var S=d[_],R=l[S];if(typeof R!="object"||R===null)m[S]=R;else if(R instanceof Date)m[S]=new Date(R);else if(ArrayBuffer.isView(R))m[S]=gs(R);else{var I=t.indexOf(R);I!==-1?m[S]=r[I]:m[S]=h(R)}}return m}function a(l){if(typeof l!="object"||l===null)return l;if(l instanceof Date)return new Date(l);if(Array.isArray(l))return i(l,a);if(l instanceof Map)return new Map(i(Array.from(l),a));if(l instanceof Set)return new Set(i(Array.from(l),a));var h={};t.push(l),r.push(h);for(var d in l)if(Object.hasOwnProperty.call(l,d)!==!1){var m=l[d];if(typeof m!="object"||m===null)h[d]=m;else if(m instanceof Date)h[d]=new Date(m);else if(m instanceof Map)h[d]=new Map(i(Array.from(m),a));else if(m instanceof Set)h[d]=new Set(i(Array.from(m),a));else if(ArrayBuffer.isView(m))h[d]=gs(m);else{var _=t.indexOf(m);_!==-1?h[d]=r[_]:h[d]=a(m)}}return t.pop(),r.pop(),h}function n(l){if(typeof l!="object"||l===null)return l;if(l instanceof Date)return new Date(l);if(Array.isArray(l))return i(l,n);if(l instanceof Map)return new Map(i(Array.from(l),n));if(l instanceof Set)return new Set(i(Array.from(l),n));var h={};t.push(l),r.push(h);for(var d in l){var m=l[d];if(typeof m!="object"||m===null)h[d]=m;else if(m instanceof Date)h[d]=new Date(m);else if(m instanceof Map)h[d]=new Map(i(Array.from(m),n));else if(m instanceof Set)h[d]=new Set(i(Array.from(m),n));else if(ArrayBuffer.isView(m))h[d]=gs(m);else{var _=t.indexOf(m);_!==-1?h[d]=r[_]:h[d]=n(m)}}return t.pop(),r.pop(),h}}var tC=JP();function rC(e){const t=e.split("/");for(let r=0;r<t.length;r++)if(t[r]!=="+"){if(t[r]==="#")return r===t.length-1;if(t[r].indexOf("+")!==-1||t[r].indexOf("#")!==-1)return!1}return!0}function iC(e){if(e.length===0)return"empty_topic_list";for(let t=0;t<e.length;t++)if(!rC(e[t]))return e[t];return null}var nC={validateTopics:iC};const b6=kr.EventEmitter,yh=D3,oC=mO,aC=AI,w6=uc,sC=GP,fC=Tl.Writable,lC=Ye,uC=XP,_6=tC,M6=nC,pc=Mg,He=co("mqttjs:client"),Lg=ye?ye.nextTick:function(e){setTimeout(e,0)},Ng=Ze.setImmediate||function(e){Lg(e)},z1={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0},bh={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};function hC(){return"mqttjs_"+Math.random().toString(16).substr(2,8)}function cC(e,t){if(e.options.protocolVersion===5&&t.cmd==="publish"){let r;t.properties&&(r=t.properties.topicAlias);const i=t.topic.toString();if(e.topicAliasSend)if(r){if(i.length!==0&&(He("applyTopicAlias :: register topic: %s - alias: %d",i,r),!e.topicAliasSend.put(i,r)))return He("applyTopicAlias :: error out of range. topic: %s - alias: %d",i,r),new Error("Sending Topic Alias out of range")}else i.length!==0&&(e.options.autoAssignTopicAlias?(r=e.topicAliasSend.getAliasByTopic(i),r?(t.topic="",t.properties={...t.properties,topicAlias:r},He("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",i,r)):(r=e.topicAliasSend.getLruAlias(),e.topicAliasSend.put(i,r),t.properties={...t.properties,topicAlias:r},He("applyTopicAlias :: auto assign topic: %s - alias: %d",i,r))):e.options.autoUseTopicAlias&&(r=e.topicAliasSend.getAliasByTopic(i),r&&(t.topic="",t.properties={...t.properties,topicAlias:r},He("applyTopicAlias :: auto use topic: %s - alias: %d",i,r))));else if(r)return He("applyTopicAlias :: error out of range. topic: %s - alias: %d",i,r),new Error("Sending Topic Alias out of range")}}function S6(e,t){let r;t.properties&&(r=t.properties.topicAlias);let i=t.topic.toString();if(i.length===0){if(typeof r>"u")return new Error("Unregistered Topic Alias");if(i=e.topicAliasSend.getTopicByAlias(r),typeof i>"u")return new Error("Unregistered Topic Alias");t.topic=i}r&&delete t.properties.topicAlias}function ms(e,t,r){He("sendPacket :: packet: %O",t),He("sendPacket :: emitting `packetsend`"),e.emit("packetsend",t),He("sendPacket :: writing to stream");const i=w6.writeToStream(t,e.stream,e.options);He("sendPacket :: writeToStream result %s",i),!i&&r&&r!==_r?(He("sendPacket :: handle events on `drain` once through callback."),e.stream.once("drain",r)):r&&(He("sendPacket :: invoking cb"),r())}function dC(e){e&&(He("flush: queue exists? %b",!!e),Object.keys(e).forEach(function(t){typeof e[t].cb=="function"&&(e[t].cb(new Error("Connection closed")),delete e[t])}))}function pC(e){e&&(He("flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(e).forEach(function(t){e[t].volatile&&typeof e[t].cb=="function"&&(e[t].cb(new Error("Connection closed")),delete e[t])}))}function G1(e,t,r,i){He("storeAndSend :: store packet with cmd %s to outgoingStore",t.cmd);let a=t,n;if(a.cmd==="publish"&&(a=_6(t),n=S6(e,a),n))return r&&r(n);e.outgoingStore.put(a,function(h){if(h)return r&&r(h);i(),ms(e,t,r)})}function _r(e){He("nop ::",e)}function yt(e,t){let r;const i=this;if(!(this instanceof yt))return new yt(e,t);this.options=t||{};for(r in z1)typeof this.options[r]>"u"?this.options[r]=z1[r]:this.options[r]=t[r];He("MqttClient :: options.protocol",t.protocol),He("MqttClient :: options.protocolVersion",t.protocolVersion),He("MqttClient :: options.username",t.username),He("MqttClient :: options.keepalive",t.keepalive),He("MqttClient :: options.reconnectPeriod",t.reconnectPeriod),He("MqttClient :: options.rejectUnauthorized",t.rejectUnauthorized),He("MqttClient :: options.topicAliasMaximum",t.topicAliasMaximum),this.options.clientId=typeof t.clientId=="string"?t.clientId:hC(),He("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=t.protocolVersion===5&&t.customHandleAcks?t.customHandleAcks:function(){arguments[3](0)},this.streamBuilder=e,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new sC:this.options.messageIdProvider,this.outgoingStore=t.outgoingStore||new yh,this.incomingStore=t.incomingStore||new yh,this.queueQoSZero=t.queueQoSZero===void 0?!0:t.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.pingTimer=null,this.connected=!1,this.disconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,t.topicAliasMaximum>0&&(t.topicAliasMaximum>65535?He("MqttClient :: options.topicAliasMaximum is out of range"):this.topicAliasRecv=new oC(t.topicAliasMaximum)),this.on("connect",function(){const a=this.queue;function n(){const l=a.shift();He("deliver :: entry %o",l);let h=null;if(!l){i._resubscribe();return}h=l.packet,He("deliver :: call _sendPacket for %o",h);let d=!0;h.messageId&&h.messageId!==0&&(i.messageIdProvider.register(h.messageId)||(d=!1)),d?i._sendPacket(h,function(m){l.cb&&l.cb(m),n()}):(He("messageId: %d has already used. The message is skipped and removed.",h.messageId),n())}He("connect :: sending queued packets"),n()}),this.on("close",function(){He("close :: connected set to `false`"),this.connected=!1,He("close :: clearing connackTimer"),clearTimeout(this.connackTimer),He("close :: clearing ping timer"),i.pingTimer!==null&&(i.pingTimer.clear(),i.pingTimer=null),this.topicAliasRecv&&this.topicAliasRecv.clear(),He("close :: calling _setupReconnect"),this._setupReconnect()}),b6.call(this),He("MqttClient :: setting up stream"),this._setupStream()}lC(yt,b6);yt.prototype._setupStream=function(){const e=this,t=new fC,r=w6.parser(this.options);let i=null;const a=[];He("_setupStream :: calling method to clear reconnect"),this._clearReconnect(),He("_setupStream :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),r.on("packet",function(m){He("parser :: on packet push to packets array."),a.push(m)});function n(){if(a.length)Lg(l);else{const m=i;i=null,m()}}function l(){He("work :: getting next packet in queue");const m=a.shift();if(m)He("work :: packet pulled from queue"),e._handlePacket(m,n);else{He("work :: no packets in queue");const _=i;i=null,He("work :: done flag is %s",!!_),_&&_()}}t._write=function(m,_,S){i=S,He("writable stream :: parsing buffer"),r.parse(m),l()};function h(m){He("streamErrorHandler :: error",m.message),m.code?(He("streamErrorHandler :: emitting error"),e.emit("error",m)):_r(m)}He("_setupStream :: pipe stream to writable stream"),this.stream.pipe(t),this.stream.on("error",h),this.stream.on("close",function(){He("(%s)stream :: on close",e.options.clientId),pC(e.outgoing),He("stream: emit close to MqttClient"),e.emit("close")}),He("_setupStream: sending packet `connect`");const d=Object.create(this.options);if(d.cmd="connect",this.topicAliasRecv&&(d.properties||(d.properties={}),this.topicAliasRecv&&(d.properties.topicAliasMaximum=this.topicAliasRecv.max)),ms(this,d),r.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return e.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){const m=pc({cmd:"auth",reasonCode:0},this.options.authPacket);ms(this,m)}}this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(function(){He("!!connectTimeout hit!! Calling _cleanUp with force `true`"),e._cleanUp(!0)},this.options.connectTimeout)};yt.prototype._handlePacket=function(e,t){const r=this.options;if(r.protocolVersion===5&&r.properties&&r.properties.maximumPacketSize&&r.properties.maximumPacketSize<e.length)return this.emit("error",new Error("exceeding packets size "+e.cmd)),this.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),this;switch(He("_handlePacket :: emitting packetreceive"),this.emit("packetreceive",e),e.cmd){case"publish":this._handlePublish(e,t);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":this._handleAck(e),t();break;case"pubrel":this._handlePubrel(e,t);break;case"connack":this._handleConnack(e),t();break;case"auth":this._handleAuth(e),t();break;case"pingresp":this._handlePingresp(e),t();break;case"disconnect":this._handleDisconnect(e),t();break}};yt.prototype._checkDisconnecting=function(e){return this.disconnecting&&(e&&e!==_r?e(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting};yt.prototype.publish=function(e,t,r,i){He("publish :: message `%s` to topic `%s`",t,e);const a=this.options;if(typeof r=="function"&&(i=r,r=null),r=pc({qos:0,retain:!1,dup:!1},r),this._checkDisconnecting(i))return this;const l=this,h=function(){let d=0;if((r.qos===1||r.qos===2)&&(d=l._nextId(),d===null))return He("No messageId left"),!1;const m={cmd:"publish",topic:e,payload:t,qos:r.qos,retain:r.retain,messageId:d,dup:r.dup};switch(a.protocolVersion===5&&(m.properties=r.properties),He("publish :: qos",r.qos),r.qos){case 1:case 2:l.outgoing[m.messageId]={volatile:!1,cb:i||_r},He("MqttClient:publish: packet cmd: %s",m.cmd),l._sendPacket(m,void 0,r.cbStorePut);break;default:He("MqttClient:publish: packet cmd: %s",m.cmd),l._sendPacket(m,i,r.cbStorePut);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!h())&&this._storeProcessingQueue.push({invoke:h,cbStorePut:r.cbStorePut,callback:i}),this};yt.prototype.subscribe=function(){const e=this,t=new Array(arguments.length);for(let S=0;S<arguments.length;S++)t[S]=arguments[S];const r=[];let i=t.shift();const a=i.resubscribe;let n=t.pop()||_r,l=t.pop();const h=this.options.protocolVersion;delete i.resubscribe,typeof i=="string"&&(i=[i]),typeof n!="function"&&(l=n,n=_r);const d=M6.validateTopics(i);if(d!==null)return Ng(n,new Error("Invalid topic "+d)),this;if(this._checkDisconnecting(n))return He("subscribe: discconecting true"),this;const m={qos:0};if(h===5&&(m.nl=!1,m.rap=!1,m.rh=0),l=pc(m,l),Array.isArray(i)?i.forEach(function(S){if(He("subscribe: array topic %s",S),!Object.prototype.hasOwnProperty.call(e._resubscribeTopics,S)||e._resubscribeTopics[S].qos<l.qos||a){const R={topic:S,qos:l.qos};h===5&&(R.nl=l.nl,R.rap=l.rap,R.rh=l.rh,R.properties=l.properties),He("subscribe: pushing topic `%s` and qos `%s` to subs list",R.topic,R.qos),r.push(R)}}):Object.keys(i).forEach(function(S){if(He("subscribe: object topic %s",S),!Object.prototype.hasOwnProperty.call(e._resubscribeTopics,S)||e._resubscribeTopics[S].qos<i[S].qos||a){const R={topic:S,qos:i[S].qos};h===5&&(R.nl=i[S].nl,R.rap=i[S].rap,R.rh=i[S].rh,R.properties=l.properties),He("subscribe: pushing `%s` to subs list",R),r.push(R)}}),!r.length)return n(null,[]),this;const _=function(){const S=e._nextId();if(S===null)return He("No messageId left"),!1;const R={cmd:"subscribe",subscriptions:r,qos:1,retain:!1,dup:!1,messageId:S};if(l.properties&&(R.properties=l.properties),e.options.resubscribe){He("subscribe :: resubscribe true");const I=[];r.forEach(function(O){if(e.options.reconnectPeriod>0){const L={qos:O.qos};h===5&&(L.nl=O.nl||!1,L.rap=O.rap||!1,L.rh=O.rh||0,L.properties=O.properties),e._resubscribeTopics[O.topic]=L,I.push(O.topic)}}),e.messageIdToTopic[R.messageId]=I}return e.outgoing[R.messageId]={volatile:!0,cb:function(I,O){if(!I){const L=O.granted;for(let B=0;B<L.length;B+=1)r[B].qos=L[B]}n(I,r)}},He("subscribe :: call _sendPacket"),e._sendPacket(R),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!_())&&this._storeProcessingQueue.push({invoke:_,callback:n}),this};yt.prototype.unsubscribe=function(){const e=this,t=new Array(arguments.length);for(let h=0;h<arguments.length;h++)t[h]=arguments[h];let r=t.shift(),i=t.pop()||_r,a=t.pop();typeof r=="string"&&(r=[r]),typeof i!="function"&&(a=i,i=_r);const n=M6.validateTopics(r);if(n!==null)return Ng(i,new Error("Invalid topic "+n)),this;if(e._checkDisconnecting(i))return this;const l=function(){const h=e._nextId();if(h===null)return He("No messageId left"),!1;const d={cmd:"unsubscribe",qos:1,messageId:h};return typeof r=="string"?d.unsubscriptions=[r]:Array.isArray(r)&&(d.unsubscriptions=r),e.options.resubscribe&&d.unsubscriptions.forEach(function(m){delete e._resubscribeTopics[m]}),typeof a=="object"&&a.properties&&(d.properties=a.properties),e.outgoing[d.messageId]={volatile:!0,cb:i},He("unsubscribe: call _sendPacket"),e._sendPacket(d),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!l())&&this._storeProcessingQueue.push({invoke:l,callback:i}),this};yt.prototype.end=function(e,t,r){const i=this;He("end :: (%s)",this.options.clientId),(e==null||typeof e!="boolean")&&(r=t||_r,t=e,e=!1,typeof t!="object"&&(r=t,t=null,typeof r!="function"&&(r=_r))),typeof t!="object"&&(r=t,t=null),He("end :: cb? %s",!!r),r=r||_r;function a(){He("end :: closeStores: closing incoming and outgoing stores"),i.disconnected=!0,i.incomingStore.close(function(l){i.outgoingStore.close(function(h){if(He("end :: closeStores: emitting end"),i.emit("end"),r){const d=l||h;He("end :: closeStores: invoking callback with args"),r(d)}})}),i._deferredReconnect&&i._deferredReconnect()}function n(){He("end :: (%s) :: finish :: calling _cleanUp with force %s",i.options.clientId,e),i._cleanUp(e,()=>{He("end :: finish :: calling process.nextTick on closeStores"),Lg(a.bind(i))},t)}return this.disconnecting?(r(),this):(this._clearReconnect(),this.disconnecting=!0,!e&&Object.keys(this.outgoing).length>0?(He("end :: (%s) :: calling finish in 10ms once outgoing is empty",i.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,n,10))):(He("end :: (%s) :: immediately calling finish",i.options.clientId),n()),this)};yt.prototype.removeOutgoingMessage=function(e){const t=this.outgoing[e]?this.outgoing[e].cb:null;return delete this.outgoing[e],this.outgoingStore.del({messageId:e},function(){t(new Error("Message removed"))}),this};yt.prototype.reconnect=function(e){He("client reconnect");const t=this,r=function(){e?(t.options.incomingStore=e.incomingStore,t.options.outgoingStore=e.outgoingStore):(t.options.incomingStore=null,t.options.outgoingStore=null),t.incomingStore=t.options.incomingStore||new yh,t.outgoingStore=t.options.outgoingStore||new yh,t.disconnecting=!1,t.disconnected=!1,t._deferredReconnect=null,t._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=r:r(),this};yt.prototype._reconnect=function(){He("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this._setupStream()}),He("client already connected. disconnecting first.")):(He("_reconnect: calling _setupStream"),this._setupStream())};yt.prototype._setupReconnect=function(){const e=this;!e.disconnecting&&!e.reconnectTimer&&e.options.reconnectPeriod>0?(this.reconnecting||(He("_setupReconnect :: emit `offline` state"),this.emit("offline"),He("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),He("_setupReconnect :: setting reconnectTimer for %d ms",e.options.reconnectPeriod),e.reconnectTimer=setInterval(function(){He("reconnectTimer :: reconnect triggered!"),e._reconnect()},e.options.reconnectPeriod)):He("_setupReconnect :: doing nothing...")};yt.prototype._clearReconnect=function(){He("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)};yt.prototype._cleanUp=function(e,t){const r=arguments[2];if(t&&(He("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",t)),He("_cleanUp :: forced? %s",e),e)this.options.reconnectPeriod===0&&this.options.clean&&dC(this.outgoing),He("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{const i=pc({cmd:"disconnect"},r);He("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(i,Ng.bind(null,this.stream.end.bind(this.stream)))}this.disconnecting||(He("_cleanUp :: client not disconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this.pingTimer!==null&&(He("_cleanUp :: clearing pingTimer"),this.pingTimer.clear(),this.pingTimer=null),t&&!this.connected&&(He("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",t),t())};yt.prototype._sendPacket=function(e,t,r){He("_sendPacket :: (%s) ::  start",this.options.clientId),r=r||_r,t=t||_r;const i=cC(this,e);if(i){t(i);return}if(!this.connected){if(e.cmd==="auth"){this._shiftPingInterval(),ms(this,e,t);return}He("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(e,t,r);return}switch(this._shiftPingInterval(),e.cmd){case"publish":break;case"pubrel":G1(this,e,t,r);return;default:ms(this,e,t);return}switch(e.qos){case 2:case 1:G1(this,e,t,r);break;case 0:default:ms(this,e,t);break}He("_sendPacket :: (%s) ::  end",this.options.clientId)};yt.prototype._storePacket=function(e,t,r){He("_storePacket :: packet: %o",e),He("_storePacket :: cb? %s",!!t),r=r||_r;let i=e;if(i.cmd==="publish"){i=_6(e);const a=S6(this,i);if(a)return t&&t(a)}(i.qos||0)===0&&this.queueQoSZero||i.cmd!=="publish"?this.queue.push({packet:i,cb:t}):i.qos>0?(t=this.outgoing[i.messageId]?this.outgoing[i.messageId].cb:null,this.outgoingStore.put(i,function(a){if(a)return t&&t(a);r()})):t&&t(new Error("No connection to broker"))};yt.prototype._setupPingTimer=function(){He("_setupPingTimer :: keepalive %d (seconds)",this.options.keepalive);const e=this;!this.pingTimer&&this.options.keepalive&&(this.pingResp=!0,this.pingTimer=uC(function(){e._checkPing()},this.options.keepalive*1e3))};yt.prototype._shiftPingInterval=function(){this.pingTimer&&this.options.keepalive&&this.options.reschedulePings&&this.pingTimer.reschedule(this.options.keepalive*1e3)};yt.prototype._checkPing=function(){He("_checkPing :: checking ping..."),this.pingResp?(He("_checkPing :: ping response received. Clearing flag and sending `pingreq`"),this.pingResp=!1,this._sendPacket({cmd:"pingreq"})):(He("_checkPing :: calling _cleanUp with force true"),this._cleanUp(!0))};yt.prototype._handlePingresp=function(){this.pingResp=!0};yt.prototype._handleConnack=function(e){He("_handleConnack");const t=this.options,i=t.protocolVersion===5?e.reasonCode:e.returnCode;if(clearTimeout(this.connackTimer),delete this.topicAliasSend,e.properties){if(e.properties.topicAliasMaximum){if(e.properties.topicAliasMaximum>65535){this.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}e.properties.topicAliasMaximum>0&&(this.topicAliasSend=new aC(e.properties.topicAliasMaximum))}e.properties.serverKeepAlive&&t.keepalive&&(t.keepalive=e.properties.serverKeepAlive,this._shiftPingInterval()),e.properties.maximumPacketSize&&(t.properties||(t.properties={}),t.properties.maximumPacketSize=e.properties.maximumPacketSize)}if(i===0)this.reconnecting=!1,this._onConnect(e);else if(i>0){const a=new Error("Connection refused: "+bh[i]);a.code=i,this.emit("error",a)}};yt.prototype._handleAuth=function(e){const r=this.options.protocolVersion,i=r===5?e.reasonCode:e.returnCode;if(r!==5){const n=new Error("Protocol error: Auth packets are only supported in MQTT 5. Your version:"+r);n.code=i,this.emit("error",n);return}const a=this;this.handleAuth(e,function(n,l){if(n){a.emit("error",n);return}if(i===24)a.reconnecting=!1,a._sendPacket(l);else{const h=new Error("Connection refused: "+bh[i]);n.code=i,a.emit("error",h)}})};yt.prototype.handleAuth=function(e,t){t()};yt.prototype._handlePublish=function(e,t){He("_handlePublish: packet %o",e),t=typeof t<"u"?t:_r;let r=e.topic.toString();const i=e.payload,a=e.qos,n=e.messageId,l=this,h=this.options,d=[0,16,128,131,135,144,145,151,153];if(this.options.protocolVersion===5){let m;if(e.properties&&(m=e.properties.topicAlias),typeof m<"u")if(r.length===0)if(m>0&&m<=65535){const _=this.topicAliasRecv.getTopicByAlias(m);if(_)r=_,He("_handlePublish :: topic complemented by alias. topic: %s - alias: %d",r,m);else{He("_handlePublish :: unregistered topic alias. alias: %d",m),this.emit("error",new Error("Received unregistered Topic Alias"));return}}else{He("_handlePublish :: topic alias out of range. alias: %d",m),this.emit("error",new Error("Received Topic Alias is out of range"));return}else if(this.topicAliasRecv.put(r,m))He("_handlePublish :: registered topic: %s - alias: %d",r,m);else{He("_handlePublish :: topic alias out of range. alias: %d",m),this.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(He("_handlePublish: qos %d",a),a){case 2:{h.customHandleAcks(r,i,e,function(m,_){if(m instanceof Error||(_=m,m=null),m)return l.emit("error",m);if(d.indexOf(_)===-1)return l.emit("error",new Error("Wrong reason code for pubrec"));_?l._sendPacket({cmd:"pubrec",messageId:n,reasonCode:_},t):l.incomingStore.put(e,function(){l._sendPacket({cmd:"pubrec",messageId:n},t)})});break}case 1:{h.customHandleAcks(r,i,e,function(m,_){if(m instanceof Error||(_=m,m=null),m)return l.emit("error",m);if(d.indexOf(_)===-1)return l.emit("error",new Error("Wrong reason code for puback"));_||l.emit("message",r,i,e),l.handleMessage(e,function(S){if(S)return t&&t(S);l._sendPacket({cmd:"puback",messageId:n,reasonCode:_},t)})});break}case 0:this.emit("message",r,i,e),this.handleMessage(e,t);break;default:He("_handlePublish: unknown QoS. Doing nothing.");break}};yt.prototype.handleMessage=function(e,t){t()};yt.prototype._handleAck=function(e){const t=e.messageId,r=e.cmd;let i=null;const a=this.outgoing[t]?this.outgoing[t].cb:null,n=this;let l;if(!a){He("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(He("_handleAck :: packet type",r),r){case"pubcomp":case"puback":{const h=e.reasonCode;h&&h>0&&h!==16&&(l=new Error("Publish error: "+bh[h]),l.code=h,a(l,e)),delete this.outgoing[t],this.outgoingStore.del(e,a),this.messageIdProvider.deallocate(t),this._invokeStoreProcessingQueue();break}case"pubrec":{i={cmd:"pubrel",qos:2,messageId:t};const h=e.reasonCode;h&&h>0&&h!==16?(l=new Error("Publish error: "+bh[h]),l.code=h,a(l,e)):this._sendPacket(i);break}case"suback":{delete this.outgoing[t],this.messageIdProvider.deallocate(t);for(let h=0;h<e.granted.length;h++)if(e.granted[h]&128){const d=this.messageIdToTopic[t];d&&d.forEach(function(m){delete n._resubscribeTopics[m]})}this._invokeStoreProcessingQueue(),a(null,e);break}case"unsuback":{delete this.outgoing[t],this.messageIdProvider.deallocate(t),this._invokeStoreProcessingQueue(),a(null);break}default:n.emit("error",new Error("unrecognized packet type"))}this.disconnecting&&Object.keys(this.outgoing).length===0&&this.emit("outgoingEmpty")};yt.prototype._handlePubrel=function(e,t){He("handling pubrel packet"),t=typeof t<"u"?t:_r;const r=e.messageId,i=this,a={cmd:"pubcomp",messageId:r};i.incomingStore.get(e,function(n,l){n?i._sendPacket(a,t):(i.emit("message",l.topic,l.payload,l),i.handleMessage(l,function(h){if(h)return t(h);i.incomingStore.del(l,_r),i._sendPacket(a,t)}))})};yt.prototype._handleDisconnect=function(e){this.emit("disconnect",e)};yt.prototype._nextId=function(){return this.messageIdProvider.allocate()};yt.prototype.getLastMessageId=function(){return this.messageIdProvider.getLastAllocated()};yt.prototype._resubscribe=function(){He("_resubscribe");const e=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion===5&&!this.connackPacket.sessionPresent)&&e.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){He("_resubscribe: protocolVersion 5");for(let t=0;t<e.length;t++){const r={};r[e[t]]=this._resubscribeTopics[e[t]],r.resubscribe=!0,this.subscribe(r,{properties:r[e[t]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1};yt.prototype._onConnect=function(e){if(this.disconnected){this.emit("connect",e);return}const t=this;this.connackPacket=e,this.messageIdProvider.clear(),this._setupPingTimer(),this.connected=!0;function r(){let i=t.outgoingStore.createStream();function a(){t._storeProcessing=!1,t._packetIdsDuringStoreProcessing={}}t.once("close",n),i.on("error",function(h){a(),t._flushStoreProcessingQueue(),t.removeListener("close",n),t.emit("error",h)});function n(){i.destroy(),i=null,t._flushStoreProcessingQueue(),a()}function l(){if(!i)return;t._storeProcessing=!0;const h=i.read(1);let d;if(!h){i.once("readable",l);return}if(t._packetIdsDuringStoreProcessing[h.messageId]){l();return}!t.disconnecting&&!t.reconnectTimer?(d=t.outgoing[h.messageId]?t.outgoing[h.messageId].cb:null,t.outgoing[h.messageId]={volatile:!1,cb:function(m,_){d&&d(m,_),l()}},t._packetIdsDuringStoreProcessing[h.messageId]=!0,t.messageIdProvider.register(h.messageId)?t._sendPacket(h):He("messageId: %d has already used.",h.messageId)):i.destroy&&i.destroy()}i.on("end",function(){let h=!0;for(const d in t._packetIdsDuringStoreProcessing)if(!t._packetIdsDuringStoreProcessing[d]){h=!1;break}h?(a(),t.removeListener("close",n),t._invokeAllStoreProcessingQueue(),t.emit("connect",e)):r()}),l()}r()};yt.prototype._invokeStoreProcessingQueue=function(){if(this._storeProcessingQueue.length>0){const e=this._storeProcessingQueue[0];if(e&&e.invoke())return this._storeProcessingQueue.shift(),!0}return!1};yt.prototype._invokeAllStoreProcessingQueue=function(){for(;this._invokeStoreProcessingQueue(););};yt.prototype._flushStoreProcessingQueue=function(){for(const e of this._storeProcessingQueue)e.cbStorePut&&e.cbStorePut(new Error("Connection closed")),e.callback&&e.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)};var vC=yt,wh={exports:{}};/*! https://mths.be/punycode v1.4.1 by @mathias */wh.exports;(function(e,t){(function(r){var i=t&&!t.nodeType&&t,a=e&&!e.nodeType&&e,n=typeof Ze=="object"&&Ze;(n.global===n||n.window===n||n.self===n)&&(r=n);var l,h=2147483647,d=36,m=1,_=26,S=38,R=700,I=72,O=128,L="-",B=/^xn--/,P=/[^\x20-\x7E]/,C=/[\x2E\u3002\uFF0E\uFF61]/g,N={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},$=d-m,W=Math.floor,G=String.fromCharCode,re;function J(s){throw new RangeError(N[s])}function K(s,v){for(var T=s.length,D=[];T--;)D[T]=v(s[T]);return D}function se(s,v){var T=s.split("@"),D="";T.length>1&&(D=T[0]+"@",s=T[1]),s=s.replace(C,".");var Y=s.split("."),Q=K(Y,v).join(".");return D+Q}function M(s){for(var v=[],T=0,D=s.length,Y,Q;T<D;)Y=s.charCodeAt(T++),Y>=55296&&Y<=56319&&T<D?(Q=s.charCodeAt(T++),(Q&64512)==56320?v.push(((Y&1023)<<10)+(Q&1023)+65536):(v.push(Y),T--)):v.push(Y);return v}function o(s){return K(s,function(v){var T="";return v>65535&&(v-=65536,T+=G(v>>>10&1023|55296),v=56320|v&1023),T+=G(v),T}).join("")}function f(s){return s-48<10?s-22:s-65<26?s-65:s-97<26?s-97:d}function u(s,v){return s+22+75*(s<26)-((v!=0)<<5)}function c(s,v,T){var D=0;for(s=T?W(s/R):s>>1,s+=W(s/v);s>$*_>>1;D+=d)s=W(s/$);return W(D+($+1)*s/(s+S))}function p(s){var v=[],T=s.length,D,Y=0,Q=O,A=I,E,q,V,X,b,y,F,U,Z;for(E=s.lastIndexOf(L),E<0&&(E=0),q=0;q<E;++q)s.charCodeAt(q)>=128&&J("not-basic"),v.push(s.charCodeAt(q));for(V=E>0?E+1:0;V<T;){for(X=Y,b=1,y=d;V>=T&&J("invalid-input"),F=f(s.charCodeAt(V++)),(F>=d||F>W((h-Y)/b))&&J("overflow"),Y+=F*b,U=y<=A?m:y>=A+_?_:y-A,!(F<U);y+=d)Z=d-U,b>W(h/Z)&&J("overflow"),b*=Z;D=v.length+1,A=c(Y-X,D,X==0),W(Y/D)>h-Q&&J("overflow"),Q+=W(Y/D),Y%=D,v.splice(Y++,0,Q)}return o(v)}function w(s){var v,T,D,Y,Q,A,E,q,V,X,b,y=[],F,U,Z,j;for(s=M(s),F=s.length,v=O,T=0,Q=I,A=0;A<F;++A)b=s[A],b<128&&y.push(G(b));for(D=Y=y.length,Y&&y.push(L);D<F;){for(E=h,A=0;A<F;++A)b=s[A],b>=v&&b<E&&(E=b);for(U=D+1,E-v>W((h-T)/U)&&J("overflow"),T+=(E-v)*U,v=E,A=0;A<F;++A)if(b=s[A],b<v&&++T>h&&J("overflow"),b==v){for(q=T,V=d;X=V<=Q?m:V>=Q+_?_:V-Q,!(q<X);V+=d)j=q-X,Z=d-X,y.push(G(u(X+j%Z,0))),q=W(j/Z);y.push(G(u(q,0))),Q=c(T,U,D==Y),T=0,++D}++T,++v}return y.join("")}function x(s){return se(s,function(v){return B.test(v)?p(v.slice(4).toLowerCase()):v})}function g(s){return se(s,function(v){return P.test(v)?"xn--"+w(v):v})}if(l={version:"1.4.1",ucs2:{decode:M,encode:o},decode:p,encode:w,toASCII:g,toUnicode:x},i&&a)if(e.exports==i)a.exports=l;else for(re in l)l.hasOwnProperty(re)&&(i[re]=l[re]);else r.punycode=l})(Ze)})(wh,wh.exports);var gC=wh.exports;const mC=Vo(gC);function yC(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var bC=function(e,t,r,i){t=t||"&",r=r||"=";var a={};if(typeof e!="string"||e.length===0)return a;var n=/\+/g;e=e.split(t);var l=1e3;i&&typeof i.maxKeys=="number"&&(l=i.maxKeys);var h=e.length;l>0&&h>l&&(h=l);for(var d=0;d<h;++d){var m=e[d].replace(n,"%20"),_=m.indexOf(r),S,R,I,O;_>=0?(S=m.substr(0,_),R=m.substr(_+1)):(S=m,R=""),I=decodeURIComponent(S),O=decodeURIComponent(R),yC(a,I)?wC(a[I])?a[I].push(O):a[I]=[a[I],O]:a[I]=O}return a},wC=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"},Sf=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},_C=function(e,t,r,i){return t=t||"&",r=r||"=",e===null&&(e=void 0),typeof e=="object"?Y1(SC(e),function(a){var n=encodeURIComponent(Sf(a))+r;return MC(e[a])?Y1(e[a],function(l){return n+encodeURIComponent(Sf(l))}).join(t):n+encodeURIComponent(Sf(e[a]))}).join(t):i?encodeURIComponent(Sf(i))+r+encodeURIComponent(Sf(e)):""},MC=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"};function Y1(e,t){if(e.map)return e.map(t);for(var r=[],i=0;i<e.length;i++)r.push(t(e[i],i));return r}var SC=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},x6,E6,xC=E6=bC,EC=x6=_C;function RC(e){return encodeURIComponent(e)}function AC(e){return decodeURIComponent(e)}var TC={decode:xC,encode:EC,parse:E6,stringify:x6,escape:RC,unescape:AC},OC={isString:function(e){return typeof e=="string"},isObject:function(e){return typeof e=="object"&&e!==null},isNull:function(e){return e===null},isNullOrUndefined:function(e){return e==null}},IC=mC,ln=OC,PC=Cl,CC=WC,R6=KC,BC=qC,LC=bi;function bi(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var NC=/^([a-z0-9.+-]+:)/i,kC=/:[0-9]*$/,$C=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,DC=["<",">",'"',"`"," ","\r",`
+`,"	"],FC=["{","}","|","\\","^","`"].concat(DC),Jp=["'"].concat(FC),Z1=["%","/","?",";","#"].concat(Jp),X1=["/","?","#"],jC=255,J1=/^[+a-z0-9A-Z_-]{0,63}$/,UC=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,HC={javascript:!0,"javascript:":!0},Qp={javascript:!0,"javascript:":!0},ys={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},ev=TC;function Cl(e,t,r){if(e&&ln.isObject(e)&&e instanceof bi)return e;var i=new bi;return i.parse(e,t,r),i}bi.prototype.parse=function(e,t,r){if(!ln.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),a=i!==-1&&i<e.indexOf("#")?"?":"#",n=e.split(a),l=/\\/g;n[0]=n[0].replace(l,"/"),e=n.join(a);var h=e;if(h=h.trim(),!r&&e.split("#").length===1){var d=$C.exec(h);if(d)return this.path=h,this.href=h,this.pathname=d[1],d[2]?(this.search=d[2],t?this.query=ev.parse(this.search.substr(1)):this.query=this.search.substr(1)):t&&(this.search="",this.query={}),this}var m=NC.exec(h);if(m){m=m[0];var _=m.toLowerCase();this.protocol=_,h=h.substr(m.length)}if(r||m||h.match(/^\/\/[^@\/]+@[^@\/]+/)){var S=h.substr(0,2)==="//";S&&!(m&&Qp[m])&&(h=h.substr(2),this.slashes=!0)}if(!Qp[m]&&(S||m&&!ys[m])){for(var R=-1,I=0;I<X1.length;I++){var O=h.indexOf(X1[I]);O!==-1&&(R===-1||O<R)&&(R=O)}var L,B;R===-1?B=h.lastIndexOf("@"):B=h.lastIndexOf("@",R),B!==-1&&(L=h.slice(0,B),h=h.slice(B+1),this.auth=decodeURIComponent(L)),R=-1;for(var I=0;I<Z1.length;I++){var O=h.indexOf(Z1[I]);O!==-1&&(R===-1||O<R)&&(R=O)}R===-1&&(R=h.length),this.host=h.slice(0,R),h=h.slice(R),this.parseHost(),this.hostname=this.hostname||"";var P=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!P)for(var C=this.hostname.split(/\./),I=0,N=C.length;I<N;I++){var $=C[I];if($&&!$.match(J1)){for(var W="",G=0,re=$.length;G<re;G++)$.charCodeAt(G)>127?W+="x":W+=$[G];if(!W.match(J1)){var J=C.slice(0,I),K=C.slice(I+1),se=$.match(UC);se&&(J.push(se[1]),K.unshift(se[2])),K.length&&(h="/"+K.join(".")+h),this.hostname=J.join(".");break}}}this.hostname.length>jC?this.hostname="":this.hostname=this.hostname.toLowerCase(),P||(this.hostname=IC.toASCII(this.hostname));var M=this.port?":"+this.port:"",o=this.hostname||"";this.host=o+M,this.href+=this.host,P&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),h[0]!=="/"&&(h="/"+h))}if(!HC[_])for(var I=0,N=Jp.length;I<N;I++){var f=Jp[I];if(h.indexOf(f)!==-1){var u=encodeURIComponent(f);u===f&&(u=escape(f)),h=h.split(f).join(u)}}var c=h.indexOf("#");c!==-1&&(this.hash=h.substr(c),h=h.slice(0,c));var p=h.indexOf("?");if(p!==-1?(this.search=h.substr(p),this.query=h.substr(p+1),t&&(this.query=ev.parse(this.query)),h=h.slice(0,p)):t&&(this.search="",this.query={}),h&&(this.pathname=h),ys[_]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var M=this.pathname||"",w=this.search||"";this.path=M+w}return this.href=this.format(),this};function qC(e){return ln.isString(e)&&(e=Cl(e)),e instanceof bi?e.format():bi.prototype.format.call(e)}bi.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",i=this.hash||"",a=!1,n="";this.host?a=e+this.host:this.hostname&&(a=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(a+=":"+this.port)),this.query&&ln.isObject(this.query)&&Object.keys(this.query).length&&(n=ev.stringify(this.query));var l=this.search||n&&"?"+n||"";return t&&t.substr(-1)!==":"&&(t+=":"),this.slashes||(!t||ys[t])&&a!==!1?(a="//"+(a||""),r&&r.charAt(0)!=="/"&&(r="/"+r)):a||(a=""),i&&i.charAt(0)!=="#"&&(i="#"+i),l&&l.charAt(0)!=="?"&&(l="?"+l),r=r.replace(/[?#]/g,function(h){return encodeURIComponent(h)}),l=l.replace("#","%23"),t+a+r+l+i};function WC(e,t){return Cl(e,!1,!0).resolve(t)}bi.prototype.resolve=function(e){return this.resolveObject(Cl(e,!1,!0)).format()};function KC(e,t){return e?Cl(e,!1,!0).resolveObject(t):t}bi.prototype.resolveObject=function(e){if(ln.isString(e)){var t=new bi;t.parse(e,!1,!0),e=t}for(var r=new bi,i=Object.keys(this),a=0;a<i.length;a++){var n=i[a];r[n]=this[n]}if(r.hash=e.hash,e.href==="")return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var l=Object.keys(e),h=0;h<l.length;h++){var d=l[h];d!=="protocol"&&(r[d]=e[d])}return ys[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!ys[e.protocol]){for(var m=Object.keys(e),_=0;_<m.length;_++){var S=m[_];r[S]=e[S]}return r.href=r.format(),r}if(r.protocol=e.protocol,!e.host&&!Qp[e.protocol]){for(var N=(e.pathname||"").split("/");N.length&&!(e.host=N.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),N[0]!==""&&N.unshift(""),N.length<2&&N.unshift(""),r.pathname=N.join("/")}else r.pathname=e.pathname;if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var R=r.pathname||"",I=r.search||"";r.path=R+I}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var O=r.pathname&&r.pathname.charAt(0)==="/",L=e.host||e.pathname&&e.pathname.charAt(0)==="/",B=L||O||r.host&&e.pathname,P=B,C=r.pathname&&r.pathname.split("/")||[],N=e.pathname&&e.pathname.split("/")||[],$=r.protocol&&!ys[r.protocol];if($&&(r.hostname="",r.port=null,r.host&&(C[0]===""?C[0]=r.host:C.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(N[0]===""?N[0]=e.host:N.unshift(e.host)),e.host=null),B=B&&(N[0]===""||C[0]==="")),L)r.host=e.host||e.host===""?e.host:r.host,r.hostname=e.hostname||e.hostname===""?e.hostname:r.hostname,r.search=e.search,r.query=e.query,C=N;else if(N.length)C||(C=[]),C.pop(),C=C.concat(N),r.search=e.search,r.query=e.query;else if(!ln.isNullOrUndefined(e.search)){if($){r.hostname=r.host=C.shift();var W=r.host&&r.host.indexOf("@")>0?r.host.split("@"):!1;W&&(r.auth=W.shift(),r.host=r.hostname=W.shift())}return r.search=e.search,r.query=e.query,(!ln.isNull(r.pathname)||!ln.isNull(r.search))&&(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!C.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var G=C.slice(-1)[0],re=(r.host||e.host||C.length>1)&&(G==="."||G==="..")||G==="",J=0,K=C.length;K>=0;K--)G=C[K],G==="."?C.splice(K,1):G===".."?(C.splice(K,1),J++):J&&(C.splice(K,1),J--);if(!B&&!P)for(;J--;J)C.unshift("..");B&&C[0]!==""&&(!C[0]||C[0].charAt(0)!=="/")&&C.unshift(""),re&&C.join("/").substr(-1)!=="/"&&C.push("");var se=C[0]===""||C[0]&&C[0].charAt(0)==="/";if($){r.hostname=r.host=se?"":C.length?C.shift():"";var W=r.host&&r.host.indexOf("@")>0?r.host.split("@"):!1;W&&(r.auth=W.shift(),r.host=r.hostname=W.shift())}return B=B||r.host&&C.length,B&&!se&&C.unshift(""),C.length?r.pathname=C.join("/"):(r.pathname=null,r.path=null),(!ln.isNull(r.pathname)||!ln.isNull(r.search))&&(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r};bi.prototype.parseHost=function(){var e=this.host,t=kC.exec(e);t&&(t=t[0],t!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)};function VC(e,t){for(var r=0,i=e.length-1;i>=0;i--){var a=e[i];a==="."?e.splice(i,1):a===".."?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function zC(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:"/";if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)continue;e=i+"/"+e,t=i.charAt(0)==="/"}return e=VC(GC(e.split("/"),function(a){return!!a}),!t).join("/"),(t?"/":"")+e||"."}function GC(e,t){if(e.filter)return e.filter(t);for(var r=[],i=0;i<e.length;i++)t(e[i],i,e)&&r.push(e[i]);return r}var A6=function(e){function t(){var i=this||self;return delete e.prototype.__magic__,i}if(typeof globalThis=="object")return globalThis;if(this)return t();e.defineProperty(e.prototype,"__magic__",{configurable:!0,get:t});var r=__magic__;return r}(Object),YC=BC,T6=PC,O6=CC,I6=LC,Ho=A6.URL,P6=A6.URLSearchParams,ZC=/%/g,XC=/\\/g,JC=/\n/g,QC=/\r/g,eB=/\t/g,tB=47;function rB(e){var t=e??null;return!!(t!==null&&(t!=null&&t.href)&&(t!=null&&t.origin))}function iB(e){if(e.hostname!=="")throw new TypeError('File URL host must be "localhost" or empty on browser');for(var t=e.pathname,r=0;r<t.length;r++)if(t[r]==="%"){var i=t.codePointAt(r+2)|32;if(t[r+1]==="2"&&i===102)throw new TypeError("File URL path must not include encoded / characters")}return decodeURIComponent(t)}function nB(e){return e.includes("%")&&(e=e.replace(ZC,"%25")),e.includes("\\")&&(e=e.replace(XC,"%5C")),e.includes(`
+`)&&(e=e.replace(JC,"%0A")),e.includes("\r")&&(e=e.replace(QC,"%0D")),e.includes("	")&&(e=e.replace(eB,"%09")),e}var C6=function(t){if(typeof t>"u")throw new TypeError('The "domain" argument must be specified');return new Ho("http://"+t).hostname},B6=function(t){if(typeof t>"u")throw new TypeError('The "domain" argument must be specified');return new Ho("http://"+t).hostname},L6=function(t){var r=new Ho("file://"),i=zC(t),a=t.charCodeAt(t.length-1);return a===tB&&i[i.length-1]!=="/"&&(i+="/"),r.pathname=nB(i),r},N6=function(t){if(!rB(t)&&typeof t!="string")throw new TypeError('The "path" argument must be of type string or an instance of URL. Received type '+typeof t+" ("+t+")");var r=new Ho(t);if(r.protocol!=="file:")throw new TypeError("The URL must be of scheme file");return iB(r)},k6=function(t,r){var i,a,n;if(r===void 0&&(r={}),!(t instanceof Ho))return YC(t);if(typeof r!="object"||r===null)throw new TypeError('The "options" argument must be of type object.');var l=(i=r.auth)!=null?i:!0,h=(a=r.fragment)!=null?a:!0,d=(n=r.search)!=null?n:!0,m=new Ho(t.toString());return l||(m.username="",m.password=""),h||(m.hash=""),d||(m.search=""),m.toString()},oB={format:k6,parse:T6,resolve:O6,resolveObject:R6,Url:I6,URL:Ho,URLSearchParams:P6,domainToASCII:C6,domainToUnicode:B6,pathToFileURL:L6,fileURLToPath:N6};const aB=Object.freeze(Object.defineProperty({__proto__:null,URL:Ho,URLSearchParams:P6,Url:I6,default:oB,domainToASCII:C6,domainToUnicode:B6,fileURLToPath:N6,format:k6,parse:T6,pathToFileURL:L6,resolve:O6,resolveObject:R6},Symbol.toStringTag,{value:"Module"})),sB=wl(aB);var fB=null;const lB=Object.freeze(Object.defineProperty({__proto__:null,default:fB},Symbol.toStringTag,{value:"Module"})),tv=wl(lB);var zd,Q1;function eb(){if(Q1)return zd;Q1=1;const e=tv,t=co("mqttjs:tcp");function r(i,a){a.port=a.port||1883,a.hostname=a.hostname||a.host||"localhost";const n=a.port,l=a.hostname;return t("port %d and host %s",n,l),e.createConnection(n,l)}return zd=r,zd}var Gd,tb;function Yd(){if(tb)return Gd;tb=1;const e=tv,t=tv,r=co("mqttjs:tls");function i(a,n){n.port=n.port||8883,n.host=n.hostname||n.host||"localhost",t.isIP(n.host)===0&&(n.servername=n.host),n.rejectUnauthorized=n.rejectUnauthorized!==!1,delete n.path,r("port %d host %s rejectUnauthorized %b",n.port,n.host,n.rejectUnauthorized);const l=e.connect(n);l.on("secureConnect",function(){n.rejectUnauthorized&&!l.authorized?l.emit("error",new Error("TLS not authorized")):l.removeListener("error",h)});function h(d){n.rejectUnauthorized&&a.emit("error",d),l.end()}return l.on("error",h),l}return Gd=i,Gd}var rv={exports:{}},$6=kr.EventEmitter,Zd,rb;function uB(){if(rb)return Zd;rb=1;function e(O,L){var B=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);L&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),B.push.apply(B,P)}return B}function t(O){for(var L=1;L<arguments.length;L++){var B=arguments[L]!=null?arguments[L]:{};L%2?e(Object(B),!0).forEach(function(P){r(O,P,B[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(B)):e(Object(B)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(B,P))})}return O}function r(O,L,B){return L=l(L),L in O?Object.defineProperty(O,L,{value:B,enumerable:!0,configurable:!0,writable:!0}):O[L]=B,O}function i(O,L){if(!(O instanceof L))throw new TypeError("Cannot call a class as a function")}function a(O,L){for(var B=0;B<L.length;B++){var P=L[B];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,L,B){return L&&a(O.prototype,L),B&&a(O,B),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var L=h(O,"string");return typeof L=="symbol"?L:String(L)}function h(O,L){if(typeof O!="object"||O===null)return O;var B=O[Symbol.toPrimitive];if(B!==void 0){var P=B.call(O,L||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(L==="string"?String:Number)(O)}var d=Le,m=d.Buffer,_=oi,S=_.inspect,R=S&&S.custom||"inspect";function I(O,L,B){m.prototype.copy.call(O,L,B)}return Zd=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(B){var P={data:B,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(B){var P={data:B,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var B=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,B}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(B){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=B+P.data;return C}},{key:"concat",value:function(B){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(B>>>0),C=this.head,N=0;C;)I(C.data,P,N),N+=C.data.length,C=C.next;return P}},{key:"consume",value:function(B,P){var C;return B<this.head.data.length?(C=this.head.data.slice(0,B),this.head.data=this.head.data.slice(B)):B===this.head.data.length?C=this.shift():C=P?this._getString(B):this._getBuffer(B),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(B){var P=this.head,C=1,N=P.data;for(B-=N.length;P=P.next;){var $=P.data,W=B>$.length?$.length:B;if(W===$.length?N+=$:N+=$.slice(0,B),B-=W,B===0){W===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(W));break}++C}return this.length-=C,N}},{key:"_getBuffer",value:function(B){var P=m.allocUnsafe(B),C=this.head,N=1;for(C.data.copy(P),B-=C.data.length;C=C.next;){var $=C.data,W=B>$.length?$.length:B;if($.copy(P,P.length-B,0,W),B-=W,B===0){W===$.length?(++N,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(W));break}++N}return this.length-=N,P}},{key:R,value:function(B,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),Zd}function hB(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,ye.nextTick(iv,this,e)):ye.nextTick(iv,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?ye.nextTick(Bu,r):(r._writableState.errorEmitted=!0,ye.nextTick(ib,r,n)):ye.nextTick(ib,r,n):t?(ye.nextTick(Bu,r),t(n)):ye.nextTick(Bu,r)}),this)}function ib(e,t){iv(e,t),Bu(e)}function Bu(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function cB(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function iv(e,t){e.emit("error",t)}function dB(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}var D6={destroy:hB,undestroy:cB,errorOrDestroy:dB},Na={};function pB(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var F6={};function Ii(e,t,r){r||(r=Error);function i(n,l,h){return typeof t=="string"?t:t(n,l,h)}var a=function(n){pB(l,n);function l(h,d,m){return n.call(this,i(h,d,m))||this}return l}(r);a.prototype.name=r.name,a.prototype.code=e,F6[e]=a}function nb(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(i){return String(i)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function vB(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function gB(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function mB(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Ii("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Ii("ERR_INVALID_ARG_TYPE",function(e,t,r){var i;typeof t=="string"&&vB(t,"not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";var a;if(gB(e," argument"))a="The ".concat(e," ").concat(i," ").concat(nb(t,"type"));else{var n=mB(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(n," ").concat(i," ").concat(nb(t,"type"))}return a+=". Received type ".concat(typeof r),a},TypeError);Ii("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Ii("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Ii("ERR_STREAM_PREMATURE_CLOSE","Premature close");Ii("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Ii("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Ii("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Ii("ERR_STREAM_WRITE_AFTER_END","write after end");Ii("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Ii("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Ii("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Na.codes=F6;var yB=Na.codes.ERR_INVALID_OPT_VALUE;function bB(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function wB(e,t,r,i){var a=bB(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=i?r:"highWaterMark";throw new yB(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}var j6={getHighWaterMark:wB},Xd,ob;function U6(){if(ob)return Xd;ob=1,Xd=J;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){Q(E,A)}}var t;J.WritableState=G;var r={deprecate:ef},i=$6,a=Le.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function h(A){return a.isBuffer(A)||A instanceof n}var d=D6,m=j6,_=m.getHighWaterMark,S=Na.codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,L=S.ERR_STREAM_CANNOT_PIPE,B=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,N=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(J,i);function W(){}function G(A,E,q){t=t||Ps(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=_(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var re;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(re=Function.prototype[Symbol.hasInstance],Object.defineProperty(J,Symbol.hasInstance,{value:function(E){return re.call(this,E)?!0:this!==J?!1:E&&E._writableState instanceof G}})):re=function(E){return E instanceof this};function J(A){t=t||Ps();var E=this instanceof t;if(!E&&!re.call(J,this))return new J(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}J.prototype.pipe=function(){$(this,new L)};function K(A,E){var q=new C;$(A,q),ye.nextTick(E,q)}function se(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),ye.nextTick(V,X),!1):!0}J.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&h(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=W),V.ending?K(this,q):(b||se(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},J.prototype.cork=function(){this._writableState.corked++},J.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},J.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new N(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(J.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function M(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(J.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=M(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var F=E.objectMode?1:V.length;E.length+=F;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,F,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new B("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(ye.nextTick(X,V),ye.nextTick(D,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),D(A,E))}function c(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(c(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?ye.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),D(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,F=!0;q;)X[y]=q,q.isBuf||(F=!1),q=q.next,y+=1;X.allBuffers=F,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,j=q.callback,k=E.objectMode?1:U.length;if(f(A,E,!1,k,U,Z,j),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}J.prototype._write=function(A,E,q){q(new I("_write()"))},J.prototype._writev=null,J.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(J.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),D(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,ye.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function D(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,D(A,E),q&&(E.finished?ye.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function Q(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(J.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),J.prototype.destroy=d.destroy,J.prototype._undestroy=d.undestroy,J.prototype._destroy=function(A,E){E(A)},Xd}var Jd,ab;function Ps(){if(ab)return Jd;ab=1;var e=Object.keys||function(m){var _=[];for(var S in m)_.push(S);return _};Jd=l;var t=q6(),r=U6();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",h)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function h(){this._writableState.ended||ye.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(_){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=_,this._writableState.destroyed=_)}}),Jd}var sb=Na.codes.ERR_STREAM_PREMATURE_CLOSE;function _B(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];e.apply(this,i)}}}function MB(){}function SB(e){return e.setHeader&&typeof e.abort=="function"}function H6(e,t,r){if(typeof t=="function")return H6(e,null,t);t||(t={}),r=_B(r||MB);var i=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||h()},l=e._writableState&&e._writableState.finished,h=function(){a=!1,l=!0,i||r.call(e)},d=e._readableState&&e._readableState.endEmitted,m=function(){i=!1,d=!0,a||r.call(e)},_=function(O){r.call(e,O)},S=function(){var O;if(i&&!d)return(!e._readableState||!e._readableState.ended)&&(O=new sb),r.call(e,O);if(a&&!l)return(!e._writableState||!e._writableState.ended)&&(O=new sb),r.call(e,O)},R=function(){e.req.on("finish",h)};return SB(e)?(e.on("complete",h),e.on("abort",S),e.req?R():e.on("request",R)):a&&!e._writableState&&(e.on("end",n),e.on("close",n)),e.on("end",m),e.on("finish",h),t.error!==!1&&e.on("error",_),e.on("close",S),function(){e.removeListener("complete",h),e.removeListener("abort",S),e.removeListener("request",R),e.req&&e.req.removeListener("finish",h),e.removeListener("end",n),e.removeListener("close",n),e.removeListener("finish",h),e.removeListener("end",m),e.removeListener("error",_),e.removeListener("close",S)}}var kg=H6,Qd,fb;function xB(){if(fb)return Qd;fb=1;var e;function t(N,$,W){return $=r($),$ in N?Object.defineProperty(N,$,{value:W,enumerable:!0,configurable:!0,writable:!0}):N[$]=W,N}function r(N){var $=i(N,"string");return typeof $=="symbol"?$:String($)}function i(N,$){if(typeof N!="object"||N===null)return N;var W=N[Symbol.toPrimitive];if(W!==void 0){var G=W.call(N,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(N)}var a=kg,n=Symbol("lastResolve"),l=Symbol("lastReject"),h=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),_=Symbol("handlePromise"),S=Symbol("stream");function R(N,$){return{value:N,done:$}}function I(N){var $=N[n];if($!==null){var W=N[S].read();W!==null&&(N[m]=null,N[n]=null,N[l]=null,$(R(W,!1)))}}function O(N){ye.nextTick(I,N)}function L(N,$){return function(W,G){N.then(function(){if($[d]){W(R(void 0,!0));return}$[_](W,G)},G)}}var B=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,W=this[h];if(W!==null)return Promise.reject(W);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(K,se){ye.nextTick(function(){$[h]?se($[h]):K(R(void 0,!0))})});var G=this[m],re;if(G)re=new Promise(L(G,this));else{var J=this[S].read();if(J!==null)return Promise.resolve(R(J,!1));re=new Promise(this[_])}return this[m]=re,re}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(W,G){$[S].destroy(null,function(re){if(re){G(re);return}W(R(void 0,!0))})})}),e),B),C=function($){var W,G=Object.create(P,(W={},t(W,S,{value:$,writable:!0}),t(W,n,{value:null,writable:!0}),t(W,l,{value:null,writable:!0}),t(W,h,{value:null,writable:!0}),t(W,d,{value:$._readableState.endEmitted,writable:!0}),t(W,_,{value:function(J,K){var se=G[S].read();se?(G[m]=null,G[n]=null,G[l]=null,J(R(se,!1))):(G[n]=J,G[l]=K)},writable:!0}),W));return G[m]=null,a($,function(re){if(re&&re.code!=="ERR_STREAM_PREMATURE_CLOSE"){var J=G[l];J!==null&&(G[m]=null,G[n]=null,G[l]=null,J(re)),G[h]=re;return}var K=G[n];K!==null&&(G[m]=null,G[n]=null,G[l]=null,K(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return Qd=C,Qd}var e0,lb;function EB(){return lb||(lb=1,e0=function(){throw new Error("Readable.from is not available in the browser")}),e0}var t0,ub;function q6(){if(ub)return t0;ub=1,t0=K;var e;K.ReadableState=J,kr.EventEmitter;var t=function(y,F){return y.listeners(F).length},r=$6,i=Le.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var h=oi,d;h&&h.debuglog?d=h.debuglog("stream"):d=function(){};var m=uB(),_=D6,S=j6,R=S.getHighWaterMark,I=Na.codes,O=I.ERR_INVALID_ARG_TYPE,L=I.ERR_STREAM_PUSH_AFTER_EOF,B=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,N,$;Ye(K,r);var W=_.errorOrDestroy,G=["error","close","destroy","pause","resume"];function re(b,y,F){if(typeof b.prependListener=="function")return b.prependListener(y,F);!b._events||!b._events[y]?b.on(y,F):Array.isArray(b._events[y])?b._events[y].unshift(F):b._events[y]=[F,b._events[y]]}function J(b,y,F){e=e||Ps(),b=b||{},typeof F!="boolean"&&(F=y instanceof e),this.objectMode=!!b.objectMode,F&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",F),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=ti().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function K(b){if(e=e||Ps(),!(this instanceof K))return new K(b);var y=this instanceof e;this._readableState=new J(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(K.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),K.prototype.destroy=_.destroy,K.prototype._undestroy=_.undestroy,K.prototype._destroy=function(b,y){y(b)},K.prototype.push=function(b,y){var F=this._readableState,U;return F.objectMode?U=!0:typeof b=="string"&&(y=y||F.defaultEncoding,y!==F.encoding&&(b=i.from(b,y),y=""),U=!0),se(this,b,y,!1,U)},K.prototype.unshift=function(b){return se(this,b,null,!0,!1)};function se(b,y,F,U,Z){d("readableAddChunk",y);var j=b._readableState;if(y===null)j.reading=!1,p(b,j);else{var k;if(Z||(k=o(j,y)),k)W(b,k);else if(j.objectMode||y&&y.length>0)if(typeof y!="string"&&!j.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)j.endEmitted?W(b,new P):M(b,j,y,!0);else if(j.ended)W(b,new L);else{if(j.destroyed)return!1;j.reading=!1,j.decoder&&!F?(y=j.decoder.write(y),j.objectMode||y.length!==0?M(b,j,y,!1):g(b,j)):M(b,j,y,!1)}else U||(j.reading=!1,g(b,j))}return!j.ended&&(j.length<j.highWaterMark||j.length===0)}function M(b,y,F,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",F)):(y.length+=y.objectMode?1:F.length,U?y.buffer.unshift(F):y.buffer.push(F),y.needReadable&&w(b)),g(b,y)}function o(b,y){var F;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(F=new O("chunk",["string","Buffer","Uint8Array"],y)),F}K.prototype.isPaused=function(){return this._readableState.flowing===!1},K.prototype.setEncoding=function(b){C||(C=ti().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var F=this._readableState.buffer.head,U="";F!==null;)U+=y.write(F.data),F=F.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function c(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}K.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,F=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=c(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=c(F,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),F!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var F=y.decoder.end();F&&F.length&&(y.buffer.push(F),y.length+=y.objectMode?1:F.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,ye.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,ye.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var F=y.length;if(d("maybeReadMore read 0"),b.read(0),F===y.length)break}y.readingMore=!1}K.prototype._read=function(b){W(this,new B("_read()"))},K.prototype.pipe=function(b,y){var F=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==ye.stdout&&b!==ye.stderr,j=Z?H:xe;U.endEmitted?ye.nextTick(j):F.once("end",j),b.on("unpipe",k);function k(le,ve){d("onunpipe"),le===F&&ve&&ve.hasUnpiped===!1&&(ve.hasUnpiped=!0,ee())}function H(){d("onend"),b.end()}var z=v(F);b.on("drain",z);var oe=!1;function ee(){d("cleanup"),b.removeListener("close",he),b.removeListener("finish",ue),b.removeListener("drain",z),b.removeListener("error",me),b.removeListener("unpipe",k),F.removeListener("end",H),F.removeListener("end",xe),F.removeListener("data",ne),oe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}F.on("data",ne);function ne(le){d("ondata");var ve=b.write(le);d("dest.write",ve),ve===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!oe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),F.pause())}function me(le){d("onerror",le),xe(),b.removeListener("error",me),t(b,"error")===0&&W(b,le)}re(b,"error",me);function he(){b.removeListener("finish",ue),xe()}b.once("close",he);function ue(){d("onfinish"),b.removeListener("close",he),xe()}b.once("finish",ue);function xe(){d("unpipe"),F.unpipe(b)}return b.emit("pipe",F),U.flowing||(d("pipe resume"),F.resume()),b};function v(b){return function(){var F=b._readableState;d("pipeOnDrain",F.awaitDrain),F.awaitDrain&&F.awaitDrain--,F.awaitDrain===0&&t(b,"data")&&(F.flowing=!0,A(b))}}K.prototype.unpipe=function(b){var y=this._readableState,F={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,F),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var j=0;j<Z;j++)U[j].emit("unpipe",this,{hasUnpiped:!1});return this}var k=X(y.pipes,b);return k===-1?this:(y.pipes.splice(k,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,F),this)},K.prototype.on=function(b,y){var F=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||ye.nextTick(D,this)),F},K.prototype.addListener=K.prototype.on,K.prototype.removeListener=function(b,y){var F=r.prototype.removeListener.call(this,b,y);return b==="readable"&&ye.nextTick(T,this),F},K.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&ye.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function D(b){d("readable nexttick read 0"),b.read(0)}K.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,ye.nextTick(Q,b,y))}function Q(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}K.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}K.prototype.wrap=function(b){var y=this,F=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),F.decoder&&!F.ended){var k=F.decoder.end();k&&k.length&&y.push(k)}y.push(null)}),b.on("data",function(k){if(d("wrapped data"),F.decoder&&(k=F.decoder.write(k)),!(F.objectMode&&k==null)&&!(!F.objectMode&&(!k||!k.length))){var H=y.push(k);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var j=0;j<G.length;j++)b.on(G[j],this.emit.bind(this,G[j]));return this._read=function(k){d("wrapped _read",k),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(K.prototype[Symbol.asyncIterator]=function(){return N===void 0&&(N=xB()),N(this)}),Object.defineProperty(K.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(K.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(K.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),K._fromList=E,Object.defineProperty(K.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var F;return y.objectMode?F=y.buffer.shift():!b||b>=y.length?(y.decoder?F=y.buffer.join(""):y.buffer.length===1?F=y.buffer.first():F=y.buffer.concat(y.length),y.buffer.clear()):F=y.buffer.consume(b,y.decoder),F}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,ye.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var F=y._writableState;(!F||F.autoDestroy&&F.finished)&&y.destroy()}}typeof Symbol=="function"&&(K.from=function(b,y){return $===void 0&&($=EB()),$(K,b,y)});function X(b,y){for(var F=0,U=b.length;F<U;F++)if(b[F]===y)return F;return-1}return t0}var W6=ro,vc=Na.codes,RB=vc.ERR_METHOD_NOT_IMPLEMENTED,AB=vc.ERR_MULTIPLE_CALLBACK,TB=vc.ERR_TRANSFORM_ALREADY_TRANSFORMING,OB=vc.ERR_TRANSFORM_WITH_LENGTH_0,gc=Ps();Ye(ro,gc);function IB(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new AB);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function ro(e){if(!(this instanceof ro))return new ro(e);gc.call(this,e),this._transformState={afterTransform:IB.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",PB)}function PB(){var e=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(t,r){hb(e,t,r)}):hb(this,null,null)}ro.prototype.push=function(e,t){return this._transformState.needTransform=!1,gc.prototype.push.call(this,e,t)};ro.prototype._transform=function(e,t,r){r(new RB("_transform()"))};ro.prototype._write=function(e,t,r){var i=this._transformState;if(i.writecb=r,i.writechunk=e,i.writeencoding=t,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};ro.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};ro.prototype._destroy=function(e,t){gc.prototype._destroy.call(this,e,function(r){t(r)})};function hb(e,t,r){if(t)return e.emit("error",t);if(r!=null&&e.push(r),e._writableState.length)throw new OB;if(e._transformState.transforming)throw new TB;return e.push(null)}var CB=dl,K6=W6;Ye(dl,K6);function dl(e){if(!(this instanceof dl))return new dl(e);K6.call(this,e)}dl.prototype._transform=function(e,t,r){r(null,e)};var r0;function BB(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var V6=Na.codes,LB=V6.ERR_MISSING_ARGS,NB=V6.ERR_STREAM_DESTROYED;function cb(e){if(e)throw e}function kB(e){return e.setHeader&&typeof e.abort=="function"}function $B(e,t,r,i){i=BB(i);var a=!1;e.on("close",function(){a=!0}),r0===void 0&&(r0=kg),r0(e,{readable:t,writable:r},function(l){if(l)return i(l);a=!0,i()});var n=!1;return function(l){if(!a&&!n){if(n=!0,kB(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();i(l||new NB("pipe"))}}}function db(e){e()}function DB(e,t){return e.pipe(t)}function FB(e){return!e.length||typeof e[e.length-1]!="function"?cb:e.pop()}function jB(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=FB(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new LB("streams");var a,n=t.map(function(l,h){var d=h<t.length-1,m=h>0;return $B(l,d,m,function(_){a||(a=_),_&&n.forEach(db),!d&&(n.forEach(db),i(a))})});return t.reduce(DB)}var UB=jB;(function(e,t){t=e.exports=q6(),t.Stream=t,t.Readable=t,t.Writable=U6(),t.Duplex=Ps(),t.Transform=W6,t.PassThrough=CB,t.finished=kg,t.pipeline=UB})(rv,rv.exports);var HB=rv.exports,$g={exports:{}},qB=z6;function z6(e,t){if(e&&t)return z6(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(i){r[i]=e[i]}),r;function r(){for(var i=new Array(arguments.length),a=0;a<i.length;a++)i[a]=arguments[a];var n=e.apply(this,i),l=i[i.length-1];return typeof n=="function"&&n!==l&&Object.keys(l).forEach(function(h){n[h]=l[h]}),n}}var G6=qB;$g.exports=G6(Lu);$g.exports.strict=G6(Y6);Lu.proto=Lu(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Lu(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Y6(this)},configurable:!0})});function Lu(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function Y6(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}var WB=$g.exports,KB=WB,VB=function(){},zB=function(e){return e.setHeader&&typeof e.abort=="function"},GB=function(e){return e.stdio&&Array.isArray(e.stdio)&&e.stdio.length===3},Z6=function(e,t,r){if(typeof t=="function")return Z6(e,null,t);t||(t={}),r=KB(r||VB);var i=e._writableState,a=e._readableState,n=t.readable||t.readable!==!1&&e.readable,l=t.writable||t.writable!==!1&&e.writable,h=!1,d=function(){e.writable||m()},m=function(){l=!1,n||r.call(e)},_=function(){n=!1,l||r.call(e)},S=function(B){r.call(e,B?new Error("exited with error code: "+B):null)},R=function(B){r.call(e,B)},I=function(){ye.nextTick(O)},O=function(){if(!h){if(n&&!(a&&a.ended&&!a.destroyed))return r.call(e,new Error("premature close"));if(l&&!(i&&i.ended&&!i.destroyed))return r.call(e,new Error("premature close"))}},L=function(){e.req.on("finish",m)};return zB(e)?(e.on("complete",m),e.on("abort",I),e.req?L():e.on("request",L)):l&&!i&&(e.on("end",d),e.on("close",d)),GB(e)&&e.on("exit",S),e.on("end",_),e.on("finish",m),t.error!==!1&&e.on("error",R),e.on("close",I),function(){h=!0,e.removeListener("complete",m),e.removeListener("abort",I),e.removeListener("request",L),e.req&&e.req.removeListener("finish",m),e.removeListener("end",d),e.removeListener("close",d),e.removeListener("finish",m),e.removeListener("exit",S),e.removeListener("end",_),e.removeListener("error",R),e.removeListener("close",I)}},YB=Z6,ZB=XB;function XB(e){var t=e._readableState;return t?t.objectMode||typeof e._duplexState=="number"?e.read():e.read(JB(t)):null}function JB(e){if(e.buffer.length){var t=e.bufferIndex||0;if(e.buffer.head)return e.buffer.head.data.length;if(e.buffer.length-t>0&&e.buffer[t])return e.buffer[t].length}return e.length}var mc=HB,X6=YB,QB=Ye,eL=ZB,J6=Le.Buffer.from&&Le.Buffer.from!==Uint8Array.from?Le.Buffer.from([0]):new Le.Buffer([0]),nv=function(e,t){e._corked?e.once("uncork",t):t()},tL=function(e,t){e._autoDestroy&&e.destroy(t)},Q6=function(e,t){return function(r){r?tL(e,r.message==="premature close"?null:r):t&&!e._ended&&e.end()}},rL=function(e,t){if(!e||e._writableState&&e._writableState.finished)return t();if(e._writableState)return e.end(t);e.end(),t()},iL=function(){},nL=function(e){return new mc.Readable({objectMode:!0,highWaterMark:16}).wrap(e)},Mr=function(e,t,r){if(!(this instanceof Mr))return new Mr(e,t,r);mc.Duplex.call(this,r),this._writable=null,this._readable=null,this._readable2=null,this._autoDestroy=!r||r.autoDestroy!==!1,this._forwardDestroy=!r||r.destroy!==!1,this._forwardEnd=!r||r.end!==!1,this._corked=1,this._ondrain=null,this._drained=!1,this._forwarding=!1,this._unwrite=null,this._unread=null,this._ended=!1,this.destroyed=!1,e&&this.setWritable(e),t&&this.setReadable(t)};QB(Mr,mc.Duplex);Mr.obj=function(e,t,r){return r||(r={}),r.objectMode=!0,r.highWaterMark=16,new Mr(e,t,r)};Mr.prototype.cork=function(){++this._corked===1&&this.emit("cork")};Mr.prototype.uncork=function(){this._corked&&--this._corked===0&&this.emit("uncork")};Mr.prototype.setWritable=function(e){if(this._unwrite&&this._unwrite(),this.destroyed){e&&e.destroy&&e.destroy();return}if(e===null||e===!1){this.end();return}var t=this,r=X6(e,{writable:!0,readable:!1},Q6(this,this._forwardEnd)),i=function(){var n=t._ondrain;t._ondrain=null,n&&n()},a=function(){t._writable.removeListener("drain",i),r()};this._unwrite&&ye.nextTick(i),this._writable=e,this._writable.on("drain",i),this._unwrite=a,this.uncork()};Mr.prototype.setReadable=function(e){if(this._unread&&this._unread(),this.destroyed){e&&e.destroy&&e.destroy();return}if(e===null||e===!1){this.push(null),this.resume();return}var t=this,r=X6(e,{writable:!1,readable:!0},Q6(this)),i=function(){t._forward()},a=function(){t.push(null)},n=function(){t._readable2.removeListener("readable",i),t._readable2.removeListener("end",a),r()};this._drained=!0,this._readable=e,this._readable2=e._readableState?e:nL(e),this._readable2.on("readable",i),this._readable2.on("end",a),this._unread=n,this._forward()};Mr.prototype._read=function(){this._drained=!0,this._forward()};Mr.prototype._forward=function(){if(!(this._forwarding||!this._readable2||!this._drained)){this._forwarding=!0;for(var e;this._drained&&(e=eL(this._readable2))!==null;)this.destroyed||(this._drained=this.push(e));this._forwarding=!1}};Mr.prototype.destroy=function(e,t){if(t||(t=iL),this.destroyed)return t(null);this.destroyed=!0;var r=this;ye.nextTick(function(){r._destroy(e),t(null)})};Mr.prototype._destroy=function(e){if(e){var t=this._ondrain;this._ondrain=null,t?t(e):this.emit("error",e)}this._forwardDestroy&&(this._readable&&this._readable.destroy&&this._readable.destroy(),this._writable&&this._writable.destroy&&this._writable.destroy()),this.emit("close")};Mr.prototype._write=function(e,t,r){if(!this.destroyed){if(this._corked)return nv(this,this._write.bind(this,e,t,r));if(e===J6)return this._finish(r);if(!this._writable)return r();this._writable.write(e)===!1?this._ondrain=r:this.destroyed||r()}};Mr.prototype._finish=function(e){var t=this;this.emit("preend"),nv(this,function(){rL(t._forwardEnd&&t._writable,function(){t._writableState.prefinished===!1&&(t._writableState.prefinished=!0),t.emit("prefinish"),nv(t,e)})})};Mr.prototype.end=function(e,t,r){return typeof e=="function"?this.end(null,null,e):typeof t=="function"?this.end(e,null,t):(this._ended=!0,e&&this.write(e),!this._writableState.ending&&!this._writableState.destroyed&&this.write(J6),mc.Writable.prototype.end.call(this,r))};var Dg=Mr,i0,pb;function vb(){if(pb)return i0;pb=1;const{Buffer:e}=Le,t=Tl.Transform,r=Dg;let i,a,n;function l(){const S=new t;return S._write=function(R,I,O){i.send({data:R.buffer,success:function(){O()},fail:function(L){O(new Error(L))}})},S._flush=function(I){i.close({success:function(){I()}})},S}function h(S){S.hostname||(S.hostname="localhost"),S.path||(S.path="/"),S.wsOptions||(S.wsOptions={})}function d(S,R){const I=S.protocol==="wxs"?"wss":"ws";let O=I+"://"+S.hostname+S.path;return S.port&&S.port!==80&&S.port!==443&&(O=I+"://"+S.hostname+":"+S.port+S.path),typeof S.transformWsUrl=="function"&&(O=S.transformWsUrl(O,S,R)),O}function m(){i.onOpen(function(){n.setReadable(a),n.setWritable(a),n.emit("connect")}),i.onMessage(function(S){let R=S.data;R instanceof ArrayBuffer?R=e.from(R):R=e.from(R,"utf8"),a.push(R)}),i.onClose(function(){n.end(),n.destroy()}),i.onError(function(S){n.destroy(new Error(S.errMsg))})}function _(S,R){if(R.hostname=R.hostname||R.host,!R.hostname)throw new Error("Could not determine host. Specify host manually.");const I=R.protocolId==="MQIsdp"&&R.protocolVersion===3?"mqttv3.1":"mqtt";h(R);const O=d(R,S);i=wx.connectSocket({url:O,protocols:[I]}),a=l(),n=r.obj(),n._destroy=function(B,P){i.close({success:function(){P&&P(B)}})};const L=n.destroy;return n.destroy=(function(){n.destroy=L;const B=this;setTimeout(function(){i.close({fail:function(){B._destroy(new Error)}})},0)}).bind(n),m(),n}return i0=_,i0}var n0,gb;function mb(){if(gb)return n0;gb=1;const{Buffer:e}=Le,t=Tl.Transform,r=Dg;let i,a,n,l=!1;function h(){const R=new t;return R._write=function(I,O,L){i.sendSocketMessage({data:I.buffer,success:function(){L()},fail:function(){L(new Error)}})},R._flush=function(O){i.closeSocket({success:function(){O()}})},R}function d(R){R.hostname||(R.hostname="localhost"),R.path||(R.path="/"),R.wsOptions||(R.wsOptions={})}function m(R,I){const O=R.protocol==="alis"?"wss":"ws";let L=O+"://"+R.hostname+R.path;return R.port&&R.port!==80&&R.port!==443&&(L=O+"://"+R.hostname+":"+R.port+R.path),typeof R.transformWsUrl=="function"&&(L=R.transformWsUrl(L,R,I)),L}function _(){l||(l=!0,i.onSocketOpen(function(){n.setReadable(a),n.setWritable(a),n.emit("connect")}),i.onSocketMessage(function(R){if(typeof R.data=="string"){const I=e.from(R.data,"base64");a.push(I)}else{const I=new FileReader;I.addEventListener("load",function(){let O=I.result;O instanceof ArrayBuffer?O=e.from(O):O=e.from(O,"utf8"),a.push(O)}),I.readAsArrayBuffer(R.data)}}),i.onSocketClose(function(){n.end(),n.destroy()}),i.onSocketError(function(R){n.destroy(R)}))}function S(R,I){if(I.hostname=I.hostname||I.host,!I.hostname)throw new Error("Could not determine host. Specify host manually.");const O=I.protocolId==="MQIsdp"&&I.protocolVersion===3?"mqttv3.1":"mqtt";d(I);const L=m(I,R);return i=I.my,i.connectSocket({url:L,protocols:O}),a=h(),n=r.obj(),_(),n}return n0=S,n0}var ov={exports:{}},oL=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")};const{Buffer:xf}=Le,eS=oL,Xf=co("mqttjs:ws"),aL=Dg,sL=Tl.Transform,fL=["rejectUnauthorized","ca","cert","key","pfx","passphrase"],tS=typeof ye<"u"&&ye.title==="browser"||typeof __webpack_require__=="function";function rS(e,t){let r=e.protocol+"://"+e.hostname+":"+e.port+e.path;return typeof e.transformWsUrl=="function"&&(r=e.transformWsUrl(r,e,t)),r}function iS(e){const t=e;return e.hostname||(t.hostname="localhost"),e.port||(e.protocol==="wss"?t.port=443:t.port=80),e.path||(t.path="/"),e.wsOptions||(t.wsOptions={}),!tS&&e.protocol==="wss"&&fL.forEach(function(r){Object.prototype.hasOwnProperty.call(e,r)&&!Object.prototype.hasOwnProperty.call(e.wsOptions,r)&&(t.wsOptions[r]=e[r])}),t}function lL(e){const t=iS(e);if(t.hostname||(t.hostname=t.host),!t.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");const r=new URL(document.URL);t.hostname=r.hostname,t.port||(t.port=r.port)}return t.objectMode===void 0&&(t.objectMode=!(t.binary===!0||t.binary===void 0)),t}function uL(e,t,r){Xf("createWebSocket"),Xf("protocol: "+r.protocolId+" "+r.protocolVersion);const i=r.protocolId==="MQIsdp"&&r.protocolVersion===3?"mqttv3.1":"mqtt";return Xf("creating new Websocket for url: "+t+" and protocol: "+i),new eS(t,[i],r.wsOptions)}function hL(e,t){const r=t.protocolId==="MQIsdp"&&t.protocolVersion===3?"mqttv3.1":"mqtt",i=rS(t,e),a=new WebSocket(i,[r]);return a.binaryType="arraybuffer",a}function cL(e,t){Xf("streamBuilder");const r=iS(t),i=rS(r,e),a=uL(e,i,r),n=eS.createWebSocketStream(a,r.wsOptions);return n.url=i,a.on("close",()=>{n.destroy()}),n}function dL(e,t){Xf("browserStreamBuilder");let r;const a=lL(t).browserBufferSize||1024*512,n=t.browserBufferTimeout||1e3,l=!t.objectMode,h=hL(e,t),d=_(t,B,P);t.objectMode||(d._writev=L),d.on("close",()=>{h.close()});const m=typeof h.addEventListener<"u";h.readyState===h.OPEN?r=d:(r=r=aL(void 0,void 0,t),t.objectMode||(r._writev=L),m?h.addEventListener("open",S):h.onopen=S),r.socket=h,m?(h.addEventListener("close",R),h.addEventListener("error",I),h.addEventListener("message",O)):(h.onclose=R,h.onerror=I,h.onmessage=O);function _(C,N,$){const W=new sL({objectModeMode:C.objectMode});return W._write=N,W._flush=$,W}function S(){r.setReadable(d),r.setWritable(d),r.emit("connect")}function R(){r.end(),r.destroy()}function I(C){r.destroy(C)}function O(C){let N=C.data;N instanceof ArrayBuffer?N=xf.from(N):N=xf.from(N,"utf8"),d.push(N)}function L(C,N){const $=new Array(C.length);for(let W=0;W<C.length;W++)typeof C[W].chunk=="string"?$[W]=xf.from(C[W],"utf8"):$[W]=C[W].chunk;this._write(xf.concat($),"binary",N)}function B(C,N,$){h.bufferedAmount>a&&setTimeout(B,n,C,N,$),l&&typeof C=="string"&&(C=xf.from(C,"utf8"));try{h.send(C)}catch(W){return $(W)}$()}function P(C){h.close(),C()}return r}tS?ov.exports=dL:ov.exports=cL;var nS=ov.exports;const oS=vC,pL=D3,vL=sB,gL=Mg,yb=co("mqttjs"),Zr={};typeof ye<"u"&&ye.title!=="browser"||typeof __webpack_require__!="function"?(Zr.mqtt=eb(),Zr.tcp=eb(),Zr.ssl=Yd(),Zr.tls=Yd(),Zr.mqtts=Yd()):(Zr.wx=vb(),Zr.wxs=vb(),Zr.ali=mb(),Zr.alis=mb());Zr.ws=nS;Zr.wss=nS;function mL(e){let t;e.auth&&(t=e.auth.match(/^(.+):(.+)$/),t?(e.username=t[1],e.password=t[2]):e.username=e.auth)}function aS(e,t){if(yb("connecting to an MQTT broker..."),typeof e=="object"&&!t&&(t=e,e=null),t=t||{},e){const a=vL.parse(e,!0);if(a.port!=null&&(a.port=Number(a.port)),t=gL(a,t),t.protocol===null)throw new Error("Missing protocol");t.protocol=t.protocol.replace(/:$/,"")}if(mL(t),t.query&&typeof t.query.clientId=="string"&&(t.clientId=t.query.clientId),t.cert&&t.key)if(t.protocol){if(["mqtts","wss","wxs","alis"].indexOf(t.protocol)===-1)switch(t.protocol){case"mqtt":t.protocol="mqtts";break;case"ws":t.protocol="wss";break;case"wx":t.protocol="wxs";break;case"ali":t.protocol="alis";break;default:throw new Error('Unknown protocol for secure connection: "'+t.protocol+'"!')}}else throw new Error("Missing secure protocol key");if(!Zr[t.protocol]){const a=["mqtts","wss"].indexOf(t.protocol)!==-1;t.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter(function(n,l){return a&&l%2===0?!1:typeof Zr[n]=="function"})[0]}if(t.clean===!1&&!t.clientId)throw new Error("Missing clientId for unclean clients");t.protocol&&(t.defaultProtocol=t.protocol);function r(a){return t.servers&&((!a._reconnectCount||a._reconnectCount===t.servers.length)&&(a._reconnectCount=0),t.host=t.servers[a._reconnectCount].host,t.port=t.servers[a._reconnectCount].port,t.protocol=t.servers[a._reconnectCount].protocol?t.servers[a._reconnectCount].protocol:t.defaultProtocol,t.hostname=t.host,a._reconnectCount++),yb("calling streambuilder for",t.protocol),Zr[t.protocol](a,t)}const i=new oS(r,t);return i.on("error",function(){}),i}El.exports=aS;El.exports.connect=aS;El.exports.MqttClient=oS;El.exports.Store=pL;var yL=El.exports;const MY=Vo(yL);function bL(){return sS().__VUE_DEVTOOLS_GLOBAL_HOOK__}function sS(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const wL=typeof Proxy=="function",_L="devtools-plugin:setup",ML="plugin:settings:set";let Ya,av;function SL(){var e;return Ya!==void 0||(typeof window<"u"&&window.performance?(Ya=!0,av=window.performance):typeof globalThis<"u"&&(!((e=globalThis.perf_hooks)===null||e===void 0)&&e.performance)?(Ya=!0,av=globalThis.perf_hooks.performance):Ya=!1),Ya}function xL(){return SL()?av.now():Date.now()}class EL{constructor(t,r){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=t,this.hook=r;const i={};if(t.settings)for(const l in t.settings){const h=t.settings[l];i[l]=h.defaultValue}const a=`__vue-devtools-plugin-settings__${t.id}`;let n=Object.assign({},i);try{const l=localStorage.getItem(a),h=JSON.parse(l);Object.assign(n,h)}catch{}this.fallbacks={getSettings(){return n},setSettings(l){try{localStorage.setItem(a,JSON.stringify(l))}catch{}n=l},now(){return xL()}},r&&r.on(ML,(l,h)=>{l===this.plugin.id&&this.fallbacks.setSettings(h)}),this.proxiedOn=new Proxy({},{get:(l,h)=>this.target?this.target.on[h]:(...d)=>{this.onQueue.push({method:h,args:d})}}),this.proxiedTarget=new Proxy({},{get:(l,h)=>this.target?this.target[h]:h==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(h)?(...d)=>(this.targetQueue.push({method:h,args:d,resolve:()=>{}}),this.fallbacks[h](...d)):(...d)=>new Promise(m=>{this.targetQueue.push({method:h,args:d,resolve:m})})})}async setRealTarget(t){this.target=t;for(const r of this.onQueue)this.target.on[r.method](...r.args);for(const r of this.targetQueue)r.resolve(await this.target[r.method](...r.args))}}function fS(e,t){const r=e,i=sS(),a=bL(),n=wL&&r.enableEarlyProxy;if(a&&(i.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!n))a.emit(_L,e,t);else{const l=n?new EL(r,a):null;(i.__VUE_DEVTOOLS_PLUGINS__=i.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:r,setupFn:t,proxy:l}),l&&t(l.proxiedTarget)}}/*!
+  * vue-router v4.4.5
+  * (c) 2024 Eduardo San Martin Morote
+  * @license MIT
+  */const Wn=typeof document<"u";function lS(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function RL(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&lS(e.default)}const Ht=Object.assign;function o0(e,t){const r={};for(const i in t){const a=t[i];r[i]=ri(a)?a.map(e):e(a)}return r}const Jf=()=>{},ri=Array.isArray;function pt(e){const t=Array.from(arguments).slice(1);console.warn.apply(console,["[Vue Router warn]: "+e].concat(t))}const uS=/#/g,AL=/&/g,TL=/\//g,OL=/=/g,IL=/\?/g,hS=/\+/g,PL=/%5B/g,CL=/%5D/g,cS=/%5E/g,BL=/%60/g,dS=/%7B/g,LL=/%7C/g,pS=/%7D/g,NL=/%20/g;function Fg(e){return encodeURI(""+e).replace(LL,"|").replace(PL,"[").replace(CL,"]")}function kL(e){return Fg(e).replace(dS,"{").replace(pS,"}").replace(cS,"^")}function sv(e){return Fg(e).replace(hS,"%2B").replace(NL,"+").replace(uS,"%23").replace(AL,"%26").replace(BL,"`").replace(dS,"{").replace(pS,"}").replace(cS,"^")}function $L(e){return sv(e).replace(OL,"%3D")}function DL(e){return Fg(e).replace(uS,"%23").replace(IL,"%3F")}function FL(e){return e==null?"":DL(e).replace(TL,"%2F")}function Cs(e){try{return decodeURIComponent(""+e)}catch{pt(`Error decoding "${e}". Using original value`)}return""+e}const jL=/\/$/,UL=e=>e.replace(jL,"");function a0(e,t,r="/"){let i,a={},n="",l="";const h=t.indexOf("#");let d=t.indexOf("?");return h<d&&h>=0&&(d=-1),d>-1&&(i=t.slice(0,d),n=t.slice(d+1,h>-1?h:t.length),a=e(n)),h>-1&&(i=i||t.slice(0,h),l=t.slice(h,t.length)),i=WL(i??t,r),{fullPath:i+(n&&"?")+n+l,path:i,query:a,hash:Cs(l)}}function HL(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function bb(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function wb(e,t,r){const i=t.matched.length-1,a=r.matched.length-1;return i>-1&&i===a&&qo(t.matched[i],r.matched[a])&&vS(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function qo(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function vS(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!qL(e[r],t[r]))return!1;return!0}function qL(e,t){return ri(e)?_b(e,t):ri(t)?_b(t,e):e===t}function _b(e,t){return ri(t)?e.length===t.length&&e.every((r,i)=>r===t[i]):e.length===1&&e[0]===t}function WL(e,t){if(e.startsWith("/"))return e;if(!t.startsWith("/"))return pt(`Cannot resolve a relative location without an absolute path. Trying to resolve "${e}" from "${t}". It should look like "/${t}".`),e;if(!e)return t;const r=t.split("/"),i=e.split("/"),a=i[i.length-1];(a===".."||a===".")&&i.push("");let n=r.length-1,l,h;for(l=0;l<i.length;l++)if(h=i[l],h!==".")if(h==="..")n>1&&n--;else break;return r.slice(0,n).join("/")+"/"+i.slice(l).join("/")}const yo={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var pl;(function(e){e.pop="pop",e.push="push"})(pl||(pl={}));var Qf;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Qf||(Qf={}));function KL(e){if(!e)if(Wn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),UL(e)}const VL=/^[^#]+#/;function zL(e,t){return e.replace(VL,"#")+t}function GL(e,t){const r=document.documentElement.getBoundingClientRect(),i=e.getBoundingClientRect();return{behavior:t.behavior,left:i.left-r.left-(t.left||0),top:i.top-r.top-(t.top||0)}}const yc=()=>({left:window.scrollX,top:window.scrollY});function YL(e){let t;if("el"in e){const r=e.el,i=typeof r=="string"&&r.startsWith("#");if(typeof e.el=="string"&&(!i||!document.getElementById(e.el.slice(1))))try{const n=document.querySelector(e.el);if(i&&n){pt(`The selector "${e.el}" should be passed as "el: document.querySelector('${e.el}')" because it starts with "#".`);return}}catch{pt(`The selector "${e.el}" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);return}const a=typeof r=="string"?i?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!a){pt(`Couldn't find element using selector "${e.el}" returned by scrollBehavior.`);return}t=GL(a,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Mb(e,t){return(history.state?history.state.position-t:-1)+e}const fv=new Map;function ZL(e,t){fv.set(e,t)}function XL(e){const t=fv.get(e);return fv.delete(e),t}let JL=()=>location.protocol+"//"+location.host;function gS(e,t){const{pathname:r,search:i,hash:a}=t,n=e.indexOf("#");if(n>-1){let h=a.includes(e.slice(n))?e.slice(n).length:1,d=a.slice(h);return d[0]!=="/"&&(d="/"+d),bb(d,"")}return bb(r,e)+i+a}function QL(e,t,r,i){let a=[],n=[],l=null;const h=({state:R})=>{const I=gS(e,location),O=r.value,L=t.value;let B=0;if(R){if(r.value=I,t.value=R,l&&l===O){l=null;return}B=L?R.position-L.position:0}else i(I);a.forEach(P=>{P(r.value,O,{delta:B,type:pl.pop,direction:B?B>0?Qf.forward:Qf.back:Qf.unknown})})};function d(){l=r.value}function m(R){a.push(R);const I=()=>{const O=a.indexOf(R);O>-1&&a.splice(O,1)};return n.push(I),I}function _(){const{history:R}=window;R.state&&R.replaceState(Ht({},R.state,{scroll:yc()}),"")}function S(){for(const R of n)R();n=[],window.removeEventListener("popstate",h),window.removeEventListener("beforeunload",_)}return window.addEventListener("popstate",h),window.addEventListener("beforeunload",_,{passive:!0}),{pauseListeners:d,listen:m,destroy:S}}function Sb(e,t,r,i=!1,a=!1){return{back:e,current:t,forward:r,replaced:i,position:window.history.length,scroll:a?yc():null}}function eN(e){const{history:t,location:r}=window,i={value:gS(e,r)},a={value:t.state};a.value||n(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function n(d,m,_){const S=e.indexOf("#"),R=S>-1?(r.host&&document.querySelector("base")?e:e.slice(S))+d:JL()+e+d;try{t[_?"replaceState":"pushState"](m,"",R),a.value=m}catch(I){pt("Error with push/replace State",I),r[_?"replace":"assign"](R)}}function l(d,m){const _=Ht({},t.state,Sb(a.value.back,d,a.value.forward,!0),m,{position:a.value.position});n(d,_,!0),i.value=d}function h(d,m){const _=Ht({},a.value,t.state,{forward:d,scroll:yc()});t.state||pt(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:
+
+history.replaceState(history.state, '', url)
+
+You can find more information at https://router.vuejs.org/guide/migration/#Usage-of-history-state`),n(_.current,_,!0);const S=Ht({},Sb(i.value,d,null),{position:_.position+1},m);n(d,S,!1),i.value=d}return{location:i,state:a,push:h,replace:l}}function tN(e){e=KL(e);const t=eN(e),r=QL(e,t.state,t.location,t.replace);function i(n,l=!0){l||r.pauseListeners(),history.go(n)}const a=Ht({location:"",base:e,go:i,createHref:zL.bind(null,e)},t,r);return Object.defineProperty(a,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(a,"state",{enumerable:!0,get:()=>t.state.value}),a}function SY(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),!e.endsWith("#/")&&!e.endsWith("#")&&pt(`A hash base must end with a "#":
+"${e}" should be "${e.replace(/#.*$/,"#")}".`),tN(e)}function _h(e){return typeof e=="string"||e&&typeof e=="object"}function mS(e){return typeof e=="string"||typeof e=="symbol"}const yS=Symbol("navigation failure");var xb;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(xb||(xb={}));const rN={1({location:e,currentLocation:t}){return`No match for
+ ${JSON.stringify(e)}${t?`
+while being at
+`+JSON.stringify(t):""}`},2({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${nN(t)}" via a navigation guard.`},4({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},8({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},16({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function Bs(e,t){return Ht(new Error(rN[e](t)),{type:e,[yS]:!0},t)}function Ln(e,t){return e instanceof Error&&yS in e&&(t==null||!!(e.type&t))}const iN=["params","query","hash"];function nN(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const r of iN)r in e&&(t[r]=e[r]);return JSON.stringify(t,null,2)}const Eb="[^/]+?",oN={sensitive:!1,strict:!1,start:!0,end:!0},aN=/[.+*?^${}()[\]/\\]/g;function sN(e,t){const r=Ht({},oN,t),i=[];let a=r.start?"^":"";const n=[];for(const m of e){const _=m.length?[]:[90];r.strict&&!m.length&&(a+="/");for(let S=0;S<m.length;S++){const R=m[S];let I=40+(r.sensitive?.25:0);if(R.type===0)S||(a+="/"),a+=R.value.replace(aN,"\\$&"),I+=40;else if(R.type===1){const{value:O,repeatable:L,optional:B,regexp:P}=R;n.push({name:O,repeatable:L,optional:B});const C=P||Eb;if(C!==Eb){I+=10;try{new RegExp(`(${C})`)}catch($){throw new Error(`Invalid custom RegExp for param "${O}" (${C}): `+$.message)}}let N=L?`((?:${C})(?:/(?:${C}))*)`:`(${C})`;S||(N=B&&m.length<2?`(?:/${N})`:"/"+N),B&&(N+="?"),a+=N,I+=20,B&&(I+=-8),L&&(I+=-20),C===".*"&&(I+=-50)}_.push(I)}i.push(_)}if(r.strict&&r.end){const m=i.length-1;i[m][i[m].length-1]+=.7000000000000001}r.strict||(a+="/?"),r.end?a+="$":r.strict&&(a+="(?:/|$)");const l=new RegExp(a,r.sensitive?"":"i");function h(m){const _=m.match(l),S={};if(!_)return null;for(let R=1;R<_.length;R++){const I=_[R]||"",O=n[R-1];S[O.name]=I&&O.repeatable?I.split("/"):I}return S}function d(m){let _="",S=!1;for(const R of e){(!S||!_.endsWith("/"))&&(_+="/"),S=!1;for(const I of R)if(I.type===0)_+=I.value;else if(I.type===1){const{value:O,repeatable:L,optional:B}=I,P=O in m?m[O]:"";if(ri(P)&&!L)throw new Error(`Provided param "${O}" is an array but it is not repeatable (* or + modifiers)`);const C=ri(P)?P.join("/"):P;if(!C)if(B)R.length<2&&(_.endsWith("/")?_=_.slice(0,-1):S=!0);else throw new Error(`Missing required param "${O}"`);_+=C}}return _||"/"}return{re:l,score:i,keys:n,parse:h,stringify:d}}function fN(e,t){let r=0;for(;r<e.length&&r<t.length;){const i=t[r]-e[r];if(i)return i;r++}return e.length<t.length?e.length===1&&e[0]===40+40?-1:1:e.length>t.length?t.length===1&&t[0]===40+40?1:-1:0}function bS(e,t){let r=0;const i=e.score,a=t.score;for(;r<i.length&&r<a.length;){const n=fN(i[r],a[r]);if(n)return n;r++}if(Math.abs(a.length-i.length)===1){if(Rb(i))return 1;if(Rb(a))return-1}return a.length-i.length}function Rb(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const lN={type:0,value:""},uN=/[a-zA-Z0-9_]/;function hN(e){if(!e)return[[]];if(e==="/")return[[lN]];if(!e.startsWith("/"))throw new Error(`Route paths should start with a "/": "${e}" should be "/${e}".`);function t(I){throw new Error(`ERR (${r})/"${m}": ${I}`)}let r=0,i=r;const a=[];let n;function l(){n&&a.push(n),n=[]}let h=0,d,m="",_="";function S(){m&&(r===0?n.push({type:0,value:m}):r===1||r===2||r===3?(n.length>1&&(d==="*"||d==="+")&&t(`A repeatable param (${m}) must be alone in its segment. eg: '/:ids+.`),n.push({type:1,value:m,regexp:_,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):t("Invalid state to consume buffer"),m="")}function R(){m+=d}for(;h<e.length;){if(d=e[h++],d==="\\"&&r!==2){i=r,r=4;continue}switch(r){case 0:d==="/"?(m&&S(),l()):d===":"?(S(),r=1):R();break;case 4:R(),r=i;break;case 1:d==="("?r=2:uN.test(d)?R():(S(),r=0,d!=="*"&&d!=="?"&&d!=="+"&&h--);break;case 2:d===")"?_[_.length-1]=="\\"?_=_.slice(0,-1)+d:r=3:_+=d;break;case 3:S(),r=0,d!=="*"&&d!=="?"&&d!=="+"&&h--,_="";break;default:t("Unknown state");break}}return r===2&&t(`Unfinished custom RegExp for param "${m}"`),S(),l(),a}function cN(e,t,r){const i=sN(hN(e.path),r);{const n=new Set;for(const l of i.keys)n.has(l.name)&&pt(`Found duplicated params with name "${l.name}" for path "${e.path}". Only the last one will be available on "$route.params".`),n.add(l.name)}const a=Ht(i,{record:e,parent:t,children:[],alias:[]});return t&&!a.record.aliasOf==!t.record.aliasOf&&t.children.push(a),a}function dN(e,t){const r=[],i=new Map;t=Ib({strict:!1,end:!0,sensitive:!1},t);function a(S){return i.get(S)}function n(S,R,I){const O=!I,L=Tb(S);mN(L,R),L.aliasOf=I&&I.record;const B=Ib(t,S),P=[L];if("alias"in S){const $=typeof S.alias=="string"?[S.alias]:S.alias;for(const W of $)P.push(Tb(Ht({},L,{components:I?I.record.components:L.components,path:W,aliasOf:I?I.record:L})))}let C,N;for(const $ of P){const{path:W}=$;if(R&&W[0]!=="/"){const G=R.record.path,re=G[G.length-1]==="/"?"":"/";$.path=R.record.path+(W&&re+W)}if($.path==="*")throw new Error(`Catch all routes ("*") must now be defined using a param with a custom regexp.
+See more at https://router.vuejs.org/guide/migration/#Removed-star-or-catch-all-routes.`);if(C=cN($,R,B),R&&W[0]==="/"&&yN(C,R),I?(I.alias.push(C),gN(I,C)):(N=N||C,N!==C&&N.alias.push(C),O&&S.name&&!Ob(C)&&l(S.name)),wS(C)&&d(C),L.children){const G=L.children;for(let re=0;re<G.length;re++)n(G[re],C,I&&I.children[re])}I=I||C}return N?()=>{l(N)}:Jf}function l(S){if(mS(S)){const R=i.get(S);R&&(i.delete(S),r.splice(r.indexOf(R),1),R.children.forEach(l),R.alias.forEach(l))}else{const R=r.indexOf(S);R>-1&&(r.splice(R,1),S.record.name&&i.delete(S.record.name),S.children.forEach(l),S.alias.forEach(l))}}function h(){return r}function d(S){const R=bN(S,r);r.splice(R,0,S),S.record.name&&!Ob(S)&&i.set(S.record.name,S)}function m(S,R){let I,O={},L,B;if("name"in S&&S.name){if(I=i.get(S.name),!I)throw Bs(1,{location:S});{const N=Object.keys(S.params||{}).filter($=>!I.keys.find(W=>W.name===$));N.length&&pt(`Discarded invalid param(s) "${N.join('", "')}" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`)}B=I.record.name,O=Ht(Ab(R.params,I.keys.filter(N=>!N.optional).concat(I.parent?I.parent.keys.filter(N=>N.optional):[]).map(N=>N.name)),S.params&&Ab(S.params,I.keys.map(N=>N.name))),L=I.stringify(O)}else if(S.path!=null)L=S.path,L.startsWith("/")||pt(`The Matcher cannot resolve relative paths but received "${L}". Unless you directly called \`matcher.resolve("${L}")\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`),I=r.find(N=>N.re.test(L)),I&&(O=I.parse(L),B=I.record.name);else{if(I=R.name?i.get(R.name):r.find(N=>N.re.test(R.path)),!I)throw Bs(1,{location:S,currentLocation:R});B=I.record.name,O=Ht({},R.params,S.params),L=I.stringify(O)}const P=[];let C=I;for(;C;)P.unshift(C.record),C=C.parent;return{name:B,path:L,params:O,matched:P,meta:vN(P)}}e.forEach(S=>n(S));function _(){r.length=0,i.clear()}return{addRoute:n,resolve:m,removeRoute:l,clearRoutes:_,getRoutes:h,getRecordMatcher:a}}function Ab(e,t){const r={};for(const i of t)i in e&&(r[i]=e[i]);return r}function Tb(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:pN(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function pN(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const i in e.components)t[i]=typeof r=="object"?r[i]:r;return t}function Ob(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function vN(e){return e.reduce((t,r)=>Ht(t,r.meta),{})}function Ib(e,t){const r={};for(const i in e)r[i]=i in t?t[i]:e[i];return r}function lv(e,t){return e.name===t.name&&e.optional===t.optional&&e.repeatable===t.repeatable}function gN(e,t){for(const r of e.keys)if(!r.optional&&!t.keys.find(lv.bind(null,r)))return pt(`Alias "${t.record.path}" and the original record: "${e.record.path}" must have the exact same param named "${r.name}"`);for(const r of t.keys)if(!r.optional&&!e.keys.find(lv.bind(null,r)))return pt(`Alias "${t.record.path}" and the original record: "${e.record.path}" must have the exact same param named "${r.name}"`)}function mN(e,t){t&&t.record.name&&!e.name&&!e.path&&pt(`The route named "${String(t.record.name)}" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`)}function yN(e,t){for(const r of t.keys)if(!e.keys.find(lv.bind(null,r)))return pt(`Absolute path "${e.record.path}" must have the exact same param named "${r.name}" as its parent "${t.record.path}".`)}function bN(e,t){let r=0,i=t.length;for(;r!==i;){const n=r+i>>1;bS(e,t[n])<0?i=n:r=n+1}const a=wN(e);return a&&(i=t.lastIndexOf(a,i-1),i<0&&pt(`Finding ancestor route "${a.record.path}" failed for "${e.record.path}"`)),i}function wN(e){let t=e;for(;t=t.parent;)if(wS(t)&&bS(e,t)===0)return t}function wS({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function _N(e){const t={};if(e===""||e==="?")return t;const i=(e[0]==="?"?e.slice(1):e).split("&");for(let a=0;a<i.length;++a){const n=i[a].replace(hS," "),l=n.indexOf("="),h=Cs(l<0?n:n.slice(0,l)),d=l<0?null:Cs(n.slice(l+1));if(h in t){let m=t[h];ri(m)||(m=t[h]=[m]),m.push(d)}else t[h]=d}return t}function Pb(e){let t="";for(let r in e){const i=e[r];if(r=$L(r),i==null){i!==void 0&&(t+=(t.length?"&":"")+r);continue}(ri(i)?i.map(n=>n&&sv(n)):[i&&sv(i)]).forEach(n=>{n!==void 0&&(t+=(t.length?"&":"")+r,n!=null&&(t+="="+n))})}return t}function MN(e){const t={};for(const r in e){const i=e[r];i!==void 0&&(t[r]=ri(i)?i.map(a=>a==null?null:""+a):i==null?i:""+i)}return t}const SN=Symbol("router view location matched"),Cb=Symbol("router view depth"),jg=Symbol("router"),_S=Symbol("route location"),uv=Symbol("router view location");function Ef(){let e=[];function t(i){return e.push(i),()=>{const a=e.indexOf(i);a>-1&&e.splice(a,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function Eo(e,t,r,i,a,n=l=>l()){const l=i&&(i.enterCallbacks[a]=i.enterCallbacks[a]||[]);return()=>new Promise((h,d)=>{const m=R=>{R===!1?d(Bs(4,{from:r,to:t})):R instanceof Error?d(R):_h(R)?d(Bs(2,{from:t,to:R})):(l&&i.enterCallbacks[a]===l&&typeof R=="function"&&l.push(R),h())},_=n(()=>e.call(i&&i.instances[a],t,r,xN(m,t,r)));let S=Promise.resolve(_);if(e.length<3&&(S=S.then(m)),e.length>2){const R=`The "next" callback was never called inside of ${e.name?'"'+e.name+'"':""}:
+${e.toString()}
+. If you are returning a value instead of calling "next", make sure to remove the "next" parameter from your function.`;if(typeof _=="object"&&"then"in _)S=S.then(I=>m._called?I:(pt(R),Promise.reject(new Error("Invalid navigation guard"))));else if(_!==void 0&&!m._called){pt(R),d(new Error("Invalid navigation guard"));return}}S.catch(R=>d(R))})}function xN(e,t,r){let i=0;return function(){i++===1&&pt(`The "next" callback was called more than once in one navigation guard when going from "${r.fullPath}" to "${t.fullPath}". It should be called exactly one time in each navigation guard. This will fail in production.`),e._called=!0,i===1&&e.apply(null,arguments)}}function s0(e,t,r,i,a=n=>n()){const n=[];for(const l of e){!l.components&&!l.children.length&&pt(`Record with path "${l.path}" is either missing a "component(s)" or "children" property.`);for(const h in l.components){let d=l.components[h];{if(!d||typeof d!="object"&&typeof d!="function")throw pt(`Component "${h}" in record with path "${l.path}" is not a valid component. Received "${String(d)}".`),new Error("Invalid route component");if("then"in d){pt(`Component "${h}" in record with path "${l.path}" is a Promise instead of a function that returns a Promise. Did you write "import('./MyPage.vue')" instead of "() => import('./MyPage.vue')" ? This will break in production if not fixed.`);const m=d;d=()=>m}else d.__asyncLoader&&!d.__warnedDefineAsync&&(d.__warnedDefineAsync=!0,pt(`Component "${h}" in record with path "${l.path}" is defined using "defineAsyncComponent()". Write "() => import('./MyPage.vue')" instead of "defineAsyncComponent(() => import('./MyPage.vue'))".`))}if(!(t!=="beforeRouteEnter"&&!l.instances[h]))if(lS(d)){const _=(d.__vccOpts||d)[t];_&&n.push(Eo(_,r,i,l,h,a))}else{let m=d();"catch"in m||(pt(`Component "${h}" in record with path "${l.path}" is a function that does not return a Promise. If you were passing a functional component, make sure to add a "displayName" to the component. This will break in production if not fixed.`),m=Promise.resolve(m)),n.push(()=>m.then(_=>{if(!_)throw new Error(`Couldn't resolve component "${h}" at "${l.path}"`);const S=RL(_)?_.default:_;l.mods[h]=_,l.components[h]=S;const I=(S.__vccOpts||S)[t];return I&&Eo(I,r,i,l,h,a)()}))}}}return n}function Bb(e){const t=vn(jg),r=vn(_S);let i=!1,a=null;const n=ar(()=>{const _=dn(e.to);return(!i||_!==a)&&(_h(_)||(i?pt(`Invalid value for prop "to" in useLink()
+- to:`,_,`
+- previous to:`,a,`
+- props:`,e):pt(`Invalid value for prop "to" in useLink()
+- to:`,_,`
+- props:`,e)),a=_,i=!0),t.resolve(_)}),l=ar(()=>{const{matched:_}=n.value,{length:S}=_,R=_[S-1],I=r.matched;if(!R||!I.length)return-1;const O=I.findIndex(qo.bind(null,R));if(O>-1)return O;const L=Lb(_[S-2]);return S>1&&Lb(R)===L&&I[I.length-1].path!==L?I.findIndex(qo.bind(null,_[S-2])):O}),h=ar(()=>l.value>-1&&TN(r.params,n.value.params)),d=ar(()=>l.value>-1&&l.value===r.matched.length-1&&vS(r.params,n.value.params));function m(_={}){return AN(_)?t[dn(e.replace)?"replace":"push"](dn(e.to)).catch(Jf):Promise.resolve()}if(Wn){const _=zr();if(_){const S={route:n.value,isActive:h.value,isExactActive:d.value,error:null};_.__vrl_devtools=_.__vrl_devtools||[],_.__vrl_devtools.push(S),hM(()=>{S.route=n.value,S.isActive=h.value,S.isExactActive=d.value,S.error=_h(dn(e.to))?null:'Invalid "to" value'},{flush:"post"})}}return{route:n,href:ar(()=>n.value.href),isActive:h,isExactActive:d,navigate:m}}const EN=Xs({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Bb,setup(e,{slots:t}){const r=Ia(Bb(e)),{options:i}=vn(jg),a=ar(()=>({[Nb(e.activeClass,i.linkActiveClass,"router-link-active")]:r.isActive,[Nb(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const n=t.default&&t.default(r);return e.custom?n:ec("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:a.value},n)}}}),RN=EN;function AN(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function TN(e,t){for(const r in t){const i=t[r],a=e[r];if(typeof i=="string"){if(i!==a)return!1}else if(!ri(a)||a.length!==i.length||i.some((n,l)=>n!==a[l]))return!1}return!0}function Lb(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Nb=(e,t,r)=>e??t??r,ON=Xs({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){PN();const i=vn(uv),a=ar(()=>e.route||i.value),n=vn(Cb,0),l=ar(()=>{let m=dn(n);const{matched:_}=a.value;let S;for(;(S=_[m])&&!S.components;)m++;return m}),h=ar(()=>a.value.matched[l.value]);Vf(Cb,ar(()=>l.value+1)),Vf(SN,h),Vf(uv,a);const d=Tr();return Or(()=>[d.value,h.value,e.name],([m,_,S],[R,I,O])=>{_&&(_.instances[S]=m,I&&I!==_&&m&&m===R&&(_.leaveGuards.size||(_.leaveGuards=I.leaveGuards),_.updateGuards.size||(_.updateGuards=I.updateGuards))),m&&_&&(!I||!qo(_,I)||!R)&&(_.enterCallbacks[S]||[]).forEach(L=>L(m))},{flush:"post"}),()=>{const m=a.value,_=e.name,S=h.value,R=S&&S.components[_];if(!R)return kb(r.default,{Component:R,route:m});const I=S.props[_],O=I?I===!0?m.params:typeof I=="function"?I(m):I:null,B=ec(R,Ht({},O,t,{onVnodeUnmounted:P=>{P.component.isUnmounted&&(S.instances[_]=null)},ref:d}));if(Wn&&B.ref){const P={depth:l.value,name:S.name,path:S.path,meta:S.meta};(ri(B.ref)?B.ref.map(N=>N.i):[B.ref.i]).forEach(N=>{N.__vrv_devtools=P})}return kb(r.default,{Component:B,route:m})||B}}});function kb(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const IN=ON;function PN(){const e=zr(),t=e.parent&&e.parent.type.name,r=e.parent&&e.parent.subTree&&e.parent.subTree.type;if(t&&(t==="KeepAlive"||t.includes("Transition"))&&typeof r=="object"&&r.name==="RouterView"){const i=t==="KeepAlive"?"keep-alive":"transition";pt(`<router-view> can no longer be used directly inside <transition> or <keep-alive>.
+Use slot props instead:
+
+<router-view v-slot="{ Component }">
+  <${i}>
+    <component :is="Component" />
+  </${i}>
+</router-view>`)}}function Rf(e,t){const r=Ht({},e,{matched:e.matched.map(i=>HN(i,["instances","children","aliasOf"]))});return{_custom:{type:null,readOnly:!0,display:e.fullPath,tooltip:t,value:r}}}function lu(e){return{_custom:{display:e}}}let CN=0;function BN(e,t,r){if(t.__hasDevtools)return;t.__hasDevtools=!0;const i=CN++;fS({id:"org.vuejs.router"+(i?"."+i:""),label:"Vue Router",packageName:"vue-router",homepage:"https://router.vuejs.org",logo:"https://router.vuejs.org/logo.png",componentStateTypes:["Routing"],app:e},a=>{typeof a.now!="function"&&console.warn("[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),a.on.inspectComponent((_,S)=>{_.instanceData&&_.instanceData.state.push({type:"Routing",key:"$route",editable:!1,value:Rf(t.currentRoute.value,"Current Route")})}),a.on.visitComponentTree(({treeNode:_,componentInstance:S})=>{if(S.__vrv_devtools){const R=S.__vrv_devtools;_.tags.push({label:(R.name?`${R.name.toString()}: `:"")+R.path,textColor:0,tooltip:"This component is rendered by &lt;router-view&gt;",backgroundColor:MS})}ri(S.__vrl_devtools)&&(S.__devtoolsApi=a,S.__vrl_devtools.forEach(R=>{let I=R.route.path,O=ES,L="",B=0;R.error?(I=R.error,O=DN,B=FN):R.isExactActive?(O=xS,L="This is exactly active"):R.isActive&&(O=SS,L="This link is active"),_.tags.push({label:I,textColor:B,tooltip:L,backgroundColor:O})}))}),Or(t.currentRoute,()=>{d(),a.notifyComponentUpdate(),a.sendInspectorTree(h),a.sendInspectorState(h)});const n="router:navigations:"+i;a.addTimelineLayer({id:n,label:`Router${i?" "+i:""} Navigations`,color:4237508}),t.onError((_,S)=>{a.addTimelineEvent({layerId:n,event:{title:"Error during Navigation",subtitle:S.fullPath,logType:"error",time:a.now(),data:{error:_},groupId:S.meta.__navigationId}})});let l=0;t.beforeEach((_,S)=>{const R={guard:lu("beforeEach"),from:Rf(S,"Current Location during this navigation"),to:Rf(_,"Target location")};Object.defineProperty(_.meta,"__navigationId",{value:l++}),a.addTimelineEvent({layerId:n,event:{time:a.now(),title:"Start of navigation",subtitle:_.fullPath,data:R,groupId:_.meta.__navigationId}})}),t.afterEach((_,S,R)=>{const I={guard:lu("afterEach")};R?(I.failure={_custom:{type:Error,readOnly:!0,display:R?R.message:"",tooltip:"Navigation Failure",value:R}},I.status=lu("❌")):I.status=lu("✅"),I.from=Rf(S,"Current Location during this navigation"),I.to=Rf(_,"Target location"),a.addTimelineEvent({layerId:n,event:{title:"End of navigation",subtitle:_.fullPath,time:a.now(),data:I,logType:R?"warning":"default",groupId:_.meta.__navigationId}})});const h="router-inspector:"+i;a.addInspector({id:h,label:"Routes"+(i?" "+i:""),icon:"book",treeFilterPlaceholder:"Search routes"});function d(){if(!m)return;const _=m;let S=r.getRoutes().filter(R=>!R.parent||!R.parent.record.components);S.forEach(TS),_.filter&&(S=S.filter(R=>hv(R,_.filter.toLowerCase()))),S.forEach(R=>AS(R,t.currentRoute.value)),_.rootNodes=S.map(RS)}let m;a.on.getInspectorTree(_=>{m=_,_.app===e&&_.inspectorId===h&&d()}),a.on.getInspectorState(_=>{if(_.app===e&&_.inspectorId===h){const R=r.getRoutes().find(I=>I.record.__vd_id===_.nodeId);R&&(_.state={options:NN(R)})}}),a.sendInspectorTree(h),a.sendInspectorState(h)})}function LN(e){return e.optional?e.repeatable?"*":"?":e.repeatable?"+":""}function NN(e){const{record:t}=e,r=[{editable:!1,key:"path",value:t.path}];return t.name!=null&&r.push({editable:!1,key:"name",value:t.name}),r.push({editable:!1,key:"regexp",value:e.re}),e.keys.length&&r.push({editable:!1,key:"keys",value:{_custom:{type:null,readOnly:!0,display:e.keys.map(i=>`${i.name}${LN(i)}`).join(" "),tooltip:"Param keys",value:e.keys}}}),t.redirect!=null&&r.push({editable:!1,key:"redirect",value:t.redirect}),e.alias.length&&r.push({editable:!1,key:"aliases",value:e.alias.map(i=>i.record.path)}),Object.keys(e.record.meta).length&&r.push({editable:!1,key:"meta",value:e.record.meta}),r.push({key:"score",editable:!1,value:{_custom:{type:null,readOnly:!0,display:e.score.map(i=>i.join(", ")).join(" | "),tooltip:"Score used to sort routes",value:e.score}}}),r}const MS=15485081,SS=2450411,xS=8702998,kN=2282478,ES=16486972,$N=6710886,DN=16704226,FN=12131356;function RS(e){const t=[],{record:r}=e;r.name!=null&&t.push({label:String(r.name),textColor:0,backgroundColor:kN}),r.aliasOf&&t.push({label:"alias",textColor:0,backgroundColor:ES}),e.__vd_match&&t.push({label:"matches",textColor:0,backgroundColor:MS}),e.__vd_exactActive&&t.push({label:"exact",textColor:0,backgroundColor:xS}),e.__vd_active&&t.push({label:"active",textColor:0,backgroundColor:SS}),r.redirect&&t.push({label:typeof r.redirect=="string"?`redirect: ${r.redirect}`:"redirects",textColor:16777215,backgroundColor:$N});let i=r.__vd_id;return i==null&&(i=String(jN++),r.__vd_id=i),{id:i,label:r.path,tags:t,children:e.children.map(RS)}}let jN=0;const UN=/^\/(.*)\/([a-z]*)$/;function AS(e,t){const r=t.matched.length&&qo(t.matched[t.matched.length-1],e.record);e.__vd_exactActive=e.__vd_active=r,r||(e.__vd_active=t.matched.some(i=>qo(i,e.record))),e.children.forEach(i=>AS(i,t))}function TS(e){e.__vd_match=!1,e.children.forEach(TS)}function hv(e,t){const r=String(e.re).match(UN);if(e.__vd_match=!1,!r||r.length<3)return!1;if(new RegExp(r[1].replace(/\$$/,""),r[2]).test(t))return e.children.forEach(l=>hv(l,t)),e.record.path!=="/"||t==="/"?(e.__vd_match=e.re.test(t),!0):!1;const a=e.record.path.toLowerCase(),n=Cs(a);return!t.startsWith("/")&&(n.includes(t)||a.includes(t))||n.startsWith(t)||a.startsWith(t)||e.record.name&&String(e.record.name).includes(t)?!0:e.children.some(l=>hv(l,t))}function HN(e,t){const r={};for(const i in e)t.includes(i)||(r[i]=e[i]);return r}function xY(e){const t=dN(e.routes,e),r=e.parseQuery||_N,i=e.stringifyQuery||Pb,a=e.history;if(!a)throw new Error('Provide the "history" option when calling "createRouter()": https://router.vuejs.org/api/interfaces/RouterOptions.html#history');const n=Ef(),l=Ef(),h=Ef(),d=Zv(yo);let m=yo;Wn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const _=o0.bind(null,E=>""+E),S=o0.bind(null,FL),R=o0.bind(null,Cs);function I(E,q){let V,X;return mS(E)?(V=t.getRecordMatcher(E),V||pt(`Parent route "${String(E)}" not found when adding child route`,q),X=q):X=E,t.addRoute(X,V)}function O(E){const q=t.getRecordMatcher(E);q?t.removeRoute(q):pt(`Cannot remove non-existent route "${String(E)}"`)}function L(){return t.getRoutes().map(E=>E.record)}function B(E){return!!t.getRecordMatcher(E)}function P(E,q){if(q=Ht({},q||d.value),typeof E=="string"){const U=a0(r,E,q.path),Z=t.resolve({path:U.path},q),j=a.createHref(U.fullPath);return j.startsWith("//")?pt(`Location "${E}" resolved to "${j}". A resolved location cannot start with multiple slashes.`):Z.matched.length||pt(`No match found for location with path "${E}"`),Ht(U,Z,{params:R(Z.params),hash:Cs(U.hash),redirectedFrom:void 0,href:j})}if(!_h(E))return pt(`router.resolve() was passed an invalid location. This will fail in production.
+- Location:`,E),P({});let V;if(E.path!=null)"params"in E&&!("name"in E)&&Object.keys(E.params).length&&pt(`Path "${E.path}" was passed with params but they will be ignored. Use a named route alongside params instead.`),V=Ht({},E,{path:a0(r,E.path,q.path).path});else{const U=Ht({},E.params);for(const Z in U)U[Z]==null&&delete U[Z];V=Ht({},E,{params:S(U)}),q.params=S(q.params)}const X=t.resolve(V,q),b=E.hash||"";b&&!b.startsWith("#")&&pt(`A \`hash\` should always start with the character "#". Replace "${b}" with "#${b}".`),X.params=_(R(X.params));const y=HL(i,Ht({},E,{hash:kL(b),path:X.path})),F=a.createHref(y);return F.startsWith("//")?pt(`Location "${E}" resolved to "${F}". A resolved location cannot start with multiple slashes.`):X.matched.length||pt(`No match found for location with path "${E.path!=null?E.path:E}"`),Ht({fullPath:y,hash:b,query:i===Pb?MN(E.query):E.query||{}},X,{redirectedFrom:void 0,href:F})}function C(E){return typeof E=="string"?a0(r,E,d.value.path):Ht({},E)}function N(E,q){if(m!==E)return Bs(8,{from:q,to:E})}function $(E){return re(E)}function W(E){return $(Ht(C(E),{replace:!0}))}function G(E){const q=E.matched[E.matched.length-1];if(q&&q.redirect){const{redirect:V}=q;let X=typeof V=="function"?V(E):V;if(typeof X=="string"&&(X=X.includes("?")||X.includes("#")?X=C(X):{path:X},X.params={}),X.path==null&&!("name"in X))throw pt(`Invalid redirect found:
+${JSON.stringify(X,null,2)}
+ when navigating to "${E.fullPath}". A redirect must contain a name or path. This will break in production.`),new Error("Invalid redirect");return Ht({query:E.query,hash:E.hash,params:X.path!=null?{}:E.params},X)}}function re(E,q){const V=m=P(E),X=d.value,b=E.state,y=E.force,F=E.replace===!0,U=G(V);if(U)return re(Ht(C(U),{state:typeof U=="object"?Ht({},b,U.state):b,force:y,replace:F}),q||V);const Z=V;Z.redirectedFrom=q;let j;return!y&&wb(i,X,V)&&(j=Bs(16,{to:Z,from:X}),v(X,X,!0,!1)),(j?Promise.resolve(j):se(Z,X)).catch(k=>Ln(k)?Ln(k,2)?k:s(k):x(k,Z,X)).then(k=>{if(k){if(Ln(k,2))return wb(i,P(k.to),Z)&&q&&(q._count=q._count?q._count+1:1)>30?(pt(`Detected a possibly infinite redirection in a navigation guard when going from "${X.fullPath}" to "${Z.fullPath}". Aborting to avoid a Stack Overflow.
+ Are you always returning a new location within a navigation guard? That would lead to this error. Only return when redirecting or aborting, that should fix this. This might break in production if not fixed.`),Promise.reject(new Error("Infinite redirect in navigation guard"))):re(Ht({replace:F},C(k.to),{state:typeof k.to=="object"?Ht({},b,k.to.state):b,force:y}),q||Z)}else k=o(Z,X,!0,F,b);return M(Z,X,k),k})}function J(E,q){const V=N(E,q);return V?Promise.reject(V):Promise.resolve()}function K(E){const q=Y.values().next().value;return q&&typeof q.runWithContext=="function"?q.runWithContext(E):E()}function se(E,q){let V;const[X,b,y]=qN(E,q);V=s0(X.reverse(),"beforeRouteLeave",E,q);for(const U of X)U.leaveGuards.forEach(Z=>{V.push(Eo(Z,E,q))});const F=J.bind(null,E,q);return V.push(F),A(V).then(()=>{V=[];for(const U of n.list())V.push(Eo(U,E,q));return V.push(F),A(V)}).then(()=>{V=s0(b,"beforeRouteUpdate",E,q);for(const U of b)U.updateGuards.forEach(Z=>{V.push(Eo(Z,E,q))});return V.push(F),A(V)}).then(()=>{V=[];for(const U of y)if(U.beforeEnter)if(ri(U.beforeEnter))for(const Z of U.beforeEnter)V.push(Eo(Z,E,q));else V.push(Eo(U.beforeEnter,E,q));return V.push(F),A(V)}).then(()=>(E.matched.forEach(U=>U.enterCallbacks={}),V=s0(y,"beforeRouteEnter",E,q,K),V.push(F),A(V))).then(()=>{V=[];for(const U of l.list())V.push(Eo(U,E,q));return V.push(F),A(V)}).catch(U=>Ln(U,8)?U:Promise.reject(U))}function M(E,q,V){h.list().forEach(X=>K(()=>X(E,q,V)))}function o(E,q,V,X,b){const y=N(E,q);if(y)return y;const F=q===yo,U=Wn?history.state:{};V&&(X||F?a.replace(E.fullPath,Ht({scroll:F&&U&&U.scroll},b)):a.push(E.fullPath,b)),d.value=E,v(E,q,V,F),s()}let f;function u(){f||(f=a.listen((E,q,V)=>{if(!Q.listening)return;const X=P(E),b=G(X);if(b){re(Ht(b,{replace:!0}),X).catch(Jf);return}m=X;const y=d.value;Wn&&ZL(Mb(y.fullPath,V.delta),yc()),se(X,y).catch(F=>Ln(F,12)?F:Ln(F,2)?(re(F.to,X).then(U=>{Ln(U,20)&&!V.delta&&V.type===pl.pop&&a.go(-1,!1)}).catch(Jf),Promise.reject()):(V.delta&&a.go(-V.delta,!1),x(F,X,y))).then(F=>{F=F||o(X,y,!1),F&&(V.delta&&!Ln(F,8)?a.go(-V.delta,!1):V.type===pl.pop&&Ln(F,20)&&a.go(-1,!1)),M(X,y,F)}).catch(Jf)}))}let c=Ef(),p=Ef(),w;function x(E,q,V){s(E);const X=p.list();return X.length?X.forEach(b=>b(E,q,V)):(pt("uncaught error during route navigation:"),console.error(E)),Promise.reject(E)}function g(){return w&&d.value!==yo?Promise.resolve():new Promise((E,q)=>{c.add([E,q])})}function s(E){return w||(w=!E,u(),c.list().forEach(([q,V])=>E?V(E):q()),c.reset()),E}function v(E,q,V,X){const{scrollBehavior:b}=e;if(!Wn||!b)return Promise.resolve();const y=!V&&XL(Mb(E.fullPath,0))||(X||!V)&&history.state&&history.state.scroll||null;return Zn().then(()=>b(E,q,y)).then(F=>F&&YL(F)).catch(F=>x(F,E,q))}const T=E=>a.go(E);let D;const Y=new Set,Q={currentRoute:d,listening:!0,addRoute:I,removeRoute:O,clearRoutes:t.clearRoutes,hasRoute:B,getRoutes:L,resolve:P,options:e,push:$,replace:W,go:T,back:()=>T(-1),forward:()=>T(1),beforeEach:n.add,beforeResolve:l.add,afterEach:h.add,onError:p.add,isReady:g,install(E){const q=this;E.component("RouterLink",RN),E.component("RouterView",IN),E.config.globalProperties.$router=q,Object.defineProperty(E.config.globalProperties,"$route",{enumerable:!0,get:()=>dn(d)}),Wn&&!D&&d.value===yo&&(D=!0,$(a.location).catch(b=>{pt("Unexpected error when starting the router:",b)}));const V={};for(const b in yo)Object.defineProperty(V,b,{get:()=>d.value[b],enumerable:!0});E.provide(jg,q),E.provide(_S,Gv(V)),E.provide(uv,d);const X=E.unmount;Y.add(E),E.unmount=function(){Y.delete(E),Y.size<1&&(m=yo,f&&f(),f=null,d.value=yo,D=!1,w=!1),X()},Wn&&BN(E,q,t)}};function A(E){return E.reduce((q,V)=>q.then(()=>K(V)),Promise.resolve())}return Q}function qN(e,t){const r=[],i=[],a=[],n=Math.max(t.matched.length,e.matched.length);for(let l=0;l<n;l++){const h=t.matched[l];h&&(e.matched.find(m=>qo(m,h))?i.push(h):r.push(h));const d=e.matched[l];d&&(t.matched.find(m=>qo(m,d))||a.push(d))}return[r,i,a]}/*!
+ * vuex v4.1.0
+ * (c) 2022 Evan You
+ * @license MIT
+ */var WN="store";function ka(e,t){Object.keys(e).forEach(function(r){return t(e[r],r)})}function KN(e){return e!==null&&typeof e=="object"}function VN(e){return e&&typeof e.then=="function"}function Gi(e,t){if(!e)throw new Error("[vuex] "+t)}function zN(e,t){return function(){return e(t)}}function OS(e,t,r){return t.indexOf(e)<0&&(r&&r.prepend?t.unshift(e):t.push(e)),function(){var i=t.indexOf(e);i>-1&&t.splice(i,1)}}function IS(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var r=e.state;bc(e,r,[],e._modules.root,!0),Ug(e,r,t)}function Ug(e,t,r){var i=e._state,a=e._scope;e.getters={},e._makeLocalGettersCache=Object.create(null);var n=e._wrappedGetters,l={},h={},d=J2(!0);d.run(function(){ka(n,function(m,_){l[_]=zN(m,e),h[_]=ar(function(){return l[_]()}),Object.defineProperty(e.getters,_,{get:function(){return h[_].value},enumerable:!0})})}),e._state=Ia({data:t}),e._scope=d,e.strict&&JN(e),i&&r&&e._withCommit(function(){i.data=null}),a&&a.stop()}function bc(e,t,r,i,a){var n=!r.length,l=e._modules.getNamespace(r);if(i.namespaced&&(e._modulesNamespaceMap[l]&&console.error("[vuex] duplicate namespace "+l+" for the namespaced module "+r.join("/")),e._modulesNamespaceMap[l]=i),!n&&!a){var h=Hg(t,r.slice(0,-1)),d=r[r.length-1];e._withCommit(function(){d in h&&console.warn('[vuex] state field "'+d+'" was overridden by a module with the same name at "'+r.join(".")+'"'),h[d]=i.state})}var m=i.context=GN(e,l,r);i.forEachMutation(function(_,S){var R=l+S;YN(e,R,_,m)}),i.forEachAction(function(_,S){var R=_.root?S:l+S,I=_.handler||_;ZN(e,R,I,m)}),i.forEachGetter(function(_,S){var R=l+S;XN(e,R,_,m)}),i.forEachChild(function(_,S){bc(e,t,r.concat(S),_,a)})}function GN(e,t,r){var i=t==="",a={dispatch:i?e.dispatch:function(n,l,h){var d=Mh(n,l,h),m=d.payload,_=d.options,S=d.type;if((!_||!_.root)&&(S=t+S,!e._actions[S])){console.error("[vuex] unknown local action type: "+d.type+", global type: "+S);return}return e.dispatch(S,m)},commit:i?e.commit:function(n,l,h){var d=Mh(n,l,h),m=d.payload,_=d.options,S=d.type;if((!_||!_.root)&&(S=t+S,!e._mutations[S])){console.error("[vuex] unknown local mutation type: "+d.type+", global type: "+S);return}e.commit(S,m,_)}};return Object.defineProperties(a,{getters:{get:i?function(){return e.getters}:function(){return PS(e,t)}},state:{get:function(){return Hg(e.state,r)}}}),a}function PS(e,t){if(!e._makeLocalGettersCache[t]){var r={},i=t.length;Object.keys(e.getters).forEach(function(a){if(a.slice(0,i)===t){var n=a.slice(i);Object.defineProperty(r,n,{get:function(){return e.getters[a]},enumerable:!0})}}),e._makeLocalGettersCache[t]=r}return e._makeLocalGettersCache[t]}function YN(e,t,r,i){var a=e._mutations[t]||(e._mutations[t]=[]);a.push(function(l){r.call(e,i.state,l)})}function ZN(e,t,r,i){var a=e._actions[t]||(e._actions[t]=[]);a.push(function(l){var h=r.call(e,{dispatch:i.dispatch,commit:i.commit,getters:i.getters,state:i.state,rootGetters:e.getters,rootState:e.state},l);return VN(h)||(h=Promise.resolve(h)),e._devtoolHook?h.catch(function(d){throw e._devtoolHook.emit("vuex:error",d),d}):h})}function XN(e,t,r,i){if(e._wrappedGetters[t]){console.error("[vuex] duplicate getter key: "+t);return}e._wrappedGetters[t]=function(n){return r(i.state,i.getters,n.state,n.getters)}}function JN(e){Or(function(){return e._state.data},function(){Gi(e._committing,"do not mutate vuex store state outside mutation handlers.")},{deep:!0,flush:"sync"})}function Hg(e,t){return t.reduce(function(r,i){return r[i]},e)}function Mh(e,t,r){return KN(e)&&e.type&&(r=t,t=e,e=e.type),Gi(typeof e=="string","expects string as the type, but found "+typeof e+"."),{type:e,payload:t,options:r}}var QN="vuex bindings",$b="vuex:mutations",f0="vuex:actions",Za="vuex",ek=0;function tk(e,t){fS({id:"org.vuejs.vuex",app:e,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:[QN]},function(r){r.addTimelineLayer({id:$b,label:"Vuex Mutations",color:Db}),r.addTimelineLayer({id:f0,label:"Vuex Actions",color:Db}),r.addInspector({id:Za,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),r.on.getInspectorTree(function(i){if(i.app===e&&i.inspectorId===Za)if(i.filter){var a=[];NS(a,t._modules.root,i.filter,""),i.rootNodes=a}else i.rootNodes=[LS(t._modules.root,"")]}),r.on.getInspectorState(function(i){if(i.app===e&&i.inspectorId===Za){var a=i.nodeId;PS(t,a),i.state=nk(ak(t._modules,a),a==="root"?t.getters:t._makeLocalGettersCache,a)}}),r.on.editInspectorState(function(i){if(i.app===e&&i.inspectorId===Za){var a=i.nodeId,n=i.path;a!=="root"&&(n=a.split("/").filter(Boolean).concat(n)),t._withCommit(function(){i.set(t._state.data,n,i.state.value)})}}),t.subscribe(function(i,a){var n={};i.payload&&(n.payload=i.payload),n.state=a,r.notifyComponentUpdate(),r.sendInspectorTree(Za),r.sendInspectorState(Za),r.addTimelineEvent({layerId:$b,event:{time:Date.now(),title:i.type,data:n}})}),t.subscribeAction({before:function(i,a){var n={};i.payload&&(n.payload=i.payload),i._id=ek++,i._time=Date.now(),n.state=a,r.addTimelineEvent({layerId:f0,event:{time:i._time,title:i.type,groupId:i._id,subtitle:"start",data:n}})},after:function(i,a){var n={},l=Date.now()-i._time;n.duration={_custom:{type:"duration",display:l+"ms",tooltip:"Action duration",value:l}},i.payload&&(n.payload=i.payload),n.state=a,r.addTimelineEvent({layerId:f0,event:{time:Date.now(),title:i.type,groupId:i._id,subtitle:"end",data:n}})}})})}var Db=8702998,rk=6710886,ik=16777215,CS={label:"namespaced",textColor:ik,backgroundColor:rk};function BS(e){return e&&e!=="root"?e.split("/").slice(-2,-1)[0]:"Root"}function LS(e,t){return{id:t||"root",label:BS(t),tags:e.namespaced?[CS]:[],children:Object.keys(e._children).map(function(r){return LS(e._children[r],t+r+"/")})}}function NS(e,t,r,i){i.includes(r)&&e.push({id:i||"root",label:i.endsWith("/")?i.slice(0,i.length-1):i||"Root",tags:t.namespaced?[CS]:[]}),Object.keys(t._children).forEach(function(a){NS(e,t._children[a],r,i+a+"/")})}function nk(e,t,r){t=r==="root"?t:t[r];var i=Object.keys(t),a={state:Object.keys(e.state).map(function(l){return{key:l,editable:!0,value:e.state[l]}})};if(i.length){var n=ok(t);a.getters=Object.keys(n).map(function(l){return{key:l.endsWith("/")?BS(l):l,editable:!1,value:cv(function(){return n[l]})}})}return a}function ok(e){var t={};return Object.keys(e).forEach(function(r){var i=r.split("/");if(i.length>1){var a=t,n=i.pop();i.forEach(function(l){a[l]||(a[l]={_custom:{value:{},display:l,tooltip:"Module",abstract:!0}}),a=a[l]._custom.value}),a[n]=cv(function(){return e[r]})}else t[r]=cv(function(){return e[r]})}),t}function ak(e,t){var r=t.split("/").filter(function(i){return i});return r.reduce(function(i,a,n){var l=i[a];if(!l)throw new Error('Missing module "'+a+'" for path "'+t+'".');return n===r.length-1?l:l._children},t==="root"?e:e.root._children)}function cv(e){try{return e()}catch(t){return t}}var Xi=function(t,r){this.runtime=r,this._children=Object.create(null),this._rawModule=t;var i=t.state;this.state=(typeof i=="function"?i():i)||{}},kS={namespaced:{configurable:!0}};kS.namespaced.get=function(){return!!this._rawModule.namespaced};Xi.prototype.addChild=function(t,r){this._children[t]=r};Xi.prototype.removeChild=function(t){delete this._children[t]};Xi.prototype.getChild=function(t){return this._children[t]};Xi.prototype.hasChild=function(t){return t in this._children};Xi.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)};Xi.prototype.forEachChild=function(t){ka(this._children,t)};Xi.prototype.forEachGetter=function(t){this._rawModule.getters&&ka(this._rawModule.getters,t)};Xi.prototype.forEachAction=function(t){this._rawModule.actions&&ka(this._rawModule.actions,t)};Xi.prototype.forEachMutation=function(t){this._rawModule.mutations&&ka(this._rawModule.mutations,t)};Object.defineProperties(Xi.prototype,kS);var $a=function(t){this.register([],t,!1)};$a.prototype.get=function(t){return t.reduce(function(r,i){return r.getChild(i)},this.root)};$a.prototype.getNamespace=function(t){var r=this.root;return t.reduce(function(i,a){return r=r.getChild(a),i+(r.namespaced?a+"/":"")},"")};$a.prototype.update=function(t){$S([],this.root,t)};$a.prototype.register=function(t,r,i){var a=this;i===void 0&&(i=!0),DS(t,r);var n=new Xi(r,i);if(t.length===0)this.root=n;else{var l=this.get(t.slice(0,-1));l.addChild(t[t.length-1],n)}r.modules&&ka(r.modules,function(h,d){a.register(t.concat(d),h,i)})};$a.prototype.unregister=function(t){var r=this.get(t.slice(0,-1)),i=t[t.length-1],a=r.getChild(i);if(!a){console.warn("[vuex] trying to unregister module '"+i+"', which is not registered");return}a.runtime&&r.removeChild(i)};$a.prototype.isRegistered=function(t){var r=this.get(t.slice(0,-1)),i=t[t.length-1];return r?r.hasChild(i):!1};function $S(e,t,r){if(DS(e,r),t.update(r),r.modules)for(var i in r.modules){if(!t.getChild(i)){console.warn("[vuex] trying to add a new module '"+i+"' on hot reloading, manual reload is needed");return}$S(e.concat(i),t.getChild(i),r.modules[i])}}var Fb={assert:function(e){return typeof e=="function"},expected:"function"},sk={assert:function(e){return typeof e=="function"||typeof e=="object"&&typeof e.handler=="function"},expected:'function or object with "handler" function'},jb={getters:Fb,mutations:Fb,actions:sk};function DS(e,t){Object.keys(jb).forEach(function(r){if(t[r]){var i=jb[r];ka(t[r],function(a,n){Gi(i.assert(a),fk(e,r,n,a,i.expected))})}})}function fk(e,t,r,i,a){var n=t+" should be "+a+' but "'+t+"."+r+'"';return e.length>0&&(n+=' in module "'+e.join(".")+'"'),n+=" is "+JSON.stringify(i)+".",n}function EY(e){return new ei(e)}var ei=function e(t){var r=this;t===void 0&&(t={}),Gi(typeof Promise<"u","vuex requires a Promise polyfill in this browser."),Gi(this instanceof e,"store must be called with the new operator.");var i=t.plugins;i===void 0&&(i=[]);var a=t.strict;a===void 0&&(a=!1);var n=t.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new $a(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._scope=null,this._devtools=n;var l=this,h=this,d=h.dispatch,m=h.commit;this.dispatch=function(R,I){return d.call(l,R,I)},this.commit=function(R,I,O){return m.call(l,R,I,O)},this.strict=a;var _=this._modules.root.state;bc(this,_,[],this._modules.root),Ug(this,_),i.forEach(function(S){return S(r)})},qg={state:{configurable:!0}};ei.prototype.install=function(t,r){t.provide(r||WN,this),t.config.globalProperties.$store=this;var i=this._devtools!==void 0?this._devtools:!0;i&&tk(t,this)};qg.state.get=function(){return this._state.data};qg.state.set=function(e){Gi(!1,"use store.replaceState() to explicit replace store state.")};ei.prototype.commit=function(t,r,i){var a=this,n=Mh(t,r,i),l=n.type,h=n.payload,d=n.options,m={type:l,payload:h},_=this._mutations[l];if(!_){console.error("[vuex] unknown mutation type: "+l);return}this._withCommit(function(){_.forEach(function(R){R(h)})}),this._subscribers.slice().forEach(function(S){return S(m,a.state)}),d&&d.silent&&console.warn("[vuex] mutation type: "+l+". Silent option has been removed. Use the filter functionality in the vue-devtools")};ei.prototype.dispatch=function(t,r){var i=this,a=Mh(t,r),n=a.type,l=a.payload,h={type:n,payload:l},d=this._actions[n];if(!d){console.error("[vuex] unknown action type: "+n);return}try{this._actionSubscribers.slice().filter(function(_){return _.before}).forEach(function(_){return _.before(h,i.state)})}catch(_){console.warn("[vuex] error in before action subscribers: "),console.error(_)}var m=d.length>1?Promise.all(d.map(function(_){return _(l)})):d[0](l);return new Promise(function(_,S){m.then(function(R){try{i._actionSubscribers.filter(function(I){return I.after}).forEach(function(I){return I.after(h,i.state)})}catch(I){console.warn("[vuex] error in after action subscribers: "),console.error(I)}_(R)},function(R){try{i._actionSubscribers.filter(function(I){return I.error}).forEach(function(I){return I.error(h,i.state,R)})}catch(I){console.warn("[vuex] error in error action subscribers: "),console.error(I)}S(R)})})};ei.prototype.subscribe=function(t,r){return OS(t,this._subscribers,r)};ei.prototype.subscribeAction=function(t,r){var i=typeof t=="function"?{before:t}:t;return OS(i,this._actionSubscribers,r)};ei.prototype.watch=function(t,r,i){var a=this;return Gi(typeof t=="function","store.watch only accepts a function."),Or(function(){return t(a.state,a.getters)},r,Object.assign({},i))};ei.prototype.replaceState=function(t){var r=this;this._withCommit(function(){r._state.data=t})};ei.prototype.registerModule=function(t,r,i){i===void 0&&(i={}),typeof t=="string"&&(t=[t]),Gi(Array.isArray(t),"module path must be a string or an Array."),Gi(t.length>0,"cannot register the root module by using registerModule."),this._modules.register(t,r),bc(this,this.state,t,this._modules.get(t),i.preserveState),Ug(this,this.state)};ei.prototype.unregisterModule=function(t){var r=this;typeof t=="string"&&(t=[t]),Gi(Array.isArray(t),"module path must be a string or an Array."),this._modules.unregister(t),this._withCommit(function(){var i=Hg(r.state,t.slice(0,-1));delete i[t[t.length-1]]}),IS(this)};ei.prototype.hasModule=function(t){return typeof t=="string"&&(t=[t]),Gi(Array.isArray(t),"module path must be a string or an Array."),this._modules.isRegistered(t)};ei.prototype.hotUpdate=function(t){this._modules.update(t),IS(this,!0)};ei.prototype._withCommit=function(t){var r=this._committing;this._committing=!0,t(),this._committing=r};Object.defineProperties(ei.prototype,qg);function lk(e,t,r){var i=-1,a=e.length;t<0&&(t=-t>a?0:a+t),r=r>a?a:r,r<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var n=Array(a);++i<a;)n[i]=e[i+t];return n}var uk=lk,hk=uk;function ck(e,t,r){var i=e.length;return r=r===void 0?i:r,!t&&r>=i?e:hk(e,t,r)}var dk=ck,pk="\\ud800-\\udfff",vk="\\u0300-\\u036f",gk="\\ufe20-\\ufe2f",mk="\\u20d0-\\u20ff",yk=vk+gk+mk,bk="\\ufe0e\\ufe0f",wk="\\u200d",_k=RegExp("["+wk+pk+yk+bk+"]");function Mk(e){return _k.test(e)}var FS=Mk;function Sk(e){return e.split("")}var xk=Sk,jS="\\ud800-\\udfff",Ek="\\u0300-\\u036f",Rk="\\ufe20-\\ufe2f",Ak="\\u20d0-\\u20ff",Tk=Ek+Rk+Ak,Ok="\\ufe0e\\ufe0f",Ik="["+jS+"]",dv="["+Tk+"]",pv="\\ud83c[\\udffb-\\udfff]",Pk="(?:"+dv+"|"+pv+")",US="[^"+jS+"]",HS="(?:\\ud83c[\\udde6-\\uddff]){2}",qS="[\\ud800-\\udbff][\\udc00-\\udfff]",Ck="\\u200d",WS=Pk+"?",KS="["+Ok+"]?",Bk="(?:"+Ck+"(?:"+[US,HS,qS].join("|")+")"+KS+WS+")*",Lk=KS+WS+Bk,Nk="(?:"+[US+dv+"?",dv,HS,qS,Ik].join("|")+")",kk=RegExp(pv+"(?="+pv+")|"+Nk+Lk,"g");function $k(e){return e.match(kk)||[]}var Dk=$k,Fk=xk,jk=FS,Uk=Dk;function Hk(e){return jk(e)?Uk(e):Fk(e)}var qk=Hk,Wk=typeof Ze=="object"&&Ze&&Ze.Object===Object&&Ze,Kk=Wk,Vk=Kk,zk=typeof self=="object"&&self&&self.Object===Object&&self,Gk=Vk||zk||Function("return this")(),Yk=Gk,Zk=Yk,Xk=Zk.Symbol,Wg=Xk;function Jk(e,t){for(var r=-1,i=e==null?0:e.length,a=Array(i);++r<i;)a[r]=t(e[r],r,e);return a}var Qk=Jk,e$=Array.isArray,t$=e$,Ub=Wg,VS=Object.prototype,r$=VS.hasOwnProperty,i$=VS.toString,Af=Ub?Ub.toStringTag:void 0;function n$(e){var t=r$.call(e,Af),r=e[Af];try{e[Af]=void 0;var i=!0}catch{}var a=i$.call(e);return i&&(t?e[Af]=r:delete e[Af]),a}var o$=n$,a$=Object.prototype,s$=a$.toString;function f$(e){return s$.call(e)}var l$=f$,Hb=Wg,u$=o$,h$=l$,c$="[object Null]",d$="[object Undefined]",qb=Hb?Hb.toStringTag:void 0;function p$(e){return e==null?e===void 0?d$:c$:qb&&qb in Object(e)?u$(e):h$(e)}var v$=p$;function g$(e){return e!=null&&typeof e=="object"}var m$=g$,y$=v$,b$=m$,w$="[object Symbol]";function _$(e){return typeof e=="symbol"||b$(e)&&y$(e)==w$}var M$=_$,Wb=Wg,S$=Qk,x$=t$,E$=M$,R$=1/0,Kb=Wb?Wb.prototype:void 0,Vb=Kb?Kb.toString:void 0;function zS(e){if(typeof e=="string")return e;if(x$(e))return S$(e,zS)+"";if(E$(e))return Vb?Vb.call(e):"";var t=e+"";return t=="0"&&1/e==-R$?"-0":t}var A$=zS,T$=A$;function O$(e){return e==null?"":T$(e)}var wc=O$,I$=dk,P$=FS,C$=qk,B$=wc;function L$(e){return function(t){t=B$(t);var r=P$(t)?C$(t):void 0,i=r?r[0]:t.charAt(0),a=r?I$(r,1).join(""):t.slice(1);return i[e]()+a}}var N$=L$,k$=N$,$$=k$("toUpperCase"),GS=$$;const RY=Vo(GS);var D$=wc,F$=GS;function j$(e){return F$(D$(e).toLowerCase())}var U$=j$;function H$(e,t,r,i){var a=-1,n=e==null?0:e.length;for(i&&n&&(r=e[++a]);++a<n;)r=t(r,e[a],a,e);return r}var q$=H$;function W$(e){return function(t){return e==null?void 0:e[t]}}var K$=W$,V$=K$,z$={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",Ĳ:"IJ",ĳ:"ij",Œ:"Oe",œ:"oe",ŉ:"'n",ſ:"s"},G$=V$(z$),Y$=G$,Z$=Y$,X$=wc,J$=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Q$="\\u0300-\\u036f",eD="\\ufe20-\\ufe2f",tD="\\u20d0-\\u20ff",rD=Q$+eD+tD,iD="["+rD+"]",nD=RegExp(iD,"g");function oD(e){return e=X$(e),e&&e.replace(J$,Z$).replace(nD,"")}var aD=oD,sD=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function fD(e){return e.match(sD)||[]}var lD=fD,uD=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function hD(e){return uD.test(e)}var cD=hD,YS="\\ud800-\\udfff",dD="\\u0300-\\u036f",pD="\\ufe20-\\ufe2f",vD="\\u20d0-\\u20ff",gD=dD+pD+vD,ZS="\\u2700-\\u27bf",XS="a-z\\xdf-\\xf6\\xf8-\\xff",mD="\\xac\\xb1\\xd7\\xf7",yD="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",bD="\\u2000-\\u206f",wD=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",JS="A-Z\\xc0-\\xd6\\xd8-\\xde",_D="\\ufe0e\\ufe0f",QS=mD+yD+bD+wD,ex="['’]",zb="["+QS+"]",MD="["+gD+"]",tx="\\d+",SD="["+ZS+"]",rx="["+XS+"]",ix="[^"+YS+QS+tx+ZS+XS+JS+"]",xD="\\ud83c[\\udffb-\\udfff]",ED="(?:"+MD+"|"+xD+")",RD="[^"+YS+"]",nx="(?:\\ud83c[\\udde6-\\uddff]){2}",ox="[\\ud800-\\udbff][\\udc00-\\udfff]",rs="["+JS+"]",AD="\\u200d",Gb="(?:"+rx+"|"+ix+")",TD="(?:"+rs+"|"+ix+")",Yb="(?:"+ex+"(?:d|ll|m|re|s|t|ve))?",Zb="(?:"+ex+"(?:D|LL|M|RE|S|T|VE))?",ax=ED+"?",sx="["+_D+"]?",OD="(?:"+AD+"(?:"+[RD,nx,ox].join("|")+")"+sx+ax+")*",ID="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",PD="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",CD=sx+ax+OD,BD="(?:"+[SD,nx,ox].join("|")+")"+CD,LD=RegExp([rs+"?"+rx+"+"+Yb+"(?="+[zb,rs,"$"].join("|")+")",TD+"+"+Zb+"(?="+[zb,rs+Gb,"$"].join("|")+")",rs+"?"+Gb+"+"+Yb,rs+"+"+Zb,PD,ID,tx,BD].join("|"),"g");function ND(e){return e.match(LD)||[]}var kD=ND,$D=lD,DD=cD,FD=wc,jD=kD;function UD(e,t,r){return e=FD(e),t=r?void 0:t,t===void 0?DD(e)?jD(e):$D(e):e.match(t)||[]}var HD=UD,qD=q$,WD=aD,KD=HD,VD="['’]",zD=RegExp(VD,"g");function GD(e){return function(t){return qD(KD(WD(t).replace(zD,"")),e,"")}}var YD=GD,ZD=U$,XD=YD,JD=XD(function(e,t,r){return t=t.toLowerCase(),e+(r?ZD(t):t)}),QD=JD;const AY=Vo(QD);/**!
+ * @fileOverview Kickass library to create and place poppers near their reference elements.
+ * @version 1.16.1
+ * @license
+ * Copyright (c) 2016 Federico Zivolo and contributors
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */var Bl=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",eF=function(){for(var e=["Edge","Trident","Firefox"],t=0;t<e.length;t+=1)if(Bl&&navigator.userAgent.indexOf(e[t])>=0)return 1;return 0}();function tF(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}function rF(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},eF))}}var iF=Bl&&window.Promise,nF=iF?tF:rF;function fx(e){var t={};return e&&t.toString.call(e)==="[object Function]"}function Da(e,t){if(e.nodeType!==1)return[];var r=e.ownerDocument.defaultView,i=r.getComputedStyle(e,null);return t?i[t]:i}function Kg(e){return e.nodeName==="HTML"?e:e.parentNode||e.host}function Ll(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=Da(e),r=t.overflow,i=t.overflowX,a=t.overflowY;return/(auto|scroll|overlay)/.test(r+a+i)?e:Ll(Kg(e))}function lx(e){return e&&e.referenceNode?e.referenceNode:e}var Xb=Bl&&!!(window.MSInputMethodContext&&document.documentMode),Jb=Bl&&/MSIE 10/.test(navigator.userAgent);function tf(e){return e===11?Xb:e===10?Jb:Xb||Jb}function Ls(e){if(!e)return document.documentElement;for(var t=tf(10)?document.body:null,r=e.offsetParent||null;r===t&&e.nextElementSibling;)r=(e=e.nextElementSibling).offsetParent;var i=r&&r.nodeName;return!i||i==="BODY"||i==="HTML"?e?e.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(r.nodeName)!==-1&&Da(r,"position")==="static"?Ls(r):r}function oF(e){var t=e.nodeName;return t==="BODY"?!1:t==="HTML"||Ls(e.firstElementChild)===e}function vv(e){return e.parentNode!==null?vv(e.parentNode):e}function Sh(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var r=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=r?e:t,a=r?t:e,n=document.createRange();n.setStart(i,0),n.setEnd(a,0);var l=n.commonAncestorContainer;if(e!==l&&t!==l||i.contains(a))return oF(l)?l:Ls(l);var h=vv(e);return h.host?Sh(h.host,t):Sh(e,vv(t).host)}function Ns(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",r=t==="top"?"scrollTop":"scrollLeft",i=e.nodeName;if(i==="BODY"||i==="HTML"){var a=e.ownerDocument.documentElement,n=e.ownerDocument.scrollingElement||a;return n[r]}return e[r]}function aF(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=Ns(t,"top"),a=Ns(t,"left"),n=r?-1:1;return e.top+=i*n,e.bottom+=i*n,e.left+=a*n,e.right+=a*n,e}function Qb(e,t){var r=t==="x"?"Left":"Top",i=r==="Left"?"Right":"Bottom";return parseFloat(e["border"+r+"Width"])+parseFloat(e["border"+i+"Width"])}function ew(e,t,r,i){return Math.max(t["offset"+e],t["scroll"+e],r["client"+e],r["offset"+e],r["scroll"+e],tf(10)?parseInt(r["offset"+e])+parseInt(i["margin"+(e==="Height"?"Top":"Left")])+parseInt(i["margin"+(e==="Height"?"Bottom":"Right")]):0)}function ux(e){var t=e.body,r=e.documentElement,i=tf(10)&&getComputedStyle(r);return{height:ew("Height",t,r,i),width:ew("Width",t,r,i)}}var sF=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},fF=function(){function e(t,r){for(var i=0;i<r.length;i++){var a=r[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),ks=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},mi=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e};function Wo(e){return mi({},e,{right:e.left+e.width,bottom:e.top+e.height})}function gv(e){var t={};try{if(tf(10)){t=e.getBoundingClientRect();var r=Ns(e,"top"),i=Ns(e,"left");t.top+=r,t.left+=i,t.bottom+=r,t.right+=i}else t=e.getBoundingClientRect()}catch{}var a={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},n=e.nodeName==="HTML"?ux(e.ownerDocument):{},l=n.width||e.clientWidth||a.width,h=n.height||e.clientHeight||a.height,d=e.offsetWidth-l,m=e.offsetHeight-h;if(d||m){var _=Da(e);d-=Qb(_,"x"),m-=Qb(_,"y"),a.width-=d,a.height-=m}return Wo(a)}function Vg(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=tf(10),a=t.nodeName==="HTML",n=gv(e),l=gv(t),h=Ll(e),d=Da(t),m=parseFloat(d.borderTopWidth),_=parseFloat(d.borderLeftWidth);r&&a&&(l.top=Math.max(l.top,0),l.left=Math.max(l.left,0));var S=Wo({top:n.top-l.top-m,left:n.left-l.left-_,width:n.width,height:n.height});if(S.marginTop=0,S.marginLeft=0,!i&&a){var R=parseFloat(d.marginTop),I=parseFloat(d.marginLeft);S.top-=m-R,S.bottom-=m-R,S.left-=_-I,S.right-=_-I,S.marginTop=R,S.marginLeft=I}return(i&&!r?t.contains(h):t===h&&h.nodeName!=="BODY")&&(S=aF(S,t)),S}function lF(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=e.ownerDocument.documentElement,i=Vg(e,r),a=Math.max(r.clientWidth,window.innerWidth||0),n=Math.max(r.clientHeight,window.innerHeight||0),l=t?0:Ns(r),h=t?0:Ns(r,"left"),d={top:l-i.top+i.marginTop,left:h-i.left+i.marginLeft,width:a,height:n};return Wo(d)}function hx(e){var t=e.nodeName;if(t==="BODY"||t==="HTML")return!1;if(Da(e,"position")==="fixed")return!0;var r=Kg(e);return r?hx(r):!1}function cx(e){if(!e||!e.parentElement||tf())return document.documentElement;for(var t=e.parentElement;t&&Da(t,"transform")==="none";)t=t.parentElement;return t||document.documentElement}function zg(e,t,r,i){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,n={top:0,left:0},l=a?cx(e):Sh(e,lx(t));if(i==="viewport")n=lF(l,a);else{var h=void 0;i==="scrollParent"?(h=Ll(Kg(t)),h.nodeName==="BODY"&&(h=e.ownerDocument.documentElement)):i==="window"?h=e.ownerDocument.documentElement:h=i;var d=Vg(h,l,a);if(h.nodeName==="HTML"&&!hx(l)){var m=ux(e.ownerDocument),_=m.height,S=m.width;n.top+=d.top-d.marginTop,n.bottom=_+d.top,n.left+=d.left-d.marginLeft,n.right=S+d.left}else n=d}r=r||0;var R=typeof r=="number";return n.left+=R?r:r.left||0,n.top+=R?r:r.top||0,n.right-=R?r:r.right||0,n.bottom-=R?r:r.bottom||0,n}function uF(e){var t=e.width,r=e.height;return t*r}function dx(e,t,r,i,a){var n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(e.indexOf("auto")===-1)return e;var l=zg(r,i,n,a),h={top:{width:l.width,height:t.top-l.top},right:{width:l.right-t.right,height:l.height},bottom:{width:l.width,height:l.bottom-t.bottom},left:{width:t.left-l.left,height:l.height}},d=Object.keys(h).map(function(R){return mi({key:R},h[R],{area:uF(h[R])})}).sort(function(R,I){return I.area-R.area}),m=d.filter(function(R){var I=R.width,O=R.height;return I>=r.clientWidth&&O>=r.clientHeight}),_=m.length>0?m[0].key:d[0].key,S=e.split("-")[1];return _+(S?"-"+S:"")}function px(e,t,r){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,a=i?cx(t):Sh(t,lx(r));return Vg(r,a,i)}function vx(e){var t=e.ownerDocument.defaultView,r=t.getComputedStyle(e),i=parseFloat(r.marginTop||0)+parseFloat(r.marginBottom||0),a=parseFloat(r.marginLeft||0)+parseFloat(r.marginRight||0),n={width:e.offsetWidth+a,height:e.offsetHeight+i};return n}function xh(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(r){return t[r]})}function gx(e,t,r){r=r.split("-")[0];var i=vx(e),a={width:i.width,height:i.height},n=["right","left"].indexOf(r)!==-1,l=n?"top":"left",h=n?"left":"top",d=n?"height":"width",m=n?"width":"height";return a[l]=t[l]+t[d]/2-i[d]/2,r===h?a[h]=t[h]-i[m]:a[h]=t[xh(h)],a}function Nl(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function hF(e,t,r){if(Array.prototype.findIndex)return e.findIndex(function(a){return a[t]===r});var i=Nl(e,function(a){return a[t]===r});return e.indexOf(i)}function mx(e,t,r){var i=r===void 0?e:e.slice(0,hF(e,"name",r));return i.forEach(function(a){a.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=a.function||a.fn;a.enabled&&fx(n)&&(t.offsets.popper=Wo(t.offsets.popper),t.offsets.reference=Wo(t.offsets.reference),t=n(t,a))}),t}function cF(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=px(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=dx(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=gx(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=mx(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function yx(e,t){return e.some(function(r){var i=r.name,a=r.enabled;return a&&i===t})}function Gg(e){for(var t=[!1,"ms","Webkit","Moz","O"],r=e.charAt(0).toUpperCase()+e.slice(1),i=0;i<t.length;i++){var a=t[i],n=a?""+a+r:e;if(typeof document.body.style[n]<"u")return n}return null}function dF(){return this.state.isDestroyed=!0,yx(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[Gg("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function bx(e){var t=e.ownerDocument;return t?t.defaultView:window}function _x(e,t,r,i){var a=e.nodeName==="BODY",n=a?e.ownerDocument.defaultView:e;n.addEventListener(t,r,{passive:!0}),a||_x(Ll(n.parentNode),t,r,i),i.push(n)}function pF(e,t,r,i){r.updateBound=i,bx(e).addEventListener("resize",r.updateBound,{passive:!0});var a=Ll(e);return _x(a,"scroll",r.updateBound,r.scrollParents),r.scrollElement=a,r.eventsEnabled=!0,r}function vF(){this.state.eventsEnabled||(this.state=pF(this.reference,this.options,this.state,this.scheduleUpdate))}function gF(e,t){return bx(e).removeEventListener("resize",t.updateBound),t.scrollParents.forEach(function(r){r.removeEventListener("scroll",t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function mF(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=gF(this.reference,this.state))}function Yg(e){return e!==""&&!isNaN(parseFloat(e))&&isFinite(e)}function mv(e,t){Object.keys(t).forEach(function(r){var i="";["width","height","top","right","bottom","left"].indexOf(r)!==-1&&Yg(t[r])&&(i="px"),e.style[r]=t[r]+i})}function yF(e,t){Object.keys(t).forEach(function(r){var i=t[r];i!==!1?e.setAttribute(r,t[r]):e.removeAttribute(r)})}function bF(e){return mv(e.instance.popper,e.styles),yF(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&mv(e.arrowElement,e.arrowStyles),e}function wF(e,t,r,i,a){var n=px(a,t,e,r.positionFixed),l=dx(r.placement,n,t,e,r.modifiers.flip.boundariesElement,r.modifiers.flip.padding);return t.setAttribute("x-placement",l),mv(t,{position:r.positionFixed?"fixed":"absolute"}),r}function _F(e,t){var r=e.offsets,i=r.popper,a=r.reference,n=Math.round,l=Math.floor,h=function(P){return P},d=n(a.width),m=n(i.width),_=["left","right"].indexOf(e.placement)!==-1,S=e.placement.indexOf("-")!==-1,R=d%2===m%2,I=d%2===1&&m%2===1,O=t?_||S||R?n:l:h,L=t?n:h;return{left:O(I&&!S&&t?i.left-1:i.left),top:L(i.top),bottom:L(i.bottom),right:O(i.right)}}var MF=Bl&&/Firefox/i.test(navigator.userAgent);function SF(e,t){var r=t.x,i=t.y,a=e.offsets.popper,n=Nl(e.instance.modifiers,function(N){return N.name==="applyStyle"}).gpuAcceleration;n!==void 0&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var l=n!==void 0?n:t.gpuAcceleration,h=Ls(e.instance.popper),d=gv(h),m={position:a.position},_=_F(e,window.devicePixelRatio<2||!MF),S=r==="bottom"?"top":"bottom",R=i==="right"?"left":"right",I=Gg("transform"),O=void 0,L=void 0;if(S==="bottom"?h.nodeName==="HTML"?L=-h.clientHeight+_.bottom:L=-d.height+_.bottom:L=_.top,R==="right"?h.nodeName==="HTML"?O=-h.clientWidth+_.right:O=-d.width+_.right:O=_.left,l&&I)m[I]="translate3d("+O+"px, "+L+"px, 0)",m[S]=0,m[R]=0,m.willChange="transform";else{var B=S==="bottom"?-1:1,P=R==="right"?-1:1;m[S]=L*B,m[R]=O*P,m.willChange=S+", "+R}var C={"x-placement":e.placement};return e.attributes=mi({},C,e.attributes),e.styles=mi({},m,e.styles),e.arrowStyles=mi({},e.offsets.arrow,e.arrowStyles),e}function Mx(e,t,r){var i=Nl(e,function(h){var d=h.name;return d===t}),a=!!i&&e.some(function(h){return h.name===r&&h.enabled&&h.order<i.order});if(!a){var n="`"+t+"`",l="`"+r+"`";console.warn(l+" modifier is required by "+n+" modifier in order to work, be sure to include it before "+n+"!")}return a}function xF(e,t){var r;if(!Mx(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if(typeof i=="string"){if(i=e.instance.popper.querySelector(i),!i)return e}else if(!e.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var a=e.placement.split("-")[0],n=e.offsets,l=n.popper,h=n.reference,d=["left","right"].indexOf(a)!==-1,m=d?"height":"width",_=d?"Top":"Left",S=_.toLowerCase(),R=d?"left":"top",I=d?"bottom":"right",O=vx(i)[m];h[I]-O<l[S]&&(e.offsets.popper[S]-=l[S]-(h[I]-O)),h[S]+O>l[I]&&(e.offsets.popper[S]+=h[S]+O-l[I]),e.offsets.popper=Wo(e.offsets.popper);var L=h[S]+h[m]/2-O/2,B=Da(e.instance.popper),P=parseFloat(B["margin"+_]),C=parseFloat(B["border"+_+"Width"]),N=L-e.offsets.popper[S]-P-C;return N=Math.max(Math.min(l[m]-O,N),0),e.arrowElement=i,e.offsets.arrow=(r={},ks(r,S,Math.round(N)),ks(r,R,""),r),e}function EF(e){return e==="end"?"start":e==="start"?"end":e}var Sx=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],l0=Sx.slice(3);function tw(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=l0.indexOf(e),i=l0.slice(r+1).concat(l0.slice(0,r));return t?i.reverse():i}var u0={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function RF(e,t){if(yx(e.instance.modifiers,"inner")||e.flipped&&e.placement===e.originalPlacement)return e;var r=zg(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),i=e.placement.split("-")[0],a=xh(i),n=e.placement.split("-")[1]||"",l=[];switch(t.behavior){case u0.FLIP:l=[i,a];break;case u0.CLOCKWISE:l=tw(i);break;case u0.COUNTERCLOCKWISE:l=tw(i,!0);break;default:l=t.behavior}return l.forEach(function(h,d){if(i!==h||l.length===d+1)return e;i=e.placement.split("-")[0],a=xh(i);var m=e.offsets.popper,_=e.offsets.reference,S=Math.floor,R=i==="left"&&S(m.right)>S(_.left)||i==="right"&&S(m.left)<S(_.right)||i==="top"&&S(m.bottom)>S(_.top)||i==="bottom"&&S(m.top)<S(_.bottom),I=S(m.left)<S(r.left),O=S(m.right)>S(r.right),L=S(m.top)<S(r.top),B=S(m.bottom)>S(r.bottom),P=i==="left"&&I||i==="right"&&O||i==="top"&&L||i==="bottom"&&B,C=["top","bottom"].indexOf(i)!==-1,N=!!t.flipVariations&&(C&&n==="start"&&I||C&&n==="end"&&O||!C&&n==="start"&&L||!C&&n==="end"&&B),$=!!t.flipVariationsByContent&&(C&&n==="start"&&O||C&&n==="end"&&I||!C&&n==="start"&&B||!C&&n==="end"&&L),W=N||$;(R||P||W)&&(e.flipped=!0,(R||P)&&(i=l[d+1]),W&&(n=EF(n)),e.placement=i+(n?"-"+n:""),e.offsets.popper=mi({},e.offsets.popper,gx(e.instance.popper,e.offsets.reference,e.placement)),e=mx(e.instance.modifiers,e,"flip"))}),e}function AF(e){var t=e.offsets,r=t.popper,i=t.reference,a=e.placement.split("-")[0],n=Math.floor,l=["top","bottom"].indexOf(a)!==-1,h=l?"right":"bottom",d=l?"left":"top",m=l?"width":"height";return r[h]<n(i[d])&&(e.offsets.popper[d]=n(i[d])-r[m]),r[d]>n(i[h])&&(e.offsets.popper[d]=n(i[h])),e}function TF(e,t,r,i){var a=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),n=+a[1],l=a[2];if(!n)return e;if(l.indexOf("%")===0){var h=void 0;switch(l){case"%p":h=r;break;case"%":case"%r":default:h=i}var d=Wo(h);return d[t]/100*n}else if(l==="vh"||l==="vw"){var m=void 0;return l==="vh"?m=Math.max(document.documentElement.clientHeight,window.innerHeight||0):m=Math.max(document.documentElement.clientWidth,window.innerWidth||0),m/100*n}else return n}function OF(e,t,r,i){var a=[0,0],n=["right","left"].indexOf(i)!==-1,l=e.split(/(\+|\-)/).map(function(_){return _.trim()}),h=l.indexOf(Nl(l,function(_){return _.search(/,|\s/)!==-1}));l[h]&&l[h].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var d=/\s*,\s*|\s+/,m=h!==-1?[l.slice(0,h).concat([l[h].split(d)[0]]),[l[h].split(d)[1]].concat(l.slice(h+1))]:[l];return m=m.map(function(_,S){var R=(S===1?!n:n)?"height":"width",I=!1;return _.reduce(function(O,L){return O[O.length-1]===""&&["+","-"].indexOf(L)!==-1?(O[O.length-1]=L,I=!0,O):I?(O[O.length-1]+=L,I=!1,O):O.concat(L)},[]).map(function(O){return TF(O,R,t,r)})}),m.forEach(function(_,S){_.forEach(function(R,I){Yg(R)&&(a[S]+=R*(_[I-1]==="-"?-1:1))})}),a}function IF(e,t){var r=t.offset,i=e.placement,a=e.offsets,n=a.popper,l=a.reference,h=i.split("-")[0],d=void 0;return Yg(+r)?d=[+r,0]:d=OF(r,n,l,h),h==="left"?(n.top+=d[0],n.left-=d[1]):h==="right"?(n.top+=d[0],n.left+=d[1]):h==="top"?(n.left+=d[0],n.top-=d[1]):h==="bottom"&&(n.left+=d[0],n.top+=d[1]),e.popper=n,e}function PF(e,t){var r=t.boundariesElement||Ls(e.instance.popper);e.instance.reference===r&&(r=Ls(r));var i=Gg("transform"),a=e.instance.popper.style,n=a.top,l=a.left,h=a[i];a.top="",a.left="",a[i]="";var d=zg(e.instance.popper,e.instance.reference,t.padding,r,e.positionFixed);a.top=n,a.left=l,a[i]=h,t.boundaries=d;var m=t.priority,_=e.offsets.popper,S={primary:function(I){var O=_[I];return _[I]<d[I]&&!t.escapeWithReference&&(O=Math.max(_[I],d[I])),ks({},I,O)},secondary:function(I){var O=I==="right"?"left":"top",L=_[O];return _[I]>d[I]&&!t.escapeWithReference&&(L=Math.min(_[O],d[I]-(I==="right"?_.width:_.height))),ks({},O,L)}};return m.forEach(function(R){var I=["left","top"].indexOf(R)!==-1?"primary":"secondary";_=mi({},_,S[I](R))}),e.offsets.popper=_,e}function CF(e){var t=e.placement,r=t.split("-")[0],i=t.split("-")[1];if(i){var a=e.offsets,n=a.reference,l=a.popper,h=["bottom","top"].indexOf(r)!==-1,d=h?"left":"top",m=h?"width":"height",_={start:ks({},d,n[d]),end:ks({},d,n[d]+n[m]-l[m])};e.offsets.popper=mi({},l,_[i])}return e}function BF(e){if(!Mx(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,r=Nl(e.instance.modifiers,function(i){return i.name==="preventOverflow"}).boundaries;if(t.bottom<r.top||t.left>r.right||t.top>r.bottom||t.right<r.left){if(e.hide===!0)return e;e.hide=!0,e.attributes["x-out-of-boundaries"]=""}else{if(e.hide===!1)return e;e.hide=!1,e.attributes["x-out-of-boundaries"]=!1}return e}function LF(e){var t=e.placement,r=t.split("-")[0],i=e.offsets,a=i.popper,n=i.reference,l=["left","right"].indexOf(r)!==-1,h=["top","left"].indexOf(r)===-1;return a[l?"left":"top"]=n[r]-(h?a[l?"width":"height"]:0),e.placement=xh(t),e.offsets.popper=Wo(a),e}var NF={shift:{order:100,enabled:!0,fn:CF},offset:{order:200,enabled:!0,fn:IF,offset:0},preventOverflow:{order:300,enabled:!0,fn:PF,priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:AF},arrow:{order:500,enabled:!0,fn:xF,element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:RF,behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:LF},hide:{order:800,enabled:!0,fn:BF},computeStyle:{order:850,enabled:!0,fn:SF,gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:bF,onLoad:wF,gpuAcceleration:void 0}},kF={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:NF},_c=function(){function e(t,r){var i=this,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};sF(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=nF(this.update.bind(this)),this.options=mi({},e.Defaults,a),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=r&&r.jquery?r[0]:r,this.options.modifiers={},Object.keys(mi({},e.Defaults.modifiers,a.modifiers)).forEach(function(l){i.options.modifiers[l]=mi({},e.Defaults.modifiers[l]||{},a.modifiers?a.modifiers[l]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(l){return mi({name:l},i.options.modifiers[l])}).sort(function(l,h){return l.order-h.order}),this.modifiers.forEach(function(l){l.enabled&&fx(l.onLoad)&&l.onLoad(i.reference,i.popper,i.options,l,i.state)}),this.update();var n=this.options.eventsEnabled;n&&this.enableEventListeners(),this.state.eventsEnabled=n}return fF(e,[{key:"update",value:function(){return cF.call(this)}},{key:"destroy",value:function(){return dF.call(this)}},{key:"enableEventListeners",value:function(){return vF.call(this)}},{key:"disableEventListeners",value:function(){return mF.call(this)}}]),e}();_c.Utils=(typeof window<"u"?window:up).PopperUtils;_c.placements=Sx;_c.Defaults=kF;const $F=Object.freeze(Object.defineProperty({__proto__:null,default:_c},Symbol.toStringTag,{value:"Module"})),TY=wl($F);/*!
+ * @kurkle/color v0.3.2
+ * https://github.com/kurkle/color#readme
+ * (c) 2023 Jukka Kurkela
+ * Released under the MIT License
+ */function kl(e){return e+.5|0}const Oo=(e,t,r)=>Math.max(Math.min(e,r),t);function Uf(e){return Oo(kl(e*2.55),0,255)}function Bo(e){return Oo(kl(e*255),0,255)}function Kn(e){return Oo(kl(e/2.55)/100,0,1)}function rw(e){return Oo(kl(e*100),0,100)}const ui={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},yv=[..."0123456789ABCDEF"],DF=e=>yv[e&15],FF=e=>yv[(e&240)>>4]+yv[e&15],uu=e=>(e&240)>>4===(e&15),jF=e=>uu(e.r)&&uu(e.g)&&uu(e.b)&&uu(e.a);function UF(e){var t=e.length,r;return e[0]==="#"&&(t===4||t===5?r={r:255&ui[e[1]]*17,g:255&ui[e[2]]*17,b:255&ui[e[3]]*17,a:t===5?ui[e[4]]*17:255}:(t===7||t===9)&&(r={r:ui[e[1]]<<4|ui[e[2]],g:ui[e[3]]<<4|ui[e[4]],b:ui[e[5]]<<4|ui[e[6]],a:t===9?ui[e[7]]<<4|ui[e[8]]:255})),r}const HF=(e,t)=>e<255?t(e):"";function qF(e){var t=jF(e)?DF:FF;return e?"#"+t(e.r)+t(e.g)+t(e.b)+HF(e.a,t):void 0}const WF=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function xx(e,t,r){const i=t*Math.min(r,1-r),a=(n,l=(n+e/30)%12)=>r-i*Math.max(Math.min(l-3,9-l,1),-1);return[a(0),a(8),a(4)]}function KF(e,t,r){const i=(a,n=(a+e/60)%6)=>r-r*t*Math.max(Math.min(n,4-n,1),0);return[i(5),i(3),i(1)]}function VF(e,t,r){const i=xx(e,1,.5);let a;for(t+r>1&&(a=1/(t+r),t*=a,r*=a),a=0;a<3;a++)i[a]*=1-t-r,i[a]+=t;return i}function zF(e,t,r,i,a){return e===a?(t-r)/i+(t<r?6:0):t===a?(r-e)/i+2:(e-t)/i+4}function Zg(e){const r=e.r/255,i=e.g/255,a=e.b/255,n=Math.max(r,i,a),l=Math.min(r,i,a),h=(n+l)/2;let d,m,_;return n!==l&&(_=n-l,m=h>.5?_/(2-n-l):_/(n+l),d=zF(r,i,a,_,n),d=d*60+.5),[d|0,m||0,h]}function Xg(e,t,r,i){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,r,i)).map(Bo)}function Jg(e,t,r){return Xg(xx,e,t,r)}function GF(e,t,r){return Xg(VF,e,t,r)}function YF(e,t,r){return Xg(KF,e,t,r)}function Ex(e){return(e%360+360)%360}function ZF(e){const t=WF.exec(e);let r=255,i;if(!t)return;t[5]!==i&&(r=t[6]?Uf(+t[5]):Bo(+t[5]));const a=Ex(+t[2]),n=+t[3]/100,l=+t[4]/100;return t[1]==="hwb"?i=GF(a,n,l):t[1]==="hsv"?i=YF(a,n,l):i=Jg(a,n,l),{r:i[0],g:i[1],b:i[2],a:r}}function XF(e,t){var r=Zg(e);r[0]=Ex(r[0]+t),r=Jg(r),e.r=r[0],e.g=r[1],e.b=r[2]}function JF(e){if(!e)return;const t=Zg(e),r=t[0],i=rw(t[1]),a=rw(t[2]);return e.a<255?`hsla(${r}, ${i}%, ${a}%, ${Kn(e.a)})`:`hsl(${r}, ${i}%, ${a}%)`}const iw={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},nw={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function QF(){const e={},t=Object.keys(nw),r=Object.keys(iw);let i,a,n,l,h;for(i=0;i<t.length;i++){for(l=h=t[i],a=0;a<r.length;a++)n=r[a],h=h.replace(n,iw[n]);n=parseInt(nw[l],16),e[h]=[n>>16&255,n>>8&255,n&255]}return e}let hu;function ej(e){hu||(hu=QF(),hu.transparent=[0,0,0,0]);const t=hu[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}const tj=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function rj(e){const t=tj.exec(e);let r=255,i,a,n;if(t){if(t[7]!==i){const l=+t[7];r=t[8]?Uf(l):Oo(l*255,0,255)}return i=+t[1],a=+t[3],n=+t[5],i=255&(t[2]?Uf(i):Oo(i,0,255)),a=255&(t[4]?Uf(a):Oo(a,0,255)),n=255&(t[6]?Uf(n):Oo(n,0,255)),{r:i,g:a,b:n,a:r}}}function ij(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${Kn(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}const h0=e=>e<=.0031308?e*12.92:Math.pow(e,1/2.4)*1.055-.055,Xa=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function nj(e,t,r){const i=Xa(Kn(e.r)),a=Xa(Kn(e.g)),n=Xa(Kn(e.b));return{r:Bo(h0(i+r*(Xa(Kn(t.r))-i))),g:Bo(h0(a+r*(Xa(Kn(t.g))-a))),b:Bo(h0(n+r*(Xa(Kn(t.b))-n))),a:e.a+r*(t.a-e.a)}}function cu(e,t,r){if(e){let i=Zg(e);i[t]=Math.max(0,Math.min(i[t]+i[t]*r,t===0?360:1)),i=Jg(i),e.r=i[0],e.g=i[1],e.b=i[2]}}function Rx(e,t){return e&&Object.assign(t||{},e)}function ow(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=Bo(e[3]))):(t=Rx(e,{r:0,g:0,b:0,a:1}),t.a=Bo(t.a)),t}function oj(e){return e.charAt(0)==="r"?rj(e):ZF(e)}class bv{constructor(t){if(t instanceof bv)return t;const r=typeof t;let i;r==="object"?i=ow(t):r==="string"&&(i=UF(t)||ej(t)||oj(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=Rx(this._rgb);return t&&(t.a=Kn(t.a)),t}set rgb(t){this._rgb=ow(t)}rgbString(){return this._valid?ij(this._rgb):void 0}hexString(){return this._valid?qF(this._rgb):void 0}hslString(){return this._valid?JF(this._rgb):void 0}mix(t,r){if(t){const i=this.rgb,a=t.rgb;let n;const l=r===n?.5:r,h=2*l-1,d=i.a-a.a,m=((h*d===-1?h:(h+d)/(1+h*d))+1)/2;n=1-m,i.r=255&m*i.r+n*a.r+.5,i.g=255&m*i.g+n*a.g+.5,i.b=255&m*i.b+n*a.b+.5,i.a=l*i.a+(1-l)*a.a,this.rgb=i}return this}interpolate(t,r){return t&&(this._rgb=nj(this._rgb,t._rgb,r)),this}clone(){return new bv(this.rgb)}alpha(t){return this._rgb.a=Bo(t),this}clearer(t){const r=this._rgb;return r.a*=1-t,this}greyscale(){const t=this._rgb,r=kl(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=r,this}opaquer(t){const r=this._rgb;return r.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return cu(this._rgb,2,t),this}darken(t){return cu(this._rgb,2,-t),this}saturate(t){return cu(this._rgb,1,t),this}desaturate(t){return cu(this._rgb,1,-t),this}rotate(t){return XF(this._rgb,t),this}}var Ax={exports:{}};/*! Hammer.JS - v2.0.7 - 2016-04-22
+ * http://hammerjs.github.io/
+ *
+ * Copyright (c) 2016 Jorik Tangelder;
+ * Licensed under the MIT license */(function(e){(function(t,r,i,a){var n=["","webkit","Moz","MS","ms","o"],l=r.createElement("div"),h="function",d=Math.round,m=Math.abs,_=Date.now;function S(te,ae,pe){return setTimeout(N(te,pe),ae)}function R(te,ae,pe){return Array.isArray(te)?(I(te,pe[ae],pe),!0):!1}function I(te,ae,pe){var Ce;if(te)if(te.forEach)te.forEach(ae,pe);else if(te.length!==a)for(Ce=0;Ce<te.length;)ae.call(pe,te[Ce],Ce,te),Ce++;else for(Ce in te)te.hasOwnProperty(Ce)&&ae.call(pe,te[Ce],Ce,te)}function O(te,ae,pe){var Ce="DEPRECATED METHOD: "+ae+`
+`+pe+` AT 
+`;return function(){var We=new Error("get-stack-trace"),Ge=We&&We.stack?We.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",_t=t.console&&(t.console.warn||t.console.log);return _t&&_t.call(t.console,Ce,Ge),te.apply(this,arguments)}}var L;typeof Object.assign!="function"?L=function(ae){if(ae===a||ae===null)throw new TypeError("Cannot convert undefined or null to object");for(var pe=Object(ae),Ce=1;Ce<arguments.length;Ce++){var We=arguments[Ce];if(We!==a&&We!==null)for(var Ge in We)We.hasOwnProperty(Ge)&&(pe[Ge]=We[Ge])}return pe}:L=Object.assign;var B=O(function(ae,pe,Ce){for(var We=Object.keys(pe),Ge=0;Ge<We.length;)(!Ce||Ce&&ae[We[Ge]]===a)&&(ae[We[Ge]]=pe[We[Ge]]),Ge++;return ae},"extend","Use `assign`."),P=O(function(ae,pe){return B(ae,pe,!0)},"merge","Use `assign`.");function C(te,ae,pe){var Ce=ae.prototype,We;We=te.prototype=Object.create(Ce),We.constructor=te,We._super=Ce,pe&&L(We,pe)}function N(te,ae){return function(){return te.apply(ae,arguments)}}function $(te,ae){return typeof te==h?te.apply(ae&&ae[0]||a,ae):te}function W(te,ae){return te===a?ae:te}function G(te,ae,pe){I(se(ae),function(Ce){te.addEventListener(Ce,pe,!1)})}function re(te,ae,pe){I(se(ae),function(Ce){te.removeEventListener(Ce,pe,!1)})}function J(te,ae){for(;te;){if(te==ae)return!0;te=te.parentNode}return!1}function K(te,ae){return te.indexOf(ae)>-1}function se(te){return te.trim().split(/\s+/g)}function M(te,ae,pe){if(te.indexOf&&!pe)return te.indexOf(ae);for(var Ce=0;Ce<te.length;){if(pe&&te[Ce][pe]==ae||!pe&&te[Ce]===ae)return Ce;Ce++}return-1}function o(te){return Array.prototype.slice.call(te,0)}function f(te,ae,pe){for(var Ce=[],We=[],Ge=0;Ge<te.length;){var _t=ae?te[Ge][ae]:te[Ge];M(We,_t)<0&&Ce.push(te[Ge]),We[Ge]=_t,Ge++}return pe&&(ae?Ce=Ce.sort(function(br,Dr){return br[ae]>Dr[ae]}):Ce=Ce.sort()),Ce}function u(te,ae){for(var pe,Ce,We=ae[0].toUpperCase()+ae.slice(1),Ge=0;Ge<n.length;){if(pe=n[Ge],Ce=pe?pe+We:ae,Ce in te)return Ce;Ge++}return a}var c=1;function p(){return c++}function w(te){var ae=te.ownerDocument||te;return ae.defaultView||ae.parentWindow||t}var x=/mobile|tablet|ip(ad|hone|od)|android/i,g="ontouchstart"in t,s=u(t,"PointerEvent")!==a,v=g&&x.test(navigator.userAgent),T="touch",D="pen",Y="mouse",Q="kinect",A=25,E=1,q=2,V=4,X=8,b=1,y=2,F=4,U=8,Z=16,j=y|F,k=U|Z,H=j|k,z=["x","y"],oe=["clientX","clientY"];function ee(te,ae){var pe=this;this.manager=te,this.callback=ae,this.element=te.element,this.target=te.options.inputTarget,this.domHandler=function(Ce){$(te.options.enable,[te])&&pe.handler(Ce)},this.init()}ee.prototype={handler:function(){},init:function(){this.evEl&&G(this.element,this.evEl,this.domHandler),this.evTarget&&G(this.target,this.evTarget,this.domHandler),this.evWin&&G(w(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&re(this.element,this.evEl,this.domHandler),this.evTarget&&re(this.target,this.evTarget,this.domHandler),this.evWin&&re(w(this.element),this.evWin,this.domHandler)}};function ne(te){var ae,pe=te.options.inputClass;return pe?ae=pe:s?ae=Be:v?ae=Re:g?ae=ke:ae=qe,new ae(te,me)}function me(te,ae,pe){var Ce=pe.pointers.length,We=pe.changedPointers.length,Ge=ae&E&&Ce-We===0,_t=ae&(V|X)&&Ce-We===0;pe.isFirst=!!Ge,pe.isFinal=!!_t,Ge&&(te.session={}),pe.eventType=ae,he(te,pe),te.emit("hammer.input",pe),te.recognize(pe),te.session.prevInput=pe}function he(te,ae){var pe=te.session,Ce=ae.pointers,We=Ce.length;pe.firstInput||(pe.firstInput=le(ae)),We>1&&!pe.firstMultiple?pe.firstMultiple=le(ae):We===1&&(pe.firstMultiple=!1);var Ge=pe.firstInput,_t=pe.firstMultiple,lr=_t?_t.center:Ge.center,br=ae.center=ve(Ce);ae.timeStamp=_(),ae.deltaTime=ae.timeStamp-Ge.timeStamp,ae.angle=Ee(lr,br),ae.distance=fe(lr,br),ue(pe,ae),ae.offsetDirection=ie(ae.deltaX,ae.deltaY);var Dr=ce(ae.deltaTime,ae.deltaX,ae.deltaY);ae.overallVelocityX=Dr.x,ae.overallVelocityY=Dr.y,ae.overallVelocity=m(Dr.x)>m(Dr.y)?Dr.x:Dr.y,ae.scale=_t?be(_t.pointers,Ce):1,ae.rotation=_t?de(_t.pointers,Ce):0,ae.maxPointers=pe.prevInput?ae.pointers.length>pe.prevInput.maxPointers?ae.pointers.length:pe.prevInput.maxPointers:ae.pointers.length,xe(pe,ae);var nn=te.element;J(ae.srcEvent.target,nn)&&(nn=ae.srcEvent.target),ae.target=nn}function ue(te,ae){var pe=ae.center,Ce=te.offsetDelta||{},We=te.prevDelta||{},Ge=te.prevInput||{};(ae.eventType===E||Ge.eventType===V)&&(We=te.prevDelta={x:Ge.deltaX||0,y:Ge.deltaY||0},Ce=te.offsetDelta={x:pe.x,y:pe.y}),ae.deltaX=We.x+(pe.x-Ce.x),ae.deltaY=We.y+(pe.y-Ce.y)}function xe(te,ae){var pe=te.lastInterval||ae,Ce=ae.timeStamp-pe.timeStamp,We,Ge,_t,lr;if(ae.eventType!=X&&(Ce>A||pe.velocity===a)){var br=ae.deltaX-pe.deltaX,Dr=ae.deltaY-pe.deltaY,nn=ce(Ce,br,Dr);Ge=nn.x,_t=nn.y,We=m(nn.x)>m(nn.y)?nn.x:nn.y,lr=ie(br,Dr),te.lastInterval=ae}else We=pe.velocity,Ge=pe.velocityX,_t=pe.velocityY,lr=pe.direction;ae.velocity=We,ae.velocityX=Ge,ae.velocityY=_t,ae.direction=lr}function le(te){for(var ae=[],pe=0;pe<te.pointers.length;)ae[pe]={clientX:d(te.pointers[pe].clientX),clientY:d(te.pointers[pe].clientY)},pe++;return{timeStamp:_(),pointers:ae,center:ve(ae),deltaX:te.deltaX,deltaY:te.deltaY}}function ve(te){var ae=te.length;if(ae===1)return{x:d(te[0].clientX),y:d(te[0].clientY)};for(var pe=0,Ce=0,We=0;We<ae;)pe+=te[We].clientX,Ce+=te[We].clientY,We++;return{x:d(pe/ae),y:d(Ce/ae)}}function ce(te,ae,pe){return{x:ae/te||0,y:pe/te||0}}function ie(te,ae){return te===ae?b:m(te)>=m(ae)?te<0?y:F:ae<0?U:Z}function fe(te,ae,pe){pe||(pe=z);var Ce=ae[pe[0]]-te[pe[0]],We=ae[pe[1]]-te[pe[1]];return Math.sqrt(Ce*Ce+We*We)}function Ee(te,ae,pe){pe||(pe=z);var Ce=ae[pe[0]]-te[pe[0]],We=ae[pe[1]]-te[pe[1]];return Math.atan2(We,Ce)*180/Math.PI}function de(te,ae){return Ee(ae[1],ae[0],oe)+Ee(te[1],te[0],oe)}function be(te,ae){return fe(ae[0],ae[1],oe)/fe(te[0],te[1],oe)}var Ke={mousedown:E,mousemove:q,mouseup:V},we="mousedown",Se="mousemove mouseup";function qe(){this.evEl=we,this.evWin=Se,this.pressed=!1,ee.apply(this,arguments)}C(qe,ee,{handler:function(ae){var pe=Ke[ae.type];pe&E&&ae.button===0&&(this.pressed=!0),pe&q&&ae.which!==1&&(pe=V),this.pressed&&(pe&V&&(this.pressed=!1),this.callback(this.manager,pe,{pointers:[ae],changedPointers:[ae],pointerType:Y,srcEvent:ae}))}});var ge={pointerdown:E,pointermove:q,pointerup:V,pointercancel:X,pointerout:X},Me={2:T,3:D,4:Y,5:Q},Ve="pointerdown",_e="pointermove pointerup pointercancel";t.MSPointerEvent&&!t.PointerEvent&&(Ve="MSPointerDown",_e="MSPointerMove MSPointerUp MSPointerCancel");function Be(){this.evEl=Ve,this.evWin=_e,ee.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}C(Be,ee,{handler:function(ae){var pe=this.store,Ce=!1,We=ae.type.toLowerCase().replace("ms",""),Ge=ge[We],_t=Me[ae.pointerType]||ae.pointerType,lr=_t==T,br=M(pe,ae.pointerId,"pointerId");Ge&E&&(ae.button===0||lr)?br<0&&(pe.push(ae),br=pe.length-1):Ge&(V|X)&&(Ce=!0),!(br<0)&&(pe[br]=ae,this.callback(this.manager,Ge,{pointers:pe,changedPointers:[ae],pointerType:_t,srcEvent:ae}),Ce&&pe.splice(br,1))}});var ot={touchstart:E,touchmove:q,touchend:V,touchcancel:X},Ae="touchstart",Ne="touchstart touchmove touchend touchcancel";function st(){this.evTarget=Ae,this.evWin=Ne,this.started=!1,ee.apply(this,arguments)}C(st,ee,{handler:function(ae){var pe=ot[ae.type];if(pe===E&&(this.started=!0),!!this.started){var Ce=Pe.call(this,ae,pe);pe&(V|X)&&Ce[0].length-Ce[1].length===0&&(this.started=!1),this.callback(this.manager,pe,{pointers:Ce[0],changedPointers:Ce[1],pointerType:T,srcEvent:ae})}}});function Pe(te,ae){var pe=o(te.touches),Ce=o(te.changedTouches);return ae&(V|X)&&(pe=f(pe.concat(Ce),"identifier",!0)),[pe,Ce]}var De={touchstart:E,touchmove:q,touchend:V,touchcancel:X},ut="touchstart touchmove touchend touchcancel";function Re(){this.evTarget=ut,this.targetIds={},ee.apply(this,arguments)}C(Re,ee,{handler:function(ae){var pe=De[ae.type],Ce=Fe.call(this,ae,pe);Ce&&this.callback(this.manager,pe,{pointers:Ce[0],changedPointers:Ce[1],pointerType:T,srcEvent:ae})}});function Fe(te,ae){var pe=o(te.touches),Ce=this.targetIds;if(ae&(E|q)&&pe.length===1)return Ce[pe[0].identifier]=!0,[pe,pe];var We,Ge,_t=o(te.changedTouches),lr=[],br=this.target;if(Ge=pe.filter(function(Dr){return J(Dr.target,br)}),ae===E)for(We=0;We<Ge.length;)Ce[Ge[We].identifier]=!0,We++;for(We=0;We<_t.length;)Ce[_t[We].identifier]&&lr.push(_t[We]),ae&(V|X)&&delete Ce[_t[We].identifier],We++;if(lr.length)return[f(Ge.concat(lr),"identifier",!0),lr]}var ht=2500,Te=25;function ke(){ee.apply(this,arguments);var te=N(this.handler,this);this.touch=new Re(this.manager,te),this.mouse=new qe(this.manager,te),this.primaryTouch=null,this.lastTouches=[]}C(ke,ee,{handler:function(ae,pe,Ce){var We=Ce.pointerType==T,Ge=Ce.pointerType==Y;if(!(Ge&&Ce.sourceCapabilities&&Ce.sourceCapabilities.firesTouchEvents)){if(We)ct.call(this,pe,Ce);else if(Ge&&je.call(this,Ce))return;this.callback(ae,pe,Ce)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});function ct(te,ae){te&E?(this.primaryTouch=ae.changedPointers[0].identifier,Oe.call(this,ae)):te&(V|X)&&Oe.call(this,ae)}function Oe(te){var ae=te.changedPointers[0];if(ae.identifier===this.primaryTouch){var pe={x:ae.clientX,y:ae.clientY};this.lastTouches.push(pe);var Ce=this.lastTouches,We=function(){var Ge=Ce.indexOf(pe);Ge>-1&&Ce.splice(Ge,1)};setTimeout(We,ht)}}function je(te){for(var ae=te.srcEvent.clientX,pe=te.srcEvent.clientY,Ce=0;Ce<this.lastTouches.length;Ce++){var We=this.lastTouches[Ce],Ge=Math.abs(ae-We.x),_t=Math.abs(pe-We.y);if(Ge<=Te&&_t<=Te)return!0}return!1}var ft=u(l.style,"touchAction"),Ie=ft!==a,$e="compute",tt="auto",et="manipulation",Et="none",It="pan-x",Pt="pan-y",Bt=Wt();function Dt(te,ae){this.manager=te,this.set(ae)}Dt.prototype={set:function(te){te==$e&&(te=this.compute()),Ie&&this.manager.element.style&&Bt[te]&&(this.manager.element.style[ft]=te),this.actions=te.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var te=[];return I(this.manager.recognizers,function(ae){$(ae.options.enable,[ae])&&(te=te.concat(ae.getTouchAction()))}),qt(te.join(" "))},preventDefaults:function(te){var ae=te.srcEvent,pe=te.offsetDirection;if(this.manager.session.prevented){ae.preventDefault();return}var Ce=this.actions,We=K(Ce,Et)&&!Bt[Et],Ge=K(Ce,Pt)&&!Bt[Pt],_t=K(Ce,It)&&!Bt[It];if(We){var lr=te.pointers.length===1,br=te.distance<2,Dr=te.deltaTime<250;if(lr&&br&&Dr)return}if(!(_t&&Ge)&&(We||Ge&&pe&j||_t&&pe&k))return this.preventSrc(ae)},preventSrc:function(te){this.manager.session.prevented=!0,te.preventDefault()}};function qt(te){if(K(te,Et))return Et;var ae=K(te,It),pe=K(te,Pt);return ae&&pe?Et:ae||pe?ae?It:Pt:K(te,et)?et:tt}function Wt(){if(!Ie)return!1;var te={},ae=t.CSS&&t.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(pe){te[pe]=ae?t.CSS.supports("touch-action",pe):!0}),te}var Lt=1,dt=2,Tt=4,Mt=8,bt=Mt,Ct=16,gt=32;function wt(te){this.options=L({},this.defaults,te||{}),this.id=p(),this.manager=null,this.options.enable=W(this.options.enable,!0),this.state=Lt,this.simultaneous={},this.requireFail=[]}wt.prototype={defaults:{},set:function(te){return L(this.options,te),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(te){if(R(te,"recognizeWith",this))return this;var ae=this.simultaneous;return te=vo(te,this),ae[te.id]||(ae[te.id]=te,te.recognizeWith(this)),this},dropRecognizeWith:function(te){return R(te,"dropRecognizeWith",this)?this:(te=vo(te,this),delete this.simultaneous[te.id],this)},requireFailure:function(te){if(R(te,"requireFailure",this))return this;var ae=this.requireFail;return te=vo(te,this),M(ae,te)===-1&&(ae.push(te),te.requireFailure(this)),this},dropRequireFailure:function(te){if(R(te,"dropRequireFailure",this))return this;te=vo(te,this);var ae=M(this.requireFail,te);return ae>-1&&this.requireFail.splice(ae,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(te){return!!this.simultaneous[te.id]},emit:function(te){var ae=this,pe=this.state;function Ce(We){ae.manager.emit(We,te)}pe<Mt&&Ce(ae.options.event+Ft(pe)),Ce(ae.options.event),te.additionalEvent&&Ce(te.additionalEvent),pe>=Mt&&Ce(ae.options.event+Ft(pe))},tryEmit:function(te){if(this.canEmit())return this.emit(te);this.state=gt},canEmit:function(){for(var te=0;te<this.requireFail.length;){if(!(this.requireFail[te].state&(gt|Lt)))return!1;te++}return!0},recognize:function(te){var ae=L({},te);if(!$(this.options.enable,[this,ae])){this.reset(),this.state=gt;return}this.state&(bt|Ct|gt)&&(this.state=Lt),this.state=this.process(ae),this.state&(dt|Tt|Mt|Ct)&&this.tryEmit(ae)},process:function(te){},getTouchAction:function(){},reset:function(){}};function Ft(te){return te&Ct?"cancel":te&Mt?"end":te&Tt?"move":te&dt?"start":""}function jt(te){return te==Z?"down":te==U?"up":te==y?"left":te==F?"right":""}function vo(te,ae){var pe=ae.manager;return pe?pe.get(te):te}function $r(){wt.apply(this,arguments)}C($r,wt,{defaults:{pointers:1},attrTest:function(te){var ae=this.options.pointers;return ae===0||te.pointers.length===ae},process:function(te){var ae=this.state,pe=te.eventType,Ce=ae&(dt|Tt),We=this.attrTest(te);return Ce&&(pe&X||!We)?ae|Ct:Ce||We?pe&V?ae|Mt:ae&dt?ae|Tt:dt:gt}});function Zl(){$r.apply(this,arguments),this.pX=null,this.pY=null}C(Zl,$r,{defaults:{event:"pan",threshold:10,pointers:1,direction:H},getTouchAction:function(){var te=this.options.direction,ae=[];return te&j&&ae.push(Pt),te&k&&ae.push(It),ae},directionTest:function(te){var ae=this.options,pe=!0,Ce=te.distance,We=te.direction,Ge=te.deltaX,_t=te.deltaY;return We&ae.direction||(ae.direction&j?(We=Ge===0?b:Ge<0?y:F,pe=Ge!=this.pX,Ce=Math.abs(te.deltaX)):(We=_t===0?b:_t<0?U:Z,pe=_t!=this.pY,Ce=Math.abs(te.deltaY))),te.direction=We,pe&&Ce>ae.threshold&&We&ae.direction},attrTest:function(te){return $r.prototype.attrTest.call(this,te)&&(this.state&dt||!(this.state&dt)&&this.directionTest(te))},emit:function(te){this.pX=te.deltaX,this.pY=te.deltaY;var ae=jt(te.direction);ae&&(te.additionalEvent=this.options.event+ae),this._super.emit.call(this,te)}});function Qc(){$r.apply(this,arguments)}C(Qc,$r,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Et]},attrTest:function(te){return this._super.attrTest.call(this,te)&&(Math.abs(te.scale-1)>this.options.threshold||this.state&dt)},emit:function(te){if(te.scale!==1){var ae=te.scale<1?"in":"out";te.additionalEvent=this.options.event+ae}this._super.emit.call(this,te)}});function ed(){wt.apply(this,arguments),this._timer=null,this._input=null}C(ed,wt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[tt]},process:function(te){var ae=this.options,pe=te.pointers.length===ae.pointers,Ce=te.distance<ae.threshold,We=te.deltaTime>ae.time;if(this._input=te,!Ce||!pe||te.eventType&(V|X)&&!We)this.reset();else if(te.eventType&E)this.reset(),this._timer=S(function(){this.state=bt,this.tryEmit()},ae.time,this);else if(te.eventType&V)return bt;return gt},reset:function(){clearTimeout(this._timer)},emit:function(te){this.state===bt&&(te&&te.eventType&V?this.manager.emit(this.options.event+"up",te):(this._input.timeStamp=_(),this.manager.emit(this.options.event,this._input)))}});function td(){$r.apply(this,arguments)}C(td,$r,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Et]},attrTest:function(te){return this._super.attrTest.call(this,te)&&(Math.abs(te.rotation)>this.options.threshold||this.state&dt)}});function rd(){$r.apply(this,arguments)}C(rd,$r,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:j|k,pointers:1},getTouchAction:function(){return Zl.prototype.getTouchAction.call(this)},attrTest:function(te){var ae=this.options.direction,pe;return ae&(j|k)?pe=te.overallVelocity:ae&j?pe=te.overallVelocityX:ae&k&&(pe=te.overallVelocityY),this._super.attrTest.call(this,te)&&ae&te.offsetDirection&&te.distance>this.options.threshold&&te.maxPointers==this.options.pointers&&m(pe)>this.options.velocity&&te.eventType&V},emit:function(te){var ae=jt(te.offsetDirection);ae&&this.manager.emit(this.options.event+ae,te),this.manager.emit(this.options.event,te)}});function Xl(){wt.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}C(Xl,wt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[et]},process:function(te){var ae=this.options,pe=te.pointers.length===ae.pointers,Ce=te.distance<ae.threshold,We=te.deltaTime<ae.time;if(this.reset(),te.eventType&E&&this.count===0)return this.failTimeout();if(Ce&&We&&pe){if(te.eventType!=V)return this.failTimeout();var Ge=this.pTime?te.timeStamp-this.pTime<ae.interval:!0,_t=!this.pCenter||fe(this.pCenter,te.center)<ae.posThreshold;this.pTime=te.timeStamp,this.pCenter=te.center,!_t||!Ge?this.count=1:this.count+=1,this._input=te;var lr=this.count%ae.taps;if(lr===0)return this.hasRequireFailures()?(this._timer=S(function(){this.state=bt,this.tryEmit()},ae.interval,this),dt):bt}return gt},failTimeout:function(){return this._timer=S(function(){this.state=gt},this.options.interval,this),gt},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==bt&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}});function In(te,ae){return ae=ae||{},ae.recognizers=W(ae.recognizers,In.defaults.preset),new id(te,ae)}In.VERSION="2.0.7",In.defaults={domEvents:!1,touchAction:$e,enable:!0,inputTarget:null,inputClass:null,preset:[[td,{enable:!1}],[Qc,{enable:!1},["rotate"]],[rd,{direction:j}],[Zl,{direction:j},["swipe"]],[Xl],[Xl,{event:"doubletap",taps:2},["tap"]],[ed]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var l8=1,Hm=2;function id(te,ae){this.options=L({},In.defaults,ae||{}),this.options.inputTarget=this.options.inputTarget||te,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=te,this.input=ne(this),this.touchAction=new Dt(this,this.options.touchAction),qm(this,!0),I(this.options.recognizers,function(pe){var Ce=this.add(new pe[0](pe[1]));pe[2]&&Ce.recognizeWith(pe[2]),pe[3]&&Ce.requireFailure(pe[3])},this)}id.prototype={set:function(te){return L(this.options,te),te.touchAction&&this.touchAction.update(),te.inputTarget&&(this.input.destroy(),this.input.target=te.inputTarget,this.input.init()),this},stop:function(te){this.session.stopped=te?Hm:l8},recognize:function(te){var ae=this.session;if(!ae.stopped){this.touchAction.preventDefaults(te);var pe,Ce=this.recognizers,We=ae.curRecognizer;(!We||We&&We.state&bt)&&(We=ae.curRecognizer=null);for(var Ge=0;Ge<Ce.length;)pe=Ce[Ge],ae.stopped!==Hm&&(!We||pe==We||pe.canRecognizeWith(We))?pe.recognize(te):pe.reset(),!We&&pe.state&(dt|Tt|Mt)&&(We=ae.curRecognizer=pe),Ge++}},get:function(te){if(te instanceof wt)return te;for(var ae=this.recognizers,pe=0;pe<ae.length;pe++)if(ae[pe].options.event==te)return ae[pe];return null},add:function(te){if(R(te,"add",this))return this;var ae=this.get(te.options.event);return ae&&this.remove(ae),this.recognizers.push(te),te.manager=this,this.touchAction.update(),te},remove:function(te){if(R(te,"remove",this))return this;if(te=this.get(te),te){var ae=this.recognizers,pe=M(ae,te);pe!==-1&&(ae.splice(pe,1),this.touchAction.update())}return this},on:function(te,ae){if(te!==a&&ae!==a){var pe=this.handlers;return I(se(te),function(Ce){pe[Ce]=pe[Ce]||[],pe[Ce].push(ae)}),this}},off:function(te,ae){if(te!==a){var pe=this.handlers;return I(se(te),function(Ce){ae?pe[Ce]&&pe[Ce].splice(M(pe[Ce],ae),1):delete pe[Ce]}),this}},emit:function(te,ae){this.options.domEvents&&u8(te,ae);var pe=this.handlers[te]&&this.handlers[te].slice();if(!(!pe||!pe.length)){ae.type=te,ae.preventDefault=function(){ae.srcEvent.preventDefault()};for(var Ce=0;Ce<pe.length;)pe[Ce](ae),Ce++}},destroy:function(){this.element&&qm(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}};function qm(te,ae){var pe=te.element;if(pe.style){var Ce;I(te.options.cssProps,function(We,Ge){Ce=u(pe.style,Ge),ae?(te.oldCssProps[Ce]=pe.style[Ce],pe.style[Ce]=We):pe.style[Ce]=te.oldCssProps[Ce]||""}),ae||(te.oldCssProps={})}}function u8(te,ae){var pe=r.createEvent("Event");pe.initEvent(te,!0,!0),pe.gesture=ae,ae.target.dispatchEvent(pe)}L(In,{INPUT_START:E,INPUT_MOVE:q,INPUT_END:V,INPUT_CANCEL:X,STATE_POSSIBLE:Lt,STATE_BEGAN:dt,STATE_CHANGED:Tt,STATE_ENDED:Mt,STATE_RECOGNIZED:bt,STATE_CANCELLED:Ct,STATE_FAILED:gt,DIRECTION_NONE:b,DIRECTION_LEFT:y,DIRECTION_RIGHT:F,DIRECTION_UP:U,DIRECTION_DOWN:Z,DIRECTION_HORIZONTAL:j,DIRECTION_VERTICAL:k,DIRECTION_ALL:H,Manager:id,Input:ee,TouchAction:Dt,TouchInput:Re,MouseInput:qe,PointerEventInput:Be,TouchMouseInput:ke,SingleTouchInput:st,Recognizer:wt,AttrRecognizer:$r,Tap:Xl,Pan:Zl,Swipe:rd,Pinch:Qc,Rotate:td,Press:ed,on:G,off:re,each:I,merge:P,extend:B,assign:L,inherit:C,bindFn:N,prefixed:u});var h8=typeof t<"u"?t:typeof self<"u"?self:{};h8.Hammer=In,typeof a=="function"&&a.amd?a(function(){return In}):e.exports?e.exports=In:t[i]=In})(window,document,"Hammer")})(Ax);var aj=Ax.exports;const OY=Vo(aj);const sj=Xs({name:"my-table",emits:["return-checked-rows","do-search","is-finished","get-now-page","row-clicked","row-toggled"],props:{isLoading:{type:Boolean,require:!0},isReSearch:{type:Boolean,require:!0},hasCheckbox:{type:Boolean,default:!1},checkedReturnType:{type:String,default:"key"},title:{type:String,default:""},isFixedFirstColumn:{type:Boolean,default:!1},columns:{type:Array,default:()=>[]},rows:{type:Array,default:()=>[]},rowClasses:{type:[Array,Function],default:()=>[]},pageSize:{type:Number,default:10},total:{type:Number,default:100},page:{type:Number,default:1},sortable:{type:Object,default:()=>({order:"id",sort:"asc"})},messages:{type:Object,default:()=>({pagingInfo:"Showing {0}-{1} of {2}",pageSizeChangeLabel:"Row count:",gotoPageLabel:"Go to page:",noDataAvailable:"No data"})},isStaticMode:{type:Boolean,default:!1},isSlotMode:{type:Boolean,default:!1},isHidePaging:{type:Boolean,default:!1},pageOptions:{type:Array,default:()=>[{value:10,text:10},{value:25,text:25},{value:50,text:50}]},groupingKey:{type:String,default:""},hasGroupToggle:{type:Boolean,default:!1},groupingDisplay:{type:Function,default:null},maxHeight:{default:"auto"},startCollapsed:{type:Boolean,default:!1},isKeepCollapsed:{type:Boolean,default:!1},isVerticalHighlight:{type:Boolean,default:!1}},setup(e,{emit:t,slots:r}){let i=Tr(null),a=e.pageOptions.length>0?Tr(e.pageOptions[0].value):Tr(e.pageSize);e.pageOptions.length>0&&e.pageOptions.forEach(o=>{Object.prototype.hasOwnProperty.call(o,"value")&&Object.prototype.hasOwnProperty.call(o,"text")&&e.pageSize==o.value&&(a.value=o.value)});const n=Ia({isSlotMode:e.isSlotMode,isCheckAll:!1,isIndeterminate:!1,isHidePaging:e.isHidePaging,keyColumn:ar(()=>{let o="";return Object.assign(e.columns).forEach(f=>{f.isKey&&(o=f.field)}),o}),page:e.page,pageSize:a.value,maxPage:ar(()=>{if(e.total<=0)return 0;let o=Math.floor(e.total/n.pageSize);return e.total%n.pageSize>0&&o++,o}),offset:ar(()=>(n.page-1)*n.pageSize+1),limit:ar(()=>{let o=n.page*n.pageSize;return e.total>=o?o:e.total}),paging:ar(()=>{let o=n.page-2<=0?1:n.page-2;n.maxPage-n.page<=2&&(o=n.maxPage-4),o=o<=0?1:o;let f=[];for(let u=o;u<=n.maxPage;u++)f.length<5&&f.push(u);return f}),order:e.sortable.order,sort:e.sortable.sort,pageOptions:e.pageOptions,isVerticalHighlight:e.isVerticalHighlight}),l=Tr([]),h=ar(()=>{let o=e.rows;var f=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});let u=n.sort==="desc"?-1:1;o.sort(function(p,w){return f.compare(p[n.order],w[n.order])*u});let c=null;if(e.groupingKey){let p={};o.forEach(w=>{p[w[e.groupingKey]]||(p[w[e.groupingKey]]=[]),p[w[e.groupingKey]].push(w)}),c={};for(let w=n.offset-1;w<n.limit;w++)c[o[w][e.groupingKey]]=p[o[w][e.groupingKey]]}else{c=[];for(let p=n.offset-1;p<n.limit;p++)c.push(o[p])}return Zn(function(){C()}),c}),d=Tr([]);fg(()=>{d.value=[]}),Or(()=>n.isCheckAll,o=>{if(e.hasCheckbox){if(n.isIndeterminate=!1,l.value=[],o){let f=e.isStaticMode?e.rows.slice(n.offset-1,n.limit):e.rows;e.checkedReturnType=="row"?l.value=f:f.forEach(u=>{l.value.push(u[n.keyColumn])})}d.value.forEach(f=>{f&&(f.checked=o)}),t("return-checked-rows",l.value)}}),Or(()=>e.hasCheckbox,o=>{o||(n.isCheckAll=!1)});const m=(o,f)=>{f.stopPropagation(),n.isIndeterminate=!1;let u=o[n.keyColumn];if(e.checkedReturnType=="row"&&(u=o),f.target.checked)l.value.push(u);else{const c=l.value.indexOf(u);c>=0&&l.value.splice(c,1)}l.value.length==e.rows.length?(n.isCheckAll&&t("return-checked-rows",l.value),n.isCheckAll=!0):(l.value.length>0&&(n.isIndeterminate=!0),t("return-checked-rows",l.value))},_=()=>{l.value=[],d.value.forEach(o=>{o&&o.checked&&(o.checked=!1)}),t("return-checked-rows",l.value)},S=o=>{let f="asc";o==n.order&&n.sort=="asc"&&(f="desc");let u=(n.page-1)*n.pageSize,c=n.pageSize;n.order=o,n.sort=f,t("do-search",u,c,o,f),n.isCheckAll?n.isCheckAll=!1:e.hasCheckbox&&_()},R=(o,f)=>{n.isCheckAll=!1,n.isIndeterminate=!1,e.hasCheckbox&&(l.value=[]);let u=n.order,c=n.sort,p=(o-1)*n.pageSize,w=n.pageSize;(!e.isReSearch||o>1||o==f)&&t("do-search",p,w,u,c)};Or(()=>n.page,R),Or(()=>e.page,o=>{o<=1?(n.page=1,t("get-now-page",n.page)):o>=n.maxPage?(n.page=n.maxPage,t("get-now-page",n.page)):n.page=o}),Or(()=>n.pageSize,()=>{n.page===1?R(n.page,n.page):(n.page=1,n.isCheckAll=!1,n.isIndeterminate=!1)}),Or(()=>e.pageSize,o=>{n.pageSize=o});const O=()=>{if(n.page==1)return!1;n.page--},L=o=>{n.page=o},B=()=>{if(n.page>=n.maxPage)return!1;n.page++};Or(()=>e.rows,()=>{(e.isReSearch||e.isStaticMode)&&(n.page=1),Zn(function(){e.isStaticMode||C()})},{deep:!0});const P=(o,...f)=>o.replace(/{(\d+)}/g,function(u,c){return typeof f[c]<"u"?f[c]:u}),C=()=>{if(i.value){let o=i.value.getElementsByClassName("is-rows-el");t("is-finished",o)}t("get-now-page",n.page)},N=Tr({}),$=Tr({}),W=Tr({}),G=ar(()=>{let o={};return e.rows.forEach(f=>{o[f[e.groupingKey]]||(o[f[e.groupingKey]]=[]),o[f[e.groupingKey]].push(f)}),Zn(function(){if(e.startCollapsed||e.isKeepCollapsed){for(const[f,u]of Object.entries(N.value))if(u){let c=!e.startCollapsed;e.isKeepCollapsed&&W.value[f]!==void 0&&(c=!W.value[f]),(c&&u.parentElement.classList.contains("rotated-90")||!c&&!u.parentElement.classList.contains("rotated-90"))&&u.parentElement.classList.toggle("rotated-90"),c||$.value[f].forEach(p=>{p&&p.classList.add("hidden")})}}C()}),o}),re=o=>{let f=N.value[o];if(f){f.parentElement.classList.toggle("rotated-90");const u=f.parentElement.classList.contains("rotated-90");$.value[o].forEach(c=>{c&&(u?c.classList.add("hidden"):c.classList.remove("hidden"))}),W.value[o]=u,t("row-toggled",G.value[o],u)}},J=o=>{o.target.classList.add("hover")},K=o=>{o.target.classList.remove("hover")},se=o=>{if(!n.isVerticalHighlight)return;let f=i.value.querySelectorAll(".vtl-tbody-td"+o);for(let u=0;u<f.length;u++)f[u].classList.add("hover")},M=o=>{if(!n.isVerticalHighlight)return;let f=i.value.querySelectorAll(".vtl-tbody-td"+o);for(let u=0;u<f.length;u++)f[u].classList.remove("hover")};return Qs(()=>{Zn(()=>{e.rows.length>0&&C()})}),{slots:r,localTable:i,localRows:h,setting:n,rowCheckbox:d,checked:m,clearChecked:_,doSort:S,prevPage:O,movePage:L,nextPage:B,stringFormat:P,toggleButtonRefs:N,groupingRowsRefs:$,groupingRows:G,toggleGroup:re,addHoverClassToTr:J,removeHoverClassFromTr:K,addVerticalHighlight:se,removeVerticalHighlight:M}}}),fj={class:"vtl vtl-card"},lj={key:0,class:"vtl-card-title"},uj={class:"vtl-card-body"},hj={class:"vtl-row"},cj={key:0,class:"vtl-loading-mask"},dj={class:"vtl-thead"},pj={class:"vtl-thead-tr"},vj={key:0,class:"vtl-thead-th vtl-checkbox-th"},gj=["indeterminate"],mj=["onClick","innerHTML"],yj=["set"],bj={key:0,class:"vtl-tbody-tr vtl-group-tr"},wj=["colspan"],_j={class:"flex"},Mj={key:0,class:"animation"},Sj=["onClick"],xj=["innerHTML"],Ej=["name","onClick"],Rj={key:0,class:"vtl-tbody-td vtl-checkbox-td"},Aj=["value","onClick"],Tj=["onMouseover","onMouseleave"],Oj=["innerHTML"],Ij={key:1},Pj={key:0},Cj={key:1},Bj=["set"],Lj={key:0,class:"vtl-tbody-tr vtl-group-tr"},Nj=["colspan"],kj={class:"flex"},$j={key:0,class:"animation"},Dj=["onClick"],Fj=["innerHTML"],jj=["name","onClick"],Uj={key:0,class:"vtl-tbody-td vtl-checkbox-td"},Hj=["value","onClick"],qj=["onMouseover","onMouseleave"],Wj=["innerHTML"],Kj={key:1},Vj={key:0},zj={key:1},Gj={key:0,class:"vtl-paging vtl-row"},Yj={class:"vtl-paging-info col-sm-12 col-md-4"},Zj={role:"status","aria-live":"polite"},Xj={class:"vtl-paging-change-div col-sm-12 col-md-4"},Jj={class:"vtl-paging-count-label"},Qj=["value"],eU={class:"vtl-paging-page-label"},tU=["value"],rU={class:"vtl-paging-pagination-div col-sm-12 col-md-4"},iU={class:"dataTables_paginate"},nU={class:"vtl-paging-pagination-ul vtl-pagination"},oU=["onClick"],aU={key:1,class:"vtl-row"},sU={class:"vtl-empty-msg col-sm-12 text-center"};function fU(e,t,r,i,a,n){return Qe(),it("div",fj,[e.title?(Qe(),it("div",lj,di(e.title),1)):ci("",!0),Je("div",uj,[Je("div",hj,[Je("div",{class:cr(["col-sm-12",{"fixed-first-column":e.isFixedFirstColumn,"fixed-first-second-column":e.isFixedFirstColumn&&e.hasCheckbox}])},[e.isLoading?(Qe(),it("div",cj,t[11]||(t[11]=[Je("div",{class:"vtl-loading-content"},[Je("span",{style:{color:"white"}},"Loading...")],-1)]))):ci("",!0),Je("table",{class:"vtl-table vtl-table-hover vtl-table-bordered vtl-table-responsive vtl-table-responsive-sm",ref:"localTable",style:cn("max-height: "+e.maxHeight+"px;")},[Je("thead",dj,[Je("tr",pj,[e.hasCheckbox?(Qe(),it("th",vj,[Je("div",null,[wu(Je("input",{type:"checkbox",class:"vtl-thead-checkbox",indeterminate:e.setting.isIndeterminate,"onUpdate:modelValue":t[0]||(t[0]=l=>e.setting.isCheckAll=l)},null,8,gj),[[rc,e.setting.isCheckAll]])])])):ci("",!0),(Qe(!0),it(Ot,null,Fi(e.columns,(l,h)=>(Qe(),it("th",{class:cr(["vtl-thead-th",l.headerClasses]),key:h,style:cn(Object.assign({width:l.width?l.width:"auto"},l.headerStyles))},[Je("div",{class:cr(["vtl-thead-column",{"vtl-sortable":l.sortable,"vtl-both":l.sortable,"vtl-asc":e.setting.order===l.field&&e.setting.sort==="asc","vtl-desc":e.setting.order===l.field&&e.setting.sort==="desc"}]),onClick:Fn(d=>l.sortable?e.doSort(l.field):!1,["prevent"]),innerHTML:l.label},null,10,mj)],6))),128))])]),e.rows.length>0?(Qe(),it(Ot,{key:0},[e.isStaticMode?(Qe(),it("tbody",{key:0,class:"vtl-tbody",set:e.templateRows=e.groupingKey==""?[e.localRows]:e.localRows},[(Qe(!0),it(Ot,null,Fi(e.templateRows,(l,h)=>(Qe(),it(Ot,{key:h},[e.groupingKey!=""?(Qe(),it("tr",bj,[Je("td",{colspan:e.hasCheckbox?e.columns.length+1:e.columns.length,class:"vtl-tbody-td vtl-group-td"},[Je("div",_j,[e.hasGroupToggle?(Qe(),it("div",Mj,[Je("a",{ref_for:!0,ref:d=>e.toggleButtonRefs[h]=d,class:"cursor-pointer",onClick:Fn(d=>e.toggleGroup(h),["prevent"])},"▼",8,Sj)])):ci("",!0),Je("div",{class:"ml-2",innerHTML:e.groupingDisplay?e.groupingDisplay(h):h},null,8,xj)])],8,wj)])):ci("",!0),(Qe(!0),it(Ot,null,Fi(l,(d,m)=>(Qe(),it("tr",{key:d[e.setting.keyColumn]?d[e.setting.keyColumn]:m,ref_for:!0,ref:_=>{e.groupingRowsRefs[h]||(e.groupingRowsRefs[h]=[]),e.groupingRowsRefs[h][m]=_},name:"vtl-group-"+h,class:cr(["vtl-tbody-tr",typeof e.rowClasses=="function"?e.rowClasses(d):e.rowClasses]),onMouseenter:t[1]||(t[1]=(..._)=>e.addHoverClassToTr&&e.addHoverClassToTr(..._)),onMouseleave:t[2]||(t[2]=(..._)=>e.removeHoverClassFromTr&&e.removeHoverClassFromTr(..._)),onClick:_=>e.$emit("row-clicked",d)},[e.hasCheckbox?(Qe(),it("td",Rj,[Je("div",null,[Je("input",{type:"checkbox",class:"vtl-tbody-checkbox",ref_for:!0,ref:_=>{e.rowCheckbox.push(_)},value:d[e.setting.keyColumn],onClick:_=>e.checked(d,_)},null,8,Aj)])])):ci("",!0),(Qe(!0),it(Ot,null,Fi(e.columns,(_,S)=>(Qe(),it("td",{key:S,class:cr(["vtl-tbody-td",["vtl-tbody-td"+S].concat(_.columnClasses)]),style:cn(_.columnStyles),onMouseover:R=>e.addVerticalHighlight(S),onMouseleave:R=>e.removeVerticalHighlight(S)},[_.display?(Qe(),it("div",{key:0,innerHTML:_.display(d)},null,8,Oj)):(Qe(),it("div",Ij,[e.setting.isSlotMode&&e.slots[_.field]?(Qe(),it("div",Pj,[mp(e.$slots,_.field,{value:d},void 0,!0)])):(Qe(),it("span",Cj,di(d[_.field]),1))]))],46,Tj))),128))],42,Ej))),128))],64))),128))],8,yj)):(Qe(),it("tbody",{key:1,set:e.templateRows=e.groupingKey==""?[e.rows]:e.groupingRows},[(Qe(!0),it(Ot,null,Fi(e.templateRows,(l,h)=>(Qe(),it(Ot,{key:h},[e.groupingKey!=""?(Qe(),it("tr",Lj,[Je("td",{colspan:e.hasCheckbox?e.columns.length+1:e.columns.length,class:"vtl-tbody-td vtl-group-td"},[Je("div",kj,[e.hasGroupToggle?(Qe(),it("div",$j,[Je("a",{ref_for:!0,ref:d=>e.toggleButtonRefs[h]=d,class:"cursor-pointer",onClick:Fn(d=>e.toggleGroup(h),["prevent"])},"▼",8,Dj)])):ci("",!0),Je("div",{class:"ml-2",innerHTML:e.groupingDisplay?e.groupingDisplay(h):h},null,8,Fj)])],8,Nj)])):ci("",!0),(Qe(!0),it(Ot,null,Fi(l,(d,m)=>(Qe(),it("tr",{ref_for:!0,ref:_=>{e.groupingRowsRefs[h]||(e.groupingRowsRefs[h]=[]),e.groupingRowsRefs[h][m]=_},name:"vtl-group-"+h,key:d[e.setting.keyColumn]?d[e.setting.keyColumn]:m,class:cr(["vtl-tbody-tr",typeof e.rowClasses=="function"?e.rowClasses(d):e.rowClasses]),onMouseenter:t[3]||(t[3]=(..._)=>e.addHoverClassToTr&&e.addHoverClassToTr(..._)),onMouseleave:t[4]||(t[4]=(..._)=>e.removeHoverClassFromTr&&e.removeHoverClassFromTr(..._)),onClick:_=>e.$emit("row-clicked",d)},[e.hasCheckbox?(Qe(),it("td",Uj,[Je("div",null,[Je("input",{type:"checkbox",class:"vtl-tbody-checkbox",ref_for:!0,ref:_=>{e.rowCheckbox.push(_)},value:d[e.setting.keyColumn],onClick:_=>e.checked(d,_)},null,8,Hj)])])):ci("",!0),(Qe(!0),it(Ot,null,Fi(e.columns,(_,S)=>(Qe(),it("td",{key:S,class:cr(["vtl-tbody-td",["vtl-tbody-td"+S].concat(_.columnClasses)]),style:cn(_.columnStyles),onMouseover:R=>e.addVerticalHighlight(S),onMouseleave:R=>e.removeVerticalHighlight(S)},[_.display?(Qe(),it("div",{key:0,innerHTML:_.display(d)},null,8,Wj)):(Qe(),it("div",Kj,[e.setting.isSlotMode&&e.slots[_.field]?(Qe(),it("div",Vj,[mp(e.$slots,_.field,{value:d},void 0,!0)])):(Qe(),it("span",zj,di(d[_.field]),1))]))],46,qj))),128))],42,jj))),128))],64))),128))],8,Bj))],64)):ci("",!0)],4)],2)]),e.rows.length>0?(Qe(),it("div",Gj,[e.setting.isHidePaging?ci("",!0):(Qe(),it(Ot,{key:0},[Je("div",Yj,[Je("div",Zj,di(e.stringFormat(e.messages.pagingInfo,e.setting.offset,e.setting.limit,e.total)),1)]),Je("div",Xj,[Je("span",Jj,di(e.messages.pageSizeChangeLabel),1),wu(Je("select",{class:"vtl-paging-count-dropdown","onUpdate:modelValue":t[5]||(t[5]=l=>e.setting.pageSize=l)},[(Qe(!0),it(Ot,null,Fi(e.pageOptions,l=>(Qe(),it("option",{value:l.value,key:l.value},di(l.text),9,Qj))),128))],512),[[lh,e.setting.pageSize]]),Je("span",eU,di(e.messages.gotoPageLabel),1),wu(Je("select",{class:"vtl-paging-page-dropdown","onUpdate:modelValue":t[6]||(t[6]=l=>e.setting.page=l)},[(Qe(!0),it(Ot,null,Fi(e.setting.maxPage,l=>(Qe(),it("option",{key:l,value:parseInt(l)},di(l),9,tU))),128))],512),[[lh,e.setting.page]])]),Je("div",rU,[Je("div",iU,[Je("ul",nU,[Je("li",{class:cr(["vtl-paging-pagination-page-li vtl-paging-pagination-page-li-first page-item",{disabled:e.setting.page<=1}])},[Je("a",{class:"vtl-paging-pagination-page-link vtl-paging-pagination-page-link-first page-link cursor-pointer","aria-label":"Previous",onClick:t[7]||(t[7]=Fn(l=>e.setting.page=1,["prevent"]))},t[12]||(t[12]=[Je("span",{"aria-hidden":"true"},"«",-1),Je("span",{class:"sr-only"},"First",-1)]))],2),Je("li",{class:cr(["vtl-paging-pagination-page-li vtl-paging-pagination-page-li-prev page-item",{disabled:e.setting.page<=1}])},[Je("a",{class:"vtl-paging-pagination-page-link vtl-paging-pagination-page-link-prev page-link cursor-pointer","aria-label":"Previous",onClick:t[8]||(t[8]=Fn((...l)=>e.prevPage&&e.prevPage(...l),["prevent"]))},t[13]||(t[13]=[Je("span",{"aria-hidden":"true"},"<",-1),Je("span",{class:"sr-only"},"Prev",-1)]))],2),(Qe(!0),it(Ot,null,Fi(e.setting.paging,l=>(Qe(),it("li",{class:cr(["vtl-paging-pagination-page-li vtl-paging-pagination-page-li-number page-item",{disabled:e.setting.page===l}]),key:l},[Je("a",{class:"vtl-paging-pagination-page-link vtl-paging-pagination-page-link-number page-link cursor-pointer",onClick:Fn(h=>e.movePage(l),["prevent"])},di(l),9,oU)],2))),128)),Je("li",{class:cr(["vtl-paging-pagination-page-li vtl-paging-pagination-page-li-next page-item",{disabled:e.setting.page>=e.setting.maxPage}])},[Je("a",{class:"vtl-paging-pagination-page-link vtl-paging-pagination-page-link-next page-link cursor-pointer","aria-label":"Next",onClick:t[9]||(t[9]=Fn((...l)=>e.nextPage&&e.nextPage(...l),["prevent"]))},t[14]||(t[14]=[Je("span",{"aria-hidden":"true"},">",-1),Je("span",{class:"sr-only"},"Next",-1)]))],2),Je("li",{class:cr(["vtl-paging-pagination-page-li vtl-paging-pagination-page-li-last page-item",{disabled:e.setting.page>=e.setting.maxPage}])},[Je("a",{class:"vtl-paging-pagination-page-link vtl-paging-pagination-page-link-last page-link cursor-pointer","aria-label":"Next",onClick:t[10]||(t[10]=Fn(l=>e.setting.page=e.setting.maxPage,["prevent"]))},t[15]||(t[15]=[Je("span",{"aria-hidden":"true"},"»",-1),Je("span",{class:"sr-only"},"Last",-1)]))],2)])])])],64))])):(Qe(),it("div",aU,[Je("div",sU,di(e.messages.noDataAvailable),1)]))])])}const IY=G7(sj,[["render",fU],["__scopeId","data-v-30c302e9"],["__file","/opt/openWB-dev/openwb-ui-settings/node_modules/vue3-table-lite/src/components/TableLite.vue"]]);var Tx={exports:{}};const lU=wl(z7);(function(e,t){(function(i,a){e.exports=a(lU,c8)})(typeof self<"u"?self:Ze,function(r,i){return function(a){var n={};function l(h){if(n[h])return n[h].exports;var d=n[h]={i:h,l:!1,exports:{}};return a[h].call(d.exports,d,d.exports,l),d.l=!0,d.exports}return l.m=a,l.c=n,l.d=function(h,d,m){l.o(h,d)||Object.defineProperty(h,d,{enumerable:!0,get:m})},l.r=function(h){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(h,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(h,"__esModule",{value:!0})},l.t=function(h,d){if(d&1&&(h=l(h)),d&8||d&4&&typeof h=="object"&&h&&h.__esModule)return h;var m=Object.create(null);if(l.r(m),Object.defineProperty(m,"default",{enumerable:!0,value:h}),d&2&&typeof h!="string")for(var _ in h)l.d(m,_,(function(S){return h[S]}).bind(null,_));return m},l.n=function(h){var d=h&&h.__esModule?function(){return h.default}:function(){return h};return l.d(d,"a",d),d},l.o=function(h,d){return Object.prototype.hasOwnProperty.call(h,d)},l.p="",l(l.s="fb15")}({"00ee":function(a,n,l){var h=l("b622"),d=h("toStringTag"),m={};m[d]="z",a.exports=String(m)==="[object z]"},"0366":function(a,n,l){var h=l("1c0b");a.exports=function(d,m,_){if(h(d),m===void 0)return d;switch(_){case 0:return function(){return d.call(m)};case 1:return function(S){return d.call(m,S)};case 2:return function(S,R){return d.call(m,S,R)};case 3:return function(S,R,I){return d.call(m,S,R,I)}}return function(){return d.apply(m,arguments)}}},"057f":function(a,n,l){var h=l("fc6a"),d=l("241c").f,m={}.toString,_=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],S=function(R){try{return d(R)}catch{return _.slice()}};a.exports.f=function(I){return _&&m.call(I)=="[object Window]"?S(I):d(h(I))}},"06cf":function(a,n,l){var h=l("83ab"),d=l("d1e7"),m=l("5c6c"),_=l("fc6a"),S=l("c04e"),R=l("5135"),I=l("0cfb"),O=Object.getOwnPropertyDescriptor;n.f=h?O:function(B,P){if(B=_(B),P=S(P,!0),I)try{return O(B,P)}catch{}if(R(B,P))return m(!d.f.call(B,P),B[P])}},"0cfb":function(a,n,l){var h=l("83ab"),d=l("d039"),m=l("cc12");a.exports=!h&&!d(function(){return Object.defineProperty(m("div"),"a",{get:function(){return 7}}).a!=7})},"13d5":function(a,n,l){var h=l("23e7"),d=l("d58f").left,m=l("a640"),_=l("ae40"),S=m("reduce"),R=_("reduce",{1:0});h({target:"Array",proto:!0,forced:!S||!R},{reduce:function(O){return d(this,O,arguments.length,arguments.length>1?arguments[1]:void 0)}})},"14c3":function(a,n,l){var h=l("c6b6"),d=l("9263");a.exports=function(m,_){var S=m.exec;if(typeof S=="function"){var R=S.call(m,_);if(typeof R!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return R}if(h(m)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return d.call(m,_)}},"159b":function(a,n,l){var h=l("da84"),d=l("fdbc"),m=l("17c2"),_=l("9112");for(var S in d){var R=h[S],I=R&&R.prototype;if(I&&I.forEach!==m)try{_(I,"forEach",m)}catch{I.forEach=m}}},"17c2":function(a,n,l){var h=l("b727").forEach,d=l("a640"),m=l("ae40"),_=d("forEach"),S=m("forEach");a.exports=!_||!S?function(I){return h(this,I,arguments.length>1?arguments[1]:void 0)}:[].forEach},"1be4":function(a,n,l){var h=l("d066");a.exports=h("document","documentElement")},"1c0b":function(a,n){a.exports=function(l){if(typeof l!="function")throw TypeError(String(l)+" is not a function");return l}},"1c7e":function(a,n,l){var h=l("b622"),d=h("iterator"),m=!1;try{var _=0,S={next:function(){return{done:!!_++}},return:function(){m=!0}};S[d]=function(){return this},Array.from(S,function(){throw 2})}catch{}a.exports=function(R,I){if(!I&&!m)return!1;var O=!1;try{var L={};L[d]=function(){return{next:function(){return{done:O=!0}}}},R(L)}catch{}return O}},"1d80":function(a,n){a.exports=function(l){if(l==null)throw TypeError("Can't call method on "+l);return l}},"1dde":function(a,n,l){var h=l("d039"),d=l("b622"),m=l("2d00"),_=d("species");a.exports=function(S){return m>=51||!h(function(){var R=[],I=R.constructor={};return I[_]=function(){return{foo:1}},R[S](Boolean).foo!==1})}},"23cb":function(a,n,l){var h=l("a691"),d=Math.max,m=Math.min;a.exports=function(_,S){var R=h(_);return R<0?d(R+S,0):m(R,S)}},"23e7":function(a,n,l){var h=l("da84"),d=l("06cf").f,m=l("9112"),_=l("6eeb"),S=l("ce4e"),R=l("e893"),I=l("94ca");a.exports=function(O,L){var B=O.target,P=O.global,C=O.stat,N,$,W,G,re,J;if(P?$=h:C?$=h[B]||S(B,{}):$=(h[B]||{}).prototype,$)for(W in L){if(re=L[W],O.noTargetGet?(J=d($,W),G=J&&J.value):G=$[W],N=I(P?W:B+(C?".":"#")+W,O.forced),!N&&G!==void 0){if(typeof re==typeof G)continue;R(re,G)}(O.sham||G&&G.sham)&&m(re,"sham",!0),_($,W,re,O)}}},"241c":function(a,n,l){var h=l("ca84"),d=l("7839"),m=d.concat("length","prototype");n.f=Object.getOwnPropertyNames||function(S){return h(S,m)}},"25f0":function(a,n,l){var h=l("6eeb"),d=l("825a"),m=l("d039"),_=l("ad6d"),S="toString",R=RegExp.prototype,I=R[S],O=m(function(){return I.call({source:"a",flags:"b"})!="/a/b"}),L=I.name!=S;(O||L)&&h(RegExp.prototype,S,function(){var P=d(this),C=String(P.source),N=P.flags,$=String(N===void 0&&P instanceof RegExp&&!("flags"in R)?_.call(P):N);return"/"+C+"/"+$},{unsafe:!0})},"2ca0":function(a,n,l){var h=l("23e7"),d=l("06cf").f,m=l("50c4"),_=l("5a34"),S=l("1d80"),R=l("ab13"),I=l("c430"),O="".startsWith,L=Math.min,B=R("startsWith"),P=!I&&!B&&!!function(){var C=d(String.prototype,"startsWith");return C&&!C.writable}();h({target:"String",proto:!0,forced:!P&&!B},{startsWith:function(N){var $=String(S(this));_(N);var W=m(L(arguments.length>1?arguments[1]:void 0,$.length)),G=String(N);return O?O.call($,G,W):$.slice(W,W+G.length)===G}})},"2d00":function(a,n,l){var h=l("da84"),d=l("342f"),m=h.process,_=m&&m.versions,S=_&&_.v8,R,I;S?(R=S.split("."),I=R[0]+R[1]):d&&(R=d.match(/Edge\/(\d+)/),(!R||R[1]>=74)&&(R=d.match(/Chrome\/(\d+)/),R&&(I=R[1]))),a.exports=I&&+I},"342f":function(a,n,l){var h=l("d066");a.exports=h("navigator","userAgent")||""},"35a1":function(a,n,l){var h=l("f5df"),d=l("3f8c"),m=l("b622"),_=m("iterator");a.exports=function(S){if(S!=null)return S[_]||S["@@iterator"]||d[h(S)]}},"37e8":function(a,n,l){var h=l("83ab"),d=l("9bf2"),m=l("825a"),_=l("df75");a.exports=h?Object.defineProperties:function(R,I){m(R);for(var O=_(I),L=O.length,B=0,P;L>B;)d.f(R,P=O[B++],I[P]);return R}},"3bbe":function(a,n,l){var h=l("861d");a.exports=function(d){if(!h(d)&&d!==null)throw TypeError("Can't set "+String(d)+" as a prototype");return d}},"3ca3":function(a,n,l){var h=l("6547").charAt,d=l("69f3"),m=l("7dd0"),_="String Iterator",S=d.set,R=d.getterFor(_);m(String,"String",function(I){S(this,{type:_,string:String(I),index:0})},function(){var O=R(this),L=O.string,B=O.index,P;return B>=L.length?{value:void 0,done:!0}:(P=h(L,B),O.index+=P.length,{value:P,done:!1})})},"3f8c":function(a,n){a.exports={}},4160:function(a,n,l){var h=l("23e7"),d=l("17c2");h({target:"Array",proto:!0,forced:[].forEach!=d},{forEach:d})},"428f":function(a,n,l){var h=l("da84");a.exports=h},"44ad":function(a,n,l){var h=l("d039"),d=l("c6b6"),m="".split;a.exports=h(function(){return!Object("z").propertyIsEnumerable(0)})?function(_){return d(_)=="String"?m.call(_,""):Object(_)}:Object},"44d2":function(a,n,l){var h=l("b622"),d=l("7c73"),m=l("9bf2"),_=h("unscopables"),S=Array.prototype;S[_]==null&&m.f(S,_,{configurable:!0,value:d(null)}),a.exports=function(R){S[_][R]=!0}},"44e7":function(a,n,l){var h=l("861d"),d=l("c6b6"),m=l("b622"),_=m("match");a.exports=function(S){var R;return h(S)&&((R=S[_])!==void 0?!!R:d(S)=="RegExp")}},4930:function(a,n,l){var h=l("d039");a.exports=!!Object.getOwnPropertySymbols&&!h(function(){return!String(Symbol())})},"4d64":function(a,n,l){var h=l("fc6a"),d=l("50c4"),m=l("23cb"),_=function(S){return function(R,I,O){var L=h(R),B=d(L.length),P=m(O,B),C;if(S&&I!=I){for(;B>P;)if(C=L[P++],C!=C)return!0}else for(;B>P;P++)if((S||P in L)&&L[P]===I)return S||P||0;return!S&&-1}};a.exports={includes:_(!0),indexOf:_(!1)}},"4de4":function(a,n,l){var h=l("23e7"),d=l("b727").filter,m=l("1dde"),_=l("ae40"),S=m("filter"),R=_("filter");h({target:"Array",proto:!0,forced:!S||!R},{filter:function(O){return d(this,O,arguments.length>1?arguments[1]:void 0)}})},"4df4":function(a,n,l){var h=l("0366"),d=l("7b0b"),m=l("9bdd"),_=l("e95a"),S=l("50c4"),R=l("8418"),I=l("35a1");a.exports=function(L){var B=d(L),P=typeof this=="function"?this:Array,C=arguments.length,N=C>1?arguments[1]:void 0,$=N!==void 0,W=I(B),G=0,re,J,K,se,M,o;if($&&(N=h(N,C>2?arguments[2]:void 0,2)),W!=null&&!(P==Array&&_(W)))for(se=W.call(B),M=se.next,J=new P;!(K=M.call(se)).done;G++)o=$?m(se,N,[K.value,G],!0):K.value,R(J,G,o);else for(re=S(B.length),J=new P(re);re>G;G++)o=$?N(B[G],G):B[G],R(J,G,o);return J.length=G,J}},"4fad":function(a,n,l){var h=l("23e7"),d=l("6f53").entries;h({target:"Object",stat:!0},{entries:function(_){return d(_)}})},"50c4":function(a,n,l){var h=l("a691"),d=Math.min;a.exports=function(m){return m>0?d(h(m),9007199254740991):0}},5135:function(a,n){var l={}.hasOwnProperty;a.exports=function(h,d){return l.call(h,d)}},5319:function(a,n,l){var h=l("d784"),d=l("825a"),m=l("7b0b"),_=l("50c4"),S=l("a691"),R=l("1d80"),I=l("8aa5"),O=l("14c3"),L=Math.max,B=Math.min,P=Math.floor,C=/\$([$&'`]|\d\d?|<[^>]*>)/g,N=/\$([$&'`]|\d\d?)/g,$=function(W){return W===void 0?W:String(W)};h("replace",2,function(W,G,re,J){var K=J.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,se=J.REPLACE_KEEPS_$0,M=K?"$":"$0";return[function(u,c){var p=R(this),w=u==null?void 0:u[W];return w!==void 0?w.call(u,p,c):G.call(String(p),u,c)},function(f,u){if(!K&&se||typeof u=="string"&&u.indexOf(M)===-1){var c=re(G,f,this,u);if(c.done)return c.value}var p=d(f),w=String(this),x=typeof u=="function";x||(u=String(u));var g=p.global;if(g){var s=p.unicode;p.lastIndex=0}for(var v=[];;){var T=O(p,w);if(T===null||(v.push(T),!g))break;var D=String(T[0]);D===""&&(p.lastIndex=I(w,_(p.lastIndex),s))}for(var Y="",Q=0,A=0;A<v.length;A++){T=v[A];for(var E=String(T[0]),q=L(B(S(T.index),w.length),0),V=[],X=1;X<T.length;X++)V.push($(T[X]));var b=T.groups;if(x){var y=[E].concat(V,q,w);b!==void 0&&y.push(b);var F=String(u.apply(void 0,y))}else F=o(E,w,q,V,b,u);q>=Q&&(Y+=w.slice(Q,q)+F,Q=q+E.length)}return Y+w.slice(Q)}];function o(f,u,c,p,w,x){var g=c+f.length,s=p.length,v=N;return w!==void 0&&(w=m(w),v=C),G.call(x,v,function(T,D){var Y;switch(D.charAt(0)){case"$":return"$";case"&":return f;case"`":return u.slice(0,c);case"'":return u.slice(g);case"<":Y=w[D.slice(1,-1)];break;default:var Q=+D;if(Q===0)return T;if(Q>s){var A=P(Q/10);return A===0?T:A<=s?p[A-1]===void 0?D.charAt(1):p[A-1]+D.charAt(1):T}Y=p[Q-1]}return Y===void 0?"":Y})}})},5692:function(a,n,l){var h=l("c430"),d=l("c6cd");(a.exports=function(m,_){return d[m]||(d[m]=_!==void 0?_:{})})("versions",[]).push({version:"3.6.5",mode:h?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},"56ef":function(a,n,l){var h=l("d066"),d=l("241c"),m=l("7418"),_=l("825a");a.exports=h("Reflect","ownKeys")||function(R){var I=d.f(_(R)),O=m.f;return O?I.concat(O(R)):I}},"5a34":function(a,n,l){var h=l("44e7");a.exports=function(d){if(h(d))throw TypeError("The method doesn't accept regular expressions");return d}},"5c6c":function(a,n){a.exports=function(l,h){return{enumerable:!(l&1),configurable:!(l&2),writable:!(l&4),value:h}}},"5db7":function(a,n,l){var h=l("23e7"),d=l("a2bf"),m=l("7b0b"),_=l("50c4"),S=l("1c0b"),R=l("65f0");h({target:"Array",proto:!0},{flatMap:function(O){var L=m(this),B=_(L.length),P;return S(O),P=R(L,0),P.length=d(P,L,L,B,0,1,O,arguments.length>1?arguments[1]:void 0),P}})},6547:function(a,n,l){var h=l("a691"),d=l("1d80"),m=function(_){return function(S,R){var I=String(d(S)),O=h(R),L=I.length,B,P;return O<0||O>=L?_?"":void 0:(B=I.charCodeAt(O),B<55296||B>56319||O+1===L||(P=I.charCodeAt(O+1))<56320||P>57343?_?I.charAt(O):B:_?I.slice(O,O+2):(B-55296<<10)+(P-56320)+65536)}};a.exports={codeAt:m(!1),charAt:m(!0)}},"65f0":function(a,n,l){var h=l("861d"),d=l("e8b5"),m=l("b622"),_=m("species");a.exports=function(S,R){var I;return d(S)&&(I=S.constructor,typeof I=="function"&&(I===Array||d(I.prototype))?I=void 0:h(I)&&(I=I[_],I===null&&(I=void 0))),new(I===void 0?Array:I)(R===0?0:R)}},"69f3":function(a,n,l){var h=l("7f9a"),d=l("da84"),m=l("861d"),_=l("9112"),S=l("5135"),R=l("f772"),I=l("d012"),O=d.WeakMap,L,B,P,C=function(K){return P(K)?B(K):L(K,{})},N=function(K){return function(se){var M;if(!m(se)||(M=B(se)).type!==K)throw TypeError("Incompatible receiver, "+K+" required");return M}};if(h){var $=new O,W=$.get,G=$.has,re=$.set;L=function(K,se){return re.call($,K,se),se},B=function(K){return W.call($,K)||{}},P=function(K){return G.call($,K)}}else{var J=R("state");I[J]=!0,L=function(K,se){return _(K,J,se),se},B=function(K){return S(K,J)?K[J]:{}},P=function(K){return S(K,J)}}a.exports={set:L,get:B,has:P,enforce:C,getterFor:N}},"6eeb":function(a,n,l){var h=l("da84"),d=l("9112"),m=l("5135"),_=l("ce4e"),S=l("8925"),R=l("69f3"),I=R.get,O=R.enforce,L=String(String).split("String");(a.exports=function(B,P,C,N){var $=N?!!N.unsafe:!1,W=N?!!N.enumerable:!1,G=N?!!N.noTargetGet:!1;if(typeof C=="function"&&(typeof P=="string"&&!m(C,"name")&&d(C,"name",P),O(C).source=L.join(typeof P=="string"?P:"")),B===h){W?B[P]=C:_(P,C);return}else $?!G&&B[P]&&(W=!0):delete B[P];W?B[P]=C:d(B,P,C)})(Function.prototype,"toString",function(){return typeof this=="function"&&I(this).source||S(this)})},"6f53":function(a,n,l){var h=l("83ab"),d=l("df75"),m=l("fc6a"),_=l("d1e7").f,S=function(R){return function(I){for(var O=m(I),L=d(O),B=L.length,P=0,C=[],N;B>P;)N=L[P++],(!h||_.call(O,N))&&C.push(R?[N,O[N]]:O[N]);return C}};a.exports={entries:S(!0),values:S(!1)}},"73d9":function(a,n,l){var h=l("44d2");h("flatMap")},7418:function(a,n){n.f=Object.getOwnPropertySymbols},"746f":function(a,n,l){var h=l("428f"),d=l("5135"),m=l("e538"),_=l("9bf2").f;a.exports=function(S){var R=h.Symbol||(h.Symbol={});d(R,S)||_(R,S,{value:m.f(S)})}},7839:function(a,n){a.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(a,n,l){var h=l("1d80");a.exports=function(d){return Object(h(d))}},"7c73":function(a,n,l){var h=l("825a"),d=l("37e8"),m=l("7839"),_=l("d012"),S=l("1be4"),R=l("cc12"),I=l("f772"),O=">",L="<",B="prototype",P="script",C=I("IE_PROTO"),N=function(){},$=function(K){return L+P+O+K+L+"/"+P+O},W=function(K){K.write($("")),K.close();var se=K.parentWindow.Object;return K=null,se},G=function(){var K=R("iframe"),se="java"+P+":",M;return K.style.display="none",S.appendChild(K),K.src=String(se),M=K.contentWindow.document,M.open(),M.write($("document.F=Object")),M.close(),M.F},re,J=function(){try{re=document.domain&&new ActiveXObject("htmlfile")}catch{}J=re?W(re):G();for(var K=m.length;K--;)delete J[B][m[K]];return J()};_[C]=!0,a.exports=Object.create||function(se,M){var o;return se!==null?(N[B]=h(se),o=new N,N[B]=null,o[C]=se):o=J(),M===void 0?o:d(o,M)}},"7dd0":function(a,n,l){var h=l("23e7"),d=l("9ed3"),m=l("e163"),_=l("d2bb"),S=l("d44e"),R=l("9112"),I=l("6eeb"),O=l("b622"),L=l("c430"),B=l("3f8c"),P=l("ae93"),C=P.IteratorPrototype,N=P.BUGGY_SAFARI_ITERATORS,$=O("iterator"),W="keys",G="values",re="entries",J=function(){return this};a.exports=function(K,se,M,o,f,u,c){d(M,se,o);var p=function(A){if(A===f&&v)return v;if(!N&&A in g)return g[A];switch(A){case W:return function(){return new M(this,A)};case G:return function(){return new M(this,A)};case re:return function(){return new M(this,A)}}return function(){return new M(this)}},w=se+" Iterator",x=!1,g=K.prototype,s=g[$]||g["@@iterator"]||f&&g[f],v=!N&&s||p(f),T=se=="Array"&&g.entries||s,D,Y,Q;if(T&&(D=m(T.call(new K)),C!==Object.prototype&&D.next&&(!L&&m(D)!==C&&(_?_(D,C):typeof D[$]!="function"&&R(D,$,J)),S(D,w,!0,!0),L&&(B[w]=J))),f==G&&s&&s.name!==G&&(x=!0,v=function(){return s.call(this)}),(!L||c)&&g[$]!==v&&R(g,$,v),B[se]=v,f)if(Y={values:p(G),keys:u?v:p(W),entries:p(re)},c)for(Q in Y)(N||x||!(Q in g))&&I(g,Q,Y[Q]);else h({target:se,proto:!0,forced:N||x},Y);return Y}},"7f9a":function(a,n,l){var h=l("da84"),d=l("8925"),m=h.WeakMap;a.exports=typeof m=="function"&&/native code/.test(d(m))},"825a":function(a,n,l){var h=l("861d");a.exports=function(d){if(!h(d))throw TypeError(String(d)+" is not an object");return d}},"83ab":function(a,n,l){var h=l("d039");a.exports=!h(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})},8418:function(a,n,l){var h=l("c04e"),d=l("9bf2"),m=l("5c6c");a.exports=function(_,S,R){var I=h(S);I in _?d.f(_,I,m(0,R)):_[I]=R}},"861d":function(a,n){a.exports=function(l){return typeof l=="object"?l!==null:typeof l=="function"}},8875:function(a,n,l){var h,d,m;(function(_,S){d=[],h=S,m=typeof h=="function"?h.apply(n,d):h,m!==void 0&&(a.exports=m)})(typeof self<"u"?self:this,function(){function _(){var S=Object.getOwnPropertyDescriptor(document,"currentScript");if(!S&&"currentScript"in document&&document.currentScript||S&&S.get!==_&&document.currentScript)return document.currentScript;try{throw new Error}catch(re){var R=/.*at [^(]*\((.*):(.+):(.+)\)$/ig,I=/@([^@]*):(\d+):(\d+)\s*$/ig,O=R.exec(re.stack)||I.exec(re.stack),L=O&&O[1]||!1,B=O&&O[2]||!1,P=document.location.href.replace(document.location.hash,""),C,N,$,W=document.getElementsByTagName("script");L===P&&(C=document.documentElement.outerHTML,N=new RegExp("(?:[^\\n]+?\\n){0,"+(B-2)+"}[^<]*<script>([\\d\\D]*?)<\\/script>[\\d\\D]*","i"),$=C.replace(N,"$1").trim());for(var G=0;G<W.length;G++)if(W[G].readyState==="interactive"||W[G].src===L||L===P&&W[G].innerHTML&&W[G].innerHTML.trim()===$)return W[G];return null}}return _})},8925:function(a,n,l){var h=l("c6cd"),d=Function.toString;typeof h.inspectSource!="function"&&(h.inspectSource=function(m){return d.call(m)}),a.exports=h.inspectSource},"8aa5":function(a,n,l){var h=l("6547").charAt;a.exports=function(d,m,_){return m+(_?h(d,m).length:1)}},"8bbf":function(a,n){a.exports=r},"90e3":function(a,n){var l=0,h=Math.random();a.exports=function(d){return"Symbol("+String(d===void 0?"":d)+")_"+(++l+h).toString(36)}},9112:function(a,n,l){var h=l("83ab"),d=l("9bf2"),m=l("5c6c");a.exports=h?function(_,S,R){return d.f(_,S,m(1,R))}:function(_,S,R){return _[S]=R,_}},9263:function(a,n,l){var h=l("ad6d"),d=l("9f7f"),m=RegExp.prototype.exec,_=String.prototype.replace,S=m,R=function(){var B=/a/,P=/b*/g;return m.call(B,"a"),m.call(P,"a"),B.lastIndex!==0||P.lastIndex!==0}(),I=d.UNSUPPORTED_Y||d.BROKEN_CARET,O=/()??/.exec("")[1]!==void 0,L=R||O||I;L&&(S=function(P){var C=this,N,$,W,G,re=I&&C.sticky,J=h.call(C),K=C.source,se=0,M=P;return re&&(J=J.replace("y",""),J.indexOf("g")===-1&&(J+="g"),M=String(P).slice(C.lastIndex),C.lastIndex>0&&(!C.multiline||C.multiline&&P[C.lastIndex-1]!==`
+`)&&(K="(?: "+K+")",M=" "+M,se++),$=new RegExp("^(?:"+K+")",J)),O&&($=new RegExp("^"+K+"$(?!\\s)",J)),R&&(N=C.lastIndex),W=m.call(re?$:C,M),re?W?(W.input=W.input.slice(se),W[0]=W[0].slice(se),W.index=C.lastIndex,C.lastIndex+=W[0].length):C.lastIndex=0:R&&W&&(C.lastIndex=C.global?W.index+W[0].length:N),O&&W&&W.length>1&&_.call(W[0],$,function(){for(G=1;G<arguments.length-2;G++)arguments[G]===void 0&&(W[G]=void 0)}),W}),a.exports=S},"94ca":function(a,n,l){var h=l("d039"),d=/#|\.prototype\./,m=function(O,L){var B=S[_(O)];return B==I?!0:B==R?!1:typeof L=="function"?h(L):!!L},_=m.normalize=function(O){return String(O).replace(d,".").toLowerCase()},S=m.data={},R=m.NATIVE="N",I=m.POLYFILL="P";a.exports=m},"99af":function(a,n,l){var h=l("23e7"),d=l("d039"),m=l("e8b5"),_=l("861d"),S=l("7b0b"),R=l("50c4"),I=l("8418"),O=l("65f0"),L=l("1dde"),B=l("b622"),P=l("2d00"),C=B("isConcatSpreadable"),N=9007199254740991,$="Maximum allowed index exceeded",W=P>=51||!d(function(){var K=[];return K[C]=!1,K.concat()[0]!==K}),G=L("concat"),re=function(K){if(!_(K))return!1;var se=K[C];return se!==void 0?!!se:m(K)},J=!W||!G;h({target:"Array",proto:!0,forced:J},{concat:function(se){var M=S(this),o=O(M,0),f=0,u,c,p,w,x;for(u=-1,p=arguments.length;u<p;u++)if(x=u===-1?M:arguments[u],re(x)){if(w=R(x.length),f+w>N)throw TypeError($);for(c=0;c<w;c++,f++)c in x&&I(o,f,x[c])}else{if(f>=N)throw TypeError($);I(o,f++,x)}return o.length=f,o}})},"9bdd":function(a,n,l){var h=l("825a");a.exports=function(d,m,_,S){try{return S?m(h(_)[0],_[1]):m(_)}catch(I){var R=d.return;throw R!==void 0&&h(R.call(d)),I}}},"9bf2":function(a,n,l){var h=l("83ab"),d=l("0cfb"),m=l("825a"),_=l("c04e"),S=Object.defineProperty;n.f=h?S:function(I,O,L){if(m(I),O=_(O,!0),m(L),d)try{return S(I,O,L)}catch{}if("get"in L||"set"in L)throw TypeError("Accessors not supported");return"value"in L&&(I[O]=L.value),I}},"9ed3":function(a,n,l){var h=l("ae93").IteratorPrototype,d=l("7c73"),m=l("5c6c"),_=l("d44e"),S=l("3f8c"),R=function(){return this};a.exports=function(I,O,L){var B=O+" Iterator";return I.prototype=d(h,{next:m(1,L)}),_(I,B,!1,!0),S[B]=R,I}},"9f7f":function(a,n,l){var h=l("d039");function d(m,_){return RegExp(m,_)}n.UNSUPPORTED_Y=h(function(){var m=d("a","y");return m.lastIndex=2,m.exec("abcd")!=null}),n.BROKEN_CARET=h(function(){var m=d("^r","gy");return m.lastIndex=2,m.exec("str")!=null})},a2bf:function(a,n,l){var h=l("e8b5"),d=l("50c4"),m=l("0366"),_=function(S,R,I,O,L,B,P,C){for(var N=L,$=0,W=P?m(P,C,3):!1,G;$<O;){if($ in I){if(G=W?W(I[$],$,R):I[$],B>0&&h(G))N=_(S,R,G,d(G.length),N,B-1)-1;else{if(N>=9007199254740991)throw TypeError("Exceed the acceptable array length");S[N]=G}N++}$++}return N};a.exports=_},a352:function(a,n){a.exports=i},a434:function(a,n,l){var h=l("23e7"),d=l("23cb"),m=l("a691"),_=l("50c4"),S=l("7b0b"),R=l("65f0"),I=l("8418"),O=l("1dde"),L=l("ae40"),B=O("splice"),P=L("splice",{ACCESSORS:!0,0:0,1:2}),C=Math.max,N=Math.min,$=9007199254740991,W="Maximum allowed length exceeded";h({target:"Array",proto:!0,forced:!B||!P},{splice:function(re,J){var K=S(this),se=_(K.length),M=d(re,se),o=arguments.length,f,u,c,p,w,x;if(o===0?f=u=0:o===1?(f=0,u=se-M):(f=o-2,u=N(C(m(J),0),se-M)),se+f-u>$)throw TypeError(W);for(c=R(K,u),p=0;p<u;p++)w=M+p,w in K&&I(c,p,K[w]);if(c.length=u,f<u){for(p=M;p<se-u;p++)w=p+u,x=p+f,w in K?K[x]=K[w]:delete K[x];for(p=se;p>se-u+f;p--)delete K[p-1]}else if(f>u)for(p=se-u;p>M;p--)w=p+u-1,x=p+f-1,w in K?K[x]=K[w]:delete K[x];for(p=0;p<f;p++)K[p+M]=arguments[p+2];return K.length=se-u+f,c}})},a4d3:function(a,n,l){var h=l("23e7"),d=l("da84"),m=l("d066"),_=l("c430"),S=l("83ab"),R=l("4930"),I=l("fdbf"),O=l("d039"),L=l("5135"),B=l("e8b5"),P=l("861d"),C=l("825a"),N=l("7b0b"),$=l("fc6a"),W=l("c04e"),G=l("5c6c"),re=l("7c73"),J=l("df75"),K=l("241c"),se=l("057f"),M=l("7418"),o=l("06cf"),f=l("9bf2"),u=l("d1e7"),c=l("9112"),p=l("6eeb"),w=l("5692"),x=l("f772"),g=l("d012"),s=l("90e3"),v=l("b622"),T=l("e538"),D=l("746f"),Y=l("d44e"),Q=l("69f3"),A=l("b727").forEach,E=x("hidden"),q="Symbol",V="prototype",X=v("toPrimitive"),b=Q.set,y=Q.getterFor(q),F=Object[V],U=d.Symbol,Z=m("JSON","stringify"),j=o.f,k=f.f,H=se.f,z=u.f,oe=w("symbols"),ee=w("op-symbols"),ne=w("string-to-symbol-registry"),me=w("symbol-to-string-registry"),he=w("wks"),ue=d.QObject,xe=!ue||!ue[V]||!ue[V].findChild,le=S&&O(function(){return re(k({},"a",{get:function(){return k(this,"a",{value:7}).a}})).a!=7})?function(qe,ge,Me){var Ve=j(F,ge);Ve&&delete F[ge],k(qe,ge,Me),Ve&&qe!==F&&k(F,ge,Ve)}:k,ve=function(qe,ge){var Me=oe[qe]=re(U[V]);return b(Me,{type:q,tag:qe,description:ge}),S||(Me.description=ge),Me},ce=I?function(qe){return typeof qe=="symbol"}:function(qe){return Object(qe)instanceof U},ie=function(ge,Me,Ve){ge===F&&ie(ee,Me,Ve),C(ge);var _e=W(Me,!0);return C(Ve),L(oe,_e)?(Ve.enumerable?(L(ge,E)&&ge[E][_e]&&(ge[E][_e]=!1),Ve=re(Ve,{enumerable:G(0,!1)})):(L(ge,E)||k(ge,E,G(1,{})),ge[E][_e]=!0),le(ge,_e,Ve)):k(ge,_e,Ve)},fe=function(ge,Me){C(ge);var Ve=$(Me),_e=J(Ve).concat(we(Ve));return A(_e,function(Be){(!S||de.call(Ve,Be))&&ie(ge,Be,Ve[Be])}),ge},Ee=function(ge,Me){return Me===void 0?re(ge):fe(re(ge),Me)},de=function(ge){var Me=W(ge,!0),Ve=z.call(this,Me);return this===F&&L(oe,Me)&&!L(ee,Me)?!1:Ve||!L(this,Me)||!L(oe,Me)||L(this,E)&&this[E][Me]?Ve:!0},be=function(ge,Me){var Ve=$(ge),_e=W(Me,!0);if(!(Ve===F&&L(oe,_e)&&!L(ee,_e))){var Be=j(Ve,_e);return Be&&L(oe,_e)&&!(L(Ve,E)&&Ve[E][_e])&&(Be.enumerable=!0),Be}},Ke=function(ge){var Me=H($(ge)),Ve=[];return A(Me,function(_e){!L(oe,_e)&&!L(g,_e)&&Ve.push(_e)}),Ve},we=function(ge){var Me=ge===F,Ve=H(Me?ee:$(ge)),_e=[];return A(Ve,function(Be){L(oe,Be)&&(!Me||L(F,Be))&&_e.push(oe[Be])}),_e};if(R||(U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var ge=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),Me=s(ge),Ve=function(_e){this===F&&Ve.call(ee,_e),L(this,E)&&L(this[E],Me)&&(this[E][Me]=!1),le(this,Me,G(1,_e))};return S&&xe&&le(F,Me,{configurable:!0,set:Ve}),ve(Me,ge)},p(U[V],"toString",function(){return y(this).tag}),p(U,"withoutSetter",function(qe){return ve(s(qe),qe)}),u.f=de,f.f=ie,o.f=be,K.f=se.f=Ke,M.f=we,T.f=function(qe){return ve(v(qe),qe)},S&&(k(U[V],"description",{configurable:!0,get:function(){return y(this).description}}),_||p(F,"propertyIsEnumerable",de,{unsafe:!0}))),h({global:!0,wrap:!0,forced:!R,sham:!R},{Symbol:U}),A(J(he),function(qe){D(qe)}),h({target:q,stat:!0,forced:!R},{for:function(qe){var ge=String(qe);if(L(ne,ge))return ne[ge];var Me=U(ge);return ne[ge]=Me,me[Me]=ge,Me},keyFor:function(ge){if(!ce(ge))throw TypeError(ge+" is not a symbol");if(L(me,ge))return me[ge]},useSetter:function(){xe=!0},useSimple:function(){xe=!1}}),h({target:"Object",stat:!0,forced:!R,sham:!S},{create:Ee,defineProperty:ie,defineProperties:fe,getOwnPropertyDescriptor:be}),h({target:"Object",stat:!0,forced:!R},{getOwnPropertyNames:Ke,getOwnPropertySymbols:we}),h({target:"Object",stat:!0,forced:O(function(){M.f(1)})},{getOwnPropertySymbols:function(ge){return M.f(N(ge))}}),Z){var Se=!R||O(function(){var qe=U();return Z([qe])!="[null]"||Z({a:qe})!="{}"||Z(Object(qe))!="{}"});h({target:"JSON",stat:!0,forced:Se},{stringify:function(ge,Me,Ve){for(var _e=[ge],Be=1,ot;arguments.length>Be;)_e.push(arguments[Be++]);if(ot=Me,!(!P(Me)&&ge===void 0||ce(ge)))return B(Me)||(Me=function(Ae,Ne){if(typeof ot=="function"&&(Ne=ot.call(this,Ae,Ne)),!ce(Ne))return Ne}),_e[1]=Me,Z.apply(null,_e)}})}U[V][X]||c(U[V],X,U[V].valueOf),Y(U,q),g[E]=!0},a630:function(a,n,l){var h=l("23e7"),d=l("4df4"),m=l("1c7e"),_=!m(function(S){Array.from(S)});h({target:"Array",stat:!0,forced:_},{from:d})},a640:function(a,n,l){var h=l("d039");a.exports=function(d,m){var _=[][d];return!!_&&h(function(){_.call(null,m||function(){throw 1},1)})}},a691:function(a,n){var l=Math.ceil,h=Math.floor;a.exports=function(d){return isNaN(d=+d)?0:(d>0?h:l)(d)}},ab13:function(a,n,l){var h=l("b622"),d=h("match");a.exports=function(m){var _=/./;try{"/./"[m](_)}catch{try{return _[d]=!1,"/./"[m](_)}catch{}}return!1}},ac1f:function(a,n,l){var h=l("23e7"),d=l("9263");h({target:"RegExp",proto:!0,forced:/./.exec!==d},{exec:d})},ad6d:function(a,n,l){var h=l("825a");a.exports=function(){var d=h(this),m="";return d.global&&(m+="g"),d.ignoreCase&&(m+="i"),d.multiline&&(m+="m"),d.dotAll&&(m+="s"),d.unicode&&(m+="u"),d.sticky&&(m+="y"),m}},ae40:function(a,n,l){var h=l("83ab"),d=l("d039"),m=l("5135"),_=Object.defineProperty,S={},R=function(I){throw I};a.exports=function(I,O){if(m(S,I))return S[I];O||(O={});var L=[][I],B=m(O,"ACCESSORS")?O.ACCESSORS:!1,P=m(O,0)?O[0]:R,C=m(O,1)?O[1]:void 0;return S[I]=!!L&&!d(function(){if(B&&!h)return!0;var N={length:-1};B?_(N,1,{enumerable:!0,get:R}):N[1]=1,L.call(N,P,C)})}},ae93:function(a,n,l){var h=l("e163"),d=l("9112"),m=l("5135"),_=l("b622"),S=l("c430"),R=_("iterator"),I=!1,O=function(){return this},L,B,P;[].keys&&(P=[].keys(),"next"in P?(B=h(h(P)),B!==Object.prototype&&(L=B)):I=!0),L==null&&(L={}),!S&&!m(L,R)&&d(L,R,O),a.exports={IteratorPrototype:L,BUGGY_SAFARI_ITERATORS:I}},b041:function(a,n,l){var h=l("00ee"),d=l("f5df");a.exports=h?{}.toString:function(){return"[object "+d(this)+"]"}},b0c0:function(a,n,l){var h=l("83ab"),d=l("9bf2").f,m=Function.prototype,_=m.toString,S=/^\s*function ([^ (]*)/,R="name";h&&!(R in m)&&d(m,R,{configurable:!0,get:function(){try{return _.call(this).match(S)[1]}catch{return""}}})},b622:function(a,n,l){var h=l("da84"),d=l("5692"),m=l("5135"),_=l("90e3"),S=l("4930"),R=l("fdbf"),I=d("wks"),O=h.Symbol,L=R?O:O&&O.withoutSetter||_;a.exports=function(B){return m(I,B)||(S&&m(O,B)?I[B]=O[B]:I[B]=L("Symbol."+B)),I[B]}},b64b:function(a,n,l){var h=l("23e7"),d=l("7b0b"),m=l("df75"),_=l("d039"),S=_(function(){m(1)});h({target:"Object",stat:!0,forced:S},{keys:function(I){return m(d(I))}})},b727:function(a,n,l){var h=l("0366"),d=l("44ad"),m=l("7b0b"),_=l("50c4"),S=l("65f0"),R=[].push,I=function(O){var L=O==1,B=O==2,P=O==3,C=O==4,N=O==6,$=O==5||N;return function(W,G,re,J){for(var K=m(W),se=d(K),M=h(G,re,3),o=_(se.length),f=0,u=J||S,c=L?u(W,o):B?u(W,0):void 0,p,w;o>f;f++)if(($||f in se)&&(p=se[f],w=M(p,f,K),O)){if(L)c[f]=w;else if(w)switch(O){case 3:return!0;case 5:return p;case 6:return f;case 2:R.call(c,p)}else if(C)return!1}return N?-1:P||C?C:c}};a.exports={forEach:I(0),map:I(1),filter:I(2),some:I(3),every:I(4),find:I(5),findIndex:I(6)}},c04e:function(a,n,l){var h=l("861d");a.exports=function(d,m){if(!h(d))return d;var _,S;if(m&&typeof(_=d.toString)=="function"&&!h(S=_.call(d))||typeof(_=d.valueOf)=="function"&&!h(S=_.call(d))||!m&&typeof(_=d.toString)=="function"&&!h(S=_.call(d)))return S;throw TypeError("Can't convert object to primitive value")}},c430:function(a,n){a.exports=!1},c6b6:function(a,n){var l={}.toString;a.exports=function(h){return l.call(h).slice(8,-1)}},c6cd:function(a,n,l){var h=l("da84"),d=l("ce4e"),m="__core-js_shared__",_=h[m]||d(m,{});a.exports=_},c740:function(a,n,l){var h=l("23e7"),d=l("b727").findIndex,m=l("44d2"),_=l("ae40"),S="findIndex",R=!0,I=_(S);S in[]&&Array(1)[S](function(){R=!1}),h({target:"Array",proto:!0,forced:R||!I},{findIndex:function(L){return d(this,L,arguments.length>1?arguments[1]:void 0)}}),m(S)},c8ba:function(a,n){var l;l=function(){return this}();try{l=l||new Function("return this")()}catch{typeof window=="object"&&(l=window)}a.exports=l},c975:function(a,n,l){var h=l("23e7"),d=l("4d64").indexOf,m=l("a640"),_=l("ae40"),S=[].indexOf,R=!!S&&1/[1].indexOf(1,-0)<0,I=m("indexOf"),O=_("indexOf",{ACCESSORS:!0,1:0});h({target:"Array",proto:!0,forced:R||!I||!O},{indexOf:function(B){return R?S.apply(this,arguments)||0:d(this,B,arguments.length>1?arguments[1]:void 0)}})},ca84:function(a,n,l){var h=l("5135"),d=l("fc6a"),m=l("4d64").indexOf,_=l("d012");a.exports=function(S,R){var I=d(S),O=0,L=[],B;for(B in I)!h(_,B)&&h(I,B)&&L.push(B);for(;R.length>O;)h(I,B=R[O++])&&(~m(L,B)||L.push(B));return L}},caad:function(a,n,l){var h=l("23e7"),d=l("4d64").includes,m=l("44d2"),_=l("ae40"),S=_("indexOf",{ACCESSORS:!0,1:0});h({target:"Array",proto:!0,forced:!S},{includes:function(I){return d(this,I,arguments.length>1?arguments[1]:void 0)}}),m("includes")},cc12:function(a,n,l){var h=l("da84"),d=l("861d"),m=h.document,_=d(m)&&d(m.createElement);a.exports=function(S){return _?m.createElement(S):{}}},ce4e:function(a,n,l){var h=l("da84"),d=l("9112");a.exports=function(m,_){try{d(h,m,_)}catch{h[m]=_}return _}},d012:function(a,n){a.exports={}},d039:function(a,n){a.exports=function(l){try{return!!l()}catch{return!0}}},d066:function(a,n,l){var h=l("428f"),d=l("da84"),m=function(_){return typeof _=="function"?_:void 0};a.exports=function(_,S){return arguments.length<2?m(h[_])||m(d[_]):h[_]&&h[_][S]||d[_]&&d[_][S]}},d1e7:function(a,n,l){var h={}.propertyIsEnumerable,d=Object.getOwnPropertyDescriptor,m=d&&!h.call({1:2},1);n.f=m?function(S){var R=d(this,S);return!!R&&R.enumerable}:h},d28b:function(a,n,l){var h=l("746f");h("iterator")},d2bb:function(a,n,l){var h=l("825a"),d=l("3bbe");a.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var m=!1,_={},S;try{S=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,S.call(_,[]),m=_ instanceof Array}catch{}return function(I,O){return h(I),d(O),m?S.call(I,O):I.__proto__=O,I}}():void 0)},d3b7:function(a,n,l){var h=l("00ee"),d=l("6eeb"),m=l("b041");h||d(Object.prototype,"toString",m,{unsafe:!0})},d44e:function(a,n,l){var h=l("9bf2").f,d=l("5135"),m=l("b622"),_=m("toStringTag");a.exports=function(S,R,I){S&&!d(S=I?S:S.prototype,_)&&h(S,_,{configurable:!0,value:R})}},d58f:function(a,n,l){var h=l("1c0b"),d=l("7b0b"),m=l("44ad"),_=l("50c4"),S=function(R){return function(I,O,L,B){h(O);var P=d(I),C=m(P),N=_(P.length),$=R?N-1:0,W=R?-1:1;if(L<2)for(;;){if($ in C){B=C[$],$+=W;break}if($+=W,R?$<0:N<=$)throw TypeError("Reduce of empty array with no initial value")}for(;R?$>=0:N>$;$+=W)$ in C&&(B=O(B,C[$],$,P));return B}};a.exports={left:S(!1),right:S(!0)}},d784:function(a,n,l){l("ac1f");var h=l("6eeb"),d=l("d039"),m=l("b622"),_=l("9263"),S=l("9112"),R=m("species"),I=!d(function(){var C=/./;return C.exec=function(){var N=[];return N.groups={a:"7"},N},"".replace(C,"$<a>")!=="7"}),O=function(){return"a".replace(/./,"$0")==="$0"}(),L=m("replace"),B=function(){return/./[L]?/./[L]("a","$0")==="":!1}(),P=!d(function(){var C=/(?:)/,N=C.exec;C.exec=function(){return N.apply(this,arguments)};var $="ab".split(C);return $.length!==2||$[0]!=="a"||$[1]!=="b"});a.exports=function(C,N,$,W){var G=m(C),re=!d(function(){var f={};return f[G]=function(){return 7},""[C](f)!=7}),J=re&&!d(function(){var f=!1,u=/a/;return C==="split"&&(u={},u.constructor={},u.constructor[R]=function(){return u},u.flags="",u[G]=/./[G]),u.exec=function(){return f=!0,null},u[G](""),!f});if(!re||!J||C==="replace"&&!(I&&O&&!B)||C==="split"&&!P){var K=/./[G],se=$(G,""[C],function(f,u,c,p,w){return u.exec===_?re&&!w?{done:!0,value:K.call(u,c,p)}:{done:!0,value:f.call(c,u,p)}:{done:!1}},{REPLACE_KEEPS_$0:O,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:B}),M=se[0],o=se[1];h(String.prototype,C,M),h(RegExp.prototype,G,N==2?function(f,u){return o.call(f,this,u)}:function(f){return o.call(f,this)})}W&&S(RegExp.prototype[G],"sham",!0)}},d81d:function(a,n,l){var h=l("23e7"),d=l("b727").map,m=l("1dde"),_=l("ae40"),S=m("map"),R=_("map");h({target:"Array",proto:!0,forced:!S||!R},{map:function(O){return d(this,O,arguments.length>1?arguments[1]:void 0)}})},da84:function(a,n,l){(function(h){var d=function(m){return m&&m.Math==Math&&m};a.exports=d(typeof globalThis=="object"&&globalThis)||d(typeof window=="object"&&window)||d(typeof self=="object"&&self)||d(typeof h=="object"&&h)||Function("return this")()}).call(this,l("c8ba"))},dbb4:function(a,n,l){var h=l("23e7"),d=l("83ab"),m=l("56ef"),_=l("fc6a"),S=l("06cf"),R=l("8418");h({target:"Object",stat:!0,sham:!d},{getOwnPropertyDescriptors:function(O){for(var L=_(O),B=S.f,P=m(L),C={},N=0,$,W;P.length>N;)W=B(L,$=P[N++]),W!==void 0&&R(C,$,W);return C}})},dbf1:function(a,n,l){(function(h){l.d(n,"a",function(){return m});function d(){return typeof window<"u"?window.console:h.console}var m=d()}).call(this,l("c8ba"))},ddb0:function(a,n,l){var h=l("da84"),d=l("fdbc"),m=l("e260"),_=l("9112"),S=l("b622"),R=S("iterator"),I=S("toStringTag"),O=m.values;for(var L in d){var B=h[L],P=B&&B.prototype;if(P){if(P[R]!==O)try{_(P,R,O)}catch{P[R]=O}if(P[I]||_(P,I,L),d[L]){for(var C in m)if(P[C]!==m[C])try{_(P,C,m[C])}catch{P[C]=m[C]}}}}},df75:function(a,n,l){var h=l("ca84"),d=l("7839");a.exports=Object.keys||function(_){return h(_,d)}},e01a:function(a,n,l){var h=l("23e7"),d=l("83ab"),m=l("da84"),_=l("5135"),S=l("861d"),R=l("9bf2").f,I=l("e893"),O=m.Symbol;if(d&&typeof O=="function"&&(!("description"in O.prototype)||O().description!==void 0)){var L={},B=function(){var G=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),re=this instanceof B?new O(G):G===void 0?O():O(G);return G===""&&(L[re]=!0),re};I(B,O);var P=B.prototype=O.prototype;P.constructor=B;var C=P.toString,N=String(O("test"))=="Symbol(test)",$=/^Symbol\((.*)\)[^)]+$/;R(P,"description",{configurable:!0,get:function(){var G=S(this)?this.valueOf():this,re=C.call(G);if(_(L,G))return"";var J=N?re.slice(7,-1):re.replace($,"$1");return J===""?void 0:J}}),h({global:!0,forced:!0},{Symbol:B})}},e163:function(a,n,l){var h=l("5135"),d=l("7b0b"),m=l("f772"),_=l("e177"),S=m("IE_PROTO"),R=Object.prototype;a.exports=_?Object.getPrototypeOf:function(I){return I=d(I),h(I,S)?I[S]:typeof I.constructor=="function"&&I instanceof I.constructor?I.constructor.prototype:I instanceof Object?R:null}},e177:function(a,n,l){var h=l("d039");a.exports=!h(function(){function d(){}return d.prototype.constructor=null,Object.getPrototypeOf(new d)!==d.prototype})},e260:function(a,n,l){var h=l("fc6a"),d=l("44d2"),m=l("3f8c"),_=l("69f3"),S=l("7dd0"),R="Array Iterator",I=_.set,O=_.getterFor(R);a.exports=S(Array,"Array",function(L,B){I(this,{type:R,target:h(L),index:0,kind:B})},function(){var L=O(this),B=L.target,P=L.kind,C=L.index++;return!B||C>=B.length?(L.target=void 0,{value:void 0,done:!0}):P=="keys"?{value:C,done:!1}:P=="values"?{value:B[C],done:!1}:{value:[C,B[C]],done:!1}},"values"),m.Arguments=m.Array,d("keys"),d("values"),d("entries")},e439:function(a,n,l){var h=l("23e7"),d=l("d039"),m=l("fc6a"),_=l("06cf").f,S=l("83ab"),R=d(function(){_(1)}),I=!S||R;h({target:"Object",stat:!0,forced:I,sham:!S},{getOwnPropertyDescriptor:function(L,B){return _(m(L),B)}})},e538:function(a,n,l){var h=l("b622");n.f=h},e893:function(a,n,l){var h=l("5135"),d=l("56ef"),m=l("06cf"),_=l("9bf2");a.exports=function(S,R){for(var I=d(R),O=_.f,L=m.f,B=0;B<I.length;B++){var P=I[B];h(S,P)||O(S,P,L(R,P))}}},e8b5:function(a,n,l){var h=l("c6b6");a.exports=Array.isArray||function(m){return h(m)=="Array"}},e95a:function(a,n,l){var h=l("b622"),d=l("3f8c"),m=h("iterator"),_=Array.prototype;a.exports=function(S){return S!==void 0&&(d.Array===S||_[m]===S)}},f5df:function(a,n,l){var h=l("00ee"),d=l("c6b6"),m=l("b622"),_=m("toStringTag"),S=d(function(){return arguments}())=="Arguments",R=function(I,O){try{return I[O]}catch{}};a.exports=h?d:function(I){var O,L,B;return I===void 0?"Undefined":I===null?"Null":typeof(L=R(O=Object(I),_))=="string"?L:S?d(O):(B=d(O))=="Object"&&typeof O.callee=="function"?"Arguments":B}},f772:function(a,n,l){var h=l("5692"),d=l("90e3"),m=h("keys");a.exports=function(_){return m[_]||(m[_]=d(_))}},fb15:function(a,n,l){if(l.r(n),typeof window<"u"){var h=window.document.currentScript;{var d=l("8875");h=d(),"currentScript"in document||Object.defineProperty(document,"currentScript",{get:d})}var m=h&&h.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);m&&(l.p=m[1])}l("99af"),l("4de4"),l("4160"),l("c975"),l("d81d"),l("a434"),l("159b"),l("a4d3"),l("e439"),l("dbb4"),l("b64b");function _(ce,ie,fe){return ie in ce?Object.defineProperty(ce,ie,{value:fe,enumerable:!0,configurable:!0,writable:!0}):ce[ie]=fe,ce}function S(ce,ie){var fe=Object.keys(ce);if(Object.getOwnPropertySymbols){var Ee=Object.getOwnPropertySymbols(ce);ie&&(Ee=Ee.filter(function(de){return Object.getOwnPropertyDescriptor(ce,de).enumerable})),fe.push.apply(fe,Ee)}return fe}function R(ce){for(var ie=1;ie<arguments.length;ie++){var fe=arguments[ie]!=null?arguments[ie]:{};ie%2?S(Object(fe),!0).forEach(function(Ee){_(ce,Ee,fe[Ee])}):Object.getOwnPropertyDescriptors?Object.defineProperties(ce,Object.getOwnPropertyDescriptors(fe)):S(Object(fe)).forEach(function(Ee){Object.defineProperty(ce,Ee,Object.getOwnPropertyDescriptor(fe,Ee))})}return ce}function I(ce){if(Array.isArray(ce))return ce}l("e01a"),l("d28b"),l("e260"),l("d3b7"),l("3ca3"),l("ddb0");function O(ce,ie){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(ce)))){var fe=[],Ee=!0,de=!1,be=void 0;try{for(var Ke=ce[Symbol.iterator](),we;!(Ee=(we=Ke.next()).done)&&(fe.push(we.value),!(ie&&fe.length===ie));Ee=!0);}catch(Se){de=!0,be=Se}finally{try{!Ee&&Ke.return!=null&&Ke.return()}finally{if(de)throw be}}return fe}}l("a630"),l("fb6a"),l("b0c0"),l("25f0");function L(ce,ie){(ie==null||ie>ce.length)&&(ie=ce.length);for(var fe=0,Ee=new Array(ie);fe<ie;fe++)Ee[fe]=ce[fe];return Ee}function B(ce,ie){if(ce){if(typeof ce=="string")return L(ce,ie);var fe=Object.prototype.toString.call(ce).slice(8,-1);if(fe==="Object"&&ce.constructor&&(fe=ce.constructor.name),fe==="Map"||fe==="Set")return Array.from(ce);if(fe==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(fe))return L(ce,ie)}}function P(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function C(ce,ie){return I(ce)||O(ce,ie)||B(ce,ie)||P()}function N(ce){if(Array.isArray(ce))return L(ce)}function $(ce){if(typeof Symbol<"u"&&Symbol.iterator in Object(ce))return Array.from(ce)}function W(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function G(ce){return N(ce)||$(ce)||B(ce)||W()}var re=l("a352"),J=l.n(re);function K(ce){ce.parentElement!==null&&ce.parentElement.removeChild(ce)}function se(ce,ie,fe){var Ee=fe===0?ce.children[0]:ce.children[fe-1].nextSibling;ce.insertBefore(ie,Ee)}var M=l("dbf1");l("13d5"),l("4fad"),l("ac1f"),l("5319");function o(ce){var ie=Object.create(null);return function(Ee){var de=ie[Ee];return de||(ie[Ee]=ce(Ee))}}var f=/-(\w)/g,u=o(function(ce){return ce.replace(f,function(ie,fe){return fe.toUpperCase()})});l("5db7"),l("73d9");var c=["Start","Add","Remove","Update","End"],p=["Choose","Unchoose","Sort","Filter","Clone"],w=["Move"],x=[w,c,p].flatMap(function(ce){return ce}).map(function(ce){return"on".concat(ce)}),g={manage:w,manageAndEmit:c,emit:p};function s(ce){return x.indexOf(ce)!==-1}l("caad"),l("2ca0");var v=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"];function T(ce){return v.includes(ce)}function D(ce){return["transition-group","TransitionGroup"].includes(ce)}function Y(ce){return["id","class","role","style"].includes(ce)||ce.startsWith("data-")||ce.startsWith("aria-")||ce.startsWith("on")}function Q(ce){return ce.reduce(function(ie,fe){var Ee=C(fe,2),de=Ee[0],be=Ee[1];return ie[de]=be,ie},{})}function A(ce){var ie=ce.$attrs,fe=ce.componentData,Ee=fe===void 0?{}:fe,de=Q(Object.entries(ie).filter(function(be){var Ke=C(be,2),we=Ke[0];return Ke[1],Y(we)}));return R(R({},de),Ee)}function E(ce){var ie=ce.$attrs,fe=ce.callBackBuilder,Ee=Q(q(ie));Object.entries(fe).forEach(function(be){var Ke=C(be,2),we=Ke[0],Se=Ke[1];g[we].forEach(function(qe){Ee["on".concat(qe)]=Se(qe)})});var de="[data-draggable]".concat(Ee.draggable||"");return R(R({},Ee),{},{draggable:de})}function q(ce){return Object.entries(ce).filter(function(ie){var fe=C(ie,2),Ee=fe[0];return fe[1],!Y(Ee)}).map(function(ie){var fe=C(ie,2),Ee=fe[0],de=fe[1];return[u(Ee),de]}).filter(function(ie){var fe=C(ie,2),Ee=fe[0];return fe[1],!s(Ee)})}l("c740");function V(ce,ie){if(!(ce instanceof ie))throw new TypeError("Cannot call a class as a function")}function X(ce,ie){for(var fe=0;fe<ie.length;fe++){var Ee=ie[fe];Ee.enumerable=Ee.enumerable||!1,Ee.configurable=!0,"value"in Ee&&(Ee.writable=!0),Object.defineProperty(ce,Ee.key,Ee)}}function b(ce,ie,fe){return ie&&X(ce.prototype,ie),fe&&X(ce,fe),ce}var y=function(ie){var fe=ie.el;return fe},F=function(ie,fe){return ie.__draggable_context=fe},U=function(ie){return ie.__draggable_context},Z=function(){function ce(ie){var fe=ie.nodes,Ee=fe.header,de=fe.default,be=fe.footer,Ke=ie.root,we=ie.realList;V(this,ce),this.defaultNodes=de,this.children=[].concat(G(Ee),G(de),G(be)),this.externalComponent=Ke.externalComponent,this.rootTransition=Ke.transition,this.tag=Ke.tag,this.realList=we}return b(ce,[{key:"render",value:function(fe,Ee){var de=this.tag,be=this.children,Ke=this._isRootComponent,we=Ke?{default:function(){return be}}:be;return fe(de,Ee,we)}},{key:"updated",value:function(){var fe=this.defaultNodes,Ee=this.realList;fe.forEach(function(de,be){F(y(de),{element:Ee[be],index:be})})}},{key:"getUnderlyingVm",value:function(fe){return U(fe)}},{key:"getVmIndexFromDomIndex",value:function(fe,Ee){var de=this.defaultNodes,be=de.length,Ke=Ee.children,we=Ke.item(fe);if(we===null)return be;var Se=U(we);if(Se)return Se.index;if(be===0)return 0;var qe=y(de[0]),ge=G(Ke).findIndex(function(Me){return Me===qe});return fe<ge?0:be}},{key:"_isRootComponent",get:function(){return this.externalComponent||this.rootTransition}}]),ce}(),j=l("8bbf");function k(ce,ie){var fe=ce[ie];return fe?fe():[]}function H(ce){var ie=ce.$slots,fe=ce.realList,Ee=ce.getKey,de=fe||[],be=["header","footer"].map(function(Me){return k(ie,Me)}),Ke=C(be,2),we=Ke[0],Se=Ke[1],qe=ie.item;if(!qe)throw new Error("draggable element must have an item slot");var ge=de.flatMap(function(Me,Ve){return qe({element:Me,index:Ve}).map(function(_e){return _e.key=Ee(Me),_e.props=R(R({},_e.props||{}),{},{"data-draggable":!0}),_e})});if(ge.length!==de.length)throw new Error("Item slot must have only one child");return{header:we,footer:Se,default:ge}}function z(ce){var ie=D(ce),fe=!T(ce)&&!ie;return{transition:ie,externalComponent:fe,tag:fe?Object(j.resolveComponent)(ce):ie?j.TransitionGroup:ce}}function oe(ce){var ie=ce.$slots,fe=ce.tag,Ee=ce.realList,de=ce.getKey,be=H({$slots:ie,realList:Ee,getKey:de}),Ke=z(fe);return new Z({nodes:be,root:Ke,realList:Ee})}function ee(ce,ie){var fe=this;Object(j.nextTick)(function(){return fe.$emit(ce.toLowerCase(),ie)})}function ne(ce){var ie=this;return function(fe,Ee){if(ie.realList!==null)return ie["onDrag".concat(ce)](fe,Ee)}}function me(ce){var ie=this,fe=ne.call(this,ce);return function(Ee,de){fe.call(ie,Ee,de),ee.call(ie,ce,Ee)}}var he=null,ue={list:{type:Array,required:!1,default:null},modelValue:{type:Array,required:!1,default:null},itemKey:{type:[String,Function],required:!0},clone:{type:Function,default:function(ie){return ie}},tag:{type:String,default:"div"},move:{type:Function,default:null},componentData:{type:Object,required:!1,default:null}},xe=["update:modelValue","change"].concat(G([].concat(G(g.manageAndEmit),G(g.emit)).map(function(ce){return ce.toLowerCase()}))),le=Object(j.defineComponent)({name:"draggable",inheritAttrs:!1,props:ue,emits:xe,data:function(){return{error:!1}},render:function(){try{this.error=!1;var ie=this.$slots,fe=this.$attrs,Ee=this.tag,de=this.componentData,be=this.realList,Ke=this.getKey,we=oe({$slots:ie,tag:Ee,realList:be,getKey:Ke});this.componentStructure=we;var Se=A({$attrs:fe,componentData:de});return we.render(j.h,Se)}catch(qe){return this.error=!0,Object(j.h)("pre",{style:{color:"red"}},qe.stack)}},created:function(){this.list!==null&&this.modelValue!==null&&M.a.error("modelValue and list props are mutually exclusive! Please set one or another.")},mounted:function(){var ie=this;if(!this.error){var fe=this.$attrs,Ee=this.$el,de=this.componentStructure;de.updated();var be=E({$attrs:fe,callBackBuilder:{manageAndEmit:function(Se){return me.call(ie,Se)},emit:function(Se){return ee.bind(ie,Se)},manage:function(Se){return ne.call(ie,Se)}}}),Ke=Ee.nodeType===1?Ee:Ee.parentElement;this._sortable=new J.a(Ke,be),this.targetDomElement=Ke,Ke.__draggable_component__=this}},updated:function(){this.componentStructure.updated()},beforeUnmount:function(){this._sortable!==void 0&&this._sortable.destroy()},computed:{realList:function(){var ie=this.list;return ie||this.modelValue},getKey:function(){var ie=this.itemKey;return typeof ie=="function"?ie:function(fe){return fe[ie]}}},watch:{$attrs:{handler:function(ie){var fe=this._sortable;fe&&q(ie).forEach(function(Ee){var de=C(Ee,2),be=de[0],Ke=de[1];fe.option(be,Ke)})},deep:!0}},methods:{getUnderlyingVm:function(ie){return this.componentStructure.getUnderlyingVm(ie)||null},getUnderlyingPotencialDraggableComponent:function(ie){return ie.__draggable_component__},emitChanges:function(ie){var fe=this;Object(j.nextTick)(function(){return fe.$emit("change",ie)})},alterList:function(ie){if(this.list){ie(this.list);return}var fe=G(this.modelValue);ie(fe),this.$emit("update:modelValue",fe)},spliceList:function(){var ie=arguments,fe=function(de){return de.splice.apply(de,G(ie))};this.alterList(fe)},updatePosition:function(ie,fe){var Ee=function(be){return be.splice(fe,0,be.splice(ie,1)[0])};this.alterList(Ee)},getRelatedContextFromMoveEvent:function(ie){var fe=ie.to,Ee=ie.related,de=this.getUnderlyingPotencialDraggableComponent(fe);if(!de)return{component:de};var be=de.realList,Ke={list:be,component:de};if(fe!==Ee&&be){var we=de.getUnderlyingVm(Ee)||{};return R(R({},we),Ke)}return Ke},getVmIndexFromDomIndex:function(ie){return this.componentStructure.getVmIndexFromDomIndex(ie,this.targetDomElement)},onDragStart:function(ie){this.context=this.getUnderlyingVm(ie.item),ie.item._underlying_vm_=this.clone(this.context.element),he=ie.item},onDragAdd:function(ie){var fe=ie.item._underlying_vm_;if(fe!==void 0){K(ie.item);var Ee=this.getVmIndexFromDomIndex(ie.newIndex);this.spliceList(Ee,0,fe);var de={element:fe,newIndex:Ee};this.emitChanges({added:de})}},onDragRemove:function(ie){if(se(this.$el,ie.item,ie.oldIndex),ie.pullMode==="clone"){K(ie.clone);return}var fe=this.context,Ee=fe.index,de=fe.element;this.spliceList(Ee,1);var be={element:de,oldIndex:Ee};this.emitChanges({removed:be})},onDragUpdate:function(ie){K(ie.item),se(ie.from,ie.item,ie.oldIndex);var fe=this.context.index,Ee=this.getVmIndexFromDomIndex(ie.newIndex);this.updatePosition(fe,Ee);var de={element:this.context.element,oldIndex:fe,newIndex:Ee};this.emitChanges({moved:de})},computeFutureIndex:function(ie,fe){if(!ie.element)return 0;var Ee=G(fe.to.children).filter(function(we){return we.style.display!=="none"}),de=Ee.indexOf(fe.related),be=ie.component.getVmIndexFromDomIndex(de),Ke=Ee.indexOf(he)!==-1;return Ke||!fe.willInsertAfter?be:be+1},onDragMove:function(ie,fe){var Ee=this.move,de=this.realList;if(!Ee||!de)return!0;var be=this.getRelatedContextFromMoveEvent(ie),Ke=this.computeFutureIndex(be,ie),we=R(R({},this.context),{},{futureIndex:Ke}),Se=R(R({},ie),{},{relatedContext:be,draggedContext:we});return Ee(Se,fe)},onDragEnd:function(){he=null}}}),ve=le;n.default=ve},fb6a:function(a,n,l){var h=l("23e7"),d=l("861d"),m=l("e8b5"),_=l("23cb"),S=l("50c4"),R=l("fc6a"),I=l("8418"),O=l("b622"),L=l("1dde"),B=l("ae40"),P=L("slice"),C=B("slice",{ACCESSORS:!0,0:0,1:2}),N=O("species"),$=[].slice,W=Math.max;h({target:"Array",proto:!0,forced:!P||!C},{slice:function(re,J){var K=R(this),se=S(K.length),M=_(re,se),o=_(J===void 0?se:J,se),f,u,c;if(m(K)&&(f=K.constructor,typeof f=="function"&&(f===Array||m(f.prototype))?f=void 0:d(f)&&(f=f[N],f===null&&(f=void 0)),f===Array||f===void 0))return $.call(K,M,o);for(u=new(f===void 0?Array:f)(W(o-M,0)),c=0;M<o;M++,c++)M in K&&I(u,c,K[M]);return u.length=c,u}})},fc6a:function(a,n,l){var h=l("44ad"),d=l("1d80");a.exports=function(m){return h(d(m))}},fdbc:function(a,n){a.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},fdbf:function(a,n,l){var h=l("4930");a.exports=h&&!Symbol.sham&&typeof Symbol.iterator=="symbol"}}).default})})(Tx);var uU=Tx.exports;const PY=Vo(uU);var $l={};$l.version="1.0.0";$l.encode=function(t){return t.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")};$l.decode=function(t){return t+=Array(5-t.length%4).join("="),t=t.replace(/\-/g,"+").replace(/\_/g,"/"),new Le.Buffer(t,"base64")};$l.validate=function(t){return/^[A-Za-z0-9\-_]+$/.test(t)};var CY=$l,lt={},wv={exports:{}},c0=65536,hU=4294967295;function cU(){throw new Error(`Secure random number generation is not supported by this browser.
+Use Chrome, Firefox or Internet Explorer 11`)}var dU=vt.Buffer,Eh=Ze.crypto||Ze.msCrypto;Eh&&Eh.getRandomValues?wv.exports=pU:wv.exports=cU;function pU(e,t){if(e>hU)throw new RangeError("requested too many random bytes");var r=dU.allocUnsafe(e);if(e>0)if(e>c0)for(var i=0;i<e;i+=c0)Eh.getRandomValues(r.slice(i,i+c0));else Eh.getRandomValues(r);return typeof t=="function"?ye.nextTick(function(){t(null,r)}):r}var rf=wv.exports,_v={exports:{}},Ox=kr.EventEmitter,d0,aw;function vU(){if(aw)return d0;aw=1;function e(O,L){var B=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);L&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),B.push.apply(B,P)}return B}function t(O){for(var L=1;L<arguments.length;L++){var B=arguments[L]!=null?arguments[L]:{};L%2?e(Object(B),!0).forEach(function(P){r(O,P,B[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(B)):e(Object(B)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(B,P))})}return O}function r(O,L,B){return L=l(L),L in O?Object.defineProperty(O,L,{value:B,enumerable:!0,configurable:!0,writable:!0}):O[L]=B,O}function i(O,L){if(!(O instanceof L))throw new TypeError("Cannot call a class as a function")}function a(O,L){for(var B=0;B<L.length;B++){var P=L[B];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,L,B){return L&&a(O.prototype,L),B&&a(O,B),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var L=h(O,"string");return typeof L=="symbol"?L:String(L)}function h(O,L){if(typeof O!="object"||O===null)return O;var B=O[Symbol.toPrimitive];if(B!==void 0){var P=B.call(O,L||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(L==="string"?String:Number)(O)}var d=Le,m=d.Buffer,_=oi,S=_.inspect,R=S&&S.custom||"inspect";function I(O,L,B){m.prototype.copy.call(O,L,B)}return d0=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(B){var P={data:B,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(B){var P={data:B,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var B=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,B}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(B){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=B+P.data;return C}},{key:"concat",value:function(B){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(B>>>0),C=this.head,N=0;C;)I(C.data,P,N),N+=C.data.length,C=C.next;return P}},{key:"consume",value:function(B,P){var C;return B<this.head.data.length?(C=this.head.data.slice(0,B),this.head.data=this.head.data.slice(B)):B===this.head.data.length?C=this.shift():C=P?this._getString(B):this._getBuffer(B),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(B){var P=this.head,C=1,N=P.data;for(B-=N.length;P=P.next;){var $=P.data,W=B>$.length?$.length:B;if(W===$.length?N+=$:N+=$.slice(0,B),B-=W,B===0){W===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(W));break}++C}return this.length-=C,N}},{key:"_getBuffer",value:function(B){var P=m.allocUnsafe(B),C=this.head,N=1;for(C.data.copy(P),B-=C.data.length;C=C.next;){var $=C.data,W=B>$.length?$.length:B;if($.copy(P,P.length-B,0,W),B-=W,B===0){W===$.length?(++N,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(W));break}++N}return this.length-=N,P}},{key:R,value:function(B,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),d0}function gU(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,ye.nextTick(Mv,this,e)):ye.nextTick(Mv,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?ye.nextTick(Nu,r):(r._writableState.errorEmitted=!0,ye.nextTick(sw,r,n)):ye.nextTick(sw,r,n):t?(ye.nextTick(Nu,r),t(n)):ye.nextTick(Nu,r)}),this)}function sw(e,t){Mv(e,t),Nu(e)}function Nu(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function mU(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Mv(e,t){e.emit("error",t)}function yU(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}var Ix={destroy:gU,undestroy:mU,errorOrDestroy:yU},Fa={};function bU(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var Px={};function Pi(e,t,r){r||(r=Error);function i(n,l,h){return typeof t=="string"?t:t(n,l,h)}var a=function(n){bU(l,n);function l(h,d,m){return n.call(this,i(h,d,m))||this}return l}(r);a.prototype.name=r.name,a.prototype.code=e,Px[e]=a}function fw(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(i){return String(i)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function wU(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function _U(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function MU(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Pi("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Pi("ERR_INVALID_ARG_TYPE",function(e,t,r){var i;typeof t=="string"&&wU(t,"not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";var a;if(_U(e," argument"))a="The ".concat(e," ").concat(i," ").concat(fw(t,"type"));else{var n=MU(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(n," ").concat(i," ").concat(fw(t,"type"))}return a+=". Received type ".concat(typeof r),a},TypeError);Pi("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Pi("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Pi("ERR_STREAM_PREMATURE_CLOSE","Premature close");Pi("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Pi("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Pi("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Pi("ERR_STREAM_WRITE_AFTER_END","write after end");Pi("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Pi("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Pi("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Fa.codes=Px;var SU=Fa.codes.ERR_INVALID_OPT_VALUE;function xU(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function EU(e,t,r,i){var a=xU(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=i?r:"highWaterMark";throw new SU(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}var Cx={getHighWaterMark:EU},p0,lw;function Bx(){if(lw)return p0;lw=1,p0=J;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){Q(E,A)}}var t;J.WritableState=G;var r={deprecate:ef},i=Ox,a=Le.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function h(A){return a.isBuffer(A)||A instanceof n}var d=Ix,m=Cx,_=m.getHighWaterMark,S=Fa.codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,L=S.ERR_STREAM_CANNOT_PIPE,B=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,N=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(J,i);function W(){}function G(A,E,q){t=t||$s(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=_(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var re;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(re=Function.prototype[Symbol.hasInstance],Object.defineProperty(J,Symbol.hasInstance,{value:function(E){return re.call(this,E)?!0:this!==J?!1:E&&E._writableState instanceof G}})):re=function(E){return E instanceof this};function J(A){t=t||$s();var E=this instanceof t;if(!E&&!re.call(J,this))return new J(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}J.prototype.pipe=function(){$(this,new L)};function K(A,E){var q=new C;$(A,q),ye.nextTick(E,q)}function se(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),ye.nextTick(V,X),!1):!0}J.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&h(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=W),V.ending?K(this,q):(b||se(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},J.prototype.cork=function(){this._writableState.corked++},J.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},J.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new N(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(J.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function M(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(J.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=M(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var F=E.objectMode?1:V.length;E.length+=F;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,F,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new B("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(ye.nextTick(X,V),ye.nextTick(D,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),D(A,E))}function c(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(c(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?ye.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),D(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,F=!0;q;)X[y]=q,q.isBuf||(F=!1),q=q.next,y+=1;X.allBuffers=F,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,j=q.callback,k=E.objectMode?1:U.length;if(f(A,E,!1,k,U,Z,j),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}J.prototype._write=function(A,E,q){q(new I("_write()"))},J.prototype._writev=null,J.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(J.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),D(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,ye.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function D(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,D(A,E),q&&(E.finished?ye.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function Q(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(J.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),J.prototype.destroy=d.destroy,J.prototype._undestroy=d.undestroy,J.prototype._destroy=function(A,E){E(A)},p0}var v0,uw;function $s(){if(uw)return v0;uw=1;var e=Object.keys||function(m){var _=[];for(var S in m)_.push(S);return _};v0=l;var t=Nx(),r=Bx();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",h)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function h(){this._writableState.ended||ye.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(_){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=_,this._writableState.destroyed=_)}}),v0}var hw=Fa.codes.ERR_STREAM_PREMATURE_CLOSE;function RU(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];e.apply(this,i)}}}function AU(){}function TU(e){return e.setHeader&&typeof e.abort=="function"}function Lx(e,t,r){if(typeof t=="function")return Lx(e,null,t);t||(t={}),r=RU(r||AU);var i=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||h()},l=e._writableState&&e._writableState.finished,h=function(){a=!1,l=!0,i||r.call(e)},d=e._readableState&&e._readableState.endEmitted,m=function(){i=!1,d=!0,a||r.call(e)},_=function(O){r.call(e,O)},S=function(){var O;if(i&&!d)return(!e._readableState||!e._readableState.ended)&&(O=new hw),r.call(e,O);if(a&&!l)return(!e._writableState||!e._writableState.ended)&&(O=new hw),r.call(e,O)},R=function(){e.req.on("finish",h)};return TU(e)?(e.on("complete",h),e.on("abort",S),e.req?R():e.on("request",R)):a&&!e._writableState&&(e.on("end",n),e.on("close",n)),e.on("end",m),e.on("finish",h),t.error!==!1&&e.on("error",_),e.on("close",S),function(){e.removeListener("complete",h),e.removeListener("abort",S),e.removeListener("request",R),e.req&&e.req.removeListener("finish",h),e.removeListener("end",n),e.removeListener("close",n),e.removeListener("finish",h),e.removeListener("end",m),e.removeListener("error",_),e.removeListener("close",S)}}var Qg=Lx,g0,cw;function OU(){if(cw)return g0;cw=1;var e;function t(N,$,W){return $=r($),$ in N?Object.defineProperty(N,$,{value:W,enumerable:!0,configurable:!0,writable:!0}):N[$]=W,N}function r(N){var $=i(N,"string");return typeof $=="symbol"?$:String($)}function i(N,$){if(typeof N!="object"||N===null)return N;var W=N[Symbol.toPrimitive];if(W!==void 0){var G=W.call(N,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(N)}var a=Qg,n=Symbol("lastResolve"),l=Symbol("lastReject"),h=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),_=Symbol("handlePromise"),S=Symbol("stream");function R(N,$){return{value:N,done:$}}function I(N){var $=N[n];if($!==null){var W=N[S].read();W!==null&&(N[m]=null,N[n]=null,N[l]=null,$(R(W,!1)))}}function O(N){ye.nextTick(I,N)}function L(N,$){return function(W,G){N.then(function(){if($[d]){W(R(void 0,!0));return}$[_](W,G)},G)}}var B=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,W=this[h];if(W!==null)return Promise.reject(W);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(K,se){ye.nextTick(function(){$[h]?se($[h]):K(R(void 0,!0))})});var G=this[m],re;if(G)re=new Promise(L(G,this));else{var J=this[S].read();if(J!==null)return Promise.resolve(R(J,!1));re=new Promise(this[_])}return this[m]=re,re}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(W,G){$[S].destroy(null,function(re){if(re){G(re);return}W(R(void 0,!0))})})}),e),B),C=function($){var W,G=Object.create(P,(W={},t(W,S,{value:$,writable:!0}),t(W,n,{value:null,writable:!0}),t(W,l,{value:null,writable:!0}),t(W,h,{value:null,writable:!0}),t(W,d,{value:$._readableState.endEmitted,writable:!0}),t(W,_,{value:function(J,K){var se=G[S].read();se?(G[m]=null,G[n]=null,G[l]=null,J(R(se,!1))):(G[n]=J,G[l]=K)},writable:!0}),W));return G[m]=null,a($,function(re){if(re&&re.code!=="ERR_STREAM_PREMATURE_CLOSE"){var J=G[l];J!==null&&(G[m]=null,G[n]=null,G[l]=null,J(re)),G[h]=re;return}var K=G[n];K!==null&&(G[m]=null,G[n]=null,G[l]=null,K(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return g0=C,g0}var m0,dw;function IU(){return dw||(dw=1,m0=function(){throw new Error("Readable.from is not available in the browser")}),m0}var y0,pw;function Nx(){if(pw)return y0;pw=1,y0=K;var e;K.ReadableState=J,kr.EventEmitter;var t=function(y,F){return y.listeners(F).length},r=Ox,i=Le.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var h=oi,d;h&&h.debuglog?d=h.debuglog("stream"):d=function(){};var m=vU(),_=Ix,S=Cx,R=S.getHighWaterMark,I=Fa.codes,O=I.ERR_INVALID_ARG_TYPE,L=I.ERR_STREAM_PUSH_AFTER_EOF,B=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,N,$;Ye(K,r);var W=_.errorOrDestroy,G=["error","close","destroy","pause","resume"];function re(b,y,F){if(typeof b.prependListener=="function")return b.prependListener(y,F);!b._events||!b._events[y]?b.on(y,F):Array.isArray(b._events[y])?b._events[y].unshift(F):b._events[y]=[F,b._events[y]]}function J(b,y,F){e=e||$s(),b=b||{},typeof F!="boolean"&&(F=y instanceof e),this.objectMode=!!b.objectMode,F&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",F),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=ti().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function K(b){if(e=e||$s(),!(this instanceof K))return new K(b);var y=this instanceof e;this._readableState=new J(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(K.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),K.prototype.destroy=_.destroy,K.prototype._undestroy=_.undestroy,K.prototype._destroy=function(b,y){y(b)},K.prototype.push=function(b,y){var F=this._readableState,U;return F.objectMode?U=!0:typeof b=="string"&&(y=y||F.defaultEncoding,y!==F.encoding&&(b=i.from(b,y),y=""),U=!0),se(this,b,y,!1,U)},K.prototype.unshift=function(b){return se(this,b,null,!0,!1)};function se(b,y,F,U,Z){d("readableAddChunk",y);var j=b._readableState;if(y===null)j.reading=!1,p(b,j);else{var k;if(Z||(k=o(j,y)),k)W(b,k);else if(j.objectMode||y&&y.length>0)if(typeof y!="string"&&!j.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)j.endEmitted?W(b,new P):M(b,j,y,!0);else if(j.ended)W(b,new L);else{if(j.destroyed)return!1;j.reading=!1,j.decoder&&!F?(y=j.decoder.write(y),j.objectMode||y.length!==0?M(b,j,y,!1):g(b,j)):M(b,j,y,!1)}else U||(j.reading=!1,g(b,j))}return!j.ended&&(j.length<j.highWaterMark||j.length===0)}function M(b,y,F,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",F)):(y.length+=y.objectMode?1:F.length,U?y.buffer.unshift(F):y.buffer.push(F),y.needReadable&&w(b)),g(b,y)}function o(b,y){var F;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(F=new O("chunk",["string","Buffer","Uint8Array"],y)),F}K.prototype.isPaused=function(){return this._readableState.flowing===!1},K.prototype.setEncoding=function(b){C||(C=ti().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var F=this._readableState.buffer.head,U="";F!==null;)U+=y.write(F.data),F=F.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function c(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}K.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,F=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=c(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=c(F,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),F!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var F=y.decoder.end();F&&F.length&&(y.buffer.push(F),y.length+=y.objectMode?1:F.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,ye.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,ye.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var F=y.length;if(d("maybeReadMore read 0"),b.read(0),F===y.length)break}y.readingMore=!1}K.prototype._read=function(b){W(this,new B("_read()"))},K.prototype.pipe=function(b,y){var F=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==ye.stdout&&b!==ye.stderr,j=Z?H:xe;U.endEmitted?ye.nextTick(j):F.once("end",j),b.on("unpipe",k);function k(le,ve){d("onunpipe"),le===F&&ve&&ve.hasUnpiped===!1&&(ve.hasUnpiped=!0,ee())}function H(){d("onend"),b.end()}var z=v(F);b.on("drain",z);var oe=!1;function ee(){d("cleanup"),b.removeListener("close",he),b.removeListener("finish",ue),b.removeListener("drain",z),b.removeListener("error",me),b.removeListener("unpipe",k),F.removeListener("end",H),F.removeListener("end",xe),F.removeListener("data",ne),oe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}F.on("data",ne);function ne(le){d("ondata");var ve=b.write(le);d("dest.write",ve),ve===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!oe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),F.pause())}function me(le){d("onerror",le),xe(),b.removeListener("error",me),t(b,"error")===0&&W(b,le)}re(b,"error",me);function he(){b.removeListener("finish",ue),xe()}b.once("close",he);function ue(){d("onfinish"),b.removeListener("close",he),xe()}b.once("finish",ue);function xe(){d("unpipe"),F.unpipe(b)}return b.emit("pipe",F),U.flowing||(d("pipe resume"),F.resume()),b};function v(b){return function(){var F=b._readableState;d("pipeOnDrain",F.awaitDrain),F.awaitDrain&&F.awaitDrain--,F.awaitDrain===0&&t(b,"data")&&(F.flowing=!0,A(b))}}K.prototype.unpipe=function(b){var y=this._readableState,F={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,F),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var j=0;j<Z;j++)U[j].emit("unpipe",this,{hasUnpiped:!1});return this}var k=X(y.pipes,b);return k===-1?this:(y.pipes.splice(k,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,F),this)},K.prototype.on=function(b,y){var F=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||ye.nextTick(D,this)),F},K.prototype.addListener=K.prototype.on,K.prototype.removeListener=function(b,y){var F=r.prototype.removeListener.call(this,b,y);return b==="readable"&&ye.nextTick(T,this),F},K.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&ye.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function D(b){d("readable nexttick read 0"),b.read(0)}K.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,ye.nextTick(Q,b,y))}function Q(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}K.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}K.prototype.wrap=function(b){var y=this,F=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),F.decoder&&!F.ended){var k=F.decoder.end();k&&k.length&&y.push(k)}y.push(null)}),b.on("data",function(k){if(d("wrapped data"),F.decoder&&(k=F.decoder.write(k)),!(F.objectMode&&k==null)&&!(!F.objectMode&&(!k||!k.length))){var H=y.push(k);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var j=0;j<G.length;j++)b.on(G[j],this.emit.bind(this,G[j]));return this._read=function(k){d("wrapped _read",k),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(K.prototype[Symbol.asyncIterator]=function(){return N===void 0&&(N=OU()),N(this)}),Object.defineProperty(K.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(K.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(K.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),K._fromList=E,Object.defineProperty(K.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var F;return y.objectMode?F=y.buffer.shift():!b||b>=y.length?(y.decoder?F=y.buffer.join(""):y.buffer.length===1?F=y.buffer.first():F=y.buffer.concat(y.length),y.buffer.clear()):F=y.buffer.consume(b,y.decoder),F}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,ye.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var F=y._writableState;(!F||F.autoDestroy&&F.finished)&&y.destroy()}}typeof Symbol=="function"&&(K.from=function(b,y){return $===void 0&&($=IU()),$(K,b,y)});function X(b,y){for(var F=0,U=b.length;F<U;F++)if(b[F]===y)return F;return-1}return y0}var kx=io,Mc=Fa.codes,PU=Mc.ERR_METHOD_NOT_IMPLEMENTED,CU=Mc.ERR_MULTIPLE_CALLBACK,BU=Mc.ERR_TRANSFORM_ALREADY_TRANSFORMING,LU=Mc.ERR_TRANSFORM_WITH_LENGTH_0,Sc=$s();Ye(io,Sc);function NU(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new CU);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function io(e){if(!(this instanceof io))return new io(e);Sc.call(this,e),this._transformState={afterTransform:NU.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",kU)}function kU(){var e=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(t,r){vw(e,t,r)}):vw(this,null,null)}io.prototype.push=function(e,t){return this._transformState.needTransform=!1,Sc.prototype.push.call(this,e,t)};io.prototype._transform=function(e,t,r){r(new PU("_transform()"))};io.prototype._write=function(e,t,r){var i=this._transformState;if(i.writecb=r,i.writechunk=e,i.writeencoding=t,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};io.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};io.prototype._destroy=function(e,t){Sc.prototype._destroy.call(this,e,function(r){t(r)})};function vw(e,t,r){if(t)return e.emit("error",t);if(r!=null&&e.push(r),e._writableState.length)throw new LU;if(e._transformState.transforming)throw new BU;return e.push(null)}var $U=vl,$x=kx;Ye(vl,$x);function vl(e){if(!(this instanceof vl))return new vl(e);$x.call(this,e)}vl.prototype._transform=function(e,t,r){r(null,e)};var b0;function DU(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var Dx=Fa.codes,FU=Dx.ERR_MISSING_ARGS,jU=Dx.ERR_STREAM_DESTROYED;function gw(e){if(e)throw e}function UU(e){return e.setHeader&&typeof e.abort=="function"}function HU(e,t,r,i){i=DU(i);var a=!1;e.on("close",function(){a=!0}),b0===void 0&&(b0=Qg),b0(e,{readable:t,writable:r},function(l){if(l)return i(l);a=!0,i()});var n=!1;return function(l){if(!a&&!n){if(n=!0,UU(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();i(l||new jU("pipe"))}}}function mw(e){e()}function qU(e,t){return e.pipe(t)}function WU(e){return!e.length||typeof e[e.length-1]!="function"?gw:e.pop()}function KU(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=WU(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new FU("streams");var a,n=t.map(function(l,h){var d=h<t.length-1,m=h>0;return HU(l,d,m,function(_){a||(a=_),_&&n.forEach(mw),!d&&(n.forEach(mw),i(a))})});return t.reduce(qU)}var VU=KU;(function(e,t){t=e.exports=Nx(),t.Stream=t,t.Readable=t,t.Writable=Bx(),t.Duplex=$s(),t.Transform=kx,t.PassThrough=$U,t.finished=Qg,t.pipeline=VU})(_v,_v.exports);var zU=_v.exports,Rh=vt.Buffer,Fx=zU.Transform,GU=Ye;function YU(e,t){if(!Rh.isBuffer(e)&&typeof e!="string")throw new TypeError(t+" must be a string or a buffer")}function Go(e){Fx.call(this),this._block=Rh.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}GU(Go,Fx);Go.prototype._transform=function(e,t,r){var i=null;try{this.update(e,t)}catch(a){i=a}r(i)};Go.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(r){t=r}e(t)};Go.prototype.update=function(e,t){if(YU(e,"Data"),this._finalized)throw new Error("Digest already called");Rh.isBuffer(e)||(e=Rh.from(e,t));for(var r=this._block,i=0;this._blockOffset+e.length-i>=this._blockSize;){for(var a=this._blockOffset;a<this._blockSize;)r[a++]=e[i++];this._update(),this._blockOffset=0}for(;i<e.length;)r[this._blockOffset++]=e[i++];for(var n=0,l=e.length*8;l>0;++n)this._length[n]+=l,l=this._length[n]/4294967296|0,l>0&&(this._length[n]-=4294967296*l);return this};Go.prototype._update=function(){throw new Error("_update is not implemented")};Go.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();e!==void 0&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t};Go.prototype._digest=function(){throw new Error("_digest is not implemented")};var jx=Go,ZU=Ye,Ux=jx,XU=vt.Buffer,JU=new Array(16);function xc(){Ux.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}ZU(xc,Ux);xc.prototype._update=function(){for(var e=JU,t=0;t<16;++t)e[t]=this._block.readInt32LE(t*4);var r=this._a,i=this._b,a=this._c,n=this._d;r=xr(r,i,a,n,e[0],3614090360,7),n=xr(n,r,i,a,e[1],3905402710,12),a=xr(a,n,r,i,e[2],606105819,17),i=xr(i,a,n,r,e[3],3250441966,22),r=xr(r,i,a,n,e[4],4118548399,7),n=xr(n,r,i,a,e[5],1200080426,12),a=xr(a,n,r,i,e[6],2821735955,17),i=xr(i,a,n,r,e[7],4249261313,22),r=xr(r,i,a,n,e[8],1770035416,7),n=xr(n,r,i,a,e[9],2336552879,12),a=xr(a,n,r,i,e[10],4294925233,17),i=xr(i,a,n,r,e[11],2304563134,22),r=xr(r,i,a,n,e[12],1804603682,7),n=xr(n,r,i,a,e[13],4254626195,12),a=xr(a,n,r,i,e[14],2792965006,17),i=xr(i,a,n,r,e[15],1236535329,22),r=Er(r,i,a,n,e[1],4129170786,5),n=Er(n,r,i,a,e[6],3225465664,9),a=Er(a,n,r,i,e[11],643717713,14),i=Er(i,a,n,r,e[0],3921069994,20),r=Er(r,i,a,n,e[5],3593408605,5),n=Er(n,r,i,a,e[10],38016083,9),a=Er(a,n,r,i,e[15],3634488961,14),i=Er(i,a,n,r,e[4],3889429448,20),r=Er(r,i,a,n,e[9],568446438,5),n=Er(n,r,i,a,e[14],3275163606,9),a=Er(a,n,r,i,e[3],4107603335,14),i=Er(i,a,n,r,e[8],1163531501,20),r=Er(r,i,a,n,e[13],2850285829,5),n=Er(n,r,i,a,e[2],4243563512,9),a=Er(a,n,r,i,e[7],1735328473,14),i=Er(i,a,n,r,e[12],2368359562,20),r=Rr(r,i,a,n,e[5],4294588738,4),n=Rr(n,r,i,a,e[8],2272392833,11),a=Rr(a,n,r,i,e[11],1839030562,16),i=Rr(i,a,n,r,e[14],4259657740,23),r=Rr(r,i,a,n,e[1],2763975236,4),n=Rr(n,r,i,a,e[4],1272893353,11),a=Rr(a,n,r,i,e[7],4139469664,16),i=Rr(i,a,n,r,e[10],3200236656,23),r=Rr(r,i,a,n,e[13],681279174,4),n=Rr(n,r,i,a,e[0],3936430074,11),a=Rr(a,n,r,i,e[3],3572445317,16),i=Rr(i,a,n,r,e[6],76029189,23),r=Rr(r,i,a,n,e[9],3654602809,4),n=Rr(n,r,i,a,e[12],3873151461,11),a=Rr(a,n,r,i,e[15],530742520,16),i=Rr(i,a,n,r,e[2],3299628645,23),r=Ar(r,i,a,n,e[0],4096336452,6),n=Ar(n,r,i,a,e[7],1126891415,10),a=Ar(a,n,r,i,e[14],2878612391,15),i=Ar(i,a,n,r,e[5],4237533241,21),r=Ar(r,i,a,n,e[12],1700485571,6),n=Ar(n,r,i,a,e[3],2399980690,10),a=Ar(a,n,r,i,e[10],4293915773,15),i=Ar(i,a,n,r,e[1],2240044497,21),r=Ar(r,i,a,n,e[8],1873313359,6),n=Ar(n,r,i,a,e[15],4264355552,10),a=Ar(a,n,r,i,e[6],2734768916,15),i=Ar(i,a,n,r,e[13],1309151649,21),r=Ar(r,i,a,n,e[4],4149444226,6),n=Ar(n,r,i,a,e[11],3174756917,10),a=Ar(a,n,r,i,e[2],718787259,15),i=Ar(i,a,n,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+a|0,this._d=this._d+n|0};xc.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=XU.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};function Ec(e,t){return e<<t|e>>>32-t}function xr(e,t,r,i,a,n,l){return Ec(e+(t&r|~t&i)+a+n|0,l)+t|0}function Er(e,t,r,i,a,n,l){return Ec(e+(t&i|r&~i)+a+n|0,l)+t|0}function Rr(e,t,r,i,a,n,l){return Ec(e+(t^r^i)+a+n|0,l)+t|0}function Ar(e,t,r,i,a,n,l){return Ec(e+(r^(t|~i))+a+n|0,l)+t|0}var em=xc,w0=Le.Buffer,QU=Ye,Hx=jx,eH=new Array(16),Tf=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],Of=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],If=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],Pf=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],Cf=[0,1518500249,1859775393,2400959708,2840853838],Bf=[1352829926,1548603684,1836072691,2053994217,0];function Rc(){Hx.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}QU(Rc,Hx);Rc.prototype._update=function(){for(var e=eH,t=0;t<16;++t)e[t]=this._block.readInt32LE(t*4);for(var r=this._a|0,i=this._b|0,a=this._c|0,n=this._d|0,l=this._e|0,h=this._a|0,d=this._b|0,m=this._c|0,_=this._d|0,S=this._e|0,R=0;R<80;R+=1){var I,O;R<16?(I=yw(r,i,a,n,l,e[Tf[R]],Cf[0],If[R]),O=Mw(h,d,m,_,S,e[Of[R]],Bf[0],Pf[R])):R<32?(I=bw(r,i,a,n,l,e[Tf[R]],Cf[1],If[R]),O=_w(h,d,m,_,S,e[Of[R]],Bf[1],Pf[R])):R<48?(I=ww(r,i,a,n,l,e[Tf[R]],Cf[2],If[R]),O=ww(h,d,m,_,S,e[Of[R]],Bf[2],Pf[R])):R<64?(I=_w(r,i,a,n,l,e[Tf[R]],Cf[3],If[R]),O=bw(h,d,m,_,S,e[Of[R]],Bf[3],Pf[R])):(I=Mw(r,i,a,n,l,e[Tf[R]],Cf[4],If[R]),O=yw(h,d,m,_,S,e[Of[R]],Bf[4],Pf[R])),r=l,l=n,n=Ea(a,10),a=i,i=I,h=S,S=_,_=Ea(m,10),m=d,d=O}var L=this._b+a+_|0;this._b=this._c+n+S|0,this._c=this._d+l+h|0,this._d=this._e+r+d|0,this._e=this._a+i+m|0,this._a=L};Rc.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=w0.alloc?w0.alloc(20):new w0(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};function Ea(e,t){return e<<t|e>>>32-t}function yw(e,t,r,i,a,n,l,h){return Ea(e+(t^r^i)+n+l|0,h)+a|0}function bw(e,t,r,i,a,n,l,h){return Ea(e+(t&r|~t&i)+n+l|0,h)+a|0}function ww(e,t,r,i,a,n,l,h){return Ea(e+((t|~r)^i)+n+l|0,h)+a|0}function _w(e,t,r,i,a,n,l,h){return Ea(e+(t&i|r&~i)+n+l|0,h)+a|0}function Mw(e,t,r,i,a,n,l,h){return Ea(e+(t^(r|~i))+n+l|0,h)+a|0}var tm=Rc,qx={exports:{}},Wx=vt.Buffer;function Ac(e,t){this._block=Wx.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}Ac.prototype.update=function(e,t){typeof e=="string"&&(t=t||"utf8",e=Wx.from(e,t));for(var r=this._block,i=this._blockSize,a=e.length,n=this._len,l=0;l<a;){for(var h=n%i,d=Math.min(a-l,i-h),m=0;m<d;m++)r[h+m]=e[l+m];n+=d,l+=d,n%i===0&&this._update(r)}return this._len+=a,this};Ac.prototype.digest=function(e){var t=this._len%this._blockSize;this._block[t]=128,this._block.fill(0,t+1),t>=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=this._len*8;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(r&4294967295)>>>0,a=(r-i)/4294967296;this._block.writeUInt32BE(a,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var n=this._hash();return e?n.toString(e):n};Ac.prototype._update=function(){throw new Error("_update must be implemented by subclass")};var nf=Ac,tH=Ye,Kx=nf,rH=vt.Buffer,iH=[1518500249,1859775393,-1894007588,-899497514],nH=new Array(80);function Dl(){this.init(),this._w=nH,Kx.call(this,64,56)}tH(Dl,Kx);Dl.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function oH(e){return e<<5|e>>>27}function aH(e){return e<<30|e>>>2}function sH(e,t,r,i){return e===0?t&r|~t&i:e===2?t&r|t&i|r&i:t^r^i}Dl.prototype._update=function(e){for(var t=this._w,r=this._a|0,i=this._b|0,a=this._c|0,n=this._d|0,l=this._e|0,h=0;h<16;++h)t[h]=e.readInt32BE(h*4);for(;h<80;++h)t[h]=t[h-3]^t[h-8]^t[h-14]^t[h-16];for(var d=0;d<80;++d){var m=~~(d/20),_=oH(r)+sH(m,i,a,n)+l+t[d]+iH[m]|0;l=n,n=a,a=aH(i),i=r,r=_}this._a=r+this._a|0,this._b=i+this._b|0,this._c=a+this._c|0,this._d=n+this._d|0,this._e=l+this._e|0};Dl.prototype._hash=function(){var e=rH.allocUnsafe(20);return e.writeInt32BE(this._a|0,0),e.writeInt32BE(this._b|0,4),e.writeInt32BE(this._c|0,8),e.writeInt32BE(this._d|0,12),e.writeInt32BE(this._e|0,16),e};var fH=Dl,lH=Ye,Vx=nf,uH=vt.Buffer,hH=[1518500249,1859775393,-1894007588,-899497514],cH=new Array(80);function Fl(){this.init(),this._w=cH,Vx.call(this,64,56)}lH(Fl,Vx);Fl.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function dH(e){return e<<1|e>>>31}function pH(e){return e<<5|e>>>27}function vH(e){return e<<30|e>>>2}function gH(e,t,r,i){return e===0?t&r|~t&i:e===2?t&r|t&i|r&i:t^r^i}Fl.prototype._update=function(e){for(var t=this._w,r=this._a|0,i=this._b|0,a=this._c|0,n=this._d|0,l=this._e|0,h=0;h<16;++h)t[h]=e.readInt32BE(h*4);for(;h<80;++h)t[h]=dH(t[h-3]^t[h-8]^t[h-14]^t[h-16]);for(var d=0;d<80;++d){var m=~~(d/20),_=pH(r)+gH(m,i,a,n)+l+t[d]+hH[m]|0;l=n,n=a,a=vH(i),i=r,r=_}this._a=r+this._a|0,this._b=i+this._b|0,this._c=a+this._c|0,this._d=n+this._d|0,this._e=l+this._e|0};Fl.prototype._hash=function(){var e=uH.allocUnsafe(20);return e.writeInt32BE(this._a|0,0),e.writeInt32BE(this._b|0,4),e.writeInt32BE(this._c|0,8),e.writeInt32BE(this._d|0,12),e.writeInt32BE(this._e|0,16),e};var mH=Fl,yH=Ye,zx=nf,bH=vt.Buffer,wH=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],_H=new Array(64);function jl(){this.init(),this._w=_H,zx.call(this,64,56)}yH(jl,zx);jl.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function MH(e,t,r){return r^e&(t^r)}function SH(e,t,r){return e&t|r&(e|t)}function xH(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function EH(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function RH(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}function AH(e){return(e>>>17|e<<15)^(e>>>19|e<<13)^e>>>10}jl.prototype._update=function(e){for(var t=this._w,r=this._a|0,i=this._b|0,a=this._c|0,n=this._d|0,l=this._e|0,h=this._f|0,d=this._g|0,m=this._h|0,_=0;_<16;++_)t[_]=e.readInt32BE(_*4);for(;_<64;++_)t[_]=AH(t[_-2])+t[_-7]+RH(t[_-15])+t[_-16]|0;for(var S=0;S<64;++S){var R=m+EH(l)+MH(l,h,d)+wH[S]+t[S]|0,I=xH(r)+SH(r,i,a)|0;m=d,d=h,h=l,l=n+R|0,n=a,a=i,i=r,r=R+I|0}this._a=r+this._a|0,this._b=i+this._b|0,this._c=a+this._c|0,this._d=n+this._d|0,this._e=l+this._e|0,this._f=h+this._f|0,this._g=d+this._g|0,this._h=m+this._h|0};jl.prototype._hash=function(){var e=bH.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};var Gx=jl,TH=Ye,OH=Gx,IH=nf,PH=vt.Buffer,CH=new Array(64);function Tc(){this.init(),this._w=CH,IH.call(this,64,56)}TH(Tc,OH);Tc.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this};Tc.prototype._hash=function(){var e=PH.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};var BH=Tc,LH=Ye,Yx=nf,NH=vt.Buffer,Sw=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],kH=new Array(160);function Ul(){this.init(),this._w=kH,Yx.call(this,128,112)}LH(Ul,Yx);Ul.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function xw(e,t,r){return r^e&(t^r)}function Ew(e,t,r){return e&t|r&(e|t)}function Rw(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function Aw(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function $H(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function DH(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function FH(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function jH(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function ur(e,t){return e>>>0<t>>>0?1:0}Ul.prototype._update=function(e){for(var t=this._w,r=this._ah|0,i=this._bh|0,a=this._ch|0,n=this._dh|0,l=this._eh|0,h=this._fh|0,d=this._gh|0,m=this._hh|0,_=this._al|0,S=this._bl|0,R=this._cl|0,I=this._dl|0,O=this._el|0,L=this._fl|0,B=this._gl|0,P=this._hl|0,C=0;C<32;C+=2)t[C]=e.readInt32BE(C*4),t[C+1]=e.readInt32BE(C*4+4);for(;C<160;C+=2){var N=t[C-30],$=t[C-15*2+1],W=$H(N,$),G=DH($,N);N=t[C-2*2],$=t[C-2*2+1];var re=FH(N,$),J=jH($,N),K=t[C-7*2],se=t[C-7*2+1],M=t[C-16*2],o=t[C-16*2+1],f=G+se|0,u=W+K+ur(f,G)|0;f=f+J|0,u=u+re+ur(f,J)|0,f=f+o|0,u=u+M+ur(f,o)|0,t[C]=u,t[C+1]=f}for(var c=0;c<160;c+=2){u=t[c],f=t[c+1];var p=Ew(r,i,a),w=Ew(_,S,R),x=Rw(r,_),g=Rw(_,r),s=Aw(l,O),v=Aw(O,l),T=Sw[c],D=Sw[c+1],Y=xw(l,h,d),Q=xw(O,L,B),A=P+v|0,E=m+s+ur(A,P)|0;A=A+Q|0,E=E+Y+ur(A,Q)|0,A=A+D|0,E=E+T+ur(A,D)|0,A=A+f|0,E=E+u+ur(A,f)|0;var q=g+w|0,V=x+p+ur(q,g)|0;m=d,P=B,d=h,B=L,h=l,L=O,O=I+A|0,l=n+E+ur(O,I)|0,n=a,I=R,a=i,R=S,i=r,S=_,_=A+q|0,r=E+V+ur(_,A)|0}this._al=this._al+_|0,this._bl=this._bl+S|0,this._cl=this._cl+R|0,this._dl=this._dl+I|0,this._el=this._el+O|0,this._fl=this._fl+L|0,this._gl=this._gl+B|0,this._hl=this._hl+P|0,this._ah=this._ah+r+ur(this._al,_)|0,this._bh=this._bh+i+ur(this._bl,S)|0,this._ch=this._ch+a+ur(this._cl,R)|0,this._dh=this._dh+n+ur(this._dl,I)|0,this._eh=this._eh+l+ur(this._el,O)|0,this._fh=this._fh+h+ur(this._fl,L)|0,this._gh=this._gh+d+ur(this._gl,B)|0,this._hh=this._hh+m+ur(this._hl,P)|0};Ul.prototype._hash=function(){var e=NH.allocUnsafe(64);function t(r,i,a){e.writeInt32BE(r,a),e.writeInt32BE(i,a+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};var Zx=Ul,UH=Ye,HH=Zx,qH=nf,WH=vt.Buffer,KH=new Array(160);function Oc(){this.init(),this._w=KH,qH.call(this,128,112)}UH(Oc,HH);Oc.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this};Oc.prototype._hash=function(){var e=WH.allocUnsafe(48);function t(r,i,a){e.writeInt32BE(r,a),e.writeInt32BE(i,a+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};var VH=Oc,ja=qx.exports=function(t){t=t.toLowerCase();var r=ja[t];if(!r)throw new Error(t+" is not supported (we accept pull requests)");return new r};ja.sha=fH;ja.sha1=mH;ja.sha224=BH;ja.sha256=Gx;ja.sha384=VH;ja.sha512=Zx;var rm=qx.exports,_0,Tw;function Xx(){return Tw||(Tw=1,_0=kr.EventEmitter),_0}var M0,Ow;function zH(){if(Ow)return M0;Ow=1;function e(O,L){var B=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);L&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),B.push.apply(B,P)}return B}function t(O){for(var L=1;L<arguments.length;L++){var B=arguments[L]!=null?arguments[L]:{};L%2?e(Object(B),!0).forEach(function(P){r(O,P,B[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(B)):e(Object(B)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(B,P))})}return O}function r(O,L,B){return L=l(L),L in O?Object.defineProperty(O,L,{value:B,enumerable:!0,configurable:!0,writable:!0}):O[L]=B,O}function i(O,L){if(!(O instanceof L))throw new TypeError("Cannot call a class as a function")}function a(O,L){for(var B=0;B<L.length;B++){var P=L[B];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,L,B){return L&&a(O.prototype,L),B&&a(O,B),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var L=h(O,"string");return typeof L=="symbol"?L:String(L)}function h(O,L){if(typeof O!="object"||O===null)return O;var B=O[Symbol.toPrimitive];if(B!==void 0){var P=B.call(O,L||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(L==="string"?String:Number)(O)}var d=Le,m=d.Buffer,_=oi,S=_.inspect,R=S&&S.custom||"inspect";function I(O,L,B){m.prototype.copy.call(O,L,B)}return M0=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(B){var P={data:B,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(B){var P={data:B,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var B=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,B}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(B){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=B+P.data;return C}},{key:"concat",value:function(B){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(B>>>0),C=this.head,N=0;C;)I(C.data,P,N),N+=C.data.length,C=C.next;return P}},{key:"consume",value:function(B,P){var C;return B<this.head.data.length?(C=this.head.data.slice(0,B),this.head.data=this.head.data.slice(B)):B===this.head.data.length?C=this.shift():C=P?this._getString(B):this._getBuffer(B),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(B){var P=this.head,C=1,N=P.data;for(B-=N.length;P=P.next;){var $=P.data,W=B>$.length?$.length:B;if(W===$.length?N+=$:N+=$.slice(0,B),B-=W,B===0){W===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(W));break}++C}return this.length-=C,N}},{key:"_getBuffer",value:function(B){var P=m.allocUnsafe(B),C=this.head,N=1;for(C.data.copy(P),B-=C.data.length;C=C.next;){var $=C.data,W=B>$.length?$.length:B;if($.copy(P,P.length-B,0,W),B-=W,B===0){W===$.length?(++N,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(W));break}++N}return this.length-=N,P}},{key:R,value:function(B,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),M0}var S0,Iw;function Jx(){if(Iw)return S0;Iw=1;function e(l,h){var d=this,m=this._readableState&&this._readableState.destroyed,_=this._writableState&&this._writableState.destroyed;return m||_?(h?h(l):l&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,ye.nextTick(a,this,l)):ye.nextTick(a,this,l)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(l||null,function(S){!h&&S?d._writableState?d._writableState.errorEmitted?ye.nextTick(r,d):(d._writableState.errorEmitted=!0,ye.nextTick(t,d,S)):ye.nextTick(t,d,S):h?(ye.nextTick(r,d),h(S)):ye.nextTick(r,d)}),this)}function t(l,h){a(l,h),r(l)}function r(l){l._writableState&&!l._writableState.emitClose||l._readableState&&!l._readableState.emitClose||l.emit("close")}function i(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function a(l,h){l.emit("error",h)}function n(l,h){var d=l._readableState,m=l._writableState;d&&d.autoDestroy||m&&m.autoDestroy?l.destroy(h):l.emit("error",h)}return S0={destroy:e,undestroy:i,errorOrDestroy:n},S0}var x0={},Pw;function of(){if(Pw)return x0;Pw=1;function e(h,d){h.prototype=Object.create(d.prototype),h.prototype.constructor=h,h.__proto__=d}var t={};function r(h,d,m){m||(m=Error);function _(R,I,O){return typeof d=="string"?d:d(R,I,O)}var S=function(R){e(I,R);function I(O,L,B){return R.call(this,_(O,L,B))||this}return I}(m);S.prototype.name=m.name,S.prototype.code=h,t[h]=S}function i(h,d){if(Array.isArray(h)){var m=h.length;return h=h.map(function(_){return String(_)}),m>2?"one of ".concat(d," ").concat(h.slice(0,m-1).join(", "),", or ")+h[m-1]:m===2?"one of ".concat(d," ").concat(h[0]," or ").concat(h[1]):"of ".concat(d," ").concat(h[0])}else return"of ".concat(d," ").concat(String(h))}function a(h,d,m){return h.substr(!m||m<0?0:+m,d.length)===d}function n(h,d,m){return(m===void 0||m>h.length)&&(m=h.length),h.substring(m-d.length,m)===d}function l(h,d,m){return typeof m!="number"&&(m=0),m+d.length>h.length?!1:h.indexOf(d,m)!==-1}return r("ERR_INVALID_OPT_VALUE",function(h,d){return'The value "'+d+'" is invalid for option "'+h+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(h,d,m){var _;typeof d=="string"&&a(d,"not ")?(_="must not be",d=d.replace(/^not /,"")):_="must be";var S;if(n(h," argument"))S="The ".concat(h," ").concat(_," ").concat(i(d,"type"));else{var R=l(h,".")?"property":"argument";S='The "'.concat(h,'" ').concat(R," ").concat(_," ").concat(i(d,"type"))}return S+=". Received type ".concat(typeof m),S},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(h){return"The "+h+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(h){return"Cannot call "+h+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(h){return"Unknown encoding: "+h},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),x0.codes=t,x0}var E0,Cw;function Qx(){if(Cw)return E0;Cw=1;var e=of().codes.ERR_INVALID_OPT_VALUE;function t(i,a,n){return i.highWaterMark!=null?i.highWaterMark:a?i[n]:null}function r(i,a,n,l){var h=t(a,l,n);if(h!=null){if(!(isFinite(h)&&Math.floor(h)===h)||h<0){var d=l?n:"highWaterMark";throw new e(d,h)}return Math.floor(h)}return i.objectMode?16:16*1024}return E0={getHighWaterMark:r},E0}var R0,Bw;function e4(){if(Bw)return R0;Bw=1,R0=J;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){Q(E,A)}}var t;J.WritableState=G;var r={deprecate:ef},i=Xx(),a=Le.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function h(A){return a.isBuffer(A)||A instanceof n}var d=Jx(),m=Qx(),_=m.getHighWaterMark,S=of().codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,L=S.ERR_STREAM_CANNOT_PIPE,B=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,N=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(J,i);function W(){}function G(A,E,q){t=t||Ds(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=_(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var re;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(re=Function.prototype[Symbol.hasInstance],Object.defineProperty(J,Symbol.hasInstance,{value:function(E){return re.call(this,E)?!0:this!==J?!1:E&&E._writableState instanceof G}})):re=function(E){return E instanceof this};function J(A){t=t||Ds();var E=this instanceof t;if(!E&&!re.call(J,this))return new J(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}J.prototype.pipe=function(){$(this,new L)};function K(A,E){var q=new C;$(A,q),ye.nextTick(E,q)}function se(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),ye.nextTick(V,X),!1):!0}J.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&h(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=W),V.ending?K(this,q):(b||se(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},J.prototype.cork=function(){this._writableState.corked++},J.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},J.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new N(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(J.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function M(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(J.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=M(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var F=E.objectMode?1:V.length;E.length+=F;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,F,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new B("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(ye.nextTick(X,V),ye.nextTick(D,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),D(A,E))}function c(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(c(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?ye.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),D(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,F=!0;q;)X[y]=q,q.isBuf||(F=!1),q=q.next,y+=1;X.allBuffers=F,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,j=q.callback,k=E.objectMode?1:U.length;if(f(A,E,!1,k,U,Z,j),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}J.prototype._write=function(A,E,q){q(new I("_write()"))},J.prototype._writev=null,J.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(J.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),D(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,ye.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function D(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,D(A,E),q&&(E.finished?ye.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function Q(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(J.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),J.prototype.destroy=d.destroy,J.prototype._undestroy=d.undestroy,J.prototype._destroy=function(A,E){E(A)},R0}var A0,Lw;function Ds(){if(Lw)return A0;Lw=1;var e=Object.keys||function(m){var _=[];for(var S in m)_.push(S);return _};A0=l;var t=t4(),r=e4();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",h)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function h(){this._writableState.ended||ye.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(_){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=_,this._writableState.destroyed=_)}}),A0}var T0,Nw;function im(){if(Nw)return T0;Nw=1;var e=of().codes.ERR_STREAM_PREMATURE_CLOSE;function t(n){var l=!1;return function(){if(!l){l=!0;for(var h=arguments.length,d=new Array(h),m=0;m<h;m++)d[m]=arguments[m];n.apply(this,d)}}}function r(){}function i(n){return n.setHeader&&typeof n.abort=="function"}function a(n,l,h){if(typeof l=="function")return a(n,null,l);l||(l={}),h=t(h||r);var d=l.readable||l.readable!==!1&&n.readable,m=l.writable||l.writable!==!1&&n.writable,_=function(){n.writable||R()},S=n._writableState&&n._writableState.finished,R=function(){m=!1,S=!0,d||h.call(n)},I=n._readableState&&n._readableState.endEmitted,O=function(){d=!1,I=!0,m||h.call(n)},L=function(N){h.call(n,N)},B=function(){var N;if(d&&!I)return(!n._readableState||!n._readableState.ended)&&(N=new e),h.call(n,N);if(m&&!S)return(!n._writableState||!n._writableState.ended)&&(N=new e),h.call(n,N)},P=function(){n.req.on("finish",R)};return i(n)?(n.on("complete",R),n.on("abort",B),n.req?P():n.on("request",P)):m&&!n._writableState&&(n.on("end",_),n.on("close",_)),n.on("end",O),n.on("finish",R),l.error!==!1&&n.on("error",L),n.on("close",B),function(){n.removeListener("complete",R),n.removeListener("abort",B),n.removeListener("request",P),n.req&&n.req.removeListener("finish",R),n.removeListener("end",_),n.removeListener("close",_),n.removeListener("finish",R),n.removeListener("end",O),n.removeListener("error",L),n.removeListener("close",B)}}return T0=a,T0}var O0,kw;function GH(){if(kw)return O0;kw=1;var e;function t(N,$,W){return $=r($),$ in N?Object.defineProperty(N,$,{value:W,enumerable:!0,configurable:!0,writable:!0}):N[$]=W,N}function r(N){var $=i(N,"string");return typeof $=="symbol"?$:String($)}function i(N,$){if(typeof N!="object"||N===null)return N;var W=N[Symbol.toPrimitive];if(W!==void 0){var G=W.call(N,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(N)}var a=im(),n=Symbol("lastResolve"),l=Symbol("lastReject"),h=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),_=Symbol("handlePromise"),S=Symbol("stream");function R(N,$){return{value:N,done:$}}function I(N){var $=N[n];if($!==null){var W=N[S].read();W!==null&&(N[m]=null,N[n]=null,N[l]=null,$(R(W,!1)))}}function O(N){ye.nextTick(I,N)}function L(N,$){return function(W,G){N.then(function(){if($[d]){W(R(void 0,!0));return}$[_](W,G)},G)}}var B=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,W=this[h];if(W!==null)return Promise.reject(W);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(K,se){ye.nextTick(function(){$[h]?se($[h]):K(R(void 0,!0))})});var G=this[m],re;if(G)re=new Promise(L(G,this));else{var J=this[S].read();if(J!==null)return Promise.resolve(R(J,!1));re=new Promise(this[_])}return this[m]=re,re}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(W,G){$[S].destroy(null,function(re){if(re){G(re);return}W(R(void 0,!0))})})}),e),B),C=function($){var W,G=Object.create(P,(W={},t(W,S,{value:$,writable:!0}),t(W,n,{value:null,writable:!0}),t(W,l,{value:null,writable:!0}),t(W,h,{value:null,writable:!0}),t(W,d,{value:$._readableState.endEmitted,writable:!0}),t(W,_,{value:function(J,K){var se=G[S].read();se?(G[m]=null,G[n]=null,G[l]=null,J(R(se,!1))):(G[n]=J,G[l]=K)},writable:!0}),W));return G[m]=null,a($,function(re){if(re&&re.code!=="ERR_STREAM_PREMATURE_CLOSE"){var J=G[l];J!==null&&(G[m]=null,G[n]=null,G[l]=null,J(re)),G[h]=re;return}var K=G[n];K!==null&&(G[m]=null,G[n]=null,G[l]=null,K(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return O0=C,O0}var I0,$w;function YH(){return $w||($w=1,I0=function(){throw new Error("Readable.from is not available in the browser")}),I0}var P0,Dw;function t4(){if(Dw)return P0;Dw=1,P0=K;var e;K.ReadableState=J,kr.EventEmitter;var t=function(y,F){return y.listeners(F).length},r=Xx(),i=Le.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var h=oi,d;h&&h.debuglog?d=h.debuglog("stream"):d=function(){};var m=zH(),_=Jx(),S=Qx(),R=S.getHighWaterMark,I=of().codes,O=I.ERR_INVALID_ARG_TYPE,L=I.ERR_STREAM_PUSH_AFTER_EOF,B=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,N,$;Ye(K,r);var W=_.errorOrDestroy,G=["error","close","destroy","pause","resume"];function re(b,y,F){if(typeof b.prependListener=="function")return b.prependListener(y,F);!b._events||!b._events[y]?b.on(y,F):Array.isArray(b._events[y])?b._events[y].unshift(F):b._events[y]=[F,b._events[y]]}function J(b,y,F){e=e||Ds(),b=b||{},typeof F!="boolean"&&(F=y instanceof e),this.objectMode=!!b.objectMode,F&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",F),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=ti().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function K(b){if(e=e||Ds(),!(this instanceof K))return new K(b);var y=this instanceof e;this._readableState=new J(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(K.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),K.prototype.destroy=_.destroy,K.prototype._undestroy=_.undestroy,K.prototype._destroy=function(b,y){y(b)},K.prototype.push=function(b,y){var F=this._readableState,U;return F.objectMode?U=!0:typeof b=="string"&&(y=y||F.defaultEncoding,y!==F.encoding&&(b=i.from(b,y),y=""),U=!0),se(this,b,y,!1,U)},K.prototype.unshift=function(b){return se(this,b,null,!0,!1)};function se(b,y,F,U,Z){d("readableAddChunk",y);var j=b._readableState;if(y===null)j.reading=!1,p(b,j);else{var k;if(Z||(k=o(j,y)),k)W(b,k);else if(j.objectMode||y&&y.length>0)if(typeof y!="string"&&!j.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)j.endEmitted?W(b,new P):M(b,j,y,!0);else if(j.ended)W(b,new L);else{if(j.destroyed)return!1;j.reading=!1,j.decoder&&!F?(y=j.decoder.write(y),j.objectMode||y.length!==0?M(b,j,y,!1):g(b,j)):M(b,j,y,!1)}else U||(j.reading=!1,g(b,j))}return!j.ended&&(j.length<j.highWaterMark||j.length===0)}function M(b,y,F,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",F)):(y.length+=y.objectMode?1:F.length,U?y.buffer.unshift(F):y.buffer.push(F),y.needReadable&&w(b)),g(b,y)}function o(b,y){var F;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(F=new O("chunk",["string","Buffer","Uint8Array"],y)),F}K.prototype.isPaused=function(){return this._readableState.flowing===!1},K.prototype.setEncoding=function(b){C||(C=ti().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var F=this._readableState.buffer.head,U="";F!==null;)U+=y.write(F.data),F=F.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function c(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}K.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,F=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=c(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=c(F,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),F!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var F=y.decoder.end();F&&F.length&&(y.buffer.push(F),y.length+=y.objectMode?1:F.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,ye.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,ye.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var F=y.length;if(d("maybeReadMore read 0"),b.read(0),F===y.length)break}y.readingMore=!1}K.prototype._read=function(b){W(this,new B("_read()"))},K.prototype.pipe=function(b,y){var F=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==ye.stdout&&b!==ye.stderr,j=Z?H:xe;U.endEmitted?ye.nextTick(j):F.once("end",j),b.on("unpipe",k);function k(le,ve){d("onunpipe"),le===F&&ve&&ve.hasUnpiped===!1&&(ve.hasUnpiped=!0,ee())}function H(){d("onend"),b.end()}var z=v(F);b.on("drain",z);var oe=!1;function ee(){d("cleanup"),b.removeListener("close",he),b.removeListener("finish",ue),b.removeListener("drain",z),b.removeListener("error",me),b.removeListener("unpipe",k),F.removeListener("end",H),F.removeListener("end",xe),F.removeListener("data",ne),oe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}F.on("data",ne);function ne(le){d("ondata");var ve=b.write(le);d("dest.write",ve),ve===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!oe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),F.pause())}function me(le){d("onerror",le),xe(),b.removeListener("error",me),t(b,"error")===0&&W(b,le)}re(b,"error",me);function he(){b.removeListener("finish",ue),xe()}b.once("close",he);function ue(){d("onfinish"),b.removeListener("close",he),xe()}b.once("finish",ue);function xe(){d("unpipe"),F.unpipe(b)}return b.emit("pipe",F),U.flowing||(d("pipe resume"),F.resume()),b};function v(b){return function(){var F=b._readableState;d("pipeOnDrain",F.awaitDrain),F.awaitDrain&&F.awaitDrain--,F.awaitDrain===0&&t(b,"data")&&(F.flowing=!0,A(b))}}K.prototype.unpipe=function(b){var y=this._readableState,F={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,F),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var j=0;j<Z;j++)U[j].emit("unpipe",this,{hasUnpiped:!1});return this}var k=X(y.pipes,b);return k===-1?this:(y.pipes.splice(k,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,F),this)},K.prototype.on=function(b,y){var F=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||ye.nextTick(D,this)),F},K.prototype.addListener=K.prototype.on,K.prototype.removeListener=function(b,y){var F=r.prototype.removeListener.call(this,b,y);return b==="readable"&&ye.nextTick(T,this),F},K.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&ye.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function D(b){d("readable nexttick read 0"),b.read(0)}K.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,ye.nextTick(Q,b,y))}function Q(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}K.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}K.prototype.wrap=function(b){var y=this,F=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),F.decoder&&!F.ended){var k=F.decoder.end();k&&k.length&&y.push(k)}y.push(null)}),b.on("data",function(k){if(d("wrapped data"),F.decoder&&(k=F.decoder.write(k)),!(F.objectMode&&k==null)&&!(!F.objectMode&&(!k||!k.length))){var H=y.push(k);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var j=0;j<G.length;j++)b.on(G[j],this.emit.bind(this,G[j]));return this._read=function(k){d("wrapped _read",k),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(K.prototype[Symbol.asyncIterator]=function(){return N===void 0&&(N=GH()),N(this)}),Object.defineProperty(K.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(K.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(K.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),K._fromList=E,Object.defineProperty(K.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var F;return y.objectMode?F=y.buffer.shift():!b||b>=y.length?(y.decoder?F=y.buffer.join(""):y.buffer.length===1?F=y.buffer.first():F=y.buffer.concat(y.length),y.buffer.clear()):F=y.buffer.consume(b,y.decoder),F}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,ye.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var F=y._writableState;(!F||F.autoDestroy&&F.finished)&&y.destroy()}}typeof Symbol=="function"&&(K.from=function(b,y){return $===void 0&&($=YH()),$(K,b,y)});function X(b,y){for(var F=0,U=b.length;F<U;F++)if(b[F]===y)return F;return-1}return P0}var C0,Fw;function r4(){if(Fw)return C0;Fw=1,C0=h;var e=of().codes,t=e.ERR_METHOD_NOT_IMPLEMENTED,r=e.ERR_MULTIPLE_CALLBACK,i=e.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=e.ERR_TRANSFORM_WITH_LENGTH_0,n=Ds();Ye(h,n);function l(_,S){var R=this._transformState;R.transforming=!1;var I=R.writecb;if(I===null)return this.emit("error",new r);R.writechunk=null,R.writecb=null,S!=null&&this.push(S),I(_);var O=this._readableState;O.reading=!1,(O.needReadable||O.length<O.highWaterMark)&&this._read(O.highWaterMark)}function h(_){if(!(this instanceof h))return new h(_);n.call(this,_),this._transformState={afterTransform:l.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,_&&(typeof _.transform=="function"&&(this._transform=_.transform),typeof _.flush=="function"&&(this._flush=_.flush)),this.on("prefinish",d)}function d(){var _=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(S,R){m(_,S,R)}):m(this,null,null)}h.prototype.push=function(_,S){return this._transformState.needTransform=!1,n.prototype.push.call(this,_,S)},h.prototype._transform=function(_,S,R){R(new t("_transform()"))},h.prototype._write=function(_,S,R){var I=this._transformState;if(I.writecb=R,I.writechunk=_,I.writeencoding=S,!I.transforming){var O=this._readableState;(I.needTransform||O.needReadable||O.length<O.highWaterMark)&&this._read(O.highWaterMark)}},h.prototype._read=function(_){var S=this._transformState;S.writechunk!==null&&!S.transforming?(S.transforming=!0,this._transform(S.writechunk,S.writeencoding,S.afterTransform)):S.needTransform=!0},h.prototype._destroy=function(_,S){n.prototype._destroy.call(this,_,function(R){S(R)})};function m(_,S,R){if(S)return _.emit("error",S);if(R!=null&&_.push(R),_._writableState.length)throw new a;if(_._transformState.transforming)throw new i;return _.push(null)}return C0}var B0,jw;function ZH(){if(jw)return B0;jw=1,B0=t;var e=r4();Ye(t,e);function t(r){if(!(this instanceof t))return new t(r);e.call(this,r)}return t.prototype._transform=function(r,i,a){a(null,r)},B0}var L0,Uw;function XH(){if(Uw)return L0;Uw=1;var e;function t(R){var I=!1;return function(){I||(I=!0,R.apply(void 0,arguments))}}var r=of().codes,i=r.ERR_MISSING_ARGS,a=r.ERR_STREAM_DESTROYED;function n(R){if(R)throw R}function l(R){return R.setHeader&&typeof R.abort=="function"}function h(R,I,O,L){L=t(L);var B=!1;R.on("close",function(){B=!0}),e===void 0&&(e=im()),e(R,{readable:I,writable:O},function(C){if(C)return L(C);B=!0,L()});var P=!1;return function(C){if(!B&&!P){if(P=!0,l(R))return R.abort();if(typeof R.destroy=="function")return R.destroy();L(C||new a("pipe"))}}}function d(R){R()}function m(R,I){return R.pipe(I)}function _(R){return!R.length||typeof R[R.length-1]!="function"?n:R.pop()}function S(){for(var R=arguments.length,I=new Array(R),O=0;O<R;O++)I[O]=arguments[O];var L=_(I);if(Array.isArray(I[0])&&(I=I[0]),I.length<2)throw new i("streams");var B,P=I.map(function(C,N){var $=N<I.length-1,W=N>0;return h(C,$,W,function(G){B||(B=G),G&&P.forEach(d),!$&&(P.forEach(d),L(B))})});return I.reduce(m)}return L0=S,L0}var JH=xi,nm=kr.EventEmitter,QH=Ye;QH(xi,nm);xi.Readable=t4();xi.Writable=e4();xi.Duplex=Ds();xi.Transform=r4();xi.PassThrough=ZH();xi.finished=im();xi.pipeline=XH();xi.Stream=xi;function xi(){nm.call(this)}xi.prototype.pipe=function(e,t){var r=this;function i(_){e.writable&&e.write(_)===!1&&r.pause&&r.pause()}r.on("data",i);function a(){r.readable&&r.resume&&r.resume()}e.on("drain",a),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",l),r.on("close",h));var n=!1;function l(){n||(n=!0,e.end())}function h(){n||(n=!0,typeof e.destroy=="function"&&e.destroy())}function d(_){if(m(),nm.listenerCount(this,"error")===0)throw _}r.on("error",d),e.on("error",d);function m(){r.removeListener("data",i),e.removeListener("drain",a),r.removeListener("end",l),r.removeListener("close",h),r.removeListener("error",d),e.removeListener("error",d),r.removeListener("end",m),r.removeListener("close",m),e.removeListener("close",m)}return r.on("end",m),r.on("close",m),e.on("close",m),e.emit("pipe",r),e};var i4=vt.Buffer,n4=JH.Transform,eq=ti().StringDecoder,tq=Ye;function Ji(e){n4.call(this),this.hashMode=typeof e=="string",this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}tq(Ji,n4);Ji.prototype.update=function(e,t,r){typeof e=="string"&&(e=i4.from(e,t));var i=this._update(e);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)};Ji.prototype.setAutoPadding=function(){};Ji.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")};Ji.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")};Ji.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")};Ji.prototype._transform=function(e,t,r){var i;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(a){i=a}finally{r(i)}};Ji.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(r){t=r}e(t)};Ji.prototype._finalOrDigest=function(e){var t=this.__final()||i4.alloc(0);return e&&(t=this._toString(t,e,!0)),t};Ji.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new eq(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var i=this._decoder.write(e);return r&&(i+=this._decoder.end()),i};var Yo=Ji,rq=Ye,iq=em,nq=tm,oq=rm,o4=Yo;function Ic(e){o4.call(this,"digest"),this._hash=e}rq(Ic,o4);Ic.prototype._update=function(e){this._hash.update(e)};Ic.prototype._final=function(){return this._hash.digest()};var Hl=function(t){return t=t.toLowerCase(),t==="md5"?new iq:t==="rmd160"||t==="ripemd160"?new nq:new Ic(oq(t))},aq=Ye,la=vt.Buffer,a4=Yo,sq=la.alloc(128),Ja=64;function Pc(e,t){a4.call(this,"digest"),typeof t=="string"&&(t=la.from(t)),this._alg=e,this._key=t,t.length>Ja?t=e(t):t.length<Ja&&(t=la.concat([t,sq],Ja));for(var r=this._ipad=la.allocUnsafe(Ja),i=this._opad=la.allocUnsafe(Ja),a=0;a<Ja;a++)r[a]=t[a]^54,i[a]=t[a]^92;this._hash=[r]}aq(Pc,a4);Pc.prototype._update=function(e){this._hash.push(e)};Pc.prototype._final=function(){var e=this._alg(la.concat(this._hash));return this._alg(la.concat([this._opad,e]))};var fq=Pc,lq=em,s4=function(e){return new lq().update(e).digest()},uq=Ye,hq=fq,f4=Yo,Hf=vt.Buffer,cq=s4,Sv=tm,xv=rm,dq=Hf.alloc(128);function gl(e,t){f4.call(this,"digest"),typeof t=="string"&&(t=Hf.from(t));var r=e==="sha512"||e==="sha384"?128:64;if(this._alg=e,this._key=t,t.length>r){var i=e==="rmd160"?new Sv:xv(e);t=i.update(t).digest()}else t.length<r&&(t=Hf.concat([t,dq],r));for(var a=this._ipad=Hf.allocUnsafe(r),n=this._opad=Hf.allocUnsafe(r),l=0;l<r;l++)a[l]=t[l]^54,n[l]=t[l]^92;this._hash=e==="rmd160"?new Sv:xv(e),this._hash.update(a)}uq(gl,f4);gl.prototype._update=function(e){this._hash.update(e)};gl.prototype._final=function(){var e=this._hash.digest(),t=this._alg==="rmd160"?new Sv:xv(this._alg);return t.update(this._opad).update(e).digest()};var l4=function(t,r){return t=t.toLowerCase(),t==="rmd160"||t==="ripemd160"?new gl("rmd160",r):t==="md5"?new hq(cq,r):new gl(t,r)};const pq={sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},vq={sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},gq={sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},mq={sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},yq={sign:"ecdsa",hash:"sha256",id:""},bq={sign:"ecdsa",hash:"sha224",id:""},wq={sign:"ecdsa",hash:"sha384",id:""},_q={sign:"ecdsa",hash:"sha512",id:""},Mq={sign:"dsa",hash:"sha1",id:""},Sq={sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},xq={sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},u4={sha224WithRSAEncryption:pq,"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:vq,"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:gq,"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:mq,"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:yq,sha224:bq,sha384:wq,sha512:_q,"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:Mq,"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:Sq,"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:xq,"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}};var Eq=u4,Cc={},Rq=Math.pow(2,30)-1,h4=function(e,t){if(typeof e!="number")throw new TypeError("Iterations not a number");if(e<0)throw new TypeError("Bad iterations");if(typeof t!="number")throw new TypeError("Key length not a number");if(t<0||t>Rq||t!==t)throw new TypeError("Bad key length")},ku;if(Ze.process&&Ze.process.browser)ku="utf-8";else if(Ze.process&&Ze.process.version){var Aq=parseInt(ye.version.split(".")[0].slice(1),10);ku=Aq>=6?"utf-8":"binary"}else ku="utf-8";var c4=ku,N0=vt.Buffer,d4=function(e,t,r){if(N0.isBuffer(e))return e;if(typeof e=="string")return N0.from(e,t);if(ArrayBuffer.isView(e))return N0.from(e.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")},Tq=s4,Oq=tm,Iq=rm,ua=vt.Buffer,Pq=h4,Hw=c4,qw=d4,Cq=ua.alloc(128),$u={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function p4(e,t,r){var i=Bq(e),a=e==="sha512"||e==="sha384"?128:64;t.length>a?t=i(t):t.length<a&&(t=ua.concat([t,Cq],a));for(var n=ua.allocUnsafe(a+$u[e]),l=ua.allocUnsafe(a+$u[e]),h=0;h<a;h++)n[h]=t[h]^54,l[h]=t[h]^92;var d=ua.allocUnsafe(a+r+4);n.copy(d,0,0,a),this.ipad1=d,this.ipad2=n,this.opad=l,this.alg=e,this.blocksize=a,this.hash=i,this.size=$u[e]}p4.prototype.run=function(e,t){e.copy(t,this.blocksize);var r=this.hash(t);return r.copy(this.opad,this.blocksize),this.hash(this.opad)};function Bq(e){function t(i){return Iq(e).update(i).digest()}function r(i){return new Oq().update(i).digest()}return e==="rmd160"||e==="ripemd160"?r:e==="md5"?Tq:t}function Lq(e,t,r,i,a){Pq(r,i),e=qw(e,Hw,"Password"),t=qw(t,Hw,"Salt"),a=a||"sha1";var n=new p4(a,e,t.length),l=ua.allocUnsafe(i),h=ua.allocUnsafe(t.length+4);t.copy(h,0,0,t.length);for(var d=0,m=$u[a],_=Math.ceil(i/m),S=1;S<=_;S++){h.writeUInt32BE(S,t.length);for(var R=n.run(h,n.ipad1),I=R,O=1;O<r;O++){I=n.run(I,n.ipad2);for(var L=0;L<m;L++)R[L]^=I[L]}R.copy(l,d),d+=m}return l}var v4=Lq,g4=vt.Buffer,Nq=h4,Ww=c4,Kw=v4,Vw=d4,du,el=Ze.crypto&&Ze.crypto.subtle,kq={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},k0=[];function $q(e){if(Ze.process&&!Ze.process.browser||!el||!el.importKey||!el.deriveBits)return Promise.resolve(!1);if(k0[e]!==void 0)return k0[e];du=du||g4.alloc(8);var t=m4(du,du,10,128,e).then(function(){return!0}).catch(function(){return!1});return k0[e]=t,t}var ea;function Ev(){return ea||(Ze.process&&Ze.process.nextTick?ea=Ze.process.nextTick:Ze.queueMicrotask?ea=Ze.queueMicrotask:Ze.setImmediate?ea=Ze.setImmediate:ea=Ze.setTimeout,ea)}function m4(e,t,r,i,a){return el.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]).then(function(n){return el.deriveBits({name:"PBKDF2",salt:t,iterations:r,hash:{name:a}},n,i<<3)}).then(function(n){return g4.from(n)})}function Dq(e,t){e.then(function(r){Ev()(function(){t(null,r)})},function(r){Ev()(function(){t(r)})})}var Fq=function(e,t,r,i,a,n){typeof a=="function"&&(n=a,a=void 0),a=a||"sha1";var l=kq[a.toLowerCase()];if(!l||typeof Ze.Promise!="function"){Ev()(function(){var h;try{h=Kw(e,t,r,i,a)}catch(d){return n(d)}n(null,h)});return}if(Nq(r,i),e=Vw(e,Ww,"Password"),t=Vw(t,Ww,"Salt"),typeof n!="function")throw new Error("No callback provided to pbkdf2");Dq($q(l).then(function(h){return h?m4(e,t,r,i,l):Kw(e,t,r,i,a)}),n)};Cc.pbkdf2=Fq;Cc.pbkdf2Sync=v4;var Yi={},af={},ai={};ai.readUInt32BE=function(t,r){var i=t[0+r]<<24|t[1+r]<<16|t[2+r]<<8|t[3+r];return i>>>0};ai.writeUInt32BE=function(t,r,i){t[0+i]=r>>>24,t[1+i]=r>>>16&255,t[2+i]=r>>>8&255,t[3+i]=r&255};ai.ip=function(t,r,i,a){for(var n=0,l=0,h=6;h>=0;h-=2){for(var d=0;d<=24;d+=8)n<<=1,n|=r>>>d+h&1;for(var d=0;d<=24;d+=8)n<<=1,n|=t>>>d+h&1}for(var h=6;h>=0;h-=2){for(var d=1;d<=25;d+=8)l<<=1,l|=r>>>d+h&1;for(var d=1;d<=25;d+=8)l<<=1,l|=t>>>d+h&1}i[a+0]=n>>>0,i[a+1]=l>>>0};ai.rip=function(t,r,i,a){for(var n=0,l=0,h=0;h<4;h++)for(var d=24;d>=0;d-=8)n<<=1,n|=r>>>d+h&1,n<<=1,n|=t>>>d+h&1;for(var h=4;h<8;h++)for(var d=24;d>=0;d-=8)l<<=1,l|=r>>>d+h&1,l<<=1,l|=t>>>d+h&1;i[a+0]=n>>>0,i[a+1]=l>>>0};ai.pc1=function(t,r,i,a){for(var n=0,l=0,h=7;h>=5;h--){for(var d=0;d<=24;d+=8)n<<=1,n|=r>>d+h&1;for(var d=0;d<=24;d+=8)n<<=1,n|=t>>d+h&1}for(var d=0;d<=24;d+=8)n<<=1,n|=r>>d+h&1;for(var h=1;h<=3;h++){for(var d=0;d<=24;d+=8)l<<=1,l|=r>>d+h&1;for(var d=0;d<=24;d+=8)l<<=1,l|=t>>d+h&1}for(var d=0;d<=24;d+=8)l<<=1,l|=t>>d+h&1;i[a+0]=n>>>0,i[a+1]=l>>>0};ai.r28shl=function(t,r){return t<<r&268435455|t>>>28-r};var pu=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];ai.pc2=function(t,r,i,a){for(var n=0,l=0,h=pu.length>>>1,d=0;d<h;d++)n<<=1,n|=t>>>pu[d]&1;for(var d=h;d<pu.length;d++)l<<=1,l|=r>>>pu[d]&1;i[a+0]=n>>>0,i[a+1]=l>>>0};ai.expand=function(t,r,i){var a=0,n=0;a=(t&1)<<5|t>>>27;for(var l=23;l>=15;l-=4)a<<=6,a|=t>>>l&63;for(var l=11;l>=3;l-=4)n|=t>>>l&63,n<<=6;n|=(t&31)<<1|t>>>31,r[i+0]=a>>>0,r[i+1]=n>>>0};var zw=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];ai.substitute=function(t,r){for(var i=0,a=0;a<4;a++){var n=t>>>18-a*6&63,l=zw[a*64+n];i<<=4,i|=l}for(var a=0;a<4;a++){var n=r>>>18-a*6&63,l=zw[4*64+a*64+n];i<<=4,i|=l}return i>>>0};var Gw=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];ai.permute=function(t){for(var r=0,i=0;i<Gw.length;i++)r<<=1,r|=t>>>Gw[i]&1;return r>>>0};ai.padSplit=function(t,r,i){for(var a=t.toString(2);a.length<r;)a="0"+a;for(var n=[],l=0;l<r;l+=i)n.push(a.slice(l,l+i));return n.join(" ")};var Ci=y4;function y4(e,t){if(!e)throw new Error(t||"Assertion failed")}y4.equal=function(t,r,i){if(t!=r)throw new Error(i||"Assertion failed: "+t+" != "+r)};var jq=Ci;function Bi(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0,this.padding=e.padding!==!1}var om=Bi;Bi.prototype._init=function(){};Bi.prototype.update=function(t){return t.length===0?[]:this.type==="decrypt"?this._updateDecrypt(t):this._updateEncrypt(t)};Bi.prototype._buffer=function(t,r){for(var i=Math.min(this.buffer.length-this.bufferOff,t.length-r),a=0;a<i;a++)this.buffer[this.bufferOff+a]=t[r+a];return this.bufferOff+=i,i};Bi.prototype._flushBuffer=function(t,r){return this._update(this.buffer,0,t,r),this.bufferOff=0,this.blockSize};Bi.prototype._updateEncrypt=function(t){var r=0,i=0,a=(this.bufferOff+t.length)/this.blockSize|0,n=new Array(a*this.blockSize);this.bufferOff!==0&&(r+=this._buffer(t,r),this.bufferOff===this.buffer.length&&(i+=this._flushBuffer(n,i)));for(var l=t.length-(t.length-r)%this.blockSize;r<l;r+=this.blockSize)this._update(t,r,n,i),i+=this.blockSize;for(;r<t.length;r++,this.bufferOff++)this.buffer[this.bufferOff]=t[r];return n};Bi.prototype._updateDecrypt=function(t){for(var r=0,i=0,a=Math.ceil((this.bufferOff+t.length)/this.blockSize)-1,n=new Array(a*this.blockSize);a>0;a--)r+=this._buffer(t,r),i+=this._flushBuffer(n,i);return r+=this._buffer(t,r),n};Bi.prototype.final=function(t){var r;t&&(r=this.update(t));var i;return this.type==="encrypt"?i=this._finalEncrypt():i=this._finalDecrypt(),r?r.concat(i):i};Bi.prototype._pad=function(t,r){if(r===0)return!1;for(;r<t.length;)t[r++]=0;return!0};Bi.prototype._finalEncrypt=function(){if(!this._pad(this.buffer,this.bufferOff))return[];var t=new Array(this.blockSize);return this._update(this.buffer,0,t,0),t};Bi.prototype._unpad=function(t){return t};Bi.prototype._finalDecrypt=function(){jq.equal(this.bufferOff,this.blockSize,"Not enough data to decrypt");var t=new Array(this.blockSize);return this._flushBuffer(t,0),this._unpad(t)};var b4=Ci,Uq=Ye,sr=ai,w4=om;function Hq(){this.tmp=new Array(2),this.keys=null}function xn(e){w4.call(this,e);var t=new Hq;this._desState=t,this.deriveKeys(t,e.key)}Uq(xn,w4);var _4=xn;xn.create=function(t){return new xn(t)};var qq=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];xn.prototype.deriveKeys=function(t,r){t.keys=new Array(16*2),b4.equal(r.length,this.blockSize,"Invalid key length");var i=sr.readUInt32BE(r,0),a=sr.readUInt32BE(r,4);sr.pc1(i,a,t.tmp,0),i=t.tmp[0],a=t.tmp[1];for(var n=0;n<t.keys.length;n+=2){var l=qq[n>>>1];i=sr.r28shl(i,l),a=sr.r28shl(a,l),sr.pc2(i,a,t.keys,n)}};xn.prototype._update=function(t,r,i,a){var n=this._desState,l=sr.readUInt32BE(t,r),h=sr.readUInt32BE(t,r+4);sr.ip(l,h,n.tmp,0),l=n.tmp[0],h=n.tmp[1],this.type==="encrypt"?this._encrypt(n,l,h,n.tmp,0):this._decrypt(n,l,h,n.tmp,0),l=n.tmp[0],h=n.tmp[1],sr.writeUInt32BE(i,l,a),sr.writeUInt32BE(i,h,a+4)};xn.prototype._pad=function(t,r){if(this.padding===!1)return!1;for(var i=t.length-r,a=r;a<t.length;a++)t[a]=i;return!0};xn.prototype._unpad=function(t){if(this.padding===!1)return t;for(var r=t[t.length-1],i=t.length-r;i<t.length;i++)b4.equal(t[i],r);return t.slice(0,t.length-r)};xn.prototype._encrypt=function(t,r,i,a,n){for(var l=r,h=i,d=0;d<t.keys.length;d+=2){var m=t.keys[d],_=t.keys[d+1];sr.expand(h,t.tmp,0),m^=t.tmp[0],_^=t.tmp[1];var S=sr.substitute(m,_),R=sr.permute(S),I=h;h=(l^R)>>>0,l=I}sr.rip(h,l,a,n)};xn.prototype._decrypt=function(t,r,i,a,n){for(var l=i,h=r,d=t.keys.length-2;d>=0;d-=2){var m=t.keys[d],_=t.keys[d+1];sr.expand(l,t.tmp,0),m^=t.tmp[0],_^=t.tmp[1];var S=sr.substitute(m,_),R=sr.permute(S),I=l;l=(h^R)>>>0,h=I}sr.rip(l,h,a,n)};var M4={},Wq=Ci,Kq=Ye,Ah={};function Vq(e){Wq.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var t=0;t<this.iv.length;t++)this.iv[t]=e[t]}function zq(e){function t(n){e.call(this,n),this._cbcInit()}Kq(t,e);for(var r=Object.keys(Ah),i=0;i<r.length;i++){var a=r[i];t.prototype[a]=Ah[a]}return t.create=function(l){return new t(l)},t}M4.instantiate=zq;Ah._cbcInit=function(){var t=new Vq(this.options.iv);this._cbcState=t};Ah._update=function(t,r,i,a){var n=this._cbcState,l=this.constructor.super_.prototype,h=n.iv;if(this.type==="encrypt"){for(var d=0;d<this.blockSize;d++)h[d]^=t[r+d];l._update.call(this,h,0,i,a);for(var d=0;d<this.blockSize;d++)h[d]=i[a+d]}else{l._update.call(this,t,r,i,a);for(var d=0;d<this.blockSize;d++)i[a+d]^=h[d];for(var d=0;d<this.blockSize;d++)h[d]=t[r+d]}};var Gq=Ci,Yq=Ye,S4=om,Ro=_4;function Zq(e,t){Gq.equal(t.length,24,"Invalid key length");var r=t.slice(0,8),i=t.slice(8,16),a=t.slice(16,24);e==="encrypt"?this.ciphers=[Ro.create({type:"encrypt",key:r}),Ro.create({type:"decrypt",key:i}),Ro.create({type:"encrypt",key:a})]:this.ciphers=[Ro.create({type:"decrypt",key:a}),Ro.create({type:"encrypt",key:i}),Ro.create({type:"decrypt",key:r})]}function Ra(e){S4.call(this,e);var t=new Zq(this.type,this.options.key);this._edeState=t}Yq(Ra,S4);var Xq=Ra;Ra.create=function(t){return new Ra(t)};Ra.prototype._update=function(t,r,i,a){var n=this._edeState;n.ciphers[0]._update(t,r,i,a),n.ciphers[1]._update(i,a,i,a),n.ciphers[2]._update(i,a,i,a)};Ra.prototype._pad=Ro.prototype._pad;Ra.prototype._unpad=Ro.prototype._unpad;af.utils=ai;af.Cipher=om;af.DES=_4;af.CBC=M4;af.EDE=Xq;var x4=Yo,Nn=af,Jq=Ye,aa=vt.Buffer,ml={"des-ede3-cbc":Nn.CBC.instantiate(Nn.EDE),"des-ede3":Nn.EDE,"des-ede-cbc":Nn.CBC.instantiate(Nn.EDE),"des-ede":Nn.EDE,"des-cbc":Nn.CBC.instantiate(Nn.DES),"des-ecb":Nn.DES};ml.des=ml["des-cbc"];ml.des3=ml["des-ede3-cbc"];var Qq=Bc;Jq(Bc,x4);function Bc(e){x4.call(this);var t=e.mode.toLowerCase(),r=ml[t],i;e.decrypt?i="decrypt":i="encrypt";var a=e.key;aa.isBuffer(a)||(a=aa.from(a)),(t==="des-ede"||t==="des-ede-cbc")&&(a=aa.concat([a,a.slice(0,8)]));var n=e.iv;aa.isBuffer(n)||(n=aa.from(n)),this._des=r.create({key:a,iv:n,type:i})}Bc.prototype._update=function(e){return aa.from(this._des.update(e))};Bc.prototype._final=function(){return aa.from(this._des.final())};var ii={},am={},sm={};sm.encrypt=function(e,t){return e._cipher.encryptBlock(t)};sm.decrypt=function(e,t){return e._cipher.decryptBlock(t)};var fm={},ql=function(t,r){for(var i=Math.min(t.length,r.length),a=new Le.Buffer(i),n=0;n<i;++n)a[n]=t[n]^r[n];return a},E4=ql;fm.encrypt=function(e,t){var r=E4(t,e._prev);return e._prev=e._cipher.encryptBlock(r),e._prev};fm.decrypt=function(e,t){var r=e._prev;e._prev=t;var i=e._cipher.decryptBlock(t);return E4(i,r)};var R4={},qf=vt.Buffer,eW=ql;function Yw(e,t,r){var i=t.length,a=eW(t,e._cache);return e._cache=e._cache.slice(i),e._prev=qf.concat([e._prev,r?t:a]),a}R4.encrypt=function(e,t,r){for(var i=qf.allocUnsafe(0),a;t.length;)if(e._cache.length===0&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=qf.allocUnsafe(0)),e._cache.length<=t.length)a=e._cache.length,i=qf.concat([i,Yw(e,t.slice(0,a),r)]),t=t.slice(a);else{i=qf.concat([i,Yw(e,t,r)]);break}return i};var A4={},Rv=vt.Buffer;function tW(e,t,r){var i=e._cipher.encryptBlock(e._prev),a=i[0]^t;return e._prev=Rv.concat([e._prev.slice(1),Rv.from([r?t:a])]),a}A4.encrypt=function(e,t,r){for(var i=t.length,a=Rv.allocUnsafe(i),n=-1;++n<i;)a[n]=tW(e,t[n],r);return a};var T4={},Du=vt.Buffer;function rW(e,t,r){for(var i,a=-1,n=8,l=0,h,d;++a<n;)i=e._cipher.encryptBlock(e._prev),h=t&1<<7-a?128:0,d=i[0]^h,l+=(d&128)>>a%8,e._prev=iW(e._prev,r?h:d);return l}function iW(e,t){var r=e.length,i=-1,a=Du.allocUnsafe(e.length);for(e=Du.concat([e,Du.from([t])]);++i<r;)a[i]=e[i]<<1|e[i+1]>>7;return a}T4.encrypt=function(e,t,r){for(var i=t.length,a=Du.allocUnsafe(i),n=-1;++n<i;)a[n]=rW(e,t[n],r);return a};var O4={},nW=ql;function oW(e){return e._prev=e._cipher.encryptBlock(e._prev),e._prev}O4.encrypt=function(e,t){for(;e._cache.length<t.length;)e._cache=Le.Buffer.concat([e._cache,oW(e)]);var r=e._cache.slice(0,t.length);return e._cache=e._cache.slice(t.length),nW(t,r)};var Av={};function aW(e){for(var t=e.length,r;t--;)if(r=e.readUInt8(t),r===255)e.writeUInt8(0,t);else{r++,e.writeUInt8(r,t);break}}var I4=aW,sW=ql,Zw=vt.Buffer,fW=I4;function lW(e){var t=e._cipher.encryptBlockRaw(e._prev);return fW(e._prev),t}var $0=16;Av.encrypt=function(e,t){var r=Math.ceil(t.length/$0),i=e._cache.length;e._cache=Zw.concat([e._cache,Zw.allocUnsafe(r*$0)]);for(var a=0;a<r;a++){var n=lW(e),l=i+a*$0;e._cache.writeUInt32BE(n[0],l+0),e._cache.writeUInt32BE(n[1],l+4),e._cache.writeUInt32BE(n[2],l+8),e._cache.writeUInt32BE(n[3],l+12)}var h=e._cache.slice(0,t.length);return e._cache=e._cache.slice(t.length),sW(t,h)};const uW={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},hW={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},cW={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},P4={"aes-128-ecb":{cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},"aes-192-ecb":{cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},"aes-256-ecb":{cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},"aes-128-cbc":{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},"aes-192-cbc":{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},"aes-256-cbc":{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},aes128:uW,aes192:hW,aes256:cW,"aes-128-cfb":{cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},"aes-192-cfb":{cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},"aes-256-cfb":{cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},"aes-128-cfb8":{cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},"aes-192-cfb8":{cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},"aes-256-cfb8":{cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},"aes-128-cfb1":{cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},"aes-192-cfb1":{cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},"aes-256-cfb1":{cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},"aes-128-ofb":{cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},"aes-192-ofb":{cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},"aes-256-ofb":{cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},"aes-128-ctr":{cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},"aes-192-ctr":{cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},"aes-256-ctr":{cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},"aes-128-gcm":{cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},"aes-192-gcm":{cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},"aes-256-gcm":{cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}};var dW={ECB:sm,CBC:fm,CFB:R4,CFB8:A4,CFB1:T4,OFB:O4,CTR:Av,GCM:Av},Fu=P4;for(var Xw in Fu)Fu[Xw].module=dW[Fu[Xw].mode];var lm=Fu,Wl={},Th=vt.Buffer;function um(e){Th.isBuffer(e)||(e=Th.from(e));for(var t=e.length/4|0,r=new Array(t),i=0;i<t;i++)r[i]=e.readUInt32BE(i*4);return r}function D0(e){for(var t=0;t<e.length;e++)e[t]=0}function C4(e,t,r,i,a){for(var n=r[0],l=r[1],h=r[2],d=r[3],m=e[0]^t[0],_=e[1]^t[1],S=e[2]^t[2],R=e[3]^t[3],I,O,L,B,P=4,C=1;C<a;C++)I=n[m>>>24]^l[_>>>16&255]^h[S>>>8&255]^d[R&255]^t[P++],O=n[_>>>24]^l[S>>>16&255]^h[R>>>8&255]^d[m&255]^t[P++],L=n[S>>>24]^l[R>>>16&255]^h[m>>>8&255]^d[_&255]^t[P++],B=n[R>>>24]^l[m>>>16&255]^h[_>>>8&255]^d[S&255]^t[P++],m=I,_=O,S=L,R=B;return I=(i[m>>>24]<<24|i[_>>>16&255]<<16|i[S>>>8&255]<<8|i[R&255])^t[P++],O=(i[_>>>24]<<24|i[S>>>16&255]<<16|i[R>>>8&255]<<8|i[m&255])^t[P++],L=(i[S>>>24]<<24|i[R>>>16&255]<<16|i[m>>>8&255]<<8|i[_&255])^t[P++],B=(i[R>>>24]<<24|i[m>>>16&255]<<16|i[_>>>8&255]<<8|i[S&255])^t[P++],I=I>>>0,O=O>>>0,L=L>>>0,B=B>>>0,[I,O,L,B]}var pW=[0,1,2,4,8,16,32,64,128,27,54],or=function(){for(var e=new Array(256),t=0;t<256;t++)t<128?e[t]=t<<1:e[t]=t<<1^283;for(var r=[],i=[],a=[[],[],[],[]],n=[[],[],[],[]],l=0,h=0,d=0;d<256;++d){var m=h^h<<1^h<<2^h<<3^h<<4;m=m>>>8^m&255^99,r[l]=m,i[m]=l;var _=e[l],S=e[_],R=e[S],I=e[m]*257^m*16843008;a[0][l]=I<<24|I>>>8,a[1][l]=I<<16|I>>>16,a[2][l]=I<<8|I>>>24,a[3][l]=I,I=R*16843009^S*65537^_*257^l*16843008,n[0][m]=I<<24|I>>>8,n[1][m]=I<<16|I>>>16,n[2][m]=I<<8|I>>>24,n[3][m]=I,l===0?l=h=1:(l=_^e[e[e[R^_]]],h^=e[e[h]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:a,INV_SUB_MIX:n}}();function Ei(e){this._key=um(e),this._reset()}Ei.blockSize=4*4;Ei.keySize=256/8;Ei.prototype.blockSize=Ei.blockSize;Ei.prototype.keySize=Ei.keySize;Ei.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,i=(r+1)*4,a=[],n=0;n<t;n++)a[n]=e[n];for(n=t;n<i;n++){var l=a[n-1];n%t===0?(l=l<<8|l>>>24,l=or.SBOX[l>>>24]<<24|or.SBOX[l>>>16&255]<<16|or.SBOX[l>>>8&255]<<8|or.SBOX[l&255],l^=pW[n/t|0]<<24):t>6&&n%t===4&&(l=or.SBOX[l>>>24]<<24|or.SBOX[l>>>16&255]<<16|or.SBOX[l>>>8&255]<<8|or.SBOX[l&255]),a[n]=a[n-t]^l}for(var h=[],d=0;d<i;d++){var m=i-d,_=a[m-(d%4?0:4)];d<4||m<=4?h[d]=_:h[d]=or.INV_SUB_MIX[0][or.SBOX[_>>>24]]^or.INV_SUB_MIX[1][or.SBOX[_>>>16&255]]^or.INV_SUB_MIX[2][or.SBOX[_>>>8&255]]^or.INV_SUB_MIX[3][or.SBOX[_&255]]}this._nRounds=r,this._keySchedule=a,this._invKeySchedule=h};Ei.prototype.encryptBlockRaw=function(e){return e=um(e),C4(e,this._keySchedule,or.SUB_MIX,or.SBOX,this._nRounds)};Ei.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=Th.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r};Ei.prototype.decryptBlock=function(e){e=um(e);var t=e[1];e[1]=e[3],e[3]=t;var r=C4(e,this._invKeySchedule,or.INV_SUB_MIX,or.INV_SBOX,this._nRounds),i=Th.allocUnsafe(16);return i.writeUInt32BE(r[0],0),i.writeUInt32BE(r[3],4),i.writeUInt32BE(r[2],8),i.writeUInt32BE(r[1],12),i};Ei.prototype.scrub=function(){D0(this._keySchedule),D0(this._invKeySchedule),D0(this._key)};Wl.AES=Ei;var Fs=vt.Buffer,vW=Fs.alloc(16,0);function gW(e){return[e.readUInt32BE(0),e.readUInt32BE(4),e.readUInt32BE(8),e.readUInt32BE(12)]}function B4(e){var t=Fs.allocUnsafe(16);return t.writeUInt32BE(e[0]>>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function Kl(e){this.h=e,this.state=Fs.alloc(16,0),this.cache=Fs.allocUnsafe(0)}Kl.prototype.ghash=function(e){for(var t=-1;++t<e.length;)this.state[t]^=e[t];this._multiply()};Kl.prototype._multiply=function(){for(var e=gW(this.h),t=[0,0,0,0],r,i,a,n=-1;++n<128;){for(i=(this.state[~~(n/8)]&1<<7-n%8)!==0,i&&(t[0]^=e[0],t[1]^=e[1],t[2]^=e[2],t[3]^=e[3]),a=(e[3]&1)!==0,r=3;r>0;r--)e[r]=e[r]>>>1|(e[r-1]&1)<<31;e[0]=e[0]>>>1,a&&(e[0]=e[0]^225<<24)}this.state=B4(t)};Kl.prototype.update=function(e){this.cache=Fs.concat([this.cache,e]);for(var t;this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)};Kl.prototype.final=function(e,t){return this.cache.length&&this.ghash(Fs.concat([this.cache,vW],16)),this.ghash(B4([0,e,0,t])),this.state};var mW=Kl,yW=Wl,Xr=vt.Buffer,L4=Yo,bW=Ye,N4=mW,wW=ql,_W=I4;function MW(e,t){var r=0;e.length!==t.length&&r++;for(var i=Math.min(e.length,t.length),a=0;a<i;++a)r+=e[a]^t[a];return r}function SW(e,t,r){if(t.length===12)return e._finID=Xr.concat([t,Xr.from([0,0,0,1])]),Xr.concat([t,Xr.from([0,0,0,2])]);var i=new N4(r),a=t.length,n=a%16;i.update(t),n&&(n=16-n,i.update(Xr.alloc(n,0))),i.update(Xr.alloc(8,0));var l=a*8,h=Xr.alloc(8);h.writeUIntBE(l,0,8),i.update(h),e._finID=i.state;var d=Xr.from(e._finID);return _W(d),d}function Ua(e,t,r,i){L4.call(this);var a=Xr.alloc(4,0);this._cipher=new yW.AES(t);var n=this._cipher.encryptBlock(a);this._ghash=new N4(n),r=SW(this,r,n),this._prev=Xr.from(r),this._cache=Xr.allocUnsafe(0),this._secCache=Xr.allocUnsafe(0),this._decrypt=i,this._alen=0,this._len=0,this._mode=e,this._authTag=null,this._called=!1}bW(Ua,L4);Ua.prototype._update=function(e){if(!this._called&&this._alen){var t=16-this._alen%16;t<16&&(t=Xr.alloc(t,0),this._ghash.update(t))}this._called=!0;var r=this._mode.encrypt(this,e);return this._decrypt?this._ghash.update(e):this._ghash.update(r),this._len+=e.length,r};Ua.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var e=wW(this._ghash.final(this._alen*8,this._len*8),this._cipher.encryptBlock(this._finID));if(this._decrypt&&MW(e,this._authTag))throw new Error("Unsupported state or unable to authenticate data");this._authTag=e,this._cipher.scrub()};Ua.prototype.getAuthTag=function(){if(this._decrypt||!Xr.isBuffer(this._authTag))throw new Error("Attempting to get auth tag in unsupported state");return this._authTag};Ua.prototype.setAuthTag=function(t){if(!this._decrypt)throw new Error("Attempting to set auth tag in unsupported state");this._authTag=t};Ua.prototype.setAAD=function(t){if(this._called)throw new Error("Attempting to set AAD in unsupported state");this._ghash.update(t),this._alen+=t.length};var k4=Ua,xW=Wl,F0=vt.Buffer,$4=Yo,EW=Ye;function Lc(e,t,r,i){$4.call(this),this._cipher=new xW.AES(t),this._prev=F0.from(r),this._cache=F0.allocUnsafe(0),this._secCache=F0.allocUnsafe(0),this._decrypt=i,this._mode=e}EW(Lc,$4);Lc.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)};Lc.prototype._final=function(){this._cipher.scrub()};var D4=Lc,ta=vt.Buffer,RW=em;function AW(e,t,r,i){if(ta.isBuffer(e)||(e=ta.from(e,"binary")),t&&(ta.isBuffer(t)||(t=ta.from(t,"binary")),t.length!==8))throw new RangeError("salt should be Buffer with 8 byte length");for(var a=r/8,n=ta.alloc(a),l=ta.alloc(i||0),h=ta.alloc(0);a>0||i>0;){var d=new RW;d.update(h),d.update(e),t&&d.update(t),h=d.digest();var m=0;if(a>0){var _=n.length-a;m=Math.min(a,h.length),h.copy(n,_,0,m),a-=m}if(m<h.length&&i>0){var S=l.length-i,R=Math.min(i,h.length-m);h.copy(l,S,m,m+R),i-=R}}return h.fill(0),{key:n,iv:l}}var Nc=AW,F4=lm,TW=k4,no=vt.Buffer,OW=D4,j4=Yo,IW=Wl,PW=Nc,CW=Ye;function Vl(e,t,r){j4.call(this),this._cache=new kc,this._cipher=new IW.AES(t),this._prev=no.from(r),this._mode=e,this._autopadding=!0}CW(Vl,j4);Vl.prototype._update=function(e){this._cache.add(e);for(var t,r,i=[];t=this._cache.get();)r=this._mode.encrypt(this,t),i.push(r);return no.concat(i)};var BW=no.alloc(16,16);Vl.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(BW))throw this._cipher.scrub(),new Error("data not multiple of block length")};Vl.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this};function kc(){this.cache=no.allocUnsafe(0)}kc.prototype.add=function(e){this.cache=no.concat([this.cache,e])};kc.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null};kc.prototype.flush=function(){for(var e=16-this.cache.length,t=no.allocUnsafe(e),r=-1;++r<e;)t.writeUInt8(e,r);return no.concat([this.cache,t])};function U4(e,t,r){var i=F4[e.toLowerCase()];if(!i)throw new TypeError("invalid suite type");if(typeof t=="string"&&(t=no.from(t)),t.length!==i.key/8)throw new TypeError("invalid key length "+t.length);if(typeof r=="string"&&(r=no.from(r)),i.mode!=="GCM"&&r.length!==i.iv)throw new TypeError("invalid iv length "+r.length);return i.type==="stream"?new OW(i.module,t,r):i.type==="auth"?new TW(i.module,t,r):new Vl(i.module,t,r)}function LW(e,t){var r=F4[e.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=PW(t,!1,r.key,r.iv);return U4(e,i.key,i.iv)}am.createCipheriv=U4;am.createCipher=LW;var hm={},NW=k4,js=vt.Buffer,H4=lm,kW=D4,q4=Yo,$W=Wl,DW=Nc,FW=Ye;function zl(e,t,r){q4.call(this),this._cache=new $c,this._last=void 0,this._cipher=new $W.AES(t),this._prev=js.from(r),this._mode=e,this._autopadding=!0}FW(zl,q4);zl.prototype._update=function(e){this._cache.add(e);for(var t,r,i=[];t=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,t),i.push(r);return js.concat(i)};zl.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return jW(this._mode.decrypt(this,e));if(e)throw new Error("data not multiple of block length")};zl.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this};function $c(){this.cache=js.allocUnsafe(0)}$c.prototype.add=function(e){this.cache=js.concat([this.cache,e])};$c.prototype.get=function(e){var t;if(e){if(this.cache.length>16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null};$c.prototype.flush=function(){if(this.cache.length)return this.cache};function jW(e){var t=e[15];if(t<1||t>16)throw new Error("unable to decrypt data");for(var r=-1;++r<t;)if(e[r+(16-t)]!==t)throw new Error("unable to decrypt data");if(t!==16)return e.slice(0,16-t)}function W4(e,t,r){var i=H4[e.toLowerCase()];if(!i)throw new TypeError("invalid suite type");if(typeof r=="string"&&(r=js.from(r)),i.mode!=="GCM"&&r.length!==i.iv)throw new TypeError("invalid iv length "+r.length);if(typeof t=="string"&&(t=js.from(t)),t.length!==i.key/8)throw new TypeError("invalid key length "+t.length);return i.type==="stream"?new kW(i.module,t,r,!0):i.type==="auth"?new NW(i.module,t,r,!0):new zl(i.module,t,r)}function UW(e,t){var r=H4[e.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=DW(t,!1,r.key,r.iv);return W4(e,i.key,i.iv)}hm.createDecipher=UW;hm.createDecipheriv=W4;var K4=am,V4=hm,HW=P4;function qW(){return Object.keys(HW)}ii.createCipher=ii.Cipher=K4.createCipher;ii.createCipheriv=ii.Cipheriv=K4.createCipheriv;ii.createDecipher=ii.Decipher=V4.createDecipher;ii.createDecipheriv=ii.Decipheriv=V4.createDecipheriv;ii.listCiphers=ii.getCiphers=qW;var z4={};(function(e){e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}})(z4);var G4=Qq,cm=ii,Lo=lm,Jn=z4,Y4=Nc;function WW(e,t){e=e.toLowerCase();var r,i;if(Lo[e])r=Lo[e].key,i=Lo[e].iv;else if(Jn[e])r=Jn[e].key*8,i=Jn[e].iv;else throw new TypeError("invalid suite type");var a=Y4(t,!1,r,i);return Z4(e,a.key,a.iv)}function KW(e,t){e=e.toLowerCase();var r,i;if(Lo[e])r=Lo[e].key,i=Lo[e].iv;else if(Jn[e])r=Jn[e].key*8,i=Jn[e].iv;else throw new TypeError("invalid suite type");var a=Y4(t,!1,r,i);return X4(e,a.key,a.iv)}function Z4(e,t,r){if(e=e.toLowerCase(),Lo[e])return cm.createCipheriv(e,t,r);if(Jn[e])return new G4({key:t,iv:r,mode:e});throw new TypeError("invalid suite type")}function X4(e,t,r){if(e=e.toLowerCase(),Lo[e])return cm.createDecipheriv(e,t,r);if(Jn[e])return new G4({key:t,iv:r,mode:e,decrypt:!0});throw new TypeError("invalid suite type")}function VW(){return Object.keys(Jn).concat(cm.getCiphers())}Yi.createCipher=Yi.Cipher=WW;Yi.createCipheriv=Yi.Cipheriv=Z4;Yi.createDecipher=Yi.Decipher=KW;Yi.createDecipheriv=Yi.Decipheriv=X4;Yi.listCiphers=Yi.getCiphers=VW;var ra={},dm={exports:{}};dm.exports;(function(e){(function(t,r){function i(M,o){if(!M)throw new Error(o||"Assertion failed")}function a(M,o){M.super_=o;var f=function(){};f.prototype=o.prototype,M.prototype=new f,M.prototype.constructor=M}function n(M,o,f){if(n.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(M||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Le.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var c=0;o[0]==="-"&&(c++,this.negative=1),c<o.length&&(f===16?this._parseHex(o,c,u):(this._parseBase(o,f,c),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p,w,x=0;if(u==="be")for(c=o.length-1,p=0;c>=0;c-=3)w=o[c]|o[c-1]<<8|o[c-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(c=0,p=0;c<o.length;c+=3)w=o[c]|o[c+1]<<8|o[c+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function h(M,o){var f=M.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(M,o,f){var u=h(M,f);return f-1>=o&&(u|=h(M,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p=0,w=0,x;if(u==="be")for(c=o.length-1;c>=f;c-=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(c=g%2===0?f+1:f;c<o.length;c+=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(M,o,f,u){for(var c=0,p=Math.min(M.length,f),w=o;w<p;w++){var x=M.charCodeAt(w)-48;c*=u,x>=49?c+=x-49+10:x>=17?c+=x-17+10:c+=x}return c}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var c=0,p=1;p<=67108863;p*=f)c++;c--,p=p/f|0;for(var w=o.length-u,x=w%c,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=c)s=m(o,v,v+c,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var c=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<c|p)&16777215).toString(16);p=x>>>24-c&16777215,p!==0||w!==this.length-1?u=_[6-g.length]+g+u:u=g+u,c+=2,c>=26&&(c-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var D=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=D+u:u=_[s-D.length]+D+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var c=this.byteLength(),p=u||Math.max(1,c);i(c<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-c;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(M){for(var o=new Array(M.bitLength()),f=0;f<o.length;f++){var u=f/26|0,c=f%26;o[f]=(M.words[u]&1<<c)>>>c}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var c=0;c<u.length;c++)this.words[c]=f.words[c]^u.words[c];if(this!==f)for(;c<f.length;c++)this.words[c]=f.words[c];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var c=0;c<f;c++)this.words[c]=~this.words[c]&67108863;return u>0&&(this.words[c]=~this.words[c]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,c=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<c:this.words[u]=this.words[u]&~(1<<c),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,c;this.length>o.length?(u=this,c=o):(u=o,c=this);for(var p=0,w=0;w<c.length;w++)f=(u.words[w]|0)+(c.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var c,p;u>0?(c=this,p=o):(c=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(c.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<c.length;x++)f=(c.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<c.length&&c!==this)for(;x<c.length;x++)this.words[x]=c.words[x];return this.length=Math.max(this.length,x),c!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(M,o,f){f.negative=o.negative^M.negative;var u=M.length+o.length|0;f.length=u,u=u-1|0;var c=M.words[0]|0,p=o.words[0]|0,w=c*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,D=Math.min(s,o.length-1),Y=Math.max(0,s-M.length+1);Y<=D;Y++){var Q=s-Y|0;c=M.words[Q]|0,p=o.words[Y]|0,w=c*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var L=function(o,f,u){var c=o.words,p=f.words,w=u.words,x=0,g,s,v,T=c[0]|0,D=T&8191,Y=T>>>13,Q=c[1]|0,A=Q&8191,E=Q>>>13,q=c[2]|0,V=q&8191,X=q>>>13,b=c[3]|0,y=b&8191,F=b>>>13,U=c[4]|0,Z=U&8191,j=U>>>13,k=c[5]|0,H=k&8191,z=k>>>13,oe=c[6]|0,ee=oe&8191,ne=oe>>>13,me=c[7]|0,he=me&8191,ue=me>>>13,xe=c[8]|0,le=xe&8191,ve=xe>>>13,ce=c[9]|0,ie=ce&8191,fe=ce>>>13,Ee=p[0]|0,de=Ee&8191,be=Ee>>>13,Ke=p[1]|0,we=Ke&8191,Se=Ke>>>13,qe=p[2]|0,ge=qe&8191,Me=qe>>>13,Ve=p[3]|0,_e=Ve&8191,Be=Ve>>>13,ot=p[4]|0,Ae=ot&8191,Ne=ot>>>13,st=p[5]|0,Pe=st&8191,De=st>>>13,ut=p[6]|0,Re=ut&8191,Fe=ut>>>13,ht=p[7]|0,Te=ht&8191,ke=ht>>>13,ct=p[8]|0,Oe=ct&8191,je=ct>>>13,ft=p[9]|0,Ie=ft&8191,$e=ft>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(D,de),s=Math.imul(D,be),s=s+Math.imul(Y,de)|0,v=Math.imul(Y,be);var tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(tt>>>26)|0,tt&=67108863,g=Math.imul(A,de),s=Math.imul(A,be),s=s+Math.imul(E,de)|0,v=Math.imul(E,be),g=g+Math.imul(D,we)|0,s=s+Math.imul(D,Se)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,Se)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,de),s=Math.imul(V,be),s=s+Math.imul(X,de)|0,v=Math.imul(X,be),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,Se)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,Se)|0,g=g+Math.imul(D,ge)|0,s=s+Math.imul(D,Me)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,de),s=Math.imul(y,be),s=s+Math.imul(F,de)|0,v=Math.imul(F,be),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,Se)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,Se)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(D,_e)|0,s=s+Math.imul(D,Be)|0,s=s+Math.imul(Y,_e)|0,v=v+Math.imul(Y,Be)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(Z,de),s=Math.imul(Z,be),s=s+Math.imul(j,de)|0,v=Math.imul(j,be),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,Se)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,Se)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,_e)|0,s=s+Math.imul(A,Be)|0,s=s+Math.imul(E,_e)|0,v=v+Math.imul(E,Be)|0,g=g+Math.imul(D,Ae)|0,s=s+Math.imul(D,Ne)|0,s=s+Math.imul(Y,Ae)|0,v=v+Math.imul(Y,Ne)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(H,de),s=Math.imul(H,be),s=s+Math.imul(z,de)|0,v=Math.imul(z,be),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,Se)|0,s=s+Math.imul(j,we)|0,v=v+Math.imul(j,Se)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(V,_e)|0,s=s+Math.imul(V,Be)|0,s=s+Math.imul(X,_e)|0,v=v+Math.imul(X,Be)|0,g=g+Math.imul(A,Ae)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Ae)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(D,Pe)|0,s=s+Math.imul(D,De)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,De)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(ee,de),s=Math.imul(ee,be),s=s+Math.imul(ne,de)|0,v=Math.imul(ne,be),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,Se)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,Se)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(j,ge)|0,v=v+Math.imul(j,Me)|0,g=g+Math.imul(y,_e)|0,s=s+Math.imul(y,Be)|0,s=s+Math.imul(F,_e)|0,v=v+Math.imul(F,Be)|0,g=g+Math.imul(V,Ae)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Ae)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(D,Re)|0,s=s+Math.imul(D,Fe)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Fe)|0;var Dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,g=Math.imul(he,de),s=Math.imul(he,be),s=s+Math.imul(ue,de)|0,v=Math.imul(ue,be),g=g+Math.imul(ee,we)|0,s=s+Math.imul(ee,Se)|0,s=s+Math.imul(ne,we)|0,v=v+Math.imul(ne,Se)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,_e)|0,s=s+Math.imul(Z,Be)|0,s=s+Math.imul(j,_e)|0,v=v+Math.imul(j,Be)|0,g=g+Math.imul(y,Ae)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(F,Ae)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Fe)|0,g=g+Math.imul(D,Te)|0,s=s+Math.imul(D,ke)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,ke)|0;var qt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(qt>>>26)|0,qt&=67108863,g=Math.imul(le,de),s=Math.imul(le,be),s=s+Math.imul(ve,de)|0,v=Math.imul(ve,be),g=g+Math.imul(he,we)|0,s=s+Math.imul(he,Se)|0,s=s+Math.imul(ue,we)|0,v=v+Math.imul(ue,Se)|0,g=g+Math.imul(ee,ge)|0,s=s+Math.imul(ee,Me)|0,s=s+Math.imul(ne,ge)|0,v=v+Math.imul(ne,Me)|0,g=g+Math.imul(H,_e)|0,s=s+Math.imul(H,Be)|0,s=s+Math.imul(z,_e)|0,v=v+Math.imul(z,Be)|0,g=g+Math.imul(Z,Ae)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(j,Ae)|0,v=v+Math.imul(j,Ne)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Fe)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,ke)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,ke)|0,g=g+Math.imul(D,Oe)|0,s=s+Math.imul(D,je)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,je)|0;var Wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,g=Math.imul(ie,de),s=Math.imul(ie,be),s=s+Math.imul(fe,de)|0,v=Math.imul(fe,be),g=g+Math.imul(le,we)|0,s=s+Math.imul(le,Se)|0,s=s+Math.imul(ve,we)|0,v=v+Math.imul(ve,Se)|0,g=g+Math.imul(he,ge)|0,s=s+Math.imul(he,Me)|0,s=s+Math.imul(ue,ge)|0,v=v+Math.imul(ue,Me)|0,g=g+Math.imul(ee,_e)|0,s=s+Math.imul(ee,Be)|0,s=s+Math.imul(ne,_e)|0,v=v+Math.imul(ne,Be)|0,g=g+Math.imul(H,Ae)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Ae)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(j,Pe)|0,v=v+Math.imul(j,De)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Fe)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,ke)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,ke)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(D,Ie)|0,s=s+Math.imul(D,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,Se),s=s+Math.imul(fe,we)|0,v=Math.imul(fe,Se),g=g+Math.imul(le,ge)|0,s=s+Math.imul(le,Me)|0,s=s+Math.imul(ve,ge)|0,v=v+Math.imul(ve,Me)|0,g=g+Math.imul(he,_e)|0,s=s+Math.imul(he,Be)|0,s=s+Math.imul(ue,_e)|0,v=v+Math.imul(ue,Be)|0,g=g+Math.imul(ee,Ae)|0,s=s+Math.imul(ee,Ne)|0,s=s+Math.imul(ne,Ae)|0,v=v+Math.imul(ne,Ne)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(j,Re)|0,v=v+Math.imul(j,Fe)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,ke)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,ke)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Me),s=s+Math.imul(fe,ge)|0,v=Math.imul(fe,Me),g=g+Math.imul(le,_e)|0,s=s+Math.imul(le,Be)|0,s=s+Math.imul(ve,_e)|0,v=v+Math.imul(ve,Be)|0,g=g+Math.imul(he,Ae)|0,s=s+Math.imul(he,Ne)|0,s=s+Math.imul(ue,Ae)|0,v=v+Math.imul(ue,Ne)|0,g=g+Math.imul(ee,Pe)|0,s=s+Math.imul(ee,De)|0,s=s+Math.imul(ne,Pe)|0,v=v+Math.imul(ne,De)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Fe)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,ke)|0,s=s+Math.imul(j,Te)|0,v=v+Math.imul(j,ke)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0;var Tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,g=Math.imul(ie,_e),s=Math.imul(ie,Be),s=s+Math.imul(fe,_e)|0,v=Math.imul(fe,Be),g=g+Math.imul(le,Ae)|0,s=s+Math.imul(le,Ne)|0,s=s+Math.imul(ve,Ae)|0,v=v+Math.imul(ve,Ne)|0,g=g+Math.imul(he,Pe)|0,s=s+Math.imul(he,De)|0,s=s+Math.imul(ue,Pe)|0,v=v+Math.imul(ue,De)|0,g=g+Math.imul(ee,Re)|0,s=s+Math.imul(ee,Fe)|0,s=s+Math.imul(ne,Re)|0,v=v+Math.imul(ne,Fe)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,ke)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,ke)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(j,Oe)|0,v=v+Math.imul(j,je)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Ae),s=Math.imul(ie,Ne),s=s+Math.imul(fe,Ae)|0,v=Math.imul(fe,Ne),g=g+Math.imul(le,Pe)|0,s=s+Math.imul(le,De)|0,s=s+Math.imul(ve,Pe)|0,v=v+Math.imul(ve,De)|0,g=g+Math.imul(he,Re)|0,s=s+Math.imul(he,Fe)|0,s=s+Math.imul(ue,Re)|0,v=v+Math.imul(ue,Fe)|0,g=g+Math.imul(ee,Te)|0,s=s+Math.imul(ee,ke)|0,s=s+Math.imul(ne,Te)|0,v=v+Math.imul(ne,ke)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(j,Ie)|0,v=v+Math.imul(j,$e)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,De),s=s+Math.imul(fe,Pe)|0,v=Math.imul(fe,De),g=g+Math.imul(le,Re)|0,s=s+Math.imul(le,Fe)|0,s=s+Math.imul(ve,Re)|0,v=v+Math.imul(ve,Fe)|0,g=g+Math.imul(he,Te)|0,s=s+Math.imul(he,ke)|0,s=s+Math.imul(ue,Te)|0,v=v+Math.imul(ue,ke)|0,g=g+Math.imul(ee,Oe)|0,s=s+Math.imul(ee,je)|0,s=s+Math.imul(ne,Oe)|0,v=v+Math.imul(ne,je)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0;var Ct=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Fe),s=s+Math.imul(fe,Re)|0,v=Math.imul(fe,Fe),g=g+Math.imul(le,Te)|0,s=s+Math.imul(le,ke)|0,s=s+Math.imul(ve,Te)|0,v=v+Math.imul(ve,ke)|0,g=g+Math.imul(he,Oe)|0,s=s+Math.imul(he,je)|0,s=s+Math.imul(ue,Oe)|0,v=v+Math.imul(ue,je)|0,g=g+Math.imul(ee,Ie)|0,s=s+Math.imul(ee,$e)|0,s=s+Math.imul(ne,Ie)|0,v=v+Math.imul(ne,$e)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,ke),s=s+Math.imul(fe,Te)|0,v=Math.imul(fe,ke),g=g+Math.imul(le,Oe)|0,s=s+Math.imul(le,je)|0,s=s+Math.imul(ve,Oe)|0,v=v+Math.imul(ve,je)|0,g=g+Math.imul(he,Ie)|0,s=s+Math.imul(he,$e)|0,s=s+Math.imul(ue,Ie)|0,v=v+Math.imul(ue,$e)|0;var wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(wt>>>26)|0,wt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,je),s=s+Math.imul(fe,Oe)|0,v=Math.imul(fe,je),g=g+Math.imul(le,Ie)|0,s=s+Math.imul(le,$e)|0,s=s+Math.imul(ve,Ie)|0,v=v+Math.imul(ve,$e)|0;var Ft=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(fe,Ie)|0,v=Math.imul(fe,$e);var jt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(jt>>>26)|0,jt&=67108863,w[0]=tt,w[1]=et,w[2]=Et,w[3]=It,w[4]=Pt,w[5]=Bt,w[6]=Dt,w[7]=qt,w[8]=Wt,w[9]=Lt,w[10]=dt,w[11]=Tt,w[12]=Mt,w[13]=bt,w[14]=Ct,w[15]=gt,w[16]=wt,w[17]=Ft,w[18]=jt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(L=O);function B(M,o,f){f.negative=o.negative^M.negative,f.length=M.length+o.length;for(var u=0,c=0,p=0;p<f.length-1;p++){var w=c;c=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-M.length+1);s<=g;s++){var v=p-s,T=M.words[v]|0,D=o.words[s]|0,Y=T*D,Q=Y&67108863;w=w+(Y/67108864|0)|0,Q=Q+x|0,x=Q&67108863,w=w+(Q>>>26)|0,c+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=c}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(M,o,f){var u=new C;return u.mulp(M,o,f)}n.prototype.mulTo=function(o,f){var u,c=this.length+o.length;return this.length===10&&o.length===10?u=L(this,o,f):c<63?u=O(this,o,f):c<1024?u=B(this,o,f):u=P(this,o,f),u};function C(M,o){this.x=M,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,c=0;c<o;c++)f[c]=this.revBin(c,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var c=0,p=0;p<f;p++)c|=(o&1)<<f-p-1,o>>=1;return c},C.prototype.permute=function(o,f,u,c,p,w){for(var x=0;x<w;x++)c[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,c,p,w){this.permute(w,o,f,u,c,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var D=s,Y=v,Q=0;Q<x;Q++){var A=u[T+Q],E=c[T+Q],q=u[T+Q+x],V=c[T+Q+x],X=D*q-Y*V;V=D*V+Y*q,q=X,u[T+Q]=A+q,c[T+Q]=E+V,u[T+Q+x]=A-q,c[T+Q+x]=E-V,Q!==g&&(X=s*D-v*Y,Y=s*Y+v*D,D=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,c=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+c},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var c=0;c<u/2;c++){var p=o[c];o[c]=o[u-c-1],o[u-c-1]=p,p=f[c],f[c]=-f[u-c-1],f[u-c-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,c=0;c<f/2;c++){var p=Math.round(o[2*c+1]/f)*8192+Math.round(o[2*c]/f)+u;o[c]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,c){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<c;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var c=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(c),w=this.stub(c),x=new Array(c),g=new Array(c),s=new Array(c),v=new Array(c),T=new Array(c),D=new Array(c),Y=u.words;Y.length=c,this.convert13b(o.words,o.length,x,c),this.convert13b(f.words,f.length,v,c),this.transform(x,w,g,s,c,p),this.transform(v,w,T,D,c,p);for(var Q=0;Q<c;Q++){var A=g[Q]*T[Q]-s[Q]*D[Q];s[Q]=g[Q]*D[Q]+s[Q]*T[Q],g[Q]=A}return this.conjugate(g,s,c),this.transform(g,s,Y,w,c,p),this.conjugate(Y,w,c),this.normalize13b(Y,c),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var c=(this.words[u]|0)*o,p=(c&67108863)+(f&67108863);f>>=26,f+=c/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,c=0;c<f.length&&f[c]===0;c++,u=u.sqr());if(++c<f.length)for(var p=u.sqr();c<f.length;c++,p=p.sqr())f[c]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&c,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var c;f?c=(f-f%26)/26:c=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(c-=w,c=Math.max(0,c),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=c);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&c)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var c=67108863^67108863>>>f<<f;this.words[this.length-1]&=c}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var c=o.length+u,p;this._expand(c);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,c=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),c.iushln(u),w=p.words[p.length-1]|0);var g=c.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=c.clone()._ishlnsubmul(p,1,g);T.negative===0&&(c=T,s&&(s.words[g]=1));for(var D=g-1;D>=0;D--){var Y=(c.words[p.length+D]|0)*67108864+(c.words[p.length+D-1]|0);for(Y=Math.min(Y/w|0,67108863),c._ishlnsubmul(p,Y,D);c.negative!==0;)Y--,c.negative=0,c._ishlnsubmul(p,1,D),c.isZero()||(c.negative^=1);s&&(s.words[D]=Y)}return s&&s.strip(),c.strip(),f!=="div"&&u!==0&&c.iushrn(u),{div:s||null,mod:c}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var c,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(c=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:c,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(c=w.div.neg()),{div:c,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,c=o.ushrn(1),p=o.andln(1),w=u.cmp(c);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,c=this.length-1;c>=0;c--)u=(f*u+(this.words[c]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var c=(this.words[u]|0)+f*67108864;this.words[u]=c/o|0,f=c%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,D=1;!(f.words[0]&D)&&T<26;++T,D<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(c.isOdd()||p.isOdd())&&(c.iadd(s),p.isub(v)),c.iushrn(1),p.iushrn(1);for(var Y=0,Q=1;!(u.words[0]&Q)&&Y<26;++Y,Q<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(w),p.isub(x)):(u.isub(f),w.isub(c),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)c.isOdd()&&c.iadd(w),c.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(p)):(u.isub(f),p.isub(c))}var T;return f.cmpn(1)===0?T=c:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var c=0;f.isEven()&&u.isEven();c++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(c)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=c,this;for(var p=c,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var c=this.words[0]|0;u=c===o?0:c<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var c=this.words[u]|0,p=o.words[u]|0;if(c!==p){c<p?f=-1:c>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new K(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var N={k256:null,p224:null,p192:null,p25519:null};function $(M,o){this.name=M,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var c=u<this.n?-1:f.ucmp(this.p);return c===0?(f.words[0]=0,f.length=1):c>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function W(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(W,$),W.prototype.split=function(o,f){for(var u=4194303,c=Math.min(o.length,9),p=0;p<c;p++)f.words[p]=o.words[p];if(f.length=c,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},W.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var c=o.words[u]|0;f+=c*977,o.words[u]=f&67108863,f=c*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function re(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(re,$);function J(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(J,$),J.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var c=(o.words[u]|0)*19+f,p=c&67108863;c>>>=26,o.words[u]=p,f=c}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(N[o])return N[o];var f;if(o==="k256")f=new W;else if(o==="p224")f=new G;else if(o==="p192")f=new re;else if(o==="p25519")f=new J;else throw new Error("Unknown prime "+o);return N[o]=f,f};function K(M){if(typeof M=="string"){var o=n._prime(M);this.m=o.p,this.prime=o}else i(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}K.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},K.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},K.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},K.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},K.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},K.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},K.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},K.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},K.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},K.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},K.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},K.prototype.isqr=function(o){return this.imul(o,o.clone())},K.prototype.sqr=function(o){return this.mul(o,o)},K.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var c=this.m.subn(1),p=0;!c.isZero()&&c.andln(1)===0;)p++,c.iushrn(1);i(!c.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,c),T=this.pow(o,c.addn(1).iushrn(1)),D=this.pow(o,c),Y=p;D.cmp(w)!==0;){for(var Q=D,A=0;Q.cmp(w)!==0;A++)Q=Q.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),D=D.redMul(v),Y=A}return T},K.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},K.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,c=new Array(1<<u);c[0]=new n(1).toRed(this),c[1]=o;for(var p=2;p<c.length;p++)c[p]=this.mul(c[p-1],o);var w=c[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var D=v>>T&1;if(w!==c[0]&&(w=this.sqr(w)),D===0&&x===0){g=0;continue}x<<=1,x|=D,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,c[x]),g=0,x=0)}s=26}return w},K.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},K.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new se(o)};function se(M){K.call(this,M),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(se,K),se.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},se.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},se.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(dm);var J4=dm.exports,pm={exports:{}};pm.exports;(function(e){(function(t,r){function i(M,o){if(!M)throw new Error(o||"Assertion failed")}function a(M,o){M.super_=o;var f=function(){};f.prototype=o.prototype,M.prototype=new f,M.prototype.constructor=M}function n(M,o,f){if(n.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(M||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Le.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var c=0;o[0]==="-"&&(c++,this.negative=1),c<o.length&&(f===16?this._parseHex(o,c,u):(this._parseBase(o,f,c),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p,w,x=0;if(u==="be")for(c=o.length-1,p=0;c>=0;c-=3)w=o[c]|o[c-1]<<8|o[c-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(c=0,p=0;c<o.length;c+=3)w=o[c]|o[c+1]<<8|o[c+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function h(M,o){var f=M.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(M,o,f){var u=h(M,f);return f-1>=o&&(u|=h(M,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p=0,w=0,x;if(u==="be")for(c=o.length-1;c>=f;c-=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(c=g%2===0?f+1:f;c<o.length;c+=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(M,o,f,u){for(var c=0,p=Math.min(M.length,f),w=o;w<p;w++){var x=M.charCodeAt(w)-48;c*=u,x>=49?c+=x-49+10:x>=17?c+=x-17+10:c+=x}return c}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var c=0,p=1;p<=67108863;p*=f)c++;c--,p=p/f|0;for(var w=o.length-u,x=w%c,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=c)s=m(o,v,v+c,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var c=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<c|p)&16777215).toString(16);p=x>>>24-c&16777215,p!==0||w!==this.length-1?u=_[6-g.length]+g+u:u=g+u,c+=2,c>=26&&(c-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var D=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=D+u:u=_[s-D.length]+D+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var c=this.byteLength(),p=u||Math.max(1,c);i(c<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-c;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(M){for(var o=new Array(M.bitLength()),f=0;f<o.length;f++){var u=f/26|0,c=f%26;o[f]=(M.words[u]&1<<c)>>>c}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var c=0;c<u.length;c++)this.words[c]=f.words[c]^u.words[c];if(this!==f)for(;c<f.length;c++)this.words[c]=f.words[c];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var c=0;c<f;c++)this.words[c]=~this.words[c]&67108863;return u>0&&(this.words[c]=~this.words[c]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,c=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<c:this.words[u]=this.words[u]&~(1<<c),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,c;this.length>o.length?(u=this,c=o):(u=o,c=this);for(var p=0,w=0;w<c.length;w++)f=(u.words[w]|0)+(c.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var c,p;u>0?(c=this,p=o):(c=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(c.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<c.length;x++)f=(c.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<c.length&&c!==this)for(;x<c.length;x++)this.words[x]=c.words[x];return this.length=Math.max(this.length,x),c!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(M,o,f){f.negative=o.negative^M.negative;var u=M.length+o.length|0;f.length=u,u=u-1|0;var c=M.words[0]|0,p=o.words[0]|0,w=c*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,D=Math.min(s,o.length-1),Y=Math.max(0,s-M.length+1);Y<=D;Y++){var Q=s-Y|0;c=M.words[Q]|0,p=o.words[Y]|0,w=c*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var L=function(o,f,u){var c=o.words,p=f.words,w=u.words,x=0,g,s,v,T=c[0]|0,D=T&8191,Y=T>>>13,Q=c[1]|0,A=Q&8191,E=Q>>>13,q=c[2]|0,V=q&8191,X=q>>>13,b=c[3]|0,y=b&8191,F=b>>>13,U=c[4]|0,Z=U&8191,j=U>>>13,k=c[5]|0,H=k&8191,z=k>>>13,oe=c[6]|0,ee=oe&8191,ne=oe>>>13,me=c[7]|0,he=me&8191,ue=me>>>13,xe=c[8]|0,le=xe&8191,ve=xe>>>13,ce=c[9]|0,ie=ce&8191,fe=ce>>>13,Ee=p[0]|0,de=Ee&8191,be=Ee>>>13,Ke=p[1]|0,we=Ke&8191,Se=Ke>>>13,qe=p[2]|0,ge=qe&8191,Me=qe>>>13,Ve=p[3]|0,_e=Ve&8191,Be=Ve>>>13,ot=p[4]|0,Ae=ot&8191,Ne=ot>>>13,st=p[5]|0,Pe=st&8191,De=st>>>13,ut=p[6]|0,Re=ut&8191,Fe=ut>>>13,ht=p[7]|0,Te=ht&8191,ke=ht>>>13,ct=p[8]|0,Oe=ct&8191,je=ct>>>13,ft=p[9]|0,Ie=ft&8191,$e=ft>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(D,de),s=Math.imul(D,be),s=s+Math.imul(Y,de)|0,v=Math.imul(Y,be);var tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(tt>>>26)|0,tt&=67108863,g=Math.imul(A,de),s=Math.imul(A,be),s=s+Math.imul(E,de)|0,v=Math.imul(E,be),g=g+Math.imul(D,we)|0,s=s+Math.imul(D,Se)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,Se)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,de),s=Math.imul(V,be),s=s+Math.imul(X,de)|0,v=Math.imul(X,be),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,Se)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,Se)|0,g=g+Math.imul(D,ge)|0,s=s+Math.imul(D,Me)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,de),s=Math.imul(y,be),s=s+Math.imul(F,de)|0,v=Math.imul(F,be),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,Se)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,Se)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(D,_e)|0,s=s+Math.imul(D,Be)|0,s=s+Math.imul(Y,_e)|0,v=v+Math.imul(Y,Be)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(Z,de),s=Math.imul(Z,be),s=s+Math.imul(j,de)|0,v=Math.imul(j,be),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,Se)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,Se)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,_e)|0,s=s+Math.imul(A,Be)|0,s=s+Math.imul(E,_e)|0,v=v+Math.imul(E,Be)|0,g=g+Math.imul(D,Ae)|0,s=s+Math.imul(D,Ne)|0,s=s+Math.imul(Y,Ae)|0,v=v+Math.imul(Y,Ne)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(H,de),s=Math.imul(H,be),s=s+Math.imul(z,de)|0,v=Math.imul(z,be),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,Se)|0,s=s+Math.imul(j,we)|0,v=v+Math.imul(j,Se)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(V,_e)|0,s=s+Math.imul(V,Be)|0,s=s+Math.imul(X,_e)|0,v=v+Math.imul(X,Be)|0,g=g+Math.imul(A,Ae)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Ae)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(D,Pe)|0,s=s+Math.imul(D,De)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,De)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(ee,de),s=Math.imul(ee,be),s=s+Math.imul(ne,de)|0,v=Math.imul(ne,be),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,Se)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,Se)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(j,ge)|0,v=v+Math.imul(j,Me)|0,g=g+Math.imul(y,_e)|0,s=s+Math.imul(y,Be)|0,s=s+Math.imul(F,_e)|0,v=v+Math.imul(F,Be)|0,g=g+Math.imul(V,Ae)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Ae)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(D,Re)|0,s=s+Math.imul(D,Fe)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Fe)|0;var Dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,g=Math.imul(he,de),s=Math.imul(he,be),s=s+Math.imul(ue,de)|0,v=Math.imul(ue,be),g=g+Math.imul(ee,we)|0,s=s+Math.imul(ee,Se)|0,s=s+Math.imul(ne,we)|0,v=v+Math.imul(ne,Se)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,_e)|0,s=s+Math.imul(Z,Be)|0,s=s+Math.imul(j,_e)|0,v=v+Math.imul(j,Be)|0,g=g+Math.imul(y,Ae)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(F,Ae)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Fe)|0,g=g+Math.imul(D,Te)|0,s=s+Math.imul(D,ke)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,ke)|0;var qt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(qt>>>26)|0,qt&=67108863,g=Math.imul(le,de),s=Math.imul(le,be),s=s+Math.imul(ve,de)|0,v=Math.imul(ve,be),g=g+Math.imul(he,we)|0,s=s+Math.imul(he,Se)|0,s=s+Math.imul(ue,we)|0,v=v+Math.imul(ue,Se)|0,g=g+Math.imul(ee,ge)|0,s=s+Math.imul(ee,Me)|0,s=s+Math.imul(ne,ge)|0,v=v+Math.imul(ne,Me)|0,g=g+Math.imul(H,_e)|0,s=s+Math.imul(H,Be)|0,s=s+Math.imul(z,_e)|0,v=v+Math.imul(z,Be)|0,g=g+Math.imul(Z,Ae)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(j,Ae)|0,v=v+Math.imul(j,Ne)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Fe)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,ke)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,ke)|0,g=g+Math.imul(D,Oe)|0,s=s+Math.imul(D,je)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,je)|0;var Wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,g=Math.imul(ie,de),s=Math.imul(ie,be),s=s+Math.imul(fe,de)|0,v=Math.imul(fe,be),g=g+Math.imul(le,we)|0,s=s+Math.imul(le,Se)|0,s=s+Math.imul(ve,we)|0,v=v+Math.imul(ve,Se)|0,g=g+Math.imul(he,ge)|0,s=s+Math.imul(he,Me)|0,s=s+Math.imul(ue,ge)|0,v=v+Math.imul(ue,Me)|0,g=g+Math.imul(ee,_e)|0,s=s+Math.imul(ee,Be)|0,s=s+Math.imul(ne,_e)|0,v=v+Math.imul(ne,Be)|0,g=g+Math.imul(H,Ae)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Ae)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(j,Pe)|0,v=v+Math.imul(j,De)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Fe)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,ke)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,ke)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(D,Ie)|0,s=s+Math.imul(D,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,Se),s=s+Math.imul(fe,we)|0,v=Math.imul(fe,Se),g=g+Math.imul(le,ge)|0,s=s+Math.imul(le,Me)|0,s=s+Math.imul(ve,ge)|0,v=v+Math.imul(ve,Me)|0,g=g+Math.imul(he,_e)|0,s=s+Math.imul(he,Be)|0,s=s+Math.imul(ue,_e)|0,v=v+Math.imul(ue,Be)|0,g=g+Math.imul(ee,Ae)|0,s=s+Math.imul(ee,Ne)|0,s=s+Math.imul(ne,Ae)|0,v=v+Math.imul(ne,Ne)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(j,Re)|0,v=v+Math.imul(j,Fe)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,ke)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,ke)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Me),s=s+Math.imul(fe,ge)|0,v=Math.imul(fe,Me),g=g+Math.imul(le,_e)|0,s=s+Math.imul(le,Be)|0,s=s+Math.imul(ve,_e)|0,v=v+Math.imul(ve,Be)|0,g=g+Math.imul(he,Ae)|0,s=s+Math.imul(he,Ne)|0,s=s+Math.imul(ue,Ae)|0,v=v+Math.imul(ue,Ne)|0,g=g+Math.imul(ee,Pe)|0,s=s+Math.imul(ee,De)|0,s=s+Math.imul(ne,Pe)|0,v=v+Math.imul(ne,De)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Fe)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,ke)|0,s=s+Math.imul(j,Te)|0,v=v+Math.imul(j,ke)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0;var Tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,g=Math.imul(ie,_e),s=Math.imul(ie,Be),s=s+Math.imul(fe,_e)|0,v=Math.imul(fe,Be),g=g+Math.imul(le,Ae)|0,s=s+Math.imul(le,Ne)|0,s=s+Math.imul(ve,Ae)|0,v=v+Math.imul(ve,Ne)|0,g=g+Math.imul(he,Pe)|0,s=s+Math.imul(he,De)|0,s=s+Math.imul(ue,Pe)|0,v=v+Math.imul(ue,De)|0,g=g+Math.imul(ee,Re)|0,s=s+Math.imul(ee,Fe)|0,s=s+Math.imul(ne,Re)|0,v=v+Math.imul(ne,Fe)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,ke)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,ke)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(j,Oe)|0,v=v+Math.imul(j,je)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Ae),s=Math.imul(ie,Ne),s=s+Math.imul(fe,Ae)|0,v=Math.imul(fe,Ne),g=g+Math.imul(le,Pe)|0,s=s+Math.imul(le,De)|0,s=s+Math.imul(ve,Pe)|0,v=v+Math.imul(ve,De)|0,g=g+Math.imul(he,Re)|0,s=s+Math.imul(he,Fe)|0,s=s+Math.imul(ue,Re)|0,v=v+Math.imul(ue,Fe)|0,g=g+Math.imul(ee,Te)|0,s=s+Math.imul(ee,ke)|0,s=s+Math.imul(ne,Te)|0,v=v+Math.imul(ne,ke)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(j,Ie)|0,v=v+Math.imul(j,$e)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,De),s=s+Math.imul(fe,Pe)|0,v=Math.imul(fe,De),g=g+Math.imul(le,Re)|0,s=s+Math.imul(le,Fe)|0,s=s+Math.imul(ve,Re)|0,v=v+Math.imul(ve,Fe)|0,g=g+Math.imul(he,Te)|0,s=s+Math.imul(he,ke)|0,s=s+Math.imul(ue,Te)|0,v=v+Math.imul(ue,ke)|0,g=g+Math.imul(ee,Oe)|0,s=s+Math.imul(ee,je)|0,s=s+Math.imul(ne,Oe)|0,v=v+Math.imul(ne,je)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0;var Ct=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Fe),s=s+Math.imul(fe,Re)|0,v=Math.imul(fe,Fe),g=g+Math.imul(le,Te)|0,s=s+Math.imul(le,ke)|0,s=s+Math.imul(ve,Te)|0,v=v+Math.imul(ve,ke)|0,g=g+Math.imul(he,Oe)|0,s=s+Math.imul(he,je)|0,s=s+Math.imul(ue,Oe)|0,v=v+Math.imul(ue,je)|0,g=g+Math.imul(ee,Ie)|0,s=s+Math.imul(ee,$e)|0,s=s+Math.imul(ne,Ie)|0,v=v+Math.imul(ne,$e)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,ke),s=s+Math.imul(fe,Te)|0,v=Math.imul(fe,ke),g=g+Math.imul(le,Oe)|0,s=s+Math.imul(le,je)|0,s=s+Math.imul(ve,Oe)|0,v=v+Math.imul(ve,je)|0,g=g+Math.imul(he,Ie)|0,s=s+Math.imul(he,$e)|0,s=s+Math.imul(ue,Ie)|0,v=v+Math.imul(ue,$e)|0;var wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(wt>>>26)|0,wt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,je),s=s+Math.imul(fe,Oe)|0,v=Math.imul(fe,je),g=g+Math.imul(le,Ie)|0,s=s+Math.imul(le,$e)|0,s=s+Math.imul(ve,Ie)|0,v=v+Math.imul(ve,$e)|0;var Ft=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(fe,Ie)|0,v=Math.imul(fe,$e);var jt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(jt>>>26)|0,jt&=67108863,w[0]=tt,w[1]=et,w[2]=Et,w[3]=It,w[4]=Pt,w[5]=Bt,w[6]=Dt,w[7]=qt,w[8]=Wt,w[9]=Lt,w[10]=dt,w[11]=Tt,w[12]=Mt,w[13]=bt,w[14]=Ct,w[15]=gt,w[16]=wt,w[17]=Ft,w[18]=jt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(L=O);function B(M,o,f){f.negative=o.negative^M.negative,f.length=M.length+o.length;for(var u=0,c=0,p=0;p<f.length-1;p++){var w=c;c=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-M.length+1);s<=g;s++){var v=p-s,T=M.words[v]|0,D=o.words[s]|0,Y=T*D,Q=Y&67108863;w=w+(Y/67108864|0)|0,Q=Q+x|0,x=Q&67108863,w=w+(Q>>>26)|0,c+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=c}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(M,o,f){var u=new C;return u.mulp(M,o,f)}n.prototype.mulTo=function(o,f){var u,c=this.length+o.length;return this.length===10&&o.length===10?u=L(this,o,f):c<63?u=O(this,o,f):c<1024?u=B(this,o,f):u=P(this,o,f),u};function C(M,o){this.x=M,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,c=0;c<o;c++)f[c]=this.revBin(c,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var c=0,p=0;p<f;p++)c|=(o&1)<<f-p-1,o>>=1;return c},C.prototype.permute=function(o,f,u,c,p,w){for(var x=0;x<w;x++)c[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,c,p,w){this.permute(w,o,f,u,c,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var D=s,Y=v,Q=0;Q<x;Q++){var A=u[T+Q],E=c[T+Q],q=u[T+Q+x],V=c[T+Q+x],X=D*q-Y*V;V=D*V+Y*q,q=X,u[T+Q]=A+q,c[T+Q]=E+V,u[T+Q+x]=A-q,c[T+Q+x]=E-V,Q!==g&&(X=s*D-v*Y,Y=s*Y+v*D,D=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,c=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+c},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var c=0;c<u/2;c++){var p=o[c];o[c]=o[u-c-1],o[u-c-1]=p,p=f[c],f[c]=-f[u-c-1],f[u-c-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,c=0;c<f/2;c++){var p=Math.round(o[2*c+1]/f)*8192+Math.round(o[2*c]/f)+u;o[c]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,c){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<c;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var c=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(c),w=this.stub(c),x=new Array(c),g=new Array(c),s=new Array(c),v=new Array(c),T=new Array(c),D=new Array(c),Y=u.words;Y.length=c,this.convert13b(o.words,o.length,x,c),this.convert13b(f.words,f.length,v,c),this.transform(x,w,g,s,c,p),this.transform(v,w,T,D,c,p);for(var Q=0;Q<c;Q++){var A=g[Q]*T[Q]-s[Q]*D[Q];s[Q]=g[Q]*D[Q]+s[Q]*T[Q],g[Q]=A}return this.conjugate(g,s,c),this.transform(g,s,Y,w,c,p),this.conjugate(Y,w,c),this.normalize13b(Y,c),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var c=(this.words[u]|0)*o,p=(c&67108863)+(f&67108863);f>>=26,f+=c/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,c=0;c<f.length&&f[c]===0;c++,u=u.sqr());if(++c<f.length)for(var p=u.sqr();c<f.length;c++,p=p.sqr())f[c]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&c,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var c;f?c=(f-f%26)/26:c=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(c-=w,c=Math.max(0,c),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=c);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&c)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var c=67108863^67108863>>>f<<f;this.words[this.length-1]&=c}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var c=o.length+u,p;this._expand(c);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,c=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),c.iushln(u),w=p.words[p.length-1]|0);var g=c.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=c.clone()._ishlnsubmul(p,1,g);T.negative===0&&(c=T,s&&(s.words[g]=1));for(var D=g-1;D>=0;D--){var Y=(c.words[p.length+D]|0)*67108864+(c.words[p.length+D-1]|0);for(Y=Math.min(Y/w|0,67108863),c._ishlnsubmul(p,Y,D);c.negative!==0;)Y--,c.negative=0,c._ishlnsubmul(p,1,D),c.isZero()||(c.negative^=1);s&&(s.words[D]=Y)}return s&&s.strip(),c.strip(),f!=="div"&&u!==0&&c.iushrn(u),{div:s||null,mod:c}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var c,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(c=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:c,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(c=w.div.neg()),{div:c,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,c=o.ushrn(1),p=o.andln(1),w=u.cmp(c);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,c=this.length-1;c>=0;c--)u=(f*u+(this.words[c]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var c=(this.words[u]|0)+f*67108864;this.words[u]=c/o|0,f=c%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,D=1;!(f.words[0]&D)&&T<26;++T,D<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(c.isOdd()||p.isOdd())&&(c.iadd(s),p.isub(v)),c.iushrn(1),p.iushrn(1);for(var Y=0,Q=1;!(u.words[0]&Q)&&Y<26;++Y,Q<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(w),p.isub(x)):(u.isub(f),w.isub(c),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)c.isOdd()&&c.iadd(w),c.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(p)):(u.isub(f),p.isub(c))}var T;return f.cmpn(1)===0?T=c:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var c=0;f.isEven()&&u.isEven();c++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(c)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=c,this;for(var p=c,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var c=this.words[0]|0;u=c===o?0:c<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var c=this.words[u]|0,p=o.words[u]|0;if(c!==p){c<p?f=-1:c>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new K(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var N={k256:null,p224:null,p192:null,p25519:null};function $(M,o){this.name=M,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var c=u<this.n?-1:f.ucmp(this.p);return c===0?(f.words[0]=0,f.length=1):c>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function W(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(W,$),W.prototype.split=function(o,f){for(var u=4194303,c=Math.min(o.length,9),p=0;p<c;p++)f.words[p]=o.words[p];if(f.length=c,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},W.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var c=o.words[u]|0;f+=c*977,o.words[u]=f&67108863,f=c*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function re(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(re,$);function J(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(J,$),J.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var c=(o.words[u]|0)*19+f,p=c&67108863;c>>>=26,o.words[u]=p,f=c}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(N[o])return N[o];var f;if(o==="k256")f=new W;else if(o==="p224")f=new G;else if(o==="p192")f=new re;else if(o==="p25519")f=new J;else throw new Error("Unknown prime "+o);return N[o]=f,f};function K(M){if(typeof M=="string"){var o=n._prime(M);this.m=o.p,this.prime=o}else i(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}K.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},K.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},K.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},K.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},K.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},K.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},K.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},K.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},K.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},K.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},K.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},K.prototype.isqr=function(o){return this.imul(o,o.clone())},K.prototype.sqr=function(o){return this.mul(o,o)},K.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var c=this.m.subn(1),p=0;!c.isZero()&&c.andln(1)===0;)p++,c.iushrn(1);i(!c.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,c),T=this.pow(o,c.addn(1).iushrn(1)),D=this.pow(o,c),Y=p;D.cmp(w)!==0;){for(var Q=D,A=0;Q.cmp(w)!==0;A++)Q=Q.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),D=D.redMul(v),Y=A}return T},K.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},K.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,c=new Array(1<<u);c[0]=new n(1).toRed(this),c[1]=o;for(var p=2;p<c.length;p++)c[p]=this.mul(c[p-1],o);var w=c[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var D=v>>T&1;if(w!==c[0]&&(w=this.sqr(w)),D===0&&x===0){g=0;continue}x<<=1,x|=D,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,c[x]),g=0,x=0)}s=26}return w},K.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},K.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new se(o)};function se(M){K.call(this,M),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(se,K),se.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},se.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},se.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(pm);var zW=pm.exports,vu={exports:{}},Jw;function vm(){if(Jw)return vu.exports;Jw=1;var e;vu.exports=function(a){return e||(e=new t(null)),e.generate(a)};function t(i){this.rand=i}if(vu.exports.Rand=t,t.prototype.generate=function(a){return this._rand(a)},t.prototype._rand=function(a){if(this.rand.getBytes)return this.rand.getBytes(a);for(var n=new Uint8Array(a),l=0;l<n.length;l++)n[l]=this.rand.getByte();return n},typeof self=="object")self.crypto&&self.crypto.getRandomValues?t.prototype._rand=function(a){var n=new Uint8Array(a);return self.crypto.getRandomValues(n),n}:self.msCrypto&&self.msCrypto.getRandomValues?t.prototype._rand=function(a){var n=new Uint8Array(a);return self.msCrypto.getRandomValues(n),n}:typeof window=="object"&&(t.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var r=f8();if(typeof r.randomBytes!="function")throw new Error("Not supported");t.prototype._rand=function(a){return r.randomBytes(a)}}catch{}return vu.exports}var j0,Qw;function Q4(){if(Qw)return j0;Qw=1;var e=zW,t=vm();function r(i){this.rand=i||new t.Rand}return j0=r,r.create=function(a){return new r(a)},r.prototype._randbelow=function(a){var n=a.bitLength(),l=Math.ceil(n/8);do var h=new e(this.rand.generate(l));while(h.cmp(a)>=0);return h},r.prototype._randrange=function(a,n){var l=n.sub(a);return a.add(this._randbelow(l))},r.prototype.test=function(a,n,l){var h=a.bitLength(),d=e.mont(a),m=new e(1).toRed(d);n||(n=Math.max(1,h/48|0));for(var _=a.subn(1),S=0;!_.testn(S);S++);for(var R=a.shrn(S),I=_.toRed(d),O=!0;n>0;n--){var L=this._randrange(new e(2),_);l&&l(L);var B=L.toRed(d).redPow(R);if(!(B.cmp(m)===0||B.cmp(I)===0)){for(var P=1;P<S;P++){if(B=B.redSqr(),B.cmp(m)===0)return!1;if(B.cmp(I)===0)break}if(P===S)return!1}}return O},r.prototype.getDivisor=function(a,n){var l=a.bitLength(),h=e.mont(a),d=new e(1).toRed(h);n||(n=Math.max(1,l/48|0));for(var m=a.subn(1),_=0;!m.testn(_);_++);for(var S=a.shrn(_),R=m.toRed(h);n>0;n--){var I=this._randrange(new e(2),m),O=a.gcd(I);if(O.cmpn(1)!==0)return O;var L=I.toRed(h).redPow(S);if(!(L.cmp(d)===0||L.cmp(R)===0)){for(var B=1;B<_;B++){if(L=L.redSqr(),L.cmp(d)===0)return L.fromRed().subn(1).gcd(a);if(L.cmp(R)===0)break}if(B===_)return L=L.redSqr(),L.fromRed().subn(1).gcd(a)}}return!1},j0}var U0,e2;function eE(){if(e2)return U0;e2=1;var e=rf;U0=B,B.simpleSieve=O,B.fermatTest=L;var t=J4,r=new t(24),i=Q4(),a=new i,n=new t(1),l=new t(2),h=new t(5);new t(16),new t(8);var d=new t(10),m=new t(3);new t(7);var _=new t(11),S=new t(4);new t(12);var R=null;function I(){if(R!==null)return R;var P=1048576,C=[];C[0]=2;for(var N=1,$=3;$<P;$+=2){for(var W=Math.ceil(Math.sqrt($)),G=0;G<N&&C[G]<=W&&$%C[G]!==0;G++);N!==G&&C[G]<=W||(C[N++]=$)}return R=C,C}function O(P){for(var C=I(),N=0;N<C.length;N++)if(P.modn(C[N])===0)return P.cmpn(C[N])===0;return!0}function L(P){var C=t.mont(P);return l.toRed(C).redPow(P.subn(1)).fromRed().cmpn(1)===0}function B(P,C){if(P<16)return C===2||C===5?new t([140,123]):new t([140,39]);C=new t(C);for(var N,$;;){for(N=new t(e(Math.ceil(P/8)));N.bitLength()>P;)N.ishrn(1);if(N.isEven()&&N.iadd(n),N.testn(1)||N.iadd(l),C.cmp(l)){if(!C.cmp(h))for(;N.mod(d).cmp(m);)N.iadd(S)}else for(;N.mod(r).cmp(_);)N.iadd(S);if($=N.shrn(1),O($)&&O(N)&&L($)&&L(N)&&a.test($)&&a.test(N))return N}}return U0}const GW={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},YW={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},ZW={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},XW={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},JW={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},QW={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},eK={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},tK={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"},rK={modp1:GW,modp2:YW,modp5:ZW,modp14:XW,modp15:JW,modp16:QW,modp17:eK,modp18:tK};var H0,t2;function iK(){if(t2)return H0;t2=1;var e=J4,t=Q4(),r=new t,i=new e(24),a=new e(11),n=new e(10),l=new e(3),h=new e(7),d=eE(),m=rf;H0=O;function _(B,P){return P=P||"utf8",Le.Buffer.isBuffer(B)||(B=new Le.Buffer(B,P)),this._pub=new e(B),this}function S(B,P){return P=P||"utf8",Le.Buffer.isBuffer(B)||(B=new Le.Buffer(B,P)),this._priv=new e(B),this}var R={};function I(B,P){var C=P.toString("hex"),N=[C,B.toString(16)].join("_");if(N in R)return R[N];var $=0;if(B.isEven()||!d.simpleSieve||!d.fermatTest(B)||!r.test(B))return $+=1,C==="02"||C==="05"?$+=8:$+=4,R[N]=$,$;r.test(B.shrn(1))||($+=2);var W;switch(C){case"02":B.mod(i).cmp(a)&&($+=8);break;case"05":W=B.mod(n),W.cmp(l)&&W.cmp(h)&&($+=8);break;default:$+=4}return R[N]=$,$}function O(B,P,C){this.setGenerator(P),this.__prime=new e(B),this._prime=e.mont(this.__prime),this._primeLen=B.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,C?(this.setPublicKey=_,this.setPrivateKey=S):this._primeCode=8}Object.defineProperty(O.prototype,"verifyError",{enumerable:!0,get:function(){return typeof this._primeCode!="number"&&(this._primeCode=I(this.__prime,this.__gen)),this._primeCode}}),O.prototype.generateKeys=function(){return this._priv||(this._priv=new e(m(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},O.prototype.computeSecret=function(B){B=new e(B),B=B.toRed(this._prime);var P=B.redPow(this._priv).fromRed(),C=new Le.Buffer(P.toArray()),N=this.getPrime();if(C.length<N.length){var $=new Le.Buffer(N.length-C.length);$.fill(0),C=Le.Buffer.concat([$,C])}return C},O.prototype.getPublicKey=function(P){return L(this._pub,P)},O.prototype.getPrivateKey=function(P){return L(this._priv,P)},O.prototype.getPrime=function(B){return L(this.__prime,B)},O.prototype.getGenerator=function(B){return L(this._gen,B)},O.prototype.setGenerator=function(B,P){return P=P||"utf8",Le.Buffer.isBuffer(B)||(B=new Le.Buffer(B,P)),this.__gen=B,this._gen=new e(B),this};function L(B,P){var C=new Le.Buffer(B.toArray());return P?C.toString(P):C}return H0}var r2;function nK(){if(r2)return ra;r2=1;var e=eE(),t=rK,r=iK();function i(l){var h=new Le.Buffer(t[l].prime,"hex"),d=new Le.Buffer(t[l].gen,"hex");return new r(h,d)}var a={binary:!0,hex:!0,base64:!0};function n(l,h,d,m){return Le.Buffer.isBuffer(h)||a[h]===void 0?n(l,"binary",h,d):(h=h||"binary",m=m||"binary",d=d||new Le.Buffer([2]),Le.Buffer.isBuffer(d)||(d=new Le.Buffer(d,m)),typeof l=="number"?new r(e(l,d),d,!0):(Le.Buffer.isBuffer(l)||(l=new Le.Buffer(l,h)),new r(l,d,!0)))}return ra.DiffieHellmanGroup=ra.createDiffieHellmanGroup=ra.getDiffieHellman=i,ra.createDiffieHellman=ra.DiffieHellman=n,ra}var Tv={exports:{}},tE=kr.EventEmitter,q0,i2;function oK(){if(i2)return q0;i2=1;function e(O,L){var B=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);L&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),B.push.apply(B,P)}return B}function t(O){for(var L=1;L<arguments.length;L++){var B=arguments[L]!=null?arguments[L]:{};L%2?e(Object(B),!0).forEach(function(P){r(O,P,B[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(B)):e(Object(B)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(B,P))})}return O}function r(O,L,B){return L=l(L),L in O?Object.defineProperty(O,L,{value:B,enumerable:!0,configurable:!0,writable:!0}):O[L]=B,O}function i(O,L){if(!(O instanceof L))throw new TypeError("Cannot call a class as a function")}function a(O,L){for(var B=0;B<L.length;B++){var P=L[B];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,L,B){return L&&a(O.prototype,L),B&&a(O,B),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var L=h(O,"string");return typeof L=="symbol"?L:String(L)}function h(O,L){if(typeof O!="object"||O===null)return O;var B=O[Symbol.toPrimitive];if(B!==void 0){var P=B.call(O,L||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(L==="string"?String:Number)(O)}var d=Le,m=d.Buffer,_=oi,S=_.inspect,R=S&&S.custom||"inspect";function I(O,L,B){m.prototype.copy.call(O,L,B)}return q0=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(B){var P={data:B,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(B){var P={data:B,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var B=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,B}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(B){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=B+P.data;return C}},{key:"concat",value:function(B){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(B>>>0),C=this.head,N=0;C;)I(C.data,P,N),N+=C.data.length,C=C.next;return P}},{key:"consume",value:function(B,P){var C;return B<this.head.data.length?(C=this.head.data.slice(0,B),this.head.data=this.head.data.slice(B)):B===this.head.data.length?C=this.shift():C=P?this._getString(B):this._getBuffer(B),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(B){var P=this.head,C=1,N=P.data;for(B-=N.length;P=P.next;){var $=P.data,W=B>$.length?$.length:B;if(W===$.length?N+=$:N+=$.slice(0,B),B-=W,B===0){W===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(W));break}++C}return this.length-=C,N}},{key:"_getBuffer",value:function(B){var P=m.allocUnsafe(B),C=this.head,N=1;for(C.data.copy(P),B-=C.data.length;C=C.next;){var $=C.data,W=B>$.length?$.length:B;if($.copy(P,P.length-B,0,W),B-=W,B===0){W===$.length?(++N,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(W));break}++N}return this.length-=N,P}},{key:R,value:function(B,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),q0}function aK(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,ye.nextTick(Ov,this,e)):ye.nextTick(Ov,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?ye.nextTick(ju,r):(r._writableState.errorEmitted=!0,ye.nextTick(n2,r,n)):ye.nextTick(n2,r,n):t?(ye.nextTick(ju,r),t(n)):ye.nextTick(ju,r)}),this)}function n2(e,t){Ov(e,t),ju(e)}function ju(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function sK(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Ov(e,t){e.emit("error",t)}function fK(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}var rE={destroy:aK,undestroy:sK,errorOrDestroy:fK},Ha={};function lK(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var iE={};function Li(e,t,r){r||(r=Error);function i(n,l,h){return typeof t=="string"?t:t(n,l,h)}var a=function(n){lK(l,n);function l(h,d,m){return n.call(this,i(h,d,m))||this}return l}(r);a.prototype.name=r.name,a.prototype.code=e,iE[e]=a}function o2(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(i){return String(i)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function uK(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function hK(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function cK(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Li("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Li("ERR_INVALID_ARG_TYPE",function(e,t,r){var i;typeof t=="string"&&uK(t,"not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";var a;if(hK(e," argument"))a="The ".concat(e," ").concat(i," ").concat(o2(t,"type"));else{var n=cK(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(n," ").concat(i," ").concat(o2(t,"type"))}return a+=". Received type ".concat(typeof r),a},TypeError);Li("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Li("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Li("ERR_STREAM_PREMATURE_CLOSE","Premature close");Li("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Li("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Li("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Li("ERR_STREAM_WRITE_AFTER_END","write after end");Li("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Li("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Li("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Ha.codes=iE;var dK=Ha.codes.ERR_INVALID_OPT_VALUE;function pK(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function vK(e,t,r,i){var a=pK(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=i?r:"highWaterMark";throw new dK(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}var nE={getHighWaterMark:vK},W0,a2;function oE(){if(a2)return W0;a2=1,W0=J;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){Q(E,A)}}var t;J.WritableState=G;var r={deprecate:ef},i=tE,a=Le.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function h(A){return a.isBuffer(A)||A instanceof n}var d=rE,m=nE,_=m.getHighWaterMark,S=Ha.codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,L=S.ERR_STREAM_CANNOT_PIPE,B=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,N=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(J,i);function W(){}function G(A,E,q){t=t||Us(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=_(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var re;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(re=Function.prototype[Symbol.hasInstance],Object.defineProperty(J,Symbol.hasInstance,{value:function(E){return re.call(this,E)?!0:this!==J?!1:E&&E._writableState instanceof G}})):re=function(E){return E instanceof this};function J(A){t=t||Us();var E=this instanceof t;if(!E&&!re.call(J,this))return new J(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}J.prototype.pipe=function(){$(this,new L)};function K(A,E){var q=new C;$(A,q),ye.nextTick(E,q)}function se(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),ye.nextTick(V,X),!1):!0}J.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&h(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=W),V.ending?K(this,q):(b||se(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},J.prototype.cork=function(){this._writableState.corked++},J.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},J.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new N(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(J.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function M(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(J.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=M(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var F=E.objectMode?1:V.length;E.length+=F;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,F,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new B("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(ye.nextTick(X,V),ye.nextTick(D,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),D(A,E))}function c(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(c(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?ye.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),D(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,F=!0;q;)X[y]=q,q.isBuf||(F=!1),q=q.next,y+=1;X.allBuffers=F,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,j=q.callback,k=E.objectMode?1:U.length;if(f(A,E,!1,k,U,Z,j),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}J.prototype._write=function(A,E,q){q(new I("_write()"))},J.prototype._writev=null,J.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(J.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),D(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,ye.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function D(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,D(A,E),q&&(E.finished?ye.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function Q(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(J.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),J.prototype.destroy=d.destroy,J.prototype._undestroy=d.undestroy,J.prototype._destroy=function(A,E){E(A)},W0}var K0,s2;function Us(){if(s2)return K0;s2=1;var e=Object.keys||function(m){var _=[];for(var S in m)_.push(S);return _};K0=l;var t=sE(),r=oE();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",h)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function h(){this._writableState.ended||ye.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(_){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=_,this._writableState.destroyed=_)}}),K0}var f2=Ha.codes.ERR_STREAM_PREMATURE_CLOSE;function gK(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];e.apply(this,i)}}}function mK(){}function yK(e){return e.setHeader&&typeof e.abort=="function"}function aE(e,t,r){if(typeof t=="function")return aE(e,null,t);t||(t={}),r=gK(r||mK);var i=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||h()},l=e._writableState&&e._writableState.finished,h=function(){a=!1,l=!0,i||r.call(e)},d=e._readableState&&e._readableState.endEmitted,m=function(){i=!1,d=!0,a||r.call(e)},_=function(O){r.call(e,O)},S=function(){var O;if(i&&!d)return(!e._readableState||!e._readableState.ended)&&(O=new f2),r.call(e,O);if(a&&!l)return(!e._writableState||!e._writableState.ended)&&(O=new f2),r.call(e,O)},R=function(){e.req.on("finish",h)};return yK(e)?(e.on("complete",h),e.on("abort",S),e.req?R():e.on("request",R)):a&&!e._writableState&&(e.on("end",n),e.on("close",n)),e.on("end",m),e.on("finish",h),t.error!==!1&&e.on("error",_),e.on("close",S),function(){e.removeListener("complete",h),e.removeListener("abort",S),e.removeListener("request",R),e.req&&e.req.removeListener("finish",h),e.removeListener("end",n),e.removeListener("close",n),e.removeListener("finish",h),e.removeListener("end",m),e.removeListener("error",_),e.removeListener("close",S)}}var gm=aE,V0,l2;function bK(){if(l2)return V0;l2=1;var e;function t(N,$,W){return $=r($),$ in N?Object.defineProperty(N,$,{value:W,enumerable:!0,configurable:!0,writable:!0}):N[$]=W,N}function r(N){var $=i(N,"string");return typeof $=="symbol"?$:String($)}function i(N,$){if(typeof N!="object"||N===null)return N;var W=N[Symbol.toPrimitive];if(W!==void 0){var G=W.call(N,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(N)}var a=gm,n=Symbol("lastResolve"),l=Symbol("lastReject"),h=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),_=Symbol("handlePromise"),S=Symbol("stream");function R(N,$){return{value:N,done:$}}function I(N){var $=N[n];if($!==null){var W=N[S].read();W!==null&&(N[m]=null,N[n]=null,N[l]=null,$(R(W,!1)))}}function O(N){ye.nextTick(I,N)}function L(N,$){return function(W,G){N.then(function(){if($[d]){W(R(void 0,!0));return}$[_](W,G)},G)}}var B=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,W=this[h];if(W!==null)return Promise.reject(W);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(K,se){ye.nextTick(function(){$[h]?se($[h]):K(R(void 0,!0))})});var G=this[m],re;if(G)re=new Promise(L(G,this));else{var J=this[S].read();if(J!==null)return Promise.resolve(R(J,!1));re=new Promise(this[_])}return this[m]=re,re}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(W,G){$[S].destroy(null,function(re){if(re){G(re);return}W(R(void 0,!0))})})}),e),B),C=function($){var W,G=Object.create(P,(W={},t(W,S,{value:$,writable:!0}),t(W,n,{value:null,writable:!0}),t(W,l,{value:null,writable:!0}),t(W,h,{value:null,writable:!0}),t(W,d,{value:$._readableState.endEmitted,writable:!0}),t(W,_,{value:function(J,K){var se=G[S].read();se?(G[m]=null,G[n]=null,G[l]=null,J(R(se,!1))):(G[n]=J,G[l]=K)},writable:!0}),W));return G[m]=null,a($,function(re){if(re&&re.code!=="ERR_STREAM_PREMATURE_CLOSE"){var J=G[l];J!==null&&(G[m]=null,G[n]=null,G[l]=null,J(re)),G[h]=re;return}var K=G[n];K!==null&&(G[m]=null,G[n]=null,G[l]=null,K(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return V0=C,V0}var z0,u2;function wK(){return u2||(u2=1,z0=function(){throw new Error("Readable.from is not available in the browser")}),z0}var G0,h2;function sE(){if(h2)return G0;h2=1,G0=K;var e;K.ReadableState=J,kr.EventEmitter;var t=function(y,F){return y.listeners(F).length},r=tE,i=Le.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var h=oi,d;h&&h.debuglog?d=h.debuglog("stream"):d=function(){};var m=oK(),_=rE,S=nE,R=S.getHighWaterMark,I=Ha.codes,O=I.ERR_INVALID_ARG_TYPE,L=I.ERR_STREAM_PUSH_AFTER_EOF,B=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,N,$;Ye(K,r);var W=_.errorOrDestroy,G=["error","close","destroy","pause","resume"];function re(b,y,F){if(typeof b.prependListener=="function")return b.prependListener(y,F);!b._events||!b._events[y]?b.on(y,F):Array.isArray(b._events[y])?b._events[y].unshift(F):b._events[y]=[F,b._events[y]]}function J(b,y,F){e=e||Us(),b=b||{},typeof F!="boolean"&&(F=y instanceof e),this.objectMode=!!b.objectMode,F&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",F),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=ti().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function K(b){if(e=e||Us(),!(this instanceof K))return new K(b);var y=this instanceof e;this._readableState=new J(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(K.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),K.prototype.destroy=_.destroy,K.prototype._undestroy=_.undestroy,K.prototype._destroy=function(b,y){y(b)},K.prototype.push=function(b,y){var F=this._readableState,U;return F.objectMode?U=!0:typeof b=="string"&&(y=y||F.defaultEncoding,y!==F.encoding&&(b=i.from(b,y),y=""),U=!0),se(this,b,y,!1,U)},K.prototype.unshift=function(b){return se(this,b,null,!0,!1)};function se(b,y,F,U,Z){d("readableAddChunk",y);var j=b._readableState;if(y===null)j.reading=!1,p(b,j);else{var k;if(Z||(k=o(j,y)),k)W(b,k);else if(j.objectMode||y&&y.length>0)if(typeof y!="string"&&!j.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)j.endEmitted?W(b,new P):M(b,j,y,!0);else if(j.ended)W(b,new L);else{if(j.destroyed)return!1;j.reading=!1,j.decoder&&!F?(y=j.decoder.write(y),j.objectMode||y.length!==0?M(b,j,y,!1):g(b,j)):M(b,j,y,!1)}else U||(j.reading=!1,g(b,j))}return!j.ended&&(j.length<j.highWaterMark||j.length===0)}function M(b,y,F,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",F)):(y.length+=y.objectMode?1:F.length,U?y.buffer.unshift(F):y.buffer.push(F),y.needReadable&&w(b)),g(b,y)}function o(b,y){var F;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(F=new O("chunk",["string","Buffer","Uint8Array"],y)),F}K.prototype.isPaused=function(){return this._readableState.flowing===!1},K.prototype.setEncoding=function(b){C||(C=ti().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var F=this._readableState.buffer.head,U="";F!==null;)U+=y.write(F.data),F=F.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function c(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}K.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,F=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=c(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=c(F,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),F!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var F=y.decoder.end();F&&F.length&&(y.buffer.push(F),y.length+=y.objectMode?1:F.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,ye.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,ye.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var F=y.length;if(d("maybeReadMore read 0"),b.read(0),F===y.length)break}y.readingMore=!1}K.prototype._read=function(b){W(this,new B("_read()"))},K.prototype.pipe=function(b,y){var F=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==ye.stdout&&b!==ye.stderr,j=Z?H:xe;U.endEmitted?ye.nextTick(j):F.once("end",j),b.on("unpipe",k);function k(le,ve){d("onunpipe"),le===F&&ve&&ve.hasUnpiped===!1&&(ve.hasUnpiped=!0,ee())}function H(){d("onend"),b.end()}var z=v(F);b.on("drain",z);var oe=!1;function ee(){d("cleanup"),b.removeListener("close",he),b.removeListener("finish",ue),b.removeListener("drain",z),b.removeListener("error",me),b.removeListener("unpipe",k),F.removeListener("end",H),F.removeListener("end",xe),F.removeListener("data",ne),oe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}F.on("data",ne);function ne(le){d("ondata");var ve=b.write(le);d("dest.write",ve),ve===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!oe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),F.pause())}function me(le){d("onerror",le),xe(),b.removeListener("error",me),t(b,"error")===0&&W(b,le)}re(b,"error",me);function he(){b.removeListener("finish",ue),xe()}b.once("close",he);function ue(){d("onfinish"),b.removeListener("close",he),xe()}b.once("finish",ue);function xe(){d("unpipe"),F.unpipe(b)}return b.emit("pipe",F),U.flowing||(d("pipe resume"),F.resume()),b};function v(b){return function(){var F=b._readableState;d("pipeOnDrain",F.awaitDrain),F.awaitDrain&&F.awaitDrain--,F.awaitDrain===0&&t(b,"data")&&(F.flowing=!0,A(b))}}K.prototype.unpipe=function(b){var y=this._readableState,F={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,F),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var j=0;j<Z;j++)U[j].emit("unpipe",this,{hasUnpiped:!1});return this}var k=X(y.pipes,b);return k===-1?this:(y.pipes.splice(k,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,F),this)},K.prototype.on=function(b,y){var F=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||ye.nextTick(D,this)),F},K.prototype.addListener=K.prototype.on,K.prototype.removeListener=function(b,y){var F=r.prototype.removeListener.call(this,b,y);return b==="readable"&&ye.nextTick(T,this),F},K.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&ye.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function D(b){d("readable nexttick read 0"),b.read(0)}K.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,ye.nextTick(Q,b,y))}function Q(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}K.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}K.prototype.wrap=function(b){var y=this,F=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),F.decoder&&!F.ended){var k=F.decoder.end();k&&k.length&&y.push(k)}y.push(null)}),b.on("data",function(k){if(d("wrapped data"),F.decoder&&(k=F.decoder.write(k)),!(F.objectMode&&k==null)&&!(!F.objectMode&&(!k||!k.length))){var H=y.push(k);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var j=0;j<G.length;j++)b.on(G[j],this.emit.bind(this,G[j]));return this._read=function(k){d("wrapped _read",k),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(K.prototype[Symbol.asyncIterator]=function(){return N===void 0&&(N=bK()),N(this)}),Object.defineProperty(K.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(K.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(K.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),K._fromList=E,Object.defineProperty(K.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var F;return y.objectMode?F=y.buffer.shift():!b||b>=y.length?(y.decoder?F=y.buffer.join(""):y.buffer.length===1?F=y.buffer.first():F=y.buffer.concat(y.length),y.buffer.clear()):F=y.buffer.consume(b,y.decoder),F}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,ye.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var F=y._writableState;(!F||F.autoDestroy&&F.finished)&&y.destroy()}}typeof Symbol=="function"&&(K.from=function(b,y){return $===void 0&&($=wK()),$(K,b,y)});function X(b,y){for(var F=0,U=b.length;F<U;F++)if(b[F]===y)return F;return-1}return G0}var fE=oo,Dc=Ha.codes,_K=Dc.ERR_METHOD_NOT_IMPLEMENTED,MK=Dc.ERR_MULTIPLE_CALLBACK,SK=Dc.ERR_TRANSFORM_ALREADY_TRANSFORMING,xK=Dc.ERR_TRANSFORM_WITH_LENGTH_0,Fc=Us();Ye(oo,Fc);function EK(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new MK);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function oo(e){if(!(this instanceof oo))return new oo(e);Fc.call(this,e),this._transformState={afterTransform:EK.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",RK)}function RK(){var e=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(t,r){c2(e,t,r)}):c2(this,null,null)}oo.prototype.push=function(e,t){return this._transformState.needTransform=!1,Fc.prototype.push.call(this,e,t)};oo.prototype._transform=function(e,t,r){r(new _K("_transform()"))};oo.prototype._write=function(e,t,r){var i=this._transformState;if(i.writecb=r,i.writechunk=e,i.writeencoding=t,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};oo.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};oo.prototype._destroy=function(e,t){Fc.prototype._destroy.call(this,e,function(r){t(r)})};function c2(e,t,r){if(t)return e.emit("error",t);if(r!=null&&e.push(r),e._writableState.length)throw new xK;if(e._transformState.transforming)throw new SK;return e.push(null)}var AK=yl,lE=fE;Ye(yl,lE);function yl(e){if(!(this instanceof yl))return new yl(e);lE.call(this,e)}yl.prototype._transform=function(e,t,r){r(null,e)};var Y0;function TK(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var uE=Ha.codes,OK=uE.ERR_MISSING_ARGS,IK=uE.ERR_STREAM_DESTROYED;function d2(e){if(e)throw e}function PK(e){return e.setHeader&&typeof e.abort=="function"}function CK(e,t,r,i){i=TK(i);var a=!1;e.on("close",function(){a=!0}),Y0===void 0&&(Y0=gm),Y0(e,{readable:t,writable:r},function(l){if(l)return i(l);a=!0,i()});var n=!1;return function(l){if(!a&&!n){if(n=!0,PK(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();i(l||new IK("pipe"))}}}function p2(e){e()}function BK(e,t){return e.pipe(t)}function LK(e){return!e.length||typeof e[e.length-1]!="function"?d2:e.pop()}function NK(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=LK(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new OK("streams");var a,n=t.map(function(l,h){var d=h<t.length-1,m=h>0;return CK(l,d,m,function(_){a||(a=_),_&&n.forEach(p2),!d&&(n.forEach(p2),i(a))})});return t.reduce(BK)}var kK=NK;(function(e,t){t=e.exports=sE(),t.Stream=t,t.Readable=t,t.Writable=oE(),t.Duplex=Us(),t.Transform=fE,t.PassThrough=AK,t.finished=gm,t.pipeline=kK})(Tv,Tv.exports);var $K=Tv.exports,Lf={exports:{}},mm={exports:{}};mm.exports;(function(e){(function(t,r){function i(f,u){if(!f)throw new Error(u||"Assertion failed")}function a(f,u){f.super_=u;var c=function(){};c.prototype=u.prototype,f.prototype=new c,f.prototype.constructor=f}function n(f,u,c){if(n.isBN(f))return f;this.negative=0,this.words=null,this.length=0,this.red=null,f!==null&&((u==="le"||u==="be")&&(c=u,u=10),this._init(f||0,u||10,c||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Le.Buffer}catch{}n.isBN=function(u){return u instanceof n?!0:u!==null&&typeof u=="object"&&u.constructor.wordSize===n.wordSize&&Array.isArray(u.words)},n.max=function(u,c){return u.cmp(c)>0?u:c},n.min=function(u,c){return u.cmp(c)<0?u:c},n.prototype._init=function(u,c,p){if(typeof u=="number")return this._initNumber(u,c,p);if(typeof u=="object")return this._initArray(u,c,p);c==="hex"&&(c=16),i(c===(c|0)&&c>=2&&c<=36),u=u.toString().replace(/\s+/g,"");var w=0;u[0]==="-"&&(w++,this.negative=1),w<u.length&&(c===16?this._parseHex(u,w,p):(this._parseBase(u,c,w),p==="le"&&this._initArray(this.toArray(),c,p)))},n.prototype._initNumber=function(u,c,p){u<0&&(this.negative=1,u=-u),u<67108864?(this.words=[u&67108863],this.length=1):u<4503599627370496?(this.words=[u&67108863,u/67108864&67108863],this.length=2):(i(u<9007199254740992),this.words=[u&67108863,u/67108864&67108863,1],this.length=3),p==="le"&&this._initArray(this.toArray(),c,p)},n.prototype._initArray=function(u,c,p){if(i(typeof u.length=="number"),u.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(u.length/3),this.words=new Array(this.length);for(var w=0;w<this.length;w++)this.words[w]=0;var x,g,s=0;if(p==="be")for(w=u.length-1,x=0;w>=0;w-=3)g=u[w]|u[w-1]<<8|u[w-2]<<16,this.words[x]|=g<<s&67108863,this.words[x+1]=g>>>26-s&67108863,s+=24,s>=26&&(s-=26,x++);else if(p==="le")for(w=0,x=0;w<u.length;w+=3)g=u[w]|u[w+1]<<8|u[w+2]<<16,this.words[x]|=g<<s&67108863,this.words[x+1]=g>>>26-s&67108863,s+=24,s>=26&&(s-=26,x++);return this._strip()};function h(f,u){var c=f.charCodeAt(u);if(c>=48&&c<=57)return c-48;if(c>=65&&c<=70)return c-55;if(c>=97&&c<=102)return c-87;i(!1,"Invalid character in "+f)}function d(f,u,c){var p=h(f,c);return c-1>=u&&(p|=h(f,c-1)<<4),p}n.prototype._parseHex=function(u,c,p){this.length=Math.ceil((u.length-c)/6),this.words=new Array(this.length);for(var w=0;w<this.length;w++)this.words[w]=0;var x=0,g=0,s;if(p==="be")for(w=u.length-1;w>=c;w-=2)s=d(u,c,w)<<x,this.words[g]|=s&67108863,x>=18?(x-=18,g+=1,this.words[g]|=s>>>26):x+=8;else{var v=u.length-c;for(w=v%2===0?c+1:c;w<u.length;w+=2)s=d(u,c,w)<<x,this.words[g]|=s&67108863,x>=18?(x-=18,g+=1,this.words[g]|=s>>>26):x+=8}this._strip()};function m(f,u,c,p){for(var w=0,x=0,g=Math.min(f.length,c),s=u;s<g;s++){var v=f.charCodeAt(s)-48;w*=p,v>=49?x=v-49+10:v>=17?x=v-17+10:x=v,i(v>=0&&x<p,"Invalid character"),w+=x}return w}n.prototype._parseBase=function(u,c,p){this.words=[0],this.length=1;for(var w=0,x=1;x<=67108863;x*=c)w++;w--,x=x/c|0;for(var g=u.length-p,s=g%w,v=Math.min(g,g-s)+p,T=0,D=p;D<v;D+=w)T=m(u,D,D+w,c),this.imuln(x),this.words[0]+T<67108864?this.words[0]+=T:this._iaddn(T);if(s!==0){var Y=1;for(T=m(u,D,u.length,c),D=0;D<s;D++)Y*=c;this.imuln(Y),this.words[0]+T<67108864?this.words[0]+=T:this._iaddn(T)}this._strip()},n.prototype.copy=function(u){u.words=new Array(this.length);for(var c=0;c<this.length;c++)u.words[c]=this.words[c];u.length=this.length,u.negative=this.negative,u.red=this.red};function _(f,u){f.words=u.words,f.length=u.length,f.negative=u.negative,f.red=u.red}if(n.prototype._move=function(u){_(u,this)},n.prototype.clone=function(){var u=new n(null);return this.copy(u),u},n.prototype._expand=function(u){for(;this.length<u;)this.words[this.length++]=0;return this},n.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=S}catch{n.prototype.inspect=S}else n.prototype.inspect=S;function S(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var R=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],O=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(u,c){u=u||10,c=c|0||1;var p;if(u===16||u==="hex"){p="";for(var w=0,x=0,g=0;g<this.length;g++){var s=this.words[g],v=((s<<w|x)&16777215).toString(16);x=s>>>24-w&16777215,w+=2,w>=26&&(w-=26,g--),x!==0||g!==this.length-1?p=R[6-v.length]+v+p:p=v+p}for(x!==0&&(p=x.toString(16)+p);p.length%c!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}if(u===(u|0)&&u>=2&&u<=36){var T=I[u],D=O[u];p="";var Y=this.clone();for(Y.negative=0;!Y.isZero();){var Q=Y.modrn(D).toString(u);Y=Y.idivn(D),Y.isZero()?p=Q+p:p=R[T-Q.length]+Q+p}for(this.isZero()&&(p="0"+p);p.length%c!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var u=this.words[0];return this.length===2?u+=this.words[1]*67108864:this.length===3&&this.words[2]===1?u+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-u:u},n.prototype.toJSON=function(){return this.toString(16,2)},l&&(n.prototype.toBuffer=function(u,c){return this.toArrayLike(l,u,c)}),n.prototype.toArray=function(u,c){return this.toArrayLike(Array,u,c)};var L=function(u,c){return u.allocUnsafe?u.allocUnsafe(c):new u(c)};n.prototype.toArrayLike=function(u,c,p){this._strip();var w=this.byteLength(),x=p||Math.max(1,w);i(w<=x,"byte array longer than desired length"),i(x>0,"Requested array length <= 0");var g=L(u,x),s=c==="le"?"LE":"BE";return this["_toArrayLike"+s](g,w),g},n.prototype._toArrayLikeLE=function(u,c){for(var p=0,w=0,x=0,g=0;x<this.length;x++){var s=this.words[x]<<g|w;u[p++]=s&255,p<u.length&&(u[p++]=s>>8&255),p<u.length&&(u[p++]=s>>16&255),g===6?(p<u.length&&(u[p++]=s>>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(p<u.length)for(u[p++]=w;p<u.length;)u[p++]=0},n.prototype._toArrayLikeBE=function(u,c){for(var p=u.length-1,w=0,x=0,g=0;x<this.length;x++){var s=this.words[x]<<g|w;u[p--]=s&255,p>=0&&(u[p--]=s>>8&255),p>=0&&(u[p--]=s>>16&255),g===6?(p>=0&&(u[p--]=s>>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(p>=0)for(u[p--]=w;p>=0;)u[p--]=0},Math.clz32?n.prototype._countBits=function(u){return 32-Math.clz32(u)}:n.prototype._countBits=function(u){var c=u,p=0;return c>=4096&&(p+=13,c>>>=13),c>=64&&(p+=7,c>>>=7),c>=8&&(p+=4,c>>>=4),c>=2&&(p+=2,c>>>=2),p+c},n.prototype._zeroBits=function(u){if(u===0)return 26;var c=u,p=0;return c&8191||(p+=13,c>>>=13),c&127||(p+=7,c>>>=7),c&15||(p+=4,c>>>=4),c&3||(p+=2,c>>>=2),c&1||p++,p},n.prototype.bitLength=function(){var u=this.words[this.length-1],c=this._countBits(u);return(this.length-1)*26+c};function B(f){for(var u=new Array(f.bitLength()),c=0;c<u.length;c++){var p=c/26|0,w=c%26;u[c]=f.words[p]>>>w&1}return u}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var u=0,c=0;c<this.length;c++){var p=this._zeroBits(this.words[c]);if(u+=p,p!==26)break}return u},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(u){return this.negative!==0?this.abs().inotn(u).iaddn(1):this.clone()},n.prototype.fromTwos=function(u){return this.testn(u-1)?this.notn(u).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(u){for(;this.length<u.length;)this.words[this.length++]=0;for(var c=0;c<u.length;c++)this.words[c]=this.words[c]|u.words[c];return this._strip()},n.prototype.ior=function(u){return i((this.negative|u.negative)===0),this.iuor(u)},n.prototype.or=function(u){return this.length>u.length?this.clone().ior(u):u.clone().ior(this)},n.prototype.uor=function(u){return this.length>u.length?this.clone().iuor(u):u.clone().iuor(this)},n.prototype.iuand=function(u){var c;this.length>u.length?c=u:c=this;for(var p=0;p<c.length;p++)this.words[p]=this.words[p]&u.words[p];return this.length=c.length,this._strip()},n.prototype.iand=function(u){return i((this.negative|u.negative)===0),this.iuand(u)},n.prototype.and=function(u){return this.length>u.length?this.clone().iand(u):u.clone().iand(this)},n.prototype.uand=function(u){return this.length>u.length?this.clone().iuand(u):u.clone().iuand(this)},n.prototype.iuxor=function(u){var c,p;this.length>u.length?(c=this,p=u):(c=u,p=this);for(var w=0;w<p.length;w++)this.words[w]=c.words[w]^p.words[w];if(this!==c)for(;w<c.length;w++)this.words[w]=c.words[w];return this.length=c.length,this._strip()},n.prototype.ixor=function(u){return i((this.negative|u.negative)===0),this.iuxor(u)},n.prototype.xor=function(u){return this.length>u.length?this.clone().ixor(u):u.clone().ixor(this)},n.prototype.uxor=function(u){return this.length>u.length?this.clone().iuxor(u):u.clone().iuxor(this)},n.prototype.inotn=function(u){i(typeof u=="number"&&u>=0);var c=Math.ceil(u/26)|0,p=u%26;this._expand(c),p>0&&c--;for(var w=0;w<c;w++)this.words[w]=~this.words[w]&67108863;return p>0&&(this.words[w]=~this.words[w]&67108863>>26-p),this._strip()},n.prototype.notn=function(u){return this.clone().inotn(u)},n.prototype.setn=function(u,c){i(typeof u=="number"&&u>=0);var p=u/26|0,w=u%26;return this._expand(p+1),c?this.words[p]=this.words[p]|1<<w:this.words[p]=this.words[p]&~(1<<w),this._strip()},n.prototype.iadd=function(u){var c;if(this.negative!==0&&u.negative===0)return this.negative=0,c=this.isub(u),this.negative^=1,this._normSign();if(this.negative===0&&u.negative!==0)return u.negative=0,c=this.isub(u),u.negative=1,c._normSign();var p,w;this.length>u.length?(p=this,w=u):(p=u,w=this);for(var x=0,g=0;g<w.length;g++)c=(p.words[g]|0)+(w.words[g]|0)+x,this.words[g]=c&67108863,x=c>>>26;for(;x!==0&&g<p.length;g++)c=(p.words[g]|0)+x,this.words[g]=c&67108863,x=c>>>26;if(this.length=p.length,x!==0)this.words[this.length]=x,this.length++;else if(p!==this)for(;g<p.length;g++)this.words[g]=p.words[g];return this},n.prototype.add=function(u){var c;return u.negative!==0&&this.negative===0?(u.negative=0,c=this.sub(u),u.negative^=1,c):u.negative===0&&this.negative!==0?(this.negative=0,c=u.sub(this),this.negative=1,c):this.length>u.length?this.clone().iadd(u):u.clone().iadd(this)},n.prototype.isub=function(u){if(u.negative!==0){u.negative=0;var c=this.iadd(u);return u.negative=1,c._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(u),this.negative=1,this._normSign();var p=this.cmp(u);if(p===0)return this.negative=0,this.length=1,this.words[0]=0,this;var w,x;p>0?(w=this,x=u):(w=u,x=this);for(var g=0,s=0;s<x.length;s++)c=(w.words[s]|0)-(x.words[s]|0)+g,g=c>>26,this.words[s]=c&67108863;for(;g!==0&&s<w.length;s++)c=(w.words[s]|0)+g,g=c>>26,this.words[s]=c&67108863;if(g===0&&s<w.length&&w!==this)for(;s<w.length;s++)this.words[s]=w.words[s];return this.length=Math.max(this.length,s),w!==this&&(this.negative=1),this._strip()},n.prototype.sub=function(u){return this.clone().isub(u)};function P(f,u,c){c.negative=u.negative^f.negative;var p=f.length+u.length|0;c.length=p,p=p-1|0;var w=f.words[0]|0,x=u.words[0]|0,g=w*x,s=g&67108863,v=g/67108864|0;c.words[0]=s;for(var T=1;T<p;T++){for(var D=v>>>26,Y=v&67108863,Q=Math.min(T,u.length-1),A=Math.max(0,T-f.length+1);A<=Q;A++){var E=T-A|0;w=f.words[E]|0,x=u.words[A]|0,g=w*x+Y,D+=g/67108864|0,Y=g&67108863}c.words[T]=Y|0,v=D|0}return v!==0?c.words[T]=v|0:c.length--,c._strip()}var C=function(u,c,p){var w=u.words,x=c.words,g=p.words,s=0,v,T,D,Y=w[0]|0,Q=Y&8191,A=Y>>>13,E=w[1]|0,q=E&8191,V=E>>>13,X=w[2]|0,b=X&8191,y=X>>>13,F=w[3]|0,U=F&8191,Z=F>>>13,j=w[4]|0,k=j&8191,H=j>>>13,z=w[5]|0,oe=z&8191,ee=z>>>13,ne=w[6]|0,me=ne&8191,he=ne>>>13,ue=w[7]|0,xe=ue&8191,le=ue>>>13,ve=w[8]|0,ce=ve&8191,ie=ve>>>13,fe=w[9]|0,Ee=fe&8191,de=fe>>>13,be=x[0]|0,Ke=be&8191,we=be>>>13,Se=x[1]|0,qe=Se&8191,ge=Se>>>13,Me=x[2]|0,Ve=Me&8191,_e=Me>>>13,Be=x[3]|0,ot=Be&8191,Ae=Be>>>13,Ne=x[4]|0,st=Ne&8191,Pe=Ne>>>13,De=x[5]|0,ut=De&8191,Re=De>>>13,Fe=x[6]|0,ht=Fe&8191,Te=Fe>>>13,ke=x[7]|0,ct=ke&8191,Oe=ke>>>13,je=x[8]|0,ft=je&8191,Ie=je>>>13,$e=x[9]|0,tt=$e&8191,et=$e>>>13;p.negative=u.negative^c.negative,p.length=19,v=Math.imul(Q,Ke),T=Math.imul(Q,we),T=T+Math.imul(A,Ke)|0,D=Math.imul(A,we);var Et=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(Et>>>26)|0,Et&=67108863,v=Math.imul(q,Ke),T=Math.imul(q,we),T=T+Math.imul(V,Ke)|0,D=Math.imul(V,we),v=v+Math.imul(Q,qe)|0,T=T+Math.imul(Q,ge)|0,T=T+Math.imul(A,qe)|0,D=D+Math.imul(A,ge)|0;var It=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(It>>>26)|0,It&=67108863,v=Math.imul(b,Ke),T=Math.imul(b,we),T=T+Math.imul(y,Ke)|0,D=Math.imul(y,we),v=v+Math.imul(q,qe)|0,T=T+Math.imul(q,ge)|0,T=T+Math.imul(V,qe)|0,D=D+Math.imul(V,ge)|0,v=v+Math.imul(Q,Ve)|0,T=T+Math.imul(Q,_e)|0,T=T+Math.imul(A,Ve)|0,D=D+Math.imul(A,_e)|0;var Pt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,v=Math.imul(U,Ke),T=Math.imul(U,we),T=T+Math.imul(Z,Ke)|0,D=Math.imul(Z,we),v=v+Math.imul(b,qe)|0,T=T+Math.imul(b,ge)|0,T=T+Math.imul(y,qe)|0,D=D+Math.imul(y,ge)|0,v=v+Math.imul(q,Ve)|0,T=T+Math.imul(q,_e)|0,T=T+Math.imul(V,Ve)|0,D=D+Math.imul(V,_e)|0,v=v+Math.imul(Q,ot)|0,T=T+Math.imul(Q,Ae)|0,T=T+Math.imul(A,ot)|0,D=D+Math.imul(A,Ae)|0;var Bt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,v=Math.imul(k,Ke),T=Math.imul(k,we),T=T+Math.imul(H,Ke)|0,D=Math.imul(H,we),v=v+Math.imul(U,qe)|0,T=T+Math.imul(U,ge)|0,T=T+Math.imul(Z,qe)|0,D=D+Math.imul(Z,ge)|0,v=v+Math.imul(b,Ve)|0,T=T+Math.imul(b,_e)|0,T=T+Math.imul(y,Ve)|0,D=D+Math.imul(y,_e)|0,v=v+Math.imul(q,ot)|0,T=T+Math.imul(q,Ae)|0,T=T+Math.imul(V,ot)|0,D=D+Math.imul(V,Ae)|0,v=v+Math.imul(Q,st)|0,T=T+Math.imul(Q,Pe)|0,T=T+Math.imul(A,st)|0,D=D+Math.imul(A,Pe)|0;var Dt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,v=Math.imul(oe,Ke),T=Math.imul(oe,we),T=T+Math.imul(ee,Ke)|0,D=Math.imul(ee,we),v=v+Math.imul(k,qe)|0,T=T+Math.imul(k,ge)|0,T=T+Math.imul(H,qe)|0,D=D+Math.imul(H,ge)|0,v=v+Math.imul(U,Ve)|0,T=T+Math.imul(U,_e)|0,T=T+Math.imul(Z,Ve)|0,D=D+Math.imul(Z,_e)|0,v=v+Math.imul(b,ot)|0,T=T+Math.imul(b,Ae)|0,T=T+Math.imul(y,ot)|0,D=D+Math.imul(y,Ae)|0,v=v+Math.imul(q,st)|0,T=T+Math.imul(q,Pe)|0,T=T+Math.imul(V,st)|0,D=D+Math.imul(V,Pe)|0,v=v+Math.imul(Q,ut)|0,T=T+Math.imul(Q,Re)|0,T=T+Math.imul(A,ut)|0,D=D+Math.imul(A,Re)|0;var qt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(qt>>>26)|0,qt&=67108863,v=Math.imul(me,Ke),T=Math.imul(me,we),T=T+Math.imul(he,Ke)|0,D=Math.imul(he,we),v=v+Math.imul(oe,qe)|0,T=T+Math.imul(oe,ge)|0,T=T+Math.imul(ee,qe)|0,D=D+Math.imul(ee,ge)|0,v=v+Math.imul(k,Ve)|0,T=T+Math.imul(k,_e)|0,T=T+Math.imul(H,Ve)|0,D=D+Math.imul(H,_e)|0,v=v+Math.imul(U,ot)|0,T=T+Math.imul(U,Ae)|0,T=T+Math.imul(Z,ot)|0,D=D+Math.imul(Z,Ae)|0,v=v+Math.imul(b,st)|0,T=T+Math.imul(b,Pe)|0,T=T+Math.imul(y,st)|0,D=D+Math.imul(y,Pe)|0,v=v+Math.imul(q,ut)|0,T=T+Math.imul(q,Re)|0,T=T+Math.imul(V,ut)|0,D=D+Math.imul(V,Re)|0,v=v+Math.imul(Q,ht)|0,T=T+Math.imul(Q,Te)|0,T=T+Math.imul(A,ht)|0,D=D+Math.imul(A,Te)|0;var Wt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,v=Math.imul(xe,Ke),T=Math.imul(xe,we),T=T+Math.imul(le,Ke)|0,D=Math.imul(le,we),v=v+Math.imul(me,qe)|0,T=T+Math.imul(me,ge)|0,T=T+Math.imul(he,qe)|0,D=D+Math.imul(he,ge)|0,v=v+Math.imul(oe,Ve)|0,T=T+Math.imul(oe,_e)|0,T=T+Math.imul(ee,Ve)|0,D=D+Math.imul(ee,_e)|0,v=v+Math.imul(k,ot)|0,T=T+Math.imul(k,Ae)|0,T=T+Math.imul(H,ot)|0,D=D+Math.imul(H,Ae)|0,v=v+Math.imul(U,st)|0,T=T+Math.imul(U,Pe)|0,T=T+Math.imul(Z,st)|0,D=D+Math.imul(Z,Pe)|0,v=v+Math.imul(b,ut)|0,T=T+Math.imul(b,Re)|0,T=T+Math.imul(y,ut)|0,D=D+Math.imul(y,Re)|0,v=v+Math.imul(q,ht)|0,T=T+Math.imul(q,Te)|0,T=T+Math.imul(V,ht)|0,D=D+Math.imul(V,Te)|0,v=v+Math.imul(Q,ct)|0,T=T+Math.imul(Q,Oe)|0,T=T+Math.imul(A,ct)|0,D=D+Math.imul(A,Oe)|0;var Lt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,v=Math.imul(ce,Ke),T=Math.imul(ce,we),T=T+Math.imul(ie,Ke)|0,D=Math.imul(ie,we),v=v+Math.imul(xe,qe)|0,T=T+Math.imul(xe,ge)|0,T=T+Math.imul(le,qe)|0,D=D+Math.imul(le,ge)|0,v=v+Math.imul(me,Ve)|0,T=T+Math.imul(me,_e)|0,T=T+Math.imul(he,Ve)|0,D=D+Math.imul(he,_e)|0,v=v+Math.imul(oe,ot)|0,T=T+Math.imul(oe,Ae)|0,T=T+Math.imul(ee,ot)|0,D=D+Math.imul(ee,Ae)|0,v=v+Math.imul(k,st)|0,T=T+Math.imul(k,Pe)|0,T=T+Math.imul(H,st)|0,D=D+Math.imul(H,Pe)|0,v=v+Math.imul(U,ut)|0,T=T+Math.imul(U,Re)|0,T=T+Math.imul(Z,ut)|0,D=D+Math.imul(Z,Re)|0,v=v+Math.imul(b,ht)|0,T=T+Math.imul(b,Te)|0,T=T+Math.imul(y,ht)|0,D=D+Math.imul(y,Te)|0,v=v+Math.imul(q,ct)|0,T=T+Math.imul(q,Oe)|0,T=T+Math.imul(V,ct)|0,D=D+Math.imul(V,Oe)|0,v=v+Math.imul(Q,ft)|0,T=T+Math.imul(Q,Ie)|0,T=T+Math.imul(A,ft)|0,D=D+Math.imul(A,Ie)|0;var dt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(dt>>>26)|0,dt&=67108863,v=Math.imul(Ee,Ke),T=Math.imul(Ee,we),T=T+Math.imul(de,Ke)|0,D=Math.imul(de,we),v=v+Math.imul(ce,qe)|0,T=T+Math.imul(ce,ge)|0,T=T+Math.imul(ie,qe)|0,D=D+Math.imul(ie,ge)|0,v=v+Math.imul(xe,Ve)|0,T=T+Math.imul(xe,_e)|0,T=T+Math.imul(le,Ve)|0,D=D+Math.imul(le,_e)|0,v=v+Math.imul(me,ot)|0,T=T+Math.imul(me,Ae)|0,T=T+Math.imul(he,ot)|0,D=D+Math.imul(he,Ae)|0,v=v+Math.imul(oe,st)|0,T=T+Math.imul(oe,Pe)|0,T=T+Math.imul(ee,st)|0,D=D+Math.imul(ee,Pe)|0,v=v+Math.imul(k,ut)|0,T=T+Math.imul(k,Re)|0,T=T+Math.imul(H,ut)|0,D=D+Math.imul(H,Re)|0,v=v+Math.imul(U,ht)|0,T=T+Math.imul(U,Te)|0,T=T+Math.imul(Z,ht)|0,D=D+Math.imul(Z,Te)|0,v=v+Math.imul(b,ct)|0,T=T+Math.imul(b,Oe)|0,T=T+Math.imul(y,ct)|0,D=D+Math.imul(y,Oe)|0,v=v+Math.imul(q,ft)|0,T=T+Math.imul(q,Ie)|0,T=T+Math.imul(V,ft)|0,D=D+Math.imul(V,Ie)|0,v=v+Math.imul(Q,tt)|0,T=T+Math.imul(Q,et)|0,T=T+Math.imul(A,tt)|0,D=D+Math.imul(A,et)|0;var Tt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,v=Math.imul(Ee,qe),T=Math.imul(Ee,ge),T=T+Math.imul(de,qe)|0,D=Math.imul(de,ge),v=v+Math.imul(ce,Ve)|0,T=T+Math.imul(ce,_e)|0,T=T+Math.imul(ie,Ve)|0,D=D+Math.imul(ie,_e)|0,v=v+Math.imul(xe,ot)|0,T=T+Math.imul(xe,Ae)|0,T=T+Math.imul(le,ot)|0,D=D+Math.imul(le,Ae)|0,v=v+Math.imul(me,st)|0,T=T+Math.imul(me,Pe)|0,T=T+Math.imul(he,st)|0,D=D+Math.imul(he,Pe)|0,v=v+Math.imul(oe,ut)|0,T=T+Math.imul(oe,Re)|0,T=T+Math.imul(ee,ut)|0,D=D+Math.imul(ee,Re)|0,v=v+Math.imul(k,ht)|0,T=T+Math.imul(k,Te)|0,T=T+Math.imul(H,ht)|0,D=D+Math.imul(H,Te)|0,v=v+Math.imul(U,ct)|0,T=T+Math.imul(U,Oe)|0,T=T+Math.imul(Z,ct)|0,D=D+Math.imul(Z,Oe)|0,v=v+Math.imul(b,ft)|0,T=T+Math.imul(b,Ie)|0,T=T+Math.imul(y,ft)|0,D=D+Math.imul(y,Ie)|0,v=v+Math.imul(q,tt)|0,T=T+Math.imul(q,et)|0,T=T+Math.imul(V,tt)|0,D=D+Math.imul(V,et)|0;var Mt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,v=Math.imul(Ee,Ve),T=Math.imul(Ee,_e),T=T+Math.imul(de,Ve)|0,D=Math.imul(de,_e),v=v+Math.imul(ce,ot)|0,T=T+Math.imul(ce,Ae)|0,T=T+Math.imul(ie,ot)|0,D=D+Math.imul(ie,Ae)|0,v=v+Math.imul(xe,st)|0,T=T+Math.imul(xe,Pe)|0,T=T+Math.imul(le,st)|0,D=D+Math.imul(le,Pe)|0,v=v+Math.imul(me,ut)|0,T=T+Math.imul(me,Re)|0,T=T+Math.imul(he,ut)|0,D=D+Math.imul(he,Re)|0,v=v+Math.imul(oe,ht)|0,T=T+Math.imul(oe,Te)|0,T=T+Math.imul(ee,ht)|0,D=D+Math.imul(ee,Te)|0,v=v+Math.imul(k,ct)|0,T=T+Math.imul(k,Oe)|0,T=T+Math.imul(H,ct)|0,D=D+Math.imul(H,Oe)|0,v=v+Math.imul(U,ft)|0,T=T+Math.imul(U,Ie)|0,T=T+Math.imul(Z,ft)|0,D=D+Math.imul(Z,Ie)|0,v=v+Math.imul(b,tt)|0,T=T+Math.imul(b,et)|0,T=T+Math.imul(y,tt)|0,D=D+Math.imul(y,et)|0;var bt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(bt>>>26)|0,bt&=67108863,v=Math.imul(Ee,ot),T=Math.imul(Ee,Ae),T=T+Math.imul(de,ot)|0,D=Math.imul(de,Ae),v=v+Math.imul(ce,st)|0,T=T+Math.imul(ce,Pe)|0,T=T+Math.imul(ie,st)|0,D=D+Math.imul(ie,Pe)|0,v=v+Math.imul(xe,ut)|0,T=T+Math.imul(xe,Re)|0,T=T+Math.imul(le,ut)|0,D=D+Math.imul(le,Re)|0,v=v+Math.imul(me,ht)|0,T=T+Math.imul(me,Te)|0,T=T+Math.imul(he,ht)|0,D=D+Math.imul(he,Te)|0,v=v+Math.imul(oe,ct)|0,T=T+Math.imul(oe,Oe)|0,T=T+Math.imul(ee,ct)|0,D=D+Math.imul(ee,Oe)|0,v=v+Math.imul(k,ft)|0,T=T+Math.imul(k,Ie)|0,T=T+Math.imul(H,ft)|0,D=D+Math.imul(H,Ie)|0,v=v+Math.imul(U,tt)|0,T=T+Math.imul(U,et)|0,T=T+Math.imul(Z,tt)|0,D=D+Math.imul(Z,et)|0;var Ct=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,v=Math.imul(Ee,st),T=Math.imul(Ee,Pe),T=T+Math.imul(de,st)|0,D=Math.imul(de,Pe),v=v+Math.imul(ce,ut)|0,T=T+Math.imul(ce,Re)|0,T=T+Math.imul(ie,ut)|0,D=D+Math.imul(ie,Re)|0,v=v+Math.imul(xe,ht)|0,T=T+Math.imul(xe,Te)|0,T=T+Math.imul(le,ht)|0,D=D+Math.imul(le,Te)|0,v=v+Math.imul(me,ct)|0,T=T+Math.imul(me,Oe)|0,T=T+Math.imul(he,ct)|0,D=D+Math.imul(he,Oe)|0,v=v+Math.imul(oe,ft)|0,T=T+Math.imul(oe,Ie)|0,T=T+Math.imul(ee,ft)|0,D=D+Math.imul(ee,Ie)|0,v=v+Math.imul(k,tt)|0,T=T+Math.imul(k,et)|0,T=T+Math.imul(H,tt)|0,D=D+Math.imul(H,et)|0;var gt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(gt>>>26)|0,gt&=67108863,v=Math.imul(Ee,ut),T=Math.imul(Ee,Re),T=T+Math.imul(de,ut)|0,D=Math.imul(de,Re),v=v+Math.imul(ce,ht)|0,T=T+Math.imul(ce,Te)|0,T=T+Math.imul(ie,ht)|0,D=D+Math.imul(ie,Te)|0,v=v+Math.imul(xe,ct)|0,T=T+Math.imul(xe,Oe)|0,T=T+Math.imul(le,ct)|0,D=D+Math.imul(le,Oe)|0,v=v+Math.imul(me,ft)|0,T=T+Math.imul(me,Ie)|0,T=T+Math.imul(he,ft)|0,D=D+Math.imul(he,Ie)|0,v=v+Math.imul(oe,tt)|0,T=T+Math.imul(oe,et)|0,T=T+Math.imul(ee,tt)|0,D=D+Math.imul(ee,et)|0;var wt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(wt>>>26)|0,wt&=67108863,v=Math.imul(Ee,ht),T=Math.imul(Ee,Te),T=T+Math.imul(de,ht)|0,D=Math.imul(de,Te),v=v+Math.imul(ce,ct)|0,T=T+Math.imul(ce,Oe)|0,T=T+Math.imul(ie,ct)|0,D=D+Math.imul(ie,Oe)|0,v=v+Math.imul(xe,ft)|0,T=T+Math.imul(xe,Ie)|0,T=T+Math.imul(le,ft)|0,D=D+Math.imul(le,Ie)|0,v=v+Math.imul(me,tt)|0,T=T+Math.imul(me,et)|0,T=T+Math.imul(he,tt)|0,D=D+Math.imul(he,et)|0;var Ft=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,v=Math.imul(Ee,ct),T=Math.imul(Ee,Oe),T=T+Math.imul(de,ct)|0,D=Math.imul(de,Oe),v=v+Math.imul(ce,ft)|0,T=T+Math.imul(ce,Ie)|0,T=T+Math.imul(ie,ft)|0,D=D+Math.imul(ie,Ie)|0,v=v+Math.imul(xe,tt)|0,T=T+Math.imul(xe,et)|0,T=T+Math.imul(le,tt)|0,D=D+Math.imul(le,et)|0;var jt=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(jt>>>26)|0,jt&=67108863,v=Math.imul(Ee,ft),T=Math.imul(Ee,Ie),T=T+Math.imul(de,ft)|0,D=Math.imul(de,Ie),v=v+Math.imul(ce,tt)|0,T=T+Math.imul(ce,et)|0,T=T+Math.imul(ie,tt)|0,D=D+Math.imul(ie,et)|0;var vo=(s+v|0)+((T&8191)<<13)|0;s=(D+(T>>>13)|0)+(vo>>>26)|0,vo&=67108863,v=Math.imul(Ee,tt),T=Math.imul(Ee,et),T=T+Math.imul(de,tt)|0,D=Math.imul(de,et);var $r=(s+v|0)+((T&8191)<<13)|0;return s=(D+(T>>>13)|0)+($r>>>26)|0,$r&=67108863,g[0]=Et,g[1]=It,g[2]=Pt,g[3]=Bt,g[4]=Dt,g[5]=qt,g[6]=Wt,g[7]=Lt,g[8]=dt,g[9]=Tt,g[10]=Mt,g[11]=bt,g[12]=Ct,g[13]=gt,g[14]=wt,g[15]=Ft,g[16]=jt,g[17]=vo,g[18]=$r,s!==0&&(g[19]=s,p.length++),p};Math.imul||(C=P);function N(f,u,c){c.negative=u.negative^f.negative,c.length=f.length+u.length;for(var p=0,w=0,x=0;x<c.length-1;x++){var g=w;w=0;for(var s=p&67108863,v=Math.min(x,u.length-1),T=Math.max(0,x-f.length+1);T<=v;T++){var D=x-T,Y=f.words[D]|0,Q=u.words[T]|0,A=Y*Q,E=A&67108863;g=g+(A/67108864|0)|0,E=E+s|0,s=E&67108863,g=g+(E>>>26)|0,w+=g>>>26,g&=67108863}c.words[x]=s,p=g,g=w}return p!==0?c.words[x]=p:c.length--,c._strip()}function $(f,u,c){return N(f,u,c)}n.prototype.mulTo=function(u,c){var p,w=this.length+u.length;return this.length===10&&u.length===10?p=C(this,u,c):w<63?p=P(this,u,c):w<1024?p=N(this,u,c):p=$(this,u,c),p},n.prototype.mul=function(u){var c=new n(null);return c.words=new Array(this.length+u.length),this.mulTo(u,c)},n.prototype.mulf=function(u){var c=new n(null);return c.words=new Array(this.length+u.length),$(this,u,c)},n.prototype.imul=function(u){return this.clone().mulTo(u,this)},n.prototype.imuln=function(u){var c=u<0;c&&(u=-u),i(typeof u=="number"),i(u<67108864);for(var p=0,w=0;w<this.length;w++){var x=(this.words[w]|0)*u,g=(x&67108863)+(p&67108863);p>>=26,p+=x/67108864|0,p+=g>>>26,this.words[w]=g&67108863}return p!==0&&(this.words[w]=p,this.length++),c?this.ineg():this},n.prototype.muln=function(u){return this.clone().imuln(u)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(u){var c=B(u);if(c.length===0)return new n(1);for(var p=this,w=0;w<c.length&&c[w]===0;w++,p=p.sqr());if(++w<c.length)for(var x=p.sqr();w<c.length;w++,x=x.sqr())c[w]!==0&&(p=p.mul(x));return p},n.prototype.iushln=function(u){i(typeof u=="number"&&u>=0);var c=u%26,p=(u-c)/26,w=67108863>>>26-c<<26-c,x;if(c!==0){var g=0;for(x=0;x<this.length;x++){var s=this.words[x]&w,v=(this.words[x]|0)-s<<c;this.words[x]=v|g,g=s>>>26-c}g&&(this.words[x]=g,this.length++)}if(p!==0){for(x=this.length-1;x>=0;x--)this.words[x+p]=this.words[x];for(x=0;x<p;x++)this.words[x]=0;this.length+=p}return this._strip()},n.prototype.ishln=function(u){return i(this.negative===0),this.iushln(u)},n.prototype.iushrn=function(u,c,p){i(typeof u=="number"&&u>=0);var w;c?w=(c-c%26)/26:w=0;var x=u%26,g=Math.min((u-x)/26,this.length),s=67108863^67108863>>>x<<x,v=p;if(w-=g,w=Math.max(0,w),v){for(var T=0;T<g;T++)v.words[T]=this.words[T];v.length=g}if(g!==0)if(this.length>g)for(this.length-=g,T=0;T<this.length;T++)this.words[T]=this.words[T+g];else this.words[0]=0,this.length=1;var D=0;for(T=this.length-1;T>=0&&(D!==0||T>=w);T--){var Y=this.words[T]|0;this.words[T]=D<<26-x|Y>>>x,D=Y&s}return v&&D!==0&&(v.words[v.length++]=D),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(u,c,p){return i(this.negative===0),this.iushrn(u,c,p)},n.prototype.shln=function(u){return this.clone().ishln(u)},n.prototype.ushln=function(u){return this.clone().iushln(u)},n.prototype.shrn=function(u){return this.clone().ishrn(u)},n.prototype.ushrn=function(u){return this.clone().iushrn(u)},n.prototype.testn=function(u){i(typeof u=="number"&&u>=0);var c=u%26,p=(u-c)/26,w=1<<c;if(this.length<=p)return!1;var x=this.words[p];return!!(x&w)},n.prototype.imaskn=function(u){i(typeof u=="number"&&u>=0);var c=u%26,p=(u-c)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=p)return this;if(c!==0&&p++,this.length=Math.min(p,this.length),c!==0){var w=67108863^67108863>>>c<<c;this.words[this.length-1]&=w}return this._strip()},n.prototype.maskn=function(u){return this.clone().imaskn(u)},n.prototype.iaddn=function(u){return i(typeof u=="number"),i(u<67108864),u<0?this.isubn(-u):this.negative!==0?this.length===1&&(this.words[0]|0)<=u?(this.words[0]=u-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(u),this.negative=1,this):this._iaddn(u)},n.prototype._iaddn=function(u){this.words[0]+=u;for(var c=0;c<this.length&&this.words[c]>=67108864;c++)this.words[c]-=67108864,c===this.length-1?this.words[c+1]=1:this.words[c+1]++;return this.length=Math.max(this.length,c+1),this},n.prototype.isubn=function(u){if(i(typeof u=="number"),i(u<67108864),u<0)return this.iaddn(-u);if(this.negative!==0)return this.negative=0,this.iaddn(u),this.negative=1,this;if(this.words[0]-=u,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var c=0;c<this.length&&this.words[c]<0;c++)this.words[c]+=67108864,this.words[c+1]-=1;return this._strip()},n.prototype.addn=function(u){return this.clone().iaddn(u)},n.prototype.subn=function(u){return this.clone().isubn(u)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(u,c,p){var w=u.length+p,x;this._expand(w);var g,s=0;for(x=0;x<u.length;x++){g=(this.words[x+p]|0)+s;var v=(u.words[x]|0)*c;g-=v&67108863,s=(g>>26)-(v/67108864|0),this.words[x+p]=g&67108863}for(;x<this.length-p;x++)g=(this.words[x+p]|0)+s,s=g>>26,this.words[x+p]=g&67108863;if(s===0)return this._strip();for(i(s===-1),s=0,x=0;x<this.length;x++)g=-(this.words[x]|0)+s,s=g>>26,this.words[x]=g&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(u,c){var p=this.length-u.length,w=this.clone(),x=u,g=x.words[x.length-1]|0,s=this._countBits(g);p=26-s,p!==0&&(x=x.ushln(p),w.iushln(p),g=x.words[x.length-1]|0);var v=w.length-x.length,T;if(c!=="mod"){T=new n(null),T.length=v+1,T.words=new Array(T.length);for(var D=0;D<T.length;D++)T.words[D]=0}var Y=w.clone()._ishlnsubmul(x,1,v);Y.negative===0&&(w=Y,T&&(T.words[v]=1));for(var Q=v-1;Q>=0;Q--){var A=(w.words[x.length+Q]|0)*67108864+(w.words[x.length+Q-1]|0);for(A=Math.min(A/g|0,67108863),w._ishlnsubmul(x,A,Q);w.negative!==0;)A--,w.negative=0,w._ishlnsubmul(x,1,Q),w.isZero()||(w.negative^=1);T&&(T.words[Q]=A)}return T&&T._strip(),w._strip(),c!=="div"&&p!==0&&w.iushrn(p),{div:T||null,mod:w}},n.prototype.divmod=function(u,c,p){if(i(!u.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var w,x,g;return this.negative!==0&&u.negative===0?(g=this.neg().divmod(u,c),c!=="mod"&&(w=g.div.neg()),c!=="div"&&(x=g.mod.neg(),p&&x.negative!==0&&x.iadd(u)),{div:w,mod:x}):this.negative===0&&u.negative!==0?(g=this.divmod(u.neg(),c),c!=="mod"&&(w=g.div.neg()),{div:w,mod:g.mod}):this.negative&u.negative?(g=this.neg().divmod(u.neg(),c),c!=="div"&&(x=g.mod.neg(),p&&x.negative!==0&&x.isub(u)),{div:g.div,mod:x}):u.length>this.length||this.cmp(u)<0?{div:new n(0),mod:this}:u.length===1?c==="div"?{div:this.divn(u.words[0]),mod:null}:c==="mod"?{div:null,mod:new n(this.modrn(u.words[0]))}:{div:this.divn(u.words[0]),mod:new n(this.modrn(u.words[0]))}:this._wordDiv(u,c)},n.prototype.div=function(u){return this.divmod(u,"div",!1).div},n.prototype.mod=function(u){return this.divmod(u,"mod",!1).mod},n.prototype.umod=function(u){return this.divmod(u,"mod",!0).mod},n.prototype.divRound=function(u){var c=this.divmod(u);if(c.mod.isZero())return c.div;var p=c.div.negative!==0?c.mod.isub(u):c.mod,w=u.ushrn(1),x=u.andln(1),g=p.cmp(w);return g<0||x===1&&g===0?c.div:c.div.negative!==0?c.div.isubn(1):c.div.iaddn(1)},n.prototype.modrn=function(u){var c=u<0;c&&(u=-u),i(u<=67108863);for(var p=(1<<26)%u,w=0,x=this.length-1;x>=0;x--)w=(p*w+(this.words[x]|0))%u;return c?-w:w},n.prototype.modn=function(u){return this.modrn(u)},n.prototype.idivn=function(u){var c=u<0;c&&(u=-u),i(u<=67108863);for(var p=0,w=this.length-1;w>=0;w--){var x=(this.words[w]|0)+p*67108864;this.words[w]=x/u|0,p=x%u}return this._strip(),c?this.ineg():this},n.prototype.divn=function(u){return this.clone().idivn(u)},n.prototype.egcd=function(u){i(u.negative===0),i(!u.isZero());var c=this,p=u.clone();c.negative!==0?c=c.umod(u):c=c.clone();for(var w=new n(1),x=new n(0),g=new n(0),s=new n(1),v=0;c.isEven()&&p.isEven();)c.iushrn(1),p.iushrn(1),++v;for(var T=p.clone(),D=c.clone();!c.isZero();){for(var Y=0,Q=1;!(c.words[0]&Q)&&Y<26;++Y,Q<<=1);if(Y>0)for(c.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(T),x.isub(D)),w.iushrn(1),x.iushrn(1);for(var A=0,E=1;!(p.words[0]&E)&&A<26;++A,E<<=1);if(A>0)for(p.iushrn(A);A-- >0;)(g.isOdd()||s.isOdd())&&(g.iadd(T),s.isub(D)),g.iushrn(1),s.iushrn(1);c.cmp(p)>=0?(c.isub(p),w.isub(g),x.isub(s)):(p.isub(c),g.isub(w),s.isub(x))}return{a:g,b:s,gcd:p.iushln(v)}},n.prototype._invmp=function(u){i(u.negative===0),i(!u.isZero());var c=this,p=u.clone();c.negative!==0?c=c.umod(u):c=c.clone();for(var w=new n(1),x=new n(0),g=p.clone();c.cmpn(1)>0&&p.cmpn(1)>0;){for(var s=0,v=1;!(c.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(c.iushrn(s);s-- >0;)w.isOdd()&&w.iadd(g),w.iushrn(1);for(var T=0,D=1;!(p.words[0]&D)&&T<26;++T,D<<=1);if(T>0)for(p.iushrn(T);T-- >0;)x.isOdd()&&x.iadd(g),x.iushrn(1);c.cmp(p)>=0?(c.isub(p),w.isub(x)):(p.isub(c),x.isub(w))}var Y;return c.cmpn(1)===0?Y=w:Y=x,Y.cmpn(0)<0&&Y.iadd(u),Y},n.prototype.gcd=function(u){if(this.isZero())return u.abs();if(u.isZero())return this.abs();var c=this.clone(),p=u.clone();c.negative=0,p.negative=0;for(var w=0;c.isEven()&&p.isEven();w++)c.iushrn(1),p.iushrn(1);do{for(;c.isEven();)c.iushrn(1);for(;p.isEven();)p.iushrn(1);var x=c.cmp(p);if(x<0){var g=c;c=p,p=g}else if(x===0||p.cmpn(1)===0)break;c.isub(p)}while(!0);return p.iushln(w)},n.prototype.invm=function(u){return this.egcd(u).a.umod(u)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(u){return this.words[0]&u},n.prototype.bincn=function(u){i(typeof u=="number");var c=u%26,p=(u-c)/26,w=1<<c;if(this.length<=p)return this._expand(p+1),this.words[p]|=w,this;for(var x=w,g=p;x!==0&&g<this.length;g++){var s=this.words[g]|0;s+=x,x=s>>>26,s&=67108863,this.words[g]=s}return x!==0&&(this.words[g]=x,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(u){var c=u<0;if(this.negative!==0&&!c)return-1;if(this.negative===0&&c)return 1;this._strip();var p;if(this.length>1)p=1;else{c&&(u=-u),i(u<=67108863,"Number is too big");var w=this.words[0]|0;p=w===u?0:w<u?-1:1}return this.negative!==0?-p|0:p},n.prototype.cmp=function(u){if(this.negative!==0&&u.negative===0)return-1;if(this.negative===0&&u.negative!==0)return 1;var c=this.ucmp(u);return this.negative!==0?-c|0:c},n.prototype.ucmp=function(u){if(this.length>u.length)return 1;if(this.length<u.length)return-1;for(var c=0,p=this.length-1;p>=0;p--){var w=this.words[p]|0,x=u.words[p]|0;if(w!==x){w<x?c=-1:w>x&&(c=1);break}}return c},n.prototype.gtn=function(u){return this.cmpn(u)===1},n.prototype.gt=function(u){return this.cmp(u)===1},n.prototype.gten=function(u){return this.cmpn(u)>=0},n.prototype.gte=function(u){return this.cmp(u)>=0},n.prototype.ltn=function(u){return this.cmpn(u)===-1},n.prototype.lt=function(u){return this.cmp(u)===-1},n.prototype.lten=function(u){return this.cmpn(u)<=0},n.prototype.lte=function(u){return this.cmp(u)<=0},n.prototype.eqn=function(u){return this.cmpn(u)===0},n.prototype.eq=function(u){return this.cmp(u)===0},n.red=function(u){return new M(u)},n.prototype.toRed=function(u){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),u.convertTo(this)._forceRed(u)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(u){return this.red=u,this},n.prototype.forceRed=function(u){return i(!this.red,"Already a number in reduction context"),this._forceRed(u)},n.prototype.redAdd=function(u){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,u)},n.prototype.redIAdd=function(u){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,u)},n.prototype.redSub=function(u){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,u)},n.prototype.redISub=function(u){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,u)},n.prototype.redShl=function(u){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,u)},n.prototype.redMul=function(u){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.mul(this,u)},n.prototype.redIMul=function(u){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.imul(this,u)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(u){return i(this.red&&!u.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,u)};var W={k256:null,p224:null,p192:null,p25519:null};function G(f,u){this.name=f,this.p=new n(u,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}G.prototype._tmp=function(){var u=new n(null);return u.words=new Array(Math.ceil(this.n/13)),u},G.prototype.ireduce=function(u){var c=u,p;do this.split(c,this.tmp),c=this.imulK(c),c=c.iadd(this.tmp),p=c.bitLength();while(p>this.n);var w=p<this.n?-1:c.ucmp(this.p);return w===0?(c.words[0]=0,c.length=1):w>0?c.isub(this.p):c.strip!==void 0?c.strip():c._strip(),c},G.prototype.split=function(u,c){u.iushrn(this.n,0,c)},G.prototype.imulK=function(u){return u.imul(this.k)};function re(){G.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(re,G),re.prototype.split=function(u,c){for(var p=4194303,w=Math.min(u.length,9),x=0;x<w;x++)c.words[x]=u.words[x];if(c.length=w,u.length<=9){u.words[0]=0,u.length=1;return}var g=u.words[9];for(c.words[c.length++]=g&p,x=10;x<u.length;x++){var s=u.words[x]|0;u.words[x-10]=(s&p)<<4|g>>>22,g=s}g>>>=22,u.words[x-10]=g,g===0&&u.length>10?u.length-=10:u.length-=9},re.prototype.imulK=function(u){u.words[u.length]=0,u.words[u.length+1]=0,u.length+=2;for(var c=0,p=0;p<u.length;p++){var w=u.words[p]|0;c+=w*977,u.words[p]=c&67108863,c=w*64+(c/67108864|0)}return u.words[u.length-1]===0&&(u.length--,u.words[u.length-1]===0&&u.length--),u};function J(){G.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(J,G);function K(){G.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(K,G);function se(){G.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(se,G),se.prototype.imulK=function(u){for(var c=0,p=0;p<u.length;p++){var w=(u.words[p]|0)*19+c,x=w&67108863;w>>>=26,u.words[p]=x,c=w}return c!==0&&(u.words[u.length++]=c),u},n._prime=function(u){if(W[u])return W[u];var c;if(u==="k256")c=new re;else if(u==="p224")c=new J;else if(u==="p192")c=new K;else if(u==="p25519")c=new se;else throw new Error("Unknown prime "+u);return W[u]=c,c};function M(f){if(typeof f=="string"){var u=n._prime(f);this.m=u.p,this.prime=u}else i(f.gtn(1),"modulus must be greater than 1"),this.m=f,this.prime=null}M.prototype._verify1=function(u){i(u.negative===0,"red works only with positives"),i(u.red,"red works only with red numbers")},M.prototype._verify2=function(u,c){i((u.negative|c.negative)===0,"red works only with positives"),i(u.red&&u.red===c.red,"red works only with red numbers")},M.prototype.imod=function(u){return this.prime?this.prime.ireduce(u)._forceRed(this):(_(u,u.umod(this.m)._forceRed(this)),u)},M.prototype.neg=function(u){return u.isZero()?u.clone():this.m.sub(u)._forceRed(this)},M.prototype.add=function(u,c){this._verify2(u,c);var p=u.add(c);return p.cmp(this.m)>=0&&p.isub(this.m),p._forceRed(this)},M.prototype.iadd=function(u,c){this._verify2(u,c);var p=u.iadd(c);return p.cmp(this.m)>=0&&p.isub(this.m),p},M.prototype.sub=function(u,c){this._verify2(u,c);var p=u.sub(c);return p.cmpn(0)<0&&p.iadd(this.m),p._forceRed(this)},M.prototype.isub=function(u,c){this._verify2(u,c);var p=u.isub(c);return p.cmpn(0)<0&&p.iadd(this.m),p},M.prototype.shl=function(u,c){return this._verify1(u),this.imod(u.ushln(c))},M.prototype.imul=function(u,c){return this._verify2(u,c),this.imod(u.imul(c))},M.prototype.mul=function(u,c){return this._verify2(u,c),this.imod(u.mul(c))},M.prototype.isqr=function(u){return this.imul(u,u.clone())},M.prototype.sqr=function(u){return this.mul(u,u)},M.prototype.sqrt=function(u){if(u.isZero())return u.clone();var c=this.m.andln(3);if(i(c%2===1),c===3){var p=this.m.add(new n(1)).iushrn(2);return this.pow(u,p)}for(var w=this.m.subn(1),x=0;!w.isZero()&&w.andln(1)===0;)x++,w.iushrn(1);i(!w.isZero());var g=new n(1).toRed(this),s=g.redNeg(),v=this.m.subn(1).iushrn(1),T=this.m.bitLength();for(T=new n(2*T*T).toRed(this);this.pow(T,v).cmp(s)!==0;)T.redIAdd(s);for(var D=this.pow(T,w),Y=this.pow(u,w.addn(1).iushrn(1)),Q=this.pow(u,w),A=x;Q.cmp(g)!==0;){for(var E=Q,q=0;E.cmp(g)!==0;q++)E=E.redSqr();i(q<A);var V=this.pow(D,new n(1).iushln(A-q-1));Y=Y.redMul(V),D=V.redSqr(),Q=Q.redMul(D),A=q}return Y},M.prototype.invm=function(u){var c=u._invmp(this.m);return c.negative!==0?(c.negative=0,this.imod(c).redNeg()):this.imod(c)},M.prototype.pow=function(u,c){if(c.isZero())return new n(1).toRed(this);if(c.cmpn(1)===0)return u.clone();var p=4,w=new Array(1<<p);w[0]=new n(1).toRed(this),w[1]=u;for(var x=2;x<w.length;x++)w[x]=this.mul(w[x-1],u);var g=w[0],s=0,v=0,T=c.bitLength()%26;for(T===0&&(T=26),x=c.length-1;x>=0;x--){for(var D=c.words[x],Y=T-1;Y>=0;Y--){var Q=D>>Y&1;if(g!==w[0]&&(g=this.sqr(g)),Q===0&&s===0){v=0;continue}s<<=1,s|=Q,v++,!(v!==p&&(x!==0||Y!==0))&&(g=this.mul(g,w[s]),v=0,s=0)}T=26}return g},M.prototype.convertTo=function(u){var c=u.umod(this.m);return c===u?c.clone():c},M.prototype.convertFrom=function(u){var c=u.clone();return c.red=null,c},n.mont=function(u){return new o(u)};function o(f){M.call(this,f),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(o,M),o.prototype.convertTo=function(u){return this.imod(u.ushln(this.shift))},o.prototype.convertFrom=function(u){var c=this.imod(u.mul(this.rinv));return c.red=null,c},o.prototype.imul=function(u,c){if(u.isZero()||c.isZero())return u.words[0]=0,u.length=1,u;var p=u.imul(c),w=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),x=p.isub(w).iushrn(this.shift),g=x;return x.cmp(this.m)>=0?g=x.isub(this.m):x.cmpn(0)<0&&(g=x.iadd(this.m)),g._forceRed(this)},o.prototype.mul=function(u,c){if(u.isZero()||c.isZero())return new n(0)._forceRed(this);var p=u.mul(c),w=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),x=p.isub(w).iushrn(this.shift),g=x;return x.cmp(this.m)>=0?g=x.isub(this.m):x.cmpn(0)<0&&(g=x.iadd(this.m)),g._forceRed(this)},o.prototype.invm=function(u){var c=this.imod(u._invmp(this.m).mul(this.r2));return c._forceRed(this)}})(e,Ze)})(mm);var ym=mm.exports,bs=ym,DK=rf;function FK(e){var t=hE(e),r=t.toRed(bs.mont(e.modulus)).redPow(new bs(e.publicExponent)).fromRed();return{blinder:r,unblinder:t.invm(e.modulus)}}function hE(e){var t=e.modulus.byteLength(),r;do r=new bs(DK(t));while(r.cmp(e.modulus)>=0||!r.umod(e.prime1)||!r.umod(e.prime2));return r}function cE(e,t){var r=FK(t),i=t.modulus.byteLength(),a=new bs(e).mul(r.blinder).umod(t.modulus),n=a.toRed(bs.mont(t.prime1)),l=a.toRed(bs.mont(t.prime2)),h=t.coefficient,d=t.prime1,m=t.prime2,_=n.redPow(t.exponent1).fromRed(),S=l.redPow(t.exponent2).fromRed(),R=_.isub(S).imul(h).umod(d).imul(m);return S.iadd(R).imul(r.unblinder).umod(t.modulus).toArrayLike(Le.Buffer,"be",i)}cE.getr=hE;var bm=cE,Z0={};const jK="elliptic",UK="6.5.7",HK="EC cryptography",qK="lib/elliptic.js",WK=["lib"],KK={lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},VK={type:"git",url:"git@github.com:indutny/elliptic"},zK=["EC","Elliptic","curve","Cryptography"],GK="Fedor Indutny <fedor@indutny.com>",YK="MIT",ZK={url:"https://github.com/indutny/elliptic/issues"},XK="https://github.com/indutny/elliptic",JK={brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},QK={"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"},eV={name:jK,version:UK,description:HK,main:qK,files:WK,scripts:KK,repository:VK,keywords:zK,author:GK,license:YK,bugs:ZK,homepage:XK,devDependencies:JK,dependencies:QK};var si={},wm={exports:{}};wm.exports;(function(e){(function(t,r){function i(M,o){if(!M)throw new Error(o||"Assertion failed")}function a(M,o){M.super_=o;var f=function(){};f.prototype=o.prototype,M.prototype=new f,M.prototype.constructor=M}function n(M,o,f){if(n.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(M||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Le.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var c=0;o[0]==="-"&&(c++,this.negative=1),c<o.length&&(f===16?this._parseHex(o,c,u):(this._parseBase(o,f,c),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p,w,x=0;if(u==="be")for(c=o.length-1,p=0;c>=0;c-=3)w=o[c]|o[c-1]<<8|o[c-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(c=0,p=0;c<o.length;c+=3)w=o[c]|o[c+1]<<8|o[c+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function h(M,o){var f=M.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(M,o,f){var u=h(M,f);return f-1>=o&&(u|=h(M,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p=0,w=0,x;if(u==="be")for(c=o.length-1;c>=f;c-=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(c=g%2===0?f+1:f;c<o.length;c+=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(M,o,f,u){for(var c=0,p=Math.min(M.length,f),w=o;w<p;w++){var x=M.charCodeAt(w)-48;c*=u,x>=49?c+=x-49+10:x>=17?c+=x-17+10:c+=x}return c}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var c=0,p=1;p<=67108863;p*=f)c++;c--,p=p/f|0;for(var w=o.length-u,x=w%c,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=c)s=m(o,v,v+c,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var c=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<c|p)&16777215).toString(16);p=x>>>24-c&16777215,p!==0||w!==this.length-1?u=_[6-g.length]+g+u:u=g+u,c+=2,c>=26&&(c-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var D=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=D+u:u=_[s-D.length]+D+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var c=this.byteLength(),p=u||Math.max(1,c);i(c<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-c;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(M){for(var o=new Array(M.bitLength()),f=0;f<o.length;f++){var u=f/26|0,c=f%26;o[f]=(M.words[u]&1<<c)>>>c}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var c=0;c<u.length;c++)this.words[c]=f.words[c]^u.words[c];if(this!==f)for(;c<f.length;c++)this.words[c]=f.words[c];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var c=0;c<f;c++)this.words[c]=~this.words[c]&67108863;return u>0&&(this.words[c]=~this.words[c]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,c=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<c:this.words[u]=this.words[u]&~(1<<c),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,c;this.length>o.length?(u=this,c=o):(u=o,c=this);for(var p=0,w=0;w<c.length;w++)f=(u.words[w]|0)+(c.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var c,p;u>0?(c=this,p=o):(c=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(c.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<c.length;x++)f=(c.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<c.length&&c!==this)for(;x<c.length;x++)this.words[x]=c.words[x];return this.length=Math.max(this.length,x),c!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(M,o,f){f.negative=o.negative^M.negative;var u=M.length+o.length|0;f.length=u,u=u-1|0;var c=M.words[0]|0,p=o.words[0]|0,w=c*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,D=Math.min(s,o.length-1),Y=Math.max(0,s-M.length+1);Y<=D;Y++){var Q=s-Y|0;c=M.words[Q]|0,p=o.words[Y]|0,w=c*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var L=function(o,f,u){var c=o.words,p=f.words,w=u.words,x=0,g,s,v,T=c[0]|0,D=T&8191,Y=T>>>13,Q=c[1]|0,A=Q&8191,E=Q>>>13,q=c[2]|0,V=q&8191,X=q>>>13,b=c[3]|0,y=b&8191,F=b>>>13,U=c[4]|0,Z=U&8191,j=U>>>13,k=c[5]|0,H=k&8191,z=k>>>13,oe=c[6]|0,ee=oe&8191,ne=oe>>>13,me=c[7]|0,he=me&8191,ue=me>>>13,xe=c[8]|0,le=xe&8191,ve=xe>>>13,ce=c[9]|0,ie=ce&8191,fe=ce>>>13,Ee=p[0]|0,de=Ee&8191,be=Ee>>>13,Ke=p[1]|0,we=Ke&8191,Se=Ke>>>13,qe=p[2]|0,ge=qe&8191,Me=qe>>>13,Ve=p[3]|0,_e=Ve&8191,Be=Ve>>>13,ot=p[4]|0,Ae=ot&8191,Ne=ot>>>13,st=p[5]|0,Pe=st&8191,De=st>>>13,ut=p[6]|0,Re=ut&8191,Fe=ut>>>13,ht=p[7]|0,Te=ht&8191,ke=ht>>>13,ct=p[8]|0,Oe=ct&8191,je=ct>>>13,ft=p[9]|0,Ie=ft&8191,$e=ft>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(D,de),s=Math.imul(D,be),s=s+Math.imul(Y,de)|0,v=Math.imul(Y,be);var tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(tt>>>26)|0,tt&=67108863,g=Math.imul(A,de),s=Math.imul(A,be),s=s+Math.imul(E,de)|0,v=Math.imul(E,be),g=g+Math.imul(D,we)|0,s=s+Math.imul(D,Se)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,Se)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,de),s=Math.imul(V,be),s=s+Math.imul(X,de)|0,v=Math.imul(X,be),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,Se)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,Se)|0,g=g+Math.imul(D,ge)|0,s=s+Math.imul(D,Me)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,de),s=Math.imul(y,be),s=s+Math.imul(F,de)|0,v=Math.imul(F,be),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,Se)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,Se)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(D,_e)|0,s=s+Math.imul(D,Be)|0,s=s+Math.imul(Y,_e)|0,v=v+Math.imul(Y,Be)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(Z,de),s=Math.imul(Z,be),s=s+Math.imul(j,de)|0,v=Math.imul(j,be),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,Se)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,Se)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,_e)|0,s=s+Math.imul(A,Be)|0,s=s+Math.imul(E,_e)|0,v=v+Math.imul(E,Be)|0,g=g+Math.imul(D,Ae)|0,s=s+Math.imul(D,Ne)|0,s=s+Math.imul(Y,Ae)|0,v=v+Math.imul(Y,Ne)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(H,de),s=Math.imul(H,be),s=s+Math.imul(z,de)|0,v=Math.imul(z,be),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,Se)|0,s=s+Math.imul(j,we)|0,v=v+Math.imul(j,Se)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(V,_e)|0,s=s+Math.imul(V,Be)|0,s=s+Math.imul(X,_e)|0,v=v+Math.imul(X,Be)|0,g=g+Math.imul(A,Ae)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Ae)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(D,Pe)|0,s=s+Math.imul(D,De)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,De)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(ee,de),s=Math.imul(ee,be),s=s+Math.imul(ne,de)|0,v=Math.imul(ne,be),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,Se)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,Se)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(j,ge)|0,v=v+Math.imul(j,Me)|0,g=g+Math.imul(y,_e)|0,s=s+Math.imul(y,Be)|0,s=s+Math.imul(F,_e)|0,v=v+Math.imul(F,Be)|0,g=g+Math.imul(V,Ae)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Ae)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(D,Re)|0,s=s+Math.imul(D,Fe)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Fe)|0;var Dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,g=Math.imul(he,de),s=Math.imul(he,be),s=s+Math.imul(ue,de)|0,v=Math.imul(ue,be),g=g+Math.imul(ee,we)|0,s=s+Math.imul(ee,Se)|0,s=s+Math.imul(ne,we)|0,v=v+Math.imul(ne,Se)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,_e)|0,s=s+Math.imul(Z,Be)|0,s=s+Math.imul(j,_e)|0,v=v+Math.imul(j,Be)|0,g=g+Math.imul(y,Ae)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(F,Ae)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Fe)|0,g=g+Math.imul(D,Te)|0,s=s+Math.imul(D,ke)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,ke)|0;var qt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(qt>>>26)|0,qt&=67108863,g=Math.imul(le,de),s=Math.imul(le,be),s=s+Math.imul(ve,de)|0,v=Math.imul(ve,be),g=g+Math.imul(he,we)|0,s=s+Math.imul(he,Se)|0,s=s+Math.imul(ue,we)|0,v=v+Math.imul(ue,Se)|0,g=g+Math.imul(ee,ge)|0,s=s+Math.imul(ee,Me)|0,s=s+Math.imul(ne,ge)|0,v=v+Math.imul(ne,Me)|0,g=g+Math.imul(H,_e)|0,s=s+Math.imul(H,Be)|0,s=s+Math.imul(z,_e)|0,v=v+Math.imul(z,Be)|0,g=g+Math.imul(Z,Ae)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(j,Ae)|0,v=v+Math.imul(j,Ne)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Fe)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,ke)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,ke)|0,g=g+Math.imul(D,Oe)|0,s=s+Math.imul(D,je)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,je)|0;var Wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,g=Math.imul(ie,de),s=Math.imul(ie,be),s=s+Math.imul(fe,de)|0,v=Math.imul(fe,be),g=g+Math.imul(le,we)|0,s=s+Math.imul(le,Se)|0,s=s+Math.imul(ve,we)|0,v=v+Math.imul(ve,Se)|0,g=g+Math.imul(he,ge)|0,s=s+Math.imul(he,Me)|0,s=s+Math.imul(ue,ge)|0,v=v+Math.imul(ue,Me)|0,g=g+Math.imul(ee,_e)|0,s=s+Math.imul(ee,Be)|0,s=s+Math.imul(ne,_e)|0,v=v+Math.imul(ne,Be)|0,g=g+Math.imul(H,Ae)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Ae)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(j,Pe)|0,v=v+Math.imul(j,De)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Fe)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,ke)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,ke)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(D,Ie)|0,s=s+Math.imul(D,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,Se),s=s+Math.imul(fe,we)|0,v=Math.imul(fe,Se),g=g+Math.imul(le,ge)|0,s=s+Math.imul(le,Me)|0,s=s+Math.imul(ve,ge)|0,v=v+Math.imul(ve,Me)|0,g=g+Math.imul(he,_e)|0,s=s+Math.imul(he,Be)|0,s=s+Math.imul(ue,_e)|0,v=v+Math.imul(ue,Be)|0,g=g+Math.imul(ee,Ae)|0,s=s+Math.imul(ee,Ne)|0,s=s+Math.imul(ne,Ae)|0,v=v+Math.imul(ne,Ne)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(j,Re)|0,v=v+Math.imul(j,Fe)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,ke)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,ke)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Me),s=s+Math.imul(fe,ge)|0,v=Math.imul(fe,Me),g=g+Math.imul(le,_e)|0,s=s+Math.imul(le,Be)|0,s=s+Math.imul(ve,_e)|0,v=v+Math.imul(ve,Be)|0,g=g+Math.imul(he,Ae)|0,s=s+Math.imul(he,Ne)|0,s=s+Math.imul(ue,Ae)|0,v=v+Math.imul(ue,Ne)|0,g=g+Math.imul(ee,Pe)|0,s=s+Math.imul(ee,De)|0,s=s+Math.imul(ne,Pe)|0,v=v+Math.imul(ne,De)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Fe)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,ke)|0,s=s+Math.imul(j,Te)|0,v=v+Math.imul(j,ke)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0;var Tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,g=Math.imul(ie,_e),s=Math.imul(ie,Be),s=s+Math.imul(fe,_e)|0,v=Math.imul(fe,Be),g=g+Math.imul(le,Ae)|0,s=s+Math.imul(le,Ne)|0,s=s+Math.imul(ve,Ae)|0,v=v+Math.imul(ve,Ne)|0,g=g+Math.imul(he,Pe)|0,s=s+Math.imul(he,De)|0,s=s+Math.imul(ue,Pe)|0,v=v+Math.imul(ue,De)|0,g=g+Math.imul(ee,Re)|0,s=s+Math.imul(ee,Fe)|0,s=s+Math.imul(ne,Re)|0,v=v+Math.imul(ne,Fe)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,ke)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,ke)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(j,Oe)|0,v=v+Math.imul(j,je)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Ae),s=Math.imul(ie,Ne),s=s+Math.imul(fe,Ae)|0,v=Math.imul(fe,Ne),g=g+Math.imul(le,Pe)|0,s=s+Math.imul(le,De)|0,s=s+Math.imul(ve,Pe)|0,v=v+Math.imul(ve,De)|0,g=g+Math.imul(he,Re)|0,s=s+Math.imul(he,Fe)|0,s=s+Math.imul(ue,Re)|0,v=v+Math.imul(ue,Fe)|0,g=g+Math.imul(ee,Te)|0,s=s+Math.imul(ee,ke)|0,s=s+Math.imul(ne,Te)|0,v=v+Math.imul(ne,ke)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(j,Ie)|0,v=v+Math.imul(j,$e)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,De),s=s+Math.imul(fe,Pe)|0,v=Math.imul(fe,De),g=g+Math.imul(le,Re)|0,s=s+Math.imul(le,Fe)|0,s=s+Math.imul(ve,Re)|0,v=v+Math.imul(ve,Fe)|0,g=g+Math.imul(he,Te)|0,s=s+Math.imul(he,ke)|0,s=s+Math.imul(ue,Te)|0,v=v+Math.imul(ue,ke)|0,g=g+Math.imul(ee,Oe)|0,s=s+Math.imul(ee,je)|0,s=s+Math.imul(ne,Oe)|0,v=v+Math.imul(ne,je)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0;var Ct=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Fe),s=s+Math.imul(fe,Re)|0,v=Math.imul(fe,Fe),g=g+Math.imul(le,Te)|0,s=s+Math.imul(le,ke)|0,s=s+Math.imul(ve,Te)|0,v=v+Math.imul(ve,ke)|0,g=g+Math.imul(he,Oe)|0,s=s+Math.imul(he,je)|0,s=s+Math.imul(ue,Oe)|0,v=v+Math.imul(ue,je)|0,g=g+Math.imul(ee,Ie)|0,s=s+Math.imul(ee,$e)|0,s=s+Math.imul(ne,Ie)|0,v=v+Math.imul(ne,$e)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,ke),s=s+Math.imul(fe,Te)|0,v=Math.imul(fe,ke),g=g+Math.imul(le,Oe)|0,s=s+Math.imul(le,je)|0,s=s+Math.imul(ve,Oe)|0,v=v+Math.imul(ve,je)|0,g=g+Math.imul(he,Ie)|0,s=s+Math.imul(he,$e)|0,s=s+Math.imul(ue,Ie)|0,v=v+Math.imul(ue,$e)|0;var wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(wt>>>26)|0,wt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,je),s=s+Math.imul(fe,Oe)|0,v=Math.imul(fe,je),g=g+Math.imul(le,Ie)|0,s=s+Math.imul(le,$e)|0,s=s+Math.imul(ve,Ie)|0,v=v+Math.imul(ve,$e)|0;var Ft=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(fe,Ie)|0,v=Math.imul(fe,$e);var jt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(jt>>>26)|0,jt&=67108863,w[0]=tt,w[1]=et,w[2]=Et,w[3]=It,w[4]=Pt,w[5]=Bt,w[6]=Dt,w[7]=qt,w[8]=Wt,w[9]=Lt,w[10]=dt,w[11]=Tt,w[12]=Mt,w[13]=bt,w[14]=Ct,w[15]=gt,w[16]=wt,w[17]=Ft,w[18]=jt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(L=O);function B(M,o,f){f.negative=o.negative^M.negative,f.length=M.length+o.length;for(var u=0,c=0,p=0;p<f.length-1;p++){var w=c;c=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-M.length+1);s<=g;s++){var v=p-s,T=M.words[v]|0,D=o.words[s]|0,Y=T*D,Q=Y&67108863;w=w+(Y/67108864|0)|0,Q=Q+x|0,x=Q&67108863,w=w+(Q>>>26)|0,c+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=c}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(M,o,f){var u=new C;return u.mulp(M,o,f)}n.prototype.mulTo=function(o,f){var u,c=this.length+o.length;return this.length===10&&o.length===10?u=L(this,o,f):c<63?u=O(this,o,f):c<1024?u=B(this,o,f):u=P(this,o,f),u};function C(M,o){this.x=M,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,c=0;c<o;c++)f[c]=this.revBin(c,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var c=0,p=0;p<f;p++)c|=(o&1)<<f-p-1,o>>=1;return c},C.prototype.permute=function(o,f,u,c,p,w){for(var x=0;x<w;x++)c[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,c,p,w){this.permute(w,o,f,u,c,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var D=s,Y=v,Q=0;Q<x;Q++){var A=u[T+Q],E=c[T+Q],q=u[T+Q+x],V=c[T+Q+x],X=D*q-Y*V;V=D*V+Y*q,q=X,u[T+Q]=A+q,c[T+Q]=E+V,u[T+Q+x]=A-q,c[T+Q+x]=E-V,Q!==g&&(X=s*D-v*Y,Y=s*Y+v*D,D=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,c=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+c},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var c=0;c<u/2;c++){var p=o[c];o[c]=o[u-c-1],o[u-c-1]=p,p=f[c],f[c]=-f[u-c-1],f[u-c-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,c=0;c<f/2;c++){var p=Math.round(o[2*c+1]/f)*8192+Math.round(o[2*c]/f)+u;o[c]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,c){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<c;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var c=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(c),w=this.stub(c),x=new Array(c),g=new Array(c),s=new Array(c),v=new Array(c),T=new Array(c),D=new Array(c),Y=u.words;Y.length=c,this.convert13b(o.words,o.length,x,c),this.convert13b(f.words,f.length,v,c),this.transform(x,w,g,s,c,p),this.transform(v,w,T,D,c,p);for(var Q=0;Q<c;Q++){var A=g[Q]*T[Q]-s[Q]*D[Q];s[Q]=g[Q]*D[Q]+s[Q]*T[Q],g[Q]=A}return this.conjugate(g,s,c),this.transform(g,s,Y,w,c,p),this.conjugate(Y,w,c),this.normalize13b(Y,c),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var c=(this.words[u]|0)*o,p=(c&67108863)+(f&67108863);f>>=26,f+=c/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,c=0;c<f.length&&f[c]===0;c++,u=u.sqr());if(++c<f.length)for(var p=u.sqr();c<f.length;c++,p=p.sqr())f[c]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&c,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var c;f?c=(f-f%26)/26:c=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(c-=w,c=Math.max(0,c),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=c);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&c)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var c=67108863^67108863>>>f<<f;this.words[this.length-1]&=c}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var c=o.length+u,p;this._expand(c);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,c=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),c.iushln(u),w=p.words[p.length-1]|0);var g=c.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=c.clone()._ishlnsubmul(p,1,g);T.negative===0&&(c=T,s&&(s.words[g]=1));for(var D=g-1;D>=0;D--){var Y=(c.words[p.length+D]|0)*67108864+(c.words[p.length+D-1]|0);for(Y=Math.min(Y/w|0,67108863),c._ishlnsubmul(p,Y,D);c.negative!==0;)Y--,c.negative=0,c._ishlnsubmul(p,1,D),c.isZero()||(c.negative^=1);s&&(s.words[D]=Y)}return s&&s.strip(),c.strip(),f!=="div"&&u!==0&&c.iushrn(u),{div:s||null,mod:c}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var c,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(c=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:c,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(c=w.div.neg()),{div:c,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,c=o.ushrn(1),p=o.andln(1),w=u.cmp(c);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,c=this.length-1;c>=0;c--)u=(f*u+(this.words[c]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var c=(this.words[u]|0)+f*67108864;this.words[u]=c/o|0,f=c%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,D=1;!(f.words[0]&D)&&T<26;++T,D<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(c.isOdd()||p.isOdd())&&(c.iadd(s),p.isub(v)),c.iushrn(1),p.iushrn(1);for(var Y=0,Q=1;!(u.words[0]&Q)&&Y<26;++Y,Q<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(w),p.isub(x)):(u.isub(f),w.isub(c),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)c.isOdd()&&c.iadd(w),c.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(p)):(u.isub(f),p.isub(c))}var T;return f.cmpn(1)===0?T=c:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var c=0;f.isEven()&&u.isEven();c++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(c)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=c,this;for(var p=c,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var c=this.words[0]|0;u=c===o?0:c<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var c=this.words[u]|0,p=o.words[u]|0;if(c!==p){c<p?f=-1:c>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new K(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var N={k256:null,p224:null,p192:null,p25519:null};function $(M,o){this.name=M,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var c=u<this.n?-1:f.ucmp(this.p);return c===0?(f.words[0]=0,f.length=1):c>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function W(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(W,$),W.prototype.split=function(o,f){for(var u=4194303,c=Math.min(o.length,9),p=0;p<c;p++)f.words[p]=o.words[p];if(f.length=c,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},W.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var c=o.words[u]|0;f+=c*977,o.words[u]=f&67108863,f=c*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function re(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(re,$);function J(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(J,$),J.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var c=(o.words[u]|0)*19+f,p=c&67108863;c>>>=26,o.words[u]=p,f=c}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(N[o])return N[o];var f;if(o==="k256")f=new W;else if(o==="p224")f=new G;else if(o==="p192")f=new re;else if(o==="p25519")f=new J;else throw new Error("Unknown prime "+o);return N[o]=f,f};function K(M){if(typeof M=="string"){var o=n._prime(M);this.m=o.p,this.prime=o}else i(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}K.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},K.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},K.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},K.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},K.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},K.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},K.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},K.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},K.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},K.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},K.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},K.prototype.isqr=function(o){return this.imul(o,o.clone())},K.prototype.sqr=function(o){return this.mul(o,o)},K.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var c=this.m.subn(1),p=0;!c.isZero()&&c.andln(1)===0;)p++,c.iushrn(1);i(!c.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,c),T=this.pow(o,c.addn(1).iushrn(1)),D=this.pow(o,c),Y=p;D.cmp(w)!==0;){for(var Q=D,A=0;Q.cmp(w)!==0;A++)Q=Q.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),D=D.redMul(v),Y=A}return T},K.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},K.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,c=new Array(1<<u);c[0]=new n(1).toRed(this),c[1]=o;for(var p=2;p<c.length;p++)c[p]=this.mul(c[p-1],o);var w=c[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var D=v>>T&1;if(w!==c[0]&&(w=this.sqr(w)),D===0&&x===0){g=0;continue}x<<=1,x|=D,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,c[x]),g=0,x=0)}s=26}return w},K.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},K.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new se(o)};function se(M){K.call(this,M),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(se,K),se.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},se.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},se.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(wm);var po=wm.exports,_m={};(function(e){var t=e;function r(n,l){if(Array.isArray(n))return n.slice();if(!n)return[];var h=[];if(typeof n!="string"){for(var d=0;d<n.length;d++)h[d]=n[d]|0;return h}if(l==="hex"){n=n.replace(/[^a-z0-9]+/ig,""),n.length%2!==0&&(n="0"+n);for(var d=0;d<n.length;d+=2)h.push(parseInt(n[d]+n[d+1],16))}else for(var d=0;d<n.length;d++){var m=n.charCodeAt(d),_=m>>8,S=m&255;_?h.push(_,S):h.push(S)}return h}t.toArray=r;function i(n){return n.length===1?"0"+n:n}t.zero2=i;function a(n){for(var l="",h=0;h<n.length;h++)l+=i(n[h].toString(16));return l}t.toHex=a,t.encode=function(l,h){return h==="hex"?a(l):l}})(_m);(function(e){var t=e,r=po,i=Ci,a=_m;t.assert=i,t.toArray=a.toArray,t.zero2=a.zero2,t.toHex=a.toHex,t.encode=a.encode;function n(_,S,R){var I=new Array(Math.max(_.bitLength(),R)+1),O;for(O=0;O<I.length;O+=1)I[O]=0;var L=1<<S+1,B=_.clone();for(O=0;O<I.length;O++){var P,C=B.andln(L-1);B.isOdd()?(C>(L>>1)-1?P=(L>>1)-C:P=C,B.isubn(P)):P=0,I[O]=P,B.iushrn(1)}return I}t.getNAF=n;function l(_,S){var R=[[],[]];_=_.clone(),S=S.clone();for(var I=0,O=0,L;_.cmpn(-I)>0||S.cmpn(-O)>0;){var B=_.andln(3)+I&3,P=S.andln(3)+O&3;B===3&&(B=-1),P===3&&(P=-1);var C;B&1?(L=_.andln(7)+I&7,(L===3||L===5)&&P===2?C=-B:C=B):C=0,R[0].push(C);var N;P&1?(L=S.andln(7)+O&7,(L===3||L===5)&&B===2?N=-P:N=P):N=0,R[1].push(N),2*I===C+1&&(I=1-I),2*O===N+1&&(O=1-O),_.iushrn(1),S.iushrn(1)}return R}t.getJSF=l;function h(_,S,R){var I="_"+S;_.prototype[S]=function(){return this[I]!==void 0?this[I]:this[I]=R.call(this)}}t.cachedProperty=h;function d(_){return typeof _=="string"?t.toArray(_,"hex"):_}t.parseBytes=d;function m(_){return new r(_,"hex","le")}t.intFromLE=m})(si);var Mm={},ia=po,Gl=si,Oh=Gl.getNAF,tV=Gl.getJSF,Ih=Gl.assert;function Zo(e,t){this.type=e,this.p=new ia(t.p,16),this.red=t.prime?ia.red(t.prime):ia.mont(this.p),this.zero=new ia(0).toRed(this.red),this.one=new ia(1).toRed(this.red),this.two=new ia(2).toRed(this.red),this.n=t.n&&new ia(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var jc=Zo;Zo.prototype.point=function(){throw new Error("Not implemented")};Zo.prototype.validate=function(){throw new Error("Not implemented")};Zo.prototype._fixedNafMul=function(t,r){Ih(t.precomputed);var i=t._getDoubles(),a=Oh(r,1,this._bitLength),n=(1<<i.step+1)-(i.step%2===0?2:1);n/=3;var l=[],h,d;for(h=0;h<a.length;h+=i.step){d=0;for(var m=h+i.step-1;m>=h;m--)d=(d<<1)+a[m];l.push(d)}for(var _=this.jpoint(null,null,null),S=this.jpoint(null,null,null),R=n;R>0;R--){for(h=0;h<l.length;h++)d=l[h],d===R?S=S.mixedAdd(i.points[h]):d===-R&&(S=S.mixedAdd(i.points[h].neg()));_=_.add(S)}return _.toP()};Zo.prototype._wnafMul=function(t,r){var i=4,a=t._getNAFPoints(i);i=a.wnd;for(var n=a.points,l=Oh(r,i,this._bitLength),h=this.jpoint(null,null,null),d=l.length-1;d>=0;d--){for(var m=0;d>=0&&l[d]===0;d--)m++;if(d>=0&&m++,h=h.dblp(m),d<0)break;var _=l[d];Ih(_!==0),t.type==="affine"?_>0?h=h.mixedAdd(n[_-1>>1]):h=h.mixedAdd(n[-_-1>>1].neg()):_>0?h=h.add(n[_-1>>1]):h=h.add(n[-_-1>>1].neg())}return t.type==="affine"?h.toP():h};Zo.prototype._wnafMulAdd=function(t,r,i,a,n){var l=this._wnafT1,h=this._wnafT2,d=this._wnafT3,m=0,_,S,R;for(_=0;_<a;_++){R=r[_];var I=R._getNAFPoints(t);l[_]=I.wnd,h[_]=I.points}for(_=a-1;_>=1;_-=2){var O=_-1,L=_;if(l[O]!==1||l[L]!==1){d[O]=Oh(i[O],l[O],this._bitLength),d[L]=Oh(i[L],l[L],this._bitLength),m=Math.max(d[O].length,m),m=Math.max(d[L].length,m);continue}var B=[r[O],null,null,r[L]];r[O].y.cmp(r[L].y)===0?(B[1]=r[O].add(r[L]),B[2]=r[O].toJ().mixedAdd(r[L].neg())):r[O].y.cmp(r[L].y.redNeg())===0?(B[1]=r[O].toJ().mixedAdd(r[L]),B[2]=r[O].add(r[L].neg())):(B[1]=r[O].toJ().mixedAdd(r[L]),B[2]=r[O].toJ().mixedAdd(r[L].neg()));var P=[-3,-1,-5,-7,0,7,5,1,3],C=tV(i[O],i[L]);for(m=Math.max(C[0].length,m),d[O]=new Array(m),d[L]=new Array(m),S=0;S<m;S++){var N=C[0][S]|0,$=C[1][S]|0;d[O][S]=P[(N+1)*3+($+1)],d[L][S]=0,h[O]=B}}var W=this.jpoint(null,null,null),G=this._wnafT4;for(_=m;_>=0;_--){for(var re=0;_>=0;){var J=!0;for(S=0;S<a;S++)G[S]=d[S][_]|0,G[S]!==0&&(J=!1);if(!J)break;re++,_--}if(_>=0&&re++,W=W.dblp(re),_<0)break;for(S=0;S<a;S++){var K=G[S];K!==0&&(K>0?R=h[S][K-1>>1]:K<0&&(R=h[S][-K-1>>1].neg()),R.type==="affine"?W=W.mixedAdd(R):W=W.add(R))}}for(_=0;_<a;_++)h[_]=null;return n?W:W.toP()};function Ni(e,t){this.curve=e,this.type=t,this.precomputed=null}Zo.BasePoint=Ni;Ni.prototype.eq=function(){throw new Error("Not implemented")};Ni.prototype.validate=function(){return this.curve.validate(this)};Zo.prototype.decodePoint=function(t,r){t=Gl.toArray(t,r);var i=this.p.byteLength();if((t[0]===4||t[0]===6||t[0]===7)&&t.length-1===2*i){t[0]===6?Ih(t[t.length-1]%2===0):t[0]===7&&Ih(t[t.length-1]%2===1);var a=this.point(t.slice(1,1+i),t.slice(1+i,1+2*i));return a}else if((t[0]===2||t[0]===3)&&t.length-1===i)return this.pointFromX(t.slice(1,1+i),t[0]===3);throw new Error("Unknown point format")};Ni.prototype.encodeCompressed=function(t){return this.encode(t,!0)};Ni.prototype._encode=function(t){var r=this.curve.p.byteLength(),i=this.getX().toArray("be",r);return t?[this.getY().isEven()?2:3].concat(i):[4].concat(i,this.getY().toArray("be",r))};Ni.prototype.encode=function(t,r){return Gl.encode(this._encode(r),t)};Ni.prototype.precompute=function(t){if(this.precomputed)return this;var r={doubles:null,naf:null,beta:null};return r.naf=this._getNAFPoints(8),r.doubles=this._getDoubles(4,t),r.beta=this._getBeta(),this.precomputed=r,this};Ni.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var r=this.precomputed.doubles;return r?r.points.length>=Math.ceil((t.bitLength()+1)/r.step):!1};Ni.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],a=this,n=0;n<r;n+=t){for(var l=0;l<t;l++)a=a.dbl();i.push(a)}return{step:t,points:i}};Ni.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var r=[this],i=(1<<t)-1,a=i===1?null:this.dbl(),n=1;n<i;n++)r[n]=r[n-1].add(a);return{wnd:t,points:r}};Ni.prototype._getBeta=function(){return null};Ni.prototype.dblp=function(t){for(var r=this,i=0;i<t;i++)r=r.dbl();return r};var rV=si,er=po,Sm=Ye,sf=jc,iV=rV.assert;function ki(e){sf.call(this,"short",e),this.a=new er(e.a,16).toRed(this.red),this.b=new er(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Sm(ki,sf);var nV=ki;ki.prototype._getEndomorphism=function(t){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var r,i;if(t.beta)r=new er(t.beta,16).toRed(this.red);else{var a=this._getEndoRoots(this.p);r=a[0].cmp(a[1])<0?a[0]:a[1],r=r.toRed(this.red)}if(t.lambda)i=new er(t.lambda,16);else{var n=this._getEndoRoots(this.n);this.g.mul(n[0]).x.cmp(this.g.x.redMul(r))===0?i=n[0]:(i=n[1],iV(this.g.mul(i).x.cmp(this.g.x.redMul(r))===0))}var l;return t.basis?l=t.basis.map(function(h){return{a:new er(h.a,16),b:new er(h.b,16)}}):l=this._getEndoBasis(i),{beta:r,lambda:i,basis:l}}};ki.prototype._getEndoRoots=function(t){var r=t===this.p?this.red:er.mont(t),i=new er(2).toRed(r).redInvm(),a=i.redNeg(),n=new er(3).toRed(r).redNeg().redSqrt().redMul(i),l=a.redAdd(n).fromRed(),h=a.redSub(n).fromRed();return[l,h]};ki.prototype._getEndoBasis=function(t){for(var r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),i=t,a=this.n.clone(),n=new er(1),l=new er(0),h=new er(0),d=new er(1),m,_,S,R,I,O,L,B=0,P,C;i.cmpn(0)!==0;){var N=a.div(i);P=a.sub(N.mul(i)),C=h.sub(N.mul(n));var $=d.sub(N.mul(l));if(!S&&P.cmp(r)<0)m=L.neg(),_=n,S=P.neg(),R=C;else if(S&&++B===2)break;L=P,a=i,i=P,h=n,n=C,d=l,l=$}I=P.neg(),O=C;var W=S.sqr().add(R.sqr()),G=I.sqr().add(O.sqr());return G.cmp(W)>=0&&(I=m,O=_),S.negative&&(S=S.neg(),R=R.neg()),I.negative&&(I=I.neg(),O=O.neg()),[{a:S,b:R},{a:I,b:O}]};ki.prototype._endoSplit=function(t){var r=this.endo.basis,i=r[0],a=r[1],n=a.b.mul(t).divRound(this.n),l=i.b.neg().mul(t).divRound(this.n),h=n.mul(i.a),d=l.mul(a.a),m=n.mul(i.b),_=l.mul(a.b),S=t.sub(h).sub(d),R=m.add(_).neg();return{k1:S,k2:R}};ki.prototype.pointFromX=function(t,r){t=new er(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),a=i.redSqrt();if(a.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var n=a.fromRed().isOdd();return(r&&!n||!r&&n)&&(a=a.redNeg()),this.point(t,a)};ki.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,i=t.y,a=this.a.redMul(r),n=r.redSqr().redMul(r).redIAdd(a).redIAdd(this.b);return i.redSqr().redISub(n).cmpn(0)===0};ki.prototype._endoWnafMulAdd=function(t,r,i){for(var a=this._endoWnafT1,n=this._endoWnafT2,l=0;l<t.length;l++){var h=this._endoSplit(r[l]),d=t[l],m=d._getBeta();h.k1.negative&&(h.k1.ineg(),d=d.neg(!0)),h.k2.negative&&(h.k2.ineg(),m=m.neg(!0)),a[l*2]=d,a[l*2+1]=m,n[l*2]=h.k1,n[l*2+1]=h.k2}for(var _=this._wnafMulAdd(1,a,n,l*2,i),S=0;S<l*2;S++)a[S]=null,n[S]=null;return _};function yr(e,t,r,i){sf.BasePoint.call(this,e,"affine"),t===null&&r===null?(this.x=null,this.y=null,this.inf=!0):(this.x=new er(t,16),this.y=new er(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}Sm(yr,sf.BasePoint);ki.prototype.point=function(t,r,i){return new yr(this,t,r,i)};ki.prototype.pointFromJSON=function(t,r){return yr.fromJSON(this,t,r)};yr.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var r=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var i=this.curve,a=function(n){return i.point(n.x.redMul(i.endo.beta),n.y)};t.beta=r,r.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(a)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(a)}}}return r}};yr.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]};yr.fromJSON=function(t,r,i){typeof r=="string"&&(r=JSON.parse(r));var a=t.point(r[0],r[1],i);if(!r[2])return a;function n(h){return t.point(h[0],h[1],i)}var l=r[2];return a.precomputed={beta:null,doubles:l.doubles&&{step:l.doubles.step,points:[a].concat(l.doubles.points.map(n))},naf:l.naf&&{wnd:l.naf.wnd,points:[a].concat(l.naf.points.map(n))}},a};yr.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"};yr.prototype.isInfinity=function(){return this.inf};yr.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(t.x),a=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,a)};yr.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),a=t.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(a),l=n.redSqr().redISub(this.x.redAdd(this.x)),h=n.redMul(this.x.redSub(l)).redISub(this.y);return this.curve.point(l,h)};yr.prototype.getX=function(){return this.x.fromRed()};yr.prototype.getY=function(){return this.y.fromRed()};yr.prototype.mul=function(t){return t=new er(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)};yr.prototype.mulAdd=function(t,r,i){var a=[this,r],n=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(a,n):this.curve._wnafMulAdd(1,a,n,2)};yr.prototype.jmulAdd=function(t,r,i){var a=[this,r],n=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(a,n,!0):this.curve._wnafMulAdd(1,a,n,2,!0)};yr.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)};yr.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,a=function(n){return n.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(a)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(a)}}}return r};yr.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Sr(e,t,r,i){sf.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new er(0)):(this.x=new er(t,16),this.y=new er(r,16),this.z=new er(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}Sm(Sr,sf.BasePoint);ki.prototype.jpoint=function(t,r,i){return new Sr(this,t,r,i)};Sr.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),i=this.x.redMul(r),a=this.y.redMul(r).redMul(t);return this.curve.point(i,a)};Sr.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};Sr.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),i=this.z.redSqr(),a=this.x.redMul(r),n=t.x.redMul(i),l=this.y.redMul(r.redMul(t.z)),h=t.y.redMul(i.redMul(this.z)),d=a.redSub(n),m=l.redSub(h);if(d.cmpn(0)===0)return m.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var _=d.redSqr(),S=_.redMul(d),R=a.redMul(_),I=m.redSqr().redIAdd(S).redISub(R).redISub(R),O=m.redMul(R.redISub(I)).redISub(l.redMul(S)),L=this.z.redMul(t.z).redMul(d);return this.curve.jpoint(I,O,L)};Sr.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),i=this.x,a=t.x.redMul(r),n=this.y,l=t.y.redMul(r).redMul(this.z),h=i.redSub(a),d=n.redSub(l);if(h.cmpn(0)===0)return d.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var m=h.redSqr(),_=m.redMul(h),S=i.redMul(m),R=d.redSqr().redIAdd(_).redISub(S).redISub(S),I=d.redMul(S.redISub(R)).redISub(n.redMul(_)),O=this.z.redMul(h);return this.curve.jpoint(R,I,O)};Sr.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r<t;r++)i=i.dbl();return i}var a=this.curve.a,n=this.curve.tinv,l=this.x,h=this.y,d=this.z,m=d.redSqr().redSqr(),_=h.redAdd(h);for(r=0;r<t;r++){var S=l.redSqr(),R=_.redSqr(),I=R.redSqr(),O=S.redAdd(S).redIAdd(S).redIAdd(a.redMul(m)),L=l.redMul(R),B=O.redSqr().redISub(L.redAdd(L)),P=L.redISub(B),C=O.redMul(P);C=C.redIAdd(C).redISub(I);var N=_.redMul(d);r+1<t&&(m=m.redMul(I)),l=B,d=N,_=C}return this.curve.jpoint(l,_.redMul(n),d)};Sr.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()};Sr.prototype._zeroDbl=function(){var t,r,i;if(this.zOne){var a=this.x.redSqr(),n=this.y.redSqr(),l=n.redSqr(),h=this.x.redAdd(n).redSqr().redISub(a).redISub(l);h=h.redIAdd(h);var d=a.redAdd(a).redIAdd(a),m=d.redSqr().redISub(h).redISub(h),_=l.redIAdd(l);_=_.redIAdd(_),_=_.redIAdd(_),t=m,r=d.redMul(h.redISub(m)).redISub(_),i=this.y.redAdd(this.y)}else{var S=this.x.redSqr(),R=this.y.redSqr(),I=R.redSqr(),O=this.x.redAdd(R).redSqr().redISub(S).redISub(I);O=O.redIAdd(O);var L=S.redAdd(S).redIAdd(S),B=L.redSqr(),P=I.redIAdd(I);P=P.redIAdd(P),P=P.redIAdd(P),t=B.redISub(O).redISub(O),r=L.redMul(O.redISub(t)).redISub(P),i=this.y.redMul(this.z),i=i.redIAdd(i)}return this.curve.jpoint(t,r,i)};Sr.prototype._threeDbl=function(){var t,r,i;if(this.zOne){var a=this.x.redSqr(),n=this.y.redSqr(),l=n.redSqr(),h=this.x.redAdd(n).redSqr().redISub(a).redISub(l);h=h.redIAdd(h);var d=a.redAdd(a).redIAdd(a).redIAdd(this.curve.a),m=d.redSqr().redISub(h).redISub(h);t=m;var _=l.redIAdd(l);_=_.redIAdd(_),_=_.redIAdd(_),r=d.redMul(h.redISub(m)).redISub(_),i=this.y.redAdd(this.y)}else{var S=this.z.redSqr(),R=this.y.redSqr(),I=this.x.redMul(R),O=this.x.redSub(S).redMul(this.x.redAdd(S));O=O.redAdd(O).redIAdd(O);var L=I.redIAdd(I);L=L.redIAdd(L);var B=L.redAdd(L);t=O.redSqr().redISub(B),i=this.y.redAdd(this.z).redSqr().redISub(R).redISub(S);var P=R.redSqr();P=P.redIAdd(P),P=P.redIAdd(P),P=P.redIAdd(P),r=O.redMul(L.redISub(t)).redISub(P)}return this.curve.jpoint(t,r,i)};Sr.prototype._dbl=function(){var t=this.curve.a,r=this.x,i=this.y,a=this.z,n=a.redSqr().redSqr(),l=r.redSqr(),h=i.redSqr(),d=l.redAdd(l).redIAdd(l).redIAdd(t.redMul(n)),m=r.redAdd(r);m=m.redIAdd(m);var _=m.redMul(h),S=d.redSqr().redISub(_.redAdd(_)),R=_.redISub(S),I=h.redSqr();I=I.redIAdd(I),I=I.redIAdd(I),I=I.redIAdd(I);var O=d.redMul(R).redISub(I),L=i.redAdd(i).redMul(a);return this.curve.jpoint(S,O,L)};Sr.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr(),a=r.redSqr(),n=t.redAdd(t).redIAdd(t),l=n.redSqr(),h=this.x.redAdd(r).redSqr().redISub(t).redISub(a);h=h.redIAdd(h),h=h.redAdd(h).redIAdd(h),h=h.redISub(l);var d=h.redSqr(),m=a.redIAdd(a);m=m.redIAdd(m),m=m.redIAdd(m),m=m.redIAdd(m);var _=n.redIAdd(h).redSqr().redISub(l).redISub(d).redISub(m),S=r.redMul(_);S=S.redIAdd(S),S=S.redIAdd(S);var R=this.x.redMul(d).redISub(S);R=R.redIAdd(R),R=R.redIAdd(R);var I=this.y.redMul(_.redMul(m.redISub(_)).redISub(h.redMul(d)));I=I.redIAdd(I),I=I.redIAdd(I),I=I.redIAdd(I);var O=this.z.redAdd(h).redSqr().redISub(i).redISub(d);return this.curve.jpoint(R,I,O)};Sr.prototype.mul=function(t,r){return t=new er(t,r),this.curve._wnafMul(this,t)};Sr.prototype.eq=function(t){if(t.type==="affine")return this.eq(t.toJ());if(this===t)return!0;var r=this.z.redSqr(),i=t.z.redSqr();if(this.x.redMul(i).redISub(t.x.redMul(r)).cmpn(0)!==0)return!1;var a=r.redMul(this.z),n=i.redMul(t.z);return this.y.redMul(n).redISub(t.y.redMul(a)).cmpn(0)===0};Sr.prototype.eqXToP=function(t){var r=this.z.redSqr(),i=t.toRed(this.curve.red).redMul(r);if(this.x.cmp(i)===0)return!0;for(var a=t.clone(),n=this.curve.redN.redMul(r);;){if(a.iadd(this.curve.n),a.cmp(this.curve.p)>=0)return!1;if(i.redIAdd(n),this.x.cmp(i)===0)return!0}};Sr.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"};Sr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var os=po,dE=Ye,Uc=jc,oV=si;function ff(e){Uc.call(this,"mont",e),this.a=new os(e.a,16).toRed(this.red),this.b=new os(e.b,16).toRed(this.red),this.i4=new os(4).toRed(this.red).redInvm(),this.two=new os(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}dE(ff,Uc);var aV=ff;ff.prototype.validate=function(t){var r=t.normalize().x,i=r.redSqr(),a=i.redMul(r).redAdd(i.redMul(this.a)).redAdd(r),n=a.redSqrt();return n.redSqr().cmp(a)===0};function mr(e,t,r){Uc.BasePoint.call(this,e,"projective"),t===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new os(t,16),this.z=new os(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}dE(mr,Uc.BasePoint);ff.prototype.decodePoint=function(t,r){return this.point(oV.toArray(t,r),1)};ff.prototype.point=function(t,r){return new mr(this,t,r)};ff.prototype.pointFromJSON=function(t){return mr.fromJSON(this,t)};mr.prototype.precompute=function(){};mr.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};mr.fromJSON=function(t,r){return new mr(t,r[0],r[1]||t.one)};mr.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"};mr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};mr.prototype.dbl=function(){var t=this.x.redAdd(this.z),r=t.redSqr(),i=this.x.redSub(this.z),a=i.redSqr(),n=r.redSub(a),l=r.redMul(a),h=n.redMul(a.redAdd(this.curve.a24.redMul(n)));return this.curve.point(l,h)};mr.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};mr.prototype.diffAdd=function(t,r){var i=this.x.redAdd(this.z),a=this.x.redSub(this.z),n=t.x.redAdd(t.z),l=t.x.redSub(t.z),h=l.redMul(i),d=n.redMul(a),m=r.z.redMul(h.redAdd(d).redSqr()),_=r.x.redMul(h.redISub(d).redSqr());return this.curve.point(m,_)};mr.prototype.mul=function(t){for(var r=t.clone(),i=this,a=this.curve.point(null,null),n=this,l=[];r.cmpn(0)!==0;r.iushrn(1))l.push(r.andln(1));for(var h=l.length-1;h>=0;h--)l[h]===0?(i=i.diffAdd(a,n),a=a.dbl()):(a=i.diffAdd(a,n),i=i.dbl());return a};mr.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};mr.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};mr.prototype.eq=function(t){return this.getX().cmp(t.getX())===0};mr.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};mr.prototype.getX=function(){return this.normalize(),this.x.fromRed()};var sV=si,Xn=po,pE=Ye,Hc=jc,fV=sV.assert;function Tn(e){this.twisted=(e.a|0)!==1,this.mOneA=this.twisted&&(e.a|0)===-1,this.extended=this.mOneA,Hc.call(this,"edwards",e),this.a=new Xn(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Xn(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Xn(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),fV(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(e.c|0)===1}pE(Tn,Hc);var lV=Tn;Tn.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)};Tn.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)};Tn.prototype.jpoint=function(t,r,i,a){return this.point(t,r,i,a)};Tn.prototype.pointFromX=function(t,r){t=new Xn(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr(),a=this.c2.redSub(this.a.redMul(i)),n=this.one.redSub(this.c2.redMul(this.d).redMul(i)),l=a.redMul(n.redInvm()),h=l.redSqrt();if(h.redSqr().redSub(l).cmp(this.zero)!==0)throw new Error("invalid point");var d=h.fromRed().isOdd();return(r&&!d||!r&&d)&&(h=h.redNeg()),this.point(t,h)};Tn.prototype.pointFromY=function(t,r){t=new Xn(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr(),a=i.redSub(this.c2),n=i.redMul(this.d).redMul(this.c2).redSub(this.a),l=a.redMul(n.redInvm());if(l.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,t)}var h=l.redSqrt();if(h.redSqr().redSub(l).cmp(this.zero)!==0)throw new Error("invalid point");return h.fromRed().isOdd()!==r&&(h=h.redNeg()),this.point(h,t)};Tn.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var r=t.x.redSqr(),i=t.y.redSqr(),a=r.redMul(this.a).redAdd(i),n=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(i)));return a.cmp(n)===0};function Zt(e,t,r,i,a){Hc.BasePoint.call(this,e,"projective"),t===null&&r===null&&i===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Xn(t,16),this.y=new Xn(r,16),this.z=i?new Xn(i,16):this.curve.one,this.t=a&&new Xn(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}pE(Zt,Hc.BasePoint);Tn.prototype.pointFromJSON=function(t){return Zt.fromJSON(this,t)};Tn.prototype.point=function(t,r,i,a){return new Zt(this,t,r,i,a)};Zt.fromJSON=function(t,r){return new Zt(t,r[0],r[1],r[2])};Zt.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"};Zt.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};Zt.prototype._extDbl=function(){var t=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr();i=i.redIAdd(i);var a=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(r),l=a.redAdd(r),h=l.redSub(i),d=a.redSub(r),m=n.redMul(h),_=l.redMul(d),S=n.redMul(d),R=h.redMul(l);return this.curve.point(m,_,R,S)};Zt.prototype._projDbl=function(){var t=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),i=this.y.redSqr(),a,n,l,h,d,m;if(this.curve.twisted){h=this.curve._mulA(r);var _=h.redAdd(i);this.zOne?(a=t.redSub(r).redSub(i).redMul(_.redSub(this.curve.two)),n=_.redMul(h.redSub(i)),l=_.redSqr().redSub(_).redSub(_)):(d=this.z.redSqr(),m=_.redSub(d).redISub(d),a=t.redSub(r).redISub(i).redMul(m),n=_.redMul(h.redSub(i)),l=_.redMul(m))}else h=r.redAdd(i),d=this.curve._mulC(this.z).redSqr(),m=h.redSub(d).redSub(d),a=this.curve._mulC(t.redISub(h)).redMul(m),n=this.curve._mulC(h).redMul(r.redISub(i)),l=h.redMul(m);return this.curve.point(a,n,l)};Zt.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};Zt.prototype._extAdd=function(t){var r=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),i=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),a=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),l=i.redSub(r),h=n.redSub(a),d=n.redAdd(a),m=i.redAdd(r),_=l.redMul(h),S=d.redMul(m),R=l.redMul(m),I=h.redMul(d);return this.curve.point(_,S,I,R)};Zt.prototype._projAdd=function(t){var r=this.z.redMul(t.z),i=r.redSqr(),a=this.x.redMul(t.x),n=this.y.redMul(t.y),l=this.curve.d.redMul(a).redMul(n),h=i.redSub(l),d=i.redAdd(l),m=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(a).redISub(n),_=r.redMul(h).redMul(m),S,R;return this.curve.twisted?(S=r.redMul(d).redMul(n.redSub(this.curve._mulA(a))),R=h.redMul(d)):(S=r.redMul(d).redMul(n.redSub(a)),R=this.curve._mulC(h).redMul(d)),this.curve.point(_,S,R)};Zt.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)};Zt.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)};Zt.prototype.mulAdd=function(t,r,i){return this.curve._wnafMulAdd(1,[this,r],[t,i],2,!1)};Zt.prototype.jmulAdd=function(t,r,i){return this.curve._wnafMulAdd(1,[this,r],[t,i],2,!0)};Zt.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this};Zt.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Zt.prototype.getX=function(){return this.normalize(),this.x.fromRed()};Zt.prototype.getY=function(){return this.normalize(),this.y.fromRed()};Zt.prototype.eq=function(t){return this===t||this.getX().cmp(t.getX())===0&&this.getY().cmp(t.getY())===0};Zt.prototype.eqXToP=function(t){var r=t.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var i=t.clone(),a=this.curve.redN.redMul(this.z);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(a),this.x.cmp(r)===0)return!0}};Zt.prototype.toP=Zt.prototype.normalize;Zt.prototype.mixedAdd=Zt.prototype.add;(function(e){var t=e;t.base=jc,t.short=nV,t.mont=aV,t.edwards=lV})(Mm);var qc={},Wc={},xt={},uV=Ci,hV=Ye;xt.inherits=hV;function cV(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function dV(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),a=0;a<e.length;a+=2)r.push(parseInt(e[a]+e[a+1],16))}else for(var i=0,a=0;a<e.length;a++){var n=e.charCodeAt(a);n<128?r[i++]=n:n<2048?(r[i++]=n>>6|192,r[i++]=n&63|128):cV(e,a)?(n=65536+((n&1023)<<10)+(e.charCodeAt(++a)&1023),r[i++]=n>>18|240,r[i++]=n>>12&63|128,r[i++]=n>>6&63|128,r[i++]=n&63|128):(r[i++]=n>>12|224,r[i++]=n>>6&63|128,r[i++]=n&63|128)}else for(a=0;a<e.length;a++)r[a]=e[a]|0;return r}xt.toArray=dV;function pV(e){for(var t="",r=0;r<e.length;r++)t+=gE(e[r].toString(16));return t}xt.toHex=pV;function vE(e){var t=e>>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}xt.htonl=vE;function vV(e,t){for(var r="",i=0;i<e.length;i++){var a=e[i];t==="little"&&(a=vE(a)),r+=mE(a.toString(16))}return r}xt.toHex32=vV;function gE(e){return e.length===1?"0"+e:e}xt.zero2=gE;function mE(e){return e.length===7?"0"+e:e.length===6?"00"+e:e.length===5?"000"+e:e.length===4?"0000"+e:e.length===3?"00000"+e:e.length===2?"000000"+e:e.length===1?"0000000"+e:e}xt.zero8=mE;function gV(e,t,r,i){var a=r-t;uV(a%4===0);for(var n=new Array(a/4),l=0,h=t;l<n.length;l++,h+=4){var d;i==="big"?d=e[h]<<24|e[h+1]<<16|e[h+2]<<8|e[h+3]:d=e[h+3]<<24|e[h+2]<<16|e[h+1]<<8|e[h],n[l]=d>>>0}return n}xt.join32=gV;function mV(e,t){for(var r=new Array(e.length*4),i=0,a=0;i<e.length;i++,a+=4){var n=e[i];t==="big"?(r[a]=n>>>24,r[a+1]=n>>>16&255,r[a+2]=n>>>8&255,r[a+3]=n&255):(r[a+3]=n>>>24,r[a+2]=n>>>16&255,r[a+1]=n>>>8&255,r[a]=n&255)}return r}xt.split32=mV;function yV(e,t){return e>>>t|e<<32-t}xt.rotr32=yV;function bV(e,t){return e<<t|e>>>32-t}xt.rotl32=bV;function wV(e,t){return e+t>>>0}xt.sum32=wV;function _V(e,t,r){return e+t+r>>>0}xt.sum32_3=_V;function MV(e,t,r,i){return e+t+r+i>>>0}xt.sum32_4=MV;function SV(e,t,r,i,a){return e+t+r+i+a>>>0}xt.sum32_5=SV;function xV(e,t,r,i){var a=e[t],n=e[t+1],l=i+n>>>0,h=(l<i?1:0)+r+a;e[t]=h>>>0,e[t+1]=l}xt.sum64=xV;function EV(e,t,r,i){var a=t+i>>>0,n=(a<t?1:0)+e+r;return n>>>0}xt.sum64_hi=EV;function RV(e,t,r,i){var a=t+i;return a>>>0}xt.sum64_lo=RV;function AV(e,t,r,i,a,n,l,h){var d=0,m=t;m=m+i>>>0,d+=m<t?1:0,m=m+n>>>0,d+=m<n?1:0,m=m+h>>>0,d+=m<h?1:0;var _=e+r+a+l+d;return _>>>0}xt.sum64_4_hi=AV;function TV(e,t,r,i,a,n,l,h){var d=t+i+n+h;return d>>>0}xt.sum64_4_lo=TV;function OV(e,t,r,i,a,n,l,h,d,m){var _=0,S=t;S=S+i>>>0,_+=S<t?1:0,S=S+n>>>0,_+=S<n?1:0,S=S+h>>>0,_+=S<h?1:0,S=S+m>>>0,_+=S<m?1:0;var R=e+r+a+l+d+_;return R>>>0}xt.sum64_5_hi=OV;function IV(e,t,r,i,a,n,l,h,d,m){var _=t+i+n+h+m;return _>>>0}xt.sum64_5_lo=IV;function PV(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}xt.rotr64_hi=PV;function CV(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}xt.rotr64_lo=CV;function BV(e,t,r){return e>>>r}xt.shr64_hi=BV;function LV(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}xt.shr64_lo=LV;var lf={},v2=xt,NV=Ci;function Kc(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}lf.BlockHash=Kc;Kc.prototype.update=function(t,r){if(t=v2.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var i=t.length%this._delta8;this.pending=t.slice(t.length-i,t.length),this.pending.length===0&&(this.pending=null),t=v2.join32(t,0,t.length-i,this.endian);for(var a=0;a<t.length;a+=this._delta32)this._update(t,a,a+this._delta32)}return this};Kc.prototype.digest=function(t){return this.update(this._pad()),NV(this.pending===null),this._digest(t)};Kc.prototype._pad=function(){var t=this.pendingTotal,r=this._delta8,i=r-(t+this.padLength)%r,a=new Array(i+this.padLength);a[0]=128;for(var n=1;n<i;n++)a[n]=0;if(t<<=3,this.endian==="big"){for(var l=8;l<this.padLength;l++)a[n++]=0;a[n++]=0,a[n++]=0,a[n++]=0,a[n++]=0,a[n++]=t>>>24&255,a[n++]=t>>>16&255,a[n++]=t>>>8&255,a[n++]=t&255}else for(a[n++]=t&255,a[n++]=t>>>8&255,a[n++]=t>>>16&255,a[n++]=t>>>24&255,a[n++]=0,a[n++]=0,a[n++]=0,a[n++]=0,l=8;l<this.padLength;l++)a[n++]=0;return a};var uf={},On={},kV=xt,mn=kV.rotr32;function $V(e,t,r,i){if(e===0)return yE(t,r,i);if(e===1||e===3)return wE(t,r,i);if(e===2)return bE(t,r,i)}On.ft_1=$V;function yE(e,t,r){return e&t^~e&r}On.ch32=yE;function bE(e,t,r){return e&t^e&r^t&r}On.maj32=bE;function wE(e,t,r){return e^t^r}On.p32=wE;function DV(e){return mn(e,2)^mn(e,13)^mn(e,22)}On.s0_256=DV;function FV(e){return mn(e,6)^mn(e,11)^mn(e,25)}On.s1_256=FV;function jV(e){return mn(e,7)^mn(e,18)^e>>>3}On.g0_256=jV;function UV(e){return mn(e,17)^mn(e,19)^e>>>10}On.g1_256=UV;var Hs=xt,HV=lf,qV=On,X0=Hs.rotl32,Nf=Hs.sum32,WV=Hs.sum32_5,KV=qV.ft_1,_E=HV.BlockHash,VV=[1518500249,1859775393,2400959708,3395469782];function En(){if(!(this instanceof En))return new En;_E.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Hs.inherits(En,_E);var zV=En;En.blockSize=512;En.outSize=160;En.hmacStrength=80;En.padLength=64;En.prototype._update=function(t,r){for(var i=this.W,a=0;a<16;a++)i[a]=t[r+a];for(;a<i.length;a++)i[a]=X0(i[a-3]^i[a-8]^i[a-14]^i[a-16],1);var n=this.h[0],l=this.h[1],h=this.h[2],d=this.h[3],m=this.h[4];for(a=0;a<i.length;a++){var _=~~(a/20),S=WV(X0(n,5),KV(_,l,h,d),m,i[a],VV[_]);m=d,d=h,h=X0(l,30),l=n,n=S}this.h[0]=Nf(this.h[0],n),this.h[1]=Nf(this.h[1],l),this.h[2]=Nf(this.h[2],h),this.h[3]=Nf(this.h[3],d),this.h[4]=Nf(this.h[4],m)};En.prototype._digest=function(t){return t==="hex"?Hs.toHex32(this.h,"big"):Hs.split32(this.h,"big")};var qs=xt,GV=lf,hf=On,YV=Ci,Di=qs.sum32,ZV=qs.sum32_4,XV=qs.sum32_5,JV=hf.ch32,QV=hf.maj32,ez=hf.s0_256,tz=hf.s1_256,rz=hf.g0_256,iz=hf.g1_256,ME=GV.BlockHash,nz=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Rn(){if(!(this instanceof Rn))return new Rn;ME.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=nz,this.W=new Array(64)}qs.inherits(Rn,ME);var SE=Rn;Rn.blockSize=512;Rn.outSize=256;Rn.hmacStrength=192;Rn.padLength=64;Rn.prototype._update=function(t,r){for(var i=this.W,a=0;a<16;a++)i[a]=t[r+a];for(;a<i.length;a++)i[a]=ZV(iz(i[a-2]),i[a-7],rz(i[a-15]),i[a-16]);var n=this.h[0],l=this.h[1],h=this.h[2],d=this.h[3],m=this.h[4],_=this.h[5],S=this.h[6],R=this.h[7];for(YV(this.k.length===i.length),a=0;a<i.length;a++){var I=XV(R,tz(m),JV(m,_,S),this.k[a],i[a]),O=Di(ez(n),QV(n,l,h));R=S,S=_,_=m,m=Di(d,I),d=h,h=l,l=n,n=Di(I,O)}this.h[0]=Di(this.h[0],n),this.h[1]=Di(this.h[1],l),this.h[2]=Di(this.h[2],h),this.h[3]=Di(this.h[3],d),this.h[4]=Di(this.h[4],m),this.h[5]=Di(this.h[5],_),this.h[6]=Di(this.h[6],S),this.h[7]=Di(this.h[7],R)};Rn.prototype._digest=function(t){return t==="hex"?qs.toHex32(this.h,"big"):qs.split32(this.h,"big")};var Iv=xt,xE=SE;function ao(){if(!(this instanceof ao))return new ao;xE.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}Iv.inherits(ao,xE);var oz=ao;ao.blockSize=512;ao.outSize=224;ao.hmacStrength=192;ao.padLength=64;ao.prototype._digest=function(t){return t==="hex"?Iv.toHex32(this.h.slice(0,7),"big"):Iv.split32(this.h.slice(0,7),"big")};var Jr=xt,az=lf,sz=Ci,yn=Jr.rotr64_hi,bn=Jr.rotr64_lo,EE=Jr.shr64_hi,RE=Jr.shr64_lo,bo=Jr.sum64,J0=Jr.sum64_hi,Q0=Jr.sum64_lo,fz=Jr.sum64_4_hi,lz=Jr.sum64_4_lo,uz=Jr.sum64_5_hi,hz=Jr.sum64_5_lo,AE=az.BlockHash,cz=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Zi(){if(!(this instanceof Zi))return new Zi;AE.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=cz,this.W=new Array(160)}Jr.inherits(Zi,AE);var TE=Zi;Zi.blockSize=1024;Zi.outSize=512;Zi.hmacStrength=192;Zi.padLength=128;Zi.prototype._prepareBlock=function(t,r){for(var i=this.W,a=0;a<32;a++)i[a]=t[r+a];for(;a<i.length;a+=2){var n=Sz(i[a-4],i[a-3]),l=xz(i[a-4],i[a-3]),h=i[a-14],d=i[a-13],m=_z(i[a-30],i[a-29]),_=Mz(i[a-30],i[a-29]),S=i[a-32],R=i[a-31];i[a]=fz(n,l,h,d,m,_,S,R),i[a+1]=lz(n,l,h,d,m,_,S,R)}};Zi.prototype._update=function(t,r){this._prepareBlock(t,r);var i=this.W,a=this.h[0],n=this.h[1],l=this.h[2],h=this.h[3],d=this.h[4],m=this.h[5],_=this.h[6],S=this.h[7],R=this.h[8],I=this.h[9],O=this.h[10],L=this.h[11],B=this.h[12],P=this.h[13],C=this.h[14],N=this.h[15];sz(this.k.length===i.length);for(var $=0;$<i.length;$+=2){var W=C,G=N,re=bz(R,I),J=wz(R,I),K=dz(R,I,O,L,B),se=pz(R,I,O,L,B,P),M=this.k[$],o=this.k[$+1],f=i[$],u=i[$+1],c=uz(W,G,re,J,K,se,M,o,f,u),p=hz(W,G,re,J,K,se,M,o,f,u);W=mz(a,n),G=yz(a,n),re=vz(a,n,l,h,d),J=gz(a,n,l,h,d,m);var w=J0(W,G,re,J),x=Q0(W,G,re,J);C=B,N=P,B=O,P=L,O=R,L=I,R=J0(_,S,c,p),I=Q0(S,S,c,p),_=d,S=m,d=l,m=h,l=a,h=n,a=J0(c,p,w,x),n=Q0(c,p,w,x)}bo(this.h,0,a,n),bo(this.h,2,l,h),bo(this.h,4,d,m),bo(this.h,6,_,S),bo(this.h,8,R,I),bo(this.h,10,O,L),bo(this.h,12,B,P),bo(this.h,14,C,N)};Zi.prototype._digest=function(t){return t==="hex"?Jr.toHex32(this.h,"big"):Jr.split32(this.h,"big")};function dz(e,t,r,i,a){var n=e&r^~e&a;return n<0&&(n+=4294967296),n}function pz(e,t,r,i,a,n){var l=t&i^~t&n;return l<0&&(l+=4294967296),l}function vz(e,t,r,i,a){var n=e&r^e&a^r&a;return n<0&&(n+=4294967296),n}function gz(e,t,r,i,a,n){var l=t&i^t&n^i&n;return l<0&&(l+=4294967296),l}function mz(e,t){var r=yn(e,t,28),i=yn(t,e,2),a=yn(t,e,7),n=r^i^a;return n<0&&(n+=4294967296),n}function yz(e,t){var r=bn(e,t,28),i=bn(t,e,2),a=bn(t,e,7),n=r^i^a;return n<0&&(n+=4294967296),n}function bz(e,t){var r=yn(e,t,14),i=yn(e,t,18),a=yn(t,e,9),n=r^i^a;return n<0&&(n+=4294967296),n}function wz(e,t){var r=bn(e,t,14),i=bn(e,t,18),a=bn(t,e,9),n=r^i^a;return n<0&&(n+=4294967296),n}function _z(e,t){var r=yn(e,t,1),i=yn(e,t,8),a=EE(e,t,7),n=r^i^a;return n<0&&(n+=4294967296),n}function Mz(e,t){var r=bn(e,t,1),i=bn(e,t,8),a=RE(e,t,7),n=r^i^a;return n<0&&(n+=4294967296),n}function Sz(e,t){var r=yn(e,t,19),i=yn(t,e,29),a=EE(e,t,6),n=r^i^a;return n<0&&(n+=4294967296),n}function xz(e,t){var r=bn(e,t,19),i=bn(t,e,29),a=RE(e,t,6),n=r^i^a;return n<0&&(n+=4294967296),n}var Pv=xt,OE=TE;function so(){if(!(this instanceof so))return new so;OE.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}Pv.inherits(so,OE);var Ez=so;so.blockSize=1024;so.outSize=384;so.hmacStrength=192;so.padLength=128;so.prototype._digest=function(t){return t==="hex"?Pv.toHex32(this.h.slice(0,12),"big"):Pv.split32(this.h.slice(0,12),"big")};uf.sha1=zV;uf.sha224=oz;uf.sha256=SE;uf.sha384=Ez;uf.sha512=TE;var IE={},Aa=xt,Rz=lf,gu=Aa.rotl32,g2=Aa.sum32,kf=Aa.sum32_3,m2=Aa.sum32_4,PE=Rz.BlockHash;function An(){if(!(this instanceof An))return new An;PE.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}Aa.inherits(An,PE);IE.ripemd160=An;An.blockSize=512;An.outSize=160;An.hmacStrength=192;An.padLength=64;An.prototype._update=function(t,r){for(var i=this.h[0],a=this.h[1],n=this.h[2],l=this.h[3],h=this.h[4],d=i,m=a,_=n,S=l,R=h,I=0;I<80;I++){var O=g2(gu(m2(i,y2(I,a,n,l),t[Oz[I]+r],Az(I)),Pz[I]),h);i=h,h=l,l=gu(n,10),n=a,a=O,O=g2(gu(m2(d,y2(79-I,m,_,S),t[Iz[I]+r],Tz(I)),Cz[I]),R),d=R,R=S,S=gu(_,10),_=m,m=O}O=kf(this.h[1],n,S),this.h[1]=kf(this.h[2],l,R),this.h[2]=kf(this.h[3],h,d),this.h[3]=kf(this.h[4],i,m),this.h[4]=kf(this.h[0],a,_),this.h[0]=O};An.prototype._digest=function(t){return t==="hex"?Aa.toHex32(this.h,"little"):Aa.split32(this.h,"little")};function y2(e,t,r,i){return e<=15?t^r^i:e<=31?t&r|~t&i:e<=47?(t|~r)^i:e<=63?t&i|r&~i:t^(r|~i)}function Az(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function Tz(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}var Oz=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],Iz=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],Pz=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],Cz=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],Bz=xt,Lz=Ci;function Ws(e,t,r){if(!(this instanceof Ws))return new Ws(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(Bz.toArray(t,r))}var Nz=Ws;Ws.prototype._init=function(t){t.length>this.blockSize&&(t=new this.Hash().update(t).digest()),Lz(t.length<=this.blockSize);for(var r=t.length;r<this.blockSize;r++)t.push(0);for(r=0;r<t.length;r++)t[r]^=54;for(this.inner=new this.Hash().update(t),r=0;r<t.length;r++)t[r]^=106;this.outer=new this.Hash().update(t)};Ws.prototype.update=function(t,r){return this.inner.update(t,r),this};Ws.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)};(function(e){var t=e;t.utils=xt,t.common=lf,t.sha=uf,t.ripemd=IE,t.hmac=Nz,t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160})(Wc);var ep,b2;function kz(){return b2||(b2=1,ep={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}),ep}(function(e){var t=e,r=Wc,i=Mm,a=si,n=a.assert;function l(m){m.type==="short"?this.curve=new i.short(m):m.type==="edwards"?this.curve=new i.edwards(m):this.curve=new i.mont(m),this.g=this.curve.g,this.n=this.curve.n,this.hash=m.hash,n(this.g.validate(),"Invalid curve"),n(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}t.PresetCurve=l;function h(m,_){Object.defineProperty(t,m,{configurable:!0,enumerable:!0,get:function(){var S=new l(_);return Object.defineProperty(t,m,{configurable:!0,enumerable:!0,value:S}),S}})}h("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:r.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),h("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:r.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),h("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:r.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),h("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:r.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),h("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:r.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),h("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["9"]}),h("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var d;try{d=kz()}catch{d=void 0}h("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:r.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",d]})})(qc);var $z=Wc,ba=_m,CE=Ci;function Ko(e){if(!(this instanceof Ko))return new Ko(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=ba.toArray(e.entropy,e.entropyEnc||"hex"),r=ba.toArray(e.nonce,e.nonceEnc||"hex"),i=ba.toArray(e.pers,e.persEnc||"hex");CE(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var Dz=Ko;Ko.prototype._init=function(t,r,i){var a=t.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n<this.V.length;n++)this.K[n]=0,this.V[n]=1;this._update(a),this._reseed=1,this.reseedInterval=281474976710656};Ko.prototype._hmac=function(){return new $z.hmac(this.hash,this.K)};Ko.prototype._update=function(t){var r=this._hmac().update(this.V).update([0]);t&&(r=r.update(t)),this.K=r.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())};Ko.prototype.reseed=function(t,r,i,a){typeof r!="string"&&(a=i,i=r,r=null),t=ba.toArray(t,r),i=ba.toArray(i,a),CE(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1};Ko.prototype.generate=function(t,r,i,a){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(a=i,i=r,r=null),i&&(i=ba.toArray(i,a||"hex"),this._update(i));for(var n=[];n.length<t;)this.V=this._hmac().update(this.V).digest(),n=n.concat(this.V);var l=n.slice(0,t);return this._update(i),this._reseed++,ba.encode(l,r)};var Fz=po,jz=si,Cv=jz.assert;function Nr(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}var Uz=Nr;Nr.fromPublic=function(t,r,i){return r instanceof Nr?r:new Nr(t,{pub:r,pubEnc:i})};Nr.fromPrivate=function(t,r,i){return r instanceof Nr?r:new Nr(t,{priv:r,privEnc:i})};Nr.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};Nr.prototype.getPublic=function(t,r){return typeof t=="string"&&(r=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),r?this.pub.encode(r,t):this.pub};Nr.prototype.getPrivate=function(t){return t==="hex"?this.priv.toString(16,2):this.priv};Nr.prototype._importPrivate=function(t,r){this.priv=new Fz(t,r||16),this.priv=this.priv.umod(this.ec.curve.n)};Nr.prototype._importPublic=function(t,r){if(t.x||t.y){this.ec.curve.type==="mont"?Cv(t.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&Cv(t.x&&t.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(t.x,t.y);return}this.pub=this.ec.curve.decodePoint(t,r)};Nr.prototype.derive=function(t){return t.validate()||Cv(t.validate(),"public point not validated"),t.mul(this.priv).getX()};Nr.prototype.sign=function(t,r,i){return this.ec.sign(t,this,r,i)};Nr.prototype.verify=function(t,r){return this.ec.verify(t,r,this)};Nr.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var Ph=po,xm=si,Hz=xm.assert;function Vc(e,t){if(e instanceof Vc)return e;this._importDER(e,t)||(Hz(e.r&&e.s,"Signature without r or s"),this.r=new Ph(e.r,16),this.s=new Ph(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var qz=Vc;function Wz(){this.place=0}function tp(e,t){var r=e[t.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4||e[t.place]===0)return!1;for(var a=0,n=0,l=t.place;n<i;n++,l++)a<<=8,a|=e[l],a>>>=0;return a<=127?!1:(t.place=l,a)}function w2(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t<r;)t++;return t===0?e:e.slice(t)}Vc.prototype._importDER=function(t,r){t=xm.toArray(t,r);var i=new Wz;if(t[i.place++]!==48)return!1;var a=tp(t,i);if(a===!1||a+i.place!==t.length||t[i.place++]!==2)return!1;var n=tp(t,i);if(n===!1||t[i.place]&128)return!1;var l=t.slice(i.place,n+i.place);if(i.place+=n,t[i.place++]!==2)return!1;var h=tp(t,i);if(h===!1||t.length!==h+i.place||t[i.place]&128)return!1;var d=t.slice(i.place,h+i.place);if(l[0]===0)if(l[1]&128)l=l.slice(1);else return!1;if(d[0]===0)if(d[1]&128)d=d.slice(1);else return!1;return this.r=new Ph(l),this.s=new Ph(d),this.recoveryParam=null,!0};function rp(e,t){if(t<128){e.push(t);return}var r=1+(Math.log(t)/Math.LN2>>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}Vc.prototype.toDER=function(t){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=w2(r),i=w2(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var a=[2];rp(a,r.length),a=a.concat(r),a.push(2),rp(a,i.length);var n=a.concat(i),l=[48];return rp(l,n.length),l=l.concat(n),xm.encode(l,t)};var ip,_2;function Kz(){if(_2)return ip;_2=1;var e=po,t=Dz,r=si,i=qc,a=vm(),n=r.assert,l=Uz,h=qz;function d(m){if(!(this instanceof d))return new d(m);typeof m=="string"&&(n(Object.prototype.hasOwnProperty.call(i,m),"Unknown curve "+m),m=i[m]),m instanceof i.PresetCurve&&(m={curve:m}),this.curve=m.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=m.curve.g,this.g.precompute(m.curve.n.bitLength()+1),this.hash=m.hash||m.curve.hash}return ip=d,d.prototype.keyPair=function(_){return new l(this,_)},d.prototype.keyFromPrivate=function(_,S){return l.fromPrivate(this,_,S)},d.prototype.keyFromPublic=function(_,S){return l.fromPublic(this,_,S)},d.prototype.genKeyPair=function(_){_||(_={});for(var S=new t({hash:this.hash,pers:_.pers,persEnc:_.persEnc||"utf8",entropy:_.entropy||a(this.hash.hmacStrength),entropyEnc:_.entropy&&_.entropyEnc||"utf8",nonce:this.n.toArray()}),R=this.n.byteLength(),I=this.n.sub(new e(2));;){var O=new e(S.generate(R));if(!(O.cmp(I)>0))return O.iaddn(1),this.keyFromPrivate(O)}},d.prototype._truncateToN=function(_,S){var R=_.byteLength()*8-this.n.bitLength();return R>0&&(_=_.ushrn(R)),!S&&_.cmp(this.n)>=0?_.sub(this.n):_},d.prototype.sign=function(_,S,R,I){typeof R=="object"&&(I=R,R=null),I||(I={}),S=this.keyFromPrivate(S,R),_=this._truncateToN(new e(_,16));for(var O=this.n.byteLength(),L=S.getPrivate().toArray("be",O),B=_.toArray("be",O),P=new t({hash:this.hash,entropy:L,nonce:B,pers:I.pers,persEnc:I.persEnc||"utf8"}),C=this.n.sub(new e(1)),N=0;;N++){var $=I.k?I.k(N):new e(P.generate(this.n.byteLength()));if($=this._truncateToN($,!0),!($.cmpn(1)<=0||$.cmp(C)>=0)){var W=this.g.mul($);if(!W.isInfinity()){var G=W.getX(),re=G.umod(this.n);if(re.cmpn(0)!==0){var J=$.invm(this.n).mul(re.mul(S.getPrivate()).iadd(_));if(J=J.umod(this.n),J.cmpn(0)!==0){var K=(W.getY().isOdd()?1:0)|(G.cmp(re)!==0?2:0);return I.canonical&&J.cmp(this.nh)>0&&(J=this.n.sub(J),K^=1),new h({r:re,s:J,recoveryParam:K})}}}}}},d.prototype.verify=function(_,S,R,I){_=this._truncateToN(new e(_,16)),R=this.keyFromPublic(R,I),S=new h(S,"hex");var O=S.r,L=S.s;if(O.cmpn(1)<0||O.cmp(this.n)>=0||L.cmpn(1)<0||L.cmp(this.n)>=0)return!1;var B=L.invm(this.n),P=B.mul(_).umod(this.n),C=B.mul(O).umod(this.n),N;return this.curve._maxwellTrick?(N=this.g.jmulAdd(P,R.getPublic(),C),N.isInfinity()?!1:N.eqXToP(O)):(N=this.g.mulAdd(P,R.getPublic(),C),N.isInfinity()?!1:N.getX().umod(this.n).cmp(O)===0)},d.prototype.recoverPubKey=function(m,_,S,R){n((3&S)===S,"The recovery param is more than two bits"),_=new h(_,R);var I=this.n,O=new e(m),L=_.r,B=_.s,P=S&1,C=S>>1;if(L.cmp(this.curve.p.umod(this.curve.n))>=0&&C)throw new Error("Unable to find sencond key candinate");C?L=this.curve.pointFromX(L.add(this.curve.n),P):L=this.curve.pointFromX(L,P);var N=_.r.invm(I),$=I.sub(O).mul(N).umod(I),W=B.mul(N).umod(I);return this.g.mulAdd($,L,W)},d.prototype.getKeyRecoveryParam=function(m,_,S,R){if(_=new h(_,R),_.recoveryParam!==null)return _.recoveryParam;for(var I=0;I<4;I++){var O;try{O=this.recoverPubKey(m,_,I)}catch{continue}if(O.eq(S))return I}throw new Error("Unable to find valid recovery factor")},ip}var Yl=si,BE=Yl.assert,M2=Yl.parseBytes,cf=Yl.cachedProperty;function vr(e,t){this.eddsa=e,this._secret=M2(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=M2(t.pub)}vr.fromPublic=function(t,r){return r instanceof vr?r:new vr(t,{pub:r})};vr.fromSecret=function(t,r){return r instanceof vr?r:new vr(t,{secret:r})};vr.prototype.secret=function(){return this._secret};cf(vr,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});cf(vr,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});cf(vr,"privBytes",function(){var t=this.eddsa,r=this.hash(),i=t.encodingLength-1,a=r.slice(0,t.encodingLength);return a[0]&=248,a[i]&=127,a[i]|=64,a});cf(vr,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});cf(vr,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});cf(vr,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});vr.prototype.sign=function(t){return BE(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)};vr.prototype.verify=function(t,r){return this.eddsa.verify(t,r,this)};vr.prototype.getSecret=function(t){return BE(this._secret,"KeyPair is public only"),Yl.encode(this.secret(),t)};vr.prototype.getPublic=function(t){return Yl.encode(this.pubBytes(),t)};var Vz=vr,zz=po,zc=si,S2=zc.assert,Gc=zc.cachedProperty,Gz=zc.parseBytes;function qa(e,t){this.eddsa=e,typeof t!="object"&&(t=Gz(t)),Array.isArray(t)&&(S2(t.length===e.encodingLength*2,"Signature has invalid size"),t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),S2(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof zz&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}Gc(qa,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});Gc(qa,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});Gc(qa,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});Gc(qa,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});qa.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};qa.prototype.toHex=function(){return zc.encode(this.toBytes(),"hex").toUpperCase()};var Yz=qa,Zz=Wc,Xz=qc,Ks=si,Jz=Ks.assert,LE=Ks.parseBytes,NE=Vz,x2=Yz;function Qr(e){if(Jz(e==="ed25519","only tested with ed25519 so far"),!(this instanceof Qr))return new Qr(e);e=Xz[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=Zz.sha512}var Qz=Qr;Qr.prototype.sign=function(t,r){t=LE(t);var i=this.keyFromSecret(r),a=this.hashInt(i.messagePrefix(),t),n=this.g.mul(a),l=this.encodePoint(n),h=this.hashInt(l,i.pubBytes(),t).mul(i.priv()),d=a.add(h).umod(this.curve.n);return this.makeSignature({R:n,S:d,Rencoded:l})};Qr.prototype.verify=function(t,r,i){if(t=LE(t),r=this.makeSignature(r),r.S().gte(r.eddsa.curve.n)||r.S().isNeg())return!1;var a=this.keyFromPublic(i),n=this.hashInt(r.Rencoded(),a.pubBytes(),t),l=this.g.mul(r.S()),h=r.R().add(a.pub().mul(n));return h.eq(l)};Qr.prototype.hashInt=function(){for(var t=this.hash(),r=0;r<arguments.length;r++)t.update(arguments[r]);return Ks.intFromLE(t.digest()).umod(this.curve.n)};Qr.prototype.keyFromPublic=function(t){return NE.fromPublic(this,t)};Qr.prototype.keyFromSecret=function(t){return NE.fromSecret(this,t)};Qr.prototype.makeSignature=function(t){return t instanceof x2?t:new x2(this,t)};Qr.prototype.encodePoint=function(t){var r=t.getY().toArray("le",this.encodingLength);return r[this.encodingLength-1]|=t.getX().isOdd()?128:0,r};Qr.prototype.decodePoint=function(t){t=Ks.parseBytes(t);var r=t.length-1,i=t.slice(0,r).concat(t[r]&-129),a=(t[r]&128)!==0,n=Ks.intFromLE(i);return this.curve.pointFromY(n,a)};Qr.prototype.encodeInt=function(t){return t.toArray("le",this.encodingLength)};Qr.prototype.decodeInt=function(t){return Ks.intFromLE(t)};Qr.prototype.isPoint=function(t){return t instanceof this.pointClass};var E2;function Em(){return E2||(E2=1,function(e){var t=e;t.version=eV.version,t.utils=si,t.rand=vm(),t.curve=Mm,t.curves=qc,t.ec=Kz(),t.eddsa=Qz}(Z0)),Z0}var Qi={},Rm={},Am={exports:{}};Am.exports;(function(e){(function(t,r){function i(M,o){if(!M)throw new Error(o||"Assertion failed")}function a(M,o){M.super_=o;var f=function(){};f.prototype=o.prototype,M.prototype=new f,M.prototype.constructor=M}function n(M,o,f){if(n.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(M||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Le.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var c=0;o[0]==="-"&&(c++,this.negative=1),c<o.length&&(f===16?this._parseHex(o,c,u):(this._parseBase(o,f,c),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p,w,x=0;if(u==="be")for(c=o.length-1,p=0;c>=0;c-=3)w=o[c]|o[c-1]<<8|o[c-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(c=0,p=0;c<o.length;c+=3)w=o[c]|o[c+1]<<8|o[c+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function h(M,o){var f=M.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(M,o,f){var u=h(M,f);return f-1>=o&&(u|=h(M,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p=0,w=0,x;if(u==="be")for(c=o.length-1;c>=f;c-=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(c=g%2===0?f+1:f;c<o.length;c+=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(M,o,f,u){for(var c=0,p=Math.min(M.length,f),w=o;w<p;w++){var x=M.charCodeAt(w)-48;c*=u,x>=49?c+=x-49+10:x>=17?c+=x-17+10:c+=x}return c}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var c=0,p=1;p<=67108863;p*=f)c++;c--,p=p/f|0;for(var w=o.length-u,x=w%c,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=c)s=m(o,v,v+c,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var c=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<c|p)&16777215).toString(16);p=x>>>24-c&16777215,p!==0||w!==this.length-1?u=_[6-g.length]+g+u:u=g+u,c+=2,c>=26&&(c-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var D=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=D+u:u=_[s-D.length]+D+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var c=this.byteLength(),p=u||Math.max(1,c);i(c<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-c;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(M){for(var o=new Array(M.bitLength()),f=0;f<o.length;f++){var u=f/26|0,c=f%26;o[f]=(M.words[u]&1<<c)>>>c}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var c=0;c<u.length;c++)this.words[c]=f.words[c]^u.words[c];if(this!==f)for(;c<f.length;c++)this.words[c]=f.words[c];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var c=0;c<f;c++)this.words[c]=~this.words[c]&67108863;return u>0&&(this.words[c]=~this.words[c]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,c=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<c:this.words[u]=this.words[u]&~(1<<c),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,c;this.length>o.length?(u=this,c=o):(u=o,c=this);for(var p=0,w=0;w<c.length;w++)f=(u.words[w]|0)+(c.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var c,p;u>0?(c=this,p=o):(c=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(c.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<c.length;x++)f=(c.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<c.length&&c!==this)for(;x<c.length;x++)this.words[x]=c.words[x];return this.length=Math.max(this.length,x),c!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(M,o,f){f.negative=o.negative^M.negative;var u=M.length+o.length|0;f.length=u,u=u-1|0;var c=M.words[0]|0,p=o.words[0]|0,w=c*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,D=Math.min(s,o.length-1),Y=Math.max(0,s-M.length+1);Y<=D;Y++){var Q=s-Y|0;c=M.words[Q]|0,p=o.words[Y]|0,w=c*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var L=function(o,f,u){var c=o.words,p=f.words,w=u.words,x=0,g,s,v,T=c[0]|0,D=T&8191,Y=T>>>13,Q=c[1]|0,A=Q&8191,E=Q>>>13,q=c[2]|0,V=q&8191,X=q>>>13,b=c[3]|0,y=b&8191,F=b>>>13,U=c[4]|0,Z=U&8191,j=U>>>13,k=c[5]|0,H=k&8191,z=k>>>13,oe=c[6]|0,ee=oe&8191,ne=oe>>>13,me=c[7]|0,he=me&8191,ue=me>>>13,xe=c[8]|0,le=xe&8191,ve=xe>>>13,ce=c[9]|0,ie=ce&8191,fe=ce>>>13,Ee=p[0]|0,de=Ee&8191,be=Ee>>>13,Ke=p[1]|0,we=Ke&8191,Se=Ke>>>13,qe=p[2]|0,ge=qe&8191,Me=qe>>>13,Ve=p[3]|0,_e=Ve&8191,Be=Ve>>>13,ot=p[4]|0,Ae=ot&8191,Ne=ot>>>13,st=p[5]|0,Pe=st&8191,De=st>>>13,ut=p[6]|0,Re=ut&8191,Fe=ut>>>13,ht=p[7]|0,Te=ht&8191,ke=ht>>>13,ct=p[8]|0,Oe=ct&8191,je=ct>>>13,ft=p[9]|0,Ie=ft&8191,$e=ft>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(D,de),s=Math.imul(D,be),s=s+Math.imul(Y,de)|0,v=Math.imul(Y,be);var tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(tt>>>26)|0,tt&=67108863,g=Math.imul(A,de),s=Math.imul(A,be),s=s+Math.imul(E,de)|0,v=Math.imul(E,be),g=g+Math.imul(D,we)|0,s=s+Math.imul(D,Se)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,Se)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,de),s=Math.imul(V,be),s=s+Math.imul(X,de)|0,v=Math.imul(X,be),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,Se)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,Se)|0,g=g+Math.imul(D,ge)|0,s=s+Math.imul(D,Me)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,de),s=Math.imul(y,be),s=s+Math.imul(F,de)|0,v=Math.imul(F,be),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,Se)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,Se)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(D,_e)|0,s=s+Math.imul(D,Be)|0,s=s+Math.imul(Y,_e)|0,v=v+Math.imul(Y,Be)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(Z,de),s=Math.imul(Z,be),s=s+Math.imul(j,de)|0,v=Math.imul(j,be),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,Se)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,Se)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,_e)|0,s=s+Math.imul(A,Be)|0,s=s+Math.imul(E,_e)|0,v=v+Math.imul(E,Be)|0,g=g+Math.imul(D,Ae)|0,s=s+Math.imul(D,Ne)|0,s=s+Math.imul(Y,Ae)|0,v=v+Math.imul(Y,Ne)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(H,de),s=Math.imul(H,be),s=s+Math.imul(z,de)|0,v=Math.imul(z,be),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,Se)|0,s=s+Math.imul(j,we)|0,v=v+Math.imul(j,Se)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(V,_e)|0,s=s+Math.imul(V,Be)|0,s=s+Math.imul(X,_e)|0,v=v+Math.imul(X,Be)|0,g=g+Math.imul(A,Ae)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Ae)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(D,Pe)|0,s=s+Math.imul(D,De)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,De)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(ee,de),s=Math.imul(ee,be),s=s+Math.imul(ne,de)|0,v=Math.imul(ne,be),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,Se)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,Se)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(j,ge)|0,v=v+Math.imul(j,Me)|0,g=g+Math.imul(y,_e)|0,s=s+Math.imul(y,Be)|0,s=s+Math.imul(F,_e)|0,v=v+Math.imul(F,Be)|0,g=g+Math.imul(V,Ae)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Ae)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(D,Re)|0,s=s+Math.imul(D,Fe)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Fe)|0;var Dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,g=Math.imul(he,de),s=Math.imul(he,be),s=s+Math.imul(ue,de)|0,v=Math.imul(ue,be),g=g+Math.imul(ee,we)|0,s=s+Math.imul(ee,Se)|0,s=s+Math.imul(ne,we)|0,v=v+Math.imul(ne,Se)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,_e)|0,s=s+Math.imul(Z,Be)|0,s=s+Math.imul(j,_e)|0,v=v+Math.imul(j,Be)|0,g=g+Math.imul(y,Ae)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(F,Ae)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Fe)|0,g=g+Math.imul(D,Te)|0,s=s+Math.imul(D,ke)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,ke)|0;var qt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(qt>>>26)|0,qt&=67108863,g=Math.imul(le,de),s=Math.imul(le,be),s=s+Math.imul(ve,de)|0,v=Math.imul(ve,be),g=g+Math.imul(he,we)|0,s=s+Math.imul(he,Se)|0,s=s+Math.imul(ue,we)|0,v=v+Math.imul(ue,Se)|0,g=g+Math.imul(ee,ge)|0,s=s+Math.imul(ee,Me)|0,s=s+Math.imul(ne,ge)|0,v=v+Math.imul(ne,Me)|0,g=g+Math.imul(H,_e)|0,s=s+Math.imul(H,Be)|0,s=s+Math.imul(z,_e)|0,v=v+Math.imul(z,Be)|0,g=g+Math.imul(Z,Ae)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(j,Ae)|0,v=v+Math.imul(j,Ne)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Fe)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,ke)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,ke)|0,g=g+Math.imul(D,Oe)|0,s=s+Math.imul(D,je)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,je)|0;var Wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,g=Math.imul(ie,de),s=Math.imul(ie,be),s=s+Math.imul(fe,de)|0,v=Math.imul(fe,be),g=g+Math.imul(le,we)|0,s=s+Math.imul(le,Se)|0,s=s+Math.imul(ve,we)|0,v=v+Math.imul(ve,Se)|0,g=g+Math.imul(he,ge)|0,s=s+Math.imul(he,Me)|0,s=s+Math.imul(ue,ge)|0,v=v+Math.imul(ue,Me)|0,g=g+Math.imul(ee,_e)|0,s=s+Math.imul(ee,Be)|0,s=s+Math.imul(ne,_e)|0,v=v+Math.imul(ne,Be)|0,g=g+Math.imul(H,Ae)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Ae)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(j,Pe)|0,v=v+Math.imul(j,De)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Fe)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,ke)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,ke)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(D,Ie)|0,s=s+Math.imul(D,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,Se),s=s+Math.imul(fe,we)|0,v=Math.imul(fe,Se),g=g+Math.imul(le,ge)|0,s=s+Math.imul(le,Me)|0,s=s+Math.imul(ve,ge)|0,v=v+Math.imul(ve,Me)|0,g=g+Math.imul(he,_e)|0,s=s+Math.imul(he,Be)|0,s=s+Math.imul(ue,_e)|0,v=v+Math.imul(ue,Be)|0,g=g+Math.imul(ee,Ae)|0,s=s+Math.imul(ee,Ne)|0,s=s+Math.imul(ne,Ae)|0,v=v+Math.imul(ne,Ne)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(j,Re)|0,v=v+Math.imul(j,Fe)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,ke)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,ke)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Me),s=s+Math.imul(fe,ge)|0,v=Math.imul(fe,Me),g=g+Math.imul(le,_e)|0,s=s+Math.imul(le,Be)|0,s=s+Math.imul(ve,_e)|0,v=v+Math.imul(ve,Be)|0,g=g+Math.imul(he,Ae)|0,s=s+Math.imul(he,Ne)|0,s=s+Math.imul(ue,Ae)|0,v=v+Math.imul(ue,Ne)|0,g=g+Math.imul(ee,Pe)|0,s=s+Math.imul(ee,De)|0,s=s+Math.imul(ne,Pe)|0,v=v+Math.imul(ne,De)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Fe)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,ke)|0,s=s+Math.imul(j,Te)|0,v=v+Math.imul(j,ke)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0;var Tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,g=Math.imul(ie,_e),s=Math.imul(ie,Be),s=s+Math.imul(fe,_e)|0,v=Math.imul(fe,Be),g=g+Math.imul(le,Ae)|0,s=s+Math.imul(le,Ne)|0,s=s+Math.imul(ve,Ae)|0,v=v+Math.imul(ve,Ne)|0,g=g+Math.imul(he,Pe)|0,s=s+Math.imul(he,De)|0,s=s+Math.imul(ue,Pe)|0,v=v+Math.imul(ue,De)|0,g=g+Math.imul(ee,Re)|0,s=s+Math.imul(ee,Fe)|0,s=s+Math.imul(ne,Re)|0,v=v+Math.imul(ne,Fe)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,ke)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,ke)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(j,Oe)|0,v=v+Math.imul(j,je)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Ae),s=Math.imul(ie,Ne),s=s+Math.imul(fe,Ae)|0,v=Math.imul(fe,Ne),g=g+Math.imul(le,Pe)|0,s=s+Math.imul(le,De)|0,s=s+Math.imul(ve,Pe)|0,v=v+Math.imul(ve,De)|0,g=g+Math.imul(he,Re)|0,s=s+Math.imul(he,Fe)|0,s=s+Math.imul(ue,Re)|0,v=v+Math.imul(ue,Fe)|0,g=g+Math.imul(ee,Te)|0,s=s+Math.imul(ee,ke)|0,s=s+Math.imul(ne,Te)|0,v=v+Math.imul(ne,ke)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(j,Ie)|0,v=v+Math.imul(j,$e)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,De),s=s+Math.imul(fe,Pe)|0,v=Math.imul(fe,De),g=g+Math.imul(le,Re)|0,s=s+Math.imul(le,Fe)|0,s=s+Math.imul(ve,Re)|0,v=v+Math.imul(ve,Fe)|0,g=g+Math.imul(he,Te)|0,s=s+Math.imul(he,ke)|0,s=s+Math.imul(ue,Te)|0,v=v+Math.imul(ue,ke)|0,g=g+Math.imul(ee,Oe)|0,s=s+Math.imul(ee,je)|0,s=s+Math.imul(ne,Oe)|0,v=v+Math.imul(ne,je)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0;var Ct=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Fe),s=s+Math.imul(fe,Re)|0,v=Math.imul(fe,Fe),g=g+Math.imul(le,Te)|0,s=s+Math.imul(le,ke)|0,s=s+Math.imul(ve,Te)|0,v=v+Math.imul(ve,ke)|0,g=g+Math.imul(he,Oe)|0,s=s+Math.imul(he,je)|0,s=s+Math.imul(ue,Oe)|0,v=v+Math.imul(ue,je)|0,g=g+Math.imul(ee,Ie)|0,s=s+Math.imul(ee,$e)|0,s=s+Math.imul(ne,Ie)|0,v=v+Math.imul(ne,$e)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,ke),s=s+Math.imul(fe,Te)|0,v=Math.imul(fe,ke),g=g+Math.imul(le,Oe)|0,s=s+Math.imul(le,je)|0,s=s+Math.imul(ve,Oe)|0,v=v+Math.imul(ve,je)|0,g=g+Math.imul(he,Ie)|0,s=s+Math.imul(he,$e)|0,s=s+Math.imul(ue,Ie)|0,v=v+Math.imul(ue,$e)|0;var wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(wt>>>26)|0,wt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,je),s=s+Math.imul(fe,Oe)|0,v=Math.imul(fe,je),g=g+Math.imul(le,Ie)|0,s=s+Math.imul(le,$e)|0,s=s+Math.imul(ve,Ie)|0,v=v+Math.imul(ve,$e)|0;var Ft=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(fe,Ie)|0,v=Math.imul(fe,$e);var jt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(jt>>>26)|0,jt&=67108863,w[0]=tt,w[1]=et,w[2]=Et,w[3]=It,w[4]=Pt,w[5]=Bt,w[6]=Dt,w[7]=qt,w[8]=Wt,w[9]=Lt,w[10]=dt,w[11]=Tt,w[12]=Mt,w[13]=bt,w[14]=Ct,w[15]=gt,w[16]=wt,w[17]=Ft,w[18]=jt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(L=O);function B(M,o,f){f.negative=o.negative^M.negative,f.length=M.length+o.length;for(var u=0,c=0,p=0;p<f.length-1;p++){var w=c;c=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-M.length+1);s<=g;s++){var v=p-s,T=M.words[v]|0,D=o.words[s]|0,Y=T*D,Q=Y&67108863;w=w+(Y/67108864|0)|0,Q=Q+x|0,x=Q&67108863,w=w+(Q>>>26)|0,c+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=c}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(M,o,f){var u=new C;return u.mulp(M,o,f)}n.prototype.mulTo=function(o,f){var u,c=this.length+o.length;return this.length===10&&o.length===10?u=L(this,o,f):c<63?u=O(this,o,f):c<1024?u=B(this,o,f):u=P(this,o,f),u};function C(M,o){this.x=M,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,c=0;c<o;c++)f[c]=this.revBin(c,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var c=0,p=0;p<f;p++)c|=(o&1)<<f-p-1,o>>=1;return c},C.prototype.permute=function(o,f,u,c,p,w){for(var x=0;x<w;x++)c[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,c,p,w){this.permute(w,o,f,u,c,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var D=s,Y=v,Q=0;Q<x;Q++){var A=u[T+Q],E=c[T+Q],q=u[T+Q+x],V=c[T+Q+x],X=D*q-Y*V;V=D*V+Y*q,q=X,u[T+Q]=A+q,c[T+Q]=E+V,u[T+Q+x]=A-q,c[T+Q+x]=E-V,Q!==g&&(X=s*D-v*Y,Y=s*Y+v*D,D=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,c=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+c},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var c=0;c<u/2;c++){var p=o[c];o[c]=o[u-c-1],o[u-c-1]=p,p=f[c],f[c]=-f[u-c-1],f[u-c-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,c=0;c<f/2;c++){var p=Math.round(o[2*c+1]/f)*8192+Math.round(o[2*c]/f)+u;o[c]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,c){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<c;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var c=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(c),w=this.stub(c),x=new Array(c),g=new Array(c),s=new Array(c),v=new Array(c),T=new Array(c),D=new Array(c),Y=u.words;Y.length=c,this.convert13b(o.words,o.length,x,c),this.convert13b(f.words,f.length,v,c),this.transform(x,w,g,s,c,p),this.transform(v,w,T,D,c,p);for(var Q=0;Q<c;Q++){var A=g[Q]*T[Q]-s[Q]*D[Q];s[Q]=g[Q]*D[Q]+s[Q]*T[Q],g[Q]=A}return this.conjugate(g,s,c),this.transform(g,s,Y,w,c,p),this.conjugate(Y,w,c),this.normalize13b(Y,c),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var c=(this.words[u]|0)*o,p=(c&67108863)+(f&67108863);f>>=26,f+=c/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,c=0;c<f.length&&f[c]===0;c++,u=u.sqr());if(++c<f.length)for(var p=u.sqr();c<f.length;c++,p=p.sqr())f[c]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&c,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var c;f?c=(f-f%26)/26:c=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(c-=w,c=Math.max(0,c),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=c);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&c)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var c=67108863^67108863>>>f<<f;this.words[this.length-1]&=c}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var c=o.length+u,p;this._expand(c);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,c=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),c.iushln(u),w=p.words[p.length-1]|0);var g=c.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=c.clone()._ishlnsubmul(p,1,g);T.negative===0&&(c=T,s&&(s.words[g]=1));for(var D=g-1;D>=0;D--){var Y=(c.words[p.length+D]|0)*67108864+(c.words[p.length+D-1]|0);for(Y=Math.min(Y/w|0,67108863),c._ishlnsubmul(p,Y,D);c.negative!==0;)Y--,c.negative=0,c._ishlnsubmul(p,1,D),c.isZero()||(c.negative^=1);s&&(s.words[D]=Y)}return s&&s.strip(),c.strip(),f!=="div"&&u!==0&&c.iushrn(u),{div:s||null,mod:c}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var c,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(c=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:c,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(c=w.div.neg()),{div:c,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,c=o.ushrn(1),p=o.andln(1),w=u.cmp(c);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,c=this.length-1;c>=0;c--)u=(f*u+(this.words[c]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var c=(this.words[u]|0)+f*67108864;this.words[u]=c/o|0,f=c%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,D=1;!(f.words[0]&D)&&T<26;++T,D<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(c.isOdd()||p.isOdd())&&(c.iadd(s),p.isub(v)),c.iushrn(1),p.iushrn(1);for(var Y=0,Q=1;!(u.words[0]&Q)&&Y<26;++Y,Q<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(w),p.isub(x)):(u.isub(f),w.isub(c),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)c.isOdd()&&c.iadd(w),c.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(p)):(u.isub(f),p.isub(c))}var T;return f.cmpn(1)===0?T=c:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var c=0;f.isEven()&&u.isEven();c++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(c)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=c,this;for(var p=c,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var c=this.words[0]|0;u=c===o?0:c<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var c=this.words[u]|0,p=o.words[u]|0;if(c!==p){c<p?f=-1:c>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new K(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var N={k256:null,p224:null,p192:null,p25519:null};function $(M,o){this.name=M,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var c=u<this.n?-1:f.ucmp(this.p);return c===0?(f.words[0]=0,f.length=1):c>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function W(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(W,$),W.prototype.split=function(o,f){for(var u=4194303,c=Math.min(o.length,9),p=0;p<c;p++)f.words[p]=o.words[p];if(f.length=c,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},W.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var c=o.words[u]|0;f+=c*977,o.words[u]=f&67108863,f=c*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function re(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(re,$);function J(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(J,$),J.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var c=(o.words[u]|0)*19+f,p=c&67108863;c>>>=26,o.words[u]=p,f=c}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(N[o])return N[o];var f;if(o==="k256")f=new W;else if(o==="p224")f=new G;else if(o==="p192")f=new re;else if(o==="p25519")f=new J;else throw new Error("Unknown prime "+o);return N[o]=f,f};function K(M){if(typeof M=="string"){var o=n._prime(M);this.m=o.p,this.prime=o}else i(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}K.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},K.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},K.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},K.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},K.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},K.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},K.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},K.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},K.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},K.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},K.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},K.prototype.isqr=function(o){return this.imul(o,o.clone())},K.prototype.sqr=function(o){return this.mul(o,o)},K.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var c=this.m.subn(1),p=0;!c.isZero()&&c.andln(1)===0;)p++,c.iushrn(1);i(!c.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,c),T=this.pow(o,c.addn(1).iushrn(1)),D=this.pow(o,c),Y=p;D.cmp(w)!==0;){for(var Q=D,A=0;Q.cmp(w)!==0;A++)Q=Q.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),D=D.redMul(v),Y=A}return T},K.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},K.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,c=new Array(1<<u);c[0]=new n(1).toRed(this),c[1]=o;for(var p=2;p<c.length;p++)c[p]=this.mul(c[p-1],o);var w=c[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var D=v>>T&1;if(w!==c[0]&&(w=this.sqr(w)),D===0&&x===0){g=0;continue}x<<=1,x|=D,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,c[x]),g=0,x=0)}s=26}return w},K.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},K.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new se(o)};function se(M){K.call(this,M),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(se,K),se.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},se.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},se.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(Am);var kE=Am.exports,$E={},Tm={},Uu=Le,ws=Uu.Buffer,vi={},gi;for(gi in Uu)Uu.hasOwnProperty(gi)&&(gi==="SlowBuffer"||gi==="Buffer"||(vi[gi]=Uu[gi]));var _s=vi.Buffer={};for(gi in ws)ws.hasOwnProperty(gi)&&(gi==="allocUnsafe"||gi==="allocUnsafeSlow"||(_s[gi]=ws[gi]));vi.Buffer.prototype=ws.prototype;(!_s.from||_s.from===Uint8Array.from)&&(_s.from=function(e,t,r){if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof e);if(e&&typeof e.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);return ws(e,t,r)});_s.alloc||(_s.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value "'+e+'" is invalid for option "size"');var i=ws(e);return!t||t.length===0?i.fill(0):typeof r=="string"?i.fill(t,r):i.fill(t),i});if(!vi.kStringMaxLength)try{vi.kStringMaxLength=ye.binding("buffer").kStringMaxLength}catch{}vi.constants||(vi.constants={MAX_LENGTH:vi.kMaxLength},vi.kStringMaxLength&&(vi.constants.MAX_STRING_LENGTH=vi.kStringMaxLength));var Om=vi,Yc={};const eG=Ye;function $i(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}Yc.Reporter=$i;$i.prototype.isError=function(t){return t instanceof Vs};$i.prototype.save=function(){const t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}};$i.prototype.restore=function(t){const r=this._reporterState;r.obj=t.obj,r.path=r.path.slice(0,t.pathLen)};$i.prototype.enterKey=function(t){return this._reporterState.path.push(t)};$i.prototype.exitKey=function(t){const r=this._reporterState;r.path=r.path.slice(0,t-1)};$i.prototype.leaveKey=function(t,r,i){const a=this._reporterState;this.exitKey(t),a.obj!==null&&(a.obj[r]=i)};$i.prototype.path=function(){return this._reporterState.path.join("/")};$i.prototype.enterObject=function(){const t=this._reporterState,r=t.obj;return t.obj={},r};$i.prototype.leaveObject=function(t){const r=this._reporterState,i=r.obj;return r.obj=t,i};$i.prototype.error=function(t){let r;const i=this._reporterState,a=t instanceof Vs;if(a?r=t:r=new Vs(i.path.map(function(n){return"["+JSON.stringify(n)+"]"}).join(""),t.message||t,t.stack),!i.options.partial)throw r;return a||i.errors.push(r),r};$i.prototype.wrapResult=function(t){const r=this._reporterState;return r.options.partial?{result:this.isError(t)?null:t,errors:r.errors}:t};function Vs(e,t){this.path=e,this.rethrow(t)}eG(Vs,Error);Vs.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,Vs),!this.stack)try{throw new Error(this.message)}catch(r){this.stack=r.stack}return this};var Ta={};const tG=Ye,Zc=Yc.Reporter,zs=Om.Buffer;function Ri(e,t){if(Zc.call(this,t),!zs.isBuffer(e)){this.error("Input not Buffer");return}this.base=e,this.offset=0,this.length=e.length}tG(Ri,Zc);Ta.DecoderBuffer=Ri;Ri.isDecoderBuffer=function(t){return t instanceof Ri?!0:typeof t=="object"&&zs.isBuffer(t.base)&&t.constructor.name==="DecoderBuffer"&&typeof t.offset=="number"&&typeof t.length=="number"&&typeof t.save=="function"&&typeof t.restore=="function"&&typeof t.isEmpty=="function"&&typeof t.readUInt8=="function"&&typeof t.skip=="function"&&typeof t.raw=="function"};Ri.prototype.save=function(){return{offset:this.offset,reporter:Zc.prototype.save.call(this)}};Ri.prototype.restore=function(t){const r=new Ri(this.base);return r.offset=t.offset,r.length=this.offset,this.offset=t.offset,Zc.prototype.restore.call(this,t.reporter),r};Ri.prototype.isEmpty=function(){return this.offset===this.length};Ri.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")};Ri.prototype.skip=function(t,r){if(!(this.offset+t<=this.length))return this.error(r||"DecoderBuffer overrun");const i=new Ri(this.base);return i._reporterState=this._reporterState,i.offset=this.offset,i.length=this.offset+t,this.offset+=t,i};Ri.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)};function Gs(e,t){if(Array.isArray(e))this.length=0,this.value=e.map(function(r){return Gs.isEncoderBuffer(r)||(r=new Gs(r,t)),this.length+=r.length,r},this);else if(typeof e=="number"){if(!(0<=e&&e<=255))return t.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if(typeof e=="string")this.value=e,this.length=zs.byteLength(e);else if(zs.isBuffer(e))this.value=e,this.length=e.length;else return t.error("Unsupported type: "+typeof e)}Ta.EncoderBuffer=Gs;Gs.isEncoderBuffer=function(t){return t instanceof Gs?!0:typeof t=="object"&&t.constructor.name==="EncoderBuffer"&&typeof t.length=="number"&&typeof t.join=="function"};Gs.prototype.join=function(t,r){return t||(t=zs.alloc(this.length)),r||(r=0),this.length===0||(Array.isArray(this.value)?this.value.forEach(function(i){i.join(t,r),r+=i.length}):(typeof this.value=="number"?t[r]=this.value:typeof this.value=="string"?t.write(this.value,r):zs.isBuffer(this.value)&&this.value.copy(t,r),r+=this.length)),t};const rG=Yc.Reporter,iG=Ta.EncoderBuffer,nG=Ta.DecoderBuffer,Vr=Ci,DE=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],oG=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(DE),aG=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function zt(e,t,r){const i={};this._baseState=i,i.name=r,i.enc=e,i.parent=t||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}var Im=zt;const sG=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];zt.prototype.clone=function(){const t=this._baseState,r={};sG.forEach(function(a){r[a]=t[a]});const i=new this.constructor(r.parent);return i._baseState=r,i};zt.prototype._wrap=function(){const t=this._baseState;oG.forEach(function(r){this[r]=function(){const a=new this.constructor(this);return t.children.push(a),a[r].apply(a,arguments)}},this)};zt.prototype._init=function(t){const r=this._baseState;Vr(r.parent===null),t.call(this),r.children=r.children.filter(function(i){return i._baseState.parent===this},this),Vr.equal(r.children.length,1,"Root node can have only one child")};zt.prototype._useArgs=function(t){const r=this._baseState,i=t.filter(function(a){return a instanceof this.constructor},this);t=t.filter(function(a){return!(a instanceof this.constructor)},this),i.length!==0&&(Vr(r.children===null),r.children=i,i.forEach(function(a){a._baseState.parent=this},this)),t.length!==0&&(Vr(r.args===null),r.args=t,r.reverseArgs=t.map(function(a){if(typeof a!="object"||a.constructor!==Object)return a;const n={};return Object.keys(a).forEach(function(l){l==(l|0)&&(l|=0);const h=a[l];n[h]=l}),n}))};aG.forEach(function(e){zt.prototype[e]=function(){const r=this._baseState;throw new Error(e+" not implemented for encoding: "+r.enc)}});DE.forEach(function(e){zt.prototype[e]=function(){const r=this._baseState,i=Array.prototype.slice.call(arguments);return Vr(r.tag===null),r.tag=e,this._useArgs(i),this}});zt.prototype.use=function(t){Vr(t);const r=this._baseState;return Vr(r.use===null),r.use=t,this};zt.prototype.optional=function(){const t=this._baseState;return t.optional=!0,this};zt.prototype.def=function(t){const r=this._baseState;return Vr(r.default===null),r.default=t,r.optional=!0,this};zt.prototype.explicit=function(t){const r=this._baseState;return Vr(r.explicit===null&&r.implicit===null),r.explicit=t,this};zt.prototype.implicit=function(t){const r=this._baseState;return Vr(r.explicit===null&&r.implicit===null),r.implicit=t,this};zt.prototype.obj=function(){const t=this._baseState,r=Array.prototype.slice.call(arguments);return t.obj=!0,r.length!==0&&this._useArgs(r),this};zt.prototype.key=function(t){const r=this._baseState;return Vr(r.key===null),r.key=t,this};zt.prototype.any=function(){const t=this._baseState;return t.any=!0,this};zt.prototype.choice=function(t){const r=this._baseState;return Vr(r.choice===null),r.choice=t,this._useArgs(Object.keys(t).map(function(i){return t[i]})),this};zt.prototype.contains=function(t){const r=this._baseState;return Vr(r.use===null),r.contains=t,this};zt.prototype._decode=function(t,r){const i=this._baseState;if(i.parent===null)return t.wrapResult(i.children[0]._decode(t,r));let a=i.default,n=!0,l=null;if(i.key!==null&&(l=t.enterKey(i.key)),i.optional){let d=null;if(i.explicit!==null?d=i.explicit:i.implicit!==null?d=i.implicit:i.tag!==null&&(d=i.tag),d===null&&!i.any){const m=t.save();try{i.choice===null?this._decodeGeneric(i.tag,t,r):this._decodeChoice(t,r),n=!0}catch{n=!1}t.restore(m)}else if(n=this._peekTag(t,d,i.any),t.isError(n))return n}let h;if(i.obj&&n&&(h=t.enterObject()),n){if(i.explicit!==null){const m=this._decodeTag(t,i.explicit);if(t.isError(m))return m;t=m}const d=t.offset;if(i.use===null&&i.choice===null){let m;i.any&&(m=t.save());const _=this._decodeTag(t,i.implicit!==null?i.implicit:i.tag,i.any);if(t.isError(_))return _;i.any?a=t.raw(m):t=_}if(r&&r.track&&i.tag!==null&&r.track(t.path(),d,t.length,"tagged"),r&&r.track&&i.tag!==null&&r.track(t.path(),t.offset,t.length,"content"),i.any||(i.choice===null?a=this._decodeGeneric(i.tag,t,r):a=this._decodeChoice(t,r)),t.isError(a))return a;if(!i.any&&i.choice===null&&i.children!==null&&i.children.forEach(function(_){_._decode(t,r)}),i.contains&&(i.tag==="octstr"||i.tag==="bitstr")){const m=new nG(a);a=this._getUse(i.contains,t._reporterState.obj)._decode(m,r)}}return i.obj&&n&&(a=t.leaveObject(h)),i.key!==null&&(a!==null||n===!0)?t.leaveKey(l,i.key,a):l!==null&&t.exitKey(l),a};zt.prototype._decodeGeneric=function(t,r,i){const a=this._baseState;return t==="seq"||t==="set"?null:t==="seqof"||t==="setof"?this._decodeList(r,t,a.args[0],i):/str$/.test(t)?this._decodeStr(r,t,i):t==="objid"&&a.args?this._decodeObjid(r,a.args[0],a.args[1],i):t==="objid"?this._decodeObjid(r,null,null,i):t==="gentime"||t==="utctime"?this._decodeTime(r,t,i):t==="null_"?this._decodeNull(r,i):t==="bool"?this._decodeBool(r,i):t==="objDesc"?this._decodeStr(r,t,i):t==="int"||t==="enum"?this._decodeInt(r,a.args&&a.args[0],i):a.use!==null?this._getUse(a.use,r._reporterState.obj)._decode(r,i):r.error("unknown tag: "+t)};zt.prototype._getUse=function(t,r){const i=this._baseState;return i.useDecoder=this._use(t,r),Vr(i.useDecoder._baseState.parent===null),i.useDecoder=i.useDecoder._baseState.children[0],i.implicit!==i.useDecoder._baseState.implicit&&(i.useDecoder=i.useDecoder.clone(),i.useDecoder._baseState.implicit=i.implicit),i.useDecoder};zt.prototype._decodeChoice=function(t,r){const i=this._baseState;let a=null,n=!1;return Object.keys(i.choice).some(function(l){const h=t.save(),d=i.choice[l];try{const m=d._decode(t,r);if(t.isError(m))return!1;a={type:l,value:m},n=!0}catch{return t.restore(h),!1}return!0},this),n?a:t.error("Choice not matched")};zt.prototype._createEncoderBuffer=function(t){return new iG(t,this.reporter)};zt.prototype._encode=function(t,r,i){const a=this._baseState;if(a.default!==null&&a.default===t)return;const n=this._encodeValue(t,r,i);if(n!==void 0&&!this._skipDefault(n,r,i))return n};zt.prototype._encodeValue=function(t,r,i){const a=this._baseState;if(a.parent===null)return a.children[0]._encode(t,r||new rG);let n=null;if(this.reporter=r,a.optional&&t===void 0)if(a.default!==null)t=a.default;else return;let l=null,h=!1;if(a.any)n=this._createEncoderBuffer(t);else if(a.choice)n=this._encodeChoice(t,r);else if(a.contains)l=this._getUse(a.contains,i)._encode(t,r),h=!0;else if(a.children)l=a.children.map(function(d){if(d._baseState.tag==="null_")return d._encode(null,r,t);if(d._baseState.key===null)return r.error("Child should have a key");const m=r.enterKey(d._baseState.key);if(typeof t!="object")return r.error("Child expected, but input is not object");const _=d._encode(t[d._baseState.key],r,t);return r.leaveKey(m),_},this).filter(function(d){return d}),l=this._createEncoderBuffer(l);else if(a.tag==="seqof"||a.tag==="setof"){if(!(a.args&&a.args.length===1))return r.error("Too many args for : "+a.tag);if(!Array.isArray(t))return r.error("seqof/setof, but data is not Array");const d=this.clone();d._baseState.implicit=null,l=this._createEncoderBuffer(t.map(function(m){const _=this._baseState;return this._getUse(_.args[0],t)._encode(m,r)},d))}else a.use!==null?n=this._getUse(a.use,i)._encode(t,r):(l=this._encodePrimitive(a.tag,t),h=!0);if(!a.any&&a.choice===null){const d=a.implicit!==null?a.implicit:a.tag,m=a.implicit===null?"universal":"context";d===null?a.use===null&&r.error("Tag could be omitted only for .use()"):a.use===null&&(n=this._encodeComposite(d,h,m,l))}return a.explicit!==null&&(n=this._encodeComposite(a.explicit,!1,"context",n)),n};zt.prototype._encodeChoice=function(t,r){const i=this._baseState,a=i.choice[t.type];return a||Vr(!1,t.type+" not found in "+JSON.stringify(Object.keys(i.choice))),a._encode(t.value,r)};zt.prototype._encodePrimitive=function(t,r){const i=this._baseState;if(/str$/.test(t))return this._encodeStr(r,t);if(t==="objid"&&i.args)return this._encodeObjid(r,i.reverseArgs[0],i.args[1]);if(t==="objid")return this._encodeObjid(r,null,null);if(t==="gentime"||t==="utctime")return this._encodeTime(r,t);if(t==="null_")return this._encodeNull();if(t==="int"||t==="enum")return this._encodeInt(r,i.args&&i.reverseArgs[0]);if(t==="bool")return this._encodeBool(r);if(t==="objDesc")return this._encodeStr(r,t);throw new Error("Unsupported tag: "+t)};zt.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)};zt.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)};var Xc={};(function(e){function t(r){const i={};return Object.keys(r).forEach(function(a){(a|0)==a&&(a=a|0);const n=r[a];i[n]=a}),i}e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=t(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=t(e.tag)})(Xc);const fG=Ye,Gn=Om.Buffer,FE=Im,np=Xc;function jE(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new en,this.tree._init(e.body)}var UE=jE;jE.prototype.encode=function(t,r){return this.tree._encode(t,r).join()};function en(e){FE.call(this,"der",e)}fG(en,FE);en.prototype._encodeComposite=function(t,r,i,a){const n=lG(t,r,i,this.reporter);if(a.length<128){const d=Gn.alloc(2);return d[0]=n,d[1]=a.length,this._createEncoderBuffer([d,a])}let l=1;for(let d=a.length;d>=256;d>>=8)l++;const h=Gn.alloc(1+1+l);h[0]=n,h[1]=128|l;for(let d=1+l,m=a.length;m>0;d--,m>>=8)h[d]=m&255;return this._createEncoderBuffer([h,a])};en.prototype._encodeStr=function(t,r){if(r==="bitstr")return this._createEncoderBuffer([t.unused|0,t.data]);if(r==="bmpstr"){const i=Gn.alloc(t.length*2);for(let a=0;a<t.length;a++)i.writeUInt16BE(t.charCodeAt(a),a*2);return this._createEncoderBuffer(i)}else return r==="numstr"?this._isNumstr(t)?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: numstr supports only digits and space"):r==="printstr"?this._isPrintstr(t)?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark"):/str$/.test(r)?this._createEncoderBuffer(t):r==="objDesc"?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: "+r+" unsupported")};en.prototype._encodeObjid=function(t,r,i){if(typeof t=="string"){if(!r)return this.reporter.error("string objid given, but no values map found");if(!r.hasOwnProperty(t))return this.reporter.error("objid not found in values map");t=r[t].split(/[\s.]+/g);for(let h=0;h<t.length;h++)t[h]|=0}else if(Array.isArray(t)){t=t.slice();for(let h=0;h<t.length;h++)t[h]|=0}if(!Array.isArray(t))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(t));if(!i){if(t[1]>=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,t[0]*40+t[1])}let a=0;for(let h=0;h<t.length;h++){let d=t[h];for(a++;d>=128;d>>=7)a++}const n=Gn.alloc(a);let l=n.length-1;for(let h=t.length-1;h>=0;h--){let d=t[h];for(n[l--]=d&127;(d>>=7)>0;)n[l--]=128|d&127}return this._createEncoderBuffer(n)};function hi(e){return e<10?"0"+e:e}en.prototype._encodeTime=function(t,r){let i;const a=new Date(t);return r==="gentime"?i=[hi(a.getUTCFullYear()),hi(a.getUTCMonth()+1),hi(a.getUTCDate()),hi(a.getUTCHours()),hi(a.getUTCMinutes()),hi(a.getUTCSeconds()),"Z"].join(""):r==="utctime"?i=[hi(a.getUTCFullYear()%100),hi(a.getUTCMonth()+1),hi(a.getUTCDate()),hi(a.getUTCHours()),hi(a.getUTCMinutes()),hi(a.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+r+" time is not supported yet"),this._encodeStr(i,"octstr")};en.prototype._encodeNull=function(){return this._createEncoderBuffer("")};en.prototype._encodeInt=function(t,r){if(typeof t=="string"){if(!r)return this.reporter.error("String int or enum given, but no values map");if(!r.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=r[t]}if(typeof t!="number"&&!Gn.isBuffer(t)){const n=t.toArray();!t.sign&&n[0]&128&&n.unshift(0),t=Gn.from(n)}if(Gn.isBuffer(t)){let n=t.length;t.length===0&&n++;const l=Gn.alloc(n);return t.copy(l),t.length===0&&(l[0]=0),this._createEncoderBuffer(l)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);let i=1;for(let n=t;n>=256;n>>=8)i++;const a=new Array(i);for(let n=a.length-1;n>=0;n--)a[n]=t&255,t>>=8;return a[0]&128&&a.unshift(0),this._createEncoderBuffer(Gn.from(a))};en.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)};en.prototype._use=function(t,r){return typeof t=="function"&&(t=t(r)),t._getEncoder("der").tree};en.prototype._skipDefault=function(t,r,i){const a=this._baseState;let n;if(a.default===null)return!1;const l=t.join();if(a.defaultBuffer===void 0&&(a.defaultBuffer=this._encodeValue(a.default,r,i).join()),l.length!==a.defaultBuffer.length)return!1;for(n=0;n<l.length;n++)if(l[n]!==a.defaultBuffer[n])return!1;return!0};function lG(e,t,r,i){let a;if(e==="seqof"?e="seq":e==="setof"&&(e="set"),np.tagByName.hasOwnProperty(e))a=np.tagByName[e];else if(typeof e=="number"&&(e|0)===e)a=e;else return i.error("Unknown tag: "+e);return a>=31?i.error("Multi-octet tag encoding unsupported"):(t||(a|=32),a|=np.tagClassByName[r||"universal"]<<6,a)}const uG=Ye,Pm=UE;function Cm(e){Pm.call(this,e),this.enc="pem"}uG(Cm,Pm);var hG=Cm;Cm.prototype.encode=function(t,r){const a=Pm.prototype.encode.call(this,t).toString("base64"),n=["-----BEGIN "+r.label+"-----"];for(let l=0;l<a.length;l+=64)n.push(a.slice(l,l+64));return n.push("-----END "+r.label+"-----"),n.join(`
+`)};(function(e){const t=e;t.der=UE,t.pem=hG})(Tm);var Bm={};const cG=Ye,dG=kE,R2=Ta.DecoderBuffer,HE=Im,A2=Xc;function qE(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new fi,this.tree._init(e.body)}var WE=qE;qE.prototype.decode=function(t,r){return R2.isDecoderBuffer(t)||(t=new R2(t,r)),this.tree._decode(t,r)};function fi(e){HE.call(this,"der",e)}cG(fi,HE);fi.prototype._peekTag=function(t,r,i){if(t.isEmpty())return!1;const a=t.save(),n=Lm(t,'Failed to peek tag: "'+r+'"');return t.isError(n)?n:(t.restore(a),n.tag===r||n.tagStr===r||n.tagStr+"of"===r||i)};fi.prototype._decodeTag=function(t,r,i){const a=Lm(t,'Failed to decode tag of "'+r+'"');if(t.isError(a))return a;let n=KE(t,a.primitive,'Failed to get length of "'+r+'"');if(t.isError(n))return n;if(!i&&a.tag!==r&&a.tagStr!==r&&a.tagStr+"of"!==r)return t.error('Failed to match tag: "'+r+'"');if(a.primitive||n!==null)return t.skip(n,'Failed to match body of: "'+r+'"');const l=t.save(),h=this._skipUntilEnd(t,'Failed to skip indefinite length body: "'+this.tag+'"');return t.isError(h)?h:(n=t.offset-l.offset,t.restore(l),t.skip(n,'Failed to match body of: "'+r+'"'))};fi.prototype._skipUntilEnd=function(t,r){for(;;){const i=Lm(t,r);if(t.isError(i))return i;const a=KE(t,i.primitive,r);if(t.isError(a))return a;let n;if(i.primitive||a!==null?n=t.skip(a):n=this._skipUntilEnd(t,r),t.isError(n))return n;if(i.tagStr==="end")break}};fi.prototype._decodeList=function(t,r,i,a){const n=[];for(;!t.isEmpty();){const l=this._peekTag(t,"end");if(t.isError(l))return l;const h=i.decode(t,"der",a);if(t.isError(h)&&l)break;n.push(h)}return n};fi.prototype._decodeStr=function(t,r){if(r==="bitstr"){const i=t.readUInt8();return t.isError(i)?i:{unused:i,data:t.raw()}}else if(r==="bmpstr"){const i=t.raw();if(i.length%2===1)return t.error("Decoding of string type: bmpstr length mismatch");let a="";for(let n=0;n<i.length/2;n++)a+=String.fromCharCode(i.readUInt16BE(n*2));return a}else if(r==="numstr"){const i=t.raw().toString("ascii");return this._isNumstr(i)?i:t.error("Decoding of string type: numstr unsupported characters")}else{if(r==="octstr")return t.raw();if(r==="objDesc")return t.raw();if(r==="printstr"){const i=t.raw().toString("ascii");return this._isPrintstr(i)?i:t.error("Decoding of string type: printstr unsupported characters")}else return/str$/.test(r)?t.raw().toString():t.error("Decoding of string type: "+r+" unsupported")}};fi.prototype._decodeObjid=function(t,r,i){let a;const n=[];let l=0,h=0;for(;!t.isEmpty();)h=t.readUInt8(),l<<=7,l|=h&127,h&128||(n.push(l),l=0);h&128&&n.push(l);const d=n[0]/40|0,m=n[0]%40;if(i?a=n:a=[d,m].concat(n.slice(1)),r){let _=r[a.join(" ")];_===void 0&&(_=r[a.join(".")]),_!==void 0&&(a=_)}return a};fi.prototype._decodeTime=function(t,r){const i=t.raw().toString();let a,n,l,h,d,m;if(r==="gentime")a=i.slice(0,4)|0,n=i.slice(4,6)|0,l=i.slice(6,8)|0,h=i.slice(8,10)|0,d=i.slice(10,12)|0,m=i.slice(12,14)|0;else if(r==="utctime")a=i.slice(0,2)|0,n=i.slice(2,4)|0,l=i.slice(4,6)|0,h=i.slice(6,8)|0,d=i.slice(8,10)|0,m=i.slice(10,12)|0,a<70?a=2e3+a:a=1900+a;else return t.error("Decoding "+r+" time is not supported yet");return Date.UTC(a,n-1,l,h,d,m,0)};fi.prototype._decodeNull=function(){return null};fi.prototype._decodeBool=function(t){const r=t.readUInt8();return t.isError(r)?r:r!==0};fi.prototype._decodeInt=function(t,r){const i=t.raw();let a=new dG(i);return r&&(a=r[a.toString(10)]||a),a};fi.prototype._use=function(t,r){return typeof t=="function"&&(t=t(r)),t._getDecoder("der").tree};function Lm(e,t){let r=e.readUInt8(t);if(e.isError(r))return r;const i=A2.tagClass[r>>6],a=(r&32)===0;if((r&31)===31){let l=r;for(r=0;(l&128)===128;){if(l=e.readUInt8(t),e.isError(l))return l;r<<=7,r|=l&127}}else r&=31;const n=A2.tag[r];return{cls:i,primitive:a,tag:r,tagStr:n}}function KE(e,t,r){let i=e.readUInt8(r);if(e.isError(i))return i;if(!t&&i===128)return null;if(!(i&128))return i;const a=i&127;if(a>4)return e.error("length octect is too long");i=0;for(let n=0;n<a;n++){i<<=8;const l=e.readUInt8(r);if(e.isError(l))return l;i|=l}return i}const pG=Ye,vG=Om.Buffer,Nm=WE;function km(e){Nm.call(this,e),this.enc="pem"}pG(km,Nm);var gG=km;km.prototype.decode=function(t,r){const i=t.toString().split(/[\r\n]+/g),a=r.label.toUpperCase(),n=/^-----(BEGIN|END) ([^-]+)-----$/;let l=-1,h=-1;for(let _=0;_<i.length;_++){const S=i[_].match(n);if(S!==null&&S[2]===a)if(l===-1){if(S[1]!=="BEGIN")break;l=_}else{if(S[1]!=="END")break;h=_;break}}if(l===-1||h===-1)throw new Error("PEM section not found for: "+a);const d=i.slice(l+1,h).join("");d.replace(/[^a-z0-9+/=]+/gi,"");const m=vG.from(d,"base64");return Nm.prototype.decode.call(this,m,r)};(function(e){const t=e;t.der=WE,t.pem=gG})(Bm);(function(e){const t=Tm,r=Bm,i=Ye,a=e;a.define=function(h,d){return new n(h,d)};function n(l,h){this.name=l,this.body=h,this.decoders={},this.encoders={}}n.prototype._createNamed=function(h){const d=this.name;function m(_){this._initNamed(_,d)}return i(m,h),m.prototype._initNamed=function(S,R){h.call(this,S,R)},new m(this)},n.prototype._getDecoder=function(h){return h=h||"der",this.decoders.hasOwnProperty(h)||(this.decoders[h]=this._createNamed(r[h])),this.decoders[h]},n.prototype.decode=function(h,d,m){return this._getDecoder(d).decode(h,m)},n.prototype._getEncoder=function(h){return h=h||"der",this.encoders.hasOwnProperty(h)||(this.encoders[h]=this._createNamed(t[h])),this.encoders[h]},n.prototype.encode=function(h,d,m){return this._getEncoder(d).encode(h,m)}})($E);var VE={};(function(e){const t=e;t.Reporter=Yc.Reporter,t.DecoderBuffer=Ta.DecoderBuffer,t.EncoderBuffer=Ta.EncoderBuffer,t.Node=Im})(VE);var zE={};(function(e){const t=e;t._reverse=function(i){const a={};return Object.keys(i).forEach(function(n){(n|0)==n&&(n=n|0);const l=i[n];a[l]=n}),a},t.der=Xc})(zE);(function(e){const t=e;t.bignum=kE,t.define=$E.define,t.base=VE,t.constants=zE,t.decoders=Bm,t.encoders=Tm})(Rm);var tn=Rm,T2=tn.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),mG=tn.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),$m=tn.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),yG=tn.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use($m),this.key("subjectPublicKey").bitstr())}),bG=tn.define("RelativeDistinguishedName",function(){this.setof(mG)}),wG=tn.define("RDNSequence",function(){this.seqof(bG)}),O2=tn.define("Name",function(){this.choice({rdnSequence:this.use(wG)})}),_G=tn.define("Validity",function(){this.seq().obj(this.key("notBefore").use(T2),this.key("notAfter").use(T2))}),MG=tn.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),SG=tn.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use($m),this.key("issuer").use(O2),this.key("validity").use(_G),this.key("subject").use(O2),this.key("subjectPublicKeyInfo").use(yG),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(MG).optional())}),xG=tn.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(SG),this.key("signatureAlgorithm").use($m),this.key("signatureValue").bitstr())}),EG=xG,rn=Rm;Qi.certificate=EG;var RG=rn.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});Qi.RSAPrivateKey=RG;var AG=rn.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});Qi.RSAPublicKey=AG;var TG=rn.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(GE),this.key("subjectPublicKey").bitstr())});Qi.PublicKey=TG;var GE=rn.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),OG=rn.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(GE),this.key("subjectPrivateKey").octstr())});Qi.PrivateKey=OG;var IG=rn.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});Qi.EncryptedPrivateKey=IG;var PG=rn.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});Qi.DSAPrivateKey=PG;Qi.DSAparam=rn.define("DSAparam",function(){this.int()});var CG=rn.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(BG),this.key("publicKey").optional().explicit(1).bitstr())});Qi.ECPrivateKey=CG;var BG=rn.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});Qi.signature=rn.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())});const LG={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"};var NG=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,kG=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,$G=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,DG=Nc,FG=ii,mu=vt.Buffer,jG=function(e,t){var r=e.toString(),i=r.match(NG),a;if(i){var l="aes"+i[1],h=mu.from(i[2],"hex"),d=mu.from(i[3].replace(/[\r\n]/g,""),"base64"),m=DG(t,h.slice(0,8),parseInt(i[1],10)).key,_=[],S=FG.createDecipheriv(l,m,h);_.push(S.update(d)),_.push(S.final()),a=mu.concat(_)}else{var n=r.match($G);a=mu.from(n[2].replace(/[\r\n]/g,""),"base64")}var R=r.match(kG)[1];return{tag:R,data:a}},Gr=Qi,UG=LG,HG=jG,qG=ii,WG=Cc,Bv=vt.Buffer,Jc=YE;function YE(e){var t;typeof e=="object"&&!Bv.isBuffer(e)&&(t=e.passphrase,e=e.key),typeof e=="string"&&(e=Bv.from(e));var r=HG(e,t),i=r.tag,a=r.data,n,l;switch(i){case"CERTIFICATE":l=Gr.certificate.decode(a,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(l||(l=Gr.PublicKey.decode(a,"der")),n=l.algorithm.algorithm.join("."),n){case"1.2.840.113549.1.1.1":return Gr.RSAPublicKey.decode(l.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return l.subjectPrivateKey=l.subjectPublicKey,{type:"ec",data:l};case"1.2.840.10040.4.1":return l.algorithm.params.pub_key=Gr.DSAparam.decode(l.subjectPublicKey.data,"der"),{type:"dsa",data:l.algorithm.params};default:throw new Error("unknown key id "+n)}case"ENCRYPTED PRIVATE KEY":a=Gr.EncryptedPrivateKey.decode(a,"der"),a=KG(a,t);case"PRIVATE KEY":switch(l=Gr.PrivateKey.decode(a,"der"),n=l.algorithm.algorithm.join("."),n){case"1.2.840.113549.1.1.1":return Gr.RSAPrivateKey.decode(l.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:l.algorithm.curve,privateKey:Gr.ECPrivateKey.decode(l.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return l.algorithm.params.priv_key=Gr.DSAparam.decode(l.subjectPrivateKey,"der"),{type:"dsa",params:l.algorithm.params};default:throw new Error("unknown key id "+n)}case"RSA PUBLIC KEY":return Gr.RSAPublicKey.decode(a,"der");case"RSA PRIVATE KEY":return Gr.RSAPrivateKey.decode(a,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:Gr.DSAPrivateKey.decode(a,"der")};case"EC PRIVATE KEY":return a=Gr.ECPrivateKey.decode(a,"der"),{curve:a.parameters.value,privateKey:a.privateKey};default:throw new Error("unknown key type "+i)}}YE.signature=Gr.signature;function KG(e,t){var r=e.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),a=UG[e.algorithm.decrypt.cipher.algo.join(".")],n=e.algorithm.decrypt.cipher.iv,l=e.subjectPrivateKey,h=parseInt(a.split("-")[1],10)/8,d=WG.pbkdf2Sync(t,r,i,h,"sha1"),m=qG.createDecipheriv(a,d,n),_=[];return _.push(m.update(l)),_.push(m.final()),Bv.concat(_)}const ZE={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"};var I2;function VG(){if(I2)return Lf.exports;I2=1;var e=vt.Buffer,t=l4,r=bm,i=Em().ec,a=ym,n=Jc,l=ZE,h=1;function d(P,C,N,$,W){var G=n(C);if(G.curve){if($!=="ecdsa"&&$!=="ecdsa/rsa")throw new Error("wrong private key type");return m(P,G)}else if(G.type==="dsa"){if($!=="dsa")throw new Error("wrong private key type");return _(P,G,N)}if($!=="rsa"&&$!=="ecdsa/rsa")throw new Error("wrong private key type");if(C.padding!==void 0&&C.padding!==h)throw new Error("illegal or unsupported padding mode");P=e.concat([W,P]);for(var re=G.modulus.byteLength(),J=[0,1];P.length+J.length+1<re;)J.push(255);J.push(0);for(var K=-1;++K<P.length;)J.push(P[K]);var se=r(J,G);return se}function m(P,C){var N=l[C.curve.join(".")];if(!N)throw new Error("unknown curve "+C.curve.join("."));var $=new i(N),W=$.keyFromPrivate(C.privateKey),G=W.sign(P);return e.from(G.toDER())}function _(P,C,N){for(var $=C.params.priv_key,W=C.params.p,G=C.params.q,re=C.params.g,J=new a(0),K,se=I(P,G).mod(G),M=!1,o=R($,G,P,N);M===!1;)K=L(G,o,N),J=B(re,K,W,G),M=K.invm(G).imul(se.add($.mul(J))).mod(G),M.cmpn(0)===0&&(M=!1,J=new a(0));return S(J,M)}function S(P,C){P=P.toArray(),C=C.toArray(),P[0]&128&&(P=[0].concat(P)),C[0]&128&&(C=[0].concat(C));var N=P.length+C.length+4,$=[48,N,2,P.length];return $=$.concat(P,[2,C.length],C),e.from($)}function R(P,C,N,$){if(P=e.from(P.toArray()),P.length<C.byteLength()){var W=e.alloc(C.byteLength()-P.length);P=e.concat([W,P])}var G=N.length,re=O(N,C),J=e.alloc(G);J.fill(1);var K=e.alloc(G);return K=t($,K).update(J).update(e.from([0])).update(P).update(re).digest(),J=t($,K).update(J).digest(),K=t($,K).update(J).update(e.from([1])).update(P).update(re).digest(),J=t($,K).update(J).digest(),{k:K,v:J}}function I(P,C){var N=new a(P),$=(P.length<<3)-C.bitLength();return $>0&&N.ishrn($),N}function O(P,C){P=I(P,C),P=P.mod(C);var N=e.from(P.toArray());if(N.length<C.byteLength()){var $=e.alloc(C.byteLength()-N.length);N=e.concat([$,N])}return N}function L(P,C,N){var $,W;do{for($=e.alloc(0);$.length*8<P.bitLength();)C.v=t(N,C.k).update(C.v).digest(),$=e.concat([$,C.v]);W=I($,P),C.k=t(N,C.k).update(C.v).update(e.from([0])).digest(),C.v=t(N,C.k).update(C.v).digest()}while(W.cmp(P)!==-1);return W}function B(P,C,N,$){return P.toRed(a.mont(N)).redPow(C).fromRed().mod($)}return Lf.exports=d,Lf.exports.getKey=R,Lf.exports.makeKey=L,Lf.exports}var op,P2;function zG(){if(P2)return op;P2=1;var e=vt.Buffer,t=ym,r=Em().ec,i=Jc,a=ZE;function n(m,_,S,R,I){var O=i(S);if(O.type==="ec"){if(R!=="ecdsa"&&R!=="ecdsa/rsa")throw new Error("wrong public key type");return l(m,_,O)}else if(O.type==="dsa"){if(R!=="dsa")throw new Error("wrong public key type");return h(m,_,O)}if(R!=="rsa"&&R!=="ecdsa/rsa")throw new Error("wrong public key type");_=e.concat([I,_]);for(var L=O.modulus.byteLength(),B=[1],P=0;_.length+B.length+2<L;)B.push(255),P+=1;B.push(0);for(var C=-1;++C<_.length;)B.push(_[C]);B=e.from(B);var N=t.mont(O.modulus);m=new t(m).toRed(N),m=m.redPow(new t(O.publicExponent)),m=e.from(m.fromRed().toArray());var $=P<8?1:0;for(L=Math.min(m.length,B.length),m.length!==B.length&&($=1),C=-1;++C<L;)$|=m[C]^B[C];return $===0}function l(m,_,S){var R=a[S.data.algorithm.curve.join(".")];if(!R)throw new Error("unknown curve "+S.data.algorithm.curve.join("."));var I=new r(R),O=S.data.subjectPrivateKey.data;return I.verify(_,m,O)}function h(m,_,S){var R=S.data.p,I=S.data.q,O=S.data.g,L=S.data.pub_key,B=i.signature.decode(m,"der"),P=B.s,C=B.r;d(P,I),d(C,I);var N=t.mont(R),$=P.invm(I),W=O.toRed(N).redPow(new t(_).mul($).mod(I)).fromRed().mul(L.toRed(N).redPow(C.mul($).mod(I)).fromRed()).mod(R).mod(I);return W.cmp(C)===0}function d(m,_){if(m.cmpn(0)<=0)throw new Error("invalid sig");if(m.cmp(_)>=0)throw new Error("invalid sig")}return op=n,op}var ap,C2;function GG(){if(C2)return ap;C2=1;var e=vt.Buffer,t=Hl,r=$K,i=Ye,a=VG(),n=zG(),l=u4;Object.keys(l).forEach(function(S){l[S].id=e.from(l[S].id,"hex"),l[S.toLowerCase()]=l[S]});function h(S){r.Writable.call(this);var R=l[S];if(!R)throw new Error("Unknown message digest");this._hashType=R.hash,this._hash=t(R.hash),this._tag=R.id,this._signType=R.sign}i(h,r.Writable),h.prototype._write=function(R,I,O){this._hash.update(R),O()},h.prototype.update=function(R,I){return this._hash.update(typeof R=="string"?e.from(R,I):R),this},h.prototype.sign=function(R,I){this.end();var O=this._hash.digest(),L=a(O,R,this._hashType,this._signType,this._tag);return I?L.toString(I):L};function d(S){r.Writable.call(this);var R=l[S];if(!R)throw new Error("Unknown message digest");this._hash=t(R.hash),this._tag=R.id,this._signType=R.sign}i(d,r.Writable),d.prototype._write=function(R,I,O){this._hash.update(R),O()},d.prototype.update=function(R,I){return this._hash.update(typeof R=="string"?e.from(R,I):R),this},d.prototype.verify=function(R,I,O){var L=typeof I=="string"?e.from(I,O):I;this.end();var B=this._hash.digest();return n(L,B,R,this._signType,this._tag)};function m(S){return new h(S)}function _(S){return new d(S)}return ap={Sign:m,Verify:_,createSign:m,createVerify:_},ap}var Dm={exports:{}};Dm.exports;(function(e){(function(t,r){function i(M,o){if(!M)throw new Error(o||"Assertion failed")}function a(M,o){M.super_=o;var f=function(){};f.prototype=o.prototype,M.prototype=new f,M.prototype.constructor=M}function n(M,o,f){if(n.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(M||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Le.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var c=0;o[0]==="-"&&(c++,this.negative=1),c<o.length&&(f===16?this._parseHex(o,c,u):(this._parseBase(o,f,c),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p,w,x=0;if(u==="be")for(c=o.length-1,p=0;c>=0;c-=3)w=o[c]|o[c-1]<<8|o[c-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(c=0,p=0;c<o.length;c+=3)w=o[c]|o[c+1]<<8|o[c+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function h(M,o){var f=M.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(M,o,f){var u=h(M,f);return f-1>=o&&(u|=h(M,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p=0,w=0,x;if(u==="be")for(c=o.length-1;c>=f;c-=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(c=g%2===0?f+1:f;c<o.length;c+=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(M,o,f,u){for(var c=0,p=Math.min(M.length,f),w=o;w<p;w++){var x=M.charCodeAt(w)-48;c*=u,x>=49?c+=x-49+10:x>=17?c+=x-17+10:c+=x}return c}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var c=0,p=1;p<=67108863;p*=f)c++;c--,p=p/f|0;for(var w=o.length-u,x=w%c,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=c)s=m(o,v,v+c,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var c=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<c|p)&16777215).toString(16);p=x>>>24-c&16777215,p!==0||w!==this.length-1?u=_[6-g.length]+g+u:u=g+u,c+=2,c>=26&&(c-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var D=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=D+u:u=_[s-D.length]+D+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var c=this.byteLength(),p=u||Math.max(1,c);i(c<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-c;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(M){for(var o=new Array(M.bitLength()),f=0;f<o.length;f++){var u=f/26|0,c=f%26;o[f]=(M.words[u]&1<<c)>>>c}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var c=0;c<u.length;c++)this.words[c]=f.words[c]^u.words[c];if(this!==f)for(;c<f.length;c++)this.words[c]=f.words[c];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var c=0;c<f;c++)this.words[c]=~this.words[c]&67108863;return u>0&&(this.words[c]=~this.words[c]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,c=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<c:this.words[u]=this.words[u]&~(1<<c),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,c;this.length>o.length?(u=this,c=o):(u=o,c=this);for(var p=0,w=0;w<c.length;w++)f=(u.words[w]|0)+(c.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var c,p;u>0?(c=this,p=o):(c=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(c.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<c.length;x++)f=(c.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<c.length&&c!==this)for(;x<c.length;x++)this.words[x]=c.words[x];return this.length=Math.max(this.length,x),c!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(M,o,f){f.negative=o.negative^M.negative;var u=M.length+o.length|0;f.length=u,u=u-1|0;var c=M.words[0]|0,p=o.words[0]|0,w=c*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,D=Math.min(s,o.length-1),Y=Math.max(0,s-M.length+1);Y<=D;Y++){var Q=s-Y|0;c=M.words[Q]|0,p=o.words[Y]|0,w=c*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var L=function(o,f,u){var c=o.words,p=f.words,w=u.words,x=0,g,s,v,T=c[0]|0,D=T&8191,Y=T>>>13,Q=c[1]|0,A=Q&8191,E=Q>>>13,q=c[2]|0,V=q&8191,X=q>>>13,b=c[3]|0,y=b&8191,F=b>>>13,U=c[4]|0,Z=U&8191,j=U>>>13,k=c[5]|0,H=k&8191,z=k>>>13,oe=c[6]|0,ee=oe&8191,ne=oe>>>13,me=c[7]|0,he=me&8191,ue=me>>>13,xe=c[8]|0,le=xe&8191,ve=xe>>>13,ce=c[9]|0,ie=ce&8191,fe=ce>>>13,Ee=p[0]|0,de=Ee&8191,be=Ee>>>13,Ke=p[1]|0,we=Ke&8191,Se=Ke>>>13,qe=p[2]|0,ge=qe&8191,Me=qe>>>13,Ve=p[3]|0,_e=Ve&8191,Be=Ve>>>13,ot=p[4]|0,Ae=ot&8191,Ne=ot>>>13,st=p[5]|0,Pe=st&8191,De=st>>>13,ut=p[6]|0,Re=ut&8191,Fe=ut>>>13,ht=p[7]|0,Te=ht&8191,ke=ht>>>13,ct=p[8]|0,Oe=ct&8191,je=ct>>>13,ft=p[9]|0,Ie=ft&8191,$e=ft>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(D,de),s=Math.imul(D,be),s=s+Math.imul(Y,de)|0,v=Math.imul(Y,be);var tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(tt>>>26)|0,tt&=67108863,g=Math.imul(A,de),s=Math.imul(A,be),s=s+Math.imul(E,de)|0,v=Math.imul(E,be),g=g+Math.imul(D,we)|0,s=s+Math.imul(D,Se)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,Se)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,de),s=Math.imul(V,be),s=s+Math.imul(X,de)|0,v=Math.imul(X,be),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,Se)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,Se)|0,g=g+Math.imul(D,ge)|0,s=s+Math.imul(D,Me)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,de),s=Math.imul(y,be),s=s+Math.imul(F,de)|0,v=Math.imul(F,be),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,Se)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,Se)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(D,_e)|0,s=s+Math.imul(D,Be)|0,s=s+Math.imul(Y,_e)|0,v=v+Math.imul(Y,Be)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(Z,de),s=Math.imul(Z,be),s=s+Math.imul(j,de)|0,v=Math.imul(j,be),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,Se)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,Se)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,_e)|0,s=s+Math.imul(A,Be)|0,s=s+Math.imul(E,_e)|0,v=v+Math.imul(E,Be)|0,g=g+Math.imul(D,Ae)|0,s=s+Math.imul(D,Ne)|0,s=s+Math.imul(Y,Ae)|0,v=v+Math.imul(Y,Ne)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(H,de),s=Math.imul(H,be),s=s+Math.imul(z,de)|0,v=Math.imul(z,be),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,Se)|0,s=s+Math.imul(j,we)|0,v=v+Math.imul(j,Se)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(V,_e)|0,s=s+Math.imul(V,Be)|0,s=s+Math.imul(X,_e)|0,v=v+Math.imul(X,Be)|0,g=g+Math.imul(A,Ae)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Ae)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(D,Pe)|0,s=s+Math.imul(D,De)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,De)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(ee,de),s=Math.imul(ee,be),s=s+Math.imul(ne,de)|0,v=Math.imul(ne,be),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,Se)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,Se)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(j,ge)|0,v=v+Math.imul(j,Me)|0,g=g+Math.imul(y,_e)|0,s=s+Math.imul(y,Be)|0,s=s+Math.imul(F,_e)|0,v=v+Math.imul(F,Be)|0,g=g+Math.imul(V,Ae)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Ae)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(D,Re)|0,s=s+Math.imul(D,Fe)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Fe)|0;var Dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,g=Math.imul(he,de),s=Math.imul(he,be),s=s+Math.imul(ue,de)|0,v=Math.imul(ue,be),g=g+Math.imul(ee,we)|0,s=s+Math.imul(ee,Se)|0,s=s+Math.imul(ne,we)|0,v=v+Math.imul(ne,Se)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,_e)|0,s=s+Math.imul(Z,Be)|0,s=s+Math.imul(j,_e)|0,v=v+Math.imul(j,Be)|0,g=g+Math.imul(y,Ae)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(F,Ae)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Fe)|0,g=g+Math.imul(D,Te)|0,s=s+Math.imul(D,ke)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,ke)|0;var qt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(qt>>>26)|0,qt&=67108863,g=Math.imul(le,de),s=Math.imul(le,be),s=s+Math.imul(ve,de)|0,v=Math.imul(ve,be),g=g+Math.imul(he,we)|0,s=s+Math.imul(he,Se)|0,s=s+Math.imul(ue,we)|0,v=v+Math.imul(ue,Se)|0,g=g+Math.imul(ee,ge)|0,s=s+Math.imul(ee,Me)|0,s=s+Math.imul(ne,ge)|0,v=v+Math.imul(ne,Me)|0,g=g+Math.imul(H,_e)|0,s=s+Math.imul(H,Be)|0,s=s+Math.imul(z,_e)|0,v=v+Math.imul(z,Be)|0,g=g+Math.imul(Z,Ae)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(j,Ae)|0,v=v+Math.imul(j,Ne)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Fe)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,ke)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,ke)|0,g=g+Math.imul(D,Oe)|0,s=s+Math.imul(D,je)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,je)|0;var Wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,g=Math.imul(ie,de),s=Math.imul(ie,be),s=s+Math.imul(fe,de)|0,v=Math.imul(fe,be),g=g+Math.imul(le,we)|0,s=s+Math.imul(le,Se)|0,s=s+Math.imul(ve,we)|0,v=v+Math.imul(ve,Se)|0,g=g+Math.imul(he,ge)|0,s=s+Math.imul(he,Me)|0,s=s+Math.imul(ue,ge)|0,v=v+Math.imul(ue,Me)|0,g=g+Math.imul(ee,_e)|0,s=s+Math.imul(ee,Be)|0,s=s+Math.imul(ne,_e)|0,v=v+Math.imul(ne,Be)|0,g=g+Math.imul(H,Ae)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Ae)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(j,Pe)|0,v=v+Math.imul(j,De)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Fe)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,ke)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,ke)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(D,Ie)|0,s=s+Math.imul(D,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,Se),s=s+Math.imul(fe,we)|0,v=Math.imul(fe,Se),g=g+Math.imul(le,ge)|0,s=s+Math.imul(le,Me)|0,s=s+Math.imul(ve,ge)|0,v=v+Math.imul(ve,Me)|0,g=g+Math.imul(he,_e)|0,s=s+Math.imul(he,Be)|0,s=s+Math.imul(ue,_e)|0,v=v+Math.imul(ue,Be)|0,g=g+Math.imul(ee,Ae)|0,s=s+Math.imul(ee,Ne)|0,s=s+Math.imul(ne,Ae)|0,v=v+Math.imul(ne,Ne)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(j,Re)|0,v=v+Math.imul(j,Fe)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,ke)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,ke)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Me),s=s+Math.imul(fe,ge)|0,v=Math.imul(fe,Me),g=g+Math.imul(le,_e)|0,s=s+Math.imul(le,Be)|0,s=s+Math.imul(ve,_e)|0,v=v+Math.imul(ve,Be)|0,g=g+Math.imul(he,Ae)|0,s=s+Math.imul(he,Ne)|0,s=s+Math.imul(ue,Ae)|0,v=v+Math.imul(ue,Ne)|0,g=g+Math.imul(ee,Pe)|0,s=s+Math.imul(ee,De)|0,s=s+Math.imul(ne,Pe)|0,v=v+Math.imul(ne,De)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Fe)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,ke)|0,s=s+Math.imul(j,Te)|0,v=v+Math.imul(j,ke)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0;var Tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,g=Math.imul(ie,_e),s=Math.imul(ie,Be),s=s+Math.imul(fe,_e)|0,v=Math.imul(fe,Be),g=g+Math.imul(le,Ae)|0,s=s+Math.imul(le,Ne)|0,s=s+Math.imul(ve,Ae)|0,v=v+Math.imul(ve,Ne)|0,g=g+Math.imul(he,Pe)|0,s=s+Math.imul(he,De)|0,s=s+Math.imul(ue,Pe)|0,v=v+Math.imul(ue,De)|0,g=g+Math.imul(ee,Re)|0,s=s+Math.imul(ee,Fe)|0,s=s+Math.imul(ne,Re)|0,v=v+Math.imul(ne,Fe)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,ke)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,ke)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(j,Oe)|0,v=v+Math.imul(j,je)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Ae),s=Math.imul(ie,Ne),s=s+Math.imul(fe,Ae)|0,v=Math.imul(fe,Ne),g=g+Math.imul(le,Pe)|0,s=s+Math.imul(le,De)|0,s=s+Math.imul(ve,Pe)|0,v=v+Math.imul(ve,De)|0,g=g+Math.imul(he,Re)|0,s=s+Math.imul(he,Fe)|0,s=s+Math.imul(ue,Re)|0,v=v+Math.imul(ue,Fe)|0,g=g+Math.imul(ee,Te)|0,s=s+Math.imul(ee,ke)|0,s=s+Math.imul(ne,Te)|0,v=v+Math.imul(ne,ke)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(j,Ie)|0,v=v+Math.imul(j,$e)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,De),s=s+Math.imul(fe,Pe)|0,v=Math.imul(fe,De),g=g+Math.imul(le,Re)|0,s=s+Math.imul(le,Fe)|0,s=s+Math.imul(ve,Re)|0,v=v+Math.imul(ve,Fe)|0,g=g+Math.imul(he,Te)|0,s=s+Math.imul(he,ke)|0,s=s+Math.imul(ue,Te)|0,v=v+Math.imul(ue,ke)|0,g=g+Math.imul(ee,Oe)|0,s=s+Math.imul(ee,je)|0,s=s+Math.imul(ne,Oe)|0,v=v+Math.imul(ne,je)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0;var Ct=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Fe),s=s+Math.imul(fe,Re)|0,v=Math.imul(fe,Fe),g=g+Math.imul(le,Te)|0,s=s+Math.imul(le,ke)|0,s=s+Math.imul(ve,Te)|0,v=v+Math.imul(ve,ke)|0,g=g+Math.imul(he,Oe)|0,s=s+Math.imul(he,je)|0,s=s+Math.imul(ue,Oe)|0,v=v+Math.imul(ue,je)|0,g=g+Math.imul(ee,Ie)|0,s=s+Math.imul(ee,$e)|0,s=s+Math.imul(ne,Ie)|0,v=v+Math.imul(ne,$e)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,ke),s=s+Math.imul(fe,Te)|0,v=Math.imul(fe,ke),g=g+Math.imul(le,Oe)|0,s=s+Math.imul(le,je)|0,s=s+Math.imul(ve,Oe)|0,v=v+Math.imul(ve,je)|0,g=g+Math.imul(he,Ie)|0,s=s+Math.imul(he,$e)|0,s=s+Math.imul(ue,Ie)|0,v=v+Math.imul(ue,$e)|0;var wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(wt>>>26)|0,wt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,je),s=s+Math.imul(fe,Oe)|0,v=Math.imul(fe,je),g=g+Math.imul(le,Ie)|0,s=s+Math.imul(le,$e)|0,s=s+Math.imul(ve,Ie)|0,v=v+Math.imul(ve,$e)|0;var Ft=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(fe,Ie)|0,v=Math.imul(fe,$e);var jt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(jt>>>26)|0,jt&=67108863,w[0]=tt,w[1]=et,w[2]=Et,w[3]=It,w[4]=Pt,w[5]=Bt,w[6]=Dt,w[7]=qt,w[8]=Wt,w[9]=Lt,w[10]=dt,w[11]=Tt,w[12]=Mt,w[13]=bt,w[14]=Ct,w[15]=gt,w[16]=wt,w[17]=Ft,w[18]=jt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(L=O);function B(M,o,f){f.negative=o.negative^M.negative,f.length=M.length+o.length;for(var u=0,c=0,p=0;p<f.length-1;p++){var w=c;c=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-M.length+1);s<=g;s++){var v=p-s,T=M.words[v]|0,D=o.words[s]|0,Y=T*D,Q=Y&67108863;w=w+(Y/67108864|0)|0,Q=Q+x|0,x=Q&67108863,w=w+(Q>>>26)|0,c+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=c}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(M,o,f){var u=new C;return u.mulp(M,o,f)}n.prototype.mulTo=function(o,f){var u,c=this.length+o.length;return this.length===10&&o.length===10?u=L(this,o,f):c<63?u=O(this,o,f):c<1024?u=B(this,o,f):u=P(this,o,f),u};function C(M,o){this.x=M,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,c=0;c<o;c++)f[c]=this.revBin(c,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var c=0,p=0;p<f;p++)c|=(o&1)<<f-p-1,o>>=1;return c},C.prototype.permute=function(o,f,u,c,p,w){for(var x=0;x<w;x++)c[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,c,p,w){this.permute(w,o,f,u,c,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var D=s,Y=v,Q=0;Q<x;Q++){var A=u[T+Q],E=c[T+Q],q=u[T+Q+x],V=c[T+Q+x],X=D*q-Y*V;V=D*V+Y*q,q=X,u[T+Q]=A+q,c[T+Q]=E+V,u[T+Q+x]=A-q,c[T+Q+x]=E-V,Q!==g&&(X=s*D-v*Y,Y=s*Y+v*D,D=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,c=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+c},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var c=0;c<u/2;c++){var p=o[c];o[c]=o[u-c-1],o[u-c-1]=p,p=f[c],f[c]=-f[u-c-1],f[u-c-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,c=0;c<f/2;c++){var p=Math.round(o[2*c+1]/f)*8192+Math.round(o[2*c]/f)+u;o[c]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,c){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<c;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var c=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(c),w=this.stub(c),x=new Array(c),g=new Array(c),s=new Array(c),v=new Array(c),T=new Array(c),D=new Array(c),Y=u.words;Y.length=c,this.convert13b(o.words,o.length,x,c),this.convert13b(f.words,f.length,v,c),this.transform(x,w,g,s,c,p),this.transform(v,w,T,D,c,p);for(var Q=0;Q<c;Q++){var A=g[Q]*T[Q]-s[Q]*D[Q];s[Q]=g[Q]*D[Q]+s[Q]*T[Q],g[Q]=A}return this.conjugate(g,s,c),this.transform(g,s,Y,w,c,p),this.conjugate(Y,w,c),this.normalize13b(Y,c),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var c=(this.words[u]|0)*o,p=(c&67108863)+(f&67108863);f>>=26,f+=c/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,c=0;c<f.length&&f[c]===0;c++,u=u.sqr());if(++c<f.length)for(var p=u.sqr();c<f.length;c++,p=p.sqr())f[c]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&c,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var c;f?c=(f-f%26)/26:c=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(c-=w,c=Math.max(0,c),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=c);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&c)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var c=67108863^67108863>>>f<<f;this.words[this.length-1]&=c}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var c=o.length+u,p;this._expand(c);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,c=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),c.iushln(u),w=p.words[p.length-1]|0);var g=c.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=c.clone()._ishlnsubmul(p,1,g);T.negative===0&&(c=T,s&&(s.words[g]=1));for(var D=g-1;D>=0;D--){var Y=(c.words[p.length+D]|0)*67108864+(c.words[p.length+D-1]|0);for(Y=Math.min(Y/w|0,67108863),c._ishlnsubmul(p,Y,D);c.negative!==0;)Y--,c.negative=0,c._ishlnsubmul(p,1,D),c.isZero()||(c.negative^=1);s&&(s.words[D]=Y)}return s&&s.strip(),c.strip(),f!=="div"&&u!==0&&c.iushrn(u),{div:s||null,mod:c}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var c,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(c=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:c,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(c=w.div.neg()),{div:c,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,c=o.ushrn(1),p=o.andln(1),w=u.cmp(c);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,c=this.length-1;c>=0;c--)u=(f*u+(this.words[c]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var c=(this.words[u]|0)+f*67108864;this.words[u]=c/o|0,f=c%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,D=1;!(f.words[0]&D)&&T<26;++T,D<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(c.isOdd()||p.isOdd())&&(c.iadd(s),p.isub(v)),c.iushrn(1),p.iushrn(1);for(var Y=0,Q=1;!(u.words[0]&Q)&&Y<26;++Y,Q<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(w),p.isub(x)):(u.isub(f),w.isub(c),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)c.isOdd()&&c.iadd(w),c.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(p)):(u.isub(f),p.isub(c))}var T;return f.cmpn(1)===0?T=c:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var c=0;f.isEven()&&u.isEven();c++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(c)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=c,this;for(var p=c,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var c=this.words[0]|0;u=c===o?0:c<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var c=this.words[u]|0,p=o.words[u]|0;if(c!==p){c<p?f=-1:c>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new K(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var N={k256:null,p224:null,p192:null,p25519:null};function $(M,o){this.name=M,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var c=u<this.n?-1:f.ucmp(this.p);return c===0?(f.words[0]=0,f.length=1):c>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function W(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(W,$),W.prototype.split=function(o,f){for(var u=4194303,c=Math.min(o.length,9),p=0;p<c;p++)f.words[p]=o.words[p];if(f.length=c,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},W.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var c=o.words[u]|0;f+=c*977,o.words[u]=f&67108863,f=c*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function re(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(re,$);function J(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(J,$),J.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var c=(o.words[u]|0)*19+f,p=c&67108863;c>>>=26,o.words[u]=p,f=c}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(N[o])return N[o];var f;if(o==="k256")f=new W;else if(o==="p224")f=new G;else if(o==="p192")f=new re;else if(o==="p25519")f=new J;else throw new Error("Unknown prime "+o);return N[o]=f,f};function K(M){if(typeof M=="string"){var o=n._prime(M);this.m=o.p,this.prime=o}else i(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}K.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},K.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},K.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},K.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},K.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},K.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},K.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},K.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},K.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},K.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},K.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},K.prototype.isqr=function(o){return this.imul(o,o.clone())},K.prototype.sqr=function(o){return this.mul(o,o)},K.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var c=this.m.subn(1),p=0;!c.isZero()&&c.andln(1)===0;)p++,c.iushrn(1);i(!c.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,c),T=this.pow(o,c.addn(1).iushrn(1)),D=this.pow(o,c),Y=p;D.cmp(w)!==0;){for(var Q=D,A=0;Q.cmp(w)!==0;A++)Q=Q.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),D=D.redMul(v),Y=A}return T},K.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},K.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,c=new Array(1<<u);c[0]=new n(1).toRed(this),c[1]=o;for(var p=2;p<c.length;p++)c[p]=this.mul(c[p-1],o);var w=c[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var D=v>>T&1;if(w!==c[0]&&(w=this.sqr(w)),D===0&&x===0){g=0;continue}x<<=1,x|=D,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,c[x]),g=0,x=0)}s=26}return w},K.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},K.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new se(o)};function se(M){K.call(this,M),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(se,K),se.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},se.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},se.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(Dm);var YG=Dm.exports,sp,B2;function ZG(){if(B2)return sp;B2=1;var e=Em(),t=YG;sp=function(l){return new i(l)};var r={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};r.p224=r.secp224r1,r.p256=r.secp256r1=r.prime256v1,r.p192=r.secp192r1=r.prime192v1,r.p384=r.secp384r1,r.p521=r.secp521r1;function i(n){this.curveType=r[n],this.curveType||(this.curveType={name:n}),this.curve=new e.ec(this.curveType.name),this.keys=void 0}i.prototype.generateKeys=function(n,l){return this.keys=this.curve.genKeyPair(),this.getPublicKey(n,l)},i.prototype.computeSecret=function(n,l,h){l=l||"utf8",Le.Buffer.isBuffer(n)||(n=new Le.Buffer(n,l));var d=this.curve.keyFromPublic(n).getPublic(),m=d.mul(this.keys.getPrivate()).getX();return a(m,h,this.curveType.byteLength)},i.prototype.getPublicKey=function(n,l){var h=this.keys.getPublic(l==="compressed",!0);return l==="hybrid"&&(h[h.length-1]%2?h[0]=7:h[0]=6),a(h,n)},i.prototype.getPrivateKey=function(n){return a(this.keys.getPrivate(),n)},i.prototype.setPublicKey=function(n,l){return l=l||"utf8",Le.Buffer.isBuffer(n)||(n=new Le.Buffer(n,l)),this.keys._importPublic(n),this},i.prototype.setPrivateKey=function(n,l){l=l||"utf8",Le.Buffer.isBuffer(n)||(n=new Le.Buffer(n,l));var h=new t(n);return h=h.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(h),this};function a(n,l,h){Array.isArray(n)||(n=n.toArray());var d=new Le.Buffer(n);if(h&&d.length<h){var m=new Le.Buffer(h-d.length);m.fill(0),d=Le.Buffer.concat([m,d])}return l?d.toString(l):d}return sp}var XE={},XG=Hl,Lv=vt.Buffer,JE=function(e,t){for(var r=Lv.alloc(0),i=0,a;r.length<t;)a=JG(i++),r=Lv.concat([r,XG("sha1").update(e).update(a).digest()]);return r.slice(0,t)};function JG(e){var t=Lv.allocUnsafe(4);return t.writeUInt32BE(e,0),t}var QE=function(t,r){for(var i=t.length,a=-1;++a<i;)t[a]^=r[a];return t},Fm={exports:{}};Fm.exports;(function(e){(function(t,r){function i(M,o){if(!M)throw new Error(o||"Assertion failed")}function a(M,o){M.super_=o;var f=function(){};f.prototype=o.prototype,M.prototype=new f,M.prototype.constructor=M}function n(M,o,f){if(n.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(M||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=Le.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var c=0;o[0]==="-"&&(c++,this.negative=1),c<o.length&&(f===16?this._parseHex(o,c,u):(this._parseBase(o,f,c),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p,w,x=0;if(u==="be")for(c=o.length-1,p=0;c>=0;c-=3)w=o[c]|o[c-1]<<8|o[c-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(c=0,p=0;c<o.length;c+=3)w=o[c]|o[c+1]<<8|o[c+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function h(M,o){var f=M.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(M,o,f){var u=h(M,f);return f-1>=o&&(u|=h(M,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var c=0;c<this.length;c++)this.words[c]=0;var p=0,w=0,x;if(u==="be")for(c=o.length-1;c>=f;c-=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(c=g%2===0?f+1:f;c<o.length;c+=2)x=d(o,f,c)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(M,o,f,u){for(var c=0,p=Math.min(M.length,f),w=o;w<p;w++){var x=M.charCodeAt(w)-48;c*=u,x>=49?c+=x-49+10:x>=17?c+=x-17+10:c+=x}return c}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var c=0,p=1;p<=67108863;p*=f)c++;c--,p=p/f|0;for(var w=o.length-u,x=w%c,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=c)s=m(o,v,v+c,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var c=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<c|p)&16777215).toString(16);p=x>>>24-c&16777215,p!==0||w!==this.length-1?u=_[6-g.length]+g+u:u=g+u,c+=2,c>=26&&(c-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var D=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=D+u:u=_[s-D.length]+D+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var c=this.byteLength(),p=u||Math.max(1,c);i(c<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-c;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(M){for(var o=new Array(M.bitLength()),f=0;f<o.length;f++){var u=f/26|0,c=f%26;o[f]=(M.words[u]&1<<c)>>>c}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var c=0;c<u.length;c++)this.words[c]=f.words[c]^u.words[c];if(this!==f)for(;c<f.length;c++)this.words[c]=f.words[c];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var c=0;c<f;c++)this.words[c]=~this.words[c]&67108863;return u>0&&(this.words[c]=~this.words[c]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,c=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<c:this.words[u]=this.words[u]&~(1<<c),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,c;this.length>o.length?(u=this,c=o):(u=o,c=this);for(var p=0,w=0;w<c.length;w++)f=(u.words[w]|0)+(c.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var c,p;u>0?(c=this,p=o):(c=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(c.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<c.length;x++)f=(c.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<c.length&&c!==this)for(;x<c.length;x++)this.words[x]=c.words[x];return this.length=Math.max(this.length,x),c!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(M,o,f){f.negative=o.negative^M.negative;var u=M.length+o.length|0;f.length=u,u=u-1|0;var c=M.words[0]|0,p=o.words[0]|0,w=c*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,D=Math.min(s,o.length-1),Y=Math.max(0,s-M.length+1);Y<=D;Y++){var Q=s-Y|0;c=M.words[Q]|0,p=o.words[Y]|0,w=c*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var L=function(o,f,u){var c=o.words,p=f.words,w=u.words,x=0,g,s,v,T=c[0]|0,D=T&8191,Y=T>>>13,Q=c[1]|0,A=Q&8191,E=Q>>>13,q=c[2]|0,V=q&8191,X=q>>>13,b=c[3]|0,y=b&8191,F=b>>>13,U=c[4]|0,Z=U&8191,j=U>>>13,k=c[5]|0,H=k&8191,z=k>>>13,oe=c[6]|0,ee=oe&8191,ne=oe>>>13,me=c[7]|0,he=me&8191,ue=me>>>13,xe=c[8]|0,le=xe&8191,ve=xe>>>13,ce=c[9]|0,ie=ce&8191,fe=ce>>>13,Ee=p[0]|0,de=Ee&8191,be=Ee>>>13,Ke=p[1]|0,we=Ke&8191,Se=Ke>>>13,qe=p[2]|0,ge=qe&8191,Me=qe>>>13,Ve=p[3]|0,_e=Ve&8191,Be=Ve>>>13,ot=p[4]|0,Ae=ot&8191,Ne=ot>>>13,st=p[5]|0,Pe=st&8191,De=st>>>13,ut=p[6]|0,Re=ut&8191,Fe=ut>>>13,ht=p[7]|0,Te=ht&8191,ke=ht>>>13,ct=p[8]|0,Oe=ct&8191,je=ct>>>13,ft=p[9]|0,Ie=ft&8191,$e=ft>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(D,de),s=Math.imul(D,be),s=s+Math.imul(Y,de)|0,v=Math.imul(Y,be);var tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(tt>>>26)|0,tt&=67108863,g=Math.imul(A,de),s=Math.imul(A,be),s=s+Math.imul(E,de)|0,v=Math.imul(E,be),g=g+Math.imul(D,we)|0,s=s+Math.imul(D,Se)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,Se)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,de),s=Math.imul(V,be),s=s+Math.imul(X,de)|0,v=Math.imul(X,be),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,Se)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,Se)|0,g=g+Math.imul(D,ge)|0,s=s+Math.imul(D,Me)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,de),s=Math.imul(y,be),s=s+Math.imul(F,de)|0,v=Math.imul(F,be),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,Se)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,Se)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(D,_e)|0,s=s+Math.imul(D,Be)|0,s=s+Math.imul(Y,_e)|0,v=v+Math.imul(Y,Be)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(Z,de),s=Math.imul(Z,be),s=s+Math.imul(j,de)|0,v=Math.imul(j,be),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,Se)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,Se)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,_e)|0,s=s+Math.imul(A,Be)|0,s=s+Math.imul(E,_e)|0,v=v+Math.imul(E,Be)|0,g=g+Math.imul(D,Ae)|0,s=s+Math.imul(D,Ne)|0,s=s+Math.imul(Y,Ae)|0,v=v+Math.imul(Y,Ne)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(H,de),s=Math.imul(H,be),s=s+Math.imul(z,de)|0,v=Math.imul(z,be),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,Se)|0,s=s+Math.imul(j,we)|0,v=v+Math.imul(j,Se)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(V,_e)|0,s=s+Math.imul(V,Be)|0,s=s+Math.imul(X,_e)|0,v=v+Math.imul(X,Be)|0,g=g+Math.imul(A,Ae)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Ae)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(D,Pe)|0,s=s+Math.imul(D,De)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,De)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(ee,de),s=Math.imul(ee,be),s=s+Math.imul(ne,de)|0,v=Math.imul(ne,be),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,Se)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,Se)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(j,ge)|0,v=v+Math.imul(j,Me)|0,g=g+Math.imul(y,_e)|0,s=s+Math.imul(y,Be)|0,s=s+Math.imul(F,_e)|0,v=v+Math.imul(F,Be)|0,g=g+Math.imul(V,Ae)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Ae)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(D,Re)|0,s=s+Math.imul(D,Fe)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Fe)|0;var Dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,g=Math.imul(he,de),s=Math.imul(he,be),s=s+Math.imul(ue,de)|0,v=Math.imul(ue,be),g=g+Math.imul(ee,we)|0,s=s+Math.imul(ee,Se)|0,s=s+Math.imul(ne,we)|0,v=v+Math.imul(ne,Se)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,_e)|0,s=s+Math.imul(Z,Be)|0,s=s+Math.imul(j,_e)|0,v=v+Math.imul(j,Be)|0,g=g+Math.imul(y,Ae)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(F,Ae)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Fe)|0,g=g+Math.imul(D,Te)|0,s=s+Math.imul(D,ke)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,ke)|0;var qt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(qt>>>26)|0,qt&=67108863,g=Math.imul(le,de),s=Math.imul(le,be),s=s+Math.imul(ve,de)|0,v=Math.imul(ve,be),g=g+Math.imul(he,we)|0,s=s+Math.imul(he,Se)|0,s=s+Math.imul(ue,we)|0,v=v+Math.imul(ue,Se)|0,g=g+Math.imul(ee,ge)|0,s=s+Math.imul(ee,Me)|0,s=s+Math.imul(ne,ge)|0,v=v+Math.imul(ne,Me)|0,g=g+Math.imul(H,_e)|0,s=s+Math.imul(H,Be)|0,s=s+Math.imul(z,_e)|0,v=v+Math.imul(z,Be)|0,g=g+Math.imul(Z,Ae)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(j,Ae)|0,v=v+Math.imul(j,Ne)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Fe)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,ke)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,ke)|0,g=g+Math.imul(D,Oe)|0,s=s+Math.imul(D,je)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,je)|0;var Wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,g=Math.imul(ie,de),s=Math.imul(ie,be),s=s+Math.imul(fe,de)|0,v=Math.imul(fe,be),g=g+Math.imul(le,we)|0,s=s+Math.imul(le,Se)|0,s=s+Math.imul(ve,we)|0,v=v+Math.imul(ve,Se)|0,g=g+Math.imul(he,ge)|0,s=s+Math.imul(he,Me)|0,s=s+Math.imul(ue,ge)|0,v=v+Math.imul(ue,Me)|0,g=g+Math.imul(ee,_e)|0,s=s+Math.imul(ee,Be)|0,s=s+Math.imul(ne,_e)|0,v=v+Math.imul(ne,Be)|0,g=g+Math.imul(H,Ae)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Ae)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(j,Pe)|0,v=v+Math.imul(j,De)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Fe)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,ke)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,ke)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(D,Ie)|0,s=s+Math.imul(D,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,Se),s=s+Math.imul(fe,we)|0,v=Math.imul(fe,Se),g=g+Math.imul(le,ge)|0,s=s+Math.imul(le,Me)|0,s=s+Math.imul(ve,ge)|0,v=v+Math.imul(ve,Me)|0,g=g+Math.imul(he,_e)|0,s=s+Math.imul(he,Be)|0,s=s+Math.imul(ue,_e)|0,v=v+Math.imul(ue,Be)|0,g=g+Math.imul(ee,Ae)|0,s=s+Math.imul(ee,Ne)|0,s=s+Math.imul(ne,Ae)|0,v=v+Math.imul(ne,Ne)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(j,Re)|0,v=v+Math.imul(j,Fe)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,ke)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,ke)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Me),s=s+Math.imul(fe,ge)|0,v=Math.imul(fe,Me),g=g+Math.imul(le,_e)|0,s=s+Math.imul(le,Be)|0,s=s+Math.imul(ve,_e)|0,v=v+Math.imul(ve,Be)|0,g=g+Math.imul(he,Ae)|0,s=s+Math.imul(he,Ne)|0,s=s+Math.imul(ue,Ae)|0,v=v+Math.imul(ue,Ne)|0,g=g+Math.imul(ee,Pe)|0,s=s+Math.imul(ee,De)|0,s=s+Math.imul(ne,Pe)|0,v=v+Math.imul(ne,De)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Fe)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,ke)|0,s=s+Math.imul(j,Te)|0,v=v+Math.imul(j,ke)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0;var Tt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,g=Math.imul(ie,_e),s=Math.imul(ie,Be),s=s+Math.imul(fe,_e)|0,v=Math.imul(fe,Be),g=g+Math.imul(le,Ae)|0,s=s+Math.imul(le,Ne)|0,s=s+Math.imul(ve,Ae)|0,v=v+Math.imul(ve,Ne)|0,g=g+Math.imul(he,Pe)|0,s=s+Math.imul(he,De)|0,s=s+Math.imul(ue,Pe)|0,v=v+Math.imul(ue,De)|0,g=g+Math.imul(ee,Re)|0,s=s+Math.imul(ee,Fe)|0,s=s+Math.imul(ne,Re)|0,v=v+Math.imul(ne,Fe)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,ke)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,ke)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(j,Oe)|0,v=v+Math.imul(j,je)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Ae),s=Math.imul(ie,Ne),s=s+Math.imul(fe,Ae)|0,v=Math.imul(fe,Ne),g=g+Math.imul(le,Pe)|0,s=s+Math.imul(le,De)|0,s=s+Math.imul(ve,Pe)|0,v=v+Math.imul(ve,De)|0,g=g+Math.imul(he,Re)|0,s=s+Math.imul(he,Fe)|0,s=s+Math.imul(ue,Re)|0,v=v+Math.imul(ue,Fe)|0,g=g+Math.imul(ee,Te)|0,s=s+Math.imul(ee,ke)|0,s=s+Math.imul(ne,Te)|0,v=v+Math.imul(ne,ke)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(j,Ie)|0,v=v+Math.imul(j,$e)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,De),s=s+Math.imul(fe,Pe)|0,v=Math.imul(fe,De),g=g+Math.imul(le,Re)|0,s=s+Math.imul(le,Fe)|0,s=s+Math.imul(ve,Re)|0,v=v+Math.imul(ve,Fe)|0,g=g+Math.imul(he,Te)|0,s=s+Math.imul(he,ke)|0,s=s+Math.imul(ue,Te)|0,v=v+Math.imul(ue,ke)|0,g=g+Math.imul(ee,Oe)|0,s=s+Math.imul(ee,je)|0,s=s+Math.imul(ne,Oe)|0,v=v+Math.imul(ne,je)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0;var Ct=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Fe),s=s+Math.imul(fe,Re)|0,v=Math.imul(fe,Fe),g=g+Math.imul(le,Te)|0,s=s+Math.imul(le,ke)|0,s=s+Math.imul(ve,Te)|0,v=v+Math.imul(ve,ke)|0,g=g+Math.imul(he,Oe)|0,s=s+Math.imul(he,je)|0,s=s+Math.imul(ue,Oe)|0,v=v+Math.imul(ue,je)|0,g=g+Math.imul(ee,Ie)|0,s=s+Math.imul(ee,$e)|0,s=s+Math.imul(ne,Ie)|0,v=v+Math.imul(ne,$e)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,ke),s=s+Math.imul(fe,Te)|0,v=Math.imul(fe,ke),g=g+Math.imul(le,Oe)|0,s=s+Math.imul(le,je)|0,s=s+Math.imul(ve,Oe)|0,v=v+Math.imul(ve,je)|0,g=g+Math.imul(he,Ie)|0,s=s+Math.imul(he,$e)|0,s=s+Math.imul(ue,Ie)|0,v=v+Math.imul(ue,$e)|0;var wt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(wt>>>26)|0,wt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,je),s=s+Math.imul(fe,Oe)|0,v=Math.imul(fe,je),g=g+Math.imul(le,Ie)|0,s=s+Math.imul(le,$e)|0,s=s+Math.imul(ve,Ie)|0,v=v+Math.imul(ve,$e)|0;var Ft=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(fe,Ie)|0,v=Math.imul(fe,$e);var jt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(jt>>>26)|0,jt&=67108863,w[0]=tt,w[1]=et,w[2]=Et,w[3]=It,w[4]=Pt,w[5]=Bt,w[6]=Dt,w[7]=qt,w[8]=Wt,w[9]=Lt,w[10]=dt,w[11]=Tt,w[12]=Mt,w[13]=bt,w[14]=Ct,w[15]=gt,w[16]=wt,w[17]=Ft,w[18]=jt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(L=O);function B(M,o,f){f.negative=o.negative^M.negative,f.length=M.length+o.length;for(var u=0,c=0,p=0;p<f.length-1;p++){var w=c;c=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-M.length+1);s<=g;s++){var v=p-s,T=M.words[v]|0,D=o.words[s]|0,Y=T*D,Q=Y&67108863;w=w+(Y/67108864|0)|0,Q=Q+x|0,x=Q&67108863,w=w+(Q>>>26)|0,c+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=c}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(M,o,f){var u=new C;return u.mulp(M,o,f)}n.prototype.mulTo=function(o,f){var u,c=this.length+o.length;return this.length===10&&o.length===10?u=L(this,o,f):c<63?u=O(this,o,f):c<1024?u=B(this,o,f):u=P(this,o,f),u};function C(M,o){this.x=M,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,c=0;c<o;c++)f[c]=this.revBin(c,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var c=0,p=0;p<f;p++)c|=(o&1)<<f-p-1,o>>=1;return c},C.prototype.permute=function(o,f,u,c,p,w){for(var x=0;x<w;x++)c[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,c,p,w){this.permute(w,o,f,u,c,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var D=s,Y=v,Q=0;Q<x;Q++){var A=u[T+Q],E=c[T+Q],q=u[T+Q+x],V=c[T+Q+x],X=D*q-Y*V;V=D*V+Y*q,q=X,u[T+Q]=A+q,c[T+Q]=E+V,u[T+Q+x]=A-q,c[T+Q+x]=E-V,Q!==g&&(X=s*D-v*Y,Y=s*Y+v*D,D=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,c=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+c},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var c=0;c<u/2;c++){var p=o[c];o[c]=o[u-c-1],o[u-c-1]=p,p=f[c],f[c]=-f[u-c-1],f[u-c-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,c=0;c<f/2;c++){var p=Math.round(o[2*c+1]/f)*8192+Math.round(o[2*c]/f)+u;o[c]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,c){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<c;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var c=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(c),w=this.stub(c),x=new Array(c),g=new Array(c),s=new Array(c),v=new Array(c),T=new Array(c),D=new Array(c),Y=u.words;Y.length=c,this.convert13b(o.words,o.length,x,c),this.convert13b(f.words,f.length,v,c),this.transform(x,w,g,s,c,p),this.transform(v,w,T,D,c,p);for(var Q=0;Q<c;Q++){var A=g[Q]*T[Q]-s[Q]*D[Q];s[Q]=g[Q]*D[Q]+s[Q]*T[Q],g[Q]=A}return this.conjugate(g,s,c),this.transform(g,s,Y,w,c,p),this.conjugate(Y,w,c),this.normalize13b(Y,c),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var c=(this.words[u]|0)*o,p=(c&67108863)+(f&67108863);f>>=26,f+=c/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,c=0;c<f.length&&f[c]===0;c++,u=u.sqr());if(++c<f.length)for(var p=u.sqr();c<f.length;c++,p=p.sqr())f[c]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&c,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var c;f?c=(f-f%26)/26:c=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(c-=w,c=Math.max(0,c),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=c);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&c)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var c=67108863^67108863>>>f<<f;this.words[this.length-1]&=c}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var c=o.length+u,p;this._expand(c);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,c=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),c.iushln(u),w=p.words[p.length-1]|0);var g=c.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=c.clone()._ishlnsubmul(p,1,g);T.negative===0&&(c=T,s&&(s.words[g]=1));for(var D=g-1;D>=0;D--){var Y=(c.words[p.length+D]|0)*67108864+(c.words[p.length+D-1]|0);for(Y=Math.min(Y/w|0,67108863),c._ishlnsubmul(p,Y,D);c.negative!==0;)Y--,c.negative=0,c._ishlnsubmul(p,1,D),c.isZero()||(c.negative^=1);s&&(s.words[D]=Y)}return s&&s.strip(),c.strip(),f!=="div"&&u!==0&&c.iushrn(u),{div:s||null,mod:c}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var c,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(c=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:c,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(c=w.div.neg()),{div:c,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,c=o.ushrn(1),p=o.andln(1),w=u.cmp(c);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,c=this.length-1;c>=0;c--)u=(f*u+(this.words[c]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var c=(this.words[u]|0)+f*67108864;this.words[u]=c/o|0,f=c%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,D=1;!(f.words[0]&D)&&T<26;++T,D<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(c.isOdd()||p.isOdd())&&(c.iadd(s),p.isub(v)),c.iushrn(1),p.iushrn(1);for(var Y=0,Q=1;!(u.words[0]&Q)&&Y<26;++Y,Q<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(w),p.isub(x)):(u.isub(f),w.isub(c),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var c=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)c.isOdd()&&c.iadd(w),c.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),c.isub(p)):(u.isub(f),p.isub(c))}var T;return f.cmpn(1)===0?T=c:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var c=0;f.isEven()&&u.isEven();c++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(c)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,c=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=c,this;for(var p=c,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var c=this.words[0]|0;u=c===o?0:c<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var c=this.words[u]|0,p=o.words[u]|0;if(c!==p){c<p?f=-1:c>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new K(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var N={k256:null,p224:null,p192:null,p25519:null};function $(M,o){this.name=M,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var c=u<this.n?-1:f.ucmp(this.p);return c===0?(f.words[0]=0,f.length=1):c>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function W(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(W,$),W.prototype.split=function(o,f){for(var u=4194303,c=Math.min(o.length,9),p=0;p<c;p++)f.words[p]=o.words[p];if(f.length=c,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},W.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var c=o.words[u]|0;f+=c*977,o.words[u]=f&67108863,f=c*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function re(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(re,$);function J(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(J,$),J.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var c=(o.words[u]|0)*19+f,p=c&67108863;c>>>=26,o.words[u]=p,f=c}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(N[o])return N[o];var f;if(o==="k256")f=new W;else if(o==="p224")f=new G;else if(o==="p192")f=new re;else if(o==="p25519")f=new J;else throw new Error("Unknown prime "+o);return N[o]=f,f};function K(M){if(typeof M=="string"){var o=n._prime(M);this.m=o.p,this.prime=o}else i(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}K.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},K.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},K.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},K.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},K.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},K.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},K.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},K.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},K.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},K.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},K.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},K.prototype.isqr=function(o){return this.imul(o,o.clone())},K.prototype.sqr=function(o){return this.mul(o,o)},K.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var c=this.m.subn(1),p=0;!c.isZero()&&c.andln(1)===0;)p++,c.iushrn(1);i(!c.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,c),T=this.pow(o,c.addn(1).iushrn(1)),D=this.pow(o,c),Y=p;D.cmp(w)!==0;){for(var Q=D,A=0;Q.cmp(w)!==0;A++)Q=Q.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),D=D.redMul(v),Y=A}return T},K.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},K.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,c=new Array(1<<u);c[0]=new n(1).toRed(this),c[1]=o;for(var p=2;p<c.length;p++)c[p]=this.mul(c[p-1],o);var w=c[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var D=v>>T&1;if(w!==c[0]&&(w=this.sqr(w)),D===0&&x===0){g=0;continue}x<<=1,x|=D,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,c[x]),g=0,x=0)}s=26}return w},K.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},K.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new se(o)};function se(M){K.call(this,M),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(se,K),se.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},se.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},se.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),c=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(c).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},se.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(Fm);var jm=Fm.exports,L2=jm,QG=vt.Buffer;function eY(e,t){return QG.from(e.toRed(L2.mont(t.modulus)).redPow(new L2(t.publicExponent)).fromRed().toArray())}var e8=eY,tY=Jc,Nv=rf,rY=Hl,N2=JE,k2=QE,Um=jm,iY=e8,nY=bm,Ui=vt.Buffer,oY=function(t,r,i){var a;t.padding?a=t.padding:i?a=1:a=4;var n=tY(t),l;if(a===4)l=aY(n,r);else if(a===1)l=sY(n,r,i);else if(a===3){if(l=new Um(r),l.cmp(n.modulus)>=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return i?nY(l,n):iY(l,n)};function aY(e,t){var r=e.modulus.byteLength(),i=t.length,a=rY("sha1").update(Ui.alloc(0)).digest(),n=a.length,l=2*n;if(i>r-l-2)throw new Error("message too long");var h=Ui.alloc(r-i-l-2),d=r-n-1,m=Nv(n),_=k2(Ui.concat([a,h,Ui.alloc(1,1),t],d),N2(m,d)),S=k2(m,N2(_,n));return new Um(Ui.concat([Ui.alloc(1),S,_],r))}function sY(e,t,r){var i=t.length,a=e.modulus.byteLength();if(i>a-11)throw new Error("message too long");var n;return r?n=Ui.alloc(a-i-3,255):n=fY(a-i-3),new Um(Ui.concat([Ui.from([0,r?1:2]),n,Ui.alloc(1),t],a))}function fY(e){for(var t=Ui.allocUnsafe(e),r=0,i=Nv(e*2),a=0,n;r<e;)a===i.length&&(i=Nv(e*2),a=0),n=i[a++],n&&(t[r++]=n);return t}var lY=Jc,$2=JE,D2=QE,F2=jm,uY=bm,hY=Hl,cY=e8,bl=vt.Buffer,dY=function(t,r,i){var a;t.padding?a=t.padding:i?a=1:a=4;var n=lY(t),l=n.modulus.byteLength();if(r.length>l||new F2(r).cmp(n.modulus)>=0)throw new Error("decryption error");var h;i?h=cY(new F2(r),n):h=uY(r,n);var d=bl.alloc(l-h.length);if(h=bl.concat([d,h],l),a===4)return pY(n,h);if(a===1)return vY(n,h,i);if(a===3)return h;throw new Error("unknown padding")};function pY(e,t){var r=e.modulus.byteLength(),i=hY("sha1").update(bl.alloc(0)).digest(),a=i.length;if(t[0]!==0)throw new Error("decryption error");var n=t.slice(1,a+1),l=t.slice(a+1),h=D2(n,$2(l,a)),d=D2(l,$2(h,r-a-1));if(gY(i,d.slice(0,a)))throw new Error("decryption error");for(var m=a;d[m]===0;)m++;if(d[m++]!==1)throw new Error("decryption error");return d.slice(m)}function vY(e,t,r){for(var i=t.slice(0,2),a=2,n=0;t[a++]!==0;)if(a>=t.length){n++;break}var l=t.slice(2,a-1);if((i.toString("hex")!=="0002"&&!r||i.toString("hex")!=="0001"&&r)&&n++,l.length<8&&n++,n)throw new Error("decryption error");return t.slice(a)}function gY(e,t){e=bl.from(e),t=bl.from(t);var r=0,i=e.length;e.length!==t.length&&(r++,i=Math.min(e.length,t.length));for(var a=-1;++a<i;)r+=e[a]^t[a];return r}(function(e){e.publicEncrypt=oY,e.privateDecrypt=dY,e.privateEncrypt=function(r,i){return e.publicEncrypt(r,i,!0)},e.publicDecrypt=function(r,i){return e.privateDecrypt(r,i,!0)}})(XE);var Wf={};function j2(){throw new Error(`secure random number generation not supported by this browser
+use chrome, FireFox or Internet Explorer 11`)}var t8=vt,U2=rf,r8=t8.Buffer,i8=t8.kMaxLength,kv=Ze.crypto||Ze.msCrypto,n8=Math.pow(2,32)-1;function o8(e,t){if(typeof e!="number"||e!==e)throw new TypeError("offset must be a number");if(e>n8||e<0)throw new TypeError("offset must be a uint32");if(e>i8||e>t)throw new RangeError("offset out of range")}function a8(e,t,r){if(typeof e!="number"||e!==e)throw new TypeError("size must be a number");if(e>n8||e<0)throw new TypeError("size must be a uint32");if(e+t>r||e>i8)throw new RangeError("buffer too small")}kv&&kv.getRandomValues||!ye.browser?(Wf.randomFill=mY,Wf.randomFillSync=yY):(Wf.randomFill=j2,Wf.randomFillSync=j2);function mY(e,t,r,i){if(!r8.isBuffer(e)&&!(e instanceof Ze.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof t=="function")i=t,t=0,r=e.length;else if(typeof r=="function")i=r,r=e.length-t;else if(typeof i!="function")throw new TypeError('"cb" argument must be a function');return o8(t,e.length),a8(r,t,e.length),s8(e,t,r,i)}function s8(e,t,r,i){if(ye.browser){var a=e.buffer,n=new Uint8Array(a,t,r);if(kv.getRandomValues(n),i){ye.nextTick(function(){i(null,e)});return}return e}if(i){U2(r,function(h,d){if(h)return i(h);d.copy(e,t),i(null,e)});return}var l=U2(r);return l.copy(e,t),e}function yY(e,t,r){if(typeof t>"u"&&(t=0),!r8.isBuffer(e)&&!(e instanceof Ze.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return o8(t,e.length),r===void 0&&(r=e.length-t),a8(r,t,e.length),s8(e,t,r)}var H2;function f8(){if(H2)return lt;H2=1,lt.randomBytes=lt.rng=lt.pseudoRandomBytes=lt.prng=rf,lt.createHash=lt.Hash=Hl,lt.createHmac=lt.Hmac=l4;var e=Eq,t=Object.keys(e),r=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(t);lt.getHashes=function(){return r};var i=Cc;lt.pbkdf2=i.pbkdf2,lt.pbkdf2Sync=i.pbkdf2Sync;var a=Yi;lt.Cipher=a.Cipher,lt.createCipher=a.createCipher,lt.Cipheriv=a.Cipheriv,lt.createCipheriv=a.createCipheriv,lt.Decipher=a.Decipher,lt.createDecipher=a.createDecipher,lt.Decipheriv=a.Decipheriv,lt.createDecipheriv=a.createDecipheriv,lt.getCiphers=a.getCiphers,lt.listCiphers=a.listCiphers;var n=nK();lt.DiffieHellmanGroup=n.DiffieHellmanGroup,lt.createDiffieHellmanGroup=n.createDiffieHellmanGroup,lt.getDiffieHellman=n.getDiffieHellman,lt.createDiffieHellman=n.createDiffieHellman,lt.DiffieHellman=n.DiffieHellman;var l=GG();lt.createSign=l.createSign,lt.Sign=l.Sign,lt.createVerify=l.createVerify,lt.Verify=l.Verify,lt.createECDH=ZG();var h=XE;lt.publicEncrypt=h.publicEncrypt,lt.privateEncrypt=h.privateEncrypt,lt.publicDecrypt=h.publicDecrypt,lt.privateDecrypt=h.privateDecrypt;var d=Wf;return lt.randomFill=d.randomFill,lt.randomFillSync=d.randomFillSync,lt.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join(`
+`))},lt.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6},lt}var bY=f8();const BY=Vo(bY);export{IY as $,ih as A,ci as B,bv as C,Jt as D,wu as E,fh as F,EM as G,OY as H,H7 as I,Ot as J,Fi as K,wg as L,cn as M,ig as N,rc as O,Fn as P,lh as Q,zM as R,MY as S,lR as T,EY as U,xY as V,SY as W,Np as X,RY as Y,AY as Z,G7 as _,Tr as a,ER as a0,PR as a1,BR as a2,PY as a3,CY as a4,BY as a5,oB as a6,Le as b,Ze as c,Xs as d,Zh as e,ar as f,up as g,ec as h,Ss as i,wl as j,Qe as k,it as l,mp as m,Zn as n,Qs as o,ye as p,cr as q,TY as r,Zv as s,at as t,IR as u,Cp as v,Or as w,Je as x,gg as y,di as z};
diff --git a/web/settings/assets/vendor-axios-0e6de98a.js b/web/settings/assets/vendor-axios-0e6de98a.js
new file mode 100644
index 0000000000..af3ef95f65
--- /dev/null
+++ b/web/settings/assets/vendor-axios-0e6de98a.js
@@ -0,0 +1,6 @@
+import{g as ot,p as Ee,b as it}from"./vendor-a21b3a62.js";function De(e,t){return function(){return e.apply(t,arguments)}}const{toString:at}=Object.prototype,{getPrototypeOf:fe}=Object,W=(e=>t=>{const n=at.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),C=e=>(e=e.toLowerCase(),t=>W(t)===e),K=e=>t=>typeof t===e,{isArray:D}=Array,j=K("undefined");function ct(e){return e!==null&&!j(e)&&e.constructor!==null&&!j(e.constructor)&&A(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Ue=C("ArrayBuffer");function ut(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Ue(e.buffer),t}const lt=K("string"),A=K("function"),ke=K("number"),G=e=>e!==null&&typeof e=="object",ft=e=>e===!0||e===!1,H=e=>{if(W(e)!=="object")return!1;const t=fe(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},dt=C("Date"),pt=C("File"),ht=C("Blob"),mt=C("FileList"),yt=e=>G(e)&&A(e.pipe),bt=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||A(e.append)&&((t=W(e))==="formdata"||t==="object"&&A(e.toString)&&e.toString()==="[object FormData]"))},wt=C("URLSearchParams"),[Et,gt,St,Rt]=["ReadableStream","Request","Response","Headers"].map(C),Ot=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function q(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),D(e))for(r=0,s=e.length;r<s;r++)t.call(null,e[r],r,e);else{const o=n?Object.getOwnPropertyNames(e):Object.keys(e),i=o.length;let c;for(r=0;r<i;r++)c=o[r],t.call(null,e[c],c,e)}}function je(e,t){t=t.toLowerCase();const n=Object.keys(e);let r=n.length,s;for(;r-- >0;)if(s=n[r],t===s.toLowerCase())return s;return null}const L=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:ot)(),qe=e=>!j(e)&&e!==L;function se(){const{caseless:e}=qe(this)&&this||{},t={},n=(r,s)=>{const o=e&&je(t,s)||s;H(t[o])&&H(r)?t[o]=se(t[o],r):H(r)?t[o]=se({},r):D(r)?t[o]=r.slice():t[o]=r};for(let r=0,s=arguments.length;r<s;r++)arguments[r]&&q(arguments[r],n);return t}const Tt=(e,t,n,{allOwnKeys:r}={})=>(q(t,(s,o)=>{n&&A(s)?e[o]=De(s,n):e[o]=s},{allOwnKeys:r}),e),At=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),xt=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Ct=(e,t,n,r)=>{let s,o,i;const c={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!c[i]&&(t[i]=e[i],c[i]=!0);e=n!==!1&&fe(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Nt=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Pt=e=>{if(!e)return null;if(D(e))return e;let t=e.length;if(!ke(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},_t=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&fe(Uint8Array)),Ft=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},Lt=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Bt=C("HTMLFormElement"),Dt=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),ge=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Ut=C("RegExp"),Ie=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};q(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},kt=e=>{Ie(e,(t,n)=>{if(A(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(A(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},jt=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return D(e)?r(e):r(String(e).split(t)),n},qt=()=>{},It=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,Y="abcdefghijklmnopqrstuvwxyz",Se="0123456789",He={DIGIT:Se,ALPHA:Y,ALPHA_DIGIT:Y+Y.toUpperCase()+Se},Ht=(e=16,t=He.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function Mt(e){return!!(e&&A(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const zt=e=>{const t=new Array(10),n=(r,s)=>{if(G(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const o=D(r)?[]:{};return q(r,(i,c)=>{const f=n(i,s+1);!j(f)&&(o[c]=f)}),t[s]=void 0,o}}return r};return n(e,0)},Vt=C("AsyncFunction"),vt=e=>e&&(G(e)||A(e))&&A(e.then)&&A(e.catch),Me=((e,t)=>e?setImmediate:t?((n,r)=>(L.addEventListener("message",({source:s,data:o})=>{s===L&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),L.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",A(L.postMessage)),$t=typeof queueMicrotask<"u"?queueMicrotask.bind(L):typeof Ee<"u"&&Ee.nextTick||Me,a={isArray:D,isArrayBuffer:Ue,isBuffer:ct,isFormData:bt,isArrayBufferView:ut,isString:lt,isNumber:ke,isBoolean:ft,isObject:G,isPlainObject:H,isReadableStream:Et,isRequest:gt,isResponse:St,isHeaders:Rt,isUndefined:j,isDate:dt,isFile:pt,isBlob:ht,isRegExp:Ut,isFunction:A,isStream:yt,isURLSearchParams:wt,isTypedArray:_t,isFileList:mt,forEach:q,merge:se,extend:Tt,trim:Ot,stripBOM:At,inherits:xt,toFlatObject:Ct,kindOf:W,kindOfTest:C,endsWith:Nt,toArray:Pt,forEachEntry:Ft,matchAll:Lt,isHTMLForm:Bt,hasOwnProperty:ge,hasOwnProp:ge,reduceDescriptors:Ie,freezeMethods:kt,toObjectSet:jt,toCamelCase:Dt,noop:qt,toFiniteNumber:It,findKey:je,global:L,isContextDefined:qe,ALPHABET:He,generateString:Ht,isSpecCompliantForm:Mt,toJSONObject:zt,isAsyncFn:Vt,isThenable:vt,setImmediate:Me,asap:$t};function m(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(m,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const ze=m.prototype,Ve={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Ve[e]={value:e}});Object.defineProperties(m,Ve);Object.defineProperty(ze,"isAxiosError",{value:!0});m.from=(e,t,n,r,s,o)=>{const i=Object.create(ze);return a.toFlatObject(e,i,function(f){return f!==Error.prototype},c=>c!=="isAxiosError"),m.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const Jt=null;function oe(e){return a.isPlainObject(e)||a.isArray(e)}function ve(e){return a.endsWith(e,"[]")?e.slice(0,-2):e}function Re(e,t,n){return e?e.concat(t).map(function(s,o){return s=ve(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function Wt(e){return a.isArray(e)&&!e.some(oe)}const Kt=a.toFlatObject(a,{},null,function(t){return/^is[A-Z]/.test(t)});function X(e,t,n){if(!a.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=a.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,h){return!a.isUndefined(h[y])});const r=n.metaTokens,s=n.visitor||l,o=n.dots,i=n.indexes,f=(n.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(t);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function u(p){if(p===null)return"";if(a.isDate(p))return p.toISOString();if(!f&&a.isBlob(p))throw new m("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(p)||a.isTypedArray(p)?f&&typeof Blob=="function"?new Blob([p]):it.Buffer.from(p):p}function l(p,y,h){let w=p;if(p&&!h&&typeof p=="object"){if(a.endsWith(y,"{}"))y=r?y:y.slice(0,-2),p=JSON.stringify(p);else if(a.isArray(p)&&Wt(p)||(a.isFileList(p)||a.endsWith(y,"[]"))&&(w=a.toArray(p)))return y=ve(y),w.forEach(function(R,N){!(a.isUndefined(R)||R===null)&&t.append(i===!0?Re([y],N,o):i===null?y:y+"[]",u(R))}),!1}return oe(p)?!0:(t.append(Re(h,y,o),u(p)),!1)}const d=[],b=Object.assign(Kt,{defaultVisitor:l,convertValue:u,isVisitable:oe});function g(p,y){if(!a.isUndefined(p)){if(d.indexOf(p)!==-1)throw Error("Circular reference detected in "+y.join("."));d.push(p),a.forEach(p,function(w,S){(!(a.isUndefined(w)||w===null)&&s.call(t,w,a.isString(S)?S.trim():S,y,b))===!0&&g(w,y?y.concat(S):[S])}),d.pop()}}if(!a.isObject(e))throw new TypeError("data must be an object");return g(e),t}function Oe(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function de(e,t){this._pairs=[],e&&X(e,this,t)}const $e=de.prototype;$e.append=function(t,n){this._pairs.push([t,n])};$e.toString=function(t){const n=t?function(r){return t.call(this,r,Oe)}:Oe;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function Gt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Je(e,t,n){if(!t)return e;const r=n&&n.encode||Gt,s=n&&n.serialize;let o;if(s?o=s(t,n):o=a.isURLSearchParams(t)?t.toString():new de(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class Xt{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){a.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Te=Xt,We={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Qt=typeof URLSearchParams<"u"?URLSearchParams:de,Zt=typeof FormData<"u"?FormData:null,Yt=typeof Blob<"u"?Blob:null,en={isBrowser:!0,classes:{URLSearchParams:Qt,FormData:Zt,Blob:Yt},protocols:["http","https","file","blob","url","data"]},pe=typeof window<"u"&&typeof document<"u",ie=typeof navigator=="object"&&navigator||void 0,tn=pe&&(!ie||["ReactNative","NativeScript","NS"].indexOf(ie.product)<0),nn=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),rn=pe&&window.location.href||"http://localhost",sn=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:pe,hasStandardBrowserEnv:tn,hasStandardBrowserWebWorkerEnv:nn,navigator:ie,origin:rn},Symbol.toStringTag,{value:"Module"})),T={...sn,...en};function on(e,t){return X(e,new T.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,o){return T.isNode&&a.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function an(e){return a.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function cn(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r<s;r++)o=n[r],t[o]=e[o];return t}function Ke(e){function t(n,r,s,o){let i=n[o++];if(i==="__proto__")return!0;const c=Number.isFinite(+i),f=o>=n.length;return i=!i&&a.isArray(s)?s.length:i,f?(a.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!c):((!s[i]||!a.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&a.isArray(s[i])&&(s[i]=cn(s[i])),!c)}if(a.isFormData(e)&&a.isFunction(e.entries)){const n={};return a.forEachEntry(e,(r,s)=>{t(an(r),s,n,0)}),n}return null}function un(e,t,n){if(a.isString(e))try{return(t||JSON.parse)(e),a.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const he={transitional:We,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=a.isObject(t);if(o&&a.isHTMLForm(t)&&(t=new FormData(t)),a.isFormData(t))return s?JSON.stringify(Ke(t)):t;if(a.isArrayBuffer(t)||a.isBuffer(t)||a.isStream(t)||a.isFile(t)||a.isBlob(t)||a.isReadableStream(t))return t;if(a.isArrayBufferView(t))return t.buffer;if(a.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let c;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return on(t,this.formSerializer).toString();if((c=a.isFileList(t))||r.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return X(c?{"files[]":t}:t,f&&new f,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),un(t)):t}],transformResponse:[function(t){const n=this.transitional||he.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(t)||a.isReadableStream(t))return t;if(t&&a.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(c){if(i)throw c.name==="SyntaxError"?m.from(c,m.ERR_BAD_RESPONSE,this,null,this.response):c}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:T.classes.FormData,Blob:T.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],e=>{he.headers[e]={}});const me=he,ln=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),fn=e=>{const t={};let n,r,s;return e&&e.split(`
+`).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&ln[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},Ae=Symbol("internals");function k(e){return e&&String(e).trim().toLowerCase()}function M(e){return e===!1||e==null?e:a.isArray(e)?e.map(M):String(e)}function dn(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const pn=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function ee(e,t,n,r,s){if(a.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!a.isString(t)){if(a.isString(r))return t.indexOf(r)!==-1;if(a.isRegExp(r))return r.test(t)}}function hn(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function mn(e,t){const n=a.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,i){return this[r].call(this,t,s,o,i)},configurable:!0})})}class Q{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(c,f,u){const l=k(f);if(!l)throw new Error("header name must be a non-empty string");const d=a.findKey(s,l);(!d||s[d]===void 0||u===!0||u===void 0&&s[d]!==!1)&&(s[d||f]=M(c))}const i=(c,f)=>a.forEach(c,(u,l)=>o(u,l,f));if(a.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(a.isString(t)&&(t=t.trim())&&!pn(t))i(fn(t),n);else if(a.isHeaders(t))for(const[c,f]of t.entries())o(f,c,r);else t!=null&&o(n,t,r);return this}get(t,n){if(t=k(t),t){const r=a.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return dn(s);if(a.isFunction(n))return n.call(this,s,r);if(a.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=k(t),t){const r=a.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||ee(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(i){if(i=k(i),i){const c=a.findKey(r,i);c&&(!n||ee(r,r[c],c,n))&&(delete r[c],s=!0)}}return a.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||ee(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return a.forEach(this,(s,o)=>{const i=a.findKey(r,o);if(i){n[i]=M(s),delete n[o];return}const c=t?hn(o):String(o).trim();c!==o&&delete n[o],n[c]=M(s),r[c]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return a.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&a.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(`
+`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[Ae]=this[Ae]={accessors:{}}).accessors,s=this.prototype;function o(i){const c=k(i);r[c]||(mn(s,i),r[c]=!0)}return a.isArray(t)?t.forEach(o):o(t),this}}Q.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);a.reduceDescriptors(Q.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});a.freezeMethods(Q);const x=Q;function te(e,t){const n=this||me,r=t||n,s=x.from(r.headers);let o=r.data;return a.forEach(e,function(c){o=c.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function Ge(e){return!!(e&&e.__CANCEL__)}function U(e,t,n){m.call(this,e??"canceled",m.ERR_CANCELED,t,n),this.name="CanceledError"}a.inherits(U,m,{__CANCEL__:!0});function Xe(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new m("Request failed with status code "+n.status,[m.ERR_BAD_REQUEST,m.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function yn(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function bn(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(f){const u=Date.now(),l=r[o];i||(i=u),n[s]=f,r[s]=u;let d=o,b=0;for(;d!==s;)b+=n[d++],d=d%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),u-i<t)return;const g=l&&u-l;return g?Math.round(b*1e3/g):void 0}}function wn(e,t){let n=0,r=1e3/t,s,o;const i=(u,l=Date.now())=>{n=l,s=null,o&&(clearTimeout(o),o=null),e.apply(null,u)};return[(...u)=>{const l=Date.now(),d=l-n;d>=r?i(u,l):(s=u,o||(o=setTimeout(()=>{o=null,i(s)},r-d)))},()=>s&&i(s)]}const V=(e,t,n=3)=>{let r=0;const s=bn(50,250);return wn(o=>{const i=o.loaded,c=o.lengthComputable?o.total:void 0,f=i-r,u=s(f),l=i<=c;r=i;const d={loaded:i,total:c,progress:c?i/c:void 0,bytes:f,rate:u||void 0,estimated:u&&c&&l?(c-i)/u:void 0,event:o,lengthComputable:c!=null,[t?"download":"upload"]:!0};e(d)},n)},xe=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Ce=e=>(...t)=>a.asap(()=>e(...t)),En=T.hasStandardBrowserEnv?function(){const t=T.navigator&&/(msie|trident)/i.test(T.navigator.userAgent),n=document.createElement("a");let r;function s(o){let i=o;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=s(window.location.href),function(i){const c=a.isString(i)?s(i):i;return c.protocol===r.protocol&&c.host===r.host}}():function(){return function(){return!0}}(),gn=T.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const i=[e+"="+encodeURIComponent(t)];a.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),a.isString(r)&&i.push("path="+r),a.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Sn(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Rn(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Qe(e,t){return e&&!Sn(t)?Rn(e,t):t}const Ne=e=>e instanceof x?{...e}:e;function B(e,t){t=t||{};const n={};function r(u,l,d){return a.isPlainObject(u)&&a.isPlainObject(l)?a.merge.call({caseless:d},u,l):a.isPlainObject(l)?a.merge({},l):a.isArray(l)?l.slice():l}function s(u,l,d){if(a.isUndefined(l)){if(!a.isUndefined(u))return r(void 0,u,d)}else return r(u,l,d)}function o(u,l){if(!a.isUndefined(l))return r(void 0,l)}function i(u,l){if(a.isUndefined(l)){if(!a.isUndefined(u))return r(void 0,u)}else return r(void 0,l)}function c(u,l,d){if(d in t)return r(u,l);if(d in e)return r(void 0,u)}const f={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:c,headers:(u,l)=>s(Ne(u),Ne(l),!0)};return a.forEach(Object.keys(Object.assign({},e,t)),function(l){const d=f[l]||s,b=d(e[l],t[l],l);a.isUndefined(b)&&d!==c||(n[l]=b)}),n}const Ze=e=>{const t=B({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:c}=t;t.headers=i=x.from(i),t.url=Je(Qe(t.baseURL,t.url),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):"")));let f;if(a.isFormData(n)){if(T.hasStandardBrowserEnv||T.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[u,...l]=f?f.split(";").map(d=>d.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...l].join("; "))}}if(T.hasStandardBrowserEnv&&(r&&a.isFunction(r)&&(r=r(t)),r||r!==!1&&En(t.url))){const u=s&&o&&gn.read(o);u&&i.set(s,u)}return t},On=typeof XMLHttpRequest<"u",Tn=On&&function(e){return new Promise(function(n,r){const s=Ze(e);let o=s.data;const i=x.from(s.headers).normalize();let{responseType:c,onUploadProgress:f,onDownloadProgress:u}=s,l,d,b,g,p;function y(){g&&g(),p&&p(),s.cancelToken&&s.cancelToken.unsubscribe(l),s.signal&&s.signal.removeEventListener("abort",l)}let h=new XMLHttpRequest;h.open(s.method.toUpperCase(),s.url,!0),h.timeout=s.timeout;function w(){if(!h)return;const R=x.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),O={data:!c||c==="text"||c==="json"?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:R,config:e,request:h};Xe(function(F){n(F),y()},function(F){r(F),y()},O),h=null}"onloadend"in h?h.onloadend=w:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.indexOf("file:")===0)||setTimeout(w)},h.onabort=function(){h&&(r(new m("Request aborted",m.ECONNABORTED,e,h)),h=null)},h.onerror=function(){r(new m("Network Error",m.ERR_NETWORK,e,h)),h=null},h.ontimeout=function(){let N=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const O=s.transitional||We;s.timeoutErrorMessage&&(N=s.timeoutErrorMessage),r(new m(N,O.clarifyTimeoutError?m.ETIMEDOUT:m.ECONNABORTED,e,h)),h=null},o===void 0&&i.setContentType(null),"setRequestHeader"in h&&a.forEach(i.toJSON(),function(N,O){h.setRequestHeader(O,N)}),a.isUndefined(s.withCredentials)||(h.withCredentials=!!s.withCredentials),c&&c!=="json"&&(h.responseType=s.responseType),u&&([b,p]=V(u,!0),h.addEventListener("progress",b)),f&&h.upload&&([d,g]=V(f),h.upload.addEventListener("progress",d),h.upload.addEventListener("loadend",g)),(s.cancelToken||s.signal)&&(l=R=>{h&&(r(!R||R.type?new U(null,e,h):R),h.abort(),h=null)},s.cancelToken&&s.cancelToken.subscribe(l),s.signal&&(s.signal.aborted?l():s.signal.addEventListener("abort",l)));const S=yn(s.url);if(S&&T.protocols.indexOf(S)===-1){r(new m("Unsupported protocol "+S+":",m.ERR_BAD_REQUEST,e));return}h.send(o||null)})},An=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(u){if(!s){s=!0,c();const l=u instanceof Error?u:this.reason;r.abort(l instanceof m?l:new U(l instanceof Error?l.message:l))}};let i=t&&setTimeout(()=>{i=null,o(new m(`timeout ${t} of ms exceeded`,m.ETIMEDOUT))},t);const c=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(o):u.removeEventListener("abort",o)}),e=null)};e.forEach(u=>u.addEventListener("abort",o));const{signal:f}=r;return f.unsubscribe=()=>a.asap(c),f}},xn=An,Cn=function*(e,t){let n=e.byteLength;if(!t||n<t){yield e;return}let r=0,s;for(;r<n;)s=r+t,yield e.slice(r,s),r=s},Nn=async function*(e,t){for await(const n of Pn(e))yield*Cn(n,t)},Pn=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:n,value:r}=await t.read();if(n)break;yield r}}finally{await t.cancel()}},Pe=(e,t,n,r)=>{const s=Nn(e,t);let o=0,i,c=f=>{i||(i=!0,r&&r(f))};return new ReadableStream({async pull(f){try{const{done:u,value:l}=await s.next();if(u){c(),f.close();return}let d=l.byteLength;if(n){let b=o+=d;n(b)}f.enqueue(new Uint8Array(l))}catch(u){throw c(u),u}},cancel(f){return c(f),s.return()}},{highWaterMark:2})},Z=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",Ye=Z&&typeof ReadableStream=="function",_n=Z&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),et=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Fn=Ye&&et(()=>{let e=!1;const t=new Request(T.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),_e=64*1024,ae=Ye&&et(()=>a.isReadableStream(new Response("").body)),v={stream:ae&&(e=>e.body)};Z&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!v[t]&&(v[t]=a.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new m(`Response type '${t}' is not supported`,m.ERR_NOT_SUPPORT,r)})})})(new Response);const Ln=async e=>{if(e==null)return 0;if(a.isBlob(e))return e.size;if(a.isSpecCompliantForm(e))return(await new Request(T.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(a.isArrayBufferView(e)||a.isArrayBuffer(e))return e.byteLength;if(a.isURLSearchParams(e)&&(e=e+""),a.isString(e))return(await _n(e)).byteLength},Bn=async(e,t)=>{const n=a.toFiniteNumber(e.getContentLength());return n??Ln(t)},Dn=Z&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:o,timeout:i,onDownloadProgress:c,onUploadProgress:f,responseType:u,headers:l,withCredentials:d="same-origin",fetchOptions:b}=Ze(e);u=u?(u+"").toLowerCase():"text";let g=xn([s,o&&o.toAbortSignal()],i),p;const y=g&&g.unsubscribe&&(()=>{g.unsubscribe()});let h;try{if(f&&Fn&&n!=="get"&&n!=="head"&&(h=await Bn(l,r))!==0){let O=new Request(t,{method:"POST",body:r,duplex:"half"}),P;if(a.isFormData(r)&&(P=O.headers.get("content-type"))&&l.setContentType(P),O.body){const[F,I]=xe(h,V(Ce(f)));r=Pe(O.body,_e,F,I)}}a.isString(d)||(d=d?"include":"omit");const w="credentials"in Request.prototype;p=new Request(t,{...b,signal:g,method:n.toUpperCase(),headers:l.normalize().toJSON(),body:r,duplex:"half",credentials:w?d:void 0});let S=await fetch(p);const R=ae&&(u==="stream"||u==="response");if(ae&&(c||R&&y)){const O={};["status","statusText","headers"].forEach(we=>{O[we]=S[we]});const P=a.toFiniteNumber(S.headers.get("content-length")),[F,I]=c&&xe(P,V(Ce(c),!0))||[];S=new Response(Pe(S.body,_e,F,()=>{I&&I(),y&&y()}),O)}u=u||"text";let N=await v[a.findKey(v,u)||"text"](S,e);return!R&&y&&y(),await new Promise((O,P)=>{Xe(O,P,{data:N,headers:x.from(S.headers),status:S.status,statusText:S.statusText,config:e,request:p})})}catch(w){throw y&&y(),w&&w.name==="TypeError"&&/fetch/i.test(w.message)?Object.assign(new m("Network Error",m.ERR_NETWORK,e,p),{cause:w.cause||w}):m.from(w,w&&w.code,e,p)}}),ce={http:Jt,xhr:Tn,fetch:Dn};a.forEach(ce,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Fe=e=>`- ${e}`,Un=e=>a.isFunction(e)||e===null||e===!1,tt={getAdapter:e=>{e=a.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let o=0;o<t;o++){n=e[o];let i;if(r=n,!Un(n)&&(r=ce[(i=String(n)).toLowerCase()],r===void 0))throw new m(`Unknown adapter '${i}'`);if(r)break;s[i||"#"+o]=r}if(!r){const o=Object.entries(s).map(([c,f])=>`adapter ${c} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since :
+`+o.map(Fe).join(`
+`):" "+Fe(o[0]):"as no adapter specified";throw new m("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return r},adapters:ce};function ne(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new U(null,e)}function Le(e){return ne(e),e.headers=x.from(e.headers),e.data=te.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),tt.getAdapter(e.adapter||me.adapter)(e).then(function(r){return ne(e),r.data=te.call(e,e.transformResponse,r),r.headers=x.from(r.headers),r},function(r){return Ge(r)||(ne(e),r&&r.response&&(r.response.data=te.call(e,e.transformResponse,r.response),r.response.headers=x.from(r.response.headers))),Promise.reject(r)})}const nt="1.7.7",ye={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{ye[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Be={};ye.transitional=function(t,n,r){function s(o,i){return"[Axios v"+nt+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,c)=>{if(t===!1)throw new m(s(i," has been removed"+(n?" in "+n:"")),m.ERR_DEPRECATED);return n&&!Be[i]&&(Be[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,c):!0}};function kn(e,t,n){if(typeof e!="object")throw new m("options must be an object",m.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],i=t[o];if(i){const c=e[o],f=c===void 0||i(c,o,e);if(f!==!0)throw new m("option "+o+" must be "+f,m.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new m("Unknown option "+o,m.ERR_BAD_OPTION)}}const ue={assertOptions:kn,validators:ye},_=ue.validators;class ${constructor(t){this.defaults=t,this.interceptors={request:new Te,response:new Te}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s;Error.captureStackTrace?Error.captureStackTrace(s={}):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=`
+`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=B(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&ue.assertOptions(r,{silentJSONParsing:_.transitional(_.boolean),forcedJSONParsing:_.transitional(_.boolean),clarifyTimeoutError:_.transitional(_.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:ue.assertOptions(s,{encode:_.function,serialize:_.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&a.merge(o.common,o[n.method]);o&&a.forEach(["delete","get","head","post","put","patch","common"],p=>{delete o[p]}),n.headers=x.concat(i,o);const c=[];let f=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(n)===!1||(f=f&&y.synchronous,c.unshift(y.fulfilled,y.rejected))});const u=[];this.interceptors.response.forEach(function(y){u.push(y.fulfilled,y.rejected)});let l,d=0,b;if(!f){const p=[Le.bind(this),void 0];for(p.unshift.apply(p,c),p.push.apply(p,u),b=p.length,l=Promise.resolve(n);d<b;)l=l.then(p[d++],p[d++]);return l}b=c.length;let g=n;for(d=0;d<b;){const p=c[d++],y=c[d++];try{g=p(g)}catch(h){y.call(this,h);break}}try{l=Le.call(this,g)}catch(p){return Promise.reject(p)}for(d=0,b=u.length;d<b;)l=l.then(u[d++],u[d++]);return l}getUri(t){t=B(this.defaults,t);const n=Qe(t.baseURL,t.url);return Je(n,t.params,t.paramsSerializer)}}a.forEach(["delete","get","head","options"],function(t){$.prototype[t]=function(n,r){return this.request(B(r||{},{method:t,url:n,data:(r||{}).data}))}});a.forEach(["post","put","patch"],function(t){function n(r){return function(o,i,c){return this.request(B(c||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:o,data:i}))}}$.prototype[t]=n(),$.prototype[t+"Form"]=n(!0)});const z=$;class be{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(o){n=o});const r=this;this.promise.then(s=>{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(c=>{r.subscribe(c),o=c}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,c){r.reason||(r.reason=new U(o,i,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new be(function(s){t=s}),cancel:t}}}const jn=be;function qn(e){return function(n){return e.apply(null,n)}}function In(e){return a.isObject(e)&&e.isAxiosError===!0}const le={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(le).forEach(([e,t])=>{le[t]=e});const Hn=le;function rt(e){const t=new z(e),n=De(z.prototype.request,t);return a.extend(n,z.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return rt(B(e,s))},n}const E=rt(me);E.Axios=z;E.CanceledError=U;E.CancelToken=jn;E.isCancel=Ge;E.VERSION=nt;E.toFormData=X;E.AxiosError=m;E.Cancel=E.CanceledError;E.all=function(t){return Promise.all(t)};E.spread=qn;E.isAxiosError=In;E.mergeConfig=B;E.AxiosHeaders=x;E.formToJSON=e=>Ke(a.isHTMLForm(e)?new FormData(e):e);E.getAdapter=tt.getAdapter;E.HttpStatusCode=Hn;E.default=E;const Wn=E;function J(e){return J=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},J(e)}function re(e,t){if(!e.vueAxiosInstalled){var n=st(t)?Vn(t):t;if(vn(n)){var r=$n(e);if(r){var s=r<3?Mn:zn;Object.keys(n).forEach(function(o){s(e,o,n[o])}),e.vueAxiosInstalled=!0}else console.error("[vue-axios] unknown Vue version")}else console.error("[vue-axios] configuration is invalid, expected options are either <axios_instance> or { <registration_key>: <axios_instance> }")}}function Mn(e,t,n){Object.defineProperty(e.prototype,t,{get:function(){return n}}),e[t]=n}function zn(e,t,n){e.config.globalProperties[t]=n,e[t]=n}function st(e){return e&&typeof e.get=="function"&&typeof e.post=="function"}function Vn(e){return{axios:e,$http:e}}function vn(e){return J(e)==="object"&&Object.keys(e).every(function(t){return st(e[t])})}function $n(e){return e&&e.version&&Number(e.version.split(".")[0])}(typeof exports>"u"?"undefined":J(exports))=="object"?module.exports=re:typeof define=="function"&&define.amd?define([],function(){return re}):window.Vue&&window.axios&&window.Vue.use&&Vue.use(re,window.axios);export{Wn as a,re as p};
diff --git a/web/settings/assets/vendor-axios-65ecee4b.js b/web/settings/assets/vendor-axios-65ecee4b.js
deleted file mode 100644
index 232be67a02..0000000000
--- a/web/settings/assets/vendor-axios-65ecee4b.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import{g as it,p as ge,b as at}from"./vendor-f2b8aa6f.js";function Ue(e,t){return function(){return e.apply(t,arguments)}}const{toString:ct}=Object.prototype,{getPrototypeOf:de}=Object,W=(e=>t=>{const n=ct.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),C=e=>(e=e.toLowerCase(),t=>W(t)===e),K=e=>t=>typeof t===e,{isArray:D}=Array,j=K("undefined");function ut(e){return e!==null&&!j(e)&&e.constructor!==null&&!j(e.constructor)&&O(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const ke=C("ArrayBuffer");function lt(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&ke(e.buffer),t}const ft=K("string"),O=K("function"),je=K("number"),G=e=>e!==null&&typeof e=="object",dt=e=>e===!0||e===!1,H=e=>{if(W(e)!=="object")return!1;const t=de(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},pt=C("Date"),ht=C("File"),mt=C("Blob"),yt=C("FileList"),wt=e=>G(e)&&O(e.pipe),bt=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||O(e.append)&&((t=W(e))==="formdata"||t==="object"&&O(e.toString)&&e.toString()==="[object FormData]"))},Et=C("URLSearchParams"),[gt,St,Rt,Ot]=["ReadableStream","Request","Response","Headers"].map(C),Tt=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function q(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),D(e))for(r=0,s=e.length;r<s;r++)t.call(null,e[r],r,e);else{const o=n?Object.getOwnPropertyNames(e):Object.keys(e),i=o.length;let c;for(r=0;r<i;r++)c=o[r],t.call(null,e[c],c,e)}}function qe(e,t){t=t.toLowerCase();const n=Object.keys(e);let r=n.length,s;for(;r-- >0;)if(s=n[r],t===s.toLowerCase())return s;return null}const L=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:it)(),Ie=e=>!j(e)&&e!==L;function oe(){const{caseless:e}=Ie(this)&&this||{},t={},n=(r,s)=>{const o=e&&qe(t,s)||s;H(t[o])&&H(r)?t[o]=oe(t[o],r):H(r)?t[o]=oe({},r):D(r)?t[o]=r.slice():t[o]=r};for(let r=0,s=arguments.length;r<s;r++)arguments[r]&&q(arguments[r],n);return t}const At=(e,t,n,{allOwnKeys:r}={})=>(q(t,(s,o)=>{n&&O(s)?e[o]=Ue(s,n):e[o]=s},{allOwnKeys:r}),e),xt=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Ct=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Nt=(e,t,n,r)=>{let s,o,i;const c={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!c[i]&&(t[i]=e[i],c[i]=!0);e=n!==!1&&de(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Pt=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},_t=e=>{if(!e)return null;if(D(e))return e;let t=e.length;if(!je(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Ft=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&de(Uint8Array)),Lt=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},Bt=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Dt=C("HTMLFormElement"),Ut=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),Se=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),kt=C("RegExp"),He=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};q(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},jt=e=>{He(e,(t,n)=>{if(O(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(O(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},qt=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return D(e)?r(e):r(String(e).split(t)),n},It=()=>{},Ht=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,ee="abcdefghijklmnopqrstuvwxyz",Re="0123456789",Me={DIGIT:Re,ALPHA:ee,ALPHA_DIGIT:ee+ee.toUpperCase()+Re},Mt=(e=16,t=Me.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function zt(e){return!!(e&&O(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const Vt=e=>{const t=new Array(10),n=(r,s)=>{if(G(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const o=D(r)?[]:{};return q(r,(i,c)=>{const f=n(i,s+1);!j(f)&&(o[c]=f)}),t[s]=void 0,o}}return r};return n(e,0)},vt=C("AsyncFunction"),$t=e=>e&&(G(e)||O(e))&&O(e.then)&&O(e.catch),ze=((e,t)=>e?setImmediate:t?((n,r)=>(L.addEventListener("message",({source:s,data:o})=>{s===L&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),L.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",O(L.postMessage)),Jt=typeof queueMicrotask<"u"?queueMicrotask.bind(L):typeof ge<"u"&&ge.nextTick||ze,a={isArray:D,isArrayBuffer:ke,isBuffer:ut,isFormData:bt,isArrayBufferView:lt,isString:ft,isNumber:je,isBoolean:dt,isObject:G,isPlainObject:H,isReadableStream:gt,isRequest:St,isResponse:Rt,isHeaders:Ot,isUndefined:j,isDate:pt,isFile:ht,isBlob:mt,isRegExp:kt,isFunction:O,isStream:wt,isURLSearchParams:Et,isTypedArray:Ft,isFileList:yt,forEach:q,merge:oe,extend:At,trim:Tt,stripBOM:xt,inherits:Ct,toFlatObject:Nt,kindOf:W,kindOfTest:C,endsWith:Pt,toArray:_t,forEachEntry:Lt,matchAll:Bt,isHTMLForm:Dt,hasOwnProperty:Se,hasOwnProp:Se,reduceDescriptors:He,freezeMethods:jt,toObjectSet:qt,toCamelCase:Ut,noop:It,toFiniteNumber:Ht,findKey:qe,global:L,isContextDefined:Ie,ALPHABET:Me,generateString:Mt,isSpecCompliantForm:zt,toJSONObject:Vt,isAsyncFn:vt,isThenable:$t,setImmediate:ze,asap:Jt};function m(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s)}a.inherits(m,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Ve=m.prototype,ve={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{ve[e]={value:e}});Object.defineProperties(m,ve);Object.defineProperty(Ve,"isAxiosError",{value:!0});m.from=(e,t,n,r,s,o)=>{const i=Object.create(Ve);return a.toFlatObject(e,i,function(f){return f!==Error.prototype},c=>c!=="isAxiosError"),m.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const Wt=null;function ie(e){return a.isPlainObject(e)||a.isArray(e)}function $e(e){return a.endsWith(e,"[]")?e.slice(0,-2):e}function Oe(e,t,n){return e?e.concat(t).map(function(s,o){return s=$e(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function Kt(e){return a.isArray(e)&&!e.some(ie)}const Gt=a.toFlatObject(a,{},null,function(t){return/^is[A-Z]/.test(t)});function X(e,t,n){if(!a.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=a.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,d){return!a.isUndefined(d[y])});const r=n.metaTokens,s=n.visitor||l,o=n.dots,i=n.indexes,f=(n.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(t);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function u(h){if(h===null)return"";if(a.isDate(h))return h.toISOString();if(!f&&a.isBlob(h))throw new m("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(h)||a.isTypedArray(h)?f&&typeof Blob=="function"?new Blob([h]):at.Buffer.from(h):h}function l(h,y,d){let S=h;if(h&&!d&&typeof h=="object"){if(a.endsWith(y,"{}"))y=r?y:y.slice(0,-2),h=JSON.stringify(h);else if(a.isArray(h)&&Kt(h)||(a.isFileList(h)||a.endsWith(y,"[]"))&&(S=a.toArray(h)))return y=$e(y),S.forEach(function(w,T){!(a.isUndefined(w)||w===null)&&t.append(i===!0?Oe([y],T,o):i===null?y:y+"[]",u(w))}),!1}return ie(h)?!0:(t.append(Oe(d,y,o),u(h)),!1)}const p=[],b=Object.assign(Gt,{defaultVisitor:l,convertValue:u,isVisitable:ie});function E(h,y){if(!a.isUndefined(h)){if(p.indexOf(h)!==-1)throw Error("Circular reference detected in "+y.join("."));p.push(h),a.forEach(h,function(S,R){(!(a.isUndefined(S)||S===null)&&s.call(t,S,a.isString(R)?R.trim():R,y,b))===!0&&E(S,y?y.concat(R):[R])}),p.pop()}}if(!a.isObject(e))throw new TypeError("data must be an object");return E(e),t}function Te(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function pe(e,t){this._pairs=[],e&&X(e,this,t)}const Je=pe.prototype;Je.append=function(t,n){this._pairs.push([t,n])};Je.toString=function(t){const n=t?function(r){return t.call(this,r,Te)}:Te;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function Xt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function We(e,t,n){if(!t)return e;const r=n&&n.encode||Xt,s=n&&n.serialize;let o;if(s?o=s(t,n):o=a.isURLSearchParams(t)?t.toString():new pe(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class Qt{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){a.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Ae=Qt,Ke={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Zt=typeof URLSearchParams<"u"?URLSearchParams:pe,Yt=typeof FormData<"u"?FormData:null,en=typeof Blob<"u"?Blob:null,tn={isBrowser:!0,classes:{URLSearchParams:Zt,FormData:Yt,Blob:en},protocols:["http","https","file","blob","url","data"]},he=typeof window<"u"&&typeof document<"u",nn=(e=>he&&["ReactNative","NativeScript","NS"].indexOf(e)<0)(typeof navigator<"u"&&navigator.product),rn=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),sn=he&&window.location.href||"http://localhost",on=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:he,hasStandardBrowserEnv:nn,hasStandardBrowserWebWorkerEnv:rn,origin:sn},Symbol.toStringTag,{value:"Module"})),A={...on,...tn};function an(e,t){return X(e,new A.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,o){return A.isNode&&a.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function cn(e){return a.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function un(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r<s;r++)o=n[r],t[o]=e[o];return t}function Ge(e){function t(n,r,s,o){let i=n[o++];if(i==="__proto__")return!0;const c=Number.isFinite(+i),f=o>=n.length;return i=!i&&a.isArray(s)?s.length:i,f?(a.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!c):((!s[i]||!a.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&a.isArray(s[i])&&(s[i]=un(s[i])),!c)}if(a.isFormData(e)&&a.isFunction(e.entries)){const n={};return a.forEachEntry(e,(r,s)=>{t(cn(r),s,n,0)}),n}return null}function ln(e,t,n){if(a.isString(e))try{return(t||JSON.parse)(e),a.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const me={transitional:Ke,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=a.isObject(t);if(o&&a.isHTMLForm(t)&&(t=new FormData(t)),a.isFormData(t))return s?JSON.stringify(Ge(t)):t;if(a.isArrayBuffer(t)||a.isBuffer(t)||a.isStream(t)||a.isFile(t)||a.isBlob(t)||a.isReadableStream(t))return t;if(a.isArrayBufferView(t))return t.buffer;if(a.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let c;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return an(t,this.formSerializer).toString();if((c=a.isFileList(t))||r.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return X(c?{"files[]":t}:t,f&&new f,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),ln(t)):t}],transformResponse:[function(t){const n=this.transitional||me.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(t)||a.isReadableStream(t))return t;if(t&&a.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(c){if(i)throw c.name==="SyntaxError"?m.from(c,m.ERR_BAD_RESPONSE,this,null,this.response):c}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:A.classes.FormData,Blob:A.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],e=>{me.headers[e]={}});const ye=me,fn=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),dn=e=>{const t={};let n,r,s;return e&&e.split(`
-`).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&fn[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},xe=Symbol("internals");function k(e){return e&&String(e).trim().toLowerCase()}function M(e){return e===!1||e==null?e:a.isArray(e)?e.map(M):String(e)}function pn(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const hn=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function te(e,t,n,r,s){if(a.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!a.isString(t)){if(a.isString(r))return t.indexOf(r)!==-1;if(a.isRegExp(r))return r.test(t)}}function mn(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function yn(e,t){const n=a.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,i){return this[r].call(this,t,s,o,i)},configurable:!0})})}class Q{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(c,f,u){const l=k(f);if(!l)throw new Error("header name must be a non-empty string");const p=a.findKey(s,l);(!p||s[p]===void 0||u===!0||u===void 0&&s[p]!==!1)&&(s[p||f]=M(c))}const i=(c,f)=>a.forEach(c,(u,l)=>o(u,l,f));if(a.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(a.isString(t)&&(t=t.trim())&&!hn(t))i(dn(t),n);else if(a.isHeaders(t))for(const[c,f]of t.entries())o(f,c,r);else t!=null&&o(n,t,r);return this}get(t,n){if(t=k(t),t){const r=a.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return pn(s);if(a.isFunction(n))return n.call(this,s,r);if(a.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=k(t),t){const r=a.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||te(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(i){if(i=k(i),i){const c=a.findKey(r,i);c&&(!n||te(r,r[c],c,n))&&(delete r[c],s=!0)}}return a.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||te(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return a.forEach(this,(s,o)=>{const i=a.findKey(r,o);if(i){n[i]=M(s),delete n[o];return}const c=t?mn(o):String(o).trim();c!==o&&delete n[o],n[c]=M(s),r[c]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return a.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&a.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(`
-`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[xe]=this[xe]={accessors:{}}).accessors,s=this.prototype;function o(i){const c=k(i);r[c]||(yn(s,i),r[c]=!0)}return a.isArray(t)?t.forEach(o):o(t),this}}Q.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);a.reduceDescriptors(Q.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});a.freezeMethods(Q);const x=Q;function ne(e,t){const n=this||ye,r=t||n,s=x.from(r.headers);let o=r.data;return a.forEach(e,function(c){o=c.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function Xe(e){return!!(e&&e.__CANCEL__)}function U(e,t,n){m.call(this,e??"canceled",m.ERR_CANCELED,t,n),this.name="CanceledError"}a.inherits(U,m,{__CANCEL__:!0});function Qe(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new m("Request failed with status code "+n.status,[m.ERR_BAD_REQUEST,m.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function wn(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function bn(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(f){const u=Date.now(),l=r[o];i||(i=u),n[s]=f,r[s]=u;let p=o,b=0;for(;p!==s;)b+=n[p++],p=p%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),u-i<t)return;const E=l&&u-l;return E?Math.round(b*1e3/E):void 0}}function En(e,t){let n=0,r=1e3/t,s,o;const i=(u,l=Date.now())=>{n=l,s=null,o&&(clearTimeout(o),o=null),e.apply(null,u)};return[(...u)=>{const l=Date.now(),p=l-n;p>=r?i(u,l):(s=u,o||(o=setTimeout(()=>{o=null,i(s)},r-p)))},()=>s&&i(s)]}const V=(e,t,n=3)=>{let r=0;const s=bn(50,250);return En(o=>{const i=o.loaded,c=o.lengthComputable?o.total:void 0,f=i-r,u=s(f),l=i<=c;r=i;const p={loaded:i,total:c,progress:c?i/c:void 0,bytes:f,rate:u||void 0,estimated:u&&c&&l?(c-i)/u:void 0,event:o,lengthComputable:c!=null,[t?"download":"upload"]:!0};e(p)},n)},Ce=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Ne=e=>(...t)=>a.asap(()=>e(...t)),gn=A.hasStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function s(o){let i=o;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=s(window.location.href),function(i){const c=a.isString(i)?s(i):i;return c.protocol===r.protocol&&c.host===r.host}}():function(){return function(){return!0}}(),Sn=A.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const i=[e+"="+encodeURIComponent(t)];a.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),a.isString(r)&&i.push("path="+r),a.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Rn(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function On(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Ze(e,t){return e&&!Rn(t)?On(e,t):t}const Pe=e=>e instanceof x?{...e}:e;function B(e,t){t=t||{};const n={};function r(u,l,p){return a.isPlainObject(u)&&a.isPlainObject(l)?a.merge.call({caseless:p},u,l):a.isPlainObject(l)?a.merge({},l):a.isArray(l)?l.slice():l}function s(u,l,p){if(a.isUndefined(l)){if(!a.isUndefined(u))return r(void 0,u,p)}else return r(u,l,p)}function o(u,l){if(!a.isUndefined(l))return r(void 0,l)}function i(u,l){if(a.isUndefined(l)){if(!a.isUndefined(u))return r(void 0,u)}else return r(void 0,l)}function c(u,l,p){if(p in t)return r(u,l);if(p in e)return r(void 0,u)}const f={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:c,headers:(u,l)=>s(Pe(u),Pe(l),!0)};return a.forEach(Object.keys(Object.assign({},e,t)),function(l){const p=f[l]||s,b=p(e[l],t[l],l);a.isUndefined(b)&&p!==c||(n[l]=b)}),n}const Ye=e=>{const t=B({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:c}=t;t.headers=i=x.from(i),t.url=We(Ze(t.baseURL,t.url),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):"")));let f;if(a.isFormData(n)){if(A.hasStandardBrowserEnv||A.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[u,...l]=f?f.split(";").map(p=>p.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...l].join("; "))}}if(A.hasStandardBrowserEnv&&(r&&a.isFunction(r)&&(r=r(t)),r||r!==!1&&gn(t.url))){const u=s&&o&&Sn.read(o);u&&i.set(s,u)}return t},Tn=typeof XMLHttpRequest<"u",An=Tn&&function(e){return new Promise(function(n,r){const s=Ye(e);let o=s.data;const i=x.from(s.headers).normalize();let{responseType:c,onUploadProgress:f,onDownloadProgress:u}=s,l,p,b,E,h;function y(){E&&E(),h&&h(),s.cancelToken&&s.cancelToken.unsubscribe(l),s.signal&&s.signal.removeEventListener("abort",l)}let d=new XMLHttpRequest;d.open(s.method.toUpperCase(),s.url,!0),d.timeout=s.timeout;function S(){if(!d)return;const w=x.from("getAllResponseHeaders"in d&&d.getAllResponseHeaders()),F={data:!c||c==="text"||c==="json"?d.responseText:d.response,status:d.status,statusText:d.statusText,headers:w,config:e,request:d};Qe(function(P){n(P),y()},function(P){r(P),y()},F),d=null}"onloadend"in d?d.onloadend=S:d.onreadystatechange=function(){!d||d.readyState!==4||d.status===0&&!(d.responseURL&&d.responseURL.indexOf("file:")===0)||setTimeout(S)},d.onabort=function(){d&&(r(new m("Request aborted",m.ECONNABORTED,e,d)),d=null)},d.onerror=function(){r(new m("Network Error",m.ERR_NETWORK,e,d)),d=null},d.ontimeout=function(){let T=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const F=s.transitional||Ke;s.timeoutErrorMessage&&(T=s.timeoutErrorMessage),r(new m(T,F.clarifyTimeoutError?m.ETIMEDOUT:m.ECONNABORTED,e,d)),d=null},o===void 0&&i.setContentType(null),"setRequestHeader"in d&&a.forEach(i.toJSON(),function(T,F){d.setRequestHeader(F,T)}),a.isUndefined(s.withCredentials)||(d.withCredentials=!!s.withCredentials),c&&c!=="json"&&(d.responseType=s.responseType),u&&([b,h]=V(u,!0),d.addEventListener("progress",b)),f&&d.upload&&([p,E]=V(f),d.upload.addEventListener("progress",p),d.upload.addEventListener("loadend",E)),(s.cancelToken||s.signal)&&(l=w=>{d&&(r(!w||w.type?new U(null,e,d):w),d.abort(),d=null)},s.cancelToken&&s.cancelToken.subscribe(l),s.signal&&(s.signal.aborted?l():s.signal.addEventListener("abort",l)));const R=wn(s.url);if(R&&A.protocols.indexOf(R)===-1){r(new m("Unsupported protocol "+R+":",m.ERR_BAD_REQUEST,e));return}d.send(o||null)})},xn=(e,t)=>{let n=new AbortController,r;const s=function(f){if(!r){r=!0,i();const u=f instanceof Error?f:this.reason;n.abort(u instanceof m?u:new U(u instanceof Error?u.message:u))}};let o=t&&setTimeout(()=>{s(new m(`timeout ${t} of ms exceeded`,m.ETIMEDOUT))},t);const i=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(f=>{f&&(f.removeEventListener?f.removeEventListener("abort",s):f.unsubscribe(s))}),e=null)};e.forEach(f=>f&&f.addEventListener&&f.addEventListener("abort",s));const{signal:c}=n;return c.unsubscribe=i,[c,()=>{o&&clearTimeout(o),o=null}]},Cn=xn,Nn=function*(e,t){let n=e.byteLength;if(!t||n<t){yield e;return}let r=0,s;for(;r<n;)s=r+t,yield e.slice(r,s),r=s},Pn=async function*(e,t,n){for await(const r of e)yield*Nn(ArrayBuffer.isView(r)?r:await n(String(r)),t)},_e=(e,t,n,r,s)=>{const o=Pn(e,t,s);let i=0,c,f=u=>{c||(c=!0,r&&r(u))};return new ReadableStream({async pull(u){try{const{done:l,value:p}=await o.next();if(l){f(),u.close();return}let b=p.byteLength;if(n){let E=i+=b;n(E)}u.enqueue(new Uint8Array(p))}catch(l){throw f(l),l}},cancel(u){return f(u),o.return()}},{highWaterMark:2})},Z=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",et=Z&&typeof ReadableStream=="function",ae=Z&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),tt=(e,...t)=>{try{return!!e(...t)}catch{return!1}},_n=et&&tt(()=>{let e=!1;const t=new Request(A.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Fe=64*1024,ce=et&&tt(()=>a.isReadableStream(new Response("").body)),v={stream:ce&&(e=>e.body)};Z&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!v[t]&&(v[t]=a.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new m(`Response type '${t}' is not supported`,m.ERR_NOT_SUPPORT,r)})})})(new Response);const Fn=async e=>{if(e==null)return 0;if(a.isBlob(e))return e.size;if(a.isSpecCompliantForm(e))return(await new Request(e).arrayBuffer()).byteLength;if(a.isArrayBufferView(e)||a.isArrayBuffer(e))return e.byteLength;if(a.isURLSearchParams(e)&&(e=e+""),a.isString(e))return(await ae(e)).byteLength},Ln=async(e,t)=>{const n=a.toFiniteNumber(e.getContentLength());return n??Fn(t)},Bn=Z&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:o,timeout:i,onDownloadProgress:c,onUploadProgress:f,responseType:u,headers:l,withCredentials:p="same-origin",fetchOptions:b}=Ye(e);u=u?(u+"").toLowerCase():"text";let[E,h]=s||o||i?Cn([s,o],i):[],y,d;const S=()=>{!y&&setTimeout(()=>{E&&E.unsubscribe()}),y=!0};let R;try{if(f&&_n&&n!=="get"&&n!=="head"&&(R=await Ln(l,r))!==0){let N=new Request(t,{method:"POST",body:r,duplex:"half"}),P;if(a.isFormData(r)&&(P=N.headers.get("content-type"))&&l.setContentType(P),N.body){const[Y,I]=Ce(R,V(Ne(f)));r=_e(N.body,Fe,Y,I,ae)}}a.isString(p)||(p=p?"include":"omit"),d=new Request(t,{...b,signal:E,method:n.toUpperCase(),headers:l.normalize().toJSON(),body:r,duplex:"half",credentials:p});let w=await fetch(d);const T=ce&&(u==="stream"||u==="response");if(ce&&(c||T)){const N={};["status","statusText","headers"].forEach(Ee=>{N[Ee]=w[Ee]});const P=a.toFiniteNumber(w.headers.get("content-length")),[Y,I]=c&&Ce(P,V(Ne(c),!0))||[];w=new Response(_e(w.body,Fe,Y,()=>{I&&I(),T&&S()},ae),N)}u=u||"text";let F=await v[a.findKey(v,u)||"text"](w,e);return!T&&S(),h&&h(),await new Promise((N,P)=>{Qe(N,P,{data:F,headers:x.from(w.headers),status:w.status,statusText:w.statusText,config:e,request:d})})}catch(w){throw S(),w&&w.name==="TypeError"&&/fetch/i.test(w.message)?Object.assign(new m("Network Error",m.ERR_NETWORK,e,d),{cause:w.cause||w}):m.from(w,w&&w.code,e,d)}}),ue={http:Wt,xhr:An,fetch:Bn};a.forEach(ue,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Le=e=>`- ${e}`,Dn=e=>a.isFunction(e)||e===null||e===!1,nt={getAdapter:e=>{e=a.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let o=0;o<t;o++){n=e[o];let i;if(r=n,!Dn(n)&&(r=ue[(i=String(n)).toLowerCase()],r===void 0))throw new m(`Unknown adapter '${i}'`);if(r)break;s[i||"#"+o]=r}if(!r){const o=Object.entries(s).map(([c,f])=>`adapter ${c} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since :
-`+o.map(Le).join(`
-`):" "+Le(o[0]):"as no adapter specified";throw new m("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return r},adapters:ue};function re(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new U(null,e)}function Be(e){return re(e),e.headers=x.from(e.headers),e.data=ne.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),nt.getAdapter(e.adapter||ye.adapter)(e).then(function(r){return re(e),r.data=ne.call(e,e.transformResponse,r),r.headers=x.from(r.headers),r},function(r){return Xe(r)||(re(e),r&&r.response&&(r.response.data=ne.call(e,e.transformResponse,r.response),r.response.headers=x.from(r.response.headers))),Promise.reject(r)})}const rt="1.7.4",we={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{we[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const De={};we.transitional=function(t,n,r){function s(o,i){return"[Axios v"+rt+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,c)=>{if(t===!1)throw new m(s(i," has been removed"+(n?" in "+n:"")),m.ERR_DEPRECATED);return n&&!De[i]&&(De[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,c):!0}};function Un(e,t,n){if(typeof e!="object")throw new m("options must be an object",m.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],i=t[o];if(i){const c=e[o],f=c===void 0||i(c,o,e);if(f!==!0)throw new m("option "+o+" must be "+f,m.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new m("Unknown option "+o,m.ERR_BAD_OPTION)}}const le={assertOptions:Un,validators:we},_=le.validators;class ${constructor(t){this.defaults=t,this.interceptors={request:new Ae,response:new Ae}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s;Error.captureStackTrace?Error.captureStackTrace(s={}):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=`
-`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=B(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&le.assertOptions(r,{silentJSONParsing:_.transitional(_.boolean),forcedJSONParsing:_.transitional(_.boolean),clarifyTimeoutError:_.transitional(_.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:le.assertOptions(s,{encode:_.function,serialize:_.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&a.merge(o.common,o[n.method]);o&&a.forEach(["delete","get","head","post","put","patch","common"],h=>{delete o[h]}),n.headers=x.concat(i,o);const c=[];let f=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(n)===!1||(f=f&&y.synchronous,c.unshift(y.fulfilled,y.rejected))});const u=[];this.interceptors.response.forEach(function(y){u.push(y.fulfilled,y.rejected)});let l,p=0,b;if(!f){const h=[Be.bind(this),void 0];for(h.unshift.apply(h,c),h.push.apply(h,u),b=h.length,l=Promise.resolve(n);p<b;)l=l.then(h[p++],h[p++]);return l}b=c.length;let E=n;for(p=0;p<b;){const h=c[p++],y=c[p++];try{E=h(E)}catch(d){y.call(this,d);break}}try{l=Be.call(this,E)}catch(h){return Promise.reject(h)}for(p=0,b=u.length;p<b;)l=l.then(u[p++],u[p++]);return l}getUri(t){t=B(this.defaults,t);const n=Ze(t.baseURL,t.url);return We(n,t.params,t.paramsSerializer)}}a.forEach(["delete","get","head","options"],function(t){$.prototype[t]=function(n,r){return this.request(B(r||{},{method:t,url:n,data:(r||{}).data}))}});a.forEach(["post","put","patch"],function(t){function n(r){return function(o,i,c){return this.request(B(c||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:o,data:i}))}}$.prototype[t]=n(),$.prototype[t+"Form"]=n(!0)});const z=$;class be{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(o){n=o});const r=this;this.promise.then(s=>{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(c=>{r.subscribe(c),o=c}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,c){r.reason||(r.reason=new U(o,i,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new be(function(s){t=s}),cancel:t}}}const kn=be;function jn(e){return function(n){return e.apply(null,n)}}function qn(e){return a.isObject(e)&&e.isAxiosError===!0}const fe={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(fe).forEach(([e,t])=>{fe[t]=e});const In=fe;function st(e){const t=new z(e),n=Ue(z.prototype.request,t);return a.extend(n,z.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return st(B(e,s))},n}const g=st(ye);g.Axios=z;g.CanceledError=U;g.CancelToken=kn;g.isCancel=Xe;g.VERSION=rt;g.toFormData=X;g.AxiosError=m;g.Cancel=g.CanceledError;g.all=function(t){return Promise.all(t)};g.spread=jn;g.isAxiosError=qn;g.mergeConfig=B;g.AxiosHeaders=x;g.formToJSON=e=>Ge(a.isHTMLForm(e)?new FormData(e):e);g.getAdapter=nt.getAdapter;g.HttpStatusCode=In;g.default=g;const Jn=g;function J(e){return J=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},J(e)}function se(e,t){if(!e.vueAxiosInstalled){var n=ot(t)?zn(t):t;if(Vn(n)){var r=vn(e);if(r){var s=r<3?Hn:Mn;Object.keys(n).forEach(function(o){s(e,o,n[o])}),e.vueAxiosInstalled=!0}else console.error("[vue-axios] unknown Vue version")}else console.error("[vue-axios] configuration is invalid, expected options are either <axios_instance> or { <registration_key>: <axios_instance> }")}}function Hn(e,t,n){Object.defineProperty(e.prototype,t,{get:function(){return n}}),e[t]=n}function Mn(e,t,n){e.config.globalProperties[t]=n,e[t]=n}function ot(e){return e&&typeof e.get=="function"&&typeof e.post=="function"}function zn(e){return{axios:e,$http:e}}function Vn(e){return J(e)==="object"&&Object.keys(e).every(function(t){return ot(e[t])})}function vn(e){return e&&e.version&&Number(e.version.split(".")[0])}(typeof exports>"u"?"undefined":J(exports))=="object"?module.exports=se:typeof define=="function"&&define.amd?define([],function(){return se}):window.Vue&&window.axios&&window.Vue.use&&Vue.use(se,window.axios);export{Jn as a,se as p};
diff --git a/web/settings/assets/vendor-bootstrap-4ad604fa.js b/web/settings/assets/vendor-bootstrap-d0c3645c.js
similarity index 99%
rename from web/settings/assets/vendor-bootstrap-4ad604fa.js
rename to web/settings/assets/vendor-bootstrap-d0c3645c.js
index ca001cee94..ed2b1b4925 100644
--- a/web/settings/assets/vendor-bootstrap-4ad604fa.js
+++ b/web/settings/assets/vendor-bootstrap-d0c3645c.js
@@ -1,4 +1,4 @@
-import{r as or,c as ur}from"./vendor-f2b8aa6f.js";import{r as fr}from"./vendor-jquery-d3cb8fad.js";var Ft={exports:{}};/*!
+import{r as or,c as ur}from"./vendor-a21b3a62.js";import{r as fr}from"./vendor-jquery-a5dbbab1.js";var Ft={exports:{}};/*!
   * Bootstrap v4.6.2 (https://getbootstrap.com/)
   * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
diff --git a/web/settings/assets/vendor-chartjs-35992f4a.js b/web/settings/assets/vendor-chartjs-35992f4a.js
deleted file mode 100644
index e688e66bfe..0000000000
--- a/web/settings/assets/vendor-chartjs-35992f4a.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var xo=Object.defineProperty;var _o=(i,t,e)=>t in i?xo(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var S=(i,t,e)=>(_o(i,typeof t!="symbol"?t+"":t,e),e);import{C as hs,d as ds,s as us,h as ai,v as yo,a as vo,o as wo,e as Mo,w as ko,t as li,n as So,i as fs,H as te}from"./vendor-f2b8aa6f.js";import{D as ct}from"./vendor-luxon-8ddd27a0.js";/*!
- * Chart.js v4.4.3
- * https://www.chartjs.org
- * (c) 2024 Chart.js Contributors
- * Released under the MIT License
- */function rt(){}const Po=(()=>{let i=0;return()=>i++})();function I(i){return i===null||typeof i>"u"}function R(i){if(Array.isArray&&Array.isArray(i))return!0;const t=Object.prototype.toString.call(i);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function L(i){return i!==null&&Object.prototype.toString.call(i)==="[object Object]"}function F(i){return(typeof i=="number"||i instanceof Number)&&isFinite(+i)}function q(i,t){return F(i)?i:t}function C(i,t){return typeof i>"u"?t:i}const Do=(i,t)=>typeof i=="string"&&i.endsWith("%")?parseFloat(i)/100*t:+i;function P(i,t,e){if(i&&typeof i.call=="function")return i.apply(e,t)}function O(i,t,e,n){let s,o,r;if(R(i))if(o=i.length,n)for(s=o-1;s>=0;s--)t.call(e,i[s],s);else for(s=0;s<o;s++)t.call(e,i[s],s);else if(L(i))for(r=Object.keys(i),o=r.length,s=0;s<o;s++)t.call(e,i[r[s]],r[s])}function ze(i,t){let e,n,s,o;if(!i||!t||i.length!==t.length)return!1;for(e=0,n=i.length;e<n;++e)if(s=i[e],o=t[e],s.datasetIndex!==o.datasetIndex||s.index!==o.index)return!1;return!0}function Ie(i){if(R(i))return i.map(Ie);if(L(i)){const t=Object.create(null),e=Object.keys(i),n=e.length;let s=0;for(;s<n;++s)t[e[s]]=Ie(i[e[s]]);return t}return i}function gs(i){return["__proto__","prototype","constructor"].indexOf(i)===-1}function Co(i,t,e,n){if(!gs(i))return;const s=t[i],o=e[i];L(s)&&L(o)?re(s,o,n):t[i]=Ie(o)}function re(i,t,e){const n=R(t)?t:[t],s=n.length;if(!L(i))return i;e=e||{};const o=e.merger||Co;let r;for(let a=0;a<s;++a){if(r=n[a],!L(r))continue;const l=Object.keys(r);for(let c=0,h=l.length;c<h;++c)o(l[c],i,r,e)}return i}function ee(i,t){return re(i,t,{merger:Oo})}function Oo(i,t,e){if(!gs(i))return;const n=t[i],s=e[i];L(n)&&L(s)?ee(n,s):Object.prototype.hasOwnProperty.call(t,i)||(t[i]=Ie(s))}const Bi={"":i=>i,x:i=>i.x,y:i=>i.y};function To(i){const t=i.split("."),e=[];let n="";for(const s of t)n+=s,n.endsWith("\\")?n=n.slice(0,-1)+".":(e.push(n),n="");return e}function Lo(i){const t=To(i);return e=>{for(const n of t){if(n==="")break;e=e&&e[n]}return e}}function Bt(i,t){return(Bi[t]||(Bi[t]=Lo(t)))(i)}function Mi(i){return i.charAt(0).toUpperCase()+i.slice(1)}const ae=i=>typeof i<"u",xt=i=>typeof i=="function",Hi=(i,t)=>{if(i.size!==t.size)return!1;for(const e of i)if(!t.has(e))return!1;return!0};function Ao(i){return i.type==="mouseup"||i.type==="click"||i.type==="contextmenu"}const W=Math.PI,Q=2*W,zo=Q+W,Re=Number.POSITIVE_INFINITY,Io=W/180,Z=W/2,Mt=W/4,Wi=W*2/3,ft=Math.log10,et=Math.sign;function ie(i,t,e){return Math.abs(i-t)<e}function Ni(i){const t=Math.round(i);i=ie(i,t,i/1e3)?t:i;const e=Math.pow(10,Math.floor(ft(i))),n=i/e;return(n<=1?1:n<=2?2:n<=5?5:10)*e}function Ro(i){const t=[],e=Math.sqrt(i);let n;for(n=1;n<e;n++)i%n===0&&(t.push(n),t.push(i/n));return e===(e|0)&&t.push(e),t.sort((s,o)=>s-o).pop(),t}function le(i){return!isNaN(parseFloat(i))&&isFinite(i)}function Fo(i,t){const e=Math.round(i);return e-t<=i&&e+t>=i}function ps(i,t,e){let n,s,o;for(n=0,s=i.length;n<s;n++)o=i[n][e],isNaN(o)||(t.min=Math.min(t.min,o),t.max=Math.max(t.max,o))}function gt(i){return i*(W/180)}function ki(i){return i*(180/W)}function Vi(i){if(!F(i))return;let t=1,e=0;for(;Math.round(i*t)/t!==i;)t*=10,e++;return e}function Eo(i,t){const e=t.x-i.x,n=t.y-i.y,s=Math.sqrt(e*e+n*n);let o=Math.atan2(n,e);return o<-.5*W&&(o+=Q),{angle:o,distance:s}}function ci(i,t){return Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2))}function Bo(i,t){return(i-t+zo)%Q-W}function G(i){return(i%Q+Q)%Q}function ms(i,t,e,n){const s=G(i),o=G(t),r=G(e),a=G(o-s),l=G(r-s),c=G(s-o),h=G(s-r);return s===o||s===r||n&&o===r||a>l&&c<h}function tt(i,t,e){return Math.max(t,Math.min(e,i))}function Ho(i){return tt(i,-32768,32767)}function pt(i,t,e,n=1e-6){return i>=Math.min(t,e)-n&&i<=Math.max(t,e)+n}function Si(i,t,e){e=e||(r=>i[r]<t);let n=i.length-1,s=0,o;for(;n-s>1;)o=s+n>>1,e(o)?s=o:n=o;return{lo:s,hi:n}}const Ct=(i,t,e,n)=>Si(i,e,n?s=>{const o=i[s][t];return o<e||o===e&&i[s+1][t]===e}:s=>i[s][t]<e),Wo=(i,t,e)=>Si(i,e,n=>i[n][t]>=e);function No(i,t,e){let n=0,s=i.length;for(;n<s&&i[n]<t;)n++;for(;s>n&&i[s-1]>e;)s--;return n>0||s<i.length?i.slice(n,s):i}const bs=["push","pop","shift","splice","unshift"];function Vo(i,t){if(i._chartjs){i._chartjs.listeners.push(t);return}Object.defineProperty(i,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[t]}}),bs.forEach(e=>{const n="_onData"+Mi(e),s=i[e];Object.defineProperty(i,e,{configurable:!0,enumerable:!1,value(...o){const r=s.apply(this,o);return i._chartjs.listeners.forEach(a=>{typeof a[n]=="function"&&a[n](...o)}),r}})})}function ji(i,t){const e=i._chartjs;if(!e)return;const n=e.listeners,s=n.indexOf(t);s!==-1&&n.splice(s,1),!(n.length>0)&&(bs.forEach(o=>{delete i[o]}),delete i._chartjs)}function xs(i){const t=new Set(i);return t.size===i.length?i:Array.from(t)}const _s=function(){return typeof window>"u"?function(i){return i()}:window.requestAnimationFrame}();function ys(i,t){let e=[],n=!1;return function(...s){e=s,n||(n=!0,_s.call(window,()=>{n=!1,i.apply(t,e)}))}}function jo(i,t){let e;return function(...n){return t?(clearTimeout(e),e=setTimeout(i,t,n)):i.apply(this,n),t}}const vs=i=>i==="start"?"left":i==="end"?"right":"center",X=(i,t,e)=>i==="start"?t:i==="end"?e:(t+e)/2,$o=(i,t,e,n)=>i===(n?"left":"right")?e:i==="center"?(t+e)/2:t;function Uo(i,t,e){const n=t.length;let s=0,o=n;if(i._sorted){const{iScale:r,_parsed:a}=i,l=r.axis,{min:c,max:h,minDefined:d,maxDefined:u}=r.getUserBounds();d&&(s=tt(Math.min(Ct(a,l,c).lo,e?n:Ct(t,l,r.getPixelForValue(c)).lo),0,n-1)),u?o=tt(Math.max(Ct(a,r.axis,h,!0).hi+1,e?0:Ct(t,l,r.getPixelForValue(h),!0).hi+1),s,n)-s:o=n-s}return{start:s,count:o}}function Yo(i){const{xScale:t,yScale:e,_scaleRanges:n}=i,s={xmin:t.min,xmax:t.max,ymin:e.min,ymax:e.max};if(!n)return i._scaleRanges=s,!0;const o=n.xmin!==t.min||n.xmax!==t.max||n.ymin!==e.min||n.ymax!==e.max;return Object.assign(n,s),o}const be=i=>i===0||i===1,$i=(i,t,e)=>-(Math.pow(2,10*(i-=1))*Math.sin((i-t)*Q/e)),Ui=(i,t,e)=>Math.pow(2,-10*i)*Math.sin((i-t)*Q/e)+1,ne={linear:i=>i,easeInQuad:i=>i*i,easeOutQuad:i=>-i*(i-2),easeInOutQuad:i=>(i/=.5)<1?.5*i*i:-.5*(--i*(i-2)-1),easeInCubic:i=>i*i*i,easeOutCubic:i=>(i-=1)*i*i+1,easeInOutCubic:i=>(i/=.5)<1?.5*i*i*i:.5*((i-=2)*i*i+2),easeInQuart:i=>i*i*i*i,easeOutQuart:i=>-((i-=1)*i*i*i-1),easeInOutQuart:i=>(i/=.5)<1?.5*i*i*i*i:-.5*((i-=2)*i*i*i-2),easeInQuint:i=>i*i*i*i*i,easeOutQuint:i=>(i-=1)*i*i*i*i+1,easeInOutQuint:i=>(i/=.5)<1?.5*i*i*i*i*i:.5*((i-=2)*i*i*i*i+2),easeInSine:i=>-Math.cos(i*Z)+1,easeOutSine:i=>Math.sin(i*Z),easeInOutSine:i=>-.5*(Math.cos(W*i)-1),easeInExpo:i=>i===0?0:Math.pow(2,10*(i-1)),easeOutExpo:i=>i===1?1:-Math.pow(2,-10*i)+1,easeInOutExpo:i=>be(i)?i:i<.5?.5*Math.pow(2,10*(i*2-1)):.5*(-Math.pow(2,-10*(i*2-1))+2),easeInCirc:i=>i>=1?i:-(Math.sqrt(1-i*i)-1),easeOutCirc:i=>Math.sqrt(1-(i-=1)*i),easeInOutCirc:i=>(i/=.5)<1?-.5*(Math.sqrt(1-i*i)-1):.5*(Math.sqrt(1-(i-=2)*i)+1),easeInElastic:i=>be(i)?i:$i(i,.075,.3),easeOutElastic:i=>be(i)?i:Ui(i,.075,.3),easeInOutElastic(i){return be(i)?i:i<.5?.5*$i(i*2,.1125,.45):.5+.5*Ui(i*2-1,.1125,.45)},easeInBack(i){return i*i*((1.70158+1)*i-1.70158)},easeOutBack(i){return(i-=1)*i*((1.70158+1)*i+1.70158)+1},easeInOutBack(i){let t=1.70158;return(i/=.5)<1?.5*(i*i*(((t*=1.525)+1)*i-t)):.5*((i-=2)*i*(((t*=1.525)+1)*i+t)+2)},easeInBounce:i=>1-ne.easeOutBounce(1-i),easeOutBounce(i){return i<1/2.75?7.5625*i*i:i<2/2.75?7.5625*(i-=1.5/2.75)*i+.75:i<2.5/2.75?7.5625*(i-=2.25/2.75)*i+.9375:7.5625*(i-=2.625/2.75)*i+.984375},easeInOutBounce:i=>i<.5?ne.easeInBounce(i*2)*.5:ne.easeOutBounce(i*2-1)*.5+.5};function Pi(i){if(i&&typeof i=="object"){const t=i.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function Yi(i){return Pi(i)?i:new hs(i)}function Ye(i){return Pi(i)?i:new hs(i).saturate(.5).darken(.1).hexString()}const Ko=["x","y","borderWidth","radius","tension"],Xo=["color","borderColor","backgroundColor"];function qo(i){i.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),i.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>t!=="onProgress"&&t!=="onComplete"&&t!=="fn"}),i.set("animations",{colors:{type:"color",properties:Xo},numbers:{type:"number",properties:Ko}}),i.describe("animations",{_fallback:"animation"}),i.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>t|0}}}})}function Go(i){i.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const Ki=new Map;function Zo(i,t){t=t||{};const e=i+JSON.stringify(t);let n=Ki.get(e);return n||(n=new Intl.NumberFormat(i,t),Ki.set(e,n)),n}function Di(i,t,e){return Zo(t,e).format(i)}const ws={values(i){return R(i)?i:""+i},numeric(i,t,e){if(i===0)return"0";const n=this.chart.options.locale;let s,o=i;if(e.length>1){const c=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(c<1e-4||c>1e15)&&(s="scientific"),o=Qo(i,e)}const r=ft(Math.abs(o)),a=isNaN(r)?1:Math.max(Math.min(-1*Math.floor(r),20),0),l={notation:s,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),Di(i,n,l)},logarithmic(i,t,e){if(i===0)return"0";const n=e[t].significand||i/Math.pow(10,Math.floor(ft(i)));return[1,2,3,5,10,15].includes(n)||t>.8*e.length?ws.numeric.call(this,i,t,e):""}};function Qo(i,t){let e=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(e)>=1&&i!==Math.floor(i)&&(e=i-Math.floor(i)),e}var Ne={formatters:ws};function Jo(i){i.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Ne.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),i.route("scale.ticks","color","","color"),i.route("scale.grid","color","","borderColor"),i.route("scale.border","color","","borderColor"),i.route("scale.title","color","","color"),i.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&t!=="callback"&&t!=="parser",_indexable:t=>t!=="borderDash"&&t!=="tickBorderDash"&&t!=="dash"}),i.describe("scales",{_fallback:"scale"}),i.describe("scale.ticks",{_scriptable:t=>t!=="backdropPadding"&&t!=="callback",_indexable:t=>t!=="backdropPadding"})}const At=Object.create(null),hi=Object.create(null);function se(i,t){if(!t)return i;const e=t.split(".");for(let n=0,s=e.length;n<s;++n){const o=e[n];i=i[o]||(i[o]=Object.create(null))}return i}function Ke(i,t,e){return typeof t=="string"?re(se(i,t),e):re(se(i,""),t)}class tr{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=n=>n.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(n,s)=>Ye(s.backgroundColor),this.hoverBorderColor=(n,s)=>Ye(s.borderColor),this.hoverColor=(n,s)=>Ye(s.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return Ke(this,t,e)}get(t){return se(this,t)}describe(t,e){return Ke(hi,t,e)}override(t,e){return Ke(At,t,e)}route(t,e,n,s){const o=se(this,t),r=se(this,n),a="_"+e;Object.defineProperties(o,{[a]:{value:o[e],writable:!0},[e]:{enumerable:!0,get(){const l=this[a],c=r[s];return L(l)?Object.assign({},c,l):C(l,c)},set(l){this[a]=l}}})}apply(t){t.forEach(e=>e(this))}}var E=new tr({_scriptable:i=>!i.startsWith("on"),_indexable:i=>i!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[qo,Go,Jo]);function er(i){return!i||I(i.size)||I(i.family)?null:(i.style?i.style+" ":"")+(i.weight?i.weight+" ":"")+i.size+"px "+i.family}function Fe(i,t,e,n,s){let o=t[s];return o||(o=t[s]=i.measureText(s).width,e.push(s)),o>n&&(n=o),n}function ir(i,t,e,n){n=n||{};let s=n.data=n.data||{},o=n.garbageCollect=n.garbageCollect||[];n.font!==t&&(s=n.data={},o=n.garbageCollect=[],n.font=t),i.save(),i.font=t;let r=0;const a=e.length;let l,c,h,d,u;for(l=0;l<a;l++)if(d=e[l],d!=null&&!R(d))r=Fe(i,s,o,r,d);else if(R(d))for(c=0,h=d.length;c<h;c++)u=d[c],u!=null&&!R(u)&&(r=Fe(i,s,o,r,u));i.restore();const f=o.length/2;if(f>e.length){for(l=0;l<f;l++)delete s[o[l]];o.splice(0,f)}return r}function kt(i,t,e){const n=i.currentDevicePixelRatio,s=e!==0?Math.max(e/2,.5):0;return Math.round((t-s)*n)/n+s}function Xi(i,t){!t&&!i||(t=t||i.getContext("2d"),t.save(),t.resetTransform(),t.clearRect(0,0,i.width,i.height),t.restore())}function di(i,t,e,n){Ms(i,t,e,n,null)}function Ms(i,t,e,n,s){let o,r,a,l,c,h,d,u;const f=t.pointStyle,p=t.rotation,g=t.radius;let m=(p||0)*Io;if(f&&typeof f=="object"&&(o=f.toString(),o==="[object HTMLImageElement]"||o==="[object HTMLCanvasElement]")){i.save(),i.translate(e,n),i.rotate(m),i.drawImage(f,-f.width/2,-f.height/2,f.width,f.height),i.restore();return}if(!(isNaN(g)||g<=0)){switch(i.beginPath(),f){default:s?i.ellipse(e,n,s/2,g,0,0,Q):i.arc(e,n,g,0,Q),i.closePath();break;case"triangle":h=s?s/2:g,i.moveTo(e+Math.sin(m)*h,n-Math.cos(m)*g),m+=Wi,i.lineTo(e+Math.sin(m)*h,n-Math.cos(m)*g),m+=Wi,i.lineTo(e+Math.sin(m)*h,n-Math.cos(m)*g),i.closePath();break;case"rectRounded":c=g*.516,l=g-c,r=Math.cos(m+Mt)*l,d=Math.cos(m+Mt)*(s?s/2-c:l),a=Math.sin(m+Mt)*l,u=Math.sin(m+Mt)*(s?s/2-c:l),i.arc(e-d,n-a,c,m-W,m-Z),i.arc(e+u,n-r,c,m-Z,m),i.arc(e+d,n+a,c,m,m+Z),i.arc(e-u,n+r,c,m+Z,m+W),i.closePath();break;case"rect":if(!p){l=Math.SQRT1_2*g,h=s?s/2:l,i.rect(e-h,n-l,2*h,2*l);break}m+=Mt;case"rectRot":d=Math.cos(m)*(s?s/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),i.moveTo(e-d,n-a),i.lineTo(e+u,n-r),i.lineTo(e+d,n+a),i.lineTo(e-u,n+r),i.closePath();break;case"crossRot":m+=Mt;case"cross":d=Math.cos(m)*(s?s/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),i.moveTo(e-d,n-a),i.lineTo(e+d,n+a),i.moveTo(e+u,n-r),i.lineTo(e-u,n+r);break;case"star":d=Math.cos(m)*(s?s/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),i.moveTo(e-d,n-a),i.lineTo(e+d,n+a),i.moveTo(e+u,n-r),i.lineTo(e-u,n+r),m+=Mt,d=Math.cos(m)*(s?s/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),i.moveTo(e-d,n-a),i.lineTo(e+d,n+a),i.moveTo(e+u,n-r),i.lineTo(e-u,n+r);break;case"line":r=s?s/2:Math.cos(m)*g,a=Math.sin(m)*g,i.moveTo(e-r,n-a),i.lineTo(e+r,n+a);break;case"dash":i.moveTo(e,n),i.lineTo(e+Math.cos(m)*(s?s/2:g),n+Math.sin(m)*g);break;case!1:i.closePath();break}i.fill(),t.borderWidth>0&&i.stroke()}}function ht(i,t,e){return e=e||.5,!t||i&&i.x>t.left-e&&i.x<t.right+e&&i.y>t.top-e&&i.y<t.bottom+e}function Ve(i,t){i.save(),i.beginPath(),i.rect(t.left,t.top,t.right-t.left,t.bottom-t.top),i.clip()}function je(i){i.restore()}function nr(i,t,e,n,s){if(!t)return i.lineTo(e.x,e.y);if(s==="middle"){const o=(t.x+e.x)/2;i.lineTo(o,t.y),i.lineTo(o,e.y)}else s==="after"!=!!n?i.lineTo(t.x,e.y):i.lineTo(e.x,t.y);i.lineTo(e.x,e.y)}function sr(i,t,e,n){if(!t)return i.lineTo(e.x,e.y);i.bezierCurveTo(n?t.cp1x:t.cp2x,n?t.cp1y:t.cp2y,n?e.cp2x:e.cp1x,n?e.cp2y:e.cp1y,e.x,e.y)}function or(i,t){t.translation&&i.translate(t.translation[0],t.translation[1]),I(t.rotation)||i.rotate(t.rotation),t.color&&(i.fillStyle=t.color),t.textAlign&&(i.textAlign=t.textAlign),t.textBaseline&&(i.textBaseline=t.textBaseline)}function rr(i,t,e,n,s){if(s.strikethrough||s.underline){const o=i.measureText(n),r=t-o.actualBoundingBoxLeft,a=t+o.actualBoundingBoxRight,l=e-o.actualBoundingBoxAscent,c=e+o.actualBoundingBoxDescent,h=s.strikethrough?(l+c)/2:c;i.strokeStyle=i.fillStyle,i.beginPath(),i.lineWidth=s.decorationWidth||2,i.moveTo(r,h),i.lineTo(a,h),i.stroke()}}function ar(i,t){const e=i.fillStyle;i.fillStyle=t.color,i.fillRect(t.left,t.top,t.width,t.height),i.fillStyle=e}function Ht(i,t,e,n,s,o={}){const r=R(t)?t:[t],a=o.strokeWidth>0&&o.strokeColor!=="";let l,c;for(i.save(),i.font=s.string,or(i,o),l=0;l<r.length;++l)c=r[l],o.backdrop&&ar(i,o.backdrop),a&&(o.strokeColor&&(i.strokeStyle=o.strokeColor),I(o.strokeWidth)||(i.lineWidth=o.strokeWidth),i.strokeText(c,e,n,o.maxWidth)),i.fillText(c,e,n,o.maxWidth),rr(i,e,n,c,o),n+=Number(s.lineHeight);i.restore()}function ce(i,t){const{x:e,y:n,w:s,h:o,radius:r}=t;i.arc(e+r.topLeft,n+r.topLeft,r.topLeft,1.5*W,W,!0),i.lineTo(e,n+o-r.bottomLeft),i.arc(e+r.bottomLeft,n+o-r.bottomLeft,r.bottomLeft,W,Z,!0),i.lineTo(e+s-r.bottomRight,n+o),i.arc(e+s-r.bottomRight,n+o-r.bottomRight,r.bottomRight,Z,0,!0),i.lineTo(e+s,n+r.topRight),i.arc(e+s-r.topRight,n+r.topRight,r.topRight,0,-Z,!0),i.lineTo(e+r.topLeft,n)}const lr=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,cr=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function hr(i,t){const e=(""+i).match(lr);if(!e||e[1]==="normal")return t*1.2;switch(i=+e[2],e[3]){case"px":return i;case"%":i/=100;break}return t*i}const dr=i=>+i||0;function ks(i,t){const e={},n=L(t),s=n?Object.keys(t):t,o=L(i)?n?r=>C(i[r],i[t[r]]):r=>i[r]:()=>i;for(const r of s)e[r]=dr(o(r));return e}function Ss(i){return ks(i,{top:"y",right:"x",bottom:"y",left:"x"})}function Tt(i){return ks(i,["topLeft","topRight","bottomLeft","bottomRight"])}function j(i){const t=Ss(i);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function V(i,t){i=i||{},t=t||E.font;let e=C(i.size,t.size);typeof e=="string"&&(e=parseInt(e,10));let n=C(i.style,t.style);n&&!(""+n).match(cr)&&(console.warn('Invalid font style specified: "'+n+'"'),n=void 0);const s={family:C(i.family,t.family),lineHeight:hr(C(i.lineHeight,t.lineHeight),e),size:e,style:n,weight:C(i.weight,t.weight),string:""};return s.string=er(s),s}function xe(i,t,e,n){let s=!0,o,r,a;for(o=0,r=i.length;o<r;++o)if(a=i[o],a!==void 0&&(t!==void 0&&typeof a=="function"&&(a=a(t),s=!1),e!==void 0&&R(a)&&(a=a[e%a.length],s=!1),a!==void 0))return n&&!s&&(n.cacheable=!1),a}function ur(i,t,e){const{min:n,max:s}=i,o=Do(t,(s-n)/2),r=(a,l)=>e&&a===0?0:a+l;return{min:r(n,-Math.abs(o)),max:r(s,o)}}function yt(i,t){return Object.assign(Object.create(i),t)}function Ci(i,t=[""],e,n,s=()=>i[0]){const o=e||i;typeof n>"u"&&(n=Os("_fallback",i));const r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:i,_rootScopes:o,_fallback:n,_getTarget:s,override:a=>Ci([a,...i],t,o,n)};return new Proxy(r,{deleteProperty(a,l){return delete a[l],delete a._keys,delete i[0][l],!0},get(a,l){return Ds(a,l,()=>yr(l,t,i,a))},getOwnPropertyDescriptor(a,l){return Reflect.getOwnPropertyDescriptor(a._scopes[0],l)},getPrototypeOf(){return Reflect.getPrototypeOf(i[0])},has(a,l){return Gi(a).includes(l)},ownKeys(a){return Gi(a)},set(a,l,c){const h=a._storage||(a._storage=s());return a[l]=h[l]=c,delete a._keys,!0}})}function Wt(i,t,e,n){const s={_cacheable:!1,_proxy:i,_context:t,_subProxy:e,_stack:new Set,_descriptors:Ps(i,n),setContext:o=>Wt(i,o,e,n),override:o=>Wt(i.override(o),t,e,n)};return new Proxy(s,{deleteProperty(o,r){return delete o[r],delete i[r],!0},get(o,r,a){return Ds(o,r,()=>gr(o,r,a))},getOwnPropertyDescriptor(o,r){return o._descriptors.allKeys?Reflect.has(i,r)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(i,r)},getPrototypeOf(){return Reflect.getPrototypeOf(i)},has(o,r){return Reflect.has(i,r)},ownKeys(){return Reflect.ownKeys(i)},set(o,r,a){return i[r]=a,delete o[r],!0}})}function Ps(i,t={scriptable:!0,indexable:!0}){const{_scriptable:e=t.scriptable,_indexable:n=t.indexable,_allKeys:s=t.allKeys}=i;return{allKeys:s,scriptable:e,indexable:n,isScriptable:xt(e)?e:()=>e,isIndexable:xt(n)?n:()=>n}}const fr=(i,t)=>i?i+Mi(t):t,Oi=(i,t)=>L(t)&&i!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function Ds(i,t,e){if(Object.prototype.hasOwnProperty.call(i,t)||t==="constructor")return i[t];const n=e();return i[t]=n,n}function gr(i,t,e){const{_proxy:n,_context:s,_subProxy:o,_descriptors:r}=i;let a=n[t];return xt(a)&&r.isScriptable(t)&&(a=pr(t,a,i,e)),R(a)&&a.length&&(a=mr(t,a,i,r.isIndexable)),Oi(t,a)&&(a=Wt(a,s,o&&o[t],r)),a}function pr(i,t,e,n){const{_proxy:s,_context:o,_subProxy:r,_stack:a}=e;if(a.has(i))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+i);a.add(i);let l=t(o,r||n);return a.delete(i),Oi(i,l)&&(l=Ti(s._scopes,s,i,l)),l}function mr(i,t,e,n){const{_proxy:s,_context:o,_subProxy:r,_descriptors:a}=e;if(typeof o.index<"u"&&n(i))return t[o.index%t.length];if(L(t[0])){const l=t,c=s._scopes.filter(h=>h!==l);t=[];for(const h of l){const d=Ti(c,s,i,h);t.push(Wt(d,o,r&&r[i],a))}}return t}function Cs(i,t,e){return xt(i)?i(t,e):i}const br=(i,t)=>i===!0?t:typeof i=="string"?Bt(t,i):void 0;function xr(i,t,e,n,s){for(const o of t){const r=br(e,o);if(r){i.add(r);const a=Cs(r._fallback,e,s);if(typeof a<"u"&&a!==e&&a!==n)return a}else if(r===!1&&typeof n<"u"&&e!==n)return null}return!1}function Ti(i,t,e,n){const s=t._rootScopes,o=Cs(t._fallback,e,n),r=[...i,...s],a=new Set;a.add(n);let l=qi(a,r,e,o||e,n);return l===null||typeof o<"u"&&o!==e&&(l=qi(a,r,o,l,n),l===null)?!1:Ci(Array.from(a),[""],s,o,()=>_r(t,e,n))}function qi(i,t,e,n,s){for(;e;)e=xr(i,t,e,n,s);return e}function _r(i,t,e){const n=i._getTarget();t in n||(n[t]={});const s=n[t];return R(s)&&L(e)?e:s||{}}function yr(i,t,e,n){let s;for(const o of t)if(s=Os(fr(o,i),e),typeof s<"u")return Oi(i,s)?Ti(e,n,i,s):s}function Os(i,t){for(const e of t){if(!e)continue;const n=e[i];if(typeof n<"u")return n}}function Gi(i){let t=i._keys;return t||(t=i._keys=vr(i._scopes)),t}function vr(i){const t=new Set;for(const e of i)for(const n of Object.keys(e).filter(s=>!s.startsWith("_")))t.add(n);return Array.from(t)}const wr=Number.EPSILON||1e-14,Nt=(i,t)=>t<i.length&&!i[t].skip&&i[t],Ts=i=>i==="x"?"y":"x";function Mr(i,t,e,n){const s=i.skip?t:i,o=t,r=e.skip?t:e,a=ci(o,s),l=ci(r,o);let c=a/(a+l),h=l/(a+l);c=isNaN(c)?0:c,h=isNaN(h)?0:h;const d=n*c,u=n*h;return{previous:{x:o.x-d*(r.x-s.x),y:o.y-d*(r.y-s.y)},next:{x:o.x+u*(r.x-s.x),y:o.y+u*(r.y-s.y)}}}function kr(i,t,e){const n=i.length;let s,o,r,a,l,c=Nt(i,0);for(let h=0;h<n-1;++h)if(l=c,c=Nt(i,h+1),!(!l||!c)){if(ie(t[h],0,wr)){e[h]=e[h+1]=0;continue}s=e[h]/t[h],o=e[h+1]/t[h],a=Math.pow(s,2)+Math.pow(o,2),!(a<=9)&&(r=3/Math.sqrt(a),e[h]=s*r*t[h],e[h+1]=o*r*t[h])}}function Sr(i,t,e="x"){const n=Ts(e),s=i.length;let o,r,a,l=Nt(i,0);for(let c=0;c<s;++c){if(r=a,a=l,l=Nt(i,c+1),!a)continue;const h=a[e],d=a[n];r&&(o=(h-r[e])/3,a[`cp1${e}`]=h-o,a[`cp1${n}`]=d-o*t[c]),l&&(o=(l[e]-h)/3,a[`cp2${e}`]=h+o,a[`cp2${n}`]=d+o*t[c])}}function Pr(i,t="x"){const e=Ts(t),n=i.length,s=Array(n).fill(0),o=Array(n);let r,a,l,c=Nt(i,0);for(r=0;r<n;++r)if(a=l,l=c,c=Nt(i,r+1),!!l){if(c){const h=c[t]-l[t];s[r]=h!==0?(c[e]-l[e])/h:0}o[r]=a?c?et(s[r-1])!==et(s[r])?0:(s[r-1]+s[r])/2:s[r-1]:s[r]}kr(i,s,o),Sr(i,o,t)}function _e(i,t,e){return Math.max(Math.min(i,e),t)}function Dr(i,t){let e,n,s,o,r,a=ht(i[0],t);for(e=0,n=i.length;e<n;++e)r=o,o=a,a=e<n-1&&ht(i[e+1],t),o&&(s=i[e],r&&(s.cp1x=_e(s.cp1x,t.left,t.right),s.cp1y=_e(s.cp1y,t.top,t.bottom)),a&&(s.cp2x=_e(s.cp2x,t.left,t.right),s.cp2y=_e(s.cp2y,t.top,t.bottom)))}function Cr(i,t,e,n,s){let o,r,a,l;if(t.spanGaps&&(i=i.filter(c=>!c.skip)),t.cubicInterpolationMode==="monotone")Pr(i,s);else{let c=n?i[i.length-1]:i[0];for(o=0,r=i.length;o<r;++o)a=i[o],l=Mr(c,a,i[Math.min(o+1,r-(n?0:1))%r],t.tension),a.cp1x=l.previous.x,a.cp1y=l.previous.y,a.cp2x=l.next.x,a.cp2y=l.next.y,c=a}t.capBezierPoints&&Dr(i,e)}function Li(){return typeof window<"u"&&typeof document<"u"}function Ai(i){let t=i.parentNode;return t&&t.toString()==="[object ShadowRoot]"&&(t=t.host),t}function Ee(i,t,e){let n;return typeof i=="string"?(n=parseInt(i,10),i.indexOf("%")!==-1&&(n=n/100*t.parentNode[e])):n=i,n}const $e=i=>i.ownerDocument.defaultView.getComputedStyle(i,null);function Or(i,t){return $e(i).getPropertyValue(t)}const Tr=["top","right","bottom","left"];function Lt(i,t,e){const n={};e=e?"-"+e:"";for(let s=0;s<4;s++){const o=Tr[s];n[o]=parseFloat(i[t+"-"+o+e])||0}return n.width=n.left+n.right,n.height=n.top+n.bottom,n}const Lr=(i,t,e)=>(i>0||t>0)&&(!e||!e.shadowRoot);function Ar(i,t){const e=i.touches,n=e&&e.length?e[0]:i,{offsetX:s,offsetY:o}=n;let r=!1,a,l;if(Lr(s,o,i.target))a=s,l=o;else{const c=t.getBoundingClientRect();a=n.clientX-c.left,l=n.clientY-c.top,r=!0}return{x:a,y:l,box:r}}function ot(i,t){if("native"in i)return i;const{canvas:e,currentDevicePixelRatio:n}=t,s=$e(e),o=s.boxSizing==="border-box",r=Lt(s,"padding"),a=Lt(s,"border","width"),{x:l,y:c,box:h}=Ar(i,e),d=r.left+(h&&a.left),u=r.top+(h&&a.top);let{width:f,height:p}=t;return o&&(f-=r.width+a.width,p-=r.height+a.height),{x:Math.round((l-d)/f*e.width/n),y:Math.round((c-u)/p*e.height/n)}}function zr(i,t,e){let n,s;if(t===void 0||e===void 0){const o=i&&Ai(i);if(!o)t=i.clientWidth,e=i.clientHeight;else{const r=o.getBoundingClientRect(),a=$e(o),l=Lt(a,"border","width"),c=Lt(a,"padding");t=r.width-c.width-l.width,e=r.height-c.height-l.height,n=Ee(a.maxWidth,o,"clientWidth"),s=Ee(a.maxHeight,o,"clientHeight")}}return{width:t,height:e,maxWidth:n||Re,maxHeight:s||Re}}const ye=i=>Math.round(i*10)/10;function Ir(i,t,e,n){const s=$e(i),o=Lt(s,"margin"),r=Ee(s.maxWidth,i,"clientWidth")||Re,a=Ee(s.maxHeight,i,"clientHeight")||Re,l=zr(i,t,e);let{width:c,height:h}=l;if(s.boxSizing==="content-box"){const u=Lt(s,"border","width"),f=Lt(s,"padding");c-=f.width+u.width,h-=f.height+u.height}return c=Math.max(0,c-o.width),h=Math.max(0,n?c/n:h-o.height),c=ye(Math.min(c,r,l.maxWidth)),h=ye(Math.min(h,a,l.maxHeight)),c&&!h&&(h=ye(c/2)),(t!==void 0||e!==void 0)&&n&&l.height&&h>l.height&&(h=l.height,c=ye(Math.floor(h*n))),{width:c,height:h}}function Zi(i,t,e){const n=t||1,s=Math.floor(i.height*n),o=Math.floor(i.width*n);i.height=Math.floor(i.height),i.width=Math.floor(i.width);const r=i.canvas;return r.style&&(e||!r.style.height&&!r.style.width)&&(r.style.height=`${i.height}px`,r.style.width=`${i.width}px`),i.currentDevicePixelRatio!==n||r.height!==s||r.width!==o?(i.currentDevicePixelRatio=n,r.height=s,r.width=o,i.ctx.setTransform(n,0,0,n,0,0),!0):!1}const Rr=function(){let i=!1;try{const t={get passive(){return i=!0,!1}};Li()&&(window.addEventListener("test",null,t),window.removeEventListener("test",null,t))}catch{}return i}();function Qi(i,t){const e=Or(i,t),n=e&&e.match(/^(\d+)(\.\d+)?px$/);return n?+n[1]:void 0}function Dt(i,t,e,n){return{x:i.x+e*(t.x-i.x),y:i.y+e*(t.y-i.y)}}function Fr(i,t,e,n){return{x:i.x+e*(t.x-i.x),y:n==="middle"?e<.5?i.y:t.y:n==="after"?e<1?i.y:t.y:e>0?t.y:i.y}}function Er(i,t,e,n){const s={x:i.cp2x,y:i.cp2y},o={x:t.cp1x,y:t.cp1y},r=Dt(i,s,e),a=Dt(s,o,e),l=Dt(o,t,e),c=Dt(r,a,e),h=Dt(a,l,e);return Dt(c,h,e)}const Br=function(i,t){return{x(e){return i+i+t-e},setWidth(e){t=e},textAlign(e){return e==="center"?e:e==="right"?"left":"right"},xPlus(e,n){return e-n},leftForLtr(e,n){return e-n}}},Hr=function(){return{x(i){return i},setWidth(i){},textAlign(i){return i},xPlus(i,t){return i+t},leftForLtr(i,t){return i}}};function Ft(i,t,e){return i?Br(t,e):Hr()}function Ls(i,t){let e,n;(t==="ltr"||t==="rtl")&&(e=i.canvas.style,n=[e.getPropertyValue("direction"),e.getPropertyPriority("direction")],e.setProperty("direction",t,"important"),i.prevTextDirection=n)}function As(i,t){t!==void 0&&(delete i.prevTextDirection,i.canvas.style.setProperty("direction",t[0],t[1]))}function zs(i){return i==="angle"?{between:ms,compare:Bo,normalize:G}:{between:pt,compare:(t,e)=>t-e,normalize:t=>t}}function Ji({start:i,end:t,count:e,loop:n,style:s}){return{start:i%e,end:t%e,loop:n&&(t-i+1)%e===0,style:s}}function Wr(i,t,e){const{property:n,start:s,end:o}=e,{between:r,normalize:a}=zs(n),l=t.length;let{start:c,end:h,loop:d}=i,u,f;if(d){for(c+=l,h+=l,u=0,f=l;u<f&&r(a(t[c%l][n]),s,o);++u)c--,h--;c%=l,h%=l}return h<c&&(h+=l),{start:c,end:h,loop:d,style:i.style}}function Is(i,t,e){if(!e)return[i];const{property:n,start:s,end:o}=e,r=t.length,{compare:a,between:l,normalize:c}=zs(n),{start:h,end:d,loop:u,style:f}=Wr(i,t,e),p=[];let g=!1,m=null,b,x,y;const v=()=>l(s,y,b)&&a(s,y)!==0,_=()=>a(o,b)===0||l(o,y,b),k=()=>g||v(),M=()=>!g||_();for(let w=h,D=h;w<=d;++w)x=t[w%r],!x.skip&&(b=c(x[n]),b!==y&&(g=l(b,s,o),m===null&&k()&&(m=a(b,s)===0?w:D),m!==null&&M()&&(p.push(Ji({start:m,end:w,loop:u,count:r,style:f})),m=null),D=w,y=b));return m!==null&&p.push(Ji({start:m,end:d,loop:u,count:r,style:f})),p}function Rs(i,t){const e=[],n=i.segments;for(let s=0;s<n.length;s++){const o=Is(n[s],i.points,t);o.length&&e.push(...o)}return e}function Nr(i,t,e,n){let s=0,o=t-1;if(e&&!n)for(;s<t&&!i[s].skip;)s++;for(;s<t&&i[s].skip;)s++;for(s%=t,e&&(o+=s);o>s&&i[o%t].skip;)o--;return o%=t,{start:s,end:o}}function Vr(i,t,e,n){const s=i.length,o=[];let r=t,a=i[t],l;for(l=t+1;l<=e;++l){const c=i[l%s];c.skip||c.stop?a.skip||(n=!1,o.push({start:t%s,end:(l-1)%s,loop:n}),t=r=c.stop?l:null):(r=l,a.skip&&(t=l)),a=c}return r!==null&&o.push({start:t%s,end:r%s,loop:n}),o}function jr(i,t){const e=i.points,n=i.options.spanGaps,s=e.length;if(!s)return[];const o=!!i._loop,{start:r,end:a}=Nr(e,s,o,n);if(n===!0)return tn(i,[{start:r,end:a,loop:o}],e,t);const l=a<r?a+s:a,c=!!i._fullLoop&&r===0&&a===s-1;return tn(i,Vr(e,r,l,c),e,t)}function tn(i,t,e,n){return!n||!n.setContext||!e?t:$r(i,t,e,n)}function $r(i,t,e,n){const s=i._chart.getContext(),o=en(i.options),{_datasetIndex:r,options:{spanGaps:a}}=i,l=e.length,c=[];let h=o,d=t[0].start,u=d;function f(p,g,m,b){const x=a?-1:1;if(p!==g){for(p+=l;e[p%l].skip;)p-=x;for(;e[g%l].skip;)g+=x;p%l!==g%l&&(c.push({start:p%l,end:g%l,loop:m,style:b}),h=b,d=g%l)}}for(const p of t){d=a?d:p.start;let g=e[d%l],m;for(u=d+1;u<=p.end;u++){const b=e[u%l];m=en(n.setContext(yt(s,{type:"segment",p0:g,p1:b,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:r}))),Ur(m,h)&&f(d,u-1,p.loop,h),g=b,h=m}d<u-1&&f(d,u-1,p.loop,h)}return c}function en(i){return{backgroundColor:i.backgroundColor,borderCapStyle:i.borderCapStyle,borderDash:i.borderDash,borderDashOffset:i.borderDashOffset,borderJoinStyle:i.borderJoinStyle,borderWidth:i.borderWidth,borderColor:i.borderColor}}function Ur(i,t){if(!t)return!1;const e=[],n=function(s,o){return Pi(o)?(e.includes(o)||e.push(o),e.indexOf(o)):o};return JSON.stringify(i,n)!==JSON.stringify(t,n)}/*!
- * Chart.js v4.4.3
- * https://www.chartjs.org
- * (c) 2024 Chart.js Contributors
- * Released under the MIT License
- */class Yr{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,n,s){const o=e.listeners[s],r=e.duration;o.forEach(a=>a({chart:t,initial:e.initial,numSteps:r,currentStep:Math.min(n-e.start,r)}))}_refresh(){this._request||(this._running=!0,this._request=_s.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((n,s)=>{if(!n.running||!n.items.length)return;const o=n.items;let r=o.length-1,a=!1,l;for(;r>=0;--r)l=o[r],l._active?(l._total>n.duration&&(n.duration=l._total),l.tick(t),a=!0):(o[r]=o[o.length-1],o.pop());a&&(s.draw(),this._notify(s,n,t,"progress")),o.length||(n.running=!1,this._notify(s,n,t,"complete"),n.initial=!1),e+=o.length}),this._lastDate=t,e===0&&(this._running=!1)}_getAnims(t){const e=this._charts;let n=e.get(t);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,n)),n}listen(t,e,n){this._getAnims(t).listeners[e].push(n)}add(t,e){!e||!e.length||this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((n,s)=>Math.max(n,s._duration),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!(!e||!e.running||!e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const n=e.items;let s=n.length-1;for(;s>=0;--s)n[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var at=new Yr;const nn="transparent",Kr={boolean(i,t,e){return e>.5?t:i},color(i,t,e){const n=Yi(i||nn),s=n.valid&&Yi(t||nn);return s&&s.valid?s.mix(n,e).hexString():t},number(i,t,e){return i+(t-i)*e}};class Xr{constructor(t,e,n,s){const o=e[n];s=xe([t.to,s,o,t.from]);const r=xe([t.from,o,s]);this._active=!0,this._fn=t.fn||Kr[t.type||typeof r],this._easing=ne[t.easing]||ne.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=n,this._from=r,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,n){if(this._active){this._notify(!1);const s=this._target[this._prop],o=n-this._start,r=this._duration-o;this._start=n,this._duration=Math.floor(Math.max(r,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=xe([t.to,e,s,t.from]),this._from=xe([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,n=this._duration,s=this._prop,o=this._from,r=this._loop,a=this._to;let l;if(this._active=o!==a&&(r||e<n),!this._active){this._target[s]=a,this._notify(!0);return}if(e<0){this._target[s]=o;return}l=e/n%2,l=r&&l>1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[s]=this._fn(o,a,l)}wait(){const t=this._promises||(this._promises=[]);return new Promise((e,n)=>{t.push({res:e,rej:n})})}_notify(t){const e=t?"res":"rej",n=this._promises||[];for(let s=0;s<n.length;s++)n[s][e]()}}class Fs{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!L(t))return;const e=Object.keys(E.animation),n=this._properties;Object.getOwnPropertyNames(t).forEach(s=>{const o=t[s];if(!L(o))return;const r={};for(const a of e)r[a]=o[a];(R(o.properties)&&o.properties||[s]).forEach(a=>{(a===s||!n.has(a))&&n.set(a,r)})})}_animateOptions(t,e){const n=e.options,s=Gr(t,n);if(!s)return[];const o=this._createAnimations(s,n);return n.$shared&&qr(t.options.$animations,n).then(()=>{t.options=n},()=>{}),o}_createAnimations(t,e){const n=this._properties,s=[],o=t.$animations||(t.$animations={}),r=Object.keys(e),a=Date.now();let l;for(l=r.length-1;l>=0;--l){const c=r[l];if(c.charAt(0)==="$")continue;if(c==="options"){s.push(...this._animateOptions(t,e));continue}const h=e[c];let d=o[c];const u=n.get(c);if(d)if(u&&d.active()){d.update(u,h,a);continue}else d.cancel();if(!u||!u.duration){t[c]=h;continue}o[c]=d=new Xr(u,t,c,h),s.push(d)}return s}update(t,e){if(this._properties.size===0){Object.assign(t,e);return}const n=this._createAnimations(t,e);if(n.length)return at.add(this._chart,n),!0}}function qr(i,t){const e=[],n=Object.keys(t);for(let s=0;s<n.length;s++){const o=i[n[s]];o&&o.active()&&e.push(o.wait())}return Promise.all(e)}function Gr(i,t){if(!t)return;let e=i.options;if(!e){i.options=t;return}return e.$shared&&(i.options=e=Object.assign({},e,{$shared:!1,$animations:{}})),e}function sn(i,t){const e=i&&i.options||{},n=e.reverse,s=e.min===void 0?t:0,o=e.max===void 0?t:0;return{start:n?o:s,end:n?s:o}}function Zr(i,t,e){if(e===!1)return!1;const n=sn(i,e),s=sn(t,e);return{top:s.end,right:n.end,bottom:s.start,left:n.start}}function Qr(i){let t,e,n,s;return L(i)?(t=i.top,e=i.right,n=i.bottom,s=i.left):t=e=n=s=i,{top:t,right:e,bottom:n,left:s,disabled:i===!1}}function Es(i,t){const e=[],n=i._getSortedDatasetMetas(t);let s,o;for(s=0,o=n.length;s<o;++s)e.push(n[s].index);return e}function on(i,t,e,n={}){const s=i.keys,o=n.mode==="single";let r,a,l,c;if(t!==null){for(r=0,a=s.length;r<a;++r){if(l=+s[r],l===e){if(n.all)continue;break}c=i.values[l],F(c)&&(o||t===0||et(t)===et(c))&&(t+=c)}return t}}function Jr(i,t){const{iScale:e,vScale:n}=t,s=e.axis==="x"?"x":"y",o=n.axis==="x"?"x":"y",r=Object.keys(i),a=new Array(r.length);let l,c,h;for(l=0,c=r.length;l<c;++l)h=r[l],a[l]={[s]:h,[o]:i[h]};return a}function rn(i,t){const e=i&&i.options.stacked;return e||e===void 0&&t.stack!==void 0}function ta(i,t,e){return`${i.id}.${t.id}.${e.stack||e.type}`}function ea(i){const{min:t,max:e,minDefined:n,maxDefined:s}=i.getUserBounds();return{min:n?t:Number.NEGATIVE_INFINITY,max:s?e:Number.POSITIVE_INFINITY}}function ia(i,t,e){const n=i[t]||(i[t]={});return n[e]||(n[e]={})}function an(i,t,e,n){for(const s of t.getMatchingVisibleMetas(n).reverse()){const o=i[s.index];if(e&&o>0||!e&&o<0)return s.index}return null}function ln(i,t){const{chart:e,_cachedMeta:n}=i,s=e._stacks||(e._stacks={}),{iScale:o,vScale:r,index:a}=n,l=o.axis,c=r.axis,h=ta(o,r,n),d=t.length;let u;for(let f=0;f<d;++f){const p=t[f],{[l]:g,[c]:m}=p,b=p._stacks||(p._stacks={});u=b[c]=ia(s,h,g),u[a]=m,u._top=an(u,r,!0,n.type),u._bottom=an(u,r,!1,n.type);const x=u._visualValues||(u._visualValues={});x[a]=m}}function Xe(i,t){const e=i.scales;return Object.keys(e).filter(n=>e[n].axis===t).shift()}function na(i,t){return yt(i,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function sa(i,t,e){return yt(i,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:e,index:t,mode:"default",type:"data"})}function Kt(i,t){const e=i.controller.index,n=i.vScale&&i.vScale.axis;if(n){t=t||i._parsed;for(const s of t){const o=s._stacks;if(!o||o[n]===void 0||o[n][e]===void 0)return;delete o[n][e],o[n]._visualValues!==void 0&&o[n]._visualValues[e]!==void 0&&delete o[n]._visualValues[e]}}}const qe=i=>i==="reset"||i==="none",cn=(i,t)=>t?i:Object.assign({},i),oa=(i,t,e)=>i&&!t.hidden&&t._stacked&&{keys:Es(e,!0),values:null};class Et{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=rn(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Kt(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,n=this.getDataset(),s=(d,u,f,p)=>d==="x"?u:d==="r"?p:f,o=e.xAxisID=C(n.xAxisID,Xe(t,"x")),r=e.yAxisID=C(n.yAxisID,Xe(t,"y")),a=e.rAxisID=C(n.rAxisID,Xe(t,"r")),l=e.indexAxis,c=e.iAxisID=s(l,o,r,a),h=e.vAxisID=s(l,r,o,a);e.xScale=this.getScaleForId(o),e.yScale=this.getScaleForId(r),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(c),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&ji(this._data,this),t._stacked&&Kt(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),n=this._data;if(L(e)){const s=this._cachedMeta;this._data=Jr(e,s)}else if(n!==e){if(n){ji(n,this);const s=this._cachedMeta;Kt(s),s._parsed=[]}e&&Object.isExtensible(e)&&Vo(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,n=this.getDataset();let s=!1;this._dataCheck();const o=e._stacked;e._stacked=rn(e.vScale,e),e.stack!==n.stack&&(s=!0,Kt(e),e.stack=n.stack),this._resyncElements(t),(s||o!==e._stacked)&&ln(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),n=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:n,_data:s}=this,{iScale:o,_stacked:r}=n,a=o.axis;let l=t===0&&e===s.length?!0:n._sorted,c=t>0&&n._parsed[t-1],h,d,u;if(this._parsing===!1)n._parsed=s,n._sorted=!0,u=s;else{R(s[t])?u=this.parseArrayData(n,s,t,e):L(s[t])?u=this.parseObjectData(n,s,t,e):u=this.parsePrimitiveData(n,s,t,e);const f=()=>d[a]===null||c&&d[a]<c[a];for(h=0;h<e;++h)n._parsed[h+t]=d=u[h],l&&(f()&&(l=!1),c=d);n._sorted=l}r&&ln(this,u)}parsePrimitiveData(t,e,n,s){const{iScale:o,vScale:r}=t,a=o.axis,l=r.axis,c=o.getLabels(),h=o===r,d=new Array(s);let u,f,p;for(u=0,f=s;u<f;++u)p=u+n,d[u]={[a]:h||o.parse(c[p],p),[l]:r.parse(e[p],p)};return d}parseArrayData(t,e,n,s){const{xScale:o,yScale:r}=t,a=new Array(s);let l,c,h,d;for(l=0,c=s;l<c;++l)h=l+n,d=e[h],a[l]={x:o.parse(d[0],h),y:r.parse(d[1],h)};return a}parseObjectData(t,e,n,s){const{xScale:o,yScale:r}=t,{xAxisKey:a="x",yAxisKey:l="y"}=this._parsing,c=new Array(s);let h,d,u,f;for(h=0,d=s;h<d;++h)u=h+n,f=e[u],c[h]={x:o.parse(Bt(f,a),u),y:r.parse(Bt(f,l),u)};return c}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,n){const s=this.chart,o=this._cachedMeta,r=e[t.axis],a={keys:Es(s,!0),values:e._stacks[t.axis]._visualValues};return on(a,r,o.index,{mode:n})}updateRangeFromParsed(t,e,n,s){const o=n[e.axis];let r=o===null?NaN:o;const a=s&&n._stacks[e.axis];s&&a&&(s.values=a,r=on(s,o,this._cachedMeta.index)),t.min=Math.min(t.min,r),t.max=Math.max(t.max,r)}getMinMax(t,e){const n=this._cachedMeta,s=n._parsed,o=n._sorted&&t===n.iScale,r=s.length,a=this._getOtherScale(t),l=oa(e,n,this.chart),c={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:h,max:d}=ea(a);let u,f;function p(){f=s[u];const g=f[a.axis];return!F(f[t.axis])||h>g||d<g}for(u=0;u<r&&!(!p()&&(this.updateRangeFromParsed(c,t,f,l),o));++u);if(o){for(u=r-1;u>=0;--u)if(!p()){this.updateRangeFromParsed(c,t,f,l);break}}return c}getAllParsedValues(t){const e=this._cachedMeta._parsed,n=[];let s,o,r;for(s=0,o=e.length;s<o;++s)r=e[s][t.axis],F(r)&&n.push(r);return n}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,n=e.iScale,s=e.vScale,o=this.getParsed(t);return{label:n?""+n.getLabelForValue(o[n.axis]):"",value:s?""+s.getLabelForValue(o[s.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=Qr(C(this.options.clip,Zr(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,n=this._cachedMeta,s=n.data||[],o=e.chartArea,r=[],a=this._drawStart||0,l=this._drawCount||s.length-a,c=this.options.drawActiveElementsOnTop;let h;for(n.dataset&&n.dataset.draw(t,o,a,l),h=a;h<a+l;++h){const d=s[h];d.hidden||(d.active&&c?r.push(d):d.draw(t,o))}for(h=0;h<r.length;++h)r[h].draw(t,o)}getStyle(t,e){const n=e?"active":"default";return t===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(n):this.resolveDataElementOptions(t||0,n)}getContext(t,e,n){const s=this.getDataset();let o;if(t>=0&&t<this._cachedMeta.data.length){const r=this._cachedMeta.data[t];o=r.$context||(r.$context=sa(this.getContext(),t,r)),o.parsed=this.getParsed(t),o.raw=s.data[t],o.index=o.dataIndex=t}else o=this.$context||(this.$context=na(this.chart.getContext(),this.index)),o.dataset=s,o.index=o.datasetIndex=this.index;return o.active=!!e,o.mode=n,o}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",n){const s=e==="active",o=this._cachedDataOpts,r=t+"-"+e,a=o[r],l=this.enableOptionSharing&&ae(n);if(a)return cn(a,l);const c=this.chart.config,h=c.datasetElementScopeKeys(this._type,t),d=s?[`${t}Hover`,"hover",t,""]:[t,""],u=c.getOptionScopes(this.getDataset(),h),f=Object.keys(E.elements[t]),p=()=>this.getContext(n,s,e),g=c.resolveNamedOptions(u,f,p,d);return g.$shared&&(g.$shared=l,o[r]=Object.freeze(cn(g,l))),g}_resolveAnimations(t,e,n){const s=this.chart,o=this._cachedDataOpts,r=`animation-${e}`,a=o[r];if(a)return a;let l;if(s.options.animation!==!1){const h=this.chart.config,d=h.datasetAnimationScopeKeys(this._type,e),u=h.getOptionScopes(this.getDataset(),d);l=h.createResolver(u,this.getContext(t,n,e))}const c=new Fs(s,l&&l.animations);return l&&l._cacheable&&(o[r]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||qe(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const n=this.resolveDataElementOptions(t,e),s=this._sharedOptions,o=this.getSharedOptions(n),r=this.includeOptions(e,o)||o!==s;return this.updateSharedOptions(o,e,n),{sharedOptions:o,includeOptions:r}}updateElement(t,e,n,s){qe(s)?Object.assign(t,n):this._resolveAnimations(e,s).update(t,n)}updateSharedOptions(t,e,n){t&&!qe(e)&&this._resolveAnimations(void 0,e).update(t,n)}_setStyle(t,e,n,s){t.active=s;const o=this.getStyle(e,s);this._resolveAnimations(e,n,s).update(t,{options:!s&&this.getSharedOptions(o)||o})}removeHoverStyle(t,e,n){this._setStyle(t,n,"active",!1)}setHoverStyle(t,e,n){this._setStyle(t,n,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,n=this._cachedMeta.data;for(const[a,l,c]of this._syncList)this[a](l,c);this._syncList=[];const s=n.length,o=e.length,r=Math.min(o,s);r&&this.parse(0,r),o>s?this._insertElements(s,o-s,t):o<s&&this._removeElements(o,s-o)}_insertElements(t,e,n=!0){const s=this._cachedMeta,o=s.data,r=t+e;let a;const l=c=>{for(c.length+=e,a=c.length-1;a>=r;a--)c[a]=c[a-e]};for(l(o),a=t;a<r;++a)o[a]=new this.dataElementType;this._parsing&&l(s._parsed),this.parse(t,e),n&&this.updateElements(o,t,e,"reset")}updateElements(t,e,n,s){}_removeElements(t,e){const n=this._cachedMeta;if(this._parsing){const s=n._parsed.splice(t,e);n._stacked&&Kt(n,s)}n.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,n,s]=t;this[e](n,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const n=arguments.length-2;n&&this._sync(["_insertElements",t,n])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}S(Et,"defaults",{}),S(Et,"datasetElementType",null),S(Et,"dataElementType",null);function ra(i,t){if(!i._cache.$bar){const e=i.getMatchingVisibleMetas(t);let n=[];for(let s=0,o=e.length;s<o;s++)n=n.concat(e[s].controller.getAllParsedValues(i));i._cache.$bar=xs(n.sort((s,o)=>s-o))}return i._cache.$bar}function aa(i){const t=i.iScale,e=ra(t,i.type);let n=t._length,s,o,r,a;const l=()=>{r===32767||r===-32768||(ae(a)&&(n=Math.min(n,Math.abs(r-a)||n)),a=r)};for(s=0,o=e.length;s<o;++s)r=t.getPixelForValue(e[s]),l();for(a=void 0,s=0,o=t.ticks.length;s<o;++s)r=t.getPixelForTick(s),l();return n}function la(i,t,e,n){const s=e.barThickness;let o,r;return I(s)?(o=t.min*e.categoryPercentage,r=e.barPercentage):(o=s*n,r=1),{chunk:o/n,ratio:r,start:t.pixels[i]-o/2}}function ca(i,t,e,n){const s=t.pixels,o=s[i];let r=i>0?s[i-1]:null,a=i<s.length-1?s[i+1]:null;const l=e.categoryPercentage;r===null&&(r=o-(a===null?t.end-t.start:a-o)),a===null&&(a=o+o-r);const c=o-(o-Math.min(r,a))/2*l;return{chunk:Math.abs(a-r)/2*l/n,ratio:e.barPercentage,start:c}}function ha(i,t,e,n){const s=e.parse(i[0],n),o=e.parse(i[1],n),r=Math.min(s,o),a=Math.max(s,o);let l=r,c=a;Math.abs(r)>Math.abs(a)&&(l=a,c=r),t[e.axis]=c,t._custom={barStart:l,barEnd:c,start:s,end:o,min:r,max:a}}function Bs(i,t,e,n){return R(i)?ha(i,t,e,n):t[e.axis]=e.parse(i,n),t}function hn(i,t,e,n){const s=i.iScale,o=i.vScale,r=s.getLabels(),a=s===o,l=[];let c,h,d,u;for(c=e,h=e+n;c<h;++c)u=t[c],d={},d[s.axis]=a||s.parse(r[c],c),l.push(Bs(u,d,o,c));return l}function Ge(i){return i&&i.barStart!==void 0&&i.barEnd!==void 0}function da(i,t,e){return i!==0?et(i):(t.isHorizontal()?1:-1)*(t.min>=e?1:-1)}function ua(i){let t,e,n,s,o;return i.horizontal?(t=i.base>i.x,e="left",n="right"):(t=i.base<i.y,e="bottom",n="top"),t?(s="end",o="start"):(s="start",o="end"),{start:e,end:n,reverse:t,top:s,bottom:o}}function fa(i,t,e,n){let s=t.borderSkipped;const o={};if(!s){i.borderSkipped=o;return}if(s===!0){i.borderSkipped={top:!0,right:!0,bottom:!0,left:!0};return}const{start:r,end:a,reverse:l,top:c,bottom:h}=ua(i);s==="middle"&&e&&(i.enableBorderRadius=!0,(e._top||0)===n?s=c:(e._bottom||0)===n?s=h:(o[dn(h,r,a,l)]=!0,s=c)),o[dn(s,r,a,l)]=!0,i.borderSkipped=o}function dn(i,t,e,n){return n?(i=ga(i,t,e),i=un(i,e,t)):i=un(i,t,e),i}function ga(i,t,e){return i===t?e:i===e?t:i}function un(i,t,e){return i==="start"?t:i==="end"?e:i}function pa(i,{inflateAmount:t},e){i.inflateAmount=t==="auto"?e===1?.33:0:t}class Ze extends Et{parsePrimitiveData(t,e,n,s){return hn(t,e,n,s)}parseArrayData(t,e,n,s){return hn(t,e,n,s)}parseObjectData(t,e,n,s){const{iScale:o,vScale:r}=t,{xAxisKey:a="x",yAxisKey:l="y"}=this._parsing,c=o.axis==="x"?a:l,h=r.axis==="x"?a:l,d=[];let u,f,p,g;for(u=n,f=n+s;u<f;++u)g=e[u],p={},p[o.axis]=o.parse(Bt(g,c),u),d.push(Bs(Bt(g,h),p,r,u));return d}updateRangeFromParsed(t,e,n,s){super.updateRangeFromParsed(t,e,n,s);const o=n._custom;o&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,o.min),t.max=Math.max(t.max,o.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:n,vScale:s}=e,o=this.getParsed(t),r=o._custom,a=Ge(r)?"["+r.start+", "+r.end+"]":""+s.getLabelForValue(o[s.axis]);return{label:""+n.getLabelForValue(o[n.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();const t=this._cachedMeta;t.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,n,s){const o=s==="reset",{index:r,_cachedMeta:{vScale:a}}=this,l=a.getBasePixel(),c=a.isHorizontal(),h=this._getRuler(),{sharedOptions:d,includeOptions:u}=this._getSharedOptions(e,s);for(let f=e;f<e+n;f++){const p=this.getParsed(f),g=o||I(p[a.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),m=this._calculateBarIndexPixels(f,h),b=(p._stacks||{})[a.axis],x={horizontal:c,base:g.base,enableBorderRadius:!b||Ge(p._custom)||r===b._top||r===b._bottom,x:c?g.head:m.center,y:c?m.center:g.head,height:c?m.size:Math.abs(g.size),width:c?Math.abs(g.size):m.size};u&&(x.options=d||this.resolveDataElementOptions(f,t[f].active?"active":s));const y=x.options||t[f].options;fa(x,y,b,r),pa(x,y,h.ratio),this.updateElement(t[f],f,x,s)}}_getStacks(t,e){const{iScale:n}=this._cachedMeta,s=n.getMatchingVisibleMetas(this._type).filter(l=>l.controller.options.grouped),o=n.options.stacked,r=[],a=l=>{const c=l.controller.getParsed(e),h=c&&c[l.vScale.axis];if(I(h)||isNaN(h))return!0};for(const l of s)if(!(e!==void 0&&a(l))&&((o===!1||r.indexOf(l.stack)===-1||o===void 0&&l.stack===void 0)&&r.push(l.stack),l.index===t))break;return r.length||r.push(void 0),r}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,n){const s=this._getStacks(t,n),o=e!==void 0?s.indexOf(e):-1;return o===-1?s.length-1:o}_getRuler(){const t=this.options,e=this._cachedMeta,n=e.iScale,s=[];let o,r;for(o=0,r=e.data.length;o<r;++o)s.push(n.getPixelForValue(this.getParsed(o)[n.axis],o));const a=t.barThickness;return{min:a||aa(e),pixels:s,start:n._startPixel,end:n._endPixel,stackCount:this._getStackCount(),scale:n,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:n,index:s},options:{base:o,minBarLength:r}}=this,a=o||0,l=this.getParsed(t),c=l._custom,h=Ge(c);let d=l[e.axis],u=0,f=n?this.applyStack(e,l,n):d,p,g;f!==d&&(u=f-d,f=d),h&&(d=c.barStart,f=c.barEnd-c.barStart,d!==0&&et(d)!==et(c.barEnd)&&(u=0),u+=d);const m=!I(o)&&!h?o:u;let b=e.getPixelForValue(m);if(this.chart.getDataVisibility(t)?p=e.getPixelForValue(u+f):p=b,g=p-b,Math.abs(g)<r){g=da(g,e,a)*r,d===a&&(b-=g/2);const x=e.getPixelForDecimal(0),y=e.getPixelForDecimal(1),v=Math.min(x,y),_=Math.max(x,y);b=Math.max(Math.min(b,_),v),p=b+g,n&&!h&&(l._stacks[e.axis]._visualValues[s]=e.getValueForPixel(p)-e.getValueForPixel(b))}if(b===e.getPixelForValue(a)){const x=et(g)*e.getLineWidthForValue(a)/2;b+=x,g-=x}return{size:g,base:b,head:p,center:p+g/2}}_calculateBarIndexPixels(t,e){const n=e.scale,s=this.options,o=s.skipNull,r=C(s.maxBarThickness,1/0);let a,l;if(e.grouped){const c=o?this._getStackCount(t):e.stackCount,h=s.barThickness==="flex"?ca(t,e,s,c):la(t,e,s,c),d=this._getStackIndex(this.index,this._cachedMeta.stack,o?t:void 0);a=h.start+h.chunk*d+h.chunk/2,l=Math.min(r,h.chunk*h.ratio)}else a=n.getPixelForValue(this.getParsed(t)[n.axis],t),l=Math.min(r,e.min*e.ratio);return{base:a-l/2,head:a+l/2,center:a,size:l}}draw(){const t=this._cachedMeta,e=t.vScale,n=t.data,s=n.length;let o=0;for(;o<s;++o)this.getParsed(o)[e.axis]!==null&&!n[o].hidden&&n[o].draw(this._ctx)}}S(Ze,"id","bar"),S(Ze,"defaults",{datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}}),S(Ze,"overrides",{scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}});class Te extends Et{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:n,data:s=[],_dataset:o}=e,r=this.chart._animationsDisabled;let{start:a,count:l}=Uo(e,s,r);this._drawStart=a,this._drawCount=l,Yo(e)&&(a=0,l=s.length),n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!o._decimated,n.points=s;const c=this.resolveDatasetElementOptions(t);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(n,void 0,{animated:!r,options:c},t),this.updateElements(s,a,l,t)}updateElements(t,e,n,s){const o=s==="reset",{iScale:r,vScale:a,_stacked:l,_dataset:c}=this._cachedMeta,{sharedOptions:h,includeOptions:d}=this._getSharedOptions(e,s),u=r.axis,f=a.axis,{spanGaps:p,segment:g}=this.options,m=le(p)?p:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||s==="none",x=e+n,y=t.length;let v=e>0&&this.getParsed(e-1);for(let _=0;_<y;++_){const k=t[_],M=b?k:{};if(_<e||_>=x){M.skip=!0;continue}const w=this.getParsed(_),D=I(w[f]),A=M[u]=r.getPixelForValue(w[u],_),T=M[f]=o||D?a.getBasePixel():a.getPixelForValue(l?this.applyStack(a,w,l):w[f],_);M.skip=isNaN(A)||isNaN(T)||D,M.stop=_>0&&Math.abs(w[u]-v[u])>m,g&&(M.parsed=w,M.raw=c.data[_]),d&&(M.options=h||this.resolveDataElementOptions(_,k.active?"active":s)),b||this.updateElement(k,_,M,s),v=w}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,n=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return n;const o=s[0].size(this.resolveDataElementOptions(0)),r=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(n,o,r)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}S(Te,"id","line"),S(Te,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),S(Te,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});function St(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class zi{constructor(t){S(this,"options");this.options=t||{}}static override(t){Object.assign(zi.prototype,t)}init(){}formats(){return St()}parse(){return St()}format(){return St()}add(){return St()}diff(){return St()}startOf(){return St()}endOf(){return St()}}var Hs={_date:zi};function ma(i,t,e,n){const{controller:s,data:o,_sorted:r}=i,a=s._cachedMeta.iScale;if(a&&t===a.axis&&t!=="r"&&r&&o.length){const l=a._reversePixels?Wo:Ct;if(n){if(s._sharedOptions){const c=o[0],h=typeof c.getRange=="function"&&c.getRange(t);if(h){const d=l(o,t,e-h),u=l(o,t,e+h);return{lo:d.lo,hi:u.hi}}}}else return l(o,t,e)}return{lo:0,hi:o.length-1}}function fe(i,t,e,n,s){const o=i.getSortedVisibleDatasetMetas(),r=e[t];for(let a=0,l=o.length;a<l;++a){const{index:c,data:h}=o[a],{lo:d,hi:u}=ma(o[a],t,r,s);for(let f=d;f<=u;++f){const p=h[f];p.skip||n(p,c,f)}}}function ba(i){const t=i.indexOf("x")!==-1,e=i.indexOf("y")!==-1;return function(n,s){const o=t?Math.abs(n.x-s.x):0,r=e?Math.abs(n.y-s.y):0;return Math.sqrt(Math.pow(o,2)+Math.pow(r,2))}}function Qe(i,t,e,n,s){const o=[];return!s&&!i.isPointInArea(t)||fe(i,e,t,function(a,l,c){!s&&!ht(a,i.chartArea,0)||a.inRange(t.x,t.y,n)&&o.push({element:a,datasetIndex:l,index:c})},!0),o}function xa(i,t,e,n){let s=[];function o(r,a,l){const{startAngle:c,endAngle:h}=r.getProps(["startAngle","endAngle"],n),{angle:d}=Eo(r,{x:t.x,y:t.y});ms(d,c,h)&&s.push({element:r,datasetIndex:a,index:l})}return fe(i,e,t,o),s}function _a(i,t,e,n,s,o){let r=[];const a=ba(e);let l=Number.POSITIVE_INFINITY;function c(h,d,u){const f=h.inRange(t.x,t.y,s);if(n&&!f)return;const p=h.getCenterPoint(s);if(!(!!o||i.isPointInArea(p))&&!f)return;const m=a(t,p);m<l?(r=[{element:h,datasetIndex:d,index:u}],l=m):m===l&&r.push({element:h,datasetIndex:d,index:u})}return fe(i,e,t,c),r}function Je(i,t,e,n,s,o){return!o&&!i.isPointInArea(t)?[]:e==="r"&&!n?xa(i,t,e,s):_a(i,t,e,n,s,o)}function fn(i,t,e,n,s){const o=[],r=e==="x"?"inXRange":"inYRange";let a=!1;return fe(i,e,t,(l,c,h)=>{l[r](t[e],s)&&(o.push({element:l,datasetIndex:c,index:h}),a=a||l.inRange(t.x,t.y,s))}),n&&!a?[]:o}var ya={evaluateInteractionItems:fe,modes:{index(i,t,e,n){const s=ot(t,i),o=e.axis||"x",r=e.includeInvisible||!1,a=e.intersect?Qe(i,s,o,n,r):Je(i,s,o,!1,n,r),l=[];return a.length?(i.getSortedVisibleDatasetMetas().forEach(c=>{const h=a[0].index,d=c.data[h];d&&!d.skip&&l.push({element:d,datasetIndex:c.index,index:h})}),l):[]},dataset(i,t,e,n){const s=ot(t,i),o=e.axis||"xy",r=e.includeInvisible||!1;let a=e.intersect?Qe(i,s,o,n,r):Je(i,s,o,!1,n,r);if(a.length>0){const l=a[0].datasetIndex,c=i.getDatasetMeta(l).data;a=[];for(let h=0;h<c.length;++h)a.push({element:c[h],datasetIndex:l,index:h})}return a},point(i,t,e,n){const s=ot(t,i),o=e.axis||"xy",r=e.includeInvisible||!1;return Qe(i,s,o,n,r)},nearest(i,t,e,n){const s=ot(t,i),o=e.axis||"xy",r=e.includeInvisible||!1;return Je(i,s,o,e.intersect,n,r)},x(i,t,e,n){const s=ot(t,i);return fn(i,s,"x",e.intersect,n)},y(i,t,e,n){const s=ot(t,i);return fn(i,s,"y",e.intersect,n)}}};const Ws=["left","top","right","bottom"];function Xt(i,t){return i.filter(e=>e.pos===t)}function gn(i,t){return i.filter(e=>Ws.indexOf(e.pos)===-1&&e.box.axis===t)}function qt(i,t){return i.sort((e,n)=>{const s=t?n:e,o=t?e:n;return s.weight===o.weight?s.index-o.index:s.weight-o.weight})}function va(i){const t=[];let e,n,s,o,r,a;for(e=0,n=(i||[]).length;e<n;++e)s=i[e],{position:o,options:{stack:r,stackWeight:a=1}}=s,t.push({index:e,box:s,pos:o,horizontal:s.isHorizontal(),weight:s.weight,stack:r&&o+r,stackWeight:a});return t}function wa(i){const t={};for(const e of i){const{stack:n,pos:s,stackWeight:o}=e;if(!n||!Ws.includes(s))continue;const r=t[n]||(t[n]={count:0,placed:0,weight:0,size:0});r.count++,r.weight+=o}return t}function Ma(i,t){const e=wa(i),{vBoxMaxWidth:n,hBoxMaxHeight:s}=t;let o,r,a;for(o=0,r=i.length;o<r;++o){a=i[o];const{fullSize:l}=a.box,c=e[a.stack],h=c&&a.stackWeight/c.weight;a.horizontal?(a.width=h?h*n:l&&t.availableWidth,a.height=s):(a.width=n,a.height=h?h*s:l&&t.availableHeight)}return e}function ka(i){const t=va(i),e=qt(t.filter(c=>c.box.fullSize),!0),n=qt(Xt(t,"left"),!0),s=qt(Xt(t,"right")),o=qt(Xt(t,"top"),!0),r=qt(Xt(t,"bottom")),a=gn(t,"x"),l=gn(t,"y");return{fullSize:e,leftAndTop:n.concat(o),rightAndBottom:s.concat(l).concat(r).concat(a),chartArea:Xt(t,"chartArea"),vertical:n.concat(s).concat(l),horizontal:o.concat(r).concat(a)}}function pn(i,t,e,n){return Math.max(i[e],t[e])+Math.max(i[n],t[n])}function Ns(i,t){i.top=Math.max(i.top,t.top),i.left=Math.max(i.left,t.left),i.bottom=Math.max(i.bottom,t.bottom),i.right=Math.max(i.right,t.right)}function Sa(i,t,e,n){const{pos:s,box:o}=e,r=i.maxPadding;if(!L(s)){e.size&&(i[s]-=e.size);const d=n[e.stack]||{size:0,count:1};d.size=Math.max(d.size,e.horizontal?o.height:o.width),e.size=d.size/d.count,i[s]+=e.size}o.getPadding&&Ns(r,o.getPadding());const a=Math.max(0,t.outerWidth-pn(r,i,"left","right")),l=Math.max(0,t.outerHeight-pn(r,i,"top","bottom")),c=a!==i.w,h=l!==i.h;return i.w=a,i.h=l,e.horizontal?{same:c,other:h}:{same:h,other:c}}function Pa(i){const t=i.maxPadding;function e(n){const s=Math.max(t[n]-i[n],0);return i[n]+=s,s}i.y+=e("top"),i.x+=e("left"),e("right"),e("bottom")}function Da(i,t){const e=t.maxPadding;function n(s){const o={left:0,top:0,right:0,bottom:0};return s.forEach(r=>{o[r]=Math.max(t[r],e[r])}),o}return n(i?["left","right"]:["top","bottom"])}function Qt(i,t,e,n){const s=[];let o,r,a,l,c,h;for(o=0,r=i.length,c=0;o<r;++o){a=i[o],l=a.box,l.update(a.width||t.w,a.height||t.h,Da(a.horizontal,t));const{same:d,other:u}=Sa(t,e,a,n);c|=d&&s.length,h=h||u,l.fullSize||s.push(a)}return c&&Qt(s,t,e,n)||h}function ve(i,t,e,n,s){i.top=e,i.left=t,i.right=t+n,i.bottom=e+s,i.width=n,i.height=s}function mn(i,t,e,n){const s=e.padding;let{x:o,y:r}=t;for(const a of i){const l=a.box,c=n[a.stack]||{count:1,placed:0,weight:1},h=a.stackWeight/c.weight||1;if(a.horizontal){const d=t.w*h,u=c.size||l.height;ae(c.start)&&(r=c.start),l.fullSize?ve(l,s.left,r,e.outerWidth-s.right-s.left,u):ve(l,t.left+c.placed,r,d,u),c.start=r,c.placed+=d,r=l.bottom}else{const d=t.h*h,u=c.size||l.width;ae(c.start)&&(o=c.start),l.fullSize?ve(l,o,s.top,u,e.outerHeight-s.bottom-s.top):ve(l,o,t.top+c.placed,u,d),c.start=o,c.placed+=d,o=l.right}}t.x=o,t.y=r}var mt={addBox(i,t){i.boxes||(i.boxes=[]),t.fullSize=t.fullSize||!1,t.position=t.position||"top",t.weight=t.weight||0,t._layers=t._layers||function(){return[{z:0,draw(e){t.draw(e)}}]},i.boxes.push(t)},removeBox(i,t){const e=i.boxes?i.boxes.indexOf(t):-1;e!==-1&&i.boxes.splice(e,1)},configure(i,t,e){t.fullSize=e.fullSize,t.position=e.position,t.weight=e.weight},update(i,t,e,n){if(!i)return;const s=j(i.options.layout.padding),o=Math.max(t-s.width,0),r=Math.max(e-s.height,0),a=ka(i.boxes),l=a.vertical,c=a.horizontal;O(i.boxes,g=>{typeof g.beforeLayout=="function"&&g.beforeLayout()});const h=l.reduce((g,m)=>m.box.options&&m.box.options.display===!1?g:g+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:e,padding:s,availableWidth:o,availableHeight:r,vBoxMaxWidth:o/2/h,hBoxMaxHeight:r/2}),u=Object.assign({},s);Ns(u,j(n));const f=Object.assign({maxPadding:u,w:o,h:r,x:s.left,y:s.top},s),p=Ma(l.concat(c),d);Qt(a.fullSize,f,d,p),Qt(l,f,d,p),Qt(c,f,d,p)&&Qt(l,f,d,p),Pa(f),mn(a.leftAndTop,f,d,p),f.x+=f.w,f.y+=f.h,mn(a.rightAndBottom,f,d,p),i.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},O(a.chartArea,g=>{const m=g.box;Object.assign(m,i.chartArea),m.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}};class Vs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,n){}removeEventListener(t,e,n){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,n,s){return e=Math.max(0,e||t.width),n=n||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):n)}}isAttached(t){return!0}updateConfig(t){}}class Ca extends Vs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const Le="$chartjs",Oa={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},bn=i=>i===null||i==="";function Ta(i,t){const e=i.style,n=i.getAttribute("height"),s=i.getAttribute("width");if(i[Le]={initial:{height:n,width:s,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",bn(s)){const o=Qi(i,"width");o!==void 0&&(i.width=o)}if(bn(n))if(i.style.height==="")i.height=i.width/(t||2);else{const o=Qi(i,"height");o!==void 0&&(i.height=o)}return i}const js=Rr?{passive:!0}:!1;function La(i,t,e){i&&i.addEventListener(t,e,js)}function Aa(i,t,e){i&&i.canvas&&i.canvas.removeEventListener(t,e,js)}function za(i,t){const e=Oa[i.type]||i.type,{x:n,y:s}=ot(i,t);return{type:e,chart:t,native:i,x:n!==void 0?n:null,y:s!==void 0?s:null}}function Be(i,t){for(const e of i)if(e===t||e.contains(t))return!0}function Ia(i,t,e){const n=i.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||Be(a.addedNodes,n),r=r&&!Be(a.removedNodes,n);r&&e()});return s.observe(document,{childList:!0,subtree:!0}),s}function Ra(i,t,e){const n=i.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||Be(a.removedNodes,n),r=r&&!Be(a.addedNodes,n);r&&e()});return s.observe(document,{childList:!0,subtree:!0}),s}const he=new Map;let xn=0;function $s(){const i=window.devicePixelRatio;i!==xn&&(xn=i,he.forEach((t,e)=>{e.currentDevicePixelRatio!==i&&t()}))}function Fa(i,t){he.size||window.addEventListener("resize",$s),he.set(i,t)}function Ea(i){he.delete(i),he.size||window.removeEventListener("resize",$s)}function Ba(i,t,e){const n=i.canvas,s=n&&Ai(n);if(!s)return;const o=ys((a,l)=>{const c=s.clientWidth;e(a,l),c<s.clientWidth&&e()},window),r=new ResizeObserver(a=>{const l=a[0],c=l.contentRect.width,h=l.contentRect.height;c===0&&h===0||o(c,h)});return r.observe(s),Fa(i,o),r}function ti(i,t,e){e&&e.disconnect(),t==="resize"&&Ea(i)}function Ha(i,t,e){const n=i.canvas,s=ys(o=>{i.ctx!==null&&e(za(o,i))},i);return La(n,t,s),s}class Wa extends Vs{acquireContext(t,e){const n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(Ta(t,e),n):null}releaseContext(t){const e=t.canvas;if(!e[Le])return!1;const n=e[Le].initial;["height","width"].forEach(o=>{const r=n[o];I(r)?e.removeAttribute(o):e.setAttribute(o,r)});const s=n.style||{};return Object.keys(s).forEach(o=>{e.style[o]=s[o]}),e.width=e.width,delete e[Le],!0}addEventListener(t,e,n){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),r={attach:Ia,detach:Ra,resize:Ba}[e]||Ha;s[e]=r(t,e,n)}removeEventListener(t,e){const n=t.$proxies||(t.$proxies={}),s=n[e];if(!s)return;({attach:ti,detach:ti,resize:ti}[e]||Aa)(t,e,s),n[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,n,s){return Ir(t,e,n,s)}isAttached(t){const e=t&&Ai(t);return!!(e&&e.isConnected)}}function Na(i){return!Li()||typeof OffscreenCanvas<"u"&&i instanceof OffscreenCanvas?Ca:Wa}class dt{constructor(){S(this,"x");S(this,"y");S(this,"active",!1);S(this,"options");S(this,"$animations")}tooltipPosition(t){const{x:e,y:n}=this.getProps(["x","y"],t);return{x:e,y:n}}hasValue(){return le(this.x)&&le(this.y)}getProps(t,e){const n=this.$animations;if(!e||!n)return this;const s={};return t.forEach(o=>{s[o]=n[o]&&n[o].active()?n[o]._to:this[o]}),s}}S(dt,"defaults",{}),S(dt,"defaultRoutes");function Va(i,t){const e=i.options.ticks,n=ja(i),s=Math.min(e.maxTicksLimit||n,n),o=e.major.enabled?Ua(t):[],r=o.length,a=o[0],l=o[r-1],c=[];if(r>s)return Ya(t,c,o,r/s),c;const h=$a(o,t,s);if(r>0){let d,u;const f=r>1?Math.round((l-a)/(r-1)):null;for(we(t,c,h,I(f)?0:a-f,a),d=0,u=r-1;d<u;d++)we(t,c,h,o[d],o[d+1]);return we(t,c,h,l,I(f)?t.length:l+f),c}return we(t,c,h),c}function ja(i){const t=i.options.offset,e=i._tickSize(),n=i._length/e+(t?0:1),s=i._maxLength/e;return Math.floor(Math.min(n,s))}function $a(i,t,e){const n=Ka(i),s=t.length/e;if(!n)return Math.max(s,1);const o=Ro(n);for(let r=0,a=o.length-1;r<a;r++){const l=o[r];if(l>s)return l}return Math.max(s,1)}function Ua(i){const t=[];let e,n;for(e=0,n=i.length;e<n;e++)i[e].major&&t.push(e);return t}function Ya(i,t,e,n){let s=0,o=e[0],r;for(n=Math.ceil(n),r=0;r<i.length;r++)r===o&&(t.push(i[r]),s++,o=e[s*n])}function we(i,t,e,n,s){const o=C(n,0),r=Math.min(C(s,i.length),i.length);let a=0,l,c,h;for(e=Math.ceil(e),s&&(l=s-n,e=l/Math.floor(l/e)),h=o;h<0;)a++,h=Math.round(o+a*e);for(c=Math.max(o,0);c<r;c++)c===h&&(t.push(i[c]),a++,h=Math.round(o+a*e))}function Ka(i){const t=i.length;let e,n;if(t<2)return!1;for(n=i[0],e=1;e<t;++e)if(i[e]-i[e-1]!==n)return!1;return n}const Xa=i=>i==="left"?"right":i==="right"?"left":i,_n=(i,t,e)=>t==="top"||t==="left"?i[t]+e:i[t]-e,yn=(i,t)=>Math.min(t||i,i);function vn(i,t){const e=[],n=i.length/t,s=i.length;let o=0;for(;o<s;o+=n)e.push(i[Math.floor(o)]);return e}function qa(i,t,e){const n=i.ticks.length,s=Math.min(t,n-1),o=i._startPixel,r=i._endPixel,a=1e-6;let l=i.getPixelForTick(s),c;if(!(e&&(n===1?c=Math.max(l-o,r-l):t===0?c=(i.getPixelForTick(1)-l)/2:c=(l-i.getPixelForTick(s-1))/2,l+=s<t?c:-c,l<o-a||l>r+a)))return l}function Ga(i,t){O(i,e=>{const n=e.gc,s=n.length/2;let o;if(s>t){for(o=0;o<s;++o)delete e.data[n[o]];n.splice(0,s)}})}function Gt(i){return i.drawTicks?i.tickLength:0}function wn(i,t){if(!i.display)return 0;const e=V(i.font,t),n=j(i.padding);return(R(i.text)?i.text.length:1)*e.lineHeight+n.height}function Za(i,t){return yt(i,{scale:t,type:"scale"})}function Qa(i,t,e){return yt(i,{tick:e,index:t,type:"tick"})}function Ja(i,t,e){let n=vs(i);return(e&&t!=="right"||!e&&t==="right")&&(n=Xa(n)),n}function tl(i,t,e,n){const{top:s,left:o,bottom:r,right:a,chart:l}=i,{chartArea:c,scales:h}=l;let d=0,u,f,p;const g=r-s,m=a-o;if(i.isHorizontal()){if(f=X(n,o,a),L(e)){const b=Object.keys(e)[0],x=e[b];p=h[b].getPixelForValue(x)+g-t}else e==="center"?p=(c.bottom+c.top)/2+g-t:p=_n(i,e,t);u=a-o}else{if(L(e)){const b=Object.keys(e)[0],x=e[b];f=h[b].getPixelForValue(x)-m+t}else e==="center"?f=(c.left+c.right)/2-m+t:f=_n(i,e,t);p=X(n,r,s),d=e==="left"?-Z:Z}return{titleX:f,titleY:p,maxWidth:u,rotation:d}}class Vt extends dt{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:n,_suggestedMax:s}=this;return t=q(t,Number.POSITIVE_INFINITY),e=q(e,Number.NEGATIVE_INFINITY),n=q(n,Number.POSITIVE_INFINITY),s=q(s,Number.NEGATIVE_INFINITY),{min:q(t,n),max:q(e,s),minDefined:F(t),maxDefined:F(e)}}getMinMax(t){let{min:e,max:n,minDefined:s,maxDefined:o}=this.getUserBounds(),r;if(s&&o)return{min:e,max:n};const a=this.getMatchingVisibleMetas();for(let l=0,c=a.length;l<c;++l)r=a[l].controller.getMinMax(this,t),s||(e=Math.min(e,r.min)),o||(n=Math.max(n,r.max));return e=o&&e>n?n:e,n=s&&e>n?e:n,{min:q(e,q(n,e)),max:q(n,q(e,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){P(this.options.beforeUpdate,[this])}update(t,e,n){const{beginAtZero:s,grace:o,ticks:r}=this.options,a=r.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=ur(this,o,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=a<this.ticks.length;this._convertTicksToLabels(l?vn(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),r.display&&(r.autoSkip||r.source==="auto")&&(this.ticks=Va(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),l&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t=this.options.reverse,e,n;this.isHorizontal()?(e=this.left,n=this.right):(e=this.top,n=this.bottom,t=!t),this._startPixel=e,this._endPixel=n,this._reversePixels=t,this._length=n-e,this._alignToPixels=this.options.alignToPixels}afterUpdate(){P(this.options.afterUpdate,[this])}beforeSetDimensions(){P(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){P(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),P(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){P(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let n,s,o;for(n=0,s=t.length;n<s;n++)o=t[n],o.label=P(e.callback,[o.value,n,t],this)}afterTickToLabelConversion(){P(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){P(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,n=yn(this.ticks.length,t.ticks.maxTicksLimit),s=e.minRotation||0,o=e.maxRotation;let r=s,a,l,c;if(!this._isVisible()||!e.display||s>=o||n<=1||!this.isHorizontal()){this.labelRotation=s;return}const h=this._getLabelSizes(),d=h.widest.width,u=h.highest.height,f=tt(this.chart.width-d,0,this.maxWidth);a=t.offset?this.maxWidth/n:f/(n-1),d+6>a&&(a=f/(n-(t.offset?.5:1)),l=this.maxHeight-Gt(t.grid)-e.padding-wn(t.title,this.chart.options.font),c=Math.sqrt(d*d+u*u),r=ki(Math.min(Math.asin(tt((h.highest.height+6)/a,-1,1)),Math.asin(tt(l/c,-1,1))-Math.asin(tt(u/c,-1,1)))),r=Math.max(s,Math.min(o,r))),this.labelRotation=r}afterCalculateLabelRotation(){P(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){P(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:n,title:s,grid:o}}=this,r=this._isVisible(),a=this.isHorizontal();if(r){const l=wn(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Gt(o)+l):(t.height=this.maxHeight,t.width=Gt(o)+l),n.display&&this.ticks.length){const{first:c,last:h,widest:d,highest:u}=this._getLabelSizes(),f=n.padding*2,p=gt(this.labelRotation),g=Math.cos(p),m=Math.sin(p);if(a){const b=n.mirror?0:m*d.width+g*u.height;t.height=Math.min(this.maxHeight,t.height+b+f)}else{const b=n.mirror?0:g*d.width+m*u.height;t.width=Math.min(this.maxWidth,t.width+b+f)}this._calculatePadding(c,h,m,g)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,n,s){const{ticks:{align:o,padding:r},position:a}=this.options,l=this.labelRotation!==0,c=a!=="top"&&this.axis==="x";if(this.isHorizontal()){const h=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let u=0,f=0;l?c?(u=s*t.width,f=n*e.height):(u=n*t.height,f=s*e.width):o==="start"?f=e.width:o==="end"?u=t.width:o!=="inner"&&(u=t.width/2,f=e.width/2),this.paddingLeft=Math.max((u-h+r)*this.width/(this.width-h),0),this.paddingRight=Math.max((f-d+r)*this.width/(this.width-d),0)}else{let h=e.height/2,d=t.height/2;o==="start"?(h=0,d=t.height):o==="end"&&(h=e.height,d=0),this.paddingTop=h+r,this.paddingBottom=d+r}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){P(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return e==="top"||e==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let e,n;for(e=0,n=t.length;e<n;e++)I(t[e].label)&&(t.splice(e,1),n--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let n=this.ticks;e<n.length&&(n=vn(n,e)),this._labelSizes=t=this._computeLabelSizes(n,n.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,n){const{ctx:s,_longestTextCache:o}=this,r=[],a=[],l=Math.floor(e/yn(e,n));let c=0,h=0,d,u,f,p,g,m,b,x,y,v,_;for(d=0;d<e;d+=l){if(p=t[d].label,g=this._resolveTickFontOptions(d),s.font=m=g.string,b=o[m]=o[m]||{data:{},gc:[]},x=g.lineHeight,y=v=0,!I(p)&&!R(p))y=Fe(s,b.data,b.gc,y,p),v=x;else if(R(p))for(u=0,f=p.length;u<f;++u)_=p[u],!I(_)&&!R(_)&&(y=Fe(s,b.data,b.gc,y,_),v+=x);r.push(y),a.push(v),c=Math.max(y,c),h=Math.max(v,h)}Ga(o,e);const k=r.indexOf(c),M=a.indexOf(h),w=D=>({width:r[D]||0,height:a[D]||0});return{first:w(0),last:w(e-1),widest:w(k),highest:w(M),widths:r,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Ho(this._alignToPixels?kt(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const n=e[t];return n.$context||(n.$context=Qa(this.getContext(),t,n))}return this.$context||(this.$context=Za(this.chart.getContext(),this))}_tickSize(){const t=this.options.ticks,e=gt(this.labelRotation),n=Math.abs(Math.cos(e)),s=Math.abs(Math.sin(e)),o=this._getLabelSizes(),r=t.autoSkipPadding||0,a=o?o.widest.width+r:0,l=o?o.highest.height+r:0;return this.isHorizontal()?l*n>a*s?a/n:l/s:l*s<a*n?l/n:a/s}_isVisible(){const t=this.options.display;return t!=="auto"?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,n=this.chart,s=this.options,{grid:o,position:r,border:a}=s,l=o.offset,c=this.isHorizontal(),d=this.ticks.length+(l?1:0),u=Gt(o),f=[],p=a.setContext(this.getContext()),g=p.display?p.width:0,m=g/2,b=function(N){return kt(n,N,g)};let x,y,v,_,k,M,w,D,A,T,z,$;if(r==="top")x=b(this.bottom),M=this.bottom-u,D=x-m,T=b(t.top)+m,$=t.bottom;else if(r==="bottom")x=b(this.top),T=t.top,$=b(t.bottom)-m,M=x+m,D=this.top+u;else if(r==="left")x=b(this.right),k=this.right-u,w=x-m,A=b(t.left)+m,z=t.right;else if(r==="right")x=b(this.left),A=t.left,z=b(t.right)-m,k=x+m,w=this.left+u;else if(e==="x"){if(r==="center")x=b((t.top+t.bottom)/2+.5);else if(L(r)){const N=Object.keys(r)[0],J=r[N];x=b(this.chart.scales[N].getPixelForValue(J))}T=t.top,$=t.bottom,M=x+m,D=M+u}else if(e==="y"){if(r==="center")x=b((t.left+t.right)/2);else if(L(r)){const N=Object.keys(r)[0],J=r[N];x=b(this.chart.scales[N].getPixelForValue(J))}k=x-m,w=k-u,A=t.left,z=t.right}const it=C(s.ticks.maxTicksLimit,d),B=Math.max(1,Math.ceil(d/it));for(y=0;y<d;y+=B){const N=this.getContext(y),J=o.setContext(N),ge=a.setContext(N),pe=J.lineWidth,zt=J.color,me=ge.dash||[],It=ge.dashOffset,Ut=J.tickWidth,vt=J.tickColor,Yt=J.tickBorderDash||[],wt=J.tickBorderDashOffset;v=qa(this,y,l),v!==void 0&&(_=kt(n,v,pe),c?k=w=A=z=_:M=D=T=$=_,f.push({tx1:k,ty1:M,tx2:w,ty2:D,x1:A,y1:T,x2:z,y2:$,width:pe,color:zt,borderDash:me,borderDashOffset:It,tickWidth:Ut,tickColor:vt,tickBorderDash:Yt,tickBorderDashOffset:wt}))}return this._ticksLength=d,this._borderValue=x,f}_computeLabelItems(t){const e=this.axis,n=this.options,{position:s,ticks:o}=n,r=this.isHorizontal(),a=this.ticks,{align:l,crossAlign:c,padding:h,mirror:d}=o,u=Gt(n.grid),f=u+h,p=d?-h:f,g=-gt(this.labelRotation),m=[];let b,x,y,v,_,k,M,w,D,A,T,z,$="middle";if(s==="top")k=this.bottom-p,M=this._getXAxisLabelAlignment();else if(s==="bottom")k=this.top+p,M=this._getXAxisLabelAlignment();else if(s==="left"){const B=this._getYAxisLabelAlignment(u);M=B.textAlign,_=B.x}else if(s==="right"){const B=this._getYAxisLabelAlignment(u);M=B.textAlign,_=B.x}else if(e==="x"){if(s==="center")k=(t.top+t.bottom)/2+f;else if(L(s)){const B=Object.keys(s)[0],N=s[B];k=this.chart.scales[B].getPixelForValue(N)+f}M=this._getXAxisLabelAlignment()}else if(e==="y"){if(s==="center")_=(t.left+t.right)/2-f;else if(L(s)){const B=Object.keys(s)[0],N=s[B];_=this.chart.scales[B].getPixelForValue(N)}M=this._getYAxisLabelAlignment(u).textAlign}e==="y"&&(l==="start"?$="top":l==="end"&&($="bottom"));const it=this._getLabelSizes();for(b=0,x=a.length;b<x;++b){y=a[b],v=y.label;const B=o.setContext(this.getContext(b));w=this.getPixelForTick(b)+o.labelOffset,D=this._resolveTickFontOptions(b),A=D.lineHeight,T=R(v)?v.length:1;const N=T/2,J=B.color,ge=B.textStrokeColor,pe=B.textStrokeWidth;let zt=M;r?(_=w,M==="inner"&&(b===x-1?zt=this.options.reverse?"left":"right":b===0?zt=this.options.reverse?"right":"left":zt="center"),s==="top"?c==="near"||g!==0?z=-T*A+A/2:c==="center"?z=-it.highest.height/2-N*A+A:z=-it.highest.height+A/2:c==="near"||g!==0?z=A/2:c==="center"?z=it.highest.height/2-N*A:z=it.highest.height-T*A,d&&(z*=-1),g!==0&&!B.showLabelBackdrop&&(_+=A/2*Math.sin(g))):(k=w,z=(1-T)*A/2);let me;if(B.showLabelBackdrop){const It=j(B.backdropPadding),Ut=it.heights[b],vt=it.widths[b];let Yt=z-It.top,wt=0-It.left;switch($){case"middle":Yt-=Ut/2;break;case"bottom":Yt-=Ut;break}switch(M){case"center":wt-=vt/2;break;case"right":wt-=vt;break;case"inner":b===x-1?wt-=vt:b>0&&(wt-=vt/2);break}me={left:wt,top:Yt,width:vt+It.width,height:Ut+It.height,color:B.backdropColor}}m.push({label:v,font:D,textOffset:z,options:{rotation:g,color:J,strokeColor:ge,strokeWidth:pe,textAlign:zt,textBaseline:$,translation:[_,k],backdrop:me}})}return m}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-gt(this.labelRotation))return t==="top"?"left":"right";let s="center";return e.align==="start"?s="left":e.align==="end"?s="right":e.align==="inner"&&(s="inner"),s}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:n,mirror:s,padding:o}}=this.options,r=this._getLabelSizes(),a=t+o,l=r.widest.width;let c,h;return e==="left"?s?(h=this.right+o,n==="near"?c="left":n==="center"?(c="center",h+=l/2):(c="right",h+=l)):(h=this.right-a,n==="near"?c="right":n==="center"?(c="center",h-=l/2):(c="left",h=this.left)):e==="right"?s?(h=this.left+o,n==="near"?c="right":n==="center"?(c="center",h-=l/2):(c="left",h-=l)):(h=this.left+a,n==="near"?c="left":n==="center"?(c="center",h+=l/2):(c="right",h=this.right)):c="right",{textAlign:c,x:h}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;if(e==="left"||e==="right")return{top:0,left:this.left,bottom:t.height,right:this.right};if(e==="top"||e==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:t.width}}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:n,top:s,width:o,height:r}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(n,s,o,r),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const s=this.ticks.findIndex(o=>o.value===t);return s>=0?e.setContext(this.getContext(s)).lineWidth:0}drawGrid(t){const e=this.options.grid,n=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let o,r;const a=(l,c,h)=>{!h.width||!h.color||(n.save(),n.lineWidth=h.width,n.strokeStyle=h.color,n.setLineDash(h.borderDash||[]),n.lineDashOffset=h.borderDashOffset,n.beginPath(),n.moveTo(l.x,l.y),n.lineTo(c.x,c.y),n.stroke(),n.restore())};if(e.display)for(o=0,r=s.length;o<r;++o){const l=s[o];e.drawOnChartArea&&a({x:l.x1,y:l.y1},{x:l.x2,y:l.y2},l),e.drawTicks&&a({x:l.tx1,y:l.ty1},{x:l.tx2,y:l.ty2},{color:l.tickColor,width:l.tickWidth,borderDash:l.tickBorderDash,borderDashOffset:l.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:n,grid:s}}=this,o=n.setContext(this.getContext()),r=n.display?o.width:0;if(!r)return;const a=s.setContext(this.getContext(0)).lineWidth,l=this._borderValue;let c,h,d,u;this.isHorizontal()?(c=kt(t,this.left,r)-r/2,h=kt(t,this.right,a)+a/2,d=u=l):(d=kt(t,this.top,r)-r/2,u=kt(t,this.bottom,a)+a/2,c=h=l),e.save(),e.lineWidth=o.width,e.strokeStyle=o.color,e.beginPath(),e.moveTo(c,d),e.lineTo(h,u),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const n=this.ctx,s=this._computeLabelArea();s&&Ve(n,s);const o=this.getLabelItems(t);for(const r of o){const a=r.options,l=r.font,c=r.label,h=r.textOffset;Ht(n,c,0,h,l,a)}s&&je(n)}drawTitle(){const{ctx:t,options:{position:e,title:n,reverse:s}}=this;if(!n.display)return;const o=V(n.font),r=j(n.padding),a=n.align;let l=o.lineHeight/2;e==="bottom"||e==="center"||L(e)?(l+=r.bottom,R(n.text)&&(l+=o.lineHeight*(n.text.length-1))):l+=r.top;const{titleX:c,titleY:h,maxWidth:d,rotation:u}=tl(this,l,e,a);Ht(t,n.text,0,0,o,{color:n.color,maxWidth:d,rotation:u,textAlign:Ja(a,e,s),textBaseline:"middle",translation:[c,h]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,n=C(t.grid&&t.grid.z,-1),s=C(t.border&&t.border.z,0);return!this._isVisible()||this.draw!==Vt.prototype.draw?[{z:e,draw:o=>{this.draw(o)}}]:[{z:n,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+"AxisID",s=[];let o,r;for(o=0,r=e.length;o<r;++o){const a=e[o];a[n]===this.id&&(!t||a.type===t)&&s.push(a)}return s}_resolveTickFontOptions(t){const e=this.options.ticks.setContext(this.getContext(t));return V(e.font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class Me{constructor(t,e,n){this.type=t,this.scope=e,this.override=n,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let n;nl(e)&&(n=this.register(e));const s=this.items,o=t.id,r=this.scope+"."+o;if(!o)throw new Error("class does not have id: "+t);return o in s||(s[o]=t,el(t,r,n),this.override&&E.override(t.id,t.overrides)),r}get(t){return this.items[t]}unregister(t){const e=this.items,n=t.id,s=this.scope;n in e&&delete e[n],s&&n in E[s]&&(delete E[s][n],this.override&&delete At[n])}}function el(i,t,e){const n=re(Object.create(null),[e?E.get(e):{},E.get(t),i.defaults]);E.set(t,n),i.defaultRoutes&&il(t,i.defaultRoutes),i.descriptors&&E.describe(t,i.descriptors)}function il(i,t){Object.keys(t).forEach(e=>{const n=e.split("."),s=n.pop(),o=[i].concat(n).join("."),r=t[e].split("."),a=r.pop(),l=r.join(".");E.route(o,s,l,a)})}function nl(i){return"id"in i&&"defaults"in i}class sl{constructor(){this.controllers=new Me(Et,"datasets",!0),this.elements=new Me(dt,"elements"),this.plugins=new Me(Object,"plugins"),this.scales=new Me(Vt,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,n){[...e].forEach(s=>{const o=n||this._getRegistryForType(s);n||o.isForType(s)||o===this.plugins&&s.id?this._exec(t,o,s):O(s,r=>{const a=n||this._getRegistryForType(r);this._exec(t,a,r)})})}_exec(t,e,n){const s=Mi(t);P(n["before"+s],[],n),e[t](n),P(n["after"+s],[],n)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const n=this._typedRegistries[e];if(n.isForType(t))return n}return this.plugins}_get(t,e,n){const s=e.get(t);if(s===void 0)throw new Error('"'+t+'" is not a registered '+n+".");return s}}var st=new sl;class ol{constructor(){this._init=[]}notify(t,e,n,s){e==="beforeInit"&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));const o=s?this._descriptors(t).filter(s):this._descriptors(t),r=this._notify(o,t,e,n);return e==="afterDestroy"&&(this._notify(o,t,"stop"),this._notify(this._init,t,"uninstall")),r}_notify(t,e,n,s){s=s||{};for(const o of t){const r=o.plugin,a=r[n],l=[e,s,o.options];if(P(a,l,r)===!1&&s.cancelable)return!1}return!0}invalidate(){I(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const n=t&&t.config,s=C(n.options&&n.options.plugins,{}),o=rl(n);return s===!1&&!e?[]:ll(t,o,s,e)}_notifyStateChanges(t){const e=this._oldCache||[],n=this._cache,s=(o,r)=>o.filter(a=>!r.some(l=>a.plugin.id===l.plugin.id));this._notify(s(e,n),t,"stop"),this._notify(s(n,e),t,"start")}}function rl(i){const t={},e=[],n=Object.keys(st.plugins.items);for(let o=0;o<n.length;o++)e.push(st.getPlugin(n[o]));const s=i.plugins||[];for(let o=0;o<s.length;o++){const r=s[o];e.indexOf(r)===-1&&(e.push(r),t[r.id]=!0)}return{plugins:e,localIds:t}}function al(i,t){return!t&&i===!1?null:i===!0?{}:i}function ll(i,{plugins:t,localIds:e},n,s){const o=[],r=i.getContext();for(const a of t){const l=a.id,c=al(n[l],s);c!==null&&o.push({plugin:a,options:cl(i.config,{plugin:a,local:e[l]},c,r)})}return o}function cl(i,{plugin:t,local:e},n,s){const o=i.pluginScopeKeys(t),r=i.getOptionScopes(n,o);return e&&t.defaults&&r.push(t.defaults),i.createResolver(r,s,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function ui(i,t){const e=E.datasets[i]||{};return((t.datasets||{})[i]||{}).indexAxis||t.indexAxis||e.indexAxis||"x"}function hl(i,t){let e=i;return i==="_index_"?e=t:i==="_value_"&&(e=t==="x"?"y":"x"),e}function dl(i,t){return i===t?"_index_":"_value_"}function Mn(i){if(i==="x"||i==="y"||i==="r")return i}function ul(i){if(i==="top"||i==="bottom")return"x";if(i==="left"||i==="right")return"y"}function fi(i,...t){if(Mn(i))return i;for(const e of t){const n=e.axis||ul(e.position)||i.length>1&&Mn(i[0].toLowerCase());if(n)return n}throw new Error(`Cannot determine type of '${i}' axis. Please provide 'axis' or 'position' option.`)}function kn(i,t,e){if(e[t+"AxisID"]===i)return{axis:t}}function fl(i,t){if(t.data&&t.data.datasets){const e=t.data.datasets.filter(n=>n.xAxisID===i||n.yAxisID===i);if(e.length)return kn(i,"x",e[0])||kn(i,"y",e[0])}return{}}function gl(i,t){const e=At[i.type]||{scales:{}},n=t.scales||{},s=ui(i.type,t),o=Object.create(null);return Object.keys(n).forEach(r=>{const a=n[r];if(!L(a))return console.error(`Invalid scale configuration for scale: ${r}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${r}`);const l=fi(r,a,fl(r,i),E.scales[a.type]),c=dl(l,s),h=e.scales||{};o[r]=ee(Object.create(null),[{axis:l},a,h[l],h[c]])}),i.data.datasets.forEach(r=>{const a=r.type||i.type,l=r.indexAxis||ui(a,t),h=(At[a]||{}).scales||{};Object.keys(h).forEach(d=>{const u=hl(d,l),f=r[u+"AxisID"]||u;o[f]=o[f]||Object.create(null),ee(o[f],[{axis:u},n[f],h[d]])})}),Object.keys(o).forEach(r=>{const a=o[r];ee(a,[E.scales[a.type],E.scale])}),o}function Us(i){const t=i.options||(i.options={});t.plugins=C(t.plugins,{}),t.scales=gl(i,t)}function Ys(i){return i=i||{},i.datasets=i.datasets||[],i.labels=i.labels||[],i}function pl(i){return i=i||{},i.data=Ys(i.data),Us(i),i}const Sn=new Map,Ks=new Set;function ke(i,t){let e=Sn.get(i);return e||(e=t(),Sn.set(i,e),Ks.add(e)),e}const Zt=(i,t,e)=>{const n=Bt(t,e);n!==void 0&&i.add(n)};class ml{constructor(t){this._config=pl(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Ys(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Us(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return ke(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return ke(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return ke(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){const e=t.id,n=this.type;return ke(`${n}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){const n=this._scopeCache;let s=n.get(t);return(!s||e)&&(s=new Map,n.set(t,s)),s}getOptionScopes(t,e,n){const{options:s,type:o}=this,r=this._cachedScopes(t,n),a=r.get(e);if(a)return a;const l=new Set;e.forEach(h=>{t&&(l.add(t),h.forEach(d=>Zt(l,t,d))),h.forEach(d=>Zt(l,s,d)),h.forEach(d=>Zt(l,At[o]||{},d)),h.forEach(d=>Zt(l,E,d)),h.forEach(d=>Zt(l,hi,d))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),Ks.has(e)&&r.set(e,c),c}chartOptionScopes(){const{options:t,type:e}=this;return[t,At[e]||{},E.datasets[e]||{},{type:e},E,hi]}resolveNamedOptions(t,e,n,s=[""]){const o={$shared:!0},{resolver:r,subPrefixes:a}=Pn(this._resolverCache,t,s);let l=r;if(xl(r,e)){o.$shared=!1,n=xt(n)?n():n;const c=this.createResolver(t,n,a);l=Wt(r,n,c)}for(const c of e)o[c]=l[c];return o}createResolver(t,e,n=[""],s){const{resolver:o}=Pn(this._resolverCache,t,n);return L(e)?Wt(o,e,void 0,s):o}}function Pn(i,t,e){let n=i.get(t);n||(n=new Map,i.set(t,n));const s=e.join();let o=n.get(s);return o||(o={resolver:Ci(t,e),subPrefixes:e.filter(a=>!a.toLowerCase().includes("hover"))},n.set(s,o)),o}const bl=i=>L(i)&&Object.getOwnPropertyNames(i).some(t=>xt(i[t]));function xl(i,t){const{isScriptable:e,isIndexable:n}=Ps(i);for(const s of t){const o=e(s),r=n(s),a=(r||o)&&i[s];if(o&&(xt(a)||bl(a))||r&&R(a))return!0}return!1}var _l="4.4.3";const yl=["top","bottom","left","right","chartArea"];function Dn(i,t){return i==="top"||i==="bottom"||yl.indexOf(i)===-1&&t==="x"}function Cn(i,t){return function(e,n){return e[i]===n[i]?e[t]-n[t]:e[i]-n[i]}}function On(i){const t=i.chart,e=t.options.animation;t.notifyPlugins("afterRender"),P(e&&e.onComplete,[i],t)}function vl(i){const t=i.chart,e=t.options.animation;P(e&&e.onProgress,[i],t)}function Xs(i){return Li()&&typeof i=="string"?i=document.getElementById(i):i&&i.length&&(i=i[0]),i&&i.canvas&&(i=i.canvas),i}const Ae={},Tn=i=>{const t=Xs(i);return Object.values(Ae).filter(e=>e.canvas===t).pop()};function wl(i,t,e){const n=Object.keys(i);for(const s of n){const o=+s;if(o>=t){const r=i[s];delete i[s],(e>0||o>t)&&(i[o+e]=r)}}}function Ml(i,t,e,n){return!e||i.type==="mouseout"?null:n?t:i}function Se(i,t,e){return i.options.clip?i[e]:t[e]}function kl(i,t){const{xScale:e,yScale:n}=i;return e&&n?{left:Se(e,t,"left"),right:Se(e,t,"right"),top:Se(n,t,"top"),bottom:Se(n,t,"bottom")}:t}var ut;let Ii=(ut=class{static register(...t){st.add(...t),Ln()}static unregister(...t){st.remove(...t),Ln()}constructor(t,e){const n=this.config=new ml(e),s=Xs(t),o=Tn(s);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const r=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||Na(s)),this.platform.updateConfig(n);const a=this.platform.acquireContext(s,r.aspectRatio),l=a&&a.canvas,c=l&&l.height,h=l&&l.width;if(this.id=Po(),this.ctx=a,this.canvas=l,this.width=h,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new ol,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=jo(d=>this.update(d),r.resizeDelay||0),this._dataChanges=[],Ae[this.id]=this,!a||!l){console.error("Failed to create chart: can't acquire context from the given item");return}at.listen(this,"complete",On),at.listen(this,"progress",vl),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:n,height:s,_aspectRatio:o}=this;return I(t)?e&&o?o:s?n/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return st}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Zi(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Xi(this.canvas,this.ctx),this}stop(){return at.stop(this),this}resize(t,e){at.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const n=this.options,s=this.canvas,o=n.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(s,t,e,o),a=n.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,Zi(this,a,!0)&&(this.notifyPlugins("resize",{size:r}),P(n.onResize,[this,r],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const e=this.options.scales||{};O(e,(n,s)=>{n.id=s})}buildOrUpdateScales(){const t=this.options,e=t.scales,n=this.scales,s=Object.keys(n).reduce((r,a)=>(r[a]=!1,r),{});let o=[];e&&(o=o.concat(Object.keys(e).map(r=>{const a=e[r],l=fi(r,a),c=l==="r",h=l==="x";return{options:a,dposition:c?"chartArea":h?"bottom":"left",dtype:c?"radialLinear":h?"category":"linear"}}))),O(o,r=>{const a=r.options,l=a.id,c=fi(l,a),h=C(a.type,r.dtype);(a.position===void 0||Dn(a.position,c)!==Dn(r.dposition))&&(a.position=r.dposition),s[l]=!0;let d=null;if(l in n&&n[l].type===h)d=n[l];else{const u=st.getScale(h);d=new u({id:l,type:h,ctx:this.ctx,chart:this}),n[d.id]=d}d.init(a,t)}),O(s,(r,a)=>{r||delete n[a]}),O(n,r=>{mt.configure(this,r,r.options),mt.addBox(this,r)})}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,n=t.length;if(t.sort((s,o)=>s.index-o.index),n>e){for(let s=e;s<n;++s)this._destroyDatasetMeta(s);t.splice(e,n-e)}this._sortedMetasets=t.slice(0).sort(Cn("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach((n,s)=>{e.filter(o=>o===n._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let n,s;for(this._removeUnreferencedMetasets(),n=0,s=e.length;n<s;n++){const o=e[n];let r=this.getDatasetMeta(n);const a=o.type||this.config.type;if(r.type&&r.type!==a&&(this._destroyDatasetMeta(n),r=this.getDatasetMeta(n)),r.type=a,r.indexAxis=o.indexAxis||ui(a,this.options),r.order=o.order||0,r.index=n,r.label=""+o.label,r.visible=this.isDatasetVisible(n),r.controller)r.controller.updateIndex(n),r.controller.linkScales();else{const l=st.getController(a),{datasetElementType:c,dataElementType:h}=E.datasets[a];Object.assign(l,{dataElementType:st.getElement(h),datasetElementType:c&&st.getElement(c)}),r.controller=new l(this,n),t.push(r.controller)}}return this._updateMetasets(),t}_resetElements(){O(this.data.datasets,(t,e)=>{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const n=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let c=0,h=this.data.datasets.length;c<h;c++){const{controller:d}=this.getDatasetMeta(c),u=!s&&o.indexOf(d)===-1;d.buildOrUpdateElements(u),r=Math.max(+d.getMaxOverflow(),r)}r=this._minPadding=n.layout.autoPadding?r:0,this._updateLayout(r),s||O(o,c=>{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Cn("z","_idx"));const{_active:a,_lastEvent:l}=this;l?this._eventHandler(l,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){O(this.scales,t=>{mt.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),n=new Set(t.events);(!Hi(e,n)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:n,start:s,count:o}of e){const r=n==="_removeElements"?-o:o;wl(t,s,r)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,n=o=>new Set(t.filter(r=>r[0]===o).map((r,a)=>a+","+r.splice(1).join(","))),s=n(0);for(let o=1;o<e;o++)if(!Hi(s,n(o)))return;return Array.from(s).map(o=>o.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;mt.update(this,this.width,this.height,t);const e=this.chartArea,n=e.width<=0||e.height<=0;this._layers=[],O(this.boxes,s=>{n&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,o)=>{s._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let e=0,n=this.data.datasets.length;e<n;++e)this.getDatasetMeta(e).controller.configure();for(let e=0,n=this.data.datasets.length;e<n;++e)this._updateDataset(e,xt(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const n=this.getDatasetMeta(t),s={meta:n,index:t,mode:e,cancelable:!0};this.notifyPlugins("beforeDatasetUpdate",s)!==!1&&(n.controller._update(e),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){this.notifyPlugins("beforeRender",{cancelable:!0})!==!1&&(at.has(this)?this.attached&&!at.running(this)&&at.start(this):(this.draw(),On({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:n,height:s}=this._resizeBeforeDraw;this._resize(n,s),this._resizeBeforeDraw=null}if(this.clear(),this.width<=0||this.height<=0||this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,n=[];let s,o;for(s=0,o=e.length;s<o;++s){const r=e[s];(!t||r.visible)&&n.push(r)}return n}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,n=t._clip,s=!n.disabled,o=kl(t,this.chartArea),r={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",r)!==!1&&(s&&Ve(e,{left:n.left===!1?0:o.left-n.left,right:n.right===!1?this.width:o.right+n.right,top:n.top===!1?0:o.top-n.top,bottom:n.bottom===!1?this.height:o.bottom+n.bottom}),t.controller.draw(),s&&je(e),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}isPointInArea(t){return ht(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,n,s){const o=ya.modes[e];return typeof o=="function"?o(this,t,n,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],n=this._metasets;let s=n.filter(o=>o&&o._dataset===e).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},n.push(s)),s}getContext(){return this.$context||(this.$context=yt(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const n=this.getDatasetMeta(t);return typeof n.hidden=="boolean"?!n.hidden:!e.hidden}setDatasetVisibility(t,e){const n=this.getDatasetMeta(t);n.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,n){const s=n?"show":"hide",o=this.getDatasetMeta(t),r=o.controller._resolveAnimations(void 0,s);ae(e)?(o.data[e].hidden=!n,this.update()):(this.setDatasetVisibility(t,n),r.update(o,{visible:n}),this.update(a=>a.datasetIndex===t?s:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),at.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Xi(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete Ae[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,n=(o,r)=>{e.addEventListener(this,o,r),t[o]=r},s=(o,r,a)=>{o.offsetX=r,o.offsetY=a,this._eventHandler(o)};O(this.options.events,o=>n(o,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,n=(l,c)=>{e.addEventListener(this,l,c),t[l]=c},s=(l,c)=>{t[l]&&(e.removeEventListener(this,l,c),delete t[l])},o=(l,c)=>{this.canvas&&this.resize(l,c)};let r;const a=()=>{s("attach",a),this.attached=!0,this.resize(),n("resize",o),n("detach",r)};r=()=>{this.attached=!1,s("resize",o),this._stop(),this._resize(0,0),n("attach",a)},e.isAttached(this.canvas)?a():r()}unbindEvents(){O(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},O(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,n){const s=n?"set":"remove";let o,r,a,l;for(e==="dataset"&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+s+"DatasetHoverStyle"]()),a=0,l=t.length;a<l;++a){r=t[a];const c=r&&this.getDatasetMeta(r.datasetIndex).controller;c&&c[s+"HoverStyle"](r.element,r.datasetIndex,r.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],n=t.map(({datasetIndex:o,index:r})=>{const a=this.getDatasetMeta(o);if(!a)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:a.data[r],index:r}});!ze(n,e)&&(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,e))}notifyPlugins(t,e,n){return this._plugins.notify(this,t,e,n)}isPluginEnabled(t){return this._plugins._cache.filter(e=>e.plugin.id===t).length===1}_updateHoverStyles(t,e,n){const s=this.options.hover,o=(l,c)=>l.filter(h=>!c.some(d=>h.datasetIndex===d.datasetIndex&&h.index===d.index)),r=o(e,t),a=n?t:o(t,e);r.length&&this.updateHoverStyle(r,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const n={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=r=>(r.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",n,s)===!1)return;const o=this._handleEvent(t,e,n.inChartArea);return n.cancelable=!1,this.notifyPlugins("afterEvent",n,s),(o||n.changed)&&this.render(),this}_handleEvent(t,e,n){const{_active:s=[],options:o}=this,r=e,a=this._getActiveElements(t,s,n,r),l=Ao(t),c=Ml(t,this._lastEvent,n,l);n&&(this._lastEvent=null,P(o.onHover,[t,a,this],this),l&&P(o.onClick,[t,a,this],this));const h=!ze(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=c,h}_getActiveElements(t,e,n,s){if(t.type==="mouseout")return[];if(!n)return e;const o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,s)}},S(ut,"defaults",E),S(ut,"instances",Ae),S(ut,"overrides",At),S(ut,"registry",st),S(ut,"version",_l),S(ut,"getChart",Tn),ut);function Ln(){return O(Ii.instances,i=>i._plugins.invalidate())}function qs(i,t,e=t){i.lineCap=C(e.borderCapStyle,t.borderCapStyle),i.setLineDash(C(e.borderDash,t.borderDash)),i.lineDashOffset=C(e.borderDashOffset,t.borderDashOffset),i.lineJoin=C(e.borderJoinStyle,t.borderJoinStyle),i.lineWidth=C(e.borderWidth,t.borderWidth),i.strokeStyle=C(e.borderColor,t.borderColor)}function Sl(i,t,e){i.lineTo(e.x,e.y)}function Pl(i){return i.stepped?nr:i.tension||i.cubicInterpolationMode==="monotone"?sr:Sl}function Gs(i,t,e={}){const n=i.length,{start:s=0,end:o=n-1}=e,{start:r,end:a}=t,l=Math.max(s,r),c=Math.min(o,a),h=s<r&&o<r||s>a&&o>a;return{count:n,start:l,loop:t.loop,ilen:c<l&&!h?n+c-l:c-l}}function Dl(i,t,e,n){const{points:s,options:o}=t,{count:r,start:a,loop:l,ilen:c}=Gs(s,e,n),h=Pl(o);let{move:d=!0,reverse:u}=n||{},f,p,g;for(f=0;f<=c;++f)p=s[(a+(u?c-f:f))%r],!p.skip&&(d?(i.moveTo(p.x,p.y),d=!1):h(i,g,p,u,o.stepped),g=p);return l&&(p=s[(a+(u?c:0))%r],h(i,g,p,u,o.stepped)),!!l}function Cl(i,t,e,n){const s=t.points,{count:o,start:r,ilen:a}=Gs(s,e,n),{move:l=!0,reverse:c}=n||{};let h=0,d=0,u,f,p,g,m,b;const x=v=>(r+(c?a-v:v))%o,y=()=>{g!==m&&(i.lineTo(h,m),i.lineTo(h,g),i.lineTo(h,b))};for(l&&(f=s[x(0)],i.moveTo(f.x,f.y)),u=0;u<=a;++u){if(f=s[x(u)],f.skip)continue;const v=f.x,_=f.y,k=v|0;k===p?(_<g?g=_:_>m&&(m=_),h=(d*h+v)/++d):(y(),i.lineTo(v,_),p=k,d=0,g=m=_),b=_}y()}function gi(i){const t=i.options,e=t.borderDash&&t.borderDash.length;return!i._decimated&&!i._loop&&!t.tension&&t.cubicInterpolationMode!=="monotone"&&!t.stepped&&!e?Cl:Dl}function Ol(i){return i.stepped?Fr:i.tension||i.cubicInterpolationMode==="monotone"?Er:Dt}function Tl(i,t,e,n){let s=t._path;s||(s=t._path=new Path2D,t.path(s,e,n)&&s.closePath()),qs(i,t.options),i.stroke(s)}function Ll(i,t,e,n){const{segments:s,options:o}=t,r=gi(t);for(const a of s)qs(i,o,a.style),i.beginPath(),r(i,t,a,{start:e,end:e+n-1})&&i.closePath(),i.stroke()}const Al=typeof Path2D=="function";function zl(i,t,e,n){Al&&!t.options.segment?Tl(i,t,e,n):Ll(i,t,e,n)}class Ot extends dt{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const n=this.options;if((n.tension||n.cubicInterpolationMode==="monotone")&&!n.stepped&&!this._pointsUpdated){const s=n.spanGaps?this._loop:this._fullLoop;Cr(this._points,n,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=jr(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,n=t.length;return n&&e[t[n-1].end]}interpolate(t,e){const n=this.options,s=t[e],o=this.points,r=Rs(this,{property:e,start:s,end:s});if(!r.length)return;const a=[],l=Ol(n);let c,h;for(c=0,h=r.length;c<h;++c){const{start:d,end:u}=r[c],f=o[d],p=o[u];if(f===p){a.push(f);continue}const g=Math.abs((s-f[e])/(p[e]-f[e])),m=l(f,p,g,n.stepped);m[e]=t[e],a.push(m)}return a.length===1?a[0]:a}pathSegment(t,e,n){return gi(this)(t,this,e,n)}path(t,e,n){const s=this.segments,o=gi(this);let r=this._loop;e=e||0,n=n||this.points.length-e;for(const a of s)r&=o(t,this,a,{start:e,end:e+n-1});return!!r}draw(t,e,n,s){const o=this.options||{};(this.points||[]).length&&o.borderWidth&&(t.save(),zl(t,this,n,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}S(Ot,"id","line"),S(Ot,"defaults",{borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0}),S(Ot,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"}),S(Ot,"descriptors",{_scriptable:!0,_indexable:t=>t!=="borderDash"&&t!=="fill"});function An(i,t,e,n){const s=i.options,{[e]:o}=i.getProps([e],n);return Math.abs(t-o)<s.radius+s.hitRadius}class ei extends dt{constructor(e){super();S(this,"parsed");S(this,"skip");S(this,"stop");this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,n,s){const o=this.options,{x:r,y:a}=this.getProps(["x","y"],s);return Math.pow(e-r,2)+Math.pow(n-a,2)<Math.pow(o.hitRadius+o.radius,2)}inXRange(e,n){return An(this,e,"x",n)}inYRange(e,n){return An(this,e,"y",n)}getCenterPoint(e){const{x:n,y:s}=this.getProps(["x","y"],e);return{x:n,y:s}}size(e){e=e||this.options||{};let n=e.radius||0;n=Math.max(n,n&&e.hoverRadius||0);const s=n&&e.borderWidth||0;return(n+s)*2}draw(e,n){const s=this.options;this.skip||s.radius<.1||!ht(this,n,this.size(s)/2)||(e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.fillStyle=s.backgroundColor,di(e,s,this.x,this.y))}getRange(){const e=this.options||{};return e.radius+e.hitRadius}}S(ei,"id","point"),S(ei,"defaults",{borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0}),S(ei,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});function Zs(i,t){const{x:e,y:n,base:s,width:o,height:r}=i.getProps(["x","y","base","width","height"],t);let a,l,c,h,d;return i.horizontal?(d=r/2,a=Math.min(e,s),l=Math.max(e,s),c=n-d,h=n+d):(d=o/2,a=e-d,l=e+d,c=Math.min(n,s),h=Math.max(n,s)),{left:a,top:c,right:l,bottom:h}}function bt(i,t,e,n){return i?0:tt(t,e,n)}function Il(i,t,e){const n=i.options.borderWidth,s=i.borderSkipped,o=Ss(n);return{t:bt(s.top,o.top,0,e),r:bt(s.right,o.right,0,t),b:bt(s.bottom,o.bottom,0,e),l:bt(s.left,o.left,0,t)}}function Rl(i,t,e){const{enableBorderRadius:n}=i.getProps(["enableBorderRadius"]),s=i.options.borderRadius,o=Tt(s),r=Math.min(t,e),a=i.borderSkipped,l=n||L(s);return{topLeft:bt(!l||a.top||a.left,o.topLeft,0,r),topRight:bt(!l||a.top||a.right,o.topRight,0,r),bottomLeft:bt(!l||a.bottom||a.left,o.bottomLeft,0,r),bottomRight:bt(!l||a.bottom||a.right,o.bottomRight,0,r)}}function Fl(i){const t=Zs(i),e=t.right-t.left,n=t.bottom-t.top,s=Il(i,e/2,n/2),o=Rl(i,e/2,n/2);return{outer:{x:t.left,y:t.top,w:e,h:n,radius:o},inner:{x:t.left+s.l,y:t.top+s.t,w:e-s.l-s.r,h:n-s.t-s.b,radius:{topLeft:Math.max(0,o.topLeft-Math.max(s.t,s.l)),topRight:Math.max(0,o.topRight-Math.max(s.t,s.r)),bottomLeft:Math.max(0,o.bottomLeft-Math.max(s.b,s.l)),bottomRight:Math.max(0,o.bottomRight-Math.max(s.b,s.r))}}}}function ii(i,t,e,n){const s=t===null,o=e===null,a=i&&!(s&&o)&&Zs(i,n);return a&&(s||pt(t,a.left,a.right))&&(o||pt(e,a.top,a.bottom))}function El(i){return i.topLeft||i.topRight||i.bottomLeft||i.bottomRight}function Bl(i,t){i.rect(t.x,t.y,t.w,t.h)}function ni(i,t,e={}){const n=i.x!==e.x?-t:0,s=i.y!==e.y?-t:0,o=(i.x+i.w!==e.x+e.w?t:0)-n,r=(i.y+i.h!==e.y+e.h?t:0)-s;return{x:i.x+n,y:i.y+s,w:i.w+o,h:i.h+r,radius:i.radius}}class si extends dt{constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:n,backgroundColor:s}}=this,{inner:o,outer:r}=Fl(this),a=El(r.radius)?ce:Bl;t.save(),(r.w!==o.w||r.h!==o.h)&&(t.beginPath(),a(t,ni(r,e,o)),t.clip(),a(t,ni(o,-e,r)),t.fillStyle=n,t.fill("evenodd")),t.beginPath(),a(t,ni(o,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,n){return ii(this,t,e,n)}inXRange(t,e){return ii(this,t,null,e)}inYRange(t,e){return ii(this,null,t,e)}getCenterPoint(t){const{x:e,y:n,base:s,horizontal:o}=this.getProps(["x","y","base","horizontal"],t);return{x:o?(e+s)/2:e,y:o?n:(n+s)/2}}getRange(t){return t==="x"?this.width/2:this.height/2}}S(si,"id","bar"),S(si,"defaults",{borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0}),S(si,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});function Hl(i,t,e){const n=i.segments,s=i.points,o=t.points,r=[];for(const a of n){let{start:l,end:c}=a;c=Ri(l,c,s);const h=pi(e,s[l],s[c],a.loop);if(!t.segments){r.push({source:a,target:h,start:s[l],end:s[c]});continue}const d=Rs(t,h);for(const u of d){const f=pi(e,o[u.start],o[u.end],u.loop),p=Is(a,s,f);for(const g of p)r.push({source:g,target:u,start:{[e]:zn(h,f,"start",Math.max)},end:{[e]:zn(h,f,"end",Math.min)}})}}return r}function pi(i,t,e,n){if(n)return;let s=t[i],o=e[i];return i==="angle"&&(s=G(s),o=G(o)),{property:i,start:s,end:o}}function Wl(i,t){const{x:e=null,y:n=null}=i||{},s=t.points,o=[];return t.segments.forEach(({start:r,end:a})=>{a=Ri(r,a,s);const l=s[r],c=s[a];n!==null?(o.push({x:l.x,y:n}),o.push({x:c.x,y:n})):e!==null&&(o.push({x:e,y:l.y}),o.push({x:e,y:c.y}))}),o}function Ri(i,t,e){for(;t>i;t--){const n=e[t];if(!isNaN(n.x)&&!isNaN(n.y))break}return t}function zn(i,t,e,n){return i&&t?n(i[e],t[e]):i?i[e]:t?t[e]:0}function Qs(i,t){let e=[],n=!1;return R(i)?(n=!0,e=i):e=Wl(i,t),e.length?new Ot({points:e,options:{tension:0},_loop:n,_fullLoop:n}):null}function In(i){return i&&i.fill!==!1}function Nl(i,t,e){let s=i[t].fill;const o=[t];let r;if(!e)return s;for(;s!==!1&&o.indexOf(s)===-1;){if(!F(s))return s;if(r=i[s],!r)return!1;if(r.visible)return s;o.push(s),s=r.fill}return!1}function Vl(i,t,e){const n=Yl(i);if(L(n))return isNaN(n.value)?!1:n;let s=parseFloat(n);return F(s)&&Math.floor(s)===s?jl(n[0],t,s,e):["origin","start","end","stack","shape"].indexOf(n)>=0&&n}function jl(i,t,e,n){return(i==="-"||i==="+")&&(e=t+e),e===t||e<0||e>=n?!1:e}function $l(i,t){let e=null;return i==="start"?e=t.bottom:i==="end"?e=t.top:L(i)?e=t.getPixelForValue(i.value):t.getBasePixel&&(e=t.getBasePixel()),e}function Ul(i,t,e){let n;return i==="start"?n=e:i==="end"?n=t.options.reverse?t.min:t.max:L(i)?n=i.value:n=t.getBaseValue(),n}function Yl(i){const t=i.options,e=t.fill;let n=C(e&&e.target,e);return n===void 0&&(n=!!t.backgroundColor),n===!1||n===null?!1:n===!0?"origin":n}function Kl(i){const{scale:t,index:e,line:n}=i,s=[],o=n.segments,r=n.points,a=Xl(t,e);a.push(Qs({x:null,y:t.bottom},n));for(let l=0;l<o.length;l++){const c=o[l];for(let h=c.start;h<=c.end;h++)ql(s,r[h],a)}return new Ot({points:s,options:{}})}function Xl(i,t){const e=[],n=i.getMatchingVisibleMetas("line");for(let s=0;s<n.length;s++){const o=n[s];if(o.index===t)break;o.hidden||e.unshift(o.dataset)}return e}function ql(i,t,e){const n=[];for(let s=0;s<e.length;s++){const o=e[s],{first:r,last:a,point:l}=Gl(o,t,"x");if(!(!l||r&&a)){if(r)n.unshift(l);else if(i.push(l),!a)break}}i.push(...n)}function Gl(i,t,e){const n=i.interpolate(t,e);if(!n)return{};const s=n[e],o=i.segments,r=i.points;let a=!1,l=!1;for(let c=0;c<o.length;c++){const h=o[c],d=r[h.start][e],u=r[h.end][e];if(pt(s,d,u)){a=s===d,l=s===u;break}}return{first:a,last:l,point:n}}class Js{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,n){const{x:s,y:o,radius:r}=this;return e=e||{start:0,end:Q},t.arc(s,o,r,e.end,e.start,!0),!n.bounds}interpolate(t){const{x:e,y:n,radius:s}=this,o=t.angle;return{x:e+Math.cos(o)*s,y:n+Math.sin(o)*s,angle:o}}}function Zl(i){const{chart:t,fill:e,line:n}=i;if(F(e))return Ql(t,e);if(e==="stack")return Kl(i);if(e==="shape")return!0;const s=Jl(i);return s instanceof Js?s:Qs(s,n)}function Ql(i,t){const e=i.getDatasetMeta(t);return e&&i.isDatasetVisible(t)?e.dataset:null}function Jl(i){return(i.scale||{}).getPointPositionForValue?ec(i):tc(i)}function tc(i){const{scale:t={},fill:e}=i,n=$l(e,t);if(F(n)){const s=t.isHorizontal();return{x:s?n:null,y:s?null:n}}return null}function ec(i){const{scale:t,fill:e}=i,n=t.options,s=t.getLabels().length,o=n.reverse?t.max:t.min,r=Ul(e,t,o),a=[];if(n.grid.circular){const l=t.getPointPositionForValue(0,o);return new Js({x:l.x,y:l.y,radius:t.getDistanceFromCenterForValue(r)})}for(let l=0;l<s;++l)a.push(t.getPointPositionForValue(l,r));return a}function oi(i,t,e){const n=Zl(t),{line:s,scale:o,axis:r}=t,a=s.options,l=a.fill,c=a.backgroundColor,{above:h=c,below:d=c}=l||{};n&&s.points.length&&(Ve(i,e),ic(i,{line:s,target:n,above:h,below:d,area:e,scale:o,axis:r}),je(i))}function ic(i,t){const{line:e,target:n,above:s,below:o,area:r,scale:a}=t,l=e._loop?"angle":t.axis;i.save(),l==="x"&&o!==s&&(Rn(i,n,r.top),Fn(i,{line:e,target:n,color:s,scale:a,property:l}),i.restore(),i.save(),Rn(i,n,r.bottom)),Fn(i,{line:e,target:n,color:o,scale:a,property:l}),i.restore()}function Rn(i,t,e){const{segments:n,points:s}=t;let o=!0,r=!1;i.beginPath();for(const a of n){const{start:l,end:c}=a,h=s[l],d=s[Ri(l,c,s)];o?(i.moveTo(h.x,h.y),o=!1):(i.lineTo(h.x,e),i.lineTo(h.x,h.y)),r=!!t.pathSegment(i,a,{move:r}),r?i.closePath():i.lineTo(d.x,e)}i.lineTo(t.first().x,e),i.closePath(),i.clip()}function Fn(i,t){const{line:e,target:n,property:s,color:o,scale:r}=t,a=Hl(e,n,s);for(const{source:l,target:c,start:h,end:d}of a){const{style:{backgroundColor:u=o}={}}=l,f=n!==!0;i.save(),i.fillStyle=u,nc(i,r,f&&pi(s,h,d)),i.beginPath();const p=!!e.pathSegment(i,l);let g;if(f){p?i.closePath():En(i,n,d,s);const m=!!n.pathSegment(i,c,{move:p,reverse:!0});g=p&&m,g||En(i,n,h,s)}i.closePath(),i.fill(g?"evenodd":"nonzero"),i.restore()}}function nc(i,t,e){const{top:n,bottom:s}=t.chart.chartArea,{property:o,start:r,end:a}=e||{};o==="x"&&(i.beginPath(),i.rect(r,n,a-r,s-n),i.clip())}function En(i,t,e,n){const s=t.interpolate(e,n);s&&i.lineTo(s.x,s.y)}var Th={id:"filler",afterDatasetsUpdate(i,t,e){const n=(i.data.datasets||[]).length,s=[];let o,r,a,l;for(r=0;r<n;++r)o=i.getDatasetMeta(r),a=o.dataset,l=null,a&&a.options&&a instanceof Ot&&(l={visible:i.isDatasetVisible(r),index:r,fill:Vl(a,r,n),chart:i,axis:o.controller.options.indexAxis,scale:o.vScale,line:a}),o.$filler=l,s.push(l);for(r=0;r<n;++r)l=s[r],!(!l||l.fill===!1)&&(l.fill=Nl(s,r,e.propagate))},beforeDraw(i,t,e){const n=e.drawTime==="beforeDraw",s=i.getSortedVisibleDatasetMetas(),o=i.chartArea;for(let r=s.length-1;r>=0;--r){const a=s[r].$filler;a&&(a.line.updateControlPoints(o,a.axis),n&&a.fill&&oi(i.ctx,a,o))}},beforeDatasetsDraw(i,t,e){if(e.drawTime!=="beforeDatasetsDraw")return;const n=i.getSortedVisibleDatasetMetas();for(let s=n.length-1;s>=0;--s){const o=n[s].$filler;In(o)&&oi(i.ctx,o,i.chartArea)}},beforeDatasetDraw(i,t,e){const n=t.meta.$filler;!In(n)||e.drawTime!=="beforeDatasetDraw"||oi(i.ctx,n,i.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Bn=(i,t)=>{let{boxHeight:e=t,boxWidth:n=t}=i;return i.usePointStyle&&(e=Math.min(e,t),n=i.pointStyleWidth||Math.min(n,t)),{boxWidth:n,boxHeight:e,itemHeight:Math.max(t,e)}},sc=(i,t)=>i!==null&&t!==null&&i.datasetIndex===t.datasetIndex&&i.index===t.index;class Hn extends dt{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,n){this.maxWidth=t,this.maxHeight=e,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=P(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(n=>t.filter(n,this.chart.data))),t.sort&&(e=e.sort((n,s)=>t.sort(n,s,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display){this.width=this.height=0;return}const n=t.labels,s=V(n.font),o=s.size,r=this._computeTitleHeight(),{boxWidth:a,itemHeight:l}=Bn(n,o);let c,h;e.font=s.string,this.isHorizontal()?(c=this.maxWidth,h=this._fitRows(r,o,a,l)+10):(h=this.maxHeight,c=this._fitCols(r,s,a,l)+10),this.width=Math.min(c,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,n,s){const{ctx:o,maxWidth:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],h=s+a;let d=t;o.textAlign="left",o.textBaseline="middle";let u=-1,f=-h;return this.legendItems.forEach((p,g)=>{const m=n+e/2+o.measureText(p.text).width;(g===0||c[c.length-1]+m+2*a>r)&&(d+=h,c[c.length-(g>0?0:1)]=0,f+=h,u++),l[g]={left:0,top:f,row:u,width:m,height:s},c[c.length-1]+=m+a}),d}_fitCols(t,e,n,s){const{ctx:o,maxHeight:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],h=r-t;let d=a,u=0,f=0,p=0,g=0;return this.legendItems.forEach((m,b)=>{const{itemWidth:x,itemHeight:y}=oc(n,e,o,m,s);b>0&&f+y+2*a>h&&(d+=u+a,c.push({width:u,height:f}),p+=u+a,g++,u=f=0),l[b]={left:p,top:f,col:g,width:x,height:y},u=Math.max(u,x),f+=y+a}),d+=u,c.push({width:u,height:f}),d}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:n,labels:{padding:s},rtl:o}}=this,r=Ft(o,this.left,this.width);if(this.isHorizontal()){let a=0,l=X(n,this.left+s,this.right-this.lineWidths[a]);for(const c of e)a!==c.row&&(a=c.row,l=X(n,this.left+s,this.right-this.lineWidths[a])),c.top+=this.top+t+s,c.left=r.leftForLtr(r.x(l),c.width),l+=c.width+s}else{let a=0,l=X(n,this.top+t+s,this.bottom-this.columnSizes[a].height);for(const c of e)c.col!==a&&(a=c.col,l=X(n,this.top+t+s,this.bottom-this.columnSizes[a].height)),c.top=l,c.left+=this.left+s,c.left=r.leftForLtr(r.x(c.left),c.width),l+=c.height+s}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const t=this.ctx;Ve(t,this),this._draw(),je(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:n,ctx:s}=this,{align:o,labels:r}=t,a=E.color,l=Ft(t.rtl,this.left,this.width),c=V(r.font),{padding:h}=r,d=c.size,u=d/2;let f;this.drawTitle(),s.textAlign=l.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=c.string;const{boxWidth:p,boxHeight:g,itemHeight:m}=Bn(r,d),b=function(k,M,w){if(isNaN(p)||p<=0||isNaN(g)||g<0)return;s.save();const D=C(w.lineWidth,1);if(s.fillStyle=C(w.fillStyle,a),s.lineCap=C(w.lineCap,"butt"),s.lineDashOffset=C(w.lineDashOffset,0),s.lineJoin=C(w.lineJoin,"miter"),s.lineWidth=D,s.strokeStyle=C(w.strokeStyle,a),s.setLineDash(C(w.lineDash,[])),r.usePointStyle){const A={radius:g*Math.SQRT2/2,pointStyle:w.pointStyle,rotation:w.rotation,borderWidth:D},T=l.xPlus(k,p/2),z=M+u;Ms(s,A,T,z,r.pointStyleWidth&&p)}else{const A=M+Math.max((d-g)/2,0),T=l.leftForLtr(k,p),z=Tt(w.borderRadius);s.beginPath(),Object.values(z).some($=>$!==0)?ce(s,{x:T,y:A,w:p,h:g,radius:z}):s.rect(T,A,p,g),s.fill(),D!==0&&s.stroke()}s.restore()},x=function(k,M,w){Ht(s,w.text,k,M+m/2,c,{strikethrough:w.hidden,textAlign:l.textAlign(w.textAlign)})},y=this.isHorizontal(),v=this._computeTitleHeight();y?f={x:X(o,this.left+h,this.right-n[0]),y:this.top+h+v,line:0}:f={x:this.left+h,y:X(o,this.top+v+h,this.bottom-e[0].height),line:0},Ls(this.ctx,t.textDirection);const _=m+h;this.legendItems.forEach((k,M)=>{s.strokeStyle=k.fontColor,s.fillStyle=k.fontColor;const w=s.measureText(k.text).width,D=l.textAlign(k.textAlign||(k.textAlign=r.textAlign)),A=p+u+w;let T=f.x,z=f.y;l.setWidth(this.width),y?M>0&&T+A+h>this.right&&(z=f.y+=_,f.line++,T=f.x=X(o,this.left+h,this.right-n[f.line])):M>0&&z+_>this.bottom&&(T=f.x=T+e[f.line].width+h,f.line++,z=f.y=X(o,this.top+v+h,this.bottom-e[f.line].height));const $=l.x(T);if(b($,z,k),T=$o(D,T+p+u,y?T+A:this.right,t.rtl),x(l.x(T),z,k),y)f.x+=A+h;else if(typeof k.text!="string"){const it=c.lineHeight;f.y+=to(k,it)+h}else f.y+=_}),As(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,n=V(e.font),s=j(e.padding);if(!e.display)return;const o=Ft(t.rtl,this.left,this.width),r=this.ctx,a=e.position,l=n.size/2,c=s.top+l;let h,d=this.left,u=this.width;if(this.isHorizontal())u=Math.max(...this.lineWidths),h=this.top+c,d=X(t.align,d,this.right-u);else{const p=this.columnSizes.reduce((g,m)=>Math.max(g,m.height),0);h=c+X(t.align,this.top,this.bottom-p-t.labels.padding-this._computeTitleHeight())}const f=X(a,d,d+u);r.textAlign=o.textAlign(vs(a)),r.textBaseline="middle",r.strokeStyle=e.color,r.fillStyle=e.color,r.font=n.string,Ht(r,e.text,f,h,n)}_computeTitleHeight(){const t=this.options.title,e=V(t.font),n=j(t.padding);return t.display?e.lineHeight+n.height:0}_getLegendItemAt(t,e){let n,s,o;if(pt(t,this.left,this.right)&&pt(e,this.top,this.bottom)){for(o=this.legendHitBoxes,n=0;n<o.length;++n)if(s=o[n],pt(t,s.left,s.left+s.width)&&pt(e,s.top,s.top+s.height))return this.legendItems[n]}return null}handleEvent(t){const e=this.options;if(!lc(t.type,e))return;const n=this._getLegendItemAt(t.x,t.y);if(t.type==="mousemove"||t.type==="mouseout"){const s=this._hoveredItem,o=sc(s,n);s&&!o&&P(e.onLeave,[t,s,this],this),this._hoveredItem=n,n&&!o&&P(e.onHover,[t,n,this],this)}else n&&P(e.onClick,[t,n,this],this)}}function oc(i,t,e,n,s){const o=rc(n,i,t,e),r=ac(s,n,t.lineHeight);return{itemWidth:o,itemHeight:r}}function rc(i,t,e,n){let s=i.text;return s&&typeof s!="string"&&(s=s.reduce((o,r)=>o.length>r.length?o:r)),t+e.size/2+n.measureText(s).width}function ac(i,t,e){let n=i;return typeof t.text!="string"&&(n=to(t,e)),n}function to(i,t){const e=i.text?i.text.length:0;return t*e}function lc(i,t){return!!((i==="mousemove"||i==="mouseout")&&(t.onHover||t.onLeave)||t.onClick&&(i==="click"||i==="mouseup"))}var Lh={id:"legend",_element:Hn,start(i,t,e){const n=i.legend=new Hn({ctx:i.ctx,options:e,chart:i});mt.configure(i,n,e),mt.addBox(i,n)},stop(i){mt.removeBox(i,i.legend),delete i.legend},beforeUpdate(i,t,e){const n=i.legend;mt.configure(i,n,e),n.options=e},afterUpdate(i){const t=i.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(i,t){t.replay||i.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(i,t,e){const n=t.datasetIndex,s=e.chart;s.isDatasetVisible(n)?(s.hide(n),t.hidden=!0):(s.show(n),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:i=>i.chart.options.color,boxWidth:40,padding:10,generateLabels(i){const t=i.data.datasets,{labels:{usePointStyle:e,pointStyle:n,textAlign:s,color:o,useBorderRadius:r,borderRadius:a}}=i.legend.options;return i._getSortedDatasetMetas().map(l=>{const c=l.controller.getStyle(e?0:void 0),h=j(c.borderWidth);return{text:t[l.index].label,fillStyle:c.backgroundColor,fontColor:o,hidden:!l.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:c.borderColor,pointStyle:n||c.pointStyle,rotation:c.rotation,textAlign:s||c.textAlign,borderRadius:r&&(a||c.borderRadius),datasetIndex:l.index}},this)}},title:{color:i=>i.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:i=>!i.startsWith("on"),labels:{_scriptable:i=>!["generateLabels","filter","sort"].includes(i)}}};const Jt={average(i){if(!i.length)return!1;let t,e,n=new Set,s=0,o=0;for(t=0,e=i.length;t<e;++t){const a=i[t].element;if(a&&a.hasValue()){const l=a.tooltipPosition();n.add(l.x),s+=l.y,++o}}return{x:[...n].reduce((a,l)=>a+l)/n.size,y:s/o}},nearest(i,t){if(!i.length)return!1;let e=t.x,n=t.y,s=Number.POSITIVE_INFINITY,o,r,a;for(o=0,r=i.length;o<r;++o){const l=i[o].element;if(l&&l.hasValue()){const c=l.getCenterPoint(),h=ci(t,c);h<s&&(s=h,a=l)}}if(a){const l=a.tooltipPosition();e=l.x,n=l.y}return{x:e,y:n}}};function nt(i,t){return t&&(R(t)?Array.prototype.push.apply(i,t):i.push(t)),i}function lt(i){return(typeof i=="string"||i instanceof String)&&i.indexOf(`
-`)>-1?i.split(`
-`):i}function cc(i,t){const{element:e,datasetIndex:n,index:s}=t,o=i.getDatasetMeta(n).controller,{label:r,value:a}=o.getLabelAndValue(s);return{chart:i,label:r,parsed:o.getParsed(s),raw:i.data.datasets[n].data[s],formattedValue:a,dataset:o.getDataset(),dataIndex:s,datasetIndex:n,element:e}}function Wn(i,t){const e=i.chart.ctx,{body:n,footer:s,title:o}=i,{boxWidth:r,boxHeight:a}=t,l=V(t.bodyFont),c=V(t.titleFont),h=V(t.footerFont),d=o.length,u=s.length,f=n.length,p=j(t.padding);let g=p.height,m=0,b=n.reduce((v,_)=>v+_.before.length+_.lines.length+_.after.length,0);if(b+=i.beforeBody.length+i.afterBody.length,d&&(g+=d*c.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),b){const v=t.displayColors?Math.max(a,l.lineHeight):l.lineHeight;g+=f*v+(b-f)*l.lineHeight+(b-1)*t.bodySpacing}u&&(g+=t.footerMarginTop+u*h.lineHeight+(u-1)*t.footerSpacing);let x=0;const y=function(v){m=Math.max(m,e.measureText(v).width+x)};return e.save(),e.font=c.string,O(i.title,y),e.font=l.string,O(i.beforeBody.concat(i.afterBody),y),x=t.displayColors?r+2+t.boxPadding:0,O(n,v=>{O(v.before,y),O(v.lines,y),O(v.after,y)}),x=0,e.font=h.string,O(i.footer,y),e.restore(),m+=p.width,{width:m,height:g}}function hc(i,t){const{y:e,height:n}=t;return e<n/2?"top":e>i.height-n/2?"bottom":"center"}function dc(i,t,e,n){const{x:s,width:o}=n,r=e.caretSize+e.caretPadding;if(i==="left"&&s+o+r>t.width||i==="right"&&s-o-r<0)return!0}function uc(i,t,e,n){const{x:s,width:o}=e,{width:r,chartArea:{left:a,right:l}}=i;let c="center";return n==="center"?c=s<=(a+l)/2?"left":"right":s<=o/2?c="left":s>=r-o/2&&(c="right"),dc(c,i,t,e)&&(c="center"),c}function Nn(i,t,e){const n=e.yAlign||t.yAlign||hc(i,e);return{xAlign:e.xAlign||t.xAlign||uc(i,t,e,n),yAlign:n}}function fc(i,t){let{x:e,width:n}=i;return t==="right"?e-=n:t==="center"&&(e-=n/2),e}function gc(i,t,e){let{y:n,height:s}=i;return t==="top"?n+=e:t==="bottom"?n-=s+e:n-=s/2,n}function Vn(i,t,e,n){const{caretSize:s,caretPadding:o,cornerRadius:r}=i,{xAlign:a,yAlign:l}=e,c=s+o,{topLeft:h,topRight:d,bottomLeft:u,bottomRight:f}=Tt(r);let p=fc(t,a);const g=gc(t,l,c);return l==="center"?a==="left"?p+=c:a==="right"&&(p-=c):a==="left"?p-=Math.max(h,u)+s:a==="right"&&(p+=Math.max(d,f)+s),{x:tt(p,0,n.width-t.width),y:tt(g,0,n.height-t.height)}}function Pe(i,t,e){const n=j(e.padding);return t==="center"?i.x+i.width/2:t==="right"?i.x+i.width-n.right:i.x+n.left}function jn(i){return nt([],lt(i))}function pc(i,t,e){return yt(i,{tooltip:t,tooltipItems:e,type:"tooltip"})}function $n(i,t){const e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?i.override(e):i}const eo={beforeTitle:rt,title(i){if(i.length>0){const t=i[0],e=t.chart.data.labels,n=e?e.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(n>0&&t.dataIndex<n)return e[t.dataIndex]}return""},afterTitle:rt,beforeBody:rt,beforeLabel:rt,label(i){if(this&&this.options&&this.options.mode==="dataset")return i.label+": "+i.formattedValue||i.formattedValue;let t=i.dataset.label||"";t&&(t+=": ");const e=i.formattedValue;return I(e)||(t+=e),t},labelColor(i){const e=i.chart.getDatasetMeta(i.datasetIndex).controller.getStyle(i.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(i){const e=i.chart.getDatasetMeta(i.datasetIndex).controller.getStyle(i.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:rt,afterBody:rt,beforeFooter:rt,footer:rt,afterFooter:rt};function U(i,t,e,n){const s=i[t].call(e,n);return typeof s>"u"?eo[t].call(e,n):s}class mi extends dt{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,n=this.options.setContext(this.getContext()),s=n.enabled&&e.options.animation&&n.animations,o=new Fs(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=pc(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,e){const{callbacks:n}=e,s=U(n,"beforeTitle",this,t),o=U(n,"title",this,t),r=U(n,"afterTitle",this,t);let a=[];return a=nt(a,lt(s)),a=nt(a,lt(o)),a=nt(a,lt(r)),a}getBeforeBody(t,e){return jn(U(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:n}=e,s=[];return O(t,o=>{const r={before:[],lines:[],after:[]},a=$n(n,o);nt(r.before,lt(U(a,"beforeLabel",this,o))),nt(r.lines,U(a,"label",this,o)),nt(r.after,lt(U(a,"afterLabel",this,o))),s.push(r)}),s}getAfterBody(t,e){return jn(U(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:n}=e,s=U(n,"beforeFooter",this,t),o=U(n,"footer",this,t),r=U(n,"afterFooter",this,t);let a=[];return a=nt(a,lt(s)),a=nt(a,lt(o)),a=nt(a,lt(r)),a}_createItems(t){const e=this._active,n=this.chart.data,s=[],o=[],r=[];let a=[],l,c;for(l=0,c=e.length;l<c;++l)a.push(cc(this.chart,e[l]));return t.filter&&(a=a.filter((h,d,u)=>t.filter(h,d,u,n))),t.itemSort&&(a=a.sort((h,d)=>t.itemSort(h,d,n))),O(a,h=>{const d=$n(t.callbacks,h);s.push(U(d,"labelColor",this,h)),o.push(U(d,"labelPointStyle",this,h)),r.push(U(d,"labelTextColor",this,h))}),this.labelColors=s,this.labelPointStyles=o,this.labelTextColors=r,this.dataPoints=a,a}update(t,e){const n=this.options.setContext(this.getContext()),s=this._active;let o,r=[];if(!s.length)this.opacity!==0&&(o={opacity:0});else{const a=Jt[n.position].call(this,s,this._eventPosition);r=this._createItems(n),this.title=this.getTitle(r,n),this.beforeBody=this.getBeforeBody(r,n),this.body=this.getBody(r,n),this.afterBody=this.getAfterBody(r,n),this.footer=this.getFooter(r,n);const l=this._size=Wn(this,n),c=Object.assign({},a,l),h=Nn(this.chart,n,c),d=Vn(n,c,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,o={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=r,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,n,s){const o=this.getCaretPosition(t,n,s);e.lineTo(o.x1,o.y1),e.lineTo(o.x2,o.y2),e.lineTo(o.x3,o.y3)}getCaretPosition(t,e,n){const{xAlign:s,yAlign:o}=this,{caretSize:r,cornerRadius:a}=n,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:d}=Tt(a),{x:u,y:f}=t,{width:p,height:g}=e;let m,b,x,y,v,_;return o==="center"?(v=f+g/2,s==="left"?(m=u,b=m-r,y=v+r,_=v-r):(m=u+p,b=m+r,y=v-r,_=v+r),x=m):(s==="left"?b=u+Math.max(l,h)+r:s==="right"?b=u+p-Math.max(c,d)-r:b=this.caretX,o==="top"?(y=f,v=y-r,m=b-r,x=b+r):(y=f+g,v=y+r,m=b+r,x=b-r),_=y),{x1:m,x2:b,x3:x,y1:y,y2:v,y3:_}}drawTitle(t,e,n){const s=this.title,o=s.length;let r,a,l;if(o){const c=Ft(n.rtl,this.x,this.width);for(t.x=Pe(this,n.titleAlign,n),e.textAlign=c.textAlign(n.titleAlign),e.textBaseline="middle",r=V(n.titleFont),a=n.titleSpacing,e.fillStyle=n.titleColor,e.font=r.string,l=0;l<o;++l)e.fillText(s[l],c.x(t.x),t.y+r.lineHeight/2),t.y+=r.lineHeight+a,l+1===o&&(t.y+=n.titleMarginBottom-a)}}_drawColorBox(t,e,n,s,o){const r=this.labelColors[n],a=this.labelPointStyles[n],{boxHeight:l,boxWidth:c}=o,h=V(o.bodyFont),d=Pe(this,"left",o),u=s.x(d),f=l<h.lineHeight?(h.lineHeight-l)/2:0,p=e.y+f;if(o.usePointStyle){const g={radius:Math.min(c,l)/2,pointStyle:a.pointStyle,rotation:a.rotation,borderWidth:1},m=s.leftForLtr(u,c)+c/2,b=p+l/2;t.strokeStyle=o.multiKeyBackground,t.fillStyle=o.multiKeyBackground,di(t,g,m,b),t.strokeStyle=r.borderColor,t.fillStyle=r.backgroundColor,di(t,g,m,b)}else{t.lineWidth=L(r.borderWidth)?Math.max(...Object.values(r.borderWidth)):r.borderWidth||1,t.strokeStyle=r.borderColor,t.setLineDash(r.borderDash||[]),t.lineDashOffset=r.borderDashOffset||0;const g=s.leftForLtr(u,c),m=s.leftForLtr(s.xPlus(u,1),c-2),b=Tt(r.borderRadius);Object.values(b).some(x=>x!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,ce(t,{x:g,y:p,w:c,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),ce(t,{x:m,y:p+1,w:c-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(g,p,c,l),t.strokeRect(g,p,c,l),t.fillStyle=r.backgroundColor,t.fillRect(m,p+1,c-2,l-2))}t.fillStyle=this.labelTextColors[n]}drawBody(t,e,n){const{body:s}=this,{bodySpacing:o,bodyAlign:r,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:h}=n,d=V(n.bodyFont);let u=d.lineHeight,f=0;const p=Ft(n.rtl,this.x,this.width),g=function(w){e.fillText(w,p.x(t.x+f),t.y+u/2),t.y+=u+o},m=p.textAlign(r);let b,x,y,v,_,k,M;for(e.textAlign=r,e.textBaseline="middle",e.font=d.string,t.x=Pe(this,m,n),e.fillStyle=n.bodyColor,O(this.beforeBody,g),f=a&&m!=="right"?r==="center"?c/2+h:c+2+h:0,v=0,k=s.length;v<k;++v){for(b=s[v],x=this.labelTextColors[v],e.fillStyle=x,O(b.before,g),y=b.lines,a&&y.length&&(this._drawColorBox(e,t,v,p,n),u=Math.max(d.lineHeight,l)),_=0,M=y.length;_<M;++_)g(y[_]),u=d.lineHeight;O(b.after,g)}f=0,u=d.lineHeight,O(this.afterBody,g),t.y-=o}drawFooter(t,e,n){const s=this.footer,o=s.length;let r,a;if(o){const l=Ft(n.rtl,this.x,this.width);for(t.x=Pe(this,n.footerAlign,n),t.y+=n.footerMarginTop,e.textAlign=l.textAlign(n.footerAlign),e.textBaseline="middle",r=V(n.footerFont),e.fillStyle=n.footerColor,e.font=r.string,a=0;a<o;++a)e.fillText(s[a],l.x(t.x),t.y+r.lineHeight/2),t.y+=r.lineHeight+n.footerSpacing}}drawBackground(t,e,n,s){const{xAlign:o,yAlign:r}=this,{x:a,y:l}=t,{width:c,height:h}=n,{topLeft:d,topRight:u,bottomLeft:f,bottomRight:p}=Tt(s.cornerRadius);e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.beginPath(),e.moveTo(a+d,l),r==="top"&&this.drawCaret(t,e,n,s),e.lineTo(a+c-u,l),e.quadraticCurveTo(a+c,l,a+c,l+u),r==="center"&&o==="right"&&this.drawCaret(t,e,n,s),e.lineTo(a+c,l+h-p),e.quadraticCurveTo(a+c,l+h,a+c-p,l+h),r==="bottom"&&this.drawCaret(t,e,n,s),e.lineTo(a+f,l+h),e.quadraticCurveTo(a,l+h,a,l+h-f),r==="center"&&o==="left"&&this.drawCaret(t,e,n,s),e.lineTo(a,l+d),e.quadraticCurveTo(a,l,a+d,l),e.closePath(),e.fill(),s.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,n=this.$animations,s=n&&n.x,o=n&&n.y;if(s||o){const r=Jt[t.position].call(this,this._active,this._eventPosition);if(!r)return;const a=this._size=Wn(this,t),l=Object.assign({},r,this._size),c=Nn(e,t,l),h=Vn(t,l,c,e);(s._to!==h.x||o._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=r.x,this.caretY=r.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let n=this.opacity;if(!n)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},o={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;const r=j(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=n,this.drawBackground(o,t,s,e),Ls(t,e.textDirection),o.y+=r.top,this.drawTitle(o,t,e),this.drawBody(o,t,e),this.drawFooter(o,t,e),As(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const n=this._active,s=t.map(({datasetIndex:a,index:l})=>{const c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),o=!ze(n,s),r=this._positionChanged(s,e);(o||r)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,n=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,o=this._active||[],r=this._getActiveElements(t,o,e,n),a=this._positionChanged(r,t),l=e||!ze(r,o)||a;return l&&(this._active=r,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,n,s){const o=this.options;if(t.type==="mouseout")return[];if(!s)return e.filter(a=>this.chart.data.datasets[a.datasetIndex]&&this.chart.getDatasetMeta(a.datasetIndex).controller.getParsed(a.index)!==void 0);const r=this.chart.getElementsAtEventForMode(t,o.mode,o,n);return o.reverse&&r.reverse(),r}_positionChanged(t,e){const{caretX:n,caretY:s,options:o}=this,r=Jt[o.position].call(this,t,e);return r!==!1&&(n!==r.x||s!==r.y)}}S(mi,"positioners",Jt);var Ah={id:"tooltip",_element:mi,positioners:Jt,afterInit(i,t,e){e&&(i.tooltip=new mi({chart:i,options:e}))},beforeUpdate(i,t,e){i.tooltip&&i.tooltip.initialize(e)},reset(i,t,e){i.tooltip&&i.tooltip.initialize(e)},afterDraw(i){const t=i.tooltip;if(t&&t._willRender()){const e={tooltip:t};if(i.notifyPlugins("beforeTooltipDraw",{...e,cancelable:!0})===!1)return;t.draw(i.ctx),i.notifyPlugins("afterTooltipDraw",e)}},afterEvent(i,t){if(i.tooltip){const e=t.replay;i.tooltip.handleEvent(t.event,e,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(i,t)=>t.bodyFont.size,boxWidth:(i,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:eo},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:i=>i!=="filter"&&i!=="itemSort"&&i!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};function mc(i,t){const e=[],{bounds:s,step:o,min:r,max:a,precision:l,count:c,maxTicks:h,maxDigits:d,includeBounds:u}=i,f=o||1,p=h-1,{min:g,max:m}=t,b=!I(r),x=!I(a),y=!I(c),v=(m-g)/(d+1);let _=Ni((m-g)/p/f)*f,k,M,w,D;if(_<1e-14&&!b&&!x)return[{value:g},{value:m}];D=Math.ceil(m/_)-Math.floor(g/_),D>p&&(_=Ni(D*_/p/f)*f),I(l)||(k=Math.pow(10,l),_=Math.ceil(_*k)/k),s==="ticks"?(M=Math.floor(g/_)*_,w=Math.ceil(m/_)*_):(M=g,w=m),b&&x&&o&&Fo((a-r)/o,_/1e3)?(D=Math.round(Math.min((a-r)/_,h)),_=(a-r)/D,M=r,w=a):y?(M=b?r:M,w=x?a:w,D=c-1,_=(w-M)/D):(D=(w-M)/_,ie(D,Math.round(D),_/1e3)?D=Math.round(D):D=Math.ceil(D));const A=Math.max(Vi(_),Vi(M));k=Math.pow(10,I(l)?A:l),M=Math.round(M*k)/k,w=Math.round(w*k)/k;let T=0;for(b&&(u&&M!==r?(e.push({value:r}),M<r&&T++,ie(Math.round((M+T*_)*k)/k,r,Un(r,v,i))&&T++):M<r&&T++);T<D;++T){const z=Math.round((M+T*_)*k)/k;if(x&&z>a)break;e.push({value:z})}return x&&u&&w!==a?e.length&&ie(e[e.length-1].value,a,Un(a,v,i))?e[e.length-1].value=a:e.push({value:a}):(!x||w===a)&&e.push({value:w}),e}function Un(i,t,{horizontal:e,minRotation:n}){const s=gt(n),o=(e?Math.sin(s):Math.cos(s))||.001,r=.75*t*(""+i).length;return Math.min(t/o,r)}class He extends Vt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return I(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:n}=this.getUserBounds();let{min:s,max:o}=this;const r=l=>s=e?s:l,a=l=>o=n?o:l;if(t){const l=et(s),c=et(o);l<0&&c<0?a(0):l>0&&c>0&&r(0)}if(s===o){let l=o===0?1:Math.abs(o*.05);a(o+l),t||r(s-l)}this.min=s,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:e,stepSize:n}=t,s;return n?(s=Math.ceil(this.max/n)-Math.floor(this.min/n)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${n} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),e=e||11),e&&(s=Math.min(e,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let n=this.getTickLimit();n=Math.max(2,n);const s={maxTicks:n,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:e.includeBounds!==!1},o=this._range||this,r=mc(s,o);return t.bounds==="ticks"&&ps(r,this,"value"),t.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){const t=this.ticks;let e=this.min,n=this.max;if(super.configure(),this.options.offset&&t.length){const s=(n-e)/Math.max(t.length-1,1)/2;e-=s,n+=s}this._startValue=e,this._endValue=n,this._valueRange=n-e}getLabelForValue(t){return Di(t,this.chart.options.locale,this.options.ticks.format)}}class Yn extends He{determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=F(t)?t:0,this.max=F(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,n=gt(this.options.ticks.minRotation),s=(t?Math.sin(n):Math.cos(n))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,o.lineHeight/s))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}S(Yn,"id","linear"),S(Yn,"defaults",{ticks:{callback:Ne.formatters.numeric}});const de=i=>Math.floor(ft(i)),Pt=(i,t)=>Math.pow(10,de(i)+t);function Kn(i){return i/Math.pow(10,de(i))===1}function Xn(i,t,e){const n=Math.pow(10,e),s=Math.floor(i/n);return Math.ceil(t/n)-s}function bc(i,t){const e=t-i;let n=de(e);for(;Xn(i,t,n)>10;)n++;for(;Xn(i,t,n)<10;)n--;return Math.min(n,de(i))}function xc(i,{min:t,max:e}){t=q(i.min,t);const n=[],s=de(t);let o=bc(t,e),r=o<0?Math.pow(10,Math.abs(o)):1;const a=Math.pow(10,o),l=s>o?Math.pow(10,s):0,c=Math.round((t-l)*r)/r,h=Math.floor((t-l)/a/10)*a*10;let d=Math.floor((c-h)/Math.pow(10,o)),u=q(i.min,Math.round((l+h+d*Math.pow(10,o))*r)/r);for(;u<e;)n.push({value:u,major:Kn(u),significand:d}),d>=10?d=d<15?15:20:d++,d>=20&&(o++,d=2,r=o>=0?1:r),u=Math.round((l+h+d*Math.pow(10,o))*r)/r;const f=q(i.max,u);return n.push({value:f,major:Kn(f),significand:d}),n}class qn extends Vt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const n=He.prototype.parse.apply(this,[t,e]);if(n===0){this._zero=!0;return}return F(n)&&n>0?n:null}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=F(t)?Math.max(0,t):null,this.max=F(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!F(this._userMin)&&(this.min=t===Pt(this.min,0)?Pt(this.min,-1):Pt(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let n=this.min,s=this.max;const o=a=>n=t?n:a,r=a=>s=e?s:a;n===s&&(n<=0?(o(1),r(10)):(o(Pt(n,-1)),r(Pt(s,1)))),n<=0&&o(Pt(s,-1)),s<=0&&r(Pt(n,1)),this.min=n,this.max=s}buildTicks(){const t=this.options,e={min:this._userMin,max:this._userMax},n=xc(e,this);return t.bounds==="ticks"&&ps(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}getLabelForValue(t){return t===void 0?"0":Di(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=ft(t),this._valueRange=ft(this.max)-ft(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(ft(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}S(qn,"id","logarithmic"),S(qn,"defaults",{ticks:{callback:Ne.formatters.logarithmic,major:{enabled:!0}}});function bi(i){const t=i.ticks;if(t.display&&i.display){const e=j(t.backdropPadding);return C(t.font&&t.font.size,E.font.size)+e.height}return 0}function _c(i,t,e){return e=R(e)?e:[e],{w:ir(i,t.string,e),h:e.length*t.lineHeight}}function Gn(i,t,e,n,s){return i===n||i===s?{start:t-e/2,end:t+e/2}:i<n||i>s?{start:t-e,end:t}:{start:t,end:t+e}}function yc(i){const t={l:i.left+i._padding.left,r:i.right-i._padding.right,t:i.top+i._padding.top,b:i.bottom-i._padding.bottom},e=Object.assign({},t),n=[],s=[],o=i._pointLabels.length,r=i.options.pointLabels,a=r.centerPointLabels?W/o:0;for(let l=0;l<o;l++){const c=r.setContext(i.getPointLabelContext(l));s[l]=c.padding;const h=i.getPointPosition(l,i.drawingArea+s[l],a),d=V(c.font),u=_c(i.ctx,d,i._pointLabels[l]);n[l]=u;const f=G(i.getIndexAngle(l)+a),p=Math.round(ki(f)),g=Gn(p,h.x,u.w,0,180),m=Gn(p,h.y,u.h,90,270);vc(e,t,f,g,m)}i.setCenterPoint(t.l-e.l,e.r-t.r,t.t-e.t,e.b-t.b),i._pointLabelItems=kc(i,n,s)}function vc(i,t,e,n,s){const o=Math.abs(Math.sin(e)),r=Math.abs(Math.cos(e));let a=0,l=0;n.start<t.l?(a=(t.l-n.start)/o,i.l=Math.min(i.l,t.l-a)):n.end>t.r&&(a=(n.end-t.r)/o,i.r=Math.max(i.r,t.r+a)),s.start<t.t?(l=(t.t-s.start)/r,i.t=Math.min(i.t,t.t-l)):s.end>t.b&&(l=(s.end-t.b)/r,i.b=Math.max(i.b,t.b+l))}function wc(i,t,e){const n=i.drawingArea,{extra:s,additionalAngle:o,padding:r,size:a}=e,l=i.getPointPosition(t,n+s+r,o),c=Math.round(ki(G(l.angle+Z))),h=Dc(l.y,a.h,c),d=Sc(c),u=Pc(l.x,a.w,d);return{visible:!0,x:l.x,y:h,textAlign:d,left:u,top:h,right:u+a.w,bottom:h+a.h}}function Mc(i,t){if(!t)return!0;const{left:e,top:n,right:s,bottom:o}=i;return!(ht({x:e,y:n},t)||ht({x:e,y:o},t)||ht({x:s,y:n},t)||ht({x:s,y:o},t))}function kc(i,t,e){const n=[],s=i._pointLabels.length,o=i.options,{centerPointLabels:r,display:a}=o.pointLabels,l={extra:bi(o)/2,additionalAngle:r?W/s:0};let c;for(let h=0;h<s;h++){l.padding=e[h],l.size=t[h];const d=wc(i,h,l);n.push(d),a==="auto"&&(d.visible=Mc(d,c),d.visible&&(c=d))}return n}function Sc(i){return i===0||i===180?"center":i<180?"left":"right"}function Pc(i,t,e){return e==="right"?i-=t:e==="center"&&(i-=t/2),i}function Dc(i,t,e){return e===90||e===270?i-=t/2:(e>270||e<90)&&(i-=t),i}function Cc(i,t,e){const{left:n,top:s,right:o,bottom:r}=e,{backdropColor:a}=t;if(!I(a)){const l=Tt(t.borderRadius),c=j(t.backdropPadding);i.fillStyle=a;const h=n-c.left,d=s-c.top,u=o-n+c.width,f=r-s+c.height;Object.values(l).some(p=>p!==0)?(i.beginPath(),ce(i,{x:h,y:d,w:u,h:f,radius:l}),i.fill()):i.fillRect(h,d,u,f)}}function Oc(i,t){const{ctx:e,options:{pointLabels:n}}=i;for(let s=t-1;s>=0;s--){const o=i._pointLabelItems[s];if(!o.visible)continue;const r=n.setContext(i.getPointLabelContext(s));Cc(e,r,o);const a=V(r.font),{x:l,y:c,textAlign:h}=o;Ht(e,i._pointLabels[s],l,c+a.lineHeight/2,a,{color:r.color,textAlign:h,textBaseline:"middle"})}}function io(i,t,e,n){const{ctx:s}=i;if(e)s.arc(i.xCenter,i.yCenter,t,0,Q);else{let o=i.getPointPosition(0,t);s.moveTo(o.x,o.y);for(let r=1;r<n;r++)o=i.getPointPosition(r,t),s.lineTo(o.x,o.y)}}function Tc(i,t,e,n,s){const o=i.ctx,r=t.circular,{color:a,lineWidth:l}=t;!r&&!n||!a||!l||e<0||(o.save(),o.strokeStyle=a,o.lineWidth=l,o.setLineDash(s.dash),o.lineDashOffset=s.dashOffset,o.beginPath(),io(i,e,r,n),o.closePath(),o.stroke(),o.restore())}function Lc(i,t,e){return yt(i,{label:e,index:t,type:"pointLabel"})}class De extends He{constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=j(bi(this.options)/2),e=this.width=this.maxWidth-t.width,n=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+n/2+t.top),this.drawingArea=Math.floor(Math.min(e,n)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=F(t)&&!isNaN(t)?t:0,this.max=F(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/bi(this.options))}generateTickLabels(t){He.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map((e,n)=>{const s=P(this.options.pointLabels.callback,[e,n],this);return s||s===0?s:""}).filter((e,n)=>this.chart.getDataVisibility(n))}fit(){const t=this.options;t.display&&t.pointLabels.display?yc(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,n,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((n-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,n,s))}getIndexAngle(t){const e=Q/(this._pointLabels.length||1),n=this.options.startAngle||0;return G(t*e+gt(n))}getDistanceFromCenterForValue(t){if(I(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(I(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const n=e[t];return Lc(this.getContext(),t,n)}}getPointPosition(t,e,n=0){const s=this.getIndexAngle(t)-Z+n;return{x:Math.cos(s)*e+this.xCenter,y:Math.sin(s)*e+this.yCenter,angle:s}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:n,right:s,bottom:o}=this._pointLabelItems[t];return{left:e,top:n,right:s,bottom:o}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const n=this.ctx;n.save(),n.beginPath(),io(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),n.closePath(),n.fillStyle=t,n.fill(),n.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:n,grid:s,border:o}=e,r=this._pointLabels.length;let a,l,c;if(e.pointLabels.display&&Oc(this,r),s.display&&this.ticks.forEach((h,d)=>{if(d!==0||d===0&&this.min<0){l=this.getDistanceFromCenterForValue(h.value);const u=this.getContext(d),f=s.setContext(u),p=o.setContext(u);Tc(this,f,l,r,p)}}),n.display){for(t.save(),a=r-1;a>=0;a--){const h=n.setContext(this.getPointLabelContext(a)),{color:d,lineWidth:u}=h;!u||!d||(t.lineWidth=u,t.strokeStyle=d,t.setLineDash(h.borderDash),t.lineDashOffset=h.borderDashOffset,l=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),c=this.getPointPosition(a,l),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(c.x,c.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,n=e.ticks;if(!n.display)return;const s=this.getIndexAngle(0);let o,r;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&this.min>=0&&!e.reverse)return;const c=n.setContext(this.getContext(l)),h=V(c.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=h.string,r=t.measureText(a.label).width,t.fillStyle=c.backdropColor;const d=j(c.backdropPadding);t.fillRect(-r/2-d.left,-o-h.size/2-d.top,r+d.width,h.size+d.height)}Ht(t,a.label,0,-o,h,{color:c.color,strokeColor:c.textStrokeColor,strokeWidth:c.textStrokeWidth})}),t.restore()}drawTitle(){}}S(De,"id","radialLinear"),S(De,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Ne.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(t){return t},padding:5,centerPointLabels:!1}}),S(De,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),S(De,"descriptors",{angleLines:{_fallback:"grid"}});const Ue={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},K=Object.keys(Ue);function Zn(i,t){return i-t}function Qn(i,t){if(I(t))return null;const e=i._adapter,{parser:n,round:s,isoWeekday:o}=i._parseOpts;let r=t;return typeof n=="function"&&(r=n(r)),F(r)||(r=typeof n=="string"?e.parse(r,n):e.parse(r)),r===null?null:(s&&(r=s==="week"&&(le(o)||o===!0)?e.startOf(r,"isoWeek",o):e.startOf(r,s)),+r)}function Jn(i,t,e,n){const s=K.length;for(let o=K.indexOf(i);o<s-1;++o){const r=Ue[K[o]],a=r.steps?r.steps:Number.MAX_SAFE_INTEGER;if(r.common&&Math.ceil((e-t)/(a*r.size))<=n)return K[o]}return K[s-1]}function Ac(i,t,e,n,s){for(let o=K.length-1;o>=K.indexOf(e);o--){const r=K[o];if(Ue[r].common&&i._adapter.diff(s,n,r)>=t-1)return r}return K[e?K.indexOf(e):0]}function zc(i){for(let t=K.indexOf(i)+1,e=K.length;t<e;++t)if(Ue[K[t]].common)return K[t]}function ts(i,t,e){if(!e)i[t]=!0;else if(e.length){const{lo:n,hi:s}=Si(e,t),o=e[n]>=t?e[n]:e[s];i[o]=!0}}function Ic(i,t,e,n){const s=i._adapter,o=+s.startOf(t[0].value,n),r=t[t.length-1].value;let a,l;for(a=o;a<=r;a=+s.add(a,1,n))l=e[a],l>=0&&(t[l].major=!0);return t}function es(i,t,e){const n=[],s={},o=t.length;let r,a;for(r=0;r<o;++r)a=t[r],s[a]=r,n.push({value:a,major:!1});return o===0||!e?n:Ic(i,n,s,e)}class We extends Vt{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const n=t.time||(t.time={}),s=this._adapter=new Hs._date(t.adapters.date);s.init(e),ee(n.displayFormats,s.formats()),this._parseOpts={parser:n.parser,round:n.round,isoWeekday:n.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return t===void 0?null:Qn(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,n=t.time.unit||"day";let{min:s,max:o,minDefined:r,maxDefined:a}=this.getUserBounds();function l(c){!r&&!isNaN(c.min)&&(s=Math.min(s,c.min)),!a&&!isNaN(c.max)&&(o=Math.max(o,c.max))}(!r||!a)&&(l(this._getLabelBounds()),(t.bounds!=="ticks"||t.ticks.source!=="labels")&&l(this.getMinMax(!1))),s=F(s)&&!isNaN(s)?s:+e.startOf(Date.now(),n),o=F(o)&&!isNaN(o)?o:+e.endOf(Date.now(),n)+1,this.min=Math.min(s,o-1),this.max=Math.max(s+1,o)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],n=t[t.length-1]),{min:e,max:n}}buildTicks(){const t=this.options,e=t.time,n=t.ticks,s=n.source==="labels"?this.getLabelTimestamps():this._generate();t.bounds==="ticks"&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const o=this.min,r=this.max,a=No(s,o,r);return this._unit=e.unit||(n.autoSkip?Jn(e.minUnit,this.min,this.max,this._getLabelCapacity(o)):Ac(this,a.length,e.minUnit,this.min,this.max)),this._majorUnit=!n.major.enabled||this._unit==="year"?void 0:zc(this._unit),this.initOffsets(s),t.reverse&&a.reverse(),es(this,a,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(t=>+t.value))}initOffsets(t=[]){let e=0,n=0,s,o;this.options.offset&&t.length&&(s=this.getDecimalForValue(t[0]),t.length===1?e=1-s:e=(this.getDecimalForValue(t[1])-s)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?n=o:n=(o-this.getDecimalForValue(t[t.length-2]))/2);const r=t.length<3?.5:.25;e=tt(e,0,r),n=tt(n,0,r),this._offsets={start:e,end:n,factor:1/(e+1+n)}}_generate(){const t=this._adapter,e=this.min,n=this.max,s=this.options,o=s.time,r=o.unit||Jn(o.minUnit,e,n,this._getLabelCapacity(e)),a=C(s.ticks.stepSize,1),l=r==="week"?o.isoWeekday:!1,c=le(l)||l===!0,h={};let d=e,u,f;if(c&&(d=+t.startOf(d,"isoWeek",l)),d=+t.startOf(d,c?"day":r),t.diff(n,e,r)>1e5*a)throw new Error(e+" and "+n+" are too far apart with stepSize of "+a+" "+r);const p=s.ticks.source==="data"&&this.getDataTimestamps();for(u=d,f=0;u<n;u=+t.add(u,a,r),f++)ts(h,u,p);return(u===n||s.bounds==="ticks"||f===1)&&ts(h,u,p),Object.keys(h).sort(Zn).map(g=>+g)}getLabelForValue(t){const e=this._adapter,n=this.options.time;return n.tooltipFormat?e.format(t,n.tooltipFormat):e.format(t,n.displayFormats.datetime)}format(t,e){const s=this.options.time.displayFormats,o=this._unit,r=e||s[o];return this._adapter.format(t,r)}_tickFormatFunction(t,e,n,s){const o=this.options,r=o.ticks.callback;if(r)return P(r,[t,e,n],this);const a=o.time.displayFormats,l=this._unit,c=this._majorUnit,h=l&&a[l],d=c&&a[c],u=n[e],f=c&&d&&u&&u.major;return this._adapter.format(t,s||(f?d:h))}generateTickLabels(t){let e,n,s;for(e=0,n=t.length;e<n;++e)s=t[e],s.label=this._tickFormatFunction(s.value,e,t)}getDecimalForValue(t){return t===null?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,n=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+n)*e.factor)}getValueForPixel(t){const e=this._offsets,n=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+n*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,n=this.ctx.measureText(t).width,s=gt(this.isHorizontal()?e.maxRotation:e.minRotation),o=Math.cos(s),r=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:n*o+a*r,h:n*r+a*o}}_getLabelCapacity(t){const e=this.options.time,n=e.displayFormats,s=n[e.unit]||n.millisecond,o=this._tickFormatFunction(t,0,es(this,[t],this._majorUnit),s),r=this._getLabelSize(o),a=Math.floor(this.isHorizontal()?this.width/r.w:this.height/r.h)-1;return a>0?a:1}getDataTimestamps(){let t=this._cache.data||[],e,n;if(t.length)return t;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(e=0,n=s.length;e<n;++e)t=t.concat(s[e].controller.getAllParsedValues(this));return this._cache.data=this.normalize(t)}getLabelTimestamps(){const t=this._cache.labels||[];let e,n;if(t.length)return t;const s=this.getLabels();for(e=0,n=s.length;e<n;++e)t.push(Qn(this,s[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return xs(t.sort(Zn))}}S(We,"id","time"),S(We,"defaults",{bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}});function Ce(i,t,e){let n=0,s=i.length-1,o,r,a,l;e?(t>=i[n].pos&&t<=i[s].pos&&({lo:n,hi:s}=Ct(i,"pos",t)),{pos:o,time:a}=i[n],{pos:r,time:l}=i[s]):(t>=i[n].time&&t<=i[s].time&&({lo:n,hi:s}=Ct(i,"time",t)),{time:o,pos:a}=i[n],{time:r,pos:l}=i[s]);const c=r-o;return c?a+(l-a)*(t-o)/c:a}class is extends We{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Ce(e,this.min),this._tableRange=Ce(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:n}=this,s=[],o=[];let r,a,l,c,h;for(r=0,a=t.length;r<a;++r)c=t[r],c>=e&&c<=n&&s.push(c);if(s.length<2)return[{time:e,pos:0},{time:n,pos:1}];for(r=0,a=s.length;r<a;++r)h=s[r+1],l=s[r-1],c=s[r],Math.round((h+l)/2)!==c&&o.push({time:c,pos:r/(a-1)});return o}_generate(){const t=this.min,e=this.max;let n=super.getDataTimestamps();return(!n.includes(t)||!n.length)&&n.splice(0,0,t),(!n.includes(e)||n.length===1)&&n.push(e),n.sort((s,o)=>s-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),n=this.getLabelTimestamps();return e.length&&n.length?t=this.normalize(e.concat(n)):t=e.length?e:n,t=this._cache.all=t,t}getDecimalForValue(t){return(Ce(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,n=this.getDecimalForPixel(t)/e.factor-e.end;return Ce(this._table,n*this._tableRange+this._minPos,!0)}}S(is,"id","timeseries"),S(is,"defaults",We.defaults);const no={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},Rc={ariaLabel:{type:String},ariaDescribedby:{type:String}},Fc={type:{type:String,required:!0},destroyDelay:{type:Number,default:0},...no,...Rc},Ec=yo[0]==="2"?(i,t)=>Object.assign(i,{attrs:t}):(i,t)=>Object.assign(i,t);function Rt(i){return fs(i)?li(i):i}function Bc(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:i;return fs(t)?new Proxy(i,{}):i}function Hc(i,t){const e=i.options;e&&t&&Object.assign(e,t)}function so(i,t){i.labels=t}function oo(i,t,e){const n=[];i.datasets=t.map(s=>{const o=i.datasets.find(r=>r[e]===s[e]);return!o||!s.data||n.includes(o)?{...s}:(n.push(o),Object.assign(o,s),o)})}function Wc(i,t){const e={labels:[],datasets:[]};return so(e,i.labels),oo(e,i.datasets,t),e}function zh(i,t){return i.getElementsAtEventForMode(t,"nearest",{intersect:!0},!1)}const Nc=ds({props:Fc,setup(i,t){let{expose:e,slots:n}=t;const s=vo(null),o=us(null);e({chart:o});const r=()=>{if(!s.value)return;const{type:c,data:h,options:d,plugins:u,datasetIdKey:f}=i,p=Wc(h,f),g=Bc(p,h);o.value=new Ii(s.value,{type:c,data:g,options:{...d},plugins:u})},a=()=>{const c=li(o.value);c&&(i.destroyDelay>0?setTimeout(()=>{c.destroy(),o.value=null},i.destroyDelay):(c.destroy(),o.value=null))},l=c=>{c.update(i.updateMode)};return wo(r),Mo(a),ko([()=>i.options,()=>i.data],(c,h)=>{let[d,u]=c,[f,p]=h;const g=li(o.value);if(!g)return;let m=!1;if(d){const b=Rt(d),x=Rt(f);b&&b!==x&&(Hc(g,b),m=!0)}if(u){const b=Rt(u.labels),x=Rt(p.labels),y=Rt(u.datasets),v=Rt(p.datasets);b!==x&&(so(g.config.data,b),m=!0),y&&y!==v&&(oo(g.config.data,y,i.datasetIdKey),m=!0)}m&&So(()=>{l(g)})},{deep:!0}),()=>ai("canvas",{role:"img",ariaLabel:i.ariaLabel,ariaDescribedby:i.ariaDescribedby,ref:s},[ai("p",{},[n.default?n.default():""])])}});function Vc(i,t){return Ii.register(t),ds({props:no,setup(e,n){let{expose:s}=n;const o=us(null),r=a=>{o.value=a==null?void 0:a.chart};return s({chart:o}),()=>ai(Nc,Ec({ref:r},{type:i,...e}))}})}const Ih=Vc("line",Te);/*!
- * chartjs-adapter-luxon v1.3.1
- * https://www.chartjs.org
- * (c) 2023 chartjs-adapter-luxon Contributors
- * Released under the MIT license
- */const jc={datetime:ct.DATETIME_MED_WITH_SECONDS,millisecond:"h:mm:ss.SSS a",second:ct.TIME_WITH_SECONDS,minute:ct.TIME_SIMPLE,hour:{hour:"numeric"},day:{day:"numeric",month:"short"},week:"DD",month:{month:"short",year:"numeric"},quarter:"'Q'q - yyyy",year:{year:"numeric"}};Hs._date.override({_id:"luxon",_create:function(i){return ct.fromMillis(i,this.options)},init(i){this.options.locale||(this.options.locale=i.locale)},formats:function(){return jc},parse:function(i,t){const e=this.options,n=typeof i;return i===null||n==="undefined"?null:(n==="number"?i=this._create(i):n==="string"?typeof t=="string"?i=ct.fromFormat(i,t,e):i=ct.fromISO(i,e):i instanceof Date?i=ct.fromJSDate(i,e):n==="object"&&!(i instanceof ct)&&(i=ct.fromObject(i,e)),i.isValid?i.valueOf():null)},format:function(i,t){const e=this._create(i);return typeof t=="string"?e.toFormat(t):e.toLocaleString(t)},add:function(i,t,e){const n={};return n[e]=t,this._create(i).plus(n).valueOf()},diff:function(i,t,e){return this._create(i).diff(this._create(t)).as(e).valueOf()},startOf:function(i,t,e){if(t==="isoWeek"){e=Math.trunc(Math.min(Math.max(0,e),6));const n=this._create(i);return n.minus({days:(n.weekday-e+7)%7}).startOf("day").valueOf()}return t?this._create(i).startOf(t).valueOf():i},endOf:function(i,t){return this._create(i).endOf(t).valueOf()}});/*!
-* chartjs-plugin-zoom v2.0.1
-* undefined
- * (c) 2016-2023 chartjs-plugin-zoom Contributors
- * Released under the MIT License
- */const ue=i=>i&&i.enabled&&i.modifierKey,ro=(i,t)=>i&&t[i+"Key"],Fi=(i,t)=>i&&!t[i+"Key"];function _t(i,t,e){return i===void 0?!0:typeof i=="string"?i.indexOf(t)!==-1:typeof i=="function"?i({chart:e}).indexOf(t)!==-1:!1}function ri(i,t){return typeof i=="function"&&(i=i({chart:t})),typeof i=="string"?{x:i.indexOf("x")!==-1,y:i.indexOf("y")!==-1}:{x:!1,y:!1}}function $c(i,t){let e;return function(){return clearTimeout(e),e=setTimeout(i,t),t}}function Uc({x:i,y:t},e){const n=e.scales,s=Object.keys(n);for(let o=0;o<s.length;o++){const r=n[s[o]];if(t>=r.top&&t<=r.bottom&&i>=r.left&&i<=r.right)return r}return null}function ao(i,t,e){const{mode:n="xy",scaleMode:s,overScaleMode:o}=i||{},r=Uc(t,e),a=ri(n,e),l=ri(s,e);if(o){const h=ri(o,e);for(const d of["x","y"])h[d]&&(l[d]=a[d],a[d]=!1)}if(r&&l[r.axis])return[r];const c=[];return O(e.scales,function(h){a[h.axis]&&c.push(h)}),c}const xi=new WeakMap;function H(i){let t=xi.get(i);return t||(t={originalScaleLimits:{},updatedScaleLimits:{},handlers:{},panDelta:{}},xi.set(i,t)),t}function Yc(i){xi.delete(i)}function lo(i,t,e){const n=i.max-i.min,s=n*(t-1),o=i.isHorizontal()?e.x:e.y,r=Math.max(0,Math.min(1,(i.getValueForPixel(o)-i.min)/n||0)),a=1-r;return{min:s*r,max:s*a}}function ns(i,t,e,n,s){let o=e[n];if(o==="original"){const r=i.originalScaleLimits[t.id][n];o=C(r.options,r.scale)}return C(o,s)}function Kc(i,t,e){const n=i.getValueForPixel(t),s=i.getValueForPixel(e);return{min:Math.min(n,s),max:Math.max(n,s)}}function jt(i,{min:t,max:e},n,s=!1){const o=H(i.chart),{id:r,axis:a,options:l}=i,c=n&&(n[r]||n[a])||{},{minRange:h=0}=c,d=ns(o,i,c,"min",-1/0),u=ns(o,i,c,"max",1/0),f=s?Math.max(e-t,h):i.max-i.min,p=(f-e+t)/2;return t-=p,e+=p,t<d?(t=d,e=Math.min(d+f,u)):e>u&&(e=u,t=Math.max(u-f,d)),l.min=t,l.max=e,o.updatedScaleLimits[i.id]={min:t,max:e},i.parse(t)!==i.min||i.parse(e)!==i.max}function Xc(i,t,e,n){const s=lo(i,t,e),o={min:i.min+s.min,max:i.max-s.max};return jt(i,o,n,!0)}function qc(i,t,e,n){jt(i,Kc(i,t,e),n,!0)}const ss=i=>i===0||isNaN(i)?0:i<0?Math.min(Math.round(i),-1):Math.max(Math.round(i),1);function Gc(i){const e=i.getLabels().length-1;i.min>0&&(i.min-=1),i.max<e&&(i.max+=1)}function Zc(i,t,e,n){const s=lo(i,t,e);i.min===i.max&&t<1&&Gc(i);const o={min:i.min+ss(s.min),max:i.max-ss(s.max)};return jt(i,o,n,!0)}function Qc(i){return i.isHorizontal()?i.width:i.height}function Jc(i,t,e){const s=i.getLabels().length-1;let{min:o,max:r}=i;const a=Math.max(r-o,1),l=Math.round(Qc(i)/Math.max(a,10)),c=Math.round(Math.abs(t/l));let h;return t<-l?(r=Math.min(r+c,s),o=a===1?r:r-a,h=r===s):t>l&&(o=Math.max(0,o-c),r=a===1?o:o+a,h=o===0),jt(i,{min:o,max:r},e)||h}const th={second:500,minute:30*1e3,hour:30*60*1e3,day:12*60*60*1e3,week:3.5*24*60*60*1e3,month:15*24*60*60*1e3,quarter:60*24*60*60*1e3,year:182*24*60*60*1e3};function co(i,t,e,n=!1){const{min:s,max:o,options:r}=i,a=r.time&&r.time.round,l=th[a]||0,c=i.getValueForPixel(i.getPixelForValue(s+l)-t),h=i.getValueForPixel(i.getPixelForValue(o+l)-t),{min:d=-1/0,max:u=1/0}=n&&e&&e[i.axis]||{};return isNaN(c)||isNaN(h)||c<d||h>u?!0:jt(i,{min:c,max:h},e,n)}function os(i,t,e){return co(i,t,e,!0)}const _i={category:Zc,default:Xc},yi={default:qc},vi={category:Jc,default:co,logarithmic:os,timeseries:os};function eh(i,t,e){const{id:n,options:{min:s,max:o}}=i;if(!t[n]||!e[n])return!0;const r=e[n];return r.min!==s||r.max!==o}function rs(i,t){O(i,(e,n)=>{t[n]||delete i[n]})}function $t(i,t){const{scales:e}=i,{originalScaleLimits:n,updatedScaleLimits:s}=t;return O(e,function(o){eh(o,n,s)&&(n[o.id]={min:{scale:o.min,options:o.options.min},max:{scale:o.max,options:o.options.max}})}),rs(n,e),rs(s,e),n}function as(i,t,e,n){const s=_i[i.type]||_i.default;P(s,[i,t,e,n])}function ls(i,t,e,n,s){const o=yi[i.type]||yi.default;P(o,[i,t,e,n,s])}function ih(i){const t=i.chartArea;return{x:(t.left+t.right)/2,y:(t.top+t.bottom)/2}}function Ei(i,t,e="none"){const{x:n=1,y:s=1,focalPoint:o=ih(i)}=typeof t=="number"?{x:t,y:t}:t,r=H(i),{options:{limits:a,zoom:l}}=r;$t(i,r);const c=n!==1,h=s!==1,d=ao(l,o,i);O(d||i.scales,function(u){u.isHorizontal()&&c?as(u,n,o,a):!u.isHorizontal()&&h&&as(u,s,o,a)}),i.update(e),P(l.onZoom,[{chart:i}])}function ho(i,t,e,n="none"){const s=H(i),{options:{limits:o,zoom:r}}=s,{mode:a="xy"}=r;$t(i,s);const l=_t(a,"x",i),c=_t(a,"y",i);O(i.scales,function(h){h.isHorizontal()&&l?ls(h,t.x,e.x,o):!h.isHorizontal()&&c&&ls(h,t.y,e.y,o)}),i.update(n),P(r.onZoom,[{chart:i}])}function nh(i,t,e,n="none"){$t(i,H(i));const s=i.scales[t];jt(s,e,void 0,!0),i.update(n)}function sh(i,t="default"){const e=H(i),n=$t(i,e);O(i.scales,function(s){const o=s.options;n[s.id]?(o.min=n[s.id].min.options,o.max=n[s.id].max.options):(delete o.min,delete o.max)}),i.update(t),P(e.options.zoom.onZoomComplete,[{chart:i}])}function oh(i,t){const e=i.originalScaleLimits[t];if(!e)return;const{min:n,max:s}=e;return C(s.options,s.scale)-C(n.options,n.scale)}function rh(i){const t=H(i);let e=1,n=1;return O(i.scales,function(s){const o=oh(t,s.id);if(o){const r=Math.round(o/(s.max-s.min)*100)/100;e=Math.min(e,r),n=Math.max(n,r)}}),e<1?e:n}function cs(i,t,e,n){const{panDelta:s}=n,o=s[i.id]||0;et(o)===et(t)&&(t+=o);const r=vi[i.type]||vi.default;P(r,[i,t,e])?s[i.id]=0:s[i.id]=t}function uo(i,t,e,n="none"){const{x:s=0,y:o=0}=typeof t=="number"?{x:t,y:t}:t,r=H(i),{options:{pan:a,limits:l}}=r,{onPan:c}=a||{};$t(i,r);const h=s!==0,d=o!==0;O(e||i.scales,function(u){u.isHorizontal()&&h?cs(u,s,l,r):!u.isHorizontal()&&d&&cs(u,o,l,r)}),i.update(n),P(c,[{chart:i}])}function fo(i){const t=H(i);$t(i,t);const e={};for(const n of Object.keys(i.scales)){const{min:s,max:o}=t.originalScaleLimits[n]||{min:{},max:{}};e[n]={min:s.scale,max:o.scale}}return e}function ah(i){const t=fo(i);for(const e of Object.keys(i.scales)){const{min:n,max:s}=t[e];if(n!==void 0&&i.scales[e].min!==n||s!==void 0&&i.scales[e].max!==s)return!0}return!1}function Y(i,t){const{handlers:e}=H(i),n=e[t];n&&n.target&&(n.target.removeEventListener(t,n),delete e[t])}function oe(i,t,e,n){const{handlers:s,options:o}=H(i),r=s[e];r&&r.target===t||(Y(i,e),s[e]=a=>n(i,a,o),s[e].target=t,t.addEventListener(e,s[e]))}function lh(i,t){const e=H(i);e.dragStart&&(e.dragging=!0,e.dragEnd=t,i.update("none"))}function ch(i,t){const e=H(i);!e.dragStart||t.key!=="Escape"||(Y(i,"keydown"),e.dragging=!1,e.dragStart=e.dragEnd=null,i.update("none"))}function go(i,t,e){const{onZoomStart:n,onZoomRejected:s}=e;if(n){const o=ot(t,i);if(P(n,[{chart:i,event:t,point:o}])===!1)return P(s,[{chart:i,event:t}]),!1}}function hh(i,t){const e=H(i),{pan:n,zoom:s={}}=e.options;if(t.button!==0||ro(ue(n),t)||Fi(ue(s.drag),t))return P(s.onZoomRejected,[{chart:i,event:t}]);go(i,t,s)!==!1&&(e.dragStart=t,oe(i,i.canvas,"mousemove",lh),oe(i,window.document,"keydown",ch))}function po(i,t,e,n){const s=_t(t,"x",i),o=_t(t,"y",i);let{top:r,left:a,right:l,bottom:c,width:h,height:d}=i.chartArea;const u=ot(e,i),f=ot(n,i);s&&(a=Math.min(u.x,f.x),l=Math.max(u.x,f.x)),o&&(r=Math.min(u.y,f.y),c=Math.max(u.y,f.y));const p=l-a,g=c-r;return{left:a,top:r,right:l,bottom:c,width:p,height:g,zoomX:s&&p?1+(h-p)/h:1,zoomY:o&&g?1+(d-g)/d:1}}function dh(i,t){const e=H(i);if(!e.dragStart)return;Y(i,"mousemove");const{mode:n,onZoomComplete:s,drag:{threshold:o=0}}=e.options.zoom,r=po(i,n,e.dragStart,t),a=_t(n,"x",i)?r.width:0,l=_t(n,"y",i)?r.height:0,c=Math.sqrt(a*a+l*l);if(e.dragStart=e.dragEnd=null,c<=o){e.dragging=!1,i.update("none");return}ho(i,{x:r.left,y:r.top},{x:r.right,y:r.bottom},"zoom"),setTimeout(()=>e.dragging=!1,500),P(s,[{chart:i}])}function uh(i,t,e){if(Fi(ue(e.wheel),t)){P(e.onZoomRejected,[{chart:i,event:t}]);return}if(go(i,t,e)!==!1&&(t.cancelable&&t.preventDefault(),t.deltaY!==void 0))return!0}function fh(i,t){const{handlers:{onZoomComplete:e},options:{zoom:n}}=H(i);if(!uh(i,t,n))return;const s=t.target.getBoundingClientRect(),o=1+(t.deltaY>=0?-n.wheel.speed:n.wheel.speed),r={x:o,y:o,focalPoint:{x:t.clientX-s.left,y:t.clientY-s.top}};Ei(i,r),e&&e()}function gh(i,t,e,n){e&&(H(i).handlers[t]=$c(()=>P(e,[{chart:i}]),n))}function ph(i,t){const e=i.canvas,{wheel:n,drag:s,onZoomComplete:o}=t.zoom;n.enabled?(oe(i,e,"wheel",fh),gh(i,"onZoomComplete",o,250)):Y(i,"wheel"),s.enabled?(oe(i,e,"mousedown",hh),oe(i,e.ownerDocument,"mouseup",dh)):(Y(i,"mousedown"),Y(i,"mousemove"),Y(i,"mouseup"),Y(i,"keydown"))}function mh(i){Y(i,"mousedown"),Y(i,"mousemove"),Y(i,"mouseup"),Y(i,"wheel"),Y(i,"click"),Y(i,"keydown")}function bh(i,t){return function(e,n){const{pan:s,zoom:o={}}=t.options;if(!s||!s.enabled)return!1;const r=n&&n.srcEvent;return r&&!t.panning&&n.pointerType==="mouse"&&(Fi(ue(s),r)||ro(ue(o.drag),r))?(P(s.onPanRejected,[{chart:i,event:n}]),!1):!0}}function xh(i,t){const e=Math.abs(i.clientX-t.clientX),n=Math.abs(i.clientY-t.clientY),s=e/n;let o,r;return s>.3&&s<1.7?o=r=!0:e>n?o=!0:r=!0,{x:o,y:r}}function mo(i,t,e){if(t.scale){const{center:n,pointers:s}=e,o=1/t.scale*e.scale,r=e.target.getBoundingClientRect(),a=xh(s[0],s[1]),l=t.options.zoom.mode,c={x:a.x&&_t(l,"x",i)?o:1,y:a.y&&_t(l,"y",i)?o:1,focalPoint:{x:n.x-r.left,y:n.y-r.top}};Ei(i,c),t.scale=e.scale}}function _h(i,t){t.options.zoom.pinch.enabled&&(t.scale=1)}function yh(i,t,e){t.scale&&(mo(i,t,e),t.scale=null,P(t.options.zoom.onZoomComplete,[{chart:i}]))}function bo(i,t,e){const n=t.delta;n&&(t.panning=!0,uo(i,{x:e.deltaX-n.x,y:e.deltaY-n.y},t.panScales),t.delta={x:e.deltaX,y:e.deltaY})}function vh(i,t,e){const{enabled:n,onPanStart:s,onPanRejected:o}=t.options.pan;if(!n)return;const r=e.target.getBoundingClientRect(),a={x:e.center.x-r.left,y:e.center.y-r.top};if(P(s,[{chart:i,event:e,point:a}])===!1)return P(o,[{chart:i,event:e}]);t.panScales=ao(t.options.pan,a,i),t.delta={x:0,y:0},clearTimeout(t.panEndTimeout),bo(i,t,e)}function wh(i,t){t.delta=null,t.panning&&(t.panEndTimeout=setTimeout(()=>t.panning=!1,500),P(t.options.pan.onPanComplete,[{chart:i}]))}const wi=new WeakMap;function Mh(i,t){const e=H(i),n=i.canvas,{pan:s,zoom:o}=t,r=new te.Manager(n);o&&o.pinch.enabled&&(r.add(new te.Pinch),r.on("pinchstart",()=>_h(i,e)),r.on("pinch",a=>mo(i,e,a)),r.on("pinchend",a=>yh(i,e,a))),s&&s.enabled&&(r.add(new te.Pan({threshold:s.threshold,enable:bh(i,e)})),r.on("panstart",a=>vh(i,e,a)),r.on("panmove",a=>bo(i,e,a)),r.on("panend",()=>wh(i,e))),wi.set(i,r)}function kh(i){const t=wi.get(i);t&&(t.remove("pinchstart"),t.remove("pinch"),t.remove("pinchend"),t.remove("panstart"),t.remove("pan"),t.remove("panend"),t.destroy(),wi.delete(i))}var Sh="2.0.1";function Oe(i,t,e){const n=e.zoom.drag,{dragStart:s,dragEnd:o}=H(i);if(n.drawTime!==t||!o)return;const{left:r,top:a,width:l,height:c}=po(i,e.zoom.mode,s,o),h=i.ctx;h.save(),h.beginPath(),h.fillStyle=n.backgroundColor||"rgba(225,225,225,0.3)",h.fillRect(r,a,l,c),n.borderWidth>0&&(h.lineWidth=n.borderWidth,h.strokeStyle=n.borderColor||"rgba(225,225,225)",h.strokeRect(r,a,l,c)),h.restore()}var Rh={id:"zoom",version:Sh,defaults:{pan:{enabled:!1,mode:"xy",threshold:10,modifierKey:null},zoom:{wheel:{enabled:!1,speed:.1,modifierKey:null},drag:{enabled:!1,drawTime:"beforeDatasetsDraw",modifierKey:null},pinch:{enabled:!1},mode:"xy"}},start:function(i,t,e){const n=H(i);n.options=e,Object.prototype.hasOwnProperty.call(e.zoom,"enabled")&&console.warn("The option `zoom.enabled` is no longer supported. Please use `zoom.wheel.enabled`, `zoom.drag.enabled`, or `zoom.pinch.enabled`."),(Object.prototype.hasOwnProperty.call(e.zoom,"overScaleMode")||Object.prototype.hasOwnProperty.call(e.pan,"overScaleMode"))&&console.warn("The option `overScaleMode` is deprecated. Please use `scaleMode` instead (and update `mode` as desired)."),te&&Mh(i,e),i.pan=(s,o,r)=>uo(i,s,o,r),i.zoom=(s,o)=>Ei(i,s,o),i.zoomRect=(s,o,r)=>ho(i,s,o,r),i.zoomScale=(s,o,r)=>nh(i,s,o,r),i.resetZoom=s=>sh(i,s),i.getZoomLevel=()=>rh(i),i.getInitialScaleBounds=()=>fo(i),i.isZoomedOrPanned=()=>ah(i)},beforeEvent(i){const t=H(i);if(t.panning||t.dragging)return!1},beforeUpdate:function(i,t,e){const n=H(i);n.options=e,ph(i,e)},beforeDatasetsDraw(i,t,e){Oe(i,"beforeDatasetsDraw",e)},afterDatasetsDraw(i,t,e){Oe(i,"afterDatasetsDraw",e)},beforeDraw(i,t,e){Oe(i,"beforeDraw",e)},afterDraw(i,t,e){Oe(i,"afterDraw",e)},stop:function(i){mh(i),te&&kh(i),Yc(i)},panFunctions:vi,zoomFunctions:_i,zoomRectFunctions:yi};export{Ze as B,Ii as C,Te as L,ei as P,We as T,Lh as a,Ot as b,Yn as c,Rh as d,Ih as e,si as f,zh as g,Th as i,Ah as p};
diff --git a/web/settings/assets/vendor-chartjs-5fa56b74.js b/web/settings/assets/vendor-chartjs-5fa56b74.js
new file mode 100644
index 0000000000..5fd6eaeac6
--- /dev/null
+++ b/web/settings/assets/vendor-chartjs-5fa56b74.js
@@ -0,0 +1,23 @@
+var xo=Object.defineProperty;var _o=(i,t,e)=>t in i?xo(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var S=(i,t,e)=>(_o(i,typeof t!="symbol"?t+"":t,e),e);import{C as hs,d as ds,s as us,h as ai,v as yo,a as vo,o as wo,e as Mo,w as ko,t as li,n as So,i as fs,H as te}from"./vendor-a21b3a62.js";import{D as ct}from"./vendor-luxon-8ddd27a0.js";/*!
+ * Chart.js v4.4.4
+ * https://www.chartjs.org
+ * (c) 2024 Chart.js Contributors
+ * Released under the MIT License
+ */function rt(){}const Po=(()=>{let i=0;return()=>i++})();function I(i){return i===null||typeof i>"u"}function R(i){if(Array.isArray&&Array.isArray(i))return!0;const t=Object.prototype.toString.call(i);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function L(i){return i!==null&&Object.prototype.toString.call(i)==="[object Object]"}function F(i){return(typeof i=="number"||i instanceof Number)&&isFinite(+i)}function q(i,t){return F(i)?i:t}function C(i,t){return typeof i>"u"?t:i}const Do=(i,t)=>typeof i=="string"&&i.endsWith("%")?parseFloat(i)/100*t:+i;function P(i,t,e){if(i&&typeof i.call=="function")return i.apply(e,t)}function O(i,t,e,n){let s,o,r;if(R(i))if(o=i.length,n)for(s=o-1;s>=0;s--)t.call(e,i[s],s);else for(s=0;s<o;s++)t.call(e,i[s],s);else if(L(i))for(r=Object.keys(i),o=r.length,s=0;s<o;s++)t.call(e,i[r[s]],r[s])}function ze(i,t){let e,n,s,o;if(!i||!t||i.length!==t.length)return!1;for(e=0,n=i.length;e<n;++e)if(s=i[e],o=t[e],s.datasetIndex!==o.datasetIndex||s.index!==o.index)return!1;return!0}function Ie(i){if(R(i))return i.map(Ie);if(L(i)){const t=Object.create(null),e=Object.keys(i),n=e.length;let s=0;for(;s<n;++s)t[e[s]]=Ie(i[e[s]]);return t}return i}function gs(i){return["__proto__","prototype","constructor"].indexOf(i)===-1}function Co(i,t,e,n){if(!gs(i))return;const s=t[i],o=e[i];L(s)&&L(o)?re(s,o,n):t[i]=Ie(o)}function re(i,t,e){const n=R(t)?t:[t],s=n.length;if(!L(i))return i;e=e||{};const o=e.merger||Co;let r;for(let a=0;a<s;++a){if(r=n[a],!L(r))continue;const l=Object.keys(r);for(let c=0,h=l.length;c<h;++c)o(l[c],i,r,e)}return i}function ee(i,t){return re(i,t,{merger:Oo})}function Oo(i,t,e){if(!gs(i))return;const n=t[i],s=e[i];L(n)&&L(s)?ee(n,s):Object.prototype.hasOwnProperty.call(t,i)||(t[i]=Ie(s))}const Bi={"":i=>i,x:i=>i.x,y:i=>i.y};function To(i){const t=i.split("."),e=[];let n="";for(const s of t)n+=s,n.endsWith("\\")?n=n.slice(0,-1)+".":(e.push(n),n="");return e}function Lo(i){const t=To(i);return e=>{for(const n of t){if(n==="")break;e=e&&e[n]}return e}}function Bt(i,t){return(Bi[t]||(Bi[t]=Lo(t)))(i)}function Mi(i){return i.charAt(0).toUpperCase()+i.slice(1)}const ae=i=>typeof i<"u",xt=i=>typeof i=="function",Hi=(i,t)=>{if(i.size!==t.size)return!1;for(const e of i)if(!t.has(e))return!1;return!0};function Ao(i){return i.type==="mouseup"||i.type==="click"||i.type==="contextmenu"}const W=Math.PI,Q=2*W,zo=Q+W,Re=Number.POSITIVE_INFINITY,Io=W/180,Z=W/2,Mt=W/4,Wi=W*2/3,ft=Math.log10,et=Math.sign;function ie(i,t,e){return Math.abs(i-t)<e}function Ni(i){const t=Math.round(i);i=ie(i,t,i/1e3)?t:i;const e=Math.pow(10,Math.floor(ft(i))),n=i/e;return(n<=1?1:n<=2?2:n<=5?5:10)*e}function Ro(i){const t=[],e=Math.sqrt(i);let n;for(n=1;n<e;n++)i%n===0&&(t.push(n),t.push(i/n));return e===(e|0)&&t.push(e),t.sort((s,o)=>s-o).pop(),t}function le(i){return!isNaN(parseFloat(i))&&isFinite(i)}function Fo(i,t){const e=Math.round(i);return e-t<=i&&e+t>=i}function ps(i,t,e){let n,s,o;for(n=0,s=i.length;n<s;n++)o=i[n][e],isNaN(o)||(t.min=Math.min(t.min,o),t.max=Math.max(t.max,o))}function gt(i){return i*(W/180)}function ki(i){return i*(180/W)}function Vi(i){if(!F(i))return;let t=1,e=0;for(;Math.round(i*t)/t!==i;)t*=10,e++;return e}function Eo(i,t){const e=t.x-i.x,n=t.y-i.y,s=Math.sqrt(e*e+n*n);let o=Math.atan2(n,e);return o<-.5*W&&(o+=Q),{angle:o,distance:s}}function ci(i,t){return Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2))}function Bo(i,t){return(i-t+zo)%Q-W}function G(i){return(i%Q+Q)%Q}function ms(i,t,e,n){const s=G(i),o=G(t),r=G(e),a=G(o-s),l=G(r-s),c=G(s-o),h=G(s-r);return s===o||s===r||n&&o===r||a>l&&c<h}function tt(i,t,e){return Math.max(t,Math.min(e,i))}function Ho(i){return tt(i,-32768,32767)}function pt(i,t,e,n=1e-6){return i>=Math.min(t,e)-n&&i<=Math.max(t,e)+n}function Si(i,t,e){e=e||(r=>i[r]<t);let n=i.length-1,s=0,o;for(;n-s>1;)o=s+n>>1,e(o)?s=o:n=o;return{lo:s,hi:n}}const Ct=(i,t,e,n)=>Si(i,e,n?s=>{const o=i[s][t];return o<e||o===e&&i[s+1][t]===e}:s=>i[s][t]<e),Wo=(i,t,e)=>Si(i,e,n=>i[n][t]>=e);function No(i,t,e){let n=0,s=i.length;for(;n<s&&i[n]<t;)n++;for(;s>n&&i[s-1]>e;)s--;return n>0||s<i.length?i.slice(n,s):i}const bs=["push","pop","shift","splice","unshift"];function Vo(i,t){if(i._chartjs){i._chartjs.listeners.push(t);return}Object.defineProperty(i,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[t]}}),bs.forEach(e=>{const n="_onData"+Mi(e),s=i[e];Object.defineProperty(i,e,{configurable:!0,enumerable:!1,value(...o){const r=s.apply(this,o);return i._chartjs.listeners.forEach(a=>{typeof a[n]=="function"&&a[n](...o)}),r}})})}function ji(i,t){const e=i._chartjs;if(!e)return;const n=e.listeners,s=n.indexOf(t);s!==-1&&n.splice(s,1),!(n.length>0)&&(bs.forEach(o=>{delete i[o]}),delete i._chartjs)}function xs(i){const t=new Set(i);return t.size===i.length?i:Array.from(t)}const _s=function(){return typeof window>"u"?function(i){return i()}:window.requestAnimationFrame}();function ys(i,t){let e=[],n=!1;return function(...s){e=s,n||(n=!0,_s.call(window,()=>{n=!1,i.apply(t,e)}))}}function jo(i,t){let e;return function(...n){return t?(clearTimeout(e),e=setTimeout(i,t,n)):i.apply(this,n),t}}const vs=i=>i==="start"?"left":i==="end"?"right":"center",X=(i,t,e)=>i==="start"?t:i==="end"?e:(t+e)/2,$o=(i,t,e,n)=>i===(n?"left":"right")?e:i==="center"?(t+e)/2:t;function Uo(i,t,e){const n=t.length;let s=0,o=n;if(i._sorted){const{iScale:r,_parsed:a}=i,l=r.axis,{min:c,max:h,minDefined:d,maxDefined:u}=r.getUserBounds();d&&(s=tt(Math.min(Ct(a,l,c).lo,e?n:Ct(t,l,r.getPixelForValue(c)).lo),0,n-1)),u?o=tt(Math.max(Ct(a,r.axis,h,!0).hi+1,e?0:Ct(t,l,r.getPixelForValue(h),!0).hi+1),s,n)-s:o=n-s}return{start:s,count:o}}function Yo(i){const{xScale:t,yScale:e,_scaleRanges:n}=i,s={xmin:t.min,xmax:t.max,ymin:e.min,ymax:e.max};if(!n)return i._scaleRanges=s,!0;const o=n.xmin!==t.min||n.xmax!==t.max||n.ymin!==e.min||n.ymax!==e.max;return Object.assign(n,s),o}const be=i=>i===0||i===1,$i=(i,t,e)=>-(Math.pow(2,10*(i-=1))*Math.sin((i-t)*Q/e)),Ui=(i,t,e)=>Math.pow(2,-10*i)*Math.sin((i-t)*Q/e)+1,ne={linear:i=>i,easeInQuad:i=>i*i,easeOutQuad:i=>-i*(i-2),easeInOutQuad:i=>(i/=.5)<1?.5*i*i:-.5*(--i*(i-2)-1),easeInCubic:i=>i*i*i,easeOutCubic:i=>(i-=1)*i*i+1,easeInOutCubic:i=>(i/=.5)<1?.5*i*i*i:.5*((i-=2)*i*i+2),easeInQuart:i=>i*i*i*i,easeOutQuart:i=>-((i-=1)*i*i*i-1),easeInOutQuart:i=>(i/=.5)<1?.5*i*i*i*i:-.5*((i-=2)*i*i*i-2),easeInQuint:i=>i*i*i*i*i,easeOutQuint:i=>(i-=1)*i*i*i*i+1,easeInOutQuint:i=>(i/=.5)<1?.5*i*i*i*i*i:.5*((i-=2)*i*i*i*i+2),easeInSine:i=>-Math.cos(i*Z)+1,easeOutSine:i=>Math.sin(i*Z),easeInOutSine:i=>-.5*(Math.cos(W*i)-1),easeInExpo:i=>i===0?0:Math.pow(2,10*(i-1)),easeOutExpo:i=>i===1?1:-Math.pow(2,-10*i)+1,easeInOutExpo:i=>be(i)?i:i<.5?.5*Math.pow(2,10*(i*2-1)):.5*(-Math.pow(2,-10*(i*2-1))+2),easeInCirc:i=>i>=1?i:-(Math.sqrt(1-i*i)-1),easeOutCirc:i=>Math.sqrt(1-(i-=1)*i),easeInOutCirc:i=>(i/=.5)<1?-.5*(Math.sqrt(1-i*i)-1):.5*(Math.sqrt(1-(i-=2)*i)+1),easeInElastic:i=>be(i)?i:$i(i,.075,.3),easeOutElastic:i=>be(i)?i:Ui(i,.075,.3),easeInOutElastic(i){return be(i)?i:i<.5?.5*$i(i*2,.1125,.45):.5+.5*Ui(i*2-1,.1125,.45)},easeInBack(i){return i*i*((1.70158+1)*i-1.70158)},easeOutBack(i){return(i-=1)*i*((1.70158+1)*i+1.70158)+1},easeInOutBack(i){let t=1.70158;return(i/=.5)<1?.5*(i*i*(((t*=1.525)+1)*i-t)):.5*((i-=2)*i*(((t*=1.525)+1)*i+t)+2)},easeInBounce:i=>1-ne.easeOutBounce(1-i),easeOutBounce(i){return i<1/2.75?7.5625*i*i:i<2/2.75?7.5625*(i-=1.5/2.75)*i+.75:i<2.5/2.75?7.5625*(i-=2.25/2.75)*i+.9375:7.5625*(i-=2.625/2.75)*i+.984375},easeInOutBounce:i=>i<.5?ne.easeInBounce(i*2)*.5:ne.easeOutBounce(i*2-1)*.5+.5};function Pi(i){if(i&&typeof i=="object"){const t=i.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function Yi(i){return Pi(i)?i:new hs(i)}function Ye(i){return Pi(i)?i:new hs(i).saturate(.5).darken(.1).hexString()}const Ko=["x","y","borderWidth","radius","tension"],Xo=["color","borderColor","backgroundColor"];function qo(i){i.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),i.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>t!=="onProgress"&&t!=="onComplete"&&t!=="fn"}),i.set("animations",{colors:{type:"color",properties:Xo},numbers:{type:"number",properties:Ko}}),i.describe("animations",{_fallback:"animation"}),i.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>t|0}}}})}function Go(i){i.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const Ki=new Map;function Zo(i,t){t=t||{};const e=i+JSON.stringify(t);let n=Ki.get(e);return n||(n=new Intl.NumberFormat(i,t),Ki.set(e,n)),n}function Di(i,t,e){return Zo(t,e).format(i)}const ws={values(i){return R(i)?i:""+i},numeric(i,t,e){if(i===0)return"0";const n=this.chart.options.locale;let s,o=i;if(e.length>1){const c=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(c<1e-4||c>1e15)&&(s="scientific"),o=Qo(i,e)}const r=ft(Math.abs(o)),a=isNaN(r)?1:Math.max(Math.min(-1*Math.floor(r),20),0),l={notation:s,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),Di(i,n,l)},logarithmic(i,t,e){if(i===0)return"0";const n=e[t].significand||i/Math.pow(10,Math.floor(ft(i)));return[1,2,3,5,10,15].includes(n)||t>.8*e.length?ws.numeric.call(this,i,t,e):""}};function Qo(i,t){let e=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(e)>=1&&i!==Math.floor(i)&&(e=i-Math.floor(i)),e}var Ne={formatters:ws};function Jo(i){i.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Ne.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),i.route("scale.ticks","color","","color"),i.route("scale.grid","color","","borderColor"),i.route("scale.border","color","","borderColor"),i.route("scale.title","color","","color"),i.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&t!=="callback"&&t!=="parser",_indexable:t=>t!=="borderDash"&&t!=="tickBorderDash"&&t!=="dash"}),i.describe("scales",{_fallback:"scale"}),i.describe("scale.ticks",{_scriptable:t=>t!=="backdropPadding"&&t!=="callback",_indexable:t=>t!=="backdropPadding"})}const At=Object.create(null),hi=Object.create(null);function se(i,t){if(!t)return i;const e=t.split(".");for(let n=0,s=e.length;n<s;++n){const o=e[n];i=i[o]||(i[o]=Object.create(null))}return i}function Ke(i,t,e){return typeof t=="string"?re(se(i,t),e):re(se(i,""),t)}class tr{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=n=>n.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(n,s)=>Ye(s.backgroundColor),this.hoverBorderColor=(n,s)=>Ye(s.borderColor),this.hoverColor=(n,s)=>Ye(s.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return Ke(this,t,e)}get(t){return se(this,t)}describe(t,e){return Ke(hi,t,e)}override(t,e){return Ke(At,t,e)}route(t,e,n,s){const o=se(this,t),r=se(this,n),a="_"+e;Object.defineProperties(o,{[a]:{value:o[e],writable:!0},[e]:{enumerable:!0,get(){const l=this[a],c=r[s];return L(l)?Object.assign({},c,l):C(l,c)},set(l){this[a]=l}}})}apply(t){t.forEach(e=>e(this))}}var E=new tr({_scriptable:i=>!i.startsWith("on"),_indexable:i=>i!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[qo,Go,Jo]);function er(i){return!i||I(i.size)||I(i.family)?null:(i.style?i.style+" ":"")+(i.weight?i.weight+" ":"")+i.size+"px "+i.family}function Fe(i,t,e,n,s){let o=t[s];return o||(o=t[s]=i.measureText(s).width,e.push(s)),o>n&&(n=o),n}function ir(i,t,e,n){n=n||{};let s=n.data=n.data||{},o=n.garbageCollect=n.garbageCollect||[];n.font!==t&&(s=n.data={},o=n.garbageCollect=[],n.font=t),i.save(),i.font=t;let r=0;const a=e.length;let l,c,h,d,u;for(l=0;l<a;l++)if(d=e[l],d!=null&&!R(d))r=Fe(i,s,o,r,d);else if(R(d))for(c=0,h=d.length;c<h;c++)u=d[c],u!=null&&!R(u)&&(r=Fe(i,s,o,r,u));i.restore();const f=o.length/2;if(f>e.length){for(l=0;l<f;l++)delete s[o[l]];o.splice(0,f)}return r}function kt(i,t,e){const n=i.currentDevicePixelRatio,s=e!==0?Math.max(e/2,.5):0;return Math.round((t-s)*n)/n+s}function Xi(i,t){!t&&!i||(t=t||i.getContext("2d"),t.save(),t.resetTransform(),t.clearRect(0,0,i.width,i.height),t.restore())}function di(i,t,e,n){Ms(i,t,e,n,null)}function Ms(i,t,e,n,s){let o,r,a,l,c,h,d,u;const f=t.pointStyle,p=t.rotation,g=t.radius;let m=(p||0)*Io;if(f&&typeof f=="object"&&(o=f.toString(),o==="[object HTMLImageElement]"||o==="[object HTMLCanvasElement]")){i.save(),i.translate(e,n),i.rotate(m),i.drawImage(f,-f.width/2,-f.height/2,f.width,f.height),i.restore();return}if(!(isNaN(g)||g<=0)){switch(i.beginPath(),f){default:s?i.ellipse(e,n,s/2,g,0,0,Q):i.arc(e,n,g,0,Q),i.closePath();break;case"triangle":h=s?s/2:g,i.moveTo(e+Math.sin(m)*h,n-Math.cos(m)*g),m+=Wi,i.lineTo(e+Math.sin(m)*h,n-Math.cos(m)*g),m+=Wi,i.lineTo(e+Math.sin(m)*h,n-Math.cos(m)*g),i.closePath();break;case"rectRounded":c=g*.516,l=g-c,r=Math.cos(m+Mt)*l,d=Math.cos(m+Mt)*(s?s/2-c:l),a=Math.sin(m+Mt)*l,u=Math.sin(m+Mt)*(s?s/2-c:l),i.arc(e-d,n-a,c,m-W,m-Z),i.arc(e+u,n-r,c,m-Z,m),i.arc(e+d,n+a,c,m,m+Z),i.arc(e-u,n+r,c,m+Z,m+W),i.closePath();break;case"rect":if(!p){l=Math.SQRT1_2*g,h=s?s/2:l,i.rect(e-h,n-l,2*h,2*l);break}m+=Mt;case"rectRot":d=Math.cos(m)*(s?s/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),i.moveTo(e-d,n-a),i.lineTo(e+u,n-r),i.lineTo(e+d,n+a),i.lineTo(e-u,n+r),i.closePath();break;case"crossRot":m+=Mt;case"cross":d=Math.cos(m)*(s?s/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),i.moveTo(e-d,n-a),i.lineTo(e+d,n+a),i.moveTo(e+u,n-r),i.lineTo(e-u,n+r);break;case"star":d=Math.cos(m)*(s?s/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),i.moveTo(e-d,n-a),i.lineTo(e+d,n+a),i.moveTo(e+u,n-r),i.lineTo(e-u,n+r),m+=Mt,d=Math.cos(m)*(s?s/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,u=Math.sin(m)*(s?s/2:g),i.moveTo(e-d,n-a),i.lineTo(e+d,n+a),i.moveTo(e+u,n-r),i.lineTo(e-u,n+r);break;case"line":r=s?s/2:Math.cos(m)*g,a=Math.sin(m)*g,i.moveTo(e-r,n-a),i.lineTo(e+r,n+a);break;case"dash":i.moveTo(e,n),i.lineTo(e+Math.cos(m)*(s?s/2:g),n+Math.sin(m)*g);break;case!1:i.closePath();break}i.fill(),t.borderWidth>0&&i.stroke()}}function ht(i,t,e){return e=e||.5,!t||i&&i.x>t.left-e&&i.x<t.right+e&&i.y>t.top-e&&i.y<t.bottom+e}function Ve(i,t){i.save(),i.beginPath(),i.rect(t.left,t.top,t.right-t.left,t.bottom-t.top),i.clip()}function je(i){i.restore()}function nr(i,t,e,n,s){if(!t)return i.lineTo(e.x,e.y);if(s==="middle"){const o=(t.x+e.x)/2;i.lineTo(o,t.y),i.lineTo(o,e.y)}else s==="after"!=!!n?i.lineTo(t.x,e.y):i.lineTo(e.x,t.y);i.lineTo(e.x,e.y)}function sr(i,t,e,n){if(!t)return i.lineTo(e.x,e.y);i.bezierCurveTo(n?t.cp1x:t.cp2x,n?t.cp1y:t.cp2y,n?e.cp2x:e.cp1x,n?e.cp2y:e.cp1y,e.x,e.y)}function or(i,t){t.translation&&i.translate(t.translation[0],t.translation[1]),I(t.rotation)||i.rotate(t.rotation),t.color&&(i.fillStyle=t.color),t.textAlign&&(i.textAlign=t.textAlign),t.textBaseline&&(i.textBaseline=t.textBaseline)}function rr(i,t,e,n,s){if(s.strikethrough||s.underline){const o=i.measureText(n),r=t-o.actualBoundingBoxLeft,a=t+o.actualBoundingBoxRight,l=e-o.actualBoundingBoxAscent,c=e+o.actualBoundingBoxDescent,h=s.strikethrough?(l+c)/2:c;i.strokeStyle=i.fillStyle,i.beginPath(),i.lineWidth=s.decorationWidth||2,i.moveTo(r,h),i.lineTo(a,h),i.stroke()}}function ar(i,t){const e=i.fillStyle;i.fillStyle=t.color,i.fillRect(t.left,t.top,t.width,t.height),i.fillStyle=e}function Ht(i,t,e,n,s,o={}){const r=R(t)?t:[t],a=o.strokeWidth>0&&o.strokeColor!=="";let l,c;for(i.save(),i.font=s.string,or(i,o),l=0;l<r.length;++l)c=r[l],o.backdrop&&ar(i,o.backdrop),a&&(o.strokeColor&&(i.strokeStyle=o.strokeColor),I(o.strokeWidth)||(i.lineWidth=o.strokeWidth),i.strokeText(c,e,n,o.maxWidth)),i.fillText(c,e,n,o.maxWidth),rr(i,e,n,c,o),n+=Number(s.lineHeight);i.restore()}function ce(i,t){const{x:e,y:n,w:s,h:o,radius:r}=t;i.arc(e+r.topLeft,n+r.topLeft,r.topLeft,1.5*W,W,!0),i.lineTo(e,n+o-r.bottomLeft),i.arc(e+r.bottomLeft,n+o-r.bottomLeft,r.bottomLeft,W,Z,!0),i.lineTo(e+s-r.bottomRight,n+o),i.arc(e+s-r.bottomRight,n+o-r.bottomRight,r.bottomRight,Z,0,!0),i.lineTo(e+s,n+r.topRight),i.arc(e+s-r.topRight,n+r.topRight,r.topRight,0,-Z,!0),i.lineTo(e+r.topLeft,n)}const lr=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,cr=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function hr(i,t){const e=(""+i).match(lr);if(!e||e[1]==="normal")return t*1.2;switch(i=+e[2],e[3]){case"px":return i;case"%":i/=100;break}return t*i}const dr=i=>+i||0;function ks(i,t){const e={},n=L(t),s=n?Object.keys(t):t,o=L(i)?n?r=>C(i[r],i[t[r]]):r=>i[r]:()=>i;for(const r of s)e[r]=dr(o(r));return e}function Ss(i){return ks(i,{top:"y",right:"x",bottom:"y",left:"x"})}function Tt(i){return ks(i,["topLeft","topRight","bottomLeft","bottomRight"])}function j(i){const t=Ss(i);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function V(i,t){i=i||{},t=t||E.font;let e=C(i.size,t.size);typeof e=="string"&&(e=parseInt(e,10));let n=C(i.style,t.style);n&&!(""+n).match(cr)&&(console.warn('Invalid font style specified: "'+n+'"'),n=void 0);const s={family:C(i.family,t.family),lineHeight:hr(C(i.lineHeight,t.lineHeight),e),size:e,style:n,weight:C(i.weight,t.weight),string:""};return s.string=er(s),s}function xe(i,t,e,n){let s=!0,o,r,a;for(o=0,r=i.length;o<r;++o)if(a=i[o],a!==void 0&&(t!==void 0&&typeof a=="function"&&(a=a(t),s=!1),e!==void 0&&R(a)&&(a=a[e%a.length],s=!1),a!==void 0))return n&&!s&&(n.cacheable=!1),a}function ur(i,t,e){const{min:n,max:s}=i,o=Do(t,(s-n)/2),r=(a,l)=>e&&a===0?0:a+l;return{min:r(n,-Math.abs(o)),max:r(s,o)}}function yt(i,t){return Object.assign(Object.create(i),t)}function Ci(i,t=[""],e,n,s=()=>i[0]){const o=e||i;typeof n>"u"&&(n=Os("_fallback",i));const r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:i,_rootScopes:o,_fallback:n,_getTarget:s,override:a=>Ci([a,...i],t,o,n)};return new Proxy(r,{deleteProperty(a,l){return delete a[l],delete a._keys,delete i[0][l],!0},get(a,l){return Ds(a,l,()=>yr(l,t,i,a))},getOwnPropertyDescriptor(a,l){return Reflect.getOwnPropertyDescriptor(a._scopes[0],l)},getPrototypeOf(){return Reflect.getPrototypeOf(i[0])},has(a,l){return Gi(a).includes(l)},ownKeys(a){return Gi(a)},set(a,l,c){const h=a._storage||(a._storage=s());return a[l]=h[l]=c,delete a._keys,!0}})}function Wt(i,t,e,n){const s={_cacheable:!1,_proxy:i,_context:t,_subProxy:e,_stack:new Set,_descriptors:Ps(i,n),setContext:o=>Wt(i,o,e,n),override:o=>Wt(i.override(o),t,e,n)};return new Proxy(s,{deleteProperty(o,r){return delete o[r],delete i[r],!0},get(o,r,a){return Ds(o,r,()=>gr(o,r,a))},getOwnPropertyDescriptor(o,r){return o._descriptors.allKeys?Reflect.has(i,r)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(i,r)},getPrototypeOf(){return Reflect.getPrototypeOf(i)},has(o,r){return Reflect.has(i,r)},ownKeys(){return Reflect.ownKeys(i)},set(o,r,a){return i[r]=a,delete o[r],!0}})}function Ps(i,t={scriptable:!0,indexable:!0}){const{_scriptable:e=t.scriptable,_indexable:n=t.indexable,_allKeys:s=t.allKeys}=i;return{allKeys:s,scriptable:e,indexable:n,isScriptable:xt(e)?e:()=>e,isIndexable:xt(n)?n:()=>n}}const fr=(i,t)=>i?i+Mi(t):t,Oi=(i,t)=>L(t)&&i!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function Ds(i,t,e){if(Object.prototype.hasOwnProperty.call(i,t)||t==="constructor")return i[t];const n=e();return i[t]=n,n}function gr(i,t,e){const{_proxy:n,_context:s,_subProxy:o,_descriptors:r}=i;let a=n[t];return xt(a)&&r.isScriptable(t)&&(a=pr(t,a,i,e)),R(a)&&a.length&&(a=mr(t,a,i,r.isIndexable)),Oi(t,a)&&(a=Wt(a,s,o&&o[t],r)),a}function pr(i,t,e,n){const{_proxy:s,_context:o,_subProxy:r,_stack:a}=e;if(a.has(i))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+i);a.add(i);let l=t(o,r||n);return a.delete(i),Oi(i,l)&&(l=Ti(s._scopes,s,i,l)),l}function mr(i,t,e,n){const{_proxy:s,_context:o,_subProxy:r,_descriptors:a}=e;if(typeof o.index<"u"&&n(i))return t[o.index%t.length];if(L(t[0])){const l=t,c=s._scopes.filter(h=>h!==l);t=[];for(const h of l){const d=Ti(c,s,i,h);t.push(Wt(d,o,r&&r[i],a))}}return t}function Cs(i,t,e){return xt(i)?i(t,e):i}const br=(i,t)=>i===!0?t:typeof i=="string"?Bt(t,i):void 0;function xr(i,t,e,n,s){for(const o of t){const r=br(e,o);if(r){i.add(r);const a=Cs(r._fallback,e,s);if(typeof a<"u"&&a!==e&&a!==n)return a}else if(r===!1&&typeof n<"u"&&e!==n)return null}return!1}function Ti(i,t,e,n){const s=t._rootScopes,o=Cs(t._fallback,e,n),r=[...i,...s],a=new Set;a.add(n);let l=qi(a,r,e,o||e,n);return l===null||typeof o<"u"&&o!==e&&(l=qi(a,r,o,l,n),l===null)?!1:Ci(Array.from(a),[""],s,o,()=>_r(t,e,n))}function qi(i,t,e,n,s){for(;e;)e=xr(i,t,e,n,s);return e}function _r(i,t,e){const n=i._getTarget();t in n||(n[t]={});const s=n[t];return R(s)&&L(e)?e:s||{}}function yr(i,t,e,n){let s;for(const o of t)if(s=Os(fr(o,i),e),typeof s<"u")return Oi(i,s)?Ti(e,n,i,s):s}function Os(i,t){for(const e of t){if(!e)continue;const n=e[i];if(typeof n<"u")return n}}function Gi(i){let t=i._keys;return t||(t=i._keys=vr(i._scopes)),t}function vr(i){const t=new Set;for(const e of i)for(const n of Object.keys(e).filter(s=>!s.startsWith("_")))t.add(n);return Array.from(t)}const wr=Number.EPSILON||1e-14,Nt=(i,t)=>t<i.length&&!i[t].skip&&i[t],Ts=i=>i==="x"?"y":"x";function Mr(i,t,e,n){const s=i.skip?t:i,o=t,r=e.skip?t:e,a=ci(o,s),l=ci(r,o);let c=a/(a+l),h=l/(a+l);c=isNaN(c)?0:c,h=isNaN(h)?0:h;const d=n*c,u=n*h;return{previous:{x:o.x-d*(r.x-s.x),y:o.y-d*(r.y-s.y)},next:{x:o.x+u*(r.x-s.x),y:o.y+u*(r.y-s.y)}}}function kr(i,t,e){const n=i.length;let s,o,r,a,l,c=Nt(i,0);for(let h=0;h<n-1;++h)if(l=c,c=Nt(i,h+1),!(!l||!c)){if(ie(t[h],0,wr)){e[h]=e[h+1]=0;continue}s=e[h]/t[h],o=e[h+1]/t[h],a=Math.pow(s,2)+Math.pow(o,2),!(a<=9)&&(r=3/Math.sqrt(a),e[h]=s*r*t[h],e[h+1]=o*r*t[h])}}function Sr(i,t,e="x"){const n=Ts(e),s=i.length;let o,r,a,l=Nt(i,0);for(let c=0;c<s;++c){if(r=a,a=l,l=Nt(i,c+1),!a)continue;const h=a[e],d=a[n];r&&(o=(h-r[e])/3,a[`cp1${e}`]=h-o,a[`cp1${n}`]=d-o*t[c]),l&&(o=(l[e]-h)/3,a[`cp2${e}`]=h+o,a[`cp2${n}`]=d+o*t[c])}}function Pr(i,t="x"){const e=Ts(t),n=i.length,s=Array(n).fill(0),o=Array(n);let r,a,l,c=Nt(i,0);for(r=0;r<n;++r)if(a=l,l=c,c=Nt(i,r+1),!!l){if(c){const h=c[t]-l[t];s[r]=h!==0?(c[e]-l[e])/h:0}o[r]=a?c?et(s[r-1])!==et(s[r])?0:(s[r-1]+s[r])/2:s[r-1]:s[r]}kr(i,s,o),Sr(i,o,t)}function _e(i,t,e){return Math.max(Math.min(i,e),t)}function Dr(i,t){let e,n,s,o,r,a=ht(i[0],t);for(e=0,n=i.length;e<n;++e)r=o,o=a,a=e<n-1&&ht(i[e+1],t),o&&(s=i[e],r&&(s.cp1x=_e(s.cp1x,t.left,t.right),s.cp1y=_e(s.cp1y,t.top,t.bottom)),a&&(s.cp2x=_e(s.cp2x,t.left,t.right),s.cp2y=_e(s.cp2y,t.top,t.bottom)))}function Cr(i,t,e,n,s){let o,r,a,l;if(t.spanGaps&&(i=i.filter(c=>!c.skip)),t.cubicInterpolationMode==="monotone")Pr(i,s);else{let c=n?i[i.length-1]:i[0];for(o=0,r=i.length;o<r;++o)a=i[o],l=Mr(c,a,i[Math.min(o+1,r-(n?0:1))%r],t.tension),a.cp1x=l.previous.x,a.cp1y=l.previous.y,a.cp2x=l.next.x,a.cp2y=l.next.y,c=a}t.capBezierPoints&&Dr(i,e)}function Li(){return typeof window<"u"&&typeof document<"u"}function Ai(i){let t=i.parentNode;return t&&t.toString()==="[object ShadowRoot]"&&(t=t.host),t}function Ee(i,t,e){let n;return typeof i=="string"?(n=parseInt(i,10),i.indexOf("%")!==-1&&(n=n/100*t.parentNode[e])):n=i,n}const $e=i=>i.ownerDocument.defaultView.getComputedStyle(i,null);function Or(i,t){return $e(i).getPropertyValue(t)}const Tr=["top","right","bottom","left"];function Lt(i,t,e){const n={};e=e?"-"+e:"";for(let s=0;s<4;s++){const o=Tr[s];n[o]=parseFloat(i[t+"-"+o+e])||0}return n.width=n.left+n.right,n.height=n.top+n.bottom,n}const Lr=(i,t,e)=>(i>0||t>0)&&(!e||!e.shadowRoot);function Ar(i,t){const e=i.touches,n=e&&e.length?e[0]:i,{offsetX:s,offsetY:o}=n;let r=!1,a,l;if(Lr(s,o,i.target))a=s,l=o;else{const c=t.getBoundingClientRect();a=n.clientX-c.left,l=n.clientY-c.top,r=!0}return{x:a,y:l,box:r}}function ot(i,t){if("native"in i)return i;const{canvas:e,currentDevicePixelRatio:n}=t,s=$e(e),o=s.boxSizing==="border-box",r=Lt(s,"padding"),a=Lt(s,"border","width"),{x:l,y:c,box:h}=Ar(i,e),d=r.left+(h&&a.left),u=r.top+(h&&a.top);let{width:f,height:p}=t;return o&&(f-=r.width+a.width,p-=r.height+a.height),{x:Math.round((l-d)/f*e.width/n),y:Math.round((c-u)/p*e.height/n)}}function zr(i,t,e){let n,s;if(t===void 0||e===void 0){const o=i&&Ai(i);if(!o)t=i.clientWidth,e=i.clientHeight;else{const r=o.getBoundingClientRect(),a=$e(o),l=Lt(a,"border","width"),c=Lt(a,"padding");t=r.width-c.width-l.width,e=r.height-c.height-l.height,n=Ee(a.maxWidth,o,"clientWidth"),s=Ee(a.maxHeight,o,"clientHeight")}}return{width:t,height:e,maxWidth:n||Re,maxHeight:s||Re}}const ye=i=>Math.round(i*10)/10;function Ir(i,t,e,n){const s=$e(i),o=Lt(s,"margin"),r=Ee(s.maxWidth,i,"clientWidth")||Re,a=Ee(s.maxHeight,i,"clientHeight")||Re,l=zr(i,t,e);let{width:c,height:h}=l;if(s.boxSizing==="content-box"){const u=Lt(s,"border","width"),f=Lt(s,"padding");c-=f.width+u.width,h-=f.height+u.height}return c=Math.max(0,c-o.width),h=Math.max(0,n?c/n:h-o.height),c=ye(Math.min(c,r,l.maxWidth)),h=ye(Math.min(h,a,l.maxHeight)),c&&!h&&(h=ye(c/2)),(t!==void 0||e!==void 0)&&n&&l.height&&h>l.height&&(h=l.height,c=ye(Math.floor(h*n))),{width:c,height:h}}function Zi(i,t,e){const n=t||1,s=Math.floor(i.height*n),o=Math.floor(i.width*n);i.height=Math.floor(i.height),i.width=Math.floor(i.width);const r=i.canvas;return r.style&&(e||!r.style.height&&!r.style.width)&&(r.style.height=`${i.height}px`,r.style.width=`${i.width}px`),i.currentDevicePixelRatio!==n||r.height!==s||r.width!==o?(i.currentDevicePixelRatio=n,r.height=s,r.width=o,i.ctx.setTransform(n,0,0,n,0,0),!0):!1}const Rr=function(){let i=!1;try{const t={get passive(){return i=!0,!1}};Li()&&(window.addEventListener("test",null,t),window.removeEventListener("test",null,t))}catch{}return i}();function Qi(i,t){const e=Or(i,t),n=e&&e.match(/^(\d+)(\.\d+)?px$/);return n?+n[1]:void 0}function Dt(i,t,e,n){return{x:i.x+e*(t.x-i.x),y:i.y+e*(t.y-i.y)}}function Fr(i,t,e,n){return{x:i.x+e*(t.x-i.x),y:n==="middle"?e<.5?i.y:t.y:n==="after"?e<1?i.y:t.y:e>0?t.y:i.y}}function Er(i,t,e,n){const s={x:i.cp2x,y:i.cp2y},o={x:t.cp1x,y:t.cp1y},r=Dt(i,s,e),a=Dt(s,o,e),l=Dt(o,t,e),c=Dt(r,a,e),h=Dt(a,l,e);return Dt(c,h,e)}const Br=function(i,t){return{x(e){return i+i+t-e},setWidth(e){t=e},textAlign(e){return e==="center"?e:e==="right"?"left":"right"},xPlus(e,n){return e-n},leftForLtr(e,n){return e-n}}},Hr=function(){return{x(i){return i},setWidth(i){},textAlign(i){return i},xPlus(i,t){return i+t},leftForLtr(i,t){return i}}};function Ft(i,t,e){return i?Br(t,e):Hr()}function Ls(i,t){let e,n;(t==="ltr"||t==="rtl")&&(e=i.canvas.style,n=[e.getPropertyValue("direction"),e.getPropertyPriority("direction")],e.setProperty("direction",t,"important"),i.prevTextDirection=n)}function As(i,t){t!==void 0&&(delete i.prevTextDirection,i.canvas.style.setProperty("direction",t[0],t[1]))}function zs(i){return i==="angle"?{between:ms,compare:Bo,normalize:G}:{between:pt,compare:(t,e)=>t-e,normalize:t=>t}}function Ji({start:i,end:t,count:e,loop:n,style:s}){return{start:i%e,end:t%e,loop:n&&(t-i+1)%e===0,style:s}}function Wr(i,t,e){const{property:n,start:s,end:o}=e,{between:r,normalize:a}=zs(n),l=t.length;let{start:c,end:h,loop:d}=i,u,f;if(d){for(c+=l,h+=l,u=0,f=l;u<f&&r(a(t[c%l][n]),s,o);++u)c--,h--;c%=l,h%=l}return h<c&&(h+=l),{start:c,end:h,loop:d,style:i.style}}function Is(i,t,e){if(!e)return[i];const{property:n,start:s,end:o}=e,r=t.length,{compare:a,between:l,normalize:c}=zs(n),{start:h,end:d,loop:u,style:f}=Wr(i,t,e),p=[];let g=!1,m=null,b,x,y;const v=()=>l(s,y,b)&&a(s,y)!==0,_=()=>a(o,b)===0||l(o,y,b),k=()=>g||v(),M=()=>!g||_();for(let w=h,D=h;w<=d;++w)x=t[w%r],!x.skip&&(b=c(x[n]),b!==y&&(g=l(b,s,o),m===null&&k()&&(m=a(b,s)===0?w:D),m!==null&&M()&&(p.push(Ji({start:m,end:w,loop:u,count:r,style:f})),m=null),D=w,y=b));return m!==null&&p.push(Ji({start:m,end:d,loop:u,count:r,style:f})),p}function Rs(i,t){const e=[],n=i.segments;for(let s=0;s<n.length;s++){const o=Is(n[s],i.points,t);o.length&&e.push(...o)}return e}function Nr(i,t,e,n){let s=0,o=t-1;if(e&&!n)for(;s<t&&!i[s].skip;)s++;for(;s<t&&i[s].skip;)s++;for(s%=t,e&&(o+=s);o>s&&i[o%t].skip;)o--;return o%=t,{start:s,end:o}}function Vr(i,t,e,n){const s=i.length,o=[];let r=t,a=i[t],l;for(l=t+1;l<=e;++l){const c=i[l%s];c.skip||c.stop?a.skip||(n=!1,o.push({start:t%s,end:(l-1)%s,loop:n}),t=r=c.stop?l:null):(r=l,a.skip&&(t=l)),a=c}return r!==null&&o.push({start:t%s,end:r%s,loop:n}),o}function jr(i,t){const e=i.points,n=i.options.spanGaps,s=e.length;if(!s)return[];const o=!!i._loop,{start:r,end:a}=Nr(e,s,o,n);if(n===!0)return tn(i,[{start:r,end:a,loop:o}],e,t);const l=a<r?a+s:a,c=!!i._fullLoop&&r===0&&a===s-1;return tn(i,Vr(e,r,l,c),e,t)}function tn(i,t,e,n){return!n||!n.setContext||!e?t:$r(i,t,e,n)}function $r(i,t,e,n){const s=i._chart.getContext(),o=en(i.options),{_datasetIndex:r,options:{spanGaps:a}}=i,l=e.length,c=[];let h=o,d=t[0].start,u=d;function f(p,g,m,b){const x=a?-1:1;if(p!==g){for(p+=l;e[p%l].skip;)p-=x;for(;e[g%l].skip;)g+=x;p%l!==g%l&&(c.push({start:p%l,end:g%l,loop:m,style:b}),h=b,d=g%l)}}for(const p of t){d=a?d:p.start;let g=e[d%l],m;for(u=d+1;u<=p.end;u++){const b=e[u%l];m=en(n.setContext(yt(s,{type:"segment",p0:g,p1:b,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:r}))),Ur(m,h)&&f(d,u-1,p.loop,h),g=b,h=m}d<u-1&&f(d,u-1,p.loop,h)}return c}function en(i){return{backgroundColor:i.backgroundColor,borderCapStyle:i.borderCapStyle,borderDash:i.borderDash,borderDashOffset:i.borderDashOffset,borderJoinStyle:i.borderJoinStyle,borderWidth:i.borderWidth,borderColor:i.borderColor}}function Ur(i,t){if(!t)return!1;const e=[],n=function(s,o){return Pi(o)?(e.includes(o)||e.push(o),e.indexOf(o)):o};return JSON.stringify(i,n)!==JSON.stringify(t,n)}/*!
+ * Chart.js v4.4.4
+ * https://www.chartjs.org
+ * (c) 2024 Chart.js Contributors
+ * Released under the MIT License
+ */class Yr{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,n,s){const o=e.listeners[s],r=e.duration;o.forEach(a=>a({chart:t,initial:e.initial,numSteps:r,currentStep:Math.min(n-e.start,r)}))}_refresh(){this._request||(this._running=!0,this._request=_s.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((n,s)=>{if(!n.running||!n.items.length)return;const o=n.items;let r=o.length-1,a=!1,l;for(;r>=0;--r)l=o[r],l._active?(l._total>n.duration&&(n.duration=l._total),l.tick(t),a=!0):(o[r]=o[o.length-1],o.pop());a&&(s.draw(),this._notify(s,n,t,"progress")),o.length||(n.running=!1,this._notify(s,n,t,"complete"),n.initial=!1),e+=o.length}),this._lastDate=t,e===0&&(this._running=!1)}_getAnims(t){const e=this._charts;let n=e.get(t);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,n)),n}listen(t,e,n){this._getAnims(t).listeners[e].push(n)}add(t,e){!e||!e.length||this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((n,s)=>Math.max(n,s._duration),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!(!e||!e.running||!e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const n=e.items;let s=n.length-1;for(;s>=0;--s)n[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var at=new Yr;const nn="transparent",Kr={boolean(i,t,e){return e>.5?t:i},color(i,t,e){const n=Yi(i||nn),s=n.valid&&Yi(t||nn);return s&&s.valid?s.mix(n,e).hexString():t},number(i,t,e){return i+(t-i)*e}};class Xr{constructor(t,e,n,s){const o=e[n];s=xe([t.to,s,o,t.from]);const r=xe([t.from,o,s]);this._active=!0,this._fn=t.fn||Kr[t.type||typeof r],this._easing=ne[t.easing]||ne.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=n,this._from=r,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,n){if(this._active){this._notify(!1);const s=this._target[this._prop],o=n-this._start,r=this._duration-o;this._start=n,this._duration=Math.floor(Math.max(r,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=xe([t.to,e,s,t.from]),this._from=xe([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,n=this._duration,s=this._prop,o=this._from,r=this._loop,a=this._to;let l;if(this._active=o!==a&&(r||e<n),!this._active){this._target[s]=a,this._notify(!0);return}if(e<0){this._target[s]=o;return}l=e/n%2,l=r&&l>1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[s]=this._fn(o,a,l)}wait(){const t=this._promises||(this._promises=[]);return new Promise((e,n)=>{t.push({res:e,rej:n})})}_notify(t){const e=t?"res":"rej",n=this._promises||[];for(let s=0;s<n.length;s++)n[s][e]()}}class Fs{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!L(t))return;const e=Object.keys(E.animation),n=this._properties;Object.getOwnPropertyNames(t).forEach(s=>{const o=t[s];if(!L(o))return;const r={};for(const a of e)r[a]=o[a];(R(o.properties)&&o.properties||[s]).forEach(a=>{(a===s||!n.has(a))&&n.set(a,r)})})}_animateOptions(t,e){const n=e.options,s=Gr(t,n);if(!s)return[];const o=this._createAnimations(s,n);return n.$shared&&qr(t.options.$animations,n).then(()=>{t.options=n},()=>{}),o}_createAnimations(t,e){const n=this._properties,s=[],o=t.$animations||(t.$animations={}),r=Object.keys(e),a=Date.now();let l;for(l=r.length-1;l>=0;--l){const c=r[l];if(c.charAt(0)==="$")continue;if(c==="options"){s.push(...this._animateOptions(t,e));continue}const h=e[c];let d=o[c];const u=n.get(c);if(d)if(u&&d.active()){d.update(u,h,a);continue}else d.cancel();if(!u||!u.duration){t[c]=h;continue}o[c]=d=new Xr(u,t,c,h),s.push(d)}return s}update(t,e){if(this._properties.size===0){Object.assign(t,e);return}const n=this._createAnimations(t,e);if(n.length)return at.add(this._chart,n),!0}}function qr(i,t){const e=[],n=Object.keys(t);for(let s=0;s<n.length;s++){const o=i[n[s]];o&&o.active()&&e.push(o.wait())}return Promise.all(e)}function Gr(i,t){if(!t)return;let e=i.options;if(!e){i.options=t;return}return e.$shared&&(i.options=e=Object.assign({},e,{$shared:!1,$animations:{}})),e}function sn(i,t){const e=i&&i.options||{},n=e.reverse,s=e.min===void 0?t:0,o=e.max===void 0?t:0;return{start:n?o:s,end:n?s:o}}function Zr(i,t,e){if(e===!1)return!1;const n=sn(i,e),s=sn(t,e);return{top:s.end,right:n.end,bottom:s.start,left:n.start}}function Qr(i){let t,e,n,s;return L(i)?(t=i.top,e=i.right,n=i.bottom,s=i.left):t=e=n=s=i,{top:t,right:e,bottom:n,left:s,disabled:i===!1}}function Es(i,t){const e=[],n=i._getSortedDatasetMetas(t);let s,o;for(s=0,o=n.length;s<o;++s)e.push(n[s].index);return e}function on(i,t,e,n={}){const s=i.keys,o=n.mode==="single";let r,a,l,c;if(t!==null){for(r=0,a=s.length;r<a;++r){if(l=+s[r],l===e){if(n.all)continue;break}c=i.values[l],F(c)&&(o||t===0||et(t)===et(c))&&(t+=c)}return t}}function Jr(i,t){const{iScale:e,vScale:n}=t,s=e.axis==="x"?"x":"y",o=n.axis==="x"?"x":"y",r=Object.keys(i),a=new Array(r.length);let l,c,h;for(l=0,c=r.length;l<c;++l)h=r[l],a[l]={[s]:h,[o]:i[h]};return a}function rn(i,t){const e=i&&i.options.stacked;return e||e===void 0&&t.stack!==void 0}function ta(i,t,e){return`${i.id}.${t.id}.${e.stack||e.type}`}function ea(i){const{min:t,max:e,minDefined:n,maxDefined:s}=i.getUserBounds();return{min:n?t:Number.NEGATIVE_INFINITY,max:s?e:Number.POSITIVE_INFINITY}}function ia(i,t,e){const n=i[t]||(i[t]={});return n[e]||(n[e]={})}function an(i,t,e,n){for(const s of t.getMatchingVisibleMetas(n).reverse()){const o=i[s.index];if(e&&o>0||!e&&o<0)return s.index}return null}function ln(i,t){const{chart:e,_cachedMeta:n}=i,s=e._stacks||(e._stacks={}),{iScale:o,vScale:r,index:a}=n,l=o.axis,c=r.axis,h=ta(o,r,n),d=t.length;let u;for(let f=0;f<d;++f){const p=t[f],{[l]:g,[c]:m}=p,b=p._stacks||(p._stacks={});u=b[c]=ia(s,h,g),u[a]=m,u._top=an(u,r,!0,n.type),u._bottom=an(u,r,!1,n.type);const x=u._visualValues||(u._visualValues={});x[a]=m}}function Xe(i,t){const e=i.scales;return Object.keys(e).filter(n=>e[n].axis===t).shift()}function na(i,t){return yt(i,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function sa(i,t,e){return yt(i,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:e,index:t,mode:"default",type:"data"})}function Kt(i,t){const e=i.controller.index,n=i.vScale&&i.vScale.axis;if(n){t=t||i._parsed;for(const s of t){const o=s._stacks;if(!o||o[n]===void 0||o[n][e]===void 0)return;delete o[n][e],o[n]._visualValues!==void 0&&o[n]._visualValues[e]!==void 0&&delete o[n]._visualValues[e]}}}const qe=i=>i==="reset"||i==="none",cn=(i,t)=>t?i:Object.assign({},i),oa=(i,t,e)=>i&&!t.hidden&&t._stacked&&{keys:Es(e,!0),values:null};class Et{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=rn(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Kt(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,n=this.getDataset(),s=(d,u,f,p)=>d==="x"?u:d==="r"?p:f,o=e.xAxisID=C(n.xAxisID,Xe(t,"x")),r=e.yAxisID=C(n.yAxisID,Xe(t,"y")),a=e.rAxisID=C(n.rAxisID,Xe(t,"r")),l=e.indexAxis,c=e.iAxisID=s(l,o,r,a),h=e.vAxisID=s(l,r,o,a);e.xScale=this.getScaleForId(o),e.yScale=this.getScaleForId(r),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(c),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&ji(this._data,this),t._stacked&&Kt(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),n=this._data;if(L(e)){const s=this._cachedMeta;this._data=Jr(e,s)}else if(n!==e){if(n){ji(n,this);const s=this._cachedMeta;Kt(s),s._parsed=[]}e&&Object.isExtensible(e)&&Vo(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,n=this.getDataset();let s=!1;this._dataCheck();const o=e._stacked;e._stacked=rn(e.vScale,e),e.stack!==n.stack&&(s=!0,Kt(e),e.stack=n.stack),this._resyncElements(t),(s||o!==e._stacked)&&ln(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),n=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:n,_data:s}=this,{iScale:o,_stacked:r}=n,a=o.axis;let l=t===0&&e===s.length?!0:n._sorted,c=t>0&&n._parsed[t-1],h,d,u;if(this._parsing===!1)n._parsed=s,n._sorted=!0,u=s;else{R(s[t])?u=this.parseArrayData(n,s,t,e):L(s[t])?u=this.parseObjectData(n,s,t,e):u=this.parsePrimitiveData(n,s,t,e);const f=()=>d[a]===null||c&&d[a]<c[a];for(h=0;h<e;++h)n._parsed[h+t]=d=u[h],l&&(f()&&(l=!1),c=d);n._sorted=l}r&&ln(this,u)}parsePrimitiveData(t,e,n,s){const{iScale:o,vScale:r}=t,a=o.axis,l=r.axis,c=o.getLabels(),h=o===r,d=new Array(s);let u,f,p;for(u=0,f=s;u<f;++u)p=u+n,d[u]={[a]:h||o.parse(c[p],p),[l]:r.parse(e[p],p)};return d}parseArrayData(t,e,n,s){const{xScale:o,yScale:r}=t,a=new Array(s);let l,c,h,d;for(l=0,c=s;l<c;++l)h=l+n,d=e[h],a[l]={x:o.parse(d[0],h),y:r.parse(d[1],h)};return a}parseObjectData(t,e,n,s){const{xScale:o,yScale:r}=t,{xAxisKey:a="x",yAxisKey:l="y"}=this._parsing,c=new Array(s);let h,d,u,f;for(h=0,d=s;h<d;++h)u=h+n,f=e[u],c[h]={x:o.parse(Bt(f,a),u),y:r.parse(Bt(f,l),u)};return c}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,n){const s=this.chart,o=this._cachedMeta,r=e[t.axis],a={keys:Es(s,!0),values:e._stacks[t.axis]._visualValues};return on(a,r,o.index,{mode:n})}updateRangeFromParsed(t,e,n,s){const o=n[e.axis];let r=o===null?NaN:o;const a=s&&n._stacks[e.axis];s&&a&&(s.values=a,r=on(s,o,this._cachedMeta.index)),t.min=Math.min(t.min,r),t.max=Math.max(t.max,r)}getMinMax(t,e){const n=this._cachedMeta,s=n._parsed,o=n._sorted&&t===n.iScale,r=s.length,a=this._getOtherScale(t),l=oa(e,n,this.chart),c={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:h,max:d}=ea(a);let u,f;function p(){f=s[u];const g=f[a.axis];return!F(f[t.axis])||h>g||d<g}for(u=0;u<r&&!(!p()&&(this.updateRangeFromParsed(c,t,f,l),o));++u);if(o){for(u=r-1;u>=0;--u)if(!p()){this.updateRangeFromParsed(c,t,f,l);break}}return c}getAllParsedValues(t){const e=this._cachedMeta._parsed,n=[];let s,o,r;for(s=0,o=e.length;s<o;++s)r=e[s][t.axis],F(r)&&n.push(r);return n}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,n=e.iScale,s=e.vScale,o=this.getParsed(t);return{label:n?""+n.getLabelForValue(o[n.axis]):"",value:s?""+s.getLabelForValue(o[s.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=Qr(C(this.options.clip,Zr(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,n=this._cachedMeta,s=n.data||[],o=e.chartArea,r=[],a=this._drawStart||0,l=this._drawCount||s.length-a,c=this.options.drawActiveElementsOnTop;let h;for(n.dataset&&n.dataset.draw(t,o,a,l),h=a;h<a+l;++h){const d=s[h];d.hidden||(d.active&&c?r.push(d):d.draw(t,o))}for(h=0;h<r.length;++h)r[h].draw(t,o)}getStyle(t,e){const n=e?"active":"default";return t===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(n):this.resolveDataElementOptions(t||0,n)}getContext(t,e,n){const s=this.getDataset();let o;if(t>=0&&t<this._cachedMeta.data.length){const r=this._cachedMeta.data[t];o=r.$context||(r.$context=sa(this.getContext(),t,r)),o.parsed=this.getParsed(t),o.raw=s.data[t],o.index=o.dataIndex=t}else o=this.$context||(this.$context=na(this.chart.getContext(),this.index)),o.dataset=s,o.index=o.datasetIndex=this.index;return o.active=!!e,o.mode=n,o}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",n){const s=e==="active",o=this._cachedDataOpts,r=t+"-"+e,a=o[r],l=this.enableOptionSharing&&ae(n);if(a)return cn(a,l);const c=this.chart.config,h=c.datasetElementScopeKeys(this._type,t),d=s?[`${t}Hover`,"hover",t,""]:[t,""],u=c.getOptionScopes(this.getDataset(),h),f=Object.keys(E.elements[t]),p=()=>this.getContext(n,s,e),g=c.resolveNamedOptions(u,f,p,d);return g.$shared&&(g.$shared=l,o[r]=Object.freeze(cn(g,l))),g}_resolveAnimations(t,e,n){const s=this.chart,o=this._cachedDataOpts,r=`animation-${e}`,a=o[r];if(a)return a;let l;if(s.options.animation!==!1){const h=this.chart.config,d=h.datasetAnimationScopeKeys(this._type,e),u=h.getOptionScopes(this.getDataset(),d);l=h.createResolver(u,this.getContext(t,n,e))}const c=new Fs(s,l&&l.animations);return l&&l._cacheable&&(o[r]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||qe(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const n=this.resolveDataElementOptions(t,e),s=this._sharedOptions,o=this.getSharedOptions(n),r=this.includeOptions(e,o)||o!==s;return this.updateSharedOptions(o,e,n),{sharedOptions:o,includeOptions:r}}updateElement(t,e,n,s){qe(s)?Object.assign(t,n):this._resolveAnimations(e,s).update(t,n)}updateSharedOptions(t,e,n){t&&!qe(e)&&this._resolveAnimations(void 0,e).update(t,n)}_setStyle(t,e,n,s){t.active=s;const o=this.getStyle(e,s);this._resolveAnimations(e,n,s).update(t,{options:!s&&this.getSharedOptions(o)||o})}removeHoverStyle(t,e,n){this._setStyle(t,n,"active",!1)}setHoverStyle(t,e,n){this._setStyle(t,n,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,n=this._cachedMeta.data;for(const[a,l,c]of this._syncList)this[a](l,c);this._syncList=[];const s=n.length,o=e.length,r=Math.min(o,s);r&&this.parse(0,r),o>s?this._insertElements(s,o-s,t):o<s&&this._removeElements(o,s-o)}_insertElements(t,e,n=!0){const s=this._cachedMeta,o=s.data,r=t+e;let a;const l=c=>{for(c.length+=e,a=c.length-1;a>=r;a--)c[a]=c[a-e]};for(l(o),a=t;a<r;++a)o[a]=new this.dataElementType;this._parsing&&l(s._parsed),this.parse(t,e),n&&this.updateElements(o,t,e,"reset")}updateElements(t,e,n,s){}_removeElements(t,e){const n=this._cachedMeta;if(this._parsing){const s=n._parsed.splice(t,e);n._stacked&&Kt(n,s)}n.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,n,s]=t;this[e](n,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const n=arguments.length-2;n&&this._sync(["_insertElements",t,n])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}S(Et,"defaults",{}),S(Et,"datasetElementType",null),S(Et,"dataElementType",null);function ra(i,t){if(!i._cache.$bar){const e=i.getMatchingVisibleMetas(t);let n=[];for(let s=0,o=e.length;s<o;s++)n=n.concat(e[s].controller.getAllParsedValues(i));i._cache.$bar=xs(n.sort((s,o)=>s-o))}return i._cache.$bar}function aa(i){const t=i.iScale,e=ra(t,i.type);let n=t._length,s,o,r,a;const l=()=>{r===32767||r===-32768||(ae(a)&&(n=Math.min(n,Math.abs(r-a)||n)),a=r)};for(s=0,o=e.length;s<o;++s)r=t.getPixelForValue(e[s]),l();for(a=void 0,s=0,o=t.ticks.length;s<o;++s)r=t.getPixelForTick(s),l();return n}function la(i,t,e,n){const s=e.barThickness;let o,r;return I(s)?(o=t.min*e.categoryPercentage,r=e.barPercentage):(o=s*n,r=1),{chunk:o/n,ratio:r,start:t.pixels[i]-o/2}}function ca(i,t,e,n){const s=t.pixels,o=s[i];let r=i>0?s[i-1]:null,a=i<s.length-1?s[i+1]:null;const l=e.categoryPercentage;r===null&&(r=o-(a===null?t.end-t.start:a-o)),a===null&&(a=o+o-r);const c=o-(o-Math.min(r,a))/2*l;return{chunk:Math.abs(a-r)/2*l/n,ratio:e.barPercentage,start:c}}function ha(i,t,e,n){const s=e.parse(i[0],n),o=e.parse(i[1],n),r=Math.min(s,o),a=Math.max(s,o);let l=r,c=a;Math.abs(r)>Math.abs(a)&&(l=a,c=r),t[e.axis]=c,t._custom={barStart:l,barEnd:c,start:s,end:o,min:r,max:a}}function Bs(i,t,e,n){return R(i)?ha(i,t,e,n):t[e.axis]=e.parse(i,n),t}function hn(i,t,e,n){const s=i.iScale,o=i.vScale,r=s.getLabels(),a=s===o,l=[];let c,h,d,u;for(c=e,h=e+n;c<h;++c)u=t[c],d={},d[s.axis]=a||s.parse(r[c],c),l.push(Bs(u,d,o,c));return l}function Ge(i){return i&&i.barStart!==void 0&&i.barEnd!==void 0}function da(i,t,e){return i!==0?et(i):(t.isHorizontal()?1:-1)*(t.min>=e?1:-1)}function ua(i){let t,e,n,s,o;return i.horizontal?(t=i.base>i.x,e="left",n="right"):(t=i.base<i.y,e="bottom",n="top"),t?(s="end",o="start"):(s="start",o="end"),{start:e,end:n,reverse:t,top:s,bottom:o}}function fa(i,t,e,n){let s=t.borderSkipped;const o={};if(!s){i.borderSkipped=o;return}if(s===!0){i.borderSkipped={top:!0,right:!0,bottom:!0,left:!0};return}const{start:r,end:a,reverse:l,top:c,bottom:h}=ua(i);s==="middle"&&e&&(i.enableBorderRadius=!0,(e._top||0)===n?s=c:(e._bottom||0)===n?s=h:(o[dn(h,r,a,l)]=!0,s=c)),o[dn(s,r,a,l)]=!0,i.borderSkipped=o}function dn(i,t,e,n){return n?(i=ga(i,t,e),i=un(i,e,t)):i=un(i,t,e),i}function ga(i,t,e){return i===t?e:i===e?t:i}function un(i,t,e){return i==="start"?t:i==="end"?e:i}function pa(i,{inflateAmount:t},e){i.inflateAmount=t==="auto"?e===1?.33:0:t}class Ze extends Et{parsePrimitiveData(t,e,n,s){return hn(t,e,n,s)}parseArrayData(t,e,n,s){return hn(t,e,n,s)}parseObjectData(t,e,n,s){const{iScale:o,vScale:r}=t,{xAxisKey:a="x",yAxisKey:l="y"}=this._parsing,c=o.axis==="x"?a:l,h=r.axis==="x"?a:l,d=[];let u,f,p,g;for(u=n,f=n+s;u<f;++u)g=e[u],p={},p[o.axis]=o.parse(Bt(g,c),u),d.push(Bs(Bt(g,h),p,r,u));return d}updateRangeFromParsed(t,e,n,s){super.updateRangeFromParsed(t,e,n,s);const o=n._custom;o&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,o.min),t.max=Math.max(t.max,o.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:n,vScale:s}=e,o=this.getParsed(t),r=o._custom,a=Ge(r)?"["+r.start+", "+r.end+"]":""+s.getLabelForValue(o[s.axis]);return{label:""+n.getLabelForValue(o[n.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();const t=this._cachedMeta;t.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,n,s){const o=s==="reset",{index:r,_cachedMeta:{vScale:a}}=this,l=a.getBasePixel(),c=a.isHorizontal(),h=this._getRuler(),{sharedOptions:d,includeOptions:u}=this._getSharedOptions(e,s);for(let f=e;f<e+n;f++){const p=this.getParsed(f),g=o||I(p[a.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),m=this._calculateBarIndexPixels(f,h),b=(p._stacks||{})[a.axis],x={horizontal:c,base:g.base,enableBorderRadius:!b||Ge(p._custom)||r===b._top||r===b._bottom,x:c?g.head:m.center,y:c?m.center:g.head,height:c?m.size:Math.abs(g.size),width:c?Math.abs(g.size):m.size};u&&(x.options=d||this.resolveDataElementOptions(f,t[f].active?"active":s));const y=x.options||t[f].options;fa(x,y,b,r),pa(x,y,h.ratio),this.updateElement(t[f],f,x,s)}}_getStacks(t,e){const{iScale:n}=this._cachedMeta,s=n.getMatchingVisibleMetas(this._type).filter(h=>h.controller.options.grouped),o=n.options.stacked,r=[],a=this._cachedMeta.controller.getParsed(e),l=a&&a[n.axis],c=h=>{const d=h._parsed.find(f=>f[n.axis]===l),u=d&&d[h.vScale.axis];if(I(u)||isNaN(u))return!0};for(const h of s)if(!(e!==void 0&&c(h))&&((o===!1||r.indexOf(h.stack)===-1||o===void 0&&h.stack===void 0)&&r.push(h.stack),h.index===t))break;return r.length||r.push(void 0),r}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,n){const s=this._getStacks(t,n),o=e!==void 0?s.indexOf(e):-1;return o===-1?s.length-1:o}_getRuler(){const t=this.options,e=this._cachedMeta,n=e.iScale,s=[];let o,r;for(o=0,r=e.data.length;o<r;++o)s.push(n.getPixelForValue(this.getParsed(o)[n.axis],o));const a=t.barThickness;return{min:a||aa(e),pixels:s,start:n._startPixel,end:n._endPixel,stackCount:this._getStackCount(),scale:n,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:n,index:s},options:{base:o,minBarLength:r}}=this,a=o||0,l=this.getParsed(t),c=l._custom,h=Ge(c);let d=l[e.axis],u=0,f=n?this.applyStack(e,l,n):d,p,g;f!==d&&(u=f-d,f=d),h&&(d=c.barStart,f=c.barEnd-c.barStart,d!==0&&et(d)!==et(c.barEnd)&&(u=0),u+=d);const m=!I(o)&&!h?o:u;let b=e.getPixelForValue(m);if(this.chart.getDataVisibility(t)?p=e.getPixelForValue(u+f):p=b,g=p-b,Math.abs(g)<r){g=da(g,e,a)*r,d===a&&(b-=g/2);const x=e.getPixelForDecimal(0),y=e.getPixelForDecimal(1),v=Math.min(x,y),_=Math.max(x,y);b=Math.max(Math.min(b,_),v),p=b+g,n&&!h&&(l._stacks[e.axis]._visualValues[s]=e.getValueForPixel(p)-e.getValueForPixel(b))}if(b===e.getPixelForValue(a)){const x=et(g)*e.getLineWidthForValue(a)/2;b+=x,g-=x}return{size:g,base:b,head:p,center:p+g/2}}_calculateBarIndexPixels(t,e){const n=e.scale,s=this.options,o=s.skipNull,r=C(s.maxBarThickness,1/0);let a,l;if(e.grouped){const c=o?this._getStackCount(t):e.stackCount,h=s.barThickness==="flex"?ca(t,e,s,c):la(t,e,s,c),d=this._getStackIndex(this.index,this._cachedMeta.stack,o?t:void 0);a=h.start+h.chunk*d+h.chunk/2,l=Math.min(r,h.chunk*h.ratio)}else a=n.getPixelForValue(this.getParsed(t)[n.axis],t),l=Math.min(r,e.min*e.ratio);return{base:a-l/2,head:a+l/2,center:a,size:l}}draw(){const t=this._cachedMeta,e=t.vScale,n=t.data,s=n.length;let o=0;for(;o<s;++o)this.getParsed(o)[e.axis]!==null&&!n[o].hidden&&n[o].draw(this._ctx)}}S(Ze,"id","bar"),S(Ze,"defaults",{datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}}),S(Ze,"overrides",{scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}});class Te extends Et{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:n,data:s=[],_dataset:o}=e,r=this.chart._animationsDisabled;let{start:a,count:l}=Uo(e,s,r);this._drawStart=a,this._drawCount=l,Yo(e)&&(a=0,l=s.length),n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!o._decimated,n.points=s;const c=this.resolveDatasetElementOptions(t);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(n,void 0,{animated:!r,options:c},t),this.updateElements(s,a,l,t)}updateElements(t,e,n,s){const o=s==="reset",{iScale:r,vScale:a,_stacked:l,_dataset:c}=this._cachedMeta,{sharedOptions:h,includeOptions:d}=this._getSharedOptions(e,s),u=r.axis,f=a.axis,{spanGaps:p,segment:g}=this.options,m=le(p)?p:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||s==="none",x=e+n,y=t.length;let v=e>0&&this.getParsed(e-1);for(let _=0;_<y;++_){const k=t[_],M=b?k:{};if(_<e||_>=x){M.skip=!0;continue}const w=this.getParsed(_),D=I(w[f]),A=M[u]=r.getPixelForValue(w[u],_),T=M[f]=o||D?a.getBasePixel():a.getPixelForValue(l?this.applyStack(a,w,l):w[f],_);M.skip=isNaN(A)||isNaN(T)||D,M.stop=_>0&&Math.abs(w[u]-v[u])>m,g&&(M.parsed=w,M.raw=c.data[_]),d&&(M.options=h||this.resolveDataElementOptions(_,k.active?"active":s)),b||this.updateElement(k,_,M,s),v=w}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,n=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return n;const o=s[0].size(this.resolveDataElementOptions(0)),r=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(n,o,r)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}S(Te,"id","line"),S(Te,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),S(Te,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});function St(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class zi{constructor(t){S(this,"options");this.options=t||{}}static override(t){Object.assign(zi.prototype,t)}init(){}formats(){return St()}parse(){return St()}format(){return St()}add(){return St()}diff(){return St()}startOf(){return St()}endOf(){return St()}}var Hs={_date:zi};function ma(i,t,e,n){const{controller:s,data:o,_sorted:r}=i,a=s._cachedMeta.iScale;if(a&&t===a.axis&&t!=="r"&&r&&o.length){const l=a._reversePixels?Wo:Ct;if(n){if(s._sharedOptions){const c=o[0],h=typeof c.getRange=="function"&&c.getRange(t);if(h){const d=l(o,t,e-h),u=l(o,t,e+h);return{lo:d.lo,hi:u.hi}}}}else return l(o,t,e)}return{lo:0,hi:o.length-1}}function fe(i,t,e,n,s){const o=i.getSortedVisibleDatasetMetas(),r=e[t];for(let a=0,l=o.length;a<l;++a){const{index:c,data:h}=o[a],{lo:d,hi:u}=ma(o[a],t,r,s);for(let f=d;f<=u;++f){const p=h[f];p.skip||n(p,c,f)}}}function ba(i){const t=i.indexOf("x")!==-1,e=i.indexOf("y")!==-1;return function(n,s){const o=t?Math.abs(n.x-s.x):0,r=e?Math.abs(n.y-s.y):0;return Math.sqrt(Math.pow(o,2)+Math.pow(r,2))}}function Qe(i,t,e,n,s){const o=[];return!s&&!i.isPointInArea(t)||fe(i,e,t,function(a,l,c){!s&&!ht(a,i.chartArea,0)||a.inRange(t.x,t.y,n)&&o.push({element:a,datasetIndex:l,index:c})},!0),o}function xa(i,t,e,n){let s=[];function o(r,a,l){const{startAngle:c,endAngle:h}=r.getProps(["startAngle","endAngle"],n),{angle:d}=Eo(r,{x:t.x,y:t.y});ms(d,c,h)&&s.push({element:r,datasetIndex:a,index:l})}return fe(i,e,t,o),s}function _a(i,t,e,n,s,o){let r=[];const a=ba(e);let l=Number.POSITIVE_INFINITY;function c(h,d,u){const f=h.inRange(t.x,t.y,s);if(n&&!f)return;const p=h.getCenterPoint(s);if(!(!!o||i.isPointInArea(p))&&!f)return;const m=a(t,p);m<l?(r=[{element:h,datasetIndex:d,index:u}],l=m):m===l&&r.push({element:h,datasetIndex:d,index:u})}return fe(i,e,t,c),r}function Je(i,t,e,n,s,o){return!o&&!i.isPointInArea(t)?[]:e==="r"&&!n?xa(i,t,e,s):_a(i,t,e,n,s,o)}function fn(i,t,e,n,s){const o=[],r=e==="x"?"inXRange":"inYRange";let a=!1;return fe(i,e,t,(l,c,h)=>{l[r]&&l[r](t[e],s)&&(o.push({element:l,datasetIndex:c,index:h}),a=a||l.inRange(t.x,t.y,s))}),n&&!a?[]:o}var ya={evaluateInteractionItems:fe,modes:{index(i,t,e,n){const s=ot(t,i),o=e.axis||"x",r=e.includeInvisible||!1,a=e.intersect?Qe(i,s,o,n,r):Je(i,s,o,!1,n,r),l=[];return a.length?(i.getSortedVisibleDatasetMetas().forEach(c=>{const h=a[0].index,d=c.data[h];d&&!d.skip&&l.push({element:d,datasetIndex:c.index,index:h})}),l):[]},dataset(i,t,e,n){const s=ot(t,i),o=e.axis||"xy",r=e.includeInvisible||!1;let a=e.intersect?Qe(i,s,o,n,r):Je(i,s,o,!1,n,r);if(a.length>0){const l=a[0].datasetIndex,c=i.getDatasetMeta(l).data;a=[];for(let h=0;h<c.length;++h)a.push({element:c[h],datasetIndex:l,index:h})}return a},point(i,t,e,n){const s=ot(t,i),o=e.axis||"xy",r=e.includeInvisible||!1;return Qe(i,s,o,n,r)},nearest(i,t,e,n){const s=ot(t,i),o=e.axis||"xy",r=e.includeInvisible||!1;return Je(i,s,o,e.intersect,n,r)},x(i,t,e,n){const s=ot(t,i);return fn(i,s,"x",e.intersect,n)},y(i,t,e,n){const s=ot(t,i);return fn(i,s,"y",e.intersect,n)}}};const Ws=["left","top","right","bottom"];function Xt(i,t){return i.filter(e=>e.pos===t)}function gn(i,t){return i.filter(e=>Ws.indexOf(e.pos)===-1&&e.box.axis===t)}function qt(i,t){return i.sort((e,n)=>{const s=t?n:e,o=t?e:n;return s.weight===o.weight?s.index-o.index:s.weight-o.weight})}function va(i){const t=[];let e,n,s,o,r,a;for(e=0,n=(i||[]).length;e<n;++e)s=i[e],{position:o,options:{stack:r,stackWeight:a=1}}=s,t.push({index:e,box:s,pos:o,horizontal:s.isHorizontal(),weight:s.weight,stack:r&&o+r,stackWeight:a});return t}function wa(i){const t={};for(const e of i){const{stack:n,pos:s,stackWeight:o}=e;if(!n||!Ws.includes(s))continue;const r=t[n]||(t[n]={count:0,placed:0,weight:0,size:0});r.count++,r.weight+=o}return t}function Ma(i,t){const e=wa(i),{vBoxMaxWidth:n,hBoxMaxHeight:s}=t;let o,r,a;for(o=0,r=i.length;o<r;++o){a=i[o];const{fullSize:l}=a.box,c=e[a.stack],h=c&&a.stackWeight/c.weight;a.horizontal?(a.width=h?h*n:l&&t.availableWidth,a.height=s):(a.width=n,a.height=h?h*s:l&&t.availableHeight)}return e}function ka(i){const t=va(i),e=qt(t.filter(c=>c.box.fullSize),!0),n=qt(Xt(t,"left"),!0),s=qt(Xt(t,"right")),o=qt(Xt(t,"top"),!0),r=qt(Xt(t,"bottom")),a=gn(t,"x"),l=gn(t,"y");return{fullSize:e,leftAndTop:n.concat(o),rightAndBottom:s.concat(l).concat(r).concat(a),chartArea:Xt(t,"chartArea"),vertical:n.concat(s).concat(l),horizontal:o.concat(r).concat(a)}}function pn(i,t,e,n){return Math.max(i[e],t[e])+Math.max(i[n],t[n])}function Ns(i,t){i.top=Math.max(i.top,t.top),i.left=Math.max(i.left,t.left),i.bottom=Math.max(i.bottom,t.bottom),i.right=Math.max(i.right,t.right)}function Sa(i,t,e,n){const{pos:s,box:o}=e,r=i.maxPadding;if(!L(s)){e.size&&(i[s]-=e.size);const d=n[e.stack]||{size:0,count:1};d.size=Math.max(d.size,e.horizontal?o.height:o.width),e.size=d.size/d.count,i[s]+=e.size}o.getPadding&&Ns(r,o.getPadding());const a=Math.max(0,t.outerWidth-pn(r,i,"left","right")),l=Math.max(0,t.outerHeight-pn(r,i,"top","bottom")),c=a!==i.w,h=l!==i.h;return i.w=a,i.h=l,e.horizontal?{same:c,other:h}:{same:h,other:c}}function Pa(i){const t=i.maxPadding;function e(n){const s=Math.max(t[n]-i[n],0);return i[n]+=s,s}i.y+=e("top"),i.x+=e("left"),e("right"),e("bottom")}function Da(i,t){const e=t.maxPadding;function n(s){const o={left:0,top:0,right:0,bottom:0};return s.forEach(r=>{o[r]=Math.max(t[r],e[r])}),o}return n(i?["left","right"]:["top","bottom"])}function Qt(i,t,e,n){const s=[];let o,r,a,l,c,h;for(o=0,r=i.length,c=0;o<r;++o){a=i[o],l=a.box,l.update(a.width||t.w,a.height||t.h,Da(a.horizontal,t));const{same:d,other:u}=Sa(t,e,a,n);c|=d&&s.length,h=h||u,l.fullSize||s.push(a)}return c&&Qt(s,t,e,n)||h}function ve(i,t,e,n,s){i.top=e,i.left=t,i.right=t+n,i.bottom=e+s,i.width=n,i.height=s}function mn(i,t,e,n){const s=e.padding;let{x:o,y:r}=t;for(const a of i){const l=a.box,c=n[a.stack]||{count:1,placed:0,weight:1},h=a.stackWeight/c.weight||1;if(a.horizontal){const d=t.w*h,u=c.size||l.height;ae(c.start)&&(r=c.start),l.fullSize?ve(l,s.left,r,e.outerWidth-s.right-s.left,u):ve(l,t.left+c.placed,r,d,u),c.start=r,c.placed+=d,r=l.bottom}else{const d=t.h*h,u=c.size||l.width;ae(c.start)&&(o=c.start),l.fullSize?ve(l,o,s.top,u,e.outerHeight-s.bottom-s.top):ve(l,o,t.top+c.placed,u,d),c.start=o,c.placed+=d,o=l.right}}t.x=o,t.y=r}var mt={addBox(i,t){i.boxes||(i.boxes=[]),t.fullSize=t.fullSize||!1,t.position=t.position||"top",t.weight=t.weight||0,t._layers=t._layers||function(){return[{z:0,draw(e){t.draw(e)}}]},i.boxes.push(t)},removeBox(i,t){const e=i.boxes?i.boxes.indexOf(t):-1;e!==-1&&i.boxes.splice(e,1)},configure(i,t,e){t.fullSize=e.fullSize,t.position=e.position,t.weight=e.weight},update(i,t,e,n){if(!i)return;const s=j(i.options.layout.padding),o=Math.max(t-s.width,0),r=Math.max(e-s.height,0),a=ka(i.boxes),l=a.vertical,c=a.horizontal;O(i.boxes,g=>{typeof g.beforeLayout=="function"&&g.beforeLayout()});const h=l.reduce((g,m)=>m.box.options&&m.box.options.display===!1?g:g+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:e,padding:s,availableWidth:o,availableHeight:r,vBoxMaxWidth:o/2/h,hBoxMaxHeight:r/2}),u=Object.assign({},s);Ns(u,j(n));const f=Object.assign({maxPadding:u,w:o,h:r,x:s.left,y:s.top},s),p=Ma(l.concat(c),d);Qt(a.fullSize,f,d,p),Qt(l,f,d,p),Qt(c,f,d,p)&&Qt(l,f,d,p),Pa(f),mn(a.leftAndTop,f,d,p),f.x+=f.w,f.y+=f.h,mn(a.rightAndBottom,f,d,p),i.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},O(a.chartArea,g=>{const m=g.box;Object.assign(m,i.chartArea),m.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}};class Vs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,n){}removeEventListener(t,e,n){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,n,s){return e=Math.max(0,e||t.width),n=n||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):n)}}isAttached(t){return!0}updateConfig(t){}}class Ca extends Vs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const Le="$chartjs",Oa={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},bn=i=>i===null||i==="";function Ta(i,t){const e=i.style,n=i.getAttribute("height"),s=i.getAttribute("width");if(i[Le]={initial:{height:n,width:s,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",bn(s)){const o=Qi(i,"width");o!==void 0&&(i.width=o)}if(bn(n))if(i.style.height==="")i.height=i.width/(t||2);else{const o=Qi(i,"height");o!==void 0&&(i.height=o)}return i}const js=Rr?{passive:!0}:!1;function La(i,t,e){i&&i.addEventListener(t,e,js)}function Aa(i,t,e){i&&i.canvas&&i.canvas.removeEventListener(t,e,js)}function za(i,t){const e=Oa[i.type]||i.type,{x:n,y:s}=ot(i,t);return{type:e,chart:t,native:i,x:n!==void 0?n:null,y:s!==void 0?s:null}}function Be(i,t){for(const e of i)if(e===t||e.contains(t))return!0}function Ia(i,t,e){const n=i.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||Be(a.addedNodes,n),r=r&&!Be(a.removedNodes,n);r&&e()});return s.observe(document,{childList:!0,subtree:!0}),s}function Ra(i,t,e){const n=i.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||Be(a.removedNodes,n),r=r&&!Be(a.addedNodes,n);r&&e()});return s.observe(document,{childList:!0,subtree:!0}),s}const he=new Map;let xn=0;function $s(){const i=window.devicePixelRatio;i!==xn&&(xn=i,he.forEach((t,e)=>{e.currentDevicePixelRatio!==i&&t()}))}function Fa(i,t){he.size||window.addEventListener("resize",$s),he.set(i,t)}function Ea(i){he.delete(i),he.size||window.removeEventListener("resize",$s)}function Ba(i,t,e){const n=i.canvas,s=n&&Ai(n);if(!s)return;const o=ys((a,l)=>{const c=s.clientWidth;e(a,l),c<s.clientWidth&&e()},window),r=new ResizeObserver(a=>{const l=a[0],c=l.contentRect.width,h=l.contentRect.height;c===0&&h===0||o(c,h)});return r.observe(s),Fa(i,o),r}function ti(i,t,e){e&&e.disconnect(),t==="resize"&&Ea(i)}function Ha(i,t,e){const n=i.canvas,s=ys(o=>{i.ctx!==null&&e(za(o,i))},i);return La(n,t,s),s}class Wa extends Vs{acquireContext(t,e){const n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(Ta(t,e),n):null}releaseContext(t){const e=t.canvas;if(!e[Le])return!1;const n=e[Le].initial;["height","width"].forEach(o=>{const r=n[o];I(r)?e.removeAttribute(o):e.setAttribute(o,r)});const s=n.style||{};return Object.keys(s).forEach(o=>{e.style[o]=s[o]}),e.width=e.width,delete e[Le],!0}addEventListener(t,e,n){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),r={attach:Ia,detach:Ra,resize:Ba}[e]||Ha;s[e]=r(t,e,n)}removeEventListener(t,e){const n=t.$proxies||(t.$proxies={}),s=n[e];if(!s)return;({attach:ti,detach:ti,resize:ti}[e]||Aa)(t,e,s),n[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,n,s){return Ir(t,e,n,s)}isAttached(t){const e=t&&Ai(t);return!!(e&&e.isConnected)}}function Na(i){return!Li()||typeof OffscreenCanvas<"u"&&i instanceof OffscreenCanvas?Ca:Wa}class dt{constructor(){S(this,"x");S(this,"y");S(this,"active",!1);S(this,"options");S(this,"$animations")}tooltipPosition(t){const{x:e,y:n}=this.getProps(["x","y"],t);return{x:e,y:n}}hasValue(){return le(this.x)&&le(this.y)}getProps(t,e){const n=this.$animations;if(!e||!n)return this;const s={};return t.forEach(o=>{s[o]=n[o]&&n[o].active()?n[o]._to:this[o]}),s}}S(dt,"defaults",{}),S(dt,"defaultRoutes");function Va(i,t){const e=i.options.ticks,n=ja(i),s=Math.min(e.maxTicksLimit||n,n),o=e.major.enabled?Ua(t):[],r=o.length,a=o[0],l=o[r-1],c=[];if(r>s)return Ya(t,c,o,r/s),c;const h=$a(o,t,s);if(r>0){let d,u;const f=r>1?Math.round((l-a)/(r-1)):null;for(we(t,c,h,I(f)?0:a-f,a),d=0,u=r-1;d<u;d++)we(t,c,h,o[d],o[d+1]);return we(t,c,h,l,I(f)?t.length:l+f),c}return we(t,c,h),c}function ja(i){const t=i.options.offset,e=i._tickSize(),n=i._length/e+(t?0:1),s=i._maxLength/e;return Math.floor(Math.min(n,s))}function $a(i,t,e){const n=Ka(i),s=t.length/e;if(!n)return Math.max(s,1);const o=Ro(n);for(let r=0,a=o.length-1;r<a;r++){const l=o[r];if(l>s)return l}return Math.max(s,1)}function Ua(i){const t=[];let e,n;for(e=0,n=i.length;e<n;e++)i[e].major&&t.push(e);return t}function Ya(i,t,e,n){let s=0,o=e[0],r;for(n=Math.ceil(n),r=0;r<i.length;r++)r===o&&(t.push(i[r]),s++,o=e[s*n])}function we(i,t,e,n,s){const o=C(n,0),r=Math.min(C(s,i.length),i.length);let a=0,l,c,h;for(e=Math.ceil(e),s&&(l=s-n,e=l/Math.floor(l/e)),h=o;h<0;)a++,h=Math.round(o+a*e);for(c=Math.max(o,0);c<r;c++)c===h&&(t.push(i[c]),a++,h=Math.round(o+a*e))}function Ka(i){const t=i.length;let e,n;if(t<2)return!1;for(n=i[0],e=1;e<t;++e)if(i[e]-i[e-1]!==n)return!1;return n}const Xa=i=>i==="left"?"right":i==="right"?"left":i,_n=(i,t,e)=>t==="top"||t==="left"?i[t]+e:i[t]-e,yn=(i,t)=>Math.min(t||i,i);function vn(i,t){const e=[],n=i.length/t,s=i.length;let o=0;for(;o<s;o+=n)e.push(i[Math.floor(o)]);return e}function qa(i,t,e){const n=i.ticks.length,s=Math.min(t,n-1),o=i._startPixel,r=i._endPixel,a=1e-6;let l=i.getPixelForTick(s),c;if(!(e&&(n===1?c=Math.max(l-o,r-l):t===0?c=(i.getPixelForTick(1)-l)/2:c=(l-i.getPixelForTick(s-1))/2,l+=s<t?c:-c,l<o-a||l>r+a)))return l}function Ga(i,t){O(i,e=>{const n=e.gc,s=n.length/2;let o;if(s>t){for(o=0;o<s;++o)delete e.data[n[o]];n.splice(0,s)}})}function Gt(i){return i.drawTicks?i.tickLength:0}function wn(i,t){if(!i.display)return 0;const e=V(i.font,t),n=j(i.padding);return(R(i.text)?i.text.length:1)*e.lineHeight+n.height}function Za(i,t){return yt(i,{scale:t,type:"scale"})}function Qa(i,t,e){return yt(i,{tick:e,index:t,type:"tick"})}function Ja(i,t,e){let n=vs(i);return(e&&t!=="right"||!e&&t==="right")&&(n=Xa(n)),n}function tl(i,t,e,n){const{top:s,left:o,bottom:r,right:a,chart:l}=i,{chartArea:c,scales:h}=l;let d=0,u,f,p;const g=r-s,m=a-o;if(i.isHorizontal()){if(f=X(n,o,a),L(e)){const b=Object.keys(e)[0],x=e[b];p=h[b].getPixelForValue(x)+g-t}else e==="center"?p=(c.bottom+c.top)/2+g-t:p=_n(i,e,t);u=a-o}else{if(L(e)){const b=Object.keys(e)[0],x=e[b];f=h[b].getPixelForValue(x)-m+t}else e==="center"?f=(c.left+c.right)/2-m+t:f=_n(i,e,t);p=X(n,r,s),d=e==="left"?-Z:Z}return{titleX:f,titleY:p,maxWidth:u,rotation:d}}class Vt extends dt{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:n,_suggestedMax:s}=this;return t=q(t,Number.POSITIVE_INFINITY),e=q(e,Number.NEGATIVE_INFINITY),n=q(n,Number.POSITIVE_INFINITY),s=q(s,Number.NEGATIVE_INFINITY),{min:q(t,n),max:q(e,s),minDefined:F(t),maxDefined:F(e)}}getMinMax(t){let{min:e,max:n,minDefined:s,maxDefined:o}=this.getUserBounds(),r;if(s&&o)return{min:e,max:n};const a=this.getMatchingVisibleMetas();for(let l=0,c=a.length;l<c;++l)r=a[l].controller.getMinMax(this,t),s||(e=Math.min(e,r.min)),o||(n=Math.max(n,r.max));return e=o&&e>n?n:e,n=s&&e>n?e:n,{min:q(e,q(n,e)),max:q(n,q(e,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){P(this.options.beforeUpdate,[this])}update(t,e,n){const{beginAtZero:s,grace:o,ticks:r}=this.options,a=r.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=ur(this,o,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=a<this.ticks.length;this._convertTicksToLabels(l?vn(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),r.display&&(r.autoSkip||r.source==="auto")&&(this.ticks=Va(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),l&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t=this.options.reverse,e,n;this.isHorizontal()?(e=this.left,n=this.right):(e=this.top,n=this.bottom,t=!t),this._startPixel=e,this._endPixel=n,this._reversePixels=t,this._length=n-e,this._alignToPixels=this.options.alignToPixels}afterUpdate(){P(this.options.afterUpdate,[this])}beforeSetDimensions(){P(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){P(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),P(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){P(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let n,s,o;for(n=0,s=t.length;n<s;n++)o=t[n],o.label=P(e.callback,[o.value,n,t],this)}afterTickToLabelConversion(){P(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){P(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,n=yn(this.ticks.length,t.ticks.maxTicksLimit),s=e.minRotation||0,o=e.maxRotation;let r=s,a,l,c;if(!this._isVisible()||!e.display||s>=o||n<=1||!this.isHorizontal()){this.labelRotation=s;return}const h=this._getLabelSizes(),d=h.widest.width,u=h.highest.height,f=tt(this.chart.width-d,0,this.maxWidth);a=t.offset?this.maxWidth/n:f/(n-1),d+6>a&&(a=f/(n-(t.offset?.5:1)),l=this.maxHeight-Gt(t.grid)-e.padding-wn(t.title,this.chart.options.font),c=Math.sqrt(d*d+u*u),r=ki(Math.min(Math.asin(tt((h.highest.height+6)/a,-1,1)),Math.asin(tt(l/c,-1,1))-Math.asin(tt(u/c,-1,1)))),r=Math.max(s,Math.min(o,r))),this.labelRotation=r}afterCalculateLabelRotation(){P(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){P(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:n,title:s,grid:o}}=this,r=this._isVisible(),a=this.isHorizontal();if(r){const l=wn(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Gt(o)+l):(t.height=this.maxHeight,t.width=Gt(o)+l),n.display&&this.ticks.length){const{first:c,last:h,widest:d,highest:u}=this._getLabelSizes(),f=n.padding*2,p=gt(this.labelRotation),g=Math.cos(p),m=Math.sin(p);if(a){const b=n.mirror?0:m*d.width+g*u.height;t.height=Math.min(this.maxHeight,t.height+b+f)}else{const b=n.mirror?0:g*d.width+m*u.height;t.width=Math.min(this.maxWidth,t.width+b+f)}this._calculatePadding(c,h,m,g)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,n,s){const{ticks:{align:o,padding:r},position:a}=this.options,l=this.labelRotation!==0,c=a!=="top"&&this.axis==="x";if(this.isHorizontal()){const h=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let u=0,f=0;l?c?(u=s*t.width,f=n*e.height):(u=n*t.height,f=s*e.width):o==="start"?f=e.width:o==="end"?u=t.width:o!=="inner"&&(u=t.width/2,f=e.width/2),this.paddingLeft=Math.max((u-h+r)*this.width/(this.width-h),0),this.paddingRight=Math.max((f-d+r)*this.width/(this.width-d),0)}else{let h=e.height/2,d=t.height/2;o==="start"?(h=0,d=t.height):o==="end"&&(h=e.height,d=0),this.paddingTop=h+r,this.paddingBottom=d+r}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){P(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return e==="top"||e==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let e,n;for(e=0,n=t.length;e<n;e++)I(t[e].label)&&(t.splice(e,1),n--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let n=this.ticks;e<n.length&&(n=vn(n,e)),this._labelSizes=t=this._computeLabelSizes(n,n.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,n){const{ctx:s,_longestTextCache:o}=this,r=[],a=[],l=Math.floor(e/yn(e,n));let c=0,h=0,d,u,f,p,g,m,b,x,y,v,_;for(d=0;d<e;d+=l){if(p=t[d].label,g=this._resolveTickFontOptions(d),s.font=m=g.string,b=o[m]=o[m]||{data:{},gc:[]},x=g.lineHeight,y=v=0,!I(p)&&!R(p))y=Fe(s,b.data,b.gc,y,p),v=x;else if(R(p))for(u=0,f=p.length;u<f;++u)_=p[u],!I(_)&&!R(_)&&(y=Fe(s,b.data,b.gc,y,_),v+=x);r.push(y),a.push(v),c=Math.max(y,c),h=Math.max(v,h)}Ga(o,e);const k=r.indexOf(c),M=a.indexOf(h),w=D=>({width:r[D]||0,height:a[D]||0});return{first:w(0),last:w(e-1),widest:w(k),highest:w(M),widths:r,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Ho(this._alignToPixels?kt(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const n=e[t];return n.$context||(n.$context=Qa(this.getContext(),t,n))}return this.$context||(this.$context=Za(this.chart.getContext(),this))}_tickSize(){const t=this.options.ticks,e=gt(this.labelRotation),n=Math.abs(Math.cos(e)),s=Math.abs(Math.sin(e)),o=this._getLabelSizes(),r=t.autoSkipPadding||0,a=o?o.widest.width+r:0,l=o?o.highest.height+r:0;return this.isHorizontal()?l*n>a*s?a/n:l/s:l*s<a*n?l/n:a/s}_isVisible(){const t=this.options.display;return t!=="auto"?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,n=this.chart,s=this.options,{grid:o,position:r,border:a}=s,l=o.offset,c=this.isHorizontal(),d=this.ticks.length+(l?1:0),u=Gt(o),f=[],p=a.setContext(this.getContext()),g=p.display?p.width:0,m=g/2,b=function(N){return kt(n,N,g)};let x,y,v,_,k,M,w,D,A,T,z,$;if(r==="top")x=b(this.bottom),M=this.bottom-u,D=x-m,T=b(t.top)+m,$=t.bottom;else if(r==="bottom")x=b(this.top),T=t.top,$=b(t.bottom)-m,M=x+m,D=this.top+u;else if(r==="left")x=b(this.right),k=this.right-u,w=x-m,A=b(t.left)+m,z=t.right;else if(r==="right")x=b(this.left),A=t.left,z=b(t.right)-m,k=x+m,w=this.left+u;else if(e==="x"){if(r==="center")x=b((t.top+t.bottom)/2+.5);else if(L(r)){const N=Object.keys(r)[0],J=r[N];x=b(this.chart.scales[N].getPixelForValue(J))}T=t.top,$=t.bottom,M=x+m,D=M+u}else if(e==="y"){if(r==="center")x=b((t.left+t.right)/2);else if(L(r)){const N=Object.keys(r)[0],J=r[N];x=b(this.chart.scales[N].getPixelForValue(J))}k=x-m,w=k-u,A=t.left,z=t.right}const it=C(s.ticks.maxTicksLimit,d),B=Math.max(1,Math.ceil(d/it));for(y=0;y<d;y+=B){const N=this.getContext(y),J=o.setContext(N),ge=a.setContext(N),pe=J.lineWidth,zt=J.color,me=ge.dash||[],It=ge.dashOffset,Ut=J.tickWidth,vt=J.tickColor,Yt=J.tickBorderDash||[],wt=J.tickBorderDashOffset;v=qa(this,y,l),v!==void 0&&(_=kt(n,v,pe),c?k=w=A=z=_:M=D=T=$=_,f.push({tx1:k,ty1:M,tx2:w,ty2:D,x1:A,y1:T,x2:z,y2:$,width:pe,color:zt,borderDash:me,borderDashOffset:It,tickWidth:Ut,tickColor:vt,tickBorderDash:Yt,tickBorderDashOffset:wt}))}return this._ticksLength=d,this._borderValue=x,f}_computeLabelItems(t){const e=this.axis,n=this.options,{position:s,ticks:o}=n,r=this.isHorizontal(),a=this.ticks,{align:l,crossAlign:c,padding:h,mirror:d}=o,u=Gt(n.grid),f=u+h,p=d?-h:f,g=-gt(this.labelRotation),m=[];let b,x,y,v,_,k,M,w,D,A,T,z,$="middle";if(s==="top")k=this.bottom-p,M=this._getXAxisLabelAlignment();else if(s==="bottom")k=this.top+p,M=this._getXAxisLabelAlignment();else if(s==="left"){const B=this._getYAxisLabelAlignment(u);M=B.textAlign,_=B.x}else if(s==="right"){const B=this._getYAxisLabelAlignment(u);M=B.textAlign,_=B.x}else if(e==="x"){if(s==="center")k=(t.top+t.bottom)/2+f;else if(L(s)){const B=Object.keys(s)[0],N=s[B];k=this.chart.scales[B].getPixelForValue(N)+f}M=this._getXAxisLabelAlignment()}else if(e==="y"){if(s==="center")_=(t.left+t.right)/2-f;else if(L(s)){const B=Object.keys(s)[0],N=s[B];_=this.chart.scales[B].getPixelForValue(N)}M=this._getYAxisLabelAlignment(u).textAlign}e==="y"&&(l==="start"?$="top":l==="end"&&($="bottom"));const it=this._getLabelSizes();for(b=0,x=a.length;b<x;++b){y=a[b],v=y.label;const B=o.setContext(this.getContext(b));w=this.getPixelForTick(b)+o.labelOffset,D=this._resolveTickFontOptions(b),A=D.lineHeight,T=R(v)?v.length:1;const N=T/2,J=B.color,ge=B.textStrokeColor,pe=B.textStrokeWidth;let zt=M;r?(_=w,M==="inner"&&(b===x-1?zt=this.options.reverse?"left":"right":b===0?zt=this.options.reverse?"right":"left":zt="center"),s==="top"?c==="near"||g!==0?z=-T*A+A/2:c==="center"?z=-it.highest.height/2-N*A+A:z=-it.highest.height+A/2:c==="near"||g!==0?z=A/2:c==="center"?z=it.highest.height/2-N*A:z=it.highest.height-T*A,d&&(z*=-1),g!==0&&!B.showLabelBackdrop&&(_+=A/2*Math.sin(g))):(k=w,z=(1-T)*A/2);let me;if(B.showLabelBackdrop){const It=j(B.backdropPadding),Ut=it.heights[b],vt=it.widths[b];let Yt=z-It.top,wt=0-It.left;switch($){case"middle":Yt-=Ut/2;break;case"bottom":Yt-=Ut;break}switch(M){case"center":wt-=vt/2;break;case"right":wt-=vt;break;case"inner":b===x-1?wt-=vt:b>0&&(wt-=vt/2);break}me={left:wt,top:Yt,width:vt+It.width,height:Ut+It.height,color:B.backdropColor}}m.push({label:v,font:D,textOffset:z,options:{rotation:g,color:J,strokeColor:ge,strokeWidth:pe,textAlign:zt,textBaseline:$,translation:[_,k],backdrop:me}})}return m}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-gt(this.labelRotation))return t==="top"?"left":"right";let s="center";return e.align==="start"?s="left":e.align==="end"?s="right":e.align==="inner"&&(s="inner"),s}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:n,mirror:s,padding:o}}=this.options,r=this._getLabelSizes(),a=t+o,l=r.widest.width;let c,h;return e==="left"?s?(h=this.right+o,n==="near"?c="left":n==="center"?(c="center",h+=l/2):(c="right",h+=l)):(h=this.right-a,n==="near"?c="right":n==="center"?(c="center",h-=l/2):(c="left",h=this.left)):e==="right"?s?(h=this.left+o,n==="near"?c="right":n==="center"?(c="center",h-=l/2):(c="left",h-=l)):(h=this.left+a,n==="near"?c="left":n==="center"?(c="center",h+=l/2):(c="right",h=this.right)):c="right",{textAlign:c,x:h}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;if(e==="left"||e==="right")return{top:0,left:this.left,bottom:t.height,right:this.right};if(e==="top"||e==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:t.width}}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:n,top:s,width:o,height:r}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(n,s,o,r),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const s=this.ticks.findIndex(o=>o.value===t);return s>=0?e.setContext(this.getContext(s)).lineWidth:0}drawGrid(t){const e=this.options.grid,n=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let o,r;const a=(l,c,h)=>{!h.width||!h.color||(n.save(),n.lineWidth=h.width,n.strokeStyle=h.color,n.setLineDash(h.borderDash||[]),n.lineDashOffset=h.borderDashOffset,n.beginPath(),n.moveTo(l.x,l.y),n.lineTo(c.x,c.y),n.stroke(),n.restore())};if(e.display)for(o=0,r=s.length;o<r;++o){const l=s[o];e.drawOnChartArea&&a({x:l.x1,y:l.y1},{x:l.x2,y:l.y2},l),e.drawTicks&&a({x:l.tx1,y:l.ty1},{x:l.tx2,y:l.ty2},{color:l.tickColor,width:l.tickWidth,borderDash:l.tickBorderDash,borderDashOffset:l.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:n,grid:s}}=this,o=n.setContext(this.getContext()),r=n.display?o.width:0;if(!r)return;const a=s.setContext(this.getContext(0)).lineWidth,l=this._borderValue;let c,h,d,u;this.isHorizontal()?(c=kt(t,this.left,r)-r/2,h=kt(t,this.right,a)+a/2,d=u=l):(d=kt(t,this.top,r)-r/2,u=kt(t,this.bottom,a)+a/2,c=h=l),e.save(),e.lineWidth=o.width,e.strokeStyle=o.color,e.beginPath(),e.moveTo(c,d),e.lineTo(h,u),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const n=this.ctx,s=this._computeLabelArea();s&&Ve(n,s);const o=this.getLabelItems(t);for(const r of o){const a=r.options,l=r.font,c=r.label,h=r.textOffset;Ht(n,c,0,h,l,a)}s&&je(n)}drawTitle(){const{ctx:t,options:{position:e,title:n,reverse:s}}=this;if(!n.display)return;const o=V(n.font),r=j(n.padding),a=n.align;let l=o.lineHeight/2;e==="bottom"||e==="center"||L(e)?(l+=r.bottom,R(n.text)&&(l+=o.lineHeight*(n.text.length-1))):l+=r.top;const{titleX:c,titleY:h,maxWidth:d,rotation:u}=tl(this,l,e,a);Ht(t,n.text,0,0,o,{color:n.color,maxWidth:d,rotation:u,textAlign:Ja(a,e,s),textBaseline:"middle",translation:[c,h]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,n=C(t.grid&&t.grid.z,-1),s=C(t.border&&t.border.z,0);return!this._isVisible()||this.draw!==Vt.prototype.draw?[{z:e,draw:o=>{this.draw(o)}}]:[{z:n,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+"AxisID",s=[];let o,r;for(o=0,r=e.length;o<r;++o){const a=e[o];a[n]===this.id&&(!t||a.type===t)&&s.push(a)}return s}_resolveTickFontOptions(t){const e=this.options.ticks.setContext(this.getContext(t));return V(e.font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class Me{constructor(t,e,n){this.type=t,this.scope=e,this.override=n,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let n;nl(e)&&(n=this.register(e));const s=this.items,o=t.id,r=this.scope+"."+o;if(!o)throw new Error("class does not have id: "+t);return o in s||(s[o]=t,el(t,r,n),this.override&&E.override(t.id,t.overrides)),r}get(t){return this.items[t]}unregister(t){const e=this.items,n=t.id,s=this.scope;n in e&&delete e[n],s&&n in E[s]&&(delete E[s][n],this.override&&delete At[n])}}function el(i,t,e){const n=re(Object.create(null),[e?E.get(e):{},E.get(t),i.defaults]);E.set(t,n),i.defaultRoutes&&il(t,i.defaultRoutes),i.descriptors&&E.describe(t,i.descriptors)}function il(i,t){Object.keys(t).forEach(e=>{const n=e.split("."),s=n.pop(),o=[i].concat(n).join("."),r=t[e].split("."),a=r.pop(),l=r.join(".");E.route(o,s,l,a)})}function nl(i){return"id"in i&&"defaults"in i}class sl{constructor(){this.controllers=new Me(Et,"datasets",!0),this.elements=new Me(dt,"elements"),this.plugins=new Me(Object,"plugins"),this.scales=new Me(Vt,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,n){[...e].forEach(s=>{const o=n||this._getRegistryForType(s);n||o.isForType(s)||o===this.plugins&&s.id?this._exec(t,o,s):O(s,r=>{const a=n||this._getRegistryForType(r);this._exec(t,a,r)})})}_exec(t,e,n){const s=Mi(t);P(n["before"+s],[],n),e[t](n),P(n["after"+s],[],n)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const n=this._typedRegistries[e];if(n.isForType(t))return n}return this.plugins}_get(t,e,n){const s=e.get(t);if(s===void 0)throw new Error('"'+t+'" is not a registered '+n+".");return s}}var st=new sl;class ol{constructor(){this._init=[]}notify(t,e,n,s){e==="beforeInit"&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));const o=s?this._descriptors(t).filter(s):this._descriptors(t),r=this._notify(o,t,e,n);return e==="afterDestroy"&&(this._notify(o,t,"stop"),this._notify(this._init,t,"uninstall")),r}_notify(t,e,n,s){s=s||{};for(const o of t){const r=o.plugin,a=r[n],l=[e,s,o.options];if(P(a,l,r)===!1&&s.cancelable)return!1}return!0}invalidate(){I(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const n=t&&t.config,s=C(n.options&&n.options.plugins,{}),o=rl(n);return s===!1&&!e?[]:ll(t,o,s,e)}_notifyStateChanges(t){const e=this._oldCache||[],n=this._cache,s=(o,r)=>o.filter(a=>!r.some(l=>a.plugin.id===l.plugin.id));this._notify(s(e,n),t,"stop"),this._notify(s(n,e),t,"start")}}function rl(i){const t={},e=[],n=Object.keys(st.plugins.items);for(let o=0;o<n.length;o++)e.push(st.getPlugin(n[o]));const s=i.plugins||[];for(let o=0;o<s.length;o++){const r=s[o];e.indexOf(r)===-1&&(e.push(r),t[r.id]=!0)}return{plugins:e,localIds:t}}function al(i,t){return!t&&i===!1?null:i===!0?{}:i}function ll(i,{plugins:t,localIds:e},n,s){const o=[],r=i.getContext();for(const a of t){const l=a.id,c=al(n[l],s);c!==null&&o.push({plugin:a,options:cl(i.config,{plugin:a,local:e[l]},c,r)})}return o}function cl(i,{plugin:t,local:e},n,s){const o=i.pluginScopeKeys(t),r=i.getOptionScopes(n,o);return e&&t.defaults&&r.push(t.defaults),i.createResolver(r,s,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function ui(i,t){const e=E.datasets[i]||{};return((t.datasets||{})[i]||{}).indexAxis||t.indexAxis||e.indexAxis||"x"}function hl(i,t){let e=i;return i==="_index_"?e=t:i==="_value_"&&(e=t==="x"?"y":"x"),e}function dl(i,t){return i===t?"_index_":"_value_"}function Mn(i){if(i==="x"||i==="y"||i==="r")return i}function ul(i){if(i==="top"||i==="bottom")return"x";if(i==="left"||i==="right")return"y"}function fi(i,...t){if(Mn(i))return i;for(const e of t){const n=e.axis||ul(e.position)||i.length>1&&Mn(i[0].toLowerCase());if(n)return n}throw new Error(`Cannot determine type of '${i}' axis. Please provide 'axis' or 'position' option.`)}function kn(i,t,e){if(e[t+"AxisID"]===i)return{axis:t}}function fl(i,t){if(t.data&&t.data.datasets){const e=t.data.datasets.filter(n=>n.xAxisID===i||n.yAxisID===i);if(e.length)return kn(i,"x",e[0])||kn(i,"y",e[0])}return{}}function gl(i,t){const e=At[i.type]||{scales:{}},n=t.scales||{},s=ui(i.type,t),o=Object.create(null);return Object.keys(n).forEach(r=>{const a=n[r];if(!L(a))return console.error(`Invalid scale configuration for scale: ${r}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${r}`);const l=fi(r,a,fl(r,i),E.scales[a.type]),c=dl(l,s),h=e.scales||{};o[r]=ee(Object.create(null),[{axis:l},a,h[l],h[c]])}),i.data.datasets.forEach(r=>{const a=r.type||i.type,l=r.indexAxis||ui(a,t),h=(At[a]||{}).scales||{};Object.keys(h).forEach(d=>{const u=hl(d,l),f=r[u+"AxisID"]||u;o[f]=o[f]||Object.create(null),ee(o[f],[{axis:u},n[f],h[d]])})}),Object.keys(o).forEach(r=>{const a=o[r];ee(a,[E.scales[a.type],E.scale])}),o}function Us(i){const t=i.options||(i.options={});t.plugins=C(t.plugins,{}),t.scales=gl(i,t)}function Ys(i){return i=i||{},i.datasets=i.datasets||[],i.labels=i.labels||[],i}function pl(i){return i=i||{},i.data=Ys(i.data),Us(i),i}const Sn=new Map,Ks=new Set;function ke(i,t){let e=Sn.get(i);return e||(e=t(),Sn.set(i,e),Ks.add(e)),e}const Zt=(i,t,e)=>{const n=Bt(t,e);n!==void 0&&i.add(n)};class ml{constructor(t){this._config=pl(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Ys(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Us(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return ke(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return ke(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return ke(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){const e=t.id,n=this.type;return ke(`${n}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){const n=this._scopeCache;let s=n.get(t);return(!s||e)&&(s=new Map,n.set(t,s)),s}getOptionScopes(t,e,n){const{options:s,type:o}=this,r=this._cachedScopes(t,n),a=r.get(e);if(a)return a;const l=new Set;e.forEach(h=>{t&&(l.add(t),h.forEach(d=>Zt(l,t,d))),h.forEach(d=>Zt(l,s,d)),h.forEach(d=>Zt(l,At[o]||{},d)),h.forEach(d=>Zt(l,E,d)),h.forEach(d=>Zt(l,hi,d))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),Ks.has(e)&&r.set(e,c),c}chartOptionScopes(){const{options:t,type:e}=this;return[t,At[e]||{},E.datasets[e]||{},{type:e},E,hi]}resolveNamedOptions(t,e,n,s=[""]){const o={$shared:!0},{resolver:r,subPrefixes:a}=Pn(this._resolverCache,t,s);let l=r;if(xl(r,e)){o.$shared=!1,n=xt(n)?n():n;const c=this.createResolver(t,n,a);l=Wt(r,n,c)}for(const c of e)o[c]=l[c];return o}createResolver(t,e,n=[""],s){const{resolver:o}=Pn(this._resolverCache,t,n);return L(e)?Wt(o,e,void 0,s):o}}function Pn(i,t,e){let n=i.get(t);n||(n=new Map,i.set(t,n));const s=e.join();let o=n.get(s);return o||(o={resolver:Ci(t,e),subPrefixes:e.filter(a=>!a.toLowerCase().includes("hover"))},n.set(s,o)),o}const bl=i=>L(i)&&Object.getOwnPropertyNames(i).some(t=>xt(i[t]));function xl(i,t){const{isScriptable:e,isIndexable:n}=Ps(i);for(const s of t){const o=e(s),r=n(s),a=(r||o)&&i[s];if(o&&(xt(a)||bl(a))||r&&R(a))return!0}return!1}var _l="4.4.4";const yl=["top","bottom","left","right","chartArea"];function Dn(i,t){return i==="top"||i==="bottom"||yl.indexOf(i)===-1&&t==="x"}function Cn(i,t){return function(e,n){return e[i]===n[i]?e[t]-n[t]:e[i]-n[i]}}function On(i){const t=i.chart,e=t.options.animation;t.notifyPlugins("afterRender"),P(e&&e.onComplete,[i],t)}function vl(i){const t=i.chart,e=t.options.animation;P(e&&e.onProgress,[i],t)}function Xs(i){return Li()&&typeof i=="string"?i=document.getElementById(i):i&&i.length&&(i=i[0]),i&&i.canvas&&(i=i.canvas),i}const Ae={},Tn=i=>{const t=Xs(i);return Object.values(Ae).filter(e=>e.canvas===t).pop()};function wl(i,t,e){const n=Object.keys(i);for(const s of n){const o=+s;if(o>=t){const r=i[s];delete i[s],(e>0||o>t)&&(i[o+e]=r)}}}function Ml(i,t,e,n){return!e||i.type==="mouseout"?null:n?t:i}function Se(i,t,e){return i.options.clip?i[e]:t[e]}function kl(i,t){const{xScale:e,yScale:n}=i;return e&&n?{left:Se(e,t,"left"),right:Se(e,t,"right"),top:Se(n,t,"top"),bottom:Se(n,t,"bottom")}:t}var ut;let Ii=(ut=class{static register(...t){st.add(...t),Ln()}static unregister(...t){st.remove(...t),Ln()}constructor(t,e){const n=this.config=new ml(e),s=Xs(t),o=Tn(s);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const r=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||Na(s)),this.platform.updateConfig(n);const a=this.platform.acquireContext(s,r.aspectRatio),l=a&&a.canvas,c=l&&l.height,h=l&&l.width;if(this.id=Po(),this.ctx=a,this.canvas=l,this.width=h,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new ol,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=jo(d=>this.update(d),r.resizeDelay||0),this._dataChanges=[],Ae[this.id]=this,!a||!l){console.error("Failed to create chart: can't acquire context from the given item");return}at.listen(this,"complete",On),at.listen(this,"progress",vl),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:n,height:s,_aspectRatio:o}=this;return I(t)?e&&o?o:s?n/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return st}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Zi(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Xi(this.canvas,this.ctx),this}stop(){return at.stop(this),this}resize(t,e){at.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const n=this.options,s=this.canvas,o=n.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(s,t,e,o),a=n.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,Zi(this,a,!0)&&(this.notifyPlugins("resize",{size:r}),P(n.onResize,[this,r],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const e=this.options.scales||{};O(e,(n,s)=>{n.id=s})}buildOrUpdateScales(){const t=this.options,e=t.scales,n=this.scales,s=Object.keys(n).reduce((r,a)=>(r[a]=!1,r),{});let o=[];e&&(o=o.concat(Object.keys(e).map(r=>{const a=e[r],l=fi(r,a),c=l==="r",h=l==="x";return{options:a,dposition:c?"chartArea":h?"bottom":"left",dtype:c?"radialLinear":h?"category":"linear"}}))),O(o,r=>{const a=r.options,l=a.id,c=fi(l,a),h=C(a.type,r.dtype);(a.position===void 0||Dn(a.position,c)!==Dn(r.dposition))&&(a.position=r.dposition),s[l]=!0;let d=null;if(l in n&&n[l].type===h)d=n[l];else{const u=st.getScale(h);d=new u({id:l,type:h,ctx:this.ctx,chart:this}),n[d.id]=d}d.init(a,t)}),O(s,(r,a)=>{r||delete n[a]}),O(n,r=>{mt.configure(this,r,r.options),mt.addBox(this,r)})}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,n=t.length;if(t.sort((s,o)=>s.index-o.index),n>e){for(let s=e;s<n;++s)this._destroyDatasetMeta(s);t.splice(e,n-e)}this._sortedMetasets=t.slice(0).sort(Cn("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach((n,s)=>{e.filter(o=>o===n._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let n,s;for(this._removeUnreferencedMetasets(),n=0,s=e.length;n<s;n++){const o=e[n];let r=this.getDatasetMeta(n);const a=o.type||this.config.type;if(r.type&&r.type!==a&&(this._destroyDatasetMeta(n),r=this.getDatasetMeta(n)),r.type=a,r.indexAxis=o.indexAxis||ui(a,this.options),r.order=o.order||0,r.index=n,r.label=""+o.label,r.visible=this.isDatasetVisible(n),r.controller)r.controller.updateIndex(n),r.controller.linkScales();else{const l=st.getController(a),{datasetElementType:c,dataElementType:h}=E.datasets[a];Object.assign(l,{dataElementType:st.getElement(h),datasetElementType:c&&st.getElement(c)}),r.controller=new l(this,n),t.push(r.controller)}}return this._updateMetasets(),t}_resetElements(){O(this.data.datasets,(t,e)=>{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const n=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let c=0,h=this.data.datasets.length;c<h;c++){const{controller:d}=this.getDatasetMeta(c),u=!s&&o.indexOf(d)===-1;d.buildOrUpdateElements(u),r=Math.max(+d.getMaxOverflow(),r)}r=this._minPadding=n.layout.autoPadding?r:0,this._updateLayout(r),s||O(o,c=>{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Cn("z","_idx"));const{_active:a,_lastEvent:l}=this;l?this._eventHandler(l,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){O(this.scales,t=>{mt.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),n=new Set(t.events);(!Hi(e,n)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:n,start:s,count:o}of e){const r=n==="_removeElements"?-o:o;wl(t,s,r)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,n=o=>new Set(t.filter(r=>r[0]===o).map((r,a)=>a+","+r.splice(1).join(","))),s=n(0);for(let o=1;o<e;o++)if(!Hi(s,n(o)))return;return Array.from(s).map(o=>o.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;mt.update(this,this.width,this.height,t);const e=this.chartArea,n=e.width<=0||e.height<=0;this._layers=[],O(this.boxes,s=>{n&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,o)=>{s._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let e=0,n=this.data.datasets.length;e<n;++e)this.getDatasetMeta(e).controller.configure();for(let e=0,n=this.data.datasets.length;e<n;++e)this._updateDataset(e,xt(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const n=this.getDatasetMeta(t),s={meta:n,index:t,mode:e,cancelable:!0};this.notifyPlugins("beforeDatasetUpdate",s)!==!1&&(n.controller._update(e),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){this.notifyPlugins("beforeRender",{cancelable:!0})!==!1&&(at.has(this)?this.attached&&!at.running(this)&&at.start(this):(this.draw(),On({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:n,height:s}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(n,s)}if(this.clear(),this.width<=0||this.height<=0||this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,n=[];let s,o;for(s=0,o=e.length;s<o;++s){const r=e[s];(!t||r.visible)&&n.push(r)}return n}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,n=t._clip,s=!n.disabled,o=kl(t,this.chartArea),r={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",r)!==!1&&(s&&Ve(e,{left:n.left===!1?0:o.left-n.left,right:n.right===!1?this.width:o.right+n.right,top:n.top===!1?0:o.top-n.top,bottom:n.bottom===!1?this.height:o.bottom+n.bottom}),t.controller.draw(),s&&je(e),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}isPointInArea(t){return ht(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,n,s){const o=ya.modes[e];return typeof o=="function"?o(this,t,n,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],n=this._metasets;let s=n.filter(o=>o&&o._dataset===e).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},n.push(s)),s}getContext(){return this.$context||(this.$context=yt(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const n=this.getDatasetMeta(t);return typeof n.hidden=="boolean"?!n.hidden:!e.hidden}setDatasetVisibility(t,e){const n=this.getDatasetMeta(t);n.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,n){const s=n?"show":"hide",o=this.getDatasetMeta(t),r=o.controller._resolveAnimations(void 0,s);ae(e)?(o.data[e].hidden=!n,this.update()):(this.setDatasetVisibility(t,n),r.update(o,{visible:n}),this.update(a=>a.datasetIndex===t?s:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),at.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Xi(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete Ae[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,n=(o,r)=>{e.addEventListener(this,o,r),t[o]=r},s=(o,r,a)=>{o.offsetX=r,o.offsetY=a,this._eventHandler(o)};O(this.options.events,o=>n(o,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,n=(l,c)=>{e.addEventListener(this,l,c),t[l]=c},s=(l,c)=>{t[l]&&(e.removeEventListener(this,l,c),delete t[l])},o=(l,c)=>{this.canvas&&this.resize(l,c)};let r;const a=()=>{s("attach",a),this.attached=!0,this.resize(),n("resize",o),n("detach",r)};r=()=>{this.attached=!1,s("resize",o),this._stop(),this._resize(0,0),n("attach",a)},e.isAttached(this.canvas)?a():r()}unbindEvents(){O(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},O(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,n){const s=n?"set":"remove";let o,r,a,l;for(e==="dataset"&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+s+"DatasetHoverStyle"]()),a=0,l=t.length;a<l;++a){r=t[a];const c=r&&this.getDatasetMeta(r.datasetIndex).controller;c&&c[s+"HoverStyle"](r.element,r.datasetIndex,r.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],n=t.map(({datasetIndex:o,index:r})=>{const a=this.getDatasetMeta(o);if(!a)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:a.data[r],index:r}});!ze(n,e)&&(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,e))}notifyPlugins(t,e,n){return this._plugins.notify(this,t,e,n)}isPluginEnabled(t){return this._plugins._cache.filter(e=>e.plugin.id===t).length===1}_updateHoverStyles(t,e,n){const s=this.options.hover,o=(l,c)=>l.filter(h=>!c.some(d=>h.datasetIndex===d.datasetIndex&&h.index===d.index)),r=o(e,t),a=n?t:o(t,e);r.length&&this.updateHoverStyle(r,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const n={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=r=>(r.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",n,s)===!1)return;const o=this._handleEvent(t,e,n.inChartArea);return n.cancelable=!1,this.notifyPlugins("afterEvent",n,s),(o||n.changed)&&this.render(),this}_handleEvent(t,e,n){const{_active:s=[],options:o}=this,r=e,a=this._getActiveElements(t,s,n,r),l=Ao(t),c=Ml(t,this._lastEvent,n,l);n&&(this._lastEvent=null,P(o.onHover,[t,a,this],this),l&&P(o.onClick,[t,a,this],this));const h=!ze(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=c,h}_getActiveElements(t,e,n,s){if(t.type==="mouseout")return[];if(!n)return e;const o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,s)}},S(ut,"defaults",E),S(ut,"instances",Ae),S(ut,"overrides",At),S(ut,"registry",st),S(ut,"version",_l),S(ut,"getChart",Tn),ut);function Ln(){return O(Ii.instances,i=>i._plugins.invalidate())}function qs(i,t,e=t){i.lineCap=C(e.borderCapStyle,t.borderCapStyle),i.setLineDash(C(e.borderDash,t.borderDash)),i.lineDashOffset=C(e.borderDashOffset,t.borderDashOffset),i.lineJoin=C(e.borderJoinStyle,t.borderJoinStyle),i.lineWidth=C(e.borderWidth,t.borderWidth),i.strokeStyle=C(e.borderColor,t.borderColor)}function Sl(i,t,e){i.lineTo(e.x,e.y)}function Pl(i){return i.stepped?nr:i.tension||i.cubicInterpolationMode==="monotone"?sr:Sl}function Gs(i,t,e={}){const n=i.length,{start:s=0,end:o=n-1}=e,{start:r,end:a}=t,l=Math.max(s,r),c=Math.min(o,a),h=s<r&&o<r||s>a&&o>a;return{count:n,start:l,loop:t.loop,ilen:c<l&&!h?n+c-l:c-l}}function Dl(i,t,e,n){const{points:s,options:o}=t,{count:r,start:a,loop:l,ilen:c}=Gs(s,e,n),h=Pl(o);let{move:d=!0,reverse:u}=n||{},f,p,g;for(f=0;f<=c;++f)p=s[(a+(u?c-f:f))%r],!p.skip&&(d?(i.moveTo(p.x,p.y),d=!1):h(i,g,p,u,o.stepped),g=p);return l&&(p=s[(a+(u?c:0))%r],h(i,g,p,u,o.stepped)),!!l}function Cl(i,t,e,n){const s=t.points,{count:o,start:r,ilen:a}=Gs(s,e,n),{move:l=!0,reverse:c}=n||{};let h=0,d=0,u,f,p,g,m,b;const x=v=>(r+(c?a-v:v))%o,y=()=>{g!==m&&(i.lineTo(h,m),i.lineTo(h,g),i.lineTo(h,b))};for(l&&(f=s[x(0)],i.moveTo(f.x,f.y)),u=0;u<=a;++u){if(f=s[x(u)],f.skip)continue;const v=f.x,_=f.y,k=v|0;k===p?(_<g?g=_:_>m&&(m=_),h=(d*h+v)/++d):(y(),i.lineTo(v,_),p=k,d=0,g=m=_),b=_}y()}function gi(i){const t=i.options,e=t.borderDash&&t.borderDash.length;return!i._decimated&&!i._loop&&!t.tension&&t.cubicInterpolationMode!=="monotone"&&!t.stepped&&!e?Cl:Dl}function Ol(i){return i.stepped?Fr:i.tension||i.cubicInterpolationMode==="monotone"?Er:Dt}function Tl(i,t,e,n){let s=t._path;s||(s=t._path=new Path2D,t.path(s,e,n)&&s.closePath()),qs(i,t.options),i.stroke(s)}function Ll(i,t,e,n){const{segments:s,options:o}=t,r=gi(t);for(const a of s)qs(i,o,a.style),i.beginPath(),r(i,t,a,{start:e,end:e+n-1})&&i.closePath(),i.stroke()}const Al=typeof Path2D=="function";function zl(i,t,e,n){Al&&!t.options.segment?Tl(i,t,e,n):Ll(i,t,e,n)}class Ot extends dt{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const n=this.options;if((n.tension||n.cubicInterpolationMode==="monotone")&&!n.stepped&&!this._pointsUpdated){const s=n.spanGaps?this._loop:this._fullLoop;Cr(this._points,n,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=jr(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,n=t.length;return n&&e[t[n-1].end]}interpolate(t,e){const n=this.options,s=t[e],o=this.points,r=Rs(this,{property:e,start:s,end:s});if(!r.length)return;const a=[],l=Ol(n);let c,h;for(c=0,h=r.length;c<h;++c){const{start:d,end:u}=r[c],f=o[d],p=o[u];if(f===p){a.push(f);continue}const g=Math.abs((s-f[e])/(p[e]-f[e])),m=l(f,p,g,n.stepped);m[e]=t[e],a.push(m)}return a.length===1?a[0]:a}pathSegment(t,e,n){return gi(this)(t,this,e,n)}path(t,e,n){const s=this.segments,o=gi(this);let r=this._loop;e=e||0,n=n||this.points.length-e;for(const a of s)r&=o(t,this,a,{start:e,end:e+n-1});return!!r}draw(t,e,n,s){const o=this.options||{};(this.points||[]).length&&o.borderWidth&&(t.save(),zl(t,this,n,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}S(Ot,"id","line"),S(Ot,"defaults",{borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0}),S(Ot,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"}),S(Ot,"descriptors",{_scriptable:!0,_indexable:t=>t!=="borderDash"&&t!=="fill"});function An(i,t,e,n){const s=i.options,{[e]:o}=i.getProps([e],n);return Math.abs(t-o)<s.radius+s.hitRadius}class ei extends dt{constructor(e){super();S(this,"parsed");S(this,"skip");S(this,"stop");this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,n,s){const o=this.options,{x:r,y:a}=this.getProps(["x","y"],s);return Math.pow(e-r,2)+Math.pow(n-a,2)<Math.pow(o.hitRadius+o.radius,2)}inXRange(e,n){return An(this,e,"x",n)}inYRange(e,n){return An(this,e,"y",n)}getCenterPoint(e){const{x:n,y:s}=this.getProps(["x","y"],e);return{x:n,y:s}}size(e){e=e||this.options||{};let n=e.radius||0;n=Math.max(n,n&&e.hoverRadius||0);const s=n&&e.borderWidth||0;return(n+s)*2}draw(e,n){const s=this.options;this.skip||s.radius<.1||!ht(this,n,this.size(s)/2)||(e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.fillStyle=s.backgroundColor,di(e,s,this.x,this.y))}getRange(){const e=this.options||{};return e.radius+e.hitRadius}}S(ei,"id","point"),S(ei,"defaults",{borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0}),S(ei,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});function Zs(i,t){const{x:e,y:n,base:s,width:o,height:r}=i.getProps(["x","y","base","width","height"],t);let a,l,c,h,d;return i.horizontal?(d=r/2,a=Math.min(e,s),l=Math.max(e,s),c=n-d,h=n+d):(d=o/2,a=e-d,l=e+d,c=Math.min(n,s),h=Math.max(n,s)),{left:a,top:c,right:l,bottom:h}}function bt(i,t,e,n){return i?0:tt(t,e,n)}function Il(i,t,e){const n=i.options.borderWidth,s=i.borderSkipped,o=Ss(n);return{t:bt(s.top,o.top,0,e),r:bt(s.right,o.right,0,t),b:bt(s.bottom,o.bottom,0,e),l:bt(s.left,o.left,0,t)}}function Rl(i,t,e){const{enableBorderRadius:n}=i.getProps(["enableBorderRadius"]),s=i.options.borderRadius,o=Tt(s),r=Math.min(t,e),a=i.borderSkipped,l=n||L(s);return{topLeft:bt(!l||a.top||a.left,o.topLeft,0,r),topRight:bt(!l||a.top||a.right,o.topRight,0,r),bottomLeft:bt(!l||a.bottom||a.left,o.bottomLeft,0,r),bottomRight:bt(!l||a.bottom||a.right,o.bottomRight,0,r)}}function Fl(i){const t=Zs(i),e=t.right-t.left,n=t.bottom-t.top,s=Il(i,e/2,n/2),o=Rl(i,e/2,n/2);return{outer:{x:t.left,y:t.top,w:e,h:n,radius:o},inner:{x:t.left+s.l,y:t.top+s.t,w:e-s.l-s.r,h:n-s.t-s.b,radius:{topLeft:Math.max(0,o.topLeft-Math.max(s.t,s.l)),topRight:Math.max(0,o.topRight-Math.max(s.t,s.r)),bottomLeft:Math.max(0,o.bottomLeft-Math.max(s.b,s.l)),bottomRight:Math.max(0,o.bottomRight-Math.max(s.b,s.r))}}}}function ii(i,t,e,n){const s=t===null,o=e===null,a=i&&!(s&&o)&&Zs(i,n);return a&&(s||pt(t,a.left,a.right))&&(o||pt(e,a.top,a.bottom))}function El(i){return i.topLeft||i.topRight||i.bottomLeft||i.bottomRight}function Bl(i,t){i.rect(t.x,t.y,t.w,t.h)}function ni(i,t,e={}){const n=i.x!==e.x?-t:0,s=i.y!==e.y?-t:0,o=(i.x+i.w!==e.x+e.w?t:0)-n,r=(i.y+i.h!==e.y+e.h?t:0)-s;return{x:i.x+n,y:i.y+s,w:i.w+o,h:i.h+r,radius:i.radius}}class si extends dt{constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:n,backgroundColor:s}}=this,{inner:o,outer:r}=Fl(this),a=El(r.radius)?ce:Bl;t.save(),(r.w!==o.w||r.h!==o.h)&&(t.beginPath(),a(t,ni(r,e,o)),t.clip(),a(t,ni(o,-e,r)),t.fillStyle=n,t.fill("evenodd")),t.beginPath(),a(t,ni(o,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,n){return ii(this,t,e,n)}inXRange(t,e){return ii(this,t,null,e)}inYRange(t,e){return ii(this,null,t,e)}getCenterPoint(t){const{x:e,y:n,base:s,horizontal:o}=this.getProps(["x","y","base","horizontal"],t);return{x:o?(e+s)/2:e,y:o?n:(n+s)/2}}getRange(t){return t==="x"?this.width/2:this.height/2}}S(si,"id","bar"),S(si,"defaults",{borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0}),S(si,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});function Hl(i,t,e){const n=i.segments,s=i.points,o=t.points,r=[];for(const a of n){let{start:l,end:c}=a;c=Ri(l,c,s);const h=pi(e,s[l],s[c],a.loop);if(!t.segments){r.push({source:a,target:h,start:s[l],end:s[c]});continue}const d=Rs(t,h);for(const u of d){const f=pi(e,o[u.start],o[u.end],u.loop),p=Is(a,s,f);for(const g of p)r.push({source:g,target:u,start:{[e]:zn(h,f,"start",Math.max)},end:{[e]:zn(h,f,"end",Math.min)}})}}return r}function pi(i,t,e,n){if(n)return;let s=t[i],o=e[i];return i==="angle"&&(s=G(s),o=G(o)),{property:i,start:s,end:o}}function Wl(i,t){const{x:e=null,y:n=null}=i||{},s=t.points,o=[];return t.segments.forEach(({start:r,end:a})=>{a=Ri(r,a,s);const l=s[r],c=s[a];n!==null?(o.push({x:l.x,y:n}),o.push({x:c.x,y:n})):e!==null&&(o.push({x:e,y:l.y}),o.push({x:e,y:c.y}))}),o}function Ri(i,t,e){for(;t>i;t--){const n=e[t];if(!isNaN(n.x)&&!isNaN(n.y))break}return t}function zn(i,t,e,n){return i&&t?n(i[e],t[e]):i?i[e]:t?t[e]:0}function Qs(i,t){let e=[],n=!1;return R(i)?(n=!0,e=i):e=Wl(i,t),e.length?new Ot({points:e,options:{tension:0},_loop:n,_fullLoop:n}):null}function In(i){return i&&i.fill!==!1}function Nl(i,t,e){let s=i[t].fill;const o=[t];let r;if(!e)return s;for(;s!==!1&&o.indexOf(s)===-1;){if(!F(s))return s;if(r=i[s],!r)return!1;if(r.visible)return s;o.push(s),s=r.fill}return!1}function Vl(i,t,e){const n=Yl(i);if(L(n))return isNaN(n.value)?!1:n;let s=parseFloat(n);return F(s)&&Math.floor(s)===s?jl(n[0],t,s,e):["origin","start","end","stack","shape"].indexOf(n)>=0&&n}function jl(i,t,e,n){return(i==="-"||i==="+")&&(e=t+e),e===t||e<0||e>=n?!1:e}function $l(i,t){let e=null;return i==="start"?e=t.bottom:i==="end"?e=t.top:L(i)?e=t.getPixelForValue(i.value):t.getBasePixel&&(e=t.getBasePixel()),e}function Ul(i,t,e){let n;return i==="start"?n=e:i==="end"?n=t.options.reverse?t.min:t.max:L(i)?n=i.value:n=t.getBaseValue(),n}function Yl(i){const t=i.options,e=t.fill;let n=C(e&&e.target,e);return n===void 0&&(n=!!t.backgroundColor),n===!1||n===null?!1:n===!0?"origin":n}function Kl(i){const{scale:t,index:e,line:n}=i,s=[],o=n.segments,r=n.points,a=Xl(t,e);a.push(Qs({x:null,y:t.bottom},n));for(let l=0;l<o.length;l++){const c=o[l];for(let h=c.start;h<=c.end;h++)ql(s,r[h],a)}return new Ot({points:s,options:{}})}function Xl(i,t){const e=[],n=i.getMatchingVisibleMetas("line");for(let s=0;s<n.length;s++){const o=n[s];if(o.index===t)break;o.hidden||e.unshift(o.dataset)}return e}function ql(i,t,e){const n=[];for(let s=0;s<e.length;s++){const o=e[s],{first:r,last:a,point:l}=Gl(o,t,"x");if(!(!l||r&&a)){if(r)n.unshift(l);else if(i.push(l),!a)break}}i.push(...n)}function Gl(i,t,e){const n=i.interpolate(t,e);if(!n)return{};const s=n[e],o=i.segments,r=i.points;let a=!1,l=!1;for(let c=0;c<o.length;c++){const h=o[c],d=r[h.start][e],u=r[h.end][e];if(pt(s,d,u)){a=s===d,l=s===u;break}}return{first:a,last:l,point:n}}class Js{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,n){const{x:s,y:o,radius:r}=this;return e=e||{start:0,end:Q},t.arc(s,o,r,e.end,e.start,!0),!n.bounds}interpolate(t){const{x:e,y:n,radius:s}=this,o=t.angle;return{x:e+Math.cos(o)*s,y:n+Math.sin(o)*s,angle:o}}}function Zl(i){const{chart:t,fill:e,line:n}=i;if(F(e))return Ql(t,e);if(e==="stack")return Kl(i);if(e==="shape")return!0;const s=Jl(i);return s instanceof Js?s:Qs(s,n)}function Ql(i,t){const e=i.getDatasetMeta(t);return e&&i.isDatasetVisible(t)?e.dataset:null}function Jl(i){return(i.scale||{}).getPointPositionForValue?ec(i):tc(i)}function tc(i){const{scale:t={},fill:e}=i,n=$l(e,t);if(F(n)){const s=t.isHorizontal();return{x:s?n:null,y:s?null:n}}return null}function ec(i){const{scale:t,fill:e}=i,n=t.options,s=t.getLabels().length,o=n.reverse?t.max:t.min,r=Ul(e,t,o),a=[];if(n.grid.circular){const l=t.getPointPositionForValue(0,o);return new Js({x:l.x,y:l.y,radius:t.getDistanceFromCenterForValue(r)})}for(let l=0;l<s;++l)a.push(t.getPointPositionForValue(l,r));return a}function oi(i,t,e){const n=Zl(t),{line:s,scale:o,axis:r}=t,a=s.options,l=a.fill,c=a.backgroundColor,{above:h=c,below:d=c}=l||{};n&&s.points.length&&(Ve(i,e),ic(i,{line:s,target:n,above:h,below:d,area:e,scale:o,axis:r}),je(i))}function ic(i,t){const{line:e,target:n,above:s,below:o,area:r,scale:a}=t,l=e._loop?"angle":t.axis;i.save(),l==="x"&&o!==s&&(Rn(i,n,r.top),Fn(i,{line:e,target:n,color:s,scale:a,property:l}),i.restore(),i.save(),Rn(i,n,r.bottom)),Fn(i,{line:e,target:n,color:o,scale:a,property:l}),i.restore()}function Rn(i,t,e){const{segments:n,points:s}=t;let o=!0,r=!1;i.beginPath();for(const a of n){const{start:l,end:c}=a,h=s[l],d=s[Ri(l,c,s)];o?(i.moveTo(h.x,h.y),o=!1):(i.lineTo(h.x,e),i.lineTo(h.x,h.y)),r=!!t.pathSegment(i,a,{move:r}),r?i.closePath():i.lineTo(d.x,e)}i.lineTo(t.first().x,e),i.closePath(),i.clip()}function Fn(i,t){const{line:e,target:n,property:s,color:o,scale:r}=t,a=Hl(e,n,s);for(const{source:l,target:c,start:h,end:d}of a){const{style:{backgroundColor:u=o}={}}=l,f=n!==!0;i.save(),i.fillStyle=u,nc(i,r,f&&pi(s,h,d)),i.beginPath();const p=!!e.pathSegment(i,l);let g;if(f){p?i.closePath():En(i,n,d,s);const m=!!n.pathSegment(i,c,{move:p,reverse:!0});g=p&&m,g||En(i,n,h,s)}i.closePath(),i.fill(g?"evenodd":"nonzero"),i.restore()}}function nc(i,t,e){const{top:n,bottom:s}=t.chart.chartArea,{property:o,start:r,end:a}=e||{};o==="x"&&(i.beginPath(),i.rect(r,n,a-r,s-n),i.clip())}function En(i,t,e,n){const s=t.interpolate(e,n);s&&i.lineTo(s.x,s.y)}var Th={id:"filler",afterDatasetsUpdate(i,t,e){const n=(i.data.datasets||[]).length,s=[];let o,r,a,l;for(r=0;r<n;++r)o=i.getDatasetMeta(r),a=o.dataset,l=null,a&&a.options&&a instanceof Ot&&(l={visible:i.isDatasetVisible(r),index:r,fill:Vl(a,r,n),chart:i,axis:o.controller.options.indexAxis,scale:o.vScale,line:a}),o.$filler=l,s.push(l);for(r=0;r<n;++r)l=s[r],!(!l||l.fill===!1)&&(l.fill=Nl(s,r,e.propagate))},beforeDraw(i,t,e){const n=e.drawTime==="beforeDraw",s=i.getSortedVisibleDatasetMetas(),o=i.chartArea;for(let r=s.length-1;r>=0;--r){const a=s[r].$filler;a&&(a.line.updateControlPoints(o,a.axis),n&&a.fill&&oi(i.ctx,a,o))}},beforeDatasetsDraw(i,t,e){if(e.drawTime!=="beforeDatasetsDraw")return;const n=i.getSortedVisibleDatasetMetas();for(let s=n.length-1;s>=0;--s){const o=n[s].$filler;In(o)&&oi(i.ctx,o,i.chartArea)}},beforeDatasetDraw(i,t,e){const n=t.meta.$filler;!In(n)||e.drawTime!=="beforeDatasetDraw"||oi(i.ctx,n,i.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Bn=(i,t)=>{let{boxHeight:e=t,boxWidth:n=t}=i;return i.usePointStyle&&(e=Math.min(e,t),n=i.pointStyleWidth||Math.min(n,t)),{boxWidth:n,boxHeight:e,itemHeight:Math.max(t,e)}},sc=(i,t)=>i!==null&&t!==null&&i.datasetIndex===t.datasetIndex&&i.index===t.index;class Hn extends dt{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,n){this.maxWidth=t,this.maxHeight=e,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=P(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(n=>t.filter(n,this.chart.data))),t.sort&&(e=e.sort((n,s)=>t.sort(n,s,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display){this.width=this.height=0;return}const n=t.labels,s=V(n.font),o=s.size,r=this._computeTitleHeight(),{boxWidth:a,itemHeight:l}=Bn(n,o);let c,h;e.font=s.string,this.isHorizontal()?(c=this.maxWidth,h=this._fitRows(r,o,a,l)+10):(h=this.maxHeight,c=this._fitCols(r,s,a,l)+10),this.width=Math.min(c,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,n,s){const{ctx:o,maxWidth:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],h=s+a;let d=t;o.textAlign="left",o.textBaseline="middle";let u=-1,f=-h;return this.legendItems.forEach((p,g)=>{const m=n+e/2+o.measureText(p.text).width;(g===0||c[c.length-1]+m+2*a>r)&&(d+=h,c[c.length-(g>0?0:1)]=0,f+=h,u++),l[g]={left:0,top:f,row:u,width:m,height:s},c[c.length-1]+=m+a}),d}_fitCols(t,e,n,s){const{ctx:o,maxHeight:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],h=r-t;let d=a,u=0,f=0,p=0,g=0;return this.legendItems.forEach((m,b)=>{const{itemWidth:x,itemHeight:y}=oc(n,e,o,m,s);b>0&&f+y+2*a>h&&(d+=u+a,c.push({width:u,height:f}),p+=u+a,g++,u=f=0),l[b]={left:p,top:f,col:g,width:x,height:y},u=Math.max(u,x),f+=y+a}),d+=u,c.push({width:u,height:f}),d}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:n,labels:{padding:s},rtl:o}}=this,r=Ft(o,this.left,this.width);if(this.isHorizontal()){let a=0,l=X(n,this.left+s,this.right-this.lineWidths[a]);for(const c of e)a!==c.row&&(a=c.row,l=X(n,this.left+s,this.right-this.lineWidths[a])),c.top+=this.top+t+s,c.left=r.leftForLtr(r.x(l),c.width),l+=c.width+s}else{let a=0,l=X(n,this.top+t+s,this.bottom-this.columnSizes[a].height);for(const c of e)c.col!==a&&(a=c.col,l=X(n,this.top+t+s,this.bottom-this.columnSizes[a].height)),c.top=l,c.left+=this.left+s,c.left=r.leftForLtr(r.x(c.left),c.width),l+=c.height+s}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const t=this.ctx;Ve(t,this),this._draw(),je(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:n,ctx:s}=this,{align:o,labels:r}=t,a=E.color,l=Ft(t.rtl,this.left,this.width),c=V(r.font),{padding:h}=r,d=c.size,u=d/2;let f;this.drawTitle(),s.textAlign=l.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=c.string;const{boxWidth:p,boxHeight:g,itemHeight:m}=Bn(r,d),b=function(k,M,w){if(isNaN(p)||p<=0||isNaN(g)||g<0)return;s.save();const D=C(w.lineWidth,1);if(s.fillStyle=C(w.fillStyle,a),s.lineCap=C(w.lineCap,"butt"),s.lineDashOffset=C(w.lineDashOffset,0),s.lineJoin=C(w.lineJoin,"miter"),s.lineWidth=D,s.strokeStyle=C(w.strokeStyle,a),s.setLineDash(C(w.lineDash,[])),r.usePointStyle){const A={radius:g*Math.SQRT2/2,pointStyle:w.pointStyle,rotation:w.rotation,borderWidth:D},T=l.xPlus(k,p/2),z=M+u;Ms(s,A,T,z,r.pointStyleWidth&&p)}else{const A=M+Math.max((d-g)/2,0),T=l.leftForLtr(k,p),z=Tt(w.borderRadius);s.beginPath(),Object.values(z).some($=>$!==0)?ce(s,{x:T,y:A,w:p,h:g,radius:z}):s.rect(T,A,p,g),s.fill(),D!==0&&s.stroke()}s.restore()},x=function(k,M,w){Ht(s,w.text,k,M+m/2,c,{strikethrough:w.hidden,textAlign:l.textAlign(w.textAlign)})},y=this.isHorizontal(),v=this._computeTitleHeight();y?f={x:X(o,this.left+h,this.right-n[0]),y:this.top+h+v,line:0}:f={x:this.left+h,y:X(o,this.top+v+h,this.bottom-e[0].height),line:0},Ls(this.ctx,t.textDirection);const _=m+h;this.legendItems.forEach((k,M)=>{s.strokeStyle=k.fontColor,s.fillStyle=k.fontColor;const w=s.measureText(k.text).width,D=l.textAlign(k.textAlign||(k.textAlign=r.textAlign)),A=p+u+w;let T=f.x,z=f.y;l.setWidth(this.width),y?M>0&&T+A+h>this.right&&(z=f.y+=_,f.line++,T=f.x=X(o,this.left+h,this.right-n[f.line])):M>0&&z+_>this.bottom&&(T=f.x=T+e[f.line].width+h,f.line++,z=f.y=X(o,this.top+v+h,this.bottom-e[f.line].height));const $=l.x(T);if(b($,z,k),T=$o(D,T+p+u,y?T+A:this.right,t.rtl),x(l.x(T),z,k),y)f.x+=A+h;else if(typeof k.text!="string"){const it=c.lineHeight;f.y+=to(k,it)+h}else f.y+=_}),As(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,n=V(e.font),s=j(e.padding);if(!e.display)return;const o=Ft(t.rtl,this.left,this.width),r=this.ctx,a=e.position,l=n.size/2,c=s.top+l;let h,d=this.left,u=this.width;if(this.isHorizontal())u=Math.max(...this.lineWidths),h=this.top+c,d=X(t.align,d,this.right-u);else{const p=this.columnSizes.reduce((g,m)=>Math.max(g,m.height),0);h=c+X(t.align,this.top,this.bottom-p-t.labels.padding-this._computeTitleHeight())}const f=X(a,d,d+u);r.textAlign=o.textAlign(vs(a)),r.textBaseline="middle",r.strokeStyle=e.color,r.fillStyle=e.color,r.font=n.string,Ht(r,e.text,f,h,n)}_computeTitleHeight(){const t=this.options.title,e=V(t.font),n=j(t.padding);return t.display?e.lineHeight+n.height:0}_getLegendItemAt(t,e){let n,s,o;if(pt(t,this.left,this.right)&&pt(e,this.top,this.bottom)){for(o=this.legendHitBoxes,n=0;n<o.length;++n)if(s=o[n],pt(t,s.left,s.left+s.width)&&pt(e,s.top,s.top+s.height))return this.legendItems[n]}return null}handleEvent(t){const e=this.options;if(!lc(t.type,e))return;const n=this._getLegendItemAt(t.x,t.y);if(t.type==="mousemove"||t.type==="mouseout"){const s=this._hoveredItem,o=sc(s,n);s&&!o&&P(e.onLeave,[t,s,this],this),this._hoveredItem=n,n&&!o&&P(e.onHover,[t,n,this],this)}else n&&P(e.onClick,[t,n,this],this)}}function oc(i,t,e,n,s){const o=rc(n,i,t,e),r=ac(s,n,t.lineHeight);return{itemWidth:o,itemHeight:r}}function rc(i,t,e,n){let s=i.text;return s&&typeof s!="string"&&(s=s.reduce((o,r)=>o.length>r.length?o:r)),t+e.size/2+n.measureText(s).width}function ac(i,t,e){let n=i;return typeof t.text!="string"&&(n=to(t,e)),n}function to(i,t){const e=i.text?i.text.length:0;return t*e}function lc(i,t){return!!((i==="mousemove"||i==="mouseout")&&(t.onHover||t.onLeave)||t.onClick&&(i==="click"||i==="mouseup"))}var Lh={id:"legend",_element:Hn,start(i,t,e){const n=i.legend=new Hn({ctx:i.ctx,options:e,chart:i});mt.configure(i,n,e),mt.addBox(i,n)},stop(i){mt.removeBox(i,i.legend),delete i.legend},beforeUpdate(i,t,e){const n=i.legend;mt.configure(i,n,e),n.options=e},afterUpdate(i){const t=i.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(i,t){t.replay||i.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(i,t,e){const n=t.datasetIndex,s=e.chart;s.isDatasetVisible(n)?(s.hide(n),t.hidden=!0):(s.show(n),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:i=>i.chart.options.color,boxWidth:40,padding:10,generateLabels(i){const t=i.data.datasets,{labels:{usePointStyle:e,pointStyle:n,textAlign:s,color:o,useBorderRadius:r,borderRadius:a}}=i.legend.options;return i._getSortedDatasetMetas().map(l=>{const c=l.controller.getStyle(e?0:void 0),h=j(c.borderWidth);return{text:t[l.index].label,fillStyle:c.backgroundColor,fontColor:o,hidden:!l.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:c.borderColor,pointStyle:n||c.pointStyle,rotation:c.rotation,textAlign:s||c.textAlign,borderRadius:r&&(a||c.borderRadius),datasetIndex:l.index}},this)}},title:{color:i=>i.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:i=>!i.startsWith("on"),labels:{_scriptable:i=>!["generateLabels","filter","sort"].includes(i)}}};const Jt={average(i){if(!i.length)return!1;let t,e,n=new Set,s=0,o=0;for(t=0,e=i.length;t<e;++t){const a=i[t].element;if(a&&a.hasValue()){const l=a.tooltipPosition();n.add(l.x),s+=l.y,++o}}return o===0||n.size===0?!1:{x:[...n].reduce((a,l)=>a+l)/n.size,y:s/o}},nearest(i,t){if(!i.length)return!1;let e=t.x,n=t.y,s=Number.POSITIVE_INFINITY,o,r,a;for(o=0,r=i.length;o<r;++o){const l=i[o].element;if(l&&l.hasValue()){const c=l.getCenterPoint(),h=ci(t,c);h<s&&(s=h,a=l)}}if(a){const l=a.tooltipPosition();e=l.x,n=l.y}return{x:e,y:n}}};function nt(i,t){return t&&(R(t)?Array.prototype.push.apply(i,t):i.push(t)),i}function lt(i){return(typeof i=="string"||i instanceof String)&&i.indexOf(`
+`)>-1?i.split(`
+`):i}function cc(i,t){const{element:e,datasetIndex:n,index:s}=t,o=i.getDatasetMeta(n).controller,{label:r,value:a}=o.getLabelAndValue(s);return{chart:i,label:r,parsed:o.getParsed(s),raw:i.data.datasets[n].data[s],formattedValue:a,dataset:o.getDataset(),dataIndex:s,datasetIndex:n,element:e}}function Wn(i,t){const e=i.chart.ctx,{body:n,footer:s,title:o}=i,{boxWidth:r,boxHeight:a}=t,l=V(t.bodyFont),c=V(t.titleFont),h=V(t.footerFont),d=o.length,u=s.length,f=n.length,p=j(t.padding);let g=p.height,m=0,b=n.reduce((v,_)=>v+_.before.length+_.lines.length+_.after.length,0);if(b+=i.beforeBody.length+i.afterBody.length,d&&(g+=d*c.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),b){const v=t.displayColors?Math.max(a,l.lineHeight):l.lineHeight;g+=f*v+(b-f)*l.lineHeight+(b-1)*t.bodySpacing}u&&(g+=t.footerMarginTop+u*h.lineHeight+(u-1)*t.footerSpacing);let x=0;const y=function(v){m=Math.max(m,e.measureText(v).width+x)};return e.save(),e.font=c.string,O(i.title,y),e.font=l.string,O(i.beforeBody.concat(i.afterBody),y),x=t.displayColors?r+2+t.boxPadding:0,O(n,v=>{O(v.before,y),O(v.lines,y),O(v.after,y)}),x=0,e.font=h.string,O(i.footer,y),e.restore(),m+=p.width,{width:m,height:g}}function hc(i,t){const{y:e,height:n}=t;return e<n/2?"top":e>i.height-n/2?"bottom":"center"}function dc(i,t,e,n){const{x:s,width:o}=n,r=e.caretSize+e.caretPadding;if(i==="left"&&s+o+r>t.width||i==="right"&&s-o-r<0)return!0}function uc(i,t,e,n){const{x:s,width:o}=e,{width:r,chartArea:{left:a,right:l}}=i;let c="center";return n==="center"?c=s<=(a+l)/2?"left":"right":s<=o/2?c="left":s>=r-o/2&&(c="right"),dc(c,i,t,e)&&(c="center"),c}function Nn(i,t,e){const n=e.yAlign||t.yAlign||hc(i,e);return{xAlign:e.xAlign||t.xAlign||uc(i,t,e,n),yAlign:n}}function fc(i,t){let{x:e,width:n}=i;return t==="right"?e-=n:t==="center"&&(e-=n/2),e}function gc(i,t,e){let{y:n,height:s}=i;return t==="top"?n+=e:t==="bottom"?n-=s+e:n-=s/2,n}function Vn(i,t,e,n){const{caretSize:s,caretPadding:o,cornerRadius:r}=i,{xAlign:a,yAlign:l}=e,c=s+o,{topLeft:h,topRight:d,bottomLeft:u,bottomRight:f}=Tt(r);let p=fc(t,a);const g=gc(t,l,c);return l==="center"?a==="left"?p+=c:a==="right"&&(p-=c):a==="left"?p-=Math.max(h,u)+s:a==="right"&&(p+=Math.max(d,f)+s),{x:tt(p,0,n.width-t.width),y:tt(g,0,n.height-t.height)}}function Pe(i,t,e){const n=j(e.padding);return t==="center"?i.x+i.width/2:t==="right"?i.x+i.width-n.right:i.x+n.left}function jn(i){return nt([],lt(i))}function pc(i,t,e){return yt(i,{tooltip:t,tooltipItems:e,type:"tooltip"})}function $n(i,t){const e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?i.override(e):i}const eo={beforeTitle:rt,title(i){if(i.length>0){const t=i[0],e=t.chart.data.labels,n=e?e.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(n>0&&t.dataIndex<n)return e[t.dataIndex]}return""},afterTitle:rt,beforeBody:rt,beforeLabel:rt,label(i){if(this&&this.options&&this.options.mode==="dataset")return i.label+": "+i.formattedValue||i.formattedValue;let t=i.dataset.label||"";t&&(t+=": ");const e=i.formattedValue;return I(e)||(t+=e),t},labelColor(i){const e=i.chart.getDatasetMeta(i.datasetIndex).controller.getStyle(i.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(i){const e=i.chart.getDatasetMeta(i.datasetIndex).controller.getStyle(i.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:rt,afterBody:rt,beforeFooter:rt,footer:rt,afterFooter:rt};function U(i,t,e,n){const s=i[t].call(e,n);return typeof s>"u"?eo[t].call(e,n):s}class mi extends dt{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,n=this.options.setContext(this.getContext()),s=n.enabled&&e.options.animation&&n.animations,o=new Fs(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=pc(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,e){const{callbacks:n}=e,s=U(n,"beforeTitle",this,t),o=U(n,"title",this,t),r=U(n,"afterTitle",this,t);let a=[];return a=nt(a,lt(s)),a=nt(a,lt(o)),a=nt(a,lt(r)),a}getBeforeBody(t,e){return jn(U(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:n}=e,s=[];return O(t,o=>{const r={before:[],lines:[],after:[]},a=$n(n,o);nt(r.before,lt(U(a,"beforeLabel",this,o))),nt(r.lines,U(a,"label",this,o)),nt(r.after,lt(U(a,"afterLabel",this,o))),s.push(r)}),s}getAfterBody(t,e){return jn(U(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:n}=e,s=U(n,"beforeFooter",this,t),o=U(n,"footer",this,t),r=U(n,"afterFooter",this,t);let a=[];return a=nt(a,lt(s)),a=nt(a,lt(o)),a=nt(a,lt(r)),a}_createItems(t){const e=this._active,n=this.chart.data,s=[],o=[],r=[];let a=[],l,c;for(l=0,c=e.length;l<c;++l)a.push(cc(this.chart,e[l]));return t.filter&&(a=a.filter((h,d,u)=>t.filter(h,d,u,n))),t.itemSort&&(a=a.sort((h,d)=>t.itemSort(h,d,n))),O(a,h=>{const d=$n(t.callbacks,h);s.push(U(d,"labelColor",this,h)),o.push(U(d,"labelPointStyle",this,h)),r.push(U(d,"labelTextColor",this,h))}),this.labelColors=s,this.labelPointStyles=o,this.labelTextColors=r,this.dataPoints=a,a}update(t,e){const n=this.options.setContext(this.getContext()),s=this._active;let o,r=[];if(!s.length)this.opacity!==0&&(o={opacity:0});else{const a=Jt[n.position].call(this,s,this._eventPosition);r=this._createItems(n),this.title=this.getTitle(r,n),this.beforeBody=this.getBeforeBody(r,n),this.body=this.getBody(r,n),this.afterBody=this.getAfterBody(r,n),this.footer=this.getFooter(r,n);const l=this._size=Wn(this,n),c=Object.assign({},a,l),h=Nn(this.chart,n,c),d=Vn(n,c,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,o={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=r,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,n,s){const o=this.getCaretPosition(t,n,s);e.lineTo(o.x1,o.y1),e.lineTo(o.x2,o.y2),e.lineTo(o.x3,o.y3)}getCaretPosition(t,e,n){const{xAlign:s,yAlign:o}=this,{caretSize:r,cornerRadius:a}=n,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:d}=Tt(a),{x:u,y:f}=t,{width:p,height:g}=e;let m,b,x,y,v,_;return o==="center"?(v=f+g/2,s==="left"?(m=u,b=m-r,y=v+r,_=v-r):(m=u+p,b=m+r,y=v-r,_=v+r),x=m):(s==="left"?b=u+Math.max(l,h)+r:s==="right"?b=u+p-Math.max(c,d)-r:b=this.caretX,o==="top"?(y=f,v=y-r,m=b-r,x=b+r):(y=f+g,v=y+r,m=b+r,x=b-r),_=y),{x1:m,x2:b,x3:x,y1:y,y2:v,y3:_}}drawTitle(t,e,n){const s=this.title,o=s.length;let r,a,l;if(o){const c=Ft(n.rtl,this.x,this.width);for(t.x=Pe(this,n.titleAlign,n),e.textAlign=c.textAlign(n.titleAlign),e.textBaseline="middle",r=V(n.titleFont),a=n.titleSpacing,e.fillStyle=n.titleColor,e.font=r.string,l=0;l<o;++l)e.fillText(s[l],c.x(t.x),t.y+r.lineHeight/2),t.y+=r.lineHeight+a,l+1===o&&(t.y+=n.titleMarginBottom-a)}}_drawColorBox(t,e,n,s,o){const r=this.labelColors[n],a=this.labelPointStyles[n],{boxHeight:l,boxWidth:c}=o,h=V(o.bodyFont),d=Pe(this,"left",o),u=s.x(d),f=l<h.lineHeight?(h.lineHeight-l)/2:0,p=e.y+f;if(o.usePointStyle){const g={radius:Math.min(c,l)/2,pointStyle:a.pointStyle,rotation:a.rotation,borderWidth:1},m=s.leftForLtr(u,c)+c/2,b=p+l/2;t.strokeStyle=o.multiKeyBackground,t.fillStyle=o.multiKeyBackground,di(t,g,m,b),t.strokeStyle=r.borderColor,t.fillStyle=r.backgroundColor,di(t,g,m,b)}else{t.lineWidth=L(r.borderWidth)?Math.max(...Object.values(r.borderWidth)):r.borderWidth||1,t.strokeStyle=r.borderColor,t.setLineDash(r.borderDash||[]),t.lineDashOffset=r.borderDashOffset||0;const g=s.leftForLtr(u,c),m=s.leftForLtr(s.xPlus(u,1),c-2),b=Tt(r.borderRadius);Object.values(b).some(x=>x!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,ce(t,{x:g,y:p,w:c,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),ce(t,{x:m,y:p+1,w:c-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(g,p,c,l),t.strokeRect(g,p,c,l),t.fillStyle=r.backgroundColor,t.fillRect(m,p+1,c-2,l-2))}t.fillStyle=this.labelTextColors[n]}drawBody(t,e,n){const{body:s}=this,{bodySpacing:o,bodyAlign:r,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:h}=n,d=V(n.bodyFont);let u=d.lineHeight,f=0;const p=Ft(n.rtl,this.x,this.width),g=function(w){e.fillText(w,p.x(t.x+f),t.y+u/2),t.y+=u+o},m=p.textAlign(r);let b,x,y,v,_,k,M;for(e.textAlign=r,e.textBaseline="middle",e.font=d.string,t.x=Pe(this,m,n),e.fillStyle=n.bodyColor,O(this.beforeBody,g),f=a&&m!=="right"?r==="center"?c/2+h:c+2+h:0,v=0,k=s.length;v<k;++v){for(b=s[v],x=this.labelTextColors[v],e.fillStyle=x,O(b.before,g),y=b.lines,a&&y.length&&(this._drawColorBox(e,t,v,p,n),u=Math.max(d.lineHeight,l)),_=0,M=y.length;_<M;++_)g(y[_]),u=d.lineHeight;O(b.after,g)}f=0,u=d.lineHeight,O(this.afterBody,g),t.y-=o}drawFooter(t,e,n){const s=this.footer,o=s.length;let r,a;if(o){const l=Ft(n.rtl,this.x,this.width);for(t.x=Pe(this,n.footerAlign,n),t.y+=n.footerMarginTop,e.textAlign=l.textAlign(n.footerAlign),e.textBaseline="middle",r=V(n.footerFont),e.fillStyle=n.footerColor,e.font=r.string,a=0;a<o;++a)e.fillText(s[a],l.x(t.x),t.y+r.lineHeight/2),t.y+=r.lineHeight+n.footerSpacing}}drawBackground(t,e,n,s){const{xAlign:o,yAlign:r}=this,{x:a,y:l}=t,{width:c,height:h}=n,{topLeft:d,topRight:u,bottomLeft:f,bottomRight:p}=Tt(s.cornerRadius);e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.beginPath(),e.moveTo(a+d,l),r==="top"&&this.drawCaret(t,e,n,s),e.lineTo(a+c-u,l),e.quadraticCurveTo(a+c,l,a+c,l+u),r==="center"&&o==="right"&&this.drawCaret(t,e,n,s),e.lineTo(a+c,l+h-p),e.quadraticCurveTo(a+c,l+h,a+c-p,l+h),r==="bottom"&&this.drawCaret(t,e,n,s),e.lineTo(a+f,l+h),e.quadraticCurveTo(a,l+h,a,l+h-f),r==="center"&&o==="left"&&this.drawCaret(t,e,n,s),e.lineTo(a,l+d),e.quadraticCurveTo(a,l,a+d,l),e.closePath(),e.fill(),s.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,n=this.$animations,s=n&&n.x,o=n&&n.y;if(s||o){const r=Jt[t.position].call(this,this._active,this._eventPosition);if(!r)return;const a=this._size=Wn(this,t),l=Object.assign({},r,this._size),c=Nn(e,t,l),h=Vn(t,l,c,e);(s._to!==h.x||o._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=r.x,this.caretY=r.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let n=this.opacity;if(!n)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},o={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;const r=j(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=n,this.drawBackground(o,t,s,e),Ls(t,e.textDirection),o.y+=r.top,this.drawTitle(o,t,e),this.drawBody(o,t,e),this.drawFooter(o,t,e),As(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const n=this._active,s=t.map(({datasetIndex:a,index:l})=>{const c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),o=!ze(n,s),r=this._positionChanged(s,e);(o||r)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,n=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,o=this._active||[],r=this._getActiveElements(t,o,e,n),a=this._positionChanged(r,t),l=e||!ze(r,o)||a;return l&&(this._active=r,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,n,s){const o=this.options;if(t.type==="mouseout")return[];if(!s)return e.filter(a=>this.chart.data.datasets[a.datasetIndex]&&this.chart.getDatasetMeta(a.datasetIndex).controller.getParsed(a.index)!==void 0);const r=this.chart.getElementsAtEventForMode(t,o.mode,o,n);return o.reverse&&r.reverse(),r}_positionChanged(t,e){const{caretX:n,caretY:s,options:o}=this,r=Jt[o.position].call(this,t,e);return r!==!1&&(n!==r.x||s!==r.y)}}S(mi,"positioners",Jt);var Ah={id:"tooltip",_element:mi,positioners:Jt,afterInit(i,t,e){e&&(i.tooltip=new mi({chart:i,options:e}))},beforeUpdate(i,t,e){i.tooltip&&i.tooltip.initialize(e)},reset(i,t,e){i.tooltip&&i.tooltip.initialize(e)},afterDraw(i){const t=i.tooltip;if(t&&t._willRender()){const e={tooltip:t};if(i.notifyPlugins("beforeTooltipDraw",{...e,cancelable:!0})===!1)return;t.draw(i.ctx),i.notifyPlugins("afterTooltipDraw",e)}},afterEvent(i,t){if(i.tooltip){const e=t.replay;i.tooltip.handleEvent(t.event,e,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(i,t)=>t.bodyFont.size,boxWidth:(i,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:eo},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:i=>i!=="filter"&&i!=="itemSort"&&i!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};function mc(i,t){const e=[],{bounds:s,step:o,min:r,max:a,precision:l,count:c,maxTicks:h,maxDigits:d,includeBounds:u}=i,f=o||1,p=h-1,{min:g,max:m}=t,b=!I(r),x=!I(a),y=!I(c),v=(m-g)/(d+1);let _=Ni((m-g)/p/f)*f,k,M,w,D;if(_<1e-14&&!b&&!x)return[{value:g},{value:m}];D=Math.ceil(m/_)-Math.floor(g/_),D>p&&(_=Ni(D*_/p/f)*f),I(l)||(k=Math.pow(10,l),_=Math.ceil(_*k)/k),s==="ticks"?(M=Math.floor(g/_)*_,w=Math.ceil(m/_)*_):(M=g,w=m),b&&x&&o&&Fo((a-r)/o,_/1e3)?(D=Math.round(Math.min((a-r)/_,h)),_=(a-r)/D,M=r,w=a):y?(M=b?r:M,w=x?a:w,D=c-1,_=(w-M)/D):(D=(w-M)/_,ie(D,Math.round(D),_/1e3)?D=Math.round(D):D=Math.ceil(D));const A=Math.max(Vi(_),Vi(M));k=Math.pow(10,I(l)?A:l),M=Math.round(M*k)/k,w=Math.round(w*k)/k;let T=0;for(b&&(u&&M!==r?(e.push({value:r}),M<r&&T++,ie(Math.round((M+T*_)*k)/k,r,Un(r,v,i))&&T++):M<r&&T++);T<D;++T){const z=Math.round((M+T*_)*k)/k;if(x&&z>a)break;e.push({value:z})}return x&&u&&w!==a?e.length&&ie(e[e.length-1].value,a,Un(a,v,i))?e[e.length-1].value=a:e.push({value:a}):(!x||w===a)&&e.push({value:w}),e}function Un(i,t,{horizontal:e,minRotation:n}){const s=gt(n),o=(e?Math.sin(s):Math.cos(s))||.001,r=.75*t*(""+i).length;return Math.min(t/o,r)}class He extends Vt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return I(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:n}=this.getUserBounds();let{min:s,max:o}=this;const r=l=>s=e?s:l,a=l=>o=n?o:l;if(t){const l=et(s),c=et(o);l<0&&c<0?a(0):l>0&&c>0&&r(0)}if(s===o){let l=o===0?1:Math.abs(o*.05);a(o+l),t||r(s-l)}this.min=s,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:e,stepSize:n}=t,s;return n?(s=Math.ceil(this.max/n)-Math.floor(this.min/n)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${n} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),e=e||11),e&&(s=Math.min(e,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let n=this.getTickLimit();n=Math.max(2,n);const s={maxTicks:n,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:e.includeBounds!==!1},o=this._range||this,r=mc(s,o);return t.bounds==="ticks"&&ps(r,this,"value"),t.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){const t=this.ticks;let e=this.min,n=this.max;if(super.configure(),this.options.offset&&t.length){const s=(n-e)/Math.max(t.length-1,1)/2;e-=s,n+=s}this._startValue=e,this._endValue=n,this._valueRange=n-e}getLabelForValue(t){return Di(t,this.chart.options.locale,this.options.ticks.format)}}class Yn extends He{determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=F(t)?t:0,this.max=F(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,n=gt(this.options.ticks.minRotation),s=(t?Math.sin(n):Math.cos(n))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,o.lineHeight/s))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}S(Yn,"id","linear"),S(Yn,"defaults",{ticks:{callback:Ne.formatters.numeric}});const de=i=>Math.floor(ft(i)),Pt=(i,t)=>Math.pow(10,de(i)+t);function Kn(i){return i/Math.pow(10,de(i))===1}function Xn(i,t,e){const n=Math.pow(10,e),s=Math.floor(i/n);return Math.ceil(t/n)-s}function bc(i,t){const e=t-i;let n=de(e);for(;Xn(i,t,n)>10;)n++;for(;Xn(i,t,n)<10;)n--;return Math.min(n,de(i))}function xc(i,{min:t,max:e}){t=q(i.min,t);const n=[],s=de(t);let o=bc(t,e),r=o<0?Math.pow(10,Math.abs(o)):1;const a=Math.pow(10,o),l=s>o?Math.pow(10,s):0,c=Math.round((t-l)*r)/r,h=Math.floor((t-l)/a/10)*a*10;let d=Math.floor((c-h)/Math.pow(10,o)),u=q(i.min,Math.round((l+h+d*Math.pow(10,o))*r)/r);for(;u<e;)n.push({value:u,major:Kn(u),significand:d}),d>=10?d=d<15?15:20:d++,d>=20&&(o++,d=2,r=o>=0?1:r),u=Math.round((l+h+d*Math.pow(10,o))*r)/r;const f=q(i.max,u);return n.push({value:f,major:Kn(f),significand:d}),n}class qn extends Vt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const n=He.prototype.parse.apply(this,[t,e]);if(n===0){this._zero=!0;return}return F(n)&&n>0?n:null}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=F(t)?Math.max(0,t):null,this.max=F(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!F(this._userMin)&&(this.min=t===Pt(this.min,0)?Pt(this.min,-1):Pt(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let n=this.min,s=this.max;const o=a=>n=t?n:a,r=a=>s=e?s:a;n===s&&(n<=0?(o(1),r(10)):(o(Pt(n,-1)),r(Pt(s,1)))),n<=0&&o(Pt(s,-1)),s<=0&&r(Pt(n,1)),this.min=n,this.max=s}buildTicks(){const t=this.options,e={min:this._userMin,max:this._userMax},n=xc(e,this);return t.bounds==="ticks"&&ps(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}getLabelForValue(t){return t===void 0?"0":Di(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=ft(t),this._valueRange=ft(this.max)-ft(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(ft(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}S(qn,"id","logarithmic"),S(qn,"defaults",{ticks:{callback:Ne.formatters.logarithmic,major:{enabled:!0}}});function bi(i){const t=i.ticks;if(t.display&&i.display){const e=j(t.backdropPadding);return C(t.font&&t.font.size,E.font.size)+e.height}return 0}function _c(i,t,e){return e=R(e)?e:[e],{w:ir(i,t.string,e),h:e.length*t.lineHeight}}function Gn(i,t,e,n,s){return i===n||i===s?{start:t-e/2,end:t+e/2}:i<n||i>s?{start:t-e,end:t}:{start:t,end:t+e}}function yc(i){const t={l:i.left+i._padding.left,r:i.right-i._padding.right,t:i.top+i._padding.top,b:i.bottom-i._padding.bottom},e=Object.assign({},t),n=[],s=[],o=i._pointLabels.length,r=i.options.pointLabels,a=r.centerPointLabels?W/o:0;for(let l=0;l<o;l++){const c=r.setContext(i.getPointLabelContext(l));s[l]=c.padding;const h=i.getPointPosition(l,i.drawingArea+s[l],a),d=V(c.font),u=_c(i.ctx,d,i._pointLabels[l]);n[l]=u;const f=G(i.getIndexAngle(l)+a),p=Math.round(ki(f)),g=Gn(p,h.x,u.w,0,180),m=Gn(p,h.y,u.h,90,270);vc(e,t,f,g,m)}i.setCenterPoint(t.l-e.l,e.r-t.r,t.t-e.t,e.b-t.b),i._pointLabelItems=kc(i,n,s)}function vc(i,t,e,n,s){const o=Math.abs(Math.sin(e)),r=Math.abs(Math.cos(e));let a=0,l=0;n.start<t.l?(a=(t.l-n.start)/o,i.l=Math.min(i.l,t.l-a)):n.end>t.r&&(a=(n.end-t.r)/o,i.r=Math.max(i.r,t.r+a)),s.start<t.t?(l=(t.t-s.start)/r,i.t=Math.min(i.t,t.t-l)):s.end>t.b&&(l=(s.end-t.b)/r,i.b=Math.max(i.b,t.b+l))}function wc(i,t,e){const n=i.drawingArea,{extra:s,additionalAngle:o,padding:r,size:a}=e,l=i.getPointPosition(t,n+s+r,o),c=Math.round(ki(G(l.angle+Z))),h=Dc(l.y,a.h,c),d=Sc(c),u=Pc(l.x,a.w,d);return{visible:!0,x:l.x,y:h,textAlign:d,left:u,top:h,right:u+a.w,bottom:h+a.h}}function Mc(i,t){if(!t)return!0;const{left:e,top:n,right:s,bottom:o}=i;return!(ht({x:e,y:n},t)||ht({x:e,y:o},t)||ht({x:s,y:n},t)||ht({x:s,y:o},t))}function kc(i,t,e){const n=[],s=i._pointLabels.length,o=i.options,{centerPointLabels:r,display:a}=o.pointLabels,l={extra:bi(o)/2,additionalAngle:r?W/s:0};let c;for(let h=0;h<s;h++){l.padding=e[h],l.size=t[h];const d=wc(i,h,l);n.push(d),a==="auto"&&(d.visible=Mc(d,c),d.visible&&(c=d))}return n}function Sc(i){return i===0||i===180?"center":i<180?"left":"right"}function Pc(i,t,e){return e==="right"?i-=t:e==="center"&&(i-=t/2),i}function Dc(i,t,e){return e===90||e===270?i-=t/2:(e>270||e<90)&&(i-=t),i}function Cc(i,t,e){const{left:n,top:s,right:o,bottom:r}=e,{backdropColor:a}=t;if(!I(a)){const l=Tt(t.borderRadius),c=j(t.backdropPadding);i.fillStyle=a;const h=n-c.left,d=s-c.top,u=o-n+c.width,f=r-s+c.height;Object.values(l).some(p=>p!==0)?(i.beginPath(),ce(i,{x:h,y:d,w:u,h:f,radius:l}),i.fill()):i.fillRect(h,d,u,f)}}function Oc(i,t){const{ctx:e,options:{pointLabels:n}}=i;for(let s=t-1;s>=0;s--){const o=i._pointLabelItems[s];if(!o.visible)continue;const r=n.setContext(i.getPointLabelContext(s));Cc(e,r,o);const a=V(r.font),{x:l,y:c,textAlign:h}=o;Ht(e,i._pointLabels[s],l,c+a.lineHeight/2,a,{color:r.color,textAlign:h,textBaseline:"middle"})}}function io(i,t,e,n){const{ctx:s}=i;if(e)s.arc(i.xCenter,i.yCenter,t,0,Q);else{let o=i.getPointPosition(0,t);s.moveTo(o.x,o.y);for(let r=1;r<n;r++)o=i.getPointPosition(r,t),s.lineTo(o.x,o.y)}}function Tc(i,t,e,n,s){const o=i.ctx,r=t.circular,{color:a,lineWidth:l}=t;!r&&!n||!a||!l||e<0||(o.save(),o.strokeStyle=a,o.lineWidth=l,o.setLineDash(s.dash),o.lineDashOffset=s.dashOffset,o.beginPath(),io(i,e,r,n),o.closePath(),o.stroke(),o.restore())}function Lc(i,t,e){return yt(i,{label:e,index:t,type:"pointLabel"})}class De extends He{constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=j(bi(this.options)/2),e=this.width=this.maxWidth-t.width,n=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+n/2+t.top),this.drawingArea=Math.floor(Math.min(e,n)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=F(t)&&!isNaN(t)?t:0,this.max=F(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/bi(this.options))}generateTickLabels(t){He.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map((e,n)=>{const s=P(this.options.pointLabels.callback,[e,n],this);return s||s===0?s:""}).filter((e,n)=>this.chart.getDataVisibility(n))}fit(){const t=this.options;t.display&&t.pointLabels.display?yc(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,n,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((n-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,n,s))}getIndexAngle(t){const e=Q/(this._pointLabels.length||1),n=this.options.startAngle||0;return G(t*e+gt(n))}getDistanceFromCenterForValue(t){if(I(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(I(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const n=e[t];return Lc(this.getContext(),t,n)}}getPointPosition(t,e,n=0){const s=this.getIndexAngle(t)-Z+n;return{x:Math.cos(s)*e+this.xCenter,y:Math.sin(s)*e+this.yCenter,angle:s}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:n,right:s,bottom:o}=this._pointLabelItems[t];return{left:e,top:n,right:s,bottom:o}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const n=this.ctx;n.save(),n.beginPath(),io(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),n.closePath(),n.fillStyle=t,n.fill(),n.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:n,grid:s,border:o}=e,r=this._pointLabels.length;let a,l,c;if(e.pointLabels.display&&Oc(this,r),s.display&&this.ticks.forEach((h,d)=>{if(d!==0||d===0&&this.min<0){l=this.getDistanceFromCenterForValue(h.value);const u=this.getContext(d),f=s.setContext(u),p=o.setContext(u);Tc(this,f,l,r,p)}}),n.display){for(t.save(),a=r-1;a>=0;a--){const h=n.setContext(this.getPointLabelContext(a)),{color:d,lineWidth:u}=h;!u||!d||(t.lineWidth=u,t.strokeStyle=d,t.setLineDash(h.borderDash),t.lineDashOffset=h.borderDashOffset,l=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),c=this.getPointPosition(a,l),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(c.x,c.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,n=e.ticks;if(!n.display)return;const s=this.getIndexAngle(0);let o,r;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&this.min>=0&&!e.reverse)return;const c=n.setContext(this.getContext(l)),h=V(c.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=h.string,r=t.measureText(a.label).width,t.fillStyle=c.backdropColor;const d=j(c.backdropPadding);t.fillRect(-r/2-d.left,-o-h.size/2-d.top,r+d.width,h.size+d.height)}Ht(t,a.label,0,-o,h,{color:c.color,strokeColor:c.textStrokeColor,strokeWidth:c.textStrokeWidth})}),t.restore()}drawTitle(){}}S(De,"id","radialLinear"),S(De,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Ne.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(t){return t},padding:5,centerPointLabels:!1}}),S(De,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),S(De,"descriptors",{angleLines:{_fallback:"grid"}});const Ue={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},K=Object.keys(Ue);function Zn(i,t){return i-t}function Qn(i,t){if(I(t))return null;const e=i._adapter,{parser:n,round:s,isoWeekday:o}=i._parseOpts;let r=t;return typeof n=="function"&&(r=n(r)),F(r)||(r=typeof n=="string"?e.parse(r,n):e.parse(r)),r===null?null:(s&&(r=s==="week"&&(le(o)||o===!0)?e.startOf(r,"isoWeek",o):e.startOf(r,s)),+r)}function Jn(i,t,e,n){const s=K.length;for(let o=K.indexOf(i);o<s-1;++o){const r=Ue[K[o]],a=r.steps?r.steps:Number.MAX_SAFE_INTEGER;if(r.common&&Math.ceil((e-t)/(a*r.size))<=n)return K[o]}return K[s-1]}function Ac(i,t,e,n,s){for(let o=K.length-1;o>=K.indexOf(e);o--){const r=K[o];if(Ue[r].common&&i._adapter.diff(s,n,r)>=t-1)return r}return K[e?K.indexOf(e):0]}function zc(i){for(let t=K.indexOf(i)+1,e=K.length;t<e;++t)if(Ue[K[t]].common)return K[t]}function ts(i,t,e){if(!e)i[t]=!0;else if(e.length){const{lo:n,hi:s}=Si(e,t),o=e[n]>=t?e[n]:e[s];i[o]=!0}}function Ic(i,t,e,n){const s=i._adapter,o=+s.startOf(t[0].value,n),r=t[t.length-1].value;let a,l;for(a=o;a<=r;a=+s.add(a,1,n))l=e[a],l>=0&&(t[l].major=!0);return t}function es(i,t,e){const n=[],s={},o=t.length;let r,a;for(r=0;r<o;++r)a=t[r],s[a]=r,n.push({value:a,major:!1});return o===0||!e?n:Ic(i,n,s,e)}class We extends Vt{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const n=t.time||(t.time={}),s=this._adapter=new Hs._date(t.adapters.date);s.init(e),ee(n.displayFormats,s.formats()),this._parseOpts={parser:n.parser,round:n.round,isoWeekday:n.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return t===void 0?null:Qn(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,n=t.time.unit||"day";let{min:s,max:o,minDefined:r,maxDefined:a}=this.getUserBounds();function l(c){!r&&!isNaN(c.min)&&(s=Math.min(s,c.min)),!a&&!isNaN(c.max)&&(o=Math.max(o,c.max))}(!r||!a)&&(l(this._getLabelBounds()),(t.bounds!=="ticks"||t.ticks.source!=="labels")&&l(this.getMinMax(!1))),s=F(s)&&!isNaN(s)?s:+e.startOf(Date.now(),n),o=F(o)&&!isNaN(o)?o:+e.endOf(Date.now(),n)+1,this.min=Math.min(s,o-1),this.max=Math.max(s+1,o)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],n=t[t.length-1]),{min:e,max:n}}buildTicks(){const t=this.options,e=t.time,n=t.ticks,s=n.source==="labels"?this.getLabelTimestamps():this._generate();t.bounds==="ticks"&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const o=this.min,r=this.max,a=No(s,o,r);return this._unit=e.unit||(n.autoSkip?Jn(e.minUnit,this.min,this.max,this._getLabelCapacity(o)):Ac(this,a.length,e.minUnit,this.min,this.max)),this._majorUnit=!n.major.enabled||this._unit==="year"?void 0:zc(this._unit),this.initOffsets(s),t.reverse&&a.reverse(),es(this,a,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(t=>+t.value))}initOffsets(t=[]){let e=0,n=0,s,o;this.options.offset&&t.length&&(s=this.getDecimalForValue(t[0]),t.length===1?e=1-s:e=(this.getDecimalForValue(t[1])-s)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?n=o:n=(o-this.getDecimalForValue(t[t.length-2]))/2);const r=t.length<3?.5:.25;e=tt(e,0,r),n=tt(n,0,r),this._offsets={start:e,end:n,factor:1/(e+1+n)}}_generate(){const t=this._adapter,e=this.min,n=this.max,s=this.options,o=s.time,r=o.unit||Jn(o.minUnit,e,n,this._getLabelCapacity(e)),a=C(s.ticks.stepSize,1),l=r==="week"?o.isoWeekday:!1,c=le(l)||l===!0,h={};let d=e,u,f;if(c&&(d=+t.startOf(d,"isoWeek",l)),d=+t.startOf(d,c?"day":r),t.diff(n,e,r)>1e5*a)throw new Error(e+" and "+n+" are too far apart with stepSize of "+a+" "+r);const p=s.ticks.source==="data"&&this.getDataTimestamps();for(u=d,f=0;u<n;u=+t.add(u,a,r),f++)ts(h,u,p);return(u===n||s.bounds==="ticks"||f===1)&&ts(h,u,p),Object.keys(h).sort(Zn).map(g=>+g)}getLabelForValue(t){const e=this._adapter,n=this.options.time;return n.tooltipFormat?e.format(t,n.tooltipFormat):e.format(t,n.displayFormats.datetime)}format(t,e){const s=this.options.time.displayFormats,o=this._unit,r=e||s[o];return this._adapter.format(t,r)}_tickFormatFunction(t,e,n,s){const o=this.options,r=o.ticks.callback;if(r)return P(r,[t,e,n],this);const a=o.time.displayFormats,l=this._unit,c=this._majorUnit,h=l&&a[l],d=c&&a[c],u=n[e],f=c&&d&&u&&u.major;return this._adapter.format(t,s||(f?d:h))}generateTickLabels(t){let e,n,s;for(e=0,n=t.length;e<n;++e)s=t[e],s.label=this._tickFormatFunction(s.value,e,t)}getDecimalForValue(t){return t===null?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,n=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+n)*e.factor)}getValueForPixel(t){const e=this._offsets,n=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+n*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,n=this.ctx.measureText(t).width,s=gt(this.isHorizontal()?e.maxRotation:e.minRotation),o=Math.cos(s),r=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:n*o+a*r,h:n*r+a*o}}_getLabelCapacity(t){const e=this.options.time,n=e.displayFormats,s=n[e.unit]||n.millisecond,o=this._tickFormatFunction(t,0,es(this,[t],this._majorUnit),s),r=this._getLabelSize(o),a=Math.floor(this.isHorizontal()?this.width/r.w:this.height/r.h)-1;return a>0?a:1}getDataTimestamps(){let t=this._cache.data||[],e,n;if(t.length)return t;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(e=0,n=s.length;e<n;++e)t=t.concat(s[e].controller.getAllParsedValues(this));return this._cache.data=this.normalize(t)}getLabelTimestamps(){const t=this._cache.labels||[];let e,n;if(t.length)return t;const s=this.getLabels();for(e=0,n=s.length;e<n;++e)t.push(Qn(this,s[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return xs(t.sort(Zn))}}S(We,"id","time"),S(We,"defaults",{bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}});function Ce(i,t,e){let n=0,s=i.length-1,o,r,a,l;e?(t>=i[n].pos&&t<=i[s].pos&&({lo:n,hi:s}=Ct(i,"pos",t)),{pos:o,time:a}=i[n],{pos:r,time:l}=i[s]):(t>=i[n].time&&t<=i[s].time&&({lo:n,hi:s}=Ct(i,"time",t)),{time:o,pos:a}=i[n],{time:r,pos:l}=i[s]);const c=r-o;return c?a+(l-a)*(t-o)/c:a}class is extends We{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Ce(e,this.min),this._tableRange=Ce(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:n}=this,s=[],o=[];let r,a,l,c,h;for(r=0,a=t.length;r<a;++r)c=t[r],c>=e&&c<=n&&s.push(c);if(s.length<2)return[{time:e,pos:0},{time:n,pos:1}];for(r=0,a=s.length;r<a;++r)h=s[r+1],l=s[r-1],c=s[r],Math.round((h+l)/2)!==c&&o.push({time:c,pos:r/(a-1)});return o}_generate(){const t=this.min,e=this.max;let n=super.getDataTimestamps();return(!n.includes(t)||!n.length)&&n.splice(0,0,t),(!n.includes(e)||n.length===1)&&n.push(e),n.sort((s,o)=>s-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),n=this.getLabelTimestamps();return e.length&&n.length?t=this.normalize(e.concat(n)):t=e.length?e:n,t=this._cache.all=t,t}getDecimalForValue(t){return(Ce(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,n=this.getDecimalForPixel(t)/e.factor-e.end;return Ce(this._table,n*this._tableRange+this._minPos,!0)}}S(is,"id","timeseries"),S(is,"defaults",We.defaults);const no={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},Rc={ariaLabel:{type:String},ariaDescribedby:{type:String}},Fc={type:{type:String,required:!0},destroyDelay:{type:Number,default:0},...no,...Rc},Ec=yo[0]==="2"?(i,t)=>Object.assign(i,{attrs:t}):(i,t)=>Object.assign(i,t);function Rt(i){return fs(i)?li(i):i}function Bc(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:i;return fs(t)?new Proxy(i,{}):i}function Hc(i,t){const e=i.options;e&&t&&Object.assign(e,t)}function so(i,t){i.labels=t}function oo(i,t,e){const n=[];i.datasets=t.map(s=>{const o=i.datasets.find(r=>r[e]===s[e]);return!o||!s.data||n.includes(o)?{...s}:(n.push(o),Object.assign(o,s),o)})}function Wc(i,t){const e={labels:[],datasets:[]};return so(e,i.labels),oo(e,i.datasets,t),e}function zh(i,t){return i.getElementsAtEventForMode(t,"nearest",{intersect:!0},!1)}const Nc=ds({props:Fc,setup(i,t){let{expose:e,slots:n}=t;const s=vo(null),o=us(null);e({chart:o});const r=()=>{if(!s.value)return;const{type:c,data:h,options:d,plugins:u,datasetIdKey:f}=i,p=Wc(h,f),g=Bc(p,h);o.value=new Ii(s.value,{type:c,data:g,options:{...d},plugins:u})},a=()=>{const c=li(o.value);c&&(i.destroyDelay>0?setTimeout(()=>{c.destroy(),o.value=null},i.destroyDelay):(c.destroy(),o.value=null))},l=c=>{c.update(i.updateMode)};return wo(r),Mo(a),ko([()=>i.options,()=>i.data],(c,h)=>{let[d,u]=c,[f,p]=h;const g=li(o.value);if(!g)return;let m=!1;if(d){const b=Rt(d),x=Rt(f);b&&b!==x&&(Hc(g,b),m=!0)}if(u){const b=Rt(u.labels),x=Rt(p.labels),y=Rt(u.datasets),v=Rt(p.datasets);b!==x&&(so(g.config.data,b),m=!0),y&&y!==v&&(oo(g.config.data,y,i.datasetIdKey),m=!0)}m&&So(()=>{l(g)})},{deep:!0}),()=>ai("canvas",{role:"img",ariaLabel:i.ariaLabel,ariaDescribedby:i.ariaDescribedby,ref:s},[ai("p",{},[n.default?n.default():""])])}});function Vc(i,t){return Ii.register(t),ds({props:no,setup(e,n){let{expose:s}=n;const o=us(null),r=a=>{o.value=a==null?void 0:a.chart};return s({chart:o}),()=>ai(Nc,Ec({ref:r},{type:i,...e}))}})}const Ih=Vc("line",Te);/*!
+ * chartjs-adapter-luxon v1.3.1
+ * https://www.chartjs.org
+ * (c) 2023 chartjs-adapter-luxon Contributors
+ * Released under the MIT license
+ */const jc={datetime:ct.DATETIME_MED_WITH_SECONDS,millisecond:"h:mm:ss.SSS a",second:ct.TIME_WITH_SECONDS,minute:ct.TIME_SIMPLE,hour:{hour:"numeric"},day:{day:"numeric",month:"short"},week:"DD",month:{month:"short",year:"numeric"},quarter:"'Q'q - yyyy",year:{year:"numeric"}};Hs._date.override({_id:"luxon",_create:function(i){return ct.fromMillis(i,this.options)},init(i){this.options.locale||(this.options.locale=i.locale)},formats:function(){return jc},parse:function(i,t){const e=this.options,n=typeof i;return i===null||n==="undefined"?null:(n==="number"?i=this._create(i):n==="string"?typeof t=="string"?i=ct.fromFormat(i,t,e):i=ct.fromISO(i,e):i instanceof Date?i=ct.fromJSDate(i,e):n==="object"&&!(i instanceof ct)&&(i=ct.fromObject(i,e)),i.isValid?i.valueOf():null)},format:function(i,t){const e=this._create(i);return typeof t=="string"?e.toFormat(t):e.toLocaleString(t)},add:function(i,t,e){const n={};return n[e]=t,this._create(i).plus(n).valueOf()},diff:function(i,t,e){return this._create(i).diff(this._create(t)).as(e).valueOf()},startOf:function(i,t,e){if(t==="isoWeek"){e=Math.trunc(Math.min(Math.max(0,e),6));const n=this._create(i);return n.minus({days:(n.weekday-e+7)%7}).startOf("day").valueOf()}return t?this._create(i).startOf(t).valueOf():i},endOf:function(i,t){return this._create(i).endOf(t).valueOf()}});/*!
+* chartjs-plugin-zoom v2.0.1
+* undefined
+ * (c) 2016-2023 chartjs-plugin-zoom Contributors
+ * Released under the MIT License
+ */const ue=i=>i&&i.enabled&&i.modifierKey,ro=(i,t)=>i&&t[i+"Key"],Fi=(i,t)=>i&&!t[i+"Key"];function _t(i,t,e){return i===void 0?!0:typeof i=="string"?i.indexOf(t)!==-1:typeof i=="function"?i({chart:e}).indexOf(t)!==-1:!1}function ri(i,t){return typeof i=="function"&&(i=i({chart:t})),typeof i=="string"?{x:i.indexOf("x")!==-1,y:i.indexOf("y")!==-1}:{x:!1,y:!1}}function $c(i,t){let e;return function(){return clearTimeout(e),e=setTimeout(i,t),t}}function Uc({x:i,y:t},e){const n=e.scales,s=Object.keys(n);for(let o=0;o<s.length;o++){const r=n[s[o]];if(t>=r.top&&t<=r.bottom&&i>=r.left&&i<=r.right)return r}return null}function ao(i,t,e){const{mode:n="xy",scaleMode:s,overScaleMode:o}=i||{},r=Uc(t,e),a=ri(n,e),l=ri(s,e);if(o){const h=ri(o,e);for(const d of["x","y"])h[d]&&(l[d]=a[d],a[d]=!1)}if(r&&l[r.axis])return[r];const c=[];return O(e.scales,function(h){a[h.axis]&&c.push(h)}),c}const xi=new WeakMap;function H(i){let t=xi.get(i);return t||(t={originalScaleLimits:{},updatedScaleLimits:{},handlers:{},panDelta:{}},xi.set(i,t)),t}function Yc(i){xi.delete(i)}function lo(i,t,e){const n=i.max-i.min,s=n*(t-1),o=i.isHorizontal()?e.x:e.y,r=Math.max(0,Math.min(1,(i.getValueForPixel(o)-i.min)/n||0)),a=1-r;return{min:s*r,max:s*a}}function ns(i,t,e,n,s){let o=e[n];if(o==="original"){const r=i.originalScaleLimits[t.id][n];o=C(r.options,r.scale)}return C(o,s)}function Kc(i,t,e){const n=i.getValueForPixel(t),s=i.getValueForPixel(e);return{min:Math.min(n,s),max:Math.max(n,s)}}function jt(i,{min:t,max:e},n,s=!1){const o=H(i.chart),{id:r,axis:a,options:l}=i,c=n&&(n[r]||n[a])||{},{minRange:h=0}=c,d=ns(o,i,c,"min",-1/0),u=ns(o,i,c,"max",1/0),f=s?Math.max(e-t,h):i.max-i.min,p=(f-e+t)/2;return t-=p,e+=p,t<d?(t=d,e=Math.min(d+f,u)):e>u&&(e=u,t=Math.max(u-f,d)),l.min=t,l.max=e,o.updatedScaleLimits[i.id]={min:t,max:e},i.parse(t)!==i.min||i.parse(e)!==i.max}function Xc(i,t,e,n){const s=lo(i,t,e),o={min:i.min+s.min,max:i.max-s.max};return jt(i,o,n,!0)}function qc(i,t,e,n){jt(i,Kc(i,t,e),n,!0)}const ss=i=>i===0||isNaN(i)?0:i<0?Math.min(Math.round(i),-1):Math.max(Math.round(i),1);function Gc(i){const e=i.getLabels().length-1;i.min>0&&(i.min-=1),i.max<e&&(i.max+=1)}function Zc(i,t,e,n){const s=lo(i,t,e);i.min===i.max&&t<1&&Gc(i);const o={min:i.min+ss(s.min),max:i.max-ss(s.max)};return jt(i,o,n,!0)}function Qc(i){return i.isHorizontal()?i.width:i.height}function Jc(i,t,e){const s=i.getLabels().length-1;let{min:o,max:r}=i;const a=Math.max(r-o,1),l=Math.round(Qc(i)/Math.max(a,10)),c=Math.round(Math.abs(t/l));let h;return t<-l?(r=Math.min(r+c,s),o=a===1?r:r-a,h=r===s):t>l&&(o=Math.max(0,o-c),r=a===1?o:o+a,h=o===0),jt(i,{min:o,max:r},e)||h}const th={second:500,minute:30*1e3,hour:30*60*1e3,day:12*60*60*1e3,week:3.5*24*60*60*1e3,month:15*24*60*60*1e3,quarter:60*24*60*60*1e3,year:182*24*60*60*1e3};function co(i,t,e,n=!1){const{min:s,max:o,options:r}=i,a=r.time&&r.time.round,l=th[a]||0,c=i.getValueForPixel(i.getPixelForValue(s+l)-t),h=i.getValueForPixel(i.getPixelForValue(o+l)-t),{min:d=-1/0,max:u=1/0}=n&&e&&e[i.axis]||{};return isNaN(c)||isNaN(h)||c<d||h>u?!0:jt(i,{min:c,max:h},e,n)}function os(i,t,e){return co(i,t,e,!0)}const _i={category:Zc,default:Xc},yi={default:qc},vi={category:Jc,default:co,logarithmic:os,timeseries:os};function eh(i,t,e){const{id:n,options:{min:s,max:o}}=i;if(!t[n]||!e[n])return!0;const r=e[n];return r.min!==s||r.max!==o}function rs(i,t){O(i,(e,n)=>{t[n]||delete i[n]})}function $t(i,t){const{scales:e}=i,{originalScaleLimits:n,updatedScaleLimits:s}=t;return O(e,function(o){eh(o,n,s)&&(n[o.id]={min:{scale:o.min,options:o.options.min},max:{scale:o.max,options:o.options.max}})}),rs(n,e),rs(s,e),n}function as(i,t,e,n){const s=_i[i.type]||_i.default;P(s,[i,t,e,n])}function ls(i,t,e,n,s){const o=yi[i.type]||yi.default;P(o,[i,t,e,n,s])}function ih(i){const t=i.chartArea;return{x:(t.left+t.right)/2,y:(t.top+t.bottom)/2}}function Ei(i,t,e="none"){const{x:n=1,y:s=1,focalPoint:o=ih(i)}=typeof t=="number"?{x:t,y:t}:t,r=H(i),{options:{limits:a,zoom:l}}=r;$t(i,r);const c=n!==1,h=s!==1,d=ao(l,o,i);O(d||i.scales,function(u){u.isHorizontal()&&c?as(u,n,o,a):!u.isHorizontal()&&h&&as(u,s,o,a)}),i.update(e),P(l.onZoom,[{chart:i}])}function ho(i,t,e,n="none"){const s=H(i),{options:{limits:o,zoom:r}}=s,{mode:a="xy"}=r;$t(i,s);const l=_t(a,"x",i),c=_t(a,"y",i);O(i.scales,function(h){h.isHorizontal()&&l?ls(h,t.x,e.x,o):!h.isHorizontal()&&c&&ls(h,t.y,e.y,o)}),i.update(n),P(r.onZoom,[{chart:i}])}function nh(i,t,e,n="none"){$t(i,H(i));const s=i.scales[t];jt(s,e,void 0,!0),i.update(n)}function sh(i,t="default"){const e=H(i),n=$t(i,e);O(i.scales,function(s){const o=s.options;n[s.id]?(o.min=n[s.id].min.options,o.max=n[s.id].max.options):(delete o.min,delete o.max)}),i.update(t),P(e.options.zoom.onZoomComplete,[{chart:i}])}function oh(i,t){const e=i.originalScaleLimits[t];if(!e)return;const{min:n,max:s}=e;return C(s.options,s.scale)-C(n.options,n.scale)}function rh(i){const t=H(i);let e=1,n=1;return O(i.scales,function(s){const o=oh(t,s.id);if(o){const r=Math.round(o/(s.max-s.min)*100)/100;e=Math.min(e,r),n=Math.max(n,r)}}),e<1?e:n}function cs(i,t,e,n){const{panDelta:s}=n,o=s[i.id]||0;et(o)===et(t)&&(t+=o);const r=vi[i.type]||vi.default;P(r,[i,t,e])?s[i.id]=0:s[i.id]=t}function uo(i,t,e,n="none"){const{x:s=0,y:o=0}=typeof t=="number"?{x:t,y:t}:t,r=H(i),{options:{pan:a,limits:l}}=r,{onPan:c}=a||{};$t(i,r);const h=s!==0,d=o!==0;O(e||i.scales,function(u){u.isHorizontal()&&h?cs(u,s,l,r):!u.isHorizontal()&&d&&cs(u,o,l,r)}),i.update(n),P(c,[{chart:i}])}function fo(i){const t=H(i);$t(i,t);const e={};for(const n of Object.keys(i.scales)){const{min:s,max:o}=t.originalScaleLimits[n]||{min:{},max:{}};e[n]={min:s.scale,max:o.scale}}return e}function ah(i){const t=fo(i);for(const e of Object.keys(i.scales)){const{min:n,max:s}=t[e];if(n!==void 0&&i.scales[e].min!==n||s!==void 0&&i.scales[e].max!==s)return!0}return!1}function Y(i,t){const{handlers:e}=H(i),n=e[t];n&&n.target&&(n.target.removeEventListener(t,n),delete e[t])}function oe(i,t,e,n){const{handlers:s,options:o}=H(i),r=s[e];r&&r.target===t||(Y(i,e),s[e]=a=>n(i,a,o),s[e].target=t,t.addEventListener(e,s[e]))}function lh(i,t){const e=H(i);e.dragStart&&(e.dragging=!0,e.dragEnd=t,i.update("none"))}function ch(i,t){const e=H(i);!e.dragStart||t.key!=="Escape"||(Y(i,"keydown"),e.dragging=!1,e.dragStart=e.dragEnd=null,i.update("none"))}function go(i,t,e){const{onZoomStart:n,onZoomRejected:s}=e;if(n){const o=ot(t,i);if(P(n,[{chart:i,event:t,point:o}])===!1)return P(s,[{chart:i,event:t}]),!1}}function hh(i,t){const e=H(i),{pan:n,zoom:s={}}=e.options;if(t.button!==0||ro(ue(n),t)||Fi(ue(s.drag),t))return P(s.onZoomRejected,[{chart:i,event:t}]);go(i,t,s)!==!1&&(e.dragStart=t,oe(i,i.canvas,"mousemove",lh),oe(i,window.document,"keydown",ch))}function po(i,t,e,n){const s=_t(t,"x",i),o=_t(t,"y",i);let{top:r,left:a,right:l,bottom:c,width:h,height:d}=i.chartArea;const u=ot(e,i),f=ot(n,i);s&&(a=Math.min(u.x,f.x),l=Math.max(u.x,f.x)),o&&(r=Math.min(u.y,f.y),c=Math.max(u.y,f.y));const p=l-a,g=c-r;return{left:a,top:r,right:l,bottom:c,width:p,height:g,zoomX:s&&p?1+(h-p)/h:1,zoomY:o&&g?1+(d-g)/d:1}}function dh(i,t){const e=H(i);if(!e.dragStart)return;Y(i,"mousemove");const{mode:n,onZoomComplete:s,drag:{threshold:o=0}}=e.options.zoom,r=po(i,n,e.dragStart,t),a=_t(n,"x",i)?r.width:0,l=_t(n,"y",i)?r.height:0,c=Math.sqrt(a*a+l*l);if(e.dragStart=e.dragEnd=null,c<=o){e.dragging=!1,i.update("none");return}ho(i,{x:r.left,y:r.top},{x:r.right,y:r.bottom},"zoom"),setTimeout(()=>e.dragging=!1,500),P(s,[{chart:i}])}function uh(i,t,e){if(Fi(ue(e.wheel),t)){P(e.onZoomRejected,[{chart:i,event:t}]);return}if(go(i,t,e)!==!1&&(t.cancelable&&t.preventDefault(),t.deltaY!==void 0))return!0}function fh(i,t){const{handlers:{onZoomComplete:e},options:{zoom:n}}=H(i);if(!uh(i,t,n))return;const s=t.target.getBoundingClientRect(),o=1+(t.deltaY>=0?-n.wheel.speed:n.wheel.speed),r={x:o,y:o,focalPoint:{x:t.clientX-s.left,y:t.clientY-s.top}};Ei(i,r),e&&e()}function gh(i,t,e,n){e&&(H(i).handlers[t]=$c(()=>P(e,[{chart:i}]),n))}function ph(i,t){const e=i.canvas,{wheel:n,drag:s,onZoomComplete:o}=t.zoom;n.enabled?(oe(i,e,"wheel",fh),gh(i,"onZoomComplete",o,250)):Y(i,"wheel"),s.enabled?(oe(i,e,"mousedown",hh),oe(i,e.ownerDocument,"mouseup",dh)):(Y(i,"mousedown"),Y(i,"mousemove"),Y(i,"mouseup"),Y(i,"keydown"))}function mh(i){Y(i,"mousedown"),Y(i,"mousemove"),Y(i,"mouseup"),Y(i,"wheel"),Y(i,"click"),Y(i,"keydown")}function bh(i,t){return function(e,n){const{pan:s,zoom:o={}}=t.options;if(!s||!s.enabled)return!1;const r=n&&n.srcEvent;return r&&!t.panning&&n.pointerType==="mouse"&&(Fi(ue(s),r)||ro(ue(o.drag),r))?(P(s.onPanRejected,[{chart:i,event:n}]),!1):!0}}function xh(i,t){const e=Math.abs(i.clientX-t.clientX),n=Math.abs(i.clientY-t.clientY),s=e/n;let o,r;return s>.3&&s<1.7?o=r=!0:e>n?o=!0:r=!0,{x:o,y:r}}function mo(i,t,e){if(t.scale){const{center:n,pointers:s}=e,o=1/t.scale*e.scale,r=e.target.getBoundingClientRect(),a=xh(s[0],s[1]),l=t.options.zoom.mode,c={x:a.x&&_t(l,"x",i)?o:1,y:a.y&&_t(l,"y",i)?o:1,focalPoint:{x:n.x-r.left,y:n.y-r.top}};Ei(i,c),t.scale=e.scale}}function _h(i,t){t.options.zoom.pinch.enabled&&(t.scale=1)}function yh(i,t,e){t.scale&&(mo(i,t,e),t.scale=null,P(t.options.zoom.onZoomComplete,[{chart:i}]))}function bo(i,t,e){const n=t.delta;n&&(t.panning=!0,uo(i,{x:e.deltaX-n.x,y:e.deltaY-n.y},t.panScales),t.delta={x:e.deltaX,y:e.deltaY})}function vh(i,t,e){const{enabled:n,onPanStart:s,onPanRejected:o}=t.options.pan;if(!n)return;const r=e.target.getBoundingClientRect(),a={x:e.center.x-r.left,y:e.center.y-r.top};if(P(s,[{chart:i,event:e,point:a}])===!1)return P(o,[{chart:i,event:e}]);t.panScales=ao(t.options.pan,a,i),t.delta={x:0,y:0},clearTimeout(t.panEndTimeout),bo(i,t,e)}function wh(i,t){t.delta=null,t.panning&&(t.panEndTimeout=setTimeout(()=>t.panning=!1,500),P(t.options.pan.onPanComplete,[{chart:i}]))}const wi=new WeakMap;function Mh(i,t){const e=H(i),n=i.canvas,{pan:s,zoom:o}=t,r=new te.Manager(n);o&&o.pinch.enabled&&(r.add(new te.Pinch),r.on("pinchstart",()=>_h(i,e)),r.on("pinch",a=>mo(i,e,a)),r.on("pinchend",a=>yh(i,e,a))),s&&s.enabled&&(r.add(new te.Pan({threshold:s.threshold,enable:bh(i,e)})),r.on("panstart",a=>vh(i,e,a)),r.on("panmove",a=>bo(i,e,a)),r.on("panend",()=>wh(i,e))),wi.set(i,r)}function kh(i){const t=wi.get(i);t&&(t.remove("pinchstart"),t.remove("pinch"),t.remove("pinchend"),t.remove("panstart"),t.remove("pan"),t.remove("panend"),t.destroy(),wi.delete(i))}var Sh="2.0.1";function Oe(i,t,e){const n=e.zoom.drag,{dragStart:s,dragEnd:o}=H(i);if(n.drawTime!==t||!o)return;const{left:r,top:a,width:l,height:c}=po(i,e.zoom.mode,s,o),h=i.ctx;h.save(),h.beginPath(),h.fillStyle=n.backgroundColor||"rgba(225,225,225,0.3)",h.fillRect(r,a,l,c),n.borderWidth>0&&(h.lineWidth=n.borderWidth,h.strokeStyle=n.borderColor||"rgba(225,225,225)",h.strokeRect(r,a,l,c)),h.restore()}var Rh={id:"zoom",version:Sh,defaults:{pan:{enabled:!1,mode:"xy",threshold:10,modifierKey:null},zoom:{wheel:{enabled:!1,speed:.1,modifierKey:null},drag:{enabled:!1,drawTime:"beforeDatasetsDraw",modifierKey:null},pinch:{enabled:!1},mode:"xy"}},start:function(i,t,e){const n=H(i);n.options=e,Object.prototype.hasOwnProperty.call(e.zoom,"enabled")&&console.warn("The option `zoom.enabled` is no longer supported. Please use `zoom.wheel.enabled`, `zoom.drag.enabled`, or `zoom.pinch.enabled`."),(Object.prototype.hasOwnProperty.call(e.zoom,"overScaleMode")||Object.prototype.hasOwnProperty.call(e.pan,"overScaleMode"))&&console.warn("The option `overScaleMode` is deprecated. Please use `scaleMode` instead (and update `mode` as desired)."),te&&Mh(i,e),i.pan=(s,o,r)=>uo(i,s,o,r),i.zoom=(s,o)=>Ei(i,s,o),i.zoomRect=(s,o,r)=>ho(i,s,o,r),i.zoomScale=(s,o,r)=>nh(i,s,o,r),i.resetZoom=s=>sh(i,s),i.getZoomLevel=()=>rh(i),i.getInitialScaleBounds=()=>fo(i),i.isZoomedOrPanned=()=>ah(i)},beforeEvent(i){const t=H(i);if(t.panning||t.dragging)return!1},beforeUpdate:function(i,t,e){const n=H(i);n.options=e,ph(i,e)},beforeDatasetsDraw(i,t,e){Oe(i,"beforeDatasetsDraw",e)},afterDatasetsDraw(i,t,e){Oe(i,"afterDatasetsDraw",e)},beforeDraw(i,t,e){Oe(i,"beforeDraw",e)},afterDraw(i,t,e){Oe(i,"afterDraw",e)},stop:function(i){mh(i),te&&kh(i),Yc(i)},panFunctions:vi,zoomFunctions:_i,zoomRectFunctions:yi};export{Ze as B,Ii as C,Te as L,ei as P,We as T,Lh as a,Ot as b,Yn as c,Rh as d,Ih as e,si as f,zh as g,Th as i,Ah as p};
diff --git a/web/settings/assets/vendor-f2b8aa6f.js b/web/settings/assets/vendor-f2b8aa6f.js
deleted file mode 100644
index 1f5453b27a..0000000000
--- a/web/settings/assets/vendor-f2b8aa6f.js
+++ /dev/null
@@ -1,135 +0,0 @@
-import{r as EE}from"./vendor-sortablejs-2f1828d0.js";var Ze=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Fo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function gv(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function i(){return this instanceof i?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})}),r}var ke={},mh={};mh.byteLength=TE;mh.toByteArray=IE;mh.fromByteArray=BE;var en=[],hi=[],RE=typeof Uint8Array<"u"?Uint8Array:Array,Dc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Fa=0,AE=Dc.length;Fa<AE;++Fa)en[Fa]=Dc[Fa],hi[Dc.charCodeAt(Fa)]=Fa;hi["-".charCodeAt(0)]=62;hi["_".charCodeAt(0)]=63;function y2(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function TE(e){var t=y2(e),r=t[0],i=t[1];return(r+i)*3/4-i}function OE(e,t,r){return(t+r)*3/4-r}function IE(e){var t,r=y2(e),i=r[0],a=r[1],n=new RE(OE(e,i,a)),l=0,c=a>0?i-4:i,d;for(d=0;d<c;d+=4)t=hi[e.charCodeAt(d)]<<18|hi[e.charCodeAt(d+1)]<<12|hi[e.charCodeAt(d+2)]<<6|hi[e.charCodeAt(d+3)],n[l++]=t>>16&255,n[l++]=t>>8&255,n[l++]=t&255;return a===2&&(t=hi[e.charCodeAt(d)]<<2|hi[e.charCodeAt(d+1)]>>4,n[l++]=t&255),a===1&&(t=hi[e.charCodeAt(d)]<<10|hi[e.charCodeAt(d+1)]<<4|hi[e.charCodeAt(d+2)]>>2,n[l++]=t>>8&255,n[l++]=t&255),n}function PE(e){return en[e>>18&63]+en[e>>12&63]+en[e>>6&63]+en[e&63]}function CE(e,t,r){for(var i,a=[],n=t;n<r;n+=3)i=(e[n]<<16&16711680)+(e[n+1]<<8&65280)+(e[n+2]&255),a.push(PE(i));return a.join("")}function BE(e){for(var t,r=e.length,i=r%3,a=[],n=16383,l=0,c=r-i;l<c;l+=n)a.push(CE(e,l,l+n>c?c:l+n));return i===1?(t=e[r-1],a.push(en[t>>2]+en[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],a.push(en[t>>10]+en[t>>4&63]+en[t<<2&63]+"=")),a.join("")}var mv={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */mv.read=function(e,t,r,i,a){var n,l,c=a*8-i-1,d=(1<<c)-1,m=d>>1,M=-7,S=r?a-1:0,R=r?-1:1,I=e[t+S];for(S+=R,n=I&(1<<-M)-1,I>>=-M,M+=c;M>0;n=n*256+e[t+S],S+=R,M-=8);for(l=n&(1<<-M)-1,n>>=-M,M+=i;M>0;l=l*256+e[t+S],S+=R,M-=8);if(n===0)n=1-m;else{if(n===d)return l?NaN:(I?-1:1)*(1/0);l=l+Math.pow(2,i),n=n-m}return(I?-1:1)*l*Math.pow(2,n-i)};mv.write=function(e,t,r,i,a,n){var l,c,d,m=n*8-a-1,M=(1<<m)-1,S=M>>1,R=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=i?0:n-1,O=i?1:-1,B=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,l=M):(l=Math.floor(Math.log(t)/Math.LN2),t*(d=Math.pow(2,-l))<1&&(l--,d*=2),l+S>=1?t+=R/d:t+=R*Math.pow(2,1-S),t*d>=2&&(l++,d/=2),l+S>=M?(c=0,l=M):l+S>=1?(c=(t*d-1)*Math.pow(2,a),l=l+S):(c=t*Math.pow(2,S-1)*Math.pow(2,a),l=0));a>=8;e[r+I]=c&255,I+=O,c/=256,a-=8);for(l=l<<a|c,m+=a;m>0;e[r+I]=l&255,I+=O,l/=256,m-=8);e[r+I-O]|=B*128};/*!
- * The buffer module from node.js, for the browser.
- *
- * @author   Feross Aboukhadijeh <https://feross.org>
- * @license  MIT
- */(function(e){var t=mh,r=mv,i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=c,e.SlowBuffer=C,e.INSPECT_MAX_BYTES=50;var a=2147483647;e.kMaxLength=a,c.TYPED_ARRAY_SUPPORT=n(),!c.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function n(){try{var F=new Uint8Array(1),N={foo:function(){return 42}};return Object.setPrototypeOf(N,Uint8Array.prototype),Object.setPrototypeOf(F,N),F.foo()===42}catch{return!1}}Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}});function l(F){if(F>a)throw new RangeError('The value "'+F+'" is invalid for option "size"');var N=new Uint8Array(F);return Object.setPrototypeOf(N,c.prototype),N}function c(F,N,H){if(typeof F=="number"){if(typeof N=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(F)}return d(F,N,H)}c.poolSize=8192;function d(F,N,H){if(typeof F=="string")return R(F,N);if(ArrayBuffer.isView(F))return O(F);if(F==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof F);if(D(F,ArrayBuffer)||F&&D(F.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(D(F,SharedArrayBuffer)||F&&D(F.buffer,SharedArrayBuffer)))return B(F,N,H);if(typeof F=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var z=F.valueOf&&F.valueOf();if(z!=null&&z!==F)return c.from(z,N,H);var fe=L(F);if(fe)return fe;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof F[Symbol.toPrimitive]=="function")return c.from(F[Symbol.toPrimitive]("string"),N,H);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof F)}c.from=function(F,N,H){return d(F,N,H)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array);function m(F){if(typeof F!="number")throw new TypeError('"size" argument must be of type number');if(F<0)throw new RangeError('The value "'+F+'" is invalid for option "size"')}function M(F,N,H){return m(F),F<=0?l(F):N!==void 0?typeof H=="string"?l(F).fill(N,H):l(F).fill(N):l(F)}c.alloc=function(F,N,H){return M(F,N,H)};function S(F){return m(F),l(F<0?0:P(F)|0)}c.allocUnsafe=function(F){return S(F)},c.allocUnsafeSlow=function(F){return S(F)};function R(F,N){if((typeof N!="string"||N==="")&&(N="utf8"),!c.isEncoding(N))throw new TypeError("Unknown encoding: "+N);var H=j(F,N)|0,z=l(H),fe=z.write(F,N);return fe!==H&&(z=z.slice(0,fe)),z}function I(F){for(var N=F.length<0?0:P(F.length)|0,H=l(N),z=0;z<N;z+=1)H[z]=F[z]&255;return H}function O(F){if(D(F,Uint8Array)){var N=new Uint8Array(F);return B(N.buffer,N.byteOffset,N.byteLength)}return I(F)}function B(F,N,H){if(N<0||F.byteLength<N)throw new RangeError('"offset" is outside of buffer bounds');if(F.byteLength<N+(H||0))throw new RangeError('"length" is outside of buffer bounds');var z;return N===void 0&&H===void 0?z=new Uint8Array(F):H===void 0?z=new Uint8Array(F,N):z=new Uint8Array(F,N,H),Object.setPrototypeOf(z,c.prototype),z}function L(F){if(c.isBuffer(F)){var N=P(F.length)|0,H=l(N);return H.length===0||F.copy(H,0,0,N),H}if(F.length!==void 0)return typeof F.length!="number"||U(F.length)?l(0):I(F);if(F.type==="Buffer"&&Array.isArray(F.data))return I(F.data)}function P(F){if(F>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return F|0}function C(F){return+F!=F&&(F=0),c.alloc(+F)}c.isBuffer=function(N){return N!=null&&N._isBuffer===!0&&N!==c.prototype},c.compare=function(N,H){if(D(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),D(H,Uint8Array)&&(H=c.from(H,H.offset,H.byteLength)),!c.isBuffer(N)||!c.isBuffer(H))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(N===H)return 0;for(var z=N.length,fe=H.length,re=0,ae=Math.min(z,fe);re<ae;++re)if(N[re]!==H[re]){z=N[re],fe=H[re];break}return z<fe?-1:fe<z?1:0},c.isEncoding=function(N){switch(String(N).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},c.concat=function(N,H){if(!Array.isArray(N))throw new TypeError('"list" argument must be an Array of Buffers');if(N.length===0)return c.alloc(0);var z;if(H===void 0)for(H=0,z=0;z<N.length;++z)H+=N[z].length;var fe=c.allocUnsafe(H),re=0;for(z=0;z<N.length;++z){var ae=N[z];if(D(ae,Uint8Array))re+ae.length>fe.length?c.from(ae).copy(fe,re):Uint8Array.prototype.set.call(fe,ae,re);else if(c.isBuffer(ae))ae.copy(fe,re);else throw new TypeError('"list" argument must be an Array of Buffers');re+=ae.length}return fe};function j(F,N){if(c.isBuffer(F))return F.length;if(ArrayBuffer.isView(F)||D(F,ArrayBuffer))return F.byteLength;if(typeof F!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof F);var H=F.length,z=arguments.length>2&&arguments[2]===!0;if(!z&&H===0)return 0;for(var fe=!1;;)switch(N){case"ascii":case"latin1":case"binary":return H;case"utf8":case"utf-8":return q(F).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return H*2;case"hex":return H>>>1;case"base64":return b(F).length;default:if(fe)return z?-1:q(F).length;N=(""+N).toLowerCase(),fe=!0}}c.byteLength=j;function $(F,N,H){var z=!1;if((N===void 0||N<0)&&(N=0),N>this.length||((H===void 0||H>this.length)&&(H=this.length),H<=0)||(H>>>=0,N>>>=0,H<=N))return"";for(F||(F="utf8");;)switch(F){case"hex":return g(this,N,H);case"utf8":case"utf-8":return u(this,N,H);case"ascii":return w(this,N,H);case"latin1":case"binary":return x(this,N,H);case"base64":return f(this,N,H);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s(this,N,H);default:if(z)throw new TypeError("Unknown encoding: "+F);F=(F+"").toLowerCase(),z=!0}}c.prototype._isBuffer=!0;function K(F,N,H){var z=F[N];F[N]=F[H],F[H]=z}c.prototype.swap16=function(){var N=this.length;if(N%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var H=0;H<N;H+=2)K(this,H,H+1);return this},c.prototype.swap32=function(){var N=this.length;if(N%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var H=0;H<N;H+=4)K(this,H,H+3),K(this,H+1,H+2);return this},c.prototype.swap64=function(){var N=this.length;if(N%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var H=0;H<N;H+=8)K(this,H,H+7),K(this,H+1,H+6),K(this,H+2,H+5),K(this,H+3,H+4);return this},c.prototype.toString=function(){var N=this.length;return N===0?"":arguments.length===0?u(this,0,N):$.apply(this,arguments)},c.prototype.toLocaleString=c.prototype.toString,c.prototype.equals=function(N){if(!c.isBuffer(N))throw new TypeError("Argument must be a Buffer");return this===N?!0:c.compare(this,N)===0},c.prototype.inspect=function(){var N="",H=e.INSPECT_MAX_BYTES;return N=this.toString("hex",0,H).replace(/(.{2})/g,"$1 ").trim(),this.length>H&&(N+=" ... "),"<Buffer "+N+">"},i&&(c.prototype[i]=c.prototype.inspect),c.prototype.compare=function(N,H,z,fe,re){if(D(N,Uint8Array)&&(N=c.from(N,N.offset,N.byteLength)),!c.isBuffer(N))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof N);if(H===void 0&&(H=0),z===void 0&&(z=N?N.length:0),fe===void 0&&(fe=0),re===void 0&&(re=this.length),H<0||z>N.length||fe<0||re>this.length)throw new RangeError("out of range index");if(fe>=re&&H>=z)return 0;if(fe>=re)return-1;if(H>=z)return 1;if(H>>>=0,z>>>=0,fe>>>=0,re>>>=0,this===N)return 0;for(var ae=re-fe,be=z-H,J=Math.min(ae,be),le=this.slice(fe,re),se=N.slice(H,z),ue=0;ue<J;++ue)if(le[ue]!==se[ue]){ae=le[ue],be=se[ue];break}return ae<be?-1:be<ae?1:0};function G(F,N,H,z,fe){if(F.length===0)return-1;if(typeof H=="string"?(z=H,H=0):H>2147483647?H=2147483647:H<-2147483648&&(H=-2147483648),H=+H,U(H)&&(H=fe?0:F.length-1),H<0&&(H=F.length+H),H>=F.length){if(fe)return-1;H=F.length-1}else if(H<0)if(fe)H=0;else return-1;if(typeof N=="string"&&(N=c.from(N,z)),c.isBuffer(N))return N.length===0?-1:te(F,N,H,z,fe);if(typeof N=="number")return N=N&255,typeof Uint8Array.prototype.indexOf=="function"?fe?Uint8Array.prototype.indexOf.call(F,N,H):Uint8Array.prototype.lastIndexOf.call(F,N,H):te(F,[N],H,z,fe);throw new TypeError("val must be string, number or Buffer")}function te(F,N,H,z,fe){var re=1,ae=F.length,be=N.length;if(z!==void 0&&(z=String(z).toLowerCase(),z==="ucs2"||z==="ucs-2"||z==="utf16le"||z==="utf-16le")){if(F.length<2||N.length<2)return-1;re=2,ae/=2,be/=2,H/=2}function J(ve,ie){return re===1?ve[ie]:ve.readUInt16BE(ie*re)}var le;if(fe){var se=-1;for(le=H;le<ae;le++)if(J(F,le)===J(N,se===-1?0:le-se)){if(se===-1&&(se=le),le-se+1===be)return se*re}else se!==-1&&(le-=le-se),se=-1}else for(H+be>ae&&(H=ae-be),le=H;le>=0;le--){for(var ue=!0,de=0;de<be;de++)if(J(F,le+de)!==J(N,de)){ue=!1;break}if(ue)return le}return-1}c.prototype.includes=function(N,H,z){return this.indexOf(N,H,z)!==-1},c.prototype.indexOf=function(N,H,z){return G(this,N,H,z,!0)},c.prototype.lastIndexOf=function(N,H,z){return G(this,N,H,z,!1)};function Q(F,N,H,z){H=Number(H)||0;var fe=F.length-H;z?(z=Number(z),z>fe&&(z=fe)):z=fe;var re=N.length;z>re/2&&(z=re/2);for(var ae=0;ae<z;++ae){var be=parseInt(N.substr(ae*2,2),16);if(U(be))return ae;F[H+ae]=be}return ae}function W(F,N,H,z){return y(q(N,F.length-H),F,H,z)}function ce(F,N,H,z){return y(V(N),F,H,z)}function _(F,N,H,z){return y(b(N),F,H,z)}function o(F,N,H,z){return y(X(N,F.length-H),F,H,z)}c.prototype.write=function(N,H,z,fe){if(H===void 0)fe="utf8",z=this.length,H=0;else if(z===void 0&&typeof H=="string")fe=H,z=this.length,H=0;else if(isFinite(H))H=H>>>0,isFinite(z)?(z=z>>>0,fe===void 0&&(fe="utf8")):(fe=z,z=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var re=this.length-H;if((z===void 0||z>re)&&(z=re),N.length>0&&(z<0||H<0)||H>this.length)throw new RangeError("Attempt to write outside buffer bounds");fe||(fe="utf8");for(var ae=!1;;)switch(fe){case"hex":return Q(this,N,H,z);case"utf8":case"utf-8":return W(this,N,H,z);case"ascii":case"latin1":case"binary":return ce(this,N,H,z);case"base64":return _(this,N,H,z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o(this,N,H,z);default:if(ae)throw new TypeError("Unknown encoding: "+fe);fe=(""+fe).toLowerCase(),ae=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function f(F,N,H){return N===0&&H===F.length?t.fromByteArray(F):t.fromByteArray(F.slice(N,H))}function u(F,N,H){H=Math.min(F.length,H);for(var z=[],fe=N;fe<H;){var re=F[fe],ae=null,be=re>239?4:re>223?3:re>191?2:1;if(fe+be<=H){var J,le,se,ue;switch(be){case 1:re<128&&(ae=re);break;case 2:J=F[fe+1],(J&192)===128&&(ue=(re&31)<<6|J&63,ue>127&&(ae=ue));break;case 3:J=F[fe+1],le=F[fe+2],(J&192)===128&&(le&192)===128&&(ue=(re&15)<<12|(J&63)<<6|le&63,ue>2047&&(ue<55296||ue>57343)&&(ae=ue));break;case 4:J=F[fe+1],le=F[fe+2],se=F[fe+3],(J&192)===128&&(le&192)===128&&(se&192)===128&&(ue=(re&15)<<18|(J&63)<<12|(le&63)<<6|se&63,ue>65535&&ue<1114112&&(ae=ue))}}ae===null?(ae=65533,be=1):ae>65535&&(ae-=65536,z.push(ae>>>10&1023|55296),ae=56320|ae&1023),z.push(ae),fe+=be}return p(z)}var h=4096;function p(F){var N=F.length;if(N<=h)return String.fromCharCode.apply(String,F);for(var H="",z=0;z<N;)H+=String.fromCharCode.apply(String,F.slice(z,z+=h));return H}function w(F,N,H){var z="";H=Math.min(F.length,H);for(var fe=N;fe<H;++fe)z+=String.fromCharCode(F[fe]&127);return z}function x(F,N,H){var z="";H=Math.min(F.length,H);for(var fe=N;fe<H;++fe)z+=String.fromCharCode(F[fe]);return z}function g(F,N,H){var z=F.length;(!N||N<0)&&(N=0),(!H||H<0||H>z)&&(H=z);for(var fe="",re=N;re<H;++re)fe+=Z[F[re]];return fe}function s(F,N,H){for(var z=F.slice(N,H),fe="",re=0;re<z.length-1;re+=2)fe+=String.fromCharCode(z[re]+z[re+1]*256);return fe}c.prototype.slice=function(N,H){var z=this.length;N=~~N,H=H===void 0?z:~~H,N<0?(N+=z,N<0&&(N=0)):N>z&&(N=z),H<0?(H+=z,H<0&&(H=0)):H>z&&(H=z),H<N&&(H=N);var fe=this.subarray(N,H);return Object.setPrototypeOf(fe,c.prototype),fe};function v(F,N,H){if(F%1!==0||F<0)throw new RangeError("offset is not uint");if(F+N>H)throw new RangeError("Trying to access beyond buffer length")}c.prototype.readUintLE=c.prototype.readUIntLE=function(N,H,z){N=N>>>0,H=H>>>0,z||v(N,H,this.length);for(var fe=this[N],re=1,ae=0;++ae<H&&(re*=256);)fe+=this[N+ae]*re;return fe},c.prototype.readUintBE=c.prototype.readUIntBE=function(N,H,z){N=N>>>0,H=H>>>0,z||v(N,H,this.length);for(var fe=this[N+--H],re=1;H>0&&(re*=256);)fe+=this[N+--H]*re;return fe},c.prototype.readUint8=c.prototype.readUInt8=function(N,H){return N=N>>>0,H||v(N,1,this.length),this[N]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(N,H){return N=N>>>0,H||v(N,2,this.length),this[N]|this[N+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(N,H){return N=N>>>0,H||v(N,2,this.length),this[N]<<8|this[N+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(N,H){return N=N>>>0,H||v(N,4,this.length),(this[N]|this[N+1]<<8|this[N+2]<<16)+this[N+3]*16777216},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(N,H){return N=N>>>0,H||v(N,4,this.length),this[N]*16777216+(this[N+1]<<16|this[N+2]<<8|this[N+3])},c.prototype.readIntLE=function(N,H,z){N=N>>>0,H=H>>>0,z||v(N,H,this.length);for(var fe=this[N],re=1,ae=0;++ae<H&&(re*=256);)fe+=this[N+ae]*re;return re*=128,fe>=re&&(fe-=Math.pow(2,8*H)),fe},c.prototype.readIntBE=function(N,H,z){N=N>>>0,H=H>>>0,z||v(N,H,this.length);for(var fe=H,re=1,ae=this[N+--fe];fe>0&&(re*=256);)ae+=this[N+--fe]*re;return re*=128,ae>=re&&(ae-=Math.pow(2,8*H)),ae},c.prototype.readInt8=function(N,H){return N=N>>>0,H||v(N,1,this.length),this[N]&128?(255-this[N]+1)*-1:this[N]},c.prototype.readInt16LE=function(N,H){N=N>>>0,H||v(N,2,this.length);var z=this[N]|this[N+1]<<8;return z&32768?z|4294901760:z},c.prototype.readInt16BE=function(N,H){N=N>>>0,H||v(N,2,this.length);var z=this[N+1]|this[N]<<8;return z&32768?z|4294901760:z},c.prototype.readInt32LE=function(N,H){return N=N>>>0,H||v(N,4,this.length),this[N]|this[N+1]<<8|this[N+2]<<16|this[N+3]<<24},c.prototype.readInt32BE=function(N,H){return N=N>>>0,H||v(N,4,this.length),this[N]<<24|this[N+1]<<16|this[N+2]<<8|this[N+3]},c.prototype.readFloatLE=function(N,H){return N=N>>>0,H||v(N,4,this.length),r.read(this,N,!0,23,4)},c.prototype.readFloatBE=function(N,H){return N=N>>>0,H||v(N,4,this.length),r.read(this,N,!1,23,4)},c.prototype.readDoubleLE=function(N,H){return N=N>>>0,H||v(N,8,this.length),r.read(this,N,!0,52,8)},c.prototype.readDoubleBE=function(N,H){return N=N>>>0,H||v(N,8,this.length),r.read(this,N,!1,52,8)};function T(F,N,H,z,fe,re){if(!c.isBuffer(F))throw new TypeError('"buffer" argument must be a Buffer instance');if(N>fe||N<re)throw new RangeError('"value" argument is out of bounds');if(H+z>F.length)throw new RangeError("Index out of range")}c.prototype.writeUintLE=c.prototype.writeUIntLE=function(N,H,z,fe){if(N=+N,H=H>>>0,z=z>>>0,!fe){var re=Math.pow(2,8*z)-1;T(this,N,H,z,re,0)}var ae=1,be=0;for(this[H]=N&255;++be<z&&(ae*=256);)this[H+be]=N/ae&255;return H+z},c.prototype.writeUintBE=c.prototype.writeUIntBE=function(N,H,z,fe){if(N=+N,H=H>>>0,z=z>>>0,!fe){var re=Math.pow(2,8*z)-1;T(this,N,H,z,re,0)}var ae=z-1,be=1;for(this[H+ae]=N&255;--ae>=0&&(be*=256);)this[H+ae]=N/be&255;return H+z},c.prototype.writeUint8=c.prototype.writeUInt8=function(N,H,z){return N=+N,H=H>>>0,z||T(this,N,H,1,255,0),this[H]=N&255,H+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(N,H,z){return N=+N,H=H>>>0,z||T(this,N,H,2,65535,0),this[H]=N&255,this[H+1]=N>>>8,H+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(N,H,z){return N=+N,H=H>>>0,z||T(this,N,H,2,65535,0),this[H]=N>>>8,this[H+1]=N&255,H+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(N,H,z){return N=+N,H=H>>>0,z||T(this,N,H,4,4294967295,0),this[H+3]=N>>>24,this[H+2]=N>>>16,this[H+1]=N>>>8,this[H]=N&255,H+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(N,H,z){return N=+N,H=H>>>0,z||T(this,N,H,4,4294967295,0),this[H]=N>>>24,this[H+1]=N>>>16,this[H+2]=N>>>8,this[H+3]=N&255,H+4},c.prototype.writeIntLE=function(N,H,z,fe){if(N=+N,H=H>>>0,!fe){var re=Math.pow(2,8*z-1);T(this,N,H,z,re-1,-re)}var ae=0,be=1,J=0;for(this[H]=N&255;++ae<z&&(be*=256);)N<0&&J===0&&this[H+ae-1]!==0&&(J=1),this[H+ae]=(N/be>>0)-J&255;return H+z},c.prototype.writeIntBE=function(N,H,z,fe){if(N=+N,H=H>>>0,!fe){var re=Math.pow(2,8*z-1);T(this,N,H,z,re-1,-re)}var ae=z-1,be=1,J=0;for(this[H+ae]=N&255;--ae>=0&&(be*=256);)N<0&&J===0&&this[H+ae+1]!==0&&(J=1),this[H+ae]=(N/be>>0)-J&255;return H+z},c.prototype.writeInt8=function(N,H,z){return N=+N,H=H>>>0,z||T(this,N,H,1,127,-128),N<0&&(N=255+N+1),this[H]=N&255,H+1},c.prototype.writeInt16LE=function(N,H,z){return N=+N,H=H>>>0,z||T(this,N,H,2,32767,-32768),this[H]=N&255,this[H+1]=N>>>8,H+2},c.prototype.writeInt16BE=function(N,H,z){return N=+N,H=H>>>0,z||T(this,N,H,2,32767,-32768),this[H]=N>>>8,this[H+1]=N&255,H+2},c.prototype.writeInt32LE=function(N,H,z){return N=+N,H=H>>>0,z||T(this,N,H,4,2147483647,-2147483648),this[H]=N&255,this[H+1]=N>>>8,this[H+2]=N>>>16,this[H+3]=N>>>24,H+4},c.prototype.writeInt32BE=function(N,H,z){return N=+N,H=H>>>0,z||T(this,N,H,4,2147483647,-2147483648),N<0&&(N=4294967295+N+1),this[H]=N>>>24,this[H+1]=N>>>16,this[H+2]=N>>>8,this[H+3]=N&255,H+4};function k(F,N,H,z,fe,re){if(H+z>F.length)throw new RangeError("Index out of range");if(H<0)throw new RangeError("Index out of range")}function Y(F,N,H,z,fe){return N=+N,H=H>>>0,fe||k(F,N,H,4),r.write(F,N,H,z,23,4),H+4}c.prototype.writeFloatLE=function(N,H,z){return Y(this,N,H,!0,z)},c.prototype.writeFloatBE=function(N,H,z){return Y(this,N,H,!1,z)};function ee(F,N,H,z,fe){return N=+N,H=H>>>0,fe||k(F,N,H,8),r.write(F,N,H,z,52,8),H+8}c.prototype.writeDoubleLE=function(N,H,z){return ee(this,N,H,!0,z)},c.prototype.writeDoubleBE=function(N,H,z){return ee(this,N,H,!1,z)},c.prototype.copy=function(N,H,z,fe){if(!c.isBuffer(N))throw new TypeError("argument should be a Buffer");if(z||(z=0),!fe&&fe!==0&&(fe=this.length),H>=N.length&&(H=N.length),H||(H=0),fe>0&&fe<z&&(fe=z),fe===z||N.length===0||this.length===0)return 0;if(H<0)throw new RangeError("targetStart out of bounds");if(z<0||z>=this.length)throw new RangeError("Index out of range");if(fe<0)throw new RangeError("sourceEnd out of bounds");fe>this.length&&(fe=this.length),N.length-H<fe-z&&(fe=N.length-H+z);var re=fe-z;return this===N&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(H,z,fe):Uint8Array.prototype.set.call(N,this.subarray(z,fe),H),re},c.prototype.fill=function(N,H,z,fe){if(typeof N=="string"){if(typeof H=="string"?(fe=H,H=0,z=this.length):typeof z=="string"&&(fe=z,z=this.length),fe!==void 0&&typeof fe!="string")throw new TypeError("encoding must be a string");if(typeof fe=="string"&&!c.isEncoding(fe))throw new TypeError("Unknown encoding: "+fe);if(N.length===1){var re=N.charCodeAt(0);(fe==="utf8"&&re<128||fe==="latin1")&&(N=re)}}else typeof N=="number"?N=N&255:typeof N=="boolean"&&(N=Number(N));if(H<0||this.length<H||this.length<z)throw new RangeError("Out of range index");if(z<=H)return this;H=H>>>0,z=z===void 0?this.length:z>>>0,N||(N=0);var ae;if(typeof N=="number")for(ae=H;ae<z;++ae)this[ae]=N;else{var be=c.isBuffer(N)?N:c.from(N,fe),J=be.length;if(J===0)throw new TypeError('The value "'+N+'" is invalid for argument "value"');for(ae=0;ae<z-H;++ae)this[ae+H]=be[ae%J]}return this};var A=/[^+/0-9A-Za-z-_]/g;function E(F){if(F=F.split("=")[0],F=F.trim().replace(A,""),F.length<2)return"";for(;F.length%4!==0;)F=F+"=";return F}function q(F,N){N=N||1/0;for(var H,z=F.length,fe=null,re=[],ae=0;ae<z;++ae){if(H=F.charCodeAt(ae),H>55295&&H<57344){if(!fe){if(H>56319){(N-=3)>-1&&re.push(239,191,189);continue}else if(ae+1===z){(N-=3)>-1&&re.push(239,191,189);continue}fe=H;continue}if(H<56320){(N-=3)>-1&&re.push(239,191,189),fe=H;continue}H=(fe-55296<<10|H-56320)+65536}else fe&&(N-=3)>-1&&re.push(239,191,189);if(fe=null,H<128){if((N-=1)<0)break;re.push(H)}else if(H<2048){if((N-=2)<0)break;re.push(H>>6|192,H&63|128)}else if(H<65536){if((N-=3)<0)break;re.push(H>>12|224,H>>6&63|128,H&63|128)}else if(H<1114112){if((N-=4)<0)break;re.push(H>>18|240,H>>12&63|128,H>>6&63|128,H&63|128)}else throw new Error("Invalid code point")}return re}function V(F){for(var N=[],H=0;H<F.length;++H)N.push(F.charCodeAt(H)&255);return N}function X(F,N){for(var H,z,fe,re=[],ae=0;ae<F.length&&!((N-=2)<0);++ae)H=F.charCodeAt(ae),z=H>>8,fe=H%256,re.push(fe),re.push(z);return re}function b(F){return t.toByteArray(E(F))}function y(F,N,H,z){for(var fe=0;fe<z&&!(fe+H>=N.length||fe>=F.length);++fe)N[fe+H]=F[fe];return fe}function D(F,N){return F instanceof N||F!=null&&F.constructor!=null&&F.constructor.name!=null&&F.constructor.name===N.name}function U(F){return F!==F}var Z=function(){for(var F="0123456789abcdef",N=new Array(256),H=0;H<16;++H)for(var z=H*16,fe=0;fe<16;++fe)N[z+fe]=F[H]+F[fe];return N}()})(ke);var b2={exports:{}},tr=b2.exports={},Xi,Ji;function j0(){throw new Error("setTimeout has not been defined")}function U0(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?Xi=setTimeout:Xi=j0}catch{Xi=j0}try{typeof clearTimeout=="function"?Ji=clearTimeout:Ji=U0}catch{Ji=U0}})();function w2(e){if(Xi===setTimeout)return setTimeout(e,0);if((Xi===j0||!Xi)&&setTimeout)return Xi=setTimeout,setTimeout(e,0);try{return Xi(e,0)}catch{try{return Xi.call(null,e,0)}catch{return Xi.call(this,e,0)}}}function LE(e){if(Ji===clearTimeout)return clearTimeout(e);if((Ji===U0||!Ji)&&clearTimeout)return Ji=clearTimeout,clearTimeout(e);try{return Ji(e)}catch{try{return Ji.call(null,e)}catch{return Ji.call(this,e)}}}var Fn=[],Ja=!1,ea,fu=-1;function NE(){!Ja||!ea||(Ja=!1,ea.length?Fn=ea.concat(Fn):fu=-1,Fn.length&&_2())}function _2(){if(!Ja){var e=w2(NE);Ja=!0;for(var t=Fn.length;t;){for(ea=Fn,Fn=[];++fu<t;)ea&&ea[fu].run();fu=-1,t=Fn.length}ea=null,Ja=!1,LE(e)}}tr.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Fn.push(new M2(e,t)),Fn.length===1&&!Ja&&w2(_2)};function M2(e,t){this.fun=e,this.array=t}M2.prototype.run=function(){this.fun.apply(null,this.array)};tr.title="browser";tr.browser=!0;tr.env={};tr.argv=[];tr.version="";tr.versions={};function eo(){}tr.on=eo;tr.addListener=eo;tr.once=eo;tr.off=eo;tr.removeListener=eo;tr.removeAllListeners=eo;tr.emit=eo;tr.prependListener=eo;tr.prependOnceListener=eo;tr.listeners=function(e){return[]};tr.binding=function(e){throw new Error("process.binding is not supported")};tr.cwd=function(){return"/"};tr.chdir=function(e){throw new Error("process.chdir is not supported")};tr.umask=function(){return 0};var kE=b2.exports;const _e=Fo(kE);var $E=function(e){function t(){var i=this||self;return delete e.prototype.__magic__,i}if(typeof globalThis=="object")return globalThis;if(this)return t();e.defineProperty(e.prototype,"__magic__",{configurable:!0,get:t});var r=__magic__;return r}(Object),Em=$E;const H0=typeof Em<"u"?Em:typeof self<"u"?self:typeof window<"u"?window:{};/**
-* @vue/shared v3.4.38
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**//*! #__NO_SIDE_EFFECTS__ */function ti(e,t){const r=new Set(e.split(","));return t?i=>r.has(i.toLowerCase()):i=>r.has(i)}const Tt=Object.freeze({}),Qa=Object.freeze([]),cr=()=>{},DE=()=>!1,Fs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Pu=e=>e.startsWith("onUpdate:"),qt=Object.assign,yv=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},FE=Object.prototype.hasOwnProperty,_t=(e,t)=>FE.call(e,t),ze=Array.isArray,na=e=>js(e)==="[object Map]",Ea=e=>js(e)==="[object Set]",Rm=e=>js(e)==="[object Date]",jE=e=>js(e)==="[object RegExp]",Xe=e=>typeof e=="function",jt=e=>typeof e=="string",cn=e=>typeof e=="symbol",Rt=e=>e!==null&&typeof e=="object",yh=e=>(Rt(e)||Xe(e))&&Xe(e.then)&&Xe(e.catch),S2=Object.prototype.toString,js=e=>S2.call(e),bv=e=>js(e).slice(8,-1),x2=e=>js(e)==="[object Object]",wv=e=>jt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,es=ti(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),UE=ti("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),bh=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},HE=/-(\w)/g,dr=bh(e=>e.replace(HE,(t,r)=>r?r.toUpperCase():"")),qE=/\B([A-Z])/g,yr=bh(e=>e.replace(qE,"-$1").toLowerCase()),To=bh(e=>e.charAt(0).toUpperCase()+e.slice(1)),Bn=bh(e=>e?`on${To(e)}`:""),Dr=(e,t)=>!Object.is(e,t),bo=(e,...t)=>{for(let r=0;r<e.length;r++)e[r](...t)},cs=(e,t,r,i=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:r})},Cu=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Bu=e=>{const t=jt(e)?Number(e):NaN;return isNaN(t)?e:t};let Am;const _v=()=>Am||(Am=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof H0<"u"?H0:{}),WE="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error",KE=ti(WE);function nn(e){if(ze(e)){const t={};for(let r=0;r<e.length;r++){const i=e[r],a=jt(i)?YE(i):nn(i);if(a)for(const n in a)t[n]=a[n]}return t}else if(jt(e)||Rt(e))return e}const VE=/;(?![^(]*\))/g,zE=/:([^]+)/,GE=/\/\*[^]*?\*\//g;function YE(e){const t={};return e.replace(GE,"").split(VE).forEach(r=>{if(r){const i=r.split(zE);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function ZE(e){let t="";if(!e||jt(e))return t;for(const r in e){const i=e[r];if(jt(i)||typeof i=="number"){const a=r.startsWith("--")?r:yr(r);t+=`${a}:${i};`}}return t}function lr(e){let t="";if(jt(e))t=e;else if(ze(e))for(let r=0;r<e.length;r++){const i=lr(e[r]);i&&(t+=i+" ")}else if(Rt(e))for(const r in e)e[r]&&(t+=r+" ");return t.trim()}function XE(e){if(!e)return null;let{class:t,style:r}=e;return t&&!jt(t)&&(e.class=lr(t)),r&&(e.style=nn(r)),e}const JE="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot",QE="svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view",e8="annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics",t8=ti(JE),r8=ti(QE),i8=ti(e8),E2="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",n8=ti(E2),Tm=ti(E2+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected");function Mv(e){return!!e||e===""}const o8=ti("accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap"),a8=ti("xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan");function s8(e){if(e==null)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"}function f8(e,t){if(e.length!==t.length)return!1;let r=!0;for(let i=0;r&&i<e.length;i++)r=Oo(e[i],t[i]);return r}function Oo(e,t){if(e===t)return!0;let r=Rm(e),i=Rm(t);if(r||i)return r&&i?e.getTime()===t.getTime():!1;if(r=cn(e),i=cn(t),r||i)return e===t;if(r=ze(e),i=ze(t),r||i)return r&&i?f8(e,t):!1;if(r=Rt(e),i=Rt(t),r||i){if(!r||!i)return!1;const a=Object.keys(e).length,n=Object.keys(t).length;if(a!==n)return!1;for(const l in e){const c=e.hasOwnProperty(l),d=t.hasOwnProperty(l);if(c&&!d||!c&&d||!Oo(e[l],t[l]))return!1}}return String(e)===String(t)}function wh(e,t){return e.findIndex(r=>Oo(r,t))}const R2=e=>!!(e&&e.__v_isRef===!0),ui=e=>jt(e)?e:e==null?"":ze(e)||Rt(e)&&(e.toString===S2||!Xe(e.toString))?R2(e)?ui(e.value):JSON.stringify(e,A2,2):String(e),A2=(e,t)=>R2(t)?A2(e,t.value):na(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[i,a],n)=>(r[Fc(i,n)+" =>"]=a,r),{})}:Ea(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>Fc(r))}:cn(t)?Fc(t):Rt(t)&&!ze(t)&&!x2(t)?String(t):t,Fc=(e,t="")=>{var r;return cn(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/**
-* @vue/reactivity v3.4.38
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function dn(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let Zr;class Sv{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Zr,!t&&Zr&&(this.index=(Zr.scopes||(Zr.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Zr;try{return Zr=this,t()}finally{Zr=r}}else dn("cannot run an inactive effect scope.")}on(){Zr=this}off(){Zr=this.parent}stop(t){if(this._active){let r,i;for(r=0,i=this.effects.length;r<i;r++)this.effects[r].stop();for(r=0,i=this.cleanups.length;r<i;r++)this.cleanups[r]();if(this.scopes)for(r=0,i=this.scopes.length;r<i;r++)this.scopes[r].stop(!0);if(!this.detached&&this.parent&&!t){const a=this.parent.scopes.pop();a&&a!==this&&(this.parent.scopes[this.index]=a,a.index=this.index)}this.parent=void 0,this._active=!1}}}function T2(e){return new Sv(e)}function O2(e,t=Zr){t&&t.active&&t.effects.push(e)}function I2(){return Zr}function l8(e){Zr?Zr.cleanups.push(e):dn("onScopeDispose() is called when there is no active effect scope to be associated with.")}let oa;class ds{constructor(t,r,i,a){this.fn=t,this.trigger=r,this.scheduler=i,this.active=!0,this.deps=[],this._dirtyLevel=4,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,O2(this,a)}get dirty(){if(this._dirtyLevel===2||this._dirtyLevel===3){this._dirtyLevel=1,to();for(let t=0;t<this._depsLength;t++){const r=this.deps[t];if(r.computed&&(u8(r.computed),this._dirtyLevel>=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),ro()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=So,r=oa;try{return So=!0,oa=this,this._runnings++,Om(this),this.fn()}finally{Im(this),this._runnings--,oa=r,So=t}}stop(){this.active&&(Om(this),Im(this),this.onStop&&this.onStop(),this.active=!1)}}function u8(e){return e.value}function Om(e){e._trackId++,e._depsLength=0}function Im(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t<e.deps.length;t++)P2(e.deps[t],e);e.deps.length=e._depsLength}}function P2(e,t){const r=e.get(t);r!==void 0&&t._trackId!==r&&(e.delete(t),e.size===0&&e.cleanup())}function h8(e,t){e.effect instanceof ds&&(e=e.effect.fn);const r=new ds(e,cr,()=>{r.dirty&&r.run()});t&&(qt(r,t),t.scope&&O2(r,t.scope)),(!t||!t.lazy)&&r.run();const i=r.run.bind(r);return i.effect=r,i}function c8(e){e.effect.stop()}let So=!0,q0=0;const C2=[];function to(){C2.push(So),So=!1}function ro(){const e=C2.pop();So=e===void 0?!0:e}function xv(){q0++}function Ev(){for(q0--;!q0&&W0.length;)W0.shift()()}function B2(e,t,r){var i;if(t.get(e)!==e._trackId){t.set(e,e._trackId);const a=e.deps[e._depsLength];a!==t?(a&&P2(a,e),e.deps[e._depsLength++]=t):e._depsLength++,(i=e.onTrack)==null||i.call(e,qt({effect:e},r))}}const W0=[];function L2(e,t,r){var i;xv();for(const a of e.keys()){let n;a._dirtyLevel<t&&(n??(n=e.get(a)===a._trackId))&&(a._shouldSchedule||(a._shouldSchedule=a._dirtyLevel===0),a._dirtyLevel=t),a._shouldSchedule&&(n??(n=e.get(a)===a._trackId))&&((i=a.onTrigger)==null||i.call(a,qt({effect:a},r)),a.trigger(),(!a._runnings||a.allowRecurse)&&a._dirtyLevel!==2&&(a._shouldSchedule=!1,a.scheduler&&W0.push(a.scheduler)))}Ev()}const N2=(e,t)=>{const r=new Map;return r.cleanup=e,r.computed=t,r},Lu=new WeakMap,aa=Symbol("iterate"),K0=Symbol("Map key iterate");function Br(e,t,r){if(So&&oa){let i=Lu.get(e);i||Lu.set(e,i=new Map);let a=i.get(r);a||i.set(r,a=N2(()=>i.delete(r))),B2(oa,a,{target:e,type:t,key:r})}}function on(e,t,r,i,a,n){const l=Lu.get(e);if(!l)return;let c=[];if(t==="clear")c=[...l.values()];else if(r==="length"&&ze(e)){const d=Number(i);l.forEach((m,M)=>{(M==="length"||!cn(M)&&M>=d)&&c.push(m)})}else switch(r!==void 0&&c.push(l.get(r)),t){case"add":ze(e)?wv(r)&&c.push(l.get("length")):(c.push(l.get(aa)),na(e)&&c.push(l.get(K0)));break;case"delete":ze(e)||(c.push(l.get(aa)),na(e)&&c.push(l.get(K0)));break;case"set":na(e)&&c.push(l.get(aa));break}xv();for(const d of c)d&&L2(d,4,{target:e,type:t,key:r,newValue:i,oldValue:a,oldTarget:n});Ev()}function d8(e,t){const r=Lu.get(e);return r&&r.get(t)}const p8=ti("__proto__,__v_isRef,__isVue"),k2=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(cn)),Pm=v8();function v8(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const i=ut(this);for(let n=0,l=this.length;n<l;n++)Br(i,"get",n+"");const a=i[t](...r);return a===-1||a===!1?i[t](...r.map(ut)):a}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...r){to(),xv();const i=ut(this)[t].apply(this,r);return Ev(),ro(),i}}),e}function g8(e){cn(e)||(e=String(e));const t=ut(this);return Br(t,"has",e),t.hasOwnProperty(e)}class $2{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,i){const a=this._isReadonly,n=this._isShallow;if(r==="__v_isReactive")return!a;if(r==="__v_isReadonly")return a;if(r==="__v_isShallow")return n;if(r==="__v_raw")return i===(a?n?W2:q2:n?H2:U2).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const l=ze(t);if(!a){if(l&&_t(Pm,r))return Reflect.get(Pm,r,i);if(r==="hasOwnProperty")return g8}const c=Reflect.get(t,r,i);return(cn(r)?k2.has(r):p8(r))||(a||Br(t,"get",r),n)?c:nr(c)?l&&wv(r)?c:c.value:Rt(c)?a?Tv(c):Ra(c):c}}class D2 extends $2{constructor(t=!1){super(!1,t)}set(t,r,i,a){let n=t[r];if(!this._isShallow){const d=pn(n);if(!an(i)&&!pn(i)&&(n=ut(n),i=ut(i)),!ze(t)&&nr(n)&&!nr(i))return d?!1:(n.value=i,!0)}const l=ze(t)&&wv(r)?Number(r)<t.length:_t(t,r),c=Reflect.set(t,r,i,a);return t===ut(a)&&(l?Dr(i,n)&&on(t,"set",r,i,n):on(t,"add",r,i)),c}deleteProperty(t,r){const i=_t(t,r),a=t[r],n=Reflect.deleteProperty(t,r);return n&&i&&on(t,"delete",r,void 0,a),n}has(t,r){const i=Reflect.has(t,r);return(!cn(r)||!k2.has(r))&&Br(t,"has",r),i}ownKeys(t){return Br(t,"iterate",ze(t)?"length":aa),Reflect.ownKeys(t)}}class F2 extends $2{constructor(t=!1){super(!0,t)}set(t,r){return dn(`Set operation on key "${String(r)}" failed: target is readonly.`,t),!0}deleteProperty(t,r){return dn(`Delete operation on key "${String(r)}" failed: target is readonly.`,t),!0}}const m8=new D2,y8=new F2,b8=new D2(!0),w8=new F2(!0),Rv=e=>e,_h=e=>Reflect.getPrototypeOf(e);function Hl(e,t,r=!1,i=!1){e=e.__v_raw;const a=ut(e),n=ut(t);r||(Dr(t,n)&&Br(a,"get",t),Br(a,"get",n));const{has:l}=_h(a),c=i?Rv:r?Ov:zf;if(l.call(a,t))return c(e.get(t));if(l.call(a,n))return c(e.get(n));e!==a&&e.get(t)}function ql(e,t=!1){const r=this.__v_raw,i=ut(r),a=ut(e);return t||(Dr(e,a)&&Br(i,"has",e),Br(i,"has",a)),e===a?r.has(e):r.has(e)||r.has(a)}function Wl(e,t=!1){return e=e.__v_raw,!t&&Br(ut(e),"iterate",aa),Reflect.get(e,"size",e)}function Cm(e,t=!1){!t&&!an(e)&&!pn(e)&&(e=ut(e));const r=ut(this);return _h(r).has.call(r,e)||(r.add(e),on(r,"add",e,e)),this}function Bm(e,t,r=!1){!r&&!an(t)&&!pn(t)&&(t=ut(t));const i=ut(this),{has:a,get:n}=_h(i);let l=a.call(i,e);l?j2(i,a,e):(e=ut(e),l=a.call(i,e));const c=n.call(i,e);return i.set(e,t),l?Dr(t,c)&&on(i,"set",e,t,c):on(i,"add",e,t),this}function Lm(e){const t=ut(this),{has:r,get:i}=_h(t);let a=r.call(t,e);a?j2(t,r,e):(e=ut(e),a=r.call(t,e));const n=i?i.call(t,e):void 0,l=t.delete(e);return a&&on(t,"delete",e,void 0,n),l}function Nm(){const e=ut(this),t=e.size!==0,r=na(e)?new Map(e):new Set(e),i=e.clear();return t&&on(e,"clear",void 0,void 0,r),i}function Kl(e,t){return function(i,a){const n=this,l=n.__v_raw,c=ut(l),d=t?Rv:e?Ov:zf;return!e&&Br(c,"iterate",aa),l.forEach((m,M)=>i.call(a,d(m),d(M),n))}}function Vl(e,t,r){return function(...i){const a=this.__v_raw,n=ut(a),l=na(n),c=e==="entries"||e===Symbol.iterator&&l,d=e==="keys"&&l,m=a[e](...i),M=r?Rv:t?Ov:zf;return!t&&Br(n,"iterate",d?K0:aa),{next(){const{value:S,done:R}=m.next();return R?{value:S,done:R}:{value:c?[M(S[0]),M(S[1])]:M(S),done:R}},[Symbol.iterator](){return this}}}}function fo(e){return function(...t){{const r=t[0]?`on key "${t[0]}" `:"";dn(`${To(e)} operation ${r}failed: target is readonly.`,ut(this))}return e==="delete"?!1:e==="clear"?void 0:this}}function _8(){const e={get(n){return Hl(this,n)},get size(){return Wl(this)},has:ql,add:Cm,set:Bm,delete:Lm,clear:Nm,forEach:Kl(!1,!1)},t={get(n){return Hl(this,n,!1,!0)},get size(){return Wl(this)},has:ql,add(n){return Cm.call(this,n,!0)},set(n,l){return Bm.call(this,n,l,!0)},delete:Lm,clear:Nm,forEach:Kl(!1,!0)},r={get(n){return Hl(this,n,!0)},get size(){return Wl(this,!0)},has(n){return ql.call(this,n,!0)},add:fo("add"),set:fo("set"),delete:fo("delete"),clear:fo("clear"),forEach:Kl(!0,!1)},i={get(n){return Hl(this,n,!0,!0)},get size(){return Wl(this,!0)},has(n){return ql.call(this,n,!0)},add:fo("add"),set:fo("set"),delete:fo("delete"),clear:fo("clear"),forEach:Kl(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(n=>{e[n]=Vl(n,!1,!1),r[n]=Vl(n,!0,!1),t[n]=Vl(n,!1,!0),i[n]=Vl(n,!0,!0)}),[e,r,t,i]}const[M8,S8,x8,E8]=_8();function Mh(e,t){const r=t?e?E8:x8:e?S8:M8;return(i,a,n)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?i:Reflect.get(_t(r,a)&&a in i?r:i,a,n)}const R8={get:Mh(!1,!1)},A8={get:Mh(!1,!0)},T8={get:Mh(!0,!1)},O8={get:Mh(!0,!0)};function j2(e,t,r){const i=ut(r);if(i!==r&&t.call(e,i)){const a=bv(e);dn(`Reactive ${a} contains both the raw and reactive versions of the same object${a==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const U2=new WeakMap,H2=new WeakMap,q2=new WeakMap,W2=new WeakMap;function I8(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function P8(e){return e.__v_skip||!Object.isExtensible(e)?0:I8(bv(e))}function Ra(e){return pn(e)?e:Sh(e,!1,m8,R8,U2)}function Av(e){return Sh(e,!1,b8,A8,H2)}function Tv(e){return Sh(e,!0,y8,T8,q2)}function ji(e){return Sh(e,!0,w8,O8,W2)}function Sh(e,t,r,i,a){if(!Rt(e))return dn(`value cannot be made ${t?"readonly":"reactive"}: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=a.get(e);if(n)return n;const l=P8(e);if(l===0)return e;const c=new Proxy(e,l===2?i:r);return a.set(e,c),c}function sa(e){return pn(e)?sa(e.__v_raw):!!(e&&e.__v_isReactive)}function pn(e){return!!(e&&e.__v_isReadonly)}function an(e){return!!(e&&e.__v_isShallow)}function Vf(e){return e?!!e.__v_raw:!1}function ut(e){const t=e&&e.__v_raw;return t?ut(t):e}function K2(e){return Object.isExtensible(e)&&cs(e,"__v_skip",!0),e}const zf=e=>Rt(e)?Ra(e):e,Ov=e=>Rt(e)?Tv(e):e,C8="Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided.  Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free";class V2{constructor(t,r,i,a){this.getter=t,this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new ds(()=>t(this._value),()=>ts(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=i}get value(){const t=ut(this);return(!t._cacheable||t.effect.dirty)&&Dr(t._value,t._value=t.effect.run())&&ts(t,4),Iv(t),t.effect._dirtyLevel>=2&&(this._warnRecursive&&dn(C8,`
-
-getter: `,this.getter),ts(t,2)),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function B8(e,t,r=!1){let i,a;const n=Xe(e);n?(i=e,a=()=>{dn("Write operation failed: computed value is readonly")}):(i=e.get,a=e.set);const l=new V2(i,a,n||!a,r);return t&&!r&&(l.effect.onTrack=t.onTrack,l.effect.onTrigger=t.onTrigger),l}function Iv(e){var t;So&&oa&&(e=ut(e),B2(oa,(t=e.dep)!=null?t:e.dep=N2(()=>e.dep=void 0,e instanceof V2?e:void 0),{target:e,type:"get",key:"value"}))}function ts(e,t=4,r,i){e=ut(e);const a=e.dep;a&&L2(a,t,{target:e,type:"set",key:"value",newValue:r,oldValue:i})}function nr(e){return!!(e&&e.__v_isRef===!0)}function Ar(e){return G2(e,!1)}function z2(e){return G2(e,!0)}function G2(e,t){return nr(e)?e:new L8(e,t)}class L8{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:ut(t),this._value=r?t:zf(t)}get value(){return Iv(this),this._value}set value(t){const r=this.__v_isShallow||an(t)||pn(t);if(t=r?t:ut(t),Dr(t,this._rawValue)){const i=this._rawValue;this._rawValue=t,this._value=r?t:zf(t),ts(this,4,t,i)}}}function N8(e){ts(e,4,e.value)}function jn(e){return nr(e)?e.value:e}function k8(e){return Xe(e)?e():jn(e)}const $8={get:(e,t,r)=>jn(Reflect.get(e,t,r)),set:(e,t,r,i)=>{const a=e[t];return nr(a)&&!nr(r)?(a.value=r,!0):Reflect.set(e,t,r,i)}};function Pv(e){return sa(e)?e:new Proxy(e,$8)}class D8{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:r,set:i}=t(()=>Iv(this),()=>ts(this));this._get=r,this._set=i}get value(){return this._get()}set value(t){this._set(t)}}function Y2(e){return new D8(e)}function F8(e){Vf(e)||dn("toRefs() expects a reactive object but received a plain one.");const t=ze(e)?new Array(e.length):{};for(const r in e)t[r]=Z2(e,r);return t}class j8{constructor(t,r,i){this._object=t,this._key=r,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return d8(ut(this._object),this._key)}}class U8{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function H8(e,t,r){return nr(e)?e:Xe(e)?new U8(e):Rt(e)&&arguments.length>1?Z2(e,t,r):Ar(e)}function Z2(e,t,r){const i=e[t];return nr(i)?i:new j8(e,t,r)}const q8={GET:"get",HAS:"has",ITERATE:"iterate"},W8={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"};/**
-* @vue/runtime-core v3.4.38
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/const fa=[];function Lf(e){fa.push(e)}function Nf(){fa.pop()}let jc=!1;function He(e,...t){if(jc)return;jc=!0,to();const r=fa.length?fa[fa.length-1].component:null,i=r&&r.appContext.config.warnHandler,a=K8();if(i)sn(i,r,11,[e+t.map(n=>{var l,c;return(c=(l=n.toString)==null?void 0:l.call(n))!=null?c:JSON.stringify(n)}).join(""),r&&r.proxy,a.map(({vnode:n})=>`at <${Bh(r,n.type)}>`).join(`
-`),a]);else{const n=[`[Vue warn]: ${e}`,...t];a.length&&n.push(`
-`,...V8(a)),console.warn(...n)}ro(),jc=!1}function K8(){let e=fa[fa.length-1];if(!e)return[];const t=[];for(;e;){const r=t[0];r&&r.vnode===e?r.recurseCount++:t.push({vnode:e,recurseCount:0});const i=e.component&&e.component.parent;e=i&&i.vnode}return t}function V8(e){const t=[];return e.forEach((r,i)=>{t.push(...i===0?[]:[`
-`],...z8(r))}),t}function z8({vnode:e,recurseCount:t}){const r=t>0?`... (${t} recursive calls)`:"",i=e.component?e.component.parent==null:!1,a=` at <${Bh(e.component,e.type,i)}`,n=">"+r;return e.props?[a,...G8(e.props),n]:[a+n]}function G8(e){const t=[],r=Object.keys(e);return r.slice(0,3).forEach(i=>{t.push(...X2(i,e[i]))}),r.length>3&&t.push(" ..."),t}function X2(e,t,r){return jt(t)?(t=JSON.stringify(t),r?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?r?t:[`${e}=${t}`]:nr(t)?(t=X2(e,ut(t.value),!0),r?t:[`${e}=Ref<`,t,">"]):Xe(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=ut(t),r?t:[`${e}=`,t])}function Cv(e,t){e!==void 0&&(typeof e!="number"?He(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&He(`${t} is NaN - the duration expression might be incorrect.`))}const Y8={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",WATCH_GETTER:2,2:"WATCH_GETTER",WATCH_CALLBACK:3,3:"WATCH_CALLBACK",WATCH_CLEANUP:4,4:"WATCH_CLEANUP",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER",COMPONENT_UPDATE:15,15:"COMPONENT_UPDATE"},xh={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update"};function sn(e,t,r,i){try{return i?e(...i):e()}catch(a){jo(a,t,r)}}function Xr(e,t,r,i){if(Xe(e)){const a=sn(e,t,r,i);return a&&yh(a)&&a.catch(n=>{jo(n,t,r)}),a}if(ze(e)){const a=[];for(let n=0;n<e.length;n++)a.push(Xr(e[n],t,r,i));return a}else He(`Invalid value type passed to callWithAsyncErrorHandling(): ${typeof e}`)}function jo(e,t,r,i=!0){const a=t?t.vnode:null;if(t){let n=t.parent;const l=t.proxy,c=xh[r];for(;n;){const m=n.ec;if(m){for(let M=0;M<m.length;M++)if(m[M](e,l,c)===!1)return}n=n.parent}const d=t.appContext.config.errorHandler;if(d){to(),sn(d,null,10,[e,l,c]),ro();return}}Z8(e,r,a,i)}function Z8(e,t,r,i=!0){{const a=xh[t];if(r&&Lf(r),He(`Unhandled error${a?` during execution of ${a}`:""}`),r&&Nf(),i)throw e;console.error(e)}}let Gf=!1,V0=!1;const Or=[];let tn=0;const rs=[];let po=null,Xo=0;const J2=Promise.resolve();let Bv=null;const X8=100;function Un(e){const t=Bv||J2;return e?t.then(this?e.bind(this):e):t}function J8(e){let t=tn+1,r=Or.length;for(;t<r;){const i=t+r>>>1,a=Or[i],n=Zf(a);n<e||n===e&&a.pre?t=i+1:r=i}return t}function hl(e){(!Or.length||!Or.includes(e,Gf&&e.allowRecurse?tn+1:tn))&&(e.id==null?Or.push(e):Or.splice(J8(e.id),0,e),Q2())}function Q2(){!Gf&&!V0&&(V0=!0,Bv=J2.then(e_))}function Q8(e){const t=Or.indexOf(e);t>tn&&Or.splice(t,1)}function Yf(e){ze(e)?rs.push(...e):(!po||!po.includes(e,e.allowRecurse?Xo+1:Xo))&&rs.push(e),Q2()}function km(e,t,r=Gf?tn+1:0){for(t=t||new Map;r<Or.length;r++){const i=Or[r];if(i&&i.pre){if(e&&i.id!==e.uid||Lv(t,i))continue;Or.splice(r,1),r--,i()}}}function Nu(e){if(rs.length){const t=[...new Set(rs)].sort((r,i)=>Zf(r)-Zf(i));if(rs.length=0,po){po.push(...t);return}for(po=t,e=e||new Map,Xo=0;Xo<po.length;Xo++){const r=po[Xo];Lv(e,r)||r.active!==!1&&r()}po=null,Xo=0}}const Zf=e=>e.id==null?1/0:e.id,e5=(e,t)=>{const r=Zf(e)-Zf(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function e_(e){V0=!1,Gf=!0,e=e||new Map,Or.sort(e5);const t=r=>Lv(e,r);try{for(tn=0;tn<Or.length;tn++){const r=Or[tn];if(r&&r.active!==!1){if(t(r))continue;sn(r,r.i,r.i?15:14)}}}finally{tn=0,Or.length=0,Nu(e),Gf=!1,Bv=null,(Or.length||rs.length)&&e_(e)}}function Lv(e,t){if(!e.has(t))e.set(t,1);else{const r=e.get(t);if(r>X8){const i=t.i,a=i&&el(i.type);return jo(`Maximum recursive updates exceeded${a?` in component <${a}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}else e.set(t,r+1)}}let xo=!1;const lu=new Map;_v().__VUE_HMR_RUNTIME__={createRecord:Uc(t_),rerender:Uc(i5),reload:Uc(n5)};const ga=new Map;function t5(e){const t=e.type.__hmrId;let r=ga.get(t);r||(t_(t,e.type),r=ga.get(t)),r.instances.add(e)}function r5(e){ga.get(e.type.__hmrId).instances.delete(e)}function t_(e,t){return ga.has(e)?!1:(ga.set(e,{initialDef:ku(t),instances:new Set}),!0)}function ku(e){return aM(e)?e.__vccOpts:e}function i5(e,t){const r=ga.get(e);r&&(r.initialDef.render=t,[...r.instances].forEach(i=>{t&&(i.render=t,ku(i.type).render=t),i.renderCache=[],xo=!0,i.effect.dirty=!0,i.update(),xo=!1}))}function n5(e,t){const r=ga.get(e);if(!r)return;t=ku(t),$m(r.initialDef,t);const i=[...r.instances];for(let a=0;a<i.length;a++){const n=i[a],l=ku(n.type);let c=lu.get(l);c||(l!==r.initialDef&&$m(l,t),lu.set(l,c=new Set)),c.add(n),n.appContext.propsCache.delete(n.type),n.appContext.emitsCache.delete(n.type),n.appContext.optionsCache.delete(n.type),n.ceReload?(c.add(n),n.ceReload(t.styles),c.delete(n)):n.parent?(n.parent.effect.dirty=!0,hl(()=>{n.parent.update(),c.delete(n)})):n.appContext.reload?n.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}Yf(()=>{lu.clear()})}function $m(e,t){qt(e,t);for(const r in e)r!=="__file"&&!(r in t)&&delete e[r]}function Uc(e){return(t,r)=>{try{return e(t,r)}catch(i){console.error(i),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let $i,Af=[],z0=!1;function cl(e,...t){$i?$i.emit(e,...t):z0||Af.push({event:e,args:t})}function Nv(e,t){var r,i;$i=e,$i?($i.enabled=!0,Af.forEach(({event:a,args:n})=>$i.emit(a,...n)),Af=[]):typeof window<"u"&&window.HTMLElement&&!((i=(r=window.navigator)==null?void 0:r.userAgent)!=null&&i.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(n=>{Nv(n,t)}),setTimeout(()=>{$i||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,z0=!0,Af=[])},3e3)):(z0=!0,Af=[])}function o5(e,t){cl("app:init",e,t,{Fragment:Ct,Text:qn,Comment:Xt,Static:Eo})}function a5(e){cl("app:unmount",e)}const G0=kv("component:added"),r_=kv("component:updated"),s5=kv("component:removed"),f5=e=>{$i&&typeof $i.cleanupBuffer=="function"&&!$i.cleanupBuffer(e)&&s5(e)};/*! #__NO_SIDE_EFFECTS__ */function kv(e){return t=>{cl(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const l5=i_("perf:start"),u5=i_("perf:end");function i_(e){return(t,r,i)=>{cl(e,t.appContext.app,t.uid,t,r,i)}}function h5(e,t,r){cl("component:emit",e.appContext.app,e,t,r)}let Jt=null,Eh=null;function Xf(e){const t=Jt;return Jt=e,Eh=e&&e.type.__scopeId||null,t}function n_(e){Eh=e}function o_(){Eh=null}const c5=e=>$v;function $v(e,t=Jt,r){if(!t||e._n)return e;const i=(...a)=>{i._d&&op(-1);const n=Xf(t);let l;try{l=e(...a)}finally{Xf(n),i._d&&op(1)}return r_(t),l};return i._n=!0,i._c=!0,i._d=!0,i}function a_(e){UE(e)&&He("Do not use built-in directive ids as custom directive id: "+e)}function uu(e,t){if(Jt===null)return He("withDirectives can only be used inside render functions."),e;const r=vl(Jt),i=e.dirs||(e.dirs=[]);for(let a=0;a<t.length;a++){let[n,l,c,d=Tt]=t[a];n&&(Xe(n)&&(n={mounted:n,updated:n}),n.deep&&_o(l),i.push({dir:n,instance:r,value:l,oldValue:void 0,arg:c,modifiers:d}))}return e}function Qi(e,t,r,i){const a=e.dirs,n=t&&t.dirs;for(let l=0;l<a.length;l++){const c=a[l];n&&(c.oldValue=n[l].value);let d=c.dir[i];d&&(to(),Xr(d,r,8,[e.el,c,e,t]),ro())}}const vo=Symbol("_leaveCb"),zl=Symbol("_enterCb");function Dv(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return qs(()=>{e.isMounted=!0}),Oh(()=>{e.isUnmounting=!0}),e}const ai=[Function,Array],Fv={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ai,onEnter:ai,onAfterEnter:ai,onEnterCancelled:ai,onBeforeLeave:ai,onLeave:ai,onAfterLeave:ai,onLeaveCancelled:ai,onBeforeAppear:ai,onAppear:ai,onAfterAppear:ai,onAppearCancelled:ai},s_=e=>{const t=e.subTree;return t.component?s_(t.component):t},d5={name:"BaseTransition",props:Fv,setup(e,{slots:t}){const r=_i(),i=Dv();return()=>{const a=t.default&&Rh(t.default(),!0);if(!a||!a.length)return;let n=a[0];if(a.length>1){let R=!1;for(const I of a)if(I.type!==Xt){if(R){He("<transition> can only be used on a single element or component. Use <transition-group> for lists.");break}n=I,R=!0}}const l=ut(e),{mode:c}=l;if(c&&c!=="in-out"&&c!=="out-in"&&c!=="default"&&He(`invalid <transition> mode: ${c}`),i.isLeaving)return Hc(n);const d=Dm(n);if(!d)return Hc(n);let m=ps(d,l,i,r,R=>m=R);Io(d,m);const M=r.subTree,S=M&&Dm(M);if(S&&S.type!==Xt&&!Di(d,S)&&s_(r).type!==Xt){const R=ps(S,l,i,r);if(Io(S,R),c==="out-in"&&d.type!==Xt)return i.isLeaving=!0,R.afterLeave=()=>{i.isLeaving=!1,r.update.active!==!1&&(r.effect.dirty=!0,r.update())},Hc(n);c==="in-out"&&d.type!==Xt&&(R.delayLeave=(I,O,B)=>{const L=l_(i,S);L[String(S.key)]=S,I[vo]=()=>{O(),I[vo]=void 0,delete m.delayedLeave},m.delayedLeave=B})}return n}}},f_=d5;function l_(e,t){const{leavingVNodes:r}=e;let i=r.get(t.type);return i||(i=Object.create(null),r.set(t.type,i)),i}function ps(e,t,r,i,a){const{appear:n,mode:l,persisted:c=!1,onBeforeEnter:d,onEnter:m,onAfterEnter:M,onEnterCancelled:S,onBeforeLeave:R,onLeave:I,onAfterLeave:O,onLeaveCancelled:B,onBeforeAppear:L,onAppear:P,onAfterAppear:C,onAppearCancelled:j}=t,$=String(e.key),K=l_(r,e),G=(W,ce)=>{W&&Xr(W,i,9,ce)},te=(W,ce)=>{const _=ce[1];G(W,ce),ze(W)?W.every(o=>o.length<=1)&&_():W.length<=1&&_()},Q={mode:l,persisted:c,beforeEnter(W){let ce=d;if(!r.isMounted)if(n)ce=L||d;else return;W[vo]&&W[vo](!0);const _=K[$];_&&Di(e,_)&&_.el[vo]&&_.el[vo](),G(ce,[W])},enter(W){let ce=m,_=M,o=S;if(!r.isMounted)if(n)ce=P||m,_=C||M,o=j||S;else return;let f=!1;const u=W[zl]=h=>{f||(f=!0,h?G(o,[W]):G(_,[W]),Q.delayedLeave&&Q.delayedLeave(),W[zl]=void 0)};ce?te(ce,[W,u]):u()},leave(W,ce){const _=String(e.key);if(W[zl]&&W[zl](!0),r.isUnmounting)return ce();G(R,[W]);let o=!1;const f=W[vo]=u=>{o||(o=!0,ce(),u?G(B,[W]):G(O,[W]),W[vo]=void 0,K[_]===e&&delete K[_])};K[_]=e,I?te(I,[W,f]):f()},clone(W){const ce=ps(W,t,r,i,a);return a&&a(ce),ce}};return Q}function Hc(e){if(Hs(e))return e=gi(e),e.children=null,e}function Dm(e){if(!Hs(e))return e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:r}=e;if(r){if(t&16)return r[0];if(t&32&&Xe(r.default))return r.default()}}function Io(e,t){e.shapeFlag&6&&e.component?Io(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Rh(e,t=!1,r){let i=[],a=0;for(let n=0;n<e.length;n++){let l=e[n];const c=r==null?l.key:String(r)+String(l.key!=null?l.key:n);l.type===Ct?(l.patchFlag&128&&a++,i=i.concat(Rh(l.children,t,c))):(t||l.type!==Xt)&&i.push(c!=null?gi(l,{key:c}):l)}if(a>1)for(let n=0;n<i.length;n++)i[n].patchFlag=-2;return i}/*! #__NO_SIDE_EFFECTS__ */function Us(e,t){return Xe(e)?(()=>qt({name:e.name},t,{setup:e}))():e}const la=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function p5(e){Xe(e)&&(e={loader:e});const{loader:t,loadingComponent:r,errorComponent:i,delay:a=200,timeout:n,suspensible:l=!0,onError:c}=e;let d=null,m,M=0;const S=()=>(M++,d=null,R()),R=()=>{let I;return d||(I=d=t().catch(O=>{if(O=O instanceof Error?O:new Error(String(O)),c)return new Promise((B,L)=>{c(O,()=>B(S()),()=>L(O),M+1)});throw O}).then(O=>{if(I!==d&&d)return d;if(O||He("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),O&&(O.__esModule||O[Symbol.toStringTag]==="Module")&&(O=O.default),O&&!Rt(O)&&!Xe(O))throw new Error(`Invalid async component load result: ${O}`);return m=O,O}))};return Us({name:"AsyncComponentWrapper",__asyncLoader:R,get __asyncResolved(){return m},setup(){const I=er;if(m)return()=>qc(m,I);const O=C=>{d=null,jo(C,I,13,!i)};if(l&&I.suspense||pl)return R().then(C=>()=>qc(C,I)).catch(C=>(O(C),()=>i?Zt(i,{error:C}):null));const B=Ar(!1),L=Ar(),P=Ar(!!a);return a&&setTimeout(()=>{P.value=!1},a),n!=null&&setTimeout(()=>{if(!B.value&&!L.value){const C=new Error(`Async component timed out after ${n}ms.`);O(C),L.value=C}},n),R().then(()=>{B.value=!0,I.parent&&Hs(I.parent.vnode)&&(I.parent.effect.dirty=!0,hl(I.parent.update))}).catch(C=>{O(C),L.value=C}),()=>{if(B.value&&m)return qc(m,I);if(L.value&&i)return Zt(i,{error:L.value});if(r&&!P.value)return Zt(r)}}})}function qc(e,t){const{ref:r,props:i,children:a,ce:n}=t.vnode,l=Zt(e,i,a);return l.ref=r,l.ce=n,delete t.vnode.ce,l}const Hs=e=>e.type.__isKeepAlive,v5={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const r=_i(),i=r.ctx;if(!i.renderer)return()=>{const C=t.default&&t.default();return C&&C.length===1?C[0]:C};const a=new Map,n=new Set;let l=null;r.__v_cache=a;const c=r.suspense,{renderer:{p:d,m,um:M,o:{createElement:S}}}=i,R=S("div");i.activate=(C,j,$,K,G)=>{const te=C.component;m(C,j,$,0,c),d(te.vnode,C,j,$,te,c,K,C.slotScopeIds,G),ur(()=>{te.isDeactivated=!1,te.a&&bo(te.a);const Q=C.props&&C.props.onVnodeMounted;Q&&Wr(Q,te.parent,C)},c),G0(te)},i.deactivate=C=>{const j=C.component;Hu(j.m),Hu(j.a),m(C,R,null,1,c),ur(()=>{j.da&&bo(j.da);const $=C.props&&C.props.onVnodeUnmounted;$&&Wr($,j.parent,C),j.isDeactivated=!0},c),G0(j)};function I(C){Wc(C),M(C,r,c,!0)}function O(C){a.forEach((j,$)=>{const K=el(j.type);K&&(!C||!C(K))&&B($)})}function B(C){const j=a.get(C);j&&(!l||!Di(j,l))?I(j):l&&Wc(l),a.delete(C),n.delete(C)}Tr(()=>[e.include,e.exclude],([C,j])=>{C&&O($=>Tf(C,$)),j&&O($=>!Tf(j,$))},{flush:"post",deep:!0});let L=null;const P=()=>{L!=null&&(ip(r.subTree.type)?ur(()=>{a.set(L,Gl(r.subTree))},r.subTree.suspense):a.set(L,Gl(r.subTree)))};return qs(P),Th(P),Oh(()=>{a.forEach(C=>{const{subTree:j,suspense:$}=r,K=Gl(j);if(C.type===K.type&&C.key===K.key){Wc(K);const G=K.component.da;G&&ur(G,$);return}I(C)})}),()=>{if(L=null,!t.default)return null;const C=t.default(),j=C[0];if(C.length>1)return He("KeepAlive should contain exactly one component child."),l=null,C;if(!Kn(j)||!(j.shapeFlag&4)&&!(j.shapeFlag&128))return l=null,j;let $=Gl(j);if($.type===Xt)return l=null,$;const K=$.type,G=el(la($)?$.type.__asyncResolved||{}:K),{include:te,exclude:Q,max:W}=e;if(te&&(!G||!Tf(te,G))||Q&&G&&Tf(Q,G))return l=$,j;const ce=$.key==null?K:$.key,_=a.get(ce);return $.el&&($=gi($),j.shapeFlag&128&&(j.ssContent=$)),L=ce,_?($.el=_.el,$.component=_.component,$.transition&&Io($,$.transition),$.shapeFlag|=512,n.delete(ce),n.add(ce)):(n.add(ce),W&&n.size>parseInt(W,10)&&B(n.values().next().value)),$.shapeFlag|=256,l=$,ip(j.type)?j:$}}},g5=v5;function Tf(e,t){return ze(e)?e.some(r=>Tf(r,t)):jt(e)?e.split(",").includes(t):jE(e)?e.test(t):!1}function u_(e,t){c_(e,"a",t)}function h_(e,t){c_(e,"da",t)}function c_(e,t,r=er){const i=e.__wdc||(e.__wdc=()=>{let a=r;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Ah(t,i,r),r){let a=r.parent;for(;a&&a.parent;)Hs(a.parent.vnode)&&m5(i,t,r,a),a=a.parent}}function m5(e,t,r,i){const a=Ah(t,e,i,!0);Ih(()=>{yv(i[t],a)},r)}function Wc(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Gl(e){return e.shapeFlag&128?e.ssContent:e}function Ah(e,t,r=er,i=!1){if(r){const a=r[e]||(r[e]=[]),n=t.__weh||(t.__weh=(...l)=>{to();const c=ya(r),d=Xr(t,r,e,l);return c(),ro(),d});return i?a.unshift(n):a.push(n),n}else{const a=Bn(xh[e].replace(/ hook$/,""));He(`${a} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`)}}const io=e=>(t,r=er)=>{(!pl||e==="sp")&&Ah(e,(...i)=>t(...i),r)},jv=io("bm"),qs=io("m"),Uv=io("bu"),Th=io("u"),Oh=io("bum"),Ih=io("um"),d_=io("sp"),p_=io("rtg"),v_=io("rtc");function g_(e,t=er){Ah("ec",e,t)}const $u="components",y5="directives";function b5(e,t){return qv($u,e,!0,t)||e}const Hv=Symbol.for("v-ndc");function w5(e){return jt(e)?qv($u,e,!1)||e:e||Hv}function _5(e){return qv(y5,e)}function qv(e,t,r=!0,i=!1){const a=Jt||er;if(a){const n=a.type;if(e===$u){const c=el(n,!1);if(c&&(c===t||c===dr(t)||c===To(dr(t))))return n}const l=Fm(a[e]||n[e],t)||Fm(a.appContext[e],t);if(!l&&i)return n;if(r&&!l){const c=e===$u?`
-If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";He(`Failed to resolve ${e.slice(0,-1)}: ${t}${c}`)}return l}else He(`resolve${To(e.slice(0,-1))} can only be used in render() or setup().`)}function Fm(e,t){return e&&(e[t]||e[dr(t)]||e[To(dr(t))])}function Li(e,t,r,i){let a;const n=r&&r[i];if(ze(e)||jt(e)){a=new Array(e.length);for(let l=0,c=e.length;l<c;l++)a[l]=t(e[l],l,void 0,n&&n[l])}else if(typeof e=="number"){Number.isInteger(e)||He(`The v-for range expect an integer value but got ${e}.`),a=new Array(e);for(let l=0;l<e;l++)a[l]=t(l+1,l,void 0,n&&n[l])}else if(Rt(e))if(e[Symbol.iterator])a=Array.from(e,(l,c)=>t(l,c,void 0,n&&n[c]));else{const l=Object.keys(e);a=new Array(l.length);for(let c=0,d=l.length;c<d;c++){const m=l[c];a[c]=t(e[m],m,c,n&&n[c])}}else a=[];return r&&(r[i]=a),a}function M5(e,t){for(let r=0;r<t.length;r++){const i=t[r];if(ze(i))for(let a=0;a<i.length;a++)e[i[a].name]=i[a].fn;else i&&(e[i.name]=i.key?(...a)=>{const n=i.fn(...a);return n&&(n.key=i.key),n}:i.fn)}return e}function Y0(e,t,r={},i,a){if(Jt.isCE||Jt.parent&&la(Jt.parent)&&Jt.parent.isCE)return t!=="default"&&(r.name=t),Zt("slot",r,i&&i());let n=e[t];n&&n.length>1&&(He("SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template."),n=()=>[]),n&&n._c&&(n._d=!1),tt();const l=n&&Wv(n(r)),c=Yv(Ct,{key:(r.key||l&&l.key||`_${t}`)+(!l&&i?"_fb":"")},l||(i?i():[]),l&&e._===1?64:-2);return!a&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),n&&n._c&&(n._d=!0),c}function Wv(e){return e.some(t=>Kn(t)?!(t.type===Xt||t.type===Ct&&!Wv(t.children)):!0)?e:null}function S5(e,t){const r={};if(!Rt(e))return He("v-on with no argument expects an object value."),r;for(const i in e)r[t&&/[A-Z]/.test(i)?`on:${i}`:Bn(i)]=e[i];return r}const Z0=e=>e?rM(e)?vl(e):Z0(e.parent):null,ua=qt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>ji(e.props),$attrs:e=>ji(e.attrs),$slots:e=>ji(e.slots),$refs:e=>ji(e.refs),$parent:e=>Z0(e.parent),$root:e=>Z0(e.root),$emit:e=>e.emit,$options:e=>Vv(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,hl(e.update)}),$nextTick:e=>e.n||(e.n=Un.bind(e.proxy)),$watch:e=>_R.bind(e)}),Kv=e=>e==="_"||e==="$",Kc=(e,t)=>e!==Tt&&!e.__isScriptSetup&&_t(e,t),kf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:r,setupState:i,data:a,props:n,accessCache:l,type:c,appContext:d}=e;if(t==="__isVue")return!0;let m;if(t[0]!=="$"){const I=l[t];if(I!==void 0)switch(I){case 1:return i[t];case 2:return a[t];case 4:return r[t];case 3:return n[t]}else{if(Kc(i,t))return l[t]=1,i[t];if(a!==Tt&&_t(a,t))return l[t]=2,a[t];if((m=e.propsOptions[0])&&_t(m,t))return l[t]=3,n[t];if(r!==Tt&&_t(r,t))return l[t]=4,r[t];X0&&(l[t]=0)}}const M=ua[t];let S,R;if(M)return t==="$attrs"?(Br(e.attrs,"get",""),qu()):t==="$slots"&&Br(e,"get",t),M(e);if((S=c.__cssModules)&&(S=S[t]))return S;if(r!==Tt&&_t(r,t))return l[t]=4,r[t];if(R=d.config.globalProperties,_t(R,t))return R[t];Jt&&(!jt(t)||t.indexOf("__v")!==0)&&(a!==Tt&&Kv(t[0])&&_t(a,t)?He(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===Jt&&He(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,r){const{data:i,setupState:a,ctx:n}=e;return Kc(a,t)?(a[t]=r,!0):a.__isScriptSetup&&_t(a,t)?(He(`Cannot mutate <script setup> binding "${t}" from Options API.`),!1):i!==Tt&&_t(i,t)?(i[t]=r,!0):_t(e.props,t)?(He(`Attempting to mutate prop "${t}". Props are readonly.`),!1):t[0]==="$"&&t.slice(1)in e?(He(`Attempting to mutate public property "${t}". Properties starting with $ are reserved and readonly.`),!1):(t in e.appContext.config.globalProperties?Object.defineProperty(n,t,{enumerable:!0,configurable:!0,value:r}):n[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:i,appContext:a,propsOptions:n}},l){let c;return!!r[l]||e!==Tt&&_t(e,l)||Kc(t,l)||(c=n[0])&&_t(c,l)||_t(i,l)||_t(ua,l)||_t(a.config.globalProperties,l)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:_t(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};kf.ownKeys=e=>(He("Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead."),Reflect.ownKeys(e));const x5=qt({},kf,{get(e,t){if(t!==Symbol.unscopables)return kf.get(e,t,e)},has(e,t){const r=t[0]!=="_"&&!KE(t);return!r&&kf.has(e,t)&&He(`Property ${JSON.stringify(t)} should not start with _ which is a reserved prefix for Vue internals.`),r}});function E5(e){const t={};return Object.defineProperty(t,"_",{configurable:!0,enumerable:!1,get:()=>e}),Object.keys(ua).forEach(r=>{Object.defineProperty(t,r,{configurable:!0,enumerable:!1,get:()=>ua[r](e),set:cr})}),t}function R5(e){const{ctx:t,propsOptions:[r]}=e;r&&Object.keys(r).forEach(i=>{Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>e.props[i],set:cr})})}function A5(e){const{ctx:t,setupState:r}=e;Object.keys(ut(r)).forEach(i=>{if(!r.__isScriptSetup){if(Kv(i[0])){He(`setup() return property ${JSON.stringify(i)} should not start with "$" or "_" which are reserved prefixes for Vue internals.`);return}Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>r[i],set:cr})}})}const Aa=e=>He(`${e}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`);function T5(){return Aa("defineProps"),null}function O5(){return Aa("defineEmits"),null}function I5(e){Aa("defineExpose")}function P5(e){Aa("defineOptions")}function C5(){return Aa("defineSlots"),null}function B5(){Aa("defineModel")}function L5(e,t){return Aa("withDefaults"),null}function N5(){return m_().slots}function k5(){return m_().attrs}function m_(){const e=_i();return e||He("useContext() called without active instance."),e.setupContext||(e.setupContext=oM(e))}function Jf(e){return ze(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}function $5(e,t){const r=Jf(e);for(const i in t){if(i.startsWith("__skip"))continue;let a=r[i];a?ze(a)||Xe(a)?a=r[i]={type:a,default:t[i]}:a.default=t[i]:a===null?a=r[i]={default:t[i]}:He(`props default key "${i}" has no corresponding declaration.`),a&&t[`__skip_${i}`]&&(a.skipFactory=!0)}return r}function D5(e,t){return!e||!t?e||t:ze(e)&&ze(t)?e.concat(t):qt({},Jf(e),Jf(t))}function F5(e,t){const r={};for(const i in e)t.includes(i)||Object.defineProperty(r,i,{enumerable:!0,get:()=>e[i]});return r}function j5(e){const t=_i();t||He("withAsyncContext called without active current instance. This is likely a bug.");let r=e();return fp(),yh(r)&&(r=r.catch(i=>{throw ya(t),i})),[r,()=>ya(t)]}function U5(){const e=Object.create(null);return(t,r)=>{e[r]?He(`${t} property "${r}" is already defined in ${e[r]}.`):e[r]=t}}let X0=!0;function H5(e){const t=Vv(e),r=e.proxy,i=e.ctx;X0=!1,t.beforeCreate&&jm(t.beforeCreate,e,"bc");const{data:a,computed:n,methods:l,watch:c,provide:d,inject:m,created:M,beforeMount:S,mounted:R,beforeUpdate:I,updated:O,activated:B,deactivated:L,beforeDestroy:P,beforeUnmount:C,destroyed:j,unmounted:$,render:K,renderTracked:G,renderTriggered:te,errorCaptured:Q,serverPrefetch:W,expose:ce,inheritAttrs:_,components:o,directives:f,filters:u}=t,h=U5();{const[w]=e.propsOptions;if(w)for(const x in w)h("Props",x)}if(m&&q5(m,i,h),l)for(const w in l){const x=l[w];Xe(x)?(Object.defineProperty(i,w,{value:x.bind(r),configurable:!0,enumerable:!0,writable:!0}),h("Methods",w)):He(`Method "${w}" has type "${typeof x}" in the component definition. Did you reference the function correctly?`)}if(a){Xe(a)||He("The data option must be a function. Plain object usage is no longer supported.");const w=a.call(r,r);if(yh(w)&&He("data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>."),!Rt(w))He("data() should return an object.");else{e.data=Ra(w);for(const x in w)h("Data",x),Kv(x[0])||Object.defineProperty(i,x,{configurable:!0,enumerable:!0,get:()=>w[x],set:cr})}}if(X0=!0,n)for(const w in n){const x=n[w],g=Xe(x)?x.bind(r,r):Xe(x.get)?x.get.bind(r,r):cr;g===cr&&He(`Computed property "${w}" has no getter.`);const s=!Xe(x)&&Xe(x.set)?x.set.bind(r):()=>{He(`Write operation failed: computed property "${w}" is readonly.`)},v=ir({get:g,set:s});Object.defineProperty(i,w,{enumerable:!0,configurable:!0,get:()=>v.value,set:T=>v.value=T}),h("Computed",w)}if(c)for(const w in c)y_(c[w],i,r,w);if(d){const w=Xe(d)?d.call(r):d;Reflect.ownKeys(w).forEach(x=>{$f(x,w[x])})}M&&jm(M,e,"c");function p(w,x){ze(x)?x.forEach(g=>w(g.bind(r))):x&&w(x.bind(r))}if(p(jv,S),p(qs,R),p(Uv,I),p(Th,O),p(u_,B),p(h_,L),p(g_,Q),p(v_,G),p(p_,te),p(Oh,C),p(Ih,$),p(d_,W),ze(ce))if(ce.length){const w=e.exposed||(e.exposed={});ce.forEach(x=>{Object.defineProperty(w,x,{get:()=>r[x],set:g=>r[x]=g})})}else e.exposed||(e.exposed={});K&&e.render===cr&&(e.render=K),_!=null&&(e.inheritAttrs=_),o&&(e.components=o),f&&(e.directives=f)}function q5(e,t,r=cr){ze(e)&&(e=J0(e));for(const i in e){const a=e[i];let n;Rt(a)?"default"in a?n=fn(a.from||i,a.default,!0):n=fn(a.from||i):n=fn(a),nr(n)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>n.value,set:l=>n.value=l}):t[i]=n,r("Inject",i)}}function jm(e,t,r){Xr(ze(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,r)}function y_(e,t,r,i){const a=i.includes(".")?q_(r,i):()=>r[i];if(jt(e)){const n=t[e];Xe(n)?Tr(a,n):He(`Invalid watch handler specified by key "${e}"`,n)}else if(Xe(e))Tr(a,e.bind(r));else if(Rt(e))if(ze(e))e.forEach(n=>y_(n,t,r,i));else{const n=Xe(e.handler)?e.handler.bind(r):t[e.handler];Xe(n)?Tr(a,n,e):He(`Invalid watch handler specified by key "${e.handler}"`,n)}else He(`Invalid watch option: "${i}"`,e)}function Vv(e){const t=e.type,{mixins:r,extends:i}=t,{mixins:a,optionsCache:n,config:{optionMergeStrategies:l}}=e.appContext,c=n.get(t);let d;return c?d=c:!a.length&&!r&&!i?d=t:(d={},a.length&&a.forEach(m=>Du(d,m,l,!0)),Du(d,t,l)),Rt(t)&&n.set(t,d),d}function Du(e,t,r,i=!1){const{mixins:a,extends:n}=t;n&&Du(e,n,r,!0),a&&a.forEach(l=>Du(e,l,r,!0));for(const l in t)if(i&&l==="expose")He('"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.');else{const c=W5[l]||r&&r[l];e[l]=c?c(e[l],t[l]):t[l]}return e}const W5={data:Um,props:Hm,emits:Hm,methods:Of,computed:Of,beforeCreate:$r,created:$r,beforeMount:$r,mounted:$r,beforeUpdate:$r,updated:$r,beforeDestroy:$r,beforeUnmount:$r,destroyed:$r,unmounted:$r,activated:$r,deactivated:$r,errorCaptured:$r,serverPrefetch:$r,components:Of,directives:Of,watch:V5,provide:Um,inject:K5};function Um(e,t){return t?e?function(){return qt(Xe(e)?e.call(this,this):e,Xe(t)?t.call(this,this):t)}:t:e}function K5(e,t){return Of(J0(e),J0(t))}function J0(e){if(ze(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function $r(e,t){return e?[...new Set([].concat(e,t))]:t}function Of(e,t){return e?qt(Object.create(null),e,t):t}function Hm(e,t){return e?ze(e)&&ze(t)?[...new Set([...e,...t])]:qt(Object.create(null),Jf(e),Jf(t??{})):t}function V5(e,t){if(!e)return t;if(!t)return e;const r=qt(Object.create(null),e);for(const i in t)r[i]=$r(e[i],t[i]);return r}function b_(){return{app:null,config:{isNativeTag:DE,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let z5=0;function G5(e,t){return function(i,a=null){Xe(i)||(i=qt({},i)),a!=null&&!Rt(a)&&(He("root props passed to app.mount() must be an object."),a=null);const n=b_(),l=new WeakSet;let c=!1;const d=n.app={_uid:z5++,_component:i,_props:a,_container:null,_context:n,_instance:null,version:cp,get config(){return n.config},set config(m){He("app.config cannot be replaced. Modify individual options instead.")},use(m,...M){return l.has(m)?He("Plugin has already been applied to target app."):m&&Xe(m.install)?(l.add(m),m.install(d,...M)):Xe(m)?(l.add(m),m(d,...M)):He('A plugin must either be a function or an object with an "install" function.'),d},mixin(m){return n.mixins.includes(m)?He("Mixin has already been applied to target app"+(m.name?`: ${m.name}`:"")):n.mixins.push(m),d},component(m,M){return lp(m,n.config),M?(n.components[m]&&He(`Component "${m}" has already been registered in target app.`),n.components[m]=M,d):n.components[m]},directive(m,M){return a_(m),M?(n.directives[m]&&He(`Directive "${m}" has already been registered in target app.`),n.directives[m]=M,d):n.directives[m]},mount(m,M,S){if(c)He("App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. `const createMyApp = () => createApp(App)`");else{m.__vue_app__&&He("There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling `app.unmount()` first.");const R=Zt(i,a);return R.appContext=n,S===!0?S="svg":S===!1&&(S=void 0),n.reload=()=>{e(gi(R),m,S)},M&&t?t(R,m):e(R,m,S),c=!0,d._container=m,m.__vue_app__=d,d._instance=R.component,o5(d,cp),vl(R.component)}},unmount(){c?(e(null,d._container),d._instance=null,a5(d),delete d._container.__vue_app__):He("Cannot unmount an app that is not mounted.")},provide(m,M){return m in n.provides&&He(`App already provides property with key "${String(m)}". It will be overwritten with the new value.`),n.provides[m]=M,d},runWithContext(m){const M=ha;ha=d;try{return m()}finally{ha=M}}};return d}}let ha=null;function $f(e,t){if(!er)He("provide() can only be used inside setup().");else{let r=er.provides;const i=er.parent&&er.parent.provides;i===r&&(r=er.provides=Object.create(i)),r[e]=t}}function fn(e,t,r=!1){const i=er||Jt;if(i||ha){const a=ha?ha._context.provides:i?i.parent==null?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides:void 0;if(a&&e in a)return a[e];if(arguments.length>1)return r&&Xe(t)?t.call(i&&i.proxy):t;He(`injection "${String(e)}" not found.`)}else He("inject() can only be used inside setup() or functional components.")}function Y5(){return!!(er||Jt||ha)}const w_={},__=()=>Object.create(w_),M_=e=>Object.getPrototypeOf(e)===w_;function Z5(e,t,r,i=!1){const a={},n=__();e.propsDefaults=Object.create(null),S_(e,t,a,n);for(const l in e.propsOptions[0])l in a||(a[l]=void 0);E_(t||{},a,e),r?e.props=i?a:Av(a):e.type.props?e.props=a:e.props=n,e.attrs=n}function X5(e){for(;e;){if(e.type.__hmrId)return!0;e=e.parent}}function J5(e,t,r,i){const{props:a,attrs:n,vnode:{patchFlag:l}}=e,c=ut(a),[d]=e.propsOptions;let m=!1;if(!X5(e)&&(i||l>0)&&!(l&16)){if(l&8){const M=e.vnode.dynamicProps;for(let S=0;S<M.length;S++){let R=M[S];if(Ph(e.emitsOptions,R))continue;const I=t[R];if(d)if(_t(n,R))I!==n[R]&&(n[R]=I,m=!0);else{const O=dr(R);a[O]=Q0(d,c,O,I,e,!1)}else I!==n[R]&&(n[R]=I,m=!0)}}}else{S_(e,t,a,n)&&(m=!0);let M;for(const S in c)(!t||!_t(t,S)&&((M=yr(S))===S||!_t(t,M)))&&(d?r&&(r[S]!==void 0||r[M]!==void 0)&&(a[S]=Q0(d,c,S,void 0,e,!0)):delete a[S]);if(n!==c)for(const S in n)(!t||!_t(t,S))&&(delete n[S],m=!0)}m&&on(e.attrs,"set",""),E_(t||{},a,e)}function S_(e,t,r,i){const[a,n]=e.propsOptions;let l=!1,c;if(t)for(let d in t){if(es(d))continue;const m=t[d];let M;a&&_t(a,M=dr(d))?!n||!n.includes(M)?r[M]=m:(c||(c={}))[M]=m:Ph(e.emitsOptions,d)||(!(d in i)||m!==i[d])&&(i[d]=m,l=!0)}if(n){const d=ut(r),m=c||Tt;for(let M=0;M<n.length;M++){const S=n[M];r[S]=Q0(a,d,S,m[S],e,!_t(m,S))}}return l}function Q0(e,t,r,i,a,n){const l=e[r];if(l!=null){const c=_t(l,"default");if(c&&i===void 0){const d=l.default;if(l.type!==Function&&!l.skipFactory&&Xe(d)){const{propsDefaults:m}=a;if(r in m)i=m[r];else{const M=ya(a);i=m[r]=d.call(null,t),M()}}else i=d}l[0]&&(n&&!c?i=!1:l[1]&&(i===""||i===yr(r))&&(i=!0))}return i}const Q5=new WeakMap;function x_(e,t,r=!1){const i=r?Q5:t.propsCache,a=i.get(e);if(a)return a;const n=e.props,l={},c=[];let d=!1;if(!Xe(e)){const M=S=>{d=!0;const[R,I]=x_(S,t,!0);qt(l,R),I&&c.push(...I)};!r&&t.mixins.length&&t.mixins.forEach(M),e.extends&&M(e.extends),e.mixins&&e.mixins.forEach(M)}if(!n&&!d)return Rt(e)&&i.set(e,Qa),Qa;if(ze(n))for(let M=0;M<n.length;M++){jt(n[M])||He("props must be strings when using array syntax.",n[M]);const S=dr(n[M]);qm(S)&&(l[S]=Tt)}else if(n){Rt(n)||He("invalid props options",n);for(const M in n){const S=dr(M);if(qm(S)){const R=n[M],I=l[S]=ze(R)||Xe(R)?{type:R}:qt({},R),O=I.type;let B=!1,L=!0;if(ze(O))for(let P=0;P<O.length;++P){const C=O[P],j=Xe(C)&&C.name;if(j==="Boolean"){B=!0;break}else j==="String"&&(L=!1)}else B=Xe(O)&&O.name==="Boolean";I[0]=B,I[1]=L,(B||_t(I,"default"))&&c.push(S)}}}const m=[l,c];return Rt(e)&&i.set(e,m),m}function qm(e){return e[0]!=="$"&&!es(e)?!0:(He(`Invalid prop name: "${e}" is a reserved property.`),!1)}function eR(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function E_(e,t,r){const i=ut(t),a=r.propsOptions[0];for(const n in a){let l=a[n];l!=null&&tR(n,i[n],l,ji(i),!_t(e,n)&&!_t(e,yr(n)))}}function tR(e,t,r,i,a){const{type:n,required:l,validator:c,skipCheck:d}=r;if(l&&a){He('Missing required prop: "'+e+'"');return}if(!(t==null&&!l)){if(n!=null&&n!==!0&&!d){let m=!1;const M=ze(n)?n:[n],S=[];for(let R=0;R<M.length&&!m;R++){const{valid:I,expectedType:O}=iR(t,M[R]);S.push(O||""),m=I}if(!m){He(nR(e,t,S));return}}c&&!c(t,i)&&He('Invalid prop: custom validator check failed for prop "'+e+'".')}}const rR=ti("String,Number,Boolean,Function,Symbol,BigInt");function iR(e,t){let r;const i=eR(t);if(rR(i)){const a=typeof e;r=a===i.toLowerCase(),!r&&a==="object"&&(r=e instanceof t)}else i==="Object"?r=Rt(e):i==="Array"?r=ze(e):i==="null"?r=e===null:r=e instanceof t;return{valid:r,expectedType:i}}function nR(e,t,r){if(r.length===0)return`Prop type [] for prop "${e}" won't match anything. Did you mean to use type Array instead?`;let i=`Invalid prop: type check failed for prop "${e}". Expected ${r.map(To).join(" | ")}`;const a=r[0],n=bv(t),l=Wm(t,a),c=Wm(t,n);return r.length===1&&Km(a)&&!oR(a,n)&&(i+=` with value ${l}`),i+=`, got ${n} `,Km(n)&&(i+=`with value ${c}.`),i}function Wm(e,t){return t==="String"?`"${e}"`:t==="Number"?`${Number(e)}`:`${e}`}function Km(e){return["string","number","boolean"].some(r=>e.toLowerCase()===r)}function oR(...e){return e.some(t=>t.toLowerCase()==="boolean")}const R_=e=>e[0]==="_"||e==="$stable",zv=e=>ze(e)?e.map(Fr):[Fr(e)],aR=(e,t,r)=>{if(t._n)return t;const i=$v((...a)=>(er&&(!r||r.root===er.root)&&He(`Slot "${e}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`),zv(t(...a))),r);return i._c=!1,i},A_=(e,t,r)=>{const i=e._ctx;for(const a in e){if(R_(a))continue;const n=e[a];if(Xe(n))t[a]=aR(a,n,i);else if(n!=null){He(`Non-function value encountered for slot "${a}". Prefer function slots for better performance.`);const l=zv(n);t[a]=()=>l}}},T_=(e,t)=>{Hs(e.vnode)||He("Non-function value encountered for default slot. Prefer function slots for better performance.");const r=zv(t);e.slots.default=()=>r},ep=(e,t,r)=>{for(const i in t)(r||i!=="_")&&(e[i]=t[i])},sR=(e,t,r)=>{const i=e.slots=__();if(e.vnode.shapeFlag&32){const a=t._;a?(ep(i,t,r),r&&cs(i,"_",a,!0)):A_(t,i)}else t&&T_(e,t)},fR=(e,t,r)=>{const{vnode:i,slots:a}=e;let n=!0,l=Tt;if(i.shapeFlag&32){const c=t._;c?xo?(ep(a,t,r),on(e,"set","$slots")):r&&c===1?n=!1:ep(a,t,r):(n=!t.$stable,A_(t,a)),l=t}else t&&(T_(e,t),l={default:1});if(n)for(const c in a)!R_(c)&&l[c]==null&&delete a[c]};function Fu(e,t,r,i,a=!1){if(ze(e)){e.forEach((R,I)=>Fu(R,t&&(ze(t)?t[I]:t),r,i,a));return}if(la(i)&&!a)return;const n=i.shapeFlag&4?vl(i.component):i.el,l=a?null:n,{i:c,r:d}=e;if(!c){He("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");return}const m=t&&t.r,M=c.refs===Tt?c.refs={}:c.refs,S=c.setupState;if(m!=null&&m!==d&&(jt(m)?(M[m]=null,_t(S,m)&&(S[m]=null)):nr(m)&&(m.value=null)),Xe(d))sn(d,c,12,[l,M]);else{const R=jt(d),I=nr(d);if(R||I){const O=()=>{if(e.f){const B=R?_t(S,d)?S[d]:M[d]:d.value;a?ze(B)&&yv(B,n):ze(B)?B.includes(n)||B.push(n):R?(M[d]=[n],_t(S,d)&&(S[d]=M[d])):(d.value=[n],e.k&&(M[e.k]=d.value))}else R?(M[d]=l,_t(S,d)&&(S[d]=l)):I?(d.value=l,e.k&&(M[e.k]=l)):He("Invalid template ref type:",d,`(${typeof d})`)};l?(O.id=-1,ur(O,r)):O()}else He("Invalid template ref type:",d,`(${typeof d})`)}}const O_=Symbol("_vte"),lR=e=>e.__isTeleport,ca=e=>e&&(e.disabled||e.disabled===""),Vm=e=>typeof SVGElement<"u"&&e instanceof SVGElement,zm=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,tp=(e,t)=>{const r=e&&e.to;if(jt(r))if(t){const i=t(r);return!i&&!ca(e)&&He(`Failed to locate Teleport target with selector "${r}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`),i}else return He("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null;else return!r&&!ca(e)&&He(`Invalid Teleport target: ${r}`),r},uR={name:"Teleport",__isTeleport:!0,process(e,t,r,i,a,n,l,c,d,m){const{mc:M,pc:S,pbc:R,o:{insert:I,querySelector:O,createText:B,createComment:L}}=m,P=ca(t.props);let{shapeFlag:C,children:j,dynamicChildren:$}=t;if(xo&&(d=!1,$=null),e==null){const K=t.el=L("teleport start"),G=t.anchor=L("teleport end");I(K,r,i),I(G,r,i);const te=t.target=tp(t.props,O),Q=P_(te,t,B,I);te?l==="svg"||Vm(te)?l="svg":(l==="mathml"||zm(te))&&(l="mathml"):P||He("Invalid Teleport target on mount:",te,`(${typeof te})`);const W=(ce,_)=>{C&16&&M(j,ce,_,a,n,l,c,d)};P?W(r,G):te&&W(te,Q)}else{t.el=e.el,t.targetStart=e.targetStart;const K=t.anchor=e.anchor,G=t.target=e.target,te=t.targetAnchor=e.targetAnchor,Q=ca(e.props),W=Q?r:G,ce=Q?K:te;if(l==="svg"||Vm(G)?l="svg":(l==="mathml"||zm(G))&&(l="mathml"),$?(R(e.dynamicChildren,$,W,a,n,l,c),Uu(e,t,!0)):d||S(e,t,W,ce,a,n,l,c,!1),P)Q?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Yl(t,r,K,m,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const _=t.target=tp(t.props,O);_?Yl(t,_,null,m,0):He("Invalid Teleport target on update:",G,`(${typeof G})`)}else Q&&Yl(t,G,te,m,1)}I_(t)},remove(e,t,r,{um:i,o:{remove:a}},n){const{shapeFlag:l,children:c,anchor:d,targetStart:m,targetAnchor:M,target:S,props:R}=e;if(S&&(a(m),a(M)),n&&a(d),l&16){const I=n||!ca(R);for(let O=0;O<c.length;O++){const B=c[O];i(B,t,r,I,!!B.dynamicChildren)}}},move:Yl,hydrate:hR};function Yl(e,t,r,{o:{insert:i},m:a},n=2){n===0&&i(e.targetAnchor,t,r);const{el:l,anchor:c,shapeFlag:d,children:m,props:M}=e,S=n===2;if(S&&i(l,t,r),(!S||ca(M))&&d&16)for(let R=0;R<m.length;R++)a(m[R],t,r,2);S&&i(c,t,r)}function hR(e,t,r,i,a,n,{o:{nextSibling:l,parentNode:c,querySelector:d,insert:m,createText:M}},S){const R=t.target=tp(t.props,d);if(R){const I=R._lpa||R.firstChild;if(t.shapeFlag&16)if(ca(t.props))t.anchor=S(l(e),t,c(e),r,i,a,n),t.targetStart=I,t.targetAnchor=I&&l(I);else{t.anchor=l(e);let O=I;for(;O;){if(O&&O.nodeType===8){if(O.data==="teleport start anchor")t.targetStart=O;else if(O.data==="teleport anchor"){t.targetAnchor=O,R._lpa=t.targetAnchor&&l(t.targetAnchor);break}}O=l(O)}t.targetAnchor||P_(R,t,M,m),S(I&&l(I),t,R,r,i,a,n)}I_(t)}return t.anchor&&l(t.anchor)}const cR=uR;function I_(e){const t=e.ctx;if(t&&t.ut){let r=e.children[0].el;for(;r&&r!==e.targetAnchor;)r.nodeType===1&&r.setAttribute("data-v-owner",t.uid),r=r.nextSibling;t.ut()}}function P_(e,t,r,i){const a=t.targetStart=r(""),n=t.targetAnchor=r("");return a[O_]=n,e&&(i(a,e),i(n,e)),n}let Gm=!1;const Wo=()=>{Gm||(console.error("Hydration completed but contains mismatches."),Gm=!0)},dR=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",pR=e=>e.namespaceURI.includes("MathML"),Zl=e=>{if(dR(e))return"svg";if(pR(e))return"mathml"},rf=e=>e.nodeType===8;function vR(e){const{mt:t,p:r,o:{patchProp:i,createText:a,nextSibling:n,parentNode:l,remove:c,insert:d,createComment:m}}=e,M=(j,$)=>{if(!$.hasChildNodes()){He("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),r(null,j,$),Nu(),$._vnode=j;return}S($.firstChild,j,null,null,null),Nu(),$._vnode=j},S=(j,$,K,G,te,Q=!1)=>{Q=Q||!!$.dynamicChildren;const W=rf(j)&&j.data==="[",ce=()=>B(j,$,K,G,te,W),{type:_,ref:o,shapeFlag:f,patchFlag:u}=$;let h=j.nodeType;$.el=j,cs(j,"__vnode",$,!0),cs(j,"__vueParentComponent",K,!0),u===-2&&(Q=!1,$.dynamicChildren=null);let p=null;switch(_){case qn:h!==3?$.children===""?(d($.el=a(""),l(j),j),p=j):p=ce():(j.data!==$.children&&(He("Hydration text mismatch in",j.parentNode,`
-  - rendered on server: ${JSON.stringify(j.data)}
-  - expected on client: ${JSON.stringify($.children)}`),Wo(),j.data=$.children),p=n(j));break;case Xt:C(j)?(p=n(j),P($.el=j.content.firstChild,j,K)):h!==8||W?p=ce():p=n(j);break;case Eo:if(W&&(j=n(j),h=j.nodeType),h===1||h===3){p=j;const w=!$.children.length;for(let x=0;x<$.staticCount;x++)w&&($.children+=p.nodeType===1?p.outerHTML:p.data),x===$.staticCount-1&&($.anchor=p),p=n(p);return W?n(p):p}else ce();break;case Ct:W?p=O(j,$,K,G,te,Q):p=ce();break;default:if(f&1)(h!==1||$.type.toLowerCase()!==j.tagName.toLowerCase())&&!C(j)?p=ce():p=R(j,$,K,G,te,Q);else if(f&6){$.slotScopeIds=te;const w=l(j);if(W?p=L(j):rf(j)&&j.data==="teleport start"?p=L(j,j.data,"teleport end"):p=n(j),t($,w,null,K,G,Zl(w),Q),la($)){let x;W?(x=Zt(Ct),x.anchor=p?p.previousSibling:w.lastChild):x=j.nodeType===3?Zv(""):Zt("div"),x.el=j,$.component.subTree=x}}else f&64?h!==8?p=ce():p=$.type.hydrate(j,$,K,G,te,Q,e,I):f&128?p=$.type.hydrate(j,$,K,G,Zl(l(j)),te,Q,e,S):He("Invalid HostVNode type:",_,`(${typeof _})`)}return o!=null&&Fu(o,null,G,$),p},R=(j,$,K,G,te,Q)=>{Q=Q||!!$.dynamicChildren;const{type:W,props:ce,patchFlag:_,shapeFlag:o,dirs:f,transition:u}=$,h=W==="input"||W==="option";{f&&Qi($,null,K,"created");let p=!1;if(C(j)){p=k_(G,u)&&K&&K.vnode.props&&K.vnode.props.appear;const x=j.content.firstChild;p&&u.beforeEnter(x),P(x,j,K),$.el=j=x}if(o&16&&!(ce&&(ce.innerHTML||ce.textContent))){let x=I(j.firstChild,$,j,K,G,te,Q),g=!1;for(;x;){g||(He("Hydration children mismatch on",j,`
-Server rendered element contains more child nodes than client vdom.`),g=!0),Wo();const s=x;x=x.nextSibling,c(s)}}else o&8&&j.textContent!==$.children&&(He("Hydration text content mismatch on",j,`
-  - rendered on server: ${j.textContent}
-  - expected on client: ${$.children}`),Wo(),j.textContent=$.children);if(ce){const x=j.tagName.includes("-");for(const g in ce)!(f&&f.some(s=>s.dir.created))&&gR(j,g,ce[g],$,K)&&Wo(),(h&&(g.endsWith("value")||g==="indeterminate")||Fs(g)&&!es(g)||g[0]==="."||x)&&i(j,g,null,ce[g],void 0,K)}let w;(w=ce&&ce.onVnodeBeforeMount)&&Wr(w,K,$),f&&Qi($,null,K,"beforeMount"),((w=ce&&ce.onVnodeMounted)||f||p)&&G_(()=>{w&&Wr(w,K,$),p&&u.enter(j),f&&Qi($,null,K,"mounted")},G)}return j.nextSibling},I=(j,$,K,G,te,Q,W)=>{W=W||!!$.dynamicChildren;const ce=$.children,_=ce.length;let o=!1;for(let f=0;f<_;f++){const u=W?ce[f]:ce[f]=Fr(ce[f]),h=u.type===qn;if(j){if(h&&!W){let p=ce[f+1];p&&(p=Fr(p)).type===qn&&(d(a(j.data.slice(u.children.length)),K,n(j)),j.data=u.children)}j=S(j,u,G,te,Q,W)}else h&&!u.children?d(u.el=a(""),K):(o||(He("Hydration children mismatch on",K,`
-Server rendered element contains fewer child nodes than client vdom.`),o=!0),Wo(),r(null,u,K,null,G,te,Zl(K),Q))}return j},O=(j,$,K,G,te,Q)=>{const{slotScopeIds:W}=$;W&&(te=te?te.concat(W):W);const ce=l(j),_=I(n(j),$,ce,K,G,te,Q);return _&&rf(_)&&_.data==="]"?n($.anchor=_):(Wo(),d($.anchor=m("]"),ce,_),_)},B=(j,$,K,G,te,Q)=>{if(He(`Hydration node mismatch:
-- rendered on server:`,j,j.nodeType===3?"(text)":rf(j)&&j.data==="["?"(start of fragment)":"",`
-- expected on client:`,$.type),Wo(),$.el=null,Q){const _=L(j);for(;;){const o=n(j);if(o&&o!==_)c(o);else break}}const W=n(j),ce=l(j);return c(j),r(null,$,ce,W,K,G,Zl(ce),te),W},L=(j,$="[",K="]")=>{let G=0;for(;j;)if(j=n(j),j&&rf(j)&&(j.data===$&&G++,j.data===K)){if(G===0)return n(j);G--}return j},P=(j,$,K)=>{const G=$.parentNode;G&&G.replaceChild(j,$);let te=K;for(;te;)te.vnode.el===$&&(te.vnode.el=te.subTree.el=j),te=te.parent},C=j=>j.nodeType===1&&j.tagName.toLowerCase()==="template";return[M,S]}function gR(e,t,r,i,a){let n,l,c,d;if(t==="class")c=e.getAttribute("class"),d=lr(r),mR(Ym(c||""),Ym(d))||(n=l="class");else if(t==="style"){c=e.getAttribute("style")||"",d=jt(r)?r:ZE(nn(r));const m=Zm(c),M=Zm(d);if(i.dirs)for(const{dir:S,value:R}of i.dirs)S.name==="show"&&!R&&M.set("display","none");a&&C_(a,i,M),yR(m,M)||(n=l="style")}else(e instanceof SVGElement&&a8(t)||e instanceof HTMLElement&&(Tm(t)||o8(t)))&&(Tm(t)?(c=e.hasAttribute(t),d=Mv(r)):r==null?(c=e.hasAttribute(t),d=!1):(e.hasAttribute(t)?c=e.getAttribute(t):t==="value"&&e.tagName==="TEXTAREA"?c=e.value:c=!1,d=s8(r)?String(r):!1),c!==d&&(n="attribute",l=t));if(n){const m=R=>R===!1?"(not rendered)":`${l}="${R}"`,M=`Hydration ${n} mismatch on`,S=`
-  - rendered on server: ${m(c)}
-  - expected on client: ${m(d)}
-  Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.
-  You should fix the source of the mismatch.`;return He(M,e,S),!0}return!1}function Ym(e){return new Set(e.trim().split(/\s+/))}function mR(e,t){if(e.size!==t.size)return!1;for(const r of e)if(!t.has(r))return!1;return!0}function Zm(e){const t=new Map;for(const r of e.split(";")){let[i,a]=r.split(":");i=i.trim(),a=a&&a.trim(),i&&a&&t.set(i,a)}return t}function yR(e,t){if(e.size!==t.size)return!1;for(const[r,i]of e)if(i!==t.get(r))return!1;return!0}function C_(e,t,r){const i=e.subTree;if(e.getCssVars&&(t===i||i&&i.type===Ct&&i.children.includes(t))){const a=e.getCssVars();for(const n in a)r.set(`--${n}`,String(a[n]))}t===i&&e.parent&&C_(e.parent,e.vnode,r)}let nf,wo;function An(e,t){e.appContext.config.performance&&ju()&&wo.mark(`vue-${t}-${e.uid}`),l5(e,t,ju()?wo.now():Date.now())}function Tn(e,t){if(e.appContext.config.performance&&ju()){const r=`vue-${t}-${e.uid}`,i=r+":end";wo.mark(i),wo.measure(`<${Bh(e,e.type)}> ${t}`,r,i),wo.clearMarks(r),wo.clearMarks(i)}u5(e,t,ju()?wo.now():Date.now())}function ju(){return nf!==void 0||(typeof window<"u"&&window.performance?(nf=!0,wo=window.performance):nf=!1),nf}function bR(){const e=[];if(e.length){const t=e.length>1;console.warn(`Feature flag${t?"s":""} ${e.join(", ")} ${t?"are":"is"} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.
-
-For more details, see https://link.vuejs.org/feature-flags.`)}}const ur=G_;function B_(e){return N_(e)}function L_(e){return N_(e,vR)}function N_(e,t){bR();const r=_v();r.__VUE__=!0,Nv(r.__VUE_DEVTOOLS_GLOBAL_HOOK__,r);const{insert:i,remove:a,patchProp:n,createElement:l,createText:c,createComment:d,setText:m,setElementText:M,parentNode:S,nextSibling:R,setScopeId:I=cr,insertStaticContent:O}=e,B=(U,Z,F,N=null,H=null,z=null,fe=void 0,re=null,ae=xo?!1:!!Z.dynamicChildren)=>{if(U===Z)return;U&&!Di(U,Z)&&(N=q(U),k(U,H,z,!0),U=null),Z.patchFlag===-2&&(ae=!1,Z.dynamicChildren=null);const{type:be,ref:J,shapeFlag:le}=Z;switch(be){case qn:L(U,Z,F,N);break;case Xt:P(U,Z,F,N);break;case Eo:U==null?C(Z,F,N,fe):j(U,Z,F,fe);break;case Ct:f(U,Z,F,N,H,z,fe,re,ae);break;default:le&1?G(U,Z,F,N,H,z,fe,re,ae):le&6?u(U,Z,F,N,H,z,fe,re,ae):le&64||le&128?be.process(U,Z,F,N,H,z,fe,re,ae,b):He("Invalid VNode type:",be,`(${typeof be})`)}J!=null&&H&&Fu(J,U&&U.ref,z,Z||U,!Z)},L=(U,Z,F,N)=>{if(U==null)i(Z.el=c(Z.children),F,N);else{const H=Z.el=U.el;Z.children!==U.children&&m(H,Z.children)}},P=(U,Z,F,N)=>{U==null?i(Z.el=d(Z.children||""),F,N):Z.el=U.el},C=(U,Z,F,N)=>{[U.el,U.anchor]=O(U.children,Z,F,N,U.el,U.anchor)},j=(U,Z,F,N)=>{if(Z.children!==U.children){const H=R(U.anchor);K(U),[Z.el,Z.anchor]=O(Z.children,F,H,N)}else Z.el=U.el,Z.anchor=U.anchor},$=({el:U,anchor:Z},F,N)=>{let H;for(;U&&U!==Z;)H=R(U),i(U,F,N),U=H;i(Z,F,N)},K=({el:U,anchor:Z})=>{let F;for(;U&&U!==Z;)F=R(U),a(U),U=F;a(Z)},G=(U,Z,F,N,H,z,fe,re,ae)=>{Z.type==="svg"?fe="svg":Z.type==="math"&&(fe="mathml"),U==null?te(Z,F,N,H,z,fe,re,ae):ce(U,Z,H,z,fe,re,ae)},te=(U,Z,F,N,H,z,fe,re)=>{let ae,be;const{props:J,shapeFlag:le,transition:se,dirs:ue}=U;if(ae=U.el=l(U.type,z,J&&J.is,J),le&8?M(ae,U.children):le&16&&W(U.children,ae,null,N,H,Vc(U,z),fe,re),ue&&Qi(U,null,N,"created"),Q(ae,U,U.scopeId,fe,N),J){for(const ve in J)ve!=="value"&&!es(ve)&&n(ae,ve,null,J[ve],z,N);"value"in J&&n(ae,"value",null,J.value,z),(be=J.onVnodeBeforeMount)&&Wr(be,N,U)}cs(ae,"__vnode",U,!0),cs(ae,"__vueParentComponent",N,!0),ue&&Qi(U,null,N,"beforeMount");const de=k_(H,se);de&&se.beforeEnter(ae),i(ae,Z,F),((be=J&&J.onVnodeMounted)||de||ue)&&ur(()=>{be&&Wr(be,N,U),de&&se.enter(ae),ue&&Qi(U,null,N,"mounted")},H)},Q=(U,Z,F,N,H)=>{if(F&&I(U,F),N)for(let z=0;z<N.length;z++)I(U,N[z]);if(H){let z=H.subTree;if(z.patchFlag>0&&z.patchFlag&2048&&(z=Ch(z.children)||z),Z===z){const fe=H.vnode;Q(U,fe,fe.scopeId,fe.slotScopeIds,H.parent)}}},W=(U,Z,F,N,H,z,fe,re,ae=0)=>{for(let be=ae;be<U.length;be++){const J=U[be]=re?go(U[be]):Fr(U[be]);B(null,J,Z,F,N,H,z,fe,re)}},ce=(U,Z,F,N,H,z,fe)=>{const re=Z.el=U.el;re.__vnode=Z;let{patchFlag:ae,dynamicChildren:be,dirs:J}=Z;ae|=U.patchFlag&16;const le=U.props||Tt,se=Z.props||Tt;let ue;if(F&&Ko(F,!1),(ue=se.onVnodeBeforeUpdate)&&Wr(ue,F,Z,U),J&&Qi(Z,U,F,"beforeUpdate"),F&&Ko(F,!0),xo&&(ae=0,fe=!1,be=null),(le.innerHTML&&se.innerHTML==null||le.textContent&&se.textContent==null)&&M(re,""),be?(_(U.dynamicChildren,be,re,F,N,Vc(Z,H),z),Uu(U,Z)):fe||g(U,Z,re,null,F,N,Vc(Z,H),z,!1),ae>0){if(ae&16)o(re,le,se,F,H);else if(ae&2&&le.class!==se.class&&n(re,"class",null,se.class,H),ae&4&&n(re,"style",le.style,se.style,H),ae&8){const de=Z.dynamicProps;for(let ve=0;ve<de.length;ve++){const ie=de[ve],oe=le[ie],Ae=se[ie];(Ae!==oe||ie==="value")&&n(re,ie,oe,Ae,H,F)}}ae&1&&U.children!==Z.children&&M(re,Z.children)}else!fe&&be==null&&o(re,le,se,F,H);((ue=se.onVnodeUpdated)||J)&&ur(()=>{ue&&Wr(ue,F,Z,U),J&&Qi(Z,U,F,"updated")},N)},_=(U,Z,F,N,H,z,fe)=>{for(let re=0;re<Z.length;re++){const ae=U[re],be=Z[re],J=ae.el&&(ae.type===Ct||!Di(ae,be)||ae.shapeFlag&70)?S(ae.el):F;B(ae,be,J,null,N,H,z,fe,!0)}},o=(U,Z,F,N,H)=>{if(Z!==F){if(Z!==Tt)for(const z in Z)!es(z)&&!(z in F)&&n(U,z,Z[z],null,H,N);for(const z in F){if(es(z))continue;const fe=F[z],re=Z[z];fe!==re&&z!=="value"&&n(U,z,re,fe,H,N)}"value"in F&&n(U,"value",Z.value,F.value,H)}},f=(U,Z,F,N,H,z,fe,re,ae)=>{const be=Z.el=U?U.el:c(""),J=Z.anchor=U?U.anchor:c("");let{patchFlag:le,dynamicChildren:se,slotScopeIds:ue}=Z;(xo||le&2048)&&(le=0,ae=!1,se=null),ue&&(re=re?re.concat(ue):ue),U==null?(i(be,F,N),i(J,F,N),W(Z.children||[],F,J,H,z,fe,re,ae)):le>0&&le&64&&se&&U.dynamicChildren?(_(U.dynamicChildren,se,F,H,z,fe,re),Uu(U,Z)):g(U,Z,F,J,H,z,fe,re,ae)},u=(U,Z,F,N,H,z,fe,re,ae)=>{Z.slotScopeIds=re,U==null?Z.shapeFlag&512?H.ctx.activate(Z,F,N,fe,ae):h(Z,F,N,H,z,fe,ae):p(U,Z,ae)},h=(U,Z,F,N,H,z,fe)=>{const re=U.component=tM(U,N,H);if(re.type.__hmrId&&t5(re),Lf(U),An(re,"mount"),Hs(U)&&(re.ctx.renderer=b),An(re,"init"),iM(re,!1,fe),Tn(re,"init"),re.asyncDep){if(H&&H.registerDep(re,w,fe),!U.el){const ae=re.subTree=Zt(Xt);P(null,ae,Z,F)}}else w(re,U,Z,F,H,z,fe);Nf(),Tn(re,"mount")},p=(U,Z,F)=>{const N=Z.component=U.component;if(RR(U,Z,F))if(N.asyncDep&&!N.asyncResolved){Lf(Z),x(N,Z,F),Nf();return}else N.next=Z,Q8(N.update),N.effect.dirty=!0,N.update();else Z.el=U.el,N.vnode=Z},w=(U,Z,F,N,H,z,fe)=>{const re=()=>{if(U.isMounted){let{next:J,bu:le,u:se,parent:ue,vnode:de}=U;{const pe=$_(U);if(pe){J&&(J.el=de.el,x(U,J,fe)),pe.asyncDep.then(()=>{U.isUnmounted||re()});return}}let ve=J,ie;Lf(J||U.vnode),Ko(U,!1),J?(J.el=de.el,x(U,J,fe)):J=de,le&&bo(le),(ie=J.props&&J.props.onVnodeBeforeUpdate)&&Wr(ie,ue,J,de),Ko(U,!0),An(U,"render");const oe=hu(U);Tn(U,"render");const Ae=U.subTree;U.subTree=oe,An(U,"patch"),B(Ae,oe,S(Ae.el),q(Ae),U,H,z),Tn(U,"patch"),J.el=oe.el,ve===null&&Gv(U,oe.el),se&&ur(se,H),(ie=J.props&&J.props.onVnodeUpdated)&&ur(()=>Wr(ie,ue,J,de),H),r_(U),Nf()}else{let J;const{el:le,props:se}=Z,{bm:ue,m:de,parent:ve}=U,ie=la(Z);if(Ko(U,!1),ue&&bo(ue),!ie&&(J=se&&se.onVnodeBeforeMount)&&Wr(J,ve,Z),Ko(U,!0),le&&D){const oe=()=>{An(U,"render"),U.subTree=hu(U),Tn(U,"render"),An(U,"hydrate"),D(le,U.subTree,U,H,null),Tn(U,"hydrate")};ie?Z.type.__asyncLoader().then(()=>!U.isUnmounted&&oe()):oe()}else{An(U,"render");const oe=U.subTree=hu(U);Tn(U,"render"),An(U,"patch"),B(null,oe,F,N,U,H,z),Tn(U,"patch"),Z.el=oe.el}if(de&&ur(de,H),!ie&&(J=se&&se.onVnodeMounted)){const oe=Z;ur(()=>Wr(J,ve,oe),H)}(Z.shapeFlag&256||ve&&la(ve.vnode)&&ve.vnode.shapeFlag&256)&&U.a&&ur(U.a,H),U.isMounted=!0,G0(U),Z=F=N=null}},ae=U.effect=new ds(re,cr,()=>hl(be),U.scope),be=U.update=()=>{ae.dirty&&ae.run()};be.i=U,be.id=U.uid,Ko(U,!0),ae.onTrack=U.rtc?J=>bo(U.rtc,J):void 0,ae.onTrigger=U.rtg?J=>bo(U.rtg,J):void 0,be()},x=(U,Z,F)=>{Z.component=U;const N=U.vnode.props;U.vnode=Z,U.next=null,J5(U,Z.props,N,F),fR(U,Z.children,F),to(),km(U),ro()},g=(U,Z,F,N,H,z,fe,re,ae=!1)=>{const be=U&&U.children,J=U?U.shapeFlag:0,le=Z.children,{patchFlag:se,shapeFlag:ue}=Z;if(se>0){if(se&128){v(be,le,F,N,H,z,fe,re,ae);return}else if(se&256){s(be,le,F,N,H,z,fe,re,ae);return}}ue&8?(J&16&&E(be,H,z),le!==be&&M(F,le)):J&16?ue&16?v(be,le,F,N,H,z,fe,re,ae):E(be,H,z,!0):(J&8&&M(F,""),ue&16&&W(le,F,N,H,z,fe,re,ae))},s=(U,Z,F,N,H,z,fe,re,ae)=>{U=U||Qa,Z=Z||Qa;const be=U.length,J=Z.length,le=Math.min(be,J);let se;for(se=0;se<le;se++){const ue=Z[se]=ae?go(Z[se]):Fr(Z[se]);B(U[se],ue,F,null,H,z,fe,re,ae)}be>J?E(U,H,z,!0,!1,le):W(Z,F,N,H,z,fe,re,ae,le)},v=(U,Z,F,N,H,z,fe,re,ae)=>{let be=0;const J=Z.length;let le=U.length-1,se=J-1;for(;be<=le&&be<=se;){const ue=U[be],de=Z[be]=ae?go(Z[be]):Fr(Z[be]);if(Di(ue,de))B(ue,de,F,null,H,z,fe,re,ae);else break;be++}for(;be<=le&&be<=se;){const ue=U[le],de=Z[se]=ae?go(Z[se]):Fr(Z[se]);if(Di(ue,de))B(ue,de,F,null,H,z,fe,re,ae);else break;le--,se--}if(be>le){if(be<=se){const ue=se+1,de=ue<J?Z[ue].el:N;for(;be<=se;)B(null,Z[be]=ae?go(Z[be]):Fr(Z[be]),F,de,H,z,fe,re,ae),be++}}else if(be>se)for(;be<=le;)k(U[be],H,z,!0),be++;else{const ue=be,de=be,ve=new Map;for(be=de;be<=se;be++){const xe=Z[be]=ae?go(Z[be]):Fr(Z[be]);xe.key!=null&&(ve.has(xe.key)&&He("Duplicate keys found during update:",JSON.stringify(xe.key),"Make sure keys are unique."),ve.set(xe.key,be))}let ie,oe=0;const Ae=se-de+1;let pe=!1,Se=0;const Ke=new Array(Ae);for(be=0;be<Ae;be++)Ke[be]=0;for(be=ue;be<=le;be++){const xe=U[be];if(oe>=Ae){k(xe,H,z,!0);continue}let qe;if(xe.key!=null)qe=ve.get(xe.key);else for(ie=de;ie<=se;ie++)if(Ke[ie-de]===0&&Di(xe,Z[ie])){qe=ie;break}qe===void 0?k(xe,H,z,!0):(Ke[qe-de]=be+1,qe>=Se?Se=qe:pe=!0,B(xe,Z[qe],F,null,H,z,fe,re,ae),oe++)}const we=pe?wR(Ke):Qa;for(ie=we.length-1,be=Ae-1;be>=0;be--){const xe=de+be,qe=Z[xe],ye=xe+1<J?Z[xe+1].el:N;Ke[be]===0?B(null,qe,F,ye,H,z,fe,re,ae):pe&&(ie<0||be!==we[ie]?T(qe,F,ye,2):ie--)}}},T=(U,Z,F,N,H=null)=>{const{el:z,type:fe,transition:re,children:ae,shapeFlag:be}=U;if(be&6){T(U.component.subTree,Z,F,N);return}if(be&128){U.suspense.move(Z,F,N);return}if(be&64){fe.move(U,Z,F,b);return}if(fe===Ct){i(z,Z,F);for(let le=0;le<ae.length;le++)T(ae[le],Z,F,N);i(U.anchor,Z,F);return}if(fe===Eo){$(U,Z,F);return}if(N!==2&&be&1&&re)if(N===0)re.beforeEnter(z),i(z,Z,F),ur(()=>re.enter(z),H);else{const{leave:le,delayLeave:se,afterLeave:ue}=re,de=()=>i(z,Z,F),ve=()=>{le(z,()=>{de(),ue&&ue()})};se?se(z,de,ve):ve()}else i(z,Z,F)},k=(U,Z,F,N=!1,H=!1)=>{const{type:z,props:fe,ref:re,children:ae,dynamicChildren:be,shapeFlag:J,patchFlag:le,dirs:se,cacheIndex:ue}=U;if(le===-2&&(H=!1),re!=null&&Fu(re,null,F,U,!0),ue!=null&&(Z.renderCache[ue]=void 0),J&256){Z.ctx.deactivate(U);return}const de=J&1&&se,ve=!la(U);let ie;if(ve&&(ie=fe&&fe.onVnodeBeforeUnmount)&&Wr(ie,Z,U),J&6)A(U.component,F,N);else{if(J&128){U.suspense.unmount(F,N);return}de&&Qi(U,null,Z,"beforeUnmount"),J&64?U.type.remove(U,Z,F,b,N):be&&!be.hasOnce&&(z!==Ct||le>0&&le&64)?E(be,Z,F,!1,!0):(z===Ct&&le&384||!H&&J&16)&&E(ae,Z,F),N&&Y(U)}(ve&&(ie=fe&&fe.onVnodeUnmounted)||de)&&ur(()=>{ie&&Wr(ie,Z,U),de&&Qi(U,null,Z,"unmounted")},F)},Y=U=>{const{type:Z,el:F,anchor:N,transition:H}=U;if(Z===Ct){U.patchFlag>0&&U.patchFlag&2048&&H&&!H.persisted?U.children.forEach(fe=>{fe.type===Xt?a(fe.el):Y(fe)}):ee(F,N);return}if(Z===Eo){K(U);return}const z=()=>{a(F),H&&!H.persisted&&H.afterLeave&&H.afterLeave()};if(U.shapeFlag&1&&H&&!H.persisted){const{leave:fe,delayLeave:re}=H,ae=()=>fe(F,z);re?re(U.el,z,ae):ae()}else z()},ee=(U,Z)=>{let F;for(;U!==Z;)F=R(U),a(U),U=F;a(Z)},A=(U,Z,F)=>{U.type.__hmrId&&r5(U);const{bum:N,scope:H,update:z,subTree:fe,um:re,m:ae,a:be}=U;Hu(ae),Hu(be),N&&bo(N),H.stop(),z&&(z.active=!1,k(fe,U,Z,F)),re&&ur(re,Z),ur(()=>{U.isUnmounted=!0},Z),Z&&Z.pendingBranch&&!Z.isUnmounted&&U.asyncDep&&!U.asyncResolved&&U.suspenseId===Z.pendingId&&(Z.deps--,Z.deps===0&&Z.resolve()),f5(U)},E=(U,Z,F,N=!1,H=!1,z=0)=>{for(let fe=z;fe<U.length;fe++)k(U[fe],Z,F,N,H)},q=U=>{if(U.shapeFlag&6)return q(U.component.subTree);if(U.shapeFlag&128)return U.suspense.next();const Z=R(U.anchor||U.el),F=Z&&Z[O_];return F?R(F):Z};let V=!1;const X=(U,Z,F)=>{U==null?Z._vnode&&k(Z._vnode,null,null,!0):B(Z._vnode||null,U,Z,null,null,null,F),Z._vnode=U,V||(V=!0,km(),Nu(),V=!1)},b={p:B,um:k,m:T,r:Y,mt:h,mc:W,pc:g,pbc:_,n:q,o:e};let y,D;return t&&([y,D]=t(b)),{render:X,hydrate:y,createApp:G5(X,y)}}function Vc({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function Ko({effect:e,update:t},r){e.allowRecurse=t.allowRecurse=r}function k_(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Uu(e,t,r=!1){const i=e.children,a=t.children;if(ze(i)&&ze(a))for(let n=0;n<i.length;n++){const l=i[n];let c=a[n];c.shapeFlag&1&&!c.dynamicChildren&&((c.patchFlag<=0||c.patchFlag===32)&&(c=a[n]=go(a[n]),c.el=l.el),!r&&c.patchFlag!==-2&&Uu(l,c)),c.type===qn&&(c.el=l.el),c.type===Xt&&!c.el&&(c.el=l.el)}}function wR(e){const t=e.slice(),r=[0];let i,a,n,l,c;const d=e.length;for(i=0;i<d;i++){const m=e[i];if(m!==0){if(a=r[r.length-1],e[a]<m){t[i]=a,r.push(i);continue}for(n=0,l=r.length-1;n<l;)c=n+l>>1,e[r[c]]<m?n=c+1:l=c;m<e[r[n]]&&(n>0&&(t[i]=r[n-1]),r[n]=i)}}for(n=r.length,l=r[n-1];n-- >0;)r[n]=l,l=t[l];return r}function $_(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:$_(t)}function Hu(e){if(e)for(let t=0;t<e.length;t++)e[t].active=!1}const D_=Symbol.for("v-scx"),F_=()=>{{const e=fn(D_);return e||He("Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build."),e}};function j_(e,t){return dl(e,null,t)}function U_(e,t){return dl(e,null,qt({},t,{flush:"post"}))}function H_(e,t){return dl(e,null,qt({},t,{flush:"sync"}))}const Xl={};function Tr(e,t,r){return Xe(t)||He("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),dl(e,t,r)}function dl(e,t,{immediate:r,deep:i,flush:a,once:n,onTrack:l,onTrigger:c}=Tt){if(t&&n){const te=t;t=(...Q)=>{te(...Q),G()}}i!==void 0&&typeof i=="number"&&He('watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.'),t||(r!==void 0&&He('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),i!==void 0&&He('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'),n!==void 0&&He('watch() "once" option is only respected when using the watch(source, callback, options?) signature.'));const d=te=>{He("Invalid watch source: ",te,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},m=er,M=te=>i===!0?te:_o(te,i===!1?1:void 0);let S,R=!1,I=!1;if(nr(e)?(S=()=>e.value,R=an(e)):sa(e)?(S=()=>M(e),R=!0):ze(e)?(I=!0,R=e.some(te=>sa(te)||an(te)),S=()=>e.map(te=>{if(nr(te))return te.value;if(sa(te))return M(te);if(Xe(te))return sn(te,m,2);d(te)})):Xe(e)?t?S=()=>sn(e,m,2):S=()=>(O&&O(),Xr(e,m,3,[B])):(S=cr,d(e)),t&&i){const te=S;S=()=>_o(te())}let O,B=te=>{O=$.onStop=()=>{sn(te,m,4),O=$.onStop=void 0}},L;if(pl)if(B=cr,t?r&&Xr(t,m,3,[S(),I?[]:void 0,B]):S(),a==="sync"){const te=F_();L=te.__watcherHandles||(te.__watcherHandles=[])}else return cr;let P=I?new Array(e.length).fill(Xl):Xl;const C=()=>{if(!(!$.active||!$.dirty))if(t){const te=$.run();(i||R||(I?te.some((Q,W)=>Dr(Q,P[W])):Dr(te,P)))&&(O&&O(),Xr(t,m,3,[te,P===Xl?void 0:I&&P[0]===Xl?[]:P,B]),P=te)}else $.run()};C.allowRecurse=!!t;let j;a==="sync"?j=C:a==="post"?j=()=>ur(C,m&&m.suspense):(C.pre=!0,m&&(C.id=m.uid),j=()=>hl(C));const $=new ds(S,cr,j),K=I2(),G=()=>{$.stop(),K&&yv(K.effects,$)};return $.onTrack=l,$.onTrigger=c,t?r?C():P=$.run():a==="post"?ur($.run.bind($),m&&m.suspense):$.run(),L&&L.push(G),G}function _R(e,t,r){const i=this.proxy,a=jt(e)?e.includes(".")?q_(i,e):()=>i[e]:e.bind(i,i);let n;Xe(t)?n=t:(n=t.handler,r=t);const l=ya(this),c=dl(a,n.bind(i),r);return l(),c}function q_(e,t){const r=t.split(".");return()=>{let i=e;for(let a=0;a<r.length&&i;a++)i=i[r[a]];return i}}function _o(e,t=1/0,r){if(t<=0||!Rt(e)||e.__v_skip||(r=r||new Set,r.has(e)))return e;if(r.add(e),t--,nr(e))_o(e.value,t,r);else if(ze(e))for(let i=0;i<e.length;i++)_o(e[i],t,r);else if(Ea(e)||na(e))e.forEach(i=>{_o(i,t,r)});else if(x2(e)){for(const i in e)_o(e[i],t,r);for(const i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&_o(e[i],t,r)}return e}function MR(e,t,r=Tt){const i=_i();if(!i)return He("useModel() called without active instance."),Ar();if(!i.propsOptions[0][t])return He(`useModel() called with prop "${t}" which is not declared.`),Ar();const a=dr(t),n=yr(t),l=W_(e,t),c=Y2((d,m)=>{let M,S=Tt,R;return H_(()=>{const I=e[t];Dr(M,I)&&(M=I,m())}),{get(){return d(),r.get?r.get(M):M},set(I){const O=r.set?r.set(I):I;if(!Dr(O,M)&&!(S!==Tt&&Dr(I,S)))return;const B=i.vnode.props;B&&(t in B||a in B||n in B)&&(`onUpdate:${t}`in B||`onUpdate:${a}`in B||`onUpdate:${n}`in B)||(M=I,m()),i.emit(`update:${t}`,O),Dr(I,O)&&Dr(I,S)&&!Dr(O,R)&&m(),S=I,R=O}}});return c[Symbol.iterator]=()=>{let d=0;return{next(){return d<2?{value:d++?l||Tt:c,done:!1}:{done:!0}}}},c}const W_=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${dr(t)}Modifiers`]||e[`${yr(t)}Modifiers`];function SR(e,t,...r){if(e.isUnmounted)return;const i=e.vnode.props||Tt;{const{emitsOptions:M,propsOptions:[S]}=e;if(M)if(!(t in M))(!S||!(Bn(dr(t))in S))&&He(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${Bn(dr(t))}" prop.`);else{const R=M[t];Xe(R)&&(R(...r)||He(`Invalid event arguments: event validation failed for event "${t}".`))}}let a=r;const n=t.startsWith("update:"),l=n&&W_(i,t.slice(7));l&&(l.trim&&(a=r.map(M=>jt(M)?M.trim():M)),l.number&&(a=r.map(Cu))),h5(e,t,a);{const M=t.toLowerCase();M!==t&&i[Bn(M)]&&He(`Event "${M}" is emitted in component ${Bh(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${yr(t)}" instead of "${t}".`)}let c,d=i[c=Bn(t)]||i[c=Bn(dr(t))];!d&&n&&(d=i[c=Bn(yr(t))]),d&&Xr(d,e,6,a);const m=i[c+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Xr(m,e,6,a)}}function K_(e,t,r=!1){const i=t.emitsCache,a=i.get(e);if(a!==void 0)return a;const n=e.emits;let l={},c=!1;if(!Xe(e)){const d=m=>{const M=K_(m,t,!0);M&&(c=!0,qt(l,M))};!r&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!n&&!c?(Rt(e)&&i.set(e,null),null):(ze(n)?n.forEach(d=>l[d]=null):qt(l,n),Rt(e)&&i.set(e,l),l)}function Ph(e,t){return!e||!Fs(t)?!1:(t=t.slice(2).replace(/Once$/,""),_t(e,t[0].toLowerCase()+t.slice(1))||_t(e,yr(t))||_t(e,t))}let rp=!1;function qu(){rp=!0}function hu(e){const{type:t,vnode:r,proxy:i,withProxy:a,propsOptions:[n],slots:l,attrs:c,emit:d,render:m,renderCache:M,props:S,data:R,setupState:I,ctx:O,inheritAttrs:B}=e,L=Xf(e);let P,C;rp=!1;try{if(r.shapeFlag&4){const K=a||i,G=I.__isScriptSetup?new Proxy(K,{get(te,Q,W){return He(`Property '${String(Q)}' was accessed via 'this'. Avoid using 'this' in templates.`),Reflect.get(te,Q,W)}}):K;P=Fr(m.call(G,K,M,ji(S),I,R,O)),C=c}else{const K=t;c===S&&qu(),P=Fr(K.length>1?K(ji(S),{get attrs(){return qu(),ji(c)},slots:l,emit:d}):K(ji(S),null)),C=t.props?c:xR(c)}}catch(K){Df.length=0,jo(K,e,1),P=Zt(Xt)}let j=P,$;if(P.patchFlag>0&&P.patchFlag&2048&&([j,$]=V_(P)),C&&B!==!1){const K=Object.keys(C),{shapeFlag:G}=j;if(K.length){if(G&7)n&&K.some(Pu)&&(C=ER(C,n)),j=gi(j,C,!1,!0);else if(!rp&&j.type!==Xt){const te=Object.keys(c),Q=[],W=[];for(let ce=0,_=te.length;ce<_;ce++){const o=te[ce];Fs(o)?Pu(o)||Q.push(o[2].toLowerCase()+o.slice(3)):W.push(o)}W.length&&He(`Extraneous non-props attributes (${W.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`),Q.length&&He(`Extraneous non-emits event listeners (${Q.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`)}}}return r.dirs&&(Xm(j)||He("Runtime directive used on component with non-element root node. The directives will not function as intended."),j=gi(j,null,!1,!0),j.dirs=j.dirs?j.dirs.concat(r.dirs):r.dirs),r.transition&&(Xm(j)||He("Component inside <Transition> renders non-element root node that cannot be animated."),j.transition=r.transition),$?$(j):P=j,Xf(L),P}const V_=e=>{const t=e.children,r=e.dynamicChildren,i=Ch(t,!1);if(i){if(i.patchFlag>0&&i.patchFlag&2048)return V_(i)}else return[e,void 0];const a=t.indexOf(i),n=r?r.indexOf(i):-1,l=c=>{t[a]=c,r&&(n>-1?r[n]=c:c.patchFlag>0&&(e.dynamicChildren=[...r,c]))};return[Fr(i),l]};function Ch(e,t=!0){let r;for(let i=0;i<e.length;i++){const a=e[i];if(Kn(a)){if(a.type!==Xt||a.children==="v-if"){if(r)return;if(r=a,t&&r.patchFlag>0&&r.patchFlag&2048)return Ch(r.children)}}else return}return r}const xR=e=>{let t;for(const r in e)(r==="class"||r==="style"||Fs(r))&&((t||(t={}))[r]=e[r]);return t},ER=(e,t)=>{const r={};for(const i in e)(!Pu(i)||!(i.slice(9)in t))&&(r[i]=e[i]);return r},Xm=e=>e.shapeFlag&7||e.type===Xt;function RR(e,t,r){const{props:i,children:a,component:n}=e,{props:l,children:c,patchFlag:d}=t,m=n.emitsOptions;if((a||c)&&xo||t.dirs||t.transition)return!0;if(r&&d>=0){if(d&1024)return!0;if(d&16)return i?Jm(i,l,m):!!l;if(d&8){const M=t.dynamicProps;for(let S=0;S<M.length;S++){const R=M[S];if(l[R]!==i[R]&&!Ph(m,R))return!0}}}else return(a||c)&&(!c||!c.$stable)?!0:i===l?!1:i?l?Jm(i,l,m):!0:!!l;return!1}function Jm(e,t,r){const i=Object.keys(t);if(i.length!==Object.keys(e).length)return!0;for(let a=0;a<i.length;a++){const n=i[a];if(t[n]!==e[n]&&!Ph(r,n))return!0}return!1}function Gv({vnode:e,parent:t},r){for(;t;){const i=t.subTree;if(i.suspense&&i.suspense.activeBranch===e&&(i.el=e.el),i===e)(e=t.vnode).el=r,t=t.parent;else break}}const ip=e=>e.__isSuspense;let np=0;const AR={name:"Suspense",__isSuspense:!0,process(e,t,r,i,a,n,l,c,d,m){if(e==null)OR(t,r,i,a,n,l,c,d,m);else{if(n&&n.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}IR(e,t,r,i,a,l,c,d,m)}},hydrate:PR,normalize:CR},TR=AR;function Qf(e,t){const r=e.props&&e.props[t];Xe(r)&&r()}function OR(e,t,r,i,a,n,l,c,d){const{p:m,o:{createElement:M}}=d,S=M("div"),R=e.suspense=z_(e,a,i,t,S,r,n,l,c,d);m(null,R.pendingBranch=e.ssContent,S,null,i,R,n,l),R.deps>0?(Qf(e,"onPending"),Qf(e,"onFallback"),m(null,e.ssFallback,t,r,i,null,n,l),is(R,e.ssFallback)):R.resolve(!1,!0)}function IR(e,t,r,i,a,n,l,c,{p:d,um:m,o:{createElement:M}}){const S=t.suspense=e.suspense;S.vnode=t,t.el=e.el;const R=t.ssContent,I=t.ssFallback,{activeBranch:O,pendingBranch:B,isInFallback:L,isHydrating:P}=S;if(B)S.pendingBranch=R,Di(R,B)?(d(B,R,S.hiddenContainer,null,a,S,n,l,c),S.deps<=0?S.resolve():L&&(P||(d(O,I,r,i,a,null,n,l,c),is(S,I)))):(S.pendingId=np++,P?(S.isHydrating=!1,S.activeBranch=B):m(B,a,S),S.deps=0,S.effects.length=0,S.hiddenContainer=M("div"),L?(d(null,R,S.hiddenContainer,null,a,S,n,l,c),S.deps<=0?S.resolve():(d(O,I,r,i,a,null,n,l,c),is(S,I))):O&&Di(R,O)?(d(O,R,r,i,a,S,n,l,c),S.resolve(!0)):(d(null,R,S.hiddenContainer,null,a,S,n,l,c),S.deps<=0&&S.resolve()));else if(O&&Di(R,O))d(O,R,r,i,a,S,n,l,c),is(S,R);else if(Qf(t,"onPending"),S.pendingBranch=R,R.shapeFlag&512?S.pendingId=R.component.suspenseId:S.pendingId=np++,d(null,R,S.hiddenContainer,null,a,S,n,l,c),S.deps<=0)S.resolve();else{const{timeout:C,pendingId:j}=S;C>0?setTimeout(()=>{S.pendingId===j&&S.fallback(I)},C):C===0&&S.fallback(I)}}let Qm=!1;function z_(e,t,r,i,a,n,l,c,d,m,M=!1){Qm||(Qm=!0,console[console.info?"info":"log"]("<Suspense> is an experimental feature and its API will likely change."));const{p:S,m:R,um:I,n:O,o:{parentNode:B,remove:L}}=m;let P;const C=BR(e);C&&t&&t.pendingBranch&&(P=t.pendingId,t.deps++);const j=e.props?Bu(e.props.timeout):void 0;Cv(j,"Suspense timeout");const $=n,K={vnode:e,parent:t,parentComponent:r,namespace:l,container:i,hiddenContainer:a,deps:0,pendingId:np++,timeout:typeof j=="number"?j:-1,activeBranch:null,pendingBranch:null,isInFallback:!M,isHydrating:M,isUnmounted:!1,effects:[],resolve(G=!1,te=!1){{if(!G&&!K.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(K.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.")}const{vnode:Q,activeBranch:W,pendingBranch:ce,pendingId:_,effects:o,parentComponent:f,container:u}=K;let h=!1;K.isHydrating?K.isHydrating=!1:G||(h=W&&ce.transition&&ce.transition.mode==="out-in",h&&(W.transition.afterLeave=()=>{_===K.pendingId&&(R(ce,u,n===$?O(W):n,0),Yf(o))}),W&&(B(W.el)!==K.hiddenContainer&&(n=O(W)),I(W,f,K,!0)),h||R(ce,u,n,0)),is(K,ce),K.pendingBranch=null,K.isInFallback=!1;let p=K.parent,w=!1;for(;p;){if(p.pendingBranch){p.effects.push(...o),w=!0;break}p=p.parent}!w&&!h&&Yf(o),K.effects=[],C&&t&&t.pendingBranch&&P===t.pendingId&&(t.deps--,t.deps===0&&!te&&t.resolve()),Qf(Q,"onResolve")},fallback(G){if(!K.pendingBranch)return;const{vnode:te,activeBranch:Q,parentComponent:W,container:ce,namespace:_}=K;Qf(te,"onFallback");const o=O(Q),f=()=>{K.isInFallback&&(S(null,G,ce,o,W,null,_,c,d),is(K,G))},u=G.transition&&G.transition.mode==="out-in";u&&(Q.transition.afterLeave=f),K.isInFallback=!0,I(Q,W,null,!0),u||f()},move(G,te,Q){K.activeBranch&&R(K.activeBranch,G,te,Q),K.container=G},next(){return K.activeBranch&&O(K.activeBranch)},registerDep(G,te,Q){const W=!!K.pendingBranch;W&&K.deps++;const ce=G.vnode.el;G.asyncDep.catch(_=>{jo(_,G,0)}).then(_=>{if(G.isUnmounted||K.isUnmounted||K.pendingId!==G.suspenseId)return;G.asyncResolved=!0;const{vnode:o}=G;Lf(o),up(G,_,!1),ce&&(o.el=ce);const f=!ce&&G.subTree.el;te(G,o,B(ce||G.subTree.el),ce?null:O(G.subTree),K,l,Q),f&&L(f),Gv(G,o.el),Nf(),W&&--K.deps===0&&K.resolve()})},unmount(G,te){K.isUnmounted=!0,K.activeBranch&&I(K.activeBranch,r,G,te),K.pendingBranch&&I(K.pendingBranch,r,G,te)}};return K}function PR(e,t,r,i,a,n,l,c,d){const m=t.suspense=z_(t,i,r,e.parentNode,document.createElement("div"),null,a,n,l,c,!0),M=d(e,m.pendingBranch=t.ssContent,r,m,n,l);return m.deps===0&&m.resolve(!1,!0),M}function CR(e){const{shapeFlag:t,children:r}=e,i=t&32;e.ssContent=ey(i?r.default:r),e.ssFallback=i?ey(r.fallback):Zt(Xt)}function ey(e){let t;if(Xe(e)){const r=ma&&e._c;r&&(e._d=!1,tt()),e=e(),r&&(e._d=!0,t=Ir,Y_())}if(ze(e)){const r=Ch(e);!r&&e.filter(i=>i!==Hv).length>0&&He("<Suspense> slots expect a single root node."),e=r}return e=Fr(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(r=>r!==e)),e}function G_(e,t){t&&t.pendingBranch?ze(e)?t.effects.push(...e):t.effects.push(e):Yf(e)}function is(e,t){e.activeBranch=t;const{vnode:r,parentComponent:i}=e;let a=t.el;for(;!a&&t.component;)t=t.component.subTree,a=t.el;r.el=a,i&&i.subTree===r&&(i.vnode.el=a,Gv(i,a))}function BR(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const Ct=Symbol.for("v-fgt"),qn=Symbol.for("v-txt"),Xt=Symbol.for("v-cmt"),Eo=Symbol.for("v-stc"),Df=[];let Ir=null;function tt(e=!1){Df.push(Ir=e?null:[])}function Y_(){Df.pop(),Ir=Df[Df.length-1]||null}let ma=1;function op(e){ma+=e,e<0&&Ir&&(Ir.hasOnce=!0)}function Z_(e){return e.dynamicChildren=ma>0?Ir||Qa:null,Y_(),ma>0&&Ir&&Ir.push(e),e}function ft(e,t,r,i,a,n){return Z_(Qe(e,t,r,i,a,n,!0))}function Yv(e,t,r,i,a){return Z_(Zt(e,t,r,i,a,!0))}function Kn(e){return e?e.__v_isVNode===!0:!1}function Di(e,t){if(t.shapeFlag&6&&e.component){const r=lu.get(t.type);if(r&&r.has(e.component))return e.shapeFlag&=-257,t.shapeFlag&=-513,!1}return e.type===t.type&&e.key===t.key}let ap;function LR(e){ap=e}const NR=(...e)=>kR(...ap?ap(e,Jt):e),X_=({key:e})=>e??null,cu=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?jt(e)||nr(e)||Xe(e)?{i:Jt,r:e,k:t,f:!!r}:e:null);function Qe(e,t=null,r=null,i=0,a=null,n=e===Ct?0:1,l=!1,c=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&X_(t),ref:t&&cu(t),scopeId:Eh,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:n,patchFlag:i,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:Jt};return c?(Xv(d,r),n&128&&e.normalize(d)):r&&(d.shapeFlag|=jt(r)?8:16),d.key!==d.key&&He("VNode created with invalid key (NaN). VNode type:",d.type),ma>0&&!l&&Ir&&(d.patchFlag>0||n&6)&&d.patchFlag!==32&&Ir.push(d),d}const Zt=NR;function kR(e,t=null,r=null,i=0,a=null,n=!1){if((!e||e===Hv)&&(e||He(`Invalid vnode type when creating vnode: ${e}.`),e=Xt),Kn(e)){const c=gi(e,t,!0);return r&&Xv(c,r),ma>0&&!n&&Ir&&(c.shapeFlag&6?Ir[Ir.indexOf(e)]=c:Ir.push(c)),c.patchFlag=-2,c}if(aM(e)&&(e=e.__vccOpts),t){t=J_(t);let{class:c,style:d}=t;c&&!jt(c)&&(t.class=lr(c)),Rt(d)&&(Vf(d)&&!ze(d)&&(d=qt({},d)),t.style=nn(d))}const l=jt(e)?1:ip(e)?128:lR(e)?64:Rt(e)?4:Xe(e)?2:0;return l&4&&Vf(e)&&(e=ut(e),He("Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.",`
-Component that was made reactive: `,e)),Qe(e,t,r,i,a,l,n,!0)}function J_(e){return e?Vf(e)||M_(e)?qt({},e):e:null}function gi(e,t,r=!1,i=!1){const{props:a,ref:n,patchFlag:l,children:c,transition:d}=e,m=t?eM(a||{},t):a,M={__v_isVNode:!0,__v_skip:!0,type:e.type,props:m,key:m&&X_(m),ref:t&&t.ref?r&&n?ze(n)?n.concat(cu(t)):[n,cu(t)]:cu(t):n,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l===-1&&ze(c)?c.map(Q_):c,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ct?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:d,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&gi(e.ssContent),ssFallback:e.ssFallback&&gi(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return d&&i&&Io(M,d.clone(M)),M}function Q_(e){const t=gi(e);return ze(e.children)&&(t.children=e.children.map(Q_)),t}function Zv(e=" ",t=0){return Zt(qn,null,e,t)}function $R(e,t){const r=Zt(Eo,null,e);return r.staticCount=t,r}function li(e="",t=!1){return t?(tt(),Yv(Xt,null,e)):Zt(Xt,null,e)}function Fr(e){return e==null||typeof e=="boolean"?Zt(Xt):ze(e)?Zt(Ct,null,e.slice()):typeof e=="object"?go(e):Zt(qn,null,String(e))}function go(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:gi(e)}function Xv(e,t){let r=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(ze(t))r=16;else if(typeof t=="object")if(i&65){const a=t.default;a&&(a._c&&(a._d=!1),Xv(e,a()),a._c&&(a._d=!0));return}else{r=32;const a=t._;!a&&!M_(t)?t._ctx=Jt:a===3&&Jt&&(Jt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Xe(t)?(t={default:t,_ctx:Jt},r=32):(t=String(t),i&64?(r=16,t=[Zv(t)]):r=8);e.children=t,e.shapeFlag|=r}function eM(...e){const t={};for(let r=0;r<e.length;r++){const i=e[r];for(const a in i)if(a==="class")t.class!==i.class&&(t.class=lr([t.class,i.class]));else if(a==="style")t.style=nn([t.style,i.style]);else if(Fs(a)){const n=t[a],l=i[a];l&&n!==l&&!(ze(n)&&n.includes(l))&&(t[a]=n?[].concat(n,l):l)}else a!==""&&(t[a]=i[a])}return t}function Wr(e,t,r,i=null){Xr(e,t,7,[r,i])}const DR=b_();let FR=0;function tM(e,t,r){const i=e.type,a=(t?t.appContext:e.appContext)||DR,n={uid:FR++,vnode:e,type:i,parent:t,appContext:a,root:null,next:null,subTree:null,effect:null,update:null,scope:new Sv(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(a.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:x_(i,a),emitsOptions:K_(i,a),emit:null,emitted:null,propsDefaults:Tt,inheritAttrs:i.inheritAttrs,ctx:Tt,data:Tt,props:Tt,attrs:Tt,slots:Tt,refs:Tt,setupState:Tt,setupContext:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return n.ctx=E5(n),n.root=t?t.root:n,n.emit=SR.bind(null,n),e.ce&&e.ce(n),n}let er=null;const _i=()=>er||Jt;let Wu,sp;{const e=_v(),t=(r,i)=>{let a;return(a=e[r])||(a=e[r]=[]),a.push(i),n=>{a.length>1?a.forEach(l=>l(n)):a[0](n)}};Wu=t("__VUE_INSTANCE_SETTERS__",r=>er=r),sp=t("__VUE_SSR_SETTERS__",r=>pl=r)}const ya=e=>{const t=er;return Wu(e),e.scope.on(),()=>{e.scope.off(),Wu(t)}},fp=()=>{er&&er.scope.off(),Wu(null)},jR=ti("slot,component");function lp(e,{isNativeTag:t}){(jR(e)||t(e))&&He("Do not use built-in or reserved HTML elements as component id: "+e)}function rM(e){return e.vnode.shapeFlag&4}let pl=!1;function iM(e,t=!1,r=!1){t&&sp(t);const{props:i,children:a}=e.vnode,n=rM(e);Z5(e,i,n,t),sR(e,a,r);const l=n?UR(e,t):void 0;return t&&sp(!1),l}function UR(e,t){var r;const i=e.type;{if(i.name&&lp(i.name,e.appContext.config),i.components){const n=Object.keys(i.components);for(let l=0;l<n.length;l++)lp(n[l],e.appContext.config)}if(i.directives){const n=Object.keys(i.directives);for(let l=0;l<n.length;l++)a_(n[l])}i.compilerOptions&&Jv()&&He('"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.')}e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,kf),R5(e);const{setup:a}=i;if(a){const n=e.setupContext=a.length>1?oM(e):null,l=ya(e);to();const c=sn(a,e,0,[ji(e.props),n]);if(ro(),l(),yh(c)){if(c.then(fp,fp),t)return c.then(d=>{up(e,d,t)}).catch(d=>{jo(d,e,0)});if(e.asyncDep=c,!e.suspense){const d=(r=i.name)!=null?r:"Anonymous";He(`Component <${d}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`)}}else up(e,c,t)}else nM(e,t)}function up(e,t,r){Xe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Rt(t)?(Kn(t)&&He("setup() should not return VNodes directly - return a render function instead."),e.devtoolsRawSetupState=t,e.setupState=Pv(t),A5(e)):t!==void 0&&He(`setup() should return an object. Received: ${t===null?"null":typeof t}`),nM(e,r)}let Ff,hp;function HR(e){Ff=e,hp=t=>{t.render._rc&&(t.withProxy=new Proxy(t.ctx,x5))}}const Jv=()=>!Ff;function nM(e,t,r){const i=e.type;if(!e.render){if(!t&&Ff&&!i.render){const a=i.template||Vv(e).template;if(a){An(e,"compile");const{isCustomElement:n,compilerOptions:l}=e.appContext.config,{delimiters:c,compilerOptions:d}=i,m=qt(qt({isCustomElement:n,delimiters:c},l),d);i.render=Ff(a,m),Tn(e,"compile")}}e.render=i.render||cr,hp&&hp(e)}{const a=ya(e);to();try{H5(e)}finally{ro(),a()}}!i.render&&e.render===cr&&!t&&(!Ff&&i.template?He('Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".'):He("Component is missing template or render function: ",i))}const qR={get(e,t){return qu(),Br(e,"get",""),e[t]},set(){return He("setupContext.attrs is readonly."),!1},deleteProperty(){return He("setupContext.attrs is readonly."),!1}};function WR(e){return new Proxy(e.slots,{get(t,r){return Br(e,"get","$slots"),t[r]}})}function oM(e){const t=r=>{if(e.exposed&&He("expose() should be called only once per setup()."),r!=null){let i=typeof r;i==="object"&&(ze(r)?i="array":nr(r)&&(i="ref")),i!=="object"&&He(`expose() should be passed a plain object, received ${i}.`)}e.exposed=r||{}};{let r,i;return Object.freeze({get attrs(){return r||(r=new Proxy(e.attrs,qR))},get slots(){return i||(i=WR(e))},get emit(){return(a,...n)=>e.emit(a,...n)},expose:t})}}function vl(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Pv(K2(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in ua)return ua[r](e)},has(t,r){return r in t||r in ua}})):e.proxy}const KR=/(?:^|[-_])(\w)/g,VR=e=>e.replace(KR,t=>t.toUpperCase()).replace(/[-_]/g,"");function el(e,t=!0){return Xe(e)?e.displayName||e.name:e.name||t&&e.__name}function Bh(e,t,r=!1){let i=el(t);if(!i&&t.__file){const a=t.__file.match(/([^/\\]+)\.\w+$/);a&&(i=a[1])}if(!i&&e&&e.parent){const a=n=>{for(const l in n)if(n[l]===t)return l};i=a(e.components||e.parent.type.components)||a(e.appContext.components)}return i?VR(i):r?"App":"Anonymous"}function aM(e){return Xe(e)&&"__vccOpts"in e}const ir=(e,t)=>{const r=B8(e,t,pl);{const i=_i();i&&i.appContext.config.warnRecursiveComputed&&(r._warnRecursive=!0)}return r};function Lh(e,t,r){const i=arguments.length;return i===2?Rt(t)&&!ze(t)?Kn(t)?Zt(e,null,[t]):Zt(e,t):Zt(e,null,t):(i>3?r=Array.prototype.slice.call(arguments,2):i===3&&Kn(r)&&(r=[r]),Zt(e,t,r))}function sM(){if(typeof window>"u")return;const e={style:"color:#3ba776"},t={style:"color:#1677ff"},r={style:"color:#f5222d"},i={style:"color:#eb2f96"},a={__vue_custom_formatter:!0,header(S){return Rt(S)?S.__isVue?["div",e,"VueInstance"]:nr(S)?["div",{},["span",e,M(S)],"<",c(S.value),">"]:sa(S)?["div",{},["span",e,an(S)?"ShallowReactive":"Reactive"],"<",c(S),`>${pn(S)?" (readonly)":""}`]:pn(S)?["div",{},["span",e,an(S)?"ShallowReadonly":"Readonly"],"<",c(S),">"]:null:null},hasBody(S){return S&&S.__isVue},body(S){if(S&&S.__isVue)return["div",{},...n(S.$)]}};function n(S){const R=[];S.type.props&&S.props&&R.push(l("props",ut(S.props))),S.setupState!==Tt&&R.push(l("setup",S.setupState)),S.data!==Tt&&R.push(l("data",ut(S.data)));const I=d(S,"computed");I&&R.push(l("computed",I));const O=d(S,"inject");return O&&R.push(l("injected",O)),R.push(["div",{},["span",{style:i.style+";opacity:0.66"},"$ (internal): "],["object",{object:S}]]),R}function l(S,R){return R=qt({},R),Object.keys(R).length?["div",{style:"line-height:1.25em;margin-bottom:0.6em"},["div",{style:"color:#476582"},S],["div",{style:"padding-left:1.25em"},...Object.keys(R).map(I=>["div",{},["span",i,I+": "],c(R[I],!1)])]]:["span",{}]}function c(S,R=!0){return typeof S=="number"?["span",t,S]:typeof S=="string"?["span",r,JSON.stringify(S)]:typeof S=="boolean"?["span",i,S]:Rt(S)?["object",{object:R?ut(S):S}]:["span",r,String(S)]}function d(S,R){const I=S.type;if(Xe(I))return;const O={};for(const B in S.ctx)m(I,B,R)&&(O[B]=S.ctx[B]);return O}function m(S,R,I){const O=S[I];if(ze(O)&&O.includes(R)||Rt(O)&&R in O||S.extends&&m(S.extends,R,I)||S.mixins&&S.mixins.some(B=>m(B,R,I)))return!0}function M(S){return an(S)?"ShallowRef":S.effect?"ComputedRef":"Ref"}window.devtoolsFormatters?window.devtoolsFormatters.push(a):window.devtoolsFormatters=[a]}function zR(e,t,r,i){const a=r[i];if(a&&fM(a,e))return a;const n=t();return n.memo=e.slice(),n.cacheIndex=i,r[i]=n}function fM(e,t){const r=e.memo;if(r.length!=t.length)return!1;for(let i=0;i<r.length;i++)if(Dr(r[i],t[i]))return!1;return ma>0&&Ir&&Ir.push(e),!0}const cp="3.4.38",br=He,GR=xh,YR=$i,ZR=Nv,XR={createComponentInstance:tM,setupComponent:iM,renderComponentRoot:hu,setCurrentRenderingInstance:Xf,isVNode:Kn,normalizeVNode:Fr,getComponentPublicInstance:vl,ensureValidVNode:Wv},JR=XR,QR=null,eA=null,tA=null;/**
-* @vue/runtime-dom v3.4.38
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/const rA="http://www.w3.org/2000/svg",iA="http://www.w3.org/1998/Math/MathML",Pn=typeof document<"u"?document:null,ty=Pn&&Pn.createElement("template"),nA={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,i)=>{const a=t==="svg"?Pn.createElementNS(rA,e):t==="mathml"?Pn.createElementNS(iA,e):r?Pn.createElement(e,{is:r}):Pn.createElement(e);return e==="select"&&i&&i.multiple!=null&&a.setAttribute("multiple",i.multiple),a},createText:e=>Pn.createTextNode(e),createComment:e=>Pn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Pn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,i,a,n){const l=r?r.previousSibling:t.lastChild;if(a&&(a===n||a.nextSibling))for(;t.insertBefore(a.cloneNode(!0),r),!(a===n||!(a=a.nextSibling)););else{ty.innerHTML=i==="svg"?`<svg>${e}</svg>`:i==="mathml"?`<math>${e}</math>`:e;const c=ty.content;if(i==="svg"||i==="mathml"){const d=c.firstChild;for(;d.firstChild;)c.appendChild(d.firstChild);c.removeChild(d)}t.insertBefore(c,r)}return[l?l.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},lo="transition",of="animation",vs=Symbol("_vtc"),Qv=(e,{slots:t})=>Lh(f_,uM(e),t);Qv.displayName="Transition";const lM={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},oA=Qv.props=qt({},Fv,lM),Vo=(e,t=[])=>{ze(e)?e.forEach(r=>r(...t)):e&&e(...t)},ry=e=>e?ze(e)?e.some(t=>t.length>1):e.length>1:!1;function uM(e){const t={};for(const o in e)o in lM||(t[o]=e[o]);if(e.css===!1)return t;const{name:r="v",type:i,duration:a,enterFromClass:n=`${r}-enter-from`,enterActiveClass:l=`${r}-enter-active`,enterToClass:c=`${r}-enter-to`,appearFromClass:d=n,appearActiveClass:m=l,appearToClass:M=c,leaveFromClass:S=`${r}-leave-from`,leaveActiveClass:R=`${r}-leave-active`,leaveToClass:I=`${r}-leave-to`}=e,O=aA(a),B=O&&O[0],L=O&&O[1],{onBeforeEnter:P,onEnter:C,onEnterCancelled:j,onLeave:$,onLeaveCancelled:K,onBeforeAppear:G=P,onAppear:te=C,onAppearCancelled:Q=j}=t,W=(o,f,u)=>{co(o,f?M:c),co(o,f?m:l),u&&u()},ce=(o,f)=>{o._isLeaving=!1,co(o,S),co(o,I),co(o,R),f&&f()},_=o=>(f,u)=>{const h=o?te:C,p=()=>W(f,o,u);Vo(h,[f,p]),iy(()=>{co(f,o?d:n),On(f,o?M:c),ry(h)||ny(f,i,B,p)})};return qt(t,{onBeforeEnter(o){Vo(P,[o]),On(o,n),On(o,l)},onBeforeAppear(o){Vo(G,[o]),On(o,d),On(o,m)},onEnter:_(!1),onAppear:_(!0),onLeave(o,f){o._isLeaving=!0;const u=()=>ce(o,f);On(o,S),On(o,R),cM(),iy(()=>{o._isLeaving&&(co(o,S),On(o,I),ry($)||ny(o,i,L,u))}),Vo($,[o,u])},onEnterCancelled(o){W(o,!1),Vo(j,[o])},onAppearCancelled(o){W(o,!0),Vo(Q,[o])},onLeaveCancelled(o){ce(o),Vo(K,[o])}})}function aA(e){if(e==null)return null;if(Rt(e))return[zc(e.enter),zc(e.leave)];{const t=zc(e);return[t,t]}}function zc(e){const t=Bu(e);return Cv(t,"<transition> explicit duration"),t}function On(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.add(r)),(e[vs]||(e[vs]=new Set)).add(t)}function co(e,t){t.split(/\s+/).forEach(i=>i&&e.classList.remove(i));const r=e[vs];r&&(r.delete(t),r.size||(e[vs]=void 0))}function iy(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let sA=0;function ny(e,t,r,i){const a=e._endId=++sA,n=()=>{a===e._endId&&i()};if(r)return setTimeout(n,r);const{type:l,timeout:c,propCount:d}=hM(e,t);if(!l)return i();const m=l+"end";let M=0;const S=()=>{e.removeEventListener(m,R),n()},R=I=>{I.target===e&&++M>=d&&S()};setTimeout(()=>{M<d&&S()},c+1),e.addEventListener(m,R)}function hM(e,t){const r=window.getComputedStyle(e),i=O=>(r[O]||"").split(", "),a=i(`${lo}Delay`),n=i(`${lo}Duration`),l=oy(a,n),c=i(`${of}Delay`),d=i(`${of}Duration`),m=oy(c,d);let M=null,S=0,R=0;t===lo?l>0&&(M=lo,S=l,R=n.length):t===of?m>0&&(M=of,S=m,R=d.length):(S=Math.max(l,m),M=S>0?l>m?lo:of:null,R=M?M===lo?n.length:d.length:0);const I=M===lo&&/\b(transform|all)(,|$)/.test(i(`${lo}Property`).toString());return{type:M,timeout:S,propCount:R,hasTransform:I}}function oy(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((r,i)=>ay(r)+ay(e[i])))}function ay(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function cM(){return document.body.offsetHeight}function fA(e,t,r){const i=e[vs];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const Ku=Symbol("_vod"),dM=Symbol("_vsh"),eg={beforeMount(e,{value:t},{transition:r}){e[Ku]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):af(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:i}){!t!=!r&&(i?t?(i.beforeEnter(e),af(e,!0),i.enter(e)):i.leave(e,()=>{af(e,!1)}):af(e,t))},beforeUnmount(e,{value:t}){af(e,t)}};eg.name="show";function af(e,t){e.style.display=t?e[Ku]:"none",e[dM]=!t}function lA(){eg.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}}}const pM=Symbol("CSS_VAR_TEXT");function uA(e){const t=_i();if(!t){br("useCssVars is called without current active component instance.");return}const r=t.ut=(a=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(n=>pp(n,a))};t.getCssVars=()=>e(t.proxy);const i=()=>{const a=e(t.proxy);dp(t.subTree,a),r(a)};jv(()=>{U_(i)}),qs(()=>{const a=new MutationObserver(i);a.observe(t.subTree.el.parentNode,{childList:!0}),Ih(()=>a.disconnect())})}function dp(e,t){if(e.shapeFlag&128){const r=e.suspense;e=r.activeBranch,r.pendingBranch&&!r.isHydrating&&r.effects.push(()=>{dp(r.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)pp(e.el,t);else if(e.type===Ct)e.children.forEach(r=>dp(r,t));else if(e.type===Eo){let{el:r,anchor:i}=e;for(;r&&(pp(r,t),r!==i);)r=r.nextSibling}}function pp(e,t){if(e.nodeType===1){const r=e.style;let i="";for(const a in t)r.setProperty(`--${a}`,t[a]),i+=`--${a}: ${t[a]};`;r[pM]=i}}const hA=/(^|;)\s*display\s*:/;function cA(e,t,r){const i=e.style,a=jt(r);let n=!1;if(r&&!a){if(t)if(jt(t))for(const l of t.split(";")){const c=l.slice(0,l.indexOf(":")).trim();r[c]==null&&du(i,c,"")}else for(const l in t)r[l]==null&&du(i,l,"");for(const l in r)l==="display"&&(n=!0),du(i,l,r[l])}else if(a){if(t!==r){const l=i[pM];l&&(r+=";"+l),i.cssText=r,n=hA.test(r)}}else t&&e.removeAttribute("style");Ku in e&&(e[Ku]=n?i.display:"",e[dM]&&(i.display="none"))}const dA=/[^\\];\s*$/,sy=/\s*!important$/;function du(e,t,r){if(ze(r))r.forEach(i=>du(e,t,i));else if(r==null&&(r=""),dA.test(r)&&br(`Unexpected semicolon at the end of '${t}' style value: '${r}'`),t.startsWith("--"))e.setProperty(t,r);else{const i=pA(e,t);sy.test(r)?e.setProperty(yr(i),r.replace(sy,""),"important"):e[i]=r}}const fy=["Webkit","Moz","ms"],Gc={};function pA(e,t){const r=Gc[t];if(r)return r;let i=dr(t);if(i!=="filter"&&i in e)return Gc[t]=i;i=To(i);for(let a=0;a<fy.length;a++){const n=fy[a]+i;if(n in e)return Gc[t]=n}return t}const ly="http://www.w3.org/1999/xlink";function uy(e,t,r,i,a,n=n8(t)){i&&t.startsWith("xlink:")?r==null?e.removeAttributeNS(ly,t.slice(6,t.length)):e.setAttributeNS(ly,t,r):r==null||n&&!Mv(r)?e.removeAttribute(t):e.setAttribute(t,n?"":cn(r)?String(r):r)}function vA(e,t,r,i){if(t==="innerHTML"||t==="textContent"){if(r==null)return;e[t]=r;return}const a=e.tagName;if(t==="value"&&a!=="PROGRESS"&&!a.includes("-")){const l=a==="OPTION"?e.getAttribute("value")||"":e.value,c=r==null?"":String(r);(l!==c||!("_value"in e))&&(e.value=c),r==null&&e.removeAttribute(t),e._value=r;return}let n=!1;if(r===""||r==null){const l=typeof e[t];l==="boolean"?r=Mv(r):r==null&&l==="string"?(r="",n=!0):l==="number"&&(r=0,n=!0)}try{e[t]=r}catch(l){n||br(`Failed setting prop "${t}" on <${a.toLowerCase()}>: value ${r} is invalid.`,l)}n&&e.removeAttribute(t)}function $n(e,t,r,i){e.addEventListener(t,r,i)}function gA(e,t,r,i){e.removeEventListener(t,r,i)}const hy=Symbol("_vei");function mA(e,t,r,i,a=null){const n=e[hy]||(e[hy]={}),l=n[t];if(i&&l)l.value=dy(i,t);else{const[c,d]=yA(t);if(i){const m=n[t]=_A(dy(i,t),a);$n(e,c,m,d)}else l&&(gA(e,c,l,d),n[t]=void 0)}}const cy=/(?:Once|Passive|Capture)$/;function yA(e){let t;if(cy.test(e)){t={};let i;for(;i=e.match(cy);)e=e.slice(0,e.length-i[0].length),t[i[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):yr(e.slice(2)),t]}let Yc=0;const bA=Promise.resolve(),wA=()=>Yc||(bA.then(()=>Yc=0),Yc=Date.now());function _A(e,t){const r=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=r.attached)return;Xr(MA(i,r.value),t,5,[i])};return r.value=e,r.attached=wA(),r}function dy(e,t){return Xe(e)||ze(e)?e:(br(`Wrong type passed as event handler to ${t} - did you forget @ or : in front of your prop?
-Expected function or array of functions, received type ${typeof e}.`),cr)}function MA(e,t){if(ze(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(i=>a=>!a._stopped&&i&&i(a))}else return t}const py=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,SA=(e,t,r,i,a,n)=>{const l=a==="svg";t==="class"?fA(e,i,l):t==="style"?cA(e,r,i):Fs(t)?Pu(t)||mA(e,t,r,i,n):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):xA(e,t,i,l))?(vA(e,t,i),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&uy(e,t,i,l,n,t!=="value")):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),uy(e,t,i,l))};function xA(e,t,r,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&py(t)&&Xe(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const a=e.tagName;if(a==="IMG"||a==="VIDEO"||a==="CANVAS"||a==="SOURCE")return!1}return py(t)&&jt(r)?!1:t in e}/*! #__NO_SIDE_EFFECTS__ */function vM(e,t,r){const i=Us(e,t);class a extends Nh{constructor(l){super(i,l,r)}}return a.def=i,a}/*! #__NO_SIDE_EFFECTS__ */const EA=(e,t)=>vM(e,t,EM),RA=typeof HTMLElement<"u"?HTMLElement:class{};class Nh extends RA{constructor(t,r={},i){super(),this._def=t,this._props=r,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this._ob=null,this.shadowRoot&&i?i(this._createVNode(),this.shadowRoot):(this.shadowRoot&&br("Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use `defineSSRCustomElement`."),this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,Un(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),vp(null,this.shadowRoot),this._instance=null)})}_resolveDef(){this._resolved=!0;for(let i=0;i<this.attributes.length;i++)this._setAttr(this.attributes[i].name);this._ob=new MutationObserver(i=>{for(const a of i)this._setAttr(a.attributeName)}),this._ob.observe(this,{attributes:!0});const t=(i,a=!1)=>{const{props:n,styles:l}=i;let c;if(n&&!ze(n))for(const d in n){const m=n[d];(m===Number||m&&m.type===Number)&&(d in this._props&&(this._props[d]=Bu(this._props[d])),(c||(c=Object.create(null)))[dr(d)]=!0)}this._numberProps=c,a&&this._resolveProps(i),this._applyStyles(l),this._update()},r=this._def.__asyncLoader;r?r().then(i=>t(i,!0)):t(this._def)}_resolveProps(t){const{props:r}=t,i=ze(r)?r:Object.keys(r||{});for(const a of Object.keys(this))a[0]!=="_"&&i.includes(a)&&this._setProp(a,this[a],!0,!1);for(const a of i.map(dr))Object.defineProperty(this,a,{get(){return this._getProp(a)},set(n){this._setProp(a,n)}})}_setAttr(t){let r=this.hasAttribute(t)?this.getAttribute(t):void 0;const i=dr(t);this._numberProps&&this._numberProps[i]&&(r=Bu(r)),this._setProp(i,r,!1)}_getProp(t){return this._props[t]}_setProp(t,r,i=!0,a=!0){r!==this._props[t]&&(this._props[t]=r,a&&this._instance&&this._update(),i&&(r===!0?this.setAttribute(yr(t),""):typeof r=="string"||typeof r=="number"?this.setAttribute(yr(t),r+""):r||this.removeAttribute(yr(t))))}_update(){vp(this._createVNode(),this.shadowRoot)}_createVNode(){const t=Zt(this._def,qt({},this._props));return this._instance||(t.ce=r=>{this._instance=r,r.isCE=!0,r.ceReload=n=>{this._styles&&(this._styles.forEach(l=>this.shadowRoot.removeChild(l)),this._styles.length=0),this._applyStyles(n),this._instance=null,this._update()};const i=(n,l)=>{this.dispatchEvent(new CustomEvent(n,{detail:l}))};r.emit=(n,...l)=>{i(n,l),yr(n)!==n&&i(yr(n),l)};let a=this;for(;a=a&&(a.parentNode||a.host);)if(a instanceof Nh){r.parent=a._instance,r.provides=a._instance.provides;break}}),t}_applyStyles(t){t&&t.forEach(r=>{const i=document.createElement("style");i.textContent=r,this.shadowRoot.appendChild(i),(this._styles||(this._styles=[])).push(i)})}}function AA(e="$style"){{const t=_i();if(!t)return br("useCssModule must be called inside setup()"),Tt;const r=t.type.__cssModules;if(!r)return br("Current instance does not have CSS modules injected."),Tt;const i=r[e];return i||(br(`Current instance does not have CSS module named "${e}".`),Tt)}}const gM=new WeakMap,mM=new WeakMap,Vu=Symbol("_moveCb"),vy=Symbol("_enterCb"),yM={name:"TransitionGroup",props:qt({},oA,{tag:String,moveClass:String}),setup(e,{slots:t}){const r=_i(),i=Dv();let a,n;return Th(()=>{if(!a.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!BA(a[0].el,r.vnode.el,l))return;a.forEach(IA),a.forEach(PA);const c=a.filter(CA);cM(),c.forEach(d=>{const m=d.el,M=m.style;On(m,l),M.transform=M.webkitTransform=M.transitionDuration="";const S=m[Vu]=R=>{R&&R.target!==m||(!R||/transform$/.test(R.propertyName))&&(m.removeEventListener("transitionend",S),m[Vu]=null,co(m,l))};m.addEventListener("transitionend",S)})}),()=>{const l=ut(e),c=uM(l);let d=l.tag||Ct;if(a=[],n)for(let m=0;m<n.length;m++){const M=n[m];M.el&&M.el instanceof Element&&(a.push(M),Io(M,ps(M,c,i,r)),gM.set(M,M.el.getBoundingClientRect()))}n=t.default?Rh(t.default()):[];for(let m=0;m<n.length;m++){const M=n[m];M.key!=null?Io(M,ps(M,c,i,r)):br("<TransitionGroup> children must be keyed.")}return Zt(d,null,n)}}},TA=e=>delete e.mode;yM.props;const OA=yM;function IA(e){const t=e.el;t[Vu]&&t[Vu](),t[vy]&&t[vy]()}function PA(e){mM.set(e,e.el.getBoundingClientRect())}function CA(e){const t=gM.get(e),r=mM.get(e),i=t.left-r.left,a=t.top-r.top;if(i||a){const n=e.el.style;return n.transform=n.webkitTransform=`translate(${i}px,${a}px)`,n.transitionDuration="0s",e}}function BA(e,t,r){const i=e.cloneNode(),a=e[vs];a&&a.forEach(c=>{c.split(/\s+/).forEach(d=>d&&i.classList.remove(d))}),r.split(/\s+/).forEach(c=>c&&i.classList.add(c)),i.style.display="none";const n=t.nodeType===1?t:t.parentNode;n.appendChild(i);const{hasTransform:l}=hM(i);return n.removeChild(i),l}const Po=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ze(t)?r=>bo(t,r):t};function LA(e){e.target.composing=!0}function gy(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const vi=Symbol("_assign"),zu={created(e,{modifiers:{lazy:t,trim:r,number:i}},a){e[vi]=Po(a);const n=i||a.props&&a.props.type==="number";$n(e,t?"change":"input",l=>{if(l.target.composing)return;let c=e.value;r&&(c=c.trim()),n&&(c=Cu(c)),e[vi](c)}),r&&$n(e,"change",()=>{e.value=e.value.trim()}),t||($n(e,"compositionstart",LA),$n(e,"compositionend",gy),$n(e,"change",gy))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:r,modifiers:{lazy:i,trim:a,number:n}},l){if(e[vi]=Po(l),e.composing)return;const c=(n||e.type==="number")&&!/^0\d/.test(e.value)?Cu(e.value):e.value,d=t??"";c!==d&&(document.activeElement===e&&e.type!=="range"&&(i&&t===r||a&&e.value.trim()===d)||(e.value=d))}},kh={deep:!0,created(e,t,r){e[vi]=Po(r),$n(e,"change",()=>{const i=e._modelValue,a=gs(e),n=e.checked,l=e[vi];if(ze(i)){const c=wh(i,a),d=c!==-1;if(n&&!d)l(i.concat(a));else if(!n&&d){const m=[...i];m.splice(c,1),l(m)}}else if(Ea(i)){const c=new Set(i);n?c.add(a):c.delete(a),l(c)}else l(bM(e,n))})},mounted:my,beforeUpdate(e,t,r){e[vi]=Po(r),my(e,t,r)}};function my(e,{value:t,oldValue:r},i){e._modelValue=t,ze(t)?e.checked=wh(t,i.props.value)>-1:Ea(t)?e.checked=t.has(i.props.value):t!==r&&(e.checked=Oo(t,bM(e,!0)))}const tg={created(e,{value:t},r){e.checked=Oo(t,r.props.value),e[vi]=Po(r),$n(e,"change",()=>{e[vi](gs(e))})},beforeUpdate(e,{value:t,oldValue:r},i){e[vi]=Po(i),t!==r&&(e.checked=Oo(t,i.props.value))}},Gu={deep:!0,created(e,{value:t,modifiers:{number:r}},i){const a=Ea(t);$n(e,"change",()=>{const n=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>r?Cu(gs(l)):gs(l));e[vi](e.multiple?a?new Set(n):n:n[0]),e._assigning=!0,Un(()=>{e._assigning=!1})}),e[vi]=Po(i)},mounted(e,{value:t,modifiers:{number:r}}){yy(e,t)},beforeUpdate(e,t,r){e[vi]=Po(r)},updated(e,{value:t,modifiers:{number:r}}){e._assigning||yy(e,t)}};function yy(e,t,r){const i=e.multiple,a=ze(t);if(i&&!a&&!Ea(t)){br(`<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(t).slice(8,-1)}.`);return}for(let n=0,l=e.options.length;n<l;n++){const c=e.options[n],d=gs(c);if(i)if(a){const m=typeof d;m==="string"||m==="number"?c.selected=t.some(M=>String(M)===String(d)):c.selected=wh(t,d)>-1}else c.selected=t.has(d);else if(Oo(gs(c),t)){e.selectedIndex!==n&&(e.selectedIndex=n);return}}!i&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}function gs(e){return"_value"in e?e._value:e.value}function bM(e,t){const r=t?"_trueValue":"_falseValue";return r in e?e[r]:t}const wM={created(e,t,r){Jl(e,t,r,null,"created")},mounted(e,t,r){Jl(e,t,r,null,"mounted")},beforeUpdate(e,t,r,i){Jl(e,t,r,i,"beforeUpdate")},updated(e,t,r,i){Jl(e,t,r,i,"updated")}};function _M(e,t){switch(e){case"SELECT":return Gu;case"TEXTAREA":return zu;default:switch(t){case"checkbox":return kh;case"radio":return tg;default:return zu}}}function Jl(e,t,r,i,a){const l=_M(e.tagName,r.props&&r.props.type)[a];l&&l(e,t,r,i)}function NA(){zu.getSSRProps=({value:e})=>({value:e}),tg.getSSRProps=({value:e},t)=>{if(t.props&&Oo(t.props.value,e))return{checked:!0}},kh.getSSRProps=({value:e},t)=>{if(ze(e)){if(t.props&&wh(e,t.props.value)>-1)return{checked:!0}}else if(Ea(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},wM.getSSRProps=(e,t)=>{if(typeof t.type!="string")return;const r=_M(t.type.toUpperCase(),t.props&&t.props.type);if(r.getSSRProps)return r.getSSRProps(e,t)}}const kA=["ctrl","shift","alt","meta"],$A={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>kA.some(r=>e[`${r}Key`]&&!t.includes(r))},In=(e,t)=>{const r=e._withMods||(e._withMods={}),i=t.join(".");return r[i]||(r[i]=(a,...n)=>{for(let l=0;l<t.length;l++){const c=$A[t[l]];if(c&&c(a,t))return}return e(a,...n)})},DA={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},FA=(e,t)=>{const r=e._withKeys||(e._withKeys={}),i=t.join(".");return r[i]||(r[i]=a=>{if(!("key"in a))return;const n=yr(a.key);if(t.some(l=>l===n||DA[l]===n))return e(a)})},MM=qt({patchProp:SA},nA);let jf,by=!1;function SM(){return jf||(jf=B_(MM))}function xM(){return jf=by?jf:L_(MM),by=!0,jf}const vp=(...e)=>{SM().render(...e)},EM=(...e)=>{xM().hydrate(...e)},jA=(...e)=>{const t=SM().createApp(...e);AM(t),TM(t);const{mount:r}=t;return t.mount=i=>{const a=OM(i);if(!a)return;const n=t._component;!Xe(n)&&!n.render&&!n.template&&(n.template=a.innerHTML),a.innerHTML="";const l=r(a,!1,RM(a));return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),l},t},UA=(...e)=>{const t=xM().createApp(...e);AM(t),TM(t);const{mount:r}=t;return t.mount=i=>{const a=OM(i);if(a)return r(a,!0,RM(a))},t};function RM(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function AM(e){Object.defineProperty(e.config,"isNativeTag",{value:t=>t8(t)||r8(t)||i8(t),writable:!1})}function TM(e){if(Jv()){const t=e.config.isCustomElement;Object.defineProperty(e.config,"isCustomElement",{get(){return t},set(){br("The `isCustomElement` config option is deprecated. Use `compilerOptions.isCustomElement` instead.")}});const r=e.config.compilerOptions,i='The `compilerOptions` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, `compilerOptions` must be passed to `@vue/compiler-dom` in the build setup instead.\n- For vue-loader: pass it via vue-loader\'s `compilerOptions` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc';Object.defineProperty(e.config,"compilerOptions",{get(){return br(i),r},set(){br(i)}})}}function OM(e){if(jt(e)){const t=document.querySelector(e);return t||br(`Failed to mount app: mount target selector "${e}" returned null.`),t}return window.ShadowRoot&&e instanceof window.ShadowRoot&&e.mode==="closed"&&br('mounting on a ShadowRoot with `{mode: "closed"}` may lead to unpredictable bugs'),e}let wy=!1;const HA=()=>{wy||(wy=!0,NA(),lA())};/**
-* vue v3.4.38
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function qA(){sM()}qA();const WA=()=>{br('Runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".')},KA=Object.freeze(Object.defineProperty({__proto__:null,BaseTransition:f_,BaseTransitionPropsValidators:Fv,Comment:Xt,DeprecationTypes:tA,EffectScope:Sv,ErrorCodes:Y8,ErrorTypeStrings:GR,Fragment:Ct,KeepAlive:g5,ReactiveEffect:ds,Static:Eo,Suspense:TR,Teleport:cR,Text:qn,TrackOpTypes:q8,Transition:Qv,TransitionGroup:OA,TriggerOpTypes:W8,VueElement:Nh,assertNumber:Cv,callWithAsyncErrorHandling:Xr,callWithErrorHandling:sn,camelize:dr,capitalize:To,cloneVNode:gi,compatUtils:eA,compile:WA,computed:ir,createApp:jA,createBlock:Yv,createCommentVNode:li,createElementBlock:ft,createElementVNode:Qe,createHydrationRenderer:L_,createPropsRestProxy:F5,createRenderer:B_,createSSRApp:UA,createSlots:M5,createStaticVNode:$R,createTextVNode:Zv,createVNode:Zt,customRef:Y2,defineAsyncComponent:p5,defineComponent:Us,defineCustomElement:vM,defineEmits:O5,defineExpose:I5,defineModel:B5,defineOptions:P5,defineProps:T5,defineSSRCustomElement:EA,defineSlots:C5,devtools:YR,effect:h8,effectScope:T2,getCurrentInstance:_i,getCurrentScope:I2,getTransitionRawChildren:Rh,guardReactiveProps:J_,h:Lh,handleError:jo,hasInjectionContext:Y5,hydrate:EM,initCustomFormatter:sM,initDirectivesForSSR:HA,inject:fn,isMemoSame:fM,isProxy:Vf,isReactive:sa,isReadonly:pn,isRef:nr,isRuntimeOnly:Jv,isShallow:an,isVNode:Kn,markRaw:K2,mergeDefaults:$5,mergeModels:D5,mergeProps:eM,nextTick:Un,normalizeClass:lr,normalizeProps:XE,normalizeStyle:nn,onActivated:u_,onBeforeMount:jv,onBeforeUnmount:Oh,onBeforeUpdate:Uv,onDeactivated:h_,onErrorCaptured:g_,onMounted:qs,onRenderTracked:v_,onRenderTriggered:p_,onScopeDispose:l8,onServerPrefetch:d_,onUnmounted:Ih,onUpdated:Th,openBlock:tt,popScopeId:o_,provide:$f,proxyRefs:Pv,pushScopeId:n_,queuePostFlushCb:Yf,reactive:Ra,readonly:Tv,ref:Ar,registerRuntimeCompiler:HR,render:vp,renderList:Li,renderSlot:Y0,resolveComponent:b5,resolveDirective:_5,resolveDynamicComponent:w5,resolveFilter:QR,resolveTransitionHooks:ps,setBlockTracking:op,setDevtoolsHook:ZR,setTransitionHooks:Io,shallowReactive:Av,shallowReadonly:ji,shallowRef:z2,ssrContextKey:D_,ssrUtils:JR,stop:c8,toDisplayString:ui,toHandlerKey:Bn,toHandlers:S5,toRaw:ut,toRef:H8,toRefs:F8,toValue:k8,transformVNodeArgs:LR,triggerRef:N8,unref:jn,useAttrs:k5,useCssModule:AA,useCssVars:uA,useModel:MR,useSSRContext:F_,useSlots:N5,useTransitionState:Dv,vModelCheckbox:kh,vModelDynamic:wM,vModelRadio:tg,vModelSelect:Gu,vModelText:zu,vShow:eg,version:cp,warn:br,watch:Tr,watchEffect:j_,watchPostEffect:U_,watchSyncEffect:H_,withAsyncContext:j5,withCtx:$v,withDefaults:L5,withDirectives:uu,withKeys:FA,withMemo:zR,withModifiers:In,withScopeId:c5},Symbol.toStringTag,{value:"Module"})),VA=(e,t)=>{const r=e.__vccOpts||e;for(const[i,a]of t)r[i]=a;return r};var gl={exports:{}},rg={exports:{}},ns=typeof Reflect=="object"?Reflect:null,_y=ns&&typeof ns.apply=="function"?ns.apply:function(t,r,i){return Function.prototype.apply.call(t,r,i)},pu;ns&&typeof ns.ownKeys=="function"?pu=ns.ownKeys:Object.getOwnPropertySymbols?pu=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:pu=function(t){return Object.getOwnPropertyNames(t)};function zA(e){console&&console.warn&&console.warn(e)}var IM=Number.isNaN||function(t){return t!==t};function Kt(){Kt.init.call(this)}rg.exports=Kt;rg.exports.once=XA;Kt.EventEmitter=Kt;Kt.prototype._events=void 0;Kt.prototype._eventsCount=0;Kt.prototype._maxListeners=void 0;var My=10;function $h(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Kt,"defaultMaxListeners",{enumerable:!0,get:function(){return My},set:function(e){if(typeof e!="number"||e<0||IM(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");My=e}});Kt.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Kt.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||IM(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function PM(e){return e._maxListeners===void 0?Kt.defaultMaxListeners:e._maxListeners}Kt.prototype.getMaxListeners=function(){return PM(this)};Kt.prototype.emit=function(t){for(var r=[],i=1;i<arguments.length;i++)r.push(arguments[i]);var a=t==="error",n=this._events;if(n!==void 0)a=a&&n.error===void 0;else if(!a)return!1;if(a){var l;if(r.length>0&&(l=r[0]),l instanceof Error)throw l;var c=new Error("Unhandled error."+(l?" ("+l.message+")":""));throw c.context=l,c}var d=n[t];if(d===void 0)return!1;if(typeof d=="function")_y(d,this,r);else for(var m=d.length,M=kM(d,m),i=0;i<m;++i)_y(M[i],this,r);return!0};function CM(e,t,r,i){var a,n,l;if($h(r),n=e._events,n===void 0?(n=e._events=Object.create(null),e._eventsCount=0):(n.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),l=n[t]),l===void 0)l=n[t]=r,++e._eventsCount;else if(typeof l=="function"?l=n[t]=i?[r,l]:[l,r]:i?l.unshift(r):l.push(r),a=PM(e),a>0&&l.length>a&&!l.warned){l.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+l.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=l.length,zA(c)}return e}Kt.prototype.addListener=function(t,r){return CM(this,t,r,!1)};Kt.prototype.on=Kt.prototype.addListener;Kt.prototype.prependListener=function(t,r){return CM(this,t,r,!0)};function GA(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function BM(e,t,r){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},a=GA.bind(i);return a.listener=r,i.wrapFn=a,a}Kt.prototype.once=function(t,r){return $h(r),this.on(t,BM(this,t,r)),this};Kt.prototype.prependOnceListener=function(t,r){return $h(r),this.prependListener(t,BM(this,t,r)),this};Kt.prototype.removeListener=function(t,r){var i,a,n,l,c;if($h(r),a=this._events,a===void 0)return this;if(i=a[t],i===void 0)return this;if(i===r||i.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete a[t],a.removeListener&&this.emit("removeListener",t,i.listener||r));else if(typeof i!="function"){for(n=-1,l=i.length-1;l>=0;l--)if(i[l]===r||i[l].listener===r){c=i[l].listener,n=l;break}if(n<0)return this;n===0?i.shift():YA(i,n),i.length===1&&(a[t]=i[0]),a.removeListener!==void 0&&this.emit("removeListener",t,c||r)}return this};Kt.prototype.off=Kt.prototype.removeListener;Kt.prototype.removeAllListeners=function(t){var r,i,a;if(i=this._events,i===void 0)return this;if(i.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):i[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete i[t]),this;if(arguments.length===0){var n=Object.keys(i),l;for(a=0;a<n.length;++a)l=n[a],l!=="removeListener"&&this.removeAllListeners(l);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=i[t],typeof r=="function")this.removeListener(t,r);else if(r!==void 0)for(a=r.length-1;a>=0;a--)this.removeListener(t,r[a]);return this};function LM(e,t,r){var i=e._events;if(i===void 0)return[];var a=i[t];return a===void 0?[]:typeof a=="function"?r?[a.listener||a]:[a]:r?ZA(a):kM(a,a.length)}Kt.prototype.listeners=function(t){return LM(this,t,!0)};Kt.prototype.rawListeners=function(t){return LM(this,t,!1)};Kt.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):NM.call(e,t)};Kt.prototype.listenerCount=NM;function NM(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Kt.prototype.eventNames=function(){return this._eventsCount>0?pu(this._events):[]};function kM(e,t){for(var r=new Array(t),i=0;i<t;++i)r[i]=e[i];return r}function YA(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}function ZA(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}function XA(e,t){return new Promise(function(r,i){function a(l){e.removeListener(t,n),i(l)}function n(){typeof e.removeListener=="function"&&e.removeListener("error",a),r([].slice.call(arguments))}$M(e,t,n,{once:!0}),t!=="error"&&JA(e,a,{once:!0})})}function JA(e,t,r){typeof e.on=="function"&&$M(e,"error",t,r)}function $M(e,t,r,i){if(typeof e.on=="function")i.once?e.once(t,r):e.on(t,r);else if(typeof e.addEventListener=="function")e.addEventListener(t,function a(n){i.once&&e.removeEventListener(t,a),r(n)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e)}var Lr=rg.exports,ig=e7,QA=Object.prototype.hasOwnProperty;function e7(){for(var e={},t=0;t<arguments.length;t++){var r=arguments[t];for(var i in r)QA.call(r,i)&&(e[i]=r[i])}return e}var gp={exports:{}},DM=Lr.EventEmitter,ri={},FM={},jM=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var t={},r=Symbol("test"),i=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(i)!=="[object Symbol]")return!1;var a=42;t[r]=a;for(r in t)return!1;if(typeof Object.keys=="function"&&Object.keys(t).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(t).length!==0)return!1;var n=Object.getOwnPropertySymbols(t);if(n.length!==1||n[0]!==r||!Object.prototype.propertyIsEnumerable.call(t,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var l=Object.getOwnPropertyDescriptor(t,r);if(l.value!==a||l.enumerable!==!0)return!1}return!0},t7=jM,ng=function(){return t7()&&!!Symbol.toStringTag},r7=Error,i7=EvalError,n7=RangeError,o7=ReferenceError,UM=SyntaxError,Dh=TypeError,a7=URIError,Sy=typeof Symbol<"u"&&Symbol,s7=jM,f7=function(){return typeof Sy!="function"||typeof Symbol!="function"||typeof Sy("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:s7()},xy={foo:{}},l7=Object,u7=function(){return{__proto__:xy}.foo===xy.foo&&!({__proto__:null}instanceof l7)},h7="Function.prototype.bind called on incompatible ",c7=Object.prototype.toString,d7=Math.max,p7="[object Function]",Ey=function(t,r){for(var i=[],a=0;a<t.length;a+=1)i[a]=t[a];for(var n=0;n<r.length;n+=1)i[n+t.length]=r[n];return i},v7=function(t,r){for(var i=[],a=r||0,n=0;a<t.length;a+=1,n+=1)i[n]=t[a];return i},g7=function(e,t){for(var r="",i=0;i<e.length;i+=1)r+=e[i],i+1<e.length&&(r+=t);return r},m7=function(t){var r=this;if(typeof r!="function"||c7.apply(r)!==p7)throw new TypeError(h7+r);for(var i=v7(arguments,1),a,n=function(){if(this instanceof a){var M=r.apply(this,Ey(i,arguments));return Object(M)===M?M:this}return r.apply(t,Ey(i,arguments))},l=d7(0,r.length-i.length),c=[],d=0;d<l;d++)c[d]="$"+d;if(a=Function("binder","return function ("+g7(c,",")+"){ return binder.apply(this,arguments); }")(n),r.prototype){var m=function(){};m.prototype=r.prototype,a.prototype=new m,m.prototype=null}return a},y7=m7,og=Function.prototype.bind||y7,b7=Function.prototype.call,w7=Object.prototype.hasOwnProperty,_7=og,M7=_7.call(b7,w7),St,S7=r7,x7=i7,E7=n7,R7=o7,ms=UM,os=Dh,A7=a7,HM=Function,Zc=function(e){try{return HM('"use strict"; return ('+e+").constructor;")()}catch{}},da=Object.getOwnPropertyDescriptor;if(da)try{da({},"")}catch{da=null}var Xc=function(){throw new os},T7=da?function(){try{return arguments.callee,Xc}catch{try{return da(arguments,"callee").get}catch{return Xc}}}():Xc,ja=f7(),O7=u7(),hr=Object.getPrototypeOf||(O7?function(e){return e.__proto__}:null),za={},I7=typeof Uint8Array>"u"||!hr?St:hr(Uint8Array),pa={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?St:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?St:ArrayBuffer,"%ArrayIteratorPrototype%":ja&&hr?hr([][Symbol.iterator]()):St,"%AsyncFromSyncIteratorPrototype%":St,"%AsyncFunction%":za,"%AsyncGenerator%":za,"%AsyncGeneratorFunction%":za,"%AsyncIteratorPrototype%":za,"%Atomics%":typeof Atomics>"u"?St:Atomics,"%BigInt%":typeof BigInt>"u"?St:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?St:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?St:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?St:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":S7,"%eval%":eval,"%EvalError%":x7,"%Float32Array%":typeof Float32Array>"u"?St:Float32Array,"%Float64Array%":typeof Float64Array>"u"?St:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?St:FinalizationRegistry,"%Function%":HM,"%GeneratorFunction%":za,"%Int8Array%":typeof Int8Array>"u"?St:Int8Array,"%Int16Array%":typeof Int16Array>"u"?St:Int16Array,"%Int32Array%":typeof Int32Array>"u"?St:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":ja&&hr?hr(hr([][Symbol.iterator]())):St,"%JSON%":typeof JSON=="object"?JSON:St,"%Map%":typeof Map>"u"?St:Map,"%MapIteratorPrototype%":typeof Map>"u"||!ja||!hr?St:hr(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?St:Promise,"%Proxy%":typeof Proxy>"u"?St:Proxy,"%RangeError%":E7,"%ReferenceError%":R7,"%Reflect%":typeof Reflect>"u"?St:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?St:Set,"%SetIteratorPrototype%":typeof Set>"u"||!ja||!hr?St:hr(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?St:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":ja&&hr?hr(""[Symbol.iterator]()):St,"%Symbol%":ja?Symbol:St,"%SyntaxError%":ms,"%ThrowTypeError%":T7,"%TypedArray%":I7,"%TypeError%":os,"%Uint8Array%":typeof Uint8Array>"u"?St:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?St:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?St:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?St:Uint32Array,"%URIError%":A7,"%WeakMap%":typeof WeakMap>"u"?St:WeakMap,"%WeakRef%":typeof WeakRef>"u"?St:WeakRef,"%WeakSet%":typeof WeakSet>"u"?St:WeakSet};if(hr)try{null.error}catch(e){var P7=hr(hr(e));pa["%Error.prototype%"]=P7}var C7=function e(t){var r;if(t==="%AsyncFunction%")r=Zc("async function () {}");else if(t==="%GeneratorFunction%")r=Zc("function* () {}");else if(t==="%AsyncGeneratorFunction%")r=Zc("async function* () {}");else if(t==="%AsyncGenerator%"){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if(t==="%AsyncIteratorPrototype%"){var a=e("%AsyncGenerator%");a&&hr&&(r=hr(a.prototype))}return pa[t]=r,r},Ry={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},ml=og,Yu=M7,B7=ml.call(Function.call,Array.prototype.concat),L7=ml.call(Function.apply,Array.prototype.splice),Ay=ml.call(Function.call,String.prototype.replace),Zu=ml.call(Function.call,String.prototype.slice),N7=ml.call(Function.call,RegExp.prototype.exec),k7=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,$7=/\\(\\)?/g,D7=function(t){var r=Zu(t,0,1),i=Zu(t,-1);if(r==="%"&&i!=="%")throw new ms("invalid intrinsic syntax, expected closing `%`");if(i==="%"&&r!=="%")throw new ms("invalid intrinsic syntax, expected opening `%`");var a=[];return Ay(t,k7,function(n,l,c,d){a[a.length]=c?Ay(d,$7,"$1"):l||n}),a},F7=function(t,r){var i=t,a;if(Yu(Ry,i)&&(a=Ry[i],i="%"+a[0]+"%"),Yu(pa,i)){var n=pa[i];if(n===za&&(n=C7(i)),typeof n>"u"&&!r)throw new os("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:a,name:i,value:n}}throw new ms("intrinsic "+t+" does not exist!")},yl=function(t,r){if(typeof t!="string"||t.length===0)throw new os("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new os('"allowMissing" argument must be a boolean');if(N7(/^%?[^%]*%?$/,t)===null)throw new ms("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var i=D7(t),a=i.length>0?i[0]:"",n=F7("%"+a+"%",r),l=n.name,c=n.value,d=!1,m=n.alias;m&&(a=m[0],L7(i,B7([0,1],m)));for(var M=1,S=!0;M<i.length;M+=1){var R=i[M],I=Zu(R,0,1),O=Zu(R,-1);if((I==='"'||I==="'"||I==="`"||O==='"'||O==="'"||O==="`")&&I!==O)throw new ms("property names with quotes must have matching quotes");if((R==="constructor"||!S)&&(d=!0),a+="."+R,l="%"+a+"%",Yu(pa,l))c=pa[l];else if(c!=null){if(!(R in c)){if(!r)throw new os("base intrinsic for "+t+" exists, but the property is not available.");return}if(da&&M+1>=i.length){var B=da(c,R);S=!!B,S&&"get"in B&&!("originalValue"in B.get)?c=B.get:c=c[R]}else S=Yu(c,R),c=c[R];S&&!d&&(pa[l]=c)}}return c},qM={exports:{}},Jc,Ty;function ag(){if(Ty)return Jc;Ty=1;var e=yl,t=e("%Object.defineProperty%",!0)||!1;if(t)try{t({},"a",{value:1})}catch{t=!1}return Jc=t,Jc}var j7=yl,vu=j7("%Object.getOwnPropertyDescriptor%",!0);if(vu)try{vu([],"length")}catch{vu=null}var sg=vu,Oy=ag(),U7=UM,Ua=Dh,Iy=sg,H7=function(t,r,i){if(!t||typeof t!="object"&&typeof t!="function")throw new Ua("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new Ua("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new Ua("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new Ua("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new Ua("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new Ua("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,n=arguments.length>4?arguments[4]:null,l=arguments.length>5?arguments[5]:null,c=arguments.length>6?arguments[6]:!1,d=!!Iy&&Iy(t,r);if(Oy)Oy(t,r,{configurable:l===null&&d?d.configurable:!l,enumerable:a===null&&d?d.enumerable:!a,value:i,writable:n===null&&d?d.writable:!n});else if(c||!a&&!n&&!l)t[r]=i;else throw new U7("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},mp=ag(),WM=function(){return!!mp};WM.hasArrayLengthDefineBug=function(){if(!mp)return null;try{return mp([],"length",{value:1}).length!==1}catch{return!0}};var q7=WM,W7=yl,Py=H7,K7=q7(),Cy=sg,By=Dh,V7=W7("%Math.floor%"),z7=function(t,r){if(typeof t!="function")throw new By("`fn` is not a function");if(typeof r!="number"||r<0||r>4294967295||V7(r)!==r)throw new By("`length` must be a positive 32-bit integer");var i=arguments.length>2&&!!arguments[2],a=!0,n=!0;if("length"in t&&Cy){var l=Cy(t,"length");l&&!l.configurable&&(a=!1),l&&!l.writable&&(n=!1)}return(a||n||!i)&&(K7?Py(t,"length",r,!0,!0):Py(t,"length",r)),t};(function(e){var t=og,r=yl,i=z7,a=Dh,n=r("%Function.prototype.apply%"),l=r("%Function.prototype.call%"),c=r("%Reflect.apply%",!0)||t.call(l,n),d=ag(),m=r("%Math.max%");e.exports=function(R){if(typeof R!="function")throw new a("a function is required");var I=c(t,l,arguments);return i(I,1+m(0,R.length-(arguments.length-1)),!0)};var M=function(){return c(t,n,arguments)};d?d(e.exports,"apply",{value:M}):e.exports.apply=M})(qM);var KM=qM.exports,VM=yl,zM=KM,G7=zM(VM("String.prototype.indexOf")),GM=function(t,r){var i=VM(t,!!r);return typeof i=="function"&&G7(t,".prototype.")>-1?zM(i):i},Y7=ng(),Z7=GM,yp=Z7("Object.prototype.toString"),Fh=function(t){return Y7&&t&&typeof t=="object"&&Symbol.toStringTag in t?!1:yp(t)==="[object Arguments]"},YM=function(t){return Fh(t)?!0:t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&yp(t)!=="[object Array]"&&yp(t.callee)==="[object Function]"},X7=function(){return Fh(arguments)}();Fh.isLegacyArguments=YM;var J7=X7?Fh:YM,Q7=Object.prototype.toString,e9=Function.prototype.toString,t9=/^\s*(?:function)?\*/,ZM=ng(),Qc=Object.getPrototypeOf,r9=function(){if(!ZM)return!1;try{return Function("return function*() {}")()}catch{}},ed,i9=function(t){if(typeof t!="function")return!1;if(t9.test(e9.call(t)))return!0;if(!ZM){var r=Q7.call(t);return r==="[object GeneratorFunction]"}if(!Qc)return!1;if(typeof ed>"u"){var i=r9();ed=i?Qc(i):!1}return Qc(t)===ed},XM=Function.prototype.toString,Za=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,bp,gu;if(typeof Za=="function"&&typeof Object.defineProperty=="function")try{bp=Object.defineProperty({},"length",{get:function(){throw gu}}),gu={},Za(function(){throw 42},null,bp)}catch(e){e!==gu&&(Za=null)}else Za=null;var n9=/^\s*class\b/,wp=function(t){try{var r=XM.call(t);return n9.test(r)}catch{return!1}},td=function(t){try{return wp(t)?!1:(XM.call(t),!0)}catch{return!1}},mu=Object.prototype.toString,o9="[object Object]",a9="[object Function]",s9="[object GeneratorFunction]",f9="[object HTMLAllCollection]",l9="[object HTML document.all class]",u9="[object HTMLCollection]",h9=typeof Symbol=="function"&&!!Symbol.toStringTag,c9=!(0 in[,]),_p=function(){return!1};if(typeof document=="object"){var d9=document.all;mu.call(d9)===mu.call(document.all)&&(_p=function(t){if((c9||!t)&&(typeof t>"u"||typeof t=="object"))try{var r=mu.call(t);return(r===f9||r===l9||r===u9||r===o9)&&t("")==null}catch{}return!1})}var p9=Za?function(t){if(_p(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;try{Za(t,null,bp)}catch(r){if(r!==gu)return!1}return!wp(t)&&td(t)}:function(t){if(_p(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;if(h9)return td(t);if(wp(t))return!1;var r=mu.call(t);return r!==a9&&r!==s9&&!/^\[object HTML/.test(r)?!1:td(t)},v9=p9,g9=Object.prototype.toString,JM=Object.prototype.hasOwnProperty,m9=function(t,r,i){for(var a=0,n=t.length;a<n;a++)JM.call(t,a)&&(i==null?r(t[a],a,t):r.call(i,t[a],a,t))},y9=function(t,r,i){for(var a=0,n=t.length;a<n;a++)i==null?r(t.charAt(a),a,t):r.call(i,t.charAt(a),a,t)},b9=function(t,r,i){for(var a in t)JM.call(t,a)&&(i==null?r(t[a],a,t):r.call(i,t[a],a,t))},w9=function(t,r,i){if(!v9(r))throw new TypeError("iterator must be a function");var a;arguments.length>=3&&(a=i),g9.call(t)==="[object Array]"?m9(t,r,a):typeof t=="string"?y9(t,r,a):b9(t,r,a)},_9=w9,rd=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],M9=typeof globalThis>"u"?Ze:globalThis,S9=function(){for(var t=[],r=0;r<rd.length;r++)typeof M9[rd[r]]=="function"&&(t[t.length]=rd[r]);return t},Xu=_9,x9=S9,Ly=KM,fg=GM,yu=sg,E9=fg("Object.prototype.toString"),QM=ng(),Ny=typeof globalThis>"u"?Ze:globalThis,Mp=x9(),lg=fg("String.prototype.slice"),id=Object.getPrototypeOf,R9=fg("Array.prototype.indexOf",!0)||function(t,r){for(var i=0;i<t.length;i+=1)if(t[i]===r)return i;return-1},Ju={__proto__:null};QM&&yu&&id?Xu(Mp,function(e){var t=new Ny[e];if(Symbol.toStringTag in t){var r=id(t),i=yu(r,Symbol.toStringTag);if(!i){var a=id(r);i=yu(a,Symbol.toStringTag)}Ju["$"+e]=Ly(i.get)}}):Xu(Mp,function(e){var t=new Ny[e],r=t.slice||t.set;r&&(Ju["$"+e]=Ly(r))});var A9=function(t){var r=!1;return Xu(Ju,function(i,a){if(!r)try{"$"+i(t)===a&&(r=lg(a,1))}catch{}}),r},T9=function(t){var r=!1;return Xu(Ju,function(i,a){if(!r)try{i(t),r=lg(a,1)}catch{}}),r},e3=function(t){if(!t||typeof t!="object")return!1;if(!QM){var r=lg(E9(t),8,-1);return R9(Mp,r)>-1?r:r!=="Object"?!1:T9(t)}return yu?A9(t):null},O9=e3,I9=function(t){return!!O9(t)};(function(e){var t=J7,r=i9,i=e3,a=I9;function n(z){return z.call.bind(z)}var l=typeof BigInt<"u",c=typeof Symbol<"u",d=n(Object.prototype.toString),m=n(Number.prototype.valueOf),M=n(String.prototype.valueOf),S=n(Boolean.prototype.valueOf);if(l)var R=n(BigInt.prototype.valueOf);if(c)var I=n(Symbol.prototype.valueOf);function O(z,fe){if(typeof z!="object")return!1;try{return fe(z),!0}catch{return!1}}e.isArgumentsObject=t,e.isGeneratorFunction=r,e.isTypedArray=a;function B(z){return typeof Promise<"u"&&z instanceof Promise||z!==null&&typeof z=="object"&&typeof z.then=="function"&&typeof z.catch=="function"}e.isPromise=B;function L(z){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?ArrayBuffer.isView(z):a(z)||k(z)}e.isArrayBufferView=L;function P(z){return i(z)==="Uint8Array"}e.isUint8Array=P;function C(z){return i(z)==="Uint8ClampedArray"}e.isUint8ClampedArray=C;function j(z){return i(z)==="Uint16Array"}e.isUint16Array=j;function $(z){return i(z)==="Uint32Array"}e.isUint32Array=$;function K(z){return i(z)==="Int8Array"}e.isInt8Array=K;function G(z){return i(z)==="Int16Array"}e.isInt16Array=G;function te(z){return i(z)==="Int32Array"}e.isInt32Array=te;function Q(z){return i(z)==="Float32Array"}e.isFloat32Array=Q;function W(z){return i(z)==="Float64Array"}e.isFloat64Array=W;function ce(z){return i(z)==="BigInt64Array"}e.isBigInt64Array=ce;function _(z){return i(z)==="BigUint64Array"}e.isBigUint64Array=_;function o(z){return d(z)==="[object Map]"}o.working=typeof Map<"u"&&o(new Map);function f(z){return typeof Map>"u"?!1:o.working?o(z):z instanceof Map}e.isMap=f;function u(z){return d(z)==="[object Set]"}u.working=typeof Set<"u"&&u(new Set);function h(z){return typeof Set>"u"?!1:u.working?u(z):z instanceof Set}e.isSet=h;function p(z){return d(z)==="[object WeakMap]"}p.working=typeof WeakMap<"u"&&p(new WeakMap);function w(z){return typeof WeakMap>"u"?!1:p.working?p(z):z instanceof WeakMap}e.isWeakMap=w;function x(z){return d(z)==="[object WeakSet]"}x.working=typeof WeakSet<"u"&&x(new WeakSet);function g(z){return x(z)}e.isWeakSet=g;function s(z){return d(z)==="[object ArrayBuffer]"}s.working=typeof ArrayBuffer<"u"&&s(new ArrayBuffer);function v(z){return typeof ArrayBuffer>"u"?!1:s.working?s(z):z instanceof ArrayBuffer}e.isArrayBuffer=v;function T(z){return d(z)==="[object DataView]"}T.working=typeof ArrayBuffer<"u"&&typeof DataView<"u"&&T(new DataView(new ArrayBuffer(1),0,1));function k(z){return typeof DataView>"u"?!1:T.working?T(z):z instanceof DataView}e.isDataView=k;var Y=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:void 0;function ee(z){return d(z)==="[object SharedArrayBuffer]"}function A(z){return typeof Y>"u"?!1:(typeof ee.working>"u"&&(ee.working=ee(new Y)),ee.working?ee(z):z instanceof Y)}e.isSharedArrayBuffer=A;function E(z){return d(z)==="[object AsyncFunction]"}e.isAsyncFunction=E;function q(z){return d(z)==="[object Map Iterator]"}e.isMapIterator=q;function V(z){return d(z)==="[object Set Iterator]"}e.isSetIterator=V;function X(z){return d(z)==="[object Generator]"}e.isGeneratorObject=X;function b(z){return d(z)==="[object WebAssembly.Module]"}e.isWebAssemblyCompiledModule=b;function y(z){return O(z,m)}e.isNumberObject=y;function D(z){return O(z,M)}e.isStringObject=D;function U(z){return O(z,S)}e.isBooleanObject=U;function Z(z){return l&&O(z,R)}e.isBigIntObject=Z;function F(z){return c&&O(z,I)}e.isSymbolObject=F;function N(z){return y(z)||D(z)||U(z)||Z(z)||F(z)}e.isBoxedPrimitive=N;function H(z){return typeof Uint8Array<"u"&&(v(z)||A(z))}e.isAnyArrayBuffer=H,["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(z){Object.defineProperty(e,z,{enumerable:!1,value:function(){throw new Error(z+" is not supported in userland")}})})})(FM);var P9=function(t){return t&&typeof t=="object"&&typeof t.copy=="function"&&typeof t.fill=="function"&&typeof t.readUInt8=="function"},Sp={exports:{}};typeof Object.create=="function"?Sp.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Sp.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}};var Ye=Sp.exports;(function(e){var t=Object.getOwnPropertyDescriptors||function(k){for(var Y=Object.keys(k),ee={},A=0;A<Y.length;A++)ee[Y[A]]=Object.getOwnPropertyDescriptor(k,Y[A]);return ee},r=/%[sdj%]/g;e.format=function(T){if(!K(T)){for(var k=[],Y=0;Y<arguments.length;Y++)k.push(l(arguments[Y]));return k.join(" ")}for(var Y=1,ee=arguments,A=ee.length,E=String(T).replace(r,function(V){if(V==="%%")return"%";if(Y>=A)return V;switch(V){case"%s":return String(ee[Y++]);case"%d":return Number(ee[Y++]);case"%j":try{return JSON.stringify(ee[Y++])}catch{return"[Circular]"}default:return V}}),q=ee[Y];Y<A;q=ee[++Y])C(q)||!W(q)?E+=" "+q:E+=" "+l(q);return E},e.deprecate=function(T,k){if(typeof _e<"u"&&_e.noDeprecation===!0)return T;if(typeof _e>"u")return function(){return e.deprecate(T,k).apply(this,arguments)};var Y=!1;function ee(){if(!Y){if(_e.throwDeprecation)throw new Error(k);_e.traceDeprecation?console.trace(k):console.error(k),Y=!0}return T.apply(this,arguments)}return ee};var i={},a=/^$/;if({}.NODE_DEBUG){var n={}.NODE_DEBUG;n=n.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),a=new RegExp("^"+n+"$","i")}e.debuglog=function(T){if(T=T.toUpperCase(),!i[T])if(a.test(T)){var k=_e.pid;i[T]=function(){var Y=e.format.apply(e,arguments);console.error("%s %d: %s",T,k,Y)}}else i[T]=function(){};return i[T]};function l(T,k){var Y={seen:[],stylize:d};return arguments.length>=3&&(Y.depth=arguments[2]),arguments.length>=4&&(Y.colors=arguments[3]),P(k)?Y.showHidden=k:k&&e._extend(Y,k),te(Y.showHidden)&&(Y.showHidden=!1),te(Y.depth)&&(Y.depth=2),te(Y.colors)&&(Y.colors=!1),te(Y.customInspect)&&(Y.customInspect=!0),Y.colors&&(Y.stylize=c),M(Y,T,Y.depth)}e.inspect=l,l.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},l.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function c(T,k){var Y=l.styles[k];return Y?"\x1B["+l.colors[Y][0]+"m"+T+"\x1B["+l.colors[Y][1]+"m":T}function d(T,k){return T}function m(T){var k={};return T.forEach(function(Y,ee){k[Y]=!0}),k}function M(T,k,Y){if(T.customInspect&&k&&o(k.inspect)&&k.inspect!==e.inspect&&!(k.constructor&&k.constructor.prototype===k)){var ee=k.inspect(Y,T);return K(ee)||(ee=M(T,ee,Y)),ee}var A=S(T,k);if(A)return A;var E=Object.keys(k),q=m(E);if(T.showHidden&&(E=Object.getOwnPropertyNames(k)),_(k)&&(E.indexOf("message")>=0||E.indexOf("description")>=0))return R(k);if(E.length===0){if(o(k)){var V=k.name?": "+k.name:"";return T.stylize("[Function"+V+"]","special")}if(Q(k))return T.stylize(RegExp.prototype.toString.call(k),"regexp");if(ce(k))return T.stylize(Date.prototype.toString.call(k),"date");if(_(k))return R(k)}var X="",b=!1,y=["{","}"];if(L(k)&&(b=!0,y=["[","]"]),o(k)){var D=k.name?": "+k.name:"";X=" [Function"+D+"]"}if(Q(k)&&(X=" "+RegExp.prototype.toString.call(k)),ce(k)&&(X=" "+Date.prototype.toUTCString.call(k)),_(k)&&(X=" "+R(k)),E.length===0&&(!b||k.length==0))return y[0]+X+y[1];if(Y<0)return Q(k)?T.stylize(RegExp.prototype.toString.call(k),"regexp"):T.stylize("[Object]","special");T.seen.push(k);var U;return b?U=I(T,k,Y,q,E):U=E.map(function(Z){return O(T,k,Y,q,Z,b)}),T.seen.pop(),B(U,X,y)}function S(T,k){if(te(k))return T.stylize("undefined","undefined");if(K(k)){var Y="'"+JSON.stringify(k).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return T.stylize(Y,"string")}if($(k))return T.stylize(""+k,"number");if(P(k))return T.stylize(""+k,"boolean");if(C(k))return T.stylize("null","null")}function R(T){return"["+Error.prototype.toString.call(T)+"]"}function I(T,k,Y,ee,A){for(var E=[],q=0,V=k.length;q<V;++q)x(k,String(q))?E.push(O(T,k,Y,ee,String(q),!0)):E.push("");return A.forEach(function(X){X.match(/^\d+$/)||E.push(O(T,k,Y,ee,X,!0))}),E}function O(T,k,Y,ee,A,E){var q,V,X;if(X=Object.getOwnPropertyDescriptor(k,A)||{value:k[A]},X.get?X.set?V=T.stylize("[Getter/Setter]","special"):V=T.stylize("[Getter]","special"):X.set&&(V=T.stylize("[Setter]","special")),x(ee,A)||(q="["+A+"]"),V||(T.seen.indexOf(X.value)<0?(C(Y)?V=M(T,X.value,null):V=M(T,X.value,Y-1),V.indexOf(`
-`)>-1&&(E?V=V.split(`
-`).map(function(b){return"  "+b}).join(`
-`).slice(2):V=`
-`+V.split(`
-`).map(function(b){return"   "+b}).join(`
-`))):V=T.stylize("[Circular]","special")),te(q)){if(E&&A.match(/^\d+$/))return V;q=JSON.stringify(""+A),q.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(q=q.slice(1,-1),q=T.stylize(q,"name")):(q=q.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),q=T.stylize(q,"string"))}return q+": "+V}function B(T,k,Y){var ee=T.reduce(function(A,E){return E.indexOf(`
-`)>=0,A+E.replace(/\u001b\[\d\d?m/g,"").length+1},0);return ee>60?Y[0]+(k===""?"":k+`
- `)+" "+T.join(`,
-  `)+" "+Y[1]:Y[0]+k+" "+T.join(", ")+" "+Y[1]}e.types=FM;function L(T){return Array.isArray(T)}e.isArray=L;function P(T){return typeof T=="boolean"}e.isBoolean=P;function C(T){return T===null}e.isNull=C;function j(T){return T==null}e.isNullOrUndefined=j;function $(T){return typeof T=="number"}e.isNumber=$;function K(T){return typeof T=="string"}e.isString=K;function G(T){return typeof T=="symbol"}e.isSymbol=G;function te(T){return T===void 0}e.isUndefined=te;function Q(T){return W(T)&&u(T)==="[object RegExp]"}e.isRegExp=Q,e.types.isRegExp=Q;function W(T){return typeof T=="object"&&T!==null}e.isObject=W;function ce(T){return W(T)&&u(T)==="[object Date]"}e.isDate=ce,e.types.isDate=ce;function _(T){return W(T)&&(u(T)==="[object Error]"||T instanceof Error)}e.isError=_,e.types.isNativeError=_;function o(T){return typeof T=="function"}e.isFunction=o;function f(T){return T===null||typeof T=="boolean"||typeof T=="number"||typeof T=="string"||typeof T=="symbol"||typeof T>"u"}e.isPrimitive=f,e.isBuffer=P9;function u(T){return Object.prototype.toString.call(T)}function h(T){return T<10?"0"+T.toString(10):T.toString(10)}var p=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function w(){var T=new Date,k=[h(T.getHours()),h(T.getMinutes()),h(T.getSeconds())].join(":");return[T.getDate(),p[T.getMonth()],k].join(" ")}e.log=function(){console.log("%s - %s",w(),e.format.apply(e,arguments))},e.inherits=Ye,e._extend=function(T,k){if(!k||!W(k))return T;for(var Y=Object.keys(k),ee=Y.length;ee--;)T[Y[ee]]=k[Y[ee]];return T};function x(T,k){return Object.prototype.hasOwnProperty.call(T,k)}var g=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;e.promisify=function(k){if(typeof k!="function")throw new TypeError('The "original" argument must be of type Function');if(g&&k[g]){var Y=k[g];if(typeof Y!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(Y,g,{value:Y,enumerable:!1,writable:!1,configurable:!0}),Y}function Y(){for(var ee,A,E=new Promise(function(X,b){ee=X,A=b}),q=[],V=0;V<arguments.length;V++)q.push(arguments[V]);q.push(function(X,b){X?A(X):ee(b)});try{k.apply(this,q)}catch(X){A(X)}return E}return Object.setPrototypeOf(Y,Object.getPrototypeOf(k)),g&&Object.defineProperty(Y,g,{value:Y,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(Y,t(k))},e.promisify.custom=g;function s(T,k){if(!T){var Y=new Error("Promise was rejected with a falsy value");Y.reason=T,T=Y}return k(T)}function v(T){if(typeof T!="function")throw new TypeError('The "original" argument must be of type Function');function k(){for(var Y=[],ee=0;ee<arguments.length;ee++)Y.push(arguments[ee]);var A=Y.pop();if(typeof A!="function")throw new TypeError("The last argument must be of type Function");var E=this,q=function(){return A.apply(E,arguments)};T.apply(this,Y).then(function(V){_e.nextTick(q.bind(null,null,V))},function(V){_e.nextTick(s.bind(null,V,q))})}return Object.setPrototypeOf(k,Object.getPrototypeOf(T)),Object.defineProperties(k,t(T)),k}e.callbackify=v})(ri);var nd,ky;function C9(){if(ky)return nd;ky=1;function e(O,B){var L=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);B&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),L.push.apply(L,P)}return L}function t(O){for(var B=1;B<arguments.length;B++){var L=arguments[B]!=null?arguments[B]:{};B%2?e(Object(L),!0).forEach(function(P){r(O,P,L[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(L)):e(Object(L)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(L,P))})}return O}function r(O,B,L){return B=l(B),B in O?Object.defineProperty(O,B,{value:L,enumerable:!0,configurable:!0,writable:!0}):O[B]=L,O}function i(O,B){if(!(O instanceof B))throw new TypeError("Cannot call a class as a function")}function a(O,B){for(var L=0;L<B.length;L++){var P=B[L];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,B,L){return B&&a(O.prototype,B),L&&a(O,L),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var B=c(O,"string");return typeof B=="symbol"?B:String(B)}function c(O,B){if(typeof O!="object"||O===null)return O;var L=O[Symbol.toPrimitive];if(L!==void 0){var P=L.call(O,B||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(B==="string"?String:Number)(O)}var d=ke,m=d.Buffer,M=ri,S=M.inspect,R=S&&S.custom||"inspect";function I(O,B,L){m.prototype.copy.call(O,B,L)}return nd=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(L){var P={data:L,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(L){var P={data:L,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var L=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,L}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(L){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=L+P.data;return C}},{key:"concat",value:function(L){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(L>>>0),C=this.head,j=0;C;)I(C.data,P,j),j+=C.data.length,C=C.next;return P}},{key:"consume",value:function(L,P){var C;return L<this.head.data.length?(C=this.head.data.slice(0,L),this.head.data=this.head.data.slice(L)):L===this.head.data.length?C=this.shift():C=P?this._getString(L):this._getBuffer(L),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(L){var P=this.head,C=1,j=P.data;for(L-=j.length;P=P.next;){var $=P.data,K=L>$.length?$.length:L;if(K===$.length?j+=$:j+=$.slice(0,L),L-=K,L===0){K===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(K));break}++C}return this.length-=C,j}},{key:"_getBuffer",value:function(L){var P=m.allocUnsafe(L),C=this.head,j=1;for(C.data.copy(P),L-=C.data.length;C=C.next;){var $=C.data,K=L>$.length?$.length:L;if($.copy(P,P.length-L,0,K),L-=K,L===0){K===$.length?(++j,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(K));break}++j}return this.length-=j,P}},{key:R,value:function(L,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),nd}function B9(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,_e.nextTick(xp,this,e)):_e.nextTick(xp,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?_e.nextTick(bu,r):(r._writableState.errorEmitted=!0,_e.nextTick($y,r,n)):_e.nextTick($y,r,n):t?(_e.nextTick(bu,r),t(n)):_e.nextTick(bu,r)}),this)}function $y(e,t){xp(e,t),bu(e)}function bu(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function L9(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function xp(e,t){e.emit("error",t)}function N9(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}var t3={destroy:B9,undestroy:L9,errorOrDestroy:N9},Ta={};function k9(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var r3={};function Mi(e,t,r){r||(r=Error);function i(n,l,c){return typeof t=="string"?t:t(n,l,c)}var a=function(n){k9(l,n);function l(c,d,m){return n.call(this,i(c,d,m))||this}return l}(r);a.prototype.name=r.name,a.prototype.code=e,r3[e]=a}function Dy(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(i){return String(i)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function $9(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function D9(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function F9(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Mi("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Mi("ERR_INVALID_ARG_TYPE",function(e,t,r){var i;typeof t=="string"&&$9(t,"not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";var a;if(D9(e," argument"))a="The ".concat(e," ").concat(i," ").concat(Dy(t,"type"));else{var n=F9(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(n," ").concat(i," ").concat(Dy(t,"type"))}return a+=". Received type ".concat(typeof r),a},TypeError);Mi("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Mi("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Mi("ERR_STREAM_PREMATURE_CLOSE","Premature close");Mi("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Mi("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Mi("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Mi("ERR_STREAM_WRITE_AFTER_END","write after end");Mi("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Mi("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Mi("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Ta.codes=r3;var j9=Ta.codes.ERR_INVALID_OPT_VALUE;function U9(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function H9(e,t,r,i){var a=U9(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=i?r:"highWaterMark";throw new j9(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}var i3={getHighWaterMark:H9},Ws=q9;function q9(e,t){if(od("noDeprecation"))return e;var r=!1;function i(){if(!r){if(od("throwDeprecation"))throw new Error(t);od("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}return i}function od(e){try{if(!Ze.localStorage)return!1}catch{return!1}var t=Ze.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}var ad,Fy;function n3(){if(Fy)return ad;Fy=1,ad=Q;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){ee(E,A)}}var t;Q.WritableState=G;var r={deprecate:Ws},i=DM,a=ke.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function c(A){return a.isBuffer(A)||A instanceof n}var d=t3,m=i3,M=m.getHighWaterMark,S=Ta.codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,B=S.ERR_STREAM_CANNOT_PIPE,L=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,j=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(Q,i);function K(){}function G(A,E,q){t=t||ys(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=M(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var te;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(te=Function.prototype[Symbol.hasInstance],Object.defineProperty(Q,Symbol.hasInstance,{value:function(E){return te.call(this,E)?!0:this!==Q?!1:E&&E._writableState instanceof G}})):te=function(E){return E instanceof this};function Q(A){t=t||ys();var E=this instanceof t;if(!E&&!te.call(Q,this))return new Q(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}Q.prototype.pipe=function(){$(this,new B)};function W(A,E){var q=new C;$(A,q),_e.nextTick(E,q)}function ce(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),_e.nextTick(V,X),!1):!0}Q.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&c(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=K),V.ending?W(this,q):(b||ce(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},Q.prototype.cork=function(){this._writableState.corked++},Q.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},Q.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new j(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(Q.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function _(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(Q.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=_(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var D=E.objectMode?1:V.length;E.length+=D;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,D,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new L("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(_e.nextTick(X,V),_e.nextTick(k,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),k(A,E))}function h(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(h(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?_e.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),k(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,D=!0;q;)X[y]=q,q.isBuf||(D=!1),q=q.next,y+=1;X.allBuffers=D,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,F=q.callback,N=E.objectMode?1:U.length;if(f(A,E,!1,N,U,Z,F),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}Q.prototype._write=function(A,E,q){q(new I("_write()"))},Q.prototype._writev=null,Q.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(Q.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),k(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,_e.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function k(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,k(A,E),q&&(E.finished?_e.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function ee(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(Q.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),Q.prototype.destroy=d.destroy,Q.prototype._undestroy=d.undestroy,Q.prototype._destroy=function(A,E){E(A)},ad}var sd,jy;function ys(){if(jy)return sd;jy=1;var e=Object.keys||function(m){var M=[];for(var S in m)M.push(S);return M};sd=l;var t=a3(),r=n3();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",c)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function c(){this._writableState.ended||_e.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(M){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=M,this._writableState.destroyed=M)}}),sd}var fd={},Ep={exports:{}};/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */(function(e,t){var r=ke,i=r.Buffer;function a(l,c){for(var d in l)c[d]=l[d]}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=r:(a(r,t),t.Buffer=n);function n(l,c,d){return i(l,c,d)}n.prototype=Object.create(i.prototype),a(i,n),n.from=function(l,c,d){if(typeof l=="number")throw new TypeError("Argument must not be a number");return i(l,c,d)},n.alloc=function(l,c,d){if(typeof l!="number")throw new TypeError("Argument must be a number");var m=i(l);return c!==void 0?typeof d=="string"?m.fill(c,d):m.fill(c):m.fill(0),m},n.allocUnsafe=function(l){if(typeof l!="number")throw new TypeError("Argument must be a number");return i(l)},n.allocUnsafeSlow=function(l){if(typeof l!="number")throw new TypeError("Argument must be a number");return r.SlowBuffer(l)}})(Ep,Ep.exports);var vt=Ep.exports,Uy;function Jr(){if(Uy)return fd;Uy=1;var e=vt.Buffer,t=e.isEncoding||function(P){switch(P=""+P,P&&P.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function r(P){if(!P)return"utf8";for(var C;;)switch(P){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return P;default:if(C)return;P=(""+P).toLowerCase(),C=!0}}function i(P){var C=r(P);if(typeof C!="string"&&(e.isEncoding===t||!t(P)))throw new Error("Unknown encoding: "+P);return C||P}fd.StringDecoder=a;function a(P){this.encoding=i(P);var C;switch(this.encoding){case"utf16le":this.text=S,this.end=R,C=4;break;case"utf8":this.fillLast=d,C=4;break;case"base64":this.text=I,this.end=O,C=3;break;default:this.write=B,this.end=L;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=e.allocUnsafe(C)}a.prototype.write=function(P){if(P.length===0)return"";var C,j;if(this.lastNeed){if(C=this.fillLast(P),C===void 0)return"";j=this.lastNeed,this.lastNeed=0}else j=0;return j<P.length?C?C+this.text(P,j):this.text(P,j):C||""},a.prototype.end=M,a.prototype.text=m,a.prototype.fillLast=function(P){if(this.lastNeed<=P.length)return P.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);P.copy(this.lastChar,this.lastTotal-this.lastNeed,0,P.length),this.lastNeed-=P.length};function n(P){return P<=127?0:P>>5===6?2:P>>4===14?3:P>>3===30?4:P>>6===2?-1:-2}function l(P,C,j){var $=C.length-1;if($<j)return 0;var K=n(C[$]);return K>=0?(K>0&&(P.lastNeed=K-1),K):--$<j||K===-2?0:(K=n(C[$]),K>=0?(K>0&&(P.lastNeed=K-2),K):--$<j||K===-2?0:(K=n(C[$]),K>=0?(K>0&&(K===2?K=0:P.lastNeed=K-3),K):0))}function c(P,C,j){if((C[0]&192)!==128)return P.lastNeed=0,"�";if(P.lastNeed>1&&C.length>1){if((C[1]&192)!==128)return P.lastNeed=1,"�";if(P.lastNeed>2&&C.length>2&&(C[2]&192)!==128)return P.lastNeed=2,"�"}}function d(P){var C=this.lastTotal-this.lastNeed,j=c(this,P);if(j!==void 0)return j;if(this.lastNeed<=P.length)return P.copy(this.lastChar,C,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);P.copy(this.lastChar,C,0,P.length),this.lastNeed-=P.length}function m(P,C){var j=l(this,P,C);if(!this.lastNeed)return P.toString("utf8",C);this.lastTotal=j;var $=P.length-(j-this.lastNeed);return P.copy(this.lastChar,0,$),P.toString("utf8",C,$)}function M(P){var C=P&&P.length?this.write(P):"";return this.lastNeed?C+"�":C}function S(P,C){if((P.length-C)%2===0){var j=P.toString("utf16le",C);if(j){var $=j.charCodeAt(j.length-1);if($>=55296&&$<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=P[P.length-2],this.lastChar[1]=P[P.length-1],j.slice(0,-1)}return j}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=P[P.length-1],P.toString("utf16le",C,P.length-1)}function R(P){var C=P&&P.length?this.write(P):"";if(this.lastNeed){var j=this.lastTotal-this.lastNeed;return C+this.lastChar.toString("utf16le",0,j)}return C}function I(P,C){var j=(P.length-C)%3;return j===0?P.toString("base64",C):(this.lastNeed=3-j,this.lastTotal=3,j===1?this.lastChar[0]=P[P.length-1]:(this.lastChar[0]=P[P.length-2],this.lastChar[1]=P[P.length-1]),P.toString("base64",C,P.length-j))}function O(P){var C=P&&P.length?this.write(P):"";return this.lastNeed?C+this.lastChar.toString("base64",0,3-this.lastNeed):C}function B(P){return P.toString(this.encoding)}function L(P){return P&&P.length?this.write(P):""}return fd}var Hy=Ta.codes.ERR_STREAM_PREMATURE_CLOSE;function W9(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];e.apply(this,i)}}}function K9(){}function V9(e){return e.setHeader&&typeof e.abort=="function"}function o3(e,t,r){if(typeof t=="function")return o3(e,null,t);t||(t={}),r=W9(r||K9);var i=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||c()},l=e._writableState&&e._writableState.finished,c=function(){a=!1,l=!0,i||r.call(e)},d=e._readableState&&e._readableState.endEmitted,m=function(){i=!1,d=!0,a||r.call(e)},M=function(O){r.call(e,O)},S=function(){var O;if(i&&!d)return(!e._readableState||!e._readableState.ended)&&(O=new Hy),r.call(e,O);if(a&&!l)return(!e._writableState||!e._writableState.ended)&&(O=new Hy),r.call(e,O)},R=function(){e.req.on("finish",c)};return V9(e)?(e.on("complete",c),e.on("abort",S),e.req?R():e.on("request",R)):a&&!e._writableState&&(e.on("end",n),e.on("close",n)),e.on("end",m),e.on("finish",c),t.error!==!1&&e.on("error",M),e.on("close",S),function(){e.removeListener("complete",c),e.removeListener("abort",S),e.removeListener("request",R),e.req&&e.req.removeListener("finish",c),e.removeListener("end",n),e.removeListener("close",n),e.removeListener("finish",c),e.removeListener("end",m),e.removeListener("error",M),e.removeListener("close",S)}}var ug=o3,ld,qy;function z9(){if(qy)return ld;qy=1;var e;function t(j,$,K){return $=r($),$ in j?Object.defineProperty(j,$,{value:K,enumerable:!0,configurable:!0,writable:!0}):j[$]=K,j}function r(j){var $=i(j,"string");return typeof $=="symbol"?$:String($)}function i(j,$){if(typeof j!="object"||j===null)return j;var K=j[Symbol.toPrimitive];if(K!==void 0){var G=K.call(j,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(j)}var a=ug,n=Symbol("lastResolve"),l=Symbol("lastReject"),c=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),M=Symbol("handlePromise"),S=Symbol("stream");function R(j,$){return{value:j,done:$}}function I(j){var $=j[n];if($!==null){var K=j[S].read();K!==null&&(j[m]=null,j[n]=null,j[l]=null,$(R(K,!1)))}}function O(j){_e.nextTick(I,j)}function B(j,$){return function(K,G){j.then(function(){if($[d]){K(R(void 0,!0));return}$[M](K,G)},G)}}var L=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,K=this[c];if(K!==null)return Promise.reject(K);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(W,ce){_e.nextTick(function(){$[c]?ce($[c]):W(R(void 0,!0))})});var G=this[m],te;if(G)te=new Promise(B(G,this));else{var Q=this[S].read();if(Q!==null)return Promise.resolve(R(Q,!1));te=new Promise(this[M])}return this[m]=te,te}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(K,G){$[S].destroy(null,function(te){if(te){G(te);return}K(R(void 0,!0))})})}),e),L),C=function($){var K,G=Object.create(P,(K={},t(K,S,{value:$,writable:!0}),t(K,n,{value:null,writable:!0}),t(K,l,{value:null,writable:!0}),t(K,c,{value:null,writable:!0}),t(K,d,{value:$._readableState.endEmitted,writable:!0}),t(K,M,{value:function(Q,W){var ce=G[S].read();ce?(G[m]=null,G[n]=null,G[l]=null,Q(R(ce,!1))):(G[n]=Q,G[l]=W)},writable:!0}),K));return G[m]=null,a($,function(te){if(te&&te.code!=="ERR_STREAM_PREMATURE_CLOSE"){var Q=G[l];Q!==null&&(G[m]=null,G[n]=null,G[l]=null,Q(te)),G[c]=te;return}var W=G[n];W!==null&&(G[m]=null,G[n]=null,G[l]=null,W(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return ld=C,ld}var ud,Wy;function G9(){return Wy||(Wy=1,ud=function(){throw new Error("Readable.from is not available in the browser")}),ud}var hd,Ky;function a3(){if(Ky)return hd;Ky=1,hd=W;var e;W.ReadableState=Q,Lr.EventEmitter;var t=function(y,D){return y.listeners(D).length},r=DM,i=ke.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var c=ri,d;c&&c.debuglog?d=c.debuglog("stream"):d=function(){};var m=C9(),M=t3,S=i3,R=S.getHighWaterMark,I=Ta.codes,O=I.ERR_INVALID_ARG_TYPE,B=I.ERR_STREAM_PUSH_AFTER_EOF,L=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,j,$;Ye(W,r);var K=M.errorOrDestroy,G=["error","close","destroy","pause","resume"];function te(b,y,D){if(typeof b.prependListener=="function")return b.prependListener(y,D);!b._events||!b._events[y]?b.on(y,D):Array.isArray(b._events[y])?b._events[y].unshift(D):b._events[y]=[D,b._events[y]]}function Q(b,y,D){e=e||ys(),b=b||{},typeof D!="boolean"&&(D=y instanceof e),this.objectMode=!!b.objectMode,D&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",D),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=Jr().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function W(b){if(e=e||ys(),!(this instanceof W))return new W(b);var y=this instanceof e;this._readableState=new Q(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(W.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),W.prototype.destroy=M.destroy,W.prototype._undestroy=M.undestroy,W.prototype._destroy=function(b,y){y(b)},W.prototype.push=function(b,y){var D=this._readableState,U;return D.objectMode?U=!0:typeof b=="string"&&(y=y||D.defaultEncoding,y!==D.encoding&&(b=i.from(b,y),y=""),U=!0),ce(this,b,y,!1,U)},W.prototype.unshift=function(b){return ce(this,b,null,!0,!1)};function ce(b,y,D,U,Z){d("readableAddChunk",y);var F=b._readableState;if(y===null)F.reading=!1,p(b,F);else{var N;if(Z||(N=o(F,y)),N)K(b,N);else if(F.objectMode||y&&y.length>0)if(typeof y!="string"&&!F.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)F.endEmitted?K(b,new P):_(b,F,y,!0);else if(F.ended)K(b,new B);else{if(F.destroyed)return!1;F.reading=!1,F.decoder&&!D?(y=F.decoder.write(y),F.objectMode||y.length!==0?_(b,F,y,!1):g(b,F)):_(b,F,y,!1)}else U||(F.reading=!1,g(b,F))}return!F.ended&&(F.length<F.highWaterMark||F.length===0)}function _(b,y,D,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",D)):(y.length+=y.objectMode?1:D.length,U?y.buffer.unshift(D):y.buffer.push(D),y.needReadable&&w(b)),g(b,y)}function o(b,y){var D;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(D=new O("chunk",["string","Buffer","Uint8Array"],y)),D}W.prototype.isPaused=function(){return this._readableState.flowing===!1},W.prototype.setEncoding=function(b){C||(C=Jr().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var D=this._readableState.buffer.head,U="";D!==null;)U+=y.write(D.data),D=D.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function h(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}W.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,D=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=h(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=h(D,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),D!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var D=y.decoder.end();D&&D.length&&(y.buffer.push(D),y.length+=y.objectMode?1:D.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,_e.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,_e.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var D=y.length;if(d("maybeReadMore read 0"),b.read(0),D===y.length)break}y.readingMore=!1}W.prototype._read=function(b){K(this,new L("_read()"))},W.prototype.pipe=function(b,y){var D=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==_e.stdout&&b!==_e.stderr,F=Z?H:se;U.endEmitted?_e.nextTick(F):D.once("end",F),b.on("unpipe",N);function N(ue,de){d("onunpipe"),ue===D&&de&&de.hasUnpiped===!1&&(de.hasUnpiped=!0,re())}function H(){d("onend"),b.end()}var z=v(D);b.on("drain",z);var fe=!1;function re(){d("cleanup"),b.removeListener("close",J),b.removeListener("finish",le),b.removeListener("drain",z),b.removeListener("error",be),b.removeListener("unpipe",N),D.removeListener("end",H),D.removeListener("end",se),D.removeListener("data",ae),fe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}D.on("data",ae);function ae(ue){d("ondata");var de=b.write(ue);d("dest.write",de),de===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!fe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),D.pause())}function be(ue){d("onerror",ue),se(),b.removeListener("error",be),t(b,"error")===0&&K(b,ue)}te(b,"error",be);function J(){b.removeListener("finish",le),se()}b.once("close",J);function le(){d("onfinish"),b.removeListener("close",J),se()}b.once("finish",le);function se(){d("unpipe"),D.unpipe(b)}return b.emit("pipe",D),U.flowing||(d("pipe resume"),D.resume()),b};function v(b){return function(){var D=b._readableState;d("pipeOnDrain",D.awaitDrain),D.awaitDrain&&D.awaitDrain--,D.awaitDrain===0&&t(b,"data")&&(D.flowing=!0,A(b))}}W.prototype.unpipe=function(b){var y=this._readableState,D={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,D),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var F=0;F<Z;F++)U[F].emit("unpipe",this,{hasUnpiped:!1});return this}var N=X(y.pipes,b);return N===-1?this:(y.pipes.splice(N,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,D),this)},W.prototype.on=function(b,y){var D=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||_e.nextTick(k,this)),D},W.prototype.addListener=W.prototype.on,W.prototype.removeListener=function(b,y){var D=r.prototype.removeListener.call(this,b,y);return b==="readable"&&_e.nextTick(T,this),D},W.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&_e.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function k(b){d("readable nexttick read 0"),b.read(0)}W.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,_e.nextTick(ee,b,y))}function ee(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}W.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}W.prototype.wrap=function(b){var y=this,D=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),D.decoder&&!D.ended){var N=D.decoder.end();N&&N.length&&y.push(N)}y.push(null)}),b.on("data",function(N){if(d("wrapped data"),D.decoder&&(N=D.decoder.write(N)),!(D.objectMode&&N==null)&&!(!D.objectMode&&(!N||!N.length))){var H=y.push(N);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var F=0;F<G.length;F++)b.on(G[F],this.emit.bind(this,G[F]));return this._read=function(N){d("wrapped _read",N),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(W.prototype[Symbol.asyncIterator]=function(){return j===void 0&&(j=z9()),j(this)}),Object.defineProperty(W.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(W.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(W.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),W._fromList=E,Object.defineProperty(W.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var D;return y.objectMode?D=y.buffer.shift():!b||b>=y.length?(y.decoder?D=y.buffer.join(""):y.buffer.length===1?D=y.buffer.first():D=y.buffer.concat(y.length),y.buffer.clear()):D=y.buffer.consume(b,y.decoder),D}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,_e.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var D=y._writableState;(!D||D.autoDestroy&&D.finished)&&y.destroy()}}typeof Symbol=="function"&&(W.from=function(b,y){return $===void 0&&($=G9()),$(W,b,y)});function X(b,y){for(var D=0,U=b.length;D<U;D++)if(b[D]===y)return D;return-1}return hd}var s3=Vn,jh=Ta.codes,Y9=jh.ERR_METHOD_NOT_IMPLEMENTED,Z9=jh.ERR_MULTIPLE_CALLBACK,X9=jh.ERR_TRANSFORM_ALREADY_TRANSFORMING,J9=jh.ERR_TRANSFORM_WITH_LENGTH_0,Uh=ys();Ye(Vn,Uh);function Q9(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new Z9);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function Vn(e){if(!(this instanceof Vn))return new Vn(e);Uh.call(this,e),this._transformState={afterTransform:Q9.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",eT)}function eT(){var e=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(t,r){Vy(e,t,r)}):Vy(this,null,null)}Vn.prototype.push=function(e,t){return this._transformState.needTransform=!1,Uh.prototype.push.call(this,e,t)};Vn.prototype._transform=function(e,t,r){r(new Y9("_transform()"))};Vn.prototype._write=function(e,t,r){var i=this._transformState;if(i.writecb=r,i.writechunk=e,i.writeencoding=t,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};Vn.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};Vn.prototype._destroy=function(e,t){Uh.prototype._destroy.call(this,e,function(r){t(r)})};function Vy(e,t,r){if(t)return e.emit("error",t);if(r!=null&&e.push(r),e._writableState.length)throw new J9;if(e._transformState.transforming)throw new X9;return e.push(null)}var tT=tl,f3=s3;Ye(tl,f3);function tl(e){if(!(this instanceof tl))return new tl(e);f3.call(this,e)}tl.prototype._transform=function(e,t,r){r(null,e)};var cd;function rT(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var l3=Ta.codes,iT=l3.ERR_MISSING_ARGS,nT=l3.ERR_STREAM_DESTROYED;function zy(e){if(e)throw e}function oT(e){return e.setHeader&&typeof e.abort=="function"}function aT(e,t,r,i){i=rT(i);var a=!1;e.on("close",function(){a=!0}),cd===void 0&&(cd=ug),cd(e,{readable:t,writable:r},function(l){if(l)return i(l);a=!0,i()});var n=!1;return function(l){if(!a&&!n){if(n=!0,oT(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();i(l||new nT("pipe"))}}}function Gy(e){e()}function sT(e,t){return e.pipe(t)}function fT(e){return!e.length||typeof e[e.length-1]!="function"?zy:e.pop()}function lT(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=fT(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new iT("streams");var a,n=t.map(function(l,c){var d=c<t.length-1,m=c>0;return aT(l,d,m,function(M){a||(a=M),M&&n.forEach(Gy),!d&&(n.forEach(Gy),i(a))})});return t.reduce(sT)}var uT=lT;(function(e,t){t=e.exports=a3(),t.Stream=t,t.Readable=t,t.Writable=n3(),t.Duplex=ys(),t.Transform=s3,t.PassThrough=tT,t.finished=ug,t.pipeline=uT})(gp,gp.exports);var bl=gp.exports;const hT=ig,cT=bl.Readable,dT={objectMode:!0},pT={clean:!0};function Co(e){if(!(this instanceof Co))return new Co(e);this.options=e||{},this.options=hT(pT,e),this._inflights=new Map}Co.prototype.put=function(e,t){return this._inflights.set(e.messageId,e),t&&t(),this};Co.prototype.createStream=function(){const e=new cT(dT),t=[];let r=!1,i=0;return this._inflights.forEach(function(a,n){t.push(a)}),e._read=function(){!r&&i<t.length?this.push(t[i++]):this.push(null)},e.destroy=function(){if(r)return;const a=this;r=!0,setTimeout(function(){a.emit("close")},0)},e};Co.prototype.del=function(e,t){return e=this._inflights.get(e.messageId),e?(this._inflights.delete(e.messageId),t(null,e)):t&&t(new Error("missing packet")),this};Co.prototype.get=function(e,t){return e=this._inflights.get(e.messageId),e?t(null,e):t&&t(new Error("missing packet")),this};Co.prototype.close=function(e){this.options.clean&&(this._inflights=null),e&&e()};var u3=Co;function bs(e){if(!(this instanceof bs))return new bs(e);this.aliasToTopic={},this.max=e}bs.prototype.put=function(e,t){return t===0||t>this.max?!1:(this.aliasToTopic[t]=e,this.length=Object.keys(this.aliasToTopic).length,!0)};bs.prototype.getTopicByAlias=function(e){return this.aliasToTopic[e]};bs.prototype.clear=function(){this.aliasToTopic={}};var vT=bs,dd,Yy;function gT(){return Yy||(Yy=1,dd=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}),dd}var mT=Nt;Nt.Node=ba;Nt.create=Nt;function Nt(e){var t=this;if(t instanceof Nt||(t=new Nt),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(a){t.push(a)});else if(arguments.length>0)for(var r=0,i=arguments.length;r<i;r++)t.push(arguments[r]);return t}Nt.prototype.removeNode=function(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");var t=e.next,r=e.prev;return t&&(t.prev=r),r&&(r.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=r),e.list.length--,e.next=null,e.prev=null,e.list=null,t};Nt.prototype.unshiftNode=function(e){if(e!==this.head){e.list&&e.list.removeNode(e);var t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}};Nt.prototype.pushNode=function(e){if(e!==this.tail){e.list&&e.list.removeNode(e);var t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}};Nt.prototype.push=function(){for(var e=0,t=arguments.length;e<t;e++)bT(this,arguments[e]);return this.length};Nt.prototype.unshift=function(){for(var e=0,t=arguments.length;e<t;e++)wT(this,arguments[e]);return this.length};Nt.prototype.pop=function(){if(this.tail){var e=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,e}};Nt.prototype.shift=function(){if(this.head){var e=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,e}};Nt.prototype.forEach=function(e,t){t=t||this;for(var r=this.head,i=0;r!==null;i++)e.call(t,r.value,i,this),r=r.next};Nt.prototype.forEachReverse=function(e,t){t=t||this;for(var r=this.tail,i=this.length-1;r!==null;i--)e.call(t,r.value,i,this),r=r.prev};Nt.prototype.get=function(e){for(var t=0,r=this.head;r!==null&&t<e;t++)r=r.next;if(t===e&&r!==null)return r.value};Nt.prototype.getReverse=function(e){for(var t=0,r=this.tail;r!==null&&t<e;t++)r=r.prev;if(t===e&&r!==null)return r.value};Nt.prototype.map=function(e,t){t=t||this;for(var r=new Nt,i=this.head;i!==null;)r.push(e.call(t,i.value,this)),i=i.next;return r};Nt.prototype.mapReverse=function(e,t){t=t||this;for(var r=new Nt,i=this.tail;i!==null;)r.push(e.call(t,i.value,this)),i=i.prev;return r};Nt.prototype.reduce=function(e,t){var r,i=this.head;if(arguments.length>1)r=t;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;i!==null;a++)r=e(r,i.value,a),i=i.next;return r};Nt.prototype.reduceReverse=function(e,t){var r,i=this.tail;if(arguments.length>1)r=t;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;i!==null;a--)r=e(r,i.value,a),i=i.prev;return r};Nt.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};Nt.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};Nt.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new Nt;if(t<e||t<0)return r;e<0&&(e=0),t>this.length&&(t=this.length);for(var i=0,a=this.head;a!==null&&i<e;i++)a=a.next;for(;a!==null&&i<t;i++,a=a.next)r.push(a.value);return r};Nt.prototype.sliceReverse=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new Nt;if(t<e||t<0)return r;e<0&&(e=0),t>this.length&&(t=this.length);for(var i=this.length,a=this.tail;a!==null&&i>t;i--)a=a.prev;for(;a!==null&&i>e;i--,a=a.prev)r.push(a.value);return r};Nt.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,a=this.head;a!==null&&i<e;i++)a=a.next;for(var n=[],i=0;a&&i<t;i++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var i=0;i<r.length;i++)a=yT(this,a,r[i]);return n};Nt.prototype.reverse=function(){for(var e=this.head,t=this.tail,r=e;r!==null;r=r.prev){var i=r.prev;r.prev=r.next,r.next=i}return this.head=t,this.tail=e,this};function yT(e,t,r){var i=t===e.head?new ba(r,null,t,e):new ba(r,t,t.next,e);return i.next===null&&(e.tail=i),i.prev===null&&(e.head=i),e.length++,i}function bT(e,t){e.tail=new ba(t,e.tail,null,e),e.head||(e.head=e.tail),e.length++}function wT(e,t){e.head=new ba(t,null,e.head,e),e.tail||(e.tail=e.head),e.length++}function ba(e,t,r,i){if(!(this instanceof ba))return new ba(e,t,r,i);this.list=i,this.value=e,t?(t.next=this,this.prev=t):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{gT()(Nt)}catch{}const _T=mT,Jo=Symbol("max"),Ln=Symbol("length"),Ha=Symbol("lengthCalculator"),Uf=Symbol("allowStale"),ta=Symbol("maxAge"),Cn=Symbol("dispose"),Zy=Symbol("noDisposeOnSet"),fr=Symbol("lruList"),Ni=Symbol("cache"),h3=Symbol("updateAgeOnGet"),pd=()=>1;class MT{constructor(t){if(typeof t=="number"&&(t={max:t}),t||(t={}),t.max&&(typeof t.max!="number"||t.max<0))throw new TypeError("max must be a non-negative number");this[Jo]=t.max||1/0;const r=t.length||pd;if(this[Ha]=typeof r!="function"?pd:r,this[Uf]=t.stale||!1,t.maxAge&&typeof t.maxAge!="number")throw new TypeError("maxAge must be a number");this[ta]=t.maxAge||0,this[Cn]=t.dispose,this[Zy]=t.noDisposeOnSet||!1,this[h3]=t.updateAgeOnGet||!1,this.reset()}set max(t){if(typeof t!="number"||t<0)throw new TypeError("max must be a non-negative number");this[Jo]=t||1/0,sf(this)}get max(){return this[Jo]}set allowStale(t){this[Uf]=!!t}get allowStale(){return this[Uf]}set maxAge(t){if(typeof t!="number")throw new TypeError("maxAge must be a non-negative number");this[ta]=t,sf(this)}get maxAge(){return this[ta]}set lengthCalculator(t){typeof t!="function"&&(t=pd),t!==this[Ha]&&(this[Ha]=t,this[Ln]=0,this[fr].forEach(r=>{r.length=this[Ha](r.value,r.key),this[Ln]+=r.length})),sf(this)}get lengthCalculator(){return this[Ha]}get length(){return this[Ln]}get itemCount(){return this[fr].length}rforEach(t,r){r=r||this;for(let i=this[fr].tail;i!==null;){const a=i.prev;Xy(this,t,i,r),i=a}}forEach(t,r){r=r||this;for(let i=this[fr].head;i!==null;){const a=i.next;Xy(this,t,i,r),i=a}}keys(){return this[fr].toArray().map(t=>t.key)}values(){return this[fr].toArray().map(t=>t.value)}reset(){this[Cn]&&this[fr]&&this[fr].length&&this[fr].forEach(t=>this[Cn](t.key,t.value)),this[Ni]=new Map,this[fr]=new _T,this[Ln]=0}dump(){return this[fr].map(t=>Qu(this,t)?!1:{k:t.key,v:t.value,e:t.now+(t.maxAge||0)}).toArray().filter(t=>t)}dumpLru(){return this[fr]}set(t,r,i){if(i=i||this[ta],i&&typeof i!="number")throw new TypeError("maxAge must be a number");const a=i?Date.now():0,n=this[Ha](r,t);if(this[Ni].has(t)){if(n>this[Jo])return as(this,this[Ni].get(t)),!1;const d=this[Ni].get(t).value;return this[Cn]&&(this[Zy]||this[Cn](t,d.value)),d.now=a,d.maxAge=i,d.value=r,this[Ln]+=n-d.length,d.length=n,this.get(t),sf(this),!0}const l=new ST(t,r,n,a,i);return l.length>this[Jo]?(this[Cn]&&this[Cn](t,r),!1):(this[Ln]+=l.length,this[fr].unshift(l),this[Ni].set(t,this[fr].head),sf(this),!0)}has(t){if(!this[Ni].has(t))return!1;const r=this[Ni].get(t).value;return!Qu(this,r)}get(t){return vd(this,t,!0)}peek(t){return vd(this,t,!1)}pop(){const t=this[fr].tail;return t?(as(this,t),t.value):null}del(t){as(this,this[Ni].get(t))}load(t){this.reset();const r=Date.now();for(let i=t.length-1;i>=0;i--){const a=t[i],n=a.e||0;if(n===0)this.set(a.k,a.v);else{const l=n-r;l>0&&this.set(a.k,a.v,l)}}}prune(){this[Ni].forEach((t,r)=>vd(this,r,!1))}}const vd=(e,t,r)=>{const i=e[Ni].get(t);if(i){const a=i.value;if(Qu(e,a)){if(as(e,i),!e[Uf])return}else r&&(e[h3]&&(i.value.now=Date.now()),e[fr].unshiftNode(i));return a.value}},Qu=(e,t)=>{if(!t||!t.maxAge&&!e[ta])return!1;const r=Date.now()-t.now;return t.maxAge?r>t.maxAge:e[ta]&&r>e[ta]},sf=e=>{if(e[Ln]>e[Jo])for(let t=e[fr].tail;e[Ln]>e[Jo]&&t!==null;){const r=t.prev;as(e,t),t=r}},as=(e,t)=>{if(t){const r=t.value;e[Cn]&&e[Cn](r.key,r.value),e[Ln]-=r.length,e[Ni].delete(r.key),e[fr].removeNode(t)}};class ST{constructor(t,r,i,a,n){this.key=t,this.value=r,this.length=i,this.now=a,this.maxAge=n||0}}const Xy=(e,t,r,i)=>{let a=r.value;Qu(e,a)&&(as(e,r),e[Uf]||(a=void 0)),a&&t.call(i,a.value,a.key,e)};var xT=MT,c3={},ET=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),Hh=function(){function e(t){t===void 0&&(t=0),this.iteratorType=t}return e.prototype.equals=function(t){return this.o===t.o},e}(),qh=function(){function e(){this.M=0}return Object.defineProperty(e.prototype,"length",{get:function(){return this.M},enumerable:!1,configurable:!0}),e.prototype.size=function(){return this.M},e.prototype.empty=function(){return this.M===0},e}(),hg=function(e){ET(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(qh),RT=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),AT=function(e){RT(t,e);function t(r){r===void 0&&(r=[]);var i=e.call(this)||this;i.nt=[];var a=i;return r.forEach(function(n){a.push(n)}),i}return t.prototype.clear=function(){this.M=0,this.nt=[]},t.prototype.push=function(r){return this.nt.push(r),this.M+=1,this.M},t.prototype.pop=function(){if(this.M!==0)return this.M-=1,this.nt.pop()},t.prototype.top=function(){return this.nt[this.M-1]},t}(qh);const TT=AT;var OT=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),IT=function(e){OT(t,e);function t(r){r===void 0&&(r=[]);var i=e.call(this)||this;i.A=0,i.tt=[];var a=i;return r.forEach(function(n){a.push(n)}),i}return t.prototype.clear=function(){this.tt=[],this.M=this.A=0},t.prototype.push=function(r){var i=this.tt.length;if(this.A/i>.5&&this.A+this.M>=i&&i>4096){for(var a=this.M,n=0;n<a;++n)this.tt[n]=this.tt[this.A+n];this.A=0,this.tt[this.M]=r}else this.tt[this.A+this.M]=r;return++this.M},t.prototype.pop=function(){if(this.M!==0){var r=this.tt[this.A++];return this.M-=1,r}},t.prototype.front=function(){if(this.M!==0)return this.tt[this.A]},t}(qh);const PT=IT;var CT=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),Jy=globalThis&&globalThis.q||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var i=r.call(e),a,n=[],l;try{for(;(t===void 0||t-- >0)&&!(a=i.next()).done;)n.push(a.value)}catch(c){l={error:c}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(l)throw l.error}}return n},Qy=globalThis&&globalThis.D||function(e,t,r){if(r||arguments.length===2)for(var i=0,a=t.length,n;i<a;i++)(n||!(i in t))&&(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))},BT=function(e){CT(t,e);function t(r,i,a){r===void 0&&(r=[]),i===void 0&&(i=function(m,M){return m>M?-1:m<M?1:0}),a===void 0&&(a=!0);var n=e.call(this)||this;if(n.$=i,Array.isArray(r))n.ii=a?Qy([],Jy(r),!1):r;else{n.ii=[];var l=n;r.forEach(function(m){l.ii.push(m)})}n.M=n.ii.length;for(var c=n.M>>1,d=n.M-1>>1;d>=0;--d)n.ri(d,c);return n}return t.prototype.ti=function(r){for(var i=this.ii[r];r>0;){var a=r-1>>1,n=this.ii[a];if(this.$(n,i)<=0)break;this.ii[r]=n,r=a}this.ii[r]=i},t.prototype.ri=function(r,i){for(var a=this.ii[r];r<i;){var n=r<<1|1,l=n+1,c=this.ii[n];if(l<this.M&&this.$(c,this.ii[l])>0&&(n=l,c=this.ii[l]),this.$(c,a)>=0)break;this.ii[r]=c,r=n}this.ii[r]=a},t.prototype.clear=function(){this.M=0,this.ii.length=0},t.prototype.push=function(r){this.ii.push(r),this.ti(this.M),this.M+=1},t.prototype.pop=function(){if(this.M!==0){var r=this.ii[0],i=this.ii.pop();return this.M-=1,this.M&&(this.ii[0]=i,this.ri(0,this.M>>1)),r}},t.prototype.top=function(){return this.ii[0]},t.prototype.find=function(r){return this.ii.indexOf(r)>=0},t.prototype.remove=function(r){var i=this.ii.indexOf(r);return i<0?!1:(i===0?this.pop():i===this.M-1?(this.ii.pop(),this.M-=1):(this.ii.splice(i,1,this.ii.pop()),this.M-=1,this.ti(i),this.ri(i,this.M>>1)),!0)},t.prototype.updateItem=function(r){var i=this.ii.indexOf(r);return i<0?!1:(this.ti(i),this.ri(i,this.M>>1),!0)},t.prototype.toArray=function(){return Qy([],Jy(this.ii),!1)},t}(qh);const LT=BT;var NT=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),kT=function(e){NT(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(hg);const cg=kT;function zt(){throw new RangeError("Iterator access denied!")}var $T=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),d3=function(e){$T(t,e);function t(r,i){var a=e.call(this,i)||this;return a.o=r,a.iteratorType===0?(a.pre=function(){return this.o===0&&zt(),this.o-=1,this},a.next=function(){return this.o===this.container.size()&&zt(),this.o+=1,this}):(a.pre=function(){return this.o===this.container.size()-1&&zt(),this.o+=1,this},a.next=function(){return this.o===-1&&zt(),this.o-=1,this}),a}return Object.defineProperty(t.prototype,"pointer",{get:function(){return this.container.getElementByPos(this.o)},set:function(r){this.container.setElementByPos(this.o,r)},enumerable:!1,configurable:!0}),t}(Hh),p3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),DT=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(m){return function(M){return d([m,M])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(M){m=[6,M],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},e1=globalThis&&globalThis.q||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var i=r.call(e),a,n=[],l;try{for(;(t===void 0||t-- >0)&&!(a=i.next()).done;)n.push(a.value)}catch(c){l={error:c}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(l)throw l.error}}return n},t1=globalThis&&globalThis.D||function(e,t,r){if(r||arguments.length===2)for(var i=0,a=t.length,n;i<a;i++)(n||!(i in t))&&(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))},FT=globalThis&&globalThis.V||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},ff=function(e){p3(t,e);function t(r,i,a){var n=e.call(this,r,a)||this;return n.container=i,n}return t.prototype.copy=function(){return new t(this.o,this.container,this.iteratorType)},t}(d3),jT=function(e){p3(t,e);function t(r,i){r===void 0&&(r=[]),i===void 0&&(i=!0);var a=e.call(this)||this;if(Array.isArray(r))a.J=i?t1([],e1(r),!1):r,a.M=r.length;else{a.J=[];var n=a;r.forEach(function(l){n.pushBack(l)})}return a}return t.prototype.clear=function(){this.M=0,this.J.length=0},t.prototype.begin=function(){return new ff(0,this)},t.prototype.end=function(){return new ff(this.M,this)},t.prototype.rBegin=function(){return new ff(this.M-1,this,1)},t.prototype.rEnd=function(){return new ff(-1,this,1)},t.prototype.front=function(){return this.J[0]},t.prototype.back=function(){return this.J[this.M-1]},t.prototype.getElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;return this.J[r]},t.prototype.eraseElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;return this.J.splice(r,1),this.M-=1,this.M},t.prototype.eraseElementByValue=function(r){for(var i=0,a=0;a<this.M;++a)this.J[a]!==r&&(this.J[i++]=this.J[a]);return this.M=this.J.length=i,this.M},t.prototype.eraseElementByIterator=function(r){var i=r.o;return r=r.next(),this.eraseElementByPos(i),r},t.prototype.pushBack=function(r){return this.J.push(r),this.M+=1,this.M},t.prototype.popBack=function(){if(this.M!==0)return this.M-=1,this.J.pop()},t.prototype.setElementByPos=function(r,i){if(r<0||r>this.M-1)throw new RangeError;this.J[r]=i},t.prototype.insert=function(r,i,a){var n;if(a===void 0&&(a=1),r<0||r>this.M)throw new RangeError;return(n=this.J).splice.apply(n,t1([r,0],e1(new Array(a).fill(i)),!1)),this.M+=a,this.M},t.prototype.find=function(r){for(var i=0;i<this.M;++i)if(this.J[i]===r)return new ff(i,this);return this.end()},t.prototype.reverse=function(){this.J.reverse()},t.prototype.unique=function(){for(var r=1,i=1;i<this.M;++i)this.J[i]!==this.J[i-1]&&(this.J[r++]=this.J[i]);return this.M=this.J.length=r,this.M},t.prototype.sort=function(r){this.J.sort(r)},t.prototype.forEach=function(r){for(var i=0;i<this.M;++i)r(this.J[i],i,this)},t.prototype[Symbol.iterator]=function(){return(function(){return DT(this,function(r){switch(r.label){case 0:return[5,FT(this.J)];case 1:return r.sent(),[2]}})}).bind(this)()},t}(cg);const UT=jT;var v3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),HT=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(m){return function(M){return d([m,M])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(M){m=[6,M],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},lf=function(e){v3(t,e);function t(r,i,a,n){var l=e.call(this,n)||this;return l.o=r,l.h=i,l.container=a,l.iteratorType===0?(l.pre=function(){return this.o.L===this.h&&zt(),this.o=this.o.L,this},l.next=function(){return this.o===this.h&&zt(),this.o=this.o.m,this}):(l.pre=function(){return this.o.m===this.h&&zt(),this.o=this.o.m,this},l.next=function(){return this.o===this.h&&zt(),this.o=this.o.L,this}),l}return Object.defineProperty(t.prototype,"pointer",{get:function(){return this.o===this.h&&zt(),this.o.p},set:function(r){this.o===this.h&&zt(),this.o.p=r},enumerable:!1,configurable:!0}),t.prototype.copy=function(){return new t(this.o,this.h,this.container,this.iteratorType)},t}(Hh),qT=function(e){v3(t,e);function t(r){r===void 0&&(r=[]);var i=e.call(this)||this;i.h={},i.H=i.l=i.h.L=i.h.m=i.h;var a=i;return r.forEach(function(n){a.pushBack(n)}),i}return t.prototype.G=function(r){var i=r.L,a=r.m;i.m=a,a.L=i,r===this.H&&(this.H=a),r===this.l&&(this.l=i),this.M-=1},t.prototype.F=function(r,i){var a=i.m,n={p:r,L:i,m:a};i.m=n,a.L=n,i===this.h&&(this.H=n),a===this.h&&(this.l=n),this.M+=1},t.prototype.clear=function(){this.M=0,this.H=this.l=this.h.L=this.h.m=this.h},t.prototype.begin=function(){return new lf(this.H,this.h,this)},t.prototype.end=function(){return new lf(this.h,this.h,this)},t.prototype.rBegin=function(){return new lf(this.l,this.h,this,1)},t.prototype.rEnd=function(){return new lf(this.h,this.h,this,1)},t.prototype.front=function(){return this.H.p},t.prototype.back=function(){return this.l.p},t.prototype.getElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;for(var i=this.H;r--;)i=i.m;return i.p},t.prototype.eraseElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;for(var i=this.H;r--;)i=i.m;return this.G(i),this.M},t.prototype.eraseElementByValue=function(r){for(var i=this.H;i!==this.h;)i.p===r&&this.G(i),i=i.m;return this.M},t.prototype.eraseElementByIterator=function(r){var i=r.o;return i===this.h&&zt(),r=r.next(),this.G(i),r},t.prototype.pushBack=function(r){return this.F(r,this.l),this.M},t.prototype.popBack=function(){if(this.M!==0){var r=this.l.p;return this.G(this.l),r}},t.prototype.pushFront=function(r){return this.F(r,this.h),this.M},t.prototype.popFront=function(){if(this.M!==0){var r=this.H.p;return this.G(this.H),r}},t.prototype.setElementByPos=function(r,i){if(r<0||r>this.M-1)throw new RangeError;for(var a=this.H;r--;)a=a.m;a.p=i},t.prototype.insert=function(r,i,a){if(a===void 0&&(a=1),r<0||r>this.M)throw new RangeError;if(a<=0)return this.M;if(r===0)for(;a--;)this.pushFront(i);else if(r===this.M)for(;a--;)this.pushBack(i);else{for(var n=this.H,l=1;l<r;++l)n=n.m;var c=n.m;for(this.M+=a;a--;)n.m={p:i,L:n},n.m.L=n,n=n.m;n.m=c,c.L=n}return this.M},t.prototype.find=function(r){for(var i=this.H;i!==this.h;){if(i.p===r)return new lf(i,this.h,this);i=i.m}return this.end()},t.prototype.reverse=function(){if(!(this.M<=1))for(var r=this.H,i=this.l,a=0;a<<1<this.M;){var n=r.p;r.p=i.p,i.p=n,r=r.m,i=i.L,a+=1}},t.prototype.unique=function(){if(this.M<=1)return this.M;for(var r=this.H;r!==this.h;){for(var i=r;i.m!==this.h&&i.p===i.m.p;)i=i.m,this.M-=1;r.m=i.m,r.m.L=r,r=r.m}return this.M},t.prototype.sort=function(r){if(!(this.M<=1)){var i=[];this.forEach(function(n){i.push(n)}),i.sort(r);var a=this.H;i.forEach(function(n){a.p=n,a=a.m})}},t.prototype.merge=function(r){var i=this;if(this.M===0)r.forEach(function(n){i.pushBack(n)});else{var a=this.H;r.forEach(function(n){for(;a!==i.h&&a.p<=n;)a=a.m;i.F(n,a.L)})}return this.M},t.prototype.forEach=function(r){for(var i=this.H,a=0;i!==this.h;)r(i.p,a++,this),i=i.m},t.prototype[Symbol.iterator]=function(){return(function(){var r;return HT(this,function(i){switch(i.label){case 0:if(this.M===0)return[2];r=this.H,i.label=1;case 1:return r===this.h?[3,3]:[4,r.p];case 2:return i.sent(),r=r.m,[3,1];case 3:return[2]}})}).bind(this)()},t}(cg);const WT=qT;var g3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),KT=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(m){return function(M){return d([m,M])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(M){m=[6,M],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},VT=globalThis&&globalThis.q||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var i=r.call(e),a,n=[],l;try{for(;(t===void 0||t-- >0)&&!(a=i.next()).done;)n.push(a.value)}catch(c){l={error:c}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(l)throw l.error}}return n},zT=globalThis&&globalThis.D||function(e,t,r){if(r||arguments.length===2)for(var i=0,a=t.length,n;i<a;i++)(n||!(i in t))&&(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))},uf=function(e){g3(t,e);function t(r,i,a){var n=e.call(this,r,a)||this;return n.container=i,n}return t.prototype.copy=function(){return new t(this.o,this.container,this.iteratorType)},t}(d3),GT=function(e){g3(t,e);function t(r,i){r===void 0&&(r=[]),i===void 0&&(i=4096);var a=e.call(this)||this;a.A=0,a.S=0,a.R=0,a.k=0,a.C=0,a.j=[];var n=function(){if(typeof r.length=="number")return r.length;if(typeof r.size=="number")return r.size;if(typeof r.size=="function")return r.size();throw new TypeError("Cannot get the length or size of the container")}();a.B=i,a.C=Math.max(Math.ceil(n/a.B),1);for(var l=0;l<a.C;++l)a.j.push(new Array(a.B));var c=Math.ceil(n/a.B);a.A=a.R=(a.C>>1)-(c>>1),a.S=a.k=a.B-n%a.B>>1;var d=a;return r.forEach(function(m){d.pushBack(m)}),a}return t.prototype.O=function(){for(var r=[],i=Math.max(this.C>>1,1),a=0;a<i;++a)r[a]=new Array(this.B);for(var a=this.A;a<this.C;++a)r[r.length]=this.j[a];for(var a=0;a<this.R;++a)r[r.length]=this.j[a];r[r.length]=zT([],VT(this.j[this.R]),!1),this.A=i,this.R=r.length-1;for(var a=0;a<i;++a)r[r.length]=new Array(this.B);this.j=r,this.C=r.length},t.prototype.T=function(r){var i=this.S+r+1,a=i%this.B,n=a-1,l=this.A+(i-a)/this.B;return a===0&&(l-=1),l%=this.C,n<0&&(n+=this.B),{curNodeBucketIndex:l,curNodePointerIndex:n}},t.prototype.clear=function(){this.j=[new Array(this.B)],this.C=1,this.A=this.R=this.M=0,this.S=this.k=this.B>>1},t.prototype.begin=function(){return new uf(0,this)},t.prototype.end=function(){return new uf(this.M,this)},t.prototype.rBegin=function(){return new uf(this.M-1,this,1)},t.prototype.rEnd=function(){return new uf(-1,this,1)},t.prototype.front=function(){if(this.M!==0)return this.j[this.A][this.S]},t.prototype.back=function(){if(this.M!==0)return this.j[this.R][this.k]},t.prototype.pushBack=function(r){return this.M&&(this.k<this.B-1?this.k+=1:this.R<this.C-1?(this.R+=1,this.k=0):(this.R=0,this.k=0),this.R===this.A&&this.k===this.S&&this.O()),this.M+=1,this.j[this.R][this.k]=r,this.M},t.prototype.popBack=function(){if(this.M!==0){var r=this.j[this.R][this.k];return this.M!==1&&(this.k>0?this.k-=1:this.R>0?(this.R-=1,this.k=this.B-1):(this.R=this.C-1,this.k=this.B-1)),this.M-=1,r}},t.prototype.pushFront=function(r){return this.M&&(this.S>0?this.S-=1:this.A>0?(this.A-=1,this.S=this.B-1):(this.A=this.C-1,this.S=this.B-1),this.A===this.R&&this.S===this.k&&this.O()),this.M+=1,this.j[this.A][this.S]=r,this.M},t.prototype.popFront=function(){if(this.M!==0){var r=this.j[this.A][this.S];return this.M!==1&&(this.S<this.B-1?this.S+=1:this.A<this.C-1?(this.A+=1,this.S=0):(this.A=0,this.S=0)),this.M-=1,r}},t.prototype.getElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;var i=this.T(r),a=i.curNodeBucketIndex,n=i.curNodePointerIndex;return this.j[a][n]},t.prototype.setElementByPos=function(r,i){if(r<0||r>this.M-1)throw new RangeError;var a=this.T(r),n=a.curNodeBucketIndex,l=a.curNodePointerIndex;this.j[n][l]=i},t.prototype.insert=function(r,i,a){if(a===void 0&&(a=1),r<0||r>this.M)throw new RangeError;if(r===0)for(;a--;)this.pushFront(i);else if(r===this.M)for(;a--;)this.pushBack(i);else{for(var n=[],l=r;l<this.M;++l)n.push(this.getElementByPos(l));this.cut(r-1);for(var l=0;l<a;++l)this.pushBack(i);for(var l=0;l<n.length;++l)this.pushBack(n[l])}return this.M},t.prototype.cut=function(r){if(r<0)return this.clear(),0;var i=this.T(r),a=i.curNodeBucketIndex,n=i.curNodePointerIndex;return this.R=a,this.k=n,this.M=r+1,this.M},t.prototype.eraseElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;if(r===0)this.popFront();else if(r===this.M-1)this.popBack();else{for(var i=[],a=r+1;a<this.M;++a)i.push(this.getElementByPos(a));this.cut(r),this.popBack();var n=this;i.forEach(function(l){n.pushBack(l)})}return this.M},t.prototype.eraseElementByValue=function(r){if(this.M===0)return 0;for(var i=[],a=0;a<this.M;++a){var n=this.getElementByPos(a);n!==r&&i.push(n)}for(var l=i.length,a=0;a<l;++a)this.setElementByPos(a,i[a]);return this.cut(l-1)},t.prototype.eraseElementByIterator=function(r){var i=r.o;return this.eraseElementByPos(i),r=r.next(),r},t.prototype.find=function(r){for(var i=0;i<this.M;++i)if(this.getElementByPos(i)===r)return new uf(i,this);return this.end()},t.prototype.reverse=function(){for(var r=0,i=this.M-1;r<i;){var a=this.getElementByPos(r);this.setElementByPos(r,this.getElementByPos(i)),this.setElementByPos(i,a),r+=1,i-=1}},t.prototype.unique=function(){if(this.M<=1)return this.M;for(var r=1,i=this.getElementByPos(0),a=1;a<this.M;++a){var n=this.getElementByPos(a);n!==i&&(i=n,this.setElementByPos(r++,n))}for(;this.M>r;)this.popBack();return this.M},t.prototype.sort=function(r){for(var i=[],a=0;a<this.M;++a)i.push(this.getElementByPos(a));i.sort(r);for(var a=0;a<this.M;++a)this.setElementByPos(a,i[a])},t.prototype.shrinkToFit=function(){if(this.M!==0){var r=[];this.forEach(function(a){r.push(a)}),this.C=Math.max(Math.ceil(this.M/this.B),1),this.M=this.A=this.R=this.S=this.k=0,this.j=[];for(var i=0;i<this.C;++i)this.j.push(new Array(this.B));for(var i=0;i<r.length;++i)this.pushBack(r[i])}},t.prototype.forEach=function(r){for(var i=0;i<this.M;++i)r(this.getElementByPos(i),i,this)},t.prototype[Symbol.iterator]=function(){return(function(){var r;return KT(this,function(i){switch(i.label){case 0:r=0,i.label=1;case 1:return r<this.M?[4,this.getElementByPos(r)]:[3,4];case 2:i.sent(),i.label=3;case 3:return++r,[3,1];case 4:return[2]}})}).bind(this)()},t}(cg);const YT=GT;var ZT=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),m3=function(){function e(t,r){this.ee=1,this.u=void 0,this.p=void 0,this.K=void 0,this.N=void 0,this.rr=void 0,this.u=t,this.p=r}return e.prototype.L=function(){var t=this;if(t.ee===1&&t.rr.rr===t)t=t.N;else if(t.K)for(t=t.K;t.N;)t=t.N;else{for(var r=t.rr;r.K===t;)t=r,r=t.rr;t=r}return t},e.prototype.m=function(){var t=this;if(t.N){for(t=t.N;t.K;)t=t.K;return t}else{for(var r=t.rr;r.N===t;)t=r,r=t.rr;return t.N!==r?r:t}},e.prototype.ne=function(){var t=this.rr,r=this.N,i=r.K;return t.rr===this?t.rr=r:t.K===this?t.K=r:t.N=r,r.rr=t,r.K=this,this.rr=r,this.N=i,i&&(i.rr=this),r},e.prototype.te=function(){var t=this.rr,r=this.K,i=r.N;return t.rr===this?t.rr=r:t.K===this?t.K=r:t.N=r,r.rr=t,r.N=this,this.rr=r,this.K=i,i&&(i.rr=this),r},e}(),XT=function(e){ZT(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.tr=1,r}return t.prototype.ne=function(){var r=e.prototype.ne.call(this);return this.ie(),r.ie(),r},t.prototype.te=function(){var r=e.prototype.te.call(this);return this.ie(),r.ie(),r},t.prototype.ie=function(){this.tr=1,this.K&&(this.tr+=this.K.tr),this.N&&(this.tr+=this.N.tr)},t}(m3),JT=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),r1=globalThis&&globalThis.q||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var i=r.call(e),a,n=[],l;try{for(;(t===void 0||t-- >0)&&!(a=i.next()).done;)n.push(a.value)}catch(c){l={error:c}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(l)throw l.error}}return n},i1=globalThis&&globalThis.V||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},QT=function(e){JT(t,e);function t(r,i){r===void 0&&(r=function(n,l){return n<l?-1:n>l?1:0}),i===void 0&&(i=!1);var a=e.call(this)||this;return a.W=void 0,a.$=r,i?(a.re=XT,a.v=function(n,l,c){var d=this.se(n,l,c);if(d){for(var m=d.rr;m!==this.h;)m.tr+=1,m=m.rr;var M=this.fe(d);if(M){var S=M,R=S.parentNode,I=S.grandParent,O=S.curNode;R.ie(),I.ie(),O.ie()}}return this.M},a.G=function(n){for(var l=this.he(n);l!==this.h;)l.tr-=1,l=l.rr}):(a.re=m3,a.v=function(n,l,c){var d=this.se(n,l,c);return d&&this.fe(d),this.M},a.G=a.he),a.h=new a.re,a}return t.prototype.U=function(r,i){for(var a=this.h;r;){var n=this.$(r.u,i);if(n<0)r=r.N;else if(n>0)a=r,r=r.K;else return r}return a},t.prototype.X=function(r,i){for(var a=this.h;r;){var n=this.$(r.u,i);n<=0?r=r.N:(a=r,r=r.K)}return a},t.prototype.Y=function(r,i){for(var a=this.h;r;){var n=this.$(r.u,i);if(n<0)a=r,r=r.N;else if(n>0)r=r.K;else return r}return a},t.prototype.Z=function(r,i){for(var a=this.h;r;){var n=this.$(r.u,i);n<0?(a=r,r=r.N):r=r.K}return a},t.prototype.ue=function(r){for(;;){var i=r.rr;if(i===this.h)return;if(r.ee===1){r.ee=0;return}if(r===i.K){var a=i.N;if(a.ee===1)a.ee=0,i.ee=1,i===this.W?this.W=i.ne():i.ne();else if(a.N&&a.N.ee===1){a.ee=i.ee,i.ee=0,a.N.ee=0,i===this.W?this.W=i.ne():i.ne();return}else a.K&&a.K.ee===1?(a.ee=1,a.K.ee=0,a.te()):(a.ee=1,r=i)}else{var a=i.K;if(a.ee===1)a.ee=0,i.ee=1,i===this.W?this.W=i.te():i.te();else if(a.K&&a.K.ee===1){a.ee=i.ee,i.ee=0,a.K.ee=0,i===this.W?this.W=i.te():i.te();return}else a.N&&a.N.ee===1?(a.ee=1,a.N.ee=0,a.ne()):(a.ee=1,r=i)}}},t.prototype.he=function(r){var i,a;if(this.M===1)return this.clear(),this.h;for(var n=r;n.K||n.N;){if(n.N)for(n=n.N;n.K;)n=n.K;else n=n.K;i=r1([n.u,r.u],2),r.u=i[0],n.u=i[1],a=r1([n.p,r.p],2),r.p=a[0],n.p=a[1],r=n}this.h.K===n?this.h.K=n.rr:this.h.N===n&&(this.h.N=n.rr),this.ue(n);var l=n.rr;return n===l.K?l.K=void 0:l.N=void 0,this.M-=1,this.W.ee=0,l},t.prototype.ae=function(r,i){if(r===void 0)return!1;var a=this.ae(r.K,i);return a||i(r)?!0:this.ae(r.N,i)},t.prototype.fe=function(r){for(;;){var i=r.rr;if(i.ee===0)return;var a=i.rr;if(i===a.K){var n=a.N;if(n&&n.ee===1){if(n.ee=i.ee=0,a===this.W)return;a.ee=1,r=a;continue}else if(r===i.N){if(r.ee=0,r.K&&(r.K.rr=i),r.N&&(r.N.rr=a),i.N=r.K,a.K=r.N,r.K=i,r.N=a,a===this.W)this.W=r,this.h.rr=r;else{var l=a.rr;l.K===a?l.K=r:l.N=r}return r.rr=a.rr,i.rr=r,a.rr=r,a.ee=1,{parentNode:i,grandParent:a,curNode:r}}else i.ee=0,a===this.W?this.W=a.te():a.te(),a.ee=1}else{var n=a.K;if(n&&n.ee===1){if(n.ee=i.ee=0,a===this.W)return;a.ee=1,r=a;continue}else if(r===i.K){if(r.ee=0,r.K&&(r.K.rr=a),r.N&&(r.N.rr=i),a.N=r.K,i.K=r.N,r.K=a,r.N=i,a===this.W)this.W=r,this.h.rr=r;else{var l=a.rr;l.K===a?l.K=r:l.N=r}return r.rr=a.rr,i.rr=r,a.rr=r,a.ee=1,{parentNode:i,grandParent:a,curNode:r}}else i.ee=0,a===this.W?this.W=a.ne():a.ne(),a.ee=1}return}},t.prototype.se=function(r,i,a){if(this.W===void 0){this.M+=1,this.W=new this.re(r,i),this.W.ee=0,this.W.rr=this.h,this.h.rr=this.W,this.h.K=this.W,this.h.N=this.W;return}var n,l=this.h.K,c=this.$(l.u,r);if(c===0){l.p=i;return}else if(c>0)l.K=new this.re(r,i),l.K.rr=l,n=l.K,this.h.K=n;else{var d=this.h.N,m=this.$(d.u,r);if(m===0){d.p=i;return}else if(m<0)d.N=new this.re(r,i),d.N.rr=d,n=d.N,this.h.N=n;else{if(a!==void 0){var M=a.o;if(M!==this.h){var S=this.$(M.u,r);if(S===0){M.p=i;return}else if(S>0){var R=M.L(),I=this.$(R.u,r);if(I===0){R.p=i;return}else I<0&&(n=new this.re(r,i),R.N===void 0?(R.N=n,n.rr=R):(M.K=n,n.rr=M))}}}if(n===void 0)for(n=this.W;;){var O=this.$(n.u,r);if(O>0){if(n.K===void 0){n.K=new this.re(r,i),n.K.rr=n,n=n.K;break}n=n.K}else if(O<0){if(n.N===void 0){n.N=new this.re(r,i),n.N.rr=n,n=n.N;break}n=n.N}else{n.p=i;return}}}}return this.M+=1,n},t.prototype.g=function(r,i){for(;r;){var a=this.$(r.u,i);if(a<0)r=r.N;else if(a>0)r=r.K;else return r}return r||this.h},t.prototype.clear=function(){this.M=0,this.W=void 0,this.h.rr=void 0,this.h.K=this.h.N=void 0},t.prototype.updateKeyByIterator=function(r,i){var a=r.o;if(a===this.h&&zt(),this.M===1)return a.u=i,!0;if(a===this.h.K)return this.$(a.m().u,i)>0?(a.u=i,!0):!1;if(a===this.h.N)return this.$(a.L().u,i)<0?(a.u=i,!0):!1;var n=a.L().u;if(this.$(n,i)>=0)return!1;var l=a.m().u;return this.$(l,i)<=0?!1:(a.u=i,!0)},t.prototype.eraseElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;var i=0,a=this;return this.ae(this.W,function(n){return r===i?(a.G(n),!0):(i+=1,!1)}),this.M},t.prototype.eraseElementByKey=function(r){if(this.M===0)return!1;var i=this.g(this.W,r);return i===this.h?!1:(this.G(i),!0)},t.prototype.eraseElementByIterator=function(r){var i=r.o;i===this.h&&zt();var a=i.N===void 0,n=r.iteratorType===0;return n?a&&r.next():(!a||i.K===void 0)&&r.next(),this.G(i),r},t.prototype.forEach=function(r){var i,a,n=0;try{for(var l=i1(this),c=l.next();!c.done;c=l.next()){var d=c.value;r(d,n++,this)}}catch(m){i={error:m}}finally{try{c&&!c.done&&(a=l.return)&&a.call(l)}finally{if(i)throw i.error}}},t.prototype.getElementByPos=function(r){var i,a;if(r<0||r>this.M-1)throw new RangeError;var n,l=0;try{for(var c=i1(this),d=c.next();!d.done;d=c.next()){var m=d.value;if(l===r){n=m;break}l+=1}}catch(M){i={error:M}}finally{try{d&&!d.done&&(a=c.return)&&a.call(c)}finally{if(i)throw i.error}}return n},t.prototype.getHeight=function(){if(this.M===0)return 0;var r=function(i){return i?Math.max(r(i.K),r(i.N))+1:0};return r(this.W)},t}(hg);const y3=QT;var eO=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),tO=function(e){eO(t,e);function t(r,i,a){var n=e.call(this,a)||this;return n.o=r,n.h=i,n.iteratorType===0?(n.pre=function(){return this.o===this.h.K&&zt(),this.o=this.o.L(),this},n.next=function(){return this.o===this.h&&zt(),this.o=this.o.m(),this}):(n.pre=function(){return this.o===this.h.N&&zt(),this.o=this.o.m(),this},n.next=function(){return this.o===this.h&&zt(),this.o=this.o.L(),this}),n}return Object.defineProperty(t.prototype,"index",{get:function(){var r=this.o,i=this.h.rr;if(r===this.h)return i?i.tr-1:0;var a=0;for(r.K&&(a+=r.K.tr);r!==i;){var n=r.rr;r===n.N&&(a+=1,n.K&&(a+=n.K.tr)),r=n}return a},enumerable:!1,configurable:!0}),t}(Hh);const b3=tO;var w3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),rO=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(m){return function(M){return d([m,M])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(M){m=[6,M],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},n1=globalThis&&globalThis.V||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Sn=function(e){w3(t,e);function t(r,i,a,n){var l=e.call(this,r,i,n)||this;return l.container=a,l}return Object.defineProperty(t.prototype,"pointer",{get:function(){return this.o===this.h&&zt(),this.o.u},enumerable:!1,configurable:!0}),t.prototype.copy=function(){return new t(this.o,this.h,this.container,this.iteratorType)},t}(b3),iO=function(e){w3(t,e);function t(r,i,a){r===void 0&&(r=[]);var n=e.call(this,i,a)||this,l=n;return r.forEach(function(c){l.insert(c)}),n}return t.prototype.P=function(r){return rO(this,function(i){switch(i.label){case 0:return r===void 0?[2]:[5,n1(this.P(r.K))];case 1:return i.sent(),[4,r.u];case 2:return i.sent(),[5,n1(this.P(r.N))];case 3:return i.sent(),[2]}})},t.prototype.begin=function(){return new Sn(this.h.K||this.h,this.h,this)},t.prototype.end=function(){return new Sn(this.h,this.h,this)},t.prototype.rBegin=function(){return new Sn(this.h.N||this.h,this.h,this,1)},t.prototype.rEnd=function(){return new Sn(this.h,this.h,this,1)},t.prototype.front=function(){return this.h.K?this.h.K.u:void 0},t.prototype.back=function(){return this.h.N?this.h.N.u:void 0},t.prototype.insert=function(r,i){return this.v(r,void 0,i)},t.prototype.find=function(r){var i=this.g(this.W,r);return new Sn(i,this.h,this)},t.prototype.lowerBound=function(r){var i=this.U(this.W,r);return new Sn(i,this.h,this)},t.prototype.upperBound=function(r){var i=this.X(this.W,r);return new Sn(i,this.h,this)},t.prototype.reverseLowerBound=function(r){var i=this.Y(this.W,r);return new Sn(i,this.h,this)},t.prototype.reverseUpperBound=function(r){var i=this.Z(this.W,r);return new Sn(i,this.h,this)},t.prototype.union=function(r){var i=this;return r.forEach(function(a){i.insert(a)}),this.M},t.prototype[Symbol.iterator]=function(){return this.P(this.W)},t}(y3);const nO=iO;var _3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),oO=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(m){return function(M){return d([m,M])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(M){m=[6,M],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},o1=globalThis&&globalThis.V||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},xn=function(e){_3(t,e);function t(r,i,a,n){var l=e.call(this,r,i,n)||this;return l.container=a,l}return Object.defineProperty(t.prototype,"pointer",{get:function(){this.o===this.h&&zt();var r=this;return new Proxy([],{get:function(i,a){if(a==="0")return r.o.u;if(a==="1")return r.o.p},set:function(i,a,n){if(a!=="1")throw new TypeError("props must be 1");return r.o.p=n,!0}})},enumerable:!1,configurable:!0}),t.prototype.copy=function(){return new t(this.o,this.h,this.container,this.iteratorType)},t}(b3),aO=function(e){_3(t,e);function t(r,i,a){r===void 0&&(r=[]);var n=e.call(this,i,a)||this,l=n;return r.forEach(function(c){l.setElement(c[0],c[1])}),n}return t.prototype.P=function(r){return oO(this,function(i){switch(i.label){case 0:return r===void 0?[2]:[5,o1(this.P(r.K))];case 1:return i.sent(),[4,[r.u,r.p]];case 2:return i.sent(),[5,o1(this.P(r.N))];case 3:return i.sent(),[2]}})},t.prototype.begin=function(){return new xn(this.h.K||this.h,this.h,this)},t.prototype.end=function(){return new xn(this.h,this.h,this)},t.prototype.rBegin=function(){return new xn(this.h.N||this.h,this.h,this,1)},t.prototype.rEnd=function(){return new xn(this.h,this.h,this,1)},t.prototype.front=function(){if(this.M!==0){var r=this.h.K;return[r.u,r.p]}},t.prototype.back=function(){if(this.M!==0){var r=this.h.N;return[r.u,r.p]}},t.prototype.lowerBound=function(r){var i=this.U(this.W,r);return new xn(i,this.h,this)},t.prototype.upperBound=function(r){var i=this.X(this.W,r);return new xn(i,this.h,this)},t.prototype.reverseLowerBound=function(r){var i=this.Y(this.W,r);return new xn(i,this.h,this)},t.prototype.reverseUpperBound=function(r){var i=this.Z(this.W,r);return new xn(i,this.h,this)},t.prototype.setElement=function(r,i,a){return this.v(r,i,a)},t.prototype.find=function(r){var i=this.g(this.W,r);return new xn(i,this.h,this)},t.prototype.getElementByKey=function(r){var i=this.g(this.W,r);return i.p},t.prototype.union=function(r){var i=this;return r.forEach(function(a){i.setElement(a[0],a[1])}),this.M},t.prototype[Symbol.iterator]=function(){return this.P(this.W)},t}(y3);const sO=aO;function wu(e){var t=typeof e;return t==="object"&&e!==null||t==="function"}var M3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),S3=function(e){M3(t,e);function t(r,i,a){var n=e.call(this,a)||this;return n.o=r,n.h=i,n.iteratorType===0?(n.pre=function(){return this.o.L===this.h&&zt(),this.o=this.o.L,this},n.next=function(){return this.o===this.h&&zt(),this.o=this.o.m,this}):(n.pre=function(){return this.o.m===this.h&&zt(),this.o=this.o.m,this},n.next=function(){return this.o===this.h&&zt(),this.o=this.o.L,this}),n}return t}(Hh),x3=function(e){M3(t,e);function t(){var r=e.call(this)||this;return r._=[],r.I={},r.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(r.I,null),r.h={},r.h.L=r.h.m=r.H=r.l=r.h,r}return t.prototype.G=function(r){var i=r.L,a=r.m;i.m=a,a.L=i,r===this.H&&(this.H=a),r===this.l&&(this.l=i),this.M-=1},t.prototype.v=function(r,i,a){a===void 0&&(a=wu(r));var n;if(a){var l=r[this.HASH_TAG];if(l!==void 0)return this._[l].p=i,this.M;Object.defineProperty(r,this.HASH_TAG,{value:this._.length,configurable:!0}),n={u:r,p:i,L:this.l,m:this.h},this._.push(n)}else{var c=this.I[r];if(c)return c.p=i,this.M;n={u:r,p:i,L:this.l,m:this.h},this.I[r]=n}return this.M===0?(this.H=n,this.h.m=n):this.l.m=n,this.l=n,this.h.L=n,++this.M},t.prototype.g=function(r,i){if(i===void 0&&(i=wu(r)),i){var a=r[this.HASH_TAG];return a===void 0?this.h:this._[a]}else return this.I[r]||this.h},t.prototype.clear=function(){var r=this.HASH_TAG;this._.forEach(function(i){delete i.u[r]}),this._=[],this.I={},Object.setPrototypeOf(this.I,null),this.M=0,this.H=this.l=this.h.L=this.h.m=this.h},t.prototype.eraseElementByKey=function(r,i){var a;if(i===void 0&&(i=wu(r)),i){var n=r[this.HASH_TAG];if(n===void 0)return!1;delete r[this.HASH_TAG],a=this._[n],delete this._[n]}else{if(a=this.I[r],a===void 0)return!1;delete this.I[r]}return this.G(a),!0},t.prototype.eraseElementByIterator=function(r){var i=r.o;return i===this.h&&zt(),this.G(i),r.next()},t.prototype.eraseElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;for(var i=this.H;r--;)i=i.m;return this.G(i),this.M},t}(hg),E3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),fO=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(m){return function(M){return d([m,M])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(M){m=[6,M],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},hf=function(e){E3(t,e);function t(r,i,a,n){var l=e.call(this,r,i,n)||this;return l.container=a,l}return Object.defineProperty(t.prototype,"pointer",{get:function(){return this.o===this.h&&zt(),this.o.u},enumerable:!1,configurable:!0}),t.prototype.copy=function(){return new t(this.o,this.h,this.container,this.iteratorType)},t}(S3),lO=function(e){E3(t,e);function t(r){r===void 0&&(r=[]);var i=e.call(this)||this,a=i;return r.forEach(function(n){a.insert(n)}),i}return t.prototype.begin=function(){return new hf(this.H,this.h,this)},t.prototype.end=function(){return new hf(this.h,this.h,this)},t.prototype.rBegin=function(){return new hf(this.l,this.h,this,1)},t.prototype.rEnd=function(){return new hf(this.h,this.h,this,1)},t.prototype.front=function(){return this.H.u},t.prototype.back=function(){return this.l.u},t.prototype.insert=function(r,i){return this.v(r,void 0,i)},t.prototype.getElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;for(var i=this.H;r--;)i=i.m;return i.u},t.prototype.find=function(r,i){var a=this.g(r,i);return new hf(a,this.h,this)},t.prototype.forEach=function(r){for(var i=0,a=this.H;a!==this.h;)r(a.u,i++,this),a=a.m},t.prototype[Symbol.iterator]=function(){return(function(){var r;return fO(this,function(i){switch(i.label){case 0:r=this.H,i.label=1;case 1:return r===this.h?[3,3]:[4,r.u];case 2:return i.sent(),r=r.m,[3,1];case 3:return[2]}})}).bind(this)()},t}(x3);const uO=lO;var R3=globalThis&&globalThis.t||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,a){i.__proto__=a}||function(i,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(i[n]=a[n])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function i(){this.constructor=t}t.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),hO=globalThis&&globalThis.i||function(e,t){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(m){return function(M){return d([m,M])}}function d(m){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,a&&(n=m[0]&2?a.return:m[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,m[1])).done)return n;switch(a=0,n&&(m=[m[0]&2,n.value]),m[0]){case 0:case 1:n=m;break;case 4:return r.label++,{value:m[1],done:!1};case 5:r.label++,a=m[1],m=[0];continue;case 7:m=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(m[0]===6||m[0]===2)){r=0;continue}if(m[0]===3&&(!n||m[1]>n[0]&&m[1]<n[3])){r.label=m[1];break}if(m[0]===6&&r.label<n[1]){r.label=n[1],n=m;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(m);break}n[2]&&r.ops.pop(),r.trys.pop();continue}m=t.call(e,r)}catch(M){m=[6,M],a=0}finally{i=n=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},cf=function(e){R3(t,e);function t(r,i,a,n){var l=e.call(this,r,i,n)||this;return l.container=a,l}return Object.defineProperty(t.prototype,"pointer",{get:function(){this.o===this.h&&zt();var r=this;return new Proxy([],{get:function(i,a){if(a==="0")return r.o.u;if(a==="1")return r.o.p},set:function(i,a,n){if(a!=="1")throw new TypeError("props must be 1");return r.o.p=n,!0}})},enumerable:!1,configurable:!0}),t.prototype.copy=function(){return new t(this.o,this.h,this.container,this.iteratorType)},t}(S3),cO=function(e){R3(t,e);function t(r){r===void 0&&(r=[]);var i=e.call(this)||this,a=i;return r.forEach(function(n){a.setElement(n[0],n[1])}),i}return t.prototype.begin=function(){return new cf(this.H,this.h,this)},t.prototype.end=function(){return new cf(this.h,this.h,this)},t.prototype.rBegin=function(){return new cf(this.l,this.h,this,1)},t.prototype.rEnd=function(){return new cf(this.h,this.h,this,1)},t.prototype.front=function(){if(this.M!==0)return[this.H.u,this.H.p]},t.prototype.back=function(){if(this.M!==0)return[this.l.u,this.l.p]},t.prototype.setElement=function(r,i,a){return this.v(r,i,a)},t.prototype.getElementByKey=function(r,i){if(i===void 0&&(i=wu(r)),i){var a=r[this.HASH_TAG];return a!==void 0?this._[a].p:void 0}var n=this.I[r];return n?n.p:void 0},t.prototype.getElementByPos=function(r){if(r<0||r>this.M-1)throw new RangeError;for(var i=this.H;r--;)i=i.m;return[i.u,i.p]},t.prototype.find=function(r,i){var a=this.g(r,i);return new cf(a,this.h,this)},t.prototype.forEach=function(r){for(var i=0,a=this.H;a!==this.h;)r([a.u,a.p],i++,this),a=a.m},t.prototype[Symbol.iterator]=function(){return(function(){var r;return hO(this,function(i){switch(i.label){case 0:r=this.H,i.label=1;case 1:return r===this.h?[3,3]:[4,[r.u,r.p]];case 2:return i.sent(),r=r.m,[3,1];case 3:return[2]}})}).bind(this)()},t}(x3);const dO=cO,pO=Object.freeze(Object.defineProperty({__proto__:null,Deque:YT,HashMap:dO,HashSet:uO,LinkList:WT,OrderedMap:sO,OrderedSet:nO,PriorityQueue:LT,Queue:PT,Stack:TT,Vector:UT},Symbol.toStringTag,{value:"Module"})),vO=gv(pO);var Rp={exports:{}},gd,a1;function gO(){if(a1)return gd;a1=1;var e=1e3,t=e*60,r=t*60,i=r*24,a=i*7,n=i*365.25;gd=function(M,S){S=S||{};var R=typeof M;if(R==="string"&&M.length>0)return l(M);if(R==="number"&&isFinite(M))return S.long?d(M):c(M);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(M))};function l(M){if(M=String(M),!(M.length>100)){var S=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(M);if(S){var R=parseFloat(S[1]),I=(S[2]||"ms").toLowerCase();switch(I){case"years":case"year":case"yrs":case"yr":case"y":return R*n;case"weeks":case"week":case"w":return R*a;case"days":case"day":case"d":return R*i;case"hours":case"hour":case"hrs":case"hr":case"h":return R*r;case"minutes":case"minute":case"mins":case"min":case"m":return R*t;case"seconds":case"second":case"secs":case"sec":case"s":return R*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return R;default:return}}}}function c(M){var S=Math.abs(M);return S>=i?Math.round(M/i)+"d":S>=r?Math.round(M/r)+"h":S>=t?Math.round(M/t)+"m":S>=e?Math.round(M/e)+"s":M+"ms"}function d(M){var S=Math.abs(M);return S>=i?m(M,S,i,"day"):S>=r?m(M,S,r,"hour"):S>=t?m(M,S,t,"minute"):S>=e?m(M,S,e,"second"):M+" ms"}function m(M,S,R,I){var O=S>=R*1.5;return Math.round(M/R)+" "+I+(O?"s":"")}return gd}function mO(e){r.debug=r,r.default=r,r.coerce=d,r.disable=n,r.enable=a,r.enabled=l,r.humanize=gO(),r.destroy=m,Object.keys(e).forEach(M=>{r[M]=e[M]}),r.names=[],r.skips=[],r.formatters={};function t(M){let S=0;for(let R=0;R<M.length;R++)S=(S<<5)-S+M.charCodeAt(R),S|=0;return r.colors[Math.abs(S)%r.colors.length]}r.selectColor=t;function r(M){let S,R=null,I,O;function B(...L){if(!B.enabled)return;const P=B,C=Number(new Date),j=C-(S||C);P.diff=j,P.prev=S,P.curr=C,S=C,L[0]=r.coerce(L[0]),typeof L[0]!="string"&&L.unshift("%O");let $=0;L[0]=L[0].replace(/%([a-zA-Z%])/g,(G,te)=>{if(G==="%%")return"%";$++;const Q=r.formatters[te];if(typeof Q=="function"){const W=L[$];G=Q.call(P,W),L.splice($,1),$--}return G}),r.formatArgs.call(P,L),(P.log||r.log).apply(P,L)}return B.namespace=M,B.useColors=r.useColors(),B.color=r.selectColor(M),B.extend=i,B.destroy=r.destroy,Object.defineProperty(B,"enabled",{enumerable:!0,configurable:!1,get:()=>R!==null?R:(I!==r.namespaces&&(I=r.namespaces,O=r.enabled(M)),O),set:L=>{R=L}}),typeof r.init=="function"&&r.init(B),B}function i(M,S){const R=r(this.namespace+(typeof S>"u"?":":S)+M);return R.log=this.log,R}function a(M){r.save(M),r.namespaces=M,r.names=[],r.skips=[];let S;const R=(typeof M=="string"?M:"").split(/[\s,]+/),I=R.length;for(S=0;S<I;S++)R[S]&&(M=R[S].replace(/\*/g,".*?"),M[0]==="-"?r.skips.push(new RegExp("^"+M.slice(1)+"$")):r.names.push(new RegExp("^"+M+"$")))}function n(){const M=[...r.names.map(c),...r.skips.map(c).map(S=>"-"+S)].join(",");return r.enable(""),M}function l(M){if(M[M.length-1]==="*")return!0;let S,R;for(S=0,R=r.skips.length;S<R;S++)if(r.skips[S].test(M))return!1;for(S=0,R=r.names.length;S<R;S++)if(r.names[S].test(M))return!0;return!1}function c(M){return M.toString().substring(2,M.toString().length-2).replace(/\.\*\?$/,"*")}function d(M){return M instanceof Error?M.stack||M.message:M}function m(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}var yO=mO;(function(e,t){t.formatArgs=i,t.save=a,t.load=n,t.useColors=r,t.storage=l(),t.destroy=(()=>{let d=!1;return()=>{d||(d=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function i(d){if(d[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+d[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const m="color: "+this.color;d.splice(1,0,m,"color: inherit");let M=0,S=0;d[0].replace(/%[a-zA-Z%]/g,R=>{R!=="%%"&&(M++,R==="%c"&&(S=M))}),d.splice(S,0,m)}t.log=console.debug||console.log||(()=>{});function a(d){try{d?t.storage.setItem("debug",d):t.storage.removeItem("debug")}catch{}}function n(){let d;try{d=t.storage.getItem("debug")}catch{}return!d&&typeof _e<"u"&&"env"in _e&&(d={}.DEBUG),d}function l(){try{return localStorage}catch{}}e.exports=yO(t);const{formatters:c}=e.exports;c.j=function(d){try{return JSON.stringify(d)}catch(m){return"[UnexpectedJSONParseError]: "+m.message}}})(Rp,Rp.exports);var no=Rp.exports;const bO=vO.OrderedSet,rn=no("number-allocator:trace"),wO=no("number-allocator:error");function jr(e,t){this.low=e,this.high=t}jr.prototype.equals=function(e){return this.low===e.low&&this.high===e.high};jr.prototype.compare=function(e){return this.low<e.low&&this.high<e.low?-1:e.low<this.low&&e.high<this.low?1:0};function vn(e,t){if(!(this instanceof vn))return new vn(e,t);this.min=e,this.max=t,this.ss=new bO([],(r,i)=>r.compare(i)),rn("Create"),this.clear()}vn.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low};vn.prototype.alloc=function(){if(this.ss.size()===0)return rn("alloc():empty"),null;const e=this.ss.begin(),t=e.pointer.low,r=e.pointer.high,i=t;return i+1<=r?this.ss.updateKeyByIterator(e,new jr(t+1,r)):this.ss.eraseElementByPos(0),rn("alloc():"+i),i};vn.prototype.use=function(e){const t=new jr(e,e),r=this.ss.lowerBound(t);if(!r.equals(this.ss.end())){const i=r.pointer.low,a=r.pointer.high;return r.pointer.equals(t)?(this.ss.eraseElementByIterator(r),rn("use():"+e),!0):i>e?!1:i===e?(this.ss.updateKeyByIterator(r,new jr(i+1,a)),rn("use():"+e),!0):a===e?(this.ss.updateKeyByIterator(r,new jr(i,a-1)),rn("use():"+e),!0):(this.ss.updateKeyByIterator(r,new jr(e+1,a)),this.ss.insert(new jr(i,e-1)),rn("use():"+e),!0)}return rn("use():failed"),!1};vn.prototype.free=function(e){if(e<this.min||e>this.max){wO("free():"+e+" is out of range");return}const t=new jr(e,e),r=this.ss.upperBound(t);if(r.equals(this.ss.end())){if(r.equals(this.ss.begin())){this.ss.insert(t);return}r.pre();const i=r.pointer.high;r.pointer.high+1===e?this.ss.updateKeyByIterator(r,new jr(i,e)):this.ss.insert(t)}else if(r.equals(this.ss.begin()))if(e+1===r.pointer.low){const i=r.pointer.high;this.ss.updateKeyByIterator(r,new jr(e,i))}else this.ss.insert(t);else{const i=r.pointer.low,a=r.pointer.high;r.pre();const n=r.pointer.low;r.pointer.high+1===e?e+1===i?(this.ss.eraseElementByIterator(r),this.ss.updateKeyByIterator(r,new jr(n,a))):this.ss.updateKeyByIterator(r,new jr(n,e)):e+1===i?(this.ss.eraseElementByIterator(r.next()),this.ss.insert(new jr(e,a))):this.ss.insert(t)}rn("free():"+e)};vn.prototype.clear=function(){rn("clear()"),this.ss.clear(),this.ss.insert(new jr(this.min,this.max))};vn.prototype.intervalCount=function(){return this.ss.size()};vn.prototype.dump=function(){console.log("length:"+this.ss.size());for(const e of this.ss)console.log(e)};var _O=vn;const MO=_O;c3.NumberAllocator=MO;const SO=xT,xO=c3.NumberAllocator;function Bo(e){if(!(this instanceof Bo))return new Bo(e);e>0&&(this.aliasToTopic=new SO({max:e}),this.topicToAlias={},this.numberAllocator=new xO(1,e),this.max=e,this.length=0)}Bo.prototype.put=function(e,t){if(t===0||t>this.max)return!1;const r=this.aliasToTopic.get(t);return r&&delete this.topicToAlias[r],this.aliasToTopic.set(t,e),this.topicToAlias[e]=t,this.numberAllocator.use(t),this.length=this.aliasToTopic.length,!0};Bo.prototype.getTopicByAlias=function(e){return this.aliasToTopic.get(e)};Bo.prototype.getAliasByTopic=function(e){const t=this.topicToAlias[e];return typeof t<"u"&&this.aliasToTopic.get(t),t};Bo.prototype.clear=function(){this.aliasToTopic.reset(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0};Bo.prototype.getLruAlias=function(){const e=this.numberAllocator.firstVacant();return e||this.aliasToTopic.keys()[this.aliasToTopic.length-1]};var EO=Bo,Wh={},Kh={exports:{}},Ap={exports:{}},A3=Lr.EventEmitter,md,s1;function RO(){if(s1)return md;s1=1;function e(O,B){var L=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);B&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),L.push.apply(L,P)}return L}function t(O){for(var B=1;B<arguments.length;B++){var L=arguments[B]!=null?arguments[B]:{};B%2?e(Object(L),!0).forEach(function(P){r(O,P,L[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(L)):e(Object(L)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(L,P))})}return O}function r(O,B,L){return B=l(B),B in O?Object.defineProperty(O,B,{value:L,enumerable:!0,configurable:!0,writable:!0}):O[B]=L,O}function i(O,B){if(!(O instanceof B))throw new TypeError("Cannot call a class as a function")}function a(O,B){for(var L=0;L<B.length;L++){var P=B[L];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,B,L){return B&&a(O.prototype,B),L&&a(O,L),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var B=c(O,"string");return typeof B=="symbol"?B:String(B)}function c(O,B){if(typeof O!="object"||O===null)return O;var L=O[Symbol.toPrimitive];if(L!==void 0){var P=L.call(O,B||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(B==="string"?String:Number)(O)}var d=ke,m=d.Buffer,M=ri,S=M.inspect,R=S&&S.custom||"inspect";function I(O,B,L){m.prototype.copy.call(O,B,L)}return md=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(L){var P={data:L,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(L){var P={data:L,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var L=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,L}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(L){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=L+P.data;return C}},{key:"concat",value:function(L){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(L>>>0),C=this.head,j=0;C;)I(C.data,P,j),j+=C.data.length,C=C.next;return P}},{key:"consume",value:function(L,P){var C;return L<this.head.data.length?(C=this.head.data.slice(0,L),this.head.data=this.head.data.slice(L)):L===this.head.data.length?C=this.shift():C=P?this._getString(L):this._getBuffer(L),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(L){var P=this.head,C=1,j=P.data;for(L-=j.length;P=P.next;){var $=P.data,K=L>$.length?$.length:L;if(K===$.length?j+=$:j+=$.slice(0,L),L-=K,L===0){K===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(K));break}++C}return this.length-=C,j}},{key:"_getBuffer",value:function(L){var P=m.allocUnsafe(L),C=this.head,j=1;for(C.data.copy(P),L-=C.data.length;C=C.next;){var $=C.data,K=L>$.length?$.length:L;if($.copy(P,P.length-L,0,K),L-=K,L===0){K===$.length?(++j,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(K));break}++j}return this.length-=j,P}},{key:R,value:function(L,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),md}function AO(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,_e.nextTick(Tp,this,e)):_e.nextTick(Tp,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?_e.nextTick(_u,r):(r._writableState.errorEmitted=!0,_e.nextTick(f1,r,n)):_e.nextTick(f1,r,n):t?(_e.nextTick(_u,r),t(n)):_e.nextTick(_u,r)}),this)}function f1(e,t){Tp(e,t),_u(e)}function _u(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function TO(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Tp(e,t){e.emit("error",t)}function OO(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}var T3={destroy:AO,undestroy:TO,errorOrDestroy:OO},Oa={};function IO(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var O3={};function Si(e,t,r){r||(r=Error);function i(n,l,c){return typeof t=="string"?t:t(n,l,c)}var a=function(n){IO(l,n);function l(c,d,m){return n.call(this,i(c,d,m))||this}return l}(r);a.prototype.name=r.name,a.prototype.code=e,O3[e]=a}function l1(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(i){return String(i)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function PO(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function CO(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function BO(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Si("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Si("ERR_INVALID_ARG_TYPE",function(e,t,r){var i;typeof t=="string"&&PO(t,"not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";var a;if(CO(e," argument"))a="The ".concat(e," ").concat(i," ").concat(l1(t,"type"));else{var n=BO(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(n," ").concat(i," ").concat(l1(t,"type"))}return a+=". Received type ".concat(typeof r),a},TypeError);Si("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Si("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Si("ERR_STREAM_PREMATURE_CLOSE","Premature close");Si("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Si("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Si("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Si("ERR_STREAM_WRITE_AFTER_END","write after end");Si("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Si("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Si("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Oa.codes=O3;var LO=Oa.codes.ERR_INVALID_OPT_VALUE;function NO(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function kO(e,t,r,i){var a=NO(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=i?r:"highWaterMark";throw new LO(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}var I3={getHighWaterMark:kO},yd,u1;function P3(){if(u1)return yd;u1=1,yd=Q;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){ee(E,A)}}var t;Q.WritableState=G;var r={deprecate:Ws},i=A3,a=ke.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function c(A){return a.isBuffer(A)||A instanceof n}var d=T3,m=I3,M=m.getHighWaterMark,S=Oa.codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,B=S.ERR_STREAM_CANNOT_PIPE,L=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,j=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(Q,i);function K(){}function G(A,E,q){t=t||ws(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=M(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var te;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(te=Function.prototype[Symbol.hasInstance],Object.defineProperty(Q,Symbol.hasInstance,{value:function(E){return te.call(this,E)?!0:this!==Q?!1:E&&E._writableState instanceof G}})):te=function(E){return E instanceof this};function Q(A){t=t||ws();var E=this instanceof t;if(!E&&!te.call(Q,this))return new Q(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}Q.prototype.pipe=function(){$(this,new B)};function W(A,E){var q=new C;$(A,q),_e.nextTick(E,q)}function ce(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),_e.nextTick(V,X),!1):!0}Q.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&c(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=K),V.ending?W(this,q):(b||ce(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},Q.prototype.cork=function(){this._writableState.corked++},Q.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},Q.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new j(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(Q.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function _(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(Q.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=_(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var D=E.objectMode?1:V.length;E.length+=D;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,D,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new L("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(_e.nextTick(X,V),_e.nextTick(k,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),k(A,E))}function h(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(h(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?_e.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),k(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,D=!0;q;)X[y]=q,q.isBuf||(D=!1),q=q.next,y+=1;X.allBuffers=D,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,F=q.callback,N=E.objectMode?1:U.length;if(f(A,E,!1,N,U,Z,F),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}Q.prototype._write=function(A,E,q){q(new I("_write()"))},Q.prototype._writev=null,Q.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(Q.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),k(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,_e.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function k(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,k(A,E),q&&(E.finished?_e.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function ee(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(Q.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),Q.prototype.destroy=d.destroy,Q.prototype._undestroy=d.undestroy,Q.prototype._destroy=function(A,E){E(A)},yd}var bd,h1;function ws(){if(h1)return bd;h1=1;var e=Object.keys||function(m){var M=[];for(var S in m)M.push(S);return M};bd=l;var t=B3(),r=P3();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",c)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function c(){this._writableState.ended||_e.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(M){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=M,this._writableState.destroyed=M)}}),bd}var c1=Oa.codes.ERR_STREAM_PREMATURE_CLOSE;function $O(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];e.apply(this,i)}}}function DO(){}function FO(e){return e.setHeader&&typeof e.abort=="function"}function C3(e,t,r){if(typeof t=="function")return C3(e,null,t);t||(t={}),r=$O(r||DO);var i=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||c()},l=e._writableState&&e._writableState.finished,c=function(){a=!1,l=!0,i||r.call(e)},d=e._readableState&&e._readableState.endEmitted,m=function(){i=!1,d=!0,a||r.call(e)},M=function(O){r.call(e,O)},S=function(){var O;if(i&&!d)return(!e._readableState||!e._readableState.ended)&&(O=new c1),r.call(e,O);if(a&&!l)return(!e._writableState||!e._writableState.ended)&&(O=new c1),r.call(e,O)},R=function(){e.req.on("finish",c)};return FO(e)?(e.on("complete",c),e.on("abort",S),e.req?R():e.on("request",R)):a&&!e._writableState&&(e.on("end",n),e.on("close",n)),e.on("end",m),e.on("finish",c),t.error!==!1&&e.on("error",M),e.on("close",S),function(){e.removeListener("complete",c),e.removeListener("abort",S),e.removeListener("request",R),e.req&&e.req.removeListener("finish",c),e.removeListener("end",n),e.removeListener("close",n),e.removeListener("finish",c),e.removeListener("end",m),e.removeListener("error",M),e.removeListener("close",S)}}var dg=C3,wd,d1;function jO(){if(d1)return wd;d1=1;var e;function t(j,$,K){return $=r($),$ in j?Object.defineProperty(j,$,{value:K,enumerable:!0,configurable:!0,writable:!0}):j[$]=K,j}function r(j){var $=i(j,"string");return typeof $=="symbol"?$:String($)}function i(j,$){if(typeof j!="object"||j===null)return j;var K=j[Symbol.toPrimitive];if(K!==void 0){var G=K.call(j,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(j)}var a=dg,n=Symbol("lastResolve"),l=Symbol("lastReject"),c=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),M=Symbol("handlePromise"),S=Symbol("stream");function R(j,$){return{value:j,done:$}}function I(j){var $=j[n];if($!==null){var K=j[S].read();K!==null&&(j[m]=null,j[n]=null,j[l]=null,$(R(K,!1)))}}function O(j){_e.nextTick(I,j)}function B(j,$){return function(K,G){j.then(function(){if($[d]){K(R(void 0,!0));return}$[M](K,G)},G)}}var L=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,K=this[c];if(K!==null)return Promise.reject(K);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(W,ce){_e.nextTick(function(){$[c]?ce($[c]):W(R(void 0,!0))})});var G=this[m],te;if(G)te=new Promise(B(G,this));else{var Q=this[S].read();if(Q!==null)return Promise.resolve(R(Q,!1));te=new Promise(this[M])}return this[m]=te,te}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(K,G){$[S].destroy(null,function(te){if(te){G(te);return}K(R(void 0,!0))})})}),e),L),C=function($){var K,G=Object.create(P,(K={},t(K,S,{value:$,writable:!0}),t(K,n,{value:null,writable:!0}),t(K,l,{value:null,writable:!0}),t(K,c,{value:null,writable:!0}),t(K,d,{value:$._readableState.endEmitted,writable:!0}),t(K,M,{value:function(Q,W){var ce=G[S].read();ce?(G[m]=null,G[n]=null,G[l]=null,Q(R(ce,!1))):(G[n]=Q,G[l]=W)},writable:!0}),K));return G[m]=null,a($,function(te){if(te&&te.code!=="ERR_STREAM_PREMATURE_CLOSE"){var Q=G[l];Q!==null&&(G[m]=null,G[n]=null,G[l]=null,Q(te)),G[c]=te;return}var W=G[n];W!==null&&(G[m]=null,G[n]=null,G[l]=null,W(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return wd=C,wd}var _d,p1;function UO(){return p1||(p1=1,_d=function(){throw new Error("Readable.from is not available in the browser")}),_d}var Md,v1;function B3(){if(v1)return Md;v1=1,Md=W;var e;W.ReadableState=Q,Lr.EventEmitter;var t=function(y,D){return y.listeners(D).length},r=A3,i=ke.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var c=ri,d;c&&c.debuglog?d=c.debuglog("stream"):d=function(){};var m=RO(),M=T3,S=I3,R=S.getHighWaterMark,I=Oa.codes,O=I.ERR_INVALID_ARG_TYPE,B=I.ERR_STREAM_PUSH_AFTER_EOF,L=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,j,$;Ye(W,r);var K=M.errorOrDestroy,G=["error","close","destroy","pause","resume"];function te(b,y,D){if(typeof b.prependListener=="function")return b.prependListener(y,D);!b._events||!b._events[y]?b.on(y,D):Array.isArray(b._events[y])?b._events[y].unshift(D):b._events[y]=[D,b._events[y]]}function Q(b,y,D){e=e||ws(),b=b||{},typeof D!="boolean"&&(D=y instanceof e),this.objectMode=!!b.objectMode,D&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",D),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=Jr().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function W(b){if(e=e||ws(),!(this instanceof W))return new W(b);var y=this instanceof e;this._readableState=new Q(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(W.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),W.prototype.destroy=M.destroy,W.prototype._undestroy=M.undestroy,W.prototype._destroy=function(b,y){y(b)},W.prototype.push=function(b,y){var D=this._readableState,U;return D.objectMode?U=!0:typeof b=="string"&&(y=y||D.defaultEncoding,y!==D.encoding&&(b=i.from(b,y),y=""),U=!0),ce(this,b,y,!1,U)},W.prototype.unshift=function(b){return ce(this,b,null,!0,!1)};function ce(b,y,D,U,Z){d("readableAddChunk",y);var F=b._readableState;if(y===null)F.reading=!1,p(b,F);else{var N;if(Z||(N=o(F,y)),N)K(b,N);else if(F.objectMode||y&&y.length>0)if(typeof y!="string"&&!F.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)F.endEmitted?K(b,new P):_(b,F,y,!0);else if(F.ended)K(b,new B);else{if(F.destroyed)return!1;F.reading=!1,F.decoder&&!D?(y=F.decoder.write(y),F.objectMode||y.length!==0?_(b,F,y,!1):g(b,F)):_(b,F,y,!1)}else U||(F.reading=!1,g(b,F))}return!F.ended&&(F.length<F.highWaterMark||F.length===0)}function _(b,y,D,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",D)):(y.length+=y.objectMode?1:D.length,U?y.buffer.unshift(D):y.buffer.push(D),y.needReadable&&w(b)),g(b,y)}function o(b,y){var D;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(D=new O("chunk",["string","Buffer","Uint8Array"],y)),D}W.prototype.isPaused=function(){return this._readableState.flowing===!1},W.prototype.setEncoding=function(b){C||(C=Jr().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var D=this._readableState.buffer.head,U="";D!==null;)U+=y.write(D.data),D=D.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function h(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}W.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,D=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=h(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=h(D,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),D!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var D=y.decoder.end();D&&D.length&&(y.buffer.push(D),y.length+=y.objectMode?1:D.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,_e.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,_e.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var D=y.length;if(d("maybeReadMore read 0"),b.read(0),D===y.length)break}y.readingMore=!1}W.prototype._read=function(b){K(this,new L("_read()"))},W.prototype.pipe=function(b,y){var D=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==_e.stdout&&b!==_e.stderr,F=Z?H:se;U.endEmitted?_e.nextTick(F):D.once("end",F),b.on("unpipe",N);function N(ue,de){d("onunpipe"),ue===D&&de&&de.hasUnpiped===!1&&(de.hasUnpiped=!0,re())}function H(){d("onend"),b.end()}var z=v(D);b.on("drain",z);var fe=!1;function re(){d("cleanup"),b.removeListener("close",J),b.removeListener("finish",le),b.removeListener("drain",z),b.removeListener("error",be),b.removeListener("unpipe",N),D.removeListener("end",H),D.removeListener("end",se),D.removeListener("data",ae),fe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}D.on("data",ae);function ae(ue){d("ondata");var de=b.write(ue);d("dest.write",de),de===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!fe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),D.pause())}function be(ue){d("onerror",ue),se(),b.removeListener("error",be),t(b,"error")===0&&K(b,ue)}te(b,"error",be);function J(){b.removeListener("finish",le),se()}b.once("close",J);function le(){d("onfinish"),b.removeListener("close",J),se()}b.once("finish",le);function se(){d("unpipe"),D.unpipe(b)}return b.emit("pipe",D),U.flowing||(d("pipe resume"),D.resume()),b};function v(b){return function(){var D=b._readableState;d("pipeOnDrain",D.awaitDrain),D.awaitDrain&&D.awaitDrain--,D.awaitDrain===0&&t(b,"data")&&(D.flowing=!0,A(b))}}W.prototype.unpipe=function(b){var y=this._readableState,D={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,D),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var F=0;F<Z;F++)U[F].emit("unpipe",this,{hasUnpiped:!1});return this}var N=X(y.pipes,b);return N===-1?this:(y.pipes.splice(N,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,D),this)},W.prototype.on=function(b,y){var D=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||_e.nextTick(k,this)),D},W.prototype.addListener=W.prototype.on,W.prototype.removeListener=function(b,y){var D=r.prototype.removeListener.call(this,b,y);return b==="readable"&&_e.nextTick(T,this),D},W.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&_e.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function k(b){d("readable nexttick read 0"),b.read(0)}W.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,_e.nextTick(ee,b,y))}function ee(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}W.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}W.prototype.wrap=function(b){var y=this,D=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),D.decoder&&!D.ended){var N=D.decoder.end();N&&N.length&&y.push(N)}y.push(null)}),b.on("data",function(N){if(d("wrapped data"),D.decoder&&(N=D.decoder.write(N)),!(D.objectMode&&N==null)&&!(!D.objectMode&&(!N||!N.length))){var H=y.push(N);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var F=0;F<G.length;F++)b.on(G[F],this.emit.bind(this,G[F]));return this._read=function(N){d("wrapped _read",N),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(W.prototype[Symbol.asyncIterator]=function(){return j===void 0&&(j=jO()),j(this)}),Object.defineProperty(W.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(W.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(W.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),W._fromList=E,Object.defineProperty(W.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var D;return y.objectMode?D=y.buffer.shift():!b||b>=y.length?(y.decoder?D=y.buffer.join(""):y.buffer.length===1?D=y.buffer.first():D=y.buffer.concat(y.length),y.buffer.clear()):D=y.buffer.consume(b,y.decoder),D}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,_e.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var D=y._writableState;(!D||D.autoDestroy&&D.finished)&&y.destroy()}}typeof Symbol=="function"&&(W.from=function(b,y){return $===void 0&&($=UO()),$(W,b,y)});function X(b,y){for(var D=0,U=b.length;D<U;D++)if(b[D]===y)return D;return-1}return Md}var L3=zn,Vh=Oa.codes,HO=Vh.ERR_METHOD_NOT_IMPLEMENTED,qO=Vh.ERR_MULTIPLE_CALLBACK,WO=Vh.ERR_TRANSFORM_ALREADY_TRANSFORMING,KO=Vh.ERR_TRANSFORM_WITH_LENGTH_0,zh=ws();Ye(zn,zh);function VO(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new qO);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function zn(e){if(!(this instanceof zn))return new zn(e);zh.call(this,e),this._transformState={afterTransform:VO.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",zO)}function zO(){var e=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(t,r){g1(e,t,r)}):g1(this,null,null)}zn.prototype.push=function(e,t){return this._transformState.needTransform=!1,zh.prototype.push.call(this,e,t)};zn.prototype._transform=function(e,t,r){r(new HO("_transform()"))};zn.prototype._write=function(e,t,r){var i=this._transformState;if(i.writecb=r,i.writechunk=e,i.writeencoding=t,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};zn.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};zn.prototype._destroy=function(e,t){zh.prototype._destroy.call(this,e,function(r){t(r)})};function g1(e,t,r){if(t)return e.emit("error",t);if(r!=null&&e.push(r),e._writableState.length)throw new KO;if(e._transformState.transforming)throw new WO;return e.push(null)}var GO=rl,N3=L3;Ye(rl,N3);function rl(e){if(!(this instanceof rl))return new rl(e);N3.call(this,e)}rl.prototype._transform=function(e,t,r){r(null,e)};var Sd;function YO(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var k3=Oa.codes,ZO=k3.ERR_MISSING_ARGS,XO=k3.ERR_STREAM_DESTROYED;function m1(e){if(e)throw e}function JO(e){return e.setHeader&&typeof e.abort=="function"}function QO(e,t,r,i){i=YO(i);var a=!1;e.on("close",function(){a=!0}),Sd===void 0&&(Sd=dg),Sd(e,{readable:t,writable:r},function(l){if(l)return i(l);a=!0,i()});var n=!1;return function(l){if(!a&&!n){if(n=!0,JO(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();i(l||new XO("pipe"))}}}function y1(e){e()}function eI(e,t){return e.pipe(t)}function tI(e){return!e.length||typeof e[e.length-1]!="function"?m1:e.pop()}function rI(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=tI(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new ZO("streams");var a,n=t.map(function(l,c){var d=c<t.length-1,m=c>0;return QO(l,d,m,function(M){a||(a=M),M&&n.forEach(y1),!d&&(n.forEach(y1),i(a))})});return t.reduce(eI)}var iI=rI;(function(e,t){t=e.exports=B3(),t.Stream=t,t.Readable=t,t.Writable=P3(),t.Duplex=ws(),t.Transform=L3,t.PassThrough=GO,t.finished=dg,t.pipeline=iI})(Ap,Ap.exports);var nI=Ap.exports;const{Buffer:Fi}=ke,$3=Symbol.for("BufferList");function Gt(e){if(!(this instanceof Gt))return new Gt(e);Gt._init.call(this,e)}Gt._init=function(t){Object.defineProperty(this,$3,{value:!0}),this._bufs=[],this.length=0,t&&this.append(t)};Gt.prototype._new=function(t){return new Gt(t)};Gt.prototype._offset=function(t){if(t===0)return[0,0];let r=0;for(let i=0;i<this._bufs.length;i++){const a=r+this._bufs[i].length;if(t<a||i===this._bufs.length-1)return[i,t-r];r=a}};Gt.prototype._reverseOffset=function(e){const t=e[0];let r=e[1];for(let i=0;i<t;i++)r+=this._bufs[i].length;return r};Gt.prototype.get=function(t){if(t>this.length||t<0)return;const r=this._offset(t);return this._bufs[r[0]][r[1]]};Gt.prototype.slice=function(t,r){return typeof t=="number"&&t<0&&(t+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,t,r)};Gt.prototype.copy=function(t,r,i,a){if((typeof i!="number"||i<0)&&(i=0),(typeof a!="number"||a>this.length)&&(a=this.length),i>=this.length||a<=0)return t||Fi.alloc(0);const n=!!t,l=this._offset(i),c=a-i;let d=c,m=n&&r||0,M=l[1];if(i===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:Fi.concat(this._bufs,this.length);for(let S=0;S<this._bufs.length;S++)this._bufs[S].copy(t,m),m+=this._bufs[S].length;return t}if(d<=this._bufs[l[0]].length-M)return n?this._bufs[l[0]].copy(t,r,M,M+d):this._bufs[l[0]].slice(M,M+d);n||(t=Fi.allocUnsafe(c));for(let S=l[0];S<this._bufs.length;S++){const R=this._bufs[S].length-M;if(d>R)this._bufs[S].copy(t,m,M),m+=R;else{this._bufs[S].copy(t,m,M,M+d),m+=R;break}d-=R,M&&(M=0)}return t.length>m?t.slice(0,m):t};Gt.prototype.shallowSlice=function(t,r){if(t=t||0,r=typeof r!="number"?this.length:r,t<0&&(t+=this.length),r<0&&(r+=this.length),t===r)return this._new();const i=this._offset(t),a=this._offset(r),n=this._bufs.slice(i[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),i[1]!==0&&(n[0]=n[0].slice(i[1])),this._new(n)};Gt.prototype.toString=function(t,r,i){return this.slice(r,i).toString(t)};Gt.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};Gt.prototype.duplicate=function(){const t=this._new();for(let r=0;r<this._bufs.length;r++)t.append(this._bufs[r]);return t};Gt.prototype.append=function(t){if(t==null)return this;if(t.buffer)this._appendBuffer(Fi.from(t.buffer,t.byteOffset,t.byteLength));else if(Array.isArray(t))for(let r=0;r<t.length;r++)this.append(t[r]);else if(this._isBufferList(t))for(let r=0;r<t._bufs.length;r++)this.append(t._bufs[r]);else typeof t=="number"&&(t=t.toString()),this._appendBuffer(Fi.from(t));return this};Gt.prototype._appendBuffer=function(t){this._bufs.push(t),this.length+=t.length};Gt.prototype.indexOf=function(e,t,r){if(r===void 0&&typeof t=="string"&&(r=t,t=void 0),typeof e=="function"||Array.isArray(e))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof e=="number"?e=Fi.from([e]):typeof e=="string"?e=Fi.from(e,r):this._isBufferList(e)?e=e.slice():Array.isArray(e.buffer)?e=Fi.from(e.buffer,e.byteOffset,e.byteLength):Fi.isBuffer(e)||(e=Fi.from(e)),t=Number(t||0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;const i=this._offset(t);let a=i[0],n=i[1];for(;a<this._bufs.length;a++){const l=this._bufs[a];for(;n<l.length;)if(l.length-n>=e.length){const d=l.indexOf(e,n);if(d!==-1)return this._reverseOffset([a,d]);n=l.length-e.length+1}else{const d=this._reverseOffset([a,n]);if(this._match(d,e))return d;n++}n=0}return-1};Gt.prototype._match=function(e,t){if(this.length-e<t.length)return!1;for(let r=0;r<t.length;r++)if(this.get(e+r)!==t[r])return!1;return!0};(function(){const e={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(const t in e)(function(r){e[r]===null?Gt.prototype[r]=function(i,a){return this.slice(i,i+a)[r](0,a)}:Gt.prototype[r]=function(i=0){return this.slice(i,i+e[r])[r](0)}})(t)})();Gt.prototype._isBufferList=function(t){return t instanceof Gt||Gt.isBufferList(t)};Gt.isBufferList=function(t){return t!=null&&t[$3]};var oI=Gt;const pg=nI.Duplex,aI=Ye,wl=oI;function Pr(e){if(!(this instanceof Pr))return new Pr(e);if(typeof e=="function"){this._callback=e;const t=(function(i){this._callback&&(this._callback(i),this._callback=null)}).bind(this);this.on("pipe",function(i){i.on("error",t)}),this.on("unpipe",function(i){i.removeListener("error",t)}),e=null}wl._init.call(this,e),pg.call(this)}aI(Pr,pg);Object.assign(Pr.prototype,wl.prototype);Pr.prototype._new=function(t){return new Pr(t)};Pr.prototype._write=function(t,r,i){this._appendBuffer(t),typeof i=="function"&&i()};Pr.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};Pr.prototype.end=function(t){pg.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Pr.prototype._destroy=function(t,r){this._bufs.length=0,this.length=0,r(t)};Pr.prototype._isBufferList=function(t){return t instanceof Pr||t instanceof wl||Pr.isBufferList(t)};Pr.isBufferList=wl.isBufferList;Kh.exports=Pr;Kh.exports.BufferListStream=Pr;Kh.exports.BufferList=wl;var sI=Kh.exports;let fI=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};var lI=fI,D3={exports:{}};(function(e){const t=e.exports;t.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},t.codes={};for(const i in t.types){const a=t.types[i];t.codes[a]=i}t.CMD_SHIFT=4,t.CMD_MASK=240,t.DUP_MASK=8,t.QOS_MASK=3,t.QOS_SHIFT=1,t.RETAIN_MASK=1,t.VARBYTEINT_MASK=127,t.VARBYTEINT_FIN_MASK=128,t.VARBYTEINT_MAX=268435455,t.SESSIONPRESENT_MASK=1,t.SESSIONPRESENT_HEADER=ke.Buffer.from([t.SESSIONPRESENT_MASK]),t.CONNACK_HEADER=ke.Buffer.from([t.codes.connack<<t.CMD_SHIFT]),t.USERNAME_MASK=128,t.PASSWORD_MASK=64,t.WILL_RETAIN_MASK=32,t.WILL_QOS_MASK=24,t.WILL_QOS_SHIFT=3,t.WILL_FLAG_MASK=4,t.CLEAN_SESSION_MASK=2,t.CONNECT_HEADER=ke.Buffer.from([t.codes.connect<<t.CMD_SHIFT]),t.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},t.propertiesCodes={};for(const i in t.properties){const a=t.properties[i];t.propertiesCodes[a]=i}t.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function r(i){return[0,1,2].map(a=>[0,1].map(n=>[0,1].map(l=>{const c=ke.Buffer.alloc(1);return c.writeUInt8(t.codes[i]<<t.CMD_SHIFT|(n?t.DUP_MASK:0)|a<<t.QOS_SHIFT|l,0,!0),c})))}t.PUBLISH_HEADER=r("publish"),t.SUBSCRIBE_HEADER=r("subscribe"),t.SUBSCRIBE_OPTIONS_QOS_MASK=3,t.SUBSCRIBE_OPTIONS_NL_MASK=1,t.SUBSCRIBE_OPTIONS_NL_SHIFT=2,t.SUBSCRIBE_OPTIONS_RAP_MASK=1,t.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,t.SUBSCRIBE_OPTIONS_RH_MASK=3,t.SUBSCRIBE_OPTIONS_RH_SHIFT=4,t.SUBSCRIBE_OPTIONS_RH=[0,16,32],t.SUBSCRIBE_OPTIONS_NL=4,t.SUBSCRIBE_OPTIONS_RAP=8,t.SUBSCRIBE_OPTIONS_QOS=[0,1,2],t.UNSUBSCRIBE_HEADER=r("unsubscribe"),t.ACKS={unsuback:r("unsuback"),puback:r("puback"),pubcomp:r("pubcomp"),pubrel:r("pubrel"),pubrec:r("pubrec")},t.SUBACK_HEADER=ke.Buffer.from([t.codes.suback<<t.CMD_SHIFT]),t.VERSION3=ke.Buffer.from([3]),t.VERSION4=ke.Buffer.from([4]),t.VERSION5=ke.Buffer.from([5]),t.VERSION131=ke.Buffer.from([131]),t.VERSION132=ke.Buffer.from([132]),t.QOS=[0,1,2].map(i=>ke.Buffer.from([i])),t.EMPTY={pingreq:ke.Buffer.from([t.codes.pingreq<<4,0]),pingresp:ke.Buffer.from([t.codes.pingresp<<4,0]),disconnect:ke.Buffer.from([t.codes.disconnect<<4,0])}})(D3);var F3=D3.exports;const uI=sI,hI=Lr,b1=lI,Wt=F3,ot=no("mqtt-packet:parser");class eh extends hI{constructor(){super(),this.parser=this.constructor.parser}static parser(t){return this instanceof eh?(this.settings=t||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new eh().parser(t)}_resetState(){ot("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new b1,this.error=null,this._list=uI(),this._stateCounter=0}parse(t){for(this.error&&this._resetState(),this._list.append(t),ot("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,ot("parse: state complete. _stateCounter is now: %d",this._stateCounter),ot("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return ot("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){const t=this._list.readUInt8(0);return this.packet.cmd=Wt.types[t>>Wt.CMD_SHIFT],this.packet.retain=(t&Wt.RETAIN_MASK)!==0,this.packet.qos=t>>Wt.QOS_SHIFT&Wt.QOS_MASK,this.packet.dup=(t&Wt.DUP_MASK)!==0,ot("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0}_parseLength(){const t=this._parseVarByteNum(!0);return t&&(this.packet.length=t.value,this._list.consume(t.bytes)),ot("_parseLength %d",t.value),!!t}_parsePayload(){ot("_parsePayload: payload %O",this._list);let t=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}t=!0}return ot("_parsePayload complete result: %s",t),t}_parseConnect(){ot("_parseConnect");let t,r,i,a;const n={},l=this.packet,c=this._parseString();if(c===null)return this._emitError(new Error("Cannot parse protocolId"));if(c!=="MQTT"&&c!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(l.protocolId=c,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(l.protocolVersion=this._list.readUInt8(this._pos),l.protocolVersion>=128&&(l.bridgeMode=!0,l.protocolVersion=l.protocolVersion-128),l.protocolVersion!==3&&l.protocolVersion!==4&&l.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(n.username=this._list.readUInt8(this._pos)&Wt.USERNAME_MASK,n.password=this._list.readUInt8(this._pos)&Wt.PASSWORD_MASK,n.will=this._list.readUInt8(this._pos)&Wt.WILL_FLAG_MASK,n.will&&(l.will={},l.will.retain=(this._list.readUInt8(this._pos)&Wt.WILL_RETAIN_MASK)!==0,l.will.qos=(this._list.readUInt8(this._pos)&Wt.WILL_QOS_MASK)>>Wt.WILL_QOS_SHIFT),l.clean=(this._list.readUInt8(this._pos)&Wt.CLEAN_SESSION_MASK)!==0,this._pos++,l.keepalive=this._parseNum(),l.keepalive===-1)return this._emitError(new Error("Packet too short"));if(l.protocolVersion===5){const m=this._parseProperties();Object.getOwnPropertyNames(m).length&&(l.properties=m)}const d=this._parseString();if(d===null)return this._emitError(new Error("Packet too short"));if(l.clientId=d,ot("_parseConnect: packet.clientId: %s",l.clientId),n.will){if(l.protocolVersion===5){const m=this._parseProperties();Object.getOwnPropertyNames(m).length&&(l.will.properties=m)}if(t=this._parseString(),t===null)return this._emitError(new Error("Cannot parse will topic"));if(l.will.topic=t,ot("_parseConnect: packet.will.topic: %s",l.will.topic),r=this._parseBuffer(),r===null)return this._emitError(new Error("Cannot parse will payload"));l.will.payload=r,ot("_parseConnect: packet.will.paylaod: %s",l.will.payload)}if(n.username){if(a=this._parseString(),a===null)return this._emitError(new Error("Cannot parse username"));l.username=a,ot("_parseConnect: packet.username: %s",l.username)}if(n.password){if(i=this._parseBuffer(),i===null)return this._emitError(new Error("Cannot parse password"));l.password=i}return this.settings=l,ot("_parseConnect: complete"),l}_parseConnack(){ot("_parseConnack");const t=this.packet;if(this._list.length<1)return null;if(t.sessionPresent=!!(this._list.readUInt8(this._pos++)&Wt.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?t.reasonCode=this._list.readUInt8(this._pos++):t.reasonCode=0;else{if(this._list.length<2)return null;t.returnCode=this._list.readUInt8(this._pos++)}if(t.returnCode===-1||t.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}ot("_parseConnack: complete")}_parsePublish(){ot("_parsePublish");const t=this.packet;if(t.topic=this._parseString(),t.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(t.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}t.payload=this._list.slice(this._pos,t.length),ot("_parsePublish: payload from buffer list: %o",t.payload)}}_parseSubscribe(){ot("_parseSubscribe");const t=this.packet;let r,i,a,n,l,c,d;if(t.qos!==1)return this._emitError(new Error("Wrong subscribe header"));if(t.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){const m=this._parseProperties();Object.getOwnPropertyNames(m).length&&(t.properties=m)}for(;this._pos<t.length;){if(r=this._parseString(),r===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=t.length)return this._emitError(new Error("Malformed Subscribe Payload"));i=this._parseByte(),a=i&Wt.SUBSCRIBE_OPTIONS_QOS_MASK,c=(i>>Wt.SUBSCRIBE_OPTIONS_NL_SHIFT&Wt.SUBSCRIBE_OPTIONS_NL_MASK)!==0,l=(i>>Wt.SUBSCRIBE_OPTIONS_RAP_SHIFT&Wt.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,n=i>>Wt.SUBSCRIBE_OPTIONS_RH_SHIFT&Wt.SUBSCRIBE_OPTIONS_RH_MASK,d={topic:r,qos:a},this.settings.protocolVersion===5?(d.nl=c,d.rap=l,d.rh=n):this.settings.bridgeMode&&(d.rh=0,d.rap=!0,d.nl=!0),ot("_parseSubscribe: push subscription `%s` to subscription",d),t.subscriptions.push(d)}}}_parseSuback(){ot("_parseSuback");const t=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}for(;this._pos<this.packet.length;)this.packet.granted.push(this._list.readUInt8(this._pos++))}}_parseUnsubscribe(){ot("_parseUnsubscribe");const t=this.packet;if(t.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}for(;this._pos<t.length;){const r=this._parseString();if(r===null)return this._emitError(new Error("Cannot parse topic"));ot("_parseUnsubscribe: push topic `%s` to unsubscriptions",r),t.unsubscriptions.push(r)}}}_parseUnsuback(){ot("_parseUnsuback");const t=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if(this.settings.protocolVersion===5){const r=this._parseProperties();for(Object.getOwnPropertyNames(r).length&&(t.properties=r),t.granted=[];this._pos<this.packet.length;)this.packet.granted.push(this._list.readUInt8(this._pos++))}}_parseConfirmation(){ot("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);const t=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5&&(t.length>2?(t.reasonCode=this._parseByte(),ot("_parseConfirmation: packet.reasonCode `%d`",t.reasonCode)):t.reasonCode=0,t.length>3)){const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}return!0}_parseDisconnect(){const t=this.packet;if(ot("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?t.reasonCode=this._parseByte():t.reasonCode=0;const r=this._parseProperties();Object.getOwnPropertyNames(r).length&&(t.properties=r)}return ot("_parseDisconnect result: true"),!0}_parseAuth(){ot("_parseAuth");const t=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));t.reasonCode=this._parseByte();const r=this._parseProperties();return Object.getOwnPropertyNames(r).length&&(t.properties=r),ot("_parseAuth: result: true"),!0}_parseMessageId(){const t=this.packet;return t.messageId=this._parseNum(),t.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(ot("_parseMessageId: packet.messageId %d",t.messageId),!0)}_parseString(t){const r=this._parseNum(),i=r+this._pos;if(r===-1||i>this._list.length||i>this.packet.length)return null;const a=this._list.toString("utf8",this._pos,i);return this._pos+=r,ot("_parseString: result: %s",a),a}_parseStringPair(){return ot("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){const t=this._parseNum(),r=t+this._pos;if(t===-1||r>this._list.length||r>this.packet.length)return null;const i=this._list.slice(this._pos,r);return this._pos+=t,ot("_parseBuffer: result: %o",i),i}_parseNum(){if(this._list.length-this._pos<2)return-1;const t=this._list.readUInt16BE(this._pos);return this._pos+=2,ot("_parseNum: result: %s",t),t}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;const t=this._list.readUInt32BE(this._pos);return this._pos+=4,ot("_parse4ByteNum: result: %s",t),t}_parseVarByteNum(t){ot("_parseVarByteNum");const r=4;let i=0,a=1,n=0,l=!1,c;const d=this._pos?this._pos:0;for(;i<r&&d+i<this._list.length;){if(c=this._list.readUInt8(d+i++),n+=a*(c&Wt.VARBYTEINT_MASK),a*=128,!(c&Wt.VARBYTEINT_FIN_MASK)){l=!0;break}if(this._list.length<=i)break}return!l&&i===r&&this._list.length>=i&&this._emitError(new Error("Invalid variable byte integer")),d&&(this._pos+=i),l=l?t?{bytes:i,value:n}:n:!1,ot("_parseVarByteNum: result: %o",l),l}_parseByte(){let t;return this._pos<this._list.length&&(t=this._list.readUInt8(this._pos),this._pos++),ot("_parseByte: result: %o",t),t}_parseByType(t){switch(ot("_parseByType: type: %s",t),t){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){ot("_parseProperties");const t=this._parseVarByteNum(),i=this._pos+t,a={};for(;this._pos<i;){const n=this._parseByte();if(!n)return this._emitError(new Error("Cannot parse property code type")),!1;const l=Wt.propertiesCodes[n];if(!l)return this._emitError(new Error("Unknown property")),!1;if(l==="userProperties"){a[l]||(a[l]=Object.create(null));const c=this._parseByType(Wt.propertiesTypes[l]);if(a[l][c.name])if(Array.isArray(a[l][c.name]))a[l][c.name].push(c.value);else{const d=a[l][c.name];a[l][c.name]=[d],a[l][c.name].push(c.value)}else a[l][c.name]=c.value;continue}a[l]?Array.isArray(a[l])?a[l].push(this._parseByType(Wt.propertiesTypes[l])):(a[l]=[a[l]],a[l].push(this._parseByType(Wt.propertiesTypes[l]))):a[l]=this._parseByType(Wt.propertiesTypes[l])}return a}_newPacket(){return ot("_newPacket"),this.packet&&(this._list.consume(this.packet.length),ot("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),ot("_newPacket: new packet"),this.packet=new b1,this._pos=0,!0}_emitError(t){ot("_emitError"),this.error=t,this.emit("error",t)}}var cI=eh;const dI=65536,j3={},pI=ke.Buffer.isBuffer(ke.Buffer.from([1,2]).subarray(0,1));function U3(e){const t=ke.Buffer.allocUnsafe(2);return t.writeUInt8(e>>8,0),t.writeUInt8(e&255,0+1),t}function vI(){for(let e=0;e<dI;e++)j3[e]=U3(e)}function gI(e){let r=0,i=0;const a=ke.Buffer.allocUnsafe(4);do r=e%128|0,e=e/128|0,e>0&&(r=r|128),a.writeUInt8(r,i++);while(e>0&&i<4);return e>0&&(i=0),pI?a.subarray(0,i):a.slice(0,i)}function mI(e){const t=ke.Buffer.allocUnsafe(4);return t.writeUInt32BE(e,0),t}var yI={cache:j3,generateCache:vI,generateNumber:U3,genBufVariableByteInt:gI,generate4ByteBuffer:mI},Op={exports:{}};typeof _e>"u"||!_e.version||_e.version.indexOf("v0.")===0||_e.version.indexOf("v1.")===0&&_e.version.indexOf("v1.8.")!==0?Op.exports={nextTick:bI}:Op.exports=_e;function bI(e,t,r,i){if(typeof e!="function")throw new TypeError('"callback" argument must be a function');var a=arguments.length,n,l;switch(a){case 0:case 1:return _e.nextTick(e);case 2:return _e.nextTick(function(){e.call(null,t)});case 3:return _e.nextTick(function(){e.call(null,t,r)});case 4:return _e.nextTick(function(){e.call(null,t,r,i)});default:for(n=new Array(a-1),l=0;l<n.length;)n[l++]=arguments[l];return _e.nextTick(function(){e.apply(null,n)})}}var wI=Op.exports;const lt=F3,_I=ke.Buffer.allocUnsafe(0),MI=ke.Buffer.from([0]),_l=yI,SI=wI.nextTick,mi=no("mqtt-packet:writeToStream"),th=_l.cache,xI=_l.generateNumber,EI=_l.generateCache,Ip=_l.genBufVariableByteInt,RI=_l.generate4ByteBuffer;let Ur=Pp,rh=!0;function H3(e,t,r){switch(mi("generate called"),t.cork&&(t.cork(),SI(AI,t)),rh&&(rh=!1,EI()),mi("generate: packet.cmd: %s",e.cmd),e.cmd){case"connect":return TI(e,t);case"connack":return OI(e,t,r);case"publish":return II(e,t,r);case"puback":case"pubrec":case"pubrel":case"pubcomp":return PI(e,t,r);case"subscribe":return CI(e,t,r);case"suback":return BI(e,t,r);case"unsubscribe":return LI(e,t,r);case"unsuback":return NI(e,t,r);case"pingreq":case"pingresp":return kI(e,t);case"disconnect":return $I(e,t,r);case"auth":return DI(e,t,r);default:return t.emit("error",new Error("Unknown command")),!1}}Object.defineProperty(H3,"cacheNumbers",{get(){return Ur===Pp},set(e){e?((!th||Object.keys(th).length===0)&&(rh=!0),Ur=Pp):(rh=!1,Ur=FI)}});function AI(e){e.uncork()}function TI(e,t,r){const i=e||{},a=i.protocolId||"MQTT";let n=i.protocolVersion||4;const l=i.will;let c=i.clean;const d=i.keepalive||0,m=i.clientId||"",M=i.username,S=i.password,R=i.properties;c===void 0&&(c=!0);let I=0;if(!a||typeof a!="string"&&!ke.Buffer.isBuffer(a))return t.emit("error",new Error("Invalid protocolId")),!1;if(I+=a.length+2,n!==3&&n!==4&&n!==5)return t.emit("error",new Error("Invalid protocol version")),!1;if(I+=1,(typeof m=="string"||ke.Buffer.isBuffer(m))&&(m||n>=4)&&(m||c))I+=ke.Buffer.byteLength(m)+2;else{if(n<4)return t.emit("error",new Error("clientId must be supplied before 3.1.1")),!1;if(c*1===0)return t.emit("error",new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof d!="number"||d<0||d>65535||d%1!==0)return t.emit("error",new Error("Invalid keepalive")),!1;if(I+=2,I+=1,n===5){var O=Lo(t,R);if(!O)return!1;I+=O.length}if(l){if(typeof l!="object")return t.emit("error",new Error("Invalid will")),!1;if(!l.topic||typeof l.topic!="string")return t.emit("error",new Error("Invalid will topic")),!1;if(I+=ke.Buffer.byteLength(l.topic)+2,I+=2,l.payload)if(l.payload.length>=0)typeof l.payload=="string"?I+=ke.Buffer.byteLength(l.payload):I+=l.payload.length;else return t.emit("error",new Error("Invalid will payload")),!1;var B={};if(n===5){if(B=Lo(t,l.properties),!B)return!1;I+=B.length}}let L=!1;if(M!=null)if(x1(M))L=!0,I+=ke.Buffer.byteLength(M)+2;else return t.emit("error",new Error("Invalid username")),!1;if(S!=null){if(!L)return t.emit("error",new Error("Username is required to use password")),!1;if(x1(S))I+=q3(S)+2;else return t.emit("error",new Error("Invalid password")),!1}t.write(lt.CONNECT_HEADER),xi(t,I),Ga(t,a),i.bridgeMode&&(n+=128),t.write(n===131?lt.VERSION131:n===132?lt.VERSION132:n===4?lt.VERSION4:n===5?lt.VERSION5:lt.VERSION3);let P=0;return P|=M!=null?lt.USERNAME_MASK:0,P|=S!=null?lt.PASSWORD_MASK:0,P|=l&&l.retain?lt.WILL_RETAIN_MASK:0,P|=l&&l.qos?l.qos<<lt.WILL_QOS_SHIFT:0,P|=l?lt.WILL_FLAG_MASK:0,P|=c?lt.CLEAN_SESSION_MASK:0,t.write(ke.Buffer.from([P])),Ur(t,d),n===5&&O.write(),Ga(t,m),l&&(n===5&&B.write(),wa(t,l.topic),Ga(t,l.payload)),M!=null&&Ga(t,M),S!=null&&Ga(t,S),!0}function OI(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=i===5?a.reasonCode:a.returnCode,l=a.properties;let c=2;if(typeof n!="number")return t.emit("error",new Error("Invalid return code")),!1;let d=null;if(i===5){if(d=Lo(t,l),!d)return!1;c+=d.length}return t.write(lt.CONNACK_HEADER),xi(t,c),t.write(a.sessionPresent?lt.SESSIONPRESENT_HEADER:MI),t.write(ke.Buffer.from([n])),d!=null&&d.write(),!0}function II(e,t,r){mi("publish: packet: %o",e);const i=r?r.protocolVersion:4,a=e||{},n=a.qos||0,l=a.retain?lt.RETAIN_MASK:0,c=a.topic,d=a.payload||_I,m=a.messageId,M=a.properties;let S=0;if(typeof c=="string")S+=ke.Buffer.byteLength(c)+2;else if(ke.Buffer.isBuffer(c))S+=c.length+2;else return t.emit("error",new Error("Invalid topic")),!1;if(ke.Buffer.isBuffer(d)?S+=d.length:S+=ke.Buffer.byteLength(d),n&&typeof m!="number")return t.emit("error",new Error("Invalid messageId")),!1;n&&(S+=2);let R=null;if(i===5){if(R=Lo(t,M),!R)return!1;S+=R.length}return t.write(lt.PUBLISH_HEADER[n][a.dup?1:0][l?1:0]),xi(t,S),Ur(t,q3(c)),t.write(c),n>0&&Ur(t,m),R!=null&&R.write(),mi("publish: payload: %o",d),t.write(d)}function PI(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.cmd||"puback",l=a.messageId,c=a.dup&&n==="pubrel"?lt.DUP_MASK:0;let d=0;const m=a.reasonCode,M=a.properties;let S=i===5?3:2;if(n==="pubrel"&&(d=1),typeof l!="number")return t.emit("error",new Error("Invalid messageId")),!1;let R=null;if(i===5&&typeof M=="object"){if(R=Ml(t,M,r,S),!R)return!1;S+=R.length}return t.write(lt.ACKS[n][d][c][0]),xi(t,S),Ur(t,l),i===5&&t.write(ke.Buffer.from([m])),R!==null&&R.write(),!0}function CI(e,t,r){mi("subscribe: packet: ");const i=r?r.protocolVersion:4,a=e||{},n=a.dup?lt.DUP_MASK:0,l=a.messageId,c=a.subscriptions,d=a.properties;let m=0;if(typeof l!="number")return t.emit("error",new Error("Invalid messageId")),!1;m+=2;let M=null;if(i===5){if(M=Lo(t,d),!M)return!1;m+=M.length}if(typeof c=="object"&&c.length)for(let R=0;R<c.length;R+=1){const I=c[R].topic,O=c[R].qos;if(typeof I!="string")return t.emit("error",new Error("Invalid subscriptions - invalid topic")),!1;if(typeof O!="number")return t.emit("error",new Error("Invalid subscriptions - invalid qos")),!1;if(i===5){if(typeof(c[R].nl||!1)!="boolean")return t.emit("error",new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(c[R].rap||!1)!="boolean")return t.emit("error",new Error("Invalid subscriptions - invalid Retain as Published")),!1;const P=c[R].rh||0;if(typeof P!="number"||P>2)return t.emit("error",new Error("Invalid subscriptions - invalid Retain Handling")),!1}m+=ke.Buffer.byteLength(I)+2+1}else return t.emit("error",new Error("Invalid subscriptions")),!1;mi("subscribe: writing to stream: %o",lt.SUBSCRIBE_HEADER),t.write(lt.SUBSCRIBE_HEADER[1][n?1:0][0]),xi(t,m),Ur(t,l),M!==null&&M.write();let S=!0;for(const R of c){const I=R.topic,O=R.qos,B=+R.nl,L=+R.rap,P=R.rh;let C;wa(t,I),C=lt.SUBSCRIBE_OPTIONS_QOS[O],i===5&&(C|=B?lt.SUBSCRIBE_OPTIONS_NL:0,C|=L?lt.SUBSCRIBE_OPTIONS_RAP:0,C|=P?lt.SUBSCRIBE_OPTIONS_RH[P]:0),S=t.write(ke.Buffer.from([C]))}return S}function BI(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.messageId,l=a.granted,c=a.properties;let d=0;if(typeof n!="number")return t.emit("error",new Error("Invalid messageId")),!1;if(d+=2,typeof l=="object"&&l.length)for(let M=0;M<l.length;M+=1){if(typeof l[M]!="number")return t.emit("error",new Error("Invalid qos vector")),!1;d+=1}else return t.emit("error",new Error("Invalid qos vector")),!1;let m=null;if(i===5){if(m=Ml(t,c,r,d),!m)return!1;d+=m.length}return t.write(lt.SUBACK_HEADER),xi(t,d),Ur(t,n),m!==null&&m.write(),t.write(ke.Buffer.from(l))}function LI(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.messageId,l=a.dup?lt.DUP_MASK:0,c=a.unsubscriptions,d=a.properties;let m=0;if(typeof n!="number")return t.emit("error",new Error("Invalid messageId")),!1;if(m+=2,typeof c=="object"&&c.length)for(let R=0;R<c.length;R+=1){if(typeof c[R]!="string")return t.emit("error",new Error("Invalid unsubscriptions")),!1;m+=ke.Buffer.byteLength(c[R])+2}else return t.emit("error",new Error("Invalid unsubscriptions")),!1;let M=null;if(i===5){if(M=Lo(t,d),!M)return!1;m+=M.length}t.write(lt.UNSUBSCRIBE_HEADER[1][l?1:0][0]),xi(t,m),Ur(t,n),M!==null&&M.write();let S=!0;for(let R=0;R<c.length;R++)S=wa(t,c[R]);return S}function NI(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.messageId,l=a.dup?lt.DUP_MASK:0,c=a.granted,d=a.properties,m=a.cmd,M=0;let S=2;if(typeof n!="number")return t.emit("error",new Error("Invalid messageId")),!1;if(i===5)if(typeof c=="object"&&c.length)for(let I=0;I<c.length;I+=1){if(typeof c[I]!="number")return t.emit("error",new Error("Invalid qos vector")),!1;S+=1}else return t.emit("error",new Error("Invalid qos vector")),!1;let R=null;if(i===5){if(R=Ml(t,d,r,S),!R)return!1;S+=R.length}return t.write(lt.ACKS[m][M][l][0]),xi(t,S),Ur(t,n),R!==null&&R.write(),i===5&&t.write(ke.Buffer.from(c)),!0}function kI(e,t,r){return t.write(lt.EMPTY[e.cmd])}function $I(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.reasonCode,l=a.properties;let c=i===5?1:0,d=null;if(i===5){if(d=Ml(t,l,r,c),!d)return!1;c+=d.length}return t.write(ke.Buffer.from([lt.codes.disconnect<<4])),xi(t,c),i===5&&t.write(ke.Buffer.from([n])),d!==null&&d.write(),!0}function DI(e,t,r){const i=r?r.protocolVersion:4,a=e||{},n=a.reasonCode,l=a.properties;let c=i===5?1:0;i!==5&&t.emit("error",new Error("Invalid mqtt version for auth packet"));const d=Ml(t,l,r,c);return d?(c+=d.length,t.write(ke.Buffer.from([lt.codes.auth<<4])),xi(t,c),t.write(ke.Buffer.from([n])),d!==null&&d.write(),!0):!1}const w1={};function xi(e,t){if(t>lt.VARBYTEINT_MAX)return e.emit("error",new Error(`Invalid variable byte integer: ${t}`)),!1;let r=w1[t];return r||(r=Ip(t),t<16384&&(w1[t]=r)),mi("writeVarByteInt: writing to stream: %o",r),e.write(r)}function wa(e,t){const r=ke.Buffer.byteLength(t);return Ur(e,r),mi("writeString: %s",t),e.write(t,"utf8")}function _1(e,t,r){wa(e,t),wa(e,r)}function Pp(e,t){return mi("writeNumberCached: number: %d",t),mi("writeNumberCached: %o",th[t]),e.write(th[t])}function FI(e,t){const r=xI(t);return mi("writeNumberGenerated: %o",r),e.write(r)}function jI(e,t){const r=RI(t);return mi("write4ByteNumber: %o",r),e.write(r)}function Ga(e,t){typeof t=="string"?wa(e,t):t?(Ur(e,t.length),e.write(t)):Ur(e,0)}function Lo(e,t){if(typeof t!="object"||t.length!=null)return{length:1,write(){S1(e,{},0)}};let r=0;function i(n,l){const c=lt.propertiesTypes[n];let d=0;switch(c){case"byte":{if(typeof l!="boolean")return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+1;break}case"int8":{if(typeof l!="number"||l<0||l>255)return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+1;break}case"binary":{if(l&&l===null)return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+ke.Buffer.byteLength(l)+2;break}case"int16":{if(typeof l!="number"||l<0||l>65535)return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+2;break}case"int32":{if(typeof l!="number"||l<0||l>4294967295)return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+4;break}case"var":{if(typeof l!="number"||l<0||l>268435455)return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+ke.Buffer.byteLength(Ip(l));break}case"string":{if(typeof l!="string")return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=1+2+ke.Buffer.byteLength(l.toString());break}case"pair":{if(typeof l!="object")return e.emit("error",new Error(`Invalid ${n}: ${l}`)),!1;d+=Object.getOwnPropertyNames(l).reduce((m,M)=>{const S=l[M];return Array.isArray(S)?m+=S.reduce((R,I)=>(R+=1+2+ke.Buffer.byteLength(M.toString())+2+ke.Buffer.byteLength(I.toString()),R),0):m+=1+2+ke.Buffer.byteLength(M.toString())+2+ke.Buffer.byteLength(l[M].toString()),m},0);break}default:return e.emit("error",new Error(`Invalid property ${n}: ${l}`)),!1}return d}if(t)for(const n in t){let l=0,c=0;const d=t[n];if(Array.isArray(d))for(let m=0;m<d.length;m++){if(c=i(n,d[m]),!c)return!1;l+=c}else{if(c=i(n,d),!c)return!1;l=c}if(!l)return!1;r+=l}return{length:ke.Buffer.byteLength(Ip(r))+r,write(){S1(e,t,r)}}}function Ml(e,t,r,i){const a=["reasonString","userProperties"],n=r&&r.properties&&r.properties.maximumPacketSize?r.properties.maximumPacketSize:0;let l=Lo(e,t);if(n)for(;i+l.length>n;){const c=a.shift();if(c&&t[c])delete t[c],l=Lo(e,t);else return!1}return l}function M1(e,t,r){switch(lt.propertiesTypes[t]){case"byte":{e.write(ke.Buffer.from([lt.properties[t]])),e.write(ke.Buffer.from([+r]));break}case"int8":{e.write(ke.Buffer.from([lt.properties[t]])),e.write(ke.Buffer.from([r]));break}case"binary":{e.write(ke.Buffer.from([lt.properties[t]])),Ga(e,r);break}case"int16":{e.write(ke.Buffer.from([lt.properties[t]])),Ur(e,r);break}case"int32":{e.write(ke.Buffer.from([lt.properties[t]])),jI(e,r);break}case"var":{e.write(ke.Buffer.from([lt.properties[t]])),xi(e,r);break}case"string":{e.write(ke.Buffer.from([lt.properties[t]])),wa(e,r);break}case"pair":{Object.getOwnPropertyNames(r).forEach(a=>{const n=r[a];Array.isArray(n)?n.forEach(l=>{e.write(ke.Buffer.from([lt.properties[t]])),_1(e,a.toString(),l.toString())}):(e.write(ke.Buffer.from([lt.properties[t]])),_1(e,a.toString(),n.toString()))});break}default:return e.emit("error",new Error(`Invalid property ${t} value: ${r}`)),!1}}function S1(e,t,r){xi(e,r);for(const i in t)if(Object.prototype.hasOwnProperty.call(t,i)&&t[i]!==null){const a=t[i];if(Array.isArray(a))for(let n=0;n<a.length;n++)M1(e,i,a[n]);else M1(e,i,a)}}function q3(e){return e?e instanceof ke.Buffer?e.length:ke.Buffer.byteLength(e):0}function x1(e){return typeof e=="string"||e instanceof ke.Buffer}var W3=H3;const UI=W3,HI=Lr;function qI(e,t){const r=new WI;return UI(e,r,t),r.concat()}class WI extends HI{constructor(){super(),this._array=new Array(20),this._i=0}write(t){return this._array[this._i++]=t,!0}concat(){let t=0;const r=new Array(this._array.length),i=this._array;let a=0,n;for(n=0;n<i.length&&i[n]!==void 0;n++)typeof i[n]!="string"?r[n]=i[n].length:r[n]=ke.Buffer.byteLength(i[n]),t+=r[n];const l=ke.Buffer.allocUnsafe(t);for(n=0;n<i.length&&i[n]!==void 0;n++)typeof i[n]!="string"?(i[n].copy(l,a),a+=r[n]):(l.write(i[n],a),a+=r[n]);return l}}var KI=qI;Wh.parser=cI.parser;Wh.generate=KI;Wh.writeToStream=W3;function No(){if(!(this instanceof No))return new No;this.nextId=Math.max(1,Math.floor(Math.random()*65535))}No.prototype.allocate=function(){const e=this.nextId++;return this.nextId===65536&&(this.nextId=1),e};No.prototype.getLastAllocated=function(){return this.nextId===1?65535:this.nextId-1};No.prototype.register=function(e){return!0};No.prototype.deallocate=function(e){};No.prototype.clear=function(){};var VI=No;function zI(e,t,r){var i=this;this._callback=e,this._args=r,this._interval=setInterval(e,t,this._args),this.reschedule=function(a){a||(a=i._interval),i._interval&&clearInterval(i._interval),i._interval=setInterval(i._callback,a,i._args)},this.clear=function(){i._interval&&(clearInterval(i._interval),i._interval=void 0)},this.destroy=function(){i._interval&&clearInterval(i._interval),i._callback=void 0,i._interval=void 0,i._args=void 0}}function GI(){if(typeof arguments[0]!="function")throw new Error("callback needed");if(typeof arguments[1]!="number")throw new Error("interval needed");var e;if(arguments.length>0){e=new Array(arguments.length-2);for(var t=0;t<e.length;t++)e[t]=arguments[t+2]}return new zI(arguments[0],arguments[1],e)}var YI=GI,ZI=XI;function ss(e){return e instanceof ke.Buffer?ke.Buffer.from(e):new e.constructor(e.buffer.slice(),e.byteOffset,e.length)}function XI(e){if(e=e||{},e.circles)return JI(e);return e.proto?i:r;function t(a,n){for(var l=Object.keys(a),c=new Array(l.length),d=0;d<l.length;d++){var m=l[d],M=a[m];typeof M!="object"||M===null?c[m]=M:M instanceof Date?c[m]=new Date(M):ArrayBuffer.isView(M)?c[m]=ss(M):c[m]=n(M)}return c}function r(a){if(typeof a!="object"||a===null)return a;if(a instanceof Date)return new Date(a);if(Array.isArray(a))return t(a,r);if(a instanceof Map)return new Map(t(Array.from(a),r));if(a instanceof Set)return new Set(t(Array.from(a),r));var n={};for(var l in a)if(Object.hasOwnProperty.call(a,l)!==!1){var c=a[l];typeof c!="object"||c===null?n[l]=c:c instanceof Date?n[l]=new Date(c):c instanceof Map?n[l]=new Map(t(Array.from(c),r)):c instanceof Set?n[l]=new Set(t(Array.from(c),r)):ArrayBuffer.isView(c)?n[l]=ss(c):n[l]=r(c)}return n}function i(a){if(typeof a!="object"||a===null)return a;if(a instanceof Date)return new Date(a);if(Array.isArray(a))return t(a,i);if(a instanceof Map)return new Map(t(Array.from(a),i));if(a instanceof Set)return new Set(t(Array.from(a),i));var n={};for(var l in a){var c=a[l];typeof c!="object"||c===null?n[l]=c:c instanceof Date?n[l]=new Date(c):c instanceof Map?n[l]=new Map(t(Array.from(c),i)):c instanceof Set?n[l]=new Set(t(Array.from(c),i)):ArrayBuffer.isView(c)?n[l]=ss(c):n[l]=i(c)}return n}}function JI(e){var t=[],r=[];return e.proto?n:a;function i(l,c){for(var d=Object.keys(l),m=new Array(d.length),M=0;M<d.length;M++){var S=d[M],R=l[S];if(typeof R!="object"||R===null)m[S]=R;else if(R instanceof Date)m[S]=new Date(R);else if(ArrayBuffer.isView(R))m[S]=ss(R);else{var I=t.indexOf(R);I!==-1?m[S]=r[I]:m[S]=c(R)}}return m}function a(l){if(typeof l!="object"||l===null)return l;if(l instanceof Date)return new Date(l);if(Array.isArray(l))return i(l,a);if(l instanceof Map)return new Map(i(Array.from(l),a));if(l instanceof Set)return new Set(i(Array.from(l),a));var c={};t.push(l),r.push(c);for(var d in l)if(Object.hasOwnProperty.call(l,d)!==!1){var m=l[d];if(typeof m!="object"||m===null)c[d]=m;else if(m instanceof Date)c[d]=new Date(m);else if(m instanceof Map)c[d]=new Map(i(Array.from(m),a));else if(m instanceof Set)c[d]=new Set(i(Array.from(m),a));else if(ArrayBuffer.isView(m))c[d]=ss(m);else{var M=t.indexOf(m);M!==-1?c[d]=r[M]:c[d]=a(m)}}return t.pop(),r.pop(),c}function n(l){if(typeof l!="object"||l===null)return l;if(l instanceof Date)return new Date(l);if(Array.isArray(l))return i(l,n);if(l instanceof Map)return new Map(i(Array.from(l),n));if(l instanceof Set)return new Set(i(Array.from(l),n));var c={};t.push(l),r.push(c);for(var d in l){var m=l[d];if(typeof m!="object"||m===null)c[d]=m;else if(m instanceof Date)c[d]=new Date(m);else if(m instanceof Map)c[d]=new Map(i(Array.from(m),n));else if(m instanceof Set)c[d]=new Set(i(Array.from(m),n));else if(ArrayBuffer.isView(m))c[d]=ss(m);else{var M=t.indexOf(m);M!==-1?c[d]=r[M]:c[d]=n(m)}}return t.pop(),r.pop(),c}}var QI=ZI();function eP(e){const t=e.split("/");for(let r=0;r<t.length;r++)if(t[r]!=="+"){if(t[r]==="#")return r===t.length-1;if(t[r].indexOf("+")!==-1||t[r].indexOf("#")!==-1)return!1}return!0}function tP(e){if(e.length===0)return"empty_topic_list";for(let t=0;t<e.length;t++)if(!eP(e[t]))return e[t];return null}var rP={validateTopics:tP};const K3=Lr.EventEmitter,ih=u3,iP=vT,nP=EO,V3=Wh,oP=VI,aP=bl.Writable,sP=Ye,fP=YI,z3=QI,G3=rP,Gh=ig,Ue=no("mqttjs:client"),vg=_e?_e.nextTick:function(e){setTimeout(e,0)},gg=Ze.setImmediate||function(e){vg(e)},E1={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0},nh={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};function lP(){return"mqttjs_"+Math.random().toString(16).substr(2,8)}function uP(e,t){if(e.options.protocolVersion===5&&t.cmd==="publish"){let r;t.properties&&(r=t.properties.topicAlias);const i=t.topic.toString();if(e.topicAliasSend)if(r){if(i.length!==0&&(Ue("applyTopicAlias :: register topic: %s - alias: %d",i,r),!e.topicAliasSend.put(i,r)))return Ue("applyTopicAlias :: error out of range. topic: %s - alias: %d",i,r),new Error("Sending Topic Alias out of range")}else i.length!==0&&(e.options.autoAssignTopicAlias?(r=e.topicAliasSend.getAliasByTopic(i),r?(t.topic="",t.properties={...t.properties,topicAlias:r},Ue("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",i,r)):(r=e.topicAliasSend.getLruAlias(),e.topicAliasSend.put(i,r),t.properties={...t.properties,topicAlias:r},Ue("applyTopicAlias :: auto assign topic: %s - alias: %d",i,r))):e.options.autoUseTopicAlias&&(r=e.topicAliasSend.getAliasByTopic(i),r&&(t.topic="",t.properties={...t.properties,topicAlias:r},Ue("applyTopicAlias :: auto use topic: %s - alias: %d",i,r))));else if(r)return Ue("applyTopicAlias :: error out of range. topic: %s - alias: %d",i,r),new Error("Sending Topic Alias out of range")}}function Y3(e,t){let r;t.properties&&(r=t.properties.topicAlias);let i=t.topic.toString();if(i.length===0){if(typeof r>"u")return new Error("Unregistered Topic Alias");if(i=e.topicAliasSend.getTopicByAlias(r),typeof i>"u")return new Error("Unregistered Topic Alias");t.topic=i}r&&delete t.properties.topicAlias}function fs(e,t,r){Ue("sendPacket :: packet: %O",t),Ue("sendPacket :: emitting `packetsend`"),e.emit("packetsend",t),Ue("sendPacket :: writing to stream");const i=V3.writeToStream(t,e.stream,e.options);Ue("sendPacket :: writeToStream result %s",i),!i&&r&&r!==wr?(Ue("sendPacket :: handle events on `drain` once through callback."),e.stream.once("drain",r)):r&&(Ue("sendPacket :: invoking cb"),r())}function hP(e){e&&(Ue("flush: queue exists? %b",!!e),Object.keys(e).forEach(function(t){typeof e[t].cb=="function"&&(e[t].cb(new Error("Connection closed")),delete e[t])}))}function cP(e){e&&(Ue("flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(e).forEach(function(t){e[t].volatile&&typeof e[t].cb=="function"&&(e[t].cb(new Error("Connection closed")),delete e[t])}))}function R1(e,t,r,i){Ue("storeAndSend :: store packet with cmd %s to outgoingStore",t.cmd);let a=t,n;if(a.cmd==="publish"&&(a=z3(t),n=Y3(e,a),n))return r&&r(n);e.outgoingStore.put(a,function(c){if(c)return r&&r(c);i(),fs(e,t,r)})}function wr(e){Ue("nop ::",e)}function mt(e,t){let r;const i=this;if(!(this instanceof mt))return new mt(e,t);this.options=t||{};for(r in E1)typeof this.options[r]>"u"?this.options[r]=E1[r]:this.options[r]=t[r];Ue("MqttClient :: options.protocol",t.protocol),Ue("MqttClient :: options.protocolVersion",t.protocolVersion),Ue("MqttClient :: options.username",t.username),Ue("MqttClient :: options.keepalive",t.keepalive),Ue("MqttClient :: options.reconnectPeriod",t.reconnectPeriod),Ue("MqttClient :: options.rejectUnauthorized",t.rejectUnauthorized),Ue("MqttClient :: options.topicAliasMaximum",t.topicAliasMaximum),this.options.clientId=typeof t.clientId=="string"?t.clientId:lP(),Ue("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=t.protocolVersion===5&&t.customHandleAcks?t.customHandleAcks:function(){arguments[3](0)},this.streamBuilder=e,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new oP:this.options.messageIdProvider,this.outgoingStore=t.outgoingStore||new ih,this.incomingStore=t.incomingStore||new ih,this.queueQoSZero=t.queueQoSZero===void 0?!0:t.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.pingTimer=null,this.connected=!1,this.disconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,t.topicAliasMaximum>0&&(t.topicAliasMaximum>65535?Ue("MqttClient :: options.topicAliasMaximum is out of range"):this.topicAliasRecv=new iP(t.topicAliasMaximum)),this.on("connect",function(){const a=this.queue;function n(){const l=a.shift();Ue("deliver :: entry %o",l);let c=null;if(!l){i._resubscribe();return}c=l.packet,Ue("deliver :: call _sendPacket for %o",c);let d=!0;c.messageId&&c.messageId!==0&&(i.messageIdProvider.register(c.messageId)||(d=!1)),d?i._sendPacket(c,function(m){l.cb&&l.cb(m),n()}):(Ue("messageId: %d has already used. The message is skipped and removed.",c.messageId),n())}Ue("connect :: sending queued packets"),n()}),this.on("close",function(){Ue("close :: connected set to `false`"),this.connected=!1,Ue("close :: clearing connackTimer"),clearTimeout(this.connackTimer),Ue("close :: clearing ping timer"),i.pingTimer!==null&&(i.pingTimer.clear(),i.pingTimer=null),this.topicAliasRecv&&this.topicAliasRecv.clear(),Ue("close :: calling _setupReconnect"),this._setupReconnect()}),K3.call(this),Ue("MqttClient :: setting up stream"),this._setupStream()}sP(mt,K3);mt.prototype._setupStream=function(){const e=this,t=new aP,r=V3.parser(this.options);let i=null;const a=[];Ue("_setupStream :: calling method to clear reconnect"),this._clearReconnect(),Ue("_setupStream :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),r.on("packet",function(m){Ue("parser :: on packet push to packets array."),a.push(m)});function n(){if(a.length)vg(l);else{const m=i;i=null,m()}}function l(){Ue("work :: getting next packet in queue");const m=a.shift();if(m)Ue("work :: packet pulled from queue"),e._handlePacket(m,n);else{Ue("work :: no packets in queue");const M=i;i=null,Ue("work :: done flag is %s",!!M),M&&M()}}t._write=function(m,M,S){i=S,Ue("writable stream :: parsing buffer"),r.parse(m),l()};function c(m){Ue("streamErrorHandler :: error",m.message),m.code?(Ue("streamErrorHandler :: emitting error"),e.emit("error",m)):wr(m)}Ue("_setupStream :: pipe stream to writable stream"),this.stream.pipe(t),this.stream.on("error",c),this.stream.on("close",function(){Ue("(%s)stream :: on close",e.options.clientId),cP(e.outgoing),Ue("stream: emit close to MqttClient"),e.emit("close")}),Ue("_setupStream: sending packet `connect`");const d=Object.create(this.options);if(d.cmd="connect",this.topicAliasRecv&&(d.properties||(d.properties={}),this.topicAliasRecv&&(d.properties.topicAliasMaximum=this.topicAliasRecv.max)),fs(this,d),r.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return e.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){const m=Gh({cmd:"auth",reasonCode:0},this.options.authPacket);fs(this,m)}}this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(function(){Ue("!!connectTimeout hit!! Calling _cleanUp with force `true`"),e._cleanUp(!0)},this.options.connectTimeout)};mt.prototype._handlePacket=function(e,t){const r=this.options;if(r.protocolVersion===5&&r.properties&&r.properties.maximumPacketSize&&r.properties.maximumPacketSize<e.length)return this.emit("error",new Error("exceeding packets size "+e.cmd)),this.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),this;switch(Ue("_handlePacket :: emitting packetreceive"),this.emit("packetreceive",e),e.cmd){case"publish":this._handlePublish(e,t);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":this._handleAck(e),t();break;case"pubrel":this._handlePubrel(e,t);break;case"connack":this._handleConnack(e),t();break;case"auth":this._handleAuth(e),t();break;case"pingresp":this._handlePingresp(e),t();break;case"disconnect":this._handleDisconnect(e),t();break}};mt.prototype._checkDisconnecting=function(e){return this.disconnecting&&(e&&e!==wr?e(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting};mt.prototype.publish=function(e,t,r,i){Ue("publish :: message `%s` to topic `%s`",t,e);const a=this.options;if(typeof r=="function"&&(i=r,r=null),r=Gh({qos:0,retain:!1,dup:!1},r),this._checkDisconnecting(i))return this;const l=this,c=function(){let d=0;if((r.qos===1||r.qos===2)&&(d=l._nextId(),d===null))return Ue("No messageId left"),!1;const m={cmd:"publish",topic:e,payload:t,qos:r.qos,retain:r.retain,messageId:d,dup:r.dup};switch(a.protocolVersion===5&&(m.properties=r.properties),Ue("publish :: qos",r.qos),r.qos){case 1:case 2:l.outgoing[m.messageId]={volatile:!1,cb:i||wr},Ue("MqttClient:publish: packet cmd: %s",m.cmd),l._sendPacket(m,void 0,r.cbStorePut);break;default:Ue("MqttClient:publish: packet cmd: %s",m.cmd),l._sendPacket(m,i,r.cbStorePut);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!c())&&this._storeProcessingQueue.push({invoke:c,cbStorePut:r.cbStorePut,callback:i}),this};mt.prototype.subscribe=function(){const e=this,t=new Array(arguments.length);for(let S=0;S<arguments.length;S++)t[S]=arguments[S];const r=[];let i=t.shift();const a=i.resubscribe;let n=t.pop()||wr,l=t.pop();const c=this.options.protocolVersion;delete i.resubscribe,typeof i=="string"&&(i=[i]),typeof n!="function"&&(l=n,n=wr);const d=G3.validateTopics(i);if(d!==null)return gg(n,new Error("Invalid topic "+d)),this;if(this._checkDisconnecting(n))return Ue("subscribe: discconecting true"),this;const m={qos:0};if(c===5&&(m.nl=!1,m.rap=!1,m.rh=0),l=Gh(m,l),Array.isArray(i)?i.forEach(function(S){if(Ue("subscribe: array topic %s",S),!Object.prototype.hasOwnProperty.call(e._resubscribeTopics,S)||e._resubscribeTopics[S].qos<l.qos||a){const R={topic:S,qos:l.qos};c===5&&(R.nl=l.nl,R.rap=l.rap,R.rh=l.rh,R.properties=l.properties),Ue("subscribe: pushing topic `%s` and qos `%s` to subs list",R.topic,R.qos),r.push(R)}}):Object.keys(i).forEach(function(S){if(Ue("subscribe: object topic %s",S),!Object.prototype.hasOwnProperty.call(e._resubscribeTopics,S)||e._resubscribeTopics[S].qos<i[S].qos||a){const R={topic:S,qos:i[S].qos};c===5&&(R.nl=i[S].nl,R.rap=i[S].rap,R.rh=i[S].rh,R.properties=l.properties),Ue("subscribe: pushing `%s` to subs list",R),r.push(R)}}),!r.length)return n(null,[]),this;const M=function(){const S=e._nextId();if(S===null)return Ue("No messageId left"),!1;const R={cmd:"subscribe",subscriptions:r,qos:1,retain:!1,dup:!1,messageId:S};if(l.properties&&(R.properties=l.properties),e.options.resubscribe){Ue("subscribe :: resubscribe true");const I=[];r.forEach(function(O){if(e.options.reconnectPeriod>0){const B={qos:O.qos};c===5&&(B.nl=O.nl||!1,B.rap=O.rap||!1,B.rh=O.rh||0,B.properties=O.properties),e._resubscribeTopics[O.topic]=B,I.push(O.topic)}}),e.messageIdToTopic[R.messageId]=I}return e.outgoing[R.messageId]={volatile:!0,cb:function(I,O){if(!I){const B=O.granted;for(let L=0;L<B.length;L+=1)r[L].qos=B[L]}n(I,r)}},Ue("subscribe :: call _sendPacket"),e._sendPacket(R),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!M())&&this._storeProcessingQueue.push({invoke:M,callback:n}),this};mt.prototype.unsubscribe=function(){const e=this,t=new Array(arguments.length);for(let c=0;c<arguments.length;c++)t[c]=arguments[c];let r=t.shift(),i=t.pop()||wr,a=t.pop();typeof r=="string"&&(r=[r]),typeof i!="function"&&(a=i,i=wr);const n=G3.validateTopics(r);if(n!==null)return gg(i,new Error("Invalid topic "+n)),this;if(e._checkDisconnecting(i))return this;const l=function(){const c=e._nextId();if(c===null)return Ue("No messageId left"),!1;const d={cmd:"unsubscribe",qos:1,messageId:c};return typeof r=="string"?d.unsubscriptions=[r]:Array.isArray(r)&&(d.unsubscriptions=r),e.options.resubscribe&&d.unsubscriptions.forEach(function(m){delete e._resubscribeTopics[m]}),typeof a=="object"&&a.properties&&(d.properties=a.properties),e.outgoing[d.messageId]={volatile:!0,cb:i},Ue("unsubscribe: call _sendPacket"),e._sendPacket(d),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!l())&&this._storeProcessingQueue.push({invoke:l,callback:i}),this};mt.prototype.end=function(e,t,r){const i=this;Ue("end :: (%s)",this.options.clientId),(e==null||typeof e!="boolean")&&(r=t||wr,t=e,e=!1,typeof t!="object"&&(r=t,t=null,typeof r!="function"&&(r=wr))),typeof t!="object"&&(r=t,t=null),Ue("end :: cb? %s",!!r),r=r||wr;function a(){Ue("end :: closeStores: closing incoming and outgoing stores"),i.disconnected=!0,i.incomingStore.close(function(l){i.outgoingStore.close(function(c){if(Ue("end :: closeStores: emitting end"),i.emit("end"),r){const d=l||c;Ue("end :: closeStores: invoking callback with args"),r(d)}})}),i._deferredReconnect&&i._deferredReconnect()}function n(){Ue("end :: (%s) :: finish :: calling _cleanUp with force %s",i.options.clientId,e),i._cleanUp(e,()=>{Ue("end :: finish :: calling process.nextTick on closeStores"),vg(a.bind(i))},t)}return this.disconnecting?(r(),this):(this._clearReconnect(),this.disconnecting=!0,!e&&Object.keys(this.outgoing).length>0?(Ue("end :: (%s) :: calling finish in 10ms once outgoing is empty",i.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,n,10))):(Ue("end :: (%s) :: immediately calling finish",i.options.clientId),n()),this)};mt.prototype.removeOutgoingMessage=function(e){const t=this.outgoing[e]?this.outgoing[e].cb:null;return delete this.outgoing[e],this.outgoingStore.del({messageId:e},function(){t(new Error("Message removed"))}),this};mt.prototype.reconnect=function(e){Ue("client reconnect");const t=this,r=function(){e?(t.options.incomingStore=e.incomingStore,t.options.outgoingStore=e.outgoingStore):(t.options.incomingStore=null,t.options.outgoingStore=null),t.incomingStore=t.options.incomingStore||new ih,t.outgoingStore=t.options.outgoingStore||new ih,t.disconnecting=!1,t.disconnected=!1,t._deferredReconnect=null,t._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=r:r(),this};mt.prototype._reconnect=function(){Ue("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this._setupStream()}),Ue("client already connected. disconnecting first.")):(Ue("_reconnect: calling _setupStream"),this._setupStream())};mt.prototype._setupReconnect=function(){const e=this;!e.disconnecting&&!e.reconnectTimer&&e.options.reconnectPeriod>0?(this.reconnecting||(Ue("_setupReconnect :: emit `offline` state"),this.emit("offline"),Ue("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),Ue("_setupReconnect :: setting reconnectTimer for %d ms",e.options.reconnectPeriod),e.reconnectTimer=setInterval(function(){Ue("reconnectTimer :: reconnect triggered!"),e._reconnect()},e.options.reconnectPeriod)):Ue("_setupReconnect :: doing nothing...")};mt.prototype._clearReconnect=function(){Ue("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)};mt.prototype._cleanUp=function(e,t){const r=arguments[2];if(t&&(Ue("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",t)),Ue("_cleanUp :: forced? %s",e),e)this.options.reconnectPeriod===0&&this.options.clean&&hP(this.outgoing),Ue("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{const i=Gh({cmd:"disconnect"},r);Ue("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(i,gg.bind(null,this.stream.end.bind(this.stream)))}this.disconnecting||(Ue("_cleanUp :: client not disconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this.pingTimer!==null&&(Ue("_cleanUp :: clearing pingTimer"),this.pingTimer.clear(),this.pingTimer=null),t&&!this.connected&&(Ue("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",t),t())};mt.prototype._sendPacket=function(e,t,r){Ue("_sendPacket :: (%s) ::  start",this.options.clientId),r=r||wr,t=t||wr;const i=uP(this,e);if(i){t(i);return}if(!this.connected){if(e.cmd==="auth"){this._shiftPingInterval(),fs(this,e,t);return}Ue("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(e,t,r);return}switch(this._shiftPingInterval(),e.cmd){case"publish":break;case"pubrel":R1(this,e,t,r);return;default:fs(this,e,t);return}switch(e.qos){case 2:case 1:R1(this,e,t,r);break;case 0:default:fs(this,e,t);break}Ue("_sendPacket :: (%s) ::  end",this.options.clientId)};mt.prototype._storePacket=function(e,t,r){Ue("_storePacket :: packet: %o",e),Ue("_storePacket :: cb? %s",!!t),r=r||wr;let i=e;if(i.cmd==="publish"){i=z3(e);const a=Y3(this,i);if(a)return t&&t(a)}(i.qos||0)===0&&this.queueQoSZero||i.cmd!=="publish"?this.queue.push({packet:i,cb:t}):i.qos>0?(t=this.outgoing[i.messageId]?this.outgoing[i.messageId].cb:null,this.outgoingStore.put(i,function(a){if(a)return t&&t(a);r()})):t&&t(new Error("No connection to broker"))};mt.prototype._setupPingTimer=function(){Ue("_setupPingTimer :: keepalive %d (seconds)",this.options.keepalive);const e=this;!this.pingTimer&&this.options.keepalive&&(this.pingResp=!0,this.pingTimer=fP(function(){e._checkPing()},this.options.keepalive*1e3))};mt.prototype._shiftPingInterval=function(){this.pingTimer&&this.options.keepalive&&this.options.reschedulePings&&this.pingTimer.reschedule(this.options.keepalive*1e3)};mt.prototype._checkPing=function(){Ue("_checkPing :: checking ping..."),this.pingResp?(Ue("_checkPing :: ping response received. Clearing flag and sending `pingreq`"),this.pingResp=!1,this._sendPacket({cmd:"pingreq"})):(Ue("_checkPing :: calling _cleanUp with force true"),this._cleanUp(!0))};mt.prototype._handlePingresp=function(){this.pingResp=!0};mt.prototype._handleConnack=function(e){Ue("_handleConnack");const t=this.options,i=t.protocolVersion===5?e.reasonCode:e.returnCode;if(clearTimeout(this.connackTimer),delete this.topicAliasSend,e.properties){if(e.properties.topicAliasMaximum){if(e.properties.topicAliasMaximum>65535){this.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}e.properties.topicAliasMaximum>0&&(this.topicAliasSend=new nP(e.properties.topicAliasMaximum))}e.properties.serverKeepAlive&&t.keepalive&&(t.keepalive=e.properties.serverKeepAlive,this._shiftPingInterval()),e.properties.maximumPacketSize&&(t.properties||(t.properties={}),t.properties.maximumPacketSize=e.properties.maximumPacketSize)}if(i===0)this.reconnecting=!1,this._onConnect(e);else if(i>0){const a=new Error("Connection refused: "+nh[i]);a.code=i,this.emit("error",a)}};mt.prototype._handleAuth=function(e){const r=this.options.protocolVersion,i=r===5?e.reasonCode:e.returnCode;if(r!==5){const n=new Error("Protocol error: Auth packets are only supported in MQTT 5. Your version:"+r);n.code=i,this.emit("error",n);return}const a=this;this.handleAuth(e,function(n,l){if(n){a.emit("error",n);return}if(i===24)a.reconnecting=!1,a._sendPacket(l);else{const c=new Error("Connection refused: "+nh[i]);n.code=i,a.emit("error",c)}})};mt.prototype.handleAuth=function(e,t){t()};mt.prototype._handlePublish=function(e,t){Ue("_handlePublish: packet %o",e),t=typeof t<"u"?t:wr;let r=e.topic.toString();const i=e.payload,a=e.qos,n=e.messageId,l=this,c=this.options,d=[0,16,128,131,135,144,145,151,153];if(this.options.protocolVersion===5){let m;if(e.properties&&(m=e.properties.topicAlias),typeof m<"u")if(r.length===0)if(m>0&&m<=65535){const M=this.topicAliasRecv.getTopicByAlias(m);if(M)r=M,Ue("_handlePublish :: topic complemented by alias. topic: %s - alias: %d",r,m);else{Ue("_handlePublish :: unregistered topic alias. alias: %d",m),this.emit("error",new Error("Received unregistered Topic Alias"));return}}else{Ue("_handlePublish :: topic alias out of range. alias: %d",m),this.emit("error",new Error("Received Topic Alias is out of range"));return}else if(this.topicAliasRecv.put(r,m))Ue("_handlePublish :: registered topic: %s - alias: %d",r,m);else{Ue("_handlePublish :: topic alias out of range. alias: %d",m),this.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(Ue("_handlePublish: qos %d",a),a){case 2:{c.customHandleAcks(r,i,e,function(m,M){if(m instanceof Error||(M=m,m=null),m)return l.emit("error",m);if(d.indexOf(M)===-1)return l.emit("error",new Error("Wrong reason code for pubrec"));M?l._sendPacket({cmd:"pubrec",messageId:n,reasonCode:M},t):l.incomingStore.put(e,function(){l._sendPacket({cmd:"pubrec",messageId:n},t)})});break}case 1:{c.customHandleAcks(r,i,e,function(m,M){if(m instanceof Error||(M=m,m=null),m)return l.emit("error",m);if(d.indexOf(M)===-1)return l.emit("error",new Error("Wrong reason code for puback"));M||l.emit("message",r,i,e),l.handleMessage(e,function(S){if(S)return t&&t(S);l._sendPacket({cmd:"puback",messageId:n,reasonCode:M},t)})});break}case 0:this.emit("message",r,i,e),this.handleMessage(e,t);break;default:Ue("_handlePublish: unknown QoS. Doing nothing.");break}};mt.prototype.handleMessage=function(e,t){t()};mt.prototype._handleAck=function(e){const t=e.messageId,r=e.cmd;let i=null;const a=this.outgoing[t]?this.outgoing[t].cb:null,n=this;let l;if(!a){Ue("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(Ue("_handleAck :: packet type",r),r){case"pubcomp":case"puback":{const c=e.reasonCode;c&&c>0&&c!==16&&(l=new Error("Publish error: "+nh[c]),l.code=c,a(l,e)),delete this.outgoing[t],this.outgoingStore.del(e,a),this.messageIdProvider.deallocate(t),this._invokeStoreProcessingQueue();break}case"pubrec":{i={cmd:"pubrel",qos:2,messageId:t};const c=e.reasonCode;c&&c>0&&c!==16?(l=new Error("Publish error: "+nh[c]),l.code=c,a(l,e)):this._sendPacket(i);break}case"suback":{delete this.outgoing[t],this.messageIdProvider.deallocate(t);for(let c=0;c<e.granted.length;c++)if(e.granted[c]&128){const d=this.messageIdToTopic[t];d&&d.forEach(function(m){delete n._resubscribeTopics[m]})}this._invokeStoreProcessingQueue(),a(null,e);break}case"unsuback":{delete this.outgoing[t],this.messageIdProvider.deallocate(t),this._invokeStoreProcessingQueue(),a(null);break}default:n.emit("error",new Error("unrecognized packet type"))}this.disconnecting&&Object.keys(this.outgoing).length===0&&this.emit("outgoingEmpty")};mt.prototype._handlePubrel=function(e,t){Ue("handling pubrel packet"),t=typeof t<"u"?t:wr;const r=e.messageId,i=this,a={cmd:"pubcomp",messageId:r};i.incomingStore.get(e,function(n,l){n?i._sendPacket(a,t):(i.emit("message",l.topic,l.payload,l),i.handleMessage(l,function(c){if(c)return t(c);i.incomingStore.del(l,wr),i._sendPacket(a,t)}))})};mt.prototype._handleDisconnect=function(e){this.emit("disconnect",e)};mt.prototype._nextId=function(){return this.messageIdProvider.allocate()};mt.prototype.getLastMessageId=function(){return this.messageIdProvider.getLastAllocated()};mt.prototype._resubscribe=function(){Ue("_resubscribe");const e=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion===5&&!this.connackPacket.sessionPresent)&&e.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){Ue("_resubscribe: protocolVersion 5");for(let t=0;t<e.length;t++){const r={};r[e[t]]=this._resubscribeTopics[e[t]],r.resubscribe=!0,this.subscribe(r,{properties:r[e[t]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1};mt.prototype._onConnect=function(e){if(this.disconnected){this.emit("connect",e);return}const t=this;this.connackPacket=e,this.messageIdProvider.clear(),this._setupPingTimer(),this.connected=!0;function r(){let i=t.outgoingStore.createStream();function a(){t._storeProcessing=!1,t._packetIdsDuringStoreProcessing={}}t.once("close",n),i.on("error",function(c){a(),t._flushStoreProcessingQueue(),t.removeListener("close",n),t.emit("error",c)});function n(){i.destroy(),i=null,t._flushStoreProcessingQueue(),a()}function l(){if(!i)return;t._storeProcessing=!0;const c=i.read(1);let d;if(!c){i.once("readable",l);return}if(t._packetIdsDuringStoreProcessing[c.messageId]){l();return}!t.disconnecting&&!t.reconnectTimer?(d=t.outgoing[c.messageId]?t.outgoing[c.messageId].cb:null,t.outgoing[c.messageId]={volatile:!1,cb:function(m,M){d&&d(m,M),l()}},t._packetIdsDuringStoreProcessing[c.messageId]=!0,t.messageIdProvider.register(c.messageId)?t._sendPacket(c):Ue("messageId: %d has already used.",c.messageId)):i.destroy&&i.destroy()}i.on("end",function(){let c=!0;for(const d in t._packetIdsDuringStoreProcessing)if(!t._packetIdsDuringStoreProcessing[d]){c=!1;break}c?(a(),t.removeListener("close",n),t._invokeAllStoreProcessingQueue(),t.emit("connect",e)):r()}),l()}r()};mt.prototype._invokeStoreProcessingQueue=function(){if(this._storeProcessingQueue.length>0){const e=this._storeProcessingQueue[0];if(e&&e.invoke())return this._storeProcessingQueue.shift(),!0}return!1};mt.prototype._invokeAllStoreProcessingQueue=function(){for(;this._invokeStoreProcessingQueue(););};mt.prototype._flushStoreProcessingQueue=function(){for(const e of this._storeProcessingQueue)e.cbStorePut&&e.cbStorePut(new Error("Connection closed")),e.callback&&e.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)};var dP=mt,Cp={exports:{}},oh={exports:{}};/*! https://mths.be/punycode v1.4.1 by @mathias */oh.exports;(function(e,t){(function(r){var i=t&&!t.nodeType&&t,a=e&&!e.nodeType&&e,n=typeof Ze=="object"&&Ze;(n.global===n||n.window===n||n.self===n)&&(r=n);var l,c=2147483647,d=36,m=1,M=26,S=38,R=700,I=72,O=128,B="-",L=/^xn--/,P=/[^\x20-\x7E]/,C=/[\x2E\u3002\uFF0E\uFF61]/g,j={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},$=d-m,K=Math.floor,G=String.fromCharCode,te;function Q(s){throw new RangeError(j[s])}function W(s,v){for(var T=s.length,k=[];T--;)k[T]=v(s[T]);return k}function ce(s,v){var T=s.split("@"),k="";T.length>1&&(k=T[0]+"@",s=T[1]),s=s.replace(C,".");var Y=s.split("."),ee=W(Y,v).join(".");return k+ee}function _(s){for(var v=[],T=0,k=s.length,Y,ee;T<k;)Y=s.charCodeAt(T++),Y>=55296&&Y<=56319&&T<k?(ee=s.charCodeAt(T++),(ee&64512)==56320?v.push(((Y&1023)<<10)+(ee&1023)+65536):(v.push(Y),T--)):v.push(Y);return v}function o(s){return W(s,function(v){var T="";return v>65535&&(v-=65536,T+=G(v>>>10&1023|55296),v=56320|v&1023),T+=G(v),T}).join("")}function f(s){return s-48<10?s-22:s-65<26?s-65:s-97<26?s-97:d}function u(s,v){return s+22+75*(s<26)-((v!=0)<<5)}function h(s,v,T){var k=0;for(s=T?K(s/R):s>>1,s+=K(s/v);s>$*M>>1;k+=d)s=K(s/$);return K(k+($+1)*s/(s+S))}function p(s){var v=[],T=s.length,k,Y=0,ee=O,A=I,E,q,V,X,b,y,D,U,Z;for(E=s.lastIndexOf(B),E<0&&(E=0),q=0;q<E;++q)s.charCodeAt(q)>=128&&Q("not-basic"),v.push(s.charCodeAt(q));for(V=E>0?E+1:0;V<T;){for(X=Y,b=1,y=d;V>=T&&Q("invalid-input"),D=f(s.charCodeAt(V++)),(D>=d||D>K((c-Y)/b))&&Q("overflow"),Y+=D*b,U=y<=A?m:y>=A+M?M:y-A,!(D<U);y+=d)Z=d-U,b>K(c/Z)&&Q("overflow"),b*=Z;k=v.length+1,A=h(Y-X,k,X==0),K(Y/k)>c-ee&&Q("overflow"),ee+=K(Y/k),Y%=k,v.splice(Y++,0,ee)}return o(v)}function w(s){var v,T,k,Y,ee,A,E,q,V,X,b,y=[],D,U,Z,F;for(s=_(s),D=s.length,v=O,T=0,ee=I,A=0;A<D;++A)b=s[A],b<128&&y.push(G(b));for(k=Y=y.length,Y&&y.push(B);k<D;){for(E=c,A=0;A<D;++A)b=s[A],b>=v&&b<E&&(E=b);for(U=k+1,E-v>K((c-T)/U)&&Q("overflow"),T+=(E-v)*U,v=E,A=0;A<D;++A)if(b=s[A],b<v&&++T>c&&Q("overflow"),b==v){for(q=T,V=d;X=V<=ee?m:V>=ee+M?M:V-ee,!(q<X);V+=d)F=q-X,Z=d-X,y.push(G(u(X+F%Z,0))),q=K(F/Z);y.push(G(u(q,0))),ee=h(T,U,k==Y),T=0,++k}++T,++v}return y.join("")}function x(s){return ce(s,function(v){return L.test(v)?p(v.slice(4).toLowerCase()):v})}function g(s){return ce(s,function(v){return P.test(v)?"xn--"+w(v):v})}if(l={version:"1.4.1",ucs2:{decode:_,encode:o},decode:p,encode:w,toASCII:g,toUnicode:x},i&&a)if(e.exports==i)a.exports=l;else for(te in l)l.hasOwnProperty(te)&&(i[te]=l[te]);else r.punycode=l})(Ze)})(oh,oh.exports);var pP=oh.exports,Bp={exports:{}},il={};function vP(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var gP=function(e,t,r,i){t=t||"&",r=r||"=";var a={};if(typeof e!="string"||e.length===0)return a;var n=/\+/g;e=e.split(t);var l=1e3;i&&typeof i.maxKeys=="number"&&(l=i.maxKeys);var c=e.length;l>0&&c>l&&(c=l);for(var d=0;d<c;++d){var m=e[d].replace(n,"%20"),M=m.indexOf(r),S,R,I,O;M>=0?(S=m.substr(0,M),R=m.substr(M+1)):(S=m,R=""),I=decodeURIComponent(S),O=decodeURIComponent(R),vP(a,I)?mP(a[I])?a[I].push(O):a[I]=[a[I],O]:a[I]=O}return a},mP=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"},df=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},yP=function(e,t,r,i){return t=t||"&",r=r||"=",e===null&&(e=void 0),typeof e=="object"?A1(wP(e),function(a){var n=encodeURIComponent(df(a))+r;return bP(e[a])?A1(e[a],function(l){return n+encodeURIComponent(df(l))}).join(t):n+encodeURIComponent(df(e[a]))}).join(t):i?encodeURIComponent(df(i))+r+encodeURIComponent(df(e)):""},bP=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"};function A1(e,t){if(e.map)return e.map(t);for(var r=[],i=0;i<e.length;i++)r.push(t(e[i],i));return r}var wP=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t};il.decode=il.parse=gP;il.encode=il.stringify=yP;(function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var r=il;function i(l){return encodeURIComponent(l)}function a(l){return decodeURIComponent(l)}var n={decode:r.decode,encode:r.encode,parse:r.parse,stringify:r.stringify,escape:i,unescape:a};Object.defineProperty(t,"decode",{enumerable:!0,get:function(){return r.decode}}),Object.defineProperty(t,"encode",{enumerable:!0,get:function(){return r.encode}}),Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return r.parse}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return r.stringify}}),t.default=n,t.escape=i,t.unescape=a,t=e.exports=n})(Bp,Bp.exports);var _P=Bp.exports;(function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var r=pP,i=_P;function a(J){return J&&typeof J=="object"&&"default"in J?J:{default:J}}var n=a(r),l=a(i),c={isString:function(J){return typeof J=="string"},isObject:function(J){return typeof J=="object"&&J!==null},isNull:function(J){return J===null},isNullOrUndefined:function(J){return J==null}},d=n.default,m=c,M=h,S=w,R=x,I=p,O=B;function B(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var L=/^([a-z0-9.+-]+:)/i,P=/:[0-9]*$/,C=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,j=["<",">",'"',"`"," ","\r",`
-`,"	"],$=["{","}","|","\\","^","`"].concat(j),K=["'"].concat($),G=["%","/","?",";","#"].concat(K),te=["/","?","#"],Q=255,W=/^[+a-z0-9A-Z_-]{0,63}$/,ce=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,_={javascript:!0,"javascript:":!0},o={javascript:!0,"javascript:":!0},f={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},u=l.default;function h(J,le,se){if(J&&m.isObject(J)&&J instanceof B)return J;var ue=new B;return ue.parse(J,le,se),ue}B.prototype.parse=function(J,le,se){if(!m.isString(J))throw new TypeError("Parameter 'url' must be a string, not "+typeof J);var ue=J.indexOf("?"),de=ue!==-1&&ue<J.indexOf("#")?"?":"#",ve=J.split(de),ie=/\\/g;ve[0]=ve[0].replace(ie,"/"),J=ve.join(de);var oe=J;if(oe=oe.trim(),!se&&J.split("#").length===1){var Ae=C.exec(oe);if(Ae)return this.path=oe,this.href=oe,this.pathname=Ae[1],Ae[2]?(this.search=Ae[2],le?this.query=u.parse(this.search.substr(1)):this.query=this.search.substr(1)):le&&(this.search="",this.query={}),this}var pe=L.exec(oe);if(pe){pe=pe[0];var Se=pe.toLowerCase();this.protocol=Se,oe=oe.substr(pe.length)}if(se||pe||oe.match(/^\/\/[^@\/]+@[^@\/]+/)){var Ke=oe.substr(0,2)==="//";Ke&&!(pe&&o[pe])&&(oe=oe.substr(2),this.slashes=!0)}if(!o[pe]&&(Ke||pe&&!f[pe])){for(var we=-1,xe=0;xe<te.length;xe++){var qe=oe.indexOf(te[xe]);qe!==-1&&(we===-1||qe<we)&&(we=qe)}var ye,Me;we===-1?Me=oe.lastIndexOf("@"):Me=oe.lastIndexOf("@",we),Me!==-1&&(ye=oe.slice(0,Me),oe=oe.slice(Me+1),this.auth=decodeURIComponent(ye)),we=-1;for(var xe=0;xe<G.length;xe++){var qe=oe.indexOf(G[xe]);qe!==-1&&(we===-1||qe<we)&&(we=qe)}we===-1&&(we=oe.length),this.host=oe.slice(0,we),oe=oe.slice(we),this.parseHost(),this.hostname=this.hostname||"";var Ve=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!Ve)for(var ge=this.hostname.split(/\./),xe=0,Ee=ge.length;xe<Ee;xe++){var Je=ge[xe];if(Je&&!Je.match(W)){for(var Re="",Le=0,at=Je.length;Le<at;Le++)Je.charCodeAt(Le)>127?Re+="x":Re+=Je[Le];if(!Re.match(W)){var Te=ge.slice(0,xe),Ne=ge.slice(xe+1),rt=Je.match(ce);rt&&(Te.push(rt[1]),Ne.unshift(rt[2])),Ne.length&&(oe="/"+Ne.join(".")+oe),this.hostname=Te.join(".");break}}}this.hostname.length>Q?this.hostname="":this.hostname=this.hostname.toLowerCase(),Ve||(this.hostname=d.toASCII(this.hostname));var Oe=this.port?":"+this.port:"",De=this.hostname||"";this.host=De+Oe,this.href+=this.host,Ve&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),oe[0]!=="/"&&(oe="/"+oe))}if(!_[Se])for(var xe=0,Ee=K.length;xe<Ee;xe++){var nt=K[xe];if(oe.indexOf(nt)!==-1){var Ie=encodeURIComponent(nt);Ie===nt&&(Ie=escape(nt)),oe=oe.split(nt).join(Ie)}}var $e=oe.indexOf("#");$e!==-1&&(this.hash=oe.substr($e),oe=oe.slice(0,$e));var st=oe.indexOf("?");if(st!==-1?(this.search=oe.substr(st),this.query=oe.substr(st+1),le&&(this.query=u.parse(this.query)),oe=oe.slice(0,st)):le&&(this.search="",this.query={}),oe&&(this.pathname=oe),f[Se]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var Oe=this.pathname||"",Pe=this.search||"";this.path=Oe+Pe}return this.href=this.format(),this};function p(J){return m.isString(J)&&(J=h(J)),J instanceof B?J.format():B.prototype.format.call(J)}B.prototype.format=function(){var J=this.auth||"";J&&(J=encodeURIComponent(J),J=J.replace(/%3A/i,":"),J+="@");var le=this.protocol||"",se=this.pathname||"",ue=this.hash||"",de=!1,ve="";this.host?de=J+this.host:this.hostname&&(de=J+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(de+=":"+this.port)),this.query&&m.isObject(this.query)&&Object.keys(this.query).length&&(ve=u.stringify(this.query));var ie=this.search||ve&&"?"+ve||"";return le&&le.substr(-1)!==":"&&(le+=":"),this.slashes||(!le||f[le])&&de!==!1?(de="//"+(de||""),se&&se.charAt(0)!=="/"&&(se="/"+se)):de||(de=""),ue&&ue.charAt(0)!=="#"&&(ue="#"+ue),ie&&ie.charAt(0)!=="?"&&(ie="?"+ie),se=se.replace(/[?#]/g,function(oe){return encodeURIComponent(oe)}),ie=ie.replace("#","%23"),le+de+se+ie+ue};function w(J,le){return h(J,!1,!0).resolve(le)}B.prototype.resolve=function(J){return this.resolveObject(h(J,!1,!0)).format()};function x(J,le){return J?h(J,!1,!0).resolveObject(le):le}B.prototype.resolveObject=function(J){if(m.isString(J)){var le=new B;le.parse(J,!1,!0),J=le}for(var se=new B,ue=Object.keys(this),de=0;de<ue.length;de++){var ve=ue[de];se[ve]=this[ve]}if(se.hash=J.hash,J.href==="")return se.href=se.format(),se;if(J.slashes&&!J.protocol){for(var ie=Object.keys(J),oe=0;oe<ie.length;oe++){var Ae=ie[oe];Ae!=="protocol"&&(se[Ae]=J[Ae])}return f[se.protocol]&&se.hostname&&!se.pathname&&(se.path=se.pathname="/"),se.href=se.format(),se}if(J.protocol&&J.protocol!==se.protocol){if(!f[J.protocol]){for(var pe=Object.keys(J),Se=0;Se<pe.length;Se++){var Ke=pe[Se];se[Ke]=J[Ke]}return se.href=se.format(),se}if(se.protocol=J.protocol,!J.host&&!o[J.protocol]){for(var Ee=(J.pathname||"").split("/");Ee.length&&!(J.host=Ee.shift()););J.host||(J.host=""),J.hostname||(J.hostname=""),Ee[0]!==""&&Ee.unshift(""),Ee.length<2&&Ee.unshift(""),se.pathname=Ee.join("/")}else se.pathname=J.pathname;if(se.search=J.search,se.query=J.query,se.host=J.host||"",se.auth=J.auth,se.hostname=J.hostname||J.host,se.port=J.port,se.pathname||se.search){var we=se.pathname||"",xe=se.search||"";se.path=we+xe}return se.slashes=se.slashes||J.slashes,se.href=se.format(),se}var qe=se.pathname&&se.pathname.charAt(0)==="/",ye=J.host||J.pathname&&J.pathname.charAt(0)==="/",Me=ye||qe||se.host&&J.pathname,Ve=Me,ge=se.pathname&&se.pathname.split("/")||[],Ee=J.pathname&&J.pathname.split("/")||[],Je=se.protocol&&!f[se.protocol];if(Je&&(se.hostname="",se.port=null,se.host&&(ge[0]===""?ge[0]=se.host:ge.unshift(se.host)),se.host="",J.protocol&&(J.hostname=null,J.port=null,J.host&&(Ee[0]===""?Ee[0]=J.host:Ee.unshift(J.host)),J.host=null),Me=Me&&(Ee[0]===""||ge[0]==="")),ye)se.host=J.host||J.host===""?J.host:se.host,se.hostname=J.hostname||J.hostname===""?J.hostname:se.hostname,se.search=J.search,se.query=J.query,ge=Ee;else if(Ee.length)ge||(ge=[]),ge.pop(),ge=ge.concat(Ee),se.search=J.search,se.query=J.query;else if(!m.isNullOrUndefined(J.search)){if(Je){se.hostname=se.host=ge.shift();var Re=se.host&&se.host.indexOf("@")>0?se.host.split("@"):!1;Re&&(se.auth=Re.shift(),se.host=se.hostname=Re.shift())}return se.search=J.search,se.query=J.query,(!m.isNull(se.pathname)||!m.isNull(se.search))&&(se.path=(se.pathname?se.pathname:"")+(se.search?se.search:"")),se.href=se.format(),se}if(!ge.length)return se.pathname=null,se.search?se.path="/"+se.search:se.path=null,se.href=se.format(),se;for(var Le=ge.slice(-1)[0],at=(se.host||J.host||ge.length>1)&&(Le==="."||Le==="..")||Le==="",Te=0,Ne=ge.length;Ne>=0;Ne--)Le=ge[Ne],Le==="."?ge.splice(Ne,1):Le===".."?(ge.splice(Ne,1),Te++):Te&&(ge.splice(Ne,1),Te--);if(!Me&&!Ve)for(;Te--;Te)ge.unshift("..");Me&&ge[0]!==""&&(!ge[0]||ge[0].charAt(0)!=="/")&&ge.unshift(""),at&&ge.join("/").substr(-1)!=="/"&&ge.push("");var rt=ge[0]===""||ge[0]&&ge[0].charAt(0)==="/";if(Je){se.hostname=se.host=rt?"":ge.length?ge.shift():"";var Re=se.host&&se.host.indexOf("@")>0?se.host.split("@"):!1;Re&&(se.auth=Re.shift(),se.host=se.hostname=Re.shift())}return Me=Me||se.host&&ge.length,Me&&!rt&&ge.unshift(""),ge.length?se.pathname=ge.join("/"):(se.pathname=null,se.path=null),(!m.isNull(se.pathname)||!m.isNull(se.search))&&(se.path=(se.pathname?se.pathname:"")+(se.search?se.search:"")),se.auth=J.auth||se.auth,se.slashes=se.slashes||J.slashes,se.href=se.format(),se},B.prototype.parseHost=function(){var J=this.host,le=P.exec(J);le&&(le=le[0],le!==":"&&(this.port=le.substr(1)),J=J.substr(0,J.length-le.length)),J&&(this.hostname=J)};function g(J,le){for(var se=0,ue=J.length-1;ue>=0;ue--){var de=J[ue];de==="."?J.splice(ue,1):de===".."?(J.splice(ue,1),se++):se&&(J.splice(ue,1),se--)}if(le)for(;se--;se)J.unshift("..");return J}function s(){for(var J="",le=!1,se=arguments.length-1;se>=-1&&!le;se--){var ue=se>=0?arguments[se]:"/";if(typeof ue!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!ue)continue;J=ue+"/"+J,le=ue.charAt(0)==="/"}return J=g(v(J.split("/"),function(de){return!!de}),!le).join("/"),(le?"/":"")+J||"."}function v(J,le){if(J.filter)return J.filter(le);for(var se=[],ue=0;ue<J.length;ue++)le(J[ue],ue,J)&&se.push(J[ue]);return se}var T=function(J){function le(){var ue=this||self;return delete J.prototype.__magic__,ue}if(typeof globalThis=="object")return globalThis;if(this)return le();J.defineProperty(J.prototype,"__magic__",{configurable:!0,get:le});var se=__magic__;return se}(Object),k=I,Y=M,ee=S,A=O,E=T.URL,q=T.URLSearchParams,V=/%/g,X=/\\/g,b=/\n/g,y=/\r/g,D=/\t/g,U=47;function Z(J){var le=J??null;return!!(le!==null&&(le!=null&&le.href)&&(le!=null&&le.origin))}function F(J){if(J.hostname!=="")throw new TypeError('File URL host must be "localhost" or empty on browser');for(var le=J.pathname,se=0;se<le.length;se++)if(le[se]==="%"){var ue=le.codePointAt(se+2)|32;if(le[se+1]==="2"&&ue===102)throw new TypeError("File URL path must not include encoded / characters")}return decodeURIComponent(le)}function N(J){return J.includes("%")&&(J=J.replace(V,"%25")),J.includes("\\")&&(J=J.replace(X,"%5C")),J.includes(`
-`)&&(J=J.replace(b,"%0A")),J.includes("\r")&&(J=J.replace(y,"%0D")),J.includes("	")&&(J=J.replace(D,"%09")),J}var H=function(le){if(typeof le>"u")throw new TypeError('The "domain" argument must be specified');return new E("http://"+le).hostname},z=function(le){if(typeof le>"u")throw new TypeError('The "domain" argument must be specified');return new E("http://"+le).hostname},fe=function(le){var se=new E("file://"),ue=s(le),de=le.charCodeAt(le.length-1);return de===U&&ue[ue.length-1]!=="/"&&(ue+="/"),se.pathname=N(ue),se},re=function(le){if(!Z(le)&&typeof le!="string")throw new TypeError('The "path" argument must be of type string or an instance of URL. Received type '+typeof le+" ("+le+")");var se=new E(le);if(se.protocol!=="file:")throw new TypeError("The URL must be of scheme file");return F(se)},ae=function(le,se){var ue,de,ve;if(se===void 0&&(se={}),!(le instanceof E))return k(le);if(typeof se!="object"||se===null)throw new TypeError('The "options" argument must be of type object.');var ie=(ue=se.auth)!=null?ue:!0,oe=(de=se.fragment)!=null?de:!0,Ae=(ve=se.search)!=null?ve:!0,pe=new E(le.toString());return ie||(pe.username="",pe.password=""),oe||(pe.hash=""),Ae||(pe.search=""),pe.toString()},be={format:ae,parse:Y,resolve:ee,resolveObject:R,Url:A,URL:E,URLSearchParams:q,domainToASCII:H,domainToUnicode:z,pathToFileURL:fe,fileURLToPath:re};t.URL=E,t.URLSearchParams=q,t.Url=A,t.default=be,t.domainToASCII=H,t.domainToUnicode=z,t.fileURLToPath=re,t.format=ae,t.parse=Y,t.pathToFileURL=fe,t.resolve=ee,t.resolveObject=R,t=e.exports=be})(Cp,Cp.exports);var Z3=Cp.exports;const Zz=Fo(Z3);var xd,T1;function Lp(){if(T1)return xd;T1=1;var e=null;return xd=e,xd}var Ed,O1;function I1(){if(O1)return Ed;O1=1;const e=Lp(),t=no("mqttjs:tcp");function r(i,a){a.port=a.port||1883,a.hostname=a.hostname||a.host||"localhost";const n=a.port,l=a.hostname;return t("port %d and host %s",n,l),e.createConnection(n,l)}return Ed=r,Ed}var Rd,P1;function Ad(){if(P1)return Rd;P1=1;const e=Lp(),t=Lp(),r=no("mqttjs:tls");function i(a,n){n.port=n.port||8883,n.host=n.hostname||n.host||"localhost",t.isIP(n.host)===0&&(n.servername=n.host),n.rejectUnauthorized=n.rejectUnauthorized!==!1,delete n.path,r("port %d host %s rejectUnauthorized %b",n.port,n.host,n.rejectUnauthorized);const l=e.connect(n);l.on("secureConnect",function(){n.rejectUnauthorized&&!l.authorized?l.emit("error",new Error("TLS not authorized")):l.removeListener("error",c)});function c(d){n.rejectUnauthorized&&a.emit("error",d),l.end()}return l.on("error",c),l}return Rd=i,Rd}var Np={exports:{}},X3=Lr.EventEmitter,Td,C1;function MP(){if(C1)return Td;C1=1;function e(O,B){var L=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);B&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),L.push.apply(L,P)}return L}function t(O){for(var B=1;B<arguments.length;B++){var L=arguments[B]!=null?arguments[B]:{};B%2?e(Object(L),!0).forEach(function(P){r(O,P,L[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(L)):e(Object(L)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(L,P))})}return O}function r(O,B,L){return B=l(B),B in O?Object.defineProperty(O,B,{value:L,enumerable:!0,configurable:!0,writable:!0}):O[B]=L,O}function i(O,B){if(!(O instanceof B))throw new TypeError("Cannot call a class as a function")}function a(O,B){for(var L=0;L<B.length;L++){var P=B[L];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,B,L){return B&&a(O.prototype,B),L&&a(O,L),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var B=c(O,"string");return typeof B=="symbol"?B:String(B)}function c(O,B){if(typeof O!="object"||O===null)return O;var L=O[Symbol.toPrimitive];if(L!==void 0){var P=L.call(O,B||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(B==="string"?String:Number)(O)}var d=ke,m=d.Buffer,M=ri,S=M.inspect,R=S&&S.custom||"inspect";function I(O,B,L){m.prototype.copy.call(O,B,L)}return Td=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(L){var P={data:L,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(L){var P={data:L,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var L=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,L}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(L){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=L+P.data;return C}},{key:"concat",value:function(L){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(L>>>0),C=this.head,j=0;C;)I(C.data,P,j),j+=C.data.length,C=C.next;return P}},{key:"consume",value:function(L,P){var C;return L<this.head.data.length?(C=this.head.data.slice(0,L),this.head.data=this.head.data.slice(L)):L===this.head.data.length?C=this.shift():C=P?this._getString(L):this._getBuffer(L),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(L){var P=this.head,C=1,j=P.data;for(L-=j.length;P=P.next;){var $=P.data,K=L>$.length?$.length:L;if(K===$.length?j+=$:j+=$.slice(0,L),L-=K,L===0){K===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(K));break}++C}return this.length-=C,j}},{key:"_getBuffer",value:function(L){var P=m.allocUnsafe(L),C=this.head,j=1;for(C.data.copy(P),L-=C.data.length;C=C.next;){var $=C.data,K=L>$.length?$.length:L;if($.copy(P,P.length-L,0,K),L-=K,L===0){K===$.length?(++j,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(K));break}++j}return this.length-=j,P}},{key:R,value:function(L,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),Td}function SP(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,_e.nextTick(kp,this,e)):_e.nextTick(kp,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?_e.nextTick(Mu,r):(r._writableState.errorEmitted=!0,_e.nextTick(B1,r,n)):_e.nextTick(B1,r,n):t?(_e.nextTick(Mu,r),t(n)):_e.nextTick(Mu,r)}),this)}function B1(e,t){kp(e,t),Mu(e)}function Mu(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function xP(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function kp(e,t){e.emit("error",t)}function EP(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}var J3={destroy:SP,undestroy:xP,errorOrDestroy:EP},Ia={};function RP(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var Q3={};function Ei(e,t,r){r||(r=Error);function i(n,l,c){return typeof t=="string"?t:t(n,l,c)}var a=function(n){RP(l,n);function l(c,d,m){return n.call(this,i(c,d,m))||this}return l}(r);a.prototype.name=r.name,a.prototype.code=e,Q3[e]=a}function L1(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(i){return String(i)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function AP(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function TP(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function OP(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Ei("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Ei("ERR_INVALID_ARG_TYPE",function(e,t,r){var i;typeof t=="string"&&AP(t,"not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";var a;if(TP(e," argument"))a="The ".concat(e," ").concat(i," ").concat(L1(t,"type"));else{var n=OP(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(n," ").concat(i," ").concat(L1(t,"type"))}return a+=". Received type ".concat(typeof r),a},TypeError);Ei("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Ei("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Ei("ERR_STREAM_PREMATURE_CLOSE","Premature close");Ei("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Ei("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Ei("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Ei("ERR_STREAM_WRITE_AFTER_END","write after end");Ei("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Ei("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Ei("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Ia.codes=Q3;var IP=Ia.codes.ERR_INVALID_OPT_VALUE;function PP(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function CP(e,t,r,i){var a=PP(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=i?r:"highWaterMark";throw new IP(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}var e6={getHighWaterMark:CP},Od,N1;function t6(){if(N1)return Od;N1=1,Od=Q;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){ee(E,A)}}var t;Q.WritableState=G;var r={deprecate:Ws},i=X3,a=ke.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function c(A){return a.isBuffer(A)||A instanceof n}var d=J3,m=e6,M=m.getHighWaterMark,S=Ia.codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,B=S.ERR_STREAM_CANNOT_PIPE,L=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,j=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(Q,i);function K(){}function G(A,E,q){t=t||_s(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=M(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var te;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(te=Function.prototype[Symbol.hasInstance],Object.defineProperty(Q,Symbol.hasInstance,{value:function(E){return te.call(this,E)?!0:this!==Q?!1:E&&E._writableState instanceof G}})):te=function(E){return E instanceof this};function Q(A){t=t||_s();var E=this instanceof t;if(!E&&!te.call(Q,this))return new Q(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}Q.prototype.pipe=function(){$(this,new B)};function W(A,E){var q=new C;$(A,q),_e.nextTick(E,q)}function ce(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),_e.nextTick(V,X),!1):!0}Q.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&c(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=K),V.ending?W(this,q):(b||ce(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},Q.prototype.cork=function(){this._writableState.corked++},Q.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},Q.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new j(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(Q.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function _(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(Q.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=_(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var D=E.objectMode?1:V.length;E.length+=D;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,D,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new L("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(_e.nextTick(X,V),_e.nextTick(k,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),k(A,E))}function h(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(h(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?_e.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),k(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,D=!0;q;)X[y]=q,q.isBuf||(D=!1),q=q.next,y+=1;X.allBuffers=D,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,F=q.callback,N=E.objectMode?1:U.length;if(f(A,E,!1,N,U,Z,F),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}Q.prototype._write=function(A,E,q){q(new I("_write()"))},Q.prototype._writev=null,Q.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(Q.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),k(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,_e.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function k(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,k(A,E),q&&(E.finished?_e.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function ee(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(Q.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),Q.prototype.destroy=d.destroy,Q.prototype._undestroy=d.undestroy,Q.prototype._destroy=function(A,E){E(A)},Od}var Id,k1;function _s(){if(k1)return Id;k1=1;var e=Object.keys||function(m){var M=[];for(var S in m)M.push(S);return M};Id=l;var t=i6(),r=t6();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",c)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function c(){this._writableState.ended||_e.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(M){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=M,this._writableState.destroyed=M)}}),Id}var $1=Ia.codes.ERR_STREAM_PREMATURE_CLOSE;function BP(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];e.apply(this,i)}}}function LP(){}function NP(e){return e.setHeader&&typeof e.abort=="function"}function r6(e,t,r){if(typeof t=="function")return r6(e,null,t);t||(t={}),r=BP(r||LP);var i=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||c()},l=e._writableState&&e._writableState.finished,c=function(){a=!1,l=!0,i||r.call(e)},d=e._readableState&&e._readableState.endEmitted,m=function(){i=!1,d=!0,a||r.call(e)},M=function(O){r.call(e,O)},S=function(){var O;if(i&&!d)return(!e._readableState||!e._readableState.ended)&&(O=new $1),r.call(e,O);if(a&&!l)return(!e._writableState||!e._writableState.ended)&&(O=new $1),r.call(e,O)},R=function(){e.req.on("finish",c)};return NP(e)?(e.on("complete",c),e.on("abort",S),e.req?R():e.on("request",R)):a&&!e._writableState&&(e.on("end",n),e.on("close",n)),e.on("end",m),e.on("finish",c),t.error!==!1&&e.on("error",M),e.on("close",S),function(){e.removeListener("complete",c),e.removeListener("abort",S),e.removeListener("request",R),e.req&&e.req.removeListener("finish",c),e.removeListener("end",n),e.removeListener("close",n),e.removeListener("finish",c),e.removeListener("end",m),e.removeListener("error",M),e.removeListener("close",S)}}var mg=r6,Pd,D1;function kP(){if(D1)return Pd;D1=1;var e;function t(j,$,K){return $=r($),$ in j?Object.defineProperty(j,$,{value:K,enumerable:!0,configurable:!0,writable:!0}):j[$]=K,j}function r(j){var $=i(j,"string");return typeof $=="symbol"?$:String($)}function i(j,$){if(typeof j!="object"||j===null)return j;var K=j[Symbol.toPrimitive];if(K!==void 0){var G=K.call(j,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(j)}var a=mg,n=Symbol("lastResolve"),l=Symbol("lastReject"),c=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),M=Symbol("handlePromise"),S=Symbol("stream");function R(j,$){return{value:j,done:$}}function I(j){var $=j[n];if($!==null){var K=j[S].read();K!==null&&(j[m]=null,j[n]=null,j[l]=null,$(R(K,!1)))}}function O(j){_e.nextTick(I,j)}function B(j,$){return function(K,G){j.then(function(){if($[d]){K(R(void 0,!0));return}$[M](K,G)},G)}}var L=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,K=this[c];if(K!==null)return Promise.reject(K);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(W,ce){_e.nextTick(function(){$[c]?ce($[c]):W(R(void 0,!0))})});var G=this[m],te;if(G)te=new Promise(B(G,this));else{var Q=this[S].read();if(Q!==null)return Promise.resolve(R(Q,!1));te=new Promise(this[M])}return this[m]=te,te}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(K,G){$[S].destroy(null,function(te){if(te){G(te);return}K(R(void 0,!0))})})}),e),L),C=function($){var K,G=Object.create(P,(K={},t(K,S,{value:$,writable:!0}),t(K,n,{value:null,writable:!0}),t(K,l,{value:null,writable:!0}),t(K,c,{value:null,writable:!0}),t(K,d,{value:$._readableState.endEmitted,writable:!0}),t(K,M,{value:function(Q,W){var ce=G[S].read();ce?(G[m]=null,G[n]=null,G[l]=null,Q(R(ce,!1))):(G[n]=Q,G[l]=W)},writable:!0}),K));return G[m]=null,a($,function(te){if(te&&te.code!=="ERR_STREAM_PREMATURE_CLOSE"){var Q=G[l];Q!==null&&(G[m]=null,G[n]=null,G[l]=null,Q(te)),G[c]=te;return}var W=G[n];W!==null&&(G[m]=null,G[n]=null,G[l]=null,W(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return Pd=C,Pd}var Cd,F1;function $P(){return F1||(F1=1,Cd=function(){throw new Error("Readable.from is not available in the browser")}),Cd}var Bd,j1;function i6(){if(j1)return Bd;j1=1,Bd=W;var e;W.ReadableState=Q,Lr.EventEmitter;var t=function(y,D){return y.listeners(D).length},r=X3,i=ke.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var c=ri,d;c&&c.debuglog?d=c.debuglog("stream"):d=function(){};var m=MP(),M=J3,S=e6,R=S.getHighWaterMark,I=Ia.codes,O=I.ERR_INVALID_ARG_TYPE,B=I.ERR_STREAM_PUSH_AFTER_EOF,L=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,j,$;Ye(W,r);var K=M.errorOrDestroy,G=["error","close","destroy","pause","resume"];function te(b,y,D){if(typeof b.prependListener=="function")return b.prependListener(y,D);!b._events||!b._events[y]?b.on(y,D):Array.isArray(b._events[y])?b._events[y].unshift(D):b._events[y]=[D,b._events[y]]}function Q(b,y,D){e=e||_s(),b=b||{},typeof D!="boolean"&&(D=y instanceof e),this.objectMode=!!b.objectMode,D&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",D),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=Jr().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function W(b){if(e=e||_s(),!(this instanceof W))return new W(b);var y=this instanceof e;this._readableState=new Q(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(W.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),W.prototype.destroy=M.destroy,W.prototype._undestroy=M.undestroy,W.prototype._destroy=function(b,y){y(b)},W.prototype.push=function(b,y){var D=this._readableState,U;return D.objectMode?U=!0:typeof b=="string"&&(y=y||D.defaultEncoding,y!==D.encoding&&(b=i.from(b,y),y=""),U=!0),ce(this,b,y,!1,U)},W.prototype.unshift=function(b){return ce(this,b,null,!0,!1)};function ce(b,y,D,U,Z){d("readableAddChunk",y);var F=b._readableState;if(y===null)F.reading=!1,p(b,F);else{var N;if(Z||(N=o(F,y)),N)K(b,N);else if(F.objectMode||y&&y.length>0)if(typeof y!="string"&&!F.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)F.endEmitted?K(b,new P):_(b,F,y,!0);else if(F.ended)K(b,new B);else{if(F.destroyed)return!1;F.reading=!1,F.decoder&&!D?(y=F.decoder.write(y),F.objectMode||y.length!==0?_(b,F,y,!1):g(b,F)):_(b,F,y,!1)}else U||(F.reading=!1,g(b,F))}return!F.ended&&(F.length<F.highWaterMark||F.length===0)}function _(b,y,D,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",D)):(y.length+=y.objectMode?1:D.length,U?y.buffer.unshift(D):y.buffer.push(D),y.needReadable&&w(b)),g(b,y)}function o(b,y){var D;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(D=new O("chunk",["string","Buffer","Uint8Array"],y)),D}W.prototype.isPaused=function(){return this._readableState.flowing===!1},W.prototype.setEncoding=function(b){C||(C=Jr().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var D=this._readableState.buffer.head,U="";D!==null;)U+=y.write(D.data),D=D.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function h(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}W.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,D=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=h(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=h(D,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),D!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var D=y.decoder.end();D&&D.length&&(y.buffer.push(D),y.length+=y.objectMode?1:D.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,_e.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,_e.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var D=y.length;if(d("maybeReadMore read 0"),b.read(0),D===y.length)break}y.readingMore=!1}W.prototype._read=function(b){K(this,new L("_read()"))},W.prototype.pipe=function(b,y){var D=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==_e.stdout&&b!==_e.stderr,F=Z?H:se;U.endEmitted?_e.nextTick(F):D.once("end",F),b.on("unpipe",N);function N(ue,de){d("onunpipe"),ue===D&&de&&de.hasUnpiped===!1&&(de.hasUnpiped=!0,re())}function H(){d("onend"),b.end()}var z=v(D);b.on("drain",z);var fe=!1;function re(){d("cleanup"),b.removeListener("close",J),b.removeListener("finish",le),b.removeListener("drain",z),b.removeListener("error",be),b.removeListener("unpipe",N),D.removeListener("end",H),D.removeListener("end",se),D.removeListener("data",ae),fe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}D.on("data",ae);function ae(ue){d("ondata");var de=b.write(ue);d("dest.write",de),de===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!fe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),D.pause())}function be(ue){d("onerror",ue),se(),b.removeListener("error",be),t(b,"error")===0&&K(b,ue)}te(b,"error",be);function J(){b.removeListener("finish",le),se()}b.once("close",J);function le(){d("onfinish"),b.removeListener("close",J),se()}b.once("finish",le);function se(){d("unpipe"),D.unpipe(b)}return b.emit("pipe",D),U.flowing||(d("pipe resume"),D.resume()),b};function v(b){return function(){var D=b._readableState;d("pipeOnDrain",D.awaitDrain),D.awaitDrain&&D.awaitDrain--,D.awaitDrain===0&&t(b,"data")&&(D.flowing=!0,A(b))}}W.prototype.unpipe=function(b){var y=this._readableState,D={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,D),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var F=0;F<Z;F++)U[F].emit("unpipe",this,{hasUnpiped:!1});return this}var N=X(y.pipes,b);return N===-1?this:(y.pipes.splice(N,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,D),this)},W.prototype.on=function(b,y){var D=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||_e.nextTick(k,this)),D},W.prototype.addListener=W.prototype.on,W.prototype.removeListener=function(b,y){var D=r.prototype.removeListener.call(this,b,y);return b==="readable"&&_e.nextTick(T,this),D},W.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&_e.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function k(b){d("readable nexttick read 0"),b.read(0)}W.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,_e.nextTick(ee,b,y))}function ee(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}W.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}W.prototype.wrap=function(b){var y=this,D=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),D.decoder&&!D.ended){var N=D.decoder.end();N&&N.length&&y.push(N)}y.push(null)}),b.on("data",function(N){if(d("wrapped data"),D.decoder&&(N=D.decoder.write(N)),!(D.objectMode&&N==null)&&!(!D.objectMode&&(!N||!N.length))){var H=y.push(N);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var F=0;F<G.length;F++)b.on(G[F],this.emit.bind(this,G[F]));return this._read=function(N){d("wrapped _read",N),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(W.prototype[Symbol.asyncIterator]=function(){return j===void 0&&(j=kP()),j(this)}),Object.defineProperty(W.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(W.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(W.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),W._fromList=E,Object.defineProperty(W.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var D;return y.objectMode?D=y.buffer.shift():!b||b>=y.length?(y.decoder?D=y.buffer.join(""):y.buffer.length===1?D=y.buffer.first():D=y.buffer.concat(y.length),y.buffer.clear()):D=y.buffer.consume(b,y.decoder),D}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,_e.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var D=y._writableState;(!D||D.autoDestroy&&D.finished)&&y.destroy()}}typeof Symbol=="function"&&(W.from=function(b,y){return $===void 0&&($=$P()),$(W,b,y)});function X(b,y){for(var D=0,U=b.length;D<U;D++)if(b[D]===y)return D;return-1}return Bd}var n6=Gn,Yh=Ia.codes,DP=Yh.ERR_METHOD_NOT_IMPLEMENTED,FP=Yh.ERR_MULTIPLE_CALLBACK,jP=Yh.ERR_TRANSFORM_ALREADY_TRANSFORMING,UP=Yh.ERR_TRANSFORM_WITH_LENGTH_0,Zh=_s();Ye(Gn,Zh);function HP(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new FP);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function Gn(e){if(!(this instanceof Gn))return new Gn(e);Zh.call(this,e),this._transformState={afterTransform:HP.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",qP)}function qP(){var e=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(t,r){U1(e,t,r)}):U1(this,null,null)}Gn.prototype.push=function(e,t){return this._transformState.needTransform=!1,Zh.prototype.push.call(this,e,t)};Gn.prototype._transform=function(e,t,r){r(new DP("_transform()"))};Gn.prototype._write=function(e,t,r){var i=this._transformState;if(i.writecb=r,i.writechunk=e,i.writeencoding=t,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};Gn.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};Gn.prototype._destroy=function(e,t){Zh.prototype._destroy.call(this,e,function(r){t(r)})};function U1(e,t,r){if(t)return e.emit("error",t);if(r!=null&&e.push(r),e._writableState.length)throw new UP;if(e._transformState.transforming)throw new jP;return e.push(null)}var WP=nl,o6=n6;Ye(nl,o6);function nl(e){if(!(this instanceof nl))return new nl(e);o6.call(this,e)}nl.prototype._transform=function(e,t,r){r(null,e)};var Ld;function KP(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var a6=Ia.codes,VP=a6.ERR_MISSING_ARGS,zP=a6.ERR_STREAM_DESTROYED;function H1(e){if(e)throw e}function GP(e){return e.setHeader&&typeof e.abort=="function"}function YP(e,t,r,i){i=KP(i);var a=!1;e.on("close",function(){a=!0}),Ld===void 0&&(Ld=mg),Ld(e,{readable:t,writable:r},function(l){if(l)return i(l);a=!0,i()});var n=!1;return function(l){if(!a&&!n){if(n=!0,GP(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();i(l||new zP("pipe"))}}}function q1(e){e()}function ZP(e,t){return e.pipe(t)}function XP(e){return!e.length||typeof e[e.length-1]!="function"?H1:e.pop()}function JP(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=XP(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new VP("streams");var a,n=t.map(function(l,c){var d=c<t.length-1,m=c>0;return YP(l,d,m,function(M){a||(a=M),M&&n.forEach(q1),!d&&(n.forEach(q1),i(a))})});return t.reduce(ZP)}var QP=JP;(function(e,t){t=e.exports=i6(),t.Stream=t,t.Readable=t,t.Writable=t6(),t.Duplex=_s(),t.Transform=n6,t.PassThrough=WP,t.finished=mg,t.pipeline=QP})(Np,Np.exports);var eC=Np.exports,yg={exports:{}},tC=s6;function s6(e,t){if(e&&t)return s6(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(i){r[i]=e[i]}),r;function r(){for(var i=new Array(arguments.length),a=0;a<i.length;a++)i[a]=arguments[a];var n=e.apply(this,i),l=i[i.length-1];return typeof n=="function"&&n!==l&&Object.keys(l).forEach(function(c){n[c]=l[c]}),n}}var f6=tC;yg.exports=f6(Su);yg.exports.strict=f6(l6);Su.proto=Su(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Su(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return l6(this)},configurable:!0})});function Su(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function l6(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}var rC=yg.exports,iC=rC,nC=function(){},oC=function(e){return e.setHeader&&typeof e.abort=="function"},aC=function(e){return e.stdio&&Array.isArray(e.stdio)&&e.stdio.length===3},u6=function(e,t,r){if(typeof t=="function")return u6(e,null,t);t||(t={}),r=iC(r||nC);var i=e._writableState,a=e._readableState,n=t.readable||t.readable!==!1&&e.readable,l=t.writable||t.writable!==!1&&e.writable,c=!1,d=function(){e.writable||m()},m=function(){l=!1,n||r.call(e)},M=function(){n=!1,l||r.call(e)},S=function(L){r.call(e,L?new Error("exited with error code: "+L):null)},R=function(L){r.call(e,L)},I=function(){_e.nextTick(O)},O=function(){if(!c){if(n&&!(a&&a.ended&&!a.destroyed))return r.call(e,new Error("premature close"));if(l&&!(i&&i.ended&&!i.destroyed))return r.call(e,new Error("premature close"))}},B=function(){e.req.on("finish",m)};return oC(e)?(e.on("complete",m),e.on("abort",I),e.req?B():e.on("request",B)):l&&!i&&(e.on("end",d),e.on("close",d)),aC(e)&&e.on("exit",S),e.on("end",M),e.on("finish",m),t.error!==!1&&e.on("error",R),e.on("close",I),function(){c=!0,e.removeListener("complete",m),e.removeListener("abort",I),e.removeListener("request",B),e.req&&e.req.removeListener("finish",m),e.removeListener("end",d),e.removeListener("close",d),e.removeListener("finish",m),e.removeListener("exit",S),e.removeListener("end",M),e.removeListener("error",R),e.removeListener("close",I)}},sC=u6,fC=lC;function lC(e){var t=e._readableState;return t?t.objectMode||typeof e._duplexState=="number"?e.read():e.read(uC(t)):null}function uC(e){if(e.buffer.length){var t=e.bufferIndex||0;if(e.buffer.head)return e.buffer.head.data.length;if(e.buffer.length-t>0&&e.buffer[t])return e.buffer[t].length}return e.length}var Xh=eC,h6=sC,hC=Ye,cC=fC,c6=ke.Buffer.from&&ke.Buffer.from!==Uint8Array.from?ke.Buffer.from([0]):new ke.Buffer([0]),$p=function(e,t){e._corked?e.once("uncork",t):t()},dC=function(e,t){e._autoDestroy&&e.destroy(t)},d6=function(e,t){return function(r){r?dC(e,r.message==="premature close"?null:r):t&&!e._ended&&e.end()}},pC=function(e,t){if(!e||e._writableState&&e._writableState.finished)return t();if(e._writableState)return e.end(t);e.end(),t()},vC=function(){},gC=function(e){return new Xh.Readable({objectMode:!0,highWaterMark:16}).wrap(e)},_r=function(e,t,r){if(!(this instanceof _r))return new _r(e,t,r);Xh.Duplex.call(this,r),this._writable=null,this._readable=null,this._readable2=null,this._autoDestroy=!r||r.autoDestroy!==!1,this._forwardDestroy=!r||r.destroy!==!1,this._forwardEnd=!r||r.end!==!1,this._corked=1,this._ondrain=null,this._drained=!1,this._forwarding=!1,this._unwrite=null,this._unread=null,this._ended=!1,this.destroyed=!1,e&&this.setWritable(e),t&&this.setReadable(t)};hC(_r,Xh.Duplex);_r.obj=function(e,t,r){return r||(r={}),r.objectMode=!0,r.highWaterMark=16,new _r(e,t,r)};_r.prototype.cork=function(){++this._corked===1&&this.emit("cork")};_r.prototype.uncork=function(){this._corked&&--this._corked===0&&this.emit("uncork")};_r.prototype.setWritable=function(e){if(this._unwrite&&this._unwrite(),this.destroyed){e&&e.destroy&&e.destroy();return}if(e===null||e===!1){this.end();return}var t=this,r=h6(e,{writable:!0,readable:!1},d6(this,this._forwardEnd)),i=function(){var n=t._ondrain;t._ondrain=null,n&&n()},a=function(){t._writable.removeListener("drain",i),r()};this._unwrite&&_e.nextTick(i),this._writable=e,this._writable.on("drain",i),this._unwrite=a,this.uncork()};_r.prototype.setReadable=function(e){if(this._unread&&this._unread(),this.destroyed){e&&e.destroy&&e.destroy();return}if(e===null||e===!1){this.push(null),this.resume();return}var t=this,r=h6(e,{writable:!1,readable:!0},d6(this)),i=function(){t._forward()},a=function(){t.push(null)},n=function(){t._readable2.removeListener("readable",i),t._readable2.removeListener("end",a),r()};this._drained=!0,this._readable=e,this._readable2=e._readableState?e:gC(e),this._readable2.on("readable",i),this._readable2.on("end",a),this._unread=n,this._forward()};_r.prototype._read=function(){this._drained=!0,this._forward()};_r.prototype._forward=function(){if(!(this._forwarding||!this._readable2||!this._drained)){this._forwarding=!0;for(var e;this._drained&&(e=cC(this._readable2))!==null;)this.destroyed||(this._drained=this.push(e));this._forwarding=!1}};_r.prototype.destroy=function(e,t){if(t||(t=vC),this.destroyed)return t(null);this.destroyed=!0;var r=this;_e.nextTick(function(){r._destroy(e),t(null)})};_r.prototype._destroy=function(e){if(e){var t=this._ondrain;this._ondrain=null,t?t(e):this.emit("error",e)}this._forwardDestroy&&(this._readable&&this._readable.destroy&&this._readable.destroy(),this._writable&&this._writable.destroy&&this._writable.destroy()),this.emit("close")};_r.prototype._write=function(e,t,r){if(!this.destroyed){if(this._corked)return $p(this,this._write.bind(this,e,t,r));if(e===c6)return this._finish(r);if(!this._writable)return r();this._writable.write(e)===!1?this._ondrain=r:this.destroyed||r()}};_r.prototype._finish=function(e){var t=this;this.emit("preend"),$p(this,function(){pC(t._forwardEnd&&t._writable,function(){t._writableState.prefinished===!1&&(t._writableState.prefinished=!0),t.emit("prefinish"),$p(t,e)})})};_r.prototype.end=function(e,t,r){return typeof e=="function"?this.end(null,null,e):typeof t=="function"?this.end(e,null,t):(this._ended=!0,e&&this.write(e),!this._writableState.ending&&!this._writableState.destroyed&&this.write(c6),Xh.Writable.prototype.end.call(this,r))};var bg=_r,Nd,W1;function K1(){if(W1)return Nd;W1=1;const{Buffer:e}=ke,t=bl.Transform,r=bg;let i,a,n;function l(){const S=new t;return S._write=function(R,I,O){i.send({data:R.buffer,success:function(){O()},fail:function(B){O(new Error(B))}})},S._flush=function(I){i.close({success:function(){I()}})},S}function c(S){S.hostname||(S.hostname="localhost"),S.path||(S.path="/"),S.wsOptions||(S.wsOptions={})}function d(S,R){const I=S.protocol==="wxs"?"wss":"ws";let O=I+"://"+S.hostname+S.path;return S.port&&S.port!==80&&S.port!==443&&(O=I+"://"+S.hostname+":"+S.port+S.path),typeof S.transformWsUrl=="function"&&(O=S.transformWsUrl(O,S,R)),O}function m(){i.onOpen(function(){n.setReadable(a),n.setWritable(a),n.emit("connect")}),i.onMessage(function(S){let R=S.data;R instanceof ArrayBuffer?R=e.from(R):R=e.from(R,"utf8"),a.push(R)}),i.onClose(function(){n.end(),n.destroy()}),i.onError(function(S){n.destroy(new Error(S.errMsg))})}function M(S,R){if(R.hostname=R.hostname||R.host,!R.hostname)throw new Error("Could not determine host. Specify host manually.");const I=R.protocolId==="MQIsdp"&&R.protocolVersion===3?"mqttv3.1":"mqtt";c(R);const O=d(R,S);i=wx.connectSocket({url:O,protocols:[I]}),a=l(),n=r.obj(),n._destroy=function(L,P){i.close({success:function(){P&&P(L)}})};const B=n.destroy;return n.destroy=(function(){n.destroy=B;const L=this;setTimeout(function(){i.close({fail:function(){L._destroy(new Error)}})},0)}).bind(n),m(),n}return Nd=M,Nd}var kd,V1;function z1(){if(V1)return kd;V1=1;const{Buffer:e}=ke,t=bl.Transform,r=bg;let i,a,n,l=!1;function c(){const R=new t;return R._write=function(I,O,B){i.sendSocketMessage({data:I.buffer,success:function(){B()},fail:function(){B(new Error)}})},R._flush=function(O){i.closeSocket({success:function(){O()}})},R}function d(R){R.hostname||(R.hostname="localhost"),R.path||(R.path="/"),R.wsOptions||(R.wsOptions={})}function m(R,I){const O=R.protocol==="alis"?"wss":"ws";let B=O+"://"+R.hostname+R.path;return R.port&&R.port!==80&&R.port!==443&&(B=O+"://"+R.hostname+":"+R.port+R.path),typeof R.transformWsUrl=="function"&&(B=R.transformWsUrl(B,R,I)),B}function M(){l||(l=!0,i.onSocketOpen(function(){n.setReadable(a),n.setWritable(a),n.emit("connect")}),i.onSocketMessage(function(R){if(typeof R.data=="string"){const I=e.from(R.data,"base64");a.push(I)}else{const I=new FileReader;I.addEventListener("load",function(){let O=I.result;O instanceof ArrayBuffer?O=e.from(O):O=e.from(O,"utf8"),a.push(O)}),I.readAsArrayBuffer(R.data)}}),i.onSocketClose(function(){n.end(),n.destroy()}),i.onSocketError(function(R){n.destroy(R)}))}function S(R,I){if(I.hostname=I.hostname||I.host,!I.hostname)throw new Error("Could not determine host. Specify host manually.");const O=I.protocolId==="MQIsdp"&&I.protocolVersion===3?"mqttv3.1":"mqtt";d(I);const B=m(I,R);return i=I.my,i.connectSocket({url:B,protocols:O}),a=c(),n=r.obj(),M(),n}return kd=S,kd}var Dp={exports:{}},mC=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")};const{Buffer:pf}=ke,p6=mC,Hf=no("mqttjs:ws"),yC=bg,bC=bl.Transform,wC=["rejectUnauthorized","ca","cert","key","pfx","passphrase"],v6=typeof _e<"u"&&_e.title==="browser"||typeof __webpack_require__=="function";function g6(e,t){let r=e.protocol+"://"+e.hostname+":"+e.port+e.path;return typeof e.transformWsUrl=="function"&&(r=e.transformWsUrl(r,e,t)),r}function m6(e){const t=e;return e.hostname||(t.hostname="localhost"),e.port||(e.protocol==="wss"?t.port=443:t.port=80),e.path||(t.path="/"),e.wsOptions||(t.wsOptions={}),!v6&&e.protocol==="wss"&&wC.forEach(function(r){Object.prototype.hasOwnProperty.call(e,r)&&!Object.prototype.hasOwnProperty.call(e.wsOptions,r)&&(t.wsOptions[r]=e[r])}),t}function _C(e){const t=m6(e);if(t.hostname||(t.hostname=t.host),!t.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");const r=new URL(document.URL);t.hostname=r.hostname,t.port||(t.port=r.port)}return t.objectMode===void 0&&(t.objectMode=!(t.binary===!0||t.binary===void 0)),t}function MC(e,t,r){Hf("createWebSocket"),Hf("protocol: "+r.protocolId+" "+r.protocolVersion);const i=r.protocolId==="MQIsdp"&&r.protocolVersion===3?"mqttv3.1":"mqtt";return Hf("creating new Websocket for url: "+t+" and protocol: "+i),new p6(t,[i],r.wsOptions)}function SC(e,t){const r=t.protocolId==="MQIsdp"&&t.protocolVersion===3?"mqttv3.1":"mqtt",i=g6(t,e),a=new WebSocket(i,[r]);return a.binaryType="arraybuffer",a}function xC(e,t){Hf("streamBuilder");const r=m6(t),i=g6(r,e),a=MC(e,i,r),n=p6.createWebSocketStream(a,r.wsOptions);return n.url=i,a.on("close",()=>{n.destroy()}),n}function EC(e,t){Hf("browserStreamBuilder");let r;const a=_C(t).browserBufferSize||1024*512,n=t.browserBufferTimeout||1e3,l=!t.objectMode,c=SC(e,t),d=M(t,L,P);t.objectMode||(d._writev=B),d.on("close",()=>{c.close()});const m=typeof c.addEventListener<"u";c.readyState===c.OPEN?r=d:(r=r=yC(void 0,void 0,t),t.objectMode||(r._writev=B),m?c.addEventListener("open",S):c.onopen=S),r.socket=c,m?(c.addEventListener("close",R),c.addEventListener("error",I),c.addEventListener("message",O)):(c.onclose=R,c.onerror=I,c.onmessage=O);function M(C,j,$){const K=new bC({objectModeMode:C.objectMode});return K._write=j,K._flush=$,K}function S(){r.setReadable(d),r.setWritable(d),r.emit("connect")}function R(){r.end(),r.destroy()}function I(C){r.destroy(C)}function O(C){let j=C.data;j instanceof ArrayBuffer?j=pf.from(j):j=pf.from(j,"utf8"),d.push(j)}function B(C,j){const $=new Array(C.length);for(let K=0;K<C.length;K++)typeof C[K].chunk=="string"?$[K]=pf.from(C[K],"utf8"):$[K]=C[K].chunk;this._write(pf.concat($),"binary",j)}function L(C,j,$){c.bufferedAmount>a&&setTimeout(L,n,C,j,$),l&&typeof C=="string"&&(C=pf.from(C,"utf8"));try{c.send(C)}catch(K){return $(K)}$()}function P(C){c.close(),C()}return r}v6?Dp.exports=EC:Dp.exports=xC;var y6=Dp.exports;const b6=dP,RC=u3,AC=Z3,TC=ig,G1=no("mqttjs"),Kr={};typeof _e<"u"&&_e.title!=="browser"||typeof __webpack_require__!="function"?(Kr.mqtt=I1(),Kr.tcp=I1(),Kr.ssl=Ad(),Kr.tls=Ad(),Kr.mqtts=Ad()):(Kr.wx=K1(),Kr.wxs=K1(),Kr.ali=z1(),Kr.alis=z1());Kr.ws=y6;Kr.wss=y6;function OC(e){let t;e.auth&&(t=e.auth.match(/^(.+):(.+)$/),t?(e.username=t[1],e.password=t[2]):e.username=e.auth)}function w6(e,t){if(G1("connecting to an MQTT broker..."),typeof e=="object"&&!t&&(t=e,e=null),t=t||{},e){const a=AC.parse(e,!0);if(a.port!=null&&(a.port=Number(a.port)),t=TC(a,t),t.protocol===null)throw new Error("Missing protocol");t.protocol=t.protocol.replace(/:$/,"")}if(OC(t),t.query&&typeof t.query.clientId=="string"&&(t.clientId=t.query.clientId),t.cert&&t.key)if(t.protocol){if(["mqtts","wss","wxs","alis"].indexOf(t.protocol)===-1)switch(t.protocol){case"mqtt":t.protocol="mqtts";break;case"ws":t.protocol="wss";break;case"wx":t.protocol="wxs";break;case"ali":t.protocol="alis";break;default:throw new Error('Unknown protocol for secure connection: "'+t.protocol+'"!')}}else throw new Error("Missing secure protocol key");if(!Kr[t.protocol]){const a=["mqtts","wss"].indexOf(t.protocol)!==-1;t.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter(function(n,l){return a&&l%2===0?!1:typeof Kr[n]=="function"})[0]}if(t.clean===!1&&!t.clientId)throw new Error("Missing clientId for unclean clients");t.protocol&&(t.defaultProtocol=t.protocol);function r(a){return t.servers&&((!a._reconnectCount||a._reconnectCount===t.servers.length)&&(a._reconnectCount=0),t.host=t.servers[a._reconnectCount].host,t.port=t.servers[a._reconnectCount].port,t.protocol=t.servers[a._reconnectCount].protocol?t.servers[a._reconnectCount].protocol:t.defaultProtocol,t.hostname=t.host,a._reconnectCount++),G1("calling streambuilder for",t.protocol),Kr[t.protocol](a,t)}const i=new b6(r,t);return i.on("error",function(){}),i}gl.exports=w6;gl.exports.connect=w6;gl.exports.MqttClient=b6;gl.exports.Store=RC;var IC=gl.exports;const Xz=Fo(IC);function PC(){return _6().__VUE_DEVTOOLS_GLOBAL_HOOK__}function _6(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const CC=typeof Proxy=="function",BC="devtools-plugin:setup",LC="plugin:settings:set";let qa,Fp;function NC(){var e;return qa!==void 0||(typeof window<"u"&&window.performance?(qa=!0,Fp=window.performance):typeof globalThis<"u"&&(!((e=globalThis.perf_hooks)===null||e===void 0)&&e.performance)?(qa=!0,Fp=globalThis.perf_hooks.performance):qa=!1),qa}function kC(){return NC()?Fp.now():Date.now()}class $C{constructor(t,r){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=t,this.hook=r;const i={};if(t.settings)for(const l in t.settings){const c=t.settings[l];i[l]=c.defaultValue}const a=`__vue-devtools-plugin-settings__${t.id}`;let n=Object.assign({},i);try{const l=localStorage.getItem(a),c=JSON.parse(l);Object.assign(n,c)}catch{}this.fallbacks={getSettings(){return n},setSettings(l){try{localStorage.setItem(a,JSON.stringify(l))}catch{}n=l},now(){return kC()}},r&&r.on(LC,(l,c)=>{l===this.plugin.id&&this.fallbacks.setSettings(c)}),this.proxiedOn=new Proxy({},{get:(l,c)=>this.target?this.target.on[c]:(...d)=>{this.onQueue.push({method:c,args:d})}}),this.proxiedTarget=new Proxy({},{get:(l,c)=>this.target?this.target[c]:c==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(c)?(...d)=>(this.targetQueue.push({method:c,args:d,resolve:()=>{}}),this.fallbacks[c](...d)):(...d)=>new Promise(m=>{this.targetQueue.push({method:c,args:d,resolve:m})})})}async setRealTarget(t){this.target=t;for(const r of this.onQueue)this.target.on[r.method](...r.args);for(const r of this.targetQueue)r.resolve(await this.target[r.method](...r.args))}}function M6(e,t){const r=e,i=_6(),a=PC(),n=CC&&r.enableEarlyProxy;if(a&&(i.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!n))a.emit(BC,e,t);else{const l=n?new $C(r,a):null;(i.__VUE_DEVTOOLS_PLUGINS__=i.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:r,setupFn:t,proxy:l}),l&&t(l.proxiedTarget)}}/*!
-  * vue-router v4.4.3
-  * (c) 2024 Eduardo San Martin Morote
-  * @license MIT
-  */const Nn=typeof document<"u";function DC(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const Ft=Object.assign;function $d(e,t){const r={};for(const i in t){const a=t[i];r[i]=Qr(a)?a.map(e):e(a)}return r}const qf=()=>{},Qr=Array.isArray;function pt(e){const t=Array.from(arguments).slice(1);console.warn.apply(console,["[Vue Router warn]: "+e].concat(t))}const S6=/#/g,FC=/&/g,jC=/\//g,UC=/=/g,HC=/\?/g,x6=/\+/g,qC=/%5B/g,WC=/%5D/g,E6=/%5E/g,KC=/%60/g,R6=/%7B/g,VC=/%7C/g,A6=/%7D/g,zC=/%20/g;function wg(e){return encodeURI(""+e).replace(VC,"|").replace(qC,"[").replace(WC,"]")}function GC(e){return wg(e).replace(R6,"{").replace(A6,"}").replace(E6,"^")}function jp(e){return wg(e).replace(x6,"%2B").replace(zC,"+").replace(S6,"%23").replace(FC,"%26").replace(KC,"`").replace(R6,"{").replace(A6,"}").replace(E6,"^")}function YC(e){return jp(e).replace(UC,"%3D")}function ZC(e){return wg(e).replace(S6,"%23").replace(HC,"%3F")}function XC(e){return e==null?"":ZC(e).replace(jC,"%2F")}function Ms(e){try{return decodeURIComponent(""+e)}catch{pt(`Error decoding "${e}". Using original value`)}return""+e}const JC=/\/$/,QC=e=>e.replace(JC,"");function Dd(e,t,r="/"){let i,a={},n="",l="";const c=t.indexOf("#");let d=t.indexOf("?");return c<d&&c>=0&&(d=-1),d>-1&&(i=t.slice(0,d),n=t.slice(d+1,c>-1?c:t.length),a=e(n)),c>-1&&(i=i||t.slice(0,c),l=t.slice(c,t.length)),i=rB(i??t,r),{fullPath:i+(n&&"?")+n+l,path:i,query:a,hash:Ms(l)}}function eB(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function Y1(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Z1(e,t,r){const i=t.matched.length-1,a=r.matched.length-1;return i>-1&&i===a&&ko(t.matched[i],r.matched[a])&&T6(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function ko(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function T6(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!tB(e[r],t[r]))return!1;return!0}function tB(e,t){return Qr(e)?X1(e,t):Qr(t)?X1(t,e):e===t}function X1(e,t){return Qr(t)?e.length===t.length&&e.every((r,i)=>r===t[i]):e.length===1&&e[0]===t}function rB(e,t){if(e.startsWith("/"))return e;if(!t.startsWith("/"))return pt(`Cannot resolve a relative location without an absolute path. Trying to resolve "${e}" from "${t}". It should look like "/${t}".`),e;if(!e)return t;const r=t.split("/"),i=e.split("/"),a=i[i.length-1];(a===".."||a===".")&&i.push("");let n=r.length-1,l,c;for(l=0;l<i.length;l++)if(c=i[l],c!==".")if(c==="..")n>1&&n--;else break;return r.slice(0,n).join("/")+"/"+i.slice(l).join("/")}const uo={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var ol;(function(e){e.pop="pop",e.push="push"})(ol||(ol={}));var Wf;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Wf||(Wf={}));function iB(e){if(!e)if(Nn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),QC(e)}const nB=/^[^#]+#/;function oB(e,t){return e.replace(nB,"#")+t}function aB(e,t){const r=document.documentElement.getBoundingClientRect(),i=e.getBoundingClientRect();return{behavior:t.behavior,left:i.left-r.left-(t.left||0),top:i.top-r.top-(t.top||0)}}const Jh=()=>({left:window.scrollX,top:window.scrollY});function sB(e){let t;if("el"in e){const r=e.el,i=typeof r=="string"&&r.startsWith("#");if(typeof e.el=="string"&&(!i||!document.getElementById(e.el.slice(1))))try{const n=document.querySelector(e.el);if(i&&n){pt(`The selector "${e.el}" should be passed as "el: document.querySelector('${e.el}')" because it starts with "#".`);return}}catch{pt(`The selector "${e.el}" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);return}const a=typeof r=="string"?i?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!a){pt(`Couldn't find element using selector "${e.el}" returned by scrollBehavior.`);return}t=aB(a,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function J1(e,t){return(history.state?history.state.position-t:-1)+e}const Up=new Map;function fB(e,t){Up.set(e,t)}function lB(e){const t=Up.get(e);return Up.delete(e),t}let uB=()=>location.protocol+"//"+location.host;function O6(e,t){const{pathname:r,search:i,hash:a}=t,n=e.indexOf("#");if(n>-1){let c=a.includes(e.slice(n))?e.slice(n).length:1,d=a.slice(c);return d[0]!=="/"&&(d="/"+d),Y1(d,"")}return Y1(r,e)+i+a}function hB(e,t,r,i){let a=[],n=[],l=null;const c=({state:R})=>{const I=O6(e,location),O=r.value,B=t.value;let L=0;if(R){if(r.value=I,t.value=R,l&&l===O){l=null;return}L=B?R.position-B.position:0}else i(I);a.forEach(P=>{P(r.value,O,{delta:L,type:ol.pop,direction:L?L>0?Wf.forward:Wf.back:Wf.unknown})})};function d(){l=r.value}function m(R){a.push(R);const I=()=>{const O=a.indexOf(R);O>-1&&a.splice(O,1)};return n.push(I),I}function M(){const{history:R}=window;R.state&&R.replaceState(Ft({},R.state,{scroll:Jh()}),"")}function S(){for(const R of n)R();n=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",M)}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",M,{passive:!0}),{pauseListeners:d,listen:m,destroy:S}}function Q1(e,t,r,i=!1,a=!1){return{back:e,current:t,forward:r,replaced:i,position:window.history.length,scroll:a?Jh():null}}function cB(e){const{history:t,location:r}=window,i={value:O6(e,r)},a={value:t.state};a.value||n(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function n(d,m,M){const S=e.indexOf("#"),R=S>-1?(r.host&&document.querySelector("base")?e:e.slice(S))+d:uB()+e+d;try{t[M?"replaceState":"pushState"](m,"",R),a.value=m}catch(I){pt("Error with push/replace State",I),r[M?"replace":"assign"](R)}}function l(d,m){const M=Ft({},t.state,Q1(a.value.back,d,a.value.forward,!0),m,{position:a.value.position});n(d,M,!0),i.value=d}function c(d,m){const M=Ft({},a.value,t.state,{forward:d,scroll:Jh()});t.state||pt(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:
-
-history.replaceState(history.state, '', url)
-
-You can find more information at https://router.vuejs.org/guide/migration/#Usage-of-history-state`),n(M.current,M,!0);const S=Ft({},Q1(i.value,d,null),{position:M.position+1},m);n(d,S,!1),i.value=d}return{location:i,state:a,push:c,replace:l}}function dB(e){e=iB(e);const t=cB(e),r=hB(e,t.state,t.location,t.replace);function i(n,l=!0){l||r.pauseListeners(),history.go(n)}const a=Ft({location:"",base:e,go:i,createHref:oB.bind(null,e)},t,r);return Object.defineProperty(a,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(a,"state",{enumerable:!0,get:()=>t.state.value}),a}function Jz(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),!e.endsWith("#/")&&!e.endsWith("#")&&pt(`A hash base must end with a "#":
-"${e}" should be "${e.replace(/#.*$/,"#")}".`),dB(e)}function ah(e){return typeof e=="string"||e&&typeof e=="object"}function I6(e){return typeof e=="string"||typeof e=="symbol"}const P6=Symbol("navigation failure");var eb;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(eb||(eb={}));const pB={1({location:e,currentLocation:t}){return`No match for
- ${JSON.stringify(e)}${t?`
-while being at
-`+JSON.stringify(t):""}`},2({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${gB(t)}" via a navigation guard.`},4({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},8({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},16({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function Ss(e,t){return Ft(new Error(pB[e](t)),{type:e,[P6]:!0},t)}function En(e,t){return e instanceof Error&&P6 in e&&(t==null||!!(e.type&t))}const vB=["params","query","hash"];function gB(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const r of vB)r in e&&(t[r]=e[r]);return JSON.stringify(t,null,2)}const tb="[^/]+?",mB={sensitive:!1,strict:!1,start:!0,end:!0},yB=/[.+*?^${}()[\]/\\]/g;function bB(e,t){const r=Ft({},mB,t),i=[];let a=r.start?"^":"";const n=[];for(const m of e){const M=m.length?[]:[90];r.strict&&!m.length&&(a+="/");for(let S=0;S<m.length;S++){const R=m[S];let I=40+(r.sensitive?.25:0);if(R.type===0)S||(a+="/"),a+=R.value.replace(yB,"\\$&"),I+=40;else if(R.type===1){const{value:O,repeatable:B,optional:L,regexp:P}=R;n.push({name:O,repeatable:B,optional:L});const C=P||tb;if(C!==tb){I+=10;try{new RegExp(`(${C})`)}catch($){throw new Error(`Invalid custom RegExp for param "${O}" (${C}): `+$.message)}}let j=B?`((?:${C})(?:/(?:${C}))*)`:`(${C})`;S||(j=L&&m.length<2?`(?:/${j})`:"/"+j),L&&(j+="?"),a+=j,I+=20,L&&(I+=-8),B&&(I+=-20),C===".*"&&(I+=-50)}M.push(I)}i.push(M)}if(r.strict&&r.end){const m=i.length-1;i[m][i[m].length-1]+=.7000000000000001}r.strict||(a+="/?"),r.end?a+="$":r.strict&&(a+="(?:/|$)");const l=new RegExp(a,r.sensitive?"":"i");function c(m){const M=m.match(l),S={};if(!M)return null;for(let R=1;R<M.length;R++){const I=M[R]||"",O=n[R-1];S[O.name]=I&&O.repeatable?I.split("/"):I}return S}function d(m){let M="",S=!1;for(const R of e){(!S||!M.endsWith("/"))&&(M+="/"),S=!1;for(const I of R)if(I.type===0)M+=I.value;else if(I.type===1){const{value:O,repeatable:B,optional:L}=I,P=O in m?m[O]:"";if(Qr(P)&&!B)throw new Error(`Provided param "${O}" is an array but it is not repeatable (* or + modifiers)`);const C=Qr(P)?P.join("/"):P;if(!C)if(L)R.length<2&&(M.endsWith("/")?M=M.slice(0,-1):S=!0);else throw new Error(`Missing required param "${O}"`);M+=C}}return M||"/"}return{re:l,score:i,keys:n,parse:c,stringify:d}}function wB(e,t){let r=0;for(;r<e.length&&r<t.length;){const i=t[r]-e[r];if(i)return i;r++}return e.length<t.length?e.length===1&&e[0]===40+40?-1:1:e.length>t.length?t.length===1&&t[0]===40+40?1:-1:0}function C6(e,t){let r=0;const i=e.score,a=t.score;for(;r<i.length&&r<a.length;){const n=wB(i[r],a[r]);if(n)return n;r++}if(Math.abs(a.length-i.length)===1){if(rb(i))return 1;if(rb(a))return-1}return a.length-i.length}function rb(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const _B={type:0,value:""},MB=/[a-zA-Z0-9_]/;function SB(e){if(!e)return[[]];if(e==="/")return[[_B]];if(!e.startsWith("/"))throw new Error(`Route paths should start with a "/": "${e}" should be "/${e}".`);function t(I){throw new Error(`ERR (${r})/"${m}": ${I}`)}let r=0,i=r;const a=[];let n;function l(){n&&a.push(n),n=[]}let c=0,d,m="",M="";function S(){m&&(r===0?n.push({type:0,value:m}):r===1||r===2||r===3?(n.length>1&&(d==="*"||d==="+")&&t(`A repeatable param (${m}) must be alone in its segment. eg: '/:ids+.`),n.push({type:1,value:m,regexp:M,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):t("Invalid state to consume buffer"),m="")}function R(){m+=d}for(;c<e.length;){if(d=e[c++],d==="\\"&&r!==2){i=r,r=4;continue}switch(r){case 0:d==="/"?(m&&S(),l()):d===":"?(S(),r=1):R();break;case 4:R(),r=i;break;case 1:d==="("?r=2:MB.test(d)?R():(S(),r=0,d!=="*"&&d!=="?"&&d!=="+"&&c--);break;case 2:d===")"?M[M.length-1]=="\\"?M=M.slice(0,-1)+d:r=3:M+=d;break;case 3:S(),r=0,d!=="*"&&d!=="?"&&d!=="+"&&c--,M="";break;default:t("Unknown state");break}}return r===2&&t(`Unfinished custom RegExp for param "${m}"`),S(),l(),a}function xB(e,t,r){const i=bB(SB(e.path),r);{const n=new Set;for(const l of i.keys)n.has(l.name)&&pt(`Found duplicated params with name "${l.name}" for path "${e.path}". Only the last one will be available on "$route.params".`),n.add(l.name)}const a=Ft(i,{record:e,parent:t,children:[],alias:[]});return t&&!a.record.aliasOf==!t.record.aliasOf&&t.children.push(a),a}function EB(e,t){const r=[],i=new Map;t=ob({strict:!1,end:!0,sensitive:!1},t);function a(S){return i.get(S)}function n(S,R,I){const O=!I,B=RB(S);IB(B,R),B.aliasOf=I&&I.record;const L=ob(t,S),P=[B];if("alias"in S){const $=typeof S.alias=="string"?[S.alias]:S.alias;for(const K of $)P.push(Ft({},B,{components:I?I.record.components:B.components,path:K,aliasOf:I?I.record:B}))}let C,j;for(const $ of P){const{path:K}=$;if(R&&K[0]!=="/"){const G=R.record.path,te=G[G.length-1]==="/"?"":"/";$.path=R.record.path+(K&&te+K)}if($.path==="*")throw new Error(`Catch all routes ("*") must now be defined using a param with a custom regexp.
-See more at https://router.vuejs.org/guide/migration/#Removed-star-or-catch-all-routes.`);if(C=xB($,R,L),R&&K[0]==="/"&&PB(C,R),I?(I.alias.push(C),OB(I,C)):(j=j||C,j!==C&&j.alias.push(C),O&&S.name&&!nb(C)&&l(S.name)),B6(C)&&d(C),B.children){const G=B.children;for(let te=0;te<G.length;te++)n(G[te],C,I&&I.children[te])}I=I||C}return j?()=>{l(j)}:qf}function l(S){if(I6(S)){const R=i.get(S);R&&(i.delete(S),r.splice(r.indexOf(R),1),R.children.forEach(l),R.alias.forEach(l))}else{const R=r.indexOf(S);R>-1&&(r.splice(R,1),S.record.name&&i.delete(S.record.name),S.children.forEach(l),S.alias.forEach(l))}}function c(){return r}function d(S){const R=CB(S,r);r.splice(R,0,S),S.record.name&&!nb(S)&&i.set(S.record.name,S)}function m(S,R){let I,O={},B,L;if("name"in S&&S.name){if(I=i.get(S.name),!I)throw Ss(1,{location:S});{const j=Object.keys(S.params||{}).filter($=>!I.keys.find(K=>K.name===$));j.length&&pt(`Discarded invalid param(s) "${j.join('", "')}" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`)}L=I.record.name,O=Ft(ib(R.params,I.keys.filter(j=>!j.optional).concat(I.parent?I.parent.keys.filter(j=>j.optional):[]).map(j=>j.name)),S.params&&ib(S.params,I.keys.map(j=>j.name))),B=I.stringify(O)}else if(S.path!=null)B=S.path,B.startsWith("/")||pt(`The Matcher cannot resolve relative paths but received "${B}". Unless you directly called \`matcher.resolve("${B}")\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`),I=r.find(j=>j.re.test(B)),I&&(O=I.parse(B),L=I.record.name);else{if(I=R.name?i.get(R.name):r.find(j=>j.re.test(R.path)),!I)throw Ss(1,{location:S,currentLocation:R});L=I.record.name,O=Ft({},R.params,S.params),B=I.stringify(O)}const P=[];let C=I;for(;C;)P.unshift(C.record),C=C.parent;return{name:L,path:B,params:O,matched:P,meta:TB(P)}}e.forEach(S=>n(S));function M(){r.length=0,i.clear()}return{addRoute:n,resolve:m,removeRoute:l,clearRoutes:M,getRoutes:c,getRecordMatcher:a}}function ib(e,t){const r={};for(const i of t)i in e&&(r[i]=e[i]);return r}function RB(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:AB(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function AB(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const i in e.components)t[i]=typeof r=="object"?r[i]:r;return t}function nb(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function TB(e){return e.reduce((t,r)=>Ft(t,r.meta),{})}function ob(e,t){const r={};for(const i in e)r[i]=i in t?t[i]:e[i];return r}function Hp(e,t){return e.name===t.name&&e.optional===t.optional&&e.repeatable===t.repeatable}function OB(e,t){for(const r of e.keys)if(!r.optional&&!t.keys.find(Hp.bind(null,r)))return pt(`Alias "${t.record.path}" and the original record: "${e.record.path}" must have the exact same param named "${r.name}"`);for(const r of t.keys)if(!r.optional&&!e.keys.find(Hp.bind(null,r)))return pt(`Alias "${t.record.path}" and the original record: "${e.record.path}" must have the exact same param named "${r.name}"`)}function IB(e,t){t&&t.record.name&&!e.name&&!e.path&&pt(`The route named "${String(t.record.name)}" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`)}function PB(e,t){for(const r of t.keys)if(!e.keys.find(Hp.bind(null,r)))return pt(`Absolute path "${e.record.path}" must have the exact same param named "${r.name}" as its parent "${t.record.path}".`)}function CB(e,t){let r=0,i=t.length;for(;r!==i;){const n=r+i>>1;C6(e,t[n])<0?i=n:r=n+1}const a=BB(e);return a&&(i=t.lastIndexOf(a,i-1),i<0&&pt(`Finding ancestor route "${a.record.path}" failed for "${e.record.path}"`)),i}function BB(e){let t=e;for(;t=t.parent;)if(B6(t)&&C6(e,t)===0)return t}function B6({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function LB(e){const t={};if(e===""||e==="?")return t;const i=(e[0]==="?"?e.slice(1):e).split("&");for(let a=0;a<i.length;++a){const n=i[a].replace(x6," "),l=n.indexOf("="),c=Ms(l<0?n:n.slice(0,l)),d=l<0?null:Ms(n.slice(l+1));if(c in t){let m=t[c];Qr(m)||(m=t[c]=[m]),m.push(d)}else t[c]=d}return t}function ab(e){let t="";for(let r in e){const i=e[r];if(r=YC(r),i==null){i!==void 0&&(t+=(t.length?"&":"")+r);continue}(Qr(i)?i.map(n=>n&&jp(n)):[i&&jp(i)]).forEach(n=>{n!==void 0&&(t+=(t.length?"&":"")+r,n!=null&&(t+="="+n))})}return t}function NB(e){const t={};for(const r in e){const i=e[r];i!==void 0&&(t[r]=Qr(i)?i.map(a=>a==null?null:""+a):i==null?i:""+i)}return t}const kB=Symbol("router view location matched"),sb=Symbol("router view depth"),_g=Symbol("router"),L6=Symbol("route location"),qp=Symbol("router view location");function vf(){let e=[];function t(i){return e.push(i),()=>{const a=e.indexOf(i);a>-1&&e.splice(a,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function mo(e,t,r,i,a,n=l=>l()){const l=i&&(i.enterCallbacks[a]=i.enterCallbacks[a]||[]);return()=>new Promise((c,d)=>{const m=R=>{R===!1?d(Ss(4,{from:r,to:t})):R instanceof Error?d(R):ah(R)?d(Ss(2,{from:t,to:R})):(l&&i.enterCallbacks[a]===l&&typeof R=="function"&&l.push(R),c())},M=n(()=>e.call(i&&i.instances[a],t,r,$B(m,t,r)));let S=Promise.resolve(M);if(e.length<3&&(S=S.then(m)),e.length>2){const R=`The "next" callback was never called inside of ${e.name?'"'+e.name+'"':""}:
-${e.toString()}
-. If you are returning a value instead of calling "next", make sure to remove the "next" parameter from your function.`;if(typeof M=="object"&&"then"in M)S=S.then(I=>m._called?I:(pt(R),Promise.reject(new Error("Invalid navigation guard"))));else if(M!==void 0&&!m._called){pt(R),d(new Error("Invalid navigation guard"));return}}S.catch(R=>d(R))})}function $B(e,t,r){let i=0;return function(){i++===1&&pt(`The "next" callback was called more than once in one navigation guard when going from "${r.fullPath}" to "${t.fullPath}". It should be called exactly one time in each navigation guard. This will fail in production.`),e._called=!0,i===1&&e.apply(null,arguments)}}function Fd(e,t,r,i,a=n=>n()){const n=[];for(const l of e){!l.components&&!l.children.length&&pt(`Record with path "${l.path}" is either missing a "component(s)" or "children" property.`);for(const c in l.components){let d=l.components[c];{if(!d||typeof d!="object"&&typeof d!="function")throw pt(`Component "${c}" in record with path "${l.path}" is not a valid component. Received "${String(d)}".`),new Error("Invalid route component");if("then"in d){pt(`Component "${c}" in record with path "${l.path}" is a Promise instead of a function that returns a Promise. Did you write "import('./MyPage.vue')" instead of "() => import('./MyPage.vue')" ? This will break in production if not fixed.`);const m=d;d=()=>m}else d.__asyncLoader&&!d.__warnedDefineAsync&&(d.__warnedDefineAsync=!0,pt(`Component "${c}" in record with path "${l.path}" is defined using "defineAsyncComponent()". Write "() => import('./MyPage.vue')" instead of "defineAsyncComponent(() => import('./MyPage.vue'))".`))}if(!(t!=="beforeRouteEnter"&&!l.instances[c]))if(DB(d)){const M=(d.__vccOpts||d)[t];M&&n.push(mo(M,r,i,l,c,a))}else{let m=d();"catch"in m||(pt(`Component "${c}" in record with path "${l.path}" is a function that does not return a Promise. If you were passing a functional component, make sure to add a "displayName" to the component. This will break in production if not fixed.`),m=Promise.resolve(m)),n.push(()=>m.then(M=>{if(!M)return Promise.reject(new Error(`Couldn't resolve component "${c}" at "${l.path}"`));const S=DC(M)?M.default:M;l.components[c]=S;const I=(S.__vccOpts||S)[t];return I&&mo(I,r,i,l,c,a)()}))}}}return n}function DB(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function fb(e){const t=fn(_g),r=fn(L6);let i=!1,a=null;const n=ir(()=>{const M=jn(e.to);return(!i||M!==a)&&(ah(M)||(i?pt(`Invalid value for prop "to" in useLink()
-- to:`,M,`
-- previous to:`,a,`
-- props:`,e):pt(`Invalid value for prop "to" in useLink()
-- to:`,M,`
-- props:`,e)),a=M,i=!0),t.resolve(M)}),l=ir(()=>{const{matched:M}=n.value,{length:S}=M,R=M[S-1],I=r.matched;if(!R||!I.length)return-1;const O=I.findIndex(ko.bind(null,R));if(O>-1)return O;const B=lb(M[S-2]);return S>1&&lb(R)===B&&I[I.length-1].path!==B?I.findIndex(ko.bind(null,M[S-2])):O}),c=ir(()=>l.value>-1&&HB(r.params,n.value.params)),d=ir(()=>l.value>-1&&l.value===r.matched.length-1&&T6(r.params,n.value.params));function m(M={}){return UB(M)?t[jn(e.replace)?"replace":"push"](jn(e.to)).catch(qf):Promise.resolve()}if(Nn){const M=_i();if(M){const S={route:n.value,isActive:c.value,isExactActive:d.value,error:null};M.__vrl_devtools=M.__vrl_devtools||[],M.__vrl_devtools.push(S),j_(()=>{S.route=n.value,S.isActive=c.value,S.isExactActive=d.value,S.error=ah(jn(e.to))?null:'Invalid "to" value'},{flush:"post"})}}return{route:n,href:ir(()=>n.value.href),isActive:c,isExactActive:d,navigate:m}}const FB=Us({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:fb,setup(e,{slots:t}){const r=Ra(fb(e)),{options:i}=fn(_g),a=ir(()=>({[ub(e.activeClass,i.linkActiveClass,"router-link-active")]:r.isActive,[ub(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const n=t.default&&t.default(r);return e.custom?n:Lh("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:a.value},n)}}}),jB=FB;function UB(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function HB(e,t){for(const r in t){const i=t[r],a=e[r];if(typeof i=="string"){if(i!==a)return!1}else if(!Qr(a)||a.length!==i.length||i.some((n,l)=>n!==a[l]))return!1}return!0}function lb(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ub=(e,t,r)=>e??t??r,qB=Us({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){KB();const i=fn(qp),a=ir(()=>e.route||i.value),n=fn(sb,0),l=ir(()=>{let m=jn(n);const{matched:M}=a.value;let S;for(;(S=M[m])&&!S.components;)m++;return m}),c=ir(()=>a.value.matched[l.value]);$f(sb,ir(()=>l.value+1)),$f(kB,c),$f(qp,a);const d=Ar();return Tr(()=>[d.value,c.value,e.name],([m,M,S],[R,I,O])=>{M&&(M.instances[S]=m,I&&I!==M&&m&&m===R&&(M.leaveGuards.size||(M.leaveGuards=I.leaveGuards),M.updateGuards.size||(M.updateGuards=I.updateGuards))),m&&M&&(!I||!ko(M,I)||!R)&&(M.enterCallbacks[S]||[]).forEach(B=>B(m))},{flush:"post"}),()=>{const m=a.value,M=e.name,S=c.value,R=S&&S.components[M];if(!R)return hb(r.default,{Component:R,route:m});const I=S.props[M],O=I?I===!0?m.params:typeof I=="function"?I(m):I:null,L=Lh(R,Ft({},O,t,{onVnodeUnmounted:P=>{P.component.isUnmounted&&(S.instances[M]=null)},ref:d}));if(Nn&&L.ref){const P={depth:l.value,name:S.name,path:S.path,meta:S.meta};(Qr(L.ref)?L.ref.map(j=>j.i):[L.ref.i]).forEach(j=>{j.__vrv_devtools=P})}return hb(r.default,{Component:L,route:m})||L}}});function hb(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const WB=qB;function KB(){const e=_i(),t=e.parent&&e.parent.type.name,r=e.parent&&e.parent.subTree&&e.parent.subTree.type;if(t&&(t==="KeepAlive"||t.includes("Transition"))&&typeof r=="object"&&r.name==="RouterView"){const i=t==="KeepAlive"?"keep-alive":"transition";pt(`<router-view> can no longer be used directly inside <transition> or <keep-alive>.
-Use slot props instead:
-
-<router-view v-slot="{ Component }">
-  <${i}>
-    <component :is="Component" />
-  </${i}>
-</router-view>`)}}function gf(e,t){const r=Ft({},e,{matched:e.matched.map(i=>rL(i,["instances","children","aliasOf"]))});return{_custom:{type:null,readOnly:!0,display:e.fullPath,tooltip:t,value:r}}}function Ql(e){return{_custom:{display:e}}}let VB=0;function zB(e,t,r){if(t.__hasDevtools)return;t.__hasDevtools=!0;const i=VB++;M6({id:"org.vuejs.router"+(i?"."+i:""),label:"Vue Router",packageName:"vue-router",homepage:"https://router.vuejs.org",logo:"https://router.vuejs.org/logo.png",componentStateTypes:["Routing"],app:e},a=>{typeof a.now!="function"&&console.warn("[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),a.on.inspectComponent((M,S)=>{M.instanceData&&M.instanceData.state.push({type:"Routing",key:"$route",editable:!1,value:gf(t.currentRoute.value,"Current Route")})}),a.on.visitComponentTree(({treeNode:M,componentInstance:S})=>{if(S.__vrv_devtools){const R=S.__vrv_devtools;M.tags.push({label:(R.name?`${R.name.toString()}: `:"")+R.path,textColor:0,tooltip:"This component is rendered by &lt;router-view&gt;",backgroundColor:N6})}Qr(S.__vrl_devtools)&&(S.__devtoolsApi=a,S.__vrl_devtools.forEach(R=>{let I=R.route.path,O=D6,B="",L=0;R.error?(I=R.error,O=JB,L=QB):R.isExactActive?(O=$6,B="This is exactly active"):R.isActive&&(O=k6,B="This link is active"),M.tags.push({label:I,textColor:L,tooltip:B,backgroundColor:O})}))}),Tr(t.currentRoute,()=>{d(),a.notifyComponentUpdate(),a.sendInspectorTree(c),a.sendInspectorState(c)});const n="router:navigations:"+i;a.addTimelineLayer({id:n,label:`Router${i?" "+i:""} Navigations`,color:4237508}),t.onError((M,S)=>{a.addTimelineEvent({layerId:n,event:{title:"Error during Navigation",subtitle:S.fullPath,logType:"error",time:a.now(),data:{error:M},groupId:S.meta.__navigationId}})});let l=0;t.beforeEach((M,S)=>{const R={guard:Ql("beforeEach"),from:gf(S,"Current Location during this navigation"),to:gf(M,"Target location")};Object.defineProperty(M.meta,"__navigationId",{value:l++}),a.addTimelineEvent({layerId:n,event:{time:a.now(),title:"Start of navigation",subtitle:M.fullPath,data:R,groupId:M.meta.__navigationId}})}),t.afterEach((M,S,R)=>{const I={guard:Ql("afterEach")};R?(I.failure={_custom:{type:Error,readOnly:!0,display:R?R.message:"",tooltip:"Navigation Failure",value:R}},I.status=Ql("❌")):I.status=Ql("✅"),I.from=gf(S,"Current Location during this navigation"),I.to=gf(M,"Target location"),a.addTimelineEvent({layerId:n,event:{title:"End of navigation",subtitle:M.fullPath,time:a.now(),data:I,logType:R?"warning":"default",groupId:M.meta.__navigationId}})});const c="router-inspector:"+i;a.addInspector({id:c,label:"Routes"+(i?" "+i:""),icon:"book",treeFilterPlaceholder:"Search routes"});function d(){if(!m)return;const M=m;let S=r.getRoutes().filter(R=>!R.parent||!R.parent.record.components);S.forEach(U6),M.filter&&(S=S.filter(R=>Wp(R,M.filter.toLowerCase()))),S.forEach(R=>j6(R,t.currentRoute.value)),M.rootNodes=S.map(F6)}let m;a.on.getInspectorTree(M=>{m=M,M.app===e&&M.inspectorId===c&&d()}),a.on.getInspectorState(M=>{if(M.app===e&&M.inspectorId===c){const R=r.getRoutes().find(I=>I.record.__vd_id===M.nodeId);R&&(M.state={options:YB(R)})}}),a.sendInspectorTree(c),a.sendInspectorState(c)})}function GB(e){return e.optional?e.repeatable?"*":"?":e.repeatable?"+":""}function YB(e){const{record:t}=e,r=[{editable:!1,key:"path",value:t.path}];return t.name!=null&&r.push({editable:!1,key:"name",value:t.name}),r.push({editable:!1,key:"regexp",value:e.re}),e.keys.length&&r.push({editable:!1,key:"keys",value:{_custom:{type:null,readOnly:!0,display:e.keys.map(i=>`${i.name}${GB(i)}`).join(" "),tooltip:"Param keys",value:e.keys}}}),t.redirect!=null&&r.push({editable:!1,key:"redirect",value:t.redirect}),e.alias.length&&r.push({editable:!1,key:"aliases",value:e.alias.map(i=>i.record.path)}),Object.keys(e.record.meta).length&&r.push({editable:!1,key:"meta",value:e.record.meta}),r.push({key:"score",editable:!1,value:{_custom:{type:null,readOnly:!0,display:e.score.map(i=>i.join(", ")).join(" | "),tooltip:"Score used to sort routes",value:e.score}}}),r}const N6=15485081,k6=2450411,$6=8702998,ZB=2282478,D6=16486972,XB=6710886,JB=16704226,QB=12131356;function F6(e){const t=[],{record:r}=e;r.name!=null&&t.push({label:String(r.name),textColor:0,backgroundColor:ZB}),r.aliasOf&&t.push({label:"alias",textColor:0,backgroundColor:D6}),e.__vd_match&&t.push({label:"matches",textColor:0,backgroundColor:N6}),e.__vd_exactActive&&t.push({label:"exact",textColor:0,backgroundColor:$6}),e.__vd_active&&t.push({label:"active",textColor:0,backgroundColor:k6}),r.redirect&&t.push({label:typeof r.redirect=="string"?`redirect: ${r.redirect}`:"redirects",textColor:16777215,backgroundColor:XB});let i=r.__vd_id;return i==null&&(i=String(eL++),r.__vd_id=i),{id:i,label:r.path,tags:t,children:e.children.map(F6)}}let eL=0;const tL=/^\/(.*)\/([a-z]*)$/;function j6(e,t){const r=t.matched.length&&ko(t.matched[t.matched.length-1],e.record);e.__vd_exactActive=e.__vd_active=r,r||(e.__vd_active=t.matched.some(i=>ko(i,e.record))),e.children.forEach(i=>j6(i,t))}function U6(e){e.__vd_match=!1,e.children.forEach(U6)}function Wp(e,t){const r=String(e.re).match(tL);if(e.__vd_match=!1,!r||r.length<3)return!1;if(new RegExp(r[1].replace(/\$$/,""),r[2]).test(t))return e.children.forEach(l=>Wp(l,t)),e.record.path!=="/"||t==="/"?(e.__vd_match=e.re.test(t),!0):!1;const a=e.record.path.toLowerCase(),n=Ms(a);return!t.startsWith("/")&&(n.includes(t)||a.includes(t))||n.startsWith(t)||a.startsWith(t)||e.record.name&&String(e.record.name).includes(t)?!0:e.children.some(l=>Wp(l,t))}function rL(e,t){const r={};for(const i in e)t.includes(i)||(r[i]=e[i]);return r}function Qz(e){const t=EB(e.routes,e),r=e.parseQuery||LB,i=e.stringifyQuery||ab,a=e.history;if(!a)throw new Error('Provide the "history" option when calling "createRouter()": https://router.vuejs.org/api/interfaces/RouterOptions.html#history');const n=vf(),l=vf(),c=vf(),d=z2(uo);let m=uo;Nn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const M=$d.bind(null,E=>""+E),S=$d.bind(null,XC),R=$d.bind(null,Ms);function I(E,q){let V,X;return I6(E)?(V=t.getRecordMatcher(E),V||pt(`Parent route "${String(E)}" not found when adding child route`,q),X=q):X=E,t.addRoute(X,V)}function O(E){const q=t.getRecordMatcher(E);q?t.removeRoute(q):pt(`Cannot remove non-existent route "${String(E)}"`)}function B(){return t.getRoutes().map(E=>E.record)}function L(E){return!!t.getRecordMatcher(E)}function P(E,q){if(q=Ft({},q||d.value),typeof E=="string"){const U=Dd(r,E,q.path),Z=t.resolve({path:U.path},q),F=a.createHref(U.fullPath);return F.startsWith("//")?pt(`Location "${E}" resolved to "${F}". A resolved location cannot start with multiple slashes.`):Z.matched.length||pt(`No match found for location with path "${E}"`),Ft(U,Z,{params:R(Z.params),hash:Ms(U.hash),redirectedFrom:void 0,href:F})}if(!ah(E))return pt(`router.resolve() was passed an invalid location. This will fail in production.
-- Location:`,E),P({});let V;if(E.path!=null)"params"in E&&!("name"in E)&&Object.keys(E.params).length&&pt(`Path "${E.path}" was passed with params but they will be ignored. Use a named route alongside params instead.`),V=Ft({},E,{path:Dd(r,E.path,q.path).path});else{const U=Ft({},E.params);for(const Z in U)U[Z]==null&&delete U[Z];V=Ft({},E,{params:S(U)}),q.params=S(q.params)}const X=t.resolve(V,q),b=E.hash||"";b&&!b.startsWith("#")&&pt(`A \`hash\` should always start with the character "#". Replace "${b}" with "#${b}".`),X.params=M(R(X.params));const y=eB(i,Ft({},E,{hash:GC(b),path:X.path})),D=a.createHref(y);return D.startsWith("//")?pt(`Location "${E}" resolved to "${D}". A resolved location cannot start with multiple slashes.`):X.matched.length||pt(`No match found for location with path "${E.path!=null?E.path:E}"`),Ft({fullPath:y,hash:b,query:i===ab?NB(E.query):E.query||{}},X,{redirectedFrom:void 0,href:D})}function C(E){return typeof E=="string"?Dd(r,E,d.value.path):Ft({},E)}function j(E,q){if(m!==E)return Ss(8,{from:q,to:E})}function $(E){return te(E)}function K(E){return $(Ft(C(E),{replace:!0}))}function G(E){const q=E.matched[E.matched.length-1];if(q&&q.redirect){const{redirect:V}=q;let X=typeof V=="function"?V(E):V;if(typeof X=="string"&&(X=X.includes("?")||X.includes("#")?X=C(X):{path:X},X.params={}),X.path==null&&!("name"in X))throw pt(`Invalid redirect found:
-${JSON.stringify(X,null,2)}
- when navigating to "${E.fullPath}". A redirect must contain a name or path. This will break in production.`),new Error("Invalid redirect");return Ft({query:E.query,hash:E.hash,params:X.path!=null?{}:E.params},X)}}function te(E,q){const V=m=P(E),X=d.value,b=E.state,y=E.force,D=E.replace===!0,U=G(V);if(U)return te(Ft(C(U),{state:typeof U=="object"?Ft({},b,U.state):b,force:y,replace:D}),q||V);const Z=V;Z.redirectedFrom=q;let F;return!y&&Z1(i,X,V)&&(F=Ss(16,{to:Z,from:X}),v(X,X,!0,!1)),(F?Promise.resolve(F):ce(Z,X)).catch(N=>En(N)?En(N,2)?N:s(N):x(N,Z,X)).then(N=>{if(N){if(En(N,2))return Z1(i,P(N.to),Z)&&q&&(q._count=q._count?q._count+1:1)>30?(pt(`Detected a possibly infinite redirection in a navigation guard when going from "${X.fullPath}" to "${Z.fullPath}". Aborting to avoid a Stack Overflow.
- Are you always returning a new location within a navigation guard? That would lead to this error. Only return when redirecting or aborting, that should fix this. This might break in production if not fixed.`),Promise.reject(new Error("Infinite redirect in navigation guard"))):te(Ft({replace:D},C(N.to),{state:typeof N.to=="object"?Ft({},b,N.to.state):b,force:y}),q||Z)}else N=o(Z,X,!0,D,b);return _(Z,X,N),N})}function Q(E,q){const V=j(E,q);return V?Promise.reject(V):Promise.resolve()}function W(E){const q=Y.values().next().value;return q&&typeof q.runWithContext=="function"?q.runWithContext(E):E()}function ce(E,q){let V;const[X,b,y]=iL(E,q);V=Fd(X.reverse(),"beforeRouteLeave",E,q);for(const U of X)U.leaveGuards.forEach(Z=>{V.push(mo(Z,E,q))});const D=Q.bind(null,E,q);return V.push(D),A(V).then(()=>{V=[];for(const U of n.list())V.push(mo(U,E,q));return V.push(D),A(V)}).then(()=>{V=Fd(b,"beforeRouteUpdate",E,q);for(const U of b)U.updateGuards.forEach(Z=>{V.push(mo(Z,E,q))});return V.push(D),A(V)}).then(()=>{V=[];for(const U of y)if(U.beforeEnter)if(Qr(U.beforeEnter))for(const Z of U.beforeEnter)V.push(mo(Z,E,q));else V.push(mo(U.beforeEnter,E,q));return V.push(D),A(V)}).then(()=>(E.matched.forEach(U=>U.enterCallbacks={}),V=Fd(y,"beforeRouteEnter",E,q,W),V.push(D),A(V))).then(()=>{V=[];for(const U of l.list())V.push(mo(U,E,q));return V.push(D),A(V)}).catch(U=>En(U,8)?U:Promise.reject(U))}function _(E,q,V){c.list().forEach(X=>W(()=>X(E,q,V)))}function o(E,q,V,X,b){const y=j(E,q);if(y)return y;const D=q===uo,U=Nn?history.state:{};V&&(X||D?a.replace(E.fullPath,Ft({scroll:D&&U&&U.scroll},b)):a.push(E.fullPath,b)),d.value=E,v(E,q,V,D),s()}let f;function u(){f||(f=a.listen((E,q,V)=>{if(!ee.listening)return;const X=P(E),b=G(X);if(b){te(Ft(b,{replace:!0}),X).catch(qf);return}m=X;const y=d.value;Nn&&fB(J1(y.fullPath,V.delta),Jh()),ce(X,y).catch(D=>En(D,12)?D:En(D,2)?(te(D.to,X).then(U=>{En(U,20)&&!V.delta&&V.type===ol.pop&&a.go(-1,!1)}).catch(qf),Promise.reject()):(V.delta&&a.go(-V.delta,!1),x(D,X,y))).then(D=>{D=D||o(X,y,!1),D&&(V.delta&&!En(D,8)?a.go(-V.delta,!1):V.type===ol.pop&&En(D,20)&&a.go(-1,!1)),_(X,y,D)}).catch(qf)}))}let h=vf(),p=vf(),w;function x(E,q,V){s(E);const X=p.list();return X.length?X.forEach(b=>b(E,q,V)):(pt("uncaught error during route navigation:"),console.error(E)),Promise.reject(E)}function g(){return w&&d.value!==uo?Promise.resolve():new Promise((E,q)=>{h.add([E,q])})}function s(E){return w||(w=!E,u(),h.list().forEach(([q,V])=>E?V(E):q()),h.reset()),E}function v(E,q,V,X){const{scrollBehavior:b}=e;if(!Nn||!b)return Promise.resolve();const y=!V&&lB(J1(E.fullPath,0))||(X||!V)&&history.state&&history.state.scroll||null;return Un().then(()=>b(E,q,y)).then(D=>D&&sB(D)).catch(D=>x(D,E,q))}const T=E=>a.go(E);let k;const Y=new Set,ee={currentRoute:d,listening:!0,addRoute:I,removeRoute:O,clearRoutes:t.clearRoutes,hasRoute:L,getRoutes:B,resolve:P,options:e,push:$,replace:K,go:T,back:()=>T(-1),forward:()=>T(1),beforeEach:n.add,beforeResolve:l.add,afterEach:c.add,onError:p.add,isReady:g,install(E){const q=this;E.component("RouterLink",jB),E.component("RouterView",WB),E.config.globalProperties.$router=q,Object.defineProperty(E.config.globalProperties,"$route",{enumerable:!0,get:()=>jn(d)}),Nn&&!k&&d.value===uo&&(k=!0,$(a.location).catch(b=>{pt("Unexpected error when starting the router:",b)}));const V={};for(const b in uo)Object.defineProperty(V,b,{get:()=>d.value[b],enumerable:!0});E.provide(_g,q),E.provide(L6,Av(V)),E.provide(qp,d);const X=E.unmount;Y.add(E),E.unmount=function(){Y.delete(E),Y.size<1&&(m=uo,f&&f(),f=null,d.value=uo,k=!1,w=!1),X()},Nn&&zB(E,q,t)}};function A(E){return E.reduce((q,V)=>q.then(()=>W(V)),Promise.resolve())}return ee}function iL(e,t){const r=[],i=[],a=[],n=Math.max(t.matched.length,e.matched.length);for(let l=0;l<n;l++){const c=t.matched[l];c&&(e.matched.find(m=>ko(m,c))?i.push(c):r.push(c));const d=e.matched[l];d&&(t.matched.find(m=>ko(m,d))||a.push(d))}return[r,i,a]}/*!
- * vuex v4.1.0
- * (c) 2022 Evan You
- * @license MIT
- */var nL="store";function Pa(e,t){Object.keys(e).forEach(function(r){return t(e[r],r)})}function oL(e){return e!==null&&typeof e=="object"}function aL(e){return e&&typeof e.then=="function"}function Ui(e,t){if(!e)throw new Error("[vuex] "+t)}function sL(e,t){return function(){return e(t)}}function H6(e,t,r){return t.indexOf(e)<0&&(r&&r.prepend?t.unshift(e):t.push(e)),function(){var i=t.indexOf(e);i>-1&&t.splice(i,1)}}function q6(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var r=e.state;Qh(e,r,[],e._modules.root,!0),Mg(e,r,t)}function Mg(e,t,r){var i=e._state,a=e._scope;e.getters={},e._makeLocalGettersCache=Object.create(null);var n=e._wrappedGetters,l={},c={},d=T2(!0);d.run(function(){Pa(n,function(m,M){l[M]=sL(m,e),c[M]=ir(function(){return l[M]()}),Object.defineProperty(e.getters,M,{get:function(){return c[M].value},enumerable:!0})})}),e._state=Ra({data:t}),e._scope=d,e.strict&&cL(e),i&&r&&e._withCommit(function(){i.data=null}),a&&a.stop()}function Qh(e,t,r,i,a){var n=!r.length,l=e._modules.getNamespace(r);if(i.namespaced&&(e._modulesNamespaceMap[l]&&console.error("[vuex] duplicate namespace "+l+" for the namespaced module "+r.join("/")),e._modulesNamespaceMap[l]=i),!n&&!a){var c=Sg(t,r.slice(0,-1)),d=r[r.length-1];e._withCommit(function(){d in c&&console.warn('[vuex] state field "'+d+'" was overridden by a module with the same name at "'+r.join(".")+'"'),c[d]=i.state})}var m=i.context=fL(e,l,r);i.forEachMutation(function(M,S){var R=l+S;lL(e,R,M,m)}),i.forEachAction(function(M,S){var R=M.root?S:l+S,I=M.handler||M;uL(e,R,I,m)}),i.forEachGetter(function(M,S){var R=l+S;hL(e,R,M,m)}),i.forEachChild(function(M,S){Qh(e,t,r.concat(S),M,a)})}function fL(e,t,r){var i=t==="",a={dispatch:i?e.dispatch:function(n,l,c){var d=sh(n,l,c),m=d.payload,M=d.options,S=d.type;if((!M||!M.root)&&(S=t+S,!e._actions[S])){console.error("[vuex] unknown local action type: "+d.type+", global type: "+S);return}return e.dispatch(S,m)},commit:i?e.commit:function(n,l,c){var d=sh(n,l,c),m=d.payload,M=d.options,S=d.type;if((!M||!M.root)&&(S=t+S,!e._mutations[S])){console.error("[vuex] unknown local mutation type: "+d.type+", global type: "+S);return}e.commit(S,m,M)}};return Object.defineProperties(a,{getters:{get:i?function(){return e.getters}:function(){return W6(e,t)}},state:{get:function(){return Sg(e.state,r)}}}),a}function W6(e,t){if(!e._makeLocalGettersCache[t]){var r={},i=t.length;Object.keys(e.getters).forEach(function(a){if(a.slice(0,i)===t){var n=a.slice(i);Object.defineProperty(r,n,{get:function(){return e.getters[a]},enumerable:!0})}}),e._makeLocalGettersCache[t]=r}return e._makeLocalGettersCache[t]}function lL(e,t,r,i){var a=e._mutations[t]||(e._mutations[t]=[]);a.push(function(l){r.call(e,i.state,l)})}function uL(e,t,r,i){var a=e._actions[t]||(e._actions[t]=[]);a.push(function(l){var c=r.call(e,{dispatch:i.dispatch,commit:i.commit,getters:i.getters,state:i.state,rootGetters:e.getters,rootState:e.state},l);return aL(c)||(c=Promise.resolve(c)),e._devtoolHook?c.catch(function(d){throw e._devtoolHook.emit("vuex:error",d),d}):c})}function hL(e,t,r,i){if(e._wrappedGetters[t]){console.error("[vuex] duplicate getter key: "+t);return}e._wrappedGetters[t]=function(n){return r(i.state,i.getters,n.state,n.getters)}}function cL(e){Tr(function(){return e._state.data},function(){Ui(e._committing,"do not mutate vuex store state outside mutation handlers.")},{deep:!0,flush:"sync"})}function Sg(e,t){return t.reduce(function(r,i){return r[i]},e)}function sh(e,t,r){return oL(e)&&e.type&&(r=t,t=e,e=e.type),Ui(typeof e=="string","expects string as the type, but found "+typeof e+"."),{type:e,payload:t,options:r}}var dL="vuex bindings",cb="vuex:mutations",jd="vuex:actions",Wa="vuex",pL=0;function vL(e,t){M6({id:"org.vuejs.vuex",app:e,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:[dL]},function(r){r.addTimelineLayer({id:cb,label:"Vuex Mutations",color:db}),r.addTimelineLayer({id:jd,label:"Vuex Actions",color:db}),r.addInspector({id:Wa,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),r.on.getInspectorTree(function(i){if(i.app===e&&i.inspectorId===Wa)if(i.filter){var a=[];G6(a,t._modules.root,i.filter,""),i.rootNodes=a}else i.rootNodes=[z6(t._modules.root,"")]}),r.on.getInspectorState(function(i){if(i.app===e&&i.inspectorId===Wa){var a=i.nodeId;W6(t,a),i.state=yL(wL(t._modules,a),a==="root"?t.getters:t._makeLocalGettersCache,a)}}),r.on.editInspectorState(function(i){if(i.app===e&&i.inspectorId===Wa){var a=i.nodeId,n=i.path;a!=="root"&&(n=a.split("/").filter(Boolean).concat(n)),t._withCommit(function(){i.set(t._state.data,n,i.state.value)})}}),t.subscribe(function(i,a){var n={};i.payload&&(n.payload=i.payload),n.state=a,r.notifyComponentUpdate(),r.sendInspectorTree(Wa),r.sendInspectorState(Wa),r.addTimelineEvent({layerId:cb,event:{time:Date.now(),title:i.type,data:n}})}),t.subscribeAction({before:function(i,a){var n={};i.payload&&(n.payload=i.payload),i._id=pL++,i._time=Date.now(),n.state=a,r.addTimelineEvent({layerId:jd,event:{time:i._time,title:i.type,groupId:i._id,subtitle:"start",data:n}})},after:function(i,a){var n={},l=Date.now()-i._time;n.duration={_custom:{type:"duration",display:l+"ms",tooltip:"Action duration",value:l}},i.payload&&(n.payload=i.payload),n.state=a,r.addTimelineEvent({layerId:jd,event:{time:Date.now(),title:i.type,groupId:i._id,subtitle:"end",data:n}})}})})}var db=8702998,gL=6710886,mL=16777215,K6={label:"namespaced",textColor:mL,backgroundColor:gL};function V6(e){return e&&e!=="root"?e.split("/").slice(-2,-1)[0]:"Root"}function z6(e,t){return{id:t||"root",label:V6(t),tags:e.namespaced?[K6]:[],children:Object.keys(e._children).map(function(r){return z6(e._children[r],t+r+"/")})}}function G6(e,t,r,i){i.includes(r)&&e.push({id:i||"root",label:i.endsWith("/")?i.slice(0,i.length-1):i||"Root",tags:t.namespaced?[K6]:[]}),Object.keys(t._children).forEach(function(a){G6(e,t._children[a],r,i+a+"/")})}function yL(e,t,r){t=r==="root"?t:t[r];var i=Object.keys(t),a={state:Object.keys(e.state).map(function(l){return{key:l,editable:!0,value:e.state[l]}})};if(i.length){var n=bL(t);a.getters=Object.keys(n).map(function(l){return{key:l.endsWith("/")?V6(l):l,editable:!1,value:Kp(function(){return n[l]})}})}return a}function bL(e){var t={};return Object.keys(e).forEach(function(r){var i=r.split("/");if(i.length>1){var a=t,n=i.pop();i.forEach(function(l){a[l]||(a[l]={_custom:{value:{},display:l,tooltip:"Module",abstract:!0}}),a=a[l]._custom.value}),a[n]=Kp(function(){return e[r]})}else t[r]=Kp(function(){return e[r]})}),t}function wL(e,t){var r=t.split("/").filter(function(i){return i});return r.reduce(function(i,a,n){var l=i[a];if(!l)throw new Error('Missing module "'+a+'" for path "'+t+'".');return n===r.length-1?l:l._children},t==="root"?e:e.root._children)}function Kp(e){try{return e()}catch(t){return t}}var Wi=function(t,r){this.runtime=r,this._children=Object.create(null),this._rawModule=t;var i=t.state;this.state=(typeof i=="function"?i():i)||{}},Y6={namespaced:{configurable:!0}};Y6.namespaced.get=function(){return!!this._rawModule.namespaced};Wi.prototype.addChild=function(t,r){this._children[t]=r};Wi.prototype.removeChild=function(t){delete this._children[t]};Wi.prototype.getChild=function(t){return this._children[t]};Wi.prototype.hasChild=function(t){return t in this._children};Wi.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)};Wi.prototype.forEachChild=function(t){Pa(this._children,t)};Wi.prototype.forEachGetter=function(t){this._rawModule.getters&&Pa(this._rawModule.getters,t)};Wi.prototype.forEachAction=function(t){this._rawModule.actions&&Pa(this._rawModule.actions,t)};Wi.prototype.forEachMutation=function(t){this._rawModule.mutations&&Pa(this._rawModule.mutations,t)};Object.defineProperties(Wi.prototype,Y6);var Ca=function(t){this.register([],t,!1)};Ca.prototype.get=function(t){return t.reduce(function(r,i){return r.getChild(i)},this.root)};Ca.prototype.getNamespace=function(t){var r=this.root;return t.reduce(function(i,a){return r=r.getChild(a),i+(r.namespaced?a+"/":"")},"")};Ca.prototype.update=function(t){Z6([],this.root,t)};Ca.prototype.register=function(t,r,i){var a=this;i===void 0&&(i=!0),X6(t,r);var n=new Wi(r,i);if(t.length===0)this.root=n;else{var l=this.get(t.slice(0,-1));l.addChild(t[t.length-1],n)}r.modules&&Pa(r.modules,function(c,d){a.register(t.concat(d),c,i)})};Ca.prototype.unregister=function(t){var r=this.get(t.slice(0,-1)),i=t[t.length-1],a=r.getChild(i);if(!a){console.warn("[vuex] trying to unregister module '"+i+"', which is not registered");return}a.runtime&&r.removeChild(i)};Ca.prototype.isRegistered=function(t){var r=this.get(t.slice(0,-1)),i=t[t.length-1];return r?r.hasChild(i):!1};function Z6(e,t,r){if(X6(e,r),t.update(r),r.modules)for(var i in r.modules){if(!t.getChild(i)){console.warn("[vuex] trying to add a new module '"+i+"' on hot reloading, manual reload is needed");return}Z6(e.concat(i),t.getChild(i),r.modules[i])}}var pb={assert:function(e){return typeof e=="function"},expected:"function"},_L={assert:function(e){return typeof e=="function"||typeof e=="object"&&typeof e.handler=="function"},expected:'function or object with "handler" function'},vb={getters:pb,mutations:pb,actions:_L};function X6(e,t){Object.keys(vb).forEach(function(r){if(t[r]){var i=vb[r];Pa(t[r],function(a,n){Ui(i.assert(a),ML(e,r,n,a,i.expected))})}})}function ML(e,t,r,i,a){var n=t+" should be "+a+' but "'+t+"."+r+'"';return e.length>0&&(n+=' in module "'+e.join(".")+'"'),n+=" is "+JSON.stringify(i)+".",n}function eG(e){return new Yr(e)}var Yr=function e(t){var r=this;t===void 0&&(t={}),Ui(typeof Promise<"u","vuex requires a Promise polyfill in this browser."),Ui(this instanceof e,"store must be called with the new operator.");var i=t.plugins;i===void 0&&(i=[]);var a=t.strict;a===void 0&&(a=!1);var n=t.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new Ca(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._scope=null,this._devtools=n;var l=this,c=this,d=c.dispatch,m=c.commit;this.dispatch=function(R,I){return d.call(l,R,I)},this.commit=function(R,I,O){return m.call(l,R,I,O)},this.strict=a;var M=this._modules.root.state;Qh(this,M,[],this._modules.root),Mg(this,M),i.forEach(function(S){return S(r)})},xg={state:{configurable:!0}};Yr.prototype.install=function(t,r){t.provide(r||nL,this),t.config.globalProperties.$store=this;var i=this._devtools!==void 0?this._devtools:!0;i&&vL(t,this)};xg.state.get=function(){return this._state.data};xg.state.set=function(e){Ui(!1,"use store.replaceState() to explicit replace store state.")};Yr.prototype.commit=function(t,r,i){var a=this,n=sh(t,r,i),l=n.type,c=n.payload,d=n.options,m={type:l,payload:c},M=this._mutations[l];if(!M){console.error("[vuex] unknown mutation type: "+l);return}this._withCommit(function(){M.forEach(function(R){R(c)})}),this._subscribers.slice().forEach(function(S){return S(m,a.state)}),d&&d.silent&&console.warn("[vuex] mutation type: "+l+". Silent option has been removed. Use the filter functionality in the vue-devtools")};Yr.prototype.dispatch=function(t,r){var i=this,a=sh(t,r),n=a.type,l=a.payload,c={type:n,payload:l},d=this._actions[n];if(!d){console.error("[vuex] unknown action type: "+n);return}try{this._actionSubscribers.slice().filter(function(M){return M.before}).forEach(function(M){return M.before(c,i.state)})}catch(M){console.warn("[vuex] error in before action subscribers: "),console.error(M)}var m=d.length>1?Promise.all(d.map(function(M){return M(l)})):d[0](l);return new Promise(function(M,S){m.then(function(R){try{i._actionSubscribers.filter(function(I){return I.after}).forEach(function(I){return I.after(c,i.state)})}catch(I){console.warn("[vuex] error in after action subscribers: "),console.error(I)}M(R)},function(R){try{i._actionSubscribers.filter(function(I){return I.error}).forEach(function(I){return I.error(c,i.state,R)})}catch(I){console.warn("[vuex] error in error action subscribers: "),console.error(I)}S(R)})})};Yr.prototype.subscribe=function(t,r){return H6(t,this._subscribers,r)};Yr.prototype.subscribeAction=function(t,r){var i=typeof t=="function"?{before:t}:t;return H6(i,this._actionSubscribers,r)};Yr.prototype.watch=function(t,r,i){var a=this;return Ui(typeof t=="function","store.watch only accepts a function."),Tr(function(){return t(a.state,a.getters)},r,Object.assign({},i))};Yr.prototype.replaceState=function(t){var r=this;this._withCommit(function(){r._state.data=t})};Yr.prototype.registerModule=function(t,r,i){i===void 0&&(i={}),typeof t=="string"&&(t=[t]),Ui(Array.isArray(t),"module path must be a string or an Array."),Ui(t.length>0,"cannot register the root module by using registerModule."),this._modules.register(t,r),Qh(this,this.state,t,this._modules.get(t),i.preserveState),Mg(this,this.state)};Yr.prototype.unregisterModule=function(t){var r=this;typeof t=="string"&&(t=[t]),Ui(Array.isArray(t),"module path must be a string or an Array."),this._modules.unregister(t),this._withCommit(function(){var i=Sg(r.state,t.slice(0,-1));delete i[t[t.length-1]]}),q6(this)};Yr.prototype.hasModule=function(t){return typeof t=="string"&&(t=[t]),Ui(Array.isArray(t),"module path must be a string or an Array."),this._modules.isRegistered(t)};Yr.prototype.hotUpdate=function(t){this._modules.update(t),q6(this,!0)};Yr.prototype._withCommit=function(t){var r=this._committing;this._committing=!0,t(),this._committing=r};Object.defineProperties(Yr.prototype,xg);function SL(e,t,r){var i=-1,a=e.length;t<0&&(t=-t>a?0:a+t),r=r>a?a:r,r<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var n=Array(a);++i<a;)n[i]=e[i+t];return n}var xL=SL,EL=xL;function RL(e,t,r){var i=e.length;return r=r===void 0?i:r,!t&&r>=i?e:EL(e,t,r)}var AL=RL,TL="\\ud800-\\udfff",OL="\\u0300-\\u036f",IL="\\ufe20-\\ufe2f",PL="\\u20d0-\\u20ff",CL=OL+IL+PL,BL="\\ufe0e\\ufe0f",LL="\\u200d",NL=RegExp("["+LL+TL+CL+BL+"]");function kL(e){return NL.test(e)}var J6=kL;function $L(e){return e.split("")}var DL=$L,Q6="\\ud800-\\udfff",FL="\\u0300-\\u036f",jL="\\ufe20-\\ufe2f",UL="\\u20d0-\\u20ff",HL=FL+jL+UL,qL="\\ufe0e\\ufe0f",WL="["+Q6+"]",Vp="["+HL+"]",zp="\\ud83c[\\udffb-\\udfff]",KL="(?:"+Vp+"|"+zp+")",eS="[^"+Q6+"]",tS="(?:\\ud83c[\\udde6-\\uddff]){2}",rS="[\\ud800-\\udbff][\\udc00-\\udfff]",VL="\\u200d",iS=KL+"?",nS="["+qL+"]?",zL="(?:"+VL+"(?:"+[eS,tS,rS].join("|")+")"+nS+iS+")*",GL=nS+iS+zL,YL="(?:"+[eS+Vp+"?",Vp,tS,rS,WL].join("|")+")",ZL=RegExp(zp+"(?="+zp+")|"+YL+GL,"g");function XL(e){return e.match(ZL)||[]}var JL=XL,QL=DL,eN=J6,tN=JL;function rN(e){return eN(e)?tN(e):QL(e)}var iN=rN,nN=typeof Ze=="object"&&Ze&&Ze.Object===Object&&Ze,oN=nN,aN=oN,sN=typeof self=="object"&&self&&self.Object===Object&&self,fN=aN||sN||Function("return this")(),lN=fN,uN=lN,hN=uN.Symbol,Eg=hN;function cN(e,t){for(var r=-1,i=e==null?0:e.length,a=Array(i);++r<i;)a[r]=t(e[r],r,e);return a}var dN=cN,pN=Array.isArray,vN=pN,gb=Eg,oS=Object.prototype,gN=oS.hasOwnProperty,mN=oS.toString,mf=gb?gb.toStringTag:void 0;function yN(e){var t=gN.call(e,mf),r=e[mf];try{e[mf]=void 0;var i=!0}catch{}var a=mN.call(e);return i&&(t?e[mf]=r:delete e[mf]),a}var bN=yN,wN=Object.prototype,_N=wN.toString;function MN(e){return _N.call(e)}var SN=MN,mb=Eg,xN=bN,EN=SN,RN="[object Null]",AN="[object Undefined]",yb=mb?mb.toStringTag:void 0;function TN(e){return e==null?e===void 0?AN:RN:yb&&yb in Object(e)?xN(e):EN(e)}var ON=TN;function IN(e){return e!=null&&typeof e=="object"}var PN=IN,CN=ON,BN=PN,LN="[object Symbol]";function NN(e){return typeof e=="symbol"||BN(e)&&CN(e)==LN}var kN=NN,bb=Eg,$N=dN,DN=vN,FN=kN,jN=1/0,wb=bb?bb.prototype:void 0,_b=wb?wb.toString:void 0;function aS(e){if(typeof e=="string")return e;if(DN(e))return $N(e,aS)+"";if(FN(e))return _b?_b.call(e):"";var t=e+"";return t=="0"&&1/e==-jN?"-0":t}var UN=aS,HN=UN;function qN(e){return e==null?"":HN(e)}var ec=qN,WN=AL,KN=J6,VN=iN,zN=ec;function GN(e){return function(t){t=zN(t);var r=KN(t)?VN(t):void 0,i=r?r[0]:t.charAt(0),a=r?WN(r,1).join(""):t.slice(1);return i[e]()+a}}var YN=GN,ZN=YN,XN=ZN("toUpperCase"),sS=XN;const tG=Fo(sS);var JN=ec,QN=sS;function ek(e){return QN(JN(e).toLowerCase())}var tk=ek;function rk(e,t,r,i){var a=-1,n=e==null?0:e.length;for(i&&n&&(r=e[++a]);++a<n;)r=t(r,e[a],a,e);return r}var ik=rk;function nk(e){return function(t){return e==null?void 0:e[t]}}var ok=nk,ak=ok,sk={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",Ĳ:"IJ",ĳ:"ij",Œ:"Oe",œ:"oe",ŉ:"'n",ſ:"s"},fk=ak(sk),lk=fk,uk=lk,hk=ec,ck=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,dk="\\u0300-\\u036f",pk="\\ufe20-\\ufe2f",vk="\\u20d0-\\u20ff",gk=dk+pk+vk,mk="["+gk+"]",yk=RegExp(mk,"g");function bk(e){return e=hk(e),e&&e.replace(ck,uk).replace(yk,"")}var wk=bk,_k=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function Mk(e){return e.match(_k)||[]}var Sk=Mk,xk=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function Ek(e){return xk.test(e)}var Rk=Ek,fS="\\ud800-\\udfff",Ak="\\u0300-\\u036f",Tk="\\ufe20-\\ufe2f",Ok="\\u20d0-\\u20ff",Ik=Ak+Tk+Ok,lS="\\u2700-\\u27bf",uS="a-z\\xdf-\\xf6\\xf8-\\xff",Pk="\\xac\\xb1\\xd7\\xf7",Ck="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Bk="\\u2000-\\u206f",Lk=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",hS="A-Z\\xc0-\\xd6\\xd8-\\xde",Nk="\\ufe0e\\ufe0f",cS=Pk+Ck+Bk+Lk,dS="['’]",Mb="["+cS+"]",kk="["+Ik+"]",pS="\\d+",$k="["+lS+"]",vS="["+uS+"]",gS="[^"+fS+cS+pS+lS+uS+hS+"]",Dk="\\ud83c[\\udffb-\\udfff]",Fk="(?:"+kk+"|"+Dk+")",jk="[^"+fS+"]",mS="(?:\\ud83c[\\udde6-\\uddff]){2}",yS="[\\ud800-\\udbff][\\udc00-\\udfff]",Ya="["+hS+"]",Uk="\\u200d",Sb="(?:"+vS+"|"+gS+")",Hk="(?:"+Ya+"|"+gS+")",xb="(?:"+dS+"(?:d|ll|m|re|s|t|ve))?",Eb="(?:"+dS+"(?:D|LL|M|RE|S|T|VE))?",bS=Fk+"?",wS="["+Nk+"]?",qk="(?:"+Uk+"(?:"+[jk,mS,yS].join("|")+")"+wS+bS+")*",Wk="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Kk="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Vk=wS+bS+qk,zk="(?:"+[$k,mS,yS].join("|")+")"+Vk,Gk=RegExp([Ya+"?"+vS+"+"+xb+"(?="+[Mb,Ya,"$"].join("|")+")",Hk+"+"+Eb+"(?="+[Mb,Ya+Sb,"$"].join("|")+")",Ya+"?"+Sb+"+"+xb,Ya+"+"+Eb,Kk,Wk,pS,zk].join("|"),"g");function Yk(e){return e.match(Gk)||[]}var Zk=Yk,Xk=Sk,Jk=Rk,Qk=ec,e$=Zk;function t$(e,t,r){return e=Qk(e),t=r?void 0:t,t===void 0?Jk(e)?e$(e):Xk(e):e.match(t)||[]}var r$=t$,i$=ik,n$=wk,o$=r$,a$="['’]",s$=RegExp(a$,"g");function f$(e){return function(t){return i$(o$(n$(t).replace(s$,"")),e,"")}}var l$=f$,u$=tk,h$=l$,c$=h$(function(e,t,r){return t=t.toLowerCase(),e+(r?u$(t):t)}),d$=c$;const rG=Fo(d$);/**!
- * @fileOverview Kickass library to create and place poppers near their reference elements.
- * @version 1.16.1
- * @license
- * Copyright (c) 2016 Federico Zivolo and contributors
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */var Sl=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",p$=function(){for(var e=["Edge","Trident","Firefox"],t=0;t<e.length;t+=1)if(Sl&&navigator.userAgent.indexOf(e[t])>=0)return 1;return 0}();function v$(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}function g$(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},p$))}}var m$=Sl&&window.Promise,y$=m$?v$:g$;function _S(e){var t={};return e&&t.toString.call(e)==="[object Function]"}function Ba(e,t){if(e.nodeType!==1)return[];var r=e.ownerDocument.defaultView,i=r.getComputedStyle(e,null);return t?i[t]:i}function Rg(e){return e.nodeName==="HTML"?e:e.parentNode||e.host}function xl(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=Ba(e),r=t.overflow,i=t.overflowX,a=t.overflowY;return/(auto|scroll|overlay)/.test(r+a+i)?e:xl(Rg(e))}function MS(e){return e&&e.referenceNode?e.referenceNode:e}var Rb=Sl&&!!(window.MSInputMethodContext&&document.documentMode),Ab=Sl&&/MSIE 10/.test(navigator.userAgent);function Ks(e){return e===11?Rb:e===10?Ab:Rb||Ab}function xs(e){if(!e)return document.documentElement;for(var t=Ks(10)?document.body:null,r=e.offsetParent||null;r===t&&e.nextElementSibling;)r=(e=e.nextElementSibling).offsetParent;var i=r&&r.nodeName;return!i||i==="BODY"||i==="HTML"?e?e.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(r.nodeName)!==-1&&Ba(r,"position")==="static"?xs(r):r}function b$(e){var t=e.nodeName;return t==="BODY"?!1:t==="HTML"||xs(e.firstElementChild)===e}function Gp(e){return e.parentNode!==null?Gp(e.parentNode):e}function fh(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var r=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=r?e:t,a=r?t:e,n=document.createRange();n.setStart(i,0),n.setEnd(a,0);var l=n.commonAncestorContainer;if(e!==l&&t!==l||i.contains(a))return b$(l)?l:xs(l);var c=Gp(e);return c.host?fh(c.host,t):fh(e,Gp(t).host)}function Es(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",r=t==="top"?"scrollTop":"scrollLeft",i=e.nodeName;if(i==="BODY"||i==="HTML"){var a=e.ownerDocument.documentElement,n=e.ownerDocument.scrollingElement||a;return n[r]}return e[r]}function w$(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=Es(t,"top"),a=Es(t,"left"),n=r?-1:1;return e.top+=i*n,e.bottom+=i*n,e.left+=a*n,e.right+=a*n,e}function Tb(e,t){var r=t==="x"?"Left":"Top",i=r==="Left"?"Right":"Bottom";return parseFloat(e["border"+r+"Width"])+parseFloat(e["border"+i+"Width"])}function Ob(e,t,r,i){return Math.max(t["offset"+e],t["scroll"+e],r["client"+e],r["offset"+e],r["scroll"+e],Ks(10)?parseInt(r["offset"+e])+parseInt(i["margin"+(e==="Height"?"Top":"Left")])+parseInt(i["margin"+(e==="Height"?"Bottom":"Right")]):0)}function SS(e){var t=e.body,r=e.documentElement,i=Ks(10)&&getComputedStyle(r);return{height:Ob("Height",t,r,i),width:Ob("Width",t,r,i)}}var _$=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},M$=function(){function e(t,r){for(var i=0;i<r.length;i++){var a=r[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),Rs=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},pi=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e};function $o(e){return pi({},e,{right:e.left+e.width,bottom:e.top+e.height})}function Yp(e){var t={};try{if(Ks(10)){t=e.getBoundingClientRect();var r=Es(e,"top"),i=Es(e,"left");t.top+=r,t.left+=i,t.bottom+=r,t.right+=i}else t=e.getBoundingClientRect()}catch{}var a={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},n=e.nodeName==="HTML"?SS(e.ownerDocument):{},l=n.width||e.clientWidth||a.width,c=n.height||e.clientHeight||a.height,d=e.offsetWidth-l,m=e.offsetHeight-c;if(d||m){var M=Ba(e);d-=Tb(M,"x"),m-=Tb(M,"y"),a.width-=d,a.height-=m}return $o(a)}function Ag(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=Ks(10),a=t.nodeName==="HTML",n=Yp(e),l=Yp(t),c=xl(e),d=Ba(t),m=parseFloat(d.borderTopWidth),M=parseFloat(d.borderLeftWidth);r&&a&&(l.top=Math.max(l.top,0),l.left=Math.max(l.left,0));var S=$o({top:n.top-l.top-m,left:n.left-l.left-M,width:n.width,height:n.height});if(S.marginTop=0,S.marginLeft=0,!i&&a){var R=parseFloat(d.marginTop),I=parseFloat(d.marginLeft);S.top-=m-R,S.bottom-=m-R,S.left-=M-I,S.right-=M-I,S.marginTop=R,S.marginLeft=I}return(i&&!r?t.contains(c):t===c&&c.nodeName!=="BODY")&&(S=w$(S,t)),S}function S$(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=e.ownerDocument.documentElement,i=Ag(e,r),a=Math.max(r.clientWidth,window.innerWidth||0),n=Math.max(r.clientHeight,window.innerHeight||0),l=t?0:Es(r),c=t?0:Es(r,"left"),d={top:l-i.top+i.marginTop,left:c-i.left+i.marginLeft,width:a,height:n};return $o(d)}function xS(e){var t=e.nodeName;if(t==="BODY"||t==="HTML")return!1;if(Ba(e,"position")==="fixed")return!0;var r=Rg(e);return r?xS(r):!1}function ES(e){if(!e||!e.parentElement||Ks())return document.documentElement;for(var t=e.parentElement;t&&Ba(t,"transform")==="none";)t=t.parentElement;return t||document.documentElement}function Tg(e,t,r,i){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,n={top:0,left:0},l=a?ES(e):fh(e,MS(t));if(i==="viewport")n=S$(l,a);else{var c=void 0;i==="scrollParent"?(c=xl(Rg(t)),c.nodeName==="BODY"&&(c=e.ownerDocument.documentElement)):i==="window"?c=e.ownerDocument.documentElement:c=i;var d=Ag(c,l,a);if(c.nodeName==="HTML"&&!xS(l)){var m=SS(e.ownerDocument),M=m.height,S=m.width;n.top+=d.top-d.marginTop,n.bottom=M+d.top,n.left+=d.left-d.marginLeft,n.right=S+d.left}else n=d}r=r||0;var R=typeof r=="number";return n.left+=R?r:r.left||0,n.top+=R?r:r.top||0,n.right-=R?r:r.right||0,n.bottom-=R?r:r.bottom||0,n}function x$(e){var t=e.width,r=e.height;return t*r}function RS(e,t,r,i,a){var n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(e.indexOf("auto")===-1)return e;var l=Tg(r,i,n,a),c={top:{width:l.width,height:t.top-l.top},right:{width:l.right-t.right,height:l.height},bottom:{width:l.width,height:l.bottom-t.bottom},left:{width:t.left-l.left,height:l.height}},d=Object.keys(c).map(function(R){return pi({key:R},c[R],{area:x$(c[R])})}).sort(function(R,I){return I.area-R.area}),m=d.filter(function(R){var I=R.width,O=R.height;return I>=r.clientWidth&&O>=r.clientHeight}),M=m.length>0?m[0].key:d[0].key,S=e.split("-")[1];return M+(S?"-"+S:"")}function AS(e,t,r){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,a=i?ES(t):fh(t,MS(r));return Ag(r,a,i)}function TS(e){var t=e.ownerDocument.defaultView,r=t.getComputedStyle(e),i=parseFloat(r.marginTop||0)+parseFloat(r.marginBottom||0),a=parseFloat(r.marginLeft||0)+parseFloat(r.marginRight||0),n={width:e.offsetWidth+a,height:e.offsetHeight+i};return n}function lh(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(r){return t[r]})}function OS(e,t,r){r=r.split("-")[0];var i=TS(e),a={width:i.width,height:i.height},n=["right","left"].indexOf(r)!==-1,l=n?"top":"left",c=n?"left":"top",d=n?"height":"width",m=n?"width":"height";return a[l]=t[l]+t[d]/2-i[d]/2,r===c?a[c]=t[c]-i[m]:a[c]=t[lh(c)],a}function El(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function E$(e,t,r){if(Array.prototype.findIndex)return e.findIndex(function(a){return a[t]===r});var i=El(e,function(a){return a[t]===r});return e.indexOf(i)}function IS(e,t,r){var i=r===void 0?e:e.slice(0,E$(e,"name",r));return i.forEach(function(a){a.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=a.function||a.fn;a.enabled&&_S(n)&&(t.offsets.popper=$o(t.offsets.popper),t.offsets.reference=$o(t.offsets.reference),t=n(t,a))}),t}function R$(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=AS(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=RS(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=OS(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=IS(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function PS(e,t){return e.some(function(r){var i=r.name,a=r.enabled;return a&&i===t})}function Og(e){for(var t=[!1,"ms","Webkit","Moz","O"],r=e.charAt(0).toUpperCase()+e.slice(1),i=0;i<t.length;i++){var a=t[i],n=a?""+a+r:e;if(typeof document.body.style[n]<"u")return n}return null}function A$(){return this.state.isDestroyed=!0,PS(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[Og("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function CS(e){var t=e.ownerDocument;return t?t.defaultView:window}function BS(e,t,r,i){var a=e.nodeName==="BODY",n=a?e.ownerDocument.defaultView:e;n.addEventListener(t,r,{passive:!0}),a||BS(xl(n.parentNode),t,r,i),i.push(n)}function T$(e,t,r,i){r.updateBound=i,CS(e).addEventListener("resize",r.updateBound,{passive:!0});var a=xl(e);return BS(a,"scroll",r.updateBound,r.scrollParents),r.scrollElement=a,r.eventsEnabled=!0,r}function O$(){this.state.eventsEnabled||(this.state=T$(this.reference,this.options,this.state,this.scheduleUpdate))}function I$(e,t){return CS(e).removeEventListener("resize",t.updateBound),t.scrollParents.forEach(function(r){r.removeEventListener("scroll",t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function P$(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=I$(this.reference,this.state))}function Ig(e){return e!==""&&!isNaN(parseFloat(e))&&isFinite(e)}function Zp(e,t){Object.keys(t).forEach(function(r){var i="";["width","height","top","right","bottom","left"].indexOf(r)!==-1&&Ig(t[r])&&(i="px"),e.style[r]=t[r]+i})}function C$(e,t){Object.keys(t).forEach(function(r){var i=t[r];i!==!1?e.setAttribute(r,t[r]):e.removeAttribute(r)})}function B$(e){return Zp(e.instance.popper,e.styles),C$(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&Zp(e.arrowElement,e.arrowStyles),e}function L$(e,t,r,i,a){var n=AS(a,t,e,r.positionFixed),l=RS(r.placement,n,t,e,r.modifiers.flip.boundariesElement,r.modifiers.flip.padding);return t.setAttribute("x-placement",l),Zp(t,{position:r.positionFixed?"fixed":"absolute"}),r}function N$(e,t){var r=e.offsets,i=r.popper,a=r.reference,n=Math.round,l=Math.floor,c=function(P){return P},d=n(a.width),m=n(i.width),M=["left","right"].indexOf(e.placement)!==-1,S=e.placement.indexOf("-")!==-1,R=d%2===m%2,I=d%2===1&&m%2===1,O=t?M||S||R?n:l:c,B=t?n:c;return{left:O(I&&!S&&t?i.left-1:i.left),top:B(i.top),bottom:B(i.bottom),right:O(i.right)}}var k$=Sl&&/Firefox/i.test(navigator.userAgent);function $$(e,t){var r=t.x,i=t.y,a=e.offsets.popper,n=El(e.instance.modifiers,function(j){return j.name==="applyStyle"}).gpuAcceleration;n!==void 0&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var l=n!==void 0?n:t.gpuAcceleration,c=xs(e.instance.popper),d=Yp(c),m={position:a.position},M=N$(e,window.devicePixelRatio<2||!k$),S=r==="bottom"?"top":"bottom",R=i==="right"?"left":"right",I=Og("transform"),O=void 0,B=void 0;if(S==="bottom"?c.nodeName==="HTML"?B=-c.clientHeight+M.bottom:B=-d.height+M.bottom:B=M.top,R==="right"?c.nodeName==="HTML"?O=-c.clientWidth+M.right:O=-d.width+M.right:O=M.left,l&&I)m[I]="translate3d("+O+"px, "+B+"px, 0)",m[S]=0,m[R]=0,m.willChange="transform";else{var L=S==="bottom"?-1:1,P=R==="right"?-1:1;m[S]=B*L,m[R]=O*P,m.willChange=S+", "+R}var C={"x-placement":e.placement};return e.attributes=pi({},C,e.attributes),e.styles=pi({},m,e.styles),e.arrowStyles=pi({},e.offsets.arrow,e.arrowStyles),e}function LS(e,t,r){var i=El(e,function(c){var d=c.name;return d===t}),a=!!i&&e.some(function(c){return c.name===r&&c.enabled&&c.order<i.order});if(!a){var n="`"+t+"`",l="`"+r+"`";console.warn(l+" modifier is required by "+n+" modifier in order to work, be sure to include it before "+n+"!")}return a}function D$(e,t){var r;if(!LS(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if(typeof i=="string"){if(i=e.instance.popper.querySelector(i),!i)return e}else if(!e.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var a=e.placement.split("-")[0],n=e.offsets,l=n.popper,c=n.reference,d=["left","right"].indexOf(a)!==-1,m=d?"height":"width",M=d?"Top":"Left",S=M.toLowerCase(),R=d?"left":"top",I=d?"bottom":"right",O=TS(i)[m];c[I]-O<l[S]&&(e.offsets.popper[S]-=l[S]-(c[I]-O)),c[S]+O>l[I]&&(e.offsets.popper[S]+=c[S]+O-l[I]),e.offsets.popper=$o(e.offsets.popper);var B=c[S]+c[m]/2-O/2,L=Ba(e.instance.popper),P=parseFloat(L["margin"+M]),C=parseFloat(L["border"+M+"Width"]),j=B-e.offsets.popper[S]-P-C;return j=Math.max(Math.min(l[m]-O,j),0),e.arrowElement=i,e.offsets.arrow=(r={},Rs(r,S,Math.round(j)),Rs(r,R,""),r),e}function F$(e){return e==="end"?"start":e==="start"?"end":e}var NS=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],Ud=NS.slice(3);function Ib(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=Ud.indexOf(e),i=Ud.slice(r+1).concat(Ud.slice(0,r));return t?i.reverse():i}var Hd={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function j$(e,t){if(PS(e.instance.modifiers,"inner")||e.flipped&&e.placement===e.originalPlacement)return e;var r=Tg(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),i=e.placement.split("-")[0],a=lh(i),n=e.placement.split("-")[1]||"",l=[];switch(t.behavior){case Hd.FLIP:l=[i,a];break;case Hd.CLOCKWISE:l=Ib(i);break;case Hd.COUNTERCLOCKWISE:l=Ib(i,!0);break;default:l=t.behavior}return l.forEach(function(c,d){if(i!==c||l.length===d+1)return e;i=e.placement.split("-")[0],a=lh(i);var m=e.offsets.popper,M=e.offsets.reference,S=Math.floor,R=i==="left"&&S(m.right)>S(M.left)||i==="right"&&S(m.left)<S(M.right)||i==="top"&&S(m.bottom)>S(M.top)||i==="bottom"&&S(m.top)<S(M.bottom),I=S(m.left)<S(r.left),O=S(m.right)>S(r.right),B=S(m.top)<S(r.top),L=S(m.bottom)>S(r.bottom),P=i==="left"&&I||i==="right"&&O||i==="top"&&B||i==="bottom"&&L,C=["top","bottom"].indexOf(i)!==-1,j=!!t.flipVariations&&(C&&n==="start"&&I||C&&n==="end"&&O||!C&&n==="start"&&B||!C&&n==="end"&&L),$=!!t.flipVariationsByContent&&(C&&n==="start"&&O||C&&n==="end"&&I||!C&&n==="start"&&L||!C&&n==="end"&&B),K=j||$;(R||P||K)&&(e.flipped=!0,(R||P)&&(i=l[d+1]),K&&(n=F$(n)),e.placement=i+(n?"-"+n:""),e.offsets.popper=pi({},e.offsets.popper,OS(e.instance.popper,e.offsets.reference,e.placement)),e=IS(e.instance.modifiers,e,"flip"))}),e}function U$(e){var t=e.offsets,r=t.popper,i=t.reference,a=e.placement.split("-")[0],n=Math.floor,l=["top","bottom"].indexOf(a)!==-1,c=l?"right":"bottom",d=l?"left":"top",m=l?"width":"height";return r[c]<n(i[d])&&(e.offsets.popper[d]=n(i[d])-r[m]),r[d]>n(i[c])&&(e.offsets.popper[d]=n(i[c])),e}function H$(e,t,r,i){var a=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),n=+a[1],l=a[2];if(!n)return e;if(l.indexOf("%")===0){var c=void 0;switch(l){case"%p":c=r;break;case"%":case"%r":default:c=i}var d=$o(c);return d[t]/100*n}else if(l==="vh"||l==="vw"){var m=void 0;return l==="vh"?m=Math.max(document.documentElement.clientHeight,window.innerHeight||0):m=Math.max(document.documentElement.clientWidth,window.innerWidth||0),m/100*n}else return n}function q$(e,t,r,i){var a=[0,0],n=["right","left"].indexOf(i)!==-1,l=e.split(/(\+|\-)/).map(function(M){return M.trim()}),c=l.indexOf(El(l,function(M){return M.search(/,|\s/)!==-1}));l[c]&&l[c].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var d=/\s*,\s*|\s+/,m=c!==-1?[l.slice(0,c).concat([l[c].split(d)[0]]),[l[c].split(d)[1]].concat(l.slice(c+1))]:[l];return m=m.map(function(M,S){var R=(S===1?!n:n)?"height":"width",I=!1;return M.reduce(function(O,B){return O[O.length-1]===""&&["+","-"].indexOf(B)!==-1?(O[O.length-1]=B,I=!0,O):I?(O[O.length-1]+=B,I=!1,O):O.concat(B)},[]).map(function(O){return H$(O,R,t,r)})}),m.forEach(function(M,S){M.forEach(function(R,I){Ig(R)&&(a[S]+=R*(M[I-1]==="-"?-1:1))})}),a}function W$(e,t){var r=t.offset,i=e.placement,a=e.offsets,n=a.popper,l=a.reference,c=i.split("-")[0],d=void 0;return Ig(+r)?d=[+r,0]:d=q$(r,n,l,c),c==="left"?(n.top+=d[0],n.left-=d[1]):c==="right"?(n.top+=d[0],n.left+=d[1]):c==="top"?(n.left+=d[0],n.top-=d[1]):c==="bottom"&&(n.left+=d[0],n.top+=d[1]),e.popper=n,e}function K$(e,t){var r=t.boundariesElement||xs(e.instance.popper);e.instance.reference===r&&(r=xs(r));var i=Og("transform"),a=e.instance.popper.style,n=a.top,l=a.left,c=a[i];a.top="",a.left="",a[i]="";var d=Tg(e.instance.popper,e.instance.reference,t.padding,r,e.positionFixed);a.top=n,a.left=l,a[i]=c,t.boundaries=d;var m=t.priority,M=e.offsets.popper,S={primary:function(I){var O=M[I];return M[I]<d[I]&&!t.escapeWithReference&&(O=Math.max(M[I],d[I])),Rs({},I,O)},secondary:function(I){var O=I==="right"?"left":"top",B=M[O];return M[I]>d[I]&&!t.escapeWithReference&&(B=Math.min(M[O],d[I]-(I==="right"?M.width:M.height))),Rs({},O,B)}};return m.forEach(function(R){var I=["left","top"].indexOf(R)!==-1?"primary":"secondary";M=pi({},M,S[I](R))}),e.offsets.popper=M,e}function V$(e){var t=e.placement,r=t.split("-")[0],i=t.split("-")[1];if(i){var a=e.offsets,n=a.reference,l=a.popper,c=["bottom","top"].indexOf(r)!==-1,d=c?"left":"top",m=c?"width":"height",M={start:Rs({},d,n[d]),end:Rs({},d,n[d]+n[m]-l[m])};e.offsets.popper=pi({},l,M[i])}return e}function z$(e){if(!LS(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,r=El(e.instance.modifiers,function(i){return i.name==="preventOverflow"}).boundaries;if(t.bottom<r.top||t.left>r.right||t.top>r.bottom||t.right<r.left){if(e.hide===!0)return e;e.hide=!0,e.attributes["x-out-of-boundaries"]=""}else{if(e.hide===!1)return e;e.hide=!1,e.attributes["x-out-of-boundaries"]=!1}return e}function G$(e){var t=e.placement,r=t.split("-")[0],i=e.offsets,a=i.popper,n=i.reference,l=["left","right"].indexOf(r)!==-1,c=["top","left"].indexOf(r)===-1;return a[l?"left":"top"]=n[r]-(c?a[l?"width":"height"]:0),e.placement=lh(t),e.offsets.popper=$o(a),e}var Y$={shift:{order:100,enabled:!0,fn:V$},offset:{order:200,enabled:!0,fn:W$,offset:0},preventOverflow:{order:300,enabled:!0,fn:K$,priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:U$},arrow:{order:500,enabled:!0,fn:D$,element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:j$,behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:G$},hide:{order:800,enabled:!0,fn:z$},computeStyle:{order:850,enabled:!0,fn:$$,gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:B$,onLoad:L$,gpuAcceleration:void 0}},Z$={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:Y$},tc=function(){function e(t,r){var i=this,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};_$(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=y$(this.update.bind(this)),this.options=pi({},e.Defaults,a),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=r&&r.jquery?r[0]:r,this.options.modifiers={},Object.keys(pi({},e.Defaults.modifiers,a.modifiers)).forEach(function(l){i.options.modifiers[l]=pi({},e.Defaults.modifiers[l]||{},a.modifiers?a.modifiers[l]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(l){return pi({name:l},i.options.modifiers[l])}).sort(function(l,c){return l.order-c.order}),this.modifiers.forEach(function(l){l.enabled&&_S(l.onLoad)&&l.onLoad(i.reference,i.popper,i.options,l,i.state)}),this.update();var n=this.options.eventsEnabled;n&&this.enableEventListeners(),this.state.eventsEnabled=n}return M$(e,[{key:"update",value:function(){return R$.call(this)}},{key:"destroy",value:function(){return A$.call(this)}},{key:"enableEventListeners",value:function(){return O$.call(this)}},{key:"disableEventListeners",value:function(){return P$.call(this)}}]),e}();tc.Utils=(typeof window<"u"?window:H0).PopperUtils;tc.placements=NS;tc.Defaults=Z$;const X$=Object.freeze(Object.defineProperty({__proto__:null,default:tc},Symbol.toStringTag,{value:"Module"})),iG=gv(X$);/*!
- * @kurkle/color v0.3.2
- * https://github.com/kurkle/color#readme
- * (c) 2023 Jukka Kurkela
- * Released under the MIT License
- */function Rl(e){return e+.5|0}const Mo=(e,t,r)=>Math.max(Math.min(e,r),t);function If(e){return Mo(Rl(e*2.55),0,255)}function Ro(e){return Mo(Rl(e*255),0,255)}function kn(e){return Mo(Rl(e/2.55)/100,0,1)}function Pb(e){return Mo(Rl(e*100),0,100)}const si={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Xp=[..."0123456789ABCDEF"],J$=e=>Xp[e&15],Q$=e=>Xp[(e&240)>>4]+Xp[e&15],eu=e=>(e&240)>>4===(e&15),eD=e=>eu(e.r)&&eu(e.g)&&eu(e.b)&&eu(e.a);function tD(e){var t=e.length,r;return e[0]==="#"&&(t===4||t===5?r={r:255&si[e[1]]*17,g:255&si[e[2]]*17,b:255&si[e[3]]*17,a:t===5?si[e[4]]*17:255}:(t===7||t===9)&&(r={r:si[e[1]]<<4|si[e[2]],g:si[e[3]]<<4|si[e[4]],b:si[e[5]]<<4|si[e[6]],a:t===9?si[e[7]]<<4|si[e[8]]:255})),r}const rD=(e,t)=>e<255?t(e):"";function iD(e){var t=eD(e)?J$:Q$;return e?"#"+t(e.r)+t(e.g)+t(e.b)+rD(e.a,t):void 0}const nD=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function kS(e,t,r){const i=t*Math.min(r,1-r),a=(n,l=(n+e/30)%12)=>r-i*Math.max(Math.min(l-3,9-l,1),-1);return[a(0),a(8),a(4)]}function oD(e,t,r){const i=(a,n=(a+e/60)%6)=>r-r*t*Math.max(Math.min(n,4-n,1),0);return[i(5),i(3),i(1)]}function aD(e,t,r){const i=kS(e,1,.5);let a;for(t+r>1&&(a=1/(t+r),t*=a,r*=a),a=0;a<3;a++)i[a]*=1-t-r,i[a]+=t;return i}function sD(e,t,r,i,a){return e===a?(t-r)/i+(t<r?6:0):t===a?(r-e)/i+2:(e-t)/i+4}function Pg(e){const r=e.r/255,i=e.g/255,a=e.b/255,n=Math.max(r,i,a),l=Math.min(r,i,a),c=(n+l)/2;let d,m,M;return n!==l&&(M=n-l,m=c>.5?M/(2-n-l):M/(n+l),d=sD(r,i,a,M,n),d=d*60+.5),[d|0,m||0,c]}function Cg(e,t,r,i){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,r,i)).map(Ro)}function Bg(e,t,r){return Cg(kS,e,t,r)}function fD(e,t,r){return Cg(aD,e,t,r)}function lD(e,t,r){return Cg(oD,e,t,r)}function $S(e){return(e%360+360)%360}function uD(e){const t=nD.exec(e);let r=255,i;if(!t)return;t[5]!==i&&(r=t[6]?If(+t[5]):Ro(+t[5]));const a=$S(+t[2]),n=+t[3]/100,l=+t[4]/100;return t[1]==="hwb"?i=fD(a,n,l):t[1]==="hsv"?i=lD(a,n,l):i=Bg(a,n,l),{r:i[0],g:i[1],b:i[2],a:r}}function hD(e,t){var r=Pg(e);r[0]=$S(r[0]+t),r=Bg(r),e.r=r[0],e.g=r[1],e.b=r[2]}function cD(e){if(!e)return;const t=Pg(e),r=t[0],i=Pb(t[1]),a=Pb(t[2]);return e.a<255?`hsla(${r}, ${i}%, ${a}%, ${kn(e.a)})`:`hsl(${r}, ${i}%, ${a}%)`}const Cb={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Bb={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function dD(){const e={},t=Object.keys(Bb),r=Object.keys(Cb);let i,a,n,l,c;for(i=0;i<t.length;i++){for(l=c=t[i],a=0;a<r.length;a++)n=r[a],c=c.replace(n,Cb[n]);n=parseInt(Bb[l],16),e[c]=[n>>16&255,n>>8&255,n&255]}return e}let tu;function pD(e){tu||(tu=dD(),tu.transparent=[0,0,0,0]);const t=tu[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}const vD=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function gD(e){const t=vD.exec(e);let r=255,i,a,n;if(t){if(t[7]!==i){const l=+t[7];r=t[8]?If(l):Mo(l*255,0,255)}return i=+t[1],a=+t[3],n=+t[5],i=255&(t[2]?If(i):Mo(i,0,255)),a=255&(t[4]?If(a):Mo(a,0,255)),n=255&(t[6]?If(n):Mo(n,0,255)),{r:i,g:a,b:n,a:r}}}function mD(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${kn(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}const qd=e=>e<=.0031308?e*12.92:Math.pow(e,1/2.4)*1.055-.055,Ka=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function yD(e,t,r){const i=Ka(kn(e.r)),a=Ka(kn(e.g)),n=Ka(kn(e.b));return{r:Ro(qd(i+r*(Ka(kn(t.r))-i))),g:Ro(qd(a+r*(Ka(kn(t.g))-a))),b:Ro(qd(n+r*(Ka(kn(t.b))-n))),a:e.a+r*(t.a-e.a)}}function ru(e,t,r){if(e){let i=Pg(e);i[t]=Math.max(0,Math.min(i[t]+i[t]*r,t===0?360:1)),i=Bg(i),e.r=i[0],e.g=i[1],e.b=i[2]}}function DS(e,t){return e&&Object.assign(t||{},e)}function Lb(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=Ro(e[3]))):(t=DS(e,{r:0,g:0,b:0,a:1}),t.a=Ro(t.a)),t}function bD(e){return e.charAt(0)==="r"?gD(e):uD(e)}class Jp{constructor(t){if(t instanceof Jp)return t;const r=typeof t;let i;r==="object"?i=Lb(t):r==="string"&&(i=tD(t)||pD(t)||bD(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=DS(this._rgb);return t&&(t.a=kn(t.a)),t}set rgb(t){this._rgb=Lb(t)}rgbString(){return this._valid?mD(this._rgb):void 0}hexString(){return this._valid?iD(this._rgb):void 0}hslString(){return this._valid?cD(this._rgb):void 0}mix(t,r){if(t){const i=this.rgb,a=t.rgb;let n;const l=r===n?.5:r,c=2*l-1,d=i.a-a.a,m=((c*d===-1?c:(c+d)/(1+c*d))+1)/2;n=1-m,i.r=255&m*i.r+n*a.r+.5,i.g=255&m*i.g+n*a.g+.5,i.b=255&m*i.b+n*a.b+.5,i.a=l*i.a+(1-l)*a.a,this.rgb=i}return this}interpolate(t,r){return t&&(this._rgb=yD(this._rgb,t._rgb,r)),this}clone(){return new Jp(this.rgb)}alpha(t){return this._rgb.a=Ro(t),this}clearer(t){const r=this._rgb;return r.a*=1-t,this}greyscale(){const t=this._rgb,r=Rl(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=r,this}opaquer(t){const r=this._rgb;return r.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return ru(this._rgb,2,t),this}darken(t){return ru(this._rgb,2,-t),this}saturate(t){return ru(this._rgb,1,t),this}desaturate(t){return ru(this._rgb,1,-t),this}rotate(t){return hD(this._rgb,t),this}}var FS={exports:{}};/*! Hammer.JS - v2.0.7 - 2016-04-22
- * http://hammerjs.github.io/
- *
- * Copyright (c) 2016 Jorik Tangelder;
- * Licensed under the MIT license */(function(e){(function(t,r,i,a){var n=["","webkit","Moz","MS","ms","o"],l=r.createElement("div"),c="function",d=Math.round,m=Math.abs,M=Date.now;function S(ne,he,me){return setTimeout(j(ne,me),he)}function R(ne,he,me){return Array.isArray(ne)?(I(ne,me[he],me),!0):!1}function I(ne,he,me){var Be;if(ne)if(ne.forEach)ne.forEach(he,me);else if(ne.length!==a)for(Be=0;Be<ne.length;)he.call(me,ne[Be],Be,ne),Be++;else for(Be in ne)ne.hasOwnProperty(Be)&&he.call(me,ne[Be],Be,ne)}function O(ne,he,me){var Be="DEPRECATED METHOD: "+he+`
-`+me+` AT 
-`;return function(){var We=new Error("get-stack-trace"),Ge=We&&We.stack?We.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",wt=t.console&&(t.console.warn||t.console.log);return wt&&wt.call(t.console,Be,Ge),ne.apply(this,arguments)}}var B;typeof Object.assign!="function"?B=function(he){if(he===a||he===null)throw new TypeError("Cannot convert undefined or null to object");for(var me=Object(he),Be=1;Be<arguments.length;Be++){var We=arguments[Be];if(We!==a&&We!==null)for(var Ge in We)We.hasOwnProperty(Ge)&&(me[Ge]=We[Ge])}return me}:B=Object.assign;var L=O(function(he,me,Be){for(var We=Object.keys(me),Ge=0;Ge<We.length;)(!Be||Be&&he[We[Ge]]===a)&&(he[We[Ge]]=me[We[Ge]]),Ge++;return he},"extend","Use `assign`."),P=O(function(he,me){return L(he,me,!0)},"merge","Use `assign`.");function C(ne,he,me){var Be=he.prototype,We;We=ne.prototype=Object.create(Be),We.constructor=ne,We._super=Be,me&&B(We,me)}function j(ne,he){return function(){return ne.apply(he,arguments)}}function $(ne,he){return typeof ne==c?ne.apply(he&&he[0]||a,he):ne}function K(ne,he){return ne===a?he:ne}function G(ne,he,me){I(ce(he),function(Be){ne.addEventListener(Be,me,!1)})}function te(ne,he,me){I(ce(he),function(Be){ne.removeEventListener(Be,me,!1)})}function Q(ne,he){for(;ne;){if(ne==he)return!0;ne=ne.parentNode}return!1}function W(ne,he){return ne.indexOf(he)>-1}function ce(ne){return ne.trim().split(/\s+/g)}function _(ne,he,me){if(ne.indexOf&&!me)return ne.indexOf(he);for(var Be=0;Be<ne.length;){if(me&&ne[Be][me]==he||!me&&ne[Be]===he)return Be;Be++}return-1}function o(ne){return Array.prototype.slice.call(ne,0)}function f(ne,he,me){for(var Be=[],We=[],Ge=0;Ge<ne.length;){var wt=he?ne[Ge][he]:ne[Ge];_(We,wt)<0&&Be.push(ne[Ge]),We[Ge]=wt,Ge++}return me&&(he?Be=Be.sort(function(mr,kr){return mr[he]>kr[he]}):Be=Be.sort()),Be}function u(ne,he){for(var me,Be,We=he[0].toUpperCase()+he.slice(1),Ge=0;Ge<n.length;){if(me=n[Ge],Be=me?me+We:he,Be in ne)return Be;Ge++}return a}var h=1;function p(){return h++}function w(ne){var he=ne.ownerDocument||ne;return he.defaultView||he.parentWindow||t}var x=/mobile|tablet|ip(ad|hone|od)|android/i,g="ontouchstart"in t,s=u(t,"PointerEvent")!==a,v=g&&x.test(navigator.userAgent),T="touch",k="pen",Y="mouse",ee="kinect",A=25,E=1,q=2,V=4,X=8,b=1,y=2,D=4,U=8,Z=16,F=y|D,N=U|Z,H=F|N,z=["x","y"],fe=["clientX","clientY"];function re(ne,he){var me=this;this.manager=ne,this.callback=he,this.element=ne.element,this.target=ne.options.inputTarget,this.domHandler=function(Be){$(ne.options.enable,[ne])&&me.handler(Be)},this.init()}re.prototype={handler:function(){},init:function(){this.evEl&&G(this.element,this.evEl,this.domHandler),this.evTarget&&G(this.target,this.evTarget,this.domHandler),this.evWin&&G(w(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&te(this.element,this.evEl,this.domHandler),this.evTarget&&te(this.target,this.evTarget,this.domHandler),this.evWin&&te(w(this.element),this.evWin,this.domHandler)}};function ae(ne){var he,me=ne.options.inputClass;return me?he=me:s?he=Ee:v?he=Oe:g?he=$e:he=qe,new he(ne,be)}function be(ne,he,me){var Be=me.pointers.length,We=me.changedPointers.length,Ge=he&E&&Be-We===0,wt=he&(V|X)&&Be-We===0;me.isFirst=!!Ge,me.isFinal=!!wt,Ge&&(ne.session={}),me.eventType=he,J(ne,me),ne.emit("hammer.input",me),ne.recognize(me),ne.session.prevInput=me}function J(ne,he){var me=ne.session,Be=he.pointers,We=Be.length;me.firstInput||(me.firstInput=ue(he)),We>1&&!me.firstMultiple?me.firstMultiple=ue(he):We===1&&(me.firstMultiple=!1);var Ge=me.firstInput,wt=me.firstMultiple,ar=wt?wt.center:Ge.center,mr=he.center=de(Be);he.timeStamp=M(),he.deltaTime=he.timeStamp-Ge.timeStamp,he.angle=Ae(ar,mr),he.distance=oe(ar,mr),le(me,he),he.offsetDirection=ie(he.deltaX,he.deltaY);var kr=ve(he.deltaTime,he.deltaX,he.deltaY);he.overallVelocityX=kr.x,he.overallVelocityY=kr.y,he.overallVelocity=m(kr.x)>m(kr.y)?kr.x:kr.y,he.scale=wt?Se(wt.pointers,Be):1,he.rotation=wt?pe(wt.pointers,Be):0,he.maxPointers=me.prevInput?he.pointers.length>me.prevInput.maxPointers?he.pointers.length:me.prevInput.maxPointers:he.pointers.length,se(me,he);var Zi=ne.element;Q(he.srcEvent.target,Zi)&&(Zi=he.srcEvent.target),he.target=Zi}function le(ne,he){var me=he.center,Be=ne.offsetDelta||{},We=ne.prevDelta||{},Ge=ne.prevInput||{};(he.eventType===E||Ge.eventType===V)&&(We=ne.prevDelta={x:Ge.deltaX||0,y:Ge.deltaY||0},Be=ne.offsetDelta={x:me.x,y:me.y}),he.deltaX=We.x+(me.x-Be.x),he.deltaY=We.y+(me.y-Be.y)}function se(ne,he){var me=ne.lastInterval||he,Be=he.timeStamp-me.timeStamp,We,Ge,wt,ar;if(he.eventType!=X&&(Be>A||me.velocity===a)){var mr=he.deltaX-me.deltaX,kr=he.deltaY-me.deltaY,Zi=ve(Be,mr,kr);Ge=Zi.x,wt=Zi.y,We=m(Zi.x)>m(Zi.y)?Zi.x:Zi.y,ar=ie(mr,kr),ne.lastInterval=he}else We=me.velocity,Ge=me.velocityX,wt=me.velocityY,ar=me.direction;he.velocity=We,he.velocityX=Ge,he.velocityY=wt,he.direction=ar}function ue(ne){for(var he=[],me=0;me<ne.pointers.length;)he[me]={clientX:d(ne.pointers[me].clientX),clientY:d(ne.pointers[me].clientY)},me++;return{timeStamp:M(),pointers:he,center:de(he),deltaX:ne.deltaX,deltaY:ne.deltaY}}function de(ne){var he=ne.length;if(he===1)return{x:d(ne[0].clientX),y:d(ne[0].clientY)};for(var me=0,Be=0,We=0;We<he;)me+=ne[We].clientX,Be+=ne[We].clientY,We++;return{x:d(me/he),y:d(Be/he)}}function ve(ne,he,me){return{x:he/ne||0,y:me/ne||0}}function ie(ne,he){return ne===he?b:m(ne)>=m(he)?ne<0?y:D:he<0?U:Z}function oe(ne,he,me){me||(me=z);var Be=he[me[0]]-ne[me[0]],We=he[me[1]]-ne[me[1]];return Math.sqrt(Be*Be+We*We)}function Ae(ne,he,me){me||(me=z);var Be=he[me[0]]-ne[me[0]],We=he[me[1]]-ne[me[1]];return Math.atan2(We,Be)*180/Math.PI}function pe(ne,he){return Ae(he[1],he[0],fe)+Ae(ne[1],ne[0],fe)}function Se(ne,he){return oe(he[0],he[1],fe)/oe(ne[0],ne[1],fe)}var Ke={mousedown:E,mousemove:q,mouseup:V},we="mousedown",xe="mousemove mouseup";function qe(){this.evEl=we,this.evWin=xe,this.pressed=!1,re.apply(this,arguments)}C(qe,re,{handler:function(he){var me=Ke[he.type];me&E&&he.button===0&&(this.pressed=!0),me&q&&he.which!==1&&(me=V),this.pressed&&(me&V&&(this.pressed=!1),this.callback(this.manager,me,{pointers:[he],changedPointers:[he],pointerType:Y,srcEvent:he}))}});var ye={pointerdown:E,pointermove:q,pointerup:V,pointercancel:X,pointerout:X},Me={2:T,3:k,4:Y,5:ee},Ve="pointerdown",ge="pointermove pointerup pointercancel";t.MSPointerEvent&&!t.PointerEvent&&(Ve="MSPointerDown",ge="MSPointerMove MSPointerUp MSPointerCancel");function Ee(){this.evEl=Ve,this.evWin=ge,re.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}C(Ee,re,{handler:function(he){var me=this.store,Be=!1,We=he.type.toLowerCase().replace("ms",""),Ge=ye[We],wt=Me[he.pointerType]||he.pointerType,ar=wt==T,mr=_(me,he.pointerId,"pointerId");Ge&E&&(he.button===0||ar)?mr<0&&(me.push(he),mr=me.length-1):Ge&(V|X)&&(Be=!0),!(mr<0)&&(me[mr]=he,this.callback(this.manager,Ge,{pointers:me,changedPointers:[he],pointerType:wt,srcEvent:he}),Be&&me.splice(mr,1))}});var Je={touchstart:E,touchmove:q,touchend:V,touchcancel:X},Re="touchstart",Le="touchstart touchmove touchend touchcancel";function at(){this.evTarget=Re,this.evWin=Le,this.started=!1,re.apply(this,arguments)}C(at,re,{handler:function(he){var me=Je[he.type];if(me===E&&(this.started=!0),!!this.started){var Be=Te.call(this,he,me);me&(V|X)&&Be[0].length-Be[1].length===0&&(this.started=!1),this.callback(this.manager,me,{pointers:Be[0],changedPointers:Be[1],pointerType:T,srcEvent:he})}}});function Te(ne,he){var me=o(ne.touches),Be=o(ne.changedTouches);return he&(V|X)&&(me=f(me.concat(Be),"identifier",!0)),[me,Be]}var Ne={touchstart:E,touchmove:q,touchend:V,touchcancel:X},rt="touchstart touchmove touchend touchcancel";function Oe(){this.evTarget=rt,this.targetIds={},re.apply(this,arguments)}C(Oe,re,{handler:function(he){var me=Ne[he.type],Be=De.call(this,he,me);Be&&this.callback(this.manager,me,{pointers:Be[0],changedPointers:Be[1],pointerType:T,srcEvent:he})}});function De(ne,he){var me=o(ne.touches),Be=this.targetIds;if(he&(E|q)&&me.length===1)return Be[me[0].identifier]=!0,[me,me];var We,Ge,wt=o(ne.changedTouches),ar=[],mr=this.target;if(Ge=me.filter(function(kr){return Q(kr.target,mr)}),he===E)for(We=0;We<Ge.length;)Be[Ge[We].identifier]=!0,We++;for(We=0;We<wt.length;)Be[wt[We].identifier]&&ar.push(wt[We]),he&(V|X)&&delete Be[wt[We].identifier],We++;if(ar.length)return[f(Ge.concat(ar),"identifier",!0),ar]}var nt=2500,Ie=25;function $e(){re.apply(this,arguments);var ne=j(this.handler,this);this.touch=new Oe(this.manager,ne),this.mouse=new qe(this.manager,ne),this.primaryTouch=null,this.lastTouches=[]}C($e,re,{handler:function(he,me,Be){var We=Be.pointerType==T,Ge=Be.pointerType==Y;if(!(Ge&&Be.sourceCapabilities&&Be.sourceCapabilities.firesTouchEvents)){if(We)st.call(this,me,Be);else if(Ge&&je.call(this,Be))return;this.callback(he,me,Be)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});function st(ne,he){ne&E?(this.primaryTouch=he.changedPointers[0].identifier,Pe.call(this,he)):ne&(V|X)&&Pe.call(this,he)}function Pe(ne){var he=ne.changedPointers[0];if(he.identifier===this.primaryTouch){var me={x:he.clientX,y:he.clientY};this.lastTouches.push(me);var Be=this.lastTouches,We=function(){var Ge=Be.indexOf(me);Ge>-1&&Be.splice(Ge,1)};setTimeout(We,nt)}}function je(ne){for(var he=ne.srcEvent.clientX,me=ne.srcEvent.clientY,Be=0;Be<this.lastTouches.length;Be++){var We=this.lastTouches[Be],Ge=Math.abs(he-We.x),wt=Math.abs(me-We.y);if(Ge<=Ie&&wt<=Ie)return!0}return!1}var ht=u(l.style,"touchAction"),Ce=ht!==a,Fe="compute",it="auto",et="manipulation",Et="none",Ot="pan-x",It="pan-y",Bt=Ht();function kt(ne,he){this.manager=ne,this.set(he)}kt.prototype={set:function(ne){ne==Fe&&(ne=this.compute()),Ce&&this.manager.element.style&&Bt[ne]&&(this.manager.element.style[ht]=ne),this.actions=ne.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var ne=[];return I(this.manager.recognizers,function(he){$(he.options.enable,[he])&&(ne=ne.concat(he.getTouchAction()))}),Ut(ne.join(" "))},preventDefaults:function(ne){var he=ne.srcEvent,me=ne.offsetDirection;if(this.manager.session.prevented){he.preventDefault();return}var Be=this.actions,We=W(Be,Et)&&!Bt[Et],Ge=W(Be,It)&&!Bt[It],wt=W(Be,Ot)&&!Bt[Ot];if(We){var ar=ne.pointers.length===1,mr=ne.distance<2,kr=ne.deltaTime<250;if(ar&&mr&&kr)return}if(!(wt&&Ge)&&(We||Ge&&me&F||wt&&me&N))return this.preventSrc(he)},preventSrc:function(ne){this.manager.session.prevented=!0,ne.preventDefault()}};function Ut(ne){if(W(ne,Et))return Et;var he=W(ne,Ot),me=W(ne,It);return he&&me?Et:he||me?he?Ot:It:W(ne,et)?et:it}function Ht(){if(!Ce)return!1;var ne={},he=t.CSS&&t.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(me){ne[me]=he?t.CSS.supports("touch-action",me):!0}),ne}var Lt=1,dt=2,At=4,Mt=8,yt=Mt,Pt=16,gt=32;function bt(ne){this.options=B({},this.defaults,ne||{}),this.id=p(),this.manager=null,this.options.enable=K(this.options.enable,!0),this.state=Lt,this.simultaneous={},this.requireFail=[]}bt.prototype={defaults:{},set:function(ne){return B(this.options,ne),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(ne){if(R(ne,"recognizeWith",this))return this;var he=this.simultaneous;return ne=so(ne,this),he[ne.id]||(he[ne.id]=ne,ne.recognizeWith(this)),this},dropRecognizeWith:function(ne){return R(ne,"dropRecognizeWith",this)?this:(ne=so(ne,this),delete this.simultaneous[ne.id],this)},requireFailure:function(ne){if(R(ne,"requireFailure",this))return this;var he=this.requireFail;return ne=so(ne,this),_(he,ne)===-1&&(he.push(ne),ne.requireFailure(this)),this},dropRequireFailure:function(ne){if(R(ne,"dropRequireFailure",this))return this;ne=so(ne,this);var he=_(this.requireFail,ne);return he>-1&&this.requireFail.splice(he,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(ne){return!!this.simultaneous[ne.id]},emit:function(ne){var he=this,me=this.state;function Be(We){he.manager.emit(We,ne)}me<Mt&&Be(he.options.event+$t(me)),Be(he.options.event),ne.additionalEvent&&Be(ne.additionalEvent),me>=Mt&&Be(he.options.event+$t(me))},tryEmit:function(ne){if(this.canEmit())return this.emit(ne);this.state=gt},canEmit:function(){for(var ne=0;ne<this.requireFail.length;){if(!(this.requireFail[ne].state&(gt|Lt)))return!1;ne++}return!0},recognize:function(ne){var he=B({},ne);if(!$(this.options.enable,[this,he])){this.reset(),this.state=gt;return}this.state&(yt|Pt|gt)&&(this.state=Lt),this.state=this.process(he),this.state&(dt|At|Mt|Pt)&&this.tryEmit(he)},process:function(ne){},getTouchAction:function(){},reset:function(){}};function $t(ne){return ne&Pt?"cancel":ne&Mt?"end":ne&At?"move":ne&dt?"start":""}function Dt(ne){return ne==Z?"down":ne==U?"up":ne==y?"left":ne==D?"right":""}function so(ne,he){var me=he.manager;return me?me.get(ne):ne}function Nr(){bt.apply(this,arguments)}C(Nr,bt,{defaults:{pointers:1},attrTest:function(ne){var he=this.options.pointers;return he===0||ne.pointers.length===he},process:function(ne){var he=this.state,me=ne.eventType,Be=he&(dt|At),We=this.attrTest(ne);return Be&&(me&X||!We)?he|Pt:Be||We?me&V?he|Mt:he&dt?he|At:dt:gt}});function jl(){Nr.apply(this,arguments),this.pX=null,this.pY=null}C(jl,Nr,{defaults:{event:"pan",threshold:10,pointers:1,direction:H},getTouchAction:function(){var ne=this.options.direction,he=[];return ne&F&&he.push(It),ne&N&&he.push(Ot),he},directionTest:function(ne){var he=this.options,me=!0,Be=ne.distance,We=ne.direction,Ge=ne.deltaX,wt=ne.deltaY;return We&he.direction||(he.direction&F?(We=Ge===0?b:Ge<0?y:D,me=Ge!=this.pX,Be=Math.abs(ne.deltaX)):(We=wt===0?b:wt<0?U:Z,me=wt!=this.pY,Be=Math.abs(ne.deltaY))),ne.direction=We,me&&Be>he.threshold&&We&he.direction},attrTest:function(ne){return Nr.prototype.attrTest.call(this,ne)&&(this.state&dt||!(this.state&dt)&&this.directionTest(ne))},emit:function(ne){this.pX=ne.deltaX,this.pY=ne.deltaY;var he=Dt(ne.direction);he&&(ne.additionalEvent=this.options.event+he),this._super.emit.call(this,ne)}});function Bc(){Nr.apply(this,arguments)}C(Bc,Nr,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Et]},attrTest:function(ne){return this._super.attrTest.call(this,ne)&&(Math.abs(ne.scale-1)>this.options.threshold||this.state&dt)},emit:function(ne){if(ne.scale!==1){var he=ne.scale<1?"in":"out";ne.additionalEvent=this.options.event+he}this._super.emit.call(this,ne)}});function Lc(){bt.apply(this,arguments),this._timer=null,this._input=null}C(Lc,bt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[it]},process:function(ne){var he=this.options,me=ne.pointers.length===he.pointers,Be=ne.distance<he.threshold,We=ne.deltaTime>he.time;if(this._input=ne,!Be||!me||ne.eventType&(V|X)&&!We)this.reset();else if(ne.eventType&E)this.reset(),this._timer=S(function(){this.state=yt,this.tryEmit()},he.time,this);else if(ne.eventType&V)return yt;return gt},reset:function(){clearTimeout(this._timer)},emit:function(ne){this.state===yt&&(ne&&ne.eventType&V?this.manager.emit(this.options.event+"up",ne):(this._input.timeStamp=M(),this.manager.emit(this.options.event,this._input)))}});function Nc(){Nr.apply(this,arguments)}C(Nc,Nr,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Et]},attrTest:function(ne){return this._super.attrTest.call(this,ne)&&(Math.abs(ne.rotation)>this.options.threshold||this.state&dt)}});function kc(){Nr.apply(this,arguments)}C(kc,Nr,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:F|N,pointers:1},getTouchAction:function(){return jl.prototype.getTouchAction.call(this)},attrTest:function(ne){var he=this.options.direction,me;return he&(F|N)?me=ne.overallVelocity:he&F?me=ne.overallVelocityX:he&N&&(me=ne.overallVelocityY),this._super.attrTest.call(this,ne)&&he&ne.offsetDirection&&ne.distance>this.options.threshold&&ne.maxPointers==this.options.pointers&&m(me)>this.options.velocity&&ne.eventType&V},emit:function(ne){var he=Dt(ne.offsetDirection);he&&this.manager.emit(this.options.event+he,ne),this.manager.emit(this.options.event,ne)}});function Ul(){bt.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}C(Ul,bt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[et]},process:function(ne){var he=this.options,me=ne.pointers.length===he.pointers,Be=ne.distance<he.threshold,We=ne.deltaTime<he.time;if(this.reset(),ne.eventType&E&&this.count===0)return this.failTimeout();if(Be&&We&&me){if(ne.eventType!=V)return this.failTimeout();var Ge=this.pTime?ne.timeStamp-this.pTime<he.interval:!0,wt=!this.pCenter||oe(this.pCenter,ne.center)<he.posThreshold;this.pTime=ne.timeStamp,this.pCenter=ne.center,!wt||!Ge?this.count=1:this.count+=1,this._input=ne;var ar=this.count%he.taps;if(ar===0)return this.hasRequireFailures()?(this._timer=S(function(){this.state=yt,this.tryEmit()},he.interval,this),dt):yt}return gt},failTimeout:function(){return this._timer=S(function(){this.state=gt},this.options.interval,this),gt},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==yt&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}});function Mn(ne,he){return he=he||{},he.recognizers=K(he.recognizers,Mn.defaults.preset),new $c(ne,he)}Mn.VERSION="2.0.7",Mn.defaults={domEvents:!1,touchAction:Fe,enable:!0,inputTarget:null,inputClass:null,preset:[[Nc,{enable:!1}],[Bc,{enable:!1},["rotate"]],[kc,{direction:F}],[jl,{direction:F},["swipe"]],[Ul],[Ul,{event:"doubletap",taps:2},["tap"]],[Lc]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var ME=1,Sm=2;function $c(ne,he){this.options=B({},Mn.defaults,he||{}),this.options.inputTarget=this.options.inputTarget||ne,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=ne,this.input=ae(this),this.touchAction=new kt(this,this.options.touchAction),xm(this,!0),I(this.options.recognizers,function(me){var Be=this.add(new me[0](me[1]));me[2]&&Be.recognizeWith(me[2]),me[3]&&Be.requireFailure(me[3])},this)}$c.prototype={set:function(ne){return B(this.options,ne),ne.touchAction&&this.touchAction.update(),ne.inputTarget&&(this.input.destroy(),this.input.target=ne.inputTarget,this.input.init()),this},stop:function(ne){this.session.stopped=ne?Sm:ME},recognize:function(ne){var he=this.session;if(!he.stopped){this.touchAction.preventDefaults(ne);var me,Be=this.recognizers,We=he.curRecognizer;(!We||We&&We.state&yt)&&(We=he.curRecognizer=null);for(var Ge=0;Ge<Be.length;)me=Be[Ge],he.stopped!==Sm&&(!We||me==We||me.canRecognizeWith(We))?me.recognize(ne):me.reset(),!We&&me.state&(dt|At|Mt)&&(We=he.curRecognizer=me),Ge++}},get:function(ne){if(ne instanceof bt)return ne;for(var he=this.recognizers,me=0;me<he.length;me++)if(he[me].options.event==ne)return he[me];return null},add:function(ne){if(R(ne,"add",this))return this;var he=this.get(ne.options.event);return he&&this.remove(he),this.recognizers.push(ne),ne.manager=this,this.touchAction.update(),ne},remove:function(ne){if(R(ne,"remove",this))return this;if(ne=this.get(ne),ne){var he=this.recognizers,me=_(he,ne);me!==-1&&(he.splice(me,1),this.touchAction.update())}return this},on:function(ne,he){if(ne!==a&&he!==a){var me=this.handlers;return I(ce(ne),function(Be){me[Be]=me[Be]||[],me[Be].push(he)}),this}},off:function(ne,he){if(ne!==a){var me=this.handlers;return I(ce(ne),function(Be){he?me[Be]&&me[Be].splice(_(me[Be],he),1):delete me[Be]}),this}},emit:function(ne,he){this.options.domEvents&&SE(ne,he);var me=this.handlers[ne]&&this.handlers[ne].slice();if(!(!me||!me.length)){he.type=ne,he.preventDefault=function(){he.srcEvent.preventDefault()};for(var Be=0;Be<me.length;)me[Be](he),Be++}},destroy:function(){this.element&&xm(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}};function xm(ne,he){var me=ne.element;if(me.style){var Be;I(ne.options.cssProps,function(We,Ge){Be=u(me.style,Ge),he?(ne.oldCssProps[Be]=me.style[Be],me.style[Be]=We):me.style[Be]=ne.oldCssProps[Be]||""}),he||(ne.oldCssProps={})}}function SE(ne,he){var me=r.createEvent("Event");me.initEvent(ne,!0,!0),me.gesture=he,he.target.dispatchEvent(me)}B(Mn,{INPUT_START:E,INPUT_MOVE:q,INPUT_END:V,INPUT_CANCEL:X,STATE_POSSIBLE:Lt,STATE_BEGAN:dt,STATE_CHANGED:At,STATE_ENDED:Mt,STATE_RECOGNIZED:yt,STATE_CANCELLED:Pt,STATE_FAILED:gt,DIRECTION_NONE:b,DIRECTION_LEFT:y,DIRECTION_RIGHT:D,DIRECTION_UP:U,DIRECTION_DOWN:Z,DIRECTION_HORIZONTAL:F,DIRECTION_VERTICAL:N,DIRECTION_ALL:H,Manager:$c,Input:re,TouchAction:kt,TouchInput:Oe,MouseInput:qe,PointerEventInput:Ee,TouchMouseInput:$e,SingleTouchInput:at,Recognizer:bt,AttrRecognizer:Nr,Tap:Ul,Pan:jl,Swipe:kc,Pinch:Bc,Rotate:Nc,Press:Lc,on:G,off:te,each:I,merge:P,extend:L,assign:B,inherit:C,bindFn:j,prefixed:u});var xE=typeof t<"u"?t:typeof self<"u"?self:{};xE.Hammer=Mn,typeof a=="function"&&a.amd?a(function(){return Mn}):e.exports?e.exports=Mn:t[i]=Mn})(window,document,"Hammer")})(FS);var wD=FS.exports;const nG=Fo(wD);const _D=Us({name:"my-table",emits:["return-checked-rows","do-search","is-finished","get-now-page","row-clicked","row-toggled"],props:{isLoading:{type:Boolean,require:!0},isReSearch:{type:Boolean,require:!0},hasCheckbox:{type:Boolean,default:!1},checkedReturnType:{type:String,default:"key"},title:{type:String,default:""},isFixedFirstColumn:{type:Boolean,default:!1},columns:{type:Array,default:()=>[]},rows:{type:Array,default:()=>[]},rowClasses:{type:[Array,Function],default:()=>[]},pageSize:{type:Number,default:10},total:{type:Number,default:100},page:{type:Number,default:1},sortable:{type:Object,default:()=>({order:"id",sort:"asc"})},messages:{type:Object,default:()=>({pagingInfo:"Showing {0}-{1} of {2}",pageSizeChangeLabel:"Row count:",gotoPageLabel:"Go to page:",noDataAvailable:"No data"})},isStaticMode:{type:Boolean,default:!1},isSlotMode:{type:Boolean,default:!1},isHidePaging:{type:Boolean,default:!1},pageOptions:{type:Array,default:()=>[{value:10,text:10},{value:25,text:25},{value:50,text:50}]},groupingKey:{type:String,default:""},hasGroupToggle:{type:Boolean,default:!1},groupingDisplay:{type:Function,default:null},maxHeight:{default:"auto"},startCollapsed:{type:Boolean,default:!1},isKeepCollapsed:{type:Boolean,default:!1},isVerticalHighlight:{type:Boolean,default:!1}},setup(e,{emit:t,slots:r}){let i=Ar(null),a=e.pageOptions.length>0?Ar(e.pageOptions[0].value):Ar(e.pageSize);e.pageOptions.length>0&&e.pageOptions.forEach(o=>{Object.prototype.hasOwnProperty.call(o,"value")&&Object.prototype.hasOwnProperty.call(o,"text")&&e.pageSize==o.value&&(a.value=o.value)});const n=Ra({isSlotMode:e.isSlotMode,isCheckAll:!1,isIndeterminate:!1,isHidePaging:e.isHidePaging,keyColumn:ir(()=>{let o="";return Object.assign(e.columns).forEach(f=>{f.isKey&&(o=f.field)}),o}),page:e.page,pageSize:a.value,maxPage:ir(()=>{if(e.total<=0)return 0;let o=Math.floor(e.total/n.pageSize);return e.total%n.pageSize>0&&o++,o}),offset:ir(()=>(n.page-1)*n.pageSize+1),limit:ir(()=>{let o=n.page*n.pageSize;return e.total>=o?o:e.total}),paging:ir(()=>{let o=n.page-2<=0?1:n.page-2;n.maxPage-n.page<=2&&(o=n.maxPage-4),o=o<=0?1:o;let f=[];for(let u=o;u<=n.maxPage;u++)f.length<5&&f.push(u);return f}),order:e.sortable.order,sort:e.sortable.sort,pageOptions:e.pageOptions,isVerticalHighlight:e.isVerticalHighlight}),l=Ar([]),c=ir(()=>{let o=e.rows;var f=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});let u=n.sort==="desc"?-1:1;o.sort(function(p,w){return f.compare(p[n.order],w[n.order])*u});let h=null;if(e.groupingKey){let p={};o.forEach(w=>{p[w[e.groupingKey]]||(p[w[e.groupingKey]]=[]),p[w[e.groupingKey]].push(w)}),h={};for(let w=n.offset-1;w<n.limit;w++)h[o[w][e.groupingKey]]=p[o[w][e.groupingKey]]}else{h=[];for(let p=n.offset-1;p<n.limit;p++)h.push(o[p])}return Un(function(){C()}),h}),d=Ar([]);Uv(()=>{d.value=[]}),Tr(()=>n.isCheckAll,o=>{if(e.hasCheckbox){if(n.isIndeterminate=!1,l.value=[],o){let f=e.isStaticMode?e.rows.slice(n.offset-1,n.limit):e.rows;e.checkedReturnType=="row"?l.value=f:f.forEach(u=>{l.value.push(u[n.keyColumn])})}d.value.forEach(f=>{f&&(f.checked=o)}),t("return-checked-rows",l.value)}}),Tr(()=>e.hasCheckbox,o=>{o||(n.isCheckAll=!1)});const m=(o,f)=>{f.stopPropagation(),n.isIndeterminate=!1;let u=o[n.keyColumn];if(e.checkedReturnType=="row"&&(u=o),f.target.checked)l.value.push(u);else{const h=l.value.indexOf(u);h>=0&&l.value.splice(h,1)}l.value.length==e.rows.length?(n.isCheckAll&&t("return-checked-rows",l.value),n.isCheckAll=!0):(l.value.length>0&&(n.isIndeterminate=!0),t("return-checked-rows",l.value))},M=()=>{l.value=[],d.value.forEach(o=>{o&&o.checked&&(o.checked=!1)}),t("return-checked-rows",l.value)},S=o=>{let f="asc";o==n.order&&n.sort=="asc"&&(f="desc");let u=(n.page-1)*n.pageSize,h=n.pageSize;n.order=o,n.sort=f,t("do-search",u,h,o,f),n.isCheckAll?n.isCheckAll=!1:e.hasCheckbox&&M()},R=(o,f)=>{n.isCheckAll=!1,n.isIndeterminate=!1,e.hasCheckbox&&(l.value=[]);let u=n.order,h=n.sort,p=(o-1)*n.pageSize,w=n.pageSize;(!e.isReSearch||o>1||o==f)&&t("do-search",p,w,u,h)};Tr(()=>n.page,R),Tr(()=>e.page,o=>{o<=1?(n.page=1,t("get-now-page",n.page)):o>=n.maxPage?(n.page=n.maxPage,t("get-now-page",n.page)):n.page=o}),Tr(()=>n.pageSize,()=>{n.page===1?R(n.page,n.page):(n.page=1,n.isCheckAll=!1,n.isIndeterminate=!1)}),Tr(()=>e.pageSize,o=>{n.pageSize=o});const O=()=>{if(n.page==1)return!1;n.page--},B=o=>{n.page=o},L=()=>{if(n.page>=n.maxPage)return!1;n.page++};Tr(()=>e.rows,()=>{(e.isReSearch||e.isStaticMode)&&(n.page=1),Un(function(){e.isStaticMode||C()})},{deep:!0});const P=(o,...f)=>o.replace(/{(\d+)}/g,function(u,h){return typeof f[h]<"u"?f[h]:u}),C=()=>{if(i.value){let o=i.value.getElementsByClassName("is-rows-el");t("is-finished",o)}t("get-now-page",n.page)},j=Ar({}),$=Ar({}),K=Ar({}),G=ir(()=>{let o={};return e.rows.forEach(f=>{o[f[e.groupingKey]]||(o[f[e.groupingKey]]=[]),o[f[e.groupingKey]].push(f)}),Un(function(){if(e.startCollapsed||e.isKeepCollapsed){for(const[f,u]of Object.entries(j.value))if(u){let h=!e.startCollapsed;e.isKeepCollapsed&&K.value[f]!==void 0&&(h=!K.value[f]),(h&&u.parentElement.classList.contains("rotated-90")||!h&&!u.parentElement.classList.contains("rotated-90"))&&u.parentElement.classList.toggle("rotated-90"),h||$.value[f].forEach(p=>{p&&p.classList.add("hidden")})}}C()}),o}),te=o=>{let f=j.value[o];if(f){f.parentElement.classList.toggle("rotated-90");const u=f.parentElement.classList.contains("rotated-90");$.value[o].forEach(h=>{h&&(u?h.classList.add("hidden"):h.classList.remove("hidden"))}),K.value[o]=u,t("row-toggled",G.value[o],u)}},Q=o=>{o.target.classList.add("hover")},W=o=>{o.target.classList.remove("hover")},ce=o=>{if(!n.isVerticalHighlight)return;let f=i.value.querySelectorAll(".vtl-tbody-td"+o);for(let u=0;u<f.length;u++)f[u].classList.add("hover")},_=o=>{if(!n.isVerticalHighlight)return;let f=i.value.querySelectorAll(".vtl-tbody-td"+o);for(let u=0;u<f.length;u++)f[u].classList.remove("hover")};return qs(()=>{Un(()=>{e.rows.length>0&&C()})}),{slots:r,localTable:i,localRows:c,setting:n,rowCheckbox:d,checked:m,clearChecked:M,doSort:S,prevPage:O,movePage:B,nextPage:L,stringFormat:P,toggleButtonRefs:j,groupingRowsRefs:$,groupingRows:G,toggleGroup:te,addHoverClassToTr:Q,removeHoverClassFromTr:W,addVerticalHighlight:ce,removeVerticalHighlight:_}}}),oo=e=>(n_("data-v-30c302e9"),e=e(),o_(),e),MD={class:"vtl vtl-card"},SD={key:0,class:"vtl-card-title"},xD={class:"vtl-card-body"},ED={class:"vtl-row"},RD={key:0,class:"vtl-loading-mask"},AD=oo(()=>Qe("div",{class:"vtl-loading-content"},[Qe("span",{style:{color:"white"}},"Loading...")],-1)),TD=[AD],OD={class:"vtl-thead"},ID={class:"vtl-thead-tr"},PD={key:0,class:"vtl-thead-th vtl-checkbox-th"},CD=["indeterminate"],BD=["onClick","innerHTML"],LD=["set"],ND={key:0,class:"vtl-tbody-tr vtl-group-tr"},kD=["colspan"],$D={class:"flex"},DD={key:0,class:"animation"},FD=["onClick"],jD=["innerHTML"],UD=["name","onClick"],HD={key:0,class:"vtl-tbody-td vtl-checkbox-td"},qD=["value","onClick"],WD=["onMouseover","onMouseleave"],KD=["innerHTML"],VD={key:1},zD={key:0},GD={key:1},YD=["set"],ZD={key:0,class:"vtl-tbody-tr vtl-group-tr"},XD=["colspan"],JD={class:"flex"},QD={key:0,class:"animation"},eF=["onClick"],tF=["innerHTML"],rF=["name","onClick"],iF={key:0,class:"vtl-tbody-td vtl-checkbox-td"},nF=["value","onClick"],oF=["onMouseover","onMouseleave"],aF=["innerHTML"],sF={key:1},fF={key:0},lF={key:1},uF={key:0,class:"vtl-paging vtl-row"},hF={class:"vtl-paging-info col-sm-12 col-md-4"},cF={role:"status","aria-live":"polite"},dF={class:"vtl-paging-change-div col-sm-12 col-md-4"},pF={class:"vtl-paging-count-label"},vF=["value"],gF={class:"vtl-paging-page-label"},mF=["value"],yF={class:"vtl-paging-pagination-div col-sm-12 col-md-4"},bF={class:"dataTables_paginate"},wF={class:"vtl-paging-pagination-ul vtl-pagination"},_F=oo(()=>Qe("span",{"aria-hidden":"true"},"«",-1)),MF=oo(()=>Qe("span",{class:"sr-only"},"First",-1)),SF=[_F,MF],xF=oo(()=>Qe("span",{"aria-hidden":"true"},"<",-1)),EF=oo(()=>Qe("span",{class:"sr-only"},"Prev",-1)),RF=[xF,EF],AF=["onClick"],TF=oo(()=>Qe("span",{"aria-hidden":"true"},">",-1)),OF=oo(()=>Qe("span",{class:"sr-only"},"Next",-1)),IF=[TF,OF],PF=oo(()=>Qe("span",{"aria-hidden":"true"},"»",-1)),CF=oo(()=>Qe("span",{class:"sr-only"},"Last",-1)),BF=[PF,CF],LF={key:1,class:"vtl-row"},NF={class:"vtl-empty-msg col-sm-12 text-center"};function kF(e,t,r,i,a,n){return tt(),ft("div",MD,[e.title?(tt(),ft("div",SD,ui(e.title),1)):li("",!0),Qe("div",xD,[Qe("div",ED,[Qe("div",{class:lr(["col-sm-12",{"fixed-first-column":e.isFixedFirstColumn,"fixed-first-second-column":e.isFixedFirstColumn&&e.hasCheckbox}])},[e.isLoading?(tt(),ft("div",RD,[...TD])):li("",!0),Qe("table",{class:"vtl-table vtl-table-hover vtl-table-bordered vtl-table-responsive vtl-table-responsive-sm",ref:"localTable",style:nn("max-height: "+e.maxHeight+"px;")},[Qe("thead",OD,[Qe("tr",ID,[e.hasCheckbox?(tt(),ft("th",PD,[Qe("div",null,[uu(Qe("input",{type:"checkbox",class:"vtl-thead-checkbox",indeterminate:e.setting.isIndeterminate,"onUpdate:modelValue":t[0]||(t[0]=l=>e.setting.isCheckAll=l)},null,8,CD),[[kh,e.setting.isCheckAll]])])])):li("",!0),(tt(!0),ft(Ct,null,Li(e.columns,(l,c)=>(tt(),ft("th",{class:lr(["vtl-thead-th",l.headerClasses]),key:c,style:nn(Object.assign({width:l.width?l.width:"auto"},l.headerStyles))},[Qe("div",{class:lr(["vtl-thead-column",{"vtl-sortable":l.sortable,"vtl-both":l.sortable,"vtl-asc":e.setting.order===l.field&&e.setting.sort==="asc","vtl-desc":e.setting.order===l.field&&e.setting.sort==="desc"}]),onClick:In(d=>l.sortable?e.doSort(l.field):!1,["prevent"]),innerHTML:l.label},null,10,BD)],6))),128))])]),e.rows.length>0?(tt(),ft(Ct,{key:0},[e.isStaticMode?(tt(),ft("tbody",{key:0,class:"vtl-tbody",set:e.templateRows=e.groupingKey==""?[e.localRows]:e.localRows},[(tt(!0),ft(Ct,null,Li(e.templateRows,(l,c)=>(tt(),ft(Ct,{key:c},[e.groupingKey!=""?(tt(),ft("tr",ND,[Qe("td",{colspan:e.hasCheckbox?e.columns.length+1:e.columns.length,class:"vtl-tbody-td vtl-group-td"},[Qe("div",$D,[e.hasGroupToggle?(tt(),ft("div",DD,[Qe("a",{ref_for:!0,ref:d=>e.toggleButtonRefs[c]=d,class:"cursor-pointer",onClick:In(d=>e.toggleGroup(c),["prevent"])},"▼",8,FD)])):li("",!0),Qe("div",{class:"ml-2",innerHTML:e.groupingDisplay?e.groupingDisplay(c):c},null,8,jD)])],8,kD)])):li("",!0),(tt(!0),ft(Ct,null,Li(l,(d,m)=>(tt(),ft("tr",{key:d[e.setting.keyColumn]?d[e.setting.keyColumn]:m,ref_for:!0,ref:M=>{e.groupingRowsRefs[c]||(e.groupingRowsRefs[c]=[]),e.groupingRowsRefs[c][m]=M},name:"vtl-group-"+c,class:lr(["vtl-tbody-tr",typeof e.rowClasses=="function"?e.rowClasses(d):e.rowClasses]),onMouseenter:t[1]||(t[1]=(...M)=>e.addHoverClassToTr&&e.addHoverClassToTr(...M)),onMouseleave:t[2]||(t[2]=(...M)=>e.removeHoverClassFromTr&&e.removeHoverClassFromTr(...M)),onClick:M=>e.$emit("row-clicked",d)},[e.hasCheckbox?(tt(),ft("td",HD,[Qe("div",null,[Qe("input",{type:"checkbox",class:"vtl-tbody-checkbox",ref_for:!0,ref:M=>{e.rowCheckbox.push(M)},value:d[e.setting.keyColumn],onClick:M=>e.checked(d,M)},null,8,qD)])])):li("",!0),(tt(!0),ft(Ct,null,Li(e.columns,(M,S)=>(tt(),ft("td",{key:S,class:lr(["vtl-tbody-td",["vtl-tbody-td"+S].concat(M.columnClasses)]),style:nn(M.columnStyles),onMouseover:R=>e.addVerticalHighlight(S),onMouseleave:R=>e.removeVerticalHighlight(S)},[M.display?(tt(),ft("div",{key:0,innerHTML:M.display(d)},null,8,KD)):(tt(),ft("div",VD,[e.setting.isSlotMode&&e.slots[M.field]?(tt(),ft("div",zD,[Y0(e.$slots,M.field,{value:d},void 0,!0)])):(tt(),ft("span",GD,ui(d[M.field]),1))]))],46,WD))),128))],42,UD))),128))],64))),128))],8,LD)):(tt(),ft("tbody",{key:1,set:e.templateRows=e.groupingKey==""?[e.rows]:e.groupingRows},[(tt(!0),ft(Ct,null,Li(e.templateRows,(l,c)=>(tt(),ft(Ct,{key:c},[e.groupingKey!=""?(tt(),ft("tr",ZD,[Qe("td",{colspan:e.hasCheckbox?e.columns.length+1:e.columns.length,class:"vtl-tbody-td vtl-group-td"},[Qe("div",JD,[e.hasGroupToggle?(tt(),ft("div",QD,[Qe("a",{ref_for:!0,ref:d=>e.toggleButtonRefs[c]=d,class:"cursor-pointer",onClick:In(d=>e.toggleGroup(c),["prevent"])},"▼",8,eF)])):li("",!0),Qe("div",{class:"ml-2",innerHTML:e.groupingDisplay?e.groupingDisplay(c):c},null,8,tF)])],8,XD)])):li("",!0),(tt(!0),ft(Ct,null,Li(l,(d,m)=>(tt(),ft("tr",{ref_for:!0,ref:M=>{e.groupingRowsRefs[c]||(e.groupingRowsRefs[c]=[]),e.groupingRowsRefs[c][m]=M},name:"vtl-group-"+c,key:d[e.setting.keyColumn]?d[e.setting.keyColumn]:m,class:lr(["vtl-tbody-tr",typeof e.rowClasses=="function"?e.rowClasses(d):e.rowClasses]),onMouseenter:t[3]||(t[3]=(...M)=>e.addHoverClassToTr&&e.addHoverClassToTr(...M)),onMouseleave:t[4]||(t[4]=(...M)=>e.removeHoverClassFromTr&&e.removeHoverClassFromTr(...M)),onClick:M=>e.$emit("row-clicked",d)},[e.hasCheckbox?(tt(),ft("td",iF,[Qe("div",null,[Qe("input",{type:"checkbox",class:"vtl-tbody-checkbox",ref_for:!0,ref:M=>{e.rowCheckbox.push(M)},value:d[e.setting.keyColumn],onClick:M=>e.checked(d,M)},null,8,nF)])])):li("",!0),(tt(!0),ft(Ct,null,Li(e.columns,(M,S)=>(tt(),ft("td",{key:S,class:lr(["vtl-tbody-td",["vtl-tbody-td"+S].concat(M.columnClasses)]),style:nn(M.columnStyles),onMouseover:R=>e.addVerticalHighlight(S),onMouseleave:R=>e.removeVerticalHighlight(S)},[M.display?(tt(),ft("div",{key:0,innerHTML:M.display(d)},null,8,aF)):(tt(),ft("div",sF,[e.setting.isSlotMode&&e.slots[M.field]?(tt(),ft("div",fF,[Y0(e.$slots,M.field,{value:d},void 0,!0)])):(tt(),ft("span",lF,ui(d[M.field]),1))]))],46,oF))),128))],42,rF))),128))],64))),128))],8,YD))],64)):li("",!0)],4)],2)]),e.rows.length>0?(tt(),ft("div",uF,[e.setting.isHidePaging?li("",!0):(tt(),ft(Ct,{key:0},[Qe("div",hF,[Qe("div",cF,ui(e.stringFormat(e.messages.pagingInfo,e.setting.offset,e.setting.limit,e.total)),1)]),Qe("div",dF,[Qe("span",pF,ui(e.messages.pageSizeChangeLabel),1),uu(Qe("select",{class:"vtl-paging-count-dropdown","onUpdate:modelValue":t[5]||(t[5]=l=>e.setting.pageSize=l)},[(tt(!0),ft(Ct,null,Li(e.pageOptions,l=>(tt(),ft("option",{value:l.value,key:l.value},ui(l.text),9,vF))),128))],512),[[Gu,e.setting.pageSize]]),Qe("span",gF,ui(e.messages.gotoPageLabel),1),uu(Qe("select",{class:"vtl-paging-page-dropdown","onUpdate:modelValue":t[6]||(t[6]=l=>e.setting.page=l)},[(tt(!0),ft(Ct,null,Li(e.setting.maxPage,l=>(tt(),ft("option",{key:l,value:parseInt(l)},ui(l),9,mF))),128))],512),[[Gu,e.setting.page]])]),Qe("div",yF,[Qe("div",bF,[Qe("ul",wF,[Qe("li",{class:lr(["vtl-paging-pagination-page-li vtl-paging-pagination-page-li-first page-item",{disabled:e.setting.page<=1}])},[Qe("a",{class:"vtl-paging-pagination-page-link vtl-paging-pagination-page-link-first page-link cursor-pointer","aria-label":"Previous",onClick:t[7]||(t[7]=In(l=>e.setting.page=1,["prevent"]))},[...SF])],2),Qe("li",{class:lr(["vtl-paging-pagination-page-li vtl-paging-pagination-page-li-prev page-item",{disabled:e.setting.page<=1}])},[Qe("a",{class:"vtl-paging-pagination-page-link vtl-paging-pagination-page-link-prev page-link cursor-pointer","aria-label":"Previous",onClick:t[8]||(t[8]=In((...l)=>e.prevPage&&e.prevPage(...l),["prevent"]))},[...RF])],2),(tt(!0),ft(Ct,null,Li(e.setting.paging,l=>(tt(),ft("li",{class:lr(["vtl-paging-pagination-page-li vtl-paging-pagination-page-li-number page-item",{disabled:e.setting.page===l}]),key:l},[Qe("a",{class:"vtl-paging-pagination-page-link vtl-paging-pagination-page-link-number page-link cursor-pointer",onClick:In(c=>e.movePage(l),["prevent"])},ui(l),9,AF)],2))),128)),Qe("li",{class:lr(["vtl-paging-pagination-page-li vtl-paging-pagination-page-li-next page-item",{disabled:e.setting.page>=e.setting.maxPage}])},[Qe("a",{class:"vtl-paging-pagination-page-link vtl-paging-pagination-page-link-next page-link cursor-pointer","aria-label":"Next",onClick:t[9]||(t[9]=In((...l)=>e.nextPage&&e.nextPage(...l),["prevent"]))},[...IF])],2),Qe("li",{class:lr(["vtl-paging-pagination-page-li vtl-paging-pagination-page-li-last page-item",{disabled:e.setting.page>=e.setting.maxPage}])},[Qe("a",{class:"vtl-paging-pagination-page-link vtl-paging-pagination-page-link-last page-link cursor-pointer","aria-label":"Next",onClick:t[10]||(t[10]=In(l=>e.setting.page=e.setting.maxPage,["prevent"]))},[...BF])],2)])])])],64))])):(tt(),ft("div",LF,[Qe("div",NF,ui(e.messages.noDataAvailable),1)]))])])}const oG=VA(_D,[["render",kF],["__scopeId","data-v-30c302e9"],["__file","/opt/openWB-dev/openwb-ui-settings/node_modules/vue3-table-lite/src/components/TableLite.vue"]]);var jS={exports:{}};const $F=gv(KA);(function(e,t){(function(i,a){e.exports=a($F,EE)})(typeof self<"u"?self:Ze,function(r,i){return function(a){var n={};function l(c){if(n[c])return n[c].exports;var d=n[c]={i:c,l:!1,exports:{}};return a[c].call(d.exports,d,d.exports,l),d.l=!0,d.exports}return l.m=a,l.c=n,l.d=function(c,d,m){l.o(c,d)||Object.defineProperty(c,d,{enumerable:!0,get:m})},l.r=function(c){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})},l.t=function(c,d){if(d&1&&(c=l(c)),d&8||d&4&&typeof c=="object"&&c&&c.__esModule)return c;var m=Object.create(null);if(l.r(m),Object.defineProperty(m,"default",{enumerable:!0,value:c}),d&2&&typeof c!="string")for(var M in c)l.d(m,M,(function(S){return c[S]}).bind(null,M));return m},l.n=function(c){var d=c&&c.__esModule?function(){return c.default}:function(){return c};return l.d(d,"a",d),d},l.o=function(c,d){return Object.prototype.hasOwnProperty.call(c,d)},l.p="",l(l.s="fb15")}({"00ee":function(a,n,l){var c=l("b622"),d=c("toStringTag"),m={};m[d]="z",a.exports=String(m)==="[object z]"},"0366":function(a,n,l){var c=l("1c0b");a.exports=function(d,m,M){if(c(d),m===void 0)return d;switch(M){case 0:return function(){return d.call(m)};case 1:return function(S){return d.call(m,S)};case 2:return function(S,R){return d.call(m,S,R)};case 3:return function(S,R,I){return d.call(m,S,R,I)}}return function(){return d.apply(m,arguments)}}},"057f":function(a,n,l){var c=l("fc6a"),d=l("241c").f,m={}.toString,M=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],S=function(R){try{return d(R)}catch{return M.slice()}};a.exports.f=function(I){return M&&m.call(I)=="[object Window]"?S(I):d(c(I))}},"06cf":function(a,n,l){var c=l("83ab"),d=l("d1e7"),m=l("5c6c"),M=l("fc6a"),S=l("c04e"),R=l("5135"),I=l("0cfb"),O=Object.getOwnPropertyDescriptor;n.f=c?O:function(L,P){if(L=M(L),P=S(P,!0),I)try{return O(L,P)}catch{}if(R(L,P))return m(!d.f.call(L,P),L[P])}},"0cfb":function(a,n,l){var c=l("83ab"),d=l("d039"),m=l("cc12");a.exports=!c&&!d(function(){return Object.defineProperty(m("div"),"a",{get:function(){return 7}}).a!=7})},"13d5":function(a,n,l){var c=l("23e7"),d=l("d58f").left,m=l("a640"),M=l("ae40"),S=m("reduce"),R=M("reduce",{1:0});c({target:"Array",proto:!0,forced:!S||!R},{reduce:function(O){return d(this,O,arguments.length,arguments.length>1?arguments[1]:void 0)}})},"14c3":function(a,n,l){var c=l("c6b6"),d=l("9263");a.exports=function(m,M){var S=m.exec;if(typeof S=="function"){var R=S.call(m,M);if(typeof R!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return R}if(c(m)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return d.call(m,M)}},"159b":function(a,n,l){var c=l("da84"),d=l("fdbc"),m=l("17c2"),M=l("9112");for(var S in d){var R=c[S],I=R&&R.prototype;if(I&&I.forEach!==m)try{M(I,"forEach",m)}catch{I.forEach=m}}},"17c2":function(a,n,l){var c=l("b727").forEach,d=l("a640"),m=l("ae40"),M=d("forEach"),S=m("forEach");a.exports=!M||!S?function(I){return c(this,I,arguments.length>1?arguments[1]:void 0)}:[].forEach},"1be4":function(a,n,l){var c=l("d066");a.exports=c("document","documentElement")},"1c0b":function(a,n){a.exports=function(l){if(typeof l!="function")throw TypeError(String(l)+" is not a function");return l}},"1c7e":function(a,n,l){var c=l("b622"),d=c("iterator"),m=!1;try{var M=0,S={next:function(){return{done:!!M++}},return:function(){m=!0}};S[d]=function(){return this},Array.from(S,function(){throw 2})}catch{}a.exports=function(R,I){if(!I&&!m)return!1;var O=!1;try{var B={};B[d]=function(){return{next:function(){return{done:O=!0}}}},R(B)}catch{}return O}},"1d80":function(a,n){a.exports=function(l){if(l==null)throw TypeError("Can't call method on "+l);return l}},"1dde":function(a,n,l){var c=l("d039"),d=l("b622"),m=l("2d00"),M=d("species");a.exports=function(S){return m>=51||!c(function(){var R=[],I=R.constructor={};return I[M]=function(){return{foo:1}},R[S](Boolean).foo!==1})}},"23cb":function(a,n,l){var c=l("a691"),d=Math.max,m=Math.min;a.exports=function(M,S){var R=c(M);return R<0?d(R+S,0):m(R,S)}},"23e7":function(a,n,l){var c=l("da84"),d=l("06cf").f,m=l("9112"),M=l("6eeb"),S=l("ce4e"),R=l("e893"),I=l("94ca");a.exports=function(O,B){var L=O.target,P=O.global,C=O.stat,j,$,K,G,te,Q;if(P?$=c:C?$=c[L]||S(L,{}):$=(c[L]||{}).prototype,$)for(K in B){if(te=B[K],O.noTargetGet?(Q=d($,K),G=Q&&Q.value):G=$[K],j=I(P?K:L+(C?".":"#")+K,O.forced),!j&&G!==void 0){if(typeof te==typeof G)continue;R(te,G)}(O.sham||G&&G.sham)&&m(te,"sham",!0),M($,K,te,O)}}},"241c":function(a,n,l){var c=l("ca84"),d=l("7839"),m=d.concat("length","prototype");n.f=Object.getOwnPropertyNames||function(S){return c(S,m)}},"25f0":function(a,n,l){var c=l("6eeb"),d=l("825a"),m=l("d039"),M=l("ad6d"),S="toString",R=RegExp.prototype,I=R[S],O=m(function(){return I.call({source:"a",flags:"b"})!="/a/b"}),B=I.name!=S;(O||B)&&c(RegExp.prototype,S,function(){var P=d(this),C=String(P.source),j=P.flags,$=String(j===void 0&&P instanceof RegExp&&!("flags"in R)?M.call(P):j);return"/"+C+"/"+$},{unsafe:!0})},"2ca0":function(a,n,l){var c=l("23e7"),d=l("06cf").f,m=l("50c4"),M=l("5a34"),S=l("1d80"),R=l("ab13"),I=l("c430"),O="".startsWith,B=Math.min,L=R("startsWith"),P=!I&&!L&&!!function(){var C=d(String.prototype,"startsWith");return C&&!C.writable}();c({target:"String",proto:!0,forced:!P&&!L},{startsWith:function(j){var $=String(S(this));M(j);var K=m(B(arguments.length>1?arguments[1]:void 0,$.length)),G=String(j);return O?O.call($,G,K):$.slice(K,K+G.length)===G}})},"2d00":function(a,n,l){var c=l("da84"),d=l("342f"),m=c.process,M=m&&m.versions,S=M&&M.v8,R,I;S?(R=S.split("."),I=R[0]+R[1]):d&&(R=d.match(/Edge\/(\d+)/),(!R||R[1]>=74)&&(R=d.match(/Chrome\/(\d+)/),R&&(I=R[1]))),a.exports=I&&+I},"342f":function(a,n,l){var c=l("d066");a.exports=c("navigator","userAgent")||""},"35a1":function(a,n,l){var c=l("f5df"),d=l("3f8c"),m=l("b622"),M=m("iterator");a.exports=function(S){if(S!=null)return S[M]||S["@@iterator"]||d[c(S)]}},"37e8":function(a,n,l){var c=l("83ab"),d=l("9bf2"),m=l("825a"),M=l("df75");a.exports=c?Object.defineProperties:function(R,I){m(R);for(var O=M(I),B=O.length,L=0,P;B>L;)d.f(R,P=O[L++],I[P]);return R}},"3bbe":function(a,n,l){var c=l("861d");a.exports=function(d){if(!c(d)&&d!==null)throw TypeError("Can't set "+String(d)+" as a prototype");return d}},"3ca3":function(a,n,l){var c=l("6547").charAt,d=l("69f3"),m=l("7dd0"),M="String Iterator",S=d.set,R=d.getterFor(M);m(String,"String",function(I){S(this,{type:M,string:String(I),index:0})},function(){var O=R(this),B=O.string,L=O.index,P;return L>=B.length?{value:void 0,done:!0}:(P=c(B,L),O.index+=P.length,{value:P,done:!1})})},"3f8c":function(a,n){a.exports={}},4160:function(a,n,l){var c=l("23e7"),d=l("17c2");c({target:"Array",proto:!0,forced:[].forEach!=d},{forEach:d})},"428f":function(a,n,l){var c=l("da84");a.exports=c},"44ad":function(a,n,l){var c=l("d039"),d=l("c6b6"),m="".split;a.exports=c(function(){return!Object("z").propertyIsEnumerable(0)})?function(M){return d(M)=="String"?m.call(M,""):Object(M)}:Object},"44d2":function(a,n,l){var c=l("b622"),d=l("7c73"),m=l("9bf2"),M=c("unscopables"),S=Array.prototype;S[M]==null&&m.f(S,M,{configurable:!0,value:d(null)}),a.exports=function(R){S[M][R]=!0}},"44e7":function(a,n,l){var c=l("861d"),d=l("c6b6"),m=l("b622"),M=m("match");a.exports=function(S){var R;return c(S)&&((R=S[M])!==void 0?!!R:d(S)=="RegExp")}},4930:function(a,n,l){var c=l("d039");a.exports=!!Object.getOwnPropertySymbols&&!c(function(){return!String(Symbol())})},"4d64":function(a,n,l){var c=l("fc6a"),d=l("50c4"),m=l("23cb"),M=function(S){return function(R,I,O){var B=c(R),L=d(B.length),P=m(O,L),C;if(S&&I!=I){for(;L>P;)if(C=B[P++],C!=C)return!0}else for(;L>P;P++)if((S||P in B)&&B[P]===I)return S||P||0;return!S&&-1}};a.exports={includes:M(!0),indexOf:M(!1)}},"4de4":function(a,n,l){var c=l("23e7"),d=l("b727").filter,m=l("1dde"),M=l("ae40"),S=m("filter"),R=M("filter");c({target:"Array",proto:!0,forced:!S||!R},{filter:function(O){return d(this,O,arguments.length>1?arguments[1]:void 0)}})},"4df4":function(a,n,l){var c=l("0366"),d=l("7b0b"),m=l("9bdd"),M=l("e95a"),S=l("50c4"),R=l("8418"),I=l("35a1");a.exports=function(B){var L=d(B),P=typeof this=="function"?this:Array,C=arguments.length,j=C>1?arguments[1]:void 0,$=j!==void 0,K=I(L),G=0,te,Q,W,ce,_,o;if($&&(j=c(j,C>2?arguments[2]:void 0,2)),K!=null&&!(P==Array&&M(K)))for(ce=K.call(L),_=ce.next,Q=new P;!(W=_.call(ce)).done;G++)o=$?m(ce,j,[W.value,G],!0):W.value,R(Q,G,o);else for(te=S(L.length),Q=new P(te);te>G;G++)o=$?j(L[G],G):L[G],R(Q,G,o);return Q.length=G,Q}},"4fad":function(a,n,l){var c=l("23e7"),d=l("6f53").entries;c({target:"Object",stat:!0},{entries:function(M){return d(M)}})},"50c4":function(a,n,l){var c=l("a691"),d=Math.min;a.exports=function(m){return m>0?d(c(m),9007199254740991):0}},5135:function(a,n){var l={}.hasOwnProperty;a.exports=function(c,d){return l.call(c,d)}},5319:function(a,n,l){var c=l("d784"),d=l("825a"),m=l("7b0b"),M=l("50c4"),S=l("a691"),R=l("1d80"),I=l("8aa5"),O=l("14c3"),B=Math.max,L=Math.min,P=Math.floor,C=/\$([$&'`]|\d\d?|<[^>]*>)/g,j=/\$([$&'`]|\d\d?)/g,$=function(K){return K===void 0?K:String(K)};c("replace",2,function(K,G,te,Q){var W=Q.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,ce=Q.REPLACE_KEEPS_$0,_=W?"$":"$0";return[function(u,h){var p=R(this),w=u==null?void 0:u[K];return w!==void 0?w.call(u,p,h):G.call(String(p),u,h)},function(f,u){if(!W&&ce||typeof u=="string"&&u.indexOf(_)===-1){var h=te(G,f,this,u);if(h.done)return h.value}var p=d(f),w=String(this),x=typeof u=="function";x||(u=String(u));var g=p.global;if(g){var s=p.unicode;p.lastIndex=0}for(var v=[];;){var T=O(p,w);if(T===null||(v.push(T),!g))break;var k=String(T[0]);k===""&&(p.lastIndex=I(w,M(p.lastIndex),s))}for(var Y="",ee=0,A=0;A<v.length;A++){T=v[A];for(var E=String(T[0]),q=B(L(S(T.index),w.length),0),V=[],X=1;X<T.length;X++)V.push($(T[X]));var b=T.groups;if(x){var y=[E].concat(V,q,w);b!==void 0&&y.push(b);var D=String(u.apply(void 0,y))}else D=o(E,w,q,V,b,u);q>=ee&&(Y+=w.slice(ee,q)+D,ee=q+E.length)}return Y+w.slice(ee)}];function o(f,u,h,p,w,x){var g=h+f.length,s=p.length,v=j;return w!==void 0&&(w=m(w),v=C),G.call(x,v,function(T,k){var Y;switch(k.charAt(0)){case"$":return"$";case"&":return f;case"`":return u.slice(0,h);case"'":return u.slice(g);case"<":Y=w[k.slice(1,-1)];break;default:var ee=+k;if(ee===0)return T;if(ee>s){var A=P(ee/10);return A===0?T:A<=s?p[A-1]===void 0?k.charAt(1):p[A-1]+k.charAt(1):T}Y=p[ee-1]}return Y===void 0?"":Y})}})},5692:function(a,n,l){var c=l("c430"),d=l("c6cd");(a.exports=function(m,M){return d[m]||(d[m]=M!==void 0?M:{})})("versions",[]).push({version:"3.6.5",mode:c?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},"56ef":function(a,n,l){var c=l("d066"),d=l("241c"),m=l("7418"),M=l("825a");a.exports=c("Reflect","ownKeys")||function(R){var I=d.f(M(R)),O=m.f;return O?I.concat(O(R)):I}},"5a34":function(a,n,l){var c=l("44e7");a.exports=function(d){if(c(d))throw TypeError("The method doesn't accept regular expressions");return d}},"5c6c":function(a,n){a.exports=function(l,c){return{enumerable:!(l&1),configurable:!(l&2),writable:!(l&4),value:c}}},"5db7":function(a,n,l){var c=l("23e7"),d=l("a2bf"),m=l("7b0b"),M=l("50c4"),S=l("1c0b"),R=l("65f0");c({target:"Array",proto:!0},{flatMap:function(O){var B=m(this),L=M(B.length),P;return S(O),P=R(B,0),P.length=d(P,B,B,L,0,1,O,arguments.length>1?arguments[1]:void 0),P}})},6547:function(a,n,l){var c=l("a691"),d=l("1d80"),m=function(M){return function(S,R){var I=String(d(S)),O=c(R),B=I.length,L,P;return O<0||O>=B?M?"":void 0:(L=I.charCodeAt(O),L<55296||L>56319||O+1===B||(P=I.charCodeAt(O+1))<56320||P>57343?M?I.charAt(O):L:M?I.slice(O,O+2):(L-55296<<10)+(P-56320)+65536)}};a.exports={codeAt:m(!1),charAt:m(!0)}},"65f0":function(a,n,l){var c=l("861d"),d=l("e8b5"),m=l("b622"),M=m("species");a.exports=function(S,R){var I;return d(S)&&(I=S.constructor,typeof I=="function"&&(I===Array||d(I.prototype))?I=void 0:c(I)&&(I=I[M],I===null&&(I=void 0))),new(I===void 0?Array:I)(R===0?0:R)}},"69f3":function(a,n,l){var c=l("7f9a"),d=l("da84"),m=l("861d"),M=l("9112"),S=l("5135"),R=l("f772"),I=l("d012"),O=d.WeakMap,B,L,P,C=function(W){return P(W)?L(W):B(W,{})},j=function(W){return function(ce){var _;if(!m(ce)||(_=L(ce)).type!==W)throw TypeError("Incompatible receiver, "+W+" required");return _}};if(c){var $=new O,K=$.get,G=$.has,te=$.set;B=function(W,ce){return te.call($,W,ce),ce},L=function(W){return K.call($,W)||{}},P=function(W){return G.call($,W)}}else{var Q=R("state");I[Q]=!0,B=function(W,ce){return M(W,Q,ce),ce},L=function(W){return S(W,Q)?W[Q]:{}},P=function(W){return S(W,Q)}}a.exports={set:B,get:L,has:P,enforce:C,getterFor:j}},"6eeb":function(a,n,l){var c=l("da84"),d=l("9112"),m=l("5135"),M=l("ce4e"),S=l("8925"),R=l("69f3"),I=R.get,O=R.enforce,B=String(String).split("String");(a.exports=function(L,P,C,j){var $=j?!!j.unsafe:!1,K=j?!!j.enumerable:!1,G=j?!!j.noTargetGet:!1;if(typeof C=="function"&&(typeof P=="string"&&!m(C,"name")&&d(C,"name",P),O(C).source=B.join(typeof P=="string"?P:"")),L===c){K?L[P]=C:M(P,C);return}else $?!G&&L[P]&&(K=!0):delete L[P];K?L[P]=C:d(L,P,C)})(Function.prototype,"toString",function(){return typeof this=="function"&&I(this).source||S(this)})},"6f53":function(a,n,l){var c=l("83ab"),d=l("df75"),m=l("fc6a"),M=l("d1e7").f,S=function(R){return function(I){for(var O=m(I),B=d(O),L=B.length,P=0,C=[],j;L>P;)j=B[P++],(!c||M.call(O,j))&&C.push(R?[j,O[j]]:O[j]);return C}};a.exports={entries:S(!0),values:S(!1)}},"73d9":function(a,n,l){var c=l("44d2");c("flatMap")},7418:function(a,n){n.f=Object.getOwnPropertySymbols},"746f":function(a,n,l){var c=l("428f"),d=l("5135"),m=l("e538"),M=l("9bf2").f;a.exports=function(S){var R=c.Symbol||(c.Symbol={});d(R,S)||M(R,S,{value:m.f(S)})}},7839:function(a,n){a.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(a,n,l){var c=l("1d80");a.exports=function(d){return Object(c(d))}},"7c73":function(a,n,l){var c=l("825a"),d=l("37e8"),m=l("7839"),M=l("d012"),S=l("1be4"),R=l("cc12"),I=l("f772"),O=">",B="<",L="prototype",P="script",C=I("IE_PROTO"),j=function(){},$=function(W){return B+P+O+W+B+"/"+P+O},K=function(W){W.write($("")),W.close();var ce=W.parentWindow.Object;return W=null,ce},G=function(){var W=R("iframe"),ce="java"+P+":",_;return W.style.display="none",S.appendChild(W),W.src=String(ce),_=W.contentWindow.document,_.open(),_.write($("document.F=Object")),_.close(),_.F},te,Q=function(){try{te=document.domain&&new ActiveXObject("htmlfile")}catch{}Q=te?K(te):G();for(var W=m.length;W--;)delete Q[L][m[W]];return Q()};M[C]=!0,a.exports=Object.create||function(ce,_){var o;return ce!==null?(j[L]=c(ce),o=new j,j[L]=null,o[C]=ce):o=Q(),_===void 0?o:d(o,_)}},"7dd0":function(a,n,l){var c=l("23e7"),d=l("9ed3"),m=l("e163"),M=l("d2bb"),S=l("d44e"),R=l("9112"),I=l("6eeb"),O=l("b622"),B=l("c430"),L=l("3f8c"),P=l("ae93"),C=P.IteratorPrototype,j=P.BUGGY_SAFARI_ITERATORS,$=O("iterator"),K="keys",G="values",te="entries",Q=function(){return this};a.exports=function(W,ce,_,o,f,u,h){d(_,ce,o);var p=function(A){if(A===f&&v)return v;if(!j&&A in g)return g[A];switch(A){case K:return function(){return new _(this,A)};case G:return function(){return new _(this,A)};case te:return function(){return new _(this,A)}}return function(){return new _(this)}},w=ce+" Iterator",x=!1,g=W.prototype,s=g[$]||g["@@iterator"]||f&&g[f],v=!j&&s||p(f),T=ce=="Array"&&g.entries||s,k,Y,ee;if(T&&(k=m(T.call(new W)),C!==Object.prototype&&k.next&&(!B&&m(k)!==C&&(M?M(k,C):typeof k[$]!="function"&&R(k,$,Q)),S(k,w,!0,!0),B&&(L[w]=Q))),f==G&&s&&s.name!==G&&(x=!0,v=function(){return s.call(this)}),(!B||h)&&g[$]!==v&&R(g,$,v),L[ce]=v,f)if(Y={values:p(G),keys:u?v:p(K),entries:p(te)},h)for(ee in Y)(j||x||!(ee in g))&&I(g,ee,Y[ee]);else c({target:ce,proto:!0,forced:j||x},Y);return Y}},"7f9a":function(a,n,l){var c=l("da84"),d=l("8925"),m=c.WeakMap;a.exports=typeof m=="function"&&/native code/.test(d(m))},"825a":function(a,n,l){var c=l("861d");a.exports=function(d){if(!c(d))throw TypeError(String(d)+" is not an object");return d}},"83ab":function(a,n,l){var c=l("d039");a.exports=!c(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})},8418:function(a,n,l){var c=l("c04e"),d=l("9bf2"),m=l("5c6c");a.exports=function(M,S,R){var I=c(S);I in M?d.f(M,I,m(0,R)):M[I]=R}},"861d":function(a,n){a.exports=function(l){return typeof l=="object"?l!==null:typeof l=="function"}},8875:function(a,n,l){var c,d,m;(function(M,S){d=[],c=S,m=typeof c=="function"?c.apply(n,d):c,m!==void 0&&(a.exports=m)})(typeof self<"u"?self:this,function(){function M(){var S=Object.getOwnPropertyDescriptor(document,"currentScript");if(!S&&"currentScript"in document&&document.currentScript||S&&S.get!==M&&document.currentScript)return document.currentScript;try{throw new Error}catch(te){var R=/.*at [^(]*\((.*):(.+):(.+)\)$/ig,I=/@([^@]*):(\d+):(\d+)\s*$/ig,O=R.exec(te.stack)||I.exec(te.stack),B=O&&O[1]||!1,L=O&&O[2]||!1,P=document.location.href.replace(document.location.hash,""),C,j,$,K=document.getElementsByTagName("script");B===P&&(C=document.documentElement.outerHTML,j=new RegExp("(?:[^\\n]+?\\n){0,"+(L-2)+"}[^<]*<script>([\\d\\D]*?)<\\/script>[\\d\\D]*","i"),$=C.replace(j,"$1").trim());for(var G=0;G<K.length;G++)if(K[G].readyState==="interactive"||K[G].src===B||B===P&&K[G].innerHTML&&K[G].innerHTML.trim()===$)return K[G];return null}}return M})},8925:function(a,n,l){var c=l("c6cd"),d=Function.toString;typeof c.inspectSource!="function"&&(c.inspectSource=function(m){return d.call(m)}),a.exports=c.inspectSource},"8aa5":function(a,n,l){var c=l("6547").charAt;a.exports=function(d,m,M){return m+(M?c(d,m).length:1)}},"8bbf":function(a,n){a.exports=r},"90e3":function(a,n){var l=0,c=Math.random();a.exports=function(d){return"Symbol("+String(d===void 0?"":d)+")_"+(++l+c).toString(36)}},9112:function(a,n,l){var c=l("83ab"),d=l("9bf2"),m=l("5c6c");a.exports=c?function(M,S,R){return d.f(M,S,m(1,R))}:function(M,S,R){return M[S]=R,M}},9263:function(a,n,l){var c=l("ad6d"),d=l("9f7f"),m=RegExp.prototype.exec,M=String.prototype.replace,S=m,R=function(){var L=/a/,P=/b*/g;return m.call(L,"a"),m.call(P,"a"),L.lastIndex!==0||P.lastIndex!==0}(),I=d.UNSUPPORTED_Y||d.BROKEN_CARET,O=/()??/.exec("")[1]!==void 0,B=R||O||I;B&&(S=function(P){var C=this,j,$,K,G,te=I&&C.sticky,Q=c.call(C),W=C.source,ce=0,_=P;return te&&(Q=Q.replace("y",""),Q.indexOf("g")===-1&&(Q+="g"),_=String(P).slice(C.lastIndex),C.lastIndex>0&&(!C.multiline||C.multiline&&P[C.lastIndex-1]!==`
-`)&&(W="(?: "+W+")",_=" "+_,ce++),$=new RegExp("^(?:"+W+")",Q)),O&&($=new RegExp("^"+W+"$(?!\\s)",Q)),R&&(j=C.lastIndex),K=m.call(te?$:C,_),te?K?(K.input=K.input.slice(ce),K[0]=K[0].slice(ce),K.index=C.lastIndex,C.lastIndex+=K[0].length):C.lastIndex=0:R&&K&&(C.lastIndex=C.global?K.index+K[0].length:j),O&&K&&K.length>1&&M.call(K[0],$,function(){for(G=1;G<arguments.length-2;G++)arguments[G]===void 0&&(K[G]=void 0)}),K}),a.exports=S},"94ca":function(a,n,l){var c=l("d039"),d=/#|\.prototype\./,m=function(O,B){var L=S[M(O)];return L==I?!0:L==R?!1:typeof B=="function"?c(B):!!B},M=m.normalize=function(O){return String(O).replace(d,".").toLowerCase()},S=m.data={},R=m.NATIVE="N",I=m.POLYFILL="P";a.exports=m},"99af":function(a,n,l){var c=l("23e7"),d=l("d039"),m=l("e8b5"),M=l("861d"),S=l("7b0b"),R=l("50c4"),I=l("8418"),O=l("65f0"),B=l("1dde"),L=l("b622"),P=l("2d00"),C=L("isConcatSpreadable"),j=9007199254740991,$="Maximum allowed index exceeded",K=P>=51||!d(function(){var W=[];return W[C]=!1,W.concat()[0]!==W}),G=B("concat"),te=function(W){if(!M(W))return!1;var ce=W[C];return ce!==void 0?!!ce:m(W)},Q=!K||!G;c({target:"Array",proto:!0,forced:Q},{concat:function(ce){var _=S(this),o=O(_,0),f=0,u,h,p,w,x;for(u=-1,p=arguments.length;u<p;u++)if(x=u===-1?_:arguments[u],te(x)){if(w=R(x.length),f+w>j)throw TypeError($);for(h=0;h<w;h++,f++)h in x&&I(o,f,x[h])}else{if(f>=j)throw TypeError($);I(o,f++,x)}return o.length=f,o}})},"9bdd":function(a,n,l){var c=l("825a");a.exports=function(d,m,M,S){try{return S?m(c(M)[0],M[1]):m(M)}catch(I){var R=d.return;throw R!==void 0&&c(R.call(d)),I}}},"9bf2":function(a,n,l){var c=l("83ab"),d=l("0cfb"),m=l("825a"),M=l("c04e"),S=Object.defineProperty;n.f=c?S:function(I,O,B){if(m(I),O=M(O,!0),m(B),d)try{return S(I,O,B)}catch{}if("get"in B||"set"in B)throw TypeError("Accessors not supported");return"value"in B&&(I[O]=B.value),I}},"9ed3":function(a,n,l){var c=l("ae93").IteratorPrototype,d=l("7c73"),m=l("5c6c"),M=l("d44e"),S=l("3f8c"),R=function(){return this};a.exports=function(I,O,B){var L=O+" Iterator";return I.prototype=d(c,{next:m(1,B)}),M(I,L,!1,!0),S[L]=R,I}},"9f7f":function(a,n,l){var c=l("d039");function d(m,M){return RegExp(m,M)}n.UNSUPPORTED_Y=c(function(){var m=d("a","y");return m.lastIndex=2,m.exec("abcd")!=null}),n.BROKEN_CARET=c(function(){var m=d("^r","gy");return m.lastIndex=2,m.exec("str")!=null})},a2bf:function(a,n,l){var c=l("e8b5"),d=l("50c4"),m=l("0366"),M=function(S,R,I,O,B,L,P,C){for(var j=B,$=0,K=P?m(P,C,3):!1,G;$<O;){if($ in I){if(G=K?K(I[$],$,R):I[$],L>0&&c(G))j=M(S,R,G,d(G.length),j,L-1)-1;else{if(j>=9007199254740991)throw TypeError("Exceed the acceptable array length");S[j]=G}j++}$++}return j};a.exports=M},a352:function(a,n){a.exports=i},a434:function(a,n,l){var c=l("23e7"),d=l("23cb"),m=l("a691"),M=l("50c4"),S=l("7b0b"),R=l("65f0"),I=l("8418"),O=l("1dde"),B=l("ae40"),L=O("splice"),P=B("splice",{ACCESSORS:!0,0:0,1:2}),C=Math.max,j=Math.min,$=9007199254740991,K="Maximum allowed length exceeded";c({target:"Array",proto:!0,forced:!L||!P},{splice:function(te,Q){var W=S(this),ce=M(W.length),_=d(te,ce),o=arguments.length,f,u,h,p,w,x;if(o===0?f=u=0:o===1?(f=0,u=ce-_):(f=o-2,u=j(C(m(Q),0),ce-_)),ce+f-u>$)throw TypeError(K);for(h=R(W,u),p=0;p<u;p++)w=_+p,w in W&&I(h,p,W[w]);if(h.length=u,f<u){for(p=_;p<ce-u;p++)w=p+u,x=p+f,w in W?W[x]=W[w]:delete W[x];for(p=ce;p>ce-u+f;p--)delete W[p-1]}else if(f>u)for(p=ce-u;p>_;p--)w=p+u-1,x=p+f-1,w in W?W[x]=W[w]:delete W[x];for(p=0;p<f;p++)W[p+_]=arguments[p+2];return W.length=ce-u+f,h}})},a4d3:function(a,n,l){var c=l("23e7"),d=l("da84"),m=l("d066"),M=l("c430"),S=l("83ab"),R=l("4930"),I=l("fdbf"),O=l("d039"),B=l("5135"),L=l("e8b5"),P=l("861d"),C=l("825a"),j=l("7b0b"),$=l("fc6a"),K=l("c04e"),G=l("5c6c"),te=l("7c73"),Q=l("df75"),W=l("241c"),ce=l("057f"),_=l("7418"),o=l("06cf"),f=l("9bf2"),u=l("d1e7"),h=l("9112"),p=l("6eeb"),w=l("5692"),x=l("f772"),g=l("d012"),s=l("90e3"),v=l("b622"),T=l("e538"),k=l("746f"),Y=l("d44e"),ee=l("69f3"),A=l("b727").forEach,E=x("hidden"),q="Symbol",V="prototype",X=v("toPrimitive"),b=ee.set,y=ee.getterFor(q),D=Object[V],U=d.Symbol,Z=m("JSON","stringify"),F=o.f,N=f.f,H=ce.f,z=u.f,fe=w("symbols"),re=w("op-symbols"),ae=w("string-to-symbol-registry"),be=w("symbol-to-string-registry"),J=w("wks"),le=d.QObject,se=!le||!le[V]||!le[V].findChild,ue=S&&O(function(){return te(N({},"a",{get:function(){return N(this,"a",{value:7}).a}})).a!=7})?function(qe,ye,Me){var Ve=F(D,ye);Ve&&delete D[ye],N(qe,ye,Me),Ve&&qe!==D&&N(D,ye,Ve)}:N,de=function(qe,ye){var Me=fe[qe]=te(U[V]);return b(Me,{type:q,tag:qe,description:ye}),S||(Me.description=ye),Me},ve=I?function(qe){return typeof qe=="symbol"}:function(qe){return Object(qe)instanceof U},ie=function(ye,Me,Ve){ye===D&&ie(re,Me,Ve),C(ye);var ge=K(Me,!0);return C(Ve),B(fe,ge)?(Ve.enumerable?(B(ye,E)&&ye[E][ge]&&(ye[E][ge]=!1),Ve=te(Ve,{enumerable:G(0,!1)})):(B(ye,E)||N(ye,E,G(1,{})),ye[E][ge]=!0),ue(ye,ge,Ve)):N(ye,ge,Ve)},oe=function(ye,Me){C(ye);var Ve=$(Me),ge=Q(Ve).concat(we(Ve));return A(ge,function(Ee){(!S||pe.call(Ve,Ee))&&ie(ye,Ee,Ve[Ee])}),ye},Ae=function(ye,Me){return Me===void 0?te(ye):oe(te(ye),Me)},pe=function(ye){var Me=K(ye,!0),Ve=z.call(this,Me);return this===D&&B(fe,Me)&&!B(re,Me)?!1:Ve||!B(this,Me)||!B(fe,Me)||B(this,E)&&this[E][Me]?Ve:!0},Se=function(ye,Me){var Ve=$(ye),ge=K(Me,!0);if(!(Ve===D&&B(fe,ge)&&!B(re,ge))){var Ee=F(Ve,ge);return Ee&&B(fe,ge)&&!(B(Ve,E)&&Ve[E][ge])&&(Ee.enumerable=!0),Ee}},Ke=function(ye){var Me=H($(ye)),Ve=[];return A(Me,function(ge){!B(fe,ge)&&!B(g,ge)&&Ve.push(ge)}),Ve},we=function(ye){var Me=ye===D,Ve=H(Me?re:$(ye)),ge=[];return A(Ve,function(Ee){B(fe,Ee)&&(!Me||B(D,Ee))&&ge.push(fe[Ee])}),ge};if(R||(U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var ye=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),Me=s(ye),Ve=function(ge){this===D&&Ve.call(re,ge),B(this,E)&&B(this[E],Me)&&(this[E][Me]=!1),ue(this,Me,G(1,ge))};return S&&se&&ue(D,Me,{configurable:!0,set:Ve}),de(Me,ye)},p(U[V],"toString",function(){return y(this).tag}),p(U,"withoutSetter",function(qe){return de(s(qe),qe)}),u.f=pe,f.f=ie,o.f=Se,W.f=ce.f=Ke,_.f=we,T.f=function(qe){return de(v(qe),qe)},S&&(N(U[V],"description",{configurable:!0,get:function(){return y(this).description}}),M||p(D,"propertyIsEnumerable",pe,{unsafe:!0}))),c({global:!0,wrap:!0,forced:!R,sham:!R},{Symbol:U}),A(Q(J),function(qe){k(qe)}),c({target:q,stat:!0,forced:!R},{for:function(qe){var ye=String(qe);if(B(ae,ye))return ae[ye];var Me=U(ye);return ae[ye]=Me,be[Me]=ye,Me},keyFor:function(ye){if(!ve(ye))throw TypeError(ye+" is not a symbol");if(B(be,ye))return be[ye]},useSetter:function(){se=!0},useSimple:function(){se=!1}}),c({target:"Object",stat:!0,forced:!R,sham:!S},{create:Ae,defineProperty:ie,defineProperties:oe,getOwnPropertyDescriptor:Se}),c({target:"Object",stat:!0,forced:!R},{getOwnPropertyNames:Ke,getOwnPropertySymbols:we}),c({target:"Object",stat:!0,forced:O(function(){_.f(1)})},{getOwnPropertySymbols:function(ye){return _.f(j(ye))}}),Z){var xe=!R||O(function(){var qe=U();return Z([qe])!="[null]"||Z({a:qe})!="{}"||Z(Object(qe))!="{}"});c({target:"JSON",stat:!0,forced:xe},{stringify:function(ye,Me,Ve){for(var ge=[ye],Ee=1,Je;arguments.length>Ee;)ge.push(arguments[Ee++]);if(Je=Me,!(!P(Me)&&ye===void 0||ve(ye)))return L(Me)||(Me=function(Re,Le){if(typeof Je=="function"&&(Le=Je.call(this,Re,Le)),!ve(Le))return Le}),ge[1]=Me,Z.apply(null,ge)}})}U[V][X]||h(U[V],X,U[V].valueOf),Y(U,q),g[E]=!0},a630:function(a,n,l){var c=l("23e7"),d=l("4df4"),m=l("1c7e"),M=!m(function(S){Array.from(S)});c({target:"Array",stat:!0,forced:M},{from:d})},a640:function(a,n,l){var c=l("d039");a.exports=function(d,m){var M=[][d];return!!M&&c(function(){M.call(null,m||function(){throw 1},1)})}},a691:function(a,n){var l=Math.ceil,c=Math.floor;a.exports=function(d){return isNaN(d=+d)?0:(d>0?c:l)(d)}},ab13:function(a,n,l){var c=l("b622"),d=c("match");a.exports=function(m){var M=/./;try{"/./"[m](M)}catch{try{return M[d]=!1,"/./"[m](M)}catch{}}return!1}},ac1f:function(a,n,l){var c=l("23e7"),d=l("9263");c({target:"RegExp",proto:!0,forced:/./.exec!==d},{exec:d})},ad6d:function(a,n,l){var c=l("825a");a.exports=function(){var d=c(this),m="";return d.global&&(m+="g"),d.ignoreCase&&(m+="i"),d.multiline&&(m+="m"),d.dotAll&&(m+="s"),d.unicode&&(m+="u"),d.sticky&&(m+="y"),m}},ae40:function(a,n,l){var c=l("83ab"),d=l("d039"),m=l("5135"),M=Object.defineProperty,S={},R=function(I){throw I};a.exports=function(I,O){if(m(S,I))return S[I];O||(O={});var B=[][I],L=m(O,"ACCESSORS")?O.ACCESSORS:!1,P=m(O,0)?O[0]:R,C=m(O,1)?O[1]:void 0;return S[I]=!!B&&!d(function(){if(L&&!c)return!0;var j={length:-1};L?M(j,1,{enumerable:!0,get:R}):j[1]=1,B.call(j,P,C)})}},ae93:function(a,n,l){var c=l("e163"),d=l("9112"),m=l("5135"),M=l("b622"),S=l("c430"),R=M("iterator"),I=!1,O=function(){return this},B,L,P;[].keys&&(P=[].keys(),"next"in P?(L=c(c(P)),L!==Object.prototype&&(B=L)):I=!0),B==null&&(B={}),!S&&!m(B,R)&&d(B,R,O),a.exports={IteratorPrototype:B,BUGGY_SAFARI_ITERATORS:I}},b041:function(a,n,l){var c=l("00ee"),d=l("f5df");a.exports=c?{}.toString:function(){return"[object "+d(this)+"]"}},b0c0:function(a,n,l){var c=l("83ab"),d=l("9bf2").f,m=Function.prototype,M=m.toString,S=/^\s*function ([^ (]*)/,R="name";c&&!(R in m)&&d(m,R,{configurable:!0,get:function(){try{return M.call(this).match(S)[1]}catch{return""}}})},b622:function(a,n,l){var c=l("da84"),d=l("5692"),m=l("5135"),M=l("90e3"),S=l("4930"),R=l("fdbf"),I=d("wks"),O=c.Symbol,B=R?O:O&&O.withoutSetter||M;a.exports=function(L){return m(I,L)||(S&&m(O,L)?I[L]=O[L]:I[L]=B("Symbol."+L)),I[L]}},b64b:function(a,n,l){var c=l("23e7"),d=l("7b0b"),m=l("df75"),M=l("d039"),S=M(function(){m(1)});c({target:"Object",stat:!0,forced:S},{keys:function(I){return m(d(I))}})},b727:function(a,n,l){var c=l("0366"),d=l("44ad"),m=l("7b0b"),M=l("50c4"),S=l("65f0"),R=[].push,I=function(O){var B=O==1,L=O==2,P=O==3,C=O==4,j=O==6,$=O==5||j;return function(K,G,te,Q){for(var W=m(K),ce=d(W),_=c(G,te,3),o=M(ce.length),f=0,u=Q||S,h=B?u(K,o):L?u(K,0):void 0,p,w;o>f;f++)if(($||f in ce)&&(p=ce[f],w=_(p,f,W),O)){if(B)h[f]=w;else if(w)switch(O){case 3:return!0;case 5:return p;case 6:return f;case 2:R.call(h,p)}else if(C)return!1}return j?-1:P||C?C:h}};a.exports={forEach:I(0),map:I(1),filter:I(2),some:I(3),every:I(4),find:I(5),findIndex:I(6)}},c04e:function(a,n,l){var c=l("861d");a.exports=function(d,m){if(!c(d))return d;var M,S;if(m&&typeof(M=d.toString)=="function"&&!c(S=M.call(d))||typeof(M=d.valueOf)=="function"&&!c(S=M.call(d))||!m&&typeof(M=d.toString)=="function"&&!c(S=M.call(d)))return S;throw TypeError("Can't convert object to primitive value")}},c430:function(a,n){a.exports=!1},c6b6:function(a,n){var l={}.toString;a.exports=function(c){return l.call(c).slice(8,-1)}},c6cd:function(a,n,l){var c=l("da84"),d=l("ce4e"),m="__core-js_shared__",M=c[m]||d(m,{});a.exports=M},c740:function(a,n,l){var c=l("23e7"),d=l("b727").findIndex,m=l("44d2"),M=l("ae40"),S="findIndex",R=!0,I=M(S);S in[]&&Array(1)[S](function(){R=!1}),c({target:"Array",proto:!0,forced:R||!I},{findIndex:function(B){return d(this,B,arguments.length>1?arguments[1]:void 0)}}),m(S)},c8ba:function(a,n){var l;l=function(){return this}();try{l=l||new Function("return this")()}catch{typeof window=="object"&&(l=window)}a.exports=l},c975:function(a,n,l){var c=l("23e7"),d=l("4d64").indexOf,m=l("a640"),M=l("ae40"),S=[].indexOf,R=!!S&&1/[1].indexOf(1,-0)<0,I=m("indexOf"),O=M("indexOf",{ACCESSORS:!0,1:0});c({target:"Array",proto:!0,forced:R||!I||!O},{indexOf:function(L){return R?S.apply(this,arguments)||0:d(this,L,arguments.length>1?arguments[1]:void 0)}})},ca84:function(a,n,l){var c=l("5135"),d=l("fc6a"),m=l("4d64").indexOf,M=l("d012");a.exports=function(S,R){var I=d(S),O=0,B=[],L;for(L in I)!c(M,L)&&c(I,L)&&B.push(L);for(;R.length>O;)c(I,L=R[O++])&&(~m(B,L)||B.push(L));return B}},caad:function(a,n,l){var c=l("23e7"),d=l("4d64").includes,m=l("44d2"),M=l("ae40"),S=M("indexOf",{ACCESSORS:!0,1:0});c({target:"Array",proto:!0,forced:!S},{includes:function(I){return d(this,I,arguments.length>1?arguments[1]:void 0)}}),m("includes")},cc12:function(a,n,l){var c=l("da84"),d=l("861d"),m=c.document,M=d(m)&&d(m.createElement);a.exports=function(S){return M?m.createElement(S):{}}},ce4e:function(a,n,l){var c=l("da84"),d=l("9112");a.exports=function(m,M){try{d(c,m,M)}catch{c[m]=M}return M}},d012:function(a,n){a.exports={}},d039:function(a,n){a.exports=function(l){try{return!!l()}catch{return!0}}},d066:function(a,n,l){var c=l("428f"),d=l("da84"),m=function(M){return typeof M=="function"?M:void 0};a.exports=function(M,S){return arguments.length<2?m(c[M])||m(d[M]):c[M]&&c[M][S]||d[M]&&d[M][S]}},d1e7:function(a,n,l){var c={}.propertyIsEnumerable,d=Object.getOwnPropertyDescriptor,m=d&&!c.call({1:2},1);n.f=m?function(S){var R=d(this,S);return!!R&&R.enumerable}:c},d28b:function(a,n,l){var c=l("746f");c("iterator")},d2bb:function(a,n,l){var c=l("825a"),d=l("3bbe");a.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var m=!1,M={},S;try{S=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,S.call(M,[]),m=M instanceof Array}catch{}return function(I,O){return c(I),d(O),m?S.call(I,O):I.__proto__=O,I}}():void 0)},d3b7:function(a,n,l){var c=l("00ee"),d=l("6eeb"),m=l("b041");c||d(Object.prototype,"toString",m,{unsafe:!0})},d44e:function(a,n,l){var c=l("9bf2").f,d=l("5135"),m=l("b622"),M=m("toStringTag");a.exports=function(S,R,I){S&&!d(S=I?S:S.prototype,M)&&c(S,M,{configurable:!0,value:R})}},d58f:function(a,n,l){var c=l("1c0b"),d=l("7b0b"),m=l("44ad"),M=l("50c4"),S=function(R){return function(I,O,B,L){c(O);var P=d(I),C=m(P),j=M(P.length),$=R?j-1:0,K=R?-1:1;if(B<2)for(;;){if($ in C){L=C[$],$+=K;break}if($+=K,R?$<0:j<=$)throw TypeError("Reduce of empty array with no initial value")}for(;R?$>=0:j>$;$+=K)$ in C&&(L=O(L,C[$],$,P));return L}};a.exports={left:S(!1),right:S(!0)}},d784:function(a,n,l){l("ac1f");var c=l("6eeb"),d=l("d039"),m=l("b622"),M=l("9263"),S=l("9112"),R=m("species"),I=!d(function(){var C=/./;return C.exec=function(){var j=[];return j.groups={a:"7"},j},"".replace(C,"$<a>")!=="7"}),O=function(){return"a".replace(/./,"$0")==="$0"}(),B=m("replace"),L=function(){return/./[B]?/./[B]("a","$0")==="":!1}(),P=!d(function(){var C=/(?:)/,j=C.exec;C.exec=function(){return j.apply(this,arguments)};var $="ab".split(C);return $.length!==2||$[0]!=="a"||$[1]!=="b"});a.exports=function(C,j,$,K){var G=m(C),te=!d(function(){var f={};return f[G]=function(){return 7},""[C](f)!=7}),Q=te&&!d(function(){var f=!1,u=/a/;return C==="split"&&(u={},u.constructor={},u.constructor[R]=function(){return u},u.flags="",u[G]=/./[G]),u.exec=function(){return f=!0,null},u[G](""),!f});if(!te||!Q||C==="replace"&&!(I&&O&&!L)||C==="split"&&!P){var W=/./[G],ce=$(G,""[C],function(f,u,h,p,w){return u.exec===M?te&&!w?{done:!0,value:W.call(u,h,p)}:{done:!0,value:f.call(h,u,p)}:{done:!1}},{REPLACE_KEEPS_$0:O,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:L}),_=ce[0],o=ce[1];c(String.prototype,C,_),c(RegExp.prototype,G,j==2?function(f,u){return o.call(f,this,u)}:function(f){return o.call(f,this)})}K&&S(RegExp.prototype[G],"sham",!0)}},d81d:function(a,n,l){var c=l("23e7"),d=l("b727").map,m=l("1dde"),M=l("ae40"),S=m("map"),R=M("map");c({target:"Array",proto:!0,forced:!S||!R},{map:function(O){return d(this,O,arguments.length>1?arguments[1]:void 0)}})},da84:function(a,n,l){(function(c){var d=function(m){return m&&m.Math==Math&&m};a.exports=d(typeof globalThis=="object"&&globalThis)||d(typeof window=="object"&&window)||d(typeof self=="object"&&self)||d(typeof c=="object"&&c)||Function("return this")()}).call(this,l("c8ba"))},dbb4:function(a,n,l){var c=l("23e7"),d=l("83ab"),m=l("56ef"),M=l("fc6a"),S=l("06cf"),R=l("8418");c({target:"Object",stat:!0,sham:!d},{getOwnPropertyDescriptors:function(O){for(var B=M(O),L=S.f,P=m(B),C={},j=0,$,K;P.length>j;)K=L(B,$=P[j++]),K!==void 0&&R(C,$,K);return C}})},dbf1:function(a,n,l){(function(c){l.d(n,"a",function(){return m});function d(){return typeof window<"u"?window.console:c.console}var m=d()}).call(this,l("c8ba"))},ddb0:function(a,n,l){var c=l("da84"),d=l("fdbc"),m=l("e260"),M=l("9112"),S=l("b622"),R=S("iterator"),I=S("toStringTag"),O=m.values;for(var B in d){var L=c[B],P=L&&L.prototype;if(P){if(P[R]!==O)try{M(P,R,O)}catch{P[R]=O}if(P[I]||M(P,I,B),d[B]){for(var C in m)if(P[C]!==m[C])try{M(P,C,m[C])}catch{P[C]=m[C]}}}}},df75:function(a,n,l){var c=l("ca84"),d=l("7839");a.exports=Object.keys||function(M){return c(M,d)}},e01a:function(a,n,l){var c=l("23e7"),d=l("83ab"),m=l("da84"),M=l("5135"),S=l("861d"),R=l("9bf2").f,I=l("e893"),O=m.Symbol;if(d&&typeof O=="function"&&(!("description"in O.prototype)||O().description!==void 0)){var B={},L=function(){var G=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),te=this instanceof L?new O(G):G===void 0?O():O(G);return G===""&&(B[te]=!0),te};I(L,O);var P=L.prototype=O.prototype;P.constructor=L;var C=P.toString,j=String(O("test"))=="Symbol(test)",$=/^Symbol\((.*)\)[^)]+$/;R(P,"description",{configurable:!0,get:function(){var G=S(this)?this.valueOf():this,te=C.call(G);if(M(B,G))return"";var Q=j?te.slice(7,-1):te.replace($,"$1");return Q===""?void 0:Q}}),c({global:!0,forced:!0},{Symbol:L})}},e163:function(a,n,l){var c=l("5135"),d=l("7b0b"),m=l("f772"),M=l("e177"),S=m("IE_PROTO"),R=Object.prototype;a.exports=M?Object.getPrototypeOf:function(I){return I=d(I),c(I,S)?I[S]:typeof I.constructor=="function"&&I instanceof I.constructor?I.constructor.prototype:I instanceof Object?R:null}},e177:function(a,n,l){var c=l("d039");a.exports=!c(function(){function d(){}return d.prototype.constructor=null,Object.getPrototypeOf(new d)!==d.prototype})},e260:function(a,n,l){var c=l("fc6a"),d=l("44d2"),m=l("3f8c"),M=l("69f3"),S=l("7dd0"),R="Array Iterator",I=M.set,O=M.getterFor(R);a.exports=S(Array,"Array",function(B,L){I(this,{type:R,target:c(B),index:0,kind:L})},function(){var B=O(this),L=B.target,P=B.kind,C=B.index++;return!L||C>=L.length?(B.target=void 0,{value:void 0,done:!0}):P=="keys"?{value:C,done:!1}:P=="values"?{value:L[C],done:!1}:{value:[C,L[C]],done:!1}},"values"),m.Arguments=m.Array,d("keys"),d("values"),d("entries")},e439:function(a,n,l){var c=l("23e7"),d=l("d039"),m=l("fc6a"),M=l("06cf").f,S=l("83ab"),R=d(function(){M(1)}),I=!S||R;c({target:"Object",stat:!0,forced:I,sham:!S},{getOwnPropertyDescriptor:function(B,L){return M(m(B),L)}})},e538:function(a,n,l){var c=l("b622");n.f=c},e893:function(a,n,l){var c=l("5135"),d=l("56ef"),m=l("06cf"),M=l("9bf2");a.exports=function(S,R){for(var I=d(R),O=M.f,B=m.f,L=0;L<I.length;L++){var P=I[L];c(S,P)||O(S,P,B(R,P))}}},e8b5:function(a,n,l){var c=l("c6b6");a.exports=Array.isArray||function(m){return c(m)=="Array"}},e95a:function(a,n,l){var c=l("b622"),d=l("3f8c"),m=c("iterator"),M=Array.prototype;a.exports=function(S){return S!==void 0&&(d.Array===S||M[m]===S)}},f5df:function(a,n,l){var c=l("00ee"),d=l("c6b6"),m=l("b622"),M=m("toStringTag"),S=d(function(){return arguments}())=="Arguments",R=function(I,O){try{return I[O]}catch{}};a.exports=c?d:function(I){var O,B,L;return I===void 0?"Undefined":I===null?"Null":typeof(B=R(O=Object(I),M))=="string"?B:S?d(O):(L=d(O))=="Object"&&typeof O.callee=="function"?"Arguments":L}},f772:function(a,n,l){var c=l("5692"),d=l("90e3"),m=c("keys");a.exports=function(M){return m[M]||(m[M]=d(M))}},fb15:function(a,n,l){if(l.r(n),typeof window<"u"){var c=window.document.currentScript;{var d=l("8875");c=d(),"currentScript"in document||Object.defineProperty(document,"currentScript",{get:d})}var m=c&&c.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);m&&(l.p=m[1])}l("99af"),l("4de4"),l("4160"),l("c975"),l("d81d"),l("a434"),l("159b"),l("a4d3"),l("e439"),l("dbb4"),l("b64b");function M(ve,ie,oe){return ie in ve?Object.defineProperty(ve,ie,{value:oe,enumerable:!0,configurable:!0,writable:!0}):ve[ie]=oe,ve}function S(ve,ie){var oe=Object.keys(ve);if(Object.getOwnPropertySymbols){var Ae=Object.getOwnPropertySymbols(ve);ie&&(Ae=Ae.filter(function(pe){return Object.getOwnPropertyDescriptor(ve,pe).enumerable})),oe.push.apply(oe,Ae)}return oe}function R(ve){for(var ie=1;ie<arguments.length;ie++){var oe=arguments[ie]!=null?arguments[ie]:{};ie%2?S(Object(oe),!0).forEach(function(Ae){M(ve,Ae,oe[Ae])}):Object.getOwnPropertyDescriptors?Object.defineProperties(ve,Object.getOwnPropertyDescriptors(oe)):S(Object(oe)).forEach(function(Ae){Object.defineProperty(ve,Ae,Object.getOwnPropertyDescriptor(oe,Ae))})}return ve}function I(ve){if(Array.isArray(ve))return ve}l("e01a"),l("d28b"),l("e260"),l("d3b7"),l("3ca3"),l("ddb0");function O(ve,ie){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(ve)))){var oe=[],Ae=!0,pe=!1,Se=void 0;try{for(var Ke=ve[Symbol.iterator](),we;!(Ae=(we=Ke.next()).done)&&(oe.push(we.value),!(ie&&oe.length===ie));Ae=!0);}catch(xe){pe=!0,Se=xe}finally{try{!Ae&&Ke.return!=null&&Ke.return()}finally{if(pe)throw Se}}return oe}}l("a630"),l("fb6a"),l("b0c0"),l("25f0");function B(ve,ie){(ie==null||ie>ve.length)&&(ie=ve.length);for(var oe=0,Ae=new Array(ie);oe<ie;oe++)Ae[oe]=ve[oe];return Ae}function L(ve,ie){if(ve){if(typeof ve=="string")return B(ve,ie);var oe=Object.prototype.toString.call(ve).slice(8,-1);if(oe==="Object"&&ve.constructor&&(oe=ve.constructor.name),oe==="Map"||oe==="Set")return Array.from(ve);if(oe==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(oe))return B(ve,ie)}}function P(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function C(ve,ie){return I(ve)||O(ve,ie)||L(ve,ie)||P()}function j(ve){if(Array.isArray(ve))return B(ve)}function $(ve){if(typeof Symbol<"u"&&Symbol.iterator in Object(ve))return Array.from(ve)}function K(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function G(ve){return j(ve)||$(ve)||L(ve)||K()}var te=l("a352"),Q=l.n(te);function W(ve){ve.parentElement!==null&&ve.parentElement.removeChild(ve)}function ce(ve,ie,oe){var Ae=oe===0?ve.children[0]:ve.children[oe-1].nextSibling;ve.insertBefore(ie,Ae)}var _=l("dbf1");l("13d5"),l("4fad"),l("ac1f"),l("5319");function o(ve){var ie=Object.create(null);return function(Ae){var pe=ie[Ae];return pe||(ie[Ae]=ve(Ae))}}var f=/-(\w)/g,u=o(function(ve){return ve.replace(f,function(ie,oe){return oe.toUpperCase()})});l("5db7"),l("73d9");var h=["Start","Add","Remove","Update","End"],p=["Choose","Unchoose","Sort","Filter","Clone"],w=["Move"],x=[w,h,p].flatMap(function(ve){return ve}).map(function(ve){return"on".concat(ve)}),g={manage:w,manageAndEmit:h,emit:p};function s(ve){return x.indexOf(ve)!==-1}l("caad"),l("2ca0");var v=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"];function T(ve){return v.includes(ve)}function k(ve){return["transition-group","TransitionGroup"].includes(ve)}function Y(ve){return["id","class","role","style"].includes(ve)||ve.startsWith("data-")||ve.startsWith("aria-")||ve.startsWith("on")}function ee(ve){return ve.reduce(function(ie,oe){var Ae=C(oe,2),pe=Ae[0],Se=Ae[1];return ie[pe]=Se,ie},{})}function A(ve){var ie=ve.$attrs,oe=ve.componentData,Ae=oe===void 0?{}:oe,pe=ee(Object.entries(ie).filter(function(Se){var Ke=C(Se,2),we=Ke[0];return Ke[1],Y(we)}));return R(R({},pe),Ae)}function E(ve){var ie=ve.$attrs,oe=ve.callBackBuilder,Ae=ee(q(ie));Object.entries(oe).forEach(function(Se){var Ke=C(Se,2),we=Ke[0],xe=Ke[1];g[we].forEach(function(qe){Ae["on".concat(qe)]=xe(qe)})});var pe="[data-draggable]".concat(Ae.draggable||"");return R(R({},Ae),{},{draggable:pe})}function q(ve){return Object.entries(ve).filter(function(ie){var oe=C(ie,2),Ae=oe[0];return oe[1],!Y(Ae)}).map(function(ie){var oe=C(ie,2),Ae=oe[0],pe=oe[1];return[u(Ae),pe]}).filter(function(ie){var oe=C(ie,2),Ae=oe[0];return oe[1],!s(Ae)})}l("c740");function V(ve,ie){if(!(ve instanceof ie))throw new TypeError("Cannot call a class as a function")}function X(ve,ie){for(var oe=0;oe<ie.length;oe++){var Ae=ie[oe];Ae.enumerable=Ae.enumerable||!1,Ae.configurable=!0,"value"in Ae&&(Ae.writable=!0),Object.defineProperty(ve,Ae.key,Ae)}}function b(ve,ie,oe){return ie&&X(ve.prototype,ie),oe&&X(ve,oe),ve}var y=function(ie){var oe=ie.el;return oe},D=function(ie,oe){return ie.__draggable_context=oe},U=function(ie){return ie.__draggable_context},Z=function(){function ve(ie){var oe=ie.nodes,Ae=oe.header,pe=oe.default,Se=oe.footer,Ke=ie.root,we=ie.realList;V(this,ve),this.defaultNodes=pe,this.children=[].concat(G(Ae),G(pe),G(Se)),this.externalComponent=Ke.externalComponent,this.rootTransition=Ke.transition,this.tag=Ke.tag,this.realList=we}return b(ve,[{key:"render",value:function(oe,Ae){var pe=this.tag,Se=this.children,Ke=this._isRootComponent,we=Ke?{default:function(){return Se}}:Se;return oe(pe,Ae,we)}},{key:"updated",value:function(){var oe=this.defaultNodes,Ae=this.realList;oe.forEach(function(pe,Se){D(y(pe),{element:Ae[Se],index:Se})})}},{key:"getUnderlyingVm",value:function(oe){return U(oe)}},{key:"getVmIndexFromDomIndex",value:function(oe,Ae){var pe=this.defaultNodes,Se=pe.length,Ke=Ae.children,we=Ke.item(oe);if(we===null)return Se;var xe=U(we);if(xe)return xe.index;if(Se===0)return 0;var qe=y(pe[0]),ye=G(Ke).findIndex(function(Me){return Me===qe});return oe<ye?0:Se}},{key:"_isRootComponent",get:function(){return this.externalComponent||this.rootTransition}}]),ve}(),F=l("8bbf");function N(ve,ie){var oe=ve[ie];return oe?oe():[]}function H(ve){var ie=ve.$slots,oe=ve.realList,Ae=ve.getKey,pe=oe||[],Se=["header","footer"].map(function(Me){return N(ie,Me)}),Ke=C(Se,2),we=Ke[0],xe=Ke[1],qe=ie.item;if(!qe)throw new Error("draggable element must have an item slot");var ye=pe.flatMap(function(Me,Ve){return qe({element:Me,index:Ve}).map(function(ge){return ge.key=Ae(Me),ge.props=R(R({},ge.props||{}),{},{"data-draggable":!0}),ge})});if(ye.length!==pe.length)throw new Error("Item slot must have only one child");return{header:we,footer:xe,default:ye}}function z(ve){var ie=k(ve),oe=!T(ve)&&!ie;return{transition:ie,externalComponent:oe,tag:oe?Object(F.resolveComponent)(ve):ie?F.TransitionGroup:ve}}function fe(ve){var ie=ve.$slots,oe=ve.tag,Ae=ve.realList,pe=ve.getKey,Se=H({$slots:ie,realList:Ae,getKey:pe}),Ke=z(oe);return new Z({nodes:Se,root:Ke,realList:Ae})}function re(ve,ie){var oe=this;Object(F.nextTick)(function(){return oe.$emit(ve.toLowerCase(),ie)})}function ae(ve){var ie=this;return function(oe,Ae){if(ie.realList!==null)return ie["onDrag".concat(ve)](oe,Ae)}}function be(ve){var ie=this,oe=ae.call(this,ve);return function(Ae,pe){oe.call(ie,Ae,pe),re.call(ie,ve,Ae)}}var J=null,le={list:{type:Array,required:!1,default:null},modelValue:{type:Array,required:!1,default:null},itemKey:{type:[String,Function],required:!0},clone:{type:Function,default:function(ie){return ie}},tag:{type:String,default:"div"},move:{type:Function,default:null},componentData:{type:Object,required:!1,default:null}},se=["update:modelValue","change"].concat(G([].concat(G(g.manageAndEmit),G(g.emit)).map(function(ve){return ve.toLowerCase()}))),ue=Object(F.defineComponent)({name:"draggable",inheritAttrs:!1,props:le,emits:se,data:function(){return{error:!1}},render:function(){try{this.error=!1;var ie=this.$slots,oe=this.$attrs,Ae=this.tag,pe=this.componentData,Se=this.realList,Ke=this.getKey,we=fe({$slots:ie,tag:Ae,realList:Se,getKey:Ke});this.componentStructure=we;var xe=A({$attrs:oe,componentData:pe});return we.render(F.h,xe)}catch(qe){return this.error=!0,Object(F.h)("pre",{style:{color:"red"}},qe.stack)}},created:function(){this.list!==null&&this.modelValue!==null&&_.a.error("modelValue and list props are mutually exclusive! Please set one or another.")},mounted:function(){var ie=this;if(!this.error){var oe=this.$attrs,Ae=this.$el,pe=this.componentStructure;pe.updated();var Se=E({$attrs:oe,callBackBuilder:{manageAndEmit:function(xe){return be.call(ie,xe)},emit:function(xe){return re.bind(ie,xe)},manage:function(xe){return ae.call(ie,xe)}}}),Ke=Ae.nodeType===1?Ae:Ae.parentElement;this._sortable=new Q.a(Ke,Se),this.targetDomElement=Ke,Ke.__draggable_component__=this}},updated:function(){this.componentStructure.updated()},beforeUnmount:function(){this._sortable!==void 0&&this._sortable.destroy()},computed:{realList:function(){var ie=this.list;return ie||this.modelValue},getKey:function(){var ie=this.itemKey;return typeof ie=="function"?ie:function(oe){return oe[ie]}}},watch:{$attrs:{handler:function(ie){var oe=this._sortable;oe&&q(ie).forEach(function(Ae){var pe=C(Ae,2),Se=pe[0],Ke=pe[1];oe.option(Se,Ke)})},deep:!0}},methods:{getUnderlyingVm:function(ie){return this.componentStructure.getUnderlyingVm(ie)||null},getUnderlyingPotencialDraggableComponent:function(ie){return ie.__draggable_component__},emitChanges:function(ie){var oe=this;Object(F.nextTick)(function(){return oe.$emit("change",ie)})},alterList:function(ie){if(this.list){ie(this.list);return}var oe=G(this.modelValue);ie(oe),this.$emit("update:modelValue",oe)},spliceList:function(){var ie=arguments,oe=function(pe){return pe.splice.apply(pe,G(ie))};this.alterList(oe)},updatePosition:function(ie,oe){var Ae=function(Se){return Se.splice(oe,0,Se.splice(ie,1)[0])};this.alterList(Ae)},getRelatedContextFromMoveEvent:function(ie){var oe=ie.to,Ae=ie.related,pe=this.getUnderlyingPotencialDraggableComponent(oe);if(!pe)return{component:pe};var Se=pe.realList,Ke={list:Se,component:pe};if(oe!==Ae&&Se){var we=pe.getUnderlyingVm(Ae)||{};return R(R({},we),Ke)}return Ke},getVmIndexFromDomIndex:function(ie){return this.componentStructure.getVmIndexFromDomIndex(ie,this.targetDomElement)},onDragStart:function(ie){this.context=this.getUnderlyingVm(ie.item),ie.item._underlying_vm_=this.clone(this.context.element),J=ie.item},onDragAdd:function(ie){var oe=ie.item._underlying_vm_;if(oe!==void 0){W(ie.item);var Ae=this.getVmIndexFromDomIndex(ie.newIndex);this.spliceList(Ae,0,oe);var pe={element:oe,newIndex:Ae};this.emitChanges({added:pe})}},onDragRemove:function(ie){if(ce(this.$el,ie.item,ie.oldIndex),ie.pullMode==="clone"){W(ie.clone);return}var oe=this.context,Ae=oe.index,pe=oe.element;this.spliceList(Ae,1);var Se={element:pe,oldIndex:Ae};this.emitChanges({removed:Se})},onDragUpdate:function(ie){W(ie.item),ce(ie.from,ie.item,ie.oldIndex);var oe=this.context.index,Ae=this.getVmIndexFromDomIndex(ie.newIndex);this.updatePosition(oe,Ae);var pe={element:this.context.element,oldIndex:oe,newIndex:Ae};this.emitChanges({moved:pe})},computeFutureIndex:function(ie,oe){if(!ie.element)return 0;var Ae=G(oe.to.children).filter(function(we){return we.style.display!=="none"}),pe=Ae.indexOf(oe.related),Se=ie.component.getVmIndexFromDomIndex(pe),Ke=Ae.indexOf(J)!==-1;return Ke||!oe.willInsertAfter?Se:Se+1},onDragMove:function(ie,oe){var Ae=this.move,pe=this.realList;if(!Ae||!pe)return!0;var Se=this.getRelatedContextFromMoveEvent(ie),Ke=this.computeFutureIndex(Se,ie),we=R(R({},this.context),{},{futureIndex:Ke}),xe=R(R({},ie),{},{relatedContext:Se,draggedContext:we});return Ae(xe,oe)},onDragEnd:function(){J=null}}}),de=ue;n.default=de},fb6a:function(a,n,l){var c=l("23e7"),d=l("861d"),m=l("e8b5"),M=l("23cb"),S=l("50c4"),R=l("fc6a"),I=l("8418"),O=l("b622"),B=l("1dde"),L=l("ae40"),P=B("slice"),C=L("slice",{ACCESSORS:!0,0:0,1:2}),j=O("species"),$=[].slice,K=Math.max;c({target:"Array",proto:!0,forced:!P||!C},{slice:function(te,Q){var W=R(this),ce=S(W.length),_=M(te,ce),o=M(Q===void 0?ce:Q,ce),f,u,h;if(m(W)&&(f=W.constructor,typeof f=="function"&&(f===Array||m(f.prototype))?f=void 0:d(f)&&(f=f[j],f===null&&(f=void 0)),f===Array||f===void 0))return $.call(W,_,o);for(u=new(f===void 0?Array:f)(K(o-_,0)),h=0;_<o;_++,h++)_ in W&&I(u,h,W[_]);return u.length=h,u}})},fc6a:function(a,n,l){var c=l("44ad"),d=l("1d80");a.exports=function(m){return c(d(m))}},fdbc:function(a,n){a.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},fdbf:function(a,n,l){var c=l("4930");a.exports=c&&!Symbol.sham&&typeof Symbol.iterator=="symbol"}}).default})})(jS);var DF=jS.exports;const aG=Fo(DF);var Al={};Al.version="1.0.0";Al.encode=function(t){return t.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")};Al.decode=function(t){return t+=Array(5-t.length%4).join("="),t=t.replace(/\-/g,"+").replace(/\_/g,"/"),new ke.Buffer(t,"base64")};Al.validate=function(t){return/^[A-Za-z0-9\-_]+$/.test(t)};var sG=Al,ct={},Qp={exports:{}},Wd=65536,FF=4294967295;function jF(){throw new Error(`Secure random number generation is not supported by this browser.
-Use Chrome, Firefox or Internet Explorer 11`)}var UF=vt.Buffer,uh=Ze.crypto||Ze.msCrypto;uh&&uh.getRandomValues?Qp.exports=HF:Qp.exports=jF;function HF(e,t){if(e>FF)throw new RangeError("requested too many random bytes");var r=UF.allocUnsafe(e);if(e>0)if(e>Wd)for(var i=0;i<e;i+=Wd)uh.getRandomValues(r.slice(i,i+Wd));else uh.getRandomValues(r);return typeof t=="function"?_e.nextTick(function(){t(null,r)}):r}var Vs=Qp.exports,ev={exports:{}},US=Lr.EventEmitter,Kd,Nb;function qF(){if(Nb)return Kd;Nb=1;function e(O,B){var L=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);B&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),L.push.apply(L,P)}return L}function t(O){for(var B=1;B<arguments.length;B++){var L=arguments[B]!=null?arguments[B]:{};B%2?e(Object(L),!0).forEach(function(P){r(O,P,L[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(L)):e(Object(L)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(L,P))})}return O}function r(O,B,L){return B=l(B),B in O?Object.defineProperty(O,B,{value:L,enumerable:!0,configurable:!0,writable:!0}):O[B]=L,O}function i(O,B){if(!(O instanceof B))throw new TypeError("Cannot call a class as a function")}function a(O,B){for(var L=0;L<B.length;L++){var P=B[L];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,B,L){return B&&a(O.prototype,B),L&&a(O,L),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var B=c(O,"string");return typeof B=="symbol"?B:String(B)}function c(O,B){if(typeof O!="object"||O===null)return O;var L=O[Symbol.toPrimitive];if(L!==void 0){var P=L.call(O,B||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(B==="string"?String:Number)(O)}var d=ke,m=d.Buffer,M=ri,S=M.inspect,R=S&&S.custom||"inspect";function I(O,B,L){m.prototype.copy.call(O,B,L)}return Kd=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(L){var P={data:L,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(L){var P={data:L,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var L=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,L}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(L){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=L+P.data;return C}},{key:"concat",value:function(L){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(L>>>0),C=this.head,j=0;C;)I(C.data,P,j),j+=C.data.length,C=C.next;return P}},{key:"consume",value:function(L,P){var C;return L<this.head.data.length?(C=this.head.data.slice(0,L),this.head.data=this.head.data.slice(L)):L===this.head.data.length?C=this.shift():C=P?this._getString(L):this._getBuffer(L),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(L){var P=this.head,C=1,j=P.data;for(L-=j.length;P=P.next;){var $=P.data,K=L>$.length?$.length:L;if(K===$.length?j+=$:j+=$.slice(0,L),L-=K,L===0){K===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(K));break}++C}return this.length-=C,j}},{key:"_getBuffer",value:function(L){var P=m.allocUnsafe(L),C=this.head,j=1;for(C.data.copy(P),L-=C.data.length;C=C.next;){var $=C.data,K=L>$.length?$.length:L;if($.copy(P,P.length-L,0,K),L-=K,L===0){K===$.length?(++j,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(K));break}++j}return this.length-=j,P}},{key:R,value:function(L,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),Kd}function WF(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,_e.nextTick(tv,this,e)):_e.nextTick(tv,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?_e.nextTick(xu,r):(r._writableState.errorEmitted=!0,_e.nextTick(kb,r,n)):_e.nextTick(kb,r,n):t?(_e.nextTick(xu,r),t(n)):_e.nextTick(xu,r)}),this)}function kb(e,t){tv(e,t),xu(e)}function xu(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function KF(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function tv(e,t){e.emit("error",t)}function VF(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}var HS={destroy:WF,undestroy:KF,errorOrDestroy:VF},La={};function zF(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var qS={};function Ri(e,t,r){r||(r=Error);function i(n,l,c){return typeof t=="string"?t:t(n,l,c)}var a=function(n){zF(l,n);function l(c,d,m){return n.call(this,i(c,d,m))||this}return l}(r);a.prototype.name=r.name,a.prototype.code=e,qS[e]=a}function $b(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(i){return String(i)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function GF(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function YF(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function ZF(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Ri("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Ri("ERR_INVALID_ARG_TYPE",function(e,t,r){var i;typeof t=="string"&&GF(t,"not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";var a;if(YF(e," argument"))a="The ".concat(e," ").concat(i," ").concat($b(t,"type"));else{var n=ZF(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(n," ").concat(i," ").concat($b(t,"type"))}return a+=". Received type ".concat(typeof r),a},TypeError);Ri("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Ri("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Ri("ERR_STREAM_PREMATURE_CLOSE","Premature close");Ri("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Ri("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Ri("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Ri("ERR_STREAM_WRITE_AFTER_END","write after end");Ri("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Ri("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Ri("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");La.codes=qS;var XF=La.codes.ERR_INVALID_OPT_VALUE;function JF(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function QF(e,t,r,i){var a=JF(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=i?r:"highWaterMark";throw new XF(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}var WS={getHighWaterMark:QF},Vd,Db;function KS(){if(Db)return Vd;Db=1,Vd=Q;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){ee(E,A)}}var t;Q.WritableState=G;var r={deprecate:Ws},i=US,a=ke.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function c(A){return a.isBuffer(A)||A instanceof n}var d=HS,m=WS,M=m.getHighWaterMark,S=La.codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,B=S.ERR_STREAM_CANNOT_PIPE,L=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,j=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(Q,i);function K(){}function G(A,E,q){t=t||As(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=M(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var te;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(te=Function.prototype[Symbol.hasInstance],Object.defineProperty(Q,Symbol.hasInstance,{value:function(E){return te.call(this,E)?!0:this!==Q?!1:E&&E._writableState instanceof G}})):te=function(E){return E instanceof this};function Q(A){t=t||As();var E=this instanceof t;if(!E&&!te.call(Q,this))return new Q(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}Q.prototype.pipe=function(){$(this,new B)};function W(A,E){var q=new C;$(A,q),_e.nextTick(E,q)}function ce(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),_e.nextTick(V,X),!1):!0}Q.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&c(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=K),V.ending?W(this,q):(b||ce(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},Q.prototype.cork=function(){this._writableState.corked++},Q.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},Q.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new j(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(Q.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function _(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(Q.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=_(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var D=E.objectMode?1:V.length;E.length+=D;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,D,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new L("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(_e.nextTick(X,V),_e.nextTick(k,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),k(A,E))}function h(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(h(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?_e.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),k(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,D=!0;q;)X[y]=q,q.isBuf||(D=!1),q=q.next,y+=1;X.allBuffers=D,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,F=q.callback,N=E.objectMode?1:U.length;if(f(A,E,!1,N,U,Z,F),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}Q.prototype._write=function(A,E,q){q(new I("_write()"))},Q.prototype._writev=null,Q.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(Q.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),k(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,_e.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function k(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,k(A,E),q&&(E.finished?_e.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function ee(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(Q.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),Q.prototype.destroy=d.destroy,Q.prototype._undestroy=d.undestroy,Q.prototype._destroy=function(A,E){E(A)},Vd}var zd,Fb;function As(){if(Fb)return zd;Fb=1;var e=Object.keys||function(m){var M=[];for(var S in m)M.push(S);return M};zd=l;var t=zS(),r=KS();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",c)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function c(){this._writableState.ended||_e.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(M){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=M,this._writableState.destroyed=M)}}),zd}var jb=La.codes.ERR_STREAM_PREMATURE_CLOSE;function ej(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];e.apply(this,i)}}}function tj(){}function rj(e){return e.setHeader&&typeof e.abort=="function"}function VS(e,t,r){if(typeof t=="function")return VS(e,null,t);t||(t={}),r=ej(r||tj);var i=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||c()},l=e._writableState&&e._writableState.finished,c=function(){a=!1,l=!0,i||r.call(e)},d=e._readableState&&e._readableState.endEmitted,m=function(){i=!1,d=!0,a||r.call(e)},M=function(O){r.call(e,O)},S=function(){var O;if(i&&!d)return(!e._readableState||!e._readableState.ended)&&(O=new jb),r.call(e,O);if(a&&!l)return(!e._writableState||!e._writableState.ended)&&(O=new jb),r.call(e,O)},R=function(){e.req.on("finish",c)};return rj(e)?(e.on("complete",c),e.on("abort",S),e.req?R():e.on("request",R)):a&&!e._writableState&&(e.on("end",n),e.on("close",n)),e.on("end",m),e.on("finish",c),t.error!==!1&&e.on("error",M),e.on("close",S),function(){e.removeListener("complete",c),e.removeListener("abort",S),e.removeListener("request",R),e.req&&e.req.removeListener("finish",c),e.removeListener("end",n),e.removeListener("close",n),e.removeListener("finish",c),e.removeListener("end",m),e.removeListener("error",M),e.removeListener("close",S)}}var Lg=VS,Gd,Ub;function ij(){if(Ub)return Gd;Ub=1;var e;function t(j,$,K){return $=r($),$ in j?Object.defineProperty(j,$,{value:K,enumerable:!0,configurable:!0,writable:!0}):j[$]=K,j}function r(j){var $=i(j,"string");return typeof $=="symbol"?$:String($)}function i(j,$){if(typeof j!="object"||j===null)return j;var K=j[Symbol.toPrimitive];if(K!==void 0){var G=K.call(j,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(j)}var a=Lg,n=Symbol("lastResolve"),l=Symbol("lastReject"),c=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),M=Symbol("handlePromise"),S=Symbol("stream");function R(j,$){return{value:j,done:$}}function I(j){var $=j[n];if($!==null){var K=j[S].read();K!==null&&(j[m]=null,j[n]=null,j[l]=null,$(R(K,!1)))}}function O(j){_e.nextTick(I,j)}function B(j,$){return function(K,G){j.then(function(){if($[d]){K(R(void 0,!0));return}$[M](K,G)},G)}}var L=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,K=this[c];if(K!==null)return Promise.reject(K);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(W,ce){_e.nextTick(function(){$[c]?ce($[c]):W(R(void 0,!0))})});var G=this[m],te;if(G)te=new Promise(B(G,this));else{var Q=this[S].read();if(Q!==null)return Promise.resolve(R(Q,!1));te=new Promise(this[M])}return this[m]=te,te}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(K,G){$[S].destroy(null,function(te){if(te){G(te);return}K(R(void 0,!0))})})}),e),L),C=function($){var K,G=Object.create(P,(K={},t(K,S,{value:$,writable:!0}),t(K,n,{value:null,writable:!0}),t(K,l,{value:null,writable:!0}),t(K,c,{value:null,writable:!0}),t(K,d,{value:$._readableState.endEmitted,writable:!0}),t(K,M,{value:function(Q,W){var ce=G[S].read();ce?(G[m]=null,G[n]=null,G[l]=null,Q(R(ce,!1))):(G[n]=Q,G[l]=W)},writable:!0}),K));return G[m]=null,a($,function(te){if(te&&te.code!=="ERR_STREAM_PREMATURE_CLOSE"){var Q=G[l];Q!==null&&(G[m]=null,G[n]=null,G[l]=null,Q(te)),G[c]=te;return}var W=G[n];W!==null&&(G[m]=null,G[n]=null,G[l]=null,W(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return Gd=C,Gd}var Yd,Hb;function nj(){return Hb||(Hb=1,Yd=function(){throw new Error("Readable.from is not available in the browser")}),Yd}var Zd,qb;function zS(){if(qb)return Zd;qb=1,Zd=W;var e;W.ReadableState=Q,Lr.EventEmitter;var t=function(y,D){return y.listeners(D).length},r=US,i=ke.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var c=ri,d;c&&c.debuglog?d=c.debuglog("stream"):d=function(){};var m=qF(),M=HS,S=WS,R=S.getHighWaterMark,I=La.codes,O=I.ERR_INVALID_ARG_TYPE,B=I.ERR_STREAM_PUSH_AFTER_EOF,L=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,j,$;Ye(W,r);var K=M.errorOrDestroy,G=["error","close","destroy","pause","resume"];function te(b,y,D){if(typeof b.prependListener=="function")return b.prependListener(y,D);!b._events||!b._events[y]?b.on(y,D):Array.isArray(b._events[y])?b._events[y].unshift(D):b._events[y]=[D,b._events[y]]}function Q(b,y,D){e=e||As(),b=b||{},typeof D!="boolean"&&(D=y instanceof e),this.objectMode=!!b.objectMode,D&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",D),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=Jr().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function W(b){if(e=e||As(),!(this instanceof W))return new W(b);var y=this instanceof e;this._readableState=new Q(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(W.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),W.prototype.destroy=M.destroy,W.prototype._undestroy=M.undestroy,W.prototype._destroy=function(b,y){y(b)},W.prototype.push=function(b,y){var D=this._readableState,U;return D.objectMode?U=!0:typeof b=="string"&&(y=y||D.defaultEncoding,y!==D.encoding&&(b=i.from(b,y),y=""),U=!0),ce(this,b,y,!1,U)},W.prototype.unshift=function(b){return ce(this,b,null,!0,!1)};function ce(b,y,D,U,Z){d("readableAddChunk",y);var F=b._readableState;if(y===null)F.reading=!1,p(b,F);else{var N;if(Z||(N=o(F,y)),N)K(b,N);else if(F.objectMode||y&&y.length>0)if(typeof y!="string"&&!F.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)F.endEmitted?K(b,new P):_(b,F,y,!0);else if(F.ended)K(b,new B);else{if(F.destroyed)return!1;F.reading=!1,F.decoder&&!D?(y=F.decoder.write(y),F.objectMode||y.length!==0?_(b,F,y,!1):g(b,F)):_(b,F,y,!1)}else U||(F.reading=!1,g(b,F))}return!F.ended&&(F.length<F.highWaterMark||F.length===0)}function _(b,y,D,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",D)):(y.length+=y.objectMode?1:D.length,U?y.buffer.unshift(D):y.buffer.push(D),y.needReadable&&w(b)),g(b,y)}function o(b,y){var D;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(D=new O("chunk",["string","Buffer","Uint8Array"],y)),D}W.prototype.isPaused=function(){return this._readableState.flowing===!1},W.prototype.setEncoding=function(b){C||(C=Jr().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var D=this._readableState.buffer.head,U="";D!==null;)U+=y.write(D.data),D=D.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function h(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}W.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,D=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=h(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=h(D,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),D!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var D=y.decoder.end();D&&D.length&&(y.buffer.push(D),y.length+=y.objectMode?1:D.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,_e.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,_e.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var D=y.length;if(d("maybeReadMore read 0"),b.read(0),D===y.length)break}y.readingMore=!1}W.prototype._read=function(b){K(this,new L("_read()"))},W.prototype.pipe=function(b,y){var D=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==_e.stdout&&b!==_e.stderr,F=Z?H:se;U.endEmitted?_e.nextTick(F):D.once("end",F),b.on("unpipe",N);function N(ue,de){d("onunpipe"),ue===D&&de&&de.hasUnpiped===!1&&(de.hasUnpiped=!0,re())}function H(){d("onend"),b.end()}var z=v(D);b.on("drain",z);var fe=!1;function re(){d("cleanup"),b.removeListener("close",J),b.removeListener("finish",le),b.removeListener("drain",z),b.removeListener("error",be),b.removeListener("unpipe",N),D.removeListener("end",H),D.removeListener("end",se),D.removeListener("data",ae),fe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}D.on("data",ae);function ae(ue){d("ondata");var de=b.write(ue);d("dest.write",de),de===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!fe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),D.pause())}function be(ue){d("onerror",ue),se(),b.removeListener("error",be),t(b,"error")===0&&K(b,ue)}te(b,"error",be);function J(){b.removeListener("finish",le),se()}b.once("close",J);function le(){d("onfinish"),b.removeListener("close",J),se()}b.once("finish",le);function se(){d("unpipe"),D.unpipe(b)}return b.emit("pipe",D),U.flowing||(d("pipe resume"),D.resume()),b};function v(b){return function(){var D=b._readableState;d("pipeOnDrain",D.awaitDrain),D.awaitDrain&&D.awaitDrain--,D.awaitDrain===0&&t(b,"data")&&(D.flowing=!0,A(b))}}W.prototype.unpipe=function(b){var y=this._readableState,D={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,D),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var F=0;F<Z;F++)U[F].emit("unpipe",this,{hasUnpiped:!1});return this}var N=X(y.pipes,b);return N===-1?this:(y.pipes.splice(N,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,D),this)},W.prototype.on=function(b,y){var D=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||_e.nextTick(k,this)),D},W.prototype.addListener=W.prototype.on,W.prototype.removeListener=function(b,y){var D=r.prototype.removeListener.call(this,b,y);return b==="readable"&&_e.nextTick(T,this),D},W.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&_e.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function k(b){d("readable nexttick read 0"),b.read(0)}W.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,_e.nextTick(ee,b,y))}function ee(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}W.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}W.prototype.wrap=function(b){var y=this,D=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),D.decoder&&!D.ended){var N=D.decoder.end();N&&N.length&&y.push(N)}y.push(null)}),b.on("data",function(N){if(d("wrapped data"),D.decoder&&(N=D.decoder.write(N)),!(D.objectMode&&N==null)&&!(!D.objectMode&&(!N||!N.length))){var H=y.push(N);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var F=0;F<G.length;F++)b.on(G[F],this.emit.bind(this,G[F]));return this._read=function(N){d("wrapped _read",N),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(W.prototype[Symbol.asyncIterator]=function(){return j===void 0&&(j=ij()),j(this)}),Object.defineProperty(W.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(W.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(W.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),W._fromList=E,Object.defineProperty(W.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var D;return y.objectMode?D=y.buffer.shift():!b||b>=y.length?(y.decoder?D=y.buffer.join(""):y.buffer.length===1?D=y.buffer.first():D=y.buffer.concat(y.length),y.buffer.clear()):D=y.buffer.consume(b,y.decoder),D}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,_e.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var D=y._writableState;(!D||D.autoDestroy&&D.finished)&&y.destroy()}}typeof Symbol=="function"&&(W.from=function(b,y){return $===void 0&&($=nj()),$(W,b,y)});function X(b,y){for(var D=0,U=b.length;D<U;D++)if(b[D]===y)return D;return-1}return Zd}var GS=Yn,rc=La.codes,oj=rc.ERR_METHOD_NOT_IMPLEMENTED,aj=rc.ERR_MULTIPLE_CALLBACK,sj=rc.ERR_TRANSFORM_ALREADY_TRANSFORMING,fj=rc.ERR_TRANSFORM_WITH_LENGTH_0,ic=As();Ye(Yn,ic);function lj(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new aj);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function Yn(e){if(!(this instanceof Yn))return new Yn(e);ic.call(this,e),this._transformState={afterTransform:lj.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",uj)}function uj(){var e=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(t,r){Wb(e,t,r)}):Wb(this,null,null)}Yn.prototype.push=function(e,t){return this._transformState.needTransform=!1,ic.prototype.push.call(this,e,t)};Yn.prototype._transform=function(e,t,r){r(new oj("_transform()"))};Yn.prototype._write=function(e,t,r){var i=this._transformState;if(i.writecb=r,i.writechunk=e,i.writeencoding=t,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};Yn.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};Yn.prototype._destroy=function(e,t){ic.prototype._destroy.call(this,e,function(r){t(r)})};function Wb(e,t,r){if(t)return e.emit("error",t);if(r!=null&&e.push(r),e._writableState.length)throw new fj;if(e._transformState.transforming)throw new sj;return e.push(null)}var hj=al,YS=GS;Ye(al,YS);function al(e){if(!(this instanceof al))return new al(e);YS.call(this,e)}al.prototype._transform=function(e,t,r){r(null,e)};var Xd;function cj(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var ZS=La.codes,dj=ZS.ERR_MISSING_ARGS,pj=ZS.ERR_STREAM_DESTROYED;function Kb(e){if(e)throw e}function vj(e){return e.setHeader&&typeof e.abort=="function"}function gj(e,t,r,i){i=cj(i);var a=!1;e.on("close",function(){a=!0}),Xd===void 0&&(Xd=Lg),Xd(e,{readable:t,writable:r},function(l){if(l)return i(l);a=!0,i()});var n=!1;return function(l){if(!a&&!n){if(n=!0,vj(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();i(l||new pj("pipe"))}}}function Vb(e){e()}function mj(e,t){return e.pipe(t)}function yj(e){return!e.length||typeof e[e.length-1]!="function"?Kb:e.pop()}function bj(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=yj(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new dj("streams");var a,n=t.map(function(l,c){var d=c<t.length-1,m=c>0;return gj(l,d,m,function(M){a||(a=M),M&&n.forEach(Vb),!d&&(n.forEach(Vb),i(a))})});return t.reduce(mj)}var wj=bj;(function(e,t){t=e.exports=zS(),t.Stream=t,t.Readable=t,t.Writable=KS(),t.Duplex=As(),t.Transform=GS,t.PassThrough=hj,t.finished=Lg,t.pipeline=wj})(ev,ev.exports);var _j=ev.exports,hh=vt.Buffer,XS=_j.Transform,Mj=Ye;function Sj(e,t){if(!hh.isBuffer(e)&&typeof e!="string")throw new TypeError(t+" must be a string or a buffer")}function Uo(e){XS.call(this),this._block=hh.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}Mj(Uo,XS);Uo.prototype._transform=function(e,t,r){var i=null;try{this.update(e,t)}catch(a){i=a}r(i)};Uo.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(r){t=r}e(t)};Uo.prototype.update=function(e,t){if(Sj(e,"Data"),this._finalized)throw new Error("Digest already called");hh.isBuffer(e)||(e=hh.from(e,t));for(var r=this._block,i=0;this._blockOffset+e.length-i>=this._blockSize;){for(var a=this._blockOffset;a<this._blockSize;)r[a++]=e[i++];this._update(),this._blockOffset=0}for(;i<e.length;)r[this._blockOffset++]=e[i++];for(var n=0,l=e.length*8;l>0;++n)this._length[n]+=l,l=this._length[n]/4294967296|0,l>0&&(this._length[n]-=4294967296*l);return this};Uo.prototype._update=function(){throw new Error("_update is not implemented")};Uo.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();e!==void 0&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t};Uo.prototype._digest=function(){throw new Error("_digest is not implemented")};var JS=Uo,xj=Ye,QS=JS,Ej=vt.Buffer,Rj=new Array(16);function nc(){QS.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}xj(nc,QS);nc.prototype._update=function(){for(var e=Rj,t=0;t<16;++t)e[t]=this._block.readInt32LE(t*4);var r=this._a,i=this._b,a=this._c,n=this._d;r=Sr(r,i,a,n,e[0],3614090360,7),n=Sr(n,r,i,a,e[1],3905402710,12),a=Sr(a,n,r,i,e[2],606105819,17),i=Sr(i,a,n,r,e[3],3250441966,22),r=Sr(r,i,a,n,e[4],4118548399,7),n=Sr(n,r,i,a,e[5],1200080426,12),a=Sr(a,n,r,i,e[6],2821735955,17),i=Sr(i,a,n,r,e[7],4249261313,22),r=Sr(r,i,a,n,e[8],1770035416,7),n=Sr(n,r,i,a,e[9],2336552879,12),a=Sr(a,n,r,i,e[10],4294925233,17),i=Sr(i,a,n,r,e[11],2304563134,22),r=Sr(r,i,a,n,e[12],1804603682,7),n=Sr(n,r,i,a,e[13],4254626195,12),a=Sr(a,n,r,i,e[14],2792965006,17),i=Sr(i,a,n,r,e[15],1236535329,22),r=xr(r,i,a,n,e[1],4129170786,5),n=xr(n,r,i,a,e[6],3225465664,9),a=xr(a,n,r,i,e[11],643717713,14),i=xr(i,a,n,r,e[0],3921069994,20),r=xr(r,i,a,n,e[5],3593408605,5),n=xr(n,r,i,a,e[10],38016083,9),a=xr(a,n,r,i,e[15],3634488961,14),i=xr(i,a,n,r,e[4],3889429448,20),r=xr(r,i,a,n,e[9],568446438,5),n=xr(n,r,i,a,e[14],3275163606,9),a=xr(a,n,r,i,e[3],4107603335,14),i=xr(i,a,n,r,e[8],1163531501,20),r=xr(r,i,a,n,e[13],2850285829,5),n=xr(n,r,i,a,e[2],4243563512,9),a=xr(a,n,r,i,e[7],1735328473,14),i=xr(i,a,n,r,e[12],2368359562,20),r=Er(r,i,a,n,e[5],4294588738,4),n=Er(n,r,i,a,e[8],2272392833,11),a=Er(a,n,r,i,e[11],1839030562,16),i=Er(i,a,n,r,e[14],4259657740,23),r=Er(r,i,a,n,e[1],2763975236,4),n=Er(n,r,i,a,e[4],1272893353,11),a=Er(a,n,r,i,e[7],4139469664,16),i=Er(i,a,n,r,e[10],3200236656,23),r=Er(r,i,a,n,e[13],681279174,4),n=Er(n,r,i,a,e[0],3936430074,11),a=Er(a,n,r,i,e[3],3572445317,16),i=Er(i,a,n,r,e[6],76029189,23),r=Er(r,i,a,n,e[9],3654602809,4),n=Er(n,r,i,a,e[12],3873151461,11),a=Er(a,n,r,i,e[15],530742520,16),i=Er(i,a,n,r,e[2],3299628645,23),r=Rr(r,i,a,n,e[0],4096336452,6),n=Rr(n,r,i,a,e[7],1126891415,10),a=Rr(a,n,r,i,e[14],2878612391,15),i=Rr(i,a,n,r,e[5],4237533241,21),r=Rr(r,i,a,n,e[12],1700485571,6),n=Rr(n,r,i,a,e[3],2399980690,10),a=Rr(a,n,r,i,e[10],4293915773,15),i=Rr(i,a,n,r,e[1],2240044497,21),r=Rr(r,i,a,n,e[8],1873313359,6),n=Rr(n,r,i,a,e[15],4264355552,10),a=Rr(a,n,r,i,e[6],2734768916,15),i=Rr(i,a,n,r,e[13],1309151649,21),r=Rr(r,i,a,n,e[4],4149444226,6),n=Rr(n,r,i,a,e[11],3174756917,10),a=Rr(a,n,r,i,e[2],718787259,15),i=Rr(i,a,n,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+a|0,this._d=this._d+n|0};nc.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Ej.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};function oc(e,t){return e<<t|e>>>32-t}function Sr(e,t,r,i,a,n,l){return oc(e+(t&r|~t&i)+a+n|0,l)+t|0}function xr(e,t,r,i,a,n,l){return oc(e+(t&i|r&~i)+a+n|0,l)+t|0}function Er(e,t,r,i,a,n,l){return oc(e+(t^r^i)+a+n|0,l)+t|0}function Rr(e,t,r,i,a,n,l){return oc(e+(r^(t|~i))+a+n|0,l)+t|0}var Ng=nc,Jd=ke.Buffer,Aj=Ye,ex=JS,Tj=new Array(16),yf=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],bf=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],wf=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],_f=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],Mf=[0,1518500249,1859775393,2400959708,2840853838],Sf=[1352829926,1548603684,1836072691,2053994217,0];function ac(){ex.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}Aj(ac,ex);ac.prototype._update=function(){for(var e=Tj,t=0;t<16;++t)e[t]=this._block.readInt32LE(t*4);for(var r=this._a|0,i=this._b|0,a=this._c|0,n=this._d|0,l=this._e|0,c=this._a|0,d=this._b|0,m=this._c|0,M=this._d|0,S=this._e|0,R=0;R<80;R+=1){var I,O;R<16?(I=zb(r,i,a,n,l,e[yf[R]],Mf[0],wf[R]),O=Xb(c,d,m,M,S,e[bf[R]],Sf[0],_f[R])):R<32?(I=Gb(r,i,a,n,l,e[yf[R]],Mf[1],wf[R]),O=Zb(c,d,m,M,S,e[bf[R]],Sf[1],_f[R])):R<48?(I=Yb(r,i,a,n,l,e[yf[R]],Mf[2],wf[R]),O=Yb(c,d,m,M,S,e[bf[R]],Sf[2],_f[R])):R<64?(I=Zb(r,i,a,n,l,e[yf[R]],Mf[3],wf[R]),O=Gb(c,d,m,M,S,e[bf[R]],Sf[3],_f[R])):(I=Xb(r,i,a,n,l,e[yf[R]],Mf[4],wf[R]),O=zb(c,d,m,M,S,e[bf[R]],Sf[4],_f[R])),r=l,l=n,n=_a(a,10),a=i,i=I,c=S,S=M,M=_a(m,10),m=d,d=O}var B=this._b+a+M|0;this._b=this._c+n+S|0,this._c=this._d+l+c|0,this._d=this._e+r+d|0,this._e=this._a+i+m|0,this._a=B};ac.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Jd.alloc?Jd.alloc(20):new Jd(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};function _a(e,t){return e<<t|e>>>32-t}function zb(e,t,r,i,a,n,l,c){return _a(e+(t^r^i)+n+l|0,c)+a|0}function Gb(e,t,r,i,a,n,l,c){return _a(e+(t&r|~t&i)+n+l|0,c)+a|0}function Yb(e,t,r,i,a,n,l,c){return _a(e+((t|~r)^i)+n+l|0,c)+a|0}function Zb(e,t,r,i,a,n,l,c){return _a(e+(t&i|r&~i)+n+l|0,c)+a|0}function Xb(e,t,r,i,a,n,l,c){return _a(e+(t^(r|~i))+n+l|0,c)+a|0}var kg=ac,tx={exports:{}},rx=vt.Buffer;function sc(e,t){this._block=rx.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}sc.prototype.update=function(e,t){typeof e=="string"&&(t=t||"utf8",e=rx.from(e,t));for(var r=this._block,i=this._blockSize,a=e.length,n=this._len,l=0;l<a;){for(var c=n%i,d=Math.min(a-l,i-c),m=0;m<d;m++)r[c+m]=e[l+m];n+=d,l+=d,n%i===0&&this._update(r)}return this._len+=a,this};sc.prototype.digest=function(e){var t=this._len%this._blockSize;this._block[t]=128,this._block.fill(0,t+1),t>=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=this._len*8;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(r&4294967295)>>>0,a=(r-i)/4294967296;this._block.writeUInt32BE(a,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var n=this._hash();return e?n.toString(e):n};sc.prototype._update=function(){throw new Error("_update must be implemented by subclass")};var zs=sc,Oj=Ye,ix=zs,Ij=vt.Buffer,Pj=[1518500249,1859775393,-1894007588,-899497514],Cj=new Array(80);function Tl(){this.init(),this._w=Cj,ix.call(this,64,56)}Oj(Tl,ix);Tl.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function Bj(e){return e<<5|e>>>27}function Lj(e){return e<<30|e>>>2}function Nj(e,t,r,i){return e===0?t&r|~t&i:e===2?t&r|t&i|r&i:t^r^i}Tl.prototype._update=function(e){for(var t=this._w,r=this._a|0,i=this._b|0,a=this._c|0,n=this._d|0,l=this._e|0,c=0;c<16;++c)t[c]=e.readInt32BE(c*4);for(;c<80;++c)t[c]=t[c-3]^t[c-8]^t[c-14]^t[c-16];for(var d=0;d<80;++d){var m=~~(d/20),M=Bj(r)+Nj(m,i,a,n)+l+t[d]+Pj[m]|0;l=n,n=a,a=Lj(i),i=r,r=M}this._a=r+this._a|0,this._b=i+this._b|0,this._c=a+this._c|0,this._d=n+this._d|0,this._e=l+this._e|0};Tl.prototype._hash=function(){var e=Ij.allocUnsafe(20);return e.writeInt32BE(this._a|0,0),e.writeInt32BE(this._b|0,4),e.writeInt32BE(this._c|0,8),e.writeInt32BE(this._d|0,12),e.writeInt32BE(this._e|0,16),e};var kj=Tl,$j=Ye,nx=zs,Dj=vt.Buffer,Fj=[1518500249,1859775393,-1894007588,-899497514],jj=new Array(80);function Ol(){this.init(),this._w=jj,nx.call(this,64,56)}$j(Ol,nx);Ol.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function Uj(e){return e<<1|e>>>31}function Hj(e){return e<<5|e>>>27}function qj(e){return e<<30|e>>>2}function Wj(e,t,r,i){return e===0?t&r|~t&i:e===2?t&r|t&i|r&i:t^r^i}Ol.prototype._update=function(e){for(var t=this._w,r=this._a|0,i=this._b|0,a=this._c|0,n=this._d|0,l=this._e|0,c=0;c<16;++c)t[c]=e.readInt32BE(c*4);for(;c<80;++c)t[c]=Uj(t[c-3]^t[c-8]^t[c-14]^t[c-16]);for(var d=0;d<80;++d){var m=~~(d/20),M=Hj(r)+Wj(m,i,a,n)+l+t[d]+Fj[m]|0;l=n,n=a,a=qj(i),i=r,r=M}this._a=r+this._a|0,this._b=i+this._b|0,this._c=a+this._c|0,this._d=n+this._d|0,this._e=l+this._e|0};Ol.prototype._hash=function(){var e=Dj.allocUnsafe(20);return e.writeInt32BE(this._a|0,0),e.writeInt32BE(this._b|0,4),e.writeInt32BE(this._c|0,8),e.writeInt32BE(this._d|0,12),e.writeInt32BE(this._e|0,16),e};var Kj=Ol,Vj=Ye,ox=zs,zj=vt.Buffer,Gj=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Yj=new Array(64);function Il(){this.init(),this._w=Yj,ox.call(this,64,56)}Vj(Il,ox);Il.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function Zj(e,t,r){return r^e&(t^r)}function Xj(e,t,r){return e&t|r&(e|t)}function Jj(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function Qj(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function eU(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}function tU(e){return(e>>>17|e<<15)^(e>>>19|e<<13)^e>>>10}Il.prototype._update=function(e){for(var t=this._w,r=this._a|0,i=this._b|0,a=this._c|0,n=this._d|0,l=this._e|0,c=this._f|0,d=this._g|0,m=this._h|0,M=0;M<16;++M)t[M]=e.readInt32BE(M*4);for(;M<64;++M)t[M]=tU(t[M-2])+t[M-7]+eU(t[M-15])+t[M-16]|0;for(var S=0;S<64;++S){var R=m+Qj(l)+Zj(l,c,d)+Gj[S]+t[S]|0,I=Jj(r)+Xj(r,i,a)|0;m=d,d=c,c=l,l=n+R|0,n=a,a=i,i=r,r=R+I|0}this._a=r+this._a|0,this._b=i+this._b|0,this._c=a+this._c|0,this._d=n+this._d|0,this._e=l+this._e|0,this._f=c+this._f|0,this._g=d+this._g|0,this._h=m+this._h|0};Il.prototype._hash=function(){var e=zj.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};var ax=Il,rU=Ye,iU=ax,nU=zs,oU=vt.Buffer,aU=new Array(64);function fc(){this.init(),this._w=aU,nU.call(this,64,56)}rU(fc,iU);fc.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this};fc.prototype._hash=function(){var e=oU.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};var sU=fc,fU=Ye,sx=zs,lU=vt.Buffer,Jb=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],uU=new Array(160);function Pl(){this.init(),this._w=uU,sx.call(this,128,112)}fU(Pl,sx);Pl.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function Qb(e,t,r){return r^e&(t^r)}function ew(e,t,r){return e&t|r&(e|t)}function tw(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function rw(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function hU(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function cU(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function dU(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function pU(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function sr(e,t){return e>>>0<t>>>0?1:0}Pl.prototype._update=function(e){for(var t=this._w,r=this._ah|0,i=this._bh|0,a=this._ch|0,n=this._dh|0,l=this._eh|0,c=this._fh|0,d=this._gh|0,m=this._hh|0,M=this._al|0,S=this._bl|0,R=this._cl|0,I=this._dl|0,O=this._el|0,B=this._fl|0,L=this._gl|0,P=this._hl|0,C=0;C<32;C+=2)t[C]=e.readInt32BE(C*4),t[C+1]=e.readInt32BE(C*4+4);for(;C<160;C+=2){var j=t[C-30],$=t[C-15*2+1],K=hU(j,$),G=cU($,j);j=t[C-2*2],$=t[C-2*2+1];var te=dU(j,$),Q=pU($,j),W=t[C-7*2],ce=t[C-7*2+1],_=t[C-16*2],o=t[C-16*2+1],f=G+ce|0,u=K+W+sr(f,G)|0;f=f+Q|0,u=u+te+sr(f,Q)|0,f=f+o|0,u=u+_+sr(f,o)|0,t[C]=u,t[C+1]=f}for(var h=0;h<160;h+=2){u=t[h],f=t[h+1];var p=ew(r,i,a),w=ew(M,S,R),x=tw(r,M),g=tw(M,r),s=rw(l,O),v=rw(O,l),T=Jb[h],k=Jb[h+1],Y=Qb(l,c,d),ee=Qb(O,B,L),A=P+v|0,E=m+s+sr(A,P)|0;A=A+ee|0,E=E+Y+sr(A,ee)|0,A=A+k|0,E=E+T+sr(A,k)|0,A=A+f|0,E=E+u+sr(A,f)|0;var q=g+w|0,V=x+p+sr(q,g)|0;m=d,P=L,d=c,L=B,c=l,B=O,O=I+A|0,l=n+E+sr(O,I)|0,n=a,I=R,a=i,R=S,i=r,S=M,M=A+q|0,r=E+V+sr(M,A)|0}this._al=this._al+M|0,this._bl=this._bl+S|0,this._cl=this._cl+R|0,this._dl=this._dl+I|0,this._el=this._el+O|0,this._fl=this._fl+B|0,this._gl=this._gl+L|0,this._hl=this._hl+P|0,this._ah=this._ah+r+sr(this._al,M)|0,this._bh=this._bh+i+sr(this._bl,S)|0,this._ch=this._ch+a+sr(this._cl,R)|0,this._dh=this._dh+n+sr(this._dl,I)|0,this._eh=this._eh+l+sr(this._el,O)|0,this._fh=this._fh+c+sr(this._fl,B)|0,this._gh=this._gh+d+sr(this._gl,L)|0,this._hh=this._hh+m+sr(this._hl,P)|0};Pl.prototype._hash=function(){var e=lU.allocUnsafe(64);function t(r,i,a){e.writeInt32BE(r,a),e.writeInt32BE(i,a+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};var fx=Pl,vU=Ye,gU=fx,mU=zs,yU=vt.Buffer,bU=new Array(160);function lc(){this.init(),this._w=bU,mU.call(this,128,112)}vU(lc,gU);lc.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this};lc.prototype._hash=function(){var e=yU.allocUnsafe(48);function t(r,i,a){e.writeInt32BE(r,a),e.writeInt32BE(i,a+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};var wU=lc,Na=tx.exports=function(t){t=t.toLowerCase();var r=Na[t];if(!r)throw new Error(t+" is not supported (we accept pull requests)");return new r};Na.sha=kj;Na.sha1=Kj;Na.sha224=sU;Na.sha256=ax;Na.sha384=wU;Na.sha512=fx;var $g=tx.exports,Qd,iw;function lx(){return iw||(iw=1,Qd=Lr.EventEmitter),Qd}var e0,nw;function _U(){if(nw)return e0;nw=1;function e(O,B){var L=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);B&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),L.push.apply(L,P)}return L}function t(O){for(var B=1;B<arguments.length;B++){var L=arguments[B]!=null?arguments[B]:{};B%2?e(Object(L),!0).forEach(function(P){r(O,P,L[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(L)):e(Object(L)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(L,P))})}return O}function r(O,B,L){return B=l(B),B in O?Object.defineProperty(O,B,{value:L,enumerable:!0,configurable:!0,writable:!0}):O[B]=L,O}function i(O,B){if(!(O instanceof B))throw new TypeError("Cannot call a class as a function")}function a(O,B){for(var L=0;L<B.length;L++){var P=B[L];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,B,L){return B&&a(O.prototype,B),L&&a(O,L),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var B=c(O,"string");return typeof B=="symbol"?B:String(B)}function c(O,B){if(typeof O!="object"||O===null)return O;var L=O[Symbol.toPrimitive];if(L!==void 0){var P=L.call(O,B||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(B==="string"?String:Number)(O)}var d=ke,m=d.Buffer,M=ri,S=M.inspect,R=S&&S.custom||"inspect";function I(O,B,L){m.prototype.copy.call(O,B,L)}return e0=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(L){var P={data:L,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(L){var P={data:L,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var L=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,L}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(L){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=L+P.data;return C}},{key:"concat",value:function(L){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(L>>>0),C=this.head,j=0;C;)I(C.data,P,j),j+=C.data.length,C=C.next;return P}},{key:"consume",value:function(L,P){var C;return L<this.head.data.length?(C=this.head.data.slice(0,L),this.head.data=this.head.data.slice(L)):L===this.head.data.length?C=this.shift():C=P?this._getString(L):this._getBuffer(L),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(L){var P=this.head,C=1,j=P.data;for(L-=j.length;P=P.next;){var $=P.data,K=L>$.length?$.length:L;if(K===$.length?j+=$:j+=$.slice(0,L),L-=K,L===0){K===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(K));break}++C}return this.length-=C,j}},{key:"_getBuffer",value:function(L){var P=m.allocUnsafe(L),C=this.head,j=1;for(C.data.copy(P),L-=C.data.length;C=C.next;){var $=C.data,K=L>$.length?$.length:L;if($.copy(P,P.length-L,0,K),L-=K,L===0){K===$.length?(++j,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(K));break}++j}return this.length-=j,P}},{key:R,value:function(L,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),e0}var t0,ow;function ux(){if(ow)return t0;ow=1;function e(l,c){var d=this,m=this._readableState&&this._readableState.destroyed,M=this._writableState&&this._writableState.destroyed;return m||M?(c?c(l):l&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,_e.nextTick(a,this,l)):_e.nextTick(a,this,l)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(l||null,function(S){!c&&S?d._writableState?d._writableState.errorEmitted?_e.nextTick(r,d):(d._writableState.errorEmitted=!0,_e.nextTick(t,d,S)):_e.nextTick(t,d,S):c?(_e.nextTick(r,d),c(S)):_e.nextTick(r,d)}),this)}function t(l,c){a(l,c),r(l)}function r(l){l._writableState&&!l._writableState.emitClose||l._readableState&&!l._readableState.emitClose||l.emit("close")}function i(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function a(l,c){l.emit("error",c)}function n(l,c){var d=l._readableState,m=l._writableState;d&&d.autoDestroy||m&&m.autoDestroy?l.destroy(c):l.emit("error",c)}return t0={destroy:e,undestroy:i,errorOrDestroy:n},t0}var r0={},aw;function Gs(){if(aw)return r0;aw=1;function e(c,d){c.prototype=Object.create(d.prototype),c.prototype.constructor=c,c.__proto__=d}var t={};function r(c,d,m){m||(m=Error);function M(R,I,O){return typeof d=="string"?d:d(R,I,O)}var S=function(R){e(I,R);function I(O,B,L){return R.call(this,M(O,B,L))||this}return I}(m);S.prototype.name=m.name,S.prototype.code=c,t[c]=S}function i(c,d){if(Array.isArray(c)){var m=c.length;return c=c.map(function(M){return String(M)}),m>2?"one of ".concat(d," ").concat(c.slice(0,m-1).join(", "),", or ")+c[m-1]:m===2?"one of ".concat(d," ").concat(c[0]," or ").concat(c[1]):"of ".concat(d," ").concat(c[0])}else return"of ".concat(d," ").concat(String(c))}function a(c,d,m){return c.substr(!m||m<0?0:+m,d.length)===d}function n(c,d,m){return(m===void 0||m>c.length)&&(m=c.length),c.substring(m-d.length,m)===d}function l(c,d,m){return typeof m!="number"&&(m=0),m+d.length>c.length?!1:c.indexOf(d,m)!==-1}return r("ERR_INVALID_OPT_VALUE",function(c,d){return'The value "'+d+'" is invalid for option "'+c+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(c,d,m){var M;typeof d=="string"&&a(d,"not ")?(M="must not be",d=d.replace(/^not /,"")):M="must be";var S;if(n(c," argument"))S="The ".concat(c," ").concat(M," ").concat(i(d,"type"));else{var R=l(c,".")?"property":"argument";S='The "'.concat(c,'" ').concat(R," ").concat(M," ").concat(i(d,"type"))}return S+=". Received type ".concat(typeof m),S},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(c){return"The "+c+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(c){return"Cannot call "+c+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(c){return"Unknown encoding: "+c},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),r0.codes=t,r0}var i0,sw;function hx(){if(sw)return i0;sw=1;var e=Gs().codes.ERR_INVALID_OPT_VALUE;function t(i,a,n){return i.highWaterMark!=null?i.highWaterMark:a?i[n]:null}function r(i,a,n,l){var c=t(a,l,n);if(c!=null){if(!(isFinite(c)&&Math.floor(c)===c)||c<0){var d=l?n:"highWaterMark";throw new e(d,c)}return Math.floor(c)}return i.objectMode?16:16*1024}return i0={getHighWaterMark:r},i0}var n0,fw;function cx(){if(fw)return n0;fw=1,n0=Q;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){ee(E,A)}}var t;Q.WritableState=G;var r={deprecate:Ws},i=lx(),a=ke.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function c(A){return a.isBuffer(A)||A instanceof n}var d=ux(),m=hx(),M=m.getHighWaterMark,S=Gs().codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,B=S.ERR_STREAM_CANNOT_PIPE,L=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,j=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(Q,i);function K(){}function G(A,E,q){t=t||Ts(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=M(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var te;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(te=Function.prototype[Symbol.hasInstance],Object.defineProperty(Q,Symbol.hasInstance,{value:function(E){return te.call(this,E)?!0:this!==Q?!1:E&&E._writableState instanceof G}})):te=function(E){return E instanceof this};function Q(A){t=t||Ts();var E=this instanceof t;if(!E&&!te.call(Q,this))return new Q(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}Q.prototype.pipe=function(){$(this,new B)};function W(A,E){var q=new C;$(A,q),_e.nextTick(E,q)}function ce(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),_e.nextTick(V,X),!1):!0}Q.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&c(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=K),V.ending?W(this,q):(b||ce(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},Q.prototype.cork=function(){this._writableState.corked++},Q.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},Q.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new j(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(Q.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function _(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(Q.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=_(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var D=E.objectMode?1:V.length;E.length+=D;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,D,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new L("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(_e.nextTick(X,V),_e.nextTick(k,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),k(A,E))}function h(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(h(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?_e.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),k(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,D=!0;q;)X[y]=q,q.isBuf||(D=!1),q=q.next,y+=1;X.allBuffers=D,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,F=q.callback,N=E.objectMode?1:U.length;if(f(A,E,!1,N,U,Z,F),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}Q.prototype._write=function(A,E,q){q(new I("_write()"))},Q.prototype._writev=null,Q.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(Q.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),k(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,_e.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function k(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,k(A,E),q&&(E.finished?_e.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function ee(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(Q.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),Q.prototype.destroy=d.destroy,Q.prototype._undestroy=d.undestroy,Q.prototype._destroy=function(A,E){E(A)},n0}var o0,lw;function Ts(){if(lw)return o0;lw=1;var e=Object.keys||function(m){var M=[];for(var S in m)M.push(S);return M};o0=l;var t=dx(),r=cx();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",c)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function c(){this._writableState.ended||_e.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(M){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=M,this._writableState.destroyed=M)}}),o0}var a0,uw;function Dg(){if(uw)return a0;uw=1;var e=Gs().codes.ERR_STREAM_PREMATURE_CLOSE;function t(n){var l=!1;return function(){if(!l){l=!0;for(var c=arguments.length,d=new Array(c),m=0;m<c;m++)d[m]=arguments[m];n.apply(this,d)}}}function r(){}function i(n){return n.setHeader&&typeof n.abort=="function"}function a(n,l,c){if(typeof l=="function")return a(n,null,l);l||(l={}),c=t(c||r);var d=l.readable||l.readable!==!1&&n.readable,m=l.writable||l.writable!==!1&&n.writable,M=function(){n.writable||R()},S=n._writableState&&n._writableState.finished,R=function(){m=!1,S=!0,d||c.call(n)},I=n._readableState&&n._readableState.endEmitted,O=function(){d=!1,I=!0,m||c.call(n)},B=function(j){c.call(n,j)},L=function(){var j;if(d&&!I)return(!n._readableState||!n._readableState.ended)&&(j=new e),c.call(n,j);if(m&&!S)return(!n._writableState||!n._writableState.ended)&&(j=new e),c.call(n,j)},P=function(){n.req.on("finish",R)};return i(n)?(n.on("complete",R),n.on("abort",L),n.req?P():n.on("request",P)):m&&!n._writableState&&(n.on("end",M),n.on("close",M)),n.on("end",O),n.on("finish",R),l.error!==!1&&n.on("error",B),n.on("close",L),function(){n.removeListener("complete",R),n.removeListener("abort",L),n.removeListener("request",P),n.req&&n.req.removeListener("finish",R),n.removeListener("end",M),n.removeListener("close",M),n.removeListener("finish",R),n.removeListener("end",O),n.removeListener("error",B),n.removeListener("close",L)}}return a0=a,a0}var s0,hw;function MU(){if(hw)return s0;hw=1;var e;function t(j,$,K){return $=r($),$ in j?Object.defineProperty(j,$,{value:K,enumerable:!0,configurable:!0,writable:!0}):j[$]=K,j}function r(j){var $=i(j,"string");return typeof $=="symbol"?$:String($)}function i(j,$){if(typeof j!="object"||j===null)return j;var K=j[Symbol.toPrimitive];if(K!==void 0){var G=K.call(j,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(j)}var a=Dg(),n=Symbol("lastResolve"),l=Symbol("lastReject"),c=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),M=Symbol("handlePromise"),S=Symbol("stream");function R(j,$){return{value:j,done:$}}function I(j){var $=j[n];if($!==null){var K=j[S].read();K!==null&&(j[m]=null,j[n]=null,j[l]=null,$(R(K,!1)))}}function O(j){_e.nextTick(I,j)}function B(j,$){return function(K,G){j.then(function(){if($[d]){K(R(void 0,!0));return}$[M](K,G)},G)}}var L=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,K=this[c];if(K!==null)return Promise.reject(K);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(W,ce){_e.nextTick(function(){$[c]?ce($[c]):W(R(void 0,!0))})});var G=this[m],te;if(G)te=new Promise(B(G,this));else{var Q=this[S].read();if(Q!==null)return Promise.resolve(R(Q,!1));te=new Promise(this[M])}return this[m]=te,te}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(K,G){$[S].destroy(null,function(te){if(te){G(te);return}K(R(void 0,!0))})})}),e),L),C=function($){var K,G=Object.create(P,(K={},t(K,S,{value:$,writable:!0}),t(K,n,{value:null,writable:!0}),t(K,l,{value:null,writable:!0}),t(K,c,{value:null,writable:!0}),t(K,d,{value:$._readableState.endEmitted,writable:!0}),t(K,M,{value:function(Q,W){var ce=G[S].read();ce?(G[m]=null,G[n]=null,G[l]=null,Q(R(ce,!1))):(G[n]=Q,G[l]=W)},writable:!0}),K));return G[m]=null,a($,function(te){if(te&&te.code!=="ERR_STREAM_PREMATURE_CLOSE"){var Q=G[l];Q!==null&&(G[m]=null,G[n]=null,G[l]=null,Q(te)),G[c]=te;return}var W=G[n];W!==null&&(G[m]=null,G[n]=null,G[l]=null,W(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return s0=C,s0}var f0,cw;function SU(){return cw||(cw=1,f0=function(){throw new Error("Readable.from is not available in the browser")}),f0}var l0,dw;function dx(){if(dw)return l0;dw=1,l0=W;var e;W.ReadableState=Q,Lr.EventEmitter;var t=function(y,D){return y.listeners(D).length},r=lx(),i=ke.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var c=ri,d;c&&c.debuglog?d=c.debuglog("stream"):d=function(){};var m=_U(),M=ux(),S=hx(),R=S.getHighWaterMark,I=Gs().codes,O=I.ERR_INVALID_ARG_TYPE,B=I.ERR_STREAM_PUSH_AFTER_EOF,L=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,j,$;Ye(W,r);var K=M.errorOrDestroy,G=["error","close","destroy","pause","resume"];function te(b,y,D){if(typeof b.prependListener=="function")return b.prependListener(y,D);!b._events||!b._events[y]?b.on(y,D):Array.isArray(b._events[y])?b._events[y].unshift(D):b._events[y]=[D,b._events[y]]}function Q(b,y,D){e=e||Ts(),b=b||{},typeof D!="boolean"&&(D=y instanceof e),this.objectMode=!!b.objectMode,D&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",D),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=Jr().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function W(b){if(e=e||Ts(),!(this instanceof W))return new W(b);var y=this instanceof e;this._readableState=new Q(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(W.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),W.prototype.destroy=M.destroy,W.prototype._undestroy=M.undestroy,W.prototype._destroy=function(b,y){y(b)},W.prototype.push=function(b,y){var D=this._readableState,U;return D.objectMode?U=!0:typeof b=="string"&&(y=y||D.defaultEncoding,y!==D.encoding&&(b=i.from(b,y),y=""),U=!0),ce(this,b,y,!1,U)},W.prototype.unshift=function(b){return ce(this,b,null,!0,!1)};function ce(b,y,D,U,Z){d("readableAddChunk",y);var F=b._readableState;if(y===null)F.reading=!1,p(b,F);else{var N;if(Z||(N=o(F,y)),N)K(b,N);else if(F.objectMode||y&&y.length>0)if(typeof y!="string"&&!F.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)F.endEmitted?K(b,new P):_(b,F,y,!0);else if(F.ended)K(b,new B);else{if(F.destroyed)return!1;F.reading=!1,F.decoder&&!D?(y=F.decoder.write(y),F.objectMode||y.length!==0?_(b,F,y,!1):g(b,F)):_(b,F,y,!1)}else U||(F.reading=!1,g(b,F))}return!F.ended&&(F.length<F.highWaterMark||F.length===0)}function _(b,y,D,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",D)):(y.length+=y.objectMode?1:D.length,U?y.buffer.unshift(D):y.buffer.push(D),y.needReadable&&w(b)),g(b,y)}function o(b,y){var D;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(D=new O("chunk",["string","Buffer","Uint8Array"],y)),D}W.prototype.isPaused=function(){return this._readableState.flowing===!1},W.prototype.setEncoding=function(b){C||(C=Jr().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var D=this._readableState.buffer.head,U="";D!==null;)U+=y.write(D.data),D=D.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function h(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}W.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,D=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=h(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=h(D,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),D!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var D=y.decoder.end();D&&D.length&&(y.buffer.push(D),y.length+=y.objectMode?1:D.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,_e.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,_e.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var D=y.length;if(d("maybeReadMore read 0"),b.read(0),D===y.length)break}y.readingMore=!1}W.prototype._read=function(b){K(this,new L("_read()"))},W.prototype.pipe=function(b,y){var D=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==_e.stdout&&b!==_e.stderr,F=Z?H:se;U.endEmitted?_e.nextTick(F):D.once("end",F),b.on("unpipe",N);function N(ue,de){d("onunpipe"),ue===D&&de&&de.hasUnpiped===!1&&(de.hasUnpiped=!0,re())}function H(){d("onend"),b.end()}var z=v(D);b.on("drain",z);var fe=!1;function re(){d("cleanup"),b.removeListener("close",J),b.removeListener("finish",le),b.removeListener("drain",z),b.removeListener("error",be),b.removeListener("unpipe",N),D.removeListener("end",H),D.removeListener("end",se),D.removeListener("data",ae),fe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}D.on("data",ae);function ae(ue){d("ondata");var de=b.write(ue);d("dest.write",de),de===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!fe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),D.pause())}function be(ue){d("onerror",ue),se(),b.removeListener("error",be),t(b,"error")===0&&K(b,ue)}te(b,"error",be);function J(){b.removeListener("finish",le),se()}b.once("close",J);function le(){d("onfinish"),b.removeListener("close",J),se()}b.once("finish",le);function se(){d("unpipe"),D.unpipe(b)}return b.emit("pipe",D),U.flowing||(d("pipe resume"),D.resume()),b};function v(b){return function(){var D=b._readableState;d("pipeOnDrain",D.awaitDrain),D.awaitDrain&&D.awaitDrain--,D.awaitDrain===0&&t(b,"data")&&(D.flowing=!0,A(b))}}W.prototype.unpipe=function(b){var y=this._readableState,D={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,D),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var F=0;F<Z;F++)U[F].emit("unpipe",this,{hasUnpiped:!1});return this}var N=X(y.pipes,b);return N===-1?this:(y.pipes.splice(N,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,D),this)},W.prototype.on=function(b,y){var D=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||_e.nextTick(k,this)),D},W.prototype.addListener=W.prototype.on,W.prototype.removeListener=function(b,y){var D=r.prototype.removeListener.call(this,b,y);return b==="readable"&&_e.nextTick(T,this),D},W.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&_e.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function k(b){d("readable nexttick read 0"),b.read(0)}W.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,_e.nextTick(ee,b,y))}function ee(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}W.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}W.prototype.wrap=function(b){var y=this,D=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),D.decoder&&!D.ended){var N=D.decoder.end();N&&N.length&&y.push(N)}y.push(null)}),b.on("data",function(N){if(d("wrapped data"),D.decoder&&(N=D.decoder.write(N)),!(D.objectMode&&N==null)&&!(!D.objectMode&&(!N||!N.length))){var H=y.push(N);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var F=0;F<G.length;F++)b.on(G[F],this.emit.bind(this,G[F]));return this._read=function(N){d("wrapped _read",N),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(W.prototype[Symbol.asyncIterator]=function(){return j===void 0&&(j=MU()),j(this)}),Object.defineProperty(W.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(W.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(W.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),W._fromList=E,Object.defineProperty(W.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var D;return y.objectMode?D=y.buffer.shift():!b||b>=y.length?(y.decoder?D=y.buffer.join(""):y.buffer.length===1?D=y.buffer.first():D=y.buffer.concat(y.length),y.buffer.clear()):D=y.buffer.consume(b,y.decoder),D}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,_e.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var D=y._writableState;(!D||D.autoDestroy&&D.finished)&&y.destroy()}}typeof Symbol=="function"&&(W.from=function(b,y){return $===void 0&&($=SU()),$(W,b,y)});function X(b,y){for(var D=0,U=b.length;D<U;D++)if(b[D]===y)return D;return-1}return l0}var u0,pw;function px(){if(pw)return u0;pw=1,u0=c;var e=Gs().codes,t=e.ERR_METHOD_NOT_IMPLEMENTED,r=e.ERR_MULTIPLE_CALLBACK,i=e.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=e.ERR_TRANSFORM_WITH_LENGTH_0,n=Ts();Ye(c,n);function l(M,S){var R=this._transformState;R.transforming=!1;var I=R.writecb;if(I===null)return this.emit("error",new r);R.writechunk=null,R.writecb=null,S!=null&&this.push(S),I(M);var O=this._readableState;O.reading=!1,(O.needReadable||O.length<O.highWaterMark)&&this._read(O.highWaterMark)}function c(M){if(!(this instanceof c))return new c(M);n.call(this,M),this._transformState={afterTransform:l.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,M&&(typeof M.transform=="function"&&(this._transform=M.transform),typeof M.flush=="function"&&(this._flush=M.flush)),this.on("prefinish",d)}function d(){var M=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(S,R){m(M,S,R)}):m(this,null,null)}c.prototype.push=function(M,S){return this._transformState.needTransform=!1,n.prototype.push.call(this,M,S)},c.prototype._transform=function(M,S,R){R(new t("_transform()"))},c.prototype._write=function(M,S,R){var I=this._transformState;if(I.writecb=R,I.writechunk=M,I.writeencoding=S,!I.transforming){var O=this._readableState;(I.needTransform||O.needReadable||O.length<O.highWaterMark)&&this._read(O.highWaterMark)}},c.prototype._read=function(M){var S=this._transformState;S.writechunk!==null&&!S.transforming?(S.transforming=!0,this._transform(S.writechunk,S.writeencoding,S.afterTransform)):S.needTransform=!0},c.prototype._destroy=function(M,S){n.prototype._destroy.call(this,M,function(R){S(R)})};function m(M,S,R){if(S)return M.emit("error",S);if(R!=null&&M.push(R),M._writableState.length)throw new a;if(M._transformState.transforming)throw new i;return M.push(null)}return u0}var h0,vw;function xU(){if(vw)return h0;vw=1,h0=t;var e=px();Ye(t,e);function t(r){if(!(this instanceof t))return new t(r);e.call(this,r)}return t.prototype._transform=function(r,i,a){a(null,r)},h0}var c0,gw;function EU(){if(gw)return c0;gw=1;var e;function t(R){var I=!1;return function(){I||(I=!0,R.apply(void 0,arguments))}}var r=Gs().codes,i=r.ERR_MISSING_ARGS,a=r.ERR_STREAM_DESTROYED;function n(R){if(R)throw R}function l(R){return R.setHeader&&typeof R.abort=="function"}function c(R,I,O,B){B=t(B);var L=!1;R.on("close",function(){L=!0}),e===void 0&&(e=Dg()),e(R,{readable:I,writable:O},function(C){if(C)return B(C);L=!0,B()});var P=!1;return function(C){if(!L&&!P){if(P=!0,l(R))return R.abort();if(typeof R.destroy=="function")return R.destroy();B(C||new a("pipe"))}}}function d(R){R()}function m(R,I){return R.pipe(I)}function M(R){return!R.length||typeof R[R.length-1]!="function"?n:R.pop()}function S(){for(var R=arguments.length,I=new Array(R),O=0;O<R;O++)I[O]=arguments[O];var B=M(I);if(Array.isArray(I[0])&&(I=I[0]),I.length<2)throw new i("streams");var L,P=I.map(function(C,j){var $=j<I.length-1,K=j>0;return c(C,$,K,function(G){L||(L=G),G&&P.forEach(d),!$&&(P.forEach(d),B(L))})});return I.reduce(m)}return c0=S,c0}var RU=yi,Fg=Lr.EventEmitter,AU=Ye;AU(yi,Fg);yi.Readable=dx();yi.Writable=cx();yi.Duplex=Ts();yi.Transform=px();yi.PassThrough=xU();yi.finished=Dg();yi.pipeline=EU();yi.Stream=yi;function yi(){Fg.call(this)}yi.prototype.pipe=function(e,t){var r=this;function i(M){e.writable&&e.write(M)===!1&&r.pause&&r.pause()}r.on("data",i);function a(){r.readable&&r.resume&&r.resume()}e.on("drain",a),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",l),r.on("close",c));var n=!1;function l(){n||(n=!0,e.end())}function c(){n||(n=!0,typeof e.destroy=="function"&&e.destroy())}function d(M){if(m(),Fg.listenerCount(this,"error")===0)throw M}r.on("error",d),e.on("error",d);function m(){r.removeListener("data",i),e.removeListener("drain",a),r.removeListener("end",l),r.removeListener("close",c),r.removeListener("error",d),e.removeListener("error",d),r.removeListener("end",m),r.removeListener("close",m),e.removeListener("close",m)}return r.on("end",m),r.on("close",m),e.on("close",m),e.emit("pipe",r),e};var vx=vt.Buffer,gx=RU.Transform,TU=Jr().StringDecoder,OU=Ye;function Ki(e){gx.call(this),this.hashMode=typeof e=="string",this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}OU(Ki,gx);Ki.prototype.update=function(e,t,r){typeof e=="string"&&(e=vx.from(e,t));var i=this._update(e);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)};Ki.prototype.setAutoPadding=function(){};Ki.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")};Ki.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")};Ki.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")};Ki.prototype._transform=function(e,t,r){var i;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(a){i=a}finally{r(i)}};Ki.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(r){t=r}e(t)};Ki.prototype._finalOrDigest=function(e){var t=this.__final()||vx.alloc(0);return e&&(t=this._toString(t,e,!0)),t};Ki.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new TU(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var i=this._decoder.write(e);return r&&(i+=this._decoder.end()),i};var Ho=Ki,IU=Ye,PU=Ng,CU=kg,BU=$g,mx=Ho;function uc(e){mx.call(this,"digest"),this._hash=e}IU(uc,mx);uc.prototype._update=function(e){this._hash.update(e)};uc.prototype._final=function(){return this._hash.digest()};var Cl=function(t){return t=t.toLowerCase(),t==="md5"?new PU:t==="rmd160"||t==="ripemd160"?new CU:new uc(BU(t))},LU=Ye,ra=vt.Buffer,yx=Ho,NU=ra.alloc(128),Va=64;function hc(e,t){yx.call(this,"digest"),typeof t=="string"&&(t=ra.from(t)),this._alg=e,this._key=t,t.length>Va?t=e(t):t.length<Va&&(t=ra.concat([t,NU],Va));for(var r=this._ipad=ra.allocUnsafe(Va),i=this._opad=ra.allocUnsafe(Va),a=0;a<Va;a++)r[a]=t[a]^54,i[a]=t[a]^92;this._hash=[r]}LU(hc,yx);hc.prototype._update=function(e){this._hash.push(e)};hc.prototype._final=function(){var e=this._alg(ra.concat(this._hash));return this._alg(ra.concat([this._opad,e]))};var kU=hc,$U=Ng,bx=function(e){return new $U().update(e).digest()},DU=Ye,FU=kU,_x=Ho,Pf=vt.Buffer,jU=bx,rv=kg,iv=$g,UU=Pf.alloc(128);function sl(e,t){_x.call(this,"digest"),typeof t=="string"&&(t=Pf.from(t));var r=e==="sha512"||e==="sha384"?128:64;if(this._alg=e,this._key=t,t.length>r){var i=e==="rmd160"?new rv:iv(e);t=i.update(t).digest()}else t.length<r&&(t=Pf.concat([t,UU],r));for(var a=this._ipad=Pf.allocUnsafe(r),n=this._opad=Pf.allocUnsafe(r),l=0;l<r;l++)a[l]=t[l]^54,n[l]=t[l]^92;this._hash=e==="rmd160"?new rv:iv(e),this._hash.update(a)}DU(sl,_x);sl.prototype._update=function(e){this._hash.update(e)};sl.prototype._final=function(){var e=this._hash.digest(),t=this._alg==="rmd160"?new rv:iv(this._alg);return t.update(this._opad).update(e).digest()};var Mx=function(t,r){return t=t.toLowerCase(),t==="rmd160"||t==="ripemd160"?new sl("rmd160",r):t==="md5"?new FU(jU,r):new sl(t,r)};const HU={sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},qU={sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},WU={sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},KU={sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},VU={sign:"ecdsa",hash:"sha256",id:""},zU={sign:"ecdsa",hash:"sha224",id:""},GU={sign:"ecdsa",hash:"sha384",id:""},YU={sign:"ecdsa",hash:"sha512",id:""},ZU={sign:"dsa",hash:"sha1",id:""},XU={sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},JU={sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},Sx={sha224WithRSAEncryption:HU,"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:qU,"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:WU,"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:KU,"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:VU,sha224:zU,sha384:GU,sha512:YU,"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:ZU,"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:XU,"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:JU,"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}};var QU=Sx,cc={},eH=Math.pow(2,30)-1,xx=function(e,t){if(typeof e!="number")throw new TypeError("Iterations not a number");if(e<0)throw new TypeError("Bad iterations");if(typeof t!="number")throw new TypeError("Key length not a number");if(t<0||t>eH||t!==t)throw new TypeError("Bad key length")},Eu;if(Ze.process&&Ze.process.browser)Eu="utf-8";else if(Ze.process&&Ze.process.version){var tH=parseInt(_e.version.split(".")[0].slice(1),10);Eu=tH>=6?"utf-8":"binary"}else Eu="utf-8";var Ex=Eu,d0=vt.Buffer,Rx=function(e,t,r){if(d0.isBuffer(e))return e;if(typeof e=="string")return d0.from(e,t);if(ArrayBuffer.isView(e))return d0.from(e.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")},rH=bx,iH=kg,nH=$g,ia=vt.Buffer,oH=xx,mw=Ex,yw=Rx,aH=ia.alloc(128),Ru={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function Ax(e,t,r){var i=sH(e),a=e==="sha512"||e==="sha384"?128:64;t.length>a?t=i(t):t.length<a&&(t=ia.concat([t,aH],a));for(var n=ia.allocUnsafe(a+Ru[e]),l=ia.allocUnsafe(a+Ru[e]),c=0;c<a;c++)n[c]=t[c]^54,l[c]=t[c]^92;var d=ia.allocUnsafe(a+r+4);n.copy(d,0,0,a),this.ipad1=d,this.ipad2=n,this.opad=l,this.alg=e,this.blocksize=a,this.hash=i,this.size=Ru[e]}Ax.prototype.run=function(e,t){e.copy(t,this.blocksize);var r=this.hash(t);return r.copy(this.opad,this.blocksize),this.hash(this.opad)};function sH(e){function t(i){return nH(e).update(i).digest()}function r(i){return new iH().update(i).digest()}return e==="rmd160"||e==="ripemd160"?r:e==="md5"?rH:t}function fH(e,t,r,i,a){oH(r,i),e=yw(e,mw,"Password"),t=yw(t,mw,"Salt"),a=a||"sha1";var n=new Ax(a,e,t.length),l=ia.allocUnsafe(i),c=ia.allocUnsafe(t.length+4);t.copy(c,0,0,t.length);for(var d=0,m=Ru[a],M=Math.ceil(i/m),S=1;S<=M;S++){c.writeUInt32BE(S,t.length);for(var R=n.run(c,n.ipad1),I=R,O=1;O<r;O++){I=n.run(I,n.ipad2);for(var B=0;B<m;B++)R[B]^=I[B]}R.copy(l,d),d+=m}return l}var Tx=fH,Ox=vt.Buffer,lH=xx,bw=Ex,ww=Tx,_w=Rx,iu,Kf=Ze.crypto&&Ze.crypto.subtle,uH={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},p0=[];function hH(e){if(Ze.process&&!Ze.process.browser||!Kf||!Kf.importKey||!Kf.deriveBits)return Promise.resolve(!1);if(p0[e]!==void 0)return p0[e];iu=iu||Ox.alloc(8);var t=Ix(iu,iu,10,128,e).then(function(){return!0}).catch(function(){return!1});return p0[e]=t,t}var zo;function nv(){return zo||(Ze.process&&Ze.process.nextTick?zo=Ze.process.nextTick:Ze.queueMicrotask?zo=Ze.queueMicrotask:Ze.setImmediate?zo=Ze.setImmediate:zo=Ze.setTimeout,zo)}function Ix(e,t,r,i,a){return Kf.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]).then(function(n){return Kf.deriveBits({name:"PBKDF2",salt:t,iterations:r,hash:{name:a}},n,i<<3)}).then(function(n){return Ox.from(n)})}function cH(e,t){e.then(function(r){nv()(function(){t(null,r)})},function(r){nv()(function(){t(r)})})}var dH=function(e,t,r,i,a,n){typeof a=="function"&&(n=a,a=void 0),a=a||"sha1";var l=uH[a.toLowerCase()];if(!l||typeof Ze.Promise!="function"){nv()(function(){var c;try{c=ww(e,t,r,i,a)}catch(d){return n(d)}n(null,c)});return}if(lH(r,i),e=_w(e,bw,"Password"),t=_w(t,bw,"Salt"),typeof n!="function")throw new Error("No callback provided to pbkdf2");cH(hH(l).then(function(c){return c?Ix(e,t,r,i,l):ww(e,t,r,i,a)}),n)};cc.pbkdf2=dH;cc.pbkdf2Sync=Tx;var Hi={},Ys={},ii={};ii.readUInt32BE=function(t,r){var i=t[0+r]<<24|t[1+r]<<16|t[2+r]<<8|t[3+r];return i>>>0};ii.writeUInt32BE=function(t,r,i){t[0+i]=r>>>24,t[1+i]=r>>>16&255,t[2+i]=r>>>8&255,t[3+i]=r&255};ii.ip=function(t,r,i,a){for(var n=0,l=0,c=6;c>=0;c-=2){for(var d=0;d<=24;d+=8)n<<=1,n|=r>>>d+c&1;for(var d=0;d<=24;d+=8)n<<=1,n|=t>>>d+c&1}for(var c=6;c>=0;c-=2){for(var d=1;d<=25;d+=8)l<<=1,l|=r>>>d+c&1;for(var d=1;d<=25;d+=8)l<<=1,l|=t>>>d+c&1}i[a+0]=n>>>0,i[a+1]=l>>>0};ii.rip=function(t,r,i,a){for(var n=0,l=0,c=0;c<4;c++)for(var d=24;d>=0;d-=8)n<<=1,n|=r>>>d+c&1,n<<=1,n|=t>>>d+c&1;for(var c=4;c<8;c++)for(var d=24;d>=0;d-=8)l<<=1,l|=r>>>d+c&1,l<<=1,l|=t>>>d+c&1;i[a+0]=n>>>0,i[a+1]=l>>>0};ii.pc1=function(t,r,i,a){for(var n=0,l=0,c=7;c>=5;c--){for(var d=0;d<=24;d+=8)n<<=1,n|=r>>d+c&1;for(var d=0;d<=24;d+=8)n<<=1,n|=t>>d+c&1}for(var d=0;d<=24;d+=8)n<<=1,n|=r>>d+c&1;for(var c=1;c<=3;c++){for(var d=0;d<=24;d+=8)l<<=1,l|=r>>d+c&1;for(var d=0;d<=24;d+=8)l<<=1,l|=t>>d+c&1}for(var d=0;d<=24;d+=8)l<<=1,l|=t>>d+c&1;i[a+0]=n>>>0,i[a+1]=l>>>0};ii.r28shl=function(t,r){return t<<r&268435455|t>>>28-r};var nu=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];ii.pc2=function(t,r,i,a){for(var n=0,l=0,c=nu.length>>>1,d=0;d<c;d++)n<<=1,n|=t>>>nu[d]&1;for(var d=c;d<nu.length;d++)l<<=1,l|=r>>>nu[d]&1;i[a+0]=n>>>0,i[a+1]=l>>>0};ii.expand=function(t,r,i){var a=0,n=0;a=(t&1)<<5|t>>>27;for(var l=23;l>=15;l-=4)a<<=6,a|=t>>>l&63;for(var l=11;l>=3;l-=4)n|=t>>>l&63,n<<=6;n|=(t&31)<<1|t>>>31,r[i+0]=a>>>0,r[i+1]=n>>>0};var Mw=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];ii.substitute=function(t,r){for(var i=0,a=0;a<4;a++){var n=t>>>18-a*6&63,l=Mw[a*64+n];i<<=4,i|=l}for(var a=0;a<4;a++){var n=r>>>18-a*6&63,l=Mw[4*64+a*64+n];i<<=4,i|=l}return i>>>0};var Sw=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];ii.permute=function(t){for(var r=0,i=0;i<Sw.length;i++)r<<=1,r|=t>>>Sw[i]&1;return r>>>0};ii.padSplit=function(t,r,i){for(var a=t.toString(2);a.length<r;)a="0"+a;for(var n=[],l=0;l<r;l+=i)n.push(a.slice(l,l+i));return n.join(" ")};var Ai=Px;function Px(e,t){if(!e)throw new Error(t||"Assertion failed")}Px.equal=function(t,r,i){if(t!=r)throw new Error(i||"Assertion failed: "+t+" != "+r)};var pH=Ai;function Ti(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0,this.padding=e.padding!==!1}var jg=Ti;Ti.prototype._init=function(){};Ti.prototype.update=function(t){return t.length===0?[]:this.type==="decrypt"?this._updateDecrypt(t):this._updateEncrypt(t)};Ti.prototype._buffer=function(t,r){for(var i=Math.min(this.buffer.length-this.bufferOff,t.length-r),a=0;a<i;a++)this.buffer[this.bufferOff+a]=t[r+a];return this.bufferOff+=i,i};Ti.prototype._flushBuffer=function(t,r){return this._update(this.buffer,0,t,r),this.bufferOff=0,this.blockSize};Ti.prototype._updateEncrypt=function(t){var r=0,i=0,a=(this.bufferOff+t.length)/this.blockSize|0,n=new Array(a*this.blockSize);this.bufferOff!==0&&(r+=this._buffer(t,r),this.bufferOff===this.buffer.length&&(i+=this._flushBuffer(n,i)));for(var l=t.length-(t.length-r)%this.blockSize;r<l;r+=this.blockSize)this._update(t,r,n,i),i+=this.blockSize;for(;r<t.length;r++,this.bufferOff++)this.buffer[this.bufferOff]=t[r];return n};Ti.prototype._updateDecrypt=function(t){for(var r=0,i=0,a=Math.ceil((this.bufferOff+t.length)/this.blockSize)-1,n=new Array(a*this.blockSize);a>0;a--)r+=this._buffer(t,r),i+=this._flushBuffer(n,i);return r+=this._buffer(t,r),n};Ti.prototype.final=function(t){var r;t&&(r=this.update(t));var i;return this.type==="encrypt"?i=this._finalEncrypt():i=this._finalDecrypt(),r?r.concat(i):i};Ti.prototype._pad=function(t,r){if(r===0)return!1;for(;r<t.length;)t[r++]=0;return!0};Ti.prototype._finalEncrypt=function(){if(!this._pad(this.buffer,this.bufferOff))return[];var t=new Array(this.blockSize);return this._update(this.buffer,0,t,0),t};Ti.prototype._unpad=function(t){return t};Ti.prototype._finalDecrypt=function(){pH.equal(this.bufferOff,this.blockSize,"Not enough data to decrypt");var t=new Array(this.blockSize);return this._flushBuffer(t,0),this._unpad(t)};var Cx=Ai,vH=Ye,or=ii,Bx=jg;function gH(){this.tmp=new Array(2),this.keys=null}function gn(e){Bx.call(this,e);var t=new gH;this._desState=t,this.deriveKeys(t,e.key)}vH(gn,Bx);var Lx=gn;gn.create=function(t){return new gn(t)};var mH=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];gn.prototype.deriveKeys=function(t,r){t.keys=new Array(16*2),Cx.equal(r.length,this.blockSize,"Invalid key length");var i=or.readUInt32BE(r,0),a=or.readUInt32BE(r,4);or.pc1(i,a,t.tmp,0),i=t.tmp[0],a=t.tmp[1];for(var n=0;n<t.keys.length;n+=2){var l=mH[n>>>1];i=or.r28shl(i,l),a=or.r28shl(a,l),or.pc2(i,a,t.keys,n)}};gn.prototype._update=function(t,r,i,a){var n=this._desState,l=or.readUInt32BE(t,r),c=or.readUInt32BE(t,r+4);or.ip(l,c,n.tmp,0),l=n.tmp[0],c=n.tmp[1],this.type==="encrypt"?this._encrypt(n,l,c,n.tmp,0):this._decrypt(n,l,c,n.tmp,0),l=n.tmp[0],c=n.tmp[1],or.writeUInt32BE(i,l,a),or.writeUInt32BE(i,c,a+4)};gn.prototype._pad=function(t,r){if(this.padding===!1)return!1;for(var i=t.length-r,a=r;a<t.length;a++)t[a]=i;return!0};gn.prototype._unpad=function(t){if(this.padding===!1)return t;for(var r=t[t.length-1],i=t.length-r;i<t.length;i++)Cx.equal(t[i],r);return t.slice(0,t.length-r)};gn.prototype._encrypt=function(t,r,i,a,n){for(var l=r,c=i,d=0;d<t.keys.length;d+=2){var m=t.keys[d],M=t.keys[d+1];or.expand(c,t.tmp,0),m^=t.tmp[0],M^=t.tmp[1];var S=or.substitute(m,M),R=or.permute(S),I=c;c=(l^R)>>>0,l=I}or.rip(c,l,a,n)};gn.prototype._decrypt=function(t,r,i,a,n){for(var l=i,c=r,d=t.keys.length-2;d>=0;d-=2){var m=t.keys[d],M=t.keys[d+1];or.expand(l,t.tmp,0),m^=t.tmp[0],M^=t.tmp[1];var S=or.substitute(m,M),R=or.permute(S),I=l;l=(c^R)>>>0,c=I}or.rip(l,c,a,n)};var Nx={},yH=Ai,bH=Ye,ch={};function wH(e){yH.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var t=0;t<this.iv.length;t++)this.iv[t]=e[t]}function _H(e){function t(n){e.call(this,n),this._cbcInit()}bH(t,e);for(var r=Object.keys(ch),i=0;i<r.length;i++){var a=r[i];t.prototype[a]=ch[a]}return t.create=function(l){return new t(l)},t}Nx.instantiate=_H;ch._cbcInit=function(){var t=new wH(this.options.iv);this._cbcState=t};ch._update=function(t,r,i,a){var n=this._cbcState,l=this.constructor.super_.prototype,c=n.iv;if(this.type==="encrypt"){for(var d=0;d<this.blockSize;d++)c[d]^=t[r+d];l._update.call(this,c,0,i,a);for(var d=0;d<this.blockSize;d++)c[d]=i[a+d]}else{l._update.call(this,t,r,i,a);for(var d=0;d<this.blockSize;d++)i[a+d]^=c[d];for(var d=0;d<this.blockSize;d++)c[d]=t[r+d]}};var MH=Ai,SH=Ye,kx=jg,yo=Lx;function xH(e,t){MH.equal(t.length,24,"Invalid key length");var r=t.slice(0,8),i=t.slice(8,16),a=t.slice(16,24);e==="encrypt"?this.ciphers=[yo.create({type:"encrypt",key:r}),yo.create({type:"decrypt",key:i}),yo.create({type:"encrypt",key:a})]:this.ciphers=[yo.create({type:"decrypt",key:a}),yo.create({type:"encrypt",key:i}),yo.create({type:"decrypt",key:r})]}function Ma(e){kx.call(this,e);var t=new xH(this.type,this.options.key);this._edeState=t}SH(Ma,kx);var EH=Ma;Ma.create=function(t){return new Ma(t)};Ma.prototype._update=function(t,r,i,a){var n=this._edeState;n.ciphers[0]._update(t,r,i,a),n.ciphers[1]._update(i,a,i,a),n.ciphers[2]._update(i,a,i,a)};Ma.prototype._pad=yo.prototype._pad;Ma.prototype._unpad=yo.prototype._unpad;Ys.utils=ii;Ys.Cipher=jg;Ys.DES=Lx;Ys.CBC=Nx;Ys.EDE=EH;var $x=Ho,Rn=Ys,RH=Ye,Qo=vt.Buffer,fl={"des-ede3-cbc":Rn.CBC.instantiate(Rn.EDE),"des-ede3":Rn.EDE,"des-ede-cbc":Rn.CBC.instantiate(Rn.EDE),"des-ede":Rn.EDE,"des-cbc":Rn.CBC.instantiate(Rn.DES),"des-ecb":Rn.DES};fl.des=fl["des-cbc"];fl.des3=fl["des-ede3-cbc"];var AH=dc;RH(dc,$x);function dc(e){$x.call(this);var t=e.mode.toLowerCase(),r=fl[t],i;e.decrypt?i="decrypt":i="encrypt";var a=e.key;Qo.isBuffer(a)||(a=Qo.from(a)),(t==="des-ede"||t==="des-ede-cbc")&&(a=Qo.concat([a,a.slice(0,8)]));var n=e.iv;Qo.isBuffer(n)||(n=Qo.from(n)),this._des=r.create({key:a,iv:n,type:i})}dc.prototype._update=function(e){return Qo.from(this._des.update(e))};dc.prototype._final=function(){return Qo.from(this._des.final())};var ei={},Ug={},Hg={};Hg.encrypt=function(e,t){return e._cipher.encryptBlock(t)};Hg.decrypt=function(e,t){return e._cipher.decryptBlock(t)};var qg={},Bl=function(t,r){for(var i=Math.min(t.length,r.length),a=new ke.Buffer(i),n=0;n<i;++n)a[n]=t[n]^r[n];return a},Dx=Bl;qg.encrypt=function(e,t){var r=Dx(t,e._prev);return e._prev=e._cipher.encryptBlock(r),e._prev};qg.decrypt=function(e,t){var r=e._prev;e._prev=t;var i=e._cipher.decryptBlock(t);return Dx(i,r)};var Fx={},Cf=vt.Buffer,TH=Bl;function xw(e,t,r){var i=t.length,a=TH(t,e._cache);return e._cache=e._cache.slice(i),e._prev=Cf.concat([e._prev,r?t:a]),a}Fx.encrypt=function(e,t,r){for(var i=Cf.allocUnsafe(0),a;t.length;)if(e._cache.length===0&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=Cf.allocUnsafe(0)),e._cache.length<=t.length)a=e._cache.length,i=Cf.concat([i,xw(e,t.slice(0,a),r)]),t=t.slice(a);else{i=Cf.concat([i,xw(e,t,r)]);break}return i};var jx={},ov=vt.Buffer;function OH(e,t,r){var i=e._cipher.encryptBlock(e._prev),a=i[0]^t;return e._prev=ov.concat([e._prev.slice(1),ov.from([r?t:a])]),a}jx.encrypt=function(e,t,r){for(var i=t.length,a=ov.allocUnsafe(i),n=-1;++n<i;)a[n]=OH(e,t[n],r);return a};var Ux={},Au=vt.Buffer;function IH(e,t,r){for(var i,a=-1,n=8,l=0,c,d;++a<n;)i=e._cipher.encryptBlock(e._prev),c=t&1<<7-a?128:0,d=i[0]^c,l+=(d&128)>>a%8,e._prev=PH(e._prev,r?c:d);return l}function PH(e,t){var r=e.length,i=-1,a=Au.allocUnsafe(e.length);for(e=Au.concat([e,Au.from([t])]);++i<r;)a[i]=e[i]<<1|e[i+1]>>7;return a}Ux.encrypt=function(e,t,r){for(var i=t.length,a=Au.allocUnsafe(i),n=-1;++n<i;)a[n]=IH(e,t[n],r);return a};var Hx={},CH=Bl;function BH(e){return e._prev=e._cipher.encryptBlock(e._prev),e._prev}Hx.encrypt=function(e,t){for(;e._cache.length<t.length;)e._cache=ke.Buffer.concat([e._cache,BH(e)]);var r=e._cache.slice(0,t.length);return e._cache=e._cache.slice(t.length),CH(t,r)};var av={};function LH(e){for(var t=e.length,r;t--;)if(r=e.readUInt8(t),r===255)e.writeUInt8(0,t);else{r++,e.writeUInt8(r,t);break}}var qx=LH,NH=Bl,Ew=vt.Buffer,kH=qx;function $H(e){var t=e._cipher.encryptBlockRaw(e._prev);return kH(e._prev),t}var v0=16;av.encrypt=function(e,t){var r=Math.ceil(t.length/v0),i=e._cache.length;e._cache=Ew.concat([e._cache,Ew.allocUnsafe(r*v0)]);for(var a=0;a<r;a++){var n=$H(e),l=i+a*v0;e._cache.writeUInt32BE(n[0],l+0),e._cache.writeUInt32BE(n[1],l+4),e._cache.writeUInt32BE(n[2],l+8),e._cache.writeUInt32BE(n[3],l+12)}var c=e._cache.slice(0,t.length);return e._cache=e._cache.slice(t.length),NH(t,c)};const DH={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},FH={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},jH={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},Wx={"aes-128-ecb":{cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},"aes-192-ecb":{cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},"aes-256-ecb":{cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},"aes-128-cbc":{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},"aes-192-cbc":{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},"aes-256-cbc":{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},aes128:DH,aes192:FH,aes256:jH,"aes-128-cfb":{cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},"aes-192-cfb":{cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},"aes-256-cfb":{cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},"aes-128-cfb8":{cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},"aes-192-cfb8":{cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},"aes-256-cfb8":{cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},"aes-128-cfb1":{cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},"aes-192-cfb1":{cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},"aes-256-cfb1":{cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},"aes-128-ofb":{cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},"aes-192-ofb":{cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},"aes-256-ofb":{cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},"aes-128-ctr":{cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},"aes-192-ctr":{cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},"aes-256-ctr":{cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},"aes-128-gcm":{cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},"aes-192-gcm":{cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},"aes-256-gcm":{cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}};var UH={ECB:Hg,CBC:qg,CFB:Fx,CFB8:jx,CFB1:Ux,OFB:Hx,CTR:av,GCM:av},Tu=Wx;for(var Rw in Tu)Tu[Rw].module=UH[Tu[Rw].mode];var Wg=Tu,Ll={},dh=vt.Buffer;function Kg(e){dh.isBuffer(e)||(e=dh.from(e));for(var t=e.length/4|0,r=new Array(t),i=0;i<t;i++)r[i]=e.readUInt32BE(i*4);return r}function g0(e){for(var t=0;t<e.length;e++)e[t]=0}function Kx(e,t,r,i,a){for(var n=r[0],l=r[1],c=r[2],d=r[3],m=e[0]^t[0],M=e[1]^t[1],S=e[2]^t[2],R=e[3]^t[3],I,O,B,L,P=4,C=1;C<a;C++)I=n[m>>>24]^l[M>>>16&255]^c[S>>>8&255]^d[R&255]^t[P++],O=n[M>>>24]^l[S>>>16&255]^c[R>>>8&255]^d[m&255]^t[P++],B=n[S>>>24]^l[R>>>16&255]^c[m>>>8&255]^d[M&255]^t[P++],L=n[R>>>24]^l[m>>>16&255]^c[M>>>8&255]^d[S&255]^t[P++],m=I,M=O,S=B,R=L;return I=(i[m>>>24]<<24|i[M>>>16&255]<<16|i[S>>>8&255]<<8|i[R&255])^t[P++],O=(i[M>>>24]<<24|i[S>>>16&255]<<16|i[R>>>8&255]<<8|i[m&255])^t[P++],B=(i[S>>>24]<<24|i[R>>>16&255]<<16|i[m>>>8&255]<<8|i[M&255])^t[P++],L=(i[R>>>24]<<24|i[m>>>16&255]<<16|i[M>>>8&255]<<8|i[S&255])^t[P++],I=I>>>0,O=O>>>0,B=B>>>0,L=L>>>0,[I,O,B,L]}var HH=[0,1,2,4,8,16,32,64,128,27,54],rr=function(){for(var e=new Array(256),t=0;t<256;t++)t<128?e[t]=t<<1:e[t]=t<<1^283;for(var r=[],i=[],a=[[],[],[],[]],n=[[],[],[],[]],l=0,c=0,d=0;d<256;++d){var m=c^c<<1^c<<2^c<<3^c<<4;m=m>>>8^m&255^99,r[l]=m,i[m]=l;var M=e[l],S=e[M],R=e[S],I=e[m]*257^m*16843008;a[0][l]=I<<24|I>>>8,a[1][l]=I<<16|I>>>16,a[2][l]=I<<8|I>>>24,a[3][l]=I,I=R*16843009^S*65537^M*257^l*16843008,n[0][m]=I<<24|I>>>8,n[1][m]=I<<16|I>>>16,n[2][m]=I<<8|I>>>24,n[3][m]=I,l===0?l=c=1:(l=M^e[e[e[R^M]]],c^=e[e[c]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:a,INV_SUB_MIX:n}}();function bi(e){this._key=Kg(e),this._reset()}bi.blockSize=4*4;bi.keySize=256/8;bi.prototype.blockSize=bi.blockSize;bi.prototype.keySize=bi.keySize;bi.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,i=(r+1)*4,a=[],n=0;n<t;n++)a[n]=e[n];for(n=t;n<i;n++){var l=a[n-1];n%t===0?(l=l<<8|l>>>24,l=rr.SBOX[l>>>24]<<24|rr.SBOX[l>>>16&255]<<16|rr.SBOX[l>>>8&255]<<8|rr.SBOX[l&255],l^=HH[n/t|0]<<24):t>6&&n%t===4&&(l=rr.SBOX[l>>>24]<<24|rr.SBOX[l>>>16&255]<<16|rr.SBOX[l>>>8&255]<<8|rr.SBOX[l&255]),a[n]=a[n-t]^l}for(var c=[],d=0;d<i;d++){var m=i-d,M=a[m-(d%4?0:4)];d<4||m<=4?c[d]=M:c[d]=rr.INV_SUB_MIX[0][rr.SBOX[M>>>24]]^rr.INV_SUB_MIX[1][rr.SBOX[M>>>16&255]]^rr.INV_SUB_MIX[2][rr.SBOX[M>>>8&255]]^rr.INV_SUB_MIX[3][rr.SBOX[M&255]]}this._nRounds=r,this._keySchedule=a,this._invKeySchedule=c};bi.prototype.encryptBlockRaw=function(e){return e=Kg(e),Kx(e,this._keySchedule,rr.SUB_MIX,rr.SBOX,this._nRounds)};bi.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=dh.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r};bi.prototype.decryptBlock=function(e){e=Kg(e);var t=e[1];e[1]=e[3],e[3]=t;var r=Kx(e,this._invKeySchedule,rr.INV_SUB_MIX,rr.INV_SBOX,this._nRounds),i=dh.allocUnsafe(16);return i.writeUInt32BE(r[0],0),i.writeUInt32BE(r[3],4),i.writeUInt32BE(r[2],8),i.writeUInt32BE(r[1],12),i};bi.prototype.scrub=function(){g0(this._keySchedule),g0(this._invKeySchedule),g0(this._key)};Ll.AES=bi;var Os=vt.Buffer,qH=Os.alloc(16,0);function WH(e){return[e.readUInt32BE(0),e.readUInt32BE(4),e.readUInt32BE(8),e.readUInt32BE(12)]}function Vx(e){var t=Os.allocUnsafe(16);return t.writeUInt32BE(e[0]>>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function Nl(e){this.h=e,this.state=Os.alloc(16,0),this.cache=Os.allocUnsafe(0)}Nl.prototype.ghash=function(e){for(var t=-1;++t<e.length;)this.state[t]^=e[t];this._multiply()};Nl.prototype._multiply=function(){for(var e=WH(this.h),t=[0,0,0,0],r,i,a,n=-1;++n<128;){for(i=(this.state[~~(n/8)]&1<<7-n%8)!==0,i&&(t[0]^=e[0],t[1]^=e[1],t[2]^=e[2],t[3]^=e[3]),a=(e[3]&1)!==0,r=3;r>0;r--)e[r]=e[r]>>>1|(e[r-1]&1)<<31;e[0]=e[0]>>>1,a&&(e[0]=e[0]^225<<24)}this.state=Vx(t)};Nl.prototype.update=function(e){this.cache=Os.concat([this.cache,e]);for(var t;this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)};Nl.prototype.final=function(e,t){return this.cache.length&&this.ghash(Os.concat([this.cache,qH],16)),this.ghash(Vx([0,e,0,t])),this.state};var KH=Nl,VH=Ll,Vr=vt.Buffer,zx=Ho,zH=Ye,Gx=KH,GH=Bl,YH=qx;function ZH(e,t){var r=0;e.length!==t.length&&r++;for(var i=Math.min(e.length,t.length),a=0;a<i;++a)r+=e[a]^t[a];return r}function XH(e,t,r){if(t.length===12)return e._finID=Vr.concat([t,Vr.from([0,0,0,1])]),Vr.concat([t,Vr.from([0,0,0,2])]);var i=new Gx(r),a=t.length,n=a%16;i.update(t),n&&(n=16-n,i.update(Vr.alloc(n,0))),i.update(Vr.alloc(8,0));var l=a*8,c=Vr.alloc(8);c.writeUIntBE(l,0,8),i.update(c),e._finID=i.state;var d=Vr.from(e._finID);return YH(d),d}function ka(e,t,r,i){zx.call(this);var a=Vr.alloc(4,0);this._cipher=new VH.AES(t);var n=this._cipher.encryptBlock(a);this._ghash=new Gx(n),r=XH(this,r,n),this._prev=Vr.from(r),this._cache=Vr.allocUnsafe(0),this._secCache=Vr.allocUnsafe(0),this._decrypt=i,this._alen=0,this._len=0,this._mode=e,this._authTag=null,this._called=!1}zH(ka,zx);ka.prototype._update=function(e){if(!this._called&&this._alen){var t=16-this._alen%16;t<16&&(t=Vr.alloc(t,0),this._ghash.update(t))}this._called=!0;var r=this._mode.encrypt(this,e);return this._decrypt?this._ghash.update(e):this._ghash.update(r),this._len+=e.length,r};ka.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var e=GH(this._ghash.final(this._alen*8,this._len*8),this._cipher.encryptBlock(this._finID));if(this._decrypt&&ZH(e,this._authTag))throw new Error("Unsupported state or unable to authenticate data");this._authTag=e,this._cipher.scrub()};ka.prototype.getAuthTag=function(){if(this._decrypt||!Vr.isBuffer(this._authTag))throw new Error("Attempting to get auth tag in unsupported state");return this._authTag};ka.prototype.setAuthTag=function(t){if(!this._decrypt)throw new Error("Attempting to set auth tag in unsupported state");this._authTag=t};ka.prototype.setAAD=function(t){if(this._called)throw new Error("Attempting to set AAD in unsupported state");this._ghash.update(t),this._alen+=t.length};var Yx=ka,JH=Ll,m0=vt.Buffer,Zx=Ho,QH=Ye;function pc(e,t,r,i){Zx.call(this),this._cipher=new JH.AES(t),this._prev=m0.from(r),this._cache=m0.allocUnsafe(0),this._secCache=m0.allocUnsafe(0),this._decrypt=i,this._mode=e}QH(pc,Zx);pc.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)};pc.prototype._final=function(){this._cipher.scrub()};var Xx=pc,Go=vt.Buffer,eq=Ng;function tq(e,t,r,i){if(Go.isBuffer(e)||(e=Go.from(e,"binary")),t&&(Go.isBuffer(t)||(t=Go.from(t,"binary")),t.length!==8))throw new RangeError("salt should be Buffer with 8 byte length");for(var a=r/8,n=Go.alloc(a),l=Go.alloc(i||0),c=Go.alloc(0);a>0||i>0;){var d=new eq;d.update(c),d.update(e),t&&d.update(t),c=d.digest();var m=0;if(a>0){var M=n.length-a;m=Math.min(a,c.length),c.copy(n,M,0,m),a-=m}if(m<c.length&&i>0){var S=l.length-i,R=Math.min(i,c.length-m);c.copy(l,S,m,m+R),i-=R}}return c.fill(0),{key:n,iv:l}}var vc=tq,Jx=Wg,rq=Yx,Zn=vt.Buffer,iq=Xx,Qx=Ho,nq=Ll,oq=vc,aq=Ye;function kl(e,t,r){Qx.call(this),this._cache=new gc,this._cipher=new nq.AES(t),this._prev=Zn.from(r),this._mode=e,this._autopadding=!0}aq(kl,Qx);kl.prototype._update=function(e){this._cache.add(e);for(var t,r,i=[];t=this._cache.get();)r=this._mode.encrypt(this,t),i.push(r);return Zn.concat(i)};var sq=Zn.alloc(16,16);kl.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(sq))throw this._cipher.scrub(),new Error("data not multiple of block length")};kl.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this};function gc(){this.cache=Zn.allocUnsafe(0)}gc.prototype.add=function(e){this.cache=Zn.concat([this.cache,e])};gc.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null};gc.prototype.flush=function(){for(var e=16-this.cache.length,t=Zn.allocUnsafe(e),r=-1;++r<e;)t.writeUInt8(e,r);return Zn.concat([this.cache,t])};function e4(e,t,r){var i=Jx[e.toLowerCase()];if(!i)throw new TypeError("invalid suite type");if(typeof t=="string"&&(t=Zn.from(t)),t.length!==i.key/8)throw new TypeError("invalid key length "+t.length);if(typeof r=="string"&&(r=Zn.from(r)),i.mode!=="GCM"&&r.length!==i.iv)throw new TypeError("invalid iv length "+r.length);return i.type==="stream"?new iq(i.module,t,r):i.type==="auth"?new rq(i.module,t,r):new kl(i.module,t,r)}function fq(e,t){var r=Jx[e.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=oq(t,!1,r.key,r.iv);return e4(e,i.key,i.iv)}Ug.createCipheriv=e4;Ug.createCipher=fq;var Vg={},lq=Yx,Is=vt.Buffer,t4=Wg,uq=Xx,r4=Ho,hq=Ll,cq=vc,dq=Ye;function $l(e,t,r){r4.call(this),this._cache=new mc,this._last=void 0,this._cipher=new hq.AES(t),this._prev=Is.from(r),this._mode=e,this._autopadding=!0}dq($l,r4);$l.prototype._update=function(e){this._cache.add(e);for(var t,r,i=[];t=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,t),i.push(r);return Is.concat(i)};$l.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return pq(this._mode.decrypt(this,e));if(e)throw new Error("data not multiple of block length")};$l.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this};function mc(){this.cache=Is.allocUnsafe(0)}mc.prototype.add=function(e){this.cache=Is.concat([this.cache,e])};mc.prototype.get=function(e){var t;if(e){if(this.cache.length>16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null};mc.prototype.flush=function(){if(this.cache.length)return this.cache};function pq(e){var t=e[15];if(t<1||t>16)throw new Error("unable to decrypt data");for(var r=-1;++r<t;)if(e[r+(16-t)]!==t)throw new Error("unable to decrypt data");if(t!==16)return e.slice(0,16-t)}function i4(e,t,r){var i=t4[e.toLowerCase()];if(!i)throw new TypeError("invalid suite type");if(typeof r=="string"&&(r=Is.from(r)),i.mode!=="GCM"&&r.length!==i.iv)throw new TypeError("invalid iv length "+r.length);if(typeof t=="string"&&(t=Is.from(t)),t.length!==i.key/8)throw new TypeError("invalid key length "+t.length);return i.type==="stream"?new uq(i.module,t,r,!0):i.type==="auth"?new lq(i.module,t,r,!0):new $l(i.module,t,r)}function vq(e,t){var r=t4[e.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=cq(t,!1,r.key,r.iv);return i4(e,i.key,i.iv)}Vg.createDecipher=vq;Vg.createDecipheriv=i4;var n4=Ug,o4=Vg,gq=Wx;function mq(){return Object.keys(gq)}ei.createCipher=ei.Cipher=n4.createCipher;ei.createCipheriv=ei.Cipheriv=n4.createCipheriv;ei.createDecipher=ei.Decipher=o4.createDecipher;ei.createDecipheriv=ei.Decipheriv=o4.createDecipheriv;ei.listCiphers=ei.getCiphers=mq;var a4={};(function(e){e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}})(a4);var s4=AH,zg=ei,Ao=Wg,Wn=a4,f4=vc;function yq(e,t){e=e.toLowerCase();var r,i;if(Ao[e])r=Ao[e].key,i=Ao[e].iv;else if(Wn[e])r=Wn[e].key*8,i=Wn[e].iv;else throw new TypeError("invalid suite type");var a=f4(t,!1,r,i);return l4(e,a.key,a.iv)}function bq(e,t){e=e.toLowerCase();var r,i;if(Ao[e])r=Ao[e].key,i=Ao[e].iv;else if(Wn[e])r=Wn[e].key*8,i=Wn[e].iv;else throw new TypeError("invalid suite type");var a=f4(t,!1,r,i);return u4(e,a.key,a.iv)}function l4(e,t,r){if(e=e.toLowerCase(),Ao[e])return zg.createCipheriv(e,t,r);if(Wn[e])return new s4({key:t,iv:r,mode:e});throw new TypeError("invalid suite type")}function u4(e,t,r){if(e=e.toLowerCase(),Ao[e])return zg.createDecipheriv(e,t,r);if(Wn[e])return new s4({key:t,iv:r,mode:e,decrypt:!0});throw new TypeError("invalid suite type")}function wq(){return Object.keys(Wn).concat(zg.getCiphers())}Hi.createCipher=Hi.Cipher=yq;Hi.createCipheriv=Hi.Cipheriv=l4;Hi.createDecipher=Hi.Decipher=bq;Hi.createDecipheriv=Hi.Decipheriv=u4;Hi.listCiphers=Hi.getCiphers=wq;var Yo={},Gg={exports:{}};Gg.exports;(function(e){(function(t,r){function i(_,o){if(!_)throw new Error(o||"Assertion failed")}function a(_,o){_.super_=o;var f=function(){};f.prototype=o.prototype,_.prototype=new f,_.prototype.constructor=_}function n(_,o,f){if(n.isBN(_))return _;this.negative=0,this.words=null,this.length=0,this.red=null,_!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(_||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=ke.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var h=0;o[0]==="-"&&(h++,this.negative=1),h<o.length&&(f===16?this._parseHex(o,h,u):(this._parseBase(o,f,h),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p,w,x=0;if(u==="be")for(h=o.length-1,p=0;h>=0;h-=3)w=o[h]|o[h-1]<<8|o[h-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(h=0,p=0;h<o.length;h+=3)w=o[h]|o[h+1]<<8|o[h+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function c(_,o){var f=_.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(_,o,f){var u=c(_,f);return f-1>=o&&(u|=c(_,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p=0,w=0,x;if(u==="be")for(h=o.length-1;h>=f;h-=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(h=g%2===0?f+1:f;h<o.length;h+=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(_,o,f,u){for(var h=0,p=Math.min(_.length,f),w=o;w<p;w++){var x=_.charCodeAt(w)-48;h*=u,x>=49?h+=x-49+10:x>=17?h+=x-17+10:h+=x}return h}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var h=0,p=1;p<=67108863;p*=f)h++;h--,p=p/f|0;for(var w=o.length-u,x=w%h,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=h)s=m(o,v,v+h,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var M=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var h=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<h|p)&16777215).toString(16);p=x>>>24-h&16777215,p!==0||w!==this.length-1?u=M[6-g.length]+g+u:u=g+u,h+=2,h>=26&&(h-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var k=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=k+u:u=M[s-k.length]+k+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var h=this.byteLength(),p=u||Math.max(1,h);i(h<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-h;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(_){for(var o=new Array(_.bitLength()),f=0;f<o.length;f++){var u=f/26|0,h=f%26;o[f]=(_.words[u]&1<<h)>>>h}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var h=0;h<u.length;h++)this.words[h]=f.words[h]^u.words[h];if(this!==f)for(;h<f.length;h++)this.words[h]=f.words[h];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var h=0;h<f;h++)this.words[h]=~this.words[h]&67108863;return u>0&&(this.words[h]=~this.words[h]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,h=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<h:this.words[u]=this.words[u]&~(1<<h),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,h;this.length>o.length?(u=this,h=o):(u=o,h=this);for(var p=0,w=0;w<h.length;w++)f=(u.words[w]|0)+(h.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var h,p;u>0?(h=this,p=o):(h=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(h.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<h.length;x++)f=(h.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<h.length&&h!==this)for(;x<h.length;x++)this.words[x]=h.words[x];return this.length=Math.max(this.length,x),h!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(_,o,f){f.negative=o.negative^_.negative;var u=_.length+o.length|0;f.length=u,u=u-1|0;var h=_.words[0]|0,p=o.words[0]|0,w=h*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,k=Math.min(s,o.length-1),Y=Math.max(0,s-_.length+1);Y<=k;Y++){var ee=s-Y|0;h=_.words[ee]|0,p=o.words[Y]|0,w=h*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var B=function(o,f,u){var h=o.words,p=f.words,w=u.words,x=0,g,s,v,T=h[0]|0,k=T&8191,Y=T>>>13,ee=h[1]|0,A=ee&8191,E=ee>>>13,q=h[2]|0,V=q&8191,X=q>>>13,b=h[3]|0,y=b&8191,D=b>>>13,U=h[4]|0,Z=U&8191,F=U>>>13,N=h[5]|0,H=N&8191,z=N>>>13,fe=h[6]|0,re=fe&8191,ae=fe>>>13,be=h[7]|0,J=be&8191,le=be>>>13,se=h[8]|0,ue=se&8191,de=se>>>13,ve=h[9]|0,ie=ve&8191,oe=ve>>>13,Ae=p[0]|0,pe=Ae&8191,Se=Ae>>>13,Ke=p[1]|0,we=Ke&8191,xe=Ke>>>13,qe=p[2]|0,ye=qe&8191,Me=qe>>>13,Ve=p[3]|0,ge=Ve&8191,Ee=Ve>>>13,Je=p[4]|0,Re=Je&8191,Le=Je>>>13,at=p[5]|0,Te=at&8191,Ne=at>>>13,rt=p[6]|0,Oe=rt&8191,De=rt>>>13,nt=p[7]|0,Ie=nt&8191,$e=nt>>>13,st=p[8]|0,Pe=st&8191,je=st>>>13,ht=p[9]|0,Ce=ht&8191,Fe=ht>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(k,pe),s=Math.imul(k,Se),s=s+Math.imul(Y,pe)|0,v=Math.imul(Y,Se);var it=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(it>>>26)|0,it&=67108863,g=Math.imul(A,pe),s=Math.imul(A,Se),s=s+Math.imul(E,pe)|0,v=Math.imul(E,Se),g=g+Math.imul(k,we)|0,s=s+Math.imul(k,xe)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,xe)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,pe),s=Math.imul(V,Se),s=s+Math.imul(X,pe)|0,v=Math.imul(X,Se),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,xe)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,xe)|0,g=g+Math.imul(k,ye)|0,s=s+Math.imul(k,Me)|0,s=s+Math.imul(Y,ye)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,pe),s=Math.imul(y,Se),s=s+Math.imul(D,pe)|0,v=Math.imul(D,Se),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,xe)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,xe)|0,g=g+Math.imul(A,ye)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ye)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(k,ge)|0,s=s+Math.imul(k,Ee)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Ee)|0;var Ot=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,g=Math.imul(Z,pe),s=Math.imul(Z,Se),s=s+Math.imul(F,pe)|0,v=Math.imul(F,Se),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,xe)|0,s=s+Math.imul(D,we)|0,v=v+Math.imul(D,xe)|0,g=g+Math.imul(V,ye)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ye)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Ee)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Ee)|0,g=g+Math.imul(k,Re)|0,s=s+Math.imul(k,Le)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Le)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(H,pe),s=Math.imul(H,Se),s=s+Math.imul(z,pe)|0,v=Math.imul(z,Se),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,xe)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,xe)|0,g=g+Math.imul(y,ye)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(D,ye)|0,v=v+Math.imul(D,Me)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Ee)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Ee)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Le)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Le)|0,g=g+Math.imul(k,Te)|0,s=s+Math.imul(k,Ne)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,Ne)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(re,pe),s=Math.imul(re,Se),s=s+Math.imul(ae,pe)|0,v=Math.imul(ae,Se),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,xe)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,xe)|0,g=g+Math.imul(Z,ye)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(F,ye)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Ee)|0,s=s+Math.imul(D,ge)|0,v=v+Math.imul(D,Ee)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Le)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Le)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(k,Oe)|0,s=s+Math.imul(k,De)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,De)|0;var kt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(kt>>>26)|0,kt&=67108863,g=Math.imul(J,pe),s=Math.imul(J,Se),s=s+Math.imul(le,pe)|0,v=Math.imul(le,Se),g=g+Math.imul(re,we)|0,s=s+Math.imul(re,xe)|0,s=s+Math.imul(ae,we)|0,v=v+Math.imul(ae,xe)|0,g=g+Math.imul(H,ye)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ye)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Ee)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Ee)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Le)|0,s=s+Math.imul(D,Re)|0,v=v+Math.imul(D,Le)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(k,Ie)|0,s=s+Math.imul(k,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Ut=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,g=Math.imul(ue,pe),s=Math.imul(ue,Se),s=s+Math.imul(de,pe)|0,v=Math.imul(de,Se),g=g+Math.imul(J,we)|0,s=s+Math.imul(J,xe)|0,s=s+Math.imul(le,we)|0,v=v+Math.imul(le,xe)|0,g=g+Math.imul(re,ye)|0,s=s+Math.imul(re,Me)|0,s=s+Math.imul(ae,ye)|0,v=v+Math.imul(ae,Me)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Ee)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Ee)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Le)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Le)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(D,Te)|0,v=v+Math.imul(D,Ne)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0,g=g+Math.imul(k,Pe)|0,s=s+Math.imul(k,je)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,je)|0;var Ht=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,g=Math.imul(ie,pe),s=Math.imul(ie,Se),s=s+Math.imul(oe,pe)|0,v=Math.imul(oe,Se),g=g+Math.imul(ue,we)|0,s=s+Math.imul(ue,xe)|0,s=s+Math.imul(de,we)|0,v=v+Math.imul(de,xe)|0,g=g+Math.imul(J,ye)|0,s=s+Math.imul(J,Me)|0,s=s+Math.imul(le,ye)|0,v=v+Math.imul(le,Me)|0,g=g+Math.imul(re,ge)|0,s=s+Math.imul(re,Ee)|0,s=s+Math.imul(ae,ge)|0,v=v+Math.imul(ae,Ee)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Le)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Le)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(D,Oe)|0,v=v+Math.imul(D,De)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(k,Ce)|0,s=s+Math.imul(k,Fe)|0,s=s+Math.imul(Y,Ce)|0,v=v+Math.imul(Y,Fe)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,xe),s=s+Math.imul(oe,we)|0,v=Math.imul(oe,xe),g=g+Math.imul(ue,ye)|0,s=s+Math.imul(ue,Me)|0,s=s+Math.imul(de,ye)|0,v=v+Math.imul(de,Me)|0,g=g+Math.imul(J,ge)|0,s=s+Math.imul(J,Ee)|0,s=s+Math.imul(le,ge)|0,v=v+Math.imul(le,Ee)|0,g=g+Math.imul(re,Re)|0,s=s+Math.imul(re,Le)|0,s=s+Math.imul(ae,Re)|0,v=v+Math.imul(ae,Le)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(D,Ie)|0,v=v+Math.imul(D,$e)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ce)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Ce)|0,v=v+Math.imul(E,Fe)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ye),s=Math.imul(ie,Me),s=s+Math.imul(oe,ye)|0,v=Math.imul(oe,Me),g=g+Math.imul(ue,ge)|0,s=s+Math.imul(ue,Ee)|0,s=s+Math.imul(de,ge)|0,v=v+Math.imul(de,Ee)|0,g=g+Math.imul(J,Re)|0,s=s+Math.imul(J,Le)|0,s=s+Math.imul(le,Re)|0,v=v+Math.imul(le,Le)|0,g=g+Math.imul(re,Te)|0,s=s+Math.imul(re,Ne)|0,s=s+Math.imul(ae,Te)|0,v=v+Math.imul(ae,Ne)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(D,Pe)|0,v=v+Math.imul(D,je)|0,g=g+Math.imul(V,Ce)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Ce)|0,v=v+Math.imul(X,Fe)|0;var At=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(At>>>26)|0,At&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Ee),s=s+Math.imul(oe,ge)|0,v=Math.imul(oe,Ee),g=g+Math.imul(ue,Re)|0,s=s+Math.imul(ue,Le)|0,s=s+Math.imul(de,Re)|0,v=v+Math.imul(de,Le)|0,g=g+Math.imul(J,Te)|0,s=s+Math.imul(J,Ne)|0,s=s+Math.imul(le,Te)|0,v=v+Math.imul(le,Ne)|0,g=g+Math.imul(re,Oe)|0,s=s+Math.imul(re,De)|0,s=s+Math.imul(ae,Oe)|0,v=v+Math.imul(ae,De)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(y,Ce)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(D,Ce)|0,v=v+Math.imul(D,Fe)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Le),s=s+Math.imul(oe,Re)|0,v=Math.imul(oe,Le),g=g+Math.imul(ue,Te)|0,s=s+Math.imul(ue,Ne)|0,s=s+Math.imul(de,Te)|0,v=v+Math.imul(de,Ne)|0,g=g+Math.imul(J,Oe)|0,s=s+Math.imul(J,De)|0,s=s+Math.imul(le,Oe)|0,v=v+Math.imul(le,De)|0,g=g+Math.imul(re,Ie)|0,s=s+Math.imul(re,$e)|0,s=s+Math.imul(ae,Ie)|0,v=v+Math.imul(ae,$e)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ce)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(F,Ce)|0,v=v+Math.imul(F,Fe)|0;var yt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(yt>>>26)|0,yt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,Ne),s=s+Math.imul(oe,Te)|0,v=Math.imul(oe,Ne),g=g+Math.imul(ue,Oe)|0,s=s+Math.imul(ue,De)|0,s=s+Math.imul(de,Oe)|0,v=v+Math.imul(de,De)|0,g=g+Math.imul(J,Ie)|0,s=s+Math.imul(J,$e)|0,s=s+Math.imul(le,Ie)|0,v=v+Math.imul(le,$e)|0,g=g+Math.imul(re,Pe)|0,s=s+Math.imul(re,je)|0,s=s+Math.imul(ae,Pe)|0,v=v+Math.imul(ae,je)|0,g=g+Math.imul(H,Ce)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Ce)|0,v=v+Math.imul(z,Fe)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,De),s=s+Math.imul(oe,Oe)|0,v=Math.imul(oe,De),g=g+Math.imul(ue,Ie)|0,s=s+Math.imul(ue,$e)|0,s=s+Math.imul(de,Ie)|0,v=v+Math.imul(de,$e)|0,g=g+Math.imul(J,Pe)|0,s=s+Math.imul(J,je)|0,s=s+Math.imul(le,Pe)|0,v=v+Math.imul(le,je)|0,g=g+Math.imul(re,Ce)|0,s=s+Math.imul(re,Fe)|0,s=s+Math.imul(ae,Ce)|0,v=v+Math.imul(ae,Fe)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(oe,Ie)|0,v=Math.imul(oe,$e),g=g+Math.imul(ue,Pe)|0,s=s+Math.imul(ue,je)|0,s=s+Math.imul(de,Pe)|0,v=v+Math.imul(de,je)|0,g=g+Math.imul(J,Ce)|0,s=s+Math.imul(J,Fe)|0,s=s+Math.imul(le,Ce)|0,v=v+Math.imul(le,Fe)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,je),s=s+Math.imul(oe,Pe)|0,v=Math.imul(oe,je),g=g+Math.imul(ue,Ce)|0,s=s+Math.imul(ue,Fe)|0,s=s+Math.imul(de,Ce)|0,v=v+Math.imul(de,Fe)|0;var $t=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+($t>>>26)|0,$t&=67108863,g=Math.imul(ie,Ce),s=Math.imul(ie,Fe),s=s+Math.imul(oe,Ce)|0,v=Math.imul(oe,Fe);var Dt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,w[0]=it,w[1]=et,w[2]=Et,w[3]=Ot,w[4]=It,w[5]=Bt,w[6]=kt,w[7]=Ut,w[8]=Ht,w[9]=Lt,w[10]=dt,w[11]=At,w[12]=Mt,w[13]=yt,w[14]=Pt,w[15]=gt,w[16]=bt,w[17]=$t,w[18]=Dt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(B=O);function L(_,o,f){f.negative=o.negative^_.negative,f.length=_.length+o.length;for(var u=0,h=0,p=0;p<f.length-1;p++){var w=h;h=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-_.length+1);s<=g;s++){var v=p-s,T=_.words[v]|0,k=o.words[s]|0,Y=T*k,ee=Y&67108863;w=w+(Y/67108864|0)|0,ee=ee+x|0,x=ee&67108863,w=w+(ee>>>26)|0,h+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=h}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(_,o,f){var u=new C;return u.mulp(_,o,f)}n.prototype.mulTo=function(o,f){var u,h=this.length+o.length;return this.length===10&&o.length===10?u=B(this,o,f):h<63?u=O(this,o,f):h<1024?u=L(this,o,f):u=P(this,o,f),u};function C(_,o){this.x=_,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,h=0;h<o;h++)f[h]=this.revBin(h,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var h=0,p=0;p<f;p++)h|=(o&1)<<f-p-1,o>>=1;return h},C.prototype.permute=function(o,f,u,h,p,w){for(var x=0;x<w;x++)h[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,h,p,w){this.permute(w,o,f,u,h,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var k=s,Y=v,ee=0;ee<x;ee++){var A=u[T+ee],E=h[T+ee],q=u[T+ee+x],V=h[T+ee+x],X=k*q-Y*V;V=k*V+Y*q,q=X,u[T+ee]=A+q,h[T+ee]=E+V,u[T+ee+x]=A-q,h[T+ee+x]=E-V,ee!==g&&(X=s*k-v*Y,Y=s*Y+v*k,k=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,h=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+h},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var h=0;h<u/2;h++){var p=o[h];o[h]=o[u-h-1],o[u-h-1]=p,p=f[h],f[h]=-f[u-h-1],f[u-h-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,h=0;h<f/2;h++){var p=Math.round(o[2*h+1]/f)*8192+Math.round(o[2*h]/f)+u;o[h]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,h){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<h;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var h=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(h),w=this.stub(h),x=new Array(h),g=new Array(h),s=new Array(h),v=new Array(h),T=new Array(h),k=new Array(h),Y=u.words;Y.length=h,this.convert13b(o.words,o.length,x,h),this.convert13b(f.words,f.length,v,h),this.transform(x,w,g,s,h,p),this.transform(v,w,T,k,h,p);for(var ee=0;ee<h;ee++){var A=g[ee]*T[ee]-s[ee]*k[ee];s[ee]=g[ee]*k[ee]+s[ee]*T[ee],g[ee]=A}return this.conjugate(g,s,h),this.transform(g,s,Y,w,h,p),this.conjugate(Y,w,h),this.normalize13b(Y,h),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var h=(this.words[u]|0)*o,p=(h&67108863)+(f&67108863);f>>=26,f+=h/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,h=0;h<f.length&&f[h]===0;h++,u=u.sqr());if(++h<f.length)for(var p=u.sqr();h<f.length;h++,p=p.sqr())f[h]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&h,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var h;f?h=(f-f%26)/26:h=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(h-=w,h=Math.max(0,h),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=h);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&h)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var h=67108863^67108863>>>f<<f;this.words[this.length-1]&=h}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var h=o.length+u,p;this._expand(h);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,h=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),h.iushln(u),w=p.words[p.length-1]|0);var g=h.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=h.clone()._ishlnsubmul(p,1,g);T.negative===0&&(h=T,s&&(s.words[g]=1));for(var k=g-1;k>=0;k--){var Y=(h.words[p.length+k]|0)*67108864+(h.words[p.length+k-1]|0);for(Y=Math.min(Y/w|0,67108863),h._ishlnsubmul(p,Y,k);h.negative!==0;)Y--,h.negative=0,h._ishlnsubmul(p,1,k),h.isZero()||(h.negative^=1);s&&(s.words[k]=Y)}return s&&s.strip(),h.strip(),f!=="div"&&u!==0&&h.iushrn(u),{div:s||null,mod:h}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var h,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(h=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:h,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(h=w.div.neg()),{div:h,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,h=o.ushrn(1),p=o.andln(1),w=u.cmp(h);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,h=this.length-1;h>=0;h--)u=(f*u+(this.words[h]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var h=(this.words[u]|0)+f*67108864;this.words[u]=h/o|0,f=h%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,k=1;!(f.words[0]&k)&&T<26;++T,k<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(h.isOdd()||p.isOdd())&&(h.iadd(s),p.isub(v)),h.iushrn(1),p.iushrn(1);for(var Y=0,ee=1;!(u.words[0]&ee)&&Y<26;++Y,ee<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(w),p.isub(x)):(u.isub(f),w.isub(h),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)h.isOdd()&&h.iadd(w),h.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(p)):(u.isub(f),p.isub(h))}var T;return f.cmpn(1)===0?T=h:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var h=0;f.isEven()&&u.isEven();h++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(h)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=h,this;for(var p=h,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var h=this.words[0]|0;u=h===o?0:h<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var h=this.words[u]|0,p=o.words[u]|0;if(h!==p){h<p?f=-1:h>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new W(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var j={k256:null,p224:null,p192:null,p25519:null};function $(_,o){this.name=_,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var h=u<this.n?-1:f.ucmp(this.p);return h===0?(f.words[0]=0,f.length=1):h>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function K(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(K,$),K.prototype.split=function(o,f){for(var u=4194303,h=Math.min(o.length,9),p=0;p<h;p++)f.words[p]=o.words[p];if(f.length=h,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},K.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var h=o.words[u]|0;f+=h*977,o.words[u]=f&67108863,f=h*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function te(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(te,$);function Q(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(Q,$),Q.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var h=(o.words[u]|0)*19+f,p=h&67108863;h>>>=26,o.words[u]=p,f=h}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(j[o])return j[o];var f;if(o==="k256")f=new K;else if(o==="p224")f=new G;else if(o==="p192")f=new te;else if(o==="p25519")f=new Q;else throw new Error("Unknown prime "+o);return j[o]=f,f};function W(_){if(typeof _=="string"){var o=n._prime(_);this.m=o.p,this.prime=o}else i(_.gtn(1),"modulus must be greater than 1"),this.m=_,this.prime=null}W.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},W.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},W.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},W.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},W.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},W.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},W.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},W.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},W.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},W.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},W.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},W.prototype.isqr=function(o){return this.imul(o,o.clone())},W.prototype.sqr=function(o){return this.mul(o,o)},W.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var h=this.m.subn(1),p=0;!h.isZero()&&h.andln(1)===0;)p++,h.iushrn(1);i(!h.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,h),T=this.pow(o,h.addn(1).iushrn(1)),k=this.pow(o,h),Y=p;k.cmp(w)!==0;){for(var ee=k,A=0;ee.cmp(w)!==0;A++)ee=ee.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),k=k.redMul(v),Y=A}return T},W.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},W.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,h=new Array(1<<u);h[0]=new n(1).toRed(this),h[1]=o;for(var p=2;p<h.length;p++)h[p]=this.mul(h[p-1],o);var w=h[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var k=v>>T&1;if(w!==h[0]&&(w=this.sqr(w)),k===0&&x===0){g=0;continue}x<<=1,x|=k,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,h[x]),g=0,x=0)}s=26}return w},W.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},W.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new ce(o)};function ce(_){W.call(this,_),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(ce,W),ce.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},ce.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},ce.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(Gg);var h4=Gg.exports,Yg={exports:{}};Yg.exports;(function(e){(function(t,r){function i(_,o){if(!_)throw new Error(o||"Assertion failed")}function a(_,o){_.super_=o;var f=function(){};f.prototype=o.prototype,_.prototype=new f,_.prototype.constructor=_}function n(_,o,f){if(n.isBN(_))return _;this.negative=0,this.words=null,this.length=0,this.red=null,_!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(_||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=ke.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var h=0;o[0]==="-"&&(h++,this.negative=1),h<o.length&&(f===16?this._parseHex(o,h,u):(this._parseBase(o,f,h),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p,w,x=0;if(u==="be")for(h=o.length-1,p=0;h>=0;h-=3)w=o[h]|o[h-1]<<8|o[h-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(h=0,p=0;h<o.length;h+=3)w=o[h]|o[h+1]<<8|o[h+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function c(_,o){var f=_.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(_,o,f){var u=c(_,f);return f-1>=o&&(u|=c(_,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p=0,w=0,x;if(u==="be")for(h=o.length-1;h>=f;h-=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(h=g%2===0?f+1:f;h<o.length;h+=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(_,o,f,u){for(var h=0,p=Math.min(_.length,f),w=o;w<p;w++){var x=_.charCodeAt(w)-48;h*=u,x>=49?h+=x-49+10:x>=17?h+=x-17+10:h+=x}return h}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var h=0,p=1;p<=67108863;p*=f)h++;h--,p=p/f|0;for(var w=o.length-u,x=w%h,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=h)s=m(o,v,v+h,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var M=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var h=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<h|p)&16777215).toString(16);p=x>>>24-h&16777215,p!==0||w!==this.length-1?u=M[6-g.length]+g+u:u=g+u,h+=2,h>=26&&(h-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var k=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=k+u:u=M[s-k.length]+k+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var h=this.byteLength(),p=u||Math.max(1,h);i(h<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-h;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(_){for(var o=new Array(_.bitLength()),f=0;f<o.length;f++){var u=f/26|0,h=f%26;o[f]=(_.words[u]&1<<h)>>>h}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var h=0;h<u.length;h++)this.words[h]=f.words[h]^u.words[h];if(this!==f)for(;h<f.length;h++)this.words[h]=f.words[h];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var h=0;h<f;h++)this.words[h]=~this.words[h]&67108863;return u>0&&(this.words[h]=~this.words[h]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,h=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<h:this.words[u]=this.words[u]&~(1<<h),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,h;this.length>o.length?(u=this,h=o):(u=o,h=this);for(var p=0,w=0;w<h.length;w++)f=(u.words[w]|0)+(h.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var h,p;u>0?(h=this,p=o):(h=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(h.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<h.length;x++)f=(h.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<h.length&&h!==this)for(;x<h.length;x++)this.words[x]=h.words[x];return this.length=Math.max(this.length,x),h!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(_,o,f){f.negative=o.negative^_.negative;var u=_.length+o.length|0;f.length=u,u=u-1|0;var h=_.words[0]|0,p=o.words[0]|0,w=h*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,k=Math.min(s,o.length-1),Y=Math.max(0,s-_.length+1);Y<=k;Y++){var ee=s-Y|0;h=_.words[ee]|0,p=o.words[Y]|0,w=h*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var B=function(o,f,u){var h=o.words,p=f.words,w=u.words,x=0,g,s,v,T=h[0]|0,k=T&8191,Y=T>>>13,ee=h[1]|0,A=ee&8191,E=ee>>>13,q=h[2]|0,V=q&8191,X=q>>>13,b=h[3]|0,y=b&8191,D=b>>>13,U=h[4]|0,Z=U&8191,F=U>>>13,N=h[5]|0,H=N&8191,z=N>>>13,fe=h[6]|0,re=fe&8191,ae=fe>>>13,be=h[7]|0,J=be&8191,le=be>>>13,se=h[8]|0,ue=se&8191,de=se>>>13,ve=h[9]|0,ie=ve&8191,oe=ve>>>13,Ae=p[0]|0,pe=Ae&8191,Se=Ae>>>13,Ke=p[1]|0,we=Ke&8191,xe=Ke>>>13,qe=p[2]|0,ye=qe&8191,Me=qe>>>13,Ve=p[3]|0,ge=Ve&8191,Ee=Ve>>>13,Je=p[4]|0,Re=Je&8191,Le=Je>>>13,at=p[5]|0,Te=at&8191,Ne=at>>>13,rt=p[6]|0,Oe=rt&8191,De=rt>>>13,nt=p[7]|0,Ie=nt&8191,$e=nt>>>13,st=p[8]|0,Pe=st&8191,je=st>>>13,ht=p[9]|0,Ce=ht&8191,Fe=ht>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(k,pe),s=Math.imul(k,Se),s=s+Math.imul(Y,pe)|0,v=Math.imul(Y,Se);var it=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(it>>>26)|0,it&=67108863,g=Math.imul(A,pe),s=Math.imul(A,Se),s=s+Math.imul(E,pe)|0,v=Math.imul(E,Se),g=g+Math.imul(k,we)|0,s=s+Math.imul(k,xe)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,xe)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,pe),s=Math.imul(V,Se),s=s+Math.imul(X,pe)|0,v=Math.imul(X,Se),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,xe)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,xe)|0,g=g+Math.imul(k,ye)|0,s=s+Math.imul(k,Me)|0,s=s+Math.imul(Y,ye)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,pe),s=Math.imul(y,Se),s=s+Math.imul(D,pe)|0,v=Math.imul(D,Se),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,xe)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,xe)|0,g=g+Math.imul(A,ye)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ye)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(k,ge)|0,s=s+Math.imul(k,Ee)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Ee)|0;var Ot=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,g=Math.imul(Z,pe),s=Math.imul(Z,Se),s=s+Math.imul(F,pe)|0,v=Math.imul(F,Se),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,xe)|0,s=s+Math.imul(D,we)|0,v=v+Math.imul(D,xe)|0,g=g+Math.imul(V,ye)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ye)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Ee)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Ee)|0,g=g+Math.imul(k,Re)|0,s=s+Math.imul(k,Le)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Le)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(H,pe),s=Math.imul(H,Se),s=s+Math.imul(z,pe)|0,v=Math.imul(z,Se),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,xe)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,xe)|0,g=g+Math.imul(y,ye)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(D,ye)|0,v=v+Math.imul(D,Me)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Ee)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Ee)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Le)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Le)|0,g=g+Math.imul(k,Te)|0,s=s+Math.imul(k,Ne)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,Ne)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(re,pe),s=Math.imul(re,Se),s=s+Math.imul(ae,pe)|0,v=Math.imul(ae,Se),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,xe)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,xe)|0,g=g+Math.imul(Z,ye)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(F,ye)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Ee)|0,s=s+Math.imul(D,ge)|0,v=v+Math.imul(D,Ee)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Le)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Le)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(k,Oe)|0,s=s+Math.imul(k,De)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,De)|0;var kt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(kt>>>26)|0,kt&=67108863,g=Math.imul(J,pe),s=Math.imul(J,Se),s=s+Math.imul(le,pe)|0,v=Math.imul(le,Se),g=g+Math.imul(re,we)|0,s=s+Math.imul(re,xe)|0,s=s+Math.imul(ae,we)|0,v=v+Math.imul(ae,xe)|0,g=g+Math.imul(H,ye)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ye)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Ee)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Ee)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Le)|0,s=s+Math.imul(D,Re)|0,v=v+Math.imul(D,Le)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(k,Ie)|0,s=s+Math.imul(k,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Ut=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,g=Math.imul(ue,pe),s=Math.imul(ue,Se),s=s+Math.imul(de,pe)|0,v=Math.imul(de,Se),g=g+Math.imul(J,we)|0,s=s+Math.imul(J,xe)|0,s=s+Math.imul(le,we)|0,v=v+Math.imul(le,xe)|0,g=g+Math.imul(re,ye)|0,s=s+Math.imul(re,Me)|0,s=s+Math.imul(ae,ye)|0,v=v+Math.imul(ae,Me)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Ee)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Ee)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Le)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Le)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(D,Te)|0,v=v+Math.imul(D,Ne)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0,g=g+Math.imul(k,Pe)|0,s=s+Math.imul(k,je)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,je)|0;var Ht=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,g=Math.imul(ie,pe),s=Math.imul(ie,Se),s=s+Math.imul(oe,pe)|0,v=Math.imul(oe,Se),g=g+Math.imul(ue,we)|0,s=s+Math.imul(ue,xe)|0,s=s+Math.imul(de,we)|0,v=v+Math.imul(de,xe)|0,g=g+Math.imul(J,ye)|0,s=s+Math.imul(J,Me)|0,s=s+Math.imul(le,ye)|0,v=v+Math.imul(le,Me)|0,g=g+Math.imul(re,ge)|0,s=s+Math.imul(re,Ee)|0,s=s+Math.imul(ae,ge)|0,v=v+Math.imul(ae,Ee)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Le)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Le)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(D,Oe)|0,v=v+Math.imul(D,De)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(k,Ce)|0,s=s+Math.imul(k,Fe)|0,s=s+Math.imul(Y,Ce)|0,v=v+Math.imul(Y,Fe)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,xe),s=s+Math.imul(oe,we)|0,v=Math.imul(oe,xe),g=g+Math.imul(ue,ye)|0,s=s+Math.imul(ue,Me)|0,s=s+Math.imul(de,ye)|0,v=v+Math.imul(de,Me)|0,g=g+Math.imul(J,ge)|0,s=s+Math.imul(J,Ee)|0,s=s+Math.imul(le,ge)|0,v=v+Math.imul(le,Ee)|0,g=g+Math.imul(re,Re)|0,s=s+Math.imul(re,Le)|0,s=s+Math.imul(ae,Re)|0,v=v+Math.imul(ae,Le)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(D,Ie)|0,v=v+Math.imul(D,$e)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ce)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Ce)|0,v=v+Math.imul(E,Fe)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ye),s=Math.imul(ie,Me),s=s+Math.imul(oe,ye)|0,v=Math.imul(oe,Me),g=g+Math.imul(ue,ge)|0,s=s+Math.imul(ue,Ee)|0,s=s+Math.imul(de,ge)|0,v=v+Math.imul(de,Ee)|0,g=g+Math.imul(J,Re)|0,s=s+Math.imul(J,Le)|0,s=s+Math.imul(le,Re)|0,v=v+Math.imul(le,Le)|0,g=g+Math.imul(re,Te)|0,s=s+Math.imul(re,Ne)|0,s=s+Math.imul(ae,Te)|0,v=v+Math.imul(ae,Ne)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(D,Pe)|0,v=v+Math.imul(D,je)|0,g=g+Math.imul(V,Ce)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Ce)|0,v=v+Math.imul(X,Fe)|0;var At=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(At>>>26)|0,At&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Ee),s=s+Math.imul(oe,ge)|0,v=Math.imul(oe,Ee),g=g+Math.imul(ue,Re)|0,s=s+Math.imul(ue,Le)|0,s=s+Math.imul(de,Re)|0,v=v+Math.imul(de,Le)|0,g=g+Math.imul(J,Te)|0,s=s+Math.imul(J,Ne)|0,s=s+Math.imul(le,Te)|0,v=v+Math.imul(le,Ne)|0,g=g+Math.imul(re,Oe)|0,s=s+Math.imul(re,De)|0,s=s+Math.imul(ae,Oe)|0,v=v+Math.imul(ae,De)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(y,Ce)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(D,Ce)|0,v=v+Math.imul(D,Fe)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Le),s=s+Math.imul(oe,Re)|0,v=Math.imul(oe,Le),g=g+Math.imul(ue,Te)|0,s=s+Math.imul(ue,Ne)|0,s=s+Math.imul(de,Te)|0,v=v+Math.imul(de,Ne)|0,g=g+Math.imul(J,Oe)|0,s=s+Math.imul(J,De)|0,s=s+Math.imul(le,Oe)|0,v=v+Math.imul(le,De)|0,g=g+Math.imul(re,Ie)|0,s=s+Math.imul(re,$e)|0,s=s+Math.imul(ae,Ie)|0,v=v+Math.imul(ae,$e)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ce)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(F,Ce)|0,v=v+Math.imul(F,Fe)|0;var yt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(yt>>>26)|0,yt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,Ne),s=s+Math.imul(oe,Te)|0,v=Math.imul(oe,Ne),g=g+Math.imul(ue,Oe)|0,s=s+Math.imul(ue,De)|0,s=s+Math.imul(de,Oe)|0,v=v+Math.imul(de,De)|0,g=g+Math.imul(J,Ie)|0,s=s+Math.imul(J,$e)|0,s=s+Math.imul(le,Ie)|0,v=v+Math.imul(le,$e)|0,g=g+Math.imul(re,Pe)|0,s=s+Math.imul(re,je)|0,s=s+Math.imul(ae,Pe)|0,v=v+Math.imul(ae,je)|0,g=g+Math.imul(H,Ce)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Ce)|0,v=v+Math.imul(z,Fe)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,De),s=s+Math.imul(oe,Oe)|0,v=Math.imul(oe,De),g=g+Math.imul(ue,Ie)|0,s=s+Math.imul(ue,$e)|0,s=s+Math.imul(de,Ie)|0,v=v+Math.imul(de,$e)|0,g=g+Math.imul(J,Pe)|0,s=s+Math.imul(J,je)|0,s=s+Math.imul(le,Pe)|0,v=v+Math.imul(le,je)|0,g=g+Math.imul(re,Ce)|0,s=s+Math.imul(re,Fe)|0,s=s+Math.imul(ae,Ce)|0,v=v+Math.imul(ae,Fe)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(oe,Ie)|0,v=Math.imul(oe,$e),g=g+Math.imul(ue,Pe)|0,s=s+Math.imul(ue,je)|0,s=s+Math.imul(de,Pe)|0,v=v+Math.imul(de,je)|0,g=g+Math.imul(J,Ce)|0,s=s+Math.imul(J,Fe)|0,s=s+Math.imul(le,Ce)|0,v=v+Math.imul(le,Fe)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,je),s=s+Math.imul(oe,Pe)|0,v=Math.imul(oe,je),g=g+Math.imul(ue,Ce)|0,s=s+Math.imul(ue,Fe)|0,s=s+Math.imul(de,Ce)|0,v=v+Math.imul(de,Fe)|0;var $t=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+($t>>>26)|0,$t&=67108863,g=Math.imul(ie,Ce),s=Math.imul(ie,Fe),s=s+Math.imul(oe,Ce)|0,v=Math.imul(oe,Fe);var Dt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,w[0]=it,w[1]=et,w[2]=Et,w[3]=Ot,w[4]=It,w[5]=Bt,w[6]=kt,w[7]=Ut,w[8]=Ht,w[9]=Lt,w[10]=dt,w[11]=At,w[12]=Mt,w[13]=yt,w[14]=Pt,w[15]=gt,w[16]=bt,w[17]=$t,w[18]=Dt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(B=O);function L(_,o,f){f.negative=o.negative^_.negative,f.length=_.length+o.length;for(var u=0,h=0,p=0;p<f.length-1;p++){var w=h;h=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-_.length+1);s<=g;s++){var v=p-s,T=_.words[v]|0,k=o.words[s]|0,Y=T*k,ee=Y&67108863;w=w+(Y/67108864|0)|0,ee=ee+x|0,x=ee&67108863,w=w+(ee>>>26)|0,h+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=h}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(_,o,f){var u=new C;return u.mulp(_,o,f)}n.prototype.mulTo=function(o,f){var u,h=this.length+o.length;return this.length===10&&o.length===10?u=B(this,o,f):h<63?u=O(this,o,f):h<1024?u=L(this,o,f):u=P(this,o,f),u};function C(_,o){this.x=_,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,h=0;h<o;h++)f[h]=this.revBin(h,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var h=0,p=0;p<f;p++)h|=(o&1)<<f-p-1,o>>=1;return h},C.prototype.permute=function(o,f,u,h,p,w){for(var x=0;x<w;x++)h[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,h,p,w){this.permute(w,o,f,u,h,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var k=s,Y=v,ee=0;ee<x;ee++){var A=u[T+ee],E=h[T+ee],q=u[T+ee+x],V=h[T+ee+x],X=k*q-Y*V;V=k*V+Y*q,q=X,u[T+ee]=A+q,h[T+ee]=E+V,u[T+ee+x]=A-q,h[T+ee+x]=E-V,ee!==g&&(X=s*k-v*Y,Y=s*Y+v*k,k=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,h=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+h},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var h=0;h<u/2;h++){var p=o[h];o[h]=o[u-h-1],o[u-h-1]=p,p=f[h],f[h]=-f[u-h-1],f[u-h-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,h=0;h<f/2;h++){var p=Math.round(o[2*h+1]/f)*8192+Math.round(o[2*h]/f)+u;o[h]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,h){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<h;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var h=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(h),w=this.stub(h),x=new Array(h),g=new Array(h),s=new Array(h),v=new Array(h),T=new Array(h),k=new Array(h),Y=u.words;Y.length=h,this.convert13b(o.words,o.length,x,h),this.convert13b(f.words,f.length,v,h),this.transform(x,w,g,s,h,p),this.transform(v,w,T,k,h,p);for(var ee=0;ee<h;ee++){var A=g[ee]*T[ee]-s[ee]*k[ee];s[ee]=g[ee]*k[ee]+s[ee]*T[ee],g[ee]=A}return this.conjugate(g,s,h),this.transform(g,s,Y,w,h,p),this.conjugate(Y,w,h),this.normalize13b(Y,h),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var h=(this.words[u]|0)*o,p=(h&67108863)+(f&67108863);f>>=26,f+=h/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,h=0;h<f.length&&f[h]===0;h++,u=u.sqr());if(++h<f.length)for(var p=u.sqr();h<f.length;h++,p=p.sqr())f[h]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&h,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var h;f?h=(f-f%26)/26:h=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(h-=w,h=Math.max(0,h),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=h);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&h)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var h=67108863^67108863>>>f<<f;this.words[this.length-1]&=h}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var h=o.length+u,p;this._expand(h);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,h=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),h.iushln(u),w=p.words[p.length-1]|0);var g=h.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=h.clone()._ishlnsubmul(p,1,g);T.negative===0&&(h=T,s&&(s.words[g]=1));for(var k=g-1;k>=0;k--){var Y=(h.words[p.length+k]|0)*67108864+(h.words[p.length+k-1]|0);for(Y=Math.min(Y/w|0,67108863),h._ishlnsubmul(p,Y,k);h.negative!==0;)Y--,h.negative=0,h._ishlnsubmul(p,1,k),h.isZero()||(h.negative^=1);s&&(s.words[k]=Y)}return s&&s.strip(),h.strip(),f!=="div"&&u!==0&&h.iushrn(u),{div:s||null,mod:h}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var h,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(h=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:h,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(h=w.div.neg()),{div:h,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,h=o.ushrn(1),p=o.andln(1),w=u.cmp(h);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,h=this.length-1;h>=0;h--)u=(f*u+(this.words[h]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var h=(this.words[u]|0)+f*67108864;this.words[u]=h/o|0,f=h%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,k=1;!(f.words[0]&k)&&T<26;++T,k<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(h.isOdd()||p.isOdd())&&(h.iadd(s),p.isub(v)),h.iushrn(1),p.iushrn(1);for(var Y=0,ee=1;!(u.words[0]&ee)&&Y<26;++Y,ee<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(w),p.isub(x)):(u.isub(f),w.isub(h),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)h.isOdd()&&h.iadd(w),h.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(p)):(u.isub(f),p.isub(h))}var T;return f.cmpn(1)===0?T=h:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var h=0;f.isEven()&&u.isEven();h++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(h)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=h,this;for(var p=h,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var h=this.words[0]|0;u=h===o?0:h<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var h=this.words[u]|0,p=o.words[u]|0;if(h!==p){h<p?f=-1:h>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new W(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var j={k256:null,p224:null,p192:null,p25519:null};function $(_,o){this.name=_,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var h=u<this.n?-1:f.ucmp(this.p);return h===0?(f.words[0]=0,f.length=1):h>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function K(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(K,$),K.prototype.split=function(o,f){for(var u=4194303,h=Math.min(o.length,9),p=0;p<h;p++)f.words[p]=o.words[p];if(f.length=h,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},K.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var h=o.words[u]|0;f+=h*977,o.words[u]=f&67108863,f=h*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function te(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(te,$);function Q(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(Q,$),Q.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var h=(o.words[u]|0)*19+f,p=h&67108863;h>>>=26,o.words[u]=p,f=h}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(j[o])return j[o];var f;if(o==="k256")f=new K;else if(o==="p224")f=new G;else if(o==="p192")f=new te;else if(o==="p25519")f=new Q;else throw new Error("Unknown prime "+o);return j[o]=f,f};function W(_){if(typeof _=="string"){var o=n._prime(_);this.m=o.p,this.prime=o}else i(_.gtn(1),"modulus must be greater than 1"),this.m=_,this.prime=null}W.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},W.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},W.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},W.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},W.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},W.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},W.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},W.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},W.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},W.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},W.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},W.prototype.isqr=function(o){return this.imul(o,o.clone())},W.prototype.sqr=function(o){return this.mul(o,o)},W.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var h=this.m.subn(1),p=0;!h.isZero()&&h.andln(1)===0;)p++,h.iushrn(1);i(!h.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,h),T=this.pow(o,h.addn(1).iushrn(1)),k=this.pow(o,h),Y=p;k.cmp(w)!==0;){for(var ee=k,A=0;ee.cmp(w)!==0;A++)ee=ee.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),k=k.redMul(v),Y=A}return T},W.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},W.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,h=new Array(1<<u);h[0]=new n(1).toRed(this),h[1]=o;for(var p=2;p<h.length;p++)h[p]=this.mul(h[p-1],o);var w=h[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var k=v>>T&1;if(w!==h[0]&&(w=this.sqr(w)),k===0&&x===0){g=0;continue}x<<=1,x|=k,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,h[x]),g=0,x=0)}s=26}return w},W.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},W.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new ce(o)};function ce(_){W.call(this,_),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(ce,W),ce.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},ce.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},ce.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(Yg);var _q=Yg.exports,ou={exports:{}},Aw;function Zg(){if(Aw)return ou.exports;Aw=1;var e;ou.exports=function(a){return e||(e=new t(null)),e.generate(a)};function t(i){this.rand=i}if(ou.exports.Rand=t,t.prototype.generate=function(a){return this._rand(a)},t.prototype._rand=function(a){if(this.rand.getBytes)return this.rand.getBytes(a);for(var n=new Uint8Array(a),l=0;l<n.length;l++)n[l]=this.rand.getByte();return n},typeof self=="object")self.crypto&&self.crypto.getRandomValues?t.prototype._rand=function(a){var n=new Uint8Array(a);return self.crypto.getRandomValues(n),n}:self.msCrypto&&self.msCrypto.getRandomValues?t.prototype._rand=function(a){var n=new Uint8Array(a);return self.msCrypto.getRandomValues(n),n}:typeof window=="object"&&(t.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var r=_E();if(typeof r.randomBytes!="function")throw new Error("Not supported");t.prototype._rand=function(a){return r.randomBytes(a)}}catch{}return ou.exports}var y0,Tw;function c4(){if(Tw)return y0;Tw=1;var e=_q,t=Zg();function r(i){this.rand=i||new t.Rand}return y0=r,r.create=function(a){return new r(a)},r.prototype._randbelow=function(a){var n=a.bitLength(),l=Math.ceil(n/8);do var c=new e(this.rand.generate(l));while(c.cmp(a)>=0);return c},r.prototype._randrange=function(a,n){var l=n.sub(a);return a.add(this._randbelow(l))},r.prototype.test=function(a,n,l){var c=a.bitLength(),d=e.mont(a),m=new e(1).toRed(d);n||(n=Math.max(1,c/48|0));for(var M=a.subn(1),S=0;!M.testn(S);S++);for(var R=a.shrn(S),I=M.toRed(d),O=!0;n>0;n--){var B=this._randrange(new e(2),M);l&&l(B);var L=B.toRed(d).redPow(R);if(!(L.cmp(m)===0||L.cmp(I)===0)){for(var P=1;P<S;P++){if(L=L.redSqr(),L.cmp(m)===0)return!1;if(L.cmp(I)===0)break}if(P===S)return!1}}return O},r.prototype.getDivisor=function(a,n){var l=a.bitLength(),c=e.mont(a),d=new e(1).toRed(c);n||(n=Math.max(1,l/48|0));for(var m=a.subn(1),M=0;!m.testn(M);M++);for(var S=a.shrn(M),R=m.toRed(c);n>0;n--){var I=this._randrange(new e(2),m),O=a.gcd(I);if(O.cmpn(1)!==0)return O;var B=I.toRed(c).redPow(S);if(!(B.cmp(d)===0||B.cmp(R)===0)){for(var L=1;L<M;L++){if(B=B.redSqr(),B.cmp(d)===0)return B.fromRed().subn(1).gcd(a);if(B.cmp(R)===0)break}if(L===M)return B=B.redSqr(),B.fromRed().subn(1).gcd(a)}}return!1},y0}var b0,Ow;function d4(){if(Ow)return b0;Ow=1;var e=Vs;b0=L,L.simpleSieve=O,L.fermatTest=B;var t=h4,r=new t(24),i=c4(),a=new i,n=new t(1),l=new t(2),c=new t(5);new t(16),new t(8);var d=new t(10),m=new t(3);new t(7);var M=new t(11),S=new t(4);new t(12);var R=null;function I(){if(R!==null)return R;var P=1048576,C=[];C[0]=2;for(var j=1,$=3;$<P;$+=2){for(var K=Math.ceil(Math.sqrt($)),G=0;G<j&&C[G]<=K&&$%C[G]!==0;G++);j!==G&&C[G]<=K||(C[j++]=$)}return R=C,C}function O(P){for(var C=I(),j=0;j<C.length;j++)if(P.modn(C[j])===0)return P.cmpn(C[j])===0;return!0}function B(P){var C=t.mont(P);return l.toRed(C).redPow(P.subn(1)).fromRed().cmpn(1)===0}function L(P,C){if(P<16)return C===2||C===5?new t([140,123]):new t([140,39]);C=new t(C);for(var j,$;;){for(j=new t(e(Math.ceil(P/8)));j.bitLength()>P;)j.ishrn(1);if(j.isEven()&&j.iadd(n),j.testn(1)||j.iadd(l),C.cmp(l)){if(!C.cmp(c))for(;j.mod(d).cmp(m);)j.iadd(S)}else for(;j.mod(r).cmp(M);)j.iadd(S);if($=j.shrn(1),O($)&&O(j)&&B($)&&B(j)&&a.test($)&&a.test(j))return j}}return b0}const Mq={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},Sq={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},xq={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},Eq={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},Rq={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},Aq={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},Tq={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},Oq={gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"},Iq={modp1:Mq,modp2:Sq,modp5:xq,modp14:Eq,modp15:Rq,modp16:Aq,modp17:Tq,modp18:Oq};var w0,Iw;function Pq(){if(Iw)return w0;Iw=1;var e=h4,t=c4(),r=new t,i=new e(24),a=new e(11),n=new e(10),l=new e(3),c=new e(7),d=d4(),m=Vs;w0=O;function M(L,P){return P=P||"utf8",ke.Buffer.isBuffer(L)||(L=new ke.Buffer(L,P)),this._pub=new e(L),this}function S(L,P){return P=P||"utf8",ke.Buffer.isBuffer(L)||(L=new ke.Buffer(L,P)),this._priv=new e(L),this}var R={};function I(L,P){var C=P.toString("hex"),j=[C,L.toString(16)].join("_");if(j in R)return R[j];var $=0;if(L.isEven()||!d.simpleSieve||!d.fermatTest(L)||!r.test(L))return $+=1,C==="02"||C==="05"?$+=8:$+=4,R[j]=$,$;r.test(L.shrn(1))||($+=2);var K;switch(C){case"02":L.mod(i).cmp(a)&&($+=8);break;case"05":K=L.mod(n),K.cmp(l)&&K.cmp(c)&&($+=8);break;default:$+=4}return R[j]=$,$}function O(L,P,C){this.setGenerator(P),this.__prime=new e(L),this._prime=e.mont(this.__prime),this._primeLen=L.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,C?(this.setPublicKey=M,this.setPrivateKey=S):this._primeCode=8}Object.defineProperty(O.prototype,"verifyError",{enumerable:!0,get:function(){return typeof this._primeCode!="number"&&(this._primeCode=I(this.__prime,this.__gen)),this._primeCode}}),O.prototype.generateKeys=function(){return this._priv||(this._priv=new e(m(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},O.prototype.computeSecret=function(L){L=new e(L),L=L.toRed(this._prime);var P=L.redPow(this._priv).fromRed(),C=new ke.Buffer(P.toArray()),j=this.getPrime();if(C.length<j.length){var $=new ke.Buffer(j.length-C.length);$.fill(0),C=ke.Buffer.concat([$,C])}return C},O.prototype.getPublicKey=function(P){return B(this._pub,P)},O.prototype.getPrivateKey=function(P){return B(this._priv,P)},O.prototype.getPrime=function(L){return B(this.__prime,L)},O.prototype.getGenerator=function(L){return B(this._gen,L)},O.prototype.setGenerator=function(L,P){return P=P||"utf8",ke.Buffer.isBuffer(L)||(L=new ke.Buffer(L,P)),this.__gen=L,this._gen=new e(L),this};function B(L,P){var C=new ke.Buffer(L.toArray());return P?C.toString(P):C}return w0}var Pw;function Cq(){if(Pw)return Yo;Pw=1;var e=d4(),t=Iq,r=Pq();function i(l){var c=new ke.Buffer(t[l].prime,"hex"),d=new ke.Buffer(t[l].gen,"hex");return new r(c,d)}var a={binary:!0,hex:!0,base64:!0};function n(l,c,d,m){return ke.Buffer.isBuffer(c)||a[c]===void 0?n(l,"binary",c,d):(c=c||"binary",m=m||"binary",d=d||new ke.Buffer([2]),ke.Buffer.isBuffer(d)||(d=new ke.Buffer(d,m)),typeof l=="number"?new r(e(l,d),d,!0):(ke.Buffer.isBuffer(l)||(l=new ke.Buffer(l,c)),new r(l,d,!0)))}return Yo.DiffieHellmanGroup=Yo.createDiffieHellmanGroup=Yo.getDiffieHellman=i,Yo.createDiffieHellman=Yo.DiffieHellman=n,Yo}var sv={exports:{}},p4=Lr.EventEmitter,_0,Cw;function Bq(){if(Cw)return _0;Cw=1;function e(O,B){var L=Object.keys(O);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(O);B&&(P=P.filter(function(C){return Object.getOwnPropertyDescriptor(O,C).enumerable})),L.push.apply(L,P)}return L}function t(O){for(var B=1;B<arguments.length;B++){var L=arguments[B]!=null?arguments[B]:{};B%2?e(Object(L),!0).forEach(function(P){r(O,P,L[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(O,Object.getOwnPropertyDescriptors(L)):e(Object(L)).forEach(function(P){Object.defineProperty(O,P,Object.getOwnPropertyDescriptor(L,P))})}return O}function r(O,B,L){return B=l(B),B in O?Object.defineProperty(O,B,{value:L,enumerable:!0,configurable:!0,writable:!0}):O[B]=L,O}function i(O,B){if(!(O instanceof B))throw new TypeError("Cannot call a class as a function")}function a(O,B){for(var L=0;L<B.length;L++){var P=B[L];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(O,l(P.key),P)}}function n(O,B,L){return B&&a(O.prototype,B),L&&a(O,L),Object.defineProperty(O,"prototype",{writable:!1}),O}function l(O){var B=c(O,"string");return typeof B=="symbol"?B:String(B)}function c(O,B){if(typeof O!="object"||O===null)return O;var L=O[Symbol.toPrimitive];if(L!==void 0){var P=L.call(O,B||"default");if(typeof P!="object")return P;throw new TypeError("@@toPrimitive must return a primitive value.")}return(B==="string"?String:Number)(O)}var d=ke,m=d.Buffer,M=ri,S=M.inspect,R=S&&S.custom||"inspect";function I(O,B,L){m.prototype.copy.call(O,B,L)}return _0=function(){function O(){i(this,O),this.head=null,this.tail=null,this.length=0}return n(O,[{key:"push",value:function(L){var P={data:L,next:null};this.length>0?this.tail.next=P:this.head=P,this.tail=P,++this.length}},{key:"unshift",value:function(L){var P={data:L,next:this.head};this.length===0&&(this.tail=P),this.head=P,++this.length}},{key:"shift",value:function(){if(this.length!==0){var L=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,L}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(L){if(this.length===0)return"";for(var P=this.head,C=""+P.data;P=P.next;)C+=L+P.data;return C}},{key:"concat",value:function(L){if(this.length===0)return m.alloc(0);for(var P=m.allocUnsafe(L>>>0),C=this.head,j=0;C;)I(C.data,P,j),j+=C.data.length,C=C.next;return P}},{key:"consume",value:function(L,P){var C;return L<this.head.data.length?(C=this.head.data.slice(0,L),this.head.data=this.head.data.slice(L)):L===this.head.data.length?C=this.shift():C=P?this._getString(L):this._getBuffer(L),C}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(L){var P=this.head,C=1,j=P.data;for(L-=j.length;P=P.next;){var $=P.data,K=L>$.length?$.length:L;if(K===$.length?j+=$:j+=$.slice(0,L),L-=K,L===0){K===$.length?(++C,P.next?this.head=P.next:this.head=this.tail=null):(this.head=P,P.data=$.slice(K));break}++C}return this.length-=C,j}},{key:"_getBuffer",value:function(L){var P=m.allocUnsafe(L),C=this.head,j=1;for(C.data.copy(P),L-=C.data.length;C=C.next;){var $=C.data,K=L>$.length?$.length:L;if($.copy(P,P.length-L,0,K),L-=K,L===0){K===$.length?(++j,C.next?this.head=C.next:this.head=this.tail=null):(this.head=C,C.data=$.slice(K));break}++j}return this.length-=j,P}},{key:R,value:function(L,P){return S(this,t(t({},P),{},{depth:0,customInspect:!1}))}}]),O}(),_0}function Lq(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,_e.nextTick(fv,this,e)):_e.nextTick(fv,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?_e.nextTick(Ou,r):(r._writableState.errorEmitted=!0,_e.nextTick(Bw,r,n)):_e.nextTick(Bw,r,n):t?(_e.nextTick(Ou,r),t(n)):_e.nextTick(Ou,r)}),this)}function Bw(e,t){fv(e,t),Ou(e)}function Ou(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function Nq(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function fv(e,t){e.emit("error",t)}function kq(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}var v4={destroy:Lq,undestroy:Nq,errorOrDestroy:kq},$a={};function $q(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var g4={};function Oi(e,t,r){r||(r=Error);function i(n,l,c){return typeof t=="string"?t:t(n,l,c)}var a=function(n){$q(l,n);function l(c,d,m){return n.call(this,i(c,d,m))||this}return l}(r);a.prototype.name=r.name,a.prototype.code=e,g4[e]=a}function Lw(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(i){return String(i)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function Dq(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function Fq(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function jq(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Oi("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Oi("ERR_INVALID_ARG_TYPE",function(e,t,r){var i;typeof t=="string"&&Dq(t,"not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";var a;if(Fq(e," argument"))a="The ".concat(e," ").concat(i," ").concat(Lw(t,"type"));else{var n=jq(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(n," ").concat(i," ").concat(Lw(t,"type"))}return a+=". Received type ".concat(typeof r),a},TypeError);Oi("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Oi("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Oi("ERR_STREAM_PREMATURE_CLOSE","Premature close");Oi("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Oi("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Oi("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Oi("ERR_STREAM_WRITE_AFTER_END","write after end");Oi("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Oi("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Oi("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");$a.codes=g4;var Uq=$a.codes.ERR_INVALID_OPT_VALUE;function Hq(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function qq(e,t,r,i){var a=Hq(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=i?r:"highWaterMark";throw new Uq(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}var m4={getHighWaterMark:qq},M0,Nw;function y4(){if(Nw)return M0;Nw=1,M0=Q;function e(A){var E=this;this.next=null,this.entry=null,this.finish=function(){ee(E,A)}}var t;Q.WritableState=G;var r={deprecate:Ws},i=p4,a=ke.Buffer,n=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function l(A){return a.from(A)}function c(A){return a.isBuffer(A)||A instanceof n}var d=v4,m=m4,M=m.getHighWaterMark,S=$a.codes,R=S.ERR_INVALID_ARG_TYPE,I=S.ERR_METHOD_NOT_IMPLEMENTED,O=S.ERR_MULTIPLE_CALLBACK,B=S.ERR_STREAM_CANNOT_PIPE,L=S.ERR_STREAM_DESTROYED,P=S.ERR_STREAM_NULL_VALUES,C=S.ERR_STREAM_WRITE_AFTER_END,j=S.ERR_UNKNOWN_ENCODING,$=d.errorOrDestroy;Ye(Q,i);function K(){}function G(A,E,q){t=t||Ps(),A=A||{},typeof q!="boolean"&&(q=E instanceof t),this.objectMode=!!A.objectMode,q&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=M(this,A,"writableHighWaterMark",q),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var V=A.decodeStrings===!1;this.decodeStrings=!V,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(X){p(E,X)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=A.emitClose!==!1,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}G.prototype.getBuffer=function(){for(var E=this.bufferedRequest,q=[];E;)q.push(E),E=E.next;return q},function(){try{Object.defineProperty(G.prototype,"buffer",{get:r.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var te;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(te=Function.prototype[Symbol.hasInstance],Object.defineProperty(Q,Symbol.hasInstance,{value:function(E){return te.call(this,E)?!0:this!==Q?!1:E&&E._writableState instanceof G}})):te=function(E){return E instanceof this};function Q(A){t=t||Ps();var E=this instanceof t;if(!E&&!te.call(Q,this))return new Q(A);this._writableState=new G(A,this,E),this.writable=!0,A&&(typeof A.write=="function"&&(this._write=A.write),typeof A.writev=="function"&&(this._writev=A.writev),typeof A.destroy=="function"&&(this._destroy=A.destroy),typeof A.final=="function"&&(this._final=A.final)),i.call(this)}Q.prototype.pipe=function(){$(this,new B)};function W(A,E){var q=new C;$(A,q),_e.nextTick(E,q)}function ce(A,E,q,V){var X;return q===null?X=new P:typeof q!="string"&&!E.objectMode&&(X=new R("chunk",["string","Buffer"],q)),X?($(A,X),_e.nextTick(V,X),!1):!0}Q.prototype.write=function(A,E,q){var V=this._writableState,X=!1,b=!V.objectMode&&c(A);return b&&!a.isBuffer(A)&&(A=l(A)),typeof E=="function"&&(q=E,E=null),b?E="buffer":E||(E=V.defaultEncoding),typeof q!="function"&&(q=K),V.ending?W(this,q):(b||ce(this,V,A,q))&&(V.pendingcb++,X=o(this,V,b,A,E,q)),X},Q.prototype.cork=function(){this._writableState.corked++},Q.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,!A.writing&&!A.corked&&!A.bufferProcessing&&A.bufferedRequest&&g(this,A))},Q.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=E.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((E+"").toLowerCase())>-1))throw new j(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(Q.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function _(A,E,q){return!A.objectMode&&A.decodeStrings!==!1&&typeof E=="string"&&(E=a.from(E,q)),E}Object.defineProperty(Q.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o(A,E,q,V,X,b){if(!q){var y=_(E,V,X);V!==y&&(q=!0,X="buffer",V=y)}var D=E.objectMode?1:V.length;E.length+=D;var U=E.length<E.highWaterMark;if(U||(E.needDrain=!0),E.writing||E.corked){var Z=E.lastBufferedRequest;E.lastBufferedRequest={chunk:V,encoding:X,isBuf:q,callback:b,next:null},Z?Z.next=E.lastBufferedRequest:E.bufferedRequest=E.lastBufferedRequest,E.bufferedRequestCount+=1}else f(A,E,!1,D,V,X,b);return U}function f(A,E,q,V,X,b,y){E.writelen=V,E.writecb=y,E.writing=!0,E.sync=!0,E.destroyed?E.onwrite(new L("write")):q?A._writev(X,E.onwrite):A._write(X,b,E.onwrite),E.sync=!1}function u(A,E,q,V,X){--E.pendingcb,q?(_e.nextTick(X,V),_e.nextTick(k,A,E),A._writableState.errorEmitted=!0,$(A,V)):(X(V),A._writableState.errorEmitted=!0,$(A,V),k(A,E))}function h(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}function p(A,E){var q=A._writableState,V=q.sync,X=q.writecb;if(typeof X!="function")throw new O;if(h(q),E)u(A,q,V,E,X);else{var b=s(q)||A.destroyed;!b&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest&&g(A,q),V?_e.nextTick(w,A,q,b,X):w(A,q,b,X)}}function w(A,E,q,V){q||x(A,E),E.pendingcb--,V(),k(A,E)}function x(A,E){E.length===0&&E.needDrain&&(E.needDrain=!1,A.emit("drain"))}function g(A,E){E.bufferProcessing=!0;var q=E.bufferedRequest;if(A._writev&&q&&q.next){var V=E.bufferedRequestCount,X=new Array(V),b=E.corkedRequestsFree;b.entry=q;for(var y=0,D=!0;q;)X[y]=q,q.isBuf||(D=!1),q=q.next,y+=1;X.allBuffers=D,f(A,E,!0,E.length,X,"",b.finish),E.pendingcb++,E.lastBufferedRequest=null,b.next?(E.corkedRequestsFree=b.next,b.next=null):E.corkedRequestsFree=new e(E),E.bufferedRequestCount=0}else{for(;q;){var U=q.chunk,Z=q.encoding,F=q.callback,N=E.objectMode?1:U.length;if(f(A,E,!1,N,U,Z,F),q=q.next,E.bufferedRequestCount--,E.writing)break}q===null&&(E.lastBufferedRequest=null)}E.bufferedRequest=q,E.bufferProcessing=!1}Q.prototype._write=function(A,E,q){q(new I("_write()"))},Q.prototype._writev=null,Q.prototype.end=function(A,E,q){var V=this._writableState;return typeof A=="function"?(q=A,A=null,E=null):typeof E=="function"&&(q=E,E=null),A!=null&&this.write(A,E),V.corked&&(V.corked=1,this.uncork()),V.ending||Y(this,V,q),this},Object.defineProperty(Q.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function s(A){return A.ending&&A.length===0&&A.bufferedRequest===null&&!A.finished&&!A.writing}function v(A,E){A._final(function(q){E.pendingcb--,q&&$(A,q),E.prefinished=!0,A.emit("prefinish"),k(A,E)})}function T(A,E){!E.prefinished&&!E.finalCalled&&(typeof A._final=="function"&&!E.destroyed?(E.pendingcb++,E.finalCalled=!0,_e.nextTick(v,A,E)):(E.prefinished=!0,A.emit("prefinish")))}function k(A,E){var q=s(E);if(q&&(T(A,E),E.pendingcb===0&&(E.finished=!0,A.emit("finish"),E.autoDestroy))){var V=A._readableState;(!V||V.autoDestroy&&V.endEmitted)&&A.destroy()}return q}function Y(A,E,q){E.ending=!0,k(A,E),q&&(E.finished?_e.nextTick(q):A.once("finish",q)),E.ended=!0,A.writable=!1}function ee(A,E,q){var V=A.entry;for(A.entry=null;V;){var X=V.callback;E.pendingcb--,X(q),V=V.next}E.corkedRequestsFree.next=A}return Object.defineProperty(Q.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(E){this._writableState&&(this._writableState.destroyed=E)}}),Q.prototype.destroy=d.destroy,Q.prototype._undestroy=d.undestroy,Q.prototype._destroy=function(A,E){E(A)},M0}var S0,kw;function Ps(){if(kw)return S0;kw=1;var e=Object.keys||function(m){var M=[];for(var S in m)M.push(S);return M};S0=l;var t=w4(),r=y4();Ye(l,t);for(var i=e(r.prototype),a=0;a<i.length;a++){var n=i[a];l.prototype[n]||(l.prototype[n]=r.prototype[n])}function l(m){if(!(this instanceof l))return new l(m);t.call(this,m),r.call(this,m),this.allowHalfOpen=!0,m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",c)))}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function c(){this._writableState.ended||_e.nextTick(d,this)}function d(m){m.end()}return Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(M){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=M,this._writableState.destroyed=M)}}),S0}var $w=$a.codes.ERR_STREAM_PREMATURE_CLOSE;function Wq(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];e.apply(this,i)}}}function Kq(){}function Vq(e){return e.setHeader&&typeof e.abort=="function"}function b4(e,t,r){if(typeof t=="function")return b4(e,null,t);t||(t={}),r=Wq(r||Kq);var i=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||c()},l=e._writableState&&e._writableState.finished,c=function(){a=!1,l=!0,i||r.call(e)},d=e._readableState&&e._readableState.endEmitted,m=function(){i=!1,d=!0,a||r.call(e)},M=function(O){r.call(e,O)},S=function(){var O;if(i&&!d)return(!e._readableState||!e._readableState.ended)&&(O=new $w),r.call(e,O);if(a&&!l)return(!e._writableState||!e._writableState.ended)&&(O=new $w),r.call(e,O)},R=function(){e.req.on("finish",c)};return Vq(e)?(e.on("complete",c),e.on("abort",S),e.req?R():e.on("request",R)):a&&!e._writableState&&(e.on("end",n),e.on("close",n)),e.on("end",m),e.on("finish",c),t.error!==!1&&e.on("error",M),e.on("close",S),function(){e.removeListener("complete",c),e.removeListener("abort",S),e.removeListener("request",R),e.req&&e.req.removeListener("finish",c),e.removeListener("end",n),e.removeListener("close",n),e.removeListener("finish",c),e.removeListener("end",m),e.removeListener("error",M),e.removeListener("close",S)}}var Xg=b4,x0,Dw;function zq(){if(Dw)return x0;Dw=1;var e;function t(j,$,K){return $=r($),$ in j?Object.defineProperty(j,$,{value:K,enumerable:!0,configurable:!0,writable:!0}):j[$]=K,j}function r(j){var $=i(j,"string");return typeof $=="symbol"?$:String($)}function i(j,$){if(typeof j!="object"||j===null)return j;var K=j[Symbol.toPrimitive];if(K!==void 0){var G=K.call(j,$||"default");if(typeof G!="object")return G;throw new TypeError("@@toPrimitive must return a primitive value.")}return($==="string"?String:Number)(j)}var a=Xg,n=Symbol("lastResolve"),l=Symbol("lastReject"),c=Symbol("error"),d=Symbol("ended"),m=Symbol("lastPromise"),M=Symbol("handlePromise"),S=Symbol("stream");function R(j,$){return{value:j,done:$}}function I(j){var $=j[n];if($!==null){var K=j[S].read();K!==null&&(j[m]=null,j[n]=null,j[l]=null,$(R(K,!1)))}}function O(j){_e.nextTick(I,j)}function B(j,$){return function(K,G){j.then(function(){if($[d]){K(R(void 0,!0));return}$[M](K,G)},G)}}var L=Object.getPrototypeOf(function(){}),P=Object.setPrototypeOf((e={get stream(){return this[S]},next:function(){var $=this,K=this[c];if(K!==null)return Promise.reject(K);if(this[d])return Promise.resolve(R(void 0,!0));if(this[S].destroyed)return new Promise(function(W,ce){_e.nextTick(function(){$[c]?ce($[c]):W(R(void 0,!0))})});var G=this[m],te;if(G)te=new Promise(B(G,this));else{var Q=this[S].read();if(Q!==null)return Promise.resolve(R(Q,!1));te=new Promise(this[M])}return this[m]=te,te}},t(e,Symbol.asyncIterator,function(){return this}),t(e,"return",function(){var $=this;return new Promise(function(K,G){$[S].destroy(null,function(te){if(te){G(te);return}K(R(void 0,!0))})})}),e),L),C=function($){var K,G=Object.create(P,(K={},t(K,S,{value:$,writable:!0}),t(K,n,{value:null,writable:!0}),t(K,l,{value:null,writable:!0}),t(K,c,{value:null,writable:!0}),t(K,d,{value:$._readableState.endEmitted,writable:!0}),t(K,M,{value:function(Q,W){var ce=G[S].read();ce?(G[m]=null,G[n]=null,G[l]=null,Q(R(ce,!1))):(G[n]=Q,G[l]=W)},writable:!0}),K));return G[m]=null,a($,function(te){if(te&&te.code!=="ERR_STREAM_PREMATURE_CLOSE"){var Q=G[l];Q!==null&&(G[m]=null,G[n]=null,G[l]=null,Q(te)),G[c]=te;return}var W=G[n];W!==null&&(G[m]=null,G[n]=null,G[l]=null,W(R(void 0,!0))),G[d]=!0}),$.on("readable",O.bind(null,G)),G};return x0=C,x0}var E0,Fw;function Gq(){return Fw||(Fw=1,E0=function(){throw new Error("Readable.from is not available in the browser")}),E0}var R0,jw;function w4(){if(jw)return R0;jw=1,R0=W;var e;W.ReadableState=Q,Lr.EventEmitter;var t=function(y,D){return y.listeners(D).length},r=p4,i=ke.Buffer,a=(typeof Ze<"u"?Ze:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function n(b){return i.from(b)}function l(b){return i.isBuffer(b)||b instanceof a}var c=ri,d;c&&c.debuglog?d=c.debuglog("stream"):d=function(){};var m=Bq(),M=v4,S=m4,R=S.getHighWaterMark,I=$a.codes,O=I.ERR_INVALID_ARG_TYPE,B=I.ERR_STREAM_PUSH_AFTER_EOF,L=I.ERR_METHOD_NOT_IMPLEMENTED,P=I.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,C,j,$;Ye(W,r);var K=M.errorOrDestroy,G=["error","close","destroy","pause","resume"];function te(b,y,D){if(typeof b.prependListener=="function")return b.prependListener(y,D);!b._events||!b._events[y]?b.on(y,D):Array.isArray(b._events[y])?b._events[y].unshift(D):b._events[y]=[D,b._events[y]]}function Q(b,y,D){e=e||Ps(),b=b||{},typeof D!="boolean"&&(D=y instanceof e),this.objectMode=!!b.objectMode,D&&(this.objectMode=this.objectMode||!!b.readableObjectMode),this.highWaterMark=R(this,b,"readableHighWaterMark",D),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=b.emitClose!==!1,this.autoDestroy=!!b.autoDestroy,this.destroyed=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(C||(C=Jr().StringDecoder),this.decoder=new C(b.encoding),this.encoding=b.encoding)}function W(b){if(e=e||Ps(),!(this instanceof W))return new W(b);var y=this instanceof e;this._readableState=new Q(b,this,y),this.readable=!0,b&&(typeof b.read=="function"&&(this._read=b.read),typeof b.destroy=="function"&&(this._destroy=b.destroy)),r.call(this)}Object.defineProperty(W.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(y){this._readableState&&(this._readableState.destroyed=y)}}),W.prototype.destroy=M.destroy,W.prototype._undestroy=M.undestroy,W.prototype._destroy=function(b,y){y(b)},W.prototype.push=function(b,y){var D=this._readableState,U;return D.objectMode?U=!0:typeof b=="string"&&(y=y||D.defaultEncoding,y!==D.encoding&&(b=i.from(b,y),y=""),U=!0),ce(this,b,y,!1,U)},W.prototype.unshift=function(b){return ce(this,b,null,!0,!1)};function ce(b,y,D,U,Z){d("readableAddChunk",y);var F=b._readableState;if(y===null)F.reading=!1,p(b,F);else{var N;if(Z||(N=o(F,y)),N)K(b,N);else if(F.objectMode||y&&y.length>0)if(typeof y!="string"&&!F.objectMode&&Object.getPrototypeOf(y)!==i.prototype&&(y=n(y)),U)F.endEmitted?K(b,new P):_(b,F,y,!0);else if(F.ended)K(b,new B);else{if(F.destroyed)return!1;F.reading=!1,F.decoder&&!D?(y=F.decoder.write(y),F.objectMode||y.length!==0?_(b,F,y,!1):g(b,F)):_(b,F,y,!1)}else U||(F.reading=!1,g(b,F))}return!F.ended&&(F.length<F.highWaterMark||F.length===0)}function _(b,y,D,U){y.flowing&&y.length===0&&!y.sync?(y.awaitDrain=0,b.emit("data",D)):(y.length+=y.objectMode?1:D.length,U?y.buffer.unshift(D):y.buffer.push(D),y.needReadable&&w(b)),g(b,y)}function o(b,y){var D;return!l(y)&&typeof y!="string"&&y!==void 0&&!b.objectMode&&(D=new O("chunk",["string","Buffer","Uint8Array"],y)),D}W.prototype.isPaused=function(){return this._readableState.flowing===!1},W.prototype.setEncoding=function(b){C||(C=Jr().StringDecoder);var y=new C(b);this._readableState.decoder=y,this._readableState.encoding=this._readableState.decoder.encoding;for(var D=this._readableState.buffer.head,U="";D!==null;)U+=y.write(D.data),D=D.next;return this._readableState.buffer.clear(),U!==""&&this._readableState.buffer.push(U),this._readableState.length=U.length,this};var f=1073741824;function u(b){return b>=f?b=f:(b--,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++),b}function h(b,y){return b<=0||y.length===0&&y.ended?0:y.objectMode?1:b!==b?y.flowing&&y.length?y.buffer.head.data.length:y.length:(b>y.highWaterMark&&(y.highWaterMark=u(b)),b<=y.length?b:y.ended?y.length:(y.needReadable=!0,0))}W.prototype.read=function(b){d("read",b),b=parseInt(b,10);var y=this._readableState,D=b;if(b!==0&&(y.emittedReadable=!1),b===0&&y.needReadable&&((y.highWaterMark!==0?y.length>=y.highWaterMark:y.length>0)||y.ended))return d("read: emitReadable",y.length,y.ended),y.length===0&&y.ended?q(this):w(this),null;if(b=h(b,y),b===0&&y.ended)return y.length===0&&q(this),null;var U=y.needReadable;d("need readable",U),(y.length===0||y.length-b<y.highWaterMark)&&(U=!0,d("length less than watermark",U)),y.ended||y.reading?(U=!1,d("reading or ended",U)):U&&(d("do read"),y.reading=!0,y.sync=!0,y.length===0&&(y.needReadable=!0),this._read(y.highWaterMark),y.sync=!1,y.reading||(b=h(D,y)));var Z;return b>0?Z=E(b,y):Z=null,Z===null?(y.needReadable=y.length<=y.highWaterMark,b=0):(y.length-=b,y.awaitDrain=0),y.length===0&&(y.ended||(y.needReadable=!0),D!==b&&y.ended&&q(this)),Z!==null&&this.emit("data",Z),Z};function p(b,y){if(d("onEofChunk"),!y.ended){if(y.decoder){var D=y.decoder.end();D&&D.length&&(y.buffer.push(D),y.length+=y.objectMode?1:D.length)}y.ended=!0,y.sync?w(b):(y.needReadable=!1,y.emittedReadable||(y.emittedReadable=!0,x(b)))}}function w(b){var y=b._readableState;d("emitReadable",y.needReadable,y.emittedReadable),y.needReadable=!1,y.emittedReadable||(d("emitReadable",y.flowing),y.emittedReadable=!0,_e.nextTick(x,b))}function x(b){var y=b._readableState;d("emitReadable_",y.destroyed,y.length,y.ended),!y.destroyed&&(y.length||y.ended)&&(b.emit("readable"),y.emittedReadable=!1),y.needReadable=!y.flowing&&!y.ended&&y.length<=y.highWaterMark,A(b)}function g(b,y){y.readingMore||(y.readingMore=!0,_e.nextTick(s,b,y))}function s(b,y){for(;!y.reading&&!y.ended&&(y.length<y.highWaterMark||y.flowing&&y.length===0);){var D=y.length;if(d("maybeReadMore read 0"),b.read(0),D===y.length)break}y.readingMore=!1}W.prototype._read=function(b){K(this,new L("_read()"))},W.prototype.pipe=function(b,y){var D=this,U=this._readableState;switch(U.pipesCount){case 0:U.pipes=b;break;case 1:U.pipes=[U.pipes,b];break;default:U.pipes.push(b);break}U.pipesCount+=1,d("pipe count=%d opts=%j",U.pipesCount,y);var Z=(!y||y.end!==!1)&&b!==_e.stdout&&b!==_e.stderr,F=Z?H:se;U.endEmitted?_e.nextTick(F):D.once("end",F),b.on("unpipe",N);function N(ue,de){d("onunpipe"),ue===D&&de&&de.hasUnpiped===!1&&(de.hasUnpiped=!0,re())}function H(){d("onend"),b.end()}var z=v(D);b.on("drain",z);var fe=!1;function re(){d("cleanup"),b.removeListener("close",J),b.removeListener("finish",le),b.removeListener("drain",z),b.removeListener("error",be),b.removeListener("unpipe",N),D.removeListener("end",H),D.removeListener("end",se),D.removeListener("data",ae),fe=!0,U.awaitDrain&&(!b._writableState||b._writableState.needDrain)&&z()}D.on("data",ae);function ae(ue){d("ondata");var de=b.write(ue);d("dest.write",de),de===!1&&((U.pipesCount===1&&U.pipes===b||U.pipesCount>1&&X(U.pipes,b)!==-1)&&!fe&&(d("false write response, pause",U.awaitDrain),U.awaitDrain++),D.pause())}function be(ue){d("onerror",ue),se(),b.removeListener("error",be),t(b,"error")===0&&K(b,ue)}te(b,"error",be);function J(){b.removeListener("finish",le),se()}b.once("close",J);function le(){d("onfinish"),b.removeListener("close",J),se()}b.once("finish",le);function se(){d("unpipe"),D.unpipe(b)}return b.emit("pipe",D),U.flowing||(d("pipe resume"),D.resume()),b};function v(b){return function(){var D=b._readableState;d("pipeOnDrain",D.awaitDrain),D.awaitDrain&&D.awaitDrain--,D.awaitDrain===0&&t(b,"data")&&(D.flowing=!0,A(b))}}W.prototype.unpipe=function(b){var y=this._readableState,D={hasUnpiped:!1};if(y.pipesCount===0)return this;if(y.pipesCount===1)return b&&b!==y.pipes?this:(b||(b=y.pipes),y.pipes=null,y.pipesCount=0,y.flowing=!1,b&&b.emit("unpipe",this,D),this);if(!b){var U=y.pipes,Z=y.pipesCount;y.pipes=null,y.pipesCount=0,y.flowing=!1;for(var F=0;F<Z;F++)U[F].emit("unpipe",this,{hasUnpiped:!1});return this}var N=X(y.pipes,b);return N===-1?this:(y.pipes.splice(N,1),y.pipesCount-=1,y.pipesCount===1&&(y.pipes=y.pipes[0]),b.emit("unpipe",this,D),this)},W.prototype.on=function(b,y){var D=r.prototype.on.call(this,b,y),U=this._readableState;return b==="data"?(U.readableListening=this.listenerCount("readable")>0,U.flowing!==!1&&this.resume()):b==="readable"&&!U.endEmitted&&!U.readableListening&&(U.readableListening=U.needReadable=!0,U.flowing=!1,U.emittedReadable=!1,d("on readable",U.length,U.reading),U.length?w(this):U.reading||_e.nextTick(k,this)),D},W.prototype.addListener=W.prototype.on,W.prototype.removeListener=function(b,y){var D=r.prototype.removeListener.call(this,b,y);return b==="readable"&&_e.nextTick(T,this),D},W.prototype.removeAllListeners=function(b){var y=r.prototype.removeAllListeners.apply(this,arguments);return(b==="readable"||b===void 0)&&_e.nextTick(T,this),y};function T(b){var y=b._readableState;y.readableListening=b.listenerCount("readable")>0,y.resumeScheduled&&!y.paused?y.flowing=!0:b.listenerCount("data")>0&&b.resume()}function k(b){d("readable nexttick read 0"),b.read(0)}W.prototype.resume=function(){var b=this._readableState;return b.flowing||(d("resume"),b.flowing=!b.readableListening,Y(this,b)),b.paused=!1,this};function Y(b,y){y.resumeScheduled||(y.resumeScheduled=!0,_e.nextTick(ee,b,y))}function ee(b,y){d("resume",y.reading),y.reading||b.read(0),y.resumeScheduled=!1,b.emit("resume"),A(b),y.flowing&&!y.reading&&b.read(0)}W.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function A(b){var y=b._readableState;for(d("flow",y.flowing);y.flowing&&b.read()!==null;);}W.prototype.wrap=function(b){var y=this,D=this._readableState,U=!1;b.on("end",function(){if(d("wrapped end"),D.decoder&&!D.ended){var N=D.decoder.end();N&&N.length&&y.push(N)}y.push(null)}),b.on("data",function(N){if(d("wrapped data"),D.decoder&&(N=D.decoder.write(N)),!(D.objectMode&&N==null)&&!(!D.objectMode&&(!N||!N.length))){var H=y.push(N);H||(U=!0,b.pause())}});for(var Z in b)this[Z]===void 0&&typeof b[Z]=="function"&&(this[Z]=function(H){return function(){return b[H].apply(b,arguments)}}(Z));for(var F=0;F<G.length;F++)b.on(G[F],this.emit.bind(this,G[F]));return this._read=function(N){d("wrapped _read",N),U&&(U=!1,b.resume())},this},typeof Symbol=="function"&&(W.prototype[Symbol.asyncIterator]=function(){return j===void 0&&(j=zq()),j(this)}),Object.defineProperty(W.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(W.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(W.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(y){this._readableState&&(this._readableState.flowing=y)}}),W._fromList=E,Object.defineProperty(W.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function E(b,y){if(y.length===0)return null;var D;return y.objectMode?D=y.buffer.shift():!b||b>=y.length?(y.decoder?D=y.buffer.join(""):y.buffer.length===1?D=y.buffer.first():D=y.buffer.concat(y.length),y.buffer.clear()):D=y.buffer.consume(b,y.decoder),D}function q(b){var y=b._readableState;d("endReadable",y.endEmitted),y.endEmitted||(y.ended=!0,_e.nextTick(V,y,b))}function V(b,y){if(d("endReadableNT",b.endEmitted,b.length),!b.endEmitted&&b.length===0&&(b.endEmitted=!0,y.readable=!1,y.emit("end"),b.autoDestroy)){var D=y._writableState;(!D||D.autoDestroy&&D.finished)&&y.destroy()}}typeof Symbol=="function"&&(W.from=function(b,y){return $===void 0&&($=Gq()),$(W,b,y)});function X(b,y){for(var D=0,U=b.length;D<U;D++)if(b[D]===y)return D;return-1}return R0}var _4=Xn,yc=$a.codes,Yq=yc.ERR_METHOD_NOT_IMPLEMENTED,Zq=yc.ERR_MULTIPLE_CALLBACK,Xq=yc.ERR_TRANSFORM_ALREADY_TRANSFORMING,Jq=yc.ERR_TRANSFORM_WITH_LENGTH_0,bc=Ps();Ye(Xn,bc);function Qq(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new Zq);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),i(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function Xn(e){if(!(this instanceof Xn))return new Xn(e);bc.call(this,e),this._transformState={afterTransform:Qq.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",eW)}function eW(){var e=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(t,r){Uw(e,t,r)}):Uw(this,null,null)}Xn.prototype.push=function(e,t){return this._transformState.needTransform=!1,bc.prototype.push.call(this,e,t)};Xn.prototype._transform=function(e,t,r){r(new Yq("_transform()"))};Xn.prototype._write=function(e,t,r){var i=this._transformState;if(i.writecb=r,i.writechunk=e,i.writeencoding=t,!i.transforming){var a=this._readableState;(i.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};Xn.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};Xn.prototype._destroy=function(e,t){bc.prototype._destroy.call(this,e,function(r){t(r)})};function Uw(e,t,r){if(t)return e.emit("error",t);if(r!=null&&e.push(r),e._writableState.length)throw new Jq;if(e._transformState.transforming)throw new Xq;return e.push(null)}var tW=ll,M4=_4;Ye(ll,M4);function ll(e){if(!(this instanceof ll))return new ll(e);M4.call(this,e)}ll.prototype._transform=function(e,t,r){r(null,e)};var A0;function rW(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var S4=$a.codes,iW=S4.ERR_MISSING_ARGS,nW=S4.ERR_STREAM_DESTROYED;function Hw(e){if(e)throw e}function oW(e){return e.setHeader&&typeof e.abort=="function"}function aW(e,t,r,i){i=rW(i);var a=!1;e.on("close",function(){a=!0}),A0===void 0&&(A0=Xg),A0(e,{readable:t,writable:r},function(l){if(l)return i(l);a=!0,i()});var n=!1;return function(l){if(!a&&!n){if(n=!0,oW(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();i(l||new nW("pipe"))}}}function qw(e){e()}function sW(e,t){return e.pipe(t)}function fW(e){return!e.length||typeof e[e.length-1]!="function"?Hw:e.pop()}function lW(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=fW(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new iW("streams");var a,n=t.map(function(l,c){var d=c<t.length-1,m=c>0;return aW(l,d,m,function(M){a||(a=M),M&&n.forEach(qw),!d&&(n.forEach(qw),i(a))})});return t.reduce(sW)}var uW=lW;(function(e,t){t=e.exports=w4(),t.Stream=t,t.Readable=t,t.Writable=y4(),t.Duplex=Ps(),t.Transform=_4,t.PassThrough=tW,t.finished=Xg,t.pipeline=uW})(sv,sv.exports);var hW=sv.exports,xf={exports:{}},Jg={exports:{}};Jg.exports;(function(e){(function(t,r){function i(f,u){if(!f)throw new Error(u||"Assertion failed")}function a(f,u){f.super_=u;var h=function(){};h.prototype=u.prototype,f.prototype=new h,f.prototype.constructor=f}function n(f,u,h){if(n.isBN(f))return f;this.negative=0,this.words=null,this.length=0,this.red=null,f!==null&&((u==="le"||u==="be")&&(h=u,u=10),this._init(f||0,u||10,h||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=ke.Buffer}catch{}n.isBN=function(u){return u instanceof n?!0:u!==null&&typeof u=="object"&&u.constructor.wordSize===n.wordSize&&Array.isArray(u.words)},n.max=function(u,h){return u.cmp(h)>0?u:h},n.min=function(u,h){return u.cmp(h)<0?u:h},n.prototype._init=function(u,h,p){if(typeof u=="number")return this._initNumber(u,h,p);if(typeof u=="object")return this._initArray(u,h,p);h==="hex"&&(h=16),i(h===(h|0)&&h>=2&&h<=36),u=u.toString().replace(/\s+/g,"");var w=0;u[0]==="-"&&(w++,this.negative=1),w<u.length&&(h===16?this._parseHex(u,w,p):(this._parseBase(u,h,w),p==="le"&&this._initArray(this.toArray(),h,p)))},n.prototype._initNumber=function(u,h,p){u<0&&(this.negative=1,u=-u),u<67108864?(this.words=[u&67108863],this.length=1):u<4503599627370496?(this.words=[u&67108863,u/67108864&67108863],this.length=2):(i(u<9007199254740992),this.words=[u&67108863,u/67108864&67108863,1],this.length=3),p==="le"&&this._initArray(this.toArray(),h,p)},n.prototype._initArray=function(u,h,p){if(i(typeof u.length=="number"),u.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(u.length/3),this.words=new Array(this.length);for(var w=0;w<this.length;w++)this.words[w]=0;var x,g,s=0;if(p==="be")for(w=u.length-1,x=0;w>=0;w-=3)g=u[w]|u[w-1]<<8|u[w-2]<<16,this.words[x]|=g<<s&67108863,this.words[x+1]=g>>>26-s&67108863,s+=24,s>=26&&(s-=26,x++);else if(p==="le")for(w=0,x=0;w<u.length;w+=3)g=u[w]|u[w+1]<<8|u[w+2]<<16,this.words[x]|=g<<s&67108863,this.words[x+1]=g>>>26-s&67108863,s+=24,s>=26&&(s-=26,x++);return this._strip()};function c(f,u){var h=f.charCodeAt(u);if(h>=48&&h<=57)return h-48;if(h>=65&&h<=70)return h-55;if(h>=97&&h<=102)return h-87;i(!1,"Invalid character in "+f)}function d(f,u,h){var p=c(f,h);return h-1>=u&&(p|=c(f,h-1)<<4),p}n.prototype._parseHex=function(u,h,p){this.length=Math.ceil((u.length-h)/6),this.words=new Array(this.length);for(var w=0;w<this.length;w++)this.words[w]=0;var x=0,g=0,s;if(p==="be")for(w=u.length-1;w>=h;w-=2)s=d(u,h,w)<<x,this.words[g]|=s&67108863,x>=18?(x-=18,g+=1,this.words[g]|=s>>>26):x+=8;else{var v=u.length-h;for(w=v%2===0?h+1:h;w<u.length;w+=2)s=d(u,h,w)<<x,this.words[g]|=s&67108863,x>=18?(x-=18,g+=1,this.words[g]|=s>>>26):x+=8}this._strip()};function m(f,u,h,p){for(var w=0,x=0,g=Math.min(f.length,h),s=u;s<g;s++){var v=f.charCodeAt(s)-48;w*=p,v>=49?x=v-49+10:v>=17?x=v-17+10:x=v,i(v>=0&&x<p,"Invalid character"),w+=x}return w}n.prototype._parseBase=function(u,h,p){this.words=[0],this.length=1;for(var w=0,x=1;x<=67108863;x*=h)w++;w--,x=x/h|0;for(var g=u.length-p,s=g%w,v=Math.min(g,g-s)+p,T=0,k=p;k<v;k+=w)T=m(u,k,k+w,h),this.imuln(x),this.words[0]+T<67108864?this.words[0]+=T:this._iaddn(T);if(s!==0){var Y=1;for(T=m(u,k,u.length,h),k=0;k<s;k++)Y*=h;this.imuln(Y),this.words[0]+T<67108864?this.words[0]+=T:this._iaddn(T)}this._strip()},n.prototype.copy=function(u){u.words=new Array(this.length);for(var h=0;h<this.length;h++)u.words[h]=this.words[h];u.length=this.length,u.negative=this.negative,u.red=this.red};function M(f,u){f.words=u.words,f.length=u.length,f.negative=u.negative,f.red=u.red}if(n.prototype._move=function(u){M(u,this)},n.prototype.clone=function(){var u=new n(null);return this.copy(u),u},n.prototype._expand=function(u){for(;this.length<u;)this.words[this.length++]=0;return this},n.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=S}catch{n.prototype.inspect=S}else n.prototype.inspect=S;function S(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var R=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],O=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(u,h){u=u||10,h=h|0||1;var p;if(u===16||u==="hex"){p="";for(var w=0,x=0,g=0;g<this.length;g++){var s=this.words[g],v=((s<<w|x)&16777215).toString(16);x=s>>>24-w&16777215,w+=2,w>=26&&(w-=26,g--),x!==0||g!==this.length-1?p=R[6-v.length]+v+p:p=v+p}for(x!==0&&(p=x.toString(16)+p);p.length%h!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}if(u===(u|0)&&u>=2&&u<=36){var T=I[u],k=O[u];p="";var Y=this.clone();for(Y.negative=0;!Y.isZero();){var ee=Y.modrn(k).toString(u);Y=Y.idivn(k),Y.isZero()?p=ee+p:p=R[T-ee.length]+ee+p}for(this.isZero()&&(p="0"+p);p.length%h!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var u=this.words[0];return this.length===2?u+=this.words[1]*67108864:this.length===3&&this.words[2]===1?u+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-u:u},n.prototype.toJSON=function(){return this.toString(16,2)},l&&(n.prototype.toBuffer=function(u,h){return this.toArrayLike(l,u,h)}),n.prototype.toArray=function(u,h){return this.toArrayLike(Array,u,h)};var B=function(u,h){return u.allocUnsafe?u.allocUnsafe(h):new u(h)};n.prototype.toArrayLike=function(u,h,p){this._strip();var w=this.byteLength(),x=p||Math.max(1,w);i(w<=x,"byte array longer than desired length"),i(x>0,"Requested array length <= 0");var g=B(u,x),s=h==="le"?"LE":"BE";return this["_toArrayLike"+s](g,w),g},n.prototype._toArrayLikeLE=function(u,h){for(var p=0,w=0,x=0,g=0;x<this.length;x++){var s=this.words[x]<<g|w;u[p++]=s&255,p<u.length&&(u[p++]=s>>8&255),p<u.length&&(u[p++]=s>>16&255),g===6?(p<u.length&&(u[p++]=s>>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(p<u.length)for(u[p++]=w;p<u.length;)u[p++]=0},n.prototype._toArrayLikeBE=function(u,h){for(var p=u.length-1,w=0,x=0,g=0;x<this.length;x++){var s=this.words[x]<<g|w;u[p--]=s&255,p>=0&&(u[p--]=s>>8&255),p>=0&&(u[p--]=s>>16&255),g===6?(p>=0&&(u[p--]=s>>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(p>=0)for(u[p--]=w;p>=0;)u[p--]=0},Math.clz32?n.prototype._countBits=function(u){return 32-Math.clz32(u)}:n.prototype._countBits=function(u){var h=u,p=0;return h>=4096&&(p+=13,h>>>=13),h>=64&&(p+=7,h>>>=7),h>=8&&(p+=4,h>>>=4),h>=2&&(p+=2,h>>>=2),p+h},n.prototype._zeroBits=function(u){if(u===0)return 26;var h=u,p=0;return h&8191||(p+=13,h>>>=13),h&127||(p+=7,h>>>=7),h&15||(p+=4,h>>>=4),h&3||(p+=2,h>>>=2),h&1||p++,p},n.prototype.bitLength=function(){var u=this.words[this.length-1],h=this._countBits(u);return(this.length-1)*26+h};function L(f){for(var u=new Array(f.bitLength()),h=0;h<u.length;h++){var p=h/26|0,w=h%26;u[h]=f.words[p]>>>w&1}return u}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var u=0,h=0;h<this.length;h++){var p=this._zeroBits(this.words[h]);if(u+=p,p!==26)break}return u},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(u){return this.negative!==0?this.abs().inotn(u).iaddn(1):this.clone()},n.prototype.fromTwos=function(u){return this.testn(u-1)?this.notn(u).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(u){for(;this.length<u.length;)this.words[this.length++]=0;for(var h=0;h<u.length;h++)this.words[h]=this.words[h]|u.words[h];return this._strip()},n.prototype.ior=function(u){return i((this.negative|u.negative)===0),this.iuor(u)},n.prototype.or=function(u){return this.length>u.length?this.clone().ior(u):u.clone().ior(this)},n.prototype.uor=function(u){return this.length>u.length?this.clone().iuor(u):u.clone().iuor(this)},n.prototype.iuand=function(u){var h;this.length>u.length?h=u:h=this;for(var p=0;p<h.length;p++)this.words[p]=this.words[p]&u.words[p];return this.length=h.length,this._strip()},n.prototype.iand=function(u){return i((this.negative|u.negative)===0),this.iuand(u)},n.prototype.and=function(u){return this.length>u.length?this.clone().iand(u):u.clone().iand(this)},n.prototype.uand=function(u){return this.length>u.length?this.clone().iuand(u):u.clone().iuand(this)},n.prototype.iuxor=function(u){var h,p;this.length>u.length?(h=this,p=u):(h=u,p=this);for(var w=0;w<p.length;w++)this.words[w]=h.words[w]^p.words[w];if(this!==h)for(;w<h.length;w++)this.words[w]=h.words[w];return this.length=h.length,this._strip()},n.prototype.ixor=function(u){return i((this.negative|u.negative)===0),this.iuxor(u)},n.prototype.xor=function(u){return this.length>u.length?this.clone().ixor(u):u.clone().ixor(this)},n.prototype.uxor=function(u){return this.length>u.length?this.clone().iuxor(u):u.clone().iuxor(this)},n.prototype.inotn=function(u){i(typeof u=="number"&&u>=0);var h=Math.ceil(u/26)|0,p=u%26;this._expand(h),p>0&&h--;for(var w=0;w<h;w++)this.words[w]=~this.words[w]&67108863;return p>0&&(this.words[w]=~this.words[w]&67108863>>26-p),this._strip()},n.prototype.notn=function(u){return this.clone().inotn(u)},n.prototype.setn=function(u,h){i(typeof u=="number"&&u>=0);var p=u/26|0,w=u%26;return this._expand(p+1),h?this.words[p]=this.words[p]|1<<w:this.words[p]=this.words[p]&~(1<<w),this._strip()},n.prototype.iadd=function(u){var h;if(this.negative!==0&&u.negative===0)return this.negative=0,h=this.isub(u),this.negative^=1,this._normSign();if(this.negative===0&&u.negative!==0)return u.negative=0,h=this.isub(u),u.negative=1,h._normSign();var p,w;this.length>u.length?(p=this,w=u):(p=u,w=this);for(var x=0,g=0;g<w.length;g++)h=(p.words[g]|0)+(w.words[g]|0)+x,this.words[g]=h&67108863,x=h>>>26;for(;x!==0&&g<p.length;g++)h=(p.words[g]|0)+x,this.words[g]=h&67108863,x=h>>>26;if(this.length=p.length,x!==0)this.words[this.length]=x,this.length++;else if(p!==this)for(;g<p.length;g++)this.words[g]=p.words[g];return this},n.prototype.add=function(u){var h;return u.negative!==0&&this.negative===0?(u.negative=0,h=this.sub(u),u.negative^=1,h):u.negative===0&&this.negative!==0?(this.negative=0,h=u.sub(this),this.negative=1,h):this.length>u.length?this.clone().iadd(u):u.clone().iadd(this)},n.prototype.isub=function(u){if(u.negative!==0){u.negative=0;var h=this.iadd(u);return u.negative=1,h._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(u),this.negative=1,this._normSign();var p=this.cmp(u);if(p===0)return this.negative=0,this.length=1,this.words[0]=0,this;var w,x;p>0?(w=this,x=u):(w=u,x=this);for(var g=0,s=0;s<x.length;s++)h=(w.words[s]|0)-(x.words[s]|0)+g,g=h>>26,this.words[s]=h&67108863;for(;g!==0&&s<w.length;s++)h=(w.words[s]|0)+g,g=h>>26,this.words[s]=h&67108863;if(g===0&&s<w.length&&w!==this)for(;s<w.length;s++)this.words[s]=w.words[s];return this.length=Math.max(this.length,s),w!==this&&(this.negative=1),this._strip()},n.prototype.sub=function(u){return this.clone().isub(u)};function P(f,u,h){h.negative=u.negative^f.negative;var p=f.length+u.length|0;h.length=p,p=p-1|0;var w=f.words[0]|0,x=u.words[0]|0,g=w*x,s=g&67108863,v=g/67108864|0;h.words[0]=s;for(var T=1;T<p;T++){for(var k=v>>>26,Y=v&67108863,ee=Math.min(T,u.length-1),A=Math.max(0,T-f.length+1);A<=ee;A++){var E=T-A|0;w=f.words[E]|0,x=u.words[A]|0,g=w*x+Y,k+=g/67108864|0,Y=g&67108863}h.words[T]=Y|0,v=k|0}return v!==0?h.words[T]=v|0:h.length--,h._strip()}var C=function(u,h,p){var w=u.words,x=h.words,g=p.words,s=0,v,T,k,Y=w[0]|0,ee=Y&8191,A=Y>>>13,E=w[1]|0,q=E&8191,V=E>>>13,X=w[2]|0,b=X&8191,y=X>>>13,D=w[3]|0,U=D&8191,Z=D>>>13,F=w[4]|0,N=F&8191,H=F>>>13,z=w[5]|0,fe=z&8191,re=z>>>13,ae=w[6]|0,be=ae&8191,J=ae>>>13,le=w[7]|0,se=le&8191,ue=le>>>13,de=w[8]|0,ve=de&8191,ie=de>>>13,oe=w[9]|0,Ae=oe&8191,pe=oe>>>13,Se=x[0]|0,Ke=Se&8191,we=Se>>>13,xe=x[1]|0,qe=xe&8191,ye=xe>>>13,Me=x[2]|0,Ve=Me&8191,ge=Me>>>13,Ee=x[3]|0,Je=Ee&8191,Re=Ee>>>13,Le=x[4]|0,at=Le&8191,Te=Le>>>13,Ne=x[5]|0,rt=Ne&8191,Oe=Ne>>>13,De=x[6]|0,nt=De&8191,Ie=De>>>13,$e=x[7]|0,st=$e&8191,Pe=$e>>>13,je=x[8]|0,ht=je&8191,Ce=je>>>13,Fe=x[9]|0,it=Fe&8191,et=Fe>>>13;p.negative=u.negative^h.negative,p.length=19,v=Math.imul(ee,Ke),T=Math.imul(ee,we),T=T+Math.imul(A,Ke)|0,k=Math.imul(A,we);var Et=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(Et>>>26)|0,Et&=67108863,v=Math.imul(q,Ke),T=Math.imul(q,we),T=T+Math.imul(V,Ke)|0,k=Math.imul(V,we),v=v+Math.imul(ee,qe)|0,T=T+Math.imul(ee,ye)|0,T=T+Math.imul(A,qe)|0,k=k+Math.imul(A,ye)|0;var Ot=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,v=Math.imul(b,Ke),T=Math.imul(b,we),T=T+Math.imul(y,Ke)|0,k=Math.imul(y,we),v=v+Math.imul(q,qe)|0,T=T+Math.imul(q,ye)|0,T=T+Math.imul(V,qe)|0,k=k+Math.imul(V,ye)|0,v=v+Math.imul(ee,Ve)|0,T=T+Math.imul(ee,ge)|0,T=T+Math.imul(A,Ve)|0,k=k+Math.imul(A,ge)|0;var It=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(It>>>26)|0,It&=67108863,v=Math.imul(U,Ke),T=Math.imul(U,we),T=T+Math.imul(Z,Ke)|0,k=Math.imul(Z,we),v=v+Math.imul(b,qe)|0,T=T+Math.imul(b,ye)|0,T=T+Math.imul(y,qe)|0,k=k+Math.imul(y,ye)|0,v=v+Math.imul(q,Ve)|0,T=T+Math.imul(q,ge)|0,T=T+Math.imul(V,Ve)|0,k=k+Math.imul(V,ge)|0,v=v+Math.imul(ee,Je)|0,T=T+Math.imul(ee,Re)|0,T=T+Math.imul(A,Je)|0,k=k+Math.imul(A,Re)|0;var Bt=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,v=Math.imul(N,Ke),T=Math.imul(N,we),T=T+Math.imul(H,Ke)|0,k=Math.imul(H,we),v=v+Math.imul(U,qe)|0,T=T+Math.imul(U,ye)|0,T=T+Math.imul(Z,qe)|0,k=k+Math.imul(Z,ye)|0,v=v+Math.imul(b,Ve)|0,T=T+Math.imul(b,ge)|0,T=T+Math.imul(y,Ve)|0,k=k+Math.imul(y,ge)|0,v=v+Math.imul(q,Je)|0,T=T+Math.imul(q,Re)|0,T=T+Math.imul(V,Je)|0,k=k+Math.imul(V,Re)|0,v=v+Math.imul(ee,at)|0,T=T+Math.imul(ee,Te)|0,T=T+Math.imul(A,at)|0,k=k+Math.imul(A,Te)|0;var kt=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(kt>>>26)|0,kt&=67108863,v=Math.imul(fe,Ke),T=Math.imul(fe,we),T=T+Math.imul(re,Ke)|0,k=Math.imul(re,we),v=v+Math.imul(N,qe)|0,T=T+Math.imul(N,ye)|0,T=T+Math.imul(H,qe)|0,k=k+Math.imul(H,ye)|0,v=v+Math.imul(U,Ve)|0,T=T+Math.imul(U,ge)|0,T=T+Math.imul(Z,Ve)|0,k=k+Math.imul(Z,ge)|0,v=v+Math.imul(b,Je)|0,T=T+Math.imul(b,Re)|0,T=T+Math.imul(y,Je)|0,k=k+Math.imul(y,Re)|0,v=v+Math.imul(q,at)|0,T=T+Math.imul(q,Te)|0,T=T+Math.imul(V,at)|0,k=k+Math.imul(V,Te)|0,v=v+Math.imul(ee,rt)|0,T=T+Math.imul(ee,Oe)|0,T=T+Math.imul(A,rt)|0,k=k+Math.imul(A,Oe)|0;var Ut=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,v=Math.imul(be,Ke),T=Math.imul(be,we),T=T+Math.imul(J,Ke)|0,k=Math.imul(J,we),v=v+Math.imul(fe,qe)|0,T=T+Math.imul(fe,ye)|0,T=T+Math.imul(re,qe)|0,k=k+Math.imul(re,ye)|0,v=v+Math.imul(N,Ve)|0,T=T+Math.imul(N,ge)|0,T=T+Math.imul(H,Ve)|0,k=k+Math.imul(H,ge)|0,v=v+Math.imul(U,Je)|0,T=T+Math.imul(U,Re)|0,T=T+Math.imul(Z,Je)|0,k=k+Math.imul(Z,Re)|0,v=v+Math.imul(b,at)|0,T=T+Math.imul(b,Te)|0,T=T+Math.imul(y,at)|0,k=k+Math.imul(y,Te)|0,v=v+Math.imul(q,rt)|0,T=T+Math.imul(q,Oe)|0,T=T+Math.imul(V,rt)|0,k=k+Math.imul(V,Oe)|0,v=v+Math.imul(ee,nt)|0,T=T+Math.imul(ee,Ie)|0,T=T+Math.imul(A,nt)|0,k=k+Math.imul(A,Ie)|0;var Ht=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,v=Math.imul(se,Ke),T=Math.imul(se,we),T=T+Math.imul(ue,Ke)|0,k=Math.imul(ue,we),v=v+Math.imul(be,qe)|0,T=T+Math.imul(be,ye)|0,T=T+Math.imul(J,qe)|0,k=k+Math.imul(J,ye)|0,v=v+Math.imul(fe,Ve)|0,T=T+Math.imul(fe,ge)|0,T=T+Math.imul(re,Ve)|0,k=k+Math.imul(re,ge)|0,v=v+Math.imul(N,Je)|0,T=T+Math.imul(N,Re)|0,T=T+Math.imul(H,Je)|0,k=k+Math.imul(H,Re)|0,v=v+Math.imul(U,at)|0,T=T+Math.imul(U,Te)|0,T=T+Math.imul(Z,at)|0,k=k+Math.imul(Z,Te)|0,v=v+Math.imul(b,rt)|0,T=T+Math.imul(b,Oe)|0,T=T+Math.imul(y,rt)|0,k=k+Math.imul(y,Oe)|0,v=v+Math.imul(q,nt)|0,T=T+Math.imul(q,Ie)|0,T=T+Math.imul(V,nt)|0,k=k+Math.imul(V,Ie)|0,v=v+Math.imul(ee,st)|0,T=T+Math.imul(ee,Pe)|0,T=T+Math.imul(A,st)|0,k=k+Math.imul(A,Pe)|0;var Lt=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,v=Math.imul(ve,Ke),T=Math.imul(ve,we),T=T+Math.imul(ie,Ke)|0,k=Math.imul(ie,we),v=v+Math.imul(se,qe)|0,T=T+Math.imul(se,ye)|0,T=T+Math.imul(ue,qe)|0,k=k+Math.imul(ue,ye)|0,v=v+Math.imul(be,Ve)|0,T=T+Math.imul(be,ge)|0,T=T+Math.imul(J,Ve)|0,k=k+Math.imul(J,ge)|0,v=v+Math.imul(fe,Je)|0,T=T+Math.imul(fe,Re)|0,T=T+Math.imul(re,Je)|0,k=k+Math.imul(re,Re)|0,v=v+Math.imul(N,at)|0,T=T+Math.imul(N,Te)|0,T=T+Math.imul(H,at)|0,k=k+Math.imul(H,Te)|0,v=v+Math.imul(U,rt)|0,T=T+Math.imul(U,Oe)|0,T=T+Math.imul(Z,rt)|0,k=k+Math.imul(Z,Oe)|0,v=v+Math.imul(b,nt)|0,T=T+Math.imul(b,Ie)|0,T=T+Math.imul(y,nt)|0,k=k+Math.imul(y,Ie)|0,v=v+Math.imul(q,st)|0,T=T+Math.imul(q,Pe)|0,T=T+Math.imul(V,st)|0,k=k+Math.imul(V,Pe)|0,v=v+Math.imul(ee,ht)|0,T=T+Math.imul(ee,Ce)|0,T=T+Math.imul(A,ht)|0,k=k+Math.imul(A,Ce)|0;var dt=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(dt>>>26)|0,dt&=67108863,v=Math.imul(Ae,Ke),T=Math.imul(Ae,we),T=T+Math.imul(pe,Ke)|0,k=Math.imul(pe,we),v=v+Math.imul(ve,qe)|0,T=T+Math.imul(ve,ye)|0,T=T+Math.imul(ie,qe)|0,k=k+Math.imul(ie,ye)|0,v=v+Math.imul(se,Ve)|0,T=T+Math.imul(se,ge)|0,T=T+Math.imul(ue,Ve)|0,k=k+Math.imul(ue,ge)|0,v=v+Math.imul(be,Je)|0,T=T+Math.imul(be,Re)|0,T=T+Math.imul(J,Je)|0,k=k+Math.imul(J,Re)|0,v=v+Math.imul(fe,at)|0,T=T+Math.imul(fe,Te)|0,T=T+Math.imul(re,at)|0,k=k+Math.imul(re,Te)|0,v=v+Math.imul(N,rt)|0,T=T+Math.imul(N,Oe)|0,T=T+Math.imul(H,rt)|0,k=k+Math.imul(H,Oe)|0,v=v+Math.imul(U,nt)|0,T=T+Math.imul(U,Ie)|0,T=T+Math.imul(Z,nt)|0,k=k+Math.imul(Z,Ie)|0,v=v+Math.imul(b,st)|0,T=T+Math.imul(b,Pe)|0,T=T+Math.imul(y,st)|0,k=k+Math.imul(y,Pe)|0,v=v+Math.imul(q,ht)|0,T=T+Math.imul(q,Ce)|0,T=T+Math.imul(V,ht)|0,k=k+Math.imul(V,Ce)|0,v=v+Math.imul(ee,it)|0,T=T+Math.imul(ee,et)|0,T=T+Math.imul(A,it)|0,k=k+Math.imul(A,et)|0;var At=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(At>>>26)|0,At&=67108863,v=Math.imul(Ae,qe),T=Math.imul(Ae,ye),T=T+Math.imul(pe,qe)|0,k=Math.imul(pe,ye),v=v+Math.imul(ve,Ve)|0,T=T+Math.imul(ve,ge)|0,T=T+Math.imul(ie,Ve)|0,k=k+Math.imul(ie,ge)|0,v=v+Math.imul(se,Je)|0,T=T+Math.imul(se,Re)|0,T=T+Math.imul(ue,Je)|0,k=k+Math.imul(ue,Re)|0,v=v+Math.imul(be,at)|0,T=T+Math.imul(be,Te)|0,T=T+Math.imul(J,at)|0,k=k+Math.imul(J,Te)|0,v=v+Math.imul(fe,rt)|0,T=T+Math.imul(fe,Oe)|0,T=T+Math.imul(re,rt)|0,k=k+Math.imul(re,Oe)|0,v=v+Math.imul(N,nt)|0,T=T+Math.imul(N,Ie)|0,T=T+Math.imul(H,nt)|0,k=k+Math.imul(H,Ie)|0,v=v+Math.imul(U,st)|0,T=T+Math.imul(U,Pe)|0,T=T+Math.imul(Z,st)|0,k=k+Math.imul(Z,Pe)|0,v=v+Math.imul(b,ht)|0,T=T+Math.imul(b,Ce)|0,T=T+Math.imul(y,ht)|0,k=k+Math.imul(y,Ce)|0,v=v+Math.imul(q,it)|0,T=T+Math.imul(q,et)|0,T=T+Math.imul(V,it)|0,k=k+Math.imul(V,et)|0;var Mt=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,v=Math.imul(Ae,Ve),T=Math.imul(Ae,ge),T=T+Math.imul(pe,Ve)|0,k=Math.imul(pe,ge),v=v+Math.imul(ve,Je)|0,T=T+Math.imul(ve,Re)|0,T=T+Math.imul(ie,Je)|0,k=k+Math.imul(ie,Re)|0,v=v+Math.imul(se,at)|0,T=T+Math.imul(se,Te)|0,T=T+Math.imul(ue,at)|0,k=k+Math.imul(ue,Te)|0,v=v+Math.imul(be,rt)|0,T=T+Math.imul(be,Oe)|0,T=T+Math.imul(J,rt)|0,k=k+Math.imul(J,Oe)|0,v=v+Math.imul(fe,nt)|0,T=T+Math.imul(fe,Ie)|0,T=T+Math.imul(re,nt)|0,k=k+Math.imul(re,Ie)|0,v=v+Math.imul(N,st)|0,T=T+Math.imul(N,Pe)|0,T=T+Math.imul(H,st)|0,k=k+Math.imul(H,Pe)|0,v=v+Math.imul(U,ht)|0,T=T+Math.imul(U,Ce)|0,T=T+Math.imul(Z,ht)|0,k=k+Math.imul(Z,Ce)|0,v=v+Math.imul(b,it)|0,T=T+Math.imul(b,et)|0,T=T+Math.imul(y,it)|0,k=k+Math.imul(y,et)|0;var yt=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(yt>>>26)|0,yt&=67108863,v=Math.imul(Ae,Je),T=Math.imul(Ae,Re),T=T+Math.imul(pe,Je)|0,k=Math.imul(pe,Re),v=v+Math.imul(ve,at)|0,T=T+Math.imul(ve,Te)|0,T=T+Math.imul(ie,at)|0,k=k+Math.imul(ie,Te)|0,v=v+Math.imul(se,rt)|0,T=T+Math.imul(se,Oe)|0,T=T+Math.imul(ue,rt)|0,k=k+Math.imul(ue,Oe)|0,v=v+Math.imul(be,nt)|0,T=T+Math.imul(be,Ie)|0,T=T+Math.imul(J,nt)|0,k=k+Math.imul(J,Ie)|0,v=v+Math.imul(fe,st)|0,T=T+Math.imul(fe,Pe)|0,T=T+Math.imul(re,st)|0,k=k+Math.imul(re,Pe)|0,v=v+Math.imul(N,ht)|0,T=T+Math.imul(N,Ce)|0,T=T+Math.imul(H,ht)|0,k=k+Math.imul(H,Ce)|0,v=v+Math.imul(U,it)|0,T=T+Math.imul(U,et)|0,T=T+Math.imul(Z,it)|0,k=k+Math.imul(Z,et)|0;var Pt=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,v=Math.imul(Ae,at),T=Math.imul(Ae,Te),T=T+Math.imul(pe,at)|0,k=Math.imul(pe,Te),v=v+Math.imul(ve,rt)|0,T=T+Math.imul(ve,Oe)|0,T=T+Math.imul(ie,rt)|0,k=k+Math.imul(ie,Oe)|0,v=v+Math.imul(se,nt)|0,T=T+Math.imul(se,Ie)|0,T=T+Math.imul(ue,nt)|0,k=k+Math.imul(ue,Ie)|0,v=v+Math.imul(be,st)|0,T=T+Math.imul(be,Pe)|0,T=T+Math.imul(J,st)|0,k=k+Math.imul(J,Pe)|0,v=v+Math.imul(fe,ht)|0,T=T+Math.imul(fe,Ce)|0,T=T+Math.imul(re,ht)|0,k=k+Math.imul(re,Ce)|0,v=v+Math.imul(N,it)|0,T=T+Math.imul(N,et)|0,T=T+Math.imul(H,it)|0,k=k+Math.imul(H,et)|0;var gt=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(gt>>>26)|0,gt&=67108863,v=Math.imul(Ae,rt),T=Math.imul(Ae,Oe),T=T+Math.imul(pe,rt)|0,k=Math.imul(pe,Oe),v=v+Math.imul(ve,nt)|0,T=T+Math.imul(ve,Ie)|0,T=T+Math.imul(ie,nt)|0,k=k+Math.imul(ie,Ie)|0,v=v+Math.imul(se,st)|0,T=T+Math.imul(se,Pe)|0,T=T+Math.imul(ue,st)|0,k=k+Math.imul(ue,Pe)|0,v=v+Math.imul(be,ht)|0,T=T+Math.imul(be,Ce)|0,T=T+Math.imul(J,ht)|0,k=k+Math.imul(J,Ce)|0,v=v+Math.imul(fe,it)|0,T=T+Math.imul(fe,et)|0,T=T+Math.imul(re,it)|0,k=k+Math.imul(re,et)|0;var bt=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(bt>>>26)|0,bt&=67108863,v=Math.imul(Ae,nt),T=Math.imul(Ae,Ie),T=T+Math.imul(pe,nt)|0,k=Math.imul(pe,Ie),v=v+Math.imul(ve,st)|0,T=T+Math.imul(ve,Pe)|0,T=T+Math.imul(ie,st)|0,k=k+Math.imul(ie,Pe)|0,v=v+Math.imul(se,ht)|0,T=T+Math.imul(se,Ce)|0,T=T+Math.imul(ue,ht)|0,k=k+Math.imul(ue,Ce)|0,v=v+Math.imul(be,it)|0,T=T+Math.imul(be,et)|0,T=T+Math.imul(J,it)|0,k=k+Math.imul(J,et)|0;var $t=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+($t>>>26)|0,$t&=67108863,v=Math.imul(Ae,st),T=Math.imul(Ae,Pe),T=T+Math.imul(pe,st)|0,k=Math.imul(pe,Pe),v=v+Math.imul(ve,ht)|0,T=T+Math.imul(ve,Ce)|0,T=T+Math.imul(ie,ht)|0,k=k+Math.imul(ie,Ce)|0,v=v+Math.imul(se,it)|0,T=T+Math.imul(se,et)|0,T=T+Math.imul(ue,it)|0,k=k+Math.imul(ue,et)|0;var Dt=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,v=Math.imul(Ae,ht),T=Math.imul(Ae,Ce),T=T+Math.imul(pe,ht)|0,k=Math.imul(pe,Ce),v=v+Math.imul(ve,it)|0,T=T+Math.imul(ve,et)|0,T=T+Math.imul(ie,it)|0,k=k+Math.imul(ie,et)|0;var so=(s+v|0)+((T&8191)<<13)|0;s=(k+(T>>>13)|0)+(so>>>26)|0,so&=67108863,v=Math.imul(Ae,it),T=Math.imul(Ae,et),T=T+Math.imul(pe,it)|0,k=Math.imul(pe,et);var Nr=(s+v|0)+((T&8191)<<13)|0;return s=(k+(T>>>13)|0)+(Nr>>>26)|0,Nr&=67108863,g[0]=Et,g[1]=Ot,g[2]=It,g[3]=Bt,g[4]=kt,g[5]=Ut,g[6]=Ht,g[7]=Lt,g[8]=dt,g[9]=At,g[10]=Mt,g[11]=yt,g[12]=Pt,g[13]=gt,g[14]=bt,g[15]=$t,g[16]=Dt,g[17]=so,g[18]=Nr,s!==0&&(g[19]=s,p.length++),p};Math.imul||(C=P);function j(f,u,h){h.negative=u.negative^f.negative,h.length=f.length+u.length;for(var p=0,w=0,x=0;x<h.length-1;x++){var g=w;w=0;for(var s=p&67108863,v=Math.min(x,u.length-1),T=Math.max(0,x-f.length+1);T<=v;T++){var k=x-T,Y=f.words[k]|0,ee=u.words[T]|0,A=Y*ee,E=A&67108863;g=g+(A/67108864|0)|0,E=E+s|0,s=E&67108863,g=g+(E>>>26)|0,w+=g>>>26,g&=67108863}h.words[x]=s,p=g,g=w}return p!==0?h.words[x]=p:h.length--,h._strip()}function $(f,u,h){return j(f,u,h)}n.prototype.mulTo=function(u,h){var p,w=this.length+u.length;return this.length===10&&u.length===10?p=C(this,u,h):w<63?p=P(this,u,h):w<1024?p=j(this,u,h):p=$(this,u,h),p},n.prototype.mul=function(u){var h=new n(null);return h.words=new Array(this.length+u.length),this.mulTo(u,h)},n.prototype.mulf=function(u){var h=new n(null);return h.words=new Array(this.length+u.length),$(this,u,h)},n.prototype.imul=function(u){return this.clone().mulTo(u,this)},n.prototype.imuln=function(u){var h=u<0;h&&(u=-u),i(typeof u=="number"),i(u<67108864);for(var p=0,w=0;w<this.length;w++){var x=(this.words[w]|0)*u,g=(x&67108863)+(p&67108863);p>>=26,p+=x/67108864|0,p+=g>>>26,this.words[w]=g&67108863}return p!==0&&(this.words[w]=p,this.length++),h?this.ineg():this},n.prototype.muln=function(u){return this.clone().imuln(u)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(u){var h=L(u);if(h.length===0)return new n(1);for(var p=this,w=0;w<h.length&&h[w]===0;w++,p=p.sqr());if(++w<h.length)for(var x=p.sqr();w<h.length;w++,x=x.sqr())h[w]!==0&&(p=p.mul(x));return p},n.prototype.iushln=function(u){i(typeof u=="number"&&u>=0);var h=u%26,p=(u-h)/26,w=67108863>>>26-h<<26-h,x;if(h!==0){var g=0;for(x=0;x<this.length;x++){var s=this.words[x]&w,v=(this.words[x]|0)-s<<h;this.words[x]=v|g,g=s>>>26-h}g&&(this.words[x]=g,this.length++)}if(p!==0){for(x=this.length-1;x>=0;x--)this.words[x+p]=this.words[x];for(x=0;x<p;x++)this.words[x]=0;this.length+=p}return this._strip()},n.prototype.ishln=function(u){return i(this.negative===0),this.iushln(u)},n.prototype.iushrn=function(u,h,p){i(typeof u=="number"&&u>=0);var w;h?w=(h-h%26)/26:w=0;var x=u%26,g=Math.min((u-x)/26,this.length),s=67108863^67108863>>>x<<x,v=p;if(w-=g,w=Math.max(0,w),v){for(var T=0;T<g;T++)v.words[T]=this.words[T];v.length=g}if(g!==0)if(this.length>g)for(this.length-=g,T=0;T<this.length;T++)this.words[T]=this.words[T+g];else this.words[0]=0,this.length=1;var k=0;for(T=this.length-1;T>=0&&(k!==0||T>=w);T--){var Y=this.words[T]|0;this.words[T]=k<<26-x|Y>>>x,k=Y&s}return v&&k!==0&&(v.words[v.length++]=k),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(u,h,p){return i(this.negative===0),this.iushrn(u,h,p)},n.prototype.shln=function(u){return this.clone().ishln(u)},n.prototype.ushln=function(u){return this.clone().iushln(u)},n.prototype.shrn=function(u){return this.clone().ishrn(u)},n.prototype.ushrn=function(u){return this.clone().iushrn(u)},n.prototype.testn=function(u){i(typeof u=="number"&&u>=0);var h=u%26,p=(u-h)/26,w=1<<h;if(this.length<=p)return!1;var x=this.words[p];return!!(x&w)},n.prototype.imaskn=function(u){i(typeof u=="number"&&u>=0);var h=u%26,p=(u-h)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=p)return this;if(h!==0&&p++,this.length=Math.min(p,this.length),h!==0){var w=67108863^67108863>>>h<<h;this.words[this.length-1]&=w}return this._strip()},n.prototype.maskn=function(u){return this.clone().imaskn(u)},n.prototype.iaddn=function(u){return i(typeof u=="number"),i(u<67108864),u<0?this.isubn(-u):this.negative!==0?this.length===1&&(this.words[0]|0)<=u?(this.words[0]=u-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(u),this.negative=1,this):this._iaddn(u)},n.prototype._iaddn=function(u){this.words[0]+=u;for(var h=0;h<this.length&&this.words[h]>=67108864;h++)this.words[h]-=67108864,h===this.length-1?this.words[h+1]=1:this.words[h+1]++;return this.length=Math.max(this.length,h+1),this},n.prototype.isubn=function(u){if(i(typeof u=="number"),i(u<67108864),u<0)return this.iaddn(-u);if(this.negative!==0)return this.negative=0,this.iaddn(u),this.negative=1,this;if(this.words[0]-=u,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var h=0;h<this.length&&this.words[h]<0;h++)this.words[h]+=67108864,this.words[h+1]-=1;return this._strip()},n.prototype.addn=function(u){return this.clone().iaddn(u)},n.prototype.subn=function(u){return this.clone().isubn(u)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(u,h,p){var w=u.length+p,x;this._expand(w);var g,s=0;for(x=0;x<u.length;x++){g=(this.words[x+p]|0)+s;var v=(u.words[x]|0)*h;g-=v&67108863,s=(g>>26)-(v/67108864|0),this.words[x+p]=g&67108863}for(;x<this.length-p;x++)g=(this.words[x+p]|0)+s,s=g>>26,this.words[x+p]=g&67108863;if(s===0)return this._strip();for(i(s===-1),s=0,x=0;x<this.length;x++)g=-(this.words[x]|0)+s,s=g>>26,this.words[x]=g&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(u,h){var p=this.length-u.length,w=this.clone(),x=u,g=x.words[x.length-1]|0,s=this._countBits(g);p=26-s,p!==0&&(x=x.ushln(p),w.iushln(p),g=x.words[x.length-1]|0);var v=w.length-x.length,T;if(h!=="mod"){T=new n(null),T.length=v+1,T.words=new Array(T.length);for(var k=0;k<T.length;k++)T.words[k]=0}var Y=w.clone()._ishlnsubmul(x,1,v);Y.negative===0&&(w=Y,T&&(T.words[v]=1));for(var ee=v-1;ee>=0;ee--){var A=(w.words[x.length+ee]|0)*67108864+(w.words[x.length+ee-1]|0);for(A=Math.min(A/g|0,67108863),w._ishlnsubmul(x,A,ee);w.negative!==0;)A--,w.negative=0,w._ishlnsubmul(x,1,ee),w.isZero()||(w.negative^=1);T&&(T.words[ee]=A)}return T&&T._strip(),w._strip(),h!=="div"&&p!==0&&w.iushrn(p),{div:T||null,mod:w}},n.prototype.divmod=function(u,h,p){if(i(!u.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var w,x,g;return this.negative!==0&&u.negative===0?(g=this.neg().divmod(u,h),h!=="mod"&&(w=g.div.neg()),h!=="div"&&(x=g.mod.neg(),p&&x.negative!==0&&x.iadd(u)),{div:w,mod:x}):this.negative===0&&u.negative!==0?(g=this.divmod(u.neg(),h),h!=="mod"&&(w=g.div.neg()),{div:w,mod:g.mod}):this.negative&u.negative?(g=this.neg().divmod(u.neg(),h),h!=="div"&&(x=g.mod.neg(),p&&x.negative!==0&&x.isub(u)),{div:g.div,mod:x}):u.length>this.length||this.cmp(u)<0?{div:new n(0),mod:this}:u.length===1?h==="div"?{div:this.divn(u.words[0]),mod:null}:h==="mod"?{div:null,mod:new n(this.modrn(u.words[0]))}:{div:this.divn(u.words[0]),mod:new n(this.modrn(u.words[0]))}:this._wordDiv(u,h)},n.prototype.div=function(u){return this.divmod(u,"div",!1).div},n.prototype.mod=function(u){return this.divmod(u,"mod",!1).mod},n.prototype.umod=function(u){return this.divmod(u,"mod",!0).mod},n.prototype.divRound=function(u){var h=this.divmod(u);if(h.mod.isZero())return h.div;var p=h.div.negative!==0?h.mod.isub(u):h.mod,w=u.ushrn(1),x=u.andln(1),g=p.cmp(w);return g<0||x===1&&g===0?h.div:h.div.negative!==0?h.div.isubn(1):h.div.iaddn(1)},n.prototype.modrn=function(u){var h=u<0;h&&(u=-u),i(u<=67108863);for(var p=(1<<26)%u,w=0,x=this.length-1;x>=0;x--)w=(p*w+(this.words[x]|0))%u;return h?-w:w},n.prototype.modn=function(u){return this.modrn(u)},n.prototype.idivn=function(u){var h=u<0;h&&(u=-u),i(u<=67108863);for(var p=0,w=this.length-1;w>=0;w--){var x=(this.words[w]|0)+p*67108864;this.words[w]=x/u|0,p=x%u}return this._strip(),h?this.ineg():this},n.prototype.divn=function(u){return this.clone().idivn(u)},n.prototype.egcd=function(u){i(u.negative===0),i(!u.isZero());var h=this,p=u.clone();h.negative!==0?h=h.umod(u):h=h.clone();for(var w=new n(1),x=new n(0),g=new n(0),s=new n(1),v=0;h.isEven()&&p.isEven();)h.iushrn(1),p.iushrn(1),++v;for(var T=p.clone(),k=h.clone();!h.isZero();){for(var Y=0,ee=1;!(h.words[0]&ee)&&Y<26;++Y,ee<<=1);if(Y>0)for(h.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(T),x.isub(k)),w.iushrn(1),x.iushrn(1);for(var A=0,E=1;!(p.words[0]&E)&&A<26;++A,E<<=1);if(A>0)for(p.iushrn(A);A-- >0;)(g.isOdd()||s.isOdd())&&(g.iadd(T),s.isub(k)),g.iushrn(1),s.iushrn(1);h.cmp(p)>=0?(h.isub(p),w.isub(g),x.isub(s)):(p.isub(h),g.isub(w),s.isub(x))}return{a:g,b:s,gcd:p.iushln(v)}},n.prototype._invmp=function(u){i(u.negative===0),i(!u.isZero());var h=this,p=u.clone();h.negative!==0?h=h.umod(u):h=h.clone();for(var w=new n(1),x=new n(0),g=p.clone();h.cmpn(1)>0&&p.cmpn(1)>0;){for(var s=0,v=1;!(h.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(h.iushrn(s);s-- >0;)w.isOdd()&&w.iadd(g),w.iushrn(1);for(var T=0,k=1;!(p.words[0]&k)&&T<26;++T,k<<=1);if(T>0)for(p.iushrn(T);T-- >0;)x.isOdd()&&x.iadd(g),x.iushrn(1);h.cmp(p)>=0?(h.isub(p),w.isub(x)):(p.isub(h),x.isub(w))}var Y;return h.cmpn(1)===0?Y=w:Y=x,Y.cmpn(0)<0&&Y.iadd(u),Y},n.prototype.gcd=function(u){if(this.isZero())return u.abs();if(u.isZero())return this.abs();var h=this.clone(),p=u.clone();h.negative=0,p.negative=0;for(var w=0;h.isEven()&&p.isEven();w++)h.iushrn(1),p.iushrn(1);do{for(;h.isEven();)h.iushrn(1);for(;p.isEven();)p.iushrn(1);var x=h.cmp(p);if(x<0){var g=h;h=p,p=g}else if(x===0||p.cmpn(1)===0)break;h.isub(p)}while(!0);return p.iushln(w)},n.prototype.invm=function(u){return this.egcd(u).a.umod(u)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(u){return this.words[0]&u},n.prototype.bincn=function(u){i(typeof u=="number");var h=u%26,p=(u-h)/26,w=1<<h;if(this.length<=p)return this._expand(p+1),this.words[p]|=w,this;for(var x=w,g=p;x!==0&&g<this.length;g++){var s=this.words[g]|0;s+=x,x=s>>>26,s&=67108863,this.words[g]=s}return x!==0&&(this.words[g]=x,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(u){var h=u<0;if(this.negative!==0&&!h)return-1;if(this.negative===0&&h)return 1;this._strip();var p;if(this.length>1)p=1;else{h&&(u=-u),i(u<=67108863,"Number is too big");var w=this.words[0]|0;p=w===u?0:w<u?-1:1}return this.negative!==0?-p|0:p},n.prototype.cmp=function(u){if(this.negative!==0&&u.negative===0)return-1;if(this.negative===0&&u.negative!==0)return 1;var h=this.ucmp(u);return this.negative!==0?-h|0:h},n.prototype.ucmp=function(u){if(this.length>u.length)return 1;if(this.length<u.length)return-1;for(var h=0,p=this.length-1;p>=0;p--){var w=this.words[p]|0,x=u.words[p]|0;if(w!==x){w<x?h=-1:w>x&&(h=1);break}}return h},n.prototype.gtn=function(u){return this.cmpn(u)===1},n.prototype.gt=function(u){return this.cmp(u)===1},n.prototype.gten=function(u){return this.cmpn(u)>=0},n.prototype.gte=function(u){return this.cmp(u)>=0},n.prototype.ltn=function(u){return this.cmpn(u)===-1},n.prototype.lt=function(u){return this.cmp(u)===-1},n.prototype.lten=function(u){return this.cmpn(u)<=0},n.prototype.lte=function(u){return this.cmp(u)<=0},n.prototype.eqn=function(u){return this.cmpn(u)===0},n.prototype.eq=function(u){return this.cmp(u)===0},n.red=function(u){return new _(u)},n.prototype.toRed=function(u){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),u.convertTo(this)._forceRed(u)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(u){return this.red=u,this},n.prototype.forceRed=function(u){return i(!this.red,"Already a number in reduction context"),this._forceRed(u)},n.prototype.redAdd=function(u){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,u)},n.prototype.redIAdd=function(u){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,u)},n.prototype.redSub=function(u){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,u)},n.prototype.redISub=function(u){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,u)},n.prototype.redShl=function(u){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,u)},n.prototype.redMul=function(u){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.mul(this,u)},n.prototype.redIMul=function(u){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.imul(this,u)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(u){return i(this.red&&!u.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,u)};var K={k256:null,p224:null,p192:null,p25519:null};function G(f,u){this.name=f,this.p=new n(u,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}G.prototype._tmp=function(){var u=new n(null);return u.words=new Array(Math.ceil(this.n/13)),u},G.prototype.ireduce=function(u){var h=u,p;do this.split(h,this.tmp),h=this.imulK(h),h=h.iadd(this.tmp),p=h.bitLength();while(p>this.n);var w=p<this.n?-1:h.ucmp(this.p);return w===0?(h.words[0]=0,h.length=1):w>0?h.isub(this.p):h.strip!==void 0?h.strip():h._strip(),h},G.prototype.split=function(u,h){u.iushrn(this.n,0,h)},G.prototype.imulK=function(u){return u.imul(this.k)};function te(){G.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(te,G),te.prototype.split=function(u,h){for(var p=4194303,w=Math.min(u.length,9),x=0;x<w;x++)h.words[x]=u.words[x];if(h.length=w,u.length<=9){u.words[0]=0,u.length=1;return}var g=u.words[9];for(h.words[h.length++]=g&p,x=10;x<u.length;x++){var s=u.words[x]|0;u.words[x-10]=(s&p)<<4|g>>>22,g=s}g>>>=22,u.words[x-10]=g,g===0&&u.length>10?u.length-=10:u.length-=9},te.prototype.imulK=function(u){u.words[u.length]=0,u.words[u.length+1]=0,u.length+=2;for(var h=0,p=0;p<u.length;p++){var w=u.words[p]|0;h+=w*977,u.words[p]=h&67108863,h=w*64+(h/67108864|0)}return u.words[u.length-1]===0&&(u.length--,u.words[u.length-1]===0&&u.length--),u};function Q(){G.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(Q,G);function W(){G.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(W,G);function ce(){G.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(ce,G),ce.prototype.imulK=function(u){for(var h=0,p=0;p<u.length;p++){var w=(u.words[p]|0)*19+h,x=w&67108863;w>>>=26,u.words[p]=x,h=w}return h!==0&&(u.words[u.length++]=h),u},n._prime=function(u){if(K[u])return K[u];var h;if(u==="k256")h=new te;else if(u==="p224")h=new Q;else if(u==="p192")h=new W;else if(u==="p25519")h=new ce;else throw new Error("Unknown prime "+u);return K[u]=h,h};function _(f){if(typeof f=="string"){var u=n._prime(f);this.m=u.p,this.prime=u}else i(f.gtn(1),"modulus must be greater than 1"),this.m=f,this.prime=null}_.prototype._verify1=function(u){i(u.negative===0,"red works only with positives"),i(u.red,"red works only with red numbers")},_.prototype._verify2=function(u,h){i((u.negative|h.negative)===0,"red works only with positives"),i(u.red&&u.red===h.red,"red works only with red numbers")},_.prototype.imod=function(u){return this.prime?this.prime.ireduce(u)._forceRed(this):(M(u,u.umod(this.m)._forceRed(this)),u)},_.prototype.neg=function(u){return u.isZero()?u.clone():this.m.sub(u)._forceRed(this)},_.prototype.add=function(u,h){this._verify2(u,h);var p=u.add(h);return p.cmp(this.m)>=0&&p.isub(this.m),p._forceRed(this)},_.prototype.iadd=function(u,h){this._verify2(u,h);var p=u.iadd(h);return p.cmp(this.m)>=0&&p.isub(this.m),p},_.prototype.sub=function(u,h){this._verify2(u,h);var p=u.sub(h);return p.cmpn(0)<0&&p.iadd(this.m),p._forceRed(this)},_.prototype.isub=function(u,h){this._verify2(u,h);var p=u.isub(h);return p.cmpn(0)<0&&p.iadd(this.m),p},_.prototype.shl=function(u,h){return this._verify1(u),this.imod(u.ushln(h))},_.prototype.imul=function(u,h){return this._verify2(u,h),this.imod(u.imul(h))},_.prototype.mul=function(u,h){return this._verify2(u,h),this.imod(u.mul(h))},_.prototype.isqr=function(u){return this.imul(u,u.clone())},_.prototype.sqr=function(u){return this.mul(u,u)},_.prototype.sqrt=function(u){if(u.isZero())return u.clone();var h=this.m.andln(3);if(i(h%2===1),h===3){var p=this.m.add(new n(1)).iushrn(2);return this.pow(u,p)}for(var w=this.m.subn(1),x=0;!w.isZero()&&w.andln(1)===0;)x++,w.iushrn(1);i(!w.isZero());var g=new n(1).toRed(this),s=g.redNeg(),v=this.m.subn(1).iushrn(1),T=this.m.bitLength();for(T=new n(2*T*T).toRed(this);this.pow(T,v).cmp(s)!==0;)T.redIAdd(s);for(var k=this.pow(T,w),Y=this.pow(u,w.addn(1).iushrn(1)),ee=this.pow(u,w),A=x;ee.cmp(g)!==0;){for(var E=ee,q=0;E.cmp(g)!==0;q++)E=E.redSqr();i(q<A);var V=this.pow(k,new n(1).iushln(A-q-1));Y=Y.redMul(V),k=V.redSqr(),ee=ee.redMul(k),A=q}return Y},_.prototype.invm=function(u){var h=u._invmp(this.m);return h.negative!==0?(h.negative=0,this.imod(h).redNeg()):this.imod(h)},_.prototype.pow=function(u,h){if(h.isZero())return new n(1).toRed(this);if(h.cmpn(1)===0)return u.clone();var p=4,w=new Array(1<<p);w[0]=new n(1).toRed(this),w[1]=u;for(var x=2;x<w.length;x++)w[x]=this.mul(w[x-1],u);var g=w[0],s=0,v=0,T=h.bitLength()%26;for(T===0&&(T=26),x=h.length-1;x>=0;x--){for(var k=h.words[x],Y=T-1;Y>=0;Y--){var ee=k>>Y&1;if(g!==w[0]&&(g=this.sqr(g)),ee===0&&s===0){v=0;continue}s<<=1,s|=ee,v++,!(v!==p&&(x!==0||Y!==0))&&(g=this.mul(g,w[s]),v=0,s=0)}T=26}return g},_.prototype.convertTo=function(u){var h=u.umod(this.m);return h===u?h.clone():h},_.prototype.convertFrom=function(u){var h=u.clone();return h.red=null,h},n.mont=function(u){return new o(u)};function o(f){_.call(this,f),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(o,_),o.prototype.convertTo=function(u){return this.imod(u.ushln(this.shift))},o.prototype.convertFrom=function(u){var h=this.imod(u.mul(this.rinv));return h.red=null,h},o.prototype.imul=function(u,h){if(u.isZero()||h.isZero())return u.words[0]=0,u.length=1,u;var p=u.imul(h),w=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),x=p.isub(w).iushrn(this.shift),g=x;return x.cmp(this.m)>=0?g=x.isub(this.m):x.cmpn(0)<0&&(g=x.iadd(this.m)),g._forceRed(this)},o.prototype.mul=function(u,h){if(u.isZero()||h.isZero())return new n(0)._forceRed(this);var p=u.mul(h),w=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),x=p.isub(w).iushrn(this.shift),g=x;return x.cmp(this.m)>=0?g=x.isub(this.m):x.cmpn(0)<0&&(g=x.iadd(this.m)),g._forceRed(this)},o.prototype.invm=function(u){var h=this.imod(u._invmp(this.m).mul(this.r2));return h._forceRed(this)}})(e,Ze)})(Jg);var Qg=Jg.exports,ls=Qg,cW=Vs;function dW(e){var t=x4(e),r=t.toRed(ls.mont(e.modulus)).redPow(new ls(e.publicExponent)).fromRed();return{blinder:r,unblinder:t.invm(e.modulus)}}function x4(e){var t=e.modulus.byteLength(),r;do r=new ls(cW(t));while(r.cmp(e.modulus)>=0||!r.umod(e.prime1)||!r.umod(e.prime2));return r}function E4(e,t){var r=dW(t),i=t.modulus.byteLength(),a=new ls(e).mul(r.blinder).umod(t.modulus),n=a.toRed(ls.mont(t.prime1)),l=a.toRed(ls.mont(t.prime2)),c=t.coefficient,d=t.prime1,m=t.prime2,M=n.redPow(t.exponent1).fromRed(),S=l.redPow(t.exponent2).fromRed(),R=M.isub(S).imul(c).umod(d).imul(m);return S.iadd(R).imul(r.unblinder).umod(t.modulus).toArrayLike(ke.Buffer,"be",i)}E4.getr=x4;var em=E4,T0={};const pW="elliptic",vW="6.5.7",gW="EC cryptography",mW="lib/elliptic.js",yW=["lib"],bW={lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},wW={type:"git",url:"git@github.com:indutny/elliptic"},_W=["EC","Elliptic","curve","Cryptography"],MW="Fedor Indutny <fedor@indutny.com>",SW="MIT",xW={url:"https://github.com/indutny/elliptic/issues"},EW="https://github.com/indutny/elliptic",RW={brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},AW={"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"},TW={name:pW,version:vW,description:gW,main:mW,files:yW,scripts:bW,repository:wW,keywords:_W,author:MW,license:SW,bugs:xW,homepage:EW,devDependencies:RW,dependencies:AW};var ni={},tm={exports:{}};tm.exports;(function(e){(function(t,r){function i(_,o){if(!_)throw new Error(o||"Assertion failed")}function a(_,o){_.super_=o;var f=function(){};f.prototype=o.prototype,_.prototype=new f,_.prototype.constructor=_}function n(_,o,f){if(n.isBN(_))return _;this.negative=0,this.words=null,this.length=0,this.red=null,_!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(_||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=ke.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var h=0;o[0]==="-"&&(h++,this.negative=1),h<o.length&&(f===16?this._parseHex(o,h,u):(this._parseBase(o,f,h),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p,w,x=0;if(u==="be")for(h=o.length-1,p=0;h>=0;h-=3)w=o[h]|o[h-1]<<8|o[h-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(h=0,p=0;h<o.length;h+=3)w=o[h]|o[h+1]<<8|o[h+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function c(_,o){var f=_.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(_,o,f){var u=c(_,f);return f-1>=o&&(u|=c(_,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p=0,w=0,x;if(u==="be")for(h=o.length-1;h>=f;h-=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(h=g%2===0?f+1:f;h<o.length;h+=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(_,o,f,u){for(var h=0,p=Math.min(_.length,f),w=o;w<p;w++){var x=_.charCodeAt(w)-48;h*=u,x>=49?h+=x-49+10:x>=17?h+=x-17+10:h+=x}return h}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var h=0,p=1;p<=67108863;p*=f)h++;h--,p=p/f|0;for(var w=o.length-u,x=w%h,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=h)s=m(o,v,v+h,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var M=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var h=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<h|p)&16777215).toString(16);p=x>>>24-h&16777215,p!==0||w!==this.length-1?u=M[6-g.length]+g+u:u=g+u,h+=2,h>=26&&(h-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var k=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=k+u:u=M[s-k.length]+k+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var h=this.byteLength(),p=u||Math.max(1,h);i(h<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-h;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(_){for(var o=new Array(_.bitLength()),f=0;f<o.length;f++){var u=f/26|0,h=f%26;o[f]=(_.words[u]&1<<h)>>>h}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var h=0;h<u.length;h++)this.words[h]=f.words[h]^u.words[h];if(this!==f)for(;h<f.length;h++)this.words[h]=f.words[h];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var h=0;h<f;h++)this.words[h]=~this.words[h]&67108863;return u>0&&(this.words[h]=~this.words[h]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,h=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<h:this.words[u]=this.words[u]&~(1<<h),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,h;this.length>o.length?(u=this,h=o):(u=o,h=this);for(var p=0,w=0;w<h.length;w++)f=(u.words[w]|0)+(h.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var h,p;u>0?(h=this,p=o):(h=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(h.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<h.length;x++)f=(h.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<h.length&&h!==this)for(;x<h.length;x++)this.words[x]=h.words[x];return this.length=Math.max(this.length,x),h!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(_,o,f){f.negative=o.negative^_.negative;var u=_.length+o.length|0;f.length=u,u=u-1|0;var h=_.words[0]|0,p=o.words[0]|0,w=h*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,k=Math.min(s,o.length-1),Y=Math.max(0,s-_.length+1);Y<=k;Y++){var ee=s-Y|0;h=_.words[ee]|0,p=o.words[Y]|0,w=h*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var B=function(o,f,u){var h=o.words,p=f.words,w=u.words,x=0,g,s,v,T=h[0]|0,k=T&8191,Y=T>>>13,ee=h[1]|0,A=ee&8191,E=ee>>>13,q=h[2]|0,V=q&8191,X=q>>>13,b=h[3]|0,y=b&8191,D=b>>>13,U=h[4]|0,Z=U&8191,F=U>>>13,N=h[5]|0,H=N&8191,z=N>>>13,fe=h[6]|0,re=fe&8191,ae=fe>>>13,be=h[7]|0,J=be&8191,le=be>>>13,se=h[8]|0,ue=se&8191,de=se>>>13,ve=h[9]|0,ie=ve&8191,oe=ve>>>13,Ae=p[0]|0,pe=Ae&8191,Se=Ae>>>13,Ke=p[1]|0,we=Ke&8191,xe=Ke>>>13,qe=p[2]|0,ye=qe&8191,Me=qe>>>13,Ve=p[3]|0,ge=Ve&8191,Ee=Ve>>>13,Je=p[4]|0,Re=Je&8191,Le=Je>>>13,at=p[5]|0,Te=at&8191,Ne=at>>>13,rt=p[6]|0,Oe=rt&8191,De=rt>>>13,nt=p[7]|0,Ie=nt&8191,$e=nt>>>13,st=p[8]|0,Pe=st&8191,je=st>>>13,ht=p[9]|0,Ce=ht&8191,Fe=ht>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(k,pe),s=Math.imul(k,Se),s=s+Math.imul(Y,pe)|0,v=Math.imul(Y,Se);var it=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(it>>>26)|0,it&=67108863,g=Math.imul(A,pe),s=Math.imul(A,Se),s=s+Math.imul(E,pe)|0,v=Math.imul(E,Se),g=g+Math.imul(k,we)|0,s=s+Math.imul(k,xe)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,xe)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,pe),s=Math.imul(V,Se),s=s+Math.imul(X,pe)|0,v=Math.imul(X,Se),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,xe)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,xe)|0,g=g+Math.imul(k,ye)|0,s=s+Math.imul(k,Me)|0,s=s+Math.imul(Y,ye)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,pe),s=Math.imul(y,Se),s=s+Math.imul(D,pe)|0,v=Math.imul(D,Se),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,xe)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,xe)|0,g=g+Math.imul(A,ye)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ye)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(k,ge)|0,s=s+Math.imul(k,Ee)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Ee)|0;var Ot=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,g=Math.imul(Z,pe),s=Math.imul(Z,Se),s=s+Math.imul(F,pe)|0,v=Math.imul(F,Se),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,xe)|0,s=s+Math.imul(D,we)|0,v=v+Math.imul(D,xe)|0,g=g+Math.imul(V,ye)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ye)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Ee)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Ee)|0,g=g+Math.imul(k,Re)|0,s=s+Math.imul(k,Le)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Le)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(H,pe),s=Math.imul(H,Se),s=s+Math.imul(z,pe)|0,v=Math.imul(z,Se),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,xe)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,xe)|0,g=g+Math.imul(y,ye)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(D,ye)|0,v=v+Math.imul(D,Me)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Ee)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Ee)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Le)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Le)|0,g=g+Math.imul(k,Te)|0,s=s+Math.imul(k,Ne)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,Ne)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(re,pe),s=Math.imul(re,Se),s=s+Math.imul(ae,pe)|0,v=Math.imul(ae,Se),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,xe)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,xe)|0,g=g+Math.imul(Z,ye)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(F,ye)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Ee)|0,s=s+Math.imul(D,ge)|0,v=v+Math.imul(D,Ee)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Le)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Le)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(k,Oe)|0,s=s+Math.imul(k,De)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,De)|0;var kt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(kt>>>26)|0,kt&=67108863,g=Math.imul(J,pe),s=Math.imul(J,Se),s=s+Math.imul(le,pe)|0,v=Math.imul(le,Se),g=g+Math.imul(re,we)|0,s=s+Math.imul(re,xe)|0,s=s+Math.imul(ae,we)|0,v=v+Math.imul(ae,xe)|0,g=g+Math.imul(H,ye)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ye)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Ee)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Ee)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Le)|0,s=s+Math.imul(D,Re)|0,v=v+Math.imul(D,Le)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(k,Ie)|0,s=s+Math.imul(k,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Ut=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,g=Math.imul(ue,pe),s=Math.imul(ue,Se),s=s+Math.imul(de,pe)|0,v=Math.imul(de,Se),g=g+Math.imul(J,we)|0,s=s+Math.imul(J,xe)|0,s=s+Math.imul(le,we)|0,v=v+Math.imul(le,xe)|0,g=g+Math.imul(re,ye)|0,s=s+Math.imul(re,Me)|0,s=s+Math.imul(ae,ye)|0,v=v+Math.imul(ae,Me)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Ee)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Ee)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Le)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Le)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(D,Te)|0,v=v+Math.imul(D,Ne)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0,g=g+Math.imul(k,Pe)|0,s=s+Math.imul(k,je)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,je)|0;var Ht=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,g=Math.imul(ie,pe),s=Math.imul(ie,Se),s=s+Math.imul(oe,pe)|0,v=Math.imul(oe,Se),g=g+Math.imul(ue,we)|0,s=s+Math.imul(ue,xe)|0,s=s+Math.imul(de,we)|0,v=v+Math.imul(de,xe)|0,g=g+Math.imul(J,ye)|0,s=s+Math.imul(J,Me)|0,s=s+Math.imul(le,ye)|0,v=v+Math.imul(le,Me)|0,g=g+Math.imul(re,ge)|0,s=s+Math.imul(re,Ee)|0,s=s+Math.imul(ae,ge)|0,v=v+Math.imul(ae,Ee)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Le)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Le)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(D,Oe)|0,v=v+Math.imul(D,De)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(k,Ce)|0,s=s+Math.imul(k,Fe)|0,s=s+Math.imul(Y,Ce)|0,v=v+Math.imul(Y,Fe)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,xe),s=s+Math.imul(oe,we)|0,v=Math.imul(oe,xe),g=g+Math.imul(ue,ye)|0,s=s+Math.imul(ue,Me)|0,s=s+Math.imul(de,ye)|0,v=v+Math.imul(de,Me)|0,g=g+Math.imul(J,ge)|0,s=s+Math.imul(J,Ee)|0,s=s+Math.imul(le,ge)|0,v=v+Math.imul(le,Ee)|0,g=g+Math.imul(re,Re)|0,s=s+Math.imul(re,Le)|0,s=s+Math.imul(ae,Re)|0,v=v+Math.imul(ae,Le)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(D,Ie)|0,v=v+Math.imul(D,$e)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ce)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Ce)|0,v=v+Math.imul(E,Fe)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ye),s=Math.imul(ie,Me),s=s+Math.imul(oe,ye)|0,v=Math.imul(oe,Me),g=g+Math.imul(ue,ge)|0,s=s+Math.imul(ue,Ee)|0,s=s+Math.imul(de,ge)|0,v=v+Math.imul(de,Ee)|0,g=g+Math.imul(J,Re)|0,s=s+Math.imul(J,Le)|0,s=s+Math.imul(le,Re)|0,v=v+Math.imul(le,Le)|0,g=g+Math.imul(re,Te)|0,s=s+Math.imul(re,Ne)|0,s=s+Math.imul(ae,Te)|0,v=v+Math.imul(ae,Ne)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(D,Pe)|0,v=v+Math.imul(D,je)|0,g=g+Math.imul(V,Ce)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Ce)|0,v=v+Math.imul(X,Fe)|0;var At=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(At>>>26)|0,At&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Ee),s=s+Math.imul(oe,ge)|0,v=Math.imul(oe,Ee),g=g+Math.imul(ue,Re)|0,s=s+Math.imul(ue,Le)|0,s=s+Math.imul(de,Re)|0,v=v+Math.imul(de,Le)|0,g=g+Math.imul(J,Te)|0,s=s+Math.imul(J,Ne)|0,s=s+Math.imul(le,Te)|0,v=v+Math.imul(le,Ne)|0,g=g+Math.imul(re,Oe)|0,s=s+Math.imul(re,De)|0,s=s+Math.imul(ae,Oe)|0,v=v+Math.imul(ae,De)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(y,Ce)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(D,Ce)|0,v=v+Math.imul(D,Fe)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Le),s=s+Math.imul(oe,Re)|0,v=Math.imul(oe,Le),g=g+Math.imul(ue,Te)|0,s=s+Math.imul(ue,Ne)|0,s=s+Math.imul(de,Te)|0,v=v+Math.imul(de,Ne)|0,g=g+Math.imul(J,Oe)|0,s=s+Math.imul(J,De)|0,s=s+Math.imul(le,Oe)|0,v=v+Math.imul(le,De)|0,g=g+Math.imul(re,Ie)|0,s=s+Math.imul(re,$e)|0,s=s+Math.imul(ae,Ie)|0,v=v+Math.imul(ae,$e)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ce)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(F,Ce)|0,v=v+Math.imul(F,Fe)|0;var yt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(yt>>>26)|0,yt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,Ne),s=s+Math.imul(oe,Te)|0,v=Math.imul(oe,Ne),g=g+Math.imul(ue,Oe)|0,s=s+Math.imul(ue,De)|0,s=s+Math.imul(de,Oe)|0,v=v+Math.imul(de,De)|0,g=g+Math.imul(J,Ie)|0,s=s+Math.imul(J,$e)|0,s=s+Math.imul(le,Ie)|0,v=v+Math.imul(le,$e)|0,g=g+Math.imul(re,Pe)|0,s=s+Math.imul(re,je)|0,s=s+Math.imul(ae,Pe)|0,v=v+Math.imul(ae,je)|0,g=g+Math.imul(H,Ce)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Ce)|0,v=v+Math.imul(z,Fe)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,De),s=s+Math.imul(oe,Oe)|0,v=Math.imul(oe,De),g=g+Math.imul(ue,Ie)|0,s=s+Math.imul(ue,$e)|0,s=s+Math.imul(de,Ie)|0,v=v+Math.imul(de,$e)|0,g=g+Math.imul(J,Pe)|0,s=s+Math.imul(J,je)|0,s=s+Math.imul(le,Pe)|0,v=v+Math.imul(le,je)|0,g=g+Math.imul(re,Ce)|0,s=s+Math.imul(re,Fe)|0,s=s+Math.imul(ae,Ce)|0,v=v+Math.imul(ae,Fe)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(oe,Ie)|0,v=Math.imul(oe,$e),g=g+Math.imul(ue,Pe)|0,s=s+Math.imul(ue,je)|0,s=s+Math.imul(de,Pe)|0,v=v+Math.imul(de,je)|0,g=g+Math.imul(J,Ce)|0,s=s+Math.imul(J,Fe)|0,s=s+Math.imul(le,Ce)|0,v=v+Math.imul(le,Fe)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,je),s=s+Math.imul(oe,Pe)|0,v=Math.imul(oe,je),g=g+Math.imul(ue,Ce)|0,s=s+Math.imul(ue,Fe)|0,s=s+Math.imul(de,Ce)|0,v=v+Math.imul(de,Fe)|0;var $t=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+($t>>>26)|0,$t&=67108863,g=Math.imul(ie,Ce),s=Math.imul(ie,Fe),s=s+Math.imul(oe,Ce)|0,v=Math.imul(oe,Fe);var Dt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,w[0]=it,w[1]=et,w[2]=Et,w[3]=Ot,w[4]=It,w[5]=Bt,w[6]=kt,w[7]=Ut,w[8]=Ht,w[9]=Lt,w[10]=dt,w[11]=At,w[12]=Mt,w[13]=yt,w[14]=Pt,w[15]=gt,w[16]=bt,w[17]=$t,w[18]=Dt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(B=O);function L(_,o,f){f.negative=o.negative^_.negative,f.length=_.length+o.length;for(var u=0,h=0,p=0;p<f.length-1;p++){var w=h;h=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-_.length+1);s<=g;s++){var v=p-s,T=_.words[v]|0,k=o.words[s]|0,Y=T*k,ee=Y&67108863;w=w+(Y/67108864|0)|0,ee=ee+x|0,x=ee&67108863,w=w+(ee>>>26)|0,h+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=h}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(_,o,f){var u=new C;return u.mulp(_,o,f)}n.prototype.mulTo=function(o,f){var u,h=this.length+o.length;return this.length===10&&o.length===10?u=B(this,o,f):h<63?u=O(this,o,f):h<1024?u=L(this,o,f):u=P(this,o,f),u};function C(_,o){this.x=_,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,h=0;h<o;h++)f[h]=this.revBin(h,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var h=0,p=0;p<f;p++)h|=(o&1)<<f-p-1,o>>=1;return h},C.prototype.permute=function(o,f,u,h,p,w){for(var x=0;x<w;x++)h[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,h,p,w){this.permute(w,o,f,u,h,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var k=s,Y=v,ee=0;ee<x;ee++){var A=u[T+ee],E=h[T+ee],q=u[T+ee+x],V=h[T+ee+x],X=k*q-Y*V;V=k*V+Y*q,q=X,u[T+ee]=A+q,h[T+ee]=E+V,u[T+ee+x]=A-q,h[T+ee+x]=E-V,ee!==g&&(X=s*k-v*Y,Y=s*Y+v*k,k=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,h=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+h},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var h=0;h<u/2;h++){var p=o[h];o[h]=o[u-h-1],o[u-h-1]=p,p=f[h],f[h]=-f[u-h-1],f[u-h-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,h=0;h<f/2;h++){var p=Math.round(o[2*h+1]/f)*8192+Math.round(o[2*h]/f)+u;o[h]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,h){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<h;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var h=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(h),w=this.stub(h),x=new Array(h),g=new Array(h),s=new Array(h),v=new Array(h),T=new Array(h),k=new Array(h),Y=u.words;Y.length=h,this.convert13b(o.words,o.length,x,h),this.convert13b(f.words,f.length,v,h),this.transform(x,w,g,s,h,p),this.transform(v,w,T,k,h,p);for(var ee=0;ee<h;ee++){var A=g[ee]*T[ee]-s[ee]*k[ee];s[ee]=g[ee]*k[ee]+s[ee]*T[ee],g[ee]=A}return this.conjugate(g,s,h),this.transform(g,s,Y,w,h,p),this.conjugate(Y,w,h),this.normalize13b(Y,h),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var h=(this.words[u]|0)*o,p=(h&67108863)+(f&67108863);f>>=26,f+=h/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,h=0;h<f.length&&f[h]===0;h++,u=u.sqr());if(++h<f.length)for(var p=u.sqr();h<f.length;h++,p=p.sqr())f[h]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&h,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var h;f?h=(f-f%26)/26:h=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(h-=w,h=Math.max(0,h),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=h);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&h)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var h=67108863^67108863>>>f<<f;this.words[this.length-1]&=h}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var h=o.length+u,p;this._expand(h);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,h=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),h.iushln(u),w=p.words[p.length-1]|0);var g=h.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=h.clone()._ishlnsubmul(p,1,g);T.negative===0&&(h=T,s&&(s.words[g]=1));for(var k=g-1;k>=0;k--){var Y=(h.words[p.length+k]|0)*67108864+(h.words[p.length+k-1]|0);for(Y=Math.min(Y/w|0,67108863),h._ishlnsubmul(p,Y,k);h.negative!==0;)Y--,h.negative=0,h._ishlnsubmul(p,1,k),h.isZero()||(h.negative^=1);s&&(s.words[k]=Y)}return s&&s.strip(),h.strip(),f!=="div"&&u!==0&&h.iushrn(u),{div:s||null,mod:h}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var h,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(h=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:h,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(h=w.div.neg()),{div:h,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,h=o.ushrn(1),p=o.andln(1),w=u.cmp(h);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,h=this.length-1;h>=0;h--)u=(f*u+(this.words[h]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var h=(this.words[u]|0)+f*67108864;this.words[u]=h/o|0,f=h%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,k=1;!(f.words[0]&k)&&T<26;++T,k<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(h.isOdd()||p.isOdd())&&(h.iadd(s),p.isub(v)),h.iushrn(1),p.iushrn(1);for(var Y=0,ee=1;!(u.words[0]&ee)&&Y<26;++Y,ee<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(w),p.isub(x)):(u.isub(f),w.isub(h),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)h.isOdd()&&h.iadd(w),h.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(p)):(u.isub(f),p.isub(h))}var T;return f.cmpn(1)===0?T=h:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var h=0;f.isEven()&&u.isEven();h++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(h)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=h,this;for(var p=h,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var h=this.words[0]|0;u=h===o?0:h<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var h=this.words[u]|0,p=o.words[u]|0;if(h!==p){h<p?f=-1:h>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new W(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var j={k256:null,p224:null,p192:null,p25519:null};function $(_,o){this.name=_,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var h=u<this.n?-1:f.ucmp(this.p);return h===0?(f.words[0]=0,f.length=1):h>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function K(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(K,$),K.prototype.split=function(o,f){for(var u=4194303,h=Math.min(o.length,9),p=0;p<h;p++)f.words[p]=o.words[p];if(f.length=h,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},K.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var h=o.words[u]|0;f+=h*977,o.words[u]=f&67108863,f=h*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function te(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(te,$);function Q(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(Q,$),Q.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var h=(o.words[u]|0)*19+f,p=h&67108863;h>>>=26,o.words[u]=p,f=h}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(j[o])return j[o];var f;if(o==="k256")f=new K;else if(o==="p224")f=new G;else if(o==="p192")f=new te;else if(o==="p25519")f=new Q;else throw new Error("Unknown prime "+o);return j[o]=f,f};function W(_){if(typeof _=="string"){var o=n._prime(_);this.m=o.p,this.prime=o}else i(_.gtn(1),"modulus must be greater than 1"),this.m=_,this.prime=null}W.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},W.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},W.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},W.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},W.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},W.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},W.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},W.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},W.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},W.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},W.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},W.prototype.isqr=function(o){return this.imul(o,o.clone())},W.prototype.sqr=function(o){return this.mul(o,o)},W.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var h=this.m.subn(1),p=0;!h.isZero()&&h.andln(1)===0;)p++,h.iushrn(1);i(!h.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,h),T=this.pow(o,h.addn(1).iushrn(1)),k=this.pow(o,h),Y=p;k.cmp(w)!==0;){for(var ee=k,A=0;ee.cmp(w)!==0;A++)ee=ee.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),k=k.redMul(v),Y=A}return T},W.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},W.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,h=new Array(1<<u);h[0]=new n(1).toRed(this),h[1]=o;for(var p=2;p<h.length;p++)h[p]=this.mul(h[p-1],o);var w=h[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var k=v>>T&1;if(w!==h[0]&&(w=this.sqr(w)),k===0&&x===0){g=0;continue}x<<=1,x|=k,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,h[x]),g=0,x=0)}s=26}return w},W.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},W.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new ce(o)};function ce(_){W.call(this,_),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(ce,W),ce.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},ce.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},ce.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(tm);var ao=tm.exports,rm={};(function(e){var t=e;function r(n,l){if(Array.isArray(n))return n.slice();if(!n)return[];var c=[];if(typeof n!="string"){for(var d=0;d<n.length;d++)c[d]=n[d]|0;return c}if(l==="hex"){n=n.replace(/[^a-z0-9]+/ig,""),n.length%2!==0&&(n="0"+n);for(var d=0;d<n.length;d+=2)c.push(parseInt(n[d]+n[d+1],16))}else for(var d=0;d<n.length;d++){var m=n.charCodeAt(d),M=m>>8,S=m&255;M?c.push(M,S):c.push(S)}return c}t.toArray=r;function i(n){return n.length===1?"0"+n:n}t.zero2=i;function a(n){for(var l="",c=0;c<n.length;c++)l+=i(n[c].toString(16));return l}t.toHex=a,t.encode=function(l,c){return c==="hex"?a(l):l}})(rm);(function(e){var t=e,r=ao,i=Ai,a=rm;t.assert=i,t.toArray=a.toArray,t.zero2=a.zero2,t.toHex=a.toHex,t.encode=a.encode;function n(M,S,R){var I=new Array(Math.max(M.bitLength(),R)+1),O;for(O=0;O<I.length;O+=1)I[O]=0;var B=1<<S+1,L=M.clone();for(O=0;O<I.length;O++){var P,C=L.andln(B-1);L.isOdd()?(C>(B>>1)-1?P=(B>>1)-C:P=C,L.isubn(P)):P=0,I[O]=P,L.iushrn(1)}return I}t.getNAF=n;function l(M,S){var R=[[],[]];M=M.clone(),S=S.clone();for(var I=0,O=0,B;M.cmpn(-I)>0||S.cmpn(-O)>0;){var L=M.andln(3)+I&3,P=S.andln(3)+O&3;L===3&&(L=-1),P===3&&(P=-1);var C;L&1?(B=M.andln(7)+I&7,(B===3||B===5)&&P===2?C=-L:C=L):C=0,R[0].push(C);var j;P&1?(B=S.andln(7)+O&7,(B===3||B===5)&&L===2?j=-P:j=P):j=0,R[1].push(j),2*I===C+1&&(I=1-I),2*O===j+1&&(O=1-O),M.iushrn(1),S.iushrn(1)}return R}t.getJSF=l;function c(M,S,R){var I="_"+S;M.prototype[S]=function(){return this[I]!==void 0?this[I]:this[I]=R.call(this)}}t.cachedProperty=c;function d(M){return typeof M=="string"?t.toArray(M,"hex"):M}t.parseBytes=d;function m(M){return new r(M,"hex","le")}t.intFromLE=m})(ni);var im={},Zo=ao,Dl=ni,ph=Dl.getNAF,OW=Dl.getJSF,vh=Dl.assert;function qo(e,t){this.type=e,this.p=new Zo(t.p,16),this.red=t.prime?Zo.red(t.prime):Zo.mont(this.p),this.zero=new Zo(0).toRed(this.red),this.one=new Zo(1).toRed(this.red),this.two=new Zo(2).toRed(this.red),this.n=t.n&&new Zo(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var wc=qo;qo.prototype.point=function(){throw new Error("Not implemented")};qo.prototype.validate=function(){throw new Error("Not implemented")};qo.prototype._fixedNafMul=function(t,r){vh(t.precomputed);var i=t._getDoubles(),a=ph(r,1,this._bitLength),n=(1<<i.step+1)-(i.step%2===0?2:1);n/=3;var l=[],c,d;for(c=0;c<a.length;c+=i.step){d=0;for(var m=c+i.step-1;m>=c;m--)d=(d<<1)+a[m];l.push(d)}for(var M=this.jpoint(null,null,null),S=this.jpoint(null,null,null),R=n;R>0;R--){for(c=0;c<l.length;c++)d=l[c],d===R?S=S.mixedAdd(i.points[c]):d===-R&&(S=S.mixedAdd(i.points[c].neg()));M=M.add(S)}return M.toP()};qo.prototype._wnafMul=function(t,r){var i=4,a=t._getNAFPoints(i);i=a.wnd;for(var n=a.points,l=ph(r,i,this._bitLength),c=this.jpoint(null,null,null),d=l.length-1;d>=0;d--){for(var m=0;d>=0&&l[d]===0;d--)m++;if(d>=0&&m++,c=c.dblp(m),d<0)break;var M=l[d];vh(M!==0),t.type==="affine"?M>0?c=c.mixedAdd(n[M-1>>1]):c=c.mixedAdd(n[-M-1>>1].neg()):M>0?c=c.add(n[M-1>>1]):c=c.add(n[-M-1>>1].neg())}return t.type==="affine"?c.toP():c};qo.prototype._wnafMulAdd=function(t,r,i,a,n){var l=this._wnafT1,c=this._wnafT2,d=this._wnafT3,m=0,M,S,R;for(M=0;M<a;M++){R=r[M];var I=R._getNAFPoints(t);l[M]=I.wnd,c[M]=I.points}for(M=a-1;M>=1;M-=2){var O=M-1,B=M;if(l[O]!==1||l[B]!==1){d[O]=ph(i[O],l[O],this._bitLength),d[B]=ph(i[B],l[B],this._bitLength),m=Math.max(d[O].length,m),m=Math.max(d[B].length,m);continue}var L=[r[O],null,null,r[B]];r[O].y.cmp(r[B].y)===0?(L[1]=r[O].add(r[B]),L[2]=r[O].toJ().mixedAdd(r[B].neg())):r[O].y.cmp(r[B].y.redNeg())===0?(L[1]=r[O].toJ().mixedAdd(r[B]),L[2]=r[O].add(r[B].neg())):(L[1]=r[O].toJ().mixedAdd(r[B]),L[2]=r[O].toJ().mixedAdd(r[B].neg()));var P=[-3,-1,-5,-7,0,7,5,1,3],C=OW(i[O],i[B]);for(m=Math.max(C[0].length,m),d[O]=new Array(m),d[B]=new Array(m),S=0;S<m;S++){var j=C[0][S]|0,$=C[1][S]|0;d[O][S]=P[(j+1)*3+($+1)],d[B][S]=0,c[O]=L}}var K=this.jpoint(null,null,null),G=this._wnafT4;for(M=m;M>=0;M--){for(var te=0;M>=0;){var Q=!0;for(S=0;S<a;S++)G[S]=d[S][M]|0,G[S]!==0&&(Q=!1);if(!Q)break;te++,M--}if(M>=0&&te++,K=K.dblp(te),M<0)break;for(S=0;S<a;S++){var W=G[S];W!==0&&(W>0?R=c[S][W-1>>1]:W<0&&(R=c[S][-W-1>>1].neg()),R.type==="affine"?K=K.mixedAdd(R):K=K.add(R))}}for(M=0;M<a;M++)c[M]=null;return n?K:K.toP()};function Ii(e,t){this.curve=e,this.type=t,this.precomputed=null}qo.BasePoint=Ii;Ii.prototype.eq=function(){throw new Error("Not implemented")};Ii.prototype.validate=function(){return this.curve.validate(this)};qo.prototype.decodePoint=function(t,r){t=Dl.toArray(t,r);var i=this.p.byteLength();if((t[0]===4||t[0]===6||t[0]===7)&&t.length-1===2*i){t[0]===6?vh(t[t.length-1]%2===0):t[0]===7&&vh(t[t.length-1]%2===1);var a=this.point(t.slice(1,1+i),t.slice(1+i,1+2*i));return a}else if((t[0]===2||t[0]===3)&&t.length-1===i)return this.pointFromX(t.slice(1,1+i),t[0]===3);throw new Error("Unknown point format")};Ii.prototype.encodeCompressed=function(t){return this.encode(t,!0)};Ii.prototype._encode=function(t){var r=this.curve.p.byteLength(),i=this.getX().toArray("be",r);return t?[this.getY().isEven()?2:3].concat(i):[4].concat(i,this.getY().toArray("be",r))};Ii.prototype.encode=function(t,r){return Dl.encode(this._encode(r),t)};Ii.prototype.precompute=function(t){if(this.precomputed)return this;var r={doubles:null,naf:null,beta:null};return r.naf=this._getNAFPoints(8),r.doubles=this._getDoubles(4,t),r.beta=this._getBeta(),this.precomputed=r,this};Ii.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var r=this.precomputed.doubles;return r?r.points.length>=Math.ceil((t.bitLength()+1)/r.step):!1};Ii.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],a=this,n=0;n<r;n+=t){for(var l=0;l<t;l++)a=a.dbl();i.push(a)}return{step:t,points:i}};Ii.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var r=[this],i=(1<<t)-1,a=i===1?null:this.dbl(),n=1;n<i;n++)r[n]=r[n-1].add(a);return{wnd:t,points:r}};Ii.prototype._getBeta=function(){return null};Ii.prototype.dblp=function(t){for(var r=this,i=0;i<t;i++)r=r.dbl();return r};var IW=ni,Qt=ao,nm=Ye,Zs=wc,PW=IW.assert;function Pi(e){Zs.call(this,"short",e),this.a=new Qt(e.a,16).toRed(this.red),this.b=new Qt(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}nm(Pi,Zs);var CW=Pi;Pi.prototype._getEndomorphism=function(t){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var r,i;if(t.beta)r=new Qt(t.beta,16).toRed(this.red);else{var a=this._getEndoRoots(this.p);r=a[0].cmp(a[1])<0?a[0]:a[1],r=r.toRed(this.red)}if(t.lambda)i=new Qt(t.lambda,16);else{var n=this._getEndoRoots(this.n);this.g.mul(n[0]).x.cmp(this.g.x.redMul(r))===0?i=n[0]:(i=n[1],PW(this.g.mul(i).x.cmp(this.g.x.redMul(r))===0))}var l;return t.basis?l=t.basis.map(function(c){return{a:new Qt(c.a,16),b:new Qt(c.b,16)}}):l=this._getEndoBasis(i),{beta:r,lambda:i,basis:l}}};Pi.prototype._getEndoRoots=function(t){var r=t===this.p?this.red:Qt.mont(t),i=new Qt(2).toRed(r).redInvm(),a=i.redNeg(),n=new Qt(3).toRed(r).redNeg().redSqrt().redMul(i),l=a.redAdd(n).fromRed(),c=a.redSub(n).fromRed();return[l,c]};Pi.prototype._getEndoBasis=function(t){for(var r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),i=t,a=this.n.clone(),n=new Qt(1),l=new Qt(0),c=new Qt(0),d=new Qt(1),m,M,S,R,I,O,B,L=0,P,C;i.cmpn(0)!==0;){var j=a.div(i);P=a.sub(j.mul(i)),C=c.sub(j.mul(n));var $=d.sub(j.mul(l));if(!S&&P.cmp(r)<0)m=B.neg(),M=n,S=P.neg(),R=C;else if(S&&++L===2)break;B=P,a=i,i=P,c=n,n=C,d=l,l=$}I=P.neg(),O=C;var K=S.sqr().add(R.sqr()),G=I.sqr().add(O.sqr());return G.cmp(K)>=0&&(I=m,O=M),S.negative&&(S=S.neg(),R=R.neg()),I.negative&&(I=I.neg(),O=O.neg()),[{a:S,b:R},{a:I,b:O}]};Pi.prototype._endoSplit=function(t){var r=this.endo.basis,i=r[0],a=r[1],n=a.b.mul(t).divRound(this.n),l=i.b.neg().mul(t).divRound(this.n),c=n.mul(i.a),d=l.mul(a.a),m=n.mul(i.b),M=l.mul(a.b),S=t.sub(c).sub(d),R=m.add(M).neg();return{k1:S,k2:R}};Pi.prototype.pointFromX=function(t,r){t=new Qt(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),a=i.redSqrt();if(a.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var n=a.fromRed().isOdd();return(r&&!n||!r&&n)&&(a=a.redNeg()),this.point(t,a)};Pi.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,i=t.y,a=this.a.redMul(r),n=r.redSqr().redMul(r).redIAdd(a).redIAdd(this.b);return i.redSqr().redISub(n).cmpn(0)===0};Pi.prototype._endoWnafMulAdd=function(t,r,i){for(var a=this._endoWnafT1,n=this._endoWnafT2,l=0;l<t.length;l++){var c=this._endoSplit(r[l]),d=t[l],m=d._getBeta();c.k1.negative&&(c.k1.ineg(),d=d.neg(!0)),c.k2.negative&&(c.k2.ineg(),m=m.neg(!0)),a[l*2]=d,a[l*2+1]=m,n[l*2]=c.k1,n[l*2+1]=c.k2}for(var M=this._wnafMulAdd(1,a,n,l*2,i),S=0;S<l*2;S++)a[S]=null,n[S]=null;return M};function gr(e,t,r,i){Zs.BasePoint.call(this,e,"affine"),t===null&&r===null?(this.x=null,this.y=null,this.inf=!0):(this.x=new Qt(t,16),this.y=new Qt(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}nm(gr,Zs.BasePoint);Pi.prototype.point=function(t,r,i){return new gr(this,t,r,i)};Pi.prototype.pointFromJSON=function(t,r){return gr.fromJSON(this,t,r)};gr.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var r=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var i=this.curve,a=function(n){return i.point(n.x.redMul(i.endo.beta),n.y)};t.beta=r,r.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(a)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(a)}}}return r}};gr.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]};gr.fromJSON=function(t,r,i){typeof r=="string"&&(r=JSON.parse(r));var a=t.point(r[0],r[1],i);if(!r[2])return a;function n(c){return t.point(c[0],c[1],i)}var l=r[2];return a.precomputed={beta:null,doubles:l.doubles&&{step:l.doubles.step,points:[a].concat(l.doubles.points.map(n))},naf:l.naf&&{wnd:l.naf.wnd,points:[a].concat(l.naf.points.map(n))}},a};gr.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"};gr.prototype.isInfinity=function(){return this.inf};gr.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(t.x),a=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,a)};gr.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),a=t.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(a),l=n.redSqr().redISub(this.x.redAdd(this.x)),c=n.redMul(this.x.redSub(l)).redISub(this.y);return this.curve.point(l,c)};gr.prototype.getX=function(){return this.x.fromRed()};gr.prototype.getY=function(){return this.y.fromRed()};gr.prototype.mul=function(t){return t=new Qt(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)};gr.prototype.mulAdd=function(t,r,i){var a=[this,r],n=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(a,n):this.curve._wnafMulAdd(1,a,n,2)};gr.prototype.jmulAdd=function(t,r,i){var a=[this,r],n=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(a,n,!0):this.curve._wnafMulAdd(1,a,n,2,!0)};gr.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)};gr.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,a=function(n){return n.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(a)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(a)}}}return r};gr.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Mr(e,t,r,i){Zs.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new Qt(0)):(this.x=new Qt(t,16),this.y=new Qt(r,16),this.z=new Qt(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}nm(Mr,Zs.BasePoint);Pi.prototype.jpoint=function(t,r,i){return new Mr(this,t,r,i)};Mr.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),i=this.x.redMul(r),a=this.y.redMul(r).redMul(t);return this.curve.point(i,a)};Mr.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};Mr.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),i=this.z.redSqr(),a=this.x.redMul(r),n=t.x.redMul(i),l=this.y.redMul(r.redMul(t.z)),c=t.y.redMul(i.redMul(this.z)),d=a.redSub(n),m=l.redSub(c);if(d.cmpn(0)===0)return m.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var M=d.redSqr(),S=M.redMul(d),R=a.redMul(M),I=m.redSqr().redIAdd(S).redISub(R).redISub(R),O=m.redMul(R.redISub(I)).redISub(l.redMul(S)),B=this.z.redMul(t.z).redMul(d);return this.curve.jpoint(I,O,B)};Mr.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),i=this.x,a=t.x.redMul(r),n=this.y,l=t.y.redMul(r).redMul(this.z),c=i.redSub(a),d=n.redSub(l);if(c.cmpn(0)===0)return d.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var m=c.redSqr(),M=m.redMul(c),S=i.redMul(m),R=d.redSqr().redIAdd(M).redISub(S).redISub(S),I=d.redMul(S.redISub(R)).redISub(n.redMul(M)),O=this.z.redMul(c);return this.curve.jpoint(R,I,O)};Mr.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r<t;r++)i=i.dbl();return i}var a=this.curve.a,n=this.curve.tinv,l=this.x,c=this.y,d=this.z,m=d.redSqr().redSqr(),M=c.redAdd(c);for(r=0;r<t;r++){var S=l.redSqr(),R=M.redSqr(),I=R.redSqr(),O=S.redAdd(S).redIAdd(S).redIAdd(a.redMul(m)),B=l.redMul(R),L=O.redSqr().redISub(B.redAdd(B)),P=B.redISub(L),C=O.redMul(P);C=C.redIAdd(C).redISub(I);var j=M.redMul(d);r+1<t&&(m=m.redMul(I)),l=L,d=j,M=C}return this.curve.jpoint(l,M.redMul(n),d)};Mr.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()};Mr.prototype._zeroDbl=function(){var t,r,i;if(this.zOne){var a=this.x.redSqr(),n=this.y.redSqr(),l=n.redSqr(),c=this.x.redAdd(n).redSqr().redISub(a).redISub(l);c=c.redIAdd(c);var d=a.redAdd(a).redIAdd(a),m=d.redSqr().redISub(c).redISub(c),M=l.redIAdd(l);M=M.redIAdd(M),M=M.redIAdd(M),t=m,r=d.redMul(c.redISub(m)).redISub(M),i=this.y.redAdd(this.y)}else{var S=this.x.redSqr(),R=this.y.redSqr(),I=R.redSqr(),O=this.x.redAdd(R).redSqr().redISub(S).redISub(I);O=O.redIAdd(O);var B=S.redAdd(S).redIAdd(S),L=B.redSqr(),P=I.redIAdd(I);P=P.redIAdd(P),P=P.redIAdd(P),t=L.redISub(O).redISub(O),r=B.redMul(O.redISub(t)).redISub(P),i=this.y.redMul(this.z),i=i.redIAdd(i)}return this.curve.jpoint(t,r,i)};Mr.prototype._threeDbl=function(){var t,r,i;if(this.zOne){var a=this.x.redSqr(),n=this.y.redSqr(),l=n.redSqr(),c=this.x.redAdd(n).redSqr().redISub(a).redISub(l);c=c.redIAdd(c);var d=a.redAdd(a).redIAdd(a).redIAdd(this.curve.a),m=d.redSqr().redISub(c).redISub(c);t=m;var M=l.redIAdd(l);M=M.redIAdd(M),M=M.redIAdd(M),r=d.redMul(c.redISub(m)).redISub(M),i=this.y.redAdd(this.y)}else{var S=this.z.redSqr(),R=this.y.redSqr(),I=this.x.redMul(R),O=this.x.redSub(S).redMul(this.x.redAdd(S));O=O.redAdd(O).redIAdd(O);var B=I.redIAdd(I);B=B.redIAdd(B);var L=B.redAdd(B);t=O.redSqr().redISub(L),i=this.y.redAdd(this.z).redSqr().redISub(R).redISub(S);var P=R.redSqr();P=P.redIAdd(P),P=P.redIAdd(P),P=P.redIAdd(P),r=O.redMul(B.redISub(t)).redISub(P)}return this.curve.jpoint(t,r,i)};Mr.prototype._dbl=function(){var t=this.curve.a,r=this.x,i=this.y,a=this.z,n=a.redSqr().redSqr(),l=r.redSqr(),c=i.redSqr(),d=l.redAdd(l).redIAdd(l).redIAdd(t.redMul(n)),m=r.redAdd(r);m=m.redIAdd(m);var M=m.redMul(c),S=d.redSqr().redISub(M.redAdd(M)),R=M.redISub(S),I=c.redSqr();I=I.redIAdd(I),I=I.redIAdd(I),I=I.redIAdd(I);var O=d.redMul(R).redISub(I),B=i.redAdd(i).redMul(a);return this.curve.jpoint(S,O,B)};Mr.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr(),a=r.redSqr(),n=t.redAdd(t).redIAdd(t),l=n.redSqr(),c=this.x.redAdd(r).redSqr().redISub(t).redISub(a);c=c.redIAdd(c),c=c.redAdd(c).redIAdd(c),c=c.redISub(l);var d=c.redSqr(),m=a.redIAdd(a);m=m.redIAdd(m),m=m.redIAdd(m),m=m.redIAdd(m);var M=n.redIAdd(c).redSqr().redISub(l).redISub(d).redISub(m),S=r.redMul(M);S=S.redIAdd(S),S=S.redIAdd(S);var R=this.x.redMul(d).redISub(S);R=R.redIAdd(R),R=R.redIAdd(R);var I=this.y.redMul(M.redMul(m.redISub(M)).redISub(c.redMul(d)));I=I.redIAdd(I),I=I.redIAdd(I),I=I.redIAdd(I);var O=this.z.redAdd(c).redSqr().redISub(i).redISub(d);return this.curve.jpoint(R,I,O)};Mr.prototype.mul=function(t,r){return t=new Qt(t,r),this.curve._wnafMul(this,t)};Mr.prototype.eq=function(t){if(t.type==="affine")return this.eq(t.toJ());if(this===t)return!0;var r=this.z.redSqr(),i=t.z.redSqr();if(this.x.redMul(i).redISub(t.x.redMul(r)).cmpn(0)!==0)return!1;var a=r.redMul(this.z),n=i.redMul(t.z);return this.y.redMul(n).redISub(t.y.redMul(a)).cmpn(0)===0};Mr.prototype.eqXToP=function(t){var r=this.z.redSqr(),i=t.toRed(this.curve.red).redMul(r);if(this.x.cmp(i)===0)return!0;for(var a=t.clone(),n=this.curve.redN.redMul(r);;){if(a.iadd(this.curve.n),a.cmp(this.curve.p)>=0)return!1;if(i.redIAdd(n),this.x.cmp(i)===0)return!0}};Mr.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"};Mr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var Xa=ao,R4=Ye,_c=wc,BW=ni;function Xs(e){_c.call(this,"mont",e),this.a=new Xa(e.a,16).toRed(this.red),this.b=new Xa(e.b,16).toRed(this.red),this.i4=new Xa(4).toRed(this.red).redInvm(),this.two=new Xa(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}R4(Xs,_c);var LW=Xs;Xs.prototype.validate=function(t){var r=t.normalize().x,i=r.redSqr(),a=i.redMul(r).redAdd(i.redMul(this.a)).redAdd(r),n=a.redSqrt();return n.redSqr().cmp(a)===0};function vr(e,t,r){_c.BasePoint.call(this,e,"projective"),t===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Xa(t,16),this.z=new Xa(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}R4(vr,_c.BasePoint);Xs.prototype.decodePoint=function(t,r){return this.point(BW.toArray(t,r),1)};Xs.prototype.point=function(t,r){return new vr(this,t,r)};Xs.prototype.pointFromJSON=function(t){return vr.fromJSON(this,t)};vr.prototype.precompute=function(){};vr.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};vr.fromJSON=function(t,r){return new vr(t,r[0],r[1]||t.one)};vr.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"};vr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};vr.prototype.dbl=function(){var t=this.x.redAdd(this.z),r=t.redSqr(),i=this.x.redSub(this.z),a=i.redSqr(),n=r.redSub(a),l=r.redMul(a),c=n.redMul(a.redAdd(this.curve.a24.redMul(n)));return this.curve.point(l,c)};vr.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};vr.prototype.diffAdd=function(t,r){var i=this.x.redAdd(this.z),a=this.x.redSub(this.z),n=t.x.redAdd(t.z),l=t.x.redSub(t.z),c=l.redMul(i),d=n.redMul(a),m=r.z.redMul(c.redAdd(d).redSqr()),M=r.x.redMul(c.redISub(d).redSqr());return this.curve.point(m,M)};vr.prototype.mul=function(t){for(var r=t.clone(),i=this,a=this.curve.point(null,null),n=this,l=[];r.cmpn(0)!==0;r.iushrn(1))l.push(r.andln(1));for(var c=l.length-1;c>=0;c--)l[c]===0?(i=i.diffAdd(a,n),a=a.dbl()):(a=i.diffAdd(a,n),i=i.dbl());return a};vr.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};vr.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};vr.prototype.eq=function(t){return this.getX().cmp(t.getX())===0};vr.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};vr.prototype.getX=function(){return this.normalize(),this.x.fromRed()};var NW=ni,Hn=ao,A4=Ye,Mc=wc,kW=NW.assert;function wn(e){this.twisted=(e.a|0)!==1,this.mOneA=this.twisted&&(e.a|0)===-1,this.extended=this.mOneA,Mc.call(this,"edwards",e),this.a=new Hn(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Hn(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Hn(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),kW(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(e.c|0)===1}A4(wn,Mc);var $W=wn;wn.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)};wn.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)};wn.prototype.jpoint=function(t,r,i,a){return this.point(t,r,i,a)};wn.prototype.pointFromX=function(t,r){t=new Hn(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr(),a=this.c2.redSub(this.a.redMul(i)),n=this.one.redSub(this.c2.redMul(this.d).redMul(i)),l=a.redMul(n.redInvm()),c=l.redSqrt();if(c.redSqr().redSub(l).cmp(this.zero)!==0)throw new Error("invalid point");var d=c.fromRed().isOdd();return(r&&!d||!r&&d)&&(c=c.redNeg()),this.point(t,c)};wn.prototype.pointFromY=function(t,r){t=new Hn(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr(),a=i.redSub(this.c2),n=i.redMul(this.d).redMul(this.c2).redSub(this.a),l=a.redMul(n.redInvm());if(l.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,t)}var c=l.redSqrt();if(c.redSqr().redSub(l).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,t)};wn.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var r=t.x.redSqr(),i=t.y.redSqr(),a=r.redMul(this.a).redAdd(i),n=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(i)));return a.cmp(n)===0};function Yt(e,t,r,i,a){Mc.BasePoint.call(this,e,"projective"),t===null&&r===null&&i===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Hn(t,16),this.y=new Hn(r,16),this.z=i?new Hn(i,16):this.curve.one,this.t=a&&new Hn(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}A4(Yt,Mc.BasePoint);wn.prototype.pointFromJSON=function(t){return Yt.fromJSON(this,t)};wn.prototype.point=function(t,r,i,a){return new Yt(this,t,r,i,a)};Yt.fromJSON=function(t,r){return new Yt(t,r[0],r[1],r[2])};Yt.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"};Yt.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};Yt.prototype._extDbl=function(){var t=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr();i=i.redIAdd(i);var a=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(r),l=a.redAdd(r),c=l.redSub(i),d=a.redSub(r),m=n.redMul(c),M=l.redMul(d),S=n.redMul(d),R=c.redMul(l);return this.curve.point(m,M,R,S)};Yt.prototype._projDbl=function(){var t=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),i=this.y.redSqr(),a,n,l,c,d,m;if(this.curve.twisted){c=this.curve._mulA(r);var M=c.redAdd(i);this.zOne?(a=t.redSub(r).redSub(i).redMul(M.redSub(this.curve.two)),n=M.redMul(c.redSub(i)),l=M.redSqr().redSub(M).redSub(M)):(d=this.z.redSqr(),m=M.redSub(d).redISub(d),a=t.redSub(r).redISub(i).redMul(m),n=M.redMul(c.redSub(i)),l=M.redMul(m))}else c=r.redAdd(i),d=this.curve._mulC(this.z).redSqr(),m=c.redSub(d).redSub(d),a=this.curve._mulC(t.redISub(c)).redMul(m),n=this.curve._mulC(c).redMul(r.redISub(i)),l=c.redMul(m);return this.curve.point(a,n,l)};Yt.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};Yt.prototype._extAdd=function(t){var r=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),i=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),a=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),l=i.redSub(r),c=n.redSub(a),d=n.redAdd(a),m=i.redAdd(r),M=l.redMul(c),S=d.redMul(m),R=l.redMul(m),I=c.redMul(d);return this.curve.point(M,S,I,R)};Yt.prototype._projAdd=function(t){var r=this.z.redMul(t.z),i=r.redSqr(),a=this.x.redMul(t.x),n=this.y.redMul(t.y),l=this.curve.d.redMul(a).redMul(n),c=i.redSub(l),d=i.redAdd(l),m=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(a).redISub(n),M=r.redMul(c).redMul(m),S,R;return this.curve.twisted?(S=r.redMul(d).redMul(n.redSub(this.curve._mulA(a))),R=c.redMul(d)):(S=r.redMul(d).redMul(n.redSub(a)),R=this.curve._mulC(c).redMul(d)),this.curve.point(M,S,R)};Yt.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)};Yt.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)};Yt.prototype.mulAdd=function(t,r,i){return this.curve._wnafMulAdd(1,[this,r],[t,i],2,!1)};Yt.prototype.jmulAdd=function(t,r,i){return this.curve._wnafMulAdd(1,[this,r],[t,i],2,!0)};Yt.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this};Yt.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Yt.prototype.getX=function(){return this.normalize(),this.x.fromRed()};Yt.prototype.getY=function(){return this.normalize(),this.y.fromRed()};Yt.prototype.eq=function(t){return this===t||this.getX().cmp(t.getX())===0&&this.getY().cmp(t.getY())===0};Yt.prototype.eqXToP=function(t){var r=t.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var i=t.clone(),a=this.curve.redN.redMul(this.z);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(a),this.x.cmp(r)===0)return!0}};Yt.prototype.toP=Yt.prototype.normalize;Yt.prototype.mixedAdd=Yt.prototype.add;(function(e){var t=e;t.base=wc,t.short=CW,t.mont=LW,t.edwards=$W})(im);var Sc={},xc={},xt={},DW=Ai,FW=Ye;xt.inherits=FW;function jW(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function UW(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),a=0;a<e.length;a+=2)r.push(parseInt(e[a]+e[a+1],16))}else for(var i=0,a=0;a<e.length;a++){var n=e.charCodeAt(a);n<128?r[i++]=n:n<2048?(r[i++]=n>>6|192,r[i++]=n&63|128):jW(e,a)?(n=65536+((n&1023)<<10)+(e.charCodeAt(++a)&1023),r[i++]=n>>18|240,r[i++]=n>>12&63|128,r[i++]=n>>6&63|128,r[i++]=n&63|128):(r[i++]=n>>12|224,r[i++]=n>>6&63|128,r[i++]=n&63|128)}else for(a=0;a<e.length;a++)r[a]=e[a]|0;return r}xt.toArray=UW;function HW(e){for(var t="",r=0;r<e.length;r++)t+=O4(e[r].toString(16));return t}xt.toHex=HW;function T4(e){var t=e>>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}xt.htonl=T4;function qW(e,t){for(var r="",i=0;i<e.length;i++){var a=e[i];t==="little"&&(a=T4(a)),r+=I4(a.toString(16))}return r}xt.toHex32=qW;function O4(e){return e.length===1?"0"+e:e}xt.zero2=O4;function I4(e){return e.length===7?"0"+e:e.length===6?"00"+e:e.length===5?"000"+e:e.length===4?"0000"+e:e.length===3?"00000"+e:e.length===2?"000000"+e:e.length===1?"0000000"+e:e}xt.zero8=I4;function WW(e,t,r,i){var a=r-t;DW(a%4===0);for(var n=new Array(a/4),l=0,c=t;l<n.length;l++,c+=4){var d;i==="big"?d=e[c]<<24|e[c+1]<<16|e[c+2]<<8|e[c+3]:d=e[c+3]<<24|e[c+2]<<16|e[c+1]<<8|e[c],n[l]=d>>>0}return n}xt.join32=WW;function KW(e,t){for(var r=new Array(e.length*4),i=0,a=0;i<e.length;i++,a+=4){var n=e[i];t==="big"?(r[a]=n>>>24,r[a+1]=n>>>16&255,r[a+2]=n>>>8&255,r[a+3]=n&255):(r[a+3]=n>>>24,r[a+2]=n>>>16&255,r[a+1]=n>>>8&255,r[a]=n&255)}return r}xt.split32=KW;function VW(e,t){return e>>>t|e<<32-t}xt.rotr32=VW;function zW(e,t){return e<<t|e>>>32-t}xt.rotl32=zW;function GW(e,t){return e+t>>>0}xt.sum32=GW;function YW(e,t,r){return e+t+r>>>0}xt.sum32_3=YW;function ZW(e,t,r,i){return e+t+r+i>>>0}xt.sum32_4=ZW;function XW(e,t,r,i,a){return e+t+r+i+a>>>0}xt.sum32_5=XW;function JW(e,t,r,i){var a=e[t],n=e[t+1],l=i+n>>>0,c=(l<i?1:0)+r+a;e[t]=c>>>0,e[t+1]=l}xt.sum64=JW;function QW(e,t,r,i){var a=t+i>>>0,n=(a<t?1:0)+e+r;return n>>>0}xt.sum64_hi=QW;function eK(e,t,r,i){var a=t+i;return a>>>0}xt.sum64_lo=eK;function tK(e,t,r,i,a,n,l,c){var d=0,m=t;m=m+i>>>0,d+=m<t?1:0,m=m+n>>>0,d+=m<n?1:0,m=m+c>>>0,d+=m<c?1:0;var M=e+r+a+l+d;return M>>>0}xt.sum64_4_hi=tK;function rK(e,t,r,i,a,n,l,c){var d=t+i+n+c;return d>>>0}xt.sum64_4_lo=rK;function iK(e,t,r,i,a,n,l,c,d,m){var M=0,S=t;S=S+i>>>0,M+=S<t?1:0,S=S+n>>>0,M+=S<n?1:0,S=S+c>>>0,M+=S<c?1:0,S=S+m>>>0,M+=S<m?1:0;var R=e+r+a+l+d+M;return R>>>0}xt.sum64_5_hi=iK;function nK(e,t,r,i,a,n,l,c,d,m){var M=t+i+n+c+m;return M>>>0}xt.sum64_5_lo=nK;function oK(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}xt.rotr64_hi=oK;function aK(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}xt.rotr64_lo=aK;function sK(e,t,r){return e>>>r}xt.shr64_hi=sK;function fK(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}xt.shr64_lo=fK;var Js={},Ww=xt,lK=Ai;function Ec(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}Js.BlockHash=Ec;Ec.prototype.update=function(t,r){if(t=Ww.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var i=t.length%this._delta8;this.pending=t.slice(t.length-i,t.length),this.pending.length===0&&(this.pending=null),t=Ww.join32(t,0,t.length-i,this.endian);for(var a=0;a<t.length;a+=this._delta32)this._update(t,a,a+this._delta32)}return this};Ec.prototype.digest=function(t){return this.update(this._pad()),lK(this.pending===null),this._digest(t)};Ec.prototype._pad=function(){var t=this.pendingTotal,r=this._delta8,i=r-(t+this.padLength)%r,a=new Array(i+this.padLength);a[0]=128;for(var n=1;n<i;n++)a[n]=0;if(t<<=3,this.endian==="big"){for(var l=8;l<this.padLength;l++)a[n++]=0;a[n++]=0,a[n++]=0,a[n++]=0,a[n++]=0,a[n++]=t>>>24&255,a[n++]=t>>>16&255,a[n++]=t>>>8&255,a[n++]=t&255}else for(a[n++]=t&255,a[n++]=t>>>8&255,a[n++]=t>>>16&255,a[n++]=t>>>24&255,a[n++]=0,a[n++]=0,a[n++]=0,a[n++]=0,l=8;l<this.padLength;l++)a[n++]=0;return a};var Qs={},_n={},uK=xt,ln=uK.rotr32;function hK(e,t,r,i){if(e===0)return P4(t,r,i);if(e===1||e===3)return B4(t,r,i);if(e===2)return C4(t,r,i)}_n.ft_1=hK;function P4(e,t,r){return e&t^~e&r}_n.ch32=P4;function C4(e,t,r){return e&t^e&r^t&r}_n.maj32=C4;function B4(e,t,r){return e^t^r}_n.p32=B4;function cK(e){return ln(e,2)^ln(e,13)^ln(e,22)}_n.s0_256=cK;function dK(e){return ln(e,6)^ln(e,11)^ln(e,25)}_n.s1_256=dK;function pK(e){return ln(e,7)^ln(e,18)^e>>>3}_n.g0_256=pK;function vK(e){return ln(e,17)^ln(e,19)^e>>>10}_n.g1_256=vK;var Cs=xt,gK=Js,mK=_n,O0=Cs.rotl32,Ef=Cs.sum32,yK=Cs.sum32_5,bK=mK.ft_1,L4=gK.BlockHash,wK=[1518500249,1859775393,2400959708,3395469782];function mn(){if(!(this instanceof mn))return new mn;L4.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Cs.inherits(mn,L4);var _K=mn;mn.blockSize=512;mn.outSize=160;mn.hmacStrength=80;mn.padLength=64;mn.prototype._update=function(t,r){for(var i=this.W,a=0;a<16;a++)i[a]=t[r+a];for(;a<i.length;a++)i[a]=O0(i[a-3]^i[a-8]^i[a-14]^i[a-16],1);var n=this.h[0],l=this.h[1],c=this.h[2],d=this.h[3],m=this.h[4];for(a=0;a<i.length;a++){var M=~~(a/20),S=yK(O0(n,5),bK(M,l,c,d),m,i[a],wK[M]);m=d,d=c,c=O0(l,30),l=n,n=S}this.h[0]=Ef(this.h[0],n),this.h[1]=Ef(this.h[1],l),this.h[2]=Ef(this.h[2],c),this.h[3]=Ef(this.h[3],d),this.h[4]=Ef(this.h[4],m)};mn.prototype._digest=function(t){return t==="hex"?Cs.toHex32(this.h,"big"):Cs.split32(this.h,"big")};var Bs=xt,MK=Js,ef=_n,SK=Ai,Bi=Bs.sum32,xK=Bs.sum32_4,EK=Bs.sum32_5,RK=ef.ch32,AK=ef.maj32,TK=ef.s0_256,OK=ef.s1_256,IK=ef.g0_256,PK=ef.g1_256,N4=MK.BlockHash,CK=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function yn(){if(!(this instanceof yn))return new yn;N4.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=CK,this.W=new Array(64)}Bs.inherits(yn,N4);var k4=yn;yn.blockSize=512;yn.outSize=256;yn.hmacStrength=192;yn.padLength=64;yn.prototype._update=function(t,r){for(var i=this.W,a=0;a<16;a++)i[a]=t[r+a];for(;a<i.length;a++)i[a]=xK(PK(i[a-2]),i[a-7],IK(i[a-15]),i[a-16]);var n=this.h[0],l=this.h[1],c=this.h[2],d=this.h[3],m=this.h[4],M=this.h[5],S=this.h[6],R=this.h[7];for(SK(this.k.length===i.length),a=0;a<i.length;a++){var I=EK(R,OK(m),RK(m,M,S),this.k[a],i[a]),O=Bi(TK(n),AK(n,l,c));R=S,S=M,M=m,m=Bi(d,I),d=c,c=l,l=n,n=Bi(I,O)}this.h[0]=Bi(this.h[0],n),this.h[1]=Bi(this.h[1],l),this.h[2]=Bi(this.h[2],c),this.h[3]=Bi(this.h[3],d),this.h[4]=Bi(this.h[4],m),this.h[5]=Bi(this.h[5],M),this.h[6]=Bi(this.h[6],S),this.h[7]=Bi(this.h[7],R)};yn.prototype._digest=function(t){return t==="hex"?Bs.toHex32(this.h,"big"):Bs.split32(this.h,"big")};var lv=xt,$4=k4;function Jn(){if(!(this instanceof Jn))return new Jn;$4.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}lv.inherits(Jn,$4);var BK=Jn;Jn.blockSize=512;Jn.outSize=224;Jn.hmacStrength=192;Jn.padLength=64;Jn.prototype._digest=function(t){return t==="hex"?lv.toHex32(this.h.slice(0,7),"big"):lv.split32(this.h.slice(0,7),"big")};var zr=xt,LK=Js,NK=Ai,un=zr.rotr64_hi,hn=zr.rotr64_lo,D4=zr.shr64_hi,F4=zr.shr64_lo,ho=zr.sum64,I0=zr.sum64_hi,P0=zr.sum64_lo,kK=zr.sum64_4_hi,$K=zr.sum64_4_lo,DK=zr.sum64_5_hi,FK=zr.sum64_5_lo,j4=LK.BlockHash,jK=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function qi(){if(!(this instanceof qi))return new qi;j4.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=jK,this.W=new Array(160)}zr.inherits(qi,j4);var U4=qi;qi.blockSize=1024;qi.outSize=512;qi.hmacStrength=192;qi.padLength=128;qi.prototype._prepareBlock=function(t,r){for(var i=this.W,a=0;a<32;a++)i[a]=t[r+a];for(;a<i.length;a+=2){var n=XK(i[a-4],i[a-3]),l=JK(i[a-4],i[a-3]),c=i[a-14],d=i[a-13],m=YK(i[a-30],i[a-29]),M=ZK(i[a-30],i[a-29]),S=i[a-32],R=i[a-31];i[a]=kK(n,l,c,d,m,M,S,R),i[a+1]=$K(n,l,c,d,m,M,S,R)}};qi.prototype._update=function(t,r){this._prepareBlock(t,r);var i=this.W,a=this.h[0],n=this.h[1],l=this.h[2],c=this.h[3],d=this.h[4],m=this.h[5],M=this.h[6],S=this.h[7],R=this.h[8],I=this.h[9],O=this.h[10],B=this.h[11],L=this.h[12],P=this.h[13],C=this.h[14],j=this.h[15];NK(this.k.length===i.length);for(var $=0;$<i.length;$+=2){var K=C,G=j,te=zK(R,I),Q=GK(R,I),W=UK(R,I,O,B,L),ce=HK(R,I,O,B,L,P),_=this.k[$],o=this.k[$+1],f=i[$],u=i[$+1],h=DK(K,G,te,Q,W,ce,_,o,f,u),p=FK(K,G,te,Q,W,ce,_,o,f,u);K=KK(a,n),G=VK(a,n),te=qK(a,n,l,c,d),Q=WK(a,n,l,c,d,m);var w=I0(K,G,te,Q),x=P0(K,G,te,Q);C=L,j=P,L=O,P=B,O=R,B=I,R=I0(M,S,h,p),I=P0(S,S,h,p),M=d,S=m,d=l,m=c,l=a,c=n,a=I0(h,p,w,x),n=P0(h,p,w,x)}ho(this.h,0,a,n),ho(this.h,2,l,c),ho(this.h,4,d,m),ho(this.h,6,M,S),ho(this.h,8,R,I),ho(this.h,10,O,B),ho(this.h,12,L,P),ho(this.h,14,C,j)};qi.prototype._digest=function(t){return t==="hex"?zr.toHex32(this.h,"big"):zr.split32(this.h,"big")};function UK(e,t,r,i,a){var n=e&r^~e&a;return n<0&&(n+=4294967296),n}function HK(e,t,r,i,a,n){var l=t&i^~t&n;return l<0&&(l+=4294967296),l}function qK(e,t,r,i,a){var n=e&r^e&a^r&a;return n<0&&(n+=4294967296),n}function WK(e,t,r,i,a,n){var l=t&i^t&n^i&n;return l<0&&(l+=4294967296),l}function KK(e,t){var r=un(e,t,28),i=un(t,e,2),a=un(t,e,7),n=r^i^a;return n<0&&(n+=4294967296),n}function VK(e,t){var r=hn(e,t,28),i=hn(t,e,2),a=hn(t,e,7),n=r^i^a;return n<0&&(n+=4294967296),n}function zK(e,t){var r=un(e,t,14),i=un(e,t,18),a=un(t,e,9),n=r^i^a;return n<0&&(n+=4294967296),n}function GK(e,t){var r=hn(e,t,14),i=hn(e,t,18),a=hn(t,e,9),n=r^i^a;return n<0&&(n+=4294967296),n}function YK(e,t){var r=un(e,t,1),i=un(e,t,8),a=D4(e,t,7),n=r^i^a;return n<0&&(n+=4294967296),n}function ZK(e,t){var r=hn(e,t,1),i=hn(e,t,8),a=F4(e,t,7),n=r^i^a;return n<0&&(n+=4294967296),n}function XK(e,t){var r=un(e,t,19),i=un(t,e,29),a=D4(e,t,6),n=r^i^a;return n<0&&(n+=4294967296),n}function JK(e,t){var r=hn(e,t,19),i=hn(t,e,29),a=F4(e,t,6),n=r^i^a;return n<0&&(n+=4294967296),n}var uv=xt,H4=U4;function Qn(){if(!(this instanceof Qn))return new Qn;H4.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}uv.inherits(Qn,H4);var QK=Qn;Qn.blockSize=1024;Qn.outSize=384;Qn.hmacStrength=192;Qn.padLength=128;Qn.prototype._digest=function(t){return t==="hex"?uv.toHex32(this.h.slice(0,12),"big"):uv.split32(this.h.slice(0,12),"big")};Qs.sha1=_K;Qs.sha224=BK;Qs.sha256=k4;Qs.sha384=QK;Qs.sha512=U4;var q4={},Sa=xt,eV=Js,au=Sa.rotl32,Kw=Sa.sum32,Rf=Sa.sum32_3,Vw=Sa.sum32_4,W4=eV.BlockHash;function bn(){if(!(this instanceof bn))return new bn;W4.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}Sa.inherits(bn,W4);q4.ripemd160=bn;bn.blockSize=512;bn.outSize=160;bn.hmacStrength=192;bn.padLength=64;bn.prototype._update=function(t,r){for(var i=this.h[0],a=this.h[1],n=this.h[2],l=this.h[3],c=this.h[4],d=i,m=a,M=n,S=l,R=c,I=0;I<80;I++){var O=Kw(au(Vw(i,zw(I,a,n,l),t[iV[I]+r],tV(I)),oV[I]),c);i=c,c=l,l=au(n,10),n=a,a=O,O=Kw(au(Vw(d,zw(79-I,m,M,S),t[nV[I]+r],rV(I)),aV[I]),R),d=R,R=S,S=au(M,10),M=m,m=O}O=Rf(this.h[1],n,S),this.h[1]=Rf(this.h[2],l,R),this.h[2]=Rf(this.h[3],c,d),this.h[3]=Rf(this.h[4],i,m),this.h[4]=Rf(this.h[0],a,M),this.h[0]=O};bn.prototype._digest=function(t){return t==="hex"?Sa.toHex32(this.h,"little"):Sa.split32(this.h,"little")};function zw(e,t,r,i){return e<=15?t^r^i:e<=31?t&r|~t&i:e<=47?(t|~r)^i:e<=63?t&i|r&~i:t^(r|~i)}function tV(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function rV(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}var iV=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],nV=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],oV=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],aV=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],sV=xt,fV=Ai;function Ls(e,t,r){if(!(this instanceof Ls))return new Ls(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(sV.toArray(t,r))}var lV=Ls;Ls.prototype._init=function(t){t.length>this.blockSize&&(t=new this.Hash().update(t).digest()),fV(t.length<=this.blockSize);for(var r=t.length;r<this.blockSize;r++)t.push(0);for(r=0;r<t.length;r++)t[r]^=54;for(this.inner=new this.Hash().update(t),r=0;r<t.length;r++)t[r]^=106;this.outer=new this.Hash().update(t)};Ls.prototype.update=function(t,r){return this.inner.update(t,r),this};Ls.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)};(function(e){var t=e;t.utils=xt,t.common=Js,t.sha=Qs,t.ripemd=q4,t.hmac=lV,t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160})(xc);var C0,Gw;function uV(){return Gw||(Gw=1,C0={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}),C0}(function(e){var t=e,r=xc,i=im,a=ni,n=a.assert;function l(m){m.type==="short"?this.curve=new i.short(m):m.type==="edwards"?this.curve=new i.edwards(m):this.curve=new i.mont(m),this.g=this.curve.g,this.n=this.curve.n,this.hash=m.hash,n(this.g.validate(),"Invalid curve"),n(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}t.PresetCurve=l;function c(m,M){Object.defineProperty(t,m,{configurable:!0,enumerable:!0,get:function(){var S=new l(M);return Object.defineProperty(t,m,{configurable:!0,enumerable:!0,value:S}),S}})}c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:r.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:r.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:r.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:r.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:r.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var d;try{d=uV()}catch{d=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:r.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",d]})})(Sc);var hV=xc,va=rm,K4=Ai;function Do(e){if(!(this instanceof Do))return new Do(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=va.toArray(e.entropy,e.entropyEnc||"hex"),r=va.toArray(e.nonce,e.nonceEnc||"hex"),i=va.toArray(e.pers,e.persEnc||"hex");K4(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var cV=Do;Do.prototype._init=function(t,r,i){var a=t.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n<this.V.length;n++)this.K[n]=0,this.V[n]=1;this._update(a),this._reseed=1,this.reseedInterval=281474976710656};Do.prototype._hmac=function(){return new hV.hmac(this.hash,this.K)};Do.prototype._update=function(t){var r=this._hmac().update(this.V).update([0]);t&&(r=r.update(t)),this.K=r.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())};Do.prototype.reseed=function(t,r,i,a){typeof r!="string"&&(a=i,i=r,r=null),t=va.toArray(t,r),i=va.toArray(i,a),K4(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1};Do.prototype.generate=function(t,r,i,a){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(a=i,i=r,r=null),i&&(i=va.toArray(i,a||"hex"),this._update(i));for(var n=[];n.length<t;)this.V=this._hmac().update(this.V).digest(),n=n.concat(this.V);var l=n.slice(0,t);return this._update(i),this._reseed++,va.encode(l,r)};var dV=ao,pV=ni,hv=pV.assert;function Cr(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}var vV=Cr;Cr.fromPublic=function(t,r,i){return r instanceof Cr?r:new Cr(t,{pub:r,pubEnc:i})};Cr.fromPrivate=function(t,r,i){return r instanceof Cr?r:new Cr(t,{priv:r,privEnc:i})};Cr.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};Cr.prototype.getPublic=function(t,r){return typeof t=="string"&&(r=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),r?this.pub.encode(r,t):this.pub};Cr.prototype.getPrivate=function(t){return t==="hex"?this.priv.toString(16,2):this.priv};Cr.prototype._importPrivate=function(t,r){this.priv=new dV(t,r||16),this.priv=this.priv.umod(this.ec.curve.n)};Cr.prototype._importPublic=function(t,r){if(t.x||t.y){this.ec.curve.type==="mont"?hv(t.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&hv(t.x&&t.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(t.x,t.y);return}this.pub=this.ec.curve.decodePoint(t,r)};Cr.prototype.derive=function(t){return t.validate()||hv(t.validate(),"public point not validated"),t.mul(this.priv).getX()};Cr.prototype.sign=function(t,r,i){return this.ec.sign(t,this,r,i)};Cr.prototype.verify=function(t,r){return this.ec.verify(t,r,this)};Cr.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var gh=ao,om=ni,gV=om.assert;function Rc(e,t){if(e instanceof Rc)return e;this._importDER(e,t)||(gV(e.r&&e.s,"Signature without r or s"),this.r=new gh(e.r,16),this.s=new gh(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var mV=Rc;function yV(){this.place=0}function B0(e,t){var r=e[t.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4||e[t.place]===0)return!1;for(var a=0,n=0,l=t.place;n<i;n++,l++)a<<=8,a|=e[l],a>>>=0;return a<=127?!1:(t.place=l,a)}function Yw(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t<r;)t++;return t===0?e:e.slice(t)}Rc.prototype._importDER=function(t,r){t=om.toArray(t,r);var i=new yV;if(t[i.place++]!==48)return!1;var a=B0(t,i);if(a===!1||a+i.place!==t.length||t[i.place++]!==2)return!1;var n=B0(t,i);if(n===!1||t[i.place]&128)return!1;var l=t.slice(i.place,n+i.place);if(i.place+=n,t[i.place++]!==2)return!1;var c=B0(t,i);if(c===!1||t.length!==c+i.place||t[i.place]&128)return!1;var d=t.slice(i.place,c+i.place);if(l[0]===0)if(l[1]&128)l=l.slice(1);else return!1;if(d[0]===0)if(d[1]&128)d=d.slice(1);else return!1;return this.r=new gh(l),this.s=new gh(d),this.recoveryParam=null,!0};function L0(e,t){if(t<128){e.push(t);return}var r=1+(Math.log(t)/Math.LN2>>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}Rc.prototype.toDER=function(t){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Yw(r),i=Yw(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var a=[2];L0(a,r.length),a=a.concat(r),a.push(2),L0(a,i.length);var n=a.concat(i),l=[48];return L0(l,n.length),l=l.concat(n),om.encode(l,t)};var N0,Zw;function bV(){if(Zw)return N0;Zw=1;var e=ao,t=cV,r=ni,i=Sc,a=Zg(),n=r.assert,l=vV,c=mV;function d(m){if(!(this instanceof d))return new d(m);typeof m=="string"&&(n(Object.prototype.hasOwnProperty.call(i,m),"Unknown curve "+m),m=i[m]),m instanceof i.PresetCurve&&(m={curve:m}),this.curve=m.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=m.curve.g,this.g.precompute(m.curve.n.bitLength()+1),this.hash=m.hash||m.curve.hash}return N0=d,d.prototype.keyPair=function(M){return new l(this,M)},d.prototype.keyFromPrivate=function(M,S){return l.fromPrivate(this,M,S)},d.prototype.keyFromPublic=function(M,S){return l.fromPublic(this,M,S)},d.prototype.genKeyPair=function(M){M||(M={});for(var S=new t({hash:this.hash,pers:M.pers,persEnc:M.persEnc||"utf8",entropy:M.entropy||a(this.hash.hmacStrength),entropyEnc:M.entropy&&M.entropyEnc||"utf8",nonce:this.n.toArray()}),R=this.n.byteLength(),I=this.n.sub(new e(2));;){var O=new e(S.generate(R));if(!(O.cmp(I)>0))return O.iaddn(1),this.keyFromPrivate(O)}},d.prototype._truncateToN=function(M,S){var R=M.byteLength()*8-this.n.bitLength();return R>0&&(M=M.ushrn(R)),!S&&M.cmp(this.n)>=0?M.sub(this.n):M},d.prototype.sign=function(M,S,R,I){typeof R=="object"&&(I=R,R=null),I||(I={}),S=this.keyFromPrivate(S,R),M=this._truncateToN(new e(M,16));for(var O=this.n.byteLength(),B=S.getPrivate().toArray("be",O),L=M.toArray("be",O),P=new t({hash:this.hash,entropy:B,nonce:L,pers:I.pers,persEnc:I.persEnc||"utf8"}),C=this.n.sub(new e(1)),j=0;;j++){var $=I.k?I.k(j):new e(P.generate(this.n.byteLength()));if($=this._truncateToN($,!0),!($.cmpn(1)<=0||$.cmp(C)>=0)){var K=this.g.mul($);if(!K.isInfinity()){var G=K.getX(),te=G.umod(this.n);if(te.cmpn(0)!==0){var Q=$.invm(this.n).mul(te.mul(S.getPrivate()).iadd(M));if(Q=Q.umod(this.n),Q.cmpn(0)!==0){var W=(K.getY().isOdd()?1:0)|(G.cmp(te)!==0?2:0);return I.canonical&&Q.cmp(this.nh)>0&&(Q=this.n.sub(Q),W^=1),new c({r:te,s:Q,recoveryParam:W})}}}}}},d.prototype.verify=function(M,S,R,I){M=this._truncateToN(new e(M,16)),R=this.keyFromPublic(R,I),S=new c(S,"hex");var O=S.r,B=S.s;if(O.cmpn(1)<0||O.cmp(this.n)>=0||B.cmpn(1)<0||B.cmp(this.n)>=0)return!1;var L=B.invm(this.n),P=L.mul(M).umod(this.n),C=L.mul(O).umod(this.n),j;return this.curve._maxwellTrick?(j=this.g.jmulAdd(P,R.getPublic(),C),j.isInfinity()?!1:j.eqXToP(O)):(j=this.g.mulAdd(P,R.getPublic(),C),j.isInfinity()?!1:j.getX().umod(this.n).cmp(O)===0)},d.prototype.recoverPubKey=function(m,M,S,R){n((3&S)===S,"The recovery param is more than two bits"),M=new c(M,R);var I=this.n,O=new e(m),B=M.r,L=M.s,P=S&1,C=S>>1;if(B.cmp(this.curve.p.umod(this.curve.n))>=0&&C)throw new Error("Unable to find sencond key candinate");C?B=this.curve.pointFromX(B.add(this.curve.n),P):B=this.curve.pointFromX(B,P);var j=M.r.invm(I),$=I.sub(O).mul(j).umod(I),K=L.mul(j).umod(I);return this.g.mulAdd($,B,K)},d.prototype.getKeyRecoveryParam=function(m,M,S,R){if(M=new c(M,R),M.recoveryParam!==null)return M.recoveryParam;for(var I=0;I<4;I++){var O;try{O=this.recoverPubKey(m,M,I)}catch{continue}if(O.eq(S))return I}throw new Error("Unable to find valid recovery factor")},N0}var Fl=ni,V4=Fl.assert,Xw=Fl.parseBytes,tf=Fl.cachedProperty;function pr(e,t){this.eddsa=e,this._secret=Xw(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=Xw(t.pub)}pr.fromPublic=function(t,r){return r instanceof pr?r:new pr(t,{pub:r})};pr.fromSecret=function(t,r){return r instanceof pr?r:new pr(t,{secret:r})};pr.prototype.secret=function(){return this._secret};tf(pr,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});tf(pr,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});tf(pr,"privBytes",function(){var t=this.eddsa,r=this.hash(),i=t.encodingLength-1,a=r.slice(0,t.encodingLength);return a[0]&=248,a[i]&=127,a[i]|=64,a});tf(pr,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});tf(pr,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});tf(pr,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});pr.prototype.sign=function(t){return V4(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)};pr.prototype.verify=function(t,r){return this.eddsa.verify(t,r,this)};pr.prototype.getSecret=function(t){return V4(this._secret,"KeyPair is public only"),Fl.encode(this.secret(),t)};pr.prototype.getPublic=function(t){return Fl.encode(this.pubBytes(),t)};var wV=pr,_V=ao,Ac=ni,Jw=Ac.assert,Tc=Ac.cachedProperty,MV=Ac.parseBytes;function Da(e,t){this.eddsa=e,typeof t!="object"&&(t=MV(t)),Array.isArray(t)&&(Jw(t.length===e.encodingLength*2,"Signature has invalid size"),t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),Jw(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof _V&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}Tc(Da,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});Tc(Da,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});Tc(Da,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});Tc(Da,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});Da.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};Da.prototype.toHex=function(){return Ac.encode(this.toBytes(),"hex").toUpperCase()};var SV=Da,xV=xc,EV=Sc,Ns=ni,RV=Ns.assert,z4=Ns.parseBytes,G4=wV,Qw=SV;function Gr(e){if(RV(e==="ed25519","only tested with ed25519 so far"),!(this instanceof Gr))return new Gr(e);e=EV[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=xV.sha512}var AV=Gr;Gr.prototype.sign=function(t,r){t=z4(t);var i=this.keyFromSecret(r),a=this.hashInt(i.messagePrefix(),t),n=this.g.mul(a),l=this.encodePoint(n),c=this.hashInt(l,i.pubBytes(),t).mul(i.priv()),d=a.add(c).umod(this.curve.n);return this.makeSignature({R:n,S:d,Rencoded:l})};Gr.prototype.verify=function(t,r,i){if(t=z4(t),r=this.makeSignature(r),r.S().gte(r.eddsa.curve.n)||r.S().isNeg())return!1;var a=this.keyFromPublic(i),n=this.hashInt(r.Rencoded(),a.pubBytes(),t),l=this.g.mul(r.S()),c=r.R().add(a.pub().mul(n));return c.eq(l)};Gr.prototype.hashInt=function(){for(var t=this.hash(),r=0;r<arguments.length;r++)t.update(arguments[r]);return Ns.intFromLE(t.digest()).umod(this.curve.n)};Gr.prototype.keyFromPublic=function(t){return G4.fromPublic(this,t)};Gr.prototype.keyFromSecret=function(t){return G4.fromSecret(this,t)};Gr.prototype.makeSignature=function(t){return t instanceof Qw?t:new Qw(this,t)};Gr.prototype.encodePoint=function(t){var r=t.getY().toArray("le",this.encodingLength);return r[this.encodingLength-1]|=t.getX().isOdd()?128:0,r};Gr.prototype.decodePoint=function(t){t=Ns.parseBytes(t);var r=t.length-1,i=t.slice(0,r).concat(t[r]&-129),a=(t[r]&128)!==0,n=Ns.intFromLE(i);return this.curve.pointFromY(n,a)};Gr.prototype.encodeInt=function(t){return t.toArray("le",this.encodingLength)};Gr.prototype.decodeInt=function(t){return Ns.intFromLE(t)};Gr.prototype.isPoint=function(t){return t instanceof this.pointClass};var e2;function am(){return e2||(e2=1,function(e){var t=e;t.version=TW.version,t.utils=ni,t.rand=Zg(),t.curve=im,t.curves=Sc,t.ec=bV(),t.eddsa=AV}(T0)),T0}var Vi={},sm={},fm={exports:{}};fm.exports;(function(e){(function(t,r){function i(_,o){if(!_)throw new Error(o||"Assertion failed")}function a(_,o){_.super_=o;var f=function(){};f.prototype=o.prototype,_.prototype=new f,_.prototype.constructor=_}function n(_,o,f){if(n.isBN(_))return _;this.negative=0,this.words=null,this.length=0,this.red=null,_!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(_||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=ke.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var h=0;o[0]==="-"&&(h++,this.negative=1),h<o.length&&(f===16?this._parseHex(o,h,u):(this._parseBase(o,f,h),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p,w,x=0;if(u==="be")for(h=o.length-1,p=0;h>=0;h-=3)w=o[h]|o[h-1]<<8|o[h-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(h=0,p=0;h<o.length;h+=3)w=o[h]|o[h+1]<<8|o[h+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function c(_,o){var f=_.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(_,o,f){var u=c(_,f);return f-1>=o&&(u|=c(_,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p=0,w=0,x;if(u==="be")for(h=o.length-1;h>=f;h-=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(h=g%2===0?f+1:f;h<o.length;h+=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(_,o,f,u){for(var h=0,p=Math.min(_.length,f),w=o;w<p;w++){var x=_.charCodeAt(w)-48;h*=u,x>=49?h+=x-49+10:x>=17?h+=x-17+10:h+=x}return h}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var h=0,p=1;p<=67108863;p*=f)h++;h--,p=p/f|0;for(var w=o.length-u,x=w%h,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=h)s=m(o,v,v+h,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var M=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var h=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<h|p)&16777215).toString(16);p=x>>>24-h&16777215,p!==0||w!==this.length-1?u=M[6-g.length]+g+u:u=g+u,h+=2,h>=26&&(h-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var k=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=k+u:u=M[s-k.length]+k+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var h=this.byteLength(),p=u||Math.max(1,h);i(h<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-h;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(_){for(var o=new Array(_.bitLength()),f=0;f<o.length;f++){var u=f/26|0,h=f%26;o[f]=(_.words[u]&1<<h)>>>h}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var h=0;h<u.length;h++)this.words[h]=f.words[h]^u.words[h];if(this!==f)for(;h<f.length;h++)this.words[h]=f.words[h];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var h=0;h<f;h++)this.words[h]=~this.words[h]&67108863;return u>0&&(this.words[h]=~this.words[h]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,h=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<h:this.words[u]=this.words[u]&~(1<<h),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,h;this.length>o.length?(u=this,h=o):(u=o,h=this);for(var p=0,w=0;w<h.length;w++)f=(u.words[w]|0)+(h.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var h,p;u>0?(h=this,p=o):(h=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(h.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<h.length;x++)f=(h.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<h.length&&h!==this)for(;x<h.length;x++)this.words[x]=h.words[x];return this.length=Math.max(this.length,x),h!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(_,o,f){f.negative=o.negative^_.negative;var u=_.length+o.length|0;f.length=u,u=u-1|0;var h=_.words[0]|0,p=o.words[0]|0,w=h*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,k=Math.min(s,o.length-1),Y=Math.max(0,s-_.length+1);Y<=k;Y++){var ee=s-Y|0;h=_.words[ee]|0,p=o.words[Y]|0,w=h*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var B=function(o,f,u){var h=o.words,p=f.words,w=u.words,x=0,g,s,v,T=h[0]|0,k=T&8191,Y=T>>>13,ee=h[1]|0,A=ee&8191,E=ee>>>13,q=h[2]|0,V=q&8191,X=q>>>13,b=h[3]|0,y=b&8191,D=b>>>13,U=h[4]|0,Z=U&8191,F=U>>>13,N=h[5]|0,H=N&8191,z=N>>>13,fe=h[6]|0,re=fe&8191,ae=fe>>>13,be=h[7]|0,J=be&8191,le=be>>>13,se=h[8]|0,ue=se&8191,de=se>>>13,ve=h[9]|0,ie=ve&8191,oe=ve>>>13,Ae=p[0]|0,pe=Ae&8191,Se=Ae>>>13,Ke=p[1]|0,we=Ke&8191,xe=Ke>>>13,qe=p[2]|0,ye=qe&8191,Me=qe>>>13,Ve=p[3]|0,ge=Ve&8191,Ee=Ve>>>13,Je=p[4]|0,Re=Je&8191,Le=Je>>>13,at=p[5]|0,Te=at&8191,Ne=at>>>13,rt=p[6]|0,Oe=rt&8191,De=rt>>>13,nt=p[7]|0,Ie=nt&8191,$e=nt>>>13,st=p[8]|0,Pe=st&8191,je=st>>>13,ht=p[9]|0,Ce=ht&8191,Fe=ht>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(k,pe),s=Math.imul(k,Se),s=s+Math.imul(Y,pe)|0,v=Math.imul(Y,Se);var it=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(it>>>26)|0,it&=67108863,g=Math.imul(A,pe),s=Math.imul(A,Se),s=s+Math.imul(E,pe)|0,v=Math.imul(E,Se),g=g+Math.imul(k,we)|0,s=s+Math.imul(k,xe)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,xe)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,pe),s=Math.imul(V,Se),s=s+Math.imul(X,pe)|0,v=Math.imul(X,Se),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,xe)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,xe)|0,g=g+Math.imul(k,ye)|0,s=s+Math.imul(k,Me)|0,s=s+Math.imul(Y,ye)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,pe),s=Math.imul(y,Se),s=s+Math.imul(D,pe)|0,v=Math.imul(D,Se),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,xe)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,xe)|0,g=g+Math.imul(A,ye)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ye)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(k,ge)|0,s=s+Math.imul(k,Ee)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Ee)|0;var Ot=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,g=Math.imul(Z,pe),s=Math.imul(Z,Se),s=s+Math.imul(F,pe)|0,v=Math.imul(F,Se),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,xe)|0,s=s+Math.imul(D,we)|0,v=v+Math.imul(D,xe)|0,g=g+Math.imul(V,ye)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ye)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Ee)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Ee)|0,g=g+Math.imul(k,Re)|0,s=s+Math.imul(k,Le)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Le)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(H,pe),s=Math.imul(H,Se),s=s+Math.imul(z,pe)|0,v=Math.imul(z,Se),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,xe)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,xe)|0,g=g+Math.imul(y,ye)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(D,ye)|0,v=v+Math.imul(D,Me)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Ee)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Ee)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Le)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Le)|0,g=g+Math.imul(k,Te)|0,s=s+Math.imul(k,Ne)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,Ne)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(re,pe),s=Math.imul(re,Se),s=s+Math.imul(ae,pe)|0,v=Math.imul(ae,Se),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,xe)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,xe)|0,g=g+Math.imul(Z,ye)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(F,ye)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Ee)|0,s=s+Math.imul(D,ge)|0,v=v+Math.imul(D,Ee)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Le)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Le)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(k,Oe)|0,s=s+Math.imul(k,De)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,De)|0;var kt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(kt>>>26)|0,kt&=67108863,g=Math.imul(J,pe),s=Math.imul(J,Se),s=s+Math.imul(le,pe)|0,v=Math.imul(le,Se),g=g+Math.imul(re,we)|0,s=s+Math.imul(re,xe)|0,s=s+Math.imul(ae,we)|0,v=v+Math.imul(ae,xe)|0,g=g+Math.imul(H,ye)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ye)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Ee)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Ee)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Le)|0,s=s+Math.imul(D,Re)|0,v=v+Math.imul(D,Le)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(k,Ie)|0,s=s+Math.imul(k,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Ut=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,g=Math.imul(ue,pe),s=Math.imul(ue,Se),s=s+Math.imul(de,pe)|0,v=Math.imul(de,Se),g=g+Math.imul(J,we)|0,s=s+Math.imul(J,xe)|0,s=s+Math.imul(le,we)|0,v=v+Math.imul(le,xe)|0,g=g+Math.imul(re,ye)|0,s=s+Math.imul(re,Me)|0,s=s+Math.imul(ae,ye)|0,v=v+Math.imul(ae,Me)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Ee)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Ee)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Le)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Le)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(D,Te)|0,v=v+Math.imul(D,Ne)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0,g=g+Math.imul(k,Pe)|0,s=s+Math.imul(k,je)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,je)|0;var Ht=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,g=Math.imul(ie,pe),s=Math.imul(ie,Se),s=s+Math.imul(oe,pe)|0,v=Math.imul(oe,Se),g=g+Math.imul(ue,we)|0,s=s+Math.imul(ue,xe)|0,s=s+Math.imul(de,we)|0,v=v+Math.imul(de,xe)|0,g=g+Math.imul(J,ye)|0,s=s+Math.imul(J,Me)|0,s=s+Math.imul(le,ye)|0,v=v+Math.imul(le,Me)|0,g=g+Math.imul(re,ge)|0,s=s+Math.imul(re,Ee)|0,s=s+Math.imul(ae,ge)|0,v=v+Math.imul(ae,Ee)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Le)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Le)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(D,Oe)|0,v=v+Math.imul(D,De)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(k,Ce)|0,s=s+Math.imul(k,Fe)|0,s=s+Math.imul(Y,Ce)|0,v=v+Math.imul(Y,Fe)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,xe),s=s+Math.imul(oe,we)|0,v=Math.imul(oe,xe),g=g+Math.imul(ue,ye)|0,s=s+Math.imul(ue,Me)|0,s=s+Math.imul(de,ye)|0,v=v+Math.imul(de,Me)|0,g=g+Math.imul(J,ge)|0,s=s+Math.imul(J,Ee)|0,s=s+Math.imul(le,ge)|0,v=v+Math.imul(le,Ee)|0,g=g+Math.imul(re,Re)|0,s=s+Math.imul(re,Le)|0,s=s+Math.imul(ae,Re)|0,v=v+Math.imul(ae,Le)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(D,Ie)|0,v=v+Math.imul(D,$e)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ce)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Ce)|0,v=v+Math.imul(E,Fe)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ye),s=Math.imul(ie,Me),s=s+Math.imul(oe,ye)|0,v=Math.imul(oe,Me),g=g+Math.imul(ue,ge)|0,s=s+Math.imul(ue,Ee)|0,s=s+Math.imul(de,ge)|0,v=v+Math.imul(de,Ee)|0,g=g+Math.imul(J,Re)|0,s=s+Math.imul(J,Le)|0,s=s+Math.imul(le,Re)|0,v=v+Math.imul(le,Le)|0,g=g+Math.imul(re,Te)|0,s=s+Math.imul(re,Ne)|0,s=s+Math.imul(ae,Te)|0,v=v+Math.imul(ae,Ne)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(D,Pe)|0,v=v+Math.imul(D,je)|0,g=g+Math.imul(V,Ce)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Ce)|0,v=v+Math.imul(X,Fe)|0;var At=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(At>>>26)|0,At&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Ee),s=s+Math.imul(oe,ge)|0,v=Math.imul(oe,Ee),g=g+Math.imul(ue,Re)|0,s=s+Math.imul(ue,Le)|0,s=s+Math.imul(de,Re)|0,v=v+Math.imul(de,Le)|0,g=g+Math.imul(J,Te)|0,s=s+Math.imul(J,Ne)|0,s=s+Math.imul(le,Te)|0,v=v+Math.imul(le,Ne)|0,g=g+Math.imul(re,Oe)|0,s=s+Math.imul(re,De)|0,s=s+Math.imul(ae,Oe)|0,v=v+Math.imul(ae,De)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(y,Ce)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(D,Ce)|0,v=v+Math.imul(D,Fe)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Le),s=s+Math.imul(oe,Re)|0,v=Math.imul(oe,Le),g=g+Math.imul(ue,Te)|0,s=s+Math.imul(ue,Ne)|0,s=s+Math.imul(de,Te)|0,v=v+Math.imul(de,Ne)|0,g=g+Math.imul(J,Oe)|0,s=s+Math.imul(J,De)|0,s=s+Math.imul(le,Oe)|0,v=v+Math.imul(le,De)|0,g=g+Math.imul(re,Ie)|0,s=s+Math.imul(re,$e)|0,s=s+Math.imul(ae,Ie)|0,v=v+Math.imul(ae,$e)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ce)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(F,Ce)|0,v=v+Math.imul(F,Fe)|0;var yt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(yt>>>26)|0,yt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,Ne),s=s+Math.imul(oe,Te)|0,v=Math.imul(oe,Ne),g=g+Math.imul(ue,Oe)|0,s=s+Math.imul(ue,De)|0,s=s+Math.imul(de,Oe)|0,v=v+Math.imul(de,De)|0,g=g+Math.imul(J,Ie)|0,s=s+Math.imul(J,$e)|0,s=s+Math.imul(le,Ie)|0,v=v+Math.imul(le,$e)|0,g=g+Math.imul(re,Pe)|0,s=s+Math.imul(re,je)|0,s=s+Math.imul(ae,Pe)|0,v=v+Math.imul(ae,je)|0,g=g+Math.imul(H,Ce)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Ce)|0,v=v+Math.imul(z,Fe)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,De),s=s+Math.imul(oe,Oe)|0,v=Math.imul(oe,De),g=g+Math.imul(ue,Ie)|0,s=s+Math.imul(ue,$e)|0,s=s+Math.imul(de,Ie)|0,v=v+Math.imul(de,$e)|0,g=g+Math.imul(J,Pe)|0,s=s+Math.imul(J,je)|0,s=s+Math.imul(le,Pe)|0,v=v+Math.imul(le,je)|0,g=g+Math.imul(re,Ce)|0,s=s+Math.imul(re,Fe)|0,s=s+Math.imul(ae,Ce)|0,v=v+Math.imul(ae,Fe)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(oe,Ie)|0,v=Math.imul(oe,$e),g=g+Math.imul(ue,Pe)|0,s=s+Math.imul(ue,je)|0,s=s+Math.imul(de,Pe)|0,v=v+Math.imul(de,je)|0,g=g+Math.imul(J,Ce)|0,s=s+Math.imul(J,Fe)|0,s=s+Math.imul(le,Ce)|0,v=v+Math.imul(le,Fe)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,je),s=s+Math.imul(oe,Pe)|0,v=Math.imul(oe,je),g=g+Math.imul(ue,Ce)|0,s=s+Math.imul(ue,Fe)|0,s=s+Math.imul(de,Ce)|0,v=v+Math.imul(de,Fe)|0;var $t=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+($t>>>26)|0,$t&=67108863,g=Math.imul(ie,Ce),s=Math.imul(ie,Fe),s=s+Math.imul(oe,Ce)|0,v=Math.imul(oe,Fe);var Dt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,w[0]=it,w[1]=et,w[2]=Et,w[3]=Ot,w[4]=It,w[5]=Bt,w[6]=kt,w[7]=Ut,w[8]=Ht,w[9]=Lt,w[10]=dt,w[11]=At,w[12]=Mt,w[13]=yt,w[14]=Pt,w[15]=gt,w[16]=bt,w[17]=$t,w[18]=Dt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(B=O);function L(_,o,f){f.negative=o.negative^_.negative,f.length=_.length+o.length;for(var u=0,h=0,p=0;p<f.length-1;p++){var w=h;h=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-_.length+1);s<=g;s++){var v=p-s,T=_.words[v]|0,k=o.words[s]|0,Y=T*k,ee=Y&67108863;w=w+(Y/67108864|0)|0,ee=ee+x|0,x=ee&67108863,w=w+(ee>>>26)|0,h+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=h}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(_,o,f){var u=new C;return u.mulp(_,o,f)}n.prototype.mulTo=function(o,f){var u,h=this.length+o.length;return this.length===10&&o.length===10?u=B(this,o,f):h<63?u=O(this,o,f):h<1024?u=L(this,o,f):u=P(this,o,f),u};function C(_,o){this.x=_,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,h=0;h<o;h++)f[h]=this.revBin(h,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var h=0,p=0;p<f;p++)h|=(o&1)<<f-p-1,o>>=1;return h},C.prototype.permute=function(o,f,u,h,p,w){for(var x=0;x<w;x++)h[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,h,p,w){this.permute(w,o,f,u,h,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var k=s,Y=v,ee=0;ee<x;ee++){var A=u[T+ee],E=h[T+ee],q=u[T+ee+x],V=h[T+ee+x],X=k*q-Y*V;V=k*V+Y*q,q=X,u[T+ee]=A+q,h[T+ee]=E+V,u[T+ee+x]=A-q,h[T+ee+x]=E-V,ee!==g&&(X=s*k-v*Y,Y=s*Y+v*k,k=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,h=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+h},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var h=0;h<u/2;h++){var p=o[h];o[h]=o[u-h-1],o[u-h-1]=p,p=f[h],f[h]=-f[u-h-1],f[u-h-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,h=0;h<f/2;h++){var p=Math.round(o[2*h+1]/f)*8192+Math.round(o[2*h]/f)+u;o[h]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,h){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<h;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var h=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(h),w=this.stub(h),x=new Array(h),g=new Array(h),s=new Array(h),v=new Array(h),T=new Array(h),k=new Array(h),Y=u.words;Y.length=h,this.convert13b(o.words,o.length,x,h),this.convert13b(f.words,f.length,v,h),this.transform(x,w,g,s,h,p),this.transform(v,w,T,k,h,p);for(var ee=0;ee<h;ee++){var A=g[ee]*T[ee]-s[ee]*k[ee];s[ee]=g[ee]*k[ee]+s[ee]*T[ee],g[ee]=A}return this.conjugate(g,s,h),this.transform(g,s,Y,w,h,p),this.conjugate(Y,w,h),this.normalize13b(Y,h),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var h=(this.words[u]|0)*o,p=(h&67108863)+(f&67108863);f>>=26,f+=h/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,h=0;h<f.length&&f[h]===0;h++,u=u.sqr());if(++h<f.length)for(var p=u.sqr();h<f.length;h++,p=p.sqr())f[h]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&h,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var h;f?h=(f-f%26)/26:h=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(h-=w,h=Math.max(0,h),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=h);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&h)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var h=67108863^67108863>>>f<<f;this.words[this.length-1]&=h}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var h=o.length+u,p;this._expand(h);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,h=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),h.iushln(u),w=p.words[p.length-1]|0);var g=h.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=h.clone()._ishlnsubmul(p,1,g);T.negative===0&&(h=T,s&&(s.words[g]=1));for(var k=g-1;k>=0;k--){var Y=(h.words[p.length+k]|0)*67108864+(h.words[p.length+k-1]|0);for(Y=Math.min(Y/w|0,67108863),h._ishlnsubmul(p,Y,k);h.negative!==0;)Y--,h.negative=0,h._ishlnsubmul(p,1,k),h.isZero()||(h.negative^=1);s&&(s.words[k]=Y)}return s&&s.strip(),h.strip(),f!=="div"&&u!==0&&h.iushrn(u),{div:s||null,mod:h}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var h,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(h=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:h,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(h=w.div.neg()),{div:h,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,h=o.ushrn(1),p=o.andln(1),w=u.cmp(h);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,h=this.length-1;h>=0;h--)u=(f*u+(this.words[h]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var h=(this.words[u]|0)+f*67108864;this.words[u]=h/o|0,f=h%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,k=1;!(f.words[0]&k)&&T<26;++T,k<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(h.isOdd()||p.isOdd())&&(h.iadd(s),p.isub(v)),h.iushrn(1),p.iushrn(1);for(var Y=0,ee=1;!(u.words[0]&ee)&&Y<26;++Y,ee<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(w),p.isub(x)):(u.isub(f),w.isub(h),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)h.isOdd()&&h.iadd(w),h.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(p)):(u.isub(f),p.isub(h))}var T;return f.cmpn(1)===0?T=h:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var h=0;f.isEven()&&u.isEven();h++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(h)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=h,this;for(var p=h,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var h=this.words[0]|0;u=h===o?0:h<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var h=this.words[u]|0,p=o.words[u]|0;if(h!==p){h<p?f=-1:h>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new W(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var j={k256:null,p224:null,p192:null,p25519:null};function $(_,o){this.name=_,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var h=u<this.n?-1:f.ucmp(this.p);return h===0?(f.words[0]=0,f.length=1):h>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function K(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(K,$),K.prototype.split=function(o,f){for(var u=4194303,h=Math.min(o.length,9),p=0;p<h;p++)f.words[p]=o.words[p];if(f.length=h,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},K.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var h=o.words[u]|0;f+=h*977,o.words[u]=f&67108863,f=h*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function te(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(te,$);function Q(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(Q,$),Q.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var h=(o.words[u]|0)*19+f,p=h&67108863;h>>>=26,o.words[u]=p,f=h}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(j[o])return j[o];var f;if(o==="k256")f=new K;else if(o==="p224")f=new G;else if(o==="p192")f=new te;else if(o==="p25519")f=new Q;else throw new Error("Unknown prime "+o);return j[o]=f,f};function W(_){if(typeof _=="string"){var o=n._prime(_);this.m=o.p,this.prime=o}else i(_.gtn(1),"modulus must be greater than 1"),this.m=_,this.prime=null}W.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},W.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},W.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},W.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},W.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},W.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},W.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},W.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},W.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},W.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},W.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},W.prototype.isqr=function(o){return this.imul(o,o.clone())},W.prototype.sqr=function(o){return this.mul(o,o)},W.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var h=this.m.subn(1),p=0;!h.isZero()&&h.andln(1)===0;)p++,h.iushrn(1);i(!h.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,h),T=this.pow(o,h.addn(1).iushrn(1)),k=this.pow(o,h),Y=p;k.cmp(w)!==0;){for(var ee=k,A=0;ee.cmp(w)!==0;A++)ee=ee.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),k=k.redMul(v),Y=A}return T},W.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},W.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,h=new Array(1<<u);h[0]=new n(1).toRed(this),h[1]=o;for(var p=2;p<h.length;p++)h[p]=this.mul(h[p-1],o);var w=h[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var k=v>>T&1;if(w!==h[0]&&(w=this.sqr(w)),k===0&&x===0){g=0;continue}x<<=1,x|=k,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,h[x]),g=0,x=0)}s=26}return w},W.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},W.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new ce(o)};function ce(_){W.call(this,_),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(ce,W),ce.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},ce.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},ce.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(fm);var Y4=fm.exports,Z4={},lm={},Iu=ke,us=Iu.Buffer,ci={},di;for(di in Iu)Iu.hasOwnProperty(di)&&(di==="SlowBuffer"||di==="Buffer"||(ci[di]=Iu[di]));var hs=ci.Buffer={};for(di in us)us.hasOwnProperty(di)&&(di==="allocUnsafe"||di==="allocUnsafeSlow"||(hs[di]=us[di]));ci.Buffer.prototype=us.prototype;(!hs.from||hs.from===Uint8Array.from)&&(hs.from=function(e,t,r){if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof e);if(e&&typeof e.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);return us(e,t,r)});hs.alloc||(hs.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value "'+e+'" is invalid for option "size"');var i=us(e);return!t||t.length===0?i.fill(0):typeof r=="string"?i.fill(t,r):i.fill(t),i});if(!ci.kStringMaxLength)try{ci.kStringMaxLength=_e.binding("buffer").kStringMaxLength}catch{}ci.constants||(ci.constants={MAX_LENGTH:ci.kMaxLength},ci.kStringMaxLength&&(ci.constants.MAX_STRING_LENGTH=ci.kStringMaxLength));var um=ci,Oc={};const TV=Ye;function Ci(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}Oc.Reporter=Ci;Ci.prototype.isError=function(t){return t instanceof ks};Ci.prototype.save=function(){const t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}};Ci.prototype.restore=function(t){const r=this._reporterState;r.obj=t.obj,r.path=r.path.slice(0,t.pathLen)};Ci.prototype.enterKey=function(t){return this._reporterState.path.push(t)};Ci.prototype.exitKey=function(t){const r=this._reporterState;r.path=r.path.slice(0,t-1)};Ci.prototype.leaveKey=function(t,r,i){const a=this._reporterState;this.exitKey(t),a.obj!==null&&(a.obj[r]=i)};Ci.prototype.path=function(){return this._reporterState.path.join("/")};Ci.prototype.enterObject=function(){const t=this._reporterState,r=t.obj;return t.obj={},r};Ci.prototype.leaveObject=function(t){const r=this._reporterState,i=r.obj;return r.obj=t,i};Ci.prototype.error=function(t){let r;const i=this._reporterState,a=t instanceof ks;if(a?r=t:r=new ks(i.path.map(function(n){return"["+JSON.stringify(n)+"]"}).join(""),t.message||t,t.stack),!i.options.partial)throw r;return a||i.errors.push(r),r};Ci.prototype.wrapResult=function(t){const r=this._reporterState;return r.options.partial?{result:this.isError(t)?null:t,errors:r.errors}:t};function ks(e,t){this.path=e,this.rethrow(t)}TV(ks,Error);ks.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,ks),!this.stack)try{throw new Error(this.message)}catch(r){this.stack=r.stack}return this};var xa={};const OV=Ye,Ic=Oc.Reporter,$s=um.Buffer;function wi(e,t){if(Ic.call(this,t),!$s.isBuffer(e)){this.error("Input not Buffer");return}this.base=e,this.offset=0,this.length=e.length}OV(wi,Ic);xa.DecoderBuffer=wi;wi.isDecoderBuffer=function(t){return t instanceof wi?!0:typeof t=="object"&&$s.isBuffer(t.base)&&t.constructor.name==="DecoderBuffer"&&typeof t.offset=="number"&&typeof t.length=="number"&&typeof t.save=="function"&&typeof t.restore=="function"&&typeof t.isEmpty=="function"&&typeof t.readUInt8=="function"&&typeof t.skip=="function"&&typeof t.raw=="function"};wi.prototype.save=function(){return{offset:this.offset,reporter:Ic.prototype.save.call(this)}};wi.prototype.restore=function(t){const r=new wi(this.base);return r.offset=t.offset,r.length=this.offset,this.offset=t.offset,Ic.prototype.restore.call(this,t.reporter),r};wi.prototype.isEmpty=function(){return this.offset===this.length};wi.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")};wi.prototype.skip=function(t,r){if(!(this.offset+t<=this.length))return this.error(r||"DecoderBuffer overrun");const i=new wi(this.base);return i._reporterState=this._reporterState,i.offset=this.offset,i.length=this.offset+t,this.offset+=t,i};wi.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)};function Ds(e,t){if(Array.isArray(e))this.length=0,this.value=e.map(function(r){return Ds.isEncoderBuffer(r)||(r=new Ds(r,t)),this.length+=r.length,r},this);else if(typeof e=="number"){if(!(0<=e&&e<=255))return t.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if(typeof e=="string")this.value=e,this.length=$s.byteLength(e);else if($s.isBuffer(e))this.value=e,this.length=e.length;else return t.error("Unsupported type: "+typeof e)}xa.EncoderBuffer=Ds;Ds.isEncoderBuffer=function(t){return t instanceof Ds?!0:typeof t=="object"&&t.constructor.name==="EncoderBuffer"&&typeof t.length=="number"&&typeof t.join=="function"};Ds.prototype.join=function(t,r){return t||(t=$s.alloc(this.length)),r||(r=0),this.length===0||(Array.isArray(this.value)?this.value.forEach(function(i){i.join(t,r),r+=i.length}):(typeof this.value=="number"?t[r]=this.value:typeof this.value=="string"?t.write(this.value,r):$s.isBuffer(this.value)&&this.value.copy(t,r),r+=this.length)),t};const IV=Oc.Reporter,PV=xa.EncoderBuffer,CV=xa.DecoderBuffer,Hr=Ai,X4=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],BV=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(X4),LV=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function Vt(e,t,r){const i={};this._baseState=i,i.name=r,i.enc=e,i.parent=t||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}var hm=Vt;const NV=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];Vt.prototype.clone=function(){const t=this._baseState,r={};NV.forEach(function(a){r[a]=t[a]});const i=new this.constructor(r.parent);return i._baseState=r,i};Vt.prototype._wrap=function(){const t=this._baseState;BV.forEach(function(r){this[r]=function(){const a=new this.constructor(this);return t.children.push(a),a[r].apply(a,arguments)}},this)};Vt.prototype._init=function(t){const r=this._baseState;Hr(r.parent===null),t.call(this),r.children=r.children.filter(function(i){return i._baseState.parent===this},this),Hr.equal(r.children.length,1,"Root node can have only one child")};Vt.prototype._useArgs=function(t){const r=this._baseState,i=t.filter(function(a){return a instanceof this.constructor},this);t=t.filter(function(a){return!(a instanceof this.constructor)},this),i.length!==0&&(Hr(r.children===null),r.children=i,i.forEach(function(a){a._baseState.parent=this},this)),t.length!==0&&(Hr(r.args===null),r.args=t,r.reverseArgs=t.map(function(a){if(typeof a!="object"||a.constructor!==Object)return a;const n={};return Object.keys(a).forEach(function(l){l==(l|0)&&(l|=0);const c=a[l];n[c]=l}),n}))};LV.forEach(function(e){Vt.prototype[e]=function(){const r=this._baseState;throw new Error(e+" not implemented for encoding: "+r.enc)}});X4.forEach(function(e){Vt.prototype[e]=function(){const r=this._baseState,i=Array.prototype.slice.call(arguments);return Hr(r.tag===null),r.tag=e,this._useArgs(i),this}});Vt.prototype.use=function(t){Hr(t);const r=this._baseState;return Hr(r.use===null),r.use=t,this};Vt.prototype.optional=function(){const t=this._baseState;return t.optional=!0,this};Vt.prototype.def=function(t){const r=this._baseState;return Hr(r.default===null),r.default=t,r.optional=!0,this};Vt.prototype.explicit=function(t){const r=this._baseState;return Hr(r.explicit===null&&r.implicit===null),r.explicit=t,this};Vt.prototype.implicit=function(t){const r=this._baseState;return Hr(r.explicit===null&&r.implicit===null),r.implicit=t,this};Vt.prototype.obj=function(){const t=this._baseState,r=Array.prototype.slice.call(arguments);return t.obj=!0,r.length!==0&&this._useArgs(r),this};Vt.prototype.key=function(t){const r=this._baseState;return Hr(r.key===null),r.key=t,this};Vt.prototype.any=function(){const t=this._baseState;return t.any=!0,this};Vt.prototype.choice=function(t){const r=this._baseState;return Hr(r.choice===null),r.choice=t,this._useArgs(Object.keys(t).map(function(i){return t[i]})),this};Vt.prototype.contains=function(t){const r=this._baseState;return Hr(r.use===null),r.contains=t,this};Vt.prototype._decode=function(t,r){const i=this._baseState;if(i.parent===null)return t.wrapResult(i.children[0]._decode(t,r));let a=i.default,n=!0,l=null;if(i.key!==null&&(l=t.enterKey(i.key)),i.optional){let d=null;if(i.explicit!==null?d=i.explicit:i.implicit!==null?d=i.implicit:i.tag!==null&&(d=i.tag),d===null&&!i.any){const m=t.save();try{i.choice===null?this._decodeGeneric(i.tag,t,r):this._decodeChoice(t,r),n=!0}catch{n=!1}t.restore(m)}else if(n=this._peekTag(t,d,i.any),t.isError(n))return n}let c;if(i.obj&&n&&(c=t.enterObject()),n){if(i.explicit!==null){const m=this._decodeTag(t,i.explicit);if(t.isError(m))return m;t=m}const d=t.offset;if(i.use===null&&i.choice===null){let m;i.any&&(m=t.save());const M=this._decodeTag(t,i.implicit!==null?i.implicit:i.tag,i.any);if(t.isError(M))return M;i.any?a=t.raw(m):t=M}if(r&&r.track&&i.tag!==null&&r.track(t.path(),d,t.length,"tagged"),r&&r.track&&i.tag!==null&&r.track(t.path(),t.offset,t.length,"content"),i.any||(i.choice===null?a=this._decodeGeneric(i.tag,t,r):a=this._decodeChoice(t,r)),t.isError(a))return a;if(!i.any&&i.choice===null&&i.children!==null&&i.children.forEach(function(M){M._decode(t,r)}),i.contains&&(i.tag==="octstr"||i.tag==="bitstr")){const m=new CV(a);a=this._getUse(i.contains,t._reporterState.obj)._decode(m,r)}}return i.obj&&n&&(a=t.leaveObject(c)),i.key!==null&&(a!==null||n===!0)?t.leaveKey(l,i.key,a):l!==null&&t.exitKey(l),a};Vt.prototype._decodeGeneric=function(t,r,i){const a=this._baseState;return t==="seq"||t==="set"?null:t==="seqof"||t==="setof"?this._decodeList(r,t,a.args[0],i):/str$/.test(t)?this._decodeStr(r,t,i):t==="objid"&&a.args?this._decodeObjid(r,a.args[0],a.args[1],i):t==="objid"?this._decodeObjid(r,null,null,i):t==="gentime"||t==="utctime"?this._decodeTime(r,t,i):t==="null_"?this._decodeNull(r,i):t==="bool"?this._decodeBool(r,i):t==="objDesc"?this._decodeStr(r,t,i):t==="int"||t==="enum"?this._decodeInt(r,a.args&&a.args[0],i):a.use!==null?this._getUse(a.use,r._reporterState.obj)._decode(r,i):r.error("unknown tag: "+t)};Vt.prototype._getUse=function(t,r){const i=this._baseState;return i.useDecoder=this._use(t,r),Hr(i.useDecoder._baseState.parent===null),i.useDecoder=i.useDecoder._baseState.children[0],i.implicit!==i.useDecoder._baseState.implicit&&(i.useDecoder=i.useDecoder.clone(),i.useDecoder._baseState.implicit=i.implicit),i.useDecoder};Vt.prototype._decodeChoice=function(t,r){const i=this._baseState;let a=null,n=!1;return Object.keys(i.choice).some(function(l){const c=t.save(),d=i.choice[l];try{const m=d._decode(t,r);if(t.isError(m))return!1;a={type:l,value:m},n=!0}catch{return t.restore(c),!1}return!0},this),n?a:t.error("Choice not matched")};Vt.prototype._createEncoderBuffer=function(t){return new PV(t,this.reporter)};Vt.prototype._encode=function(t,r,i){const a=this._baseState;if(a.default!==null&&a.default===t)return;const n=this._encodeValue(t,r,i);if(n!==void 0&&!this._skipDefault(n,r,i))return n};Vt.prototype._encodeValue=function(t,r,i){const a=this._baseState;if(a.parent===null)return a.children[0]._encode(t,r||new IV);let n=null;if(this.reporter=r,a.optional&&t===void 0)if(a.default!==null)t=a.default;else return;let l=null,c=!1;if(a.any)n=this._createEncoderBuffer(t);else if(a.choice)n=this._encodeChoice(t,r);else if(a.contains)l=this._getUse(a.contains,i)._encode(t,r),c=!0;else if(a.children)l=a.children.map(function(d){if(d._baseState.tag==="null_")return d._encode(null,r,t);if(d._baseState.key===null)return r.error("Child should have a key");const m=r.enterKey(d._baseState.key);if(typeof t!="object")return r.error("Child expected, but input is not object");const M=d._encode(t[d._baseState.key],r,t);return r.leaveKey(m),M},this).filter(function(d){return d}),l=this._createEncoderBuffer(l);else if(a.tag==="seqof"||a.tag==="setof"){if(!(a.args&&a.args.length===1))return r.error("Too many args for : "+a.tag);if(!Array.isArray(t))return r.error("seqof/setof, but data is not Array");const d=this.clone();d._baseState.implicit=null,l=this._createEncoderBuffer(t.map(function(m){const M=this._baseState;return this._getUse(M.args[0],t)._encode(m,r)},d))}else a.use!==null?n=this._getUse(a.use,i)._encode(t,r):(l=this._encodePrimitive(a.tag,t),c=!0);if(!a.any&&a.choice===null){const d=a.implicit!==null?a.implicit:a.tag,m=a.implicit===null?"universal":"context";d===null?a.use===null&&r.error("Tag could be omitted only for .use()"):a.use===null&&(n=this._encodeComposite(d,c,m,l))}return a.explicit!==null&&(n=this._encodeComposite(a.explicit,!1,"context",n)),n};Vt.prototype._encodeChoice=function(t,r){const i=this._baseState,a=i.choice[t.type];return a||Hr(!1,t.type+" not found in "+JSON.stringify(Object.keys(i.choice))),a._encode(t.value,r)};Vt.prototype._encodePrimitive=function(t,r){const i=this._baseState;if(/str$/.test(t))return this._encodeStr(r,t);if(t==="objid"&&i.args)return this._encodeObjid(r,i.reverseArgs[0],i.args[1]);if(t==="objid")return this._encodeObjid(r,null,null);if(t==="gentime"||t==="utctime")return this._encodeTime(r,t);if(t==="null_")return this._encodeNull();if(t==="int"||t==="enum")return this._encodeInt(r,i.args&&i.reverseArgs[0]);if(t==="bool")return this._encodeBool(r);if(t==="objDesc")return this._encodeStr(r,t);throw new Error("Unsupported tag: "+t)};Vt.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)};Vt.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)};var Pc={};(function(e){function t(r){const i={};return Object.keys(r).forEach(function(a){(a|0)==a&&(a=a|0);const n=r[a];i[n]=a}),i}e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=t(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=t(e.tag)})(Pc);const kV=Ye,Dn=um.Buffer,J4=hm,k0=Pc;function Q4(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new zi,this.tree._init(e.body)}var eE=Q4;Q4.prototype.encode=function(t,r){return this.tree._encode(t,r).join()};function zi(e){J4.call(this,"der",e)}kV(zi,J4);zi.prototype._encodeComposite=function(t,r,i,a){const n=$V(t,r,i,this.reporter);if(a.length<128){const d=Dn.alloc(2);return d[0]=n,d[1]=a.length,this._createEncoderBuffer([d,a])}let l=1;for(let d=a.length;d>=256;d>>=8)l++;const c=Dn.alloc(1+1+l);c[0]=n,c[1]=128|l;for(let d=1+l,m=a.length;m>0;d--,m>>=8)c[d]=m&255;return this._createEncoderBuffer([c,a])};zi.prototype._encodeStr=function(t,r){if(r==="bitstr")return this._createEncoderBuffer([t.unused|0,t.data]);if(r==="bmpstr"){const i=Dn.alloc(t.length*2);for(let a=0;a<t.length;a++)i.writeUInt16BE(t.charCodeAt(a),a*2);return this._createEncoderBuffer(i)}else return r==="numstr"?this._isNumstr(t)?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: numstr supports only digits and space"):r==="printstr"?this._isPrintstr(t)?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark"):/str$/.test(r)?this._createEncoderBuffer(t):r==="objDesc"?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: "+r+" unsupported")};zi.prototype._encodeObjid=function(t,r,i){if(typeof t=="string"){if(!r)return this.reporter.error("string objid given, but no values map found");if(!r.hasOwnProperty(t))return this.reporter.error("objid not found in values map");t=r[t].split(/[\s.]+/g);for(let c=0;c<t.length;c++)t[c]|=0}else if(Array.isArray(t)){t=t.slice();for(let c=0;c<t.length;c++)t[c]|=0}if(!Array.isArray(t))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(t));if(!i){if(t[1]>=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,t[0]*40+t[1])}let a=0;for(let c=0;c<t.length;c++){let d=t[c];for(a++;d>=128;d>>=7)a++}const n=Dn.alloc(a);let l=n.length-1;for(let c=t.length-1;c>=0;c--){let d=t[c];for(n[l--]=d&127;(d>>=7)>0;)n[l--]=128|d&127}return this._createEncoderBuffer(n)};function fi(e){return e<10?"0"+e:e}zi.prototype._encodeTime=function(t,r){let i;const a=new Date(t);return r==="gentime"?i=[fi(a.getUTCFullYear()),fi(a.getUTCMonth()+1),fi(a.getUTCDate()),fi(a.getUTCHours()),fi(a.getUTCMinutes()),fi(a.getUTCSeconds()),"Z"].join(""):r==="utctime"?i=[fi(a.getUTCFullYear()%100),fi(a.getUTCMonth()+1),fi(a.getUTCDate()),fi(a.getUTCHours()),fi(a.getUTCMinutes()),fi(a.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+r+" time is not supported yet"),this._encodeStr(i,"octstr")};zi.prototype._encodeNull=function(){return this._createEncoderBuffer("")};zi.prototype._encodeInt=function(t,r){if(typeof t=="string"){if(!r)return this.reporter.error("String int or enum given, but no values map");if(!r.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=r[t]}if(typeof t!="number"&&!Dn.isBuffer(t)){const n=t.toArray();!t.sign&&n[0]&128&&n.unshift(0),t=Dn.from(n)}if(Dn.isBuffer(t)){let n=t.length;t.length===0&&n++;const l=Dn.alloc(n);return t.copy(l),t.length===0&&(l[0]=0),this._createEncoderBuffer(l)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);let i=1;for(let n=t;n>=256;n>>=8)i++;const a=new Array(i);for(let n=a.length-1;n>=0;n--)a[n]=t&255,t>>=8;return a[0]&128&&a.unshift(0),this._createEncoderBuffer(Dn.from(a))};zi.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)};zi.prototype._use=function(t,r){return typeof t=="function"&&(t=t(r)),t._getEncoder("der").tree};zi.prototype._skipDefault=function(t,r,i){const a=this._baseState;let n;if(a.default===null)return!1;const l=t.join();if(a.defaultBuffer===void 0&&(a.defaultBuffer=this._encodeValue(a.default,r,i).join()),l.length!==a.defaultBuffer.length)return!1;for(n=0;n<l.length;n++)if(l[n]!==a.defaultBuffer[n])return!1;return!0};function $V(e,t,r,i){let a;if(e==="seqof"?e="seq":e==="setof"&&(e="set"),k0.tagByName.hasOwnProperty(e))a=k0.tagByName[e];else if(typeof e=="number"&&(e|0)===e)a=e;else return i.error("Unknown tag: "+e);return a>=31?i.error("Multi-octet tag encoding unsupported"):(t||(a|=32),a|=k0.tagClassByName[r||"universal"]<<6,a)}const DV=Ye,cm=eE;function dm(e){cm.call(this,e),this.enc="pem"}DV(dm,cm);var FV=dm;dm.prototype.encode=function(t,r){const a=cm.prototype.encode.call(this,t).toString("base64"),n=["-----BEGIN "+r.label+"-----"];for(let l=0;l<a.length;l+=64)n.push(a.slice(l,l+64));return n.push("-----END "+r.label+"-----"),n.join(`
-`)};(function(e){const t=e;t.der=eE,t.pem=FV})(lm);var pm={};const jV=Ye,UV=Y4,t2=xa.DecoderBuffer,tE=hm,r2=Pc;function rE(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new oi,this.tree._init(e.body)}var iE=rE;rE.prototype.decode=function(t,r){return t2.isDecoderBuffer(t)||(t=new t2(t,r)),this.tree._decode(t,r)};function oi(e){tE.call(this,"der",e)}jV(oi,tE);oi.prototype._peekTag=function(t,r,i){if(t.isEmpty())return!1;const a=t.save(),n=vm(t,'Failed to peek tag: "'+r+'"');return t.isError(n)?n:(t.restore(a),n.tag===r||n.tagStr===r||n.tagStr+"of"===r||i)};oi.prototype._decodeTag=function(t,r,i){const a=vm(t,'Failed to decode tag of "'+r+'"');if(t.isError(a))return a;let n=nE(t,a.primitive,'Failed to get length of "'+r+'"');if(t.isError(n))return n;if(!i&&a.tag!==r&&a.tagStr!==r&&a.tagStr+"of"!==r)return t.error('Failed to match tag: "'+r+'"');if(a.primitive||n!==null)return t.skip(n,'Failed to match body of: "'+r+'"');const l=t.save(),c=this._skipUntilEnd(t,'Failed to skip indefinite length body: "'+this.tag+'"');return t.isError(c)?c:(n=t.offset-l.offset,t.restore(l),t.skip(n,'Failed to match body of: "'+r+'"'))};oi.prototype._skipUntilEnd=function(t,r){for(;;){const i=vm(t,r);if(t.isError(i))return i;const a=nE(t,i.primitive,r);if(t.isError(a))return a;let n;if(i.primitive||a!==null?n=t.skip(a):n=this._skipUntilEnd(t,r),t.isError(n))return n;if(i.tagStr==="end")break}};oi.prototype._decodeList=function(t,r,i,a){const n=[];for(;!t.isEmpty();){const l=this._peekTag(t,"end");if(t.isError(l))return l;const c=i.decode(t,"der",a);if(t.isError(c)&&l)break;n.push(c)}return n};oi.prototype._decodeStr=function(t,r){if(r==="bitstr"){const i=t.readUInt8();return t.isError(i)?i:{unused:i,data:t.raw()}}else if(r==="bmpstr"){const i=t.raw();if(i.length%2===1)return t.error("Decoding of string type: bmpstr length mismatch");let a="";for(let n=0;n<i.length/2;n++)a+=String.fromCharCode(i.readUInt16BE(n*2));return a}else if(r==="numstr"){const i=t.raw().toString("ascii");return this._isNumstr(i)?i:t.error("Decoding of string type: numstr unsupported characters")}else{if(r==="octstr")return t.raw();if(r==="objDesc")return t.raw();if(r==="printstr"){const i=t.raw().toString("ascii");return this._isPrintstr(i)?i:t.error("Decoding of string type: printstr unsupported characters")}else return/str$/.test(r)?t.raw().toString():t.error("Decoding of string type: "+r+" unsupported")}};oi.prototype._decodeObjid=function(t,r,i){let a;const n=[];let l=0,c=0;for(;!t.isEmpty();)c=t.readUInt8(),l<<=7,l|=c&127,c&128||(n.push(l),l=0);c&128&&n.push(l);const d=n[0]/40|0,m=n[0]%40;if(i?a=n:a=[d,m].concat(n.slice(1)),r){let M=r[a.join(" ")];M===void 0&&(M=r[a.join(".")]),M!==void 0&&(a=M)}return a};oi.prototype._decodeTime=function(t,r){const i=t.raw().toString();let a,n,l,c,d,m;if(r==="gentime")a=i.slice(0,4)|0,n=i.slice(4,6)|0,l=i.slice(6,8)|0,c=i.slice(8,10)|0,d=i.slice(10,12)|0,m=i.slice(12,14)|0;else if(r==="utctime")a=i.slice(0,2)|0,n=i.slice(2,4)|0,l=i.slice(4,6)|0,c=i.slice(6,8)|0,d=i.slice(8,10)|0,m=i.slice(10,12)|0,a<70?a=2e3+a:a=1900+a;else return t.error("Decoding "+r+" time is not supported yet");return Date.UTC(a,n-1,l,c,d,m,0)};oi.prototype._decodeNull=function(){return null};oi.prototype._decodeBool=function(t){const r=t.readUInt8();return t.isError(r)?r:r!==0};oi.prototype._decodeInt=function(t,r){const i=t.raw();let a=new UV(i);return r&&(a=r[a.toString(10)]||a),a};oi.prototype._use=function(t,r){return typeof t=="function"&&(t=t(r)),t._getDecoder("der").tree};function vm(e,t){let r=e.readUInt8(t);if(e.isError(r))return r;const i=r2.tagClass[r>>6],a=(r&32)===0;if((r&31)===31){let l=r;for(r=0;(l&128)===128;){if(l=e.readUInt8(t),e.isError(l))return l;r<<=7,r|=l&127}}else r&=31;const n=r2.tag[r];return{cls:i,primitive:a,tag:r,tagStr:n}}function nE(e,t,r){let i=e.readUInt8(r);if(e.isError(i))return i;if(!t&&i===128)return null;if(!(i&128))return i;const a=i&127;if(a>4)return e.error("length octect is too long");i=0;for(let n=0;n<a;n++){i<<=8;const l=e.readUInt8(r);if(e.isError(l))return l;i|=l}return i}const HV=Ye,qV=um.Buffer,gm=iE;function mm(e){gm.call(this,e),this.enc="pem"}HV(mm,gm);var WV=mm;mm.prototype.decode=function(t,r){const i=t.toString().split(/[\r\n]+/g),a=r.label.toUpperCase(),n=/^-----(BEGIN|END) ([^-]+)-----$/;let l=-1,c=-1;for(let M=0;M<i.length;M++){const S=i[M].match(n);if(S!==null&&S[2]===a)if(l===-1){if(S[1]!=="BEGIN")break;l=M}else{if(S[1]!=="END")break;c=M;break}}if(l===-1||c===-1)throw new Error("PEM section not found for: "+a);const d=i.slice(l+1,c).join("");d.replace(/[^a-z0-9+/=]+/gi,"");const m=qV.from(d,"base64");return gm.prototype.decode.call(this,m,r)};(function(e){const t=e;t.der=iE,t.pem=WV})(pm);(function(e){const t=lm,r=pm,i=Ye,a=e;a.define=function(c,d){return new n(c,d)};function n(l,c){this.name=l,this.body=c,this.decoders={},this.encoders={}}n.prototype._createNamed=function(c){const d=this.name;function m(M){this._initNamed(M,d)}return i(m,c),m.prototype._initNamed=function(S,R){c.call(this,S,R)},new m(this)},n.prototype._getDecoder=function(c){return c=c||"der",this.decoders.hasOwnProperty(c)||(this.decoders[c]=this._createNamed(r[c])),this.decoders[c]},n.prototype.decode=function(c,d,m){return this._getDecoder(d).decode(c,m)},n.prototype._getEncoder=function(c){return c=c||"der",this.encoders.hasOwnProperty(c)||(this.encoders[c]=this._createNamed(t[c])),this.encoders[c]},n.prototype.encode=function(c,d,m){return this._getEncoder(d).encode(c,m)}})(Z4);var oE={};(function(e){const t=e;t.Reporter=Oc.Reporter,t.DecoderBuffer=xa.DecoderBuffer,t.EncoderBuffer=xa.EncoderBuffer,t.Node=hm})(oE);var aE={};(function(e){const t=e;t._reverse=function(i){const a={};return Object.keys(i).forEach(function(n){(n|0)==n&&(n=n|0);const l=i[n];a[l]=n}),a},t.der=Pc})(aE);(function(e){const t=e;t.bignum=Y4,t.define=Z4.define,t.base=oE,t.constants=aE,t.decoders=pm,t.encoders=lm})(sm);var Gi=sm,i2=Gi.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),KV=Gi.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),ym=Gi.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),VV=Gi.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(ym),this.key("subjectPublicKey").bitstr())}),zV=Gi.define("RelativeDistinguishedName",function(){this.setof(KV)}),GV=Gi.define("RDNSequence",function(){this.seqof(zV)}),n2=Gi.define("Name",function(){this.choice({rdnSequence:this.use(GV)})}),YV=Gi.define("Validity",function(){this.seq().obj(this.key("notBefore").use(i2),this.key("notAfter").use(i2))}),ZV=Gi.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),XV=Gi.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(ym),this.key("issuer").use(n2),this.key("validity").use(YV),this.key("subject").use(n2),this.key("subjectPublicKeyInfo").use(VV),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(ZV).optional())}),JV=Gi.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(XV),this.key("signatureAlgorithm").use(ym),this.key("signatureValue").bitstr())}),QV=JV,Yi=sm;Vi.certificate=QV;var ez=Yi.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});Vi.RSAPrivateKey=ez;var tz=Yi.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});Vi.RSAPublicKey=tz;var rz=Yi.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(sE),this.key("subjectPublicKey").bitstr())});Vi.PublicKey=rz;var sE=Yi.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),iz=Yi.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(sE),this.key("subjectPrivateKey").octstr())});Vi.PrivateKey=iz;var nz=Yi.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});Vi.EncryptedPrivateKey=nz;var oz=Yi.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});Vi.DSAPrivateKey=oz;Vi.DSAparam=Yi.define("DSAparam",function(){this.int()});var az=Yi.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(sz),this.key("publicKey").optional().explicit(1).bitstr())});Vi.ECPrivateKey=az;var sz=Yi.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});Vi.signature=Yi.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())});const fz={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"};var lz=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,uz=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,hz=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,cz=vc,dz=ei,su=vt.Buffer,pz=function(e,t){var r=e.toString(),i=r.match(lz),a;if(i){var l="aes"+i[1],c=su.from(i[2],"hex"),d=su.from(i[3].replace(/[\r\n]/g,""),"base64"),m=cz(t,c.slice(0,8),parseInt(i[1],10)).key,M=[],S=dz.createDecipheriv(l,m,c);M.push(S.update(d)),M.push(S.final()),a=su.concat(M)}else{var n=r.match(hz);a=su.from(n[2].replace(/[\r\n]/g,""),"base64")}var R=r.match(uz)[1];return{tag:R,data:a}},qr=Vi,vz=fz,gz=pz,mz=ei,yz=cc,cv=vt.Buffer,Cc=fE;function fE(e){var t;typeof e=="object"&&!cv.isBuffer(e)&&(t=e.passphrase,e=e.key),typeof e=="string"&&(e=cv.from(e));var r=gz(e,t),i=r.tag,a=r.data,n,l;switch(i){case"CERTIFICATE":l=qr.certificate.decode(a,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(l||(l=qr.PublicKey.decode(a,"der")),n=l.algorithm.algorithm.join("."),n){case"1.2.840.113549.1.1.1":return qr.RSAPublicKey.decode(l.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return l.subjectPrivateKey=l.subjectPublicKey,{type:"ec",data:l};case"1.2.840.10040.4.1":return l.algorithm.params.pub_key=qr.DSAparam.decode(l.subjectPublicKey.data,"der"),{type:"dsa",data:l.algorithm.params};default:throw new Error("unknown key id "+n)}case"ENCRYPTED PRIVATE KEY":a=qr.EncryptedPrivateKey.decode(a,"der"),a=bz(a,t);case"PRIVATE KEY":switch(l=qr.PrivateKey.decode(a,"der"),n=l.algorithm.algorithm.join("."),n){case"1.2.840.113549.1.1.1":return qr.RSAPrivateKey.decode(l.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:l.algorithm.curve,privateKey:qr.ECPrivateKey.decode(l.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return l.algorithm.params.priv_key=qr.DSAparam.decode(l.subjectPrivateKey,"der"),{type:"dsa",params:l.algorithm.params};default:throw new Error("unknown key id "+n)}case"RSA PUBLIC KEY":return qr.RSAPublicKey.decode(a,"der");case"RSA PRIVATE KEY":return qr.RSAPrivateKey.decode(a,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:qr.DSAPrivateKey.decode(a,"der")};case"EC PRIVATE KEY":return a=qr.ECPrivateKey.decode(a,"der"),{curve:a.parameters.value,privateKey:a.privateKey};default:throw new Error("unknown key type "+i)}}fE.signature=qr.signature;function bz(e,t){var r=e.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),a=vz[e.algorithm.decrypt.cipher.algo.join(".")],n=e.algorithm.decrypt.cipher.iv,l=e.subjectPrivateKey,c=parseInt(a.split("-")[1],10)/8,d=yz.pbkdf2Sync(t,r,i,c,"sha1"),m=mz.createDecipheriv(a,d,n),M=[];return M.push(m.update(l)),M.push(m.final()),cv.concat(M)}const lE={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"};var o2;function wz(){if(o2)return xf.exports;o2=1;var e=vt.Buffer,t=Mx,r=em,i=am().ec,a=Qg,n=Cc,l=lE,c=1;function d(P,C,j,$,K){var G=n(C);if(G.curve){if($!=="ecdsa"&&$!=="ecdsa/rsa")throw new Error("wrong private key type");return m(P,G)}else if(G.type==="dsa"){if($!=="dsa")throw new Error("wrong private key type");return M(P,G,j)}if($!=="rsa"&&$!=="ecdsa/rsa")throw new Error("wrong private key type");if(C.padding!==void 0&&C.padding!==c)throw new Error("illegal or unsupported padding mode");P=e.concat([K,P]);for(var te=G.modulus.byteLength(),Q=[0,1];P.length+Q.length+1<te;)Q.push(255);Q.push(0);for(var W=-1;++W<P.length;)Q.push(P[W]);var ce=r(Q,G);return ce}function m(P,C){var j=l[C.curve.join(".")];if(!j)throw new Error("unknown curve "+C.curve.join("."));var $=new i(j),K=$.keyFromPrivate(C.privateKey),G=K.sign(P);return e.from(G.toDER())}function M(P,C,j){for(var $=C.params.priv_key,K=C.params.p,G=C.params.q,te=C.params.g,Q=new a(0),W,ce=I(P,G).mod(G),_=!1,o=R($,G,P,j);_===!1;)W=B(G,o,j),Q=L(te,W,K,G),_=W.invm(G).imul(ce.add($.mul(Q))).mod(G),_.cmpn(0)===0&&(_=!1,Q=new a(0));return S(Q,_)}function S(P,C){P=P.toArray(),C=C.toArray(),P[0]&128&&(P=[0].concat(P)),C[0]&128&&(C=[0].concat(C));var j=P.length+C.length+4,$=[48,j,2,P.length];return $=$.concat(P,[2,C.length],C),e.from($)}function R(P,C,j,$){if(P=e.from(P.toArray()),P.length<C.byteLength()){var K=e.alloc(C.byteLength()-P.length);P=e.concat([K,P])}var G=j.length,te=O(j,C),Q=e.alloc(G);Q.fill(1);var W=e.alloc(G);return W=t($,W).update(Q).update(e.from([0])).update(P).update(te).digest(),Q=t($,W).update(Q).digest(),W=t($,W).update(Q).update(e.from([1])).update(P).update(te).digest(),Q=t($,W).update(Q).digest(),{k:W,v:Q}}function I(P,C){var j=new a(P),$=(P.length<<3)-C.bitLength();return $>0&&j.ishrn($),j}function O(P,C){P=I(P,C),P=P.mod(C);var j=e.from(P.toArray());if(j.length<C.byteLength()){var $=e.alloc(C.byteLength()-j.length);j=e.concat([$,j])}return j}function B(P,C,j){var $,K;do{for($=e.alloc(0);$.length*8<P.bitLength();)C.v=t(j,C.k).update(C.v).digest(),$=e.concat([$,C.v]);K=I($,P),C.k=t(j,C.k).update(C.v).update(e.from([0])).digest(),C.v=t(j,C.k).update(C.v).digest()}while(K.cmp(P)!==-1);return K}function L(P,C,j,$){return P.toRed(a.mont(j)).redPow(C).fromRed().mod($)}return xf.exports=d,xf.exports.getKey=R,xf.exports.makeKey=B,xf.exports}var $0,a2;function _z(){if(a2)return $0;a2=1;var e=vt.Buffer,t=Qg,r=am().ec,i=Cc,a=lE;function n(m,M,S,R,I){var O=i(S);if(O.type==="ec"){if(R!=="ecdsa"&&R!=="ecdsa/rsa")throw new Error("wrong public key type");return l(m,M,O)}else if(O.type==="dsa"){if(R!=="dsa")throw new Error("wrong public key type");return c(m,M,O)}if(R!=="rsa"&&R!=="ecdsa/rsa")throw new Error("wrong public key type");M=e.concat([I,M]);for(var B=O.modulus.byteLength(),L=[1],P=0;M.length+L.length+2<B;)L.push(255),P+=1;L.push(0);for(var C=-1;++C<M.length;)L.push(M[C]);L=e.from(L);var j=t.mont(O.modulus);m=new t(m).toRed(j),m=m.redPow(new t(O.publicExponent)),m=e.from(m.fromRed().toArray());var $=P<8?1:0;for(B=Math.min(m.length,L.length),m.length!==L.length&&($=1),C=-1;++C<B;)$|=m[C]^L[C];return $===0}function l(m,M,S){var R=a[S.data.algorithm.curve.join(".")];if(!R)throw new Error("unknown curve "+S.data.algorithm.curve.join("."));var I=new r(R),O=S.data.subjectPrivateKey.data;return I.verify(M,m,O)}function c(m,M,S){var R=S.data.p,I=S.data.q,O=S.data.g,B=S.data.pub_key,L=i.signature.decode(m,"der"),P=L.s,C=L.r;d(P,I),d(C,I);var j=t.mont(R),$=P.invm(I),K=O.toRed(j).redPow(new t(M).mul($).mod(I)).fromRed().mul(B.toRed(j).redPow(C.mul($).mod(I)).fromRed()).mod(R).mod(I);return K.cmp(C)===0}function d(m,M){if(m.cmpn(0)<=0)throw new Error("invalid sig");if(m.cmp(M)>=0)throw new Error("invalid sig")}return $0=n,$0}var D0,s2;function Mz(){if(s2)return D0;s2=1;var e=vt.Buffer,t=Cl,r=hW,i=Ye,a=wz(),n=_z(),l=Sx;Object.keys(l).forEach(function(S){l[S].id=e.from(l[S].id,"hex"),l[S.toLowerCase()]=l[S]});function c(S){r.Writable.call(this);var R=l[S];if(!R)throw new Error("Unknown message digest");this._hashType=R.hash,this._hash=t(R.hash),this._tag=R.id,this._signType=R.sign}i(c,r.Writable),c.prototype._write=function(R,I,O){this._hash.update(R),O()},c.prototype.update=function(R,I){return this._hash.update(typeof R=="string"?e.from(R,I):R),this},c.prototype.sign=function(R,I){this.end();var O=this._hash.digest(),B=a(O,R,this._hashType,this._signType,this._tag);return I?B.toString(I):B};function d(S){r.Writable.call(this);var R=l[S];if(!R)throw new Error("Unknown message digest");this._hash=t(R.hash),this._tag=R.id,this._signType=R.sign}i(d,r.Writable),d.prototype._write=function(R,I,O){this._hash.update(R),O()},d.prototype.update=function(R,I){return this._hash.update(typeof R=="string"?e.from(R,I):R),this},d.prototype.verify=function(R,I,O){var B=typeof I=="string"?e.from(I,O):I;this.end();var L=this._hash.digest();return n(B,L,R,this._signType,this._tag)};function m(S){return new c(S)}function M(S){return new d(S)}return D0={Sign:m,Verify:M,createSign:m,createVerify:M},D0}var bm={exports:{}};bm.exports;(function(e){(function(t,r){function i(_,o){if(!_)throw new Error(o||"Assertion failed")}function a(_,o){_.super_=o;var f=function(){};f.prototype=o.prototype,_.prototype=new f,_.prototype.constructor=_}function n(_,o,f){if(n.isBN(_))return _;this.negative=0,this.words=null,this.length=0,this.red=null,_!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(_||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=ke.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var h=0;o[0]==="-"&&(h++,this.negative=1),h<o.length&&(f===16?this._parseHex(o,h,u):(this._parseBase(o,f,h),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p,w,x=0;if(u==="be")for(h=o.length-1,p=0;h>=0;h-=3)w=o[h]|o[h-1]<<8|o[h-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(h=0,p=0;h<o.length;h+=3)w=o[h]|o[h+1]<<8|o[h+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function c(_,o){var f=_.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(_,o,f){var u=c(_,f);return f-1>=o&&(u|=c(_,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p=0,w=0,x;if(u==="be")for(h=o.length-1;h>=f;h-=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(h=g%2===0?f+1:f;h<o.length;h+=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(_,o,f,u){for(var h=0,p=Math.min(_.length,f),w=o;w<p;w++){var x=_.charCodeAt(w)-48;h*=u,x>=49?h+=x-49+10:x>=17?h+=x-17+10:h+=x}return h}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var h=0,p=1;p<=67108863;p*=f)h++;h--,p=p/f|0;for(var w=o.length-u,x=w%h,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=h)s=m(o,v,v+h,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var M=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var h=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<h|p)&16777215).toString(16);p=x>>>24-h&16777215,p!==0||w!==this.length-1?u=M[6-g.length]+g+u:u=g+u,h+=2,h>=26&&(h-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var k=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=k+u:u=M[s-k.length]+k+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var h=this.byteLength(),p=u||Math.max(1,h);i(h<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-h;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(_){for(var o=new Array(_.bitLength()),f=0;f<o.length;f++){var u=f/26|0,h=f%26;o[f]=(_.words[u]&1<<h)>>>h}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var h=0;h<u.length;h++)this.words[h]=f.words[h]^u.words[h];if(this!==f)for(;h<f.length;h++)this.words[h]=f.words[h];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var h=0;h<f;h++)this.words[h]=~this.words[h]&67108863;return u>0&&(this.words[h]=~this.words[h]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,h=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<h:this.words[u]=this.words[u]&~(1<<h),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,h;this.length>o.length?(u=this,h=o):(u=o,h=this);for(var p=0,w=0;w<h.length;w++)f=(u.words[w]|0)+(h.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var h,p;u>0?(h=this,p=o):(h=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(h.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<h.length;x++)f=(h.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<h.length&&h!==this)for(;x<h.length;x++)this.words[x]=h.words[x];return this.length=Math.max(this.length,x),h!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(_,o,f){f.negative=o.negative^_.negative;var u=_.length+o.length|0;f.length=u,u=u-1|0;var h=_.words[0]|0,p=o.words[0]|0,w=h*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,k=Math.min(s,o.length-1),Y=Math.max(0,s-_.length+1);Y<=k;Y++){var ee=s-Y|0;h=_.words[ee]|0,p=o.words[Y]|0,w=h*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var B=function(o,f,u){var h=o.words,p=f.words,w=u.words,x=0,g,s,v,T=h[0]|0,k=T&8191,Y=T>>>13,ee=h[1]|0,A=ee&8191,E=ee>>>13,q=h[2]|0,V=q&8191,X=q>>>13,b=h[3]|0,y=b&8191,D=b>>>13,U=h[4]|0,Z=U&8191,F=U>>>13,N=h[5]|0,H=N&8191,z=N>>>13,fe=h[6]|0,re=fe&8191,ae=fe>>>13,be=h[7]|0,J=be&8191,le=be>>>13,se=h[8]|0,ue=se&8191,de=se>>>13,ve=h[9]|0,ie=ve&8191,oe=ve>>>13,Ae=p[0]|0,pe=Ae&8191,Se=Ae>>>13,Ke=p[1]|0,we=Ke&8191,xe=Ke>>>13,qe=p[2]|0,ye=qe&8191,Me=qe>>>13,Ve=p[3]|0,ge=Ve&8191,Ee=Ve>>>13,Je=p[4]|0,Re=Je&8191,Le=Je>>>13,at=p[5]|0,Te=at&8191,Ne=at>>>13,rt=p[6]|0,Oe=rt&8191,De=rt>>>13,nt=p[7]|0,Ie=nt&8191,$e=nt>>>13,st=p[8]|0,Pe=st&8191,je=st>>>13,ht=p[9]|0,Ce=ht&8191,Fe=ht>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(k,pe),s=Math.imul(k,Se),s=s+Math.imul(Y,pe)|0,v=Math.imul(Y,Se);var it=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(it>>>26)|0,it&=67108863,g=Math.imul(A,pe),s=Math.imul(A,Se),s=s+Math.imul(E,pe)|0,v=Math.imul(E,Se),g=g+Math.imul(k,we)|0,s=s+Math.imul(k,xe)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,xe)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,pe),s=Math.imul(V,Se),s=s+Math.imul(X,pe)|0,v=Math.imul(X,Se),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,xe)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,xe)|0,g=g+Math.imul(k,ye)|0,s=s+Math.imul(k,Me)|0,s=s+Math.imul(Y,ye)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,pe),s=Math.imul(y,Se),s=s+Math.imul(D,pe)|0,v=Math.imul(D,Se),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,xe)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,xe)|0,g=g+Math.imul(A,ye)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ye)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(k,ge)|0,s=s+Math.imul(k,Ee)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Ee)|0;var Ot=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,g=Math.imul(Z,pe),s=Math.imul(Z,Se),s=s+Math.imul(F,pe)|0,v=Math.imul(F,Se),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,xe)|0,s=s+Math.imul(D,we)|0,v=v+Math.imul(D,xe)|0,g=g+Math.imul(V,ye)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ye)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Ee)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Ee)|0,g=g+Math.imul(k,Re)|0,s=s+Math.imul(k,Le)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Le)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(H,pe),s=Math.imul(H,Se),s=s+Math.imul(z,pe)|0,v=Math.imul(z,Se),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,xe)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,xe)|0,g=g+Math.imul(y,ye)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(D,ye)|0,v=v+Math.imul(D,Me)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Ee)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Ee)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Le)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Le)|0,g=g+Math.imul(k,Te)|0,s=s+Math.imul(k,Ne)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,Ne)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(re,pe),s=Math.imul(re,Se),s=s+Math.imul(ae,pe)|0,v=Math.imul(ae,Se),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,xe)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,xe)|0,g=g+Math.imul(Z,ye)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(F,ye)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Ee)|0,s=s+Math.imul(D,ge)|0,v=v+Math.imul(D,Ee)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Le)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Le)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(k,Oe)|0,s=s+Math.imul(k,De)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,De)|0;var kt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(kt>>>26)|0,kt&=67108863,g=Math.imul(J,pe),s=Math.imul(J,Se),s=s+Math.imul(le,pe)|0,v=Math.imul(le,Se),g=g+Math.imul(re,we)|0,s=s+Math.imul(re,xe)|0,s=s+Math.imul(ae,we)|0,v=v+Math.imul(ae,xe)|0,g=g+Math.imul(H,ye)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ye)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Ee)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Ee)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Le)|0,s=s+Math.imul(D,Re)|0,v=v+Math.imul(D,Le)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(k,Ie)|0,s=s+Math.imul(k,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Ut=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,g=Math.imul(ue,pe),s=Math.imul(ue,Se),s=s+Math.imul(de,pe)|0,v=Math.imul(de,Se),g=g+Math.imul(J,we)|0,s=s+Math.imul(J,xe)|0,s=s+Math.imul(le,we)|0,v=v+Math.imul(le,xe)|0,g=g+Math.imul(re,ye)|0,s=s+Math.imul(re,Me)|0,s=s+Math.imul(ae,ye)|0,v=v+Math.imul(ae,Me)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Ee)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Ee)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Le)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Le)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(D,Te)|0,v=v+Math.imul(D,Ne)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0,g=g+Math.imul(k,Pe)|0,s=s+Math.imul(k,je)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,je)|0;var Ht=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,g=Math.imul(ie,pe),s=Math.imul(ie,Se),s=s+Math.imul(oe,pe)|0,v=Math.imul(oe,Se),g=g+Math.imul(ue,we)|0,s=s+Math.imul(ue,xe)|0,s=s+Math.imul(de,we)|0,v=v+Math.imul(de,xe)|0,g=g+Math.imul(J,ye)|0,s=s+Math.imul(J,Me)|0,s=s+Math.imul(le,ye)|0,v=v+Math.imul(le,Me)|0,g=g+Math.imul(re,ge)|0,s=s+Math.imul(re,Ee)|0,s=s+Math.imul(ae,ge)|0,v=v+Math.imul(ae,Ee)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Le)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Le)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(D,Oe)|0,v=v+Math.imul(D,De)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(k,Ce)|0,s=s+Math.imul(k,Fe)|0,s=s+Math.imul(Y,Ce)|0,v=v+Math.imul(Y,Fe)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,xe),s=s+Math.imul(oe,we)|0,v=Math.imul(oe,xe),g=g+Math.imul(ue,ye)|0,s=s+Math.imul(ue,Me)|0,s=s+Math.imul(de,ye)|0,v=v+Math.imul(de,Me)|0,g=g+Math.imul(J,ge)|0,s=s+Math.imul(J,Ee)|0,s=s+Math.imul(le,ge)|0,v=v+Math.imul(le,Ee)|0,g=g+Math.imul(re,Re)|0,s=s+Math.imul(re,Le)|0,s=s+Math.imul(ae,Re)|0,v=v+Math.imul(ae,Le)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(D,Ie)|0,v=v+Math.imul(D,$e)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ce)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Ce)|0,v=v+Math.imul(E,Fe)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ye),s=Math.imul(ie,Me),s=s+Math.imul(oe,ye)|0,v=Math.imul(oe,Me),g=g+Math.imul(ue,ge)|0,s=s+Math.imul(ue,Ee)|0,s=s+Math.imul(de,ge)|0,v=v+Math.imul(de,Ee)|0,g=g+Math.imul(J,Re)|0,s=s+Math.imul(J,Le)|0,s=s+Math.imul(le,Re)|0,v=v+Math.imul(le,Le)|0,g=g+Math.imul(re,Te)|0,s=s+Math.imul(re,Ne)|0,s=s+Math.imul(ae,Te)|0,v=v+Math.imul(ae,Ne)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(D,Pe)|0,v=v+Math.imul(D,je)|0,g=g+Math.imul(V,Ce)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Ce)|0,v=v+Math.imul(X,Fe)|0;var At=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(At>>>26)|0,At&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Ee),s=s+Math.imul(oe,ge)|0,v=Math.imul(oe,Ee),g=g+Math.imul(ue,Re)|0,s=s+Math.imul(ue,Le)|0,s=s+Math.imul(de,Re)|0,v=v+Math.imul(de,Le)|0,g=g+Math.imul(J,Te)|0,s=s+Math.imul(J,Ne)|0,s=s+Math.imul(le,Te)|0,v=v+Math.imul(le,Ne)|0,g=g+Math.imul(re,Oe)|0,s=s+Math.imul(re,De)|0,s=s+Math.imul(ae,Oe)|0,v=v+Math.imul(ae,De)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(y,Ce)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(D,Ce)|0,v=v+Math.imul(D,Fe)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Le),s=s+Math.imul(oe,Re)|0,v=Math.imul(oe,Le),g=g+Math.imul(ue,Te)|0,s=s+Math.imul(ue,Ne)|0,s=s+Math.imul(de,Te)|0,v=v+Math.imul(de,Ne)|0,g=g+Math.imul(J,Oe)|0,s=s+Math.imul(J,De)|0,s=s+Math.imul(le,Oe)|0,v=v+Math.imul(le,De)|0,g=g+Math.imul(re,Ie)|0,s=s+Math.imul(re,$e)|0,s=s+Math.imul(ae,Ie)|0,v=v+Math.imul(ae,$e)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ce)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(F,Ce)|0,v=v+Math.imul(F,Fe)|0;var yt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(yt>>>26)|0,yt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,Ne),s=s+Math.imul(oe,Te)|0,v=Math.imul(oe,Ne),g=g+Math.imul(ue,Oe)|0,s=s+Math.imul(ue,De)|0,s=s+Math.imul(de,Oe)|0,v=v+Math.imul(de,De)|0,g=g+Math.imul(J,Ie)|0,s=s+Math.imul(J,$e)|0,s=s+Math.imul(le,Ie)|0,v=v+Math.imul(le,$e)|0,g=g+Math.imul(re,Pe)|0,s=s+Math.imul(re,je)|0,s=s+Math.imul(ae,Pe)|0,v=v+Math.imul(ae,je)|0,g=g+Math.imul(H,Ce)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Ce)|0,v=v+Math.imul(z,Fe)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,De),s=s+Math.imul(oe,Oe)|0,v=Math.imul(oe,De),g=g+Math.imul(ue,Ie)|0,s=s+Math.imul(ue,$e)|0,s=s+Math.imul(de,Ie)|0,v=v+Math.imul(de,$e)|0,g=g+Math.imul(J,Pe)|0,s=s+Math.imul(J,je)|0,s=s+Math.imul(le,Pe)|0,v=v+Math.imul(le,je)|0,g=g+Math.imul(re,Ce)|0,s=s+Math.imul(re,Fe)|0,s=s+Math.imul(ae,Ce)|0,v=v+Math.imul(ae,Fe)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(oe,Ie)|0,v=Math.imul(oe,$e),g=g+Math.imul(ue,Pe)|0,s=s+Math.imul(ue,je)|0,s=s+Math.imul(de,Pe)|0,v=v+Math.imul(de,je)|0,g=g+Math.imul(J,Ce)|0,s=s+Math.imul(J,Fe)|0,s=s+Math.imul(le,Ce)|0,v=v+Math.imul(le,Fe)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,je),s=s+Math.imul(oe,Pe)|0,v=Math.imul(oe,je),g=g+Math.imul(ue,Ce)|0,s=s+Math.imul(ue,Fe)|0,s=s+Math.imul(de,Ce)|0,v=v+Math.imul(de,Fe)|0;var $t=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+($t>>>26)|0,$t&=67108863,g=Math.imul(ie,Ce),s=Math.imul(ie,Fe),s=s+Math.imul(oe,Ce)|0,v=Math.imul(oe,Fe);var Dt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,w[0]=it,w[1]=et,w[2]=Et,w[3]=Ot,w[4]=It,w[5]=Bt,w[6]=kt,w[7]=Ut,w[8]=Ht,w[9]=Lt,w[10]=dt,w[11]=At,w[12]=Mt,w[13]=yt,w[14]=Pt,w[15]=gt,w[16]=bt,w[17]=$t,w[18]=Dt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(B=O);function L(_,o,f){f.negative=o.negative^_.negative,f.length=_.length+o.length;for(var u=0,h=0,p=0;p<f.length-1;p++){var w=h;h=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-_.length+1);s<=g;s++){var v=p-s,T=_.words[v]|0,k=o.words[s]|0,Y=T*k,ee=Y&67108863;w=w+(Y/67108864|0)|0,ee=ee+x|0,x=ee&67108863,w=w+(ee>>>26)|0,h+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=h}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(_,o,f){var u=new C;return u.mulp(_,o,f)}n.prototype.mulTo=function(o,f){var u,h=this.length+o.length;return this.length===10&&o.length===10?u=B(this,o,f):h<63?u=O(this,o,f):h<1024?u=L(this,o,f):u=P(this,o,f),u};function C(_,o){this.x=_,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,h=0;h<o;h++)f[h]=this.revBin(h,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var h=0,p=0;p<f;p++)h|=(o&1)<<f-p-1,o>>=1;return h},C.prototype.permute=function(o,f,u,h,p,w){for(var x=0;x<w;x++)h[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,h,p,w){this.permute(w,o,f,u,h,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var k=s,Y=v,ee=0;ee<x;ee++){var A=u[T+ee],E=h[T+ee],q=u[T+ee+x],V=h[T+ee+x],X=k*q-Y*V;V=k*V+Y*q,q=X,u[T+ee]=A+q,h[T+ee]=E+V,u[T+ee+x]=A-q,h[T+ee+x]=E-V,ee!==g&&(X=s*k-v*Y,Y=s*Y+v*k,k=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,h=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+h},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var h=0;h<u/2;h++){var p=o[h];o[h]=o[u-h-1],o[u-h-1]=p,p=f[h],f[h]=-f[u-h-1],f[u-h-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,h=0;h<f/2;h++){var p=Math.round(o[2*h+1]/f)*8192+Math.round(o[2*h]/f)+u;o[h]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,h){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<h;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var h=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(h),w=this.stub(h),x=new Array(h),g=new Array(h),s=new Array(h),v=new Array(h),T=new Array(h),k=new Array(h),Y=u.words;Y.length=h,this.convert13b(o.words,o.length,x,h),this.convert13b(f.words,f.length,v,h),this.transform(x,w,g,s,h,p),this.transform(v,w,T,k,h,p);for(var ee=0;ee<h;ee++){var A=g[ee]*T[ee]-s[ee]*k[ee];s[ee]=g[ee]*k[ee]+s[ee]*T[ee],g[ee]=A}return this.conjugate(g,s,h),this.transform(g,s,Y,w,h,p),this.conjugate(Y,w,h),this.normalize13b(Y,h),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var h=(this.words[u]|0)*o,p=(h&67108863)+(f&67108863);f>>=26,f+=h/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,h=0;h<f.length&&f[h]===0;h++,u=u.sqr());if(++h<f.length)for(var p=u.sqr();h<f.length;h++,p=p.sqr())f[h]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&h,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var h;f?h=(f-f%26)/26:h=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(h-=w,h=Math.max(0,h),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=h);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&h)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var h=67108863^67108863>>>f<<f;this.words[this.length-1]&=h}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var h=o.length+u,p;this._expand(h);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,h=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),h.iushln(u),w=p.words[p.length-1]|0);var g=h.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=h.clone()._ishlnsubmul(p,1,g);T.negative===0&&(h=T,s&&(s.words[g]=1));for(var k=g-1;k>=0;k--){var Y=(h.words[p.length+k]|0)*67108864+(h.words[p.length+k-1]|0);for(Y=Math.min(Y/w|0,67108863),h._ishlnsubmul(p,Y,k);h.negative!==0;)Y--,h.negative=0,h._ishlnsubmul(p,1,k),h.isZero()||(h.negative^=1);s&&(s.words[k]=Y)}return s&&s.strip(),h.strip(),f!=="div"&&u!==0&&h.iushrn(u),{div:s||null,mod:h}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var h,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(h=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:h,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(h=w.div.neg()),{div:h,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,h=o.ushrn(1),p=o.andln(1),w=u.cmp(h);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,h=this.length-1;h>=0;h--)u=(f*u+(this.words[h]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var h=(this.words[u]|0)+f*67108864;this.words[u]=h/o|0,f=h%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,k=1;!(f.words[0]&k)&&T<26;++T,k<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(h.isOdd()||p.isOdd())&&(h.iadd(s),p.isub(v)),h.iushrn(1),p.iushrn(1);for(var Y=0,ee=1;!(u.words[0]&ee)&&Y<26;++Y,ee<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(w),p.isub(x)):(u.isub(f),w.isub(h),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)h.isOdd()&&h.iadd(w),h.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(p)):(u.isub(f),p.isub(h))}var T;return f.cmpn(1)===0?T=h:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var h=0;f.isEven()&&u.isEven();h++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(h)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=h,this;for(var p=h,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var h=this.words[0]|0;u=h===o?0:h<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var h=this.words[u]|0,p=o.words[u]|0;if(h!==p){h<p?f=-1:h>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new W(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var j={k256:null,p224:null,p192:null,p25519:null};function $(_,o){this.name=_,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var h=u<this.n?-1:f.ucmp(this.p);return h===0?(f.words[0]=0,f.length=1):h>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function K(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(K,$),K.prototype.split=function(o,f){for(var u=4194303,h=Math.min(o.length,9),p=0;p<h;p++)f.words[p]=o.words[p];if(f.length=h,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},K.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var h=o.words[u]|0;f+=h*977,o.words[u]=f&67108863,f=h*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function te(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(te,$);function Q(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(Q,$),Q.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var h=(o.words[u]|0)*19+f,p=h&67108863;h>>>=26,o.words[u]=p,f=h}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(j[o])return j[o];var f;if(o==="k256")f=new K;else if(o==="p224")f=new G;else if(o==="p192")f=new te;else if(o==="p25519")f=new Q;else throw new Error("Unknown prime "+o);return j[o]=f,f};function W(_){if(typeof _=="string"){var o=n._prime(_);this.m=o.p,this.prime=o}else i(_.gtn(1),"modulus must be greater than 1"),this.m=_,this.prime=null}W.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},W.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},W.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},W.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},W.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},W.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},W.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},W.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},W.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},W.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},W.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},W.prototype.isqr=function(o){return this.imul(o,o.clone())},W.prototype.sqr=function(o){return this.mul(o,o)},W.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var h=this.m.subn(1),p=0;!h.isZero()&&h.andln(1)===0;)p++,h.iushrn(1);i(!h.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,h),T=this.pow(o,h.addn(1).iushrn(1)),k=this.pow(o,h),Y=p;k.cmp(w)!==0;){for(var ee=k,A=0;ee.cmp(w)!==0;A++)ee=ee.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),k=k.redMul(v),Y=A}return T},W.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},W.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,h=new Array(1<<u);h[0]=new n(1).toRed(this),h[1]=o;for(var p=2;p<h.length;p++)h[p]=this.mul(h[p-1],o);var w=h[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var k=v>>T&1;if(w!==h[0]&&(w=this.sqr(w)),k===0&&x===0){g=0;continue}x<<=1,x|=k,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,h[x]),g=0,x=0)}s=26}return w},W.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},W.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new ce(o)};function ce(_){W.call(this,_),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(ce,W),ce.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},ce.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},ce.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(bm);var Sz=bm.exports,F0,f2;function xz(){if(f2)return F0;f2=1;var e=am(),t=Sz;F0=function(l){return new i(l)};var r={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};r.p224=r.secp224r1,r.p256=r.secp256r1=r.prime256v1,r.p192=r.secp192r1=r.prime192v1,r.p384=r.secp384r1,r.p521=r.secp521r1;function i(n){this.curveType=r[n],this.curveType||(this.curveType={name:n}),this.curve=new e.ec(this.curveType.name),this.keys=void 0}i.prototype.generateKeys=function(n,l){return this.keys=this.curve.genKeyPair(),this.getPublicKey(n,l)},i.prototype.computeSecret=function(n,l,c){l=l||"utf8",ke.Buffer.isBuffer(n)||(n=new ke.Buffer(n,l));var d=this.curve.keyFromPublic(n).getPublic(),m=d.mul(this.keys.getPrivate()).getX();return a(m,c,this.curveType.byteLength)},i.prototype.getPublicKey=function(n,l){var c=this.keys.getPublic(l==="compressed",!0);return l==="hybrid"&&(c[c.length-1]%2?c[0]=7:c[0]=6),a(c,n)},i.prototype.getPrivateKey=function(n){return a(this.keys.getPrivate(),n)},i.prototype.setPublicKey=function(n,l){return l=l||"utf8",ke.Buffer.isBuffer(n)||(n=new ke.Buffer(n,l)),this.keys._importPublic(n),this},i.prototype.setPrivateKey=function(n,l){l=l||"utf8",ke.Buffer.isBuffer(n)||(n=new ke.Buffer(n,l));var c=new t(n);return c=c.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(c),this};function a(n,l,c){Array.isArray(n)||(n=n.toArray());var d=new ke.Buffer(n);if(c&&d.length<c){var m=new ke.Buffer(c-d.length);m.fill(0),d=ke.Buffer.concat([m,d])}return l?d.toString(l):d}return F0}var uE={},Ez=Cl,dv=vt.Buffer,hE=function(e,t){for(var r=dv.alloc(0),i=0,a;r.length<t;)a=Rz(i++),r=dv.concat([r,Ez("sha1").update(e).update(a).digest()]);return r.slice(0,t)};function Rz(e){var t=dv.allocUnsafe(4);return t.writeUInt32BE(e,0),t}var cE=function(t,r){for(var i=t.length,a=-1;++a<i;)t[a]^=r[a];return t},wm={exports:{}};wm.exports;(function(e){(function(t,r){function i(_,o){if(!_)throw new Error(o||"Assertion failed")}function a(_,o){_.super_=o;var f=function(){};f.prototype=o.prototype,_.prototype=new f,_.prototype.constructor=_}function n(_,o,f){if(n.isBN(_))return _;this.negative=0,this.words=null,this.length=0,this.red=null,_!==null&&((o==="le"||o==="be")&&(f=o,o=10),this._init(_||0,o||10,f||"be"))}typeof t=="object"?t.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var l;try{typeof window<"u"&&typeof window.Buffer<"u"?l=window.Buffer:l=ke.Buffer}catch{}n.isBN=function(o){return o instanceof n?!0:o!==null&&typeof o=="object"&&o.constructor.wordSize===n.wordSize&&Array.isArray(o.words)},n.max=function(o,f){return o.cmp(f)>0?o:f},n.min=function(o,f){return o.cmp(f)<0?o:f},n.prototype._init=function(o,f,u){if(typeof o=="number")return this._initNumber(o,f,u);if(typeof o=="object")return this._initArray(o,f,u);f==="hex"&&(f=16),i(f===(f|0)&&f>=2&&f<=36),o=o.toString().replace(/\s+/g,"");var h=0;o[0]==="-"&&(h++,this.negative=1),h<o.length&&(f===16?this._parseHex(o,h,u):(this._parseBase(o,f,h),u==="le"&&this._initArray(this.toArray(),f,u)))},n.prototype._initNumber=function(o,f,u){o<0&&(this.negative=1,o=-o),o<67108864?(this.words=[o&67108863],this.length=1):o<4503599627370496?(this.words=[o&67108863,o/67108864&67108863],this.length=2):(i(o<9007199254740992),this.words=[o&67108863,o/67108864&67108863,1],this.length=3),u==="le"&&this._initArray(this.toArray(),f,u)},n.prototype._initArray=function(o,f,u){if(i(typeof o.length=="number"),o.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(o.length/3),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p,w,x=0;if(u==="be")for(h=o.length-1,p=0;h>=0;h-=3)w=o[h]|o[h-1]<<8|o[h-2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);else if(u==="le")for(h=0,p=0;h<o.length;h+=3)w=o[h]|o[h+1]<<8|o[h+2]<<16,this.words[p]|=w<<x&67108863,this.words[p+1]=w>>>26-x&67108863,x+=24,x>=26&&(x-=26,p++);return this.strip()};function c(_,o){var f=_.charCodeAt(o);return f>=65&&f<=70?f-55:f>=97&&f<=102?f-87:f-48&15}function d(_,o,f){var u=c(_,f);return f-1>=o&&(u|=c(_,f-1)<<4),u}n.prototype._parseHex=function(o,f,u){this.length=Math.ceil((o.length-f)/6),this.words=new Array(this.length);for(var h=0;h<this.length;h++)this.words[h]=0;var p=0,w=0,x;if(u==="be")for(h=o.length-1;h>=f;h-=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8;else{var g=o.length-f;for(h=g%2===0?f+1:f;h<o.length;h+=2)x=d(o,f,h)<<p,this.words[w]|=x&67108863,p>=18?(p-=18,w+=1,this.words[w]|=x>>>26):p+=8}this.strip()};function m(_,o,f,u){for(var h=0,p=Math.min(_.length,f),w=o;w<p;w++){var x=_.charCodeAt(w)-48;h*=u,x>=49?h+=x-49+10:x>=17?h+=x-17+10:h+=x}return h}n.prototype._parseBase=function(o,f,u){this.words=[0],this.length=1;for(var h=0,p=1;p<=67108863;p*=f)h++;h--,p=p/f|0;for(var w=o.length-u,x=w%h,g=Math.min(w,w-x)+u,s=0,v=u;v<g;v+=h)s=m(o,v,v+h,f),this.imuln(p),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(x!==0){var T=1;for(s=m(o,v,o.length,f),v=0;v<x;v++)T*=f;this.imuln(T),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}this.strip()},n.prototype.copy=function(o){o.words=new Array(this.length);for(var f=0;f<this.length;f++)o.words[f]=this.words[f];o.length=this.length,o.negative=this.negative,o.red=this.red},n.prototype.clone=function(){var o=new n(null);return this.copy(o),o},n.prototype._expand=function(o){for(;this.length<o;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var M=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],R=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(o,f){o=o||10,f=f|0||1;var u;if(o===16||o==="hex"){u="";for(var h=0,p=0,w=0;w<this.length;w++){var x=this.words[w],g=((x<<h|p)&16777215).toString(16);p=x>>>24-h&16777215,p!==0||w!==this.length-1?u=M[6-g.length]+g+u:u=g+u,h+=2,h>=26&&(h-=26,w--)}for(p!==0&&(u=p.toString(16)+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}if(o===(o|0)&&o>=2&&o<=36){var s=S[o],v=R[o];u="";var T=this.clone();for(T.negative=0;!T.isZero();){var k=T.modn(v).toString(o);T=T.idivn(v),T.isZero()?u=k+u:u=M[s-k.length]+k+u}for(this.isZero()&&(u="0"+u);u.length%f!==0;)u="0"+u;return this.negative!==0&&(u="-"+u),u}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var o=this.words[0];return this.length===2?o+=this.words[1]*67108864:this.length===3&&this.words[2]===1?o+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-o:o},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(o,f){return i(typeof l<"u"),this.toArrayLike(l,o,f)},n.prototype.toArray=function(o,f){return this.toArrayLike(Array,o,f)},n.prototype.toArrayLike=function(o,f,u){var h=this.byteLength(),p=u||Math.max(1,h);i(h<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0"),this.strip();var w=f==="le",x=new o(p),g,s,v=this.clone();if(w){for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[s]=g;for(;s<p;s++)x[s]=0}else{for(s=0;s<p-h;s++)x[s]=0;for(s=0;!v.isZero();s++)g=v.andln(255),v.iushrn(8),x[p-s-1]=g}return x},Math.clz32?n.prototype._countBits=function(o){return 32-Math.clz32(o)}:n.prototype._countBits=function(o){var f=o,u=0;return f>=4096&&(u+=13,f>>>=13),f>=64&&(u+=7,f>>>=7),f>=8&&(u+=4,f>>>=4),f>=2&&(u+=2,f>>>=2),u+f},n.prototype._zeroBits=function(o){if(o===0)return 26;var f=o,u=0;return f&8191||(u+=13,f>>>=13),f&127||(u+=7,f>>>=7),f&15||(u+=4,f>>>=4),f&3||(u+=2,f>>>=2),f&1||u++,u},n.prototype.bitLength=function(){var o=this.words[this.length-1],f=this._countBits(o);return(this.length-1)*26+f};function I(_){for(var o=new Array(_.bitLength()),f=0;f<o.length;f++){var u=f/26|0,h=f%26;o[f]=(_.words[u]&1<<h)>>>h}return o}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var o=0,f=0;f<this.length;f++){var u=this._zeroBits(this.words[f]);if(o+=u,u!==26)break}return o},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(o){return this.negative!==0?this.abs().inotn(o).iaddn(1):this.clone()},n.prototype.fromTwos=function(o){return this.testn(o-1)?this.notn(o).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(o){for(;this.length<o.length;)this.words[this.length++]=0;for(var f=0;f<o.length;f++)this.words[f]=this.words[f]|o.words[f];return this.strip()},n.prototype.ior=function(o){return i((this.negative|o.negative)===0),this.iuor(o)},n.prototype.or=function(o){return this.length>o.length?this.clone().ior(o):o.clone().ior(this)},n.prototype.uor=function(o){return this.length>o.length?this.clone().iuor(o):o.clone().iuor(this)},n.prototype.iuand=function(o){var f;this.length>o.length?f=o:f=this;for(var u=0;u<f.length;u++)this.words[u]=this.words[u]&o.words[u];return this.length=f.length,this.strip()},n.prototype.iand=function(o){return i((this.negative|o.negative)===0),this.iuand(o)},n.prototype.and=function(o){return this.length>o.length?this.clone().iand(o):o.clone().iand(this)},n.prototype.uand=function(o){return this.length>o.length?this.clone().iuand(o):o.clone().iuand(this)},n.prototype.iuxor=function(o){var f,u;this.length>o.length?(f=this,u=o):(f=o,u=this);for(var h=0;h<u.length;h++)this.words[h]=f.words[h]^u.words[h];if(this!==f)for(;h<f.length;h++)this.words[h]=f.words[h];return this.length=f.length,this.strip()},n.prototype.ixor=function(o){return i((this.negative|o.negative)===0),this.iuxor(o)},n.prototype.xor=function(o){return this.length>o.length?this.clone().ixor(o):o.clone().ixor(this)},n.prototype.uxor=function(o){return this.length>o.length?this.clone().iuxor(o):o.clone().iuxor(this)},n.prototype.inotn=function(o){i(typeof o=="number"&&o>=0);var f=Math.ceil(o/26)|0,u=o%26;this._expand(f),u>0&&f--;for(var h=0;h<f;h++)this.words[h]=~this.words[h]&67108863;return u>0&&(this.words[h]=~this.words[h]&67108863>>26-u),this.strip()},n.prototype.notn=function(o){return this.clone().inotn(o)},n.prototype.setn=function(o,f){i(typeof o=="number"&&o>=0);var u=o/26|0,h=o%26;return this._expand(u+1),f?this.words[u]=this.words[u]|1<<h:this.words[u]=this.words[u]&~(1<<h),this.strip()},n.prototype.iadd=function(o){var f;if(this.negative!==0&&o.negative===0)return this.negative=0,f=this.isub(o),this.negative^=1,this._normSign();if(this.negative===0&&o.negative!==0)return o.negative=0,f=this.isub(o),o.negative=1,f._normSign();var u,h;this.length>o.length?(u=this,h=o):(u=o,h=this);for(var p=0,w=0;w<h.length;w++)f=(u.words[w]|0)+(h.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;for(;p!==0&&w<u.length;w++)f=(u.words[w]|0)+p,this.words[w]=f&67108863,p=f>>>26;if(this.length=u.length,p!==0)this.words[this.length]=p,this.length++;else if(u!==this)for(;w<u.length;w++)this.words[w]=u.words[w];return this},n.prototype.add=function(o){var f;return o.negative!==0&&this.negative===0?(o.negative=0,f=this.sub(o),o.negative^=1,f):o.negative===0&&this.negative!==0?(this.negative=0,f=o.sub(this),this.negative=1,f):this.length>o.length?this.clone().iadd(o):o.clone().iadd(this)},n.prototype.isub=function(o){if(o.negative!==0){o.negative=0;var f=this.iadd(o);return o.negative=1,f._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(o),this.negative=1,this._normSign();var u=this.cmp(o);if(u===0)return this.negative=0,this.length=1,this.words[0]=0,this;var h,p;u>0?(h=this,p=o):(h=o,p=this);for(var w=0,x=0;x<p.length;x++)f=(h.words[x]|0)-(p.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;for(;w!==0&&x<h.length;x++)f=(h.words[x]|0)+w,w=f>>26,this.words[x]=f&67108863;if(w===0&&x<h.length&&h!==this)for(;x<h.length;x++)this.words[x]=h.words[x];return this.length=Math.max(this.length,x),h!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(o){return this.clone().isub(o)};function O(_,o,f){f.negative=o.negative^_.negative;var u=_.length+o.length|0;f.length=u,u=u-1|0;var h=_.words[0]|0,p=o.words[0]|0,w=h*p,x=w&67108863,g=w/67108864|0;f.words[0]=x;for(var s=1;s<u;s++){for(var v=g>>>26,T=g&67108863,k=Math.min(s,o.length-1),Y=Math.max(0,s-_.length+1);Y<=k;Y++){var ee=s-Y|0;h=_.words[ee]|0,p=o.words[Y]|0,w=h*p+T,v+=w/67108864|0,T=w&67108863}f.words[s]=T|0,g=v|0}return g!==0?f.words[s]=g|0:f.length--,f.strip()}var B=function(o,f,u){var h=o.words,p=f.words,w=u.words,x=0,g,s,v,T=h[0]|0,k=T&8191,Y=T>>>13,ee=h[1]|0,A=ee&8191,E=ee>>>13,q=h[2]|0,V=q&8191,X=q>>>13,b=h[3]|0,y=b&8191,D=b>>>13,U=h[4]|0,Z=U&8191,F=U>>>13,N=h[5]|0,H=N&8191,z=N>>>13,fe=h[6]|0,re=fe&8191,ae=fe>>>13,be=h[7]|0,J=be&8191,le=be>>>13,se=h[8]|0,ue=se&8191,de=se>>>13,ve=h[9]|0,ie=ve&8191,oe=ve>>>13,Ae=p[0]|0,pe=Ae&8191,Se=Ae>>>13,Ke=p[1]|0,we=Ke&8191,xe=Ke>>>13,qe=p[2]|0,ye=qe&8191,Me=qe>>>13,Ve=p[3]|0,ge=Ve&8191,Ee=Ve>>>13,Je=p[4]|0,Re=Je&8191,Le=Je>>>13,at=p[5]|0,Te=at&8191,Ne=at>>>13,rt=p[6]|0,Oe=rt&8191,De=rt>>>13,nt=p[7]|0,Ie=nt&8191,$e=nt>>>13,st=p[8]|0,Pe=st&8191,je=st>>>13,ht=p[9]|0,Ce=ht&8191,Fe=ht>>>13;u.negative=o.negative^f.negative,u.length=19,g=Math.imul(k,pe),s=Math.imul(k,Se),s=s+Math.imul(Y,pe)|0,v=Math.imul(Y,Se);var it=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(it>>>26)|0,it&=67108863,g=Math.imul(A,pe),s=Math.imul(A,Se),s=s+Math.imul(E,pe)|0,v=Math.imul(E,Se),g=g+Math.imul(k,we)|0,s=s+Math.imul(k,xe)|0,s=s+Math.imul(Y,we)|0,v=v+Math.imul(Y,xe)|0;var et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(et>>>26)|0,et&=67108863,g=Math.imul(V,pe),s=Math.imul(V,Se),s=s+Math.imul(X,pe)|0,v=Math.imul(X,Se),g=g+Math.imul(A,we)|0,s=s+Math.imul(A,xe)|0,s=s+Math.imul(E,we)|0,v=v+Math.imul(E,xe)|0,g=g+Math.imul(k,ye)|0,s=s+Math.imul(k,Me)|0,s=s+Math.imul(Y,ye)|0,v=v+Math.imul(Y,Me)|0;var Et=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Et>>>26)|0,Et&=67108863,g=Math.imul(y,pe),s=Math.imul(y,Se),s=s+Math.imul(D,pe)|0,v=Math.imul(D,Se),g=g+Math.imul(V,we)|0,s=s+Math.imul(V,xe)|0,s=s+Math.imul(X,we)|0,v=v+Math.imul(X,xe)|0,g=g+Math.imul(A,ye)|0,s=s+Math.imul(A,Me)|0,s=s+Math.imul(E,ye)|0,v=v+Math.imul(E,Me)|0,g=g+Math.imul(k,ge)|0,s=s+Math.imul(k,Ee)|0,s=s+Math.imul(Y,ge)|0,v=v+Math.imul(Y,Ee)|0;var Ot=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,g=Math.imul(Z,pe),s=Math.imul(Z,Se),s=s+Math.imul(F,pe)|0,v=Math.imul(F,Se),g=g+Math.imul(y,we)|0,s=s+Math.imul(y,xe)|0,s=s+Math.imul(D,we)|0,v=v+Math.imul(D,xe)|0,g=g+Math.imul(V,ye)|0,s=s+Math.imul(V,Me)|0,s=s+Math.imul(X,ye)|0,v=v+Math.imul(X,Me)|0,g=g+Math.imul(A,ge)|0,s=s+Math.imul(A,Ee)|0,s=s+Math.imul(E,ge)|0,v=v+Math.imul(E,Ee)|0,g=g+Math.imul(k,Re)|0,s=s+Math.imul(k,Le)|0,s=s+Math.imul(Y,Re)|0,v=v+Math.imul(Y,Le)|0;var It=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(It>>>26)|0,It&=67108863,g=Math.imul(H,pe),s=Math.imul(H,Se),s=s+Math.imul(z,pe)|0,v=Math.imul(z,Se),g=g+Math.imul(Z,we)|0,s=s+Math.imul(Z,xe)|0,s=s+Math.imul(F,we)|0,v=v+Math.imul(F,xe)|0,g=g+Math.imul(y,ye)|0,s=s+Math.imul(y,Me)|0,s=s+Math.imul(D,ye)|0,v=v+Math.imul(D,Me)|0,g=g+Math.imul(V,ge)|0,s=s+Math.imul(V,Ee)|0,s=s+Math.imul(X,ge)|0,v=v+Math.imul(X,Ee)|0,g=g+Math.imul(A,Re)|0,s=s+Math.imul(A,Le)|0,s=s+Math.imul(E,Re)|0,v=v+Math.imul(E,Le)|0,g=g+Math.imul(k,Te)|0,s=s+Math.imul(k,Ne)|0,s=s+Math.imul(Y,Te)|0,v=v+Math.imul(Y,Ne)|0;var Bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,g=Math.imul(re,pe),s=Math.imul(re,Se),s=s+Math.imul(ae,pe)|0,v=Math.imul(ae,Se),g=g+Math.imul(H,we)|0,s=s+Math.imul(H,xe)|0,s=s+Math.imul(z,we)|0,v=v+Math.imul(z,xe)|0,g=g+Math.imul(Z,ye)|0,s=s+Math.imul(Z,Me)|0,s=s+Math.imul(F,ye)|0,v=v+Math.imul(F,Me)|0,g=g+Math.imul(y,ge)|0,s=s+Math.imul(y,Ee)|0,s=s+Math.imul(D,ge)|0,v=v+Math.imul(D,Ee)|0,g=g+Math.imul(V,Re)|0,s=s+Math.imul(V,Le)|0,s=s+Math.imul(X,Re)|0,v=v+Math.imul(X,Le)|0,g=g+Math.imul(A,Te)|0,s=s+Math.imul(A,Ne)|0,s=s+Math.imul(E,Te)|0,v=v+Math.imul(E,Ne)|0,g=g+Math.imul(k,Oe)|0,s=s+Math.imul(k,De)|0,s=s+Math.imul(Y,Oe)|0,v=v+Math.imul(Y,De)|0;var kt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(kt>>>26)|0,kt&=67108863,g=Math.imul(J,pe),s=Math.imul(J,Se),s=s+Math.imul(le,pe)|0,v=Math.imul(le,Se),g=g+Math.imul(re,we)|0,s=s+Math.imul(re,xe)|0,s=s+Math.imul(ae,we)|0,v=v+Math.imul(ae,xe)|0,g=g+Math.imul(H,ye)|0,s=s+Math.imul(H,Me)|0,s=s+Math.imul(z,ye)|0,v=v+Math.imul(z,Me)|0,g=g+Math.imul(Z,ge)|0,s=s+Math.imul(Z,Ee)|0,s=s+Math.imul(F,ge)|0,v=v+Math.imul(F,Ee)|0,g=g+Math.imul(y,Re)|0,s=s+Math.imul(y,Le)|0,s=s+Math.imul(D,Re)|0,v=v+Math.imul(D,Le)|0,g=g+Math.imul(V,Te)|0,s=s+Math.imul(V,Ne)|0,s=s+Math.imul(X,Te)|0,v=v+Math.imul(X,Ne)|0,g=g+Math.imul(A,Oe)|0,s=s+Math.imul(A,De)|0,s=s+Math.imul(E,Oe)|0,v=v+Math.imul(E,De)|0,g=g+Math.imul(k,Ie)|0,s=s+Math.imul(k,$e)|0,s=s+Math.imul(Y,Ie)|0,v=v+Math.imul(Y,$e)|0;var Ut=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,g=Math.imul(ue,pe),s=Math.imul(ue,Se),s=s+Math.imul(de,pe)|0,v=Math.imul(de,Se),g=g+Math.imul(J,we)|0,s=s+Math.imul(J,xe)|0,s=s+Math.imul(le,we)|0,v=v+Math.imul(le,xe)|0,g=g+Math.imul(re,ye)|0,s=s+Math.imul(re,Me)|0,s=s+Math.imul(ae,ye)|0,v=v+Math.imul(ae,Me)|0,g=g+Math.imul(H,ge)|0,s=s+Math.imul(H,Ee)|0,s=s+Math.imul(z,ge)|0,v=v+Math.imul(z,Ee)|0,g=g+Math.imul(Z,Re)|0,s=s+Math.imul(Z,Le)|0,s=s+Math.imul(F,Re)|0,v=v+Math.imul(F,Le)|0,g=g+Math.imul(y,Te)|0,s=s+Math.imul(y,Ne)|0,s=s+Math.imul(D,Te)|0,v=v+Math.imul(D,Ne)|0,g=g+Math.imul(V,Oe)|0,s=s+Math.imul(V,De)|0,s=s+Math.imul(X,Oe)|0,v=v+Math.imul(X,De)|0,g=g+Math.imul(A,Ie)|0,s=s+Math.imul(A,$e)|0,s=s+Math.imul(E,Ie)|0,v=v+Math.imul(E,$e)|0,g=g+Math.imul(k,Pe)|0,s=s+Math.imul(k,je)|0,s=s+Math.imul(Y,Pe)|0,v=v+Math.imul(Y,je)|0;var Ht=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Ht>>>26)|0,Ht&=67108863,g=Math.imul(ie,pe),s=Math.imul(ie,Se),s=s+Math.imul(oe,pe)|0,v=Math.imul(oe,Se),g=g+Math.imul(ue,we)|0,s=s+Math.imul(ue,xe)|0,s=s+Math.imul(de,we)|0,v=v+Math.imul(de,xe)|0,g=g+Math.imul(J,ye)|0,s=s+Math.imul(J,Me)|0,s=s+Math.imul(le,ye)|0,v=v+Math.imul(le,Me)|0,g=g+Math.imul(re,ge)|0,s=s+Math.imul(re,Ee)|0,s=s+Math.imul(ae,ge)|0,v=v+Math.imul(ae,Ee)|0,g=g+Math.imul(H,Re)|0,s=s+Math.imul(H,Le)|0,s=s+Math.imul(z,Re)|0,v=v+Math.imul(z,Le)|0,g=g+Math.imul(Z,Te)|0,s=s+Math.imul(Z,Ne)|0,s=s+Math.imul(F,Te)|0,v=v+Math.imul(F,Ne)|0,g=g+Math.imul(y,Oe)|0,s=s+Math.imul(y,De)|0,s=s+Math.imul(D,Oe)|0,v=v+Math.imul(D,De)|0,g=g+Math.imul(V,Ie)|0,s=s+Math.imul(V,$e)|0,s=s+Math.imul(X,Ie)|0,v=v+Math.imul(X,$e)|0,g=g+Math.imul(A,Pe)|0,s=s+Math.imul(A,je)|0,s=s+Math.imul(E,Pe)|0,v=v+Math.imul(E,je)|0,g=g+Math.imul(k,Ce)|0,s=s+Math.imul(k,Fe)|0,s=s+Math.imul(Y,Ce)|0,v=v+Math.imul(Y,Fe)|0;var Lt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(ie,we),s=Math.imul(ie,xe),s=s+Math.imul(oe,we)|0,v=Math.imul(oe,xe),g=g+Math.imul(ue,ye)|0,s=s+Math.imul(ue,Me)|0,s=s+Math.imul(de,ye)|0,v=v+Math.imul(de,Me)|0,g=g+Math.imul(J,ge)|0,s=s+Math.imul(J,Ee)|0,s=s+Math.imul(le,ge)|0,v=v+Math.imul(le,Ee)|0,g=g+Math.imul(re,Re)|0,s=s+Math.imul(re,Le)|0,s=s+Math.imul(ae,Re)|0,v=v+Math.imul(ae,Le)|0,g=g+Math.imul(H,Te)|0,s=s+Math.imul(H,Ne)|0,s=s+Math.imul(z,Te)|0,v=v+Math.imul(z,Ne)|0,g=g+Math.imul(Z,Oe)|0,s=s+Math.imul(Z,De)|0,s=s+Math.imul(F,Oe)|0,v=v+Math.imul(F,De)|0,g=g+Math.imul(y,Ie)|0,s=s+Math.imul(y,$e)|0,s=s+Math.imul(D,Ie)|0,v=v+Math.imul(D,$e)|0,g=g+Math.imul(V,Pe)|0,s=s+Math.imul(V,je)|0,s=s+Math.imul(X,Pe)|0,v=v+Math.imul(X,je)|0,g=g+Math.imul(A,Ce)|0,s=s+Math.imul(A,Fe)|0,s=s+Math.imul(E,Ce)|0,v=v+Math.imul(E,Fe)|0;var dt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(dt>>>26)|0,dt&=67108863,g=Math.imul(ie,ye),s=Math.imul(ie,Me),s=s+Math.imul(oe,ye)|0,v=Math.imul(oe,Me),g=g+Math.imul(ue,ge)|0,s=s+Math.imul(ue,Ee)|0,s=s+Math.imul(de,ge)|0,v=v+Math.imul(de,Ee)|0,g=g+Math.imul(J,Re)|0,s=s+Math.imul(J,Le)|0,s=s+Math.imul(le,Re)|0,v=v+Math.imul(le,Le)|0,g=g+Math.imul(re,Te)|0,s=s+Math.imul(re,Ne)|0,s=s+Math.imul(ae,Te)|0,v=v+Math.imul(ae,Ne)|0,g=g+Math.imul(H,Oe)|0,s=s+Math.imul(H,De)|0,s=s+Math.imul(z,Oe)|0,v=v+Math.imul(z,De)|0,g=g+Math.imul(Z,Ie)|0,s=s+Math.imul(Z,$e)|0,s=s+Math.imul(F,Ie)|0,v=v+Math.imul(F,$e)|0,g=g+Math.imul(y,Pe)|0,s=s+Math.imul(y,je)|0,s=s+Math.imul(D,Pe)|0,v=v+Math.imul(D,je)|0,g=g+Math.imul(V,Ce)|0,s=s+Math.imul(V,Fe)|0,s=s+Math.imul(X,Ce)|0,v=v+Math.imul(X,Fe)|0;var At=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(At>>>26)|0,At&=67108863,g=Math.imul(ie,ge),s=Math.imul(ie,Ee),s=s+Math.imul(oe,ge)|0,v=Math.imul(oe,Ee),g=g+Math.imul(ue,Re)|0,s=s+Math.imul(ue,Le)|0,s=s+Math.imul(de,Re)|0,v=v+Math.imul(de,Le)|0,g=g+Math.imul(J,Te)|0,s=s+Math.imul(J,Ne)|0,s=s+Math.imul(le,Te)|0,v=v+Math.imul(le,Ne)|0,g=g+Math.imul(re,Oe)|0,s=s+Math.imul(re,De)|0,s=s+Math.imul(ae,Oe)|0,v=v+Math.imul(ae,De)|0,g=g+Math.imul(H,Ie)|0,s=s+Math.imul(H,$e)|0,s=s+Math.imul(z,Ie)|0,v=v+Math.imul(z,$e)|0,g=g+Math.imul(Z,Pe)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(F,Pe)|0,v=v+Math.imul(F,je)|0,g=g+Math.imul(y,Ce)|0,s=s+Math.imul(y,Fe)|0,s=s+Math.imul(D,Ce)|0,v=v+Math.imul(D,Fe)|0;var Mt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,g=Math.imul(ie,Re),s=Math.imul(ie,Le),s=s+Math.imul(oe,Re)|0,v=Math.imul(oe,Le),g=g+Math.imul(ue,Te)|0,s=s+Math.imul(ue,Ne)|0,s=s+Math.imul(de,Te)|0,v=v+Math.imul(de,Ne)|0,g=g+Math.imul(J,Oe)|0,s=s+Math.imul(J,De)|0,s=s+Math.imul(le,Oe)|0,v=v+Math.imul(le,De)|0,g=g+Math.imul(re,Ie)|0,s=s+Math.imul(re,$e)|0,s=s+Math.imul(ae,Ie)|0,v=v+Math.imul(ae,$e)|0,g=g+Math.imul(H,Pe)|0,s=s+Math.imul(H,je)|0,s=s+Math.imul(z,Pe)|0,v=v+Math.imul(z,je)|0,g=g+Math.imul(Z,Ce)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(F,Ce)|0,v=v+Math.imul(F,Fe)|0;var yt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(yt>>>26)|0,yt&=67108863,g=Math.imul(ie,Te),s=Math.imul(ie,Ne),s=s+Math.imul(oe,Te)|0,v=Math.imul(oe,Ne),g=g+Math.imul(ue,Oe)|0,s=s+Math.imul(ue,De)|0,s=s+Math.imul(de,Oe)|0,v=v+Math.imul(de,De)|0,g=g+Math.imul(J,Ie)|0,s=s+Math.imul(J,$e)|0,s=s+Math.imul(le,Ie)|0,v=v+Math.imul(le,$e)|0,g=g+Math.imul(re,Pe)|0,s=s+Math.imul(re,je)|0,s=s+Math.imul(ae,Pe)|0,v=v+Math.imul(ae,je)|0,g=g+Math.imul(H,Ce)|0,s=s+Math.imul(H,Fe)|0,s=s+Math.imul(z,Ce)|0,v=v+Math.imul(z,Fe)|0;var Pt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,g=Math.imul(ie,Oe),s=Math.imul(ie,De),s=s+Math.imul(oe,Oe)|0,v=Math.imul(oe,De),g=g+Math.imul(ue,Ie)|0,s=s+Math.imul(ue,$e)|0,s=s+Math.imul(de,Ie)|0,v=v+Math.imul(de,$e)|0,g=g+Math.imul(J,Pe)|0,s=s+Math.imul(J,je)|0,s=s+Math.imul(le,Pe)|0,v=v+Math.imul(le,je)|0,g=g+Math.imul(re,Ce)|0,s=s+Math.imul(re,Fe)|0,s=s+Math.imul(ae,Ce)|0,v=v+Math.imul(ae,Fe)|0;var gt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(gt>>>26)|0,gt&=67108863,g=Math.imul(ie,Ie),s=Math.imul(ie,$e),s=s+Math.imul(oe,Ie)|0,v=Math.imul(oe,$e),g=g+Math.imul(ue,Pe)|0,s=s+Math.imul(ue,je)|0,s=s+Math.imul(de,Pe)|0,v=v+Math.imul(de,je)|0,g=g+Math.imul(J,Ce)|0,s=s+Math.imul(J,Fe)|0,s=s+Math.imul(le,Ce)|0,v=v+Math.imul(le,Fe)|0;var bt=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+(bt>>>26)|0,bt&=67108863,g=Math.imul(ie,Pe),s=Math.imul(ie,je),s=s+Math.imul(oe,Pe)|0,v=Math.imul(oe,je),g=g+Math.imul(ue,Ce)|0,s=s+Math.imul(ue,Fe)|0,s=s+Math.imul(de,Ce)|0,v=v+Math.imul(de,Fe)|0;var $t=(x+g|0)+((s&8191)<<13)|0;x=(v+(s>>>13)|0)+($t>>>26)|0,$t&=67108863,g=Math.imul(ie,Ce),s=Math.imul(ie,Fe),s=s+Math.imul(oe,Ce)|0,v=Math.imul(oe,Fe);var Dt=(x+g|0)+((s&8191)<<13)|0;return x=(v+(s>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,w[0]=it,w[1]=et,w[2]=Et,w[3]=Ot,w[4]=It,w[5]=Bt,w[6]=kt,w[7]=Ut,w[8]=Ht,w[9]=Lt,w[10]=dt,w[11]=At,w[12]=Mt,w[13]=yt,w[14]=Pt,w[15]=gt,w[16]=bt,w[17]=$t,w[18]=Dt,x!==0&&(w[19]=x,u.length++),u};Math.imul||(B=O);function L(_,o,f){f.negative=o.negative^_.negative,f.length=_.length+o.length;for(var u=0,h=0,p=0;p<f.length-1;p++){var w=h;h=0;for(var x=u&67108863,g=Math.min(p,o.length-1),s=Math.max(0,p-_.length+1);s<=g;s++){var v=p-s,T=_.words[v]|0,k=o.words[s]|0,Y=T*k,ee=Y&67108863;w=w+(Y/67108864|0)|0,ee=ee+x|0,x=ee&67108863,w=w+(ee>>>26)|0,h+=w>>>26,w&=67108863}f.words[p]=x,u=w,w=h}return u!==0?f.words[p]=u:f.length--,f.strip()}function P(_,o,f){var u=new C;return u.mulp(_,o,f)}n.prototype.mulTo=function(o,f){var u,h=this.length+o.length;return this.length===10&&o.length===10?u=B(this,o,f):h<63?u=O(this,o,f):h<1024?u=L(this,o,f):u=P(this,o,f),u};function C(_,o){this.x=_,this.y=o}C.prototype.makeRBT=function(o){for(var f=new Array(o),u=n.prototype._countBits(o)-1,h=0;h<o;h++)f[h]=this.revBin(h,u,o);return f},C.prototype.revBin=function(o,f,u){if(o===0||o===u-1)return o;for(var h=0,p=0;p<f;p++)h|=(o&1)<<f-p-1,o>>=1;return h},C.prototype.permute=function(o,f,u,h,p,w){for(var x=0;x<w;x++)h[x]=f[o[x]],p[x]=u[o[x]]},C.prototype.transform=function(o,f,u,h,p,w){this.permute(w,o,f,u,h,p);for(var x=1;x<p;x<<=1)for(var g=x<<1,s=Math.cos(2*Math.PI/g),v=Math.sin(2*Math.PI/g),T=0;T<p;T+=g)for(var k=s,Y=v,ee=0;ee<x;ee++){var A=u[T+ee],E=h[T+ee],q=u[T+ee+x],V=h[T+ee+x],X=k*q-Y*V;V=k*V+Y*q,q=X,u[T+ee]=A+q,h[T+ee]=E+V,u[T+ee+x]=A-q,h[T+ee+x]=E-V,ee!==g&&(X=s*k-v*Y,Y=s*Y+v*k,k=X)}},C.prototype.guessLen13b=function(o,f){var u=Math.max(f,o)|1,h=u&1,p=0;for(u=u/2|0;u;u=u>>>1)p++;return 1<<p+1+h},C.prototype.conjugate=function(o,f,u){if(!(u<=1))for(var h=0;h<u/2;h++){var p=o[h];o[h]=o[u-h-1],o[u-h-1]=p,p=f[h],f[h]=-f[u-h-1],f[u-h-1]=-p}},C.prototype.normalize13b=function(o,f){for(var u=0,h=0;h<f/2;h++){var p=Math.round(o[2*h+1]/f)*8192+Math.round(o[2*h]/f)+u;o[h]=p&67108863,p<67108864?u=0:u=p/67108864|0}return o},C.prototype.convert13b=function(o,f,u,h){for(var p=0,w=0;w<f;w++)p=p+(o[w]|0),u[2*w]=p&8191,p=p>>>13,u[2*w+1]=p&8191,p=p>>>13;for(w=2*f;w<h;++w)u[w]=0;i(p===0),i((p&-8192)===0)},C.prototype.stub=function(o){for(var f=new Array(o),u=0;u<o;u++)f[u]=0;return f},C.prototype.mulp=function(o,f,u){var h=2*this.guessLen13b(o.length,f.length),p=this.makeRBT(h),w=this.stub(h),x=new Array(h),g=new Array(h),s=new Array(h),v=new Array(h),T=new Array(h),k=new Array(h),Y=u.words;Y.length=h,this.convert13b(o.words,o.length,x,h),this.convert13b(f.words,f.length,v,h),this.transform(x,w,g,s,h,p),this.transform(v,w,T,k,h,p);for(var ee=0;ee<h;ee++){var A=g[ee]*T[ee]-s[ee]*k[ee];s[ee]=g[ee]*k[ee]+s[ee]*T[ee],g[ee]=A}return this.conjugate(g,s,h),this.transform(g,s,Y,w,h,p),this.conjugate(Y,w,h),this.normalize13b(Y,h),u.negative=o.negative^f.negative,u.length=o.length+f.length,u.strip()},n.prototype.mul=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),this.mulTo(o,f)},n.prototype.mulf=function(o){var f=new n(null);return f.words=new Array(this.length+o.length),P(this,o,f)},n.prototype.imul=function(o){return this.clone().mulTo(o,this)},n.prototype.imuln=function(o){i(typeof o=="number"),i(o<67108864);for(var f=0,u=0;u<this.length;u++){var h=(this.words[u]|0)*o,p=(h&67108863)+(f&67108863);f>>=26,f+=h/67108864|0,f+=p>>>26,this.words[u]=p&67108863}return f!==0&&(this.words[u]=f,this.length++),this},n.prototype.muln=function(o){return this.clone().imuln(o)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(o){var f=I(o);if(f.length===0)return new n(1);for(var u=this,h=0;h<f.length&&f[h]===0;h++,u=u.sqr());if(++h<f.length)for(var p=u.sqr();h<f.length;h++,p=p.sqr())f[h]!==0&&(u=u.mul(p));return u},n.prototype.iushln=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=67108863>>>26-f<<26-f,p;if(f!==0){var w=0;for(p=0;p<this.length;p++){var x=this.words[p]&h,g=(this.words[p]|0)-x<<f;this.words[p]=g|w,w=x>>>26-f}w&&(this.words[p]=w,this.length++)}if(u!==0){for(p=this.length-1;p>=0;p--)this.words[p+u]=this.words[p];for(p=0;p<u;p++)this.words[p]=0;this.length+=u}return this.strip()},n.prototype.ishln=function(o){return i(this.negative===0),this.iushln(o)},n.prototype.iushrn=function(o,f,u){i(typeof o=="number"&&o>=0);var h;f?h=(f-f%26)/26:h=0;var p=o%26,w=Math.min((o-p)/26,this.length),x=67108863^67108863>>>p<<p,g=u;if(h-=w,h=Math.max(0,h),g){for(var s=0;s<w;s++)g.words[s]=this.words[s];g.length=w}if(w!==0)if(this.length>w)for(this.length-=w,s=0;s<this.length;s++)this.words[s]=this.words[s+w];else this.words[0]=0,this.length=1;var v=0;for(s=this.length-1;s>=0&&(v!==0||s>=h);s--){var T=this.words[s]|0;this.words[s]=v<<26-p|T>>>p,v=T&x}return g&&v!==0&&(g.words[g.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(o,f,u){return i(this.negative===0),this.iushrn(o,f,u)},n.prototype.shln=function(o){return this.clone().ishln(o)},n.prototype.ushln=function(o){return this.clone().iushln(o)},n.prototype.shrn=function(o){return this.clone().ishrn(o)},n.prototype.ushrn=function(o){return this.clone().iushrn(o)},n.prototype.testn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return!1;var p=this.words[u];return!!(p&h)},n.prototype.imaskn=function(o){i(typeof o=="number"&&o>=0);var f=o%26,u=(o-f)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=u)return this;if(f!==0&&u++,this.length=Math.min(u,this.length),f!==0){var h=67108863^67108863>>>f<<f;this.words[this.length-1]&=h}return this.strip()},n.prototype.maskn=function(o){return this.clone().imaskn(o)},n.prototype.iaddn=function(o){return i(typeof o=="number"),i(o<67108864),o<0?this.isubn(-o):this.negative!==0?this.length===1&&(this.words[0]|0)<o?(this.words[0]=o-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(o),this.negative=1,this):this._iaddn(o)},n.prototype._iaddn=function(o){this.words[0]+=o;for(var f=0;f<this.length&&this.words[f]>=67108864;f++)this.words[f]-=67108864,f===this.length-1?this.words[f+1]=1:this.words[f+1]++;return this.length=Math.max(this.length,f+1),this},n.prototype.isubn=function(o){if(i(typeof o=="number"),i(o<67108864),o<0)return this.iaddn(-o);if(this.negative!==0)return this.negative=0,this.iaddn(o),this.negative=1,this;if(this.words[0]-=o,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var f=0;f<this.length&&this.words[f]<0;f++)this.words[f]+=67108864,this.words[f+1]-=1;return this.strip()},n.prototype.addn=function(o){return this.clone().iaddn(o)},n.prototype.subn=function(o){return this.clone().isubn(o)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(o,f,u){var h=o.length+u,p;this._expand(h);var w,x=0;for(p=0;p<o.length;p++){w=(this.words[p+u]|0)+x;var g=(o.words[p]|0)*f;w-=g&67108863,x=(w>>26)-(g/67108864|0),this.words[p+u]=w&67108863}for(;p<this.length-u;p++)w=(this.words[p+u]|0)+x,x=w>>26,this.words[p+u]=w&67108863;if(x===0)return this.strip();for(i(x===-1),x=0,p=0;p<this.length;p++)w=-(this.words[p]|0)+x,x=w>>26,this.words[p]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(o,f){var u=this.length-o.length,h=this.clone(),p=o,w=p.words[p.length-1]|0,x=this._countBits(w);u=26-x,u!==0&&(p=p.ushln(u),h.iushln(u),w=p.words[p.length-1]|0);var g=h.length-p.length,s;if(f!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var v=0;v<s.length;v++)s.words[v]=0}var T=h.clone()._ishlnsubmul(p,1,g);T.negative===0&&(h=T,s&&(s.words[g]=1));for(var k=g-1;k>=0;k--){var Y=(h.words[p.length+k]|0)*67108864+(h.words[p.length+k-1]|0);for(Y=Math.min(Y/w|0,67108863),h._ishlnsubmul(p,Y,k);h.negative!==0;)Y--,h.negative=0,h._ishlnsubmul(p,1,k),h.isZero()||(h.negative^=1);s&&(s.words[k]=Y)}return s&&s.strip(),h.strip(),f!=="div"&&u!==0&&h.iushrn(u),{div:s||null,mod:h}},n.prototype.divmod=function(o,f,u){if(i(!o.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var h,p,w;return this.negative!==0&&o.negative===0?(w=this.neg().divmod(o,f),f!=="mod"&&(h=w.div.neg()),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.iadd(o)),{div:h,mod:p}):this.negative===0&&o.negative!==0?(w=this.divmod(o.neg(),f),f!=="mod"&&(h=w.div.neg()),{div:h,mod:w.mod}):this.negative&o.negative?(w=this.neg().divmod(o.neg(),f),f!=="div"&&(p=w.mod.neg(),u&&p.negative!==0&&p.isub(o)),{div:w.div,mod:p}):o.length>this.length||this.cmp(o)<0?{div:new n(0),mod:this}:o.length===1?f==="div"?{div:this.divn(o.words[0]),mod:null}:f==="mod"?{div:null,mod:new n(this.modn(o.words[0]))}:{div:this.divn(o.words[0]),mod:new n(this.modn(o.words[0]))}:this._wordDiv(o,f)},n.prototype.div=function(o){return this.divmod(o,"div",!1).div},n.prototype.mod=function(o){return this.divmod(o,"mod",!1).mod},n.prototype.umod=function(o){return this.divmod(o,"mod",!0).mod},n.prototype.divRound=function(o){var f=this.divmod(o);if(f.mod.isZero())return f.div;var u=f.div.negative!==0?f.mod.isub(o):f.mod,h=o.ushrn(1),p=o.andln(1),w=u.cmp(h);return w<0||p===1&&w===0?f.div:f.div.negative!==0?f.div.isubn(1):f.div.iaddn(1)},n.prototype.modn=function(o){i(o<=67108863);for(var f=(1<<26)%o,u=0,h=this.length-1;h>=0;h--)u=(f*u+(this.words[h]|0))%o;return u},n.prototype.idivn=function(o){i(o<=67108863);for(var f=0,u=this.length-1;u>=0;u--){var h=(this.words[u]|0)+f*67108864;this.words[u]=h/o|0,f=h%o}return this.strip()},n.prototype.divn=function(o){return this.clone().idivn(o)},n.prototype.egcd=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=new n(0),x=new n(1),g=0;f.isEven()&&u.isEven();)f.iushrn(1),u.iushrn(1),++g;for(var s=u.clone(),v=f.clone();!f.isZero();){for(var T=0,k=1;!(f.words[0]&k)&&T<26;++T,k<<=1);if(T>0)for(f.iushrn(T);T-- >0;)(h.isOdd()||p.isOdd())&&(h.iadd(s),p.isub(v)),h.iushrn(1),p.iushrn(1);for(var Y=0,ee=1;!(u.words[0]&ee)&&Y<26;++Y,ee<<=1);if(Y>0)for(u.iushrn(Y);Y-- >0;)(w.isOdd()||x.isOdd())&&(w.iadd(s),x.isub(v)),w.iushrn(1),x.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(w),p.isub(x)):(u.isub(f),w.isub(h),x.isub(p))}return{a:w,b:x,gcd:u.iushln(g)}},n.prototype._invmp=function(o){i(o.negative===0),i(!o.isZero());var f=this,u=o.clone();f.negative!==0?f=f.umod(o):f=f.clone();for(var h=new n(1),p=new n(0),w=u.clone();f.cmpn(1)>0&&u.cmpn(1)>0;){for(var x=0,g=1;!(f.words[0]&g)&&x<26;++x,g<<=1);if(x>0)for(f.iushrn(x);x-- >0;)h.isOdd()&&h.iadd(w),h.iushrn(1);for(var s=0,v=1;!(u.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(u.iushrn(s);s-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);f.cmp(u)>=0?(f.isub(u),h.isub(p)):(u.isub(f),p.isub(h))}var T;return f.cmpn(1)===0?T=h:T=p,T.cmpn(0)<0&&T.iadd(o),T},n.prototype.gcd=function(o){if(this.isZero())return o.abs();if(o.isZero())return this.abs();var f=this.clone(),u=o.clone();f.negative=0,u.negative=0;for(var h=0;f.isEven()&&u.isEven();h++)f.iushrn(1),u.iushrn(1);do{for(;f.isEven();)f.iushrn(1);for(;u.isEven();)u.iushrn(1);var p=f.cmp(u);if(p<0){var w=f;f=u,u=w}else if(p===0||u.cmpn(1)===0)break;f.isub(u)}while(!0);return u.iushln(h)},n.prototype.invm=function(o){return this.egcd(o).a.umod(o)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(o){return this.words[0]&o},n.prototype.bincn=function(o){i(typeof o=="number");var f=o%26,u=(o-f)/26,h=1<<f;if(this.length<=u)return this._expand(u+1),this.words[u]|=h,this;for(var p=h,w=u;p!==0&&w<this.length;w++){var x=this.words[w]|0;x+=p,p=x>>>26,x&=67108863,this.words[w]=x}return p!==0&&(this.words[w]=p,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(o){var f=o<0;if(this.negative!==0&&!f)return-1;if(this.negative===0&&f)return 1;this.strip();var u;if(this.length>1)u=1;else{f&&(o=-o),i(o<=67108863,"Number is too big");var h=this.words[0]|0;u=h===o?0:h<o?-1:1}return this.negative!==0?-u|0:u},n.prototype.cmp=function(o){if(this.negative!==0&&o.negative===0)return-1;if(this.negative===0&&o.negative!==0)return 1;var f=this.ucmp(o);return this.negative!==0?-f|0:f},n.prototype.ucmp=function(o){if(this.length>o.length)return 1;if(this.length<o.length)return-1;for(var f=0,u=this.length-1;u>=0;u--){var h=this.words[u]|0,p=o.words[u]|0;if(h!==p){h<p?f=-1:h>p&&(f=1);break}}return f},n.prototype.gtn=function(o){return this.cmpn(o)===1},n.prototype.gt=function(o){return this.cmp(o)===1},n.prototype.gten=function(o){return this.cmpn(o)>=0},n.prototype.gte=function(o){return this.cmp(o)>=0},n.prototype.ltn=function(o){return this.cmpn(o)===-1},n.prototype.lt=function(o){return this.cmp(o)===-1},n.prototype.lten=function(o){return this.cmpn(o)<=0},n.prototype.lte=function(o){return this.cmp(o)<=0},n.prototype.eqn=function(o){return this.cmpn(o)===0},n.prototype.eq=function(o){return this.cmp(o)===0},n.red=function(o){return new W(o)},n.prototype.toRed=function(o){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),o.convertTo(this)._forceRed(o)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(o){return this.red=o,this},n.prototype.forceRed=function(o){return i(!this.red,"Already a number in reduction context"),this._forceRed(o)},n.prototype.redAdd=function(o){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,o)},n.prototype.redIAdd=function(o){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,o)},n.prototype.redSub=function(o){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,o)},n.prototype.redISub=function(o){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,o)},n.prototype.redShl=function(o){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,o)},n.prototype.redMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.mul(this,o)},n.prototype.redIMul=function(o){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,o),this.red.imul(this,o)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(o){return i(this.red&&!o.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,o)};var j={k256:null,p224:null,p192:null,p25519:null};function $(_,o){this.name=_,this.p=new n(o,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}$.prototype._tmp=function(){var o=new n(null);return o.words=new Array(Math.ceil(this.n/13)),o},$.prototype.ireduce=function(o){var f=o,u;do this.split(f,this.tmp),f=this.imulK(f),f=f.iadd(this.tmp),u=f.bitLength();while(u>this.n);var h=u<this.n?-1:f.ucmp(this.p);return h===0?(f.words[0]=0,f.length=1):h>0?f.isub(this.p):f.strip!==void 0?f.strip():f._strip(),f},$.prototype.split=function(o,f){o.iushrn(this.n,0,f)},$.prototype.imulK=function(o){return o.imul(this.k)};function K(){$.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}a(K,$),K.prototype.split=function(o,f){for(var u=4194303,h=Math.min(o.length,9),p=0;p<h;p++)f.words[p]=o.words[p];if(f.length=h,o.length<=9){o.words[0]=0,o.length=1;return}var w=o.words[9];for(f.words[f.length++]=w&u,p=10;p<o.length;p++){var x=o.words[p]|0;o.words[p-10]=(x&u)<<4|w>>>22,w=x}w>>>=22,o.words[p-10]=w,w===0&&o.length>10?o.length-=10:o.length-=9},K.prototype.imulK=function(o){o.words[o.length]=0,o.words[o.length+1]=0,o.length+=2;for(var f=0,u=0;u<o.length;u++){var h=o.words[u]|0;f+=h*977,o.words[u]=f&67108863,f=h*64+(f/67108864|0)}return o.words[o.length-1]===0&&(o.length--,o.words[o.length-1]===0&&o.length--),o};function G(){$.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}a(G,$);function te(){$.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}a(te,$);function Q(){$.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}a(Q,$),Q.prototype.imulK=function(o){for(var f=0,u=0;u<o.length;u++){var h=(o.words[u]|0)*19+f,p=h&67108863;h>>>=26,o.words[u]=p,f=h}return f!==0&&(o.words[o.length++]=f),o},n._prime=function(o){if(j[o])return j[o];var f;if(o==="k256")f=new K;else if(o==="p224")f=new G;else if(o==="p192")f=new te;else if(o==="p25519")f=new Q;else throw new Error("Unknown prime "+o);return j[o]=f,f};function W(_){if(typeof _=="string"){var o=n._prime(_);this.m=o.p,this.prime=o}else i(_.gtn(1),"modulus must be greater than 1"),this.m=_,this.prime=null}W.prototype._verify1=function(o){i(o.negative===0,"red works only with positives"),i(o.red,"red works only with red numbers")},W.prototype._verify2=function(o,f){i((o.negative|f.negative)===0,"red works only with positives"),i(o.red&&o.red===f.red,"red works only with red numbers")},W.prototype.imod=function(o){return this.prime?this.prime.ireduce(o)._forceRed(this):o.umod(this.m)._forceRed(this)},W.prototype.neg=function(o){return o.isZero()?o.clone():this.m.sub(o)._forceRed(this)},W.prototype.add=function(o,f){this._verify2(o,f);var u=o.add(f);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},W.prototype.iadd=function(o,f){this._verify2(o,f);var u=o.iadd(f);return u.cmp(this.m)>=0&&u.isub(this.m),u},W.prototype.sub=function(o,f){this._verify2(o,f);var u=o.sub(f);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},W.prototype.isub=function(o,f){this._verify2(o,f);var u=o.isub(f);return u.cmpn(0)<0&&u.iadd(this.m),u},W.prototype.shl=function(o,f){return this._verify1(o),this.imod(o.ushln(f))},W.prototype.imul=function(o,f){return this._verify2(o,f),this.imod(o.imul(f))},W.prototype.mul=function(o,f){return this._verify2(o,f),this.imod(o.mul(f))},W.prototype.isqr=function(o){return this.imul(o,o.clone())},W.prototype.sqr=function(o){return this.mul(o,o)},W.prototype.sqrt=function(o){if(o.isZero())return o.clone();var f=this.m.andln(3);if(i(f%2===1),f===3){var u=this.m.add(new n(1)).iushrn(2);return this.pow(o,u)}for(var h=this.m.subn(1),p=0;!h.isZero()&&h.andln(1)===0;)p++,h.iushrn(1);i(!h.isZero());var w=new n(1).toRed(this),x=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(x)!==0;)s.redIAdd(x);for(var v=this.pow(s,h),T=this.pow(o,h.addn(1).iushrn(1)),k=this.pow(o,h),Y=p;k.cmp(w)!==0;){for(var ee=k,A=0;ee.cmp(w)!==0;A++)ee=ee.redSqr();i(A<Y);var E=this.pow(v,new n(1).iushln(Y-A-1));T=T.redMul(E),v=E.redSqr(),k=k.redMul(v),Y=A}return T},W.prototype.invm=function(o){var f=o._invmp(this.m);return f.negative!==0?(f.negative=0,this.imod(f).redNeg()):this.imod(f)},W.prototype.pow=function(o,f){if(f.isZero())return new n(1).toRed(this);if(f.cmpn(1)===0)return o.clone();var u=4,h=new Array(1<<u);h[0]=new n(1).toRed(this),h[1]=o;for(var p=2;p<h.length;p++)h[p]=this.mul(h[p-1],o);var w=h[0],x=0,g=0,s=f.bitLength()%26;for(s===0&&(s=26),p=f.length-1;p>=0;p--){for(var v=f.words[p],T=s-1;T>=0;T--){var k=v>>T&1;if(w!==h[0]&&(w=this.sqr(w)),k===0&&x===0){g=0;continue}x<<=1,x|=k,g++,!(g!==u&&(p!==0||T!==0))&&(w=this.mul(w,h[x]),g=0,x=0)}s=26}return w},W.prototype.convertTo=function(o){var f=o.umod(this.m);return f===o?f.clone():f},W.prototype.convertFrom=function(o){var f=o.clone();return f.red=null,f},n.mont=function(o){return new ce(o)};function ce(_){W.call(this,_),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}a(ce,W),ce.prototype.convertTo=function(o){return this.imod(o.ushln(this.shift))},ce.prototype.convertFrom=function(o){var f=this.imod(o.mul(this.rinv));return f.red=null,f},ce.prototype.imul=function(o,f){if(o.isZero()||f.isZero())return o.words[0]=0,o.length=1,o;var u=o.imul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.mul=function(o,f){if(o.isZero()||f.isZero())return new n(0)._forceRed(this);var u=o.mul(f),h=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=u.isub(h).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},ce.prototype.invm=function(o){var f=this.imod(o._invmp(this.m).mul(this.r2));return f._forceRed(this)}})(e,Ze)})(wm);var _m=wm.exports,l2=_m,Az=vt.Buffer;function Tz(e,t){return Az.from(e.toRed(l2.mont(t.modulus)).redPow(new l2(t.publicExponent)).fromRed().toArray())}var dE=Tz,Oz=Cc,pv=Vs,Iz=Cl,u2=hE,h2=cE,Mm=_m,Pz=dE,Cz=em,ki=vt.Buffer,Bz=function(t,r,i){var a;t.padding?a=t.padding:i?a=1:a=4;var n=Oz(t),l;if(a===4)l=Lz(n,r);else if(a===1)l=Nz(n,r,i);else if(a===3){if(l=new Mm(r),l.cmp(n.modulus)>=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return i?Cz(l,n):Pz(l,n)};function Lz(e,t){var r=e.modulus.byteLength(),i=t.length,a=Iz("sha1").update(ki.alloc(0)).digest(),n=a.length,l=2*n;if(i>r-l-2)throw new Error("message too long");var c=ki.alloc(r-i-l-2),d=r-n-1,m=pv(n),M=h2(ki.concat([a,c,ki.alloc(1,1),t],d),u2(m,d)),S=h2(m,u2(M,n));return new Mm(ki.concat([ki.alloc(1),S,M],r))}function Nz(e,t,r){var i=t.length,a=e.modulus.byteLength();if(i>a-11)throw new Error("message too long");var n;return r?n=ki.alloc(a-i-3,255):n=kz(a-i-3),new Mm(ki.concat([ki.from([0,r?1:2]),n,ki.alloc(1),t],a))}function kz(e){for(var t=ki.allocUnsafe(e),r=0,i=pv(e*2),a=0,n;r<e;)a===i.length&&(i=pv(e*2),a=0),n=i[a++],n&&(t[r++]=n);return t}var $z=Cc,c2=hE,d2=cE,p2=_m,Dz=em,Fz=Cl,jz=dE,ul=vt.Buffer,Uz=function(t,r,i){var a;t.padding?a=t.padding:i?a=1:a=4;var n=$z(t),l=n.modulus.byteLength();if(r.length>l||new p2(r).cmp(n.modulus)>=0)throw new Error("decryption error");var c;i?c=jz(new p2(r),n):c=Dz(r,n);var d=ul.alloc(l-c.length);if(c=ul.concat([d,c],l),a===4)return Hz(n,c);if(a===1)return qz(n,c,i);if(a===3)return c;throw new Error("unknown padding")};function Hz(e,t){var r=e.modulus.byteLength(),i=Fz("sha1").update(ul.alloc(0)).digest(),a=i.length;if(t[0]!==0)throw new Error("decryption error");var n=t.slice(1,a+1),l=t.slice(a+1),c=d2(n,c2(l,a)),d=d2(l,c2(c,r-a-1));if(Wz(i,d.slice(0,a)))throw new Error("decryption error");for(var m=a;d[m]===0;)m++;if(d[m++]!==1)throw new Error("decryption error");return d.slice(m)}function qz(e,t,r){for(var i=t.slice(0,2),a=2,n=0;t[a++]!==0;)if(a>=t.length){n++;break}var l=t.slice(2,a-1);if((i.toString("hex")!=="0002"&&!r||i.toString("hex")!=="0001"&&r)&&n++,l.length<8&&n++,n)throw new Error("decryption error");return t.slice(a)}function Wz(e,t){e=ul.from(e),t=ul.from(t);var r=0,i=e.length;e.length!==t.length&&(r++,i=Math.min(e.length,t.length));for(var a=-1;++a<i;)r+=e[a]^t[a];return r}(function(e){e.publicEncrypt=Bz,e.privateDecrypt=Uz,e.privateEncrypt=function(r,i){return e.publicEncrypt(r,i,!0)},e.publicDecrypt=function(r,i){return e.privateDecrypt(r,i,!0)}})(uE);var Bf={};function v2(){throw new Error(`secure random number generation not supported by this browser
-use chrome, FireFox or Internet Explorer 11`)}var pE=vt,g2=Vs,vE=pE.Buffer,gE=pE.kMaxLength,vv=Ze.crypto||Ze.msCrypto,mE=Math.pow(2,32)-1;function yE(e,t){if(typeof e!="number"||e!==e)throw new TypeError("offset must be a number");if(e>mE||e<0)throw new TypeError("offset must be a uint32");if(e>gE||e>t)throw new RangeError("offset out of range")}function bE(e,t,r){if(typeof e!="number"||e!==e)throw new TypeError("size must be a number");if(e>mE||e<0)throw new TypeError("size must be a uint32");if(e+t>r||e>gE)throw new RangeError("buffer too small")}vv&&vv.getRandomValues||!_e.browser?(Bf.randomFill=Kz,Bf.randomFillSync=Vz):(Bf.randomFill=v2,Bf.randomFillSync=v2);function Kz(e,t,r,i){if(!vE.isBuffer(e)&&!(e instanceof Ze.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof t=="function")i=t,t=0,r=e.length;else if(typeof r=="function")i=r,r=e.length-t;else if(typeof i!="function")throw new TypeError('"cb" argument must be a function');return yE(t,e.length),bE(r,t,e.length),wE(e,t,r,i)}function wE(e,t,r,i){if(_e.browser){var a=e.buffer,n=new Uint8Array(a,t,r);if(vv.getRandomValues(n),i){_e.nextTick(function(){i(null,e)});return}return e}if(i){g2(r,function(c,d){if(c)return i(c);d.copy(e,t),i(null,e)});return}var l=g2(r);return l.copy(e,t),e}function Vz(e,t,r){if(typeof t>"u"&&(t=0),!vE.isBuffer(e)&&!(e instanceof Ze.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return yE(t,e.length),r===void 0&&(r=e.length-t),bE(r,t,e.length),wE(e,t,r)}var m2;function _E(){if(m2)return ct;m2=1,ct.randomBytes=ct.rng=ct.pseudoRandomBytes=ct.prng=Vs,ct.createHash=ct.Hash=Cl,ct.createHmac=ct.Hmac=Mx;var e=QU,t=Object.keys(e),r=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(t);ct.getHashes=function(){return r};var i=cc;ct.pbkdf2=i.pbkdf2,ct.pbkdf2Sync=i.pbkdf2Sync;var a=Hi;ct.Cipher=a.Cipher,ct.createCipher=a.createCipher,ct.Cipheriv=a.Cipheriv,ct.createCipheriv=a.createCipheriv,ct.Decipher=a.Decipher,ct.createDecipher=a.createDecipher,ct.Decipheriv=a.Decipheriv,ct.createDecipheriv=a.createDecipheriv,ct.getCiphers=a.getCiphers,ct.listCiphers=a.listCiphers;var n=Cq();ct.DiffieHellmanGroup=n.DiffieHellmanGroup,ct.createDiffieHellmanGroup=n.createDiffieHellmanGroup,ct.getDiffieHellman=n.getDiffieHellman,ct.createDiffieHellman=n.createDiffieHellman,ct.DiffieHellman=n.DiffieHellman;var l=Mz();ct.createSign=l.createSign,ct.Sign=l.Sign,ct.createVerify=l.createVerify,ct.Verify=l.Verify,ct.createECDH=xz();var c=uE;ct.publicEncrypt=c.publicEncrypt,ct.privateEncrypt=c.privateEncrypt,ct.publicDecrypt=c.publicDecrypt,ct.privateDecrypt=c.privateDecrypt;var d=Bf;return ct.randomFill=d.randomFill,ct.randomFillSync=d.randomFillSync,ct.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join(`
-`))},ct.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6},ct}var zz=_E();const fG=Fo(zz);export{tG as $,Yv as A,li as B,Jp as C,Zt as D,uu as E,zu as F,eM as G,nG as H,FA as I,Ct as J,Li as K,tg as L,nn as M,$v as N,kh as O,In as P,Gu as Q,wM as R,n_ as S,cR as T,o_ as U,Xz as V,eG as W,Qz as X,Jz as Y,jA as Z,VA as _,Ar as a,rG as a0,oG as a1,p5 as a2,w5 as a3,M5 as a4,aG as a5,sG as a6,fG as a7,Zz as a8,ke as b,Ze as c,Us as d,Ih as e,ir as f,H0 as g,Lh as h,Vf as i,gv as j,tt as k,ft as l,Y0 as m,Un as n,qs as o,_e as p,lr as q,iG as r,z2 as s,ut as t,b5 as u,cp as v,Tr as w,Qe as x,Zv as y,ui as z};
diff --git a/web/settings/assets/vendor-fortawesome-71546160.js b/web/settings/assets/vendor-fortawesome-41164876.js
similarity index 99%
rename from web/settings/assets/vendor-fortawesome-71546160.js
rename to web/settings/assets/vendor-fortawesome-41164876.js
index d2215f7fc2..6268604c3e 100644
--- a/web/settings/assets/vendor-fortawesome-71546160.js
+++ b/web/settings/assets/vendor-fortawesome-41164876.js
@@ -1,4 +1,4 @@
-import{g as et,d as Ue,f as N,w as fn,h as kt}from"./vendor-f2b8aa6f.js";const tt=()=>{};let Ye={},Nt={},St=null,Ot={mark:tt,measure:tt};try{typeof window<"u"&&(Ye=window),typeof document<"u"&&(Nt=document),typeof MutationObserver<"u"&&(St=MutationObserver),typeof performance<"u"&&(Ot=performance)}catch{}const{userAgent:nt=""}=Ye.navigator||{},j=Ye,h=Nt,at=St,le=Ot;j.document;const F=!!h.documentElement&&!!h.head&&typeof h.addEventListener=="function"&&typeof h.createElement=="function",Pt=~nt.indexOf("MSIE")||~nt.indexOf("Trident/");var b="classic",Et="duotone",L="sharp",M="sharp-duotone",un=[b,Et,L,M],mn={classic:{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},sharp:{900:"fass",400:"fasr",300:"fasl",100:"fast"},"sharp-duotone":{900:"fasds"}},rt={kit:{fak:"kit","fa-kit":"kit"},"kit-duotone":{fakd:"kit-duotone","fa-kit-duotone":"kit-duotone"}},dn=["kit"],pn=/fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\-\ ]/,gn=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i,hn={"Font Awesome 5 Free":{900:"fas",400:"far"},"Font Awesome 5 Pro":{900:"fas",400:"far",normal:"far",300:"fal"},"Font Awesome 5 Brands":{400:"fab",normal:"fab"},"Font Awesome 5 Duotone":{900:"fad"}},bn={"Font Awesome 6 Free":{900:"fas",400:"far"},"Font Awesome 6 Pro":{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},"Font Awesome 6 Brands":{400:"fab",normal:"fab"},"Font Awesome 6 Duotone":{900:"fad"},"Font Awesome 6 Sharp":{900:"fass",400:"fasr",normal:"fasr",300:"fasl",100:"fast"},"Font Awesome 6 Sharp Duotone":{900:"fasds"}},yn={classic:{"fa-brands":"fab","fa-duotone":"fad","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},sharp:{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"},"sharp-duotone":{"fa-solid":"fasds"}},vn={classic:["fas","far","fal","fat"],sharp:["fass","fasr","fasl","fast"],"sharp-duotone":["fasds"]},xn={classic:{fab:"fa-brands",fad:"fa-duotone",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},sharp:{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"},"sharp-duotone":{fasds:"fa-solid"}},zn={classic:{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab"},sharp:{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"},"sharp-duotone":{solid:"fasds"}},It={classic:{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands"},sharp:{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"},"sharp-duotone":{fa:"solid",fasds:"solid","fa-solid":"solid"}},Cn=["solid","regular","light","thin","duotone","brands"],Tt=[1,2,3,4,5,6,7,8,9,10],Ln=Tt.concat([11,12,13,14,15,16,17,18,19,20]),J={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},Mn=[...Object.keys(vn),...Cn,"2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",J.GROUP,J.SWAP_OPACITY,J.PRIMARY,J.SECONDARY].concat(Tt.map(e=>"".concat(e,"x"))).concat(Ln.map(e=>"w-".concat(e))),An={"Font Awesome Kit":{400:"fak",normal:"fak"},"Font Awesome Kit Duotone":{400:"fakd",normal:"fakd"}},wn={kit:{"fa-kit":"fak"},"kit-duotone":{"fa-kit-duotone":"fakd"}},kn={kit:{fak:"fa-kit"},"kit-duotone":{fakd:"fa-kit-duotone"}},ct={kit:{kit:"fak"},"kit-duotone":{"kit-duotone":"fakd"}};const T="___FONT_AWESOME___",Ae=16,_t="fa",Ft="svg-inline--fa",X="data-fa-i2svg",we="data-fa-pseudo-element",Nn="data-fa-pseudo-element-pending",We="data-prefix",He="data-icon",st="fontawesome-i2svg",Sn="async",On=["HTML","HEAD","STYLE","SCRIPT"],Dt=(()=>{try{return!1}catch{return!1}})(),Rt=[b,L,M];function se(e){return new Proxy(e,{get(t,n){return n in t?t[n]:t[b]}})}const jt={...It};jt[b]={...It[b],...rt.kit,...rt["kit-duotone"]};const H=se(jt),ke={...zn};ke[b]={...ke[b],...ct.kit,...ct["kit-duotone"]};const re=se(ke),Ne={...xn};Ne[b]={...Ne[b],...kn.kit};const G=se(Ne),Se={...yn};Se[b]={...Se[b],...wn.kit};const Pn=se(Se),En=pn,Bt="fa-layers-text",In=gn,Tn={...mn};se(Tn);const _n=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],xe=J,q=new Set;Object.keys(re[b]).map(q.add.bind(q));Object.keys(re[L]).map(q.add.bind(q));Object.keys(re[M]).map(q.add.bind(q));const Fn=[...dn,...Mn],te=j.FontAwesomeConfig||{};function Dn(e){var t=h.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}function Rn(e){return e===""?!0:e==="false"?!1:e==="true"?!0:e}h&&typeof h.querySelector=="function"&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(t=>{let[n,a]=t;const r=Rn(Dn(n));r!=null&&(te[a]=r)});const Ut={styleDefault:"solid",familyDefault:"classic",cssPrefix:_t,replacementClass:Ft,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};te.familyPrefix&&(te.cssPrefix=te.familyPrefix);const Q={...Ut,...te};Q.autoReplaceSvg||(Q.observeMutations=!1);const f={};Object.keys(Ut).forEach(e=>{Object.defineProperty(f,e,{enumerable:!0,set:function(t){Q[e]=t,ne.forEach(n=>n(f))},get:function(){return Q[e]}})});Object.defineProperty(f,"familyPrefix",{enumerable:!0,set:function(e){Q.cssPrefix=e,ne.forEach(t=>t(f))},get:function(){return Q.cssPrefix}});j.FontAwesomeConfig=f;const ne=[];function jn(e){return ne.push(e),()=>{ne.splice(ne.indexOf(e),1)}}const D=Ae,P={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function Bn(e){if(!e||!F)return;const t=h.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=e;const n=h.head.childNodes;let a=null;for(let r=n.length-1;r>-1;r--){const c=n[r],s=(c.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(s)>-1&&(a=c)}return h.head.insertBefore(t,a),e}const Un="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function ce(){let e=12,t="";for(;e-- >0;)t+=Un[Math.random()*62|0];return t}function Z(e){const t=[];for(let n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function Ge(e){return e.classList?Z(e.classList):(e.getAttribute("class")||"").split(" ").filter(t=>t)}function Yt(e){return"".concat(e).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Yn(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,'="').concat(Yt(e[n]),'" '),"").trim()}function he(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,": ").concat(e[n].trim(),";"),"")}function Xe(e){return e.size!==P.size||e.x!==P.x||e.y!==P.y||e.rotate!==P.rotate||e.flipX||e.flipY}function Wn(e){let{transform:t,containerWidth:n,iconWidth:a}=e;const r={transform:"translate(".concat(n/2," 256)")},c="translate(".concat(t.x*32,", ").concat(t.y*32,") "),s="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),i="rotate(".concat(t.rotate," 0 0)"),o={transform:"".concat(c," ").concat(s," ").concat(i)},l={transform:"translate(".concat(a/2*-1," -256)")};return{outer:r,inner:o,path:l}}function Hn(e){let{transform:t,width:n=Ae,height:a=Ae,startCentered:r=!1}=e,c="";return r&&Pt?c+="translate(".concat(t.x/D-n/2,"em, ").concat(t.y/D-a/2,"em) "):r?c+="translate(calc(-50% + ".concat(t.x/D,"em), calc(-50% + ").concat(t.y/D,"em)) "):c+="translate(".concat(t.x/D,"em, ").concat(t.y/D,"em) "),c+="scale(".concat(t.size/D*(t.flipX?-1:1),", ").concat(t.size/D*(t.flipY?-1:1),") "),c+="rotate(".concat(t.rotate,"deg) "),c}var Gn=`:root, :host {
+import{g as et,d as Ue,f as N,w as fn,h as kt}from"./vendor-a21b3a62.js";const tt=()=>{};let Ye={},Nt={},St=null,Ot={mark:tt,measure:tt};try{typeof window<"u"&&(Ye=window),typeof document<"u"&&(Nt=document),typeof MutationObserver<"u"&&(St=MutationObserver),typeof performance<"u"&&(Ot=performance)}catch{}const{userAgent:nt=""}=Ye.navigator||{},j=Ye,h=Nt,at=St,le=Ot;j.document;const F=!!h.documentElement&&!!h.head&&typeof h.addEventListener=="function"&&typeof h.createElement=="function",Pt=~nt.indexOf("MSIE")||~nt.indexOf("Trident/");var b="classic",Et="duotone",L="sharp",M="sharp-duotone",un=[b,Et,L,M],mn={classic:{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},sharp:{900:"fass",400:"fasr",300:"fasl",100:"fast"},"sharp-duotone":{900:"fasds"}},rt={kit:{fak:"kit","fa-kit":"kit"},"kit-duotone":{fakd:"kit-duotone","fa-kit-duotone":"kit-duotone"}},dn=["kit"],pn=/fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\-\ ]/,gn=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i,hn={"Font Awesome 5 Free":{900:"fas",400:"far"},"Font Awesome 5 Pro":{900:"fas",400:"far",normal:"far",300:"fal"},"Font Awesome 5 Brands":{400:"fab",normal:"fab"},"Font Awesome 5 Duotone":{900:"fad"}},bn={"Font Awesome 6 Free":{900:"fas",400:"far"},"Font Awesome 6 Pro":{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},"Font Awesome 6 Brands":{400:"fab",normal:"fab"},"Font Awesome 6 Duotone":{900:"fad"},"Font Awesome 6 Sharp":{900:"fass",400:"fasr",normal:"fasr",300:"fasl",100:"fast"},"Font Awesome 6 Sharp Duotone":{900:"fasds"}},yn={classic:{"fa-brands":"fab","fa-duotone":"fad","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},sharp:{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"},"sharp-duotone":{"fa-solid":"fasds"}},vn={classic:["fas","far","fal","fat"],sharp:["fass","fasr","fasl","fast"],"sharp-duotone":["fasds"]},xn={classic:{fab:"fa-brands",fad:"fa-duotone",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},sharp:{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"},"sharp-duotone":{fasds:"fa-solid"}},zn={classic:{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab"},sharp:{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"},"sharp-duotone":{solid:"fasds"}},It={classic:{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands"},sharp:{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"},"sharp-duotone":{fa:"solid",fasds:"solid","fa-solid":"solid"}},Cn=["solid","regular","light","thin","duotone","brands"],Tt=[1,2,3,4,5,6,7,8,9,10],Ln=Tt.concat([11,12,13,14,15,16,17,18,19,20]),J={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},Mn=[...Object.keys(vn),...Cn,"2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",J.GROUP,J.SWAP_OPACITY,J.PRIMARY,J.SECONDARY].concat(Tt.map(e=>"".concat(e,"x"))).concat(Ln.map(e=>"w-".concat(e))),An={"Font Awesome Kit":{400:"fak",normal:"fak"},"Font Awesome Kit Duotone":{400:"fakd",normal:"fakd"}},wn={kit:{"fa-kit":"fak"},"kit-duotone":{"fa-kit-duotone":"fakd"}},kn={kit:{fak:"fa-kit"},"kit-duotone":{fakd:"fa-kit-duotone"}},ct={kit:{kit:"fak"},"kit-duotone":{"kit-duotone":"fakd"}};const T="___FONT_AWESOME___",Ae=16,_t="fa",Ft="svg-inline--fa",X="data-fa-i2svg",we="data-fa-pseudo-element",Nn="data-fa-pseudo-element-pending",We="data-prefix",He="data-icon",st="fontawesome-i2svg",Sn="async",On=["HTML","HEAD","STYLE","SCRIPT"],Dt=(()=>{try{return!1}catch{return!1}})(),Rt=[b,L,M];function se(e){return new Proxy(e,{get(t,n){return n in t?t[n]:t[b]}})}const jt={...It};jt[b]={...It[b],...rt.kit,...rt["kit-duotone"]};const H=se(jt),ke={...zn};ke[b]={...ke[b],...ct.kit,...ct["kit-duotone"]};const re=se(ke),Ne={...xn};Ne[b]={...Ne[b],...kn.kit};const G=se(Ne),Se={...yn};Se[b]={...Se[b],...wn.kit};const Pn=se(Se),En=pn,Bt="fa-layers-text",In=gn,Tn={...mn};se(Tn);const _n=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],xe=J,q=new Set;Object.keys(re[b]).map(q.add.bind(q));Object.keys(re[L]).map(q.add.bind(q));Object.keys(re[M]).map(q.add.bind(q));const Fn=[...dn,...Mn],te=j.FontAwesomeConfig||{};function Dn(e){var t=h.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}function Rn(e){return e===""?!0:e==="false"?!1:e==="true"?!0:e}h&&typeof h.querySelector=="function"&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(t=>{let[n,a]=t;const r=Rn(Dn(n));r!=null&&(te[a]=r)});const Ut={styleDefault:"solid",familyDefault:"classic",cssPrefix:_t,replacementClass:Ft,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};te.familyPrefix&&(te.cssPrefix=te.familyPrefix);const Q={...Ut,...te};Q.autoReplaceSvg||(Q.observeMutations=!1);const f={};Object.keys(Ut).forEach(e=>{Object.defineProperty(f,e,{enumerable:!0,set:function(t){Q[e]=t,ne.forEach(n=>n(f))},get:function(){return Q[e]}})});Object.defineProperty(f,"familyPrefix",{enumerable:!0,set:function(e){Q.cssPrefix=e,ne.forEach(t=>t(f))},get:function(){return Q.cssPrefix}});j.FontAwesomeConfig=f;const ne=[];function jn(e){return ne.push(e),()=>{ne.splice(ne.indexOf(e),1)}}const D=Ae,P={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function Bn(e){if(!e||!F)return;const t=h.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=e;const n=h.head.childNodes;let a=null;for(let r=n.length-1;r>-1;r--){const c=n[r],s=(c.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(s)>-1&&(a=c)}return h.head.insertBefore(t,a),e}const Un="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function ce(){let e=12,t="";for(;e-- >0;)t+=Un[Math.random()*62|0];return t}function Z(e){const t=[];for(let n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function Ge(e){return e.classList?Z(e.classList):(e.getAttribute("class")||"").split(" ").filter(t=>t)}function Yt(e){return"".concat(e).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Yn(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,'="').concat(Yt(e[n]),'" '),"").trim()}function he(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,": ").concat(e[n].trim(),";"),"")}function Xe(e){return e.size!==P.size||e.x!==P.x||e.y!==P.y||e.rotate!==P.rotate||e.flipX||e.flipY}function Wn(e){let{transform:t,containerWidth:n,iconWidth:a}=e;const r={transform:"translate(".concat(n/2," 256)")},c="translate(".concat(t.x*32,", ").concat(t.y*32,") "),s="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),i="rotate(".concat(t.rotate," 0 0)"),o={transform:"".concat(c," ").concat(s," ").concat(i)},l={transform:"translate(".concat(a/2*-1," -256)")};return{outer:r,inner:o,path:l}}function Hn(e){let{transform:t,width:n=Ae,height:a=Ae,startCentered:r=!1}=e,c="";return r&&Pt?c+="translate(".concat(t.x/D-n/2,"em, ").concat(t.y/D-a/2,"em) "):r?c+="translate(calc(-50% + ".concat(t.x/D,"em), calc(-50% + ").concat(t.y/D,"em)) "):c+="translate(".concat(t.x/D,"em, ").concat(t.y/D,"em) "),c+="scale(".concat(t.size/D*(t.flipX?-1:1),", ").concat(t.size/D*(t.flipY?-1:1),") "),c+="rotate(".concat(t.rotate,"deg) "),c}var Gn=`:root, :host {
   --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free";
   --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free";
   --fa-font-light: normal 300 1em/1 "Font Awesome 6 Pro";
diff --git a/web/settings/assets/vendor-jquery-d3cb8fad.js b/web/settings/assets/vendor-jquery-a5dbbab1.js
similarity index 99%
rename from web/settings/assets/vendor-jquery-d3cb8fad.js
rename to web/settings/assets/vendor-jquery-a5dbbab1.js
index 9f4ddfdbc1..5666439ffc 100644
--- a/web/settings/assets/vendor-jquery-d3cb8fad.js
+++ b/web/settings/assets/vendor-jquery-a5dbbab1.js
@@ -1,4 +1,4 @@
-import{c as Fr}from"./vendor-f2b8aa6f.js";var Mt={exports:{}};/*!
+import{c as Fr}from"./vendor-a21b3a62.js";var Mt={exports:{}};/*!
  * jQuery JavaScript Library v3.7.1
  * https://jquery.com/
  *
diff --git a/web/settings/assets/vendor-sortablejs-2f1828d0.js b/web/settings/assets/vendor-sortablejs-3016fed8.js
similarity index 99%
rename from web/settings/assets/vendor-sortablejs-2f1828d0.js
rename to web/settings/assets/vendor-sortablejs-3016fed8.js
index 33e7dd1f9c..2ff25eefe2 100644
--- a/web/settings/assets/vendor-sortablejs-2f1828d0.js
+++ b/web/settings/assets/vendor-sortablejs-3016fed8.js
@@ -1,4 +1,4 @@
-import{j as Ue}from"./vendor-f2b8aa6f.js";/**!
+import{j as Ue}from"./vendor-a21b3a62.js";/**!
  * Sortable 1.14.0
  * @author	RubaXa   <trash@rubaxa.org>
  * @author	owenm    <owen23355@gmail.com>
diff --git a/web/settings/index.html b/web/settings/index.html
index ad22660826..2d5467c028 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -2,30 +2,30 @@
 <html lang="de">
 
 <head>
-	<meta charset="utf-8">
-	<meta http-equiv="X-UA-Compatible" content="IE=edge">
-	<meta name="viewport" content="width=device-width,initial-scale=1.0">
-	<link rel="icon" href="/openWB/web/settings/favicon.ico">
-	<title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-b0e5e618.js"></script>
-  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-2f1828d0.js">
-  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-f2b8aa6f.js">
-  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-71546160.js">
-  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-jquery-d3cb8fad.js">
-  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-bootstrap-4ad604fa.js">
-  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-axios-65ecee4b.js">
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width,initial-scale=1.0">
+  <link rel="icon" href="/openWB/web/settings/favicon.ico">
+  <title>openWB</title>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-dc0e711f.js"></script>
+  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-3016fed8.js">
+  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-a21b3a62.js">
+  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-41164876.js">
+  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-jquery-a5dbbab1.js">
+  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-bootstrap-d0c3645c.js">
+  <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-axios-0e6de98a.js">
   <link rel="stylesheet" href="/openWB/web/settings/assets/vendor-aab9f734.css">
   <link rel="stylesheet" href="/openWB/web/settings/assets/vendor-bootstrap-c4951098.css">
   <link rel="stylesheet" href="/openWB/web/settings/assets/index-b3227821.css">
 </head>
 
 <body>
-	<noscript>
-		<strong>We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to
-			continue.</strong>
-	</noscript>
-	<div id="app"></div>
-	
+  <noscript>
+    <strong>We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to
+      continue.</strong>
+  </noscript>
+  <div id="app"></div>
+  
 </body>
 
 </html>
diff --git a/web/settings/modules/legacy_smart_home/css/settings_style.css b/web/settings/modules/legacy_smart_home/css/settings_style.css
index 7e8a4b6480..14a77a9f43 100644
--- a/web/settings/modules/legacy_smart_home/css/settings_style.css
+++ b/web/settings/modules/legacy_smart_home/css/settings_style.css
@@ -5,377 +5,398 @@ Stylesheet zu openWB settings
 */
 
 html {
-    font-size: 0.7rem;
+  font-size: 0.7rem;
 }
 
 body {
-    margin-bottom: 40px;  /* margin bottom by footer height and some more space */
+  margin-bottom: 40px;
+  /* margin bottom by footer height and some more space */
 }
 
-body > .container {
-    padding: 50px 15px 0;
+body>.container {
+  padding: 50px 15px 0;
 }
 
 .card {
-    margin-bottom: 1rem;
+  margin-bottom: 1rem;
 }
 
 .card .card-header {
-    font-weight: bold;
+  font-weight: bold;
 }
 
 .bg-primary,
 .bg-secondary,
 .bg-danger,
 .bg-success {
-    color: white;
+  color: white;
 }
 
 .bg-warning,
 .bg-info {
-    color: #212529;
+  color: #212529;
 }
 
 .card-header.bg-secondary .btn-outline-info:not(.active):not(:hover),
 .card-header.bg-success .btn-outline-info:not(.active):not(:hover),
 .card-header.bg-primary .btn-outline-info:not(.active):not(:hover) {
-    background-color: white;
+  background-color: white;
 }
 
 .card-header.bg-success .btn-outline-info.focus {
-    box-shadow: 0 0 0 0.2rem white;
+  box-shadow: 0 0 0 0.2rem white;
 }
 
 .card-header.bg-success .btn-outline-info.active,
 .card-header.bg-success .btn-outline-info:hover {
-    border-color: white;
+  border-color: white;
 }
 
-.footer > .container {
-    padding-right: 15px;
-    padding-left: 15px;
+.footer>.container {
+  padding-right: 15px;
+  padding-left: 15px;
 }
 
 .footer {
-    position: fixed;
-    bottom: 0;
-    width: 100%;
-    height: 30px; /* fixed height of footer */
-    line-height: 30px; /* vertically center the text there */
-    z-index: 1030; /* same as menu */
+  position: fixed;
+  bottom: 0;
+  width: 100%;
+  height: 30px;
+  /* fixed height of footer */
+  line-height: 30px;
+  /* vertically center the text there */
+  z-index: 1030;
+  /* same as menu */
 }
 
 h1 {
-    margin: 0.67em 0 0.2em 0;
+  margin: 0.67em 0 0.2em 0;
 }
 
 .hide {
-    display: none;
+  display: none;
 }
 
 .clickable {
-    cursor: pointer;
+  cursor: pointer;
 }
 
 /* very Small devices (up to 575.98px) */
 @media screen and (max-width: 575.98px) {
-    .navbar-collapse a,
-    .navbar-collapse .dropdown-header {
-        font-size: 1.8em;
-    }
-    .navbar-brand {
-        font-size: 2.0em;
-    }
+
+  .navbar-collapse a,
+  .navbar-collapse .dropdown-header {
+    font-size: 1.8em;
+  }
+
+  .navbar-brand {
+    font-size: 2.0em;
+  }
 }
 
 /* Devices with limited height */
 @media screen and (max-height: 1024px) {
-    .scrollable-menu {
-        height: auto;
-        overflow-x: hidden;
-        max-height: 250px;
-        overflow-y: scroll;
-    }
+  .scrollable-menu {
+    height: auto;
+    overflow-x: hidden;
+    max-height: 250px;
+    overflow-y: scroll;
+  }
 }
 
 /* Small devices (landscape phones, 576px and up) */
 @media screen and (min-width: 576px) {
-    html {
-        font-size: 0.8rem;
-    }
+  html {
+    font-size: 0.8rem;
+  }
 }
 
 /* Medium devices (tablets, 768px and up) */
 @media screen and (min-width: 768px) {
-    html {
-        font-size: 0.9rem;
-    }
+  html {
+    font-size: 0.9rem;
+  }
 }
 
 /* Large devices (desktops, 992px and up) */
 @media screen and (min-width: 992px) {
-    html {
-        font-size: 1.0rem;
-    }
+  html {
+    font-size: 1.0rem;
+  }
 }
 
 /* Extra large devices (large desktops, 1200px and up) */
 @media (min-width: 1200px) {
-    html {
-        font-size: 1.1rem;
-    }
+  html {
+    font-size: 1.1rem;
+  }
 }
 
 .vaRow {
-    /* vertical alignment of content in rows */
+  /* vertical alignment of content in rows */
   display: flex;
   align-items: center;
 }
 
 .input {
-    vertical-align: middle;
+  vertical-align: middle;
 }
 
 input:invalid,
 textarea:invalid {
-    border-bottom: 2px solid red !important;
+  border-bottom: 2px solid red !important;
 }
 
 /* Bootstrap carousel */
 .carousel-item img {
-    object-fit: contain;
-    width: 100%;
-    height: auto;
-    max-width: 100%;
-    max-height: 450px;
+  object-fit: contain;
+  width: 100%;
+  height: auto;
+  max-width: 100%;
+  max-height: 450px;
 }
 
 .carousel-caption,
 .carousel-indicators {
-    position: initial;
+  position: initial;
 }
 
 .carousel-control-next,
 .carousel-control-prev {
-    width: 100%;
+  width: 100%;
 }
 
 .carousel-caption,
 .carousel-control-next,
 .carousel-control-prev {
-    color: #212529;
+  color: #212529;
 }
 
 .carousel-control-next-icon,
 .carousel-control-prev-icon {
-    filter:invert(1);
+  filter: invert(1);
 }
 
 .carousel-indicators li {
-    width: 2rem;
-    height: 1rem;
-    border: transparent;
-    border-radius: .5rem;
-    background-color: #212529;
+  width: 2rem;
+  height: 1rem;
+  border: transparent;
+  border-radius: .5rem;
+  background-color: #212529;
 }
 
 .carousel-indicators li:hover {
-	opacity: 1;
+  opacity: 1;
 }
 
 .cssload-loader {
-	position: relative;
-	left: calc(50% - 56px);
-	width: 112px;
-	height: 112px;
-	border-radius: 50%;
-		-o-border-radius: 50%;
-		-ms-border-radius: 50%;
-		-webkit-border-radius: 50%;
-		-moz-border-radius: 50%;
-	perspective: 1400px;
+  position: relative;
+  left: calc(50% - 56px);
+  width: 112px;
+  height: 112px;
+  border-radius: 50%;
+  -o-border-radius: 50%;
+  -ms-border-radius: 50%;
+  -webkit-border-radius: 50%;
+  -moz-border-radius: 50%;
+  perspective: 1400px;
 }
 
 .cssload-inner {
-	position: absolute;
-	width: 100%;
-	height: 100%;
-	box-sizing: border-box;
-		-o-box-sizing: border-box;
-		-ms-box-sizing: border-box;
-		-webkit-box-sizing: border-box;
-		-moz-box-sizing: border-box;
-	border-radius: 50%;
-		-o-border-radius: 50%;
-		-ms-border-radius: 50%;
-		-webkit-border-radius: 50%;
-		-moz-border-radius: 50%;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  box-sizing: border-box;
+  -o-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  border-radius: 50%;
+  -o-border-radius: 50%;
+  -ms-border-radius: 50%;
+  -webkit-border-radius: 50%;
+  -moz-border-radius: 50%;
 }
 
 .cssload-inner.cssload-one {
-	left: 0%;
-	top: 0%;
-	animation: cssload-rotate-one 1.15s linear infinite;
-		-o-animation: cssload-rotate-one 1.15s linear infinite;
-		-ms-animation: cssload-rotate-one 1.15s linear infinite;
-		-webkit-animation: cssload-rotate-one 1.15s linear infinite;
-		-moz-animation: cssload-rotate-one 1.15s linear infinite;
-	border-bottom: 5px solid rgb(0,0,0);
+  left: 0%;
+  top: 0%;
+  animation: cssload-rotate-one 1.15s linear infinite;
+  -o-animation: cssload-rotate-one 1.15s linear infinite;
+  -ms-animation: cssload-rotate-one 1.15s linear infinite;
+  -webkit-animation: cssload-rotate-one 1.15s linear infinite;
+  -moz-animation: cssload-rotate-one 1.15s linear infinite;
+  border-bottom: 5px solid rgb(0, 0, 0);
 }
 
 .cssload-inner.cssload-two {
-	right: 0%;
-	top: 0%;
-	animation: cssload-rotate-two 1.15s linear infinite;
-		-o-animation: cssload-rotate-two 1.15s linear infinite;
-		-ms-animation: cssload-rotate-two 1.15s linear infinite;
-		-webkit-animation: cssload-rotate-two 1.15s linear infinite;
-		-moz-animation: cssload-rotate-two 1.15s linear infinite;
-	border-right: 5px solid rgb(0,0,0);
+  right: 0%;
+  top: 0%;
+  animation: cssload-rotate-two 1.15s linear infinite;
+  -o-animation: cssload-rotate-two 1.15s linear infinite;
+  -ms-animation: cssload-rotate-two 1.15s linear infinite;
+  -webkit-animation: cssload-rotate-two 1.15s linear infinite;
+  -moz-animation: cssload-rotate-two 1.15s linear infinite;
+  border-right: 5px solid rgb(0, 0, 0);
 }
 
 .cssload-inner.cssload-three {
-	right: 0%;
-	bottom: 0%;
-	animation: cssload-rotate-three 1.15s linear infinite;
-		-o-animation: cssload-rotate-three 1.15s linear infinite;
-		-ms-animation: cssload-rotate-three 1.15s linear infinite;
-		-webkit-animation: cssload-rotate-three 1.15s linear infinite;
-		-moz-animation: cssload-rotate-three 1.15s linear infinite;
-	border-top: 5px solid rgb(0,0,0);
+  right: 0%;
+  bottom: 0%;
+  animation: cssload-rotate-three 1.15s linear infinite;
+  -o-animation: cssload-rotate-three 1.15s linear infinite;
+  -ms-animation: cssload-rotate-three 1.15s linear infinite;
+  -webkit-animation: cssload-rotate-three 1.15s linear infinite;
+  -moz-animation: cssload-rotate-three 1.15s linear infinite;
+  border-top: 5px solid rgb(0, 0, 0);
 }
 
 @keyframes cssload-rotate-one {
-	0% {
-		transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
-	}
-	100% {
-		transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
-	}
+  0% {
+    transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
+  }
+
+  100% {
+    transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
+  }
 }
 
 @-o-keyframes cssload-rotate-one {
-	0% {
-		-o-transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
-	}
-	100% {
-		-o-transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
-	}
+  0% {
+    -o-transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
+  }
+
+  100% {
+    -o-transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
+  }
 }
 
 @-ms-keyframes cssload-rotate-one {
-	0% {
-		-ms-transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
-	}
-	100% {
-		-ms-transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
-	}
+  0% {
+    -ms-transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
+  }
+
+  100% {
+    -ms-transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
+  }
 }
 
 @-webkit-keyframes cssload-rotate-one {
-	0% {
-		-webkit-transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
-	}
-	100% {
-		-webkit-transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
-	}
+  0% {
+    -webkit-transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
+  }
 }
 
 @-moz-keyframes cssload-rotate-one {
-	0% {
-		-moz-transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
-	}
-	100% {
-		-moz-transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
-	}
+  0% {
+    -moz-transform: rotateX(35deg) rotateY(-45deg) rotateZ(0deg);
+  }
+
+  100% {
+    -moz-transform: rotateX(35deg) rotateY(-45deg) rotateZ(360deg);
+  }
 }
 
 @keyframes cssload-rotate-two {
-	0% {
-		transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
-	}
-	100% {
-		transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
-	}
+  0% {
+    transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
+  }
+
+  100% {
+    transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
+  }
 }
 
 @-o-keyframes cssload-rotate-two {
-	0% {
-		-o-transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
-	}
-	100% {
-		-o-transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
-	}
+  0% {
+    -o-transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
+  }
+
+  100% {
+    -o-transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
+  }
 }
 
 @-ms-keyframes cssload-rotate-two {
-	0% {
-		-ms-transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
-	}
-	100% {
-		-ms-transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
-	}
+  0% {
+    -ms-transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
+  }
+
+  100% {
+    -ms-transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
+  }
 }
 
 @-webkit-keyframes cssload-rotate-two {
-	0% {
-		-webkit-transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
-	}
-	100% {
-		-webkit-transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
-	}
+  0% {
+    -webkit-transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
+  }
 }
 
 @-moz-keyframes cssload-rotate-two {
-	0% {
-		-moz-transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
-	}
-	100% {
-		-moz-transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
-	}
+  0% {
+    -moz-transform: rotateX(50deg) rotateY(10deg) rotateZ(0deg);
+  }
+
+  100% {
+    -moz-transform: rotateX(50deg) rotateY(10deg) rotateZ(360deg);
+  }
 }
 
 @keyframes cssload-rotate-three {
-	0% {
-		transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
-	}
-	100% {
-		transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
-	}
+  0% {
+    transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
+  }
+
+  100% {
+    transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
+  }
 }
 
 @-o-keyframes cssload-rotate-three {
-	0% {
-		-o-transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
-	}
-	100% {
-		-o-transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
-	}
+  0% {
+    -o-transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
+  }
+
+  100% {
+    -o-transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
+  }
 }
 
 @-ms-keyframes cssload-rotate-three {
-	0% {
-		-ms-transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
-	}
-	100% {
-		-ms-transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
-	}
+  0% {
+    -ms-transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
+  }
+
+  100% {
+    -ms-transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
+  }
 }
 
 @-webkit-keyframes cssload-rotate-three {
-	0% {
-		-webkit-transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
-	}
-	100% {
-		-webkit-transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
-	}
+  0% {
+    -webkit-transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
+  }
 }
 
 @-moz-keyframes cssload-rotate-three {
-	0% {
-		-moz-transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
-	}
-	100% {
-		-moz-transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
-	}
+  0% {
+    -moz-transform: rotateX(35deg) rotateY(55deg) rotateZ(0deg);
+  }
+
+  100% {
+    -moz-transform: rotateX(35deg) rotateY(55deg) rotateZ(360deg);
+  }
 }

From 275861b56f49fc4181f0c5e149eebd029c8489c8 Mon Sep 17 00:00:00 2001
From: okaegi <72255431+okaegi@users.noreply.github.com>
Date: Mon, 30 Sep 2024 15:44:48 +0200
Subject: [PATCH 094/205] smarthome manueb (#1900)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Wenn von extern (über mqtt) der überschuss für den manuellen Modus vorgeben für ein Smarthomegerät wird, wird die aktuelle Liestungsaufnahme um eine Endlosregelung zu vermeiden.
Nur für openwb 2.0
---
 packages/smarthome/smartbase.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/packages/smarthome/smartbase.py b/packages/smarthome/smartbase.py
index 1fd299f913..d543cccf23 100644
--- a/packages/smarthome/smartbase.py
+++ b/packages/smarthome/smartbase.py
@@ -452,7 +452,10 @@ def getueb(self) -> None:
         elif (self.ueberschussberechnung == 1):
             self.devuberschuss = self._uberschuss
         else:
-            self.devuberschuss = self.device_manual_ueb
+            # eigene Leistung abziehen um endlosregelung zu vermeiden
+            self.devuberschuss = self.device_manual_ueb - self._oldwatt
+            if (self.devuberschuss < 0):
+                self.devuberschuss = 0
 
     def preturn(self, zustand: int, ueberschussberechnung: int, updatecnt: int) -> None:
         self.ueberschussberechnung = ueberschussberechnung

From f54fd231371445e86778d11545f8bef4719ae7ef Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Tue, 1 Oct 2024 07:57:57 +0200
Subject: [PATCH 095/205] Feature cards display (#1888)

* prevent input if display is off
* fix v-html warning
* updated npm packages
---
 .../cards/source/package-lock.json            | 1937 ++++++++++-------
 .../display_themes/cards/source/package.json  |    2 +-
 .../display_themes/cards/source/src/App.vue   |    3 +
 .../cards/source/src/components/DateTime.vue  |    5 +-
 .../source/src/components/LockNavItem.vue     |    3 +-
 .../source/src/components/TouchBlocker.vue    |  129 ++
 6 files changed, 1250 insertions(+), 829 deletions(-)
 create mode 100644 packages/modules/display_themes/cards/source/src/components/TouchBlocker.vue

diff --git a/packages/modules/display_themes/cards/source/package-lock.json b/packages/modules/display_themes/cards/source/package-lock.json
index 87a029d371..0b508d39f8 100644
--- a/packages/modules/display_themes/cards/source/package-lock.json
+++ b/packages/modules/display_themes/cards/source/package-lock.json
@@ -28,7 +28,7 @@
         "@vue/test-utils": "^2.4.6",
         "eslint": "^9.9.0",
         "eslint-plugin-vue": "^9.27.0",
-        "jsdom": "^24.1.1",
+        "jsdom": "^25.0.1",
         "postcss": "^8.4.41",
         "postcss-preset-env": "^10.0.2",
         "prettier": "^3.3.3",
@@ -39,23 +39,11 @@
         "vitest": "^2.0.5"
       }
     },
-    "node_modules/@ampproject/remapping": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
-      "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/gen-mapping": "^0.3.5",
-        "@jridgewell/trace-mapping": "^0.3.24"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
     "node_modules/@babel/helper-string-parser": {
       "version": "7.24.8",
       "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
       "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
+      "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
@@ -64,16 +52,18 @@
       "version": "7.24.7",
       "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
       "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
+      "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/parser": {
-      "version": "7.25.3",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz",
-      "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
+      "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
+      "license": "MIT",
       "dependencies": {
-        "@babel/types": "^7.25.2"
+        "@babel/types": "^7.25.6"
       },
       "bin": {
         "parser": "bin/babel-parser.js"
@@ -83,9 +73,10 @@
       }
     },
     "node_modules/@babel/runtime": {
-      "version": "7.25.0",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz",
-      "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==",
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+      "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
+      "license": "MIT",
       "dependencies": {
         "regenerator-runtime": "^0.14.0"
       },
@@ -94,9 +85,10 @@
       }
     },
     "node_modules/@babel/types": {
-      "version": "7.25.2",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz",
-      "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
+      "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
+      "license": "MIT",
       "dependencies": {
         "@babel/helper-string-parser": "^7.24.8",
         "@babel/helper-validator-identifier": "^7.24.7",
@@ -121,6 +113,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "engines": {
         "node": ">=18"
       },
@@ -144,6 +137,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       }
@@ -163,6 +157,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "engines": {
         "node": ">=18"
       },
@@ -186,6 +181,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "@csstools/color-helpers": "^5.0.1",
         "@csstools/css-calc": "^2.0.1"
@@ -213,6 +209,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "engines": {
         "node": ">=18"
       },
@@ -235,6 +232,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "engines": {
         "node": ">=18"
       }
@@ -254,6 +252,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "engines": {
         "node": ">=18"
       },
@@ -277,6 +276,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/selector-specificity": "^4.0.0",
         "postcss-selector-parser": "^6.1.0"
@@ -303,6 +303,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-color-parser": "^3.0.2",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -332,6 +333,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-color-parser": "^3.0.2",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -361,6 +363,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-parser-algorithms": "^3.0.1",
         "@csstools/css-tokenizer": "^3.0.1",
@@ -389,6 +392,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-calc": "^2.0.1",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -416,6 +420,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/utilities": "^2.0.0",
         "postcss-value-parser": "^4.2.0"
@@ -442,6 +447,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-color-parser": "^3.0.2",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -469,6 +475,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-color-parser": "^3.0.2",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -498,6 +505,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-color-parser": "^3.0.2",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -527,6 +535,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/postcss-progressive-custom-properties": "^4.0.0",
         "@csstools/utilities": "^2.0.0",
@@ -554,6 +563,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -576,6 +586,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/selector-specificity": "^4.0.0",
         "postcss-selector-parser": "^6.1.0"
@@ -588,9 +599,9 @@
       }
     },
     "node_modules/@csstools/postcss-light-dark-function": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.2.tgz",
-      "integrity": "sha512-QAWWDJtJ7ywzhaMe09QwhjhuwB0XN04fW1MFwoEJMcYyiQub4a57mVFV+ngQEekUhsqe/EtKVCzyOx4q3xshag==",
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.4.tgz",
+      "integrity": "sha512-yHUt5DZ61Irvp72notmAl3Zt4Me50EWToWNocazyIFTVYFwwo/EucmV3hWi9zJehu3rOSvMclL7DzvRDfbak/A==",
       "dev": true,
       "funding": [
         {
@@ -602,6 +613,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-parser-algorithms": "^3.0.1",
         "@csstools/css-tokenizer": "^3.0.1",
@@ -630,6 +642,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -652,6 +665,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -674,6 +688,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -696,6 +711,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-value-parser": "^4.2.0"
       },
@@ -721,6 +737,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-tokenizer": "^3.0.1",
         "@csstools/utilities": "^2.0.0"
@@ -747,6 +764,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "@csstools/css-calc": "^2.0.1",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -775,6 +793,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-parser-algorithms": "^3.0.1",
         "@csstools/css-tokenizer": "^3.0.1",
@@ -802,6 +821,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/utilities": "^2.0.0",
         "postcss-value-parser": "^4.2.0"
@@ -828,6 +848,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-value-parser": "^4.2.0"
       },
@@ -853,6 +874,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-color-parser": "^3.0.2",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -882,6 +904,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-value-parser": "^4.2.0"
       },
@@ -907,6 +930,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-color-parser": "^3.0.2",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -936,6 +960,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-selector-parser": "^6.1.0"
       },
@@ -961,6 +986,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-calc": "^2.0.1",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -988,6 +1014,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/color-helpers": "^5.0.1",
         "postcss-value-parser": "^4.2.0"
@@ -1014,6 +1041,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-calc": "^2.0.1",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -1041,6 +1069,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -1063,6 +1092,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -1085,6 +1115,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -1107,6 +1138,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -1122,6 +1154,7 @@
         "ppc64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "aix"
@@ -1138,6 +1171,7 @@
         "arm"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
@@ -1154,6 +1188,7 @@
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
@@ -1170,6 +1205,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
@@ -1186,6 +1222,7 @@
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
@@ -1202,6 +1239,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
@@ -1218,6 +1256,7 @@
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "freebsd"
@@ -1234,6 +1273,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "freebsd"
@@ -1250,6 +1290,7 @@
         "arm"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -1266,6 +1307,7 @@
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -1282,6 +1324,7 @@
         "ia32"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -1298,6 +1341,7 @@
         "loong64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -1314,6 +1358,7 @@
         "mips64el"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -1330,6 +1375,7 @@
         "ppc64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -1346,6 +1392,7 @@
         "riscv64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -1362,6 +1409,7 @@
         "s390x"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -1378,6 +1426,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -1394,6 +1443,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "netbsd"
@@ -1410,6 +1460,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "openbsd"
@@ -1426,6 +1477,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "sunos"
@@ -1442,6 +1494,7 @@
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -1458,6 +1511,7 @@
         "ia32"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -1474,6 +1528,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -1487,6 +1542,7 @@
       "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
       "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "eslint-visitor-keys": "^3.3.0"
       },
@@ -1502,6 +1558,7 @@
       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
       "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       },
@@ -1510,19 +1567,21 @@
       }
     },
     "node_modules/@eslint-community/regexpp": {
-      "version": "4.11.0",
-      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
-      "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
+      "version": "4.11.1",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
+      "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
       }
     },
     "node_modules/@eslint/config-array": {
-      "version": "0.17.1",
-      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz",
-      "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==",
+      "version": "0.18.0",
+      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz",
+      "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
       "dev": true,
+      "license": "Apache-2.0",
       "dependencies": {
         "@eslint/object-schema": "^2.1.4",
         "debug": "^4.3.1",
@@ -1532,11 +1591,22 @@
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       }
     },
+    "node_modules/@eslint/core": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz",
+      "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
     "node_modules/@eslint/eslintrc": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
       "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ajv": "^6.12.4",
         "debug": "^4.3.2",
@@ -1556,10 +1626,11 @@
       }
     },
     "node_modules/@eslint/js": {
-      "version": "9.9.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz",
-      "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==",
+      "version": "9.11.1",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.11.1.tgz",
+      "integrity": "sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       }
@@ -1569,6 +1640,20 @@
       "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
       "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
       "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/plugin-kit": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz",
+      "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "levn": "^0.4.1"
+      },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       }
@@ -1577,6 +1662,7 @@
       "version": "6.6.0",
       "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz",
       "integrity": "sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==",
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
@@ -1585,6 +1671,7 @@
       "version": "6.6.0",
       "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz",
       "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==",
+      "license": "MIT",
       "dependencies": {
         "@fortawesome/fontawesome-common-types": "6.6.0"
       },
@@ -1596,6 +1683,7 @@
       "version": "6.6.0",
       "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz",
       "integrity": "sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ==",
+      "license": "(CC-BY-4.0 AND MIT)",
       "dependencies": {
         "@fortawesome/fontawesome-common-types": "6.6.0"
       },
@@ -1607,6 +1695,7 @@
       "version": "6.6.0",
       "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz",
       "integrity": "sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==",
+      "license": "(CC-BY-4.0 AND MIT)",
       "dependencies": {
         "@fortawesome/fontawesome-common-types": "6.6.0"
       },
@@ -1618,6 +1707,7 @@
       "version": "3.0.8",
       "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.8.tgz",
       "integrity": "sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==",
+      "license": "MIT",
       "peerDependencies": {
         "@fortawesome/fontawesome-svg-core": "~1 || ~6",
         "vue": ">= 3.0.0 < 4"
@@ -1628,6 +1718,7 @@
       "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
       "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": ">=12.22"
       },
@@ -1641,6 +1732,7 @@
       "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz",
       "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": ">=18.18"
       },
@@ -1653,6 +1745,7 @@
       "version": "3.2.2",
       "resolved": "https://registry.npmjs.org/@inkline/inkline/-/inkline-3.2.2.tgz",
       "integrity": "sha512-qwMmoN9YaqfEtTx/PRbRwmg8W2ky2iWQuEb34ZcKh1vSff4HWg512EyCQwzO3Jv9KzG0x4lL32uYchIhM5YFzg==",
+      "license": "MIT",
       "dependencies": {
         "@popperjs/core": "2.11.6"
       },
@@ -1669,6 +1762,7 @@
       "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
       "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "string-width": "^5.1.2",
         "string-width-cjs": "npm:string-width@^4.2.0",
@@ -1682,10 +1776,11 @@
       }
     },
     "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+      "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=12"
       },
@@ -1698,6 +1793,7 @@
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
       "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-regex": "^6.0.1"
       },
@@ -1708,58 +1804,18 @@
         "url": "https://github.com/chalk/strip-ansi?sponsor=1"
       }
     },
-    "node_modules/@jridgewell/gen-mapping": {
-      "version": "0.3.5",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
-      "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/set-array": "^1.2.1",
-        "@jridgewell/sourcemap-codec": "^1.4.10",
-        "@jridgewell/trace-mapping": "^0.3.24"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/resolve-uri": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
-      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/set-array": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
-      "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
     "node_modules/@jridgewell/sourcemap-codec": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
-      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
-    },
-    "node_modules/@jridgewell/trace-mapping": {
-      "version": "0.3.25",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
-      "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/resolve-uri": "^3.1.0",
-        "@jridgewell/sourcemap-codec": "^1.4.14"
-      }
+      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+      "license": "MIT"
     },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
       "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@nodelib/fs.stat": "2.0.5",
         "run-parallel": "^1.1.9"
@@ -1773,6 +1829,7 @@
       "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
       "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 8"
       }
@@ -1782,6 +1839,7 @@
       "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
       "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@nodelib/fs.scandir": "2.1.5",
         "fastq": "^1.6.0"
@@ -1794,13 +1852,15 @@
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz",
       "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@pkgjs/parseargs": {
       "version": "0.11.0",
       "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
       "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "engines": {
         "node": ">=14"
@@ -1811,6 +1871,7 @@
       "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
       "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
       },
@@ -1822,6 +1883,7 @@
       "version": "2.11.6",
       "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
       "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==",
+      "license": "MIT",
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/popperjs"
@@ -1832,6 +1894,7 @@
       "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz",
       "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@rollup/pluginutils": "^5.0.1",
         "estree-walker": "^2.0.2",
@@ -1850,10 +1913,11 @@
       }
     },
     "node_modules/@rollup/pluginutils": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
-      "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz",
+      "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/estree": "^1.0.0",
         "estree-walker": "^2.0.2",
@@ -1872,208 +1936,224 @@
       }
     },
     "node_modules/@rollup/rollup-android-arm-eabi": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz",
-      "integrity": "sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.5.tgz",
+      "integrity": "sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==",
       "cpu": [
         "arm"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
       ]
     },
     "node_modules/@rollup/rollup-android-arm64": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.0.tgz",
-      "integrity": "sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.5.tgz",
+      "integrity": "sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==",
       "cpu": [
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
       ]
     },
     "node_modules/@rollup/rollup-darwin-arm64": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.0.tgz",
-      "integrity": "sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.5.tgz",
+      "integrity": "sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==",
       "cpu": [
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
       ]
     },
     "node_modules/@rollup/rollup-darwin-x64": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz",
-      "integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.5.tgz",
+      "integrity": "sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
       ]
     },
     "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.0.tgz",
-      "integrity": "sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.5.tgz",
+      "integrity": "sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==",
       "cpu": [
         "arm"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.0.tgz",
-      "integrity": "sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.5.tgz",
+      "integrity": "sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==",
       "cpu": [
         "arm"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-arm64-gnu": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.0.tgz",
-      "integrity": "sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.5.tgz",
+      "integrity": "sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==",
       "cpu": [
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-arm64-musl": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.0.tgz",
-      "integrity": "sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.5.tgz",
+      "integrity": "sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==",
       "cpu": [
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.0.tgz",
-      "integrity": "sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.5.tgz",
+      "integrity": "sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==",
       "cpu": [
         "ppc64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.0.tgz",
-      "integrity": "sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.5.tgz",
+      "integrity": "sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==",
       "cpu": [
         "riscv64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-s390x-gnu": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.0.tgz",
-      "integrity": "sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.5.tgz",
+      "integrity": "sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==",
       "cpu": [
         "s390x"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-gnu": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.0.tgz",
-      "integrity": "sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz",
+      "integrity": "sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-musl": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.0.tgz",
-      "integrity": "sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.5.tgz",
+      "integrity": "sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-win32-arm64-msvc": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.0.tgz",
-      "integrity": "sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.5.tgz",
+      "integrity": "sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==",
       "cpu": [
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
       ]
     },
     "node_modules/@rollup/rollup-win32-ia32-msvc": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.0.tgz",
-      "integrity": "sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.5.tgz",
+      "integrity": "sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==",
       "cpu": [
         "ia32"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
       ]
     },
     "node_modules/@rollup/rollup-win32-x64-msvc": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.0.tgz",
-      "integrity": "sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz",
+      "integrity": "sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -2083,18 +2163,28 @@
       "version": "1.10.4",
       "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz",
       "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/estree": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
-      "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
-      "dev": true
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+      "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.15",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+      "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/node": {
-      "version": "22.4.1",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.1.tgz",
-      "integrity": "sha512-1tbpb9325+gPnKK0dMm+/LMriX0vKxf6RnB0SZUqfyVkQ4fMgUSySqhxE/y8Jvs4NyF1yHzTfG9KlnkIODxPKg==",
+      "version": "22.7.4",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz",
+      "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==",
+      "license": "MIT",
       "dependencies": {
         "undici-types": "~6.19.2"
       }
@@ -2103,6 +2193,7 @@
       "version": "4.0.15",
       "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.15.tgz",
       "integrity": "sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw==",
+      "license": "MIT",
       "dependencies": {
         "@types/node": "*",
         "safe-buffer": "~5.1.1"
@@ -2112,15 +2203,17 @@
       "version": "8.5.12",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
       "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
+      "license": "MIT",
       "dependencies": {
         "@types/node": "*"
       }
     },
     "node_modules/@vitejs/plugin-vue": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz",
-      "integrity": "sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==",
+      "version": "5.1.4",
+      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz",
+      "integrity": "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^18.0.0 || >=20.0.0"
       },
@@ -2130,13 +2223,14 @@
       }
     },
     "node_modules/@vitest/expect": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz",
-      "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.1.tgz",
+      "integrity": "sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@vitest/spy": "2.0.5",
-        "@vitest/utils": "2.0.5",
+        "@vitest/spy": "2.1.1",
+        "@vitest/utils": "2.1.1",
         "chai": "^5.1.1",
         "tinyrainbow": "^1.2.0"
       },
@@ -2144,11 +2238,50 @@
         "url": "https://opencollective.com/vitest"
       }
     },
+    "node_modules/@vitest/mocker": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.1.tgz",
+      "integrity": "sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@vitest/spy": "^2.1.0-beta.1",
+        "estree-walker": "^3.0.3",
+        "magic-string": "^0.30.11"
+      },
+      "funding": {
+        "url": "https://opencollective.com/vitest"
+      },
+      "peerDependencies": {
+        "@vitest/spy": "2.1.1",
+        "msw": "^2.3.5",
+        "vite": "^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "msw": {
+          "optional": true
+        },
+        "vite": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vitest/mocker/node_modules/estree-walker": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+      "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/estree": "^1.0.0"
+      }
+    },
     "node_modules/@vitest/pretty-format": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz",
-      "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.1.tgz",
+      "integrity": "sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "tinyrainbow": "^1.2.0"
       },
@@ -2157,12 +2290,13 @@
       }
     },
     "node_modules/@vitest/runner": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz",
-      "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.1.tgz",
+      "integrity": "sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@vitest/utils": "2.0.5",
+        "@vitest/utils": "2.1.1",
         "pathe": "^1.1.2"
       },
       "funding": {
@@ -2170,13 +2304,14 @@
       }
     },
     "node_modules/@vitest/snapshot": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz",
-      "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.1.tgz",
+      "integrity": "sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@vitest/pretty-format": "2.0.5",
-        "magic-string": "^0.30.10",
+        "@vitest/pretty-format": "2.1.1",
+        "magic-string": "^0.30.11",
         "pathe": "^1.1.2"
       },
       "funding": {
@@ -2184,10 +2319,11 @@
       }
     },
     "node_modules/@vitest/spy": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz",
-      "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.1.tgz",
+      "integrity": "sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "tinyspy": "^3.0.0"
       },
@@ -2196,13 +2332,13 @@
       }
     },
     "node_modules/@vitest/utils": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz",
-      "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.1.tgz",
+      "integrity": "sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@vitest/pretty-format": "2.0.5",
-        "estree-walker": "^3.0.3",
+        "@vitest/pretty-format": "2.1.1",
         "loupe": "^3.1.1",
         "tinyrainbow": "^1.2.0"
       },
@@ -2210,71 +2346,68 @@
         "url": "https://opencollective.com/vitest"
       }
     },
-    "node_modules/@vitest/utils/node_modules/estree-walker": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
-      "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
-      "dev": true,
-      "dependencies": {
-        "@types/estree": "^1.0.0"
-      }
-    },
     "node_modules/@vue/compiler-core": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz",
-      "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.10.tgz",
+      "integrity": "sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==",
+      "license": "MIT",
       "dependencies": {
-        "@babel/parser": "^7.24.7",
-        "@vue/shared": "3.4.38",
+        "@babel/parser": "^7.25.3",
+        "@vue/shared": "3.5.10",
         "entities": "^4.5.0",
         "estree-walker": "^2.0.2",
         "source-map-js": "^1.2.0"
       }
     },
     "node_modules/@vue/compiler-dom": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz",
-      "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.10.tgz",
+      "integrity": "sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/compiler-core": "3.4.38",
-        "@vue/shared": "3.4.38"
+        "@vue/compiler-core": "3.5.10",
+        "@vue/shared": "3.5.10"
       }
     },
     "node_modules/@vue/compiler-sfc": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz",
-      "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==",
-      "dependencies": {
-        "@babel/parser": "^7.24.7",
-        "@vue/compiler-core": "3.4.38",
-        "@vue/compiler-dom": "3.4.38",
-        "@vue/compiler-ssr": "3.4.38",
-        "@vue/shared": "3.4.38",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.10.tgz",
+      "integrity": "sha512-to8E1BgpakV7224ZCm8gz1ZRSyjNCAWEplwFMWKlzCdP9DkMKhRRwt0WkCjY7jkzi/Vz3xgbpeig5Pnbly4Tow==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.25.3",
+        "@vue/compiler-core": "3.5.10",
+        "@vue/compiler-dom": "3.5.10",
+        "@vue/compiler-ssr": "3.5.10",
+        "@vue/shared": "3.5.10",
         "estree-walker": "^2.0.2",
-        "magic-string": "^0.30.10",
-        "postcss": "^8.4.40",
+        "magic-string": "^0.30.11",
+        "postcss": "^8.4.47",
         "source-map-js": "^1.2.0"
       }
     },
     "node_modules/@vue/compiler-ssr": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz",
-      "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.10.tgz",
+      "integrity": "sha512-hxP4Y3KImqdtyUKXDRSxKSRkSm1H9fCvhojEYrnaoWhE4w/y8vwWhnosJoPPe2AXm5sU7CSbYYAgkt2ZPhDz+A==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/compiler-dom": "3.4.38",
-        "@vue/shared": "3.4.38"
+        "@vue/compiler-dom": "3.5.10",
+        "@vue/shared": "3.5.10"
       }
     },
     "node_modules/@vue/devtools-api": {
-      "version": "6.6.3",
-      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.3.tgz",
-      "integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw=="
+      "version": "6.6.4",
+      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+      "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
+      "license": "MIT"
     },
     "node_modules/@vue/eslint-config-prettier": {
       "version": "9.0.0",
       "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
       "integrity": "sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "eslint-config-prettier": "^9.0.0",
         "eslint-plugin-prettier": "^5.0.0"
@@ -2285,55 +2418,61 @@
       }
     },
     "node_modules/@vue/reactivity": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz",
-      "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.10.tgz",
+      "integrity": "sha512-kW08v06F6xPSHhid9DJ9YjOGmwNDOsJJQk0ax21wKaUYzzuJGEuoKNU2Ujux8FLMrP7CFJJKsHhXN9l2WOVi2g==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/shared": "3.4.38"
+        "@vue/shared": "3.5.10"
       }
     },
     "node_modules/@vue/runtime-core": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz",
-      "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.10.tgz",
+      "integrity": "sha512-9Q86I5Qq3swSkFfzrZ+iqEy7Vla325M7S7xc1NwKnRm/qoi1Dauz0rT6mTMmscqx4qz0EDJ1wjB+A36k7rl8mA==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/reactivity": "3.4.38",
-        "@vue/shared": "3.4.38"
+        "@vue/reactivity": "3.5.10",
+        "@vue/shared": "3.5.10"
       }
     },
     "node_modules/@vue/runtime-dom": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz",
-      "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==",
-      "dependencies": {
-        "@vue/reactivity": "3.4.38",
-        "@vue/runtime-core": "3.4.38",
-        "@vue/shared": "3.4.38",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.10.tgz",
+      "integrity": "sha512-t3x7ht5qF8ZRi1H4fZqFzyY2j+GTMTDxRheT+i8M9Ph0oepUxoadmbwlFwMoW7RYCpNQLpP2Yx3feKs+fyBdpA==",
+      "license": "MIT",
+      "dependencies": {
+        "@vue/reactivity": "3.5.10",
+        "@vue/runtime-core": "3.5.10",
+        "@vue/shared": "3.5.10",
         "csstype": "^3.1.3"
       }
     },
     "node_modules/@vue/server-renderer": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz",
-      "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.10.tgz",
+      "integrity": "sha512-IVE97tt2kGKwHNq9yVO0xdh1IvYfZCShvDSy46JIh5OQxP1/EXSpoDqetVmyIzL7CYOWnnmMkVqd7YK2QSWkdw==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/compiler-ssr": "3.4.38",
-        "@vue/shared": "3.4.38"
+        "@vue/compiler-ssr": "3.5.10",
+        "@vue/shared": "3.5.10"
       },
       "peerDependencies": {
-        "vue": "3.4.38"
+        "vue": "3.5.10"
       }
     },
     "node_modules/@vue/shared": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz",
-      "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw=="
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.10.tgz",
+      "integrity": "sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==",
+      "license": "MIT"
     },
     "node_modules/@vue/test-utils": {
       "version": "2.4.6",
       "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.6.tgz",
       "integrity": "sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "js-beautify": "^1.14.9",
         "vue-component-type-helpers": "^2.0.0"
@@ -2344,6 +2483,7 @@
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz",
       "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==",
       "dev": true,
+      "license": "ISC",
       "engines": {
         "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
       }
@@ -2352,6 +2492,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
       "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+      "license": "MIT",
       "dependencies": {
         "event-target-shim": "^5.0.0"
       },
@@ -2364,6 +2505,7 @@
       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
       "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "acorn": "bin/acorn"
       },
@@ -2376,6 +2518,7 @@
       "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
       "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
       "dev": true,
+      "license": "MIT",
       "peerDependencies": {
         "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
       }
@@ -2385,6 +2528,7 @@
       "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
       "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "debug": "^4.3.4"
       },
@@ -2397,6 +2541,7 @@
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
         "fast-json-stable-stringify": "^2.0.0",
@@ -2413,6 +2558,7 @@
       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -2422,6 +2568,7 @@
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "color-convert": "^2.0.1"
       },
@@ -2432,29 +2579,18 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
-    "node_modules/anymatch": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-      "dev": true,
-      "dependencies": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
     "node_modules/argparse": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true
+      "dev": true,
+      "license": "Python-2.0"
     },
     "node_modules/asn1.js": {
       "version": "4.10.1",
       "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
       "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+      "license": "MIT",
       "dependencies": {
         "bn.js": "^4.0.0",
         "inherits": "^2.0.1",
@@ -2464,12 +2600,14 @@
     "node_modules/asn1.js/node_modules/bn.js": {
       "version": "4.12.0",
       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+      "license": "MIT"
     },
     "node_modules/assert": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz",
       "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
+      "license": "MIT",
       "dependencies": {
         "call-bind": "^1.0.2",
         "is-nan": "^1.3.2",
@@ -2483,6 +2621,7 @@
       "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
       "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=12"
       }
@@ -2491,7 +2630,8 @@
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/autoprefixer": {
       "version": "10.4.20",
@@ -2512,6 +2652,7 @@
           "url": "https://github.com/sponsors/ai"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "browserslist": "^4.23.3",
         "caniuse-lite": "^1.0.30001646",
@@ -2534,6 +2675,7 @@
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
       "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+      "license": "MIT",
       "dependencies": {
         "possible-typed-array-names": "^1.0.0"
       },
@@ -2548,7 +2690,8 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/base64-js": {
       "version": "1.5.1",
@@ -2567,24 +2710,14 @@
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
-    },
-    "node_modules/binary-extensions": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
-      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
+      ],
+      "license": "MIT"
     },
     "node_modules/bl": {
-      "version": "6.0.14",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.14.tgz",
-      "integrity": "sha512-TJfbvGdL7KFGxTsEbsED7avqpFdY56q9IW0/aiytyheJzxST/+Io6cx/4Qx0K2/u0BPRDs65mjaQzYvMZeNocQ==",
+      "version": "6.0.16",
+      "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.16.tgz",
+      "integrity": "sha512-V/kz+z2Mx5/6qDfRCilmrukUXcXuCoXKg3/3hDvzKKoSUx8CJKudfIoT29XZc3UE9xBvxs5qictiHdprwtteEg==",
+      "license": "MIT",
       "dependencies": {
         "@types/readable-stream": "^4.0.0",
         "buffer": "^6.0.3",
@@ -2595,45 +2728,38 @@
     "node_modules/bn.js": {
       "version": "5.2.1",
       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
-      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="
+      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+      "license": "MIT"
     },
     "node_modules/boolbase": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
       "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/brace-expansion": {
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
       }
     },
-    "node_modules/braces": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
-      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-      "dev": true,
-      "dependencies": {
-        "fill-range": "^7.1.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/brorand": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
-      "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="
+      "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
+      "license": "MIT"
     },
     "node_modules/browser-resolve": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz",
       "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==",
+      "license": "MIT",
       "dependencies": {
         "resolve": "^1.17.0"
       }
@@ -2642,6 +2768,7 @@
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
       "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+      "license": "MIT",
       "dependencies": {
         "buffer-xor": "^1.0.3",
         "cipher-base": "^1.0.0",
@@ -2655,6 +2782,7 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
       "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+      "license": "MIT",
       "dependencies": {
         "browserify-aes": "^1.0.4",
         "browserify-des": "^1.0.0",
@@ -2665,6 +2793,7 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
       "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+      "license": "MIT",
       "dependencies": {
         "cipher-base": "^1.0.1",
         "des.js": "^1.0.0",
@@ -2673,18 +2802,44 @@
       }
     },
     "node_modules/browserify-rsa": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
-      "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz",
+      "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==",
+      "license": "MIT",
       "dependencies": {
-        "bn.js": "^5.0.0",
-        "randombytes": "^2.0.1"
+        "bn.js": "^5.2.1",
+        "randombytes": "^2.1.0",
+        "safe-buffer": "^5.2.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
       }
     },
+    "node_modules/browserify-rsa/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
     "node_modules/browserify-sign": {
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz",
       "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==",
+      "license": "ISC",
       "dependencies": {
         "bn.js": "^5.2.1",
         "browserify-rsa": "^4.1.0",
@@ -2705,6 +2860,7 @@
       "version": "2.3.8",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
       "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+      "license": "MIT",
       "dependencies": {
         "core-util-is": "~1.0.0",
         "inherits": "~2.0.3",
@@ -2718,7 +2874,8 @@
     "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "license": "MIT"
     },
     "node_modules/browserify-sign/node_modules/safe-buffer": {
       "version": "5.2.1",
@@ -2737,12 +2894,14 @@
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
+      ],
+      "license": "MIT"
     },
     "node_modules/browserify-sign/node_modules/string_decoder": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
       "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "license": "MIT",
       "dependencies": {
         "safe-buffer": "~5.1.0"
       }
@@ -2750,20 +2909,22 @@
     "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "license": "MIT"
     },
     "node_modules/browserify-zlib": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
       "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+      "license": "MIT",
       "dependencies": {
         "pako": "~1.0.5"
       }
     },
     "node_modules/browserslist": {
-      "version": "4.23.3",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
-      "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz",
+      "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==",
       "dev": true,
       "funding": [
         {
@@ -2779,9 +2940,10 @@
           "url": "https://github.com/sponsors/ai"
         }
       ],
+      "license": "MIT",
       "dependencies": {
-        "caniuse-lite": "^1.0.30001646",
-        "electron-to-chromium": "^1.5.4",
+        "caniuse-lite": "^1.0.30001663",
+        "electron-to-chromium": "^1.5.28",
         "node-releases": "^2.0.18",
         "update-browserslist-db": "^1.1.0"
       },
@@ -2810,6 +2972,7 @@
           "url": "https://feross.org/support"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "base64-js": "^1.3.1",
         "ieee754": "^1.2.1"
@@ -2818,23 +2981,27 @@
     "node_modules/buffer-from": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+      "license": "MIT"
     },
     "node_modules/buffer-xor": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
-      "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ=="
+      "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
+      "license": "MIT"
     },
     "node_modules/builtin-status-codes": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
-      "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ=="
+      "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
+      "license": "MIT"
     },
     "node_modules/cac": {
       "version": "6.7.14",
       "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
       "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -2843,6 +3010,7 @@
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
       "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+      "license": "MIT",
       "dependencies": {
         "es-define-property": "^1.0.0",
         "es-errors": "^1.3.0",
@@ -2862,14 +3030,15 @@
       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001651",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
-      "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==",
+      "version": "1.0.30001664",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz",
+      "integrity": "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==",
       "dev": true,
       "funding": [
         {
@@ -2884,13 +3053,15 @@
           "type": "github",
           "url": "https://github.com/sponsors/ai"
         }
-      ]
+      ],
+      "license": "CC-BY-4.0"
     },
     "node_modules/chai": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz",
       "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "assertion-error": "^2.0.1",
         "check-error": "^2.1.1",
@@ -2907,6 +3078,7 @@
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-styles": "^4.1.0",
         "supports-color": "^7.1.0"
@@ -2923,50 +3095,32 @@
       "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
       "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 16"
       }
     },
     "node_modules/chokidar": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
-      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
+      "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
+        "readdirp": "^4.0.1"
       },
       "engines": {
-        "node": ">= 8.10.0"
+        "node": ">= 14.16.0"
       },
       "funding": {
         "url": "https://paulmillr.com/funding/"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/chokidar/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
       }
     },
     "node_modules/cipher-base": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
       "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.1",
         "safe-buffer": "^5.0.1"
@@ -2977,6 +3131,7 @@
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "color-name": "~1.1.4"
       },
@@ -2988,13 +3143,15 @@
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/combined-stream": {
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
       "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "delayed-stream": "~1.0.0"
       },
@@ -3007,6 +3164,7 @@
       "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
       "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=14"
       }
@@ -3014,13 +3172,15 @@
     "node_modules/commist": {
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/commist/-/commist-3.2.0.tgz",
-      "integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw=="
+      "integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==",
+      "license": "MIT"
     },
     "node_modules/concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/concat-stream": {
       "version": "2.0.0",
@@ -3029,6 +3189,7 @@
       "engines": [
         "node >= 6.0"
       ],
+      "license": "MIT",
       "dependencies": {
         "buffer-from": "^1.0.0",
         "inherits": "^2.0.3",
@@ -3040,6 +3201,7 @@
       "version": "3.6.2",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
       "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.3",
         "string_decoder": "^1.1.1",
@@ -3054,6 +3216,7 @@
       "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
       "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ini": "^1.3.4",
         "proto-list": "~1.2.1"
@@ -3067,17 +3230,20 @@
     "node_modules/constants-browserify": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
-      "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ=="
+      "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
+      "license": "MIT"
     },
     "node_modules/core-util-is": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+      "license": "MIT"
     },
     "node_modules/create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
       "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+      "license": "MIT",
       "dependencies": {
         "bn.js": "^4.1.0",
         "elliptic": "^6.5.3"
@@ -3086,12 +3252,14 @@
     "node_modules/create-ecdh/node_modules/bn.js": {
       "version": "4.12.0",
       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+      "license": "MIT"
     },
     "node_modules/create-hash": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
       "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+      "license": "MIT",
       "dependencies": {
         "cipher-base": "^1.0.1",
         "inherits": "^2.0.1",
@@ -3104,6 +3272,7 @@
       "version": "1.1.7",
       "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
       "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+      "license": "MIT",
       "dependencies": {
         "cipher-base": "^1.0.3",
         "create-hash": "^1.1.0",
@@ -3116,13 +3285,15 @@
     "node_modules/create-require": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
-      "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="
+      "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+      "license": "MIT"
     },
     "node_modules/cross-spawn": {
       "version": "7.0.3",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "path-key": "^3.1.0",
         "shebang-command": "^2.0.0",
@@ -3136,6 +3307,7 @@
       "version": "3.12.0",
       "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
       "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+      "license": "MIT",
       "dependencies": {
         "browserify-cipher": "^1.0.0",
         "browserify-sign": "^4.0.0",
@@ -3168,6 +3340,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-selector-parser": "^6.1.0"
       },
@@ -3193,6 +3366,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/selector-specificity": "^4.0.0",
         "postcss-selector-parser": "^6.1.0",
@@ -3220,6 +3394,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -3228,9 +3403,9 @@
       }
     },
     "node_modules/cssdb": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.1.0.tgz",
-      "integrity": "sha512-BQN57lfS4dYt2iL0LgyrlDbefZKEtUyrO8rbzrbGrqBk6OoyNTQLF+porY9DrpDBjLo4NEvj2IJttC7vf3x+Ew==",
+      "version": "8.1.1",
+      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.1.1.tgz",
+      "integrity": "sha512-kRbSRgZoxtZNl5snb3nOzBkFOt5AwnephcUTIEFc2DebKG9PN50/cHarlwOooTxYQ/gxsnKs3BxykhNLmfvyLg==",
       "dev": true,
       "funding": [
         {
@@ -3241,13 +3416,15 @@
           "type": "github",
           "url": "https://github.com/sponsors/csstools"
         }
-      ]
+      ],
+      "license": "MIT-0"
     },
     "node_modules/cssesc": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
       "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "cssesc": "bin/cssesc"
       },
@@ -3256,33 +3433,30 @@
       }
     },
     "node_modules/cssstyle": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz",
-      "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz",
+      "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "rrweb-cssom": "^0.6.0"
+        "rrweb-cssom": "^0.7.1"
       },
       "engines": {
         "node": ">=18"
       }
     },
-    "node_modules/cssstyle/node_modules/rrweb-cssom": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz",
-      "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==",
-      "dev": true
-    },
     "node_modules/csstype": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
-      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+      "license": "MIT"
     },
     "node_modules/data-urls": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
       "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "whatwg-mimetype": "^4.0.0",
         "whatwg-url": "^14.0.0"
@@ -3292,11 +3466,12 @@
       }
     },
     "node_modules/debug": {
-      "version": "4.3.6",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
-      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "version": "4.3.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+      "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+      "license": "MIT",
       "dependencies": {
-        "ms": "2.1.2"
+        "ms": "^2.1.3"
       },
       "engines": {
         "node": ">=6.0"
@@ -3311,13 +3486,15 @@
       "version": "10.4.3",
       "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
       "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/deep-eql": {
       "version": "5.0.2",
       "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
       "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
@@ -3326,12 +3503,14 @@
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
       "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/define-data-property": {
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
       "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+      "license": "MIT",
       "dependencies": {
         "es-define-property": "^1.0.0",
         "es-errors": "^1.3.0",
@@ -3348,6 +3527,7 @@
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
       "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+      "license": "MIT",
       "dependencies": {
         "define-data-property": "^1.0.1",
         "has-property-descriptors": "^1.0.0",
@@ -3365,6 +3545,7 @@
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
       "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=0.4.0"
       }
@@ -3373,6 +3554,7 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz",
       "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.1",
         "minimalistic-assert": "^1.0.0"
@@ -3382,6 +3564,7 @@
       "version": "5.0.3",
       "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
       "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+      "license": "MIT",
       "dependencies": {
         "bn.js": "^4.1.0",
         "miller-rabin": "^4.0.0",
@@ -3391,12 +3574,14 @@
     "node_modules/diffie-hellman/node_modules/bn.js": {
       "version": "4.12.0",
       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+      "license": "MIT"
     },
     "node_modules/domain-browser": {
       "version": "4.23.0",
       "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz",
       "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==",
+      "license": "Artistic-2.0",
       "engines": {
         "node": ">=10"
       },
@@ -3408,13 +3593,15 @@
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
       "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/editorconfig": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz",
       "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@one-ini/wasm": "0.1.1",
         "commander": "^10.0.0",
@@ -3433,6 +3620,7 @@
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
       "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0"
       }
@@ -3442,6 +3630,7 @@
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
       "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^2.0.1"
       },
@@ -3453,15 +3642,17 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.5.12",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.12.tgz",
-      "integrity": "sha512-tIhPkdlEoCL1Y+PToq3zRNehUaKp3wBX/sr7aclAWdIWjvqAe/Im/H0SiCM4c1Q8BLPHCdoJTol+ZblflydehA==",
-      "dev": true
+      "version": "1.5.29",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz",
+      "integrity": "sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==",
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/elliptic": {
       "version": "6.5.7",
       "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz",
       "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==",
+      "license": "MIT",
       "dependencies": {
         "bn.js": "^4.11.9",
         "brorand": "^1.1.0",
@@ -3475,18 +3666,21 @@
     "node_modules/elliptic/node_modules/bn.js": {
       "version": "4.12.0",
       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+      "license": "MIT"
     },
     "node_modules/emoji-regex": {
       "version": "9.2.2",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
       "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/entities": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
       "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "license": "BSD-2-Clause",
       "engines": {
         "node": ">=0.12"
       },
@@ -3498,6 +3692,7 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
       "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+      "license": "MIT",
       "dependencies": {
         "get-intrinsic": "^1.2.4"
       },
@@ -3509,6 +3704,7 @@
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
       "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.4"
       }
@@ -3519,6 +3715,7 @@
       "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
       "dev": true,
       "hasInstallScript": true,
+      "license": "MIT",
       "bin": {
         "esbuild": "bin/esbuild"
       },
@@ -3552,10 +3749,11 @@
       }
     },
     "node_modules/escalade": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
-      "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+      "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
@@ -3565,6 +3763,7 @@
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=10"
       },
@@ -3573,19 +3772,24 @@
       }
     },
     "node_modules/eslint": {
-      "version": "9.9.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz",
-      "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==",
+      "version": "9.11.1",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.11.1.tgz",
+      "integrity": "sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/regexpp": "^4.11.0",
-        "@eslint/config-array": "^0.17.1",
+        "@eslint/config-array": "^0.18.0",
+        "@eslint/core": "^0.6.0",
         "@eslint/eslintrc": "^3.1.0",
-        "@eslint/js": "9.9.0",
+        "@eslint/js": "9.11.1",
+        "@eslint/plugin-kit": "^0.2.0",
         "@humanwhocodes/module-importer": "^1.0.1",
         "@humanwhocodes/retry": "^0.3.0",
         "@nodelib/fs.walk": "^1.2.8",
+        "@types/estree": "^1.0.6",
+        "@types/json-schema": "^7.0.15",
         "ajv": "^6.12.4",
         "chalk": "^4.0.0",
         "cross-spawn": "^7.0.2",
@@ -3605,7 +3809,6 @@
         "is-glob": "^4.0.0",
         "is-path-inside": "^3.0.3",
         "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
         "lodash.merge": "^4.6.2",
         "minimatch": "^3.1.2",
         "natural-compare": "^1.4.0",
@@ -3636,6 +3839,7 @@
       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
       "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "eslint-config-prettier": "bin/cli.js"
       },
@@ -3648,6 +3852,7 @@
       "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz",
       "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "prettier-linter-helpers": "^1.0.0",
         "synckit": "^0.9.1"
@@ -3674,17 +3879,18 @@
       }
     },
     "node_modules/eslint-plugin-vue": {
-      "version": "9.27.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.27.0.tgz",
-      "integrity": "sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==",
+      "version": "9.28.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.28.0.tgz",
+      "integrity": "sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
         "globals": "^13.24.0",
         "natural-compare": "^1.4.0",
         "nth-check": "^2.1.1",
         "postcss-selector-parser": "^6.0.15",
-        "semver": "^7.6.0",
+        "semver": "^7.6.3",
         "vue-eslint-parser": "^9.4.3",
         "xml-name-validator": "^4.0.0"
       },
@@ -3700,6 +3906,7 @@
       "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
       "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "type-fest": "^0.20.2"
       },
@@ -3711,10 +3918,11 @@
       }
     },
     "node_modules/eslint-scope": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz",
-      "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==",
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz",
+      "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "esrecurse": "^4.3.0",
         "estraverse": "^5.2.0"
@@ -3727,10 +3935,11 @@
       }
     },
     "node_modules/eslint-visitor-keys": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
-      "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz",
+      "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
@@ -3739,14 +3948,15 @@
       }
     },
     "node_modules/espree": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
-      "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
+      "version": "10.2.0",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz",
+      "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "acorn": "^8.12.0",
         "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^4.0.0"
+        "eslint-visitor-keys": "^4.1.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -3760,6 +3970,7 @@
       "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
       "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
       "dev": true,
+      "license": "BSD-3-Clause",
       "dependencies": {
         "estraverse": "^5.1.0"
       },
@@ -3772,6 +3983,7 @@
       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "estraverse": "^5.2.0"
       },
@@ -3784,6 +3996,7 @@
       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "engines": {
         "node": ">=4.0"
       }
@@ -3791,13 +4004,15 @@
     "node_modules/estree-walker": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
-      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "license": "MIT"
     },
     "node_modules/esutils": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
       "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -3806,6 +4021,7 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
       "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
@@ -3814,6 +4030,7 @@
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
       "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+      "license": "MIT",
       "engines": {
         "node": ">=0.8.x"
       }
@@ -3822,62 +4039,45 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
       "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+      "license": "MIT",
       "dependencies": {
         "md5.js": "^1.3.4",
         "safe-buffer": "^5.1.1"
       }
     },
-    "node_modules/execa": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
-      "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
-      "dev": true,
-      "dependencies": {
-        "cross-spawn": "^7.0.3",
-        "get-stream": "^8.0.1",
-        "human-signals": "^5.0.0",
-        "is-stream": "^3.0.0",
-        "merge-stream": "^2.0.0",
-        "npm-run-path": "^5.1.0",
-        "onetime": "^6.0.0",
-        "signal-exit": "^4.1.0",
-        "strip-final-newline": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=16.17"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/execa?sponsor=1"
-      }
-    },
     "node_modules/fast-deep-equal": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
       "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/fast-diff": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
       "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
-      "dev": true
+      "dev": true,
+      "license": "Apache-2.0"
     },
     "node_modules/fast-json-stable-stringify": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
       "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/fast-levenshtein": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
       "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/fast-unique-numbers": {
       "version": "8.0.13",
       "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-8.0.13.tgz",
       "integrity": "sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==",
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.23.8",
         "tslib": "^2.6.2"
@@ -3891,6 +4091,7 @@
       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
       "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "reusify": "^1.0.4"
       }
@@ -3900,6 +4101,7 @@
       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
       "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "flat-cache": "^4.0.0"
       },
@@ -3907,22 +4109,11 @@
         "node": ">=16.0.0"
       }
     },
-    "node_modules/fill-range": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
-      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
-      "dev": true,
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/find-up": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
       "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "license": "MIT",
       "dependencies": {
         "locate-path": "^6.0.0",
         "path-exists": "^4.0.0"
@@ -3939,6 +4130,7 @@
       "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
       "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "flatted": "^3.2.9",
         "keyv": "^4.5.4"
@@ -3951,12 +4143,14 @@
       "version": "3.3.1",
       "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
       "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/for-each": {
       "version": "0.3.3",
       "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
       "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+      "license": "MIT",
       "dependencies": {
         "is-callable": "^1.1.3"
       }
@@ -3966,6 +4160,7 @@
       "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
       "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "cross-spawn": "^7.0.0",
         "signal-exit": "^4.0.1"
@@ -3982,6 +4177,7 @@
       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
       "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "asynckit": "^0.4.0",
         "combined-stream": "^1.0.8",
@@ -3996,6 +4192,7 @@
       "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
       "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "*"
       },
@@ -4010,6 +4207,7 @@
       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
       "dev": true,
       "hasInstallScript": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
@@ -4022,6 +4220,7 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
       "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+      "license": "MIT",
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
@@ -4031,6 +4230,7 @@
       "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
       "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "*"
       }
@@ -4039,6 +4239,7 @@
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
       "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+      "license": "MIT",
       "dependencies": {
         "es-errors": "^1.3.0",
         "function-bind": "^1.1.2",
@@ -4053,23 +4254,12 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/get-stream": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
-      "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
-      "dev": true,
-      "engines": {
-        "node": ">=16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/glob": {
       "version": "10.4.5",
       "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
       "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "foreground-child": "^3.1.0",
         "jackspeak": "^3.1.2",
@@ -4090,6 +4280,7 @@
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
       "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "is-glob": "^4.0.3"
       },
@@ -4102,6 +4293,7 @@
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
       "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0"
       }
@@ -4111,6 +4303,7 @@
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
       "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^2.0.1"
       },
@@ -4126,6 +4319,7 @@
       "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
       "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=18"
       },
@@ -4137,6 +4331,7 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
       "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "license": "MIT",
       "dependencies": {
         "get-intrinsic": "^1.1.3"
       },
@@ -4149,6 +4344,7 @@
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -4157,6 +4353,7 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
       "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+      "license": "MIT",
       "dependencies": {
         "es-define-property": "^1.0.0"
       },
@@ -4168,6 +4365,7 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
       "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.4"
       },
@@ -4179,6 +4377,7 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
       "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.4"
       },
@@ -4190,6 +4389,7 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
       "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+      "license": "MIT",
       "dependencies": {
         "has-symbols": "^1.0.3"
       },
@@ -4204,6 +4404,7 @@
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
       "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.1",
         "safe-buffer": "^5.0.1"
@@ -4216,6 +4417,7 @@
       "version": "1.1.7",
       "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
       "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.3",
         "minimalistic-assert": "^1.0.1"
@@ -4225,6 +4427,7 @@
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
       "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+      "license": "MIT",
       "dependencies": {
         "function-bind": "^1.1.2"
       },
@@ -4235,12 +4438,14 @@
     "node_modules/help-me": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz",
-      "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg=="
+      "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==",
+      "license": "MIT"
     },
     "node_modules/hmac-drbg": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
       "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+      "license": "MIT",
       "dependencies": {
         "hash.js": "^1.0.3",
         "minimalistic-assert": "^1.0.0",
@@ -4252,6 +4457,7 @@
       "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
       "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "whatwg-encoding": "^3.1.1"
       },
@@ -4264,6 +4470,7 @@
       "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
       "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "agent-base": "^7.1.0",
         "debug": "^4.3.4"
@@ -4275,13 +4482,15 @@
     "node_modules/https-browserify": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
-      "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg=="
+      "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
+      "license": "MIT"
     },
     "node_modules/https-proxy-agent": {
       "version": "7.0.5",
       "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
       "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "agent-base": "^7.0.2",
         "debug": "4"
@@ -4290,20 +4499,12 @@
         "node": ">= 14"
       }
     },
-    "node_modules/human-signals": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
-      "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=16.17.0"
-      }
-    },
     "node_modules/iconv-lite": {
       "version": "0.6.3",
       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
       "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "safer-buffer": ">= 2.1.2 < 3.0.0"
       },
@@ -4328,13 +4529,15 @@
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
+      ],
+      "license": "BSD-3-Clause"
     },
     "node_modules/ignore": {
       "version": "5.3.2",
       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
       "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 4"
       }
@@ -4343,13 +4546,15 @@
       "version": "4.3.7",
       "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
       "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/import-fresh": {
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
       "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "parent-module": "^1.0.0",
         "resolve-from": "^4.0.0"
@@ -4366,6 +4571,7 @@
       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
       "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=0.8.19"
       }
@@ -4373,18 +4579,21 @@
     "node_modules/inherits": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "license": "ISC"
     },
     "node_modules/ini": {
       "version": "1.3.8",
       "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
       "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/is-arguments": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
       "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+      "license": "MIT",
       "dependencies": {
         "call-bind": "^1.0.2",
         "has-tostringtag": "^1.0.0"
@@ -4396,22 +4605,11 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
-      "dependencies": {
-        "binary-extensions": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/is-callable": {
       "version": "1.2.7",
       "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
       "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.4"
       },
@@ -4420,9 +4618,10 @@
       }
     },
     "node_modules/is-core-module": {
-      "version": "2.15.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz",
-      "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==",
+      "version": "2.15.1",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+      "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
+      "license": "MIT",
       "dependencies": {
         "hasown": "^2.0.2"
       },
@@ -4438,6 +4637,7 @@
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -4447,6 +4647,7 @@
       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -4455,6 +4656,7 @@
       "version": "1.0.10",
       "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
       "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+      "license": "MIT",
       "dependencies": {
         "has-tostringtag": "^1.0.0"
       },
@@ -4470,6 +4672,7 @@
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "is-extglob": "^2.1.1"
       },
@@ -4481,6 +4684,7 @@
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
       "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
+      "license": "MIT",
       "dependencies": {
         "call-bind": "^1.0.0",
         "define-properties": "^1.1.3"
@@ -4492,20 +4696,12 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
     "node_modules/is-path-inside": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
       "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -4514,24 +4710,14 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
       "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
-      "dev": true
-    },
-    "node_modules/is-stream": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
-      "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
       "dev": true,
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
+      "license": "MIT"
     },
     "node_modules/is-typed-array": {
       "version": "1.1.13",
       "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
       "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+      "license": "MIT",
       "dependencies": {
         "which-typed-array": "^1.1.14"
       },
@@ -4545,18 +4731,21 @@
     "node_modules/isarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+      "license": "MIT"
     },
     "node_modules/isexe": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
       "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/isomorphic-timers-promises": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz",
       "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==",
+      "license": "MIT",
       "engines": {
         "node": ">=10"
       }
@@ -4566,6 +4755,7 @@
       "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
       "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
       "dev": true,
+      "license": "BlueOak-1.0.0",
       "dependencies": {
         "@isaacs/cliui": "^8.0.2"
       },
@@ -4581,6 +4771,7 @@
       "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz",
       "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "config-chain": "^1.1.13",
         "editorconfig": "^1.0.4",
@@ -4602,6 +4793,7 @@
       "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
       "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=14"
       }
@@ -4610,6 +4802,7 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz",
       "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==",
+      "license": "MIT",
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/js-sdsl"
@@ -4620,6 +4813,7 @@
       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "argparse": "^2.0.1"
       },
@@ -4628,12 +4822,13 @@
       }
     },
     "node_modules/jsdom": {
-      "version": "24.1.1",
-      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.1.tgz",
-      "integrity": "sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==",
+      "version": "25.0.1",
+      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz",
+      "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "cssstyle": "^4.0.1",
+        "cssstyle": "^4.1.0",
         "data-urls": "^5.0.0",
         "decimal.js": "^10.4.3",
         "form-data": "^4.0.0",
@@ -4646,7 +4841,7 @@
         "rrweb-cssom": "^0.7.1",
         "saxes": "^6.0.0",
         "symbol-tree": "^3.2.4",
-        "tough-cookie": "^4.1.4",
+        "tough-cookie": "^5.0.0",
         "w3c-xmlserializer": "^5.0.0",
         "webidl-conversions": "^7.0.0",
         "whatwg-encoding": "^3.1.1",
@@ -4672,6 +4867,7 @@
       "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
       "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": ">=18"
       }
@@ -4680,25 +4876,29 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
       "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/json-schema-traverse": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/json-stable-stringify-without-jsonify": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
       "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/keyv": {
       "version": "4.5.4",
       "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
       "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "json-buffer": "3.0.1"
       }
@@ -4708,6 +4908,7 @@
       "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
       "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "prelude-ls": "^1.2.1",
         "type-check": "~0.4.0"
@@ -4720,6 +4921,7 @@
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
       "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "license": "MIT",
       "dependencies": {
         "p-locate": "^5.0.0"
       },
@@ -4734,19 +4936,22 @@
       "version": "4.17.21",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/lodash.merge": {
       "version": "4.6.2",
       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/loupe": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz",
       "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "get-func-name": "^2.0.1"
       }
@@ -4754,12 +4959,14 @@
     "node_modules/lru-cache": {
       "version": "10.4.3",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
-      "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+      "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+      "license": "ISC"
     },
     "node_modules/magic-string": {
       "version": "0.30.11",
       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
       "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
+      "license": "MIT",
       "dependencies": {
         "@jridgewell/sourcemap-codec": "^1.5.0"
       }
@@ -4768,22 +4975,18 @@
       "version": "1.3.5",
       "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
       "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+      "license": "MIT",
       "dependencies": {
         "hash-base": "^3.0.0",
         "inherits": "^2.0.1",
         "safe-buffer": "^5.1.2"
       }
     },
-    "node_modules/merge-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "dev": true
-    },
     "node_modules/miller-rabin": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
       "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+      "license": "MIT",
       "dependencies": {
         "bn.js": "^4.0.0",
         "brorand": "^1.0.1"
@@ -4795,13 +4998,15 @@
     "node_modules/miller-rabin/node_modules/bn.js": {
       "version": "4.12.0",
       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+      "license": "MIT"
     },
     "node_modules/mime-db": {
       "version": "1.52.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
       "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 0.6"
       }
@@ -4811,6 +5016,7 @@
       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
       "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "mime-db": "1.52.0"
       },
@@ -4818,33 +5024,24 @@
         "node": ">= 0.6"
       }
     },
-    "node_modules/mimic-fn": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
-      "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/minimalistic-assert": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
-      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+      "license": "ISC"
     },
     "node_modules/minimalistic-crypto-utils": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
-      "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="
+      "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+      "license": "MIT"
     },
     "node_modules/minimatch": {
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -4856,6 +5053,7 @@
       "version": "1.2.8",
       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
       "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "license": "MIT",
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
@@ -4865,14 +5063,16 @@
       "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
       "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
       "dev": true,
+      "license": "ISC",
       "engines": {
         "node": ">=16 || 14 >=14.17"
       }
     },
     "node_modules/mqtt": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.10.0.tgz",
-      "integrity": "sha512-2qpkUi5Ftp8cBX4sPCh/yr4ULBfLFQkjlhTGVpilHznOlsmDWIligmT1anSaJ1FqiH29RONNZJXhcJQaFwddgQ==",
+      "version": "5.10.1",
+      "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.10.1.tgz",
+      "integrity": "sha512-hXCOki8sANoQ7w+2OzJzg6qMBxTtrH9RlnVNV8panLZgnl+Gh0J/t4k6r8Az8+C7y3KAcyXtn0mmLixyUom8Sw==",
+      "license": "MIT",
       "dependencies": {
         "@types/readable-stream": "^4.0.5",
         "@types/ws": "^8.5.9",
@@ -4904,6 +5104,7 @@
       "version": "9.0.0",
       "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-9.0.0.tgz",
       "integrity": "sha512-8v+HkX+fwbodsWAZIZTI074XIoxVBOmPeggQuDFCGg1SqNcC+uoRMWu7J6QlJPqIUIJXmjNYYHxBBLr1Y/Df4w==",
+      "license": "MIT",
       "dependencies": {
         "bl": "^6.0.8",
         "debug": "^4.3.4",
@@ -4911,9 +5112,10 @@
       }
     },
     "node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "license": "MIT"
     },
     "node_modules/nanoid": {
       "version": "3.3.7",
@@ -4925,6 +5127,7 @@
           "url": "https://github.com/sponsors/ai"
         }
       ],
+      "license": "MIT",
       "bin": {
         "nanoid": "bin/nanoid.cjs"
       },
@@ -4936,18 +5139,21 @@
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
       "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/node-releases": {
       "version": "2.0.18",
       "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
       "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/node-stdlib-browser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz",
-      "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.1.tgz",
+      "integrity": "sha512-dZezG3D88Lg22DwyjsDuUs7cCT/XGr8WwJgg/S3ZnkcWuPet2Tt/W1d2Eytb1Z73JpZv+XVCDI5TWv6UMRq0Gg==",
+      "license": "MIT",
       "dependencies": {
         "assert": "^2.0.0",
         "browser-resolve": "^2.0.0",
@@ -4973,7 +5179,7 @@
         "string_decoder": "^1.0.0",
         "timers-browserify": "^2.0.4",
         "tty-browserify": "0.0.1",
-        "url": "^0.11.0",
+        "url": "^0.11.4",
         "util": "^0.12.4",
         "vm-browserify": "^1.0.1"
       },
@@ -4999,6 +5205,7 @@
           "url": "https://feross.org/support"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "base64-js": "^1.3.1",
         "ieee754": "^1.1.13"
@@ -5008,6 +5215,7 @@
       "version": "3.6.2",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
       "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.3",
         "string_decoder": "^1.1.1",
@@ -5022,6 +5230,7 @@
       "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz",
       "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "abbrev": "^2.0.0"
       },
@@ -5032,56 +5241,22 @@
         "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
       }
     },
-    "node_modules/normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/normalize-range": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
       "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
       }
     },
-    "node_modules/npm-run-path": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
-      "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^4.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/npm-run-path/node_modules/path-key": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
-      "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/nth-check": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
       "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "boolbase": "^1.0.0"
       },
@@ -5093,21 +5268,24 @@
       "version": "1.0.14",
       "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz",
       "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==",
+      "license": "MIT",
       "dependencies": {
         "debug": "^4.3.1",
         "js-sdsl": "4.3.0"
       }
     },
     "node_modules/nwsapi": {
-      "version": "2.2.12",
-      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz",
-      "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==",
-      "dev": true
+      "version": "2.2.13",
+      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz",
+      "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==",
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/object-inspect": {
       "version": "1.13.2",
       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
       "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.4"
       },
@@ -5119,6 +5297,7 @@
       "version": "1.1.6",
       "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
       "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
+      "license": "MIT",
       "dependencies": {
         "call-bind": "^1.0.7",
         "define-properties": "^1.2.1"
@@ -5134,6 +5313,7 @@
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
       "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.4"
       }
@@ -5142,6 +5322,7 @@
       "version": "4.1.5",
       "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
       "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+      "license": "MIT",
       "dependencies": {
         "call-bind": "^1.0.5",
         "define-properties": "^1.2.1",
@@ -5155,26 +5336,12 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/onetime": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
-      "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
-      "dev": true,
-      "dependencies": {
-        "mimic-fn": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/optionator": {
       "version": "0.9.4",
       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
       "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "deep-is": "^0.1.3",
         "fast-levenshtein": "^2.0.6",
@@ -5190,12 +5357,14 @@
     "node_modules/os-browserify": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
-      "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A=="
+      "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
+      "license": "MIT"
     },
     "node_modules/p-limit": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
       "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "license": "MIT",
       "dependencies": {
         "yocto-queue": "^0.1.0"
       },
@@ -5210,6 +5379,7 @@
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
       "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "license": "MIT",
       "dependencies": {
         "p-limit": "^3.0.2"
       },
@@ -5221,21 +5391,24 @@
       }
     },
     "node_modules/package-json-from-dist": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
-      "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
-      "dev": true
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+      "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+      "dev": true,
+      "license": "BlueOak-1.0.0"
     },
     "node_modules/pako": {
       "version": "1.0.11",
       "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
-      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+      "license": "(MIT AND Zlib)"
     },
     "node_modules/parent-module": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
       "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "callsites": "^3.0.0"
       },
@@ -5247,6 +5420,7 @@
       "version": "5.1.7",
       "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz",
       "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==",
+      "license": "ISC",
       "dependencies": {
         "asn1.js": "^4.10.1",
         "browserify-aes": "^1.2.0",
@@ -5276,13 +5450,15 @@
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
+      ],
+      "license": "MIT"
     },
     "node_modules/parse5": {
       "version": "7.1.2",
       "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
       "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "entities": "^4.4.0"
       },
@@ -5293,12 +5469,14 @@
     "node_modules/path-browserify": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
-      "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+      "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+      "license": "MIT"
     },
     "node_modules/path-exists": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
       "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -5308,6 +5486,7 @@
       "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
       "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -5315,13 +5494,15 @@
     "node_modules/path-parse": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "license": "MIT"
     },
     "node_modules/path-scurry": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
       "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
       "dev": true,
+      "license": "BlueOak-1.0.0",
       "dependencies": {
         "lru-cache": "^10.2.0",
         "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
@@ -5337,13 +5518,15 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
       "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/pathval": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
       "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 14.16"
       }
@@ -5352,6 +5535,7 @@
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
       "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+      "license": "MIT",
       "dependencies": {
         "create-hash": "^1.1.2",
         "create-hmac": "^1.1.4",
@@ -5364,15 +5548,17 @@
       }
     },
     "node_modules/picocolors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
-      "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+      "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
+      "license": "ISC"
     },
     "node_modules/picomatch": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8.6"
       },
@@ -5384,6 +5570,7 @@
       "version": "2.2.2",
       "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.2.2.tgz",
       "integrity": "sha512-ja2XqFWZC36mupU4z1ZzxeTApV7DOw44cV4dhQ9sGwun+N89v/XP7+j7q6TanS1u1tdbK4r+1BUx7heMaIdagA==",
+      "license": "MIT",
       "dependencies": {
         "@vue/devtools-api": "^6.6.3",
         "vue-demi": "^0.14.10"
@@ -5410,6 +5597,7 @@
       "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
       "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
       "hasInstallScript": true,
+      "license": "MIT",
       "bin": {
         "vue-demi-fix": "bin/vue-demi-fix.js",
         "vue-demi-switch": "bin/vue-demi-switch.js"
@@ -5434,6 +5622,7 @@
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
       "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
+      "license": "MIT",
       "dependencies": {
         "find-up": "^5.0.0"
       },
@@ -5445,14 +5634,15 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
       "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.4"
       }
     },
     "node_modules/postcss": {
-      "version": "8.4.41",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz",
-      "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
+      "version": "8.4.47",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
+      "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
       "funding": [
         {
           "type": "opencollective",
@@ -5467,10 +5657,11 @@
           "url": "https://github.com/sponsors/ai"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "nanoid": "^3.3.7",
-        "picocolors": "^1.0.1",
-        "source-map-js": "^1.2.0"
+        "picocolors": "^1.1.0",
+        "source-map-js": "^1.2.1"
       },
       "engines": {
         "node": "^10 || ^12 || >=14"
@@ -5491,6 +5682,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "postcss-selector-parser": "^6.1.0"
       },
@@ -5506,6 +5698,7 @@
       "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz",
       "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "postcss-value-parser": "^4.2.0"
       },
@@ -5531,6 +5724,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-color-parser": "^3.0.2",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -5560,6 +5754,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "@csstools/utilities": "^2.0.0",
         "postcss-value-parser": "^4.2.0"
@@ -5586,6 +5781,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/utilities": "^2.0.0",
         "postcss-value-parser": "^4.2.0"
@@ -5612,6 +5808,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "@csstools/cascade-layer-name-parser": "^2.0.1",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -5640,6 +5837,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "@csstools/cascade-layer-name-parser": "^2.0.1",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -5669,6 +5867,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "@csstools/cascade-layer-name-parser": "^2.0.1",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -5697,6 +5896,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-selector-parser": "^6.1.0"
       },
@@ -5722,6 +5922,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/postcss-progressive-custom-properties": "^4.0.0",
         "@csstools/utilities": "^2.0.0",
@@ -5749,6 +5950,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-selector-parser": "^6.1.0"
       },
@@ -5774,6 +5976,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-selector-parser": "^6.1.0"
       },
@@ -5789,6 +5992,7 @@
       "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
       "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
       "dev": true,
+      "license": "MIT",
       "peerDependencies": {
         "postcss": "^8.1.0"
       }
@@ -5808,6 +6012,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "engines": {
         "node": ">=18"
       },
@@ -5830,6 +6035,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/utilities": "^2.0.0",
         "postcss-value-parser": "^4.2.0"
@@ -5856,6 +6062,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/css-color-parser": "^3.0.2",
         "@csstools/css-parser-algorithms": "^3.0.1",
@@ -5885,6 +6092,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-value-parser": "^4.2.0"
       },
@@ -5910,6 +6118,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/selector-resolve-nested": "^2.0.0",
         "@csstools/selector-specificity": "^4.0.0",
@@ -5923,9 +6132,9 @@
       }
     },
     "node_modules/postcss-opacity-percentage": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz",
-      "integrity": "sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz",
+      "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==",
       "dev": true,
       "funding": [
         {
@@ -5937,11 +6146,12 @@
           "url": "https://liberapay.com/mrcgrtz"
         }
       ],
+      "license": "MIT",
       "engines": {
-        "node": "^14 || ^16 || >=18"
+        "node": ">=18"
       },
       "peerDependencies": {
-        "postcss": "^8.2"
+        "postcss": "^8.4"
       }
     },
     "node_modules/postcss-overflow-shorthand": {
@@ -5959,6 +6169,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-value-parser": "^4.2.0"
       },
@@ -5974,6 +6185,7 @@
       "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
       "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
       "dev": true,
+      "license": "MIT",
       "peerDependencies": {
         "postcss": "^8"
       }
@@ -5993,6 +6205,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-value-parser": "^4.2.0"
       },
@@ -6004,9 +6217,9 @@
       }
     },
     "node_modules/postcss-preset-env": {
-      "version": "10.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.0.2.tgz",
-      "integrity": "sha512-PMxqnz0RQYMUmUi6p4P7BhC9EVGyEUCIdwn4vJ7Fy1jvc2QP4mMH75BSBB1mBFqjl3x4xYwyCNMhGZ8y0+/qOA==",
+      "version": "10.0.5",
+      "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.0.5.tgz",
+      "integrity": "sha512-ipPOgr3RY0utgJDbNoCX2dxKoQ4e4WO1pC21QhDlxCAX8+qC8O2Ezkzb54fd+8XtZ1UveA5gLjBsVo6dJDoWIg==",
       "dev": true,
       "funding": [
         {
@@ -6018,6 +6231,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "@csstools/postcss-cascade-layers": "^5.0.0",
         "@csstools/postcss-color-function": "^4.0.2",
@@ -6031,7 +6245,7 @@
         "@csstools/postcss-ic-unit": "^4.0.0",
         "@csstools/postcss-initial": "^2.0.0",
         "@csstools/postcss-is-pseudo-class": "^5.0.0",
-        "@csstools/postcss-light-dark-function": "^2.0.2",
+        "@csstools/postcss-light-dark-function": "^2.0.4",
         "@csstools/postcss-logical-float-and-clear": "^3.0.0",
         "@csstools/postcss-logical-overflow": "^2.0.0",
         "@csstools/postcss-logical-overscroll-behavior": "^2.0.0",
@@ -6054,7 +6268,7 @@
         "css-blank-pseudo": "^7.0.0",
         "css-has-pseudo": "^7.0.0",
         "css-prefers-color-scheme": "^10.0.0",
-        "cssdb": "^8.1.0",
+        "cssdb": "^8.1.1",
         "postcss-attribute-case-insensitive": "^7.0.0",
         "postcss-clamp": "^4.1.0",
         "postcss-color-functional-notation": "^7.0.2",
@@ -6073,7 +6287,7 @@
         "postcss-lab-function": "^7.0.2",
         "postcss-logical": "^8.0.0",
         "postcss-nesting": "^13.0.0",
-        "postcss-opacity-percentage": "^2.0.0",
+        "postcss-opacity-percentage": "^3.0.0",
         "postcss-overflow-shorthand": "^6.0.0",
         "postcss-page-break": "^3.0.4",
         "postcss-place": "^10.0.0",
@@ -6103,6 +6317,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT-0",
       "dependencies": {
         "postcss-selector-parser": "^6.1.0"
       },
@@ -6118,6 +6333,7 @@
       "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
       "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
       "dev": true,
+      "license": "MIT",
       "peerDependencies": {
         "postcss": "^8.0.3"
       }
@@ -6137,6 +6353,7 @@
           "url": "https://opencollective.com/csstools"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "postcss-selector-parser": "^6.1.0"
       },
@@ -6152,6 +6369,7 @@
       "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
       "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "cssesc": "^3.0.0",
         "util-deprecate": "^1.0.2"
@@ -6164,13 +6382,15 @@
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
       "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/prelude-ls": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
       "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 0.8.0"
       }
@@ -6180,6 +6400,7 @@
       "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
       "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "prettier": "bin/prettier.cjs"
       },
@@ -6195,6 +6416,7 @@
       "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
       "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "fast-diff": "^1.1.2"
       },
@@ -6206,6 +6428,7 @@
       "version": "0.11.10",
       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
       "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.6.0"
       }
@@ -6213,24 +6436,21 @@
     "node_modules/process-nextick-args": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+      "license": "MIT"
     },
     "node_modules/proto-list": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
       "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
-      "dev": true
-    },
-    "node_modules/psl": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
-      "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/public-encrypt": {
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
       "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+      "license": "MIT",
       "dependencies": {
         "bn.js": "^4.1.0",
         "browserify-rsa": "^4.0.0",
@@ -6243,17 +6463,20 @@
     "node_modules/public-encrypt/node_modules/bn.js": {
       "version": "4.12.0",
       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+      "license": "MIT"
     },
     "node_modules/punycode": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-      "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="
+      "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+      "license": "MIT"
     },
     "node_modules/qs": {
       "version": "6.13.0",
       "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
       "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+      "license": "BSD-3-Clause",
       "dependencies": {
         "side-channel": "^1.0.6"
       },
@@ -6272,12 +6495,6 @@
         "node": ">=0.4.x"
       }
     },
-    "node_modules/querystringify": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
-      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
-      "dev": true
-    },
     "node_modules/queue-microtask": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -6296,12 +6513,14 @@
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
+      ],
+      "license": "MIT"
     },
     "node_modules/randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
       "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+      "license": "MIT",
       "dependencies": {
         "safe-buffer": "^5.1.0"
       }
@@ -6310,6 +6529,7 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
       "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+      "license": "MIT",
       "dependencies": {
         "randombytes": "^2.0.5",
         "safe-buffer": "^5.1.0"
@@ -6319,6 +6539,7 @@
       "version": "4.5.2",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
       "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+      "license": "MIT",
       "dependencies": {
         "abort-controller": "^3.0.0",
         "buffer": "^6.0.3",
@@ -6331,37 +6552,36 @@
       }
     },
     "node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz",
+      "integrity": "sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==",
       "dev": true,
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
+      "license": "MIT",
       "engines": {
-        "node": ">=8.10.0"
+        "node": ">= 14.16.0"
+      },
+      "funding": {
+        "type": "individual",
+        "url": "https://paulmillr.com/funding/"
       }
     },
     "node_modules/regenerator-runtime": {
       "version": "0.14.1",
       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
-      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+      "license": "MIT"
     },
     "node_modules/reinterval": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz",
-      "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
-    },
-    "node_modules/requires-port": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
-      "dev": true
+      "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==",
+      "license": "MIT"
     },
     "node_modules/resolve": {
       "version": "1.22.8",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
       "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+      "license": "MIT",
       "dependencies": {
         "is-core-module": "^2.13.0",
         "path-parse": "^1.0.7",
@@ -6379,6 +6599,7 @@
       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
       "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=4"
       }
@@ -6388,6 +6609,7 @@
       "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
       "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "iojs": ">=1.0.0",
         "node": ">=0.10.0"
@@ -6396,24 +6618,27 @@
     "node_modules/rfdc": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
-      "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="
+      "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
+      "license": "MIT"
     },
     "node_modules/ripemd160": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
       "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+      "license": "MIT",
       "dependencies": {
         "hash-base": "^3.0.0",
         "inherits": "^2.0.1"
       }
     },
     "node_modules/rollup": {
-      "version": "4.21.0",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz",
-      "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==",
+      "version": "4.22.5",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.5.tgz",
+      "integrity": "sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@types/estree": "1.0.5"
+        "@types/estree": "1.0.6"
       },
       "bin": {
         "rollup": "dist/bin/rollup"
@@ -6423,22 +6648,22 @@
         "npm": ">=8.0.0"
       },
       "optionalDependencies": {
-        "@rollup/rollup-android-arm-eabi": "4.21.0",
-        "@rollup/rollup-android-arm64": "4.21.0",
-        "@rollup/rollup-darwin-arm64": "4.21.0",
-        "@rollup/rollup-darwin-x64": "4.21.0",
-        "@rollup/rollup-linux-arm-gnueabihf": "4.21.0",
-        "@rollup/rollup-linux-arm-musleabihf": "4.21.0",
-        "@rollup/rollup-linux-arm64-gnu": "4.21.0",
-        "@rollup/rollup-linux-arm64-musl": "4.21.0",
-        "@rollup/rollup-linux-powerpc64le-gnu": "4.21.0",
-        "@rollup/rollup-linux-riscv64-gnu": "4.21.0",
-        "@rollup/rollup-linux-s390x-gnu": "4.21.0",
-        "@rollup/rollup-linux-x64-gnu": "4.21.0",
-        "@rollup/rollup-linux-x64-musl": "4.21.0",
-        "@rollup/rollup-win32-arm64-msvc": "4.21.0",
-        "@rollup/rollup-win32-ia32-msvc": "4.21.0",
-        "@rollup/rollup-win32-x64-msvc": "4.21.0",
+        "@rollup/rollup-android-arm-eabi": "4.22.5",
+        "@rollup/rollup-android-arm64": "4.22.5",
+        "@rollup/rollup-darwin-arm64": "4.22.5",
+        "@rollup/rollup-darwin-x64": "4.22.5",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.22.5",
+        "@rollup/rollup-linux-arm-musleabihf": "4.22.5",
+        "@rollup/rollup-linux-arm64-gnu": "4.22.5",
+        "@rollup/rollup-linux-arm64-musl": "4.22.5",
+        "@rollup/rollup-linux-powerpc64le-gnu": "4.22.5",
+        "@rollup/rollup-linux-riscv64-gnu": "4.22.5",
+        "@rollup/rollup-linux-s390x-gnu": "4.22.5",
+        "@rollup/rollup-linux-x64-gnu": "4.22.5",
+        "@rollup/rollup-linux-x64-musl": "4.22.5",
+        "@rollup/rollup-win32-arm64-msvc": "4.22.5",
+        "@rollup/rollup-win32-ia32-msvc": "4.22.5",
+        "@rollup/rollup-win32-x64-msvc": "4.22.5",
         "fsevents": "~2.3.2"
       }
     },
@@ -6447,6 +6672,7 @@
       "resolved": "https://registry.npmjs.org/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.13.0.tgz",
       "integrity": "sha512-FYEvpCaD5jGtyBuBFcQImEGmTxDTPbiHjJdrYIp+mFIwgXiXabxvKUK7ZT9P31ozu2Tqm9llYQMRWsfvTMTAOw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@rollup/plugin-inject": "^5.0.4"
       },
@@ -6458,7 +6684,8 @@
       "version": "0.7.1",
       "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz",
       "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/run-parallel": {
       "version": "1.2.0",
@@ -6479,6 +6706,7 @@
           "url": "https://feross.org/support"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "queue-microtask": "^1.2.2"
       }
@@ -6486,21 +6714,24 @@
     "node_modules/safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "license": "MIT"
     },
     "node_modules/safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/sass": {
-      "version": "1.77.8",
-      "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
-      "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
+      "version": "1.79.4",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.4.tgz",
+      "integrity": "sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "chokidar": ">=3.0.0 <4.0.0",
+        "chokidar": "^4.0.0",
         "immutable": "^4.0.0",
         "source-map-js": ">=0.6.2 <2.0.0"
       },
@@ -6516,6 +6747,7 @@
       "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
       "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "xmlchars": "^2.2.0"
       },
@@ -6528,6 +6760,7 @@
       "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
       "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
       "dev": true,
+      "license": "ISC",
       "bin": {
         "semver": "bin/semver.js"
       },
@@ -6539,6 +6772,7 @@
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
       "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+      "license": "MIT",
       "dependencies": {
         "define-data-property": "^1.1.4",
         "es-errors": "^1.3.0",
@@ -6554,12 +6788,14 @@
     "node_modules/setimmediate": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-      "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
+      "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+      "license": "MIT"
     },
     "node_modules/sha.js": {
       "version": "2.4.11",
       "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
       "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+      "license": "(MIT AND BSD-3-Clause)",
       "dependencies": {
         "inherits": "^2.0.1",
         "safe-buffer": "^5.0.1"
@@ -6573,6 +6809,7 @@
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
       "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "shebang-regex": "^3.0.0"
       },
@@ -6585,6 +6822,7 @@
       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
       "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -6593,6 +6831,7 @@
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
       "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+      "license": "MIT",
       "dependencies": {
         "call-bind": "^1.0.7",
         "es-errors": "^1.3.0",
@@ -6610,13 +6849,15 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
       "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/signal-exit": {
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
       "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
       "dev": true,
+      "license": "ISC",
       "engines": {
         "node": ">=14"
       },
@@ -6625,9 +6866,10 @@
       }
     },
     "node_modules/source-map-js": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
-      "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+      "license": "BSD-3-Clause",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -6636,6 +6878,7 @@
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
       "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+      "license": "ISC",
       "engines": {
         "node": ">= 10.x"
       }
@@ -6644,18 +6887,21 @@
       "version": "0.0.2",
       "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
       "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/std-env": {
       "version": "3.7.0",
       "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
       "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/stream-browserify": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
       "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "~2.0.4",
         "readable-stream": "^3.5.0"
@@ -6665,6 +6911,7 @@
       "version": "3.6.2",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
       "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.3",
         "string_decoder": "^1.1.1",
@@ -6678,6 +6925,7 @@
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz",
       "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
+      "license": "MIT",
       "dependencies": {
         "builtin-status-codes": "^3.0.0",
         "inherits": "^2.0.4",
@@ -6689,6 +6937,7 @@
       "version": "3.6.2",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
       "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.3",
         "string_decoder": "^1.1.1",
@@ -6702,6 +6951,7 @@
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
       "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+      "license": "MIT",
       "dependencies": {
         "safe-buffer": "~5.2.0"
       }
@@ -6723,13 +6973,15 @@
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
+      ],
+      "license": "MIT"
     },
     "node_modules/string-width": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
       "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "eastasianwidth": "^0.2.0",
         "emoji-regex": "^9.2.2",
@@ -6748,6 +7000,7 @@
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
       "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "emoji-regex": "^8.0.0",
         "is-fullwidth-code-point": "^3.0.0",
@@ -6761,13 +7014,15 @@
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/string-width/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+      "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=12"
       },
@@ -6780,6 +7035,7 @@
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
       "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-regex": "^6.0.1"
       },
@@ -6795,6 +7051,7 @@
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-regex": "^5.0.1"
       },
@@ -6808,6 +7065,7 @@
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-regex": "^5.0.1"
       },
@@ -6815,23 +7073,12 @@
         "node": ">=8"
       }
     },
-    "node_modules/strip-final-newline": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
-      "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/strip-json-comments": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
       "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       },
@@ -6844,6 +7091,7 @@
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -6855,6 +7103,7 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
       "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.4"
       },
@@ -6866,13 +7115,15 @@
       "version": "3.2.4",
       "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
       "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/synckit": {
       "version": "0.9.1",
       "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz",
       "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@pkgr/core": "^0.1.0",
         "tslib": "^2.6.2"
@@ -6888,12 +7139,14 @@
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
       "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/timers-browserify": {
       "version": "2.0.12",
       "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
       "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+      "license": "MIT",
       "dependencies": {
         "setimmediate": "^1.0.4"
       },
@@ -6905,13 +7158,22 @@
       "version": "2.9.0",
       "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
       "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/tinyexec": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz",
+      "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==",
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/tinypool": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz",
       "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^18.0.0 || >=20.0.0"
       }
@@ -6921,61 +7183,61 @@
       "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz",
       "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=14.0.0"
       }
     },
     "node_modules/tinyspy": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz",
-      "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
+      "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=14.0.0"
       }
     },
+    "node_modules/tldts": {
+      "version": "6.1.48",
+      "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.48.tgz",
+      "integrity": "sha512-SPbnh1zaSzi/OsmHb1vrPNnYuwJbdWjwo5TbBYYMlTtH3/1DSb41t8bcSxkwDmmbG2q6VLPVvQc7Yf23T+1EEw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "tldts-core": "^6.1.48"
+      },
+      "bin": {
+        "tldts": "bin/cli.js"
+      }
+    },
+    "node_modules/tldts-core": {
+      "version": "6.1.48",
+      "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.48.tgz",
+      "integrity": "sha512-3gD9iKn/n2UuFH1uilBviK9gvTNT6iYwdqrj1Vr5mh8FuelvpRNaYVH4pNYqUgOGU4aAdL9X35eLuuj0gRsx+A==",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/to-fast-properties": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
       "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "license": "MIT",
       "engines": {
         "node": ">=4"
       }
     },
-    "node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
     "node_modules/tough-cookie": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
-      "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz",
+      "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==",
       "dev": true,
+      "license": "BSD-3-Clause",
       "dependencies": {
-        "psl": "^1.1.33",
-        "punycode": "^2.1.1",
-        "universalify": "^0.2.0",
-        "url-parse": "^1.5.3"
+        "tldts": "^6.1.32"
       },
       "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/tough-cookie/node_modules/punycode": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
-      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
+        "node": ">=16"
       }
     },
     "node_modules/tr46": {
@@ -6983,6 +7245,7 @@
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz",
       "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "punycode": "^2.3.1"
       },
@@ -6995,25 +7258,29 @@
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
       "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
     },
     "node_modules/tslib": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
-      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+      "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
+      "license": "0BSD"
     },
     "node_modules/tty-browserify": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
-      "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw=="
+      "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
+      "license": "MIT"
     },
     "node_modules/type-check": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
       "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "prelude-ls": "^1.2.1"
       },
@@ -7026,6 +7293,7 @@
       "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
       "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
       "dev": true,
+      "license": "(MIT OR CC0-1.0)",
       "engines": {
         "node": ">=10"
       },
@@ -7036,26 +7304,19 @@
     "node_modules/typedarray": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+      "license": "MIT"
     },
     "node_modules/undici-types": {
       "version": "6.19.8",
       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
-      "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
-    },
-    "node_modules/universalify": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
-      "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4.0.0"
-      }
+      "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+      "license": "MIT"
     },
     "node_modules/update-browserslist-db": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
-      "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+      "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
       "dev": true,
       "funding": [
         {
@@ -7071,9 +7332,10 @@
           "url": "https://github.com/sponsors/ai"
         }
       ],
+      "license": "MIT",
       "dependencies": {
-        "escalade": "^3.1.2",
-        "picocolors": "^1.0.1"
+        "escalade": "^3.2.0",
+        "picocolors": "^1.1.0"
       },
       "bin": {
         "update-browserslist-db": "cli.js"
@@ -7087,6 +7349,7 @@
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
       "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "punycode": "^2.1.0"
       }
@@ -7096,6 +7359,7 @@
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
       "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
@@ -7104,6 +7368,7 @@
       "version": "0.11.4",
       "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz",
       "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==",
+      "license": "MIT",
       "dependencies": {
         "punycode": "^1.4.1",
         "qs": "^6.12.3"
@@ -7112,20 +7377,11 @@
         "node": ">= 0.4"
       }
     },
-    "node_modules/url-parse": {
-      "version": "1.5.10",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
-      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
-      "dev": true,
-      "dependencies": {
-        "querystringify": "^2.1.1",
-        "requires-port": "^1.0.0"
-      }
-    },
     "node_modules/util": {
       "version": "0.12.5",
       "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
       "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.3",
         "is-arguments": "^1.0.4",
@@ -7137,17 +7393,19 @@
     "node_modules/util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+      "license": "MIT"
     },
     "node_modules/vite": {
-      "version": "5.4.1",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.1.tgz",
-      "integrity": "sha512-1oE6yuNXssjrZdblI9AfBbHCC41nnyoVoEZxQnID6yvQZAFBzxxkqoFLtHUMkYunL8hwOLEjgTuxpkRxvba3kA==",
+      "version": "5.4.8",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz",
+      "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "esbuild": "^0.21.3",
-        "postcss": "^8.4.41",
-        "rollup": "^4.13.0"
+        "postcss": "^8.4.43",
+        "rollup": "^4.20.0"
       },
       "bin": {
         "vite": "bin/vite.js"
@@ -7199,15 +7457,15 @@
       }
     },
     "node_modules/vite-node": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.5.tgz",
-      "integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.1.tgz",
+      "integrity": "sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "cac": "^6.7.14",
-        "debug": "^4.3.5",
+        "debug": "^4.3.6",
         "pathe": "^1.1.2",
-        "tinyrainbow": "^1.2.0",
         "vite": "^5.0.0"
       },
       "bin": {
@@ -7225,6 +7483,7 @@
       "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.22.0.tgz",
       "integrity": "sha512-F+G3LjiGbG8QpbH9bZ//GSBr9i1InSTkaulfUHFa9jkLqVGORFBoqc2A/Yu5Mmh1kNAbiAeKeK+6aaQUf3x0JA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@rollup/plugin-inject": "^5.0.5",
         "node-stdlib-browser": "^1.2.0"
@@ -7237,29 +7496,30 @@
       }
     },
     "node_modules/vitest": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.5.tgz",
-      "integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==",
-      "dev": true,
-      "dependencies": {
-        "@ampproject/remapping": "^2.3.0",
-        "@vitest/expect": "2.0.5",
-        "@vitest/pretty-format": "^2.0.5",
-        "@vitest/runner": "2.0.5",
-        "@vitest/snapshot": "2.0.5",
-        "@vitest/spy": "2.0.5",
-        "@vitest/utils": "2.0.5",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.1.tgz",
+      "integrity": "sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@vitest/expect": "2.1.1",
+        "@vitest/mocker": "2.1.1",
+        "@vitest/pretty-format": "^2.1.1",
+        "@vitest/runner": "2.1.1",
+        "@vitest/snapshot": "2.1.1",
+        "@vitest/spy": "2.1.1",
+        "@vitest/utils": "2.1.1",
         "chai": "^5.1.1",
-        "debug": "^4.3.5",
-        "execa": "^8.0.1",
-        "magic-string": "^0.30.10",
+        "debug": "^4.3.6",
+        "magic-string": "^0.30.11",
         "pathe": "^1.1.2",
         "std-env": "^3.7.0",
-        "tinybench": "^2.8.0",
+        "tinybench": "^2.9.0",
+        "tinyexec": "^0.3.0",
         "tinypool": "^1.0.0",
         "tinyrainbow": "^1.2.0",
         "vite": "^5.0.0",
-        "vite-node": "2.0.5",
+        "vite-node": "2.1.1",
         "why-is-node-running": "^2.3.0"
       },
       "bin": {
@@ -7274,8 +7534,8 @@
       "peerDependencies": {
         "@edge-runtime/vm": "*",
         "@types/node": "^18.0.0 || >=20.0.0",
-        "@vitest/browser": "2.0.5",
-        "@vitest/ui": "2.0.5",
+        "@vitest/browser": "2.1.1",
+        "@vitest/ui": "2.1.1",
         "happy-dom": "*",
         "jsdom": "*"
       },
@@ -7303,18 +7563,20 @@
     "node_modules/vm-browserify": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
-      "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
+      "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+      "license": "MIT"
     },
     "node_modules/vue": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz",
-      "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.10.tgz",
+      "integrity": "sha512-Vy2kmJwHPlouC/tSnIgXVg03SG+9wSqT1xu1Vehc+ChsXsRd7jLkKgMltVEFOzUdBr3uFwBCG+41LJtfAcBRng==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/compiler-dom": "3.4.38",
-        "@vue/compiler-sfc": "3.4.38",
-        "@vue/runtime-dom": "3.4.38",
-        "@vue/server-renderer": "3.4.38",
-        "@vue/shared": "3.4.38"
+        "@vue/compiler-dom": "3.5.10",
+        "@vue/compiler-sfc": "3.5.10",
+        "@vue/runtime-dom": "3.5.10",
+        "@vue/server-renderer": "3.5.10",
+        "@vue/shared": "3.5.10"
       },
       "peerDependencies": {
         "typescript": "*"
@@ -7326,16 +7588,18 @@
       }
     },
     "node_modules/vue-component-type-helpers": {
-      "version": "2.0.29",
-      "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.0.29.tgz",
-      "integrity": "sha512-58i+ZhUAUpwQ+9h5Hck0D+jr1qbYl4voRt5KffBx8qzELViQ4XdT/Tuo+mzq8u63teAG8K0lLaOiL5ofqW38rg==",
-      "dev": true
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.1.6.tgz",
+      "integrity": "sha512-ng11B8B/ZADUMMOsRbqv0arc442q7lifSubD0v8oDXIFoMg/mXwAPUunrroIDkY+mcD0dHKccdaznSVp8EoX3w==",
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/vue-eslint-parser": {
       "version": "9.4.3",
       "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz",
       "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "debug": "^4.3.4",
         "eslint-scope": "^7.1.1",
@@ -7360,6 +7624,7 @@
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
       "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "esrecurse": "^4.3.0",
         "estraverse": "^5.2.0"
@@ -7376,6 +7641,7 @@
       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
       "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       },
@@ -7388,6 +7654,7 @@
       "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
       "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "acorn": "^8.9.0",
         "acorn-jsx": "^5.3.2",
@@ -7401,11 +7668,12 @@
       }
     },
     "node_modules/vue-router": {
-      "version": "4.4.3",
-      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.3.tgz",
-      "integrity": "sha512-sv6wmNKx2j3aqJQDMxLFzs/u/mjA9Z5LCgy6BE0f7yFWMjrPLnS/sPNn8ARY/FXw6byV18EFutn5lTO6+UsV5A==",
+      "version": "4.4.5",
+      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.5.tgz",
+      "integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/devtools-api": "^6.6.3"
+        "@vue/devtools-api": "^6.6.4"
       },
       "funding": {
         "url": "https://github.com/sponsors/posva"
@@ -7419,6 +7687,7 @@
       "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
       "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "xml-name-validator": "^5.0.0"
       },
@@ -7431,6 +7700,7 @@
       "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
       "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": ">=18"
       }
@@ -7440,6 +7710,7 @@
       "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
       "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "engines": {
         "node": ">=12"
       }
@@ -7449,6 +7720,7 @@
       "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
       "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "iconv-lite": "0.6.3"
       },
@@ -7461,6 +7733,7 @@
       "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
       "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=18"
       }
@@ -7470,6 +7743,7 @@
       "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz",
       "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "tr46": "^5.0.0",
         "webidl-conversions": "^7.0.0"
@@ -7483,6 +7757,7 @@
       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "isexe": "^2.0.0"
       },
@@ -7497,6 +7772,7 @@
       "version": "1.1.15",
       "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
       "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+      "license": "MIT",
       "dependencies": {
         "available-typed-arrays": "^1.0.7",
         "call-bind": "^1.0.7",
@@ -7516,6 +7792,7 @@
       "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
       "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "siginfo": "^2.0.0",
         "stackback": "0.0.2"
@@ -7532,6 +7809,7 @@
       "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
       "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -7540,6 +7818,7 @@
       "version": "7.1.8",
       "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.1.8.tgz",
       "integrity": "sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw==",
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.24.5",
         "tslib": "^2.6.2",
@@ -7551,6 +7830,7 @@
       "version": "6.1.8",
       "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-6.1.8.tgz",
       "integrity": "sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ==",
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.24.5",
         "fast-unique-numbers": "^8.0.13",
@@ -7562,6 +7842,7 @@
       "version": "7.0.71",
       "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-7.0.71.tgz",
       "integrity": "sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ==",
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.24.5",
         "tslib": "^2.6.2"
@@ -7572,6 +7853,7 @@
       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
       "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-styles": "^6.1.0",
         "string-width": "^5.0.1",
@@ -7590,6 +7872,7 @@
       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
       "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-styles": "^4.0.0",
         "string-width": "^4.1.0",
@@ -7606,13 +7889,15 @@
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/wrap-ansi-cjs/node_modules/string-width": {
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
       "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "emoji-regex": "^8.0.0",
         "is-fullwidth-code-point": "^3.0.0",
@@ -7623,10 +7908,11 @@
       }
     },
     "node_modules/wrap-ansi/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+      "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=12"
       },
@@ -7639,6 +7925,7 @@
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
       "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=12"
       },
@@ -7651,6 +7938,7 @@
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
       "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-regex": "^6.0.1"
       },
@@ -7665,6 +7953,7 @@
       "version": "8.18.0",
       "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
       "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+      "license": "MIT",
       "engines": {
         "node": ">=10.0.0"
       },
@@ -7686,6 +7975,7 @@
       "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
       "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": ">=12"
       }
@@ -7694,12 +7984,14 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
       "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
       "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "license": "MIT",
       "engines": {
         "node": ">=0.4"
       }
@@ -7708,6 +8000,7 @@
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
       "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "license": "MIT",
       "engines": {
         "node": ">=10"
       },
diff --git a/packages/modules/display_themes/cards/source/package.json b/packages/modules/display_themes/cards/source/package.json
index cb7e29a33f..36579c98db 100644
--- a/packages/modules/display_themes/cards/source/package.json
+++ b/packages/modules/display_themes/cards/source/package.json
@@ -32,7 +32,7 @@
     "@vue/test-utils": "^2.4.6",
     "eslint": "^9.9.0",
     "eslint-plugin-vue": "^9.27.0",
-    "jsdom": "^24.1.1",
+    "jsdom": "^25.0.1",
     "postcss": "^8.4.41",
     "postcss-preset-env": "^10.0.2",
     "prettier": "^3.3.3",
diff --git a/packages/modules/display_themes/cards/source/src/App.vue b/packages/modules/display_themes/cards/source/src/App.vue
index c48712ea04..251f0544ee 100644
--- a/packages/modules/display_themes/cards/source/src/App.vue
+++ b/packages/modules/display_themes/cards/source/src/App.vue
@@ -5,6 +5,7 @@ import mqtt from "mqtt";
 import DateTime from "@/components/DateTime.vue";
 import NavBar from "@/components/NavBar.vue";
 import LockNavItem from "@/components/LockNavItem.vue";
+import TouchBlocker from "@/components/TouchBlocker.vue";
 
 import { useMqttStore } from "@/stores/mqtt.js";
 
@@ -15,6 +16,7 @@ export default {
     DateTime,
     NavBar,
     LockNavItem,
+    TouchBlocker,
   },
   data() {
     return {
@@ -242,6 +244,7 @@ export default {
       </i-container>
       <LockNavItem />
       <NavBar :changes-locked="changesLocked" />
+      <TouchBlocker />
     </i-layout-aside>
 
     <i-layout-content>
diff --git a/packages/modules/display_themes/cards/source/src/components/DateTime.vue b/packages/modules/display_themes/cards/source/src/components/DateTime.vue
index c15284d518..390f73a4b1 100644
--- a/packages/modules/display_themes/cards/source/src/components/DateTime.vue
+++ b/packages/modules/display_themes/cards/source/src/components/DateTime.vue
@@ -1,9 +1,6 @@
 <script>
 export default {
   name: "DateTime",
-  props: {
-    separator: { type: String, default: "<br />" },
-  },
   data() {
     return {
       dateTimeInterval: "",
@@ -39,6 +36,6 @@ export default {
 };
 </script>
 
-<template>{{ time }}<span v-html="separator" />{{ date }}</template>
+<template>{{ time }}<slot><br></slot>{{ date }}</template>
 
 <style scoped></style>
diff --git a/packages/modules/display_themes/cards/source/src/components/LockNavItem.vue b/packages/modules/display_themes/cards/source/src/components/LockNavItem.vue
index aaaf877496..5870b254a5 100644
--- a/packages/modules/display_themes/cards/source/src/components/LockNavItem.vue
+++ b/packages/modules/display_themes/cards/source/src/components/LockNavItem.vue
@@ -29,7 +29,7 @@ export default {
       code: "",
       countdown: 0,
       countdownInterval: undefined,
-      events: ["mousemove", "touchmove", "wheel"],
+      events: ["mousemove", "touchmove", "wheel", "click"],
     };
   },
   computed: {
@@ -65,7 +65,6 @@ export default {
       this.modalPinEntryVisible = true;
     },
     checkUnlockCode(event) {
-      console.log("checkUnlockCode", event);
       if (this.mqttStore.checkChangesLockCode(event)) {
         this.$refs.lockInput.success("success");
         this.changesLocked = false;
diff --git a/packages/modules/display_themes/cards/source/src/components/TouchBlocker.vue b/packages/modules/display_themes/cards/source/src/components/TouchBlocker.vue
new file mode 100644
index 0000000000..66ebfa2ad6
--- /dev/null
+++ b/packages/modules/display_themes/cards/source/src/components/TouchBlocker.vue
@@ -0,0 +1,129 @@
+<script>
+import { useMqttStore } from "@/stores/mqtt.js";
+
+export default {
+  name: "TouchBlocker",
+  data() {
+    return {
+      mqttStore: useMqttStore(),
+      show: false,
+      countdown: undefined,
+      countdownInterval: undefined,
+      events: ["mousemove", "touchmove", "wheel", "click"],
+      eventHandlerSetup: false,
+    };
+  },
+  computed: {
+    configuredDisplayStandby() {
+      if (this.mqttStore.getDisplayStandby === 0 || this.mqttStore.getDisplayStandby === undefined) {
+        return undefined;
+      }
+      return this.mqttStore.getDisplayStandby;
+    },
+    touchBlockerTimeout() {
+      // show touch blocker right before the configured standby time
+      return Math.max(this.configuredDisplayStandby - 3, 1);
+    },
+  },
+  mounted() {
+    this.setupEventHandler();
+    this.setupTimeout();
+  },
+  unmounted() {
+    this.clearEventHandler();
+    this.clearTimeout();
+  },
+  methods: {
+    handleTouchBlockerClick(event) {
+      if (event === false) {
+        this.show = false;
+        this.setupEventHandler();
+        this.setupTimeout();
+      }
+    },
+    setupEventHandler() {
+      if (!this.eventHandlerSetup) {
+        this.events.forEach((event) => {
+          document.addEventListener(event, this.handleDocumentEvent, { passive: true });
+        });
+        this.eventHandlerSetup = true;
+      }
+    },
+    clearEventHandler() {
+      if (this.eventHandlerSetup) {
+        this.events.forEach((event) => {
+          document.removeEventListener(event, this.handleDocumentEvent, { passive: true });
+        });
+        this.eventHandlerSetup = false;
+      }
+    },
+    setupTimeout() {
+      if (this.countdownInterval === undefined) {
+        this.countdownInterval = setInterval(this.updateCountdown, 1000);
+      }
+    },
+    clearTimeout() {
+      if (this.countdownInterval !== undefined) {
+        clearInterval(this.countdownInterval);
+        this.countdownInterval = undefined;
+      }
+    },
+    updateCountdown() {
+      if (this.countdown === undefined) {
+        this.countdown = this.touchBlockerTimeout;
+      } else {
+        this.countdown -= 1;
+        if (this.countdown < 1) {
+          this.showTouchBlocker();
+        }
+      }
+    },
+    handleDocumentEvent() {
+      this.countdown = this.touchBlockerTimeout;
+      this.show = false;
+    },
+    showTouchBlocker() {
+      this.show = true;
+      this.clearTimeout();
+    },
+  },
+};
+</script>
+
+<template>
+  <Teleport to="body">
+    <IModal
+      class="touch-blocker"
+      size="sm"
+      color="dark"
+      :model-value="show"
+      @update:model-value="handleTouchBlockerClick($event)"
+    >
+      <img
+        class="logo"
+        src="/openWB_logo_dark.png"
+      >
+      <p>
+        Bitte das Display berühren.
+      </p>
+    </IModal>
+  </Teleport>
+</template>
+
+<style scoped>
+.touch-blocker{
+  backdrop-filter: blur(5px);
+}
+
+:deep(.modal) {
+  box-shadow: none;
+}
+
+:deep(.modal > .modal-body) {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  background: transparent;
+  border: none;
+}
+</style>

From 1afe0cb01642e901d75d397e92ee8a48f77890d7 Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Tue, 1 Oct 2024 05:58:36 +0000
Subject: [PATCH 096/205] Build Display Theme: Cards

---
 .../assets/ChargePointPlugBadge-4-IgwHFS.js   |  1 -
 .../assets/ChargePointPlugBadge-DyF92yTK.js   |  1 +
 .../web/assets/ChargePointsView-BxRzqrN1.js   |  1 -
 .../web/assets/ChargePointsView-CZeUBF37.js   |  1 +
 ...-BnSsjBAn.js => DashBoardCard-BterAPyf.js} |  2 +-
 .../web/assets/DashBoardView-BaB3KBmL.js      |  1 -
 .../web/assets/DashBoardView-_HZMNhnS.js      |  1 +
 ...fJc3wqIp.js => EnergyFlowView-BcB2FDT1.js} |  2 +-
 .../cards/web/assets/StatusView-Dn5MUjQZ.js   |  1 -
 .../cards/web/assets/StatusView-uYO1gy9a.js   |  1 +
 .../cards/web/assets/index-AtLAf1dw.js        |  2 --
 .../cards/web/assets/index-B7S8vMKj.css       |  1 -
 .../cards/web/assets/index-BkCKa8xR.css       |  1 +
 .../cards/web/assets/index-CHLaD7ED.js        |  2 ++
 .../cards/web/assets/vendor-CZ1MGz7j.js       | 29 +++++++++++++++++++
 .../cards/web/assets/vendor-Cv1UtYRW.js       | 29 -------------------
 ...IOjI.js => vendor-fortawesome-C68yAli-.js} |  2 +-
 .../web/assets/vendor-inkline-7C7Ddj37.js     |  1 -
 ...Agb5gs.css => vendor-inkline-BDgt6n8h.css} |  2 +-
 .../web/assets/vendor-inkline-Ce5aFAnW.js     |  1 +
 .../display_themes/cards/web/index.html       | 12 ++++----
 21 files changed, 47 insertions(+), 47 deletions(-)
 delete mode 100644 packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-4-IgwHFS.js
 create mode 100644 packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-DyF92yTK.js
 delete mode 100644 packages/modules/display_themes/cards/web/assets/ChargePointsView-BxRzqrN1.js
 create mode 100644 packages/modules/display_themes/cards/web/assets/ChargePointsView-CZeUBF37.js
 rename packages/modules/display_themes/cards/web/assets/{DashBoardCard-BnSsjBAn.js => DashBoardCard-BterAPyf.js} (83%)
 delete mode 100644 packages/modules/display_themes/cards/web/assets/DashBoardView-BaB3KBmL.js
 create mode 100644 packages/modules/display_themes/cards/web/assets/DashBoardView-_HZMNhnS.js
 rename packages/modules/display_themes/cards/web/assets/{EnergyFlowView-fJc3wqIp.js => EnergyFlowView-BcB2FDT1.js} (72%)
 delete mode 100644 packages/modules/display_themes/cards/web/assets/StatusView-Dn5MUjQZ.js
 create mode 100644 packages/modules/display_themes/cards/web/assets/StatusView-uYO1gy9a.js
 delete mode 100644 packages/modules/display_themes/cards/web/assets/index-AtLAf1dw.js
 delete mode 100644 packages/modules/display_themes/cards/web/assets/index-B7S8vMKj.css
 create mode 100644 packages/modules/display_themes/cards/web/assets/index-BkCKa8xR.css
 create mode 100644 packages/modules/display_themes/cards/web/assets/index-CHLaD7ED.js
 create mode 100644 packages/modules/display_themes/cards/web/assets/vendor-CZ1MGz7j.js
 delete mode 100644 packages/modules/display_themes/cards/web/assets/vendor-Cv1UtYRW.js
 rename packages/modules/display_themes/cards/web/assets/{vendor-fortawesome-CVmDIOjI.js => vendor-fortawesome-C68yAli-.js} (99%)
 delete mode 100644 packages/modules/display_themes/cards/web/assets/vendor-inkline-7C7Ddj37.js
 rename packages/modules/display_themes/cards/web/assets/{vendor-inkline-B7Agb5gs.css => vendor-inkline-BDgt6n8h.css} (62%)
 create mode 100644 packages/modules/display_themes/cards/web/assets/vendor-inkline-Ce5aFAnW.js

diff --git a/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-4-IgwHFS.js b/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-4-IgwHFS.js
deleted file mode 100644
index 15cbfd0349..0000000000
--- a/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-4-IgwHFS.js
+++ /dev/null
@@ -1 +0,0 @@
-import{Q as p,o as n,e as c,i as m,F as P,A as C,z as _,j as x,l,n as S,p as w,s as k,x as u}from"./vendor-Cv1UtYRW.js";import{_ as y}from"./vendor-inkline-7C7Ddj37.js";import{u as v}from"./index-AtLAf1dw.js";import{l as N,z as b,A as D,B as z,F as B}from"./vendor-fortawesome-CVmDIOjI.js";const d={props:{data:{required:!1,type:Array,default:void 0},socData:{required:!1,type:Array,default:void 0},width:{type:Number,default:250},height:{type:Number,default:70},gap:{type:Number,default:3},stroke:{type:Number,default:3},min:{type:Number,default:0},max:{type:Number,default:1},color:{type:String,default:"var(--color--primary)"},colorNegative:{type:String,default:void 0}},computed:{highestPoint(){return Math.max(1,this.max,...this.slicedData)},lowestPoint(){return Math.min(0,this.min,...this.slicedData)},maxPoints(){return Math.floor(this.width/(this.stroke+this.gap))},slicedData(){if(this.data)return this.data.slice(-this.maxPoints)},slicedSocData(){if(this.socData)return this.socData.slice(-this.maxPoints)},zeroHeight(){return this.height-(0-this.lowestPoint)/(this.highestPoint-this.lowestPoint)*this.height},coordinates(){if(this.data)return this.calculateCoordinates(this.slicedData,this.lowestPoint,this.highestPoint)},socCoordinates(){if(this.socData)return this.calculateCoordinates(this.slicedSocData,0,100)},bars(){if(this.coordinates){const t=[];return this.coordinates.forEach(s=>{const e=s.x,r=s.y,o=this.stroke,a=Math.min(r,this.zeroHeight),i=Math.abs(r-this.zeroHeight),h=r>this.zeroHeight;t.push({x:e,y:a,width:o,height:i,negative:h})}),t}},socPath(){if(this.socCoordinates&&this.socCoordinates.length>0){let s=this.socCoordinates.slice(0,1)[0],e=this.socCoordinates.slice(-1)[0];var t=`M 0,${this.height}`;return t+=` L 0,${s.y}`,this.socCoordinates.forEach(r=>{t+=` L ${r.x+this.stroke/2},${r.y}`}),t+=` L ${e.x+this.stroke},${e.y} L ${e.x+this.stroke},${this.height} Z`,t}}},methods:{calculateCoordinates(t,s,e){const r=[];return t.forEach((o,a)=>{const i=a*this.width/this.maxPoints+1,h=this.height-(o-s)/(e-s)*this.height;r.push({x:i,y:h})}),r}}},g=()=>{p(t=>({"3f7db06a":t.color,"1de516bf":t.colorNegative}))},f=d.setup;d.setup=f?(t,s)=>(g(),f(t,s)):g;const I=["viewBox"],q=["d"],M=["x","y","width","height"],A=["y1","x2","y2"];function E(t,s,e,r,o,a){return n(),c("svg",{class:"spark-line",viewBox:`0 0 ${e.width} ${e.height}`,width:"100%",preserveAspectRatio:"xMinYMin"},[e.socData?(n(),c("path",{key:0,class:"soc-path",d:a.socPath},null,8,q)):m("",!0),(n(!0),c(P,null,C(a.bars,i=>(n(),c("rect",{key:i.x,x:i.x,y:i.y,width:i.width,height:i.height,class:_(e.colorNegative&&i.negative?"negative":"")},null,10,M))),128)),x("line",{class:"zero-line",x1:0,y1:a.zeroHeight,x2:e.width,y2:a.zeroHeight},null,8,A)],8,I)}const R=y(d,[["render",E],["__scopeId","data-v-22cdf82b"]]);N.add(b,D,z);const H={name:"ChargePointStateBadge",components:{FontAwesomeIcon:B},props:{chargePointId:{required:!0,type:Array},showEnergyCharged:{required:!1,type:Boolean,default:!0}},data(){return{mqttStore:v()}},computed:{plugState(){var t=!1;return this.chargePointId.forEach(s=>{t|=this.mqttStore.getChargePointPlugState(s)}),t},chargeState(){var t=!1;return this.chargePointId.forEach(s=>{t|=this.mqttStore.getChargePointChargeState(s)}),t},stateIcon(){return this.plugState?this.chargeState?["fas","fa-plug-circle-bolt"]:["fas","fa-plug-circle-check"]:["fas","fa-plug-circle-xmark"]},stateClass(){return this.plugState?this.chargeState?"_color:success":"_color:warning":"_color:gray"}}},L={key:0,class:"_padding-left:1"};function V(t,s,e,r,o,a){const i=l("font-awesome-icon"),h=l("i-badge");return n(),S(h,{size:"lg"},{default:w(()=>[k(i,{"fixed-width":"",icon:a.stateIcon,class:_(a.stateClass)},null,8,["icon","class"]),a.plugState&&e.showEnergyCharged?(n(),c("span",L,u(o.mqttStore.getChargePointImportedSincePlugged(e.chargePointId).energy)+" / "+u(o.mqttStore.getChargePointImportedSincePlugged(e.chargePointId).range),1)):m("",!0)]),_:1})}const X=y(H,[["render",V]]);export{X as C,R as S};
diff --git a/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-DyF92yTK.js b/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-DyF92yTK.js
new file mode 100644
index 0000000000..f860cb612f
--- /dev/null
+++ b/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-DyF92yTK.js
@@ -0,0 +1 @@
+import{O as p,o as n,e as c,i as m,F as P,A as C,y as _,j as x,q as l,l as S,n as w,s as k,x as u}from"./vendor-CZ1MGz7j.js";import{_ as y}from"./vendor-inkline-Ce5aFAnW.js";import{u as v}from"./index-CHLaD7ED.js";import{l as N,z as b,A as D,B as q,F as B}from"./vendor-fortawesome-C68yAli-.js";const d={props:{data:{required:!1,type:Array,default:void 0},socData:{required:!1,type:Array,default:void 0},width:{type:Number,default:250},height:{type:Number,default:70},gap:{type:Number,default:3},stroke:{type:Number,default:3},min:{type:Number,default:0},max:{type:Number,default:1},color:{type:String,default:"var(--color--primary)"},colorNegative:{type:String,default:void 0}},computed:{highestPoint(){return Math.max(1,this.max,...this.slicedData)},lowestPoint(){return Math.min(0,this.min,...this.slicedData)},maxPoints(){return Math.floor(this.width/(this.stroke+this.gap))},slicedData(){if(this.data)return this.data.slice(-this.maxPoints)},slicedSocData(){if(this.socData)return this.socData.slice(-this.maxPoints)},zeroHeight(){return this.height-(0-this.lowestPoint)/(this.highestPoint-this.lowestPoint)*this.height},coordinates(){if(this.data)return this.calculateCoordinates(this.slicedData,this.lowestPoint,this.highestPoint)},socCoordinates(){if(this.socData)return this.calculateCoordinates(this.slicedSocData,0,100)},bars(){if(this.coordinates){const t=[];return this.coordinates.forEach(s=>{const e=s.x,r=s.y,o=this.stroke,a=Math.min(r,this.zeroHeight),i=Math.abs(r-this.zeroHeight),h=r>this.zeroHeight;t.push({x:e,y:a,width:o,height:i,negative:h})}),t}},socPath(){if(this.socCoordinates&&this.socCoordinates.length>0){let s=this.socCoordinates.slice(0,1)[0],e=this.socCoordinates.slice(-1)[0];var t=`M 0,${this.height}`;return t+=` L 0,${s.y}`,this.socCoordinates.forEach(r=>{t+=` L ${r.x+this.stroke/2},${r.y}`}),t+=` L ${e.x+this.stroke},${e.y} L ${e.x+this.stroke},${this.height} Z`,t}}},methods:{calculateCoordinates(t,s,e){const r=[];return t.forEach((o,a)=>{const i=a*this.width/this.maxPoints+1,h=this.height-(o-s)/(e-s)*this.height;r.push({x:i,y:h})}),r}}},g=()=>{p(t=>({"3f7db06a":t.color,"1de516bf":t.colorNegative}))},f=d.setup;d.setup=f?(t,s)=>(g(),f(t,s)):g;const I=["viewBox"],z=["d"],M=["x","y","width","height"],A=["y1","x2","y2"];function E(t,s,e,r,o,a){return n(),c("svg",{class:"spark-line",viewBox:`0 0 ${e.width} ${e.height}`,width:"100%",preserveAspectRatio:"xMinYMin"},[e.socData?(n(),c("path",{key:0,class:"soc-path",d:a.socPath},null,8,z)):m("",!0),(n(!0),c(P,null,C(a.bars,i=>(n(),c("rect",{key:i.x,x:i.x,y:i.y,width:i.width,height:i.height,class:_(e.colorNegative&&i.negative?"negative":"")},null,10,M))),128)),x("line",{class:"zero-line",x1:0,y1:a.zeroHeight,x2:e.width,y2:a.zeroHeight},null,8,A)],8,I)}const R=y(d,[["render",E],["__scopeId","data-v-22cdf82b"]]);N.add(b,D,q);const H={name:"ChargePointStateBadge",components:{FontAwesomeIcon:B},props:{chargePointId:{required:!0,type:Array},showEnergyCharged:{required:!1,type:Boolean,default:!0}},data(){return{mqttStore:v()}},computed:{plugState(){var t=!1;return this.chargePointId.forEach(s=>{t|=this.mqttStore.getChargePointPlugState(s)}),t},chargeState(){var t=!1;return this.chargePointId.forEach(s=>{t|=this.mqttStore.getChargePointChargeState(s)}),t},stateIcon(){return this.plugState?this.chargeState?["fas","fa-plug-circle-bolt"]:["fas","fa-plug-circle-check"]:["fas","fa-plug-circle-xmark"]},stateClass(){return this.plugState?this.chargeState?"_color:success":"_color:warning":"_color:gray"}}},L={key:0,class:"_padding-left:1"};function V(t,s,e,r,o,a){const i=l("font-awesome-icon"),h=l("i-badge");return n(),S(h,{size:"lg"},{default:w(()=>[k(i,{"fixed-width":"",icon:a.stateIcon,class:_(a.stateClass)},null,8,["icon","class"]),a.plugState&&e.showEnergyCharged?(n(),c("span",L,u(o.mqttStore.getChargePointImportedSincePlugged(e.chargePointId).energy)+" / "+u(o.mqttStore.getChargePointImportedSincePlugged(e.chargePointId).range),1)):m("",!0)]),_:1})}const X=y(H,[["render",V]]);export{X as C,R as S};
diff --git a/packages/modules/display_themes/cards/web/assets/ChargePointsView-BxRzqrN1.js b/packages/modules/display_themes/cards/web/assets/ChargePointsView-BxRzqrN1.js
deleted file mode 100644
index f894004198..0000000000
--- a/packages/modules/display_themes/cards/web/assets/ChargePointsView-BxRzqrN1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{u as B,C as ne,N as ie}from"./index-AtLAf1dw.js";import{D as z}from"./DashBoardCard-BnSsjBAn.js";import{S as oe,C as W}from"./ChargePointPlugBadge-4-IgwHFS.js";import{l as N,b as le,c as ae,F as A,j as re,k as E,m as U,e as D,n as Z,o as R,p as j,q as O,r as J,s as K,t as G,u as H,v as ce,w as de,x as ge,y as he}from"./vendor-fortawesome-CVmDIOjI.js";import{_ as T}from"./vendor-inkline-7C7Ddj37.js";import{l as g,o as d,n as u,p as i,s as n,z as q,e as S,k as r,F as x,x as s,i as m,A as L,I as se,j as ue,q as me}from"./vendor-Cv1UtYRW.js";N.add(le,ae);const Ce={name:"ChargePointLockButton",components:{FontAwesomeIcon:A},props:{chargePointId:{required:!0,type:Number},changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:B()}},computed:{locked(){return this.mqttStore.getChargePointManualLock(this.chargePointId)},stateIcon(){return this.locked?["fas","fa-lock"]:["fas","fa-lock-open"]},stateClass(){return this.locked?["_color:danger"]:"_color:success"}},methods:{toggleChargePointManualLock(){this.changesLocked||this.$root.sendTopicToBroker(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`,!this.mqttStore.getValueBool(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`))}}};function fe(o,t,l,_,e,c){const f=g("font-awesome-icon"),V=g("i-button");return d(),u(V,{size:"lg",disabled:l.changesLocked,outline:l.changesLocked},{default:i(()=>[n(f,{"fixed-width":"",icon:c.stateIcon,class:q(c.stateClass),onClick:t[0]||(t[0]=C=>c.toggleChargePointManualLock())},null,8,["icon","class"])]),_:1},8,["disabled","outline"])}const Q=T(Ce,[["render",fe]]);N.add(re);const _e={name:"ChargePointCodeButton",components:{FontAwesomeIcon:A,CodeInputModal:ne},props:{chargePointId:{type:Number,required:!0}},data(){return{mqttStore:B(),modalIdTagEntryVisible:!1,modalIdTagEntryColor:"warning",code:""}},computed:{tagState(){return this.mqttStore.getChargepointTagState(this.chargePointId)},tagButtonColor(){switch(this.tagState){case 2:return"success";case 1:return"warning";default:return""}},tagClass(){switch(this.tagState){case 2:return"_color:success-80";case 1:return"_color:warning-80";default:return""}}},methods:{toggleIdTagModal(){this.modalIdTagEntryVisible=!this.modalIdTagEntryVisible},sendIdTag(o){this.$root.sendTopicToBroker(`openWB/chargepoint/${this.chargePointId}/get/rfid`,o),this.modalIdTagEntryVisible=!1}}};function Pe(o,t,l,_,e,c){const f=g("FontAwesomeIcon"),V=g("i-button"),C=g("CodeInputModal");return d(),S(x,null,[n(V,{class:"_margin-right:1",size:"lg",color:c.tagButtonColor,disabled:c.tagState==2,onClick:t[0]||(t[0]=h=>c.toggleIdTagModal())},{default:i(()=>[n(f,{"fixed-width":"",icon:["fas","fa-calculator"],class:q(c.tagClass)},null,8,["class"])]),_:1},8,["color","disabled"]),n(C,{ref:"lockInput",modelValue:e.modalIdTagEntryVisible,"onUpdate:modelValue":t[1]||(t[1]=h=>e.modalIdTagEntryVisible=h),"min-length":4,"max-length":20,"onUpdate:inputValue":c.sendIdTag},{header:i(()=>[r(" Bitte einen ID-Tag eingeben. ")]),_:1},8,["modelValue","onUpdate:inputValue"])],64)}const X=T(_e,[["render",Pe]]);N.add(E,U,D,Z,R,j,O,J,K,G,H);const Se={name:"ChargePointCard",components:{DashBoardCard:z,SparkLine:oe,ChargePointPlugBadge:W,ChargePointLockButton:Q,ChargePointCodeButton:X,FontAwesomeIcon:A},props:{chargePointId:{type:Number,required:!0},changesLocked:{type:Boolean,required:!0}},emits:["vehicle-click","soc-click","charge-mode-click","toggle-charge-point-settings"],data(){return{mqttStore:B()}},methods:{handleVehicleClick(o){this.$emit("vehicle-click",o)},handleSocClick(o){this.$emit("soc-click",o)},handleChargeModeClick(o){this.$emit("charge-mode-click",o)},toggleChargePointSettings(o){this.$emit("toggle-charge-point-settings",o)}}},Ve={key:0};function be(o,t,l,_,e,c){const f=g("charge-point-plug-badge"),V=g("charge-point-code-button"),C=g("charge-point-lock-button"),h=g("i-column"),b=g("i-row"),k=g("spark-line"),I=g("font-awesome-icon"),P=g("i-badge"),w=g("i-button"),v=g("i-container"),p=g("dash-board-card");return d(),u(p,{color:"primary"},{headerLeft:i(()=>[r(s(e.mqttStore.getChargePointName(l.chargePointId)),1)]),headerRight:i(()=>[n(f,{"charge-point-id":[l.chargePointId]},null,8,["charge-point-id"])]),default:i(()=>[n(v,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[e.mqttStore.getRfidEnabled?(d(),u(V,{key:0,"charge-point-id":l.chargePointId},null,8,["charge-point-id"])):m("",!0),n(C,{"charge-point-id":l.chargePointId,"changes-locked":l.changesLocked},null,8,["charge-point-id","changes-locked"])]),_:1}),n(h,{class:"_text-align:right _padding-left:0"},{default:i(()=>[r(s(e.mqttStore.getChargePointPower(l.chargePointId))+" "+s(e.mqttStore.getChargePointPhasesInUse(l.chargePointId))+" "+s(e.mqttStore.getChargePointSetCurrent(l.chargePointId)),1)]),_:1})]),_:1}),n(b,{class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0"},{default:i(()=>[n(k,{color:"var(--color--primary)",data:e.mqttStore.getChargePointPowerChartData(l.chargePointId)},null,8,["data"])]),_:1})]),_:1})]),_:1}),n(h,{md:"6"},{default:i(()=>[n(b,{class:"_display:flex"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:i(()=>[n(P,{size:"lg",class:q(["_width:100%",l.changesLocked?"":"clickable"]),onClick:t[0]||(t[0]=y=>c.handleVehicleClick(l.chargePointId))},{default:i(()=>[n(I,{"fixed-width":"",icon:["fas","fa-car"]}),r(" "+s(e.mqttStore.getChargePointConnectedVehicleName(l.chargePointId)),1)]),_:1},8,["class"])]),_:1}),e.mqttStore.getVehicleSocConfigured(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))||e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(h,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:i(()=>[n(w,{size:"sm",disabled:l.changesLocked,class:q(l.changesLocked?"":"clickable"),onClick:t[1]||(t[1]=y=>c.handleSocClick(l.chargePointId))},{default:i(()=>[e.mqttStore.getVehicleSocConfigured(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?(d(),S("span",Ve,[n(I,{"fixed-width":"",icon:e.mqttStore.getVehicleSocIsManual(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?["fas","fa-edit"]:["fas","fa-car-battery"]},null,8,["icon"]),r(" "+s(e.mqttStore.getChargePointConnectedVehicleSoc(l.chargePointId).soc)+"% ",1)])):m("",!0),e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(I,{key:1,"fixed-width":"",icon:e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?["fas","times-circle"]:["fas","exclamation-triangle"]:[],class:q(e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?"_color:danger":"_color:warning":"")},null,8,["icon","class"])):m("",!0)]),_:1},8,["disabled","class"])]),_:1})):m("",!0)]),_:1}),n(b,{class:"_padding-top:1 _display:flex"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:i(()=>[n(P,{size:"lg",class:q(["_width:100%",l.changesLocked?"":"clickable"]),color:e.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).class,onClick:t[2]||(t[2]=y=>c.handleChargeModeClick(l.chargePointId))},{default:i(()=>[r(s(e.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).label)+" ",1),n(I,{"fixed-width":"",icon:e.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?["fas","fa-star"]:["far","fa-star"],class:q(e.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?"_color:warning":"")},null,8,["icon","class"])]),_:1},8,["class","color"])]),_:1}),e.mqttStore.getChargePointConnectedVehicleTimeChargingActive(l.chargePointId)?(d(),u(h,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:i(()=>[n(P,{size:"lg"},{default:i(()=>[e.mqttStore.getChargePointConnectedVehicleTimeChargingActive(l.chargePointId)?(d(),u(I,{key:0,"fixed-width":"",icon:e.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(l.chargePointId)?["fas","fa-clock"]:["far","fa-clock"],class:q(e.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(l.chargePointId)?"_color:success":"")},null,8,["icon","class"])):m("",!0)]),_:1})]),_:1})):m("",!0)]),_:1}),l.changesLocked?m("",!0):(d(),u(b,{key:0,class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[n(w,{block:"",onClick:t[3]||(t[3]=y=>c.toggleChargePointSettings(l.chargePointId))},{default:i(()=>[n(I,{"fixed-width":"",icon:["fas","fa-wrench"]})]),_:1})]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})]),_:1})}const Ie=T(Se,[["render",be],["__scopeId","data-v-3c6489c4"]]);N.add(E,U,D,Z,R,j,O,J,K,G,H);const ve={name:"ChargePointCard",components:{DashBoardCard:z,ChargePointPlugBadge:W,ChargePointLockButton:Q,ChargePointCodeButton:X,FontAwesomeIcon:A},props:{chargePointId:{type:Number,required:!0},changesLocked:{type:Boolean,required:!0}},emits:["vehicle-click","soc-click","charge-mode-click","toggle-charge-point-settings","set-charge-point-connected-vehicle-charge-mode"],data(){return{mqttStore:B(),simpleChargeModes:["instant_charging","pv_charging","stop"]}},computed:{filteredChargeModes(){return this.mqttStore.getSimpleChargePointView?this.mqttStore.chargeModeList().filter(o=>this.simpleChargeModes.includes(o.id)):this.mqttStore.chargeModeList()}},methods:{handleVehicleClick(o){this.$emit("vehicle-click",o)},handleSocClick(o){this.$emit("soc-click",o)},handleChargeModeClick(o){this.$emit("charge-mode-click",o)},toggleChargePointSettings(o){this.$emit("toggle-charge-point-settings",o)},setChargePointConnectedVehicleChargeMode(o,t){this.$emit("set-charge-point-connected-vehicle-charge-mode",o,t)}}},ke={key:0};function pe(o,t,l,_,e,c){const f=g("charge-point-plug-badge"),V=g("charge-point-code-button"),C=g("charge-point-lock-button"),h=g("i-column"),b=g("i-row"),k=g("font-awesome-icon"),I=g("i-button"),P=g("i-button-group"),w=g("i-container"),v=g("dash-board-card");return d(),u(v,{color:"primary"},{headerLeft:i(()=>[r(s(e.mqttStore.getChargePointName(l.chargePointId)),1)]),headerRight:i(()=>[n(f,{"charge-point-id":[l.chargePointId]},null,8,["charge-point-id"])]),default:i(()=>[n(w,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[e.mqttStore.getRfidEnabled?(d(),u(V,{key:0,"charge-point-id":l.chargePointId},null,8,["charge-point-id"])):m("",!0),n(C,{"charge-point-id":l.chargePointId,"changes-locked":l.changesLocked},null,8,["charge-point-id","changes-locked"])]),_:1}),n(h,{class:"_text-align:right _padding-left:0"},{default:i(()=>[r(s(e.mqttStore.getChargePointPower(l.chargePointId))+" "+s(e.mqttStore.getChargePointPhasesInUse(l.chargePointId))+" "+s(e.mqttStore.getChargePointSetCurrent(l.chargePointId)),1)]),_:1})]),_:1}),n(b,{class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0 button-group-wrapper"},{default:i(()=>[n(P,{class:"button-group main-button-group"},{default:i(()=>[n(I,{class:q(["large-button _flex-grow:1",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:t[0]||(t[0]=p=>c.handleVehicleClick(l.chargePointId))},{default:i(()=>[n(k,{"fixed-width":"",icon:["fas","fa-car"]}),r(" "+s(e.mqttStore.getChargePointConnectedVehicleName(l.chargePointId))+" ",1),n(k,{class:q(["_padding-left:1",e.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?"_color:warning":""]),"fixed-width":"",icon:e.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?["fas","fa-star"]:["far","fa-star"]},null,8,["icon","class"])]),_:1},8,["class","disabled"]),e.mqttStore.getVehicleSocConfigured(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))||e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(I,{key:0,class:q(["large-button _flex-grow:0",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:t[1]||(t[1]=p=>c.handleSocClick(l.chargePointId))},{default:i(()=>[e.mqttStore.getVehicleSocConfigured(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?(d(),S("span",ke,[n(k,{"fixed-width":"",icon:e.mqttStore.getVehicleSocIsManual(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?["fas","fa-edit"]:["fas","fa-car-battery"]},null,8,["icon"]),r(" "+s(e.mqttStore.getChargePointConnectedVehicleSoc(l.chargePointId).soc)+"% ",1)])):m("",!0),e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(k,{key:1,"fixed-width":"",icon:e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?["fas","times-circle"]:["fas","exclamation-triangle"]:[],class:q(e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?e.mqttStore.getVehicleFaultState(e.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?"_color:danger":"_color:warning":"")},null,8,["icon","class"])):m("",!0)]),_:1},8,["disabled","class"])):m("",!0),n(I,{class:q(["large-button _flex-grow:0",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:t[2]||(t[2]=p=>c.toggleChargePointSettings(l.chargePointId))},{default:i(()=>[n(k,{"fixed-width":"",icon:["fas","fa-wrench"]})]),_:1},8,["class","disabled"])]),_:1}),n(P,{class:"button-group _margin-top:1",disabled:l.changesLocked},{default:i(()=>[(d(!0),S(x,null,L(c.filteredChargeModes,p=>(d(),u(I,{key:p.id,outline:"",class:q(["large-button _flex-grow:1",l.changesLocked?"":"clickable"]),color:p.class!="dark"?p.class:"light",active:e.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId)!=null&&p.id==e.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).mode,onClick:y=>c.setChargePointConnectedVehicleChargeMode(l.chargePointId,p.id)},{default:i(()=>[r(s(p.label),1)]),_:2},1032,["class","color","active","onClick"]))),128))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const qe=T(ve,[["render",pe],["__scopeId","data-v-5e676b1f"]]),we={name:"ExtendedNumberInput",inheritAttrs:!1,props:{modelValue:{type:Number,required:!0,default:NaN},unit:{type:String,default:""},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array,default:void 0}},emits:["update:modelValue"],data(){return{minimum:this.labels?0:this.min,maximum:this.labels?this.labels.length-1:this.max,stepSize:this.labels?1:this.step}},computed:{label(){var o;return this.labels&&this.inputValue!=null?this.inputValue<this.labels.length?o=this.labels[this.inputValue].label:console.error("index out of bounds: "+this.inputValue):o=this.inputValue,typeof o=="number"&&(o=o.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision})),o},precision(){if(!isFinite(this.stepSize))return 0;for(var o=1,t=0;Math.round(this.stepSize*o)/o!==this.stepSize;)o*=10,t++;return t},inputValue:{get(){if(this.labels){var o=void 0;for(let t=0;t<this.labels.length;t++)if(this.labels[t].value==this.modelValue){o=t;break}return o===void 0&&this.modelValue!==void 0?(console.warn("inputValue: not found in values: ",this.modelValue,"using minimum as default: ",this.minimum),this.minimum):o}return this.modelValue},set(o){if(this.labels){var t=this.labels[o].value;this.$emit("update:modelValue",t)}else this.$emit("update:modelValue",o)}}},methods:{increment(){var o=Math.min(this.inputValue+this.stepSize,this.maximum);this.inputValue=Math.round(o*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var o=Math.max(this.inputValue-this.stepSize,this.minimum);this.inputValue=Math.round(o*Math.pow(10,this.precision))/Math.pow(10,this.precision)}}};function ye(o,t,l,_,e,c){const f=g("i-button"),V=g("i-input");return d(),u(V,{modelValue:c.label,"onUpdate:modelValue":t[0]||(t[0]=C=>c.label=C),plaintext:"",class:"_text-align:right",size:"lg"},{prepend:i(()=>[n(f,{onClick:c.decrement},{default:i(()=>[r(" - ")]),_:1},8,["onClick"])]),suffix:i(()=>[r(s(l.unit),1)]),append:i(()=>[n(f,{onClick:c.increment},{default:i(()=>[r(" + ")]),_:1},8,["onClick"])]),_:1},8,["modelValue"])}const Y=T(we,[["render",ye]]),xe={name:"ManualSocInput",components:{ExtendedNumberInput:Y,NumberPad:ie},props:{modelValue:{required:!0,type:Boolean,default:!1},vehicleId:{required:!0,type:Number,default:0}},emits:["update:modelValue"],data(){return{mqttStore:B(),newSoc:0}},methods:{enter(o){let t=this.newSoc*10+parseInt(o);t>=0&&t<=100&&(this.newSoc=t)},removeDigit(){this.newSoc=Math.trunc(this.newSoc/10)},clear(){this.newSoc=0},close(){this.$emit("update:modelValue",!1),this.newSoc=0},updateManualSoc(){this.$root.sendTopicToBroker(`openWB/vehicle/${this.vehicleId}/soc_module/calculated_soc_state/manual_soc`,this.newSoc),this.close()}}};function Me(o,t,l,_,e,c){const f=g("extended-number-input"),V=g("i-column"),C=g("i-row"),h=g("NumberPad"),b=g("i-container"),k=g("i-button"),I=g("i-modal");return d(),u(se,{to:"body"},[n(I,{"model-value":l.modelValue,size:"sm","onUpdate:modelValue":t[6]||(t[6]=P=>o.$emit("update:modelValue",P))},{header:i(()=>[r(' SoC für Fahrzeug "'+s(e.mqttStore.getVehicleName(l.vehicleId))+'" ',1)]),footer:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,null,{default:i(()=>[n(k,{color:"danger",onClick:t[4]||(t[4]=P=>c.close())},{default:i(()=>[r(" Zurück ")]),_:1})]),_:1}),n(V,{class:"_text-align:right"},{default:i(()=>[n(k,{color:"success",onClick:t[5]||(t[5]=P=>c.updateManualSoc())},{default:i(()=>[r(" OK ")]),_:1})]),_:1})]),_:1})]),_:1})]),default:i(()=>[n(b,null,{default:i(()=>[n(C,{center:"",class:"_padding-bottom:1"},{default:i(()=>[n(V,null,{default:i(()=>[n(f,{modelValue:e.newSoc,"onUpdate:modelValue":t[0]||(t[0]=P=>e.newSoc=P),unit:"%",min:0,max:100,step:1,size:"lg",class:"_text-align:center"},null,8,["modelValue"])]),_:1})]),_:1}),n(h,{"onKey:digit":t[1]||(t[1]=P=>c.enter(P)),"onKey:clear":t[2]||(t[2]=P=>c.clear()),"onKey:delete":t[3]||(t[3]=P=>c.removeDigit())})]),_:1})]),_:1},8,["model-value"])])}const Te=T(xe,[["render",Me]]);N.add(ce,de,ge,he);const Le={name:"ChargePointsView",components:{ChargePointCard:Ie,SimpleChargePointCard:qe,ExtendedNumberInput:Y,ManualSocInput:Te,FontAwesomeIcon:A},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:B(),modalChargeModeSettingVisible:!1,modalVehicleSelectVisible:!1,modalChargePointSettingsVisible:!1,modalChargePointId:0,modalVehicleId:0,modalActiveTab:"tab-general",modalManualSocInputVisible:!1,simpleChargeModes:["instant_charging","pv_charging","stop"]}},computed:{vehicleList(){let o=this.mqttStore.getVehicleList;var t=[];return Object.keys(o).forEach(l=>{let _=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""));t.push({id:_,name:o[l]})}),t},filteredChargeModes(){return this.mqttStore.getSimpleChargePointView?this.mqttStore.chargeModeList().filter(o=>this.simpleChargeModes.includes(o.id)):this.mqttStore.chargeModeList()}},watch:{changesLocked(o,t){t!==!0&&o===!0&&(this.modalChargeModeSettingVisible=!1,this.modalVehicleSelectVisible=!1,this.modalChargePointSettingsVisible=!1,this.modalManualSocInputVisible=!1)}},methods:{toggleChargePointSettings(o){switch(this.mqttStore.getChargePointConnectedVehicleChargeMode(o).mode){case"pv_charging":this.modalActiveTab="tab-pv-charging";break;case"scheduled_charging":this.modalActiveTab="tab-scheduled-charging";break;default:this.modalActiveTab="tab-instant-charging"}this.modalChargePointId=o,this.modalChargePointSettingsVisible=!0},handleChargeModeClick(o){this.changesLocked||(this.modalChargePointId=o,this.modalChargeModeSettingVisible=!0)},handleVehicleClick(o){this.changesLocked||(this.modalChargePointId=o,this.modalVehicleSelectVisible=!0)},handleSocClick(o){let t=this.mqttStore.getChargePointConnectedVehicleId(o);if(this.mqttStore.getVehicleSocIsManual(t)){this.modalVehicleId=t,this.modalManualSocInputVisible=!0;return}this.$root.sendTopicToBroker(`openWB/set/vehicle/${t}/get/force_soc_update`,1)},setChargePointConnectedVehicle(o,t){t.id!=this.mqttStore.getChargePointConnectedVehicleId(o)&&this.$root.sendTopicToBroker(`openWB/chargepoint/${o}/config/ev`,t.id),this.modalVehicleSelectVisible&&(this.modalVehicleSelectVisible=!1)},setChargePointConnectedVehicleChargeMode(o,t){if(t.id!=this.mqttStore.getChargePointConnectedVehicleChargeMode(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/selected`,t)}},setChargePointConnectedVehiclePriority(o,t){if(t!=this.mqttStore.getChargePointConnectedVehiclePriority(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/prio`,t)}},setChargePointConnectedVehicleTimeChargingActive(o,t){if(t!=this.mqttStore.getChargePointConnectedVehicleTimeChargingActive(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/time_charging/active`,t)}},setChargePointConnectedVehicleInstantChargingCurrent(o,t){if(t&&t!=this.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/current`,parseFloat(t))}},setChargePointConnectedVehicleInstantChargingLimit(o,t){if(t&&t!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).selected){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/selected`,t)}},setChargePointConnectedVehicleInstantChargingLimitSoc(o,t){if(t&&t!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).soc){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/soc`,parseInt(t))}},setChargePointConnectedVehicleInstantChargingLimitAmount(o,t){if(t&&t!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).amount){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/amount`,t)}},setChargePointConnectedVehiclePvChargingFeedInLimit(o,t){if(t!=this.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/feed_in_limit`,t)}},setChargePointConnectedVehiclePvChargingMinCurrent(o,t){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(o),_=parseInt(t);if(_!=l&&!isNaN(_)){var e=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${e}/chargemode/pv_charging/min_current`,_)}},setChargePointConnectedVehiclePvChargingMinSoc(o,t){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(o),_=parseInt(t);if(_!=l&&!isNaN(_)){var e=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${e}/chargemode/pv_charging/min_soc`,_)}},setChargePointConnectedVehiclePvChargingMinSocCurrent(o,t){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(o),_=parseInt(t);if(_!=l&&!isNaN(_)){var e=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${e}/chargemode/pv_charging/min_soc_current`,_)}},setChargePointConnectedVehiclePvChargingMaxSoc(o,t){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(o),_=parseInt(t);if(_!=l&&!isNaN(_)){var e=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${e}/chargemode/pv_charging/max_soc`,_)}},setChargePointConnectedVehicleScheduledChargingPlanActive(o,t){this.$root.sendTopicToBroker(`${o}/active`,t)},setChargePointConnectedVehicleTimeChargingPlanActive(o,t){this.$root.sendTopicToBroker(`${o}/active`,t)}}},Be={class:"charge-points-card-wrapper"},Ne={key:0},Ae={key:1},Fe={key:2},ze={key:3},We={key:4},Ee={key:0},Ue={key:1},De={key:0},Ze={key:1},Re={key:2},je={key:3},Oe={key:4};function Je(o,t,l,_,e,c){const f=g("i-button"),V=g("i-button-group"),C=g("i-form-group"),h=g("i-form-label"),b=g("i-form"),k=g("i-modal"),I=g("i-tab-title"),P=g("extended-number-input"),w=g("i-tab"),v=g("font-awesome-icon"),p=g("i-alert"),y=g("i-row"),F=g("i-container"),$=g("i-tabs"),ee=g("manual-soc-input");return d(),S(x,null,[ue("div",Be,[(d(!0),S(x,null,L(e.mqttStore.getChargePointIds,a=>(d(),u(me(e.mqttStore.getSimpleChargePointView?"SimpleChargePointCard":"ChargePointCard"),{key:a,"charge-point-id":a,"changes-locked":l.changesLocked,onVehicleClick:c.handleVehicleClick,onSocClick:c.handleSocClick,onChargeModeClick:c.handleChargeModeClick,onToggleChargePointSettings:c.toggleChargePointSettings,onSetChargePointConnectedVehicleChargeMode:c.setChargePointConnectedVehicleChargeMode},null,40,["charge-point-id","changes-locked","onVehicleClick","onSocClick","onChargeModeClick","onToggleChargePointSettings","onSetChargePointConnectedVehicleChargeMode"]))),128))]),n(k,{modelValue:e.modalChargeModeSettingVisible,"onUpdate:modelValue":t[2]||(t[2]=a=>e.modalChargeModeSettingVisible=a),size:"lg"},{header:i(()=>[r(' Lademodus für "'+s(e.mqttStore.getChargePointConnectedVehicleName(e.modalChargePointId))+'" auswählen ',1)]),default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,{block:"",vertical:""},{default:i(()=>[(d(!0),S(x,null,L(c.filteredChargeModes,a=>(d(),u(f,{key:a.id,size:"lg",class:"large-button",outline:"",color:a.class!="dark"?a.class:"light",active:e.mqttStore.getChargePointConnectedVehicleChargeMode(e.modalChargePointId)!=null&&a.id==e.mqttStore.getChargePointConnectedVehicleChargeMode(e.modalChargePointId).mode,onClick:M=>c.setChargePointConnectedVehicleChargeMode(e.modalChargePointId,a.id)},{default:i(()=>[r(s(a.label),1)]),_:2},1032,["color","active","onClick"]))),128))]),_:1})]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>[r("Priorität")]),_:1}),n(V,{block:""},{default:i(()=>[n(f,{size:"lg",class:"large-button",color:e.mqttStore.getChargePointConnectedVehiclePriority(e.modalChargePointId)!==!0?"danger":"",onClick:t[0]||(t[0]=a=>c.setChargePointConnectedVehiclePriority(e.modalChargePointId,!1))},{default:i(()=>[r(" Nein ")]),_:1},8,["color"]),n(f,{color:e.mqttStore.getChargePointConnectedVehiclePriority(e.modalChargePointId)===!0?"success":"",onClick:t[1]||(t[1]=a=>c.setChargePointConnectedVehiclePriority(e.modalChargePointId,!0))},{default:i(()=>[r(" Ja ")]),_:1},8,["color"])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(k,{modelValue:e.modalVehicleSelectVisible,"onUpdate:modelValue":t[3]||(t[3]=a=>e.modalVehicleSelectVisible=a),class:"modal-vehicle-select",size:"lg"},{header:i(()=>[r(' Fahrzeug an "'+s(e.mqttStore.getChargePointName(e.modalChargePointId))+'" auswählen ',1)]),default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,{vertical:"",block:""},{default:i(()=>[(d(!0),S(x,null,L(c.vehicleList,a=>(d(),u(f,{key:a.id,size:"lg",class:"large-button",active:e.mqttStore.getChargePointConnectedVehicleId(e.modalChargePointId)==a.id,color:e.mqttStore.getChargePointConnectedVehicleId(e.modalChargePointId)==a.id?"primary":"",onClick:M=>c.setChargePointConnectedVehicle(e.modalChargePointId,a)},{default:i(()=>[r(s(a.name),1)]),_:2},1032,["active","color","onClick"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(k,{modelValue:e.modalChargePointSettingsVisible,"onUpdate:modelValue":t[19]||(t[19]=a=>e.modalChargePointSettingsVisible=a),size:"lg"},{header:i(()=>[r(' Einstellungen für Fahrzeug "'+s(e.mqttStore.getChargePointConnectedVehicleName(e.modalChargePointId))+'" ',1)]),default:i(()=>[n($,{modelValue:e.modalActiveTab,"onUpdate:modelValue":t[18]||(t[18]=a=>e.modalActiveTab=a),stretch:""},{header:i(()=>[n(I,{for:"tab-instant-charging"},{default:i(()=>[r(" Sofort ")]),_:1}),n(I,{for:"tab-pv-charging"},{default:i(()=>[r(" PV ")]),_:1}),e.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(I,{key:0,for:"tab-scheduled-charging"},{default:i(()=>[r(" Zielladen ")]),_:1})),e.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(I,{key:1,for:"tab-time-charging"},{default:i(()=>[r(" Zeitladen ")]),_:1}))]),default:i(()=>[n(w,{name:"tab-instant-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>[r("Stromstärke")]),_:1}),n(P,{unit:"A",min:6,max:32,"model-value":e.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(e.modalChargePointId),"onUpdate:modelValue":t[4]||(t[4]=a=>c.setChargePointConnectedVehicleInstantChargingCurrent(e.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>[r("Begrenzung")]),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:e.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId).selected=="none"?"primary":"",active:e.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId).selected=="none",onClick:t[5]||(t[5]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId,"none"))},{default:i(()=>[r(" Keine ")]),_:1},8,["color","active"]),n(f,{color:e.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId).selected=="soc"?"primary":"",active:e.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId).selected=="soc",onClick:t[6]||(t[6]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId,"soc"))},{default:i(()=>[r(" EV-SoC ")]),_:1},8,["color","active"]),n(f,{color:e.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId).selected=="amount"?"primary":"",active:e.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId).selected=="amount",onClick:t[7]||(t[7]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId,"amount"))},{default:i(()=>[r(" Energie ")]),_:1},8,["color","active"])]),_:1})]),_:1}),e.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId).selected=="soc"?(d(),u(C,{key:0},{default:i(()=>[n(h,null,{default:i(()=>[r("Max. SoC")]),_:1}),n(P,{unit:"%",min:5,max:100,step:5,"model-value":e.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId).soc,"onUpdate:modelValue":t[8]||(t[8]=a=>c.setChargePointConnectedVehicleInstantChargingLimitSoc(e.modalChargePointId,a))},null,8,["model-value"])]),_:1})):m("",!0),e.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId).selected=="amount"?(d(),u(C,{key:1},{default:i(()=>[n(h,null,{default:i(()=>[r("Max. Energie")]),_:1}),n(P,{unit:"kWh",min:1,max:100,"model-value":e.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(e.modalChargePointId).amount/1e3,"onUpdate:modelValue":t[9]||(t[9]=a=>c.setChargePointConnectedVehicleInstantChargingLimitAmount(e.modalChargePointId,a*1e3))},null,8,["model-value"])]),_:1})):m("",!0)]),_:1})]),_:1}),n(w,{name:"tab-pv-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>[r("Einspeisegrenze beachten")]),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:e.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(e.modalChargePointId)!==!0?"danger":"",onClick:t[10]||(t[10]=a=>c.setChargePointConnectedVehiclePvChargingFeedInLimit(e.modalChargePointId,!1))},{default:i(()=>[r(" Nein ")]),_:1},8,["color"]),n(f,{color:e.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(e.modalChargePointId)===!0?"success":"",onClick:t[11]||(t[11]=a=>c.setChargePointConnectedVehiclePvChargingFeedInLimit(e.modalChargePointId,!0))},{default:i(()=>[r(" Ja ")]),_:1},8,["color"])]),_:1})]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>[r("Minimaler Dauerstrom")]),_:1}),n(P,{unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":e.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(e.modalChargePointId),"onUpdate:modelValue":t[12]||(t[12]=a=>c.setChargePointConnectedVehiclePvChargingMinCurrent(e.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>[r("Mindest-SoC")]),_:1}),n(P,{unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":e.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(e.modalChargePointId),"onUpdate:modelValue":t[13]||(t[13]=a=>c.setChargePointConnectedVehiclePvChargingMinSoc(e.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>[r("Mindest-SoC Strom")]),_:1}),n(P,{min:6,max:32,unit:"A","model-value":e.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(e.modalChargePointId),"onUpdate:modelValue":t[14]||(t[14]=a=>c.setChargePointConnectedVehiclePvChargingMinSocCurrent(e.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>[r("SoC-Limit")]),_:1}),n(P,{unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":e.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(e.modalChargePointId),"onUpdate:modelValue":t[15]||(t[15]=a=>c.setChargePointConnectedVehiclePvChargingMaxSoc(e.modalChargePointId,a))},null,8,["model-value"])]),_:1})]),_:1})]),_:1}),e.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(w,{key:0,name:"tab-scheduled-charging"},{default:i(()=>[Object.keys(e.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(e.modalChargePointId)).length===0?(d(),u(p,{key:0},{icon:i(()=>[n(v,{"fixed-width":"",icon:["fas","fa-info-circle"]})]),default:i(()=>[r(" Es wurden noch keine Zeitpläne für das Zielladen eingerichtet. ")]),_:1})):(d(),u(b,{key:1},{default:i(()=>[(d(!0),S(x,null,L(e.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(e.modalChargePointId),(a,M)=>(d(),u(C,{key:M},{default:i(()=>[n(F,null,{default:i(()=>[n(y,null,{default:i(()=>[n(h,null,{default:i(()=>[r(s(a.name),1)]),_:2},1024)]),_:2},1024),n(y,null,{default:i(()=>[n(f,{size:"lg",block:"",color:a.active?"success":"danger",onClick:te=>c.setChargePointConnectedVehicleScheduledChargingPlanActive(M,!a.active)},{default:i(()=>[a.frequency.selected=="once"?(d(),S("span",Ne,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+s(e.mqttStore.formatDate(a.frequency.once)),1)])):m("",!0),a.frequency.selected=="daily"?(d(),S("span",Ae,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]}),r(" täglich ")])):m("",!0),a.frequency.selected=="weekly"?(d(),S("span",Fe,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]}),r(" "+s(e.mqttStore.formatWeeklyScheduleDays(a.frequency.weekly)),1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),r(" "+s(a.time)+" ",1),a.limit.selected=="soc"?(d(),S("span",ze,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+s(a.limit.soc_scheduled)+" % ",1)])):m("",!0),a.limit.selected=="amount"?(d(),S("span",We,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),r(" "+s(a.limit.amount/1e3)+" kWh ",1)])):m("",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}))]),_:1})),e.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(w,{key:1,name:"tab-time-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>[r("Zeitladen aktivieren")]),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:e.mqttStore.getChargePointConnectedVehicleTimeChargingActive(e.modalChargePointId)!==!0?"danger":"",onClick:t[16]||(t[16]=a=>c.setChargePointConnectedVehicleTimeChargingActive(e.modalChargePointId,!1))},{default:i(()=>[r(" Nein ")]),_:1},8,["color"]),n(f,{color:e.mqttStore.getChargePointConnectedVehicleTimeChargingActive(e.modalChargePointId)===!0?"success":"",onClick:t[17]||(t[17]=a=>c.setChargePointConnectedVehicleTimeChargingActive(e.modalChargePointId,!0))},{default:i(()=>[r(" Ja ")]),_:1},8,["color"])]),_:1})]),_:1}),e.mqttStore.getChargePointConnectedVehicleTimeChargingActive(e.modalChargePointId)===!0?(d(),S("div",Ee,[Object.keys(e.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(e.modalChargePointId)).length===0?(d(),u(p,{key:0,color:"warning",class:"_margin-top:2"},{icon:i(()=>[n(v,{"fixed-width":"",icon:["fas","fa-circle-info"]})]),default:i(()=>[r(" Es wurden noch keine Zeitpläne für das Zeitladen eingerichtet. ")]),_:1})):(d(),S("div",Ue,[(d(!0),S(x,null,L(e.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(e.modalChargePointId),(a,M)=>(d(),u(C,{key:M},{default:i(()=>[n(F,null,{default:i(()=>[n(y,null,{default:i(()=>[n(h,null,{default:i(()=>[r(s(a.name),1)]),_:2},1024)]),_:2},1024),n(y,null,{default:i(()=>[n(f,{size:"lg",block:"",color:a.active?"success":"danger",onClick:te=>c.setChargePointConnectedVehicleTimeChargingPlanActive(M,!a.active)},{default:i(()=>[a.frequency.selected=="once"?(d(),S("span",De,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+s(e.mqttStore.formatDateRange(a.frequency.once)),1)])):m("",!0),a.frequency.selected=="daily"?(d(),S("span",Ze,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]}),r(" täglich ")])):m("",!0),a.frequency.selected=="weekly"?(d(),S("span",Re,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]}),r(" "+s(e.mqttStore.formatWeeklyScheduleDays(a.frequency.weekly)),1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),r(" "+s(a.time.join("-"))+" ",1),a.limit.selected=="soc"?(d(),S("span",je,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+s(a.limit.soc)+" % ",1)])):m("",!0),a.limit.selected=="amount"?(d(),S("span",Oe,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),r(" "+s(a.limit.amount/1e3)+" kWh ",1)])):m("",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]))])):m("",!0)]),_:1})]),_:1}))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"]),n(ee,{modelValue:e.modalManualSocInputVisible,"onUpdate:modelValue":t[20]||(t[20]=a=>e.modalManualSocInputVisible=a),"vehicle-id":e.modalVehicleId},null,8,["modelValue","vehicle-id"])],64)}const $e=T(Le,[["render",Je],["__scopeId","data-v-76699ceb"]]);export{$e as default};
diff --git a/packages/modules/display_themes/cards/web/assets/ChargePointsView-CZeUBF37.js b/packages/modules/display_themes/cards/web/assets/ChargePointsView-CZeUBF37.js
new file mode 100644
index 0000000000..f69d1a853e
--- /dev/null
+++ b/packages/modules/display_themes/cards/web/assets/ChargePointsView-CZeUBF37.js
@@ -0,0 +1 @@
+import{u as B,C as ne,N as ie}from"./index-CHLaD7ED.js";import{D as z}from"./DashBoardCard-BterAPyf.js";import{S as oe,C as W}from"./ChargePointPlugBadge-DyF92yTK.js";import{l as N,b as le,c as ae,F as A,j as re,k as E,m as U,e as D,n as Z,o as R,p as j,q as O,r as J,s as K,t as G,u as H,v as ce,w as de,x as ge,y as he}from"./vendor-fortawesome-C68yAli-.js";import{_ as T}from"./vendor-inkline-Ce5aFAnW.js";import{q as g,o as d,l as u,n as i,s as n,y as q,e as S,k as r,F as x,x as s,i as m,A as L,I as se,j as ue,p as me}from"./vendor-CZ1MGz7j.js";N.add(le,ae);const Ce={name:"ChargePointLockButton",components:{FontAwesomeIcon:A},props:{chargePointId:{required:!0,type:Number},changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:B()}},computed:{locked(){return this.mqttStore.getChargePointManualLock(this.chargePointId)},stateIcon(){return this.locked?["fas","fa-lock"]:["fas","fa-lock-open"]},stateClass(){return this.locked?["_color:danger"]:"_color:success"}},methods:{toggleChargePointManualLock(){this.changesLocked||this.$root.sendTopicToBroker(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`,!this.mqttStore.getValueBool(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`))}}};function fe(o,e,l,P,t,c){const f=g("font-awesome-icon"),V=g("i-button");return d(),u(V,{size:"lg",disabled:l.changesLocked,outline:l.changesLocked},{default:i(()=>[n(f,{"fixed-width":"",icon:c.stateIcon,class:q(c.stateClass),onClick:e[0]||(e[0]=C=>c.toggleChargePointManualLock())},null,8,["icon","class"])]),_:1},8,["disabled","outline"])}const Q=T(Ce,[["render",fe]]);N.add(re);const Pe={name:"ChargePointCodeButton",components:{FontAwesomeIcon:A,CodeInputModal:ne},props:{chargePointId:{type:Number,required:!0}},data(){return{mqttStore:B(),modalIdTagEntryVisible:!1,modalIdTagEntryColor:"warning",code:""}},computed:{tagState(){return this.mqttStore.getChargepointTagState(this.chargePointId)},tagButtonColor(){switch(this.tagState){case 2:return"success";case 1:return"warning";default:return""}},tagClass(){switch(this.tagState){case 2:return"_color:success-80";case 1:return"_color:warning-80";default:return""}}},methods:{toggleIdTagModal(){this.modalIdTagEntryVisible=!this.modalIdTagEntryVisible},sendIdTag(o){this.$root.sendTopicToBroker(`openWB/chargepoint/${this.chargePointId}/get/rfid`,o),this.modalIdTagEntryVisible=!1}}};function _e(o,e,l,P,t,c){const f=g("FontAwesomeIcon"),V=g("i-button"),C=g("CodeInputModal");return d(),S(x,null,[n(V,{class:"_margin-right:1",size:"lg",color:c.tagButtonColor,disabled:c.tagState==2,onClick:e[0]||(e[0]=h=>c.toggleIdTagModal())},{default:i(()=>[n(f,{"fixed-width":"",icon:["fas","fa-calculator"],class:q(c.tagClass)},null,8,["class"])]),_:1},8,["color","disabled"]),n(C,{ref:"lockInput",modelValue:t.modalIdTagEntryVisible,"onUpdate:modelValue":e[1]||(e[1]=h=>t.modalIdTagEntryVisible=h),"min-length":4,"max-length":20,"onUpdate:inputValue":c.sendIdTag},{header:i(()=>e[2]||(e[2]=[r(" Bitte einen ID-Tag eingeben. ")])),_:1},8,["modelValue","onUpdate:inputValue"])],64)}const X=T(Pe,[["render",_e]]);N.add(E,U,D,Z,R,j,O,J,K,G,H);const Se={name:"ChargePointCard",components:{DashBoardCard:z,SparkLine:oe,ChargePointPlugBadge:W,ChargePointLockButton:Q,ChargePointCodeButton:X,FontAwesomeIcon:A},props:{chargePointId:{type:Number,required:!0},changesLocked:{type:Boolean,required:!0}},emits:["vehicle-click","soc-click","charge-mode-click","toggle-charge-point-settings"],data(){return{mqttStore:B()}},methods:{handleVehicleClick(o){this.$emit("vehicle-click",o)},handleSocClick(o){this.$emit("soc-click",o)},handleChargeModeClick(o){this.$emit("charge-mode-click",o)},toggleChargePointSettings(o){this.$emit("toggle-charge-point-settings",o)}}},Ve={key:0};function be(o,e,l,P,t,c){const f=g("charge-point-plug-badge"),V=g("charge-point-code-button"),C=g("charge-point-lock-button"),h=g("i-column"),b=g("i-row"),k=g("spark-line"),I=g("font-awesome-icon"),_=g("i-badge"),y=g("i-button"),v=g("i-container"),p=g("dash-board-card");return d(),u(p,{color:"primary"},{headerLeft:i(()=>[r(s(t.mqttStore.getChargePointName(l.chargePointId)),1)]),headerRight:i(()=>[n(f,{"charge-point-id":[l.chargePointId]},null,8,["charge-point-id"])]),default:i(()=>[n(v,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[t.mqttStore.getRfidEnabled?(d(),u(V,{key:0,"charge-point-id":l.chargePointId},null,8,["charge-point-id"])):m("",!0),n(C,{"charge-point-id":l.chargePointId,"changes-locked":l.changesLocked},null,8,["charge-point-id","changes-locked"])]),_:1}),n(h,{class:"_text-align:right _padding-left:0"},{default:i(()=>[r(s(t.mqttStore.getChargePointPower(l.chargePointId))+" "+s(t.mqttStore.getChargePointPhasesInUse(l.chargePointId))+" "+s(t.mqttStore.getChargePointSetCurrent(l.chargePointId)),1)]),_:1})]),_:1}),n(b,{class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0"},{default:i(()=>[n(k,{color:"var(--color--primary)",data:t.mqttStore.getChargePointPowerChartData(l.chargePointId)},null,8,["data"])]),_:1})]),_:1})]),_:1}),n(h,{md:"6"},{default:i(()=>[n(b,{class:"_display:flex"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:i(()=>[n(_,{size:"lg",class:q(["_width:100%",l.changesLocked?"":"clickable"]),onClick:e[0]||(e[0]=w=>c.handleVehicleClick(l.chargePointId))},{default:i(()=>[n(I,{"fixed-width":"",icon:["fas","fa-car"]}),r(" "+s(t.mqttStore.getChargePointConnectedVehicleName(l.chargePointId)),1)]),_:1},8,["class"])]),_:1}),t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))||t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(h,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:i(()=>[n(y,{size:"sm",disabled:l.changesLocked,class:q(l.changesLocked?"":"clickable"),onClick:e[1]||(e[1]=w=>c.handleSocClick(l.chargePointId))},{default:i(()=>[t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?(d(),S("span",Ve,[n(I,{"fixed-width":"",icon:t.mqttStore.getVehicleSocIsManual(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?["fas","fa-edit"]:["fas","fa-car-battery"]},null,8,["icon"]),r(" "+s(t.mqttStore.getChargePointConnectedVehicleSoc(l.chargePointId).soc)+"% ",1)])):m("",!0),t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(I,{key:1,"fixed-width":"",icon:t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?["fas","times-circle"]:["fas","exclamation-triangle"]:[],class:q(t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?"_color:danger":"_color:warning":"")},null,8,["icon","class"])):m("",!0)]),_:1},8,["disabled","class"])]),_:1})):m("",!0)]),_:1}),n(b,{class:"_padding-top:1 _display:flex"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:i(()=>[n(_,{size:"lg",class:q(["_width:100%",l.changesLocked?"":"clickable"]),color:t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).class,onClick:e[2]||(e[2]=w=>c.handleChargeModeClick(l.chargePointId))},{default:i(()=>[r(s(t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).label)+" ",1),n(I,{"fixed-width":"",icon:t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?["fas","fa-star"]:["far","fa-star"],class:q(t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?"_color:warning":"")},null,8,["icon","class"])]),_:1},8,["class","color"])]),_:1}),t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(l.chargePointId)?(d(),u(h,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:i(()=>[n(_,{size:"lg"},{default:i(()=>[t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(l.chargePointId)?(d(),u(I,{key:0,"fixed-width":"",icon:t.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(l.chargePointId)?["fas","fa-clock"]:["far","fa-clock"],class:q(t.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(l.chargePointId)?"_color:success":"")},null,8,["icon","class"])):m("",!0)]),_:1})]),_:1})):m("",!0)]),_:1}),l.changesLocked?m("",!0):(d(),u(b,{key:0,class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[n(y,{block:"",onClick:e[3]||(e[3]=w=>c.toggleChargePointSettings(l.chargePointId))},{default:i(()=>[n(I,{"fixed-width":"",icon:["fas","fa-wrench"]})]),_:1})]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})]),_:1})}const Ie=T(Se,[["render",be],["__scopeId","data-v-3c6489c4"]]);N.add(E,U,D,Z,R,j,O,J,K,G,H);const ve={name:"ChargePointCard",components:{DashBoardCard:z,ChargePointPlugBadge:W,ChargePointLockButton:Q,ChargePointCodeButton:X,FontAwesomeIcon:A},props:{chargePointId:{type:Number,required:!0},changesLocked:{type:Boolean,required:!0}},emits:["vehicle-click","soc-click","charge-mode-click","toggle-charge-point-settings","set-charge-point-connected-vehicle-charge-mode"],data(){return{mqttStore:B(),simpleChargeModes:["instant_charging","pv_charging","stop"]}},computed:{filteredChargeModes(){return this.mqttStore.getSimpleChargePointView?this.mqttStore.chargeModeList().filter(o=>this.simpleChargeModes.includes(o.id)):this.mqttStore.chargeModeList()}},methods:{handleVehicleClick(o){this.$emit("vehicle-click",o)},handleSocClick(o){this.$emit("soc-click",o)},handleChargeModeClick(o){this.$emit("charge-mode-click",o)},toggleChargePointSettings(o){this.$emit("toggle-charge-point-settings",o)},setChargePointConnectedVehicleChargeMode(o,e){this.$emit("set-charge-point-connected-vehicle-charge-mode",o,e)}}},ke={key:0};function pe(o,e,l,P,t,c){const f=g("charge-point-plug-badge"),V=g("charge-point-code-button"),C=g("charge-point-lock-button"),h=g("i-column"),b=g("i-row"),k=g("font-awesome-icon"),I=g("i-button"),_=g("i-button-group"),y=g("i-container"),v=g("dash-board-card");return d(),u(v,{color:"primary"},{headerLeft:i(()=>[r(s(t.mqttStore.getChargePointName(l.chargePointId)),1)]),headerRight:i(()=>[n(f,{"charge-point-id":[l.chargePointId]},null,8,["charge-point-id"])]),default:i(()=>[n(y,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[t.mqttStore.getRfidEnabled?(d(),u(V,{key:0,"charge-point-id":l.chargePointId},null,8,["charge-point-id"])):m("",!0),n(C,{"charge-point-id":l.chargePointId,"changes-locked":l.changesLocked},null,8,["charge-point-id","changes-locked"])]),_:1}),n(h,{class:"_text-align:right _padding-left:0"},{default:i(()=>[r(s(t.mqttStore.getChargePointPower(l.chargePointId))+" "+s(t.mqttStore.getChargePointPhasesInUse(l.chargePointId))+" "+s(t.mqttStore.getChargePointSetCurrent(l.chargePointId)),1)]),_:1})]),_:1}),n(b,{class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0 button-group-wrapper"},{default:i(()=>[n(_,{class:"button-group main-button-group"},{default:i(()=>[n(I,{class:q(["large-button _flex-grow:1",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:e[0]||(e[0]=p=>c.handleVehicleClick(l.chargePointId))},{default:i(()=>[n(k,{"fixed-width":"",icon:["fas","fa-car"]}),r(" "+s(t.mqttStore.getChargePointConnectedVehicleName(l.chargePointId))+" ",1),n(k,{class:q(["_padding-left:1",t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?"_color:warning":""]),"fixed-width":"",icon:t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?["fas","fa-star"]:["far","fa-star"]},null,8,["icon","class"])]),_:1},8,["class","disabled"]),t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))||t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(I,{key:0,class:q(["large-button _flex-grow:0",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:e[1]||(e[1]=p=>c.handleSocClick(l.chargePointId))},{default:i(()=>[t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?(d(),S("span",ke,[n(k,{"fixed-width":"",icon:t.mqttStore.getVehicleSocIsManual(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?["fas","fa-edit"]:["fas","fa-car-battery"]},null,8,["icon"]),r(" "+s(t.mqttStore.getChargePointConnectedVehicleSoc(l.chargePointId).soc)+"% ",1)])):m("",!0),t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(k,{key:1,"fixed-width":"",icon:t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?["fas","times-circle"]:["fas","exclamation-triangle"]:[],class:q(t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?"_color:danger":"_color:warning":"")},null,8,["icon","class"])):m("",!0)]),_:1},8,["disabled","class"])):m("",!0),n(I,{class:q(["large-button _flex-grow:0",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:e[2]||(e[2]=p=>c.toggleChargePointSettings(l.chargePointId))},{default:i(()=>[n(k,{"fixed-width":"",icon:["fas","fa-wrench"]})]),_:1},8,["class","disabled"])]),_:1}),n(_,{class:"button-group _margin-top:1",disabled:l.changesLocked},{default:i(()=>[(d(!0),S(x,null,L(c.filteredChargeModes,p=>(d(),u(I,{key:p.id,outline:"",class:q(["large-button _flex-grow:1",l.changesLocked?"":"clickable"]),color:p.class!="dark"?p.class:"light",active:t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId)!=null&&p.id==t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).mode,onClick:w=>c.setChargePointConnectedVehicleChargeMode(l.chargePointId,p.id)},{default:i(()=>[r(s(p.label),1)]),_:2},1032,["class","color","active","onClick"]))),128))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const qe=T(ve,[["render",pe],["__scopeId","data-v-5e676b1f"]]),ye={name:"ExtendedNumberInput",inheritAttrs:!1,props:{modelValue:{type:Number,required:!0,default:NaN},unit:{type:String,default:""},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array,default:void 0}},emits:["update:modelValue"],data(){return{minimum:this.labels?0:this.min,maximum:this.labels?this.labels.length-1:this.max,stepSize:this.labels?1:this.step}},computed:{label(){var o;return this.labels&&this.inputValue!=null?this.inputValue<this.labels.length?o=this.labels[this.inputValue].label:console.error("index out of bounds: "+this.inputValue):o=this.inputValue,typeof o=="number"&&(o=o.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision})),o},precision(){if(!isFinite(this.stepSize))return 0;for(var o=1,e=0;Math.round(this.stepSize*o)/o!==this.stepSize;)o*=10,e++;return e},inputValue:{get(){if(this.labels){var o=void 0;for(let e=0;e<this.labels.length;e++)if(this.labels[e].value==this.modelValue){o=e;break}return o===void 0&&this.modelValue!==void 0?(console.warn("inputValue: not found in values: ",this.modelValue,"using minimum as default: ",this.minimum),this.minimum):o}return this.modelValue},set(o){if(this.labels){var e=this.labels[o].value;this.$emit("update:modelValue",e)}else this.$emit("update:modelValue",o)}}},methods:{increment(){var o=Math.min(this.inputValue+this.stepSize,this.maximum);this.inputValue=Math.round(o*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var o=Math.max(this.inputValue-this.stepSize,this.minimum);this.inputValue=Math.round(o*Math.pow(10,this.precision))/Math.pow(10,this.precision)}}};function we(o,e,l,P,t,c){const f=g("i-button"),V=g("i-input");return d(),u(V,{modelValue:c.label,"onUpdate:modelValue":e[0]||(e[0]=C=>c.label=C),plaintext:"",class:"_text-align:right",size:"lg"},{prepend:i(()=>[n(f,{onClick:c.decrement},{default:i(()=>e[1]||(e[1]=[r(" - ")])),_:1},8,["onClick"])]),suffix:i(()=>[r(s(l.unit),1)]),append:i(()=>[n(f,{onClick:c.increment},{default:i(()=>e[2]||(e[2]=[r(" + ")])),_:1},8,["onClick"])]),_:1},8,["modelValue"])}const Y=T(ye,[["render",we]]),xe={name:"ManualSocInput",components:{ExtendedNumberInput:Y,NumberPad:ie},props:{modelValue:{required:!0,type:Boolean,default:!1},vehicleId:{required:!0,type:Number,default:0}},emits:["update:modelValue"],data(){return{mqttStore:B(),newSoc:0}},methods:{enter(o){let e=this.newSoc*10+parseInt(o);e>=0&&e<=100&&(this.newSoc=e)},removeDigit(){this.newSoc=Math.trunc(this.newSoc/10)},clear(){this.newSoc=0},close(){this.$emit("update:modelValue",!1),this.newSoc=0},updateManualSoc(){this.$root.sendTopicToBroker(`openWB/vehicle/${this.vehicleId}/soc_module/calculated_soc_state/manual_soc`,this.newSoc),this.close()}}};function Me(o,e,l,P,t,c){const f=g("extended-number-input"),V=g("i-column"),C=g("i-row"),h=g("NumberPad"),b=g("i-container"),k=g("i-button"),I=g("i-modal");return d(),u(se,{to:"body"},[n(I,{"model-value":l.modelValue,size:"sm","onUpdate:modelValue":e[6]||(e[6]=_=>o.$emit("update:modelValue",_))},{header:i(()=>[r(' SoC für Fahrzeug "'+s(t.mqttStore.getVehicleName(l.vehicleId))+'" ',1)]),footer:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,null,{default:i(()=>[n(k,{color:"danger",onClick:e[4]||(e[4]=_=>c.close())},{default:i(()=>e[7]||(e[7]=[r(" Zurück ")])),_:1})]),_:1}),n(V,{class:"_text-align:right"},{default:i(()=>[n(k,{color:"success",onClick:e[5]||(e[5]=_=>c.updateManualSoc())},{default:i(()=>e[8]||(e[8]=[r(" OK ")])),_:1})]),_:1})]),_:1})]),_:1})]),default:i(()=>[n(b,null,{default:i(()=>[n(C,{center:"",class:"_padding-bottom:1"},{default:i(()=>[n(V,null,{default:i(()=>[n(f,{modelValue:t.newSoc,"onUpdate:modelValue":e[0]||(e[0]=_=>t.newSoc=_),unit:"%",min:0,max:100,step:1,size:"lg",class:"_text-align:center"},null,8,["modelValue"])]),_:1})]),_:1}),n(h,{"onKey:digit":e[1]||(e[1]=_=>c.enter(_)),"onKey:clear":e[2]||(e[2]=_=>c.clear()),"onKey:delete":e[3]||(e[3]=_=>c.removeDigit())})]),_:1})]),_:1},8,["model-value"])])}const Te=T(xe,[["render",Me]]);N.add(ce,de,ge,he);const Le={name:"ChargePointsView",components:{ChargePointCard:Ie,SimpleChargePointCard:qe,ExtendedNumberInput:Y,ManualSocInput:Te,FontAwesomeIcon:A},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:B(),modalChargeModeSettingVisible:!1,modalVehicleSelectVisible:!1,modalChargePointSettingsVisible:!1,modalChargePointId:0,modalVehicleId:0,modalActiveTab:"tab-general",modalManualSocInputVisible:!1,simpleChargeModes:["instant_charging","pv_charging","stop"]}},computed:{vehicleList(){let o=this.mqttStore.getVehicleList;var e=[];return Object.keys(o).forEach(l=>{let P=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""));e.push({id:P,name:o[l]})}),e},filteredChargeModes(){return this.mqttStore.getSimpleChargePointView?this.mqttStore.chargeModeList().filter(o=>this.simpleChargeModes.includes(o.id)):this.mqttStore.chargeModeList()}},watch:{changesLocked(o,e){e!==!0&&o===!0&&(this.modalChargeModeSettingVisible=!1,this.modalVehicleSelectVisible=!1,this.modalChargePointSettingsVisible=!1,this.modalManualSocInputVisible=!1)}},methods:{toggleChargePointSettings(o){switch(this.mqttStore.getChargePointConnectedVehicleChargeMode(o).mode){case"pv_charging":this.modalActiveTab="tab-pv-charging";break;case"scheduled_charging":this.modalActiveTab="tab-scheduled-charging";break;default:this.modalActiveTab="tab-instant-charging"}this.modalChargePointId=o,this.modalChargePointSettingsVisible=!0},handleChargeModeClick(o){this.changesLocked||(this.modalChargePointId=o,this.modalChargeModeSettingVisible=!0)},handleVehicleClick(o){this.changesLocked||(this.modalChargePointId=o,this.modalVehicleSelectVisible=!0)},handleSocClick(o){let e=this.mqttStore.getChargePointConnectedVehicleId(o);if(this.mqttStore.getVehicleSocIsManual(e)){this.modalVehicleId=e,this.modalManualSocInputVisible=!0;return}this.$root.sendTopicToBroker(`openWB/set/vehicle/${e}/get/force_soc_update`,1)},setChargePointConnectedVehicle(o,e){e.id!=this.mqttStore.getChargePointConnectedVehicleId(o)&&this.$root.sendTopicToBroker(`openWB/chargepoint/${o}/config/ev`,e.id),this.modalVehicleSelectVisible&&(this.modalVehicleSelectVisible=!1)},setChargePointConnectedVehicleChargeMode(o,e){if(e.id!=this.mqttStore.getChargePointConnectedVehicleChargeMode(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/selected`,e)}},setChargePointConnectedVehiclePriority(o,e){if(e!=this.mqttStore.getChargePointConnectedVehiclePriority(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/prio`,e)}},setChargePointConnectedVehicleTimeChargingActive(o,e){if(e!=this.mqttStore.getChargePointConnectedVehicleTimeChargingActive(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/time_charging/active`,e)}},setChargePointConnectedVehicleInstantChargingCurrent(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/current`,parseFloat(e))}},setChargePointConnectedVehicleInstantChargingLimit(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).selected){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/selected`,e)}},setChargePointConnectedVehicleInstantChargingLimitSoc(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).soc){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/soc`,parseInt(e))}},setChargePointConnectedVehicleInstantChargingLimitAmount(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).amount){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/amount`,e)}},setChargePointConnectedVehiclePvChargingFeedInLimit(o,e){if(e!=this.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/feed_in_limit`,e)}},setChargePointConnectedVehiclePvChargingMinCurrent(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/min_current`,P)}},setChargePointConnectedVehiclePvChargingMinSoc(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/min_soc`,P)}},setChargePointConnectedVehiclePvChargingMinSocCurrent(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/min_soc_current`,P)}},setChargePointConnectedVehiclePvChargingMaxSoc(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/max_soc`,P)}},setChargePointConnectedVehicleScheduledChargingPlanActive(o,e){this.$root.sendTopicToBroker(`${o}/active`,e)},setChargePointConnectedVehicleTimeChargingPlanActive(o,e){this.$root.sendTopicToBroker(`${o}/active`,e)}}},Be={class:"charge-points-card-wrapper"},Ne={key:0},Ae={key:1},Fe={key:2},ze={key:3},We={key:4},Ee={key:0},Ue={key:1},De={key:0},Ze={key:1},Re={key:2},je={key:3},Oe={key:4};function Je(o,e,l,P,t,c){const f=g("i-button"),V=g("i-button-group"),C=g("i-form-group"),h=g("i-form-label"),b=g("i-form"),k=g("i-modal"),I=g("i-tab-title"),_=g("extended-number-input"),y=g("i-tab"),v=g("font-awesome-icon"),p=g("i-alert"),w=g("i-row"),F=g("i-container"),$=g("i-tabs"),ee=g("manual-soc-input");return d(),S(x,null,[ue("div",Be,[(d(!0),S(x,null,L(t.mqttStore.getChargePointIds,a=>(d(),u(me(t.mqttStore.getSimpleChargePointView?"SimpleChargePointCard":"ChargePointCard"),{key:a,"charge-point-id":a,"changes-locked":l.changesLocked,onVehicleClick:c.handleVehicleClick,onSocClick:c.handleSocClick,onChargeModeClick:c.handleChargeModeClick,onToggleChargePointSettings:c.toggleChargePointSettings,onSetChargePointConnectedVehicleChargeMode:c.setChargePointConnectedVehicleChargeMode},null,40,["charge-point-id","changes-locked","onVehicleClick","onSocClick","onChargeModeClick","onToggleChargePointSettings","onSetChargePointConnectedVehicleChargeMode"]))),128))]),n(k,{modelValue:t.modalChargeModeSettingVisible,"onUpdate:modelValue":e[2]||(e[2]=a=>t.modalChargeModeSettingVisible=a),size:"lg"},{header:i(()=>[r(' Lademodus für "'+s(t.mqttStore.getChargePointConnectedVehicleName(t.modalChargePointId))+'" auswählen ',1)]),default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,{block:"",vertical:""},{default:i(()=>[(d(!0),S(x,null,L(c.filteredChargeModes,a=>(d(),u(f,{key:a.id,size:"lg",class:"large-button",outline:"",color:a.class!="dark"?a.class:"light",active:t.mqttStore.getChargePointConnectedVehicleChargeMode(t.modalChargePointId)!=null&&a.id==t.mqttStore.getChargePointConnectedVehicleChargeMode(t.modalChargePointId).mode,onClick:M=>c.setChargePointConnectedVehicleChargeMode(t.modalChargePointId,a.id)},{default:i(()=>[r(s(a.label),1)]),_:2},1032,["color","active","onClick"]))),128))]),_:1})]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[21]||(e[21]=[r("Priorität")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{size:"lg",class:"large-button",color:t.mqttStore.getChargePointConnectedVehiclePriority(t.modalChargePointId)!==!0?"danger":"",onClick:e[0]||(e[0]=a=>c.setChargePointConnectedVehiclePriority(t.modalChargePointId,!1))},{default:i(()=>e[22]||(e[22]=[r(" Nein ")])),_:1},8,["color"]),n(f,{color:t.mqttStore.getChargePointConnectedVehiclePriority(t.modalChargePointId)===!0?"success":"",onClick:e[1]||(e[1]=a=>c.setChargePointConnectedVehiclePriority(t.modalChargePointId,!0))},{default:i(()=>e[23]||(e[23]=[r(" Ja ")])),_:1},8,["color"])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(k,{modelValue:t.modalVehicleSelectVisible,"onUpdate:modelValue":e[3]||(e[3]=a=>t.modalVehicleSelectVisible=a),class:"modal-vehicle-select",size:"lg"},{header:i(()=>[r(' Fahrzeug an "'+s(t.mqttStore.getChargePointName(t.modalChargePointId))+'" auswählen ',1)]),default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,{vertical:"",block:""},{default:i(()=>[(d(!0),S(x,null,L(c.vehicleList,a=>(d(),u(f,{key:a.id,size:"lg",class:"large-button",active:t.mqttStore.getChargePointConnectedVehicleId(t.modalChargePointId)==a.id,color:t.mqttStore.getChargePointConnectedVehicleId(t.modalChargePointId)==a.id?"primary":"",onClick:M=>c.setChargePointConnectedVehicle(t.modalChargePointId,a)},{default:i(()=>[r(s(a.name),1)]),_:2},1032,["active","color","onClick"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(k,{modelValue:t.modalChargePointSettingsVisible,"onUpdate:modelValue":e[19]||(e[19]=a=>t.modalChargePointSettingsVisible=a),size:"lg"},{header:i(()=>[r(' Einstellungen für Fahrzeug "'+s(t.mqttStore.getChargePointConnectedVehicleName(t.modalChargePointId))+'" ',1)]),default:i(()=>[n($,{modelValue:t.modalActiveTab,"onUpdate:modelValue":e[18]||(e[18]=a=>t.modalActiveTab=a),stretch:""},{header:i(()=>[n(I,{for:"tab-instant-charging"},{default:i(()=>e[24]||(e[24]=[r(" Sofort ")])),_:1}),n(I,{for:"tab-pv-charging"},{default:i(()=>e[25]||(e[25]=[r(" PV ")])),_:1}),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(I,{key:0,for:"tab-scheduled-charging"},{default:i(()=>e[26]||(e[26]=[r(" Zielladen ")])),_:1})),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(I,{key:1,for:"tab-time-charging"},{default:i(()=>e[27]||(e[27]=[r(" Zeitladen ")])),_:1}))]),default:i(()=>[n(y,{name:"tab-instant-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[28]||(e[28]=[r("Stromstärke")])),_:1}),n(_,{unit:"A",min:6,max:32,"model-value":t.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(t.modalChargePointId),"onUpdate:modelValue":e[4]||(e[4]=a=>c.setChargePointConnectedVehicleInstantChargingCurrent(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[29]||(e[29]=[r("Begrenzung")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="none"?"primary":"",active:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="none",onClick:e[5]||(e[5]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId,"none"))},{default:i(()=>e[30]||(e[30]=[r(" Keine ")])),_:1},8,["color","active"]),n(f,{color:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="soc"?"primary":"",active:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="soc",onClick:e[6]||(e[6]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId,"soc"))},{default:i(()=>e[31]||(e[31]=[r(" EV-SoC ")])),_:1},8,["color","active"]),n(f,{color:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="amount"?"primary":"",active:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="amount",onClick:e[7]||(e[7]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId,"amount"))},{default:i(()=>e[32]||(e[32]=[r(" Energie ")])),_:1},8,["color","active"])]),_:1})]),_:1}),t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="soc"?(d(),u(C,{key:0},{default:i(()=>[n(h,null,{default:i(()=>e[33]||(e[33]=[r("Max. SoC")])),_:1}),n(_,{unit:"%",min:5,max:100,step:5,"model-value":t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).soc,"onUpdate:modelValue":e[8]||(e[8]=a=>c.setChargePointConnectedVehicleInstantChargingLimitSoc(t.modalChargePointId,a))},null,8,["model-value"])]),_:1})):m("",!0),t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="amount"?(d(),u(C,{key:1},{default:i(()=>[n(h,null,{default:i(()=>e[34]||(e[34]=[r("Max. Energie")])),_:1}),n(_,{unit:"kWh",min:1,max:100,"model-value":t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).amount/1e3,"onUpdate:modelValue":e[9]||(e[9]=a=>c.setChargePointConnectedVehicleInstantChargingLimitAmount(t.modalChargePointId,a*1e3))},null,8,["model-value"])]),_:1})):m("",!0)]),_:1})]),_:1}),n(y,{name:"tab-pv-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[35]||(e[35]=[r("Einspeisegrenze beachten")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:t.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId)!==!0?"danger":"",onClick:e[10]||(e[10]=a=>c.setChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId,!1))},{default:i(()=>e[36]||(e[36]=[r(" Nein ")])),_:1},8,["color"]),n(f,{color:t.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId)===!0?"success":"",onClick:e[11]||(e[11]=a=>c.setChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId,!0))},{default:i(()=>e[37]||(e[37]=[r(" Ja ")])),_:1},8,["color"])]),_:1})]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[38]||(e[38]=[r("Minimaler Dauerstrom")])),_:1}),n(_,{unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(t.modalChargePointId),"onUpdate:modelValue":e[12]||(e[12]=a=>c.setChargePointConnectedVehiclePvChargingMinCurrent(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[39]||(e[39]=[r("Mindest-SoC")])),_:1}),n(_,{unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(t.modalChargePointId),"onUpdate:modelValue":e[13]||(e[13]=a=>c.setChargePointConnectedVehiclePvChargingMinSoc(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[40]||(e[40]=[r("Mindest-SoC Strom")])),_:1}),n(_,{min:6,max:32,unit:"A","model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(t.modalChargePointId),"onUpdate:modelValue":e[14]||(e[14]=a=>c.setChargePointConnectedVehiclePvChargingMinSocCurrent(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[41]||(e[41]=[r("SoC-Limit")])),_:1}),n(_,{unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(t.modalChargePointId),"onUpdate:modelValue":e[15]||(e[15]=a=>c.setChargePointConnectedVehiclePvChargingMaxSoc(t.modalChargePointId,a))},null,8,["model-value"])]),_:1})]),_:1})]),_:1}),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(y,{key:0,name:"tab-scheduled-charging"},{default:i(()=>[Object.keys(t.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(t.modalChargePointId)).length===0?(d(),u(p,{key:0},{icon:i(()=>[n(v,{"fixed-width":"",icon:["fas","fa-info-circle"]})]),default:i(()=>[e[42]||(e[42]=r(" Es wurden noch keine Zeitpläne für das Zielladen eingerichtet. "))]),_:1})):(d(),u(b,{key:1},{default:i(()=>[(d(!0),S(x,null,L(t.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(t.modalChargePointId),(a,M)=>(d(),u(C,{key:M},{default:i(()=>[n(F,null,{default:i(()=>[n(w,null,{default:i(()=>[n(h,null,{default:i(()=>[r(s(a.name),1)]),_:2},1024)]),_:2},1024),n(w,null,{default:i(()=>[n(f,{size:"lg",block:"",color:a.active?"success":"danger",onClick:te=>c.setChargePointConnectedVehicleScheduledChargingPlanActive(M,!a.active)},{default:i(()=>[a.frequency.selected=="once"?(d(),S("span",Ne,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+s(t.mqttStore.formatDate(a.frequency.once)),1)])):m("",!0),a.frequency.selected=="daily"?(d(),S("span",Ae,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]}),e[43]||(e[43]=r(" täglich "))])):m("",!0),a.frequency.selected=="weekly"?(d(),S("span",Fe,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]}),r(" "+s(t.mqttStore.formatWeeklyScheduleDays(a.frequency.weekly)),1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),r(" "+s(a.time)+" ",1),a.limit.selected=="soc"?(d(),S("span",ze,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+s(a.limit.soc_scheduled)+" % ",1)])):m("",!0),a.limit.selected=="amount"?(d(),S("span",We,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),r(" "+s(a.limit.amount/1e3)+" kWh ",1)])):m("",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}))]),_:1})),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(y,{key:1,name:"tab-time-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[44]||(e[44]=[r("Zeitladen aktivieren")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId)!==!0?"danger":"",onClick:e[16]||(e[16]=a=>c.setChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId,!1))},{default:i(()=>e[45]||(e[45]=[r(" Nein ")])),_:1},8,["color"]),n(f,{color:t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId)===!0?"success":"",onClick:e[17]||(e[17]=a=>c.setChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId,!0))},{default:i(()=>e[46]||(e[46]=[r(" Ja ")])),_:1},8,["color"])]),_:1})]),_:1}),t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId)===!0?(d(),S("div",Ee,[Object.keys(t.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(t.modalChargePointId)).length===0?(d(),u(p,{key:0,color:"warning",class:"_margin-top:2"},{icon:i(()=>[n(v,{"fixed-width":"",icon:["fas","fa-circle-info"]})]),default:i(()=>[e[47]||(e[47]=r(" Es wurden noch keine Zeitpläne für das Zeitladen eingerichtet. "))]),_:1})):(d(),S("div",Ue,[(d(!0),S(x,null,L(t.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(t.modalChargePointId),(a,M)=>(d(),u(C,{key:M},{default:i(()=>[n(F,null,{default:i(()=>[n(w,null,{default:i(()=>[n(h,null,{default:i(()=>[r(s(a.name),1)]),_:2},1024)]),_:2},1024),n(w,null,{default:i(()=>[n(f,{size:"lg",block:"",color:a.active?"success":"danger",onClick:te=>c.setChargePointConnectedVehicleTimeChargingPlanActive(M,!a.active)},{default:i(()=>[a.frequency.selected=="once"?(d(),S("span",De,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+s(t.mqttStore.formatDateRange(a.frequency.once)),1)])):m("",!0),a.frequency.selected=="daily"?(d(),S("span",Ze,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]}),e[48]||(e[48]=r(" täglich "))])):m("",!0),a.frequency.selected=="weekly"?(d(),S("span",Re,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]}),r(" "+s(t.mqttStore.formatWeeklyScheduleDays(a.frequency.weekly)),1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),r(" "+s(a.time.join("-"))+" ",1),a.limit.selected=="soc"?(d(),S("span",je,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+s(a.limit.soc)+" % ",1)])):m("",!0),a.limit.selected=="amount"?(d(),S("span",Oe,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),r(" "+s(a.limit.amount/1e3)+" kWh ",1)])):m("",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]))])):m("",!0)]),_:1})]),_:1}))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"]),n(ee,{modelValue:t.modalManualSocInputVisible,"onUpdate:modelValue":e[20]||(e[20]=a=>t.modalManualSocInputVisible=a),"vehicle-id":t.modalVehicleId},null,8,["modelValue","vehicle-id"])],64)}const $e=T(Le,[["render",Je],["__scopeId","data-v-76699ceb"]]);export{$e as default};
diff --git a/packages/modules/display_themes/cards/web/assets/DashBoardCard-BnSsjBAn.js b/packages/modules/display_themes/cards/web/assets/DashBoardCard-BterAPyf.js
similarity index 83%
rename from packages/modules/display_themes/cards/web/assets/DashBoardCard-BnSsjBAn.js
rename to packages/modules/display_themes/cards/web/assets/DashBoardCard-BterAPyf.js
index 8f107d3dd1..42da60c3ae 100644
--- a/packages/modules/display_themes/cards/web/assets/DashBoardCard-BnSsjBAn.js
+++ b/packages/modules/display_themes/cards/web/assets/DashBoardCard-BterAPyf.js
@@ -1 +1 @@
-import{_ as u}from"./vendor-inkline-7C7Ddj37.js";import{l as t,o as s,n as c,p as e,s as r,f as n,i as f}from"./vendor-Cv1UtYRW.js";const p={name:"DashBoardCard",props:{color:{type:String,required:!0}}};function m(o,h,d,$,g,w){const a=t("i-column"),l=t("i-row"),i=t("i-container"),_=t("i-card");return s(),c(_,{color:d.color},{header:e(()=>[r(i,null,{default:e(()=>[r(l,null,{default:e(()=>[r(a,null,{default:e(()=>[n(o.$slots,"headerLeft",{},void 0,!0)]),_:3}),o.$slots.headerRight?(s(),c(a,{key:0,class:"_flex-grow:0 _text-align:right _white-space:nowrap"},{default:e(()=>[n(o.$slots,"headerRight",{},void 0,!0)]),_:3})):f("",!0)]),_:3})]),_:3})]),default:e(()=>[n(o.$slots,"default",{},void 0,!0)]),_:3},8,["color"])}const k=u(p,[["render",m],["__scopeId","data-v-c53b85bf"]]);export{k as D};
+import{_ as u}from"./vendor-inkline-Ce5aFAnW.js";import{o as s,l as c,n as e,s as r,f as n,i as f,q as t}from"./vendor-CZ1MGz7j.js";const p={name:"DashBoardCard",props:{color:{type:String,required:!0}}};function m(o,h,d,$,g,w){const a=t("i-column"),l=t("i-row"),i=t("i-container"),_=t("i-card");return s(),c(_,{color:d.color},{header:e(()=>[r(i,null,{default:e(()=>[r(l,null,{default:e(()=>[r(a,null,{default:e(()=>[n(o.$slots,"headerLeft",{},void 0,!0)]),_:3}),o.$slots.headerRight?(s(),c(a,{key:0,class:"_flex-grow:0 _text-align:right _white-space:nowrap"},{default:e(()=>[n(o.$slots,"headerRight",{},void 0,!0)]),_:3})):f("",!0)]),_:3})]),_:3})]),default:e(()=>[n(o.$slots,"default",{},void 0,!0)]),_:3},8,["color"])}const k=u(p,[["render",m],["__scopeId","data-v-c53b85bf"]]);export{k as D};
diff --git a/packages/modules/display_themes/cards/web/assets/DashBoardView-BaB3KBmL.js b/packages/modules/display_themes/cards/web/assets/DashBoardView-BaB3KBmL.js
deleted file mode 100644
index 92f83bedc5..0000000000
--- a/packages/modules/display_themes/cards/web/assets/DashBoardView-BaB3KBmL.js
+++ /dev/null
@@ -1 +0,0 @@
-import{u as p}from"./index-AtLAf1dw.js";import{D as S}from"./DashBoardCard-BnSsjBAn.js";import{S as q,C as k}from"./ChargePointPlugBadge-4-IgwHFS.js";import{l as P,d as v,F as w,e as x,g as B,h as D,i as I}from"./vendor-fortawesome-CVmDIOjI.js";import{_ as g}from"./vendor-inkline-7C7Ddj37.js";import{l as e,o as c,n as d,p as o,s,k as i,x as m,i as _,e as H}from"./vendor-Cv1UtYRW.js";P.add(v);const L={name:"GridCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:p()}}};function E(h,l,f,u,t,C){const r=e("font-awesome-icon"),a=e("spark-line"),n=e("dash-board-card");return c(),d(n,{color:"danger"},{headerLeft:o(()=>[s(r,{"fixed-width":"",icon:["fas","fa-gauge-high"]}),i(" EVU ")]),headerRight:o(()=>[i(m(t.mqttStore.getGridPower()),1)]),default:o(()=>[s(a,{color:"var(--color--danger)","color-negative":"var(--color--success)",data:t.mqttStore.getGridPowerChartData},null,8,["data"])]),_:1})}const V=g(L,[["render",E]]);P.add(x);const G={name:"BatteryCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:p()}}};function R(h,l,f,u,t,C){const r=e("font-awesome-icon"),a=e("spark-line"),n=e("dash-board-card");return t.mqttStore.getBatteryConfigured?(c(),d(n,{key:0,color:"warning"},{headerLeft:o(()=>[s(r,{"fixed-width":"",icon:["fas","fa-car-battery"]}),i(" Speicher ")]),headerRight:o(()=>[i(m(t.mqttStore.getBatterySoc())+" / "+m(t.mqttStore.getBatteryPower()),1)]),default:o(()=>[s(a,{color:"var(--color--warning)",data:t.mqttStore.getBatteryPowerChartData,"soc-data":t.mqttStore.getBatterySocChartData},null,8,["data","soc-data"])]),_:1})):_("",!0)}const $=g(G,[["render",R]]);P.add(B);const N={name:"InverterCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:p()}}};function F(h,l,f,u,t,C){const r=e("font-awesome-icon"),a=e("spark-line"),n=e("dash-board-card");return t.mqttStore.getPvConfigured?(c(),d(n,{key:0,color:"success"},{headerLeft:o(()=>[s(r,{"fixed-width":"",icon:["fas","fa-solar-panel"]}),i(" PV ")]),headerRight:o(()=>[i(m(t.mqttStore.getPvPower()),1)]),default:o(()=>[s(a,{color:"var(--color--success)",data:t.mqttStore.getPvPowerChartData,inverted:!0},null,8,["data"])]),_:1})):_("",!0)}const A=g(N,[["render",F]]);P.add(D);const M={name:"HomeCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:p()}}};function T(h,l,f,u,t,C){const r=e("font-awesome-icon"),a=e("spark-line"),n=e("dash-board-card");return c(),d(n,{color:"light"},{headerLeft:o(()=>[s(r,{"fixed-width":"",icon:["fas","fa-home"]}),i(" Hausverbrauch ")]),headerRight:o(()=>[i(m(t.mqttStore.getHomePower()),1)]),default:o(()=>[s(a,{color:"var(--color--light)",data:t.mqttStore.getHomePowerChartData},null,8,["data"])]),_:1})}const U=g(M,[["render",T]]);P.add(I);const j={name:"ChargePointsCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w,ChargePointPlugBadge:k},props:{},data(){return{mqttStore:p()}}};function z(h,l,f,u,t,C){const r=e("font-awesome-icon"),a=e("charge-point-plug-badge"),n=e("spark-line"),y=e("dash-board-card");return t.mqttStore.getChargePointIds.length>0?(c(),d(y,{key:0,color:"primary"},{headerLeft:o(()=>[s(r,{"fixed-width":"",icon:["fas","fa-charging-station"]}),i(" "+m(t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointName(t.mqttStore.getChargePointIds[0]):"Ladepunkte"),1)]),headerRight:o(()=>[i(m(t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointPower(t.mqttStore.getChargePointIds[0]):t.mqttStore.getChargePointSumPower())+" ",1),s(a,{"charge-point-id":t.mqttStore.getChargePointIds,"show-energy-charged":!1},null,8,["charge-point-id"])]),default:o(()=>[s(n,{color:"var(--color--primary)",data:t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointPowerChartData(t.mqttStore.getChargePointIds[0]):t.mqttStore.getChargePointSumPowerChartData},null,8,["data"])]),_:1})):_("",!0)}const J=g(j,[["render",z]]),K={name:"DashboardView",components:{GridCard:V,HomeCard:U,BatteryCard:$,InverterCard:A,ChargePointsCard:J},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:p()}}},O={class:"dash-board-card-wrapper"};function Q(h,l,f,u,t,C){const r=e("grid-card"),a=e("home-card"),n=e("battery-card"),y=e("inverter-card"),b=e("charge-points-card");return c(),H("div",O,[t.mqttStore.getGridCardEnabled?(c(),d(r,{key:0})):_("",!0),t.mqttStore.getHomeCardEnabled?(c(),d(a,{key:1})):_("",!0),t.mqttStore.getBatteryCardEnabled?(c(),d(n,{key:2})):_("",!0),t.mqttStore.getPvCardEnabled?(c(),d(y,{key:3})):_("",!0),t.mqttStore.getChargePointsCardEnabled?(c(),d(b,{key:4})):_("",!0)])}const ot=g(K,[["render",Q],["__scopeId","data-v-2085947b"]]);export{ot as default};
diff --git a/packages/modules/display_themes/cards/web/assets/DashBoardView-_HZMNhnS.js b/packages/modules/display_themes/cards/web/assets/DashBoardView-_HZMNhnS.js
new file mode 100644
index 0000000000..1bad69b521
--- /dev/null
+++ b/packages/modules/display_themes/cards/web/assets/DashBoardView-_HZMNhnS.js
@@ -0,0 +1 @@
+import{u as g}from"./index-CHLaD7ED.js";import{D as S}from"./DashBoardCard-BterAPyf.js";import{S as q,C as k}from"./ChargePointPlugBadge-DyF92yTK.js";import{l as P,d as v,F as w,e as x,g as B,h as D,i as I}from"./vendor-fortawesome-C68yAli-.js";import{_ as h}from"./vendor-inkline-Ce5aFAnW.js";import{o as c,l as i,n as o,s as d,k as m,x as p,q as e,i as _,e as H}from"./vendor-CZ1MGz7j.js";P.add(v);const L={name:"GridCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function E(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return c(),i(s,{color:"danger"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-gauge-high"]}),r[0]||(r[0]=m(" EVU "))]),headerRight:o(()=>[m(p(t.mqttStore.getGridPower()),1)]),default:o(()=>[d(n,{color:"var(--color--danger)","color-negative":"var(--color--success)",data:t.mqttStore.getGridPowerChartData},null,8,["data"])]),_:1})}const V=h(L,[["render",E]]);P.add(x);const G={name:"BatteryCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function R(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return t.mqttStore.getBatteryConfigured?(c(),i(s,{key:0,color:"warning"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r[0]||(r[0]=m(" Speicher "))]),headerRight:o(()=>[m(p(t.mqttStore.getBatterySoc())+" / "+p(t.mqttStore.getBatteryPower()),1)]),default:o(()=>[d(n,{color:"var(--color--warning)",data:t.mqttStore.getBatteryPowerChartData,"soc-data":t.mqttStore.getBatterySocChartData},null,8,["data","soc-data"])]),_:1})):_("",!0)}const $=h(G,[["render",R]]);P.add(B);const N={name:"InverterCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function F(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return t.mqttStore.getPvConfigured?(c(),i(s,{key:0,color:"success"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-solar-panel"]}),r[0]||(r[0]=m(" PV "))]),headerRight:o(()=>[m(p(t.mqttStore.getPvPower()),1)]),default:o(()=>[d(n,{color:"var(--color--success)",data:t.mqttStore.getPvPowerChartData,inverted:!0},null,8,["data"])]),_:1})):_("",!0)}const A=h(N,[["render",F]]);P.add(D);const M={name:"HomeCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function T(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return c(),i(s,{color:"light"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-home"]}),r[0]||(r[0]=m(" Hausverbrauch "))]),headerRight:o(()=>[m(p(t.mqttStore.getHomePower()),1)]),default:o(()=>[d(n,{color:"var(--color--light)",data:t.mqttStore.getHomePowerChartData},null,8,["data"])]),_:1})}const U=h(M,[["render",T]]);P.add(I);const j={name:"ChargePointsCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w,ChargePointPlugBadge:k},props:{},data(){return{mqttStore:g()}}};function z(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("charge-point-plug-badge"),s=e("spark-line"),y=e("dash-board-card");return t.mqttStore.getChargePointIds.length>0?(c(),i(y,{key:0,color:"primary"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-charging-station"]}),m(" "+p(t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointName(t.mqttStore.getChargePointIds[0]):"Ladepunkte"),1)]),headerRight:o(()=>[m(p(t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointPower(t.mqttStore.getChargePointIds[0]):t.mqttStore.getChargePointSumPower())+" ",1),d(n,{"charge-point-id":t.mqttStore.getChargePointIds,"show-energy-charged":!1},null,8,["charge-point-id"])]),default:o(()=>[d(s,{color:"var(--color--primary)",data:t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointPowerChartData(t.mqttStore.getChargePointIds[0]):t.mqttStore.getChargePointSumPowerChartData},null,8,["data"])]),_:1})):_("",!0)}const J=h(j,[["render",z]]),K={name:"DashboardView",components:{GridCard:V,HomeCard:U,BatteryCard:$,InverterCard:A,ChargePointsCard:J},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:g()}}},O={class:"dash-board-card-wrapper"};function Q(l,r,f,u,t,C){const a=e("grid-card"),n=e("home-card"),s=e("battery-card"),y=e("inverter-card"),b=e("charge-points-card");return c(),H("div",O,[t.mqttStore.getGridCardEnabled?(c(),i(a,{key:0})):_("",!0),t.mqttStore.getHomeCardEnabled?(c(),i(n,{key:1})):_("",!0),t.mqttStore.getBatteryCardEnabled?(c(),i(s,{key:2})):_("",!0),t.mqttStore.getPvCardEnabled?(c(),i(y,{key:3})):_("",!0),t.mqttStore.getChargePointsCardEnabled?(c(),i(b,{key:4})):_("",!0)])}const ot=h(K,[["render",Q],["__scopeId","data-v-2085947b"]]);export{ot as default};
diff --git a/packages/modules/display_themes/cards/web/assets/EnergyFlowView-fJc3wqIp.js b/packages/modules/display_themes/cards/web/assets/EnergyFlowView-BcB2FDT1.js
similarity index 72%
rename from packages/modules/display_themes/cards/web/assets/EnergyFlowView-fJc3wqIp.js
rename to packages/modules/display_themes/cards/web/assets/EnergyFlowView-BcB2FDT1.js
index 8563d15eee..aee876bee1 100644
--- a/packages/modules/display_themes/cards/web/assets/EnergyFlowView-fJc3wqIp.js
+++ b/packages/modules/display_themes/cards/web/assets/EnergyFlowView-BcB2FDT1.js
@@ -1 +1 @@
-import{u as y}from"./index-AtLAf1dw.js";import{D as V}from"./DashBoardCard-BnSsjBAn.js";import{l as v,o,n as x,p as d,k as m,s as R,j as n,e as c,F as C,A as S,z as g,i as u,x as w,Q as p}from"./vendor-Cv1UtYRW.js";import{_ as f}from"./vendor-inkline-7C7Ddj37.js";import"./vendor-fortawesome-CVmDIOjI.js";const P={name:"DashboardFlowCard",components:{DashBoardCard:V},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:y(),svgSize:{xMin:0,xMax:150,yMin:0,yMax:105,circleRadius:10,strokeWidth:.5,textSize:5,numRows:4,numColumns:3}}},computed:{svgViewBox(){return`${this.svgSize.xMin} ${this.svgSize.yMin} ${this.svgSize.xMax} ${this.svgSize.yMax}`},svgFontSize(){return`${this.svgSize.textSize}px`},svgRectWidth(){return(this.svgSize.xMax-this.svgSize.xMin-this.svgSize.strokeWidth-this.svgSize.numColumns)/this.svgSize.numColumns},svgStrokeWidth(){return this.svgSize.strokeWidth},svgIconWidth(){return this.svgSize.circleRadius},svgIconHeight(){return this.svgSize.circleRadius},gridPower(){return this.mqttStore.getGridPower("object")},pvPower(){return this.mqttStore.getPvPower("object")},homePower(){return this.mqttStore.getHomePower("object")},batteryPower(){return this.mqttStore.getBatteryPower("object")},batterySoc(){return this.mqttStore.getBatterySoc("object").value/100},connectedChargePoints(){return this.mqttStore.getChargePointIds},chargePointSumPower(){return this.mqttStore.getChargePointSumPower("object")},chargePoint1Power(){return this.connectedChargePoints.length>0?this.mqttStore.getChargePointPower(this.connectedChargePoints[0],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint2Power(){return this.connectedChargePoints.length>1?this.mqttStore.getChargePointPower(this.connectedChargePoints[1],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint3Power(){return this.connectedChargePoints.length>2?this.mqttStore.getChargePointPower(this.connectedChargePoints[2],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint1Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[0])},chargePoint2Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[1])},chargePoint3Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[2])},chargePoint1VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[0])},chargePoint2VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[1])},chargePoint3VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[0])},chargePoint2ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[1])},chargePoint3ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[0])},chargePoint2ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[1])},chargePoint3ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[0]).soc/100},chargePoint2ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[1]).soc/100},chargePoint3ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[2]).soc/100},gridConsumption(){return this.gridPower.value>0},gridFeedIn(){return this.gridPower.value<0},homeConsumption(){return this.homePower.value>0},homeProduction(){return this.homePower.value<0},pvProduction(){return this.pvPower.value>0},batteryDischarging(){return this.batteryPower.value<0},batteryCharging(){return this.batteryPower.value>0},chargePointSumCharging(){return this.chargePointSumPower.value>0},chargePointSumDischarging(){return this.chargePointSumPower.value<0},chargePoint1Charging(){return this.chargePoint1Power.value>0},chargePoint1Discharging(){return this.chargePoint1Power.value<0},chargePoint2Charging(){return this.chargePoint2Power.value>0},chargePoint2Discharging(){return this.chargePoint2Power.value<0},chargePoint3Charging(){return this.chargePoint3Power.value>0},chargePoint3Discharging(){return this.chargePoint3Power.value<0},svgComponents(){var e=[];return this.mqttStore.getThemeConfiguration.enable_dashboard_card_grid&&e.push({id:"grid",class:{base:"grid",valueLabel:this.gridFeedIn?"fill-success":this.gridConsumption?"fill-danger":"",animated:this.gridConsumption,animatedReverse:this.gridFeedIn},position:{row:0,column:0},label:["EVU",this.gridPower.textValue],icon:"icons/owbGrid.svg"}),this.mqttStore.getThemeConfiguration.enable_dashboard_card_home_consumption&&e.push({id:"home",class:{base:"home",valueLabel:"",animated:this.homeProduction,animatedReverse:this.homeConsumption},position:{row:0,column:2},label:["Haus",this.homePower.textValue],icon:"icons/owbHouse.svg"}),this.mqttStore.getPvConfigured&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_inverter_sum&&e.push({id:"pv",class:{base:"pv",valueLabel:this.pvProduction?"fill-success":"",animated:this.pvProduction,animatedReverse:!1},position:{row:1,column:0},label:["PV",this.pvPower.textValue],icon:"icons/owbPV.svg"}),this.mqttStore.getBatteryConfigured&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_battery_sum&&e.push({id:"battery",class:{base:"battery",valueLabel:"",animated:this.batteryDischarging,animatedReverse:this.batteryCharging},position:{row:1,column:2},label:["Speicher",this.batteryPower.textValue],soc:this.batterySoc,icon:"icons/owbBattery.svg"}),this.connectedChargePoints.length>0&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_charge_point_sum&&(this.connectedChargePoints.length<=3?(e.push({id:"charge-point-1",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint1Discharging,animatedReverse:this.chargePoint1Charging},position:{row:2,column:this.connectedChargePoints.length>1?0:1},label:[this.chargePoint1Name,this.chargePoint1Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint1VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-1",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint1ConnectedVehicleChargeMode.class},position:{row:3,column:this.connectedChargePoints.length>1?0:1},label:[this.chargePoint1ConnectedVehicleName||"---",this.chargePoint1ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint1ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"}),this.connectedChargePoints.length>1&&(e.push({id:"charge-point-2",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint2Discharging,animatedReverse:this.chargePoint2Charging},position:{row:2,column:this.connectedChargePoints.length>2?1:2},label:[this.chargePoint2Name,this.chargePoint2Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint2VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-2",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint2ConnectedVehicleChargeMode.class},position:{row:3,column:this.connectedChargePoints.length>2?1:2},label:[this.chargePoint2ConnectedVehicleName||"---",this.chargePoint2ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint2ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"}),this.connectedChargePoints.length>2&&(e.push({id:"charge-point-3",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint3Discharging,animatedReverse:this.chargePoint3Charging},position:{row:2,column:2},label:[this.chargePoint3Name,this.chargePoint3Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint3VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-3",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint3ConnectedVehicleChargeMode.class},position:{row:3,column:2},label:[this.chargePoint3ConnectedVehicleName||"---",this.chargePoint3ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint3ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"})))):e.push({id:"charge-point-sum",class:{base:"charge-point",valueLabel:"",animated:this.chargePointSumDischarging,animatedReverse:this.chargePointSumCharging},position:{row:2,column:1},label:["Ladepunkte",this.chargePointSumPower.textValue],icon:"icons/owbChargePoint.svg"})),(!this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles||this.connectedChargePoints.length===0||this.connectedChargePoints.length>3)&&this.setSvgNumRows(3),e}},methods:{setSvgNumRows(e){this.svgSize.numRows=e},calcRowY(e){let r=this.svgSize.yMin+this.svgSize.strokeWidth+this.svgSize.circleRadius,a=this.svgSize.yMax-this.svgSize.strokeWidth-this.svgSize.circleRadius-r;return e*(a/(this.svgSize.numRows-1))+r},calcColumnX(e){let r=this.svgSize.xMin+this.svgSize.strokeWidth+this.svgRectWidth/2,a=this.svgSize.xMax-this.svgSize.strokeWidth-this.svgRectWidth/2-r;return e*(a/(this.svgSize.numColumns-1))+r},calcFlowLineAnchorX(e){let r=this.calcColumnX(e);return e<(this.svgSize.numColumns-1)/2?r+this.svgRectWidth/2-this.svgSize.circleRadius:e>(this.svgSize.numColumns-1)/2?r-this.svgRectWidth/2+this.svgSize.circleRadius:r},calcSvgElementBoundingBox(e){let r=document.getElementById(e);if(r==null)return{x:0,y:0,width:0,height:0};let h=r.getBBox();return{x:h.x,y:h.y,width:h.width,height:h.height}},beginAnimation(e){var r;this.$refs[e]!=null&&((r=this.$refs[e][0])==null||r.beginElement())}}},b=()=>{p(e=>({"2d21ce23":e.svgStrokeWidth,"0cb0615b":e.svgFontSize}))},_=P.setup;P.setup=_?(e,r)=>(b(),_(e,r)):b;const q={class:"svg-container"},M=["viewBox"],W={id:"layer1",style:{display:"inline"}},k=["d"],N={id:"layer2",style:{display:"inline"}},B=["cx","cy","r"],L=["transform","onClick"],F=["id"],D=["x","y","width","height"],j=["id"],I=["x","y","width","height","rx","ry"],E=["x","y","width","height","rx","ry"],T=["clip-path"],A=["id","x","y"],X=["values"],H=["id","x","y"],Y=["transform"],G=["r"],Q=["r","clip-path"],U=["href","x","y","height","width"];function J(e,r,h,a,t,s){const l=v("i-container"),z=v("dash-board-card");return o(),x(z,{color:"primary"},{headerLeft:d(()=>[m(" Übersicht - Energiefluss ")]),default:d(()=>[R(l,null,{default:d(()=>[n("div",q,[(o(),c("svg",{viewBox:s.svgViewBox,version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},[n("g",W,[(o(!0),c(C,null,S(s.svgComponents,i=>(o(),c("path",{key:i.id,class:g([i.class.base,{animated:i.class.animated},{animatedReverse:i.class.animatedReverse}]),d:i.class.base!=="vehicle"?`M ${s.calcFlowLineAnchorX(i.position.column)}, ${s.calcRowY(i.position.row)} ${s.calcColumnX(1)}, ${s.calcRowY(1)}`:""},null,10,k))),128))]),n("g",N,[n("circle",{id:"center",cx:s.calcColumnX(1),cy:s.calcRowY(1),r:t.svgSize.circleRadius/3},null,8,B),(o(!0),c(C,null,S(s.svgComponents,i=>(o(),c("g",{key:i.id,class:g(i.class.base),transform:`translate(${s.calcColumnX(i.position.column)}, ${s.calcRowY(i.position.row)})`,onClick:$=>s.beginAnimation(`animate-label-${i.id}`)},[n("defs",null,[i.soc?(o(),c("clipPath",{key:0,id:`clip-soc-${i.id}`},[n("rect",{x:-t.svgSize.circleRadius-t.svgSize.strokeWidth,y:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*(1-2*i.soc),width:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*2,height:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*2*i.soc},null,8,D)],8,F)):u("",!0),n("clipPath",{id:`clip-label-${i.id}`},[n("rect",{x:-s.svgRectWidth/2,y:-t.svgSize.circleRadius,width:s.svgRectWidth,height:t.svgSize.circleRadius*2,rx:t.svgSize.circleRadius,ry:t.svgSize.circleRadius},null,8,I)],8,j)]),n("rect",{x:-s.svgRectWidth/2,y:-t.svgSize.circleRadius,width:s.svgRectWidth,height:t.svgSize.circleRadius*2,rx:t.svgSize.circleRadius,ry:t.svgSize.circleRadius},null,8,E),n("text",{"clip-path":`url(#clip-label-${i.id})`},[n("tspan",{id:`label-${i.id}`,"text-anchor":"start",x:-s.svgRectWidth/2+2*t.svgSize.circleRadius+t.svgSize.strokeWidth,y:-t.svgSize.textSize/2},[s.calcSvgElementBoundingBox(`label-${i.id}`).width>s.svgRectWidth-2*t.svgSize.circleRadius-2*t.svgSize.strokeWidth?(o(),c("animate",{key:0,ref_for:!0,ref:`animate-label-${i.id}`,xmlns:"http://www.w3.org/2000/svg",attributeName:"x",dur:"5s",values:"0; "+(-s.calcSvgElementBoundingBox(`label-${i.id}`).width+s.svgRectWidth-2.5*t.svgSize.circleRadius-2*t.svgSize.strokeWidth)+"; 0;",repeatCount:"0",begin:"2s",additive:"sum"},null,8,X)):u("",!0),m(" "+w(i.label[0]),1)],8,A),n("tspan",{id:`value-${i.id}`,class:g(i.class.valueLabel),"text-anchor":"end",x:2*t.svgSize.circleRadius+t.svgSize.strokeWidth,y:t.svgSize.textSize},w(i.label[1]),11,H)],8,T),n("g",{transform:`translate(${t.svgSize.circleRadius-s.svgRectWidth/2}, 0)`},[n("circle",{cx:"0",cy:"0",r:t.svgSize.circleRadius,class:g({soc:i.soc})},null,10,G),i.soc?(o(),c("circle",{key:0,cx:"0",cy:"0",r:t.svgSize.circleRadius,"clip-path":`url(#clip-soc-${i.id})`},null,8,Q)):u("",!0),n("image",{href:i.icon,x:-s.svgIconWidth/2,y:-s.svgIconHeight/2,height:s.svgIconHeight,width:s.svgIconWidth},null,8,U)],8,Y)],10,L))),128))])],8,M))])]),_:1})]),_:1})}const K=f(P,[["render",J],["__scopeId","data-v-9e868ed0"]]),O={name:"EnergyFlowView",components:{FlowCard:K},props:{changesLocked:{required:!1,type:Boolean,default:!1}}};function Z(e,r,h,a,t,s){const l=v("FlowCard");return o(),x(l)}const ne=f(O,[["render",Z]]);export{ne as default};
+import{u as z}from"./index-CHLaD7ED.js";import{D as V}from"./DashBoardCard-BterAPyf.js";import{o,l as x,n as d,k as m,s as R,j as n,e as c,F as C,A as S,y as g,i as u,x as w,O as p,q as v}from"./vendor-CZ1MGz7j.js";import{_ as f}from"./vendor-inkline-Ce5aFAnW.js";import"./vendor-fortawesome-C68yAli-.js";const P={name:"DashboardFlowCard",components:{DashBoardCard:V},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:z(),svgSize:{xMin:0,xMax:150,yMin:0,yMax:105,circleRadius:10,strokeWidth:.5,textSize:5,numRows:4,numColumns:3}}},computed:{svgViewBox(){return`${this.svgSize.xMin} ${this.svgSize.yMin} ${this.svgSize.xMax} ${this.svgSize.yMax}`},svgFontSize(){return`${this.svgSize.textSize}px`},svgRectWidth(){return(this.svgSize.xMax-this.svgSize.xMin-this.svgSize.strokeWidth-this.svgSize.numColumns)/this.svgSize.numColumns},svgStrokeWidth(){return this.svgSize.strokeWidth},svgIconWidth(){return this.svgSize.circleRadius},svgIconHeight(){return this.svgSize.circleRadius},gridPower(){return this.mqttStore.getGridPower("object")},pvPower(){return this.mqttStore.getPvPower("object")},homePower(){return this.mqttStore.getHomePower("object")},batteryPower(){return this.mqttStore.getBatteryPower("object")},batterySoc(){return this.mqttStore.getBatterySoc("object").value/100},connectedChargePoints(){return this.mqttStore.getChargePointIds},chargePointSumPower(){return this.mqttStore.getChargePointSumPower("object")},chargePoint1Power(){return this.connectedChargePoints.length>0?this.mqttStore.getChargePointPower(this.connectedChargePoints[0],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint2Power(){return this.connectedChargePoints.length>1?this.mqttStore.getChargePointPower(this.connectedChargePoints[1],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint3Power(){return this.connectedChargePoints.length>2?this.mqttStore.getChargePointPower(this.connectedChargePoints[2],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint1Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[0])},chargePoint2Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[1])},chargePoint3Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[2])},chargePoint1VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[0])},chargePoint2VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[1])},chargePoint3VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[0])},chargePoint2ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[1])},chargePoint3ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[0])},chargePoint2ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[1])},chargePoint3ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[0]).soc/100},chargePoint2ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[1]).soc/100},chargePoint3ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[2]).soc/100},gridConsumption(){return this.gridPower.value>0},gridFeedIn(){return this.gridPower.value<0},homeConsumption(){return this.homePower.value>0},homeProduction(){return this.homePower.value<0},pvProduction(){return this.pvPower.value>0},batteryDischarging(){return this.batteryPower.value<0},batteryCharging(){return this.batteryPower.value>0},chargePointSumCharging(){return this.chargePointSumPower.value>0},chargePointSumDischarging(){return this.chargePointSumPower.value<0},chargePoint1Charging(){return this.chargePoint1Power.value>0},chargePoint1Discharging(){return this.chargePoint1Power.value<0},chargePoint2Charging(){return this.chargePoint2Power.value>0},chargePoint2Discharging(){return this.chargePoint2Power.value<0},chargePoint3Charging(){return this.chargePoint3Power.value>0},chargePoint3Discharging(){return this.chargePoint3Power.value<0},svgComponents(){var e=[];return this.mqttStore.getThemeConfiguration.enable_dashboard_card_grid&&e.push({id:"grid",class:{base:"grid",valueLabel:this.gridFeedIn?"fill-success":this.gridConsumption?"fill-danger":"",animated:this.gridConsumption,animatedReverse:this.gridFeedIn},position:{row:0,column:0},label:["EVU",this.gridPower.textValue],icon:"icons/owbGrid.svg"}),this.mqttStore.getThemeConfiguration.enable_dashboard_card_home_consumption&&e.push({id:"home",class:{base:"home",valueLabel:"",animated:this.homeProduction,animatedReverse:this.homeConsumption},position:{row:0,column:2},label:["Haus",this.homePower.textValue],icon:"icons/owbHouse.svg"}),this.mqttStore.getPvConfigured&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_inverter_sum&&e.push({id:"pv",class:{base:"pv",valueLabel:this.pvProduction?"fill-success":"",animated:this.pvProduction,animatedReverse:!1},position:{row:1,column:0},label:["PV",this.pvPower.textValue],icon:"icons/owbPV.svg"}),this.mqttStore.getBatteryConfigured&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_battery_sum&&e.push({id:"battery",class:{base:"battery",valueLabel:"",animated:this.batteryDischarging,animatedReverse:this.batteryCharging},position:{row:1,column:2},label:["Speicher",this.batteryPower.textValue],soc:this.batterySoc,icon:"icons/owbBattery.svg"}),this.connectedChargePoints.length>0&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_charge_point_sum&&(this.connectedChargePoints.length<=3?(e.push({id:"charge-point-1",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint1Discharging,animatedReverse:this.chargePoint1Charging},position:{row:2,column:this.connectedChargePoints.length>1?0:1},label:[this.chargePoint1Name,this.chargePoint1Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint1VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-1",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint1ConnectedVehicleChargeMode.class},position:{row:3,column:this.connectedChargePoints.length>1?0:1},label:[this.chargePoint1ConnectedVehicleName||"---",this.chargePoint1ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint1ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"}),this.connectedChargePoints.length>1&&(e.push({id:"charge-point-2",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint2Discharging,animatedReverse:this.chargePoint2Charging},position:{row:2,column:this.connectedChargePoints.length>2?1:2},label:[this.chargePoint2Name,this.chargePoint2Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint2VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-2",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint2ConnectedVehicleChargeMode.class},position:{row:3,column:this.connectedChargePoints.length>2?1:2},label:[this.chargePoint2ConnectedVehicleName||"---",this.chargePoint2ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint2ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"}),this.connectedChargePoints.length>2&&(e.push({id:"charge-point-3",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint3Discharging,animatedReverse:this.chargePoint3Charging},position:{row:2,column:2},label:[this.chargePoint3Name,this.chargePoint3Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint3VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-3",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint3ConnectedVehicleChargeMode.class},position:{row:3,column:2},label:[this.chargePoint3ConnectedVehicleName||"---",this.chargePoint3ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint3ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"})))):e.push({id:"charge-point-sum",class:{base:"charge-point",valueLabel:"",animated:this.chargePointSumDischarging,animatedReverse:this.chargePointSumCharging},position:{row:2,column:1},label:["Ladepunkte",this.chargePointSumPower.textValue],icon:"icons/owbChargePoint.svg"})),(!this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles||this.connectedChargePoints.length===0||this.connectedChargePoints.length>3)&&this.setSvgNumRows(3),e}},methods:{setSvgNumRows(e){this.svgSize.numRows=e},calcRowY(e){let r=this.svgSize.yMin+this.svgSize.strokeWidth+this.svgSize.circleRadius,a=this.svgSize.yMax-this.svgSize.strokeWidth-this.svgSize.circleRadius-r;return e*(a/(this.svgSize.numRows-1))+r},calcColumnX(e){let r=this.svgSize.xMin+this.svgSize.strokeWidth+this.svgRectWidth/2,a=this.svgSize.xMax-this.svgSize.strokeWidth-this.svgRectWidth/2-r;return e*(a/(this.svgSize.numColumns-1))+r},calcFlowLineAnchorX(e){let r=this.calcColumnX(e);return e<(this.svgSize.numColumns-1)/2?r+this.svgRectWidth/2-this.svgSize.circleRadius:e>(this.svgSize.numColumns-1)/2?r-this.svgRectWidth/2+this.svgSize.circleRadius:r},calcSvgElementBoundingBox(e){let r=document.getElementById(e);if(r==null)return{x:0,y:0,width:0,height:0};let h=r.getBBox();return{x:h.x,y:h.y,width:h.width,height:h.height}},beginAnimation(e){var r;this.$refs[e]!=null&&((r=this.$refs[e][0])==null||r.beginElement())}}},b=()=>{p(e=>({"2d21ce23":e.svgStrokeWidth,"0cb0615b":e.svgFontSize}))},_=P.setup;P.setup=_?(e,r)=>(b(),_(e,r)):b;const q={class:"svg-container"},M=["viewBox"],W={id:"layer1",style:{display:"inline"}},k=["d"],N={id:"layer2",style:{display:"inline"}},B=["cx","cy","r"],L=["transform","onClick"],F=["id"],D=["x","y","width","height"],j=["id"],I=["x","y","width","height","rx","ry"],E=["x","y","width","height","rx","ry"],T=["clip-path"],A=["id","x","y"],X=["values"],H=["id","x","y"],Y=["transform"],G=["r"],O=["r","clip-path"],U=["href","x","y","height","width"];function J(e,r,h,a,t,s){const l=v("i-container"),y=v("dash-board-card");return o(),x(y,{color:"primary"},{headerLeft:d(()=>r[0]||(r[0]=[m(" Übersicht - Energiefluss ")])),default:d(()=>[R(l,null,{default:d(()=>[n("div",q,[(o(),c("svg",{viewBox:s.svgViewBox,version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},[n("g",W,[(o(!0),c(C,null,S(s.svgComponents,i=>(o(),c("path",{key:i.id,class:g([i.class.base,{animated:i.class.animated},{animatedReverse:i.class.animatedReverse}]),d:i.class.base!=="vehicle"?`M ${s.calcFlowLineAnchorX(i.position.column)}, ${s.calcRowY(i.position.row)} ${s.calcColumnX(1)}, ${s.calcRowY(1)}`:""},null,10,k))),128))]),n("g",N,[n("circle",{id:"center",cx:s.calcColumnX(1),cy:s.calcRowY(1),r:t.svgSize.circleRadius/3},null,8,B),(o(!0),c(C,null,S(s.svgComponents,i=>(o(),c("g",{key:i.id,class:g(i.class.base),transform:`translate(${s.calcColumnX(i.position.column)}, ${s.calcRowY(i.position.row)})`,onClick:$=>s.beginAnimation(`animate-label-${i.id}`)},[n("defs",null,[i.soc?(o(),c("clipPath",{key:0,id:`clip-soc-${i.id}`},[n("rect",{x:-t.svgSize.circleRadius-t.svgSize.strokeWidth,y:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*(1-2*i.soc),width:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*2,height:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*2*i.soc},null,8,D)],8,F)):u("",!0),n("clipPath",{id:`clip-label-${i.id}`},[n("rect",{x:-s.svgRectWidth/2,y:-t.svgSize.circleRadius,width:s.svgRectWidth,height:t.svgSize.circleRadius*2,rx:t.svgSize.circleRadius,ry:t.svgSize.circleRadius},null,8,I)],8,j)]),n("rect",{x:-s.svgRectWidth/2,y:-t.svgSize.circleRadius,width:s.svgRectWidth,height:t.svgSize.circleRadius*2,rx:t.svgSize.circleRadius,ry:t.svgSize.circleRadius},null,8,E),n("text",{"clip-path":`url(#clip-label-${i.id})`},[n("tspan",{id:`label-${i.id}`,"text-anchor":"start",x:-s.svgRectWidth/2+2*t.svgSize.circleRadius+t.svgSize.strokeWidth,y:-t.svgSize.textSize/2},[s.calcSvgElementBoundingBox(`label-${i.id}`).width>s.svgRectWidth-2*t.svgSize.circleRadius-2*t.svgSize.strokeWidth?(o(),c("animate",{key:0,ref_for:!0,ref:`animate-label-${i.id}`,xmlns:"http://www.w3.org/2000/svg",attributeName:"x",dur:"5s",values:"0; "+(-s.calcSvgElementBoundingBox(`label-${i.id}`).width+s.svgRectWidth-2.5*t.svgSize.circleRadius-2*t.svgSize.strokeWidth)+"; 0;",repeatCount:"0",begin:"2s",additive:"sum"},null,8,X)):u("",!0),m(" "+w(i.label[0]),1)],8,A),n("tspan",{id:`value-${i.id}`,class:g(i.class.valueLabel),"text-anchor":"end",x:2*t.svgSize.circleRadius+t.svgSize.strokeWidth,y:t.svgSize.textSize},w(i.label[1]),11,H)],8,T),n("g",{transform:`translate(${t.svgSize.circleRadius-s.svgRectWidth/2}, 0)`},[n("circle",{cx:"0",cy:"0",r:t.svgSize.circleRadius,class:g({soc:i.soc})},null,10,G),i.soc?(o(),c("circle",{key:0,cx:"0",cy:"0",r:t.svgSize.circleRadius,"clip-path":`url(#clip-soc-${i.id})`},null,8,O)):u("",!0),n("image",{href:i.icon,x:-s.svgIconWidth/2,y:-s.svgIconHeight/2,height:s.svgIconHeight,width:s.svgIconWidth},null,8,U)],8,Y)],10,L))),128))])],8,M))])]),_:1})]),_:1})}const K=f(P,[["render",J],["__scopeId","data-v-9e868ed0"]]),Q={name:"EnergyFlowView",components:{FlowCard:K},props:{changesLocked:{required:!1,type:Boolean,default:!1}}};function Z(e,r,h,a,t,s){const l=v("FlowCard");return o(),x(l)}const ne=f(Q,[["render",Z]]);export{ne as default};
diff --git a/packages/modules/display_themes/cards/web/assets/StatusView-Dn5MUjQZ.js b/packages/modules/display_themes/cards/web/assets/StatusView-Dn5MUjQZ.js
deleted file mode 100644
index 3190873b7e..0000000000
--- a/packages/modules/display_themes/cards/web/assets/StatusView-Dn5MUjQZ.js
+++ /dev/null
@@ -1 +0,0 @@
-import{u as S}from"./index-AtLAf1dw.js";import{l as y,C as x,F as k,D as V}from"./vendor-fortawesome-CVmDIOjI.js";import{_ as h}from"./vendor-inkline-7C7Ddj37.js";import{l as o,o as m,n as _,p as e,k as s,s as t,I as M,j as A,i as C}from"./vendor-Cv1UtYRW.js";import{D as I}from"./DashBoardCard-BnSsjBAn.js";y.add(x);const P={name:"ReloadButton",components:{FontAwesomeIcon:k},props:{},data(){return{}},methods:{reloadDisplay(){location.reload()}}};function F(w,l,f,b,d,c){const u=o("FontAwesomeIcon"),n=o("i-button");return m(),_(n,{color:"success",size:"lg",onClick:l[0]||(l[0]=a=>c.reloadDisplay())},{default:e(()=>[s(" Display neu laden "),t(u,{"fixed-width":"",icon:["fas","fa-undo"]})]),_:1})}const z=h(P,[["render",F]]);y.add(x);const D={name:"RebootButton",components:{FontAwesomeIcon:k},props:{},data(){return{mqttStore:S(),showModal:!1}},methods:{toggleModal(){this.showModal=!this.showModal},cancel(){this.toggleModal()},confirm(){this.toggleModal(),console.log("reboot requested"),this.mqttStore.settings.parentChargePoint1!==void 0?(console.log("rebooting secondary charge point:",this.mqttStore.settings.parentChargePoint1),this.$root.sendSystemCommand("chargepointReboot",{chargePoint:this.mqttStore.settings.parentChargePoint1})):(console.log("rebooting primary system"),this.$root.sendSystemCommand("systemReboot"))}}};function N(w,l,f,b,d,c){const u=o("FontAwesomeIcon"),n=o("i-container"),a=o("i-button"),r=o("i-column"),p=o("i-row"),g=o("i-modal");return m(),_(a,{color:"warning",size:"lg",onClick:l[3]||(l[3]=i=>c.toggleModal())},{default:e(()=>[s(" openWB neu starten "),t(u,{"fixed-width":"",icon:["fas","fa-undo"]}),(m(),_(M,{to:"body"},[t(g,{modelValue:d.showModal,"onUpdate:modelValue":l[2]||(l[2]=i=>d.showModal=i),size:"sm"},{header:e(()=>[s(" openWB neu starten... ")]),footer:e(()=>[t(n,null,{default:e(()=>[t(p,null,{default:e(()=>[t(r,{class:"_text-align:right"},{default:e(()=>[t(a,{color:"success",onClick:l[0]||(l[0]=i=>c.cancel())},{default:e(()=>[s(" Zurück ")]),_:1})]),_:1}),t(r,null,{default:e(()=>[t(a,{color:"danger",onClick:l[1]||(l[1]=i=>c.confirm())},{default:e(()=>[s(" Neustart ")]),_:1})]),_:1})]),_:1})]),_:1})]),default:e(()=>[t(n,null,{default:e(()=>[s(" Möchten Sie diese openWB wirklich neu starten? ")]),_:1})]),_:1},8,["modelValue"])]))]),_:1})}const R=h(D,[["render",N]]);y.add(V);const W={name:"ShutdownButton",components:{FontAwesomeIcon:k},props:{},data(){return{mqttStore:S(),showModal:!1}},methods:{toggleModal(){this.showModal=!this.showModal},cancel(){this.toggleModal()},confirm(){this.toggleModal(),console.log("shutdown requested"),this.mqttStore.settings.parentChargePoint1!==void 0?(console.log("shutting down secondary charge point:",this.mqttStore.settings.parentChargePoint1),this.$root.sendSystemCommand("chargepointShutdown",{chargePoint:this.mqttStore.settings.parentChargePoint1})):(console.log("shutting down primary system"),this.$root.sendSystemCommand("systemShutdown"))}}},L=A("br",null,null,-1);function T(w,l,f,b,d,c){const u=o("FontAwesomeIcon"),n=o("i-container"),a=o("i-button"),r=o("i-column"),p=o("i-row"),g=o("i-modal");return m(),_(a,{color:"danger",size:"lg",onClick:l[3]||(l[3]=i=>c.toggleModal())},{default:e(()=>[s(" openWB ausschalten "),t(u,{"fixed-width":"",icon:["fas","fa-power-off"]}),(m(),_(M,{to:"body"},[t(g,{modelValue:d.showModal,"onUpdate:modelValue":l[2]||(l[2]=i=>d.showModal=i),size:"sm"},{header:e(()=>[s(" openWB ausschalten... ")]),footer:e(()=>[t(n,null,{default:e(()=>[t(p,null,{default:e(()=>[t(r,{class:"_text-align:right"},{default:e(()=>[t(a,{color:"success",onClick:l[0]||(l[0]=i=>c.cancel())},{default:e(()=>[s(" Zurück ")]),_:1})]),_:1}),t(r,null,{default:e(()=>[t(a,{color:"danger",onClick:l[1]||(l[1]=i=>c.confirm())},{default:e(()=>[s(" Ausschalten ")]),_:1})]),_:1})]),_:1})]),_:1})]),default:e(()=>[t(n,null,{default:e(()=>[s(" Möchten Sie diese openWB wirklich ausschalten?"),L,s(" Nach dem Ausschalten muss die Ladestation komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")]),_:1})]),_:1},8,["modelValue"])]))]),_:1})}const U=h(W,[["render",T]]),Z={name:"StatusView",components:{ReloadButton:z,RebootButton:R,ShutdownButton:U,DashBoardCard:I},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:S()}}};function E(w,l,f,b,d,c){const u=o("i-form-label"),n=o("i-column"),a=o("i-input"),r=o("i-row"),p=o("i-form-group"),g=o("reload-button"),i=o("reboot-button"),v=o("shutdown-button"),q=o("i-form"),B=o("i-container"),$=o("dash-board-card");return m(),_($,{color:"primary"},{headerLeft:e(()=>[s(" Status ")]),default:e(()=>[t(B,null,{default:e(()=>[t(q,null,{default:e(()=>[t(r,null,{default:e(()=>[t(n,null,{default:e(()=>[t(p,null,{default:e(()=>[t(r,{class:"_margin-top:2"},{default:e(()=>[t(n,{xl:"2",lg:"3",md:"4"},{default:e(()=>[t(u,null,{default:e(()=>[s(" IP-Adresse ")]),_:1})]),_:1}),t(n,null,{default:e(()=>[t(a,{id:"input_system_ip",plaintext:"","model-value":d.mqttStore.getSystemIp},null,8,["model-value"])]),_:1})]),_:1}),t(r,{class:"_margin-top:1"},{default:e(()=>[t(n,{xl:"2",lg:"3",md:"4"},{default:e(()=>[t(u,null,{default:e(()=>[s(" Systemzeit ")]),_:1})]),_:1}),t(n,null,{default:e(()=>[t(a,{id:"input_system_time",plaintext:"","model-value":d.mqttStore.getSystemTime},null,8,["model-value"])]),_:1})]),_:1}),t(r,{class:"_margin-top:1"},{default:e(()=>[t(n,{xl:"2",lg:"3",md:"4"},{default:e(()=>[t(u,null,{default:e(()=>[s(" Version ")]),_:1})]),_:1}),t(n,null,{default:e(()=>[t(a,{id:"input_system_version",plaintext:"","model-value":d.mqttStore.getSystemVersion},null,8,["model-value"])]),_:1})]),_:1}),t(r,{class:"_margin-top:1"},{default:e(()=>[t(n,{xl:"2",lg:"3",md:"4"},{default:e(()=>[t(u,null,{default:e(()=>[s(" Version (Details) ")]),_:1})]),_:1}),t(n,null,{default:e(()=>[t(a,{id:"input_system_commit",plaintext:"","model-value":d.mqttStore.getSystemCurrentCommit},null,8,["model-value"])]),_:1})]),_:1}),t(r,{class:"_margin-top:1"},{default:e(()=>[t(n,{xl:"2",lg:"3",md:"4"},{default:e(()=>[t(u,null,{default:e(()=>[s(" Entwicklungszweig ")]),_:1})]),_:1}),t(n,null,{default:e(()=>[t(a,{id:"input_system_branch",plaintext:"","model-value":d.mqttStore.getSystemBranch},null,8,["model-value"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),f.changesLocked?C("",!0):(m(),_(r,{key:0,class:"_margin-top:5",between:""},{default:e(()=>[t(n,null,{default:e(()=>[t(g,{block:""})]),_:1})]),_:1})),f.changesLocked?C("",!0):(m(),_(r,{key:1,between:""},{default:e(()=>[t(n,null,{default:e(()=>[t(i,{block:"",class:"_margin-top:2"})]),_:1}),t(n,null,{default:e(()=>[t(v,{block:"",class:"_margin-top:2"})]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})}const K=h(Z,[["render",E]]);export{K as default};
diff --git a/packages/modules/display_themes/cards/web/assets/StatusView-uYO1gy9a.js b/packages/modules/display_themes/cards/web/assets/StatusView-uYO1gy9a.js
new file mode 100644
index 0000000000..90793f53ae
--- /dev/null
+++ b/packages/modules/display_themes/cards/web/assets/StatusView-uYO1gy9a.js
@@ -0,0 +1 @@
+import{u as S}from"./index-CHLaD7ED.js";import{l as y,C as x,F as k,D as V}from"./vendor-fortawesome-C68yAli-.js";import{_ as w}from"./vendor-inkline-Ce5aFAnW.js";import{o as _,l as f,n as e,k as s,s as o,q as n,I as M,j as A,i as C}from"./vendor-CZ1MGz7j.js";import{D as I}from"./DashBoardCard-BterAPyf.js";y.add(x);const P={name:"ReloadButton",components:{FontAwesomeIcon:k},props:{},data(){return{}},methods:{reloadDisplay(){location.reload()}}};function F(b,t,p,h,u,m){const d=n("FontAwesomeIcon"),l=n("i-button");return _(),f(l,{color:"success",size:"lg",onClick:t[0]||(t[0]=a=>m.reloadDisplay())},{default:e(()=>[t[1]||(t[1]=s(" Display neu laden ")),o(d,{"fixed-width":"",icon:["fas","fa-undo"]})]),_:1})}const z=w(P,[["render",F]]);y.add(x);const D={name:"RebootButton",components:{FontAwesomeIcon:k},props:{},data(){return{mqttStore:S(),showModal:!1}},methods:{toggleModal(){this.showModal=!this.showModal},cancel(){this.toggleModal()},confirm(){this.toggleModal(),console.log("reboot requested"),this.mqttStore.settings.parentChargePoint1!==void 0?(console.log("rebooting secondary charge point:",this.mqttStore.settings.parentChargePoint1),this.$root.sendSystemCommand("chargepointReboot",{chargePoint:this.mqttStore.settings.parentChargePoint1})):(console.log("rebooting primary system"),this.$root.sendSystemCommand("systemReboot"))}}};function N(b,t,p,h,u,m){const d=n("FontAwesomeIcon"),l=n("i-container"),a=n("i-button"),r=n("i-column"),c=n("i-row"),g=n("i-modal");return _(),f(a,{color:"warning",size:"lg",onClick:t[3]||(t[3]=i=>m.toggleModal())},{default:e(()=>[t[8]||(t[8]=s(" openWB neu starten ")),o(d,{"fixed-width":"",icon:["fas","fa-undo"]}),(_(),f(M,{to:"body"},[o(g,{modelValue:u.showModal,"onUpdate:modelValue":t[2]||(t[2]=i=>u.showModal=i),size:"sm"},{header:e(()=>t[4]||(t[4]=[s(" openWB neu starten... ")])),footer:e(()=>[o(l,null,{default:e(()=>[o(c,null,{default:e(()=>[o(r,{class:"_text-align:right"},{default:e(()=>[o(a,{color:"success",onClick:t[0]||(t[0]=i=>m.cancel())},{default:e(()=>t[6]||(t[6]=[s(" Zurück ")])),_:1})]),_:1}),o(r,null,{default:e(()=>[o(a,{color:"danger",onClick:t[1]||(t[1]=i=>m.confirm())},{default:e(()=>t[7]||(t[7]=[s(" Neustart ")])),_:1})]),_:1})]),_:1})]),_:1})]),default:e(()=>[o(l,null,{default:e(()=>t[5]||(t[5]=[s(" Möchten Sie diese openWB wirklich neu starten? ")])),_:1})]),_:1},8,["modelValue"])]))]),_:1})}const R=w(D,[["render",N]]);y.add(V);const W={name:"ShutdownButton",components:{FontAwesomeIcon:k},props:{},data(){return{mqttStore:S(),showModal:!1}},methods:{toggleModal(){this.showModal=!this.showModal},cancel(){this.toggleModal()},confirm(){this.toggleModal(),console.log("shutdown requested"),this.mqttStore.settings.parentChargePoint1!==void 0?(console.log("shutting down secondary charge point:",this.mqttStore.settings.parentChargePoint1),this.$root.sendSystemCommand("chargepointShutdown",{chargePoint:this.mqttStore.settings.parentChargePoint1})):(console.log("shutting down primary system"),this.$root.sendSystemCommand("systemShutdown"))}}};function L(b,t,p,h,u,m){const d=n("FontAwesomeIcon"),l=n("i-container"),a=n("i-button"),r=n("i-column"),c=n("i-row"),g=n("i-modal");return _(),f(a,{color:"danger",size:"lg",onClick:t[3]||(t[3]=i=>m.toggleModal())},{default:e(()=>[t[8]||(t[8]=s(" openWB ausschalten ")),o(d,{"fixed-width":"",icon:["fas","fa-power-off"]}),(_(),f(M,{to:"body"},[o(g,{modelValue:u.showModal,"onUpdate:modelValue":t[2]||(t[2]=i=>u.showModal=i),size:"sm"},{header:e(()=>t[4]||(t[4]=[s(" openWB ausschalten... ")])),footer:e(()=>[o(l,null,{default:e(()=>[o(c,null,{default:e(()=>[o(r,{class:"_text-align:right"},{default:e(()=>[o(a,{color:"success",onClick:t[0]||(t[0]=i=>m.cancel())},{default:e(()=>t[6]||(t[6]=[s(" Zurück ")])),_:1})]),_:1}),o(r,null,{default:e(()=>[o(a,{color:"danger",onClick:t[1]||(t[1]=i=>m.confirm())},{default:e(()=>t[7]||(t[7]=[s(" Ausschalten ")])),_:1})]),_:1})]),_:1})]),_:1})]),default:e(()=>[o(l,null,{default:e(()=>t[5]||(t[5]=[s(" Möchten Sie diese openWB wirklich ausschalten?"),A("br",null,null,-1),s(" Nach dem Ausschalten muss die Ladestation komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1},8,["modelValue"])]))]),_:1})}const T=w(W,[["render",L]]),U={name:"StatusView",components:{ReloadButton:z,RebootButton:R,ShutdownButton:T,DashBoardCard:I},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:S()}}};function Z(b,t,p,h,u,m){const d=n("i-form-label"),l=n("i-column"),a=n("i-input"),r=n("i-row"),c=n("i-form-group"),g=n("reload-button"),i=n("reboot-button"),q=n("shutdown-button"),v=n("i-form"),B=n("i-container"),$=n("dash-board-card");return _(),f($,{color:"primary"},{headerLeft:e(()=>t[0]||(t[0]=[s(" Status ")])),default:e(()=>[o(B,null,{default:e(()=>[o(v,null,{default:e(()=>[o(r,null,{default:e(()=>[o(l,null,{default:e(()=>[o(c,null,{default:e(()=>[o(r,{class:"_margin-top:2"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[1]||(t[1]=[s(" IP-Adresse ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_ip",plaintext:"","model-value":u.mqttStore.getSystemIp},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[2]||(t[2]=[s(" Systemzeit ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_time",plaintext:"","model-value":u.mqttStore.getSystemTime},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[3]||(t[3]=[s(" Version ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_version",plaintext:"","model-value":u.mqttStore.getSystemVersion},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[4]||(t[4]=[s(" Version (Details) ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_commit",plaintext:"","model-value":u.mqttStore.getSystemCurrentCommit},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[5]||(t[5]=[s(" Entwicklungszweig ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_branch",plaintext:"","model-value":u.mqttStore.getSystemBranch},null,8,["model-value"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),p.changesLocked?C("",!0):(_(),f(r,{key:0,class:"_margin-top:5",between:""},{default:e(()=>[o(l,null,{default:e(()=>[o(g,{block:""})]),_:1})]),_:1})),p.changesLocked?C("",!0):(_(),f(r,{key:1,between:""},{default:e(()=>[o(l,null,{default:e(()=>[o(i,{block:"",class:"_margin-top:2"})]),_:1}),o(l,null,{default:e(()=>[o(q,{block:"",class:"_margin-top:2"})]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})}const J=w(U,[["render",Z]]);export{J as default};
diff --git a/packages/modules/display_themes/cards/web/assets/index-AtLAf1dw.js b/packages/modules/display_themes/cards/web/assets/index-AtLAf1dw.js
deleted file mode 100644
index d9188e30bb..0000000000
--- a/packages/modules/display_themes/cards/web/assets/index-AtLAf1dw.js
+++ /dev/null
@@ -1,2 +0,0 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashBoardView-BaB3KBmL.js","assets/DashBoardCard-BnSsjBAn.js","assets/vendor-inkline-7C7Ddj37.js","assets/vendor-Cv1UtYRW.js","assets/vendor-inkline-B7Agb5gs.css","assets/DashBoardCard-DKbC8x2S.css","assets/ChargePointPlugBadge-4-IgwHFS.js","assets/vendor-fortawesome-CVmDIOjI.js","assets/ChargePointPlugBadge-DqNX7D_z.css","assets/DashBoardView-CrVFeUF-.css","assets/EnergyFlowView-fJc3wqIp.js","assets/EnergyFlowView-C3xLYKue.css","assets/ChargePointsView-BxRzqrN1.js","assets/ChargePointsView-DPrjgv0h.css","assets/StatusView-Dn5MUjQZ.js"])))=>i.map(i=>d[i]);
-import{o as m,e as y,k as _,x as S,j as D,F as V,H as N,l as u,n as f,p as c,f as W,i as w,A as T,s as l,I as F,z as M,R as j,J as A,K as R,L as U,M as z,N as H,O as G,P as K}from"./vendor-Cv1UtYRW.js";import{_ as v,I as J,c as Z}from"./vendor-inkline-7C7Ddj37.js";import{l as I,f as L,a as E,F as O,b as Y,c as Q}from"./vendor-fortawesome-CVmDIOjI.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();const X={name:"DateTime",props:{separator:{type:String,default:"<br />"}},data(){return{dateTimeInterval:"",date:"",time:""}},mounted(){this.update(),this.dateTimeInterval=setInterval(this.update,1e3)},beforeUnmount(){clearInterval(this.dateTimeInterval)},methods:{update(){const e=new Date,t={weekday:"short",year:"numeric",month:"2-digit",day:"2-digit"},n={hour:"2-digit",minute:"2-digit",second:"2-digit"};this.date=e.toLocaleDateString(void 0,t),this.time=e.toLocaleTimeString(void 0,n)}}},ee=["innerHTML"];function te(e,t,n,i,r,o){return m(),y(V,null,[_(S(r.time),1),D("span",{innerHTML:n.separator},null,8,ee),_(S(r.date),1)],64)}const ne=v(X,[["render",te]]),P=N("mqtt",{state:()=>({settings:{localIp:void 0,localBranch:void 0,localCommit:void 0,localVersion:void 0,parentChargePoint1:void 0,parentChargePoint2:void 0},topics:{},chartData:{}}),getters:{getChargePointFilter:e=>{let t=[];return e.settings.parentChargePoint1!==void 0&&t.push(e.settings.parentChargePoint1),e.settings.parentChargePoint2!==void 0&&t.push(e.settings.parentChargePoint2),t},getWildcardIndexList:e=>(t,n=!1)=>{let i=t;n||(i="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let r=Object.keys(e.topics).filter(o=>o.match(i));return r.forEach((o,a,s)=>{s[a]=parseInt(o.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),r},getWildcardTopics:e=>(t,n=!1)=>{let i=t;return n||(i="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(e.topics).filter(r=>r.match(i)).reduce((r,o)=>({...r,[o]:e.topics[o]}),{})},getObjectIds:e=>t=>{function n(i){let r=[];return i!==void 0&&i.forEach(o=>{o.type==t&&r.push(o.id),r=[...r,...n(o.children)]}),r}return n(e.topics["openWB/counter/get/hierarchy"])},getValueBool:e=>(t,n=!1)=>{let i=e.topics[t];return i!==void 0?i:(console.warn("topic not found! using default",t,n),n)},getValueString:e=>(t,n="W",i="",r=!0,o=!1,a="---",s=void 0)=>{var d=!1,g=e.topics[t];if(g===void 0||s!==void 0&&g[s]===void 0)console.warn("topic not found! using default",t,a),h=a;else{s!==void 0&&(g=g[s]),o&&(g*=-1);for(var h=g.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:0}),p=g;r&&(p>999||p<-999);)switch(p=p/1e3,d=!0,i){case"":i="k";break;case"k":i="M";break;case"M":i="G";break}h=p.toLocaleString(void 0,{minimumFractionDigits:d?2:0,maximumFractionDigits:d?2:0})}return{textValue:`${h} ${i}${n}`,value:g,unit:n,scaledValue:p,scaledUnit:`${i}${n}`}},getChartData:e=>t=>e.chartData[t]===void 0?[]:e.chartData[t],getDisplayStandby:e=>e.topics["openWB/optional/int_display/standby"],getThemeConfiguration:e=>{if("openWB/optional/int_display/theme"in e.topics&&e.topics["openWB/optional/int_display/theme"]!==void 0&&"configuration"in e.topics["openWB/optional/int_display/theme"])return e.topics["openWB/optional/int_display/theme"].configuration},getDashBoardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_view:!0},getEnergyFlowEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_energy_flow_view:!0},getChargePointsEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_charge_points_view:!0},getStateEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_status_view:!0},getGridCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_grid:!0},getHomeCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_home_consumption:!0},getBatteryCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_battery_sum:!0},getChargePointsCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_charge_point_sum:!0},getPvCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_inverter_sum:!0},getLockChanges(e){return e.getThemeConfiguration?e.getThemeConfiguration.lock_changes:!0},getSimpleChargePointView(e){return e.getThemeConfiguration?e.getThemeConfiguration.simple_charge_point_view:!1},getGridId(e){let t=e.topics["openWB/counter/get/hierarchy"];if(t!==void 0&&Object.keys(t).length>0){let n=Object.keys(e.topics["openWB/counter/get/hierarchy"])[0];if(console.debug("getGridId",n,e.topics["openWB/counter/get/hierarchy"][n]),e.topics["openWB/counter/get/hierarchy"][n].type=="counter")return e.topics["openWB/counter/get/hierarchy"][n].id}},getGridPower(e){return(t="textValue")=>{let n=e.getGridId;if(n===void 0)return"---";let i=e.getValueString(`openWB/counter/${n}/get/power`,"W");if(Object.hasOwnProperty.call(i,t))return i[t];if(t=="object")return i;console.error("returnType not found!",t,i)}},getGridPowerChartData(e){let t=e.getGridId;return t===void 0?[]:e.getChartData(`openWB/counter/${t}/get/power`)},getHomePower(e){return(t="textValue")=>{let n=e.getValueString("openWB/counter/set/home_consumption","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getHomePowerChartData(e){return e.getChartData("openWB/counter/set/home_consumption")},getBatteryConfigured(e){return e.getValueBool("openWB/bat/config/configured")},getBatteryPower(e){return(t="textValue")=>{let n=e.getValueString("openWB/bat/get/power","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getBatteryPowerChartData(e){return e.getChartData("openWB/bat/get/power")},getBatterySoc(e){return(t="textValue")=>{let n=e.getValueString("openWB/bat/get/soc","%","",!1);if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getBatterySocChartData(e){return e.getChartData("openWB/bat/get/soc")},getPvConfigured(e){return e.getValueBool("openWB/pv/config/configured")},getPvPower(e){return(t="textValue")=>{var n=e.getValueString("openWB/pv/get/power","W","",!0,!0);if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getPvPowerChartData(e){return e.getChartData("openWB/pv/get/power").map(t=>t*-1)},getChargePointSumPower(e){return(t="textValue")=>{var n=e.getValueString("openWB/chargepoint/get/power","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getChargePointSumPowerChartData(e){return e.getChartData("openWB/chargepoint/get/power")},getChargePointIds(e){let t=e.getObjectIds("cp"),n=this.getChargePointFilter;return n.length>0?(console.debug("charge points are filtered!",t,n),t.filter(i=>n.includes(i))):t},getChargePointName(e){return t=>e.topics[`openWB/chargepoint/${t}/config`]!==void 0?e.topics[`openWB/chargepoint/${t}/config`].name:"---"},getChargePointPower(e){return(t,n="textValue")=>{var i=e.getValueString(`openWB/chargepoint/${t}/get/power`,"W");if(Object.hasOwnProperty.call(i,n))return i[n];if(n=="object")return i;console.error("returnType not found!",n,i)}},getChargePointImportedSincePlugged(e){return t=>({energy:e.getValueString(`openWB/chargepoint/${t}/set/log`,"Wh","",!0,!1,"---","imported_since_plugged").textValue,range:e.getValueString(`openWB/chargepoint/${t}/set/log`,"m","k",!1,!1,"---","range_charged").textValue})},getChargePointPowerChartData(e){return t=>e.getChartData(`openWB/chargepoint/${t}/get/power`)},getChargePointSetCurrent(e){return(t,n="textValue")=>{let i=e.getValueString(`openWB/chargepoint/${t}/set/current`,"A");if(Object.hasOwnProperty.call(i,n))return i[n];if(n=="object")return i;console.error("returnType not found!",n,i)}},getChargePointPhasesInUse(e){return t=>{const n=["/","①","②","③"],i=e.topics[`openWB/chargepoint/${t}/get/phases_in_use`];return i!==void 0&&i>=0&&i<n.length?n[e.topics[`openWB/chargepoint/${t}/get/phases_in_use`]]:(console.warn("topic not found!",`openWB/chargepoint/${t}/get/phases_in_use`),"?")}},getChargePointPlugState(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/get/plug_state`)},getChargePointChargeState(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/get/charge_state`)},getChargePointManualLock(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/set/manual_lock`)},getChargepointTagState(e){return t=>{if([void 0,null,""].includes(e.topics[`openWB/chargepoint/${t}/set/rfid`])){if(![void 0,null,""].includes(e.topics[`openWB/chargepoint/${t}/get/rfid`]))return 1}else return 2;return 0}},getChargePointConnectedVehicleConfig(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/config`]},getChargePointConnectedVehicleChargeMode(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.translateChargeMode(e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.selected)}},getChargePointConnectedVehiclePriority(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).prio}},getChargePointConnectedVehicleInfo(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`]},getChargePointConnectedVehicleId(e){return t=>{if(e.getChargePointConnectedVehicleInfo(t))return e.getChargePointConnectedVehicleInfo(t).id}},getChargePointConnectedVehicleChargeTemplateIndex(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).charge_template}},getChargePointConnectedVehicleChargeTemplate(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.topics[`openWB/vehicle/template/charge_template/${n}`]}},getChargePointConnectedVehicleEvTemplate(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).ev_template}},getChargePointConnectedVehicleName(e){return t=>{if(e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`])return e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`].name}},getChargePointConnectedVehicleSoc(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/soc`]},getChargePointConnectedVehicleTimeChargingActive(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).time_charging.active}},getChargePointConnectedVehicleTimeChargingRunning(e){return t=>{let n=e.getChargePointConnectedVehicleConfig(t).time_charging_in_use;return n!==void 0?n:!1}},getChargePointConnectedVehicleInstantChargingCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.instant_charging.current}},getChargePointConnectedVehicleInstantChargingLimit(e){return t=>e.getChargePointConnectedVehicleChargeTemplate(t)?e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.instant_charging.limit:{selected:void 0}},getChargePointConnectedVehiclePvChargingFeedInLimit(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.feed_in_limit}},getChargePointConnectedVehiclePvChargingMinCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_current}},getChargePointConnectedVehiclePvChargingMinSoc(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_soc}},getChargePointConnectedVehiclePvChargingMinSocCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_soc_current}},getChargePointConnectedVehiclePvChargingMaxSoc(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.max_soc}},getChargePointConnectedVehicleScheduledChargingPlans(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.getWildcardTopics(`openWB/vehicle/template/charge_template/${n}/chargemode/scheduled_charging/plans/+`)}},getChargePointConnectedVehicleTimeChargingPlans(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.getWildcardTopics(`openWB/vehicle/template/charge_template/${n}/time_charging/plans/+`)}},getVehicleList(e){return e.getWildcardTopics("openWB/vehicle/+/name")},getVehicleName(e){return t=>e.topics[`openWB/vehicle/${t}/name`]},getVehicleSocConfigured(e){return t=>e.topics[`openWB/vehicle/${t}/soc_module/config`].type!=null},getVehicleSocIsManual(e){return t=>e.topics[`openWB/vehicle/${t}/soc_module/config`].type=="manual"},getVehicleFaultState(e){return t=>e.topics[`openWB/vehicle/${t}/get/fault_state`]?e.topics[`openWB/vehicle/${t}/get/fault_state`]:0},getSystemTime(e){if(e.topics["openWB/system/time"])return new Date(e.topics["openWB/system/time"]*1e3).toLocaleString()},getSystemIp(e){if(e.settings.localIp!==void 0)return e.settings.localIp;if(e.topics["openWB/system/ip_address"])return e.topics["openWB/system/ip_address"]},getSystemVersion(e){if(e.settings.localVersion!==void 0)return e.settings.localVersion;if(e.topics["openWB/system/version"])return e.topics["openWB/system/version"]},getSystemBranch(e){if(e.settings.localBranch!==void 0)return e.settings.localBranch;if(e.topics["openWB/system/current_branch"])return e.topics["openWB/system/current_branch"]},getSystemCurrentCommit(e){if(e.settings.localCommit!==void 0)return e.settings.localCommit;if(e.topics["openWB/system/current_commit"])return e.topics["openWB/system/current_commit"]},getRfidEnabled(){return this.getValueBool("openWB/optional/rfid/active")}},actions:{updateSetting(e,t){e in this.settings&&(this.settings[e]=t)},initTopic(e,t=void 0){e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.addTopic(e,t)},addTopic(e,t){console.debug("addTopic",e,t),this.topics[e]=t},removeTopic(e){e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic for removal:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),delete this.topics[t]})):delete this.topics[e]},updateTopic(e,t,n=void 0){const i=(r,o,a)=>o.split(".").reduce((s,d,g)=>s[d]=o.split(".").length===++g?a:s[d]||{},r);e in this.topics?n!=null?i(this.topics[e],n,t):this.topics[e]=t:console.debug("topic not found: ",e)},updateChartData(){for(const[e,t]of Object.entries(this.topics))(e.endsWith("home_consumption")||e.endsWith("power")||e.endsWith("soc"))&&(this.chartData[e]===void 0&&(this.chartData[e]=[]),t!=null&&(this.chartData[e].push(t),this.chartData[e].slice(-128)))},updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.updateTopic(e,t,n)},chargeModeList(){var e=[{id:"instant_charging"},{id:"pv_charging"},{id:"scheduled_charging"},{id:"standby"},{id:"stop"}];return e.forEach(t=>{t.label=this.translateChargeMode(t.id).label,t.class=this.translateChargeMode(t.id).class}),e},translateChargeMode(e){switch(e){case"instant_charging":return{mode:e,label:"Sofort",class:"danger"};case"pv_charging":return{mode:e,label:"PV",class:"success"};case"scheduled_charging":return{mode:e,label:"Zielladen",class:"primary"};case"time_charging":return{mode:e,label:"Zeitladen",class:"warning"};case"standby":return{mode:e,label:"Standby",class:"secondary"};case"stop":return{mode:e,label:"Stop",class:"dark"};default:return console.warn("unknown charge mode:",e),{mode:e,label:e,class:e}}},checkChangesLockCode(e){return!!(this.getThemeConfiguration&&this.getThemeConfiguration.lock_changes_code==e)},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatDateRange(e,t="-"){const n={year:"numeric",month:"2-digit",day:"2-digit"};let i={day:"2-digit"};const r=new Date(e[0]),o=new Date(e[1]);return r.getFullYear()==o.getFullYear()?r.getMonth()!=o.getMonth()&&(i.month=n.month):i=n,`${this.formatDate(e[0],i)}${t}${this.formatDate(e[1],n)}`},formatWeeklyScheduleDays(e){const t=["Mo","Di","Mi","Do","Fr","Sa","So"];let n=[];return e.forEach(function(i,r){i==!0&&n.push(t[r])}),n.join(",")}}}),oe={name:"NavItem",props:{to:{type:Object,required:!0}}};function re(e,t,n,i,r,o){const a=u("i-nav-item");return m(),f(a,{to:n.to,"active-class":"-active",class:"_border _border-color:primary _text-align:center"},{default:c(()=>[W(e.$slots,"default",{},void 0,!0)]),_:3},8,["to"])}const ie=v(oe,[["render",re],["__scopeId","data-v-1db6ae73"]]),ae={name:"NavBar",components:{NavItem:ie},data(){return{mqttStore:P()}}};function ce(e,t,n,i,r,o){const a=u("nav-item"),s=u("i-nav");return m(),f(s,{vertical:"",class:"_align-items:stretch",size:"lg"},{default:c(()=>[r.mqttStore.getDashBoardEnabled?(m(),f(a,{key:0,to:{name:"dash-board"}},{default:c(()=>[_(" Übersicht ")]),_:1})):w("",!0),r.mqttStore.getEnergyFlowEnabled?(m(),f(a,{key:1,to:{name:"energy-flow"}},{default:c(()=>[_(" Energiefluss ")]),_:1})):w("",!0),r.mqttStore.getChargePointsEnabled&&r.mqttStore.getChargePointIds.length>0?(m(),f(a,{key:2,to:{name:"charge-points"}},{default:c(()=>[_(" Ladepunkte ")]),_:1})):w("",!0),r.mqttStore.getStateEnabled?(m(),f(a,{key:3,to:{name:"status"}},{default:c(()=>[_(" Status ")]),_:1})):w("",!0)]),_:1})}const se=v(ae,[["render",ce]]);I.add(L,E);const le={name:"NumberPad",components:{FontAwesomeIcon:O},emits:["key:digit","key:clear","key:delete"],data(){return{buttonRows:[[{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"}],[{value:4,label:"4"},{value:5,label:"5"},{value:6,label:"6"}],[{value:7,label:"7"},{value:8,label:"8"},{value:9,label:"9"}]]}},methods:{emitDigit(e){this.$emit("key:digit",e)},emitClear(){this.$emit("key:clear")},emitDelete(){this.$emit("key:delete")}}};function ue(e,t,n,i,r,o){const a=u("i-button"),s=u("i-column"),d=u("i-row"),g=u("FontAwesomeIcon"),h=u("i-container");return m(),f(h,null,{default:c(()=>[(m(!0),y(V,null,T(r.buttonRows,p=>(m(),f(d,{key:p,center:"",class:"_padding-bottom:1"},{default:c(()=>[(m(!0),y(V,null,T(p,b=>(m(),f(s,{key:b.value,class:"pin-button-column"},{default:c(()=>[l(a,{size:"lg",class:"pin-button",onClick:C=>o.emitDigit(b.value)},{default:c(()=>[_(S(b.label),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:2},1024))),128)),l(d,{center:""},{default:c(()=>[l(s,{class:"pin-button-column"},{default:c(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[0]||(t[0]=p=>o.emitClear())},{default:c(()=>[l(g,{"fixed-width":"",icon:["fas","fa-eraser"]})]),_:1})]),_:1}),l(s,{class:"pin-button-column"},{default:c(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[1]||(t[1]=p=>o.emitDigit("0"))},{default:c(()=>[_(" 0 ")]),_:1})]),_:1}),l(s,{class:"pin-button-column"},{default:c(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[2]||(t[2]=p=>o.emitDelete())},{default:c(()=>[l(g,{"fixed-width":"",icon:["fas","fa-delete-left"]})]),_:1})]),_:1})]),_:1})]),_:1})}const de=v(le,[["render",ue],["__scopeId","data-v-4e2103db"]]),ge={name:"CodeInputModal",components:{NumberPad:de},props:{modelValue:{type:Boolean,required:!0},backgroundColor:{type:String,default:"warning"},placeholderCharacter:{type:String,default:"*",validator(e){return e.length==1}},inputVisible:{type:Boolean,default:!1},minLength:{type:Number,default:4},maxLength:{type:Number,default:4}},emits:["update:modelValue","update:inputValue"],data(){return{number:"",modalBackground:this.backgroundColor}},computed:{placeholder(){return this.placeholderCharacter.repeat(this.minLength)},enableSubmit(){return this.number.length>=this.minLength&&this.number.length<=this.maxLength}},watch:{modelValue(e,t){e===!1&&t===!0&&this.clear()}},methods:{abort(){this.$emit("update:modelValue",!1)},addDigit(e){this.number.length<this.maxLength&&(this.number+=e)},removeDigit(){this.number=this.number.slice(0,-1)},clear(){this.number=""},submit(){this.$emit("update:inputValue",this.number)},success(e="success"){this.modalBackground=e,setTimeout(()=>{this.$emit("update:modelValue",!1),this.modalBackground=this.backgroundColor},500)},error(e="danger"){this.modalBackground=e,setTimeout(()=>{this.clear(),this.modalBackground=this.backgroundColor},2e3)}}};function he(e,t,n,i,r,o){const a=u("i-input"),s=u("i-column"),d=u("i-row"),g=u("NumberPad"),h=u("i-container"),p=u("i-button"),b=u("i-modal");return m(),f(F,{to:"body"},[l(b,{"model-value":n.modelValue,color:r.modalBackground,"onUpdate:modelValue":t[4]||(t[4]=C=>e.$emit("update:modelValue",C))},{header:c(()=>[W(e.$slots,"header",{},()=>[_(" **HEADER** ")])]),footer:c(()=>[l(h,null,{default:c(()=>[l(d,null,{default:c(()=>[l(s,null,{default:c(()=>[l(p,{color:"danger",onClick:o.abort},{default:c(()=>[W(e.$slots,"abort",{},()=>[_(" Zurück ")])]),_:3},8,["onClick"])]),_:3}),l(s,{class:"_text-align:right"},{default:c(()=>[o.enableSubmit?(m(),f(p,{key:0,color:"success",onClick:o.submit},{default:c(()=>[W(e.$slots,"submit",{},()=>[_(" OK ")])]),_:3},8,["onClick"])):w("",!0)]),_:3})]),_:3})]),_:3})]),default:c(()=>[l(h,null,{default:c(()=>[l(d,{center:"",class:"_padding-bottom:1"},{default:c(()=>[l(s,null,{default:c(()=>[l(a,{modelValue:r.number,"onUpdate:modelValue":t[0]||(t[0]=C=>r.number=C),placeholder:o.placeholder,readonly:"",size:"lg",type:n.inputVisible?"text":"password",class:"_text-align:center"},null,8,["modelValue","placeholder","type"])]),_:1})]),_:1}),l(g,{"onKey:digit":t[1]||(t[1]=C=>o.addDigit(C)),"onKey:clear":t[2]||(t[2]=C=>o.clear()),"onKey:delete":t[3]||(t[3]=C=>o.removeDigit(C))})]),_:1})]),_:3},8,["model-value","color"])])}const pe=v(ge,[["render",he]]);I.add(Y,Q,L,E);const me={name:"LockNavItem",components:{FontAwesomeIcon:O,CodeInputModal:pe},props:{},data(){return{mqttStore:P(),modalPinEntryVisible:!1,modalPinEntryColor:"warning",code:"",countdown:0,countdownInterval:void 0,events:["mousemove","touchmove","wheel"]}},computed:{changesLocked:{get(){return this.mqttStore.settings.changesLocked},set(e){this.mqttStore.settings.changesLocked=e}},timer(){return Math.trunc(this.countdown/60).toString()+":"+(this.countdown%60).toString().padStart(2,"0")}},mounted(){this.changesLocked=!0},methods:{toggleChangesLock(){this.changesLocked?this.unlockChanges():this.lockChanges()},unlockChanges(){this.modalPinEntryVisible=!0},checkUnlockCode(e){console.log("checkUnlockCode",e),this.mqttStore.checkChangesLockCode(e)?(this.$refs.lockInput.success("success"),this.changesLocked=!1,this.mqttStore.getDisplayStandby>0&&(this.countdown=this.mqttStore.getDisplayStandby,this.countdownInterval=setInterval(this.updateCountdown,1e3),this.events.forEach(t=>{document.addEventListener(t,this.handleDocumentEvent,{passive:!0})}))):(console.warn("check unlock code failed!"),this.$refs.lockInput.error("danger"))},lockChanges(){this.changesLocked=!0,this.events.forEach(e=>{document.removeEventListener(e,this.handleDocumentEvent,{passive:!0})}),this.countdownInterval!==void 0&&(clearInterval(this.countdownInterval),this.countdownInterval=void 0)},updateCountdown(){this.countdown-=1,this.countdown<1&&this.lockChanges()},handleDocumentEvent(){this.countdown=this.mqttStore.getDisplayStandby}}},fe={key:0,class:"_padding-left:1"};function _e(e,t,n,i,r,o){const a=u("FontAwesomeIcon"),s=u("i-button"),d=u("CodeInputModal");return m(),y(V,null,[r.mqttStore.getLockChanges?(m(),f(s,{key:0,class:"_padding-left:0 _padding-right:0 _margin-bottom:1",size:"lg",block:"",color:o.changesLocked?"danger":"success",onClick:t[0]||(t[0]=g=>o.toggleChangesLock())},{default:c(()=>[l(a,{"fixed-width":"",icon:o.changesLocked?["fas","fa-lock"]:["fas","fa-lock-open"],class:M(o.changesLocked?"_color:danger-80":"_color:success-80")},null,8,["icon","class"]),!o.changesLocked&&r.countdownInterval?(m(),y("span",fe,S(o.timer),1)):w("",!0)]),_:1},8,["color"])):w("",!0),l(d,{ref:"lockInput",modelValue:r.modalPinEntryVisible,"onUpdate:modelValue":t[1]||(t[1]=g=>r.modalPinEntryVisible=g),"min-length":4,"max-length":10,"onUpdate:inputValue":o.checkUnlockCode},{header:c(()=>[_(" Bitte den PIN zur Freigabe von Änderungen eingeben. ")]),_:1},8,["modelValue","onUpdate:inputValue"])],64)}const Ce=v(me,[["render",_e]]),be={name:"OpenwbDisplayCardsApp",components:{RouterView:j,DateTime:ne,NavBar:se,LockNavItem:Ce},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3},mqttTopicsToSubscribe:["openWB/bat/config/configured","openWB/bat/get/power","openWB/bat/get/soc","openWB/chargepoint/+/config","openWB/chargepoint/+/get/charge_state","openWB/chargepoint/+/get/connected_vehicle/+","openWB/chargepoint/+/get/phases_in_use","openWB/chargepoint/+/get/plug_state","openWB/chargepoint/+/get/power","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/set/current","openWB/chargepoint/+/set/manual_lock","openWB/chargepoint/+/set/log","openWB/chargepoint/+/set/rfid","openWB/chargepoint/get/power","openWB/counter/+/get/power","openWB/counter/get/hierarchy","openWB/counter/set/home_consumption","openWB/optional/int_display/theme","openWB/optional/int_display/standby","openWB/optional/rfid/active","openWB/pv/config/configured","openWB/pv/get/power","openWB/system/current_branch","openWB/system/current_commit","openWB/system/ip_address","openWB/system/time","openWB/system/version","openWB/vehicle/+/get/fault_state","openWB/vehicle/+/name","openWB/vehicle/+/soc_module/config","openWB/vehicle/template/charge_template/#"],mqttStore:P(),chartInterval:""}},computed:{changesLocked(){return this.mqttStore.getLockChanges&&this.mqttStore.settings.changesLocked}},created(){this.createConnection()},mounted(){let e=window.location.search;if(e!=""){console.debug("search",e);let t=new URLSearchParams(e);if(t.has("data")){let n=JSON.parse(t.get("data"));Object.entries(n).forEach(([i,r])=>{console.log("updateSetting",i,r),this.mqttStore.updateSetting(i,r)})}}this.doSubscribe(this.mqttTopicsToSubscribe),this.chartInterval=setInterval(this.mqttStore.updateChartData,5e3)},beforeUnmount(){this.doUnsubscribe(this.mqttTopicsToSubscribe),clearInterval(this.chartInterval)},methods:{createConnection(){const{protocol:e,host:t,port:n,endpoint:i,...r}=this.connection,o=`${e}://${t}:${n}${i}`;console.debug("connecting to broker:",o);try{this.client=A.connect(o,r)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId)}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,s)=>{if(console.debug(`Received message "${s}" from topic "${a}"`),s.toString().length>0){let d;try{d=JSON.parse(s.toString())}catch(g){console.debug("Json parsing failed, fallback to string: ",a,g),d=s.toString()}this.mqttStore.addTopic(a,d)}else this.mqttStore.removeTopic(a)})},doSubscribe(e){e.forEach(t=>{this.mqttStore.initTopic(t)}),this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){e.forEach(t=>{this.mqttStore.removeTopic(t)}),this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,n=!0,i=2){console.debug("doPublish",e,t);let r={qos:i,retain:n};this.client.publish(e,JSON.stringify(t),r,o=>{o&&console.error("Publish error",o)})},sendTopicToBroker(e,t=void 0){let n=e.replace("openWB/","openWB/set/");t===void 0&&(t=this.mqttStore.topics[e]),this.doPublish(n,t)},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},sendSystemCommand(e,t={}){this.sendCommand({command:e,data:t})}}};function ve(e,t,n,i,r,o){const a=u("DateTime"),s=u("i-column"),d=u("i-row"),g=u("i-container"),h=u("LockNavItem"),p=u("NavBar"),b=u("i-layout-aside"),C=u("RouterView"),q=u("i-layout-content"),x=u("i-layout");return m(),f(x,{vertical:""},{default:c(()=>[l(b,{class:"_position:fixed"},{default:c(()=>[l(g,{fluid:"",class:"_margin-bottom:1"},{default:c(()=>[l(d,{center:""},{default:c(()=>[l(s,null,{default:c(()=>[l(a)]),_:1})]),_:1})]),_:1}),l(h),l(p,{"changes-locked":o.changesLocked},null,8,["changes-locked"])]),_:1}),l(q,null,{default:c(()=>[l(C,{"changes-locked":o.changesLocked},null,8,["changes-locked"])]),_:1})]),_:1})}const we=v(be,[["render",ve],["__scopeId","data-v-12a825f7"]]),ye="modulepreload",Be=function(e){return"/openWB/web/display/themes/cards/"+e},$={},B=function(t,n,i){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),a=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.all(n.map(s=>{if(s=Be(s),s in $)return;$[s]=!0;const d=s.endsWith(".css"),g=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${g}`))return;const h=document.createElement("link");if(h.rel=d?"stylesheet":ye,d||(h.as="script",h.crossOrigin=""),h.href=s,a&&h.setAttribute("nonce",a),document.head.appendChild(h),d)return new Promise((p,b)=>{h.addEventListener("load",p),h.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${s}`)))})}))}return r.then(()=>t()).catch(o=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o})},We="/openWB/web/display/themes/cards/openWB_logo_dark.png",Se={name:"WelcomeView",data(){return{mqttStore:P()}},computed:{firstView(){if(this.mqttStore.getThemeConfiguration){if(this.mqttStore.getThemeConfiguration.enable_dashboard_view)return"dash-board";if(this.mqttStore.getThemeConfiguration.enable_energy_flow_view)return"energy-flow";if(this.mqttStore.getThemeConfiguration.enable_charge_points_view)return"charge-points";if(this.mqttStore.getThemeConfiguration.enable_status_view)return"status"}}},mounted(){setTimeout(this.selectFirstRoute,3e3)},methods:{selectFirstRoute(){this.firstView?this.$router.push({name:this.firstView}):console.warn("no router view enabled, check your configuration!")}}},Ve=e=>(R("data-v-16686e30"),e=e(),U(),e),Pe=Ve(()=>D("img",{class:"logo",src:We},null,-1));function ke(e,t,n,i,r,o){const a=u("i-card"),s=u("i-column"),d=u("i-row"),g=u("i-container");return m(),f(g,null,{default:c(()=>[l(d,{center:"",middle:""},{default:c(()=>[l(s,null,{default:c(()=>[l(a,{color:"primary"},{header:c(()=>[_(" Cards Theme ")]),default:c(()=>[Pe]),_:1})]),_:1})]),_:1})]),_:1})}const Te=v(Se,[["render",ke],["__scopeId","data-v-16686e30"]]),$e=z({history:H("/openWB/web/display/themes/cards/"),routes:[{path:"/",name:"welcome",component:Te},{path:"/DashBoard",name:"dash-board",component:()=>B(()=>import("./DashBoardView-BaB3KBmL.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))},{path:"/EnergyFlow",name:"energy-flow",component:()=>B(()=>import("./EnergyFlowView-fJc3wqIp.js"),__vite__mapDeps([10,1,2,3,4,5,7,11]))},{path:"/ChargePoints",name:"charge-points",component:()=>B(()=>import("./ChargePointsView-BxRzqrN1.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,8,13]))},{path:"/Status",name:"status",component:()=>B(()=>import("./StatusView-Dn5MUjQZ.js"),__vite__mapDeps([14,7,3,2,4,1,5]))}]}),k=G(we);k.use(K());k.use($e);k.use(J,{colorMode:"dark",components:Z});k.mount("#app");export{pe as C,de as N,P as u};
diff --git a/packages/modules/display_themes/cards/web/assets/index-B7S8vMKj.css b/packages/modules/display_themes/cards/web/assets/index-B7S8vMKj.css
deleted file mode 100644
index ec42d22c87..0000000000
--- a/packages/modules/display_themes/cards/web/assets/index-B7S8vMKj.css
+++ /dev/null
@@ -1 +0,0 @@
-.nav-item[data-v-1db6ae73]{margin-bottom:var(--spacing)!important;border-radius:var(--border-radius)}.nav-item.-active[data-v-1db6ae73]{background-color:var(--color--primary)}.pin-button-column[data-v-4e2103db]{display:flex;flex-grow:1}.pin-button[data-v-4e2103db]{min-height:2em;flex-grow:1;font-size:200%;font-weight:700}.layout-aside[data-v-12a825f7]{----width: 10rem !important}.layout-content[data-v-12a825f7]{margin-left:calc(10rem + var(--spacing));margin-right:var(--spacing)}hr[data-v-12a825f7]{border-color:var(--color--primary);margin:var(--spacing) 0}.container[data-v-16686e30],.row[data-v-16686e30]{height:100vh}.card[data-v-16686e30]{----background: inherit !important;----body--color: var(--contrast-color-for-dark-background) !important}img.logo[data-v-16686e30]{max-width:100%}:root{--spacing: .5rem}html,body{overscroll-behavior:none}body{overflow-y:overlay}html,body{scrollbar-width:thin;scrollbar-color:var(--color--primary-70) transparent}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-thumb{background:var(--color--primary-70);border-radius:2px}
diff --git a/packages/modules/display_themes/cards/web/assets/index-BkCKa8xR.css b/packages/modules/display_themes/cards/web/assets/index-BkCKa8xR.css
new file mode 100644
index 0000000000..fc435732b5
--- /dev/null
+++ b/packages/modules/display_themes/cards/web/assets/index-BkCKa8xR.css
@@ -0,0 +1 @@
+.nav-item[data-v-1db6ae73]{margin-bottom:var(--spacing)!important;border-radius:var(--border-radius)}.nav-item.-active[data-v-1db6ae73]{background-color:var(--color--primary)}.pin-button-column[data-v-4e2103db]{display:flex;flex-grow:1}.pin-button[data-v-4e2103db]{min-height:2em;flex-grow:1;font-size:200%;font-weight:700}.touch-blocker[data-v-e4e632d4]{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}[data-v-e4e632d4] .modal{box-shadow:none}[data-v-e4e632d4] .modal>.modal-body{display:flex;flex-direction:column;align-items:center;background:transparent;border:none}.layout-aside[data-v-6c4642a5]{----width: 10rem !important}.layout-content[data-v-6c4642a5]{margin-left:calc(10rem + var(--spacing));margin-right:var(--spacing)}hr[data-v-6c4642a5]{border-color:var(--color--primary);margin:var(--spacing) 0}.container[data-v-16686e30],.row[data-v-16686e30]{height:100vh}.card[data-v-16686e30]{----background: inherit !important;----body--color: var(--contrast-color-for-dark-background) !important}img.logo[data-v-16686e30]{max-width:100%}:root{--spacing: .5rem}html,body{overscroll-behavior:none}body{overflow-y:overlay}html,body{scrollbar-width:thin;scrollbar-color:var(--color--primary-70) transparent}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-thumb{background:var(--color--primary-70);border-radius:2px}
diff --git a/packages/modules/display_themes/cards/web/assets/index-CHLaD7ED.js b/packages/modules/display_themes/cards/web/assets/index-CHLaD7ED.js
new file mode 100644
index 0000000000..1484935e77
--- /dev/null
+++ b/packages/modules/display_themes/cards/web/assets/index-CHLaD7ED.js
@@ -0,0 +1,2 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashBoardView-_HZMNhnS.js","assets/DashBoardCard-BterAPyf.js","assets/vendor-inkline-Ce5aFAnW.js","assets/vendor-CZ1MGz7j.js","assets/vendor-inkline-BDgt6n8h.css","assets/DashBoardCard-DKbC8x2S.css","assets/ChargePointPlugBadge-DyF92yTK.js","assets/vendor-fortawesome-C68yAli-.js","assets/ChargePointPlugBadge-DqNX7D_z.css","assets/DashBoardView-CrVFeUF-.css","assets/EnergyFlowView-BcB2FDT1.js","assets/EnergyFlowView-C3xLYKue.css","assets/ChargePointsView-CZeUBF37.js","assets/ChargePointsView-DPrjgv0h.css","assets/StatusView-uYO1gy9a.js"])))=>i.map(i=>d[i]);
+import{o as p,e as B,k as _,x as W,f as y,j as V,F as P,H as j,q as u,l as m,n as s,i as w,A as D,s as l,I,y as A,R,J as U,K as H,L as z,M as G,N as K}from"./vendor-CZ1MGz7j.js";import{_ as v,I as J,c as Z}from"./vendor-inkline-Ce5aFAnW.js";import{l as E,f as L,a as q,F as O,b as Y,c as Q}from"./vendor-fortawesome-C68yAli-.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))i(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();const X={name:"DateTime",data(){return{dateTimeInterval:"",date:"",time:""}},mounted(){this.update(),this.dateTimeInterval=setInterval(this.update,1e3)},beforeUnmount(){clearInterval(this.dateTimeInterval)},methods:{update(){const e=new Date,t={weekday:"short",year:"numeric",month:"2-digit",day:"2-digit"},n={hour:"2-digit",minute:"2-digit",second:"2-digit"};this.date=e.toLocaleDateString(void 0,t),this.time=e.toLocaleTimeString(void 0,n)}}};function ee(e,t,n,i,o,r){return p(),B(P,null,[_(W(o.time),1),y(e.$slots,"default",{},()=>[t[0]||(t[0]=V("br",null,null,-1))]),_(W(o.date),1)],64)}const te=v(X,[["render",ee]]),S=j("mqtt",{state:()=>({settings:{localIp:void 0,localBranch:void 0,localCommit:void 0,localVersion:void 0,parentChargePoint1:void 0,parentChargePoint2:void 0},topics:{},chartData:{}}),getters:{getChargePointFilter:e=>{let t=[];return e.settings.parentChargePoint1!==void 0&&t.push(e.settings.parentChargePoint1),e.settings.parentChargePoint2!==void 0&&t.push(e.settings.parentChargePoint2),t},getWildcardIndexList:e=>(t,n=!1)=>{let i=t;n||(i="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let o=Object.keys(e.topics).filter(r=>r.match(i));return o.forEach((r,a,c)=>{c[a]=parseInt(r.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),o},getWildcardTopics:e=>(t,n=!1)=>{let i=t;return n||(i="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(e.topics).filter(o=>o.match(i)).reduce((o,r)=>({...o,[r]:e.topics[r]}),{})},getObjectIds:e=>t=>{function n(i){let o=[];return i!==void 0&&i.forEach(r=>{r.type==t&&o.push(r.id),o=[...o,...n(r.children)]}),o}return n(e.topics["openWB/counter/get/hierarchy"])},getValueBool:e=>(t,n=!1)=>{let i=e.topics[t];return i!==void 0?i:(console.warn("topic not found! using default",t,n),n)},getValueString:e=>(t,n="W",i="",o=!0,r=!1,a="---",c=void 0)=>{var d=!1,g=e.topics[t];if(g===void 0||c!==void 0&&g[c]===void 0)console.warn("topic not found! using default",t,a),C=a;else{c!==void 0&&(g=g[c]),r&&(g*=-1);for(var C=g.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:0}),h=g;o&&(h>999||h<-999);)switch(h=h/1e3,d=!0,i){case"":i="k";break;case"k":i="M";break;case"M":i="G";break}C=h.toLocaleString(void 0,{minimumFractionDigits:d?2:0,maximumFractionDigits:d?2:0})}return{textValue:`${C} ${i}${n}`,value:g,unit:n,scaledValue:h,scaledUnit:`${i}${n}`}},getChartData:e=>t=>e.chartData[t]===void 0?[]:e.chartData[t],getDisplayStandby:e=>e.topics["openWB/optional/int_display/standby"],getThemeConfiguration:e=>{if("openWB/optional/int_display/theme"in e.topics&&e.topics["openWB/optional/int_display/theme"]!==void 0&&"configuration"in e.topics["openWB/optional/int_display/theme"])return e.topics["openWB/optional/int_display/theme"].configuration},getDashBoardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_view:!0},getEnergyFlowEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_energy_flow_view:!0},getChargePointsEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_charge_points_view:!0},getStateEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_status_view:!0},getGridCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_grid:!0},getHomeCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_home_consumption:!0},getBatteryCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_battery_sum:!0},getChargePointsCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_charge_point_sum:!0},getPvCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_inverter_sum:!0},getLockChanges(e){return e.getThemeConfiguration?e.getThemeConfiguration.lock_changes:!0},getSimpleChargePointView(e){return e.getThemeConfiguration?e.getThemeConfiguration.simple_charge_point_view:!1},getGridId(e){let t=e.topics["openWB/counter/get/hierarchy"];if(t!==void 0&&Object.keys(t).length>0){let n=Object.keys(e.topics["openWB/counter/get/hierarchy"])[0];if(console.debug("getGridId",n,e.topics["openWB/counter/get/hierarchy"][n]),e.topics["openWB/counter/get/hierarchy"][n].type=="counter")return e.topics["openWB/counter/get/hierarchy"][n].id}},getGridPower(e){return(t="textValue")=>{let n=e.getGridId;if(n===void 0)return"---";let i=e.getValueString(`openWB/counter/${n}/get/power`,"W");if(Object.hasOwnProperty.call(i,t))return i[t];if(t=="object")return i;console.error("returnType not found!",t,i)}},getGridPowerChartData(e){let t=e.getGridId;return t===void 0?[]:e.getChartData(`openWB/counter/${t}/get/power`)},getHomePower(e){return(t="textValue")=>{let n=e.getValueString("openWB/counter/set/home_consumption","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getHomePowerChartData(e){return e.getChartData("openWB/counter/set/home_consumption")},getBatteryConfigured(e){return e.getValueBool("openWB/bat/config/configured")},getBatteryPower(e){return(t="textValue")=>{let n=e.getValueString("openWB/bat/get/power","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getBatteryPowerChartData(e){return e.getChartData("openWB/bat/get/power")},getBatterySoc(e){return(t="textValue")=>{let n=e.getValueString("openWB/bat/get/soc","%","",!1);if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getBatterySocChartData(e){return e.getChartData("openWB/bat/get/soc")},getPvConfigured(e){return e.getValueBool("openWB/pv/config/configured")},getPvPower(e){return(t="textValue")=>{var n=e.getValueString("openWB/pv/get/power","W","",!0,!0);if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getPvPowerChartData(e){return e.getChartData("openWB/pv/get/power").map(t=>t*-1)},getChargePointSumPower(e){return(t="textValue")=>{var n=e.getValueString("openWB/chargepoint/get/power","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getChargePointSumPowerChartData(e){return e.getChartData("openWB/chargepoint/get/power")},getChargePointIds(e){let t=e.getObjectIds("cp"),n=this.getChargePointFilter;return n.length>0?(console.debug("charge points are filtered!",t,n),t.filter(i=>n.includes(i))):t},getChargePointName(e){return t=>e.topics[`openWB/chargepoint/${t}/config`]!==void 0?e.topics[`openWB/chargepoint/${t}/config`].name:"---"},getChargePointPower(e){return(t,n="textValue")=>{var i=e.getValueString(`openWB/chargepoint/${t}/get/power`,"W");if(Object.hasOwnProperty.call(i,n))return i[n];if(n=="object")return i;console.error("returnType not found!",n,i)}},getChargePointImportedSincePlugged(e){return t=>({energy:e.getValueString(`openWB/chargepoint/${t}/set/log`,"Wh","",!0,!1,"---","imported_since_plugged").textValue,range:e.getValueString(`openWB/chargepoint/${t}/set/log`,"m","k",!1,!1,"---","range_charged").textValue})},getChargePointPowerChartData(e){return t=>e.getChartData(`openWB/chargepoint/${t}/get/power`)},getChargePointSetCurrent(e){return(t,n="textValue")=>{let i=e.getValueString(`openWB/chargepoint/${t}/set/current`,"A");if(Object.hasOwnProperty.call(i,n))return i[n];if(n=="object")return i;console.error("returnType not found!",n,i)}},getChargePointPhasesInUse(e){return t=>{const n=["/","①","②","③"],i=e.topics[`openWB/chargepoint/${t}/get/phases_in_use`];return i!==void 0&&i>=0&&i<n.length?n[e.topics[`openWB/chargepoint/${t}/get/phases_in_use`]]:(console.warn("topic not found!",`openWB/chargepoint/${t}/get/phases_in_use`),"?")}},getChargePointPlugState(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/get/plug_state`)},getChargePointChargeState(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/get/charge_state`)},getChargePointManualLock(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/set/manual_lock`)},getChargepointTagState(e){return t=>{if([void 0,null,""].includes(e.topics[`openWB/chargepoint/${t}/set/rfid`])){if(![void 0,null,""].includes(e.topics[`openWB/chargepoint/${t}/get/rfid`]))return 1}else return 2;return 0}},getChargePointConnectedVehicleConfig(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/config`]},getChargePointConnectedVehicleChargeMode(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.translateChargeMode(e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.selected)}},getChargePointConnectedVehiclePriority(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).prio}},getChargePointConnectedVehicleInfo(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`]},getChargePointConnectedVehicleId(e){return t=>{if(e.getChargePointConnectedVehicleInfo(t))return e.getChargePointConnectedVehicleInfo(t).id}},getChargePointConnectedVehicleChargeTemplateIndex(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).charge_template}},getChargePointConnectedVehicleChargeTemplate(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.topics[`openWB/vehicle/template/charge_template/${n}`]}},getChargePointConnectedVehicleEvTemplate(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).ev_template}},getChargePointConnectedVehicleName(e){return t=>{if(e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`])return e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`].name}},getChargePointConnectedVehicleSoc(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/soc`]},getChargePointConnectedVehicleTimeChargingActive(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).time_charging.active}},getChargePointConnectedVehicleTimeChargingRunning(e){return t=>{let n=e.getChargePointConnectedVehicleConfig(t).time_charging_in_use;return n!==void 0?n:!1}},getChargePointConnectedVehicleInstantChargingCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.instant_charging.current}},getChargePointConnectedVehicleInstantChargingLimit(e){return t=>e.getChargePointConnectedVehicleChargeTemplate(t)?e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.instant_charging.limit:{selected:void 0}},getChargePointConnectedVehiclePvChargingFeedInLimit(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.feed_in_limit}},getChargePointConnectedVehiclePvChargingMinCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_current}},getChargePointConnectedVehiclePvChargingMinSoc(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_soc}},getChargePointConnectedVehiclePvChargingMinSocCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_soc_current}},getChargePointConnectedVehiclePvChargingMaxSoc(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.max_soc}},getChargePointConnectedVehicleScheduledChargingPlans(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.getWildcardTopics(`openWB/vehicle/template/charge_template/${n}/chargemode/scheduled_charging/plans/+`)}},getChargePointConnectedVehicleTimeChargingPlans(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.getWildcardTopics(`openWB/vehicle/template/charge_template/${n}/time_charging/plans/+`)}},getVehicleList(e){return e.getWildcardTopics("openWB/vehicle/+/name")},getVehicleName(e){return t=>e.topics[`openWB/vehicle/${t}/name`]},getVehicleSocConfigured(e){return t=>e.topics[`openWB/vehicle/${t}/soc_module/config`].type!=null},getVehicleSocIsManual(e){return t=>e.topics[`openWB/vehicle/${t}/soc_module/config`].type=="manual"},getVehicleFaultState(e){return t=>e.topics[`openWB/vehicle/${t}/get/fault_state`]?e.topics[`openWB/vehicle/${t}/get/fault_state`]:0},getSystemTime(e){if(e.topics["openWB/system/time"])return new Date(e.topics["openWB/system/time"]*1e3).toLocaleString()},getSystemIp(e){if(e.settings.localIp!==void 0)return e.settings.localIp;if(e.topics["openWB/system/ip_address"])return e.topics["openWB/system/ip_address"]},getSystemVersion(e){if(e.settings.localVersion!==void 0)return e.settings.localVersion;if(e.topics["openWB/system/version"])return e.topics["openWB/system/version"]},getSystemBranch(e){if(e.settings.localBranch!==void 0)return e.settings.localBranch;if(e.topics["openWB/system/current_branch"])return e.topics["openWB/system/current_branch"]},getSystemCurrentCommit(e){if(e.settings.localCommit!==void 0)return e.settings.localCommit;if(e.topics["openWB/system/current_commit"])return e.topics["openWB/system/current_commit"]},getRfidEnabled(){return this.getValueBool("openWB/optional/rfid/active")}},actions:{updateSetting(e,t){e in this.settings&&(this.settings[e]=t)},initTopic(e,t=void 0){e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.addTopic(e,t)},addTopic(e,t){console.debug("addTopic",e,t),this.topics[e]=t},removeTopic(e){e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic for removal:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),delete this.topics[t]})):delete this.topics[e]},updateTopic(e,t,n=void 0){const i=(o,r,a)=>r.split(".").reduce((c,d,g)=>c[d]=r.split(".").length===++g?a:c[d]||{},o);e in this.topics?n!=null?i(this.topics[e],n,t):this.topics[e]=t:console.debug("topic not found: ",e)},updateChartData(){for(const[e,t]of Object.entries(this.topics))(e.endsWith("home_consumption")||e.endsWith("power")||e.endsWith("soc"))&&(this.chartData[e]===void 0&&(this.chartData[e]=[]),t!=null&&(this.chartData[e].push(t),this.chartData[e].slice(-128)))},updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.updateTopic(e,t,n)},chargeModeList(){var e=[{id:"instant_charging"},{id:"pv_charging"},{id:"scheduled_charging"},{id:"standby"},{id:"stop"}];return e.forEach(t=>{t.label=this.translateChargeMode(t.id).label,t.class=this.translateChargeMode(t.id).class}),e},translateChargeMode(e){switch(e){case"instant_charging":return{mode:e,label:"Sofort",class:"danger"};case"pv_charging":return{mode:e,label:"PV",class:"success"};case"scheduled_charging":return{mode:e,label:"Zielladen",class:"primary"};case"time_charging":return{mode:e,label:"Zeitladen",class:"warning"};case"standby":return{mode:e,label:"Standby",class:"secondary"};case"stop":return{mode:e,label:"Stop",class:"dark"};default:return console.warn("unknown charge mode:",e),{mode:e,label:e,class:e}}},checkChangesLockCode(e){return!!(this.getThemeConfiguration&&this.getThemeConfiguration.lock_changes_code==e)},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatDateRange(e,t="-"){const n={year:"numeric",month:"2-digit",day:"2-digit"};let i={day:"2-digit"};const o=new Date(e[0]),r=new Date(e[1]);return o.getFullYear()==r.getFullYear()?o.getMonth()!=r.getMonth()&&(i.month=n.month):i=n,`${this.formatDate(e[0],i)}${t}${this.formatDate(e[1],n)}`},formatWeeklyScheduleDays(e){const t=["Mo","Di","Mi","Do","Fr","Sa","So"];let n=[];return e.forEach(function(i,o){i==!0&&n.push(t[o])}),n.join(",")}}}),ne={name:"NavItem",props:{to:{type:Object,required:!0}}};function oe(e,t,n,i,o,r){const a=u("i-nav-item");return p(),m(a,{to:n.to,"active-class":"-active",class:"_border _border-color:primary _text-align:center"},{default:s(()=>[y(e.$slots,"default",{},void 0,!0)]),_:3},8,["to"])}const re=v(ne,[["render",oe],["__scopeId","data-v-1db6ae73"]]),ie={name:"NavBar",components:{NavItem:re},data(){return{mqttStore:S()}}};function ae(e,t,n,i,o,r){const a=u("nav-item"),c=u("i-nav");return p(),m(c,{vertical:"",class:"_align-items:stretch",size:"lg"},{default:s(()=>[o.mqttStore.getDashBoardEnabled?(p(),m(a,{key:0,to:{name:"dash-board"}},{default:s(()=>t[0]||(t[0]=[_(" Übersicht ")])),_:1})):w("",!0),o.mqttStore.getEnergyFlowEnabled?(p(),m(a,{key:1,to:{name:"energy-flow"}},{default:s(()=>t[1]||(t[1]=[_(" Energiefluss ")])),_:1})):w("",!0),o.mqttStore.getChargePointsEnabled&&o.mqttStore.getChargePointIds.length>0?(p(),m(a,{key:2,to:{name:"charge-points"}},{default:s(()=>t[2]||(t[2]=[_(" Ladepunkte ")])),_:1})):w("",!0),o.mqttStore.getStateEnabled?(p(),m(a,{key:3,to:{name:"status"}},{default:s(()=>t[3]||(t[3]=[_(" Status ")])),_:1})):w("",!0)]),_:1})}const ce=v(ie,[["render",ae]]);E.add(L,q);const se={name:"NumberPad",components:{FontAwesomeIcon:O},emits:["key:digit","key:clear","key:delete"],data(){return{buttonRows:[[{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"}],[{value:4,label:"4"},{value:5,label:"5"},{value:6,label:"6"}],[{value:7,label:"7"},{value:8,label:"8"},{value:9,label:"9"}]]}},methods:{emitDigit(e){this.$emit("key:digit",e)},emitClear(){this.$emit("key:clear")},emitDelete(){this.$emit("key:delete")}}};function le(e,t,n,i,o,r){const a=u("i-button"),c=u("i-column"),d=u("i-row"),g=u("FontAwesomeIcon"),C=u("i-container");return p(),m(C,null,{default:s(()=>[(p(!0),B(P,null,D(o.buttonRows,h=>(p(),m(d,{key:h,center:"",class:"_padding-bottom:1"},{default:s(()=>[(p(!0),B(P,null,D(h,b=>(p(),m(c,{key:b.value,class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:f=>r.emitDigit(b.value)},{default:s(()=>[_(W(b.label),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:2},1024))),128)),l(d,{center:""},{default:s(()=>[l(c,{class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[0]||(t[0]=h=>r.emitClear())},{default:s(()=>[l(g,{"fixed-width":"",icon:["fas","fa-eraser"]})]),_:1})]),_:1}),l(c,{class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[1]||(t[1]=h=>r.emitDigit("0"))},{default:s(()=>t[3]||(t[3]=[_(" 0 ")])),_:1})]),_:1}),l(c,{class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[2]||(t[2]=h=>r.emitDelete())},{default:s(()=>[l(g,{"fixed-width":"",icon:["fas","fa-delete-left"]})]),_:1})]),_:1})]),_:1})]),_:1})}const ue=v(se,[["render",le],["__scopeId","data-v-4e2103db"]]),de={name:"CodeInputModal",components:{NumberPad:ue},props:{modelValue:{type:Boolean,required:!0},backgroundColor:{type:String,default:"warning"},placeholderCharacter:{type:String,default:"*",validator(e){return e.length==1}},inputVisible:{type:Boolean,default:!1},minLength:{type:Number,default:4},maxLength:{type:Number,default:4}},emits:["update:modelValue","update:inputValue"],data(){return{number:"",modalBackground:this.backgroundColor}},computed:{placeholder(){return this.placeholderCharacter.repeat(this.minLength)},enableSubmit(){return this.number.length>=this.minLength&&this.number.length<=this.maxLength}},watch:{modelValue(e,t){e===!1&&t===!0&&this.clear()}},methods:{abort(){this.$emit("update:modelValue",!1)},addDigit(e){this.number.length<this.maxLength&&(this.number+=e)},removeDigit(){this.number=this.number.slice(0,-1)},clear(){this.number=""},submit(){this.$emit("update:inputValue",this.number)},success(e="success"){this.modalBackground=e,setTimeout(()=>{this.$emit("update:modelValue",!1),this.modalBackground=this.backgroundColor},500)},error(e="danger"){this.modalBackground=e,setTimeout(()=>{this.clear(),this.modalBackground=this.backgroundColor},2e3)}}};function ge(e,t,n,i,o,r){const a=u("i-input"),c=u("i-column"),d=u("i-row"),g=u("NumberPad"),C=u("i-container"),h=u("i-button"),b=u("i-modal");return p(),m(I,{to:"body"},[l(b,{"model-value":n.modelValue,color:o.modalBackground,"onUpdate:modelValue":t[4]||(t[4]=f=>e.$emit("update:modelValue",f))},{header:s(()=>[y(e.$slots,"header",{},()=>[t[5]||(t[5]=_(" **HEADER** "))])]),footer:s(()=>[l(C,null,{default:s(()=>[l(d,null,{default:s(()=>[l(c,null,{default:s(()=>[l(h,{color:"danger",onClick:r.abort},{default:s(()=>[y(e.$slots,"abort",{},()=>[t[6]||(t[6]=_(" Zurück "))])]),_:3},8,["onClick"])]),_:3}),l(c,{class:"_text-align:right"},{default:s(()=>[r.enableSubmit?(p(),m(h,{key:0,color:"success",onClick:r.submit},{default:s(()=>[y(e.$slots,"submit",{},()=>[t[7]||(t[7]=_(" OK "))])]),_:3},8,["onClick"])):w("",!0)]),_:3})]),_:3})]),_:3})]),default:s(()=>[l(C,null,{default:s(()=>[l(d,{center:"",class:"_padding-bottom:1"},{default:s(()=>[l(c,null,{default:s(()=>[l(a,{modelValue:o.number,"onUpdate:modelValue":t[0]||(t[0]=f=>o.number=f),placeholder:r.placeholder,readonly:"",size:"lg",type:n.inputVisible?"text":"password",class:"_text-align:center"},null,8,["modelValue","placeholder","type"])]),_:1})]),_:1}),l(g,{"onKey:digit":t[1]||(t[1]=f=>r.addDigit(f)),"onKey:clear":t[2]||(t[2]=f=>r.clear()),"onKey:delete":t[3]||(t[3]=f=>r.removeDigit(f))})]),_:1})]),_:3},8,["model-value","color"])])}const he=v(de,[["render",ge]]);E.add(Y,Q,L,q);const pe={name:"LockNavItem",components:{FontAwesomeIcon:O,CodeInputModal:he},props:{},data(){return{mqttStore:S(),modalPinEntryVisible:!1,modalPinEntryColor:"warning",code:"",countdown:0,countdownInterval:void 0,events:["mousemove","touchmove","wheel","click"]}},computed:{changesLocked:{get(){return this.mqttStore.settings.changesLocked},set(e){this.mqttStore.settings.changesLocked=e}},timer(){return Math.trunc(this.countdown/60).toString()+":"+(this.countdown%60).toString().padStart(2,"0")}},mounted(){this.changesLocked=!0},methods:{toggleChangesLock(){this.changesLocked?this.unlockChanges():this.lockChanges()},unlockChanges(){this.modalPinEntryVisible=!0},checkUnlockCode(e){this.mqttStore.checkChangesLockCode(e)?(this.$refs.lockInput.success("success"),this.changesLocked=!1,this.mqttStore.getDisplayStandby>0&&(this.countdown=this.mqttStore.getDisplayStandby,this.countdownInterval=setInterval(this.updateCountdown,1e3),this.events.forEach(t=>{document.addEventListener(t,this.handleDocumentEvent,{passive:!0})}))):(console.warn("check unlock code failed!"),this.$refs.lockInput.error("danger"))},lockChanges(){this.changesLocked=!0,this.events.forEach(e=>{document.removeEventListener(e,this.handleDocumentEvent,{passive:!0})}),this.countdownInterval!==void 0&&(clearInterval(this.countdownInterval),this.countdownInterval=void 0)},updateCountdown(){this.countdown-=1,this.countdown<1&&this.lockChanges()},handleDocumentEvent(){this.countdown=this.mqttStore.getDisplayStandby}}},me={key:0,class:"_padding-left:1"};function fe(e,t,n,i,o,r){const a=u("FontAwesomeIcon"),c=u("i-button"),d=u("CodeInputModal");return p(),B(P,null,[o.mqttStore.getLockChanges?(p(),m(c,{key:0,class:"_padding-left:0 _padding-right:0 _margin-bottom:1",size:"lg",block:"",color:r.changesLocked?"danger":"success",onClick:t[0]||(t[0]=g=>r.toggleChangesLock())},{default:s(()=>[l(a,{"fixed-width":"",icon:r.changesLocked?["fas","fa-lock"]:["fas","fa-lock-open"],class:A(r.changesLocked?"_color:danger-80":"_color:success-80")},null,8,["icon","class"]),!r.changesLocked&&o.countdownInterval?(p(),B("span",me,W(r.timer),1)):w("",!0)]),_:1},8,["color"])):w("",!0),l(d,{ref:"lockInput",modelValue:o.modalPinEntryVisible,"onUpdate:modelValue":t[1]||(t[1]=g=>o.modalPinEntryVisible=g),"min-length":4,"max-length":10,"onUpdate:inputValue":r.checkUnlockCode},{header:s(()=>t[2]||(t[2]=[_(" Bitte den PIN zur Freigabe von Änderungen eingeben. ")])),_:1},8,["modelValue","onUpdate:inputValue"])],64)}const _e=v(pe,[["render",fe]]),x="/openWB/web/display/themes/cards/openWB_logo_dark.png",Ce={name:"TouchBlocker",data(){return{mqttStore:S(),show:!1,countdown:void 0,countdownInterval:void 0,events:["mousemove","touchmove","wheel","click"],eventHandlerSetup:!1}},computed:{configuredDisplayStandby(){if(!(this.mqttStore.getDisplayStandby===0||this.mqttStore.getDisplayStandby===void 0))return this.mqttStore.getDisplayStandby},touchBlockerTimeout(){return Math.max(this.configuredDisplayStandby-3,1)}},mounted(){this.setupEventHandler(),this.setupTimeout()},unmounted(){this.clearEventHandler(),this.clearTimeout()},methods:{handleTouchBlockerClick(e){e===!1&&(this.show=!1,this.setupEventHandler(),this.setupTimeout())},setupEventHandler(){this.eventHandlerSetup||(this.events.forEach(e=>{document.addEventListener(e,this.handleDocumentEvent,{passive:!0})}),this.eventHandlerSetup=!0)},clearEventHandler(){this.eventHandlerSetup&&(this.events.forEach(e=>{document.removeEventListener(e,this.handleDocumentEvent,{passive:!0})}),this.eventHandlerSetup=!1)},setupTimeout(){this.countdownInterval===void 0&&(this.countdownInterval=setInterval(this.updateCountdown,1e3))},clearTimeout(){this.countdownInterval!==void 0&&(clearInterval(this.countdownInterval),this.countdownInterval=void 0)},updateCountdown(){this.countdown===void 0?this.countdown=this.touchBlockerTimeout:(this.countdown-=1,this.countdown<1&&this.showTouchBlocker())},handleDocumentEvent(){this.countdown=this.touchBlockerTimeout,this.show=!1},showTouchBlocker(){this.show=!0,this.clearTimeout()}}};function be(e,t,n,i,o,r){const a=u("IModal");return p(),m(I,{to:"body"},[l(a,{class:"touch-blocker",size:"sm",color:"dark","model-value":o.show,"onUpdate:modelValue":t[0]||(t[0]=c=>r.handleTouchBlockerClick(c))},{default:s(()=>t[1]||(t[1]=[V("img",{class:"logo",src:x},null,-1),V("p",null," Bitte das Display berühren. ",-1)])),_:1},8,["model-value"])])}const ve=v(Ce,[["render",be],["__scopeId","data-v-e4e632d4"]]),we={name:"OpenwbDisplayCardsApp",components:{RouterView:R,DateTime:te,NavBar:ce,LockNavItem:_e,TouchBlocker:ve},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3},mqttTopicsToSubscribe:["openWB/bat/config/configured","openWB/bat/get/power","openWB/bat/get/soc","openWB/chargepoint/+/config","openWB/chargepoint/+/get/charge_state","openWB/chargepoint/+/get/connected_vehicle/+","openWB/chargepoint/+/get/phases_in_use","openWB/chargepoint/+/get/plug_state","openWB/chargepoint/+/get/power","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/set/current","openWB/chargepoint/+/set/manual_lock","openWB/chargepoint/+/set/log","openWB/chargepoint/+/set/rfid","openWB/chargepoint/get/power","openWB/counter/+/get/power","openWB/counter/get/hierarchy","openWB/counter/set/home_consumption","openWB/optional/int_display/theme","openWB/optional/int_display/standby","openWB/optional/rfid/active","openWB/pv/config/configured","openWB/pv/get/power","openWB/system/current_branch","openWB/system/current_commit","openWB/system/ip_address","openWB/system/time","openWB/system/version","openWB/vehicle/+/get/fault_state","openWB/vehicle/+/name","openWB/vehicle/+/soc_module/config","openWB/vehicle/template/charge_template/#"],mqttStore:S(),chartInterval:""}},computed:{changesLocked(){return this.mqttStore.getLockChanges&&this.mqttStore.settings.changesLocked}},created(){this.createConnection()},mounted(){let e=window.location.search;if(e!=""){console.debug("search",e);let t=new URLSearchParams(e);if(t.has("data")){let n=JSON.parse(t.get("data"));Object.entries(n).forEach(([i,o])=>{console.log("updateSetting",i,o),this.mqttStore.updateSetting(i,o)})}}this.doSubscribe(this.mqttTopicsToSubscribe),this.chartInterval=setInterval(this.mqttStore.updateChartData,5e3)},beforeUnmount(){this.doUnsubscribe(this.mqttTopicsToSubscribe),clearInterval(this.chartInterval)},methods:{createConnection(){const{protocol:e,host:t,port:n,endpoint:i,...o}=this.connection,r=`${e}://${t}:${n}${i}`;console.debug("connecting to broker:",r);try{this.client=U.connect(r,o)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId)}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,c)=>{if(console.debug(`Received message "${c}" from topic "${a}"`),c.toString().length>0){let d;try{d=JSON.parse(c.toString())}catch(g){console.debug("Json parsing failed, fallback to string: ",a,g),d=c.toString()}this.mqttStore.addTopic(a,d)}else this.mqttStore.removeTopic(a)})},doSubscribe(e){e.forEach(t=>{this.mqttStore.initTopic(t)}),this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){e.forEach(t=>{this.mqttStore.removeTopic(t)}),this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,n=!0,i=2){console.debug("doPublish",e,t);let o={qos:i,retain:n};this.client.publish(e,JSON.stringify(t),o,r=>{r&&console.error("Publish error",r)})},sendTopicToBroker(e,t=void 0){let n=e.replace("openWB/","openWB/set/");t===void 0&&(t=this.mqttStore.topics[e]),this.doPublish(n,t)},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},sendSystemCommand(e,t={}){this.sendCommand({command:e,data:t})}}};function ye(e,t,n,i,o,r){const a=u("DateTime"),c=u("i-column"),d=u("i-row"),g=u("i-container"),C=u("LockNavItem"),h=u("NavBar"),b=u("TouchBlocker"),f=u("i-layout-aside"),N=u("RouterView"),F=u("i-layout-content"),M=u("i-layout");return p(),m(M,{vertical:""},{default:s(()=>[l(f,{class:"_position:fixed"},{default:s(()=>[l(g,{fluid:"",class:"_margin-bottom:1"},{default:s(()=>[l(d,{center:""},{default:s(()=>[l(c,null,{default:s(()=>[l(a)]),_:1})]),_:1})]),_:1}),l(C),l(h,{"changes-locked":r.changesLocked},null,8,["changes-locked"]),l(b)]),_:1}),l(F,null,{default:s(()=>[l(N,{"changes-locked":r.changesLocked},null,8,["changes-locked"])]),_:1})]),_:1})}const Be=v(we,[["render",ye],["__scopeId","data-v-6c4642a5"]]),Se="modulepreload",ke=function(e){return"/openWB/web/display/themes/cards/"+e},$={},k=function(t,n,i){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));o=Promise.allSettled(n.map(d=>{if(d=ke(d),d in $)return;$[d]=!0;const g=d.endsWith(".css"),C=g?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${C}`))return;const h=document.createElement("link");if(h.rel=g?"stylesheet":Se,g||(h.as="script"),h.crossOrigin="",h.href=d,c&&h.setAttribute("nonce",c),document.head.appendChild(h),g)return new Promise((b,f)=>{h.addEventListener("load",b),h.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${d}`)))})}))}function r(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return o.then(a=>{for(const c of a||[])c.status==="rejected"&&r(c.reason);return t().catch(r)})},We={name:"WelcomeView",data(){return{mqttStore:S()}},computed:{firstView(){if(this.mqttStore.getThemeConfiguration){if(this.mqttStore.getThemeConfiguration.enable_dashboard_view)return"dash-board";if(this.mqttStore.getThemeConfiguration.enable_energy_flow_view)return"energy-flow";if(this.mqttStore.getThemeConfiguration.enable_charge_points_view)return"charge-points";if(this.mqttStore.getThemeConfiguration.enable_status_view)return"status"}}},mounted(){setTimeout(this.selectFirstRoute,3e3)},methods:{selectFirstRoute(){this.firstView?this.$router.push({name:this.firstView}):console.warn("no router view enabled, check your configuration!")}}};function Ve(e,t,n,i,o,r){const a=u("i-card"),c=u("i-column"),d=u("i-row"),g=u("i-container");return p(),m(g,null,{default:s(()=>[l(d,{center:"",middle:""},{default:s(()=>[l(c,null,{default:s(()=>[l(a,{color:"primary"},{header:s(()=>t[0]||(t[0]=[_(" Cards Theme ")])),default:s(()=>[t[1]||(t[1]=V("img",{class:"logo",src:x},null,-1))]),_:1})]),_:1})]),_:1})]),_:1})}const Pe=v(We,[["render",Ve],["__scopeId","data-v-16686e30"]]),Te=H({history:z("/openWB/web/display/themes/cards/"),routes:[{path:"/",name:"welcome",component:Pe},{path:"/DashBoard",name:"dash-board",component:()=>k(()=>import("./DashBoardView-_HZMNhnS.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))},{path:"/EnergyFlow",name:"energy-flow",component:()=>k(()=>import("./EnergyFlowView-BcB2FDT1.js"),__vite__mapDeps([10,1,2,3,4,5,7,11]))},{path:"/ChargePoints",name:"charge-points",component:()=>k(()=>import("./ChargePointsView-CZeUBF37.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,8,13]))},{path:"/Status",name:"status",component:()=>k(()=>import("./StatusView-uYO1gy9a.js"),__vite__mapDeps([14,7,3,2,4,1,5]))}]}),T=G(Be);T.use(K());T.use(Te);T.use(J,{colorMode:"dark",components:Z});T.mount("#app");export{he as C,ue as N,S as u};
diff --git a/packages/modules/display_themes/cards/web/assets/vendor-CZ1MGz7j.js b/packages/modules/display_themes/cards/web/assets/vendor-CZ1MGz7j.js
new file mode 100644
index 0000000000..22c5dcf3e5
--- /dev/null
+++ b/packages/modules/display_themes/cards/web/assets/vendor-CZ1MGz7j.js
@@ -0,0 +1,29 @@
+var Kp=Object.defineProperty;var lu=e=>{throw TypeError(e)};var zp=(e,t,r)=>t in e?Kp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var ze=(e,t,r)=>zp(e,typeof t!="symbol"?t+"":t,r),Ho=(e,t,r)=>t.has(e)||lu("Cannot "+r);var q=(e,t,r)=>(Ho(e,t,"read from private field"),r?r.call(e):t.get(e)),ke=(e,t,r)=>t.has(e)?lu("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Te=(e,t,r,n)=>(Ho(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),Se=(e,t,r)=>(Ho(e,t,"access private method"),r);var Ci=(e,t,r,n)=>({set _(s){Te(e,t,s,r)},get _(){return q(e,t,n)}});const io=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};/**
+* @vue/shared v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**//*! #__NO_SIDE_EFFECTS__ */function fl(e){const t=Object.create(null);for(const r of e.split(","))t[r]=1;return r=>r in t}const Ue={},In=[],Qt=()=>{},Yp=()=>!1,vo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),hl=e=>e.startsWith("onUpdate:"),Ze=Object.assign,dl=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},Gp=Object.prototype.hasOwnProperty,Be=(e,t)=>Gp.call(e,t),Oe=Array.isArray,On=e=>wo(e)==="[object Map]",cf=e=>wo(e)==="[object Set]",Re=e=>typeof e=="function",Ke=e=>typeof e=="string",jr=e=>typeof e=="symbol",$e=e=>e!==null&&typeof e=="object",ff=e=>($e(e)||Re(e))&&Re(e.then)&&Re(e.catch),hf=Object.prototype.toString,wo=e=>hf.call(e),Qp=e=>wo(e).slice(8,-1),df=e=>wo(e)==="[object Object]",pl=e=>Ke(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Zn=fl(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),_o=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},Jp=/-(\w)/g,kt=_o(e=>e.replace(Jp,(t,r)=>r?r.toUpperCase():"")),Xp=/\B([A-Z])/g,Ur=_o(e=>e.replace(Xp,"-$1").toLowerCase()),Eo=_o(e=>e.charAt(0).toUpperCase()+e.slice(1)),Vo=_o(e=>e?`on${Eo(e)}`:""),Lr=(e,t)=>!Object.is(e,t),qo=(e,...t)=>{for(let r=0;r<e.length;r++)e[r](...t)},pf=(e,t,r,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:r})},Zp=e=>{const t=parseFloat(e);return isNaN(t)?e:t},eg=e=>{const t=Ke(e)?Number(e):NaN;return isNaN(t)?e:t};let uu;const gf=()=>uu||(uu=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof io<"u"?io:{});function So(e){if(Oe(e)){const t={};for(let r=0;r<e.length;r++){const n=e[r],s=Ke(n)?ig(n):So(n);if(s)for(const i in s)t[i]=s[i]}return t}else if(Ke(e)||$e(e))return e}const tg=/;(?![^(]*\))/g,rg=/:([^]+)/,ng=/\/\*[^]*?\*\//g;function ig(e){const t={};return e.replace(ng,"").split(tg).forEach(r=>{if(r){const n=r.split(rg);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Ao(e){let t="";if(Ke(e))t=e;else if(Oe(e))for(let r=0;r<e.length;r++){const n=Ao(e[r]);n&&(t+=n+" ")}else if($e(e))for(const r in e)e[r]&&(t+=r+" ");return t.trim()}function xw(e){if(!e)return null;let{class:t,style:r}=e;return t&&!Ke(t)&&(e.class=Ao(t)),r&&(e.style=So(r)),e}const og="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",sg=fl(og);function mf(e){return!!e||e===""}const yf=e=>!!(e&&e.__v_isRef===!0),ag=e=>Ke(e)?e:e==null?"":Oe(e)||$e(e)&&(e.toString===hf||!Re(e.toString))?yf(e)?ag(e.value):JSON.stringify(e,bf,2):String(e),bf=(e,t)=>yf(t)?bf(e,t.value):On(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[n,s],i)=>(r[Ko(n,i)+" =>"]=s,r),{})}:cf(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>Ko(r))}:jr(t)?Ko(t):$e(t)&&!Oe(t)&&!df(t)?String(t):t,Ko=(e,t="")=>{var r;return jr(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/**
+* @vue/reactivity v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let pt;class vf{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=pt,!t&&pt&&(this.index=(pt.scopes||(pt.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,r;if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].pause();for(t=0,r=this.effects.length;t<r;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,r;if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].resume();for(t=0,r=this.effects.length;t<r;t++)this.effects[t].resume()}}run(t){if(this._active){const r=pt;try{return pt=this,t()}finally{pt=r}}}on(){pt=this}off(){pt=this.parent}stop(t){if(this._active){let r,n;for(r=0,n=this.effects.length;r<n;r++)this.effects[r].stop();for(r=0,n=this.cleanups.length;r<n;r++)this.cleanups[r]();if(this.scopes)for(r=0,n=this.scopes.length;r<n;r++)this.scopes[r].stop(!0);if(!this.detached&&this.parent&&!t){const s=this.parent.scopes.pop();s&&s!==this&&(this.parent.scopes[this.index]=s,s.index=this.index)}this.parent=void 0,this._active=!1}}}function wf(e){return new vf(e)}function _f(){return pt}function lg(e,t=!1){pt&&pt.cleanups.push(e)}let We;const zo=new WeakSet;class Ef{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,pt&&pt.active&&pt.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,zo.has(this)&&(zo.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Af(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,cu(this),Tf(this);const t=We,r=Ft;We=this,Ft=!0;try{return this.fn()}finally{If(this),We=t,Ft=r,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)yl(t);this.deps=this.depsTail=void 0,cu(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?zo.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){_s(this)&&this.run()}get dirty(){return _s(this)}}let Sf=0,An;function Af(e){e.flags|=8,e.next=An,An=e}function gl(){Sf++}function ml(){if(--Sf>0)return;let e;for(;An;){let t=An,r;for(;t;)t.flags&1||(t.flags&=-9),t=t.next;for(t=An,An=void 0;t;){if(r=t.next,t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=r}}if(e)throw e}function Tf(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function If(e){let t,r=e.depsTail,n=r;for(;n;){const s=n.prevDep;n.version===-1?(n===r&&(r=s),yl(n),ug(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=s}e.deps=t,e.depsTail=r}function _s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Of(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Of(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===fi))return;e.globalVersion=fi;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!_s(e)){e.flags&=-3;return}const r=We,n=Ft;We=e,Ft=!0;try{Tf(e);const s=e.fn(e._value);(t.version===0||Lr(s,e._value))&&(e._value=s,t.version++)}catch(s){throw t.version++,s}finally{We=r,Ft=n,If(e),e.flags&=-3}}function yl(e,t=!1){const{dep:r,prevSub:n,nextSub:s}=e;if(n&&(n.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=n,e.nextSub=void 0),r.subs===e&&(r.subs=n),!r.subs&&r.computed){r.computed.flags&=-5;for(let i=r.computed.deps;i;i=i.nextDep)yl(i,!0)}!t&&!--r.sc&&r.map&&r.map.delete(r.key)}function ug(e){const{prevDep:t,nextDep:r}=e;t&&(t.nextDep=r,e.prevDep=void 0),r&&(r.prevDep=t,e.nextDep=void 0)}let Ft=!0;const Cf=[];function Dr(){Cf.push(Ft),Ft=!1}function Fr(){const e=Cf.pop();Ft=e===void 0?!0:e}function cu(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const r=We;We=void 0;try{t()}finally{We=r}}}let fi=0;class cg{constructor(t,r){this.sub=t,this.dep=r,this.version=r.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class bl{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.target=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!We||!Ft||We===this.computed)return;let r=this.activeLink;if(r===void 0||r.sub!==We)r=this.activeLink=new cg(We,this),We.deps?(r.prevDep=We.depsTail,We.depsTail.nextDep=r,We.depsTail=r):We.deps=We.depsTail=r,Rf(r);else if(r.version===-1&&(r.version=this.version,r.nextDep)){const n=r.nextDep;n.prevDep=r.prevDep,r.prevDep&&(r.prevDep.nextDep=n),r.prevDep=We.depsTail,r.nextDep=void 0,We.depsTail.nextDep=r,We.depsTail=r,We.deps===r&&(We.deps=n)}return r}trigger(t){this.version++,fi++,this.notify(t)}notify(t){gl();try{for(let r=this.subs;r;r=r.prevSub)r.sub.notify()&&r.sub.dep.notify()}finally{ml()}}}function Rf(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Rf(n)}const r=e.dep.subs;r!==e&&(e.prevSub=r,r&&(r.nextSub=e)),e.dep.subs=e}}const oo=new WeakMap,sn=Symbol(""),Es=Symbol(""),hi=Symbol("");function ft(e,t,r){if(Ft&&We){let n=oo.get(e);n||oo.set(e,n=new Map);let s=n.get(r);s||(n.set(r,s=new bl),s.target=e,s.map=n,s.key=r),s.track()}}function hr(e,t,r,n,s,i){const o=oo.get(e);if(!o){fi++;return}const l=a=>{a&&a.trigger()};if(gl(),t==="clear")o.forEach(l);else{const a=Oe(e),u=a&&pl(r);if(a&&r==="length"){const c=Number(n);o.forEach((f,p)=>{(p==="length"||p===hi||!jr(p)&&p>=c)&&l(f)})}else switch(r!==void 0&&l(o.get(r)),u&&l(o.get(hi)),t){case"add":a?u&&l(o.get("length")):(l(o.get(sn)),On(e)&&l(o.get(Es)));break;case"delete":a||(l(o.get(sn)),On(e)&&l(o.get(Es)));break;case"set":On(e)&&l(o.get(sn));break}}ml()}function fg(e,t){const r=oo.get(e);return r&&r.get(t)}function bn(e){const t=Pe(e);return t===e?t:(ft(t,"iterate",hi),xt(e)?t:t.map(ct))}function To(e){return ft(e=Pe(e),"iterate",hi),e}const hg={__proto__:null,[Symbol.iterator](){return Yo(this,Symbol.iterator,ct)},concat(...e){return bn(this).concat(...e.map(t=>Oe(t)?bn(t):t))},entries(){return Yo(this,"entries",e=>(e[1]=ct(e[1]),e))},every(e,t){return er(this,"every",e,t,void 0,arguments)},filter(e,t){return er(this,"filter",e,t,r=>r.map(ct),arguments)},find(e,t){return er(this,"find",e,t,ct,arguments)},findIndex(e,t){return er(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return er(this,"findLast",e,t,ct,arguments)},findLastIndex(e,t){return er(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return er(this,"forEach",e,t,void 0,arguments)},includes(...e){return Go(this,"includes",e)},indexOf(...e){return Go(this,"indexOf",e)},join(e){return bn(this).join(e)},lastIndexOf(...e){return Go(this,"lastIndexOf",e)},map(e,t){return er(this,"map",e,t,void 0,arguments)},pop(){return Fn(this,"pop")},push(...e){return Fn(this,"push",e)},reduce(e,...t){return fu(this,"reduce",e,t)},reduceRight(e,...t){return fu(this,"reduceRight",e,t)},shift(){return Fn(this,"shift")},some(e,t){return er(this,"some",e,t,void 0,arguments)},splice(...e){return Fn(this,"splice",e)},toReversed(){return bn(this).toReversed()},toSorted(e){return bn(this).toSorted(e)},toSpliced(...e){return bn(this).toSpliced(...e)},unshift(...e){return Fn(this,"unshift",e)},values(){return Yo(this,"values",ct)}};function Yo(e,t,r){const n=To(e),s=n[t]();return n!==e&&!xt(e)&&(s._next=s.next,s.next=()=>{const i=s._next();return i.value&&(i.value=r(i.value)),i}),s}const dg=Array.prototype;function er(e,t,r,n,s,i){const o=To(e),l=o!==e&&!xt(e),a=o[t];if(a!==dg[t]){const f=a.apply(e,i);return l?ct(f):f}let u=r;o!==e&&(l?u=function(f,p){return r.call(this,ct(f),p,e)}:r.length>2&&(u=function(f,p){return r.call(this,f,p,e)}));const c=a.call(o,u,n);return l&&s?s(c):c}function fu(e,t,r,n){const s=To(e);let i=r;return s!==e&&(xt(e)?r.length>3&&(i=function(o,l,a){return r.call(this,o,l,a,e)}):i=function(o,l,a){return r.call(this,o,ct(l),a,e)}),s[t](i,...n)}function Go(e,t,r){const n=Pe(e);ft(n,"iterate",hi);const s=n[t](...r);return(s===-1||s===!1)&&El(r[0])?(r[0]=Pe(r[0]),n[t](...r)):s}function Fn(e,t,r=[]){Dr(),gl();const n=Pe(e)[t].apply(e,r);return ml(),Fr(),n}const pg=fl("__proto__,__v_isRef,__isVue"),xf=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(jr));function gg(e){jr(e)||(e=String(e));const t=Pe(this);return ft(t,"has",e),t.hasOwnProperty(e)}class Pf{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,n){const s=this._isReadonly,i=this._isShallow;if(r==="__v_isReactive")return!s;if(r==="__v_isReadonly")return s;if(r==="__v_isShallow")return i;if(r==="__v_raw")return n===(s?i?Cg:Lf:i?Mf:Bf).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=Oe(t);if(!s){let a;if(o&&(a=hg[r]))return a;if(r==="hasOwnProperty")return gg}const l=Reflect.get(t,r,Je(t)?t:n);return(jr(r)?xf.has(r):pg(r))||(s||ft(t,"get",r),i)?l:Je(l)?o&&pl(r)?l:l.value:$e(l)?s?jf(l):Si(l):l}}class kf extends Pf{constructor(t=!1){super(!1,t)}set(t,r,n,s){let i=t[r];if(!this._isShallow){const a=hn(i);if(!xt(n)&&!hn(n)&&(i=Pe(i),n=Pe(n)),!Oe(t)&&Je(i)&&!Je(n))return a?!1:(i.value=n,!0)}const o=Oe(t)&&pl(r)?Number(r)<t.length:Be(t,r),l=Reflect.set(t,r,n,Je(t)?t:s);return t===Pe(s)&&(o?Lr(n,i)&&hr(t,"set",r,n):hr(t,"add",r,n)),l}deleteProperty(t,r){const n=Be(t,r);t[r];const s=Reflect.deleteProperty(t,r);return s&&n&&hr(t,"delete",r,void 0),s}has(t,r){const n=Reflect.has(t,r);return(!jr(r)||!xf.has(r))&&ft(t,"has",r),n}ownKeys(t){return ft(t,"iterate",Oe(t)?"length":sn),Reflect.ownKeys(t)}}class mg extends Pf{constructor(t=!1){super(!0,t)}set(t,r){return!0}deleteProperty(t,r){return!0}}const yg=new kf,bg=new mg,vg=new kf(!0);const vl=e=>e,Io=e=>Reflect.getPrototypeOf(e);function Ri(e,t,r=!1,n=!1){e=e.__v_raw;const s=Pe(e),i=Pe(t);r||(Lr(t,i)&&ft(s,"get",t),ft(s,"get",i));const{has:o}=Io(s),l=n?vl:r?Al:ct;if(o.call(s,t))return l(e.get(t));if(o.call(s,i))return l(e.get(i));e!==s&&e.get(t)}function xi(e,t=!1){const r=this.__v_raw,n=Pe(r),s=Pe(e);return t||(Lr(e,s)&&ft(n,"has",e),ft(n,"has",s)),e===s?r.has(e):r.has(e)||r.has(s)}function Pi(e,t=!1){return e=e.__v_raw,!t&&ft(Pe(e),"iterate",sn),Reflect.get(e,"size",e)}function hu(e,t=!1){!t&&!xt(e)&&!hn(e)&&(e=Pe(e));const r=Pe(this);return Io(r).has.call(r,e)||(r.add(e),hr(r,"add",e,e)),this}function du(e,t,r=!1){!r&&!xt(t)&&!hn(t)&&(t=Pe(t));const n=Pe(this),{has:s,get:i}=Io(n);let o=s.call(n,e);o||(e=Pe(e),o=s.call(n,e));const l=i.call(n,e);return n.set(e,t),o?Lr(t,l)&&hr(n,"set",e,t):hr(n,"add",e,t),this}function pu(e){const t=Pe(this),{has:r,get:n}=Io(t);let s=r.call(t,e);s||(e=Pe(e),s=r.call(t,e)),n&&n.call(t,e);const i=t.delete(e);return s&&hr(t,"delete",e,void 0),i}function gu(){const e=Pe(this),t=e.size!==0,r=e.clear();return t&&hr(e,"clear",void 0,void 0),r}function ki(e,t){return function(n,s){const i=this,o=i.__v_raw,l=Pe(o),a=t?vl:e?Al:ct;return!e&&ft(l,"iterate",sn),o.forEach((u,c)=>n.call(s,a(u),a(c),i))}}function Bi(e,t,r){return function(...n){const s=this.__v_raw,i=Pe(s),o=On(i),l=e==="entries"||e===Symbol.iterator&&o,a=e==="keys"&&o,u=s[e](...n),c=r?vl:t?Al:ct;return!t&&ft(i,"iterate",a?Es:sn),{next(){const{value:f,done:p}=u.next();return p?{value:f,done:p}:{value:l?[c(f[0]),c(f[1])]:c(f),done:p}},[Symbol.iterator](){return this}}}}function _r(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function wg(){const e={get(i){return Ri(this,i)},get size(){return Pi(this)},has:xi,add:hu,set:du,delete:pu,clear:gu,forEach:ki(!1,!1)},t={get(i){return Ri(this,i,!1,!0)},get size(){return Pi(this)},has:xi,add(i){return hu.call(this,i,!0)},set(i,o){return du.call(this,i,o,!0)},delete:pu,clear:gu,forEach:ki(!1,!0)},r={get(i){return Ri(this,i,!0)},get size(){return Pi(this,!0)},has(i){return xi.call(this,i,!0)},add:_r("add"),set:_r("set"),delete:_r("delete"),clear:_r("clear"),forEach:ki(!0,!1)},n={get(i){return Ri(this,i,!0,!0)},get size(){return Pi(this,!0)},has(i){return xi.call(this,i,!0)},add:_r("add"),set:_r("set"),delete:_r("delete"),clear:_r("clear"),forEach:ki(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Bi(i,!1,!1),r[i]=Bi(i,!0,!1),t[i]=Bi(i,!1,!0),n[i]=Bi(i,!0,!0)}),[e,r,t,n]}const[_g,Eg,Sg,Ag]=wg();function wl(e,t){const r=t?e?Ag:Sg:e?Eg:_g;return(n,s,i)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?n:Reflect.get(Be(r,s)&&s in n?r:n,s,i)}const Tg={get:wl(!1,!1)},Ig={get:wl(!1,!0)},Og={get:wl(!0,!1)};const Bf=new WeakMap,Mf=new WeakMap,Lf=new WeakMap,Cg=new WeakMap;function Rg(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function xg(e){return e.__v_skip||!Object.isExtensible(e)?0:Rg(Qp(e))}function Si(e){return hn(e)?e:_l(e,!1,yg,Tg,Bf)}function Nf(e){return _l(e,!1,vg,Ig,Mf)}function jf(e){return _l(e,!0,bg,Og,Lf)}function _l(e,t,r,n,s){if(!$e(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=s.get(e);if(i)return i;const o=xg(e);if(o===0)return e;const l=new Proxy(e,o===2?n:r);return s.set(e,l),l}function Mr(e){return hn(e)?Mr(e.__v_raw):!!(e&&e.__v_isReactive)}function hn(e){return!!(e&&e.__v_isReadonly)}function xt(e){return!!(e&&e.__v_isShallow)}function El(e){return e?!!e.__v_raw:!1}function Pe(e){const t=e&&e.__v_raw;return t?Pe(t):e}function Sl(e){return!Be(e,"__v_skip")&&Object.isExtensible(e)&&pf(e,"__v_skip",!0),e}const ct=e=>$e(e)?Si(e):e,Al=e=>$e(e)?jf(e):e;function Je(e){return e?e.__v_isRef===!0:!1}function Tl(e){return Uf(e,!1)}function Pg(e){return Uf(e,!0)}function Uf(e,t){return Je(e)?e:new kg(e,t)}class kg{constructor(t,r){this.dep=new bl,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=r?t:Pe(t),this._value=r?t:ct(t),this.__v_isShallow=r}get value(){return this.dep.track(),this._value}set value(t){const r=this._rawValue,n=this.__v_isShallow||xt(t)||hn(t);t=n?t:Pe(t),Lr(t,r)&&(this._rawValue=t,this._value=n?t:ct(t),this.dep.trigger())}}function Cn(e){return Je(e)?e.value:e}const Bg={get:(e,t,r)=>t==="__v_raw"?e:Cn(Reflect.get(e,t,r)),set:(e,t,r,n)=>{const s=e[t];return Je(s)&&!Je(r)?(s.value=r,!0):Reflect.set(e,t,r,n)}};function Df(e){return Mr(e)?e:new Proxy(e,Bg)}function Mg(e){const t=Oe(e)?new Array(e.length):{};for(const r in e)t[r]=Ng(e,r);return t}class Lg{constructor(t,r,n){this._object=t,this._key=r,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return fg(Pe(this._object),this._key)}}function Ng(e,t,r){const n=e[t];return Je(n)?n:new Lg(e,t,r)}class jg{constructor(t,r,n){this.fn=t,this.setter=r,this._value=void 0,this.dep=new bl(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=fi-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!r,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&We!==this)return Af(this),!0}get value(){const t=this.dep.track();return Of(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ug(e,t,r=!1){let n,s;return Re(e)?n=e:(n=e.get,s=e.set),new jg(n,s,r)}const Mi={},so=new WeakMap;let Zr;function Dg(e,t=!1,r=Zr){if(r){let n=so.get(r);n||so.set(r,n=[]),n.push(e)}}function Fg(e,t,r=Ue){const{immediate:n,deep:s,once:i,scheduler:o,augmentJob:l,call:a}=r,u=B=>s?B:xt(B)||s===!1||s===0?ur(B,1):ur(B);let c,f,p,m,y=!1,b=!1;if(Je(e)?(f=()=>e.value,y=xt(e)):Mr(e)?(f=()=>u(e),y=!0):Oe(e)?(b=!0,y=e.some(B=>Mr(B)||xt(B)),f=()=>e.map(B=>{if(Je(B))return B.value;if(Mr(B))return u(B);if(Re(B))return a?a(B,2):B()})):Re(e)?t?f=a?()=>a(e,2):e:f=()=>{if(p){Dr();try{p()}finally{Fr()}}const B=Zr;Zr=c;try{return a?a(e,3,[m]):e(m)}finally{Zr=B}}:f=Qt,t&&s){const B=f,F=s===!0?1/0:s;f=()=>ur(B(),F)}const O=_f(),L=()=>{c.stop(),O&&dl(O.effects,c)};if(i&&t){const B=t;t=(...F)=>{B(...F),L()}}let C=b?new Array(e.length).fill(Mi):Mi;const _=B=>{if(!(!(c.flags&1)||!c.dirty&&!B))if(t){const F=c.run();if(s||y||(b?F.some((k,P)=>Lr(k,C[P])):Lr(F,C))){p&&p();const k=Zr;Zr=c;try{const P=[F,C===Mi?void 0:b&&C[0]===Mi?[]:C,m];a?a(t,3,P):t(...P),C=F}finally{Zr=k}}}else c.run()};return l&&l(_),c=new Ef(f),c.scheduler=o?()=>o(_,!1):_,m=B=>Dg(B,!1,c),p=c.onStop=()=>{const B=so.get(c);if(B){if(a)a(B,4);else for(const F of B)F();so.delete(c)}},t?n?_(!0):C=c.run():o?o(_.bind(null,!0),!0):c.run(),L.pause=c.pause.bind(c),L.resume=c.resume.bind(c),L.stop=L,L}function ur(e,t=1/0,r){if(t<=0||!$e(e)||e.__v_skip||(r=r||new Set,r.has(e)))return e;if(r.add(e),t--,Je(e))ur(e.value,t,r);else if(Oe(e))for(let n=0;n<e.length;n++)ur(e[n],t,r);else if(cf(e)||On(e))e.forEach(n=>{ur(n,t,r)});else if(df(e)){for(const n in e)ur(e[n],t,r);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&ur(e[n],t,r)}return e}/**
+* @vue/runtime-core v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function Ai(e,t,r,n){try{return n?e(...n):e()}catch(s){Oo(s,t,r)}}function Wt(e,t,r,n){if(Re(e)){const s=Ai(e,t,r,n);return s&&ff(s)&&s.catch(i=>{Oo(i,t,r)}),s}if(Oe(e)){const s=[];for(let i=0;i<e.length;i++)s.push(Wt(e[i],t,r,n));return s}}function Oo(e,t,r,n=!0){const s=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||Ue;if(t){let l=t.parent;const a=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${r}`;for(;l;){const c=l.ec;if(c){for(let f=0;f<c.length;f++)if(c[f](e,a,u)===!1)return}l=l.parent}if(i){Dr(),Ai(i,null,10,[e,a,u]),Fr();return}}Wg(e,r,s,n,o)}function Wg(e,t,r,n=!0,s=!1){if(s)throw e;console.error(e)}let di=!1,Ss=!1;const gt=[];let Kt=0;const Rn=[];let xr=null,_n=0;const Ff=Promise.resolve();let Il=null;function Ol(e){const t=Il||Ff;return e?t.then(this?e.bind(this):e):t}function $g(e){let t=di?Kt+1:0,r=gt.length;for(;t<r;){const n=t+r>>>1,s=gt[n],i=pi(s);i<e||i===e&&s.flags&2?t=n+1:r=n}return t}function Cl(e){if(!(e.flags&1)){const t=pi(e),r=gt[gt.length-1];!r||!(e.flags&2)&&t>=pi(r)?gt.push(e):gt.splice($g(t),0,e),e.flags|=1,Wf()}}function Wf(){!di&&!Ss&&(Ss=!0,Il=Ff.then(Hf))}function Hg(e){Oe(e)?Rn.push(...e):xr&&e.id===-1?xr.splice(_n+1,0,e):e.flags&1||(Rn.push(e),e.flags|=1),Wf()}function mu(e,t,r=di?Kt+1:0){for(;r<gt.length;r++){const n=gt[r];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;gt.splice(r,1),r--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function $f(e){if(Rn.length){const t=[...new Set(Rn)].sort((r,n)=>pi(r)-pi(n));if(Rn.length=0,xr){xr.push(...t);return}for(xr=t,_n=0;_n<xr.length;_n++){const r=xr[_n];r.flags&4&&(r.flags&=-2),r.flags&8||r(),r.flags&=-2}xr=null,_n=0}}const pi=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Hf(e){Ss=!1,di=!0;try{for(Kt=0;Kt<gt.length;Kt++){const t=gt[Kt];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Ai(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Kt<gt.length;Kt++){const t=gt[Kt];t&&(t.flags&=-2)}Kt=0,gt.length=0,$f(),di=!1,Il=null,(gt.length||Rn.length)&&Hf()}}let Xe=null,Vf=null;function ao(e){const t=Xe;return Xe=e,Vf=e&&e.type.__scopeId||null,t}function Vg(e,t=Xe,r){if(!t||e._n)return e;const n=(...s)=>{n._d&&Cu(-1);const i=ao(t);let o;try{o=e(...s)}finally{ao(i),n._d&&Cu(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Pw(e,t){if(Xe===null)return e;const r=Bo(Xe),n=e.dirs||(e.dirs=[]);for(let s=0;s<t.length;s++){let[i,o,l,a=Ue]=t[s];i&&(Re(i)&&(i={mounted:i,updated:i}),i.deep&&ur(o),n.push({dir:i,instance:r,value:o,oldValue:void 0,arg:l,modifiers:a}))}return e}function Hr(e,t,r,n){const s=e.dirs,i=t&&t.dirs;for(let o=0;o<s.length;o++){const l=s[o];i&&(l.oldValue=i[o].value);let a=l.dir[n];a&&(Dr(),Wt(a,r,8,[e.el,l,e,t]),Fr())}}const qf=Symbol("_vte"),Kf=e=>e.__isTeleport,ei=e=>e&&(e.disabled||e.disabled===""),qg=e=>e&&(e.defer||e.defer===""),yu=e=>typeof SVGElement<"u"&&e instanceof SVGElement,bu=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,As=(e,t)=>{const r=e&&e.to;return Ke(r)?t?t(r):null:r},Kg={name:"Teleport",__isTeleport:!0,process(e,t,r,n,s,i,o,l,a,u){const{mc:c,pc:f,pbc:p,o:{insert:m,querySelector:y,createText:b,createComment:O}}=u,L=ei(t.props);let{shapeFlag:C,children:_,dynamicChildren:B}=t;if(e==null){const F=t.el=b(""),k=t.anchor=b("");m(F,r,n),m(k,r,n);const P=(D,X)=>{C&16&&(s&&s.isCE&&(s.ce._teleportTarget=D),c(_,D,X,s,i,o,l,a))},j=()=>{const D=t.target=As(t.props,y),X=zf(D,t,b,m);D&&(o!=="svg"&&yu(D)?o="svg":o!=="mathml"&&bu(D)&&(o="mathml"),L||(P(D,X),Vi(t)))};L&&(P(r,k),Vi(t)),qg(t.props)?bt(j,i):j()}else{t.el=e.el,t.targetStart=e.targetStart;const F=t.anchor=e.anchor,k=t.target=e.target,P=t.targetAnchor=e.targetAnchor,j=ei(e.props),D=j?r:k,X=j?F:P;if(o==="svg"||yu(k)?o="svg":(o==="mathml"||bu(k))&&(o="mathml"),B?(p(e.dynamicChildren,B,D,s,i,o,l),Ll(e,t,!0)):a||f(e,t,D,X,s,i,o,l,!1),L)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Li(t,r,F,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const Z=t.target=As(t.props,y);Z&&Li(t,Z,null,u,0)}else j&&Li(t,k,P,u,1);Vi(t)}},remove(e,t,r,{um:n,o:{remove:s}},i){const{shapeFlag:o,children:l,anchor:a,targetStart:u,targetAnchor:c,target:f,props:p}=e;if(f&&(s(u),s(c)),i&&s(a),o&16){const m=i||!ei(p);for(let y=0;y<l.length;y++){const b=l[y];n(b,t,r,m,!!b.dynamicChildren)}}},move:Li,hydrate:zg};function Li(e,t,r,{o:{insert:n},m:s},i=2){i===0&&n(e.targetAnchor,t,r);const{el:o,anchor:l,shapeFlag:a,children:u,props:c}=e,f=i===2;if(f&&n(o,t,r),(!f||ei(c))&&a&16)for(let p=0;p<u.length;p++)s(u[p],t,r,2);f&&n(l,t,r)}function zg(e,t,r,n,s,i,{o:{nextSibling:o,parentNode:l,querySelector:a,insert:u,createText:c}},f){const p=t.target=As(t.props,a);if(p){const m=p._lpa||p.firstChild;if(t.shapeFlag&16)if(ei(t.props))t.anchor=f(o(e),t,l(e),r,n,s,i),t.targetStart=m,t.targetAnchor=m&&o(m);else{t.anchor=o(e);let y=m;for(;y;){if(y&&y.nodeType===8){if(y.data==="teleport start anchor")t.targetStart=y;else if(y.data==="teleport anchor"){t.targetAnchor=y,p._lpa=t.targetAnchor&&o(t.targetAnchor);break}}y=o(y)}t.targetAnchor||zf(p,t,c,u),f(m&&o(m),t,p,r,n,s,i)}Vi(t)}return t.anchor&&o(t.anchor)}const kw=Kg;function Vi(e){const t=e.ctx;if(t&&t.ut){let r=e.targetStart;for(;r&&r!==e.targetAnchor;)r.nodeType===1&&r.setAttribute("data-v-owner",t.uid),r=r.nextSibling;t.ut()}}function zf(e,t,r,n){const s=t.targetStart=r(""),i=t.targetAnchor=r("");return s[qf]=i,e&&(n(s,e),n(i,e)),i}const Pr=Symbol("_leaveCb"),Ni=Symbol("_enterCb");function Yg(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Rl(()=>{e.isMounted=!0}),nh(()=>{e.isUnmounting=!0}),e}const Ot=[Function,Array],Yf={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ot,onEnter:Ot,onAfterEnter:Ot,onEnterCancelled:Ot,onBeforeLeave:Ot,onLeave:Ot,onAfterLeave:Ot,onLeaveCancelled:Ot,onBeforeAppear:Ot,onAppear:Ot,onAfterAppear:Ot,onAppearCancelled:Ot},Gf=e=>{const t=e.subTree;return t.component?Gf(t.component):t},Gg={name:"BaseTransition",props:Yf,setup(e,{slots:t}){const r=Ah(),n=Yg();return()=>{const s=t.default&&Xf(t.default(),!0);if(!s||!s.length)return;const i=Qf(s),o=Pe(e),{mode:l}=o;if(n.isLeaving)return Qo(i);const a=vu(i);if(!a)return Qo(i);let u=Ts(a,o,n,r,p=>u=p);a.type!==mt&&gi(a,u);const c=r.subTree,f=c&&vu(c);if(f&&f.type!==mt&&!tn(a,f)&&Gf(r).type!==mt){const p=Ts(f,o,n,r);if(gi(f,p),l==="out-in"&&a.type!==mt)return n.isLeaving=!0,p.afterLeave=()=>{n.isLeaving=!1,r.job.flags&8||r.update(),delete p.afterLeave},Qo(i);l==="in-out"&&a.type!==mt&&(p.delayLeave=(m,y,b)=>{const O=Jf(n,f);O[String(f.key)]=f,m[Pr]=()=>{y(),m[Pr]=void 0,delete u.delayedLeave},u.delayedLeave=b})}return i}}};function Qf(e){let t=e[0];if(e.length>1){for(const r of e)if(r.type!==mt){t=r;break}}return t}const Qg=Gg;function Jf(e,t){const{leavingVNodes:r}=e;let n=r.get(t.type);return n||(n=Object.create(null),r.set(t.type,n)),n}function Ts(e,t,r,n,s){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:p,onLeave:m,onAfterLeave:y,onLeaveCancelled:b,onBeforeAppear:O,onAppear:L,onAfterAppear:C,onAppearCancelled:_}=t,B=String(e.key),F=Jf(r,e),k=(D,X)=>{D&&Wt(D,n,9,X)},P=(D,X)=>{const Z=X[1];k(D,X),Oe(D)?D.every(S=>S.length<=1)&&Z():D.length<=1&&Z()},j={mode:o,persisted:l,beforeEnter(D){let X=a;if(!r.isMounted)if(i)X=O||a;else return;D[Pr]&&D[Pr](!0);const Z=F[B];Z&&tn(e,Z)&&Z.el[Pr]&&Z.el[Pr](),k(X,[D])},enter(D){let X=u,Z=c,S=f;if(!r.isMounted)if(i)X=L||u,Z=C||c,S=_||f;else return;let z=!1;const ae=D[Ni]=ee=>{z||(z=!0,ee?k(S,[D]):k(Z,[D]),j.delayedLeave&&j.delayedLeave(),D[Ni]=void 0)};X?P(X,[D,ae]):ae()},leave(D,X){const Z=String(e.key);if(D[Ni]&&D[Ni](!0),r.isUnmounting)return X();k(p,[D]);let S=!1;const z=D[Pr]=ae=>{S||(S=!0,X(),ae?k(b,[D]):k(y,[D]),D[Pr]=void 0,F[Z]===e&&delete F[Z])};F[Z]=e,m?P(m,[D,z]):z()},clone(D){const X=Ts(D,t,r,n,s);return s&&s(X),X}};return j}function Qo(e){if(Co(e))return e=Nr(e),e.children=null,e}function vu(e){if(!Co(e))return Kf(e.type)&&e.children?Qf(e.children):e;const{shapeFlag:t,children:r}=e;if(r){if(t&16)return r[0];if(t&32&&Re(r.default))return r.default()}}function gi(e,t){e.shapeFlag&6&&e.component?(e.transition=t,gi(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Xf(e,t=!1,r){let n=[],s=0;for(let i=0;i<e.length;i++){let o=e[i];const l=r==null?o.key:String(r)+String(o.key!=null?o.key:i);o.type===vt?(o.patchFlag&128&&s++,n=n.concat(Xf(o.children,t,l))):(t||o.type!==mt)&&n.push(l!=null?Nr(o,{key:l}):o)}if(s>1)for(let i=0;i<n.length;i++)n[i].patchFlag=-2;return n}/*! #__NO_SIDE_EFFECTS__ */function Zf(e,t){return Re(e)?Ze({name:e.name},t,{setup:e}):e}function eh(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Is(e,t,r,n,s=!1){if(Oe(e)){e.forEach((y,b)=>Is(y,t&&(Oe(t)?t[b]:t),r,n,s));return}if(xn(n)&&!s)return;const i=n.shapeFlag&4?Bo(n.component):n.el,o=s?null:i,{i:l,r:a}=e,u=t&&t.r,c=l.refs===Ue?l.refs={}:l.refs,f=l.setupState,p=Pe(f),m=f===Ue?()=>!1:y=>Be(p,y);if(u!=null&&u!==a&&(Ke(u)?(c[u]=null,m(u)&&(f[u]=null)):Je(u)&&(u.value=null)),Re(a))Ai(a,l,12,[o,c]);else{const y=Ke(a),b=Je(a);if(y||b){const O=()=>{if(e.f){const L=y?m(a)?f[a]:c[a]:a.value;s?Oe(L)&&dl(L,i):Oe(L)?L.includes(i)||L.push(i):y?(c[a]=[i],m(a)&&(f[a]=c[a])):(a.value=[i],e.k&&(c[e.k]=a.value))}else y?(c[a]=o,m(a)&&(f[a]=o)):b&&(a.value=o,e.k&&(c[e.k]=o))};o?(O.id=-1,bt(O,r)):O()}}}const xn=e=>!!e.type.__asyncLoader,Co=e=>e.type.__isKeepAlive;function Jg(e,t){th(e,"a",t)}function Xg(e,t){th(e,"da",t)}function th(e,t,r=it){const n=e.__wdc||(e.__wdc=()=>{let s=r;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Ro(t,n,r),r){let s=r.parent;for(;s&&s.parent;)Co(s.parent.vnode)&&Zg(n,t,r,s),s=s.parent}}function Zg(e,t,r,n){const s=Ro(t,e,n,!0);xl(()=>{dl(n[t],s)},r)}function Ro(e,t,r=it,n=!1){if(r){const s=r[e]||(r[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Dr();const l=Ti(r),a=Wt(t,r,e,o);return l(),Fr(),a});return n?s.unshift(i):s.push(i),i}}const yr=e=>(t,r=it)=>{(!ko||e==="sp")&&Ro(e,(...n)=>t(...n),r)},rh=yr("bm"),Rl=yr("m"),em=yr("bu"),tm=yr("u"),nh=yr("bum"),xl=yr("um"),rm=yr("sp"),nm=yr("rtg"),im=yr("rtc");function om(e,t=it){Ro("ec",e,t)}const Pl="components",sm="directives";function Bw(e,t){return kl(Pl,e,!0,t)||e}const ih=Symbol.for("v-ndc");function Mw(e){return Ke(e)?kl(Pl,e,!1)||e:e||ih}function Lw(e){return kl(sm,e)}function kl(e,t,r=!0,n=!1){const s=Xe||it;if(s){const i=s.type;if(e===Pl){const l=Gm(i,!1);if(l&&(l===t||l===kt(t)||l===Eo(kt(t))))return i}const o=wu(s[e]||i[e],t)||wu(s.appContext[e],t);return!o&&n?i:o}}function wu(e,t){return e&&(e[t]||e[kt(t)]||e[Eo(kt(t))])}function Nw(e,t,r,n){let s;const i=r,o=Oe(e);if(o||Ke(e)){const l=o&&Mr(e);let a=!1;l&&(a=!xt(e),e=To(e)),s=new Array(e.length);for(let u=0,c=e.length;u<c;u++)s[u]=t(a?ct(e[u]):e[u],u,void 0,i)}else if(typeof e=="number"){s=new Array(e);for(let l=0;l<e;l++)s[l]=t(l+1,l,void 0,i)}else if($e(e))if(e[Symbol.iterator])s=Array.from(e,(l,a)=>t(l,a,void 0,i));else{const l=Object.keys(e);s=new Array(l.length);for(let a=0,u=l.length;a<u;a++){const c=l[a];s[a]=t(e[c],c,a,i)}}else s=[];return s}function jw(e,t){for(let r=0;r<t.length;r++){const n=t[r];if(Oe(n))for(let s=0;s<n.length;s++)e[n[s].name]=n[s].fn;else n&&(e[n.name]=n.key?(...s)=>{const i=n.fn(...s);return i&&(i.key=n.key),i}:n.fn)}return e}function Uw(e,t,r={},n,s){if(Xe.ce||Xe.parent&&xn(Xe.parent)&&Xe.parent.ce)return t!=="default"&&(r.name=t),Ps(),ks(vt,null,[wt("slot",r,n&&n())],64);let i=e[t];i&&i._c&&(i._d=!1),Ps();const o=i&&oh(i(r)),l=ks(vt,{key:(r.key||o&&o.key||`_${t}`)+(!o&&n?"_fb":"")},o||(n?n():[]),o&&e._===1?64:-2);return!s&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l}function oh(e){return e.some(t=>yi(t)?!(t.type===mt||t.type===vt&&!oh(t.children)):!0)?e:null}const Os=e=>e?Th(e)?Bo(e):Os(e.parent):null,ti=Ze(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Os(e.parent),$root:e=>Os(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Bl(e),$forceUpdate:e=>e.f||(e.f=()=>{Cl(e.update)}),$nextTick:e=>e.n||(e.n=Ol.bind(e.proxy)),$watch:e=>Rm.bind(e)}),Jo=(e,t)=>e!==Ue&&!e.__isScriptSetup&&Be(e,t),am={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:r,setupState:n,data:s,props:i,accessCache:o,type:l,appContext:a}=e;let u;if(t[0]!=="$"){const m=o[t];if(m!==void 0)switch(m){case 1:return n[t];case 2:return s[t];case 4:return r[t];case 3:return i[t]}else{if(Jo(n,t))return o[t]=1,n[t];if(s!==Ue&&Be(s,t))return o[t]=2,s[t];if((u=e.propsOptions[0])&&Be(u,t))return o[t]=3,i[t];if(r!==Ue&&Be(r,t))return o[t]=4,r[t];Cs&&(o[t]=0)}}const c=ti[t];let f,p;if(c)return t==="$attrs"&&ft(e.attrs,"get",""),c(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(r!==Ue&&Be(r,t))return o[t]=4,r[t];if(p=a.config.globalProperties,Be(p,t))return p[t]},set({_:e},t,r){const{data:n,setupState:s,ctx:i}=e;return Jo(s,t)?(s[t]=r,!0):n!==Ue&&Be(n,t)?(n[t]=r,!0):Be(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:n,appContext:s,propsOptions:i}},o){let l;return!!r[o]||e!==Ue&&Be(e,o)||Jo(t,o)||(l=i[0])&&Be(l,o)||Be(n,o)||Be(ti,o)||Be(s.config.globalProperties,o)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:Be(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function _u(e){return Oe(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}let Cs=!0;function lm(e){const t=Bl(e),r=e.proxy,n=e.ctx;Cs=!1,t.beforeCreate&&Eu(t.beforeCreate,e,"bc");const{data:s,computed:i,methods:o,watch:l,provide:a,inject:u,created:c,beforeMount:f,mounted:p,beforeUpdate:m,updated:y,activated:b,deactivated:O,beforeDestroy:L,beforeUnmount:C,destroyed:_,unmounted:B,render:F,renderTracked:k,renderTriggered:P,errorCaptured:j,serverPrefetch:D,expose:X,inheritAttrs:Z,components:S,directives:z,filters:ae}=t;if(u&&um(u,n,null),o)for(const ne in o){const G=o[ne];Re(G)&&(n[ne]=G.bind(r))}if(s){const ne=s.call(r,r);$e(ne)&&(e.data=Si(ne))}if(Cs=!0,i)for(const ne in i){const G=i[ne],de=Re(G)?G.bind(r,r):Re(G.get)?G.get.bind(r,r):Qt,ce=!Re(G)&&Re(G.set)?G.set.bind(r):Qt,be=Rt({get:de,set:ce});Object.defineProperty(n,ne,{enumerable:!0,configurable:!0,get:()=>be.value,set:A=>be.value=A})}if(l)for(const ne in l)sh(l[ne],n,r,ne);if(a){const ne=Re(a)?a.call(r):a;Reflect.ownKeys(ne).forEach(G=>{qi(G,ne[G])})}c&&Eu(c,e,"c");function le(ne,G){Oe(G)?G.forEach(de=>ne(de.bind(r))):G&&ne(G.bind(r))}if(le(rh,f),le(Rl,p),le(em,m),le(tm,y),le(Jg,b),le(Xg,O),le(om,j),le(im,k),le(nm,P),le(nh,C),le(xl,B),le(rm,D),Oe(X))if(X.length){const ne=e.exposed||(e.exposed={});X.forEach(G=>{Object.defineProperty(ne,G,{get:()=>r[G],set:de=>r[G]=de})})}else e.exposed||(e.exposed={});F&&e.render===Qt&&(e.render=F),Z!=null&&(e.inheritAttrs=Z),S&&(e.components=S),z&&(e.directives=z),D&&eh(e)}function um(e,t,r=Qt){Oe(e)&&(e=Rs(e));for(const n in e){const s=e[n];let i;$e(s)?"default"in s?i=Jt(s.from||n,s.default,!0):i=Jt(s.from||n):i=Jt(s),Je(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[n]=i}}function Eu(e,t,r){Wt(Oe(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,r)}function sh(e,t,r,n){let s=n.includes(".")?bh(r,n):()=>r[n];if(Ke(e)){const i=t[e];Re(i)&&ri(s,i)}else if(Re(e))ri(s,e.bind(r));else if($e(e))if(Oe(e))e.forEach(i=>sh(i,t,r,n));else{const i=Re(e.handler)?e.handler.bind(r):t[e.handler];Re(i)&&ri(s,i,e)}}function Bl(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:s,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let a;return l?a=l:!s.length&&!r&&!n?a=t:(a={},s.length&&s.forEach(u=>lo(a,u,o,!0)),lo(a,t,o)),$e(t)&&i.set(t,a),a}function lo(e,t,r,n=!1){const{mixins:s,extends:i}=t;i&&lo(e,i,r,!0),s&&s.forEach(o=>lo(e,o,r,!0));for(const o in t)if(!(n&&o==="expose")){const l=cm[o]||r&&r[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const cm={data:Su,props:Au,emits:Au,methods:Gn,computed:Gn,beforeCreate:dt,created:dt,beforeMount:dt,mounted:dt,beforeUpdate:dt,updated:dt,beforeDestroy:dt,beforeUnmount:dt,destroyed:dt,unmounted:dt,activated:dt,deactivated:dt,errorCaptured:dt,serverPrefetch:dt,components:Gn,directives:Gn,watch:hm,provide:Su,inject:fm};function Su(e,t){return t?e?function(){return Ze(Re(e)?e.call(this,this):e,Re(t)?t.call(this,this):t)}:t:e}function fm(e,t){return Gn(Rs(e),Rs(t))}function Rs(e){if(Oe(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function dt(e,t){return e?[...new Set([].concat(e,t))]:t}function Gn(e,t){return e?Ze(Object.create(null),e,t):t}function Au(e,t){return e?Oe(e)&&Oe(t)?[...new Set([...e,...t])]:Ze(Object.create(null),_u(e),_u(t??{})):t}function hm(e,t){if(!e)return t;if(!t)return e;const r=Ze(Object.create(null),e);for(const n in t)r[n]=dt(e[n],t[n]);return r}function ah(){return{app:null,config:{isNativeTag:Yp,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let dm=0;function pm(e,t){return function(n,s=null){Re(n)||(n=Ze({},n)),s!=null&&!$e(s)&&(s=null);const i=ah(),o=new WeakSet,l=[];let a=!1;const u=i.app={_uid:dm++,_component:n,_props:s,_container:null,_context:i,_instance:null,version:Jm,get config(){return i.config},set config(c){},use(c,...f){return o.has(c)||(c&&Re(c.install)?(o.add(c),c.install(u,...f)):Re(c)&&(o.add(c),c(u,...f))),u},mixin(c){return i.mixins.includes(c)||i.mixins.push(c),u},component(c,f){return f?(i.components[c]=f,u):i.components[c]},directive(c,f){return f?(i.directives[c]=f,u):i.directives[c]},mount(c,f,p){if(!a){const m=u._ceVNode||wt(n,s);return m.appContext=i,p===!0?p="svg":p===!1&&(p=void 0),f&&t?t(m,c):e(m,c,p),a=!0,u._container=c,c.__vue_app__=u,Bo(m.component)}},onUnmount(c){l.push(c)},unmount(){a&&(Wt(l,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(c,f){return i.provides[c]=f,u},runWithContext(c){const f=an;an=u;try{return c()}finally{an=f}}};return u}}let an=null;function qi(e,t){if(it){let r=it.provides;const n=it.parent&&it.parent.provides;n===r&&(r=it.provides=Object.create(n)),r[e]=t}}function Jt(e,t,r=!1){const n=it||Xe;if(n||an){const s=an?an._context.provides:n?n.parent==null?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(s&&e in s)return s[e];if(arguments.length>1)return r&&Re(t)?t.call(n&&n.proxy):t}}function gm(){return!!(it||Xe||an)}const lh={},uh=()=>Object.create(lh),ch=e=>Object.getPrototypeOf(e)===lh;function mm(e,t,r,n=!1){const s={},i=uh();e.propsDefaults=Object.create(null),fh(e,t,s,i);for(const o in e.propsOptions[0])o in s||(s[o]=void 0);r?e.props=n?s:Nf(s):e.type.props?e.props=s:e.props=i,e.attrs=i}function ym(e,t,r,n){const{props:s,attrs:i,vnode:{patchFlag:o}}=e,l=Pe(s),[a]=e.propsOptions;let u=!1;if((n||o>0)&&!(o&16)){if(o&8){const c=e.vnode.dynamicProps;for(let f=0;f<c.length;f++){let p=c[f];if(xo(e.emitsOptions,p))continue;const m=t[p];if(a)if(Be(i,p))m!==i[p]&&(i[p]=m,u=!0);else{const y=kt(p);s[y]=xs(a,l,y,m,e,!1)}else m!==i[p]&&(i[p]=m,u=!0)}}}else{fh(e,t,s,i)&&(u=!0);let c;for(const f in l)(!t||!Be(t,f)&&((c=Ur(f))===f||!Be(t,c)))&&(a?r&&(r[f]!==void 0||r[c]!==void 0)&&(s[f]=xs(a,l,f,void 0,e,!0)):delete s[f]);if(i!==l)for(const f in i)(!t||!Be(t,f))&&(delete i[f],u=!0)}u&&hr(e.attrs,"set","")}function fh(e,t,r,n){const[s,i]=e.propsOptions;let o=!1,l;if(t)for(let a in t){if(Zn(a))continue;const u=t[a];let c;s&&Be(s,c=kt(a))?!i||!i.includes(c)?r[c]=u:(l||(l={}))[c]=u:xo(e.emitsOptions,a)||(!(a in n)||u!==n[a])&&(n[a]=u,o=!0)}if(i){const a=Pe(r),u=l||Ue;for(let c=0;c<i.length;c++){const f=i[c];r[f]=xs(s,a,f,u[f],e,!Be(u,f))}}return o}function xs(e,t,r,n,s,i){const o=e[r];if(o!=null){const l=Be(o,"default");if(l&&n===void 0){const a=o.default;if(o.type!==Function&&!o.skipFactory&&Re(a)){const{propsDefaults:u}=s;if(r in u)n=u[r];else{const c=Ti(s);n=u[r]=a.call(null,t),c()}}else n=a;s.ce&&s.ce._setProp(r,n)}o[0]&&(i&&!l?n=!1:o[1]&&(n===""||n===Ur(r))&&(n=!0))}return n}const bm=new WeakMap;function hh(e,t,r=!1){const n=r?bm:t.propsCache,s=n.get(e);if(s)return s;const i=e.props,o={},l=[];let a=!1;if(!Re(e)){const c=f=>{a=!0;const[p,m]=hh(f,t,!0);Ze(o,p),m&&l.push(...m)};!r&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!i&&!a)return $e(e)&&n.set(e,In),In;if(Oe(i))for(let c=0;c<i.length;c++){const f=kt(i[c]);Tu(f)&&(o[f]=Ue)}else if(i)for(const c in i){const f=kt(c);if(Tu(f)){const p=i[c],m=o[f]=Oe(p)||Re(p)?{type:p}:Ze({},p),y=m.type;let b=!1,O=!0;if(Oe(y))for(let L=0;L<y.length;++L){const C=y[L],_=Re(C)&&C.name;if(_==="Boolean"){b=!0;break}else _==="String"&&(O=!1)}else b=Re(y)&&y.name==="Boolean";m[0]=b,m[1]=O,(b||Be(m,"default"))&&l.push(f)}}const u=[o,l];return $e(e)&&n.set(e,u),u}function Tu(e){return e[0]!=="$"&&!Zn(e)}const dh=e=>e[0]==="_"||e==="$stable",Ml=e=>Oe(e)?e.map(zt):[zt(e)],vm=(e,t,r)=>{if(t._n)return t;const n=Vg((...s)=>Ml(t(...s)),r);return n._c=!1,n},ph=(e,t,r)=>{const n=e._ctx;for(const s in e){if(dh(s))continue;const i=e[s];if(Re(i))t[s]=vm(s,i,n);else if(i!=null){const o=Ml(i);t[s]=()=>o}}},gh=(e,t)=>{const r=Ml(t);e.slots.default=()=>r},mh=(e,t,r)=>{for(const n in t)(r||n!=="_")&&(e[n]=t[n])},wm=(e,t,r)=>{const n=e.slots=uh();if(e.vnode.shapeFlag&32){const s=t._;s?(mh(n,t,r),r&&pf(n,"_",s,!0)):ph(t,n)}else t&&gh(e,t)},_m=(e,t,r)=>{const{vnode:n,slots:s}=e;let i=!0,o=Ue;if(n.shapeFlag&32){const l=t._;l?r&&l===1?i=!1:mh(s,t,r):(i=!t.$stable,ph(t,s)),o=t}else t&&(gh(e,t),o={default:1});if(i)for(const l in s)!dh(l)&&o[l]==null&&delete s[l]},bt=Nm;function Em(e){return Sm(e)}function Sm(e,t){const r=gf();r.__VUE__=!0;const{insert:n,remove:s,patchProp:i,createElement:o,createText:l,createComment:a,setText:u,setElementText:c,parentNode:f,nextSibling:p,setScopeId:m=Qt,insertStaticContent:y}=e,b=(T,x,v,U=null,M=null,Y=null,J=void 0,N=null,$=!!x.dynamicChildren)=>{if(T===x)return;T&&!tn(T,x)&&(U=E(T),A(T,M,Y,!0),T=null),x.patchFlag===-2&&($=!1,x.dynamicChildren=null);const{type:R,ref:H,shapeFlag:V}=x;switch(R){case Po:O(T,x,v,U);break;case mt:L(T,x,v,U);break;case Ki:T==null&&C(x,v,U,J);break;case vt:S(T,x,v,U,M,Y,J,N,$);break;default:V&1?F(T,x,v,U,M,Y,J,N,$):V&6?z(T,x,v,U,M,Y,J,N,$):(V&64||V&128)&&R.process(T,x,v,U,M,Y,J,N,$,re)}H!=null&&M&&Is(H,T&&T.ref,Y,x||T,!x)},O=(T,x,v,U)=>{if(T==null)n(x.el=l(x.children),v,U);else{const M=x.el=T.el;x.children!==T.children&&u(M,x.children)}},L=(T,x,v,U)=>{T==null?n(x.el=a(x.children||""),v,U):x.el=T.el},C=(T,x,v,U)=>{[T.el,T.anchor]=y(T.children,x,v,U,T.el,T.anchor)},_=({el:T,anchor:x},v,U)=>{let M;for(;T&&T!==x;)M=p(T),n(T,v,U),T=M;n(x,v,U)},B=({el:T,anchor:x})=>{let v;for(;T&&T!==x;)v=p(T),s(T),T=v;s(x)},F=(T,x,v,U,M,Y,J,N,$)=>{x.type==="svg"?J="svg":x.type==="math"&&(J="mathml"),T==null?k(x,v,U,M,Y,J,N,$):D(T,x,M,Y,J,N,$)},k=(T,x,v,U,M,Y,J,N)=>{let $,R;const{props:H,shapeFlag:V,transition:te,dirs:d}=T;if($=T.el=o(T.type,Y,H&&H.is,H),V&8?c($,T.children):V&16&&j(T.children,$,null,U,M,Xo(T,Y),J,N),d&&Hr(T,null,U,"created"),P($,T,T.scopeId,J,U),H){for(const g in H)g!=="value"&&!Zn(g)&&i($,g,null,H[g],Y,U);"value"in H&&i($,"value",null,H.value,Y),(R=H.onVnodeBeforeMount)&&Ht(R,U,T)}d&&Hr(T,null,U,"beforeMount");const h=Am(M,te);h&&te.beforeEnter($),n($,x,v),((R=H&&H.onVnodeMounted)||h||d)&&bt(()=>{R&&Ht(R,U,T),h&&te.enter($),d&&Hr(T,null,U,"mounted")},M)},P=(T,x,v,U,M)=>{if(v&&m(T,v),U)for(let Y=0;Y<U.length;Y++)m(T,U[Y]);if(M){let Y=M.subTree;if(x===Y||wh(Y.type)&&(Y.ssContent===x||Y.ssFallback===x)){const J=M.vnode;P(T,J,J.scopeId,J.slotScopeIds,M.parent)}}},j=(T,x,v,U,M,Y,J,N,$=0)=>{for(let R=$;R<T.length;R++){const H=T[R]=N?kr(T[R]):zt(T[R]);b(null,H,x,v,U,M,Y,J,N)}},D=(T,x,v,U,M,Y,J)=>{const N=x.el=T.el;let{patchFlag:$,dynamicChildren:R,dirs:H}=x;$|=T.patchFlag&16;const V=T.props||Ue,te=x.props||Ue;let d;if(v&&Vr(v,!1),(d=te.onVnodeBeforeUpdate)&&Ht(d,v,x,T),H&&Hr(x,T,v,"beforeUpdate"),v&&Vr(v,!0),(V.innerHTML&&te.innerHTML==null||V.textContent&&te.textContent==null)&&c(N,""),R?X(T.dynamicChildren,R,N,v,U,Xo(x,M),Y):J||G(T,x,N,null,v,U,Xo(x,M),Y,!1),$>0){if($&16)Z(N,V,te,v,M);else if($&2&&V.class!==te.class&&i(N,"class",null,te.class,M),$&4&&i(N,"style",V.style,te.style,M),$&8){const h=x.dynamicProps;for(let g=0;g<h.length;g++){const w=h[g],W=V[w],Q=te[w];(Q!==W||w==="value")&&i(N,w,W,Q,M,v)}}$&1&&T.children!==x.children&&c(N,x.children)}else!J&&R==null&&Z(N,V,te,v,M);((d=te.onVnodeUpdated)||H)&&bt(()=>{d&&Ht(d,v,x,T),H&&Hr(x,T,v,"updated")},U)},X=(T,x,v,U,M,Y,J)=>{for(let N=0;N<x.length;N++){const $=T[N],R=x[N],H=$.el&&($.type===vt||!tn($,R)||$.shapeFlag&70)?f($.el):v;b($,R,H,null,U,M,Y,J,!0)}},Z=(T,x,v,U,M)=>{if(x!==v){if(x!==Ue)for(const Y in x)!Zn(Y)&&!(Y in v)&&i(T,Y,x[Y],null,M,U);for(const Y in v){if(Zn(Y))continue;const J=v[Y],N=x[Y];J!==N&&Y!=="value"&&i(T,Y,N,J,M,U)}"value"in v&&i(T,"value",x.value,v.value,M)}},S=(T,x,v,U,M,Y,J,N,$)=>{const R=x.el=T?T.el:l(""),H=x.anchor=T?T.anchor:l("");let{patchFlag:V,dynamicChildren:te,slotScopeIds:d}=x;d&&(N=N?N.concat(d):d),T==null?(n(R,v,U),n(H,v,U),j(x.children||[],v,H,M,Y,J,N,$)):V>0&&V&64&&te&&T.dynamicChildren?(X(T.dynamicChildren,te,v,M,Y,J,N),(x.key!=null||M&&x===M.subTree)&&Ll(T,x,!0)):G(T,x,v,H,M,Y,J,N,$)},z=(T,x,v,U,M,Y,J,N,$)=>{x.slotScopeIds=N,T==null?x.shapeFlag&512?M.ctx.activate(x,v,U,J,$):ae(x,v,U,M,Y,J,$):ee(T,x,$)},ae=(T,x,v,U,M,Y,J)=>{const N=T.component=Vm(T,U,M);if(Co(T)&&(N.ctx.renderer=re),qm(N,!1,J),N.asyncDep){if(M&&M.registerDep(N,le,J),!T.el){const $=N.subTree=wt(mt);L(null,$,x,v)}}else le(N,T,x,v,M,Y,J)},ee=(T,x,v)=>{const U=x.component=T.component;if(Mm(T,x,v))if(U.asyncDep&&!U.asyncResolved){ne(U,x,v);return}else U.next=x,U.update();else x.el=T.el,U.vnode=x},le=(T,x,v,U,M,Y,J)=>{const N=()=>{if(T.isMounted){let{next:V,bu:te,u:d,parent:h,vnode:g}=T;{const Ee=yh(T);if(Ee){V&&(V.el=g.el,ne(T,V,J)),Ee.asyncDep.then(()=>{T.isUnmounted||N()});return}}let w=V,W;Vr(T,!1),V?(V.el=g.el,ne(T,V,J)):V=g,te&&qo(te),(W=V.props&&V.props.onVnodeBeforeUpdate)&&Ht(W,h,V,g),Vr(T,!0);const Q=Zo(T),ue=T.subTree;T.subTree=Q,b(ue,Q,f(ue.el),E(ue),T,M,Y),V.el=Q.el,w===null&&Lm(T,Q.el),d&&bt(d,M),(W=V.props&&V.props.onVnodeUpdated)&&bt(()=>Ht(W,h,V,g),M)}else{let V;const{el:te,props:d}=x,{bm:h,m:g,parent:w,root:W,type:Q}=T,ue=xn(x);if(Vr(T,!1),h&&qo(h),!ue&&(V=d&&d.onVnodeBeforeMount)&&Ht(V,w,x),Vr(T,!0),te&&se){const Ee=()=>{T.subTree=Zo(T),se(te,T.subTree,T,M,null)};ue&&Q.__asyncHydrate?Q.__asyncHydrate(te,T,Ee):Ee()}else{W.ce&&W.ce._injectChildStyle(Q);const Ee=T.subTree=Zo(T);b(null,Ee,v,U,T,M,Y),x.el=Ee.el}if(g&&bt(g,M),!ue&&(V=d&&d.onVnodeMounted)){const Ee=x;bt(()=>Ht(V,w,Ee),M)}(x.shapeFlag&256||w&&xn(w.vnode)&&w.vnode.shapeFlag&256)&&T.a&&bt(T.a,M),T.isMounted=!0,x=v=U=null}};T.scope.on();const $=T.effect=new Ef(N);T.scope.off();const R=T.update=$.run.bind($),H=T.job=$.runIfDirty.bind($);H.i=T,H.id=T.uid,$.scheduler=()=>Cl(H),Vr(T,!0),R()},ne=(T,x,v)=>{x.component=T;const U=T.vnode.props;T.vnode=x,T.next=null,ym(T,x.props,U,v),_m(T,x.children,v),Dr(),mu(T),Fr()},G=(T,x,v,U,M,Y,J,N,$=!1)=>{const R=T&&T.children,H=T?T.shapeFlag:0,V=x.children,{patchFlag:te,shapeFlag:d}=x;if(te>0){if(te&128){ce(R,V,v,U,M,Y,J,N,$);return}else if(te&256){de(R,V,v,U,M,Y,J,N,$);return}}d&8?(H&16&&fe(R,M,Y),V!==R&&c(v,V)):H&16?d&16?ce(R,V,v,U,M,Y,J,N,$):fe(R,M,Y,!0):(H&8&&c(v,""),d&16&&j(V,v,U,M,Y,J,N,$))},de=(T,x,v,U,M,Y,J,N,$)=>{T=T||In,x=x||In;const R=T.length,H=x.length,V=Math.min(R,H);let te;for(te=0;te<V;te++){const d=x[te]=$?kr(x[te]):zt(x[te]);b(T[te],d,v,null,M,Y,J,N,$)}R>H?fe(T,M,Y,!0,!1,V):j(x,v,U,M,Y,J,N,$,V)},ce=(T,x,v,U,M,Y,J,N,$)=>{let R=0;const H=x.length;let V=T.length-1,te=H-1;for(;R<=V&&R<=te;){const d=T[R],h=x[R]=$?kr(x[R]):zt(x[R]);if(tn(d,h))b(d,h,v,null,M,Y,J,N,$);else break;R++}for(;R<=V&&R<=te;){const d=T[V],h=x[te]=$?kr(x[te]):zt(x[te]);if(tn(d,h))b(d,h,v,null,M,Y,J,N,$);else break;V--,te--}if(R>V){if(R<=te){const d=te+1,h=d<H?x[d].el:U;for(;R<=te;)b(null,x[R]=$?kr(x[R]):zt(x[R]),v,h,M,Y,J,N,$),R++}}else if(R>te)for(;R<=V;)A(T[R],M,Y,!0),R++;else{const d=R,h=R,g=new Map;for(R=h;R<=te;R++){const _e=x[R]=$?kr(x[R]):zt(x[R]);_e.key!=null&&g.set(_e.key,R)}let w,W=0;const Q=te-h+1;let ue=!1,Ee=0;const Ce=new Array(Q);for(R=0;R<Q;R++)Ce[R]=0;for(R=d;R<=V;R++){const _e=T[R];if(W>=Q){A(_e,M,Y,!0);continue}let Ae;if(_e.key!=null)Ae=g.get(_e.key);else for(w=h;w<=te;w++)if(Ce[w-h]===0&&tn(_e,x[w])){Ae=w;break}Ae===void 0?A(_e,M,Y,!0):(Ce[Ae-h]=R+1,Ae>=Ee?Ee=Ae:ue=!0,b(_e,x[Ae],v,null,M,Y,J,N,$),W++)}const xe=ue?Tm(Ce):In;for(w=xe.length-1,R=Q-1;R>=0;R--){const _e=h+R,Ae=x[_e],Ie=_e+1<H?x[_e+1].el:U;Ce[R]===0?b(null,Ae,v,Ie,M,Y,J,N,$):ue&&(w<0||R!==xe[w]?be(Ae,v,Ie,2):w--)}}},be=(T,x,v,U,M=null)=>{const{el:Y,type:J,transition:N,children:$,shapeFlag:R}=T;if(R&6){be(T.component.subTree,x,v,U);return}if(R&128){T.suspense.move(x,v,U);return}if(R&64){J.move(T,x,v,re);return}if(J===vt){n(Y,x,v);for(let V=0;V<$.length;V++)be($[V],x,v,U);n(T.anchor,x,v);return}if(J===Ki){_(T,x,v);return}if(U!==2&&R&1&&N)if(U===0)N.beforeEnter(Y),n(Y,x,v),bt(()=>N.enter(Y),M);else{const{leave:V,delayLeave:te,afterLeave:d}=N,h=()=>n(Y,x,v),g=()=>{V(Y,()=>{h(),d&&d()})};te?te(Y,h,g):g()}else n(Y,x,v)},A=(T,x,v,U=!1,M=!1)=>{const{type:Y,props:J,ref:N,children:$,dynamicChildren:R,shapeFlag:H,patchFlag:V,dirs:te,cacheIndex:d}=T;if(V===-2&&(M=!1),N!=null&&Is(N,null,v,T,!0),d!=null&&(x.renderCache[d]=void 0),H&256){x.ctx.deactivate(T);return}const h=H&1&&te,g=!xn(T);let w;if(g&&(w=J&&J.onVnodeBeforeUnmount)&&Ht(w,x,T),H&6)we(T.component,v,U);else{if(H&128){T.suspense.unmount(v,U);return}h&&Hr(T,null,x,"beforeUnmount"),H&64?T.type.remove(T,x,v,re,U):R&&!R.hasOnce&&(Y!==vt||V>0&&V&64)?fe(R,x,v,!1,!0):(Y===vt&&V&384||!M&&H&16)&&fe($,x,v),U&&ie(T)}(g&&(w=J&&J.onVnodeUnmounted)||h)&&bt(()=>{w&&Ht(w,x,T),h&&Hr(T,null,x,"unmounted")},v)},ie=T=>{const{type:x,el:v,anchor:U,transition:M}=T;if(x===vt){he(v,U);return}if(x===Ki){B(T);return}const Y=()=>{s(v),M&&!M.persisted&&M.afterLeave&&M.afterLeave()};if(T.shapeFlag&1&&M&&!M.persisted){const{leave:J,delayLeave:N}=M,$=()=>J(v,Y);N?N(T.el,Y,$):$()}else Y()},he=(T,x)=>{let v;for(;T!==x;)v=p(T),s(T),T=v;s(x)},we=(T,x,v)=>{const{bum:U,scope:M,job:Y,subTree:J,um:N,m:$,a:R}=T;Iu($),Iu(R),U&&qo(U),M.stop(),Y&&(Y.flags|=8,A(J,T,x,v)),N&&bt(N,x),bt(()=>{T.isUnmounted=!0},x),x&&x.pendingBranch&&!x.isUnmounted&&T.asyncDep&&!T.asyncResolved&&T.suspenseId===x.pendingId&&(x.deps--,x.deps===0&&x.resolve())},fe=(T,x,v,U=!1,M=!1,Y=0)=>{for(let J=Y;J<T.length;J++)A(T[J],x,v,U,M)},E=T=>{if(T.shapeFlag&6)return E(T.component.subTree);if(T.shapeFlag&128)return T.suspense.next();const x=p(T.anchor||T.el),v=x&&x[qf];return v?p(v):x};let I=!1;const K=(T,x,v)=>{T==null?x._vnode&&A(x._vnode,null,null,!0):b(x._vnode||null,T,x,null,null,null,v),x._vnode=T,I||(I=!0,mu(),$f(),I=!1)},re={p:b,um:A,m:be,r:ie,mt:ae,mc:j,pc:G,pbc:X,n:E,o:e};let oe,se;return{render:K,hydrate:oe,createApp:pm(K,oe)}}function Xo({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function Vr({effect:e,job:t},r){r?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Am(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ll(e,t,r=!1){const n=e.children,s=t.children;if(Oe(n)&&Oe(s))for(let i=0;i<n.length;i++){const o=n[i];let l=s[i];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=s[i]=kr(s[i]),l.el=o.el),!r&&l.patchFlag!==-2&&Ll(o,l)),l.type===Po&&(l.el=o.el)}}function Tm(e){const t=e.slice(),r=[0];let n,s,i,o,l;const a=e.length;for(n=0;n<a;n++){const u=e[n];if(u!==0){if(s=r[r.length-1],e[s]<u){t[n]=s,r.push(n);continue}for(i=0,o=r.length-1;i<o;)l=i+o>>1,e[r[l]]<u?i=l+1:o=l;u<e[r[i]]&&(i>0&&(t[n]=r[i-1]),r[i]=n)}}for(i=r.length,o=r[i-1];i-- >0;)r[i]=o,o=t[o];return r}function yh(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:yh(t)}function Iu(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const Im=Symbol.for("v-scx"),Om=()=>Jt(Im);function Cm(e,t){return Nl(e,null,{flush:"post"})}function ri(e,t,r){return Nl(e,t,r)}function Nl(e,t,r=Ue){const{immediate:n,deep:s,flush:i,once:o}=r,l=Ze({},r);let a;if(ko)if(i==="sync"){const p=Om();a=p.__watcherHandles||(p.__watcherHandles=[])}else if(!t||n)l.once=!0;else{const p=()=>{};return p.stop=Qt,p.resume=Qt,p.pause=Qt,p}const u=it;l.call=(p,m,y)=>Wt(p,u,m,y);let c=!1;i==="post"?l.scheduler=p=>{bt(p,u&&u.suspense)}:i!=="sync"&&(c=!0,l.scheduler=(p,m)=>{m?p():Cl(p)}),l.augmentJob=p=>{t&&(p.flags|=4),c&&(p.flags|=2,u&&(p.id=u.uid,p.i=u))};const f=Fg(e,t,l);return a&&a.push(f),f}function Rm(e,t,r){const n=this.proxy,s=Ke(e)?e.includes(".")?bh(n,e):()=>n[e]:e.bind(n,n);let i;Re(t)?i=t:(i=t.handler,r=t);const o=Ti(this),l=Nl(s,i.bind(n),r);return o(),l}function bh(e,t){const r=t.split(".");return()=>{let n=e;for(let s=0;s<r.length&&n;s++)n=n[r[s]];return n}}const xm=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${kt(t)}Modifiers`]||e[`${Ur(t)}Modifiers`];function Pm(e,t,...r){if(e.isUnmounted)return;const n=e.vnode.props||Ue;let s=r;const i=t.startsWith("update:"),o=i&&xm(n,t.slice(7));o&&(o.trim&&(s=r.map(c=>Ke(c)?c.trim():c)),o.number&&(s=r.map(Zp)));let l,a=n[l=Vo(t)]||n[l=Vo(kt(t))];!a&&i&&(a=n[l=Vo(Ur(t))]),a&&Wt(a,e,6,s);const u=n[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Wt(u,e,6,s)}}function vh(e,t,r=!1){const n=t.emitsCache,s=n.get(e);if(s!==void 0)return s;const i=e.emits;let o={},l=!1;if(!Re(e)){const a=u=>{const c=vh(u,t,!0);c&&(l=!0,Ze(o,c))};!r&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!i&&!l?($e(e)&&n.set(e,null),null):(Oe(i)?i.forEach(a=>o[a]=null):Ze(o,i),$e(e)&&n.set(e,o),o)}function xo(e,t){return!e||!vo(t)?!1:(t=t.slice(2).replace(/Once$/,""),Be(e,t[0].toLowerCase()+t.slice(1))||Be(e,Ur(t))||Be(e,t))}function Zo(e){const{type:t,vnode:r,proxy:n,withProxy:s,propsOptions:[i],slots:o,attrs:l,emit:a,render:u,renderCache:c,props:f,data:p,setupState:m,ctx:y,inheritAttrs:b}=e,O=ao(e);let L,C;try{if(r.shapeFlag&4){const B=s||n,F=B;L=zt(u.call(F,B,c,f,m,p,y)),C=l}else{const B=t;L=zt(B.length>1?B(f,{attrs:l,slots:o,emit:a}):B(f,null)),C=t.props?l:km(l)}}catch(B){ni.length=0,Oo(B,e,1),L=wt(mt)}let _=L;if(C&&b!==!1){const B=Object.keys(C),{shapeFlag:F}=_;B.length&&F&7&&(i&&B.some(hl)&&(C=Bm(C,i)),_=Nr(_,C,!1,!0))}return r.dirs&&(_=Nr(_,null,!1,!0),_.dirs=_.dirs?_.dirs.concat(r.dirs):r.dirs),r.transition&&gi(_,r.transition),L=_,ao(O),L}const km=e=>{let t;for(const r in e)(r==="class"||r==="style"||vo(r))&&((t||(t={}))[r]=e[r]);return t},Bm=(e,t)=>{const r={};for(const n in e)(!hl(n)||!(n.slice(9)in t))&&(r[n]=e[n]);return r};function Mm(e,t,r){const{props:n,children:s,component:i}=e,{props:o,children:l,patchFlag:a}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&a>=0){if(a&1024)return!0;if(a&16)return n?Ou(n,o,u):!!o;if(a&8){const c=t.dynamicProps;for(let f=0;f<c.length;f++){const p=c[f];if(o[p]!==n[p]&&!xo(u,p))return!0}}}else return(s||l)&&(!l||!l.$stable)?!0:n===o?!1:n?o?Ou(n,o,u):!0:!!o;return!1}function Ou(e,t,r){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let s=0;s<n.length;s++){const i=n[s];if(t[i]!==e[i]&&!xo(r,i))return!0}return!1}function Lm({vnode:e,parent:t},r){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=r,t=t.parent;else break}}const wh=e=>e.__isSuspense;function Nm(e,t){t&&t.pendingBranch?Oe(e)?t.effects.push(...e):t.effects.push(e):Hg(e)}const vt=Symbol.for("v-fgt"),Po=Symbol.for("v-txt"),mt=Symbol.for("v-cmt"),Ki=Symbol.for("v-stc"),ni=[];let It=null;function Ps(e=!1){ni.push(It=e?null:[])}function jm(){ni.pop(),It=ni[ni.length-1]||null}let mi=1;function Cu(e){mi+=e,e<0&&It&&(It.hasOnce=!0)}function _h(e){return e.dynamicChildren=mi>0?It||In:null,jm(),mi>0&&It&&It.push(e),e}function Dw(e,t,r,n,s,i){return _h(Sh(e,t,r,n,s,i,!0))}function ks(e,t,r,n,s){return _h(wt(e,t,r,n,s,!0))}function yi(e){return e?e.__v_isVNode===!0:!1}function tn(e,t){return e.type===t.type&&e.key===t.key}const Eh=({key:e})=>e??null,zi=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?Ke(e)||Je(e)||Re(e)?{i:Xe,r:e,k:t,f:!!r}:e:null);function Sh(e,t=null,r=null,n=0,s=null,i=e===vt?0:1,o=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Eh(t),ref:t&&zi(t),scopeId:Vf,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Xe};return l?(jl(a,r),i&128&&e.normalize(a)):r&&(a.shapeFlag|=Ke(r)?8:16),mi>0&&!o&&It&&(a.patchFlag>0||i&6)&&a.patchFlag!==32&&It.push(a),a}const wt=Um;function Um(e,t=null,r=null,n=0,s=null,i=!1){if((!e||e===ih)&&(e=mt),yi(e)){const l=Nr(e,t,!0);return r&&jl(l,r),mi>0&&!i&&It&&(l.shapeFlag&6?It[It.indexOf(e)]=l:It.push(l)),l.patchFlag=-2,l}if(Qm(e)&&(e=e.__vccOpts),t){t=Dm(t);let{class:l,style:a}=t;l&&!Ke(l)&&(t.class=Ao(l)),$e(a)&&(El(a)&&!Oe(a)&&(a=Ze({},a)),t.style=So(a))}const o=Ke(e)?1:wh(e)?128:Kf(e)?64:$e(e)?4:Re(e)?2:0;return Sh(e,t,r,n,s,o,i,!0)}function Dm(e){return e?El(e)||ch(e)?Ze({},e):e:null}function Nr(e,t,r=!1,n=!1){const{props:s,ref:i,patchFlag:o,children:l,transition:a}=e,u=t?Wm(s||{},t):s,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Eh(u),ref:t&&t.ref?r&&i?Oe(i)?i.concat(zi(t)):[i,zi(t)]:zi(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==vt?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Nr(e.ssContent),ssFallback:e.ssFallback&&Nr(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&n&&gi(c,a.clone(c)),c}function Fm(e=" ",t=0){return wt(Po,null,e,t)}function Fw(e="",t=!1){return t?(Ps(),ks(mt,null,e)):wt(mt,null,e)}function zt(e){return e==null||typeof e=="boolean"?wt(mt):Oe(e)?wt(vt,null,e.slice()):yi(e)?kr(e):wt(Po,null,String(e))}function kr(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Nr(e)}function jl(e,t){let r=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(Oe(t))r=16;else if(typeof t=="object")if(n&65){const s=t.default;s&&(s._c&&(s._d=!1),jl(e,s()),s._c&&(s._d=!0));return}else{r=32;const s=t._;!s&&!ch(t)?t._ctx=Xe:s===3&&Xe&&(Xe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Re(t)?(t={default:t,_ctx:Xe},r=32):(t=String(t),n&64?(r=16,t=[Fm(t)]):r=8);e.children=t,e.shapeFlag|=r}function Wm(...e){const t={};for(let r=0;r<e.length;r++){const n=e[r];for(const s in n)if(s==="class")t.class!==n.class&&(t.class=Ao([t.class,n.class]));else if(s==="style")t.style=So([t.style,n.style]);else if(vo(s)){const i=t[s],o=n[s];o&&i!==o&&!(Oe(i)&&i.includes(o))&&(t[s]=i?[].concat(i,o):o)}else s!==""&&(t[s]=n[s])}return t}function Ht(e,t,r,n=null){Wt(e,t,7,[r,n])}const $m=ah();let Hm=0;function Vm(e,t,r){const n=e.type,s=(t?t.appContext:e.appContext)||$m,i={uid:Hm++,vnode:e,type:n,parent:t,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new vf(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(s.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:hh(n,s),emitsOptions:vh(n,s),emit:null,emitted:null,propsDefaults:Ue,inheritAttrs:n.inheritAttrs,ctx:Ue,data:Ue,props:Ue,attrs:Ue,slots:Ue,refs:Ue,setupState:Ue,setupContext:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=Pm.bind(null,i),e.ce&&e.ce(i),i}let it=null;const Ah=()=>it||Xe;let uo,Bs;{const e=gf(),t=(r,n)=>{let s;return(s=e[r])||(s=e[r]=[]),s.push(n),i=>{s.length>1?s.forEach(o=>o(i)):s[0](i)}};uo=t("__VUE_INSTANCE_SETTERS__",r=>it=r),Bs=t("__VUE_SSR_SETTERS__",r=>ko=r)}const Ti=e=>{const t=it;return uo(e),e.scope.on(),()=>{e.scope.off(),uo(t)}},Ru=()=>{it&&it.scope.off(),uo(null)};function Th(e){return e.vnode.shapeFlag&4}let ko=!1;function qm(e,t=!1,r=!1){t&&Bs(t);const{props:n,children:s}=e.vnode,i=Th(e);mm(e,n,i,t),wm(e,s,r);const o=i?Km(e,t):void 0;return t&&Bs(!1),o}function Km(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,am);const{setup:n}=r;if(n){const s=e.setupContext=n.length>1?Ym(e):null,i=Ti(e);Dr();const o=Ai(n,e,0,[e.props,s]);if(Fr(),i(),ff(o)){if(xn(e)||eh(e),o.then(Ru,Ru),t)return o.then(l=>{xu(e,l,t)}).catch(l=>{Oo(l,e,0)});e.asyncDep=o}else xu(e,o,t)}else Ih(e,t)}function xu(e,t,r){Re(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:$e(t)&&(e.setupState=Df(t)),Ih(e,r)}let Pu;function Ih(e,t,r){const n=e.type;if(!e.render){if(!t&&Pu&&!n.render){const s=n.template||Bl(e).template;if(s){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:a}=n,u=Ze(Ze({isCustomElement:i,delimiters:l},o),a);n.render=Pu(s,u)}}e.render=n.render||Qt}{const s=Ti(e);Dr();try{lm(e)}finally{Fr(),s()}}}const zm={get(e,t){return ft(e,"get",""),e[t]}};function Ym(e){const t=r=>{e.exposed=r||{}};return{attrs:new Proxy(e.attrs,zm),slots:e.slots,emit:e.emit,expose:t}}function Bo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Df(Sl(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in ti)return ti[r](e)},has(t,r){return r in t||r in ti}})):e.proxy}function Gm(e,t=!0){return Re(e)?e.displayName||e.name:e.name||t&&e.__name}function Qm(e){return Re(e)&&"__vccOpts"in e}const Rt=(e,t)=>Ug(e,t,ko);function Ul(e,t,r){const n=arguments.length;return n===2?$e(t)&&!Oe(t)?yi(t)?wt(e,null,[t]):wt(e,t):wt(e,null,t):(n>3?r=Array.prototype.slice.call(arguments,2):n===3&&yi(r)&&(r=[r]),wt(e,t,r))}const Jm="3.5.10";/**
+* @vue/runtime-dom v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let Ms;const ku=typeof window<"u"&&window.trustedTypes;if(ku)try{Ms=ku.createPolicy("vue",{createHTML:e=>e})}catch{}const Oh=Ms?e=>Ms.createHTML(e):e=>e,Xm="http://www.w3.org/2000/svg",Zm="http://www.w3.org/1998/Math/MathML",or=typeof document<"u"?document:null,Bu=or&&or.createElement("template"),ey={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,n)=>{const s=t==="svg"?or.createElementNS(Xm,e):t==="mathml"?or.createElementNS(Zm,e):r?or.createElement(e,{is:r}):or.createElement(e);return e==="select"&&n&&n.multiple!=null&&s.setAttribute("multiple",n.multiple),s},createText:e=>or.createTextNode(e),createComment:e=>or.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>or.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,n,s,i){const o=r?r.previousSibling:t.lastChild;if(s&&(s===i||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),r),!(s===i||!(s=s.nextSibling)););else{Bu.innerHTML=Oh(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const l=Bu.content;if(n==="svg"||n==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,r)}return[o?o.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},Er="transition",Wn="animation",bi=Symbol("_vtc"),Ch={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ty=Ze({},Yf,Ch),ry=e=>(e.displayName="Transition",e.props=ty,e),Ww=ry((e,{slots:t})=>Ul(Qg,ny(e),t)),qr=(e,t=[])=>{Oe(e)?e.forEach(r=>r(...t)):e&&e(...t)},Mu=e=>e?Oe(e)?e.some(t=>t.length>1):e.length>1:!1;function ny(e){const t={};for(const S in e)S in Ch||(t[S]=e[S]);if(e.css===!1)return t;const{name:r="v",type:n,duration:s,enterFromClass:i=`${r}-enter-from`,enterActiveClass:o=`${r}-enter-active`,enterToClass:l=`${r}-enter-to`,appearFromClass:a=i,appearActiveClass:u=o,appearToClass:c=l,leaveFromClass:f=`${r}-leave-from`,leaveActiveClass:p=`${r}-leave-active`,leaveToClass:m=`${r}-leave-to`}=e,y=iy(s),b=y&&y[0],O=y&&y[1],{onBeforeEnter:L,onEnter:C,onEnterCancelled:_,onLeave:B,onLeaveCancelled:F,onBeforeAppear:k=L,onAppear:P=C,onAppearCancelled:j=_}=t,D=(S,z,ae)=>{Kr(S,z?c:l),Kr(S,z?u:o),ae&&ae()},X=(S,z)=>{S._isLeaving=!1,Kr(S,f),Kr(S,m),Kr(S,p),z&&z()},Z=S=>(z,ae)=>{const ee=S?P:C,le=()=>D(z,S,ae);qr(ee,[z,le]),Lu(()=>{Kr(z,S?a:i),Sr(z,S?c:l),Mu(ee)||Nu(z,n,b,le)})};return Ze(t,{onBeforeEnter(S){qr(L,[S]),Sr(S,i),Sr(S,o)},onBeforeAppear(S){qr(k,[S]),Sr(S,a),Sr(S,u)},onEnter:Z(!1),onAppear:Z(!0),onLeave(S,z){S._isLeaving=!0;const ae=()=>X(S,z);Sr(S,f),Sr(S,p),ay(),Lu(()=>{S._isLeaving&&(Kr(S,f),Sr(S,m),Mu(B)||Nu(S,n,O,ae))}),qr(B,[S,ae])},onEnterCancelled(S){D(S,!1),qr(_,[S])},onAppearCancelled(S){D(S,!0),qr(j,[S])},onLeaveCancelled(S){X(S),qr(F,[S])}})}function iy(e){if(e==null)return null;if($e(e))return[es(e.enter),es(e.leave)];{const t=es(e);return[t,t]}}function es(e){return eg(e)}function Sr(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.add(r)),(e[bi]||(e[bi]=new Set)).add(t)}function Kr(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.remove(n));const r=e[bi];r&&(r.delete(t),r.size||(e[bi]=void 0))}function Lu(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let oy=0;function Nu(e,t,r,n){const s=e._endId=++oy,i=()=>{s===e._endId&&n()};if(r!=null)return setTimeout(i,r);const{type:o,timeout:l,propCount:a}=sy(e,t);if(!o)return n();const u=o+"end";let c=0;const f=()=>{e.removeEventListener(u,p),i()},p=m=>{m.target===e&&++c>=a&&f()};setTimeout(()=>{c<a&&f()},l+1),e.addEventListener(u,p)}function sy(e,t){const r=window.getComputedStyle(e),n=y=>(r[y]||"").split(", "),s=n(`${Er}Delay`),i=n(`${Er}Duration`),o=ju(s,i),l=n(`${Wn}Delay`),a=n(`${Wn}Duration`),u=ju(l,a);let c=null,f=0,p=0;t===Er?o>0&&(c=Er,f=o,p=i.length):t===Wn?u>0&&(c=Wn,f=u,p=a.length):(f=Math.max(o,u),c=f>0?o>u?Er:Wn:null,p=c?c===Er?i.length:a.length:0);const m=c===Er&&/\b(transform|all)(,|$)/.test(n(`${Er}Property`).toString());return{type:c,timeout:f,propCount:p,hasTransform:m}}function ju(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((r,n)=>Uu(r)+Uu(e[n])))}function Uu(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ay(){return document.body.offsetHeight}function ly(e,t,r){const n=e[bi];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const co=Symbol("_vod"),Rh=Symbol("_vsh"),$w={beforeMount(e,{value:t},{transition:r}){e[co]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):$n(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:n}){!t!=!r&&(n?t?(n.beforeEnter(e),$n(e,!0),n.enter(e)):n.leave(e,()=>{$n(e,!1)}):$n(e,t))},beforeUnmount(e,{value:t}){$n(e,t)}};function $n(e,t){e.style.display=t?e[co]:"none",e[Rh]=!t}const xh=Symbol("");function Hw(e){const t=Ah();if(!t)return;const r=t.ut=(s=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(i=>fo(i,s))},n=()=>{const s=e(t.proxy);t.ce?fo(t.ce,s):Ls(t.subTree,s),r(s)};rh(()=>{Cm(n)}),Rl(()=>{const s=new MutationObserver(n);s.observe(t.subTree.el.parentNode,{childList:!0}),xl(()=>s.disconnect())})}function Ls(e,t){if(e.shapeFlag&128){const r=e.suspense;e=r.activeBranch,r.pendingBranch&&!r.isHydrating&&r.effects.push(()=>{Ls(r.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)fo(e.el,t);else if(e.type===vt)e.children.forEach(r=>Ls(r,t));else if(e.type===Ki){let{el:r,anchor:n}=e;for(;r&&(fo(r,t),r!==n);)r=r.nextSibling}}function fo(e,t){if(e.nodeType===1){const r=e.style;let n="";for(const s in t)r.setProperty(`--${s}`,t[s]),n+=`--${s}: ${t[s]};`;r[xh]=n}}const uy=/(^|;)\s*display\s*:/;function cy(e,t,r){const n=e.style,s=Ke(r);let i=!1;if(r&&!s){if(t)if(Ke(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();r[l]==null&&Yi(n,l,"")}else for(const o in t)r[o]==null&&Yi(n,o,"");for(const o in r)o==="display"&&(i=!0),Yi(n,o,r[o])}else if(s){if(t!==r){const o=n[xh];o&&(r+=";"+o),n.cssText=r,i=uy.test(r)}}else t&&e.removeAttribute("style");co in e&&(e[co]=i?n.display:"",e[Rh]&&(n.display="none"))}const Du=/\s*!important$/;function Yi(e,t,r){if(Oe(r))r.forEach(n=>Yi(e,t,n));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const n=fy(e,t);Du.test(r)?e.setProperty(Ur(n),r.replace(Du,""),"important"):e[n]=r}}const Fu=["Webkit","Moz","ms"],ts={};function fy(e,t){const r=ts[t];if(r)return r;let n=kt(t);if(n!=="filter"&&n in e)return ts[t]=n;n=Eo(n);for(let s=0;s<Fu.length;s++){const i=Fu[s]+n;if(i in e)return ts[t]=i}return t}const Wu="http://www.w3.org/1999/xlink";function $u(e,t,r,n,s,i=sg(t)){n&&t.startsWith("xlink:")?r==null?e.removeAttributeNS(Wu,t.slice(6,t.length)):e.setAttributeNS(Wu,t,r):r==null||i&&!mf(r)?e.removeAttribute(t):e.setAttribute(t,i?"":jr(r)?String(r):r)}function Hu(e,t,r,n){if(t==="innerHTML"||t==="textContent"){r!=null&&(e[t]=t==="innerHTML"?Oh(r):r);return}const s=e.tagName;if(t==="value"&&s!=="PROGRESS"&&!s.includes("-")){const o=s==="OPTION"?e.getAttribute("value")||"":e.value,l=r==null?e.type==="checkbox"?"on":"":String(r);(o!==l||!("_value"in e))&&(e.value=l),r==null&&e.removeAttribute(t),e._value=r;return}let i=!1;if(r===""||r==null){const o=typeof e[t];o==="boolean"?r=mf(r):r==null&&o==="string"?(r="",i=!0):o==="number"&&(r=0,i=!0)}try{e[t]=r}catch{}i&&e.removeAttribute(t)}function hy(e,t,r,n){e.addEventListener(t,r,n)}function dy(e,t,r,n){e.removeEventListener(t,r,n)}const Vu=Symbol("_vei");function py(e,t,r,n,s=null){const i=e[Vu]||(e[Vu]={}),o=i[t];if(n&&o)o.value=n;else{const[l,a]=gy(t);if(n){const u=i[t]=by(n,s);hy(e,l,u,a)}else o&&(dy(e,l,o,a),i[t]=void 0)}}const qu=/(?:Once|Passive|Capture)$/;function gy(e){let t;if(qu.test(e)){t={};let n;for(;n=e.match(qu);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Ur(e.slice(2)),t]}let rs=0;const my=Promise.resolve(),yy=()=>rs||(my.then(()=>rs=0),rs=Date.now());function by(e,t){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;Wt(vy(n,r.value),t,5,[n])};return r.value=e,r.attached=yy(),r}function vy(e,t){if(Oe(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(n=>s=>!s._stopped&&n&&n(s))}else return t}const Ku=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,wy=(e,t,r,n,s,i)=>{const o=s==="svg";t==="class"?ly(e,n,o):t==="style"?cy(e,r,n):vo(t)?hl(t)||py(e,t,r,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):_y(e,t,n,o))?(Hu(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&$u(e,t,n,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Ke(n))?Hu(e,kt(t),n):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),$u(e,t,n,o))};function _y(e,t,r,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ku(t)&&Re(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Ku(t)&&Ke(r)?!1:t in e}const Ey=["ctrl","shift","alt","meta"],Sy={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ey.some(r=>e[`${r}Key`]&&!t.includes(r))},Vw=(e,t)=>{const r=e._withMods||(e._withMods={}),n=t.join(".");return r[n]||(r[n]=(s,...i)=>{for(let o=0;o<t.length;o++){const l=Sy[t[o]];if(l&&l(s,t))return}return e(s,...i)})},Ay={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},qw=(e,t)=>{const r=e._withKeys||(e._withKeys={}),n=t.join(".");return r[n]||(r[n]=s=>{if(!("key"in s))return;const i=Ur(s.key);if(t.some(o=>o===i||Ay[o]===i))return e(s)})},Ty=Ze({patchProp:wy},ey);let zu;function Iy(){return zu||(zu=Em(Ty))}const Kw=(...e)=>{const t=Iy().createApp(...e),{mount:r}=t;return t.mount=n=>{const s=Cy(n);if(!s)return;const i=t._component;!Re(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const o=r(s,!1,Oy(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},t};function Oy(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Cy(e){return Ke(e)?document.querySelector(e):e}var Ry=!1;let Ph;const Mo=e=>Ph=e,kh=Symbol();function Ns(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var ii;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(ii||(ii={}));function zw(){const e=wf(!0),t=e.run(()=>Tl({}));let r=[],n=[];const s=Sl({install(i){Mo(s),s._a=i,i.provide(kh,s),i.config.globalProperties.$pinia=s,n.forEach(o=>r.push(o)),n=[]},use(i){return!this._a&&!Ry?n.push(i):r.push(i),this},_p:r,_a:null,_e:e,_s:new Map,state:t});return s}const Bh=()=>{};function Yu(e,t,r,n=Bh){e.push(t);const s=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),n())};return!r&&_f()&&lg(s),s}function vn(e,...t){e.slice().forEach(r=>{r(...t)})}const xy=e=>e(),Gu=Symbol(),ns=Symbol();function js(e,t){e instanceof Map&&t instanceof Map?t.forEach((r,n)=>e.set(n,r)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const r in t){if(!t.hasOwnProperty(r))continue;const n=t[r],s=e[r];Ns(s)&&Ns(n)&&e.hasOwnProperty(r)&&!Je(n)&&!Mr(n)?e[r]=js(s,n):e[r]=n}return e}const Py=Symbol();function ky(e){return!Ns(e)||!e.hasOwnProperty(Py)}const{assign:Tr}=Object;function By(e){return!!(Je(e)&&e.effect)}function My(e,t,r,n){const{state:s,actions:i,getters:o}=t,l=r.state.value[e];let a;function u(){l||(r.state.value[e]=s?s():{});const c=Mg(r.state.value[e]);return Tr(c,i,Object.keys(o||{}).reduce((f,p)=>(f[p]=Sl(Rt(()=>{Mo(r);const m=r._s.get(e);return o[p].call(m,m)})),f),{}))}return a=Mh(e,u,t,r,n,!0),a}function Mh(e,t,r={},n,s,i){let o;const l=Tr({actions:{}},r),a={deep:!0};let u,c,f=[],p=[],m;const y=n.state.value[e];!i&&!y&&(n.state.value[e]={}),Tl({});let b;function O(j){let D;u=c=!1,typeof j=="function"?(j(n.state.value[e]),D={type:ii.patchFunction,storeId:e,events:m}):(js(n.state.value[e],j),D={type:ii.patchObject,payload:j,storeId:e,events:m});const X=b=Symbol();Ol().then(()=>{b===X&&(u=!0)}),c=!0,vn(f,D,n.state.value[e])}const L=i?function(){const{state:D}=r,X=D?D():{};this.$patch(Z=>{Tr(Z,X)})}:Bh;function C(){o.stop(),f=[],p=[],n._s.delete(e)}const _=(j,D="")=>{if(Gu in j)return j[ns]=D,j;const X=function(){Mo(n);const Z=Array.from(arguments),S=[],z=[];function ae(ne){S.push(ne)}function ee(ne){z.push(ne)}vn(p,{args:Z,name:X[ns],store:F,after:ae,onError:ee});let le;try{le=j.apply(this&&this.$id===e?this:F,Z)}catch(ne){throw vn(z,ne),ne}return le instanceof Promise?le.then(ne=>(vn(S,ne),ne)).catch(ne=>(vn(z,ne),Promise.reject(ne))):(vn(S,le),le)};return X[Gu]=!0,X[ns]=D,X},B={_p:n,$id:e,$onAction:Yu.bind(null,p),$patch:O,$reset:L,$subscribe(j,D={}){const X=Yu(f,j,D.detached,()=>Z()),Z=o.run(()=>ri(()=>n.state.value[e],S=>{(D.flush==="sync"?c:u)&&j({storeId:e,type:ii.direct,events:m},S)},Tr({},a,D)));return X},$dispose:C},F=Si(B);n._s.set(e,F);const P=(n._a&&n._a.runWithContext||xy)(()=>n._e.run(()=>(o=wf()).run(()=>t({action:_}))));for(const j in P){const D=P[j];if(Je(D)&&!By(D)||Mr(D))i||(y&&ky(D)&&(Je(D)?D.value=y[j]:js(D,y[j])),n.state.value[e][j]=D);else if(typeof D=="function"){const X=_(D,j);P[j]=X,l.actions[j]=D}}return Tr(F,P),Tr(Pe(F),P),Object.defineProperty(F,"$state",{get:()=>n.state.value[e],set:j=>{O(D=>{Tr(D,j)})}}),n._p.forEach(j=>{Tr(F,o.run(()=>j({store:F,app:n._a,pinia:n,options:l})))}),y&&i&&r.hydrate&&r.hydrate(F.$state,y),u=!0,c=!0,F}function Yw(e,t,r){let n,s;const i=typeof t=="function";n=e,s=i?r:t;function o(l,a){const u=gm();return l=l||(u?Jt(kh,null):null),l&&Mo(l),l=Ph,l._s.has(n)||(i?Mh(n,t,s,l):My(n,s,l)),l._s.get(n)}return o.$id=n,o}/*!
+  * vue-router v4.4.5
+  * (c) 2024 Eduardo San Martin Morote
+  * @license MIT
+  */const En=typeof document<"u";function Lh(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Ly(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Lh(e.default)}const Le=Object.assign;function is(e,t){const r={};for(const n in t){const s=t[n];r[n]=$t(s)?s.map(e):e(s)}return r}const oi=()=>{},$t=Array.isArray,Nh=/#/g,Ny=/&/g,jy=/\//g,Uy=/=/g,Dy=/\?/g,jh=/\+/g,Fy=/%5B/g,Wy=/%5D/g,Uh=/%5E/g,$y=/%60/g,Dh=/%7B/g,Hy=/%7C/g,Fh=/%7D/g,Vy=/%20/g;function Dl(e){return encodeURI(""+e).replace(Hy,"|").replace(Fy,"[").replace(Wy,"]")}function qy(e){return Dl(e).replace(Dh,"{").replace(Fh,"}").replace(Uh,"^")}function Us(e){return Dl(e).replace(jh,"%2B").replace(Vy,"+").replace(Nh,"%23").replace(Ny,"%26").replace($y,"`").replace(Dh,"{").replace(Fh,"}").replace(Uh,"^")}function Ky(e){return Us(e).replace(Uy,"%3D")}function zy(e){return Dl(e).replace(Nh,"%23").replace(Dy,"%3F")}function Yy(e){return e==null?"":zy(e).replace(jy,"%2F")}function vi(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Gy=/\/$/,Qy=e=>e.replace(Gy,"");function os(e,t,r="/"){let n,s={},i="",o="";const l=t.indexOf("#");let a=t.indexOf("?");return l<a&&l>=0&&(a=-1),a>-1&&(n=t.slice(0,a),i=t.slice(a+1,l>-1?l:t.length),s=e(i)),l>-1&&(n=n||t.slice(0,l),o=t.slice(l,t.length)),n=eb(n??t,r),{fullPath:n+(i&&"?")+i+o,path:n,query:s,hash:vi(o)}}function Jy(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function Qu(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Xy(e,t,r){const n=t.matched.length-1,s=r.matched.length-1;return n>-1&&n===s&&Pn(t.matched[n],r.matched[s])&&Wh(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function Pn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Wh(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!Zy(e[r],t[r]))return!1;return!0}function Zy(e,t){return $t(e)?Ju(e,t):$t(t)?Ju(t,e):e===t}function Ju(e,t){return $t(t)?e.length===t.length&&e.every((r,n)=>r===t[n]):e.length===1&&e[0]===t}function eb(e,t){if(e.startsWith("/"))return e;if(!e)return t;const r=t.split("/"),n=e.split("/"),s=n[n.length-1];(s===".."||s===".")&&n.push("");let i=r.length-1,o,l;for(o=0;o<n.length;o++)if(l=n[o],l!==".")if(l==="..")i>1&&i--;else break;return r.slice(0,i).join("/")+"/"+n.slice(o).join("/")}const Ar={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var wi;(function(e){e.pop="pop",e.push="push"})(wi||(wi={}));var si;(function(e){e.back="back",e.forward="forward",e.unknown=""})(si||(si={}));function tb(e){if(!e)if(En){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Qy(e)}const rb=/^[^#]+#/;function nb(e,t){return e.replace(rb,"#")+t}function ib(e,t){const r=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{behavior:t.behavior,left:n.left-r.left-(t.left||0),top:n.top-r.top-(t.top||0)}}const Lo=()=>({left:window.scrollX,top:window.scrollY});function ob(e){let t;if("el"in e){const r=e.el,n=typeof r=="string"&&r.startsWith("#"),s=typeof r=="string"?n?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!s)return;t=ib(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Xu(e,t){return(history.state?history.state.position-t:-1)+e}const Ds=new Map;function sb(e,t){Ds.set(e,t)}function ab(e){const t=Ds.get(e);return Ds.delete(e),t}let lb=()=>location.protocol+"//"+location.host;function $h(e,t){const{pathname:r,search:n,hash:s}=t,i=e.indexOf("#");if(i>-1){let l=s.includes(e.slice(i))?e.slice(i).length:1,a=s.slice(l);return a[0]!=="/"&&(a="/"+a),Qu(a,"")}return Qu(r,e)+n+s}function ub(e,t,r,n){let s=[],i=[],o=null;const l=({state:p})=>{const m=$h(e,location),y=r.value,b=t.value;let O=0;if(p){if(r.value=m,t.value=p,o&&o===y){o=null;return}O=b?p.position-b.position:0}else n(m);s.forEach(L=>{L(r.value,y,{delta:O,type:wi.pop,direction:O?O>0?si.forward:si.back:si.unknown})})};function a(){o=r.value}function u(p){s.push(p);const m=()=>{const y=s.indexOf(p);y>-1&&s.splice(y,1)};return i.push(m),m}function c(){const{history:p}=window;p.state&&p.replaceState(Le({},p.state,{scroll:Lo()}),"")}function f(){for(const p of i)p();i=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:a,listen:u,destroy:f}}function Zu(e,t,r,n=!1,s=!1){return{back:e,current:t,forward:r,replaced:n,position:window.history.length,scroll:s?Lo():null}}function cb(e){const{history:t,location:r}=window,n={value:$h(e,r)},s={value:t.state};s.value||i(n.value,{back:null,current:n.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(a,u,c){const f=e.indexOf("#"),p=f>-1?(r.host&&document.querySelector("base")?e:e.slice(f))+a:lb()+e+a;try{t[c?"replaceState":"pushState"](u,"",p),s.value=u}catch(m){console.error(m),r[c?"replace":"assign"](p)}}function o(a,u){const c=Le({},t.state,Zu(s.value.back,a,s.value.forward,!0),u,{position:s.value.position});i(a,c,!0),n.value=a}function l(a,u){const c=Le({},s.value,t.state,{forward:a,scroll:Lo()});i(c.current,c,!0);const f=Le({},Zu(n.value,a,null),{position:c.position+1},u);i(a,f,!1),n.value=a}return{location:n,state:s,push:l,replace:o}}function fb(e){e=tb(e);const t=cb(e),r=ub(e,t.state,t.location,t.replace);function n(i,o=!0){o||r.pauseListeners(),history.go(i)}const s=Le({location:"",base:e,go:n,createHref:nb.bind(null,e)},t,r);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function Gw(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),fb(e)}function hb(e){return typeof e=="string"||e&&typeof e=="object"}function Hh(e){return typeof e=="string"||typeof e=="symbol"}const Vh=Symbol("");var ec;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(ec||(ec={}));function kn(e,t){return Le(new Error,{type:e,[Vh]:!0},t)}function tr(e,t){return e instanceof Error&&Vh in e&&(t==null||!!(e.type&t))}const tc="[^/]+?",db={sensitive:!1,strict:!1,start:!0,end:!0},pb=/[.+*?^${}()[\]/\\]/g;function gb(e,t){const r=Le({},db,t),n=[];let s=r.start?"^":"";const i=[];for(const u of e){const c=u.length?[]:[90];r.strict&&!u.length&&(s+="/");for(let f=0;f<u.length;f++){const p=u[f];let m=40+(r.sensitive?.25:0);if(p.type===0)f||(s+="/"),s+=p.value.replace(pb,"\\$&"),m+=40;else if(p.type===1){const{value:y,repeatable:b,optional:O,regexp:L}=p;i.push({name:y,repeatable:b,optional:O});const C=L||tc;if(C!==tc){m+=10;try{new RegExp(`(${C})`)}catch(B){throw new Error(`Invalid custom RegExp for param "${y}" (${C}): `+B.message)}}let _=b?`((?:${C})(?:/(?:${C}))*)`:`(${C})`;f||(_=O&&u.length<2?`(?:/${_})`:"/"+_),O&&(_+="?"),s+=_,m+=20,O&&(m+=-8),b&&(m+=-20),C===".*"&&(m+=-50)}c.push(m)}n.push(c)}if(r.strict&&r.end){const u=n.length-1;n[u][n[u].length-1]+=.7000000000000001}r.strict||(s+="/?"),r.end?s+="$":r.strict&&(s+="(?:/|$)");const o=new RegExp(s,r.sensitive?"":"i");function l(u){const c=u.match(o),f={};if(!c)return null;for(let p=1;p<c.length;p++){const m=c[p]||"",y=i[p-1];f[y.name]=m&&y.repeatable?m.split("/"):m}return f}function a(u){let c="",f=!1;for(const p of e){(!f||!c.endsWith("/"))&&(c+="/"),f=!1;for(const m of p)if(m.type===0)c+=m.value;else if(m.type===1){const{value:y,repeatable:b,optional:O}=m,L=y in u?u[y]:"";if($t(L)&&!b)throw new Error(`Provided param "${y}" is an array but it is not repeatable (* or + modifiers)`);const C=$t(L)?L.join("/"):L;if(!C)if(O)p.length<2&&(c.endsWith("/")?c=c.slice(0,-1):f=!0);else throw new Error(`Missing required param "${y}"`);c+=C}}return c||"/"}return{re:o,score:n,keys:i,parse:l,stringify:a}}function mb(e,t){let r=0;for(;r<e.length&&r<t.length;){const n=t[r]-e[r];if(n)return n;r++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function qh(e,t){let r=0;const n=e.score,s=t.score;for(;r<n.length&&r<s.length;){const i=mb(n[r],s[r]);if(i)return i;r++}if(Math.abs(s.length-n.length)===1){if(rc(n))return 1;if(rc(s))return-1}return s.length-n.length}function rc(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const yb={type:0,value:""},bb=/[a-zA-Z0-9_]/;function vb(e){if(!e)return[[]];if(e==="/")return[[yb]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${r})/"${u}": ${m}`)}let r=0,n=r;const s=[];let i;function o(){i&&s.push(i),i=[]}let l=0,a,u="",c="";function f(){u&&(r===0?i.push({type:0,value:u}):r===1||r===2||r===3?(i.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:u,regexp:c,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=a}for(;l<e.length;){if(a=e[l++],a==="\\"&&r!==2){n=r,r=4;continue}switch(r){case 0:a==="/"?(u&&f(),o()):a===":"?(f(),r=1):p();break;case 4:p(),r=n;break;case 1:a==="("?r=2:bb.test(a)?p():(f(),r=0,a!=="*"&&a!=="?"&&a!=="+"&&l--);break;case 2:a===")"?c[c.length-1]=="\\"?c=c.slice(0,-1)+a:r=3:c+=a;break;case 3:f(),r=0,a!=="*"&&a!=="?"&&a!=="+"&&l--,c="";break;default:t("Unknown state");break}}return r===2&&t(`Unfinished custom RegExp for param "${u}"`),f(),o(),s}function wb(e,t,r){const n=gb(vb(e.path),r),s=Le(n,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function _b(e,t){const r=[],n=new Map;t=sc({strict:!1,end:!0,sensitive:!1},t);function s(f){return n.get(f)}function i(f,p,m){const y=!m,b=ic(f);b.aliasOf=m&&m.record;const O=sc(t,f),L=[b];if("alias"in f){const B=typeof f.alias=="string"?[f.alias]:f.alias;for(const F of B)L.push(ic(Le({},b,{components:m?m.record.components:b.components,path:F,aliasOf:m?m.record:b})))}let C,_;for(const B of L){const{path:F}=B;if(p&&F[0]!=="/"){const k=p.record.path,P=k[k.length-1]==="/"?"":"/";B.path=p.record.path+(F&&P+F)}if(C=wb(B,p,O),m?m.alias.push(C):(_=_||C,_!==C&&_.alias.push(C),y&&f.name&&!oc(C)&&o(f.name)),Kh(C)&&a(C),b.children){const k=b.children;for(let P=0;P<k.length;P++)i(k[P],C,m&&m.children[P])}m=m||C}return _?()=>{o(_)}:oi}function o(f){if(Hh(f)){const p=n.get(f);p&&(n.delete(f),r.splice(r.indexOf(p),1),p.children.forEach(o),p.alias.forEach(o))}else{const p=r.indexOf(f);p>-1&&(r.splice(p,1),f.record.name&&n.delete(f.record.name),f.children.forEach(o),f.alias.forEach(o))}}function l(){return r}function a(f){const p=Ab(f,r);r.splice(p,0,f),f.record.name&&!oc(f)&&n.set(f.record.name,f)}function u(f,p){let m,y={},b,O;if("name"in f&&f.name){if(m=n.get(f.name),!m)throw kn(1,{location:f});O=m.record.name,y=Le(nc(p.params,m.keys.filter(_=>!_.optional).concat(m.parent?m.parent.keys.filter(_=>_.optional):[]).map(_=>_.name)),f.params&&nc(f.params,m.keys.map(_=>_.name))),b=m.stringify(y)}else if(f.path!=null)b=f.path,m=r.find(_=>_.re.test(b)),m&&(y=m.parse(b),O=m.record.name);else{if(m=p.name?n.get(p.name):r.find(_=>_.re.test(p.path)),!m)throw kn(1,{location:f,currentLocation:p});O=m.record.name,y=Le({},p.params,f.params),b=m.stringify(y)}const L=[];let C=m;for(;C;)L.unshift(C.record),C=C.parent;return{name:O,path:b,params:y,matched:L,meta:Sb(L)}}e.forEach(f=>i(f));function c(){r.length=0,n.clear()}return{addRoute:i,resolve:u,removeRoute:o,clearRoutes:c,getRoutes:l,getRecordMatcher:s}}function nc(e,t){const r={};for(const n of t)n in e&&(r[n]=e[n]);return r}function ic(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Eb(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Eb(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const n in e.components)t[n]=typeof r=="object"?r[n]:r;return t}function oc(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Sb(e){return e.reduce((t,r)=>Le(t,r.meta),{})}function sc(e,t){const r={};for(const n in e)r[n]=n in t?t[n]:e[n];return r}function Ab(e,t){let r=0,n=t.length;for(;r!==n;){const i=r+n>>1;qh(e,t[i])<0?n=i:r=i+1}const s=Tb(e);return s&&(n=t.lastIndexOf(s,n-1)),n}function Tb(e){let t=e;for(;t=t.parent;)if(Kh(t)&&qh(e,t)===0)return t}function Kh({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ib(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;s<n.length;++s){const i=n[s].replace(jh," "),o=i.indexOf("="),l=vi(o<0?i:i.slice(0,o)),a=o<0?null:vi(i.slice(o+1));if(l in t){let u=t[l];$t(u)||(u=t[l]=[u]),u.push(a)}else t[l]=a}return t}function ac(e){let t="";for(let r in e){const n=e[r];if(r=Ky(r),n==null){n!==void 0&&(t+=(t.length?"&":"")+r);continue}($t(n)?n.map(i=>i&&Us(i)):[n&&Us(n)]).forEach(i=>{i!==void 0&&(t+=(t.length?"&":"")+r,i!=null&&(t+="="+i))})}return t}function Ob(e){const t={};for(const r in e){const n=e[r];n!==void 0&&(t[r]=$t(n)?n.map(s=>s==null?null:""+s):n==null?n:""+n)}return t}const Cb=Symbol(""),lc=Symbol(""),Fl=Symbol(""),zh=Symbol(""),Fs=Symbol("");function Hn(){let e=[];function t(n){return e.push(n),()=>{const s=e.indexOf(n);s>-1&&e.splice(s,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function Br(e,t,r,n,s,i=o=>o()){const o=n&&(n.enterCallbacks[s]=n.enterCallbacks[s]||[]);return()=>new Promise((l,a)=>{const u=p=>{p===!1?a(kn(4,{from:r,to:t})):p instanceof Error?a(p):hb(p)?a(kn(2,{from:t,to:p})):(o&&n.enterCallbacks[s]===o&&typeof p=="function"&&o.push(p),l())},c=i(()=>e.call(n&&n.instances[s],t,r,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(p=>a(p))})}function ss(e,t,r,n,s=i=>i()){const i=[];for(const o of e)for(const l in o.components){let a=o.components[l];if(!(t!=="beforeRouteEnter"&&!o.instances[l]))if(Lh(a)){const c=(a.__vccOpts||a)[t];c&&i.push(Br(c,r,n,o,l,s))}else{let u=a();i.push(()=>u.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${l}" at "${o.path}"`);const f=Ly(c)?c.default:c;o.mods[l]=c,o.components[l]=f;const m=(f.__vccOpts||f)[t];return m&&Br(m,r,n,o,l,s)()}))}}return i}function uc(e){const t=Jt(Fl),r=Jt(zh),n=Rt(()=>{const a=Cn(e.to);return t.resolve(a)}),s=Rt(()=>{const{matched:a}=n.value,{length:u}=a,c=a[u-1],f=r.matched;if(!c||!f.length)return-1;const p=f.findIndex(Pn.bind(null,c));if(p>-1)return p;const m=cc(a[u-2]);return u>1&&cc(c)===m&&f[f.length-1].path!==m?f.findIndex(Pn.bind(null,a[u-2])):p}),i=Rt(()=>s.value>-1&&kb(r.params,n.value.params)),o=Rt(()=>s.value>-1&&s.value===r.matched.length-1&&Wh(r.params,n.value.params));function l(a={}){return Pb(a)?t[Cn(e.replace)?"replace":"push"](Cn(e.to)).catch(oi):Promise.resolve()}return{route:n,href:Rt(()=>n.value.href),isActive:i,isExactActive:o,navigate:l}}const Rb=Zf({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:uc,setup(e,{slots:t}){const r=Si(uc(e)),{options:n}=Jt(Fl),s=Rt(()=>({[fc(e.activeClass,n.linkActiveClass,"router-link-active")]:r.isActive,[fc(e.exactActiveClass,n.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const i=t.default&&t.default(r);return e.custom?i:Ul("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:s.value},i)}}}),xb=Rb;function Pb(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function kb(e,t){for(const r in t){const n=t[r],s=e[r];if(typeof n=="string"){if(n!==s)return!1}else if(!$t(s)||s.length!==n.length||n.some((i,o)=>i!==s[o]))return!1}return!0}function cc(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const fc=(e,t,r)=>e??t??r,Bb=Zf({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const n=Jt(Fs),s=Rt(()=>e.route||n.value),i=Jt(lc,0),o=Rt(()=>{let u=Cn(i);const{matched:c}=s.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),l=Rt(()=>s.value.matched[o.value]);qi(lc,Rt(()=>o.value+1)),qi(Cb,l),qi(Fs,s);const a=Tl();return ri(()=>[a.value,l.value,e.name],([u,c,f],[p,m,y])=>{c&&(c.instances[f]=u,m&&m!==c&&u&&u===p&&(c.leaveGuards.size||(c.leaveGuards=m.leaveGuards),c.updateGuards.size||(c.updateGuards=m.updateGuards))),u&&c&&(!m||!Pn(c,m)||!p)&&(c.enterCallbacks[f]||[]).forEach(b=>b(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,f=l.value,p=f&&f.components[c];if(!p)return hc(r.default,{Component:p,route:u});const m=f.props[c],y=m?m===!0?u.params:typeof m=="function"?m(u):m:null,O=Ul(p,Le({},y,t,{onVnodeUnmounted:L=>{L.component.isUnmounted&&(f.instances[c]=null)},ref:a}));return hc(r.default,{Component:O,route:u})||O}}});function hc(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const Mb=Bb;function Qw(e){const t=_b(e.routes,e),r=e.parseQuery||Ib,n=e.stringifyQuery||ac,s=e.history,i=Hn(),o=Hn(),l=Hn(),a=Pg(Ar);let u=Ar;En&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=is.bind(null,E=>""+E),f=is.bind(null,Yy),p=is.bind(null,vi);function m(E,I){let K,re;return Hh(E)?(K=t.getRecordMatcher(E),re=I):re=E,t.addRoute(re,K)}function y(E){const I=t.getRecordMatcher(E);I&&t.removeRoute(I)}function b(){return t.getRoutes().map(E=>E.record)}function O(E){return!!t.getRecordMatcher(E)}function L(E,I){if(I=Le({},I||a.value),typeof E=="string"){const x=os(r,E,I.path),v=t.resolve({path:x.path},I),U=s.createHref(x.fullPath);return Le(x,v,{params:p(v.params),hash:vi(x.hash),redirectedFrom:void 0,href:U})}let K;if(E.path!=null)K=Le({},E,{path:os(r,E.path,I.path).path});else{const x=Le({},E.params);for(const v in x)x[v]==null&&delete x[v];K=Le({},E,{params:f(x)}),I.params=f(I.params)}const re=t.resolve(K,I),oe=E.hash||"";re.params=c(p(re.params));const se=Jy(n,Le({},E,{hash:qy(oe),path:re.path})),T=s.createHref(se);return Le({fullPath:se,hash:oe,query:n===ac?Ob(E.query):E.query||{}},re,{redirectedFrom:void 0,href:T})}function C(E){return typeof E=="string"?os(r,E,a.value.path):Le({},E)}function _(E,I){if(u!==E)return kn(8,{from:I,to:E})}function B(E){return P(E)}function F(E){return B(Le(C(E),{replace:!0}))}function k(E){const I=E.matched[E.matched.length-1];if(I&&I.redirect){const{redirect:K}=I;let re=typeof K=="function"?K(E):K;return typeof re=="string"&&(re=re.includes("?")||re.includes("#")?re=C(re):{path:re},re.params={}),Le({query:E.query,hash:E.hash,params:re.path!=null?{}:E.params},re)}}function P(E,I){const K=u=L(E),re=a.value,oe=E.state,se=E.force,T=E.replace===!0,x=k(K);if(x)return P(Le(C(x),{state:typeof x=="object"?Le({},oe,x.state):oe,force:se,replace:T}),I||K);const v=K;v.redirectedFrom=I;let U;return!se&&Xy(n,re,K)&&(U=kn(16,{to:v,from:re}),be(re,re,!0,!1)),(U?Promise.resolve(U):X(v,re)).catch(M=>tr(M)?tr(M,2)?M:ce(M):G(M,v,re)).then(M=>{if(M){if(tr(M,2))return P(Le({replace:T},C(M.to),{state:typeof M.to=="object"?Le({},oe,M.to.state):oe,force:se}),I||v)}else M=S(v,re,!0,T,oe);return Z(v,re,M),M})}function j(E,I){const K=_(E,I);return K?Promise.reject(K):Promise.resolve()}function D(E){const I=he.values().next().value;return I&&typeof I.runWithContext=="function"?I.runWithContext(E):E()}function X(E,I){let K;const[re,oe,se]=Lb(E,I);K=ss(re.reverse(),"beforeRouteLeave",E,I);for(const x of re)x.leaveGuards.forEach(v=>{K.push(Br(v,E,I))});const T=j.bind(null,E,I);return K.push(T),fe(K).then(()=>{K=[];for(const x of i.list())K.push(Br(x,E,I));return K.push(T),fe(K)}).then(()=>{K=ss(oe,"beforeRouteUpdate",E,I);for(const x of oe)x.updateGuards.forEach(v=>{K.push(Br(v,E,I))});return K.push(T),fe(K)}).then(()=>{K=[];for(const x of se)if(x.beforeEnter)if($t(x.beforeEnter))for(const v of x.beforeEnter)K.push(Br(v,E,I));else K.push(Br(x.beforeEnter,E,I));return K.push(T),fe(K)}).then(()=>(E.matched.forEach(x=>x.enterCallbacks={}),K=ss(se,"beforeRouteEnter",E,I,D),K.push(T),fe(K))).then(()=>{K=[];for(const x of o.list())K.push(Br(x,E,I));return K.push(T),fe(K)}).catch(x=>tr(x,8)?x:Promise.reject(x))}function Z(E,I,K){l.list().forEach(re=>D(()=>re(E,I,K)))}function S(E,I,K,re,oe){const se=_(E,I);if(se)return se;const T=I===Ar,x=En?history.state:{};K&&(re||T?s.replace(E.fullPath,Le({scroll:T&&x&&x.scroll},oe)):s.push(E.fullPath,oe)),a.value=E,be(E,I,K,T),ce()}let z;function ae(){z||(z=s.listen((E,I,K)=>{if(!we.listening)return;const re=L(E),oe=k(re);if(oe){P(Le(oe,{replace:!0}),re).catch(oi);return}u=re;const se=a.value;En&&sb(Xu(se.fullPath,K.delta),Lo()),X(re,se).catch(T=>tr(T,12)?T:tr(T,2)?(P(T.to,re).then(x=>{tr(x,20)&&!K.delta&&K.type===wi.pop&&s.go(-1,!1)}).catch(oi),Promise.reject()):(K.delta&&s.go(-K.delta,!1),G(T,re,se))).then(T=>{T=T||S(re,se,!1),T&&(K.delta&&!tr(T,8)?s.go(-K.delta,!1):K.type===wi.pop&&tr(T,20)&&s.go(-1,!1)),Z(re,se,T)}).catch(oi)}))}let ee=Hn(),le=Hn(),ne;function G(E,I,K){ce(E);const re=le.list();return re.length?re.forEach(oe=>oe(E,I,K)):console.error(E),Promise.reject(E)}function de(){return ne&&a.value!==Ar?Promise.resolve():new Promise((E,I)=>{ee.add([E,I])})}function ce(E){return ne||(ne=!E,ae(),ee.list().forEach(([I,K])=>E?K(E):I()),ee.reset()),E}function be(E,I,K,re){const{scrollBehavior:oe}=e;if(!En||!oe)return Promise.resolve();const se=!K&&ab(Xu(E.fullPath,0))||(re||!K)&&history.state&&history.state.scroll||null;return Ol().then(()=>oe(E,I,se)).then(T=>T&&ob(T)).catch(T=>G(T,E,I))}const A=E=>s.go(E);let ie;const he=new Set,we={currentRoute:a,listening:!0,addRoute:m,removeRoute:y,clearRoutes:t.clearRoutes,hasRoute:O,getRoutes:b,resolve:L,options:e,push:B,replace:F,go:A,back:()=>A(-1),forward:()=>A(1),beforeEach:i.add,beforeResolve:o.add,afterEach:l.add,onError:le.add,isReady:de,install(E){const I=this;E.component("RouterLink",xb),E.component("RouterView",Mb),E.config.globalProperties.$router=I,Object.defineProperty(E.config.globalProperties,"$route",{enumerable:!0,get:()=>Cn(a)}),En&&!ie&&a.value===Ar&&(ie=!0,B(s.location).catch(oe=>{}));const K={};for(const oe in Ar)Object.defineProperty(K,oe,{get:()=>a.value[oe],enumerable:!0});E.provide(Fl,I),E.provide(zh,Nf(K)),E.provide(Fs,a);const re=E.unmount;he.add(E),E.unmount=function(){he.delete(E),he.size<1&&(u=Ar,z&&z(),z=null,a.value=Ar,ie=!1,ne=!1),re()}}};function fe(E){return E.reduce((I,K)=>I.then(()=>D(K)),Promise.resolve())}return we}function Lb(e,t){const r=[],n=[],s=[],i=Math.max(t.matched.length,e.matched.length);for(let o=0;o<i;o++){const l=t.matched[o];l&&(e.matched.find(u=>Pn(u,l))?n.push(l):r.push(l));const a=e.matched[o];a&&(t.matched.find(u=>Pn(u,a))||s.push(a))}return[r,n,s]}var Wl=Object.defineProperty,Nb=Object.getOwnPropertyDescriptor,jb=Object.getOwnPropertyNames,Ub=Object.prototype.hasOwnProperty,st=(e,t)=>()=>(e&&(t=e(e=0)),t),ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),pn=(e,t)=>{for(var r in t)Wl(e,r,{get:t[r],enumerable:!0})},Db=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of jb(t))!Ub.call(e,s)&&s!==r&&Wl(e,s,{get:()=>t[s],enumerable:!(n=Nb(t,s))||n.enumerable});return e},De=e=>Db(Wl({},"__esModule",{value:!0}),e),pe=st(()=>{}),Me={};pn(Me,{_debugEnd:()=>va,_debugProcess:()=>ba,_events:()=>Ma,_eventsCount:()=>La,_exiting:()=>ia,_fatalExceptions:()=>ga,_getActiveHandles:()=>ed,_getActiveRequests:()=>Zh,_kill:()=>aa,_linkedBinding:()=>Jh,_maxListeners:()=>Ba,_preload_modules:()=>Pa,_rawDebug:()=>ta,_startProfilerIdleNotifier:()=>wa,_stopProfilerIdleNotifier:()=>_a,_tickCallback:()=>ya,abort:()=>Ta,addListener:()=>Na,allowedNodeEnvironmentFlags:()=>da,arch:()=>$s,argv:()=>qs,argv0:()=>xa,assert:()=>td,binding:()=>Qs,chdir:()=>Zs,config:()=>oa,cpuUsage:()=>Qn,cwd:()=>Xs,debugPort:()=>Ra,default:()=>Hl,dlopen:()=>Xh,domain:()=>na,emit:()=>Wa,emitWarning:()=>Gs,env:()=>Vs,execArgv:()=>Ks,execPath:()=>Ca,exit:()=>fa,features:()=>pa,hasUncaughtExceptionCaptureCallback:()=>rd,hrtime:()=>Gi,kill:()=>ca,listeners:()=>id,memoryUsage:()=>ua,moduleLoadList:()=>ra,nextTick:()=>Gh,off:()=>Ua,on:()=>nr,once:()=>ja,openStdin:()=>ha,pid:()=>Ia,platform:()=>Hs,ppid:()=>Oa,prependListener:()=>$a,prependOnceListener:()=>Ha,reallyExit:()=>sa,release:()=>ea,removeAllListeners:()=>Fa,removeListener:()=>Da,resourceUsage:()=>la,setSourceMapsEnabled:()=>ka,setUncaughtExceptionCaptureCallback:()=>ma,stderr:()=>Sa,stdin:()=>Aa,stdout:()=>Ea,title:()=>Ws,umask:()=>Js,uptime:()=>nd,version:()=>zs,versions:()=>Ys});function $l(e){throw new Error("Node.js process "+e+" is not supported by JSPM core outside of Node.js")}function Fb(){!ln||!nn||(ln=!1,nn.length?Yt=nn.concat(Yt):ai=-1,Yt.length&&Yh())}function Yh(){if(!ln){var e=setTimeout(Fb,0);ln=!0;for(var t=Yt.length;t;){for(nn=Yt,Yt=[];++ai<t;)nn&&nn[ai].run();ai=-1,t=Yt.length}nn=null,ln=!1,clearTimeout(e)}}function Gh(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Yt.push(new Qh(e,t)),Yt.length===1&&!ln&&setTimeout(Yh,0)}function Qh(e,t){this.fun=e,this.array=t}function ut(){}function Jh(e){$l("_linkedBinding")}function Xh(e){$l("dlopen")}function Zh(){return[]}function ed(){return[]}function td(e,t){if(!e)throw new Error(t||"assertion error")}function rd(){return!1}function nd(){return lr.now()/1e3}function Gi(e){var t=Math.floor((Date.now()-lr.now())*.001),r=lr.now()*.001,n=Math.floor(r)+t,s=Math.floor(r%1*1e9);return e&&(n=n-e[0],s=s-e[1],s<0&&(n--,s+=Qi)),[n,s]}function nr(){return Hl}function id(e){return[]}var Yt,ln,nn,ai,Ws,$s,Hs,Vs,qs,Ks,zs,Ys,Gs,Qs,Js,Xs,Zs,ea,ta,ra,na,ia,oa,sa,aa,Qn,la,ua,ca,fa,ha,da,pa,ga,ma,ya,ba,va,wa,_a,Ea,Sa,Aa,Ta,Ia,Oa,Ca,Ra,xa,Pa,ka,lr,as,Qi,Ba,Ma,La,Na,ja,Ua,Da,Fa,Wa,$a,Ha,Hl,Wb=st(()=>{pe(),me(),ge(),Yt=[],ln=!1,ai=-1,Qh.prototype.run=function(){this.fun.apply(null,this.array)},Ws="browser",$s="x64",Hs="browser",Vs={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},qs=["/usr/bin/node"],Ks=[],zs="v16.8.0",Ys={},Gs=function(e,t){console.warn((t?t+": ":"")+e)},Qs=function(e){$l("binding")},Js=function(e){return 0},Xs=function(){return"/"},Zs=function(e){},ea={name:"node",sourceUrl:"",headersUrl:"",libUrl:""},ta=ut,ra=[],na={},ia=!1,oa={},sa=ut,aa=ut,Qn=function(){return{}},la=Qn,ua=Qn,ca=ut,fa=ut,ha=ut,da={},pa={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},ga=ut,ma=ut,ya=ut,ba=ut,va=ut,wa=ut,_a=ut,Ea=void 0,Sa=void 0,Aa=void 0,Ta=ut,Ia=2,Oa=1,Ca="/bin/usr/node",Ra=9229,xa="node",Pa=[],ka=ut,lr={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0},lr.now===void 0&&(as=Date.now(),lr.timing&&lr.timing.navigationStart&&(as=lr.timing.navigationStart),lr.now=()=>Date.now()-as),Qi=1e9,Gi.bigint=function(e){var t=Gi(e);return typeof BigInt>"u"?t[0]*Qi+t[1]:BigInt(t[0]*Qi)+BigInt(t[1])},Ba=10,Ma={},La=0,Na=nr,ja=nr,Ua=nr,Da=nr,Fa=nr,Wa=ut,$a=nr,Ha=nr,Hl={version:zs,versions:Ys,arch:$s,platform:Hs,release:ea,_rawDebug:ta,moduleLoadList:ra,binding:Qs,_linkedBinding:Jh,_events:Ma,_eventsCount:La,_maxListeners:Ba,on:nr,addListener:Na,once:ja,off:Ua,removeListener:Da,removeAllListeners:Fa,emit:Wa,prependListener:$a,prependOnceListener:Ha,listeners:id,domain:na,_exiting:ia,config:oa,dlopen:Xh,uptime:nd,_getActiveRequests:Zh,_getActiveHandles:ed,reallyExit:sa,_kill:aa,cpuUsage:Qn,resourceUsage:la,memoryUsage:ua,kill:ca,exit:fa,openStdin:ha,allowedNodeEnvironmentFlags:da,assert:td,features:pa,_fatalExceptions:ga,setUncaughtExceptionCaptureCallback:ma,hasUncaughtExceptionCaptureCallback:rd,emitWarning:Gs,nextTick:Gh,_tickCallback:ya,_debugProcess:ba,_debugEnd:va,_startProfilerIdleNotifier:wa,_stopProfilerIdleNotifier:_a,stdout:Ea,stdin:Aa,stderr:Sa,abort:Ta,umask:Js,chdir:Zs,cwd:Xs,env:Vs,title:Ws,argv:qs,execArgv:Ks,pid:Ia,ppid:Oa,execPath:Ca,debugPort:Ra,hrtime:Gi,argv0:xa,_preload_modules:Pa,setSourceMapsEnabled:ka}}),ge=st(()=>{Wb()}),at={};pn(at,{Buffer:()=>ho,INSPECT_MAX_BYTES:()=>od,default:()=>ir,kMaxLength:()=>sd});function $b(){if(Va)return Sn;Va=!0,Sn.byteLength=l,Sn.toByteArray=u,Sn.fromByteArray=p;for(var e=[],t=[],r=typeof Uint8Array<"u"?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,i=n.length;s<i;++s)e[s]=n[s],t[n.charCodeAt(s)]=s;t[45]=62,t[95]=63;function o(m){var y=m.length;if(y%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var b=m.indexOf("=");b===-1&&(b=y);var O=b===y?0:4-b%4;return[b,O]}function l(m){var y=o(m),b=y[0],O=y[1];return(b+O)*3/4-O}function a(m,y,b){return(y+b)*3/4-b}function u(m){var y,b=o(m),O=b[0],L=b[1],C=new r(a(m,O,L)),_=0,B=L>0?O-4:O,F;for(F=0;F<B;F+=4)y=t[m.charCodeAt(F)]<<18|t[m.charCodeAt(F+1)]<<12|t[m.charCodeAt(F+2)]<<6|t[m.charCodeAt(F+3)],C[_++]=y>>16&255,C[_++]=y>>8&255,C[_++]=y&255;return L===2&&(y=t[m.charCodeAt(F)]<<2|t[m.charCodeAt(F+1)]>>4,C[_++]=y&255),L===1&&(y=t[m.charCodeAt(F)]<<10|t[m.charCodeAt(F+1)]<<4|t[m.charCodeAt(F+2)]>>2,C[_++]=y>>8&255,C[_++]=y&255),C}function c(m){return e[m>>18&63]+e[m>>12&63]+e[m>>6&63]+e[m&63]}function f(m,y,b){for(var O,L=[],C=y;C<b;C+=3)O=(m[C]<<16&16711680)+(m[C+1]<<8&65280)+(m[C+2]&255),L.push(c(O));return L.join("")}function p(m){for(var y,b=m.length,O=b%3,L=[],C=16383,_=0,B=b-O;_<B;_+=C)L.push(f(m,_,_+C>B?B:_+C));return O===1?(y=m[b-1],L.push(e[y>>2]+e[y<<4&63]+"==")):O===2&&(y=(m[b-2]<<8)+m[b-1],L.push(e[y>>10]+e[y>>4&63]+e[y<<2&63]+"=")),L.join("")}return Sn}function Hb(){return qa?Jn:(qa=!0,Jn.read=function(e,t,r,n,s){var i,o,l=s*8-n-1,a=(1<<l)-1,u=a>>1,c=-7,f=r?s-1:0,p=r?-1:1,m=e[t+f];for(f+=p,i=m&(1<<-c)-1,m>>=-c,c+=l;c>0;i=i*256+e[t+f],f+=p,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=o*256+e[t+f],f+=p,c-=8);if(i===0)i=1-u;else{if(i===a)return o?NaN:(m?-1:1)*(1/0);o=o+Math.pow(2,n),i=i-u}return(m?-1:1)*o*Math.pow(2,i-n)},Jn.write=function(e,t,r,n,s,i){var o,l,a,u=i*8-s-1,c=(1<<u)-1,f=c>>1,p=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,y=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-o))<1&&(o--,a*=2),o+f>=1?t+=p/a:t+=p*Math.pow(2,1-f),t*a>=2&&(o++,a/=2),o+f>=c?(l=0,o=c):o+f>=1?(l=(t*a-1)*Math.pow(2,s),o=o+f):(l=t*Math.pow(2,f-1)*Math.pow(2,s),o=0));s>=8;e[r+m]=l&255,m+=y,l/=256,s-=8);for(o=o<<s|l,u+=s;u>0;e[r+m]=o&255,m+=y,o/=256,u-=8);e[r+m-y]|=b*128},Jn)}function Vb(){if(Ka)return Ir;Ka=!0;let e=$b(),t=Hb(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Ir.Buffer=o,Ir.SlowBuffer=L,Ir.INSPECT_MAX_BYTES=50;let n=2147483647;Ir.kMaxLength=n,o.TYPED_ARRAY_SUPPORT=s(),!o.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function s(){try{let d=new Uint8Array(1),h={foo:function(){return 42}};return Object.setPrototypeOf(h,Uint8Array.prototype),Object.setPrototypeOf(d,h),d.foo()===42}catch{return!1}}Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.buffer}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.byteOffset}});function i(d){if(d>n)throw new RangeError('The value "'+d+'" is invalid for option "size"');let h=new Uint8Array(d);return Object.setPrototypeOf(h,o.prototype),h}function o(d,h,g){if(typeof d=="number"){if(typeof h=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(d)}return l(d,h,g)}o.poolSize=8192;function l(d,h,g){if(typeof d=="string")return f(d,h);if(ArrayBuffer.isView(d))return m(d);if(d==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof d);if($(d,ArrayBuffer)||d&&$(d.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&($(d,SharedArrayBuffer)||d&&$(d.buffer,SharedArrayBuffer)))return y(d,h,g);if(typeof d=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let w=d.valueOf&&d.valueOf();if(w!=null&&w!==d)return o.from(w,h,g);let W=b(d);if(W)return W;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof d[Symbol.toPrimitive]=="function")return o.from(d[Symbol.toPrimitive]("string"),h,g);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof d)}o.from=function(d,h,g){return l(d,h,g)},Object.setPrototypeOf(o.prototype,Uint8Array.prototype),Object.setPrototypeOf(o,Uint8Array);function a(d){if(typeof d!="number")throw new TypeError('"size" argument must be of type number');if(d<0)throw new RangeError('The value "'+d+'" is invalid for option "size"')}function u(d,h,g){return a(d),d<=0?i(d):h!==void 0?typeof g=="string"?i(d).fill(h,g):i(d).fill(h):i(d)}o.alloc=function(d,h,g){return u(d,h,g)};function c(d){return a(d),i(d<0?0:O(d)|0)}o.allocUnsafe=function(d){return c(d)},o.allocUnsafeSlow=function(d){return c(d)};function f(d,h){if((typeof h!="string"||h==="")&&(h="utf8"),!o.isEncoding(h))throw new TypeError("Unknown encoding: "+h);let g=C(d,h)|0,w=i(g),W=w.write(d,h);return W!==g&&(w=w.slice(0,W)),w}function p(d){let h=d.length<0?0:O(d.length)|0,g=i(h);for(let w=0;w<h;w+=1)g[w]=d[w]&255;return g}function m(d){if($(d,Uint8Array)){let h=new Uint8Array(d);return y(h.buffer,h.byteOffset,h.byteLength)}return p(d)}function y(d,h,g){if(h<0||d.byteLength<h)throw new RangeError('"offset" is outside of buffer bounds');if(d.byteLength<h+(g||0))throw new RangeError('"length" is outside of buffer bounds');let w;return h===void 0&&g===void 0?w=new Uint8Array(d):g===void 0?w=new Uint8Array(d,h):w=new Uint8Array(d,h,g),Object.setPrototypeOf(w,o.prototype),w}function b(d){if(o.isBuffer(d)){let h=O(d.length)|0,g=i(h);return g.length===0||d.copy(g,0,0,h),g}if(d.length!==void 0)return typeof d.length!="number"||R(d.length)?i(0):p(d);if(d.type==="Buffer"&&Array.isArray(d.data))return p(d.data)}function O(d){if(d>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return d|0}function L(d){return+d!=d&&(d=0),o.alloc(+d)}o.isBuffer=function(d){return d!=null&&d._isBuffer===!0&&d!==o.prototype},o.compare=function(d,h){if($(d,Uint8Array)&&(d=o.from(d,d.offset,d.byteLength)),$(h,Uint8Array)&&(h=o.from(h,h.offset,h.byteLength)),!o.isBuffer(d)||!o.isBuffer(h))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(d===h)return 0;let g=d.length,w=h.length;for(let W=0,Q=Math.min(g,w);W<Q;++W)if(d[W]!==h[W]){g=d[W],w=h[W];break}return g<w?-1:w<g?1:0},o.isEncoding=function(d){switch(String(d).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(d,h){if(!Array.isArray(d))throw new TypeError('"list" argument must be an Array of Buffers');if(d.length===0)return o.alloc(0);let g;if(h===void 0)for(h=0,g=0;g<d.length;++g)h+=d[g].length;let w=o.allocUnsafe(h),W=0;for(g=0;g<d.length;++g){let Q=d[g];if($(Q,Uint8Array))W+Q.length>w.length?(o.isBuffer(Q)||(Q=o.from(Q)),Q.copy(w,W)):Uint8Array.prototype.set.call(w,Q,W);else if(o.isBuffer(Q))Q.copy(w,W);else throw new TypeError('"list" argument must be an Array of Buffers');W+=Q.length}return w};function C(d,h){if(o.isBuffer(d))return d.length;if(ArrayBuffer.isView(d)||$(d,ArrayBuffer))return d.byteLength;if(typeof d!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof d);let g=d.length,w=arguments.length>2&&arguments[2]===!0;if(!w&&g===0)return 0;let W=!1;for(;;)switch(h){case"ascii":case"latin1":case"binary":return g;case"utf8":case"utf-8":return U(d).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return g*2;case"hex":return g>>>1;case"base64":return J(d).length;default:if(W)return w?-1:U(d).length;h=(""+h).toLowerCase(),W=!0}}o.byteLength=C;function _(d,h,g){let w=!1;if((h===void 0||h<0)&&(h=0),h>this.length||((g===void 0||g>this.length)&&(g=this.length),g<=0)||(g>>>=0,h>>>=0,g<=h))return"";for(d||(d="utf8");;)switch(d){case"hex":return G(this,h,g);case"utf8":case"utf-8":return z(this,h,g);case"ascii":return le(this,h,g);case"latin1":case"binary":return ne(this,h,g);case"base64":return S(this,h,g);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return de(this,h,g);default:if(w)throw new TypeError("Unknown encoding: "+d);d=(d+"").toLowerCase(),w=!0}}o.prototype._isBuffer=!0;function B(d,h,g){let w=d[h];d[h]=d[g],d[g]=w}o.prototype.swap16=function(){let d=this.length;if(d%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let h=0;h<d;h+=2)B(this,h,h+1);return this},o.prototype.swap32=function(){let d=this.length;if(d%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let h=0;h<d;h+=4)B(this,h,h+3),B(this,h+1,h+2);return this},o.prototype.swap64=function(){let d=this.length;if(d%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let h=0;h<d;h+=8)B(this,h,h+7),B(this,h+1,h+6),B(this,h+2,h+5),B(this,h+3,h+4);return this},o.prototype.toString=function(){let d=this.length;return d===0?"":arguments.length===0?z(this,0,d):_.apply(this,arguments)},o.prototype.toLocaleString=o.prototype.toString,o.prototype.equals=function(d){if(!o.isBuffer(d))throw new TypeError("Argument must be a Buffer");return this===d?!0:o.compare(this,d)===0},o.prototype.inspect=function(){let d="",h=Ir.INSPECT_MAX_BYTES;return d=this.toString("hex",0,h).replace(/(.{2})/g,"$1 ").trim(),this.length>h&&(d+=" ... "),"<Buffer "+d+">"},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(d,h,g,w,W){if($(d,Uint8Array)&&(d=o.from(d,d.offset,d.byteLength)),!o.isBuffer(d))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof d);if(h===void 0&&(h=0),g===void 0&&(g=d?d.length:0),w===void 0&&(w=0),W===void 0&&(W=this.length),h<0||g>d.length||w<0||W>this.length)throw new RangeError("out of range index");if(w>=W&&h>=g)return 0;if(w>=W)return-1;if(h>=g)return 1;if(h>>>=0,g>>>=0,w>>>=0,W>>>=0,this===d)return 0;let Q=W-w,ue=g-h,Ee=Math.min(Q,ue),Ce=this.slice(w,W),xe=d.slice(h,g);for(let _e=0;_e<Ee;++_e)if(Ce[_e]!==xe[_e]){Q=Ce[_e],ue=xe[_e];break}return Q<ue?-1:ue<Q?1:0};function F(d,h,g,w,W){if(d.length===0)return-1;if(typeof g=="string"?(w=g,g=0):g>2147483647?g=2147483647:g<-2147483648&&(g=-2147483648),g=+g,R(g)&&(g=W?0:d.length-1),g<0&&(g=d.length+g),g>=d.length){if(W)return-1;g=d.length-1}else if(g<0)if(W)g=0;else return-1;if(typeof h=="string"&&(h=o.from(h,w)),o.isBuffer(h))return h.length===0?-1:k(d,h,g,w,W);if(typeof h=="number")return h=h&255,typeof Uint8Array.prototype.indexOf=="function"?W?Uint8Array.prototype.indexOf.call(d,h,g):Uint8Array.prototype.lastIndexOf.call(d,h,g):k(d,[h],g,w,W);throw new TypeError("val must be string, number or Buffer")}function k(d,h,g,w,W){let Q=1,ue=d.length,Ee=h.length;if(w!==void 0&&(w=String(w).toLowerCase(),w==="ucs2"||w==="ucs-2"||w==="utf16le"||w==="utf-16le")){if(d.length<2||h.length<2)return-1;Q=2,ue/=2,Ee/=2,g/=2}function Ce(_e,Ae){return Q===1?_e[Ae]:_e.readUInt16BE(Ae*Q)}let xe;if(W){let _e=-1;for(xe=g;xe<ue;xe++)if(Ce(d,xe)===Ce(h,_e===-1?0:xe-_e)){if(_e===-1&&(_e=xe),xe-_e+1===Ee)return _e*Q}else _e!==-1&&(xe-=xe-_e),_e=-1}else for(g+Ee>ue&&(g=ue-Ee),xe=g;xe>=0;xe--){let _e=!0;for(let Ae=0;Ae<Ee;Ae++)if(Ce(d,xe+Ae)!==Ce(h,Ae)){_e=!1;break}if(_e)return xe}return-1}o.prototype.includes=function(d,h,g){return this.indexOf(d,h,g)!==-1},o.prototype.indexOf=function(d,h,g){return F(this,d,h,g,!0)},o.prototype.lastIndexOf=function(d,h,g){return F(this,d,h,g,!1)};function P(d,h,g,w){g=Number(g)||0;let W=d.length-g;w?(w=Number(w),w>W&&(w=W)):w=W;let Q=h.length;w>Q/2&&(w=Q/2);let ue;for(ue=0;ue<w;++ue){let Ee=parseInt(h.substr(ue*2,2),16);if(R(Ee))return ue;d[g+ue]=Ee}return ue}function j(d,h,g,w){return N(U(h,d.length-g),d,g,w)}function D(d,h,g,w){return N(M(h),d,g,w)}function X(d,h,g,w){return N(J(h),d,g,w)}function Z(d,h,g,w){return N(Y(h,d.length-g),d,g,w)}o.prototype.write=function(d,h,g,w){if(h===void 0)w="utf8",g=this.length,h=0;else if(g===void 0&&typeof h=="string")w=h,g=this.length,h=0;else if(isFinite(h))h=h>>>0,isFinite(g)?(g=g>>>0,w===void 0&&(w="utf8")):(w=g,g=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let W=this.length-h;if((g===void 0||g>W)&&(g=W),d.length>0&&(g<0||h<0)||h>this.length)throw new RangeError("Attempt to write outside buffer bounds");w||(w="utf8");let Q=!1;for(;;)switch(w){case"hex":return P(this,d,h,g);case"utf8":case"utf-8":return j(this,d,h,g);case"ascii":case"latin1":case"binary":return D(this,d,h,g);case"base64":return X(this,d,h,g);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z(this,d,h,g);default:if(Q)throw new TypeError("Unknown encoding: "+w);w=(""+w).toLowerCase(),Q=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function S(d,h,g){return h===0&&g===d.length?e.fromByteArray(d):e.fromByteArray(d.slice(h,g))}function z(d,h,g){g=Math.min(d.length,g);let w=[],W=h;for(;W<g;){let Q=d[W],ue=null,Ee=Q>239?4:Q>223?3:Q>191?2:1;if(W+Ee<=g){let Ce,xe,_e,Ae;switch(Ee){case 1:Q<128&&(ue=Q);break;case 2:Ce=d[W+1],(Ce&192)===128&&(Ae=(Q&31)<<6|Ce&63,Ae>127&&(ue=Ae));break;case 3:Ce=d[W+1],xe=d[W+2],(Ce&192)===128&&(xe&192)===128&&(Ae=(Q&15)<<12|(Ce&63)<<6|xe&63,Ae>2047&&(Ae<55296||Ae>57343)&&(ue=Ae));break;case 4:Ce=d[W+1],xe=d[W+2],_e=d[W+3],(Ce&192)===128&&(xe&192)===128&&(_e&192)===128&&(Ae=(Q&15)<<18|(Ce&63)<<12|(xe&63)<<6|_e&63,Ae>65535&&Ae<1114112&&(ue=Ae))}}ue===null?(ue=65533,Ee=1):ue>65535&&(ue-=65536,w.push(ue>>>10&1023|55296),ue=56320|ue&1023),w.push(ue),W+=Ee}return ee(w)}let ae=4096;function ee(d){let h=d.length;if(h<=ae)return String.fromCharCode.apply(String,d);let g="",w=0;for(;w<h;)g+=String.fromCharCode.apply(String,d.slice(w,w+=ae));return g}function le(d,h,g){let w="";g=Math.min(d.length,g);for(let W=h;W<g;++W)w+=String.fromCharCode(d[W]&127);return w}function ne(d,h,g){let w="";g=Math.min(d.length,g);for(let W=h;W<g;++W)w+=String.fromCharCode(d[W]);return w}function G(d,h,g){let w=d.length;(!h||h<0)&&(h=0),(!g||g<0||g>w)&&(g=w);let W="";for(let Q=h;Q<g;++Q)W+=H[d[Q]];return W}function de(d,h,g){let w=d.slice(h,g),W="";for(let Q=0;Q<w.length-1;Q+=2)W+=String.fromCharCode(w[Q]+w[Q+1]*256);return W}o.prototype.slice=function(d,h){let g=this.length;d=~~d,h=h===void 0?g:~~h,d<0?(d+=g,d<0&&(d=0)):d>g&&(d=g),h<0?(h+=g,h<0&&(h=0)):h>g&&(h=g),h<d&&(h=d);let w=this.subarray(d,h);return Object.setPrototypeOf(w,o.prototype),w};function ce(d,h,g){if(d%1!==0||d<0)throw new RangeError("offset is not uint");if(d+h>g)throw new RangeError("Trying to access beyond buffer length")}o.prototype.readUintLE=o.prototype.readUIntLE=function(d,h,g){d=d>>>0,h=h>>>0,g||ce(d,h,this.length);let w=this[d],W=1,Q=0;for(;++Q<h&&(W*=256);)w+=this[d+Q]*W;return w},o.prototype.readUintBE=o.prototype.readUIntBE=function(d,h,g){d=d>>>0,h=h>>>0,g||ce(d,h,this.length);let w=this[d+--h],W=1;for(;h>0&&(W*=256);)w+=this[d+--h]*W;return w},o.prototype.readUint8=o.prototype.readUInt8=function(d,h){return d=d>>>0,h||ce(d,1,this.length),this[d]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(d,h){return d=d>>>0,h||ce(d,2,this.length),this[d]|this[d+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(d,h){return d=d>>>0,h||ce(d,2,this.length),this[d]<<8|this[d+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(d,h){return d=d>>>0,h||ce(d,4,this.length),(this[d]|this[d+1]<<8|this[d+2]<<16)+this[d+3]*16777216},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(d,h){return d=d>>>0,h||ce(d,4,this.length),this[d]*16777216+(this[d+1]<<16|this[d+2]<<8|this[d+3])},o.prototype.readBigUInt64LE=V(function(d){d=d>>>0,se(d,"offset");let h=this[d],g=this[d+7];(h===void 0||g===void 0)&&T(d,this.length-8);let w=h+this[++d]*2**8+this[++d]*2**16+this[++d]*2**24,W=this[++d]+this[++d]*2**8+this[++d]*2**16+g*2**24;return BigInt(w)+(BigInt(W)<<BigInt(32))}),o.prototype.readBigUInt64BE=V(function(d){d=d>>>0,se(d,"offset");let h=this[d],g=this[d+7];(h===void 0||g===void 0)&&T(d,this.length-8);let w=h*2**24+this[++d]*2**16+this[++d]*2**8+this[++d],W=this[++d]*2**24+this[++d]*2**16+this[++d]*2**8+g;return(BigInt(w)<<BigInt(32))+BigInt(W)}),o.prototype.readIntLE=function(d,h,g){d=d>>>0,h=h>>>0,g||ce(d,h,this.length);let w=this[d],W=1,Q=0;for(;++Q<h&&(W*=256);)w+=this[d+Q]*W;return W*=128,w>=W&&(w-=Math.pow(2,8*h)),w},o.prototype.readIntBE=function(d,h,g){d=d>>>0,h=h>>>0,g||ce(d,h,this.length);let w=h,W=1,Q=this[d+--w];for(;w>0&&(W*=256);)Q+=this[d+--w]*W;return W*=128,Q>=W&&(Q-=Math.pow(2,8*h)),Q},o.prototype.readInt8=function(d,h){return d=d>>>0,h||ce(d,1,this.length),this[d]&128?(255-this[d]+1)*-1:this[d]},o.prototype.readInt16LE=function(d,h){d=d>>>0,h||ce(d,2,this.length);let g=this[d]|this[d+1]<<8;return g&32768?g|4294901760:g},o.prototype.readInt16BE=function(d,h){d=d>>>0,h||ce(d,2,this.length);let g=this[d+1]|this[d]<<8;return g&32768?g|4294901760:g},o.prototype.readInt32LE=function(d,h){return d=d>>>0,h||ce(d,4,this.length),this[d]|this[d+1]<<8|this[d+2]<<16|this[d+3]<<24},o.prototype.readInt32BE=function(d,h){return d=d>>>0,h||ce(d,4,this.length),this[d]<<24|this[d+1]<<16|this[d+2]<<8|this[d+3]},o.prototype.readBigInt64LE=V(function(d){d=d>>>0,se(d,"offset");let h=this[d],g=this[d+7];(h===void 0||g===void 0)&&T(d,this.length-8);let w=this[d+4]+this[d+5]*2**8+this[d+6]*2**16+(g<<24);return(BigInt(w)<<BigInt(32))+BigInt(h+this[++d]*2**8+this[++d]*2**16+this[++d]*2**24)}),o.prototype.readBigInt64BE=V(function(d){d=d>>>0,se(d,"offset");let h=this[d],g=this[d+7];(h===void 0||g===void 0)&&T(d,this.length-8);let w=(h<<24)+this[++d]*2**16+this[++d]*2**8+this[++d];return(BigInt(w)<<BigInt(32))+BigInt(this[++d]*2**24+this[++d]*2**16+this[++d]*2**8+g)}),o.prototype.readFloatLE=function(d,h){return d=d>>>0,h||ce(d,4,this.length),t.read(this,d,!0,23,4)},o.prototype.readFloatBE=function(d,h){return d=d>>>0,h||ce(d,4,this.length),t.read(this,d,!1,23,4)},o.prototype.readDoubleLE=function(d,h){return d=d>>>0,h||ce(d,8,this.length),t.read(this,d,!0,52,8)},o.prototype.readDoubleBE=function(d,h){return d=d>>>0,h||ce(d,8,this.length),t.read(this,d,!1,52,8)};function be(d,h,g,w,W,Q){if(!o.isBuffer(d))throw new TypeError('"buffer" argument must be a Buffer instance');if(h>W||h<Q)throw new RangeError('"value" argument is out of bounds');if(g+w>d.length)throw new RangeError("Index out of range")}o.prototype.writeUintLE=o.prototype.writeUIntLE=function(d,h,g,w){if(d=+d,h=h>>>0,g=g>>>0,!w){let ue=Math.pow(2,8*g)-1;be(this,d,h,g,ue,0)}let W=1,Q=0;for(this[h]=d&255;++Q<g&&(W*=256);)this[h+Q]=d/W&255;return h+g},o.prototype.writeUintBE=o.prototype.writeUIntBE=function(d,h,g,w){if(d=+d,h=h>>>0,g=g>>>0,!w){let ue=Math.pow(2,8*g)-1;be(this,d,h,g,ue,0)}let W=g-1,Q=1;for(this[h+W]=d&255;--W>=0&&(Q*=256);)this[h+W]=d/Q&255;return h+g},o.prototype.writeUint8=o.prototype.writeUInt8=function(d,h,g){return d=+d,h=h>>>0,g||be(this,d,h,1,255,0),this[h]=d&255,h+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(d,h,g){return d=+d,h=h>>>0,g||be(this,d,h,2,65535,0),this[h]=d&255,this[h+1]=d>>>8,h+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(d,h,g){return d=+d,h=h>>>0,g||be(this,d,h,2,65535,0),this[h]=d>>>8,this[h+1]=d&255,h+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(d,h,g){return d=+d,h=h>>>0,g||be(this,d,h,4,4294967295,0),this[h+3]=d>>>24,this[h+2]=d>>>16,this[h+1]=d>>>8,this[h]=d&255,h+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(d,h,g){return d=+d,h=h>>>0,g||be(this,d,h,4,4294967295,0),this[h]=d>>>24,this[h+1]=d>>>16,this[h+2]=d>>>8,this[h+3]=d&255,h+4};function A(d,h,g,w,W){oe(h,w,W,d,g,7);let Q=Number(h&BigInt(4294967295));d[g++]=Q,Q=Q>>8,d[g++]=Q,Q=Q>>8,d[g++]=Q,Q=Q>>8,d[g++]=Q;let ue=Number(h>>BigInt(32)&BigInt(4294967295));return d[g++]=ue,ue=ue>>8,d[g++]=ue,ue=ue>>8,d[g++]=ue,ue=ue>>8,d[g++]=ue,g}function ie(d,h,g,w,W){oe(h,w,W,d,g,7);let Q=Number(h&BigInt(4294967295));d[g+7]=Q,Q=Q>>8,d[g+6]=Q,Q=Q>>8,d[g+5]=Q,Q=Q>>8,d[g+4]=Q;let ue=Number(h>>BigInt(32)&BigInt(4294967295));return d[g+3]=ue,ue=ue>>8,d[g+2]=ue,ue=ue>>8,d[g+1]=ue,ue=ue>>8,d[g]=ue,g+8}o.prototype.writeBigUInt64LE=V(function(d,h=0){return A(this,d,h,BigInt(0),BigInt("0xffffffffffffffff"))}),o.prototype.writeBigUInt64BE=V(function(d,h=0){return ie(this,d,h,BigInt(0),BigInt("0xffffffffffffffff"))}),o.prototype.writeIntLE=function(d,h,g,w){if(d=+d,h=h>>>0,!w){let Ee=Math.pow(2,8*g-1);be(this,d,h,g,Ee-1,-Ee)}let W=0,Q=1,ue=0;for(this[h]=d&255;++W<g&&(Q*=256);)d<0&&ue===0&&this[h+W-1]!==0&&(ue=1),this[h+W]=(d/Q>>0)-ue&255;return h+g},o.prototype.writeIntBE=function(d,h,g,w){if(d=+d,h=h>>>0,!w){let Ee=Math.pow(2,8*g-1);be(this,d,h,g,Ee-1,-Ee)}let W=g-1,Q=1,ue=0;for(this[h+W]=d&255;--W>=0&&(Q*=256);)d<0&&ue===0&&this[h+W+1]!==0&&(ue=1),this[h+W]=(d/Q>>0)-ue&255;return h+g},o.prototype.writeInt8=function(d,h,g){return d=+d,h=h>>>0,g||be(this,d,h,1,127,-128),d<0&&(d=255+d+1),this[h]=d&255,h+1},o.prototype.writeInt16LE=function(d,h,g){return d=+d,h=h>>>0,g||be(this,d,h,2,32767,-32768),this[h]=d&255,this[h+1]=d>>>8,h+2},o.prototype.writeInt16BE=function(d,h,g){return d=+d,h=h>>>0,g||be(this,d,h,2,32767,-32768),this[h]=d>>>8,this[h+1]=d&255,h+2},o.prototype.writeInt32LE=function(d,h,g){return d=+d,h=h>>>0,g||be(this,d,h,4,2147483647,-2147483648),this[h]=d&255,this[h+1]=d>>>8,this[h+2]=d>>>16,this[h+3]=d>>>24,h+4},o.prototype.writeInt32BE=function(d,h,g){return d=+d,h=h>>>0,g||be(this,d,h,4,2147483647,-2147483648),d<0&&(d=4294967295+d+1),this[h]=d>>>24,this[h+1]=d>>>16,this[h+2]=d>>>8,this[h+3]=d&255,h+4},o.prototype.writeBigInt64LE=V(function(d,h=0){return A(this,d,h,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),o.prototype.writeBigInt64BE=V(function(d,h=0){return ie(this,d,h,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function he(d,h,g,w,W,Q){if(g+w>d.length)throw new RangeError("Index out of range");if(g<0)throw new RangeError("Index out of range")}function we(d,h,g,w,W){return h=+h,g=g>>>0,W||he(d,h,g,4),t.write(d,h,g,w,23,4),g+4}o.prototype.writeFloatLE=function(d,h,g){return we(this,d,h,!0,g)},o.prototype.writeFloatBE=function(d,h,g){return we(this,d,h,!1,g)};function fe(d,h,g,w,W){return h=+h,g=g>>>0,W||he(d,h,g,8),t.write(d,h,g,w,52,8),g+8}o.prototype.writeDoubleLE=function(d,h,g){return fe(this,d,h,!0,g)},o.prototype.writeDoubleBE=function(d,h,g){return fe(this,d,h,!1,g)},o.prototype.copy=function(d,h,g,w){if(!o.isBuffer(d))throw new TypeError("argument should be a Buffer");if(g||(g=0),!w&&w!==0&&(w=this.length),h>=d.length&&(h=d.length),h||(h=0),w>0&&w<g&&(w=g),w===g||d.length===0||this.length===0)return 0;if(h<0)throw new RangeError("targetStart out of bounds");if(g<0||g>=this.length)throw new RangeError("Index out of range");if(w<0)throw new RangeError("sourceEnd out of bounds");w>this.length&&(w=this.length),d.length-h<w-g&&(w=d.length-h+g);let W=w-g;return this===d&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(h,g,w):Uint8Array.prototype.set.call(d,this.subarray(g,w),h),W},o.prototype.fill=function(d,h,g,w){if(typeof d=="string"){if(typeof h=="string"?(w=h,h=0,g=this.length):typeof g=="string"&&(w=g,g=this.length),w!==void 0&&typeof w!="string")throw new TypeError("encoding must be a string");if(typeof w=="string"&&!o.isEncoding(w))throw new TypeError("Unknown encoding: "+w);if(d.length===1){let Q=d.charCodeAt(0);(w==="utf8"&&Q<128||w==="latin1")&&(d=Q)}}else typeof d=="number"?d=d&255:typeof d=="boolean"&&(d=Number(d));if(h<0||this.length<h||this.length<g)throw new RangeError("Out of range index");if(g<=h)return this;h=h>>>0,g=g===void 0?this.length:g>>>0,d||(d=0);let W;if(typeof d=="number")for(W=h;W<g;++W)this[W]=d;else{let Q=o.isBuffer(d)?d:o.from(d,w),ue=Q.length;if(ue===0)throw new TypeError('The value "'+d+'" is invalid for argument "value"');for(W=0;W<g-h;++W)this[W+h]=Q[W%ue]}return this};let E={};function I(d,h,g){E[d]=class extends g{constructor(){super(),Object.defineProperty(this,"message",{value:h.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${d}]`,this.stack,delete this.name}get code(){return d}set code(w){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:w,writable:!0})}toString(){return`${this.name} [${d}]: ${this.message}`}}}I("ERR_BUFFER_OUT_OF_BOUNDS",function(d){return d?`${d} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),I("ERR_INVALID_ARG_TYPE",function(d,h){return`The "${d}" argument must be of type number. Received type ${typeof h}`},TypeError),I("ERR_OUT_OF_RANGE",function(d,h,g){let w=`The value of "${d}" is out of range.`,W=g;return Number.isInteger(g)&&Math.abs(g)>2**32?W=K(String(g)):typeof g=="bigint"&&(W=String(g),(g>BigInt(2)**BigInt(32)||g<-(BigInt(2)**BigInt(32)))&&(W=K(W)),W+="n"),w+=` It must be ${h}. Received ${W}`,w},RangeError);function K(d){let h="",g=d.length,w=d[0]==="-"?1:0;for(;g>=w+4;g-=3)h=`_${d.slice(g-3,g)}${h}`;return`${d.slice(0,g)}${h}`}function re(d,h,g){se(h,"offset"),(d[h]===void 0||d[h+g]===void 0)&&T(h,d.length-(g+1))}function oe(d,h,g,w,W,Q){if(d>g||d<h){let ue=typeof h=="bigint"?"n":"",Ee;throw h===0||h===BigInt(0)?Ee=`>= 0${ue} and < 2${ue} ** ${(Q+1)*8}${ue}`:Ee=`>= -(2${ue} ** ${(Q+1)*8-1}${ue}) and < 2 ** ${(Q+1)*8-1}${ue}`,new E.ERR_OUT_OF_RANGE("value",Ee,d)}re(w,W,Q)}function se(d,h){if(typeof d!="number")throw new E.ERR_INVALID_ARG_TYPE(h,"number",d)}function T(d,h,g){throw Math.floor(d)!==d?(se(d,g),new E.ERR_OUT_OF_RANGE("offset","an integer",d)):h<0?new E.ERR_BUFFER_OUT_OF_BOUNDS:new E.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${h}`,d)}let x=/[^+/0-9A-Za-z-_]/g;function v(d){if(d=d.split("=")[0],d=d.trim().replace(x,""),d.length<2)return"";for(;d.length%4!==0;)d=d+"=";return d}function U(d,h){h=h||1/0;let g,w=d.length,W=null,Q=[];for(let ue=0;ue<w;++ue){if(g=d.charCodeAt(ue),g>55295&&g<57344){if(!W){if(g>56319){(h-=3)>-1&&Q.push(239,191,189);continue}else if(ue+1===w){(h-=3)>-1&&Q.push(239,191,189);continue}W=g;continue}if(g<56320){(h-=3)>-1&&Q.push(239,191,189),W=g;continue}g=(W-55296<<10|g-56320)+65536}else W&&(h-=3)>-1&&Q.push(239,191,189);if(W=null,g<128){if((h-=1)<0)break;Q.push(g)}else if(g<2048){if((h-=2)<0)break;Q.push(g>>6|192,g&63|128)}else if(g<65536){if((h-=3)<0)break;Q.push(g>>12|224,g>>6&63|128,g&63|128)}else if(g<1114112){if((h-=4)<0)break;Q.push(g>>18|240,g>>12&63|128,g>>6&63|128,g&63|128)}else throw new Error("Invalid code point")}return Q}function M(d){let h=[];for(let g=0;g<d.length;++g)h.push(d.charCodeAt(g)&255);return h}function Y(d,h){let g,w,W,Q=[];for(let ue=0;ue<d.length&&!((h-=2)<0);++ue)g=d.charCodeAt(ue),w=g>>8,W=g%256,Q.push(W),Q.push(w);return Q}function J(d){return e.toByteArray(v(d))}function N(d,h,g,w){let W;for(W=0;W<w&&!(W+g>=h.length||W>=d.length);++W)h[W+g]=d[W];return W}function $(d,h){return d instanceof h||d!=null&&d.constructor!=null&&d.constructor.name!=null&&d.constructor.name===h.name}function R(d){return d!==d}let H=function(){let d="0123456789abcdef",h=new Array(256);for(let g=0;g<16;++g){let w=g*16;for(let W=0;W<16;++W)h[w+W]=d[g]+d[W]}return h}();function V(d){return typeof BigInt>"u"?te:d}function te(){throw new Error("BigInt not supported")}return Ir}var Sn,Va,Jn,qa,Ir,Ka,ir,ho,od,sd,lt=st(()=>{pe(),me(),ge(),Sn={},Va=!1,Jn={},qa=!1,Ir={},Ka=!1,ir=Vb(),ir.Buffer,ir.SlowBuffer,ir.INSPECT_MAX_BYTES,ir.kMaxLength,ho=ir.Buffer,od=ir.INSPECT_MAX_BYTES,sd=ir.kMaxLength}),me=st(()=>{lt()}),qb=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(r){this.aliasToTopic={},this.max=r}put(r,n){return n===0||n>this.max?!1:(this.aliasToTopic[n]=r,this.length=Object.keys(this.aliasToTopic).length,!0)}getTopicByAlias(r){return this.aliasToTopic[r]}clear(){this.aliasToTopic={}}};e.default=t}),et=ve((e,t)=>{pe(),me(),ge(),t.exports={ArrayIsArray(r){return Array.isArray(r)},ArrayPrototypeIncludes(r,n){return r.includes(n)},ArrayPrototypeIndexOf(r,n){return r.indexOf(n)},ArrayPrototypeJoin(r,n){return r.join(n)},ArrayPrototypeMap(r,n){return r.map(n)},ArrayPrototypePop(r,n){return r.pop(n)},ArrayPrototypePush(r,n){return r.push(n)},ArrayPrototypeSlice(r,n,s){return r.slice(n,s)},Error,FunctionPrototypeCall(r,n,...s){return r.call(n,...s)},FunctionPrototypeSymbolHasInstance(r,n){return Function.prototype[Symbol.hasInstance].call(r,n)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(r,n){return Object.defineProperties(r,n)},ObjectDefineProperty(r,n,s){return Object.defineProperty(r,n,s)},ObjectGetOwnPropertyDescriptor(r,n){return Object.getOwnPropertyDescriptor(r,n)},ObjectKeys(r){return Object.keys(r)},ObjectSetPrototypeOf(r,n){return Object.setPrototypeOf(r,n)},Promise,PromisePrototypeCatch(r,n){return r.catch(n)},PromisePrototypeThen(r,n,s){return r.then(n,s)},PromiseReject(r){return Promise.reject(r)},ReflectApply:Reflect.apply,RegExpPrototypeTest(r,n){return r.test(n)},SafeSet:Set,String,StringPrototypeSlice(r,n,s){return r.slice(n,s)},StringPrototypeToLowerCase(r){return r.toLowerCase()},StringPrototypeToUpperCase(r){return r.toUpperCase()},StringPrototypeTrim(r){return r.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,TypedArrayPrototypeSet(r,n,s){return r.set(n,s)},Uint8Array}}),dr=ve((e,t)=>{pe(),me(),ge();var r=(lt(),De(at)),n=Object.getPrototypeOf(async function(){}).constructor,s=globalThis.Blob||r.Blob,i=typeof s<"u"?function(l){return l instanceof s}:function(l){return!1},o=class extends Error{constructor(l){if(!Array.isArray(l))throw new TypeError(`Expected input to be an Array, got ${typeof l}`);let a="";for(let u=0;u<l.length;u++)a+=`    ${l[u].stack}
+`;super(a),this.name="AggregateError",this.errors=l}};t.exports={AggregateError:o,kEmptyObject:Object.freeze({}),once(l){let a=!1;return function(...u){a||(a=!0,l.apply(this,u))}},createDeferredPromise:function(){let l,a;return{promise:new Promise((u,c)=>{l=u,a=c}),resolve:l,reject:a}},promisify(l){return new Promise((a,u)=>{l((c,...f)=>c?u(c):a(...f))})},debuglog(){return function(){}},format(l,...a){return l.replace(/%([sdifj])/g,function(...[u,c]){let f=a.shift();return c==="f"?f.toFixed(6):c==="j"?JSON.stringify(f):c==="s"&&typeof f=="object"?`${f.constructor!==Object?f.constructor.name:""} {}`.trim():f.toString()})},inspect(l){switch(typeof l){case"string":if(l.includes("'"))if(l.includes('"')){if(!l.includes("`")&&!l.includes("${"))return`\`${l}\``}else return`"${l}"`;return`'${l}'`;case"number":return isNaN(l)?"NaN":Object.is(l,-0)?String(l):l;case"bigint":return`${String(l)}n`;case"boolean":case"undefined":return String(l);case"object":return"{}"}},types:{isAsyncFunction(l){return l instanceof n},isArrayBufferView(l){return ArrayBuffer.isView(l)}},isBlob:i},t.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),Vl=ve((e,t)=>{pe(),me(),ge();var{AbortController:r,AbortSignal:n}=typeof self<"u"?self:typeof window<"u"?window:void 0;t.exports=r,t.exports.AbortSignal=n,t.exports.default=r}),St=ve((e,t)=>{pe(),me(),ge();var{format:r,inspect:n,AggregateError:s}=dr(),i=globalThis.AggregateError||s,o=Symbol("kIsNodeError"),l=["string","function","number","object","Function","Object","boolean","bigint","symbol"],a=/^([A-Z][a-z0-9]*)+$/,u="__node_internal_",c={};function f(C,_){if(!C)throw new c.ERR_INTERNAL_ASSERTION(_)}function p(C){let _="",B=C.length,F=C[0]==="-"?1:0;for(;B>=F+4;B-=3)_=`_${C.slice(B-3,B)}${_}`;return`${C.slice(0,B)}${_}`}function m(C,_,B){if(typeof _=="function")return f(_.length<=B.length,`Code: ${C}; The provided arguments length (${B.length}) does not match the required ones (${_.length}).`),_(...B);let F=(_.match(/%[dfijoOs]/g)||[]).length;return f(F===B.length,`Code: ${C}; The provided arguments length (${B.length}) does not match the required ones (${F}).`),B.length===0?_:r(_,...B)}function y(C,_,B){B||(B=Error);class F extends B{constructor(...P){super(m(C,_,P))}toString(){return`${this.name} [${C}]: ${this.message}`}}Object.defineProperties(F.prototype,{name:{value:B.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${C}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),F.prototype.code=C,F.prototype[o]=!0,c[C]=F}function b(C){let _=u+C.name;return Object.defineProperty(C,"name",{value:_}),C}function O(C,_){if(C&&_&&C!==_){if(Array.isArray(_.errors))return _.errors.push(C),_;let B=new i([_,C],_.message);return B.code=_.code,B}return C||_}var L=class extends Error{constructor(C="The operation was aborted",_=void 0){if(_!==void 0&&typeof _!="object")throw new c.ERR_INVALID_ARG_TYPE("options","Object",_);super(C,_),this.code="ABORT_ERR",this.name="AbortError"}};y("ERR_ASSERTION","%s",Error),y("ERR_INVALID_ARG_TYPE",(C,_,B)=>{f(typeof C=="string","'name' must be a string"),Array.isArray(_)||(_=[_]);let F="The ";C.endsWith(" argument")?F+=`${C} `:F+=`"${C}" ${C.includes(".")?"property":"argument"} `,F+="must be ";let k=[],P=[],j=[];for(let X of _)f(typeof X=="string","All expected entries have to be of type string"),l.includes(X)?k.push(X.toLowerCase()):a.test(X)?P.push(X):(f(X!=="object",'The value "object" should be written as "Object"'),j.push(X));if(P.length>0){let X=k.indexOf("object");X!==-1&&(k.splice(k,X,1),P.push("Object"))}if(k.length>0){switch(k.length){case 1:F+=`of type ${k[0]}`;break;case 2:F+=`one of type ${k[0]} or ${k[1]}`;break;default:{let X=k.pop();F+=`one of type ${k.join(", ")}, or ${X}`}}(P.length>0||j.length>0)&&(F+=" or ")}if(P.length>0){switch(P.length){case 1:F+=`an instance of ${P[0]}`;break;case 2:F+=`an instance of ${P[0]} or ${P[1]}`;break;default:{let X=P.pop();F+=`an instance of ${P.join(", ")}, or ${X}`}}j.length>0&&(F+=" or ")}switch(j.length){case 0:break;case 1:j[0].toLowerCase()!==j[0]&&(F+="an "),F+=`${j[0]}`;break;case 2:F+=`one of ${j[0]} or ${j[1]}`;break;default:{let X=j.pop();F+=`one of ${j.join(", ")}, or ${X}`}}if(B==null)F+=`. Received ${B}`;else if(typeof B=="function"&&B.name)F+=`. Received function ${B.name}`;else if(typeof B=="object"){var D;if((D=B.constructor)!==null&&D!==void 0&&D.name)F+=`. Received an instance of ${B.constructor.name}`;else{let X=n(B,{depth:-1});F+=`. Received ${X}`}}else{let X=n(B,{colors:!1});X.length>25&&(X=`${X.slice(0,25)}...`),F+=`. Received type ${typeof B} (${X})`}return F},TypeError),y("ERR_INVALID_ARG_VALUE",(C,_,B="is invalid")=>{let F=n(_);return F.length>128&&(F=F.slice(0,128)+"..."),`The ${C.includes(".")?"property":"argument"} '${C}' ${B}. Received ${F}`},TypeError),y("ERR_INVALID_RETURN_VALUE",(C,_,B)=>{var F;let k=B!=null&&(F=B.constructor)!==null&&F!==void 0&&F.name?`instance of ${B.constructor.name}`:`type ${typeof B}`;return`Expected ${C} to be returned from the "${_}" function but got ${k}.`},TypeError),y("ERR_MISSING_ARGS",(...C)=>{f(C.length>0,"At least one arg needs to be specified");let _,B=C.length;switch(C=(Array.isArray(C)?C:[C]).map(F=>`"${F}"`).join(" or "),B){case 1:_+=`The ${C[0]} argument`;break;case 2:_+=`The ${C[0]} and ${C[1]} arguments`;break;default:{let F=C.pop();_+=`The ${C.join(", ")}, and ${F} arguments`}break}return`${_} must be specified`},TypeError),y("ERR_OUT_OF_RANGE",(C,_,B)=>{f(_,'Missing "range" argument');let F;return Number.isInteger(B)&&Math.abs(B)>2**32?F=p(String(B)):typeof B=="bigint"?(F=String(B),(B>2n**32n||B<-(2n**32n))&&(F=p(F)),F+="n"):F=n(B),`The value of "${C}" is out of range. It must be ${_}. Received ${F}`},RangeError),y("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),y("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),y("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),y("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),y("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),y("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),y("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),y("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),y("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),y("ERR_STREAM_WRITE_AFTER_END","write after end",Error),y("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),t.exports={AbortError:L,aggregateTwoErrors:b(O),hideStackFrames:b,codes:c}}),No=ve((e,t)=>{pe(),me(),ge();var{ArrayIsArray:r,ArrayPrototypeIncludes:n,ArrayPrototypeJoin:s,ArrayPrototypeMap:i,NumberIsInteger:o,NumberIsNaN:l,NumberMAX_SAFE_INTEGER:a,NumberMIN_SAFE_INTEGER:u,NumberParseInt:c,ObjectPrototypeHasOwnProperty:f,RegExpPrototypeExec:p,String:m,StringPrototypeToUpperCase:y,StringPrototypeTrim:b}=et(),{hideStackFrames:O,codes:{ERR_SOCKET_BAD_PORT:L,ERR_INVALID_ARG_TYPE:C,ERR_INVALID_ARG_VALUE:_,ERR_OUT_OF_RANGE:B,ERR_UNKNOWN_SIGNAL:F}}=St(),{normalizeEncoding:k}=dr(),{isAsyncFunction:P,isArrayBufferView:j}=dr().types,D={};function X(N){return N===(N|0)}function Z(N){return N===N>>>0}var S=/^[0-7]+$/,z="must be a 32-bit unsigned integer or an octal string";function ae(N,$,R){if(typeof N>"u"&&(N=R),typeof N=="string"){if(p(S,N)===null)throw new _($,N,z);N=c(N,8)}return ne(N,$),N}var ee=O((N,$,R=u,H=a)=>{if(typeof N!="number")throw new C($,"number",N);if(!o(N))throw new B($,"an integer",N);if(N<R||N>H)throw new B($,`>= ${R} && <= ${H}`,N)}),le=O((N,$,R=-2147483648,H=2147483647)=>{if(typeof N!="number")throw new C($,"number",N);if(!o(N))throw new B($,"an integer",N);if(N<R||N>H)throw new B($,`>= ${R} && <= ${H}`,N)}),ne=O((N,$,R=!1)=>{if(typeof N!="number")throw new C($,"number",N);if(!o(N))throw new B($,"an integer",N);let H=R?1:0,V=4294967295;if(N<H||N>V)throw new B($,`>= ${H} && <= ${V}`,N)});function G(N,$){if(typeof N!="string")throw new C($,"string",N)}function de(N,$,R=void 0,H){if(typeof N!="number")throw new C($,"number",N);if(R!=null&&N<R||H!=null&&N>H||(R!=null||H!=null)&&l(N))throw new B($,`${R!=null?`>= ${R}`:""}${R!=null&&H!=null?" && ":""}${H!=null?`<= ${H}`:""}`,N)}var ce=O((N,$,R)=>{if(!n(R,N)){let H="must be one of: "+s(i(R,V=>typeof V=="string"?`'${V}'`:m(V)),", ");throw new _($,N,H)}});function be(N,$){if(typeof N!="boolean")throw new C($,"boolean",N)}function A(N,$,R){return N==null||!f(N,$)?R:N[$]}var ie=O((N,$,R=null)=>{let H=A(R,"allowArray",!1),V=A(R,"allowFunction",!1);if(!A(R,"nullable",!1)&&N===null||!H&&r(N)||typeof N!="object"&&(!V||typeof N!="function"))throw new C($,"Object",N)}),he=O((N,$)=>{if(N!=null&&typeof N!="object"&&typeof N!="function")throw new C($,"a dictionary",N)}),we=O((N,$,R=0)=>{if(!r(N))throw new C($,"Array",N);if(N.length<R){let H=`must be longer than ${R}`;throw new _($,N,H)}});function fe(N,$){we(N,$);for(let R=0;R<N.length;R++)G(N[R],`${$}[${R}]`)}function E(N,$){we(N,$);for(let R=0;R<N.length;R++)be(N[R],`${$}[${R}]`)}function I(N,$="signal"){if(G(N,$),D[N]===void 0)throw D[y(N)]!==void 0?new F(N+" (signals must use all capital letters)"):new F(N)}var K=O((N,$="buffer")=>{if(!j(N))throw new C($,["Buffer","TypedArray","DataView"],N)});function re(N,$){let R=k($),H=N.length;if(R==="hex"&&H%2!==0)throw new _("encoding",$,`is invalid for data of length ${H}`)}function oe(N,$="Port",R=!0){if(typeof N!="number"&&typeof N!="string"||typeof N=="string"&&b(N).length===0||+N!==+N>>>0||N>65535||N===0&&!R)throw new L($,N,R);return N|0}var se=O((N,$)=>{if(N!==void 0&&(N===null||typeof N!="object"||!("aborted"in N)))throw new C($,"AbortSignal",N)}),T=O((N,$)=>{if(typeof N!="function")throw new C($,"Function",N)}),x=O((N,$)=>{if(typeof N!="function"||P(N))throw new C($,"Function",N)}),v=O((N,$)=>{if(N!==void 0)throw new C($,"undefined",N)});function U(N,$,R){if(!n(R,N))throw new C($,`('${s(R,"|")}')`,N)}var M=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function Y(N,$){if(typeof N>"u"||!p(M,N))throw new _($,N,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function J(N){if(typeof N=="string")return Y(N,"hints"),N;if(r(N)){let $=N.length,R="";if($===0)return R;for(let H=0;H<$;H++){let V=N[H];Y(V,"hints"),R+=V,H!==$-1&&(R+=", ")}return R}throw new _("hints",N,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}t.exports={isInt32:X,isUint32:Z,parseFileMode:ae,validateArray:we,validateStringArray:fe,validateBooleanArray:E,validateBoolean:be,validateBuffer:K,validateDictionary:he,validateEncoding:re,validateFunction:T,validateInt32:le,validateInteger:ee,validateNumber:de,validateObject:ie,validateOneOf:ce,validatePlainFunction:x,validatePort:oe,validateSignalName:I,validateString:G,validateUint32:ne,validateUndefined:v,validateUnion:U,validateAbortSignal:se,validateLinkHeaderValue:J}}),gn=ve((e,t)=>{pe(),me(),ge();var r=t.exports={},n,s;function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?n=setTimeout:n=i}catch{n=i}try{typeof clearTimeout=="function"?s=clearTimeout:s=o}catch{s=o}})();function l(L){if(n===setTimeout)return setTimeout(L,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(L,0);try{return n(L,0)}catch{try{return n.call(null,L,0)}catch{return n.call(this,L,0)}}}function a(L){if(s===clearTimeout)return clearTimeout(L);if((s===o||!s)&&clearTimeout)return s=clearTimeout,clearTimeout(L);try{return s(L)}catch{try{return s.call(null,L)}catch{return s.call(this,L)}}}var u=[],c=!1,f,p=-1;function m(){!c||!f||(c=!1,f.length?u=f.concat(u):p=-1,u.length&&y())}function y(){if(!c){var L=l(m);c=!0;for(var C=u.length;C;){for(f=u,u=[];++p<C;)f&&f[p].run();p=-1,C=u.length}f=null,c=!1,a(L)}}r.nextTick=function(L){var C=new Array(arguments.length-1);if(arguments.length>1)for(var _=1;_<arguments.length;_++)C[_-1]=arguments[_];u.push(new b(L,C)),u.length===1&&!c&&l(y)};function b(L,C){this.fun=L,this.array=C}b.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={};function O(){}r.on=O,r.addListener=O,r.once=O,r.off=O,r.removeListener=O,r.removeAllListeners=O,r.emit=O,r.prependListener=O,r.prependOnceListener=O,r.listeners=function(L){return[]},r.binding=function(L){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(L){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}}),br=ve((e,t)=>{pe(),me(),ge();var{Symbol:r,SymbolAsyncIterator:n,SymbolIterator:s,SymbolFor:i}=et(),o=r("kDestroyed"),l=r("kIsErrored"),a=r("kIsReadable"),u=r("kIsDisturbed"),c=i("nodejs.webstream.isClosedPromise"),f=i("nodejs.webstream.controllerErrorFunction");function p(A,ie=!1){var he;return!!(A&&typeof A.pipe=="function"&&typeof A.on=="function"&&(!ie||typeof A.pause=="function"&&typeof A.resume=="function")&&(!A._writableState||((he=A._readableState)===null||he===void 0?void 0:he.readable)!==!1)&&(!A._writableState||A._readableState))}function m(A){var ie;return!!(A&&typeof A.write=="function"&&typeof A.on=="function"&&(!A._readableState||((ie=A._writableState)===null||ie===void 0?void 0:ie.writable)!==!1))}function y(A){return!!(A&&typeof A.pipe=="function"&&A._readableState&&typeof A.on=="function"&&typeof A.write=="function")}function b(A){return A&&(A._readableState||A._writableState||typeof A.write=="function"&&typeof A.on=="function"||typeof A.pipe=="function"&&typeof A.on=="function")}function O(A){return!!(A&&!b(A)&&typeof A.pipeThrough=="function"&&typeof A.getReader=="function"&&typeof A.cancel=="function")}function L(A){return!!(A&&!b(A)&&typeof A.getWriter=="function"&&typeof A.abort=="function")}function C(A){return!!(A&&!b(A)&&typeof A.readable=="object"&&typeof A.writable=="object")}function _(A){return O(A)||L(A)||C(A)}function B(A,ie){return A==null?!1:ie===!0?typeof A[n]=="function":ie===!1?typeof A[s]=="function":typeof A[n]=="function"||typeof A[s]=="function"}function F(A){if(!b(A))return null;let ie=A._writableState,he=A._readableState,we=ie||he;return!!(A.destroyed||A[o]||we!=null&&we.destroyed)}function k(A){if(!m(A))return null;if(A.writableEnded===!0)return!0;let ie=A._writableState;return ie!=null&&ie.errored?!1:typeof(ie==null?void 0:ie.ended)!="boolean"?null:ie.ended}function P(A,ie){if(!m(A))return null;if(A.writableFinished===!0)return!0;let he=A._writableState;return he!=null&&he.errored?!1:typeof(he==null?void 0:he.finished)!="boolean"?null:!!(he.finished||ie===!1&&he.ended===!0&&he.length===0)}function j(A){if(!p(A))return null;if(A.readableEnded===!0)return!0;let ie=A._readableState;return!ie||ie.errored?!1:typeof(ie==null?void 0:ie.ended)!="boolean"?null:ie.ended}function D(A,ie){if(!p(A))return null;let he=A._readableState;return he!=null&&he.errored?!1:typeof(he==null?void 0:he.endEmitted)!="boolean"?null:!!(he.endEmitted||ie===!1&&he.ended===!0&&he.length===0)}function X(A){return A&&A[a]!=null?A[a]:typeof(A==null?void 0:A.readable)!="boolean"?null:F(A)?!1:p(A)&&A.readable&&!D(A)}function Z(A){return typeof(A==null?void 0:A.writable)!="boolean"?null:F(A)?!1:m(A)&&A.writable&&!k(A)}function S(A,ie){return b(A)?F(A)?!0:!((ie==null?void 0:ie.readable)!==!1&&X(A)||(ie==null?void 0:ie.writable)!==!1&&Z(A)):null}function z(A){var ie,he;return b(A)?A.writableErrored?A.writableErrored:(ie=(he=A._writableState)===null||he===void 0?void 0:he.errored)!==null&&ie!==void 0?ie:null:null}function ae(A){var ie,he;return b(A)?A.readableErrored?A.readableErrored:(ie=(he=A._readableState)===null||he===void 0?void 0:he.errored)!==null&&ie!==void 0?ie:null:null}function ee(A){if(!b(A))return null;if(typeof A.closed=="boolean")return A.closed;let ie=A._writableState,he=A._readableState;return typeof(ie==null?void 0:ie.closed)=="boolean"||typeof(he==null?void 0:he.closed)=="boolean"?(ie==null?void 0:ie.closed)||(he==null?void 0:he.closed):typeof A._closed=="boolean"&&le(A)?A._closed:null}function le(A){return typeof A._closed=="boolean"&&typeof A._defaultKeepAlive=="boolean"&&typeof A._removedConnection=="boolean"&&typeof A._removedContLen=="boolean"}function ne(A){return typeof A._sent100=="boolean"&&le(A)}function G(A){var ie;return typeof A._consuming=="boolean"&&typeof A._dumped=="boolean"&&((ie=A.req)===null||ie===void 0?void 0:ie.upgradeOrConnect)===void 0}function de(A){if(!b(A))return null;let ie=A._writableState,he=A._readableState,we=ie||he;return!we&&ne(A)||!!(we&&we.autoDestroy&&we.emitClose&&we.closed===!1)}function ce(A){var ie;return!!(A&&((ie=A[u])!==null&&ie!==void 0?ie:A.readableDidRead||A.readableAborted))}function be(A){var ie,he,we,fe,E,I,K,re,oe,se;return!!(A&&((ie=(he=(we=(fe=(E=(I=A[l])!==null&&I!==void 0?I:A.readableErrored)!==null&&E!==void 0?E:A.writableErrored)!==null&&fe!==void 0?fe:(K=A._readableState)===null||K===void 0?void 0:K.errorEmitted)!==null&&we!==void 0?we:(re=A._writableState)===null||re===void 0?void 0:re.errorEmitted)!==null&&he!==void 0?he:(oe=A._readableState)===null||oe===void 0?void 0:oe.errored)!==null&&ie!==void 0?ie:!((se=A._writableState)===null||se===void 0)&&se.errored))}t.exports={kDestroyed:o,isDisturbed:ce,kIsDisturbed:u,isErrored:be,kIsErrored:l,isReadable:X,kIsReadable:a,kIsClosedPromise:c,kControllerErrorFunction:f,isClosed:ee,isDestroyed:F,isDuplexNodeStream:y,isFinished:S,isIterable:B,isReadableNodeStream:p,isReadableStream:O,isReadableEnded:j,isReadableFinished:D,isReadableErrored:ae,isNodeStream:b,isWebStream:_,isWritable:Z,isWritableNodeStream:m,isWritableStream:L,isWritableEnded:k,isWritableFinished:P,isWritableErrored:z,isServerRequest:G,isServerResponse:ne,willEmitClose:de,isTransformStream:C}}),Wr=ve((e,t)=>{pe(),me(),ge();var r=gn(),{AbortError:n,codes:s}=St(),{ERR_INVALID_ARG_TYPE:i,ERR_STREAM_PREMATURE_CLOSE:o}=s,{kEmptyObject:l,once:a}=dr(),{validateAbortSignal:u,validateFunction:c,validateObject:f,validateBoolean:p}=No(),{Promise:m,PromisePrototypeThen:y}=et(),{isClosed:b,isReadable:O,isReadableNodeStream:L,isReadableStream:C,isReadableFinished:_,isReadableErrored:B,isWritable:F,isWritableNodeStream:k,isWritableStream:P,isWritableFinished:j,isWritableErrored:D,isNodeStream:X,willEmitClose:Z,kIsClosedPromise:S}=br();function z(G){return G.setHeader&&typeof G.abort=="function"}var ae=()=>{};function ee(G,de,ce){var be,A;if(arguments.length===2?(ce=de,de=l):de==null?de=l:f(de,"options"),c(ce,"callback"),u(de.signal,"options.signal"),ce=a(ce),C(G)||P(G))return le(G,de,ce);if(!X(G))throw new i("stream",["ReadableStream","WritableStream","Stream"],G);let ie=(be=de.readable)!==null&&be!==void 0?be:L(G),he=(A=de.writable)!==null&&A!==void 0?A:k(G),we=G._writableState,fe=G._readableState,E=()=>{G.writable||re()},I=Z(G)&&L(G)===ie&&k(G)===he,K=j(G,!1),re=()=>{K=!0,G.destroyed&&(I=!1),!(I&&(!G.readable||ie))&&(!ie||oe)&&ce.call(G)},oe=_(G,!1),se=()=>{oe=!0,G.destroyed&&(I=!1),!(I&&(!G.writable||he))&&(!he||K)&&ce.call(G)},T=J=>{ce.call(G,J)},x=b(G),v=()=>{x=!0;let J=D(G)||B(G);if(J&&typeof J!="boolean")return ce.call(G,J);if(ie&&!oe&&L(G,!0)&&!_(G,!1))return ce.call(G,new o);if(he&&!K&&!j(G,!1))return ce.call(G,new o);ce.call(G)},U=()=>{x=!0;let J=D(G)||B(G);if(J&&typeof J!="boolean")return ce.call(G,J);ce.call(G)},M=()=>{G.req.on("finish",re)};z(G)?(G.on("complete",re),I||G.on("abort",v),G.req?M():G.on("request",M)):he&&!we&&(G.on("end",E),G.on("close",E)),!I&&typeof G.aborted=="boolean"&&G.on("aborted",v),G.on("end",se),G.on("finish",re),de.error!==!1&&G.on("error",T),G.on("close",v),x?r.nextTick(v):we!=null&&we.errorEmitted||fe!=null&&fe.errorEmitted?I||r.nextTick(U):(!ie&&(!I||O(G))&&(K||F(G)===!1)||!he&&(!I||F(G))&&(oe||O(G)===!1)||fe&&G.req&&G.aborted)&&r.nextTick(U);let Y=()=>{ce=ae,G.removeListener("aborted",v),G.removeListener("complete",re),G.removeListener("abort",v),G.removeListener("request",M),G.req&&G.req.removeListener("finish",re),G.removeListener("end",E),G.removeListener("close",E),G.removeListener("finish",re),G.removeListener("end",se),G.removeListener("error",T),G.removeListener("close",v)};if(de.signal&&!x){let J=()=>{let N=ce;Y(),N.call(G,new n(void 0,{cause:de.signal.reason}))};if(de.signal.aborted)r.nextTick(J);else{let N=ce;ce=a((...$)=>{de.signal.removeEventListener("abort",J),N.apply(G,$)}),de.signal.addEventListener("abort",J)}}return Y}function le(G,de,ce){let be=!1,A=ae;if(de.signal)if(A=()=>{be=!0,ce.call(G,new n(void 0,{cause:de.signal.reason}))},de.signal.aborted)r.nextTick(A);else{let he=ce;ce=a((...we)=>{de.signal.removeEventListener("abort",A),he.apply(G,we)}),de.signal.addEventListener("abort",A)}let ie=(...he)=>{be||r.nextTick(()=>ce.apply(G,he))};return y(G[S].promise,ie,ie),ae}function ne(G,de){var ce;let be=!1;return de===null&&(de=l),(ce=de)!==null&&ce!==void 0&&ce.cleanup&&(p(de.cleanup,"cleanup"),be=de.cleanup),new m((A,ie)=>{let he=ee(G,de,we=>{be&&he(),we?ie(we):A()})})}t.exports=ee,t.exports.finished=ne}),jn=ve((e,t)=>{pe(),me(),ge();var r=gn(),{aggregateTwoErrors:n,codes:{ERR_MULTIPLE_CALLBACK:s},AbortError:i}=St(),{Symbol:o}=et(),{kDestroyed:l,isDestroyed:a,isFinished:u,isServerRequest:c}=br(),f=o("kDestroy"),p=o("kConstruct");function m(S,z,ae){S&&(S.stack,z&&!z.errored&&(z.errored=S),ae&&!ae.errored&&(ae.errored=S))}function y(S,z){let ae=this._readableState,ee=this._writableState,le=ee||ae;return ee!=null&&ee.destroyed||ae!=null&&ae.destroyed?(typeof z=="function"&&z(),this):(m(S,ee,ae),ee&&(ee.destroyed=!0),ae&&(ae.destroyed=!0),le.constructed?b(this,S,z):this.once(f,function(ne){b(this,n(ne,S),z)}),this)}function b(S,z,ae){let ee=!1;function le(ne){if(ee)return;ee=!0;let G=S._readableState,de=S._writableState;m(ne,de,G),de&&(de.closed=!0),G&&(G.closed=!0),typeof ae=="function"&&ae(ne),ne?r.nextTick(O,S,ne):r.nextTick(L,S)}try{S._destroy(z||null,le)}catch(ne){le(ne)}}function O(S,z){C(S,z),L(S)}function L(S){let z=S._readableState,ae=S._writableState;ae&&(ae.closeEmitted=!0),z&&(z.closeEmitted=!0),(ae!=null&&ae.emitClose||z!=null&&z.emitClose)&&S.emit("close")}function C(S,z){let ae=S._readableState,ee=S._writableState;ee!=null&&ee.errorEmitted||ae!=null&&ae.errorEmitted||(ee&&(ee.errorEmitted=!0),ae&&(ae.errorEmitted=!0),S.emit("error",z))}function _(){let S=this._readableState,z=this._writableState;S&&(S.constructed=!0,S.closed=!1,S.closeEmitted=!1,S.destroyed=!1,S.errored=null,S.errorEmitted=!1,S.reading=!1,S.ended=S.readable===!1,S.endEmitted=S.readable===!1),z&&(z.constructed=!0,z.destroyed=!1,z.closed=!1,z.closeEmitted=!1,z.errored=null,z.errorEmitted=!1,z.finalCalled=!1,z.prefinished=!1,z.ended=z.writable===!1,z.ending=z.writable===!1,z.finished=z.writable===!1)}function B(S,z,ae){let ee=S._readableState,le=S._writableState;if(le!=null&&le.destroyed||ee!=null&&ee.destroyed)return this;ee!=null&&ee.autoDestroy||le!=null&&le.autoDestroy?S.destroy(z):z&&(z.stack,le&&!le.errored&&(le.errored=z),ee&&!ee.errored&&(ee.errored=z),ae?r.nextTick(C,S,z):C(S,z))}function F(S,z){if(typeof S._construct!="function")return;let ae=S._readableState,ee=S._writableState;ae&&(ae.constructed=!1),ee&&(ee.constructed=!1),S.once(p,z),!(S.listenerCount(p)>1)&&r.nextTick(k,S)}function k(S){let z=!1;function ae(ee){if(z){B(S,ee??new s);return}z=!0;let le=S._readableState,ne=S._writableState,G=ne||le;le&&(le.constructed=!0),ne&&(ne.constructed=!0),G.destroyed?S.emit(f,ee):ee?B(S,ee,!0):r.nextTick(P,S)}try{S._construct(ee=>{r.nextTick(ae,ee)})}catch(ee){r.nextTick(ae,ee)}}function P(S){S.emit(p)}function j(S){return(S==null?void 0:S.setHeader)&&typeof S.abort=="function"}function D(S){S.emit("close")}function X(S,z){S.emit("error",z),r.nextTick(D,S)}function Z(S,z){!S||a(S)||(!z&&!u(S)&&(z=new i),c(S)?(S.socket=null,S.destroy(z)):j(S)?S.abort():j(S.req)?S.req.abort():typeof S.destroy=="function"?S.destroy(z):typeof S.close=="function"?S.close():z?r.nextTick(X,S,z):r.nextTick(D,S),S.destroyed||(S[l]=!0))}t.exports={construct:F,destroyer:Z,destroy:y,undestroy:_,errorOrDestroy:B}});function je(){je.init.call(this)}function Ji(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function ad(e){return e._maxListeners===void 0?je.defaultMaxListeners:e._maxListeners}function dc(e,t,r,n){var s,i,o,l;if(Ji(r),(i=e._events)===void 0?(i=e._events=Object.create(null),e._eventsCount=0):(i.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),o=i[t]),o===void 0)o=i[t]=r,++e._eventsCount;else if(typeof o=="function"?o=i[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(s=ad(e))>0&&o.length>s&&!o.warned){o.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=e,a.type=t,a.count=o.length,l=a,console&&console.warn&&console.warn(l)}return e}function Kb(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function pc(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},s=Kb.bind(n);return s.listener=r,n.wrapFn=s,s}function gc(e,t,r){var n=e._events;if(n===void 0)return[];var s=n[t];return s===void 0?[]:typeof s=="function"?r?[s.listener||s]:[s]:r?function(i){for(var o=new Array(i.length),l=0;l<o.length;++l)o[l]=i[l].listener||i[l];return o}(s):ld(s,s.length)}function mc(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}function ld(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}var yc,bc,zr,ls,us,cs,Tt,vc=st(()=>{pe(),me(),ge(),zr=typeof Reflect=="object"?Reflect:null,ls=zr&&typeof zr.apply=="function"?zr.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)},bc=zr&&typeof zr.ownKeys=="function"?zr.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)},us=Number.isNaN||function(e){return e!=e},yc=je,je.EventEmitter=je,je.prototype._events=void 0,je.prototype._eventsCount=0,je.prototype._maxListeners=void 0,cs=10,Object.defineProperty(je,"defaultMaxListeners",{enumerable:!0,get:function(){return cs},set:function(e){if(typeof e!="number"||e<0||us(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");cs=e}}),je.init=function(){this._events!==void 0&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},je.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||us(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},je.prototype.getMaxListeners=function(){return ad(this)},je.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n=e==="error",s=this._events;if(s!==void 0)n=n&&s.error===void 0;else if(!n)return!1;if(n){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var o=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw o.context=i,o}var l=s[e];if(l===void 0)return!1;if(typeof l=="function")ls(l,this,t);else{var a=l.length,u=ld(l,a);for(r=0;r<a;++r)ls(u[r],this,t)}return!0},je.prototype.addListener=function(e,t){return dc(this,e,t,!1)},je.prototype.on=je.prototype.addListener,je.prototype.prependListener=function(e,t){return dc(this,e,t,!0)},je.prototype.once=function(e,t){return Ji(t),this.on(e,pc(this,e,t)),this},je.prototype.prependOnceListener=function(e,t){return Ji(t),this.prependListener(e,pc(this,e,t)),this},je.prototype.removeListener=function(e,t){var r,n,s,i,o;if(Ji(t),(n=this._events)===void 0)return this;if((r=n[e])===void 0)return this;if(r===t||r.listener===t)--this._eventsCount==0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if(typeof r!="function"){for(s=-1,i=r.length-1;i>=0;i--)if(r[i]===t||r[i].listener===t){o=r[i].listener,s=i;break}if(s<0)return this;s===0?r.shift():function(l,a){for(;a+1<l.length;a++)l[a]=l[a+1];l.pop()}(r,s),r.length===1&&(n[e]=r[0]),n.removeListener!==void 0&&this.emit("removeListener",e,o||t)}return this},je.prototype.off=je.prototype.removeListener,je.prototype.removeAllListeners=function(e){var t,r,n;if((r=this._events)===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var s,i=Object.keys(r);for(n=0;n<i.length;++n)(s=i[n])!=="removeListener"&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(typeof(t=r[e])=="function")this.removeListener(e,t);else if(t!==void 0)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},je.prototype.listeners=function(e){return gc(this,e,!0)},je.prototype.rawListeners=function(e){return gc(this,e,!1)},je.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):mc.call(e,t)},je.prototype.listenerCount=mc,je.prototype.eventNames=function(){return this._eventsCount>0?bc(this._events):[]},Tt=yc,Tt.EventEmitter,Tt.defaultMaxListeners,Tt.init,Tt.listenerCount,Tt.EventEmitter,Tt.defaultMaxListeners,Tt.init,Tt.listenerCount}),mn={};pn(mn,{EventEmitter:()=>ud,default:()=>Tt,defaultMaxListeners:()=>cd,init:()=>fd,listenerCount:()=>hd,on:()=>dd,once:()=>pd});var ud,cd,fd,hd,dd,pd,Un=st(()=>{pe(),me(),ge(),vc(),vc(),Tt.once=function(e,t){return new Promise((r,n)=>{function s(...o){i!==void 0&&e.removeListener("error",i),r(o)}let i;t!=="error"&&(i=o=>{e.removeListener(name,s),n(o)},e.once("error",i)),e.once(t,s)})},Tt.on=function(e,t){let r=[],n=[],s=null,i=!1,o={async next(){let u=r.shift();if(u)return createIterResult(u,!1);if(s){let c=Promise.reject(s);return s=null,c}return i?createIterResult(void 0,!0):new Promise((c,f)=>n.push({resolve:c,reject:f}))},async return(){e.removeListener(t,l),e.removeListener("error",a),i=!0;for(let u of n)u.resolve(createIterResult(void 0,!0));return createIterResult(void 0,!0)},throw(u){s=u,e.removeListener(t,l),e.removeListener("error",a)},[Symbol.asyncIterator](){return this}};return e.on(t,l),e.on("error",a),o;function l(...u){let c=n.shift();c?c.resolve(createIterResult(u,!1)):r.push(u)}function a(u){i=!0;let c=n.shift();c?c.reject(u):s=u,o.return()}},{EventEmitter:ud,defaultMaxListeners:cd,init:fd,listenerCount:hd,on:dd,once:pd}=Tt}),ql=ve((e,t)=>{pe(),me(),ge();var{ArrayIsArray:r,ObjectSetPrototypeOf:n}=et(),{EventEmitter:s}=(Un(),De(mn));function i(l){s.call(this,l)}n(i.prototype,s.prototype),n(i,s),i.prototype.pipe=function(l,a){let u=this;function c(L){l.writable&&l.write(L)===!1&&u.pause&&u.pause()}u.on("data",c);function f(){u.readable&&u.resume&&u.resume()}l.on("drain",f),!l._isStdio&&(!a||a.end!==!1)&&(u.on("end",m),u.on("close",y));let p=!1;function m(){p||(p=!0,l.end())}function y(){p||(p=!0,typeof l.destroy=="function"&&l.destroy())}function b(L){O(),s.listenerCount(this,"error")===0&&this.emit("error",L)}o(u,"error",b),o(l,"error",b);function O(){u.removeListener("data",c),l.removeListener("drain",f),u.removeListener("end",m),u.removeListener("close",y),u.removeListener("error",b),l.removeListener("error",b),u.removeListener("end",O),u.removeListener("close",O),l.removeListener("close",O)}return u.on("end",O),u.on("close",O),l.on("close",O),l.emit("pipe",u),l};function o(l,a,u){if(typeof l.prependListener=="function")return l.prependListener(a,u);!l._events||!l._events[a]?l.on(a,u):r(l._events[a])?l._events[a].unshift(u):l._events[a]=[u,l._events[a]]}t.exports={Stream:i,prependListener:o}}),jo=ve((e,t)=>{pe(),me(),ge();var{AbortError:r,codes:n}=St(),{isNodeStream:s,isWebStream:i,kControllerErrorFunction:o}=br(),l=Wr(),{ERR_INVALID_ARG_TYPE:a}=n,u=(c,f)=>{if(typeof c!="object"||!("aborted"in c))throw new a(f,"AbortSignal",c)};t.exports.addAbortSignal=function(c,f){if(u(c,"signal"),!s(f)&&!i(f))throw new a("stream",["ReadableStream","WritableStream","Stream"],f);return t.exports.addAbortSignalNoValidate(c,f)},t.exports.addAbortSignalNoValidate=function(c,f){if(typeof c!="object"||!("aborted"in c))return f;let p=s(f)?()=>{f.destroy(new r(void 0,{cause:c.reason}))}:()=>{f[o](new r(void 0,{cause:c.reason}))};return c.aborted?p():(c.addEventListener("abort",p),l(f,()=>c.removeEventListener("abort",p))),f}}),zb=ve((e,t)=>{pe(),me(),ge();var{StringPrototypeSlice:r,SymbolIterator:n,TypedArrayPrototypeSet:s,Uint8Array:i}=et(),{Buffer:o}=(lt(),De(at)),{inspect:l}=dr();t.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(a){let u={data:a,next:null};this.length>0?this.tail.next=u:this.head=u,this.tail=u,++this.length}unshift(a){let u={data:a,next:this.head};this.length===0&&(this.tail=u),this.head=u,++this.length}shift(){if(this.length===0)return;let a=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,a}clear(){this.head=this.tail=null,this.length=0}join(a){if(this.length===0)return"";let u=this.head,c=""+u.data;for(;(u=u.next)!==null;)c+=a+u.data;return c}concat(a){if(this.length===0)return o.alloc(0);let u=o.allocUnsafe(a>>>0),c=this.head,f=0;for(;c;)s(u,c.data,f),f+=c.data.length,c=c.next;return u}consume(a,u){let c=this.head.data;if(a<c.length){let f=c.slice(0,a);return this.head.data=c.slice(a),f}return a===c.length?this.shift():u?this._getString(a):this._getBuffer(a)}first(){return this.head.data}*[n](){for(let a=this.head;a;a=a.next)yield a.data}_getString(a){let u="",c=this.head,f=0;do{let p=c.data;if(a>p.length)u+=p,a-=p.length;else{a===p.length?(u+=p,++f,c.next?this.head=c.next:this.head=this.tail=null):(u+=r(p,0,a),this.head=c,c.data=r(p,a));break}++f}while((c=c.next)!==null);return this.length-=f,u}_getBuffer(a){let u=o.allocUnsafe(a),c=a,f=this.head,p=0;do{let m=f.data;if(a>m.length)s(u,m,c-a),a-=m.length;else{a===m.length?(s(u,m,c-a),++p,f.next?this.head=f.next:this.head=this.tail=null):(s(u,new i(m.buffer,m.byteOffset,a),c-a),this.head=f,f.data=m.slice(a));break}++p}while((f=f.next)!==null);return this.length-=p,u}[Symbol.for("nodejs.util.inspect.custom")](a,u){return l(this,{...u,depth:0,customInspect:!1})}}}),Kl=ve((e,t)=>{pe(),me(),ge();var{MathFloor:r,NumberIsInteger:n}=et(),{ERR_INVALID_ARG_VALUE:s}=St().codes;function i(a,u,c){return a.highWaterMark!=null?a.highWaterMark:u?a[c]:null}function o(a){return a?16:16*1024}function l(a,u,c,f){let p=i(u,f,c);if(p!=null){if(!n(p)||p<0){let m=f?`options.${c}`:"options.highWaterMark";throw new s(m,p)}return r(p)}return o(a.objectMode)}t.exports={getHighWaterMark:l,getDefaultHighWaterMark:o}});function wc(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return r===-1&&(r=t),[r,r===t?0:4-r%4]}function Yb(e,t,r){for(var n,s,i=[],o=t;o<r;o+=3)n=(e[o]<<16&16711680)+(e[o+1]<<8&65280)+(255&e[o+2]),i.push(Dt[(s=n)>>18&63]+Dt[s>>12&63]+Dt[s>>6&63]+Dt[63&s]);return i.join("")}function cr(e){if(e>2147483647)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,ye.prototype),t}function ye(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return za(e)}return gd(e,t,r)}function gd(e,t,r){if(typeof e=="string")return function(i,o){if(typeof o=="string"&&o!==""||(o="utf8"),!ye.isEncoding(o))throw new TypeError("Unknown encoding: "+o);var l=0|yd(i,o),a=cr(l),u=a.write(i,o);return u!==l&&(a=a.slice(0,u)),a}(e,t);if(ArrayBuffer.isView(e))return fs(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(fr(e,ArrayBuffer)||e&&fr(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(fr(e,SharedArrayBuffer)||e&&fr(e.buffer,SharedArrayBuffer)))return Gb(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return ye.from(n,t,r);var s=function(i){if(ye.isBuffer(i)){var o=0|zl(i.length),l=cr(o);return l.length===0||i.copy(l,0,0,o),l}if(i.length!==void 0)return typeof i.length!="number"||Yl(i.length)?cr(0):fs(i);if(i.type==="Buffer"&&Array.isArray(i.data))return fs(i.data)}(e);if(s)return s;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return ye.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function md(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function za(e){return md(e),cr(e<0?0:0|zl(e))}function fs(e){for(var t=e.length<0?0:0|zl(e.length),r=cr(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function Gb(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=t===void 0&&r===void 0?new Uint8Array(e):r===void 0?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,ye.prototype),n}function zl(e){if(e>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function yd(e,t){if(ye.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||fr(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;for(var s=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Ya(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return _d(e).length;default:if(s)return n?-1:Ya(e).length;t=(""+t).toLowerCase(),s=!0}}function Qb(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return o0(this,t,r);case"utf8":case"utf-8":return vd(this,t,r);case"ascii":return n0(this,t,r);case"latin1":case"binary":return i0(this,t,r);case"base64":return r0(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s0(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Yr(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function _c(e,t,r,n,s){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Yl(r=+r)&&(r=s?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(s)return-1;r=e.length-1}else if(r<0){if(!s)return-1;r=0}if(typeof t=="string"&&(t=ye.from(t,n)),ye.isBuffer(t))return t.length===0?-1:Ec(e,t,r,n,s);if(typeof t=="number")return t&=255,typeof Uint8Array.prototype.indexOf=="function"?s?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):Ec(e,[t],r,n,s);throw new TypeError("val must be string, number or Buffer")}function Ec(e,t,r,n,s){var i,o=1,l=e.length,a=t.length;if(n!==void 0&&((n=String(n).toLowerCase())==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;o=2,l/=2,a/=2,r/=2}function u(m,y){return o===1?m[y]:m.readUInt16BE(y*o)}if(s){var c=-1;for(i=r;i<l;i++)if(u(e,i)===u(t,c===-1?0:i-c)){if(c===-1&&(c=i),i-c+1===a)return c*o}else c!==-1&&(i-=i-c),c=-1}else for(r+a>l&&(r=l-a),i=r;i>=0;i--){for(var f=!0,p=0;p<a;p++)if(u(e,i+p)!==u(t,p)){f=!1;break}if(f)return i}return-1}function Jb(e,t,r,n){r=Number(r)||0;var s=e.length-r;n?(n=Number(n))>s&&(n=s):n=s;var i=t.length;n>i/2&&(n=i/2);for(var o=0;o<n;++o){var l=parseInt(t.substr(2*o,2),16);if(Yl(l))return o;e[r+o]=l}return o}function Xb(e,t,r,n){return Uo(Ya(t,e.length-r),e,r,n)}function bd(e,t,r,n){return Uo(function(s){for(var i=[],o=0;o<s.length;++o)i.push(255&s.charCodeAt(o));return i}(t),e,r,n)}function Zb(e,t,r,n){return bd(e,t,r,n)}function e0(e,t,r,n){return Uo(_d(t),e,r,n)}function t0(e,t,r,n){return Uo(function(s,i){for(var o,l,a,u=[],c=0;c<s.length&&!((i-=2)<0);++c)o=s.charCodeAt(c),l=o>>8,a=o%256,u.push(a),u.push(l);return u}(t,e.length-r),e,r,n)}function r0(e,t,r){return t===0&&r===e.length?po.fromByteArray(e):po.fromByteArray(e.slice(t,r))}function vd(e,t,r){r=Math.min(e.length,r);for(var n=[],s=t;s<r;){var i,o,l,a,u=e[s],c=null,f=u>239?4:u>223?3:u>191?2:1;if(s+f<=r)switch(f){case 1:u<128&&(c=u);break;case 2:(192&(i=e[s+1]))==128&&(a=(31&u)<<6|63&i)>127&&(c=a);break;case 3:i=e[s+1],o=e[s+2],(192&i)==128&&(192&o)==128&&(a=(15&u)<<12|(63&i)<<6|63&o)>2047&&(a<55296||a>57343)&&(c=a);break;case 4:i=e[s+1],o=e[s+2],l=e[s+3],(192&i)==128&&(192&o)==128&&(192&l)==128&&(a=(15&u)<<18|(63&i)<<12|(63&o)<<6|63&l)>65535&&a<1114112&&(c=a)}c===null?(c=65533,f=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),s+=f}return function(p){var m=p.length;if(m<=4096)return String.fromCharCode.apply(String,p);for(var y="",b=0;b<m;)y+=String.fromCharCode.apply(String,p.slice(b,b+=4096));return y}(n)}function n0(e,t,r){var n="";r=Math.min(e.length,r);for(var s=t;s<r;++s)n+=String.fromCharCode(127&e[s]);return n}function i0(e,t,r){var n="";r=Math.min(e.length,r);for(var s=t;s<r;++s)n+=String.fromCharCode(e[s]);return n}function o0(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var s="",i=t;i<r;++i)s+=Sd[e[i]];return s}function s0(e,t,r){for(var n=e.slice(t,r),s="",i=0;i<n.length;i+=2)s+=String.fromCharCode(n[i]+256*n[i+1]);return s}function nt(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function yt(e,t,r,n,s,i){if(!ye.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>s||t<i)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function wd(e,t,r,n,s,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Sc(e,t,r,n,s){return t=+t,r>>>=0,s||wd(e,0,r,4),rn.write(e,t,r,n,23,4),r+4}function Ac(e,t,r,n,s){return t=+t,r>>>=0,s||wd(e,0,r,8),rn.write(e,t,r,n,52,8),r+8}function Ya(e,t){var r;t=t||1/0;for(var n=e.length,s=null,i=[],o=0;o<n;++o){if((r=e.charCodeAt(o))>55295&&r<57344){if(!s){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&i.push(239,191,189);continue}s=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),s=r;continue}r=65536+(s-55296<<10|r-56320)}else s&&(t-=3)>-1&&i.push(239,191,189);if(s=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function _d(e){return po.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(Ed,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(e))}function Uo(e,t,r,n){for(var s=0;s<n&&!(s+r>=t.length||s>=e.length);++s)t[s+r]=e[s];return s}function fr(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function Yl(e){return e!=e}function Tc(e,t){for(var r in e)t[r]=e[r]}function Gr(e,t,r){return jt(e,t,r)}function Vn(e){var t;switch(this.encoding=function(r){var n=function(s){if(!s)return"utf8";for(var i;;)switch(s){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return s;default:if(i)return;s=(""+s).toLowerCase(),i=!0}}(r);if(typeof n!="string"&&(go.isEncoding===Ga||!Ga(r)))throw new Error("Unknown encoding: "+r);return n||r}(e),this.encoding){case"utf16le":this.text=l0,this.end=u0,t=4;break;case"utf8":this.fillLast=a0,t=4;break;case"base64":this.text=c0,this.end=f0,t=3;break;default:return this.write=h0,this.end=d0,void 0}this.lastNeed=0,this.lastTotal=0,this.lastChar=go.allocUnsafe(t)}function hs(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a0(e){var t=this.lastTotal-this.lastNeed,r=function(n,s,i){if((192&s[0])!=128)return n.lastNeed=0,"�";if(n.lastNeed>1&&s.length>1){if((192&s[1])!=128)return n.lastNeed=1,"�";if(n.lastNeed>2&&s.length>2&&(192&s[2])!=128)return n.lastNeed=2,"�"}}(this,e);return r!==void 0?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length,void 0)}function l0(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u0(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function c0(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function f0(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function h0(e){return e.toString(this.encoding)}function d0(e){return e&&e.length?this.write(e):""}var Ic,Dt,At,Oc,ji,Qr,Cc,Rc,Vt,po,rn,ds,Ed,Sd,qn,Kn,jt,xc,Tn,go,Ga,Pc=st(()=>{for(pe(),me(),ge(),Ic={byteLength:function(e){var t=wc(e),r=t[0],n=t[1];return 3*(r+n)/4-n},toByteArray:function(e){var t,r,n=wc(e),s=n[0],i=n[1],o=new Oc(function(u,c,f){return 3*(c+f)/4-f}(0,s,i)),l=0,a=i>0?s-4:s;for(r=0;r<a;r+=4)t=At[e.charCodeAt(r)]<<18|At[e.charCodeAt(r+1)]<<12|At[e.charCodeAt(r+2)]<<6|At[e.charCodeAt(r+3)],o[l++]=t>>16&255,o[l++]=t>>8&255,o[l++]=255&t;return i===2&&(t=At[e.charCodeAt(r)]<<2|At[e.charCodeAt(r+1)]>>4,o[l++]=255&t),i===1&&(t=At[e.charCodeAt(r)]<<10|At[e.charCodeAt(r+1)]<<4|At[e.charCodeAt(r+2)]>>2,o[l++]=t>>8&255,o[l++]=255&t),o},fromByteArray:function(e){for(var t,r=e.length,n=r%3,s=[],i=0,o=r-n;i<o;i+=16383)s.push(Yb(e,i,i+16383>o?o:i+16383));return n===1?(t=e[r-1],s.push(Dt[t>>2]+Dt[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],s.push(Dt[t>>10]+Dt[t>>4&63]+Dt[t<<2&63]+"=")),s.join("")}},Dt=[],At=[],Oc=typeof Uint8Array<"u"?Uint8Array:Array,ji="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Qr=0,Cc=ji.length;Qr<Cc;++Qr)Dt[Qr]=ji[Qr],At[ji.charCodeAt(Qr)]=Qr;At[45]=62,At[95]=63,Rc={read:function(e,t,r,n,s){var i,o,l=8*s-n-1,a=(1<<l)-1,u=a>>1,c=-7,f=r?s-1:0,p=r?-1:1,m=e[t+f];for(f+=p,i=m&(1<<-c)-1,m>>=-c,c+=l;c>0;i=256*i+e[t+f],f+=p,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=256*o+e[t+f],f+=p,c-=8);if(i===0)i=1-u;else{if(i===a)return o?NaN:1/0*(m?-1:1);o+=Math.pow(2,n),i-=u}return(m?-1:1)*o*Math.pow(2,i-n)},write:function(e,t,r,n,s,i){var o,l,a,u=8*i-s-1,c=(1<<u)-1,f=c>>1,p=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,y=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-o))<1&&(o--,a*=2),(t+=o+f>=1?p/a:p*Math.pow(2,1-f))*a>=2&&(o++,a/=2),o+f>=c?(l=0,o=c):o+f>=1?(l=(t*a-1)*Math.pow(2,s),o+=f):(l=t*Math.pow(2,f-1)*Math.pow(2,s),o=0));s>=8;e[r+m]=255&l,m+=y,l/=256,s-=8);for(o=o<<s|l,u+=s;u>0;e[r+m]=255&o,m+=y,o/=256,u-=8);e[r+m-y]|=128*b}},Vt={},po=Ic,rn=Rc,ds=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null,Vt.Buffer=ye,Vt.SlowBuffer=function(e){return+e!=e&&(e=0),ye.alloc(+e)},Vt.INSPECT_MAX_BYTES=50,Vt.kMaxLength=2147483647,ye.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch{return!1}}(),ye.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(ye.prototype,"parent",{enumerable:!0,get:function(){if(ye.isBuffer(this))return this.buffer}}),Object.defineProperty(ye.prototype,"offset",{enumerable:!0,get:function(){if(ye.isBuffer(this))return this.byteOffset}}),ye.poolSize=8192,ye.from=function(e,t,r){return gd(e,t,r)},Object.setPrototypeOf(ye.prototype,Uint8Array.prototype),Object.setPrototypeOf(ye,Uint8Array),ye.alloc=function(e,t,r){return function(n,s,i){return md(n),n<=0?cr(n):s!==void 0?typeof i=="string"?cr(n).fill(s,i):cr(n).fill(s):cr(n)}(e,t,r)},ye.allocUnsafe=function(e){return za(e)},ye.allocUnsafeSlow=function(e){return za(e)},ye.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==ye.prototype},ye.compare=function(e,t){if(fr(e,Uint8Array)&&(e=ye.from(e,e.offset,e.byteLength)),fr(t,Uint8Array)&&(t=ye.from(t,t.offset,t.byteLength)),!ye.isBuffer(e)||!ye.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,s=0,i=Math.min(r,n);s<i;++s)if(e[s]!==t[s]){r=e[s],n=t[s];break}return r<n?-1:n<r?1:0},ye.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},ye.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return ye.alloc(0);var r;if(t===void 0)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=ye.allocUnsafe(t),s=0;for(r=0;r<e.length;++r){var i=e[r];if(fr(i,Uint8Array)&&(i=ye.from(i)),!ye.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,s),s+=i.length}return n},ye.byteLength=yd,ye.prototype._isBuffer=!0,ye.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)Yr(this,t,t+1);return this},ye.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)Yr(this,t,t+3),Yr(this,t+1,t+2);return this},ye.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)Yr(this,t,t+7),Yr(this,t+1,t+6),Yr(this,t+2,t+5),Yr(this,t+3,t+4);return this},ye.prototype.toString=function(){var e=this.length;return e===0?"":arguments.length===0?vd(this,0,e):Qb.apply(this,arguments)},ye.prototype.toLocaleString=ye.prototype.toString,ye.prototype.equals=function(e){if(!ye.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||ye.compare(this,e)===0},ye.prototype.inspect=function(){var e="",t=Vt.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},ds&&(ye.prototype[ds]=ye.prototype.inspect),ye.prototype.compare=function(e,t,r,n,s){if(fr(e,Uint8Array)&&(e=ye.from(e,e.offset,e.byteLength)),!ye.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),r===void 0&&(r=e?e.length:0),n===void 0&&(n=0),s===void 0&&(s=this.length),t<0||r>e.length||n<0||s>this.length)throw new RangeError("out of range index");if(n>=s&&t>=r)return 0;if(n>=s)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(s>>>=0)-(n>>>=0),o=(r>>>=0)-(t>>>=0),l=Math.min(i,o),a=this.slice(n,s),u=e.slice(t,r),c=0;c<l;++c)if(a[c]!==u[c]){i=a[c],o=u[c];break}return i<o?-1:o<i?1:0},ye.prototype.includes=function(e,t,r){return this.indexOf(e,t,r)!==-1},ye.prototype.indexOf=function(e,t,r){return _c(this,e,t,r,!0)},ye.prototype.lastIndexOf=function(e,t,r){return _c(this,e,t,r,!1)},ye.prototype.write=function(e,t,r,n){if(t===void 0)n="utf8",r=this.length,t=0;else if(r===void 0&&typeof t=="string")n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,n===void 0&&(n="utf8")):(n=r,r=void 0)}var s=this.length-t;if((r===void 0||r>s)&&(r=s),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return Jb(this,e,t,r);case"utf8":case"utf-8":return Xb(this,e,t,r);case"ascii":return bd(this,e,t,r);case"latin1":case"binary":return Zb(this,e,t,r);case"base64":return e0(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return t0(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},ye.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},ye.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=t===void 0?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,ye.prototype),n},ye.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||nt(e,t,this.length);for(var n=this[e],s=1,i=0;++i<t&&(s*=256);)n+=this[e+i]*s;return n},ye.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||nt(e,t,this.length);for(var n=this[e+--t],s=1;t>0&&(s*=256);)n+=this[e+--t]*s;return n},ye.prototype.readUInt8=function(e,t){return e>>>=0,t||nt(e,1,this.length),this[e]},ye.prototype.readUInt16LE=function(e,t){return e>>>=0,t||nt(e,2,this.length),this[e]|this[e+1]<<8},ye.prototype.readUInt16BE=function(e,t){return e>>>=0,t||nt(e,2,this.length),this[e]<<8|this[e+1]},ye.prototype.readUInt32LE=function(e,t){return e>>>=0,t||nt(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},ye.prototype.readUInt32BE=function(e,t){return e>>>=0,t||nt(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},ye.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||nt(e,t,this.length);for(var n=this[e],s=1,i=0;++i<t&&(s*=256);)n+=this[e+i]*s;return n>=(s*=128)&&(n-=Math.pow(2,8*t)),n},ye.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||nt(e,t,this.length);for(var n=t,s=1,i=this[e+--n];n>0&&(s*=256);)i+=this[e+--n]*s;return i>=(s*=128)&&(i-=Math.pow(2,8*t)),i},ye.prototype.readInt8=function(e,t){return e>>>=0,t||nt(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},ye.prototype.readInt16LE=function(e,t){e>>>=0,t||nt(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},ye.prototype.readInt16BE=function(e,t){e>>>=0,t||nt(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},ye.prototype.readInt32LE=function(e,t){return e>>>=0,t||nt(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},ye.prototype.readInt32BE=function(e,t){return e>>>=0,t||nt(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},ye.prototype.readFloatLE=function(e,t){return e>>>=0,t||nt(e,4,this.length),rn.read(this,e,!0,23,4)},ye.prototype.readFloatBE=function(e,t){return e>>>=0,t||nt(e,4,this.length),rn.read(this,e,!1,23,4)},ye.prototype.readDoubleLE=function(e,t){return e>>>=0,t||nt(e,8,this.length),rn.read(this,e,!0,52,8)},ye.prototype.readDoubleBE=function(e,t){return e>>>=0,t||nt(e,8,this.length),rn.read(this,e,!1,52,8)},ye.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||yt(this,e,t,r,Math.pow(2,8*r)-1,0);var s=1,i=0;for(this[t]=255&e;++i<r&&(s*=256);)this[t+i]=e/s&255;return t+r},ye.prototype.writeUIntBE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||yt(this,e,t,r,Math.pow(2,8*r)-1,0);var s=r-1,i=1;for(this[t+s]=255&e;--s>=0&&(i*=256);)this[t+s]=e/i&255;return t+r},ye.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||yt(this,e,t,1,255,0),this[t]=255&e,t+1},ye.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||yt(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},ye.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||yt(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},ye.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||yt(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},ye.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||yt(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},ye.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var s=Math.pow(2,8*r-1);yt(this,e,t,r,s-1,-s)}var i=0,o=1,l=0;for(this[t]=255&e;++i<r&&(o*=256);)e<0&&l===0&&this[t+i-1]!==0&&(l=1),this[t+i]=(e/o>>0)-l&255;return t+r},ye.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var s=Math.pow(2,8*r-1);yt(this,e,t,r,s-1,-s)}var i=r-1,o=1,l=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&l===0&&this[t+i+1]!==0&&(l=1),this[t+i]=(e/o>>0)-l&255;return t+r},ye.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||yt(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},ye.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||yt(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},ye.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||yt(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},ye.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||yt(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},ye.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||yt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},ye.prototype.writeFloatLE=function(e,t,r){return Sc(this,e,t,!0,r)},ye.prototype.writeFloatBE=function(e,t,r){return Sc(this,e,t,!1,r)},ye.prototype.writeDoubleLE=function(e,t,r){return Ac(this,e,t,!0,r)},ye.prototype.writeDoubleBE=function(e,t,r){return Ac(this,e,t,!1,r)},ye.prototype.copy=function(e,t,r,n){if(!ye.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||n===0||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var s=n-r;if(this===e&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(t,r,n);else if(this===e&&r<t&&t<n)for(var i=s-1;i>=0;--i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return s},ye.prototype.fill=function(e,t,r,n){if(typeof e=="string"){if(typeof t=="string"?(n=t,t=0,r=this.length):typeof r=="string"&&(n=r,r=this.length),n!==void 0&&typeof n!="string")throw new TypeError("encoding must be a string");if(typeof n=="string"&&!ye.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(e.length===1){var s=e.charCodeAt(0);(n==="utf8"&&s<128||n==="latin1")&&(e=s)}}else typeof e=="number"?e&=255:typeof e=="boolean"&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var i;if(t>>>=0,r=r===void 0?this.length:r>>>0,e||(e=0),typeof e=="number")for(i=t;i<r;++i)this[i]=e;else{var o=ye.isBuffer(e)?e:ye.from(e,n),l=o.length;if(l===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=o[i%l]}return this},Ed=/[^+/0-9A-Za-z-_]/g,Sd=function(){for(var e=new Array(256),t=0;t<16;++t)for(var r=16*t,n=0;n<16;++n)e[r+n]="0123456789abcdef"[t]+"0123456789abcdef"[n];return e}(),Vt.Buffer,Vt.INSPECT_MAX_BYTES,Vt.kMaxLength,qn={},Kn=Vt,jt=Kn.Buffer,jt.from&&jt.alloc&&jt.allocUnsafe&&jt.allocUnsafeSlow?qn=Kn:(Tc(Kn,qn),qn.Buffer=Gr),Gr.prototype=Object.create(jt.prototype),Tc(jt,Gr),Gr.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return jt(e,t,r)},Gr.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=jt(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n},Gr.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return jt(e)},Gr.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Kn.SlowBuffer(e)},xc=qn,Tn={},go=xc.Buffer,Ga=go.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},Tn.StringDecoder=Vn,Vn.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if((t=this.fillLast(e))===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""},Vn.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},Vn.prototype.text=function(e,t){var r=function(s,i,o){var l=i.length-1;if(l<o)return 0;var a=hs(i[l]);return a>=0?(a>0&&(s.lastNeed=a-1),a):--l<o||a===-2?0:(a=hs(i[l]))>=0?(a>0&&(s.lastNeed=a-2),a):--l<o||a===-2?0:(a=hs(i[l]))>=0?(a>0&&(a===2?a=0:s.lastNeed=a-3),a):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},Vn.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},Tn.StringDecoder,Tn.StringDecoder}),Ad={};pn(Ad,{StringDecoder:()=>Td,default:()=>Tn});var Td,p0=st(()=>{pe(),me(),ge(),Pc(),Pc(),Td=Tn.StringDecoder}),Id=ve((e,t)=>{pe(),me(),ge();var r=gn(),{PromisePrototypeThen:n,SymbolAsyncIterator:s,SymbolIterator:i}=et(),{Buffer:o}=(lt(),De(at)),{ERR_INVALID_ARG_TYPE:l,ERR_STREAM_NULL_VALUES:a}=St().codes;function u(c,f,p){let m;if(typeof f=="string"||f instanceof o)return new c({objectMode:!0,...p,read(){this.push(f),this.push(null)}});let y;if(f&&f[s])y=!0,m=f[s]();else if(f&&f[i])y=!1,m=f[i]();else throw new l("iterable",["Iterable"],f);let b=new c({objectMode:!0,highWaterMark:1,...p}),O=!1;b._read=function(){O||(O=!0,C())},b._destroy=function(_,B){n(L(_),()=>r.nextTick(B,_),F=>r.nextTick(B,F||_))};async function L(_){let B=_!=null,F=typeof m.throw=="function";if(B&&F){let{value:k,done:P}=await m.throw(_);if(await k,P)return}if(typeof m.return=="function"){let{value:k}=await m.return();await k}}async function C(){for(;;){try{let{value:_,done:B}=y?await m.next():m.next();if(B)b.push(null);else{let F=_&&typeof _.then=="function"?await _:_;if(F===null)throw O=!1,new a;if(b.push(F))continue;O=!1}}catch(_){b.destroy(_)}break}}return b}t.exports=u}),Do=ve((e,t)=>{pe(),me(),ge();var r=gn(),{ArrayPrototypeIndexOf:n,NumberIsInteger:s,NumberIsNaN:i,NumberParseInt:o,ObjectDefineProperties:l,ObjectKeys:a,ObjectSetPrototypeOf:u,Promise:c,SafeSet:f,SymbolAsyncIterator:p,Symbol:m}=et();t.exports=A,A.ReadableState=be;var{EventEmitter:y}=(Un(),De(mn)),{Stream:b,prependListener:O}=ql(),{Buffer:L}=(lt(),De(at)),{addAbortSignal:C}=jo(),_=Wr(),B=dr().debuglog("stream",h=>{B=h}),F=zb(),k=jn(),{getHighWaterMark:P,getDefaultHighWaterMark:j}=Kl(),{aggregateTwoErrors:D,codes:{ERR_INVALID_ARG_TYPE:X,ERR_METHOD_NOT_IMPLEMENTED:Z,ERR_OUT_OF_RANGE:S,ERR_STREAM_PUSH_AFTER_EOF:z,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:ae}}=St(),{validateObject:ee}=No(),le=m("kPaused"),{StringDecoder:ne}=(p0(),De(Ad)),G=Id();u(A.prototype,b.prototype),u(A,b);var de=()=>{},{errorOrDestroy:ce}=k;function be(h,g,w){typeof w!="boolean"&&(w=g instanceof pr()),this.objectMode=!!(h&&h.objectMode),w&&(this.objectMode=this.objectMode||!!(h&&h.readableObjectMode)),this.highWaterMark=h?P(this,h,"readableHighWaterMark",w):j(!1),this.buffer=new F,this.length=0,this.pipes=[],this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.constructed=!0,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this[le]=null,this.errorEmitted=!1,this.emitClose=!h||h.emitClose!==!1,this.autoDestroy=!h||h.autoDestroy!==!1,this.destroyed=!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this.defaultEncoding=h&&h.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.multiAwaitDrain=!1,this.readingMore=!1,this.dataEmitted=!1,this.decoder=null,this.encoding=null,h&&h.encoding&&(this.decoder=new ne(h.encoding),this.encoding=h.encoding)}function A(h){if(!(this instanceof A))return new A(h);let g=this instanceof pr();this._readableState=new be(h,this,g),h&&(typeof h.read=="function"&&(this._read=h.read),typeof h.destroy=="function"&&(this._destroy=h.destroy),typeof h.construct=="function"&&(this._construct=h.construct),h.signal&&!g&&C(h.signal,this)),b.call(this,h),k.construct(this,()=>{this._readableState.needReadable&&oe(this,this._readableState)})}A.prototype.destroy=k.destroy,A.prototype._undestroy=k.undestroy,A.prototype._destroy=function(h,g){g(h)},A.prototype[y.captureRejectionSymbol]=function(h){this.destroy(h)},A.prototype.push=function(h,g){return ie(this,h,g,!1)},A.prototype.unshift=function(h,g){return ie(this,h,g,!0)};function ie(h,g,w,W){B("readableAddChunk",g);let Q=h._readableState,ue;if(Q.objectMode||(typeof g=="string"?(w=w||Q.defaultEncoding,Q.encoding!==w&&(W&&Q.encoding?g=L.from(g,w).toString(Q.encoding):(g=L.from(g,w),w=""))):g instanceof L?w="":b._isUint8Array(g)?(g=b._uint8ArrayToBuffer(g),w=""):g!=null&&(ue=new X("chunk",["string","Buffer","Uint8Array"],g))),ue)ce(h,ue);else if(g===null)Q.reading=!1,I(h,Q);else if(Q.objectMode||g&&g.length>0)if(W)if(Q.endEmitted)ce(h,new ae);else{if(Q.destroyed||Q.errored)return!1;he(h,Q,g,!0)}else if(Q.ended)ce(h,new z);else{if(Q.destroyed||Q.errored)return!1;Q.reading=!1,Q.decoder&&!w?(g=Q.decoder.write(g),Q.objectMode||g.length!==0?he(h,Q,g,!1):oe(h,Q)):he(h,Q,g,!1)}else W||(Q.reading=!1,oe(h,Q));return!Q.ended&&(Q.length<Q.highWaterMark||Q.length===0)}function he(h,g,w,W){g.flowing&&g.length===0&&!g.sync&&h.listenerCount("data")>0?(g.multiAwaitDrain?g.awaitDrainWriters.clear():g.awaitDrainWriters=null,g.dataEmitted=!0,h.emit("data",w)):(g.length+=g.objectMode?1:w.length,W?g.buffer.unshift(w):g.buffer.push(w),g.needReadable&&K(h)),oe(h,g)}A.prototype.isPaused=function(){let h=this._readableState;return h[le]===!0||h.flowing===!1},A.prototype.setEncoding=function(h){let g=new ne(h);this._readableState.decoder=g,this._readableState.encoding=this._readableState.decoder.encoding;let w=this._readableState.buffer,W="";for(let Q of w)W+=g.write(Q);return w.clear(),W!==""&&w.push(W),this._readableState.length=W.length,this};var we=1073741824;function fe(h){if(h>we)throw new S("size","<= 1GiB",h);return h--,h|=h>>>1,h|=h>>>2,h|=h>>>4,h|=h>>>8,h|=h>>>16,h++,h}function E(h,g){return h<=0||g.length===0&&g.ended?0:g.objectMode?1:i(h)?g.flowing&&g.length?g.buffer.first().length:g.length:h<=g.length?h:g.ended?g.length:0}A.prototype.read=function(h){B("read",h),h===void 0?h=NaN:s(h)||(h=o(h,10));let g=this._readableState,w=h;if(h>g.highWaterMark&&(g.highWaterMark=fe(h)),h!==0&&(g.emittedReadable=!1),h===0&&g.needReadable&&((g.highWaterMark!==0?g.length>=g.highWaterMark:g.length>0)||g.ended))return B("read: emitReadable",g.length,g.ended),g.length===0&&g.ended?R(this):K(this),null;if(h=E(h,g),h===0&&g.ended)return g.length===0&&R(this),null;let W=g.needReadable;if(B("need readable",W),(g.length===0||g.length-h<g.highWaterMark)&&(W=!0,B("length less than watermark",W)),g.ended||g.reading||g.destroyed||g.errored||!g.constructed)W=!1,B("reading, ended or constructing",W);else if(W){B("do read"),g.reading=!0,g.sync=!0,g.length===0&&(g.needReadable=!0);try{this._read(g.highWaterMark)}catch(ue){ce(this,ue)}g.sync=!1,g.reading||(h=E(w,g))}let Q;return h>0?Q=$(h,g):Q=null,Q===null?(g.needReadable=g.length<=g.highWaterMark,h=0):(g.length-=h,g.multiAwaitDrain?g.awaitDrainWriters.clear():g.awaitDrainWriters=null),g.length===0&&(g.ended||(g.needReadable=!0),w!==h&&g.ended&&R(this)),Q!==null&&!g.errorEmitted&&!g.closeEmitted&&(g.dataEmitted=!0,this.emit("data",Q)),Q};function I(h,g){if(B("onEofChunk"),!g.ended){if(g.decoder){let w=g.decoder.end();w&&w.length&&(g.buffer.push(w),g.length+=g.objectMode?1:w.length)}g.ended=!0,g.sync?K(h):(g.needReadable=!1,g.emittedReadable=!0,re(h))}}function K(h){let g=h._readableState;B("emitReadable",g.needReadable,g.emittedReadable),g.needReadable=!1,g.emittedReadable||(B("emitReadable",g.flowing),g.emittedReadable=!0,r.nextTick(re,h))}function re(h){let g=h._readableState;B("emitReadable_",g.destroyed,g.length,g.ended),!g.destroyed&&!g.errored&&(g.length||g.ended)&&(h.emit("readable"),g.emittedReadable=!1),g.needReadable=!g.flowing&&!g.ended&&g.length<=g.highWaterMark,Y(h)}function oe(h,g){!g.readingMore&&g.constructed&&(g.readingMore=!0,r.nextTick(se,h,g))}function se(h,g){for(;!g.reading&&!g.ended&&(g.length<g.highWaterMark||g.flowing&&g.length===0);){let w=g.length;if(B("maybeReadMore read 0"),h.read(0),w===g.length)break}g.readingMore=!1}A.prototype._read=function(h){throw new Z("_read()")},A.prototype.pipe=function(h,g){let w=this,W=this._readableState;W.pipes.length===1&&(W.multiAwaitDrain||(W.multiAwaitDrain=!0,W.awaitDrainWriters=new f(W.awaitDrainWriters?[W.awaitDrainWriters]:[]))),W.pipes.push(h),B("pipe count=%d opts=%j",W.pipes.length,g);let Q=(!g||g.end!==!1)&&h!==r.stdout&&h!==r.stderr?Ee:ot;W.endEmitted?r.nextTick(Q):w.once("end",Q),h.on("unpipe",ue);function ue(ht,rt){B("onunpipe"),ht===w&&rt&&rt.hasUnpiped===!1&&(rt.hasUnpiped=!0,_e())}function Ee(){B("onend"),h.end()}let Ce,xe=!1;function _e(){B("cleanup"),h.removeListener("close",tt),h.removeListener("finish",Qe),Ce&&h.removeListener("drain",Ce),h.removeListener("error",Fe),h.removeListener("unpipe",ue),w.removeListener("end",Ee),w.removeListener("end",ot),w.removeListener("data",Ie),xe=!0,Ce&&W.awaitDrainWriters&&(!h._writableState||h._writableState.needDrain)&&Ce()}function Ae(){xe||(W.pipes.length===1&&W.pipes[0]===h?(B("false write response, pause",0),W.awaitDrainWriters=h,W.multiAwaitDrain=!1):W.pipes.length>1&&W.pipes.includes(h)&&(B("false write response, pause",W.awaitDrainWriters.size),W.awaitDrainWriters.add(h)),w.pause()),Ce||(Ce=T(w,h),h.on("drain",Ce))}w.on("data",Ie);function Ie(ht){B("ondata");let rt=h.write(ht);B("dest.write",rt),rt===!1&&Ae()}function Fe(ht){if(B("onerror",ht),ot(),h.removeListener("error",Fe),h.listenerCount("error")===0){let rt=h._writableState||h._readableState;rt&&!rt.errorEmitted?ce(h,ht):h.emit("error",ht)}}O(h,"error",Fe);function tt(){h.removeListener("finish",Qe),ot()}h.once("close",tt);function Qe(){B("onfinish"),h.removeListener("close",tt),ot()}h.once("finish",Qe);function ot(){B("unpipe"),w.unpipe(h)}return h.emit("pipe",w),h.writableNeedDrain===!0?W.flowing&&Ae():W.flowing||(B("pipe resume"),w.resume()),h};function T(h,g){return function(){let w=h._readableState;w.awaitDrainWriters===g?(B("pipeOnDrain",1),w.awaitDrainWriters=null):w.multiAwaitDrain&&(B("pipeOnDrain",w.awaitDrainWriters.size),w.awaitDrainWriters.delete(g)),(!w.awaitDrainWriters||w.awaitDrainWriters.size===0)&&h.listenerCount("data")&&h.resume()}}A.prototype.unpipe=function(h){let g=this._readableState,w={hasUnpiped:!1};if(g.pipes.length===0)return this;if(!h){let Q=g.pipes;g.pipes=[],this.pause();for(let ue=0;ue<Q.length;ue++)Q[ue].emit("unpipe",this,{hasUnpiped:!1});return this}let W=n(g.pipes,h);return W===-1?this:(g.pipes.splice(W,1),g.pipes.length===0&&this.pause(),h.emit("unpipe",this,w),this)},A.prototype.on=function(h,g){let w=b.prototype.on.call(this,h,g),W=this._readableState;return h==="data"?(W.readableListening=this.listenerCount("readable")>0,W.flowing!==!1&&this.resume()):h==="readable"&&!W.endEmitted&&!W.readableListening&&(W.readableListening=W.needReadable=!0,W.flowing=!1,W.emittedReadable=!1,B("on readable",W.length,W.reading),W.length?K(this):W.reading||r.nextTick(v,this)),w},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(h,g){let w=b.prototype.removeListener.call(this,h,g);return h==="readable"&&r.nextTick(x,this),w},A.prototype.off=A.prototype.removeListener,A.prototype.removeAllListeners=function(h){let g=b.prototype.removeAllListeners.apply(this,arguments);return(h==="readable"||h===void 0)&&r.nextTick(x,this),g};function x(h){let g=h._readableState;g.readableListening=h.listenerCount("readable")>0,g.resumeScheduled&&g[le]===!1?g.flowing=!0:h.listenerCount("data")>0?h.resume():g.readableListening||(g.flowing=null)}function v(h){B("readable nexttick read 0"),h.read(0)}A.prototype.resume=function(){let h=this._readableState;return h.flowing||(B("resume"),h.flowing=!h.readableListening,U(this,h)),h[le]=!1,this};function U(h,g){g.resumeScheduled||(g.resumeScheduled=!0,r.nextTick(M,h,g))}function M(h,g){B("resume",g.reading),g.reading||h.read(0),g.resumeScheduled=!1,h.emit("resume"),Y(h),g.flowing&&!g.reading&&h.read(0)}A.prototype.pause=function(){return B("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(B("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[le]=!0,this};function Y(h){let g=h._readableState;for(B("flow",g.flowing);g.flowing&&h.read()!==null;);}A.prototype.wrap=function(h){let g=!1;h.on("data",W=>{!this.push(W)&&h.pause&&(g=!0,h.pause())}),h.on("end",()=>{this.push(null)}),h.on("error",W=>{ce(this,W)}),h.on("close",()=>{this.destroy()}),h.on("destroy",()=>{this.destroy()}),this._read=()=>{g&&h.resume&&(g=!1,h.resume())};let w=a(h);for(let W=1;W<w.length;W++){let Q=w[W];this[Q]===void 0&&typeof h[Q]=="function"&&(this[Q]=h[Q].bind(h))}return this},A.prototype[p]=function(){return J(this)},A.prototype.iterator=function(h){return h!==void 0&&ee(h,"options"),J(this,h)};function J(h,g){typeof h.read!="function"&&(h=A.wrap(h,{objectMode:!0}));let w=N(h,g);return w.stream=h,w}async function*N(h,g){let w=de;function W(Ee){this===h?(w(),w=de):w=Ee}h.on("readable",W);let Q,ue=_(h,{writable:!1},Ee=>{Q=Ee?D(Q,Ee):null,w(),w=de});try{for(;;){let Ee=h.destroyed?null:h.read();if(Ee!==null)yield Ee;else{if(Q)throw Q;if(Q===null)return;await new c(W)}}}catch(Ee){throw Q=D(Q,Ee),Q}finally{(Q||(g==null?void 0:g.destroyOnReturn)!==!1)&&(Q===void 0||h._readableState.autoDestroy)?k.destroyer(h,null):(h.off("readable",W),ue())}}l(A.prototype,{readable:{__proto__:null,get(){let h=this._readableState;return!!h&&h.readable!==!1&&!h.destroyed&&!h.errorEmitted&&!h.endEmitted},set(h){this._readableState&&(this._readableState.readable=!!h)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(h){this._readableState&&(this._readableState.flowing=h)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(h){this._readableState&&(this._readableState.destroyed=h)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),l(be.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[le]!==!1},set(h){this[le]=!!h}}}),A._fromList=$;function $(h,g){if(g.length===0)return null;let w;return g.objectMode?w=g.buffer.shift():!h||h>=g.length?(g.decoder?w=g.buffer.join(""):g.buffer.length===1?w=g.buffer.first():w=g.buffer.concat(g.length),g.buffer.clear()):w=g.buffer.consume(h,g.decoder),w}function R(h){let g=h._readableState;B("endReadable",g.endEmitted),g.endEmitted||(g.ended=!0,r.nextTick(H,g,h))}function H(h,g){if(B("endReadableNT",h.endEmitted,h.length),!h.errored&&!h.closeEmitted&&!h.endEmitted&&h.length===0){if(h.endEmitted=!0,g.emit("end"),g.writable&&g.allowHalfOpen===!1)r.nextTick(V,g);else if(h.autoDestroy){let w=g._writableState;(!w||w.autoDestroy&&(w.finished||w.writable===!1))&&g.destroy()}}}function V(h){h.writable&&!h.writableEnded&&!h.destroyed&&h.end()}A.from=function(h,g){return G(A,h,g)};var te;function d(){return te===void 0&&(te={}),te}A.fromWeb=function(h,g){return d().newStreamReadableFromReadableStream(h,g)},A.toWeb=function(h,g){return d().newReadableStreamFromStreamReadable(h,g)},A.wrap=function(h,g){var w,W;return new A({objectMode:(w=(W=h.readableObjectMode)!==null&&W!==void 0?W:h.objectMode)!==null&&w!==void 0?w:!0,...g,destroy(Q,ue){k.destroyer(h,Q),ue(Q)}}).wrap(h)}}),Od=ve((e,t)=>{pe(),me(),ge();var r=gn(),{ArrayPrototypeSlice:n,Error:s,FunctionPrototypeSymbolHasInstance:i,ObjectDefineProperty:o,ObjectDefineProperties:l,ObjectSetPrototypeOf:a,StringPrototypeToLowerCase:u,Symbol:c,SymbolHasInstance:f}=et();t.exports=ne,ne.WritableState=ee;var{EventEmitter:p}=(Un(),De(mn)),m=ql().Stream,{Buffer:y}=(lt(),De(at)),b=jn(),{addAbortSignal:O}=jo(),{getHighWaterMark:L,getDefaultHighWaterMark:C}=Kl(),{ERR_INVALID_ARG_TYPE:_,ERR_METHOD_NOT_IMPLEMENTED:B,ERR_MULTIPLE_CALLBACK:F,ERR_STREAM_CANNOT_PIPE:k,ERR_STREAM_DESTROYED:P,ERR_STREAM_ALREADY_FINISHED:j,ERR_STREAM_NULL_VALUES:D,ERR_STREAM_WRITE_AFTER_END:X,ERR_UNKNOWN_ENCODING:Z}=St().codes,{errorOrDestroy:S}=b;a(ne.prototype,m.prototype),a(ne,m);function z(){}var ae=c("kOnFinished");function ee(v,U,M){typeof M!="boolean"&&(M=U instanceof pr()),this.objectMode=!!(v&&v.objectMode),M&&(this.objectMode=this.objectMode||!!(v&&v.writableObjectMode)),this.highWaterMark=v?L(this,v,"writableHighWaterMark",M):C(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let Y=!!(v&&v.decodeStrings===!1);this.decodeStrings=!Y,this.defaultEncoding=v&&v.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=A.bind(void 0,U),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,le(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!v||v.emitClose!==!1,this.autoDestroy=!v||v.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[ae]=[]}function le(v){v.buffered=[],v.bufferedIndex=0,v.allBuffers=!0,v.allNoop=!0}ee.prototype.getBuffer=function(){return n(this.buffered,this.bufferedIndex)},o(ee.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function ne(v){let U=this instanceof pr();if(!U&&!i(ne,this))return new ne(v);this._writableState=new ee(v,this,U),v&&(typeof v.write=="function"&&(this._write=v.write),typeof v.writev=="function"&&(this._writev=v.writev),typeof v.destroy=="function"&&(this._destroy=v.destroy),typeof v.final=="function"&&(this._final=v.final),typeof v.construct=="function"&&(this._construct=v.construct),v.signal&&O(v.signal,this)),m.call(this,v),b.construct(this,()=>{let M=this._writableState;M.writing||fe(this,M),re(this,M)})}o(ne,f,{__proto__:null,value:function(v){return i(this,v)?!0:this!==ne?!1:v&&v._writableState instanceof ee}}),ne.prototype.pipe=function(){S(this,new k)};function G(v,U,M,Y){let J=v._writableState;if(typeof M=="function")Y=M,M=J.defaultEncoding;else{if(!M)M=J.defaultEncoding;else if(M!=="buffer"&&!y.isEncoding(M))throw new Z(M);typeof Y!="function"&&(Y=z)}if(U===null)throw new D;if(!J.objectMode)if(typeof U=="string")J.decodeStrings!==!1&&(U=y.from(U,M),M="buffer");else if(U instanceof y)M="buffer";else if(m._isUint8Array(U))U=m._uint8ArrayToBuffer(U),M="buffer";else throw new _("chunk",["string","Buffer","Uint8Array"],U);let N;return J.ending?N=new X:J.destroyed&&(N=new P("write")),N?(r.nextTick(Y,N),S(v,N,!0),N):(J.pendingcb++,de(v,J,U,M,Y))}ne.prototype.write=function(v,U,M){return G(this,v,U,M)===!0},ne.prototype.cork=function(){this._writableState.corked++},ne.prototype.uncork=function(){let v=this._writableState;v.corked&&(v.corked--,v.writing||fe(this,v))},ne.prototype.setDefaultEncoding=function(v){if(typeof v=="string"&&(v=u(v)),!y.isEncoding(v))throw new Z(v);return this._writableState.defaultEncoding=v,this};function de(v,U,M,Y,J){let N=U.objectMode?1:M.length;U.length+=N;let $=U.length<U.highWaterMark;return $||(U.needDrain=!0),U.writing||U.corked||U.errored||!U.constructed?(U.buffered.push({chunk:M,encoding:Y,callback:J}),U.allBuffers&&Y!=="buffer"&&(U.allBuffers=!1),U.allNoop&&J!==z&&(U.allNoop=!1)):(U.writelen=N,U.writecb=J,U.writing=!0,U.sync=!0,v._write(M,Y,U.onwrite),U.sync=!1),$&&!U.errored&&!U.destroyed}function ce(v,U,M,Y,J,N,$){U.writelen=Y,U.writecb=$,U.writing=!0,U.sync=!0,U.destroyed?U.onwrite(new P("write")):M?v._writev(J,U.onwrite):v._write(J,N,U.onwrite),U.sync=!1}function be(v,U,M,Y){--U.pendingcb,Y(M),we(U),S(v,M)}function A(v,U){let M=v._writableState,Y=M.sync,J=M.writecb;if(typeof J!="function"){S(v,new F);return}M.writing=!1,M.writecb=null,M.length-=M.writelen,M.writelen=0,U?(U.stack,M.errored||(M.errored=U),v._readableState&&!v._readableState.errored&&(v._readableState.errored=U),Y?r.nextTick(be,v,M,U,J):be(v,M,U,J)):(M.buffered.length>M.bufferedIndex&&fe(v,M),Y?M.afterWriteTickInfo!==null&&M.afterWriteTickInfo.cb===J?M.afterWriteTickInfo.count++:(M.afterWriteTickInfo={count:1,cb:J,stream:v,state:M},r.nextTick(ie,M.afterWriteTickInfo)):he(v,M,1,J))}function ie({stream:v,state:U,count:M,cb:Y}){return U.afterWriteTickInfo=null,he(v,U,M,Y)}function he(v,U,M,Y){for(!U.ending&&!v.destroyed&&U.length===0&&U.needDrain&&(U.needDrain=!1,v.emit("drain"));M-- >0;)U.pendingcb--,Y();U.destroyed&&we(U),re(v,U)}function we(v){if(v.writing)return;for(let J=v.bufferedIndex;J<v.buffered.length;++J){var U;let{chunk:N,callback:$}=v.buffered[J],R=v.objectMode?1:N.length;v.length-=R,$((U=v.errored)!==null&&U!==void 0?U:new P("write"))}let M=v[ae].splice(0);for(let J=0;J<M.length;J++){var Y;M[J]((Y=v.errored)!==null&&Y!==void 0?Y:new P("end"))}le(v)}function fe(v,U){if(U.corked||U.bufferProcessing||U.destroyed||!U.constructed)return;let{buffered:M,bufferedIndex:Y,objectMode:J}=U,N=M.length-Y;if(!N)return;let $=Y;if(U.bufferProcessing=!0,N>1&&v._writev){U.pendingcb-=N-1;let R=U.allNoop?z:V=>{for(let te=$;te<M.length;++te)M[te].callback(V)},H=U.allNoop&&$===0?M:n(M,$);H.allBuffers=U.allBuffers,ce(v,U,!0,U.length,H,"",R),le(U)}else{do{let{chunk:R,encoding:H,callback:V}=M[$];M[$++]=null;let te=J?1:R.length;ce(v,U,!1,te,R,H,V)}while($<M.length&&!U.writing);$===M.length?le(U):$>256?(M.splice(0,$),U.bufferedIndex=0):U.bufferedIndex=$}U.bufferProcessing=!1}ne.prototype._write=function(v,U,M){if(this._writev)this._writev([{chunk:v,encoding:U}],M);else throw new B("_write()")},ne.prototype._writev=null,ne.prototype.end=function(v,U,M){let Y=this._writableState;typeof v=="function"?(M=v,v=null,U=null):typeof U=="function"&&(M=U,U=null);let J;if(v!=null){let N=G(this,v,U);N instanceof s&&(J=N)}return Y.corked&&(Y.corked=1,this.uncork()),J||(!Y.errored&&!Y.ending?(Y.ending=!0,re(this,Y,!0),Y.ended=!0):Y.finished?J=new j("end"):Y.destroyed&&(J=new P("end"))),typeof M=="function"&&(J||Y.finished?r.nextTick(M,J):Y[ae].push(M)),this};function E(v){return v.ending&&!v.destroyed&&v.constructed&&v.length===0&&!v.errored&&v.buffered.length===0&&!v.finished&&!v.writing&&!v.errorEmitted&&!v.closeEmitted}function I(v,U){let M=!1;function Y(J){if(M){S(v,J??F());return}if(M=!0,U.pendingcb--,J){let N=U[ae].splice(0);for(let $=0;$<N.length;$++)N[$](J);S(v,J,U.sync)}else E(U)&&(U.prefinished=!0,v.emit("prefinish"),U.pendingcb++,r.nextTick(oe,v,U))}U.sync=!0,U.pendingcb++;try{v._final(Y)}catch(J){Y(J)}U.sync=!1}function K(v,U){!U.prefinished&&!U.finalCalled&&(typeof v._final=="function"&&!U.destroyed?(U.finalCalled=!0,I(v,U)):(U.prefinished=!0,v.emit("prefinish")))}function re(v,U,M){E(U)&&(K(v,U),U.pendingcb===0&&(M?(U.pendingcb++,r.nextTick((Y,J)=>{E(J)?oe(Y,J):J.pendingcb--},v,U)):E(U)&&(U.pendingcb++,oe(v,U))))}function oe(v,U){U.pendingcb--,U.finished=!0;let M=U[ae].splice(0);for(let Y=0;Y<M.length;Y++)M[Y]();if(v.emit("finish"),U.autoDestroy){let Y=v._readableState;(!Y||Y.autoDestroy&&(Y.endEmitted||Y.readable===!1))&&v.destroy()}}l(ne.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(v){this._writableState&&(this._writableState.destroyed=v)}},writable:{__proto__:null,get(){let v=this._writableState;return!!v&&v.writable!==!1&&!v.destroyed&&!v.errored&&!v.ending&&!v.ended},set(v){this._writableState&&(this._writableState.writable=!!v)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){let v=this._writableState;return v?!v.destroyed&&!v.ending&&v.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});var se=b.destroy;ne.prototype.destroy=function(v,U){let M=this._writableState;return!M.destroyed&&(M.bufferedIndex<M.buffered.length||M[ae].length)&&r.nextTick(we,M),se.call(this,v,U),this},ne.prototype._undestroy=b.undestroy,ne.prototype._destroy=function(v,U){U(v)},ne.prototype[p.captureRejectionSymbol]=function(v){this.destroy(v)};var T;function x(){return T===void 0&&(T={}),T}ne.fromWeb=function(v,U){return x().newStreamWritableFromWritableStream(v,U)},ne.toWeb=function(v){return x().newWritableStreamFromStreamWritable(v)}}),g0=ve((e,t)=>{pe(),me(),ge();var r=gn(),n=(lt(),De(at)),{isReadable:s,isWritable:i,isIterable:o,isNodeStream:l,isReadableNodeStream:a,isWritableNodeStream:u,isDuplexNodeStream:c}=br(),f=Wr(),{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:m,ERR_INVALID_RETURN_VALUE:y}}=St(),{destroyer:b}=jn(),O=pr(),L=Do(),{createDeferredPromise:C}=dr(),_=Id(),B=globalThis.Blob||n.Blob,F=typeof B<"u"?function(Z){return Z instanceof B}:function(Z){return!1},k=globalThis.AbortController||Vl().AbortController,{FunctionPrototypeCall:P}=et(),j=class extends O{constructor(Z){super(Z),(Z==null?void 0:Z.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(Z==null?void 0:Z.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}};t.exports=function Z(S,z){if(c(S))return S;if(a(S))return X({readable:S});if(u(S))return X({writable:S});if(l(S))return X({writable:!1,readable:!1});if(typeof S=="function"){let{value:ee,write:le,final:ne,destroy:G}=D(S);if(o(ee))return _(j,ee,{objectMode:!0,write:le,final:ne,destroy:G});let de=ee==null?void 0:ee.then;if(typeof de=="function"){let ce,be=P(de,ee,A=>{if(A!=null)throw new y("nully","body",A)},A=>{b(ce,A)});return ce=new j({objectMode:!0,readable:!1,write:le,final(A){ne(async()=>{try{await be,r.nextTick(A,null)}catch(ie){r.nextTick(A,ie)}})},destroy:G})}throw new y("Iterable, AsyncIterable or AsyncFunction",z,ee)}if(F(S))return Z(S.arrayBuffer());if(o(S))return _(j,S,{objectMode:!0,writable:!1});if(typeof(S==null?void 0:S.writable)=="object"||typeof(S==null?void 0:S.readable)=="object"){let ee=S!=null&&S.readable?a(S==null?void 0:S.readable)?S==null?void 0:S.readable:Z(S.readable):void 0,le=S!=null&&S.writable?u(S==null?void 0:S.writable)?S==null?void 0:S.writable:Z(S.writable):void 0;return X({readable:ee,writable:le})}let ae=S==null?void 0:S.then;if(typeof ae=="function"){let ee;return P(ae,S,le=>{le!=null&&ee.push(le),ee.push(null)},le=>{b(ee,le)}),ee=new j({objectMode:!0,writable:!1,read(){}})}throw new m(z,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],S)};function D(Z){let{promise:S,resolve:z}=C(),ae=new k,ee=ae.signal;return{value:Z(async function*(){for(;;){let le=S;S=null;let{chunk:ne,done:G,cb:de}=await le;if(r.nextTick(de),G)return;if(ee.aborted)throw new p(void 0,{cause:ee.reason});({promise:S,resolve:z}=C()),yield ne}}(),{signal:ee}),write(le,ne,G){let de=z;z=null,de({chunk:le,done:!1,cb:G})},final(le){let ne=z;z=null,ne({done:!0,cb:le})},destroy(le,ne){ae.abort(),ne(le)}}}function X(Z){let S=Z.readable&&typeof Z.readable.read!="function"?L.wrap(Z.readable):Z.readable,z=Z.writable,ae=!!s(S),ee=!!i(z),le,ne,G,de,ce;function be(A){let ie=de;de=null,ie?ie(A):A&&ce.destroy(A)}return ce=new j({readableObjectMode:!!(S!=null&&S.readableObjectMode),writableObjectMode:!!(z!=null&&z.writableObjectMode),readable:ae,writable:ee}),ee&&(f(z,A=>{ee=!1,A&&b(S,A),be(A)}),ce._write=function(A,ie,he){z.write(A,ie)?he():le=he},ce._final=function(A){z.end(),ne=A},z.on("drain",function(){if(le){let A=le;le=null,A()}}),z.on("finish",function(){if(ne){let A=ne;ne=null,A()}})),ae&&(f(S,A=>{ae=!1,A&&b(S,A),be(A)}),S.on("readable",function(){if(G){let A=G;G=null,A()}}),S.on("end",function(){ce.push(null)}),ce._read=function(){for(;;){let A=S.read();if(A===null){G=ce._read;return}if(!ce.push(A))return}}),ce._destroy=function(A,ie){!A&&de!==null&&(A=new p),G=null,le=null,ne=null,de===null?ie(A):(de=ie,b(z,A),b(S,A))},ce}}),pr=ve((e,t)=>{pe(),me(),ge();var{ObjectDefineProperties:r,ObjectGetOwnPropertyDescriptor:n,ObjectKeys:s,ObjectSetPrototypeOf:i}=et();t.exports=a;var o=Do(),l=Od();i(a.prototype,o.prototype),i(a,o);{let p=s(l.prototype);for(let m=0;m<p.length;m++){let y=p[m];a.prototype[y]||(a.prototype[y]=l.prototype[y])}}function a(p){if(!(this instanceof a))return new a(p);o.call(this,p),l.call(this,p),p?(this.allowHalfOpen=p.allowHalfOpen!==!1,p.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),p.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}r(a.prototype,{writable:{__proto__:null,...n(l.prototype,"writable")},writableHighWaterMark:{__proto__:null,...n(l.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...n(l.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...n(l.prototype,"writableBuffer")},writableLength:{__proto__:null,...n(l.prototype,"writableLength")},writableFinished:{__proto__:null,...n(l.prototype,"writableFinished")},writableCorked:{__proto__:null,...n(l.prototype,"writableCorked")},writableEnded:{__proto__:null,...n(l.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...n(l.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(p){this._readableState&&this._writableState&&(this._readableState.destroyed=p,this._writableState.destroyed=p)}}});var u;function c(){return u===void 0&&(u={}),u}a.fromWeb=function(p,m){return c().newStreamDuplexFromReadableWritablePair(p,m)},a.toWeb=function(p){return c().newReadableWritablePairFromDuplex(p)};var f;a.from=function(p){return f||(f=g0()),f(p,"body")}}),Cd=ve((e,t)=>{pe(),me(),ge();var{ObjectSetPrototypeOf:r,Symbol:n}=et();t.exports=a;var{ERR_METHOD_NOT_IMPLEMENTED:s}=St().codes,i=pr(),{getHighWaterMark:o}=Kl();r(a.prototype,i.prototype),r(a,i);var l=n("kCallback");function a(f){if(!(this instanceof a))return new a(f);let p=f?o(this,f,"readableHighWaterMark",!0):null;p===0&&(f={...f,highWaterMark:null,readableHighWaterMark:p,writableHighWaterMark:f.writableHighWaterMark||0}),i.call(this,f),this._readableState.sync=!1,this[l]=null,f&&(typeof f.transform=="function"&&(this._transform=f.transform),typeof f.flush=="function"&&(this._flush=f.flush)),this.on("prefinish",c)}function u(f){typeof this._flush=="function"&&!this.destroyed?this._flush((p,m)=>{if(p){f?f(p):this.destroy(p);return}m!=null&&this.push(m),this.push(null),f&&f()}):(this.push(null),f&&f())}function c(){this._final!==u&&u.call(this)}a.prototype._final=u,a.prototype._transform=function(f,p,m){throw new s("_transform()")},a.prototype._write=function(f,p,m){let y=this._readableState,b=this._writableState,O=y.length;this._transform(f,p,(L,C)=>{if(L){m(L);return}C!=null&&this.push(C),b.ended||O===y.length||y.length<y.highWaterMark?m():this[l]=m})},a.prototype._read=function(){if(this[l]){let f=this[l];this[l]=null,f()}}}),Rd=ve((e,t)=>{pe(),me(),ge();var{ObjectSetPrototypeOf:r}=et();t.exports=s;var n=Cd();r(s.prototype,n.prototype),r(s,n);function s(i){if(!(this instanceof s))return new s(i);n.call(this,i)}s.prototype._transform=function(i,o,l){l(null,i)}}),Gl=ve((e,t)=>{pe(),me(),ge();var r=gn(),{ArrayIsArray:n,Promise:s,SymbolAsyncIterator:i}=et(),o=Wr(),{once:l}=dr(),a=jn(),u=pr(),{aggregateTwoErrors:c,codes:{ERR_INVALID_ARG_TYPE:f,ERR_INVALID_RETURN_VALUE:p,ERR_MISSING_ARGS:m,ERR_STREAM_DESTROYED:y,ERR_STREAM_PREMATURE_CLOSE:b},AbortError:O}=St(),{validateFunction:L,validateAbortSignal:C}=No(),{isIterable:_,isReadable:B,isReadableNodeStream:F,isNodeStream:k,isTransformStream:P,isWebStream:j,isReadableStream:D,isReadableEnded:X}=br(),Z=globalThis.AbortController||Vl().AbortController,S,z;function ae(ie,he,we){let fe=!1;ie.on("close",()=>{fe=!0});let E=o(ie,{readable:he,writable:we},I=>{fe=!I});return{destroy:I=>{fe||(fe=!0,a.destroyer(ie,I||new y("pipe")))},cleanup:E}}function ee(ie){return L(ie[ie.length-1],"streams[stream.length - 1]"),ie.pop()}function le(ie){if(_(ie))return ie;if(F(ie))return ne(ie);throw new f("val",["Readable","Iterable","AsyncIterable"],ie)}async function*ne(ie){z||(z=Do()),yield*z.prototype[i].call(ie)}async function G(ie,he,we,{end:fe}){let E,I=null,K=se=>{if(se&&(E=se),I){let T=I;I=null,T()}},re=()=>new s((se,T)=>{E?T(E):I=()=>{E?T(E):se()}});he.on("drain",K);let oe=o(he,{readable:!1},K);try{he.writableNeedDrain&&await re();for await(let se of ie)he.write(se)||await re();fe&&he.end(),await re(),we()}catch(se){we(E!==se?c(E,se):se)}finally{oe(),he.off("drain",K)}}async function de(ie,he,we,{end:fe}){P(he)&&(he=he.writable);let E=he.getWriter();try{for await(let I of ie)await E.ready,E.write(I).catch(()=>{});await E.ready,fe&&await E.close(),we()}catch(I){try{await E.abort(I),we(I)}catch(K){we(K)}}}function ce(...ie){return be(ie,l(ee(ie)))}function be(ie,he,we){if(ie.length===1&&n(ie[0])&&(ie=ie[0]),ie.length<2)throw new m("streams");let fe=new Z,E=fe.signal,I=we==null?void 0:we.signal,K=[];C(I,"options.signal");function re(){U(new O)}I==null||I.addEventListener("abort",re);let oe,se,T=[],x=0;function v(N){U(N,--x===0)}function U(N,$){if(N&&(!oe||oe.code==="ERR_STREAM_PREMATURE_CLOSE")&&(oe=N),!(!oe&&!$)){for(;T.length;)T.shift()(oe);I==null||I.removeEventListener("abort",re),fe.abort(),$&&(oe||K.forEach(R=>R()),r.nextTick(he,oe,se))}}let M;for(let N=0;N<ie.length;N++){let $=ie[N],R=N<ie.length-1,H=N>0,V=R||(we==null?void 0:we.end)!==!1,te=N===ie.length-1;if(k($)){let d=function(h){h&&h.name!=="AbortError"&&h.code!=="ERR_STREAM_PREMATURE_CLOSE"&&v(h)};if(V){let{destroy:h,cleanup:g}=ae($,R,H);T.push(h),B($)&&te&&K.push(g)}$.on("error",d),B($)&&te&&K.push(()=>{$.removeListener("error",d)})}if(N===0)if(typeof $=="function"){if(M=$({signal:E}),!_(M))throw new p("Iterable, AsyncIterable or Stream","source",M)}else _($)||F($)||P($)?M=$:M=u.from($);else if(typeof $=="function"){if(P(M)){var Y;M=le((Y=M)===null||Y===void 0?void 0:Y.readable)}else M=le(M);if(M=$(M,{signal:E}),R){if(!_(M,!0))throw new p("AsyncIterable",`transform[${N-1}]`,M)}else{var J;S||(S=Rd());let d=new S({objectMode:!0}),h=(J=M)===null||J===void 0?void 0:J.then;if(typeof h=="function")x++,h.call(M,W=>{se=W,W!=null&&d.write(W),V&&d.end(),r.nextTick(v)},W=>{d.destroy(W),r.nextTick(v,W)});else if(_(M,!0))x++,G(M,d,v,{end:V});else if(D(M)||P(M)){let W=M.readable||M;x++,G(W,d,v,{end:V})}else throw new p("AsyncIterable or Promise","destination",M);M=d;let{destroy:g,cleanup:w}=ae(M,!1,!0);T.push(g),te&&K.push(w)}}else if(k($)){if(F(M)){x+=2;let d=A(M,$,v,{end:V});B($)&&te&&K.push(d)}else if(P(M)||D(M)){let d=M.readable||M;x++,G(d,$,v,{end:V})}else if(_(M))x++,G(M,$,v,{end:V});else throw new f("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],M);M=$}else if(j($)){if(F(M))x++,de(le(M),$,v,{end:V});else if(D(M)||_(M))x++,de(M,$,v,{end:V});else if(P(M))x++,de(M.readable,$,v,{end:V});else throw new f("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],M);M=$}else M=u.from($)}return(E!=null&&E.aborted||I!=null&&I.aborted)&&r.nextTick(re),M}function A(ie,he,we,{end:fe}){let E=!1;if(he.on("close",()=>{E||we(new b)}),ie.pipe(he,{end:!1}),fe){let I=function(){E=!0,he.end()};X(ie)?r.nextTick(I):ie.once("end",I)}else we();return o(ie,{readable:!0,writable:!1},I=>{let K=ie._readableState;I&&I.code==="ERR_STREAM_PREMATURE_CLOSE"&&K&&K.ended&&!K.errored&&!K.errorEmitted?ie.once("end",we).once("error",we):we(I)}),o(he,{readable:!1,writable:!0},we)}t.exports={pipelineImpl:be,pipeline:ce}}),xd=ve((e,t)=>{pe(),me(),ge();var{pipeline:r}=Gl(),n=pr(),{destroyer:s}=jn(),{isNodeStream:i,isReadable:o,isWritable:l,isWebStream:a,isTransformStream:u,isWritableStream:c,isReadableStream:f}=br(),{AbortError:p,codes:{ERR_INVALID_ARG_VALUE:m,ERR_MISSING_ARGS:y}}=St(),b=Wr();t.exports=function(...O){if(O.length===0)throw new y("streams");if(O.length===1)return n.from(O[0]);let L=[...O];if(typeof O[0]=="function"&&(O[0]=n.from(O[0])),typeof O[O.length-1]=="function"){let S=O.length-1;O[S]=n.from(O[S])}for(let S=0;S<O.length;++S)if(!(!i(O[S])&&!a(O[S]))){if(S<O.length-1&&!(o(O[S])||f(O[S])||u(O[S])))throw new m(`streams[${S}]`,L[S],"must be readable");if(S>0&&!(l(O[S])||c(O[S])||u(O[S])))throw new m(`streams[${S}]`,L[S],"must be writable")}let C,_,B,F,k;function P(S){let z=F;F=null,z?z(S):S?k.destroy(S):!Z&&!X&&k.destroy()}let j=O[0],D=r(O,P),X=!!(l(j)||c(j)||u(j)),Z=!!(o(D)||f(D)||u(D));if(k=new n({writableObjectMode:!!(j!=null&&j.writableObjectMode),readableObjectMode:!!(D!=null&&D.writableObjectMode),writable:X,readable:Z}),X){if(i(j))k._write=function(z,ae,ee){j.write(z,ae)?ee():C=ee},k._final=function(z){j.end(),_=z},j.on("drain",function(){if(C){let z=C;C=null,z()}});else if(a(j)){let z=(u(j)?j.writable:j).getWriter();k._write=async function(ae,ee,le){try{await z.ready,z.write(ae).catch(()=>{}),le()}catch(ne){le(ne)}},k._final=async function(ae){try{await z.ready,z.close().catch(()=>{}),_=ae}catch(ee){ae(ee)}}}let S=u(D)?D.readable:D;b(S,()=>{if(_){let z=_;_=null,z()}})}if(Z){if(i(D))D.on("readable",function(){if(B){let S=B;B=null,S()}}),D.on("end",function(){k.push(null)}),k._read=function(){for(;;){let S=D.read();if(S===null){B=k._read;return}if(!k.push(S))return}};else if(a(D)){let S=(u(D)?D.readable:D).getReader();k._read=async function(){for(;;)try{let{value:z,done:ae}=await S.read();if(!k.push(z))return;if(ae){k.push(null);return}}catch{return}}}}return k._destroy=function(S,z){!S&&F!==null&&(S=new p),B=null,C=null,_=null,F===null?z(S):(F=z,i(D)&&s(D,S))},k}}),m0=ve((e,t)=>{pe(),me(),ge();var r=globalThis.AbortController||Vl().AbortController,{codes:{ERR_INVALID_ARG_VALUE:n,ERR_INVALID_ARG_TYPE:s,ERR_MISSING_ARGS:i,ERR_OUT_OF_RANGE:o},AbortError:l}=St(),{validateAbortSignal:a,validateInteger:u,validateObject:c}=No(),f=et().Symbol("kWeak"),{finished:p}=Wr(),m=xd(),{addAbortSignalNoValidate:y}=jo(),{isWritable:b,isNodeStream:O}=br(),{ArrayPrototypePush:L,MathFloor:C,Number:_,NumberIsNaN:B,Promise:F,PromiseReject:k,PromisePrototypeThen:P,Symbol:j}=et(),D=j("kEmpty"),X=j("kEof");function Z(fe,E){if(E!=null&&c(E,"options"),(E==null?void 0:E.signal)!=null&&a(E.signal,"options.signal"),O(fe)&&!b(fe))throw new n("stream",fe,"must be writable");let I=m(this,fe);return E!=null&&E.signal&&y(E.signal,I),I}function S(fe,E){if(typeof fe!="function")throw new s("fn",["Function","AsyncFunction"],fe);E!=null&&c(E,"options"),(E==null?void 0:E.signal)!=null&&a(E.signal,"options.signal");let I=1;return(E==null?void 0:E.concurrency)!=null&&(I=C(E.concurrency)),u(I,"concurrency",1),(async function*(){var K,re;let oe=new r,se=this,T=[],x=oe.signal,v={signal:x},U=()=>oe.abort();E!=null&&(K=E.signal)!==null&&K!==void 0&&K.aborted&&U(),E==null||(re=E.signal)===null||re===void 0||re.addEventListener("abort",U);let M,Y,J=!1;function N(){J=!0}async function $(){try{for await(let V of se){var R;if(J)return;if(x.aborted)throw new l;try{V=fe(V,v)}catch(te){V=k(te)}V!==D&&(typeof((R=V)===null||R===void 0?void 0:R.catch)=="function"&&V.catch(N),T.push(V),M&&(M(),M=null),!J&&T.length&&T.length>=I&&await new F(te=>{Y=te}))}T.push(X)}catch(V){let te=k(V);P(te,void 0,N),T.push(te)}finally{var H;J=!0,M&&(M(),M=null),E==null||(H=E.signal)===null||H===void 0||H.removeEventListener("abort",U)}}$();try{for(;;){for(;T.length>0;){let R=await T[0];if(R===X)return;if(x.aborted)throw new l;R!==D&&(yield R),T.shift(),Y&&(Y(),Y=null)}await new F(R=>{M=R})}}finally{oe.abort(),J=!0,Y&&(Y(),Y=null)}}).call(this)}function z(fe=void 0){return fe!=null&&c(fe,"options"),(fe==null?void 0:fe.signal)!=null&&a(fe.signal,"options.signal"),(async function*(){let E=0;for await(let K of this){var I;if(fe!=null&&(I=fe.signal)!==null&&I!==void 0&&I.aborted)throw new l({cause:fe.signal.reason});yield[E++,K]}}).call(this)}async function ae(fe,E=void 0){for await(let I of G.call(this,fe,E))return!0;return!1}async function ee(fe,E=void 0){if(typeof fe!="function")throw new s("fn",["Function","AsyncFunction"],fe);return!await ae.call(this,async(...I)=>!await fe(...I),E)}async function le(fe,E){for await(let I of G.call(this,fe,E))return I}async function ne(fe,E){if(typeof fe!="function")throw new s("fn",["Function","AsyncFunction"],fe);async function I(K,re){return await fe(K,re),D}for await(let K of S.call(this,I,E));}function G(fe,E){if(typeof fe!="function")throw new s("fn",["Function","AsyncFunction"],fe);async function I(K,re){return await fe(K,re)?K:D}return S.call(this,I,E)}var de=class extends i{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}};async function ce(fe,E,I){var K;if(typeof fe!="function")throw new s("reducer",["Function","AsyncFunction"],fe);I!=null&&c(I,"options"),(I==null?void 0:I.signal)!=null&&a(I.signal,"options.signal");let re=arguments.length>1;if(I!=null&&(K=I.signal)!==null&&K!==void 0&&K.aborted){let v=new l(void 0,{cause:I.signal.reason});throw this.once("error",()=>{}),await p(this.destroy(v)),v}let oe=new r,se=oe.signal;if(I!=null&&I.signal){let v={once:!0,[f]:this};I.signal.addEventListener("abort",()=>oe.abort(),v)}let T=!1;try{for await(let v of this){var x;if(T=!0,I!=null&&(x=I.signal)!==null&&x!==void 0&&x.aborted)throw new l;re?E=await fe(E,v,{signal:se}):(E=v,re=!0)}if(!T&&!re)throw new de}finally{oe.abort()}return E}async function be(fe){fe!=null&&c(fe,"options"),(fe==null?void 0:fe.signal)!=null&&a(fe.signal,"options.signal");let E=[];for await(let K of this){var I;if(fe!=null&&(I=fe.signal)!==null&&I!==void 0&&I.aborted)throw new l(void 0,{cause:fe.signal.reason});L(E,K)}return E}function A(fe,E){let I=S.call(this,fe,E);return(async function*(){for await(let K of I)yield*K}).call(this)}function ie(fe){if(fe=_(fe),B(fe))return 0;if(fe<0)throw new o("number",">= 0",fe);return fe}function he(fe,E=void 0){return E!=null&&c(E,"options"),(E==null?void 0:E.signal)!=null&&a(E.signal,"options.signal"),fe=ie(fe),(async function*(){var I;if(E!=null&&(I=E.signal)!==null&&I!==void 0&&I.aborted)throw new l;for await(let re of this){var K;if(E!=null&&(K=E.signal)!==null&&K!==void 0&&K.aborted)throw new l;fe--<=0&&(yield re)}}).call(this)}function we(fe,E=void 0){return E!=null&&c(E,"options"),(E==null?void 0:E.signal)!=null&&a(E.signal,"options.signal"),fe=ie(fe),(async function*(){var I;if(E!=null&&(I=E.signal)!==null&&I!==void 0&&I.aborted)throw new l;for await(let re of this){var K;if(E!=null&&(K=E.signal)!==null&&K!==void 0&&K.aborted)throw new l;if(fe-- >0)yield re;else return}}).call(this)}t.exports.streamReturningOperators={asIndexedPairs:z,drop:he,filter:G,flatMap:A,map:S,take:we,compose:Z},t.exports.promiseReturningOperators={every:ee,forEach:ne,reduce:ce,toArray:be,some:ae,find:le}}),Pd=ve((e,t)=>{pe(),me(),ge();var{ArrayPrototypePop:r,Promise:n}=et(),{isIterable:s,isNodeStream:i,isWebStream:o}=br(),{pipelineImpl:l}=Gl(),{finished:a}=Wr();kd();function u(...c){return new n((f,p)=>{let m,y,b=c[c.length-1];if(b&&typeof b=="object"&&!i(b)&&!s(b)&&!o(b)){let O=r(c);m=O.signal,y=O.end}l(c,(O,L)=>{O?p(O):f(L)},{signal:m,end:y})})}t.exports={finished:a,pipeline:u}}),kd=ve((e,t)=>{pe(),me(),ge();var{Buffer:r}=(lt(),De(at)),{ObjectDefineProperty:n,ObjectKeys:s,ReflectApply:i}=et(),{promisify:{custom:o}}=dr(),{streamReturningOperators:l,promiseReturningOperators:a}=m0(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:u}}=St(),c=xd(),{pipeline:f}=Gl(),{destroyer:p}=jn(),m=Wr(),y=Pd(),b=br(),O=t.exports=ql().Stream;O.isDisturbed=b.isDisturbed,O.isErrored=b.isErrored,O.isReadable=b.isReadable,O.Readable=Do();for(let C of s(l)){let _=function(...F){if(new.target)throw u();return O.Readable.from(i(B,this,F))},B=l[C];n(_,"name",{__proto__:null,value:B.name}),n(_,"length",{__proto__:null,value:B.length}),n(O.Readable.prototype,C,{__proto__:null,value:_,enumerable:!1,configurable:!0,writable:!0})}for(let C of s(a)){let _=function(...F){if(new.target)throw u();return i(B,this,F)},B=a[C];n(_,"name",{__proto__:null,value:B.name}),n(_,"length",{__proto__:null,value:B.length}),n(O.Readable.prototype,C,{__proto__:null,value:_,enumerable:!1,configurable:!0,writable:!0})}O.Writable=Od(),O.Duplex=pr(),O.Transform=Cd(),O.PassThrough=Rd(),O.pipeline=f;var{addAbortSignal:L}=jo();O.addAbortSignal=L,O.finished=m,O.destroy=p,O.compose=c,n(O,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return y}}),n(f,o,{__proto__:null,enumerable:!0,get(){return y.pipeline}}),n(m,o,{__proto__:null,enumerable:!0,get(){return y.finished}}),O.Stream=O,O._isUint8Array=function(C){return C instanceof Uint8Array},O._uint8ArrayToBuffer=function(C){return r.from(C.buffer,C.byteOffset,C.byteLength)}}),yn=ve((e,t)=>{pe(),me(),ge();var r=kd(),n=Pd(),s=r.Readable.destroy;t.exports=r.Readable,t.exports._uint8ArrayToBuffer=r._uint8ArrayToBuffer,t.exports._isUint8Array=r._isUint8Array,t.exports.isDisturbed=r.isDisturbed,t.exports.isErrored=r.isErrored,t.exports.isReadable=r.isReadable,t.exports.Readable=r.Readable,t.exports.Writable=r.Writable,t.exports.Duplex=r.Duplex,t.exports.Transform=r.Transform,t.exports.PassThrough=r.PassThrough,t.exports.addAbortSignal=r.addAbortSignal,t.exports.finished=r.finished,t.exports.destroy=r.destroy,t.exports.destroy=s,t.exports.pipeline=r.pipeline,t.exports.compose=r.compose,Object.defineProperty(r,"promises",{configurable:!0,enumerable:!0,get(){return n}}),t.exports.Stream=r.Stream,t.exports.default=t.exports}),y0=ve((e,t)=>{pe(),me(),ge(),typeof Object.create=="function"?t.exports=function(r,n){n&&(r.super_=n,r.prototype=Object.create(n.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(r,n){if(n){r.super_=n;var s=function(){};s.prototype=n.prototype,r.prototype=new s,r.prototype.constructor=r}}}),b0=ve((e,t)=>{pe(),me(),ge();var{Buffer:r}=(lt(),De(at)),n=Symbol.for("BufferList");function s(i){if(!(this instanceof s))return new s(i);s._init.call(this,i)}s._init=function(i){Object.defineProperty(this,n,{value:!0}),this._bufs=[],this.length=0,i&&this.append(i)},s.prototype._new=function(i){return new s(i)},s.prototype._offset=function(i){if(i===0)return[0,0];let o=0;for(let l=0;l<this._bufs.length;l++){let a=o+this._bufs[l].length;if(i<a||l===this._bufs.length-1)return[l,i-o];o=a}},s.prototype._reverseOffset=function(i){let o=i[0],l=i[1];for(let a=0;a<o;a++)l+=this._bufs[a].length;return l},s.prototype.get=function(i){if(i>this.length||i<0)return;let o=this._offset(i);return this._bufs[o[0]][o[1]]},s.prototype.slice=function(i,o){return typeof i=="number"&&i<0&&(i+=this.length),typeof o=="number"&&o<0&&(o+=this.length),this.copy(null,0,i,o)},s.prototype.copy=function(i,o,l,a){if((typeof l!="number"||l<0)&&(l=0),(typeof a!="number"||a>this.length)&&(a=this.length),l>=this.length||a<=0)return i||r.alloc(0);let u=!!i,c=this._offset(l),f=a-l,p=f,m=u&&o||0,y=c[1];if(l===0&&a===this.length){if(!u)return this._bufs.length===1?this._bufs[0]:r.concat(this._bufs,this.length);for(let b=0;b<this._bufs.length;b++)this._bufs[b].copy(i,m),m+=this._bufs[b].length;return i}if(p<=this._bufs[c[0]].length-y)return u?this._bufs[c[0]].copy(i,o,y,y+p):this._bufs[c[0]].slice(y,y+p);u||(i=r.allocUnsafe(f));for(let b=c[0];b<this._bufs.length;b++){let O=this._bufs[b].length-y;if(p>O)this._bufs[b].copy(i,m,y),m+=O;else{this._bufs[b].copy(i,m,y,y+p),m+=O;break}p-=O,y&&(y=0)}return i.length>m?i.slice(0,m):i},s.prototype.shallowSlice=function(i,o){if(i=i||0,o=typeof o!="number"?this.length:o,i<0&&(i+=this.length),o<0&&(o+=this.length),i===o)return this._new();let l=this._offset(i),a=this._offset(o),u=this._bufs.slice(l[0],a[0]+1);return a[1]===0?u.pop():u[u.length-1]=u[u.length-1].slice(0,a[1]),l[1]!==0&&(u[0]=u[0].slice(l[1])),this._new(u)},s.prototype.toString=function(i,o,l){return this.slice(o,l).toString(i)},s.prototype.consume=function(i){if(i=Math.trunc(i),Number.isNaN(i)||i<=0)return this;for(;this._bufs.length;)if(i>=this._bufs[0].length)i-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(i),this.length-=i;break}return this},s.prototype.duplicate=function(){let i=this._new();for(let o=0;o<this._bufs.length;o++)i.append(this._bufs[o]);return i},s.prototype.append=function(i){if(i==null)return this;if(i.buffer)this._appendBuffer(r.from(i.buffer,i.byteOffset,i.byteLength));else if(Array.isArray(i))for(let o=0;o<i.length;o++)this.append(i[o]);else if(this._isBufferList(i))for(let o=0;o<i._bufs.length;o++)this.append(i._bufs[o]);else typeof i=="number"&&(i=i.toString()),this._appendBuffer(r.from(i));return this},s.prototype._appendBuffer=function(i){this._bufs.push(i),this.length+=i.length},s.prototype.indexOf=function(i,o,l){if(l===void 0&&typeof o=="string"&&(l=o,o=void 0),typeof i=="function"||Array.isArray(i))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof i=="number"?i=r.from([i]):typeof i=="string"?i=r.from(i,l):this._isBufferList(i)?i=i.slice():Array.isArray(i.buffer)?i=r.from(i.buffer,i.byteOffset,i.byteLength):r.isBuffer(i)||(i=r.from(i)),o=Number(o||0),isNaN(o)&&(o=0),o<0&&(o=this.length+o),o<0&&(o=0),i.length===0)return o>this.length?this.length:o;let a=this._offset(o),u=a[0],c=a[1];for(;u<this._bufs.length;u++){let f=this._bufs[u];for(;c<f.length;)if(f.length-c>=i.length){let p=f.indexOf(i,c);if(p!==-1)return this._reverseOffset([u,p]);c=f.length-i.length+1}else{let p=this._reverseOffset([u,c]);if(this._match(p,i))return p;c++}c=0}return-1},s.prototype._match=function(i,o){if(this.length-i<o.length)return!1;for(let l=0;l<o.length;l++)if(this.get(i+l)!==o[l])return!1;return!0},function(){let i={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let o in i)(function(l){i[l]===null?s.prototype[l]=function(a,u){return this.slice(a,a+u)[l](0,u)}:s.prototype[l]=function(a=0){return this.slice(a,a+i[l])[l](0)}})(o)}(),s.prototype._isBufferList=function(i){return i instanceof s||s.isBufferList(i)},s.isBufferList=function(i){return i!=null&&i[n]},t.exports=s}),v0=ve((e,t)=>{pe(),me(),ge();var r=yn().Duplex,n=y0(),s=b0();function i(o){if(!(this instanceof i))return new i(o);if(typeof o=="function"){this._callback=o;let l=(function(a){this._callback&&(this._callback(a),this._callback=null)}).bind(this);this.on("pipe",function(a){a.on("error",l)}),this.on("unpipe",function(a){a.removeListener("error",l)}),o=null}s._init.call(this,o),r.call(this)}n(i,r),Object.assign(i.prototype,s.prototype),i.prototype._new=function(o){return new i(o)},i.prototype._write=function(o,l,a){this._appendBuffer(o),typeof a=="function"&&a()},i.prototype._read=function(o){if(!this.length)return this.push(null);o=Math.min(o,this.length),this.push(this.slice(0,o)),this.consume(o)},i.prototype.end=function(o){r.prototype.end.call(this,o),this._callback&&(this._callback(null,this.slice()),this._callback=null)},i.prototype._destroy=function(o,l){this._bufs.length=0,this.length=0,l(o)},i.prototype._isBufferList=function(o){return o instanceof i||o instanceof s||i.isBufferList(o)},i.isBufferList=s.isBufferList,t.exports=i,t.exports.BufferListStream=i,t.exports.BufferList=s}),w0=ve((e,t)=>{pe(),me(),ge();var r=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};t.exports=r}),Bd=ve((e,t)=>{pe(),me(),ge();var r=t.exports,{Buffer:n}=(lt(),De(at));r.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},r.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},r.requiredHeaderFlagsErrors={};for(let i in r.requiredHeaderFlags){let o=r.requiredHeaderFlags[i];r.requiredHeaderFlagsErrors[i]="Invalid header flag bits, must be 0x"+o.toString(16)+" for "+r.types[i]+" packet"}r.codes={};for(let i in r.types){let o=r.types[i];r.codes[o]=i}r.CMD_SHIFT=4,r.CMD_MASK=240,r.DUP_MASK=8,r.QOS_MASK=3,r.QOS_SHIFT=1,r.RETAIN_MASK=1,r.VARBYTEINT_MASK=127,r.VARBYTEINT_FIN_MASK=128,r.VARBYTEINT_MAX=268435455,r.SESSIONPRESENT_MASK=1,r.SESSIONPRESENT_HEADER=n.from([r.SESSIONPRESENT_MASK]),r.CONNACK_HEADER=n.from([r.codes.connack<<r.CMD_SHIFT]),r.USERNAME_MASK=128,r.PASSWORD_MASK=64,r.WILL_RETAIN_MASK=32,r.WILL_QOS_MASK=24,r.WILL_QOS_SHIFT=3,r.WILL_FLAG_MASK=4,r.CLEAN_SESSION_MASK=2,r.CONNECT_HEADER=n.from([r.codes.connect<<r.CMD_SHIFT]),r.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},r.propertiesCodes={};for(let i in r.properties){let o=r.properties[i];r.propertiesCodes[o]=i}r.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function s(i){return[0,1,2].map(o=>[0,1].map(l=>[0,1].map(a=>{let u=n.alloc(1);return u.writeUInt8(r.codes[i]<<r.CMD_SHIFT|(l?r.DUP_MASK:0)|o<<r.QOS_SHIFT|a,0,!0),u})))}r.PUBLISH_HEADER=s("publish"),r.SUBSCRIBE_HEADER=s("subscribe"),r.SUBSCRIBE_OPTIONS_QOS_MASK=3,r.SUBSCRIBE_OPTIONS_NL_MASK=1,r.SUBSCRIBE_OPTIONS_NL_SHIFT=2,r.SUBSCRIBE_OPTIONS_RAP_MASK=1,r.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,r.SUBSCRIBE_OPTIONS_RH_MASK=3,r.SUBSCRIBE_OPTIONS_RH_SHIFT=4,r.SUBSCRIBE_OPTIONS_RH=[0,16,32],r.SUBSCRIBE_OPTIONS_NL=4,r.SUBSCRIBE_OPTIONS_RAP=8,r.SUBSCRIBE_OPTIONS_QOS=[0,1,2],r.UNSUBSCRIBE_HEADER=s("unsubscribe"),r.ACKS={unsuback:s("unsuback"),puback:s("puback"),pubcomp:s("pubcomp"),pubrel:s("pubrel"),pubrec:s("pubrec")},r.SUBACK_HEADER=n.from([r.codes.suback<<r.CMD_SHIFT]),r.VERSION3=n.from([3]),r.VERSION4=n.from([4]),r.VERSION5=n.from([5]),r.VERSION131=n.from([131]),r.VERSION132=n.from([132]),r.QOS=[0,1,2].map(i=>n.from([i])),r.EMPTY={pingreq:n.from([r.codes.pingreq<<4,0]),pingresp:n.from([r.codes.pingresp<<4,0]),disconnect:n.from([r.codes.disconnect<<4,0])},r.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},r.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},r.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},r.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}}),_0=ve((e,t)=>{pe(),me(),ge();var r=1e3,n=r*60,s=n*60,i=s*24,o=i*7,l=i*365.25;t.exports=function(p,m){m=m||{};var y=typeof p;if(y==="string"&&p.length>0)return a(p);if(y==="number"&&isFinite(p))return m.long?c(p):u(p);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(p))};function a(p){if(p=String(p),!(p.length>100)){var m=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(p);if(m){var y=parseFloat(m[1]),b=(m[2]||"ms").toLowerCase();switch(b){case"years":case"year":case"yrs":case"yr":case"y":return y*l;case"weeks":case"week":case"w":return y*o;case"days":case"day":case"d":return y*i;case"hours":case"hour":case"hrs":case"hr":case"h":return y*s;case"minutes":case"minute":case"mins":case"min":case"m":return y*n;case"seconds":case"second":case"secs":case"sec":case"s":return y*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return y;default:return}}}}function u(p){var m=Math.abs(p);return m>=i?Math.round(p/i)+"d":m>=s?Math.round(p/s)+"h":m>=n?Math.round(p/n)+"m":m>=r?Math.round(p/r)+"s":p+"ms"}function c(p){var m=Math.abs(p);return m>=i?f(p,m,i,"day"):m>=s?f(p,m,s,"hour"):m>=n?f(p,m,n,"minute"):m>=r?f(p,m,r,"second"):p+" ms"}function f(p,m,y,b){var O=m>=y*1.5;return Math.round(p/y)+" "+b+(O?"s":"")}}),E0=ve((e,t)=>{pe(),me(),ge();function r(n){i.debug=i,i.default=i,i.coerce=f,i.disable=a,i.enable=l,i.enabled=u,i.humanize=_0(),i.destroy=p,Object.keys(n).forEach(m=>{i[m]=n[m]}),i.names=[],i.skips=[],i.formatters={};function s(m){let y=0;for(let b=0;b<m.length;b++)y=(y<<5)-y+m.charCodeAt(b),y|=0;return i.colors[Math.abs(y)%i.colors.length]}i.selectColor=s;function i(m){let y,b=null,O,L;function C(..._){if(!C.enabled)return;let B=C,F=Number(new Date),k=F-(y||F);B.diff=k,B.prev=y,B.curr=F,y=F,_[0]=i.coerce(_[0]),typeof _[0]!="string"&&_.unshift("%O");let P=0;_[0]=_[0].replace(/%([a-zA-Z%])/g,(j,D)=>{if(j==="%%")return"%";P++;let X=i.formatters[D];if(typeof X=="function"){let Z=_[P];j=X.call(B,Z),_.splice(P,1),P--}return j}),i.formatArgs.call(B,_),(B.log||i.log).apply(B,_)}return C.namespace=m,C.useColors=i.useColors(),C.color=i.selectColor(m),C.extend=o,C.destroy=i.destroy,Object.defineProperty(C,"enabled",{enumerable:!0,configurable:!1,get:()=>b!==null?b:(O!==i.namespaces&&(O=i.namespaces,L=i.enabled(m)),L),set:_=>{b=_}}),typeof i.init=="function"&&i.init(C),C}function o(m,y){let b=i(this.namespace+(typeof y>"u"?":":y)+m);return b.log=this.log,b}function l(m){i.save(m),i.namespaces=m,i.names=[],i.skips=[];let y,b=(typeof m=="string"?m:"").split(/[\s,]+/),O=b.length;for(y=0;y<O;y++)b[y]&&(m=b[y].replace(/\*/g,".*?"),m[0]==="-"?i.skips.push(new RegExp("^"+m.slice(1)+"$")):i.names.push(new RegExp("^"+m+"$")))}function a(){let m=[...i.names.map(c),...i.skips.map(c).map(y=>"-"+y)].join(",");return i.enable(""),m}function u(m){if(m[m.length-1]==="*")return!0;let y,b;for(y=0,b=i.skips.length;y<b;y++)if(i.skips[y].test(m))return!1;for(y=0,b=i.names.length;y<b;y++)if(i.names[y].test(m))return!0;return!1}function c(m){return m.toString().substring(2,m.toString().length-2).replace(/\.\*\?$/,"*")}function f(m){return m instanceof Error?m.stack||m.message:m}function p(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return i.enable(i.load()),i}t.exports=r}),gr=ve((e,t)=>{pe(),me(),ge(),e.formatArgs=n,e.save=s,e.load=i,e.useColors=r,e.storage=o(),e.destroy=(()=>{let a=!1;return()=>{a||(a=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function n(a){if(a[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+a[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;let u="color: "+this.color;a.splice(1,0,u,"color: inherit");let c=0,f=0;a[0].replace(/%[a-zA-Z%]/g,p=>{p!=="%%"&&(c++,p==="%c"&&(f=c))}),a.splice(f,0,u)}e.log=console.debug||console.log||(()=>{});function s(a){try{a?e.storage.setItem("debug",a):e.storage.removeItem("debug")}catch{}}function i(){let a;try{a=e.storage.getItem("debug")}catch{}return!a&&typeof Me<"u"&&"env"in Me&&(a=Me.env.DEBUG),a}function o(){try{return localStorage}catch{}}t.exports=E0()(e);var{formatters:l}=t.exports;l.j=function(a){try{return JSON.stringify(a)}catch(u){return"[UnexpectedJSONParseError]: "+u.message}}}),S0=ve((e,t)=>{pe(),me(),ge();var r=v0(),{EventEmitter:n}=(Un(),De(mn)),s=w0(),i=Bd(),o=gr()("mqtt-packet:parser"),l=class Qa extends n{constructor(){super(),this.parser=this.constructor.parser}static parser(u){return this instanceof Qa?(this.settings=u||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new Qa().parser(u)}_resetState(){o("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new s,this.error=null,this._list=r(),this._stateCounter=0}parse(u){for(this.error&&this._resetState(),this._list.append(u),o("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,o("parse: state complete. _stateCounter is now: %d",this._stateCounter),o("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return o("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){let u=this._list.readUInt8(0),c=u>>i.CMD_SHIFT;this.packet.cmd=i.types[c];let f=u&15,p=i.requiredHeaderFlags[c];return p!=null&&f!==p?this._emitError(new Error(i.requiredHeaderFlagsErrors[c])):(this.packet.retain=(u&i.RETAIN_MASK)!==0,this.packet.qos=u>>i.QOS_SHIFT&i.QOS_MASK,this.packet.qos>2?this._emitError(new Error("Packet must not have both QoS bits set to 1")):(this.packet.dup=(u&i.DUP_MASK)!==0,o("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0))}_parseLength(){let u=this._parseVarByteNum(!0);return u&&(this.packet.length=u.value,this._list.consume(u.bytes)),o("_parseLength %d",u.value),!!u}_parsePayload(){o("_parsePayload: payload %O",this._list);let u=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}u=!0}return o("_parsePayload complete result: %s",u),u}_parseConnect(){o("_parseConnect");let u,c,f,p,m={},y=this.packet,b=this._parseString();if(b===null)return this._emitError(new Error("Cannot parse protocolId"));if(b!=="MQTT"&&b!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(y.protocolId=b,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(y.protocolVersion=this._list.readUInt8(this._pos),y.protocolVersion>=128&&(y.bridgeMode=!0,y.protocolVersion=y.protocolVersion-128),y.protocolVersion!==3&&y.protocolVersion!==4&&y.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(this._list.readUInt8(this._pos)&1)return this._emitError(new Error("Connect flag bit 0 must be 0, but got 1"));m.username=this._list.readUInt8(this._pos)&i.USERNAME_MASK,m.password=this._list.readUInt8(this._pos)&i.PASSWORD_MASK,m.will=this._list.readUInt8(this._pos)&i.WILL_FLAG_MASK;let O=!!(this._list.readUInt8(this._pos)&i.WILL_RETAIN_MASK),L=(this._list.readUInt8(this._pos)&i.WILL_QOS_MASK)>>i.WILL_QOS_SHIFT;if(m.will)y.will={},y.will.retain=O,y.will.qos=L;else{if(O)return this._emitError(new Error("Will Retain Flag must be set to zero when Will Flag is set to 0"));if(L)return this._emitError(new Error("Will QoS must be set to zero when Will Flag is set to 0"))}if(y.clean=(this._list.readUInt8(this._pos)&i.CLEAN_SESSION_MASK)!==0,this._pos++,y.keepalive=this._parseNum(),y.keepalive===-1)return this._emitError(new Error("Packet too short"));if(y.protocolVersion===5){let _=this._parseProperties();Object.getOwnPropertyNames(_).length&&(y.properties=_)}let C=this._parseString();if(C===null)return this._emitError(new Error("Packet too short"));if(y.clientId=C,o("_parseConnect: packet.clientId: %s",y.clientId),m.will){if(y.protocolVersion===5){let _=this._parseProperties();Object.getOwnPropertyNames(_).length&&(y.will.properties=_)}if(u=this._parseString(),u===null)return this._emitError(new Error("Cannot parse will topic"));if(y.will.topic=u,o("_parseConnect: packet.will.topic: %s",y.will.topic),c=this._parseBuffer(),c===null)return this._emitError(new Error("Cannot parse will payload"));y.will.payload=c,o("_parseConnect: packet.will.paylaod: %s",y.will.payload)}if(m.username){if(p=this._parseString(),p===null)return this._emitError(new Error("Cannot parse username"));y.username=p,o("_parseConnect: packet.username: %s",y.username)}if(m.password){if(f=this._parseBuffer(),f===null)return this._emitError(new Error("Cannot parse password"));y.password=f}return this.settings=y,o("_parseConnect: complete"),y}_parseConnack(){o("_parseConnack");let u=this.packet;if(this._list.length<1)return null;let c=this._list.readUInt8(this._pos++);if(c>1)return this._emitError(new Error("Invalid connack flags, bits 7-1 must be set to 0"));if(u.sessionPresent=!!(c&i.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?u.reasonCode=this._list.readUInt8(this._pos++):u.reasonCode=0;else{if(this._list.length<2)return null;u.returnCode=this._list.readUInt8(this._pos++)}if(u.returnCode===-1||u.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){let f=this._parseProperties();Object.getOwnPropertyNames(f).length&&(u.properties=f)}o("_parseConnack: complete")}_parsePublish(){o("_parsePublish");let u=this.packet;if(u.topic=this._parseString(),u.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(u.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}u.payload=this._list.slice(this._pos,u.length),o("_parsePublish: payload from buffer list: %o",u.payload)}}_parseSubscribe(){o("_parseSubscribe");let u=this.packet,c,f,p,m,y,b,O;if(u.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let L=this._parseProperties();Object.getOwnPropertyNames(L).length&&(u.properties=L)}if(u.length<=0)return this._emitError(new Error("Malformed subscribe, no payload specified"));for(;this._pos<u.length;){if(c=this._parseString(),c===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=u.length)return this._emitError(new Error("Malformed Subscribe Payload"));if(f=this._parseByte(),this.settings.protocolVersion===5){if(f&192)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-6 must be 0"))}else if(f&252)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-2 must be 0"));if(p=f&i.SUBSCRIBE_OPTIONS_QOS_MASK,p>2)return this._emitError(new Error("Invalid subscribe QoS, must be <= 2"));if(b=(f>>i.SUBSCRIBE_OPTIONS_NL_SHIFT&i.SUBSCRIBE_OPTIONS_NL_MASK)!==0,y=(f>>i.SUBSCRIBE_OPTIONS_RAP_SHIFT&i.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,m=f>>i.SUBSCRIBE_OPTIONS_RH_SHIFT&i.SUBSCRIBE_OPTIONS_RH_MASK,m>2)return this._emitError(new Error("Invalid retain handling, must be <= 2"));O={topic:c,qos:p},this.settings.protocolVersion===5?(O.nl=b,O.rap=y,O.rh=m):this.settings.bridgeMode&&(O.rh=0,O.rap=!0,O.nl=!0),o("_parseSubscribe: push subscription `%s` to subscription",O),u.subscriptions.push(O)}}}_parseSuback(){o("_parseSuback");let u=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed suback, no payload specified"));for(;this._pos<this.packet.length;){let c=this._list.readUInt8(this._pos++);if(this.settings.protocolVersion===5){if(!i.MQTT5_SUBACK_CODES[c])return this._emitError(new Error("Invalid suback code"))}else if(c>2&&c!==128)return this._emitError(new Error("Invalid suback QoS, must be 0, 1, 2 or 128"));this.packet.granted.push(c)}}}_parseUnsubscribe(){o("_parseUnsubscribe");let u=this.packet;if(u.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed unsubscribe, no payload specified"));for(;this._pos<u.length;){let c=this._parseString();if(c===null)return this._emitError(new Error("Cannot parse topic"));o("_parseUnsubscribe: push topic `%s` to unsubscriptions",c),u.unsubscriptions.push(c)}}}_parseUnsuback(){o("_parseUnsuback");let u=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if((this.settings.protocolVersion===3||this.settings.protocolVersion===4)&&u.length!==2)return this._emitError(new Error("Malformed unsuback, payload length must be 2"));if(u.length<=0)return this._emitError(new Error("Malformed unsuback, no payload specified"));if(this.settings.protocolVersion===5){let c=this._parseProperties();for(Object.getOwnPropertyNames(c).length&&(u.properties=c),u.granted=[];this._pos<this.packet.length;){let f=this._list.readUInt8(this._pos++);if(!i.MQTT5_UNSUBACK_CODES[f])return this._emitError(new Error("Invalid unsuback code"));this.packet.granted.push(f)}}}_parseConfirmation(){o("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);let u=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5){if(u.length>2){switch(u.reasonCode=this._parseByte(),this.packet.cmd){case"puback":case"pubrec":if(!i.MQTT5_PUBACK_PUBREC_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break;case"pubrel":case"pubcomp":if(!i.MQTT5_PUBREL_PUBCOMP_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break}o("_parseConfirmation: packet.reasonCode `%d`",u.reasonCode)}else u.reasonCode=0;if(u.length>3){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}}return!0}_parseDisconnect(){let u=this.packet;if(o("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?(u.reasonCode=this._parseByte(),i.MQTT5_DISCONNECT_CODES[u.reasonCode]||this._emitError(new Error("Invalid disconnect reason code"))):u.reasonCode=0;let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}return o("_parseDisconnect result: true"),!0}_parseAuth(){o("_parseAuth");let u=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));if(u.reasonCode=this._parseByte(),!i.MQTT5_AUTH_CODES[u.reasonCode])return this._emitError(new Error("Invalid auth reason code"));let c=this._parseProperties();return Object.getOwnPropertyNames(c).length&&(u.properties=c),o("_parseAuth: result: true"),!0}_parseMessageId(){let u=this.packet;return u.messageId=this._parseNum(),u.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(o("_parseMessageId: packet.messageId %d",u.messageId),!0)}_parseString(u){let c=this._parseNum(),f=c+this._pos;if(c===-1||f>this._list.length||f>this.packet.length)return null;let p=this._list.toString("utf8",this._pos,f);return this._pos+=c,o("_parseString: result: %s",p),p}_parseStringPair(){return o("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){let u=this._parseNum(),c=u+this._pos;if(u===-1||c>this._list.length||c>this.packet.length)return null;let f=this._list.slice(this._pos,c);return this._pos+=u,o("_parseBuffer: result: %o",f),f}_parseNum(){if(this._list.length-this._pos<2)return-1;let u=this._list.readUInt16BE(this._pos);return this._pos+=2,o("_parseNum: result: %s",u),u}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;let u=this._list.readUInt32BE(this._pos);return this._pos+=4,o("_parse4ByteNum: result: %s",u),u}_parseVarByteNum(u){o("_parseVarByteNum");let c=4,f=0,p=1,m=0,y=!1,b,O=this._pos?this._pos:0;for(;f<c&&O+f<this._list.length;){if(b=this._list.readUInt8(O+f++),m+=p*(b&i.VARBYTEINT_MASK),p*=128,!(b&i.VARBYTEINT_FIN_MASK)){y=!0;break}if(this._list.length<=f)break}return!y&&f===c&&this._list.length>=f&&this._emitError(new Error("Invalid variable byte integer")),O&&(this._pos+=f),y?u?y={bytes:f,value:m}:y=m:y=!1,o("_parseVarByteNum: result: %o",y),y}_parseByte(){let u;return this._pos<this._list.length&&(u=this._list.readUInt8(this._pos),this._pos++),o("_parseByte: result: %o",u),u}_parseByType(u){switch(o("_parseByType: type: %s",u),u){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){o("_parseProperties");let u=this._parseVarByteNum(),c=this._pos+u,f={};for(;this._pos<c;){let p=this._parseByte();if(!p)return this._emitError(new Error("Cannot parse property code type")),!1;let m=i.propertiesCodes[p];if(!m)return this._emitError(new Error("Unknown property")),!1;if(m==="userProperties"){f[m]||(f[m]=Object.create(null));let y=this._parseByType(i.propertiesTypes[m]);if(f[m][y.name])if(Array.isArray(f[m][y.name]))f[m][y.name].push(y.value);else{let b=f[m][y.name];f[m][y.name]=[b],f[m][y.name].push(y.value)}else f[m][y.name]=y.value;continue}f[m]?Array.isArray(f[m])?f[m].push(this._parseByType(i.propertiesTypes[m])):(f[m]=[f[m]],f[m].push(this._parseByType(i.propertiesTypes[m]))):f[m]=this._parseByType(i.propertiesTypes[m])}return f}_newPacket(){return o("_newPacket"),this.packet&&(this._list.consume(this.packet.length),o("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),o("_newPacket: new packet"),this.packet=new s,this._pos=0,!0}_emitError(u){o("_emitError",u),this.error=u,this.emit("error",u)}};t.exports=l}),A0=ve((e,t)=>{pe(),me(),ge();var{Buffer:r}=(lt(),De(at)),n=65536,s={},i=r.isBuffer(r.from([1,2]).subarray(0,1));function o(c){let f=r.allocUnsafe(2);return f.writeUInt8(c>>8,0),f.writeUInt8(c&255,1),f}function l(){for(let c=0;c<n;c++)s[c]=o(c)}function a(c){let f=0,p=0,m=r.allocUnsafe(4);do f=c%128|0,c=c/128|0,c>0&&(f=f|128),m.writeUInt8(f,p++);while(c>0&&p<4);return c>0&&(p=0),i?m.subarray(0,p):m.slice(0,p)}function u(c){let f=r.allocUnsafe(4);return f.writeUInt32BE(c,0),f}t.exports={cache:s,generateCache:l,generateNumber:o,genBufVariableByteInt:a,generate4ByteBuffer:u}}),T0=ve((e,t)=>{pe(),me(),ge(),typeof Me>"u"||!Me.version||Me.version.indexOf("v0.")===0||Me.version.indexOf("v1.")===0&&Me.version.indexOf("v1.8.")!==0?t.exports={nextTick:r}:t.exports=Me;function r(n,s,i,o){if(typeof n!="function")throw new TypeError('"callback" argument must be a function');var l=arguments.length,a,u;switch(l){case 0:case 1:return Me.nextTick(n);case 2:return Me.nextTick(function(){n.call(null,s)});case 3:return Me.nextTick(function(){n.call(null,s,i)});case 4:return Me.nextTick(function(){n.call(null,s,i,o)});default:for(a=new Array(l-1),u=0;u<a.length;)a[u++]=arguments[u];return Me.nextTick(function(){n.apply(null,a)})}}}),Md=ve((e,t)=>{pe(),me(),ge();var r=Bd(),{Buffer:n}=(lt(),De(at)),s=n.allocUnsafe(0),i=n.from([0]),o=A0(),l=T0().nextTick,a=gr()("mqtt-packet:writeToStream"),u=o.cache,c=o.generateNumber,f=o.generateCache,p=o.genBufVariableByteInt,m=o.generate4ByteBuffer,y=ne,b=!0;function O(E,I,K){switch(a("generate called"),I.cork&&(I.cork(),l(L,I)),b&&(b=!1,f()),a("generate: packet.cmd: %s",E.cmd),E.cmd){case"connect":return C(E,I);case"connack":return _(E,I,K);case"publish":return B(E,I,K);case"puback":case"pubrec":case"pubrel":case"pubcomp":return F(E,I,K);case"subscribe":return k(E,I,K);case"suback":return P(E,I,K);case"unsubscribe":return j(E,I,K);case"unsuback":return D(E,I,K);case"pingreq":case"pingresp":return X(E,I);case"disconnect":return Z(E,I,K);case"auth":return S(E,I,K);default:return I.destroy(new Error("Unknown command")),!1}}Object.defineProperty(O,"cacheNumbers",{get(){return y===ne},set(E){E?((!u||Object.keys(u).length===0)&&(b=!0),y=ne):(b=!1,y=G)}});function L(E){E.uncork()}function C(E,I,K){let re=E||{},oe=re.protocolId||"MQTT",se=re.protocolVersion||4,T=re.will,x=re.clean,v=re.keepalive||0,U=re.clientId||"",M=re.username,Y=re.password,J=re.properties;x===void 0&&(x=!0);let N=0;if(!oe||typeof oe!="string"&&!n.isBuffer(oe))return I.destroy(new Error("Invalid protocolId")),!1;if(N+=oe.length+2,se!==3&&se!==4&&se!==5)return I.destroy(new Error("Invalid protocol version")),!1;if(N+=1,(typeof U=="string"||n.isBuffer(U))&&(U||se>=4)&&(U||x))N+=n.byteLength(U)+2;else{if(se<4)return I.destroy(new Error("clientId must be supplied before 3.1.1")),!1;if(x*1===0)return I.destroy(new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof v!="number"||v<0||v>65535||v%1!==0)return I.destroy(new Error("Invalid keepalive")),!1;N+=2,N+=1;let $,R;if(se===5){if($=be(I,J),!$)return!1;N+=$.length}if(T){if(typeof T!="object")return I.destroy(new Error("Invalid will")),!1;if(!T.topic||typeof T.topic!="string")return I.destroy(new Error("Invalid will topic")),!1;if(N+=n.byteLength(T.topic)+2,N+=2,T.payload)if(T.payload.length>=0)typeof T.payload=="string"?N+=n.byteLength(T.payload):N+=T.payload.length;else return I.destroy(new Error("Invalid will payload")),!1;if(R={},se===5){if(R=be(I,T.properties),!R)return!1;N+=R.length}}let H=!1;if(M!=null)if(fe(M))H=!0,N+=n.byteLength(M)+2;else return I.destroy(new Error("Invalid username")),!1;if(Y!=null){if(!H)return I.destroy(new Error("Username is required to use password")),!1;if(fe(Y))N+=we(Y)+2;else return I.destroy(new Error("Invalid password")),!1}I.write(r.CONNECT_HEADER),ae(I,N),ce(I,oe),re.bridgeMode&&(se+=128),I.write(se===131?r.VERSION131:se===132?r.VERSION132:se===4?r.VERSION4:se===5?r.VERSION5:r.VERSION3);let V=0;return V|=M!=null?r.USERNAME_MASK:0,V|=Y!=null?r.PASSWORD_MASK:0,V|=T&&T.retain?r.WILL_RETAIN_MASK:0,V|=T&&T.qos?T.qos<<r.WILL_QOS_SHIFT:0,V|=T?r.WILL_FLAG_MASK:0,V|=x?r.CLEAN_SESSION_MASK:0,I.write(n.from([V])),y(I,v),se===5&&$.write(),ce(I,U),T&&(se===5&&R.write(),ee(I,T.topic),ce(I,T.payload)),M!=null&&ce(I,M),Y!=null&&ce(I,Y),!0}function _(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=re===5?oe.reasonCode:oe.returnCode,T=oe.properties,x=2;if(typeof se!="number")return I.destroy(new Error("Invalid return code")),!1;let v=null;if(re===5){if(v=be(I,T),!v)return!1;x+=v.length}return I.write(r.CONNACK_HEADER),ae(I,x),I.write(oe.sessionPresent?r.SESSIONPRESENT_HEADER:i),I.write(n.from([se])),v==null||v.write(),!0}function B(E,I,K){a("publish: packet: %o",E);let re=K?K.protocolVersion:4,oe=E||{},se=oe.qos||0,T=oe.retain?r.RETAIN_MASK:0,x=oe.topic,v=oe.payload||s,U=oe.messageId,M=oe.properties,Y=0;if(typeof x=="string")Y+=n.byteLength(x)+2;else if(n.isBuffer(x))Y+=x.length+2;else return I.destroy(new Error("Invalid topic")),!1;if(n.isBuffer(v)?Y+=v.length:Y+=n.byteLength(v),se&&typeof U!="number")return I.destroy(new Error("Invalid messageId")),!1;se&&(Y+=2);let J=null;if(re===5){if(J=be(I,M),!J)return!1;Y+=J.length}return I.write(r.PUBLISH_HEADER[se][oe.dup?1:0][T?1:0]),ae(I,Y),y(I,we(x)),I.write(x),se>0&&y(I,U),J==null||J.write(),a("publish: payload: %o",v),I.write(v)}function F(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.cmd||"puback",T=oe.messageId,x=oe.dup&&se==="pubrel"?r.DUP_MASK:0,v=0,U=oe.reasonCode,M=oe.properties,Y=re===5?3:2;if(se==="pubrel"&&(v=1),typeof T!="number")return I.destroy(new Error("Invalid messageId")),!1;let J=null;if(re===5&&typeof M=="object"){if(J=A(I,M,K,Y),!J)return!1;Y+=J.length}return I.write(r.ACKS[se][v][x][0]),Y===3&&(Y+=U!==0?1:-1),ae(I,Y),y(I,T),re===5&&Y!==2&&I.write(n.from([U])),J!==null?J.write():Y===4&&I.write(n.from([0])),!0}function k(E,I,K){a("subscribe: packet: ");let re=K?K.protocolVersion:4,oe=E||{},se=oe.dup?r.DUP_MASK:0,T=oe.messageId,x=oe.subscriptions,v=oe.properties,U=0;if(typeof T!="number")return I.destroy(new Error("Invalid messageId")),!1;U+=2;let M=null;if(re===5){if(M=be(I,v),!M)return!1;U+=M.length}if(typeof x=="object"&&x.length)for(let J=0;J<x.length;J+=1){let N=x[J].topic,$=x[J].qos;if(typeof N!="string")return I.destroy(new Error("Invalid subscriptions - invalid topic")),!1;if(typeof $!="number")return I.destroy(new Error("Invalid subscriptions - invalid qos")),!1;if(re===5){if(typeof(x[J].nl||!1)!="boolean")return I.destroy(new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(x[J].rap||!1)!="boolean")return I.destroy(new Error("Invalid subscriptions - invalid Retain as Published")),!1;let R=x[J].rh||0;if(typeof R!="number"||R>2)return I.destroy(new Error("Invalid subscriptions - invalid Retain Handling")),!1}U+=n.byteLength(N)+2+1}else return I.destroy(new Error("Invalid subscriptions")),!1;a("subscribe: writing to stream: %o",r.SUBSCRIBE_HEADER),I.write(r.SUBSCRIBE_HEADER[1][se?1:0][0]),ae(I,U),y(I,T),M!==null&&M.write();let Y=!0;for(let J of x){let N=J.topic,$=J.qos,R=+J.nl,H=+J.rap,V=J.rh,te;ee(I,N),te=r.SUBSCRIBE_OPTIONS_QOS[$],re===5&&(te|=R?r.SUBSCRIBE_OPTIONS_NL:0,te|=H?r.SUBSCRIBE_OPTIONS_RAP:0,te|=V?r.SUBSCRIBE_OPTIONS_RH[V]:0),Y=I.write(n.from([te]))}return Y}function P(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.messageId,T=oe.granted,x=oe.properties,v=0;if(typeof se!="number")return I.destroy(new Error("Invalid messageId")),!1;if(v+=2,typeof T=="object"&&T.length)for(let M=0;M<T.length;M+=1){if(typeof T[M]!="number")return I.destroy(new Error("Invalid qos vector")),!1;v+=1}else return I.destroy(new Error("Invalid qos vector")),!1;let U=null;if(re===5){if(U=A(I,x,K,v),!U)return!1;v+=U.length}return I.write(r.SUBACK_HEADER),ae(I,v),y(I,se),U!==null&&U.write(),I.write(n.from(T))}function j(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.messageId,T=oe.dup?r.DUP_MASK:0,x=oe.unsubscriptions,v=oe.properties,U=0;if(typeof se!="number")return I.destroy(new Error("Invalid messageId")),!1;if(U+=2,typeof x=="object"&&x.length)for(let J=0;J<x.length;J+=1){if(typeof x[J]!="string")return I.destroy(new Error("Invalid unsubscriptions")),!1;U+=n.byteLength(x[J])+2}else return I.destroy(new Error("Invalid unsubscriptions")),!1;let M=null;if(re===5){if(M=be(I,v),!M)return!1;U+=M.length}I.write(r.UNSUBSCRIBE_HEADER[1][T?1:0][0]),ae(I,U),y(I,se),M!==null&&M.write();let Y=!0;for(let J=0;J<x.length;J++)Y=ee(I,x[J]);return Y}function D(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.messageId,T=oe.dup?r.DUP_MASK:0,x=oe.granted,v=oe.properties,U=oe.cmd,M=0,Y=2;if(typeof se!="number")return I.destroy(new Error("Invalid messageId")),!1;if(re===5)if(typeof x=="object"&&x.length)for(let N=0;N<x.length;N+=1){if(typeof x[N]!="number")return I.destroy(new Error("Invalid qos vector")),!1;Y+=1}else return I.destroy(new Error("Invalid qos vector")),!1;let J=null;if(re===5){if(J=A(I,v,K,Y),!J)return!1;Y+=J.length}return I.write(r.ACKS[U][M][T][0]),ae(I,Y),y(I,se),J!==null&&J.write(),re===5&&I.write(n.from(x)),!0}function X(E,I,K){return I.write(r.EMPTY[E.cmd])}function Z(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.reasonCode,T=oe.properties,x=re===5?1:0,v=null;if(re===5){if(v=A(I,T,K,x),!v)return!1;x+=v.length}return I.write(n.from([r.codes.disconnect<<4])),ae(I,x),re===5&&I.write(n.from([se])),v!==null&&v.write(),!0}function S(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.reasonCode,T=oe.properties,x=re===5?1:0;re!==5&&I.destroy(new Error("Invalid mqtt version for auth packet"));let v=A(I,T,K,x);return v?(x+=v.length,I.write(n.from([r.codes.auth<<4])),ae(I,x),I.write(n.from([se])),v!==null&&v.write(),!0):!1}var z={};function ae(E,I){if(I>r.VARBYTEINT_MAX)return E.destroy(new Error(`Invalid variable byte integer: ${I}`)),!1;let K=z[I];return K||(K=p(I),I<16384&&(z[I]=K)),a("writeVarByteInt: writing to stream: %o",K),E.write(K)}function ee(E,I){let K=n.byteLength(I);return y(E,K),a("writeString: %s",I),E.write(I,"utf8")}function le(E,I,K){ee(E,I),ee(E,K)}function ne(E,I){return a("writeNumberCached: number: %d",I),a("writeNumberCached: %o",u[I]),E.write(u[I])}function G(E,I){let K=c(I);return a("writeNumberGenerated: %o",K),E.write(K)}function de(E,I){let K=m(I);return a("write4ByteNumber: %o",K),E.write(K)}function ce(E,I){typeof I=="string"?ee(E,I):I?(y(E,I.length),E.write(I)):y(E,0)}function be(E,I){if(typeof I!="object"||I.length!=null)return{length:1,write(){he(E,{},0)}};let K=0;function re(oe,se){let T=r.propertiesTypes[oe],x=0;switch(T){case"byte":{if(typeof se!="boolean")return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;x+=2;break}case"int8":{if(typeof se!="number"||se<0||se>255)return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;x+=2;break}case"binary":{if(se&&se===null)return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;x+=1+n.byteLength(se)+2;break}case"int16":{if(typeof se!="number"||se<0||se>65535)return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;x+=3;break}case"int32":{if(typeof se!="number"||se<0||se>4294967295)return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;x+=5;break}case"var":{if(typeof se!="number"||se<0||se>268435455)return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;x+=1+n.byteLength(p(se));break}case"string":{if(typeof se!="string")return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;x+=3+n.byteLength(se.toString());break}case"pair":{if(typeof se!="object")return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;x+=Object.getOwnPropertyNames(se).reduce((v,U)=>{let M=se[U];return Array.isArray(M)?v+=M.reduce((Y,J)=>(Y+=3+n.byteLength(U.toString())+2+n.byteLength(J.toString()),Y),0):v+=3+n.byteLength(U.toString())+2+n.byteLength(se[U].toString()),v},0);break}default:return E.destroy(new Error(`Invalid property ${oe}: ${se}`)),!1}return x}if(I)for(let oe in I){let se=0,T=0,x=I[oe];if(Array.isArray(x))for(let v=0;v<x.length;v++){if(T=re(oe,x[v]),!T)return!1;se+=T}else{if(T=re(oe,x),!T)return!1;se=T}if(!se)return!1;K+=se}return{length:n.byteLength(p(K))+K,write(){he(E,I,K)}}}function A(E,I,K,re){let oe=["reasonString","userProperties"],se=K&&K.properties&&K.properties.maximumPacketSize?K.properties.maximumPacketSize:0,T=be(E,I);if(se)for(;re+T.length>se;){let x=oe.shift();if(x&&I[x])delete I[x],T=be(E,I);else return!1}return T}function ie(E,I,K){switch(r.propertiesTypes[I]){case"byte":{E.write(n.from([r.properties[I]])),E.write(n.from([+K]));break}case"int8":{E.write(n.from([r.properties[I]])),E.write(n.from([K]));break}case"binary":{E.write(n.from([r.properties[I]])),ce(E,K);break}case"int16":{E.write(n.from([r.properties[I]])),y(E,K);break}case"int32":{E.write(n.from([r.properties[I]])),de(E,K);break}case"var":{E.write(n.from([r.properties[I]])),ae(E,K);break}case"string":{E.write(n.from([r.properties[I]])),ee(E,K);break}case"pair":{Object.getOwnPropertyNames(K).forEach(re=>{let oe=K[re];Array.isArray(oe)?oe.forEach(se=>{E.write(n.from([r.properties[I]])),le(E,re.toString(),se.toString())}):(E.write(n.from([r.properties[I]])),le(E,re.toString(),oe.toString()))});break}default:return E.destroy(new Error(`Invalid property ${I} value: ${K}`)),!1}}function he(E,I,K){ae(E,K);for(let re in I)if(Object.prototype.hasOwnProperty.call(I,re)&&I[re]!==null){let oe=I[re];if(Array.isArray(oe))for(let se=0;se<oe.length;se++)ie(E,re,oe[se]);else ie(E,re,oe)}}function we(E){return E?E instanceof n?E.length:n.byteLength(E):0}function fe(E){return typeof E=="string"||E instanceof n}t.exports=O}),I0=ve((e,t)=>{pe(),me(),ge();var r=Md(),{EventEmitter:n}=(Un(),De(mn)),{Buffer:s}=(lt(),De(at));function i(l,a){let u=new o;return r(l,u,a),u.concat()}var o=class extends n{constructor(){super(),this._array=new Array(20),this._i=0}write(l){return this._array[this._i++]=l,!0}concat(){let l=0,a=new Array(this._array.length),u=this._array,c=0,f;for(f=0;f<u.length&&u[f]!==void 0;f++)typeof u[f]!="string"?a[f]=u[f].length:a[f]=s.byteLength(u[f]),l+=a[f];let p=s.allocUnsafe(l);for(f=0;f<u.length&&u[f]!==void 0;f++)typeof u[f]!="string"?(u[f].copy(p,c),c+=a[f]):(p.write(u[f],c),c+=a[f]);return p}destroy(l){l&&this.emit("error",l)}};t.exports=i}),O0=ve(e=>{pe(),me(),ge(),e.parser=S0().parser,e.generate=I0(),e.writeToStream=Md()}),Ld=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(){this.nextId=Math.max(1,Math.floor(Math.random()*65535))}allocate(){let r=this.nextId++;return this.nextId===65536&&(this.nextId=1),r}getLastAllocated(){return this.nextId===1?65535:this.nextId-1}register(r){return!0}deallocate(r){}clear(){}};e.default=t}),C0=ve((e,t)=>{pe(),me(),ge(),t.exports=n;function r(i){return i instanceof ho?ho.from(i):new i.constructor(i.buffer.slice(),i.byteOffset,i.length)}function n(i){if(i=i||{},i.circles)return s(i);return i.proto?a:l;function o(u,c){for(var f=Object.keys(u),p=new Array(f.length),m=0;m<f.length;m++){var y=f[m],b=u[y];typeof b!="object"||b===null?p[y]=b:b instanceof Date?p[y]=new Date(b):ArrayBuffer.isView(b)?p[y]=r(b):p[y]=c(b)}return p}function l(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return o(u,l);if(u instanceof Map)return new Map(o(Array.from(u),l));if(u instanceof Set)return new Set(o(Array.from(u),l));var c={};for(var f in u)if(Object.hasOwnProperty.call(u,f)!==!1){var p=u[f];typeof p!="object"||p===null?c[f]=p:p instanceof Date?c[f]=new Date(p):p instanceof Map?c[f]=new Map(o(Array.from(p),l)):p instanceof Set?c[f]=new Set(o(Array.from(p),l)):ArrayBuffer.isView(p)?c[f]=r(p):c[f]=l(p)}return c}function a(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return o(u,a);if(u instanceof Map)return new Map(o(Array.from(u),a));if(u instanceof Set)return new Set(o(Array.from(u),a));var c={};for(var f in u){var p=u[f];typeof p!="object"||p===null?c[f]=p:p instanceof Date?c[f]=new Date(p):p instanceof Map?c[f]=new Map(o(Array.from(p),a)):p instanceof Set?c[f]=new Set(o(Array.from(p),a)):ArrayBuffer.isView(p)?c[f]=r(p):c[f]=a(p)}return c}}function s(i){var o=[],l=[];return i.proto?c:u;function a(f,p){for(var m=Object.keys(f),y=new Array(m.length),b=0;b<m.length;b++){var O=m[b],L=f[O];if(typeof L!="object"||L===null)y[O]=L;else if(L instanceof Date)y[O]=new Date(L);else if(ArrayBuffer.isView(L))y[O]=r(L);else{var C=o.indexOf(L);C!==-1?y[O]=l[C]:y[O]=p(L)}}return y}function u(f){if(typeof f!="object"||f===null)return f;if(f instanceof Date)return new Date(f);if(Array.isArray(f))return a(f,u);if(f instanceof Map)return new Map(a(Array.from(f),u));if(f instanceof Set)return new Set(a(Array.from(f),u));var p={};o.push(f),l.push(p);for(var m in f)if(Object.hasOwnProperty.call(f,m)!==!1){var y=f[m];if(typeof y!="object"||y===null)p[m]=y;else if(y instanceof Date)p[m]=new Date(y);else if(y instanceof Map)p[m]=new Map(a(Array.from(y),u));else if(y instanceof Set)p[m]=new Set(a(Array.from(y),u));else if(ArrayBuffer.isView(y))p[m]=r(y);else{var b=o.indexOf(y);b!==-1?p[m]=l[b]:p[m]=u(y)}}return o.pop(),l.pop(),p}function c(f){if(typeof f!="object"||f===null)return f;if(f instanceof Date)return new Date(f);if(Array.isArray(f))return a(f,c);if(f instanceof Map)return new Map(a(Array.from(f),c));if(f instanceof Set)return new Set(a(Array.from(f),c));var p={};o.push(f),l.push(p);for(var m in f){var y=f[m];if(typeof y!="object"||y===null)p[m]=y;else if(y instanceof Date)p[m]=new Date(y);else if(y instanceof Map)p[m]=new Map(a(Array.from(y),c));else if(y instanceof Set)p[m]=new Set(a(Array.from(y),c));else if(ArrayBuffer.isView(y))p[m]=r(y);else{var b=o.indexOf(y);b!==-1?p[m]=l[b]:p[m]=c(y)}}return o.pop(),l.pop(),p}}}),R0=ve((e,t)=>{pe(),me(),ge(),t.exports=C0()()}),x0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.validateTopics=e.validateTopic=void 0;function t(n){let s=n.split("/");for(let i=0;i<s.length;i++)if(s[i]!=="+"){if(s[i]==="#")return i===s.length-1;if(s[i].indexOf("+")!==-1||s[i].indexOf("#")!==-1)return!1}return!0}e.validateTopic=t;function r(n){if(n.length===0)return"empty_topic_list";for(let s=0;s<n.length;s++)if(!t(n[s]))return n[s];return null}e.validateTopics=r}),Nd=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=yn(),r={objectMode:!0},n={clean:!0},s=class{constructor(i){this.options=i||{},this.options=Object.assign(Object.assign({},n),i),this._inflights=new Map}put(i,o){return this._inflights.set(i.messageId,i),o&&o(),this}createStream(){let i=new t.Readable(r),o=[],l=!1,a=0;return this._inflights.forEach((u,c)=>{o.push(u)}),i._read=()=>{!l&&a<o.length?i.push(o[a++]):i.push(null)},i.destroy=u=>{if(!l)return l=!0,setTimeout(()=>{i.emit("close")},0),i},i}del(i,o){let l=this._inflights.get(i.messageId);return l?(this._inflights.delete(i.messageId),o(null,l)):o&&o(new Error("missing packet")),this}get(i,o){let l=this._inflights.get(i.messageId);return l?o(null,l):o&&o(new Error("missing packet")),this}close(i){this.options.clean&&(this._inflights=null),i&&i()}};e.default=s}),P0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=[0,16,128,131,135,144,145,151,153],r=(n,s,i)=>{n.log("handlePublish: packet %o",s),i=typeof i<"u"?i:n.noop;let o=s.topic.toString(),l=s.payload,{qos:a}=s,{messageId:u}=s,{options:c}=n;if(n.options.protocolVersion===5){let f;if(s.properties&&(f=s.properties.topicAlias),typeof f<"u")if(o.length===0)if(f>0&&f<=65535){let p=n.topicAliasRecv.getTopicByAlias(f);if(p)o=p,n.log("handlePublish :: topic complemented by alias. topic: %s - alias: %d",o,f);else{n.log("handlePublish :: unregistered topic alias. alias: %d",f),n.emit("error",new Error("Received unregistered Topic Alias"));return}}else{n.log("handlePublish :: topic alias out of range. alias: %d",f),n.emit("error",new Error("Received Topic Alias is out of range"));return}else if(n.topicAliasRecv.put(o,f))n.log("handlePublish :: registered topic: %s - alias: %d",o,f);else{n.log("handlePublish :: topic alias out of range. alias: %d",f),n.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(n.log("handlePublish: qos %d",a),a){case 2:{c.customHandleAcks(o,l,s,(f,p)=>{if(typeof f=="number"&&(p=f,f=null),f)return n.emit("error",f);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for pubrec"));p?n._sendPacket({cmd:"pubrec",messageId:u,reasonCode:p},i):n.incomingStore.put(s,()=>{n._sendPacket({cmd:"pubrec",messageId:u},i)})});break}case 1:{c.customHandleAcks(o,l,s,(f,p)=>{if(typeof f=="number"&&(p=f,f=null),f)return n.emit("error",f);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for puback"));p||n.emit("message",o,l,s),n.handleMessage(s,m=>{if(m)return i&&i(m);n._sendPacket({cmd:"puback",messageId:u,reasonCode:p},i)})});break}case 0:n.emit("message",o,l,s),n.handleMessage(s,i);break;default:n.log("handlePublish: unknown QoS. Doing nothing.");break}};e.default=r}),k0=ve((e,t)=>{t.exports={version:"5.10.1"}}),Dn=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.MQTTJS_VERSION=e.nextTick=e.applyMixin=e.ErrorWithReasonCode=void 0;var t=class jd extends Error{constructor(s,i){super(s),this.code=i,Object.setPrototypeOf(this,jd.prototype),Object.getPrototypeOf(this).name="ErrorWithReasonCode"}};e.ErrorWithReasonCode=t;function r(n,s,i=!1){var o;let l=[s];for(;;){let a=l[0],u=Object.getPrototypeOf(a);if(u!=null&&u.prototype)l.unshift(u);else break}for(let a of l)for(let u of Object.getOwnPropertyNames(a.prototype))(i||u!=="constructor")&&Object.defineProperty(n.prototype,u,(o=Object.getOwnPropertyDescriptor(a.prototype,u))!==null&&o!==void 0?o:Object.create(null))}e.applyMixin=r,e.nextTick=typeof(Me==null?void 0:Me.nextTick)=="function"?Me.nextTick:n=>{setTimeout(n,0)},e.MQTTJS_VERSION=k0().version}),Fo=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=void 0;var t=Dn();e.ReasonCodes={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};var r=(n,s)=>{let{messageId:i}=s,o=s.cmd,l=null,a=n.outgoing[i]?n.outgoing[i].cb:null,u=null;if(!a){n.log("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(n.log("_handleAck :: packet type",o),o){case"pubcomp":case"puback":{let c=s.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{a(u,s)})):n._removeOutgoingAndStoreMessage(i,a);break}case"pubrec":{l={cmd:"pubrel",qos:2,messageId:i};let c=s.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{a(u,s)})):n._sendPacket(l);break}case"suback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i);let c=s.granted;for(let f=0;f<c.length;f++){let p=c[f];if(p&128){u=new Error(`Subscribe error: ${e.ReasonCodes[p]}`),u.code=p;let m=n.messageIdToTopic[i];m&&m.forEach(y=>{delete n._resubscribeTopics[y]})}}delete n.messageIdToTopic[i],n._invokeStoreProcessingQueue(),a(u,s);break}case"unsuback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i),n._invokeStoreProcessingQueue(),a(null,s);break}default:n.emit("error",new Error("unrecognized packet type"))}n.disconnecting&&Object.keys(n.outgoing).length===0&&n.emit("outgoingEmpty")};e.default=r}),B0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=Dn(),r=Fo(),n=(s,i)=>{let{options:o}=s,l=o.protocolVersion,a=l===5?i.reasonCode:i.returnCode;if(l!==5){let u=new t.ErrorWithReasonCode(`Protocol error: Auth packets are only supported in MQTT 5. Your version:${l}`,a);s.emit("error",u);return}s.handleAuth(i,(u,c)=>{if(u){s.emit("error",u);return}if(a===24)s.reconnecting=!1,s._sendPacket(c);else{let f=new t.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[a]}`,a);s.emit("error",f)}})};e.default=n}),M0=ve(e=>{var m,y,b,O,L,C,_,B,F,k,P,j,D,X,Z,S,z,ae,ee,le,ne,G,de,ce,be,A,Ja,he,we,fe,E,Ud,K,re,oe,Or,Cr,Xa,Xi,Zi,He,Za,Xn,N;pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=void 0;var t=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,r=new Set,n=typeof Me=="object"&&Me?Me:{},s=($,R,H,V)=>{typeof n.emitWarning=="function"?n.emitWarning($,R,H,V):console.error(`[${H}] ${R}: ${$}`)},i=globalThis.AbortController,o=globalThis.AbortSignal;if(typeof i>"u"){o=class{constructor(){ze(this,"onabort");ze(this,"_onabort",[]);ze(this,"reason");ze(this,"aborted",!1)}addEventListener(H,V){this._onabort.push(V)}},i=class{constructor(){ze(this,"signal",new o);R()}abort(H){var V,te;if(!this.signal.aborted){this.signal.reason=H,this.signal.aborted=!0;for(let d of this.signal._onabort)d(H);(te=(V=this.signal).onabort)==null||te.call(V,H)}}};let $=((m=n.env)==null?void 0:m.LRU_CACHE_IGNORE_AC_WARNING)!=="1",R=()=>{$&&($=!1,s("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",R))}}var l=$=>!r.has($),a=$=>$&&$===Math.floor($)&&$>0&&isFinite($),u=$=>a($)?$<=Math.pow(2,8)?Uint8Array:$<=Math.pow(2,16)?Uint16Array:$<=Math.pow(2,32)?Uint32Array:$<=Number.MAX_SAFE_INTEGER?c:null:null,c=class extends Array{constructor($){super($),this.fill(0)}},f=(y=class{constructor(R,H){ze(this,"heap");ze(this,"length");if(!q(y,b))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new H(R),this.length=0}static create(R){let H=u(R);if(!H)return[];Te(y,b,!0);let V=new y(R,H);return Te(y,b,!1),V}push(R){this.heap[this.length++]=R}pop(){return this.heap[--this.length]}},b=new WeakMap,ke(y,b,!1),y),p=(N=class{constructor(R){ke(this,A);ke(this,O);ke(this,L);ke(this,C);ke(this,_);ke(this,B);ze(this,"ttl");ze(this,"ttlResolution");ze(this,"ttlAutopurge");ze(this,"updateAgeOnGet");ze(this,"updateAgeOnHas");ze(this,"allowStale");ze(this,"noDisposeOnSet");ze(this,"noUpdateTTL");ze(this,"maxEntrySize");ze(this,"sizeCalculation");ze(this,"noDeleteOnFetchRejection");ze(this,"noDeleteOnStaleGet");ze(this,"allowStaleOnFetchAbort");ze(this,"allowStaleOnFetchRejection");ze(this,"ignoreFetchAbort");ke(this,F);ke(this,k);ke(this,P);ke(this,j);ke(this,D);ke(this,X);ke(this,Z);ke(this,S);ke(this,z);ke(this,ae);ke(this,ee);ke(this,le);ke(this,ne);ke(this,G);ke(this,de);ke(this,ce);ke(this,be);ke(this,he,()=>{});ke(this,we,()=>{});ke(this,fe,()=>{});ke(this,E,()=>!1);ke(this,K,R=>{});ke(this,re,(R,H,V)=>{});ke(this,oe,(R,H,V,te)=>{if(V||te)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});let{max:H=0,ttl:V,ttlResolution:te=1,ttlAutopurge:d,updateAgeOnGet:h,updateAgeOnHas:g,allowStale:w,dispose:W,disposeAfter:Q,noDisposeOnSet:ue,noUpdateTTL:Ee,maxSize:Ce=0,maxEntrySize:xe=0,sizeCalculation:_e,fetchMethod:Ae,noDeleteOnFetchRejection:Ie,noDeleteOnStaleGet:Fe,allowStaleOnFetchRejection:tt,allowStaleOnFetchAbort:Qe,ignoreFetchAbort:ot}=R;if(H!==0&&!a(H))throw new TypeError("max option must be a nonnegative integer");let ht=H?u(H):Array;if(!ht)throw new Error("invalid max value: "+H);if(Te(this,O,H),Te(this,L,Ce),this.maxEntrySize=xe||q(this,L),this.sizeCalculation=_e,this.sizeCalculation){if(!q(this,L)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(Ae!==void 0&&typeof Ae!="function")throw new TypeError("fetchMethod must be a function if specified");if(Te(this,B,Ae),Te(this,ce,!!Ae),Te(this,P,new Map),Te(this,j,new Array(H).fill(void 0)),Te(this,D,new Array(H).fill(void 0)),Te(this,X,new ht(H)),Te(this,Z,new ht(H)),Te(this,S,0),Te(this,z,0),Te(this,ae,f.create(H)),Te(this,F,0),Te(this,k,0),typeof W=="function"&&Te(this,C,W),typeof Q=="function"?(Te(this,_,Q),Te(this,ee,[])):(Te(this,_,void 0),Te(this,ee,void 0)),Te(this,de,!!q(this,C)),Te(this,be,!!q(this,_)),this.noDisposeOnSet=!!ue,this.noUpdateTTL=!!Ee,this.noDeleteOnFetchRejection=!!Ie,this.allowStaleOnFetchRejection=!!tt,this.allowStaleOnFetchAbort=!!Qe,this.ignoreFetchAbort=!!ot,this.maxEntrySize!==0){if(q(this,L)!==0&&!a(q(this,L)))throw new TypeError("maxSize must be a positive integer if specified");if(!a(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Se(this,A,Ud).call(this)}if(this.allowStale=!!w,this.noDeleteOnStaleGet=!!Fe,this.updateAgeOnGet=!!h,this.updateAgeOnHas=!!g,this.ttlResolution=a(te)||te===0?te:1,this.ttlAutopurge=!!d,this.ttl=V||0,this.ttl){if(!a(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Se(this,A,Ja).call(this)}if(q(this,O)===0&&this.ttl===0&&q(this,L)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!q(this,O)&&!q(this,L)){let rt="LRU_CACHE_UNBOUNDED";l(rt)&&(r.add(rt),s("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",rt,N))}}static unsafeExposeInternals(R){return{starts:q(R,ne),ttls:q(R,G),sizes:q(R,le),keyMap:q(R,P),keyList:q(R,j),valList:q(R,D),next:q(R,X),prev:q(R,Z),get head(){return q(R,S)},get tail(){return q(R,z)},free:q(R,ae),isBackgroundFetch:H=>{var V;return Se(V=R,A,He).call(V,H)},backgroundFetch:(H,V,te,d)=>{var h;return Se(h=R,A,Zi).call(h,H,V,te,d)},moveToTail:H=>{var V;return Se(V=R,A,Xn).call(V,H)},indexes:H=>{var V;return Se(V=R,A,Or).call(V,H)},rindexes:H=>{var V;return Se(V=R,A,Cr).call(V,H)},isStale:H=>{var V;return q(V=R,E).call(V,H)}}}get max(){return q(this,O)}get maxSize(){return q(this,L)}get calculatedSize(){return q(this,k)}get size(){return q(this,F)}get fetchMethod(){return q(this,B)}get dispose(){return q(this,C)}get disposeAfter(){return q(this,_)}getRemainingTTL(R){return q(this,P).has(R)?1/0:0}*entries(){for(let R of Se(this,A,Or).call(this))q(this,D)[R]!==void 0&&q(this,j)[R]!==void 0&&!Se(this,A,He).call(this,q(this,D)[R])&&(yield[q(this,j)[R],q(this,D)[R]])}*rentries(){for(let R of Se(this,A,Cr).call(this))q(this,D)[R]!==void 0&&q(this,j)[R]!==void 0&&!Se(this,A,He).call(this,q(this,D)[R])&&(yield[q(this,j)[R],q(this,D)[R]])}*keys(){for(let R of Se(this,A,Or).call(this)){let H=q(this,j)[R];H!==void 0&&!Se(this,A,He).call(this,q(this,D)[R])&&(yield H)}}*rkeys(){for(let R of Se(this,A,Cr).call(this)){let H=q(this,j)[R];H!==void 0&&!Se(this,A,He).call(this,q(this,D)[R])&&(yield H)}}*values(){for(let R of Se(this,A,Or).call(this))q(this,D)[R]!==void 0&&!Se(this,A,He).call(this,q(this,D)[R])&&(yield q(this,D)[R])}*rvalues(){for(let R of Se(this,A,Cr).call(this))q(this,D)[R]!==void 0&&!Se(this,A,He).call(this,q(this,D)[R])&&(yield q(this,D)[R])}[Symbol.iterator](){return this.entries()}find(R,H={}){for(let V of Se(this,A,Or).call(this)){let te=q(this,D)[V],d=Se(this,A,He).call(this,te)?te.__staleWhileFetching:te;if(d!==void 0&&R(d,q(this,j)[V],this))return this.get(q(this,j)[V],H)}}forEach(R,H=this){for(let V of Se(this,A,Or).call(this)){let te=q(this,D)[V],d=Se(this,A,He).call(this,te)?te.__staleWhileFetching:te;d!==void 0&&R.call(H,d,q(this,j)[V],this)}}rforEach(R,H=this){for(let V of Se(this,A,Cr).call(this)){let te=q(this,D)[V],d=Se(this,A,He).call(this,te)?te.__staleWhileFetching:te;d!==void 0&&R.call(H,d,q(this,j)[V],this)}}purgeStale(){let R=!1;for(let H of Se(this,A,Cr).call(this,{allowStale:!0}))q(this,E).call(this,H)&&(this.delete(q(this,j)[H]),R=!0);return R}dump(){let R=[];for(let H of Se(this,A,Or).call(this,{allowStale:!0})){let V=q(this,j)[H],te=q(this,D)[H],d=Se(this,A,He).call(this,te)?te.__staleWhileFetching:te;if(d===void 0||V===void 0)continue;let h={value:d};if(q(this,G)&&q(this,ne)){h.ttl=q(this,G)[H];let g=t.now()-q(this,ne)[H];h.start=Math.floor(Date.now()-g)}q(this,le)&&(h.size=q(this,le)[H]),R.unshift([V,h])}return R}load(R){this.clear();for(let[H,V]of R){if(V.start){let te=Date.now()-V.start;V.start=t.now()-te}this.set(H,V.value,V)}}set(R,H,V={}){var Ee,Ce,xe,_e,Ae;if(H===void 0)return this.delete(R),this;let{ttl:te=this.ttl,start:d,noDisposeOnSet:h=this.noDisposeOnSet,sizeCalculation:g=this.sizeCalculation,status:w}=V,{noUpdateTTL:W=this.noUpdateTTL}=V,Q=q(this,oe).call(this,R,H,V.size||0,g);if(this.maxEntrySize&&Q>this.maxEntrySize)return w&&(w.set="miss",w.maxEntrySizeExceeded=!0),this.delete(R),this;let ue=q(this,F)===0?void 0:q(this,P).get(R);if(ue===void 0)ue=q(this,F)===0?q(this,z):q(this,ae).length!==0?q(this,ae).pop():q(this,F)===q(this,O)?Se(this,A,Xi).call(this,!1):q(this,F),q(this,j)[ue]=R,q(this,D)[ue]=H,q(this,P).set(R,ue),q(this,X)[q(this,z)]=ue,q(this,Z)[ue]=q(this,z),Te(this,z,ue),Ci(this,F)._++,q(this,re).call(this,ue,Q,w),w&&(w.set="add"),W=!1;else{Se(this,A,Xn).call(this,ue);let Ie=q(this,D)[ue];if(H!==Ie){if(q(this,ce)&&Se(this,A,He).call(this,Ie)){Ie.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:Fe}=Ie;Fe!==void 0&&!h&&(q(this,de)&&((Ee=q(this,C))==null||Ee.call(this,Fe,R,"set")),q(this,be)&&((Ce=q(this,ee))==null||Ce.push([Fe,R,"set"])))}else h||(q(this,de)&&((xe=q(this,C))==null||xe.call(this,Ie,R,"set")),q(this,be)&&((_e=q(this,ee))==null||_e.push([Ie,R,"set"])));if(q(this,K).call(this,ue),q(this,re).call(this,ue,Q,w),q(this,D)[ue]=H,w){w.set="replace";let Fe=Ie&&Se(this,A,He).call(this,Ie)?Ie.__staleWhileFetching:Ie;Fe!==void 0&&(w.oldValue=Fe)}}else w&&(w.set="update")}if(te!==0&&!q(this,G)&&Se(this,A,Ja).call(this),q(this,G)&&(W||q(this,fe).call(this,ue,te,d),w&&q(this,we).call(this,w,ue)),!h&&q(this,be)&&q(this,ee)){let Ie=q(this,ee),Fe;for(;Fe=Ie==null?void 0:Ie.shift();)(Ae=q(this,_))==null||Ae.call(this,...Fe)}return this}pop(){var R;try{for(;q(this,F);){let H=q(this,D)[q(this,S)];if(Se(this,A,Xi).call(this,!0),Se(this,A,He).call(this,H)){if(H.__staleWhileFetching)return H.__staleWhileFetching}else if(H!==void 0)return H}}finally{if(q(this,be)&&q(this,ee)){let H=q(this,ee),V;for(;V=H==null?void 0:H.shift();)(R=q(this,_))==null||R.call(this,...V)}}}has(R,H={}){let{updateAgeOnHas:V=this.updateAgeOnHas,status:te}=H,d=q(this,P).get(R);if(d!==void 0){let h=q(this,D)[d];if(Se(this,A,He).call(this,h)&&h.__staleWhileFetching===void 0)return!1;if(q(this,E).call(this,d))te&&(te.has="stale",q(this,we).call(this,te,d));else return V&&q(this,he).call(this,d),te&&(te.has="hit",q(this,we).call(this,te,d)),!0}else te&&(te.has="miss");return!1}peek(R,H={}){let{allowStale:V=this.allowStale}=H,te=q(this,P).get(R);if(te!==void 0&&(V||!q(this,E).call(this,te))){let d=q(this,D)[te];return Se(this,A,He).call(this,d)?d.__staleWhileFetching:d}}async fetch(R,H={}){let{allowStale:V=this.allowStale,updateAgeOnGet:te=this.updateAgeOnGet,noDeleteOnStaleGet:d=this.noDeleteOnStaleGet,ttl:h=this.ttl,noDisposeOnSet:g=this.noDisposeOnSet,size:w=0,sizeCalculation:W=this.sizeCalculation,noUpdateTTL:Q=this.noUpdateTTL,noDeleteOnFetchRejection:ue=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:Ee=this.allowStaleOnFetchRejection,ignoreFetchAbort:Ce=this.ignoreFetchAbort,allowStaleOnFetchAbort:xe=this.allowStaleOnFetchAbort,context:_e,forceRefresh:Ae=!1,status:Ie,signal:Fe}=H;if(!q(this,ce))return Ie&&(Ie.fetch="get"),this.get(R,{allowStale:V,updateAgeOnGet:te,noDeleteOnStaleGet:d,status:Ie});let tt={allowStale:V,updateAgeOnGet:te,noDeleteOnStaleGet:d,ttl:h,noDisposeOnSet:g,size:w,sizeCalculation:W,noUpdateTTL:Q,noDeleteOnFetchRejection:ue,allowStaleOnFetchRejection:Ee,allowStaleOnFetchAbort:xe,ignoreFetchAbort:Ce,status:Ie,signal:Fe},Qe=q(this,P).get(R);if(Qe===void 0){Ie&&(Ie.fetch="miss");let ot=Se(this,A,Zi).call(this,R,Qe,tt,_e);return ot.__returned=ot}else{let ot=q(this,D)[Qe];if(Se(this,A,He).call(this,ot)){let au=V&&ot.__staleWhileFetching!==void 0;return Ie&&(Ie.fetch="inflight",au&&(Ie.returnedStale=!0)),au?ot.__staleWhileFetching:ot.__returned=ot}let ht=q(this,E).call(this,Qe);if(!Ae&&!ht)return Ie&&(Ie.fetch="hit"),Se(this,A,Xn).call(this,Qe),te&&q(this,he).call(this,Qe),Ie&&q(this,we).call(this,Ie,Qe),ot;let rt=Se(this,A,Zi).call(this,R,Qe,tt,_e),su=rt.__staleWhileFetching!==void 0&&V;return Ie&&(Ie.fetch=ht?"stale":"refresh",su&&ht&&(Ie.returnedStale=!0)),su?rt.__staleWhileFetching:rt.__returned=rt}}get(R,H={}){let{allowStale:V=this.allowStale,updateAgeOnGet:te=this.updateAgeOnGet,noDeleteOnStaleGet:d=this.noDeleteOnStaleGet,status:h}=H,g=q(this,P).get(R);if(g!==void 0){let w=q(this,D)[g],W=Se(this,A,He).call(this,w);return h&&q(this,we).call(this,h,g),q(this,E).call(this,g)?(h&&(h.get="stale"),W?(h&&V&&w.__staleWhileFetching!==void 0&&(h.returnedStale=!0),V?w.__staleWhileFetching:void 0):(d||this.delete(R),h&&V&&(h.returnedStale=!0),V?w:void 0)):(h&&(h.get="hit"),W?w.__staleWhileFetching:(Se(this,A,Xn).call(this,g),te&&q(this,he).call(this,g),w))}else h&&(h.get="miss")}delete(R){var V,te,d,h;let H=!1;if(q(this,F)!==0){let g=q(this,P).get(R);if(g!==void 0)if(H=!0,q(this,F)===1)this.clear();else{q(this,K).call(this,g);let w=q(this,D)[g];Se(this,A,He).call(this,w)?w.__abortController.abort(new Error("deleted")):(q(this,de)||q(this,be))&&(q(this,de)&&((V=q(this,C))==null||V.call(this,w,R,"delete")),q(this,be)&&((te=q(this,ee))==null||te.push([w,R,"delete"]))),q(this,P).delete(R),q(this,j)[g]=void 0,q(this,D)[g]=void 0,g===q(this,z)?Te(this,z,q(this,Z)[g]):g===q(this,S)?Te(this,S,q(this,X)[g]):(q(this,X)[q(this,Z)[g]]=q(this,X)[g],q(this,Z)[q(this,X)[g]]=q(this,Z)[g]),Ci(this,F)._--,q(this,ae).push(g)}}if(q(this,be)&&((d=q(this,ee))!=null&&d.length)){let g=q(this,ee),w;for(;w=g==null?void 0:g.shift();)(h=q(this,_))==null||h.call(this,...w)}return H}clear(){var R,H,V;for(let te of Se(this,A,Cr).call(this,{allowStale:!0})){let d=q(this,D)[te];if(Se(this,A,He).call(this,d))d.__abortController.abort(new Error("deleted"));else{let h=q(this,j)[te];q(this,de)&&((R=q(this,C))==null||R.call(this,d,h,"delete")),q(this,be)&&((H=q(this,ee))==null||H.push([d,h,"delete"]))}}if(q(this,P).clear(),q(this,D).fill(void 0),q(this,j).fill(void 0),q(this,G)&&q(this,ne)&&(q(this,G).fill(0),q(this,ne).fill(0)),q(this,le)&&q(this,le).fill(0),Te(this,S,0),Te(this,z,0),q(this,ae).length=0,Te(this,k,0),Te(this,F,0),q(this,be)&&q(this,ee)){let te=q(this,ee),d;for(;d=te==null?void 0:te.shift();)(V=q(this,_))==null||V.call(this,...d)}}},O=new WeakMap,L=new WeakMap,C=new WeakMap,_=new WeakMap,B=new WeakMap,F=new WeakMap,k=new WeakMap,P=new WeakMap,j=new WeakMap,D=new WeakMap,X=new WeakMap,Z=new WeakMap,S=new WeakMap,z=new WeakMap,ae=new WeakMap,ee=new WeakMap,le=new WeakMap,ne=new WeakMap,G=new WeakMap,de=new WeakMap,ce=new WeakMap,be=new WeakMap,A=new WeakSet,Ja=function(){let R=new c(q(this,O)),H=new c(q(this,O));Te(this,G,R),Te(this,ne,H),Te(this,fe,(d,h,g=t.now())=>{if(H[d]=h!==0?g:0,R[d]=h,h!==0&&this.ttlAutopurge){let w=setTimeout(()=>{q(this,E).call(this,d)&&this.delete(q(this,j)[d])},h+1);w.unref&&w.unref()}}),Te(this,he,d=>{H[d]=R[d]!==0?t.now():0}),Te(this,we,(d,h)=>{if(R[h]){let g=R[h],w=H[h];d.ttl=g,d.start=w,d.now=V||te();let W=d.now-w;d.remainingTTL=g-W}});let V=0,te=()=>{let d=t.now();if(this.ttlResolution>0){V=d;let h=setTimeout(()=>V=0,this.ttlResolution);h.unref&&h.unref()}return d};this.getRemainingTTL=d=>{let h=q(this,P).get(d);if(h===void 0)return 0;let g=R[h],w=H[h];if(g===0||w===0)return 1/0;let W=(V||te())-w;return g-W},Te(this,E,d=>R[d]!==0&&H[d]!==0&&(V||te())-H[d]>R[d])},he=new WeakMap,we=new WeakMap,fe=new WeakMap,E=new WeakMap,Ud=function(){let R=new c(q(this,O));Te(this,k,0),Te(this,le,R),Te(this,K,H=>{Te(this,k,q(this,k)-R[H]),R[H]=0}),Te(this,oe,(H,V,te,d)=>{if(Se(this,A,He).call(this,V))return 0;if(!a(te))if(d){if(typeof d!="function")throw new TypeError("sizeCalculation must be a function");if(te=d(V,H),!a(te))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return te}),Te(this,re,(H,V,te)=>{if(R[H]=V,q(this,L)){let d=q(this,L)-R[H];for(;q(this,k)>d;)Se(this,A,Xi).call(this,!0)}Te(this,k,q(this,k)+R[H]),te&&(te.entrySize=V,te.totalCalculatedSize=q(this,k))})},K=new WeakMap,re=new WeakMap,oe=new WeakMap,Or=function*({allowStale:R=this.allowStale}={}){if(q(this,F))for(let H=q(this,z);!(!Se(this,A,Xa).call(this,H)||((R||!q(this,E).call(this,H))&&(yield H),H===q(this,S)));)H=q(this,Z)[H]},Cr=function*({allowStale:R=this.allowStale}={}){if(q(this,F))for(let H=q(this,S);!(!Se(this,A,Xa).call(this,H)||((R||!q(this,E).call(this,H))&&(yield H),H===q(this,z)));)H=q(this,X)[H]},Xa=function(R){return R!==void 0&&q(this,P).get(q(this,j)[R])===R},Xi=function(R){var d,h;let H=q(this,S),V=q(this,j)[H],te=q(this,D)[H];return q(this,ce)&&Se(this,A,He).call(this,te)?te.__abortController.abort(new Error("evicted")):(q(this,de)||q(this,be))&&(q(this,de)&&((d=q(this,C))==null||d.call(this,te,V,"evict")),q(this,be)&&((h=q(this,ee))==null||h.push([te,V,"evict"]))),q(this,K).call(this,H),R&&(q(this,j)[H]=void 0,q(this,D)[H]=void 0,q(this,ae).push(H)),q(this,F)===1?(Te(this,S,Te(this,z,0)),q(this,ae).length=0):Te(this,S,q(this,X)[H]),q(this,P).delete(V),Ci(this,F)._--,H},Zi=function(R,H,V,te){let d=H===void 0?void 0:q(this,D)[H];if(Se(this,A,He).call(this,d))return d;let h=new i,{signal:g}=V;g==null||g.addEventListener("abort",()=>h.abort(g.reason),{signal:h.signal});let w={signal:h.signal,options:V,context:te},W=(_e,Ae=!1)=>{let{aborted:Ie}=h.signal,Fe=V.ignoreFetchAbort&&_e!==void 0;if(V.status&&(Ie&&!Ae?(V.status.fetchAborted=!0,V.status.fetchError=h.signal.reason,Fe&&(V.status.fetchAbortIgnored=!0)):V.status.fetchResolved=!0),Ie&&!Fe&&!Ae)return ue(h.signal.reason);let tt=Ce;return q(this,D)[H]===Ce&&(_e===void 0?tt.__staleWhileFetching?q(this,D)[H]=tt.__staleWhileFetching:this.delete(R):(V.status&&(V.status.fetchUpdated=!0),this.set(R,_e,w.options))),_e},Q=_e=>(V.status&&(V.status.fetchRejected=!0,V.status.fetchError=_e),ue(_e)),ue=_e=>{let{aborted:Ae}=h.signal,Ie=Ae&&V.allowStaleOnFetchAbort,Fe=Ie||V.allowStaleOnFetchRejection,tt=Fe||V.noDeleteOnFetchRejection,Qe=Ce;if(q(this,D)[H]===Ce&&(!tt||Qe.__staleWhileFetching===void 0?this.delete(R):Ie||(q(this,D)[H]=Qe.__staleWhileFetching)),Fe)return V.status&&Qe.__staleWhileFetching!==void 0&&(V.status.returnedStale=!0),Qe.__staleWhileFetching;if(Qe.__returned===Qe)throw _e},Ee=(_e,Ae)=>{var Fe;let Ie=(Fe=q(this,B))==null?void 0:Fe.call(this,R,d,w);Ie&&Ie instanceof Promise&&Ie.then(tt=>_e(tt===void 0?void 0:tt),Ae),h.signal.addEventListener("abort",()=>{(!V.ignoreFetchAbort||V.allowStaleOnFetchAbort)&&(_e(void 0),V.allowStaleOnFetchAbort&&(_e=tt=>W(tt,!0)))})};V.status&&(V.status.fetchDispatched=!0);let Ce=new Promise(Ee).then(W,Q),xe=Object.assign(Ce,{__abortController:h,__staleWhileFetching:d,__returned:void 0});return H===void 0?(this.set(R,xe,{...w.options,status:void 0}),H=q(this,P).get(R)):q(this,D)[H]=xe,xe},He=function(R){if(!q(this,ce))return!1;let H=R;return!!H&&H instanceof Promise&&H.hasOwnProperty("__staleWhileFetching")&&H.__abortController instanceof i},Za=function(R,H){q(this,Z)[H]=R,q(this,X)[R]=H},Xn=function(R){R!==q(this,z)&&(R===q(this,S)?Te(this,S,q(this,X)[R]):Se(this,A,Za).call(this,q(this,Z)[R],q(this,X)[R]),Se(this,A,Za).call(this,q(this,z),R),Te(this,z,R))},N);e.LRUCache=p}),vr=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.ContainerIterator=e.Container=e.Base=void 0;var t=class{constructor(s=0){this.iteratorType=s}equals(s){return this.o===s.o}};e.ContainerIterator=t;var r=class{constructor(){this.i=0}get length(){return this.i}size(){return this.i}empty(){return this.i===0}};e.Base=r;var n=class extends r{};e.Container=n}),L0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=vr(),r=class extends t.Base{constructor(s=[]){super(),this.S=[];let i=this;s.forEach(function(o){i.push(o)})}clear(){this.i=0,this.S=[]}push(s){return this.S.push(s),this.i+=1,this.i}pop(){if(this.i!==0)return this.i-=1,this.S.pop()}top(){return this.S[this.i-1]}},n=r;e.default=n}),N0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=vr(),r=class extends t.Base{constructor(s=[]){super(),this.j=0,this.q=[];let i=this;s.forEach(function(o){i.push(o)})}clear(){this.q=[],this.i=this.j=0}push(s){let i=this.q.length;if(this.j/i>.5&&this.j+this.i>=i&&i>4096){let o=this.i;for(let l=0;l<o;++l)this.q[l]=this.q[this.j+l];this.j=0,this.q[this.i]=s}else this.q[this.j+this.i]=s;return++this.i}pop(){if(this.i===0)return;let s=this.q[this.j++];return this.i-=1,s}front(){if(this.i!==0)return this.q[this.j]}},n=r;e.default=n}),j0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=vr(),r=class extends t.Base{constructor(s=[],i=function(l,a){return l>a?-1:l<a?1:0},o=!0){if(super(),this.v=i,Array.isArray(s))this.C=o?[...s]:s;else{this.C=[];let a=this;s.forEach(function(u){a.C.push(u)})}this.i=this.C.length;let l=this.i>>1;for(let a=this.i-1>>1;a>=0;--a)this.k(a,l)}m(s){let i=this.C[s];for(;s>0;){let o=s-1>>1,l=this.C[o];if(this.v(l,i)<=0)break;this.C[s]=l,s=o}this.C[s]=i}k(s,i){let o=this.C[s];for(;s<i;){let l=s<<1|1,a=l+1,u=this.C[l];if(a<this.i&&this.v(u,this.C[a])>0&&(l=a,u=this.C[a]),this.v(u,o)>=0)break;this.C[s]=u,s=l}this.C[s]=o}clear(){this.i=0,this.C.length=0}push(s){this.C.push(s),this.m(this.i),this.i+=1}pop(){if(this.i===0)return;let s=this.C[0],i=this.C.pop();return this.i-=1,this.i&&(this.C[0]=i,this.k(0,this.i>>1)),s}top(){return this.C[0]}find(s){return this.C.indexOf(s)>=0}remove(s){let i=this.C.indexOf(s);return i<0?!1:(i===0?this.pop():i===this.i-1?(this.C.pop(),this.i-=1):(this.C.splice(i,1,this.C.pop()),this.i-=1,this.m(i),this.k(i,this.i>>1)),!0)}updateItem(s){let i=this.C.indexOf(s);return i<0?!1:(this.m(i),this.k(i,this.i>>1),!0)}toArray(){return[...this.C]}},n=r;e.default=n}),Ql=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=vr(),r=class extends t.Container{},n=r;e.default=n}),wr=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.throwIteratorAccessError=t;function t(){throw new RangeError("Iterator access denied!")}}),Dd=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.RandomIterator=void 0;var t=vr(),r=wr(),n=class extends t.ContainerIterator{constructor(s,i){super(i),this.o=s,this.iteratorType===0?(this.pre=function(){return this.o===0&&(0,r.throwIteratorAccessError)(),this.o-=1,this},this.next=function(){return this.o===this.container.size()&&(0,r.throwIteratorAccessError)(),this.o+=1,this}):(this.pre=function(){return this.o===this.container.size()-1&&(0,r.throwIteratorAccessError)(),this.o+=1,this},this.next=function(){return this.o===-1&&(0,r.throwIteratorAccessError)(),this.o-=1,this})}get pointer(){return this.container.getElementByPos(this.o)}set pointer(s){this.container.setElementByPos(this.o,s)}};e.RandomIterator=n}),U0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(Ql()),r=Dd();function n(l){return l&&l.t?l:{default:l}}var s=class Fd extends r.RandomIterator{constructor(a,u,c){super(a,c),this.container=u}copy(){return new Fd(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(l=[],a=!0){if(super(),Array.isArray(l))this.J=a?[...l]:l,this.i=l.length;else{this.J=[];let u=this;l.forEach(function(c){u.pushBack(c)})}}clear(){this.i=0,this.J.length=0}begin(){return new s(0,this)}end(){return new s(this.i,this)}rBegin(){return new s(this.i-1,this,1)}rEnd(){return new s(-1,this,1)}front(){return this.J[0]}back(){return this.J[this.i-1]}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;return this.J[l]}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;return this.J.splice(l,1),this.i-=1,this.i}eraseElementByValue(l){let a=0;for(let u=0;u<this.i;++u)this.J[u]!==l&&(this.J[a++]=this.J[u]);return this.i=this.J.length=a,this.i}eraseElementByIterator(l){let a=l.o;return l=l.next(),this.eraseElementByPos(a),l}pushBack(l){return this.J.push(l),this.i+=1,this.i}popBack(){if(this.i!==0)return this.i-=1,this.J.pop()}setElementByPos(l,a){if(l<0||l>this.i-1)throw new RangeError;this.J[l]=a}insert(l,a,u=1){if(l<0||l>this.i)throw new RangeError;return this.J.splice(l,0,...new Array(u).fill(a)),this.i+=u,this.i}find(l){for(let a=0;a<this.i;++a)if(this.J[a]===l)return new s(a,this);return this.end()}reverse(){this.J.reverse()}unique(){let l=1;for(let a=1;a<this.i;++a)this.J[a]!==this.J[a-1]&&(this.J[l++]=this.J[a]);return this.i=this.J.length=l,this.i}sort(l){this.J.sort(l)}forEach(l){for(let a=0;a<this.i;++a)l(this.J[a],a,this)}[Symbol.iterator](){return(function*(){yield*this.J}).bind(this)()}},o=i;e.default=o}),D0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=s(Ql()),r=vr(),n=wr();function s(a){return a&&a.t?a:{default:a}}var i=class Wd extends r.ContainerIterator{constructor(u,c,f,p){super(p),this.o=u,this.h=c,this.container=f,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l}set pointer(u){this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l=u}copy(){return new Wd(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.default{constructor(a=[]){super(),this.h={},this.p=this._=this.h.L=this.h.B=this.h;let u=this;a.forEach(function(c){u.pushBack(c)})}V(a){let{L:u,B:c}=a;u.B=c,c.L=u,a===this.p&&(this.p=c),a===this._&&(this._=u),this.i-=1}G(a,u){let c=u.B,f={l:a,L:u,B:c};u.B=f,c.L=f,u===this.h&&(this.p=f),c===this.h&&(this._=f),this.i+=1}clear(){this.i=0,this.p=this._=this.h.L=this.h.B=this.h}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.p.l}back(){return this._.l}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let u=this.p;for(;a--;)u=u.B;return u.l}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let u=this.p;for(;a--;)u=u.B;return this.V(u),this.i}eraseElementByValue(a){let u=this.p;for(;u!==this.h;)u.l===a&&this.V(u),u=u.B;return this.i}eraseElementByIterator(a){let u=a.o;return u===this.h&&(0,n.throwIteratorAccessError)(),a=a.next(),this.V(u),a}pushBack(a){return this.G(a,this._),this.i}popBack(){if(this.i===0)return;let a=this._.l;return this.V(this._),a}pushFront(a){return this.G(a,this.h),this.i}popFront(){if(this.i===0)return;let a=this.p.l;return this.V(this.p),a}setElementByPos(a,u){if(a<0||a>this.i-1)throw new RangeError;let c=this.p;for(;a--;)c=c.B;c.l=u}insert(a,u,c=1){if(a<0||a>this.i)throw new RangeError;if(c<=0)return this.i;if(a===0)for(;c--;)this.pushFront(u);else if(a===this.i)for(;c--;)this.pushBack(u);else{let f=this.p;for(let m=1;m<a;++m)f=f.B;let p=f.B;for(this.i+=c;c--;)f.B={l:u,L:f},f.B.L=f,f=f.B;f.B=p,p.L=f}return this.i}find(a){let u=this.p;for(;u!==this.h;){if(u.l===a)return new i(u,this.h,this);u=u.B}return this.end()}reverse(){if(this.i<=1)return;let a=this.p,u=this._,c=0;for(;c<<1<this.i;){let f=a.l;a.l=u.l,u.l=f,a=a.B,u=u.L,c+=1}}unique(){if(this.i<=1)return this.i;let a=this.p;for(;a!==this.h;){let u=a;for(;u.B!==this.h&&u.l===u.B.l;)u=u.B,this.i-=1;a.B=u.B,a.B.L=a,a=a.B}return this.i}sort(a){if(this.i<=1)return;let u=[];this.forEach(function(f){u.push(f)}),u.sort(a);let c=this.p;u.forEach(function(f){c.l=f,c=c.B})}merge(a){let u=this;if(this.i===0)a.forEach(function(c){u.pushBack(c)});else{let c=this.p;a.forEach(function(f){for(;c!==u.h&&c.l<=f;)c=c.B;u.G(f,c.L)})}return this.i}forEach(a){let u=this.p,c=0;for(;u!==this.h;)a(u.l,c++,this),u=u.B}[Symbol.iterator](){return(function*(){if(this.i===0)return;let a=this.p;for(;a!==this.h;)yield a.l,a=a.B}).bind(this)()}},l=o;e.default=l}),F0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(Ql()),r=Dd();function n(l){return l&&l.t?l:{default:l}}var s=class $d extends r.RandomIterator{constructor(a,u,c){super(a,c),this.container=u}copy(){return new $d(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(l=[],a=4096){super(),this.j=0,this.D=0,this.R=0,this.N=0,this.P=0,this.A=[];let u=(()=>{if(typeof l.length=="number")return l.length;if(typeof l.size=="number")return l.size;if(typeof l.size=="function")return l.size();throw new TypeError("Cannot get the length or size of the container")})();this.F=a,this.P=Math.max(Math.ceil(u/this.F),1);for(let p=0;p<this.P;++p)this.A.push(new Array(this.F));let c=Math.ceil(u/this.F);this.j=this.R=(this.P>>1)-(c>>1),this.D=this.N=this.F-u%this.F>>1;let f=this;l.forEach(function(p){f.pushBack(p)})}T(){let l=[],a=Math.max(this.P>>1,1);for(let u=0;u<a;++u)l[u]=new Array(this.F);for(let u=this.j;u<this.P;++u)l[l.length]=this.A[u];for(let u=0;u<this.R;++u)l[l.length]=this.A[u];l[l.length]=[...this.A[this.R]],this.j=a,this.R=l.length-1;for(let u=0;u<a;++u)l[l.length]=new Array(this.F);this.A=l,this.P=l.length}O(l){let a=this.D+l+1,u=a%this.F,c=u-1,f=this.j+(a-u)/this.F;return u===0&&(f-=1),f%=this.P,c<0&&(c+=this.F),{curNodeBucketIndex:f,curNodePointerIndex:c}}clear(){this.A=[new Array(this.F)],this.P=1,this.j=this.R=this.i=0,this.D=this.N=this.F>>1}begin(){return new s(0,this)}end(){return new s(this.i,this)}rBegin(){return new s(this.i-1,this,1)}rEnd(){return new s(-1,this,1)}front(){if(this.i!==0)return this.A[this.j][this.D]}back(){if(this.i!==0)return this.A[this.R][this.N]}pushBack(l){return this.i&&(this.N<this.F-1?this.N+=1:this.R<this.P-1?(this.R+=1,this.N=0):(this.R=0,this.N=0),this.R===this.j&&this.N===this.D&&this.T()),this.i+=1,this.A[this.R][this.N]=l,this.i}popBack(){if(this.i===0)return;let l=this.A[this.R][this.N];return this.i!==1&&(this.N>0?this.N-=1:this.R>0?(this.R-=1,this.N=this.F-1):(this.R=this.P-1,this.N=this.F-1)),this.i-=1,l}pushFront(l){return this.i&&(this.D>0?this.D-=1:this.j>0?(this.j-=1,this.D=this.F-1):(this.j=this.P-1,this.D=this.F-1),this.j===this.R&&this.D===this.N&&this.T()),this.i+=1,this.A[this.j][this.D]=l,this.i}popFront(){if(this.i===0)return;let l=this.A[this.j][this.D];return this.i!==1&&(this.D<this.F-1?this.D+=1:this.j<this.P-1?(this.j+=1,this.D=0):(this.j=0,this.D=0)),this.i-=1,l}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let{curNodeBucketIndex:a,curNodePointerIndex:u}=this.O(l);return this.A[a][u]}setElementByPos(l,a){if(l<0||l>this.i-1)throw new RangeError;let{curNodeBucketIndex:u,curNodePointerIndex:c}=this.O(l);this.A[u][c]=a}insert(l,a,u=1){if(l<0||l>this.i)throw new RangeError;if(l===0)for(;u--;)this.pushFront(a);else if(l===this.i)for(;u--;)this.pushBack(a);else{let c=[];for(let f=l;f<this.i;++f)c.push(this.getElementByPos(f));this.cut(l-1);for(let f=0;f<u;++f)this.pushBack(a);for(let f=0;f<c.length;++f)this.pushBack(c[f])}return this.i}cut(l){if(l<0)return this.clear(),0;let{curNodeBucketIndex:a,curNodePointerIndex:u}=this.O(l);return this.R=a,this.N=u,this.i=l+1,this.i}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;if(l===0)this.popFront();else if(l===this.i-1)this.popBack();else{let a=[];for(let c=l+1;c<this.i;++c)a.push(this.getElementByPos(c));this.cut(l),this.popBack();let u=this;a.forEach(function(c){u.pushBack(c)})}return this.i}eraseElementByValue(l){if(this.i===0)return 0;let a=[];for(let c=0;c<this.i;++c){let f=this.getElementByPos(c);f!==l&&a.push(f)}let u=a.length;for(let c=0;c<u;++c)this.setElementByPos(c,a[c]);return this.cut(u-1)}eraseElementByIterator(l){let a=l.o;return this.eraseElementByPos(a),l=l.next(),l}find(l){for(let a=0;a<this.i;++a)if(this.getElementByPos(a)===l)return new s(a,this);return this.end()}reverse(){let l=0,a=this.i-1;for(;l<a;){let u=this.getElementByPos(l);this.setElementByPos(l,this.getElementByPos(a)),this.setElementByPos(a,u),l+=1,a-=1}}unique(){if(this.i<=1)return this.i;let l=1,a=this.getElementByPos(0);for(let u=1;u<this.i;++u){let c=this.getElementByPos(u);c!==a&&(a=c,this.setElementByPos(l++,c))}for(;this.i>l;)this.popBack();return this.i}sort(l){let a=[];for(let u=0;u<this.i;++u)a.push(this.getElementByPos(u));a.sort(l);for(let u=0;u<this.i;++u)this.setElementByPos(u,a[u])}shrinkToFit(){if(this.i===0)return;let l=[];this.forEach(function(a){l.push(a)}),this.P=Math.max(Math.ceil(this.i/this.F),1),this.i=this.j=this.R=this.D=this.N=0,this.A=[];for(let a=0;a<this.P;++a)this.A.push(new Array(this.F));for(let a=0;a<l.length;++a)this.pushBack(l[a])}forEach(l){for(let a=0;a<this.i;++a)l(this.getElementByPos(a),a,this)}[Symbol.iterator](){return(function*(){for(let l=0;l<this.i;++l)yield this.getElementByPos(l)}).bind(this)()}},o=i;e.default=o}),W0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.TreeNodeEnableIndex=e.TreeNode=void 0;var t=class{constructor(n,s){this.ee=1,this.u=void 0,this.l=void 0,this.U=void 0,this.W=void 0,this.tt=void 0,this.u=n,this.l=s}L(){let n=this;if(n.ee===1&&n.tt.tt===n)n=n.W;else if(n.U)for(n=n.U;n.W;)n=n.W;else{let s=n.tt;for(;s.U===n;)n=s,s=n.tt;n=s}return n}B(){let n=this;if(n.W){for(n=n.W;n.U;)n=n.U;return n}else{let s=n.tt;for(;s.W===n;)n=s,s=n.tt;return n.W!==s?s:n}}te(){let n=this.tt,s=this.W,i=s.U;return n.tt===this?n.tt=s:n.U===this?n.U=s:n.W=s,s.tt=n,s.U=this,this.tt=s,this.W=i,i&&(i.tt=this),s}se(){let n=this.tt,s=this.U,i=s.W;return n.tt===this?n.tt=s:n.U===this?n.U=s:n.W=s,s.tt=n,s.W=this,this.tt=s,this.U=i,i&&(i.tt=this),s}};e.TreeNode=t;var r=class extends t{constructor(){super(...arguments),this.rt=1}te(){let n=super.te();return this.ie(),n.ie(),n}se(){let n=super.se();return this.ie(),n.ie(),n}ie(){this.rt=1,this.U&&(this.rt+=this.U.rt),this.W&&(this.rt+=this.W.rt)}};e.TreeNodeEnableIndex=r}),Hd=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=W0(),r=vr(),n=wr(),s=class extends r.Container{constructor(o=function(a,u){return a<u?-1:a>u?1:0},l=!1){super(),this.Y=void 0,this.v=o,l?(this.re=t.TreeNodeEnableIndex,this.M=function(a,u,c){let f=this.ne(a,u,c);if(f){let p=f.tt;for(;p!==this.h;)p.rt+=1,p=p.tt;let m=this.he(f);if(m){let{parentNode:y,grandParent:b,curNode:O}=m;y.ie(),b.ie(),O.ie()}}return this.i},this.V=function(a){let u=this.fe(a);for(;u!==this.h;)u.rt-=1,u=u.tt}):(this.re=t.TreeNode,this.M=function(a,u,c){let f=this.ne(a,u,c);return f&&this.he(f),this.i},this.V=this.fe),this.h=new this.re}X(o,l){let a=this.h;for(;o;){let u=this.v(o.u,l);if(u<0)o=o.W;else if(u>0)a=o,o=o.U;else return o}return a}Z(o,l){let a=this.h;for(;o;)this.v(o.u,l)<=0?o=o.W:(a=o,o=o.U);return a}$(o,l){let a=this.h;for(;o;){let u=this.v(o.u,l);if(u<0)a=o,o=o.W;else if(u>0)o=o.U;else return o}return a}rr(o,l){let a=this.h;for(;o;)this.v(o.u,l)<0?(a=o,o=o.W):o=o.U;return a}ue(o){for(;;){let l=o.tt;if(l===this.h)return;if(o.ee===1){o.ee=0;return}if(o===l.U){let a=l.W;if(a.ee===1)a.ee=0,l.ee=1,l===this.Y?this.Y=l.te():l.te();else if(a.W&&a.W.ee===1){a.ee=l.ee,l.ee=0,a.W.ee=0,l===this.Y?this.Y=l.te():l.te();return}else a.U&&a.U.ee===1?(a.ee=1,a.U.ee=0,a.se()):(a.ee=1,o=l)}else{let a=l.U;if(a.ee===1)a.ee=0,l.ee=1,l===this.Y?this.Y=l.se():l.se();else if(a.U&&a.U.ee===1){a.ee=l.ee,l.ee=0,a.U.ee=0,l===this.Y?this.Y=l.se():l.se();return}else a.W&&a.W.ee===1?(a.ee=1,a.W.ee=0,a.te()):(a.ee=1,o=l)}}}fe(o){if(this.i===1)return this.clear(),this.h;let l=o;for(;l.U||l.W;){if(l.W)for(l=l.W;l.U;)l=l.U;else l=l.U;[o.u,l.u]=[l.u,o.u],[o.l,l.l]=[l.l,o.l],o=l}this.h.U===l?this.h.U=l.tt:this.h.W===l&&(this.h.W=l.tt),this.ue(l);let a=l.tt;return l===a.U?a.U=void 0:a.W=void 0,this.i-=1,this.Y.ee=0,a}oe(o,l){return o===void 0?!1:this.oe(o.U,l)||l(o)?!0:this.oe(o.W,l)}he(o){for(;;){let l=o.tt;if(l.ee===0)return;let a=l.tt;if(l===a.U){let u=a.W;if(u&&u.ee===1){if(u.ee=l.ee=0,a===this.Y)return;a.ee=1,o=a;continue}else if(o===l.W){if(o.ee=0,o.U&&(o.U.tt=l),o.W&&(o.W.tt=a),l.W=o.U,a.U=o.W,o.U=l,o.W=a,a===this.Y)this.Y=o,this.h.tt=o;else{let c=a.tt;c.U===a?c.U=o:c.W=o}return o.tt=a.tt,l.tt=o,a.tt=o,a.ee=1,{parentNode:l,grandParent:a,curNode:o}}else l.ee=0,a===this.Y?this.Y=a.se():a.se(),a.ee=1}else{let u=a.U;if(u&&u.ee===1){if(u.ee=l.ee=0,a===this.Y)return;a.ee=1,o=a;continue}else if(o===l.U){if(o.ee=0,o.U&&(o.U.tt=a),o.W&&(o.W.tt=l),a.W=o.U,l.U=o.W,o.U=a,o.W=l,a===this.Y)this.Y=o,this.h.tt=o;else{let c=a.tt;c.U===a?c.U=o:c.W=o}return o.tt=a.tt,l.tt=o,a.tt=o,a.ee=1,{parentNode:l,grandParent:a,curNode:o}}else l.ee=0,a===this.Y?this.Y=a.te():a.te(),a.ee=1}return}}ne(o,l,a){if(this.Y===void 0){this.i+=1,this.Y=new this.re(o,l),this.Y.ee=0,this.Y.tt=this.h,this.h.tt=this.Y,this.h.U=this.Y,this.h.W=this.Y;return}let u,c=this.h.U,f=this.v(c.u,o);if(f===0){c.l=l;return}else if(f>0)c.U=new this.re(o,l),c.U.tt=c,u=c.U,this.h.U=u;else{let p=this.h.W,m=this.v(p.u,o);if(m===0){p.l=l;return}else if(m<0)p.W=new this.re(o,l),p.W.tt=p,u=p.W,this.h.W=u;else{if(a!==void 0){let y=a.o;if(y!==this.h){let b=this.v(y.u,o);if(b===0){y.l=l;return}else if(b>0){let O=y.L(),L=this.v(O.u,o);if(L===0){O.l=l;return}else L<0&&(u=new this.re(o,l),O.W===void 0?(O.W=u,u.tt=O):(y.U=u,u.tt=y))}}}if(u===void 0)for(u=this.Y;;){let y=this.v(u.u,o);if(y>0){if(u.U===void 0){u.U=new this.re(o,l),u.U.tt=u,u=u.U;break}u=u.U}else if(y<0){if(u.W===void 0){u.W=new this.re(o,l),u.W.tt=u,u=u.W;break}u=u.W}else{u.l=l;return}}}}return this.i+=1,u}I(o,l){for(;o;){let a=this.v(o.u,l);if(a<0)o=o.W;else if(a>0)o=o.U;else return o}return o||this.h}clear(){this.i=0,this.Y=void 0,this.h.tt=void 0,this.h.U=this.h.W=void 0}updateKeyByIterator(o,l){let a=o.o;if(a===this.h&&(0,n.throwIteratorAccessError)(),this.i===1)return a.u=l,!0;if(a===this.h.U)return this.v(a.B().u,l)>0?(a.u=l,!0):!1;if(a===this.h.W)return this.v(a.L().u,l)<0?(a.u=l,!0):!1;let u=a.L().u;if(this.v(u,l)>=0)return!1;let c=a.B().u;return this.v(c,l)<=0?!1:(a.u=l,!0)}eraseElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let l=0,a=this;return this.oe(this.Y,function(u){return o===l?(a.V(u),!0):(l+=1,!1)}),this.i}eraseElementByKey(o){if(this.i===0)return!1;let l=this.I(this.Y,o);return l===this.h?!1:(this.V(l),!0)}eraseElementByIterator(o){let l=o.o;l===this.h&&(0,n.throwIteratorAccessError)();let a=l.W===void 0;return o.iteratorType===0?a&&o.next():(!a||l.U===void 0)&&o.next(),this.V(l),o}forEach(o){let l=0;for(let a of this)o(a,l++,this)}getElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let l,a=0;for(let u of this){if(a===o){l=u;break}a+=1}return l}getHeight(){if(this.i===0)return 0;let o=function(l){return l?Math.max(o(l.U),o(l.W))+1:0};return o(this.Y)}},i=s;e.default=i}),Vd=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=vr(),r=wr(),n=class extends t.ContainerIterator{constructor(i,o,l){super(l),this.o=i,this.h=o,this.iteratorType===0?(this.pre=function(){return this.o===this.h.U&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this}):(this.pre=function(){return this.o===this.h.W&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this})}get index(){let i=this.o,o=this.h.tt;if(i===this.h)return o?o.rt-1:0;let l=0;for(i.U&&(l+=i.U.rt);i!==o;){let a=i.tt;i===a.W&&(l+=1,a.U&&(l+=a.U.rt)),i=a}return l}},s=n;e.default=s}),$0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=s(Hd()),r=s(Vd()),n=wr();function s(a){return a&&a.t?a:{default:a}}var i=class qd extends r.default{constructor(u,c,f,p){super(u,c,p),this.container=f}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.u}copy(){return new qd(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.default{constructor(a=[],u,c){super(u,c);let f=this;a.forEach(function(p){f.insert(p)})}*K(a){a!==void 0&&(yield*this.K(a.U),yield a.u,yield*this.K(a.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.h.U?this.h.U.u:void 0}back(){return this.h.W?this.h.W.u:void 0}insert(a,u){return this.M(a,void 0,u)}find(a){let u=this.I(this.Y,a);return new i(u,this.h,this)}lowerBound(a){let u=this.X(this.Y,a);return new i(u,this.h,this)}upperBound(a){let u=this.Z(this.Y,a);return new i(u,this.h,this)}reverseLowerBound(a){let u=this.$(this.Y,a);return new i(u,this.h,this)}reverseUpperBound(a){let u=this.rr(this.Y,a);return new i(u,this.h,this)}union(a){let u=this;return a.forEach(function(c){u.insert(c)}),this.i}[Symbol.iterator](){return this.K(this.Y)}},l=o;e.default=l}),H0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=s(Hd()),r=s(Vd()),n=wr();function s(a){return a&&a.t?a:{default:a}}var i=class Kd extends r.default{constructor(u,c,f,p){super(u,c,p),this.container=f}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,f){if(f==="0")return u.o.u;if(f==="1")return u.o.l},set(c,f,p){if(f!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new Kd(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.default{constructor(a=[],u,c){super(u,c);let f=this;a.forEach(function(p){f.setElement(p[0],p[1])})}*K(a){a!==void 0&&(yield*this.K(a.U),yield[a.u,a.l],yield*this.K(a.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i===0)return;let a=this.h.U;return[a.u,a.l]}back(){if(this.i===0)return;let a=this.h.W;return[a.u,a.l]}lowerBound(a){let u=this.X(this.Y,a);return new i(u,this.h,this)}upperBound(a){let u=this.Z(this.Y,a);return new i(u,this.h,this)}reverseLowerBound(a){let u=this.$(this.Y,a);return new i(u,this.h,this)}reverseUpperBound(a){let u=this.rr(this.Y,a);return new i(u,this.h,this)}setElement(a,u,c){return this.M(a,u,c)}find(a){let u=this.I(this.Y,a);return new i(u,this.h,this)}getElementByKey(a){return this.I(this.Y,a).l}union(a){let u=this;return a.forEach(function(c){u.setElement(c[0],c[1])}),this.i}[Symbol.iterator](){return this.K(this.Y)}},l=o;e.default=l}),zd=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=t;function t(r){let n=typeof r;return n==="object"&&r!==null||n==="function"}}),Yd=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.HashContainerIterator=e.HashContainer=void 0;var t=vr(),r=s(zd()),n=wr();function s(l){return l&&l.t?l:{default:l}}var i=class extends t.ContainerIterator{constructor(l,a,u){super(u),this.o=l,this.h=a,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}};e.HashContainerIterator=i;var o=class extends t.Container{constructor(){super(),this.H=[],this.g={},this.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(this.g,null),this.h={},this.h.L=this.h.B=this.p=this._=this.h}V(l){let{L:a,B:u}=l;a.B=u,u.L=a,l===this.p&&(this.p=u),l===this._&&(this._=a),this.i-=1}M(l,a,u){u===void 0&&(u=(0,r.default)(l));let c;if(u){let f=l[this.HASH_TAG];if(f!==void 0)return this.H[f].l=a,this.i;Object.defineProperty(l,this.HASH_TAG,{value:this.H.length,configurable:!0}),c={u:l,l:a,L:this._,B:this.h},this.H.push(c)}else{let f=this.g[l];if(f)return f.l=a,this.i;c={u:l,l:a,L:this._,B:this.h},this.g[l]=c}return this.i===0?(this.p=c,this.h.B=c):this._.B=c,this._=c,this.h.L=c,++this.i}I(l,a){if(a===void 0&&(a=(0,r.default)(l)),a){let u=l[this.HASH_TAG];return u===void 0?this.h:this.H[u]}else return this.g[l]||this.h}clear(){let l=this.HASH_TAG;this.H.forEach(function(a){delete a.u[l]}),this.H=[],this.g={},Object.setPrototypeOf(this.g,null),this.i=0,this.p=this._=this.h.L=this.h.B=this.h}eraseElementByKey(l,a){let u;if(a===void 0&&(a=(0,r.default)(l)),a){let c=l[this.HASH_TAG];if(c===void 0)return!1;delete l[this.HASH_TAG],u=this.H[c],delete this.H[c]}else{if(u=this.g[l],u===void 0)return!1;delete this.g[l]}return this.V(u),!0}eraseElementByIterator(l){let a=l.o;return a===this.h&&(0,n.throwIteratorAccessError)(),this.V(a),l.next()}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let a=this.p;for(;l--;)a=a.B;return this.V(a),this.i}};e.HashContainer=o}),V0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Yd(),r=wr(),n=class Gd extends t.HashContainerIterator{constructor(l,a,u,c){super(l,a,c),this.container=u}get pointer(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o.u}copy(){return new Gd(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.HashContainer{constructor(o=[]){super();let l=this;o.forEach(function(a){l.insert(a)})}begin(){return new n(this.p,this.h,this)}end(){return new n(this.h,this.h,this)}rBegin(){return new n(this._,this.h,this,1)}rEnd(){return new n(this.h,this.h,this,1)}front(){return this.p.u}back(){return this._.u}insert(o,l){return this.M(o,void 0,l)}getElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let l=this.p;for(;o--;)l=l.B;return l.u}find(o,l){let a=this.I(o,l);return new n(a,this.h,this)}forEach(o){let l=0,a=this.p;for(;a!==this.h;)o(a.u,l++,this),a=a.B}[Symbol.iterator](){return(function*(){let o=this.p;for(;o!==this.h;)yield o.u,o=o.B}).bind(this)()}},i=s;e.default=i}),q0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Yd(),r=s(zd()),n=wr();function s(a){return a&&a.t?a:{default:a}}var i=class Qd extends t.HashContainerIterator{constructor(u,c,f,p){super(u,c,p),this.container=f}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,f){if(f==="0")return u.o.u;if(f==="1")return u.o.l},set(c,f,p){if(f!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new Qd(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.HashContainer{constructor(a=[]){super();let u=this;a.forEach(function(c){u.setElement(c[0],c[1])})}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i!==0)return[this.p.u,this.p.l]}back(){if(this.i!==0)return[this._.u,this._.l]}setElement(a,u,c){return this.M(a,u,c)}getElementByKey(a,u){if(u===void 0&&(u=(0,r.default)(a)),u){let f=a[this.HASH_TAG];return f!==void 0?this.H[f].l:void 0}let c=this.g[a];return c?c.l:void 0}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let u=this.p;for(;a--;)u=u.B;return[u.u,u.l]}find(a,u){let c=this.I(a,u);return new i(c,this.h,this)}forEach(a){let u=0,c=this.p;for(;c!==this.h;)a([c.u,c.l],u++,this),c=c.B}[Symbol.iterator](){return(function*(){let a=this.p;for(;a!==this.h;)yield[a.u,a.l],a=a.B}).bind(this)()}},l=o;e.default=l}),K0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),Object.defineProperty(e,"Deque",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(e,"HashMap",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"HashSet",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"LinkList",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"OrderedMap",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"OrderedSet",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"PriorityQueue",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"Queue",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"Stack",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"Vector",{enumerable:!0,get:function(){return s.default}});var t=f(L0()),r=f(N0()),n=f(j0()),s=f(U0()),i=f(D0()),o=f(F0()),l=f($0()),a=f(H0()),u=f(V0()),c=f(q0());function f(p){return p&&p.t?p:{default:p}}}),z0=ve((e,t)=>{pe(),me(),ge();var r=K0().OrderedSet,n=gr()("number-allocator:trace"),s=gr()("number-allocator:error");function i(l,a){this.low=l,this.high=a}i.prototype.equals=function(l){return this.low===l.low&&this.high===l.high},i.prototype.compare=function(l){return this.low<l.low&&this.high<l.low?-1:l.low<this.low&&l.high<this.low?1:0};function o(l,a){if(!(this instanceof o))return new o(l,a);this.min=l,this.max=a,this.ss=new r([],(u,c)=>u.compare(c)),n("Create"),this.clear()}o.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low},o.prototype.alloc=function(){if(this.ss.size()===0)return n("alloc():empty"),null;let l=this.ss.begin(),a=l.pointer.low,u=l.pointer.high,c=a;return c+1<=u?this.ss.updateKeyByIterator(l,new i(a+1,u)):this.ss.eraseElementByPos(0),n("alloc():"+c),c},o.prototype.use=function(l){let a=new i(l,l),u=this.ss.lowerBound(a);if(!u.equals(this.ss.end())){let c=u.pointer.low,f=u.pointer.high;return u.pointer.equals(a)?(this.ss.eraseElementByIterator(u),n("use():"+l),!0):c>l?!1:c===l?(this.ss.updateKeyByIterator(u,new i(c+1,f)),n("use():"+l),!0):f===l?(this.ss.updateKeyByIterator(u,new i(c,f-1)),n("use():"+l),!0):(this.ss.updateKeyByIterator(u,new i(l+1,f)),this.ss.insert(new i(c,l-1)),n("use():"+l),!0)}return n("use():failed"),!1},o.prototype.free=function(l){if(l<this.min||l>this.max){s("free():"+l+" is out of range");return}let a=new i(l,l),u=this.ss.upperBound(a);if(u.equals(this.ss.end())){if(u.equals(this.ss.begin())){this.ss.insert(a);return}u.pre();let c=u.pointer.high;u.pointer.high+1===l?this.ss.updateKeyByIterator(u,new i(c,l)):this.ss.insert(a)}else if(u.equals(this.ss.begin()))if(l+1===u.pointer.low){let c=u.pointer.high;this.ss.updateKeyByIterator(u,new i(l,c))}else this.ss.insert(a);else{let c=u.pointer.low,f=u.pointer.high;u.pre();let p=u.pointer.low;u.pointer.high+1===l?l+1===c?(this.ss.eraseElementByIterator(u),this.ss.updateKeyByIterator(u,new i(p,f))):this.ss.updateKeyByIterator(u,new i(p,l)):l+1===c?(this.ss.eraseElementByIterator(u.next()),this.ss.insert(new i(l,f))):this.ss.insert(a)}n("free():"+l)},o.prototype.clear=function(){n("clear()"),this.ss.clear(),this.ss.insert(new i(this.min,this.max))},o.prototype.intervalCount=function(){return this.ss.size()},o.prototype.dump=function(){console.log("length:"+this.ss.size());for(let l of this.ss)console.log(l)},t.exports=o}),Jd=ve((e,t)=>{pe(),me(),ge();var r=z0();t.exports.NumberAllocator=r}),Y0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=M0(),r=Jd(),n=class{constructor(s){s>0&&(this.aliasToTopic=new t.LRUCache({max:s}),this.topicToAlias={},this.numberAllocator=new r.NumberAllocator(1,s),this.max=s,this.length=0)}put(s,i){if(i===0||i>this.max)return!1;let o=this.aliasToTopic.get(i);return o&&delete this.topicToAlias[o],this.aliasToTopic.set(i,s),this.topicToAlias[s]=i,this.numberAllocator.use(i),this.length=this.aliasToTopic.size,!0}getTopicByAlias(s){return this.aliasToTopic.get(s)}getAliasByTopic(s){let i=this.topicToAlias[s];return typeof i<"u"&&this.aliasToTopic.get(i),i}clear(){this.aliasToTopic.clear(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0}getLruAlias(){return this.numberAllocator.firstVacant()||[...this.aliasToTopic.keys()][this.aliasToTopic.size-1]}};e.default=n}),G0=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(e,"__esModule",{value:!0});var r=Fo(),n=t(Y0()),s=Dn(),i=(o,l)=>{o.log("_handleConnack");let{options:a}=o,u=a.protocolVersion===5?l.reasonCode:l.returnCode;if(clearTimeout(o.connackTimer),delete o.topicAliasSend,l.properties){if(l.properties.topicAliasMaximum){if(l.properties.topicAliasMaximum>65535){o.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}l.properties.topicAliasMaximum>0&&(o.topicAliasSend=new n.default(l.properties.topicAliasMaximum))}l.properties.serverKeepAlive&&a.keepalive&&(a.keepalive=l.properties.serverKeepAlive),l.properties.maximumPacketSize&&(a.properties||(a.properties={}),a.properties.maximumPacketSize=l.properties.maximumPacketSize)}if(u===0)o.reconnecting=!1,o._onConnect(l);else if(u>0){let c=new s.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[u]}`,u);o.emit("error",c)}};e.default=i}),Q0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=(r,n,s)=>{r.log("handling pubrel packet");let i=typeof s<"u"?s:r.noop,{messageId:o}=n,l={cmd:"pubcomp",messageId:o};r.incomingStore.get(n,(a,u)=>{a?r._sendPacket(l,i):(r.emit("message",u.topic,u.payload,u),r.handleMessage(u,c=>{if(c)return i(c);r.incomingStore.del(u,r.noop),r._sendPacket(l,i)}))})};e.default=t}),J0=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(P0()),n=t(B0()),s=t(G0()),i=t(Fo()),o=t(Q0()),l=(a,u,c)=>{let{options:f}=a;if(f.protocolVersion===5&&f.properties&&f.properties.maximumPacketSize&&f.properties.maximumPacketSize<u.length)return a.emit("error",new Error(`exceeding packets size ${u.cmd}`)),a.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),a;switch(a.log("_handlePacket :: emitting packetreceive"),a.emit("packetreceive",u),u.cmd){case"publish":(0,r.default)(a,u,c);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":a.reschedulePing(),(0,i.default)(a,u),c();break;case"pubrel":a.reschedulePing(),(0,o.default)(a,u,c);break;case"connack":(0,s.default)(a,u),c();break;case"auth":a.reschedulePing(),(0,n.default)(a,u),c();break;case"pingresp":a.log("_handlePacket :: received pingresp"),a.reschedulePing(!0),c();break;case"disconnect":a.emit("disconnect",u),c();break;default:a.log("_handlePacket :: unknown command"),c();break}};e.default=l}),X0=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(e,"__esModule",{value:!0}),e.TypedEventEmitter=void 0;var r=t((Un(),De(mn))),n=Dn(),s=class{};e.TypedEventEmitter=s,(0,n.applyMixin)(s,r.default)}),Wo=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.isReactNativeBrowser=e.isWebWorker=void 0;var t=()=>{var i;return typeof window<"u"?typeof navigator<"u"&&((i=navigator.userAgent)===null||i===void 0?void 0:i.toLowerCase().indexOf(" electron/"))>-1&&Me!=null&&Me.versions?!Object.prototype.hasOwnProperty.call(Me.versions,"electron"):typeof window.document<"u":!1},r=()=>{var i,o;return!!(typeof self=="object"&&!((o=(i=self==null?void 0:self.constructor)===null||i===void 0?void 0:i.name)===null||o===void 0)&&o.includes("WorkerGlobalScope"))},n=()=>typeof navigator<"u"&&navigator.product==="ReactNative",s=t()||r()||n();e.isWebWorker=r(),e.isReactNativeBrowser=n(),e.default=s}),Z0=ve((e,t)=>{pe(),me(),ge(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.fastUniqueNumbers={}))}(e,function(r){var n=function(m){return function(y){var b=m(y);return y.add(b),b}},s=function(m){return function(y,b){return m.set(y,b),b}},i=Number.MAX_SAFE_INTEGER===void 0?9007199254740991:Number.MAX_SAFE_INTEGER,o=536870912,l=o*2,a=function(m,y){return function(b){var O=y.get(b),L=O===void 0?b.size:O<l?O+1:0;if(!b.has(L))return m(b,L);if(b.size<o){for(;b.has(L);)L=Math.floor(Math.random()*l);return m(b,L)}if(b.size>i)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;b.has(L);)L=Math.floor(Math.random()*i);return m(b,L)}},u=new WeakMap,c=s(u),f=a(c,u),p=n(f);r.addUniqueNumber=p,r.generateUniqueNumber=f})}),ev=ve((e,t)=>{pe(),me(),ge(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,Z0()):typeof define=="function"&&define.amd?define(["exports","fast-unique-numbers"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimersBroker={},r.fastUniqueNumbers))}(e,function(r,n){var s=function(l){return l.method!==void 0&&l.method==="call"},i=function(l){return l.error===null&&typeof l.id=="number"},o=function(l){var a=new Map([[0,function(){}]]),u=new Map([[0,function(){}]]),c=new Map,f=new Worker(l);f.addEventListener("message",function(O){var L=O.data;if(s(L)){var C=L.params,_=C.timerId,B=C.timerType;if(B==="interval"){var F=a.get(_);if(typeof F=="number"){var k=c.get(F);if(k===void 0||k.timerId!==_||k.timerType!==B)throw new Error("The timer is in an undefined state.")}else if(typeof F<"u")F();else throw new Error("The timer is in an undefined state.")}else if(B==="timeout"){var P=u.get(_);if(typeof P=="number"){var j=c.get(P);if(j===void 0||j.timerId!==_||j.timerType!==B)throw new Error("The timer is in an undefined state.")}else if(typeof P<"u")P(),u.delete(_);else throw new Error("The timer is in an undefined state.")}}else if(i(L)){var D=L.id,X=c.get(D);if(X===void 0)throw new Error("The timer is in an undefined state.");var Z=X.timerId,S=X.timerType;c.delete(D),S==="interval"?a.delete(Z):u.delete(Z)}else{var z=L.error.message;throw new Error(z)}});var p=function(O){var L=n.generateUniqueNumber(c);c.set(L,{timerId:O,timerType:"interval"}),a.set(O,L),f.postMessage({id:L,method:"clear",params:{timerId:O,timerType:"interval"}})},m=function(O){var L=n.generateUniqueNumber(c);c.set(L,{timerId:O,timerType:"timeout"}),u.set(O,L),f.postMessage({id:L,method:"clear",params:{timerId:O,timerType:"timeout"}})},y=function(O){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,C=n.generateUniqueNumber(a);return a.set(C,function(){O(),typeof a.get(C)=="function"&&f.postMessage({id:null,method:"set",params:{delay:L,now:performance.now(),timerId:C,timerType:"interval"}})}),f.postMessage({id:null,method:"set",params:{delay:L,now:performance.now(),timerId:C,timerType:"interval"}}),C},b=function(O){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,C=n.generateUniqueNumber(u);return u.set(C,O),f.postMessage({id:null,method:"set",params:{delay:L,now:performance.now(),timerId:C,timerType:"timeout"}}),C};return{clearInterval:p,clearTimeout:m,setInterval:y,setTimeout:b}};r.load=o})}),tv=ve((e,t)=>{pe(),me(),ge(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,ev()):typeof define=="function"&&define.amd?define(["exports","worker-timers-broker"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimers={},r.workerTimersBroker))}(e,function(r,n){var s=function(f,p){var m=null;return function(){if(m!==null)return m;var y=new Blob([p],{type:"application/javascript; charset=utf-8"}),b=URL.createObjectURL(y);return m=f(b),setTimeout(function(){return URL.revokeObjectURL(b)}),m}},i=`(()=>{var e={472:(e,t,r)=>{var o,i;void 0===(i="function"==typeof(o=function(){"use strict";var e=new Map,t=new Map,r=function(t){var r=e.get(t);if(void 0===r)throw new Error('There is no interval scheduled with the given id "'.concat(t,'".'));clearTimeout(r),e.delete(t)},o=function(e){var r=t.get(e);if(void 0===r)throw new Error('There is no timeout scheduled with the given id "'.concat(e,'".'));clearTimeout(r),t.delete(e)},i=function(e,t){var r,o=performance.now();return{expected:o+(r=e-Math.max(0,o-t)),remainingDelay:r}},n=function e(t,r,o,i){var n=performance.now();n>o?postMessage({id:null,method:"call",params:{timerId:r,timerType:i}}):t.set(r,setTimeout(e,o-n,t,r,o,i))},a=function(t,r,o){var a=i(t,o),s=a.expected,d=a.remainingDelay;e.set(r,setTimeout(n,d,e,r,s,"interval"))},s=function(e,r,o){var a=i(e,o),s=a.expected,d=a.remainingDelay;t.set(r,setTimeout(n,d,t,r,s,"timeout"))};addEventListener("message",(function(e){var t=e.data;try{if("clear"===t.method){var i=t.id,n=t.params,d=n.timerId,c=n.timerType;if("interval"===c)r(d),postMessage({error:null,id:i});else{if("timeout"!==c)throw new Error('The given type "'.concat(c,'" is not supported'));o(d),postMessage({error:null,id:i})}}else{if("set"!==t.method)throw new Error('The given method "'.concat(t.method,'" is not supported'));var u=t.params,l=u.delay,p=u.now,m=u.timerId,v=u.timerType;if("interval"===v)a(l,m,p);else{if("timeout"!==v)throw new Error('The given type "'.concat(v,'" is not supported'));s(l,m,p)}}}catch(e){postMessage({error:{message:e.message},id:t.id,result:null})}}))})?o.call(t,r,t,e):o)||(e.exports=i)}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(472)})()})();`,o=s(n.load,i),l=function(f){return o().clearInterval(f)},a=function(f){return o().clearTimeout(f)},u=function(){var f;return(f=o()).setInterval.apply(f,arguments)},c=function(){var f;return(f=o()).setTimeout.apply(f,arguments)};r.clearInterval=l,r.clearTimeout=a,r.setInterval=u,r.setTimeout=c})}),rv=ve(e=>{pe(),me(),ge();var t=e&&e.__createBinding||(Object.create?function(u,c,f,p){p===void 0&&(p=f);var m=Object.getOwnPropertyDescriptor(c,f);(!m||("get"in m?!c.__esModule:m.writable||m.configurable))&&(m={enumerable:!0,get:function(){return c[f]}}),Object.defineProperty(u,p,m)}:function(u,c,f,p){p===void 0&&(p=f),u[p]=c[f]}),r=e&&e.__setModuleDefault||(Object.create?function(u,c){Object.defineProperty(u,"default",{enumerable:!0,value:c})}:function(u,c){u.default=c}),n=e&&e.__importStar||function(u){if(u&&u.__esModule)return u;var c={};if(u!=null)for(var f in u)f!=="default"&&Object.prototype.hasOwnProperty.call(u,f)&&t(c,u,f);return r(c,u),c};Object.defineProperty(e,"__esModule",{value:!0});var s=n(Wo()),i=tv(),o={set:i.setInterval,clear:i.clearInterval},l={set:(u,c)=>setInterval(u,c),clear:u=>clearInterval(u)},a=u=>{switch(u){case"native":return l;case"worker":return o;case"auto":default:return s.default&&!s.isWebWorker&&!s.isReactNativeBrowser?o:l}};e.default=a}),Xd=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(rv()),n=class{get keepaliveTimeoutTimestamp(){return this._keepaliveTimeoutTimestamp}get intervalEvery(){return this._intervalEvery}get keepalive(){return this._keepalive}constructor(s,i){this.destroyed=!1,this.client=s,this.timer=typeof i=="object"&&"set"in i&&"clear"in i?i:(0,r.default)(i),this.setKeepalive(s.options.keepalive)}clear(){this.timerId&&(this.timer.clear(this.timerId),this.timerId=null)}setKeepalive(s){if(s*=1e3,isNaN(s)||s<=0||s>2147483647)throw new Error(`Keepalive value must be an integer between 0 and 2147483647. Provided value is ${s}`);this._keepalive=s,this.reschedule(),this.client.log(`KeepaliveManager: set keepalive to ${s}ms`)}destroy(){this.clear(),this.destroyed=!0}reschedule(){if(this.destroyed)return;this.clear(),this.counter=0;let s=Math.ceil(this._keepalive*1.5);this._keepaliveTimeoutTimestamp=Date.now()+s,this._intervalEvery=Math.ceil(this._keepalive/2),this.timerId=this.timer.set(()=>{this.destroyed||(this.counter+=1,this.counter===2?this.client.sendPing():this.counter>2&&this.client.onKeepaliveTimeout())},this._intervalEvery)}};e.default=n}),el=ve(e=>{pe(),me(),ge();var t=e&&e.__createBinding||(Object.create?function(F,k,P,j){j===void 0&&(j=P);var D=Object.getOwnPropertyDescriptor(k,P);(!D||("get"in D?!k.__esModule:D.writable||D.configurable))&&(D={enumerable:!0,get:function(){return k[P]}}),Object.defineProperty(F,j,D)}:function(F,k,P,j){j===void 0&&(j=P),F[j]=k[P]}),r=e&&e.__setModuleDefault||(Object.create?function(F,k){Object.defineProperty(F,"default",{enumerable:!0,value:k})}:function(F,k){F.default=k}),n=e&&e.__importStar||function(F){if(F&&F.__esModule)return F;var k={};if(F!=null)for(var P in F)P!=="default"&&Object.prototype.hasOwnProperty.call(F,P)&&t(k,F,P);return r(k,F),k},s=e&&e.__importDefault||function(F){return F&&F.__esModule?F:{default:F}};Object.defineProperty(e,"__esModule",{value:!0});var i=s(qb()),o=s(O0()),l=s(Ld()),a=yn(),u=s(R0()),c=n(x0()),f=s(gr()),p=s(Nd()),m=s(J0()),y=Dn(),b=X0(),O=s(Xd()),L=n(Wo()),C=globalThis.setImmediate||((...F)=>{let k=F.shift();(0,y.nextTick)(()=>{k(...F)})}),_={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0,writeCache:!0,timerVariant:"auto"},B=class tl extends b.TypedEventEmitter{static defaultId(){return`mqttjs_${Math.random().toString(16).substr(2,8)}`}constructor(k,P){super(),this.options=P||{};for(let j in _)typeof this.options[j]>"u"?this.options[j]=_[j]:this.options[j]=P[j];this.log=this.options.log||(0,f.default)("mqttjs:client"),this.noop=this._noop.bind(this),this.log("MqttClient :: version:",tl.VERSION),L.isWebWorker?this.log("MqttClient :: environment","webworker"):this.log("MqttClient :: environment",L.default?"browser":"node"),this.log("MqttClient :: options.protocol",P.protocol),this.log("MqttClient :: options.protocolVersion",P.protocolVersion),this.log("MqttClient :: options.username",P.username),this.log("MqttClient :: options.keepalive",P.keepalive),this.log("MqttClient :: options.reconnectPeriod",P.reconnectPeriod),this.log("MqttClient :: options.rejectUnauthorized",P.rejectUnauthorized),this.log("MqttClient :: options.properties.topicAliasMaximum",P.properties?P.properties.topicAliasMaximum:void 0),this.options.clientId=typeof P.clientId=="string"?P.clientId:tl.defaultId(),this.log("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=P.protocolVersion===5&&P.customHandleAcks?P.customHandleAcks:(...j)=>{j[3](null,0)},this.options.writeCache||(o.default.writeToStream.cacheNumbers=!1),this.streamBuilder=k,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new l.default:this.options.messageIdProvider,this.outgoingStore=P.outgoingStore||new p.default,this.incomingStore=P.incomingStore||new p.default,this.queueQoSZero=P.queueQoSZero===void 0?!0:P.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.keepaliveManager=null,this.connected=!1,this.disconnecting=!1,this.reconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,P.properties&&P.properties.topicAliasMaximum>0&&(P.properties.topicAliasMaximum>65535?this.log("MqttClient :: options.properties.topicAliasMaximum is out of range"):this.topicAliasRecv=new i.default(P.properties.topicAliasMaximum)),this.on("connect",()=>{let{queue:j}=this,D=()=>{let X=j.shift();this.log("deliver :: entry %o",X);let Z=null;if(!X){this._resubscribe();return}Z=X.packet,this.log("deliver :: call _sendPacket for %o",Z);let S=!0;Z.messageId&&Z.messageId!==0&&(this.messageIdProvider.register(Z.messageId)||(S=!1)),S?this._sendPacket(Z,z=>{X.cb&&X.cb(z),D()}):(this.log("messageId: %d has already used. The message is skipped and removed.",Z.messageId),D())};this.log("connect :: sending queued packets"),D()}),this.on("close",()=>{this.log("close :: connected set to `false`"),this.connected=!1,this.log("close :: clearing connackTimer"),clearTimeout(this.connackTimer),this._destroyKeepaliveManager(),this.topicAliasRecv&&this.topicAliasRecv.clear(),this.log("close :: calling _setupReconnect"),this._setupReconnect()}),this.options.manualConnect||(this.log("MqttClient :: setting up stream"),this.connect())}handleAuth(k,P){P()}handleMessage(k,P){P()}_nextId(){return this.messageIdProvider.allocate()}getLastMessageId(){return this.messageIdProvider.getLastAllocated()}connect(){var k;let P=new a.Writable,j=o.default.parser(this.options),D=null,X=[];this.log("connect :: calling method to clear reconnect"),this._clearReconnect(),this.disconnected&&!this.reconnecting&&(this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1),this.log("connect :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),j.on("packet",ee=>{this.log("parser :: on packet push to packets array."),X.push(ee)});let Z=()=>{this.log("work :: getting next packet in queue");let ee=X.shift();if(ee)this.log("work :: packet pulled from queue"),(0,m.default)(this,ee,S);else{this.log("work :: no packets in queue");let le=D;D=null,this.log("work :: done flag is %s",!!le),le&&le()}},S=()=>{if(X.length)(0,y.nextTick)(Z);else{let ee=D;D=null,ee()}};P._write=(ee,le,ne)=>{D=ne,this.log("writable stream :: parsing buffer"),j.parse(ee),Z()};let z=ee=>{this.log("streamErrorHandler :: error",ee.message),ee.code?(this.log("streamErrorHandler :: emitting error"),this.emit("error",ee)):this.noop(ee)};this.log("connect :: pipe stream to writable stream"),this.stream.pipe(P),this.stream.on("error",z),this.stream.on("close",()=>{this.log("(%s)stream :: on close",this.options.clientId),this._flushVolatile(),this.log("stream: emit close to MqttClient"),this.emit("close")}),this.log("connect: sending packet `connect`");let ae={cmd:"connect",protocolId:this.options.protocolId,protocolVersion:this.options.protocolVersion,clean:this.options.clean,clientId:this.options.clientId,keepalive:this.options.keepalive,username:this.options.username,password:this.options.password,properties:this.options.properties};if(this.options.will&&(ae.will=Object.assign(Object.assign({},this.options.will),{payload:(k=this.options.will)===null||k===void 0?void 0:k.payload})),this.topicAliasRecv&&(ae.properties||(ae.properties={}),this.topicAliasRecv&&(ae.properties.topicAliasMaximum=this.topicAliasRecv.max)),this._writePacket(ae),j.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return this.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){let ee=Object.assign({cmd:"auth",reasonCode:0},this.options.authPacket);this._writePacket(ee)}}return this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(()=>{this.log("!!connectTimeout hit!! Calling _cleanUp with force `true`"),this.emit("error",new Error("connack timeout")),this._cleanUp(!0)},this.options.connectTimeout),this}publish(k,P,j,D){this.log("publish :: message `%s` to topic `%s`",P,k);let{options:X}=this;typeof j=="function"&&(D=j,j=null),j=j||{},j=Object.assign(Object.assign({},{qos:0,retain:!1,dup:!1}),j);let{qos:Z,retain:S,dup:z,properties:ae,cbStorePut:ee}=j;if(this._checkDisconnecting(D))return this;let le=()=>{let ne=0;if((Z===1||Z===2)&&(ne=this._nextId(),ne===null))return this.log("No messageId left"),!1;let G={cmd:"publish",topic:k,payload:P,qos:Z,retain:S,messageId:ne,dup:z};switch(X.protocolVersion===5&&(G.properties=ae),this.log("publish :: qos",Z),Z){case 1:case 2:this.outgoing[G.messageId]={volatile:!1,cb:D||this.noop},this.log("MqttClient:publish: packet cmd: %s",G.cmd),this._sendPacket(G,void 0,ee);break;default:this.log("MqttClient:publish: packet cmd: %s",G.cmd),this._sendPacket(G,D,ee);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!le())&&this._storeProcessingQueue.push({invoke:le,cbStorePut:j.cbStorePut,callback:D}),this}publishAsync(k,P,j){return new Promise((D,X)=>{this.publish(k,P,j,(Z,S)=>{Z?X(Z):D(S)})})}subscribe(k,P,j){let D=this.options.protocolVersion;typeof P=="function"&&(j=P),j=j||this.noop;let X=!1,Z=[];typeof k=="string"?(k=[k],Z=k):Array.isArray(k)?Z=k:typeof k=="object"&&(X=k.resubscribe,delete k.resubscribe,Z=Object.keys(k));let S=c.validateTopics(Z);if(S!==null)return C(j,new Error(`Invalid topic ${S}`)),this;if(this._checkDisconnecting(j))return this.log("subscribe: discconecting true"),this;let z={qos:0};D===5&&(z.nl=!1,z.rap=!1,z.rh=0),P=Object.assign(Object.assign({},z),P);let ae=P.properties,ee=[],le=(G,de)=>{if(de=de||P,!Object.prototype.hasOwnProperty.call(this._resubscribeTopics,G)||this._resubscribeTopics[G].qos<de.qos||X){let ce={topic:G,qos:de.qos};D===5&&(ce.nl=de.nl,ce.rap=de.rap,ce.rh=de.rh,ce.properties=ae),this.log("subscribe: pushing topic `%s` and qos `%s` to subs list",ce.topic,ce.qos),ee.push(ce)}};if(Array.isArray(k)?k.forEach(G=>{this.log("subscribe: array topic %s",G),le(G)}):Object.keys(k).forEach(G=>{this.log("subscribe: object topic %s, %o",G,k[G]),le(G,k[G])}),!ee.length)return j(null,[]),this;let ne=()=>{let G=this._nextId();if(G===null)return this.log("No messageId left"),!1;let de={cmd:"subscribe",subscriptions:ee,messageId:G};if(ae&&(de.properties=ae),this.options.resubscribe){this.log("subscribe :: resubscribe true");let ce=[];ee.forEach(be=>{if(this.options.reconnectPeriod>0){let A={qos:be.qos};D===5&&(A.nl=be.nl||!1,A.rap=be.rap||!1,A.rh=be.rh||0,A.properties=be.properties),this._resubscribeTopics[be.topic]=A,ce.push(be.topic)}}),this.messageIdToTopic[de.messageId]=ce}return this.outgoing[de.messageId]={volatile:!0,cb(ce,be){if(!ce){let{granted:A}=be;for(let ie=0;ie<A.length;ie+=1)ee[ie].qos=A[ie]}j(ce,ee,be)}},this.log("subscribe :: call _sendPacket"),this._sendPacket(de),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!ne())&&this._storeProcessingQueue.push({invoke:ne,callback:j}),this}subscribeAsync(k,P){return new Promise((j,D)=>{this.subscribe(k,P,(X,Z)=>{X?D(X):j(Z)})})}unsubscribe(k,P,j){typeof k=="string"&&(k=[k]),typeof P=="function"&&(j=P),j=j||this.noop;let D=c.validateTopics(k);if(D!==null)return C(j,new Error(`Invalid topic ${D}`)),this;if(this._checkDisconnecting(j))return this;let X=()=>{let Z=this._nextId();if(Z===null)return this.log("No messageId left"),!1;let S={cmd:"unsubscribe",messageId:Z,unsubscriptions:[]};return typeof k=="string"?S.unsubscriptions=[k]:Array.isArray(k)&&(S.unsubscriptions=k),this.options.resubscribe&&S.unsubscriptions.forEach(z=>{delete this._resubscribeTopics[z]}),typeof P=="object"&&P.properties&&(S.properties=P.properties),this.outgoing[S.messageId]={volatile:!0,cb:j},this.log("unsubscribe: call _sendPacket"),this._sendPacket(S),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!X())&&this._storeProcessingQueue.push({invoke:X,callback:j}),this}unsubscribeAsync(k,P){return new Promise((j,D)=>{this.unsubscribe(k,P,(X,Z)=>{X?D(X):j(Z)})})}end(k,P,j){this.log("end :: (%s)",this.options.clientId),(k==null||typeof k!="boolean")&&(j=j||P,P=k,k=!1),typeof P!="object"&&(j=j||P,P=null),this.log("end :: cb? %s",!!j),(!j||typeof j!="function")&&(j=this.noop);let D=()=>{this.log("end :: closeStores: closing incoming and outgoing stores"),this.disconnected=!0,this.incomingStore.close(Z=>{this.outgoingStore.close(S=>{if(this.log("end :: closeStores: emitting end"),this.emit("end"),j){let z=Z||S;this.log("end :: closeStores: invoking callback with args"),j(z)}})}),this._deferredReconnect?this._deferredReconnect():(this.options.reconnectPeriod===0||this.options.manualConnect)&&(this.disconnecting=!1)},X=()=>{this.log("end :: (%s) :: finish :: calling _cleanUp with force %s",this.options.clientId,k),this._cleanUp(k,()=>{this.log("end :: finish :: calling process.nextTick on closeStores"),(0,y.nextTick)(D)},P)};return this.disconnecting?(j(),this):(this._clearReconnect(),this.disconnecting=!0,!k&&Object.keys(this.outgoing).length>0?(this.log("end :: (%s) :: calling finish in 10ms once outgoing is empty",this.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,X,10))):(this.log("end :: (%s) :: immediately calling finish",this.options.clientId),X()),this)}endAsync(k,P){return new Promise((j,D)=>{this.end(k,P,X=>{X?D(X):j()})})}removeOutgoingMessage(k){if(this.outgoing[k]){let{cb:P}=this.outgoing[k];this._removeOutgoingAndStoreMessage(k,()=>{P(new Error("Message removed"))})}return this}reconnect(k){this.log("client reconnect");let P=()=>{k?(this.options.incomingStore=k.incomingStore,this.options.outgoingStore=k.outgoingStore):(this.options.incomingStore=null,this.options.outgoingStore=null),this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1,this._deferredReconnect=null,this._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=P:P(),this}_flushVolatile(){this.outgoing&&(this.log("_flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(this.outgoing).forEach(k=>{this.outgoing[k].volatile&&typeof this.outgoing[k].cb=="function"&&(this.outgoing[k].cb(new Error("Connection closed")),delete this.outgoing[k])}))}_flush(){this.outgoing&&(this.log("_flush: queue exists? %b",!!this.outgoing),Object.keys(this.outgoing).forEach(k=>{typeof this.outgoing[k].cb=="function"&&(this.outgoing[k].cb(new Error("Connection closed")),delete this.outgoing[k])}))}_removeTopicAliasAndRecoverTopicName(k){let P;k.properties&&(P=k.properties.topicAlias);let j=k.topic.toString();if(this.log("_removeTopicAliasAndRecoverTopicName :: alias %d, topic %o",P,j),j.length===0){if(typeof P>"u")return new Error("Unregistered Topic Alias");if(j=this.topicAliasSend.getTopicByAlias(P),typeof j>"u")return new Error("Unregistered Topic Alias");k.topic=j}P&&delete k.properties.topicAlias}_checkDisconnecting(k){return this.disconnecting&&(k&&k!==this.noop?k(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting}_reconnect(){this.log("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this.connect()}),this.log("client already connected. disconnecting first.")):(this.log("_reconnect: calling connect"),this.connect())}_setupReconnect(){!this.disconnecting&&!this.reconnectTimer&&this.options.reconnectPeriod>0?(this.reconnecting||(this.log("_setupReconnect :: emit `offline` state"),this.emit("offline"),this.log("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),this.log("_setupReconnect :: setting reconnectTimer for %d ms",this.options.reconnectPeriod),this.reconnectTimer=setInterval(()=>{this.log("reconnectTimer :: reconnect triggered!"),this._reconnect()},this.options.reconnectPeriod)):this.log("_setupReconnect :: doing nothing...")}_clearReconnect(){this.log("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)}_cleanUp(k,P,j={}){if(P&&(this.log("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",P)),this.log("_cleanUp :: forced? %s",k),k)this.options.reconnectPeriod===0&&this.options.clean&&this._flush(),this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{let D=Object.assign({cmd:"disconnect"},j);this.log("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(D,()=>{this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),C(()=>{this.stream.end(()=>{this.log("_cleanUp :: (%s) :: stream destroyed",this.options.clientId)})})})}!this.disconnecting&&!this.reconnecting&&(this.log("_cleanUp :: client not disconnecting/reconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this._destroyKeepaliveManager(),P&&!this.connected&&(this.log("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",P),P())}_storeAndSend(k,P,j){this.log("storeAndSend :: store packet with cmd %s to outgoingStore",k.cmd);let D=k,X;if(D.cmd==="publish"&&(D=(0,u.default)(k),X=this._removeTopicAliasAndRecoverTopicName(D),X))return P&&P(X);this.outgoingStore.put(D,Z=>{if(Z)return P&&P(Z);j(),this._writePacket(k,P)})}_applyTopicAlias(k){if(this.options.protocolVersion===5&&k.cmd==="publish"){let P;k.properties&&(P=k.properties.topicAlias);let j=k.topic.toString();if(this.topicAliasSend)if(P){if(j.length!==0&&(this.log("applyTopicAlias :: register topic: %s - alias: %d",j,P),!this.topicAliasSend.put(j,P)))return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",j,P),new Error("Sending Topic Alias out of range")}else j.length!==0&&(this.options.autoAssignTopicAlias?(P=this.topicAliasSend.getAliasByTopic(j),P?(k.topic="",k.properties=Object.assign(Object.assign({},k.properties),{topicAlias:P}),this.log("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",j,P)):(P=this.topicAliasSend.getLruAlias(),this.topicAliasSend.put(j,P),k.properties=Object.assign(Object.assign({},k.properties),{topicAlias:P}),this.log("applyTopicAlias :: auto assign topic: %s - alias: %d",j,P))):this.options.autoUseTopicAlias&&(P=this.topicAliasSend.getAliasByTopic(j),P&&(k.topic="",k.properties=Object.assign(Object.assign({},k.properties),{topicAlias:P}),this.log("applyTopicAlias :: auto use topic: %s - alias: %d",j,P))));else if(P)return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",j,P),new Error("Sending Topic Alias out of range")}}_noop(k){this.log("noop ::",k)}_writePacket(k,P){this.log("_writePacket :: packet: %O",k),this.log("_writePacket :: emitting `packetsend`"),this.emit("packetsend",k),this.log("_writePacket :: writing to stream");let j=o.default.writeToStream(k,this.stream,this.options);this.log("_writePacket :: writeToStream result %s",j),!j&&P&&P!==this.noop?(this.log("_writePacket :: handle events on `drain` once through callback."),this.stream.once("drain",P)):P&&(this.log("_writePacket :: invoking cb"),P())}_sendPacket(k,P,j,D){this.log("_sendPacket :: (%s) ::  start",this.options.clientId),j=j||this.noop,P=P||this.noop;let X=this._applyTopicAlias(k);if(X){P(X);return}if(!this.connected){if(k.cmd==="auth"){this._writePacket(k,P);return}this.log("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(k,P,j);return}if(D){this._writePacket(k,P);return}switch(k.cmd){case"publish":break;case"pubrel":this._storeAndSend(k,P,j);return;default:this._writePacket(k,P);return}switch(k.qos){case 2:case 1:this._storeAndSend(k,P,j);break;case 0:default:this._writePacket(k,P);break}this.log("_sendPacket :: (%s) ::  end",this.options.clientId)}_storePacket(k,P,j){this.log("_storePacket :: packet: %o",k),this.log("_storePacket :: cb? %s",!!P),j=j||this.noop;let D=k;if(D.cmd==="publish"){D=(0,u.default)(k);let Z=this._removeTopicAliasAndRecoverTopicName(D);if(Z)return P&&P(Z)}let X=D.qos||0;X===0&&this.queueQoSZero||D.cmd!=="publish"?this.queue.push({packet:D,cb:P}):X>0?(P=this.outgoing[D.messageId]?this.outgoing[D.messageId].cb:null,this.outgoingStore.put(D,Z=>{if(Z)return P&&P(Z);j()})):P&&P(new Error("No connection to broker"))}_setupKeepaliveManager(){this.log("_setupKeepaliveManager :: keepalive %d (seconds)",this.options.keepalive),!this.keepaliveManager&&this.options.keepalive&&(this.keepaliveManager=new O.default(this,this.options.timerVariant))}_destroyKeepaliveManager(){this.keepaliveManager&&(this.log("_destroyKeepaliveManager :: destroying keepalive manager"),this.keepaliveManager.destroy(),this.keepaliveManager=null)}reschedulePing(k=!1){this.keepaliveManager&&this.options.keepalive&&(k||this.options.reschedulePings)&&this._reschedulePing()}_reschedulePing(){this.log("_reschedulePing :: rescheduling ping"),this.keepaliveManager.reschedule()}sendPing(){this.log("_sendPing :: sending pingreq"),this._sendPacket({cmd:"pingreq"})}onKeepaliveTimeout(){this.emit("error",new Error("Keepalive timeout")),this.log("onKeepaliveTimeout :: calling _cleanUp with force true"),this._cleanUp(!0)}_resubscribe(){this.log("_resubscribe");let k=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion>=4&&!this.connackPacket.sessionPresent)&&k.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){this.log("_resubscribe: protocolVersion 5");for(let P=0;P<k.length;P++){let j={};j[k[P]]=this._resubscribeTopics[k[P]],j.resubscribe=!0,this.subscribe(j,{properties:j[k[P]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1}_onConnect(k){if(this.disconnected){this.emit("connect",k);return}this.connackPacket=k,this.messageIdProvider.clear(),this._setupKeepaliveManager(),this.connected=!0;let P=()=>{let j=this.outgoingStore.createStream(),D=()=>{j.destroy(),j=null,this._flushStoreProcessingQueue(),X()},X=()=>{this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={}};this.once("close",D),j.on("error",S=>{X(),this._flushStoreProcessingQueue(),this.removeListener("close",D),this.emit("error",S)});let Z=()=>{if(!j)return;let S=j.read(1),z;if(!S){j.once("readable",Z);return}if(this._storeProcessing=!0,this._packetIdsDuringStoreProcessing[S.messageId]){Z();return}!this.disconnecting&&!this.reconnectTimer?(z=this.outgoing[S.messageId]?this.outgoing[S.messageId].cb:null,this.outgoing[S.messageId]={volatile:!1,cb(ae,ee){z&&z(ae,ee),Z()}},this._packetIdsDuringStoreProcessing[S.messageId]=!0,this.messageIdProvider.register(S.messageId)?this._sendPacket(S,void 0,void 0,!0):this.log("messageId: %d has already used.",S.messageId)):j.destroy&&j.destroy()};j.on("end",()=>{let S=!0;for(let z in this._packetIdsDuringStoreProcessing)if(!this._packetIdsDuringStoreProcessing[z]){S=!1;break}this.removeListener("close",D),S?(X(),this._invokeAllStoreProcessingQueue(),this.emit("connect",k)):P()}),Z()};P()}_invokeStoreProcessingQueue(){if(!this._storeProcessing&&this._storeProcessingQueue.length>0){let k=this._storeProcessingQueue[0];if(k&&k.invoke())return this._storeProcessingQueue.shift(),!0}return!1}_invokeAllStoreProcessingQueue(){for(;this._invokeStoreProcessingQueue(););}_flushStoreProcessingQueue(){for(let k of this._storeProcessingQueue)k.cbStorePut&&k.cbStorePut(new Error("Connection closed")),k.callback&&k.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)}_removeOutgoingAndStoreMessage(k,P){delete this.outgoing[k],this.outgoingStore.del({messageId:k},(j,D)=>{P(j,D),this.messageIdProvider.deallocate(k),this._invokeStoreProcessingQueue()})}};B.VERSION=y.MQTTJS_VERSION,e.default=B}),nv=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=Jd(),r=class{constructor(){this.numberAllocator=new t.NumberAllocator(1,65535)}allocate(){return this.lastId=this.numberAllocator.alloc(),this.lastId}getLastAllocated(){return this.lastId}register(n){return this.numberAllocator.use(n)}deallocate(n){this.numberAllocator.free(n)}clear(){this.numberAllocator.clear()}};e.default=r});function Jr(e){throw new RangeError(ep[e])}function kc(e,t){let r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]);let s=function(i,o){let l=[],a=i.length;for(;a--;)l[a]=o(i[a]);return l}((e=e.replace(Zd,".")).split("."),t).join(".");return n+s}function Bc(e){let t=[],r=0,n=e.length;for(;r<n;){let s=e.charCodeAt(r++);if(s>=55296&&s<=56319&&r<n){let i=e.charCodeAt(r++);(64512&i)==56320?t.push(((1023&s)<<10)+(1023&i)+65536):(t.push(s),r--)}else t.push(s)}return t}var Mc,Lc,Zd,ep,Nt,Ui,ps,gs,ms,ys,Rr,iv=st(()=>{pe(),me(),ge(),Mc=/^xn--/,Lc=/[^\0-\x7E]/,Zd=/[\x2E\u3002\uFF0E\uFF61]/g,ep={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Nt=Math.floor,Ui=String.fromCharCode,ps=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},gs=function(e,t,r){let n=0;for(e=r?Nt(e/700):e>>1,e+=Nt(e/t);e>455;n+=36)e=Nt(e/35);return Nt(n+36*e/(e+38))},ms=function(e){let t=[],r=e.length,n=0,s=128,i=72,o=e.lastIndexOf("-");o<0&&(o=0);for(let a=0;a<o;++a)e.charCodeAt(a)>=128&&Jr("not-basic"),t.push(e.charCodeAt(a));for(let a=o>0?o+1:0;a<r;){let u=n;for(let f=1,p=36;;p+=36){a>=r&&Jr("invalid-input");let m=(l=e.charCodeAt(a++))-48<10?l-22:l-65<26?l-65:l-97<26?l-97:36;(m>=36||m>Nt((2147483647-n)/f))&&Jr("overflow"),n+=m*f;let y=p<=i?1:p>=i+26?26:p-i;if(m<y)break;let b=36-y;f>Nt(2147483647/b)&&Jr("overflow"),f*=b}let c=t.length+1;i=gs(n-u,c,u==0),Nt(n/c)>2147483647-s&&Jr("overflow"),s+=Nt(n/c),n%=c,t.splice(n++,0,s)}var l;return String.fromCodePoint(...t)},ys=function(e){let t=[],r=(e=Bc(e)).length,n=128,s=0,i=72;for(let a of e)a<128&&t.push(Ui(a));let o=t.length,l=o;for(o&&t.push("-");l<r;){let a=2147483647;for(let c of e)c>=n&&c<a&&(a=c);let u=l+1;a-n>Nt((2147483647-s)/u)&&Jr("overflow"),s+=(a-n)*u,n=a;for(let c of e)if(c<n&&++s>2147483647&&Jr("overflow"),c==n){let f=s;for(let p=36;;p+=36){let m=p<=i?1:p>=i+26?26:p-i;if(f<m)break;let y=f-m,b=36-m;t.push(Ui(ps(m+y%b,0))),f=Nt(y/b)}t.push(Ui(ps(f,0))),i=gs(s,u,l==o),s=0,++l}++s,++n}return t.join("")},Rr={version:"2.1.0",ucs2:{decode:Bc,encode:e=>String.fromCodePoint(...e)},decode:ms,encode:ys,toASCII:function(e){return kc(e,function(t){return Lc.test(t)?"xn--"+ys(t):t})},toUnicode:function(e){return kc(e,function(t){return Mc.test(t)?ms(t.slice(4).toLowerCase()):t})}},Rr.decode,Rr.encode,Rr.toASCII,Rr.toUnicode,Rr.ucs2,Rr.version});function ov(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Nc,wn,jc,qt,sv=st(()=>{pe(),me(),ge(),Nc=function(e,t,r,n){t=t||"&",r=r||"=";var s={};if(typeof e!="string"||e.length===0)return s;var i=/\+/g;e=e.split(t);var o=1e3;n&&typeof n.maxKeys=="number"&&(o=n.maxKeys);var l=e.length;o>0&&l>o&&(l=o);for(var a=0;a<l;++a){var u,c,f,p,m=e[a].replace(i,"%20"),y=m.indexOf(r);y>=0?(u=m.substr(0,y),c=m.substr(y+1)):(u=m,c=""),f=decodeURIComponent(u),p=decodeURIComponent(c),ov(s,f)?Array.isArray(s[f])?s[f].push(p):s[f]=[s[f],p]:s[f]=p}return s},wn=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},jc=function(e,t,r,n){return t=t||"&",r=r||"=",e===null&&(e=void 0),typeof e=="object"?Object.keys(e).map(function(s){var i=encodeURIComponent(wn(s))+r;return Array.isArray(e[s])?e[s].map(function(o){return i+encodeURIComponent(wn(o))}).join(t):i+encodeURIComponent(wn(e[s]))}).join(t):n?encodeURIComponent(wn(n))+r+encodeURIComponent(wn(e)):""},qt={},qt.decode=qt.parse=Nc,qt.encode=qt.stringify=jc,qt.decode,qt.encode,qt.parse,qt.stringify});function rl(){throw new Error("setTimeout has not been defined")}function nl(){throw new Error("clearTimeout has not been defined")}function tp(e){if(sr===setTimeout)return setTimeout(e,0);if((sr===rl||!sr)&&setTimeout)return sr=setTimeout,setTimeout(e,0);try{return sr(e,0)}catch{try{return sr.call(null,e,0)}catch{return sr.call(this||un,e,0)}}}function av(){cn&&on&&(cn=!1,on.length?Gt=on.concat(Gt):li=-1,Gt.length&&rp())}function rp(){if(!cn){var e=tp(av);cn=!0;for(var t=Gt.length;t;){for(on=Gt,Gt=[];++li<t;)on&&on[li].run();li=-1,t=Gt.length}on=null,cn=!1,function(r){if(ar===clearTimeout)return clearTimeout(r);if((ar===nl||!ar)&&clearTimeout)return ar=clearTimeout,clearTimeout(r);try{ar(r)}catch{try{return ar.call(null,r)}catch{return ar.call(this||un,r)}}}(e)}}function Uc(e,t){(this||un).fun=e,(this||un).array=t}function rr(){}var Dc,sr,ar,un,Ge,on,Gt,cn,li,Ye,lv=st(()=>{pe(),me(),ge(),un=typeof globalThis<"u"?globalThis:typeof self<"u"?self:io,Ge=Dc={},function(){try{sr=typeof setTimeout=="function"?setTimeout:rl}catch{sr=rl}try{ar=typeof clearTimeout=="function"?clearTimeout:nl}catch{ar=nl}}(),Gt=[],cn=!1,li=-1,Ge.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Gt.push(new Uc(e,t)),Gt.length!==1||cn||tp(rp)},Uc.prototype.run=function(){(this||un).fun.apply(null,(this||un).array)},Ge.title="browser",Ge.browser=!0,Ge.env={},Ge.argv=[],Ge.version="",Ge.versions={},Ge.on=rr,Ge.addListener=rr,Ge.once=rr,Ge.off=rr,Ge.removeListener=rr,Ge.removeAllListeners=rr,Ge.emit=rr,Ge.prependListener=rr,Ge.prependOnceListener=rr,Ge.listeners=function(e){return[]},Ge.binding=function(e){throw new Error("process.binding is not supported")},Ge.cwd=function(){return"/"},Ge.chdir=function(e){throw new Error("process.chdir is not supported")},Ge.umask=function(){return 0},Ye=Dc,Ye.addListener,Ye.argv,Ye.binding,Ye.browser,Ye.chdir,Ye.cwd,Ye.emit,Ye.env,Ye.listeners,Ye.nextTick,Ye.off,Ye.on,Ye.once,Ye.prependListener,Ye.prependOnceListener,Ye.removeAllListeners,Ye.removeListener,Ye.title,Ye.umask,Ye.version,Ye.versions});function uv(){if(il)return eo;il=!0;var e=eo={},t,r;function n(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?t=setTimeout:t=n}catch{t=n}try{typeof clearTimeout=="function"?r=clearTimeout:r=s}catch{r=s}})();function i(b){if(t===setTimeout)return setTimeout(b,0);if((t===n||!t)&&setTimeout)return t=setTimeout,setTimeout(b,0);try{return t(b,0)}catch{try{return t.call(null,b,0)}catch{return t.call(this||en,b,0)}}}function o(b){if(r===clearTimeout)return clearTimeout(b);if((r===s||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(b);try{return r(b)}catch{try{return r.call(null,b)}catch{return r.call(this||en,b)}}}var l=[],a=!1,u,c=-1;function f(){!a||!u||(a=!1,u.length?l=u.concat(l):c=-1,l.length&&p())}function p(){if(!a){var b=i(f);a=!0;for(var O=l.length;O;){for(u=l,l=[];++c<O;)u&&u[c].run();c=-1,O=l.length}u=null,a=!1,o(b)}}e.nextTick=function(b){var O=new Array(arguments.length-1);if(arguments.length>1)for(var L=1;L<arguments.length;L++)O[L-1]=arguments[L];l.push(new m(b,O)),l.length===1&&!a&&i(p)};function m(b,O){(this||en).fun=b,(this||en).array=O}m.prototype.run=function(){(this||en).fun.apply(null,(this||en).array)},e.title="browser",e.browser=!0,e.env={},e.argv=[],e.version="",e.versions={};function y(){}return e.on=y,e.addListener=y,e.once=y,e.off=y,e.removeListener=y,e.removeAllListeners=y,e.emit=y,e.prependListener=y,e.prependOnceListener=y,e.listeners=function(b){return[]},e.binding=function(b){throw new Error("process.binding is not supported")},e.cwd=function(){return"/"},e.chdir=function(b){throw new Error("process.chdir is not supported")},e.umask=function(){return 0},eo}var eo,il,en,Ve,np=st(()=>{pe(),me(),ge(),eo={},il=!1,en=typeof globalThis<"u"?globalThis:typeof self<"u"?self:io,Ve=uv(),Ve.platform="browser",Ve.addListener,Ve.argv,Ve.binding,Ve.browser,Ve.chdir,Ve.cwd,Ve.emit,Ve.env,Ve.listeners,Ve.nextTick,Ve.off,Ve.on,Ve.once,Ve.prependListener,Ve.prependOnceListener,Ve.removeAllListeners,Ve.removeListener,Ve.title,Ve.umask,Ve.version,Ve.versions});function cv(){if(ol)return to;ol=!0;var e=Ve;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,o){for(var l="",a=0,u=-1,c=0,f,p=0;p<=i.length;++p){if(p<i.length)f=i.charCodeAt(p);else{if(f===47)break;f=47}if(f===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(l.length<2||a!==2||l.charCodeAt(l.length-1)!==46||l.charCodeAt(l.length-2)!==46){if(l.length>2){var m=l.lastIndexOf("/");if(m!==l.length-1){m===-1?(l="",a=0):(l=l.slice(0,m),a=l.length-1-l.lastIndexOf("/")),u=p,c=0;continue}}else if(l.length===2||l.length===1){l="",a=0,u=p,c=0;continue}}o&&(l.length>0?l+="/..":l="..",a=2)}else l.length>0?l+="/"+i.slice(u+1,p):l=i.slice(u+1,p),a=p-u-1;u=p,c=0}else f===46&&c!==-1?++c:c=-1}return l}function n(i,o){var l=o.dir||o.root,a=o.base||(o.name||"")+(o.ext||"");return l?l===o.root?l+a:l+i+a:a}var s={resolve:function(){for(var i="",o=!1,l,a=arguments.length-1;a>=-1&&!o;a--){var u;a>=0?u=arguments[a]:(l===void 0&&(l=e.cwd()),u=l),t(u),u.length!==0&&(i=u+"/"+i,o=u.charCodeAt(0)===47)}return i=r(i,!o),o?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var o=i.charCodeAt(0)===47,l=i.charCodeAt(i.length-1)===47;return i=r(i,!o),i.length===0&&!o&&(i="."),i.length>0&&l&&(i+="/"),o?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,o=0;o<arguments.length;++o){var l=arguments[o];t(l),l.length>0&&(i===void 0?i=l:i+="/"+l)}return i===void 0?".":s.normalize(i)},relative:function(i,o){if(t(i),t(o),i===o||(i=s.resolve(i),o=s.resolve(o),i===o))return"";for(var l=1;l<i.length&&i.charCodeAt(l)===47;++l);for(var a=i.length,u=a-l,c=1;c<o.length&&o.charCodeAt(c)===47;++c);for(var f=o.length,p=f-c,m=u<p?u:p,y=-1,b=0;b<=m;++b){if(b===m){if(p>m){if(o.charCodeAt(c+b)===47)return o.slice(c+b+1);if(b===0)return o.slice(c+b)}else u>m&&(i.charCodeAt(l+b)===47?y=b:b===0&&(y=0));break}var O=i.charCodeAt(l+b),L=o.charCodeAt(c+b);if(O!==L)break;O===47&&(y=b)}var C="";for(b=l+y+1;b<=a;++b)(b===a||i.charCodeAt(b)===47)&&(C.length===0?C+="..":C+="/..");return C.length>0?C+o.slice(c+y):(c+=y,o.charCodeAt(c)===47&&++c,o.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var o=i.charCodeAt(0),l=o===47,a=-1,u=!0,c=i.length-1;c>=1;--c)if(o=i.charCodeAt(c),o===47){if(!u){a=c;break}}else u=!1;return a===-1?l?"/":".":l&&a===1?"//":i.slice(0,a)},basename:function(i,o){if(o!==void 0&&typeof o!="string")throw new TypeError('"ext" argument must be a string');t(i);var l=0,a=-1,u=!0,c;if(o!==void 0&&o.length>0&&o.length<=i.length){if(o.length===i.length&&o===i)return"";var f=o.length-1,p=-1;for(c=i.length-1;c>=0;--c){var m=i.charCodeAt(c);if(m===47){if(!u){l=c+1;break}}else p===-1&&(u=!1,p=c+1),f>=0&&(m===o.charCodeAt(f)?--f===-1&&(a=c):(f=-1,a=p))}return l===a?a=p:a===-1&&(a=i.length),i.slice(l,a)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){l=c+1;break}}else a===-1&&(u=!1,a=c+1);return a===-1?"":i.slice(l,a)}},extname:function(i){t(i);for(var o=-1,l=0,a=-1,u=!0,c=0,f=i.length-1;f>=0;--f){var p=i.charCodeAt(f);if(p===47){if(!u){l=f+1;break}continue}a===-1&&(u=!1,a=f+1),p===46?o===-1?o=f:c!==1&&(c=1):o!==-1&&(c=-1)}return o===-1||a===-1||c===0||c===1&&o===a-1&&o===l+1?"":i.slice(o,a)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var o={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return o;var l=i.charCodeAt(0),a=l===47,u;a?(o.root="/",u=1):u=0;for(var c=-1,f=0,p=-1,m=!0,y=i.length-1,b=0;y>=u;--y){if(l=i.charCodeAt(y),l===47){if(!m){f=y+1;break}continue}p===-1&&(m=!1,p=y+1),l===46?c===-1?c=y:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===f+1?p!==-1&&(f===0&&a?o.base=o.name=i.slice(1,p):o.base=o.name=i.slice(f,p)):(f===0&&a?(o.name=i.slice(1,c),o.base=i.slice(1,p)):(o.name=i.slice(f,c),o.base=i.slice(f,p)),o.ext=i.slice(c,p)),f>0?o.dir=i.slice(0,f-1):a&&(o.dir="/"),o},sep:"/",delimiter:":",win32:null,posix:null};return s.posix=s,to=s,to}var to,ol,sl,fv=st(()=>{pe(),me(),ge(),np(),to={},ol=!1,sl=cv()}),ip={};pn(ip,{URL:()=>Ep,Url:()=>yp,default:()=>Ne,fileURLToPath:()=>op,format:()=>bp,parse:()=>_p,pathToFileURL:()=>sp,resolve:()=>vp,resolveObject:()=>wp});function Ct(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function zn(e,t,r){if(e&&Ut.isObject(e)&&e instanceof Ct)return e;var n=new Ct;return n.parse(e,t,r),n}function hv(){if(al)return ro;al=!0;var e=Ye;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,o){for(var l="",a=0,u=-1,c=0,f,p=0;p<=i.length;++p){if(p<i.length)f=i.charCodeAt(p);else{if(f===47)break;f=47}if(f===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(l.length<2||a!==2||l.charCodeAt(l.length-1)!==46||l.charCodeAt(l.length-2)!==46){if(l.length>2){var m=l.lastIndexOf("/");if(m!==l.length-1){m===-1?(l="",a=0):(l=l.slice(0,m),a=l.length-1-l.lastIndexOf("/")),u=p,c=0;continue}}else if(l.length===2||l.length===1){l="",a=0,u=p,c=0;continue}}o&&(l.length>0?l+="/..":l="..",a=2)}else l.length>0?l+="/"+i.slice(u+1,p):l=i.slice(u+1,p),a=p-u-1;u=p,c=0}else f===46&&c!==-1?++c:c=-1}return l}function n(i,o){var l=o.dir||o.root,a=o.base||(o.name||"")+(o.ext||"");return l?l===o.root?l+a:l+i+a:a}var s={resolve:function(){for(var i="",o=!1,l,a=arguments.length-1;a>=-1&&!o;a--){var u;a>=0?u=arguments[a]:(l===void 0&&(l=e.cwd()),u=l),t(u),u.length!==0&&(i=u+"/"+i,o=u.charCodeAt(0)===47)}return i=r(i,!o),o?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var o=i.charCodeAt(0)===47,l=i.charCodeAt(i.length-1)===47;return i=r(i,!o),i.length===0&&!o&&(i="."),i.length>0&&l&&(i+="/"),o?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,o=0;o<arguments.length;++o){var l=arguments[o];t(l),l.length>0&&(i===void 0?i=l:i+="/"+l)}return i===void 0?".":s.normalize(i)},relative:function(i,o){if(t(i),t(o),i===o||(i=s.resolve(i),o=s.resolve(o),i===o))return"";for(var l=1;l<i.length&&i.charCodeAt(l)===47;++l);for(var a=i.length,u=a-l,c=1;c<o.length&&o.charCodeAt(c)===47;++c);for(var f=o.length,p=f-c,m=u<p?u:p,y=-1,b=0;b<=m;++b){if(b===m){if(p>m){if(o.charCodeAt(c+b)===47)return o.slice(c+b+1);if(b===0)return o.slice(c+b)}else u>m&&(i.charCodeAt(l+b)===47?y=b:b===0&&(y=0));break}var O=i.charCodeAt(l+b),L=o.charCodeAt(c+b);if(O!==L)break;O===47&&(y=b)}var C="";for(b=l+y+1;b<=a;++b)(b===a||i.charCodeAt(b)===47)&&(C.length===0?C+="..":C+="/..");return C.length>0?C+o.slice(c+y):(c+=y,o.charCodeAt(c)===47&&++c,o.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var o=i.charCodeAt(0),l=o===47,a=-1,u=!0,c=i.length-1;c>=1;--c)if(o=i.charCodeAt(c),o===47){if(!u){a=c;break}}else u=!1;return a===-1?l?"/":".":l&&a===1?"//":i.slice(0,a)},basename:function(i,o){if(o!==void 0&&typeof o!="string")throw new TypeError('"ext" argument must be a string');t(i);var l=0,a=-1,u=!0,c;if(o!==void 0&&o.length>0&&o.length<=i.length){if(o.length===i.length&&o===i)return"";var f=o.length-1,p=-1;for(c=i.length-1;c>=0;--c){var m=i.charCodeAt(c);if(m===47){if(!u){l=c+1;break}}else p===-1&&(u=!1,p=c+1),f>=0&&(m===o.charCodeAt(f)?--f===-1&&(a=c):(f=-1,a=p))}return l===a?a=p:a===-1&&(a=i.length),i.slice(l,a)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){l=c+1;break}}else a===-1&&(u=!1,a=c+1);return a===-1?"":i.slice(l,a)}},extname:function(i){t(i);for(var o=-1,l=0,a=-1,u=!0,c=0,f=i.length-1;f>=0;--f){var p=i.charCodeAt(f);if(p===47){if(!u){l=f+1;break}continue}a===-1&&(u=!1,a=f+1),p===46?o===-1?o=f:c!==1&&(c=1):o!==-1&&(c=-1)}return o===-1||a===-1||c===0||c===1&&o===a-1&&o===l+1?"":i.slice(o,a)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var o={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return o;var l=i.charCodeAt(0),a=l===47,u;a?(o.root="/",u=1):u=0;for(var c=-1,f=0,p=-1,m=!0,y=i.length-1,b=0;y>=u;--y){if(l=i.charCodeAt(y),l===47){if(!m){f=y+1;break}continue}p===-1&&(m=!1,p=y+1),l===46?c===-1?c=y:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===f+1?p!==-1&&(f===0&&a?o.base=o.name=i.slice(1,p):o.base=o.name=i.slice(f,p)):(f===0&&a?(o.name=i.slice(1,c),o.base=i.slice(1,p)):(o.name=i.slice(f,c),o.base=i.slice(f,p)),o.ext=i.slice(c,p)),f>0?o.dir=i.slice(0,f-1):a&&(o.dir="/"),o},sep:"/",delimiter:":",win32:null,posix:null};return s.posix=s,ro=s,ro}function dv(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return mo?pv(e):gv(e)}function pv(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let s=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&s===102||r[n+1]==="5"&&s===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(fp,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,s=r[2];if(n<up||n>cp||s!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function gv(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function mv(e){let t=ll.resolve(e),r=e.charCodeAt(e.length-1);(r===lp||mo&&r===ap)&&t[t.length-1]!==ll.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace(hp,"%25")),!mo&&t.includes("\\")&&(t=t.replace(dp,"%5C")),t.includes(`
+`)&&(t=t.replace(pp,"%0A")),t.includes("\r")&&(t=t.replace(gp,"%0D")),t.includes("	")&&(t=t.replace(mp,"%09")),n.pathname=t,n}function op(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return yo?yv(e):bv(e)}function yv(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let s=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&s===102||r[n+1]==="5"&&s===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(Op,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,s=r[2];if(n<Tp||n>Ip||s!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function bv(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function sp(e){let t=sl.resolve(e),r=e.charCodeAt(e.length-1);(r===Ap||yo&&r===Sp)&&t[t.length-1]!==sl.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace(Cp,"%25")),!yo&&t.includes("\\")&&(t=t.replace(Rp,"%5C")),t.includes(`
+`)&&(t=t.replace(xp,"%0A")),t.includes("\r")&&(t=t.replace(Pp,"%0D")),t.includes("	")&&(t=t.replace(kp,"%09")),n.pathname=t,n}var Ne,Fc,Ut,Wc,$c,Hc,Vc,Di,bs,vs,ws,qc,Kc,Fi,Xr,Wi,ro,al,ll,zc,ap,lp,up,cp,mo,fp,hp,dp,pp,gp,mp,Yc,yp,bp,vp,wp,_p,Ep,Sp,Ap,Tp,Ip,yo,Op,Cp,Rp,xp,Pp,kp,vv=st(()=>{pe(),me(),ge(),iv(),sv(),lv(),fv(),np(),Ne={},Fc=Rr,Ut={isString:function(e){return typeof e=="string"},isObject:function(e){return typeof e=="object"&&e!==null},isNull:function(e){return e===null},isNullOrUndefined:function(e){return e==null}},Ne.parse=zn,Ne.resolve=function(e,t){return zn(e,!1,!0).resolve(t)},Ne.resolveObject=function(e,t){return e?zn(e,!1,!0).resolveObject(t):t},Ne.format=function(e){return Ut.isString(e)&&(e=zn(e)),e instanceof Ct?e.format():Ct.prototype.format.call(e)},Ne.Url=Ct,Wc=/^([a-z0-9.+-]+:)/i,$c=/:[0-9]*$/,Hc=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,Vc=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r",`
+`,"	"]),Di=["'"].concat(Vc),bs=["%","/","?",";","#"].concat(Di),vs=["/","?","#"],ws=/^[+a-z0-9A-Z_-]{0,63}$/,qc=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Kc={javascript:!0,"javascript:":!0},Fi={javascript:!0,"javascript:":!0},Xr={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},Wi=qt,Ct.prototype.parse=function(e,t,r){if(!Ut.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e.indexOf("?"),s=n!==-1&&n<e.indexOf("#")?"?":"#",i=e.split(s);i[0]=i[0].replace(/\\/g,"/");var o=e=i.join(s);if(o=o.trim(),!r&&e.split("#").length===1){var l=Hc.exec(o);if(l)return this.path=o,this.href=o,this.pathname=l[1],l[2]?(this.search=l[2],this.query=t?Wi.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var a=Wc.exec(o);if(a){var u=(a=a[0]).toLowerCase();this.protocol=u,o=o.substr(a.length)}if(r||a||o.match(/^\/\/[^@\/]+@[^@\/]+/)){var c=o.substr(0,2)==="//";!c||a&&Fi[a]||(o=o.substr(2),this.slashes=!0)}if(!Fi[a]&&(c||a&&!Xr[a])){for(var f,p,m=-1,y=0;y<vs.length;y++)(b=o.indexOf(vs[y]))!==-1&&(m===-1||b<m)&&(m=b);for((p=m===-1?o.lastIndexOf("@"):o.lastIndexOf("@",m))!==-1&&(f=o.slice(0,p),o=o.slice(p+1),this.auth=decodeURIComponent(f)),m=-1,y=0;y<bs.length;y++){var b;(b=o.indexOf(bs[y]))!==-1&&(m===-1||b<m)&&(m=b)}m===-1&&(m=o.length),this.host=o.slice(0,m),o=o.slice(m),this.parseHost(),this.hostname=this.hostname||"";var O=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!O)for(var L=this.hostname.split(/\./),C=(y=0,L.length);y<C;y++){var _=L[y];if(_&&!_.match(ws)){for(var B="",F=0,k=_.length;F<k;F++)_.charCodeAt(F)>127?B+="x":B+=_[F];if(!B.match(ws)){var P=L.slice(0,y),j=L.slice(y+1),D=_.match(qc);D&&(P.push(D[1]),j.unshift(D[2])),j.length&&(o="/"+j.join(".")+o),this.hostname=P.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),O||(this.hostname=Fc.toASCII(this.hostname));var X=this.port?":"+this.port:"",Z=this.hostname||"";this.host=Z+X,this.href+=this.host,O&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),o[0]!=="/"&&(o="/"+o))}if(!Kc[u])for(y=0,C=Di.length;y<C;y++){var S=Di[y];if(o.indexOf(S)!==-1){var z=encodeURIComponent(S);z===S&&(z=escape(S)),o=o.split(S).join(z)}}var ae=o.indexOf("#");ae!==-1&&(this.hash=o.substr(ae),o=o.slice(0,ae));var ee=o.indexOf("?");if(ee!==-1?(this.search=o.substr(ee),this.query=o.substr(ee+1),t&&(this.query=Wi.parse(this.query)),o=o.slice(0,ee)):t&&(this.search="",this.query={}),o&&(this.pathname=o),Xr[u]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){X=this.pathname||"";var le=this.search||"";this.path=X+le}return this.href=this.format(),this},Ct.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",s=!1,i="";this.host?s=e+this.host:this.hostname&&(s=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(s+=":"+this.port)),this.query&&Ut.isObject(this.query)&&Object.keys(this.query).length&&(i=Wi.stringify(this.query));var o=this.search||i&&"?"+i||"";return t&&t.substr(-1)!==":"&&(t+=":"),this.slashes||(!t||Xr[t])&&s!==!1?(s="//"+(s||""),r&&r.charAt(0)!=="/"&&(r="/"+r)):s||(s=""),n&&n.charAt(0)!=="#"&&(n="#"+n),o&&o.charAt(0)!=="?"&&(o="?"+o),t+s+(r=r.replace(/[?#]/g,function(l){return encodeURIComponent(l)}))+(o=o.replace("#","%23"))+n},Ct.prototype.resolve=function(e){return this.resolveObject(zn(e,!1,!0)).format()},Ct.prototype.resolveObject=function(e){if(Ut.isString(e)){var t=new Ct;t.parse(e,!1,!0),e=t}for(var r=new Ct,n=Object.keys(this),s=0;s<n.length;s++){var i=n[s];r[i]=this[i]}if(r.hash=e.hash,e.href==="")return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var o=Object.keys(e),l=0;l<o.length;l++){var a=o[l];a!=="protocol"&&(r[a]=e[a])}return Xr[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!Xr[e.protocol]){for(var u=Object.keys(e),c=0;c<u.length;c++){var f=u[c];r[f]=e[f]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||Fi[e.protocol])r.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),p[0]!==""&&p.unshift(""),p.length<2&&p.unshift(""),r.pathname=p.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",y=r.search||"";r.path=m+y}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var b=r.pathname&&r.pathname.charAt(0)==="/",O=e.host||e.pathname&&e.pathname.charAt(0)==="/",L=O||b||r.host&&e.pathname,C=L,_=r.pathname&&r.pathname.split("/")||[],B=(p=e.pathname&&e.pathname.split("/")||[],r.protocol&&!Xr[r.protocol]);if(B&&(r.hostname="",r.port=null,r.host&&(_[0]===""?_[0]=r.host:_.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(p[0]===""?p[0]=e.host:p.unshift(e.host)),e.host=null),L=L&&(p[0]===""||_[0]==="")),O)r.host=e.host||e.host===""?e.host:r.host,r.hostname=e.hostname||e.hostname===""?e.hostname:r.hostname,r.search=e.search,r.query=e.query,_=p;else if(p.length)_||(_=[]),_.pop(),_=_.concat(p),r.search=e.search,r.query=e.query;else if(!Ut.isNullOrUndefined(e.search))return B&&(r.hostname=r.host=_.shift(),(D=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=D.shift(),r.host=r.hostname=D.shift())),r.search=e.search,r.query=e.query,Ut.isNull(r.pathname)&&Ut.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!_.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var F=_.slice(-1)[0],k=(r.host||e.host||_.length>1)&&(F==="."||F==="..")||F==="",P=0,j=_.length;j>=0;j--)(F=_[j])==="."?_.splice(j,1):F===".."?(_.splice(j,1),P++):P&&(_.splice(j,1),P--);if(!L&&!C)for(;P--;P)_.unshift("..");!L||_[0]===""||_[0]&&_[0].charAt(0)==="/"||_.unshift(""),k&&_.join("/").substr(-1)!=="/"&&_.push("");var D,X=_[0]===""||_[0]&&_[0].charAt(0)==="/";return B&&(r.hostname=r.host=X?"":_.length?_.shift():"",(D=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=D.shift(),r.host=r.hostname=D.shift())),(L=L||r.host&&_.length)&&!X&&_.unshift(""),_.length?r.pathname=_.join("/"):(r.pathname=null,r.path=null),Ut.isNull(r.pathname)&&Ut.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},Ct.prototype.parseHost=function(){var e=this.host,t=$c.exec(e);t&&((t=t[0])!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},Ne.Url,Ne.format,Ne.resolve,Ne.resolveObject,ro={},al=!1,ll=hv(),zc=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,Ne.URL=typeof URL<"u"?URL:null,Ne.pathToFileURL=mv,Ne.fileURLToPath=dv,Ne.Url,Ne.format,Ne.resolve,Ne.resolveObject,Ne.URL,ap=92,lp=47,up=97,cp=122,mo=zc==="win32",fp=/\//g,hp=/%/g,dp=/\\/g,pp=/\n/g,gp=/\r/g,mp=/\t/g,Yc=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,Ne.URL=typeof URL<"u"?URL:null,Ne.pathToFileURL=sp,Ne.fileURLToPath=op,yp=Ne.Url,bp=Ne.format,vp=Ne.resolve,wp=Ne.resolveObject,_p=Ne.parse,Ep=Ne.URL,Sp=92,Ap=47,Tp=97,Ip=122,yo=Yc==="win32",Op=/\//g,Cp=/%/g,Rp=/\\/g,xp=/\n/g,Pp=/\r/g,kp=/\t/g}),wv=ve((e,t)=>{pe(),me(),ge(),t.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),Jl=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.BufferedDuplex=e.writev=void 0;var t=yn(),r=(lt(),De(at));function n(i,o){let l=new Array(i.length);for(let a=0;a<i.length;a++)typeof i[a].chunk=="string"?l[a]=r.Buffer.from(i[a].chunk,"utf8"):l[a]=i[a].chunk;this._write(r.Buffer.concat(l),"binary",o)}e.writev=n;var s=class extends t.Duplex{constructor(i,o,l){super({objectMode:!0}),this.proxy=o,this.socket=l,this.writeQueue=[],i.objectMode||(this._writev=n.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",a=>{this.destroyed||this.push(a)})}_read(i){this.proxy.read(i)}_write(i,o,l){this.isSocketOpen?this.writeToProxy(i,o,l):this.writeQueue.push({chunk:i,encoding:o,cb:l})}_final(i){this.writeQueue=[],this.proxy.end(i)}_destroy(i,o){this.writeQueue=[],this.proxy.destroy(),o(i)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(i,o,l){this.proxy.write(i,o)===!1?this.proxy.once("drain",l):l()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:i,encoding:o,cb:l}=this.writeQueue.shift();this.writeToProxy(i,o,l)}}};e.BufferedDuplex=s}),$i=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(L){return L&&L.__esModule?L:{default:L}};Object.defineProperty(e,"__esModule",{value:!0}),e.streamBuilder=e.browserStreamBuilder=void 0;var r=(lt(),De(at)),n=t(wv()),s=t(gr()),i=yn(),o=t(Wo()),l=Jl(),a=(0,s.default)("mqttjs:ws"),u=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function c(L,C){let _=`${L.protocol}://${L.hostname}:${L.port}${L.path}`;return typeof L.transformWsUrl=="function"&&(_=L.transformWsUrl(_,L,C)),_}function f(L){let C=L;return L.port||(L.protocol==="wss"?C.port=443:C.port=80),L.path||(C.path="/"),L.wsOptions||(C.wsOptions={}),!o.default&&!L.forceNativeWebSocket&&L.protocol==="wss"&&u.forEach(_=>{Object.prototype.hasOwnProperty.call(L,_)&&!Object.prototype.hasOwnProperty.call(L.wsOptions,_)&&(C.wsOptions[_]=L[_])}),C}function p(L){let C=f(L);if(C.hostname||(C.hostname=C.host),!C.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let _=new URL(document.URL);C.hostname=_.hostname,C.port||(C.port=Number(_.port))}return C.objectMode===void 0&&(C.objectMode=!(C.binary===!0||C.binary===void 0)),C}function m(L,C,_){a("createWebSocket"),a(`protocol: ${_.protocolId} ${_.protocolVersion}`);let B=_.protocolId==="MQIsdp"&&_.protocolVersion===3?"mqttv3.1":"mqtt";a(`creating new Websocket for url: ${C} and protocol: ${B}`);let F;return _.createWebsocket?F=_.createWebsocket(C,[B],_):F=new n.default(C,[B],_.wsOptions),F}function y(L,C){let _=C.protocolId==="MQIsdp"&&C.protocolVersion===3?"mqttv3.1":"mqtt",B=c(C,L),F;return C.createWebsocket?F=C.createWebsocket(B,[_],C):F=new WebSocket(B,[_]),F.binaryType="arraybuffer",F}var b=(L,C)=>{a("streamBuilder");let _=f(C);_.hostname=_.hostname||_.host||"localhost";let B=c(_,L),F=m(L,B,_),k=n.default.createWebSocketStream(F,_.wsOptions);return k.url=B,F.on("close",()=>{k.destroy()}),k};e.streamBuilder=b;var O=(L,C)=>{a("browserStreamBuilder");let _,B=p(C).browserBufferSize||1024*512,F=C.browserBufferTimeout||1e3,k=!C.objectMode,P=y(L,C),j=X(C,ee,le);C.objectMode||(j._writev=l.writev.bind(j)),j.on("close",()=>{P.close()});let D=typeof P.addEventListener<"u";P.readyState===P.OPEN?(_=j,_.socket=P):(_=new l.BufferedDuplex(C,j,P),D?P.addEventListener("open",Z):P.onopen=Z),D?(P.addEventListener("close",S),P.addEventListener("error",z),P.addEventListener("message",ae)):(P.onclose=S,P.onerror=z,P.onmessage=ae);function X(ne,G,de){let ce=new i.Transform({objectMode:ne.objectMode});return ce._write=G,ce._flush=de,ce}function Z(){a("WebSocket onOpen"),_ instanceof l.BufferedDuplex&&_.socketReady()}function S(ne){a("WebSocket onClose",ne),_.end(),_.destroy()}function z(ne){a("WebSocket onError",ne);let G=new Error("WebSocket error");G.event=ne,_.destroy(G)}async function ae(ne){let{data:G}=ne;G instanceof ArrayBuffer?G=r.Buffer.from(G):G instanceof Blob?G=r.Buffer.from(await new Response(G).arrayBuffer()):G=r.Buffer.from(G,"utf8"),j&&!j.destroyed&&j.push(G)}function ee(ne,G,de){if(P.bufferedAmount>B){setTimeout(ee,F,ne,G,de);return}k&&typeof ne=="string"&&(ne=r.Buffer.from(ne,"utf8"));try{P.send(ne)}catch(ce){return de(ce)}de()}function le(ne){P.close(),ne()}return _};e.browserStreamBuilder=O}),Xl={};pn(Xl,{Server:()=>qe,Socket:()=>qe,Stream:()=>qe,_createServerHandle:()=>qe,_normalizeArgs:()=>qe,_setSimultaneousAccepts:()=>qe,connect:()=>qe,createConnection:()=>qe,createServer:()=>qe,default:()=>Bp,isIP:()=>qe,isIPv4:()=>qe,isIPv6:()=>qe});function qe(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var Bp,Mp=st(()=>{pe(),me(),ge(),Bp={_createServerHandle:qe,_normalizeArgs:qe,_setSimultaneousAccepts:qe,connect:qe,createConnection:qe,createServer:qe,isIP:qe,isIPv4:qe,isIPv6:qe,Server:qe,Socket:qe,Stream:qe}}),Gc=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((Mp(),De(Xl))),n=t(gr()),s=(0,n.default)("mqttjs:tcp"),i=(o,l)=>{l.port=l.port||1883,l.hostname=l.hostname||l.host||"localhost";let{port:a,path:u}=l,c=l.hostname;return s("port %d and host %s",a,c),r.default.createConnection({port:a,host:c,path:u})};e.default=i}),Lp={};pn(Lp,{default:()=>Np});var Np,_v=st(()=>{pe(),me(),ge(),Np={}}),Qc=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((_v(),De(Lp))),n=t((Mp(),De(Xl))),s=t(gr()),i=(0,s.default)("mqttjs:tls"),o=(l,a)=>{a.port=a.port||8883,a.host=a.hostname||a.host||"localhost",n.default.isIP(a.host)===0&&(a.servername=a.host),a.rejectUnauthorized=a.rejectUnauthorized!==!1,delete a.path,i("port %d host %s rejectUnauthorized %b",a.port,a.host,a.rejectUnauthorized);let u=r.default.connect(a);u.on("secureConnect",()=>{a.rejectUnauthorized&&!u.authorized?u.emit("error",new Error("TLS not authorized")):u.removeListener("error",c)});function c(f){a.rejectUnauthorized&&l.emit("error",f),u.end()}return u.on("error",c),u};e.default=o}),Jc=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=(lt(),De(at)),r=yn(),n=Jl(),s,i,o;function l(){let p=new r.Transform;return p._write=(m,y,b)=>{s.send({data:m.buffer,success(){b()},fail(O){b(new Error(O))}})},p._flush=m=>{s.close({success(){m()}})},p}function a(p){p.hostname||(p.hostname="localhost"),p.path||(p.path="/"),p.wsOptions||(p.wsOptions={})}function u(p,m){let y=p.protocol==="wxs"?"wss":"ws",b=`${y}://${p.hostname}${p.path}`;return p.port&&p.port!==80&&p.port!==443&&(b=`${y}://${p.hostname}:${p.port}${p.path}`),typeof p.transformWsUrl=="function"&&(b=p.transformWsUrl(b,p,m)),b}function c(){s.onOpen(()=>{o.socketReady()}),s.onMessage(p=>{let{data:m}=p;m instanceof ArrayBuffer?m=t.Buffer.from(m):m=t.Buffer.from(m,"utf8"),i.push(m)}),s.onClose(()=>{o.emit("close"),o.end(),o.destroy()}),s.onError(p=>{let m=new Error(p.errMsg);o.destroy(m)})}var f=(p,m)=>{if(m.hostname=m.hostname||m.host,!m.hostname)throw new Error("Could not determine host. Specify host manually.");let y=m.protocolId==="MQIsdp"&&m.protocolVersion===3?"mqttv3.1":"mqtt";a(m);let b=u(m,p);s=wx.connectSocket({url:b,protocols:[y]}),i=l(),o=new n.BufferedDuplex(m,i,s),o._destroy=(L,C)=>{s.close({success(){C&&C(L)}})};let O=o.destroy;return o.destroy=(L,C)=>(o.destroy=O,setTimeout(()=>{s.close({fail(){o._destroy(L,C)}})},0),o),c(),o};e.default=f}),Xc=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=(lt(),De(at)),r=yn(),n=Jl(),s,i,o,l=!1;function a(){let m=new r.Transform;return m._write=(y,b,O)=>{s.sendSocketMessage({data:y.buffer,success(){O()},fail(){O(new Error)}})},m._flush=y=>{s.closeSocket({success(){y()}})},m}function u(m){m.hostname||(m.hostname="localhost"),m.path||(m.path="/"),m.wsOptions||(m.wsOptions={})}function c(m,y){let b=m.protocol==="alis"?"wss":"ws",O=`${b}://${m.hostname}${m.path}`;return m.port&&m.port!==80&&m.port!==443&&(O=`${b}://${m.hostname}:${m.port}${m.path}`),typeof m.transformWsUrl=="function"&&(O=m.transformWsUrl(O,m,y)),O}function f(){l||(l=!0,s.onSocketOpen(()=>{o.socketReady()}),s.onSocketMessage(m=>{if(typeof m.data=="string"){let y=t.Buffer.from(m.data,"base64");i.push(y)}else{let y=new FileReader;y.addEventListener("load",()=>{let b=y.result;b instanceof ArrayBuffer?b=t.Buffer.from(b):b=t.Buffer.from(b,"utf8"),i.push(b)}),y.readAsArrayBuffer(m.data)}}),s.onSocketClose(()=>{o.end(),o.destroy()}),s.onSocketError(m=>{o.destroy(m)}))}var p=(m,y)=>{if(y.hostname=y.hostname||y.host,!y.hostname)throw new Error("Could not determine host. Specify host manually.");let b=y.protocolId==="MQIsdp"&&y.protocolVersion===3?"mqttv3.1":"mqtt";u(y);let O=c(y,m);return s=y.my,s.connectSocket({url:O,protocols:b}),i=a(),o=new n.BufferedDuplex(y,i,s),f(),o};e.default=p}),Ev=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(e,"__esModule",{value:!0}),e.connectAsync=void 0;var r=t(gr()),n=t((vv(),De(ip))),s=t(el()),i=t(Wo());typeof(Me==null?void 0:Me.nextTick)!="function"&&(Me.nextTick=setImmediate);var o=(0,r.default)("mqttjs"),l=null;function a(f){let p;f.auth&&(p=f.auth.match(/^(.+):(.+)$/),p?(f.username=p[1],f.password=p[2]):f.username=f.auth)}function u(f,p){var m,y,b,O;if(o("connecting to an MQTT broker..."),typeof f=="object"&&!p&&(p=f,f=""),p=p||{},f&&typeof f=="string"){let _=n.default.parse(f,!0),B={};if(_.port!=null&&(B.port=Number(_.port)),B.host=_.hostname,B.query=_.query,B.auth=_.auth,B.protocol=_.protocol,B.path=_.path,B.protocol=(m=B.protocol)===null||m===void 0?void 0:m.replace(/:$/,""),p=Object.assign(Object.assign({},B),p),!p.protocol)throw new Error("Missing protocol")}if(p.unixSocket=p.unixSocket||((y=p.protocol)===null||y===void 0?void 0:y.includes("+unix")),p.unixSocket?p.protocol=p.protocol.replace("+unix",""):!(!((b=p.protocol)===null||b===void 0)&&b.startsWith("ws"))&&!(!((O=p.protocol)===null||O===void 0)&&O.startsWith("wx"))&&delete p.path,a(p),p.query&&typeof p.query.clientId=="string"&&(p.clientId=p.query.clientId),p.cert&&p.key)if(p.protocol){if(["mqtts","wss","wxs","alis"].indexOf(p.protocol)===-1)switch(p.protocol){case"mqtt":p.protocol="mqtts";break;case"ws":p.protocol="wss";break;case"wx":p.protocol="wxs";break;case"ali":p.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${p.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(l||(l={},!i.default&&!p.forceNativeWebSocket?(l.ws=$i().streamBuilder,l.wss=$i().streamBuilder,l.mqtt=Gc().default,l.tcp=Gc().default,l.ssl=Qc().default,l.tls=l.ssl,l.mqtts=Qc().default):(l.ws=$i().browserStreamBuilder,l.wss=$i().browserStreamBuilder,l.wx=Jc().default,l.wxs=Jc().default,l.ali=Xc().default,l.alis=Xc().default)),!l[p.protocol]){let _=["mqtts","wss"].indexOf(p.protocol)!==-1;p.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((B,F)=>_&&F%2===0?!1:typeof l[B]=="function")[0]}if(p.clean===!1&&!p.clientId)throw new Error("Missing clientId for unclean clients");p.protocol&&(p.defaultProtocol=p.protocol);function L(_){return p.servers&&((!_._reconnectCount||_._reconnectCount===p.servers.length)&&(_._reconnectCount=0),p.host=p.servers[_._reconnectCount].host,p.port=p.servers[_._reconnectCount].port,p.protocol=p.servers[_._reconnectCount].protocol?p.servers[_._reconnectCount].protocol:p.defaultProtocol,p.hostname=p.host,_._reconnectCount++),o("calling streambuilder for",p.protocol),l[p.protocol](_,p)}let C=new s.default(L,p);return C.on("error",()=>{}),C}function c(f,p,m=!0){return new Promise((y,b)=>{let O=u(f,p),L={connect:_=>{C(),y(O)},end:()=>{C(),y(O)},error:_=>{C(),O.end(),b(_)}};m===!1&&(L.close=()=>{L.error(new Error("Couldn't connect to server"))});function C(){Object.keys(L).forEach(_=>{O.off(_,L[_])})}Object.keys(L).forEach(_=>{O.on(_,L[_])})})}e.connectAsync=c,e.default=u}),Zc=ve(e=>{pe(),me(),ge();var t=e&&e.__createBinding||(Object.create?function(m,y,b,O){O===void 0&&(O=b);var L=Object.getOwnPropertyDescriptor(y,b);(!L||("get"in L?!y.__esModule:L.writable||L.configurable))&&(L={enumerable:!0,get:function(){return y[b]}}),Object.defineProperty(m,O,L)}:function(m,y,b,O){O===void 0&&(O=b),m[O]=y[b]}),r=e&&e.__setModuleDefault||(Object.create?function(m,y){Object.defineProperty(m,"default",{enumerable:!0,value:y})}:function(m,y){m.default=y}),n=e&&e.__importStar||function(m){if(m&&m.__esModule)return m;var y={};if(m!=null)for(var b in m)b!=="default"&&Object.prototype.hasOwnProperty.call(m,b)&&t(y,m,b);return r(y,m),y},s=e&&e.__exportStar||function(m,y){for(var b in m)b!=="default"&&!Object.prototype.hasOwnProperty.call(y,b)&&t(y,m,b)},i=e&&e.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=e.KeepaliveManager=e.UniqueMessageIdProvider=e.DefaultMessageIdProvider=e.Store=e.MqttClient=e.connectAsync=e.connect=e.Client=void 0;var o=i(el());e.MqttClient=o.default;var l=i(Ld());e.DefaultMessageIdProvider=l.default;var a=i(nv());e.UniqueMessageIdProvider=a.default;var u=i(Nd());e.Store=u.default;var c=n(Ev());e.connect=c.default,Object.defineProperty(e,"connectAsync",{enumerable:!0,get:function(){return c.connectAsync}});var f=i(Xd());e.KeepaliveManager=f.default,e.Client=o.default,s(el(),e),s(Dn(),e);var p=Fo();Object.defineProperty(e,"ReasonCodes",{enumerable:!0,get:function(){return p.ReasonCodes}})}),Sv=ve(e=>{pe(),me(),ge();var t=e&&e.__createBinding||(Object.create?function(o,l,a,u){u===void 0&&(u=a);var c=Object.getOwnPropertyDescriptor(l,a);(!c||("get"in c?!l.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return l[a]}}),Object.defineProperty(o,u,c)}:function(o,l,a,u){u===void 0&&(u=a),o[u]=l[a]}),r=e&&e.__setModuleDefault||(Object.create?function(o,l){Object.defineProperty(o,"default",{enumerable:!0,value:l})}:function(o,l){o.default=l}),n=e&&e.__importStar||function(o){if(o&&o.__esModule)return o;var l={};if(o!=null)for(var a in o)a!=="default"&&Object.prototype.hasOwnProperty.call(o,a)&&t(l,o,a);return r(l,o),l},s=e&&e.__exportStar||function(o,l){for(var a in o)a!=="default"&&!Object.prototype.hasOwnProperty.call(l,a)&&t(l,o,a)};Object.defineProperty(e,"__esModule",{value:!0});var i=n(Zc());e.default=i,s(Zc(),e)});const Jw=Sv();/*! Bundled license information:
+
+@jspm/core/nodelibs/browser/buffer.js:
+  (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
+*/var _t="top",Bt="bottom",Mt="right",Et="left",Zl="auto",Ii=[_t,Bt,Mt,Et],Bn="start",_i="end",Av="clippingParents",jp="viewport",Yn="popper",Tv="reference",ef=Ii.reduce(function(e,t){return e.concat([t+"-"+Bn,t+"-"+_i])},[]),Up=[].concat(Ii,[Zl]).reduce(function(e,t){return e.concat([t,t+"-"+Bn,t+"-"+_i])},[]),Iv="beforeRead",Ov="read",Cv="afterRead",Rv="beforeMain",xv="main",Pv="afterMain",kv="beforeWrite",Bv="write",Mv="afterWrite",Lv=[Iv,Ov,Cv,Rv,xv,Pv,kv,Bv,Mv];function Zt(e){return e?(e.nodeName||"").toLowerCase():null}function Lt(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function dn(e){var t=Lt(e).Element;return e instanceof t||e instanceof Element}function Pt(e){var t=Lt(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function eu(e){if(typeof ShadowRoot>"u")return!1;var t=Lt(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Nv(e){var t=e.state;Object.keys(t.elements).forEach(function(r){var n=t.styles[r]||{},s=t.attributes[r]||{},i=t.elements[r];!Pt(i)||!Zt(i)||(Object.assign(i.style,n),Object.keys(s).forEach(function(o){var l=s[o];l===!1?i.removeAttribute(o):i.setAttribute(o,l===!0?"":l)}))})}function jv(e){var t=e.state,r={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.styles=r,t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach(function(n){var s=t.elements[n],i=t.attributes[n]||{},o=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:r[n]),l=o.reduce(function(a,u){return a[u]="",a},{});!Pt(s)||!Zt(s)||(Object.assign(s.style,l),Object.keys(i).forEach(function(a){s.removeAttribute(a)}))})}}const Uv={name:"applyStyles",enabled:!0,phase:"write",fn:Nv,effect:jv,requires:["computeStyles"]};function Xt(e){return e.split("-")[0]}var fn=Math.max,bo=Math.min,Mn=Math.round;function ul(){var e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Dp(){return!/^((?!chrome|android).)*safari/i.test(ul())}function Ln(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!1);var n=e.getBoundingClientRect(),s=1,i=1;t&&Pt(e)&&(s=e.offsetWidth>0&&Mn(n.width)/e.offsetWidth||1,i=e.offsetHeight>0&&Mn(n.height)/e.offsetHeight||1);var o=dn(e)?Lt(e):window,l=o.visualViewport,a=!Dp()&&r,u=(n.left+(a&&l?l.offsetLeft:0))/s,c=(n.top+(a&&l?l.offsetTop:0))/i,f=n.width/s,p=n.height/i;return{width:f,height:p,top:c,right:u+f,bottom:c+p,left:u,x:u,y:c}}function tu(e){var t=Ln(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function Fp(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&eu(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function mr(e){return Lt(e).getComputedStyle(e)}function Dv(e){return["table","td","th"].indexOf(Zt(e))>=0}function $r(e){return((dn(e)?e.ownerDocument:e.document)||window.document).documentElement}function $o(e){return Zt(e)==="html"?e:e.assignedSlot||e.parentNode||(eu(e)?e.host:null)||$r(e)}function tf(e){return!Pt(e)||mr(e).position==="fixed"?null:e.offsetParent}function Fv(e){var t=/firefox/i.test(ul()),r=/Trident/i.test(ul());if(r&&Pt(e)){var n=mr(e);if(n.position==="fixed")return null}var s=$o(e);for(eu(s)&&(s=s.host);Pt(s)&&["html","body"].indexOf(Zt(s))<0;){var i=mr(s);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||t&&i.willChange==="filter"||t&&i.filter&&i.filter!=="none")return s;s=s.parentNode}return null}function Oi(e){for(var t=Lt(e),r=tf(e);r&&Dv(r)&&mr(r).position==="static";)r=tf(r);return r&&(Zt(r)==="html"||Zt(r)==="body"&&mr(r).position==="static")?t:r||Fv(e)||t}function ru(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function ui(e,t,r){return fn(e,bo(t,r))}function Wv(e,t,r){var n=ui(e,t,r);return n>r?r:n}function Wp(){return{top:0,right:0,bottom:0,left:0}}function $p(e){return Object.assign({},Wp(),e)}function Hp(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}var $v=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,$p(typeof t!="number"?t:Hp(t,Ii))};function Hv(e){var t,r=e.state,n=e.name,s=e.options,i=r.elements.arrow,o=r.modifiersData.popperOffsets,l=Xt(r.placement),a=ru(l),u=[Et,Mt].indexOf(l)>=0,c=u?"height":"width";if(!(!i||!o)){var f=$v(s.padding,r),p=tu(i),m=a==="y"?_t:Et,y=a==="y"?Bt:Mt,b=r.rects.reference[c]+r.rects.reference[a]-o[a]-r.rects.popper[c],O=o[a]-r.rects.reference[a],L=Oi(i),C=L?a==="y"?L.clientHeight||0:L.clientWidth||0:0,_=b/2-O/2,B=f[m],F=C-p[c]-f[y],k=C/2-p[c]/2+_,P=ui(B,k,F),j=a;r.modifiersData[n]=(t={},t[j]=P,t.centerOffset=P-k,t)}}function Vv(e){var t=e.state,r=e.options,n=r.element,s=n===void 0?"[data-popper-arrow]":n;s!=null&&(typeof s=="string"&&(s=t.elements.popper.querySelector(s),!s)||Fp(t.elements.popper,s)&&(t.elements.arrow=s))}const qv={name:"arrow",enabled:!0,phase:"main",fn:Hv,effect:Vv,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Nn(e){return e.split("-")[1]}var Kv={top:"auto",right:"auto",bottom:"auto",left:"auto"};function zv(e){var t=e.x,r=e.y,n=window,s=n.devicePixelRatio||1;return{x:Mn(t*s)/s||0,y:Mn(r*s)/s||0}}function rf(e){var t,r=e.popper,n=e.popperRect,s=e.placement,i=e.variation,o=e.offsets,l=e.position,a=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,f=e.isFixed,p=o.x,m=p===void 0?0:p,y=o.y,b=y===void 0?0:y,O=typeof c=="function"?c({x:m,y:b}):{x:m,y:b};m=O.x,b=O.y;var L=o.hasOwnProperty("x"),C=o.hasOwnProperty("y"),_=Et,B=_t,F=window;if(u){var k=Oi(r),P="clientHeight",j="clientWidth";if(k===Lt(r)&&(k=$r(r),mr(k).position!=="static"&&l==="absolute"&&(P="scrollHeight",j="scrollWidth")),k=k,s===_t||(s===Et||s===Mt)&&i===_i){B=Bt;var D=f&&k===F&&F.visualViewport?F.visualViewport.height:k[P];b-=D-n.height,b*=a?1:-1}if(s===Et||(s===_t||s===Bt)&&i===_i){_=Mt;var X=f&&k===F&&F.visualViewport?F.visualViewport.width:k[j];m-=X-n.width,m*=a?1:-1}}var Z=Object.assign({position:l},u&&Kv),S=c===!0?zv({x:m,y:b}):{x:m,y:b};if(m=S.x,b=S.y,a){var z;return Object.assign({},Z,(z={},z[B]=C?"0":"",z[_]=L?"0":"",z.transform=(F.devicePixelRatio||1)<=1?"translate("+m+"px, "+b+"px)":"translate3d("+m+"px, "+b+"px, 0)",z))}return Object.assign({},Z,(t={},t[B]=C?b+"px":"",t[_]=L?m+"px":"",t.transform="",t))}function Yv(e){var t=e.state,r=e.options,n=r.gpuAcceleration,s=n===void 0?!0:n,i=r.adaptive,o=i===void 0?!0:i,l=r.roundOffsets,a=l===void 0?!0:l,u={placement:Xt(t.placement),variation:Nn(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:s,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,rf(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:a})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,rf(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:a})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const Gv={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Yv,data:{}};var Hi={passive:!0};function Qv(e){var t=e.state,r=e.instance,n=e.options,s=n.scroll,i=s===void 0?!0:s,o=n.resize,l=o===void 0?!0:o,a=Lt(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&u.forEach(function(c){c.addEventListener("scroll",r.update,Hi)}),l&&a.addEventListener("resize",r.update,Hi),function(){i&&u.forEach(function(c){c.removeEventListener("scroll",r.update,Hi)}),l&&a.removeEventListener("resize",r.update,Hi)}}const Jv={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Qv,data:{}};var Xv={left:"right",right:"left",bottom:"top",top:"bottom"};function no(e){return e.replace(/left|right|bottom|top/g,function(t){return Xv[t]})}var Zv={start:"end",end:"start"};function nf(e){return e.replace(/start|end/g,function(t){return Zv[t]})}function nu(e){var t=Lt(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function iu(e){return Ln($r(e)).left+nu(e).scrollLeft}function ew(e,t){var r=Lt(e),n=$r(e),s=r.visualViewport,i=n.clientWidth,o=n.clientHeight,l=0,a=0;if(s){i=s.width,o=s.height;var u=Dp();(u||!u&&t==="fixed")&&(l=s.offsetLeft,a=s.offsetTop)}return{width:i,height:o,x:l+iu(e),y:a}}function tw(e){var t,r=$r(e),n=nu(e),s=(t=e.ownerDocument)==null?void 0:t.body,i=fn(r.scrollWidth,r.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),o=fn(r.scrollHeight,r.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),l=-n.scrollLeft+iu(e),a=-n.scrollTop;return mr(s||r).direction==="rtl"&&(l+=fn(r.clientWidth,s?s.clientWidth:0)-i),{width:i,height:o,x:l,y:a}}function ou(e){var t=mr(e),r=t.overflow,n=t.overflowX,s=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+s+n)}function Vp(e){return["html","body","#document"].indexOf(Zt(e))>=0?e.ownerDocument.body:Pt(e)&&ou(e)?e:Vp($o(e))}function ci(e,t){var r;t===void 0&&(t=[]);var n=Vp(e),s=n===((r=e.ownerDocument)==null?void 0:r.body),i=Lt(n),o=s?[i].concat(i.visualViewport||[],ou(n)?n:[]):n,l=t.concat(o);return s?l:l.concat(ci($o(o)))}function cl(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function rw(e,t){var r=Ln(e,!1,t==="fixed");return r.top=r.top+e.clientTop,r.left=r.left+e.clientLeft,r.bottom=r.top+e.clientHeight,r.right=r.left+e.clientWidth,r.width=e.clientWidth,r.height=e.clientHeight,r.x=r.left,r.y=r.top,r}function of(e,t,r){return t===jp?cl(ew(e,r)):dn(t)?rw(t,r):cl(tw($r(e)))}function nw(e){var t=ci($o(e)),r=["absolute","fixed"].indexOf(mr(e).position)>=0,n=r&&Pt(e)?Oi(e):e;return dn(n)?t.filter(function(s){return dn(s)&&Fp(s,n)&&Zt(s)!=="body"}):[]}function iw(e,t,r,n){var s=t==="clippingParents"?nw(e):[].concat(t),i=[].concat(s,[r]),o=i[0],l=i.reduce(function(a,u){var c=of(e,u,n);return a.top=fn(c.top,a.top),a.right=bo(c.right,a.right),a.bottom=bo(c.bottom,a.bottom),a.left=fn(c.left,a.left),a},of(e,o,n));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}function qp(e){var t=e.reference,r=e.element,n=e.placement,s=n?Xt(n):null,i=n?Nn(n):null,o=t.x+t.width/2-r.width/2,l=t.y+t.height/2-r.height/2,a;switch(s){case _t:a={x:o,y:t.y-r.height};break;case Bt:a={x:o,y:t.y+t.height};break;case Mt:a={x:t.x+t.width,y:l};break;case Et:a={x:t.x-r.width,y:l};break;default:a={x:t.x,y:t.y}}var u=s?ru(s):null;if(u!=null){var c=u==="y"?"height":"width";switch(i){case Bn:a[u]=a[u]-(t[c]/2-r[c]/2);break;case _i:a[u]=a[u]+(t[c]/2-r[c]/2);break}}return a}function Ei(e,t){t===void 0&&(t={});var r=t,n=r.placement,s=n===void 0?e.placement:n,i=r.strategy,o=i===void 0?e.strategy:i,l=r.boundary,a=l===void 0?Av:l,u=r.rootBoundary,c=u===void 0?jp:u,f=r.elementContext,p=f===void 0?Yn:f,m=r.altBoundary,y=m===void 0?!1:m,b=r.padding,O=b===void 0?0:b,L=$p(typeof O!="number"?O:Hp(O,Ii)),C=p===Yn?Tv:Yn,_=e.rects.popper,B=e.elements[y?C:p],F=iw(dn(B)?B:B.contextElement||$r(e.elements.popper),a,c,o),k=Ln(e.elements.reference),P=qp({reference:k,element:_,strategy:"absolute",placement:s}),j=cl(Object.assign({},_,P)),D=p===Yn?j:k,X={top:F.top-D.top+L.top,bottom:D.bottom-F.bottom+L.bottom,left:F.left-D.left+L.left,right:D.right-F.right+L.right},Z=e.modifiersData.offset;if(p===Yn&&Z){var S=Z[s];Object.keys(X).forEach(function(z){var ae=[Mt,Bt].indexOf(z)>=0?1:-1,ee=[_t,Bt].indexOf(z)>=0?"y":"x";X[z]+=S[ee]*ae})}return X}function ow(e,t){t===void 0&&(t={});var r=t,n=r.placement,s=r.boundary,i=r.rootBoundary,o=r.padding,l=r.flipVariations,a=r.allowedAutoPlacements,u=a===void 0?Up:a,c=Nn(n),f=c?l?ef:ef.filter(function(y){return Nn(y)===c}):Ii,p=f.filter(function(y){return u.indexOf(y)>=0});p.length===0&&(p=f);var m=p.reduce(function(y,b){return y[b]=Ei(e,{placement:b,boundary:s,rootBoundary:i,padding:o})[Xt(b)],y},{});return Object.keys(m).sort(function(y,b){return m[y]-m[b]})}function sw(e){if(Xt(e)===Zl)return[];var t=no(e);return[nf(e),t,nf(t)]}function aw(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var s=r.mainAxis,i=s===void 0?!0:s,o=r.altAxis,l=o===void 0?!0:o,a=r.fallbackPlacements,u=r.padding,c=r.boundary,f=r.rootBoundary,p=r.altBoundary,m=r.flipVariations,y=m===void 0?!0:m,b=r.allowedAutoPlacements,O=t.options.placement,L=Xt(O),C=L===O,_=a||(C||!y?[no(O)]:sw(O)),B=[O].concat(_).reduce(function(he,we){return he.concat(Xt(we)===Zl?ow(t,{placement:we,boundary:c,rootBoundary:f,padding:u,flipVariations:y,allowedAutoPlacements:b}):we)},[]),F=t.rects.reference,k=t.rects.popper,P=new Map,j=!0,D=B[0],X=0;X<B.length;X++){var Z=B[X],S=Xt(Z),z=Nn(Z)===Bn,ae=[_t,Bt].indexOf(S)>=0,ee=ae?"width":"height",le=Ei(t,{placement:Z,boundary:c,rootBoundary:f,altBoundary:p,padding:u}),ne=ae?z?Mt:Et:z?Bt:_t;F[ee]>k[ee]&&(ne=no(ne));var G=no(ne),de=[];if(i&&de.push(le[S]<=0),l&&de.push(le[ne]<=0,le[G]<=0),de.every(function(he){return he})){D=Z,j=!1;break}P.set(Z,de)}if(j)for(var ce=y?3:1,be=function(we){var fe=B.find(function(E){var I=P.get(E);if(I)return I.slice(0,we).every(function(K){return K})});if(fe)return D=fe,"break"},A=ce;A>0;A--){var ie=be(A);if(ie==="break")break}t.placement!==D&&(t.modifiersData[n]._skip=!0,t.placement=D,t.reset=!0)}}const lw={name:"flip",enabled:!0,phase:"main",fn:aw,requiresIfExists:["offset"],data:{_skip:!1}};function sf(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function af(e){return[_t,Mt,Bt,Et].some(function(t){return e[t]>=0})}function uw(e){var t=e.state,r=e.name,n=t.rects.reference,s=t.rects.popper,i=t.modifiersData.preventOverflow,o=Ei(t,{elementContext:"reference"}),l=Ei(t,{altBoundary:!0}),a=sf(o,n),u=sf(l,s,i),c=af(a),f=af(u);t.modifiersData[r]={referenceClippingOffsets:a,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":f})}const cw={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:uw};function fw(e,t,r){var n=Xt(e),s=[Et,_t].indexOf(n)>=0?-1:1,i=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,o=i[0],l=i[1];return o=o||0,l=(l||0)*s,[Et,Mt].indexOf(n)>=0?{x:l,y:o}:{x:o,y:l}}function hw(e){var t=e.state,r=e.options,n=e.name,s=r.offset,i=s===void 0?[0,0]:s,o=Up.reduce(function(c,f){return c[f]=fw(f,t.rects,i),c},{}),l=o[t.placement],a=l.x,u=l.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=a,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=o}const dw={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:hw};function pw(e){var t=e.state,r=e.name;t.modifiersData[r]=qp({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const gw={name:"popperOffsets",enabled:!0,phase:"read",fn:pw,data:{}};function mw(e){return e==="x"?"y":"x"}function yw(e){var t=e.state,r=e.options,n=e.name,s=r.mainAxis,i=s===void 0?!0:s,o=r.altAxis,l=o===void 0?!1:o,a=r.boundary,u=r.rootBoundary,c=r.altBoundary,f=r.padding,p=r.tether,m=p===void 0?!0:p,y=r.tetherOffset,b=y===void 0?0:y,O=Ei(t,{boundary:a,rootBoundary:u,padding:f,altBoundary:c}),L=Xt(t.placement),C=Nn(t.placement),_=!C,B=ru(L),F=mw(B),k=t.modifiersData.popperOffsets,P=t.rects.reference,j=t.rects.popper,D=typeof b=="function"?b(Object.assign({},t.rects,{placement:t.placement})):b,X=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),Z=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,S={x:0,y:0};if(k){if(i){var z,ae=B==="y"?_t:Et,ee=B==="y"?Bt:Mt,le=B==="y"?"height":"width",ne=k[B],G=ne+O[ae],de=ne-O[ee],ce=m?-j[le]/2:0,be=C===Bn?P[le]:j[le],A=C===Bn?-j[le]:-P[le],ie=t.elements.arrow,he=m&&ie?tu(ie):{width:0,height:0},we=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Wp(),fe=we[ae],E=we[ee],I=ui(0,P[le],he[le]),K=_?P[le]/2-ce-I-fe-X.mainAxis:be-I-fe-X.mainAxis,re=_?-P[le]/2+ce+I+E+X.mainAxis:A+I+E+X.mainAxis,oe=t.elements.arrow&&Oi(t.elements.arrow),se=oe?B==="y"?oe.clientTop||0:oe.clientLeft||0:0,T=(z=Z==null?void 0:Z[B])!=null?z:0,x=ne+K-T-se,v=ne+re-T,U=ui(m?bo(G,x):G,ne,m?fn(de,v):de);k[B]=U,S[B]=U-ne}if(l){var M,Y=B==="x"?_t:Et,J=B==="x"?Bt:Mt,N=k[F],$=F==="y"?"height":"width",R=N+O[Y],H=N-O[J],V=[_t,Et].indexOf(L)!==-1,te=(M=Z==null?void 0:Z[F])!=null?M:0,d=V?R:N-P[$]-j[$]-te+X.altAxis,h=V?N+P[$]+j[$]-te-X.altAxis:H,g=m&&V?Wv(d,N,h):ui(m?d:R,N,m?h:H);k[F]=g,S[F]=g-N}t.modifiersData[n]=S}}const bw={name:"preventOverflow",enabled:!0,phase:"main",fn:yw,requiresIfExists:["offset"]};function vw(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function ww(e){return e===Lt(e)||!Pt(e)?nu(e):vw(e)}function _w(e){var t=e.getBoundingClientRect(),r=Mn(t.width)/e.offsetWidth||1,n=Mn(t.height)/e.offsetHeight||1;return r!==1||n!==1}function Ew(e,t,r){r===void 0&&(r=!1);var n=Pt(t),s=Pt(t)&&_w(t),i=$r(t),o=Ln(e,s,r),l={scrollLeft:0,scrollTop:0},a={x:0,y:0};return(n||!n&&!r)&&((Zt(t)!=="body"||ou(i))&&(l=ww(t)),Pt(t)?(a=Ln(t,!0),a.x+=t.clientLeft,a.y+=t.clientTop):i&&(a.x=iu(i))),{x:o.left+l.scrollLeft-a.x,y:o.top+l.scrollTop-a.y,width:o.width,height:o.height}}function Sw(e){var t=new Map,r=new Set,n=[];e.forEach(function(i){t.set(i.name,i)});function s(i){r.add(i.name);var o=[].concat(i.requires||[],i.requiresIfExists||[]);o.forEach(function(l){if(!r.has(l)){var a=t.get(l);a&&s(a)}}),n.push(i)}return e.forEach(function(i){r.has(i.name)||s(i)}),n}function Aw(e){var t=Sw(e);return Lv.reduce(function(r,n){return r.concat(t.filter(function(s){return s.phase===n}))},[])}function Tw(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function Iw(e){var t=e.reduce(function(r,n){var s=r[n.name];return r[n.name]=s?Object.assign({},s,n,{options:Object.assign({},s.options,n.options),data:Object.assign({},s.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}var lf={placement:"bottom",modifiers:[],strategy:"absolute"};function uf(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function Ow(e){e===void 0&&(e={});var t=e,r=t.defaultModifiers,n=r===void 0?[]:r,s=t.defaultOptions,i=s===void 0?lf:s;return function(l,a,u){u===void 0&&(u=i);var c={placement:"bottom",orderedModifiers:[],options:Object.assign({},lf,i),modifiersData:{},elements:{reference:l,popper:a},attributes:{},styles:{}},f=[],p=!1,m={state:c,setOptions:function(L){var C=typeof L=="function"?L(c.options):L;b(),c.options=Object.assign({},i,c.options,C),c.scrollParents={reference:dn(l)?ci(l):l.contextElement?ci(l.contextElement):[],popper:ci(a)};var _=Aw(Iw([].concat(n,c.options.modifiers)));return c.orderedModifiers=_.filter(function(B){return B.enabled}),y(),m.update()},forceUpdate:function(){if(!p){var L=c.elements,C=L.reference,_=L.popper;if(uf(C,_)){c.rects={reference:Ew(C,Oi(_),c.options.strategy==="fixed"),popper:tu(_)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(X){return c.modifiersData[X.name]=Object.assign({},X.data)});for(var B=0;B<c.orderedModifiers.length;B++){if(c.reset===!0){c.reset=!1,B=-1;continue}var F=c.orderedModifiers[B],k=F.fn,P=F.options,j=P===void 0?{}:P,D=F.name;typeof k=="function"&&(c=k({state:c,options:j,name:D,instance:m})||c)}}}},update:Tw(function(){return new Promise(function(O){m.forceUpdate(),O(c)})}),destroy:function(){b(),p=!0}};if(!uf(l,a))return m;m.setOptions(u).then(function(O){!p&&u.onFirstUpdate&&u.onFirstUpdate(O)});function y(){c.orderedModifiers.forEach(function(O){var L=O.name,C=O.options,_=C===void 0?{}:C,B=O.effect;if(typeof B=="function"){var F=B({state:c,name:L,instance:m,options:_}),k=function(){};f.push(F||k)}})}function b(){f.forEach(function(O){return O()}),f=[]}return m}}var Cw=[Jv,gw,Gv,Uv,dw,lw,bw,qv,cw],Xw=Ow({defaultModifiers:Cw});export{Nw as A,Rl as B,Jt as C,xw as D,Dm as E,vt as F,jw as G,Yw as H,kw as I,Jw as J,Qw as K,Gw as L,Kw as M,zw as N,Hw as O,Mb as R,Ww as T,Xw as a,Pw as b,Rt as c,Zf as d,Dw as e,Uw as f,io as g,Ul as h,Fw as i,Sh as j,Fm as k,ks as l,Wm as m,Vg as n,Ps as o,Mw as p,Bw as q,Si as r,wt as s,qw as t,Vw as u,$w as v,ri as w,ag as x,Ao as y,Lw as z};
diff --git a/packages/modules/display_themes/cards/web/assets/vendor-Cv1UtYRW.js b/packages/modules/display_themes/cards/web/assets/vendor-Cv1UtYRW.js
deleted file mode 100644
index 9c0d70fa9b..0000000000
--- a/packages/modules/display_themes/cards/web/assets/vendor-Cv1UtYRW.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var Tp=Object.defineProperty;var zl=e=>{throw TypeError(e)};var Cp=(e,t,r)=>t in e?Tp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var qe=(e,t,r)=>Cp(e,typeof t!="symbol"?t+"":t,r),Mo=(e,t,r)=>t.has(e)||zl("Cannot "+r);var V=(e,t,r)=>(Mo(e,t,"read from private field"),r?r.call(e):t.get(e)),Be=(e,t,r)=>t.has(e)?zl("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Ie=(e,t,r,n)=>(Mo(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),Ee=(e,t,r)=>(Mo(e,t,"access private method"),r);var vi=(e,t,r,n)=>({set _(a){Ie(e,t,a,r)},get _(){return V(e,t,n)}});const Gi=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};/**
-* @vue/shared v3.4.38
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**//*! #__NO_SIDE_EFFECTS__ */function Xa(e,t){const r=new Set(e.split(","));return n=>r.has(n)}const Ve={},_n=[],Ot=()=>{},Op=()=>!1,uo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Za=e=>e.startsWith("onUpdate:"),nt=Object.assign,el=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},Rp=Object.prototype.hasOwnProperty,ke=(e,t)=>Rp.call(e,t),Te=Array.isArray,En=e=>co(e)==="[object Map]",Kc=e=>co(e)==="[object Set]",Re=e=>typeof e=="function",ze=e=>typeof e=="string",Br=e=>typeof e=="symbol",Fe=e=>e!==null&&typeof e=="object",zc=e=>(Fe(e)||Re(e))&&Re(e.then)&&Re(e.catch),Yc=Object.prototype.toString,co=e=>Yc.call(e),Pp=e=>co(e).slice(8,-1),Gc=e=>co(e)==="[object Object]",tl=e=>ze(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,zn=Xa(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),fo=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},kp=/-(\w)/g,Ut=fo(e=>e.replace(kp,(t,r)=>r?r.toUpperCase():"")),xp=/\B([A-Z])/g,Mr=fo(e=>e.replace(xp,"-$1").toLowerCase()),ho=fo(e=>e.charAt(0).toUpperCase()+e.slice(1)),Lo=fo(e=>e?`on${ho(e)}`:""),kr=(e,t)=>!Object.is(e,t),No=(e,...t)=>{for(let r=0;r<e.length;r++)e[r](...t)},Qc=(e,t,r,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:r})},Bp=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Mp=e=>{const t=ze(e)?Number(e):NaN;return isNaN(t)?e:t};let Yl;const Jc=()=>Yl||(Yl=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof Gi<"u"?Gi:{});function po(e){if(Te(e)){const t={};for(let r=0;r<e.length;r++){const n=e[r],a=ze(n)?Up(n):po(n);if(a)for(const i in a)t[i]=a[i]}return t}else if(ze(e)||Fe(e))return e}const Lp=/;(?![^(]*\))/g,Np=/:([^]+)/,jp=/\/\*[^]*?\*\//g;function Up(e){const t={};return e.replace(jp,"").split(Lp).forEach(r=>{if(r){const n=r.split(Np);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function go(e){let t="";if(ze(e))t=e;else if(Te(e))for(let r=0;r<e.length;r++){const n=go(e[r]);n&&(t+=n+" ")}else if(Fe(e))for(const r in e)e[r]&&(t+=r+" ");return t.trim()}function cw(e){if(!e)return null;let{class:t,style:r}=e;return t&&!ze(t)&&(e.class=go(t)),r&&(e.style=po(r)),e}const Dp="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Fp=Xa(Dp);function Xc(e){return!!e||e===""}const Zc=e=>!!(e&&e.__v_isRef===!0),Wp=e=>ze(e)?e:e==null?"":Te(e)||Fe(e)&&(e.toString===Yc||!Re(e.toString))?Zc(e)?Wp(e.value):JSON.stringify(e,ef,2):String(e),ef=(e,t)=>Zc(t)?ef(e,t.value):En(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[n,a],i)=>(r[jo(n,i)+" =>"]=a,r),{})}:Kc(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>jo(r))}:Br(t)?jo(t):Fe(t)&&!Te(t)&&!Gc(t)?String(t):t,jo=(e,t="")=>{var r;return Br(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/**
-* @vue/reactivity v3.4.38
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let _t;class tf{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=_t,!t&&_t&&(this.index=(_t.scopes||(_t.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=_t;try{return _t=this,t()}finally{_t=r}}}on(){_t=this}off(){_t=this.parent}stop(t){if(this._active){let r,n;for(r=0,n=this.effects.length;r<n;r++)this.effects[r].stop();for(r=0,n=this.cleanups.length;r<n;r++)this.cleanups[r]();if(this.scopes)for(r=0,n=this.scopes.length;r<n;r++)this.scopes[r].stop(!0);if(!this.detached&&this.parent&&!t){const a=this.parent.scopes.pop();a&&a!==this&&(this.parent.scopes[this.index]=a,a.index=this.index)}this.parent=void 0,this._active=!1}}}function rf(e){return new tf(e)}function $p(e,t=_t){t&&t.active&&t.effects.push(e)}function nf(){return _t}function Hp(e){_t&&_t.cleanups.push(e)}let tn;class rl{constructor(t,r,n,a){this.fn=t,this.trigger=r,this.scheduler=n,this.active=!0,this.deps=[],this._dirtyLevel=4,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,$p(this,a)}get dirty(){if(this._dirtyLevel===2||this._dirtyLevel===3){this._dirtyLevel=1,Lr();for(let t=0;t<this._depsLength;t++){const r=this.deps[t];if(r.computed&&(Vp(r.computed),this._dirtyLevel>=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),Nr()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Rr,r=tn;try{return Rr=!0,tn=this,this._runnings++,Gl(this),this.fn()}finally{Ql(this),this._runnings--,tn=r,Rr=t}}stop(){this.active&&(Gl(this),Ql(this),this.onStop&&this.onStop(),this.active=!1)}}function Vp(e){return e.value}function Gl(e){e._trackId++,e._depsLength=0}function Ql(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t<e.deps.length;t++)of(e.deps[t],e);e.deps.length=e._depsLength}}function of(e,t){const r=e.get(t);r!==void 0&&t._trackId!==r&&(e.delete(t),e.size===0&&e.cleanup())}let Rr=!0,us=0;const sf=[];function Lr(){sf.push(Rr),Rr=!1}function Nr(){const e=sf.pop();Rr=e===void 0?!0:e}function nl(){us++}function il(){for(us--;!us&&cs.length;)cs.shift()()}function af(e,t,r){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const n=e.deps[e._depsLength];n!==t?(n&&of(n,e),e.deps[e._depsLength++]=t):e._depsLength++}}const cs=[];function lf(e,t,r){nl();for(const n of e.keys()){let a;n._dirtyLevel<t&&(a??(a=e.get(n)===n._trackId))&&(n._shouldSchedule||(n._shouldSchedule=n._dirtyLevel===0),n._dirtyLevel=t),n._shouldSchedule&&(a??(a=e.get(n)===n._trackId))&&(n.trigger(),(!n._runnings||n.allowRecurse)&&n._dirtyLevel!==2&&(n._shouldSchedule=!1,n.scheduler&&cs.push(n.scheduler)))}il()}const uf=(e,t)=>{const r=new Map;return r.cleanup=e,r.computed=t,r},Qi=new WeakMap,rn=Symbol(""),fs=Symbol("");function bt(e,t,r){if(Rr&&tn){let n=Qi.get(e);n||Qi.set(e,n=new Map);let a=n.get(r);a||n.set(r,a=uf(()=>n.delete(r))),af(tn,a)}}function sr(e,t,r,n,a,i){const o=Qi.get(e);if(!o)return;let l=[];if(t==="clear")l=[...o.values()];else if(r==="length"&&Te(e)){const s=Number(n);o.forEach((u,c)=>{(c==="length"||!Br(c)&&c>=s)&&l.push(u)})}else switch(r!==void 0&&l.push(o.get(r)),t){case"add":Te(e)?tl(r)&&l.push(o.get("length")):(l.push(o.get(rn)),En(e)&&l.push(o.get(fs)));break;case"delete":Te(e)||(l.push(o.get(rn)),En(e)&&l.push(o.get(fs)));break;case"set":En(e)&&l.push(o.get(rn));break}nl();for(const s of l)s&&lf(s,4);il()}function qp(e,t){const r=Qi.get(e);return r&&r.get(t)}const Kp=Xa("__proto__,__v_isRef,__isVue"),cf=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Br)),Jl=zp();function zp(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const n=xe(this);for(let i=0,o=this.length;i<o;i++)bt(n,"get",i+"");const a=n[t](...r);return a===-1||a===!1?n[t](...r.map(xe)):a}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...r){Lr(),nl();const n=xe(this)[t].apply(this,r);return il(),Nr(),n}}),e}function Yp(e){Br(e)||(e=String(e));const t=xe(this);return bt(t,"has",e),t.hasOwnProperty(e)}class ff{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,n){const a=this._isReadonly,i=this._isShallow;if(r==="__v_isReactive")return!a;if(r==="__v_isReadonly")return a;if(r==="__v_isShallow")return i;if(r==="__v_raw")return n===(a?i?ag:gf:i?pf:df).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=Te(t);if(!a){if(o&&ke(Jl,r))return Reflect.get(Jl,r,n);if(r==="hasOwnProperty")return Yp}const l=Reflect.get(t,r,n);return(Br(r)?cf.has(r):Kp(r))||(a||bt(t,"get",r),i)?l:Je(l)?o&&tl(r)?l:l.value:Fe(l)?a?yf(l):gi(l):l}}class hf extends ff{constructor(t=!1){super(!1,t)}set(t,r,n,a){let i=t[r];if(!this._isShallow){const s=cn(i);if(!In(n)&&!cn(n)&&(i=xe(i),n=xe(n)),!Te(t)&&Je(i)&&!Je(n))return s?!1:(i.value=n,!0)}const o=Te(t)&&tl(r)?Number(r)<t.length:ke(t,r),l=Reflect.set(t,r,n,a);return t===xe(a)&&(o?kr(n,i)&&sr(t,"set",r,n):sr(t,"add",r,n)),l}deleteProperty(t,r){const n=ke(t,r);t[r];const a=Reflect.deleteProperty(t,r);return a&&n&&sr(t,"delete",r,void 0),a}has(t,r){const n=Reflect.has(t,r);return(!Br(r)||!cf.has(r))&&bt(t,"has",r),n}ownKeys(t){return bt(t,"iterate",Te(t)?"length":rn),Reflect.ownKeys(t)}}class Gp extends ff{constructor(t=!1){super(!0,t)}set(t,r){return!0}deleteProperty(t,r){return!0}}const Qp=new hf,Jp=new Gp,Xp=new hf(!0);const ol=e=>e,mo=e=>Reflect.getPrototypeOf(e);function wi(e,t,r=!1,n=!1){e=e.__v_raw;const a=xe(e),i=xe(t);r||(kr(t,i)&&bt(a,"get",t),bt(a,"get",i));const{has:o}=mo(a),l=n?ol:r?ul:si;if(o.call(a,t))return l(e.get(t));if(o.call(a,i))return l(e.get(i));e!==a&&e.get(t)}function _i(e,t=!1){const r=this.__v_raw,n=xe(r),a=xe(e);return t||(kr(e,a)&&bt(n,"has",e),bt(n,"has",a)),e===a?r.has(e):r.has(e)||r.has(a)}function Ei(e,t=!1){return e=e.__v_raw,!t&&bt(xe(e),"iterate",rn),Reflect.get(e,"size",e)}function Xl(e,t=!1){!t&&!In(e)&&!cn(e)&&(e=xe(e));const r=xe(this);return mo(r).has.call(r,e)||(r.add(e),sr(r,"add",e,e)),this}function Zl(e,t,r=!1){!r&&!In(t)&&!cn(t)&&(t=xe(t));const n=xe(this),{has:a,get:i}=mo(n);let o=a.call(n,e);o||(e=xe(e),o=a.call(n,e));const l=i.call(n,e);return n.set(e,t),o?kr(t,l)&&sr(n,"set",e,t):sr(n,"add",e,t),this}function eu(e){const t=xe(this),{has:r,get:n}=mo(t);let a=r.call(t,e);a||(e=xe(e),a=r.call(t,e)),n&&n.call(t,e);const i=t.delete(e);return a&&sr(t,"delete",e,void 0),i}function tu(){const e=xe(this),t=e.size!==0,r=e.clear();return t&&sr(e,"clear",void 0,void 0),r}function Si(e,t){return function(n,a){const i=this,o=i.__v_raw,l=xe(o),s=t?ol:e?ul:si;return!e&&bt(l,"iterate",rn),o.forEach((u,c)=>n.call(a,s(u),s(c),i))}}function Ai(e,t,r){return function(...n){const a=this.__v_raw,i=xe(a),o=En(i),l=e==="entries"||e===Symbol.iterator&&o,s=e==="keys"&&o,u=a[e](...n),c=r?ol:t?ul:si;return!t&&bt(i,"iterate",s?fs:rn),{next(){const{value:h,done:p}=u.next();return p?{value:h,done:p}:{value:l?[c(h[0]),c(h[1])]:c(h),done:p}},[Symbol.iterator](){return this}}}}function gr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Zp(){const e={get(i){return wi(this,i)},get size(){return Ei(this)},has:_i,add:Xl,set:Zl,delete:eu,clear:tu,forEach:Si(!1,!1)},t={get(i){return wi(this,i,!1,!0)},get size(){return Ei(this)},has:_i,add(i){return Xl.call(this,i,!0)},set(i,o){return Zl.call(this,i,o,!0)},delete:eu,clear:tu,forEach:Si(!1,!0)},r={get(i){return wi(this,i,!0)},get size(){return Ei(this,!0)},has(i){return _i.call(this,i,!0)},add:gr("add"),set:gr("set"),delete:gr("delete"),clear:gr("clear"),forEach:Si(!0,!1)},n={get(i){return wi(this,i,!0,!0)},get size(){return Ei(this,!0)},has(i){return _i.call(this,i,!0)},add:gr("add"),set:gr("set"),delete:gr("delete"),clear:gr("clear"),forEach:Si(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Ai(i,!1,!1),r[i]=Ai(i,!0,!1),t[i]=Ai(i,!1,!0),n[i]=Ai(i,!0,!0)}),[e,r,t,n]}const[eg,tg,rg,ng]=Zp();function sl(e,t){const r=t?e?ng:rg:e?tg:eg;return(n,a,i)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?n:Reflect.get(ke(r,a)&&a in n?r:n,a,i)}const ig={get:sl(!1,!1)},og={get:sl(!1,!0)},sg={get:sl(!0,!1)};const df=new WeakMap,pf=new WeakMap,gf=new WeakMap,ag=new WeakMap;function lg(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ug(e){return e.__v_skip||!Object.isExtensible(e)?0:lg(Pp(e))}function gi(e){return cn(e)?e:al(e,!1,Qp,ig,df)}function mf(e){return al(e,!1,Xp,og,pf)}function yf(e){return al(e,!0,Jp,sg,gf)}function al(e,t,r,n,a){if(!Fe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=a.get(e);if(i)return i;const o=ug(e);if(o===0)return e;const l=new Proxy(e,o===2?n:r);return a.set(e,l),l}function nn(e){return cn(e)?nn(e.__v_raw):!!(e&&e.__v_isReactive)}function cn(e){return!!(e&&e.__v_isReadonly)}function In(e){return!!(e&&e.__v_isShallow)}function bf(e){return e?!!e.__v_raw:!1}function xe(e){const t=e&&e.__v_raw;return t?xe(t):e}function ll(e){return Object.isExtensible(e)&&Qc(e,"__v_skip",!0),e}const si=e=>Fe(e)?gi(e):e,ul=e=>Fe(e)?yf(e):e;class vf{constructor(t,r,n,a){this.getter=t,this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new rl(()=>t(this._value),()=>Li(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=n}get value(){const t=xe(this);return(!t._cacheable||t.effect.dirty)&&kr(t._value,t._value=t.effect.run())&&Li(t,4),wf(t),t.effect._dirtyLevel>=2&&Li(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function cg(e,t,r=!1){let n,a;const i=Re(e);return i?(n=e,a=Ot):(n=e.get,a=e.set),new vf(n,a,i||!a,r)}function wf(e){var t;Rr&&tn&&(e=xe(e),af(tn,(t=e.dep)!=null?t:e.dep=uf(()=>e.dep=void 0,e instanceof vf?e:void 0)))}function Li(e,t=4,r,n){e=xe(e);const a=e.dep;a&&lf(a,t)}function Je(e){return!!(e&&e.__v_isRef===!0)}function cl(e){return _f(e,!1)}function fg(e){return _f(e,!0)}function _f(e,t){return Je(e)?e:new hg(e,t)}class hg{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:xe(t),this._value=r?t:si(t)}get value(){return wf(this),this._value}set value(t){const r=this.__v_isShallow||In(t)||cn(t);t=r?t:xe(t),kr(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=r?t:si(t),Li(this,4))}}function Sn(e){return Je(e)?e.value:e}const dg={get:(e,t,r)=>Sn(Reflect.get(e,t,r)),set:(e,t,r,n)=>{const a=e[t];return Je(a)&&!Je(r)?(a.value=r,!0):Reflect.set(e,t,r,n)}};function Ef(e){return nn(e)?e:new Proxy(e,dg)}function pg(e){const t=Te(e)?new Array(e.length):{};for(const r in e)t[r]=mg(e,r);return t}class gg{constructor(t,r,n){this._object=t,this._key=r,this._defaultValue=n,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return qp(xe(this._object),this._key)}}function mg(e,t,r){const n=e[t];return Je(n)?n:new gg(e,t,r)}/**
-* @vue/runtime-core v3.4.38
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function Pr(e,t,r,n){try{return n?e(...n):e()}catch(a){yo(a,t,r)}}function Rt(e,t,r,n){if(Re(e)){const a=Pr(e,t,r,n);return a&&zc(a)&&a.catch(i=>{yo(i,t,r)}),a}if(Te(e)){const a=[];for(let i=0;i<e.length;i++)a.push(Rt(e[i],t,r,n));return a}}function yo(e,t,r,n=!0){const a=t?t.vnode:null;if(t){let i=t.parent;const o=t.proxy,l=`https://vuejs.org/error-reference/#runtime-${r}`;for(;i;){const u=i.ec;if(u){for(let c=0;c<u.length;c++)if(u[c](e,o,l)===!1)return}i=i.parent}const s=t.appContext.config.errorHandler;if(s){Lr(),Pr(s,null,10,[e,o,l]),Nr();return}}yg(e,r,a,n)}function yg(e,t,r,n=!0){console.error(e)}let ai=!1,hs=!1;const ut=[];let Vt=0;const An=[];let Ar=null,Qr=0;const Sf=Promise.resolve();let fl=null;function hl(e){const t=fl||Sf;return e?t.then(this?e.bind(this):e):t}function bg(e){let t=Vt+1,r=ut.length;for(;t<r;){const n=t+r>>>1,a=ut[n],i=li(a);i<e||i===e&&a.pre?t=n+1:r=n}return t}function dl(e){(!ut.length||!ut.includes(e,ai&&e.allowRecurse?Vt+1:Vt))&&(e.id==null?ut.push(e):ut.splice(bg(e.id),0,e),Af())}function Af(){!ai&&!hs&&(hs=!0,fl=Sf.then(Tf))}function vg(e){const t=ut.indexOf(e);t>Vt&&ut.splice(t,1)}function wg(e){Te(e)?An.push(...e):(!Ar||!Ar.includes(e,e.allowRecurse?Qr+1:Qr))&&An.push(e),Af()}function ru(e,t,r=ai?Vt+1:0){for(;r<ut.length;r++){const n=ut[r];if(n&&n.pre){if(e&&n.id!==e.uid)continue;ut.splice(r,1),r--,n()}}}function If(e){if(An.length){const t=[...new Set(An)].sort((r,n)=>li(r)-li(n));if(An.length=0,Ar){Ar.push(...t);return}for(Ar=t,Qr=0;Qr<Ar.length;Qr++){const r=Ar[Qr];r.active!==!1&&r()}Ar=null,Qr=0}}const li=e=>e.id==null?1/0:e.id,_g=(e,t)=>{const r=li(e)-li(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function Tf(e){hs=!1,ai=!0,ut.sort(_g);try{for(Vt=0;Vt<ut.length;Vt++){const t=ut[Vt];t&&t.active!==!1&&Pr(t,t.i,t.i?15:14)}}finally{Vt=0,ut.length=0,If(),ai=!1,fl=null,(ut.length||An.length)&&Tf()}}let Qe=null,bo=null;function Ji(e){const t=Qe;return Qe=e,bo=e&&e.type.__scopeId||null,t}function fw(e){bo=e}function hw(){bo=null}function Eg(e,t=Qe,r){if(!t||e._n)return e;const n=(...a)=>{n._d&&pu(-1);const i=Ji(t);let o;try{o=e(...a)}finally{Ji(i),n._d&&pu(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function dw(e,t){if(Qe===null)return e;const r=Ao(Qe),n=e.dirs||(e.dirs=[]);for(let a=0;a<t.length;a++){let[i,o,l,s=Ve]=t[a];i&&(Re(i)&&(i={mounted:i,updated:i}),i.deep&&Or(o),n.push({dir:i,instance:r,value:o,oldValue:void 0,arg:l,modifiers:s}))}return e}function Dr(e,t,r,n){const a=e.dirs,i=t&&t.dirs;for(let o=0;o<a.length;o++){const l=a[o];i&&(l.oldValue=i[o].value);let s=l.dir[n];s&&(Lr(),Rt(s,r,8,[e.el,l,e,t]),Nr())}}const Ir=Symbol("_leaveCb"),Ii=Symbol("_enterCb");function Sg(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return pl(()=>{e.isMounted=!0}),Mf(()=>{e.isUnmounting=!0}),e}const It=[Function,Array],Cf={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:It,onEnter:It,onAfterEnter:It,onEnterCancelled:It,onBeforeLeave:It,onLeave:It,onAfterLeave:It,onLeaveCancelled:It,onBeforeAppear:It,onAppear:It,onAfterAppear:It,onAppearCancelled:It},Of=e=>{const t=e.subTree;return t.component?Of(t.component):t},Ag={name:"BaseTransition",props:Cf,setup(e,{slots:t}){const r=oh(),n=Sg();return()=>{const a=t.default&&Pf(t.default(),!0);if(!a||!a.length)return;let i=a[0];if(a.length>1){for(const p of a)if(p.type!==pt){i=p;break}}const o=xe(e),{mode:l}=o;if(n.isLeaving)return Uo(i);const s=nu(i);if(!s)return Uo(i);let u=ds(s,o,n,r,p=>u=p);Xi(s,u);const c=r.subTree,h=c&&nu(c);if(h&&h.type!==pt&&!Jr(s,h)&&Of(r).type!==pt){const p=ds(h,o,n,r);if(Xi(h,p),l==="out-in"&&s.type!==pt)return n.isLeaving=!0,p.afterLeave=()=>{n.isLeaving=!1,r.update.active!==!1&&(r.effect.dirty=!0,r.update())},Uo(i);l==="in-out"&&s.type!==pt&&(p.delayLeave=(m,y,b)=>{const O=Rf(n,h);O[String(h.key)]=h,m[Ir]=()=>{y(),m[Ir]=void 0,delete u.delayedLeave},u.delayedLeave=b})}return i}}},Ig=Ag;function Rf(e,t){const{leavingVNodes:r}=e;let n=r.get(t.type);return n||(n=Object.create(null),r.set(t.type,n)),n}function ds(e,t,r,n,a){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:s,onEnter:u,onAfterEnter:c,onEnterCancelled:h,onBeforeLeave:p,onLeave:m,onAfterLeave:y,onLeaveCancelled:b,onBeforeAppear:O,onAppear:L,onAfterAppear:P,onAppearCancelled:w}=t,U=String(e.key),W=Rf(r,e),R=(F,X)=>{F&&Rt(F,n,9,X)},x=(F,X)=>{const Z=X[1];R(F,X),Te(F)?F.every(S=>S.length<=1)&&Z():F.length<=1&&Z()},j={mode:o,persisted:l,beforeEnter(F){let X=s;if(!r.isMounted)if(i)X=O||s;else return;F[Ir]&&F[Ir](!0);const Z=W[U];Z&&Jr(e,Z)&&Z.el[Ir]&&Z.el[Ir](),R(X,[F])},enter(F){let X=u,Z=c,S=h;if(!r.isMounted)if(i)X=L||u,Z=P||c,S=w||h;else return;let z=!1;const ae=F[Ii]=te=>{z||(z=!0,te?R(S,[F]):R(Z,[F]),j.delayedLeave&&j.delayedLeave(),F[Ii]=void 0)};X?x(X,[F,ae]):ae()},leave(F,X){const Z=String(e.key);if(F[Ii]&&F[Ii](!0),r.isUnmounting)return X();R(p,[F]);let S=!1;const z=F[Ir]=ae=>{S||(S=!0,X(),ae?R(b,[F]):R(y,[F]),F[Ir]=void 0,W[Z]===e&&delete W[Z])};W[Z]=e,m?x(m,[F,z]):z()},clone(F){const X=ds(F,t,r,n,a);return a&&a(X),X}};return j}function Uo(e){if(vo(e))return e=xr(e),e.children=null,e}function nu(e){if(!vo(e))return e;const{shapeFlag:t,children:r}=e;if(r){if(t&16)return r[0];if(t&32&&Re(r.default))return r.default()}}function Xi(e,t){e.shapeFlag&6&&e.component?Xi(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Pf(e,t=!1,r){let n=[],a=0;for(let i=0;i<e.length;i++){let o=e[i];const l=r==null?o.key:String(r)+String(o.key!=null?o.key:i);o.type===St?(o.patchFlag&128&&a++,n=n.concat(Pf(o.children,t,l))):(t||o.type!==pt)&&n.push(l!=null?xr(o,{key:l}):o)}if(a>1)for(let i=0;i<n.length;i++)n[i].patchFlag=-2;return n}/*! #__NO_SIDE_EFFECTS__ */function kf(e,t){return Re(e)?nt({name:e.name},t,{setup:e}):e}const Yn=e=>!!e.type.__asyncLoader,vo=e=>e.type.__isKeepAlive;function Tg(e,t){xf(e,"a",t)}function Cg(e,t){xf(e,"da",t)}function xf(e,t,r=rt){const n=e.__wdc||(e.__wdc=()=>{let a=r;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(wo(t,n,r),r){let a=r.parent;for(;a&&a.parent;)vo(a.parent.vnode)&&Og(n,t,r,a),a=a.parent}}function Og(e,t,r,n){const a=wo(t,e,n,!0);gl(()=>{el(n[t],a)},r)}function wo(e,t,r=rt,n=!1){if(r){const a=r[e]||(r[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Lr();const l=mi(r),s=Rt(t,r,e,o);return l(),Nr(),s});return n?a.unshift(i):a.push(i),i}}const fr=e=>(t,r=rt)=>{(!So||e==="sp")&&wo(e,(...n)=>t(...n),r)},Bf=fr("bm"),pl=fr("m"),Rg=fr("bu"),Pg=fr("u"),Mf=fr("bum"),gl=fr("um"),kg=fr("sp"),xg=fr("rtg"),Bg=fr("rtc");function Mg(e,t=rt){wo("ec",e,t)}const ml="components",Lg="directives";function pw(e,t){return yl(ml,e,!0,t)||e}const Lf=Symbol.for("v-ndc");function gw(e){return ze(e)?yl(ml,e,!1)||e:e||Lf}function mw(e){return yl(Lg,e)}function yl(e,t,r=!0,n=!1){const a=Qe||rt;if(a){const i=a.type;if(e===ml){const l=Om(i,!1);if(l&&(l===t||l===Ut(t)||l===ho(Ut(t))))return i}const o=iu(a[e]||i[e],t)||iu(a.appContext[e],t);return!o&&n?i:o}}function iu(e,t){return e&&(e[t]||e[Ut(t)]||e[ho(Ut(t))])}function yw(e,t,r,n){let a;const i=r;if(Te(e)||ze(e)){a=new Array(e.length);for(let o=0,l=e.length;o<l;o++)a[o]=t(e[o],o,void 0,i)}else if(typeof e=="number"){a=new Array(e);for(let o=0;o<e;o++)a[o]=t(o+1,o,void 0,i)}else if(Fe(e))if(e[Symbol.iterator])a=Array.from(e,(o,l)=>t(o,l,void 0,i));else{const o=Object.keys(e);a=new Array(o.length);for(let l=0,s=o.length;l<s;l++){const u=o[l];a[l]=t(e[u],u,l,i)}}else a=[];return a}function bw(e,t){for(let r=0;r<t.length;r++){const n=t[r];if(Te(n))for(let a=0;a<n.length;a++)e[n[a].name]=n[a].fn;else n&&(e[n.name]=n.key?(...a)=>{const i=n.fn(...a);return i&&(i.key=n.key),i}:n.fn)}return e}function vw(e,t,r={},n,a){if(Qe.isCE||Qe.parent&&Yn(Qe.parent)&&Qe.parent.isCE)return t!=="default"&&(r.name=t),gt("slot",r,n&&n());let i=e[t];i&&i._c&&(i._d=!1),eh();const o=i&&Nf(i(r)),l=rh(St,{key:(r.key||o&&o.key||`_${t}`)+(!o&&n?"_fb":"")},o||(n?n():[]),o&&e._===1?64:-2);return!a&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l}function Nf(e){return e.some(t=>eo(t)?!(t.type===pt||t.type===St&&!Nf(t.children)):!0)?e:null}const ps=e=>e?sh(e)?Ao(e):ps(e.parent):null,Gn=nt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ps(e.parent),$root:e=>ps(e.root),$emit:e=>e.emit,$options:e=>bl(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,dl(e.update)}),$nextTick:e=>e.n||(e.n=hl.bind(e.proxy)),$watch:e=>am.bind(e)}),Do=(e,t)=>e!==Ve&&!e.__isScriptSetup&&ke(e,t),Ng={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:r,setupState:n,data:a,props:i,accessCache:o,type:l,appContext:s}=e;let u;if(t[0]!=="$"){const m=o[t];if(m!==void 0)switch(m){case 1:return n[t];case 2:return a[t];case 4:return r[t];case 3:return i[t]}else{if(Do(n,t))return o[t]=1,n[t];if(a!==Ve&&ke(a,t))return o[t]=2,a[t];if((u=e.propsOptions[0])&&ke(u,t))return o[t]=3,i[t];if(r!==Ve&&ke(r,t))return o[t]=4,r[t];gs&&(o[t]=0)}}const c=Gn[t];let h,p;if(c)return t==="$attrs"&&bt(e.attrs,"get",""),c(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(r!==Ve&&ke(r,t))return o[t]=4,r[t];if(p=s.config.globalProperties,ke(p,t))return p[t]},set({_:e},t,r){const{data:n,setupState:a,ctx:i}=e;return Do(a,t)?(a[t]=r,!0):n!==Ve&&ke(n,t)?(n[t]=r,!0):ke(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:n,appContext:a,propsOptions:i}},o){let l;return!!r[o]||e!==Ve&&ke(e,o)||Do(t,o)||(l=i[0])&&ke(l,o)||ke(n,o)||ke(Gn,o)||ke(a.config.globalProperties,o)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:ke(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function ou(e){return Te(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}let gs=!0;function jg(e){const t=bl(e),r=e.proxy,n=e.ctx;gs=!1,t.beforeCreate&&su(t.beforeCreate,e,"bc");const{data:a,computed:i,methods:o,watch:l,provide:s,inject:u,created:c,beforeMount:h,mounted:p,beforeUpdate:m,updated:y,activated:b,deactivated:O,beforeDestroy:L,beforeUnmount:P,destroyed:w,unmounted:U,render:W,renderTracked:R,renderTriggered:x,errorCaptured:j,serverPrefetch:F,expose:X,inheritAttrs:Z,components:S,directives:z,filters:ae}=t;if(u&&Ug(u,n,null),o)for(const ne in o){const G=o[ne];Re(G)&&(n[ne]=G.bind(r))}if(a){const ne=a.call(r,r);Fe(ne)&&(e.data=gi(ne))}if(gs=!0,i)for(const ne in i){const G=i[ne],de=Re(G)?G.bind(r,r):Re(G.get)?G.get.bind(r,r):Ot,ce=!Re(G)&&Re(G.set)?G.set.bind(r):Ot,be=Ct({get:de,set:ce});Object.defineProperty(n,ne,{enumerable:!0,configurable:!0,get:()=>be.value,set:A=>be.value=A})}if(l)for(const ne in l)jf(l[ne],n,r,ne);if(s){const ne=Re(s)?s.call(r):s;Reflect.ownKeys(ne).forEach(G=>{Ni(G,ne[G])})}c&&su(c,e,"c");function le(ne,G){Te(G)?G.forEach(de=>ne(de.bind(r))):G&&ne(G.bind(r))}if(le(Bf,h),le(pl,p),le(Rg,m),le(Pg,y),le(Tg,b),le(Cg,O),le(Mg,j),le(Bg,R),le(xg,x),le(Mf,P),le(gl,U),le(kg,F),Te(X))if(X.length){const ne=e.exposed||(e.exposed={});X.forEach(G=>{Object.defineProperty(ne,G,{get:()=>r[G],set:de=>r[G]=de})})}else e.exposed||(e.exposed={});W&&e.render===Ot&&(e.render=W),Z!=null&&(e.inheritAttrs=Z),S&&(e.components=S),z&&(e.directives=z)}function Ug(e,t,r=Ot){Te(e)&&(e=ms(e));for(const n in e){const a=e[n];let i;Fe(a)?"default"in a?i=zt(a.from||n,a.default,!0):i=zt(a.from||n):i=zt(a),Je(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[n]=i}}function su(e,t,r){Rt(Te(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,r)}function jf(e,t,r,n){const a=n.includes(".")?Xf(r,n):()=>r[n];if(ze(e)){const i=t[e];Re(i)&&Jn(a,i)}else if(Re(e))Jn(a,e.bind(r));else if(Fe(e))if(Te(e))e.forEach(i=>jf(i,t,r,n));else{const i=Re(e.handler)?e.handler.bind(r):t[e.handler];Re(i)&&Jn(a,i,e)}}function bl(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:a,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let s;return l?s=l:!a.length&&!r&&!n?s=t:(s={},a.length&&a.forEach(u=>Zi(s,u,o,!0)),Zi(s,t,o)),Fe(t)&&i.set(t,s),s}function Zi(e,t,r,n=!1){const{mixins:a,extends:i}=t;i&&Zi(e,i,r,!0),a&&a.forEach(o=>Zi(e,o,r,!0));for(const o in t)if(!(n&&o==="expose")){const l=Dg[o]||r&&r[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Dg={data:au,props:lu,emits:lu,methods:Hn,computed:Hn,beforeCreate:ft,created:ft,beforeMount:ft,mounted:ft,beforeUpdate:ft,updated:ft,beforeDestroy:ft,beforeUnmount:ft,destroyed:ft,unmounted:ft,activated:ft,deactivated:ft,errorCaptured:ft,serverPrefetch:ft,components:Hn,directives:Hn,watch:Wg,provide:au,inject:Fg};function au(e,t){return t?e?function(){return nt(Re(e)?e.call(this,this):e,Re(t)?t.call(this,this):t)}:t:e}function Fg(e,t){return Hn(ms(e),ms(t))}function ms(e){if(Te(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function ft(e,t){return e?[...new Set([].concat(e,t))]:t}function Hn(e,t){return e?nt(Object.create(null),e,t):t}function lu(e,t){return e?Te(e)&&Te(t)?[...new Set([...e,...t])]:nt(Object.create(null),ou(e),ou(t??{})):t}function Wg(e,t){if(!e)return t;if(!t)return e;const r=nt(Object.create(null),e);for(const n in t)r[n]=ft(e[n],t[n]);return r}function Uf(){return{app:null,config:{isNativeTag:Op,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let $g=0;function Hg(e,t){return function(n,a=null){Re(n)||(n=nt({},n)),a!=null&&!Fe(a)&&(a=null);const i=Uf(),o=new WeakSet;let l=!1;const s=i.app={_uid:$g++,_component:n,_props:a,_container:null,_context:i,_instance:null,version:Pm,get config(){return i.config},set config(u){},use(u,...c){return o.has(u)||(u&&Re(u.install)?(o.add(u),u.install(s,...c)):Re(u)&&(o.add(u),u(s,...c))),s},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),s},component(u,c){return c?(i.components[u]=c,s):i.components[u]},directive(u,c){return c?(i.directives[u]=c,s):i.directives[u]},mount(u,c,h){if(!l){const p=gt(n,a);return p.appContext=i,h===!0?h="svg":h===!1&&(h=void 0),c&&t?t(p,u):e(p,u,h),l=!0,s._container=u,u.__vue_app__=s,Ao(p.component)}},unmount(){l&&(e(null,s._container),delete s._container.__vue_app__)},provide(u,c){return i.provides[u]=c,s},runWithContext(u){const c=on;on=s;try{return u()}finally{on=c}}};return s}}let on=null;function Ni(e,t){if(rt){let r=rt.provides;const n=rt.parent&&rt.parent.provides;n===r&&(r=rt.provides=Object.create(n)),r[e]=t}}function zt(e,t,r=!1){const n=rt||Qe;if(n||on){const a=on?on._context.provides:n?n.parent==null?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(a&&e in a)return a[e];if(arguments.length>1)return r&&Re(t)?t.call(n&&n.proxy):t}}function Vg(){return!!(rt||Qe||on)}const Df={},Ff=()=>Object.create(Df),Wf=e=>Object.getPrototypeOf(e)===Df;function qg(e,t,r,n=!1){const a={},i=Ff();e.propsDefaults=Object.create(null),$f(e,t,a,i);for(const o in e.propsOptions[0])o in a||(a[o]=void 0);r?e.props=n?a:mf(a):e.type.props?e.props=a:e.props=i,e.attrs=i}function Kg(e,t,r,n){const{props:a,attrs:i,vnode:{patchFlag:o}}=e,l=xe(a),[s]=e.propsOptions;let u=!1;if((n||o>0)&&!(o&16)){if(o&8){const c=e.vnode.dynamicProps;for(let h=0;h<c.length;h++){let p=c[h];if(_o(e.emitsOptions,p))continue;const m=t[p];if(s)if(ke(i,p))m!==i[p]&&(i[p]=m,u=!0);else{const y=Ut(p);a[y]=ys(s,l,y,m,e,!1)}else m!==i[p]&&(i[p]=m,u=!0)}}}else{$f(e,t,a,i)&&(u=!0);let c;for(const h in l)(!t||!ke(t,h)&&((c=Mr(h))===h||!ke(t,c)))&&(s?r&&(r[h]!==void 0||r[c]!==void 0)&&(a[h]=ys(s,l,h,void 0,e,!0)):delete a[h]);if(i!==l)for(const h in i)(!t||!ke(t,h))&&(delete i[h],u=!0)}u&&sr(e.attrs,"set","")}function $f(e,t,r,n){const[a,i]=e.propsOptions;let o=!1,l;if(t)for(let s in t){if(zn(s))continue;const u=t[s];let c;a&&ke(a,c=Ut(s))?!i||!i.includes(c)?r[c]=u:(l||(l={}))[c]=u:_o(e.emitsOptions,s)||(!(s in n)||u!==n[s])&&(n[s]=u,o=!0)}if(i){const s=xe(r),u=l||Ve;for(let c=0;c<i.length;c++){const h=i[c];r[h]=ys(a,s,h,u[h],e,!ke(u,h))}}return o}function ys(e,t,r,n,a,i){const o=e[r];if(o!=null){const l=ke(o,"default");if(l&&n===void 0){const s=o.default;if(o.type!==Function&&!o.skipFactory&&Re(s)){const{propsDefaults:u}=a;if(r in u)n=u[r];else{const c=mi(a);n=u[r]=s.call(null,t),c()}}else n=s}o[0]&&(i&&!l?n=!1:o[1]&&(n===""||n===Mr(r))&&(n=!0))}return n}const zg=new WeakMap;function Hf(e,t,r=!1){const n=r?zg:t.propsCache,a=n.get(e);if(a)return a;const i=e.props,o={},l=[];let s=!1;if(!Re(e)){const c=h=>{s=!0;const[p,m]=Hf(h,t,!0);nt(o,p),m&&l.push(...m)};!r&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!i&&!s)return Fe(e)&&n.set(e,_n),_n;if(Te(i))for(let c=0;c<i.length;c++){const h=Ut(i[c]);uu(h)&&(o[h]=Ve)}else if(i)for(const c in i){const h=Ut(c);if(uu(h)){const p=i[c],m=o[h]=Te(p)||Re(p)?{type:p}:nt({},p),y=m.type;let b=!1,O=!0;if(Te(y))for(let L=0;L<y.length;++L){const P=y[L],w=Re(P)&&P.name;if(w==="Boolean"){b=!0;break}else w==="String"&&(O=!1)}else b=Re(y)&&y.name==="Boolean";m[0]=b,m[1]=O,(b||ke(m,"default"))&&l.push(h)}}const u=[o,l];return Fe(e)&&n.set(e,u),u}function uu(e){return e[0]!=="$"&&!zn(e)}const Vf=e=>e[0]==="_"||e==="$stable",vl=e=>Te(e)?e.map(Ht):[Ht(e)],Yg=(e,t,r)=>{if(t._n)return t;const n=Eg((...a)=>vl(t(...a)),r);return n._c=!1,n},qf=(e,t,r)=>{const n=e._ctx;for(const a in e){if(Vf(a))continue;const i=e[a];if(Re(i))t[a]=Yg(a,i,n);else if(i!=null){const o=vl(i);t[a]=()=>o}}},Kf=(e,t)=>{const r=vl(t);e.slots.default=()=>r},zf=(e,t,r)=>{for(const n in t)(r||n!=="_")&&(e[n]=t[n])},Gg=(e,t,r)=>{const n=e.slots=Ff();if(e.vnode.shapeFlag&32){const a=t._;a?(zf(n,t,r),r&&Qc(n,"_",a,!0)):qf(t,n)}else t&&Kf(e,t)},Qg=(e,t,r)=>{const{vnode:n,slots:a}=e;let i=!0,o=Ve;if(n.shapeFlag&32){const l=t._;l?r&&l===1?i=!1:zf(a,t,r):(i=!t.$stable,qf(t,a)),o=t}else t&&(Kf(e,t),o={default:1});if(i)for(const l in a)!Vf(l)&&o[l]==null&&delete a[l]};function bs(e,t,r,n,a=!1){if(Te(e)){e.forEach((p,m)=>bs(p,t&&(Te(t)?t[m]:t),r,n,a));return}if(Yn(n)&&!a)return;const i=n.shapeFlag&4?Ao(n.component):n.el,o=a?null:i,{i:l,r:s}=e,u=t&&t.r,c=l.refs===Ve?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==s&&(ze(u)?(c[u]=null,ke(h,u)&&(h[u]=null)):Je(u)&&(u.value=null)),Re(s))Pr(s,l,12,[o,c]);else{const p=ze(s),m=Je(s);if(p||m){const y=()=>{if(e.f){const b=p?ke(h,s)?h[s]:c[s]:s.value;a?Te(b)&&el(b,i):Te(b)?b.includes(i)||b.push(i):p?(c[s]=[i],ke(h,s)&&(h[s]=c[s])):(s.value=[i],e.k&&(c[e.k]=s.value))}else p?(c[s]=o,ke(h,s)&&(h[s]=o)):m&&(s.value=o,e.k&&(c[e.k]=o))};o?(y.id=-1,dt(y,r)):y()}}}const Yf=Symbol("_vte"),Jg=e=>e.__isTeleport,Qn=e=>e&&(e.disabled||e.disabled===""),cu=e=>typeof SVGElement<"u"&&e instanceof SVGElement,fu=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,vs=(e,t)=>{const r=e&&e.to;return ze(r)?t?t(r):null:r},Xg={name:"Teleport",__isTeleport:!0,process(e,t,r,n,a,i,o,l,s,u){const{mc:c,pc:h,pbc:p,o:{insert:m,querySelector:y,createText:b,createComment:O}}=u,L=Qn(t.props);let{shapeFlag:P,children:w,dynamicChildren:U}=t;if(e==null){const W=t.el=b(""),R=t.anchor=b("");m(W,r,n),m(R,r,n);const x=t.target=vs(t.props,y),j=Qf(x,t,b,m);x&&(o==="svg"||cu(x)?o="svg":(o==="mathml"||fu(x))&&(o="mathml"));const F=(X,Z)=>{P&16&&c(w,X,Z,a,i,o,l,s)};L?F(r,R):x&&F(x,j)}else{t.el=e.el,t.targetStart=e.targetStart;const W=t.anchor=e.anchor,R=t.target=e.target,x=t.targetAnchor=e.targetAnchor,j=Qn(e.props),F=j?r:R,X=j?W:x;if(o==="svg"||cu(R)?o="svg":(o==="mathml"||fu(R))&&(o="mathml"),U?(p(e.dynamicChildren,U,F,a,i,o,l),wl(e,t,!0)):s||h(e,t,F,X,a,i,o,l,!1),L)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Ti(t,r,W,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const Z=t.target=vs(t.props,y);Z&&Ti(t,Z,null,u,0)}else j&&Ti(t,R,x,u,1)}Gf(t)},remove(e,t,r,{um:n,o:{remove:a}},i){const{shapeFlag:o,children:l,anchor:s,targetStart:u,targetAnchor:c,target:h,props:p}=e;if(h&&(a(u),a(c)),i&&a(s),o&16){const m=i||!Qn(p);for(let y=0;y<l.length;y++){const b=l[y];n(b,t,r,m,!!b.dynamicChildren)}}},move:Ti,hydrate:Zg};function Ti(e,t,r,{o:{insert:n},m:a},i=2){i===0&&n(e.targetAnchor,t,r);const{el:o,anchor:l,shapeFlag:s,children:u,props:c}=e,h=i===2;if(h&&n(o,t,r),(!h||Qn(c))&&s&16)for(let p=0;p<u.length;p++)a(u[p],t,r,2);h&&n(l,t,r)}function Zg(e,t,r,n,a,i,{o:{nextSibling:o,parentNode:l,querySelector:s,insert:u,createText:c}},h){const p=t.target=vs(t.props,s);if(p){const m=p._lpa||p.firstChild;if(t.shapeFlag&16)if(Qn(t.props))t.anchor=h(o(e),t,l(e),r,n,a,i),t.targetStart=m,t.targetAnchor=m&&o(m);else{t.anchor=o(e);let y=m;for(;y;){if(y&&y.nodeType===8){if(y.data==="teleport start anchor")t.targetStart=y;else if(y.data==="teleport anchor"){t.targetAnchor=y,p._lpa=t.targetAnchor&&o(t.targetAnchor);break}}y=o(y)}t.targetAnchor||Qf(p,t,c,u),h(m&&o(m),t,p,r,n,a,i)}Gf(t)}return t.anchor&&o(t.anchor)}const ww=Xg;function Gf(e){const t=e.ctx;if(t&&t.ut){let r=e.children[0].el;for(;r&&r!==e.targetAnchor;)r.nodeType===1&&r.setAttribute("data-v-owner",t.uid),r=r.nextSibling;t.ut()}}function Qf(e,t,r,n){const a=t.targetStart=r(""),i=t.targetAnchor=r("");return a[Yf]=i,e&&(n(a,e),n(i,e)),i}const dt=gm;function em(e){return tm(e)}function tm(e,t){const r=Jc();r.__VUE__=!0;const{insert:n,remove:a,patchProp:i,createElement:o,createText:l,createComment:s,setText:u,setElementText:c,parentNode:h,nextSibling:p,setScopeId:m=Ot,insertStaticContent:y}=e,b=(T,k,v,N=null,B=null,Y=null,J=void 0,M=null,H=!!k.dynamicChildren)=>{if(T===k)return;T&&!Jr(T,k)&&(N=E(T),A(T,B,Y,!0),T=null),k.patchFlag===-2&&(H=!1,k.dynamicChildren=null);const{type:C,ref:$,shapeFlag:q}=k;switch(C){case Eo:O(T,k,v,N);break;case pt:L(T,k,v,N);break;case ji:T==null&&P(k,v,N,J);break;case St:S(T,k,v,N,B,Y,J,M,H);break;default:q&1?W(T,k,v,N,B,Y,J,M,H):q&6?z(T,k,v,N,B,Y,J,M,H):(q&64||q&128)&&C.process(T,k,v,N,B,Y,J,M,H,re)}$!=null&&B&&bs($,T&&T.ref,Y,k||T,!k)},O=(T,k,v,N)=>{if(T==null)n(k.el=l(k.children),v,N);else{const B=k.el=T.el;k.children!==T.children&&u(B,k.children)}},L=(T,k,v,N)=>{T==null?n(k.el=s(k.children||""),v,N):k.el=T.el},P=(T,k,v,N)=>{[T.el,T.anchor]=y(T.children,k,v,N,T.el,T.anchor)},w=({el:T,anchor:k},v,N)=>{let B;for(;T&&T!==k;)B=p(T),n(T,v,N),T=B;n(k,v,N)},U=({el:T,anchor:k})=>{let v;for(;T&&T!==k;)v=p(T),a(T),T=v;a(k)},W=(T,k,v,N,B,Y,J,M,H)=>{k.type==="svg"?J="svg":k.type==="math"&&(J="mathml"),T==null?R(k,v,N,B,Y,J,M,H):F(T,k,B,Y,J,M,H)},R=(T,k,v,N,B,Y,J,M)=>{let H,C;const{props:$,shapeFlag:q,transition:ee,dirs:d}=T;if(H=T.el=o(T.type,Y,$&&$.is,$),q&8?c(H,T.children):q&16&&j(T.children,H,null,N,B,Fo(T,Y),J,M),d&&Dr(T,null,N,"created"),x(H,T,T.scopeId,J,N),$){for(const g in $)g!=="value"&&!zn(g)&&i(H,g,null,$[g],Y,N);"value"in $&&i(H,"value",null,$.value,Y),(C=$.onVnodeBeforeMount)&&Ft(C,N,T)}d&&Dr(T,null,N,"beforeMount");const f=rm(B,ee);f&&ee.beforeEnter(H),n(H,k,v),((C=$&&$.onVnodeMounted)||f||d)&&dt(()=>{C&&Ft(C,N,T),f&&ee.enter(H),d&&Dr(T,null,N,"mounted")},B)},x=(T,k,v,N,B)=>{if(v&&m(T,v),N)for(let Y=0;Y<N.length;Y++)m(T,N[Y]);if(B){let Y=B.subTree;if(k===Y){const J=B.vnode;x(T,J,J.scopeId,J.slotScopeIds,B.parent)}}},j=(T,k,v,N,B,Y,J,M,H=0)=>{for(let C=H;C<T.length;C++){const $=T[C]=M?Tr(T[C]):Ht(T[C]);b(null,$,k,v,N,B,Y,J,M)}},F=(T,k,v,N,B,Y,J)=>{const M=k.el=T.el;let{patchFlag:H,dynamicChildren:C,dirs:$}=k;H|=T.patchFlag&16;const q=T.props||Ve,ee=k.props||Ve;let d;if(v&&Fr(v,!1),(d=ee.onVnodeBeforeUpdate)&&Ft(d,v,k,T),$&&Dr(k,T,v,"beforeUpdate"),v&&Fr(v,!0),(q.innerHTML&&ee.innerHTML==null||q.textContent&&ee.textContent==null)&&c(M,""),C?X(T.dynamicChildren,C,M,v,N,Fo(k,B),Y):J||G(T,k,M,null,v,N,Fo(k,B),Y,!1),H>0){if(H&16)Z(M,q,ee,v,B);else if(H&2&&q.class!==ee.class&&i(M,"class",null,ee.class,B),H&4&&i(M,"style",q.style,ee.style,B),H&8){const f=k.dynamicProps;for(let g=0;g<f.length;g++){const _=f[g],D=q[_],Q=ee[_];(Q!==D||_==="value")&&i(M,_,D,Q,B,v)}}H&1&&T.children!==k.children&&c(M,k.children)}else!J&&C==null&&Z(M,q,ee,v,B);((d=ee.onVnodeUpdated)||$)&&dt(()=>{d&&Ft(d,v,k,T),$&&Dr(k,T,v,"updated")},N)},X=(T,k,v,N,B,Y,J)=>{for(let M=0;M<k.length;M++){const H=T[M],C=k[M],$=H.el&&(H.type===St||!Jr(H,C)||H.shapeFlag&70)?h(H.el):v;b(H,C,$,null,N,B,Y,J,!0)}},Z=(T,k,v,N,B)=>{if(k!==v){if(k!==Ve)for(const Y in k)!zn(Y)&&!(Y in v)&&i(T,Y,k[Y],null,B,N);for(const Y in v){if(zn(Y))continue;const J=v[Y],M=k[Y];J!==M&&Y!=="value"&&i(T,Y,M,J,B,N)}"value"in v&&i(T,"value",k.value,v.value,B)}},S=(T,k,v,N,B,Y,J,M,H)=>{const C=k.el=T?T.el:l(""),$=k.anchor=T?T.anchor:l("");let{patchFlag:q,dynamicChildren:ee,slotScopeIds:d}=k;d&&(M=M?M.concat(d):d),T==null?(n(C,v,N),n($,v,N),j(k.children||[],v,$,B,Y,J,M,H)):q>0&&q&64&&ee&&T.dynamicChildren?(X(T.dynamicChildren,ee,v,B,Y,J,M),(k.key!=null||B&&k===B.subTree)&&wl(T,k,!0)):G(T,k,v,$,B,Y,J,M,H)},z=(T,k,v,N,B,Y,J,M,H)=>{k.slotScopeIds=M,T==null?k.shapeFlag&512?B.ctx.activate(k,v,N,J,H):ae(k,v,N,B,Y,J,H):te(T,k,H)},ae=(T,k,v,N,B,Y,J)=>{const M=T.component=Sm(T,N,B);if(vo(T)&&(M.ctx.renderer=re),Am(M,!1,J),M.asyncDep){if(B&&B.registerDep(M,le,J),!T.el){const H=M.subTree=gt(pt);L(null,H,k,v)}}else le(M,T,k,v,B,Y,J)},te=(T,k,v)=>{const N=k.component=T.component;if(hm(T,k,v))if(N.asyncDep&&!N.asyncResolved){ne(N,k,v);return}else N.next=k,vg(N.update),N.effect.dirty=!0,N.update();else k.el=T.el,N.vnode=k},le=(T,k,v,N,B,Y,J)=>{const M=()=>{if(T.isMounted){let{next:$,bu:q,u:ee,parent:d,vnode:f}=T;{const ue=Jf(T);if(ue){$&&($.el=f.el,ne(T,$,J)),ue.asyncDep.then(()=>{T.isUnmounted||M()});return}}let g=$,_;Fr(T,!1),$?($.el=f.el,ne(T,$,J)):$=f,q&&No(q),(_=$.props&&$.props.onVnodeBeforeUpdate)&&Ft(_,d,$,f),Fr(T,!0);const D=Wo(T),Q=T.subTree;T.subTree=D,b(Q,D,h(Q.el),E(Q),T,B,Y),$.el=D.el,g===null&&dm(T,D.el),ee&&dt(ee,B),(_=$.props&&$.props.onVnodeUpdated)&&dt(()=>Ft(_,d,$,f),B)}else{let $;const{el:q,props:ee}=k,{bm:d,m:f,parent:g}=T,_=Yn(k);if(Fr(T,!1),d&&No(d),!_&&($=ee&&ee.onVnodeBeforeMount)&&Ft($,g,k),Fr(T,!0),q&&se){const D=()=>{T.subTree=Wo(T),se(q,T.subTree,T,B,null)};_?k.type.__asyncLoader().then(()=>!T.isUnmounted&&D()):D()}else{const D=T.subTree=Wo(T);b(null,D,v,N,T,B,Y),k.el=D.el}if(f&&dt(f,B),!_&&($=ee&&ee.onVnodeMounted)){const D=k;dt(()=>Ft($,g,D),B)}(k.shapeFlag&256||g&&Yn(g.vnode)&&g.vnode.shapeFlag&256)&&T.a&&dt(T.a,B),T.isMounted=!0,k=v=N=null}},H=T.effect=new rl(M,Ot,()=>dl(C),T.scope),C=T.update=()=>{H.dirty&&H.run()};C.i=T,C.id=T.uid,Fr(T,!0),C()},ne=(T,k,v)=>{k.component=T;const N=T.vnode.props;T.vnode=k,T.next=null,Kg(T,k.props,N,v),Qg(T,k.children,v),Lr(),ru(T),Nr()},G=(T,k,v,N,B,Y,J,M,H=!1)=>{const C=T&&T.children,$=T?T.shapeFlag:0,q=k.children,{patchFlag:ee,shapeFlag:d}=k;if(ee>0){if(ee&128){ce(C,q,v,N,B,Y,J,M,H);return}else if(ee&256){de(C,q,v,N,B,Y,J,M,H);return}}d&8?($&16&&fe(C,B,Y),q!==C&&c(v,q)):$&16?d&16?ce(C,q,v,N,B,Y,J,M,H):fe(C,B,Y,!0):($&8&&c(v,""),d&16&&j(q,v,N,B,Y,J,M,H))},de=(T,k,v,N,B,Y,J,M,H)=>{T=T||_n,k=k||_n;const C=T.length,$=k.length,q=Math.min(C,$);let ee;for(ee=0;ee<q;ee++){const d=k[ee]=H?Tr(k[ee]):Ht(k[ee]);b(T[ee],d,v,null,B,Y,J,M,H)}C>$?fe(T,B,Y,!0,!1,q):j(k,v,N,B,Y,J,M,H,q)},ce=(T,k,v,N,B,Y,J,M,H)=>{let C=0;const $=k.length;let q=T.length-1,ee=$-1;for(;C<=q&&C<=ee;){const d=T[C],f=k[C]=H?Tr(k[C]):Ht(k[C]);if(Jr(d,f))b(d,f,v,null,B,Y,J,M,H);else break;C++}for(;C<=q&&C<=ee;){const d=T[q],f=k[ee]=H?Tr(k[ee]):Ht(k[ee]);if(Jr(d,f))b(d,f,v,null,B,Y,J,M,H);else break;q--,ee--}if(C>q){if(C<=ee){const d=ee+1,f=d<$?k[d].el:N;for(;C<=ee;)b(null,k[C]=H?Tr(k[C]):Ht(k[C]),v,f,B,Y,J,M,H),C++}}else if(C>ee)for(;C<=q;)A(T[C],B,Y,!0),C++;else{const d=C,f=C,g=new Map;for(C=f;C<=ee;C++){const _e=k[C]=H?Tr(k[C]):Ht(k[C]);_e.key!=null&&g.set(_e.key,C)}let _,D=0;const Q=ee-f+1;let ue=!1,Ae=0;const Oe=new Array(Q);for(C=0;C<Q;C++)Oe[C]=0;for(C=d;C<=q;C++){const _e=T[C];if(D>=Q){A(_e,B,Y,!0);continue}let Se;if(_e.key!=null)Se=g.get(_e.key);else for(_=f;_<=ee;_++)if(Oe[_-f]===0&&Jr(_e,k[_])){Se=_;break}Se===void 0?A(_e,B,Y,!0):(Oe[Se-f]=C+1,Se>=Ae?Ae=Se:ue=!0,b(_e,k[Se],v,null,B,Y,J,M,H),D++)}const Pe=ue?nm(Oe):_n;for(_=Pe.length-1,C=Q-1;C>=0;C--){const _e=f+C,Se=k[_e],Ce=_e+1<$?k[_e+1].el:N;Oe[C]===0?b(null,Se,v,Ce,B,Y,J,M,H):ue&&(_<0||C!==Pe[_]?be(Se,v,Ce,2):_--)}}},be=(T,k,v,N,B=null)=>{const{el:Y,type:J,transition:M,children:H,shapeFlag:C}=T;if(C&6){be(T.component.subTree,k,v,N);return}if(C&128){T.suspense.move(k,v,N);return}if(C&64){J.move(T,k,v,re);return}if(J===St){n(Y,k,v);for(let q=0;q<H.length;q++)be(H[q],k,v,N);n(T.anchor,k,v);return}if(J===ji){w(T,k,v);return}if(N!==2&&C&1&&M)if(N===0)M.beforeEnter(Y),n(Y,k,v),dt(()=>M.enter(Y),B);else{const{leave:q,delayLeave:ee,afterLeave:d}=M,f=()=>n(Y,k,v),g=()=>{q(Y,()=>{f(),d&&d()})};ee?ee(Y,f,g):g()}else n(Y,k,v)},A=(T,k,v,N=!1,B=!1)=>{const{type:Y,props:J,ref:M,children:H,dynamicChildren:C,shapeFlag:$,patchFlag:q,dirs:ee,cacheIndex:d}=T;if(q===-2&&(B=!1),M!=null&&bs(M,null,v,T,!0),d!=null&&(k.renderCache[d]=void 0),$&256){k.ctx.deactivate(T);return}const f=$&1&&ee,g=!Yn(T);let _;if(g&&(_=J&&J.onVnodeBeforeUnmount)&&Ft(_,k,T),$&6)we(T.component,v,N);else{if($&128){T.suspense.unmount(v,N);return}f&&Dr(T,null,k,"beforeUnmount"),$&64?T.type.remove(T,k,v,re,N):C&&!C.hasOnce&&(Y!==St||q>0&&q&64)?fe(C,k,v,!1,!0):(Y===St&&q&384||!B&&$&16)&&fe(H,k,v),N&&ie(T)}(g&&(_=J&&J.onVnodeUnmounted)||f)&&dt(()=>{_&&Ft(_,k,T),f&&Dr(T,null,k,"unmounted")},v)},ie=T=>{const{type:k,el:v,anchor:N,transition:B}=T;if(k===St){he(v,N);return}if(k===ji){U(T);return}const Y=()=>{a(v),B&&!B.persisted&&B.afterLeave&&B.afterLeave()};if(T.shapeFlag&1&&B&&!B.persisted){const{leave:J,delayLeave:M}=B,H=()=>J(v,Y);M?M(T.el,Y,H):H()}else Y()},he=(T,k)=>{let v;for(;T!==k;)v=p(T),a(T),T=v;a(k)},we=(T,k,v)=>{const{bum:N,scope:B,update:Y,subTree:J,um:M,m:H,a:C}=T;hu(H),hu(C),N&&No(N),B.stop(),Y&&(Y.active=!1,A(J,T,k,v)),M&&dt(M,k),dt(()=>{T.isUnmounted=!0},k),k&&k.pendingBranch&&!k.isUnmounted&&T.asyncDep&&!T.asyncResolved&&T.suspenseId===k.pendingId&&(k.deps--,k.deps===0&&k.resolve())},fe=(T,k,v,N=!1,B=!1,Y=0)=>{for(let J=Y;J<T.length;J++)A(T[J],k,v,N,B)},E=T=>{if(T.shapeFlag&6)return E(T.component.subTree);if(T.shapeFlag&128)return T.suspense.next();const k=p(T.anchor||T.el),v=k&&k[Yf];return v?p(v):k};let I=!1;const K=(T,k,v)=>{T==null?k._vnode&&A(k._vnode,null,null,!0):b(k._vnode||null,T,k,null,null,null,v),k._vnode=T,I||(I=!0,ru(),If(),I=!1)},re={p:b,um:A,m:be,r:ie,mt:ae,mc:j,pc:G,pbc:X,n:E,o:e};let oe,se;return{render:K,hydrate:oe,createApp:Hg(K,oe)}}function Fo({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function Fr({effect:e,update:t},r){e.allowRecurse=t.allowRecurse=r}function rm(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function wl(e,t,r=!1){const n=e.children,a=t.children;if(Te(n)&&Te(a))for(let i=0;i<n.length;i++){const o=n[i];let l=a[i];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=a[i]=Tr(a[i]),l.el=o.el),!r&&l.patchFlag!==-2&&wl(o,l)),l.type===Eo&&(l.el=o.el)}}function nm(e){const t=e.slice(),r=[0];let n,a,i,o,l;const s=e.length;for(n=0;n<s;n++){const u=e[n];if(u!==0){if(a=r[r.length-1],e[a]<u){t[n]=a,r.push(n);continue}for(i=0,o=r.length-1;i<o;)l=i+o>>1,e[r[l]]<u?i=l+1:o=l;u<e[r[i]]&&(i>0&&(t[n]=r[i-1]),r[i]=n)}}for(i=r.length,o=r[i-1];i-- >0;)r[i]=o,o=t[o];return r}function Jf(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Jf(t)}function hu(e){if(e)for(let t=0;t<e.length;t++)e[t].active=!1}const im=Symbol.for("v-scx"),om=()=>zt(im);function sm(e,t){return _l(e,null,{flush:"post"})}const Ci={};function Jn(e,t,r){return _l(e,t,r)}function _l(e,t,{immediate:r,deep:n,flush:a,once:i,onTrack:o,onTrigger:l}=Ve){if(t&&i){const R=t;t=(...x)=>{R(...x),W()}}const s=rt,u=R=>n===!0?R:Or(R,n===!1?1:void 0);let c,h=!1,p=!1;if(Je(e)?(c=()=>e.value,h=In(e)):nn(e)?(c=()=>u(e),h=!0):Te(e)?(p=!0,h=e.some(R=>nn(R)||In(R)),c=()=>e.map(R=>{if(Je(R))return R.value;if(nn(R))return u(R);if(Re(R))return Pr(R,s,2)})):Re(e)?t?c=()=>Pr(e,s,2):c=()=>(m&&m(),Rt(e,s,3,[y])):c=Ot,t&&n){const R=c;c=()=>Or(R())}let m,y=R=>{m=w.onStop=()=>{Pr(R,s,4),m=w.onStop=void 0}},b;if(So)if(y=Ot,t?r&&Rt(t,s,3,[c(),p?[]:void 0,y]):c(),a==="sync"){const R=om();b=R.__watcherHandles||(R.__watcherHandles=[])}else return Ot;let O=p?new Array(e.length).fill(Ci):Ci;const L=()=>{if(!(!w.active||!w.dirty))if(t){const R=w.run();(n||h||(p?R.some((x,j)=>kr(x,O[j])):kr(R,O)))&&(m&&m(),Rt(t,s,3,[R,O===Ci?void 0:p&&O[0]===Ci?[]:O,y]),O=R)}else w.run()};L.allowRecurse=!!t;let P;a==="sync"?P=L:a==="post"?P=()=>dt(L,s&&s.suspense):(L.pre=!0,s&&(L.id=s.uid),P=()=>dl(L));const w=new rl(c,Ot,P),U=nf(),W=()=>{w.stop(),U&&el(U.effects,w)};return t?r?L():O=w.run():a==="post"?dt(w.run.bind(w),s&&s.suspense):w.run(),b&&b.push(W),W}function am(e,t,r){const n=this.proxy,a=ze(e)?e.includes(".")?Xf(n,e):()=>n[e]:e.bind(n,n);let i;Re(t)?i=t:(i=t.handler,r=t);const o=mi(this),l=_l(a,i.bind(n),r);return o(),l}function Xf(e,t){const r=t.split(".");return()=>{let n=e;for(let a=0;a<r.length&&n;a++)n=n[r[a]];return n}}function Or(e,t=1/0,r){if(t<=0||!Fe(e)||e.__v_skip||(r=r||new Set,r.has(e)))return e;if(r.add(e),t--,Je(e))Or(e.value,t,r);else if(Te(e))for(let n=0;n<e.length;n++)Or(e[n],t,r);else if(Kc(e)||En(e))e.forEach(n=>{Or(n,t,r)});else if(Gc(e)){for(const n in e)Or(e[n],t,r);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Or(e[n],t,r)}return e}const lm=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ut(t)}Modifiers`]||e[`${Mr(t)}Modifiers`];function um(e,t,...r){if(e.isUnmounted)return;const n=e.vnode.props||Ve;let a=r;const i=t.startsWith("update:"),o=i&&lm(n,t.slice(7));o&&(o.trim&&(a=r.map(c=>ze(c)?c.trim():c)),o.number&&(a=r.map(Bp)));let l,s=n[l=Lo(t)]||n[l=Lo(Ut(t))];!s&&i&&(s=n[l=Lo(Mr(t))]),s&&Rt(s,e,6,a);const u=n[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Rt(u,e,6,a)}}function Zf(e,t,r=!1){const n=t.emitsCache,a=n.get(e);if(a!==void 0)return a;const i=e.emits;let o={},l=!1;if(!Re(e)){const s=u=>{const c=Zf(u,t,!0);c&&(l=!0,nt(o,c))};!r&&t.mixins.length&&t.mixins.forEach(s),e.extends&&s(e.extends),e.mixins&&e.mixins.forEach(s)}return!i&&!l?(Fe(e)&&n.set(e,null),null):(Te(i)?i.forEach(s=>o[s]=null):nt(o,i),Fe(e)&&n.set(e,o),o)}function _o(e,t){return!e||!uo(t)?!1:(t=t.slice(2).replace(/Once$/,""),ke(e,t[0].toLowerCase()+t.slice(1))||ke(e,Mr(t))||ke(e,t))}function Wo(e){const{type:t,vnode:r,proxy:n,withProxy:a,propsOptions:[i],slots:o,attrs:l,emit:s,render:u,renderCache:c,props:h,data:p,setupState:m,ctx:y,inheritAttrs:b}=e,O=Ji(e);let L,P;try{if(r.shapeFlag&4){const U=a||n,W=U;L=Ht(u.call(W,U,c,h,m,p,y)),P=l}else{const U=t;L=Ht(U.length>1?U(h,{attrs:l,slots:o,emit:s}):U(h,null)),P=t.props?l:cm(l)}}catch(U){Xn.length=0,yo(U,e,1),L=gt(pt)}let w=L;if(P&&b!==!1){const U=Object.keys(P),{shapeFlag:W}=w;U.length&&W&7&&(i&&U.some(Za)&&(P=fm(P,i)),w=xr(w,P,!1,!0))}return r.dirs&&(w=xr(w,null,!1,!0),w.dirs=w.dirs?w.dirs.concat(r.dirs):r.dirs),r.transition&&(w.transition=r.transition),L=w,Ji(O),L}const cm=e=>{let t;for(const r in e)(r==="class"||r==="style"||uo(r))&&((t||(t={}))[r]=e[r]);return t},fm=(e,t)=>{const r={};for(const n in e)(!Za(n)||!(n.slice(9)in t))&&(r[n]=e[n]);return r};function hm(e,t,r){const{props:n,children:a,component:i}=e,{props:o,children:l,patchFlag:s}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&s>=0){if(s&1024)return!0;if(s&16)return n?du(n,o,u):!!o;if(s&8){const c=t.dynamicProps;for(let h=0;h<c.length;h++){const p=c[h];if(o[p]!==n[p]&&!_o(u,p))return!0}}}else return(a||l)&&(!l||!l.$stable)?!0:n===o?!1:n?o?du(n,o,u):!0:!!o;return!1}function du(e,t,r){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let a=0;a<n.length;a++){const i=n[a];if(t[i]!==e[i]&&!_o(r,i))return!0}return!1}function dm({vnode:e,parent:t},r){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=r,t=t.parent;else break}}const pm=e=>e.__isSuspense;function gm(e,t){t&&t.pendingBranch?Te(e)?t.effects.push(...e):t.effects.push(e):wg(e)}const St=Symbol.for("v-fgt"),Eo=Symbol.for("v-txt"),pt=Symbol.for("v-cmt"),ji=Symbol.for("v-stc"),Xn=[];let At=null;function eh(e=!1){Xn.push(At=e?null:[])}function mm(){Xn.pop(),At=Xn[Xn.length-1]||null}let ui=1;function pu(e){ui+=e,e<0&&At&&(At.hasOnce=!0)}function th(e){return e.dynamicChildren=ui>0?At||_n:null,mm(),ui>0&&At&&At.push(e),e}function _w(e,t,r,n,a,i){return th(ih(e,t,r,n,a,i,!0))}function rh(e,t,r,n,a){return th(gt(e,t,r,n,a,!0))}function eo(e){return e?e.__v_isVNode===!0:!1}function Jr(e,t){return e.type===t.type&&e.key===t.key}const nh=({key:e})=>e??null,Ui=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?ze(e)||Je(e)||Re(e)?{i:Qe,r:e,k:t,f:!!r}:e:null);function ih(e,t=null,r=null,n=0,a=null,i=e===St?0:1,o=!1,l=!1){const s={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&nh(t),ref:t&&Ui(t),scopeId:bo,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:Qe};return l?(El(s,r),i&128&&e.normalize(s)):r&&(s.shapeFlag|=ze(r)?8:16),ui>0&&!o&&At&&(s.patchFlag>0||i&6)&&s.patchFlag!==32&&At.push(s),s}const gt=ym;function ym(e,t=null,r=null,n=0,a=null,i=!1){if((!e||e===Lf)&&(e=pt),eo(e)){const l=xr(e,t,!0);return r&&El(l,r),ui>0&&!i&&At&&(l.shapeFlag&6?At[At.indexOf(e)]=l:At.push(l)),l.patchFlag=-2,l}if(Rm(e)&&(e=e.__vccOpts),t){t=bm(t);let{class:l,style:s}=t;l&&!ze(l)&&(t.class=go(l)),Fe(s)&&(bf(s)&&!Te(s)&&(s=nt({},s)),t.style=po(s))}const o=ze(e)?1:pm(e)?128:Jg(e)?64:Fe(e)?4:Re(e)?2:0;return ih(e,t,r,n,a,o,i,!0)}function bm(e){return e?bf(e)||Wf(e)?nt({},e):e:null}function xr(e,t,r=!1,n=!1){const{props:a,ref:i,patchFlag:o,children:l,transition:s}=e,u=t?wm(a||{},t):a,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&nh(u),ref:t&&t.ref?r&&i?Te(i)?i.concat(Ui(t)):[i,Ui(t)]:Ui(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==St?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:s,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&xr(e.ssContent),ssFallback:e.ssFallback&&xr(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return s&&n&&Xi(c,s.clone(c)),c}function vm(e=" ",t=0){return gt(Eo,null,e,t)}function Ew(e="",t=!1){return t?(eh(),rh(pt,null,e)):gt(pt,null,e)}function Ht(e){return e==null||typeof e=="boolean"?gt(pt):Te(e)?gt(St,null,e.slice()):typeof e=="object"?Tr(e):gt(Eo,null,String(e))}function Tr(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:xr(e)}function El(e,t){let r=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(Te(t))r=16;else if(typeof t=="object")if(n&65){const a=t.default;a&&(a._c&&(a._d=!1),El(e,a()),a._c&&(a._d=!0));return}else{r=32;const a=t._;!a&&!Wf(t)?t._ctx=Qe:a===3&&Qe&&(Qe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Re(t)?(t={default:t,_ctx:Qe},r=32):(t=String(t),n&64?(r=16,t=[vm(t)]):r=8);e.children=t,e.shapeFlag|=r}function wm(...e){const t={};for(let r=0;r<e.length;r++){const n=e[r];for(const a in n)if(a==="class")t.class!==n.class&&(t.class=go([t.class,n.class]));else if(a==="style")t.style=po([t.style,n.style]);else if(uo(a)){const i=t[a],o=n[a];o&&i!==o&&!(Te(i)&&i.includes(o))&&(t[a]=i?[].concat(i,o):o)}else a!==""&&(t[a]=n[a])}return t}function Ft(e,t,r,n=null){Rt(e,t,7,[r,n])}const _m=Uf();let Em=0;function Sm(e,t,r){const n=e.type,a=(t?t.appContext:e.appContext)||_m,i={uid:Em++,vnode:e,type:n,parent:t,appContext:a,root:null,next:null,subTree:null,effect:null,update:null,scope:new tf(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(a.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Hf(n,a),emitsOptions:Zf(n,a),emit:null,emitted:null,propsDefaults:Ve,inheritAttrs:n.inheritAttrs,ctx:Ve,data:Ve,props:Ve,attrs:Ve,slots:Ve,refs:Ve,setupState:Ve,setupContext:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=um.bind(null,i),e.ce&&e.ce(i),i}let rt=null;const oh=()=>rt||Qe;let to,ws;{const e=Jc(),t=(r,n)=>{let a;return(a=e[r])||(a=e[r]=[]),a.push(n),i=>{a.length>1?a.forEach(o=>o(i)):a[0](i)}};to=t("__VUE_INSTANCE_SETTERS__",r=>rt=r),ws=t("__VUE_SSR_SETTERS__",r=>So=r)}const mi=e=>{const t=rt;return to(e),e.scope.on(),()=>{e.scope.off(),to(t)}},gu=()=>{rt&&rt.scope.off(),to(null)};function sh(e){return e.vnode.shapeFlag&4}let So=!1;function Am(e,t=!1,r=!1){t&&ws(t);const{props:n,children:a}=e.vnode,i=sh(e);qg(e,n,i,t),Gg(e,a,r);const o=i?Im(e,t):void 0;return t&&ws(!1),o}function Im(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ng);const{setup:n}=r;if(n){const a=e.setupContext=n.length>1?Cm(e):null,i=mi(e);Lr();const o=Pr(n,e,0,[e.props,a]);if(Nr(),i(),zc(o)){if(o.then(gu,gu),t)return o.then(l=>{mu(e,l,t)}).catch(l=>{yo(l,e,0)});e.asyncDep=o}else mu(e,o,t)}else ah(e,t)}function mu(e,t,r){Re(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Fe(t)&&(e.setupState=Ef(t)),ah(e,r)}let yu;function ah(e,t,r){const n=e.type;if(!e.render){if(!t&&yu&&!n.render){const a=n.template||bl(e).template;if(a){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:s}=n,u=nt(nt({isCustomElement:i,delimiters:l},o),s);n.render=yu(a,u)}}e.render=n.render||Ot}{const a=mi(e);Lr();try{jg(e)}finally{Nr(),a()}}}const Tm={get(e,t){return bt(e,"get",""),e[t]}};function Cm(e){const t=r=>{e.exposed=r||{}};return{attrs:new Proxy(e.attrs,Tm),slots:e.slots,emit:e.emit,expose:t}}function Ao(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ef(ll(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in Gn)return Gn[r](e)},has(t,r){return r in t||r in Gn}})):e.proxy}function Om(e,t=!0){return Re(e)?e.displayName||e.name:e.name||t&&e.__name}function Rm(e){return Re(e)&&"__vccOpts"in e}const Ct=(e,t)=>cg(e,t,So);function Sl(e,t,r){const n=arguments.length;return n===2?Fe(t)&&!Te(t)?eo(t)?gt(e,null,[t]):gt(e,t):gt(e,null,t):(n>3?r=Array.prototype.slice.call(arguments,2):n===3&&eo(r)&&(r=[r]),gt(e,t,r))}const Pm="3.4.38";/**
-* @vue/runtime-dom v3.4.38
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/const km="http://www.w3.org/2000/svg",xm="http://www.w3.org/1998/Math/MathML",er=typeof document<"u"?document:null,bu=er&&er.createElement("template"),Bm={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,n)=>{const a=t==="svg"?er.createElementNS(km,e):t==="mathml"?er.createElementNS(xm,e):r?er.createElement(e,{is:r}):er.createElement(e);return e==="select"&&n&&n.multiple!=null&&a.setAttribute("multiple",n.multiple),a},createText:e=>er.createTextNode(e),createComment:e=>er.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>er.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,n,a,i){const o=r?r.previousSibling:t.lastChild;if(a&&(a===i||a.nextSibling))for(;t.insertBefore(a.cloneNode(!0),r),!(a===i||!(a=a.nextSibling)););else{bu.innerHTML=n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e;const l=bu.content;if(n==="svg"||n==="mathml"){const s=l.firstChild;for(;s.firstChild;)l.appendChild(s.firstChild);l.removeChild(s)}t.insertBefore(l,r)}return[o?o.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},mr="transition",Ln="animation",ci=Symbol("_vtc"),lh=(e,{slots:t})=>Sl(Ig,Mm(e),t);lh.displayName="Transition";const uh={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};lh.props=nt({},Cf,uh);const Wr=(e,t=[])=>{Te(e)?e.forEach(r=>r(...t)):e&&e(...t)},vu=e=>e?Te(e)?e.some(t=>t.length>1):e.length>1:!1;function Mm(e){const t={};for(const S in e)S in uh||(t[S]=e[S]);if(e.css===!1)return t;const{name:r="v",type:n,duration:a,enterFromClass:i=`${r}-enter-from`,enterActiveClass:o=`${r}-enter-active`,enterToClass:l=`${r}-enter-to`,appearFromClass:s=i,appearActiveClass:u=o,appearToClass:c=l,leaveFromClass:h=`${r}-leave-from`,leaveActiveClass:p=`${r}-leave-active`,leaveToClass:m=`${r}-leave-to`}=e,y=Lm(a),b=y&&y[0],O=y&&y[1],{onBeforeEnter:L,onEnter:P,onEnterCancelled:w,onLeave:U,onLeaveCancelled:W,onBeforeAppear:R=L,onAppear:x=P,onAppearCancelled:j=w}=t,F=(S,z,ae)=>{$r(S,z?c:l),$r(S,z?u:o),ae&&ae()},X=(S,z)=>{S._isLeaving=!1,$r(S,h),$r(S,m),$r(S,p),z&&z()},Z=S=>(z,ae)=>{const te=S?x:P,le=()=>F(z,S,ae);Wr(te,[z,le]),wu(()=>{$r(z,S?s:i),yr(z,S?c:l),vu(te)||_u(z,n,b,le)})};return nt(t,{onBeforeEnter(S){Wr(L,[S]),yr(S,i),yr(S,o)},onBeforeAppear(S){Wr(R,[S]),yr(S,s),yr(S,u)},onEnter:Z(!1),onAppear:Z(!0),onLeave(S,z){S._isLeaving=!0;const ae=()=>X(S,z);yr(S,h),yr(S,p),Um(),wu(()=>{S._isLeaving&&($r(S,h),yr(S,m),vu(U)||_u(S,n,O,ae))}),Wr(U,[S,ae])},onEnterCancelled(S){F(S,!1),Wr(w,[S])},onAppearCancelled(S){F(S,!0),Wr(j,[S])},onLeaveCancelled(S){X(S),Wr(W,[S])}})}function Lm(e){if(e==null)return null;if(Fe(e))return[$o(e.enter),$o(e.leave)];{const t=$o(e);return[t,t]}}function $o(e){return Mp(e)}function yr(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.add(r)),(e[ci]||(e[ci]=new Set)).add(t)}function $r(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.remove(n));const r=e[ci];r&&(r.delete(t),r.size||(e[ci]=void 0))}function wu(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Nm=0;function _u(e,t,r,n){const a=e._endId=++Nm,i=()=>{a===e._endId&&n()};if(r)return setTimeout(i,r);const{type:o,timeout:l,propCount:s}=jm(e,t);if(!o)return n();const u=o+"end";let c=0;const h=()=>{e.removeEventListener(u,p),i()},p=m=>{m.target===e&&++c>=s&&h()};setTimeout(()=>{c<s&&h()},l+1),e.addEventListener(u,p)}function jm(e,t){const r=window.getComputedStyle(e),n=y=>(r[y]||"").split(", "),a=n(`${mr}Delay`),i=n(`${mr}Duration`),o=Eu(a,i),l=n(`${Ln}Delay`),s=n(`${Ln}Duration`),u=Eu(l,s);let c=null,h=0,p=0;t===mr?o>0&&(c=mr,h=o,p=i.length):t===Ln?u>0&&(c=Ln,h=u,p=s.length):(h=Math.max(o,u),c=h>0?o>u?mr:Ln:null,p=c?c===mr?i.length:s.length:0);const m=c===mr&&/\b(transform|all)(,|$)/.test(n(`${mr}Property`).toString());return{type:c,timeout:h,propCount:p,hasTransform:m}}function Eu(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((r,n)=>Su(r)+Su(e[n])))}function Su(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Um(){return document.body.offsetHeight}function Dm(e,t,r){const n=e[ci];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const ro=Symbol("_vod"),ch=Symbol("_vsh"),Sw={beforeMount(e,{value:t},{transition:r}){e[ro]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):Nn(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:n}){!t!=!r&&(n?t?(n.beforeEnter(e),Nn(e,!0),n.enter(e)):n.leave(e,()=>{Nn(e,!1)}):Nn(e,t))},beforeUnmount(e,{value:t}){Nn(e,t)}};function Nn(e,t){e.style.display=t?e[ro]:"none",e[ch]=!t}const fh=Symbol("");function Aw(e){const t=oh();if(!t)return;const r=t.ut=(a=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(i=>Es(i,a))},n=()=>{const a=e(t.proxy);_s(t.subTree,a),r(a)};Bf(()=>{sm(n)}),pl(()=>{const a=new MutationObserver(n);a.observe(t.subTree.el.parentNode,{childList:!0}),gl(()=>a.disconnect())})}function _s(e,t){if(e.shapeFlag&128){const r=e.suspense;e=r.activeBranch,r.pendingBranch&&!r.isHydrating&&r.effects.push(()=>{_s(r.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)Es(e.el,t);else if(e.type===St)e.children.forEach(r=>_s(r,t));else if(e.type===ji){let{el:r,anchor:n}=e;for(;r&&(Es(r,t),r!==n);)r=r.nextSibling}}function Es(e,t){if(e.nodeType===1){const r=e.style;let n="";for(const a in t)r.setProperty(`--${a}`,t[a]),n+=`--${a}: ${t[a]};`;r[fh]=n}}const Fm=/(^|;)\s*display\s*:/;function Wm(e,t,r){const n=e.style,a=ze(r);let i=!1;if(r&&!a){if(t)if(ze(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();r[l]==null&&Di(n,l,"")}else for(const o in t)r[o]==null&&Di(n,o,"");for(const o in r)o==="display"&&(i=!0),Di(n,o,r[o])}else if(a){if(t!==r){const o=n[fh];o&&(r+=";"+o),n.cssText=r,i=Fm.test(r)}}else t&&e.removeAttribute("style");ro in e&&(e[ro]=i?n.display:"",e[ch]&&(n.display="none"))}const Au=/\s*!important$/;function Di(e,t,r){if(Te(r))r.forEach(n=>Di(e,t,n));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const n=$m(e,t);Au.test(r)?e.setProperty(Mr(n),r.replace(Au,""),"important"):e[n]=r}}const Iu=["Webkit","Moz","ms"],Ho={};function $m(e,t){const r=Ho[t];if(r)return r;let n=Ut(t);if(n!=="filter"&&n in e)return Ho[t]=n;n=ho(n);for(let a=0;a<Iu.length;a++){const i=Iu[a]+n;if(i in e)return Ho[t]=i}return t}const Tu="http://www.w3.org/1999/xlink";function Cu(e,t,r,n,a,i=Fp(t)){n&&t.startsWith("xlink:")?r==null?e.removeAttributeNS(Tu,t.slice(6,t.length)):e.setAttributeNS(Tu,t,r):r==null||i&&!Xc(r)?e.removeAttribute(t):e.setAttribute(t,i?"":Br(r)?String(r):r)}function Hm(e,t,r,n){if(t==="innerHTML"||t==="textContent"){if(r==null)return;e[t]=r;return}const a=e.tagName;if(t==="value"&&a!=="PROGRESS"&&!a.includes("-")){const o=a==="OPTION"?e.getAttribute("value")||"":e.value,l=r==null?"":String(r);(o!==l||!("_value"in e))&&(e.value=l),r==null&&e.removeAttribute(t),e._value=r;return}let i=!1;if(r===""||r==null){const o=typeof e[t];o==="boolean"?r=Xc(r):r==null&&o==="string"?(r="",i=!0):o==="number"&&(r=0,i=!0)}try{e[t]=r}catch{}i&&e.removeAttribute(t)}function Vm(e,t,r,n){e.addEventListener(t,r,n)}function qm(e,t,r,n){e.removeEventListener(t,r,n)}const Ou=Symbol("_vei");function Km(e,t,r,n,a=null){const i=e[Ou]||(e[Ou]={}),o=i[t];if(n&&o)o.value=n;else{const[l,s]=zm(t);if(n){const u=i[t]=Qm(n,a);Vm(e,l,u,s)}else o&&(qm(e,l,o,s),i[t]=void 0)}}const Ru=/(?:Once|Passive|Capture)$/;function zm(e){let t;if(Ru.test(e)){t={};let n;for(;n=e.match(Ru);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Mr(e.slice(2)),t]}let Vo=0;const Ym=Promise.resolve(),Gm=()=>Vo||(Ym.then(()=>Vo=0),Vo=Date.now());function Qm(e,t){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;Rt(Jm(n,r.value),t,5,[n])};return r.value=e,r.attached=Gm(),r}function Jm(e,t){if(Te(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(n=>a=>!a._stopped&&n&&n(a))}else return t}const Pu=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Xm=(e,t,r,n,a,i)=>{const o=a==="svg";t==="class"?Dm(e,n,o):t==="style"?Wm(e,r,n):uo(t)?Za(t)||Km(e,t,r,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Zm(e,t,n,o))?(Hm(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Cu(e,t,n,o,i,t!=="value")):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Cu(e,t,n,o))};function Zm(e,t,r,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Pu(t)&&Re(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const a=e.tagName;if(a==="IMG"||a==="VIDEO"||a==="CANVAS"||a==="SOURCE")return!1}return Pu(t)&&ze(r)?!1:t in e}const ey=["ctrl","shift","alt","meta"],ty={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ey.some(r=>e[`${r}Key`]&&!t.includes(r))},Iw=(e,t)=>{const r=e._withMods||(e._withMods={}),n=t.join(".");return r[n]||(r[n]=(a,...i)=>{for(let o=0;o<t.length;o++){const l=ty[t[o]];if(l&&l(a,t))return}return e(a,...i)})},ry={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Tw=(e,t)=>{const r=e._withKeys||(e._withKeys={}),n=t.join(".");return r[n]||(r[n]=a=>{if(!("key"in a))return;const i=Mr(a.key);if(t.some(o=>o===i||ry[o]===i))return e(a)})},ny=nt({patchProp:Xm},Bm);let ku;function iy(){return ku||(ku=em(ny))}const Cw=(...e)=>{const t=iy().createApp(...e),{mount:r}=t;return t.mount=n=>{const a=sy(n);if(!a)return;const i=t._component;!Re(i)&&!i.render&&!i.template&&(i.template=a.innerHTML),a.innerHTML="";const o=r(a,!1,oy(a));return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),o},t};function oy(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function sy(e){return ze(e)?document.querySelector(e):e}var ay=!1;let hh;const Io=e=>hh=e,dh=Symbol();function Ss(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Zn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Zn||(Zn={}));function Ow(){const e=rf(!0),t=e.run(()=>cl({}));let r=[],n=[];const a=ll({install(i){Io(a),a._a=i,i.provide(dh,a),i.config.globalProperties.$pinia=a,n.forEach(o=>r.push(o)),n=[]},use(i){return!this._a&&!ay?n.push(i):r.push(i),this},_p:r,_a:null,_e:e,_s:new Map,state:t});return a}const ph=()=>{};function xu(e,t,r,n=ph){e.push(t);const a=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),n())};return!r&&nf()&&Hp(a),a}function mn(e,...t){e.slice().forEach(r=>{r(...t)})}const ly=e=>e(),Bu=Symbol(),qo=Symbol();function As(e,t){e instanceof Map&&t instanceof Map?t.forEach((r,n)=>e.set(n,r)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const r in t){if(!t.hasOwnProperty(r))continue;const n=t[r],a=e[r];Ss(a)&&Ss(n)&&e.hasOwnProperty(r)&&!Je(n)&&!nn(n)?e[r]=As(a,n):e[r]=n}return e}const uy=Symbol();function cy(e){return!Ss(e)||!e.hasOwnProperty(uy)}const{assign:vr}=Object;function fy(e){return!!(Je(e)&&e.effect)}function hy(e,t,r,n){const{state:a,actions:i,getters:o}=t,l=r.state.value[e];let s;function u(){l||(r.state.value[e]=a?a():{});const c=pg(r.state.value[e]);return vr(c,i,Object.keys(o||{}).reduce((h,p)=>(h[p]=ll(Ct(()=>{Io(r);const m=r._s.get(e);return o[p].call(m,m)})),h),{}))}return s=gh(e,u,t,r,n,!0),s}function gh(e,t,r={},n,a,i){let o;const l=vr({actions:{}},r),s={deep:!0};let u,c,h=[],p=[],m;const y=n.state.value[e];!i&&!y&&(n.state.value[e]={}),cl({});let b;function O(j){let F;u=c=!1,typeof j=="function"?(j(n.state.value[e]),F={type:Zn.patchFunction,storeId:e,events:m}):(As(n.state.value[e],j),F={type:Zn.patchObject,payload:j,storeId:e,events:m});const X=b=Symbol();hl().then(()=>{b===X&&(u=!0)}),c=!0,mn(h,F,n.state.value[e])}const L=i?function(){const{state:F}=r,X=F?F():{};this.$patch(Z=>{vr(Z,X)})}:ph;function P(){o.stop(),h=[],p=[],n._s.delete(e)}const w=(j,F="")=>{if(Bu in j)return j[qo]=F,j;const X=function(){Io(n);const Z=Array.from(arguments),S=[],z=[];function ae(ne){S.push(ne)}function te(ne){z.push(ne)}mn(p,{args:Z,name:X[qo],store:W,after:ae,onError:te});let le;try{le=j.apply(this&&this.$id===e?this:W,Z)}catch(ne){throw mn(z,ne),ne}return le instanceof Promise?le.then(ne=>(mn(S,ne),ne)).catch(ne=>(mn(z,ne),Promise.reject(ne))):(mn(S,le),le)};return X[Bu]=!0,X[qo]=F,X},U={_p:n,$id:e,$onAction:xu.bind(null,p),$patch:O,$reset:L,$subscribe(j,F={}){const X=xu(h,j,F.detached,()=>Z()),Z=o.run(()=>Jn(()=>n.state.value[e],S=>{(F.flush==="sync"?c:u)&&j({storeId:e,type:Zn.direct,events:m},S)},vr({},s,F)));return X},$dispose:P},W=gi(U);n._s.set(e,W);const x=(n._a&&n._a.runWithContext||ly)(()=>n._e.run(()=>(o=rf()).run(()=>t({action:w}))));for(const j in x){const F=x[j];if(Je(F)&&!fy(F)||nn(F))i||(y&&cy(F)&&(Je(F)?F.value=y[j]:As(F,y[j])),n.state.value[e][j]=F);else if(typeof F=="function"){const X=w(F,j);x[j]=X,l.actions[j]=F}}return vr(W,x),vr(xe(W),x),Object.defineProperty(W,"$state",{get:()=>n.state.value[e],set:j=>{O(F=>{vr(F,j)})}}),n._p.forEach(j=>{vr(W,o.run(()=>j({store:W,app:n._a,pinia:n,options:l})))}),y&&i&&r.hydrate&&r.hydrate(W.$state,y),u=!0,c=!0,W}function Rw(e,t,r){let n,a;const i=typeof t=="function";n=e,a=i?r:t;function o(l,s){const u=Vg();return l=l||(u?zt(dh,null):null),l&&Io(l),l=hh,l._s.has(n)||(i?gh(n,t,a,l):hy(n,a,l)),l._s.get(n)}return o.$id=n,o}/*!
-  * vue-router v4.4.3
-  * (c) 2024 Eduardo San Martin Morote
-  * @license MIT
-  */const bn=typeof document<"u";function dy(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const Le=Object.assign;function Ko(e,t){const r={};for(const n in t){const a=t[n];r[n]=Dt(a)?a.map(e):e(a)}return r}const ei=()=>{},Dt=Array.isArray,mh=/#/g,py=/&/g,gy=/\//g,my=/=/g,yy=/\?/g,yh=/\+/g,by=/%5B/g,vy=/%5D/g,bh=/%5E/g,wy=/%60/g,vh=/%7B/g,_y=/%7C/g,wh=/%7D/g,Ey=/%20/g;function Al(e){return encodeURI(""+e).replace(_y,"|").replace(by,"[").replace(vy,"]")}function Sy(e){return Al(e).replace(vh,"{").replace(wh,"}").replace(bh,"^")}function Is(e){return Al(e).replace(yh,"%2B").replace(Ey,"+").replace(mh,"%23").replace(py,"%26").replace(wy,"`").replace(vh,"{").replace(wh,"}").replace(bh,"^")}function Ay(e){return Is(e).replace(my,"%3D")}function Iy(e){return Al(e).replace(mh,"%23").replace(yy,"%3F")}function Ty(e){return e==null?"":Iy(e).replace(gy,"%2F")}function fi(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Cy=/\/$/,Oy=e=>e.replace(Cy,"");function zo(e,t,r="/"){let n,a={},i="",o="";const l=t.indexOf("#");let s=t.indexOf("?");return l<s&&l>=0&&(s=-1),s>-1&&(n=t.slice(0,s),i=t.slice(s+1,l>-1?l:t.length),a=e(i)),l>-1&&(n=n||t.slice(0,l),o=t.slice(l,t.length)),n=xy(n??t,r),{fullPath:n+(i&&"?")+i+o,path:n,query:a,hash:fi(o)}}function Ry(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function Mu(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Py(e,t,r){const n=t.matched.length-1,a=r.matched.length-1;return n>-1&&n===a&&Tn(t.matched[n],r.matched[a])&&_h(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function Tn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function _h(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!ky(e[r],t[r]))return!1;return!0}function ky(e,t){return Dt(e)?Lu(e,t):Dt(t)?Lu(t,e):e===t}function Lu(e,t){return Dt(t)?e.length===t.length&&e.every((r,n)=>r===t[n]):e.length===1&&e[0]===t}function xy(e,t){if(e.startsWith("/"))return e;if(!e)return t;const r=t.split("/"),n=e.split("/"),a=n[n.length-1];(a===".."||a===".")&&n.push("");let i=r.length-1,o,l;for(o=0;o<n.length;o++)if(l=n[o],l!==".")if(l==="..")i>1&&i--;else break;return r.slice(0,i).join("/")+"/"+n.slice(o).join("/")}const br={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var hi;(function(e){e.pop="pop",e.push="push"})(hi||(hi={}));var ti;(function(e){e.back="back",e.forward="forward",e.unknown=""})(ti||(ti={}));function By(e){if(!e)if(bn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Oy(e)}const My=/^[^#]+#/;function Ly(e,t){return e.replace(My,"#")+t}function Ny(e,t){const r=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{behavior:t.behavior,left:n.left-r.left-(t.left||0),top:n.top-r.top-(t.top||0)}}const To=()=>({left:window.scrollX,top:window.scrollY});function jy(e){let t;if("el"in e){const r=e.el,n=typeof r=="string"&&r.startsWith("#"),a=typeof r=="string"?n?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!a)return;t=Ny(a,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Nu(e,t){return(history.state?history.state.position-t:-1)+e}const Ts=new Map;function Uy(e,t){Ts.set(e,t)}function Dy(e){const t=Ts.get(e);return Ts.delete(e),t}let Fy=()=>location.protocol+"//"+location.host;function Eh(e,t){const{pathname:r,search:n,hash:a}=t,i=e.indexOf("#");if(i>-1){let l=a.includes(e.slice(i))?e.slice(i).length:1,s=a.slice(l);return s[0]!=="/"&&(s="/"+s),Mu(s,"")}return Mu(r,e)+n+a}function Wy(e,t,r,n){let a=[],i=[],o=null;const l=({state:p})=>{const m=Eh(e,location),y=r.value,b=t.value;let O=0;if(p){if(r.value=m,t.value=p,o&&o===y){o=null;return}O=b?p.position-b.position:0}else n(m);a.forEach(L=>{L(r.value,y,{delta:O,type:hi.pop,direction:O?O>0?ti.forward:ti.back:ti.unknown})})};function s(){o=r.value}function u(p){a.push(p);const m=()=>{const y=a.indexOf(p);y>-1&&a.splice(y,1)};return i.push(m),m}function c(){const{history:p}=window;p.state&&p.replaceState(Le({},p.state,{scroll:To()}),"")}function h(){for(const p of i)p();i=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:s,listen:u,destroy:h}}function ju(e,t,r,n=!1,a=!1){return{back:e,current:t,forward:r,replaced:n,position:window.history.length,scroll:a?To():null}}function $y(e){const{history:t,location:r}=window,n={value:Eh(e,r)},a={value:t.state};a.value||i(n.value,{back:null,current:n.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(s,u,c){const h=e.indexOf("#"),p=h>-1?(r.host&&document.querySelector("base")?e:e.slice(h))+s:Fy()+e+s;try{t[c?"replaceState":"pushState"](u,"",p),a.value=u}catch(m){console.error(m),r[c?"replace":"assign"](p)}}function o(s,u){const c=Le({},t.state,ju(a.value.back,s,a.value.forward,!0),u,{position:a.value.position});i(s,c,!0),n.value=s}function l(s,u){const c=Le({},a.value,t.state,{forward:s,scroll:To()});i(c.current,c,!0);const h=Le({},ju(n.value,s,null),{position:c.position+1},u);i(s,h,!1),n.value=s}return{location:n,state:a,push:l,replace:o}}function Hy(e){e=By(e);const t=$y(e),r=Wy(e,t.state,t.location,t.replace);function n(i,o=!0){o||r.pauseListeners(),history.go(i)}const a=Le({location:"",base:e,go:n,createHref:Ly.bind(null,e)},t,r);return Object.defineProperty(a,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(a,"state",{enumerable:!0,get:()=>t.state.value}),a}function Pw(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),Hy(e)}function Vy(e){return typeof e=="string"||e&&typeof e=="object"}function Sh(e){return typeof e=="string"||typeof e=="symbol"}const Ah=Symbol("");var Uu;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Uu||(Uu={}));function Cn(e,t){return Le(new Error,{type:e,[Ah]:!0},t)}function Qt(e,t){return e instanceof Error&&Ah in e&&(t==null||!!(e.type&t))}const Du="[^/]+?",qy={sensitive:!1,strict:!1,start:!0,end:!0},Ky=/[.+*?^${}()[\]/\\]/g;function zy(e,t){const r=Le({},qy,t),n=[];let a=r.start?"^":"";const i=[];for(const u of e){const c=u.length?[]:[90];r.strict&&!u.length&&(a+="/");for(let h=0;h<u.length;h++){const p=u[h];let m=40+(r.sensitive?.25:0);if(p.type===0)h||(a+="/"),a+=p.value.replace(Ky,"\\$&"),m+=40;else if(p.type===1){const{value:y,repeatable:b,optional:O,regexp:L}=p;i.push({name:y,repeatable:b,optional:O});const P=L||Du;if(P!==Du){m+=10;try{new RegExp(`(${P})`)}catch(U){throw new Error(`Invalid custom RegExp for param "${y}" (${P}): `+U.message)}}let w=b?`((?:${P})(?:/(?:${P}))*)`:`(${P})`;h||(w=O&&u.length<2?`(?:/${w})`:"/"+w),O&&(w+="?"),a+=w,m+=20,O&&(m+=-8),b&&(m+=-20),P===".*"&&(m+=-50)}c.push(m)}n.push(c)}if(r.strict&&r.end){const u=n.length-1;n[u][n[u].length-1]+=.7000000000000001}r.strict||(a+="/?"),r.end?a+="$":r.strict&&(a+="(?:/|$)");const o=new RegExp(a,r.sensitive?"":"i");function l(u){const c=u.match(o),h={};if(!c)return null;for(let p=1;p<c.length;p++){const m=c[p]||"",y=i[p-1];h[y.name]=m&&y.repeatable?m.split("/"):m}return h}function s(u){let c="",h=!1;for(const p of e){(!h||!c.endsWith("/"))&&(c+="/"),h=!1;for(const m of p)if(m.type===0)c+=m.value;else if(m.type===1){const{value:y,repeatable:b,optional:O}=m,L=y in u?u[y]:"";if(Dt(L)&&!b)throw new Error(`Provided param "${y}" is an array but it is not repeatable (* or + modifiers)`);const P=Dt(L)?L.join("/"):L;if(!P)if(O)p.length<2&&(c.endsWith("/")?c=c.slice(0,-1):h=!0);else throw new Error(`Missing required param "${y}"`);c+=P}}return c||"/"}return{re:o,score:n,keys:i,parse:l,stringify:s}}function Yy(e,t){let r=0;for(;r<e.length&&r<t.length;){const n=t[r]-e[r];if(n)return n;r++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function Ih(e,t){let r=0;const n=e.score,a=t.score;for(;r<n.length&&r<a.length;){const i=Yy(n[r],a[r]);if(i)return i;r++}if(Math.abs(a.length-n.length)===1){if(Fu(n))return 1;if(Fu(a))return-1}return a.length-n.length}function Fu(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const Gy={type:0,value:""},Qy=/[a-zA-Z0-9_]/;function Jy(e){if(!e)return[[]];if(e==="/")return[[Gy]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${r})/"${u}": ${m}`)}let r=0,n=r;const a=[];let i;function o(){i&&a.push(i),i=[]}let l=0,s,u="",c="";function h(){u&&(r===0?i.push({type:0,value:u}):r===1||r===2||r===3?(i.length>1&&(s==="*"||s==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:u,regexp:c,repeatable:s==="*"||s==="+",optional:s==="*"||s==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=s}for(;l<e.length;){if(s=e[l++],s==="\\"&&r!==2){n=r,r=4;continue}switch(r){case 0:s==="/"?(u&&h(),o()):s===":"?(h(),r=1):p();break;case 4:p(),r=n;break;case 1:s==="("?r=2:Qy.test(s)?p():(h(),r=0,s!=="*"&&s!=="?"&&s!=="+"&&l--);break;case 2:s===")"?c[c.length-1]=="\\"?c=c.slice(0,-1)+s:r=3:c+=s;break;case 3:h(),r=0,s!=="*"&&s!=="?"&&s!=="+"&&l--,c="";break;default:t("Unknown state");break}}return r===2&&t(`Unfinished custom RegExp for param "${u}"`),h(),o(),a}function Xy(e,t,r){const n=zy(Jy(e.path),r),a=Le(n,{record:e,parent:t,children:[],alias:[]});return t&&!a.record.aliasOf==!t.record.aliasOf&&t.children.push(a),a}function Zy(e,t){const r=[],n=new Map;t=Hu({strict:!1,end:!0,sensitive:!1},t);function a(h){return n.get(h)}function i(h,p,m){const y=!m,b=eb(h);b.aliasOf=m&&m.record;const O=Hu(t,h),L=[b];if("alias"in h){const U=typeof h.alias=="string"?[h.alias]:h.alias;for(const W of U)L.push(Le({},b,{components:m?m.record.components:b.components,path:W,aliasOf:m?m.record:b}))}let P,w;for(const U of L){const{path:W}=U;if(p&&W[0]!=="/"){const R=p.record.path,x=R[R.length-1]==="/"?"":"/";U.path=p.record.path+(W&&x+W)}if(P=Xy(U,p,O),m?m.alias.push(P):(w=w||P,w!==P&&w.alias.push(P),y&&h.name&&!$u(P)&&o(h.name)),Th(P)&&s(P),b.children){const R=b.children;for(let x=0;x<R.length;x++)i(R[x],P,m&&m.children[x])}m=m||P}return w?()=>{o(w)}:ei}function o(h){if(Sh(h)){const p=n.get(h);p&&(n.delete(h),r.splice(r.indexOf(p),1),p.children.forEach(o),p.alias.forEach(o))}else{const p=r.indexOf(h);p>-1&&(r.splice(p,1),h.record.name&&n.delete(h.record.name),h.children.forEach(o),h.alias.forEach(o))}}function l(){return r}function s(h){const p=nb(h,r);r.splice(p,0,h),h.record.name&&!$u(h)&&n.set(h.record.name,h)}function u(h,p){let m,y={},b,O;if("name"in h&&h.name){if(m=n.get(h.name),!m)throw Cn(1,{location:h});O=m.record.name,y=Le(Wu(p.params,m.keys.filter(w=>!w.optional).concat(m.parent?m.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),h.params&&Wu(h.params,m.keys.map(w=>w.name))),b=m.stringify(y)}else if(h.path!=null)b=h.path,m=r.find(w=>w.re.test(b)),m&&(y=m.parse(b),O=m.record.name);else{if(m=p.name?n.get(p.name):r.find(w=>w.re.test(p.path)),!m)throw Cn(1,{location:h,currentLocation:p});O=m.record.name,y=Le({},p.params,h.params),b=m.stringify(y)}const L=[];let P=m;for(;P;)L.unshift(P.record),P=P.parent;return{name:O,path:b,params:y,matched:L,meta:rb(L)}}e.forEach(h=>i(h));function c(){r.length=0,n.clear()}return{addRoute:i,resolve:u,removeRoute:o,clearRoutes:c,getRoutes:l,getRecordMatcher:a}}function Wu(e,t){const r={};for(const n of t)n in e&&(r[n]=e[n]);return r}function eb(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:tb(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function tb(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const n in e.components)t[n]=typeof r=="object"?r[n]:r;return t}function $u(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function rb(e){return e.reduce((t,r)=>Le(t,r.meta),{})}function Hu(e,t){const r={};for(const n in e)r[n]=n in t?t[n]:e[n];return r}function nb(e,t){let r=0,n=t.length;for(;r!==n;){const i=r+n>>1;Ih(e,t[i])<0?n=i:r=i+1}const a=ib(e);return a&&(n=t.lastIndexOf(a,n-1)),n}function ib(e){let t=e;for(;t=t.parent;)if(Th(t)&&Ih(e,t)===0)return t}function Th({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ob(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let a=0;a<n.length;++a){const i=n[a].replace(yh," "),o=i.indexOf("="),l=fi(o<0?i:i.slice(0,o)),s=o<0?null:fi(i.slice(o+1));if(l in t){let u=t[l];Dt(u)||(u=t[l]=[u]),u.push(s)}else t[l]=s}return t}function Vu(e){let t="";for(let r in e){const n=e[r];if(r=Ay(r),n==null){n!==void 0&&(t+=(t.length?"&":"")+r);continue}(Dt(n)?n.map(i=>i&&Is(i)):[n&&Is(n)]).forEach(i=>{i!==void 0&&(t+=(t.length?"&":"")+r,i!=null&&(t+="="+i))})}return t}function sb(e){const t={};for(const r in e){const n=e[r];n!==void 0&&(t[r]=Dt(n)?n.map(a=>a==null?null:""+a):n==null?n:""+n)}return t}const ab=Symbol(""),qu=Symbol(""),Il=Symbol(""),Ch=Symbol(""),Cs=Symbol("");function jn(){let e=[];function t(n){return e.push(n),()=>{const a=e.indexOf(n);a>-1&&e.splice(a,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function Cr(e,t,r,n,a,i=o=>o()){const o=n&&(n.enterCallbacks[a]=n.enterCallbacks[a]||[]);return()=>new Promise((l,s)=>{const u=p=>{p===!1?s(Cn(4,{from:r,to:t})):p instanceof Error?s(p):Vy(p)?s(Cn(2,{from:t,to:p})):(o&&n.enterCallbacks[a]===o&&typeof p=="function"&&o.push(p),l())},c=i(()=>e.call(n&&n.instances[a],t,r,u));let h=Promise.resolve(c);e.length<3&&(h=h.then(u)),h.catch(p=>s(p))})}function Yo(e,t,r,n,a=i=>i()){const i=[];for(const o of e)for(const l in o.components){let s=o.components[l];if(!(t!=="beforeRouteEnter"&&!o.instances[l]))if(lb(s)){const c=(s.__vccOpts||s)[t];c&&i.push(Cr(c,r,n,o,l,a))}else{let u=s();i.push(()=>u.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${l}" at "${o.path}"`));const h=dy(c)?c.default:c;o.components[l]=h;const m=(h.__vccOpts||h)[t];return m&&Cr(m,r,n,o,l,a)()}))}}return i}function lb(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Ku(e){const t=zt(Il),r=zt(Ch),n=Ct(()=>{const s=Sn(e.to);return t.resolve(s)}),a=Ct(()=>{const{matched:s}=n.value,{length:u}=s,c=s[u-1],h=r.matched;if(!c||!h.length)return-1;const p=h.findIndex(Tn.bind(null,c));if(p>-1)return p;const m=zu(s[u-2]);return u>1&&zu(c)===m&&h[h.length-1].path!==m?h.findIndex(Tn.bind(null,s[u-2])):p}),i=Ct(()=>a.value>-1&&hb(r.params,n.value.params)),o=Ct(()=>a.value>-1&&a.value===r.matched.length-1&&_h(r.params,n.value.params));function l(s={}){return fb(s)?t[Sn(e.replace)?"replace":"push"](Sn(e.to)).catch(ei):Promise.resolve()}return{route:n,href:Ct(()=>n.value.href),isActive:i,isExactActive:o,navigate:l}}const ub=kf({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Ku,setup(e,{slots:t}){const r=gi(Ku(e)),{options:n}=zt(Il),a=Ct(()=>({[Yu(e.activeClass,n.linkActiveClass,"router-link-active")]:r.isActive,[Yu(e.exactActiveClass,n.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const i=t.default&&t.default(r);return e.custom?i:Sl("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:a.value},i)}}}),cb=ub;function fb(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function hb(e,t){for(const r in t){const n=t[r],a=e[r];if(typeof n=="string"){if(n!==a)return!1}else if(!Dt(a)||a.length!==n.length||n.some((i,o)=>i!==a[o]))return!1}return!0}function zu(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Yu=(e,t,r)=>e??t??r,db=kf({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const n=zt(Cs),a=Ct(()=>e.route||n.value),i=zt(qu,0),o=Ct(()=>{let u=Sn(i);const{matched:c}=a.value;let h;for(;(h=c[u])&&!h.components;)u++;return u}),l=Ct(()=>a.value.matched[o.value]);Ni(qu,Ct(()=>o.value+1)),Ni(ab,l),Ni(Cs,a);const s=cl();return Jn(()=>[s.value,l.value,e.name],([u,c,h],[p,m,y])=>{c&&(c.instances[h]=u,m&&m!==c&&u&&u===p&&(c.leaveGuards.size||(c.leaveGuards=m.leaveGuards),c.updateGuards.size||(c.updateGuards=m.updateGuards))),u&&c&&(!m||!Tn(c,m)||!p)&&(c.enterCallbacks[h]||[]).forEach(b=>b(u))},{flush:"post"}),()=>{const u=a.value,c=e.name,h=l.value,p=h&&h.components[c];if(!p)return Gu(r.default,{Component:p,route:u});const m=h.props[c],y=m?m===!0?u.params:typeof m=="function"?m(u):m:null,O=Sl(p,Le({},y,t,{onVnodeUnmounted:L=>{L.component.isUnmounted&&(h.instances[c]=null)},ref:s}));return Gu(r.default,{Component:O,route:u})||O}}});function Gu(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const pb=db;function kw(e){const t=Zy(e.routes,e),r=e.parseQuery||ob,n=e.stringifyQuery||Vu,a=e.history,i=jn(),o=jn(),l=jn(),s=fg(br);let u=br;bn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Ko.bind(null,E=>""+E),h=Ko.bind(null,Ty),p=Ko.bind(null,fi);function m(E,I){let K,re;return Sh(E)?(K=t.getRecordMatcher(E),re=I):re=E,t.addRoute(re,K)}function y(E){const I=t.getRecordMatcher(E);I&&t.removeRoute(I)}function b(){return t.getRoutes().map(E=>E.record)}function O(E){return!!t.getRecordMatcher(E)}function L(E,I){if(I=Le({},I||s.value),typeof E=="string"){const k=zo(r,E,I.path),v=t.resolve({path:k.path},I),N=a.createHref(k.fullPath);return Le(k,v,{params:p(v.params),hash:fi(k.hash),redirectedFrom:void 0,href:N})}let K;if(E.path!=null)K=Le({},E,{path:zo(r,E.path,I.path).path});else{const k=Le({},E.params);for(const v in k)k[v]==null&&delete k[v];K=Le({},E,{params:h(k)}),I.params=h(I.params)}const re=t.resolve(K,I),oe=E.hash||"";re.params=c(p(re.params));const se=Ry(n,Le({},E,{hash:Sy(oe),path:re.path})),T=a.createHref(se);return Le({fullPath:se,hash:oe,query:n===Vu?sb(E.query):E.query||{}},re,{redirectedFrom:void 0,href:T})}function P(E){return typeof E=="string"?zo(r,E,s.value.path):Le({},E)}function w(E,I){if(u!==E)return Cn(8,{from:I,to:E})}function U(E){return x(E)}function W(E){return U(Le(P(E),{replace:!0}))}function R(E){const I=E.matched[E.matched.length-1];if(I&&I.redirect){const{redirect:K}=I;let re=typeof K=="function"?K(E):K;return typeof re=="string"&&(re=re.includes("?")||re.includes("#")?re=P(re):{path:re},re.params={}),Le({query:E.query,hash:E.hash,params:re.path!=null?{}:E.params},re)}}function x(E,I){const K=u=L(E),re=s.value,oe=E.state,se=E.force,T=E.replace===!0,k=R(K);if(k)return x(Le(P(k),{state:typeof k=="object"?Le({},oe,k.state):oe,force:se,replace:T}),I||K);const v=K;v.redirectedFrom=I;let N;return!se&&Py(n,re,K)&&(N=Cn(16,{to:v,from:re}),be(re,re,!0,!1)),(N?Promise.resolve(N):X(v,re)).catch(B=>Qt(B)?Qt(B,2)?B:ce(B):G(B,v,re)).then(B=>{if(B){if(Qt(B,2))return x(Le({replace:T},P(B.to),{state:typeof B.to=="object"?Le({},oe,B.to.state):oe,force:se}),I||v)}else B=S(v,re,!0,T,oe);return Z(v,re,B),B})}function j(E,I){const K=w(E,I);return K?Promise.reject(K):Promise.resolve()}function F(E){const I=he.values().next().value;return I&&typeof I.runWithContext=="function"?I.runWithContext(E):E()}function X(E,I){let K;const[re,oe,se]=gb(E,I);K=Yo(re.reverse(),"beforeRouteLeave",E,I);for(const k of re)k.leaveGuards.forEach(v=>{K.push(Cr(v,E,I))});const T=j.bind(null,E,I);return K.push(T),fe(K).then(()=>{K=[];for(const k of i.list())K.push(Cr(k,E,I));return K.push(T),fe(K)}).then(()=>{K=Yo(oe,"beforeRouteUpdate",E,I);for(const k of oe)k.updateGuards.forEach(v=>{K.push(Cr(v,E,I))});return K.push(T),fe(K)}).then(()=>{K=[];for(const k of se)if(k.beforeEnter)if(Dt(k.beforeEnter))for(const v of k.beforeEnter)K.push(Cr(v,E,I));else K.push(Cr(k.beforeEnter,E,I));return K.push(T),fe(K)}).then(()=>(E.matched.forEach(k=>k.enterCallbacks={}),K=Yo(se,"beforeRouteEnter",E,I,F),K.push(T),fe(K))).then(()=>{K=[];for(const k of o.list())K.push(Cr(k,E,I));return K.push(T),fe(K)}).catch(k=>Qt(k,8)?k:Promise.reject(k))}function Z(E,I,K){l.list().forEach(re=>F(()=>re(E,I,K)))}function S(E,I,K,re,oe){const se=w(E,I);if(se)return se;const T=I===br,k=bn?history.state:{};K&&(re||T?a.replace(E.fullPath,Le({scroll:T&&k&&k.scroll},oe)):a.push(E.fullPath,oe)),s.value=E,be(E,I,K,T),ce()}let z;function ae(){z||(z=a.listen((E,I,K)=>{if(!we.listening)return;const re=L(E),oe=R(re);if(oe){x(Le(oe,{replace:!0}),re).catch(ei);return}u=re;const se=s.value;bn&&Uy(Nu(se.fullPath,K.delta),To()),X(re,se).catch(T=>Qt(T,12)?T:Qt(T,2)?(x(T.to,re).then(k=>{Qt(k,20)&&!K.delta&&K.type===hi.pop&&a.go(-1,!1)}).catch(ei),Promise.reject()):(K.delta&&a.go(-K.delta,!1),G(T,re,se))).then(T=>{T=T||S(re,se,!1),T&&(K.delta&&!Qt(T,8)?a.go(-K.delta,!1):K.type===hi.pop&&Qt(T,20)&&a.go(-1,!1)),Z(re,se,T)}).catch(ei)}))}let te=jn(),le=jn(),ne;function G(E,I,K){ce(E);const re=le.list();return re.length?re.forEach(oe=>oe(E,I,K)):console.error(E),Promise.reject(E)}function de(){return ne&&s.value!==br?Promise.resolve():new Promise((E,I)=>{te.add([E,I])})}function ce(E){return ne||(ne=!E,ae(),te.list().forEach(([I,K])=>E?K(E):I()),te.reset()),E}function be(E,I,K,re){const{scrollBehavior:oe}=e;if(!bn||!oe)return Promise.resolve();const se=!K&&Dy(Nu(E.fullPath,0))||(re||!K)&&history.state&&history.state.scroll||null;return hl().then(()=>oe(E,I,se)).then(T=>T&&jy(T)).catch(T=>G(T,E,I))}const A=E=>a.go(E);let ie;const he=new Set,we={currentRoute:s,listening:!0,addRoute:m,removeRoute:y,clearRoutes:t.clearRoutes,hasRoute:O,getRoutes:b,resolve:L,options:e,push:U,replace:W,go:A,back:()=>A(-1),forward:()=>A(1),beforeEach:i.add,beforeResolve:o.add,afterEach:l.add,onError:le.add,isReady:de,install(E){const I=this;E.component("RouterLink",cb),E.component("RouterView",pb),E.config.globalProperties.$router=I,Object.defineProperty(E.config.globalProperties,"$route",{enumerable:!0,get:()=>Sn(s)}),bn&&!ie&&s.value===br&&(ie=!0,U(a.location).catch(oe=>{}));const K={};for(const oe in br)Object.defineProperty(K,oe,{get:()=>s.value[oe],enumerable:!0});E.provide(Il,I),E.provide(Ch,mf(K)),E.provide(Cs,s);const re=E.unmount;he.add(E),E.unmount=function(){he.delete(E),he.size<1&&(u=br,z&&z(),z=null,s.value=br,ie=!1,ne=!1),re()}}};function fe(E){return E.reduce((I,K)=>I.then(()=>F(K)),Promise.resolve())}return we}function gb(e,t){const r=[],n=[],a=[],i=Math.max(t.matched.length,e.matched.length);for(let o=0;o<i;o++){const l=t.matched[o];l&&(e.matched.find(u=>Tn(u,l))?n.push(l):r.push(l));const s=e.matched[o];s&&(t.matched.find(u=>Tn(u,s))||a.push(s))}return[r,n,a]}var Tl=Object.defineProperty,mb=Object.getOwnPropertyDescriptor,yb=Object.getOwnPropertyNames,bb=Object.prototype.hasOwnProperty,ot=(e,t)=>()=>(e&&(t=e(e=0)),t),ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),hn=(e,t)=>{for(var r in t)Tl(e,r,{get:t[r],enumerable:!0})},vb=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of yb(t))!bb.call(e,a)&&a!==r&&Tl(e,a,{get:()=>t[a],enumerable:!(n=mb(t,a))||n.enumerable});return e},Ue=e=>vb(Tl({},"__esModule",{value:!0}),e),pe=ot(()=>{}),Me={};hn(Me,{_debugEnd:()=>sa,_debugProcess:()=>oa,_events:()=>_a,_eventsCount:()=>Ea,_exiting:()=>qs,_fatalExceptions:()=>ra,_getActiveHandles:()=>Mh,_getActiveRequests:()=>Bh,_kill:()=>Ys,_linkedBinding:()=>kh,_maxListeners:()=>wa,_preload_modules:()=>ba,_rawDebug:()=>$s,_startProfilerIdleNotifier:()=>aa,_stopProfilerIdleNotifier:()=>la,_tickCallback:()=>ia,abort:()=>ha,addListener:()=>Sa,allowedNodeEnvironmentFlags:()=>ea,arch:()=>Rs,argv:()=>xs,argv0:()=>ya,assert:()=>Lh,binding:()=>js,chdir:()=>Fs,config:()=>Ks,cpuUsage:()=>Vn,cwd:()=>Ds,debugPort:()=>ma,default:()=>Ol,dlopen:()=>xh,domain:()=>Vs,emit:()=>Oa,emitWarning:()=>Ns,env:()=>ks,execArgv:()=>Bs,execPath:()=>ga,exit:()=>Xs,features:()=>ta,hasUncaughtExceptionCaptureCallback:()=>Nh,hrtime:()=>Fi,kill:()=>Js,listeners:()=>Uh,memoryUsage:()=>Qs,moduleLoadList:()=>Hs,nextTick:()=>Rh,off:()=>Ia,on:()=>Xt,once:()=>Aa,openStdin:()=>Zs,pid:()=>da,platform:()=>Ps,ppid:()=>pa,prependListener:()=>Ra,prependOnceListener:()=>Pa,reallyExit:()=>zs,release:()=>Ws,removeAllListeners:()=>Ca,removeListener:()=>Ta,resourceUsage:()=>Gs,setSourceMapsEnabled:()=>va,setUncaughtExceptionCaptureCallback:()=>na,stderr:()=>ca,stdin:()=>fa,stdout:()=>ua,title:()=>Os,umask:()=>Us,uptime:()=>jh,version:()=>Ms,versions:()=>Ls});function Cl(e){throw new Error("Node.js process "+e+" is not supported by JSPM core outside of Node.js")}function wb(){!sn||!Zr||(sn=!1,Zr.length?qt=Zr.concat(qt):ri=-1,qt.length&&Oh())}function Oh(){if(!sn){var e=setTimeout(wb,0);sn=!0;for(var t=qt.length;t;){for(Zr=qt,qt=[];++ri<t;)Zr&&Zr[ri].run();ri=-1,t=qt.length}Zr=null,sn=!1,clearTimeout(e)}}function Rh(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];qt.push(new Ph(e,t)),qt.length===1&&!sn&&setTimeout(Oh,0)}function Ph(e,t){this.fun=e,this.array=t}function lt(){}function kh(e){Cl("_linkedBinding")}function xh(e){Cl("dlopen")}function Bh(){return[]}function Mh(){return[]}function Lh(e,t){if(!e)throw new Error(t||"assertion error")}function Nh(){return!1}function jh(){return nr.now()/1e3}function Fi(e){var t=Math.floor((Date.now()-nr.now())*.001),r=nr.now()*.001,n=Math.floor(r)+t,a=Math.floor(r%1*1e9);return e&&(n=n-e[0],a=a-e[1],a<0&&(n--,a+=Wi)),[n,a]}function Xt(){return Ol}function Uh(e){return[]}var qt,sn,Zr,ri,Os,Rs,Ps,ks,xs,Bs,Ms,Ls,Ns,js,Us,Ds,Fs,Ws,$s,Hs,Vs,qs,Ks,zs,Ys,Vn,Gs,Qs,Js,Xs,Zs,ea,ta,ra,na,ia,oa,sa,aa,la,ua,ca,fa,ha,da,pa,ga,ma,ya,ba,va,nr,Go,Wi,wa,_a,Ea,Sa,Aa,Ia,Ta,Ca,Oa,Ra,Pa,Ol,_b=ot(()=>{pe(),me(),ge(),qt=[],sn=!1,ri=-1,Ph.prototype.run=function(){this.fun.apply(null,this.array)},Os="browser",Rs="x64",Ps="browser",ks={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},xs=["/usr/bin/node"],Bs=[],Ms="v16.8.0",Ls={},Ns=function(e,t){console.warn((t?t+": ":"")+e)},js=function(e){Cl("binding")},Us=function(e){return 0},Ds=function(){return"/"},Fs=function(e){},Ws={name:"node",sourceUrl:"",headersUrl:"",libUrl:""},$s=lt,Hs=[],Vs={},qs=!1,Ks={},zs=lt,Ys=lt,Vn=function(){return{}},Gs=Vn,Qs=Vn,Js=lt,Xs=lt,Zs=lt,ea={},ta={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},ra=lt,na=lt,ia=lt,oa=lt,sa=lt,aa=lt,la=lt,ua=void 0,ca=void 0,fa=void 0,ha=lt,da=2,pa=1,ga="/bin/usr/node",ma=9229,ya="node",ba=[],va=lt,nr={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0},nr.now===void 0&&(Go=Date.now(),nr.timing&&nr.timing.navigationStart&&(Go=nr.timing.navigationStart),nr.now=()=>Date.now()-Go),Wi=1e9,Fi.bigint=function(e){var t=Fi(e);return typeof BigInt>"u"?t[0]*Wi+t[1]:BigInt(t[0]*Wi)+BigInt(t[1])},wa=10,_a={},Ea=0,Sa=Xt,Aa=Xt,Ia=Xt,Ta=Xt,Ca=Xt,Oa=lt,Ra=Xt,Pa=Xt,Ol={version:Ms,versions:Ls,arch:Rs,platform:Ps,release:Ws,_rawDebug:$s,moduleLoadList:Hs,binding:js,_linkedBinding:kh,_events:_a,_eventsCount:Ea,_maxListeners:wa,on:Xt,addListener:Sa,once:Aa,off:Ia,removeListener:Ta,removeAllListeners:Ca,emit:Oa,prependListener:Ra,prependOnceListener:Pa,listeners:Uh,domain:Vs,_exiting:qs,config:Ks,dlopen:xh,uptime:jh,_getActiveRequests:Bh,_getActiveHandles:Mh,reallyExit:zs,_kill:Ys,cpuUsage:Vn,resourceUsage:Gs,memoryUsage:Qs,kill:Js,exit:Xs,openStdin:Zs,allowedNodeEnvironmentFlags:ea,assert:Lh,features:ta,_fatalExceptions:ra,setUncaughtExceptionCaptureCallback:na,hasUncaughtExceptionCaptureCallback:Nh,emitWarning:Ns,nextTick:Rh,_tickCallback:ia,_debugProcess:oa,_debugEnd:sa,_startProfilerIdleNotifier:aa,_stopProfilerIdleNotifier:la,stdout:ua,stdin:fa,stderr:ca,abort:ha,umask:Us,chdir:Fs,cwd:Ds,env:ks,title:Os,argv:xs,execArgv:Bs,pid:da,ppid:pa,execPath:ga,debugPort:ma,hrtime:Fi,argv0:ya,_preload_modules:ba,setSourceMapsEnabled:va}}),ge=ot(()=>{_b()}),st={};hn(st,{Buffer:()=>no,INSPECT_MAX_BYTES:()=>Dh,default:()=>Zt,kMaxLength:()=>Fh});function Eb(){if(ka)return vn;ka=!0,vn.byteLength=l,vn.toByteArray=u,vn.fromByteArray=p;for(var e=[],t=[],r=typeof Uint8Array<"u"?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,i=n.length;a<i;++a)e[a]=n[a],t[n.charCodeAt(a)]=a;t[45]=62,t[95]=63;function o(m){var y=m.length;if(y%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var b=m.indexOf("=");b===-1&&(b=y);var O=b===y?0:4-b%4;return[b,O]}function l(m){var y=o(m),b=y[0],O=y[1];return(b+O)*3/4-O}function s(m,y,b){return(y+b)*3/4-b}function u(m){var y,b=o(m),O=b[0],L=b[1],P=new r(s(m,O,L)),w=0,U=L>0?O-4:O,W;for(W=0;W<U;W+=4)y=t[m.charCodeAt(W)]<<18|t[m.charCodeAt(W+1)]<<12|t[m.charCodeAt(W+2)]<<6|t[m.charCodeAt(W+3)],P[w++]=y>>16&255,P[w++]=y>>8&255,P[w++]=y&255;return L===2&&(y=t[m.charCodeAt(W)]<<2|t[m.charCodeAt(W+1)]>>4,P[w++]=y&255),L===1&&(y=t[m.charCodeAt(W)]<<10|t[m.charCodeAt(W+1)]<<4|t[m.charCodeAt(W+2)]>>2,P[w++]=y>>8&255,P[w++]=y&255),P}function c(m){return e[m>>18&63]+e[m>>12&63]+e[m>>6&63]+e[m&63]}function h(m,y,b){for(var O,L=[],P=y;P<b;P+=3)O=(m[P]<<16&16711680)+(m[P+1]<<8&65280)+(m[P+2]&255),L.push(c(O));return L.join("")}function p(m){for(var y,b=m.length,O=b%3,L=[],P=16383,w=0,U=b-O;w<U;w+=P)L.push(h(m,w,w+P>U?U:w+P));return O===1?(y=m[b-1],L.push(e[y>>2]+e[y<<4&63]+"==")):O===2&&(y=(m[b-2]<<8)+m[b-1],L.push(e[y>>10]+e[y>>4&63]+e[y<<2&63]+"=")),L.join("")}return vn}function Sb(){return xa?qn:(xa=!0,qn.read=function(e,t,r,n,a){var i,o,l=a*8-n-1,s=(1<<l)-1,u=s>>1,c=-7,h=r?a-1:0,p=r?-1:1,m=e[t+h];for(h+=p,i=m&(1<<-c)-1,m>>=-c,c+=l;c>0;i=i*256+e[t+h],h+=p,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=o*256+e[t+h],h+=p,c-=8);if(i===0)i=1-u;else{if(i===s)return o?NaN:(m?-1:1)*(1/0);o=o+Math.pow(2,n),i=i-u}return(m?-1:1)*o*Math.pow(2,i-n)},qn.write=function(e,t,r,n,a,i){var o,l,s,u=i*8-a-1,c=(1<<u)-1,h=c>>1,p=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,y=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-o))<1&&(o--,s*=2),o+h>=1?t+=p/s:t+=p*Math.pow(2,1-h),t*s>=2&&(o++,s/=2),o+h>=c?(l=0,o=c):o+h>=1?(l=(t*s-1)*Math.pow(2,a),o=o+h):(l=t*Math.pow(2,h-1)*Math.pow(2,a),o=0));a>=8;e[r+m]=l&255,m+=y,l/=256,a-=8);for(o=o<<a|l,u+=a;u>0;e[r+m]=o&255,m+=y,o/=256,u-=8);e[r+m-y]|=b*128},qn)}function Ab(){if(Ba)return wr;Ba=!0;let e=Eb(),t=Sb(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;wr.Buffer=o,wr.SlowBuffer=L,wr.INSPECT_MAX_BYTES=50;let n=2147483647;wr.kMaxLength=n,o.TYPED_ARRAY_SUPPORT=a(),!o.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function a(){try{let d=new Uint8Array(1),f={foo:function(){return 42}};return Object.setPrototypeOf(f,Uint8Array.prototype),Object.setPrototypeOf(d,f),d.foo()===42}catch{return!1}}Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.buffer}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.byteOffset}});function i(d){if(d>n)throw new RangeError('The value "'+d+'" is invalid for option "size"');let f=new Uint8Array(d);return Object.setPrototypeOf(f,o.prototype),f}function o(d,f,g){if(typeof d=="number"){if(typeof f=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(d)}return l(d,f,g)}o.poolSize=8192;function l(d,f,g){if(typeof d=="string")return h(d,f);if(ArrayBuffer.isView(d))return m(d);if(d==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof d);if(H(d,ArrayBuffer)||d&&H(d.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(H(d,SharedArrayBuffer)||d&&H(d.buffer,SharedArrayBuffer)))return y(d,f,g);if(typeof d=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let _=d.valueOf&&d.valueOf();if(_!=null&&_!==d)return o.from(_,f,g);let D=b(d);if(D)return D;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof d[Symbol.toPrimitive]=="function")return o.from(d[Symbol.toPrimitive]("string"),f,g);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof d)}o.from=function(d,f,g){return l(d,f,g)},Object.setPrototypeOf(o.prototype,Uint8Array.prototype),Object.setPrototypeOf(o,Uint8Array);function s(d){if(typeof d!="number")throw new TypeError('"size" argument must be of type number');if(d<0)throw new RangeError('The value "'+d+'" is invalid for option "size"')}function u(d,f,g){return s(d),d<=0?i(d):f!==void 0?typeof g=="string"?i(d).fill(f,g):i(d).fill(f):i(d)}o.alloc=function(d,f,g){return u(d,f,g)};function c(d){return s(d),i(d<0?0:O(d)|0)}o.allocUnsafe=function(d){return c(d)},o.allocUnsafeSlow=function(d){return c(d)};function h(d,f){if((typeof f!="string"||f==="")&&(f="utf8"),!o.isEncoding(f))throw new TypeError("Unknown encoding: "+f);let g=P(d,f)|0,_=i(g),D=_.write(d,f);return D!==g&&(_=_.slice(0,D)),_}function p(d){let f=d.length<0?0:O(d.length)|0,g=i(f);for(let _=0;_<f;_+=1)g[_]=d[_]&255;return g}function m(d){if(H(d,Uint8Array)){let f=new Uint8Array(d);return y(f.buffer,f.byteOffset,f.byteLength)}return p(d)}function y(d,f,g){if(f<0||d.byteLength<f)throw new RangeError('"offset" is outside of buffer bounds');if(d.byteLength<f+(g||0))throw new RangeError('"length" is outside of buffer bounds');let _;return f===void 0&&g===void 0?_=new Uint8Array(d):g===void 0?_=new Uint8Array(d,f):_=new Uint8Array(d,f,g),Object.setPrototypeOf(_,o.prototype),_}function b(d){if(o.isBuffer(d)){let f=O(d.length)|0,g=i(f);return g.length===0||d.copy(g,0,0,f),g}if(d.length!==void 0)return typeof d.length!="number"||C(d.length)?i(0):p(d);if(d.type==="Buffer"&&Array.isArray(d.data))return p(d.data)}function O(d){if(d>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return d|0}function L(d){return+d!=d&&(d=0),o.alloc(+d)}o.isBuffer=function(d){return d!=null&&d._isBuffer===!0&&d!==o.prototype},o.compare=function(d,f){if(H(d,Uint8Array)&&(d=o.from(d,d.offset,d.byteLength)),H(f,Uint8Array)&&(f=o.from(f,f.offset,f.byteLength)),!o.isBuffer(d)||!o.isBuffer(f))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(d===f)return 0;let g=d.length,_=f.length;for(let D=0,Q=Math.min(g,_);D<Q;++D)if(d[D]!==f[D]){g=d[D],_=f[D];break}return g<_?-1:_<g?1:0},o.isEncoding=function(d){switch(String(d).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(d,f){if(!Array.isArray(d))throw new TypeError('"list" argument must be an Array of Buffers');if(d.length===0)return o.alloc(0);let g;if(f===void 0)for(f=0,g=0;g<d.length;++g)f+=d[g].length;let _=o.allocUnsafe(f),D=0;for(g=0;g<d.length;++g){let Q=d[g];if(H(Q,Uint8Array))D+Q.length>_.length?(o.isBuffer(Q)||(Q=o.from(Q)),Q.copy(_,D)):Uint8Array.prototype.set.call(_,Q,D);else if(o.isBuffer(Q))Q.copy(_,D);else throw new TypeError('"list" argument must be an Array of Buffers');D+=Q.length}return _};function P(d,f){if(o.isBuffer(d))return d.length;if(ArrayBuffer.isView(d)||H(d,ArrayBuffer))return d.byteLength;if(typeof d!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof d);let g=d.length,_=arguments.length>2&&arguments[2]===!0;if(!_&&g===0)return 0;let D=!1;for(;;)switch(f){case"ascii":case"latin1":case"binary":return g;case"utf8":case"utf-8":return N(d).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return g*2;case"hex":return g>>>1;case"base64":return J(d).length;default:if(D)return _?-1:N(d).length;f=(""+f).toLowerCase(),D=!0}}o.byteLength=P;function w(d,f,g){let _=!1;if((f===void 0||f<0)&&(f=0),f>this.length||((g===void 0||g>this.length)&&(g=this.length),g<=0)||(g>>>=0,f>>>=0,g<=f))return"";for(d||(d="utf8");;)switch(d){case"hex":return G(this,f,g);case"utf8":case"utf-8":return z(this,f,g);case"ascii":return le(this,f,g);case"latin1":case"binary":return ne(this,f,g);case"base64":return S(this,f,g);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return de(this,f,g);default:if(_)throw new TypeError("Unknown encoding: "+d);d=(d+"").toLowerCase(),_=!0}}o.prototype._isBuffer=!0;function U(d,f,g){let _=d[f];d[f]=d[g],d[g]=_}o.prototype.swap16=function(){let d=this.length;if(d%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let f=0;f<d;f+=2)U(this,f,f+1);return this},o.prototype.swap32=function(){let d=this.length;if(d%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let f=0;f<d;f+=4)U(this,f,f+3),U(this,f+1,f+2);return this},o.prototype.swap64=function(){let d=this.length;if(d%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let f=0;f<d;f+=8)U(this,f,f+7),U(this,f+1,f+6),U(this,f+2,f+5),U(this,f+3,f+4);return this},o.prototype.toString=function(){let d=this.length;return d===0?"":arguments.length===0?z(this,0,d):w.apply(this,arguments)},o.prototype.toLocaleString=o.prototype.toString,o.prototype.equals=function(d){if(!o.isBuffer(d))throw new TypeError("Argument must be a Buffer");return this===d?!0:o.compare(this,d)===0},o.prototype.inspect=function(){let d="",f=wr.INSPECT_MAX_BYTES;return d=this.toString("hex",0,f).replace(/(.{2})/g,"$1 ").trim(),this.length>f&&(d+=" ... "),"<Buffer "+d+">"},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(d,f,g,_,D){if(H(d,Uint8Array)&&(d=o.from(d,d.offset,d.byteLength)),!o.isBuffer(d))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof d);if(f===void 0&&(f=0),g===void 0&&(g=d?d.length:0),_===void 0&&(_=0),D===void 0&&(D=this.length),f<0||g>d.length||_<0||D>this.length)throw new RangeError("out of range index");if(_>=D&&f>=g)return 0;if(_>=D)return-1;if(f>=g)return 1;if(f>>>=0,g>>>=0,_>>>=0,D>>>=0,this===d)return 0;let Q=D-_,ue=g-f,Ae=Math.min(Q,ue),Oe=this.slice(_,D),Pe=d.slice(f,g);for(let _e=0;_e<Ae;++_e)if(Oe[_e]!==Pe[_e]){Q=Oe[_e],ue=Pe[_e];break}return Q<ue?-1:ue<Q?1:0};function W(d,f,g,_,D){if(d.length===0)return-1;if(typeof g=="string"?(_=g,g=0):g>2147483647?g=2147483647:g<-2147483648&&(g=-2147483648),g=+g,C(g)&&(g=D?0:d.length-1),g<0&&(g=d.length+g),g>=d.length){if(D)return-1;g=d.length-1}else if(g<0)if(D)g=0;else return-1;if(typeof f=="string"&&(f=o.from(f,_)),o.isBuffer(f))return f.length===0?-1:R(d,f,g,_,D);if(typeof f=="number")return f=f&255,typeof Uint8Array.prototype.indexOf=="function"?D?Uint8Array.prototype.indexOf.call(d,f,g):Uint8Array.prototype.lastIndexOf.call(d,f,g):R(d,[f],g,_,D);throw new TypeError("val must be string, number or Buffer")}function R(d,f,g,_,D){let Q=1,ue=d.length,Ae=f.length;if(_!==void 0&&(_=String(_).toLowerCase(),_==="ucs2"||_==="ucs-2"||_==="utf16le"||_==="utf-16le")){if(d.length<2||f.length<2)return-1;Q=2,ue/=2,Ae/=2,g/=2}function Oe(_e,Se){return Q===1?_e[Se]:_e.readUInt16BE(Se*Q)}let Pe;if(D){let _e=-1;for(Pe=g;Pe<ue;Pe++)if(Oe(d,Pe)===Oe(f,_e===-1?0:Pe-_e)){if(_e===-1&&(_e=Pe),Pe-_e+1===Ae)return _e*Q}else _e!==-1&&(Pe-=Pe-_e),_e=-1}else for(g+Ae>ue&&(g=ue-Ae),Pe=g;Pe>=0;Pe--){let _e=!0;for(let Se=0;Se<Ae;Se++)if(Oe(d,Pe+Se)!==Oe(f,Se)){_e=!1;break}if(_e)return Pe}return-1}o.prototype.includes=function(d,f,g){return this.indexOf(d,f,g)!==-1},o.prototype.indexOf=function(d,f,g){return W(this,d,f,g,!0)},o.prototype.lastIndexOf=function(d,f,g){return W(this,d,f,g,!1)};function x(d,f,g,_){g=Number(g)||0;let D=d.length-g;_?(_=Number(_),_>D&&(_=D)):_=D;let Q=f.length;_>Q/2&&(_=Q/2);let ue;for(ue=0;ue<_;++ue){let Ae=parseInt(f.substr(ue*2,2),16);if(C(Ae))return ue;d[g+ue]=Ae}return ue}function j(d,f,g,_){return M(N(f,d.length-g),d,g,_)}function F(d,f,g,_){return M(B(f),d,g,_)}function X(d,f,g,_){return M(J(f),d,g,_)}function Z(d,f,g,_){return M(Y(f,d.length-g),d,g,_)}o.prototype.write=function(d,f,g,_){if(f===void 0)_="utf8",g=this.length,f=0;else if(g===void 0&&typeof f=="string")_=f,g=this.length,f=0;else if(isFinite(f))f=f>>>0,isFinite(g)?(g=g>>>0,_===void 0&&(_="utf8")):(_=g,g=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let D=this.length-f;if((g===void 0||g>D)&&(g=D),d.length>0&&(g<0||f<0)||f>this.length)throw new RangeError("Attempt to write outside buffer bounds");_||(_="utf8");let Q=!1;for(;;)switch(_){case"hex":return x(this,d,f,g);case"utf8":case"utf-8":return j(this,d,f,g);case"ascii":case"latin1":case"binary":return F(this,d,f,g);case"base64":return X(this,d,f,g);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z(this,d,f,g);default:if(Q)throw new TypeError("Unknown encoding: "+_);_=(""+_).toLowerCase(),Q=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function S(d,f,g){return f===0&&g===d.length?e.fromByteArray(d):e.fromByteArray(d.slice(f,g))}function z(d,f,g){g=Math.min(d.length,g);let _=[],D=f;for(;D<g;){let Q=d[D],ue=null,Ae=Q>239?4:Q>223?3:Q>191?2:1;if(D+Ae<=g){let Oe,Pe,_e,Se;switch(Ae){case 1:Q<128&&(ue=Q);break;case 2:Oe=d[D+1],(Oe&192)===128&&(Se=(Q&31)<<6|Oe&63,Se>127&&(ue=Se));break;case 3:Oe=d[D+1],Pe=d[D+2],(Oe&192)===128&&(Pe&192)===128&&(Se=(Q&15)<<12|(Oe&63)<<6|Pe&63,Se>2047&&(Se<55296||Se>57343)&&(ue=Se));break;case 4:Oe=d[D+1],Pe=d[D+2],_e=d[D+3],(Oe&192)===128&&(Pe&192)===128&&(_e&192)===128&&(Se=(Q&15)<<18|(Oe&63)<<12|(Pe&63)<<6|_e&63,Se>65535&&Se<1114112&&(ue=Se))}}ue===null?(ue=65533,Ae=1):ue>65535&&(ue-=65536,_.push(ue>>>10&1023|55296),ue=56320|ue&1023),_.push(ue),D+=Ae}return te(_)}let ae=4096;function te(d){let f=d.length;if(f<=ae)return String.fromCharCode.apply(String,d);let g="",_=0;for(;_<f;)g+=String.fromCharCode.apply(String,d.slice(_,_+=ae));return g}function le(d,f,g){let _="";g=Math.min(d.length,g);for(let D=f;D<g;++D)_+=String.fromCharCode(d[D]&127);return _}function ne(d,f,g){let _="";g=Math.min(d.length,g);for(let D=f;D<g;++D)_+=String.fromCharCode(d[D]);return _}function G(d,f,g){let _=d.length;(!f||f<0)&&(f=0),(!g||g<0||g>_)&&(g=_);let D="";for(let Q=f;Q<g;++Q)D+=$[d[Q]];return D}function de(d,f,g){let _=d.slice(f,g),D="";for(let Q=0;Q<_.length-1;Q+=2)D+=String.fromCharCode(_[Q]+_[Q+1]*256);return D}o.prototype.slice=function(d,f){let g=this.length;d=~~d,f=f===void 0?g:~~f,d<0?(d+=g,d<0&&(d=0)):d>g&&(d=g),f<0?(f+=g,f<0&&(f=0)):f>g&&(f=g),f<d&&(f=d);let _=this.subarray(d,f);return Object.setPrototypeOf(_,o.prototype),_};function ce(d,f,g){if(d%1!==0||d<0)throw new RangeError("offset is not uint");if(d+f>g)throw new RangeError("Trying to access beyond buffer length")}o.prototype.readUintLE=o.prototype.readUIntLE=function(d,f,g){d=d>>>0,f=f>>>0,g||ce(d,f,this.length);let _=this[d],D=1,Q=0;for(;++Q<f&&(D*=256);)_+=this[d+Q]*D;return _},o.prototype.readUintBE=o.prototype.readUIntBE=function(d,f,g){d=d>>>0,f=f>>>0,g||ce(d,f,this.length);let _=this[d+--f],D=1;for(;f>0&&(D*=256);)_+=this[d+--f]*D;return _},o.prototype.readUint8=o.prototype.readUInt8=function(d,f){return d=d>>>0,f||ce(d,1,this.length),this[d]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(d,f){return d=d>>>0,f||ce(d,2,this.length),this[d]|this[d+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(d,f){return d=d>>>0,f||ce(d,2,this.length),this[d]<<8|this[d+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(d,f){return d=d>>>0,f||ce(d,4,this.length),(this[d]|this[d+1]<<8|this[d+2]<<16)+this[d+3]*16777216},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(d,f){return d=d>>>0,f||ce(d,4,this.length),this[d]*16777216+(this[d+1]<<16|this[d+2]<<8|this[d+3])},o.prototype.readBigUInt64LE=q(function(d){d=d>>>0,se(d,"offset");let f=this[d],g=this[d+7];(f===void 0||g===void 0)&&T(d,this.length-8);let _=f+this[++d]*2**8+this[++d]*2**16+this[++d]*2**24,D=this[++d]+this[++d]*2**8+this[++d]*2**16+g*2**24;return BigInt(_)+(BigInt(D)<<BigInt(32))}),o.prototype.readBigUInt64BE=q(function(d){d=d>>>0,se(d,"offset");let f=this[d],g=this[d+7];(f===void 0||g===void 0)&&T(d,this.length-8);let _=f*2**24+this[++d]*2**16+this[++d]*2**8+this[++d],D=this[++d]*2**24+this[++d]*2**16+this[++d]*2**8+g;return(BigInt(_)<<BigInt(32))+BigInt(D)}),o.prototype.readIntLE=function(d,f,g){d=d>>>0,f=f>>>0,g||ce(d,f,this.length);let _=this[d],D=1,Q=0;for(;++Q<f&&(D*=256);)_+=this[d+Q]*D;return D*=128,_>=D&&(_-=Math.pow(2,8*f)),_},o.prototype.readIntBE=function(d,f,g){d=d>>>0,f=f>>>0,g||ce(d,f,this.length);let _=f,D=1,Q=this[d+--_];for(;_>0&&(D*=256);)Q+=this[d+--_]*D;return D*=128,Q>=D&&(Q-=Math.pow(2,8*f)),Q},o.prototype.readInt8=function(d,f){return d=d>>>0,f||ce(d,1,this.length),this[d]&128?(255-this[d]+1)*-1:this[d]},o.prototype.readInt16LE=function(d,f){d=d>>>0,f||ce(d,2,this.length);let g=this[d]|this[d+1]<<8;return g&32768?g|4294901760:g},o.prototype.readInt16BE=function(d,f){d=d>>>0,f||ce(d,2,this.length);let g=this[d+1]|this[d]<<8;return g&32768?g|4294901760:g},o.prototype.readInt32LE=function(d,f){return d=d>>>0,f||ce(d,4,this.length),this[d]|this[d+1]<<8|this[d+2]<<16|this[d+3]<<24},o.prototype.readInt32BE=function(d,f){return d=d>>>0,f||ce(d,4,this.length),this[d]<<24|this[d+1]<<16|this[d+2]<<8|this[d+3]},o.prototype.readBigInt64LE=q(function(d){d=d>>>0,se(d,"offset");let f=this[d],g=this[d+7];(f===void 0||g===void 0)&&T(d,this.length-8);let _=this[d+4]+this[d+5]*2**8+this[d+6]*2**16+(g<<24);return(BigInt(_)<<BigInt(32))+BigInt(f+this[++d]*2**8+this[++d]*2**16+this[++d]*2**24)}),o.prototype.readBigInt64BE=q(function(d){d=d>>>0,se(d,"offset");let f=this[d],g=this[d+7];(f===void 0||g===void 0)&&T(d,this.length-8);let _=(f<<24)+this[++d]*2**16+this[++d]*2**8+this[++d];return(BigInt(_)<<BigInt(32))+BigInt(this[++d]*2**24+this[++d]*2**16+this[++d]*2**8+g)}),o.prototype.readFloatLE=function(d,f){return d=d>>>0,f||ce(d,4,this.length),t.read(this,d,!0,23,4)},o.prototype.readFloatBE=function(d,f){return d=d>>>0,f||ce(d,4,this.length),t.read(this,d,!1,23,4)},o.prototype.readDoubleLE=function(d,f){return d=d>>>0,f||ce(d,8,this.length),t.read(this,d,!0,52,8)},o.prototype.readDoubleBE=function(d,f){return d=d>>>0,f||ce(d,8,this.length),t.read(this,d,!1,52,8)};function be(d,f,g,_,D,Q){if(!o.isBuffer(d))throw new TypeError('"buffer" argument must be a Buffer instance');if(f>D||f<Q)throw new RangeError('"value" argument is out of bounds');if(g+_>d.length)throw new RangeError("Index out of range")}o.prototype.writeUintLE=o.prototype.writeUIntLE=function(d,f,g,_){if(d=+d,f=f>>>0,g=g>>>0,!_){let ue=Math.pow(2,8*g)-1;be(this,d,f,g,ue,0)}let D=1,Q=0;for(this[f]=d&255;++Q<g&&(D*=256);)this[f+Q]=d/D&255;return f+g},o.prototype.writeUintBE=o.prototype.writeUIntBE=function(d,f,g,_){if(d=+d,f=f>>>0,g=g>>>0,!_){let ue=Math.pow(2,8*g)-1;be(this,d,f,g,ue,0)}let D=g-1,Q=1;for(this[f+D]=d&255;--D>=0&&(Q*=256);)this[f+D]=d/Q&255;return f+g},o.prototype.writeUint8=o.prototype.writeUInt8=function(d,f,g){return d=+d,f=f>>>0,g||be(this,d,f,1,255,0),this[f]=d&255,f+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(d,f,g){return d=+d,f=f>>>0,g||be(this,d,f,2,65535,0),this[f]=d&255,this[f+1]=d>>>8,f+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(d,f,g){return d=+d,f=f>>>0,g||be(this,d,f,2,65535,0),this[f]=d>>>8,this[f+1]=d&255,f+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(d,f,g){return d=+d,f=f>>>0,g||be(this,d,f,4,4294967295,0),this[f+3]=d>>>24,this[f+2]=d>>>16,this[f+1]=d>>>8,this[f]=d&255,f+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(d,f,g){return d=+d,f=f>>>0,g||be(this,d,f,4,4294967295,0),this[f]=d>>>24,this[f+1]=d>>>16,this[f+2]=d>>>8,this[f+3]=d&255,f+4};function A(d,f,g,_,D){oe(f,_,D,d,g,7);let Q=Number(f&BigInt(4294967295));d[g++]=Q,Q=Q>>8,d[g++]=Q,Q=Q>>8,d[g++]=Q,Q=Q>>8,d[g++]=Q;let ue=Number(f>>BigInt(32)&BigInt(4294967295));return d[g++]=ue,ue=ue>>8,d[g++]=ue,ue=ue>>8,d[g++]=ue,ue=ue>>8,d[g++]=ue,g}function ie(d,f,g,_,D){oe(f,_,D,d,g,7);let Q=Number(f&BigInt(4294967295));d[g+7]=Q,Q=Q>>8,d[g+6]=Q,Q=Q>>8,d[g+5]=Q,Q=Q>>8,d[g+4]=Q;let ue=Number(f>>BigInt(32)&BigInt(4294967295));return d[g+3]=ue,ue=ue>>8,d[g+2]=ue,ue=ue>>8,d[g+1]=ue,ue=ue>>8,d[g]=ue,g+8}o.prototype.writeBigUInt64LE=q(function(d,f=0){return A(this,d,f,BigInt(0),BigInt("0xffffffffffffffff"))}),o.prototype.writeBigUInt64BE=q(function(d,f=0){return ie(this,d,f,BigInt(0),BigInt("0xffffffffffffffff"))}),o.prototype.writeIntLE=function(d,f,g,_){if(d=+d,f=f>>>0,!_){let Ae=Math.pow(2,8*g-1);be(this,d,f,g,Ae-1,-Ae)}let D=0,Q=1,ue=0;for(this[f]=d&255;++D<g&&(Q*=256);)d<0&&ue===0&&this[f+D-1]!==0&&(ue=1),this[f+D]=(d/Q>>0)-ue&255;return f+g},o.prototype.writeIntBE=function(d,f,g,_){if(d=+d,f=f>>>0,!_){let Ae=Math.pow(2,8*g-1);be(this,d,f,g,Ae-1,-Ae)}let D=g-1,Q=1,ue=0;for(this[f+D]=d&255;--D>=0&&(Q*=256);)d<0&&ue===0&&this[f+D+1]!==0&&(ue=1),this[f+D]=(d/Q>>0)-ue&255;return f+g},o.prototype.writeInt8=function(d,f,g){return d=+d,f=f>>>0,g||be(this,d,f,1,127,-128),d<0&&(d=255+d+1),this[f]=d&255,f+1},o.prototype.writeInt16LE=function(d,f,g){return d=+d,f=f>>>0,g||be(this,d,f,2,32767,-32768),this[f]=d&255,this[f+1]=d>>>8,f+2},o.prototype.writeInt16BE=function(d,f,g){return d=+d,f=f>>>0,g||be(this,d,f,2,32767,-32768),this[f]=d>>>8,this[f+1]=d&255,f+2},o.prototype.writeInt32LE=function(d,f,g){return d=+d,f=f>>>0,g||be(this,d,f,4,2147483647,-2147483648),this[f]=d&255,this[f+1]=d>>>8,this[f+2]=d>>>16,this[f+3]=d>>>24,f+4},o.prototype.writeInt32BE=function(d,f,g){return d=+d,f=f>>>0,g||be(this,d,f,4,2147483647,-2147483648),d<0&&(d=4294967295+d+1),this[f]=d>>>24,this[f+1]=d>>>16,this[f+2]=d>>>8,this[f+3]=d&255,f+4},o.prototype.writeBigInt64LE=q(function(d,f=0){return A(this,d,f,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),o.prototype.writeBigInt64BE=q(function(d,f=0){return ie(this,d,f,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function he(d,f,g,_,D,Q){if(g+_>d.length)throw new RangeError("Index out of range");if(g<0)throw new RangeError("Index out of range")}function we(d,f,g,_,D){return f=+f,g=g>>>0,D||he(d,f,g,4),t.write(d,f,g,_,23,4),g+4}o.prototype.writeFloatLE=function(d,f,g){return we(this,d,f,!0,g)},o.prototype.writeFloatBE=function(d,f,g){return we(this,d,f,!1,g)};function fe(d,f,g,_,D){return f=+f,g=g>>>0,D||he(d,f,g,8),t.write(d,f,g,_,52,8),g+8}o.prototype.writeDoubleLE=function(d,f,g){return fe(this,d,f,!0,g)},o.prototype.writeDoubleBE=function(d,f,g){return fe(this,d,f,!1,g)},o.prototype.copy=function(d,f,g,_){if(!o.isBuffer(d))throw new TypeError("argument should be a Buffer");if(g||(g=0),!_&&_!==0&&(_=this.length),f>=d.length&&(f=d.length),f||(f=0),_>0&&_<g&&(_=g),_===g||d.length===0||this.length===0)return 0;if(f<0)throw new RangeError("targetStart out of bounds");if(g<0||g>=this.length)throw new RangeError("Index out of range");if(_<0)throw new RangeError("sourceEnd out of bounds");_>this.length&&(_=this.length),d.length-f<_-g&&(_=d.length-f+g);let D=_-g;return this===d&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(f,g,_):Uint8Array.prototype.set.call(d,this.subarray(g,_),f),D},o.prototype.fill=function(d,f,g,_){if(typeof d=="string"){if(typeof f=="string"?(_=f,f=0,g=this.length):typeof g=="string"&&(_=g,g=this.length),_!==void 0&&typeof _!="string")throw new TypeError("encoding must be a string");if(typeof _=="string"&&!o.isEncoding(_))throw new TypeError("Unknown encoding: "+_);if(d.length===1){let Q=d.charCodeAt(0);(_==="utf8"&&Q<128||_==="latin1")&&(d=Q)}}else typeof d=="number"?d=d&255:typeof d=="boolean"&&(d=Number(d));if(f<0||this.length<f||this.length<g)throw new RangeError("Out of range index");if(g<=f)return this;f=f>>>0,g=g===void 0?this.length:g>>>0,d||(d=0);let D;if(typeof d=="number")for(D=f;D<g;++D)this[D]=d;else{let Q=o.isBuffer(d)?d:o.from(d,_),ue=Q.length;if(ue===0)throw new TypeError('The value "'+d+'" is invalid for argument "value"');for(D=0;D<g-f;++D)this[D+f]=Q[D%ue]}return this};let E={};function I(d,f,g){E[d]=class extends g{constructor(){super(),Object.defineProperty(this,"message",{value:f.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${d}]`,this.stack,delete this.name}get code(){return d}set code(_){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:_,writable:!0})}toString(){return`${this.name} [${d}]: ${this.message}`}}}I("ERR_BUFFER_OUT_OF_BOUNDS",function(d){return d?`${d} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),I("ERR_INVALID_ARG_TYPE",function(d,f){return`The "${d}" argument must be of type number. Received type ${typeof f}`},TypeError),I("ERR_OUT_OF_RANGE",function(d,f,g){let _=`The value of "${d}" is out of range.`,D=g;return Number.isInteger(g)&&Math.abs(g)>2**32?D=K(String(g)):typeof g=="bigint"&&(D=String(g),(g>BigInt(2)**BigInt(32)||g<-(BigInt(2)**BigInt(32)))&&(D=K(D)),D+="n"),_+=` It must be ${f}. Received ${D}`,_},RangeError);function K(d){let f="",g=d.length,_=d[0]==="-"?1:0;for(;g>=_+4;g-=3)f=`_${d.slice(g-3,g)}${f}`;return`${d.slice(0,g)}${f}`}function re(d,f,g){se(f,"offset"),(d[f]===void 0||d[f+g]===void 0)&&T(f,d.length-(g+1))}function oe(d,f,g,_,D,Q){if(d>g||d<f){let ue=typeof f=="bigint"?"n":"",Ae;throw f===0||f===BigInt(0)?Ae=`>= 0${ue} and < 2${ue} ** ${(Q+1)*8}${ue}`:Ae=`>= -(2${ue} ** ${(Q+1)*8-1}${ue}) and < 2 ** ${(Q+1)*8-1}${ue}`,new E.ERR_OUT_OF_RANGE("value",Ae,d)}re(_,D,Q)}function se(d,f){if(typeof d!="number")throw new E.ERR_INVALID_ARG_TYPE(f,"number",d)}function T(d,f,g){throw Math.floor(d)!==d?(se(d,g),new E.ERR_OUT_OF_RANGE("offset","an integer",d)):f<0?new E.ERR_BUFFER_OUT_OF_BOUNDS:new E.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${f}`,d)}let k=/[^+/0-9A-Za-z-_]/g;function v(d){if(d=d.split("=")[0],d=d.trim().replace(k,""),d.length<2)return"";for(;d.length%4!==0;)d=d+"=";return d}function N(d,f){f=f||1/0;let g,_=d.length,D=null,Q=[];for(let ue=0;ue<_;++ue){if(g=d.charCodeAt(ue),g>55295&&g<57344){if(!D){if(g>56319){(f-=3)>-1&&Q.push(239,191,189);continue}else if(ue+1===_){(f-=3)>-1&&Q.push(239,191,189);continue}D=g;continue}if(g<56320){(f-=3)>-1&&Q.push(239,191,189),D=g;continue}g=(D-55296<<10|g-56320)+65536}else D&&(f-=3)>-1&&Q.push(239,191,189);if(D=null,g<128){if((f-=1)<0)break;Q.push(g)}else if(g<2048){if((f-=2)<0)break;Q.push(g>>6|192,g&63|128)}else if(g<65536){if((f-=3)<0)break;Q.push(g>>12|224,g>>6&63|128,g&63|128)}else if(g<1114112){if((f-=4)<0)break;Q.push(g>>18|240,g>>12&63|128,g>>6&63|128,g&63|128)}else throw new Error("Invalid code point")}return Q}function B(d){let f=[];for(let g=0;g<d.length;++g)f.push(d.charCodeAt(g)&255);return f}function Y(d,f){let g,_,D,Q=[];for(let ue=0;ue<d.length&&!((f-=2)<0);++ue)g=d.charCodeAt(ue),_=g>>8,D=g%256,Q.push(D),Q.push(_);return Q}function J(d){return e.toByteArray(v(d))}function M(d,f,g,_){let D;for(D=0;D<_&&!(D+g>=f.length||D>=d.length);++D)f[D+g]=d[D];return D}function H(d,f){return d instanceof f||d!=null&&d.constructor!=null&&d.constructor.name!=null&&d.constructor.name===f.name}function C(d){return d!==d}let $=function(){let d="0123456789abcdef",f=new Array(256);for(let g=0;g<16;++g){let _=g*16;for(let D=0;D<16;++D)f[_+D]=d[g]+d[D]}return f}();function q(d){return typeof BigInt>"u"?ee:d}function ee(){throw new Error("BigInt not supported")}return wr}var vn,ka,qn,xa,wr,Ba,Zt,no,Dh,Fh,at=ot(()=>{pe(),me(),ge(),vn={},ka=!1,qn={},xa=!1,wr={},Ba=!1,Zt=Ab(),Zt.Buffer,Zt.SlowBuffer,Zt.INSPECT_MAX_BYTES,Zt.kMaxLength,no=Zt.Buffer,Dh=Zt.INSPECT_MAX_BYTES,Fh=Zt.kMaxLength}),me=ot(()=>{at()}),Ib=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(r){this.aliasToTopic={},this.max=r}put(r,n){return n===0||n>this.max?!1:(this.aliasToTopic[n]=r,this.length=Object.keys(this.aliasToTopic).length,!0)}getTopicByAlias(r){return this.aliasToTopic[r]}clear(){this.aliasToTopic={}}};e.default=t}),Xe=ve((e,t)=>{pe(),me(),ge(),t.exports={ArrayIsArray(r){return Array.isArray(r)},ArrayPrototypeIncludes(r,n){return r.includes(n)},ArrayPrototypeIndexOf(r,n){return r.indexOf(n)},ArrayPrototypeJoin(r,n){return r.join(n)},ArrayPrototypeMap(r,n){return r.map(n)},ArrayPrototypePop(r,n){return r.pop(n)},ArrayPrototypePush(r,n){return r.push(n)},ArrayPrototypeSlice(r,n,a){return r.slice(n,a)},Error,FunctionPrototypeCall(r,n,...a){return r.call(n,...a)},FunctionPrototypeSymbolHasInstance(r,n){return Function.prototype[Symbol.hasInstance].call(r,n)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(r,n){return Object.defineProperties(r,n)},ObjectDefineProperty(r,n,a){return Object.defineProperty(r,n,a)},ObjectGetOwnPropertyDescriptor(r,n){return Object.getOwnPropertyDescriptor(r,n)},ObjectKeys(r){return Object.keys(r)},ObjectSetPrototypeOf(r,n){return Object.setPrototypeOf(r,n)},Promise,PromisePrototypeCatch(r,n){return r.catch(n)},PromisePrototypeThen(r,n,a){return r.then(n,a)},PromiseReject(r){return Promise.reject(r)},ReflectApply:Reflect.apply,RegExpPrototypeTest(r,n){return r.test(n)},SafeSet:Set,String,StringPrototypeSlice(r,n,a){return r.slice(n,a)},StringPrototypeToLowerCase(r){return r.toLowerCase()},StringPrototypeToUpperCase(r){return r.toUpperCase()},StringPrototypeTrim(r){return r.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,TypedArrayPrototypeSet(r,n,a){return r.set(n,a)},Uint8Array}}),ar=ve((e,t)=>{pe(),me(),ge();var r=(at(),Ue(st)),n=Object.getPrototypeOf(async function(){}).constructor,a=globalThis.Blob||r.Blob,i=typeof a<"u"?function(l){return l instanceof a}:function(l){return!1},o=class extends Error{constructor(l){if(!Array.isArray(l))throw new TypeError(`Expected input to be an Array, got ${typeof l}`);let s="";for(let u=0;u<l.length;u++)s+=`    ${l[u].stack}
-`;super(s),this.name="AggregateError",this.errors=l}};t.exports={AggregateError:o,kEmptyObject:Object.freeze({}),once(l){let s=!1;return function(...u){s||(s=!0,l.apply(this,u))}},createDeferredPromise:function(){let l,s;return{promise:new Promise((u,c)=>{l=u,s=c}),resolve:l,reject:s}},promisify(l){return new Promise((s,u)=>{l((c,...h)=>c?u(c):s(...h))})},debuglog(){return function(){}},format(l,...s){return l.replace(/%([sdifj])/g,function(...[u,c]){let h=s.shift();return c==="f"?h.toFixed(6):c==="j"?JSON.stringify(h):c==="s"&&typeof h=="object"?`${h.constructor!==Object?h.constructor.name:""} {}`.trim():h.toString()})},inspect(l){switch(typeof l){case"string":if(l.includes("'"))if(l.includes('"')){if(!l.includes("`")&&!l.includes("${"))return`\`${l}\``}else return`"${l}"`;return`'${l}'`;case"number":return isNaN(l)?"NaN":Object.is(l,-0)?String(l):l;case"bigint":return`${String(l)}n`;case"boolean":case"undefined":return String(l);case"object":return"{}"}},types:{isAsyncFunction(l){return l instanceof n},isArrayBufferView(l){return ArrayBuffer.isView(l)}},isBlob:i},t.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),Rl=ve((e,t)=>{pe(),me(),ge();var{AbortController:r,AbortSignal:n}=typeof self<"u"?self:typeof window<"u"?window:void 0;t.exports=r,t.exports.AbortSignal=n,t.exports.default=r}),vt=ve((e,t)=>{pe(),me(),ge();var{format:r,inspect:n,AggregateError:a}=ar(),i=globalThis.AggregateError||a,o=Symbol("kIsNodeError"),l=["string","function","number","object","Function","Object","boolean","bigint","symbol"],s=/^([A-Z][a-z0-9]*)+$/,u="__node_internal_",c={};function h(P,w){if(!P)throw new c.ERR_INTERNAL_ASSERTION(w)}function p(P){let w="",U=P.length,W=P[0]==="-"?1:0;for(;U>=W+4;U-=3)w=`_${P.slice(U-3,U)}${w}`;return`${P.slice(0,U)}${w}`}function m(P,w,U){if(typeof w=="function")return h(w.length<=U.length,`Code: ${P}; The provided arguments length (${U.length}) does not match the required ones (${w.length}).`),w(...U);let W=(w.match(/%[dfijoOs]/g)||[]).length;return h(W===U.length,`Code: ${P}; The provided arguments length (${U.length}) does not match the required ones (${W}).`),U.length===0?w:r(w,...U)}function y(P,w,U){U||(U=Error);class W extends U{constructor(...x){super(m(P,w,x))}toString(){return`${this.name} [${P}]: ${this.message}`}}Object.defineProperties(W.prototype,{name:{value:U.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${P}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),W.prototype.code=P,W.prototype[o]=!0,c[P]=W}function b(P){let w=u+P.name;return Object.defineProperty(P,"name",{value:w}),P}function O(P,w){if(P&&w&&P!==w){if(Array.isArray(w.errors))return w.errors.push(P),w;let U=new i([w,P],w.message);return U.code=w.code,U}return P||w}var L=class extends Error{constructor(P="The operation was aborted",w=void 0){if(w!==void 0&&typeof w!="object")throw new c.ERR_INVALID_ARG_TYPE("options","Object",w);super(P,w),this.code="ABORT_ERR",this.name="AbortError"}};y("ERR_ASSERTION","%s",Error),y("ERR_INVALID_ARG_TYPE",(P,w,U)=>{h(typeof P=="string","'name' must be a string"),Array.isArray(w)||(w=[w]);let W="The ";P.endsWith(" argument")?W+=`${P} `:W+=`"${P}" ${P.includes(".")?"property":"argument"} `,W+="must be ";let R=[],x=[],j=[];for(let X of w)h(typeof X=="string","All expected entries have to be of type string"),l.includes(X)?R.push(X.toLowerCase()):s.test(X)?x.push(X):(h(X!=="object",'The value "object" should be written as "Object"'),j.push(X));if(x.length>0){let X=R.indexOf("object");X!==-1&&(R.splice(R,X,1),x.push("Object"))}if(R.length>0){switch(R.length){case 1:W+=`of type ${R[0]}`;break;case 2:W+=`one of type ${R[0]} or ${R[1]}`;break;default:{let X=R.pop();W+=`one of type ${R.join(", ")}, or ${X}`}}(x.length>0||j.length>0)&&(W+=" or ")}if(x.length>0){switch(x.length){case 1:W+=`an instance of ${x[0]}`;break;case 2:W+=`an instance of ${x[0]} or ${x[1]}`;break;default:{let X=x.pop();W+=`an instance of ${x.join(", ")}, or ${X}`}}j.length>0&&(W+=" or ")}switch(j.length){case 0:break;case 1:j[0].toLowerCase()!==j[0]&&(W+="an "),W+=`${j[0]}`;break;case 2:W+=`one of ${j[0]} or ${j[1]}`;break;default:{let X=j.pop();W+=`one of ${j.join(", ")}, or ${X}`}}if(U==null)W+=`. Received ${U}`;else if(typeof U=="function"&&U.name)W+=`. Received function ${U.name}`;else if(typeof U=="object"){var F;if((F=U.constructor)!==null&&F!==void 0&&F.name)W+=`. Received an instance of ${U.constructor.name}`;else{let X=n(U,{depth:-1});W+=`. Received ${X}`}}else{let X=n(U,{colors:!1});X.length>25&&(X=`${X.slice(0,25)}...`),W+=`. Received type ${typeof U} (${X})`}return W},TypeError),y("ERR_INVALID_ARG_VALUE",(P,w,U="is invalid")=>{let W=n(w);return W.length>128&&(W=W.slice(0,128)+"..."),`The ${P.includes(".")?"property":"argument"} '${P}' ${U}. Received ${W}`},TypeError),y("ERR_INVALID_RETURN_VALUE",(P,w,U)=>{var W;let R=U!=null&&(W=U.constructor)!==null&&W!==void 0&&W.name?`instance of ${U.constructor.name}`:`type ${typeof U}`;return`Expected ${P} to be returned from the "${w}" function but got ${R}.`},TypeError),y("ERR_MISSING_ARGS",(...P)=>{h(P.length>0,"At least one arg needs to be specified");let w,U=P.length;switch(P=(Array.isArray(P)?P:[P]).map(W=>`"${W}"`).join(" or "),U){case 1:w+=`The ${P[0]} argument`;break;case 2:w+=`The ${P[0]} and ${P[1]} arguments`;break;default:{let W=P.pop();w+=`The ${P.join(", ")}, and ${W} arguments`}break}return`${w} must be specified`},TypeError),y("ERR_OUT_OF_RANGE",(P,w,U)=>{h(w,'Missing "range" argument');let W;return Number.isInteger(U)&&Math.abs(U)>2**32?W=p(String(U)):typeof U=="bigint"?(W=String(U),(U>2n**32n||U<-(2n**32n))&&(W=p(W)),W+="n"):W=n(U),`The value of "${P}" is out of range. It must be ${w}. Received ${W}`},RangeError),y("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),y("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),y("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),y("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),y("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),y("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),y("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),y("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),y("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),y("ERR_STREAM_WRITE_AFTER_END","write after end",Error),y("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),t.exports={AbortError:L,aggregateTwoErrors:b(O),hideStackFrames:b,codes:c}}),Co=ve((e,t)=>{pe(),me(),ge();var{ArrayIsArray:r,ArrayPrototypeIncludes:n,ArrayPrototypeJoin:a,ArrayPrototypeMap:i,NumberIsInteger:o,NumberIsNaN:l,NumberMAX_SAFE_INTEGER:s,NumberMIN_SAFE_INTEGER:u,NumberParseInt:c,ObjectPrototypeHasOwnProperty:h,RegExpPrototypeExec:p,String:m,StringPrototypeToUpperCase:y,StringPrototypeTrim:b}=Xe(),{hideStackFrames:O,codes:{ERR_SOCKET_BAD_PORT:L,ERR_INVALID_ARG_TYPE:P,ERR_INVALID_ARG_VALUE:w,ERR_OUT_OF_RANGE:U,ERR_UNKNOWN_SIGNAL:W}}=vt(),{normalizeEncoding:R}=ar(),{isAsyncFunction:x,isArrayBufferView:j}=ar().types,F={};function X(M){return M===(M|0)}function Z(M){return M===M>>>0}var S=/^[0-7]+$/,z="must be a 32-bit unsigned integer or an octal string";function ae(M,H,C){if(typeof M>"u"&&(M=C),typeof M=="string"){if(p(S,M)===null)throw new w(H,M,z);M=c(M,8)}return ne(M,H),M}var te=O((M,H,C=u,$=s)=>{if(typeof M!="number")throw new P(H,"number",M);if(!o(M))throw new U(H,"an integer",M);if(M<C||M>$)throw new U(H,`>= ${C} && <= ${$}`,M)}),le=O((M,H,C=-2147483648,$=2147483647)=>{if(typeof M!="number")throw new P(H,"number",M);if(!o(M))throw new U(H,"an integer",M);if(M<C||M>$)throw new U(H,`>= ${C} && <= ${$}`,M)}),ne=O((M,H,C=!1)=>{if(typeof M!="number")throw new P(H,"number",M);if(!o(M))throw new U(H,"an integer",M);let $=C?1:0,q=4294967295;if(M<$||M>q)throw new U(H,`>= ${$} && <= ${q}`,M)});function G(M,H){if(typeof M!="string")throw new P(H,"string",M)}function de(M,H,C=void 0,$){if(typeof M!="number")throw new P(H,"number",M);if(C!=null&&M<C||$!=null&&M>$||(C!=null||$!=null)&&l(M))throw new U(H,`${C!=null?`>= ${C}`:""}${C!=null&&$!=null?" && ":""}${$!=null?`<= ${$}`:""}`,M)}var ce=O((M,H,C)=>{if(!n(C,M)){let $="must be one of: "+a(i(C,q=>typeof q=="string"?`'${q}'`:m(q)),", ");throw new w(H,M,$)}});function be(M,H){if(typeof M!="boolean")throw new P(H,"boolean",M)}function A(M,H,C){return M==null||!h(M,H)?C:M[H]}var ie=O((M,H,C=null)=>{let $=A(C,"allowArray",!1),q=A(C,"allowFunction",!1);if(!A(C,"nullable",!1)&&M===null||!$&&r(M)||typeof M!="object"&&(!q||typeof M!="function"))throw new P(H,"Object",M)}),he=O((M,H)=>{if(M!=null&&typeof M!="object"&&typeof M!="function")throw new P(H,"a dictionary",M)}),we=O((M,H,C=0)=>{if(!r(M))throw new P(H,"Array",M);if(M.length<C){let $=`must be longer than ${C}`;throw new w(H,M,$)}});function fe(M,H){we(M,H);for(let C=0;C<M.length;C++)G(M[C],`${H}[${C}]`)}function E(M,H){we(M,H);for(let C=0;C<M.length;C++)be(M[C],`${H}[${C}]`)}function I(M,H="signal"){if(G(M,H),F[M]===void 0)throw F[y(M)]!==void 0?new W(M+" (signals must use all capital letters)"):new W(M)}var K=O((M,H="buffer")=>{if(!j(M))throw new P(H,["Buffer","TypedArray","DataView"],M)});function re(M,H){let C=R(H),$=M.length;if(C==="hex"&&$%2!==0)throw new w("encoding",H,`is invalid for data of length ${$}`)}function oe(M,H="Port",C=!0){if(typeof M!="number"&&typeof M!="string"||typeof M=="string"&&b(M).length===0||+M!==+M>>>0||M>65535||M===0&&!C)throw new L(H,M,C);return M|0}var se=O((M,H)=>{if(M!==void 0&&(M===null||typeof M!="object"||!("aborted"in M)))throw new P(H,"AbortSignal",M)}),T=O((M,H)=>{if(typeof M!="function")throw new P(H,"Function",M)}),k=O((M,H)=>{if(typeof M!="function"||x(M))throw new P(H,"Function",M)}),v=O((M,H)=>{if(M!==void 0)throw new P(H,"undefined",M)});function N(M,H,C){if(!n(C,M))throw new P(H,`('${a(C,"|")}')`,M)}var B=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function Y(M,H){if(typeof M>"u"||!p(B,M))throw new w(H,M,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function J(M){if(typeof M=="string")return Y(M,"hints"),M;if(r(M)){let H=M.length,C="";if(H===0)return C;for(let $=0;$<H;$++){let q=M[$];Y(q,"hints"),C+=q,$!==H-1&&(C+=", ")}return C}throw new w("hints",M,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}t.exports={isInt32:X,isUint32:Z,parseFileMode:ae,validateArray:we,validateStringArray:fe,validateBooleanArray:E,validateBoolean:be,validateBuffer:K,validateDictionary:he,validateEncoding:re,validateFunction:T,validateInt32:le,validateInteger:te,validateNumber:de,validateObject:ie,validateOneOf:ce,validatePlainFunction:k,validatePort:oe,validateSignalName:I,validateString:G,validateUint32:ne,validateUndefined:v,validateUnion:N,validateAbortSignal:se,validateLinkHeaderValue:J}}),dn=ve((e,t)=>{pe(),me(),ge();var r=t.exports={},n,a;function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?n=setTimeout:n=i}catch{n=i}try{typeof clearTimeout=="function"?a=clearTimeout:a=o}catch{a=o}})();function l(L){if(n===setTimeout)return setTimeout(L,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(L,0);try{return n(L,0)}catch{try{return n.call(null,L,0)}catch{return n.call(this,L,0)}}}function s(L){if(a===clearTimeout)return clearTimeout(L);if((a===o||!a)&&clearTimeout)return a=clearTimeout,clearTimeout(L);try{return a(L)}catch{try{return a.call(null,L)}catch{return a.call(this,L)}}}var u=[],c=!1,h,p=-1;function m(){!c||!h||(c=!1,h.length?u=h.concat(u):p=-1,u.length&&y())}function y(){if(!c){var L=l(m);c=!0;for(var P=u.length;P;){for(h=u,u=[];++p<P;)h&&h[p].run();p=-1,P=u.length}h=null,c=!1,s(L)}}r.nextTick=function(L){var P=new Array(arguments.length-1);if(arguments.length>1)for(var w=1;w<arguments.length;w++)P[w-1]=arguments[w];u.push(new b(L,P)),u.length===1&&!c&&l(y)};function b(L,P){this.fun=L,this.array=P}b.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={};function O(){}r.on=O,r.addListener=O,r.once=O,r.off=O,r.removeListener=O,r.removeAllListeners=O,r.emit=O,r.prependListener=O,r.prependOnceListener=O,r.listeners=function(L){return[]},r.binding=function(L){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(L){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}}),hr=ve((e,t)=>{pe(),me(),ge();var{Symbol:r,SymbolAsyncIterator:n,SymbolIterator:a,SymbolFor:i}=Xe(),o=r("kDestroyed"),l=r("kIsErrored"),s=r("kIsReadable"),u=r("kIsDisturbed"),c=i("nodejs.webstream.isClosedPromise"),h=i("nodejs.webstream.controllerErrorFunction");function p(A,ie=!1){var he;return!!(A&&typeof A.pipe=="function"&&typeof A.on=="function"&&(!ie||typeof A.pause=="function"&&typeof A.resume=="function")&&(!A._writableState||((he=A._readableState)===null||he===void 0?void 0:he.readable)!==!1)&&(!A._writableState||A._readableState))}function m(A){var ie;return!!(A&&typeof A.write=="function"&&typeof A.on=="function"&&(!A._readableState||((ie=A._writableState)===null||ie===void 0?void 0:ie.writable)!==!1))}function y(A){return!!(A&&typeof A.pipe=="function"&&A._readableState&&typeof A.on=="function"&&typeof A.write=="function")}function b(A){return A&&(A._readableState||A._writableState||typeof A.write=="function"&&typeof A.on=="function"||typeof A.pipe=="function"&&typeof A.on=="function")}function O(A){return!!(A&&!b(A)&&typeof A.pipeThrough=="function"&&typeof A.getReader=="function"&&typeof A.cancel=="function")}function L(A){return!!(A&&!b(A)&&typeof A.getWriter=="function"&&typeof A.abort=="function")}function P(A){return!!(A&&!b(A)&&typeof A.readable=="object"&&typeof A.writable=="object")}function w(A){return O(A)||L(A)||P(A)}function U(A,ie){return A==null?!1:ie===!0?typeof A[n]=="function":ie===!1?typeof A[a]=="function":typeof A[n]=="function"||typeof A[a]=="function"}function W(A){if(!b(A))return null;let ie=A._writableState,he=A._readableState,we=ie||he;return!!(A.destroyed||A[o]||we!=null&&we.destroyed)}function R(A){if(!m(A))return null;if(A.writableEnded===!0)return!0;let ie=A._writableState;return ie!=null&&ie.errored?!1:typeof(ie==null?void 0:ie.ended)!="boolean"?null:ie.ended}function x(A,ie){if(!m(A))return null;if(A.writableFinished===!0)return!0;let he=A._writableState;return he!=null&&he.errored?!1:typeof(he==null?void 0:he.finished)!="boolean"?null:!!(he.finished||ie===!1&&he.ended===!0&&he.length===0)}function j(A){if(!p(A))return null;if(A.readableEnded===!0)return!0;let ie=A._readableState;return!ie||ie.errored?!1:typeof(ie==null?void 0:ie.ended)!="boolean"?null:ie.ended}function F(A,ie){if(!p(A))return null;let he=A._readableState;return he!=null&&he.errored?!1:typeof(he==null?void 0:he.endEmitted)!="boolean"?null:!!(he.endEmitted||ie===!1&&he.ended===!0&&he.length===0)}function X(A){return A&&A[s]!=null?A[s]:typeof(A==null?void 0:A.readable)!="boolean"?null:W(A)?!1:p(A)&&A.readable&&!F(A)}function Z(A){return typeof(A==null?void 0:A.writable)!="boolean"?null:W(A)?!1:m(A)&&A.writable&&!R(A)}function S(A,ie){return b(A)?W(A)?!0:!((ie==null?void 0:ie.readable)!==!1&&X(A)||(ie==null?void 0:ie.writable)!==!1&&Z(A)):null}function z(A){var ie,he;return b(A)?A.writableErrored?A.writableErrored:(ie=(he=A._writableState)===null||he===void 0?void 0:he.errored)!==null&&ie!==void 0?ie:null:null}function ae(A){var ie,he;return b(A)?A.readableErrored?A.readableErrored:(ie=(he=A._readableState)===null||he===void 0?void 0:he.errored)!==null&&ie!==void 0?ie:null:null}function te(A){if(!b(A))return null;if(typeof A.closed=="boolean")return A.closed;let ie=A._writableState,he=A._readableState;return typeof(ie==null?void 0:ie.closed)=="boolean"||typeof(he==null?void 0:he.closed)=="boolean"?(ie==null?void 0:ie.closed)||(he==null?void 0:he.closed):typeof A._closed=="boolean"&&le(A)?A._closed:null}function le(A){return typeof A._closed=="boolean"&&typeof A._defaultKeepAlive=="boolean"&&typeof A._removedConnection=="boolean"&&typeof A._removedContLen=="boolean"}function ne(A){return typeof A._sent100=="boolean"&&le(A)}function G(A){var ie;return typeof A._consuming=="boolean"&&typeof A._dumped=="boolean"&&((ie=A.req)===null||ie===void 0?void 0:ie.upgradeOrConnect)===void 0}function de(A){if(!b(A))return null;let ie=A._writableState,he=A._readableState,we=ie||he;return!we&&ne(A)||!!(we&&we.autoDestroy&&we.emitClose&&we.closed===!1)}function ce(A){var ie;return!!(A&&((ie=A[u])!==null&&ie!==void 0?ie:A.readableDidRead||A.readableAborted))}function be(A){var ie,he,we,fe,E,I,K,re,oe,se;return!!(A&&((ie=(he=(we=(fe=(E=(I=A[l])!==null&&I!==void 0?I:A.readableErrored)!==null&&E!==void 0?E:A.writableErrored)!==null&&fe!==void 0?fe:(K=A._readableState)===null||K===void 0?void 0:K.errorEmitted)!==null&&we!==void 0?we:(re=A._writableState)===null||re===void 0?void 0:re.errorEmitted)!==null&&he!==void 0?he:(oe=A._readableState)===null||oe===void 0?void 0:oe.errored)!==null&&ie!==void 0?ie:!((se=A._writableState)===null||se===void 0)&&se.errored))}t.exports={kDestroyed:o,isDisturbed:ce,kIsDisturbed:u,isErrored:be,kIsErrored:l,isReadable:X,kIsReadable:s,kIsClosedPromise:c,kControllerErrorFunction:h,isClosed:te,isDestroyed:W,isDuplexNodeStream:y,isFinished:S,isIterable:U,isReadableNodeStream:p,isReadableStream:O,isReadableEnded:j,isReadableFinished:F,isReadableErrored:ae,isNodeStream:b,isWebStream:w,isWritable:Z,isWritableNodeStream:m,isWritableStream:L,isWritableEnded:R,isWritableFinished:x,isWritableErrored:z,isServerRequest:G,isServerResponse:ne,willEmitClose:de,isTransformStream:P}}),jr=ve((e,t)=>{pe(),me(),ge();var r=dn(),{AbortError:n,codes:a}=vt(),{ERR_INVALID_ARG_TYPE:i,ERR_STREAM_PREMATURE_CLOSE:o}=a,{kEmptyObject:l,once:s}=ar(),{validateAbortSignal:u,validateFunction:c,validateObject:h,validateBoolean:p}=Co(),{Promise:m,PromisePrototypeThen:y}=Xe(),{isClosed:b,isReadable:O,isReadableNodeStream:L,isReadableStream:P,isReadableFinished:w,isReadableErrored:U,isWritable:W,isWritableNodeStream:R,isWritableStream:x,isWritableFinished:j,isWritableErrored:F,isNodeStream:X,willEmitClose:Z,kIsClosedPromise:S}=hr();function z(G){return G.setHeader&&typeof G.abort=="function"}var ae=()=>{};function te(G,de,ce){var be,A;if(arguments.length===2?(ce=de,de=l):de==null?de=l:h(de,"options"),c(ce,"callback"),u(de.signal,"options.signal"),ce=s(ce),P(G)||x(G))return le(G,de,ce);if(!X(G))throw new i("stream",["ReadableStream","WritableStream","Stream"],G);let ie=(be=de.readable)!==null&&be!==void 0?be:L(G),he=(A=de.writable)!==null&&A!==void 0?A:R(G),we=G._writableState,fe=G._readableState,E=()=>{G.writable||re()},I=Z(G)&&L(G)===ie&&R(G)===he,K=j(G,!1),re=()=>{K=!0,G.destroyed&&(I=!1),!(I&&(!G.readable||ie))&&(!ie||oe)&&ce.call(G)},oe=w(G,!1),se=()=>{oe=!0,G.destroyed&&(I=!1),!(I&&(!G.writable||he))&&(!he||K)&&ce.call(G)},T=J=>{ce.call(G,J)},k=b(G),v=()=>{k=!0;let J=F(G)||U(G);if(J&&typeof J!="boolean")return ce.call(G,J);if(ie&&!oe&&L(G,!0)&&!w(G,!1))return ce.call(G,new o);if(he&&!K&&!j(G,!1))return ce.call(G,new o);ce.call(G)},N=()=>{k=!0;let J=F(G)||U(G);if(J&&typeof J!="boolean")return ce.call(G,J);ce.call(G)},B=()=>{G.req.on("finish",re)};z(G)?(G.on("complete",re),I||G.on("abort",v),G.req?B():G.on("request",B)):he&&!we&&(G.on("end",E),G.on("close",E)),!I&&typeof G.aborted=="boolean"&&G.on("aborted",v),G.on("end",se),G.on("finish",re),de.error!==!1&&G.on("error",T),G.on("close",v),k?r.nextTick(v):we!=null&&we.errorEmitted||fe!=null&&fe.errorEmitted?I||r.nextTick(N):(!ie&&(!I||O(G))&&(K||W(G)===!1)||!he&&(!I||W(G))&&(oe||O(G)===!1)||fe&&G.req&&G.aborted)&&r.nextTick(N);let Y=()=>{ce=ae,G.removeListener("aborted",v),G.removeListener("complete",re),G.removeListener("abort",v),G.removeListener("request",B),G.req&&G.req.removeListener("finish",re),G.removeListener("end",E),G.removeListener("close",E),G.removeListener("finish",re),G.removeListener("end",se),G.removeListener("error",T),G.removeListener("close",v)};if(de.signal&&!k){let J=()=>{let M=ce;Y(),M.call(G,new n(void 0,{cause:de.signal.reason}))};if(de.signal.aborted)r.nextTick(J);else{let M=ce;ce=s((...H)=>{de.signal.removeEventListener("abort",J),M.apply(G,H)}),de.signal.addEventListener("abort",J)}}return Y}function le(G,de,ce){let be=!1,A=ae;if(de.signal)if(A=()=>{be=!0,ce.call(G,new n(void 0,{cause:de.signal.reason}))},de.signal.aborted)r.nextTick(A);else{let he=ce;ce=s((...we)=>{de.signal.removeEventListener("abort",A),he.apply(G,we)}),de.signal.addEventListener("abort",A)}let ie=(...he)=>{be||r.nextTick(()=>ce.apply(G,he))};return y(G[S].promise,ie,ie),ae}function ne(G,de){var ce;let be=!1;return de===null&&(de=l),(ce=de)!==null&&ce!==void 0&&ce.cleanup&&(p(de.cleanup,"cleanup"),be=de.cleanup),new m((A,ie)=>{let he=te(G,de,we=>{be&&he(),we?ie(we):A()})})}t.exports=te,t.exports.finished=ne}),xn=ve((e,t)=>{pe(),me(),ge();var r=dn(),{aggregateTwoErrors:n,codes:{ERR_MULTIPLE_CALLBACK:a},AbortError:i}=vt(),{Symbol:o}=Xe(),{kDestroyed:l,isDestroyed:s,isFinished:u,isServerRequest:c}=hr(),h=o("kDestroy"),p=o("kConstruct");function m(S,z,ae){S&&(S.stack,z&&!z.errored&&(z.errored=S),ae&&!ae.errored&&(ae.errored=S))}function y(S,z){let ae=this._readableState,te=this._writableState,le=te||ae;return te!=null&&te.destroyed||ae!=null&&ae.destroyed?(typeof z=="function"&&z(),this):(m(S,te,ae),te&&(te.destroyed=!0),ae&&(ae.destroyed=!0),le.constructed?b(this,S,z):this.once(h,function(ne){b(this,n(ne,S),z)}),this)}function b(S,z,ae){let te=!1;function le(ne){if(te)return;te=!0;let G=S._readableState,de=S._writableState;m(ne,de,G),de&&(de.closed=!0),G&&(G.closed=!0),typeof ae=="function"&&ae(ne),ne?r.nextTick(O,S,ne):r.nextTick(L,S)}try{S._destroy(z||null,le)}catch(ne){le(ne)}}function O(S,z){P(S,z),L(S)}function L(S){let z=S._readableState,ae=S._writableState;ae&&(ae.closeEmitted=!0),z&&(z.closeEmitted=!0),(ae!=null&&ae.emitClose||z!=null&&z.emitClose)&&S.emit("close")}function P(S,z){let ae=S._readableState,te=S._writableState;te!=null&&te.errorEmitted||ae!=null&&ae.errorEmitted||(te&&(te.errorEmitted=!0),ae&&(ae.errorEmitted=!0),S.emit("error",z))}function w(){let S=this._readableState,z=this._writableState;S&&(S.constructed=!0,S.closed=!1,S.closeEmitted=!1,S.destroyed=!1,S.errored=null,S.errorEmitted=!1,S.reading=!1,S.ended=S.readable===!1,S.endEmitted=S.readable===!1),z&&(z.constructed=!0,z.destroyed=!1,z.closed=!1,z.closeEmitted=!1,z.errored=null,z.errorEmitted=!1,z.finalCalled=!1,z.prefinished=!1,z.ended=z.writable===!1,z.ending=z.writable===!1,z.finished=z.writable===!1)}function U(S,z,ae){let te=S._readableState,le=S._writableState;if(le!=null&&le.destroyed||te!=null&&te.destroyed)return this;te!=null&&te.autoDestroy||le!=null&&le.autoDestroy?S.destroy(z):z&&(z.stack,le&&!le.errored&&(le.errored=z),te&&!te.errored&&(te.errored=z),ae?r.nextTick(P,S,z):P(S,z))}function W(S,z){if(typeof S._construct!="function")return;let ae=S._readableState,te=S._writableState;ae&&(ae.constructed=!1),te&&(te.constructed=!1),S.once(p,z),!(S.listenerCount(p)>1)&&r.nextTick(R,S)}function R(S){let z=!1;function ae(te){if(z){U(S,te??new a);return}z=!0;let le=S._readableState,ne=S._writableState,G=ne||le;le&&(le.constructed=!0),ne&&(ne.constructed=!0),G.destroyed?S.emit(h,te):te?U(S,te,!0):r.nextTick(x,S)}try{S._construct(te=>{r.nextTick(ae,te)})}catch(te){r.nextTick(ae,te)}}function x(S){S.emit(p)}function j(S){return(S==null?void 0:S.setHeader)&&typeof S.abort=="function"}function F(S){S.emit("close")}function X(S,z){S.emit("error",z),r.nextTick(F,S)}function Z(S,z){!S||s(S)||(!z&&!u(S)&&(z=new i),c(S)?(S.socket=null,S.destroy(z)):j(S)?S.abort():j(S.req)?S.req.abort():typeof S.destroy=="function"?S.destroy(z):typeof S.close=="function"?S.close():z?r.nextTick(X,S,z):r.nextTick(F,S),S.destroyed||(S[l]=!0))}t.exports={construct:W,destroyer:Z,destroy:y,undestroy:w,errorOrDestroy:U}});function je(){je.init.call(this)}function $i(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function Wh(e){return e._maxListeners===void 0?je.defaultMaxListeners:e._maxListeners}function Qu(e,t,r,n){var a,i,o,l;if($i(r),(i=e._events)===void 0?(i=e._events=Object.create(null),e._eventsCount=0):(i.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),o=i[t]),o===void 0)o=i[t]=r,++e._eventsCount;else if(typeof o=="function"?o=i[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(a=Wh(e))>0&&o.length>a&&!o.warned){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,l=s,console&&console.warn&&console.warn(l)}return e}function Tb(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Ju(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},a=Tb.bind(n);return a.listener=r,n.wrapFn=a,a}function Xu(e,t,r){var n=e._events;if(n===void 0)return[];var a=n[t];return a===void 0?[]:typeof a=="function"?r?[a.listener||a]:[a]:r?function(i){for(var o=new Array(i.length),l=0;l<o.length;++l)o[l]=i[l].listener||i[l];return o}(a):$h(a,a.length)}function Zu(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}function $h(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}var ec,tc,Hr,Qo,Jo,Xo,Et,rc=ot(()=>{pe(),me(),ge(),Hr=typeof Reflect=="object"?Reflect:null,Qo=Hr&&typeof Hr.apply=="function"?Hr.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)},tc=Hr&&typeof Hr.ownKeys=="function"?Hr.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)},Jo=Number.isNaN||function(e){return e!=e},ec=je,je.EventEmitter=je,je.prototype._events=void 0,je.prototype._eventsCount=0,je.prototype._maxListeners=void 0,Xo=10,Object.defineProperty(je,"defaultMaxListeners",{enumerable:!0,get:function(){return Xo},set:function(e){if(typeof e!="number"||e<0||Jo(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Xo=e}}),je.init=function(){this._events!==void 0&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},je.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||Jo(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},je.prototype.getMaxListeners=function(){return Wh(this)},je.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n=e==="error",a=this._events;if(a!==void 0)n=n&&a.error===void 0;else if(!n)return!1;if(n){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var o=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw o.context=i,o}var l=a[e];if(l===void 0)return!1;if(typeof l=="function")Qo(l,this,t);else{var s=l.length,u=$h(l,s);for(r=0;r<s;++r)Qo(u[r],this,t)}return!0},je.prototype.addListener=function(e,t){return Qu(this,e,t,!1)},je.prototype.on=je.prototype.addListener,je.prototype.prependListener=function(e,t){return Qu(this,e,t,!0)},je.prototype.once=function(e,t){return $i(t),this.on(e,Ju(this,e,t)),this},je.prototype.prependOnceListener=function(e,t){return $i(t),this.prependListener(e,Ju(this,e,t)),this},je.prototype.removeListener=function(e,t){var r,n,a,i,o;if($i(t),(n=this._events)===void 0)return this;if((r=n[e])===void 0)return this;if(r===t||r.listener===t)--this._eventsCount==0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if(typeof r!="function"){for(a=-1,i=r.length-1;i>=0;i--)if(r[i]===t||r[i].listener===t){o=r[i].listener,a=i;break}if(a<0)return this;a===0?r.shift():function(l,s){for(;s+1<l.length;s++)l[s]=l[s+1];l.pop()}(r,a),r.length===1&&(n[e]=r[0]),n.removeListener!==void 0&&this.emit("removeListener",e,o||t)}return this},je.prototype.off=je.prototype.removeListener,je.prototype.removeAllListeners=function(e){var t,r,n;if((r=this._events)===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var a,i=Object.keys(r);for(n=0;n<i.length;++n)(a=i[n])!=="removeListener"&&this.removeAllListeners(a);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(typeof(t=r[e])=="function")this.removeListener(e,t);else if(t!==void 0)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},je.prototype.listeners=function(e){return Xu(this,e,!0)},je.prototype.rawListeners=function(e){return Xu(this,e,!1)},je.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):Zu.call(e,t)},je.prototype.listenerCount=Zu,je.prototype.eventNames=function(){return this._eventsCount>0?tc(this._events):[]},Et=ec,Et.EventEmitter,Et.defaultMaxListeners,Et.init,Et.listenerCount,Et.EventEmitter,Et.defaultMaxListeners,Et.init,Et.listenerCount}),pn={};hn(pn,{EventEmitter:()=>Hh,default:()=>Et,defaultMaxListeners:()=>Vh,init:()=>qh,listenerCount:()=>Kh,on:()=>zh,once:()=>Yh});var Hh,Vh,qh,Kh,zh,Yh,Bn=ot(()=>{pe(),me(),ge(),rc(),rc(),Et.once=function(e,t){return new Promise((r,n)=>{function a(...o){i!==void 0&&e.removeListener("error",i),r(o)}let i;t!=="error"&&(i=o=>{e.removeListener(name,a),n(o)},e.once("error",i)),e.once(t,a)})},Et.on=function(e,t){let r=[],n=[],a=null,i=!1,o={async next(){let u=r.shift();if(u)return createIterResult(u,!1);if(a){let c=Promise.reject(a);return a=null,c}return i?createIterResult(void 0,!0):new Promise((c,h)=>n.push({resolve:c,reject:h}))},async return(){e.removeListener(t,l),e.removeListener("error",s),i=!0;for(let u of n)u.resolve(createIterResult(void 0,!0));return createIterResult(void 0,!0)},throw(u){a=u,e.removeListener(t,l),e.removeListener("error",s)},[Symbol.asyncIterator](){return this}};return e.on(t,l),e.on("error",s),o;function l(...u){let c=n.shift();c?c.resolve(createIterResult(u,!1)):r.push(u)}function s(u){i=!0;let c=n.shift();c?c.reject(u):a=u,o.return()}},{EventEmitter:Hh,defaultMaxListeners:Vh,init:qh,listenerCount:Kh,on:zh,once:Yh}=Et}),Pl=ve((e,t)=>{pe(),me(),ge();var{ArrayIsArray:r,ObjectSetPrototypeOf:n}=Xe(),{EventEmitter:a}=(Bn(),Ue(pn));function i(l){a.call(this,l)}n(i.prototype,a.prototype),n(i,a),i.prototype.pipe=function(l,s){let u=this;function c(L){l.writable&&l.write(L)===!1&&u.pause&&u.pause()}u.on("data",c);function h(){u.readable&&u.resume&&u.resume()}l.on("drain",h),!l._isStdio&&(!s||s.end!==!1)&&(u.on("end",m),u.on("close",y));let p=!1;function m(){p||(p=!0,l.end())}function y(){p||(p=!0,typeof l.destroy=="function"&&l.destroy())}function b(L){O(),a.listenerCount(this,"error")===0&&this.emit("error",L)}o(u,"error",b),o(l,"error",b);function O(){u.removeListener("data",c),l.removeListener("drain",h),u.removeListener("end",m),u.removeListener("close",y),u.removeListener("error",b),l.removeListener("error",b),u.removeListener("end",O),u.removeListener("close",O),l.removeListener("close",O)}return u.on("end",O),u.on("close",O),l.on("close",O),l.emit("pipe",u),l};function o(l,s,u){if(typeof l.prependListener=="function")return l.prependListener(s,u);!l._events||!l._events[s]?l.on(s,u):r(l._events[s])?l._events[s].unshift(u):l._events[s]=[u,l._events[s]]}t.exports={Stream:i,prependListener:o}}),Oo=ve((e,t)=>{pe(),me(),ge();var{AbortError:r,codes:n}=vt(),{isNodeStream:a,isWebStream:i,kControllerErrorFunction:o}=hr(),l=jr(),{ERR_INVALID_ARG_TYPE:s}=n,u=(c,h)=>{if(typeof c!="object"||!("aborted"in c))throw new s(h,"AbortSignal",c)};t.exports.addAbortSignal=function(c,h){if(u(c,"signal"),!a(h)&&!i(h))throw new s("stream",["ReadableStream","WritableStream","Stream"],h);return t.exports.addAbortSignalNoValidate(c,h)},t.exports.addAbortSignalNoValidate=function(c,h){if(typeof c!="object"||!("aborted"in c))return h;let p=a(h)?()=>{h.destroy(new r(void 0,{cause:c.reason}))}:()=>{h[o](new r(void 0,{cause:c.reason}))};return c.aborted?p():(c.addEventListener("abort",p),l(h,()=>c.removeEventListener("abort",p))),h}}),Cb=ve((e,t)=>{pe(),me(),ge();var{StringPrototypeSlice:r,SymbolIterator:n,TypedArrayPrototypeSet:a,Uint8Array:i}=Xe(),{Buffer:o}=(at(),Ue(st)),{inspect:l}=ar();t.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(s){let u={data:s,next:null};this.length>0?this.tail.next=u:this.head=u,this.tail=u,++this.length}unshift(s){let u={data:s,next:this.head};this.length===0&&(this.tail=u),this.head=u,++this.length}shift(){if(this.length===0)return;let s=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,s}clear(){this.head=this.tail=null,this.length=0}join(s){if(this.length===0)return"";let u=this.head,c=""+u.data;for(;(u=u.next)!==null;)c+=s+u.data;return c}concat(s){if(this.length===0)return o.alloc(0);let u=o.allocUnsafe(s>>>0),c=this.head,h=0;for(;c;)a(u,c.data,h),h+=c.data.length,c=c.next;return u}consume(s,u){let c=this.head.data;if(s<c.length){let h=c.slice(0,s);return this.head.data=c.slice(s),h}return s===c.length?this.shift():u?this._getString(s):this._getBuffer(s)}first(){return this.head.data}*[n](){for(let s=this.head;s;s=s.next)yield s.data}_getString(s){let u="",c=this.head,h=0;do{let p=c.data;if(s>p.length)u+=p,s-=p.length;else{s===p.length?(u+=p,++h,c.next?this.head=c.next:this.head=this.tail=null):(u+=r(p,0,s),this.head=c,c.data=r(p,s));break}++h}while((c=c.next)!==null);return this.length-=h,u}_getBuffer(s){let u=o.allocUnsafe(s),c=s,h=this.head,p=0;do{let m=h.data;if(s>m.length)a(u,m,c-s),s-=m.length;else{s===m.length?(a(u,m,c-s),++p,h.next?this.head=h.next:this.head=this.tail=null):(a(u,new i(m.buffer,m.byteOffset,s),c-s),this.head=h,h.data=m.slice(s));break}++p}while((h=h.next)!==null);return this.length-=p,u}[Symbol.for("nodejs.util.inspect.custom")](s,u){return l(this,{...u,depth:0,customInspect:!1})}}}),kl=ve((e,t)=>{pe(),me(),ge();var{MathFloor:r,NumberIsInteger:n}=Xe(),{ERR_INVALID_ARG_VALUE:a}=vt().codes;function i(s,u,c){return s.highWaterMark!=null?s.highWaterMark:u?s[c]:null}function o(s){return s?16:16*1024}function l(s,u,c,h){let p=i(u,h,c);if(p!=null){if(!n(p)||p<0){let m=h?`options.${c}`:"options.highWaterMark";throw new a(m,p)}return r(p)}return o(s.objectMode)}t.exports={getHighWaterMark:l,getDefaultHighWaterMark:o}});function nc(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return r===-1&&(r=t),[r,r===t?0:4-r%4]}function Ob(e,t,r){for(var n,a,i=[],o=t;o<r;o+=3)n=(e[o]<<16&16711680)+(e[o+1]<<8&65280)+(255&e[o+2]),i.push(jt[(a=n)>>18&63]+jt[a>>12&63]+jt[a>>6&63]+jt[63&a]);return i.join("")}function ir(e){if(e>2147483647)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,ye.prototype),t}function ye(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return Ma(e)}return Gh(e,t,r)}function Gh(e,t,r){if(typeof e=="string")return function(i,o){if(typeof o=="string"&&o!==""||(o="utf8"),!ye.isEncoding(o))throw new TypeError("Unknown encoding: "+o);var l=0|Jh(i,o),s=ir(l),u=s.write(i,o);return u!==l&&(s=s.slice(0,u)),s}(e,t);if(ArrayBuffer.isView(e))return Zo(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(or(e,ArrayBuffer)||e&&or(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(or(e,SharedArrayBuffer)||e&&or(e.buffer,SharedArrayBuffer)))return Rb(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return ye.from(n,t,r);var a=function(i){if(ye.isBuffer(i)){var o=0|xl(i.length),l=ir(o);return l.length===0||i.copy(l,0,0,o),l}if(i.length!==void 0)return typeof i.length!="number"||Bl(i.length)?ir(0):Zo(i);if(i.type==="Buffer"&&Array.isArray(i.data))return Zo(i.data)}(e);if(a)return a;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return ye.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function Qh(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function Ma(e){return Qh(e),ir(e<0?0:0|xl(e))}function Zo(e){for(var t=e.length<0?0:0|xl(e.length),r=ir(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function Rb(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=t===void 0&&r===void 0?new Uint8Array(e):r===void 0?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,ye.prototype),n}function xl(e){if(e>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function Jh(e,t){if(ye.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||or(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;for(var a=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return La(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return td(e).length;default:if(a)return n?-1:La(e).length;t=(""+t).toLowerCase(),a=!0}}function Pb(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return Db(this,t,r);case"utf8":case"utf-8":return Zh(this,t,r);case"ascii":return jb(this,t,r);case"latin1":case"binary":return Ub(this,t,r);case"base64":return Nb(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Fb(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Vr(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function ic(e,t,r,n,a){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Bl(r=+r)&&(r=a?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(a)return-1;r=e.length-1}else if(r<0){if(!a)return-1;r=0}if(typeof t=="string"&&(t=ye.from(t,n)),ye.isBuffer(t))return t.length===0?-1:oc(e,t,r,n,a);if(typeof t=="number")return t&=255,typeof Uint8Array.prototype.indexOf=="function"?a?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):oc(e,[t],r,n,a);throw new TypeError("val must be string, number or Buffer")}function oc(e,t,r,n,a){var i,o=1,l=e.length,s=t.length;if(n!==void 0&&((n=String(n).toLowerCase())==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;o=2,l/=2,s/=2,r/=2}function u(m,y){return o===1?m[y]:m.readUInt16BE(y*o)}if(a){var c=-1;for(i=r;i<l;i++)if(u(e,i)===u(t,c===-1?0:i-c)){if(c===-1&&(c=i),i-c+1===s)return c*o}else c!==-1&&(i-=i-c),c=-1}else for(r+s>l&&(r=l-s),i=r;i>=0;i--){for(var h=!0,p=0;p<s;p++)if(u(e,i+p)!==u(t,p)){h=!1;break}if(h)return i}return-1}function kb(e,t,r,n){r=Number(r)||0;var a=e.length-r;n?(n=Number(n))>a&&(n=a):n=a;var i=t.length;n>i/2&&(n=i/2);for(var o=0;o<n;++o){var l=parseInt(t.substr(2*o,2),16);if(Bl(l))return o;e[r+o]=l}return o}function xb(e,t,r,n){return Ro(La(t,e.length-r),e,r,n)}function Xh(e,t,r,n){return Ro(function(a){for(var i=[],o=0;o<a.length;++o)i.push(255&a.charCodeAt(o));return i}(t),e,r,n)}function Bb(e,t,r,n){return Xh(e,t,r,n)}function Mb(e,t,r,n){return Ro(td(t),e,r,n)}function Lb(e,t,r,n){return Ro(function(a,i){for(var o,l,s,u=[],c=0;c<a.length&&!((i-=2)<0);++c)o=a.charCodeAt(c),l=o>>8,s=o%256,u.push(s),u.push(l);return u}(t,e.length-r),e,r,n)}function Nb(e,t,r){return t===0&&r===e.length?io.fromByteArray(e):io.fromByteArray(e.slice(t,r))}function Zh(e,t,r){r=Math.min(e.length,r);for(var n=[],a=t;a<r;){var i,o,l,s,u=e[a],c=null,h=u>239?4:u>223?3:u>191?2:1;if(a+h<=r)switch(h){case 1:u<128&&(c=u);break;case 2:(192&(i=e[a+1]))==128&&(s=(31&u)<<6|63&i)>127&&(c=s);break;case 3:i=e[a+1],o=e[a+2],(192&i)==128&&(192&o)==128&&(s=(15&u)<<12|(63&i)<<6|63&o)>2047&&(s<55296||s>57343)&&(c=s);break;case 4:i=e[a+1],o=e[a+2],l=e[a+3],(192&i)==128&&(192&o)==128&&(192&l)==128&&(s=(15&u)<<18|(63&i)<<12|(63&o)<<6|63&l)>65535&&s<1114112&&(c=s)}c===null?(c=65533,h=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),a+=h}return function(p){var m=p.length;if(m<=4096)return String.fromCharCode.apply(String,p);for(var y="",b=0;b<m;)y+=String.fromCharCode.apply(String,p.slice(b,b+=4096));return y}(n)}function jb(e,t,r){var n="";r=Math.min(e.length,r);for(var a=t;a<r;++a)n+=String.fromCharCode(127&e[a]);return n}function Ub(e,t,r){var n="";r=Math.min(e.length,r);for(var a=t;a<r;++a)n+=String.fromCharCode(e[a]);return n}function Db(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var a="",i=t;i<r;++i)a+=nd[e[i]];return a}function Fb(e,t,r){for(var n=e.slice(t,r),a="",i=0;i<n.length;i+=2)a+=String.fromCharCode(n[i]+256*n[i+1]);return a}function tt(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function ht(e,t,r,n,a,i){if(!ye.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||t<i)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function ed(e,t,r,n,a,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function sc(e,t,r,n,a){return t=+t,r>>>=0,a||ed(e,0,r,4),Xr.write(e,t,r,n,23,4),r+4}function ac(e,t,r,n,a){return t=+t,r>>>=0,a||ed(e,0,r,8),Xr.write(e,t,r,n,52,8),r+8}function La(e,t){var r;t=t||1/0;for(var n=e.length,a=null,i=[],o=0;o<n;++o){if((r=e.charCodeAt(o))>55295&&r<57344){if(!a){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&i.push(239,191,189);continue}a=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),a=r;continue}r=65536+(a-55296<<10|r-56320)}else a&&(t-=3)>-1&&i.push(239,191,189);if(a=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function td(e){return io.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(rd,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(e))}function Ro(e,t,r,n){for(var a=0;a<n&&!(a+r>=t.length||a>=e.length);++a)t[a+r]=e[a];return a}function or(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function Bl(e){return e!=e}function lc(e,t){for(var r in e)t[r]=e[r]}function qr(e,t,r){return Lt(e,t,r)}function Un(e){var t;switch(this.encoding=function(r){var n=function(a){if(!a)return"utf8";for(var i;;)switch(a){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return a;default:if(i)return;a=(""+a).toLowerCase(),i=!0}}(r);if(typeof n!="string"&&(oo.isEncoding===Na||!Na(r)))throw new Error("Unknown encoding: "+r);return n||r}(e),this.encoding){case"utf16le":this.text=$b,this.end=Hb,t=4;break;case"utf8":this.fillLast=Wb,t=4;break;case"base64":this.text=Vb,this.end=qb,t=3;break;default:return this.write=Kb,this.end=zb,void 0}this.lastNeed=0,this.lastTotal=0,this.lastChar=oo.allocUnsafe(t)}function es(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function Wb(e){var t=this.lastTotal-this.lastNeed,r=function(n,a,i){if((192&a[0])!=128)return n.lastNeed=0,"�";if(n.lastNeed>1&&a.length>1){if((192&a[1])!=128)return n.lastNeed=1,"�";if(n.lastNeed>2&&a.length>2&&(192&a[2])!=128)return n.lastNeed=2,"�"}}(this,e);return r!==void 0?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length,void 0)}function $b(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function Hb(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function Vb(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function qb(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function Kb(e){return e.toString(this.encoding)}function zb(e){return e&&e.length?this.write(e):""}var uc,jt,wt,cc,Oi,Kr,fc,hc,Wt,io,Xr,ts,rd,nd,Dn,Fn,Lt,dc,wn,oo,Na,pc=ot(()=>{for(pe(),me(),ge(),uc={byteLength:function(e){var t=nc(e),r=t[0],n=t[1];return 3*(r+n)/4-n},toByteArray:function(e){var t,r,n=nc(e),a=n[0],i=n[1],o=new cc(function(u,c,h){return 3*(c+h)/4-h}(0,a,i)),l=0,s=i>0?a-4:a;for(r=0;r<s;r+=4)t=wt[e.charCodeAt(r)]<<18|wt[e.charCodeAt(r+1)]<<12|wt[e.charCodeAt(r+2)]<<6|wt[e.charCodeAt(r+3)],o[l++]=t>>16&255,o[l++]=t>>8&255,o[l++]=255&t;return i===2&&(t=wt[e.charCodeAt(r)]<<2|wt[e.charCodeAt(r+1)]>>4,o[l++]=255&t),i===1&&(t=wt[e.charCodeAt(r)]<<10|wt[e.charCodeAt(r+1)]<<4|wt[e.charCodeAt(r+2)]>>2,o[l++]=t>>8&255,o[l++]=255&t),o},fromByteArray:function(e){for(var t,r=e.length,n=r%3,a=[],i=0,o=r-n;i<o;i+=16383)a.push(Ob(e,i,i+16383>o?o:i+16383));return n===1?(t=e[r-1],a.push(jt[t>>2]+jt[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],a.push(jt[t>>10]+jt[t>>4&63]+jt[t<<2&63]+"=")),a.join("")}},jt=[],wt=[],cc=typeof Uint8Array<"u"?Uint8Array:Array,Oi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Kr=0,fc=Oi.length;Kr<fc;++Kr)jt[Kr]=Oi[Kr],wt[Oi.charCodeAt(Kr)]=Kr;wt[45]=62,wt[95]=63,hc={read:function(e,t,r,n,a){var i,o,l=8*a-n-1,s=(1<<l)-1,u=s>>1,c=-7,h=r?a-1:0,p=r?-1:1,m=e[t+h];for(h+=p,i=m&(1<<-c)-1,m>>=-c,c+=l;c>0;i=256*i+e[t+h],h+=p,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=256*o+e[t+h],h+=p,c-=8);if(i===0)i=1-u;else{if(i===s)return o?NaN:1/0*(m?-1:1);o+=Math.pow(2,n),i-=u}return(m?-1:1)*o*Math.pow(2,i-n)},write:function(e,t,r,n,a,i){var o,l,s,u=8*i-a-1,c=(1<<u)-1,h=c>>1,p=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,y=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-o))<1&&(o--,s*=2),(t+=o+h>=1?p/s:p*Math.pow(2,1-h))*s>=2&&(o++,s/=2),o+h>=c?(l=0,o=c):o+h>=1?(l=(t*s-1)*Math.pow(2,a),o+=h):(l=t*Math.pow(2,h-1)*Math.pow(2,a),o=0));a>=8;e[r+m]=255&l,m+=y,l/=256,a-=8);for(o=o<<a|l,u+=a;u>0;e[r+m]=255&o,m+=y,o/=256,u-=8);e[r+m-y]|=128*b}},Wt={},io=uc,Xr=hc,ts=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null,Wt.Buffer=ye,Wt.SlowBuffer=function(e){return+e!=e&&(e=0),ye.alloc(+e)},Wt.INSPECT_MAX_BYTES=50,Wt.kMaxLength=2147483647,ye.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch{return!1}}(),ye.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(ye.prototype,"parent",{enumerable:!0,get:function(){if(ye.isBuffer(this))return this.buffer}}),Object.defineProperty(ye.prototype,"offset",{enumerable:!0,get:function(){if(ye.isBuffer(this))return this.byteOffset}}),ye.poolSize=8192,ye.from=function(e,t,r){return Gh(e,t,r)},Object.setPrototypeOf(ye.prototype,Uint8Array.prototype),Object.setPrototypeOf(ye,Uint8Array),ye.alloc=function(e,t,r){return function(n,a,i){return Qh(n),n<=0?ir(n):a!==void 0?typeof i=="string"?ir(n).fill(a,i):ir(n).fill(a):ir(n)}(e,t,r)},ye.allocUnsafe=function(e){return Ma(e)},ye.allocUnsafeSlow=function(e){return Ma(e)},ye.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==ye.prototype},ye.compare=function(e,t){if(or(e,Uint8Array)&&(e=ye.from(e,e.offset,e.byteLength)),or(t,Uint8Array)&&(t=ye.from(t,t.offset,t.byteLength)),!ye.isBuffer(e)||!ye.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,a=0,i=Math.min(r,n);a<i;++a)if(e[a]!==t[a]){r=e[a],n=t[a];break}return r<n?-1:n<r?1:0},ye.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},ye.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return ye.alloc(0);var r;if(t===void 0)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=ye.allocUnsafe(t),a=0;for(r=0;r<e.length;++r){var i=e[r];if(or(i,Uint8Array)&&(i=ye.from(i)),!ye.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,a),a+=i.length}return n},ye.byteLength=Jh,ye.prototype._isBuffer=!0,ye.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)Vr(this,t,t+1);return this},ye.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)Vr(this,t,t+3),Vr(this,t+1,t+2);return this},ye.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)Vr(this,t,t+7),Vr(this,t+1,t+6),Vr(this,t+2,t+5),Vr(this,t+3,t+4);return this},ye.prototype.toString=function(){var e=this.length;return e===0?"":arguments.length===0?Zh(this,0,e):Pb.apply(this,arguments)},ye.prototype.toLocaleString=ye.prototype.toString,ye.prototype.equals=function(e){if(!ye.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||ye.compare(this,e)===0},ye.prototype.inspect=function(){var e="",t=Wt.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},ts&&(ye.prototype[ts]=ye.prototype.inspect),ye.prototype.compare=function(e,t,r,n,a){if(or(e,Uint8Array)&&(e=ye.from(e,e.offset,e.byteLength)),!ye.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),r===void 0&&(r=e?e.length:0),n===void 0&&(n=0),a===void 0&&(a=this.length),t<0||r>e.length||n<0||a>this.length)throw new RangeError("out of range index");if(n>=a&&t>=r)return 0;if(n>=a)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(a>>>=0)-(n>>>=0),o=(r>>>=0)-(t>>>=0),l=Math.min(i,o),s=this.slice(n,a),u=e.slice(t,r),c=0;c<l;++c)if(s[c]!==u[c]){i=s[c],o=u[c];break}return i<o?-1:o<i?1:0},ye.prototype.includes=function(e,t,r){return this.indexOf(e,t,r)!==-1},ye.prototype.indexOf=function(e,t,r){return ic(this,e,t,r,!0)},ye.prototype.lastIndexOf=function(e,t,r){return ic(this,e,t,r,!1)},ye.prototype.write=function(e,t,r,n){if(t===void 0)n="utf8",r=this.length,t=0;else if(r===void 0&&typeof t=="string")n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,n===void 0&&(n="utf8")):(n=r,r=void 0)}var a=this.length-t;if((r===void 0||r>a)&&(r=a),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return kb(this,e,t,r);case"utf8":case"utf-8":return xb(this,e,t,r);case"ascii":return Xh(this,e,t,r);case"latin1":case"binary":return Bb(this,e,t,r);case"base64":return Mb(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Lb(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},ye.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},ye.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=t===void 0?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,ye.prototype),n},ye.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||tt(e,t,this.length);for(var n=this[e],a=1,i=0;++i<t&&(a*=256);)n+=this[e+i]*a;return n},ye.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||tt(e,t,this.length);for(var n=this[e+--t],a=1;t>0&&(a*=256);)n+=this[e+--t]*a;return n},ye.prototype.readUInt8=function(e,t){return e>>>=0,t||tt(e,1,this.length),this[e]},ye.prototype.readUInt16LE=function(e,t){return e>>>=0,t||tt(e,2,this.length),this[e]|this[e+1]<<8},ye.prototype.readUInt16BE=function(e,t){return e>>>=0,t||tt(e,2,this.length),this[e]<<8|this[e+1]},ye.prototype.readUInt32LE=function(e,t){return e>>>=0,t||tt(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},ye.prototype.readUInt32BE=function(e,t){return e>>>=0,t||tt(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},ye.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||tt(e,t,this.length);for(var n=this[e],a=1,i=0;++i<t&&(a*=256);)n+=this[e+i]*a;return n>=(a*=128)&&(n-=Math.pow(2,8*t)),n},ye.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||tt(e,t,this.length);for(var n=t,a=1,i=this[e+--n];n>0&&(a*=256);)i+=this[e+--n]*a;return i>=(a*=128)&&(i-=Math.pow(2,8*t)),i},ye.prototype.readInt8=function(e,t){return e>>>=0,t||tt(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},ye.prototype.readInt16LE=function(e,t){e>>>=0,t||tt(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},ye.prototype.readInt16BE=function(e,t){e>>>=0,t||tt(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},ye.prototype.readInt32LE=function(e,t){return e>>>=0,t||tt(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},ye.prototype.readInt32BE=function(e,t){return e>>>=0,t||tt(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},ye.prototype.readFloatLE=function(e,t){return e>>>=0,t||tt(e,4,this.length),Xr.read(this,e,!0,23,4)},ye.prototype.readFloatBE=function(e,t){return e>>>=0,t||tt(e,4,this.length),Xr.read(this,e,!1,23,4)},ye.prototype.readDoubleLE=function(e,t){return e>>>=0,t||tt(e,8,this.length),Xr.read(this,e,!0,52,8)},ye.prototype.readDoubleBE=function(e,t){return e>>>=0,t||tt(e,8,this.length),Xr.read(this,e,!1,52,8)},ye.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||ht(this,e,t,r,Math.pow(2,8*r)-1,0);var a=1,i=0;for(this[t]=255&e;++i<r&&(a*=256);)this[t+i]=e/a&255;return t+r},ye.prototype.writeUIntBE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||ht(this,e,t,r,Math.pow(2,8*r)-1,0);var a=r-1,i=1;for(this[t+a]=255&e;--a>=0&&(i*=256);)this[t+a]=e/i&255;return t+r},ye.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||ht(this,e,t,1,255,0),this[t]=255&e,t+1},ye.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||ht(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},ye.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||ht(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},ye.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||ht(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},ye.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||ht(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},ye.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var a=Math.pow(2,8*r-1);ht(this,e,t,r,a-1,-a)}var i=0,o=1,l=0;for(this[t]=255&e;++i<r&&(o*=256);)e<0&&l===0&&this[t+i-1]!==0&&(l=1),this[t+i]=(e/o>>0)-l&255;return t+r},ye.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var a=Math.pow(2,8*r-1);ht(this,e,t,r,a-1,-a)}var i=r-1,o=1,l=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&l===0&&this[t+i+1]!==0&&(l=1),this[t+i]=(e/o>>0)-l&255;return t+r},ye.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||ht(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},ye.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||ht(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},ye.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||ht(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},ye.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||ht(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},ye.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||ht(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},ye.prototype.writeFloatLE=function(e,t,r){return sc(this,e,t,!0,r)},ye.prototype.writeFloatBE=function(e,t,r){return sc(this,e,t,!1,r)},ye.prototype.writeDoubleLE=function(e,t,r){return ac(this,e,t,!0,r)},ye.prototype.writeDoubleBE=function(e,t,r){return ac(this,e,t,!1,r)},ye.prototype.copy=function(e,t,r,n){if(!ye.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||n===0||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var a=n-r;if(this===e&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(t,r,n);else if(this===e&&r<t&&t<n)for(var i=a-1;i>=0;--i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return a},ye.prototype.fill=function(e,t,r,n){if(typeof e=="string"){if(typeof t=="string"?(n=t,t=0,r=this.length):typeof r=="string"&&(n=r,r=this.length),n!==void 0&&typeof n!="string")throw new TypeError("encoding must be a string");if(typeof n=="string"&&!ye.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(e.length===1){var a=e.charCodeAt(0);(n==="utf8"&&a<128||n==="latin1")&&(e=a)}}else typeof e=="number"?e&=255:typeof e=="boolean"&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var i;if(t>>>=0,r=r===void 0?this.length:r>>>0,e||(e=0),typeof e=="number")for(i=t;i<r;++i)this[i]=e;else{var o=ye.isBuffer(e)?e:ye.from(e,n),l=o.length;if(l===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=o[i%l]}return this},rd=/[^+/0-9A-Za-z-_]/g,nd=function(){for(var e=new Array(256),t=0;t<16;++t)for(var r=16*t,n=0;n<16;++n)e[r+n]="0123456789abcdef"[t]+"0123456789abcdef"[n];return e}(),Wt.Buffer,Wt.INSPECT_MAX_BYTES,Wt.kMaxLength,Dn={},Fn=Wt,Lt=Fn.Buffer,Lt.from&&Lt.alloc&&Lt.allocUnsafe&&Lt.allocUnsafeSlow?Dn=Fn:(lc(Fn,Dn),Dn.Buffer=qr),qr.prototype=Object.create(Lt.prototype),lc(Lt,qr),qr.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return Lt(e,t,r)},qr.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=Lt(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n},qr.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Lt(e)},qr.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Fn.SlowBuffer(e)},dc=Dn,wn={},oo=dc.Buffer,Na=oo.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},wn.StringDecoder=Un,Un.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if((t=this.fillLast(e))===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""},Un.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},Un.prototype.text=function(e,t){var r=function(a,i,o){var l=i.length-1;if(l<o)return 0;var s=es(i[l]);return s>=0?(s>0&&(a.lastNeed=s-1),s):--l<o||s===-2?0:(s=es(i[l]))>=0?(s>0&&(a.lastNeed=s-2),s):--l<o||s===-2?0:(s=es(i[l]))>=0?(s>0&&(s===2?s=0:a.lastNeed=s-3),s):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},Un.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},wn.StringDecoder,wn.StringDecoder}),id={};hn(id,{StringDecoder:()=>od,default:()=>wn});var od,Yb=ot(()=>{pe(),me(),ge(),pc(),pc(),od=wn.StringDecoder}),sd=ve((e,t)=>{pe(),me(),ge();var r=dn(),{PromisePrototypeThen:n,SymbolAsyncIterator:a,SymbolIterator:i}=Xe(),{Buffer:o}=(at(),Ue(st)),{ERR_INVALID_ARG_TYPE:l,ERR_STREAM_NULL_VALUES:s}=vt().codes;function u(c,h,p){let m;if(typeof h=="string"||h instanceof o)return new c({objectMode:!0,...p,read(){this.push(h),this.push(null)}});let y;if(h&&h[a])y=!0,m=h[a]();else if(h&&h[i])y=!1,m=h[i]();else throw new l("iterable",["Iterable"],h);let b=new c({objectMode:!0,highWaterMark:1,...p}),O=!1;b._read=function(){O||(O=!0,P())},b._destroy=function(w,U){n(L(w),()=>r.nextTick(U,w),W=>r.nextTick(U,W||w))};async function L(w){let U=w!=null,W=typeof m.throw=="function";if(U&&W){let{value:R,done:x}=await m.throw(w);if(await R,x)return}if(typeof m.return=="function"){let{value:R}=await m.return();await R}}async function P(){for(;;){try{let{value:w,done:U}=y?await m.next():m.next();if(U)b.push(null);else{let W=w&&typeof w.then=="function"?await w:w;if(W===null)throw O=!1,new s;if(b.push(W))continue;O=!1}}catch(w){b.destroy(w)}break}}return b}t.exports=u}),Po=ve((e,t)=>{pe(),me(),ge();var r=dn(),{ArrayPrototypeIndexOf:n,NumberIsInteger:a,NumberIsNaN:i,NumberParseInt:o,ObjectDefineProperties:l,ObjectKeys:s,ObjectSetPrototypeOf:u,Promise:c,SafeSet:h,SymbolAsyncIterator:p,Symbol:m}=Xe();t.exports=A,A.ReadableState=be;var{EventEmitter:y}=(Bn(),Ue(pn)),{Stream:b,prependListener:O}=Pl(),{Buffer:L}=(at(),Ue(st)),{addAbortSignal:P}=Oo(),w=jr(),U=ar().debuglog("stream",f=>{U=f}),W=Cb(),R=xn(),{getHighWaterMark:x,getDefaultHighWaterMark:j}=kl(),{aggregateTwoErrors:F,codes:{ERR_INVALID_ARG_TYPE:X,ERR_METHOD_NOT_IMPLEMENTED:Z,ERR_OUT_OF_RANGE:S,ERR_STREAM_PUSH_AFTER_EOF:z,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:ae}}=vt(),{validateObject:te}=Co(),le=m("kPaused"),{StringDecoder:ne}=(Yb(),Ue(id)),G=sd();u(A.prototype,b.prototype),u(A,b);var de=()=>{},{errorOrDestroy:ce}=R;function be(f,g,_){typeof _!="boolean"&&(_=g instanceof lr()),this.objectMode=!!(f&&f.objectMode),_&&(this.objectMode=this.objectMode||!!(f&&f.readableObjectMode)),this.highWaterMark=f?x(this,f,"readableHighWaterMark",_):j(!1),this.buffer=new W,this.length=0,this.pipes=[],this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.constructed=!0,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this[le]=null,this.errorEmitted=!1,this.emitClose=!f||f.emitClose!==!1,this.autoDestroy=!f||f.autoDestroy!==!1,this.destroyed=!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this.defaultEncoding=f&&f.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.multiAwaitDrain=!1,this.readingMore=!1,this.dataEmitted=!1,this.decoder=null,this.encoding=null,f&&f.encoding&&(this.decoder=new ne(f.encoding),this.encoding=f.encoding)}function A(f){if(!(this instanceof A))return new A(f);let g=this instanceof lr();this._readableState=new be(f,this,g),f&&(typeof f.read=="function"&&(this._read=f.read),typeof f.destroy=="function"&&(this._destroy=f.destroy),typeof f.construct=="function"&&(this._construct=f.construct),f.signal&&!g&&P(f.signal,this)),b.call(this,f),R.construct(this,()=>{this._readableState.needReadable&&oe(this,this._readableState)})}A.prototype.destroy=R.destroy,A.prototype._undestroy=R.undestroy,A.prototype._destroy=function(f,g){g(f)},A.prototype[y.captureRejectionSymbol]=function(f){this.destroy(f)},A.prototype.push=function(f,g){return ie(this,f,g,!1)},A.prototype.unshift=function(f,g){return ie(this,f,g,!0)};function ie(f,g,_,D){U("readableAddChunk",g);let Q=f._readableState,ue;if(Q.objectMode||(typeof g=="string"?(_=_||Q.defaultEncoding,Q.encoding!==_&&(D&&Q.encoding?g=L.from(g,_).toString(Q.encoding):(g=L.from(g,_),_=""))):g instanceof L?_="":b._isUint8Array(g)?(g=b._uint8ArrayToBuffer(g),_=""):g!=null&&(ue=new X("chunk",["string","Buffer","Uint8Array"],g))),ue)ce(f,ue);else if(g===null)Q.reading=!1,I(f,Q);else if(Q.objectMode||g&&g.length>0)if(D)if(Q.endEmitted)ce(f,new ae);else{if(Q.destroyed||Q.errored)return!1;he(f,Q,g,!0)}else if(Q.ended)ce(f,new z);else{if(Q.destroyed||Q.errored)return!1;Q.reading=!1,Q.decoder&&!_?(g=Q.decoder.write(g),Q.objectMode||g.length!==0?he(f,Q,g,!1):oe(f,Q)):he(f,Q,g,!1)}else D||(Q.reading=!1,oe(f,Q));return!Q.ended&&(Q.length<Q.highWaterMark||Q.length===0)}function he(f,g,_,D){g.flowing&&g.length===0&&!g.sync&&f.listenerCount("data")>0?(g.multiAwaitDrain?g.awaitDrainWriters.clear():g.awaitDrainWriters=null,g.dataEmitted=!0,f.emit("data",_)):(g.length+=g.objectMode?1:_.length,D?g.buffer.unshift(_):g.buffer.push(_),g.needReadable&&K(f)),oe(f,g)}A.prototype.isPaused=function(){let f=this._readableState;return f[le]===!0||f.flowing===!1},A.prototype.setEncoding=function(f){let g=new ne(f);this._readableState.decoder=g,this._readableState.encoding=this._readableState.decoder.encoding;let _=this._readableState.buffer,D="";for(let Q of _)D+=g.write(Q);return _.clear(),D!==""&&_.push(D),this._readableState.length=D.length,this};var we=1073741824;function fe(f){if(f>we)throw new S("size","<= 1GiB",f);return f--,f|=f>>>1,f|=f>>>2,f|=f>>>4,f|=f>>>8,f|=f>>>16,f++,f}function E(f,g){return f<=0||g.length===0&&g.ended?0:g.objectMode?1:i(f)?g.flowing&&g.length?g.buffer.first().length:g.length:f<=g.length?f:g.ended?g.length:0}A.prototype.read=function(f){U("read",f),f===void 0?f=NaN:a(f)||(f=o(f,10));let g=this._readableState,_=f;if(f>g.highWaterMark&&(g.highWaterMark=fe(f)),f!==0&&(g.emittedReadable=!1),f===0&&g.needReadable&&((g.highWaterMark!==0?g.length>=g.highWaterMark:g.length>0)||g.ended))return U("read: emitReadable",g.length,g.ended),g.length===0&&g.ended?C(this):K(this),null;if(f=E(f,g),f===0&&g.ended)return g.length===0&&C(this),null;let D=g.needReadable;if(U("need readable",D),(g.length===0||g.length-f<g.highWaterMark)&&(D=!0,U("length less than watermark",D)),g.ended||g.reading||g.destroyed||g.errored||!g.constructed)D=!1,U("reading, ended or constructing",D);else if(D){U("do read"),g.reading=!0,g.sync=!0,g.length===0&&(g.needReadable=!0);try{this._read(g.highWaterMark)}catch(ue){ce(this,ue)}g.sync=!1,g.reading||(f=E(_,g))}let Q;return f>0?Q=H(f,g):Q=null,Q===null?(g.needReadable=g.length<=g.highWaterMark,f=0):(g.length-=f,g.multiAwaitDrain?g.awaitDrainWriters.clear():g.awaitDrainWriters=null),g.length===0&&(g.ended||(g.needReadable=!0),_!==f&&g.ended&&C(this)),Q!==null&&!g.errorEmitted&&!g.closeEmitted&&(g.dataEmitted=!0,this.emit("data",Q)),Q};function I(f,g){if(U("onEofChunk"),!g.ended){if(g.decoder){let _=g.decoder.end();_&&_.length&&(g.buffer.push(_),g.length+=g.objectMode?1:_.length)}g.ended=!0,g.sync?K(f):(g.needReadable=!1,g.emittedReadable=!0,re(f))}}function K(f){let g=f._readableState;U("emitReadable",g.needReadable,g.emittedReadable),g.needReadable=!1,g.emittedReadable||(U("emitReadable",g.flowing),g.emittedReadable=!0,r.nextTick(re,f))}function re(f){let g=f._readableState;U("emitReadable_",g.destroyed,g.length,g.ended),!g.destroyed&&!g.errored&&(g.length||g.ended)&&(f.emit("readable"),g.emittedReadable=!1),g.needReadable=!g.flowing&&!g.ended&&g.length<=g.highWaterMark,Y(f)}function oe(f,g){!g.readingMore&&g.constructed&&(g.readingMore=!0,r.nextTick(se,f,g))}function se(f,g){for(;!g.reading&&!g.ended&&(g.length<g.highWaterMark||g.flowing&&g.length===0);){let _=g.length;if(U("maybeReadMore read 0"),f.read(0),_===g.length)break}g.readingMore=!1}A.prototype._read=function(f){throw new Z("_read()")},A.prototype.pipe=function(f,g){let _=this,D=this._readableState;D.pipes.length===1&&(D.multiAwaitDrain||(D.multiAwaitDrain=!0,D.awaitDrainWriters=new h(D.awaitDrainWriters?[D.awaitDrainWriters]:[]))),D.pipes.push(f),U("pipe count=%d opts=%j",D.pipes.length,g);let Q=(!g||g.end!==!1)&&f!==r.stdout&&f!==r.stderr?Ae:it;D.endEmitted?r.nextTick(Q):_.once("end",Q),f.on("unpipe",ue);function ue(ct,et){U("onunpipe"),ct===_&&et&&et.hasUnpiped===!1&&(et.hasUnpiped=!0,_e())}function Ae(){U("onend"),f.end()}let Oe,Pe=!1;function _e(){U("cleanup"),f.removeListener("close",Ze),f.removeListener("finish",Ge),Oe&&f.removeListener("drain",Oe),f.removeListener("error",De),f.removeListener("unpipe",ue),_.removeListener("end",Ae),_.removeListener("end",it),_.removeListener("data",Ce),Pe=!0,Oe&&D.awaitDrainWriters&&(!f._writableState||f._writableState.needDrain)&&Oe()}function Se(){Pe||(D.pipes.length===1&&D.pipes[0]===f?(U("false write response, pause",0),D.awaitDrainWriters=f,D.multiAwaitDrain=!1):D.pipes.length>1&&D.pipes.includes(f)&&(U("false write response, pause",D.awaitDrainWriters.size),D.awaitDrainWriters.add(f)),_.pause()),Oe||(Oe=T(_,f),f.on("drain",Oe))}_.on("data",Ce);function Ce(ct){U("ondata");let et=f.write(ct);U("dest.write",et),et===!1&&Se()}function De(ct){if(U("onerror",ct),it(),f.removeListener("error",De),f.listenerCount("error")===0){let et=f._writableState||f._readableState;et&&!et.errorEmitted?ce(f,ct):f.emit("error",ct)}}O(f,"error",De);function Ze(){f.removeListener("finish",Ge),it()}f.once("close",Ze);function Ge(){U("onfinish"),f.removeListener("close",Ze),it()}f.once("finish",Ge);function it(){U("unpipe"),_.unpipe(f)}return f.emit("pipe",_),f.writableNeedDrain===!0?D.flowing&&Se():D.flowing||(U("pipe resume"),_.resume()),f};function T(f,g){return function(){let _=f._readableState;_.awaitDrainWriters===g?(U("pipeOnDrain",1),_.awaitDrainWriters=null):_.multiAwaitDrain&&(U("pipeOnDrain",_.awaitDrainWriters.size),_.awaitDrainWriters.delete(g)),(!_.awaitDrainWriters||_.awaitDrainWriters.size===0)&&f.listenerCount("data")&&f.resume()}}A.prototype.unpipe=function(f){let g=this._readableState,_={hasUnpiped:!1};if(g.pipes.length===0)return this;if(!f){let Q=g.pipes;g.pipes=[],this.pause();for(let ue=0;ue<Q.length;ue++)Q[ue].emit("unpipe",this,{hasUnpiped:!1});return this}let D=n(g.pipes,f);return D===-1?this:(g.pipes.splice(D,1),g.pipes.length===0&&this.pause(),f.emit("unpipe",this,_),this)},A.prototype.on=function(f,g){let _=b.prototype.on.call(this,f,g),D=this._readableState;return f==="data"?(D.readableListening=this.listenerCount("readable")>0,D.flowing!==!1&&this.resume()):f==="readable"&&!D.endEmitted&&!D.readableListening&&(D.readableListening=D.needReadable=!0,D.flowing=!1,D.emittedReadable=!1,U("on readable",D.length,D.reading),D.length?K(this):D.reading||r.nextTick(v,this)),_},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(f,g){let _=b.prototype.removeListener.call(this,f,g);return f==="readable"&&r.nextTick(k,this),_},A.prototype.off=A.prototype.removeListener,A.prototype.removeAllListeners=function(f){let g=b.prototype.removeAllListeners.apply(this,arguments);return(f==="readable"||f===void 0)&&r.nextTick(k,this),g};function k(f){let g=f._readableState;g.readableListening=f.listenerCount("readable")>0,g.resumeScheduled&&g[le]===!1?g.flowing=!0:f.listenerCount("data")>0?f.resume():g.readableListening||(g.flowing=null)}function v(f){U("readable nexttick read 0"),f.read(0)}A.prototype.resume=function(){let f=this._readableState;return f.flowing||(U("resume"),f.flowing=!f.readableListening,N(this,f)),f[le]=!1,this};function N(f,g){g.resumeScheduled||(g.resumeScheduled=!0,r.nextTick(B,f,g))}function B(f,g){U("resume",g.reading),g.reading||f.read(0),g.resumeScheduled=!1,f.emit("resume"),Y(f),g.flowing&&!g.reading&&f.read(0)}A.prototype.pause=function(){return U("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(U("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[le]=!0,this};function Y(f){let g=f._readableState;for(U("flow",g.flowing);g.flowing&&f.read()!==null;);}A.prototype.wrap=function(f){let g=!1;f.on("data",D=>{!this.push(D)&&f.pause&&(g=!0,f.pause())}),f.on("end",()=>{this.push(null)}),f.on("error",D=>{ce(this,D)}),f.on("close",()=>{this.destroy()}),f.on("destroy",()=>{this.destroy()}),this._read=()=>{g&&f.resume&&(g=!1,f.resume())};let _=s(f);for(let D=1;D<_.length;D++){let Q=_[D];this[Q]===void 0&&typeof f[Q]=="function"&&(this[Q]=f[Q].bind(f))}return this},A.prototype[p]=function(){return J(this)},A.prototype.iterator=function(f){return f!==void 0&&te(f,"options"),J(this,f)};function J(f,g){typeof f.read!="function"&&(f=A.wrap(f,{objectMode:!0}));let _=M(f,g);return _.stream=f,_}async function*M(f,g){let _=de;function D(Ae){this===f?(_(),_=de):_=Ae}f.on("readable",D);let Q,ue=w(f,{writable:!1},Ae=>{Q=Ae?F(Q,Ae):null,_(),_=de});try{for(;;){let Ae=f.destroyed?null:f.read();if(Ae!==null)yield Ae;else{if(Q)throw Q;if(Q===null)return;await new c(D)}}}catch(Ae){throw Q=F(Q,Ae),Q}finally{(Q||(g==null?void 0:g.destroyOnReturn)!==!1)&&(Q===void 0||f._readableState.autoDestroy)?R.destroyer(f,null):(f.off("readable",D),ue())}}l(A.prototype,{readable:{__proto__:null,get(){let f=this._readableState;return!!f&&f.readable!==!1&&!f.destroyed&&!f.errorEmitted&&!f.endEmitted},set(f){this._readableState&&(this._readableState.readable=!!f)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(f){this._readableState&&(this._readableState.flowing=f)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(f){this._readableState&&(this._readableState.destroyed=f)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),l(be.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[le]!==!1},set(f){this[le]=!!f}}}),A._fromList=H;function H(f,g){if(g.length===0)return null;let _;return g.objectMode?_=g.buffer.shift():!f||f>=g.length?(g.decoder?_=g.buffer.join(""):g.buffer.length===1?_=g.buffer.first():_=g.buffer.concat(g.length),g.buffer.clear()):_=g.buffer.consume(f,g.decoder),_}function C(f){let g=f._readableState;U("endReadable",g.endEmitted),g.endEmitted||(g.ended=!0,r.nextTick($,g,f))}function $(f,g){if(U("endReadableNT",f.endEmitted,f.length),!f.errored&&!f.closeEmitted&&!f.endEmitted&&f.length===0){if(f.endEmitted=!0,g.emit("end"),g.writable&&g.allowHalfOpen===!1)r.nextTick(q,g);else if(f.autoDestroy){let _=g._writableState;(!_||_.autoDestroy&&(_.finished||_.writable===!1))&&g.destroy()}}}function q(f){f.writable&&!f.writableEnded&&!f.destroyed&&f.end()}A.from=function(f,g){return G(A,f,g)};var ee;function d(){return ee===void 0&&(ee={}),ee}A.fromWeb=function(f,g){return d().newStreamReadableFromReadableStream(f,g)},A.toWeb=function(f,g){return d().newReadableStreamFromStreamReadable(f,g)},A.wrap=function(f,g){var _,D;return new A({objectMode:(_=(D=f.readableObjectMode)!==null&&D!==void 0?D:f.objectMode)!==null&&_!==void 0?_:!0,...g,destroy(Q,ue){R.destroyer(f,Q),ue(Q)}}).wrap(f)}}),ad=ve((e,t)=>{pe(),me(),ge();var r=dn(),{ArrayPrototypeSlice:n,Error:a,FunctionPrototypeSymbolHasInstance:i,ObjectDefineProperty:o,ObjectDefineProperties:l,ObjectSetPrototypeOf:s,StringPrototypeToLowerCase:u,Symbol:c,SymbolHasInstance:h}=Xe();t.exports=ne,ne.WritableState=te;var{EventEmitter:p}=(Bn(),Ue(pn)),m=Pl().Stream,{Buffer:y}=(at(),Ue(st)),b=xn(),{addAbortSignal:O}=Oo(),{getHighWaterMark:L,getDefaultHighWaterMark:P}=kl(),{ERR_INVALID_ARG_TYPE:w,ERR_METHOD_NOT_IMPLEMENTED:U,ERR_MULTIPLE_CALLBACK:W,ERR_STREAM_CANNOT_PIPE:R,ERR_STREAM_DESTROYED:x,ERR_STREAM_ALREADY_FINISHED:j,ERR_STREAM_NULL_VALUES:F,ERR_STREAM_WRITE_AFTER_END:X,ERR_UNKNOWN_ENCODING:Z}=vt().codes,{errorOrDestroy:S}=b;s(ne.prototype,m.prototype),s(ne,m);function z(){}var ae=c("kOnFinished");function te(v,N,B){typeof B!="boolean"&&(B=N instanceof lr()),this.objectMode=!!(v&&v.objectMode),B&&(this.objectMode=this.objectMode||!!(v&&v.writableObjectMode)),this.highWaterMark=v?L(this,v,"writableHighWaterMark",B):P(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let Y=!!(v&&v.decodeStrings===!1);this.decodeStrings=!Y,this.defaultEncoding=v&&v.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=A.bind(void 0,N),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,le(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!v||v.emitClose!==!1,this.autoDestroy=!v||v.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[ae]=[]}function le(v){v.buffered=[],v.bufferedIndex=0,v.allBuffers=!0,v.allNoop=!0}te.prototype.getBuffer=function(){return n(this.buffered,this.bufferedIndex)},o(te.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function ne(v){let N=this instanceof lr();if(!N&&!i(ne,this))return new ne(v);this._writableState=new te(v,this,N),v&&(typeof v.write=="function"&&(this._write=v.write),typeof v.writev=="function"&&(this._writev=v.writev),typeof v.destroy=="function"&&(this._destroy=v.destroy),typeof v.final=="function"&&(this._final=v.final),typeof v.construct=="function"&&(this._construct=v.construct),v.signal&&O(v.signal,this)),m.call(this,v),b.construct(this,()=>{let B=this._writableState;B.writing||fe(this,B),re(this,B)})}o(ne,h,{__proto__:null,value:function(v){return i(this,v)?!0:this!==ne?!1:v&&v._writableState instanceof te}}),ne.prototype.pipe=function(){S(this,new R)};function G(v,N,B,Y){let J=v._writableState;if(typeof B=="function")Y=B,B=J.defaultEncoding;else{if(!B)B=J.defaultEncoding;else if(B!=="buffer"&&!y.isEncoding(B))throw new Z(B);typeof Y!="function"&&(Y=z)}if(N===null)throw new F;if(!J.objectMode)if(typeof N=="string")J.decodeStrings!==!1&&(N=y.from(N,B),B="buffer");else if(N instanceof y)B="buffer";else if(m._isUint8Array(N))N=m._uint8ArrayToBuffer(N),B="buffer";else throw new w("chunk",["string","Buffer","Uint8Array"],N);let M;return J.ending?M=new X:J.destroyed&&(M=new x("write")),M?(r.nextTick(Y,M),S(v,M,!0),M):(J.pendingcb++,de(v,J,N,B,Y))}ne.prototype.write=function(v,N,B){return G(this,v,N,B)===!0},ne.prototype.cork=function(){this._writableState.corked++},ne.prototype.uncork=function(){let v=this._writableState;v.corked&&(v.corked--,v.writing||fe(this,v))},ne.prototype.setDefaultEncoding=function(v){if(typeof v=="string"&&(v=u(v)),!y.isEncoding(v))throw new Z(v);return this._writableState.defaultEncoding=v,this};function de(v,N,B,Y,J){let M=N.objectMode?1:B.length;N.length+=M;let H=N.length<N.highWaterMark;return H||(N.needDrain=!0),N.writing||N.corked||N.errored||!N.constructed?(N.buffered.push({chunk:B,encoding:Y,callback:J}),N.allBuffers&&Y!=="buffer"&&(N.allBuffers=!1),N.allNoop&&J!==z&&(N.allNoop=!1)):(N.writelen=M,N.writecb=J,N.writing=!0,N.sync=!0,v._write(B,Y,N.onwrite),N.sync=!1),H&&!N.errored&&!N.destroyed}function ce(v,N,B,Y,J,M,H){N.writelen=Y,N.writecb=H,N.writing=!0,N.sync=!0,N.destroyed?N.onwrite(new x("write")):B?v._writev(J,N.onwrite):v._write(J,M,N.onwrite),N.sync=!1}function be(v,N,B,Y){--N.pendingcb,Y(B),we(N),S(v,B)}function A(v,N){let B=v._writableState,Y=B.sync,J=B.writecb;if(typeof J!="function"){S(v,new W);return}B.writing=!1,B.writecb=null,B.length-=B.writelen,B.writelen=0,N?(N.stack,B.errored||(B.errored=N),v._readableState&&!v._readableState.errored&&(v._readableState.errored=N),Y?r.nextTick(be,v,B,N,J):be(v,B,N,J)):(B.buffered.length>B.bufferedIndex&&fe(v,B),Y?B.afterWriteTickInfo!==null&&B.afterWriteTickInfo.cb===J?B.afterWriteTickInfo.count++:(B.afterWriteTickInfo={count:1,cb:J,stream:v,state:B},r.nextTick(ie,B.afterWriteTickInfo)):he(v,B,1,J))}function ie({stream:v,state:N,count:B,cb:Y}){return N.afterWriteTickInfo=null,he(v,N,B,Y)}function he(v,N,B,Y){for(!N.ending&&!v.destroyed&&N.length===0&&N.needDrain&&(N.needDrain=!1,v.emit("drain"));B-- >0;)N.pendingcb--,Y();N.destroyed&&we(N),re(v,N)}function we(v){if(v.writing)return;for(let J=v.bufferedIndex;J<v.buffered.length;++J){var N;let{chunk:M,callback:H}=v.buffered[J],C=v.objectMode?1:M.length;v.length-=C,H((N=v.errored)!==null&&N!==void 0?N:new x("write"))}let B=v[ae].splice(0);for(let J=0;J<B.length;J++){var Y;B[J]((Y=v.errored)!==null&&Y!==void 0?Y:new x("end"))}le(v)}function fe(v,N){if(N.corked||N.bufferProcessing||N.destroyed||!N.constructed)return;let{buffered:B,bufferedIndex:Y,objectMode:J}=N,M=B.length-Y;if(!M)return;let H=Y;if(N.bufferProcessing=!0,M>1&&v._writev){N.pendingcb-=M-1;let C=N.allNoop?z:q=>{for(let ee=H;ee<B.length;++ee)B[ee].callback(q)},$=N.allNoop&&H===0?B:n(B,H);$.allBuffers=N.allBuffers,ce(v,N,!0,N.length,$,"",C),le(N)}else{do{let{chunk:C,encoding:$,callback:q}=B[H];B[H++]=null;let ee=J?1:C.length;ce(v,N,!1,ee,C,$,q)}while(H<B.length&&!N.writing);H===B.length?le(N):H>256?(B.splice(0,H),N.bufferedIndex=0):N.bufferedIndex=H}N.bufferProcessing=!1}ne.prototype._write=function(v,N,B){if(this._writev)this._writev([{chunk:v,encoding:N}],B);else throw new U("_write()")},ne.prototype._writev=null,ne.prototype.end=function(v,N,B){let Y=this._writableState;typeof v=="function"?(B=v,v=null,N=null):typeof N=="function"&&(B=N,N=null);let J;if(v!=null){let M=G(this,v,N);M instanceof a&&(J=M)}return Y.corked&&(Y.corked=1,this.uncork()),J||(!Y.errored&&!Y.ending?(Y.ending=!0,re(this,Y,!0),Y.ended=!0):Y.finished?J=new j("end"):Y.destroyed&&(J=new x("end"))),typeof B=="function"&&(J||Y.finished?r.nextTick(B,J):Y[ae].push(B)),this};function E(v){return v.ending&&!v.destroyed&&v.constructed&&v.length===0&&!v.errored&&v.buffered.length===0&&!v.finished&&!v.writing&&!v.errorEmitted&&!v.closeEmitted}function I(v,N){let B=!1;function Y(J){if(B){S(v,J??W());return}if(B=!0,N.pendingcb--,J){let M=N[ae].splice(0);for(let H=0;H<M.length;H++)M[H](J);S(v,J,N.sync)}else E(N)&&(N.prefinished=!0,v.emit("prefinish"),N.pendingcb++,r.nextTick(oe,v,N))}N.sync=!0,N.pendingcb++;try{v._final(Y)}catch(J){Y(J)}N.sync=!1}function K(v,N){!N.prefinished&&!N.finalCalled&&(typeof v._final=="function"&&!N.destroyed?(N.finalCalled=!0,I(v,N)):(N.prefinished=!0,v.emit("prefinish")))}function re(v,N,B){E(N)&&(K(v,N),N.pendingcb===0&&(B?(N.pendingcb++,r.nextTick((Y,J)=>{E(J)?oe(Y,J):J.pendingcb--},v,N)):E(N)&&(N.pendingcb++,oe(v,N))))}function oe(v,N){N.pendingcb--,N.finished=!0;let B=N[ae].splice(0);for(let Y=0;Y<B.length;Y++)B[Y]();if(v.emit("finish"),N.autoDestroy){let Y=v._readableState;(!Y||Y.autoDestroy&&(Y.endEmitted||Y.readable===!1))&&v.destroy()}}l(ne.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(v){this._writableState&&(this._writableState.destroyed=v)}},writable:{__proto__:null,get(){let v=this._writableState;return!!v&&v.writable!==!1&&!v.destroyed&&!v.errored&&!v.ending&&!v.ended},set(v){this._writableState&&(this._writableState.writable=!!v)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){let v=this._writableState;return v?!v.destroyed&&!v.ending&&v.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});var se=b.destroy;ne.prototype.destroy=function(v,N){let B=this._writableState;return!B.destroyed&&(B.bufferedIndex<B.buffered.length||B[ae].length)&&r.nextTick(we,B),se.call(this,v,N),this},ne.prototype._undestroy=b.undestroy,ne.prototype._destroy=function(v,N){N(v)},ne.prototype[p.captureRejectionSymbol]=function(v){this.destroy(v)};var T;function k(){return T===void 0&&(T={}),T}ne.fromWeb=function(v,N){return k().newStreamWritableFromWritableStream(v,N)},ne.toWeb=function(v){return k().newWritableStreamFromStreamWritable(v)}}),Gb=ve((e,t)=>{pe(),me(),ge();var r=dn(),n=(at(),Ue(st)),{isReadable:a,isWritable:i,isIterable:o,isNodeStream:l,isReadableNodeStream:s,isWritableNodeStream:u,isDuplexNodeStream:c}=hr(),h=jr(),{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:m,ERR_INVALID_RETURN_VALUE:y}}=vt(),{destroyer:b}=xn(),O=lr(),L=Po(),{createDeferredPromise:P}=ar(),w=sd(),U=globalThis.Blob||n.Blob,W=typeof U<"u"?function(Z){return Z instanceof U}:function(Z){return!1},R=globalThis.AbortController||Rl().AbortController,{FunctionPrototypeCall:x}=Xe(),j=class extends O{constructor(Z){super(Z),(Z==null?void 0:Z.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(Z==null?void 0:Z.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}};t.exports=function Z(S,z){if(c(S))return S;if(s(S))return X({readable:S});if(u(S))return X({writable:S});if(l(S))return X({writable:!1,readable:!1});if(typeof S=="function"){let{value:te,write:le,final:ne,destroy:G}=F(S);if(o(te))return w(j,te,{objectMode:!0,write:le,final:ne,destroy:G});let de=te==null?void 0:te.then;if(typeof de=="function"){let ce,be=x(de,te,A=>{if(A!=null)throw new y("nully","body",A)},A=>{b(ce,A)});return ce=new j({objectMode:!0,readable:!1,write:le,final(A){ne(async()=>{try{await be,r.nextTick(A,null)}catch(ie){r.nextTick(A,ie)}})},destroy:G})}throw new y("Iterable, AsyncIterable or AsyncFunction",z,te)}if(W(S))return Z(S.arrayBuffer());if(o(S))return w(j,S,{objectMode:!0,writable:!1});if(typeof(S==null?void 0:S.writable)=="object"||typeof(S==null?void 0:S.readable)=="object"){let te=S!=null&&S.readable?s(S==null?void 0:S.readable)?S==null?void 0:S.readable:Z(S.readable):void 0,le=S!=null&&S.writable?u(S==null?void 0:S.writable)?S==null?void 0:S.writable:Z(S.writable):void 0;return X({readable:te,writable:le})}let ae=S==null?void 0:S.then;if(typeof ae=="function"){let te;return x(ae,S,le=>{le!=null&&te.push(le),te.push(null)},le=>{b(te,le)}),te=new j({objectMode:!0,writable:!1,read(){}})}throw new m(z,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],S)};function F(Z){let{promise:S,resolve:z}=P(),ae=new R,te=ae.signal;return{value:Z(async function*(){for(;;){let le=S;S=null;let{chunk:ne,done:G,cb:de}=await le;if(r.nextTick(de),G)return;if(te.aborted)throw new p(void 0,{cause:te.reason});({promise:S,resolve:z}=P()),yield ne}}(),{signal:te}),write(le,ne,G){let de=z;z=null,de({chunk:le,done:!1,cb:G})},final(le){let ne=z;z=null,ne({done:!0,cb:le})},destroy(le,ne){ae.abort(),ne(le)}}}function X(Z){let S=Z.readable&&typeof Z.readable.read!="function"?L.wrap(Z.readable):Z.readable,z=Z.writable,ae=!!a(S),te=!!i(z),le,ne,G,de,ce;function be(A){let ie=de;de=null,ie?ie(A):A&&ce.destroy(A)}return ce=new j({readableObjectMode:!!(S!=null&&S.readableObjectMode),writableObjectMode:!!(z!=null&&z.writableObjectMode),readable:ae,writable:te}),te&&(h(z,A=>{te=!1,A&&b(S,A),be(A)}),ce._write=function(A,ie,he){z.write(A,ie)?he():le=he},ce._final=function(A){z.end(),ne=A},z.on("drain",function(){if(le){let A=le;le=null,A()}}),z.on("finish",function(){if(ne){let A=ne;ne=null,A()}})),ae&&(h(S,A=>{ae=!1,A&&b(S,A),be(A)}),S.on("readable",function(){if(G){let A=G;G=null,A()}}),S.on("end",function(){ce.push(null)}),ce._read=function(){for(;;){let A=S.read();if(A===null){G=ce._read;return}if(!ce.push(A))return}}),ce._destroy=function(A,ie){!A&&de!==null&&(A=new p),G=null,le=null,ne=null,de===null?ie(A):(de=ie,b(z,A),b(S,A))},ce}}),lr=ve((e,t)=>{pe(),me(),ge();var{ObjectDefineProperties:r,ObjectGetOwnPropertyDescriptor:n,ObjectKeys:a,ObjectSetPrototypeOf:i}=Xe();t.exports=s;var o=Po(),l=ad();i(s.prototype,o.prototype),i(s,o);{let p=a(l.prototype);for(let m=0;m<p.length;m++){let y=p[m];s.prototype[y]||(s.prototype[y]=l.prototype[y])}}function s(p){if(!(this instanceof s))return new s(p);o.call(this,p),l.call(this,p),p?(this.allowHalfOpen=p.allowHalfOpen!==!1,p.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),p.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}r(s.prototype,{writable:{__proto__:null,...n(l.prototype,"writable")},writableHighWaterMark:{__proto__:null,...n(l.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...n(l.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...n(l.prototype,"writableBuffer")},writableLength:{__proto__:null,...n(l.prototype,"writableLength")},writableFinished:{__proto__:null,...n(l.prototype,"writableFinished")},writableCorked:{__proto__:null,...n(l.prototype,"writableCorked")},writableEnded:{__proto__:null,...n(l.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...n(l.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(p){this._readableState&&this._writableState&&(this._readableState.destroyed=p,this._writableState.destroyed=p)}}});var u;function c(){return u===void 0&&(u={}),u}s.fromWeb=function(p,m){return c().newStreamDuplexFromReadableWritablePair(p,m)},s.toWeb=function(p){return c().newReadableWritablePairFromDuplex(p)};var h;s.from=function(p){return h||(h=Gb()),h(p,"body")}}),ld=ve((e,t)=>{pe(),me(),ge();var{ObjectSetPrototypeOf:r,Symbol:n}=Xe();t.exports=s;var{ERR_METHOD_NOT_IMPLEMENTED:a}=vt().codes,i=lr(),{getHighWaterMark:o}=kl();r(s.prototype,i.prototype),r(s,i);var l=n("kCallback");function s(h){if(!(this instanceof s))return new s(h);let p=h?o(this,h,"readableHighWaterMark",!0):null;p===0&&(h={...h,highWaterMark:null,readableHighWaterMark:p,writableHighWaterMark:h.writableHighWaterMark||0}),i.call(this,h),this._readableState.sync=!1,this[l]=null,h&&(typeof h.transform=="function"&&(this._transform=h.transform),typeof h.flush=="function"&&(this._flush=h.flush)),this.on("prefinish",c)}function u(h){typeof this._flush=="function"&&!this.destroyed?this._flush((p,m)=>{if(p){h?h(p):this.destroy(p);return}m!=null&&this.push(m),this.push(null),h&&h()}):(this.push(null),h&&h())}function c(){this._final!==u&&u.call(this)}s.prototype._final=u,s.prototype._transform=function(h,p,m){throw new a("_transform()")},s.prototype._write=function(h,p,m){let y=this._readableState,b=this._writableState,O=y.length;this._transform(h,p,(L,P)=>{if(L){m(L);return}P!=null&&this.push(P),b.ended||O===y.length||y.length<y.highWaterMark?m():this[l]=m})},s.prototype._read=function(){if(this[l]){let h=this[l];this[l]=null,h()}}}),ud=ve((e,t)=>{pe(),me(),ge();var{ObjectSetPrototypeOf:r}=Xe();t.exports=a;var n=ld();r(a.prototype,n.prototype),r(a,n);function a(i){if(!(this instanceof a))return new a(i);n.call(this,i)}a.prototype._transform=function(i,o,l){l(null,i)}}),Ml=ve((e,t)=>{pe(),me(),ge();var r=dn(),{ArrayIsArray:n,Promise:a,SymbolAsyncIterator:i}=Xe(),o=jr(),{once:l}=ar(),s=xn(),u=lr(),{aggregateTwoErrors:c,codes:{ERR_INVALID_ARG_TYPE:h,ERR_INVALID_RETURN_VALUE:p,ERR_MISSING_ARGS:m,ERR_STREAM_DESTROYED:y,ERR_STREAM_PREMATURE_CLOSE:b},AbortError:O}=vt(),{validateFunction:L,validateAbortSignal:P}=Co(),{isIterable:w,isReadable:U,isReadableNodeStream:W,isNodeStream:R,isTransformStream:x,isWebStream:j,isReadableStream:F,isReadableEnded:X}=hr(),Z=globalThis.AbortController||Rl().AbortController,S,z;function ae(ie,he,we){let fe=!1;ie.on("close",()=>{fe=!0});let E=o(ie,{readable:he,writable:we},I=>{fe=!I});return{destroy:I=>{fe||(fe=!0,s.destroyer(ie,I||new y("pipe")))},cleanup:E}}function te(ie){return L(ie[ie.length-1],"streams[stream.length - 1]"),ie.pop()}function le(ie){if(w(ie))return ie;if(W(ie))return ne(ie);throw new h("val",["Readable","Iterable","AsyncIterable"],ie)}async function*ne(ie){z||(z=Po()),yield*z.prototype[i].call(ie)}async function G(ie,he,we,{end:fe}){let E,I=null,K=se=>{if(se&&(E=se),I){let T=I;I=null,T()}},re=()=>new a((se,T)=>{E?T(E):I=()=>{E?T(E):se()}});he.on("drain",K);let oe=o(he,{readable:!1},K);try{he.writableNeedDrain&&await re();for await(let se of ie)he.write(se)||await re();fe&&he.end(),await re(),we()}catch(se){we(E!==se?c(E,se):se)}finally{oe(),he.off("drain",K)}}async function de(ie,he,we,{end:fe}){x(he)&&(he=he.writable);let E=he.getWriter();try{for await(let I of ie)await E.ready,E.write(I).catch(()=>{});await E.ready,fe&&await E.close(),we()}catch(I){try{await E.abort(I),we(I)}catch(K){we(K)}}}function ce(...ie){return be(ie,l(te(ie)))}function be(ie,he,we){if(ie.length===1&&n(ie[0])&&(ie=ie[0]),ie.length<2)throw new m("streams");let fe=new Z,E=fe.signal,I=we==null?void 0:we.signal,K=[];P(I,"options.signal");function re(){N(new O)}I==null||I.addEventListener("abort",re);let oe,se,T=[],k=0;function v(M){N(M,--k===0)}function N(M,H){if(M&&(!oe||oe.code==="ERR_STREAM_PREMATURE_CLOSE")&&(oe=M),!(!oe&&!H)){for(;T.length;)T.shift()(oe);I==null||I.removeEventListener("abort",re),fe.abort(),H&&(oe||K.forEach(C=>C()),r.nextTick(he,oe,se))}}let B;for(let M=0;M<ie.length;M++){let H=ie[M],C=M<ie.length-1,$=M>0,q=C||(we==null?void 0:we.end)!==!1,ee=M===ie.length-1;if(R(H)){let d=function(f){f&&f.name!=="AbortError"&&f.code!=="ERR_STREAM_PREMATURE_CLOSE"&&v(f)};if(q){let{destroy:f,cleanup:g}=ae(H,C,$);T.push(f),U(H)&&ee&&K.push(g)}H.on("error",d),U(H)&&ee&&K.push(()=>{H.removeListener("error",d)})}if(M===0)if(typeof H=="function"){if(B=H({signal:E}),!w(B))throw new p("Iterable, AsyncIterable or Stream","source",B)}else w(H)||W(H)||x(H)?B=H:B=u.from(H);else if(typeof H=="function"){if(x(B)){var Y;B=le((Y=B)===null||Y===void 0?void 0:Y.readable)}else B=le(B);if(B=H(B,{signal:E}),C){if(!w(B,!0))throw new p("AsyncIterable",`transform[${M-1}]`,B)}else{var J;S||(S=ud());let d=new S({objectMode:!0}),f=(J=B)===null||J===void 0?void 0:J.then;if(typeof f=="function")k++,f.call(B,D=>{se=D,D!=null&&d.write(D),q&&d.end(),r.nextTick(v)},D=>{d.destroy(D),r.nextTick(v,D)});else if(w(B,!0))k++,G(B,d,v,{end:q});else if(F(B)||x(B)){let D=B.readable||B;k++,G(D,d,v,{end:q})}else throw new p("AsyncIterable or Promise","destination",B);B=d;let{destroy:g,cleanup:_}=ae(B,!1,!0);T.push(g),ee&&K.push(_)}}else if(R(H)){if(W(B)){k+=2;let d=A(B,H,v,{end:q});U(H)&&ee&&K.push(d)}else if(x(B)||F(B)){let d=B.readable||B;k++,G(d,H,v,{end:q})}else if(w(B))k++,G(B,H,v,{end:q});else throw new h("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],B);B=H}else if(j(H)){if(W(B))k++,de(le(B),H,v,{end:q});else if(F(B)||w(B))k++,de(B,H,v,{end:q});else if(x(B))k++,de(B.readable,H,v,{end:q});else throw new h("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],B);B=H}else B=u.from(H)}return(E!=null&&E.aborted||I!=null&&I.aborted)&&r.nextTick(re),B}function A(ie,he,we,{end:fe}){let E=!1;if(he.on("close",()=>{E||we(new b)}),ie.pipe(he,{end:!1}),fe){let I=function(){E=!0,he.end()};X(ie)?r.nextTick(I):ie.once("end",I)}else we();return o(ie,{readable:!0,writable:!1},I=>{let K=ie._readableState;I&&I.code==="ERR_STREAM_PREMATURE_CLOSE"&&K&&K.ended&&!K.errored&&!K.errorEmitted?ie.once("end",we).once("error",we):we(I)}),o(he,{readable:!1,writable:!0},we)}t.exports={pipelineImpl:be,pipeline:ce}}),cd=ve((e,t)=>{pe(),me(),ge();var{pipeline:r}=Ml(),n=lr(),{destroyer:a}=xn(),{isNodeStream:i,isReadable:o,isWritable:l,isWebStream:s,isTransformStream:u,isWritableStream:c,isReadableStream:h}=hr(),{AbortError:p,codes:{ERR_INVALID_ARG_VALUE:m,ERR_MISSING_ARGS:y}}=vt(),b=jr();t.exports=function(...O){if(O.length===0)throw new y("streams");if(O.length===1)return n.from(O[0]);let L=[...O];if(typeof O[0]=="function"&&(O[0]=n.from(O[0])),typeof O[O.length-1]=="function"){let S=O.length-1;O[S]=n.from(O[S])}for(let S=0;S<O.length;++S)if(!(!i(O[S])&&!s(O[S]))){if(S<O.length-1&&!(o(O[S])||h(O[S])||u(O[S])))throw new m(`streams[${S}]`,L[S],"must be readable");if(S>0&&!(l(O[S])||c(O[S])||u(O[S])))throw new m(`streams[${S}]`,L[S],"must be writable")}let P,w,U,W,R;function x(S){let z=W;W=null,z?z(S):S?R.destroy(S):!Z&&!X&&R.destroy()}let j=O[0],F=r(O,x),X=!!(l(j)||c(j)||u(j)),Z=!!(o(F)||h(F)||u(F));if(R=new n({writableObjectMode:!!(j!=null&&j.writableObjectMode),readableObjectMode:!!(F!=null&&F.writableObjectMode),writable:X,readable:Z}),X){if(i(j))R._write=function(z,ae,te){j.write(z,ae)?te():P=te},R._final=function(z){j.end(),w=z},j.on("drain",function(){if(P){let z=P;P=null,z()}});else if(s(j)){let z=(u(j)?j.writable:j).getWriter();R._write=async function(ae,te,le){try{await z.ready,z.write(ae).catch(()=>{}),le()}catch(ne){le(ne)}},R._final=async function(ae){try{await z.ready,z.close().catch(()=>{}),w=ae}catch(te){ae(te)}}}let S=u(F)?F.readable:F;b(S,()=>{if(w){let z=w;w=null,z()}})}if(Z){if(i(F))F.on("readable",function(){if(U){let S=U;U=null,S()}}),F.on("end",function(){R.push(null)}),R._read=function(){for(;;){let S=F.read();if(S===null){U=R._read;return}if(!R.push(S))return}};else if(s(F)){let S=(u(F)?F.readable:F).getReader();R._read=async function(){for(;;)try{let{value:z,done:ae}=await S.read();if(!R.push(z))return;if(ae){R.push(null);return}}catch{return}}}}return R._destroy=function(S,z){!S&&W!==null&&(S=new p),U=null,P=null,w=null,W===null?z(S):(W=z,i(F)&&a(F,S))},R}}),Qb=ve((e,t)=>{pe(),me(),ge();var r=globalThis.AbortController||Rl().AbortController,{codes:{ERR_INVALID_ARG_VALUE:n,ERR_INVALID_ARG_TYPE:a,ERR_MISSING_ARGS:i,ERR_OUT_OF_RANGE:o},AbortError:l}=vt(),{validateAbortSignal:s,validateInteger:u,validateObject:c}=Co(),h=Xe().Symbol("kWeak"),{finished:p}=jr(),m=cd(),{addAbortSignalNoValidate:y}=Oo(),{isWritable:b,isNodeStream:O}=hr(),{ArrayPrototypePush:L,MathFloor:P,Number:w,NumberIsNaN:U,Promise:W,PromiseReject:R,PromisePrototypeThen:x,Symbol:j}=Xe(),F=j("kEmpty"),X=j("kEof");function Z(fe,E){if(E!=null&&c(E,"options"),(E==null?void 0:E.signal)!=null&&s(E.signal,"options.signal"),O(fe)&&!b(fe))throw new n("stream",fe,"must be writable");let I=m(this,fe);return E!=null&&E.signal&&y(E.signal,I),I}function S(fe,E){if(typeof fe!="function")throw new a("fn",["Function","AsyncFunction"],fe);E!=null&&c(E,"options"),(E==null?void 0:E.signal)!=null&&s(E.signal,"options.signal");let I=1;return(E==null?void 0:E.concurrency)!=null&&(I=P(E.concurrency)),u(I,"concurrency",1),(async function*(){var K,re;let oe=new r,se=this,T=[],k=oe.signal,v={signal:k},N=()=>oe.abort();E!=null&&(K=E.signal)!==null&&K!==void 0&&K.aborted&&N(),E==null||(re=E.signal)===null||re===void 0||re.addEventListener("abort",N);let B,Y,J=!1;function M(){J=!0}async function H(){try{for await(let q of se){var C;if(J)return;if(k.aborted)throw new l;try{q=fe(q,v)}catch(ee){q=R(ee)}q!==F&&(typeof((C=q)===null||C===void 0?void 0:C.catch)=="function"&&q.catch(M),T.push(q),B&&(B(),B=null),!J&&T.length&&T.length>=I&&await new W(ee=>{Y=ee}))}T.push(X)}catch(q){let ee=R(q);x(ee,void 0,M),T.push(ee)}finally{var $;J=!0,B&&(B(),B=null),E==null||($=E.signal)===null||$===void 0||$.removeEventListener("abort",N)}}H();try{for(;;){for(;T.length>0;){let C=await T[0];if(C===X)return;if(k.aborted)throw new l;C!==F&&(yield C),T.shift(),Y&&(Y(),Y=null)}await new W(C=>{B=C})}}finally{oe.abort(),J=!0,Y&&(Y(),Y=null)}}).call(this)}function z(fe=void 0){return fe!=null&&c(fe,"options"),(fe==null?void 0:fe.signal)!=null&&s(fe.signal,"options.signal"),(async function*(){let E=0;for await(let K of this){var I;if(fe!=null&&(I=fe.signal)!==null&&I!==void 0&&I.aborted)throw new l({cause:fe.signal.reason});yield[E++,K]}}).call(this)}async function ae(fe,E=void 0){for await(let I of G.call(this,fe,E))return!0;return!1}async function te(fe,E=void 0){if(typeof fe!="function")throw new a("fn",["Function","AsyncFunction"],fe);return!await ae.call(this,async(...I)=>!await fe(...I),E)}async function le(fe,E){for await(let I of G.call(this,fe,E))return I}async function ne(fe,E){if(typeof fe!="function")throw new a("fn",["Function","AsyncFunction"],fe);async function I(K,re){return await fe(K,re),F}for await(let K of S.call(this,I,E));}function G(fe,E){if(typeof fe!="function")throw new a("fn",["Function","AsyncFunction"],fe);async function I(K,re){return await fe(K,re)?K:F}return S.call(this,I,E)}var de=class extends i{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}};async function ce(fe,E,I){var K;if(typeof fe!="function")throw new a("reducer",["Function","AsyncFunction"],fe);I!=null&&c(I,"options"),(I==null?void 0:I.signal)!=null&&s(I.signal,"options.signal");let re=arguments.length>1;if(I!=null&&(K=I.signal)!==null&&K!==void 0&&K.aborted){let v=new l(void 0,{cause:I.signal.reason});throw this.once("error",()=>{}),await p(this.destroy(v)),v}let oe=new r,se=oe.signal;if(I!=null&&I.signal){let v={once:!0,[h]:this};I.signal.addEventListener("abort",()=>oe.abort(),v)}let T=!1;try{for await(let v of this){var k;if(T=!0,I!=null&&(k=I.signal)!==null&&k!==void 0&&k.aborted)throw new l;re?E=await fe(E,v,{signal:se}):(E=v,re=!0)}if(!T&&!re)throw new de}finally{oe.abort()}return E}async function be(fe){fe!=null&&c(fe,"options"),(fe==null?void 0:fe.signal)!=null&&s(fe.signal,"options.signal");let E=[];for await(let K of this){var I;if(fe!=null&&(I=fe.signal)!==null&&I!==void 0&&I.aborted)throw new l(void 0,{cause:fe.signal.reason});L(E,K)}return E}function A(fe,E){let I=S.call(this,fe,E);return(async function*(){for await(let K of I)yield*K}).call(this)}function ie(fe){if(fe=w(fe),U(fe))return 0;if(fe<0)throw new o("number",">= 0",fe);return fe}function he(fe,E=void 0){return E!=null&&c(E,"options"),(E==null?void 0:E.signal)!=null&&s(E.signal,"options.signal"),fe=ie(fe),(async function*(){var I;if(E!=null&&(I=E.signal)!==null&&I!==void 0&&I.aborted)throw new l;for await(let re of this){var K;if(E!=null&&(K=E.signal)!==null&&K!==void 0&&K.aborted)throw new l;fe--<=0&&(yield re)}}).call(this)}function we(fe,E=void 0){return E!=null&&c(E,"options"),(E==null?void 0:E.signal)!=null&&s(E.signal,"options.signal"),fe=ie(fe),(async function*(){var I;if(E!=null&&(I=E.signal)!==null&&I!==void 0&&I.aborted)throw new l;for await(let re of this){var K;if(E!=null&&(K=E.signal)!==null&&K!==void 0&&K.aborted)throw new l;if(fe-- >0)yield re;else return}}).call(this)}t.exports.streamReturningOperators={asIndexedPairs:z,drop:he,filter:G,flatMap:A,map:S,take:we,compose:Z},t.exports.promiseReturningOperators={every:te,forEach:ne,reduce:ce,toArray:be,some:ae,find:le}}),fd=ve((e,t)=>{pe(),me(),ge();var{ArrayPrototypePop:r,Promise:n}=Xe(),{isIterable:a,isNodeStream:i,isWebStream:o}=hr(),{pipelineImpl:l}=Ml(),{finished:s}=jr();hd();function u(...c){return new n((h,p)=>{let m,y,b=c[c.length-1];if(b&&typeof b=="object"&&!i(b)&&!a(b)&&!o(b)){let O=r(c);m=O.signal,y=O.end}l(c,(O,L)=>{O?p(O):h(L)},{signal:m,end:y})})}t.exports={finished:s,pipeline:u}}),hd=ve((e,t)=>{pe(),me(),ge();var{Buffer:r}=(at(),Ue(st)),{ObjectDefineProperty:n,ObjectKeys:a,ReflectApply:i}=Xe(),{promisify:{custom:o}}=ar(),{streamReturningOperators:l,promiseReturningOperators:s}=Qb(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:u}}=vt(),c=cd(),{pipeline:h}=Ml(),{destroyer:p}=xn(),m=jr(),y=fd(),b=hr(),O=t.exports=Pl().Stream;O.isDisturbed=b.isDisturbed,O.isErrored=b.isErrored,O.isReadable=b.isReadable,O.Readable=Po();for(let P of a(l)){let w=function(...W){if(new.target)throw u();return O.Readable.from(i(U,this,W))},U=l[P];n(w,"name",{__proto__:null,value:U.name}),n(w,"length",{__proto__:null,value:U.length}),n(O.Readable.prototype,P,{__proto__:null,value:w,enumerable:!1,configurable:!0,writable:!0})}for(let P of a(s)){let w=function(...W){if(new.target)throw u();return i(U,this,W)},U=s[P];n(w,"name",{__proto__:null,value:U.name}),n(w,"length",{__proto__:null,value:U.length}),n(O.Readable.prototype,P,{__proto__:null,value:w,enumerable:!1,configurable:!0,writable:!0})}O.Writable=ad(),O.Duplex=lr(),O.Transform=ld(),O.PassThrough=ud(),O.pipeline=h;var{addAbortSignal:L}=Oo();O.addAbortSignal=L,O.finished=m,O.destroy=p,O.compose=c,n(O,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return y}}),n(h,o,{__proto__:null,enumerable:!0,get(){return y.pipeline}}),n(m,o,{__proto__:null,enumerable:!0,get(){return y.finished}}),O.Stream=O,O._isUint8Array=function(P){return P instanceof Uint8Array},O._uint8ArrayToBuffer=function(P){return r.from(P.buffer,P.byteOffset,P.byteLength)}}),gn=ve((e,t)=>{pe(),me(),ge();var r=hd(),n=fd(),a=r.Readable.destroy;t.exports=r.Readable,t.exports._uint8ArrayToBuffer=r._uint8ArrayToBuffer,t.exports._isUint8Array=r._isUint8Array,t.exports.isDisturbed=r.isDisturbed,t.exports.isErrored=r.isErrored,t.exports.isReadable=r.isReadable,t.exports.Readable=r.Readable,t.exports.Writable=r.Writable,t.exports.Duplex=r.Duplex,t.exports.Transform=r.Transform,t.exports.PassThrough=r.PassThrough,t.exports.addAbortSignal=r.addAbortSignal,t.exports.finished=r.finished,t.exports.destroy=r.destroy,t.exports.destroy=a,t.exports.pipeline=r.pipeline,t.exports.compose=r.compose,Object.defineProperty(r,"promises",{configurable:!0,enumerable:!0,get(){return n}}),t.exports.Stream=r.Stream,t.exports.default=t.exports}),Jb=ve((e,t)=>{pe(),me(),ge(),typeof Object.create=="function"?t.exports=function(r,n){n&&(r.super_=n,r.prototype=Object.create(n.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(r,n){if(n){r.super_=n;var a=function(){};a.prototype=n.prototype,r.prototype=new a,r.prototype.constructor=r}}}),Xb=ve((e,t)=>{pe(),me(),ge();var{Buffer:r}=(at(),Ue(st)),n=Symbol.for("BufferList");function a(i){if(!(this instanceof a))return new a(i);a._init.call(this,i)}a._init=function(i){Object.defineProperty(this,n,{value:!0}),this._bufs=[],this.length=0,i&&this.append(i)},a.prototype._new=function(i){return new a(i)},a.prototype._offset=function(i){if(i===0)return[0,0];let o=0;for(let l=0;l<this._bufs.length;l++){let s=o+this._bufs[l].length;if(i<s||l===this._bufs.length-1)return[l,i-o];o=s}},a.prototype._reverseOffset=function(i){let o=i[0],l=i[1];for(let s=0;s<o;s++)l+=this._bufs[s].length;return l},a.prototype.get=function(i){if(i>this.length||i<0)return;let o=this._offset(i);return this._bufs[o[0]][o[1]]},a.prototype.slice=function(i,o){return typeof i=="number"&&i<0&&(i+=this.length),typeof o=="number"&&o<0&&(o+=this.length),this.copy(null,0,i,o)},a.prototype.copy=function(i,o,l,s){if((typeof l!="number"||l<0)&&(l=0),(typeof s!="number"||s>this.length)&&(s=this.length),l>=this.length||s<=0)return i||r.alloc(0);let u=!!i,c=this._offset(l),h=s-l,p=h,m=u&&o||0,y=c[1];if(l===0&&s===this.length){if(!u)return this._bufs.length===1?this._bufs[0]:r.concat(this._bufs,this.length);for(let b=0;b<this._bufs.length;b++)this._bufs[b].copy(i,m),m+=this._bufs[b].length;return i}if(p<=this._bufs[c[0]].length-y)return u?this._bufs[c[0]].copy(i,o,y,y+p):this._bufs[c[0]].slice(y,y+p);u||(i=r.allocUnsafe(h));for(let b=c[0];b<this._bufs.length;b++){let O=this._bufs[b].length-y;if(p>O)this._bufs[b].copy(i,m,y),m+=O;else{this._bufs[b].copy(i,m,y,y+p),m+=O;break}p-=O,y&&(y=0)}return i.length>m?i.slice(0,m):i},a.prototype.shallowSlice=function(i,o){if(i=i||0,o=typeof o!="number"?this.length:o,i<0&&(i+=this.length),o<0&&(o+=this.length),i===o)return this._new();let l=this._offset(i),s=this._offset(o),u=this._bufs.slice(l[0],s[0]+1);return s[1]===0?u.pop():u[u.length-1]=u[u.length-1].slice(0,s[1]),l[1]!==0&&(u[0]=u[0].slice(l[1])),this._new(u)},a.prototype.toString=function(i,o,l){return this.slice(o,l).toString(i)},a.prototype.consume=function(i){if(i=Math.trunc(i),Number.isNaN(i)||i<=0)return this;for(;this._bufs.length;)if(i>=this._bufs[0].length)i-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(i),this.length-=i;break}return this},a.prototype.duplicate=function(){let i=this._new();for(let o=0;o<this._bufs.length;o++)i.append(this._bufs[o]);return i},a.prototype.append=function(i){if(i==null)return this;if(i.buffer)this._appendBuffer(r.from(i.buffer,i.byteOffset,i.byteLength));else if(Array.isArray(i))for(let o=0;o<i.length;o++)this.append(i[o]);else if(this._isBufferList(i))for(let o=0;o<i._bufs.length;o++)this.append(i._bufs[o]);else typeof i=="number"&&(i=i.toString()),this._appendBuffer(r.from(i));return this},a.prototype._appendBuffer=function(i){this._bufs.push(i),this.length+=i.length},a.prototype.indexOf=function(i,o,l){if(l===void 0&&typeof o=="string"&&(l=o,o=void 0),typeof i=="function"||Array.isArray(i))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof i=="number"?i=r.from([i]):typeof i=="string"?i=r.from(i,l):this._isBufferList(i)?i=i.slice():Array.isArray(i.buffer)?i=r.from(i.buffer,i.byteOffset,i.byteLength):r.isBuffer(i)||(i=r.from(i)),o=Number(o||0),isNaN(o)&&(o=0),o<0&&(o=this.length+o),o<0&&(o=0),i.length===0)return o>this.length?this.length:o;let s=this._offset(o),u=s[0],c=s[1];for(;u<this._bufs.length;u++){let h=this._bufs[u];for(;c<h.length;)if(h.length-c>=i.length){let p=h.indexOf(i,c);if(p!==-1)return this._reverseOffset([u,p]);c=h.length-i.length+1}else{let p=this._reverseOffset([u,c]);if(this._match(p,i))return p;c++}c=0}return-1},a.prototype._match=function(i,o){if(this.length-i<o.length)return!1;for(let l=0;l<o.length;l++)if(this.get(i+l)!==o[l])return!1;return!0},function(){let i={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let o in i)(function(l){i[l]===null?a.prototype[l]=function(s,u){return this.slice(s,s+u)[l](0,u)}:a.prototype[l]=function(s=0){return this.slice(s,s+i[l])[l](0)}})(o)}(),a.prototype._isBufferList=function(i){return i instanceof a||a.isBufferList(i)},a.isBufferList=function(i){return i!=null&&i[n]},t.exports=a}),Zb=ve((e,t)=>{pe(),me(),ge();var r=gn().Duplex,n=Jb(),a=Xb();function i(o){if(!(this instanceof i))return new i(o);if(typeof o=="function"){this._callback=o;let l=(function(s){this._callback&&(this._callback(s),this._callback=null)}).bind(this);this.on("pipe",function(s){s.on("error",l)}),this.on("unpipe",function(s){s.removeListener("error",l)}),o=null}a._init.call(this,o),r.call(this)}n(i,r),Object.assign(i.prototype,a.prototype),i.prototype._new=function(o){return new i(o)},i.prototype._write=function(o,l,s){this._appendBuffer(o),typeof s=="function"&&s()},i.prototype._read=function(o){if(!this.length)return this.push(null);o=Math.min(o,this.length),this.push(this.slice(0,o)),this.consume(o)},i.prototype.end=function(o){r.prototype.end.call(this,o),this._callback&&(this._callback(null,this.slice()),this._callback=null)},i.prototype._destroy=function(o,l){this._bufs.length=0,this.length=0,l(o)},i.prototype._isBufferList=function(o){return o instanceof i||o instanceof a||i.isBufferList(o)},i.isBufferList=a.isBufferList,t.exports=i,t.exports.BufferListStream=i,t.exports.BufferList=a}),e0=ve((e,t)=>{pe(),me(),ge();var r=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};t.exports=r}),dd=ve((e,t)=>{pe(),me(),ge();var r=t.exports,{Buffer:n}=(at(),Ue(st));r.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},r.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},r.requiredHeaderFlagsErrors={};for(let i in r.requiredHeaderFlags){let o=r.requiredHeaderFlags[i];r.requiredHeaderFlagsErrors[i]="Invalid header flag bits, must be 0x"+o.toString(16)+" for "+r.types[i]+" packet"}r.codes={};for(let i in r.types){let o=r.types[i];r.codes[o]=i}r.CMD_SHIFT=4,r.CMD_MASK=240,r.DUP_MASK=8,r.QOS_MASK=3,r.QOS_SHIFT=1,r.RETAIN_MASK=1,r.VARBYTEINT_MASK=127,r.VARBYTEINT_FIN_MASK=128,r.VARBYTEINT_MAX=268435455,r.SESSIONPRESENT_MASK=1,r.SESSIONPRESENT_HEADER=n.from([r.SESSIONPRESENT_MASK]),r.CONNACK_HEADER=n.from([r.codes.connack<<r.CMD_SHIFT]),r.USERNAME_MASK=128,r.PASSWORD_MASK=64,r.WILL_RETAIN_MASK=32,r.WILL_QOS_MASK=24,r.WILL_QOS_SHIFT=3,r.WILL_FLAG_MASK=4,r.CLEAN_SESSION_MASK=2,r.CONNECT_HEADER=n.from([r.codes.connect<<r.CMD_SHIFT]),r.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},r.propertiesCodes={};for(let i in r.properties){let o=r.properties[i];r.propertiesCodes[o]=i}r.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function a(i){return[0,1,2].map(o=>[0,1].map(l=>[0,1].map(s=>{let u=n.alloc(1);return u.writeUInt8(r.codes[i]<<r.CMD_SHIFT|(l?r.DUP_MASK:0)|o<<r.QOS_SHIFT|s,0,!0),u})))}r.PUBLISH_HEADER=a("publish"),r.SUBSCRIBE_HEADER=a("subscribe"),r.SUBSCRIBE_OPTIONS_QOS_MASK=3,r.SUBSCRIBE_OPTIONS_NL_MASK=1,r.SUBSCRIBE_OPTIONS_NL_SHIFT=2,r.SUBSCRIBE_OPTIONS_RAP_MASK=1,r.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,r.SUBSCRIBE_OPTIONS_RH_MASK=3,r.SUBSCRIBE_OPTIONS_RH_SHIFT=4,r.SUBSCRIBE_OPTIONS_RH=[0,16,32],r.SUBSCRIBE_OPTIONS_NL=4,r.SUBSCRIBE_OPTIONS_RAP=8,r.SUBSCRIBE_OPTIONS_QOS=[0,1,2],r.UNSUBSCRIBE_HEADER=a("unsubscribe"),r.ACKS={unsuback:a("unsuback"),puback:a("puback"),pubcomp:a("pubcomp"),pubrel:a("pubrel"),pubrec:a("pubrec")},r.SUBACK_HEADER=n.from([r.codes.suback<<r.CMD_SHIFT]),r.VERSION3=n.from([3]),r.VERSION4=n.from([4]),r.VERSION5=n.from([5]),r.VERSION131=n.from([131]),r.VERSION132=n.from([132]),r.QOS=[0,1,2].map(i=>n.from([i])),r.EMPTY={pingreq:n.from([r.codes.pingreq<<4,0]),pingresp:n.from([r.codes.pingresp<<4,0]),disconnect:n.from([r.codes.disconnect<<4,0])},r.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},r.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},r.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},r.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}}),t0=ve((e,t)=>{pe(),me(),ge();var r=1e3,n=r*60,a=n*60,i=a*24,o=i*7,l=i*365.25;t.exports=function(p,m){m=m||{};var y=typeof p;if(y==="string"&&p.length>0)return s(p);if(y==="number"&&isFinite(p))return m.long?c(p):u(p);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(p))};function s(p){if(p=String(p),!(p.length>100)){var m=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(p);if(m){var y=parseFloat(m[1]),b=(m[2]||"ms").toLowerCase();switch(b){case"years":case"year":case"yrs":case"yr":case"y":return y*l;case"weeks":case"week":case"w":return y*o;case"days":case"day":case"d":return y*i;case"hours":case"hour":case"hrs":case"hr":case"h":return y*a;case"minutes":case"minute":case"mins":case"min":case"m":return y*n;case"seconds":case"second":case"secs":case"sec":case"s":return y*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return y;default:return}}}}function u(p){var m=Math.abs(p);return m>=i?Math.round(p/i)+"d":m>=a?Math.round(p/a)+"h":m>=n?Math.round(p/n)+"m":m>=r?Math.round(p/r)+"s":p+"ms"}function c(p){var m=Math.abs(p);return m>=i?h(p,m,i,"day"):m>=a?h(p,m,a,"hour"):m>=n?h(p,m,n,"minute"):m>=r?h(p,m,r,"second"):p+" ms"}function h(p,m,y,b){var O=m>=y*1.5;return Math.round(p/y)+" "+b+(O?"s":"")}}),r0=ve((e,t)=>{pe(),me(),ge();function r(n){i.debug=i,i.default=i,i.coerce=h,i.disable=s,i.enable=l,i.enabled=u,i.humanize=t0(),i.destroy=p,Object.keys(n).forEach(m=>{i[m]=n[m]}),i.names=[],i.skips=[],i.formatters={};function a(m){let y=0;for(let b=0;b<m.length;b++)y=(y<<5)-y+m.charCodeAt(b),y|=0;return i.colors[Math.abs(y)%i.colors.length]}i.selectColor=a;function i(m){let y,b=null,O,L;function P(...w){if(!P.enabled)return;let U=P,W=Number(new Date),R=W-(y||W);U.diff=R,U.prev=y,U.curr=W,y=W,w[0]=i.coerce(w[0]),typeof w[0]!="string"&&w.unshift("%O");let x=0;w[0]=w[0].replace(/%([a-zA-Z%])/g,(j,F)=>{if(j==="%%")return"%";x++;let X=i.formatters[F];if(typeof X=="function"){let Z=w[x];j=X.call(U,Z),w.splice(x,1),x--}return j}),i.formatArgs.call(U,w),(U.log||i.log).apply(U,w)}return P.namespace=m,P.useColors=i.useColors(),P.color=i.selectColor(m),P.extend=o,P.destroy=i.destroy,Object.defineProperty(P,"enabled",{enumerable:!0,configurable:!1,get:()=>b!==null?b:(O!==i.namespaces&&(O=i.namespaces,L=i.enabled(m)),L),set:w=>{b=w}}),typeof i.init=="function"&&i.init(P),P}function o(m,y){let b=i(this.namespace+(typeof y>"u"?":":y)+m);return b.log=this.log,b}function l(m){i.save(m),i.namespaces=m,i.names=[],i.skips=[];let y,b=(typeof m=="string"?m:"").split(/[\s,]+/),O=b.length;for(y=0;y<O;y++)b[y]&&(m=b[y].replace(/\*/g,".*?"),m[0]==="-"?i.skips.push(new RegExp("^"+m.slice(1)+"$")):i.names.push(new RegExp("^"+m+"$")))}function s(){let m=[...i.names.map(c),...i.skips.map(c).map(y=>"-"+y)].join(",");return i.enable(""),m}function u(m){if(m[m.length-1]==="*")return!0;let y,b;for(y=0,b=i.skips.length;y<b;y++)if(i.skips[y].test(m))return!1;for(y=0,b=i.names.length;y<b;y++)if(i.names[y].test(m))return!0;return!1}function c(m){return m.toString().substring(2,m.toString().length-2).replace(/\.\*\?$/,"*")}function h(m){return m instanceof Error?m.stack||m.message:m}function p(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return i.enable(i.load()),i}t.exports=r}),ur=ve((e,t)=>{pe(),me(),ge(),e.formatArgs=n,e.save=a,e.load=i,e.useColors=r,e.storage=o(),e.destroy=(()=>{let s=!1;return()=>{s||(s=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function n(s){if(s[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+s[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;let u="color: "+this.color;s.splice(1,0,u,"color: inherit");let c=0,h=0;s[0].replace(/%[a-zA-Z%]/g,p=>{p!=="%%"&&(c++,p==="%c"&&(h=c))}),s.splice(h,0,u)}e.log=console.debug||console.log||(()=>{});function a(s){try{s?e.storage.setItem("debug",s):e.storage.removeItem("debug")}catch{}}function i(){let s;try{s=e.storage.getItem("debug")}catch{}return!s&&typeof Me<"u"&&"env"in Me&&(s=Me.env.DEBUG),s}function o(){try{return localStorage}catch{}}t.exports=r0()(e);var{formatters:l}=t.exports;l.j=function(s){try{return JSON.stringify(s)}catch(u){return"[UnexpectedJSONParseError]: "+u.message}}}),n0=ve((e,t)=>{pe(),me(),ge();var r=Zb(),{EventEmitter:n}=(Bn(),Ue(pn)),a=e0(),i=dd(),o=ur()("mqtt-packet:parser"),l=class ja extends n{constructor(){super(),this.parser=this.constructor.parser}static parser(u){return this instanceof ja?(this.settings=u||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new ja().parser(u)}_resetState(){o("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new a,this.error=null,this._list=r(),this._stateCounter=0}parse(u){for(this.error&&this._resetState(),this._list.append(u),o("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,o("parse: state complete. _stateCounter is now: %d",this._stateCounter),o("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return o("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){let u=this._list.readUInt8(0),c=u>>i.CMD_SHIFT;this.packet.cmd=i.types[c];let h=u&15,p=i.requiredHeaderFlags[c];return p!=null&&h!==p?this._emitError(new Error(i.requiredHeaderFlagsErrors[c])):(this.packet.retain=(u&i.RETAIN_MASK)!==0,this.packet.qos=u>>i.QOS_SHIFT&i.QOS_MASK,this.packet.qos>2?this._emitError(new Error("Packet must not have both QoS bits set to 1")):(this.packet.dup=(u&i.DUP_MASK)!==0,o("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0))}_parseLength(){let u=this._parseVarByteNum(!0);return u&&(this.packet.length=u.value,this._list.consume(u.bytes)),o("_parseLength %d",u.value),!!u}_parsePayload(){o("_parsePayload: payload %O",this._list);let u=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}u=!0}return o("_parsePayload complete result: %s",u),u}_parseConnect(){o("_parseConnect");let u,c,h,p,m={},y=this.packet,b=this._parseString();if(b===null)return this._emitError(new Error("Cannot parse protocolId"));if(b!=="MQTT"&&b!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(y.protocolId=b,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(y.protocolVersion=this._list.readUInt8(this._pos),y.protocolVersion>=128&&(y.bridgeMode=!0,y.protocolVersion=y.protocolVersion-128),y.protocolVersion!==3&&y.protocolVersion!==4&&y.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(this._list.readUInt8(this._pos)&1)return this._emitError(new Error("Connect flag bit 0 must be 0, but got 1"));m.username=this._list.readUInt8(this._pos)&i.USERNAME_MASK,m.password=this._list.readUInt8(this._pos)&i.PASSWORD_MASK,m.will=this._list.readUInt8(this._pos)&i.WILL_FLAG_MASK;let O=!!(this._list.readUInt8(this._pos)&i.WILL_RETAIN_MASK),L=(this._list.readUInt8(this._pos)&i.WILL_QOS_MASK)>>i.WILL_QOS_SHIFT;if(m.will)y.will={},y.will.retain=O,y.will.qos=L;else{if(O)return this._emitError(new Error("Will Retain Flag must be set to zero when Will Flag is set to 0"));if(L)return this._emitError(new Error("Will QoS must be set to zero when Will Flag is set to 0"))}if(y.clean=(this._list.readUInt8(this._pos)&i.CLEAN_SESSION_MASK)!==0,this._pos++,y.keepalive=this._parseNum(),y.keepalive===-1)return this._emitError(new Error("Packet too short"));if(y.protocolVersion===5){let w=this._parseProperties();Object.getOwnPropertyNames(w).length&&(y.properties=w)}let P=this._parseString();if(P===null)return this._emitError(new Error("Packet too short"));if(y.clientId=P,o("_parseConnect: packet.clientId: %s",y.clientId),m.will){if(y.protocolVersion===5){let w=this._parseProperties();Object.getOwnPropertyNames(w).length&&(y.will.properties=w)}if(u=this._parseString(),u===null)return this._emitError(new Error("Cannot parse will topic"));if(y.will.topic=u,o("_parseConnect: packet.will.topic: %s",y.will.topic),c=this._parseBuffer(),c===null)return this._emitError(new Error("Cannot parse will payload"));y.will.payload=c,o("_parseConnect: packet.will.paylaod: %s",y.will.payload)}if(m.username){if(p=this._parseString(),p===null)return this._emitError(new Error("Cannot parse username"));y.username=p,o("_parseConnect: packet.username: %s",y.username)}if(m.password){if(h=this._parseBuffer(),h===null)return this._emitError(new Error("Cannot parse password"));y.password=h}return this.settings=y,o("_parseConnect: complete"),y}_parseConnack(){o("_parseConnack");let u=this.packet;if(this._list.length<1)return null;let c=this._list.readUInt8(this._pos++);if(c>1)return this._emitError(new Error("Invalid connack flags, bits 7-1 must be set to 0"));if(u.sessionPresent=!!(c&i.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?u.reasonCode=this._list.readUInt8(this._pos++):u.reasonCode=0;else{if(this._list.length<2)return null;u.returnCode=this._list.readUInt8(this._pos++)}if(u.returnCode===-1||u.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){let h=this._parseProperties();Object.getOwnPropertyNames(h).length&&(u.properties=h)}o("_parseConnack: complete")}_parsePublish(){o("_parsePublish");let u=this.packet;if(u.topic=this._parseString(),u.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(u.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}u.payload=this._list.slice(this._pos,u.length),o("_parsePublish: payload from buffer list: %o",u.payload)}}_parseSubscribe(){o("_parseSubscribe");let u=this.packet,c,h,p,m,y,b,O;if(u.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let L=this._parseProperties();Object.getOwnPropertyNames(L).length&&(u.properties=L)}if(u.length<=0)return this._emitError(new Error("Malformed subscribe, no payload specified"));for(;this._pos<u.length;){if(c=this._parseString(),c===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=u.length)return this._emitError(new Error("Malformed Subscribe Payload"));if(h=this._parseByte(),this.settings.protocolVersion===5){if(h&192)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-6 must be 0"))}else if(h&252)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-2 must be 0"));if(p=h&i.SUBSCRIBE_OPTIONS_QOS_MASK,p>2)return this._emitError(new Error("Invalid subscribe QoS, must be <= 2"));if(b=(h>>i.SUBSCRIBE_OPTIONS_NL_SHIFT&i.SUBSCRIBE_OPTIONS_NL_MASK)!==0,y=(h>>i.SUBSCRIBE_OPTIONS_RAP_SHIFT&i.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,m=h>>i.SUBSCRIBE_OPTIONS_RH_SHIFT&i.SUBSCRIBE_OPTIONS_RH_MASK,m>2)return this._emitError(new Error("Invalid retain handling, must be <= 2"));O={topic:c,qos:p},this.settings.protocolVersion===5?(O.nl=b,O.rap=y,O.rh=m):this.settings.bridgeMode&&(O.rh=0,O.rap=!0,O.nl=!0),o("_parseSubscribe: push subscription `%s` to subscription",O),u.subscriptions.push(O)}}}_parseSuback(){o("_parseSuback");let u=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed suback, no payload specified"));for(;this._pos<this.packet.length;){let c=this._list.readUInt8(this._pos++);if(this.settings.protocolVersion===5){if(!i.MQTT5_SUBACK_CODES[c])return this._emitError(new Error("Invalid suback code"))}else if(c>2&&c!==128)return this._emitError(new Error("Invalid suback QoS, must be 0, 1, 2 or 128"));this.packet.granted.push(c)}}}_parseUnsubscribe(){o("_parseUnsubscribe");let u=this.packet;if(u.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed unsubscribe, no payload specified"));for(;this._pos<u.length;){let c=this._parseString();if(c===null)return this._emitError(new Error("Cannot parse topic"));o("_parseUnsubscribe: push topic `%s` to unsubscriptions",c),u.unsubscriptions.push(c)}}}_parseUnsuback(){o("_parseUnsuback");let u=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if((this.settings.protocolVersion===3||this.settings.protocolVersion===4)&&u.length!==2)return this._emitError(new Error("Malformed unsuback, payload length must be 2"));if(u.length<=0)return this._emitError(new Error("Malformed unsuback, no payload specified"));if(this.settings.protocolVersion===5){let c=this._parseProperties();for(Object.getOwnPropertyNames(c).length&&(u.properties=c),u.granted=[];this._pos<this.packet.length;){let h=this._list.readUInt8(this._pos++);if(!i.MQTT5_UNSUBACK_CODES[h])return this._emitError(new Error("Invalid unsuback code"));this.packet.granted.push(h)}}}_parseConfirmation(){o("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);let u=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5){if(u.length>2){switch(u.reasonCode=this._parseByte(),this.packet.cmd){case"puback":case"pubrec":if(!i.MQTT5_PUBACK_PUBREC_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break;case"pubrel":case"pubcomp":if(!i.MQTT5_PUBREL_PUBCOMP_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break}o("_parseConfirmation: packet.reasonCode `%d`",u.reasonCode)}else u.reasonCode=0;if(u.length>3){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}}return!0}_parseDisconnect(){let u=this.packet;if(o("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?(u.reasonCode=this._parseByte(),i.MQTT5_DISCONNECT_CODES[u.reasonCode]||this._emitError(new Error("Invalid disconnect reason code"))):u.reasonCode=0;let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}return o("_parseDisconnect result: true"),!0}_parseAuth(){o("_parseAuth");let u=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));if(u.reasonCode=this._parseByte(),!i.MQTT5_AUTH_CODES[u.reasonCode])return this._emitError(new Error("Invalid auth reason code"));let c=this._parseProperties();return Object.getOwnPropertyNames(c).length&&(u.properties=c),o("_parseAuth: result: true"),!0}_parseMessageId(){let u=this.packet;return u.messageId=this._parseNum(),u.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(o("_parseMessageId: packet.messageId %d",u.messageId),!0)}_parseString(u){let c=this._parseNum(),h=c+this._pos;if(c===-1||h>this._list.length||h>this.packet.length)return null;let p=this._list.toString("utf8",this._pos,h);return this._pos+=c,o("_parseString: result: %s",p),p}_parseStringPair(){return o("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){let u=this._parseNum(),c=u+this._pos;if(u===-1||c>this._list.length||c>this.packet.length)return null;let h=this._list.slice(this._pos,c);return this._pos+=u,o("_parseBuffer: result: %o",h),h}_parseNum(){if(this._list.length-this._pos<2)return-1;let u=this._list.readUInt16BE(this._pos);return this._pos+=2,o("_parseNum: result: %s",u),u}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;let u=this._list.readUInt32BE(this._pos);return this._pos+=4,o("_parse4ByteNum: result: %s",u),u}_parseVarByteNum(u){o("_parseVarByteNum");let c=4,h=0,p=1,m=0,y=!1,b,O=this._pos?this._pos:0;for(;h<c&&O+h<this._list.length;){if(b=this._list.readUInt8(O+h++),m+=p*(b&i.VARBYTEINT_MASK),p*=128,!(b&i.VARBYTEINT_FIN_MASK)){y=!0;break}if(this._list.length<=h)break}return!y&&h===c&&this._list.length>=h&&this._emitError(new Error("Invalid variable byte integer")),O&&(this._pos+=h),y?u?y={bytes:h,value:m}:y=m:y=!1,o("_parseVarByteNum: result: %o",y),y}_parseByte(){let u;return this._pos<this._list.length&&(u=this._list.readUInt8(this._pos),this._pos++),o("_parseByte: result: %o",u),u}_parseByType(u){switch(o("_parseByType: type: %s",u),u){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){o("_parseProperties");let u=this._parseVarByteNum(),c=this._pos+u,h={};for(;this._pos<c;){let p=this._parseByte();if(!p)return this._emitError(new Error("Cannot parse property code type")),!1;let m=i.propertiesCodes[p];if(!m)return this._emitError(new Error("Unknown property")),!1;if(m==="userProperties"){h[m]||(h[m]=Object.create(null));let y=this._parseByType(i.propertiesTypes[m]);if(h[m][y.name])if(Array.isArray(h[m][y.name]))h[m][y.name].push(y.value);else{let b=h[m][y.name];h[m][y.name]=[b],h[m][y.name].push(y.value)}else h[m][y.name]=y.value;continue}h[m]?Array.isArray(h[m])?h[m].push(this._parseByType(i.propertiesTypes[m])):(h[m]=[h[m]],h[m].push(this._parseByType(i.propertiesTypes[m]))):h[m]=this._parseByType(i.propertiesTypes[m])}return h}_newPacket(){return o("_newPacket"),this.packet&&(this._list.consume(this.packet.length),o("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),o("_newPacket: new packet"),this.packet=new a,this._pos=0,!0}_emitError(u){o("_emitError",u),this.error=u,this.emit("error",u)}};t.exports=l}),i0=ve((e,t)=>{pe(),me(),ge();var{Buffer:r}=(at(),Ue(st)),n=65536,a={},i=r.isBuffer(r.from([1,2]).subarray(0,1));function o(c){let h=r.allocUnsafe(2);return h.writeUInt8(c>>8,0),h.writeUInt8(c&255,1),h}function l(){for(let c=0;c<n;c++)a[c]=o(c)}function s(c){let h=0,p=0,m=r.allocUnsafe(4);do h=c%128|0,c=c/128|0,c>0&&(h=h|128),m.writeUInt8(h,p++);while(c>0&&p<4);return c>0&&(p=0),i?m.subarray(0,p):m.slice(0,p)}function u(c){let h=r.allocUnsafe(4);return h.writeUInt32BE(c,0),h}t.exports={cache:a,generateCache:l,generateNumber:o,genBufVariableByteInt:s,generate4ByteBuffer:u}}),o0=ve((e,t)=>{pe(),me(),ge(),typeof Me>"u"||!Me.version||Me.version.indexOf("v0.")===0||Me.version.indexOf("v1.")===0&&Me.version.indexOf("v1.8.")!==0?t.exports={nextTick:r}:t.exports=Me;function r(n,a,i,o){if(typeof n!="function")throw new TypeError('"callback" argument must be a function');var l=arguments.length,s,u;switch(l){case 0:case 1:return Me.nextTick(n);case 2:return Me.nextTick(function(){n.call(null,a)});case 3:return Me.nextTick(function(){n.call(null,a,i)});case 4:return Me.nextTick(function(){n.call(null,a,i,o)});default:for(s=new Array(l-1),u=0;u<s.length;)s[u++]=arguments[u];return Me.nextTick(function(){n.apply(null,s)})}}}),pd=ve((e,t)=>{pe(),me(),ge();var r=dd(),{Buffer:n}=(at(),Ue(st)),a=n.allocUnsafe(0),i=n.from([0]),o=i0(),l=o0().nextTick,s=ur()("mqtt-packet:writeToStream"),u=o.cache,c=o.generateNumber,h=o.generateCache,p=o.genBufVariableByteInt,m=o.generate4ByteBuffer,y=ne,b=!0;function O(E,I,K){switch(s("generate called"),I.cork&&(I.cork(),l(L,I)),b&&(b=!1,h()),s("generate: packet.cmd: %s",E.cmd),E.cmd){case"connect":return P(E,I);case"connack":return w(E,I,K);case"publish":return U(E,I,K);case"puback":case"pubrec":case"pubrel":case"pubcomp":return W(E,I,K);case"subscribe":return R(E,I,K);case"suback":return x(E,I,K);case"unsubscribe":return j(E,I,K);case"unsuback":return F(E,I,K);case"pingreq":case"pingresp":return X(E,I);case"disconnect":return Z(E,I,K);case"auth":return S(E,I,K);default:return I.destroy(new Error("Unknown command")),!1}}Object.defineProperty(O,"cacheNumbers",{get(){return y===ne},set(E){E?((!u||Object.keys(u).length===0)&&(b=!0),y=ne):(b=!1,y=G)}});function L(E){E.uncork()}function P(E,I,K){let re=E||{},oe=re.protocolId||"MQTT",se=re.protocolVersion||4,T=re.will,k=re.clean,v=re.keepalive||0,N=re.clientId||"",B=re.username,Y=re.password,J=re.properties;k===void 0&&(k=!0);let M=0;if(!oe||typeof oe!="string"&&!n.isBuffer(oe))return I.destroy(new Error("Invalid protocolId")),!1;if(M+=oe.length+2,se!==3&&se!==4&&se!==5)return I.destroy(new Error("Invalid protocol version")),!1;if(M+=1,(typeof N=="string"||n.isBuffer(N))&&(N||se>=4)&&(N||k))M+=n.byteLength(N)+2;else{if(se<4)return I.destroy(new Error("clientId must be supplied before 3.1.1")),!1;if(k*1===0)return I.destroy(new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof v!="number"||v<0||v>65535||v%1!==0)return I.destroy(new Error("Invalid keepalive")),!1;M+=2,M+=1;let H,C;if(se===5){if(H=be(I,J),!H)return!1;M+=H.length}if(T){if(typeof T!="object")return I.destroy(new Error("Invalid will")),!1;if(!T.topic||typeof T.topic!="string")return I.destroy(new Error("Invalid will topic")),!1;if(M+=n.byteLength(T.topic)+2,M+=2,T.payload)if(T.payload.length>=0)typeof T.payload=="string"?M+=n.byteLength(T.payload):M+=T.payload.length;else return I.destroy(new Error("Invalid will payload")),!1;if(C={},se===5){if(C=be(I,T.properties),!C)return!1;M+=C.length}}let $=!1;if(B!=null)if(fe(B))$=!0,M+=n.byteLength(B)+2;else return I.destroy(new Error("Invalid username")),!1;if(Y!=null){if(!$)return I.destroy(new Error("Username is required to use password")),!1;if(fe(Y))M+=we(Y)+2;else return I.destroy(new Error("Invalid password")),!1}I.write(r.CONNECT_HEADER),ae(I,M),ce(I,oe),re.bridgeMode&&(se+=128),I.write(se===131?r.VERSION131:se===132?r.VERSION132:se===4?r.VERSION4:se===5?r.VERSION5:r.VERSION3);let q=0;return q|=B!=null?r.USERNAME_MASK:0,q|=Y!=null?r.PASSWORD_MASK:0,q|=T&&T.retain?r.WILL_RETAIN_MASK:0,q|=T&&T.qos?T.qos<<r.WILL_QOS_SHIFT:0,q|=T?r.WILL_FLAG_MASK:0,q|=k?r.CLEAN_SESSION_MASK:0,I.write(n.from([q])),y(I,v),se===5&&H.write(),ce(I,N),T&&(se===5&&C.write(),te(I,T.topic),ce(I,T.payload)),B!=null&&ce(I,B),Y!=null&&ce(I,Y),!0}function w(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=re===5?oe.reasonCode:oe.returnCode,T=oe.properties,k=2;if(typeof se!="number")return I.destroy(new Error("Invalid return code")),!1;let v=null;if(re===5){if(v=be(I,T),!v)return!1;k+=v.length}return I.write(r.CONNACK_HEADER),ae(I,k),I.write(oe.sessionPresent?r.SESSIONPRESENT_HEADER:i),I.write(n.from([se])),v==null||v.write(),!0}function U(E,I,K){s("publish: packet: %o",E);let re=K?K.protocolVersion:4,oe=E||{},se=oe.qos||0,T=oe.retain?r.RETAIN_MASK:0,k=oe.topic,v=oe.payload||a,N=oe.messageId,B=oe.properties,Y=0;if(typeof k=="string")Y+=n.byteLength(k)+2;else if(n.isBuffer(k))Y+=k.length+2;else return I.destroy(new Error("Invalid topic")),!1;if(n.isBuffer(v)?Y+=v.length:Y+=n.byteLength(v),se&&typeof N!="number")return I.destroy(new Error("Invalid messageId")),!1;se&&(Y+=2);let J=null;if(re===5){if(J=be(I,B),!J)return!1;Y+=J.length}return I.write(r.PUBLISH_HEADER[se][oe.dup?1:0][T?1:0]),ae(I,Y),y(I,we(k)),I.write(k),se>0&&y(I,N),J==null||J.write(),s("publish: payload: %o",v),I.write(v)}function W(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.cmd||"puback",T=oe.messageId,k=oe.dup&&se==="pubrel"?r.DUP_MASK:0,v=0,N=oe.reasonCode,B=oe.properties,Y=re===5?3:2;if(se==="pubrel"&&(v=1),typeof T!="number")return I.destroy(new Error("Invalid messageId")),!1;let J=null;if(re===5&&typeof B=="object"){if(J=A(I,B,K,Y),!J)return!1;Y+=J.length}return I.write(r.ACKS[se][v][k][0]),Y===3&&(Y+=N!==0?1:-1),ae(I,Y),y(I,T),re===5&&Y!==2&&I.write(n.from([N])),J!==null?J.write():Y===4&&I.write(n.from([0])),!0}function R(E,I,K){s("subscribe: packet: ");let re=K?K.protocolVersion:4,oe=E||{},se=oe.dup?r.DUP_MASK:0,T=oe.messageId,k=oe.subscriptions,v=oe.properties,N=0;if(typeof T!="number")return I.destroy(new Error("Invalid messageId")),!1;N+=2;let B=null;if(re===5){if(B=be(I,v),!B)return!1;N+=B.length}if(typeof k=="object"&&k.length)for(let J=0;J<k.length;J+=1){let M=k[J].topic,H=k[J].qos;if(typeof M!="string")return I.destroy(new Error("Invalid subscriptions - invalid topic")),!1;if(typeof H!="number")return I.destroy(new Error("Invalid subscriptions - invalid qos")),!1;if(re===5){if(typeof(k[J].nl||!1)!="boolean")return I.destroy(new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(k[J].rap||!1)!="boolean")return I.destroy(new Error("Invalid subscriptions - invalid Retain as Published")),!1;let C=k[J].rh||0;if(typeof C!="number"||C>2)return I.destroy(new Error("Invalid subscriptions - invalid Retain Handling")),!1}N+=n.byteLength(M)+2+1}else return I.destroy(new Error("Invalid subscriptions")),!1;s("subscribe: writing to stream: %o",r.SUBSCRIBE_HEADER),I.write(r.SUBSCRIBE_HEADER[1][se?1:0][0]),ae(I,N),y(I,T),B!==null&&B.write();let Y=!0;for(let J of k){let M=J.topic,H=J.qos,C=+J.nl,$=+J.rap,q=J.rh,ee;te(I,M),ee=r.SUBSCRIBE_OPTIONS_QOS[H],re===5&&(ee|=C?r.SUBSCRIBE_OPTIONS_NL:0,ee|=$?r.SUBSCRIBE_OPTIONS_RAP:0,ee|=q?r.SUBSCRIBE_OPTIONS_RH[q]:0),Y=I.write(n.from([ee]))}return Y}function x(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.messageId,T=oe.granted,k=oe.properties,v=0;if(typeof se!="number")return I.destroy(new Error("Invalid messageId")),!1;if(v+=2,typeof T=="object"&&T.length)for(let B=0;B<T.length;B+=1){if(typeof T[B]!="number")return I.destroy(new Error("Invalid qos vector")),!1;v+=1}else return I.destroy(new Error("Invalid qos vector")),!1;let N=null;if(re===5){if(N=A(I,k,K,v),!N)return!1;v+=N.length}return I.write(r.SUBACK_HEADER),ae(I,v),y(I,se),N!==null&&N.write(),I.write(n.from(T))}function j(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.messageId,T=oe.dup?r.DUP_MASK:0,k=oe.unsubscriptions,v=oe.properties,N=0;if(typeof se!="number")return I.destroy(new Error("Invalid messageId")),!1;if(N+=2,typeof k=="object"&&k.length)for(let J=0;J<k.length;J+=1){if(typeof k[J]!="string")return I.destroy(new Error("Invalid unsubscriptions")),!1;N+=n.byteLength(k[J])+2}else return I.destroy(new Error("Invalid unsubscriptions")),!1;let B=null;if(re===5){if(B=be(I,v),!B)return!1;N+=B.length}I.write(r.UNSUBSCRIBE_HEADER[1][T?1:0][0]),ae(I,N),y(I,se),B!==null&&B.write();let Y=!0;for(let J=0;J<k.length;J++)Y=te(I,k[J]);return Y}function F(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.messageId,T=oe.dup?r.DUP_MASK:0,k=oe.granted,v=oe.properties,N=oe.cmd,B=0,Y=2;if(typeof se!="number")return I.destroy(new Error("Invalid messageId")),!1;if(re===5)if(typeof k=="object"&&k.length)for(let M=0;M<k.length;M+=1){if(typeof k[M]!="number")return I.destroy(new Error("Invalid qos vector")),!1;Y+=1}else return I.destroy(new Error("Invalid qos vector")),!1;let J=null;if(re===5){if(J=A(I,v,K,Y),!J)return!1;Y+=J.length}return I.write(r.ACKS[N][B][T][0]),ae(I,Y),y(I,se),J!==null&&J.write(),re===5&&I.write(n.from(k)),!0}function X(E,I,K){return I.write(r.EMPTY[E.cmd])}function Z(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.reasonCode,T=oe.properties,k=re===5?1:0,v=null;if(re===5){if(v=A(I,T,K,k),!v)return!1;k+=v.length}return I.write(n.from([r.codes.disconnect<<4])),ae(I,k),re===5&&I.write(n.from([se])),v!==null&&v.write(),!0}function S(E,I,K){let re=K?K.protocolVersion:4,oe=E||{},se=oe.reasonCode,T=oe.properties,k=re===5?1:0;re!==5&&I.destroy(new Error("Invalid mqtt version for auth packet"));let v=A(I,T,K,k);return v?(k+=v.length,I.write(n.from([r.codes.auth<<4])),ae(I,k),I.write(n.from([se])),v!==null&&v.write(),!0):!1}var z={};function ae(E,I){if(I>r.VARBYTEINT_MAX)return E.destroy(new Error(`Invalid variable byte integer: ${I}`)),!1;let K=z[I];return K||(K=p(I),I<16384&&(z[I]=K)),s("writeVarByteInt: writing to stream: %o",K),E.write(K)}function te(E,I){let K=n.byteLength(I);return y(E,K),s("writeString: %s",I),E.write(I,"utf8")}function le(E,I,K){te(E,I),te(E,K)}function ne(E,I){return s("writeNumberCached: number: %d",I),s("writeNumberCached: %o",u[I]),E.write(u[I])}function G(E,I){let K=c(I);return s("writeNumberGenerated: %o",K),E.write(K)}function de(E,I){let K=m(I);return s("write4ByteNumber: %o",K),E.write(K)}function ce(E,I){typeof I=="string"?te(E,I):I?(y(E,I.length),E.write(I)):y(E,0)}function be(E,I){if(typeof I!="object"||I.length!=null)return{length:1,write(){he(E,{},0)}};let K=0;function re(oe,se){let T=r.propertiesTypes[oe],k=0;switch(T){case"byte":{if(typeof se!="boolean")return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;k+=2;break}case"int8":{if(typeof se!="number"||se<0||se>255)return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;k+=2;break}case"binary":{if(se&&se===null)return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;k+=1+n.byteLength(se)+2;break}case"int16":{if(typeof se!="number"||se<0||se>65535)return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;k+=3;break}case"int32":{if(typeof se!="number"||se<0||se>4294967295)return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;k+=5;break}case"var":{if(typeof se!="number"||se<0||se>268435455)return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;k+=1+n.byteLength(p(se));break}case"string":{if(typeof se!="string")return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;k+=3+n.byteLength(se.toString());break}case"pair":{if(typeof se!="object")return E.destroy(new Error(`Invalid ${oe}: ${se}`)),!1;k+=Object.getOwnPropertyNames(se).reduce((v,N)=>{let B=se[N];return Array.isArray(B)?v+=B.reduce((Y,J)=>(Y+=3+n.byteLength(N.toString())+2+n.byteLength(J.toString()),Y),0):v+=3+n.byteLength(N.toString())+2+n.byteLength(se[N].toString()),v},0);break}default:return E.destroy(new Error(`Invalid property ${oe}: ${se}`)),!1}return k}if(I)for(let oe in I){let se=0,T=0,k=I[oe];if(Array.isArray(k))for(let v=0;v<k.length;v++){if(T=re(oe,k[v]),!T)return!1;se+=T}else{if(T=re(oe,k),!T)return!1;se=T}if(!se)return!1;K+=se}return{length:n.byteLength(p(K))+K,write(){he(E,I,K)}}}function A(E,I,K,re){let oe=["reasonString","userProperties"],se=K&&K.properties&&K.properties.maximumPacketSize?K.properties.maximumPacketSize:0,T=be(E,I);if(se)for(;re+T.length>se;){let k=oe.shift();if(k&&I[k])delete I[k],T=be(E,I);else return!1}return T}function ie(E,I,K){switch(r.propertiesTypes[I]){case"byte":{E.write(n.from([r.properties[I]])),E.write(n.from([+K]));break}case"int8":{E.write(n.from([r.properties[I]])),E.write(n.from([K]));break}case"binary":{E.write(n.from([r.properties[I]])),ce(E,K);break}case"int16":{E.write(n.from([r.properties[I]])),y(E,K);break}case"int32":{E.write(n.from([r.properties[I]])),de(E,K);break}case"var":{E.write(n.from([r.properties[I]])),ae(E,K);break}case"string":{E.write(n.from([r.properties[I]])),te(E,K);break}case"pair":{Object.getOwnPropertyNames(K).forEach(re=>{let oe=K[re];Array.isArray(oe)?oe.forEach(se=>{E.write(n.from([r.properties[I]])),le(E,re.toString(),se.toString())}):(E.write(n.from([r.properties[I]])),le(E,re.toString(),oe.toString()))});break}default:return E.destroy(new Error(`Invalid property ${I} value: ${K}`)),!1}}function he(E,I,K){ae(E,K);for(let re in I)if(Object.prototype.hasOwnProperty.call(I,re)&&I[re]!==null){let oe=I[re];if(Array.isArray(oe))for(let se=0;se<oe.length;se++)ie(E,re,oe[se]);else ie(E,re,oe)}}function we(E){return E?E instanceof n?E.length:n.byteLength(E):0}function fe(E){return typeof E=="string"||E instanceof n}t.exports=O}),s0=ve((e,t)=>{pe(),me(),ge();var r=pd(),{EventEmitter:n}=(Bn(),Ue(pn)),{Buffer:a}=(at(),Ue(st));function i(l,s){let u=new o;return r(l,u,s),u.concat()}var o=class extends n{constructor(){super(),this._array=new Array(20),this._i=0}write(l){return this._array[this._i++]=l,!0}concat(){let l=0,s=new Array(this._array.length),u=this._array,c=0,h;for(h=0;h<u.length&&u[h]!==void 0;h++)typeof u[h]!="string"?s[h]=u[h].length:s[h]=a.byteLength(u[h]),l+=s[h];let p=a.allocUnsafe(l);for(h=0;h<u.length&&u[h]!==void 0;h++)typeof u[h]!="string"?(u[h].copy(p,c),c+=s[h]):(p.write(u[h],c),c+=s[h]);return p}destroy(l){l&&this.emit("error",l)}};t.exports=i}),a0=ve(e=>{pe(),me(),ge(),e.parser=n0().parser,e.generate=s0(),e.writeToStream=pd()}),gd=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(){this.nextId=Math.max(1,Math.floor(Math.random()*65535))}allocate(){let r=this.nextId++;return this.nextId===65536&&(this.nextId=1),r}getLastAllocated(){return this.nextId===1?65535:this.nextId-1}register(r){return!0}deallocate(r){}clear(){}};e.default=t}),l0=ve((e,t)=>{pe(),me(),ge(),t.exports=n;function r(i){return i instanceof no?no.from(i):new i.constructor(i.buffer.slice(),i.byteOffset,i.length)}function n(i){if(i=i||{},i.circles)return a(i);return i.proto?s:l;function o(u,c){for(var h=Object.keys(u),p=new Array(h.length),m=0;m<h.length;m++){var y=h[m],b=u[y];typeof b!="object"||b===null?p[y]=b:b instanceof Date?p[y]=new Date(b):ArrayBuffer.isView(b)?p[y]=r(b):p[y]=c(b)}return p}function l(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return o(u,l);if(u instanceof Map)return new Map(o(Array.from(u),l));if(u instanceof Set)return new Set(o(Array.from(u),l));var c={};for(var h in u)if(Object.hasOwnProperty.call(u,h)!==!1){var p=u[h];typeof p!="object"||p===null?c[h]=p:p instanceof Date?c[h]=new Date(p):p instanceof Map?c[h]=new Map(o(Array.from(p),l)):p instanceof Set?c[h]=new Set(o(Array.from(p),l)):ArrayBuffer.isView(p)?c[h]=r(p):c[h]=l(p)}return c}function s(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return o(u,s);if(u instanceof Map)return new Map(o(Array.from(u),s));if(u instanceof Set)return new Set(o(Array.from(u),s));var c={};for(var h in u){var p=u[h];typeof p!="object"||p===null?c[h]=p:p instanceof Date?c[h]=new Date(p):p instanceof Map?c[h]=new Map(o(Array.from(p),s)):p instanceof Set?c[h]=new Set(o(Array.from(p),s)):ArrayBuffer.isView(p)?c[h]=r(p):c[h]=s(p)}return c}}function a(i){var o=[],l=[];return i.proto?c:u;function s(h,p){for(var m=Object.keys(h),y=new Array(m.length),b=0;b<m.length;b++){var O=m[b],L=h[O];if(typeof L!="object"||L===null)y[O]=L;else if(L instanceof Date)y[O]=new Date(L);else if(ArrayBuffer.isView(L))y[O]=r(L);else{var P=o.indexOf(L);P!==-1?y[O]=l[P]:y[O]=p(L)}}return y}function u(h){if(typeof h!="object"||h===null)return h;if(h instanceof Date)return new Date(h);if(Array.isArray(h))return s(h,u);if(h instanceof Map)return new Map(s(Array.from(h),u));if(h instanceof Set)return new Set(s(Array.from(h),u));var p={};o.push(h),l.push(p);for(var m in h)if(Object.hasOwnProperty.call(h,m)!==!1){var y=h[m];if(typeof y!="object"||y===null)p[m]=y;else if(y instanceof Date)p[m]=new Date(y);else if(y instanceof Map)p[m]=new Map(s(Array.from(y),u));else if(y instanceof Set)p[m]=new Set(s(Array.from(y),u));else if(ArrayBuffer.isView(y))p[m]=r(y);else{var b=o.indexOf(y);b!==-1?p[m]=l[b]:p[m]=u(y)}}return o.pop(),l.pop(),p}function c(h){if(typeof h!="object"||h===null)return h;if(h instanceof Date)return new Date(h);if(Array.isArray(h))return s(h,c);if(h instanceof Map)return new Map(s(Array.from(h),c));if(h instanceof Set)return new Set(s(Array.from(h),c));var p={};o.push(h),l.push(p);for(var m in h){var y=h[m];if(typeof y!="object"||y===null)p[m]=y;else if(y instanceof Date)p[m]=new Date(y);else if(y instanceof Map)p[m]=new Map(s(Array.from(y),c));else if(y instanceof Set)p[m]=new Set(s(Array.from(y),c));else if(ArrayBuffer.isView(y))p[m]=r(y);else{var b=o.indexOf(y);b!==-1?p[m]=l[b]:p[m]=c(y)}}return o.pop(),l.pop(),p}}}),u0=ve((e,t)=>{pe(),me(),ge(),t.exports=l0()()}),c0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.validateTopics=e.validateTopic=void 0;function t(n){let a=n.split("/");for(let i=0;i<a.length;i++)if(a[i]!=="+"){if(a[i]==="#")return i===a.length-1;if(a[i].indexOf("+")!==-1||a[i].indexOf("#")!==-1)return!1}return!0}e.validateTopic=t;function r(n){if(n.length===0)return"empty_topic_list";for(let a=0;a<n.length;a++)if(!t(n[a]))return n[a];return null}e.validateTopics=r}),md=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=gn(),r={objectMode:!0},n={clean:!0},a=class{constructor(i){this.options=i||{},this.options=Object.assign(Object.assign({},n),i),this._inflights=new Map}put(i,o){return this._inflights.set(i.messageId,i),o&&o(),this}createStream(){let i=new t.Readable(r),o=[],l=!1,s=0;return this._inflights.forEach((u,c)=>{o.push(u)}),i._read=()=>{!l&&s<o.length?i.push(o[s++]):i.push(null)},i.destroy=u=>{if(!l)return l=!0,setTimeout(()=>{i.emit("close")},0),i},i}del(i,o){let l=this._inflights.get(i.messageId);return l?(this._inflights.delete(i.messageId),o(null,l)):o&&o(new Error("missing packet")),this}get(i,o){let l=this._inflights.get(i.messageId);return l?o(null,l):o&&o(new Error("missing packet")),this}close(i){this.options.clean&&(this._inflights=null),i&&i()}};e.default=a}),f0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=[0,16,128,131,135,144,145,151,153],r=(n,a,i)=>{n.log("handlePublish: packet %o",a),i=typeof i<"u"?i:n.noop;let o=a.topic.toString(),l=a.payload,{qos:s}=a,{messageId:u}=a,{options:c}=n;if(n.options.protocolVersion===5){let h;if(a.properties&&(h=a.properties.topicAlias),typeof h<"u")if(o.length===0)if(h>0&&h<=65535){let p=n.topicAliasRecv.getTopicByAlias(h);if(p)o=p,n.log("handlePublish :: topic complemented by alias. topic: %s - alias: %d",o,h);else{n.log("handlePublish :: unregistered topic alias. alias: %d",h),n.emit("error",new Error("Received unregistered Topic Alias"));return}}else{n.log("handlePublish :: topic alias out of range. alias: %d",h),n.emit("error",new Error("Received Topic Alias is out of range"));return}else if(n.topicAliasRecv.put(o,h))n.log("handlePublish :: registered topic: %s - alias: %d",o,h);else{n.log("handlePublish :: topic alias out of range. alias: %d",h),n.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(n.log("handlePublish: qos %d",s),s){case 2:{c.customHandleAcks(o,l,a,(h,p)=>{if(typeof h=="number"&&(p=h,h=null),h)return n.emit("error",h);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for pubrec"));p?n._sendPacket({cmd:"pubrec",messageId:u,reasonCode:p},i):n.incomingStore.put(a,()=>{n._sendPacket({cmd:"pubrec",messageId:u},i)})});break}case 1:{c.customHandleAcks(o,l,a,(h,p)=>{if(typeof h=="number"&&(p=h,h=null),h)return n.emit("error",h);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for puback"));p||n.emit("message",o,l,a),n.handleMessage(a,m=>{if(m)return i&&i(m);n._sendPacket({cmd:"puback",messageId:u,reasonCode:p},i)})});break}case 0:n.emit("message",o,l,a),n.handleMessage(a,i);break;default:n.log("handlePublish: unknown QoS. Doing nothing.");break}};e.default=r}),h0=ve((e,t)=>{t.exports={version:"5.10.0"}}),Mn=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.MQTTJS_VERSION=e.nextTick=e.applyMixin=e.ErrorWithReasonCode=void 0;var t=class yd extends Error{constructor(a,i){super(a),this.code=i,Object.setPrototypeOf(this,yd.prototype),Object.getPrototypeOf(this).name="ErrorWithReasonCode"}};e.ErrorWithReasonCode=t;function r(n,a,i=!1){var o;let l=[a];for(;;){let s=l[0],u=Object.getPrototypeOf(s);if(u!=null&&u.prototype)l.unshift(u);else break}for(let s of l)for(let u of Object.getOwnPropertyNames(s.prototype))(i||u!=="constructor")&&Object.defineProperty(n.prototype,u,(o=Object.getOwnPropertyDescriptor(s.prototype,u))!==null&&o!==void 0?o:Object.create(null))}e.applyMixin=r,e.nextTick=typeof(Me==null?void 0:Me.nextTick)=="function"?Me.nextTick:n=>{setTimeout(n,0)},e.MQTTJS_VERSION=h0().version}),ko=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=void 0;var t=Mn();e.ReasonCodes={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};var r=(n,a)=>{let{messageId:i}=a,o=a.cmd,l=null,s=n.outgoing[i]?n.outgoing[i].cb:null,u=null;if(!s){n.log("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(n.log("_handleAck :: packet type",o),o){case"pubcomp":case"puback":{let c=a.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{s(u,a)})):n._removeOutgoingAndStoreMessage(i,s);break}case"pubrec":{l={cmd:"pubrel",qos:2,messageId:i};let c=a.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{s(u,a)})):n._sendPacket(l);break}case"suback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i);let c=a.granted;for(let h=0;h<c.length;h++){let p=c[h];if(p&128){u=new Error(`Subscribe error: ${e.ReasonCodes[p]}`),u.code=p;let m=n.messageIdToTopic[i];m&&m.forEach(y=>{delete n._resubscribeTopics[y]})}}delete n.messageIdToTopic[i],n._invokeStoreProcessingQueue(),s(u,a);break}case"unsuback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i),n._invokeStoreProcessingQueue(),s(null,a);break}default:n.emit("error",new Error("unrecognized packet type"))}n.disconnecting&&Object.keys(n.outgoing).length===0&&n.emit("outgoingEmpty")};e.default=r}),d0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=Mn(),r=ko(),n=(a,i)=>{let{options:o}=a,l=o.protocolVersion,s=l===5?i.reasonCode:i.returnCode;if(l!==5){let u=new t.ErrorWithReasonCode(`Protocol error: Auth packets are only supported in MQTT 5. Your version:${l}`,s);a.emit("error",u);return}a.handleAuth(i,(u,c)=>{if(u){a.emit("error",u);return}if(s===24)a.reconnecting=!1,a._sendPacket(c);else{let h=new t.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[s]}`,s);a.emit("error",h)}})};e.default=n}),p0=ve(e=>{var m,y,b,O,L,P,w,U,W,R,x,j,F,X,Z,S,z,ae,te,le,ne,G,de,ce,be,A,Ua,he,we,fe,E,bd,K,re,oe,_r,Er,Da,Hi,Vi,We,Fa,Kn,M;pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=void 0;var t=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,r=new Set,n=typeof Me=="object"&&Me?Me:{},a=(H,C,$,q)=>{typeof n.emitWarning=="function"?n.emitWarning(H,C,$,q):console.error(`[${$}] ${C}: ${H}`)},i=globalThis.AbortController,o=globalThis.AbortSignal;if(typeof i>"u"){o=class{constructor(){qe(this,"onabort");qe(this,"_onabort",[]);qe(this,"reason");qe(this,"aborted",!1)}addEventListener($,q){this._onabort.push(q)}},i=class{constructor(){qe(this,"signal",new o);C()}abort($){var q,ee;if(!this.signal.aborted){this.signal.reason=$,this.signal.aborted=!0;for(let d of this.signal._onabort)d($);(ee=(q=this.signal).onabort)==null||ee.call(q,$)}}};let H=((m=n.env)==null?void 0:m.LRU_CACHE_IGNORE_AC_WARNING)!=="1",C=()=>{H&&(H=!1,a("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",C))}}var l=H=>!r.has(H),s=H=>H&&H===Math.floor(H)&&H>0&&isFinite(H),u=H=>s(H)?H<=Math.pow(2,8)?Uint8Array:H<=Math.pow(2,16)?Uint16Array:H<=Math.pow(2,32)?Uint32Array:H<=Number.MAX_SAFE_INTEGER?c:null:null,c=class extends Array{constructor(H){super(H),this.fill(0)}},h=(y=class{constructor(C,$){qe(this,"heap");qe(this,"length");if(!V(y,b))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new $(C),this.length=0}static create(C){let $=u(C);if(!$)return[];Ie(y,b,!0);let q=new y(C,$);return Ie(y,b,!1),q}push(C){this.heap[this.length++]=C}pop(){return this.heap[--this.length]}},b=new WeakMap,Be(y,b,!1),y),p=(M=class{constructor(C){Be(this,A);Be(this,O);Be(this,L);Be(this,P);Be(this,w);Be(this,U);qe(this,"ttl");qe(this,"ttlResolution");qe(this,"ttlAutopurge");qe(this,"updateAgeOnGet");qe(this,"updateAgeOnHas");qe(this,"allowStale");qe(this,"noDisposeOnSet");qe(this,"noUpdateTTL");qe(this,"maxEntrySize");qe(this,"sizeCalculation");qe(this,"noDeleteOnFetchRejection");qe(this,"noDeleteOnStaleGet");qe(this,"allowStaleOnFetchAbort");qe(this,"allowStaleOnFetchRejection");qe(this,"ignoreFetchAbort");Be(this,W);Be(this,R);Be(this,x);Be(this,j);Be(this,F);Be(this,X);Be(this,Z);Be(this,S);Be(this,z);Be(this,ae);Be(this,te);Be(this,le);Be(this,ne);Be(this,G);Be(this,de);Be(this,ce);Be(this,be);Be(this,he,()=>{});Be(this,we,()=>{});Be(this,fe,()=>{});Be(this,E,()=>!1);Be(this,K,C=>{});Be(this,re,(C,$,q)=>{});Be(this,oe,(C,$,q,ee)=>{if(q||ee)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});let{max:$=0,ttl:q,ttlResolution:ee=1,ttlAutopurge:d,updateAgeOnGet:f,updateAgeOnHas:g,allowStale:_,dispose:D,disposeAfter:Q,noDisposeOnSet:ue,noUpdateTTL:Ae,maxSize:Oe=0,maxEntrySize:Pe=0,sizeCalculation:_e,fetchMethod:Se,noDeleteOnFetchRejection:Ce,noDeleteOnStaleGet:De,allowStaleOnFetchRejection:Ze,allowStaleOnFetchAbort:Ge,ignoreFetchAbort:it}=C;if($!==0&&!s($))throw new TypeError("max option must be a nonnegative integer");let ct=$?u($):Array;if(!ct)throw new Error("invalid max value: "+$);if(Ie(this,O,$),Ie(this,L,Oe),this.maxEntrySize=Pe||V(this,L),this.sizeCalculation=_e,this.sizeCalculation){if(!V(this,L)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(Se!==void 0&&typeof Se!="function")throw new TypeError("fetchMethod must be a function if specified");if(Ie(this,U,Se),Ie(this,ce,!!Se),Ie(this,x,new Map),Ie(this,j,new Array($).fill(void 0)),Ie(this,F,new Array($).fill(void 0)),Ie(this,X,new ct($)),Ie(this,Z,new ct($)),Ie(this,S,0),Ie(this,z,0),Ie(this,ae,h.create($)),Ie(this,W,0),Ie(this,R,0),typeof D=="function"&&Ie(this,P,D),typeof Q=="function"?(Ie(this,w,Q),Ie(this,te,[])):(Ie(this,w,void 0),Ie(this,te,void 0)),Ie(this,de,!!V(this,P)),Ie(this,be,!!V(this,w)),this.noDisposeOnSet=!!ue,this.noUpdateTTL=!!Ae,this.noDeleteOnFetchRejection=!!Ce,this.allowStaleOnFetchRejection=!!Ze,this.allowStaleOnFetchAbort=!!Ge,this.ignoreFetchAbort=!!it,this.maxEntrySize!==0){if(V(this,L)!==0&&!s(V(this,L)))throw new TypeError("maxSize must be a positive integer if specified");if(!s(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Ee(this,A,bd).call(this)}if(this.allowStale=!!_,this.noDeleteOnStaleGet=!!De,this.updateAgeOnGet=!!f,this.updateAgeOnHas=!!g,this.ttlResolution=s(ee)||ee===0?ee:1,this.ttlAutopurge=!!d,this.ttl=q||0,this.ttl){if(!s(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Ee(this,A,Ua).call(this)}if(V(this,O)===0&&this.ttl===0&&V(this,L)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!V(this,O)&&!V(this,L)){let et="LRU_CACHE_UNBOUNDED";l(et)&&(r.add(et),a("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",et,M))}}static unsafeExposeInternals(C){return{starts:V(C,ne),ttls:V(C,G),sizes:V(C,le),keyMap:V(C,x),keyList:V(C,j),valList:V(C,F),next:V(C,X),prev:V(C,Z),get head(){return V(C,S)},get tail(){return V(C,z)},free:V(C,ae),isBackgroundFetch:$=>{var q;return Ee(q=C,A,We).call(q,$)},backgroundFetch:($,q,ee,d)=>{var f;return Ee(f=C,A,Vi).call(f,$,q,ee,d)},moveToTail:$=>{var q;return Ee(q=C,A,Kn).call(q,$)},indexes:$=>{var q;return Ee(q=C,A,_r).call(q,$)},rindexes:$=>{var q;return Ee(q=C,A,Er).call(q,$)},isStale:$=>{var q;return V(q=C,E).call(q,$)}}}get max(){return V(this,O)}get maxSize(){return V(this,L)}get calculatedSize(){return V(this,R)}get size(){return V(this,W)}get fetchMethod(){return V(this,U)}get dispose(){return V(this,P)}get disposeAfter(){return V(this,w)}getRemainingTTL(C){return V(this,x).has(C)?1/0:0}*entries(){for(let C of Ee(this,A,_r).call(this))V(this,F)[C]!==void 0&&V(this,j)[C]!==void 0&&!Ee(this,A,We).call(this,V(this,F)[C])&&(yield[V(this,j)[C],V(this,F)[C]])}*rentries(){for(let C of Ee(this,A,Er).call(this))V(this,F)[C]!==void 0&&V(this,j)[C]!==void 0&&!Ee(this,A,We).call(this,V(this,F)[C])&&(yield[V(this,j)[C],V(this,F)[C]])}*keys(){for(let C of Ee(this,A,_r).call(this)){let $=V(this,j)[C];$!==void 0&&!Ee(this,A,We).call(this,V(this,F)[C])&&(yield $)}}*rkeys(){for(let C of Ee(this,A,Er).call(this)){let $=V(this,j)[C];$!==void 0&&!Ee(this,A,We).call(this,V(this,F)[C])&&(yield $)}}*values(){for(let C of Ee(this,A,_r).call(this))V(this,F)[C]!==void 0&&!Ee(this,A,We).call(this,V(this,F)[C])&&(yield V(this,F)[C])}*rvalues(){for(let C of Ee(this,A,Er).call(this))V(this,F)[C]!==void 0&&!Ee(this,A,We).call(this,V(this,F)[C])&&(yield V(this,F)[C])}[Symbol.iterator](){return this.entries()}find(C,$={}){for(let q of Ee(this,A,_r).call(this)){let ee=V(this,F)[q],d=Ee(this,A,We).call(this,ee)?ee.__staleWhileFetching:ee;if(d!==void 0&&C(d,V(this,j)[q],this))return this.get(V(this,j)[q],$)}}forEach(C,$=this){for(let q of Ee(this,A,_r).call(this)){let ee=V(this,F)[q],d=Ee(this,A,We).call(this,ee)?ee.__staleWhileFetching:ee;d!==void 0&&C.call($,d,V(this,j)[q],this)}}rforEach(C,$=this){for(let q of Ee(this,A,Er).call(this)){let ee=V(this,F)[q],d=Ee(this,A,We).call(this,ee)?ee.__staleWhileFetching:ee;d!==void 0&&C.call($,d,V(this,j)[q],this)}}purgeStale(){let C=!1;for(let $ of Ee(this,A,Er).call(this,{allowStale:!0}))V(this,E).call(this,$)&&(this.delete(V(this,j)[$]),C=!0);return C}dump(){let C=[];for(let $ of Ee(this,A,_r).call(this,{allowStale:!0})){let q=V(this,j)[$],ee=V(this,F)[$],d=Ee(this,A,We).call(this,ee)?ee.__staleWhileFetching:ee;if(d===void 0||q===void 0)continue;let f={value:d};if(V(this,G)&&V(this,ne)){f.ttl=V(this,G)[$];let g=t.now()-V(this,ne)[$];f.start=Math.floor(Date.now()-g)}V(this,le)&&(f.size=V(this,le)[$]),C.unshift([q,f])}return C}load(C){this.clear();for(let[$,q]of C){if(q.start){let ee=Date.now()-q.start;q.start=t.now()-ee}this.set($,q.value,q)}}set(C,$,q={}){var Ae,Oe,Pe,_e,Se;if($===void 0)return this.delete(C),this;let{ttl:ee=this.ttl,start:d,noDisposeOnSet:f=this.noDisposeOnSet,sizeCalculation:g=this.sizeCalculation,status:_}=q,{noUpdateTTL:D=this.noUpdateTTL}=q,Q=V(this,oe).call(this,C,$,q.size||0,g);if(this.maxEntrySize&&Q>this.maxEntrySize)return _&&(_.set="miss",_.maxEntrySizeExceeded=!0),this.delete(C),this;let ue=V(this,W)===0?void 0:V(this,x).get(C);if(ue===void 0)ue=V(this,W)===0?V(this,z):V(this,ae).length!==0?V(this,ae).pop():V(this,W)===V(this,O)?Ee(this,A,Hi).call(this,!1):V(this,W),V(this,j)[ue]=C,V(this,F)[ue]=$,V(this,x).set(C,ue),V(this,X)[V(this,z)]=ue,V(this,Z)[ue]=V(this,z),Ie(this,z,ue),vi(this,W)._++,V(this,re).call(this,ue,Q,_),_&&(_.set="add"),D=!1;else{Ee(this,A,Kn).call(this,ue);let Ce=V(this,F)[ue];if($!==Ce){if(V(this,ce)&&Ee(this,A,We).call(this,Ce)){Ce.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:De}=Ce;De!==void 0&&!f&&(V(this,de)&&((Ae=V(this,P))==null||Ae.call(this,De,C,"set")),V(this,be)&&((Oe=V(this,te))==null||Oe.push([De,C,"set"])))}else f||(V(this,de)&&((Pe=V(this,P))==null||Pe.call(this,Ce,C,"set")),V(this,be)&&((_e=V(this,te))==null||_e.push([Ce,C,"set"])));if(V(this,K).call(this,ue),V(this,re).call(this,ue,Q,_),V(this,F)[ue]=$,_){_.set="replace";let De=Ce&&Ee(this,A,We).call(this,Ce)?Ce.__staleWhileFetching:Ce;De!==void 0&&(_.oldValue=De)}}else _&&(_.set="update")}if(ee!==0&&!V(this,G)&&Ee(this,A,Ua).call(this),V(this,G)&&(D||V(this,fe).call(this,ue,ee,d),_&&V(this,we).call(this,_,ue)),!f&&V(this,be)&&V(this,te)){let Ce=V(this,te),De;for(;De=Ce==null?void 0:Ce.shift();)(Se=V(this,w))==null||Se.call(this,...De)}return this}pop(){var C;try{for(;V(this,W);){let $=V(this,F)[V(this,S)];if(Ee(this,A,Hi).call(this,!0),Ee(this,A,We).call(this,$)){if($.__staleWhileFetching)return $.__staleWhileFetching}else if($!==void 0)return $}}finally{if(V(this,be)&&V(this,te)){let $=V(this,te),q;for(;q=$==null?void 0:$.shift();)(C=V(this,w))==null||C.call(this,...q)}}}has(C,$={}){let{updateAgeOnHas:q=this.updateAgeOnHas,status:ee}=$,d=V(this,x).get(C);if(d!==void 0){let f=V(this,F)[d];if(Ee(this,A,We).call(this,f)&&f.__staleWhileFetching===void 0)return!1;if(V(this,E).call(this,d))ee&&(ee.has="stale",V(this,we).call(this,ee,d));else return q&&V(this,he).call(this,d),ee&&(ee.has="hit",V(this,we).call(this,ee,d)),!0}else ee&&(ee.has="miss");return!1}peek(C,$={}){let{allowStale:q=this.allowStale}=$,ee=V(this,x).get(C);if(ee!==void 0&&(q||!V(this,E).call(this,ee))){let d=V(this,F)[ee];return Ee(this,A,We).call(this,d)?d.__staleWhileFetching:d}}async fetch(C,$={}){let{allowStale:q=this.allowStale,updateAgeOnGet:ee=this.updateAgeOnGet,noDeleteOnStaleGet:d=this.noDeleteOnStaleGet,ttl:f=this.ttl,noDisposeOnSet:g=this.noDisposeOnSet,size:_=0,sizeCalculation:D=this.sizeCalculation,noUpdateTTL:Q=this.noUpdateTTL,noDeleteOnFetchRejection:ue=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:Ae=this.allowStaleOnFetchRejection,ignoreFetchAbort:Oe=this.ignoreFetchAbort,allowStaleOnFetchAbort:Pe=this.allowStaleOnFetchAbort,context:_e,forceRefresh:Se=!1,status:Ce,signal:De}=$;if(!V(this,ce))return Ce&&(Ce.fetch="get"),this.get(C,{allowStale:q,updateAgeOnGet:ee,noDeleteOnStaleGet:d,status:Ce});let Ze={allowStale:q,updateAgeOnGet:ee,noDeleteOnStaleGet:d,ttl:f,noDisposeOnSet:g,size:_,sizeCalculation:D,noUpdateTTL:Q,noDeleteOnFetchRejection:ue,allowStaleOnFetchRejection:Ae,allowStaleOnFetchAbort:Pe,ignoreFetchAbort:Oe,status:Ce,signal:De},Ge=V(this,x).get(C);if(Ge===void 0){Ce&&(Ce.fetch="miss");let it=Ee(this,A,Vi).call(this,C,Ge,Ze,_e);return it.__returned=it}else{let it=V(this,F)[Ge];if(Ee(this,A,We).call(this,it)){let Kl=q&&it.__staleWhileFetching!==void 0;return Ce&&(Ce.fetch="inflight",Kl&&(Ce.returnedStale=!0)),Kl?it.__staleWhileFetching:it.__returned=it}let ct=V(this,E).call(this,Ge);if(!Se&&!ct)return Ce&&(Ce.fetch="hit"),Ee(this,A,Kn).call(this,Ge),ee&&V(this,he).call(this,Ge),Ce&&V(this,we).call(this,Ce,Ge),it;let et=Ee(this,A,Vi).call(this,C,Ge,Ze,_e),ql=et.__staleWhileFetching!==void 0&&q;return Ce&&(Ce.fetch=ct?"stale":"refresh",ql&&ct&&(Ce.returnedStale=!0)),ql?et.__staleWhileFetching:et.__returned=et}}get(C,$={}){let{allowStale:q=this.allowStale,updateAgeOnGet:ee=this.updateAgeOnGet,noDeleteOnStaleGet:d=this.noDeleteOnStaleGet,status:f}=$,g=V(this,x).get(C);if(g!==void 0){let _=V(this,F)[g],D=Ee(this,A,We).call(this,_);return f&&V(this,we).call(this,f,g),V(this,E).call(this,g)?(f&&(f.get="stale"),D?(f&&q&&_.__staleWhileFetching!==void 0&&(f.returnedStale=!0),q?_.__staleWhileFetching:void 0):(d||this.delete(C),f&&q&&(f.returnedStale=!0),q?_:void 0)):(f&&(f.get="hit"),D?_.__staleWhileFetching:(Ee(this,A,Kn).call(this,g),ee&&V(this,he).call(this,g),_))}else f&&(f.get="miss")}delete(C){var q,ee,d,f;let $=!1;if(V(this,W)!==0){let g=V(this,x).get(C);if(g!==void 0)if($=!0,V(this,W)===1)this.clear();else{V(this,K).call(this,g);let _=V(this,F)[g];Ee(this,A,We).call(this,_)?_.__abortController.abort(new Error("deleted")):(V(this,de)||V(this,be))&&(V(this,de)&&((q=V(this,P))==null||q.call(this,_,C,"delete")),V(this,be)&&((ee=V(this,te))==null||ee.push([_,C,"delete"]))),V(this,x).delete(C),V(this,j)[g]=void 0,V(this,F)[g]=void 0,g===V(this,z)?Ie(this,z,V(this,Z)[g]):g===V(this,S)?Ie(this,S,V(this,X)[g]):(V(this,X)[V(this,Z)[g]]=V(this,X)[g],V(this,Z)[V(this,X)[g]]=V(this,Z)[g]),vi(this,W)._--,V(this,ae).push(g)}}if(V(this,be)&&((d=V(this,te))!=null&&d.length)){let g=V(this,te),_;for(;_=g==null?void 0:g.shift();)(f=V(this,w))==null||f.call(this,..._)}return $}clear(){var C,$,q;for(let ee of Ee(this,A,Er).call(this,{allowStale:!0})){let d=V(this,F)[ee];if(Ee(this,A,We).call(this,d))d.__abortController.abort(new Error("deleted"));else{let f=V(this,j)[ee];V(this,de)&&((C=V(this,P))==null||C.call(this,d,f,"delete")),V(this,be)&&(($=V(this,te))==null||$.push([d,f,"delete"]))}}if(V(this,x).clear(),V(this,F).fill(void 0),V(this,j).fill(void 0),V(this,G)&&V(this,ne)&&(V(this,G).fill(0),V(this,ne).fill(0)),V(this,le)&&V(this,le).fill(0),Ie(this,S,0),Ie(this,z,0),V(this,ae).length=0,Ie(this,R,0),Ie(this,W,0),V(this,be)&&V(this,te)){let ee=V(this,te),d;for(;d=ee==null?void 0:ee.shift();)(q=V(this,w))==null||q.call(this,...d)}}},O=new WeakMap,L=new WeakMap,P=new WeakMap,w=new WeakMap,U=new WeakMap,W=new WeakMap,R=new WeakMap,x=new WeakMap,j=new WeakMap,F=new WeakMap,X=new WeakMap,Z=new WeakMap,S=new WeakMap,z=new WeakMap,ae=new WeakMap,te=new WeakMap,le=new WeakMap,ne=new WeakMap,G=new WeakMap,de=new WeakMap,ce=new WeakMap,be=new WeakMap,A=new WeakSet,Ua=function(){let C=new c(V(this,O)),$=new c(V(this,O));Ie(this,G,C),Ie(this,ne,$),Ie(this,fe,(d,f,g=t.now())=>{if($[d]=f!==0?g:0,C[d]=f,f!==0&&this.ttlAutopurge){let _=setTimeout(()=>{V(this,E).call(this,d)&&this.delete(V(this,j)[d])},f+1);_.unref&&_.unref()}}),Ie(this,he,d=>{$[d]=C[d]!==0?t.now():0}),Ie(this,we,(d,f)=>{if(C[f]){let g=C[f],_=$[f];d.ttl=g,d.start=_,d.now=q||ee();let D=d.now-_;d.remainingTTL=g-D}});let q=0,ee=()=>{let d=t.now();if(this.ttlResolution>0){q=d;let f=setTimeout(()=>q=0,this.ttlResolution);f.unref&&f.unref()}return d};this.getRemainingTTL=d=>{let f=V(this,x).get(d);if(f===void 0)return 0;let g=C[f],_=$[f];if(g===0||_===0)return 1/0;let D=(q||ee())-_;return g-D},Ie(this,E,d=>C[d]!==0&&$[d]!==0&&(q||ee())-$[d]>C[d])},he=new WeakMap,we=new WeakMap,fe=new WeakMap,E=new WeakMap,bd=function(){let C=new c(V(this,O));Ie(this,R,0),Ie(this,le,C),Ie(this,K,$=>{Ie(this,R,V(this,R)-C[$]),C[$]=0}),Ie(this,oe,($,q,ee,d)=>{if(Ee(this,A,We).call(this,q))return 0;if(!s(ee))if(d){if(typeof d!="function")throw new TypeError("sizeCalculation must be a function");if(ee=d(q,$),!s(ee))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return ee}),Ie(this,re,($,q,ee)=>{if(C[$]=q,V(this,L)){let d=V(this,L)-C[$];for(;V(this,R)>d;)Ee(this,A,Hi).call(this,!0)}Ie(this,R,V(this,R)+C[$]),ee&&(ee.entrySize=q,ee.totalCalculatedSize=V(this,R))})},K=new WeakMap,re=new WeakMap,oe=new WeakMap,_r=function*({allowStale:C=this.allowStale}={}){if(V(this,W))for(let $=V(this,z);!(!Ee(this,A,Da).call(this,$)||((C||!V(this,E).call(this,$))&&(yield $),$===V(this,S)));)$=V(this,Z)[$]},Er=function*({allowStale:C=this.allowStale}={}){if(V(this,W))for(let $=V(this,S);!(!Ee(this,A,Da).call(this,$)||((C||!V(this,E).call(this,$))&&(yield $),$===V(this,z)));)$=V(this,X)[$]},Da=function(C){return C!==void 0&&V(this,x).get(V(this,j)[C])===C},Hi=function(C){var d,f;let $=V(this,S),q=V(this,j)[$],ee=V(this,F)[$];return V(this,ce)&&Ee(this,A,We).call(this,ee)?ee.__abortController.abort(new Error("evicted")):(V(this,de)||V(this,be))&&(V(this,de)&&((d=V(this,P))==null||d.call(this,ee,q,"evict")),V(this,be)&&((f=V(this,te))==null||f.push([ee,q,"evict"]))),V(this,K).call(this,$),C&&(V(this,j)[$]=void 0,V(this,F)[$]=void 0,V(this,ae).push($)),V(this,W)===1?(Ie(this,S,Ie(this,z,0)),V(this,ae).length=0):Ie(this,S,V(this,X)[$]),V(this,x).delete(q),vi(this,W)._--,$},Vi=function(C,$,q,ee){let d=$===void 0?void 0:V(this,F)[$];if(Ee(this,A,We).call(this,d))return d;let f=new i,{signal:g}=q;g==null||g.addEventListener("abort",()=>f.abort(g.reason),{signal:f.signal});let _={signal:f.signal,options:q,context:ee},D=(_e,Se=!1)=>{let{aborted:Ce}=f.signal,De=q.ignoreFetchAbort&&_e!==void 0;if(q.status&&(Ce&&!Se?(q.status.fetchAborted=!0,q.status.fetchError=f.signal.reason,De&&(q.status.fetchAbortIgnored=!0)):q.status.fetchResolved=!0),Ce&&!De&&!Se)return ue(f.signal.reason);let Ze=Oe;return V(this,F)[$]===Oe&&(_e===void 0?Ze.__staleWhileFetching?V(this,F)[$]=Ze.__staleWhileFetching:this.delete(C):(q.status&&(q.status.fetchUpdated=!0),this.set(C,_e,_.options))),_e},Q=_e=>(q.status&&(q.status.fetchRejected=!0,q.status.fetchError=_e),ue(_e)),ue=_e=>{let{aborted:Se}=f.signal,Ce=Se&&q.allowStaleOnFetchAbort,De=Ce||q.allowStaleOnFetchRejection,Ze=De||q.noDeleteOnFetchRejection,Ge=Oe;if(V(this,F)[$]===Oe&&(!Ze||Ge.__staleWhileFetching===void 0?this.delete(C):Ce||(V(this,F)[$]=Ge.__staleWhileFetching)),De)return q.status&&Ge.__staleWhileFetching!==void 0&&(q.status.returnedStale=!0),Ge.__staleWhileFetching;if(Ge.__returned===Ge)throw _e},Ae=(_e,Se)=>{var De;let Ce=(De=V(this,U))==null?void 0:De.call(this,C,d,_);Ce&&Ce instanceof Promise&&Ce.then(Ze=>_e(Ze===void 0?void 0:Ze),Se),f.signal.addEventListener("abort",()=>{(!q.ignoreFetchAbort||q.allowStaleOnFetchAbort)&&(_e(void 0),q.allowStaleOnFetchAbort&&(_e=Ze=>D(Ze,!0)))})};q.status&&(q.status.fetchDispatched=!0);let Oe=new Promise(Ae).then(D,Q),Pe=Object.assign(Oe,{__abortController:f,__staleWhileFetching:d,__returned:void 0});return $===void 0?(this.set(C,Pe,{..._.options,status:void 0}),$=V(this,x).get(C)):V(this,F)[$]=Pe,Pe},We=function(C){if(!V(this,ce))return!1;let $=C;return!!$&&$ instanceof Promise&&$.hasOwnProperty("__staleWhileFetching")&&$.__abortController instanceof i},Fa=function(C,$){V(this,Z)[$]=C,V(this,X)[C]=$},Kn=function(C){C!==V(this,z)&&(C===V(this,S)?Ie(this,S,V(this,X)[C]):Ee(this,A,Fa).call(this,V(this,Z)[C],V(this,X)[C]),Ee(this,A,Fa).call(this,V(this,z),C),Ie(this,z,C))},M);e.LRUCache=p}),dr=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.ContainerIterator=e.Container=e.Base=void 0;var t=class{constructor(a=0){this.iteratorType=a}equals(a){return this.o===a.o}};e.ContainerIterator=t;var r=class{constructor(){this.i=0}get length(){return this.i}size(){return this.i}empty(){return this.i===0}};e.Base=r;var n=class extends r{};e.Container=n}),g0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=dr(),r=class extends t.Base{constructor(a=[]){super(),this.S=[];let i=this;a.forEach(function(o){i.push(o)})}clear(){this.i=0,this.S=[]}push(a){return this.S.push(a),this.i+=1,this.i}pop(){if(this.i!==0)return this.i-=1,this.S.pop()}top(){return this.S[this.i-1]}},n=r;e.default=n}),m0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=dr(),r=class extends t.Base{constructor(a=[]){super(),this.j=0,this.q=[];let i=this;a.forEach(function(o){i.push(o)})}clear(){this.q=[],this.i=this.j=0}push(a){let i=this.q.length;if(this.j/i>.5&&this.j+this.i>=i&&i>4096){let o=this.i;for(let l=0;l<o;++l)this.q[l]=this.q[this.j+l];this.j=0,this.q[this.i]=a}else this.q[this.j+this.i]=a;return++this.i}pop(){if(this.i===0)return;let a=this.q[this.j++];return this.i-=1,a}front(){if(this.i!==0)return this.q[this.j]}},n=r;e.default=n}),y0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=dr(),r=class extends t.Base{constructor(a=[],i=function(l,s){return l>s?-1:l<s?1:0},o=!0){if(super(),this.v=i,Array.isArray(a))this.C=o?[...a]:a;else{this.C=[];let s=this;a.forEach(function(u){s.C.push(u)})}this.i=this.C.length;let l=this.i>>1;for(let s=this.i-1>>1;s>=0;--s)this.k(s,l)}m(a){let i=this.C[a];for(;a>0;){let o=a-1>>1,l=this.C[o];if(this.v(l,i)<=0)break;this.C[a]=l,a=o}this.C[a]=i}k(a,i){let o=this.C[a];for(;a<i;){let l=a<<1|1,s=l+1,u=this.C[l];if(s<this.i&&this.v(u,this.C[s])>0&&(l=s,u=this.C[s]),this.v(u,o)>=0)break;this.C[a]=u,a=l}this.C[a]=o}clear(){this.i=0,this.C.length=0}push(a){this.C.push(a),this.m(this.i),this.i+=1}pop(){if(this.i===0)return;let a=this.C[0],i=this.C.pop();return this.i-=1,this.i&&(this.C[0]=i,this.k(0,this.i>>1)),a}top(){return this.C[0]}find(a){return this.C.indexOf(a)>=0}remove(a){let i=this.C.indexOf(a);return i<0?!1:(i===0?this.pop():i===this.i-1?(this.C.pop(),this.i-=1):(this.C.splice(i,1,this.C.pop()),this.i-=1,this.m(i),this.k(i,this.i>>1)),!0)}updateItem(a){let i=this.C.indexOf(a);return i<0?!1:(this.m(i),this.k(i,this.i>>1),!0)}toArray(){return[...this.C]}},n=r;e.default=n}),Ll=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=dr(),r=class extends t.Container{},n=r;e.default=n}),pr=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.throwIteratorAccessError=t;function t(){throw new RangeError("Iterator access denied!")}}),vd=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.RandomIterator=void 0;var t=dr(),r=pr(),n=class extends t.ContainerIterator{constructor(a,i){super(i),this.o=a,this.iteratorType===0?(this.pre=function(){return this.o===0&&(0,r.throwIteratorAccessError)(),this.o-=1,this},this.next=function(){return this.o===this.container.size()&&(0,r.throwIteratorAccessError)(),this.o+=1,this}):(this.pre=function(){return this.o===this.container.size()-1&&(0,r.throwIteratorAccessError)(),this.o+=1,this},this.next=function(){return this.o===-1&&(0,r.throwIteratorAccessError)(),this.o-=1,this})}get pointer(){return this.container.getElementByPos(this.o)}set pointer(a){this.container.setElementByPos(this.o,a)}};e.RandomIterator=n}),b0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(Ll()),r=vd();function n(l){return l&&l.t?l:{default:l}}var a=class wd extends r.RandomIterator{constructor(s,u,c){super(s,c),this.container=u}copy(){return new wd(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(l=[],s=!0){if(super(),Array.isArray(l))this.J=s?[...l]:l,this.i=l.length;else{this.J=[];let u=this;l.forEach(function(c){u.pushBack(c)})}}clear(){this.i=0,this.J.length=0}begin(){return new a(0,this)}end(){return new a(this.i,this)}rBegin(){return new a(this.i-1,this,1)}rEnd(){return new a(-1,this,1)}front(){return this.J[0]}back(){return this.J[this.i-1]}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;return this.J[l]}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;return this.J.splice(l,1),this.i-=1,this.i}eraseElementByValue(l){let s=0;for(let u=0;u<this.i;++u)this.J[u]!==l&&(this.J[s++]=this.J[u]);return this.i=this.J.length=s,this.i}eraseElementByIterator(l){let s=l.o;return l=l.next(),this.eraseElementByPos(s),l}pushBack(l){return this.J.push(l),this.i+=1,this.i}popBack(){if(this.i!==0)return this.i-=1,this.J.pop()}setElementByPos(l,s){if(l<0||l>this.i-1)throw new RangeError;this.J[l]=s}insert(l,s,u=1){if(l<0||l>this.i)throw new RangeError;return this.J.splice(l,0,...new Array(u).fill(s)),this.i+=u,this.i}find(l){for(let s=0;s<this.i;++s)if(this.J[s]===l)return new a(s,this);return this.end()}reverse(){this.J.reverse()}unique(){let l=1;for(let s=1;s<this.i;++s)this.J[s]!==this.J[s-1]&&(this.J[l++]=this.J[s]);return this.i=this.J.length=l,this.i}sort(l){this.J.sort(l)}forEach(l){for(let s=0;s<this.i;++s)l(this.J[s],s,this)}[Symbol.iterator](){return(function*(){yield*this.J}).bind(this)()}},o=i;e.default=o}),v0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=a(Ll()),r=dr(),n=pr();function a(s){return s&&s.t?s:{default:s}}var i=class _d extends r.ContainerIterator{constructor(u,c,h,p){super(p),this.o=u,this.h=c,this.container=h,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l}set pointer(u){this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l=u}copy(){return new _d(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.default{constructor(s=[]){super(),this.h={},this.p=this._=this.h.L=this.h.B=this.h;let u=this;s.forEach(function(c){u.pushBack(c)})}V(s){let{L:u,B:c}=s;u.B=c,c.L=u,s===this.p&&(this.p=c),s===this._&&(this._=u),this.i-=1}G(s,u){let c=u.B,h={l:s,L:u,B:c};u.B=h,c.L=h,u===this.h&&(this.p=h),c===this.h&&(this._=h),this.i+=1}clear(){this.i=0,this.p=this._=this.h.L=this.h.B=this.h}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.p.l}back(){return this._.l}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let u=this.p;for(;s--;)u=u.B;return u.l}eraseElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let u=this.p;for(;s--;)u=u.B;return this.V(u),this.i}eraseElementByValue(s){let u=this.p;for(;u!==this.h;)u.l===s&&this.V(u),u=u.B;return this.i}eraseElementByIterator(s){let u=s.o;return u===this.h&&(0,n.throwIteratorAccessError)(),s=s.next(),this.V(u),s}pushBack(s){return this.G(s,this._),this.i}popBack(){if(this.i===0)return;let s=this._.l;return this.V(this._),s}pushFront(s){return this.G(s,this.h),this.i}popFront(){if(this.i===0)return;let s=this.p.l;return this.V(this.p),s}setElementByPos(s,u){if(s<0||s>this.i-1)throw new RangeError;let c=this.p;for(;s--;)c=c.B;c.l=u}insert(s,u,c=1){if(s<0||s>this.i)throw new RangeError;if(c<=0)return this.i;if(s===0)for(;c--;)this.pushFront(u);else if(s===this.i)for(;c--;)this.pushBack(u);else{let h=this.p;for(let m=1;m<s;++m)h=h.B;let p=h.B;for(this.i+=c;c--;)h.B={l:u,L:h},h.B.L=h,h=h.B;h.B=p,p.L=h}return this.i}find(s){let u=this.p;for(;u!==this.h;){if(u.l===s)return new i(u,this.h,this);u=u.B}return this.end()}reverse(){if(this.i<=1)return;let s=this.p,u=this._,c=0;for(;c<<1<this.i;){let h=s.l;s.l=u.l,u.l=h,s=s.B,u=u.L,c+=1}}unique(){if(this.i<=1)return this.i;let s=this.p;for(;s!==this.h;){let u=s;for(;u.B!==this.h&&u.l===u.B.l;)u=u.B,this.i-=1;s.B=u.B,s.B.L=s,s=s.B}return this.i}sort(s){if(this.i<=1)return;let u=[];this.forEach(function(h){u.push(h)}),u.sort(s);let c=this.p;u.forEach(function(h){c.l=h,c=c.B})}merge(s){let u=this;if(this.i===0)s.forEach(function(c){u.pushBack(c)});else{let c=this.p;s.forEach(function(h){for(;c!==u.h&&c.l<=h;)c=c.B;u.G(h,c.L)})}return this.i}forEach(s){let u=this.p,c=0;for(;u!==this.h;)s(u.l,c++,this),u=u.B}[Symbol.iterator](){return(function*(){if(this.i===0)return;let s=this.p;for(;s!==this.h;)yield s.l,s=s.B}).bind(this)()}},l=o;e.default=l}),w0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(Ll()),r=vd();function n(l){return l&&l.t?l:{default:l}}var a=class Ed extends r.RandomIterator{constructor(s,u,c){super(s,c),this.container=u}copy(){return new Ed(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(l=[],s=4096){super(),this.j=0,this.D=0,this.R=0,this.N=0,this.P=0,this.A=[];let u=(()=>{if(typeof l.length=="number")return l.length;if(typeof l.size=="number")return l.size;if(typeof l.size=="function")return l.size();throw new TypeError("Cannot get the length or size of the container")})();this.F=s,this.P=Math.max(Math.ceil(u/this.F),1);for(let p=0;p<this.P;++p)this.A.push(new Array(this.F));let c=Math.ceil(u/this.F);this.j=this.R=(this.P>>1)-(c>>1),this.D=this.N=this.F-u%this.F>>1;let h=this;l.forEach(function(p){h.pushBack(p)})}T(){let l=[],s=Math.max(this.P>>1,1);for(let u=0;u<s;++u)l[u]=new Array(this.F);for(let u=this.j;u<this.P;++u)l[l.length]=this.A[u];for(let u=0;u<this.R;++u)l[l.length]=this.A[u];l[l.length]=[...this.A[this.R]],this.j=s,this.R=l.length-1;for(let u=0;u<s;++u)l[l.length]=new Array(this.F);this.A=l,this.P=l.length}O(l){let s=this.D+l+1,u=s%this.F,c=u-1,h=this.j+(s-u)/this.F;return u===0&&(h-=1),h%=this.P,c<0&&(c+=this.F),{curNodeBucketIndex:h,curNodePointerIndex:c}}clear(){this.A=[new Array(this.F)],this.P=1,this.j=this.R=this.i=0,this.D=this.N=this.F>>1}begin(){return new a(0,this)}end(){return new a(this.i,this)}rBegin(){return new a(this.i-1,this,1)}rEnd(){return new a(-1,this,1)}front(){if(this.i!==0)return this.A[this.j][this.D]}back(){if(this.i!==0)return this.A[this.R][this.N]}pushBack(l){return this.i&&(this.N<this.F-1?this.N+=1:this.R<this.P-1?(this.R+=1,this.N=0):(this.R=0,this.N=0),this.R===this.j&&this.N===this.D&&this.T()),this.i+=1,this.A[this.R][this.N]=l,this.i}popBack(){if(this.i===0)return;let l=this.A[this.R][this.N];return this.i!==1&&(this.N>0?this.N-=1:this.R>0?(this.R-=1,this.N=this.F-1):(this.R=this.P-1,this.N=this.F-1)),this.i-=1,l}pushFront(l){return this.i&&(this.D>0?this.D-=1:this.j>0?(this.j-=1,this.D=this.F-1):(this.j=this.P-1,this.D=this.F-1),this.j===this.R&&this.D===this.N&&this.T()),this.i+=1,this.A[this.j][this.D]=l,this.i}popFront(){if(this.i===0)return;let l=this.A[this.j][this.D];return this.i!==1&&(this.D<this.F-1?this.D+=1:this.j<this.P-1?(this.j+=1,this.D=0):(this.j=0,this.D=0)),this.i-=1,l}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let{curNodeBucketIndex:s,curNodePointerIndex:u}=this.O(l);return this.A[s][u]}setElementByPos(l,s){if(l<0||l>this.i-1)throw new RangeError;let{curNodeBucketIndex:u,curNodePointerIndex:c}=this.O(l);this.A[u][c]=s}insert(l,s,u=1){if(l<0||l>this.i)throw new RangeError;if(l===0)for(;u--;)this.pushFront(s);else if(l===this.i)for(;u--;)this.pushBack(s);else{let c=[];for(let h=l;h<this.i;++h)c.push(this.getElementByPos(h));this.cut(l-1);for(let h=0;h<u;++h)this.pushBack(s);for(let h=0;h<c.length;++h)this.pushBack(c[h])}return this.i}cut(l){if(l<0)return this.clear(),0;let{curNodeBucketIndex:s,curNodePointerIndex:u}=this.O(l);return this.R=s,this.N=u,this.i=l+1,this.i}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;if(l===0)this.popFront();else if(l===this.i-1)this.popBack();else{let s=[];for(let c=l+1;c<this.i;++c)s.push(this.getElementByPos(c));this.cut(l),this.popBack();let u=this;s.forEach(function(c){u.pushBack(c)})}return this.i}eraseElementByValue(l){if(this.i===0)return 0;let s=[];for(let c=0;c<this.i;++c){let h=this.getElementByPos(c);h!==l&&s.push(h)}let u=s.length;for(let c=0;c<u;++c)this.setElementByPos(c,s[c]);return this.cut(u-1)}eraseElementByIterator(l){let s=l.o;return this.eraseElementByPos(s),l=l.next(),l}find(l){for(let s=0;s<this.i;++s)if(this.getElementByPos(s)===l)return new a(s,this);return this.end()}reverse(){let l=0,s=this.i-1;for(;l<s;){let u=this.getElementByPos(l);this.setElementByPos(l,this.getElementByPos(s)),this.setElementByPos(s,u),l+=1,s-=1}}unique(){if(this.i<=1)return this.i;let l=1,s=this.getElementByPos(0);for(let u=1;u<this.i;++u){let c=this.getElementByPos(u);c!==s&&(s=c,this.setElementByPos(l++,c))}for(;this.i>l;)this.popBack();return this.i}sort(l){let s=[];for(let u=0;u<this.i;++u)s.push(this.getElementByPos(u));s.sort(l);for(let u=0;u<this.i;++u)this.setElementByPos(u,s[u])}shrinkToFit(){if(this.i===0)return;let l=[];this.forEach(function(s){l.push(s)}),this.P=Math.max(Math.ceil(this.i/this.F),1),this.i=this.j=this.R=this.D=this.N=0,this.A=[];for(let s=0;s<this.P;++s)this.A.push(new Array(this.F));for(let s=0;s<l.length;++s)this.pushBack(l[s])}forEach(l){for(let s=0;s<this.i;++s)l(this.getElementByPos(s),s,this)}[Symbol.iterator](){return(function*(){for(let l=0;l<this.i;++l)yield this.getElementByPos(l)}).bind(this)()}},o=i;e.default=o}),_0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.TreeNodeEnableIndex=e.TreeNode=void 0;var t=class{constructor(n,a){this.ee=1,this.u=void 0,this.l=void 0,this.U=void 0,this.W=void 0,this.tt=void 0,this.u=n,this.l=a}L(){let n=this;if(n.ee===1&&n.tt.tt===n)n=n.W;else if(n.U)for(n=n.U;n.W;)n=n.W;else{let a=n.tt;for(;a.U===n;)n=a,a=n.tt;n=a}return n}B(){let n=this;if(n.W){for(n=n.W;n.U;)n=n.U;return n}else{let a=n.tt;for(;a.W===n;)n=a,a=n.tt;return n.W!==a?a:n}}te(){let n=this.tt,a=this.W,i=a.U;return n.tt===this?n.tt=a:n.U===this?n.U=a:n.W=a,a.tt=n,a.U=this,this.tt=a,this.W=i,i&&(i.tt=this),a}se(){let n=this.tt,a=this.U,i=a.W;return n.tt===this?n.tt=a:n.U===this?n.U=a:n.W=a,a.tt=n,a.W=this,this.tt=a,this.U=i,i&&(i.tt=this),a}};e.TreeNode=t;var r=class extends t{constructor(){super(...arguments),this.rt=1}te(){let n=super.te();return this.ie(),n.ie(),n}se(){let n=super.se();return this.ie(),n.ie(),n}ie(){this.rt=1,this.U&&(this.rt+=this.U.rt),this.W&&(this.rt+=this.W.rt)}};e.TreeNodeEnableIndex=r}),Sd=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=_0(),r=dr(),n=pr(),a=class extends r.Container{constructor(o=function(s,u){return s<u?-1:s>u?1:0},l=!1){super(),this.Y=void 0,this.v=o,l?(this.re=t.TreeNodeEnableIndex,this.M=function(s,u,c){let h=this.ne(s,u,c);if(h){let p=h.tt;for(;p!==this.h;)p.rt+=1,p=p.tt;let m=this.he(h);if(m){let{parentNode:y,grandParent:b,curNode:O}=m;y.ie(),b.ie(),O.ie()}}return this.i},this.V=function(s){let u=this.fe(s);for(;u!==this.h;)u.rt-=1,u=u.tt}):(this.re=t.TreeNode,this.M=function(s,u,c){let h=this.ne(s,u,c);return h&&this.he(h),this.i},this.V=this.fe),this.h=new this.re}X(o,l){let s=this.h;for(;o;){let u=this.v(o.u,l);if(u<0)o=o.W;else if(u>0)s=o,o=o.U;else return o}return s}Z(o,l){let s=this.h;for(;o;)this.v(o.u,l)<=0?o=o.W:(s=o,o=o.U);return s}$(o,l){let s=this.h;for(;o;){let u=this.v(o.u,l);if(u<0)s=o,o=o.W;else if(u>0)o=o.U;else return o}return s}rr(o,l){let s=this.h;for(;o;)this.v(o.u,l)<0?(s=o,o=o.W):o=o.U;return s}ue(o){for(;;){let l=o.tt;if(l===this.h)return;if(o.ee===1){o.ee=0;return}if(o===l.U){let s=l.W;if(s.ee===1)s.ee=0,l.ee=1,l===this.Y?this.Y=l.te():l.te();else if(s.W&&s.W.ee===1){s.ee=l.ee,l.ee=0,s.W.ee=0,l===this.Y?this.Y=l.te():l.te();return}else s.U&&s.U.ee===1?(s.ee=1,s.U.ee=0,s.se()):(s.ee=1,o=l)}else{let s=l.U;if(s.ee===1)s.ee=0,l.ee=1,l===this.Y?this.Y=l.se():l.se();else if(s.U&&s.U.ee===1){s.ee=l.ee,l.ee=0,s.U.ee=0,l===this.Y?this.Y=l.se():l.se();return}else s.W&&s.W.ee===1?(s.ee=1,s.W.ee=0,s.te()):(s.ee=1,o=l)}}}fe(o){if(this.i===1)return this.clear(),this.h;let l=o;for(;l.U||l.W;){if(l.W)for(l=l.W;l.U;)l=l.U;else l=l.U;[o.u,l.u]=[l.u,o.u],[o.l,l.l]=[l.l,o.l],o=l}this.h.U===l?this.h.U=l.tt:this.h.W===l&&(this.h.W=l.tt),this.ue(l);let s=l.tt;return l===s.U?s.U=void 0:s.W=void 0,this.i-=1,this.Y.ee=0,s}oe(o,l){return o===void 0?!1:this.oe(o.U,l)||l(o)?!0:this.oe(o.W,l)}he(o){for(;;){let l=o.tt;if(l.ee===0)return;let s=l.tt;if(l===s.U){let u=s.W;if(u&&u.ee===1){if(u.ee=l.ee=0,s===this.Y)return;s.ee=1,o=s;continue}else if(o===l.W){if(o.ee=0,o.U&&(o.U.tt=l),o.W&&(o.W.tt=s),l.W=o.U,s.U=o.W,o.U=l,o.W=s,s===this.Y)this.Y=o,this.h.tt=o;else{let c=s.tt;c.U===s?c.U=o:c.W=o}return o.tt=s.tt,l.tt=o,s.tt=o,s.ee=1,{parentNode:l,grandParent:s,curNode:o}}else l.ee=0,s===this.Y?this.Y=s.se():s.se(),s.ee=1}else{let u=s.U;if(u&&u.ee===1){if(u.ee=l.ee=0,s===this.Y)return;s.ee=1,o=s;continue}else if(o===l.U){if(o.ee=0,o.U&&(o.U.tt=s),o.W&&(o.W.tt=l),s.W=o.U,l.U=o.W,o.U=s,o.W=l,s===this.Y)this.Y=o,this.h.tt=o;else{let c=s.tt;c.U===s?c.U=o:c.W=o}return o.tt=s.tt,l.tt=o,s.tt=o,s.ee=1,{parentNode:l,grandParent:s,curNode:o}}else l.ee=0,s===this.Y?this.Y=s.te():s.te(),s.ee=1}return}}ne(o,l,s){if(this.Y===void 0){this.i+=1,this.Y=new this.re(o,l),this.Y.ee=0,this.Y.tt=this.h,this.h.tt=this.Y,this.h.U=this.Y,this.h.W=this.Y;return}let u,c=this.h.U,h=this.v(c.u,o);if(h===0){c.l=l;return}else if(h>0)c.U=new this.re(o,l),c.U.tt=c,u=c.U,this.h.U=u;else{let p=this.h.W,m=this.v(p.u,o);if(m===0){p.l=l;return}else if(m<0)p.W=new this.re(o,l),p.W.tt=p,u=p.W,this.h.W=u;else{if(s!==void 0){let y=s.o;if(y!==this.h){let b=this.v(y.u,o);if(b===0){y.l=l;return}else if(b>0){let O=y.L(),L=this.v(O.u,o);if(L===0){O.l=l;return}else L<0&&(u=new this.re(o,l),O.W===void 0?(O.W=u,u.tt=O):(y.U=u,u.tt=y))}}}if(u===void 0)for(u=this.Y;;){let y=this.v(u.u,o);if(y>0){if(u.U===void 0){u.U=new this.re(o,l),u.U.tt=u,u=u.U;break}u=u.U}else if(y<0){if(u.W===void 0){u.W=new this.re(o,l),u.W.tt=u,u=u.W;break}u=u.W}else{u.l=l;return}}}}return this.i+=1,u}I(o,l){for(;o;){let s=this.v(o.u,l);if(s<0)o=o.W;else if(s>0)o=o.U;else return o}return o||this.h}clear(){this.i=0,this.Y=void 0,this.h.tt=void 0,this.h.U=this.h.W=void 0}updateKeyByIterator(o,l){let s=o.o;if(s===this.h&&(0,n.throwIteratorAccessError)(),this.i===1)return s.u=l,!0;if(s===this.h.U)return this.v(s.B().u,l)>0?(s.u=l,!0):!1;if(s===this.h.W)return this.v(s.L().u,l)<0?(s.u=l,!0):!1;let u=s.L().u;if(this.v(u,l)>=0)return!1;let c=s.B().u;return this.v(c,l)<=0?!1:(s.u=l,!0)}eraseElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let l=0,s=this;return this.oe(this.Y,function(u){return o===l?(s.V(u),!0):(l+=1,!1)}),this.i}eraseElementByKey(o){if(this.i===0)return!1;let l=this.I(this.Y,o);return l===this.h?!1:(this.V(l),!0)}eraseElementByIterator(o){let l=o.o;l===this.h&&(0,n.throwIteratorAccessError)();let s=l.W===void 0;return o.iteratorType===0?s&&o.next():(!s||l.U===void 0)&&o.next(),this.V(l),o}forEach(o){let l=0;for(let s of this)o(s,l++,this)}getElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let l,s=0;for(let u of this){if(s===o){l=u;break}s+=1}return l}getHeight(){if(this.i===0)return 0;let o=function(l){return l?Math.max(o(l.U),o(l.W))+1:0};return o(this.Y)}},i=a;e.default=i}),Ad=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=dr(),r=pr(),n=class extends t.ContainerIterator{constructor(i,o,l){super(l),this.o=i,this.h=o,this.iteratorType===0?(this.pre=function(){return this.o===this.h.U&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this}):(this.pre=function(){return this.o===this.h.W&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this})}get index(){let i=this.o,o=this.h.tt;if(i===this.h)return o?o.rt-1:0;let l=0;for(i.U&&(l+=i.U.rt);i!==o;){let s=i.tt;i===s.W&&(l+=1,s.U&&(l+=s.U.rt)),i=s}return l}},a=n;e.default=a}),E0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=a(Sd()),r=a(Ad()),n=pr();function a(s){return s&&s.t?s:{default:s}}var i=class Id extends r.default{constructor(u,c,h,p){super(u,c,p),this.container=h}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.u}copy(){return new Id(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.default{constructor(s=[],u,c){super(u,c);let h=this;s.forEach(function(p){h.insert(p)})}*K(s){s!==void 0&&(yield*this.K(s.U),yield s.u,yield*this.K(s.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.h.U?this.h.U.u:void 0}back(){return this.h.W?this.h.W.u:void 0}insert(s,u){return this.M(s,void 0,u)}find(s){let u=this.I(this.Y,s);return new i(u,this.h,this)}lowerBound(s){let u=this.X(this.Y,s);return new i(u,this.h,this)}upperBound(s){let u=this.Z(this.Y,s);return new i(u,this.h,this)}reverseLowerBound(s){let u=this.$(this.Y,s);return new i(u,this.h,this)}reverseUpperBound(s){let u=this.rr(this.Y,s);return new i(u,this.h,this)}union(s){let u=this;return s.forEach(function(c){u.insert(c)}),this.i}[Symbol.iterator](){return this.K(this.Y)}},l=o;e.default=l}),S0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=a(Sd()),r=a(Ad()),n=pr();function a(s){return s&&s.t?s:{default:s}}var i=class Td extends r.default{constructor(u,c,h,p){super(u,c,p),this.container=h}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,h){if(h==="0")return u.o.u;if(h==="1")return u.o.l},set(c,h,p){if(h!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new Td(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.default{constructor(s=[],u,c){super(u,c);let h=this;s.forEach(function(p){h.setElement(p[0],p[1])})}*K(s){s!==void 0&&(yield*this.K(s.U),yield[s.u,s.l],yield*this.K(s.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i===0)return;let s=this.h.U;return[s.u,s.l]}back(){if(this.i===0)return;let s=this.h.W;return[s.u,s.l]}lowerBound(s){let u=this.X(this.Y,s);return new i(u,this.h,this)}upperBound(s){let u=this.Z(this.Y,s);return new i(u,this.h,this)}reverseLowerBound(s){let u=this.$(this.Y,s);return new i(u,this.h,this)}reverseUpperBound(s){let u=this.rr(this.Y,s);return new i(u,this.h,this)}setElement(s,u,c){return this.M(s,u,c)}find(s){let u=this.I(this.Y,s);return new i(u,this.h,this)}getElementByKey(s){return this.I(this.Y,s).l}union(s){let u=this;return s.forEach(function(c){u.setElement(c[0],c[1])}),this.i}[Symbol.iterator](){return this.K(this.Y)}},l=o;e.default=l}),Cd=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=t;function t(r){let n=typeof r;return n==="object"&&r!==null||n==="function"}}),Od=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.HashContainerIterator=e.HashContainer=void 0;var t=dr(),r=a(Cd()),n=pr();function a(l){return l&&l.t?l:{default:l}}var i=class extends t.ContainerIterator{constructor(l,s,u){super(u),this.o=l,this.h=s,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}};e.HashContainerIterator=i;var o=class extends t.Container{constructor(){super(),this.H=[],this.g={},this.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(this.g,null),this.h={},this.h.L=this.h.B=this.p=this._=this.h}V(l){let{L:s,B:u}=l;s.B=u,u.L=s,l===this.p&&(this.p=u),l===this._&&(this._=s),this.i-=1}M(l,s,u){u===void 0&&(u=(0,r.default)(l));let c;if(u){let h=l[this.HASH_TAG];if(h!==void 0)return this.H[h].l=s,this.i;Object.defineProperty(l,this.HASH_TAG,{value:this.H.length,configurable:!0}),c={u:l,l:s,L:this._,B:this.h},this.H.push(c)}else{let h=this.g[l];if(h)return h.l=s,this.i;c={u:l,l:s,L:this._,B:this.h},this.g[l]=c}return this.i===0?(this.p=c,this.h.B=c):this._.B=c,this._=c,this.h.L=c,++this.i}I(l,s){if(s===void 0&&(s=(0,r.default)(l)),s){let u=l[this.HASH_TAG];return u===void 0?this.h:this.H[u]}else return this.g[l]||this.h}clear(){let l=this.HASH_TAG;this.H.forEach(function(s){delete s.u[l]}),this.H=[],this.g={},Object.setPrototypeOf(this.g,null),this.i=0,this.p=this._=this.h.L=this.h.B=this.h}eraseElementByKey(l,s){let u;if(s===void 0&&(s=(0,r.default)(l)),s){let c=l[this.HASH_TAG];if(c===void 0)return!1;delete l[this.HASH_TAG],u=this.H[c],delete this.H[c]}else{if(u=this.g[l],u===void 0)return!1;delete this.g[l]}return this.V(u),!0}eraseElementByIterator(l){let s=l.o;return s===this.h&&(0,n.throwIteratorAccessError)(),this.V(s),l.next()}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let s=this.p;for(;l--;)s=s.B;return this.V(s),this.i}};e.HashContainer=o}),A0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Od(),r=pr(),n=class Rd extends t.HashContainerIterator{constructor(l,s,u,c){super(l,s,c),this.container=u}get pointer(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o.u}copy(){return new Rd(this.o,this.h,this.container,this.iteratorType)}},a=class extends t.HashContainer{constructor(o=[]){super();let l=this;o.forEach(function(s){l.insert(s)})}begin(){return new n(this.p,this.h,this)}end(){return new n(this.h,this.h,this)}rBegin(){return new n(this._,this.h,this,1)}rEnd(){return new n(this.h,this.h,this,1)}front(){return this.p.u}back(){return this._.u}insert(o,l){return this.M(o,void 0,l)}getElementByPos(o){if(o<0||o>this.i-1)throw new RangeError;let l=this.p;for(;o--;)l=l.B;return l.u}find(o,l){let s=this.I(o,l);return new n(s,this.h,this)}forEach(o){let l=0,s=this.p;for(;s!==this.h;)o(s.u,l++,this),s=s.B}[Symbol.iterator](){return(function*(){let o=this.p;for(;o!==this.h;)yield o.u,o=o.B}).bind(this)()}},i=a;e.default=i}),I0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Od(),r=a(Cd()),n=pr();function a(s){return s&&s.t?s:{default:s}}var i=class Pd extends t.HashContainerIterator{constructor(u,c,h,p){super(u,c,p),this.container=h}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,h){if(h==="0")return u.o.u;if(h==="1")return u.o.l},set(c,h,p){if(h!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new Pd(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.HashContainer{constructor(s=[]){super();let u=this;s.forEach(function(c){u.setElement(c[0],c[1])})}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i!==0)return[this.p.u,this.p.l]}back(){if(this.i!==0)return[this._.u,this._.l]}setElement(s,u,c){return this.M(s,u,c)}getElementByKey(s,u){if(u===void 0&&(u=(0,r.default)(s)),u){let h=s[this.HASH_TAG];return h!==void 0?this.H[h].l:void 0}let c=this.g[s];return c?c.l:void 0}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let u=this.p;for(;s--;)u=u.B;return[u.u,u.l]}find(s,u){let c=this.I(s,u);return new i(c,this.h,this)}forEach(s){let u=0,c=this.p;for(;c!==this.h;)s([c.u,c.l],u++,this),c=c.B}[Symbol.iterator](){return(function*(){let s=this.p;for(;s!==this.h;)yield[s.u,s.l],s=s.B}).bind(this)()}},l=o;e.default=l}),T0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"t",{value:!0}),Object.defineProperty(e,"Deque",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(e,"HashMap",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"HashSet",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"LinkList",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"OrderedMap",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"OrderedSet",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"PriorityQueue",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"Queue",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"Stack",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"Vector",{enumerable:!0,get:function(){return a.default}});var t=h(g0()),r=h(m0()),n=h(y0()),a=h(b0()),i=h(v0()),o=h(w0()),l=h(E0()),s=h(S0()),u=h(A0()),c=h(I0());function h(p){return p&&p.t?p:{default:p}}}),C0=ve((e,t)=>{pe(),me(),ge();var r=T0().OrderedSet,n=ur()("number-allocator:trace"),a=ur()("number-allocator:error");function i(l,s){this.low=l,this.high=s}i.prototype.equals=function(l){return this.low===l.low&&this.high===l.high},i.prototype.compare=function(l){return this.low<l.low&&this.high<l.low?-1:l.low<this.low&&l.high<this.low?1:0};function o(l,s){if(!(this instanceof o))return new o(l,s);this.min=l,this.max=s,this.ss=new r([],(u,c)=>u.compare(c)),n("Create"),this.clear()}o.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low},o.prototype.alloc=function(){if(this.ss.size()===0)return n("alloc():empty"),null;let l=this.ss.begin(),s=l.pointer.low,u=l.pointer.high,c=s;return c+1<=u?this.ss.updateKeyByIterator(l,new i(s+1,u)):this.ss.eraseElementByPos(0),n("alloc():"+c),c},o.prototype.use=function(l){let s=new i(l,l),u=this.ss.lowerBound(s);if(!u.equals(this.ss.end())){let c=u.pointer.low,h=u.pointer.high;return u.pointer.equals(s)?(this.ss.eraseElementByIterator(u),n("use():"+l),!0):c>l?!1:c===l?(this.ss.updateKeyByIterator(u,new i(c+1,h)),n("use():"+l),!0):h===l?(this.ss.updateKeyByIterator(u,new i(c,h-1)),n("use():"+l),!0):(this.ss.updateKeyByIterator(u,new i(l+1,h)),this.ss.insert(new i(c,l-1)),n("use():"+l),!0)}return n("use():failed"),!1},o.prototype.free=function(l){if(l<this.min||l>this.max){a("free():"+l+" is out of range");return}let s=new i(l,l),u=this.ss.upperBound(s);if(u.equals(this.ss.end())){if(u.equals(this.ss.begin())){this.ss.insert(s);return}u.pre();let c=u.pointer.high;u.pointer.high+1===l?this.ss.updateKeyByIterator(u,new i(c,l)):this.ss.insert(s)}else if(u.equals(this.ss.begin()))if(l+1===u.pointer.low){let c=u.pointer.high;this.ss.updateKeyByIterator(u,new i(l,c))}else this.ss.insert(s);else{let c=u.pointer.low,h=u.pointer.high;u.pre();let p=u.pointer.low;u.pointer.high+1===l?l+1===c?(this.ss.eraseElementByIterator(u),this.ss.updateKeyByIterator(u,new i(p,h))):this.ss.updateKeyByIterator(u,new i(p,l)):l+1===c?(this.ss.eraseElementByIterator(u.next()),this.ss.insert(new i(l,h))):this.ss.insert(s)}n("free():"+l)},o.prototype.clear=function(){n("clear()"),this.ss.clear(),this.ss.insert(new i(this.min,this.max))},o.prototype.intervalCount=function(){return this.ss.size()},o.prototype.dump=function(){console.log("length:"+this.ss.size());for(let l of this.ss)console.log(l)},t.exports=o}),kd=ve((e,t)=>{pe(),me(),ge();var r=C0();t.exports.NumberAllocator=r}),O0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=p0(),r=kd(),n=class{constructor(a){a>0&&(this.aliasToTopic=new t.LRUCache({max:a}),this.topicToAlias={},this.numberAllocator=new r.NumberAllocator(1,a),this.max=a,this.length=0)}put(a,i){if(i===0||i>this.max)return!1;let o=this.aliasToTopic.get(i);return o&&delete this.topicToAlias[o],this.aliasToTopic.set(i,a),this.topicToAlias[a]=i,this.numberAllocator.use(i),this.length=this.aliasToTopic.size,!0}getTopicByAlias(a){return this.aliasToTopic.get(a)}getAliasByTopic(a){let i=this.topicToAlias[a];return typeof i<"u"&&this.aliasToTopic.get(i),i}clear(){this.aliasToTopic.clear(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0}getLruAlias(){return this.numberAllocator.firstVacant()||[...this.aliasToTopic.keys()][this.aliasToTopic.size-1]}};e.default=n}),R0=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(e,"__esModule",{value:!0});var r=ko(),n=t(O0()),a=Mn(),i=(o,l)=>{o.log("_handleConnack");let{options:s}=o,u=s.protocolVersion===5?l.reasonCode:l.returnCode;if(clearTimeout(o.connackTimer),delete o.topicAliasSend,l.properties){if(l.properties.topicAliasMaximum){if(l.properties.topicAliasMaximum>65535){o.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}l.properties.topicAliasMaximum>0&&(o.topicAliasSend=new n.default(l.properties.topicAliasMaximum))}l.properties.serverKeepAlive&&s.keepalive&&(s.keepalive=l.properties.serverKeepAlive),l.properties.maximumPacketSize&&(s.properties||(s.properties={}),s.properties.maximumPacketSize=l.properties.maximumPacketSize)}if(u===0)o.reconnecting=!1,o._onConnect(l);else if(u>0){let c=new a.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[u]}`,u);o.emit("error",c)}};e.default=i}),P0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=(r,n,a)=>{r.log("handling pubrel packet");let i=typeof a<"u"?a:r.noop,{messageId:o}=n,l={cmd:"pubcomp",messageId:o};r.incomingStore.get(n,(s,u)=>{s?r._sendPacket(l,i):(r.emit("message",u.topic,u.payload,u),r.handleMessage(u,c=>{if(c)return i(c);r.incomingStore.del(u,r.noop),r._sendPacket(l,i)}))})};e.default=t}),k0=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(f0()),n=t(d0()),a=t(R0()),i=t(ko()),o=t(P0()),l=(s,u,c)=>{let{options:h}=s;if(h.protocolVersion===5&&h.properties&&h.properties.maximumPacketSize&&h.properties.maximumPacketSize<u.length)return s.emit("error",new Error(`exceeding packets size ${u.cmd}`)),s.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),s;switch(s.log("_handlePacket :: emitting packetreceive"),s.emit("packetreceive",u),u.cmd){case"publish":(0,r.default)(s,u,c);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":s.reschedulePing(),(0,i.default)(s,u),c();break;case"pubrel":s.reschedulePing(),(0,o.default)(s,u,c);break;case"connack":(0,a.default)(s,u),c();break;case"auth":s.reschedulePing(),(0,n.default)(s,u),c();break;case"pingresp":s.log("_handlePacket :: received pingresp"),s.reschedulePing(!0),c();break;case"disconnect":s.emit("disconnect",u),c();break;default:s.log("_handlePacket :: unknown command"),c();break}};e.default=l}),x0=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(e,"__esModule",{value:!0}),e.TypedEventEmitter=void 0;var r=t((Bn(),Ue(pn))),n=Mn(),a=class{};e.TypedEventEmitter=a,(0,n.applyMixin)(a,r.default)}),xo=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.isReactNativeBrowser=e.isWebWorker=void 0;var t=()=>{var i;return typeof window<"u"?typeof navigator<"u"&&((i=navigator.userAgent)===null||i===void 0?void 0:i.toLowerCase().indexOf(" electron/"))>-1&&Me!=null&&Me.versions?!Object.prototype.hasOwnProperty.call(Me.versions,"electron"):typeof window.document<"u":!1},r=()=>{var i,o;return!!(typeof self=="object"&&!((o=(i=self==null?void 0:self.constructor)===null||i===void 0?void 0:i.name)===null||o===void 0)&&o.includes("WorkerGlobalScope"))},n=()=>typeof navigator<"u"&&navigator.product==="ReactNative",a=t()||r()||n();e.isWebWorker=r(),e.isReactNativeBrowser=n(),e.default=a}),B0=ve((e,t)=>{pe(),me(),ge(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.fastUniqueNumbers={}))}(e,function(r){var n=function(m){return function(y){var b=m(y);return y.add(b),b}},a=function(m){return function(y,b){return m.set(y,b),b}},i=Number.MAX_SAFE_INTEGER===void 0?9007199254740991:Number.MAX_SAFE_INTEGER,o=536870912,l=o*2,s=function(m,y){return function(b){var O=y.get(b),L=O===void 0?b.size:O<l?O+1:0;if(!b.has(L))return m(b,L);if(b.size<o){for(;b.has(L);)L=Math.floor(Math.random()*l);return m(b,L)}if(b.size>i)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;b.has(L);)L=Math.floor(Math.random()*i);return m(b,L)}},u=new WeakMap,c=a(u),h=s(c,u),p=n(h);r.addUniqueNumber=p,r.generateUniqueNumber=h})}),M0=ve((e,t)=>{pe(),me(),ge(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,B0()):typeof define=="function"&&define.amd?define(["exports","fast-unique-numbers"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimersBroker={},r.fastUniqueNumbers))}(e,function(r,n){var a=function(l){return l.method!==void 0&&l.method==="call"},i=function(l){return l.error===null&&typeof l.id=="number"},o=function(l){var s=new Map([[0,function(){}]]),u=new Map([[0,function(){}]]),c=new Map,h=new Worker(l);h.addEventListener("message",function(O){var L=O.data;if(a(L)){var P=L.params,w=P.timerId,U=P.timerType;if(U==="interval"){var W=s.get(w);if(typeof W=="number"){var R=c.get(W);if(R===void 0||R.timerId!==w||R.timerType!==U)throw new Error("The timer is in an undefined state.")}else if(typeof W<"u")W();else throw new Error("The timer is in an undefined state.")}else if(U==="timeout"){var x=u.get(w);if(typeof x=="number"){var j=c.get(x);if(j===void 0||j.timerId!==w||j.timerType!==U)throw new Error("The timer is in an undefined state.")}else if(typeof x<"u")x(),u.delete(w);else throw new Error("The timer is in an undefined state.")}}else if(i(L)){var F=L.id,X=c.get(F);if(X===void 0)throw new Error("The timer is in an undefined state.");var Z=X.timerId,S=X.timerType;c.delete(F),S==="interval"?s.delete(Z):u.delete(Z)}else{var z=L.error.message;throw new Error(z)}});var p=function(O){var L=n.generateUniqueNumber(c);c.set(L,{timerId:O,timerType:"interval"}),s.set(O,L),h.postMessage({id:L,method:"clear",params:{timerId:O,timerType:"interval"}})},m=function(O){var L=n.generateUniqueNumber(c);c.set(L,{timerId:O,timerType:"timeout"}),u.set(O,L),h.postMessage({id:L,method:"clear",params:{timerId:O,timerType:"timeout"}})},y=function(O){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,P=n.generateUniqueNumber(s);return s.set(P,function(){O(),typeof s.get(P)=="function"&&h.postMessage({id:null,method:"set",params:{delay:L,now:performance.now(),timerId:P,timerType:"interval"}})}),h.postMessage({id:null,method:"set",params:{delay:L,now:performance.now(),timerId:P,timerType:"interval"}}),P},b=function(O){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,P=n.generateUniqueNumber(u);return u.set(P,O),h.postMessage({id:null,method:"set",params:{delay:L,now:performance.now(),timerId:P,timerType:"timeout"}}),P};return{clearInterval:p,clearTimeout:m,setInterval:y,setTimeout:b}};r.load=o})}),L0=ve((e,t)=>{pe(),me(),ge(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,M0()):typeof define=="function"&&define.amd?define(["exports","worker-timers-broker"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimers={},r.workerTimersBroker))}(e,function(r,n){var a=function(h,p){var m=null;return function(){if(m!==null)return m;var y=new Blob([p],{type:"application/javascript; charset=utf-8"}),b=URL.createObjectURL(y);return m=h(b),setTimeout(function(){return URL.revokeObjectURL(b)}),m}},i=`(()=>{var e={472:(e,t,r)=>{var o,i;void 0===(i="function"==typeof(o=function(){"use strict";var e=new Map,t=new Map,r=function(t){var r=e.get(t);if(void 0===r)throw new Error('There is no interval scheduled with the given id "'.concat(t,'".'));clearTimeout(r),e.delete(t)},o=function(e){var r=t.get(e);if(void 0===r)throw new Error('There is no timeout scheduled with the given id "'.concat(e,'".'));clearTimeout(r),t.delete(e)},i=function(e,t){var r,o=performance.now();return{expected:o+(r=e-Math.max(0,o-t)),remainingDelay:r}},n=function e(t,r,o,i){var n=performance.now();n>o?postMessage({id:null,method:"call",params:{timerId:r,timerType:i}}):t.set(r,setTimeout(e,o-n,t,r,o,i))},a=function(t,r,o){var a=i(t,o),s=a.expected,d=a.remainingDelay;e.set(r,setTimeout(n,d,e,r,s,"interval"))},s=function(e,r,o){var a=i(e,o),s=a.expected,d=a.remainingDelay;t.set(r,setTimeout(n,d,t,r,s,"timeout"))};addEventListener("message",(function(e){var t=e.data;try{if("clear"===t.method){var i=t.id,n=t.params,d=n.timerId,c=n.timerType;if("interval"===c)r(d),postMessage({error:null,id:i});else{if("timeout"!==c)throw new Error('The given type "'.concat(c,'" is not supported'));o(d),postMessage({error:null,id:i})}}else{if("set"!==t.method)throw new Error('The given method "'.concat(t.method,'" is not supported'));var u=t.params,l=u.delay,p=u.now,m=u.timerId,v=u.timerType;if("interval"===v)a(l,m,p);else{if("timeout"!==v)throw new Error('The given type "'.concat(v,'" is not supported'));s(l,m,p)}}}catch(e){postMessage({error:{message:e.message},id:t.id,result:null})}}))})?o.call(t,r,t,e):o)||(e.exports=i)}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(472)})()})();`,o=a(n.load,i),l=function(h){return o().clearInterval(h)},s=function(h){return o().clearTimeout(h)},u=function(){var h;return(h=o()).setInterval.apply(h,arguments)},c=function(){var h;return(h=o()).setTimeout.apply(h,arguments)};r.clearInterval=l,r.clearTimeout=s,r.setInterval=u,r.setTimeout=c})}),N0=ve(e=>{pe(),me(),ge();var t=e&&e.__createBinding||(Object.create?function(u,c,h,p){p===void 0&&(p=h);var m=Object.getOwnPropertyDescriptor(c,h);(!m||("get"in m?!c.__esModule:m.writable||m.configurable))&&(m={enumerable:!0,get:function(){return c[h]}}),Object.defineProperty(u,p,m)}:function(u,c,h,p){p===void 0&&(p=h),u[p]=c[h]}),r=e&&e.__setModuleDefault||(Object.create?function(u,c){Object.defineProperty(u,"default",{enumerable:!0,value:c})}:function(u,c){u.default=c}),n=e&&e.__importStar||function(u){if(u&&u.__esModule)return u;var c={};if(u!=null)for(var h in u)h!=="default"&&Object.prototype.hasOwnProperty.call(u,h)&&t(c,u,h);return r(c,u),c};Object.defineProperty(e,"__esModule",{value:!0});var a=n(xo()),i=L0(),o={set:i.setInterval,clear:i.clearInterval},l={set:(u,c)=>setInterval(u,c),clear:u=>clearInterval(u)},s=u=>{switch(u){case"native":return l;case"worker":return o;case"auto":default:return a.default&&!a.isWebWorker&&!a.isReactNativeBrowser?o:l}};e.default=s}),xd=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(N0()),n=class{get keepaliveTimeoutTimestamp(){return this._keepaliveTimeoutTimestamp}get intervalEvery(){return this._intervalEvery}get keepalive(){return this._keepalive}constructor(a,i){this.destroyed=!1,this.client=a,this.timer=typeof i=="object"&&"set"in i&&"clear"in i?i:(0,r.default)(i),this.setKeepalive(a.options.keepalive)}clear(){this.timerId&&(this.timer.clear(this.timerId),this.timerId=null)}setKeepalive(a){if(a*=1e3,isNaN(a)||a<=0||a>2147483647)throw new Error(`Keepalive value must be an integer between 0 and 2147483647. Provided value is ${a}`);this._keepalive=a,this.reschedule(),this.client.log(`KeepaliveManager: set keepalive to ${a}ms`)}destroy(){this.clear(),this.destroyed=!0}reschedule(){if(this.destroyed)return;this.clear(),this.counter=0;let a=Math.ceil(this._keepalive*1.5);this._keepaliveTimeoutTimestamp=Date.now()+a,this._intervalEvery=Math.ceil(this._keepalive/2),this.timerId=this.timer.set(()=>{this.destroyed||(this.counter+=1,this.counter===2?this.client.sendPing():this.counter>2&&this.client.onKeepaliveTimeout())},this._intervalEvery)}};e.default=n}),Wa=ve(e=>{pe(),me(),ge();var t=e&&e.__createBinding||(Object.create?function(W,R,x,j){j===void 0&&(j=x);var F=Object.getOwnPropertyDescriptor(R,x);(!F||("get"in F?!R.__esModule:F.writable||F.configurable))&&(F={enumerable:!0,get:function(){return R[x]}}),Object.defineProperty(W,j,F)}:function(W,R,x,j){j===void 0&&(j=x),W[j]=R[x]}),r=e&&e.__setModuleDefault||(Object.create?function(W,R){Object.defineProperty(W,"default",{enumerable:!0,value:R})}:function(W,R){W.default=R}),n=e&&e.__importStar||function(W){if(W&&W.__esModule)return W;var R={};if(W!=null)for(var x in W)x!=="default"&&Object.prototype.hasOwnProperty.call(W,x)&&t(R,W,x);return r(R,W),R},a=e&&e.__importDefault||function(W){return W&&W.__esModule?W:{default:W}};Object.defineProperty(e,"__esModule",{value:!0});var i=a(Ib()),o=a(a0()),l=a(gd()),s=gn(),u=a(u0()),c=n(c0()),h=a(ur()),p=a(md()),m=a(k0()),y=Mn(),b=x0(),O=a(xd()),L=n(xo()),P=globalThis.setImmediate||((...W)=>{let R=W.shift();(0,y.nextTick)(()=>{R(...W)})}),w={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0,writeCache:!0,timerVariant:"auto"},U=class $a extends b.TypedEventEmitter{static defaultId(){return`mqttjs_${Math.random().toString(16).substr(2,8)}`}constructor(R,x){super(),this.options=x||{};for(let j in w)typeof this.options[j]>"u"?this.options[j]=w[j]:this.options[j]=x[j];this.log=this.options.log||(0,h.default)("mqttjs:client"),this.noop=this._noop.bind(this),this.log("MqttClient :: version:",$a.VERSION),L.isWebWorker?this.log("MqttClient :: environment","webworker"):this.log("MqttClient :: environment",L.default?"browser":"node"),this.log("MqttClient :: options.protocol",x.protocol),this.log("MqttClient :: options.protocolVersion",x.protocolVersion),this.log("MqttClient :: options.username",x.username),this.log("MqttClient :: options.keepalive",x.keepalive),this.log("MqttClient :: options.reconnectPeriod",x.reconnectPeriod),this.log("MqttClient :: options.rejectUnauthorized",x.rejectUnauthorized),this.log("MqttClient :: options.properties.topicAliasMaximum",x.properties?x.properties.topicAliasMaximum:void 0),this.options.clientId=typeof x.clientId=="string"?x.clientId:$a.defaultId(),this.log("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=x.protocolVersion===5&&x.customHandleAcks?x.customHandleAcks:(...j)=>{j[3](null,0)},this.options.writeCache||(o.default.writeToStream.cacheNumbers=!1),this.streamBuilder=R,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new l.default:this.options.messageIdProvider,this.outgoingStore=x.outgoingStore||new p.default,this.incomingStore=x.incomingStore||new p.default,this.queueQoSZero=x.queueQoSZero===void 0?!0:x.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.keepaliveManager=null,this.connected=!1,this.disconnecting=!1,this.reconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,x.properties&&x.properties.topicAliasMaximum>0&&(x.properties.topicAliasMaximum>65535?this.log("MqttClient :: options.properties.topicAliasMaximum is out of range"):this.topicAliasRecv=new i.default(x.properties.topicAliasMaximum)),this.on("connect",()=>{let{queue:j}=this,F=()=>{let X=j.shift();this.log("deliver :: entry %o",X);let Z=null;if(!X){this._resubscribe();return}Z=X.packet,this.log("deliver :: call _sendPacket for %o",Z);let S=!0;Z.messageId&&Z.messageId!==0&&(this.messageIdProvider.register(Z.messageId)||(S=!1)),S?this._sendPacket(Z,z=>{X.cb&&X.cb(z),F()}):(this.log("messageId: %d has already used. The message is skipped and removed.",Z.messageId),F())};this.log("connect :: sending queued packets"),F()}),this.on("close",()=>{this.log("close :: connected set to `false`"),this.connected=!1,this.log("close :: clearing connackTimer"),clearTimeout(this.connackTimer),this._destroyKeepaliveManager(),this.topicAliasRecv&&this.topicAliasRecv.clear(),this.log("close :: calling _setupReconnect"),this._setupReconnect()}),this.options.manualConnect||(this.log("MqttClient :: setting up stream"),this.connect())}handleAuth(R,x){x()}handleMessage(R,x){x()}_nextId(){return this.messageIdProvider.allocate()}getLastMessageId(){return this.messageIdProvider.getLastAllocated()}connect(){var R;let x=new s.Writable,j=o.default.parser(this.options),F=null,X=[];this.log("connect :: calling method to clear reconnect"),this._clearReconnect(),this.disconnected&&!this.reconnecting&&(this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1),this.log("connect :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),j.on("packet",te=>{this.log("parser :: on packet push to packets array."),X.push(te)});let Z=()=>{this.log("work :: getting next packet in queue");let te=X.shift();if(te)this.log("work :: packet pulled from queue"),(0,m.default)(this,te,S);else{this.log("work :: no packets in queue");let le=F;F=null,this.log("work :: done flag is %s",!!le),le&&le()}},S=()=>{if(X.length)(0,y.nextTick)(Z);else{let te=F;F=null,te()}};x._write=(te,le,ne)=>{F=ne,this.log("writable stream :: parsing buffer"),j.parse(te),Z()};let z=te=>{this.log("streamErrorHandler :: error",te.message),te.code?(this.log("streamErrorHandler :: emitting error"),this.emit("error",te)):this.noop(te)};this.log("connect :: pipe stream to writable stream"),this.stream.pipe(x),this.stream.on("error",z),this.stream.on("close",()=>{this.log("(%s)stream :: on close",this.options.clientId),this._flushVolatile(),this.log("stream: emit close to MqttClient"),this.emit("close")}),this.log("connect: sending packet `connect`");let ae={cmd:"connect",protocolId:this.options.protocolId,protocolVersion:this.options.protocolVersion,clean:this.options.clean,clientId:this.options.clientId,keepalive:this.options.keepalive,username:this.options.username,password:this.options.password,properties:this.options.properties};if(this.options.will&&(ae.will=Object.assign(Object.assign({},this.options.will),{payload:(R=this.options.will)===null||R===void 0?void 0:R.payload})),this.topicAliasRecv&&(ae.properties||(ae.properties={}),this.topicAliasRecv&&(ae.properties.topicAliasMaximum=this.topicAliasRecv.max)),this._writePacket(ae),j.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return this.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){let te=Object.assign({cmd:"auth",reasonCode:0},this.options.authPacket);this._writePacket(te)}}return this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(()=>{this.log("!!connectTimeout hit!! Calling _cleanUp with force `true`"),this.emit("error",new Error("connack timeout")),this._cleanUp(!0)},this.options.connectTimeout),this}publish(R,x,j,F){this.log("publish :: message `%s` to topic `%s`",x,R);let{options:X}=this;typeof j=="function"&&(F=j,j=null),j=j||{},j=Object.assign(Object.assign({},{qos:0,retain:!1,dup:!1}),j);let{qos:Z,retain:S,dup:z,properties:ae,cbStorePut:te}=j;if(this._checkDisconnecting(F))return this;let le=()=>{let ne=0;if((Z===1||Z===2)&&(ne=this._nextId(),ne===null))return this.log("No messageId left"),!1;let G={cmd:"publish",topic:R,payload:x,qos:Z,retain:S,messageId:ne,dup:z};switch(X.protocolVersion===5&&(G.properties=ae),this.log("publish :: qos",Z),Z){case 1:case 2:this.outgoing[G.messageId]={volatile:!1,cb:F||this.noop},this.log("MqttClient:publish: packet cmd: %s",G.cmd),this._sendPacket(G,void 0,te);break;default:this.log("MqttClient:publish: packet cmd: %s",G.cmd),this._sendPacket(G,F,te);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!le())&&this._storeProcessingQueue.push({invoke:le,cbStorePut:j.cbStorePut,callback:F}),this}publishAsync(R,x,j){return new Promise((F,X)=>{this.publish(R,x,j,(Z,S)=>{Z?X(Z):F(S)})})}subscribe(R,x,j){let F=this.options.protocolVersion;typeof x=="function"&&(j=x),j=j||this.noop;let X=!1,Z=[];typeof R=="string"?(R=[R],Z=R):Array.isArray(R)?Z=R:typeof R=="object"&&(X=R.resubscribe,delete R.resubscribe,Z=Object.keys(R));let S=c.validateTopics(Z);if(S!==null)return P(j,new Error(`Invalid topic ${S}`)),this;if(this._checkDisconnecting(j))return this.log("subscribe: discconecting true"),this;let z={qos:0};F===5&&(z.nl=!1,z.rap=!1,z.rh=0),x=Object.assign(Object.assign({},z),x);let ae=x.properties,te=[],le=(G,de)=>{if(de=de||x,!Object.prototype.hasOwnProperty.call(this._resubscribeTopics,G)||this._resubscribeTopics[G].qos<de.qos||X){let ce={topic:G,qos:de.qos};F===5&&(ce.nl=de.nl,ce.rap=de.rap,ce.rh=de.rh,ce.properties=ae),this.log("subscribe: pushing topic `%s` and qos `%s` to subs list",ce.topic,ce.qos),te.push(ce)}};if(Array.isArray(R)?R.forEach(G=>{this.log("subscribe: array topic %s",G),le(G)}):Object.keys(R).forEach(G=>{this.log("subscribe: object topic %s, %o",G,R[G]),le(G,R[G])}),!te.length)return j(null,[]),this;let ne=()=>{let G=this._nextId();if(G===null)return this.log("No messageId left"),!1;let de={cmd:"subscribe",subscriptions:te,messageId:G};if(ae&&(de.properties=ae),this.options.resubscribe){this.log("subscribe :: resubscribe true");let ce=[];te.forEach(be=>{if(this.options.reconnectPeriod>0){let A={qos:be.qos};F===5&&(A.nl=be.nl||!1,A.rap=be.rap||!1,A.rh=be.rh||0,A.properties=be.properties),this._resubscribeTopics[be.topic]=A,ce.push(be.topic)}}),this.messageIdToTopic[de.messageId]=ce}return this.outgoing[de.messageId]={volatile:!0,cb(ce,be){if(!ce){let{granted:A}=be;for(let ie=0;ie<A.length;ie+=1)te[ie].qos=A[ie]}j(ce,te,be)}},this.log("subscribe :: call _sendPacket"),this._sendPacket(de),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!ne())&&this._storeProcessingQueue.push({invoke:ne,callback:j}),this}subscribeAsync(R,x){return new Promise((j,F)=>{this.subscribe(R,x,(X,Z)=>{X?F(X):j(Z)})})}unsubscribe(R,x,j){typeof R=="string"&&(R=[R]),typeof x=="function"&&(j=x),j=j||this.noop;let F=c.validateTopics(R);if(F!==null)return P(j,new Error(`Invalid topic ${F}`)),this;if(this._checkDisconnecting(j))return this;let X=()=>{let Z=this._nextId();if(Z===null)return this.log("No messageId left"),!1;let S={cmd:"unsubscribe",messageId:Z,unsubscriptions:[]};return typeof R=="string"?S.unsubscriptions=[R]:Array.isArray(R)&&(S.unsubscriptions=R),this.options.resubscribe&&S.unsubscriptions.forEach(z=>{delete this._resubscribeTopics[z]}),typeof x=="object"&&x.properties&&(S.properties=x.properties),this.outgoing[S.messageId]={volatile:!0,cb:j},this.log("unsubscribe: call _sendPacket"),this._sendPacket(S),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!X())&&this._storeProcessingQueue.push({invoke:X,callback:j}),this}unsubscribeAsync(R,x){return new Promise((j,F)=>{this.unsubscribe(R,x,(X,Z)=>{X?F(X):j(Z)})})}end(R,x,j){this.log("end :: (%s)",this.options.clientId),(R==null||typeof R!="boolean")&&(j=j||x,x=R,R=!1),typeof x!="object"&&(j=j||x,x=null),this.log("end :: cb? %s",!!j),(!j||typeof j!="function")&&(j=this.noop);let F=()=>{this.log("end :: closeStores: closing incoming and outgoing stores"),this.disconnected=!0,this.incomingStore.close(Z=>{this.outgoingStore.close(S=>{if(this.log("end :: closeStores: emitting end"),this.emit("end"),j){let z=Z||S;this.log("end :: closeStores: invoking callback with args"),j(z)}})}),this._deferredReconnect?this._deferredReconnect():(this.options.reconnectPeriod===0||this.options.manualConnect)&&(this.disconnecting=!1)},X=()=>{this.log("end :: (%s) :: finish :: calling _cleanUp with force %s",this.options.clientId,R),this._cleanUp(R,()=>{this.log("end :: finish :: calling process.nextTick on closeStores"),(0,y.nextTick)(F)},x)};return this.disconnecting?(j(),this):(this._clearReconnect(),this.disconnecting=!0,!R&&Object.keys(this.outgoing).length>0?(this.log("end :: (%s) :: calling finish in 10ms once outgoing is empty",this.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,X,10))):(this.log("end :: (%s) :: immediately calling finish",this.options.clientId),X()),this)}endAsync(R,x){return new Promise((j,F)=>{this.end(R,x,X=>{X?F(X):j()})})}removeOutgoingMessage(R){if(this.outgoing[R]){let{cb:x}=this.outgoing[R];this._removeOutgoingAndStoreMessage(R,()=>{x(new Error("Message removed"))})}return this}reconnect(R){this.log("client reconnect");let x=()=>{R?(this.options.incomingStore=R.incomingStore,this.options.outgoingStore=R.outgoingStore):(this.options.incomingStore=null,this.options.outgoingStore=null),this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1,this._deferredReconnect=null,this._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=x:x(),this}_flushVolatile(){this.outgoing&&(this.log("_flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(this.outgoing).forEach(R=>{this.outgoing[R].volatile&&typeof this.outgoing[R].cb=="function"&&(this.outgoing[R].cb(new Error("Connection closed")),delete this.outgoing[R])}))}_flush(){this.outgoing&&(this.log("_flush: queue exists? %b",!!this.outgoing),Object.keys(this.outgoing).forEach(R=>{typeof this.outgoing[R].cb=="function"&&(this.outgoing[R].cb(new Error("Connection closed")),delete this.outgoing[R])}))}_removeTopicAliasAndRecoverTopicName(R){let x;R.properties&&(x=R.properties.topicAlias);let j=R.topic.toString();if(this.log("_removeTopicAliasAndRecoverTopicName :: alias %d, topic %o",x,j),j.length===0){if(typeof x>"u")return new Error("Unregistered Topic Alias");if(j=this.topicAliasSend.getTopicByAlias(x),typeof j>"u")return new Error("Unregistered Topic Alias");R.topic=j}x&&delete R.properties.topicAlias}_checkDisconnecting(R){return this.disconnecting&&(R&&R!==this.noop?R(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting}_reconnect(){this.log("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this.connect()}),this.log("client already connected. disconnecting first.")):(this.log("_reconnect: calling connect"),this.connect())}_setupReconnect(){!this.disconnecting&&!this.reconnectTimer&&this.options.reconnectPeriod>0?(this.reconnecting||(this.log("_setupReconnect :: emit `offline` state"),this.emit("offline"),this.log("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),this.log("_setupReconnect :: setting reconnectTimer for %d ms",this.options.reconnectPeriod),this.reconnectTimer=setInterval(()=>{this.log("reconnectTimer :: reconnect triggered!"),this._reconnect()},this.options.reconnectPeriod)):this.log("_setupReconnect :: doing nothing...")}_clearReconnect(){this.log("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)}_cleanUp(R,x,j={}){if(x&&(this.log("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",x)),this.log("_cleanUp :: forced? %s",R),R)this.options.reconnectPeriod===0&&this.options.clean&&this._flush(),this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{let F=Object.assign({cmd:"disconnect"},j);this.log("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(F,()=>{this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),P(()=>{this.stream.end(()=>{this.log("_cleanUp :: (%s) :: stream destroyed",this.options.clientId)})})})}!this.disconnecting&&!this.reconnecting&&(this.log("_cleanUp :: client not disconnecting/reconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this._destroyKeepaliveManager(),x&&!this.connected&&(this.log("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",x),x())}_storeAndSend(R,x,j){this.log("storeAndSend :: store packet with cmd %s to outgoingStore",R.cmd);let F=R,X;if(F.cmd==="publish"&&(F=(0,u.default)(R),X=this._removeTopicAliasAndRecoverTopicName(F),X))return x&&x(X);this.outgoingStore.put(F,Z=>{if(Z)return x&&x(Z);j(),this._writePacket(R,x)})}_applyTopicAlias(R){if(this.options.protocolVersion===5&&R.cmd==="publish"){let x;R.properties&&(x=R.properties.topicAlias);let j=R.topic.toString();if(this.topicAliasSend)if(x){if(j.length!==0&&(this.log("applyTopicAlias :: register topic: %s - alias: %d",j,x),!this.topicAliasSend.put(j,x)))return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",j,x),new Error("Sending Topic Alias out of range")}else j.length!==0&&(this.options.autoAssignTopicAlias?(x=this.topicAliasSend.getAliasByTopic(j),x?(R.topic="",R.properties=Object.assign(Object.assign({},R.properties),{topicAlias:x}),this.log("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",j,x)):(x=this.topicAliasSend.getLruAlias(),this.topicAliasSend.put(j,x),R.properties=Object.assign(Object.assign({},R.properties),{topicAlias:x}),this.log("applyTopicAlias :: auto assign topic: %s - alias: %d",j,x))):this.options.autoUseTopicAlias&&(x=this.topicAliasSend.getAliasByTopic(j),x&&(R.topic="",R.properties=Object.assign(Object.assign({},R.properties),{topicAlias:x}),this.log("applyTopicAlias :: auto use topic: %s - alias: %d",j,x))));else if(x)return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",j,x),new Error("Sending Topic Alias out of range")}}_noop(R){this.log("noop ::",R)}_writePacket(R,x){this.log("_writePacket :: packet: %O",R),this.log("_writePacket :: emitting `packetsend`"),this.emit("packetsend",R),this.log("_writePacket :: writing to stream");let j=o.default.writeToStream(R,this.stream,this.options);this.log("_writePacket :: writeToStream result %s",j),!j&&x&&x!==this.noop?(this.log("_writePacket :: handle events on `drain` once through callback."),this.stream.once("drain",x)):x&&(this.log("_writePacket :: invoking cb"),x())}_sendPacket(R,x,j,F){this.log("_sendPacket :: (%s) ::  start",this.options.clientId),j=j||this.noop,x=x||this.noop;let X=this._applyTopicAlias(R);if(X){x(X);return}if(!this.connected){if(R.cmd==="auth"){this._writePacket(R,x);return}this.log("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(R,x,j);return}if(F){this._writePacket(R,x);return}switch(R.cmd){case"publish":break;case"pubrel":this._storeAndSend(R,x,j);return;default:this._writePacket(R,x);return}switch(R.qos){case 2:case 1:this._storeAndSend(R,x,j);break;case 0:default:this._writePacket(R,x);break}this.log("_sendPacket :: (%s) ::  end",this.options.clientId)}_storePacket(R,x,j){this.log("_storePacket :: packet: %o",R),this.log("_storePacket :: cb? %s",!!x),j=j||this.noop;let F=R;if(F.cmd==="publish"){F=(0,u.default)(R);let Z=this._removeTopicAliasAndRecoverTopicName(F);if(Z)return x&&x(Z)}let X=F.qos||0;X===0&&this.queueQoSZero||F.cmd!=="publish"?this.queue.push({packet:F,cb:x}):X>0?(x=this.outgoing[F.messageId]?this.outgoing[F.messageId].cb:null,this.outgoingStore.put(F,Z=>{if(Z)return x&&x(Z);j()})):x&&x(new Error("No connection to broker"))}_setupKeepaliveManager(){this.log("_setupKeepaliveManager :: keepalive %d (seconds)",this.options.keepalive),!this.keepaliveManager&&this.options.keepalive&&(this.keepaliveManager=new O.default(this,this.options.timerVariant))}_destroyKeepaliveManager(){this.keepaliveManager&&(this.log("_destroyKeepaliveManager :: destroying keepalive manager"),this.keepaliveManager.destroy(),this.keepaliveManager=null)}reschedulePing(R=!1){this.keepaliveManager&&this.options.keepalive&&(R||this.options.reschedulePings)&&this._reschedulePing()}_reschedulePing(){this.log("_reschedulePing :: rescheduling ping"),this.keepaliveManager.reschedule()}sendPing(){this.log("_sendPing :: sending pingreq"),this._sendPacket({cmd:"pingreq"})}onKeepaliveTimeout(){this.emit("error",new Error("Keepalive timeout")),this.log("onKeepaliveTimeout :: calling _cleanUp with force true"),this._cleanUp(!0)}_resubscribe(){this.log("_resubscribe");let R=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion>=4&&!this.connackPacket.sessionPresent)&&R.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){this.log("_resubscribe: protocolVersion 5");for(let x=0;x<R.length;x++){let j={};j[R[x]]=this._resubscribeTopics[R[x]],j.resubscribe=!0,this.subscribe(j,{properties:j[R[x]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1}_onConnect(R){if(this.disconnected){this.emit("connect",R);return}this.connackPacket=R,this.messageIdProvider.clear(),this._setupKeepaliveManager(),this.connected=!0;let x=()=>{let j=this.outgoingStore.createStream(),F=()=>{j.destroy(),j=null,this._flushStoreProcessingQueue(),X()},X=()=>{this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={}};this.once("close",F),j.on("error",S=>{X(),this._flushStoreProcessingQueue(),this.removeListener("close",F),this.emit("error",S)});let Z=()=>{if(!j)return;let S=j.read(1),z;if(!S){j.once("readable",Z);return}if(this._storeProcessing=!0,this._packetIdsDuringStoreProcessing[S.messageId]){Z();return}!this.disconnecting&&!this.reconnectTimer?(z=this.outgoing[S.messageId]?this.outgoing[S.messageId].cb:null,this.outgoing[S.messageId]={volatile:!1,cb(ae,te){z&&z(ae,te),Z()}},this._packetIdsDuringStoreProcessing[S.messageId]=!0,this.messageIdProvider.register(S.messageId)?this._sendPacket(S,void 0,void 0,!0):this.log("messageId: %d has already used.",S.messageId)):j.destroy&&j.destroy()};j.on("end",()=>{let S=!0;for(let z in this._packetIdsDuringStoreProcessing)if(!this._packetIdsDuringStoreProcessing[z]){S=!1;break}this.removeListener("close",F),S?(X(),this._invokeAllStoreProcessingQueue(),this.emit("connect",R)):x()}),Z()};x()}_invokeStoreProcessingQueue(){if(!this._storeProcessing&&this._storeProcessingQueue.length>0){let R=this._storeProcessingQueue[0];if(R&&R.invoke())return this._storeProcessingQueue.shift(),!0}return!1}_invokeAllStoreProcessingQueue(){for(;this._invokeStoreProcessingQueue(););}_flushStoreProcessingQueue(){for(let R of this._storeProcessingQueue)R.cbStorePut&&R.cbStorePut(new Error("Connection closed")),R.callback&&R.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)}_removeOutgoingAndStoreMessage(R,x){delete this.outgoing[R],this.outgoingStore.del({messageId:R},(j,F)=>{x(j,F),this.messageIdProvider.deallocate(R),this._invokeStoreProcessingQueue()})}};U.VERSION=y.MQTTJS_VERSION,e.default=U}),j0=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=kd(),r=class{constructor(){this.numberAllocator=new t.NumberAllocator(1,65535)}allocate(){return this.lastId=this.numberAllocator.alloc(),this.lastId}getLastAllocated(){return this.lastId}register(n){return this.numberAllocator.use(n)}deallocate(n){this.numberAllocator.free(n)}clear(){this.numberAllocator.clear()}};e.default=r});function zr(e){throw new RangeError(Md[e])}function gc(e,t){let r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]);let a=function(i,o){let l=[],s=i.length;for(;s--;)l[s]=o(i[s]);return l}((e=e.replace(Bd,".")).split("."),t).join(".");return n+a}function mc(e){let t=[],r=0,n=e.length;for(;r<n;){let a=e.charCodeAt(r++);if(a>=55296&&a<=56319&&r<n){let i=e.charCodeAt(r++);(64512&i)==56320?t.push(((1023&a)<<10)+(1023&i)+65536):(t.push(a),r--)}else t.push(a)}return t}var yc,bc,Bd,Md,Mt,Ri,rs,ns,is,os,Sr,U0=ot(()=>{pe(),me(),ge(),yc=/^xn--/,bc=/[^\0-\x7E]/,Bd=/[\x2E\u3002\uFF0E\uFF61]/g,Md={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Mt=Math.floor,Ri=String.fromCharCode,rs=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},ns=function(e,t,r){let n=0;for(e=r?Mt(e/700):e>>1,e+=Mt(e/t);e>455;n+=36)e=Mt(e/35);return Mt(n+36*e/(e+38))},is=function(e){let t=[],r=e.length,n=0,a=128,i=72,o=e.lastIndexOf("-");o<0&&(o=0);for(let s=0;s<o;++s)e.charCodeAt(s)>=128&&zr("not-basic"),t.push(e.charCodeAt(s));for(let s=o>0?o+1:0;s<r;){let u=n;for(let h=1,p=36;;p+=36){s>=r&&zr("invalid-input");let m=(l=e.charCodeAt(s++))-48<10?l-22:l-65<26?l-65:l-97<26?l-97:36;(m>=36||m>Mt((2147483647-n)/h))&&zr("overflow"),n+=m*h;let y=p<=i?1:p>=i+26?26:p-i;if(m<y)break;let b=36-y;h>Mt(2147483647/b)&&zr("overflow"),h*=b}let c=t.length+1;i=ns(n-u,c,u==0),Mt(n/c)>2147483647-a&&zr("overflow"),a+=Mt(n/c),n%=c,t.splice(n++,0,a)}var l;return String.fromCodePoint(...t)},os=function(e){let t=[],r=(e=mc(e)).length,n=128,a=0,i=72;for(let s of e)s<128&&t.push(Ri(s));let o=t.length,l=o;for(o&&t.push("-");l<r;){let s=2147483647;for(let c of e)c>=n&&c<s&&(s=c);let u=l+1;s-n>Mt((2147483647-a)/u)&&zr("overflow"),a+=(s-n)*u,n=s;for(let c of e)if(c<n&&++a>2147483647&&zr("overflow"),c==n){let h=a;for(let p=36;;p+=36){let m=p<=i?1:p>=i+26?26:p-i;if(h<m)break;let y=h-m,b=36-m;t.push(Ri(rs(m+y%b,0))),h=Mt(y/b)}t.push(Ri(rs(h,0))),i=ns(a,u,l==o),a=0,++l}++a,++n}return t.join("")},Sr={version:"2.1.0",ucs2:{decode:mc,encode:e=>String.fromCodePoint(...e)},decode:is,encode:os,toASCII:function(e){return gc(e,function(t){return bc.test(t)?"xn--"+os(t):t})},toUnicode:function(e){return gc(e,function(t){return yc.test(t)?is(t.slice(4).toLowerCase()):t})}},Sr.decode,Sr.encode,Sr.toASCII,Sr.toUnicode,Sr.ucs2,Sr.version});function D0(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var vc,yn,wc,$t,F0=ot(()=>{pe(),me(),ge(),vc=function(e,t,r,n){t=t||"&",r=r||"=";var a={};if(typeof e!="string"||e.length===0)return a;var i=/\+/g;e=e.split(t);var o=1e3;n&&typeof n.maxKeys=="number"&&(o=n.maxKeys);var l=e.length;o>0&&l>o&&(l=o);for(var s=0;s<l;++s){var u,c,h,p,m=e[s].replace(i,"%20"),y=m.indexOf(r);y>=0?(u=m.substr(0,y),c=m.substr(y+1)):(u=m,c=""),h=decodeURIComponent(u),p=decodeURIComponent(c),D0(a,h)?Array.isArray(a[h])?a[h].push(p):a[h]=[a[h],p]:a[h]=p}return a},yn=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},wc=function(e,t,r,n){return t=t||"&",r=r||"=",e===null&&(e=void 0),typeof e=="object"?Object.keys(e).map(function(a){var i=encodeURIComponent(yn(a))+r;return Array.isArray(e[a])?e[a].map(function(o){return i+encodeURIComponent(yn(o))}).join(t):i+encodeURIComponent(yn(e[a]))}).join(t):n?encodeURIComponent(yn(n))+r+encodeURIComponent(yn(e)):""},$t={},$t.decode=$t.parse=vc,$t.encode=$t.stringify=wc,$t.decode,$t.encode,$t.parse,$t.stringify});function Ha(){throw new Error("setTimeout has not been defined")}function Va(){throw new Error("clearTimeout has not been defined")}function Ld(e){if(tr===setTimeout)return setTimeout(e,0);if((tr===Ha||!tr)&&setTimeout)return tr=setTimeout,setTimeout(e,0);try{return tr(e,0)}catch{try{return tr.call(null,e,0)}catch{return tr.call(this||an,e,0)}}}function W0(){ln&&en&&(ln=!1,en.length?Kt=en.concat(Kt):ni=-1,Kt.length&&Nd())}function Nd(){if(!ln){var e=Ld(W0);ln=!0;for(var t=Kt.length;t;){for(en=Kt,Kt=[];++ni<t;)en&&en[ni].run();ni=-1,t=Kt.length}en=null,ln=!1,function(r){if(rr===clearTimeout)return clearTimeout(r);if((rr===Va||!rr)&&clearTimeout)return rr=clearTimeout,clearTimeout(r);try{rr(r)}catch{try{return rr.call(null,r)}catch{return rr.call(this||an,r)}}}(e)}}function _c(e,t){(this||an).fun=e,(this||an).array=t}function Jt(){}var Ec,tr,rr,an,Ye,en,Kt,ln,ni,Ke,$0=ot(()=>{pe(),me(),ge(),an=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Gi,Ye=Ec={},function(){try{tr=typeof setTimeout=="function"?setTimeout:Ha}catch{tr=Ha}try{rr=typeof clearTimeout=="function"?clearTimeout:Va}catch{rr=Va}}(),Kt=[],ln=!1,ni=-1,Ye.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Kt.push(new _c(e,t)),Kt.length!==1||ln||Ld(Nd)},_c.prototype.run=function(){(this||an).fun.apply(null,(this||an).array)},Ye.title="browser",Ye.browser=!0,Ye.env={},Ye.argv=[],Ye.version="",Ye.versions={},Ye.on=Jt,Ye.addListener=Jt,Ye.once=Jt,Ye.off=Jt,Ye.removeListener=Jt,Ye.removeAllListeners=Jt,Ye.emit=Jt,Ye.prependListener=Jt,Ye.prependOnceListener=Jt,Ye.listeners=function(e){return[]},Ye.binding=function(e){throw new Error("process.binding is not supported")},Ye.cwd=function(){return"/"},Ye.chdir=function(e){throw new Error("process.chdir is not supported")},Ye.umask=function(){return 0},Ke=Ec,Ke.addListener,Ke.argv,Ke.binding,Ke.browser,Ke.chdir,Ke.cwd,Ke.emit,Ke.env,Ke.listeners,Ke.nextTick,Ke.off,Ke.on,Ke.once,Ke.prependListener,Ke.prependOnceListener,Ke.removeAllListeners,Ke.removeListener,Ke.title,Ke.umask,Ke.version,Ke.versions});function H0(){if(qa)return qi;qa=!0;var e=qi={},t,r;function n(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?t=setTimeout:t=n}catch{t=n}try{typeof clearTimeout=="function"?r=clearTimeout:r=a}catch{r=a}})();function i(b){if(t===setTimeout)return setTimeout(b,0);if((t===n||!t)&&setTimeout)return t=setTimeout,setTimeout(b,0);try{return t(b,0)}catch{try{return t.call(null,b,0)}catch{return t.call(this||Gr,b,0)}}}function o(b){if(r===clearTimeout)return clearTimeout(b);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(b);try{return r(b)}catch{try{return r.call(null,b)}catch{return r.call(this||Gr,b)}}}var l=[],s=!1,u,c=-1;function h(){!s||!u||(s=!1,u.length?l=u.concat(l):c=-1,l.length&&p())}function p(){if(!s){var b=i(h);s=!0;for(var O=l.length;O;){for(u=l,l=[];++c<O;)u&&u[c].run();c=-1,O=l.length}u=null,s=!1,o(b)}}e.nextTick=function(b){var O=new Array(arguments.length-1);if(arguments.length>1)for(var L=1;L<arguments.length;L++)O[L-1]=arguments[L];l.push(new m(b,O)),l.length===1&&!s&&i(p)};function m(b,O){(this||Gr).fun=b,(this||Gr).array=O}m.prototype.run=function(){(this||Gr).fun.apply(null,(this||Gr).array)},e.title="browser",e.browser=!0,e.env={},e.argv=[],e.version="",e.versions={};function y(){}return e.on=y,e.addListener=y,e.once=y,e.off=y,e.removeListener=y,e.removeAllListeners=y,e.emit=y,e.prependListener=y,e.prependOnceListener=y,e.listeners=function(b){return[]},e.binding=function(b){throw new Error("process.binding is not supported")},e.cwd=function(){return"/"},e.chdir=function(b){throw new Error("process.chdir is not supported")},e.umask=function(){return 0},qi}var qi,qa,Gr,$e,jd=ot(()=>{pe(),me(),ge(),qi={},qa=!1,Gr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Gi,$e=H0(),$e.platform="browser",$e.addListener,$e.argv,$e.binding,$e.browser,$e.chdir,$e.cwd,$e.emit,$e.env,$e.listeners,$e.nextTick,$e.off,$e.on,$e.once,$e.prependListener,$e.prependOnceListener,$e.removeAllListeners,$e.removeListener,$e.title,$e.umask,$e.version,$e.versions});function V0(){if(Ka)return Ki;Ka=!0;var e=$e;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,o){for(var l="",s=0,u=-1,c=0,h,p=0;p<=i.length;++p){if(p<i.length)h=i.charCodeAt(p);else{if(h===47)break;h=47}if(h===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(l.length<2||s!==2||l.charCodeAt(l.length-1)!==46||l.charCodeAt(l.length-2)!==46){if(l.length>2){var m=l.lastIndexOf("/");if(m!==l.length-1){m===-1?(l="",s=0):(l=l.slice(0,m),s=l.length-1-l.lastIndexOf("/")),u=p,c=0;continue}}else if(l.length===2||l.length===1){l="",s=0,u=p,c=0;continue}}o&&(l.length>0?l+="/..":l="..",s=2)}else l.length>0?l+="/"+i.slice(u+1,p):l=i.slice(u+1,p),s=p-u-1;u=p,c=0}else h===46&&c!==-1?++c:c=-1}return l}function n(i,o){var l=o.dir||o.root,s=o.base||(o.name||"")+(o.ext||"");return l?l===o.root?l+s:l+i+s:s}var a={resolve:function(){for(var i="",o=!1,l,s=arguments.length-1;s>=-1&&!o;s--){var u;s>=0?u=arguments[s]:(l===void 0&&(l=e.cwd()),u=l),t(u),u.length!==0&&(i=u+"/"+i,o=u.charCodeAt(0)===47)}return i=r(i,!o),o?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var o=i.charCodeAt(0)===47,l=i.charCodeAt(i.length-1)===47;return i=r(i,!o),i.length===0&&!o&&(i="."),i.length>0&&l&&(i+="/"),o?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,o=0;o<arguments.length;++o){var l=arguments[o];t(l),l.length>0&&(i===void 0?i=l:i+="/"+l)}return i===void 0?".":a.normalize(i)},relative:function(i,o){if(t(i),t(o),i===o||(i=a.resolve(i),o=a.resolve(o),i===o))return"";for(var l=1;l<i.length&&i.charCodeAt(l)===47;++l);for(var s=i.length,u=s-l,c=1;c<o.length&&o.charCodeAt(c)===47;++c);for(var h=o.length,p=h-c,m=u<p?u:p,y=-1,b=0;b<=m;++b){if(b===m){if(p>m){if(o.charCodeAt(c+b)===47)return o.slice(c+b+1);if(b===0)return o.slice(c+b)}else u>m&&(i.charCodeAt(l+b)===47?y=b:b===0&&(y=0));break}var O=i.charCodeAt(l+b),L=o.charCodeAt(c+b);if(O!==L)break;O===47&&(y=b)}var P="";for(b=l+y+1;b<=s;++b)(b===s||i.charCodeAt(b)===47)&&(P.length===0?P+="..":P+="/..");return P.length>0?P+o.slice(c+y):(c+=y,o.charCodeAt(c)===47&&++c,o.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var o=i.charCodeAt(0),l=o===47,s=-1,u=!0,c=i.length-1;c>=1;--c)if(o=i.charCodeAt(c),o===47){if(!u){s=c;break}}else u=!1;return s===-1?l?"/":".":l&&s===1?"//":i.slice(0,s)},basename:function(i,o){if(o!==void 0&&typeof o!="string")throw new TypeError('"ext" argument must be a string');t(i);var l=0,s=-1,u=!0,c;if(o!==void 0&&o.length>0&&o.length<=i.length){if(o.length===i.length&&o===i)return"";var h=o.length-1,p=-1;for(c=i.length-1;c>=0;--c){var m=i.charCodeAt(c);if(m===47){if(!u){l=c+1;break}}else p===-1&&(u=!1,p=c+1),h>=0&&(m===o.charCodeAt(h)?--h===-1&&(s=c):(h=-1,s=p))}return l===s?s=p:s===-1&&(s=i.length),i.slice(l,s)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){l=c+1;break}}else s===-1&&(u=!1,s=c+1);return s===-1?"":i.slice(l,s)}},extname:function(i){t(i);for(var o=-1,l=0,s=-1,u=!0,c=0,h=i.length-1;h>=0;--h){var p=i.charCodeAt(h);if(p===47){if(!u){l=h+1;break}continue}s===-1&&(u=!1,s=h+1),p===46?o===-1?o=h:c!==1&&(c=1):o!==-1&&(c=-1)}return o===-1||s===-1||c===0||c===1&&o===s-1&&o===l+1?"":i.slice(o,s)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var o={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return o;var l=i.charCodeAt(0),s=l===47,u;s?(o.root="/",u=1):u=0;for(var c=-1,h=0,p=-1,m=!0,y=i.length-1,b=0;y>=u;--y){if(l=i.charCodeAt(y),l===47){if(!m){h=y+1;break}continue}p===-1&&(m=!1,p=y+1),l===46?c===-1?c=y:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===h+1?p!==-1&&(h===0&&s?o.base=o.name=i.slice(1,p):o.base=o.name=i.slice(h,p)):(h===0&&s?(o.name=i.slice(1,c),o.base=i.slice(1,p)):(o.name=i.slice(h,c),o.base=i.slice(h,p)),o.ext=i.slice(c,p)),h>0?o.dir=i.slice(0,h-1):s&&(o.dir="/"),o},sep:"/",delimiter:":",win32:null,posix:null};return a.posix=a,Ki=a,Ki}var Ki,Ka,za,q0=ot(()=>{pe(),me(),ge(),jd(),Ki={},Ka=!1,za=V0()}),Ud={};hn(Ud,{URL:()=>rp,Url:()=>Jd,default:()=>Ne,fileURLToPath:()=>Dd,format:()=>Xd,parse:()=>tp,pathToFileURL:()=>Fd,resolve:()=>Zd,resolveObject:()=>ep});function Tt(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function Wn(e,t,r){if(e&&Nt.isObject(e)&&e instanceof Tt)return e;var n=new Tt;return n.parse(e,t,r),n}function K0(){if(Ya)return zi;Ya=!0;var e=Ke;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,o){for(var l="",s=0,u=-1,c=0,h,p=0;p<=i.length;++p){if(p<i.length)h=i.charCodeAt(p);else{if(h===47)break;h=47}if(h===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(l.length<2||s!==2||l.charCodeAt(l.length-1)!==46||l.charCodeAt(l.length-2)!==46){if(l.length>2){var m=l.lastIndexOf("/");if(m!==l.length-1){m===-1?(l="",s=0):(l=l.slice(0,m),s=l.length-1-l.lastIndexOf("/")),u=p,c=0;continue}}else if(l.length===2||l.length===1){l="",s=0,u=p,c=0;continue}}o&&(l.length>0?l+="/..":l="..",s=2)}else l.length>0?l+="/"+i.slice(u+1,p):l=i.slice(u+1,p),s=p-u-1;u=p,c=0}else h===46&&c!==-1?++c:c=-1}return l}function n(i,o){var l=o.dir||o.root,s=o.base||(o.name||"")+(o.ext||"");return l?l===o.root?l+s:l+i+s:s}var a={resolve:function(){for(var i="",o=!1,l,s=arguments.length-1;s>=-1&&!o;s--){var u;s>=0?u=arguments[s]:(l===void 0&&(l=e.cwd()),u=l),t(u),u.length!==0&&(i=u+"/"+i,o=u.charCodeAt(0)===47)}return i=r(i,!o),o?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var o=i.charCodeAt(0)===47,l=i.charCodeAt(i.length-1)===47;return i=r(i,!o),i.length===0&&!o&&(i="."),i.length>0&&l&&(i+="/"),o?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,o=0;o<arguments.length;++o){var l=arguments[o];t(l),l.length>0&&(i===void 0?i=l:i+="/"+l)}return i===void 0?".":a.normalize(i)},relative:function(i,o){if(t(i),t(o),i===o||(i=a.resolve(i),o=a.resolve(o),i===o))return"";for(var l=1;l<i.length&&i.charCodeAt(l)===47;++l);for(var s=i.length,u=s-l,c=1;c<o.length&&o.charCodeAt(c)===47;++c);for(var h=o.length,p=h-c,m=u<p?u:p,y=-1,b=0;b<=m;++b){if(b===m){if(p>m){if(o.charCodeAt(c+b)===47)return o.slice(c+b+1);if(b===0)return o.slice(c+b)}else u>m&&(i.charCodeAt(l+b)===47?y=b:b===0&&(y=0));break}var O=i.charCodeAt(l+b),L=o.charCodeAt(c+b);if(O!==L)break;O===47&&(y=b)}var P="";for(b=l+y+1;b<=s;++b)(b===s||i.charCodeAt(b)===47)&&(P.length===0?P+="..":P+="/..");return P.length>0?P+o.slice(c+y):(c+=y,o.charCodeAt(c)===47&&++c,o.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var o=i.charCodeAt(0),l=o===47,s=-1,u=!0,c=i.length-1;c>=1;--c)if(o=i.charCodeAt(c),o===47){if(!u){s=c;break}}else u=!1;return s===-1?l?"/":".":l&&s===1?"//":i.slice(0,s)},basename:function(i,o){if(o!==void 0&&typeof o!="string")throw new TypeError('"ext" argument must be a string');t(i);var l=0,s=-1,u=!0,c;if(o!==void 0&&o.length>0&&o.length<=i.length){if(o.length===i.length&&o===i)return"";var h=o.length-1,p=-1;for(c=i.length-1;c>=0;--c){var m=i.charCodeAt(c);if(m===47){if(!u){l=c+1;break}}else p===-1&&(u=!1,p=c+1),h>=0&&(m===o.charCodeAt(h)?--h===-1&&(s=c):(h=-1,s=p))}return l===s?s=p:s===-1&&(s=i.length),i.slice(l,s)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){l=c+1;break}}else s===-1&&(u=!1,s=c+1);return s===-1?"":i.slice(l,s)}},extname:function(i){t(i);for(var o=-1,l=0,s=-1,u=!0,c=0,h=i.length-1;h>=0;--h){var p=i.charCodeAt(h);if(p===47){if(!u){l=h+1;break}continue}s===-1&&(u=!1,s=h+1),p===46?o===-1?o=h:c!==1&&(c=1):o!==-1&&(c=-1)}return o===-1||s===-1||c===0||c===1&&o===s-1&&o===l+1?"":i.slice(o,s)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var o={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return o;var l=i.charCodeAt(0),s=l===47,u;s?(o.root="/",u=1):u=0;for(var c=-1,h=0,p=-1,m=!0,y=i.length-1,b=0;y>=u;--y){if(l=i.charCodeAt(y),l===47){if(!m){h=y+1;break}continue}p===-1&&(m=!1,p=y+1),l===46?c===-1?c=y:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===h+1?p!==-1&&(h===0&&s?o.base=o.name=i.slice(1,p):o.base=o.name=i.slice(h,p)):(h===0&&s?(o.name=i.slice(1,c),o.base=i.slice(1,p)):(o.name=i.slice(h,c),o.base=i.slice(h,p)),o.ext=i.slice(c,p)),h>0?o.dir=i.slice(0,h-1):s&&(o.dir="/"),o},sep:"/",delimiter:":",win32:null,posix:null};return a.posix=a,zi=a,zi}function z0(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return so?Y0(e):G0(e)}function Y0(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let a=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&a===102||r[n+1]==="5"&&a===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(qd,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,a=r[2];if(n<Hd||n>Vd||a!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function G0(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function Q0(e){let t=Ga.resolve(e),r=e.charCodeAt(e.length-1);(r===$d||so&&r===Wd)&&t[t.length-1]!==Ga.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace(Kd,"%25")),!so&&t.includes("\\")&&(t=t.replace(zd,"%5C")),t.includes(`
-`)&&(t=t.replace(Yd,"%0A")),t.includes("\r")&&(t=t.replace(Gd,"%0D")),t.includes("	")&&(t=t.replace(Qd,"%09")),n.pathname=t,n}function Dd(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return ao?J0(e):X0(e)}function J0(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let a=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&a===102||r[n+1]==="5"&&a===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(ap,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,a=r[2];if(n<op||n>sp||a!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function X0(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function Fd(e){let t=za.resolve(e),r=e.charCodeAt(e.length-1);(r===ip||ao&&r===np)&&t[t.length-1]!==za.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace(lp,"%25")),!ao&&t.includes("\\")&&(t=t.replace(up,"%5C")),t.includes(`
-`)&&(t=t.replace(cp,"%0A")),t.includes("\r")&&(t=t.replace(fp,"%0D")),t.includes("	")&&(t=t.replace(hp,"%09")),n.pathname=t,n}var Ne,Sc,Nt,Ac,Ic,Tc,Cc,Pi,ss,as,ls,Oc,Rc,ki,Yr,xi,zi,Ya,Ga,Pc,Wd,$d,Hd,Vd,so,qd,Kd,zd,Yd,Gd,Qd,kc,Jd,Xd,Zd,ep,tp,rp,np,ip,op,sp,ao,ap,lp,up,cp,fp,hp,Z0=ot(()=>{pe(),me(),ge(),U0(),F0(),$0(),q0(),jd(),Ne={},Sc=Sr,Nt={isString:function(e){return typeof e=="string"},isObject:function(e){return typeof e=="object"&&e!==null},isNull:function(e){return e===null},isNullOrUndefined:function(e){return e==null}},Ne.parse=Wn,Ne.resolve=function(e,t){return Wn(e,!1,!0).resolve(t)},Ne.resolveObject=function(e,t){return e?Wn(e,!1,!0).resolveObject(t):t},Ne.format=function(e){return Nt.isString(e)&&(e=Wn(e)),e instanceof Tt?e.format():Tt.prototype.format.call(e)},Ne.Url=Tt,Ac=/^([a-z0-9.+-]+:)/i,Ic=/:[0-9]*$/,Tc=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,Cc=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r",`
-`,"	"]),Pi=["'"].concat(Cc),ss=["%","/","?",";","#"].concat(Pi),as=["/","?","#"],ls=/^[+a-z0-9A-Z_-]{0,63}$/,Oc=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Rc={javascript:!0,"javascript:":!0},ki={javascript:!0,"javascript:":!0},Yr={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},xi=$t,Tt.prototype.parse=function(e,t,r){if(!Nt.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e.indexOf("?"),a=n!==-1&&n<e.indexOf("#")?"?":"#",i=e.split(a);i[0]=i[0].replace(/\\/g,"/");var o=e=i.join(a);if(o=o.trim(),!r&&e.split("#").length===1){var l=Tc.exec(o);if(l)return this.path=o,this.href=o,this.pathname=l[1],l[2]?(this.search=l[2],this.query=t?xi.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var s=Ac.exec(o);if(s){var u=(s=s[0]).toLowerCase();this.protocol=u,o=o.substr(s.length)}if(r||s||o.match(/^\/\/[^@\/]+@[^@\/]+/)){var c=o.substr(0,2)==="//";!c||s&&ki[s]||(o=o.substr(2),this.slashes=!0)}if(!ki[s]&&(c||s&&!Yr[s])){for(var h,p,m=-1,y=0;y<as.length;y++)(b=o.indexOf(as[y]))!==-1&&(m===-1||b<m)&&(m=b);for((p=m===-1?o.lastIndexOf("@"):o.lastIndexOf("@",m))!==-1&&(h=o.slice(0,p),o=o.slice(p+1),this.auth=decodeURIComponent(h)),m=-1,y=0;y<ss.length;y++){var b;(b=o.indexOf(ss[y]))!==-1&&(m===-1||b<m)&&(m=b)}m===-1&&(m=o.length),this.host=o.slice(0,m),o=o.slice(m),this.parseHost(),this.hostname=this.hostname||"";var O=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!O)for(var L=this.hostname.split(/\./),P=(y=0,L.length);y<P;y++){var w=L[y];if(w&&!w.match(ls)){for(var U="",W=0,R=w.length;W<R;W++)w.charCodeAt(W)>127?U+="x":U+=w[W];if(!U.match(ls)){var x=L.slice(0,y),j=L.slice(y+1),F=w.match(Oc);F&&(x.push(F[1]),j.unshift(F[2])),j.length&&(o="/"+j.join(".")+o),this.hostname=x.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),O||(this.hostname=Sc.toASCII(this.hostname));var X=this.port?":"+this.port:"",Z=this.hostname||"";this.host=Z+X,this.href+=this.host,O&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),o[0]!=="/"&&(o="/"+o))}if(!Rc[u])for(y=0,P=Pi.length;y<P;y++){var S=Pi[y];if(o.indexOf(S)!==-1){var z=encodeURIComponent(S);z===S&&(z=escape(S)),o=o.split(S).join(z)}}var ae=o.indexOf("#");ae!==-1&&(this.hash=o.substr(ae),o=o.slice(0,ae));var te=o.indexOf("?");if(te!==-1?(this.search=o.substr(te),this.query=o.substr(te+1),t&&(this.query=xi.parse(this.query)),o=o.slice(0,te)):t&&(this.search="",this.query={}),o&&(this.pathname=o),Yr[u]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){X=this.pathname||"";var le=this.search||"";this.path=X+le}return this.href=this.format(),this},Tt.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",a=!1,i="";this.host?a=e+this.host:this.hostname&&(a=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(a+=":"+this.port)),this.query&&Nt.isObject(this.query)&&Object.keys(this.query).length&&(i=xi.stringify(this.query));var o=this.search||i&&"?"+i||"";return t&&t.substr(-1)!==":"&&(t+=":"),this.slashes||(!t||Yr[t])&&a!==!1?(a="//"+(a||""),r&&r.charAt(0)!=="/"&&(r="/"+r)):a||(a=""),n&&n.charAt(0)!=="#"&&(n="#"+n),o&&o.charAt(0)!=="?"&&(o="?"+o),t+a+(r=r.replace(/[?#]/g,function(l){return encodeURIComponent(l)}))+(o=o.replace("#","%23"))+n},Tt.prototype.resolve=function(e){return this.resolveObject(Wn(e,!1,!0)).format()},Tt.prototype.resolveObject=function(e){if(Nt.isString(e)){var t=new Tt;t.parse(e,!1,!0),e=t}for(var r=new Tt,n=Object.keys(this),a=0;a<n.length;a++){var i=n[a];r[i]=this[i]}if(r.hash=e.hash,e.href==="")return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var o=Object.keys(e),l=0;l<o.length;l++){var s=o[l];s!=="protocol"&&(r[s]=e[s])}return Yr[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!Yr[e.protocol]){for(var u=Object.keys(e),c=0;c<u.length;c++){var h=u[c];r[h]=e[h]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||ki[e.protocol])r.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),p[0]!==""&&p.unshift(""),p.length<2&&p.unshift(""),r.pathname=p.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",y=r.search||"";r.path=m+y}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var b=r.pathname&&r.pathname.charAt(0)==="/",O=e.host||e.pathname&&e.pathname.charAt(0)==="/",L=O||b||r.host&&e.pathname,P=L,w=r.pathname&&r.pathname.split("/")||[],U=(p=e.pathname&&e.pathname.split("/")||[],r.protocol&&!Yr[r.protocol]);if(U&&(r.hostname="",r.port=null,r.host&&(w[0]===""?w[0]=r.host:w.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(p[0]===""?p[0]=e.host:p.unshift(e.host)),e.host=null),L=L&&(p[0]===""||w[0]==="")),O)r.host=e.host||e.host===""?e.host:r.host,r.hostname=e.hostname||e.hostname===""?e.hostname:r.hostname,r.search=e.search,r.query=e.query,w=p;else if(p.length)w||(w=[]),w.pop(),w=w.concat(p),r.search=e.search,r.query=e.query;else if(!Nt.isNullOrUndefined(e.search))return U&&(r.hostname=r.host=w.shift(),(F=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=F.shift(),r.host=r.hostname=F.shift())),r.search=e.search,r.query=e.query,Nt.isNull(r.pathname)&&Nt.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!w.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var W=w.slice(-1)[0],R=(r.host||e.host||w.length>1)&&(W==="."||W==="..")||W==="",x=0,j=w.length;j>=0;j--)(W=w[j])==="."?w.splice(j,1):W===".."?(w.splice(j,1),x++):x&&(w.splice(j,1),x--);if(!L&&!P)for(;x--;x)w.unshift("..");!L||w[0]===""||w[0]&&w[0].charAt(0)==="/"||w.unshift(""),R&&w.join("/").substr(-1)!=="/"&&w.push("");var F,X=w[0]===""||w[0]&&w[0].charAt(0)==="/";return U&&(r.hostname=r.host=X?"":w.length?w.shift():"",(F=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=F.shift(),r.host=r.hostname=F.shift())),(L=L||r.host&&w.length)&&!X&&w.unshift(""),w.length?r.pathname=w.join("/"):(r.pathname=null,r.path=null),Nt.isNull(r.pathname)&&Nt.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},Tt.prototype.parseHost=function(){var e=this.host,t=Ic.exec(e);t&&((t=t[0])!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},Ne.Url,Ne.format,Ne.resolve,Ne.resolveObject,zi={},Ya=!1,Ga=K0(),Pc=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,Ne.URL=typeof URL<"u"?URL:null,Ne.pathToFileURL=Q0,Ne.fileURLToPath=z0,Ne.Url,Ne.format,Ne.resolve,Ne.resolveObject,Ne.URL,Wd=92,$d=47,Hd=97,Vd=122,so=Pc==="win32",qd=/\//g,Kd=/%/g,zd=/\\/g,Yd=/\n/g,Gd=/\r/g,Qd=/\t/g,kc=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,Ne.URL=typeof URL<"u"?URL:null,Ne.pathToFileURL=Fd,Ne.fileURLToPath=Dd,Jd=Ne.Url,Xd=Ne.format,Zd=Ne.resolve,ep=Ne.resolveObject,tp=Ne.parse,rp=Ne.URL,np=92,ip=47,op=97,sp=122,ao=kc==="win32",ap=/\//g,lp=/%/g,up=/\\/g,cp=/\n/g,fp=/\r/g,hp=/\t/g}),ev=ve((e,t)=>{pe(),me(),ge(),t.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),Nl=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0}),e.BufferedDuplex=e.writev=void 0;var t=gn(),r=(at(),Ue(st));function n(i,o){let l=new Array(i.length);for(let s=0;s<i.length;s++)typeof i[s].chunk=="string"?l[s]=r.Buffer.from(i[s].chunk,"utf8"):l[s]=i[s].chunk;this._write(r.Buffer.concat(l),"binary",o)}e.writev=n;var a=class extends t.Duplex{constructor(i,o,l){super({objectMode:!0}),this.proxy=o,this.socket=l,this.writeQueue=[],i.objectMode||(this._writev=n.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",s=>{this.destroyed||this.push(s)})}_read(i){this.proxy.read(i)}_write(i,o,l){this.isSocketOpen?this.writeToProxy(i,o,l):this.writeQueue.push({chunk:i,encoding:o,cb:l})}_final(i){this.writeQueue=[],this.proxy.end(i)}_destroy(i,o){this.writeQueue=[],this.proxy.destroy(),o(i)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(i,o,l){this.proxy.write(i,o)===!1?this.proxy.once("drain",l):l()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:i,encoding:o,cb:l}=this.writeQueue.shift();this.writeToProxy(i,o,l)}}};e.BufferedDuplex=a}),Bi=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(L){return L&&L.__esModule?L:{default:L}};Object.defineProperty(e,"__esModule",{value:!0}),e.streamBuilder=e.browserStreamBuilder=void 0;var r=(at(),Ue(st)),n=t(ev()),a=t(ur()),i=gn(),o=t(xo()),l=Nl(),s=(0,a.default)("mqttjs:ws"),u=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function c(L,P){let w=`${L.protocol}://${L.hostname}:${L.port}${L.path}`;return typeof L.transformWsUrl=="function"&&(w=L.transformWsUrl(w,L,P)),w}function h(L){let P=L;return L.port||(L.protocol==="wss"?P.port=443:P.port=80),L.path||(P.path="/"),L.wsOptions||(P.wsOptions={}),!o.default&&!L.forceNativeWebSocket&&L.protocol==="wss"&&u.forEach(w=>{Object.prototype.hasOwnProperty.call(L,w)&&!Object.prototype.hasOwnProperty.call(L.wsOptions,w)&&(P.wsOptions[w]=L[w])}),P}function p(L){let P=h(L);if(P.hostname||(P.hostname=P.host),!P.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let w=new URL(document.URL);P.hostname=w.hostname,P.port||(P.port=Number(w.port))}return P.objectMode===void 0&&(P.objectMode=!(P.binary===!0||P.binary===void 0)),P}function m(L,P,w){s("createWebSocket"),s(`protocol: ${w.protocolId} ${w.protocolVersion}`);let U=w.protocolId==="MQIsdp"&&w.protocolVersion===3?"mqttv3.1":"mqtt";s(`creating new Websocket for url: ${P} and protocol: ${U}`);let W;return w.createWebsocket?W=w.createWebsocket(P,[U],w):W=new n.default(P,[U],w.wsOptions),W}function y(L,P){let w=P.protocolId==="MQIsdp"&&P.protocolVersion===3?"mqttv3.1":"mqtt",U=c(P,L),W;return P.createWebsocket?W=P.createWebsocket(U,[w],P):W=new WebSocket(U,[w]),W.binaryType="arraybuffer",W}var b=(L,P)=>{s("streamBuilder");let w=h(P);w.hostname=w.hostname||w.host||"localhost";let U=c(w,L),W=m(L,U,w),R=n.default.createWebSocketStream(W,w.wsOptions);return R.url=U,W.on("close",()=>{R.destroy()}),R};e.streamBuilder=b;var O=(L,P)=>{s("browserStreamBuilder");let w,U=p(P).browserBufferSize||1024*512,W=P.browserBufferTimeout||1e3,R=!P.objectMode,x=y(L,P),j=X(P,te,le);P.objectMode||(j._writev=l.writev.bind(j)),j.on("close",()=>{x.close()});let F=typeof x.addEventListener<"u";x.readyState===x.OPEN?(w=j,w.socket=x):(w=new l.BufferedDuplex(P,j,x),F?x.addEventListener("open",Z):x.onopen=Z),F?(x.addEventListener("close",S),x.addEventListener("error",z),x.addEventListener("message",ae)):(x.onclose=S,x.onerror=z,x.onmessage=ae);function X(ne,G,de){let ce=new i.Transform({objectMode:ne.objectMode});return ce._write=G,ce._flush=de,ce}function Z(){s("WebSocket onOpen"),w instanceof l.BufferedDuplex&&w.socketReady()}function S(ne){s("WebSocket onClose",ne),w.end(),w.destroy()}function z(ne){s("WebSocket onError",ne);let G=new Error("WebSocket error");G.event=ne,w.destroy(G)}function ae(ne){let{data:G}=ne;G instanceof ArrayBuffer?G=r.Buffer.from(G):G=r.Buffer.from(G,"utf8"),j&&!j.destroyed&&j.push(G)}function te(ne,G,de){if(x.bufferedAmount>U){setTimeout(te,W,ne,G,de);return}R&&typeof ne=="string"&&(ne=r.Buffer.from(ne,"utf8"));try{x.send(ne)}catch(ce){return de(ce)}de()}function le(ne){x.close(),ne()}return w};e.browserStreamBuilder=O}),jl={};hn(jl,{Server:()=>He,Socket:()=>He,Stream:()=>He,_createServerHandle:()=>He,_normalizeArgs:()=>He,_setSimultaneousAccepts:()=>He,connect:()=>He,createConnection:()=>He,createServer:()=>He,default:()=>dp,isIP:()=>He,isIPv4:()=>He,isIPv6:()=>He});function He(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var dp,pp=ot(()=>{pe(),me(),ge(),dp={_createServerHandle:He,_normalizeArgs:He,_setSimultaneousAccepts:He,connect:He,createConnection:He,createServer:He,isIP:He,isIPv4:He,isIPv6:He,Server:He,Socket:He,Stream:He}}),xc=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((pp(),Ue(jl))),n=t(ur()),a=(0,n.default)("mqttjs:tcp"),i=(o,l)=>{l.port=l.port||1883,l.hostname=l.hostname||l.host||"localhost";let{port:s,path:u}=l,c=l.hostname;return a("port %d and host %s",s,c),r.default.createConnection({port:s,host:c,path:u})};e.default=i}),gp={};hn(gp,{default:()=>mp});var mp,tv=ot(()=>{pe(),me(),ge(),mp={}}),Bc=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((tv(),Ue(gp))),n=t((pp(),Ue(jl))),a=t(ur()),i=(0,a.default)("mqttjs:tls"),o=(l,s)=>{s.port=s.port||8883,s.host=s.hostname||s.host||"localhost",n.default.isIP(s.host)===0&&(s.servername=s.host),s.rejectUnauthorized=s.rejectUnauthorized!==!1,delete s.path,i("port %d host %s rejectUnauthorized %b",s.port,s.host,s.rejectUnauthorized);let u=r.default.connect(s);u.on("secureConnect",()=>{s.rejectUnauthorized&&!u.authorized?u.emit("error",new Error("TLS not authorized")):u.removeListener("error",c)});function c(h){s.rejectUnauthorized&&l.emit("error",h),u.end()}return u.on("error",c),u};e.default=o}),Mc=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=(at(),Ue(st)),r=gn(),n=Nl(),a,i,o;function l(){let p=new r.Transform;return p._write=(m,y,b)=>{a.send({data:m.buffer,success(){b()},fail(O){b(new Error(O))}})},p._flush=m=>{a.close({success(){m()}})},p}function s(p){p.hostname||(p.hostname="localhost"),p.path||(p.path="/"),p.wsOptions||(p.wsOptions={})}function u(p,m){let y=p.protocol==="wxs"?"wss":"ws",b=`${y}://${p.hostname}${p.path}`;return p.port&&p.port!==80&&p.port!==443&&(b=`${y}://${p.hostname}:${p.port}${p.path}`),typeof p.transformWsUrl=="function"&&(b=p.transformWsUrl(b,p,m)),b}function c(){a.onOpen(()=>{o.socketReady()}),a.onMessage(p=>{let{data:m}=p;m instanceof ArrayBuffer?m=t.Buffer.from(m):m=t.Buffer.from(m,"utf8"),i.push(m)}),a.onClose(()=>{o.emit("close"),o.end(),o.destroy()}),a.onError(p=>{let m=new Error(p.errMsg);o.destroy(m)})}var h=(p,m)=>{if(m.hostname=m.hostname||m.host,!m.hostname)throw new Error("Could not determine host. Specify host manually.");let y=m.protocolId==="MQIsdp"&&m.protocolVersion===3?"mqttv3.1":"mqtt";s(m);let b=u(m,p);a=wx.connectSocket({url:b,protocols:[y]}),i=l(),o=new n.BufferedDuplex(m,i,a),o._destroy=(L,P)=>{a.close({success(){P&&P(L)}})};let O=o.destroy;return o.destroy=(L,P)=>(o.destroy=O,setTimeout(()=>{a.close({fail(){o._destroy(L,P)}})},0),o),c(),o};e.default=h}),Lc=ve(e=>{pe(),me(),ge(),Object.defineProperty(e,"__esModule",{value:!0});var t=(at(),Ue(st)),r=gn(),n=Nl(),a,i,o,l=!1;function s(){let m=new r.Transform;return m._write=(y,b,O)=>{a.sendSocketMessage({data:y.buffer,success(){O()},fail(){O(new Error)}})},m._flush=y=>{a.closeSocket({success(){y()}})},m}function u(m){m.hostname||(m.hostname="localhost"),m.path||(m.path="/"),m.wsOptions||(m.wsOptions={})}function c(m,y){let b=m.protocol==="alis"?"wss":"ws",O=`${b}://${m.hostname}${m.path}`;return m.port&&m.port!==80&&m.port!==443&&(O=`${b}://${m.hostname}:${m.port}${m.path}`),typeof m.transformWsUrl=="function"&&(O=m.transformWsUrl(O,m,y)),O}function h(){l||(l=!0,a.onSocketOpen(()=>{o.socketReady()}),a.onSocketMessage(m=>{if(typeof m.data=="string"){let y=t.Buffer.from(m.data,"base64");i.push(y)}else{let y=new FileReader;y.addEventListener("load",()=>{let b=y.result;b instanceof ArrayBuffer?b=t.Buffer.from(b):b=t.Buffer.from(b,"utf8"),i.push(b)}),y.readAsArrayBuffer(m.data)}}),a.onSocketClose(()=>{o.end(),o.destroy()}),a.onSocketError(m=>{o.destroy(m)}))}var p=(m,y)=>{if(y.hostname=y.hostname||y.host,!y.hostname)throw new Error("Could not determine host. Specify host manually.");let b=y.protocolId==="MQIsdp"&&y.protocolVersion===3?"mqttv3.1":"mqtt";u(y);let O=c(y,m);return a=y.my,a.connectSocket({url:O,protocols:b}),i=s(),o=new n.BufferedDuplex(y,i,a),h(),o};e.default=p}),rv=ve(e=>{pe(),me(),ge();var t=e&&e.__importDefault||function(h){return h&&h.__esModule?h:{default:h}};Object.defineProperty(e,"__esModule",{value:!0}),e.connectAsync=void 0;var r=t(ur()),n=t((Z0(),Ue(Ud))),a=t(Wa()),i=t(xo());typeof(Me==null?void 0:Me.nextTick)!="function"&&(Me.nextTick=setImmediate);var o=(0,r.default)("mqttjs"),l=null;function s(h){let p;h.auth&&(p=h.auth.match(/^(.+):(.+)$/),p?(h.username=p[1],h.password=p[2]):h.username=h.auth)}function u(h,p){var m,y,b,O;if(o("connecting to an MQTT broker..."),typeof h=="object"&&!p&&(p=h,h=""),p=p||{},h&&typeof h=="string"){let w=n.default.parse(h,!0),U={};if(w.port!=null&&(U.port=Number(w.port)),U.host=w.hostname,U.query=w.query,U.auth=w.auth,U.protocol=w.protocol,U.path=w.path,U.protocol=(m=U.protocol)===null||m===void 0?void 0:m.replace(/:$/,""),p=Object.assign(Object.assign({},U),p),!p.protocol)throw new Error("Missing protocol")}if(p.unixSocket=p.unixSocket||((y=p.protocol)===null||y===void 0?void 0:y.includes("+unix")),p.unixSocket?p.protocol=p.protocol.replace("+unix",""):!(!((b=p.protocol)===null||b===void 0)&&b.startsWith("ws"))&&!(!((O=p.protocol)===null||O===void 0)&&O.startsWith("wx"))&&delete p.path,s(p),p.query&&typeof p.query.clientId=="string"&&(p.clientId=p.query.clientId),p.cert&&p.key)if(p.protocol){if(["mqtts","wss","wxs","alis"].indexOf(p.protocol)===-1)switch(p.protocol){case"mqtt":p.protocol="mqtts";break;case"ws":p.protocol="wss";break;case"wx":p.protocol="wxs";break;case"ali":p.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${p.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(l||(l={},!i.default&&!p.forceNativeWebSocket?(l.ws=Bi().streamBuilder,l.wss=Bi().streamBuilder,l.mqtt=xc().default,l.tcp=xc().default,l.ssl=Bc().default,l.tls=l.ssl,l.mqtts=Bc().default):(l.ws=Bi().browserStreamBuilder,l.wss=Bi().browserStreamBuilder,l.wx=Mc().default,l.wxs=Mc().default,l.ali=Lc().default,l.alis=Lc().default)),!l[p.protocol]){let w=["mqtts","wss"].indexOf(p.protocol)!==-1;p.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((U,W)=>w&&W%2===0?!1:typeof l[U]=="function")[0]}if(p.clean===!1&&!p.clientId)throw new Error("Missing clientId for unclean clients");p.protocol&&(p.defaultProtocol=p.protocol);function L(w){return p.servers&&((!w._reconnectCount||w._reconnectCount===p.servers.length)&&(w._reconnectCount=0),p.host=p.servers[w._reconnectCount].host,p.port=p.servers[w._reconnectCount].port,p.protocol=p.servers[w._reconnectCount].protocol?p.servers[w._reconnectCount].protocol:p.defaultProtocol,p.hostname=p.host,w._reconnectCount++),o("calling streambuilder for",p.protocol),l[p.protocol](w,p)}let P=new a.default(L,p);return P.on("error",()=>{}),P}function c(h,p,m=!0){return new Promise((y,b)=>{let O=u(h,p),L={connect:w=>{P(),y(O)},end:()=>{P(),y(O)},error:w=>{P(),O.end(),b(w)}};m===!1&&(L.close=()=>{L.error(new Error("Couldn't connect to server"))});function P(){Object.keys(L).forEach(w=>{O.off(w,L[w])})}Object.keys(L).forEach(w=>{O.on(w,L[w])})})}e.connectAsync=c,e.default=u}),Nc=ve(e=>{pe(),me(),ge();var t=e&&e.__createBinding||(Object.create?function(m,y,b,O){O===void 0&&(O=b);var L=Object.getOwnPropertyDescriptor(y,b);(!L||("get"in L?!y.__esModule:L.writable||L.configurable))&&(L={enumerable:!0,get:function(){return y[b]}}),Object.defineProperty(m,O,L)}:function(m,y,b,O){O===void 0&&(O=b),m[O]=y[b]}),r=e&&e.__setModuleDefault||(Object.create?function(m,y){Object.defineProperty(m,"default",{enumerable:!0,value:y})}:function(m,y){m.default=y}),n=e&&e.__importStar||function(m){if(m&&m.__esModule)return m;var y={};if(m!=null)for(var b in m)b!=="default"&&Object.prototype.hasOwnProperty.call(m,b)&&t(y,m,b);return r(y,m),y},a=e&&e.__exportStar||function(m,y){for(var b in m)b!=="default"&&!Object.prototype.hasOwnProperty.call(y,b)&&t(y,m,b)},i=e&&e.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=e.KeepaliveManager=e.UniqueMessageIdProvider=e.DefaultMessageIdProvider=e.Store=e.MqttClient=e.connectAsync=e.connect=e.Client=void 0;var o=i(Wa());e.MqttClient=o.default;var l=i(gd());e.DefaultMessageIdProvider=l.default;var s=i(j0());e.UniqueMessageIdProvider=s.default;var u=i(md());e.Store=u.default;var c=n(rv());e.connect=c.default,Object.defineProperty(e,"connectAsync",{enumerable:!0,get:function(){return c.connectAsync}});var h=i(xd());e.KeepaliveManager=h.default,e.Client=o.default,a(Wa(),e),a(Mn(),e);var p=ko();Object.defineProperty(e,"ReasonCodes",{enumerable:!0,get:function(){return p.ReasonCodes}})}),nv=ve(e=>{pe(),me(),ge();var t=e&&e.__createBinding||(Object.create?function(o,l,s,u){u===void 0&&(u=s);var c=Object.getOwnPropertyDescriptor(l,s);(!c||("get"in c?!l.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return l[s]}}),Object.defineProperty(o,u,c)}:function(o,l,s,u){u===void 0&&(u=s),o[u]=l[s]}),r=e&&e.__setModuleDefault||(Object.create?function(o,l){Object.defineProperty(o,"default",{enumerable:!0,value:l})}:function(o,l){o.default=l}),n=e&&e.__importStar||function(o){if(o&&o.__esModule)return o;var l={};if(o!=null)for(var s in o)s!=="default"&&Object.prototype.hasOwnProperty.call(o,s)&&t(l,o,s);return r(l,o),l},a=e&&e.__exportStar||function(o,l){for(var s in o)s!=="default"&&!Object.prototype.hasOwnProperty.call(l,s)&&t(l,o,s)};Object.defineProperty(e,"__esModule",{value:!0});var i=n(Nc());e.default=i,a(Nc(),e)});const xw=nv();/*! Bundled license information:
-
-@jspm/core/nodelibs/browser/buffer.js:
-  (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
-*/var mt="top",kt="bottom",xt="right",yt="left",Ul="auto",yi=[mt,kt,xt,yt],On="start",di="end",iv="clippingParents",yp="viewport",$n="popper",ov="reference",jc=yi.reduce(function(e,t){return e.concat([t+"-"+On,t+"-"+di])},[]),bp=[].concat(yi,[Ul]).reduce(function(e,t){return e.concat([t,t+"-"+On,t+"-"+di])},[]),sv="beforeRead",av="read",lv="afterRead",uv="beforeMain",cv="main",fv="afterMain",hv="beforeWrite",dv="write",pv="afterWrite",gv=[sv,av,lv,uv,cv,fv,hv,dv,pv];function Gt(e){return e?(e.nodeName||"").toLowerCase():null}function Bt(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function fn(e){var t=Bt(e).Element;return e instanceof t||e instanceof Element}function Pt(e){var t=Bt(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Dl(e){if(typeof ShadowRoot>"u")return!1;var t=Bt(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function mv(e){var t=e.state;Object.keys(t.elements).forEach(function(r){var n=t.styles[r]||{},a=t.attributes[r]||{},i=t.elements[r];!Pt(i)||!Gt(i)||(Object.assign(i.style,n),Object.keys(a).forEach(function(o){var l=a[o];l===!1?i.removeAttribute(o):i.setAttribute(o,l===!0?"":l)}))})}function yv(e){var t=e.state,r={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.styles=r,t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach(function(n){var a=t.elements[n],i=t.attributes[n]||{},o=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:r[n]),l=o.reduce(function(s,u){return s[u]="",s},{});!Pt(a)||!Gt(a)||(Object.assign(a.style,l),Object.keys(i).forEach(function(s){a.removeAttribute(s)}))})}}const bv={name:"applyStyles",enabled:!0,phase:"write",fn:mv,effect:yv,requires:["computeStyles"]};function Yt(e){return e.split("-")[0]}var un=Math.max,lo=Math.min,Rn=Math.round;function Qa(){var e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function vp(){return!/^((?!chrome|android).)*safari/i.test(Qa())}function Pn(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!1);var n=e.getBoundingClientRect(),a=1,i=1;t&&Pt(e)&&(a=e.offsetWidth>0&&Rn(n.width)/e.offsetWidth||1,i=e.offsetHeight>0&&Rn(n.height)/e.offsetHeight||1);var o=fn(e)?Bt(e):window,l=o.visualViewport,s=!vp()&&r,u=(n.left+(s&&l?l.offsetLeft:0))/a,c=(n.top+(s&&l?l.offsetTop:0))/i,h=n.width/a,p=n.height/i;return{width:h,height:p,top:c,right:u+h,bottom:c+p,left:u,x:u,y:c}}function Fl(e){var t=Pn(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function wp(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Dl(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function cr(e){return Bt(e).getComputedStyle(e)}function vv(e){return["table","td","th"].indexOf(Gt(e))>=0}function Ur(e){return((fn(e)?e.ownerDocument:e.document)||window.document).documentElement}function Bo(e){return Gt(e)==="html"?e:e.assignedSlot||e.parentNode||(Dl(e)?e.host:null)||Ur(e)}function Uc(e){return!Pt(e)||cr(e).position==="fixed"?null:e.offsetParent}function wv(e){var t=/firefox/i.test(Qa()),r=/Trident/i.test(Qa());if(r&&Pt(e)){var n=cr(e);if(n.position==="fixed")return null}var a=Bo(e);for(Dl(a)&&(a=a.host);Pt(a)&&["html","body"].indexOf(Gt(a))<0;){var i=cr(a);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||t&&i.willChange==="filter"||t&&i.filter&&i.filter!=="none")return a;a=a.parentNode}return null}function bi(e){for(var t=Bt(e),r=Uc(e);r&&vv(r)&&cr(r).position==="static";)r=Uc(r);return r&&(Gt(r)==="html"||Gt(r)==="body"&&cr(r).position==="static")?t:r||wv(e)||t}function Wl(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function ii(e,t,r){return un(e,lo(t,r))}function _v(e,t,r){var n=ii(e,t,r);return n>r?r:n}function _p(){return{top:0,right:0,bottom:0,left:0}}function Ep(e){return Object.assign({},_p(),e)}function Sp(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}var Ev=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,Ep(typeof t!="number"?t:Sp(t,yi))};function Sv(e){var t,r=e.state,n=e.name,a=e.options,i=r.elements.arrow,o=r.modifiersData.popperOffsets,l=Yt(r.placement),s=Wl(l),u=[yt,xt].indexOf(l)>=0,c=u?"height":"width";if(!(!i||!o)){var h=Ev(a.padding,r),p=Fl(i),m=s==="y"?mt:yt,y=s==="y"?kt:xt,b=r.rects.reference[c]+r.rects.reference[s]-o[s]-r.rects.popper[c],O=o[s]-r.rects.reference[s],L=bi(i),P=L?s==="y"?L.clientHeight||0:L.clientWidth||0:0,w=b/2-O/2,U=h[m],W=P-p[c]-h[y],R=P/2-p[c]/2+w,x=ii(U,R,W),j=s;r.modifiersData[n]=(t={},t[j]=x,t.centerOffset=x-R,t)}}function Av(e){var t=e.state,r=e.options,n=r.element,a=n===void 0?"[data-popper-arrow]":n;a!=null&&(typeof a=="string"&&(a=t.elements.popper.querySelector(a),!a)||wp(t.elements.popper,a)&&(t.elements.arrow=a))}const Iv={name:"arrow",enabled:!0,phase:"main",fn:Sv,effect:Av,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function kn(e){return e.split("-")[1]}var Tv={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Cv(e){var t=e.x,r=e.y,n=window,a=n.devicePixelRatio||1;return{x:Rn(t*a)/a||0,y:Rn(r*a)/a||0}}function Dc(e){var t,r=e.popper,n=e.popperRect,a=e.placement,i=e.variation,o=e.offsets,l=e.position,s=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,h=e.isFixed,p=o.x,m=p===void 0?0:p,y=o.y,b=y===void 0?0:y,O=typeof c=="function"?c({x:m,y:b}):{x:m,y:b};m=O.x,b=O.y;var L=o.hasOwnProperty("x"),P=o.hasOwnProperty("y"),w=yt,U=mt,W=window;if(u){var R=bi(r),x="clientHeight",j="clientWidth";if(R===Bt(r)&&(R=Ur(r),cr(R).position!=="static"&&l==="absolute"&&(x="scrollHeight",j="scrollWidth")),R=R,a===mt||(a===yt||a===xt)&&i===di){U=kt;var F=h&&R===W&&W.visualViewport?W.visualViewport.height:R[x];b-=F-n.height,b*=s?1:-1}if(a===yt||(a===mt||a===kt)&&i===di){w=xt;var X=h&&R===W&&W.visualViewport?W.visualViewport.width:R[j];m-=X-n.width,m*=s?1:-1}}var Z=Object.assign({position:l},u&&Tv),S=c===!0?Cv({x:m,y:b}):{x:m,y:b};if(m=S.x,b=S.y,s){var z;return Object.assign({},Z,(z={},z[U]=P?"0":"",z[w]=L?"0":"",z.transform=(W.devicePixelRatio||1)<=1?"translate("+m+"px, "+b+"px)":"translate3d("+m+"px, "+b+"px, 0)",z))}return Object.assign({},Z,(t={},t[U]=P?b+"px":"",t[w]=L?m+"px":"",t.transform="",t))}function Ov(e){var t=e.state,r=e.options,n=r.gpuAcceleration,a=n===void 0?!0:n,i=r.adaptive,o=i===void 0?!0:i,l=r.roundOffsets,s=l===void 0?!0:l,u={placement:Yt(t.placement),variation:kn(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:a,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Dc(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:s})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Dc(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const Rv={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Ov,data:{}};var Mi={passive:!0};function Pv(e){var t=e.state,r=e.instance,n=e.options,a=n.scroll,i=a===void 0?!0:a,o=n.resize,l=o===void 0?!0:o,s=Bt(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&u.forEach(function(c){c.addEventListener("scroll",r.update,Mi)}),l&&s.addEventListener("resize",r.update,Mi),function(){i&&u.forEach(function(c){c.removeEventListener("scroll",r.update,Mi)}),l&&s.removeEventListener("resize",r.update,Mi)}}const kv={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Pv,data:{}};var xv={left:"right",right:"left",bottom:"top",top:"bottom"};function Yi(e){return e.replace(/left|right|bottom|top/g,function(t){return xv[t]})}var Bv={start:"end",end:"start"};function Fc(e){return e.replace(/start|end/g,function(t){return Bv[t]})}function $l(e){var t=Bt(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Hl(e){return Pn(Ur(e)).left+$l(e).scrollLeft}function Mv(e,t){var r=Bt(e),n=Ur(e),a=r.visualViewport,i=n.clientWidth,o=n.clientHeight,l=0,s=0;if(a){i=a.width,o=a.height;var u=vp();(u||!u&&t==="fixed")&&(l=a.offsetLeft,s=a.offsetTop)}return{width:i,height:o,x:l+Hl(e),y:s}}function Lv(e){var t,r=Ur(e),n=$l(e),a=(t=e.ownerDocument)==null?void 0:t.body,i=un(r.scrollWidth,r.clientWidth,a?a.scrollWidth:0,a?a.clientWidth:0),o=un(r.scrollHeight,r.clientHeight,a?a.scrollHeight:0,a?a.clientHeight:0),l=-n.scrollLeft+Hl(e),s=-n.scrollTop;return cr(a||r).direction==="rtl"&&(l+=un(r.clientWidth,a?a.clientWidth:0)-i),{width:i,height:o,x:l,y:s}}function Vl(e){var t=cr(e),r=t.overflow,n=t.overflowX,a=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+a+n)}function Ap(e){return["html","body","#document"].indexOf(Gt(e))>=0?e.ownerDocument.body:Pt(e)&&Vl(e)?e:Ap(Bo(e))}function oi(e,t){var r;t===void 0&&(t=[]);var n=Ap(e),a=n===((r=e.ownerDocument)==null?void 0:r.body),i=Bt(n),o=a?[i].concat(i.visualViewport||[],Vl(n)?n:[]):n,l=t.concat(o);return a?l:l.concat(oi(Bo(o)))}function Ja(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Nv(e,t){var r=Pn(e,!1,t==="fixed");return r.top=r.top+e.clientTop,r.left=r.left+e.clientLeft,r.bottom=r.top+e.clientHeight,r.right=r.left+e.clientWidth,r.width=e.clientWidth,r.height=e.clientHeight,r.x=r.left,r.y=r.top,r}function Wc(e,t,r){return t===yp?Ja(Mv(e,r)):fn(t)?Nv(t,r):Ja(Lv(Ur(e)))}function jv(e){var t=oi(Bo(e)),r=["absolute","fixed"].indexOf(cr(e).position)>=0,n=r&&Pt(e)?bi(e):e;return fn(n)?t.filter(function(a){return fn(a)&&wp(a,n)&&Gt(a)!=="body"}):[]}function Uv(e,t,r,n){var a=t==="clippingParents"?jv(e):[].concat(t),i=[].concat(a,[r]),o=i[0],l=i.reduce(function(s,u){var c=Wc(e,u,n);return s.top=un(c.top,s.top),s.right=lo(c.right,s.right),s.bottom=lo(c.bottom,s.bottom),s.left=un(c.left,s.left),s},Wc(e,o,n));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}function Ip(e){var t=e.reference,r=e.element,n=e.placement,a=n?Yt(n):null,i=n?kn(n):null,o=t.x+t.width/2-r.width/2,l=t.y+t.height/2-r.height/2,s;switch(a){case mt:s={x:o,y:t.y-r.height};break;case kt:s={x:o,y:t.y+t.height};break;case xt:s={x:t.x+t.width,y:l};break;case yt:s={x:t.x-r.width,y:l};break;default:s={x:t.x,y:t.y}}var u=a?Wl(a):null;if(u!=null){var c=u==="y"?"height":"width";switch(i){case On:s[u]=s[u]-(t[c]/2-r[c]/2);break;case di:s[u]=s[u]+(t[c]/2-r[c]/2);break}}return s}function pi(e,t){t===void 0&&(t={});var r=t,n=r.placement,a=n===void 0?e.placement:n,i=r.strategy,o=i===void 0?e.strategy:i,l=r.boundary,s=l===void 0?iv:l,u=r.rootBoundary,c=u===void 0?yp:u,h=r.elementContext,p=h===void 0?$n:h,m=r.altBoundary,y=m===void 0?!1:m,b=r.padding,O=b===void 0?0:b,L=Ep(typeof O!="number"?O:Sp(O,yi)),P=p===$n?ov:$n,w=e.rects.popper,U=e.elements[y?P:p],W=Uv(fn(U)?U:U.contextElement||Ur(e.elements.popper),s,c,o),R=Pn(e.elements.reference),x=Ip({reference:R,element:w,strategy:"absolute",placement:a}),j=Ja(Object.assign({},w,x)),F=p===$n?j:R,X={top:W.top-F.top+L.top,bottom:F.bottom-W.bottom+L.bottom,left:W.left-F.left+L.left,right:F.right-W.right+L.right},Z=e.modifiersData.offset;if(p===$n&&Z){var S=Z[a];Object.keys(X).forEach(function(z){var ae=[xt,kt].indexOf(z)>=0?1:-1,te=[mt,kt].indexOf(z)>=0?"y":"x";X[z]+=S[te]*ae})}return X}function Dv(e,t){t===void 0&&(t={});var r=t,n=r.placement,a=r.boundary,i=r.rootBoundary,o=r.padding,l=r.flipVariations,s=r.allowedAutoPlacements,u=s===void 0?bp:s,c=kn(n),h=c?l?jc:jc.filter(function(y){return kn(y)===c}):yi,p=h.filter(function(y){return u.indexOf(y)>=0});p.length===0&&(p=h);var m=p.reduce(function(y,b){return y[b]=pi(e,{placement:b,boundary:a,rootBoundary:i,padding:o})[Yt(b)],y},{});return Object.keys(m).sort(function(y,b){return m[y]-m[b]})}function Fv(e){if(Yt(e)===Ul)return[];var t=Yi(e);return[Fc(e),t,Fc(t)]}function Wv(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var a=r.mainAxis,i=a===void 0?!0:a,o=r.altAxis,l=o===void 0?!0:o,s=r.fallbackPlacements,u=r.padding,c=r.boundary,h=r.rootBoundary,p=r.altBoundary,m=r.flipVariations,y=m===void 0?!0:m,b=r.allowedAutoPlacements,O=t.options.placement,L=Yt(O),P=L===O,w=s||(P||!y?[Yi(O)]:Fv(O)),U=[O].concat(w).reduce(function(he,we){return he.concat(Yt(we)===Ul?Dv(t,{placement:we,boundary:c,rootBoundary:h,padding:u,flipVariations:y,allowedAutoPlacements:b}):we)},[]),W=t.rects.reference,R=t.rects.popper,x=new Map,j=!0,F=U[0],X=0;X<U.length;X++){var Z=U[X],S=Yt(Z),z=kn(Z)===On,ae=[mt,kt].indexOf(S)>=0,te=ae?"width":"height",le=pi(t,{placement:Z,boundary:c,rootBoundary:h,altBoundary:p,padding:u}),ne=ae?z?xt:yt:z?kt:mt;W[te]>R[te]&&(ne=Yi(ne));var G=Yi(ne),de=[];if(i&&de.push(le[S]<=0),l&&de.push(le[ne]<=0,le[G]<=0),de.every(function(he){return he})){F=Z,j=!1;break}x.set(Z,de)}if(j)for(var ce=y?3:1,be=function(we){var fe=U.find(function(E){var I=x.get(E);if(I)return I.slice(0,we).every(function(K){return K})});if(fe)return F=fe,"break"},A=ce;A>0;A--){var ie=be(A);if(ie==="break")break}t.placement!==F&&(t.modifiersData[n]._skip=!0,t.placement=F,t.reset=!0)}}const $v={name:"flip",enabled:!0,phase:"main",fn:Wv,requiresIfExists:["offset"],data:{_skip:!1}};function $c(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Hc(e){return[mt,xt,kt,yt].some(function(t){return e[t]>=0})}function Hv(e){var t=e.state,r=e.name,n=t.rects.reference,a=t.rects.popper,i=t.modifiersData.preventOverflow,o=pi(t,{elementContext:"reference"}),l=pi(t,{altBoundary:!0}),s=$c(o,n),u=$c(l,a,i),c=Hc(s),h=Hc(u);t.modifiersData[r]={referenceClippingOffsets:s,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:h},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":h})}const Vv={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Hv};function qv(e,t,r){var n=Yt(e),a=[yt,mt].indexOf(n)>=0?-1:1,i=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,o=i[0],l=i[1];return o=o||0,l=(l||0)*a,[yt,xt].indexOf(n)>=0?{x:l,y:o}:{x:o,y:l}}function Kv(e){var t=e.state,r=e.options,n=e.name,a=r.offset,i=a===void 0?[0,0]:a,o=bp.reduce(function(c,h){return c[h]=qv(h,t.rects,i),c},{}),l=o[t.placement],s=l.x,u=l.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=o}const zv={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Kv};function Yv(e){var t=e.state,r=e.name;t.modifiersData[r]=Ip({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const Gv={name:"popperOffsets",enabled:!0,phase:"read",fn:Yv,data:{}};function Qv(e){return e==="x"?"y":"x"}function Jv(e){var t=e.state,r=e.options,n=e.name,a=r.mainAxis,i=a===void 0?!0:a,o=r.altAxis,l=o===void 0?!1:o,s=r.boundary,u=r.rootBoundary,c=r.altBoundary,h=r.padding,p=r.tether,m=p===void 0?!0:p,y=r.tetherOffset,b=y===void 0?0:y,O=pi(t,{boundary:s,rootBoundary:u,padding:h,altBoundary:c}),L=Yt(t.placement),P=kn(t.placement),w=!P,U=Wl(L),W=Qv(U),R=t.modifiersData.popperOffsets,x=t.rects.reference,j=t.rects.popper,F=typeof b=="function"?b(Object.assign({},t.rects,{placement:t.placement})):b,X=typeof F=="number"?{mainAxis:F,altAxis:F}:Object.assign({mainAxis:0,altAxis:0},F),Z=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,S={x:0,y:0};if(R){if(i){var z,ae=U==="y"?mt:yt,te=U==="y"?kt:xt,le=U==="y"?"height":"width",ne=R[U],G=ne+O[ae],de=ne-O[te],ce=m?-j[le]/2:0,be=P===On?x[le]:j[le],A=P===On?-j[le]:-x[le],ie=t.elements.arrow,he=m&&ie?Fl(ie):{width:0,height:0},we=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:_p(),fe=we[ae],E=we[te],I=ii(0,x[le],he[le]),K=w?x[le]/2-ce-I-fe-X.mainAxis:be-I-fe-X.mainAxis,re=w?-x[le]/2+ce+I+E+X.mainAxis:A+I+E+X.mainAxis,oe=t.elements.arrow&&bi(t.elements.arrow),se=oe?U==="y"?oe.clientTop||0:oe.clientLeft||0:0,T=(z=Z==null?void 0:Z[U])!=null?z:0,k=ne+K-T-se,v=ne+re-T,N=ii(m?lo(G,k):G,ne,m?un(de,v):de);R[U]=N,S[U]=N-ne}if(l){var B,Y=U==="x"?mt:yt,J=U==="x"?kt:xt,M=R[W],H=W==="y"?"height":"width",C=M+O[Y],$=M-O[J],q=[mt,yt].indexOf(L)!==-1,ee=(B=Z==null?void 0:Z[W])!=null?B:0,d=q?C:M-x[H]-j[H]-ee+X.altAxis,f=q?M+x[H]+j[H]-ee-X.altAxis:$,g=m&&q?_v(d,M,f):ii(m?d:C,M,m?f:$);R[W]=g,S[W]=g-M}t.modifiersData[n]=S}}const Xv={name:"preventOverflow",enabled:!0,phase:"main",fn:Jv,requiresIfExists:["offset"]};function Zv(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function ew(e){return e===Bt(e)||!Pt(e)?$l(e):Zv(e)}function tw(e){var t=e.getBoundingClientRect(),r=Rn(t.width)/e.offsetWidth||1,n=Rn(t.height)/e.offsetHeight||1;return r!==1||n!==1}function rw(e,t,r){r===void 0&&(r=!1);var n=Pt(t),a=Pt(t)&&tw(t),i=Ur(t),o=Pn(e,a,r),l={scrollLeft:0,scrollTop:0},s={x:0,y:0};return(n||!n&&!r)&&((Gt(t)!=="body"||Vl(i))&&(l=ew(t)),Pt(t)?(s=Pn(t,!0),s.x+=t.clientLeft,s.y+=t.clientTop):i&&(s.x=Hl(i))),{x:o.left+l.scrollLeft-s.x,y:o.top+l.scrollTop-s.y,width:o.width,height:o.height}}function nw(e){var t=new Map,r=new Set,n=[];e.forEach(function(i){t.set(i.name,i)});function a(i){r.add(i.name);var o=[].concat(i.requires||[],i.requiresIfExists||[]);o.forEach(function(l){if(!r.has(l)){var s=t.get(l);s&&a(s)}}),n.push(i)}return e.forEach(function(i){r.has(i.name)||a(i)}),n}function iw(e){var t=nw(e);return gv.reduce(function(r,n){return r.concat(t.filter(function(a){return a.phase===n}))},[])}function ow(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function sw(e){var t=e.reduce(function(r,n){var a=r[n.name];return r[n.name]=a?Object.assign({},a,n,{options:Object.assign({},a.options,n.options),data:Object.assign({},a.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}var Vc={placement:"bottom",modifiers:[],strategy:"absolute"};function qc(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function aw(e){e===void 0&&(e={});var t=e,r=t.defaultModifiers,n=r===void 0?[]:r,a=t.defaultOptions,i=a===void 0?Vc:a;return function(l,s,u){u===void 0&&(u=i);var c={placement:"bottom",orderedModifiers:[],options:Object.assign({},Vc,i),modifiersData:{},elements:{reference:l,popper:s},attributes:{},styles:{}},h=[],p=!1,m={state:c,setOptions:function(L){var P=typeof L=="function"?L(c.options):L;b(),c.options=Object.assign({},i,c.options,P),c.scrollParents={reference:fn(l)?oi(l):l.contextElement?oi(l.contextElement):[],popper:oi(s)};var w=iw(sw([].concat(n,c.options.modifiers)));return c.orderedModifiers=w.filter(function(U){return U.enabled}),y(),m.update()},forceUpdate:function(){if(!p){var L=c.elements,P=L.reference,w=L.popper;if(qc(P,w)){c.rects={reference:rw(P,bi(w),c.options.strategy==="fixed"),popper:Fl(w)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(X){return c.modifiersData[X.name]=Object.assign({},X.data)});for(var U=0;U<c.orderedModifiers.length;U++){if(c.reset===!0){c.reset=!1,U=-1;continue}var W=c.orderedModifiers[U],R=W.fn,x=W.options,j=x===void 0?{}:x,F=W.name;typeof R=="function"&&(c=R({state:c,options:j,name:F,instance:m})||c)}}}},update:ow(function(){return new Promise(function(O){m.forceUpdate(),O(c)})}),destroy:function(){b(),p=!0}};if(!qc(l,s))return m;m.setOptions(u).then(function(O){!p&&u.onFirstUpdate&&u.onFirstUpdate(O)});function y(){c.orderedModifiers.forEach(function(O){var L=O.name,P=O.options,w=P===void 0?{}:P,U=O.effect;if(typeof U=="function"){var W=U({state:c,name:L,instance:m,options:w}),R=function(){};h.push(W||R)}})}function b(){h.forEach(function(O){return O()}),h=[]}return m}}var lw=[kv,Gv,Rv,bv,zv,$v,Xv,Iv,Vv],Bw=aw({defaultModifiers:lw});export{yw as A,pl as B,zt as C,cw as D,bm as E,St as F,bw as G,Rw as H,ww as I,xw as J,fw as K,hw as L,kw as M,Pw as N,Cw as O,Ow as P,Aw as Q,pb as R,lh as T,Bw as a,dw as b,Ct as c,kf as d,_w as e,vw as f,Gi as g,Sl as h,Ew as i,ih as j,vm as k,pw as l,wm as m,rh as n,eh as o,Eg as p,gw as q,gi as r,gt as s,Tw as t,Iw as u,Sw as v,Jn as w,Wp as x,mw as y,go as z};
diff --git a/packages/modules/display_themes/cards/web/assets/vendor-fortawesome-CVmDIOjI.js b/packages/modules/display_themes/cards/web/assets/vendor-fortawesome-C68yAli-.js
similarity index 99%
rename from packages/modules/display_themes/cards/web/assets/vendor-fortawesome-CVmDIOjI.js
rename to packages/modules/display_themes/cards/web/assets/vendor-fortawesome-C68yAli-.js
index 2f418194c0..05405105a3 100644
--- a/packages/modules/display_themes/cards/web/assets/vendor-fortawesome-CVmDIOjI.js
+++ b/packages/modules/display_themes/cards/web/assets/vendor-fortawesome-C68yAli-.js
@@ -1,4 +1,4 @@
-import{g as qt,d as rn,c as $,w as sn,h as on}from"./vendor-Cv1UtYRW.js";const Qt=()=>{};let Dt={},we={},Le=null,Oe={mark:Qt,measure:Qt};try{typeof window<"u"&&(Dt=window),typeof document<"u"&&(we=document),typeof MutationObserver<"u"&&(Le=MutationObserver),typeof performance<"u"&&(Oe=performance)}catch{}const{userAgent:Zt=""}=Dt.navigator||{},j=Dt,h=we,Jt=Le,ct=Oe;j.document;const _=!!h.documentElement&&!!h.head&&typeof h.addEventListener=="function"&&typeof h.createElement=="function",Ce=~Zt.indexOf("MSIE")||~Zt.indexOf("Trident/");var b="classic",ze="duotone",w="sharp",L="sharp-duotone",cn=[b,ze,w,L],ln={classic:{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},sharp:{900:"fass",400:"fasr",300:"fasl",100:"fast"},"sharp-duotone":{900:"fasds"}},te={kit:{fak:"kit","fa-kit":"kit"},"kit-duotone":{fakd:"kit-duotone","fa-kit-duotone":"kit-duotone"}},fn=["kit"],un=/fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\-\ ]/,mn=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i,dn={"Font Awesome 5 Free":{900:"fas",400:"far"},"Font Awesome 5 Pro":{900:"fas",400:"far",normal:"far",300:"fal"},"Font Awesome 5 Brands":{400:"fab",normal:"fab"},"Font Awesome 5 Duotone":{900:"fad"}},pn={"Font Awesome 6 Free":{900:"fas",400:"far"},"Font Awesome 6 Pro":{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},"Font Awesome 6 Brands":{400:"fab",normal:"fab"},"Font Awesome 6 Duotone":{900:"fad"},"Font Awesome 6 Sharp":{900:"fass",400:"fasr",normal:"fasr",300:"fasl",100:"fast"},"Font Awesome 6 Sharp Duotone":{900:"fasds"}},gn={classic:{"fa-brands":"fab","fa-duotone":"fad","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},sharp:{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"},"sharp-duotone":{"fa-solid":"fasds"}},hn={classic:["fas","far","fal","fat"],sharp:["fass","fasr","fasl","fast"],"sharp-duotone":["fasds"]},bn={classic:{fab:"fa-brands",fad:"fa-duotone",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},sharp:{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"},"sharp-duotone":{fasds:"fa-solid"}},yn={classic:{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab"},sharp:{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"},"sharp-duotone":{solid:"fasds"}},Se={classic:{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands"},sharp:{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"},"sharp-duotone":{fa:"solid",fasds:"solid","fa-solid":"solid"}},vn=["solid","regular","light","thin","duotone","brands"],Ne=[1,2,3,4,5,6,7,8,9,10],xn=Ne.concat([11,12,13,14,15,16,17,18,19,20]),J={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},An=[...Object.keys(hn),...vn,"2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",J.GROUP,J.SWAP_OPACITY,J.PRIMARY,J.SECONDARY].concat(Ne.map(t=>"".concat(t,"x"))).concat(xn.map(t=>"w-".concat(t))),kn={"Font Awesome Kit":{400:"fak",normal:"fak"},"Font Awesome Kit Duotone":{400:"fakd",normal:"fakd"}},wn={kit:{"fa-kit":"fak"},"kit-duotone":{"fa-kit-duotone":"fakd"}},Ln={kit:{fak:"fa-kit"},"kit-duotone":{fakd:"fa-kit-duotone"}},ee={kit:{kit:"fak"},"kit-duotone":{"kit-duotone":"fakd"}};const I="___FONT_AWESOME___",Lt=16,Me="fa",Pe="svg-inline--fa",X="data-fa-i2svg",Ot="data-fa-pseudo-element",On="data-fa-pseudo-element-pending",Yt="data-prefix",Bt="data-icon",ne="fontawesome-i2svg",Cn="async",zn=["HTML","HEAD","STYLE","SCRIPT"],Ee=(()=>{try{return!0}catch{return!1}})(),Ie=[b,w,L];function it(t){return new Proxy(t,{get(e,n){return n in e?e[n]:e[b]}})}const Te={...Se};Te[b]={...Se[b],...te.kit,...te["kit-duotone"]};const W=it(Te),Ct={...yn};Ct[b]={...Ct[b],...ee.kit,...ee["kit-duotone"]};const at=it(Ct),zt={...bn};zt[b]={...zt[b],...Ln.kit};const H=it(zt),St={...gn};St[b]={...St[b],...wn.kit};const Sn=it(St),Nn=un,_e="fa-layers-text",Mn=mn,Pn={...ln};it(Pn);const En=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],yt=J,q=new Set;Object.keys(at[b]).map(q.add.bind(q));Object.keys(at[w]).map(q.add.bind(q));Object.keys(at[L]).map(q.add.bind(q));const In=[...fn,...An],et=j.FontAwesomeConfig||{};function Tn(t){var e=h.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function _n(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}h&&typeof h.querySelector=="function"&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(e=>{let[n,a]=e;const r=_n(Tn(n));r!=null&&(et[a]=r)});const Fe={styleDefault:"solid",familyDefault:"classic",cssPrefix:Me,replacementClass:Pe,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};et.familyPrefix&&(et.cssPrefix=et.familyPrefix);const Q={...Fe,...et};Q.autoReplaceSvg||(Q.observeMutations=!1);const f={};Object.keys(Fe).forEach(t=>{Object.defineProperty(f,t,{enumerable:!0,set:function(e){Q[t]=e,nt.forEach(n=>n(f))},get:function(){return Q[t]}})});Object.defineProperty(f,"familyPrefix",{enumerable:!0,set:function(t){Q.cssPrefix=t,nt.forEach(e=>e(f))},get:function(){return Q.cssPrefix}});j.FontAwesomeConfig=f;const nt=[];function Fn(t){return nt.push(t),()=>{nt.splice(nt.indexOf(t),1)}}const F=Lt,N={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function Rn(t){if(!t||!_)return;const e=h.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;const n=h.head.childNodes;let a=null;for(let r=n.length-1;r>-1;r--){const i=n[r],s=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(s)>-1&&(a=i)}return h.head.insertBefore(e,a),t}const jn="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function rt(){let t=12,e="";for(;t-- >0;)e+=jn[Math.random()*62|0];return e}function Z(t){const e=[];for(let n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function Ut(t){return t.classList?Z(t.classList):(t.getAttribute("class")||"").split(" ").filter(e=>e)}function Re(t){return"".concat(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Dn(t){return Object.keys(t||{}).reduce((e,n)=>e+"".concat(n,'="').concat(Re(t[n]),'" '),"").trim()}function pt(t){return Object.keys(t||{}).reduce((e,n)=>e+"".concat(n,": ").concat(t[n].trim(),";"),"")}function Wt(t){return t.size!==N.size||t.x!==N.x||t.y!==N.y||t.rotate!==N.rotate||t.flipX||t.flipY}function Yn(t){let{transform:e,containerWidth:n,iconWidth:a}=t;const r={transform:"translate(".concat(n/2," 256)")},i="translate(".concat(e.x*32,", ").concat(e.y*32,") "),s="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),o="rotate(".concat(e.rotate," 0 0)"),c={transform:"".concat(i," ").concat(s," ").concat(o)},l={transform:"translate(".concat(a/2*-1," -256)")};return{outer:r,inner:c,path:l}}function Bn(t){let{transform:e,width:n=Lt,height:a=Lt,startCentered:r=!1}=t,i="";return r&&Ce?i+="translate(".concat(e.x/F-n/2,"em, ").concat(e.y/F-a/2,"em) "):r?i+="translate(calc(-50% + ".concat(e.x/F,"em), calc(-50% + ").concat(e.y/F,"em)) "):i+="translate(".concat(e.x/F,"em, ").concat(e.y/F,"em) "),i+="scale(".concat(e.size/F*(e.flipX?-1:1),", ").concat(e.size/F*(e.flipY?-1:1),") "),i+="rotate(".concat(e.rotate,"deg) "),i}var Un=`:root, :host {
+import{g as qt,d as rn,c as $,w as sn,h as on}from"./vendor-CZ1MGz7j.js";const Qt=()=>{};let Dt={},we={},Le=null,Oe={mark:Qt,measure:Qt};try{typeof window<"u"&&(Dt=window),typeof document<"u"&&(we=document),typeof MutationObserver<"u"&&(Le=MutationObserver),typeof performance<"u"&&(Oe=performance)}catch{}const{userAgent:Zt=""}=Dt.navigator||{},j=Dt,h=we,Jt=Le,ct=Oe;j.document;const _=!!h.documentElement&&!!h.head&&typeof h.addEventListener=="function"&&typeof h.createElement=="function",Ce=~Zt.indexOf("MSIE")||~Zt.indexOf("Trident/");var b="classic",ze="duotone",w="sharp",L="sharp-duotone",cn=[b,ze,w,L],ln={classic:{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},sharp:{900:"fass",400:"fasr",300:"fasl",100:"fast"},"sharp-duotone":{900:"fasds"}},te={kit:{fak:"kit","fa-kit":"kit"},"kit-duotone":{fakd:"kit-duotone","fa-kit-duotone":"kit-duotone"}},fn=["kit"],un=/fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\-\ ]/,mn=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i,dn={"Font Awesome 5 Free":{900:"fas",400:"far"},"Font Awesome 5 Pro":{900:"fas",400:"far",normal:"far",300:"fal"},"Font Awesome 5 Brands":{400:"fab",normal:"fab"},"Font Awesome 5 Duotone":{900:"fad"}},pn={"Font Awesome 6 Free":{900:"fas",400:"far"},"Font Awesome 6 Pro":{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},"Font Awesome 6 Brands":{400:"fab",normal:"fab"},"Font Awesome 6 Duotone":{900:"fad"},"Font Awesome 6 Sharp":{900:"fass",400:"fasr",normal:"fasr",300:"fasl",100:"fast"},"Font Awesome 6 Sharp Duotone":{900:"fasds"}},gn={classic:{"fa-brands":"fab","fa-duotone":"fad","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},sharp:{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"},"sharp-duotone":{"fa-solid":"fasds"}},hn={classic:["fas","far","fal","fat"],sharp:["fass","fasr","fasl","fast"],"sharp-duotone":["fasds"]},bn={classic:{fab:"fa-brands",fad:"fa-duotone",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},sharp:{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"},"sharp-duotone":{fasds:"fa-solid"}},yn={classic:{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab"},sharp:{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"},"sharp-duotone":{solid:"fasds"}},Se={classic:{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands"},sharp:{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"},"sharp-duotone":{fa:"solid",fasds:"solid","fa-solid":"solid"}},vn=["solid","regular","light","thin","duotone","brands"],Ne=[1,2,3,4,5,6,7,8,9,10],xn=Ne.concat([11,12,13,14,15,16,17,18,19,20]),J={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},An=[...Object.keys(hn),...vn,"2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",J.GROUP,J.SWAP_OPACITY,J.PRIMARY,J.SECONDARY].concat(Ne.map(t=>"".concat(t,"x"))).concat(xn.map(t=>"w-".concat(t))),kn={"Font Awesome Kit":{400:"fak",normal:"fak"},"Font Awesome Kit Duotone":{400:"fakd",normal:"fakd"}},wn={kit:{"fa-kit":"fak"},"kit-duotone":{"fa-kit-duotone":"fakd"}},Ln={kit:{fak:"fa-kit"},"kit-duotone":{fakd:"fa-kit-duotone"}},ee={kit:{kit:"fak"},"kit-duotone":{"kit-duotone":"fakd"}};const I="___FONT_AWESOME___",Lt=16,Me="fa",Pe="svg-inline--fa",X="data-fa-i2svg",Ot="data-fa-pseudo-element",On="data-fa-pseudo-element-pending",Yt="data-prefix",Bt="data-icon",ne="fontawesome-i2svg",Cn="async",zn=["HTML","HEAD","STYLE","SCRIPT"],Ee=(()=>{try{return!0}catch{return!1}})(),Ie=[b,w,L];function it(t){return new Proxy(t,{get(e,n){return n in e?e[n]:e[b]}})}const Te={...Se};Te[b]={...Se[b],...te.kit,...te["kit-duotone"]};const W=it(Te),Ct={...yn};Ct[b]={...Ct[b],...ee.kit,...ee["kit-duotone"]};const at=it(Ct),zt={...bn};zt[b]={...zt[b],...Ln.kit};const H=it(zt),St={...gn};St[b]={...St[b],...wn.kit};const Sn=it(St),Nn=un,_e="fa-layers-text",Mn=mn,Pn={...ln};it(Pn);const En=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],yt=J,q=new Set;Object.keys(at[b]).map(q.add.bind(q));Object.keys(at[w]).map(q.add.bind(q));Object.keys(at[L]).map(q.add.bind(q));const In=[...fn,...An],et=j.FontAwesomeConfig||{};function Tn(t){var e=h.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function _n(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}h&&typeof h.querySelector=="function"&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(e=>{let[n,a]=e;const r=_n(Tn(n));r!=null&&(et[a]=r)});const Fe={styleDefault:"solid",familyDefault:"classic",cssPrefix:Me,replacementClass:Pe,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};et.familyPrefix&&(et.cssPrefix=et.familyPrefix);const Q={...Fe,...et};Q.autoReplaceSvg||(Q.observeMutations=!1);const f={};Object.keys(Fe).forEach(t=>{Object.defineProperty(f,t,{enumerable:!0,set:function(e){Q[t]=e,nt.forEach(n=>n(f))},get:function(){return Q[t]}})});Object.defineProperty(f,"familyPrefix",{enumerable:!0,set:function(t){Q.cssPrefix=t,nt.forEach(e=>e(f))},get:function(){return Q.cssPrefix}});j.FontAwesomeConfig=f;const nt=[];function Fn(t){return nt.push(t),()=>{nt.splice(nt.indexOf(t),1)}}const F=Lt,N={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function Rn(t){if(!t||!_)return;const e=h.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;const n=h.head.childNodes;let a=null;for(let r=n.length-1;r>-1;r--){const i=n[r],s=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(s)>-1&&(a=i)}return h.head.insertBefore(e,a),t}const jn="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function rt(){let t=12,e="";for(;t-- >0;)e+=jn[Math.random()*62|0];return e}function Z(t){const e=[];for(let n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function Ut(t){return t.classList?Z(t.classList):(t.getAttribute("class")||"").split(" ").filter(e=>e)}function Re(t){return"".concat(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Dn(t){return Object.keys(t||{}).reduce((e,n)=>e+"".concat(n,'="').concat(Re(t[n]),'" '),"").trim()}function pt(t){return Object.keys(t||{}).reduce((e,n)=>e+"".concat(n,": ").concat(t[n].trim(),";"),"")}function Wt(t){return t.size!==N.size||t.x!==N.x||t.y!==N.y||t.rotate!==N.rotate||t.flipX||t.flipY}function Yn(t){let{transform:e,containerWidth:n,iconWidth:a}=t;const r={transform:"translate(".concat(n/2," 256)")},i="translate(".concat(e.x*32,", ").concat(e.y*32,") "),s="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),o="rotate(".concat(e.rotate," 0 0)"),c={transform:"".concat(i," ").concat(s," ").concat(o)},l={transform:"translate(".concat(a/2*-1," -256)")};return{outer:r,inner:c,path:l}}function Bn(t){let{transform:e,width:n=Lt,height:a=Lt,startCentered:r=!1}=t,i="";return r&&Ce?i+="translate(".concat(e.x/F-n/2,"em, ").concat(e.y/F-a/2,"em) "):r?i+="translate(calc(-50% + ".concat(e.x/F,"em), calc(-50% + ").concat(e.y/F,"em)) "):i+="translate(".concat(e.x/F,"em, ").concat(e.y/F,"em) "),i+="scale(".concat(e.size/F*(e.flipX?-1:1),", ").concat(e.size/F*(e.flipY?-1:1),") "),i+="rotate(".concat(e.rotate,"deg) "),i}var Un=`:root, :host {
   --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free";
   --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free";
   --fa-font-light: normal 300 1em/1 "Font Awesome 6 Pro";
diff --git a/packages/modules/display_themes/cards/web/assets/vendor-inkline-7C7Ddj37.js b/packages/modules/display_themes/cards/web/assets/vendor-inkline-7C7Ddj37.js
deleted file mode 100644
index 3d1442b3fb..0000000000
--- a/packages/modules/display_themes/cards/web/assets/vendor-inkline-7C7Ddj37.js
+++ /dev/null
@@ -1 +0,0 @@
-import{h as tt,w as kt,r as wt,d as p,a as It,b as k,v as C,o,e as l,f as d,i as m,j as f,m as h,k as T,l as A,n as V,p as b,q as X,s as I,t as M,u as Y,T as L,x as F,y as Z,z,F as G,A as x,c as se,B as Ct,C as St,D as Bt,E as zt,G as At}from"./vendor-Cv1UtYRW.js";const c=(e,t)=>{const s=e.__vccOpts||e;for(const[i,a]of t)s[i]=a;return s};function g(e){let t=e.color;return t||(e.$inkline.options.colorMode==="system"?t=typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t=e.$inkline.options.colorMode),{[`-${t}`]:!0}}function st(e,t){if(!e||!t)return!1;if(t.indexOf(" ")!==-1)throw new Error("Class name should not contain spaces.");return e.classList?e.classList.contains(t):(" "+e.className+" ").indexOf(" "+t+" ")>-1}function Me(e,t){if(!e)return;let s=e.className;const i=(t||"").split(" ");for(let a=0,r=i.length;a<r;a++){const n=i[a];n&&(e.classList?e.classList.add(n):st(e,n)||(s+=" "+n))}e.classList||(e.className=s)}function We(e,t="camel"){const s=t==="camel"?/([A-Z])/g:/_([a-zA-Z])/g;return e.replace(s,(i,a)=>"-"+a.toLowerCase())}function it(e,t){return["string","number"].indexOf(typeof t)>-1&&t!==""?`${We(e)}-${t}`:We(e)}function Pe(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Q(e){if(Array.isArray(e)){const t=e.slice().map(Q),s=Object.keys(t);return Object.keys(e).filter(i=>!s.includes(i)).forEach(i=>{t[i]=e[i]}),t}else if(typeof e=="object")return Object.keys(e).reduce((t,s)=>(t[s]=Q(e[s]),t),{});return e}function Vt(e,t){let s;return function(...i){const a=this;clearTimeout(s),s=setTimeout(()=>e.apply(a,i),t)}}function Fe(e){if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return e.type!=="hidden"&&e.type!=="file";case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}}function Nt(e){if(!Fe(e))return!1;try{e.focus()}catch{}return typeof window<"u"&&document.activeElement===e}function at(e){for(let t=0;t<e.childNodes.length;t++){const s=e.childNodes[t];if(Nt(s)||at(s))return!0}return!1}function q(e,t){if(!e||!t||typeof window>"u")return;if(e.currentStyle)return e.currentStyle[t];const s=window.getComputedStyle(e,null);return s.getPropertyValue?s.getPropertyValue(t):s[t]}const nt=e=>e instanceof Function,_={xs:[0,575],sm:[576,767],md:[768,991],lg:[992,1199],xl:[1200,1399],xxl:[1400,1/0]},je=["","xs","sm","md","lg","xl","xxl"],Ot={tab:["Tab",9],enter:["Enter",13],esc:["Escape",27],space:[" ","Space",32],left:["ArrowLeft","Left",37],up:["ArrowUp","Up",38],right:["ArrowRight","Right",39],down:["ArrowDown","Down",40]},qe={pristine:!0,dirty:!1,untouched:!0,touched:!1,valid:!0,invalid:!1,errors:[]},Lt={value:"",validators:[]},ot=["value","validators","pristine","dirty","untouched","touched","valid","invalid","errors"],v=(e,t)=>{const s=t.key||t.keyIdentifier||t.keyCode;return Ot[e].indexOf(s)!==-1};function Dt(e){return!!e&&!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function Tt(e,t){if(!t)return[{text:e}];const s=[],i=e.toLowerCase(),a=t.toLowerCase();let r=0,n=0;for(;n<e.length;){const $=i.indexOf(a,n),N=$>=0;n=N?$:e.length,n&&(s.push({text:e.substring(r,n)}),r=n),N&&(n+=t.length,s.push({text:e.substring(r,n),marked:!0}),r=n)}return s}function Pt(e){const t={};return(...s)=>{const i=JSON.stringify(s);return i in t||(t[i]=e(...s)),t[i]}}function Et(e,t,s){e&&t&&e.removeEventListener(t,s,!1)}function Rt(e,t,s){e&&t&&e.detachEvent("on"+t,s)}const Mt=()=>typeof window>"u"?()=>{}:window.document.removeEventListener?Et:Rt,D=Mt();function Ft(e,t,s){e&&t&&s&&e.addEventListener(t,s,!1)}function jt(e,t,s){e&&t&&s&&e.attachEvent("on"+t,s)}const Gt=()=>typeof window>"u"?()=>{}:window.document.addEventListener?Ft:jt,O=Gt(),rt=e=>e.map(t=>t.type==="element"?tt(t.name,t.attributes,rt(t.children)):t.value);function Zt(e){return(e||"").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,"")}function lt(e,t){if(!e||!t)return;const s=t.split(" ");let i=" "+e.className+" ";for(let a=0,r=s.length;a<r;a++){const n=s[a];n&&(e.classList?e.classList.remove(n):st(e,n)&&(i=i.replace(" "+n+" "," ")))}e.classList||(e.className=Zt(i))}function j(e,t){return t.split(".").reduce((s,i)=>s&&s[i],e)}function Kt(e,t,s,i){return j(e,t)[s]=i,e}function ie(e,t,s){return t&&t.split(".").reduce((i,a)=>(Object.keys(s).forEach(r=>{i[a][r]=s[r]}),i&&i[a]),e),Object.keys(s).forEach(i=>{e[i]=s[i]}),e}function Ht(e,t="dash"){const s=t==="dash"?/-([a-z0-9])/g:/_([a-z0-9])/g;return e.replace(s,(i,a)=>a.toUpperCase())}function B(e){return`${e?`${e}-`:""}${Math.random().toString(36).substr(2,9)}`}const P={"en-US":/^[A-Z]+$/i,"bg-BG":/^[А-Я]+$/i,"cs-CZ":/^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,"da-DK":/^[A-ZÆØÅ]+$/i,"de-DE":/^[A-ZÄÖÜß]+$/i,"el-GR":/^[Α-ω]+$/i,"es-ES":/^[A-ZÁÉÍÑÓÚÜ]+$/i,"fr-FR":/^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,"it-IT":/^[A-ZÀÉÈÌÎÓÒÙ]+$/i,"nb-NO":/^[A-ZÆØÅ]+$/i,"nl-NL":/^[A-ZÁÉËÏÓÖÜÚ]+$/i,"nn-NO":/^[A-ZÆØÅ]+$/i,"hu-HU":/^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,"pl-PL":/^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,"pt-PT":/^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]+$/i,"ru-RU":/^[А-ЯЁ]+$/i,"sl-SI":/^[A-ZČĆĐŠŽ]+$/i,"sk-SK":/^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,"sr-RS@latin":/^[A-ZČĆŽŠĐ]+$/i,"sr-RS":/^[А-ЯЂЈЉЊЋЏ]+$/i,"sv-SE":/^[A-ZÅÄÖ]+$/i,"tr-TR":/^[A-ZÇĞİıÖŞÜ]+$/i,"uk-UA":/^[А-ЩЬЮЯЄIЇҐі]+$/i,"ku-IQ":/^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,ar:/^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/},E={"en-US":/^[0-9A-Z]+$/i,"bg-BG":/^[0-9А-Я]+$/i,"cs-CZ":/^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,"da-DK":/^[0-9A-ZÆØÅ]+$/i,"de-DE":/^[0-9A-ZÄÖÜß]+$/i,"el-GR":/^[0-9Α-ω]+$/i,"es-ES":/^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,"fr-FR":/^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,"it-IT":/^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,"hu-HU":/^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,"nb-NO":/^[0-9A-ZÆØÅ]+$/i,"nl-NL":/^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,"nn-NO":/^[0-9A-ZÆØÅ]+$/i,"pl-PL":/^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,"pt-PT":/^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]+$/i,"ru-RU":/^[0-9А-ЯЁ]+$/i,"sl-SI":/^[0-9A-ZČĆĐŠŽ]+$/i,"sk-SK":/^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,"sr-RS@latin":/^[0-9A-ZČĆŽŠĐ]+$/i,"sr-RS":/^[0-9А-ЯЂЈЉЊЋЏ]+$/i,"sv-SE":/^[0-9A-ZÅÄÖ]+$/i,"tr-TR":/^[0-9A-ZÇĞİıÖŞÜ]+$/i,"uk-UA":/^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,"ku-IQ":/^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/},Wt=["AE","BH","DZ","EG","IQ","JO","KW","LB","LY","MA","QM","QA","SA","SD","SY","TN","YE"],qt=["AU","GB","HK","IN","NZ","ZA","ZM"];qt.forEach(e=>{P[`en-${e}`]=P["en-US"],E[`en-${e}`]=E["en-US"]});Wt.forEach(e=>{P[`ar-${e}`]=P.ar,E[`ar-${e}`]=E.ar});P["pt-BR"]=P["pt-PT"];E["pt-BR"]=E["pt-PT"];P["pl-Pl"]=P["pl-PL"];E["pl-Pl"]=E["pl-PL"];function Ut(e,t={}){const s=t.locale||"en-US",i=a=>{let r=String(a);return t.allowDashes&&(r=r.replace(/-/g,"")),t.allowSpaces&&(r=r.replace(/ /g,"")),r};return e.constructor===Array?e.every(a=>P[s].test(i(a))):P[s].test(i(e))}function Qt(e,t={}){const s=t.locale||"en-US",i=a=>{let r=String(a);return t.allowDashes&&(r=r.replace(/-/g,"")),t.allowSpaces&&(r=r.replace(/ /g,"")),r};return e.constructor===Array?e.every(a=>E[s].test(i(a))):E[s].test(i(e))}function Jt(e,t={validator:()=>!0}){return e.constructor===Array?e.every(s=>t.validator(s)):t.validator(e)}function Yt(e,t={allowNegative:!1,allowDecimal:!1}){let s="\\d+";t.allowNegative&&(s="[-]?"+s),t.allowDecimal&&(s+="([\\.\\,]\\d+)?");const i=new RegExp(`^${s}$`);return e.constructor===Array?e.every(a=>i.test(a)):i.test(e)}const Ue=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;function Xt(e){return e.constructor===Array?e.every(t=>!t||Ue.test(String(t))):!e||Ue.test(String(e))}function _t(e,t={value:0}){if(e==null)return!1;const s=i=>Number(i);return Array.isArray(e)?e.every(i=>s(i)<=t.value):s(e)<=t.value}function xt(e,t={value:0}){return e==null?!1:e.constructor===Array?e.length<=t.value:typeof e=="object"?Object.keys(e).length<=t.value:String(e).length<=t.value}function es(e,t={value:0}){if(e==null)return!1;const s=i=>Number(i);return Array.isArray(e)?e.every(i=>s(i)>=t.value):s(e)>=t.value}function ts(e,t={value:0}){return e==null?!1:e.constructor===Array?e.length>=t.value:typeof e=="object"?Object.keys(e).length>=t.value:String(e).length>=t.value}function ss(e,t={invalidateFalse:!1}){return e==null?!1:e.constructor===Array?!!e.length:typeof e=="boolean"?t.invalidateFalse?e:!0:!!String(e).trim().length}function is(e,t={}){if(!t.target)return!1;const s=j(t.schema(),t.target);if(!s)throw new Error(`Could not find target with name '${t.target}' in 'sameAs' validator.`);return e===s.value}const as={alpha:Ut,alphanumeric:Qt,custom:Jt,number:Yt,email:Xt,max:_t,maxLength:xt,min:es,minLength:ts,required:ss,sameAs:is};function dt(e){const s=Object.keys(e).length===0||Array.isArray(e.validators)||e.hasOwnProperty("value")?{...qe,...Lt}:qe;return Object.entries(s).forEach(([i,a])=>{e.hasOwnProperty(i)||(e[i]=a)}),Object.keys(e).filter(i=>!ot.includes(i)).forEach(i=>{(typeof e[i]=="object"||Array.isArray(e[i]))&&(e[i]=dt(e[i]))}),e}const ns={validation:{alpha:e=>{let t;switch(!0){case(e.allowSpaces&&e.allowDashes):t="letters, spaces, and dashes";break;case e.allowSpaces:t="letters and spaces";break;case e.allowDashes:t="letters and dashes";break;default:t="letters"}return`Please enter ${t} only.`},alphanumeric:e=>{let t;switch(!0){case(e.allowSpaces&&e.allowDashes):t="letters, numbers, spaces, and dashes";break;case e.allowSpaces:t="letters, numbers, and spaces";break;case e.allowDashes:t="letters, numbers, and dashes";break;default:t="letters and numbers"}return`Please enter ${t} only.`},number:e=>{let t;switch(!0){case(e.allowNegative&&e.allowDecimal):t="positive or negative decimal numbers";break;case e.allowNegative:t="positive or negative numbers";break;case e.allowDecimal:t="decimal numbers";break;default:t="numbers"}return`Please enter ${t} only.`},email:()=>"Please enter a valid email address.",max:()=>"Please enter a maximum value of {value}.",maxLength:()=>"Please enter up to {value} characters.",min:()=>"Please enter a minimum value of {value}.",minLength:()=>"Please enter at least {value} characters.",required:()=>"Please enter a value for this field.",sameAs:()=>"Please make sure that the two values match.",custom:()=>"Please enter a correct value for this field."}};function os(e,t={}){const s=j(Ee.messages[Ee.locale],e),i=nt(s)?s(t):s||e;return Object.keys(t).reduce((a,r)=>a.replace(new RegExp(`{${r}}`,"g"),`${t[r]}`),i)}const Ee={locale:"en",messages:{en:ns}};function rs(e){Ee.locale=e}function ls(e,t=""){const s=[];return e.valid=(e.validators||[]).reduce((i,a)=>{const r=typeof a=="string"?{name:a}:a,n=as[r.name](e.value,r);if(!n){const{name:$,message:N,...W}=r,w={name:t.split(".").pop(),value:e.value,...W},vt=(N instanceof Function?N():N)||os(`validation.${$}`,w);s.push({name:$,message:vt,path:t})}return i&&n},!0),e.invalid=!e.valid,e.errors=s,e}function ut(e,t=""){return e.valid=Object.keys(e).filter(s=>!ot.includes(s)).reduce((s,i)=>(Object.keys(e[i]).length===0||e[i].validators||e[i].value?e[i]=ls(e[i],`${t}`?`${t}.${i}`:i):e[i]=ut(e[i],`${t}`?`${t}.${i}`:i),s&&e[i].valid),!0),e.invalid=!e.valid,e}function ae(e){return ut(e,"")}const ds={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"28",viewBox:"0 0 16 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"caret-down",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M16 11c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"},children:[]}]},us={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"check",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M23.625 3.5l-13.125 13.125-6.125-6.125-4.375 4.375 10.5 10.5 17.5-17.5z"},children:[]}]},ps={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"chevron-down",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M26.297 12.625l-11.594 11.578c-0.391 0.391-1.016 0.391-1.406 0l-11.594-11.578c-0.391-0.391-0.391-1.031 0-1.422l2.594-2.578c0.391-0.391 1.016-0.391 1.406 0l8.297 8.297 8.297-8.297c0.391-0.391 1.016-0.391 1.406 0l2.594 2.578c0.391 0.391 0.391 1.031 0 1.422z"},children:[]}]},cs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"28",viewBox:"0 0 24 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"circle",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z"},children:[]}]},hs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"danger",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M14 2.625c-3.038 0-5.895 1.183-8.043 3.332s-3.332 5.005-3.332 8.043c0 3.038 1.183 5.895 3.332 8.043s5.005 3.332 8.043 3.332c3.038 0 5.895-1.183 8.043-3.332s3.332-5.005 3.332-8.043c0-3.038-1.183-5.895-3.332-8.043s-5.005-3.332-8.043-3.332zM14 0v0c7.732 0 14 6.268 14 14s-6.268 14-14 14c-7.732 0-14-6.268-14-14s6.268-14 14-14zM12.25 19.25h3.5v3.5h-3.5zM12.25 5.25h3.5v10.5h-3.5z"},children:[]}]},fs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"info",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M12.25 8.313c0-0.722 0.591-1.313 1.313-1.313h0.875c0.722 0 1.313 0.591 1.313 1.313v0.875c0 0.722-0.591 1.313-1.313 1.313h-0.875c-0.722 0-1.313-0.591-1.313-1.313v-0.875z"},children:[]},{name:"path",type:"element",value:"",attributes:{d:"M17.5 21h-7v-1.75h1.75v-5.25h-1.75v-1.75h5.25v7h1.75z"},children:[]},{name:"path",type:"element",value:"",attributes:{d:"M14 0c-7.732 0-14 6.268-14 14s6.268 14 14 14 14-6.268 14-14-6.268-14-14-14zM14 25.375c-6.282 0-11.375-5.093-11.375-11.375s5.093-11.375 11.375-11.375 11.375 5.093 11.375 11.375-5.093 11.375-11.375 11.375z"},children:[]}]},ms={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"minus",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M0 11.375v5.25c0 0.483 0.392 0.875 0.875 0.875h26.25c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875h-26.25c-0.483 0-0.875 0.392-0.875 0.875z"},children:[]}]},$s={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"plus",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M27.125 10.5h-9.625v-9.625c0-0.483-0.392-0.875-0.875-0.875h-5.25c-0.483 0-0.875 0.392-0.875 0.875v9.625h-9.625c-0.483 0-0.875 0.392-0.875 0.875v5.25c0 0.483 0.392 0.875 0.875 0.875h9.625v9.625c0 0.483 0.392 0.875 0.875 0.875h5.25c0.483 0 0.875-0.392 0.875-0.875v-9.625h9.625c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875z"},children:[]}]},bs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"search",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M27.132 23.827l-6.632-5.641c-0.686-0.617-1.419-0.9-2.011-0.873 1.566-1.834 2.511-4.213 2.511-6.813 0-5.799-4.701-10.5-10.5-10.5s-10.5 4.701-10.5 10.5 4.701 10.5 10.5 10.5c2.6 0 4.98-0.946 6.813-2.511-0.027 0.592 0.256 1.326 0.873 2.011l5.641 6.632c0.966 1.073 2.544 1.164 3.506 0.201s0.872-2.54-0.201-3.506zM10.5 17.5c-3.866 0-7-3.134-7-7s3.134-7 7-7 7 3.134 7 7-3.134 7-7 7z"},children:[]}]},ys={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"28",viewBox:"0 0 16 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"sort-asc",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M16 11c0 0.547-0.453 1-1 1h-14c-0.547 0-1-0.453-1-1 0-0.266 0.109-0.516 0.297-0.703l7-7c0.187-0.187 0.438-0.297 0.703-0.297s0.516 0.109 0.703 0.297l7 7c0.187 0.187 0.297 0.438 0.297 0.703z"},children:[]}]},gs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"28",viewBox:"0 0 16 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"sort-desc",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M16 17c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"},children:[]}]},vs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"28",viewBox:"0 0 16 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"sort",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M16 17c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1zM16 11c0 0.547-0.453 1-1 1h-14c-0.547 0-1-0.453-1-1 0-0.266 0.109-0.516 0.297-0.703l7-7c0.187-0.187 0.438-0.297 0.703-0.297s0.516 0.109 0.703 0.297l7 7c0.187 0.187 0.297 0.438 0.297 0.703z"},children:[]}]},ks={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"times",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"},children:[]}]},ws={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"warning",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M14 2.537l11.733 23.385h-23.467l11.733-23.385zM14 0c-0.603 0-1.207 0.407-1.665 1.221l-11.951 23.819c-0.916 1.628-0.137 2.96 1.731 2.96h23.77c1.868 0 2.647-1.332 1.731-2.96h0l-11.951-23.819c-0.458-0.814-1.061-1.221-1.665-1.221v0z"},children:[]},{name:"path",type:"element",value:"",attributes:{d:"M15.75 22.75c0 0.966-0.784 1.75-1.75 1.75s-1.75-0.784-1.75-1.75c0-0.966 0.784-1.75 1.75-1.75s1.75 0.784 1.75 1.75z"},children:[]},{name:"path",type:"element",value:"",attributes:{d:"M14 19.25c-0.966 0-1.75-0.784-1.75-1.75v-5.25c0-0.966 0.784-1.75 1.75-1.75s1.75 0.784 1.75 1.75v5.25c0 0.966-0.784 1.75-1.75 1.75z"},children:[]}]},Is=Object.freeze(Object.defineProperty({__proto__:null,inkCaretDown:ds,inkCheck:us,inkChevronDown:ps,inkCircle:cs,inkDanger:hs,inkInfo:fs,inkMinus:ms,inkPlus:$s,inkSearch:bs,inkSort:vs,inkSortAsc:ys,inkSortDesc:gs,inkTimes:ks,inkWarning:ws},Symbol.toStringTag,{value:"Module"})),Qe="inkline-color-mode",ne=e=>{let t;e==="system"?t=matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t=e,lt(document.body,"-light -dark"),Me(document.body,`-${t}`)},Cs={components:{},icons:{},colorMode:"system",locale:"en",validateOn:["input","blur"],color:"",size:"",routerComponent:"router-link",componentOptions:{}};function Ss({icons:e,components:t,...s}){return{form(i){return dt(i)},setLocale(i){rs(i)},options:wt(s)}}const U={prototype:void 0,icons:void 0},sl={install(e,t={}){const s={...Cs,...t};for(const r in s.components)e.component(s.components[r].name,s.components[r]);if(typeof window<"u"){const r=localStorage.getItem(Qe);r&&(s.colorMode=r)}const i=Ss(s);U.prototype=i,e.config.globalProperties.$inkline=i,e.provide("inkline",i);const a={...Is,...s.icons};if(e.provide("inklineIcons",a),typeof window<"u"){kt(()=>i.options.colorMode,$=>{ne($),localStorage.setItem(Qe,$)});const r=()=>{i.options.colorMode==="system"&&ne(i.options.colorMode)},n=matchMedia("(prefers-color-scheme: dark)");n.addEventListener?n.addEventListener("change",r):n.addListener(r),Me(document.body,"inkline"),ne(s.colorMode)}}};function u(e,t,s=""){return()=>{var i;return U.prototype?(i=U.prototype.options.componentOptions[e])!=null&&i[t]?U.prototype.options.componentOptions[e][t]:U.prototype.options[t]:s}}function y(e){return["","xs","sm","md","lg","xl","xxl"].includes(e)}const pt=p({props:{collapse:{type:[String,Boolean],default:"md"},modelValue:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{open:this.modelValue,windowWidth:typeof window<"u"?window.innerWidth:0}},computed:{collapsibleClasses(){return{"-open":this.open,"-collapsible":this.collapsible,[`-collapse-${this.collapse}`]:!!this.collapse}},collapsible(){return this.collapse===!0||this.collapse===!1?this.collapse:this.windowWidth<=_[this.collapse][1]}},watch:{modelValue(e){this.open=e}},created(){typeof window<"u"&&(O(window,"resize",this.onWindowResize),this.onWindowResize())},beforeUnmount(){typeof window<"u"&&D(window,"resize",this.onWindowResize)},methods:{setOpen(e){this.open=e,this.$emit("update:modelValue",this.open)},toggleOpen(){this.open=!this.open,this.$emit("update:modelValue",this.open)},onWindowResize(){if(this.collapse===!0||this.collapse===!1||typeof window>"u")return;const e=window.innerWidth;this.windowWidth<=_[this.collapse][1]&&e>_[this.collapse][1]&&this.setOpen(!1),this.windowWidth=window.innerWidth}}}),R=p({inject:{formGroup:{default:()=>({})},form:{default:()=>({})}},computed:{isDisabled(){return this.disabled||this.form.isDisabled||this.formGroup.isDisabled},isReadonly(){return this.readonly||this.form.isReadonly||this.formGroup.isReadonly},parent(){return this.formGroup.$?this.formGroup:this.form},schema(){const e=this.parent.schema||{};return this.name!==""?j(e,`${this.name}`):e}}}),K=p({props:{tag:{type:String,default:"a"}},computed:{isTag(){return this.$attrs.to?this.routerComponent:this.$attrs.href?"a":this.tag},isComponent(){return this.isTag===this.routerComponent},routerComponent(){return this.$inkline.options.routerComponent}}}),Bs=e=>({name:"offset",options:{offset:[0,e]}}),zs=()=>({name:"arrow",options:{padding:6}}),As=()=>({name:"preventOverflow",options:{padding:8}}),Vs=()=>({name:"computeStyles",options:{gpuAcceleration:!1,adaptive:!1}}),Ns=()=>({name:"sameWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:({state:e})=>{e.styles.popper.width=`${e.rects.reference.width}px`},effect({state:e}){e.elements.popper.style.width=`${e.elements.reference.offsetWidth}px`}}),ct=({offset:e})=>[Bs(e),zs(),As(),Vs()],ee=p({props:{placement:{type:String,default:"auto"},offset:{type:Number,default:6},popperOptions:{type:Object,default:()=>({})}},data(){return{popperInstance:void 0}},watch:{placement(e){this.popperInstance&&this.popperInstance.setOptions({placement:e})}},beforeUnmount(){this.destroyPopper()},methods:{createPopper(){if(typeof window>"u")return;const e=ct({offset:this.offset});this.popperInstance=It(this.$refs.wrapper,this.$refs.popup,{strategy:"fixed",placement:this.placement,modifiers:e,...this.popperOptions})},destroyPopper(){this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=void 0)}}}),Ge=p({props:{disabled:{type:Boolean,default:!1},modelValue:{type:Boolean,default:void 0},trigger:{type:Array,default:()=>["hover","click","focus"]},interactable:{type:Boolean,default:!0},hoverHideDelay:{type:Number,default:300}},emits:["update:modelValue","click-outside"],data(){return{visible:this.modelValue,triggerStack:0,hoverHideTransition:!1}},watch:{modelValue(e){e?this.show():this.hide()}},mounted(){if(!this.$slots.default)throw new Error("Popup components require one child element to be used as trigger.");this.addEventListeners()},beforeUnmount(){this.removeEventListeners()},methods:{show(){this.disabled||this.visible||(this.triggerStack+=1,this.visible=!0,this.createPopper(),this.$emit("update:modelValue",!0))},hide(){this.disabled||!this.visible||(this.triggerStack-=1,this.triggerStack<=0&&(this.triggerStack=0,this.visible=!1,this.$emit("update:modelValue",!1)))},hoverShow(){this.hoverHideTransition=!1,this.show()},hoverHide(){this.hoverHideTransition=!0,setTimeout(()=>{this.hoverHideTransition&&this.hide()},this.hoverHideDelay)},onClick(){this.visible?this.hide():this.show()},onClickOutside(e){this.visible&&this.$emit("click-outside",e),!this.modelValue&&this.hide()},addEventListeners(){[].concat(this.trigger).forEach(e=>{switch(e){case"hover":O(this.$refs.trigger,"mouseenter",this.interactable?this.hoverShow:this.show),O(this.$refs.trigger,"mouseleave",this.interactable?this.hoverHide:this.hide),this.interactable&&(O(this.$refs.popup,"mouseenter",this.hoverShow),O(this.$refs.popup,"mouseleave",this.hoverHide));break;case"click":O(this.$refs.trigger,"click",this.onClick);break;case"focus":for(const t of this.$refs.trigger.children)O(t,"focus",this.show),O(t,"blur",this.hide);break}})},removeEventListeners(){[].concat(this.trigger).forEach(e=>{switch(e){case"hover":D(this.$refs.trigger,"mouseenter",this.interactable?this.hoverShow:this.show),D(this.$refs.trigger,"mouseleave",this.interactable?this.hoverHide:this.hide),this.interactable&&(D(this.$refs.popup,"mouseenter",this.hoverShow),D(this.$refs.popup,"mouseleave",this.hoverHide));break;case"click":D(this.$refs.trigger,"click",this.onClick);break;case"focus":for(const t of this.$refs.trigger.children)D(t,"focus",this.show),D(t,"blur",this.hide);break}})},focusTrigger(){for(const e of this.$refs.trigger.children)if(at(e)){e.focus();break}}}}),oe="IAlert",Os=p({name:oe,inheritAttrs:!1,props:{size:{type:String,default:u(oe,"size"),validator:y},color:{type:String,default:u(oe,"color")},modelValue:{type:Boolean,default:!0},dismissible:{type:Boolean,default:!1},dismissAriaLabel:{type:String,default:"Dismiss"}},emits:["update:modelValue"],data(){return{dismissed:!1}},computed:{classes(){return{[`-${this.color}`]:!!this.color,[`-${this.size}`]:!!this.size,"-dismissible":this.dismissible,"-with-icon":!!this.$slots.icon}}},watch:{modelValue(e){this.dismissed=!e}},methods:{dismiss(){this.dismissed=!0,this.$emit("update:modelValue",!1)}}}),Ls={key:0,class:"icon",role:"img","aria-hidden":"true"},Ds={class:"content"},Ts=["aria-label"];function Ps(e,t,s,i,a,r){return k((o(),l("div",h({class:["alert",e.classes],role:"alert"},e.$attrs),[e.$slots.icon?(o(),l("span",Ls,[d(e.$slots,"icon")])):m("",!0),f("div",Ds,[d(e.$slots,"default")]),e.dismissible?(o(),l("span",{key:1,class:"dismiss",role:"button","aria-label":e.dismissAriaLabel,onClick:t[0]||(t[0]=(...n)=>e.dismiss&&e.dismiss(...n))},[d(e.$slots,"dismiss",{},()=>[T("×")])],8,Ts)):m("",!0)],16)),[[C,!e.dismissed]])}const Es=c(Os,[["render",Ps]]),re="IBadge",Rs=p({name:re,inheritAttrs:!1,props:{color:{type:String,default:u(re,"color")},size:{type:String,default:u(re,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}}});function Ms(e,t,s,i,a,r){return o(),l("div",h({class:["badge",e.classes]},e.$attrs),[d(e.$slots,"default")],16)}const Fs=c(Rs,[["render",Ms]]),le="IBreadcrumb",js=p({name:le,inheritAttrs:!1,props:{ariaLabel:{type:String,default:"Breadcrumbs"},color:{type:String,default:u(le,"color")},size:{type:String,default:u(le,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}}}),Gs=["aria-label"];function Zs(e,t,s,i,a,r){return o(),l("nav",h({class:["breadcrumb",e.classes],"aria-label":e.ariaLabel},e.$attrs),[f("ol",null,[d(e.$slots,"default")])],16,Gs)}const Ks=c(js,[["render",Zs]]),Hs="IBreadcrumbItem",Ws=p({name:Hs,mixins:[K],inheritAttrs:!1,props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},href:{type:String,default:""},to:{type:[String,Object],default:""},tabindex:{type:[Number,String],default:0}},computed:{classes(){return{"-active":this.active,"-disabled":this.disabled}},tabIndex(){return this.disabled||this.active?-1:this.tabindex}}}),qs=["is","href","to","tabindex","aria-current"];function Us(e,t,s,i,a,r){return o(),l("li",h({class:["breadcrumb-item",e.classes]},e.$attrs),[f("a",{is:e.isTag,href:e.href,to:e.to,tabindex:e.tabIndex,"aria-current":e.active?"location":null},[d(e.$slots,"default",{},void 0,!0)],8,qs)],16)}const Qs=c(Ws,[["render",Us],["__scopeId","data-v-28fa6b16"]]),de="ILoader",Js=p({name:de,inheritAttrs:!1,props:{color:{type:String,default:u(de,"color")},size:{type:String,default:u(de,"size")}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}}}),Ys={key:0,class:"loader-text"},Xs=f("svg",{viewBox:"25 25 50 50"},[f("circle",{cx:"50",cy:"50",r:"20",fill:"none","stroke-width":"4","stroke-miterlimit":"10"})],-1);function _s(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["loader",e.classes],role:"img","aria-hidden":"true"}),[e.$slots.default?(o(),l("span",Ys,[d(e.$slots,"default")])):m("",!0),Xs],16)}const ht=c(Js,[["render",_s]]),ue="IButton",xs=p({name:ue,components:{ILoader:ht},mixins:[K],inject:{buttonGroup:{default:()=>({})},form:{default:()=>({})},formGroup:{default:()=>({})}},inheritAttrs:!1,props:{active:{type:Boolean,default:!1},block:{type:Boolean,default:!1},circle:{type:Boolean,default:!1},color:{type:String,default:u(ue,"color")},disabled:{type:Boolean,default:!1},link:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},outline:{type:Boolean,default:!1},tag:{type:String,default:"button"},tabindex:{type:[Number,String],default:0},size:{type:String,default:u(ue,"size"),validator:y}},computed:{ariaBusy(){return this.role!=="button"?null:this.loading?"true":"false"},ariaDisabled(){return this.role!=="button"?null:this.disabled?"true":"false"},ariaPressed(){return this.role!=="button"?null:this.active?"true":"false"},classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-active":this.active,"-block":this.block,"-circle":this.circle,"-disabled":this.isDisabled,"-link":this.link,"-outline":this.outline}},isDisabled(){return this.disabled||this.buttonGroup.disabled||this.form.disabled||this.formGroup.disabled},role(){return this.$attrs.to||this.$attrs.href?"link":"button"},tabIndex(){return this.isDisabled?-1:this.tabindex}}});function ei(e,t,s,i,a,r){const n=A("i-loader");return o(),V(X(e.isTag),h(e.$attrs,{class:["button",e.classes],tag:e.tag,role:e.role,tabindex:e.tabIndex,disabled:e.isDisabled||e.loading,"aria-disabled":e.ariaDisabled,"aria-pressed":e.ariaPressed,"aria-busy":e.ariaBusy,"aria-live":"polite"}),{default:b(()=>[e.loading?d(e.$slots,"loading",{key:0},()=>[I(n)]):m("",!0),e.loading?m("",!0):d(e.$slots,"default",{key:1})]),_:3},16,["tag","role","tabindex","class","disabled","aria-disabled","aria-pressed","aria-busy"])}const ft=c(xs,[["render",ei]]),ti="IButtonGroup",si=p({name:ti,inject:{form:{default:()=>({})},buttonGroup:{default:()=>({})},formGroup:{default:()=>({})}},provide(){return{buttonGroup:this}},inheritAttrs:!1,props:{vertical:{type:Boolean,default:!1},block:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},computed:{classes(){return{"-vertical":this.vertical,"-block":this.block,"-disabled":this.isDisabled}},isDisabled(){return this.disabled||this.buttonGroup.disabled||this.form.disabled||this.formGroup.disabled}}}),ii=["aria-disabled"];function ai(e,t,s,i,a,r){return o(),l("div",h({class:["button-group",e.classes],role:"group","aria-disabled":e.isDisabled},e.$attrs),[d(e.$slots,"default")],16,ii)}const ni=c(si,[["render",ai]]),J={};for(const e of je){e!==""&&(J[e]={type:[String,Boolean,Number],default:!1});for(const t of["first","last"])J[`${t}${Pe(e)}`]={type:Boolean,default:!1};for(const t of["offset","push","pull"])J[`${t}${Pe(e)}`]={type:[String,Number],default:""}}const oi="IColumn",ri=p({name:oi,inheritAttrs:!1,props:J,computed:{classes(){return Object.keys(J).reduce((e,t)=>(this[t]&&(e[it(`-${t}`,this[t])]=!0),e),{})}}});function li(e,t,s,i,a,r){return o(),l("div",h({class:["column",e.classes]},e.$attrs),[d(e.$slots,"default")],16)}const Ze=c(ri,[["render",li]]),di="IContainer",ui=p({name:di,inheritAttrs:!1,props:{fluid:{type:Boolean,default:!1}},computed:{classes(){return{"-fluid":this.fluid}}}});function pi(e,t,s,i,a,r){return o(),l("div",h({class:["container",e.classes]},e.$attrs),[d(e.$slots,"default")],16)}const Ke=c(ui,[["render",pi]]),pe="ICard",ci=p({name:pe,inheritAttrs:!1,props:{color:{type:String,default:u(pe,"color")},size:{type:String,default:u(pe,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}}}),hi={key:0,class:"card-header"},fi={key:1,class:"card-body"},mi={key:2,class:"card-footer"};function $i(e,t,s,i,a,r){return o(),l("div",h({class:["card",e.classes]},e.$attrs),[e.$slots.header?(o(),l("header",hi,[d(e.$slots,"header")])):m("",!0),d(e.$slots,"image"),e.$slots.default?(o(),l("div",fi,[d(e.$slots,"default")])):m("",!0),e.$slots.footer?(o(),l("footer",mi,[d(e.$slots,"footer")])):m("",!0)],16)}const bi=c(ci,[["render",$i]]),ce="ICheckbox",yi=p({name:ce,mixins:[R],inheritAttrs:!1,props:{color:{type:String,default:u(ce,"color")},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},value:{default:!1},modelValue:{default:!1},name:{type:[String,Number],default(){return B("checkbox")}},native:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},size:{type:String,default:u(ce,"size"),validator:y},tabindex:{type:[Number,String],default:0}},emits:["update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-native":this.native}},checked(){return this.formGroup.checked?this.formGroup.checked.includes(this.value):this.schema?this.schema.value:this.modelValue},tabIndex(){return this.isDisabled?-1:this.tabindex}},methods:{clickInputRef(){this.isReadonly||this.$refs.input.click()},onChange(e){var t,s,i,a;(s=(t=this.parent).onInput)==null||s.call(t,this.name,e.target.checked),(a=(i=this.formGroup).onChange)==null||a.call(i,this.value),this.$emit("update:modelValue",e.target.checked)},onBlur(e){var t,s;(s=(t=this.parent).onBlur)==null||s.call(t,this.name,e)}}}),gi=["aria-checked"],vi=["checked","name","disabled","readonly",".indeterminate"],ki=["aria-checked","aria-disabled","aria-readonly","tabindex"];function wi(e,t,s,i,a,r){return o(),l("div",h({class:["checkbox",e.classes],"aria-checked":e.checked?"true":"false",role:"checkbox"},e.$attrs),[f("input",{ref:"input",type:"checkbox",checked:e.checked,tabindex:"-1",name:e.name,disabled:e.isDisabled,readonly:e.isReadonly,".indeterminate":e.indeterminate,"aria-hidden":"true",onChange:t[0]||(t[0]=(...n)=>e.onChange&&e.onChange(...n))},null,40,vi),f("label",{class:"checkbox-label","aria-checked":e.checked,"aria-disabled":e.isDisabled,"aria-readonly":e.isReadonly,tabindex:e.tabIndex,onBlur:t[1]||(t[1]=(...n)=>e.onBlur&&e.onBlur(...n)),onClick:t[2]||(t[2]=(...n)=>e.clickInputRef&&e.clickInputRef(...n)),onKeydown:t[3]||(t[3]=M(Y((...n)=>e.clickInputRef&&e.clickInputRef(...n),["stop","prevent"]),["space"]))},[d(e.$slots,"default")],40,ki)],16,gi)}const Ii=c(yi,[["render",wi]]),he="ICheckboxGroup",Ci=p({name:he,mixins:[R],provide(){return{formGroup:this}},inheritAttrs:!1,props:{color:{type:String,default:u(he,"color")},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},modelValue:{default:()=>[]},name:{type:[String,Number],default(){return B("checkbox-group")}},readonly:{type:Boolean,default:!1},size:{type:String,default:u(he,"size"),validator:y}},emits:["update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-inline":this.inline}},checked(){return this.schema?this.schema.value:this.modelValue}},methods:{onChange(e){var i,a;const t=[...this.modelValue],s=t.findIndex(r=>r===e);s!==-1?t.splice(s,1):t.push(e),(a=(i=this.parent).onInput)==null||a.call(i,this.name,t),this.$emit("update:modelValue",t)}}}),Si=["name"];function Bi(e,t,s,i,a,r){return o(),l("div",h({class:["form-group checkbox-group",e.classes],name:e.name,role:"checkboxgroup"},e.$attrs),[d(e.$slots,"default",{},void 0,!0)],16,Si)}const zi=c(Ci,[["render",Bi],["__scopeId","data-v-4043b2ce"]]),fe="ICollapsible",Ai=p({name:fe,provide(){return{collapsible:this}},inheritAttrs:!1,props:{accordion:{type:Boolean,default:!1},color:{type:String,default:u(fe,"color")},size:{type:String,default:u(fe,"size"),validator:y},modelValue:{type:Array,default:()=>[]}},emits:["update:modelValue"],data(){return{activeItems:[].concat(this.modelValue)}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}},watch:{modelValue(e){this.activeItems=[].concat(e)}},methods:{onItemClick(e){if(this.accordion)return this.activeItems=this.activeItems.indexOf(e.name)>-1?[]:[e.name],this.activeItems;const t=this.activeItems.indexOf(e.name);t>-1?this.activeItems.splice(t,1):this.activeItems.push(e.name),this.$emit("update:modelValue",this.activeItems)}}});function Vi(e,t,s,i,a,r){return o(),l("div",h({class:["collapsible",e.classes],role:"tablist","aria-multiselectable":"true"},e.$attrs),[d(e.$slots,"default")],16)}const Ni=c(Ai,[["render",Vi]]),Oi=p({name:"IExpandTransition",methods:{onEnter(e){const t=q(e,"width");e.style.width=t,e.style.position="absolute",e.style.visibility="hidden",e.style.height="auto";const s=q(e,"height");e.style.width=null,e.style.position=null,e.style.visibility=null,e.style.height=0,q(e,"height"),setTimeout(()=>{e.style.height=s})},onAfterEnter(e){e.style.height="auto"},onLeave(e){e.style.height=q(e,"height"),q(e,"height"),setTimeout(()=>{e.style.height=0})}}});function Li(e,t,s,i,a,r){return o(),V(L,{name:"expand",onEnter:e.onEnter,onAfterEnter:e.onAfterEnter,onLeave:e.onLeave},{default:b(()=>[d(e.$slots,"default",{},void 0,!0)]),_:3},8,["onEnter","onAfterEnter","onLeave"])}const mt=c(Oi,[["render",Li],["__scopeId","data-v-1e395af5"]]),Di="ICollapsibleItem",Ti=p({name:Di,components:{IExpandTransition:mt},inject:{collapsible:{default:()=>({activeItems:[]})}},inheritAttrs:!1,props:{name:{type:String,default(){return B("collapsible-item")}},title:{type:String,default:""}},computed:{active(){return this.collapsible.activeItems.indexOf(this.name)>-1},classes(){return{"-active":this.active}}},methods:{onClick(){this.collapsible.onItemClick(this)}}}),Pi=["name"],Ei=["id","aria-expanded","aria-controls","aria-describedby"],Ri=f("i",{class:"icon"},null,-1),Mi=["id","aria-hidden","aria-labelledby"],Fi={class:"content"};function ji(e,t,s,i,a,r){const n=A("i-expand-transition");return o(),l("div",h({class:["collapsible-item",e.classes],name:e.name},e.$attrs),[f("a",{class:"collapsible-header",role:"tab",id:`collapsible-item-heading-${e.name}`,"aria-expanded":e.active?"true":"false","aria-controls":`collapsible-item-content-${e.name}`,"aria-describedby":`collapsible-item-content-${e.name}`,tabindex:"0",onClick:t[0]||(t[0]=(...$)=>e.onClick&&e.onClick(...$)),onKeydown:[t[1]||(t[1]=M(Y((...$)=>e.onClick&&e.onClick(...$),["prevent"]),["space"])),t[2]||(t[2]=M(Y((...$)=>e.onClick&&e.onClick(...$),["prevent"]),["enter"]))]},[d(e.$slots,"header",{},()=>[T(F(e.title),1)]),Ri],40,Ei),I(n,null,{default:b(()=>[k(f("div",{class:"collapsible-body",role:"tabpanel",id:`collapsible-item-content-${e.name}`,"aria-hidden":e.active?"false":"true","aria-labelledby":`collapsible-item-heading-${e.name}`},[f("div",Fi,[d(e.$slots,"default")])],8,Mi),[[C,e.active]])]),_:3})],16,Pi)}const Gi=c(Ti,[["render",ji]]),Zi=(e,t)=>s=>{!Dt(e)||!s.target||e===s.target||e.contains(s.target)||t.value(s)},H={beforeMount(e,t){typeof window<"u"&&O(window.document,"mousedown",Zi(e,t))}},me="IDropdown",Ki=p({name:me,directives:{ClickOutside:H},mixins:[ee,Ge],provide(){return{dropdown:this}},inject:{navbar:{default:()=>({onItemClick:()=>{}})},sidebar:{default:()=>({onItemClick:()=>{}})}},inheritAttrs:!1,props:{animationDuration:{type:Number,default:300},color:{type:String,default:u(me,"color")},disabled:{type:Boolean,default:!1},hideOnItemClick:{type:Boolean,default:!0},keydownTrigger:{type:Array,default:()=>["up","down","enter","space","tab","esc"]},keydownItem:{type:Array,default:()=>["up","down","enter","space","tab","esc"]},modelValue:{type:Boolean,default:!1},arrow:{type:Boolean,default:!0},placement:{type:String,default:"bottom"},trigger:{type:[String,Array],default:()=>["click"]},offset:{type:Number,default:6},interactable:{type:Boolean,default:!0},popperOptions:{type:Object,default:()=>({})},size:{type:String,default:u(me,"size"),validator:y}},emits:["click-outside","update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}},mounted(){for(const e of this.$refs.trigger.children)O(e,"keydown",this.onTriggerKeyDown);O(this.$refs.popup,"keydown",this.onItemKeyDown)},beforeUnmount(){for(const e of this.$refs.trigger.children)D(e,"keydown",this.onTriggerKeyDown);D(this.$refs.popup,"keydown",this.onItemKeyDown)},methods:{onEscape(){this.visible=!1,this.$emit("update:modelValue",!1)},handleClickOutside(e){this.visible=!1,this.$emit("update:modelValue",!1),this.onClickOutside(e)},getFocusableItems(){const e=[];for(const t of this.$refs.body.children)Fe(t)&&e.push(t);return e},onTriggerKeyDown(e){if(this.keydownTrigger.length===0)return;const t=this.getFocusableItems(),s=t.findIndex(r=>r.active),i=s>-1?s:0,a=t[i];switch(!0){case(v("up",e)&&this.keydownTrigger.includes("up")):case(v("down",e)&&this.keydownTrigger.includes("down")):this.show(),setTimeout(()=>{a.focus()},this.visible?0:this.animationDuration),e.preventDefault(),e.stopPropagation();break;case(v("enter",e)&&this.keydownTrigger.includes("enter")):case(v("space",e)&&this.keydownTrigger.includes("space")):this.onClick(),this.visible||setTimeout(()=>{a.focus()},this.animationDuration),e.preventDefault();break;case(v("tab",e)&&this.keydownTrigger.includes("tab")):case(v("esc",e)&&this.keydownTrigger.includes("esc")):this.hide();break}},onItemKeyDown(e){if(this.keydownItem.length!==0)switch(!0){case(v("up",e)&&this.keydownItem.includes("up")):case(v("down",e)&&this.keydownItem.includes("down")):const t=this.getFocusableItems(),s=t.findIndex(r=>r===e.target),i=t.length-1;let a;v("up",e)?a=s>0?s-1:0:a=s<i?s+1:i,t[a].focus(),e.preventDefault(),e.stopPropagation();break;case(v("enter",e)&&this.keydownItem.includes("enter")):case(v("space",e)&&this.keydownItem.includes("space")):e.target.click(),this.hideOnItemClick&&this.hide(),this.focusTrigger(),e.preventDefault();break;case(v("tab",e)&&this.keydownItem.includes("tab")):case(v("esc",e)&&this.keydownItem.includes("esc")):this.hide(),this.focusTrigger(),e.preventDefault();break}},onItemClick(){this.hideOnItemClick&&this.hide(),[this.navbar,this.sidebar].forEach(e=>{e.onItemClick()})}}}),Hi={class:"dropdown-trigger",ref:"trigger"},Wi=["aria-hidden"],qi={key:0,"data-popper-arrow":""},Ui={key:1,class:"dropdown-header"},Qi={key:2,class:"dropdown-body",ref:"body"},Ji={key:3,class:"dropdown-footer"};function Yi(e,t,s,i,a,r){const n=Z("click-outside");return k((o(),l("div",h({class:"dropdown-wrapper",ref:"wrapper","aria-haspopup":"true",onKeyup:t[0]||(t[0]=M((...$)=>e.onEscape&&e.onEscape(...$),["esc"]))},e.$attrs),[f("div",Hi,[d(e.$slots,"default")],512),I(L,{name:"zoom-in-top-transition",onAfterLeave:e.destroyPopper},{default:b(()=>[k(f("div",{class:z(["dropdown",e.classes]),role:"menu",ref:"popup","aria-hidden":e.visible?"false":"true"},[e.arrow?(o(),l("span",qi)):m("",!0),e.$slots.header?(o(),l("div",Ui,[d(e.$slots,"header")])):m("",!0),e.$slots.body?(o(),l("div",Qi,[d(e.$slots,"body")],512)):m("",!0),e.$slots.footer?(o(),l("div",Ji,[d(e.$slots,"footer")])):m("",!0)],10,Wi),[[C,e.visible]])]),_:3},8,["onAfterLeave"])],16)),[[n,e.onClickOutside]])}const Xi=c(Ki,[["render",Yi]]),_i="IDropdownDivider",xi=p({name:_i,inheritAttrs:!1});function ea(e,t,s,i,a,r){return o(),l("div",h({class:"dropdown-divider",role:"separator"},e.$attrs),null,16)}const ta=c(xi,[["render",ea]]),sa="IDropdownItem",ia=p({name:sa,mixins:[K],inject:{dropdown:{default:()=>({})}},inheritAttrs:!1,props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},plaintext:{type:Boolean,default:!1},tag:{type:String,default:"div"},tabindex:{type:[Number,String],default:0}},computed:{classes(){return{"-active":this.active,"-disabled":this.disabled,"-plaintext":this.plaintext}},role(){return this.$attrs.to||this.$attrs.href?"link":"menuitem"},tabIndex(){return this.disabled?-1:this.tabindex}},methods:{onClick(e){var t,s;(s=(t=this.dropdown).onItemClick)==null||s.call(t,this,e)}}});function aa(e,t,s,i,a,r){return o(),V(X(e.isTag),h(e.$attrs,{class:["dropdown-item",e.classes],role:e.role,tag:e.tag,tabindex:e.tabIndex,disabled:e.disabled,"aria-disabled":e.disabled,"aria-pressed":e.active,onClick:e.onClick}),{default:b(()=>[d(e.$slots,"default")]),_:3},16,["class","role","tag","tabindex","disabled","aria-disabled","aria-pressed","onClick"])}const na=c(ia,[["render",aa]]),Je="IForm",oa=p({name:Je,mixins:[R],provide(){return{form:this}},inheritAttrs:!1,props:{color:{type:String,default:""},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},name:{type:String,default(){return B("form")}},modelValue:{type:Object,default:()=>null},readonly:{type:Boolean,default:!1},size:{type:String,default:u(Je,"size"),validator:y}},emits:["update:modelValue","submit"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-inline":this.inline}},schema(){return this.modelValue?this.modelValue:j(this.formGroup.schema||this.form.schema||{},this.name)}},methods:{onBlur(e,t){var s,i;if((i=(s=this.parent).onBlur)==null||i.call(s,this.name?`${this.name}.${e}`:e,t),this.modelValue){let a=Q(this.modelValue);a=ie(a,e,{untouched:!1,touched:!0}),this.shouldValidate(e,"blur")&&(a=ae(a)),this.$emit("update:modelValue",a)}},onInput(e,t){var s,i;if((i=(s=this.parent).onInput)==null||i.call(s,this.name?`${this.name}.${e}`:e,t),this.modelValue){let a=Q(this.modelValue);a=Kt(a,e,"value",t),a=ie(a,e,{pristine:!1,dirty:!0}),this.shouldValidate(e,"input")&&(a=ae(a)),this.$emit("update:modelValue",a)}},onSubmit(e){if(e.preventDefault(),this.modelValue){let t=Q(this.modelValue);if(t=ie(ae(t),"",{untouched:!1,touched:!0}),this.$emit("update:modelValue",t),t.invalid)return}this.$emit("submit",e)},shouldValidate(e,t){const s=j(this.modelValue,e);return(s.validateOn?[].concat(s.validateOn):this.$inkline.options.validateOn).includes(t)}}}),ra=["name","readonly","disabled"];function la(e,t,s,i,a,r){return o(),l("form",h(e.$attrs,{class:["form",e.classes],role:"form",name:e.name,readonly:e.isReadonly,disabled:e.isDisabled,onSubmit:t[0]||(t[0]=(...n)=>e.onSubmit&&e.onSubmit(...n))}),[d(e.$slots,"default",{},void 0,!0)],16,ra)}const da=c(oa,[["render",la],["__scopeId","data-v-575ccba7"]]),$e="IFormGroup",ua=p({name:$e,mixins:[R],provide(){return{formGroup:this}},props:{color:{type:String,default:u($e,"color")},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},name:{type:String,default:""},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},size:{type:String,default:u($e,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-inline":this.inline,"-required":this.required}}},methods:{onBlur(e,t){var s,i;(i=(s=this.parent)==null?void 0:s.onBlur)==null||i.call(s,this.name?`${this.name}.${e}`:e,t)},onInput(e,t){var s,i;(i=(s=this.parent)==null?void 0:s.onInput)==null||i.call(s,this.name?`${this.name}.${e}`:e,t)}}}),pa=["name"];function ca(e,t,s,i,a,r){return o(),l("fieldset",{class:z(["form-group",e.classes]),name:e.name,role:"group"},[d(e.$slots,"default")],10,pa)}const ha=c(ua,[["render",ca]]),fa="IFormError",ma=p({name:fa,inject:{formGroup:{default:()=>({})},form:{default:()=>({})}},props:{for:{type:String,default:""},visible:{type:[Array,String],default:()=>["touched","dirty","invalid"]}},computed:{parent(){return this.formGroup.$?this.formGroup:this.form},schema(){return this.for!==""?j(this.parent.schema||{},`${this.for}`):this.parent.schema||{}},errors(){return this.schema.errors||[]},isVisible(){let e=!0;return this.schema&&this.visible&&[].concat(this.visible).forEach(t=>{e=e&&this.schema[t]}),e}}}),$a={key:0,class:"form-error","aria-live":"polite"};function ba(e,t,s,i,a,r){return e.schema?k((o(),V(L,{key:0,name:"fade-in-transition"},{default:b(()=>[e.errors.length>0?(o(),l("ul",$a,[(o(!0),l(G,null,x(e.errors,n=>(o(),l("li",null,F(n.message),1))),256))])):m("",!0)]),_:1},512)),[[C,e.isVisible]]):m("",!0)}const ya=c(ma,[["render",ba]]),Ye="IFormLabel",ga=p({name:Ye,mixins:[R],props:{for:{type:String,default:""},placement:{type:String,default:""},size:{type:String,default:u(Ye,"size"),validator:y}},computed:{classes(){return{[`-${this.size}`]:!!this.size,[`-${this.placement}`]:!!this.placement}},forAttr(){return this.for}},methods:{getNextSibling(){return this.$el.nextSibling.querySelector("input, textarea")},onClick(){var e;this.for||(e=this.getNextSibling())==null||e.focus()}}}),va=["for"];function ka(e,t,s,i,a,r){return o(),l("label",h(e.$attrs,{class:["form-label",e.classes],for:e.forAttr,onClick:t[0]||(t[0]=(...n)=>e.onClick&&e.onClick(...n))}),[d(e.$slots,"default")],16,va)}const wa=c(ga,[["render",ka]]),Xe="IHamburgerMenu",Ia=p({name:Xe,inheritAttrs:!1,props:{animation:{type:String,default:"close"},color:{type:String,default:u(Xe,"color")},modelValue:{type:Boolean,default:!1}},emits:["update:modelValue"],computed:{classes(){return{...g(this),"-active":this.modelValue,[`-${this.animation}`]:!0}}},methods:{onClick(){this.$emit("update:modelValue",!this.modelValue)}}}),Ca=f("span",{class:"hamburger-menu-bars"},null,-1),Sa=[Ca];function Ba(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["hamburger-menu",e.classes],onClick:t[0]||(t[0]=(...n)=>e.onClick&&e.onClick(...n))}),Sa,16)}const $t=c(Ia,[["render",Ba]]),Re={};for(const e of je)for(const t of["start","center","end","top","middle","bottom","around","between","reverse"])Re[`${t}${Pe(e)}`]={type:Boolean,default:!1};const za="IRow",Aa=p({name:za,inheritAttrs:!1,props:{noGutter:{type:Boolean,default:!1},noCollapse:{type:Boolean,default:!1},...Re},computed:{classes(){const e=Object.keys(Re).reduce((t,s)=>(this[s]&&(t[it(`-${s}`,this[s])]=!0),t),{});return{"-no-gutter":this.noGutter,"-no-collapse":this.noCollapse,...e}}}});function Va(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["row",e.classes]}),[d(e.$slots,"default")],16)}const He=c(Aa,[["render",Va]]),be="IHeader",Na=p({name:be,components:{IContainer:Ke,IRow:He,IColumn:Ze},inheritAttrs:!1,props:{color:{type:String,default:u(be,"color")},cover:{type:Boolean,default:!1},fluid:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},size:{type:String,default:u(be,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-cover":this.cover,"-fullscreen":this.fullscreen}}}});function Oa(e,t,s,i,a,r){const n=A("i-column"),$=A("i-row"),N=A("i-container");return o(),l("header",h(e.$attrs,{class:["header",e.classes]}),[I(N,{fluid:e.fluid},{default:b(()=>[I($,null,{default:b(()=>[I(n,null,{default:b(()=>[d(e.$slots,"default")]),_:3})]),_:3})]),_:3},8,["fluid"])],16)}const La=c(Na,[["render",Oa]]),_e="IIcon",Da=p({name:_e,inheritAttrs:!1,props:{name:{type:String,default:""},size:{type:String,default:u(_e,"size"),validator:y}},setup(e){const t=St("inklineIcons"),s=se(()=>Ht(e.name)),i=se(()=>t[s.value]),a=se(()=>({"inkline-icon":!0,[`-${e.size}`]:!!e.size}));return Ct(()=>{s.value&&!t[s.value]&&console.error(`The icon ${s.value} is not registered.`)}),()=>{var r,n;return tt("svg",{class:a.value,...(r=i.value)==null?void 0:r.attributes},rt(((n=i.value)==null?void 0:n.children)||[]))}}});function Ta(e,t,s,i,a,r){const n=A("icon");return o(),V(n,h(e.$attrs,{size:e.size}),null,16,["size"])}const bt=c(Da,[["render",Ta]]),ye="IInput",Pa=p({name:ye,mixins:[R],inheritAttrs:!1,props:{color:{type:String,default:u(ye,"color")},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{type:[Array,Boolean],default:()=>["touched","dirty","invalid"]},id:{type:String,default:void 0},modelValue:{type:[String,Number],default:""},name:{type:[String,Number],default(){return B("input")}},plaintext:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},size:{type:String,default:u(ye,"size"),validator:y},tabindex:{type:[Number,String],default:0},type:{type:String,default:"text"},clearAriaLabel:{type:String,default:"Clear"}},emits:["update:modelValue","clear"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-error":this.hasError,"-readonly":this.isReadonly,"-prefixed":!!this.$slots.prefix,"-suffixed":!!this.$slots.suffix,"-prepended":!!this.$slots.prepend,"-appended":!!this.$slots.append}},hasError(){if(typeof this.error=="boolean")return this.error;if(this.schema&&this.error){let e=!0;return[].concat(this.error).forEach(t=>{e=e&&this.schema[t]}),e}return!1},tabIndex(){return this.isDisabled?-1:this.tabindex},isClearable(){return this.clearable&&!this.isDisabled&&!this.isReadonly&&this.value!==""},value(){return this.schema?this.schema.value:this.modelValue}},methods:{onBlur(e){var t,s;(s=(t=this.parent).onBlur)==null||s.call(t,this.name,e)},onInput(e){var t,s;(s=(t=this.parent).onInput)==null||s.call(t,this.name,e.target.value),this.$emit("update:modelValue",e.target.value)},onClear(e){this.$emit("update:modelValue",""),this.$emit("clear",e)},focus(){this.$refs.input.focus()}}}),Ea={key:0,class:"input-prepend"},Ra={class:"input"},Ma={key:0,class:"input-prefix"},Fa=["value","name","id","type","tabindex","disabled","aria-disabled","readonly","aria-readonly"],ja={key:1,class:"input-suffix"},Ga=["aria-label","aria-hidden"],Za={key:1,class:"input-append"};function Ka(e,t,s,i,a,r){return o(),l("div",{class:z(["input-wrapper",e.classes])},[e.$slots.prepend?(o(),l("div",Ea,[d(e.$slots,"prepend")])):m("",!0),f("div",Ra,[e.$slots.prefix?(o(),l("span",Ma,[d(e.$slots,"prefix")])):m("",!0),f("input",h(e.$attrs,{value:e.value,ref:"input",name:e.name,id:e.id,type:e.type,tabindex:e.tabIndex,disabled:e.isDisabled,"aria-disabled":e.isDisabled?"true":!1,readonly:e.isReadonly||e.plaintext,"aria-readonly":e.isReadonly||e.plaintext?"true":!1,onInput:t[0]||(t[0]=(...n)=>e.onInput&&e.onInput(...n)),onBlur:t[1]||(t[1]=(...n)=>e.onBlur&&e.onBlur(...n))}),null,16,Fa),e.$slots.suffix||e.clearable&&e.isClearable?(o(),l("span",ja,[d(e.$slots,"clearable",{clear:e.onClear},()=>[e.clearable?k((o(),l("i",{key:0,class:"input-clear",role:"button","aria-label":e.clearAriaLabel,"aria-hidden":e.isClearable?"false":"true",onClick:t[2]||(t[2]=(...n)=>e.onClear&&e.onClear(...n))},null,8,Ga)),[[C,e.isClearable]]):m("",!0)]),d(e.$slots,"suffix")])):m("",!0)]),e.$slots.append?(o(),l("div",Za,[d(e.$slots,"append")])):m("",!0)],2)}const te=c(Pa,[["render",Ka]]),ge="INumberInput",Ha=p({name:ge,components:{IButton:ft},extends:te,inheritAttrs:!1,props:{color:{type:String,default:u(ge,"color")},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{type:String,default:""},modelValue:{type:[String,Number],default:""},name:{type:[String,Number],default(){return B("input")}},readonly:{type:Boolean,default:!1},size:{type:String,default:u(ge,"size"),validator:y},tabindex:{type:[Number,String],default:0},min:{type:[Number,String],default:-1/0},max:{type:[Number,String],default:1/0},precision:{type:Number,default:0},step:{type:Number,default:1}},emits:["update:modelValue"],watch:{modelValue:{immediate:!0,handler(e){var s,i;let t=(e||"").toString().replace(/^[^0-9-]/,"").replace(/^(-)[^0-9]/,"$1").replace(new RegExp(`^(-?[0-9]+)[^0-9${this.precision>0?".":""}]`),"$1");this.precision>0&&(t=t.replace(/^(-?[0-9]+\.)[^0-9]/,"$1").replace(new RegExp(`^(-?[0-9]+\\.[0-9]{0,${this.precision}}).*`),"$1")),parseFloat(t)>=parseFloat(this.max)&&(t=this.max.toString()),parseFloat(t)<=parseFloat(this.min)&&(t=this.min.toString()),(i=(s=this.parent).onInput)==null||i.call(s,this.name,t),this.$emit("update:modelValue",t)}}},methods:{decrease(){this.$emit("update:modelValue",this.formatPrecision((Number(this.modelValue)-this.step).toString()))},increase(){this.$emit("update:modelValue",this.formatPrecision((Number(this.modelValue)+this.step).toString()))},formatPrecision(e){const t=e.split(".");let s=t[1]||"";for(let i=s.length;i<this.precision;i+=1)s+="0";return this.precision>0?`${t[0]}.${s}`:t[0]},onBlurFormatPrecision(e){var t,s;this.$emit("update:modelValue",this.formatPrecision(Number(this.modelValue).toString())),(s=(t=this.parent).onBlur)==null||s.call(t,this.name,e)}}}),Wa={class:"input-prepend"},qa={class:"input"},Ua={key:0,class:"input-prefix"},Qa=["value","name","id","tabindex","disabled","aria-disabled","readonly","aria-readonly"],Ja={key:1,class:"input-suffix"},Ya=["aria-label","aria-hidden"],Xa={class:"input-append"};function _a(e,t,s,i,a,r){const n=A("i-button");return o(),l("div",{class:z(["input-wrapper -prepended -appended",e.classes])},[f("div",Wa,[d(e.$slots,"prepend"),I(n,{type:"button",color:e.color,size:e.size,disabled:e.disabled,class:"input-button-decrease",onClick:e.decrease},{default:b(()=>[T(" - ")]),_:1},8,["color","size","disabled","onClick"])]),f("div",qa,[e.$slots.prefix?(o(),l("span",Ua,[d(e.$slots,"prefix")])):m("",!0),f("input",h(e.$attrs,{value:e.value,ref:"input",name:e.name,id:e.id,type:"text",tabindex:e.tabIndex,disabled:e.isDisabled,"aria-disabled":e.isDisabled?"true":!1,readonly:e.isReadonly,"aria-readonly":e.isReadonly?"true":!1,onInput:t[0]||(t[0]=(...$)=>e.onInput&&e.onInput(...$)),onBlur:t[1]||(t[1]=(...$)=>e.onBlur&&e.onBlur(...$))}),null,16,Qa),e.$slots.suffix||e.clearable&&e.isClearable?(o(),l("span",Ja,[d(e.$slots,"clearable",{clear:e.onClear},()=>[e.clearable?k((o(),l("i",{key:0,class:"input-clear",role:"button","aria-label":e.clearAriaLabel,"aria-hidden":e.isClearable?"false":"true",onClick:t[2]||(t[2]=(...$)=>e.onClear&&e.onClear(...$))},null,8,Ya)),[[C,e.isClearable]]):m("",!0)]),d(e.$slots,"suffix")])):m("",!0)]),f("div",Xa,[I(n,{type:"button",color:e.color,size:e.size,disabled:e.disabled,class:"input-button-increase",onClick:e.increase},{default:b(()=>[T(" + ")]),_:1},8,["color","size","disabled","onClick"]),d(e.$slots,"append")])],2)}const xa=c(Ha,[["render",_a]]),ve="ITextarea",en=p({name:ve,extends:te,inheritAttrs:!1,props:{color:{type:String,default:u(ve,"color")},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{type:String,default:""},modelValue:{type:String,default:""},name:{type:[String,Number],default(){return B("textarea")}},readonly:{type:Boolean,default:!1},size:{type:String,default:u(ve,"size"),validator:y},tabindex:{type:[Number,String],default:0}},emits:["update:modelValue"]}),tn={key:0,class:"input-prepend"},sn={class:"input"},an={key:0,class:"input-prefix"},nn=["value","name","id","tabindex","disabled","aria-disabled","readonly","aria-readonly"],on={key:1,class:"input-suffix"},rn={key:1,class:"input-append"};function ln(e,t,s,i,a,r){return o(),l("div",{class:z(["input-wrapper",e.classes])},[e.$slots.prepend?(o(),l("div",tn,[d(e.$slots,"prepend")])):m("",!0),f("div",sn,[e.$slots.prefix?(o(),l("span",an,[d(e.$slots,"prefix")])):m("",!0),f("textarea",h(e.$attrs,{value:e.value,ref:"input",role:"textbox",name:e.name,id:e.id,tabindex:e.tabIndex,disabled:e.isDisabled,"aria-disabled":e.isDisabled?"true":!1,readonly:e.isReadonly,"aria-readonly":e.isReadonly?"true":!1,"aria-multiline":"true",onInput:t[0]||(t[0]=(...n)=>e.onInput&&e.onInput(...n)),onBlur:t[1]||(t[1]=(...n)=>e.onBlur&&e.onBlur(...n))}),null,16,nn),e.$slots.suffix||e.clearable&&e.isClearable?(o(),l("span",on,[d(e.$slots,"clearable",{clear:e.onClear},()=>[k(f("i",{class:"input-clear","aria-label":"Clear",onClick:t[2]||(t[2]=(...n)=>e.onClear&&e.onClear(...n))},null,512),[[C,e.isClearable]])]),d(e.$slots,"suffix")])):m("",!0)]),e.$slots.append?(o(),l("div",rn,[d(e.$slots,"append")])):m("",!0)],2)}const dn=c(en,[["render",ln]]),un="ILayout",pn=p({name:un,inheritAttrs:!1,props:{vertical:{type:Boolean,default:!1}},computed:{classes(){return{"-vertical":this.vertical}}}});function cn(e,t,s,i,a,r){return o(),l("main",h(e.$attrs,{class:["layout",e.classes]}),[d(e.$slots,"default",{},void 0,!0)],16)}const hn=c(pn,[["render",cn],["__scopeId","data-v-9a9f03c1"]]),fn="ILayoutAside",mn=p({name:fn,inheritAttrs:!1}),$n={class:"layout-aside-children"};function bn(e,t,s,i,a,r){return o(),l("aside",h(e.$attrs,{class:"layout-aside"}),[f("div",$n,[d(e.$slots,"default",{},void 0,!0)])],16)}const yn=c(mn,[["render",bn],["__scopeId","data-v-6e13c28d"]]),gn="ILayoutContent",vn=p({name:gn,inheritAttrs:!1});function kn(e,t,s,i,a,r){return o(),l("section",h(e.$attrs,{class:"layout-content"}),[d(e.$slots,"default",{},void 0,!0)],16)}const wn=c(vn,[["render",kn],["__scopeId","data-v-5b197a5d"]]),In="ILayoutFooter",Cn=p({name:In,inheritAttrs:!1});function Sn(e,t,s,i,a,r){return o(),l("footer",h(e.$attrs,{class:"layout-footer"}),[d(e.$slots,"default",{},void 0,!0)],16)}const Bn=c(Cn,[["render",Sn],["__scopeId","data-v-31bd8dbc"]]),zn="ILayoutHeader",An=p({name:zn,inheritAttrs:!1});function Vn(e,t,s,i,a,r){return o(),l("header",h(e.$attrs,{class:"layout-header"}),[d(e.$slots,"default",{},void 0,!0)],16)}const Nn=c(An,[["render",Vn],["__scopeId","data-v-ece9ef9b"]]),ke="IListGroup",On=p({name:ke,inheritAttrs:!1,props:{border:{type:Boolean,default:!0},color:{type:String,default:u(ke,"color")},size:{type:String,default:u(ke,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-border":this.border}}}});function Ln(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["list-group",e.classes],role:"list"}),[d(e.$slots,"default")],16)}const Dn=c(On,[["render",Ln]]),Tn="IListGroupItem",Pn=p({name:Tn,mixins:[K],inheritAttrs:!1,props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},tag:{type:String,default:"div"},tabindex:{type:[Number,String],default:0}},computed:{ariaDisabled(){return this.role==="link"?null:this.disabled?"true":"false"},classes(){return{"-active":this.active,"-disabled":this.disabled}},role(){return this.$attrs.to||this.$attrs.href?"link":"listitem"},tabIndex(){return this.disabled?-1:this.tabindex}}});function En(e,t,s,i,a,r){return o(),V(X(e.isTag),h(e.$attrs,{class:["list-group-item",e.classes],tag:e.tag,role:e.role,tabindex:e.tabIndex,disabled:e.disabled,"aria-disabled":e.ariaDisabled}),{default:b(()=>[d(e.$slots,"default")]),_:3},16,["tag","role","tabindex","class","disabled","aria-disabled"])}const Rn=c(Pn,[["render",En]]),Mn=Pt(Tt),Fn="IMark",jn=p({name:Fn,inheritAttrs:!1,props:{text:{type:String,default:""},query:{type:String,default:""}},computed:{parts(){return Mn(this.text,this.query)}}}),Gn={key:0};function Zn(e,t,s,i,a,r){return o(),l("span",Bt(zt(e.$attrs)),[(o(!0),l(G,null,x(e.parts,({text:n,marked:$})=>(o(),l(G,null,[$?(o(),l("mark",Gn,F(n),1)):(o(),l(G,{key:1},[T(F(n),1)],64))],64))),256))],16)}const yt=c(jn,[["render",Zn]]),Kn="IMedia",Hn=p({name:Kn,inheritAttrs:!1}),Wn={class:"media-body"};function qn(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:"media"}),[d(e.$slots,"image"),f("div",Wn,[d(e.$slots,"default")])],16)}const Un=c(Hn,[["render",qn]]),S={instances:{},stack:[],zIndex:1050,register(e){e&&e.name&&(S.instances[e.name]=e)},unregister(e){e&&e.name&&(S.instances[e.name]=null,delete S.instances[e.name])},open(e){typeof window>"u"||(S.stack.push(e),S.instances[e].$el.style.zIndex=S.zIndex++)},close(e){typeof window>"u"||S.stack.splice(S.stack.indexOf(e),1)},getTopOverlay(){const e=S.stack.slice(-1)[0]||"";return S.instances[e]},onPressEscape(){const e=S.getTopOverlay();e&&e.closeOnPressEscape&&e.hide()}};typeof window<"u"&&window.addEventListener("keydown",e=>{v("esc",e)&&S.onPressEscape()});const we="IModal",Qn=p({name:we,directives:{ClickOutside:H},inheritAttrs:!1,props:{closeOnPressEscape:{type:Boolean,default:!0},closeAriaLabel:{type:String,default:"Close"},color:{type:String,default:u(we,"color")},disabled:{type:Boolean,default:!1},hideOnClickOutside:{type:Boolean,default:!0},name:{type:String,default(){return B("modal")}},showClose:{type:Boolean,default:!0},size:{type:String,default:u(we,"size"),validator:y},modelValue:{type:Boolean,default:!1},transition:{type:String,default:"zoom-in-center-transition"}},emits:["update:modelValue"],data(){return{visible:this.modelValue}},computed:{classes(){return{"-disabled":this.disabled,...g(this),[`-${this.size}`]:!!this.size}}},watch:{modelValue(e){e?this.show():this.hide()}},mounted(){S.register(this)},unmounted(){S.unregister(this)},methods:{show(){this.disabled||(this.visible=!0,this.$emit("update:modelValue",!0),S.open(this.name),typeof window<"u"&&Me(window.document.body,"-modal"))},hide(){this.disabled||(this.visible=!1,this.$emit("update:modelValue",!1),S.close(this.name),typeof window<"u"&&lt(window.document.body,"-modal"))},onClickOutside(){this.hideOnClickOutside&&this.hide()}}}),Jn=["aria-hidden","id","name","aria-labelledby"],Yn={class:"modal"},Xn=["id"],_n=["aria-label"],xn=f("i",{class:"icon"},null,-1),eo={key:1,class:"modal-body"},to={key:2,class:"modal-footer"};function so(e,t,s,i,a,r){const n=Z("click-outside");return o(),V(L,{name:"fade-in-transition"},{default:b(()=>[k(f("div",h(e.$attrs,{class:["modal-wrapper",e.classes],role:"dialog","aria-modal":"true","aria-hidden":e.visible?"false":"true",id:e.name,name:e.name,"aria-labelledby":`${e.name}-header`}),[I(L,{name:e.transition},{default:b(()=>[k((o(),l("div",Yn,[e.$slots.header?(o(),l("div",{key:0,class:"modal-header",id:`${e.name}-header`},[d(e.$slots,"header"),e.showClose?(o(),l("button",{key:0,class:"close","aria-hidden":"true","aria-label":e.closeAriaLabel,onClick:t[0]||(t[0]=(...$)=>e.hide&&e.hide(...$))},[d(e.$slots,"close",{},()=>[xn])],8,_n)):m("",!0)],8,Xn)):m("",!0),e.$slots.default?(o(),l("div",eo,[d(e.$slots,"default")])):m("",!0),e.$slots.footer?(o(),l("div",to,[d(e.$slots,"footer")])):m("",!0)])),[[n,e.onClickOutside],[C,e.visible]])]),_:3},8,["name"])],16,Jn),[[C,e.visible]])]),_:3})}const io=c(Qn,[["render",so]]),Ie="INav",ao=p({name:Ie,provide(){return{nav:this}},inject:{navbar:{default:()=>({onItemClick:()=>{}})},sidebar:{default:()=>({onItemClick:()=>{}})}},inheritAttrs:!1,props:{color:{type:String,default:u(Ie,"color")},size:{type:String,default:u(Ie,"size"),validator:y},vertical:{type:Boolean,default:!1}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-vertical":this.vertical}}},methods:{onItemClick(){[this.navbar,this.sidebar].forEach(e=>{e.onItemClick()})}}});function no(e,t,s,i,a,r){return o(),l("nav",h(e.$attrs,{class:["nav",e.classes],role:"menubar"}),[d(e.$slots,"default")],16)}const oo=c(ao,[["render",no]]),ro="INavItem",lo=p({name:ro,mixins:[K],inject:{nav:{default:()=>({onItemClick:()=>{}})}},inheritAttrs:!1,props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},stopPropagation:{type:Boolean,default:!1},tag:{type:String,default:"div"},tabindex:{type:[Number,String],default:0}},computed:{ariaDisabled(){return this.role==="link"?null:this.disabled?"true":"false"},classes(){return{"-active":this.active,"-disabled":this.disabled}},role(){return this.$attrs.to||this.$attrs.href?"link":"menuitem"},tabIndex(){return this.disabled?-1:this.tabindex}},methods:{onClick(e){this.stopPropagation||this.nav.onItemClick(this,e)}}});function uo(e,t,s,i,a,r){return o(),V(X(e.isTag),h(e.$attrs,{class:["nav-item",e.classes],role:e.role,tag:e.tag,tabindex:e.tabIndex,disabled:e.disabled,"aria-disabled":e.ariaDisabled,onClick:e.onClick}),{default:b(()=>[d(e.$slots,"default")]),_:3},16,["role","tag","tabindex","class","disabled","aria-disabled","onClick"])}const po=c(lo,[["render",uo]]),Ce="INavbar",co=p({name:Ce,components:{IContainer:Ke,IRow:He,IColumn:Ze,IHamburgerMenu:$t},directives:{ClickOutside:H},mixins:[pt],provide(){return{navbar:this}},inheritAttrs:!1,props:{collapseOnItemClick:{type:Boolean,default:!0},collapseOnClickOutside:{type:Boolean,default:!0},color:{type:String,default:u(Ce,"color")},fluid:{type:Boolean,default:!1},size:{type:String,default:u(Ce,"size"),validator:y},menuAnimation:{type:String,default:"close"}},emits:["update:modelValue"],computed:{classes(){return{...this.collapsibleClasses,...g(this),[`-${this.size}`]:!!this.size}}},methods:{onItemClick(){this.collapseOnItemClick&&this.open&&this.setOpen(!1)},onClickOutside(){this.collapseOnClickOutside&&this.open&&this.setOpen(!1)}}});function ho(e,t,s,i,a,r){const n=A("i-hamburger-menu"),$=A("i-column"),N=A("i-row"),W=A("i-container"),w=Z("click-outside");return k((o(),l("nav",h(e.$attrs,{class:["navbar",e.classes]}),[I(W,{fluid:e.fluid},{default:b(()=>[I(N,null,{default:b(()=>[I($,null,{default:b(()=>[I(n,{class:"collapse-toggle",animation:e.menuAnimation,color:e.color,modelValue:e.open,"onUpdate:modelValue":e.toggleOpen},null,8,["animation","color","modelValue","onUpdate:modelValue"]),d(e.$slots,"default")]),_:3})]),_:3})]),_:3},8,["fluid"])],16)),[[w,e.onClickOutside]])}const fo=c(co,[["render",ho]]),mo="INavbarBrand",$o=p({name:mo,mixins:[K],inheritAttrs:!1,props:{tag:{type:String,default:"div"}}});function bo(e,t,s,i,a,r){return o(),V(X(e.isTag),h(e.$attrs,{class:"navbar-brand",tag:e.tag,translate:"no"}),{default:b(()=>[d(e.$slots,"default")]),_:3},16,["tag"])}const yo=c($o,[["render",bo]]),go="INavbarCollapsible",vo=p({name:go,components:{IExpandTransition:mt},inject:{navbar:{default:()=>({})}},inheritAttrs:!1,computed:{visible(){const e=typeof window>"u";return this.navbar.open||!this.navbar.collapsible||e}}}),ko=["aria-hidden","aria-expanded"];function wo(e,t,s,i,a,r){const n=A("i-expand-transition");return o(),V(n,null,{default:b(()=>[k(f("div",h(e.$attrs,{class:"navbar-collapsible","aria-hidden":e.visible?"false":"true","aria-expanded":e.visible?"true":"false"}),[d(e.$slots,"default")],16,ko),[[C,e.visible]])]),_:3})}const Io=c(vo,[["render",wo]]),Se="IPagination",Co=p({name:Se,inheritAttrs:!1,props:{ariaLabel:{type:String,default:"Pagination"},color:{type:String,default:u(Se,"color")},itemsPerPage:{type:Number,default:20},itemsTotal:{type:Number,default:0},limit:{type:[Number,Object],default(){return{xs:3,sm:5}}},quickLink:{type:Boolean,default:!1},modelValue:{type:Number,default:1},size:{type:String,default:u(Se,"size"),validator:y}},emits:["update:modelValue"],data(){return{pageLimit:5}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}},pageCount(){return Math.ceil(this.itemsTotal/this.itemsPerPage)},showQuickPrevious(){return this.pageCount>this.pageLimit&&this.modelValue>this.pageLimit-(this.pageLimit-1)/2},showQuickNext(){return this.pageCount>this.pageLimit&&this.modelValue<this.pageCount-(this.pageLimit-1)/2},pages(){const e=[];if(this.showQuickPrevious&&!this.showQuickNext){const t=this.pageCount-(this.pageLimit-2);for(let s=t;s<this.pageCount;s++)e.push(s)}else if(!this.showQuickPrevious&&this.showQuickNext)for(let t=2;t<this.pageLimit;t++)e.push(t);else if(this.showQuickPrevious&&this.showQuickNext){const t=Math.floor(this.pageLimit/2)-1;for(let s=this.modelValue-t;s<=this.modelValue+t;s++)e.push(s)}else for(let t=2;t<this.pageCount;t++)e.push(t);return e}},created(){this.debouncedOnWindowResize=Vt(this.onWindowResize,250),typeof window<"u"&&(window.addEventListener("resize",this.debouncedOnWindowResize),this.onWindowResize())},unmounted(){typeof window<"u"&&window.removeEventListener("resize",this.debouncedOnWindowResize)},methods:{next(){this.modelValue!==this.pageCount&&this.onClick(this.modelValue+1)},quickNext(){if(!this.quickLink)return;const e=this.modelValue+(this.pageLimit-2);this.onClick(e>this.pageCount?this.pageCount:e)},previous(){this.modelValue!==1&&this.onClick(this.modelValue-1)},quickPrevious(){if(!this.quickLink)return;const e=this.modelValue-(this.pageLimit-2);this.onClick(e<1?1:e)},onClick(e){this.$emit("update:modelValue",e)},onWindowResize(){if(typeof this.limit=="number")return this.pageLimit=this.limit,this.pageLimit;for(const e of je.slice().reverse())if(this.limit.hasOwnProperty(e)&&typeof window<"u"&&window.innerWidth>=_[e][0])return this.pageLimit=this.limit[e],this.pageLimit}}}),So=["aria-label"],Bo={class:"pagination-items"},zo={"aria-hidden":"true"},Ao=["aria-current","onClick"],Vo={"aria-hidden":"true"};function No(e,t,s,i,a,r){return o(),l("nav",h(e.$attrs,{class:["pagination",e.classes],role:"navigation","aria-label":e.ariaLabel}),[f("ul",Bo,[e.pageCount>0?(o(),l("li",{key:0,class:z(["pagination-item -previous",{"-disabled":e.modelValue===1}]),onClick:t[0]||(t[0]=(...n)=>e.previous&&e.previous(...n))},[f("span",zo,[d(e.$slots,"previous",{},()=>[T("<")])])],2)):m("",!0),e.pageCount>0?(o(),l("li",{key:1,class:z(["pagination-item -first",{"-active":e.modelValue===1}]),onClick:t[1]||(t[1]=n=>e.onClick(1))}," 1 ",2)):m("",!0),e.showQuickPrevious?(o(),l("li",{key:2,class:z(["pagination-item -quick-previous",{"-disabled":!e.quickLink}]),onClick:t[2]||(t[2]=(...n)=>e.quickPrevious&&e.quickPrevious(...n))}," … ",2)):m("",!0),(o(!0),l(G,null,x(e.pages,n=>(o(),l("li",{class:z(["pagination-item",{"-active":e.modelValue===n}]),"aria-current":e.modelValue===n?"page":!1,onClick:$=>e.onClick(n)},F(n),11,Ao))),256)),e.showQuickNext?(o(),l("li",{key:3,class:z(["pagination-item -quick-next",{"-disabled":!e.quickLink}]),onClick:t[3]||(t[3]=(...n)=>e.quickNext&&e.quickNext(...n))}," … ",2)):m("",!0),e.pageCount>1?(o(),l("li",{key:4,class:z(["pagination-item -last",{"-active":e.modelValue===e.pageCount}]),onClick:t[4]||(t[4]=n=>e.onClick(e.pageCount))},F(e.pageCount),3)):m("",!0),e.pageCount>0?(o(),l("li",{key:5,class:z(["pagination-item -next",{"-disabled":e.modelValue===e.pageCount}]),onClick:t[5]||(t[5]=(...n)=>e.next&&e.next(...n))},[f("span",Vo,[d(e.$slots,"next",{},()=>[T(">")])])],2)):m("",!0)])],16,So)}const Oo=c(Co,[["render",No]]),Be="IPopover",Lo=p({name:Be,directives:{ClickOutside:H},mixins:[ee,Ge],inheritAttrs:!1,props:{color:{type:String,default:u(Be,"color")},disabled:{type:Boolean,default:!1},modelValue:{type:Boolean,default:!1},name:{type:String,default(){return B("popover")}},arrow:{type:Boolean,default:!0},placement:{type:String,default:"top"},trigger:{type:[String,Array],default:()=>["click"]},offset:{type:Number,default:6},interactable:{type:Boolean,default:!1},popperOptions:{type:Object,default:()=>({})},size:{type:String,default:u(Be,"size"),validator:y}},emits:["click-outside","update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}},methods:{onEscape(){this.visible=!1,this.$emit("update:modelValue",!1)},handleClickOutside(e){this.visible=!1,this.$emit("update:modelValue",!1),this.onClickOutside(e)}}}),Do=["id"],To=["aria-describedby","aria-disabled","aria-expanded"],Po=["id","aria-hidden"],Eo={key:0,"data-popper-arrow":""},Ro={key:1,class:"popover-header"},Mo={key:2,class:"popover-body"},Fo={key:3,class:"popover-footer"};function jo(e,t,s,i,a,r){const n=Z("click-outside");return k((o(),l("div",h(e.$attrs,{class:["popover-wrapper",e.classes],ref:"wrapper",id:e.name,onKeyup:t[0]||(t[0]=M((...$)=>e.onEscape&&e.onEscape(...$),["esc"]))}),[f("div",{class:"popover-trigger",ref:"trigger","aria-describedby":`${e.name}-popup`,"aria-disabled":e.disabled?"true":"false","aria-expanded":e.visible?"true":"false"},[d(e.$slots,"default")],8,To),I(L,{name:"zoom-in-top-transition",onAfterLeave:e.destroyPopper},{default:b(()=>[k(f("div",{class:"popover",ref:"popup",role:"tooltip","aria-live":"polite",id:`${e.name}-popup`,"aria-hidden":e.visible?"false":"true"},[e.arrow?(o(),l("span",Eo)):m("",!0),e.$slots.header?(o(),l("div",Ro,[d(e.$slots,"header")])):m("",!0),e.$slots.body?(o(),l("div",Mo,[d(e.$slots,"body")])):m("",!0),e.$slots.footer?(o(),l("div",Fo,[d(e.$slots,"footer")])):m("",!0)],8,Po),[[C,e.visible]])]),_:3},8,["onAfterLeave"])],16,Do)),[[n,e.onClickOutside]])}const Go=c(Lo,[["render",jo]]),ze="IProgress",Zo=p({name:ze,provide(){return{progress:this}},inheritAttrs:!1,props:{color:{type:String,default:u(ze,"color")},min:{type:[String,Number],default:0},max:{type:[String,Number],default:100},size:{type:String,default:u(ze,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}}});function Ko(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["progress",e.classes]}),[d(e.$slots,"default")],16)}const Ho=c(Zo,[["render",Ko]]),xe="IProgressBar",Wo=p({name:xe,inject:{progress:{default:()=>({min:0,max:100})}},inheritAttrs:!1,props:{color:{type:String,default:u(xe,"color","primary")},value:{type:[String,Number],default:0}},computed:{computedValue(){const e=typeof this.min=="string"?parseFloat(this.min):this.min,t=typeof this.value=="string"?parseFloat(this.value.replace("%","")):this.value,s=typeof this.max=="string"?parseFloat(this.max):this.max;return(t-e)*100/(s-e)},min(){return this.progress.min},max(){return this.progress.max},style(){return{width:`${this.computedValue}%`}},classes(){return{...g(this)}}}}),qo=["aria-valuemin","aria-valuemax","aria-valuenow"];function Uo(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["progress-bar",e.classes],style:e.style,role:"progressbar","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-valuenow":e.computedValue}),[d(e.$slots,"default")],16,qo)}const Qo=c(Wo,[["render",Uo]]),Ae="IRadio",Jo=p({name:Ae,mixins:[R],inheritAttrs:!1,props:{color:{type:String,default:u(Ae,"color")},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},value:{default:""},modelValue:{default:!1},name:{type:[String,Number],default(){return B("radio")}},native:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},size:{type:String,default:u(Ae,"size"),validator:y},tabindex:{type:[Number,String],default:0}},emits:["update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-native":this.native}},checked(){return this.formGroup.checked===this.value},tabIndex(){return this.isDisabled?-1:this.tabindex}},methods:{clickInputRef(){this.isReadonly||this.$refs.input.click()},onChange(e){var t,s,i,a;(s=(t=this.parent).onInput)==null||s.call(t,this.name,e.target.checked),(a=(i=this.formGroup).onChange)==null||a.call(i,this.value),this.$emit("update:modelValue",e.target.checked)},onBlur(e){var t,s;(s=(t=this.parent).onBlur)==null||s.call(t,this.name,e)}}}),Yo=["checked","name","disabled","readonly",".indeterminate"],Xo=["aria-checked","aria-disabled","aria-readonly","tabindex"];function _o(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["radio",e.classes],role:"radio"}),[f("input",{checked:e.checked,ref:"input",type:"radio",tabindex:"-1",name:e.name,disabled:e.isDisabled,readonly:e.isReadonly,".indeterminate":e.indeterminate,onChange:t[0]||(t[0]=(...n)=>e.onChange&&e.onChange(...n))},null,40,Yo),f("label",{class:"radio-label","aria-checked":e.checked,"aria-disabled":e.isDisabled,"aria-readonly":e.isReadonly,tabindex:e.tabIndex,onBlur:t[1]||(t[1]=(...n)=>e.onBlur&&e.onBlur(...n)),onClick:t[2]||(t[2]=(...n)=>e.clickInputRef&&e.clickInputRef(...n)),onKeydown:t[3]||(t[3]=M(Y((...n)=>e.clickInputRef&&e.clickInputRef(...n),["stop","prevent"]),["space"]))},[d(e.$slots,"default")],40,Xo)],16)}const xo=c(Jo,[["render",_o]]),Ve="IRadioGroup",er=p({name:Ve,mixins:[R],provide(){return{formGroup:this}},inheritAttrs:!1,props:{color:{type:String,default:u(Ve,"color")},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},modelValue:{default:""},name:{type:[String,Number],default(){return B("radio-group")}},readonly:{type:Boolean,default:!1},size:{type:String,default:u(Ve,"size"),validator:y}},emits:["update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-inline":this.inline}},checked(){return this.schema?this.schema.value:this.modelValue}},methods:{onChange(e){var t,s;(s=(t=this.parent).onInput)==null||s.call(t,this.name,e),this.$emit("update:modelValue",e)}}}),tr=["name"];function sr(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["form-group radio-group",e.classes],name:e.name,role:"radiogroup"}),[d(e.$slots,"default",{},void 0,!0)],16,tr)}const ir=c(er,[["render",sr],["__scopeId","data-v-fa4fe77a"]]),ar="ISelectOption",nr=p({name:ar,inject:{select:{default:()=>({})}},inheritAttrs:!1,props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},label:{type:String,default:""},tabindex:{type:[Number,String],default:0},value:{type:[Object,String,Number],default:()=>({})}},computed:{ariaDisabled(){return this.disabled?"true":"false"},ariaSelected(){return this.active?"true":"false"},isActive(){return this.active||this.value===this.select.modelValue},classes(){return{"-active":this.isActive,"-disabled":this.disabled}},tabIndex(){return this.disabled?-1:this.tabindex}},methods:{onClick(){this.disabled||this.select.onInput(this.value,this.label)}}}),or=["tabindex","aria-disabled","aria-selected"];function rr(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["select-option",e.classes],role:"option",tabindex:e.tabIndex,"aria-disabled":e.ariaDisabled,"aria-selected":e.ariaSelected,onClick:t[0]||(t[0]=(...n)=>e.onClick&&e.onClick(...n))}),[d(e.$slots,"default",{},()=>[T(F(e.label),1)])],16,or)}const gt=c(nr,[["render",rr]]),Ne="ISelect",lr=p({name:Ne,directives:{ClickOutside:H},components:{IInput:te,IIcon:bt,ISelectOption:gt,IMark:yt},mixins:[R,ee],provide(){return{select:this}},props:{animationDuration:{type:Number,default:300},autocomplete:{type:Boolean,default:!1},arrow:{type:Boolean,default:!0},color:{type:String,default:u(Ne,"color")},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},idField:{type:String,default:"id"},keydownTrigger:{type:Array,default:()=>["up","down","enter","space","tab","esc"]},keydownItem:{type:Array,default:()=>["up","down","enter","space","tab","esc"]},label:{type:[String,Function],default:"label"},loading:{type:Boolean,default:!1},modelValue:{type:[Object,String,Number],default:null},minLength:{type:Number,default:0},name:{type:[String,Number],default:()=>B("select")},options:{type:Array,default:()=>[]},placeholder:{type:String,default:""},offset:{type:Number,default:6},placement:{type:String,default:"bottom"},popperOptions:{type:Object,default:()=>({modifiers:[...ct({offset:8}),Ns()]})},readonly:{type:Boolean,default:!1},scrollTolerance:{type:Number,default:160},selectFirstOptionOnEnter:{type:Boolean,default:!0},size:{type:String,default:u(Ne,"size"),validator:y},tabindex:{type:[Number,String],default:0},type:{type:String,default:"text"},total:{type:Number,default:void 0}},emits:["update:modelValue","search","pagination"],data(){return{animating:!1,visible:!1,inputValue:this.computeLabel(this.modelValue)||""}},computed:{wrapperClasses(){return{...g(this),[`-${this.size}`]:!!this.size}},popupClasses(){return{"-disabled":this.isDisabled,"-readonly":this.isReadonly}},tabIndex(){return this.isDisabled?-1:this.tabindex},isClearable(){return this.value&&this.clearable&&!this.isDisabled&&!this.isReadonly},value(){return this.schema?this.schema.value:this.modelValue},inputPlaceholder(){return this.value?this.computeLabel(this.value):this.placeholder}},watch:{value(e){this.inputValue=this.computeLabel(e)},inputValue(e){const t=this.inputMatchesLength(e),s=this.inputMatchesLabel(e);t&&!s&&!this.animating&&this.show(),this.$emit("search",this.inputValue)},options(){this.visible&&this.createPopper()}},methods:{onInput(e,t){var s,i;e.disabled||(this.hide(),t&&(this.inputValue=t),(i=(s=this.parent).onInput)==null||i.call(s,this.name,e),this.$emit("update:modelValue",e))},onClear(){this.animating=!0,this.$emit("update:modelValue",null),this.$nextTick(()=>{this.animating=!1})},onFocus(e){if(!this.value&&this.options.length===0)return;this.autocomplete&&(this.inputValue=""),(!e.relatedTarget||!this.$refs.wrapper.contains(e.relatedTarget))&&this.inputShouldShowSelect(this.inputValue)&&this.show()},onBlur(e){var s,i;(!e.relatedTarget||!this.$refs.wrapper.contains(e.relatedTarget))&&(this.hide(),this.inputValue=this.computeLabel(this.value)),(i=(s=this.parent).onBlur)==null||i.call(s,this.name,e)},onClick(){this.autocomplete&&(this.inputValue=""),this.inputShouldShowSelect(this.inputValue)&&this.show()},onClickOutside(){this.hide()},onClickCaret(e){this.visible?this.onBlur(e):(this.focus(),this.onFocus(e)),e.preventDefault(),e.stopPropagation()},onScroll(){if(isNaN(this.total))return;const e=this.$refs.body.scrollTop,t=parseInt(getComputedStyle(this.$refs.body).height,10),s=parseInt(getComputedStyle(this.$refs.options).height,10),i=e+t>s-this.scrollTolerance,a=this.options.length>=this.total;i&&!a&&this.options.length>0&&!this.loading&&this.$emit("pagination")},onWindowResize(){this.onScroll(),this.visible&&this.$nextTick().then(()=>this.createPopper())},onTriggerKeyDown(e){if(this.keydownTrigger.length===0)return;const t=this.getFocusableItems(),s=t.findIndex(r=>r.active),i=s>-1?s:0,a=t[i];switch(!0){case(v("up",e)&&this.keydownTrigger.includes("up")):case(v("down",e)&&this.keydownTrigger.includes("down")):this.show(),setTimeout(()=>{a.focus()},this.visible?0:this.animationDuration),e.preventDefault(),e.stopPropagation();break;case(v("enter",e)&&this.keydownTrigger.includes("enter")):if(this.selectFirstOptionOnEnter&&(!this.value||!this.inputMatchesLabel(this.inputValue))){const r=this.options.find(n=>!n.disabled);r&&(this.onInput(r),this.focus())}else this.onClick();this.visible||setTimeout(()=>{a.focus()},this.animationDuration),e.preventDefault();break;case(v("tab",e)&&this.keydownTrigger.includes("tab")):case(v("esc",e)&&this.keydownTrigger.includes("esc")):this.hide();break}},onItemKeyDown(e){if(this.keydownItem.length!==0)switch(!0){case(v("up",e)&&this.keydownItem.includes("up")):case(v("down",e)&&this.keydownItem.includes("down")):const t=this.getFocusableItems(),s=t.findIndex(r=>r===e.target),i=t.length-1;let a;v("up",e)?a=s>0?s-1:0:a=s<i?s+1:i,t[a].focus(),e.preventDefault(),e.stopPropagation();break;case(v("enter",e)&&this.keydownItem.includes("enter")):case(v("space",e)&&this.keydownItem.includes("space")):e.target.click(),this.focus(),e.preventDefault();break;case(v("tab",e)&&this.keydownItem.includes("tab")):case(v("esc",e)&&this.keydownItem.includes("esc")):this.hide(),this.focus(),e.preventDefault();break}},onEscape(){this.hide()},show(){this.isDisabled||this.isReadonly||this.visible||(this.visible=!0,this.createPopper())},hide(){this.visible&&(this.visible=!1,this.animating=!0,setTimeout(()=>{this.animating=!1},this.animationDuration))},focus(){this.$refs.trigger.focus()},getFocusableItems(){const e=[];for(const t of this.$refs.options.children)Fe(t)&&e.push(t);return e},getElementHeight(e){const t=getComputedStyle(e);return t.height?Math.ceil(parseFloat(t.height)):NaN},inputMatchesLabel(e){return this.value&&e===this.computeLabel(this.value)},inputMatchesLength(e){return this.minLength===0||e&&e.length>=this.minLength},inputShouldShowSelect(e){return this.autocomplete?this.inputMatchesLength(e)&&!this.inputMatchesLabel(e):!0},computeLabel(e){return typeof e!="object"?this.inputValue:nt(this.label)?this.label(e):j(e,this.label)}}}),dr=["id","name","aria-owns","aria-expanded"],ur=["id","aria-hidden"],pr={key:0,"data-popper-arrow":""},cr={key:1,class:"select-header"},hr={key:0,class:"select-no-results"},fr={class:"select-options",ref:"options"},mr={key:2,class:"select-footer"};function $r(e,t,s,i,a,r){const n=A("i-input"),$=A("i-mark"),N=A("i-select-option"),W=Z("click-outside");return k((o(),l("div",h(e.$attrs,{class:["select-wrapper",e.wrapperClasses],id:e.name,name:e.name,ref:"wrapper",role:"combobox","aria-haspopup":"listbox","aria-owns":`${e.name}-options`,"aria-expanded":e.visible?"true":"false",onKeyup:t[3]||(t[3]=M((...w)=>e.onEscape&&e.onEscape(...w),["esc"]))}),[I(n,{modelValue:e.inputValue,"onUpdate:modelValue":t[1]||(t[1]=w=>e.inputValue=w),ref:"trigger",autocomplete:"off","aria-autocomplete":"both","aria-controls":`${e.name}-options`,disabled:e.isDisabled,readonly:e.isReadonly,tabindex:e.tabIndex,plaintext:!e.autocomplete,placeholder:e.inputPlaceholder,clearable:e.isClearable,color:e.color,size:e.size,name:`${e.name}-input`,onClick:e.onClick,onFocus:e.onFocus,onBlur:e.onBlur,onClear:e.onClear,onKeydown:e.onTriggerKeyDown},At({suffix:b(()=>[d(e.$slots,"suffix"),f("button",{class:"select-caret","aria-hidden":"true",role:"button",onClick:t[0]||(t[0]=(...w)=>e.onClickCaret&&e.onClickCaret(...w))})]),_:2},[e.$slots.prepend?{name:"prepend",fn:b(()=>[d(e.$slots,"prepend")]),key:"0"}:void 0,e.$slots.prefix?{name:"prefix",fn:b(()=>[d(e.$slots,"prefix")]),key:"1"}:void 0,e.$slots.append?{name:"append",fn:b(()=>[d(e.$slots,"append")]),key:"2"}:void 0]),1032,["modelValue","aria-controls","disabled","readonly","tabindex","plaintext","placeholder","clearable","color","size","name","onClick","onFocus","onBlur","onClear","onKeydown"]),I(L,{name:"zoom-in-top-transition",onAfterLeave:e.destroyPopper},{default:b(()=>[k(f("div",{class:z(["select",e.popupClasses]),id:`${e.name}-options`,role:"listbox",ref:"popup","aria-hidden":e.visible?"false":"true"},[e.arrow?(o(),l("span",pr)):m("",!0),e.$slots.header?(o(),l("div",cr,[d(e.$slots,"header")])):m("",!0),f("div",{class:"select-body",ref:"body",onScroll:t[2]||(t[2]=(...w)=>e.onScroll&&e.onScroll(...w))},[!e.$slots.default&&e.options.length===0?(o(),l("div",hr,[d(e.$slots,"no-results",{},()=>[T(" There are no results for your query. ")])])):m("",!0),f("div",fr,[d(e.$slots,"default"),(o(!0),l(G,null,x(e.options,w=>(o(),V(N,{key:w[e.idField],active:e.value&&e.value[e.idField]===w[e.idField],disabled:w.disabled,value:w,onKeydown:e.onItemKeyDown},{default:b(()=>[d(e.$slots,"option",{option:w},()=>[e.autocomplete&&e.inputValue!==e.computeLabel(w)?(o(),V($,{key:0,text:e.computeLabel(w),query:e.inputValue},null,8,["text","query"])):(o(),l(G,{key:1},[T(F(e.computeLabel(w)),1)],64))])]),_:2},1032,["active","disabled","value","onKeydown"]))),128))],512)],544),e.$slots.footer?(o(),l("div",mr,[d(e.$slots,"footer")])):m("",!0)],10,ur),[[C,e.visible]])]),_:3},8,["onAfterLeave"])],16,dr)),[[W,e.onClickOutside]])}const br=c(lr,[["render",$r]]),Oe="ISidebar",yr=p({name:Oe,mixins:[pt],provide(){return{sidebar:this}},inheritAttrs:!1,props:{ariaLabel:{type:String,default:"Sidebar"},collapseOnItemClick:{type:Boolean,default:!0},collapseOnClickOutside:{type:Boolean,default:!0},collapsePosition:{type:String,default:"absolute"},color:{type:String,default:u(Oe,"color")},placement:{type:String,default:"left"},size:{type:String,default:u(Oe,"size"),validator:y}},emits:["update:modelValue"],computed:{classes(){return{...this.collapsibleClasses,...g(this),[`-${this.size}`]:!!this.size,[`-collapse-${this.collapsePosition}`]:!0,[`-placement-${this.placement}`]:!0}},sidebarWrapperTransition(){return this.collapsePosition!=="relative"?"sidebar-wrapper-none-transition":"sidebar-wrapper-transition"},sidebarTransition(){return this.collapsePosition!=="relative"?"sidebar-transition":"sidebar-none-transition"}},methods:{onItemClick(){this.collapseOnItemClick&&this.open&&this.setOpen(!1)},onOverlayClick(){this.collapseOnClickOutside&&this.open&&this.setOpen(!1)}}}),gr=["aria-label"],vr={class:"sidebar"},kr={class:"sidebar-content"};function wr(e,t,s,i,a,r){return o(),V(L,{name:e.sidebarWrapperTransition},{default:b(()=>[k(f("aside",h(e.$attrs,{role:"complementary",class:["sidebar-wrapper",e.classes],"aria-label":e.ariaLabel,ref:"wrapper"}),[I(L,{name:e.sidebarTransition},{default:b(()=>[k(f("div",vr,[f("div",kr,[d(e.$slots,"default")])],512),[[C,e.collapsePosition==="relative"||e.open||!e.collapsible]])]),_:3},8,["name"]),I(L,{name:"sidebar-overlay-transition"},{default:b(()=>[e.collapsePosition!=="relative"?k((o(),l("div",{key:0,class:"sidebar-overlay",onClick:t[0]||(t[0]=(...n)=>e.onOverlayClick&&e.onOverlayClick(...n))},null,512)),[[C,e.open]]):m("",!0)]),_:1})],16,gr),[[C,e.open||!e.collapsible]])]),_:3},8,["name"])}const Ir=c(yr,[["render",wr]]),et="ITable",Cr=p({name:et,inheritAttrs:!1,props:{border:{type:Boolean,default:!1},condensed:{type:Boolean,default:!1},striped:{type:Boolean,default:!1},hover:{type:Boolean,default:!1},responsive:{type:[Boolean,String],default:!0},nowrap:{type:Boolean,default:!1},color:{type:String,default:u(et,"color")}},computed:{classes(){return{...g(this),"-border":this.border,"-condensed":this.condensed,"-striped":this.striped,"-hover":this.hover,"-nowrap":this.nowrap,[`-responsive${typeof this.responsive=="boolean"?"":`-${this.responsive}`}`]:!!this.responsive}}}}),Sr={class:"table"};function Br(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["table-wrapper",e.classes]}),[f("table",Sr,[d(e.$slots,"default")])],16)}const zr=c(Cr,[["render",Br]]),Le="ITabs",Ar=p({name:Le,provide(){return{tabs:this}},inheritAttrs:!1,props:{color:{type:String,default:u(Le,"color")},modelValue:{type:String,default:""},size:{type:String,default:u(Le,"size"),validator:y},stretch:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{active:this.modelValue,tabs:[]}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-stretch":this.stretch}}},watch:{modelValue(e){this.active=e}},methods:{setActive(e){this.active=e,this.$emit("update:modelValue",this.active)}}}),Vr={class:"tabs-header"};function Nr(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["tabs",e.classes],role:"tablist","aria-multiselectable":"true"}),[f("div",Vr,[d(e.$slots,"header")]),d(e.$slots,"default")],16)}const Or=c(Ar,[["render",Nr]]),Lr="ITab",Dr=p({name:Lr,inject:{tabs:{default:()=>({})}},props:{title:{type:String,default:""},name:{type:String,default(){return B("tab")}}},computed:{active(){return this.tabs.active===this.name},classes(){return{"-active":this.active}}}}),Tr=["name","aria-hidden","aria-labelledby"],Pr={class:"tab-body"};function Er(e,t,s,i,a,r){return k((o(),l("div",{class:z(["tab",e.classes]),role:"tabpanel",name:e.name,"aria-hidden":!e.active,"aria-labelledby":`tab-heading-${e.name}`},[f("div",Pr,[d(e.$slots,"default")])],10,Tr)),[[C,e.active]])}const Rr=c(Dr,[["render",Er]]),Mr="ITabTitle",Fr=p({name:Mr,inject:{tabs:{default:()=>({})}},props:{for:{type:String,default(){return B("tab")}}},computed:{active(){return this.tabs.active===this.for},classes(){return{"-active":this.active}},name(){return this.for}},methods:{onClick(){this.tabs.setActive(this.for)}}}),jr=["for","active","aria-expanded","aria-controls","aria-describedby"];function Gr(e,t,s,i,a,r){return o(),l("div",{class:z(["tab-title",e.classes]),role:"tab",for:e.name,active:e.active,"aria-expanded":e.active,"aria-controls":`tab-content-${e.name}`,"aria-describedby":`tab-content-${e.name}`,tabindex:"0",onClick:t[0]||(t[0]=(...n)=>e.onClick&&e.onClick(...n))},[d(e.$slots,"default")],10,jr)}const Zr=c(Fr,[["render",Gr]]),De="IToggle",Kr=p({name:De,mixins:[R],inheritAttrs:!1,props:{color:{type:String,default:u(De,"color")},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},value:{default:!1},modelValue:{default:!1},name:{type:[String,Number],default(){return B("toggle")}},readonly:{type:Boolean,default:!1},size:{type:String,default:u(De,"size"),validator:y},tabindex:{type:[Number,String],default:0}},emits:["update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly}},checked(){return this.schema?this.schema.value:this.modelValue},tabIndex(){return this.isDisabled?-1:this.tabindex}},methods:{clickInputRef(){this.isReadonly||this.$refs.input.click()},onChange(e){var t,s;(s=(t=this.parent).onInput)==null||s.call(t,this.name,e.target.checked),this.$emit("update:modelValue",e.target.checked)},onBlur(e){var t,s;(s=(t=this.parent).onBlur)==null||s.call(t,this.name,e)}}}),Hr=["checked","disabled","readonly","aria-checked","aria-disabled","aria-readonly","name"],Wr=["aria-checked","aria-disabled","aria-readonly","tabindex"];function qr(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["toggle",e.classes]}),[f("input",{ref:"input",type:"checkbox",checked:e.checked,disabled:e.isDisabled,readonly:e.isReadonly,"aria-checked":e.checked,"aria-disabled":e.isDisabled,"aria-readonly":e.isReadonly,name:e.name,onChange:t[0]||(t[0]=(...n)=>e.onChange&&e.onChange(...n))},null,40,Hr),f("label",{class:"toggle-label","aria-checked":e.checked,"aria-disabled":e.isDisabled,"aria-readonly":e.isReadonly,tabindex:e.tabIndex,onClick:t[1]||(t[1]=(...n)=>e.clickInputRef&&e.clickInputRef(...n)),onBlur:t[2]||(t[2]=(...n)=>e.onBlur&&e.onBlur(...n)),onKeydown:t[3]||(t[3]=M(Y((...n)=>e.clickInputRef&&e.clickInputRef(...n),["stop","prevent"]),["space"]))},[d(e.$slots,"default")],40,Wr)],16)}const Ur=c(Kr,[["render",qr]]),Te="ITooltip",Qr=p({name:Te,directives:{ClickOutside:H},mixins:[ee,Ge],inheritAttrs:!1,props:{color:{type:String,default:u(Te,"color")},disabled:{type:Boolean,default:!1},modelValue:{type:Boolean,default:!1},name:{type:String,default(){return B("tooltip")}},arrow:{type:Boolean,default:!0},placement:{type:String,default:"top"},trigger:{type:[String,Array],default:()=>["hover","focus"]},offset:{type:Number,default:6},interactable:{type:Boolean,default:!1},popperOptions:{type:Object,default:()=>({})},size:{type:String,default:u(Te,"size"),validator:y}},emits:["click-outside","update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}},methods:{onEscape(){this.visible=!1,this.$emit("update:modelValue",!1)},handleClickOutside(e){this.visible=!1,this.$emit("update:modelValue",!1),this.onClickOutside(e)}}}),Jr=["id"],Yr=["aria-describedby","aria-disabled","aria-expanded"],Xr=["id","aria-hidden"],_r={key:0,"data-popper-arrow":""};function xr(e,t,s,i,a,r){const n=Z("click-outside");return k((o(),l("div",h(e.$attrs,{class:["tooltip-wrapper",e.classes],ref:"wrapper",id:e.name,onKeyup:t[0]||(t[0]=M((...$)=>e.onEscape&&e.onEscape(...$),["esc"]))}),[f("div",{class:"tooltip-trigger",ref:"trigger","aria-describedby":`${e.name}-popup`,"aria-disabled":e.disabled?"true":"false","aria-expanded":e.visible?"true":"false"},[d(e.$slots,"default")],8,Yr),I(L,{name:"zoom-in-top-transition",onAfterLeave:e.destroyPopper},{default:b(()=>[k(f("div",{class:"tooltip",ref:"popup",role:"tooltip","aria-live":"polite",id:`${e.name}-popup`,"aria-hidden":e.visible?"false":"true"},[e.arrow?(o(),l("span",_r)):m("",!0),d(e.$slots,"body")],8,Xr),[[C,e.visible]])]),_:3},8,["onAfterLeave"])],16,Jr)),[[n,e.onClickOutside]])}const el=c(Qr,[["render",xr]]),il=Object.freeze(Object.defineProperty({__proto__:null,IAlert:Es,IBadge:Fs,IBreadcrumb:Ks,IBreadcrumbItem:Qs,IButton:ft,IButtonGroup:ni,ICard:bi,ICheckbox:Ii,ICheckboxGroup:zi,ICollapsible:Ni,ICollapsibleItem:Gi,IColumn:Ze,IContainer:Ke,IDropdown:Xi,IDropdownDivider:ta,IDropdownItem:na,IForm:da,IFormError:ya,IFormGroup:ha,IFormLabel:wa,IHamburgerMenu:$t,IHeader:La,IIcon:bt,IInput:te,ILayout:hn,ILayoutAside:yn,ILayoutContent:wn,ILayoutFooter:Bn,ILayoutHeader:Nn,IListGroup:Dn,IListGroupItem:Rn,ILoader:ht,IMark:yt,IMedia:Un,IModal:io,INav:oo,INavItem:po,INavbar:fo,INavbarBrand:yo,INavbarCollapsible:Io,INumberInput:xa,IPagination:Oo,IPopover:Go,IProgress:Ho,IProgressBar:Qo,IRadio:xo,IRadioGroup:ir,IRow:He,ISelect:br,ISelectOption:gt,ISidebar:Ir,ITab:Rr,ITabTitle:Zr,ITable:zr,ITabs:Or,ITextarea:dn,IToggle:Ur,ITooltip:el},Symbol.toStringTag,{value:"Module"}));export{sl as I,c as _,il as c};
diff --git a/packages/modules/display_themes/cards/web/assets/vendor-inkline-B7Agb5gs.css b/packages/modules/display_themes/cards/web/assets/vendor-inkline-BDgt6n8h.css
similarity index 62%
rename from packages/modules/display_themes/cards/web/assets/vendor-inkline-B7Agb5gs.css
rename to packages/modules/display_themes/cards/web/assets/vendor-inkline-BDgt6n8h.css
index 6e9428e3a7..602cf2e6a0 100644
--- a/packages/modules/display_themes/cards/web/assets/vendor-inkline-B7Agb5gs.css
+++ b/packages/modules/display_themes/cards/web/assets/vendor-inkline-BDgt6n8h.css
@@ -1 +1 @@
-@charset "UTF-8";.alert{----background: var(--color--info);----border-top-color: var(--color--info-60);----border-right-color: var(--color--info-60);----border-bottom-color: var(--color--info-60);----border-left-color: var(--color--info-60);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-dark-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----code--color: var(----color);----code--background: var(--color--info-60);----dismiss--margin: var(----padding-right);----dismiss--padding: calc(var(----padding-top) / 2);----link--color: var(----color)}.alert.-info{----background: var(--color--info);----border-top-color: var(--color--info-60);----border-right-color: var(--color--info-60);----border-bottom-color: var(--color--info-60);----border-left-color: var(--color--info-60);----color: var(--contrast-color-for-dark-background);----code--background: var(--color--info-60)}.alert.-success{----background: var(--color--success);----border-top-color: var(--color--success-60);----border-right-color: var(--color--success-60);----border-bottom-color: var(--color--success-60);----border-left-color: var(--color--success-60);----color: var(--contrast-color-for-dark-background);----code--background: var(--color--success-60)}.alert.-warning{----background: var(--color--warning);----border-top-color: var(--color--warning-60);----border-right-color: var(--color--warning-60);----border-bottom-color: var(--color--warning-60);----border-left-color: var(--color--warning-60);----color: var(--contrast-color-for-light-background);----code--background: var(--color--warning-60)}.alert.-danger{----background: var(--color--danger);----border-top-color: var(--color--danger-60);----border-right-color: var(--color--danger-60);----border-bottom-color: var(--color--danger-60);----border-left-color: var(--color--danger-60);----color: var(--contrast-color-for-dark-background);----code--background: var(--color--danger-60)}.alert.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.alert.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.alert.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.alert{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;word-wrap:break-word;border-style:var(----border-style);border-width:var(----border-width);border-color:var(----border-color);border-radius:var(----border-radius);font-size:var(----font-size);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);background:var(----background);background-clip:border-box;color:var(----color);-webkit-transition-property:background-color,color,border-color;transition-property:background-color,color,border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-box-align:center;-ms-flex-align:center;align-items:center}.alert a{color:var(----link--color);font-weight:600;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:var(----transition-duration);transition-duration:var(----transition-duration);-webkit-transition-timing-function:var(----transition-easing);transition-timing-function:var(----transition-easing)}.alert a:hover,.alert a:focus{color:var(----link--color)}.alert code{background:var(----code--background);color:var(----code--color)}.alert>.title{margin-bottom:var(--spacing)}.alert>.content{padding:var(----padding)}.alert>.icon{padding-left:var(----padding-left);padding-right:var(----padding-right);border-color:var(----border-color);-webkit-box-flex:1;-ms-flex:1;flex:1}.alert>.link+.link{margin-left:var(--spacing)}.alert>.dismiss{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;cursor:pointer;display:inline-block;text-align:center;padding:var(----dismiss--padding);margin-right:var(----dismiss--margin);margin-left:var(----dismiss--margin)}.alert,.alert>.content{-webkit-box-flex:0;-ms-flex:0 1 100%;flex:0 1 100%}.alert>hr,.alert>.content>hr{margin-right:0;margin-left:0}.alert>*:first-child,.alert>.content>*:first-child{margin-top:0}.alert>*:last-child,.alert>.content>*:last-child{margin-bottom:0}.alert.-dismissible>.content{padding-right:0}.alert.-with-icon>.content{padding-left:0}.badge{----background: var(--color--light);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----color: var(--contrast-color-for-light-background);----font-size: 75%;----font-weight: var(--font-weight--bold);----line-height: var(--line-height);----padding-top: calc(var(--padding-top) / 2);----padding-right: calc(var(--padding-right) / 2);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: calc(var(--padding-left) / 2);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----link--background--hover: var(--color--light-60);----pill--border-radius: 10rem}.badge.-primary{----background: var(--color--primary);----border-top-color: var(--color--primary-55);----border-right-color: var(--color--primary-55);----border-bottom-color: var(--color--primary-55);----border-left-color: var(--color--primary-55);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--primary-60)}.badge.-secondary{----background: var(--color--secondary);----border-top-color: var(--color--secondary-55);----border-right-color: var(--color--secondary-55);----border-bottom-color: var(--color--secondary-55);----border-left-color: var(--color--secondary-55);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--secondary-60)}.badge.-light{----background: var(--color--light);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----color: var(--contrast-color-for-light-background);----link--background--hover: var(--color--light-60)}.badge.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-45);----border-right-color: var(--color--dark-45);----border-bottom-color: var(--color--dark-45);----border-left-color: var(--color--dark-45);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--dark-40)}.badge.-info{----background: var(--color--info);----border-top-color: var(--color--info-55);----border-right-color: var(--color--info-55);----border-bottom-color: var(--color--info-55);----border-left-color: var(--color--info-55);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--info-60)}.badge.-warning{----background: var(--color--warning);----border-top-color: var(--color--warning-55);----border-right-color: var(--color--warning-55);----border-bottom-color: var(--color--warning-55);----border-left-color: var(--color--warning-55);----color: var(--contrast-color-for-light-background);----link--background--hover: var(--color--warning-60)}.badge.-danger{----background: var(--color--danger);----border-top-color: var(--color--danger-55);----border-right-color: var(--color--danger-55);----border-bottom-color: var(--color--danger-55);----border-left-color: var(--color--danger-55);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--danger-60)}.badge.-success{----background: var(--color--success);----border-top-color: var(--color--success-55);----border-right-color: var(--color--success-55);----border-bottom-color: var(--color--success-55);----border-left-color: var(--color--success-55);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--success-60)}.badge.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(65% * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--sm))}.badge.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(75% * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--md))}.badge.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(85% * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--lg))}.badge{display:inline-block;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;background:var(----background);color:var(----color);border-style:var(----border-style);border-width:var(----border-width);border-color:var(----border-color);border-radius:var(----border-radius);font-size:var(----font-size);font-weight:var(----font-weight);padding:var(----padding);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}a:hover .badge,a:focus .badge{-webkit-text-decoration:none;text-decoration:none;----background: var(----link--background--hover)}.button .badge{position:relative;top:-1px}.badge.-pill{----border-radius: var(----pill--border-radius)}.breadcrumb{----color: var(--color--gray-90);----color--link: var(--color--primary);----color--active: var(--color--gray-70);----font-size: var(--font-size);----margin-bottom: var(--spacing);----padding-right: var(--padding-right);----padding-left: var(--padding-left)}.breadcrumb.-light{----color: var(--color--gray-90);----color--link: var(--color--primary);----color--active: var(--color--gray-70)}.breadcrumb.-dark{----color: var(--color--white);----color--link: var(--color--primary);----color--active: var(--color--gray-40)}.breadcrumb.-sm{----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.breadcrumb.-md{----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.breadcrumb.-lg{----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:var(----margin-bottom);font-size:var(----font-size)}.breadcrumb ol{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;list-style:none}.breadcrumb-item[data-v-28fa6b16]{margin-bottom:0;padding-left:var(----padding-left)}.breadcrumb-item a[data-v-28fa6b16]{color:var(----color)}.breadcrumb-item a[href][data-v-28fa6b16],.breadcrumb-item a[to][data-v-28fa6b16]{----color: var(----color--link)}.breadcrumb-item.-active a[data-v-28fa6b16]{----color: var(----color--active)}.breadcrumb-item+.breadcrumb-item[data-v-28fa6b16]:before{padding-right:var(----padding-right)}.breadcrumb-item>span[data-v-28fa6b16]{display:inline-block}.breadcrumb-item[data-v-28fa6b16]:first-child{padding-left:0}.breadcrumb-item+.breadcrumb-item[data-v-28fa6b16]:before{display:inline-block;content:"/"}.breadcrumb-item+.breadcrumb-item[data-v-28fa6b16]:hover:before{-webkit-text-decoration:underline;text-decoration:underline}.breadcrumb-item+.breadcrumb-item[data-v-28fa6b16]:hover:before{-webkit-text-decoration:none;text-decoration:none}.breadcrumb-item[data-v-28fa6b16] :not([href]):not([to]){-webkit-text-decoration:none;text-decoration:none}.breadcrumb-item [href][data-v-28fa6b16],.breadcrumb-item [to][data-v-28fa6b16]{cursor:pointer}.loader{----animation-duration: 1.2s;----size: 64px;----background: var(--color--primary)}.loader.-primary{----background: var(--color--primary)}.loader.-light{----background: var(--color--light)}.loader.-dark{----background: var(--color--dark)}.loader.-sm{----size: calc(64px * var(--size-multiplier--sm))}.loader.-md{----size: calc(64px * var(--size-multiplier--md))}.loader.-lg{----size: calc(64px * var(--size-multiplier--lg))}.loader{display:inline-block;position:relative;width:var(----size);height:var(----size)}.loader:before{content:"";display:block;padding-top:100%}.loader .loader-text,.loader>svg{position:absolute;height:100%;width:100%;top:0;left:0;right:0;bottom:0;margin:auto}.loader .loader-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.loader>svg{-webkit-animation:loader-rotate var(----animation-duration) linear infinite;animation:loader-rotate var(----animation-duration) linear infinite;-webkit-transform-origin:center center;transform-origin:center center}.loader>svg>circle{stroke:var(----background);stroke-dasharray:89,200;stroke-dashoffset:-35px;-webkit-animation:loader-dash var(----animation-duration) ease-in-out infinite;animation:loader-dash var(----animation-duration) ease-in-out infinite;stroke-linecap:round}.loader.-auto{width:100%;height:100%}@-webkit-keyframes loader-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loader-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes loader-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.button{----background: var(--color--light);----background--hover: var(--color--light-55);----background--active: var(--color--light-60);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-color--hover: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----padding-top: calc(var(--padding-top) / 2);----padding-right: var(--padding-right);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----block--margin: var(--spacing);----circle--size: 42px;----link--color: var(--color--light);----link--color--active: var(--color--light-55)}.button.-primary{----background: var(--color--primary);----background--hover: var(--color--primary-55);----background--active: var(--color--primary-60);----border-top-color: var(--color--primary-55);----border-right-color: var(--color--primary-55);----border-bottom-color: var(--color--primary-55);----border-left-color: var(--color--primary-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--primary);----link--color--active: var(--color--primary-55)}.button.-secondary{----background: var(--color--secondary);----background--hover: var(--color--secondary-55);----background--active: var(--color--secondary-60);----border-top-color: var(--color--secondary-55);----border-right-color: var(--color--secondary-55);----border-bottom-color: var(--color--secondary-55);----border-left-color: var(--color--secondary-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--secondary);----link--color--active: var(--color--secondary-55)}.button.-light{----background: var(--color--light);----background--hover: var(--color--light-55);----background--active: var(--color--light-60);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----color: var(--contrast-color-for-light-background);----link--color: var(--color--light);----link--color--active: var(--color--light-55)}.button.-dark{----background: var(--color--dark);----background--hover: var(--color--dark-45);----background--active: var(--color--dark-40);----border-top-color: var(--color--dark-45);----border-right-color: var(--color--dark-45);----border-bottom-color: var(--color--dark-45);----border-left-color: var(--color--dark-45);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--dark);----link--color--active: var(--color--dark-45)}.button.-info{----background: var(--color--info);----background--hover: var(--color--info-55);----background--active: var(--color--info-60);----border-top-color: var(--color--info-55);----border-right-color: var(--color--info-55);----border-bottom-color: var(--color--info-55);----border-left-color: var(--color--info-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--info);----link--color--active: var(--color--info-55)}.button.-success{----background: var(--color--success);----background--hover: var(--color--success-55);----background--active: var(--color--success-60);----border-top-color: var(--color--success-55);----border-right-color: var(--color--success-55);----border-bottom-color: var(--color--success-55);----border-left-color: var(--color--success-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--success);----link--color--active: var(--color--success-55)}.button.-warning{----background: var(--color--warning);----background--hover: var(--color--warning-55);----background--active: var(--color--warning-60);----border-top-color: var(--color--warning-55);----border-right-color: var(--color--warning-55);----border-bottom-color: var(--color--warning-55);----border-left-color: var(--color--warning-55);----color: var(--contrast-color-for-light-background);----link--color: var(--color--warning);----link--color--active: var(--color--warning-55)}.button.-danger{----background: var(--color--danger);----background--hover: var(--color--danger-55);----background--active: var(--color--danger-60);----border-top-color: var(--color--danger-55);----border-right-color: var(--color--danger-55);----border-bottom-color: var(--color--danger-55);----border-left-color: var(--color--danger-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--danger);----link--color--active: var(--color--danger-55)}.button.-facebook{----background: var(--color--facebook);----background--hover: var(--color--facebook-55);----background--active: var(--color--facebook-60);----border-top-color: var(--color--facebook-55);----border-right-color: var(--color--facebook-55);----border-bottom-color: var(--color--facebook-55);----border-left-color: var(--color--facebook-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--facebook);----link--color--active: var(--color--facebook-55)}.button.-google{----background: var(--color--google);----background--hover: var(--color--google-55);----background--active: var(--color--google-60);----border-top-color: var(--color--google-55);----border-right-color: var(--color--google-55);----border-bottom-color: var(--color--google-55);----border-left-color: var(--color--google-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--google);----link--color--active: var(--color--google-55)}.button.-twitter{----background: var(--color--twitter);----background--hover: var(--color--twitter-55);----background--active: var(--color--twitter-60);----border-top-color: var(--color--twitter-55);----border-right-color: var(--color--twitter-55);----border-bottom-color: var(--color--twitter-55);----border-left-color: var(--color--twitter-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--twitter);----link--color--active: var(--color--twitter-55)}.button.-github{----background: var(--color--github);----background--hover: var(--color--github-55);----background--active: var(--color--github-60);----border-top-color: var(--color--github-55);----border-right-color: var(--color--github-55);----border-bottom-color: var(--color--github-55);----border-left-color: var(--color--github-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--github);----link--color--active: var(--color--github-55)}.button.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----circle--size: calc(34px * var(--size-multiplier--sm))}.button.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----circle--size: calc(42px * var(--size-multiplier--md))}.button.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----circle--size: calc(49px * var(--size-multiplier--lg))}.button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-weight:var(----font-weight);font-size:var(----font-size);line-height:var(----line-height);text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-style:var(----border-style);border-width:var(----border-width);border-color:var(----border-color);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);padding:var(----padding);-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----color);background:var(----background)}.button:not(:disabled):not(.-disabled){cursor:pointer}.button:not(:disabled):not(.-disabled):hover,.button:not(:disabled):not(.-disabled):focus,.button:not(:disabled):not(.-disabled).-hovered,.button:not(:disabled):not(.-disabled).-focused{----background: var(----background--hover);----border-color: var(----border-color--hover);-webkit-text-decoration:none;text-decoration:none;color:var(----color);outline:0}.button:not(:disabled):not(.-disabled):active,.button:not(:disabled):not(.-disabled).-active{----background: var(----background--active)}.button.-disabled,.button:disabled{opacity:var(----opacity--disabled);-webkit-box-shadow:none;box-shadow:none}.button.-block{display:block;width:100%}.button.-block+.button.-block{margin-left:0;margin-top:var(----block--margin)}.button.-link{----color: var(----link--color);-webkit-box-shadow:none;box-shadow:none;background-color:transparent;border-color:transparent}.button.-link:not(:disabled):not(.-disabled):hover,.button.-link:not(:disabled):not(.-disabled):focus,.button.-link:not(:disabled):not(.-disabled):active,.button.-link:not(:disabled):not(.-disabled).-hovered,.button.-link:not(:disabled):not(.-disabled).-focused,.button.-link:not(:disabled):not(.-disabled).-active{----color: var(----link--color--active);background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;-webkit-text-decoration:underline;text-decoration:underline}.button.-link:disabled,.button.-link.-disabled{pointer-events:none}.button.-outline{background:transparent;color:var(----background);border-color:var(----background);----box-shadow: none}.button.-outline:not(:disabled):not(.-disabled):hover,.button.-outline:not(:disabled):not(.-disabled):focus,.button.-outline:not(:disabled):not(.-disabled):active,.button.-outline:not(:disabled):not(.-disabled).-hovered,.button.-outline:not(:disabled):not(.-disabled).-focused,.button.-outline:not(:disabled):not(.-disabled).-active{----border-color: var(----border-color--hover);background:var(----background);color:var(----color)}.button.-circle{----border-radius: 100%;width:var(----circle--size);height:var(----circle--size);padding:0}.button .loader{margin-top:calc(var(--spacing) * 1 / 4);margin-bottom:calc(var(--spacing) * 1 / 4);width:var(----font-size);height:var(----font-size)}.button .loader>svg>circle{stroke:var(----color)!important}.button-group:not(.-vertical)>.button:not(:first-child){----border-left-color: var(----background--hover)}.button-group.-vertical>.button:not(:first-child){----border-top-color: var(----background--hover)}a.button.-disabled,*:disabled a.button{pointer-events:none}input[type=submit].-block,input[type=reset].-block,input[type=button].-block{width:100%}.button-group{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box}.button-group .button{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;z-index:0;margin-right:0;font-size:var(----font-size);padding:var(----padding)}.button-group .button:hover,.button-group .button:focus,.button-group .button:active,.button-group .button.-active{z-index:1}.button-group .button.-circle{border-radius:100%;width:var(----circle--size);height:var(----circle--size);padding:0}.button-group>.button:first-child{margin-left:0}.button-group.-block{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:100%;flex-basis:100%}.button-group.-block>.button{-ms-flex-preferred-size:100%;flex-basis:100%}.button-group>.button,.button-group>.button-group>.button,.button-group>[class$=-wrapper] .button{border-radius:0}.button-group:not(.-vertical)>.button:last-child,.button-group:not(.-vertical)>[class$=-wrapper]:last-child>*>.button:last-child{border-top-right-radius:var(----border-top-right-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.button-group:not(.-vertical)>.button:first-child,.button-group:not(.-vertical)>[class$=-wrapper]:first-child>*>.button:first-child{border-top-left-radius:var(----border-top-left-radius);border-bottom-left-radius:var(----border-bottom-left-radius)}.button-group:not(.-vertical)>.button:not(:last-child),.button-group:not(.-vertical)>.button-group:not(:last-child) .button,.button-group:not(.-vertical)>[class$=-wrapper]:not(:last-child)>*>.button,.button-group:not(.-vertical)>.button-group:not(:last-child) [class$=-wrapper]>*>.button{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.button-group:not(.-vertical)>.button:not(:first-child),.button-group:not(.-vertical)>.button-group:not(:first-child) .button,.button-group:not(.-vertical)>[class$=-wrapper]:not(:first-child)>*>.button,.button-group:not(.-vertical)>.button-group:not(:first-child) [class$=-wrapper]>*>.button{border-top-left-radius:0;border-bottom-left-radius:0}.button-group.-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.button-group.-vertical .button,.button-group.-vertical .button-group,.button-group.-vertical [class$=-wrapper]{width:100%}.button-group.-vertical>.button:last-child,.button-group.-vertical>[class$=-wrapper]:last-child>*>.button:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.button-group.-vertical>.button:first-child,.button-group.-vertical>[class$=-wrapper]:first-child>*>.button:first-child{border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.button-group.-vertical>.button:not(:last-child),.button-group.-vertical>.button-group:not(:last-child) .button,.button-group.-vertical>[class$=-wrapper]:not(:last-child)>*>.button,.button-group.-vertical>.button-group:not(:last-child) [class$=-wrapper]>*>.button{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:0}.button-group.-vertical>.button:not(:first-child),.button-group.-vertical>.button-group:not(:first-child) .button,.button-group.-vertical>[class$=-wrapper]:not(:first-child)>*>.button,.button-group.-vertical>.button-group:not(:first-child) [class$=-wrapper]>*>.button{border-top-left-radius:0;border-top-right-radius:0}.col,.column{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;min-height:1px;position:relative;padding-left:calc(var(--gutter--xs) / 2);padding-right:calc(var(--gutter--xs) / 2)}@media screen and (min-width: 576px){.col,.column{padding-left:calc(var(--gutter--sm) / 2);padding-right:calc(var(--gutter--sm) / 2)}}@media screen and (min-width: 768px){.col,.column{padding-left:calc(var(--gutter--md) / 2);padding-right:calc(var(--gutter--md) / 2)}}@media screen and (min-width: 992px){.col,.column{padding-left:calc(var(--gutter--lg) / 2);padding-right:calc(var(--gutter--lg) / 2)}}@media screen and (min-width: 1200px){.col,.column{padding-left:calc(var(--gutter--xl) / 2);padding-right:calc(var(--gutter--xl) / 2)}}@media screen and (min-width: 1400px){.col,.column{padding-left:calc(var(--gutter--xxl) / 2);padding-right:calc(var(--gutter--xxl) / 2)}}.col.-xs,.col.-xs-auto,.column.-xs,.column.-xs-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs,.column.-xs{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-xs-auto,.column.-xs-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-xs,.column.-first-xs{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-xs,.column.-last-xs{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.col.-xs-1,.column.-xs-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-1,.column.-xs-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-xs-1,.column.-offset-xs-1{margin-left:8.3333333333%}.col.-push-xs-1,.column.-push-xs-1{left:8.3333333333%}.col.-pull-xs-1,.column.-pull-xs-1{right:8.3333333333%}.col.-xs-2,.column.-xs-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-2,.column.-xs-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-xs-2,.column.-offset-xs-2{margin-left:16.6666666667%}.col.-push-xs-2,.column.-push-xs-2{left:16.6666666667%}.col.-pull-xs-2,.column.-pull-xs-2{right:16.6666666667%}.col.-xs-3,.column.-xs-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-3,.column.-xs-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-xs-3,.column.-offset-xs-3{margin-left:25%}.col.-push-xs-3,.column.-push-xs-3{left:25%}.col.-pull-xs-3,.column.-pull-xs-3{right:25%}.col.-xs-4,.column.-xs-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-4,.column.-xs-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-xs-4,.column.-offset-xs-4{margin-left:33.3333333333%}.col.-push-xs-4,.column.-push-xs-4{left:33.3333333333%}.col.-pull-xs-4,.column.-pull-xs-4{right:33.3333333333%}.col.-xs-5,.column.-xs-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-5,.column.-xs-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-xs-5,.column.-offset-xs-5{margin-left:41.6666666667%}.col.-push-xs-5,.column.-push-xs-5{left:41.6666666667%}.col.-pull-xs-5,.column.-pull-xs-5{right:41.6666666667%}.col.-xs-6,.column.-xs-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-6,.column.-xs-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-xs-6,.column.-offset-xs-6{margin-left:50%}.col.-push-xs-6,.column.-push-xs-6{left:50%}.col.-pull-xs-6,.column.-pull-xs-6{right:50%}.col.-xs-7,.column.-xs-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-7,.column.-xs-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-xs-7,.column.-offset-xs-7{margin-left:58.3333333333%}.col.-push-xs-7,.column.-push-xs-7{left:58.3333333333%}.col.-pull-xs-7,.column.-pull-xs-7{right:58.3333333333%}.col.-xs-8,.column.-xs-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-8,.column.-xs-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-xs-8,.column.-offset-xs-8{margin-left:66.6666666667%}.col.-push-xs-8,.column.-push-xs-8{left:66.6666666667%}.col.-pull-xs-8,.column.-pull-xs-8{right:66.6666666667%}.col.-xs-9,.column.-xs-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-9,.column.-xs-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-xs-9,.column.-offset-xs-9{margin-left:75%}.col.-push-xs-9,.column.-push-xs-9{left:75%}.col.-pull-xs-9,.column.-pull-xs-9{right:75%}.col.-xs-10,.column.-xs-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-10,.column.-xs-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-xs-10,.column.-offset-xs-10{margin-left:83.3333333333%}.col.-push-xs-10,.column.-push-xs-10{left:83.3333333333%}.col.-pull-xs-10,.column.-pull-xs-10{right:83.3333333333%}.col.-xs-11,.column.-xs-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-11,.column.-xs-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-xs-11,.column.-offset-xs-11{margin-left:91.6666666667%}.col.-push-xs-11,.column.-push-xs-11{left:91.6666666667%}.col.-pull-xs-11,.column.-pull-xs-11{right:91.6666666667%}.col.-xs-12,.column.-xs-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-12,.column.-xs-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-xs-12,.column.-offset-xs-12{margin-left:100%}.col.-push-xs-12,.column.-push-xs-12{left:100%}.col.-pull-xs-12,.column.-pull-xs-12{right:100%}.col.-offset-xs-0,.column.-offset-xs-0{margin-left:0}.col.-push-xs-0,.column.-push-xs-0{left:0}.col.-pull-xs-0,.column.-pull-xs-0{right:0}.col.-sm,.col.-sm-auto,.column.-sm,.column.-sm-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm,.column.-sm{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-sm-auto,.column.-sm-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-sm,.column.-first-sm{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-sm,.column.-last-sm{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.col.-sm-1,.column.-sm-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-1,.column.-sm-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-sm-1,.column.-offset-sm-1{margin-left:8.3333333333%}.col.-push-sm-1,.column.-push-sm-1{left:8.3333333333%}.col.-pull-sm-1,.column.-pull-sm-1{right:8.3333333333%}}.col.-sm-2,.column.-sm-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-2,.column.-sm-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-sm-2,.column.-offset-sm-2{margin-left:16.6666666667%}.col.-push-sm-2,.column.-push-sm-2{left:16.6666666667%}.col.-pull-sm-2,.column.-pull-sm-2{right:16.6666666667%}}.col.-sm-3,.column.-sm-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-3,.column.-sm-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-sm-3,.column.-offset-sm-3{margin-left:25%}.col.-push-sm-3,.column.-push-sm-3{left:25%}.col.-pull-sm-3,.column.-pull-sm-3{right:25%}}.col.-sm-4,.column.-sm-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-4,.column.-sm-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-sm-4,.column.-offset-sm-4{margin-left:33.3333333333%}.col.-push-sm-4,.column.-push-sm-4{left:33.3333333333%}.col.-pull-sm-4,.column.-pull-sm-4{right:33.3333333333%}}.col.-sm-5,.column.-sm-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-5,.column.-sm-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-sm-5,.column.-offset-sm-5{margin-left:41.6666666667%}.col.-push-sm-5,.column.-push-sm-5{left:41.6666666667%}.col.-pull-sm-5,.column.-pull-sm-5{right:41.6666666667%}}.col.-sm-6,.column.-sm-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-6,.column.-sm-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-sm-6,.column.-offset-sm-6{margin-left:50%}.col.-push-sm-6,.column.-push-sm-6{left:50%}.col.-pull-sm-6,.column.-pull-sm-6{right:50%}}.col.-sm-7,.column.-sm-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-7,.column.-sm-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-sm-7,.column.-offset-sm-7{margin-left:58.3333333333%}.col.-push-sm-7,.column.-push-sm-7{left:58.3333333333%}.col.-pull-sm-7,.column.-pull-sm-7{right:58.3333333333%}}.col.-sm-8,.column.-sm-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-8,.column.-sm-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-sm-8,.column.-offset-sm-8{margin-left:66.6666666667%}.col.-push-sm-8,.column.-push-sm-8{left:66.6666666667%}.col.-pull-sm-8,.column.-pull-sm-8{right:66.6666666667%}}.col.-sm-9,.column.-sm-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-9,.column.-sm-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-sm-9,.column.-offset-sm-9{margin-left:75%}.col.-push-sm-9,.column.-push-sm-9{left:75%}.col.-pull-sm-9,.column.-pull-sm-9{right:75%}}.col.-sm-10,.column.-sm-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-10,.column.-sm-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-sm-10,.column.-offset-sm-10{margin-left:83.3333333333%}.col.-push-sm-10,.column.-push-sm-10{left:83.3333333333%}.col.-pull-sm-10,.column.-pull-sm-10{right:83.3333333333%}}.col.-sm-11,.column.-sm-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-11,.column.-sm-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-sm-11,.column.-offset-sm-11{margin-left:91.6666666667%}.col.-push-sm-11,.column.-push-sm-11{left:91.6666666667%}.col.-pull-sm-11,.column.-pull-sm-11{right:91.6666666667%}}.col.-sm-12,.column.-sm-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-12,.column.-sm-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-sm-12,.column.-offset-sm-12{margin-left:100%}.col.-push-sm-12,.column.-push-sm-12{left:100%}.col.-pull-sm-12,.column.-pull-sm-12{right:100%}}@media screen and (min-width: 576px){.col.-offset-sm-0,.column.-offset-sm-0{margin-left:0}.col.-push-sm-0,.column.-push-sm-0{left:0}.col.-pull-sm-0,.column.-pull-sm-0{right:0}}.col.-md,.col.-md-auto,.column.-md,.column.-md-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md,.column.-md{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-md-auto,.column.-md-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-md,.column.-first-md{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-md,.column.-last-md{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.col.-md-1,.column.-md-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-1,.column.-md-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-md-1,.column.-offset-md-1{margin-left:8.3333333333%}.col.-push-md-1,.column.-push-md-1{left:8.3333333333%}.col.-pull-md-1,.column.-pull-md-1{right:8.3333333333%}}.col.-md-2,.column.-md-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-2,.column.-md-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-md-2,.column.-offset-md-2{margin-left:16.6666666667%}.col.-push-md-2,.column.-push-md-2{left:16.6666666667%}.col.-pull-md-2,.column.-pull-md-2{right:16.6666666667%}}.col.-md-3,.column.-md-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-3,.column.-md-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-md-3,.column.-offset-md-3{margin-left:25%}.col.-push-md-3,.column.-push-md-3{left:25%}.col.-pull-md-3,.column.-pull-md-3{right:25%}}.col.-md-4,.column.-md-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-4,.column.-md-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-md-4,.column.-offset-md-4{margin-left:33.3333333333%}.col.-push-md-4,.column.-push-md-4{left:33.3333333333%}.col.-pull-md-4,.column.-pull-md-4{right:33.3333333333%}}.col.-md-5,.column.-md-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-5,.column.-md-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-md-5,.column.-offset-md-5{margin-left:41.6666666667%}.col.-push-md-5,.column.-push-md-5{left:41.6666666667%}.col.-pull-md-5,.column.-pull-md-5{right:41.6666666667%}}.col.-md-6,.column.-md-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-6,.column.-md-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-md-6,.column.-offset-md-6{margin-left:50%}.col.-push-md-6,.column.-push-md-6{left:50%}.col.-pull-md-6,.column.-pull-md-6{right:50%}}.col.-md-7,.column.-md-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-7,.column.-md-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-md-7,.column.-offset-md-7{margin-left:58.3333333333%}.col.-push-md-7,.column.-push-md-7{left:58.3333333333%}.col.-pull-md-7,.column.-pull-md-7{right:58.3333333333%}}.col.-md-8,.column.-md-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-8,.column.-md-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-md-8,.column.-offset-md-8{margin-left:66.6666666667%}.col.-push-md-8,.column.-push-md-8{left:66.6666666667%}.col.-pull-md-8,.column.-pull-md-8{right:66.6666666667%}}.col.-md-9,.column.-md-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-9,.column.-md-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-md-9,.column.-offset-md-9{margin-left:75%}.col.-push-md-9,.column.-push-md-9{left:75%}.col.-pull-md-9,.column.-pull-md-9{right:75%}}.col.-md-10,.column.-md-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-10,.column.-md-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-md-10,.column.-offset-md-10{margin-left:83.3333333333%}.col.-push-md-10,.column.-push-md-10{left:83.3333333333%}.col.-pull-md-10,.column.-pull-md-10{right:83.3333333333%}}.col.-md-11,.column.-md-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-11,.column.-md-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-md-11,.column.-offset-md-11{margin-left:91.6666666667%}.col.-push-md-11,.column.-push-md-11{left:91.6666666667%}.col.-pull-md-11,.column.-pull-md-11{right:91.6666666667%}}.col.-md-12,.column.-md-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-12,.column.-md-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-md-12,.column.-offset-md-12{margin-left:100%}.col.-push-md-12,.column.-push-md-12{left:100%}.col.-pull-md-12,.column.-pull-md-12{right:100%}}@media screen and (min-width: 768px){.col.-offset-md-0,.column.-offset-md-0{margin-left:0}.col.-push-md-0,.column.-push-md-0{left:0}.col.-pull-md-0,.column.-pull-md-0{right:0}}.col.-lg,.col.-lg-auto,.column.-lg,.column.-lg-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg,.column.-lg{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-lg-auto,.column.-lg-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-lg,.column.-first-lg{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-lg,.column.-last-lg{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.col.-lg-1,.column.-lg-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-1,.column.-lg-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-lg-1,.column.-offset-lg-1{margin-left:8.3333333333%}.col.-push-lg-1,.column.-push-lg-1{left:8.3333333333%}.col.-pull-lg-1,.column.-pull-lg-1{right:8.3333333333%}}.col.-lg-2,.column.-lg-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-2,.column.-lg-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-lg-2,.column.-offset-lg-2{margin-left:16.6666666667%}.col.-push-lg-2,.column.-push-lg-2{left:16.6666666667%}.col.-pull-lg-2,.column.-pull-lg-2{right:16.6666666667%}}.col.-lg-3,.column.-lg-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-3,.column.-lg-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-lg-3,.column.-offset-lg-3{margin-left:25%}.col.-push-lg-3,.column.-push-lg-3{left:25%}.col.-pull-lg-3,.column.-pull-lg-3{right:25%}}.col.-lg-4,.column.-lg-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-4,.column.-lg-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-lg-4,.column.-offset-lg-4{margin-left:33.3333333333%}.col.-push-lg-4,.column.-push-lg-4{left:33.3333333333%}.col.-pull-lg-4,.column.-pull-lg-4{right:33.3333333333%}}.col.-lg-5,.column.-lg-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-5,.column.-lg-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-lg-5,.column.-offset-lg-5{margin-left:41.6666666667%}.col.-push-lg-5,.column.-push-lg-5{left:41.6666666667%}.col.-pull-lg-5,.column.-pull-lg-5{right:41.6666666667%}}.col.-lg-6,.column.-lg-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-6,.column.-lg-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-lg-6,.column.-offset-lg-6{margin-left:50%}.col.-push-lg-6,.column.-push-lg-6{left:50%}.col.-pull-lg-6,.column.-pull-lg-6{right:50%}}.col.-lg-7,.column.-lg-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-7,.column.-lg-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-lg-7,.column.-offset-lg-7{margin-left:58.3333333333%}.col.-push-lg-7,.column.-push-lg-7{left:58.3333333333%}.col.-pull-lg-7,.column.-pull-lg-7{right:58.3333333333%}}.col.-lg-8,.column.-lg-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-8,.column.-lg-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-lg-8,.column.-offset-lg-8{margin-left:66.6666666667%}.col.-push-lg-8,.column.-push-lg-8{left:66.6666666667%}.col.-pull-lg-8,.column.-pull-lg-8{right:66.6666666667%}}.col.-lg-9,.column.-lg-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-9,.column.-lg-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-lg-9,.column.-offset-lg-9{margin-left:75%}.col.-push-lg-9,.column.-push-lg-9{left:75%}.col.-pull-lg-9,.column.-pull-lg-9{right:75%}}.col.-lg-10,.column.-lg-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-10,.column.-lg-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-lg-10,.column.-offset-lg-10{margin-left:83.3333333333%}.col.-push-lg-10,.column.-push-lg-10{left:83.3333333333%}.col.-pull-lg-10,.column.-pull-lg-10{right:83.3333333333%}}.col.-lg-11,.column.-lg-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-11,.column.-lg-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-lg-11,.column.-offset-lg-11{margin-left:91.6666666667%}.col.-push-lg-11,.column.-push-lg-11{left:91.6666666667%}.col.-pull-lg-11,.column.-pull-lg-11{right:91.6666666667%}}.col.-lg-12,.column.-lg-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-12,.column.-lg-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-lg-12,.column.-offset-lg-12{margin-left:100%}.col.-push-lg-12,.column.-push-lg-12{left:100%}.col.-pull-lg-12,.column.-pull-lg-12{right:100%}}@media screen and (min-width: 992px){.col.-offset-lg-0,.column.-offset-lg-0{margin-left:0}.col.-push-lg-0,.column.-push-lg-0{left:0}.col.-pull-lg-0,.column.-pull-lg-0{right:0}}.col.-xl,.col.-xl-auto,.column.-xl,.column.-xl-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl,.column.-xl{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-xl-auto,.column.-xl-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-xl,.column.-first-xl{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-xl,.column.-last-xl{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.col.-xl-1,.column.-xl-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-1,.column.-xl-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-xl-1,.column.-offset-xl-1{margin-left:8.3333333333%}.col.-push-xl-1,.column.-push-xl-1{left:8.3333333333%}.col.-pull-xl-1,.column.-pull-xl-1{right:8.3333333333%}}.col.-xl-2,.column.-xl-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-2,.column.-xl-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-xl-2,.column.-offset-xl-2{margin-left:16.6666666667%}.col.-push-xl-2,.column.-push-xl-2{left:16.6666666667%}.col.-pull-xl-2,.column.-pull-xl-2{right:16.6666666667%}}.col.-xl-3,.column.-xl-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-3,.column.-xl-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-xl-3,.column.-offset-xl-3{margin-left:25%}.col.-push-xl-3,.column.-push-xl-3{left:25%}.col.-pull-xl-3,.column.-pull-xl-3{right:25%}}.col.-xl-4,.column.-xl-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-4,.column.-xl-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-xl-4,.column.-offset-xl-4{margin-left:33.3333333333%}.col.-push-xl-4,.column.-push-xl-4{left:33.3333333333%}.col.-pull-xl-4,.column.-pull-xl-4{right:33.3333333333%}}.col.-xl-5,.column.-xl-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-5,.column.-xl-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-xl-5,.column.-offset-xl-5{margin-left:41.6666666667%}.col.-push-xl-5,.column.-push-xl-5{left:41.6666666667%}.col.-pull-xl-5,.column.-pull-xl-5{right:41.6666666667%}}.col.-xl-6,.column.-xl-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-6,.column.-xl-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-xl-6,.column.-offset-xl-6{margin-left:50%}.col.-push-xl-6,.column.-push-xl-6{left:50%}.col.-pull-xl-6,.column.-pull-xl-6{right:50%}}.col.-xl-7,.column.-xl-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-7,.column.-xl-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-xl-7,.column.-offset-xl-7{margin-left:58.3333333333%}.col.-push-xl-7,.column.-push-xl-7{left:58.3333333333%}.col.-pull-xl-7,.column.-pull-xl-7{right:58.3333333333%}}.col.-xl-8,.column.-xl-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-8,.column.-xl-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-xl-8,.column.-offset-xl-8{margin-left:66.6666666667%}.col.-push-xl-8,.column.-push-xl-8{left:66.6666666667%}.col.-pull-xl-8,.column.-pull-xl-8{right:66.6666666667%}}.col.-xl-9,.column.-xl-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-9,.column.-xl-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-xl-9,.column.-offset-xl-9{margin-left:75%}.col.-push-xl-9,.column.-push-xl-9{left:75%}.col.-pull-xl-9,.column.-pull-xl-9{right:75%}}.col.-xl-10,.column.-xl-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-10,.column.-xl-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-xl-10,.column.-offset-xl-10{margin-left:83.3333333333%}.col.-push-xl-10,.column.-push-xl-10{left:83.3333333333%}.col.-pull-xl-10,.column.-pull-xl-10{right:83.3333333333%}}.col.-xl-11,.column.-xl-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-11,.column.-xl-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-xl-11,.column.-offset-xl-11{margin-left:91.6666666667%}.col.-push-xl-11,.column.-push-xl-11{left:91.6666666667%}.col.-pull-xl-11,.column.-pull-xl-11{right:91.6666666667%}}.col.-xl-12,.column.-xl-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-12,.column.-xl-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-xl-12,.column.-offset-xl-12{margin-left:100%}.col.-push-xl-12,.column.-push-xl-12{left:100%}.col.-pull-xl-12,.column.-pull-xl-12{right:100%}}@media screen and (min-width: 1200px){.col.-offset-xl-0,.column.-offset-xl-0{margin-left:0}.col.-push-xl-0,.column.-push-xl-0{left:0}.col.-pull-xl-0,.column.-pull-xl-0{right:0}}.col.-xxl,.col.-xxl-auto,.column.-xxl,.column.-xxl-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl,.column.-xxl{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-xxl-auto,.column.-xxl-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-xxl,.column.-first-xxl{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-xxl,.column.-last-xxl{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.col.-xxl-1,.column.-xxl-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-1,.column.-xxl-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-xxl-1,.column.-offset-xxl-1{margin-left:8.3333333333%}.col.-push-xxl-1,.column.-push-xxl-1{left:8.3333333333%}.col.-pull-xxl-1,.column.-pull-xxl-1{right:8.3333333333%}}.col.-xxl-2,.column.-xxl-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-2,.column.-xxl-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-xxl-2,.column.-offset-xxl-2{margin-left:16.6666666667%}.col.-push-xxl-2,.column.-push-xxl-2{left:16.6666666667%}.col.-pull-xxl-2,.column.-pull-xxl-2{right:16.6666666667%}}.col.-xxl-3,.column.-xxl-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-3,.column.-xxl-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-xxl-3,.column.-offset-xxl-3{margin-left:25%}.col.-push-xxl-3,.column.-push-xxl-3{left:25%}.col.-pull-xxl-3,.column.-pull-xxl-3{right:25%}}.col.-xxl-4,.column.-xxl-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-4,.column.-xxl-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-xxl-4,.column.-offset-xxl-4{margin-left:33.3333333333%}.col.-push-xxl-4,.column.-push-xxl-4{left:33.3333333333%}.col.-pull-xxl-4,.column.-pull-xxl-4{right:33.3333333333%}}.col.-xxl-5,.column.-xxl-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-5,.column.-xxl-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-xxl-5,.column.-offset-xxl-5{margin-left:41.6666666667%}.col.-push-xxl-5,.column.-push-xxl-5{left:41.6666666667%}.col.-pull-xxl-5,.column.-pull-xxl-5{right:41.6666666667%}}.col.-xxl-6,.column.-xxl-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-6,.column.-xxl-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-xxl-6,.column.-offset-xxl-6{margin-left:50%}.col.-push-xxl-6,.column.-push-xxl-6{left:50%}.col.-pull-xxl-6,.column.-pull-xxl-6{right:50%}}.col.-xxl-7,.column.-xxl-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-7,.column.-xxl-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-xxl-7,.column.-offset-xxl-7{margin-left:58.3333333333%}.col.-push-xxl-7,.column.-push-xxl-7{left:58.3333333333%}.col.-pull-xxl-7,.column.-pull-xxl-7{right:58.3333333333%}}.col.-xxl-8,.column.-xxl-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-8,.column.-xxl-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-xxl-8,.column.-offset-xxl-8{margin-left:66.6666666667%}.col.-push-xxl-8,.column.-push-xxl-8{left:66.6666666667%}.col.-pull-xxl-8,.column.-pull-xxl-8{right:66.6666666667%}}.col.-xxl-9,.column.-xxl-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-9,.column.-xxl-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-xxl-9,.column.-offset-xxl-9{margin-left:75%}.col.-push-xxl-9,.column.-push-xxl-9{left:75%}.col.-pull-xxl-9,.column.-pull-xxl-9{right:75%}}.col.-xxl-10,.column.-xxl-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-10,.column.-xxl-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-xxl-10,.column.-offset-xxl-10{margin-left:83.3333333333%}.col.-push-xxl-10,.column.-push-xxl-10{left:83.3333333333%}.col.-pull-xxl-10,.column.-pull-xxl-10{right:83.3333333333%}}.col.-xxl-11,.column.-xxl-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-11,.column.-xxl-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-xxl-11,.column.-offset-xxl-11{margin-left:91.6666666667%}.col.-push-xxl-11,.column.-push-xxl-11{left:91.6666666667%}.col.-pull-xxl-11,.column.-pull-xxl-11{right:91.6666666667%}}.col.-xxl-12,.column.-xxl-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-12,.column.-xxl-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-xxl-12,.column.-offset-xxl-12{margin-left:100%}.col.-push-xxl-12,.column.-push-xxl-12{left:100%}.col.-pull-xxl-12,.column.-pull-xxl-12{right:100%}}@media screen and (min-width: 1400px){.col.-offset-xxl-0,.column.-offset-xxl-0{margin-left:0}.col.-push-xxl-0,.column.-push-xxl-0{left:0}.col.-pull-xxl-0,.column.-pull-xxl-0{right:0}}.col.-first,.column.-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last,.column.-last{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.col.-offset-1,.column.-offset-1{margin-left:8.3333333333%}.col.-push-1,.column.-push-1{left:8.3333333333%}.col.-pull-1,.column.-pull-1{right:8.3333333333%}.col.-offset-2,.column.-offset-2{margin-left:16.6666666667%}.col.-push-2,.column.-push-2{left:16.6666666667%}.col.-pull-2,.column.-pull-2{right:16.6666666667%}.col.-offset-3,.column.-offset-3{margin-left:25%}.col.-push-3,.column.-push-3{left:25%}.col.-pull-3,.column.-pull-3{right:25%}.col.-offset-4,.column.-offset-4{margin-left:33.3333333333%}.col.-push-4,.column.-push-4{left:33.3333333333%}.col.-pull-4,.column.-pull-4{right:33.3333333333%}.col.-offset-5,.column.-offset-5{margin-left:41.6666666667%}.col.-push-5,.column.-push-5{left:41.6666666667%}.col.-pull-5,.column.-pull-5{right:41.6666666667%}.col.-offset-6,.column.-offset-6{margin-left:50%}.col.-push-6,.column.-push-6{left:50%}.col.-pull-6,.column.-pull-6{right:50%}.col.-offset-7,.column.-offset-7{margin-left:58.3333333333%}.col.-push-7,.column.-push-7{left:58.3333333333%}.col.-pull-7,.column.-pull-7{right:58.3333333333%}.col.-offset-8,.column.-offset-8{margin-left:66.6666666667%}.col.-push-8,.column.-push-8{left:66.6666666667%}.col.-pull-8,.column.-pull-8{right:66.6666666667%}.col.-offset-9,.column.-offset-9{margin-left:75%}.col.-push-9,.column.-push-9{left:75%}.col.-pull-9,.column.-pull-9{right:75%}.col.-offset-10,.column.-offset-10{margin-left:83.3333333333%}.col.-push-10,.column.-push-10{left:83.3333333333%}.col.-pull-10,.column.-pull-10{right:83.3333333333%}.col.-offset-11,.column.-offset-11{margin-left:91.6666666667%}.col.-push-11,.column.-push-11{left:91.6666666667%}.col.-pull-11,.column.-pull-11{right:91.6666666667%}.col.-offset-12,.column.-offset-12{margin-left:100%}.col.-push-12,.column.-push-12{left:100%}.col.-pull-12,.column.-pull-12{right:100%}.col.-offset-0,.column.-offset-0{margin-left:0}.col.-push-0,.column.-push-0{left:0}.col.-pull-0,.column.-pull-0{right:0}.container{----width--xs: 100%;----width--sm: calc(576px - var(--gutter--sm));----width--md: calc(768px - var(--gutter--md));----width--lg: calc(992px - var(--gutter--lg));----width--xl: calc(1200px - var(--gutter--xl));----width--xxl: calc(1400px - var(--gutter--xxl))}.container{margin-left:auto;margin-right:auto;-webkit-box-sizing:border-box;box-sizing:border-box;width:var(----width--xs);max-width:var(----width--xs);padding-left:calc(var(--gutter--xs) / 2);padding-right:calc(var(--gutter--xs) / 2)}@media screen and (min-width: 576px){.container{max-width:var(----width--sm);padding-left:calc(var(--gutter--sm) / 2);padding-right:calc(var(--gutter--sm) / 2)}}@media screen and (min-width: 768px){.container{max-width:var(----width--md);padding-left:calc(var(--gutter--md) / 2);padding-right:calc(var(--gutter--md) / 2)}}@media screen and (min-width: 992px){.container{max-width:var(----width--lg);padding-left:calc(var(--gutter--lg) / 2);padding-right:calc(var(--gutter--lg) / 2)}}@media screen and (min-width: 1200px){.container{max-width:var(----width--xl);padding-left:calc(var(--gutter--xl) / 2);padding-right:calc(var(--gutter--xl) / 2)}}@media screen and (min-width: 1400px){.container{max-width:var(----width--xxl);padding-left:calc(var(--gutter--xxl) / 2);padding-right:calc(var(--gutter--xxl) / 2)}}.container.-fluid{max-width:100%}.card{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----header--background: var(--color--light-25);----header--border-color: var(----border-color);----header--border-style: var(----border-style);----header--border-top-width: var(----border-top-width);----header--border-right-width: var(----border-right-width);----header--border-bottom-width: var(----border-bottom-width);----header--border-left-width: var(----border-left-width);----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--color: var(----color);----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--background: var(----background);----body--border-color: var(----border-color);----body--border-style: var(----border-style);----body--border-top-width: var(----border-top-width);----body--border-right-width: var(----border-right-width);----body--border-bottom-width: var(----border-bottom-width);----body--border-left-width: var(----border-left-width);----body--border-width: var(----body--border-top-width) var(----body--border-right-width) var(----body--border-bottom-width) var(----body--border-left-width);----body--color: var(----color);----body--padding-top: var(----padding-top);----body--padding-right: var(----padding-right);----body--padding-bottom: var(----padding-bottom);----body--padding-left: var(----padding-left);----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left);----footer--background: var(--color--light-25);----footer--border-color: var(----border-color);----footer--border-style: var(----border-style);----footer--border-top-width: var(----border-top-width);----footer--border-right-width: var(----border-right-width);----footer--border-bottom-width: var(----border-bottom-width);----footer--border-left-width: var(----border-left-width);----footer--border-width: var(----footer--border-top-width) var(----footer--border-right-width) var(----footer--border-bottom-width) var(----footer--border-left-width);----footer--color: var(----color);----footer--padding-top: var(----padding-top);----footer--padding-right: var(----padding-right);----footer--padding-bottom: var(----padding-bottom);----footer--padding-left: var(----padding-left);----footer--padding: var(----footer--padding-top) var(----footer--padding-right) var(----footer--padding-bottom) var(----footer--padding-left)}.card.-primary{----background: var(--color--primary);----border-top-color: var(--color--primary-60);----border-right-color: var(--color--primary-60);----border-bottom-color: var(--color--primary-60);----border-left-color: var(--color--primary-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--primary-55);----footer--background: var(--color--primary-55)}.card.-secondary{----background: var(--color--secondary);----border-top-color: var(--color--secondary-60);----border-right-color: var(--color--secondary-60);----border-bottom-color: var(--color--secondary-60);----border-left-color: var(--color--secondary-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--secondary-55);----footer--background: var(--color--secondary-55)}.card.-light{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background);----header--background: var(--color--light-25);----footer--background: var(--color--light-25)}.card.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--dark-55);----footer--background: var(--color--dark-55)}.card.-info{----background: var(--color--info);----border-top-color: var(--color--info-60);----border-right-color: var(--color--info-60);----border-bottom-color: var(--color--info-60);----border-left-color: var(--color--info-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--info-55);----footer--background: var(--color--info-55)}.card.-success{----background: var(--color--success);----border-top-color: var(--color--success-60);----border-right-color: var(--color--success-60);----border-bottom-color: var(--color--success-60);----border-left-color: var(--color--success-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--success-55);----footer--background: var(--color--success-55)}.card.-warning{----background: var(--color--warning);----border-top-color: var(--color--warning-60);----border-right-color: var(--color--warning-60);----border-bottom-color: var(--color--warning-60);----border-left-color: var(--color--warning-60);----color: var(--contrast-color-for-light-background);----header--background: var(--color--warning-55);----footer--background: var(--color--warning-55)}.card.-danger{----background: var(--color--danger);----border-top-color: var(--color--danger-60);----border-right-color: var(--color--danger-60);----border-bottom-color: var(--color--danger-60);----border-left-color: var(--color--danger-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--danger-55);----footer--background: var(--color--danger-55)}.card.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.card.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.card.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-clip:border-box;border-radius:var(----border-radius);font-size:var(----font-size);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.card>hr{margin-right:0;margin-left:0}.card>.card-header{color:var(----header--color);background:var(----header--background);border-color:var(----header--border-color);border-width:var(----header--border-width);border-style:var(----header--border-style);padding:var(----header--padding);border-bottom-width:0;margin-bottom:0}.card>.card-header>h1,.card>.card-header>h2,.card>.card-header>h3,.card>.card-header>h4,.card>.card-header>h5,.card>.card-header>h6,.card>.card-header>p,.card>.card-header>.h1,.card>.card-header>.h2,.card>.card-header>.h3,.card>.card-header>.h4,.card>.card-header>.h5,.card>.card-header>.h6,.card>.card-header>.p{margin-bottom:0;margin-top:0}.card>.card-header+img,.card>.card-header+.card-body{border-top-left-radius:0;border-top-right-radius:0}.card>.card-header+.list-group .list-group-item:first-child{border-top:0}.card>.card-header:first-child{border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.card>.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;background:var(----body--background);border-width:var(----body--border-width);border-style:var(----body--border-style);border-color:var(----body--border-color);color:var(----body--color);padding:var(----body--padding);-webkit-transition-property:border-color;transition-property:border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);border-radius:var(----border-radius)}.card>.card-body:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.card>.card-body:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0}.card>.card-body>.card-title{margin-top:0;margin-bottom:var(--margin-bottom)}.card>.card-body>.card-subtitle{margin-top:var(--margin-top);margin-bottom:0}.card>.card-body>.card-link{-webkit-text-decoration:none;text-decoration:none}.card>.card-body>.card-link+.card-link{margin-left:var(--margin-left)}.card>.card-body>*:first-child{margin-top:0}.card>.card-body>*:last-child{margin-bottom:0}.card>.card-footer{background:var(----footer--background);border-color:var(----footer--border-color);border-width:var(----footer--border-width);border-style:var(----footer--border-style);color:var(----footer--color);padding:var(----footer--padding);border-top-width:0}.card>.card-footer:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.card>img{width:100%;border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.card:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.card,.card>.card-header,.card>.card-footer{-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing)}.card>.list-group:first-child,.card .list-group-item:first-child{border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.card>.list-group:last-child,.card .list-group-item:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.checkbox{----background: var(--color--white);----background--checked: var(--color--primary);----background--disabled: var(--color--light-25);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--color--white);----color--disabled: var(--color--light-25);----margin-right: calc(var(--margin-right) / 2);----size: 1rem;----checkmark--size: 8px;----label--font-size: var(--font-size);----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70)}.form.-light .checkbox,.form-group.-light .checkbox,.checkbox.-light{----background: var(--color--white);----background--checked: var(--color--primary);----background--disabled: var(--color--light-25);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----color: var(--color--white);----color--disabled: var(--color--light-25);----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70)}.form.-dark .checkbox,.form-group.-dark .checkbox,.checkbox.-dark{----background: var(--color--dark);----background--checked: var(--color--primary);----background--disabled: var(--color--dark-25);----background--checked-disabled: var(--color--primary-75);----border-color: var(--color--dark);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--dark);----border-color--checked-disabled: var(--color--primary-70);----color: var(--color--white);----color--disabled: var(--color--dark-25);----label--color: var(--contrast-color-for-dark-background);----label--color--disabled: var(--color--dark-30)}.form.-sm .checkbox,.form-group.-sm .checkbox,.checkbox.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----size: calc(1rem * var(--size-multiplier--sm));----checkmark--size: calc(8px * var(--size-multiplier--sm));----label--font-size: calc(var(--font-size) * var(--size-multiplier--sm))}.form.-md .checkbox,.form-group.-md .checkbox,.checkbox.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----size: calc(1rem * var(--size-multiplier--md));----checkmark--size: calc(8px * var(--size-multiplier--md));----label--font-size: calc(var(--font-size) * var(--size-multiplier--md))}.form.-lg .checkbox,.form-group.-lg .checkbox,.checkbox.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----size: calc(1rem * var(--size-multiplier--lg));----checkmark--size: calc(8px * var(--size-multiplier--lg));----label--font-size: calc(var(--font-size) * var(--size-multiplier--lg))}.checkbox{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;white-space:nowrap;outline:none;cursor:pointer;margin-right:var(--margin-right)}.checkbox:last-child{margin-right:0}.checkbox.-disabled{cursor:default}.checkbox.-disabled .checkbox-label:before,.checkbox.-disabled .checkbox-label:after{cursor:default}.checkbox input{top:0;left:0;position:absolute;z-index:0;opacity:0;height:0;width:0;outline:0}.checkbox input:checked~.checkbox-label:before,.checkbox input[type=checkbox]:indeterminate~.checkbox-label:before{----border-color: var(----border-color--checked);----background: var(----background--checked)}.checkbox input:checked~.checkbox-label:after,.checkbox input[type=checkbox]:indeterminate~.checkbox-label:after{content:"";-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-transform:scale(1);transform:scale(1)}.checkbox input:disabled~.checkbox-label,.checkbox input[readonly]~.checkbox-label{----label--color: var(----label--color--disabled)}.checkbox input:disabled:checked~.checkbox-label:before,.checkbox input[readonly]:checked~.checkbox-label:before{----border-color: var(----border-color--checked-disabled);----background: var(----background--checked-disabled)}.checkbox input:disabled:checked~.checkbox-label:after,.checkbox input[readonly]:checked~.checkbox-label:after{----background: var(----color--disabled)}.checkbox input:indeterminate~.checkbox-label:after{-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>minus</title><path d="M0 11.375v5.25c0 0.483 0.392 0.875 0.875 0.875h26.25c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875h-26.25c-0.483 0-0.875 0.392-0.875 0.875z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>minus</title><path d="M0 11.375v5.25c0 0.483 0.392 0.875 0.875 0.875h26.25c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875h-26.25c-0.483 0-0.875 0.392-0.875 0.875z"></path></svg>')}.checkbox input:focus,.checkbox input:active{outline:none}.checkbox .checkbox-label{margin-bottom:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----label--color);font-size:var(----label--font-size)}.checkbox .checkbox-label:before,.checkbox .checkbox-label:after{width:var(----size);height:var(----size);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer}.checkbox .checkbox-label:before{content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);margin-right:var(----margin-right);-webkit-transition-property:background-color,border-color;transition-property:background-color,border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);background-color:var(----background)}.checkbox .checkbox-label:after{-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>check</title><path d="M23.625 3.5l-13.125 13.125-6.125-6.125-4.375 4.375 10.5 10.5 17.5-17.5z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>check</title><path d="M23.625 3.5l-13.125 13.125-6.125-6.125-4.375 4.375 10.5 10.5 17.5-17.5z"></path></svg>');position:absolute;top:50%;left:0;z-index:1;text-align:center;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transform:scale(0);transform:scale(0);background-color:var(----color);margin-top:calc(var(----size) / -2);-webkit-mask-size:var(----checkmark--size) var(----checkmark--size);mask-size:var(----checkmark--size) var(----checkmark--size)}.checkbox.-native input{top:auto;left:auto;position:relative;opacity:1;height:auto;width:auto;margin-right:var(----margin-right)}.checkbox.-native .checkbox-label:after,.checkbox.-native .checkbox-label:before{display:none}.checkbox-group[data-v-4043b2ce]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.checkbox-group.-inline[data-v-4043b2ce]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.collapsible{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----header--background: var(----background);----header--border-color: var(----border-color);----header--border-style: var(----border-style);----header--border-top-width: var(----border-top-width);----header--border-right-width: var(----border-right-width);----header--border-bottom-width: var(----border-bottom-width);----header--border-left-width: var(----border-left-width);----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--color: var(----color);----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--background: var(--color--white);----body--border-color: var(----border-color);----body--border-style: var(----border-style);----body--border-top-width: 0;----body--border-right-width: var(----border-right-width);----body--border-bottom-width: var(----border-bottom-width);----body--border-left-width: var(----border-left-width);----body--border-width: var(----body--border-top-width) var(----body--border-right-width) var(----body--border-bottom-width) var(----body--border-left-width);----body--color: var(----color);----body--padding-top: var(----padding-top);----body--padding-right: var(----padding-right);----body--padding-bottom: var(----padding-bottom);----body--padding-left: var(----padding-left);----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left)}.collapsible.-light{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----color: var(--contrast-color-for-light-background);----body--background: var(--color--white)}.collapsible.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-40);----border-right-color: var(--color--dark-40);----border-bottom-color: var(--color--dark-40);----border-left-color: var(--color--dark-40);----color: var(--contrast-color-for-dark-background);----body--background: var(--color--dark-45)}.collapsible.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--sm));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--sm));----body--padding-right: calc(var(----padding-right) * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.collapsible.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--md));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--md));----body--padding-right: calc(var(----padding-right) * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.collapsible.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--lg));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--lg));----body--padding-right: calc(var(----padding-right) * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.collapsible{position:relative;display:block;font-size:var(----font-size)}.expand-enter-active[data-v-1e395af5],.expand-leave-active[data-v-1e395af5]{-webkit-transition-property:height;transition-property:height;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);overflow:hidden}.expand-enter[data-v-1e395af5],.expand-leave-to[data-v-1e395af5]{height:0}[data-v-1e395af5]{will-change:height;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.expand-enter-from[data-v-1e395af5],.expand-enter-active[data-v-1e395af5],.expand-leave-active[data-v-1e395af5],.expand-leave-to[data-v-1e395af5]{will-change:height;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.collapsible>.collapsible-item{position:relative;display:block;-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.collapsible>.collapsible-item>.collapsible-header{border-width:var(----header--border-width);border-style:var(----header--border-style);border-color:var(----header--border-color);color:var(----header--color);background-color:var(----header--background);padding:var(----header--padding);display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-text-decoration:none;text-decoration:none;-webkit-transition-property:border-radius;transition-property:border-radius;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing)}.collapsible>.collapsible-item>.collapsible-header>.icon{background-color:var(----header--color);width:var(----font-size);height:var(----font-size);-webkit-mask-size:var(----font-size) var(----font-size);mask-size:var(----font-size) var(----font-size);display:inline-block;position:relative;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>chevron-down</title><path d="M26.297 12.625l-11.594 11.578c-0.391 0.391-1.016 0.391-1.406 0l-11.594-11.578c-0.391-0.391-0.391-1.031 0-1.422l2.594-2.578c0.391-0.391 1.016-0.391 1.406 0l8.297 8.297 8.297-8.297c0.391-0.391 1.016-0.391 1.406 0l2.594 2.578c0.391 0.391 0.391 1.031 0 1.422z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>chevron-down</title><path d="M26.297 12.625l-11.594 11.578c-0.391 0.391-1.016 0.391-1.406 0l-11.594-11.578c-0.391-0.391-0.391-1.031 0-1.422l2.594-2.578c0.391-0.391 1.016-0.391 1.406 0l8.297 8.297 8.297-8.297c0.391-0.391 1.016-0.391 1.406 0l2.594 2.578c0.391 0.391 0.391 1.031 0 1.422z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.collapsible>.collapsible-item>.collapsible-body{display:block;position:relative;background-color:var(----body--background);border-width:var(----body--border-width);border-color:var(----body--border-color);border-style:var(----body--border-style);color:var(----body--color)}.collapsible>.collapsible-item>.collapsible-body>.content{padding:var(----body--padding)}.collapsible>.collapsible-item:first-child>.collapsible-header{border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.collapsible>.collapsible-item:last-child>.collapsible-header{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.collapsible>.collapsible-item:last-child>.collapsible-body{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.collapsible>.collapsible-item.-active>.collapsible-header{border-bottom-left-radius:0;border-bottom-right-radius:0}.collapsible>.collapsible-item.-active>.collapsible-header>.icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.collapsible>.collapsible-item+.collapsible-item>.collapsible-header{border-top-width:0}.collapsible.-blank>.collapsible-item{-webkit-box-shadow:none;box-shadow:none}.collapsible.-blank>.collapsible-item>.collapsible-header,.collapsible.-blank>.collapsible-item>.collapsible-body{border:0;background-color:transparent;background-color:initial;color:inherit}.dropdown.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----item--padding-top: calc(calc(var(----padding-top) / 2) * var(--size-multiplier--sm));----item--padding-right: calc(var(----padding-right) * var(--size-multiplier--sm));----item--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--sm));----item--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--sm));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--sm));----body--padding-right: calc(0 * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(0 * var(--size-multiplier--sm));----footer--padding-top: calc(var(----padding-top) * var(--size-multiplier--sm));----footer--padding-right: calc(var(----padding-right) * var(--size-multiplier--sm));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.dropdown.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----item--padding-top: calc(calc(var(----padding-top) / 2) * var(--size-multiplier--md));----item--padding-right: calc(var(----padding-right) * var(--size-multiplier--md));----item--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--md));----item--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--md));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--md));----body--padding-right: calc(0 * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(0 * var(--size-multiplier--md));----footer--padding-top: calc(var(----padding-top) * var(--size-multiplier--md));----footer--padding-right: calc(var(----padding-right) * var(--size-multiplier--md));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.dropdown.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----item--padding-top: calc(calc(var(----padding-top) / 2) * var(--size-multiplier--lg));----item--padding-right: calc(var(----padding-right) * var(--size-multiplier--lg));----item--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--lg));----item--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--lg));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--lg));----body--padding-right: calc(0 * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(0 * var(--size-multiplier--lg));----footer--padding-top: calc(var(----padding-top) * var(--size-multiplier--lg));----footer--padding-right: calc(var(----padding-right) * var(--size-multiplier--lg));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.dropdown.-light{----background: var(--color--white);----background--active: var(--color--light-25);----background--disabled: transparent;----background--hover: var(--color--light-25);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background);----color--active: var(--dropdown-color-variant-light-color);----color--disabled: var(--color--light-65);----color--hover: var(--dropdown-color-variant-light-color);----header--background: var(--color--gray-05);----footer--background: var(--color--gray-05)}.dropdown.-dark{----background: var(--color--dark);----background--active: var(--color--dark-45);----background--disabled: transparent;----background--hover: var(--color--dark-45);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background);----color--active: var(--dropdown-color-variant-dark-color);----color--disabled: var(--color--dark-25);----color--hover: var(--dropdown-color-variant-dark-color);----header--background: var(--color--dark-55);----footer--background: var(--color--dark-55)}.dropdown-wrapper{display:inline-block;position:relative}.dropdown-wrapper .dropdown-trigger{display:contents;cursor:pointer}.dropdown{position:fixed;z-index:var(----z-index);word-wrap:break-word;text-align:left;list-style:none;line-height:var(----line-height);font-size:var(----font-size);background-clip:padding-box;display:inline-block;white-space:normal;min-width:var(----min-width);max-width:var(----max-width);color:var(----color);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.dropdown:focus:hover{outline-width:0}.dropdown[data-popper-placement^=top]{-webkit-transform-origin:center bottom;transform-origin:center bottom}.dropdown[data-popper-placement^=bottom]{-webkit-transform-origin:center top;transform-origin:center top}.dropdown[data-popper-placement^=right]{-webkit-transform-origin:left center;transform-origin:left center}.dropdown[data-popper-placement^=left]{-webkit-transform-origin:right center;transform-origin:right center}.dropdown>[data-popper-arrow],.dropdown>[data-popper-arrow]:after{display:block;width:0;height:0;border-color:transparent;border-style:solid;position:absolute}.dropdown>[data-popper-arrow]:after{content:""}.dropdown[data-popper-placement^=top]>[data-popper-arrow]{border-bottom-width:0}.dropdown[data-popper-placement^=top]>[data-popper-arrow]:after{border-bottom-width:0}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]{border-top-width:0}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-top-width:0}.dropdown[data-popper-placement^=right]>[data-popper-arrow]{border-left-width:0}.dropdown[data-popper-placement^=right]>[data-popper-arrow]:after{border-left-width:0}.dropdown[data-popper-placement^=left]>[data-popper-arrow]{border-right-width:0}.dropdown[data-popper-placement^=left]>[data-popper-arrow]:after{border-right-width:0}.dropdown>[data-popper-arrow],.dropdown>[data-popper-arrow]:after{border-width:6px}.dropdown[data-popper-placement^=top]>[data-popper-arrow]:after,.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]:after{margin-left:-6px}.dropdown[data-popper-placement^=left]>[data-popper-arrow]:after,.dropdown[data-popper-placement^=right]>[data-popper-arrow]:after{margin-top:-6px}.dropdown[data-popper-placement^=top]>[data-popper-arrow]{bottom:-6px}.dropdown[data-popper-placement^=top]>[data-popper-arrow]:after{bottom:1px}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]{top:-6px}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]:after{top:1px}.dropdown[data-popper-placement^=left]>[data-popper-arrow]{right:-6px}.dropdown[data-popper-placement^=left]>[data-popper-arrow]:after{right:1px}.dropdown[data-popper-placement^=right]>[data-popper-arrow]{left:-6px}.dropdown[data-popper-placement^=right]>[data-popper-arrow]:after{left:1px}.dropdown>.dropdown-header{border-width:var(----border-top-width) var(----border-right-width) 0 var(----border-left-width);border-style:var(----border-style);border-color:var(----border-color);background-color:var(----header--background);padding:var(----header--padding)}.dropdown>.dropdown-body{border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);background-color:var(----background);padding:var(----body--padding)}.dropdown>.dropdown-body .dropdown-wrapper{width:100%}.dropdown>.dropdown-body .dropdown-divider{margin-top:var(----divider--margin-top);margin-bottom:var(----divider--margin-bottom);background-color:var(----border-top-color)}.dropdown>.dropdown-footer{border-width:0 var(----border-right-width) var(----border-bottom-width) var(----border-left-width);border-style:var(----border-style);border-color:var(----border-color);background-color:var(----footer--background);padding:var(----footer--padding)}.dropdown>*:nth-child(2){border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.dropdown>*:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.dropdown[data-popper-placement^=top]>[data-popper-arrow]{border-top-color:var(----border-bottom-color)}.dropdown[data-popper-placement^=top]>[data-popper-arrow]:after{border-top-color:var(----background)}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]{border-bottom-color:var(----border-top-color)}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-bottom-color:var(----background)}.dropdown[data-popper-placement^=left]>[data-popper-arrow]{border-left-color:var(----border-right-color)}.dropdown[data-popper-placement^=left]>[data-popper-arrow]:after{border-left-color:var(----background)}.dropdown[data-popper-placement^=right]>[data-popper-arrow]{border-right-color:var(----border-left-color)}.dropdown[data-popper-placement^=right]>[data-popper-arrow]:after{border-right-color:var(----background)}.dropdown-divider{display:block;height:1px;width:100%;clear:both}.dropdown{----background: var(--color--white);----background--active: var(--color--light-25);----background--disabled: transparent;----background--hover: var(--color--light-25);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----color--active: var(--dropdown-color-variant-light-color);----color--disabled: var(--color--light-65);----color--hover: var(--dropdown-color-variant-light-color);----font-weight: var(--font-weight--normal);----font-size: var(--font-size);----line-height: var(--line-height);----min-width: 240px;----max-width: 90vw;----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----z-index: 2000;----divider--margin-top: calc(var(--margin-top) / 2);----divider--margin-bottom: calc(var(--margin-bottom) / 2);----item--padding-top: calc(var(----padding-top) / 2);----item--padding-right: var(----padding-right);----item--padding-bottom: calc(var(----padding-bottom) / 2);----item--padding-left: var(----padding-left);----item--padding: var(----item--padding-top) var(----item--padding-right) var(----item--padding-bottom) var(----item--padding-left);----header--background: var(--color--gray-05);----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--padding-top: var(----padding-top);----body--padding-right: 0;----body--padding-bottom: var(----padding-bottom);----body--padding-left: 0;----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left);----footer--background: var(--color--gray-05);----footer--padding-top: var(----padding-top);----footer--padding-right: var(----padding-right);----footer--padding-bottom: var(----padding-bottom);----footer--padding-left: var(----padding-left);----footer--padding: var(----footer--padding-top) var(----footer--padding-right) var(----footer--padding-bottom) var(----footer--padding-left)}.dropdown .dropdown-item{display:block;width:100%;clear:both;margin-bottom:0;text-align:inherit;white-space:nowrap;background-color:transparent;border:0;cursor:pointer;-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);color:var(----color);border-color:var(----border-color);padding:var(----item--padding);background:var(----background)}.dropdown .dropdown-item:not(.-disabled):not(.-plaintext):hover,.dropdown .dropdown-item:not(.-disabled):not(.-plaintext):focus{----color: var(----color--hover);----background: var(----background--hover)}.dropdown .dropdown-item.-disabled{----color: var(----color--disabled);----background: var(----background--disabled)}.dropdown .dropdown-item.-active{----color: var(----color--active);----background: var(----background--active)}.dropdown .dropdown-item:hover,.dropdown .dropdown-item:focus{outline:0;-webkit-text-decoration:none;text-decoration:none}.dropdown .dropdown-item.-disabled{pointer-events:none;cursor:default}.dropdown .dropdown-item.-plaintext{cursor:default}.dropdown .dropdown-item.-active{font-weight:700}.input-wrapper[data-v-575ccba7]{----background: var(--color--white);----background--disabled: var(--color--light-25);----border-color: var(--color--light-55);----border-color--hover: var(--color--light-60);----border-color--focus: var(--color--primary);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----color--disabled: var(--color--light-75);----font-size: var(--font-size);----line-height: var(--line-height);----padding-top: calc(var(--padding-top) / 2);----padding-right: var(--padding-right);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----clear--background: transparent;----clear--background--hover: var(--color--light-30);----clear--background--active: var(--color--light-40);----clear--color: var(--color--light-70);----clear--size: 1.2rem;----placeholder--color: var(--color--light-60);----prefix--border-width: var(----border-right-width);----suffix--border-width: var(----border-left-width);----prefix-suffix--border-style: var(--border-style);----prefix-suffix--color: var(--color--light-70);----prefix-suffix--padding-right: var(----padding-right);----prefix-suffix--padding-left: var(----padding-left);----prepend-append--background: var(--color--light)}.form.-sm .input-wrapper[data-v-575ccba7],.form-group.-sm .input-wrapper[data-v-575ccba7],.input-wrapper.-sm[data-v-575ccba7]{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.form.-md .input-wrapper[data-v-575ccba7],.form-group.-md .input-wrapper[data-v-575ccba7],.input-wrapper.-md[data-v-575ccba7]{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.form.-lg .input-wrapper[data-v-575ccba7],.form-group.-lg .input-wrapper[data-v-575ccba7],.input-wrapper.-lg[data-v-575ccba7]{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.form.-light .input-wrapper[data-v-575ccba7],.form-group.-light .input-wrapper[data-v-575ccba7],.input-wrapper.-light[data-v-575ccba7]{----background: var(--color--white);----background--disabled: var(--color--light-25);----border-color: var(--color--light-55);----border-color--hover: var(--color--light-60);----border-color--focus: var(--color--primary);----color: var(--contrast-color-for-light-background);----color--disabled: var(--color--light-75);----clear--background: transparent;----clear--background--hover: var(--color--light-30);----clear--background--active: var(--color--light-40);----clear--color: var(--color--light-70);----placeholder--color: var(--color--light-60);----prefix-suffix--color: var(--color--light-70);----prepend-append--background: var(--color--light)}.form.-dark .input-wrapper[data-v-575ccba7],.form-group.-dark .input-wrapper[data-v-575ccba7],.input-wrapper.-dark[data-v-575ccba7]{----background: var(--color--dark);----background--disabled: var(--color--dark-40);----border-color: var(--color--dark-45);----border-color--hover: var(--color--dark-40);----border-color--focus: var(--color--primary);----color: var(--contrast-color-for-dark-background);----color--disabled: var(--color--gray-35);----clear--background: transparent;----clear--background--hover: var(--color--dark-35);----clear--background--active: var(--color--dark-30);----clear--color: var(--color--dark-30);----placeholder--color: var(--color--dark-25);----prefix-suffix--color: var(--color--dark-25);----prepend-append--background: var(--color--dark)}.input-wrapper[data-v-575ccba7]{display:block;vertical-align:middle;position:relative}.input-wrapper .input-prepend[data-v-575ccba7],.input-wrapper .input-append[data-v-575ccba7]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0;line-height:var(--input-line-height);-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);background-color:var(----prepend-append--background);font-size:var(----font-size)}.input-wrapper .input-prepend[data-v-575ccba7]>*,.input-wrapper .input-append[data-v-575ccba7]>*{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:auto 1 0px;flex:auto 1 0;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:0;padding-left:var(----prefix-suffix--padding-left);padding-right:var(----prefix-suffix--padding-right)}.input-wrapper .input-prepend>[class$=-wrapper][data-v-575ccba7],.input-wrapper .input-append>[class$=-wrapper][data-v-575ccba7]{padding-left:0;padding-right:0}.input-wrapper .input-prepend[data-v-575ccba7],.input-wrapper .input-prepend[data-v-575ccba7]>*:first-child{border-top-left-radius:var(----border-top-left-radius);border-bottom-left-radius:var(----border-bottom-left-radius)}.input-wrapper .input-append[data-v-575ccba7],.input-wrapper .input-append[data-v-575ccba7]>*:last-child{border-top-right-radius:var(----border-top-right-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.input-wrapper .input[data-v-575ccba7]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background-clip:padding-box;border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);-webkit-transition-property:background-color,color,border-color,-webkit-box-shadow;transition-property:background-color,color,border-color,-webkit-box-shadow;transition-property:background-color,color,border-color,box-shadow;transition-property:background-color,color,border-color,box-shadow,-webkit-box-shadow;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----color);background-color:var(----background);font-size:var(----font-size)}.input-wrapper .input[data-v-575ccba7]:hover{----border-color: var(----border-color--hover)}.input-wrapper .input[data-v-575ccba7]:focus-within{outline:0;-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);----border-color: var(----border-color--focus)}.input-wrapper .input>input[data-v-575ccba7],.input-wrapper .input>select[data-v-575ccba7],.input-wrapper .input>textarea[data-v-575ccba7]{position:relative;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;width:1%;background:transparent;border:0;margin:0;outline:0;line-height:var(----line-height);color:var(----color);padding:var(----padding)}.input-wrapper .input>input[data-v-575ccba7]::-ms-expand,.input-wrapper .input>select[data-v-575ccba7]::-ms-expand,.input-wrapper .input>textarea[data-v-575ccba7]::-ms-expand{background-color:transparent;border:0}.input-wrapper .input>input[data-v-575ccba7]::-webkit-input-placeholder,.input-wrapper .input>select[data-v-575ccba7]::-webkit-input-placeholder,.input-wrapper .input>textarea[data-v-575ccba7]::-webkit-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input[data-v-575ccba7]::-moz-placeholder,.input-wrapper .input>select[data-v-575ccba7]::-moz-placeholder,.input-wrapper .input>textarea[data-v-575ccba7]::-moz-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input[data-v-575ccba7]:-ms-input-placeholder,.input-wrapper .input>select[data-v-575ccba7]:-ms-input-placeholder,.input-wrapper .input>textarea[data-v-575ccba7]:-ms-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input[data-v-575ccba7]::-ms-input-placeholder,.input-wrapper .input>select[data-v-575ccba7]::-ms-input-placeholder,.input-wrapper .input>textarea[data-v-575ccba7]::-ms-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input[data-v-575ccba7]::placeholder,.input-wrapper .input>select[data-v-575ccba7]::placeholder,.input-wrapper .input>textarea[data-v-575ccba7]::placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input[data-v-575ccba7]:disabled,.input-wrapper .input>input[readonly][data-v-575ccba7],.input-wrapper .input>select[data-v-575ccba7]:disabled,.input-wrapper .input>select[readonly][data-v-575ccba7],.input-wrapper .input>textarea[data-v-575ccba7]:disabled,.input-wrapper .input>textarea[readonly][data-v-575ccba7]{opacity:1;cursor:default}.input-wrapper .input>input[readonly][data-v-575ccba7]:focus,.input-wrapper .input>select[readonly][data-v-575ccba7]:focus,.input-wrapper .input>textarea[readonly][data-v-575ccba7]:focus{outline:0}.input-wrapper .input .input-prefix[data-v-575ccba7],.input-wrapper .input .input-suffix[data-v-575ccba7]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;font-style:normal;-webkit-transition-property:border-color;transition-property:border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);border-color:var(----border-color);color:var(----prefix-suffix--color);padding-right:var(----prefix-suffix--padding-right);padding-left:var(----prefix-suffix--padding-left)}.input-wrapper .input .input-prefix>button[data-v-575ccba7],.input-wrapper .input .input-suffix>button[data-v-575ccba7]{background:transparent;border:0;color:inherit}.input-wrapper .input .input-prefix[data-v-575ccba7]{border-right-width:var(----prefix--border-width);border-right-style:var(----prefix-suffix--border-style)}.input-wrapper .input .input-suffix[data-v-575ccba7]{border-left-width:var(----suffix--border-width);border-left-style:var(----prefix-suffix--border-style)}.input-wrapper .input .input-clear[data-v-575ccba7]{-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;width:var(----clear--size);height:var(----clear--size);border-radius:100%;background-color:var(----clear--background);color:var(----clear--color)}.input-wrapper .input .input-clear[data-v-575ccba7]:hover,.input-wrapper .input .input-clear[data-v-575ccba7]:focus{----clear--color: var(----clear--color--hover);----clear--background: var(----clear--background--hover)}.input-wrapper .input .input-clear[data-v-575ccba7]:active{----clear--background: var(----clear--background--active)}.input-wrapper .input .input-clear[data-v-575ccba7]:before{background-color:var(----clear--color);content:"";-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:8px 8px;mask-size:8px 8px;height:8px;width:8px}.input-wrapper.-prepended[data-v-575ccba7],.input-wrapper.-appended[data-v-575ccba7]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.input-wrapper.-prepended>.input[data-v-575ccba7],.input-wrapper.-appended>.input[data-v-575ccba7]{-ms-flex-negative:1;flex-shrink:1}.input-wrapper.-prepended>.input[data-v-575ccba7]{border-top-left-radius:0;border-bottom-left-radius:0}.input-wrapper.-appended>.input[data-v-575ccba7]{border-top-right-radius:0;border-bottom-right-radius:0}.input-wrapper.-error>.input[data-v-575ccba7]{----border-color: var(--color--danger)}.input-wrapper.-disabled>.input[data-v-575ccba7],.input-wrapper.-readonly>.input[data-v-575ccba7]{----color: var(----color--disabled);----background: var(----background--disabled)}.input-wrapper.-disabled>.input[data-v-575ccba7]:hover,.input-wrapper.-readonly>.input[data-v-575ccba7]:hover{border-color:var(----border-color)}.input-wrapper.-disabled>.input>input[data-v-575ccba7]:disabled,.input-wrapper.-disabled>.input>input[readonly][data-v-575ccba7],.input-wrapper.-disabled>.input>select[data-v-575ccba7]:disabled,.input-wrapper.-disabled>.input>select[readonly][data-v-575ccba7],.input-wrapper.-disabled>.input>textarea[data-v-575ccba7]:disabled,.input-wrapper.-disabled>.input>textarea[readonly][data-v-575ccba7],.input-wrapper.-readonly>.input>input[data-v-575ccba7]:disabled,.input-wrapper.-readonly>.input>input[readonly][data-v-575ccba7],.input-wrapper.-readonly>.input>select[data-v-575ccba7]:disabled,.input-wrapper.-readonly>.input>select[readonly][data-v-575ccba7],.input-wrapper.-readonly>.input>textarea[data-v-575ccba7]:disabled,.input-wrapper.-readonly>.input>textarea[readonly][data-v-575ccba7]{----color: var(----color--disabled)}.input-wrapper.-readonly>.input[data-v-575ccba7]:focus-within{outline:0;----border-color: var(----border-color--focus)}.form[data-v-575ccba7]{position:relative}.form-group{----margin-top: var(--margin-top)}.form-group{display:block;vertical-align:middle;position:relative}.form-group+.form-group{margin-top:var(----margin-top)}.form-group.-inline{display:-webkit-box;display:-ms-flexbox;display:flex}.form-group.-inline>.form-input-group{-ms-flex-preferred-size:100%;flex-basis:100%}.form-group.-inline>.form-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-item-align:center;align-self:center;margin-bottom:0}.form-group.-inline>.form-label.-right{margin-right:0}.form-error{----font-size: var(--font-size--sm);----margin-top: calc(var(--margin-top) / 4);----margin-right: 0;----margin-bottom: 0;----margin-left: 0;----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----color: var(--color--danger)}.form-error{position:relative;margin:var(----margin);padding:0;list-style:none;color:var(----color);font-size:var(--font-size--sm)}.form-error li{margin:0}.form-label{----font-size: var(--font-size);----margin-top: 0;----margin-right: var(--margin-right);----margin-bottom: calc(var(--margin-bottom) / 4);----margin-left: var(--margin-left)}.form.-sm .form-label,.form-group.-sm .form-label,.form-label.-sm{----font-size: calc(var(--font-size) * var(--size-multiplier--sm))}.form.-md .form-label,.form-group.-md .form-label,.form-label.-md{----font-size: calc(var(--font-size) * var(--size-multiplier--md))}.form.-lg .form-label,.form-group.-lg .form-label,.form-label.-lg{----font-size: calc(var(--font-size) * var(--size-multiplier--lg))}.form-label{position:relative;-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-transition:color var(--transition-easing) var(--transition-duration);transition:color var(--transition-easing) var(--transition-duration);font-size:var(----font-size);margin-top:var(----margin-top);margin-bottom:var(----margin-bottom)}.form-label.-right{margin-right:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.form-group.-required>.form-label:after{color:var(--color--danger);content:" *"}.form-group.-error>.form-label{color:var(--color-danger)}.form-group.-inline>.form-label{margin-right:var(----margin-right)}.form-group.-inline>.form-label.-right{margin-left:var(----margin-left)}.hamburger-menu{----background: var(--color--dark);----opacity: .7;----opacity--hover: 1;----padding-top: calc(var(--padding-top) / 2);----padding-right: calc(var(--padding-right) / 2);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: calc(var(--padding-left) / 2);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----bar--border-radius: 2px;----bar--spacing: 5px;----bar--width: 30px;----bar--height: 3px}.hamburger-menu.-light{----background: var(--color--dark)}.hamburger-menu.-dark{----background: var(--color--light)}.hamburger-menu{opacity:var(----opacity);padding:var(----padding);width:var(----bar--width);height:calc(var(----bar--height) * 3 + var(----bar--spacing) * 2);display:inline-block;position:relative;-webkit-box-sizing:content-box;box-sizing:content-box;cursor:pointer;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.hamburger-menu:hover{----opacity: var(----opacity--hover)}.hamburger-menu>.hamburger-menu-bars{display:block;top:50%;margin-top:calc(var(----bar--height) / -2)}.hamburger-menu>.hamburger-menu-bars,.hamburger-menu>.hamburger-menu-bars:before,.hamburger-menu>.hamburger-menu-bars:after{width:var(----bar--width);height:var(----bar--height);border-radius:var(----bar--border-radius);background:var(----background);position:absolute;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.hamburger-menu>.hamburger-menu-bars:before,.hamburger-menu>.hamburger-menu-bars:after{content:"";display:block}.hamburger-menu>.hamburger-menu-bars:before{top:calc(var(----bar--spacing) * -1 + var(----bar--height) * -1)}.hamburger-menu>.hamburger-menu-bars:after{bottom:calc(var(----bar--spacing) * -1 + var(----bar--height) * -1)}.hamburger-menu.-close>.hamburger-menu-bars{-webkit-transition-duration:.22s;transition-duration:.22s;-webkit-transition-timing-function:cubic-bezier(.55,.055,.675,.19);transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger-menu.-close>.hamburger-menu-bars:before{-webkit-transition:top .1s .25s ease-in,opacity .1s ease-in;transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger-menu.-close>.hamburger-menu-bars:after{-webkit-transition:bottom .1s .25s ease-in,-webkit-transform .22s cubic-bezier(.55,.055,.675,.19);transition:bottom .1s .25s ease-in,-webkit-transform .22s cubic-bezier(.55,.055,.675,.19);transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19);transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19),-webkit-transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger-menu.-close.-active>.hamburger-menu-bars{-webkit-transform:rotate(225deg);transform:rotate(225deg);-webkit-transition-delay:.12s;transition-delay:.12s;-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger-menu.-close.-active>.hamburger-menu-bars:before{top:0;opacity:0;-webkit-transition:top .1s ease-out,opacity .1s .12s ease-out;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger-menu.-close.-active>.hamburger-menu-bars:after{bottom:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transition:bottom .1s ease-out,-webkit-transform .22s .12s cubic-bezier(.215,.61,.355,1);transition:bottom .1s ease-out,-webkit-transform .22s .12s cubic-bezier(.215,.61,.355,1);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1),-webkit-transform .22s .12s cubic-bezier(.215,.61,.355,1)}.hamburger-menu.-arrow-left.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(calc(var(----bar--width) * -.2),0,0) rotate(-45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * -.2),0,0) rotate(-45deg) scaleX(.7)}.hamburger-menu.-arrow-left.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(calc(var(----bar--width) * -.2),0,0) rotate(45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * -.2),0,0) rotate(45deg) scaleX(.7)}.hamburger-menu.-arrow-right.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scaleX(.7)}.hamburger-menu.-arrow-right.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scaleX(.7)}.hamburger-menu.-arrow-up.-active>.hamburger-menu-bars{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.hamburger-menu.-arrow-up.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scaleX(.7)}.hamburger-menu.-arrow-up.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scaleX(.7)}.hamburger-menu.-arrow-down.-active>.hamburger-menu-bars{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.hamburger-menu.-arrow-down.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scaleX(.7)}.hamburger-menu.-arrow-down.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scaleX(.7)}.hamburger-menu.-minus.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(0,calc(var(----bar--spacing) + var(----bar--height)),0);transform:translate3d(0,calc(var(----bar--spacing) + var(----bar--height)),0)}.hamburger-menu.-minus.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(0,calc(var(----bar--spacing) * -1 + var(----bar--height) * -1),0);transform:translate3d(0,calc(var(----bar--spacing) * -1 + var(----bar--height) * -1),0)}.hamburger-menu.-plus.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(0,calc(var(----bar--spacing) + var(----bar--height)),0);transform:translate3d(0,calc(var(----bar--spacing) + var(----bar--height)),0)}.hamburger-menu.-plus.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(0,calc(var(----bar--spacing) * -1 + var(----bar--height) * -1),0) rotate(90deg);transform:translate3d(0,calc(var(----bar--spacing) * -1 + var(----bar--height) * -1),0) rotate(90deg)}.row{-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:calc(var(--gutter--xs) / -2);margin-right:calc(var(--gutter--xs) / -2)}@media screen and (min-width: 576px){.row{margin-left:calc(var(--gutter--sm) / -2);margin-right:calc(var(--gutter--sm) / -2)}}@media screen and (min-width: 768px){.row{margin-left:calc(var(--gutter--md) / -2);margin-right:calc(var(--gutter--md) / -2)}}@media screen and (min-width: 992px){.row{margin-left:calc(var(--gutter--lg) / -2);margin-right:calc(var(--gutter--lg) / -2)}}@media screen and (min-width: 1200px){.row{margin-left:calc(var(--gutter--xl) / -2);margin-right:calc(var(--gutter--xl) / -2)}}@media screen and (min-width: 1400px){.row{margin-left:calc(var(--gutter--xxl) / -2);margin-right:calc(var(--gutter--xxl) / -2)}}.row.-no-gutter{margin-left:0;margin-right:0}.row.-no-gutter>.column{padding-left:0;padding-right:0}.row.-no-collapse{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.row.-start-xs{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-xs{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-xs{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-xs{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-xs{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-xs{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-xs{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-xs{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-xs{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}@media screen and (min-width: 576px){.row.-start-sm{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-sm{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-sm{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-sm{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-sm{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-sm{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-sm{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-sm{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-sm{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media screen and (min-width: 768px){.row.-start-md{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-md{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-md{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-md{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-md{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-md{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-md{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-md{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-md{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media screen and (min-width: 992px){.row.-start-lg{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-lg{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-lg{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-lg{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-lg{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-lg{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-lg{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-lg{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-lg{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media screen and (min-width: 1200px){.row.-start-xl{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-xl{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-xl{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-xl{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-xl{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-xl{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-xl{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-xl{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-xl{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media screen and (min-width: 1400px){.row.-start-xxl{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-xxl{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-xxl{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-xxl{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-xxl{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-xxl{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-xxl{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-xxl{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-xxl{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}.row.-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around{-ms-flex-pack:distribute;justify-content:space-around}.row.-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.header{----background: var(--color--light);----color: var(--contrast-color-for-light-background);----padding-top: 10rem;----padding-right: 0rem;----padding-bottom: 10rem;----padding-left: 0rem;----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left)}.header.-sm{----padding-top: calc(10rem * var(--size-multiplier--sm));----padding-right: calc(0rem * var(--size-multiplier--sm));----padding-bottom: calc(10rem * var(--size-multiplier--sm));----padding-left: calc(0rem * var(--size-multiplier--sm))}.header.-md{----padding-top: calc(10rem * var(--size-multiplier--md));----padding-right: calc(0rem * var(--size-multiplier--md));----padding-bottom: calc(10rem * var(--size-multiplier--md));----padding-left: calc(0rem * var(--size-multiplier--md))}.header.-lg{----padding-top: calc(10rem * var(--size-multiplier--lg));----padding-right: calc(0rem * var(--size-multiplier--lg));----padding-bottom: calc(10rem * var(--size-multiplier--lg));----padding-left: calc(0rem * var(--size-multiplier--lg))}.header.-primary{----background: var(--color--primary);----color: var(--contrast-color-for-dark-background)}.header.-light{----background: var(--color--light);----color: var(--contrast-color-for-light-background)}.header.-dark{----background: var(--color--dark);----color: var(--contrast-color-for-dark-background)}.header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----color);background:var(----background);padding:var(----padding)}.header>.container,.header h1,.header h2,.header h3,.header h4,.header h5,.header h6,.header .h1,.header .h2,.header .h3,.header .h4,.header .h5,.header .h6{margin-top:0}.header.-cover{background-repeat:no-repeat;background-position:center center;background-attachment:scroll;background-attachment:initial;background-size:cover}.header.-fullscreen{padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100vw;height:100vh;max-width:100%;max-height:100%}.inkline-icon{----size: 1rem}.inkline-icon.-sm{----size: calc(1rem * var(--size-multiplier--sm))}.inkline-icon.-md{----size: calc(1rem * var(--size-multiplier--md))}.inkline-icon.-lg{----size: calc(1rem * var(--size-multiplier--lg))}.inkline-icon{height:var(----size)}.input-wrapper{----background: var(--color--white);----background--disabled: var(--color--light-25);----border-color: var(--color--light-55);----border-color--hover: var(--color--light-60);----border-color--focus: var(--color--primary);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----color--disabled: var(--color--light-75);----font-size: var(--font-size);----line-height: var(--line-height);----padding-top: calc(var(--padding-top) / 2);----padding-right: var(--padding-right);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----clear--background: transparent;----clear--background--hover: var(--color--light-30);----clear--background--active: var(--color--light-40);----clear--color: var(--color--light-70);----clear--size: 1.2rem;----placeholder--color: var(--color--light-60);----prefix--border-width: var(----border-right-width);----suffix--border-width: var(----border-left-width);----prefix-suffix--border-style: var(--border-style);----prefix-suffix--color: var(--color--light-70);----prefix-suffix--padding-right: var(----padding-right);----prefix-suffix--padding-left: var(----padding-left);----prepend-append--background: var(--color--light)}.form.-sm .input-wrapper,.form-group.-sm .input-wrapper,.input-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.form.-md .input-wrapper,.form-group.-md .input-wrapper,.input-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.form.-lg .input-wrapper,.form-group.-lg .input-wrapper,.input-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.form.-light .input-wrapper,.form-group.-light .input-wrapper,.input-wrapper.-light{----background: var(--color--white);----background--disabled: var(--color--light-25);----border-color: var(--color--light-55);----border-color--hover: var(--color--light-60);----border-color--focus: var(--color--primary);----color: var(--contrast-color-for-light-background);----color--disabled: var(--color--light-75);----clear--background: transparent;----clear--background--hover: var(--color--light-30);----clear--background--active: var(--color--light-40);----clear--color: var(--color--light-70);----placeholder--color: var(--color--light-60);----prefix-suffix--color: var(--color--light-70);----prepend-append--background: var(--color--light)}.form.-dark .input-wrapper,.form-group.-dark .input-wrapper,.input-wrapper.-dark{----background: var(--color--dark);----background--disabled: var(--color--dark-40);----border-color: var(--color--dark-45);----border-color--hover: var(--color--dark-40);----border-color--focus: var(--color--primary);----color: var(--contrast-color-for-dark-background);----color--disabled: var(--color--gray-35);----clear--background: transparent;----clear--background--hover: var(--color--dark-35);----clear--background--active: var(--color--dark-30);----clear--color: var(--color--dark-30);----placeholder--color: var(--color--dark-25);----prefix-suffix--color: var(--color--dark-25);----prepend-append--background: var(--color--dark)}.input-wrapper{display:block;vertical-align:middle;position:relative}.input-wrapper .input-prepend,.input-wrapper .input-append{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0;line-height:var(--input-line-height);-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);background-color:var(----prepend-append--background);font-size:var(----font-size)}.input-wrapper .input-prepend>*,.input-wrapper .input-append>*{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:auto 1 0px;flex:auto 1 0;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:0;padding-left:var(----prefix-suffix--padding-left);padding-right:var(----prefix-suffix--padding-right)}.input-wrapper .input-prepend>[class$=-wrapper],.input-wrapper .input-append>[class$=-wrapper]{padding-left:0;padding-right:0}.input-wrapper .input-prepend,.input-wrapper .input-prepend>*:first-child{border-top-left-radius:var(----border-top-left-radius);border-bottom-left-radius:var(----border-bottom-left-radius)}.input-wrapper .input-append,.input-wrapper .input-append>*:last-child{border-top-right-radius:var(----border-top-right-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.input-wrapper .input{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background-clip:padding-box;border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);-webkit-transition-property:background-color,color,border-color,-webkit-box-shadow;transition-property:background-color,color,border-color,-webkit-box-shadow;transition-property:background-color,color,border-color,box-shadow;transition-property:background-color,color,border-color,box-shadow,-webkit-box-shadow;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----color);background-color:var(----background);font-size:var(----font-size)}.input-wrapper .input:hover{----border-color: var(----border-color--hover)}.input-wrapper .input:focus-within{outline:0;-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);----border-color: var(----border-color--focus)}.input-wrapper .input>input,.input-wrapper .input>select,.input-wrapper .input>textarea{position:relative;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;width:1%;background:transparent;border:0;margin:0;outline:0;line-height:var(----line-height);color:var(----color);padding:var(----padding)}.input-wrapper .input>input::-ms-expand,.input-wrapper .input>select::-ms-expand,.input-wrapper .input>textarea::-ms-expand{background-color:transparent;border:0}.input-wrapper .input>input::-webkit-input-placeholder,.input-wrapper .input>select::-webkit-input-placeholder,.input-wrapper .input>textarea::-webkit-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input::-moz-placeholder,.input-wrapper .input>select::-moz-placeholder,.input-wrapper .input>textarea::-moz-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input:-ms-input-placeholder,.input-wrapper .input>select:-ms-input-placeholder,.input-wrapper .input>textarea:-ms-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input::-ms-input-placeholder,.input-wrapper .input>select::-ms-input-placeholder,.input-wrapper .input>textarea::-ms-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input::placeholder,.input-wrapper .input>select::placeholder,.input-wrapper .input>textarea::placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input:disabled,.input-wrapper .input>input[readonly],.input-wrapper .input>select:disabled,.input-wrapper .input>select[readonly],.input-wrapper .input>textarea:disabled,.input-wrapper .input>textarea[readonly]{opacity:1;cursor:default}.input-wrapper .input>input[readonly]:focus,.input-wrapper .input>select[readonly]:focus,.input-wrapper .input>textarea[readonly]:focus{outline:0}.input-wrapper .input .input-prefix,.input-wrapper .input .input-suffix{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;font-style:normal;-webkit-transition-property:border-color;transition-property:border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);border-color:var(----border-color);color:var(----prefix-suffix--color);padding-right:var(----prefix-suffix--padding-right);padding-left:var(----prefix-suffix--padding-left)}.input-wrapper .input .input-prefix>button,.input-wrapper .input .input-suffix>button{background:transparent;border:0;color:inherit}.input-wrapper .input .input-prefix{border-right-width:var(----prefix--border-width);border-right-style:var(----prefix-suffix--border-style)}.input-wrapper .input .input-suffix{border-left-width:var(----suffix--border-width);border-left-style:var(----prefix-suffix--border-style)}.input-wrapper .input .input-clear{-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;width:var(----clear--size);height:var(----clear--size);border-radius:100%;background-color:var(----clear--background);color:var(----clear--color)}.input-wrapper .input .input-clear:hover,.input-wrapper .input .input-clear:focus{----clear--color: var(----clear--color--hover);----clear--background: var(----clear--background--hover)}.input-wrapper .input .input-clear:active{----clear--background: var(----clear--background--active)}.input-wrapper .input .input-clear:before{background-color:var(----clear--color);content:"";-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:8px 8px;mask-size:8px 8px;height:8px;width:8px}.input-wrapper.-prepended,.input-wrapper.-appended{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.input-wrapper.-prepended>.input,.input-wrapper.-appended>.input{-ms-flex-negative:1;flex-shrink:1}.input-wrapper.-prepended>.input{border-top-left-radius:0;border-bottom-left-radius:0}.input-wrapper.-appended>.input{border-top-right-radius:0;border-bottom-right-radius:0}.input-wrapper.-error>.input{----border-color: var(--color--danger)}.input-wrapper.-disabled>.input,.input-wrapper.-readonly>.input{----color: var(----color--disabled);----background: var(----background--disabled)}.input-wrapper.-disabled>.input:hover,.input-wrapper.-readonly>.input:hover{border-color:var(----border-color)}.input-wrapper.-disabled>.input>input:disabled,.input-wrapper.-disabled>.input>input[readonly],.input-wrapper.-disabled>.input>select:disabled,.input-wrapper.-disabled>.input>select[readonly],.input-wrapper.-disabled>.input>textarea:disabled,.input-wrapper.-disabled>.input>textarea[readonly],.input-wrapper.-readonly>.input>input:disabled,.input-wrapper.-readonly>.input>input[readonly],.input-wrapper.-readonly>.input>select:disabled,.input-wrapper.-readonly>.input>select[readonly],.input-wrapper.-readonly>.input>textarea:disabled,.input-wrapper.-readonly>.input>textarea[readonly]{----color: var(----color--disabled)}.input-wrapper.-readonly>.input:focus-within{outline:0;----border-color: var(----border-color--focus)}.layout[data-v-9a9f03c1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;position:relative}.layout[data-v-9a9f03c1],.layout[data-v-9a9f03c1] *{-webkit-box-sizing:border-box;box-sizing:border-box}.layout.-vertical[data-v-9a9f03c1]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:100%}.layout.-vertical>.layout[data-v-9a9f03c1],.layout.-vertical>.container[data-v-9a9f03c1]{overflow-x:hidden}.layout>.container[data-v-9a9f03c1]{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.layout-aside[data-v-6e13c28d]{----width: 320px}.layout-aside[data-v-6e13c28d]{-webkit-transition:all .2s;transition:all .2s;position:relative;width:var(----width);-webkit-box-flex:0;-ms-flex:0 0 var(----width);flex:0 0 var(----width);min-width:0}.layout-aside-children[data-v-6e13c28d]{height:100%;padding-top:.1px;margin-top:-.1px}.layout-aside.-right[data-v-6e13c28d]{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.layout-content[data-v-5b197a5d]{-webkit-box-flex:1;-ms-flex:auto;flex:auto;min-width:0}.layout-footer[data-v-31bd8dbc],.layout-header[data-v-ece9ef9b]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.list-group{----background: var(--color--white);----background--active: var(--color--primary);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-color--active: var(--color--primary-55);----border-style: solid;----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----color: var(--contrast-color-for-light-background);----color--active: var(--contrast-color-for-dark-background);----color--disabled: var(--text-muted);----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left)}.list-group.-light{----background: var(--color--white);----background--active: var(--color--primary);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color--active: var(--color--primary-55);----color: var(--contrast-color-for-light-background);----color--active: var(--contrast-color-for-dark-background);----color--disabled: var(--text-muted)}.list-group.-dark{----background: var(--color--dark);----background--active: var(--color--primary);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----border-color--active: var(--color--primary-55);----color: var(--contrast-color-for-dark-background);----color--active: var(--contrast-color-for-dark-background);----color--disabled: var(--text-muted)}.list-group.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.list-group.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.list-group.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-transition-property:background-color,border-color;transition-property:background-color,border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);background-color:var(----background);color:var(----color);font-size:var(----font-size);border-radius:var(----border-radius)}.list-group.-border{border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color)}.list-group .list-group-item{display:block;margin-bottom:0;border-bottom-width:var(----border-bottom-width);border-bottom-style:var(----border-style);border-bottom-color:var(----border-bottom-color);-webkit-transition-property:color,border-color;transition-property:color,border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);padding:var(----padding)}.list-group .list-group-item.-active{color:var(----color--active);background:var(----background--active);border-bottom-color:var(----border-color--active)}.list-group .list-group-item:first-child{border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.list-group .list-group-item:last-child{border-bottom-width:0;border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.list-group .list-group-item:hover,.list-group .list-group-item:focus{-webkit-text-decoration:none;text-decoration:none}.list-group .list-group-item>*:first-child{margin-top:0}.list-group .list-group-item>*:last-child{margin-bottom:0}.list-group .list-group-item.-disabled{color:var(----color--disabled);pointer-events:none;cursor:default}.media{----image--margin-right: var(--margin-right)}.media{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.media>.media-body{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.media>.media-body>*:first-child{margin-top:0}.media>.media-body>*:last-child{margin-bottom:0}.media>img,.media>.img,.media>.image{-ms-flex-item-align:start;align-self:flex-start;height:auto;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:var(----image--margin-right)}.modal-wrapper{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----margin-top: var(--margin-top);----margin-right: var(--margin-right);----margin-bottom: var(--margin-bottom);----margin-left: var(--margin-left);----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----width: 480px;----header--background: var(--color--light-25);----header--border-color: var(----border-color);----header--border-style: var(----border-style);----header--border-top-width: var(----border-top-width);----header--border-right-width: var(----border-right-width);----header--border-bottom-width: var(----border-bottom-width);----header--border-left-width: var(----border-left-width);----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--color: var(----color);----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--background: var(----background);----body--border-color: var(----border-color);----body--border-style: var(----border-style);----body--border-top-width: var(----border-top-width);----body--border-right-width: var(----border-right-width);----body--border-bottom-width: var(----border-bottom-width);----body--border-left-width: var(----border-left-width);----body--border-width: var(----body--border-top-width) var(----body--border-right-width) var(----body--border-bottom-width) var(----body--border-left-width);----body--color: var(----color);----body--padding-top: var(----padding-top);----body--padding-right: var(----padding-right);----body--padding-bottom: var(----padding-bottom);----body--padding-left: var(----padding-left);----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left);----footer--background: var(--color--light-25);----footer--border-color: var(----border-color);----footer--border-style: var(----border-style);----footer--border-top-width: var(----border-top-width);----footer--border-right-width: var(----border-right-width);----footer--border-bottom-width: var(----border-bottom-width);----footer--border-left-width: var(----border-left-width);----footer--border-width: var(----footer--border-top-width) var(----footer--border-right-width) var(----footer--border-bottom-width) var(----footer--border-left-width);----footer--color: var(----color);----footer--padding-top: var(----padding-top);----footer--padding-right: var(----padding-right);----footer--padding-bottom: var(----padding-bottom);----footer--padding-left: var(----padding-left);----footer--padding: var(----footer--padding-top) var(----footer--padding-right) var(----footer--padding-bottom) var(----footer--padding-left);----wrapper--background: rgba(0, 0, 0, .75)}.modal-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----margin-top: calc(var(--margin-top) * var(--size-multiplier--sm));----margin-right: calc(var(--margin-right) * var(--size-multiplier--sm));----margin-bottom: calc(var(--margin-bottom) * var(--size-multiplier--sm));----margin-left: calc(var(--margin-left) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----width: calc(480px * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.modal-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----margin-top: calc(var(--margin-top) * var(--size-multiplier--md));----margin-right: calc(var(--margin-right) * var(--size-multiplier--md));----margin-bottom: calc(var(--margin-bottom) * var(--size-multiplier--md));----margin-left: calc(var(--margin-left) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----width: calc(480px * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.modal-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----margin-top: calc(var(--margin-top) * var(--size-multiplier--lg));----margin-right: calc(var(--margin-right) * var(--size-multiplier--lg));----margin-bottom: calc(var(--margin-bottom) * var(--size-multiplier--lg));----margin-left: calc(var(--margin-left) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----width: calc(480px * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.modal-wrapper.-primary{----background: var(--color--primary);----border-top-color: var(--color--primary-60);----border-right-color: var(--color--primary-60);----border-bottom-color: var(--color--primary-60);----border-left-color: var(--color--primary-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--primary-55);----footer--background: var(--color--primary-55)}.modal-wrapper.-secondary{----background: var(--color--secondary);----border-top-color: var(--color--secondary-60);----border-right-color: var(--color--secondary-60);----border-bottom-color: var(--color--secondary-60);----border-left-color: var(--color--secondary-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--secondary-55);----footer--background: var(--color--secondary-55)}.modal-wrapper.-light{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background);----header--background: var(--color--light-25);----footer--background: var(--color--light-25)}.modal-wrapper.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--dark-55);----footer--background: var(--color--dark-55)}.modal-wrapper.-info{----background: var(--color--info);----border-top-color: var(--color--info-60);----border-right-color: var(--color--info-60);----border-bottom-color: var(--color--info-60);----border-left-color: var(--color--info-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--info-55);----footer--background: var(--color--info-55)}.modal-wrapper.-success{----background: var(--color--success);----border-top-color: var(--color--success-60);----border-right-color: var(--color--success-60);----border-bottom-color: var(--color--success-60);----border-left-color: var(--color--success-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--success-55);----footer--background: var(--color--success-55)}.modal-wrapper.-warning{----background: var(--color--warning);----border-top-color: var(--color--warning-60);----border-right-color: var(--color--warning-60);----border-bottom-color: var(--color--warning-60);----border-left-color: var(--color--warning-60);----color: var(--contrast-color-for-light-background);----header--background: var(--color--warning-55);----footer--background: var(--color--warning-55)}.modal-wrapper.-danger{----background: var(--color--danger);----border-top-color: var(--color--danger-60);----border-right-color: var(--color--danger-60);----border-bottom-color: var(--color--danger-60);----border-left-color: var(--color--danger-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--danger-55);----footer--background: var(--color--danger-55)}.modal-wrapper{background:var(----wrapper--background);position:fixed;top:0;left:0;z-index:2000;width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.modal{text-align:left;list-style:none;line-height:var(----line-height);display:block;width:calc(100% - var(----margin-left) - var(----margin-right));max-width:var(----width);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.modal>.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:var(----header--background);border-color:var(----header--border-color);border-style:var(----header--border-style);border-width:var(----header--border-width);border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius);color:var(----header--color);padding:var(----header--padding)}.modal>.modal-header>.close{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:1.5rem;width:1.5rem;line-height:1.5rem;font-size:.5rem;cursor:pointer;padding:0;border:0;-webkit-transition:background-color .3s ease;transition:background-color .3s ease;background-color:transparent;border-radius:var(----border-radius)}.modal>.modal-header>.close>.icon{-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(----header--color);width:var(----font-size);height:var(----font-size);-webkit-mask-size:calc(var(----font-size) / 2) calc(var(----font-size) / 2);mask-size:calc(var(----font-size) / 2) calc(var(----font-size) / 2)}.modal>.modal-header>.close:hover,.modal>.modal-header>.close:focus{outline:none;background-color:#0000001a}.modal>.modal-header>.close:active{background-color:#00000026}.modal>.modal-body{background:var(----body--background);border-color:var(----body--border-color);border-style:var(----body--border-style);border-width:var(----body--border-width);color:var(----body--color);padding:var(----body--padding)}.modal>.modal-footer{background:var(----footer--background);border-color:var(----footer--border-color);border-style:var(----footer--border-style);border-width:var(----footer--border-width);border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius);color:var(----footer--color);padding:var(----footer--padding)}.modal>.modal-header+.modal-body,.modal>.modal-header+.modal-footer,.modal>.modal-body+.modal-footer,.modal>.modal-body+.modal-body{border-top-width:0}.nav.-light{----color: var(--contrast-color-for-light-background);----color--active: var(--contrast-color-for-dark-background);----color--disabled: var(--text-muted)}.nav.-dark{----color: var(--contrast-color-for-dark-background);----color--active: var(--contrast-color-for-dark-background);----color--disabled: var(--text-muted)}.nav.-sm{----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.nav.-md{----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.nav.-lg{----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-bottom:0;list-style:none}.nav.-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.nav{----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----color: contrast-color($color-light);----color--active: var(--color--primary);----color--disabled: var(--text-muted)}.nav .nav-item{display:block;margin-bottom:0;-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);padding:var(----padding);color:var(----color);font-size:var(----font-size)}.nav .nav-item:hover,.nav .nav-item:focus{-webkit-text-decoration:none;text-decoration:none;outline:0}.nav .nav-item.-disabled{pointer-events:none;cursor:default;color:var(----color--disabled)}.nav .nav-item.-active{----color: var(----color--active);font-weight:700}.navbar{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: 0;----padding-bottom: var(--padding-bottom);----padding-left: 0;----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----color: var(--contrast-color-for-light-background);----item--background: var(--color--light);----item--background--hover: var(--color--light-55);----item--color: var(----color);----item--color--hover: var(----color);----item--padding-top: calc(var(--padding-top) / 2);----item--padding-right: var(--padding-right);----item--padding-bottom: calc(var(--padding-bottom) / 2);----item--padding-left: var(--padding-left);----item--padding: var(----item--padding-top) var(----item--padding-right) var(----item--padding-bottom) var(----item--padding-left);----collapsed--background: var(--color--light);----collapsed--item--color: var(----color);----collapsed--item--color--hover: var(----color);----collapsed--item--background: var(----item--background);----collapsed--item--background--hover: var(----item--background--hover);----brand--margin-right: var(--margin-right)}.navbar.-light{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----color: var(--contrast-color-for-light-background);----item--background: var(--color--light);----item--background--hover: var(--color--light-55);----collapsed--background: var(--color--light)}.navbar.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-40);----border-right-color: var(--color--dark-40);----border-bottom-color: var(--color--dark-40);----border-left-color: var(--color--dark-40);----color: var(--contrast-color-for-dark-background);----item--background: var(--color--dark);----item--background--hover: var(--color--dark-45);----collapsed--background: var(--color--dark)}.navbar.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.navbar.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.navbar.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.navbar{color:var(----color);background:var(----background);padding:var(----padding);font-size:var(----font-size);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);border-radius:var(----border-radius)}.navbar>.container>.row>.column{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar .navbar-collapsible .nav-item{----color: var(----item--color);----padding: var(----item--padding);----font-size: var(----font-size);----background: var(----item--background);border-radius:var(----border-radius);background:var(----background)}.navbar .navbar-collapsible .nav-item.-focused,.navbar .navbar-collapsible .nav-item.-hovered,.navbar .navbar-collapsible .nav-item:focus,.navbar .navbar-collapsible .nav-item:hover{----color: var(----item--color--hover);----background: var(----item--background--hover)}.navbar.-collapsible .navbar-collapsible{background:var(----collapsed--background)}.navbar.-collapsible .navbar-collapsible .nav-item{----background: var(----collapsed--item--background);----color: var(----collapsed--item--color)}.navbar.-collapsible .navbar-collapsible .nav-item:hover{----color: var(----collapsed--item--color--hover);----background: var(----collapsed--item--background--hover)}.navbar .collapse-toggle{display:none}@media screen and (max-width: 575px){.navbar.-collapse-xs .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-xs .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-xs .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-xs .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-xs .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-xs .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-xs .collapse-toggle{display:inline-block}.navbar.-collapse-xs .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-xs .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}}@media screen and (max-width: 767px){.navbar.-collapse-sm .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-sm .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-sm .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-sm .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-sm .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-sm .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-sm .collapse-toggle{display:inline-block}.navbar.-collapse-sm .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-sm .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}}@media screen and (max-width: 991px){.navbar.-collapse-md .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-md .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-md .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-md .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-md .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-md .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-md .collapse-toggle{display:inline-block}.navbar.-collapse-md .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-md .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}}@media screen and (max-width: 1199px){.navbar.-collapse-lg .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-lg .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-lg .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-lg .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-lg .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-lg .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-lg .collapse-toggle{display:inline-block}.navbar.-collapse-lg .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-lg .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}}@media screen and (max-width: 1399px){.navbar.-collapse-xl .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-xl .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-xl .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-xl .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-xl .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-xl .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-xl .collapse-toggle{display:inline-block}.navbar.-collapse-xl .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-xl .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}}.navbar.-collapse-xxl .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-xxl .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-xxl .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-xxl .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-xxl .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-xxl .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-xxl .collapse-toggle{display:inline-block}.navbar.-collapse-xxl .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-xxl .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}.navbar.-collapse-true .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-true .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-true .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-true .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-true .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-true .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-true .collapse-toggle{display:inline-block}.navbar.-collapse-true .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar .navbar-brand{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:var(----color);padding:var(----item--padding);font-size:var(----font-size);margin-right:var(----brand--margin-right);line-height:inherit;white-space:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar .navbar-brand:hover,.navbar .navbar-brand:focus{-webkit-text-decoration:none;text-decoration:none}.navbar .navbar-brand>h1,.navbar .navbar-brand>h2,.navbar .navbar-brand>h3,.navbar .navbar-brand>h4,.navbar .navbar-brand>h5,.navbar .navbar-brand>h6{margin-top:0;margin-bottom:0}.navbar .navbar-collapsible{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.pagination{----background: var(--color--light);----background--hover: var(--color--light-55);----background--active: var(--color--primary);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-color--active: var(--color--primary-55);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----color--active: var(--contrast-color-for-dark-background);----font-size: var(--font-size);----margin-top: 0;----margin-right: calc(var(--margin-right) / 4);----margin-bottom: 0;----margin-left: calc(var(--margin-left) / 4);----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----min-width: 40px;----opacity--disabled: .85;----padding-top: calc(var(--padding-top) / 2);----padding-right: calc(var(--padding-right) / 2);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: calc(var(--padding-left) / 2);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left)}.pagination.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----margin-right: calc(calc(var(--margin-right) / 4) * var(--size-multiplier--sm));----margin-left: calc(calc(var(--margin-left) / 4) * var(--size-multiplier--sm));----min-width: calc(40px * var(--size-multiplier--sm));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--sm));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--sm))}.pagination.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----margin-right: calc(calc(var(--margin-right) / 4) * var(--size-multiplier--md));----margin-left: calc(calc(var(--margin-left) / 4) * var(--size-multiplier--md));----min-width: calc(40px * var(--size-multiplier--md));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--md));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--md))}.pagination.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----margin-right: calc(calc(var(--margin-right) / 4) * var(--size-multiplier--lg));----margin-left: calc(calc(var(--margin-left) / 4) * var(--size-multiplier--lg));----min-width: calc(40px * var(--size-multiplier--lg));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--lg));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--lg))}.pagination.-light{----background: var(--color--light);----background--hover: var(--color--light-55);----background--active: var(--color--primary);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color--active: var(--color--primary-55);----color: var(--contrast-color-for-light-background);----color--active: var(--contrast-color-for-dark-background)}.pagination.-dark{----background: var(--color--dark);----background--hover: var(--color--dark-45);----background--active: var(--color--primary);----border-top-color: var(--color--dark-45);----border-right-color: var(--color--dark-45);----border-bottom-color: var(--color--dark-45);----border-left-color: var(--color--dark-45);----border-color--active: var(--color--primary-55);----color: var(--contrast-color-for-dark-background);----color--active: var(--contrast-color-for-dark-background)}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;max-width:100%;font-size:var(----font-size)}.pagination .pagination-items{list-style:none;margin-bottom:0;padding-left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.pagination .pagination-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;border-color:var(----border-color);border-width:var(----border-width);border-style:var(----border-style);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);padding:var(----padding);min-width:var(----min-width);color:var(----color);background-color:var(----background);margin:var(----margin);text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-transition-property:background,color,border;transition-property:background,color,border;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.pagination .pagination-item:hover:not(.-disabled),.pagination .pagination-item:focus:not(.-disabled){----background: var(----background--hover)}.pagination .pagination-item.-active{----background: var(----background--active);----border-color: var(----border-color--active);----color: var(----color--active);font-weight:700}.pagination .pagination-item.-active:hover,.pagination .pagination-item.-active:focus{----background: var(----background--active)}.pagination .pagination-item.-disabled{cursor:default;opacity:var(----opacity--disabled)}.pagination .pagination-item.-quick-next.-disabled,.pagination .pagination-item.-quick-previous.-disabled{----border-color: var(----background);opacity:var(----opacity--disabled)}.popover-wrapper{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----margin-top: calc(var(--margin-top) / 2);----margin-right: calc(var(--margin-right) / 2);----margin-bottom: calc(var(--margin-bottom) / 2);----margin-left: calc(var(--margin-left) / 2);----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----padding-top: calc(var(--padding-top) * 3 / 4);----padding-right: var(--padding-right);----padding-bottom: calc(var(--padding-bottom) * 3 / 4);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----max-width: 90vw;----width: 280px;----z-index: 2000;----header--background: var(--color--gray-05);----header--border-color: var(----border-color);----header--border-style: var(----border-style);----header--border-top-width: var(----border-top-width);----header--border-right-width: var(----border-right-width);----header--border-bottom-width: var(----border-bottom-width);----header--border-left-width: var(----border-left-width);----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--color: var(----color);----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--background: var(----background);----body--border-color: var(----border-color);----body--border-style: var(----border-style);----body--border-top-width: var(----border-top-width);----body--border-right-width: var(----border-right-width);----body--border-bottom-width: var(----border-bottom-width);----body--border-left-width: var(----border-left-width);----body--border-width: var(----body--border-top-width) var(----body--border-right-width) var(----body--border-bottom-width) var(----body--border-left-width);----body--color: var(----color);----body--padding-top: var(----padding-top);----body--padding-right: var(----padding-right);----body--padding-bottom: var(----padding-bottom);----body--padding-left: var(----padding-left);----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left);----footer--background: var(--color--gray-05);----footer--border-color: var(----border-color);----footer--border-style: var(----border-style);----footer--border-top-width: var(----border-top-width);----footer--border-right-width: var(----border-right-width);----footer--border-bottom-width: var(----border-bottom-width);----footer--border-left-width: var(----border-left-width);----footer--border-width: var(----footer--border-top-width) var(----footer--border-right-width) var(----footer--border-bottom-width) var(----footer--border-left-width);----footer--color: var(----color);----footer--padding-top: var(----padding-top);----footer--padding-right: var(----padding-right);----footer--padding-bottom: var(----padding-bottom);----footer--padding-left: var(----padding-left);----footer--padding: var(----footer--padding-top) var(----footer--padding-right) var(----footer--padding-bottom) var(----footer--padding-left)}.popover-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--sm));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--sm));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--sm));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.popover-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--md));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--md));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--md));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.popover-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--lg));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--lg));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--lg));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.popover-wrapper.-light{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background);----header--background: var(--color--gray-05);----footer--background: var(--color--gray-05)}.popover-wrapper.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--dark-55);----footer--background: var(--color--dark-55)}.popover-wrapper{display:inline-block;position:relative}.popover-wrapper .popover-trigger{display:contents}.popover{position:fixed;z-index:var(----z-index);word-wrap:break-word;text-align:left;list-style:none;line-height:var(----line-height);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);background-clip:padding-box;display:inline-block;white-space:normal;width:var(----width);max-width:var(----max-width);color:var(----color);font-size:var(----font-size)}.popover:focus:hover{outline-width:0}.popover[data-popper-placement^=top]{-webkit-transform-origin:center bottom;transform-origin:center bottom}.popover[data-popper-placement^=bottom]{-webkit-transform-origin:center top;transform-origin:center top}.popover[data-popper-placement^=right]{-webkit-transform-origin:left center;transform-origin:left center}.popover[data-popper-placement^=left]{-webkit-transform-origin:right center;transform-origin:right center}.popover>[data-popper-arrow],.popover>[data-popper-arrow]:after{display:block;width:0;height:0;border-color:transparent;border-style:solid;position:absolute}.popover>[data-popper-arrow]:after{content:""}.popover[data-popper-placement^=top]>[data-popper-arrow]{border-bottom-width:0}.popover[data-popper-placement^=top]>[data-popper-arrow]:after{border-bottom-width:0}.popover[data-popper-placement^=bottom]>[data-popper-arrow]{border-top-width:0}.popover[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-top-width:0}.popover[data-popper-placement^=right]>[data-popper-arrow]{border-left-width:0}.popover[data-popper-placement^=right]>[data-popper-arrow]:after{border-left-width:0}.popover[data-popper-placement^=left]>[data-popper-arrow]{border-right-width:0}.popover[data-popper-placement^=left]>[data-popper-arrow]:after{border-right-width:0}.popover>[data-popper-arrow],.popover>[data-popper-arrow]:after{border-width:6px}.popover[data-popper-placement^=top]>[data-popper-arrow]:after,.popover[data-popper-placement^=bottom]>[data-popper-arrow]:after{margin-left:-6px}.popover[data-popper-placement^=left]>[data-popper-arrow]:after,.popover[data-popper-placement^=right]>[data-popper-arrow]:after{margin-top:-6px}.popover[data-popper-placement^=top]>[data-popper-arrow]{bottom:-6px}.popover[data-popper-placement^=top]>[data-popper-arrow]:after{bottom:1px}.popover[data-popper-placement^=bottom]>[data-popper-arrow]{top:-6px}.popover[data-popper-placement^=bottom]>[data-popper-arrow]:after{top:1px}.popover[data-popper-placement^=left]>[data-popper-arrow]{right:-6px}.popover[data-popper-placement^=left]>[data-popper-arrow]:after{right:1px}.popover[data-popper-placement^=right]>[data-popper-arrow]{left:-6px}.popover[data-popper-placement^=right]>[data-popper-arrow]:after{left:1px}.popover>.popover-header{border-style:var(----header--border-style);border-width:var(----header--border-width);border-bottom-width:0;border-color:var(----header--border-color);background-color:var(----header--background);padding:var(----header--padding)}.popover>.popover-body{border-style:var(----body--border-style);border-width:var(----body--border-width);background-color:var(----body--background);border-color:var(----body--border-color);padding:var(----body--padding)}.popover>.popover-footer{border-style:var(----footer--border-style);border-width:var(----footer--border-width);border-top-width:0;border-color:var(----footer--border-color);background-color:var(----footer--background);padding:var(----footer--padding)}.popover>*:nth-child(2){border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.popover>*:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.popover[data-popper-placement^=top]>[data-popper-arrow]{border-top-color:var(----border-top-color)}.popover[data-popper-placement^=top]>[data-popper-arrow]:after{border-top-color:var(----body--background)}.popover[data-popper-placement^=bottom]>[data-popper-arrow]{border-bottom-color:var(----border-bottom-color)}.popover[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-bottom-color:var(----body--background)}.popover[data-popper-placement^=left]>[data-popper-arrow]{border-left-color:var(----border-left-color)}.popover[data-popper-placement^=left]>[data-popper-arrow]:after{border-left-color:var(----body--background)}.popover[data-popper-placement^=right]>[data-popper-arrow]{border-right-color:var(----border-right-color)}.popover[data-popper-placement^=right]>[data-popper-arrow]:after{border-right-color:var(----body--background)}.progress{----background: var(--color--light);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----height: calc(var(--spacing) * 3 / 4)}.progress.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----height: calc(calc(var(--spacing) * 3 / 4) * var(--size-multiplier--sm))}.progress.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----height: calc(calc(var(--spacing) * 3 / 4) * var(--size-multiplier--md))}.progress.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----height: calc(calc(var(--spacing) * 3 / 4) * var(--size-multiplier--lg))}.progress.-light{----background: var(--color--light);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55)}.progress.-dark{----background: var(--color--dark-60);----border-top-color: var(--color--dark-45);----border-right-color: var(--color--dark-45);----border-bottom-color: var(--color--dark-45);----border-left-color: var(--color--dark-45)}.progress{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:100%;flex-basis:100%;position:relative;overflow:hidden;background:var(----background);border-radius:var(----border-radius);border-color:var(----border-color);border-style:var(----border-style);border-width:var(----border-width);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);height:var(----height)}.progress-bar,.progress-bar.-primary{----color: var(--contrast-color-for-dark-background);----background: var(--color--primary)}.progress-bar.-secondary{----color: var(--contrast-color-for-dark-background);----background: var(--color--secondary)}.progress-bar.-light{----color: var(--contrast-color-for-light-background);----background: var(--color--white)}.progress-bar.-dark{----color: var(--contrast-color-for-dark-background);----background: var(--color--dark)}.progress-bar.-info{----color: var(--contrast-color-for-dark-background);----background: var(--color--info)}.progress-bar.-success{----color: var(--contrast-color-for-dark-background);----background: var(--color--success)}.progress-bar.-warning{----color: var(--contrast-color-for-light-background);----background: var(--color--warning)}.progress-bar.-danger{----color: var(--contrast-color-for-dark-background);----background: var(--color--danger)}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;white-space:nowrap;height:100%;color:var(----color);background:var(----background)}.radio{----background: var(--color--white);----background--checked: var(--color--primary);----background--disabled: var(--color--light-25);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: 50%;----border-top-right-radius: 50%;----border-bottom-right-radius: 50%;----border-bottom-left-radius: 50%;----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--color--white);----color--disabled: var(--color--light-25);----margin-right: calc(var(--margin-right) / 2);----size: 1rem;----checkmark--size: 8px;----label--font-size: var(--font-size);----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70)}.form.-light .radio,.form-group.-light .radio,.radio.-light{----background: var(--color--white);----background--checked: var(--color--primary);----background--disabled: var(--color--light-25);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----color: var(--color--white);----color--disabled: var(--color--light-25);----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70)}.form.-dark .radio,.form-group.-dark .radio,.radio.-dark{----background: var(--color--dark);----background--checked: var(--color--primary);----background--disabled: var(--color--dark-25);----background--checked-disabled: var(--color--primary-75);----border-color: var(--color--dark);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--dark);----border-color--checked-disabled: var(--color--primary-70);----color: var(--color--white);----color--disabled: var(--color--dark-25);----label--color: var(--contrast-color-for-dark-background);----label--color--disabled: var(--color--dark-30)}.form.-sm .radio,.form-group.-sm .radio,.radio.-sm{----size: calc(1rem * var(--size-multiplier--sm));----checkmark--size: calc(8px * var(--size-multiplier--sm));----label--font-size: calc(var(--font-size) * var(--size-multiplier--sm))}.form.-md .radio,.form-group.-md .radio,.radio.-md{----size: calc(1rem * var(--size-multiplier--md));----checkmark--size: calc(8px * var(--size-multiplier--md));----label--font-size: calc(var(--font-size) * var(--size-multiplier--md))}.form.-lg .radio,.form-group.-lg .radio,.radio.-lg{----size: calc(1rem * var(--size-multiplier--lg));----checkmark--size: calc(8px * var(--size-multiplier--lg));----label--font-size: calc(var(--font-size) * var(--size-multiplier--lg))}.radio{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;white-space:nowrap;outline:none;cursor:pointer;margin-right:var(----margin-right)}.radio:last-child{margin-right:0}.radio input{top:0;left:0;position:absolute;z-index:0;opacity:0;height:0;width:0}.radio input:focus,.radio input:active{outline:none}.radio input:checked~.radio-label:before{----border-color: var(----border-color--checked);----background: var(----background--checked)}.radio input:checked~.radio-label:after{content:"";-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="28" viewBox="0 0 24 28"><title>circle</title><path d="M24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="28" viewBox="0 0 24 28"><title>circle</title><path d="M24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.radio input:disabled~.radio-label,.radio input[readonly]~.radio-label{----label--color: var(----label--color--disabled)}.radio input:disabled:checked~.radio-label:before,.radio input[readonly]:checked~.radio-label:before{----border-color: var(----border-color--checked-disabled);----background: var(----background--checked-disabled)}.radio input:disabled:checked~.radio-label:after,.radio input[readonly]:checked~.radio-label:after{----background: var(----color--disabled)}.radio .radio-label{margin-bottom:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----label--color);font-size:var(----label--font-size)}.radio .radio-label:before,.radio .radio-label:after{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;width:var(----size);height:var(----size)}.radio .radio-label:before{border-radius:100%;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition-property:background-color,border-color;transition-property:background-color,border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);margin-right:var(----margin-right);border-color:var(----border-color);border-style:var(----border-style);border-width:var(----border-width);background-color:var(----background)}.radio .radio-label:after{position:absolute;top:50%;left:0;z-index:1;text-align:center;background-color:var(----color);margin-top:calc(var(----size) / -2);-webkit-mask-size:var(----checkmark--size) var(----checkmark--size);mask-size:var(----checkmark--size) var(----checkmark--size)}.radio.-disabled{cursor:default}.radio.-disabled .radio-label:before,.radio.-disabled .radio-label:after{cursor:default}.radio.-native input{top:auto;left:auto;position:relative;opacity:1;height:auto;width:auto;margin-right:var(----margin-right)}.radio.-native .radio-label:after,.radio.-native .radio-label:before{display:none}.radio-group[data-v-fa4fe77a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.radio-group.-inline[data-v-fa4fe77a]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.select .select-option{display:block;width:100%;clear:both;margin-bottom:0;border:0;cursor:pointer;-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.select .select-option:hover,.select .select-option:focus{outline:0;-webkit-text-decoration:none;text-decoration:none}.select .select-option.-disabled{pointer-events:none;cursor:default}.select .select-option.-active{font-weight:700}.select-wrapper{----background: var(--color--white);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----margin-top: calc(var(--margin-top) / 2);----margin-right: calc(var(--margin-right) / 2);----margin-bottom: calc(var(--margin-bottom) / 2);----margin-left: calc(var(--margin-left) / 2);----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----min-width: 240px;----max-width: 90vw;----max-height: 300px;----z-index: 2000;----option--background: var(----background);----option--background--hover: var(--color--light-25);----option--background--active: var(----option-background--active);----option--background--disabled: transparent;----option--border-top-left-radius: 0;----option--border-top-right-radius: 0;----option--border-bottom-right-radius: 0;----option--border-bottom-left-radius: 0;----option--border-radius: var(----option--border-top-left-radius) var(----option--border-top-right-radius) var(----option--border-bottom-right-radius) var(----option--border-bottom-left-radius);----option--color: var(----color);----option--color--hover: var(----option--color);----option--color--active: var(----option--color);----option--color--disabled: var(--color--light-65);----option--padding-top: calc(var(----padding-top) / 2);----option--padding-right: var(----padding-right);----option--padding-bottom: calc(var(----padding-bottom) / 2);----option--padding-left: var(----padding-left);----option--padding: var(----option--padding-top) var(----option--padding-right) var(----option--padding-bottom) var(----option--padding-left);----divider--margin: calc(var(--spacing) * 1 / 2);----header--background: var(--color--gray-05);----header--border-color: var(----border-color);----header--border-style: var(----border-style);----header--border-top-width: var(----border-top-width);----header--border-right-width: var(----border-right-width);----header--border-bottom-width: 0;----header--border-left-width: var(----border-left-width);----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--color: var(----color);----header--padding-top: calc(var(----padding-top) * 3 / 4);----header--padding-right: var(----padding-right);----header--padding-bottom: calc(var(----padding-bottom) * 3 / 4);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--background: var(----background);----body--border-color: var(----border-color);----body--border-style: var(----border-style);----body--border-top-width: var(----border-top-width);----body--border-right-width: var(----border-right-width);----body--border-bottom-width: var(----border-bottom-width);----body--border-left-width: var(----border-left-width);----body--border-width: var(----body--border-top-width) var(----body--border-right-width) var(----body--border-bottom-width) var(----body--border-left-width);----body--color: var(----color);----body--padding-top: var(----padding-top);----body--padding-right: 0;----body--padding-bottom: var(----padding-bottom);----body--padding-left: 0;----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left);----footer--background: var(--color--gray-05);----footer--border-color: var(----border-color);----footer--border-style: var(----border-style);----footer--border-top-width: var(----border-top-width);----footer--border-right-width: var(----border-right-width);----footer--border-bottom-width: var(----border-bottom-width);----footer--border-left-width: var(----border-left-width);----footer--border-width: var(----footer--border-top-width) var(----footer--border-right-width) var(----footer--border-bottom-width) var(----footer--border-left-width);----footer--color: var(----color);----footer--padding-top: calc(var(----padding-top) * 3 / 4);----footer--padding-right: var(----padding-right);----footer--padding-bottom: calc(var(----padding-bottom) * 3 / 4);----footer--padding-left: var(----padding-left);----footer--padding: var(----footer--padding-top) var(----footer--padding-right) var(----footer--padding-bottom) var(----footer--padding-left)}.form.-sm .select-wrapper,.form-group.-sm .select-wrapper,.select-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--sm));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--sm));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--sm));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----option--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--sm));----option--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----header--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(0 * var(--size-multiplier--sm));----footer--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--sm));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.form.-md .select-wrapper,.form-group.-md .select-wrapper,.select-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--md));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--md));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--md));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----option--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--md));----option--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----header--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(0 * var(--size-multiplier--md));----footer--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--md));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.form.-lg .select-wrapper,.form-group.-lg .select-wrapper,.select-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--lg));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--lg));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--lg));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----option--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--lg));----option--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----header--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(0 * var(--size-multiplier--lg));----footer--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--lg));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.form.-light .select-wrapper,.form-group.-light .select-wrapper,.select-wrapper.-light{----background: var(--color--white);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----color: var(--contrast-color-for-light-background);----option--background--hover: var(--color--light-25);----option--background--disabled: transparent;----option--color--disabled: var(--color--light-65);----header--background: var(--color--gray-05);----footer--background: var(--color--gray-05)}.form.-dark .select-wrapper,.form-group.-dark .select-wrapper,.select-wrapper.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-45);----border-right-color: var(--color--dark-45);----border-bottom-color: var(--color--dark-45);----border-left-color: var(--color--dark-45);----color: var(--contrast-color-for-dark-background);----option--background--hover: var(--color--dark-45);----option--background--disabled: transparent;----option--color--disabled: var(--color--dark-25);----header--background: var(--color--dark-55);----footer--background: var(--color--dark-55)}.select-wrapper{display:block;position:relative}.select-wrapper .select{position:fixed;z-index:var(----z-index);word-wrap:break-word;text-align:left;list-style:none;line-height:var(--select-line-height);background-clip:padding-box;display:inline-block;white-space:normal;min-width:var(----min-width);max-width:var(----max-width);color:var(----color);font-size:var(----font-size);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.select-wrapper .select:focus:hover{outline-width:0}.select-wrapper .select[data-popper-placement^=top]{-webkit-transform-origin:center bottom;transform-origin:center bottom}.select-wrapper .select[data-popper-placement^=bottom]{-webkit-transform-origin:center top;transform-origin:center top}.select-wrapper .select[data-popper-placement^=right]{-webkit-transform-origin:left center;transform-origin:left center}.select-wrapper .select[data-popper-placement^=left]{-webkit-transform-origin:right center;transform-origin:right center}.select-wrapper .select>[data-popper-arrow],.select-wrapper .select>[data-popper-arrow]:after{display:block;width:0;height:0;border-color:transparent;border-style:solid;position:absolute}.select-wrapper .select>[data-popper-arrow]:after{content:""}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]{border-bottom-width:0}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]:after{border-bottom-width:0}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]{border-top-width:0}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-top-width:0}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]{border-left-width:0}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]:after{border-left-width:0}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]{border-right-width:0}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]:after{border-right-width:0}.select-wrapper .select>[data-popper-arrow],.select-wrapper .select>[data-popper-arrow]:after{border-width:6px}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]:after,.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]:after{margin-left:-6px}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]:after,.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]:after{margin-top:-6px}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]{bottom:-6px}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]:after{bottom:1px}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]{top:-6px}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]:after{top:1px}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]{right:-6px}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]:after{right:1px}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]{left:-6px}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]:after{left:1px}.select-wrapper .select>.select-header{border-width:var(----header--border-width);border-style:var(----header--border-style);border-color:var(----header--border-color);background-color:var(----header--background);padding:var(----header--padding)}.select-wrapper .select>.select-body{overflow:auto;border-width:var(----body--border-width);border-style:var(----body--border-style);border-color:var(----body--border-color);background-color:var(----body--background);padding:var(----body--padding);max-height:var(----max-height)}.select-wrapper .select>.select-body .select-option{color:var(----option--color);border-color:var(----option--border-color);padding:var(----option--padding);background:var(----option--background);border-radius:var(----option--border-radius)}.select-wrapper .select>.select-body .select-option mark{padding-left:0;padding-right:0}.select-wrapper .select>.select-body .select-option:not(.-disabled):not(.-plaintext):hover,.select-wrapper .select>.select-body .select-option:not(.-disabled):not(.-plaintext):focus{----option--color: var(----option--color--hover);----option--background: var(----option--background--hover)}.select-wrapper .select>.select-body .select-option.-disabled{----option--color: var(----option--color--disabled);----option--background: var(----option--background--disabled)}.select-wrapper .select>.select-body .select-option.-active{----option--color: var(----option--color--active);----option--background: var(----option--background--active)}.select-wrapper .select>.select-body .select-divider{background-color:var(----divider--border-color)}.select-wrapper .select>.select-body .select-no-results{text-align:center}.select-wrapper .select>.select-footer{border-width:var(----footer--border-width);border-style:var(----footer--border-style);border-color:var(----footer--border-color);background-color:var(----footer--background);padding:var(----footer--padding)}.select-wrapper .select>*:nth-child(2){border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.select-wrapper .select>*:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]{border-top-color:var(----body--border-bottom-color)}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]:after{border-top-color:var(----body--background)}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]{border-bottom-color:var(----border-top-color)}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-bottom-color:var(----body--background)}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]{border-left-color:var(----border-right-color)}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]:after{border-left-color:var(----body--background)}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]{border-right-color:var(----border-left-color)}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]:after{border-right-color:var(----body--background)}.select-wrapper .input-wrapper *+.select-caret{margin-left:var(--spacing)}.select-wrapper .input-wrapper .input-suffix>.select-caret{cursor:pointer;-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="28" viewBox="0 0 16 28"><title>caret-down</title><path d="M16 11c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="28" viewBox="0 0 16 28"><title>caret-down</title><path d="M16 11c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(----color);height:var(----font-size);width:var(----font-size);-webkit-mask-size:var(----font-size) var(----font-size);mask-size:var(----font-size) var(----font-size)}.sidebar-wrapper{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----width: 14rem;----z-index: var(--z-index--fixed);----item--color: var(--contrast-color-for-light-background);----item--color--hover: var(--contrast-color-for-light-background);----item--background: var(--color--light);----item--background--hover: var(--color--light-55);----item--border-top-left-radius: var(----border-top-left-radius);----item--border-top-right-radius: var(----border-top-right-radius);----item--border-bottom-right-radius: var(----border-bottom-right-radius);----item--border-bottom-left-radius: var(----border-bottom-left-radius);----item--border-radius: var(----item--border-top-left-radius) var(----item--border-top-right-radius) var(----item--border-bottom-right-radius) var(----item--border-bottom-left-radius);----item--padding-top: calc(var(--padding-top) / 2);----item--padding-right: var(--padding-right);----item--padding-bottom: calc(var(--padding-bottom) / 2);----item--padding-left: var(--padding-left);----item--padding: var(----item--padding-top) var(----item--padding-right) var(----item--padding-bottom) var(----item--padding-left);----overlay--background: rgba(0, 0, 0, .5)}.sidebar-wrapper.-light{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----color: var(--contrast-color-for-light-background);----item--color: var(--contrast-color-for-light-background);----item--color--hover: var(--contrast-color-for-light-background);----item--background: var(--color--light);----item--background--hover: var(--color--light-55)}.sidebar-wrapper.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-40);----border-right-color: var(--color--dark-40);----border-bottom-color: var(--color--dark-40);----border-left-color: var(--color--dark-40);----color: var(--contrast-color-for-dark-background);----item--color: var(--contrast-color-for-dark-background);----item--color--hover: var(--contrast-color-for-dark-background);----item--background: var(--color--dark);----item--background--hover: var(--color--dark-45)}.sidebar-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----width: calc(14rem * var(--size-multiplier--sm));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.sidebar-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----width: calc(14rem * var(--size-multiplier--md));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.sidebar-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----width: calc(14rem * var(--size-multiplier--lg));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.sidebar-wrapper{position:relative;min-height:100%;min-width:0;overflow:hidden;z-index:var(----z-index);-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;width:var(----width)}.sidebar-wrapper .sidebar{position:absolute;height:100%;z-index:1;color:var(----color);background:var(----background);width:var(----width);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);border-radius:var(----border-radius);padding:var(----padding)}.sidebar-wrapper .sidebar .sidebar-content{height:100%;width:100%;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-top:.1px;margin-top:-.1px}.sidebar-wrapper .sidebar .sidebar-content .nav .nav-item{border-radius:var(----item--border-radius);padding:var(----item--padding)}.sidebar-wrapper .sidebar .sidebar-content .nav .nav-item.-active{cursor:pointer}.sidebar-wrapper .sidebar .sidebar-content .nav.-vertical .nav-item{width:100%}.sidebar-wrapper .sidebar .sidebar-content .collapsible{width:100%;border:0}.sidebar-wrapper .sidebar .sidebar-content .collapsible .collapsible-item{-webkit-box-shadow:none;box-shadow:none}.sidebar-wrapper .sidebar .sidebar-content .collapsible .collapsible-header{border-width:0;-webkit-transition-property:background,color;transition-property:background,color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);border-radius:var(----item--border-radius);padding:var(----item--padding)}.sidebar-wrapper .sidebar .sidebar-content .collapsible .collapsible-body{border-width:0;background:transparent}.sidebar-wrapper .sidebar .sidebar-content .collapsible .collapsible-body .content{padding:0}.sidebar-wrapper .sidebar .sidebar-content .nav-item,.sidebar-wrapper .sidebar .sidebar-content .collapsible-header{color:var(----item--color);background-color:var(----item--background)}.sidebar-wrapper .sidebar .sidebar-content .nav-item.-focused,.sidebar-wrapper .sidebar .sidebar-content .nav-item.-hovered,.sidebar-wrapper .sidebar .sidebar-content .nav-item:focus,.sidebar-wrapper .sidebar .sidebar-content .nav-item:hover,.sidebar-wrapper .sidebar .sidebar-content .collapsible-header.-focused,.sidebar-wrapper .sidebar .sidebar-content .collapsible-header.-hovered,.sidebar-wrapper .sidebar .sidebar-content .collapsible-header:focus,.sidebar-wrapper .sidebar .sidebar-content .collapsible-header:hover{----item--color: var(----item--color--hover);----item--background: var(----item--background--hover)}.sidebar-wrapper.-collapse-relative.-placement-left .sidebar{right:0}.sidebar-wrapper.-collapse-relative.-placement-right .sidebar,.sidebar-wrapper.-collapse-absolute.-placement-left .sidebar,.sidebar-wrapper.-collapse-fixed.-placement-left .sidebar{left:0}.sidebar-wrapper.-collapse-absolute.-placement-right .sidebar,.sidebar-wrapper.-collapse-fixed.-placement-right .sidebar{right:0}.sidebar-wrapper .sidebar-overlay{width:100%;height:100%;z-index:0;background:var(----overlay--background);border-top-left-radius:var(----border-top-left-radius);border-bottom-left-radius:var(----border-bottom-left-radius)}@media screen and (max-width: 575px){.sidebar-wrapper.-collapse-xs.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-xs.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-xs.-collapse-fixed,.sidebar-wrapper.-collapse-xs.-collapse-absolute{width:100%;height:100%}}@media screen and (max-width: 767px){.sidebar-wrapper.-collapse-sm.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-sm.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-sm.-collapse-fixed,.sidebar-wrapper.-collapse-sm.-collapse-absolute{width:100%;height:100%}}@media screen and (max-width: 991px){.sidebar-wrapper.-collapse-md.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-md.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-md.-collapse-fixed,.sidebar-wrapper.-collapse-md.-collapse-absolute{width:100%;height:100%}}@media screen and (max-width: 1199px){.sidebar-wrapper.-collapse-lg.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-lg.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-lg.-collapse-fixed,.sidebar-wrapper.-collapse-lg.-collapse-absolute{width:100%;height:100%}}@media screen and (max-width: 1399px){.sidebar-wrapper.-collapse-xl.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-xl.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-xl.-collapse-fixed,.sidebar-wrapper.-collapse-xl.-collapse-absolute{width:100%;height:100%}}.sidebar-wrapper.-collapse-xxl.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-xxl.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-xxl.-collapse-fixed,.sidebar-wrapper.-collapse-xxl.-collapse-absolute{width:100%;height:100%}.sidebar-wrapper.-collapse-true.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-true.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-true.-collapse-fixed,.sidebar-wrapper.-collapse-true.-collapse-absolute{width:100%;height:100%}.sidebar-wrapper.sidebar-wrapper-transition-enter-to,.sidebar-wrapper.sidebar-wrapper-transition-leave{width:var(----width)}.sidebar-wrapper-transition-enter-active,.sidebar-wrapper-transition-leave-active{-webkit-transition:width var(--transition-duration) var(--transition-easing);transition:width var(--transition-duration) var(--transition-easing)}.sidebar-wrapper-none-transition-enter-active,.sidebar-wrapper-none-transition-leave-active{-webkit-transition:none var(--transition-duration) var(--transition-easing);transition:none var(--transition-duration) var(--transition-easing)}.sidebar-wrapper-transition-enter-from,.sidebar-wrapper-transition-leave-to{width:0}.sidebar-transition-enter-active,.sidebar-transition-leave-active{-webkit-transition:-webkit-transform var(--transition-duration) var(--transition-easing);transition:-webkit-transform var(--transition-duration) var(--transition-easing);transition:transform var(--transition-duration) var(--transition-easing);transition:transform var(--transition-duration) var(--transition-easing),-webkit-transform var(--transition-duration) var(--transition-easing);-webkit-transform-origin:left;transform-origin:left}.sidebar-transition-enter-from,.sidebar-transition-leave-to{-webkit-transform:translateX(-100%);transform:translate(-100%)}.sidebar-transition-enter-to,.sidebar-transition-leave-from{-webkit-transform:translateX(0);transform:translate(0)}.sidebar-wrapper.-placement-right .sidebar-transition-enter-active,.sidebar-wrapper.-placement-right .sidebar-transition-leave-active{-webkit-transform-origin:right;transform-origin:right}.sidebar-wrapper.-placement-right .sidebar-transition-enter-from,.sidebar-wrapper.-placement-right .sidebar-transition-leave-to{-webkit-transform:translateX(100%);transform:translate(100%)}.sidebar-overlay-transition-enter-active,.sidebar-overlay-transition-leave-active{-webkit-transition:opacity var(--transition-duration) var(--transition-easing);transition:opacity var(--transition-duration) var(--transition-easing)}.sidebar-overlay-transition-enter-from,.sidebar-overlay-transition-leave-to,.sidebar-overlay-transition-leave-active{opacity:0}.table-wrapper{----background: var(--color--white);----background--hover: var(--color--light-30);----background--striped: var(--color--light-25);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-color: var(--color--light-25);----color: var(--contrast-color-for-light-background);----margin-bottom: var(--margin-bottom);----padding-top: calc(var(--padding-top) * 3 / 4);----padding-right: calc(var(--padding-right) * 3 / 4);----padding-bottom: calc(var(--padding-bottom) * 3 / 4);----padding-left: calc(var(--padding-left) * 3 / 4);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----padding-top--condensed: calc(var(--padding-top) * 1 / 4);----padding-right--condensed: calc(var(--padding-right) * 1 / 4);----padding-bottom--condensed: calc(var(--padding-bottom) * 1 / 4);----padding-left--condensed: calc(var(--padding-left) * 1 / 4);----padding--condensed: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left)}.table-wrapper.-primary{----background: var(--color--primary);----background--hover: var(--color--primary-60);----background--striped: var(--color--primary-55);----border-color: var(--color--primary-55);----color: var(--contrast-color-for-dark-background)}.table-wrapper.-secondary{----background: var(--color--secondary);----background--hover: var(--color--secondary-60);----background--striped: var(--color--secondary-55);----border-color: var(--color--secondary-55);----color: var(--contrast-color-for-dark-background)}.table-wrapper.-light{----background: var(--color--white);----background--hover: var(--color--light-30);----background--striped: var(--color--light-25);----border-color: var(--color--light-25);----color: var(--contrast-color-for-light-background)}.table-wrapper.-dark{----background: var(--color--dark);----background--hover: var(--color--gray-40);----background--striped: var(--color--dark-45);----border-color: var(--color--dark-45);----color: var(--contrast-color-for-dark-background)}.table-wrapper.-info{----background: var(--color--info);----background--hover: var(--color--info-60);----background--striped: var(--color--info-55);----border-color: var(--color--info-55);----color: var(--contrast-color-for-dark-background)}.table-wrapper.-success{----background: var(--color--success);----background--hover: var(--color--success-60);----background--striped: var(--color--success-55);----border-color: var(--color--success-55);----color: var(--contrast-color-for-dark-background)}.table-wrapper.-warning{----background: var(--color--warning);----background--hover: var(--color--warning-60);----background--striped: var(--color--warning-55);----border-color: var(--color--warning-55);----color: var(--contrast-color-for-light-background)}.table-wrapper.-danger{----background: var(--color--danger);----background--hover: var(--color--danger-60);----background--striped: var(--color--danger-55);----border-color: var(--color--danger-55);----color: var(--contrast-color-for-dark-background)}.table-wrapper{display:block;position:relative}@media screen and (max-width: 575px){.table-wrapper.-responsive-xs{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-xs .table.-border{border:none}}@media screen and (max-width: 767px){.table-wrapper.-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-sm .table.-border{border:none}}@media screen and (max-width: 991px){.table-wrapper.-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-md .table.-border{border:none}}@media screen and (max-width: 1199px){.table-wrapper.-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-lg .table.-border{border:none}}@media screen and (max-width: 1399px){.table-wrapper.-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-xl .table.-border{border:none}}.table-wrapper.-responsive-xxl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-xxl .table.-border{border:none}.table-wrapper .table{width:100%;max-width:100%;margin-bottom:var(----margin-bottom);border-top-color:var(----border-color);color:var(----color)}.table-wrapper .table th,.table-wrapper .table td{padding:var(----padding);vertical-align:top;border-top-style:var(----border-style);border-top-color:var(----border-color);border-top-width:var(----border-top-width);background-color:var(----background);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-property:color,background-color,border;transition-property:color,background-color,border}.table-wrapper .table thead th{vertical-align:bottom;border-bottom-width:calc(2 * var(----border-bottom-width))}.table-wrapper .table tbody+tbody{border-top:calc(2 * var(----border-top-width)) solid transparent}.table-wrapper .table th,.table-wrapper .table td,.table-wrapper .table tbody+tbody{border-top-color:var(----border-color)}.table-wrapper.-condensed .table th,.table-wrapper.-condensed .table td{----padding: var(----padding--condensed)}.table-wrapper.-border .table,.table-wrapper.-border .table th,.table-wrapper.-border .table td{border-style:var(----border-style);border-color:var(----border-color);border-width:var(----border-width)}.table-wrapper.-nowrap .table th,.table-wrapper.-nowrap .table td{white-space:nowrap}.table-wrapper.-striped .table>tr:nth-of-type(odd) th,.table-wrapper.-striped .table>tr:nth-of-type(odd) td,.table-wrapper.-striped .table tbody>tr:nth-of-type(odd) th,.table-wrapper.-striped .table tbody>tr:nth-of-type(odd) td{----background: var(----background--striped)}.table-wrapper.-hover .table tbody tr th,.table-wrapper.-hover .table tbody tr td{-webkit-transition:background-color var(--transition-duration) ease;transition:background-color var(--transition-duration) ease}.table-wrapper.-hover .table tbody tr:hover th,.table-wrapper.-hover .table tbody tr:hover td{----background: var(----background--hover)}.tabs.-light{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background);----header--background: var(--color--white);----header--background--active: var(--color--white);----header--background--hover: var(--color--gray-05);----header--border-color: transparent}.tabs.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--dark);----header--background--active: var(--color--dark);----header--background--hover: var(--color--dark-45);----header--border-color: transparent}.tabs.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.tabs.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.tabs.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.tabs{position:relative;display:block}.tabs .tabs-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);margin-bottom:var(----header--margin-bottom);overflow:auto;color:var(----header--color);background:var(----header--background)}.tabs .tab{position:relative;display:block;border-width:1px;border-style:solid;-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----color);border-color:var(----border-color);background:var(----background)}.tabs .tab>.tab-body{display:block;position:relative;font-size:var(----font-size);padding:var(----padding);border-radius:var(----border-radius)}.tabs{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----header--background: var(--color--white);----header--background--active: var(--color--white);----header--background--hover: var(--color--gray-05);----header--border-color: transparent;----header--border-color--active: var(--color--primary);----header--color--active: var(----color);----header--border-style: var(--border-style);----header--border-top-width: 0;----header--border-right-width: 0;----header--border-bottom-width: 2px;----header--border-left-width: 0;----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--margin-bottom: -1px;----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left)}.tabs{----header--color: var(----color)}.tabs .tab-title{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0;border-width:var(----header--border-width);border-style:var(----header--border-style);border-color:var(----header--border-color);font-size:var(----header--font-size);padding:var(----header--padding);-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----header--color);background:var(----header--background)}.tabs .tab-title.-active{----header--color: var(----header--color--active);----header--background: var(----header--background--active);----header--border-color: var(----header--border-color--active);font-weight:var(--font-weight--semibold)}.tabs .tab-title:hover,.tabs .tab-title:focus{----header--background: var(----header--background--hover);cursor:pointer;outline:none}.tabs.-stretch>.tabs-header .tab-title{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.toggle{----background: var(--color--light);----background--checked: var(--color--primary);----background--disabled: var(--color--light-40);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(----height);----border-top-right-radius: var(----height);----border-bottom-right-radius: var(----height);----border-bottom-left-radius: var(----height);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----margin-right: var(--margin-right);----margin-top: var(--margin-right);----width: 40px;----height: 20px;----transition-duration: var(--transition-duration);----indicator--background: var(--color--white);----indicator--background--checked: var(----indicator--background);----indicator--background--disabled: var(--color--gray-05);----indicator--background--checked-disabled: var(--color--gray-10);----indicator--border-top-left-radius: 50%;----indicator--border-top-right-radius: 50%;----indicator--border-bottom-right-radius: 50%;----indicator--border-bottom-left-radius: 50%;----indicator--border-radius: var(----indicator--border-top-left-radius) var(----indicator--border-top-right-radius) var(----indicator--border-bottom-right-radius) var(----indicator--border-bottom-left-radius);----indicator--width: 16px;----indicator--height: 16px;----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70);----label--font-size: var(--font-size)}.form.-sm .toggle,.form-group.-sm .toggle,.toggle.-sm{----width: calc(40px * var(--size-multiplier--sm));----height: calc(20px * var(--size-multiplier--sm));----indicator--border-top-left-radius: calc(50% * var(--size-multiplier--sm));----indicator--border-top-right-radius: calc(50% * var(--size-multiplier--sm));----indicator--border-bottom-right-radius: calc(50% * var(--size-multiplier--sm));----indicator--border-bottom-left-radius: calc(50% * var(--size-multiplier--sm));----indicator--width: calc(16px * var(--size-multiplier--sm));----indicator--height: calc(16px * var(--size-multiplier--sm));----label--font-size: calc(var(--font-size) * var(--size-multiplier--sm))}.form.-md .toggle,.form-group.-md .toggle,.toggle.-md{----width: calc(40px * var(--size-multiplier--md));----height: calc(20px * var(--size-multiplier--md));----indicator--border-top-left-radius: calc(50% * var(--size-multiplier--md));----indicator--border-top-right-radius: calc(50% * var(--size-multiplier--md));----indicator--border-bottom-right-radius: calc(50% * var(--size-multiplier--md));----indicator--border-bottom-left-radius: calc(50% * var(--size-multiplier--md));----indicator--width: calc(16px * var(--size-multiplier--md));----indicator--height: calc(16px * var(--size-multiplier--md));----label--font-size: calc(var(--font-size) * var(--size-multiplier--md))}.form.-lg .toggle,.form-group.-lg .toggle,.toggle.-lg{----width: calc(40px * var(--size-multiplier--lg));----height: calc(20px * var(--size-multiplier--lg));----indicator--border-top-left-radius: calc(50% * var(--size-multiplier--lg));----indicator--border-top-right-radius: calc(50% * var(--size-multiplier--lg));----indicator--border-bottom-right-radius: calc(50% * var(--size-multiplier--lg));----indicator--border-bottom-left-radius: calc(50% * var(--size-multiplier--lg));----indicator--width: calc(16px * var(--size-multiplier--lg));----indicator--height: calc(16px * var(--size-multiplier--lg));----label--font-size: calc(var(--font-size) * var(--size-multiplier--lg))}.form.-light .toggle,.form-group.-light .toggle,.toggle.-light{----background: var(--color--light);----background--checked: var(--color--primary);----background--disabled: var(--color--light-40);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----indicator--background: var(--color--white);----indicator--background--disabled: var(--color--gray-05);----indicator--background--checked-disabled: var(--color--gray-10);----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70)}.form.-dark .toggle,.form-group.-dark .toggle,.toggle.-dark{----background: var(--color--dark);----background--checked: var(--color--primary);----background--disabled: var(--color--dark-40);----background--checked-disabled: var(--color--primary-75);----border-color: var(--color--dark);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--dark);----border-color--checked-disabled: var(--color--primary-70);----indicator--background: var(--color--white);----indicator--background--disabled: var(--color--gray-30);----indicator--background--checked-disabled: var(--color--dark-25);----label--color: var(--contrast-color-for-dark-background);----label--color--disabled: var(--color--dark-30)}.toggle{position:relative;margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex}.toggle>input{opacity:0;width:0;height:0;cursor:pointer;position:absolute;top:0;left:0}.toggle>input:checked+.toggle-label:before{----background: var(----background--checked);----border-color: var(----border-color--checked)}.toggle>input:checked+.toggle-label:after{----indicator--background: var(----indicator--background--checked);-webkit-transform:translate(calc(var(----width) / 2),0);transform:translate(calc(var(----width) / 2))}.toggle>input:focus+.toggle-label:before{-webkit-box-shadow:0 0 1px var(----background--checked);box-shadow:0 0 1px var(----background--checked)}.toggle>input:disabled+.toggle-label,.toggle>input[readonly]+.toggle-label{cursor:default;color:var(----label--color--disabled)}.toggle>input:disabled+.toggle-label:before,.toggle>input[readonly]+.toggle-label:before{----background: var(----background--disabled);----border-color: var(----border-color--disabled)}.toggle>input:disabled+.toggle-label:after,.toggle>input[readonly]+.toggle-label:after{----indicator--background: var(----indicator--background--disabled)}.toggle>input:disabled:checked+.toggle-label:before,.toggle>input[readonly]:checked+.toggle-label:before{----background: var(----background--checked-disabled);----border-color: var(----border-color--checked-disabled)}.toggle>input:disabled:checked+.toggle-label:after,.toggle>input[readonly]:checked+.toggle-label:after{----indicator--background: var(----indicator--background--checked-disabled)}.toggle .toggle-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;margin:0;color:var(----label--color);font-size:var(----label--font-size)}.toggle .toggle-label:before{content:"";position:relative;display:inline-block;cursor:pointer;-webkit-transition:var(----transition-duration);transition:var(----transition-duration);border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);margin-right:var(----margin-right);-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;background-color:var(----background);width:var(----width);height:var(----height);border-radius:var(----border-radius)}.toggle .toggle-label:after{content:"";position:absolute;display:block;top:50%;left:0;z-index:1;-webkit-transform:translate(0,0);transform:translate(0);-webkit-transition:var(----transition-duration);transition:var(----transition-duration);background-color:var(----indicator--background);height:var(----indicator--width);width:var(----indicator--height);border-radius:var(----border-radius);margin-top:calc(var(----indicator--height) / -2);margin-left:calc(var(----height) / 2 - var(----indicator--height) / 2)}.tooltip-wrapper{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----margin-top: calc(var(--margin-top) / 2);----margin-right: calc(var(--margin-right) / 2);----margin-bottom: calc(var(--margin-bottom) / 2);----margin-left: calc(var(--margin-left) / 2);----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----padding-top: calc(var(--padding-top) * 3 / 4);----padding-right: var(--padding-right);----padding-bottom: calc(var(--padding-bottom) * 3 / 4);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----width: 280px;----z-index: 2000}.tooltip-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--sm));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--sm));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--sm));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.tooltip-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--md));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--md));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--md));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.tooltip-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--lg));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--lg));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--lg));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.tooltip-wrapper.-light{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background)}.tooltip-wrapper.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background)}.tooltip-wrapper{display:inline-block;position:relative}.tooltip-wrapper .tooltip-trigger{display:contents}.tooltip-wrapper .tooltip{position:fixed;z-index:var(----z-index);word-wrap:break-word;text-align:left;list-style:none;background-clip:padding-box;display:inline-block;white-space:nowrap;line-height:var(----line-height);border-width:var(----border-width);border-style:var(----border-style);color:var(----color);background-color:var(----background);border-color:var(----border-color);border-radius:var(----border-radius);font-size:var(----font-size);padding:var(----padding);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.tooltip-wrapper .tooltip:focus:hover{outline-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=top]{-webkit-transform-origin:center bottom;transform-origin:center bottom}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]{-webkit-transform-origin:center top;transform-origin:center top}.tooltip-wrapper .tooltip[data-popper-placement^=right]{-webkit-transform-origin:left center;transform-origin:left center}.tooltip-wrapper .tooltip[data-popper-placement^=left]{-webkit-transform-origin:right center;transform-origin:right center}.tooltip-wrapper .tooltip>[data-popper-arrow],.tooltip-wrapper .tooltip>[data-popper-arrow]:after{display:block;width:0;height:0;border-color:transparent;border-style:solid;position:absolute}.tooltip-wrapper .tooltip>[data-popper-arrow]:after{content:""}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]{border-bottom-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]:after{border-bottom-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]{border-top-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-top-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]{border-left-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]:after{border-left-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]{border-right-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]:after{border-right-width:0}.tooltip-wrapper .tooltip>[data-popper-arrow],.tooltip-wrapper .tooltip>[data-popper-arrow]:after{border-width:6px}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]:after,.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]:after{margin-left:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]:after,.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]:after{margin-top:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]{bottom:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]:after{bottom:1px}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]{top:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]:after{top:1px}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]{right:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]:after{right:1px}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]{left:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]:after{left:1px}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]{border-top-color:var(----border-top-color)}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]:after{border-top-color:var(----background)}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]{border-bottom-color:var(----border-bottom-color)}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-bottom-color:var(----background)}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]{border-left-color:var(----border-left-color)}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]:after{border-left-color:var(----background)}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]{border-right-color:var(----border-right-color)}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]:after{border-right-color:var(----background)}._visually-hidden\:focusable:not(:focus),._visually-hidden{position:absolute!important;width:1px!important;height:1px!important;top:1px;left:1px;overflow:hidden}:root{--transition-duration: .3s;--transition-easing: ease}:root{--size-percentage--0: 0%;--size-percentage--25: 25%;--size-percentage--50: 50%;--size-percentage--75: 75%;--size-percentage--100: 100%;--size-multiplier: 1;--size-multiplier--xs: calc(var(--size-multiplier) / var(--scale-ratio--pow-2));--size-multiplier--sm: calc(var(--size-multiplier) / var(--scale-ratio));--size-multiplier--md: var(--size-multiplier);--size-multiplier--lg: calc(var(--size-multiplier) * var(--scale-ratio));--size-multiplier--xl: calc(var(--size-multiplier) * var(--scale-ratio--pow-2))}:root{--spacing: 1rem;--margin-top: var(--spacing);--margin-right: var(--spacing);--margin-bottom: var(--spacing);--margin-left: var(--spacing);--margin: var(--margin-top) var(--margin-right) var(--margin-bottom) var(--margin-left);--padding-top: var(--spacing);--padding-right: var(--spacing);--padding-bottom: var(--spacing);--padding-left: var(--spacing);--padding: var(--padding-top) var(--padding-right) var(--padding-bottom) var(--padding-left)}:root{--color--primary--h: 195.0967741935deg;--color--primary--s: 77.1144278607%;--color--primary--l: 39.4117647059%;--color--primary: hsl(var(--color--primary--h), var(--color--primary--s), var(--color--primary--l));--color--secondary--h: 262.2857142857deg;--color--secondary--s: 30.1724137931%;--color--secondary--l: 54.5098039216%;--color--secondary: hsl(var(--color--secondary--h), var(--color--secondary--s), var(--color--secondary--l));--color--info--h: 173.8888888889deg;--color--info--s: 42.8571428571%;--color--info--l: 49.4117647059%;--color--info: hsl(var(--color--info--h), var(--color--info--s), var(--color--info--l));--color--warning--h: 43.6764705882deg;--color--warning--s: 100%;--color--warning--l: 73.3333333333%;--color--warning: hsl(var(--color--warning--h), var(--color--warning--s), var(--color--warning--l));--color--danger--h: 1.3259668508deg;--color--danger--s: 87.4396135266%;--color--danger--l: 59.4117647059%;--color--danger: hsl(var(--color--danger--h), var(--color--danger--s), var(--color--danger--l));--color--success--h: 154.4186046512deg;--color--success--s: 57.8475336323%;--color--success--l: 43.7254901961%;--color--success: hsl(var(--color--success--h), var(--color--success--s), var(--color--success--l));--color--red--h: 1.3259668508deg;--color--red--s: 87.4396135266%;--color--red--l: 59.4117647059%;--color--red: hsl(var(--color--red--h), var(--color--red--s), var(--color--red--l));--color--orange--h: 19.6226415094deg;--color--orange--s: 92.9824561404%;--color--orange--l: 66.4705882353%;--color--orange: hsl(var(--color--orange--h), var(--color--orange--s), var(--color--orange--l));--color--yellow--h: 43.6764705882deg;--color--yellow--s: 100%;--color--yellow--l: 73.3333333333%;--color--yellow: hsl(var(--color--yellow--h), var(--color--yellow--s), var(--color--yellow--l));--color--green--h: 154.4186046512deg;--color--green--s: 57.8475336323%;--color--green--l: 43.7254901961%;--color--green: hsl(var(--color--green--h), var(--color--green--s), var(--color--green--l));--color--teal--h: 173.8888888889deg;--color--teal--s: 42.8571428571%;--color--teal--l: 49.4117647059%;--color--teal: hsl(var(--color--teal--h), var(--color--teal--s), var(--color--teal--l));--color--blue--h: 195.0967741935deg;--color--blue--s: 77.1144278607%;--color--blue--l: 39.4117647059%;--color--blue: hsl(var(--color--blue--h), var(--color--blue--s), var(--color--blue--l));--color--purple--h: 262.2857142857deg;--color--purple--s: 30.1724137931%;--color--purple--l: 54.5098039216%;--color--purple: hsl(var(--color--purple--h), var(--color--purple--s), var(--color--purple--l));--color--pink--h: 351.4285714286deg;--color--pink--s: 95.6834532374%;--color--pink--l: 72.7450980392%;--color--pink: hsl(var(--color--pink--h), var(--color--pink--s), var(--color--pink--l));--color--transparent--h: 0deg;--color--transparent--s: 0%;--color--transparent--l: 0%;--color--transparent: hsl(var(--color--transparent--h), var(--color--transparent--s), var(--color--transparent--l));--color--white--h: 0deg;--color--white--s: 0%;--color--white--l: 100%;--color--white: hsl(var(--color--white--h), var(--color--white--s), var(--color--white--l));--color--black--h: 0deg;--color--black--s: 0%;--color--black--l: 0%;--color--black: hsl(var(--color--black--h), var(--color--black--s), var(--color--black--l));--color--gray--h: 193.6363636364deg;--color--gray--s: 10.7843137255%;--color--gray--l: 60%;--color--gray: hsl(var(--color--gray--h), var(--color--gray--s), var(--color--gray--l));--color--light--h: 193.6363636364deg;--color--light--s: 10.7843137255%;--color--light--l: 88%;--color--light: hsl(var(--color--light--h), var(--color--light--s), var(--color--light--l));--color--dark--h: 193.6363636364deg;--color--dark--s: 4.3137254902%;--color--dark--l: 24%;--color--dark: hsl(var(--color--dark--h), var(--color--dark--s), var(--color--dark--l));--color--facebook--h: 220.6451612903deg;--color--facebook--s: 44.0758293839%;--color--facebook--l: 41.3725490196%;--color--facebook: hsl(var(--color--facebook--h), var(--color--facebook--s), var(--color--facebook--l));--color--twitter--h: 202.8169014085deg;--color--twitter--s: 89.1213389121%;--color--twitter--l: 53.137254902%;--color--twitter: hsl(var(--color--twitter--h), var(--color--twitter--s), var(--color--twitter--l));--color--google--h: 6.5853658537deg;--color--google--s: 70.6896551724%;--color--google--l: 54.5098039216%;--color--google: hsl(var(--color--google--h), var(--color--google--s), var(--color--google--l));--color--github--h: 0deg;--color--github--s: 0%;--color--github--l: 20%;--color--github: hsl(var(--color--github--h), var(--color--github--s), var(--color--github--l));--color--instagram--h: 0deg;--color--instagram--s: 98.2456140351%;--color--instagram--l: 55.2941176471%;--color--instagram: hsl(var(--color--instagram--h), var(--color--instagram--s), var(--color--instagram--l));--color--dribbble--h: 336.835443038deg;--color--dribbble--s: 79%;--color--dribbble--l: 60.7843137255%;--color--dribbble: hsl(var(--color--dribbble--h), var(--color--dribbble--s), var(--color--dribbble--l));--color--behance--h: 218.7931034483deg;--color--behance--s: 100%;--color--behance--l: 54.5098039216%;--color--behance: hsl(var(--color--behance--h), var(--color--behance--s), var(--color--behance--l));--color--flickr--h: 328.9411764706deg;--color--flickr--s: 100%;--color--flickr--l: 50%;--color--flickr: hsl(var(--color--flickr--h), var(--color--flickr--s), var(--color--flickr--l));--color--linkedin--h: 200.5524861878deg;--color--linkedin--s: 100%;--color--linkedin--l: 35.4901960784%;--color--linkedin: hsl(var(--color--linkedin--h), var(--color--linkedin--s), var(--color--linkedin--l));--color--youtube--h: 358.1366459627deg;--color--youtube--s: 81.7258883249%;--color--youtube--l: 38.6274509804%;--color--youtube: hsl(var(--color--youtube--h), var(--color--youtube--s), var(--color--youtube--l));--color--pinterest--h: 353.3701657459deg;--color--pinterest--s: 91.8781725888%;--color--pinterest--l: 38.6274509804%;--color--pinterest: hsl(var(--color--pinterest--h), var(--color--pinterest--s), var(--color--pinterest--l));--color--gitlab--h: 17.9695431472deg;--color--gitlab--s: 95.1690821256%;--color--gitlab--l: 59.4117647059%;--color--gitlab: hsl(var(--color--gitlab--h), var(--color--gitlab--s), var(--color--gitlab--l));--color--tumblr--h: 213.8461538462deg;--color--tumblr--s: 26.8965517241%;--color--tumblr--l: 28.431372549%;--color--tumblr: hsl(var(--color--tumblr--h), var(--color--tumblr--s), var(--color--tumblr--l));--color--twitch--h: 261deg;--color--twitch--s: 43.4782608696%;--color--twitch--l: 45.0980392157%;--color--twitch: hsl(var(--color--twitch--h), var(--color--twitch--s), var(--color--twitch--l));--color--envato--h: 86.3793103448deg;--color--envato--s: 47.1544715447%;--color--envato--l: 48.2352941176%;--color--envato: hsl(var(--color--envato--h), var(--color--envato--s), var(--color--envato--l));--color--vine--h: 164.9214659686deg;--color--vine--s: 100%;--color--vine--l: 37.4509803922%;--color--vine: hsl(var(--color--vine--h), var(--color--vine--s), var(--color--vine--l));--color--primary-05-h: var(--color--primary--h);--color--primary-05-s: var(--color--primary--s);--color--primary-05-l: calc(var(--color--primary--l) + 54.5294117647%);--color--primary-05: hsl(var(--color--primary-05-h) var(--color--primary-05-s) var(--color--primary-05-l));--color--primary-10-h: var(--color--primary--h);--color--primary-10-s: var(--color--primary--s);--color--primary-10-l: calc(var(--color--primary--l) + 48.4705882353%);--color--primary-10: hsl(var(--color--primary-10-h) var(--color--primary-10-s) var(--color--primary-10-l));--color--primary-15-h: var(--color--primary--h);--color--primary-15-s: var(--color--primary--s);--color--primary-15-l: calc(var(--color--primary--l) + 42.4117647059%);--color--primary-15: hsl(var(--color--primary-15-h) var(--color--primary-15-s) var(--color--primary-15-l));--color--primary-20-h: var(--color--primary--h);--color--primary-20-s: var(--color--primary--s);--color--primary-20-l: calc(var(--color--primary--l) + 36.3529411765%);--color--primary-20: hsl(var(--color--primary-20-h) var(--color--primary-20-s) var(--color--primary-20-l));--color--primary-25-h: var(--color--primary--h);--color--primary-25-s: var(--color--primary--s);--color--primary-25-l: calc(var(--color--primary--l) + 30.2941176471%);--color--primary-25: hsl(var(--color--primary-25-h) var(--color--primary-25-s) var(--color--primary-25-l));--color--primary-30-h: var(--color--primary--h);--color--primary-30-s: var(--color--primary--s);--color--primary-30-l: calc(var(--color--primary--l) + 24.2352941176%);--color--primary-30: hsl(var(--color--primary-30-h) var(--color--primary-30-s) var(--color--primary-30-l));--color--primary-35-h: var(--color--primary--h);--color--primary-35-s: var(--color--primary--s);--color--primary-35-l: calc(var(--color--primary--l) + 18.1764705882%);--color--primary-35: hsl(var(--color--primary-35-h) var(--color--primary-35-s) var(--color--primary-35-l));--color--primary-40-h: var(--color--primary--h);--color--primary-40-s: var(--color--primary--s);--color--primary-40-l: calc(var(--color--primary--l) + 12.1176470588%);--color--primary-40: hsl(var(--color--primary-40-h) var(--color--primary-40-s) var(--color--primary-40-l));--color--primary-45-h: var(--color--primary--h);--color--primary-45-s: var(--color--primary--s);--color--primary-45-l: calc(var(--color--primary--l) + 6.0588235294%);--color--primary-45: hsl(var(--color--primary-45-h) var(--color--primary-45-s) var(--color--primary-45-l));--color--primary-50-h: var(--color--primary--h);--color--primary-50-s: var(--color--primary--s);--color--primary-50-l: calc(var(--color--primary--l) + 0%);--color--primary-50: hsl(var(--color--primary-50-h) var(--color--primary-50-s) var(--color--primary-50-l));--color--primary-55-h: var(--color--primary--h);--color--primary-55-s: var(--color--primary--s);--color--primary-55-l: calc(var(--color--primary--l) + -3.9411764706%);--color--primary-55: hsl(var(--color--primary-55-h) var(--color--primary-55-s) var(--color--primary-55-l));--color--primary-60-h: var(--color--primary--h);--color--primary-60-s: var(--color--primary--s);--color--primary-60-l: calc(var(--color--primary--l) + -7.8823529412%);--color--primary-60: hsl(var(--color--primary-60-h) var(--color--primary-60-s) var(--color--primary-60-l));--color--primary-65-h: var(--color--primary--h);--color--primary-65-s: var(--color--primary--s);--color--primary-65-l: calc(var(--color--primary--l) + -11.8235294118%);--color--primary-65: hsl(var(--color--primary-65-h) var(--color--primary-65-s) var(--color--primary-65-l));--color--primary-70-h: var(--color--primary--h);--color--primary-70-s: var(--color--primary--s);--color--primary-70-l: calc(var(--color--primary--l) + -15.7647058824%);--color--primary-70: hsl(var(--color--primary-70-h) var(--color--primary-70-s) var(--color--primary-70-l));--color--primary-75-h: var(--color--primary--h);--color--primary-75-s: var(--color--primary--s);--color--primary-75-l: calc(var(--color--primary--l) + -19.7058823529%);--color--primary-75: hsl(var(--color--primary-75-h) var(--color--primary-75-s) var(--color--primary-75-l));--color--primary-80-h: var(--color--primary--h);--color--primary-80-s: var(--color--primary--s);--color--primary-80-l: calc(var(--color--primary--l) + -23.6470588235%);--color--primary-80: hsl(var(--color--primary-80-h) var(--color--primary-80-s) var(--color--primary-80-l));--color--primary-85-h: var(--color--primary--h);--color--primary-85-s: var(--color--primary--s);--color--primary-85-l: calc(var(--color--primary--l) + -27.5882352941%);--color--primary-85: hsl(var(--color--primary-85-h) var(--color--primary-85-s) var(--color--primary-85-l));--color--primary-90-h: var(--color--primary--h);--color--primary-90-s: var(--color--primary--s);--color--primary-90-l: calc(var(--color--primary--l) + -31.5294117647%);--color--primary-90: hsl(var(--color--primary-90-h) var(--color--primary-90-s) var(--color--primary-90-l));--color--primary-95-h: var(--color--primary--h);--color--primary-95-s: var(--color--primary--s);--color--primary-95-l: calc(var(--color--primary--l) + -35.4705882353%);--color--primary-95: hsl(var(--color--primary-95-h) var(--color--primary-95-s) var(--color--primary-95-l));--color--secondary-05-h: var(--color--secondary--h);--color--secondary-05-s: var(--color--secondary--s);--color--secondary-05-l: calc(var(--color--secondary--l) + 40.9411764706%);--color--secondary-05: hsl(var(--color--secondary-05-h) var(--color--secondary-05-s) var(--color--secondary-05-l));--color--secondary-10-h: var(--color--secondary--h);--color--secondary-10-s: var(--color--secondary--s);--color--secondary-10-l: calc(var(--color--secondary--l) + 36.3921568627%);--color--secondary-10: hsl(var(--color--secondary-10-h) var(--color--secondary-10-s) var(--color--secondary-10-l));--color--secondary-15-h: var(--color--secondary--h);--color--secondary-15-s: var(--color--secondary--s);--color--secondary-15-l: calc(var(--color--secondary--l) + 31.8431372549%);--color--secondary-15: hsl(var(--color--secondary-15-h) var(--color--secondary-15-s) var(--color--secondary-15-l));--color--secondary-20-h: var(--color--secondary--h);--color--secondary-20-s: var(--color--secondary--s);--color--secondary-20-l: calc(var(--color--secondary--l) + 27.2941176471%);--color--secondary-20: hsl(var(--color--secondary-20-h) var(--color--secondary-20-s) var(--color--secondary-20-l));--color--secondary-25-h: var(--color--secondary--h);--color--secondary-25-s: var(--color--secondary--s);--color--secondary-25-l: calc(var(--color--secondary--l) + 22.7450980392%);--color--secondary-25: hsl(var(--color--secondary-25-h) var(--color--secondary-25-s) var(--color--secondary-25-l));--color--secondary-30-h: var(--color--secondary--h);--color--secondary-30-s: var(--color--secondary--s);--color--secondary-30-l: calc(var(--color--secondary--l) + 18.1960784314%);--color--secondary-30: hsl(var(--color--secondary-30-h) var(--color--secondary-30-s) var(--color--secondary-30-l));--color--secondary-35-h: var(--color--secondary--h);--color--secondary-35-s: var(--color--secondary--s);--color--secondary-35-l: calc(var(--color--secondary--l) + 13.6470588235%);--color--secondary-35: hsl(var(--color--secondary-35-h) var(--color--secondary-35-s) var(--color--secondary-35-l));--color--secondary-40-h: var(--color--secondary--h);--color--secondary-40-s: var(--color--secondary--s);--color--secondary-40-l: calc(var(--color--secondary--l) + 9.0980392157%);--color--secondary-40: hsl(var(--color--secondary-40-h) var(--color--secondary-40-s) var(--color--secondary-40-l));--color--secondary-45-h: var(--color--secondary--h);--color--secondary-45-s: var(--color--secondary--s);--color--secondary-45-l: calc(var(--color--secondary--l) + 4.5490196078%);--color--secondary-45: hsl(var(--color--secondary-45-h) var(--color--secondary-45-s) var(--color--secondary-45-l));--color--secondary-50-h: var(--color--secondary--h);--color--secondary-50-s: var(--color--secondary--s);--color--secondary-50-l: calc(var(--color--secondary--l) + 0%);--color--secondary-50: hsl(var(--color--secondary-50-h) var(--color--secondary-50-s) var(--color--secondary-50-l));--color--secondary-55-h: var(--color--secondary--h);--color--secondary-55-s: var(--color--secondary--s);--color--secondary-55-l: calc(var(--color--secondary--l) + -5.4509803922%);--color--secondary-55: hsl(var(--color--secondary-55-h) var(--color--secondary-55-s) var(--color--secondary-55-l));--color--secondary-60-h: var(--color--secondary--h);--color--secondary-60-s: var(--color--secondary--s);--color--secondary-60-l: calc(var(--color--secondary--l) + -10.9019607843%);--color--secondary-60: hsl(var(--color--secondary-60-h) var(--color--secondary-60-s) var(--color--secondary-60-l));--color--secondary-65-h: var(--color--secondary--h);--color--secondary-65-s: var(--color--secondary--s);--color--secondary-65-l: calc(var(--color--secondary--l) + -16.3529411765%);--color--secondary-65: hsl(var(--color--secondary-65-h) var(--color--secondary-65-s) var(--color--secondary-65-l));--color--secondary-70-h: var(--color--secondary--h);--color--secondary-70-s: var(--color--secondary--s);--color--secondary-70-l: calc(var(--color--secondary--l) + -21.8039215686%);--color--secondary-70: hsl(var(--color--secondary-70-h) var(--color--secondary-70-s) var(--color--secondary-70-l));--color--secondary-75-h: var(--color--secondary--h);--color--secondary-75-s: var(--color--secondary--s);--color--secondary-75-l: calc(var(--color--secondary--l) + -27.2549019608%);--color--secondary-75: hsl(var(--color--secondary-75-h) var(--color--secondary-75-s) var(--color--secondary-75-l));--color--secondary-80-h: var(--color--secondary--h);--color--secondary-80-s: var(--color--secondary--s);--color--secondary-80-l: calc(var(--color--secondary--l) + -32.7058823529%);--color--secondary-80: hsl(var(--color--secondary-80-h) var(--color--secondary-80-s) var(--color--secondary-80-l));--color--secondary-85-h: var(--color--secondary--h);--color--secondary-85-s: var(--color--secondary--s);--color--secondary-85-l: calc(var(--color--secondary--l) + -38.1568627451%);--color--secondary-85: hsl(var(--color--secondary-85-h) var(--color--secondary-85-s) var(--color--secondary-85-l));--color--secondary-90-h: var(--color--secondary--h);--color--secondary-90-s: var(--color--secondary--s);--color--secondary-90-l: calc(var(--color--secondary--l) + -43.6078431373%);--color--secondary-90: hsl(var(--color--secondary-90-h) var(--color--secondary-90-s) var(--color--secondary-90-l));--color--secondary-95-h: var(--color--secondary--h);--color--secondary-95-s: var(--color--secondary--s);--color--secondary-95-l: calc(var(--color--secondary--l) + -49.0588235294%);--color--secondary-95: hsl(var(--color--secondary-95-h) var(--color--secondary-95-s) var(--color--secondary-95-l));--color--info-05-h: var(--color--info--h);--color--info-05-s: var(--color--info--s);--color--info-05-l: calc(var(--color--info--l) + 45.5294117647%);--color--info-05: hsl(var(--color--info-05-h) var(--color--info-05-s) var(--color--info-05-l));--color--info-10-h: var(--color--info--h);--color--info-10-s: var(--color--info--s);--color--info-10-l: calc(var(--color--info--l) + 40.4705882353%);--color--info-10: hsl(var(--color--info-10-h) var(--color--info-10-s) var(--color--info-10-l));--color--info-15-h: var(--color--info--h);--color--info-15-s: var(--color--info--s);--color--info-15-l: calc(var(--color--info--l) + 35.4117647059%);--color--info-15: hsl(var(--color--info-15-h) var(--color--info-15-s) var(--color--info-15-l));--color--info-20-h: var(--color--info--h);--color--info-20-s: var(--color--info--s);--color--info-20-l: calc(var(--color--info--l) + 30.3529411765%);--color--info-20: hsl(var(--color--info-20-h) var(--color--info-20-s) var(--color--info-20-l));--color--info-25-h: var(--color--info--h);--color--info-25-s: var(--color--info--s);--color--info-25-l: calc(var(--color--info--l) + 25.2941176471%);--color--info-25: hsl(var(--color--info-25-h) var(--color--info-25-s) var(--color--info-25-l));--color--info-30-h: var(--color--info--h);--color--info-30-s: var(--color--info--s);--color--info-30-l: calc(var(--color--info--l) + 20.2352941176%);--color--info-30: hsl(var(--color--info-30-h) var(--color--info-30-s) var(--color--info-30-l));--color--info-35-h: var(--color--info--h);--color--info-35-s: var(--color--info--s);--color--info-35-l: calc(var(--color--info--l) + 15.1764705882%);--color--info-35: hsl(var(--color--info-35-h) var(--color--info-35-s) var(--color--info-35-l));--color--info-40-h: var(--color--info--h);--color--info-40-s: var(--color--info--s);--color--info-40-l: calc(var(--color--info--l) + 10.1176470588%);--color--info-40: hsl(var(--color--info-40-h) var(--color--info-40-s) var(--color--info-40-l));--color--info-45-h: var(--color--info--h);--color--info-45-s: var(--color--info--s);--color--info-45-l: calc(var(--color--info--l) + 5.0588235294%);--color--info-45: hsl(var(--color--info-45-h) var(--color--info-45-s) var(--color--info-45-l));--color--info-50-h: var(--color--info--h);--color--info-50-s: var(--color--info--s);--color--info-50-l: calc(var(--color--info--l) + 0%);--color--info-50: hsl(var(--color--info-50-h) var(--color--info-50-s) var(--color--info-50-l));--color--info-55-h: var(--color--info--h);--color--info-55-s: var(--color--info--s);--color--info-55-l: calc(var(--color--info--l) + -4.9411764706%);--color--info-55: hsl(var(--color--info-55-h) var(--color--info-55-s) var(--color--info-55-l));--color--info-60-h: var(--color--info--h);--color--info-60-s: var(--color--info--s);--color--info-60-l: calc(var(--color--info--l) + -9.8823529412%);--color--info-60: hsl(var(--color--info-60-h) var(--color--info-60-s) var(--color--info-60-l));--color--info-65-h: var(--color--info--h);--color--info-65-s: var(--color--info--s);--color--info-65-l: calc(var(--color--info--l) + -14.8235294118%);--color--info-65: hsl(var(--color--info-65-h) var(--color--info-65-s) var(--color--info-65-l));--color--info-70-h: var(--color--info--h);--color--info-70-s: var(--color--info--s);--color--info-70-l: calc(var(--color--info--l) + -19.7647058824%);--color--info-70: hsl(var(--color--info-70-h) var(--color--info-70-s) var(--color--info-70-l));--color--info-75-h: var(--color--info--h);--color--info-75-s: var(--color--info--s);--color--info-75-l: calc(var(--color--info--l) + -24.7058823529%);--color--info-75: hsl(var(--color--info-75-h) var(--color--info-75-s) var(--color--info-75-l));--color--info-80-h: var(--color--info--h);--color--info-80-s: var(--color--info--s);--color--info-80-l: calc(var(--color--info--l) + -29.6470588235%);--color--info-80: hsl(var(--color--info-80-h) var(--color--info-80-s) var(--color--info-80-l));--color--info-85-h: var(--color--info--h);--color--info-85-s: var(--color--info--s);--color--info-85-l: calc(var(--color--info--l) + -34.5882352941%);--color--info-85: hsl(var(--color--info-85-h) var(--color--info-85-s) var(--color--info-85-l));--color--info-90-h: var(--color--info--h);--color--info-90-s: var(--color--info--s);--color--info-90-l: calc(var(--color--info--l) + -39.5294117647%);--color--info-90: hsl(var(--color--info-90-h) var(--color--info-90-s) var(--color--info-90-l));--color--info-95-h: var(--color--info--h);--color--info-95-s: var(--color--info--s);--color--info-95-l: calc(var(--color--info--l) + -44.4705882353%);--color--info-95: hsl(var(--color--info-95-h) var(--color--info-95-s) var(--color--info-95-l));--color--warning-05-h: var(--color--warning--h);--color--warning-05-s: var(--color--warning--s);--color--warning-05-l: calc(var(--color--warning--l) + 24%);--color--warning-05: hsl(var(--color--warning-05-h) var(--color--warning-05-s) var(--color--warning-05-l));--color--warning-10-h: var(--color--warning--h);--color--warning-10-s: var(--color--warning--s);--color--warning-10-l: calc(var(--color--warning--l) + 21.3333333333%);--color--warning-10: hsl(var(--color--warning-10-h) var(--color--warning-10-s) var(--color--warning-10-l));--color--warning-15-h: var(--color--warning--h);--color--warning-15-s: var(--color--warning--s);--color--warning-15-l: calc(var(--color--warning--l) + 18.6666666667%);--color--warning-15: hsl(var(--color--warning-15-h) var(--color--warning-15-s) var(--color--warning-15-l));--color--warning-20-h: var(--color--warning--h);--color--warning-20-s: var(--color--warning--s);--color--warning-20-l: calc(var(--color--warning--l) + 16%);--color--warning-20: hsl(var(--color--warning-20-h) var(--color--warning-20-s) var(--color--warning-20-l));--color--warning-25-h: var(--color--warning--h);--color--warning-25-s: var(--color--warning--s);--color--warning-25-l: calc(var(--color--warning--l) + 13.3333333333%);--color--warning-25: hsl(var(--color--warning-25-h) var(--color--warning-25-s) var(--color--warning-25-l));--color--warning-30-h: var(--color--warning--h);--color--warning-30-s: var(--color--warning--s);--color--warning-30-l: calc(var(--color--warning--l) + 10.6666666667%);--color--warning-30: hsl(var(--color--warning-30-h) var(--color--warning-30-s) var(--color--warning-30-l));--color--warning-35-h: var(--color--warning--h);--color--warning-35-s: var(--color--warning--s);--color--warning-35-l: calc(var(--color--warning--l) + 8%);--color--warning-35: hsl(var(--color--warning-35-h) var(--color--warning-35-s) var(--color--warning-35-l));--color--warning-40-h: var(--color--warning--h);--color--warning-40-s: var(--color--warning--s);--color--warning-40-l: calc(var(--color--warning--l) + 5.3333333333%);--color--warning-40: hsl(var(--color--warning-40-h) var(--color--warning-40-s) var(--color--warning-40-l));--color--warning-45-h: var(--color--warning--h);--color--warning-45-s: var(--color--warning--s);--color--warning-45-l: calc(var(--color--warning--l) + 2.6666666667%);--color--warning-45: hsl(var(--color--warning-45-h) var(--color--warning-45-s) var(--color--warning-45-l));--color--warning-50-h: var(--color--warning--h);--color--warning-50-s: var(--color--warning--s);--color--warning-50-l: calc(var(--color--warning--l) + 0%);--color--warning-50: hsl(var(--color--warning-50-h) var(--color--warning-50-s) var(--color--warning-50-l));--color--warning-55-h: var(--color--warning--h);--color--warning-55-s: var(--color--warning--s);--color--warning-55-l: calc(var(--color--warning--l) + -7.3333333333%);--color--warning-55: hsl(var(--color--warning-55-h) var(--color--warning-55-s) var(--color--warning-55-l));--color--warning-60-h: var(--color--warning--h);--color--warning-60-s: var(--color--warning--s);--color--warning-60-l: calc(var(--color--warning--l) + -14.6666666667%);--color--warning-60: hsl(var(--color--warning-60-h) var(--color--warning-60-s) var(--color--warning-60-l));--color--warning-65-h: var(--color--warning--h);--color--warning-65-s: var(--color--warning--s);--color--warning-65-l: calc(var(--color--warning--l) + -22%);--color--warning-65: hsl(var(--color--warning-65-h) var(--color--warning-65-s) var(--color--warning-65-l));--color--warning-70-h: var(--color--warning--h);--color--warning-70-s: var(--color--warning--s);--color--warning-70-l: calc(var(--color--warning--l) + -29.3333333333%);--color--warning-70: hsl(var(--color--warning-70-h) var(--color--warning-70-s) var(--color--warning-70-l));--color--warning-75-h: var(--color--warning--h);--color--warning-75-s: var(--color--warning--s);--color--warning-75-l: calc(var(--color--warning--l) + -36.6666666667%);--color--warning-75: hsl(var(--color--warning-75-h) var(--color--warning-75-s) var(--color--warning-75-l));--color--warning-80-h: var(--color--warning--h);--color--warning-80-s: var(--color--warning--s);--color--warning-80-l: calc(var(--color--warning--l) + -44%);--color--warning-80: hsl(var(--color--warning-80-h) var(--color--warning-80-s) var(--color--warning-80-l));--color--warning-85-h: var(--color--warning--h);--color--warning-85-s: var(--color--warning--s);--color--warning-85-l: calc(var(--color--warning--l) + -51.3333333333%);--color--warning-85: hsl(var(--color--warning-85-h) var(--color--warning-85-s) var(--color--warning-85-l));--color--warning-90-h: var(--color--warning--h);--color--warning-90-s: var(--color--warning--s);--color--warning-90-l: calc(var(--color--warning--l) + -58.6666666667%);--color--warning-90: hsl(var(--color--warning-90-h) var(--color--warning-90-s) var(--color--warning-90-l));--color--warning-95-h: var(--color--warning--h);--color--warning-95-s: var(--color--warning--s);--color--warning-95-l: calc(var(--color--warning--l) + -66%);--color--warning-95: hsl(var(--color--warning-95-h) var(--color--warning-95-s) var(--color--warning-95-l));--color--danger-05-h: var(--color--danger--h);--color--danger-05-s: var(--color--danger--s);--color--danger-05-l: calc(var(--color--danger--l) + 36.5294117647%);--color--danger-05: hsl(var(--color--danger-05-h) var(--color--danger-05-s) var(--color--danger-05-l));--color--danger-10-h: var(--color--danger--h);--color--danger-10-s: var(--color--danger--s);--color--danger-10-l: calc(var(--color--danger--l) + 32.4705882353%);--color--danger-10: hsl(var(--color--danger-10-h) var(--color--danger-10-s) var(--color--danger-10-l));--color--danger-15-h: var(--color--danger--h);--color--danger-15-s: var(--color--danger--s);--color--danger-15-l: calc(var(--color--danger--l) + 28.4117647059%);--color--danger-15: hsl(var(--color--danger-15-h) var(--color--danger-15-s) var(--color--danger-15-l));--color--danger-20-h: var(--color--danger--h);--color--danger-20-s: var(--color--danger--s);--color--danger-20-l: calc(var(--color--danger--l) + 24.3529411765%);--color--danger-20: hsl(var(--color--danger-20-h) var(--color--danger-20-s) var(--color--danger-20-l));--color--danger-25-h: var(--color--danger--h);--color--danger-25-s: var(--color--danger--s);--color--danger-25-l: calc(var(--color--danger--l) + 20.2941176471%);--color--danger-25: hsl(var(--color--danger-25-h) var(--color--danger-25-s) var(--color--danger-25-l));--color--danger-30-h: var(--color--danger--h);--color--danger-30-s: var(--color--danger--s);--color--danger-30-l: calc(var(--color--danger--l) + 16.2352941176%);--color--danger-30: hsl(var(--color--danger-30-h) var(--color--danger-30-s) var(--color--danger-30-l));--color--danger-35-h: var(--color--danger--h);--color--danger-35-s: var(--color--danger--s);--color--danger-35-l: calc(var(--color--danger--l) + 12.1764705882%);--color--danger-35: hsl(var(--color--danger-35-h) var(--color--danger-35-s) var(--color--danger-35-l));--color--danger-40-h: var(--color--danger--h);--color--danger-40-s: var(--color--danger--s);--color--danger-40-l: calc(var(--color--danger--l) + 8.1176470588%);--color--danger-40: hsl(var(--color--danger-40-h) var(--color--danger-40-s) var(--color--danger-40-l));--color--danger-45-h: var(--color--danger--h);--color--danger-45-s: var(--color--danger--s);--color--danger-45-l: calc(var(--color--danger--l) + 4.0588235294%);--color--danger-45: hsl(var(--color--danger-45-h) var(--color--danger-45-s) var(--color--danger-45-l));--color--danger-50-h: var(--color--danger--h);--color--danger-50-s: var(--color--danger--s);--color--danger-50-l: calc(var(--color--danger--l) + 0%);--color--danger-50: hsl(var(--color--danger-50-h) var(--color--danger-50-s) var(--color--danger-50-l));--color--danger-55-h: var(--color--danger--h);--color--danger-55-s: var(--color--danger--s);--color--danger-55-l: calc(var(--color--danger--l) + -5.9411764706%);--color--danger-55: hsl(var(--color--danger-55-h) var(--color--danger-55-s) var(--color--danger-55-l));--color--danger-60-h: var(--color--danger--h);--color--danger-60-s: var(--color--danger--s);--color--danger-60-l: calc(var(--color--danger--l) + -11.8823529412%);--color--danger-60: hsl(var(--color--danger-60-h) var(--color--danger-60-s) var(--color--danger-60-l));--color--danger-65-h: var(--color--danger--h);--color--danger-65-s: var(--color--danger--s);--color--danger-65-l: calc(var(--color--danger--l) + -17.8235294118%);--color--danger-65: hsl(var(--color--danger-65-h) var(--color--danger-65-s) var(--color--danger-65-l));--color--danger-70-h: var(--color--danger--h);--color--danger-70-s: var(--color--danger--s);--color--danger-70-l: calc(var(--color--danger--l) + -23.7647058824%);--color--danger-70: hsl(var(--color--danger-70-h) var(--color--danger-70-s) var(--color--danger-70-l));--color--danger-75-h: var(--color--danger--h);--color--danger-75-s: var(--color--danger--s);--color--danger-75-l: calc(var(--color--danger--l) + -29.7058823529%);--color--danger-75: hsl(var(--color--danger-75-h) var(--color--danger-75-s) var(--color--danger-75-l));--color--danger-80-h: var(--color--danger--h);--color--danger-80-s: var(--color--danger--s);--color--danger-80-l: calc(var(--color--danger--l) + -35.6470588235%);--color--danger-80: hsl(var(--color--danger-80-h) var(--color--danger-80-s) var(--color--danger-80-l));--color--danger-85-h: var(--color--danger--h);--color--danger-85-s: var(--color--danger--s);--color--danger-85-l: calc(var(--color--danger--l) + -41.5882352941%);--color--danger-85: hsl(var(--color--danger-85-h) var(--color--danger-85-s) var(--color--danger-85-l));--color--danger-90-h: var(--color--danger--h);--color--danger-90-s: var(--color--danger--s);--color--danger-90-l: calc(var(--color--danger--l) + -47.5294117647%);--color--danger-90: hsl(var(--color--danger-90-h) var(--color--danger-90-s) var(--color--danger-90-l));--color--danger-95-h: var(--color--danger--h);--color--danger-95-s: var(--color--danger--s);--color--danger-95-l: calc(var(--color--danger--l) + -53.4705882353%);--color--danger-95: hsl(var(--color--danger-95-h) var(--color--danger-95-s) var(--color--danger-95-l));--color--success-05-h: var(--color--success--h);--color--success-05-s: var(--color--success--s);--color--success-05-l: calc(var(--color--success--l) + 50.6470588235%);--color--success-05: hsl(var(--color--success-05-h) var(--color--success-05-s) var(--color--success-05-l));--color--success-10-h: var(--color--success--h);--color--success-10-s: var(--color--success--s);--color--success-10-l: calc(var(--color--success--l) + 45.0196078431%);--color--success-10: hsl(var(--color--success-10-h) var(--color--success-10-s) var(--color--success-10-l));--color--success-15-h: var(--color--success--h);--color--success-15-s: var(--color--success--s);--color--success-15-l: calc(var(--color--success--l) + 39.3921568627%);--color--success-15: hsl(var(--color--success-15-h) var(--color--success-15-s) var(--color--success-15-l));--color--success-20-h: var(--color--success--h);--color--success-20-s: var(--color--success--s);--color--success-20-l: calc(var(--color--success--l) + 33.7647058824%);--color--success-20: hsl(var(--color--success-20-h) var(--color--success-20-s) var(--color--success-20-l));--color--success-25-h: var(--color--success--h);--color--success-25-s: var(--color--success--s);--color--success-25-l: calc(var(--color--success--l) + 28.137254902%);--color--success-25: hsl(var(--color--success-25-h) var(--color--success-25-s) var(--color--success-25-l));--color--success-30-h: var(--color--success--h);--color--success-30-s: var(--color--success--s);--color--success-30-l: calc(var(--color--success--l) + 22.5098039216%);--color--success-30: hsl(var(--color--success-30-h) var(--color--success-30-s) var(--color--success-30-l));--color--success-35-h: var(--color--success--h);--color--success-35-s: var(--color--success--s);--color--success-35-l: calc(var(--color--success--l) + 16.8823529412%);--color--success-35: hsl(var(--color--success-35-h) var(--color--success-35-s) var(--color--success-35-l));--color--success-40-h: var(--color--success--h);--color--success-40-s: var(--color--success--s);--color--success-40-l: calc(var(--color--success--l) + 11.2549019608%);--color--success-40: hsl(var(--color--success-40-h) var(--color--success-40-s) var(--color--success-40-l));--color--success-45-h: var(--color--success--h);--color--success-45-s: var(--color--success--s);--color--success-45-l: calc(var(--color--success--l) + 5.6274509804%);--color--success-45: hsl(var(--color--success-45-h) var(--color--success-45-s) var(--color--success-45-l));--color--success-50-h: var(--color--success--h);--color--success-50-s: var(--color--success--s);--color--success-50-l: calc(var(--color--success--l) + 0%);--color--success-50: hsl(var(--color--success-50-h) var(--color--success-50-s) var(--color--success-50-l));--color--success-55-h: var(--color--success--h);--color--success-55-s: var(--color--success--s);--color--success-55-l: calc(var(--color--success--l) + -4.3725490196%);--color--success-55: hsl(var(--color--success-55-h) var(--color--success-55-s) var(--color--success-55-l));--color--success-60-h: var(--color--success--h);--color--success-60-s: var(--color--success--s);--color--success-60-l: calc(var(--color--success--l) + -8.7450980392%);--color--success-60: hsl(var(--color--success-60-h) var(--color--success-60-s) var(--color--success-60-l));--color--success-65-h: var(--color--success--h);--color--success-65-s: var(--color--success--s);--color--success-65-l: calc(var(--color--success--l) + -13.1176470588%);--color--success-65: hsl(var(--color--success-65-h) var(--color--success-65-s) var(--color--success-65-l));--color--success-70-h: var(--color--success--h);--color--success-70-s: var(--color--success--s);--color--success-70-l: calc(var(--color--success--l) + -17.4901960784%);--color--success-70: hsl(var(--color--success-70-h) var(--color--success-70-s) var(--color--success-70-l));--color--success-75-h: var(--color--success--h);--color--success-75-s: var(--color--success--s);--color--success-75-l: calc(var(--color--success--l) + -21.862745098%);--color--success-75: hsl(var(--color--success-75-h) var(--color--success-75-s) var(--color--success-75-l));--color--success-80-h: var(--color--success--h);--color--success-80-s: var(--color--success--s);--color--success-80-l: calc(var(--color--success--l) + -26.2352941176%);--color--success-80: hsl(var(--color--success-80-h) var(--color--success-80-s) var(--color--success-80-l));--color--success-85-h: var(--color--success--h);--color--success-85-s: var(--color--success--s);--color--success-85-l: calc(var(--color--success--l) + -30.6078431373%);--color--success-85: hsl(var(--color--success-85-h) var(--color--success-85-s) var(--color--success-85-l));--color--success-90-h: var(--color--success--h);--color--success-90-s: var(--color--success--s);--color--success-90-l: calc(var(--color--success--l) + -34.9803921569%);--color--success-90: hsl(var(--color--success-90-h) var(--color--success-90-s) var(--color--success-90-l));--color--success-95-h: var(--color--success--h);--color--success-95-s: var(--color--success--s);--color--success-95-l: calc(var(--color--success--l) + -39.3529411765%);--color--success-95: hsl(var(--color--success-95-h) var(--color--success-95-s) var(--color--success-95-l));--color--red-05-h: var(--color--red--h);--color--red-05-s: var(--color--red--s);--color--red-05-l: calc(var(--color--red--l) + 36.5294117647%);--color--red-05: hsl(var(--color--red-05-h) var(--color--red-05-s) var(--color--red-05-l));--color--red-10-h: var(--color--red--h);--color--red-10-s: var(--color--red--s);--color--red-10-l: calc(var(--color--red--l) + 32.4705882353%);--color--red-10: hsl(var(--color--red-10-h) var(--color--red-10-s) var(--color--red-10-l));--color--red-15-h: var(--color--red--h);--color--red-15-s: var(--color--red--s);--color--red-15-l: calc(var(--color--red--l) + 28.4117647059%);--color--red-15: hsl(var(--color--red-15-h) var(--color--red-15-s) var(--color--red-15-l));--color--red-20-h: var(--color--red--h);--color--red-20-s: var(--color--red--s);--color--red-20-l: calc(var(--color--red--l) + 24.3529411765%);--color--red-20: hsl(var(--color--red-20-h) var(--color--red-20-s) var(--color--red-20-l));--color--red-25-h: var(--color--red--h);--color--red-25-s: var(--color--red--s);--color--red-25-l: calc(var(--color--red--l) + 20.2941176471%);--color--red-25: hsl(var(--color--red-25-h) var(--color--red-25-s) var(--color--red-25-l));--color--red-30-h: var(--color--red--h);--color--red-30-s: var(--color--red--s);--color--red-30-l: calc(var(--color--red--l) + 16.2352941176%);--color--red-30: hsl(var(--color--red-30-h) var(--color--red-30-s) var(--color--red-30-l));--color--red-35-h: var(--color--red--h);--color--red-35-s: var(--color--red--s);--color--red-35-l: calc(var(--color--red--l) + 12.1764705882%);--color--red-35: hsl(var(--color--red-35-h) var(--color--red-35-s) var(--color--red-35-l));--color--red-40-h: var(--color--red--h);--color--red-40-s: var(--color--red--s);--color--red-40-l: calc(var(--color--red--l) + 8.1176470588%);--color--red-40: hsl(var(--color--red-40-h) var(--color--red-40-s) var(--color--red-40-l));--color--red-45-h: var(--color--red--h);--color--red-45-s: var(--color--red--s);--color--red-45-l: calc(var(--color--red--l) + 4.0588235294%);--color--red-45: hsl(var(--color--red-45-h) var(--color--red-45-s) var(--color--red-45-l));--color--red-50-h: var(--color--red--h);--color--red-50-s: var(--color--red--s);--color--red-50-l: calc(var(--color--red--l) + 0%);--color--red-50: hsl(var(--color--red-50-h) var(--color--red-50-s) var(--color--red-50-l));--color--red-55-h: var(--color--red--h);--color--red-55-s: var(--color--red--s);--color--red-55-l: calc(var(--color--red--l) + -5.9411764706%);--color--red-55: hsl(var(--color--red-55-h) var(--color--red-55-s) var(--color--red-55-l));--color--red-60-h: var(--color--red--h);--color--red-60-s: var(--color--red--s);--color--red-60-l: calc(var(--color--red--l) + -11.8823529412%);--color--red-60: hsl(var(--color--red-60-h) var(--color--red-60-s) var(--color--red-60-l));--color--red-65-h: var(--color--red--h);--color--red-65-s: var(--color--red--s);--color--red-65-l: calc(var(--color--red--l) + -17.8235294118%);--color--red-65: hsl(var(--color--red-65-h) var(--color--red-65-s) var(--color--red-65-l));--color--red-70-h: var(--color--red--h);--color--red-70-s: var(--color--red--s);--color--red-70-l: calc(var(--color--red--l) + -23.7647058824%);--color--red-70: hsl(var(--color--red-70-h) var(--color--red-70-s) var(--color--red-70-l));--color--red-75-h: var(--color--red--h);--color--red-75-s: var(--color--red--s);--color--red-75-l: calc(var(--color--red--l) + -29.7058823529%);--color--red-75: hsl(var(--color--red-75-h) var(--color--red-75-s) var(--color--red-75-l));--color--red-80-h: var(--color--red--h);--color--red-80-s: var(--color--red--s);--color--red-80-l: calc(var(--color--red--l) + -35.6470588235%);--color--red-80: hsl(var(--color--red-80-h) var(--color--red-80-s) var(--color--red-80-l));--color--red-85-h: var(--color--red--h);--color--red-85-s: var(--color--red--s);--color--red-85-l: calc(var(--color--red--l) + -41.5882352941%);--color--red-85: hsl(var(--color--red-85-h) var(--color--red-85-s) var(--color--red-85-l));--color--red-90-h: var(--color--red--h);--color--red-90-s: var(--color--red--s);--color--red-90-l: calc(var(--color--red--l) + -47.5294117647%);--color--red-90: hsl(var(--color--red-90-h) var(--color--red-90-s) var(--color--red-90-l));--color--red-95-h: var(--color--red--h);--color--red-95-s: var(--color--red--s);--color--red-95-l: calc(var(--color--red--l) + -53.4705882353%);--color--red-95: hsl(var(--color--red-95-h) var(--color--red-95-s) var(--color--red-95-l));--color--orange-05-h: var(--color--orange--h);--color--orange-05-s: var(--color--orange--s);--color--orange-05-l: calc(var(--color--orange--l) + 30.1764705882%);--color--orange-05: hsl(var(--color--orange-05-h) var(--color--orange-05-s) var(--color--orange-05-l));--color--orange-10-h: var(--color--orange--h);--color--orange-10-s: var(--color--orange--s);--color--orange-10-l: calc(var(--color--orange--l) + 26.8235294118%);--color--orange-10: hsl(var(--color--orange-10-h) var(--color--orange-10-s) var(--color--orange-10-l));--color--orange-15-h: var(--color--orange--h);--color--orange-15-s: var(--color--orange--s);--color--orange-15-l: calc(var(--color--orange--l) + 23.4705882353%);--color--orange-15: hsl(var(--color--orange-15-h) var(--color--orange-15-s) var(--color--orange-15-l));--color--orange-20-h: var(--color--orange--h);--color--orange-20-s: var(--color--orange--s);--color--orange-20-l: calc(var(--color--orange--l) + 20.1176470588%);--color--orange-20: hsl(var(--color--orange-20-h) var(--color--orange-20-s) var(--color--orange-20-l));--color--orange-25-h: var(--color--orange--h);--color--orange-25-s: var(--color--orange--s);--color--orange-25-l: calc(var(--color--orange--l) + 16.7647058824%);--color--orange-25: hsl(var(--color--orange-25-h) var(--color--orange-25-s) var(--color--orange-25-l));--color--orange-30-h: var(--color--orange--h);--color--orange-30-s: var(--color--orange--s);--color--orange-30-l: calc(var(--color--orange--l) + 13.4117647059%);--color--orange-30: hsl(var(--color--orange-30-h) var(--color--orange-30-s) var(--color--orange-30-l));--color--orange-35-h: var(--color--orange--h);--color--orange-35-s: var(--color--orange--s);--color--orange-35-l: calc(var(--color--orange--l) + 10.0588235294%);--color--orange-35: hsl(var(--color--orange-35-h) var(--color--orange-35-s) var(--color--orange-35-l));--color--orange-40-h: var(--color--orange--h);--color--orange-40-s: var(--color--orange--s);--color--orange-40-l: calc(var(--color--orange--l) + 6.7058823529%);--color--orange-40: hsl(var(--color--orange-40-h) var(--color--orange-40-s) var(--color--orange-40-l));--color--orange-45-h: var(--color--orange--h);--color--orange-45-s: var(--color--orange--s);--color--orange-45-l: calc(var(--color--orange--l) + 3.3529411765%);--color--orange-45: hsl(var(--color--orange-45-h) var(--color--orange-45-s) var(--color--orange-45-l));--color--orange-50-h: var(--color--orange--h);--color--orange-50-s: var(--color--orange--s);--color--orange-50-l: calc(var(--color--orange--l) + 0%);--color--orange-50: hsl(var(--color--orange-50-h) var(--color--orange-50-s) var(--color--orange-50-l));--color--orange-55-h: var(--color--orange--h);--color--orange-55-s: var(--color--orange--s);--color--orange-55-l: calc(var(--color--orange--l) + -6.6470588235%);--color--orange-55: hsl(var(--color--orange-55-h) var(--color--orange-55-s) var(--color--orange-55-l));--color--orange-60-h: var(--color--orange--h);--color--orange-60-s: var(--color--orange--s);--color--orange-60-l: calc(var(--color--orange--l) + -13.2941176471%);--color--orange-60: hsl(var(--color--orange-60-h) var(--color--orange-60-s) var(--color--orange-60-l));--color--orange-65-h: var(--color--orange--h);--color--orange-65-s: var(--color--orange--s);--color--orange-65-l: calc(var(--color--orange--l) + -19.9411764706%);--color--orange-65: hsl(var(--color--orange-65-h) var(--color--orange-65-s) var(--color--orange-65-l));--color--orange-70-h: var(--color--orange--h);--color--orange-70-s: var(--color--orange--s);--color--orange-70-l: calc(var(--color--orange--l) + -26.5882352941%);--color--orange-70: hsl(var(--color--orange-70-h) var(--color--orange-70-s) var(--color--orange-70-l));--color--orange-75-h: var(--color--orange--h);--color--orange-75-s: var(--color--orange--s);--color--orange-75-l: calc(var(--color--orange--l) + -33.2352941176%);--color--orange-75: hsl(var(--color--orange-75-h) var(--color--orange-75-s) var(--color--orange-75-l));--color--orange-80-h: var(--color--orange--h);--color--orange-80-s: var(--color--orange--s);--color--orange-80-l: calc(var(--color--orange--l) + -39.8823529412%);--color--orange-80: hsl(var(--color--orange-80-h) var(--color--orange-80-s) var(--color--orange-80-l));--color--orange-85-h: var(--color--orange--h);--color--orange-85-s: var(--color--orange--s);--color--orange-85-l: calc(var(--color--orange--l) + -46.5294117647%);--color--orange-85: hsl(var(--color--orange-85-h) var(--color--orange-85-s) var(--color--orange-85-l));--color--orange-90-h: var(--color--orange--h);--color--orange-90-s: var(--color--orange--s);--color--orange-90-l: calc(var(--color--orange--l) + -53.1764705882%);--color--orange-90: hsl(var(--color--orange-90-h) var(--color--orange-90-s) var(--color--orange-90-l));--color--orange-95-h: var(--color--orange--h);--color--orange-95-s: var(--color--orange--s);--color--orange-95-l: calc(var(--color--orange--l) + -59.8235294118%);--color--orange-95: hsl(var(--color--orange-95-h) var(--color--orange-95-s) var(--color--orange-95-l));--color--yellow-05-h: var(--color--yellow--h);--color--yellow-05-s: var(--color--yellow--s);--color--yellow-05-l: calc(var(--color--yellow--l) + 24%);--color--yellow-05: hsl(var(--color--yellow-05-h) var(--color--yellow-05-s) var(--color--yellow-05-l));--color--yellow-10-h: var(--color--yellow--h);--color--yellow-10-s: var(--color--yellow--s);--color--yellow-10-l: calc(var(--color--yellow--l) + 21.3333333333%);--color--yellow-10: hsl(var(--color--yellow-10-h) var(--color--yellow-10-s) var(--color--yellow-10-l));--color--yellow-15-h: var(--color--yellow--h);--color--yellow-15-s: var(--color--yellow--s);--color--yellow-15-l: calc(var(--color--yellow--l) + 18.6666666667%);--color--yellow-15: hsl(var(--color--yellow-15-h) var(--color--yellow-15-s) var(--color--yellow-15-l));--color--yellow-20-h: var(--color--yellow--h);--color--yellow-20-s: var(--color--yellow--s);--color--yellow-20-l: calc(var(--color--yellow--l) + 16%);--color--yellow-20: hsl(var(--color--yellow-20-h) var(--color--yellow-20-s) var(--color--yellow-20-l));--color--yellow-25-h: var(--color--yellow--h);--color--yellow-25-s: var(--color--yellow--s);--color--yellow-25-l: calc(var(--color--yellow--l) + 13.3333333333%);--color--yellow-25: hsl(var(--color--yellow-25-h) var(--color--yellow-25-s) var(--color--yellow-25-l));--color--yellow-30-h: var(--color--yellow--h);--color--yellow-30-s: var(--color--yellow--s);--color--yellow-30-l: calc(var(--color--yellow--l) + 10.6666666667%);--color--yellow-30: hsl(var(--color--yellow-30-h) var(--color--yellow-30-s) var(--color--yellow-30-l));--color--yellow-35-h: var(--color--yellow--h);--color--yellow-35-s: var(--color--yellow--s);--color--yellow-35-l: calc(var(--color--yellow--l) + 8%);--color--yellow-35: hsl(var(--color--yellow-35-h) var(--color--yellow-35-s) var(--color--yellow-35-l));--color--yellow-40-h: var(--color--yellow--h);--color--yellow-40-s: var(--color--yellow--s);--color--yellow-40-l: calc(var(--color--yellow--l) + 5.3333333333%);--color--yellow-40: hsl(var(--color--yellow-40-h) var(--color--yellow-40-s) var(--color--yellow-40-l));--color--yellow-45-h: var(--color--yellow--h);--color--yellow-45-s: var(--color--yellow--s);--color--yellow-45-l: calc(var(--color--yellow--l) + 2.6666666667%);--color--yellow-45: hsl(var(--color--yellow-45-h) var(--color--yellow-45-s) var(--color--yellow-45-l));--color--yellow-50-h: var(--color--yellow--h);--color--yellow-50-s: var(--color--yellow--s);--color--yellow-50-l: calc(var(--color--yellow--l) + 0%);--color--yellow-50: hsl(var(--color--yellow-50-h) var(--color--yellow-50-s) var(--color--yellow-50-l));--color--yellow-55-h: var(--color--yellow--h);--color--yellow-55-s: var(--color--yellow--s);--color--yellow-55-l: calc(var(--color--yellow--l) + -7.3333333333%);--color--yellow-55: hsl(var(--color--yellow-55-h) var(--color--yellow-55-s) var(--color--yellow-55-l));--color--yellow-60-h: var(--color--yellow--h);--color--yellow-60-s: var(--color--yellow--s);--color--yellow-60-l: calc(var(--color--yellow--l) + -14.6666666667%);--color--yellow-60: hsl(var(--color--yellow-60-h) var(--color--yellow-60-s) var(--color--yellow-60-l));--color--yellow-65-h: var(--color--yellow--h);--color--yellow-65-s: var(--color--yellow--s);--color--yellow-65-l: calc(var(--color--yellow--l) + -22%);--color--yellow-65: hsl(var(--color--yellow-65-h) var(--color--yellow-65-s) var(--color--yellow-65-l));--color--yellow-70-h: var(--color--yellow--h);--color--yellow-70-s: var(--color--yellow--s);--color--yellow-70-l: calc(var(--color--yellow--l) + -29.3333333333%);--color--yellow-70: hsl(var(--color--yellow-70-h) var(--color--yellow-70-s) var(--color--yellow-70-l));--color--yellow-75-h: var(--color--yellow--h);--color--yellow-75-s: var(--color--yellow--s);--color--yellow-75-l: calc(var(--color--yellow--l) + -36.6666666667%);--color--yellow-75: hsl(var(--color--yellow-75-h) var(--color--yellow-75-s) var(--color--yellow-75-l));--color--yellow-80-h: var(--color--yellow--h);--color--yellow-80-s: var(--color--yellow--s);--color--yellow-80-l: calc(var(--color--yellow--l) + -44%);--color--yellow-80: hsl(var(--color--yellow-80-h) var(--color--yellow-80-s) var(--color--yellow-80-l));--color--yellow-85-h: var(--color--yellow--h);--color--yellow-85-s: var(--color--yellow--s);--color--yellow-85-l: calc(var(--color--yellow--l) + -51.3333333333%);--color--yellow-85: hsl(var(--color--yellow-85-h) var(--color--yellow-85-s) var(--color--yellow-85-l));--color--yellow-90-h: var(--color--yellow--h);--color--yellow-90-s: var(--color--yellow--s);--color--yellow-90-l: calc(var(--color--yellow--l) + -58.6666666667%);--color--yellow-90: hsl(var(--color--yellow-90-h) var(--color--yellow-90-s) var(--color--yellow-90-l));--color--yellow-95-h: var(--color--yellow--h);--color--yellow-95-s: var(--color--yellow--s);--color--yellow-95-l: calc(var(--color--yellow--l) + -66%);--color--yellow-95: hsl(var(--color--yellow-95-h) var(--color--yellow-95-s) var(--color--yellow-95-l));--color--green-05-h: var(--color--green--h);--color--green-05-s: var(--color--green--s);--color--green-05-l: calc(var(--color--green--l) + 50.6470588235%);--color--green-05: hsl(var(--color--green-05-h) var(--color--green-05-s) var(--color--green-05-l));--color--green-10-h: var(--color--green--h);--color--green-10-s: var(--color--green--s);--color--green-10-l: calc(var(--color--green--l) + 45.0196078431%);--color--green-10: hsl(var(--color--green-10-h) var(--color--green-10-s) var(--color--green-10-l));--color--green-15-h: var(--color--green--h);--color--green-15-s: var(--color--green--s);--color--green-15-l: calc(var(--color--green--l) + 39.3921568627%);--color--green-15: hsl(var(--color--green-15-h) var(--color--green-15-s) var(--color--green-15-l));--color--green-20-h: var(--color--green--h);--color--green-20-s: var(--color--green--s);--color--green-20-l: calc(var(--color--green--l) + 33.7647058824%);--color--green-20: hsl(var(--color--green-20-h) var(--color--green-20-s) var(--color--green-20-l));--color--green-25-h: var(--color--green--h);--color--green-25-s: var(--color--green--s);--color--green-25-l: calc(var(--color--green--l) + 28.137254902%);--color--green-25: hsl(var(--color--green-25-h) var(--color--green-25-s) var(--color--green-25-l));--color--green-30-h: var(--color--green--h);--color--green-30-s: var(--color--green--s);--color--green-30-l: calc(var(--color--green--l) + 22.5098039216%);--color--green-30: hsl(var(--color--green-30-h) var(--color--green-30-s) var(--color--green-30-l));--color--green-35-h: var(--color--green--h);--color--green-35-s: var(--color--green--s);--color--green-35-l: calc(var(--color--green--l) + 16.8823529412%);--color--green-35: hsl(var(--color--green-35-h) var(--color--green-35-s) var(--color--green-35-l));--color--green-40-h: var(--color--green--h);--color--green-40-s: var(--color--green--s);--color--green-40-l: calc(var(--color--green--l) + 11.2549019608%);--color--green-40: hsl(var(--color--green-40-h) var(--color--green-40-s) var(--color--green-40-l));--color--green-45-h: var(--color--green--h);--color--green-45-s: var(--color--green--s);--color--green-45-l: calc(var(--color--green--l) + 5.6274509804%);--color--green-45: hsl(var(--color--green-45-h) var(--color--green-45-s) var(--color--green-45-l));--color--green-50-h: var(--color--green--h);--color--green-50-s: var(--color--green--s);--color--green-50-l: calc(var(--color--green--l) + 0%);--color--green-50: hsl(var(--color--green-50-h) var(--color--green-50-s) var(--color--green-50-l));--color--green-55-h: var(--color--green--h);--color--green-55-s: var(--color--green--s);--color--green-55-l: calc(var(--color--green--l) + -4.3725490196%);--color--green-55: hsl(var(--color--green-55-h) var(--color--green-55-s) var(--color--green-55-l));--color--green-60-h: var(--color--green--h);--color--green-60-s: var(--color--green--s);--color--green-60-l: calc(var(--color--green--l) + -8.7450980392%);--color--green-60: hsl(var(--color--green-60-h) var(--color--green-60-s) var(--color--green-60-l));--color--green-65-h: var(--color--green--h);--color--green-65-s: var(--color--green--s);--color--green-65-l: calc(var(--color--green--l) + -13.1176470588%);--color--green-65: hsl(var(--color--green-65-h) var(--color--green-65-s) var(--color--green-65-l));--color--green-70-h: var(--color--green--h);--color--green-70-s: var(--color--green--s);--color--green-70-l: calc(var(--color--green--l) + -17.4901960784%);--color--green-70: hsl(var(--color--green-70-h) var(--color--green-70-s) var(--color--green-70-l));--color--green-75-h: var(--color--green--h);--color--green-75-s: var(--color--green--s);--color--green-75-l: calc(var(--color--green--l) + -21.862745098%);--color--green-75: hsl(var(--color--green-75-h) var(--color--green-75-s) var(--color--green-75-l));--color--green-80-h: var(--color--green--h);--color--green-80-s: var(--color--green--s);--color--green-80-l: calc(var(--color--green--l) + -26.2352941176%);--color--green-80: hsl(var(--color--green-80-h) var(--color--green-80-s) var(--color--green-80-l));--color--green-85-h: var(--color--green--h);--color--green-85-s: var(--color--green--s);--color--green-85-l: calc(var(--color--green--l) + -30.6078431373%);--color--green-85: hsl(var(--color--green-85-h) var(--color--green-85-s) var(--color--green-85-l));--color--green-90-h: var(--color--green--h);--color--green-90-s: var(--color--green--s);--color--green-90-l: calc(var(--color--green--l) + -34.9803921569%);--color--green-90: hsl(var(--color--green-90-h) var(--color--green-90-s) var(--color--green-90-l));--color--green-95-h: var(--color--green--h);--color--green-95-s: var(--color--green--s);--color--green-95-l: calc(var(--color--green--l) + -39.3529411765%);--color--green-95: hsl(var(--color--green-95-h) var(--color--green-95-s) var(--color--green-95-l));--color--teal-05-h: var(--color--teal--h);--color--teal-05-s: var(--color--teal--s);--color--teal-05-l: calc(var(--color--teal--l) + 45.5294117647%);--color--teal-05: hsl(var(--color--teal-05-h) var(--color--teal-05-s) var(--color--teal-05-l));--color--teal-10-h: var(--color--teal--h);--color--teal-10-s: var(--color--teal--s);--color--teal-10-l: calc(var(--color--teal--l) + 40.4705882353%);--color--teal-10: hsl(var(--color--teal-10-h) var(--color--teal-10-s) var(--color--teal-10-l));--color--teal-15-h: var(--color--teal--h);--color--teal-15-s: var(--color--teal--s);--color--teal-15-l: calc(var(--color--teal--l) + 35.4117647059%);--color--teal-15: hsl(var(--color--teal-15-h) var(--color--teal-15-s) var(--color--teal-15-l));--color--teal-20-h: var(--color--teal--h);--color--teal-20-s: var(--color--teal--s);--color--teal-20-l: calc(var(--color--teal--l) + 30.3529411765%);--color--teal-20: hsl(var(--color--teal-20-h) var(--color--teal-20-s) var(--color--teal-20-l));--color--teal-25-h: var(--color--teal--h);--color--teal-25-s: var(--color--teal--s);--color--teal-25-l: calc(var(--color--teal--l) + 25.2941176471%);--color--teal-25: hsl(var(--color--teal-25-h) var(--color--teal-25-s) var(--color--teal-25-l));--color--teal-30-h: var(--color--teal--h);--color--teal-30-s: var(--color--teal--s);--color--teal-30-l: calc(var(--color--teal--l) + 20.2352941176%);--color--teal-30: hsl(var(--color--teal-30-h) var(--color--teal-30-s) var(--color--teal-30-l));--color--teal-35-h: var(--color--teal--h);--color--teal-35-s: var(--color--teal--s);--color--teal-35-l: calc(var(--color--teal--l) + 15.1764705882%);--color--teal-35: hsl(var(--color--teal-35-h) var(--color--teal-35-s) var(--color--teal-35-l));--color--teal-40-h: var(--color--teal--h);--color--teal-40-s: var(--color--teal--s);--color--teal-40-l: calc(var(--color--teal--l) + 10.1176470588%);--color--teal-40: hsl(var(--color--teal-40-h) var(--color--teal-40-s) var(--color--teal-40-l));--color--teal-45-h: var(--color--teal--h);--color--teal-45-s: var(--color--teal--s);--color--teal-45-l: calc(var(--color--teal--l) + 5.0588235294%);--color--teal-45: hsl(var(--color--teal-45-h) var(--color--teal-45-s) var(--color--teal-45-l));--color--teal-50-h: var(--color--teal--h);--color--teal-50-s: var(--color--teal--s);--color--teal-50-l: calc(var(--color--teal--l) + 0%);--color--teal-50: hsl(var(--color--teal-50-h) var(--color--teal-50-s) var(--color--teal-50-l));--color--teal-55-h: var(--color--teal--h);--color--teal-55-s: var(--color--teal--s);--color--teal-55-l: calc(var(--color--teal--l) + -4.9411764706%);--color--teal-55: hsl(var(--color--teal-55-h) var(--color--teal-55-s) var(--color--teal-55-l));--color--teal-60-h: var(--color--teal--h);--color--teal-60-s: var(--color--teal--s);--color--teal-60-l: calc(var(--color--teal--l) + -9.8823529412%);--color--teal-60: hsl(var(--color--teal-60-h) var(--color--teal-60-s) var(--color--teal-60-l));--color--teal-65-h: var(--color--teal--h);--color--teal-65-s: var(--color--teal--s);--color--teal-65-l: calc(var(--color--teal--l) + -14.8235294118%);--color--teal-65: hsl(var(--color--teal-65-h) var(--color--teal-65-s) var(--color--teal-65-l));--color--teal-70-h: var(--color--teal--h);--color--teal-70-s: var(--color--teal--s);--color--teal-70-l: calc(var(--color--teal--l) + -19.7647058824%);--color--teal-70: hsl(var(--color--teal-70-h) var(--color--teal-70-s) var(--color--teal-70-l));--color--teal-75-h: var(--color--teal--h);--color--teal-75-s: var(--color--teal--s);--color--teal-75-l: calc(var(--color--teal--l) + -24.7058823529%);--color--teal-75: hsl(var(--color--teal-75-h) var(--color--teal-75-s) var(--color--teal-75-l));--color--teal-80-h: var(--color--teal--h);--color--teal-80-s: var(--color--teal--s);--color--teal-80-l: calc(var(--color--teal--l) + -29.6470588235%);--color--teal-80: hsl(var(--color--teal-80-h) var(--color--teal-80-s) var(--color--teal-80-l));--color--teal-85-h: var(--color--teal--h);--color--teal-85-s: var(--color--teal--s);--color--teal-85-l: calc(var(--color--teal--l) + -34.5882352941%);--color--teal-85: hsl(var(--color--teal-85-h) var(--color--teal-85-s) var(--color--teal-85-l));--color--teal-90-h: var(--color--teal--h);--color--teal-90-s: var(--color--teal--s);--color--teal-90-l: calc(var(--color--teal--l) + -39.5294117647%);--color--teal-90: hsl(var(--color--teal-90-h) var(--color--teal-90-s) var(--color--teal-90-l));--color--teal-95-h: var(--color--teal--h);--color--teal-95-s: var(--color--teal--s);--color--teal-95-l: calc(var(--color--teal--l) + -44.4705882353%);--color--teal-95: hsl(var(--color--teal-95-h) var(--color--teal-95-s) var(--color--teal-95-l));--color--blue-05-h: var(--color--blue--h);--color--blue-05-s: var(--color--blue--s);--color--blue-05-l: calc(var(--color--blue--l) + 54.5294117647%);--color--blue-05: hsl(var(--color--blue-05-h) var(--color--blue-05-s) var(--color--blue-05-l));--color--blue-10-h: var(--color--blue--h);--color--blue-10-s: var(--color--blue--s);--color--blue-10-l: calc(var(--color--blue--l) + 48.4705882353%);--color--blue-10: hsl(var(--color--blue-10-h) var(--color--blue-10-s) var(--color--blue-10-l));--color--blue-15-h: var(--color--blue--h);--color--blue-15-s: var(--color--blue--s);--color--blue-15-l: calc(var(--color--blue--l) + 42.4117647059%);--color--blue-15: hsl(var(--color--blue-15-h) var(--color--blue-15-s) var(--color--blue-15-l));--color--blue-20-h: var(--color--blue--h);--color--blue-20-s: var(--color--blue--s);--color--blue-20-l: calc(var(--color--blue--l) + 36.3529411765%);--color--blue-20: hsl(var(--color--blue-20-h) var(--color--blue-20-s) var(--color--blue-20-l));--color--blue-25-h: var(--color--blue--h);--color--blue-25-s: var(--color--blue--s);--color--blue-25-l: calc(var(--color--blue--l) + 30.2941176471%);--color--blue-25: hsl(var(--color--blue-25-h) var(--color--blue-25-s) var(--color--blue-25-l));--color--blue-30-h: var(--color--blue--h);--color--blue-30-s: var(--color--blue--s);--color--blue-30-l: calc(var(--color--blue--l) + 24.2352941176%);--color--blue-30: hsl(var(--color--blue-30-h) var(--color--blue-30-s) var(--color--blue-30-l));--color--blue-35-h: var(--color--blue--h);--color--blue-35-s: var(--color--blue--s);--color--blue-35-l: calc(var(--color--blue--l) + 18.1764705882%);--color--blue-35: hsl(var(--color--blue-35-h) var(--color--blue-35-s) var(--color--blue-35-l));--color--blue-40-h: var(--color--blue--h);--color--blue-40-s: var(--color--blue--s);--color--blue-40-l: calc(var(--color--blue--l) + 12.1176470588%);--color--blue-40: hsl(var(--color--blue-40-h) var(--color--blue-40-s) var(--color--blue-40-l));--color--blue-45-h: var(--color--blue--h);--color--blue-45-s: var(--color--blue--s);--color--blue-45-l: calc(var(--color--blue--l) + 6.0588235294%);--color--blue-45: hsl(var(--color--blue-45-h) var(--color--blue-45-s) var(--color--blue-45-l));--color--blue-50-h: var(--color--blue--h);--color--blue-50-s: var(--color--blue--s);--color--blue-50-l: calc(var(--color--blue--l) + 0%);--color--blue-50: hsl(var(--color--blue-50-h) var(--color--blue-50-s) var(--color--blue-50-l));--color--blue-55-h: var(--color--blue--h);--color--blue-55-s: var(--color--blue--s);--color--blue-55-l: calc(var(--color--blue--l) + -3.9411764706%);--color--blue-55: hsl(var(--color--blue-55-h) var(--color--blue-55-s) var(--color--blue-55-l));--color--blue-60-h: var(--color--blue--h);--color--blue-60-s: var(--color--blue--s);--color--blue-60-l: calc(var(--color--blue--l) + -7.8823529412%);--color--blue-60: hsl(var(--color--blue-60-h) var(--color--blue-60-s) var(--color--blue-60-l));--color--blue-65-h: var(--color--blue--h);--color--blue-65-s: var(--color--blue--s);--color--blue-65-l: calc(var(--color--blue--l) + -11.8235294118%);--color--blue-65: hsl(var(--color--blue-65-h) var(--color--blue-65-s) var(--color--blue-65-l));--color--blue-70-h: var(--color--blue--h);--color--blue-70-s: var(--color--blue--s);--color--blue-70-l: calc(var(--color--blue--l) + -15.7647058824%);--color--blue-70: hsl(var(--color--blue-70-h) var(--color--blue-70-s) var(--color--blue-70-l));--color--blue-75-h: var(--color--blue--h);--color--blue-75-s: var(--color--blue--s);--color--blue-75-l: calc(var(--color--blue--l) + -19.7058823529%);--color--blue-75: hsl(var(--color--blue-75-h) var(--color--blue-75-s) var(--color--blue-75-l));--color--blue-80-h: var(--color--blue--h);--color--blue-80-s: var(--color--blue--s);--color--blue-80-l: calc(var(--color--blue--l) + -23.6470588235%);--color--blue-80: hsl(var(--color--blue-80-h) var(--color--blue-80-s) var(--color--blue-80-l));--color--blue-85-h: var(--color--blue--h);--color--blue-85-s: var(--color--blue--s);--color--blue-85-l: calc(var(--color--blue--l) + -27.5882352941%);--color--blue-85: hsl(var(--color--blue-85-h) var(--color--blue-85-s) var(--color--blue-85-l));--color--blue-90-h: var(--color--blue--h);--color--blue-90-s: var(--color--blue--s);--color--blue-90-l: calc(var(--color--blue--l) + -31.5294117647%);--color--blue-90: hsl(var(--color--blue-90-h) var(--color--blue-90-s) var(--color--blue-90-l));--color--blue-95-h: var(--color--blue--h);--color--blue-95-s: var(--color--blue--s);--color--blue-95-l: calc(var(--color--blue--l) + -35.4705882353%);--color--blue-95: hsl(var(--color--blue-95-h) var(--color--blue-95-s) var(--color--blue-95-l));--color--purple-05-h: var(--color--purple--h);--color--purple-05-s: var(--color--purple--s);--color--purple-05-l: calc(var(--color--purple--l) + 40.9411764706%);--color--purple-05: hsl(var(--color--purple-05-h) var(--color--purple-05-s) var(--color--purple-05-l));--color--purple-10-h: var(--color--purple--h);--color--purple-10-s: var(--color--purple--s);--color--purple-10-l: calc(var(--color--purple--l) + 36.3921568627%);--color--purple-10: hsl(var(--color--purple-10-h) var(--color--purple-10-s) var(--color--purple-10-l));--color--purple-15-h: var(--color--purple--h);--color--purple-15-s: var(--color--purple--s);--color--purple-15-l: calc(var(--color--purple--l) + 31.8431372549%);--color--purple-15: hsl(var(--color--purple-15-h) var(--color--purple-15-s) var(--color--purple-15-l));--color--purple-20-h: var(--color--purple--h);--color--purple-20-s: var(--color--purple--s);--color--purple-20-l: calc(var(--color--purple--l) + 27.2941176471%);--color--purple-20: hsl(var(--color--purple-20-h) var(--color--purple-20-s) var(--color--purple-20-l));--color--purple-25-h: var(--color--purple--h);--color--purple-25-s: var(--color--purple--s);--color--purple-25-l: calc(var(--color--purple--l) + 22.7450980392%);--color--purple-25: hsl(var(--color--purple-25-h) var(--color--purple-25-s) var(--color--purple-25-l));--color--purple-30-h: var(--color--purple--h);--color--purple-30-s: var(--color--purple--s);--color--purple-30-l: calc(var(--color--purple--l) + 18.1960784314%);--color--purple-30: hsl(var(--color--purple-30-h) var(--color--purple-30-s) var(--color--purple-30-l));--color--purple-35-h: var(--color--purple--h);--color--purple-35-s: var(--color--purple--s);--color--purple-35-l: calc(var(--color--purple--l) + 13.6470588235%);--color--purple-35: hsl(var(--color--purple-35-h) var(--color--purple-35-s) var(--color--purple-35-l));--color--purple-40-h: var(--color--purple--h);--color--purple-40-s: var(--color--purple--s);--color--purple-40-l: calc(var(--color--purple--l) + 9.0980392157%);--color--purple-40: hsl(var(--color--purple-40-h) var(--color--purple-40-s) var(--color--purple-40-l));--color--purple-45-h: var(--color--purple--h);--color--purple-45-s: var(--color--purple--s);--color--purple-45-l: calc(var(--color--purple--l) + 4.5490196078%);--color--purple-45: hsl(var(--color--purple-45-h) var(--color--purple-45-s) var(--color--purple-45-l));--color--purple-50-h: var(--color--purple--h);--color--purple-50-s: var(--color--purple--s);--color--purple-50-l: calc(var(--color--purple--l) + 0%);--color--purple-50: hsl(var(--color--purple-50-h) var(--color--purple-50-s) var(--color--purple-50-l));--color--purple-55-h: var(--color--purple--h);--color--purple-55-s: var(--color--purple--s);--color--purple-55-l: calc(var(--color--purple--l) + -5.4509803922%);--color--purple-55: hsl(var(--color--purple-55-h) var(--color--purple-55-s) var(--color--purple-55-l));--color--purple-60-h: var(--color--purple--h);--color--purple-60-s: var(--color--purple--s);--color--purple-60-l: calc(var(--color--purple--l) + -10.9019607843%);--color--purple-60: hsl(var(--color--purple-60-h) var(--color--purple-60-s) var(--color--purple-60-l));--color--purple-65-h: var(--color--purple--h);--color--purple-65-s: var(--color--purple--s);--color--purple-65-l: calc(var(--color--purple--l) + -16.3529411765%);--color--purple-65: hsl(var(--color--purple-65-h) var(--color--purple-65-s) var(--color--purple-65-l));--color--purple-70-h: var(--color--purple--h);--color--purple-70-s: var(--color--purple--s);--color--purple-70-l: calc(var(--color--purple--l) + -21.8039215686%);--color--purple-70: hsl(var(--color--purple-70-h) var(--color--purple-70-s) var(--color--purple-70-l));--color--purple-75-h: var(--color--purple--h);--color--purple-75-s: var(--color--purple--s);--color--purple-75-l: calc(var(--color--purple--l) + -27.2549019608%);--color--purple-75: hsl(var(--color--purple-75-h) var(--color--purple-75-s) var(--color--purple-75-l));--color--purple-80-h: var(--color--purple--h);--color--purple-80-s: var(--color--purple--s);--color--purple-80-l: calc(var(--color--purple--l) + -32.7058823529%);--color--purple-80: hsl(var(--color--purple-80-h) var(--color--purple-80-s) var(--color--purple-80-l));--color--purple-85-h: var(--color--purple--h);--color--purple-85-s: var(--color--purple--s);--color--purple-85-l: calc(var(--color--purple--l) + -38.1568627451%);--color--purple-85: hsl(var(--color--purple-85-h) var(--color--purple-85-s) var(--color--purple-85-l));--color--purple-90-h: var(--color--purple--h);--color--purple-90-s: var(--color--purple--s);--color--purple-90-l: calc(var(--color--purple--l) + -43.6078431373%);--color--purple-90: hsl(var(--color--purple-90-h) var(--color--purple-90-s) var(--color--purple-90-l));--color--purple-95-h: var(--color--purple--h);--color--purple-95-s: var(--color--purple--s);--color--purple-95-l: calc(var(--color--purple--l) + -49.0588235294%);--color--purple-95: hsl(var(--color--purple-95-h) var(--color--purple-95-s) var(--color--purple-95-l));--color--pink-05-h: var(--color--pink--h);--color--pink-05-s: var(--color--pink--s);--color--pink-05-l: calc(var(--color--pink--l) + 24.5294117647%);--color--pink-05: hsl(var(--color--pink-05-h) var(--color--pink-05-s) var(--color--pink-05-l));--color--pink-10-h: var(--color--pink--h);--color--pink-10-s: var(--color--pink--s);--color--pink-10-l: calc(var(--color--pink--l) + 21.8039215686%);--color--pink-10: hsl(var(--color--pink-10-h) var(--color--pink-10-s) var(--color--pink-10-l));--color--pink-15-h: var(--color--pink--h);--color--pink-15-s: var(--color--pink--s);--color--pink-15-l: calc(var(--color--pink--l) + 19.0784313725%);--color--pink-15: hsl(var(--color--pink-15-h) var(--color--pink-15-s) var(--color--pink-15-l));--color--pink-20-h: var(--color--pink--h);--color--pink-20-s: var(--color--pink--s);--color--pink-20-l: calc(var(--color--pink--l) + 16.3529411765%);--color--pink-20: hsl(var(--color--pink-20-h) var(--color--pink-20-s) var(--color--pink-20-l));--color--pink-25-h: var(--color--pink--h);--color--pink-25-s: var(--color--pink--s);--color--pink-25-l: calc(var(--color--pink--l) + 13.6274509804%);--color--pink-25: hsl(var(--color--pink-25-h) var(--color--pink-25-s) var(--color--pink-25-l));--color--pink-30-h: var(--color--pink--h);--color--pink-30-s: var(--color--pink--s);--color--pink-30-l: calc(var(--color--pink--l) + 10.9019607843%);--color--pink-30: hsl(var(--color--pink-30-h) var(--color--pink-30-s) var(--color--pink-30-l));--color--pink-35-h: var(--color--pink--h);--color--pink-35-s: var(--color--pink--s);--color--pink-35-l: calc(var(--color--pink--l) + 8.1764705882%);--color--pink-35: hsl(var(--color--pink-35-h) var(--color--pink-35-s) var(--color--pink-35-l));--color--pink-40-h: var(--color--pink--h);--color--pink-40-s: var(--color--pink--s);--color--pink-40-l: calc(var(--color--pink--l) + 5.4509803922%);--color--pink-40: hsl(var(--color--pink-40-h) var(--color--pink-40-s) var(--color--pink-40-l));--color--pink-45-h: var(--color--pink--h);--color--pink-45-s: var(--color--pink--s);--color--pink-45-l: calc(var(--color--pink--l) + 2.7254901961%);--color--pink-45: hsl(var(--color--pink-45-h) var(--color--pink-45-s) var(--color--pink-45-l));--color--pink-50-h: var(--color--pink--h);--color--pink-50-s: var(--color--pink--s);--color--pink-50-l: calc(var(--color--pink--l) + 0%);--color--pink-50: hsl(var(--color--pink-50-h) var(--color--pink-50-s) var(--color--pink-50-l));--color--pink-55-h: var(--color--pink--h);--color--pink-55-s: var(--color--pink--s);--color--pink-55-l: calc(var(--color--pink--l) + -7.2745098039%);--color--pink-55: hsl(var(--color--pink-55-h) var(--color--pink-55-s) var(--color--pink-55-l));--color--pink-60-h: var(--color--pink--h);--color--pink-60-s: var(--color--pink--s);--color--pink-60-l: calc(var(--color--pink--l) + -14.5490196078%);--color--pink-60: hsl(var(--color--pink-60-h) var(--color--pink-60-s) var(--color--pink-60-l));--color--pink-65-h: var(--color--pink--h);--color--pink-65-s: var(--color--pink--s);--color--pink-65-l: calc(var(--color--pink--l) + -21.8235294118%);--color--pink-65: hsl(var(--color--pink-65-h) var(--color--pink-65-s) var(--color--pink-65-l));--color--pink-70-h: var(--color--pink--h);--color--pink-70-s: var(--color--pink--s);--color--pink-70-l: calc(var(--color--pink--l) + -29.0980392157%);--color--pink-70: hsl(var(--color--pink-70-h) var(--color--pink-70-s) var(--color--pink-70-l));--color--pink-75-h: var(--color--pink--h);--color--pink-75-s: var(--color--pink--s);--color--pink-75-l: calc(var(--color--pink--l) + -36.3725490196%);--color--pink-75: hsl(var(--color--pink-75-h) var(--color--pink-75-s) var(--color--pink-75-l));--color--pink-80-h: var(--color--pink--h);--color--pink-80-s: var(--color--pink--s);--color--pink-80-l: calc(var(--color--pink--l) + -43.6470588235%);--color--pink-80: hsl(var(--color--pink-80-h) var(--color--pink-80-s) var(--color--pink-80-l));--color--pink-85-h: var(--color--pink--h);--color--pink-85-s: var(--color--pink--s);--color--pink-85-l: calc(var(--color--pink--l) + -50.9215686275%);--color--pink-85: hsl(var(--color--pink-85-h) var(--color--pink-85-s) var(--color--pink-85-l));--color--pink-90-h: var(--color--pink--h);--color--pink-90-s: var(--color--pink--s);--color--pink-90-l: calc(var(--color--pink--l) + -58.1960784314%);--color--pink-90: hsl(var(--color--pink-90-h) var(--color--pink-90-s) var(--color--pink-90-l));--color--pink-95-h: var(--color--pink--h);--color--pink-95-s: var(--color--pink--s);--color--pink-95-l: calc(var(--color--pink--l) + -65.4705882353%);--color--pink-95: hsl(var(--color--pink-95-h) var(--color--pink-95-s) var(--color--pink-95-l));--color--gray-05-h: var(--color--gray--h);--color--gray-05-s: var(--color--gray--s);--color--gray-05-l: calc(var(--color--gray--l) + 36%);--color--gray-05: hsl(var(--color--gray-05-h) var(--color--gray-05-s) var(--color--gray-05-l));--color--gray-10-h: var(--color--gray--h);--color--gray-10-s: var(--color--gray--s);--color--gray-10-l: calc(var(--color--gray--l) + 32%);--color--gray-10: hsl(var(--color--gray-10-h) var(--color--gray-10-s) var(--color--gray-10-l));--color--gray-15-h: var(--color--gray--h);--color--gray-15-s: var(--color--gray--s);--color--gray-15-l: calc(var(--color--gray--l) + 28%);--color--gray-15: hsl(var(--color--gray-15-h) var(--color--gray-15-s) var(--color--gray-15-l));--color--gray-20-h: var(--color--gray--h);--color--gray-20-s: var(--color--gray--s);--color--gray-20-l: calc(var(--color--gray--l) + 24%);--color--gray-20: hsl(var(--color--gray-20-h) var(--color--gray-20-s) var(--color--gray-20-l));--color--gray-25-h: var(--color--gray--h);--color--gray-25-s: var(--color--gray--s);--color--gray-25-l: calc(var(--color--gray--l) + 20%);--color--gray-25: hsl(var(--color--gray-25-h) var(--color--gray-25-s) var(--color--gray-25-l));--color--gray-30-h: var(--color--gray--h);--color--gray-30-s: var(--color--gray--s);--color--gray-30-l: calc(var(--color--gray--l) + 16%);--color--gray-30: hsl(var(--color--gray-30-h) var(--color--gray-30-s) var(--color--gray-30-l));--color--gray-35-h: var(--color--gray--h);--color--gray-35-s: var(--color--gray--s);--color--gray-35-l: calc(var(--color--gray--l) + 12%);--color--gray-35: hsl(var(--color--gray-35-h) var(--color--gray-35-s) var(--color--gray-35-l));--color--gray-40-h: var(--color--gray--h);--color--gray-40-s: var(--color--gray--s);--color--gray-40-l: calc(var(--color--gray--l) + 8%);--color--gray-40: hsl(var(--color--gray-40-h) var(--color--gray-40-s) var(--color--gray-40-l));--color--gray-45-h: var(--color--gray--h);--color--gray-45-s: var(--color--gray--s);--color--gray-45-l: calc(var(--color--gray--l) + 4%);--color--gray-45: hsl(var(--color--gray-45-h) var(--color--gray-45-s) var(--color--gray-45-l));--color--gray-50-h: var(--color--gray--h);--color--gray-50-s: var(--color--gray--s);--color--gray-50-l: calc(var(--color--gray--l) + 0%);--color--gray-50: hsl(var(--color--gray-50-h) var(--color--gray-50-s) var(--color--gray-50-l));--color--gray-55-h: var(--color--gray--h);--color--gray-55-s: var(--color--gray--s);--color--gray-55-l: calc(var(--color--gray--l) + -6%);--color--gray-55: hsl(var(--color--gray-55-h) var(--color--gray-55-s) var(--color--gray-55-l));--color--gray-60-h: var(--color--gray--h);--color--gray-60-s: var(--color--gray--s);--color--gray-60-l: calc(var(--color--gray--l) + -12%);--color--gray-60: hsl(var(--color--gray-60-h) var(--color--gray-60-s) var(--color--gray-60-l));--color--gray-65-h: var(--color--gray--h);--color--gray-65-s: var(--color--gray--s);--color--gray-65-l: calc(var(--color--gray--l) + -18%);--color--gray-65: hsl(var(--color--gray-65-h) var(--color--gray-65-s) var(--color--gray-65-l));--color--gray-70-h: var(--color--gray--h);--color--gray-70-s: var(--color--gray--s);--color--gray-70-l: calc(var(--color--gray--l) + -24%);--color--gray-70: hsl(var(--color--gray-70-h) var(--color--gray-70-s) var(--color--gray-70-l));--color--gray-75-h: var(--color--gray--h);--color--gray-75-s: var(--color--gray--s);--color--gray-75-l: calc(var(--color--gray--l) + -30%);--color--gray-75: hsl(var(--color--gray-75-h) var(--color--gray-75-s) var(--color--gray-75-l));--color--gray-80-h: var(--color--gray--h);--color--gray-80-s: var(--color--gray--s);--color--gray-80-l: calc(var(--color--gray--l) + -36%);--color--gray-80: hsl(var(--color--gray-80-h) var(--color--gray-80-s) var(--color--gray-80-l));--color--gray-85-h: var(--color--gray--h);--color--gray-85-s: var(--color--gray--s);--color--gray-85-l: calc(var(--color--gray--l) + -42%);--color--gray-85: hsl(var(--color--gray-85-h) var(--color--gray-85-s) var(--color--gray-85-l));--color--gray-90-h: var(--color--gray--h);--color--gray-90-s: var(--color--gray--s);--color--gray-90-l: calc(var(--color--gray--l) + -48%);--color--gray-90: hsl(var(--color--gray-90-h) var(--color--gray-90-s) var(--color--gray-90-l));--color--gray-95-h: var(--color--gray--h);--color--gray-95-s: var(--color--gray--s);--color--gray-95-l: calc(var(--color--gray--l) + -54%);--color--gray-95: hsl(var(--color--gray-95-h) var(--color--gray-95-s) var(--color--gray-95-l));--color--light-25-h: var(--color--light--h);--color--light-25-s: var(--color--light--s);--color--light-25-l: calc(var(--color--light--l) + 6%);--color--light-25: hsl(var(--color--light-25-h) var(--color--light-25-s) var(--color--light-25-l));--color--light-30-h: var(--color--light--h);--color--light-30-s: var(--color--light--s);--color--light-30-l: calc(var(--color--light--l) + 4.8%);--color--light-30: hsl(var(--color--light-30-h) var(--color--light-30-s) var(--color--light-30-l));--color--light-35-h: var(--color--light--h);--color--light-35-s: var(--color--light--s);--color--light-35-l: calc(var(--color--light--l) + 3.6%);--color--light-35: hsl(var(--color--light-35-h) var(--color--light-35-s) var(--color--light-35-l));--color--light-40-h: var(--color--light--h);--color--light-40-s: var(--color--light--s);--color--light-40-l: calc(var(--color--light--l) + 2.4%);--color--light-40: hsl(var(--color--light-40-h) var(--color--light-40-s) var(--color--light-40-l));--color--light-45-h: var(--color--light--h);--color--light-45-s: var(--color--light--s);--color--light-45-l: calc(var(--color--light--l) + 1.2%);--color--light-45: hsl(var(--color--light-45-h) var(--color--light-45-s) var(--color--light-45-l));--color--light-50-h: var(--color--light--h);--color--light-50-s: var(--color--light--s);--color--light-50-l: calc(var(--color--light--l) + 0%);--color--light-50: hsl(var(--color--light-50-h) var(--color--light-50-s) var(--color--light-50-l));--color--light-55-h: var(--color--light--h);--color--light-55-s: var(--color--light--s);--color--light-55-l: calc(var(--color--light--l) + -8.8%);--color--light-55: hsl(var(--color--light-55-h) var(--color--light-55-s) var(--color--light-55-l));--color--light-60-h: var(--color--light--h);--color--light-60-s: var(--color--light--s);--color--light-60-l: calc(var(--color--light--l) + -17.6%);--color--light-60: hsl(var(--color--light-60-h) var(--color--light-60-s) var(--color--light-60-l));--color--light-65-h: var(--color--light--h);--color--light-65-s: var(--color--light--s);--color--light-65-l: calc(var(--color--light--l) + -26.4%);--color--light-65: hsl(var(--color--light-65-h) var(--color--light-65-s) var(--color--light-65-l));--color--light-70-h: var(--color--light--h);--color--light-70-s: var(--color--light--s);--color--light-70-l: calc(var(--color--light--l) + -35.2%);--color--light-70: hsl(var(--color--light-70-h) var(--color--light-70-s) var(--color--light-70-l));--color--light-75-h: var(--color--light--h);--color--light-75-s: var(--color--light--s);--color--light-75-l: calc(var(--color--light--l) + -44%);--color--light-75: hsl(var(--color--light-75-h) var(--color--light-75-s) var(--color--light-75-l));--color--dark-25-h: var(--color--dark--h);--color--dark-25-s: var(--color--dark--s);--color--dark-25-l: calc(var(--color--dark--l) + 38%);--color--dark-25: hsl(var(--color--dark-25-h) var(--color--dark-25-s) var(--color--dark-25-l));--color--dark-30-h: var(--color--dark--h);--color--dark-30-s: var(--color--dark--s);--color--dark-30-l: calc(var(--color--dark--l) + 30.4%);--color--dark-30: hsl(var(--color--dark-30-h) var(--color--dark-30-s) var(--color--dark-30-l));--color--dark-35-h: var(--color--dark--h);--color--dark-35-s: var(--color--dark--s);--color--dark-35-l: calc(var(--color--dark--l) + 22.8%);--color--dark-35: hsl(var(--color--dark-35-h) var(--color--dark-35-s) var(--color--dark-35-l));--color--dark-40-h: var(--color--dark--h);--color--dark-40-s: var(--color--dark--s);--color--dark-40-l: calc(var(--color--dark--l) + 15.2%);--color--dark-40: hsl(var(--color--dark-40-h) var(--color--dark-40-s) var(--color--dark-40-l));--color--dark-45-h: var(--color--dark--h);--color--dark-45-s: var(--color--dark--s);--color--dark-45-l: calc(var(--color--dark--l) + 7.6%);--color--dark-45: hsl(var(--color--dark-45-h) var(--color--dark-45-s) var(--color--dark-45-l));--color--dark-50-h: var(--color--dark--h);--color--dark-50-s: var(--color--dark--s);--color--dark-50-l: calc(var(--color--dark--l) + 0%);--color--dark-50: hsl(var(--color--dark-50-h) var(--color--dark-50-s) var(--color--dark-50-l));--color--dark-55-h: var(--color--dark--h);--color--dark-55-s: var(--color--dark--s);--color--dark-55-l: calc(var(--color--dark--l) + -2.4%);--color--dark-55: hsl(var(--color--dark-55-h) var(--color--dark-55-s) var(--color--dark-55-l));--color--dark-60-h: var(--color--dark--h);--color--dark-60-s: var(--color--dark--s);--color--dark-60-l: calc(var(--color--dark--l) + -4.8%);--color--dark-60: hsl(var(--color--dark-60-h) var(--color--dark-60-s) var(--color--dark-60-l));--color--dark-65-h: var(--color--dark--h);--color--dark-65-s: var(--color--dark--s);--color--dark-65-l: calc(var(--color--dark--l) + -7.2%);--color--dark-65: hsl(var(--color--dark-65-h) var(--color--dark-65-s) var(--color--dark-65-l));--color--dark-70-h: var(--color--dark--h);--color--dark-70-s: var(--color--dark--s);--color--dark-70-l: calc(var(--color--dark--l) + -9.6%);--color--dark-70: hsl(var(--color--dark-70-h) var(--color--dark-70-s) var(--color--dark-70-l));--color--dark-75-h: var(--color--dark--h);--color--dark-75-s: var(--color--dark--s);--color--dark-75-l: calc(var(--color--dark--l) + -12%);--color--dark-75: hsl(var(--color--dark-75-h) var(--color--dark-75-s) var(--color--dark-75-l));--color--facebook-55-h: var(--color--facebook--h);--color--facebook-55-s: var(--color--facebook--s);--color--facebook-55-l: calc(var(--color--facebook--l) + -4.137254902%);--color--facebook-55: hsl(var(--color--facebook-55-h) var(--color--facebook-55-s) var(--color--facebook-55-l));--color--facebook-60-h: var(--color--facebook--h);--color--facebook-60-s: var(--color--facebook--s);--color--facebook-60-l: calc(var(--color--facebook--l) + -8.2745098039%);--color--facebook-60: hsl(var(--color--facebook-60-h) var(--color--facebook-60-s) var(--color--facebook-60-l));--color--twitter-55-h: var(--color--twitter--h);--color--twitter-55-s: var(--color--twitter--s);--color--twitter-55-l: calc(var(--color--twitter--l) + -5.3137254902%);--color--twitter-55: hsl(var(--color--twitter-55-h) var(--color--twitter-55-s) var(--color--twitter-55-l));--color--twitter-60-h: var(--color--twitter--h);--color--twitter-60-s: var(--color--twitter--s);--color--twitter-60-l: calc(var(--color--twitter--l) + -10.6274509804%);--color--twitter-60: hsl(var(--color--twitter-60-h) var(--color--twitter-60-s) var(--color--twitter-60-l));--color--google-55-h: var(--color--google--h);--color--google-55-s: var(--color--google--s);--color--google-55-l: calc(var(--color--google--l) + -5.4509803922%);--color--google-55: hsl(var(--color--google-55-h) var(--color--google-55-s) var(--color--google-55-l));--color--google-60-h: var(--color--google--h);--color--google-60-s: var(--color--google--s);--color--google-60-l: calc(var(--color--google--l) + -10.9019607843%);--color--google-60: hsl(var(--color--google-60-h) var(--color--google-60-s) var(--color--google-60-l));--color--github-55-h: var(--color--github--h);--color--github-55-s: var(--color--github--s);--color--github-55-l: calc(var(--color--github--l) + -2%);--color--github-55: hsl(var(--color--github-55-h) var(--color--github-55-s) var(--color--github-55-l));--color--github-60-h: var(--color--github--h);--color--github-60-s: var(--color--github--s);--color--github-60-l: calc(var(--color--github--l) + -4%);--color--github-60: hsl(var(--color--github-60-h) var(--color--github-60-s) var(--color--github-60-l));--contrast-color-for-light-background: #1e1f1f;--contrast-color-for-dark-background: #ffffff}:root{--border-style: solid;--border-top-width: 1px;--border-right-width: 1px;--border-bottom-width: 1px;--border-left-width: 1px;--border-width: var(--border-top-width) var(--border-right-width) var(--border-bottom-width) var(--border-left-width);--border-color--light: var(--color--gray-30);--border-color--dark: var(--color--gray-70);--border-color: var(--border-color--light);--border-top-left-radius: .25rem;--border-top-right-radius: .25rem;--border-bottom-right-radius: .25rem;--border-bottom-left-radius: .25rem;--border-radius: var(--border-top-left-radius) var(--border-top-right-radius) var(--border-bottom-right-radius) var(--border-bottom-left-radius);--border-top-left-radius-xs: calc(var(--border-top-left-radius) * var(--size-multiplier--xs));--border-top-left-radius-sm: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));--border-top-left-radius-md: calc(var(--border-top-left-radius) * var(--size-multiplier--md));--border-top-left-radius-lg: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));--border-top-left-radius-xl: calc(var(--border-top-left-radius) * var(--size-multiplier--xl));--border-top-right-radius-xs: calc(var(--border-top-right-radius) * var(--size-multiplier--xs));--border-top-right-radius-sm: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));--border-top-right-radius-md: calc(var(--border-top-right-radius) * var(--size-multiplier--md));--border-top-right-radius-lg: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));--border-top-right-radius-xl: calc(var(--border-top-right-radius) * var(--size-multiplier--xl));--border-bottom-right-radius-xs: calc(var(--border-bottom-right-radius) * var(--size-multiplier--xs));--border-bottom-right-radius-sm: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));--border-bottom-right-radius-md: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));--border-bottom-right-radius-lg: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));--border-bottom-right-radius-xl: calc(var(--border-bottom-right-radius) * var(--size-multiplier--xl));--border-bottom-left-radius-xs: calc(var(--border-bottom-left-radius) * var(--size-multiplier--xs));--border-bottom-left-radius-sm: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));--border-bottom-left-radius-md: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));--border-bottom-left-radius-lg: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));--border-bottom-left-radius-xl: calc(var(--border-bottom-left-radius) * var(--size-multiplier--xl));--border-radius-xs: calc(var(--border-top-left-radius) * var(--size-multiplier--xs)) calc(var(--border-top-right-radius) * var(--size-multiplier--xs)) calc(var(--border-bottom-right-radius) * var(--size-multiplier--xs)) calc(var(--border-bottom-left-radius) * var(--size-multiplier--xs));--border-radius-sm: calc(var(--border-top-left-radius) * var(--size-multiplier--sm)) calc(var(--border-top-right-radius) * var(--size-multiplier--sm)) calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm)) calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));--border-radius-md: calc(var(--border-top-left-radius) * var(--size-multiplier--md)) calc(var(--border-top-right-radius) * var(--size-multiplier--md)) calc(var(--border-bottom-right-radius) * var(--size-multiplier--md)) calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));--border-radius-lg: calc(var(--border-top-left-radius) * var(--size-multiplier--lg)) calc(var(--border-top-right-radius) * var(--size-multiplier--lg)) calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg)) calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));--border-radius-xl: calc(var(--border-top-left-radius) * var(--size-multiplier--xl)) calc(var(--border-top-right-radius) * var(--size-multiplier--xl)) calc(var(--border-bottom-right-radius) * var(--size-multiplier--xl)) calc(var(--border-bottom-left-radius) * var(--size-multiplier--xl))}:root{--box-shadow-offset-x: 0;--box-shadow-offset-y: .5rem;--box-shadow-blur-radius: 1rem;--box-shadow-spread-radius: -.75rem;--box-shadow-color: rgba(0, 0, 0, .15);--box-shadow: var(--box-shadow-offset-x) var(--box-shadow-offset-y) var(--box-shadow-blur-radius) var(--box-shadow-spread-radius) var(--box-shadow-color)}:root{--body--background--light: var(--color--white);--body--color--light: var(--color--gray-80);--body--background--dark: var(--color--gray-90);--body--color--dark: var(--color--gray-10);--body--background: var(--body--background--light);--body--color: var(--body--color--light)}:root{--gutter: 28px;--gutter--xs: calc(var(--gutter) * .85);--gutter--sm: calc(var(--gutter) * .925);--gutter--md: var(--gutter);--gutter--lg: calc(var(--gutter) * 1.075);--gutter--xl: calc(var(--gutter) * 1.15);--gutter--xxl: calc(var(--gutter) * 1.25)}:root{--thumbnail--padding: calc(var(--spacing) / 2);--thumbnail--background: var(--color--white);--thumbnail--border-width: var(--border-width);--thumbnail--border-color: var(--color--gray-40);--thumbnail--border-radius: var(--border-radius);--thumbnail--box-shadow: 0 1px 2px rgba(var(--color--black), .075);--thumbnail--transition: all .2s ease-in-out;--polaroid--padding: calc(var(--spacing) * 3);--figure--caption--font-size: 90%;--figure--caption--color: var(--color--gray-60);--figure--image--margin-bottom: calc(var(--spacing) / 2)}:root{--scale-ratio--minor-second: 1.067;--scale-ratio--major-second: 1.125;--scale-ratio--minor-third: 1.2;--scale-ratio--major-third: 1.25;--scale-ratio--perfect-fourth: 1.333;--scale-ratio--augmented-fourth: 1.414;--scale-ratio--perfect-fifth: 1.5;--scale-ratio--golden: 1.618;--scale-ratio: var(--scale-ratio--minor-third);--scale-ratio-secondary: var(--scale-ratio--perfect-fourth);--scale-ratio--pow-1: var(--scale-ratio);--scale-ratio--pow-2: calc(var(--scale-ratio--pow-1) * var(--scale-ratio));--scale-ratio--pow-3: calc(var(--scale-ratio--pow-2) * var(--scale-ratio));--scale-ratio--pow-4: calc(var(--scale-ratio--pow-3) * var(--scale-ratio));--scale-ratio--pow-5: calc(var(--scale-ratio--pow-4) * var(--scale-ratio));--scale-ratio--pow-6: calc(var(--scale-ratio--pow-5) * var(--scale-ratio))}:root{--font-family-primary--base: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif;--font-family-primary--monospace: SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;--font-family-primary--print: Georgia, Times New Roman, Times, serif;--font-family-secondary--base: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif;--font-family-secondary--monospace: SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;--font-family-secondary--print: Georgia, Times New Roman, Times, serif;--letter-spacing: 0;--font-size: 1rem;--line-height: 1.5;--text-muted: var(--color--gray-60);--font-size--xs: calc(var(--font-size) * var(--size-multiplier--xs));--font-size--sm: calc(var(--font-size) * var(--size-multiplier--sm));--font-size--md: calc(var(--font-size) * var(--size-multiplier--md));--font-size--lg: calc(var(--font-size) * var(--size-multiplier--lg));--font-size--xl: calc(var(--font-size) * var(--size-multiplier--xl));--font-weight--extralight: 200;--font-weight--light: 300;--font-weight--lighter: lighter;--font-weight--normal: normal;--font-weight--semibold: 600;--font-weight--bold: bold;--font-weight--bolder: bolder;--font-weight--black: 900;--h1--font-size: calc(var(--font-size) * var(--scale-ratio--pow-5));--h2--font-size: calc(var(--font-size) * var(--scale-ratio--pow-4));--h3--font-size: calc(var(--font-size) * var(--scale-ratio--pow-3));--h4--font-size: calc(var(--font-size) * var(--scale-ratio--pow-2));--h5--font-size: calc(var(--font-size) * var(--scale-ratio--pow-1));--h6--font-size: calc(var(--font-size));--heading--margin-top: calc(var(--spacing) * 2.5);--heading--margin-bottom: var(--spacing);--heading--font-family: var(--font-family-secondary--base);--heading--font-weight: var(--font-weight--semibold);--heading--line-height: 1.1;--heading--color: inherit;--d1--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-6));--d2--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-5));--d3--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-4));--d4--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-3));--d5--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-2));--d6--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-1));--display--font-weight: var(--font-weight--semibold);--display--line-height: 1.1;--link--color: var(--color--primary);--link--color--hover: var(--color--primary-40);--link--decoration: none;--link--decoration--hover: underline;--lead--font-size: var(--font-size--lg);--lead--font-weight: var(--font-weight--light);--list--item--padding--inline: var(--spacing);--list--item--margin-bottom: calc(var(--spacing) * 1 / 2);--dt--font-weight: var(--font-weight--bold);--small--font-size: var(--font-size--sm);--small--font-weight: var(--font-weight--normal);--blockquote--footer--color: var(--color--gray-60);--blockquote--font-size: var(--font-size--lg);--blockquote--border: 3px solid var(--color--gray-30);--blockquote--margin: var(--spacing);--blockquote--padding--bordered: var(--spacing);--hr--border-color: hsla(var(--color--black--h), var(--color--black--s), var(--color--black--l), .1);--hr--border-width: var(--border-top-width);--hr--border-style: var(--border-style);--hr--margin: var(--spacing);--mark--padding: .2rem .4rem;--mark--color: var(--color--gray-80);--mark--background-color: var(--color--yellow-10);--code--font-size: 90%;--code--padding: .15rem .4rem;--code--color: #bd4147;--code--background: var(--color--gray-10);--code--color--dark: #ff6d6b;--code--background--dark: var(--color--gray-80);--kbd--font-size: var(--code--font-size);--kbd--box-shadow: inset 0 -.1rem 0 rgba(0, 0, 0, .25);--kbd--nested-font-weight: var(--font-weight--bold);--kbd--color: var(--color--white);--kbd--background: var(--color--gray-90);--kbd--padding: var(--code--padding);--pre--font-size: var(--code--font-size);--pre--color: var(--color--gray-90);--pre--color--dark: var(--color--white);--pre--scrollable-max-height: 340px}:root{--z-index--dropdown: 1000;--z-index--sticky: 1020;--z-index--fixed: 1030;--z-index--modal-backdrop: 1040;--z-index--modal: 1050;--z-index--popover: 1060;--z-index--tooltip: 1070}._vertical-align\:baseline{vertical-align:baseline!important}._vertical-align\:top{vertical-align:top!important}._vertical-align\:middle{vertical-align:middle!important}._vertical-align\:bottom{vertical-align:bottom!important}._vertical-align\:text-bottom{vertical-align:text-bottom!important}._vertical-align\:text-top{vertical-align:text-top!important}._border{border-width:1px 1px 1px 1px!important;border-width:var(--border-width)!important;border-style:solid!important;border-color:#bbc5c9;border-color:var(--border-color)}._border-0{border:none!important}._border-top{border-top-width:1px!important;border-top-width:var(--border-top-width)!important;border-top-style:solid!important;border-top-color:#bbc5c9;border-top-color:var(--border-color)}._border-top\:0{border-top:none!important}._border-right{border-right-width:1px!important;border-right-width:var(--border-right-width)!important;border-right-style:solid!important;border-right-color:#bbc5c9;border-right-color:var(--border-color)}._border-right\:0{border-right:none!important}._border-bottom{border-bottom-width:1px!important;border-bottom-width:var(--border-bottom-width)!important;border-bottom-style:solid!important;border-bottom-color:#bbc5c9;border-bottom-color:var(--border-color)}._border-bottom\:0{border-bottom:none!important}._border-left{border-left-width:1px!important;border-left-width:var(--border-left-width)!important;border-left-style:solid!important;border-left-color:#bbc5c9;border-left-color:var(--border-color)}._border-left\:0{border-left:none!important}._border-color\:primary{border-color:#178bb2!important;border-color:var(--color--primary)!important}._border-top-color\:primary{border-top-color:#178bb2!important;border-top-color:var(--color--primary)!important}._border-right-color\:primary{border-right-color:#178bb2!important;border-right-color:var(--color--primary)!important}._border-bottom-color\:primary{border-bottom-color:#178bb2!important;border-bottom-color:var(--color--primary)!important}._border-left-color\:primary{border-left-color:#178bb2!important;border-left-color:var(--color--primary)!important}._border-color\:secondary{border-color:#8268ae!important;border-color:var(--color--secondary)!important}._border-top-color\:secondary{border-top-color:#8268ae!important;border-top-color:var(--color--secondary)!important}._border-right-color\:secondary{border-right-color:#8268ae!important;border-right-color:var(--color--secondary)!important}._border-bottom-color\:secondary{border-bottom-color:#8268ae!important;border-bottom-color:var(--color--secondary)!important}._border-left-color\:secondary{border-left-color:#8268ae!important;border-left-color:var(--color--secondary)!important}._border-color\:light{border-color:#dde2e4!important;border-color:var(--color--light)!important}._border-top-color\:light{border-top-color:#dde2e4!important;border-top-color:var(--color--light)!important}._border-right-color\:light{border-right-color:#dde2e4!important;border-right-color:var(--color--light)!important}._border-bottom-color\:light{border-bottom-color:#dde2e4!important;border-bottom-color:var(--color--light)!important}._border-left-color\:light{border-left-color:#dde2e4!important;border-left-color:var(--color--light)!important}._border-color\:dark{border-color:#3b3f40!important;border-color:var(--color--dark)!important}._border-top-color\:dark{border-top-color:#3b3f40!important;border-top-color:var(--color--dark)!important}._border-right-color\:dark{border-right-color:#3b3f40!important;border-right-color:var(--color--dark)!important}._border-bottom-color\:dark{border-bottom-color:#3b3f40!important;border-bottom-color:var(--color--dark)!important}._border-left-color\:dark{border-left-color:#3b3f40!important;border-left-color:var(--color--dark)!important}._border-color\:white{border-color:#fff!important;border-color:var(--color--white)!important}._border-top-color\:white{border-top-color:#fff!important;border-top-color:var(--color--white)!important}._border-right-color\:white{border-right-color:#fff!important;border-right-color:var(--color--white)!important}._border-bottom-color\:white{border-bottom-color:#fff!important;border-bottom-color:var(--color--white)!important}._border-left-color\:white{border-left-color:#fff!important;border-left-color:var(--color--white)!important}._border-color\:gray-10{border-color:#e8eced!important;border-color:var(--color--gray-10)!important}._border-top-color\:gray-10{border-top-color:#e8eced!important;border-top-color:var(--color--gray-10)!important}._border-right-color\:gray-10{border-right-color:#e8eced!important;border-right-color:var(--color--gray-10)!important}._border-bottom-color\:gray-10{border-bottom-color:#e8eced!important;border-bottom-color:var(--color--gray-10)!important}._border-left-color\:gray-10{border-left-color:#e8eced!important;border-left-color:var(--color--gray-10)!important}._border-color\:gray-20{border-color:#d2d9db!important;border-color:var(--color--gray-20)!important}._border-top-color\:gray-20{border-top-color:#d2d9db!important;border-top-color:var(--color--gray-20)!important}._border-right-color\:gray-20{border-right-color:#d2d9db!important;border-right-color:var(--color--gray-20)!important}._border-bottom-color\:gray-20{border-bottom-color:#d2d9db!important;border-bottom-color:var(--color--gray-20)!important}._border-left-color\:gray-20{border-left-color:#d2d9db!important;border-left-color:var(--color--gray-20)!important}._border-color\:gray-30{border-color:#bbc5c9!important;border-color:var(--color--gray-30)!important}._border-top-color\:gray-30{border-top-color:#bbc5c9!important;border-top-color:var(--color--gray-30)!important}._border-right-color\:gray-30{border-right-color:#bbc5c9!important;border-right-color:var(--color--gray-30)!important}._border-bottom-color\:gray-30{border-bottom-color:#bbc5c9!important;border-bottom-color:var(--color--gray-30)!important}._border-left-color\:gray-30{border-left-color:#bbc5c9!important;border-left-color:var(--color--gray-30)!important}._border-color\:gray-40{border-color:#a4b2b6!important;border-color:var(--color--gray-40)!important}._border-top-color\:gray-40{border-top-color:#a4b2b6!important;border-top-color:var(--color--gray-40)!important}._border-right-color\:gray-40{border-right-color:#a4b2b6!important;border-right-color:var(--color--gray-40)!important}._border-bottom-color\:gray-40{border-bottom-color:#a4b2b6!important;border-bottom-color:var(--color--gray-40)!important}._border-left-color\:gray-40{border-left-color:#a4b2b6!important;border-left-color:var(--color--gray-40)!important}._border-color\:gray-50{border-color:#8e9fa4!important;border-color:var(--color--gray-50)!important}._border-top-color\:gray-50{border-top-color:#8e9fa4!important;border-top-color:var(--color--gray-50)!important}._border-right-color\:gray-50{border-right-color:#8e9fa4!important;border-right-color:var(--color--gray-50)!important}._border-bottom-color\:gray-50{border-bottom-color:#8e9fa4!important;border-bottom-color:var(--color--gray-50)!important}._border-left-color\:gray-50{border-left-color:#8e9fa4!important;border-left-color:var(--color--gray-50)!important}._border-color\:gray-60{border-color:#6d8288!important;border-color:var(--color--gray-60)!important}._border-top-color\:gray-60{border-top-color:#6d8288!important;border-top-color:var(--color--gray-60)!important}._border-right-color\:gray-60{border-right-color:#6d8288!important;border-right-color:var(--color--gray-60)!important}._border-bottom-color\:gray-60{border-bottom-color:#6d8288!important;border-bottom-color:var(--color--gray-60)!important}._border-left-color\:gray-60{border-left-color:#6d8288!important;border-left-color:var(--color--gray-60)!important}._border-color\:gray-70{border-color:#526166!important;border-color:var(--color--gray-70)!important}._border-top-color\:gray-70{border-top-color:#526166!important;border-top-color:var(--color--gray-70)!important}._border-right-color\:gray-70{border-right-color:#526166!important;border-right-color:var(--color--gray-70)!important}._border-bottom-color\:gray-70{border-bottom-color:#526166!important;border-bottom-color:var(--color--gray-70)!important}._border-left-color\:gray-70{border-left-color:#526166!important;border-left-color:var(--color--gray-70)!important}._border-color\:gray-80{border-color:#364144!important;border-color:var(--color--gray-80)!important}._border-top-color\:gray-80{border-top-color:#364144!important;border-top-color:var(--color--gray-80)!important}._border-right-color\:gray-80{border-right-color:#364144!important;border-right-color:var(--color--gray-80)!important}._border-bottom-color\:gray-80{border-bottom-color:#364144!important;border-bottom-color:var(--color--gray-80)!important}._border-left-color\:gray-80{border-left-color:#364144!important;border-left-color:var(--color--gray-80)!important}._border-color\:gray-90{border-color:#1b2022!important;border-color:var(--color--gray-90)!important}._border-top-color\:gray-90{border-top-color:#1b2022!important;border-top-color:var(--color--gray-90)!important}._border-right-color\:gray-90{border-right-color:#1b2022!important;border-right-color:var(--color--gray-90)!important}._border-bottom-color\:gray-90{border-bottom-color:#1b2022!important;border-bottom-color:var(--color--gray-90)!important}._border-left-color\:gray-90{border-left-color:#1b2022!important;border-left-color:var(--color--gray-90)!important}._border-color\:black{border-color:#000!important;border-color:var(--color--black)!important}._border-top-color\:black{border-top-color:#000!important;border-top-color:var(--color--black)!important}._border-right-color\:black{border-right-color:#000!important;border-right-color:var(--color--black)!important}._border-bottom-color\:black{border-bottom-color:#000!important;border-bottom-color:var(--color--black)!important}._border-left-color\:black{border-left-color:#000!important;border-left-color:var(--color--black)!important}._border-color\:info{border-color:#48b4a9!important;border-color:var(--color--info)!important}._border-top-color\:info{border-top-color:#48b4a9!important;border-top-color:var(--color--info)!important}._border-right-color\:info{border-right-color:#48b4a9!important;border-right-color:var(--color--info)!important}._border-bottom-color\:info{border-bottom-color:#48b4a9!important;border-bottom-color:var(--color--info)!important}._border-left-color\:info{border-left-color:#48b4a9!important;border-left-color:var(--color--info)!important}._border-color\:success{border-color:#2fb079!important;border-color:var(--color--success)!important}._border-top-color\:success{border-top-color:#2fb079!important;border-top-color:var(--color--success)!important}._border-right-color\:success{border-right-color:#2fb079!important;border-right-color:var(--color--success)!important}._border-bottom-color\:success{border-bottom-color:#2fb079!important;border-bottom-color:var(--color--success)!important}._border-left-color\:success{border-left-color:#2fb079!important;border-left-color:var(--color--success)!important}._border-color\:warning{border-color:#ffda77!important;border-color:var(--color--warning)!important}._border-top-color\:warning{border-top-color:#ffda77!important;border-top-color:var(--color--warning)!important}._border-right-color\:warning{border-right-color:#ffda77!important;border-right-color:var(--color--warning)!important}._border-bottom-color\:warning{border-bottom-color:#ffda77!important;border-bottom-color:var(--color--warning)!important}._border-left-color\:warning{border-left-color:#ffda77!important;border-left-color:var(--color--warning)!important}._border-color\:danger{border-color:#f2413d!important;border-color:var(--color--danger)!important}._border-top-color\:danger{border-top-color:#f2413d!important;border-top-color:var(--color--danger)!important}._border-right-color\:danger{border-right-color:#f2413d!important;border-right-color:var(--color--danger)!important}._border-bottom-color\:danger{border-bottom-color:#f2413d!important;border-bottom-color:var(--color--danger)!important}._border-left-color\:danger{border-left-color:#f2413d!important;border-left-color:var(--color--danger)!important}._border-radius{border-radius:.25rem!important;border-radius:var(--border-radius)!important}._border-top-radius{border-top-left-radius:.25rem!important;border-top-left-radius:var(--border-top-left-radius)!important;border-top-right-radius:.25rem!important;border-top-right-radius:var(--border-top-right-radius)!important}._border-right-radius{border-top-right-radius:.25rem!important;border-top-right-radius:var(--border-top-right-radius)!important;border-bottom-right-radius:.25rem!important;border-bottom-right-radius:var(--border-bottom-right-radius)!important}._border-bottom-radius{border-bottom-right-radius:.25rem!important;border-bottom-right-radius:var(--border-bottom-right-radius)!important;border-bottom-left-radius:.25rem!important;border-bottom-left-radius:var(--border-bottom-left-radius)!important}._border-left-radius{border-top-left-radius:.25rem!important;border-top-left-radius:var(--border-top-left-radius)!important;border-bottom-left-radius:.25rem!important;border-bottom-left-radius:var(--border-bottom-left-radius)!important}._border-top-left-radius{border-top-left-radius:.25rem!important;border-top-left-radius:var(--border-top-left-radius)!important}._border-top-right-radius{border-top-right-radius:.25rem!important;border-top-right-radius:var(--border-top-right-radius)!important}._border-bottom-right-radius{border-bottom-right-radius:.25rem!important;border-bottom-right-radius:var(--border-bottom-right-radius)!important}._border-bottom-left-radius{border-bottom-left-radius:.25rem!important;border-bottom-left-radius:var(--border-bottom-left-radius)!important}._border-radius\:circle{border-radius:50%!important}._border-radius\:0{border-radius:0!important}._clearfix:after{content:"";display:table;clear:both}._background\:primary{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#178bb2!important;background-color:var(--color--primary)!important}._background\:secondary{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8268ae!important;background-color:var(--color--secondary)!important}._background\:info{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#48b4a9!important;background-color:var(--color--info)!important}._background\:warning{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffda77!important;background-color:var(--color--warning)!important}._background\:danger{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f2413d!important;background-color:var(--color--danger)!important}._background\:success{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2fb079!important;background-color:var(--color--success)!important}._background\:red{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f2413d!important;background-color:var(--color--red)!important}._background\:orange{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f98e5a!important;background-color:var(--color--orange)!important}._background\:yellow{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffda77!important;background-color:var(--color--yellow)!important}._background\:green{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2fb079!important;background-color:var(--color--green)!important}._background\:teal{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#48b4a9!important;background-color:var(--color--teal)!important}._background\:blue{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#178bb2!important;background-color:var(--color--blue)!important}._background\:purple{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8268ae!important;background-color:var(--color--purple)!important}._background\:pink{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fc778a!important;background-color:var(--color--pink)!important}._background\:transparent{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#000!important;background-color:var(--color--transparent)!important}._background\:white{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff!important;background-color:var(--color--white)!important}._background\:black{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#000!important;background-color:var(--color--black)!important}._background\:gray{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8e9fa4!important;background-color:var(--color--gray)!important}._background\:light{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#dde2e4!important;background-color:var(--color--light)!important}._background\:dark{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3b3f40!important;background-color:var(--color--dark)!important}._background\:facebook{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3b5998!important;background-color:var(--color--facebook)!important}._background\:twitter{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1da1f2!important;background-color:var(--color--twitter)!important}._background\:google{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#dd4b39!important;background-color:var(--color--google)!important}._background\:github{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#333!important;background-color:var(--color--github)!important}._background\:instagram{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fd1d1d!important;background-color:var(--color--instagram)!important}._background\:dribbble{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ea4c89!important;background-color:var(--color--dribbble)!important}._background\:behance{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1769ff!important;background-color:var(--color--behance)!important}._background\:flickr{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ff0084!important;background-color:var(--color--flickr)!important}._background\:linkedin{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0077b5!important;background-color:var(--color--linkedin)!important}._background\:youtube{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#b31217!important;background-color:var(--color--youtube)!important}._background\:pinterest{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#bd081c!important;background-color:var(--color--pinterest)!important}._background\:gitlab{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fa7035!important;background-color:var(--color--gitlab)!important}._background\:tumblr{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#35465c!important;background-color:var(--color--tumblr)!important}._background\:twitch{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#6441a5!important;background-color:var(--color--twitch)!important}._background\:envato{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#82b541!important;background-color:var(--color--envato)!important}._background\:vine{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#00bf8f!important;background-color:var(--color--vine)!important}._background\:primary-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e4f6fb!important;background-color:var(--color--primary-05)!important}._background\:primary-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c9ecf8!important;background-color:var(--color--primary-10)!important}._background\:primary-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#aee3f4!important;background-color:var(--color--primary-15)!important}._background\:primary-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#93d9f1!important;background-color:var(--color--primary-20)!important}._background\:primary-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#78d0ed!important;background-color:var(--color--primary-25)!important}._background\:primary-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#5dc7ea!important;background-color:var(--color--primary-30)!important}._background\:primary-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#41bde6!important;background-color:var(--color--primary-35)!important}._background\:primary-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#26b4e3!important;background-color:var(--color--primary-40)!important}._background\:primary-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1a9fcb!important;background-color:var(--color--primary-45)!important}._background\:primary-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#178ab0!important;background-color:var(--color--primary-50)!important}._background\:primary-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#157c9e!important;background-color:var(--color--primary-55)!important}._background\:primary-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#137190!important;background-color:var(--color--primary-60)!important}._background\:primary-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#10637e!important;background-color:var(--color--primary-65)!important}._background\:primary-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0e556c!important;background-color:var(--color--primary-70)!important}._background\:primary-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0c475a!important;background-color:var(--color--primary-75)!important}._background\:primary-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#093948!important;background-color:var(--color--primary-80)!important}._background\:primary-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#072a36!important;background-color:var(--color--primary-85)!important}._background\:primary-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#051c24!important;background-color:var(--color--primary-90)!important}._background\:primary-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#020e12!important;background-color:var(--color--primary-95)!important}._background\:secondary-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f1eef6!important;background-color:var(--color--secondary-05)!important}._background\:secondary-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e6e1ef!important;background-color:var(--color--secondary-10)!important}._background\:secondary-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#d8d1e6!important;background-color:var(--color--secondary-15)!important}._background\:secondary-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#cdc3df!important;background-color:var(--color--secondary-20)!important}._background\:secondary-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c0b3d6!important;background-color:var(--color--secondary-25)!important}._background\:secondary-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#b5a5cf!important;background-color:var(--color--secondary-30)!important}._background\:secondary-35{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#a795c6!important;background-color:var(--color--secondary-35)!important}._background\:secondary-40{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#9c88bf!important;background-color:var(--color--secondary-40)!important}._background\:secondary-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8e77b6!important;background-color:var(--color--secondary-45)!important}._background\:secondary-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#836aaf!important;background-color:var(--color--secondary-50)!important}._background\:secondary-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#7357a2!important;background-color:var(--color--secondary-55)!important}._background\:secondary-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#674f92!important;background-color:var(--color--secondary-60)!important}._background\:secondary-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#59447e!important;background-color:var(--color--secondary-65)!important}._background\:secondary-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4d3b6d!important;background-color:var(--color--secondary-70)!important}._background\:secondary-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3f305a!important;background-color:var(--color--secondary-75)!important}._background\:secondary-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#342749!important;background-color:var(--color--secondary-80)!important}._background\:secondary-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#261d35!important;background-color:var(--color--secondary-85)!important}._background\:secondary-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1a1424!important;background-color:var(--color--secondary-90)!important}._background\:secondary-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0c0911!important;background-color:var(--color--secondary-95)!important}._background\:info-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#edf8f7!important;background-color:var(--color--info-05)!important}._background\:info-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#dbf0ee!important;background-color:var(--color--info-10)!important}._background\:info-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c8e9e6!important;background-color:var(--color--info-15)!important}._background\:info-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#b6e2de!important;background-color:var(--color--info-20)!important}._background\:info-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#a4dbd5!important;background-color:var(--color--info-25)!important}._background\:info-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#92d3cd!important;background-color:var(--color--info-30)!important}._background\:info-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#7fccc4!important;background-color:var(--color--info-35)!important}._background\:info-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#6dc5bc!important;background-color:var(--color--info-40)!important}._background\:info-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#57bcb2!important;background-color:var(--color--info-45)!important}._background\:info-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#47b3a8!important;background-color:var(--color--info-50)!important}._background\:info-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#40a097!important;background-color:var(--color--info-55)!important}._background\:info-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3a9289!important;background-color:var(--color--info-60)!important}._background\:info-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#338078!important;background-color:var(--color--info-65)!important}._background\:info-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2c6d67!important;background-color:var(--color--info-70)!important}._background\:info-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#245b56!important;background-color:var(--color--info-75)!important}._background\:info-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1d4945!important;background-color:var(--color--info-80)!important}._background\:info-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#163733!important;background-color:var(--color--info-85)!important}._background\:info-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0f2422!important;background-color:var(--color--info-90)!important}._background\:info-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#071211!important;background-color:var(--color--info-95)!important}._background\:warning-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fffbf0!important;background-color:var(--color--warning-05)!important}._background\:warning-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff8e5!important;background-color:var(--color--warning-10)!important}._background\:warning-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff4d6!important;background-color:var(--color--warning-15)!important}._background\:warning-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff0c7!important;background-color:var(--color--warning-20)!important}._background\:warning-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffedbd!important;background-color:var(--color--warning-25)!important}._background\:warning-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe9ad!important;background-color:var(--color--warning-30)!important}._background\:warning-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe59e!important;background-color:var(--color--warning-35)!important}._background\:warning-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe294!important;background-color:var(--color--warning-40)!important}._background\:warning-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffde85!important;background-color:var(--color--warning-45)!important}._background\:warning-50{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffda75!important;background-color:var(--color--warning-50)!important}._background\:warning-55{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffd152!important;background-color:var(--color--warning-55)!important}._background\:warning-60{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffc72e!important;background-color:var(--color--warning-60)!important}._background\:warning-65{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffbc05!important;background-color:var(--color--warning-65)!important}._background\:warning-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#e0a500!important;background-color:var(--color--warning-70)!important}._background\:warning-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#bd8a00!important;background-color:var(--color--warning-75)!important}._background\:warning-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#946c00!important;background-color:var(--color--warning-80)!important}._background\:warning-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#705200!important;background-color:var(--color--warning-85)!important}._background\:warning-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4d3800!important;background-color:var(--color--warning-90)!important}._background\:warning-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#241a00!important;background-color:var(--color--warning-95)!important}._background\:danger-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#feecec!important;background-color:var(--color--danger-05)!important}._background\:danger-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fcd9d9!important;background-color:var(--color--danger-10)!important}._background\:danger-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fbc7c6!important;background-color:var(--color--danger-15)!important}._background\:danger-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fab4b3!important;background-color:var(--color--danger-20)!important}._background\:danger-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f8a1a0!important;background-color:var(--color--danger-25)!important}._background\:danger-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f78e8d!important;background-color:var(--color--danger-30)!important}._background\:danger-35{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f67c79!important;background-color:var(--color--danger-35)!important}._background\:danger-40{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f46966!important;background-color:var(--color--danger-40)!important}._background\:danger-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f3514f!important;background-color:var(--color--danger-45)!important}._background\:danger-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f13f3b!important;background-color:var(--color--danger-50)!important}._background\:danger-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ef221f!important;background-color:var(--color--danger-55)!important}._background\:danger-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#e51310!important;background-color:var(--color--danger-60)!important}._background\:danger-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#c8110e!important;background-color:var(--color--danger-65)!important}._background\:danger-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ac0f0c!important;background-color:var(--color--danger-70)!important}._background\:danger-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8f0c0a!important;background-color:var(--color--danger-75)!important}._background\:danger-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#720a08!important;background-color:var(--color--danger-80)!important}._background\:danger-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#560706!important;background-color:var(--color--danger-85)!important}._background\:danger-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#390504!important;background-color:var(--color--danger-90)!important}._background\:danger-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1d0202!important;background-color:var(--color--danger-95)!important}._background\:success-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e7f9f1!important;background-color:var(--color--success-05)!important}._background\:success-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#d3f3e5!important;background-color:var(--color--success-10)!important}._background\:success-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#bbedd7!important;background-color:var(--color--success-15)!important}._background\:success-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#a2e6c9!important;background-color:var(--color--success-20)!important}._background\:success-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#8ee1bd!important;background-color:var(--color--success-25)!important}._background\:success-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#76dbaf!important;background-color:var(--color--success-30)!important}._background\:success-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#62d5a3!important;background-color:var(--color--success-35)!important}._background\:success-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#4acf95!important;background-color:var(--color--success-40)!important}._background\:success-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#34c587!important;background-color:var(--color--success-45)!important}._background\:success-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2fb179!important;background-color:var(--color--success-50)!important}._background\:success-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2a9d6b!important;background-color:var(--color--success-55)!important}._background\:success-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#258d60!important;background-color:var(--color--success-60)!important}._background\:success-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#217d55!important;background-color:var(--color--success-65)!important}._background\:success-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1c6947!important;background-color:var(--color--success-70)!important}._background\:success-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#18593c!important;background-color:var(--color--success-75)!important}._background\:success-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#12442f!important;background-color:var(--color--success-80)!important}._background\:success-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0e3424!important;background-color:var(--color--success-85)!important}._background\:success-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0a2419!important;background-color:var(--color--success-90)!important}._background\:success-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#04100b!important;background-color:var(--color--success-95)!important}._background\:red-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#feecec!important;background-color:var(--color--red-05)!important}._background\:red-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fcd9d9!important;background-color:var(--color--red-10)!important}._background\:red-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fbc7c6!important;background-color:var(--color--red-15)!important}._background\:red-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fab4b3!important;background-color:var(--color--red-20)!important}._background\:red-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f8a1a0!important;background-color:var(--color--red-25)!important}._background\:red-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f78e8d!important;background-color:var(--color--red-30)!important}._background\:red-35{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f67c79!important;background-color:var(--color--red-35)!important}._background\:red-40{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f46966!important;background-color:var(--color--red-40)!important}._background\:red-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f3514f!important;background-color:var(--color--red-45)!important}._background\:red-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f13f3b!important;background-color:var(--color--red-50)!important}._background\:red-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ef221f!important;background-color:var(--color--red-55)!important}._background\:red-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#e51310!important;background-color:var(--color--red-60)!important}._background\:red-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#c8110e!important;background-color:var(--color--red-65)!important}._background\:red-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ac0f0c!important;background-color:var(--color--red-70)!important}._background\:red-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8f0c0a!important;background-color:var(--color--red-75)!important}._background\:red-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#720a08!important;background-color:var(--color--red-80)!important}._background\:red-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#560706!important;background-color:var(--color--red-85)!important}._background\:red-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#390504!important;background-color:var(--color--red-90)!important}._background\:red-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1d0202!important;background-color:var(--color--red-95)!important}._background\:orange-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fef5f0!important;background-color:var(--color--orange-05)!important}._background\:orange-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fee8dd!important;background-color:var(--color--orange-10)!important}._background\:orange-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fddece!important;background-color:var(--color--orange-15)!important}._background\:orange-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fdd4bf!important;background-color:var(--color--orange-20)!important}._background\:orange-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fcc6ab!important;background-color:var(--color--orange-25)!important}._background\:orange-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fbbc9d!important;background-color:var(--color--orange-30)!important}._background\:orange-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fbb28e!important;background-color:var(--color--orange-35)!important}._background\:orange-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#faa57a!important;background-color:var(--color--orange-40)!important}._background\:orange-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fa9b6b!important;background-color:var(--color--orange-45)!important}._background\:orange-50{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f98d58!important;background-color:var(--color--orange-50)!important}._background\:orange-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f8793a!important;background-color:var(--color--orange-55)!important}._background\:orange-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f76218!important;background-color:var(--color--orange-60)!important}._background\:orange-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#e75308!important;background-color:var(--color--orange-65)!important}._background\:orange-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#c54607!important;background-color:var(--color--orange-70)!important}._background\:orange-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#a23a06!important;background-color:var(--color--orange-75)!important}._background\:orange-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#853005!important;background-color:var(--color--orange-80)!important}._background\:orange-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#622304!important;background-color:var(--color--orange-85)!important}._background\:orange-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#401702!important;background-color:var(--color--orange-90)!important}._background\:orange-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#220c01!important;background-color:var(--color--orange-95)!important}._background\:yellow-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fffbf0!important;background-color:var(--color--yellow-05)!important}._background\:yellow-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff8e5!important;background-color:var(--color--yellow-10)!important}._background\:yellow-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff4d6!important;background-color:var(--color--yellow-15)!important}._background\:yellow-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff0c7!important;background-color:var(--color--yellow-20)!important}._background\:yellow-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffedbd!important;background-color:var(--color--yellow-25)!important}._background\:yellow-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe9ad!important;background-color:var(--color--yellow-30)!important}._background\:yellow-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe59e!important;background-color:var(--color--yellow-35)!important}._background\:yellow-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe294!important;background-color:var(--color--yellow-40)!important}._background\:yellow-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffde85!important;background-color:var(--color--yellow-45)!important}._background\:yellow-50{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffda75!important;background-color:var(--color--yellow-50)!important}._background\:yellow-55{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffd152!important;background-color:var(--color--yellow-55)!important}._background\:yellow-60{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffc72e!important;background-color:var(--color--yellow-60)!important}._background\:yellow-65{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffbc05!important;background-color:var(--color--yellow-65)!important}._background\:yellow-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#e0a500!important;background-color:var(--color--yellow-70)!important}._background\:yellow-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#bd8a00!important;background-color:var(--color--yellow-75)!important}._background\:yellow-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#946c00!important;background-color:var(--color--yellow-80)!important}._background\:yellow-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#705200!important;background-color:var(--color--yellow-85)!important}._background\:yellow-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4d3800!important;background-color:var(--color--yellow-90)!important}._background\:yellow-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#241a00!important;background-color:var(--color--yellow-95)!important}._background\:green-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e7f9f1!important;background-color:var(--color--green-05)!important}._background\:green-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#d3f3e5!important;background-color:var(--color--green-10)!important}._background\:green-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#bbedd7!important;background-color:var(--color--green-15)!important}._background\:green-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#a2e6c9!important;background-color:var(--color--green-20)!important}._background\:green-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#8ee1bd!important;background-color:var(--color--green-25)!important}._background\:green-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#76dbaf!important;background-color:var(--color--green-30)!important}._background\:green-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#62d5a3!important;background-color:var(--color--green-35)!important}._background\:green-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#4acf95!important;background-color:var(--color--green-40)!important}._background\:green-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#34c587!important;background-color:var(--color--green-45)!important}._background\:green-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2fb179!important;background-color:var(--color--green-50)!important}._background\:green-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2a9d6b!important;background-color:var(--color--green-55)!important}._background\:green-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#258d60!important;background-color:var(--color--green-60)!important}._background\:green-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#217d55!important;background-color:var(--color--green-65)!important}._background\:green-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1c6947!important;background-color:var(--color--green-70)!important}._background\:green-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#18593c!important;background-color:var(--color--green-75)!important}._background\:green-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#12442f!important;background-color:var(--color--green-80)!important}._background\:green-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0e3424!important;background-color:var(--color--green-85)!important}._background\:green-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0a2419!important;background-color:var(--color--green-90)!important}._background\:green-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#04100b!important;background-color:var(--color--green-95)!important}._background\:teal-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#edf8f7!important;background-color:var(--color--teal-05)!important}._background\:teal-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#dbf0ee!important;background-color:var(--color--teal-10)!important}._background\:teal-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c8e9e6!important;background-color:var(--color--teal-15)!important}._background\:teal-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#b6e2de!important;background-color:var(--color--teal-20)!important}._background\:teal-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#a4dbd5!important;background-color:var(--color--teal-25)!important}._background\:teal-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#92d3cd!important;background-color:var(--color--teal-30)!important}._background\:teal-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#7fccc4!important;background-color:var(--color--teal-35)!important}._background\:teal-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#6dc5bc!important;background-color:var(--color--teal-40)!important}._background\:teal-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#57bcb2!important;background-color:var(--color--teal-45)!important}._background\:teal-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#47b3a8!important;background-color:var(--color--teal-50)!important}._background\:teal-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#40a097!important;background-color:var(--color--teal-55)!important}._background\:teal-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3a9289!important;background-color:var(--color--teal-60)!important}._background\:teal-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#338078!important;background-color:var(--color--teal-65)!important}._background\:teal-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2c6d67!important;background-color:var(--color--teal-70)!important}._background\:teal-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#245b56!important;background-color:var(--color--teal-75)!important}._background\:teal-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1d4945!important;background-color:var(--color--teal-80)!important}._background\:teal-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#163733!important;background-color:var(--color--teal-85)!important}._background\:teal-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0f2422!important;background-color:var(--color--teal-90)!important}._background\:teal-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#071211!important;background-color:var(--color--teal-95)!important}._background\:blue-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e4f6fb!important;background-color:var(--color--blue-05)!important}._background\:blue-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c9ecf8!important;background-color:var(--color--blue-10)!important}._background\:blue-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#aee3f4!important;background-color:var(--color--blue-15)!important}._background\:blue-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#93d9f1!important;background-color:var(--color--blue-20)!important}._background\:blue-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#78d0ed!important;background-color:var(--color--blue-25)!important}._background\:blue-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#5dc7ea!important;background-color:var(--color--blue-30)!important}._background\:blue-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#41bde6!important;background-color:var(--color--blue-35)!important}._background\:blue-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#26b4e3!important;background-color:var(--color--blue-40)!important}._background\:blue-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1a9fcb!important;background-color:var(--color--blue-45)!important}._background\:blue-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#178ab0!important;background-color:var(--color--blue-50)!important}._background\:blue-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#157c9e!important;background-color:var(--color--blue-55)!important}._background\:blue-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#137190!important;background-color:var(--color--blue-60)!important}._background\:blue-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#10637e!important;background-color:var(--color--blue-65)!important}._background\:blue-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0e556c!important;background-color:var(--color--blue-70)!important}._background\:blue-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0c475a!important;background-color:var(--color--blue-75)!important}._background\:blue-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#093948!important;background-color:var(--color--blue-80)!important}._background\:blue-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#072a36!important;background-color:var(--color--blue-85)!important}._background\:blue-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#051c24!important;background-color:var(--color--blue-90)!important}._background\:blue-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#020e12!important;background-color:var(--color--blue-95)!important}._background\:purple-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f1eef6!important;background-color:var(--color--purple-05)!important}._background\:purple-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e6e1ef!important;background-color:var(--color--purple-10)!important}._background\:purple-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#d8d1e6!important;background-color:var(--color--purple-15)!important}._background\:purple-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#cdc3df!important;background-color:var(--color--purple-20)!important}._background\:purple-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c0b3d6!important;background-color:var(--color--purple-25)!important}._background\:purple-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#b5a5cf!important;background-color:var(--color--purple-30)!important}._background\:purple-35{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#a795c6!important;background-color:var(--color--purple-35)!important}._background\:purple-40{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#9c88bf!important;background-color:var(--color--purple-40)!important}._background\:purple-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8e77b6!important;background-color:var(--color--purple-45)!important}._background\:purple-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#836aaf!important;background-color:var(--color--purple-50)!important}._background\:purple-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#7357a2!important;background-color:var(--color--purple-55)!important}._background\:purple-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#674f92!important;background-color:var(--color--purple-60)!important}._background\:purple-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#59447e!important;background-color:var(--color--purple-65)!important}._background\:purple-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4d3b6d!important;background-color:var(--color--purple-70)!important}._background\:purple-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3f305a!important;background-color:var(--color--purple-75)!important}._background\:purple-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#342749!important;background-color:var(--color--purple-80)!important}._background\:purple-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#261d35!important;background-color:var(--color--purple-85)!important}._background\:purple-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1a1424!important;background-color:var(--color--purple-90)!important}._background\:purple-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0c0911!important;background-color:var(--color--purple-95)!important}._background\:pink-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff0f2!important;background-color:var(--color--pink-05)!important}._background\:pink-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fee6ea!important;background-color:var(--color--pink-10)!important}._background\:pink-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fed7dd!important;background-color:var(--color--pink-15)!important}._background\:pink-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fec8d0!important;background-color:var(--color--pink-20)!important}._background\:pink-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#feb9c3!important;background-color:var(--color--pink-25)!important}._background\:pink-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fdafbb!important;background-color:var(--color--pink-30)!important}._background\:pink-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fda0ae!important;background-color:var(--color--pink-35)!important}._background\:pink-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fd91a1!important;background-color:var(--color--pink-40)!important}._background\:pink-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fc8294!important;background-color:var(--color--pink-45)!important}._background\:pink-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fc788c!important;background-color:var(--color--pink-50)!important}._background\:pink-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fb506a!important;background-color:var(--color--pink-55)!important}._background\:pink-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fb2d4c!important;background-color:var(--color--pink-60)!important}._background\:pink-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fa0a2e!important;background-color:var(--color--pink-65)!important}._background\:pink-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#dc0425!important;background-color:var(--color--pink-70)!important}._background\:pink-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#b4041e!important;background-color:var(--color--pink-75)!important}._background\:pink-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#910318!important;background-color:var(--color--pink-80)!important}._background\:pink-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#6e0212!important;background-color:var(--color--pink-85)!important}._background\:pink-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4b020d!important;background-color:var(--color--pink-90)!important}._background\:pink-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#230106!important;background-color:var(--color--pink-95)!important}._background\:gray-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f4f5f6!important;background-color:var(--color--gray-05)!important}._background\:gray-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e8eced!important;background-color:var(--color--gray-10)!important}._background\:gray-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#dde2e4!important;background-color:var(--color--gray-15)!important}._background\:gray-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#d2d9db!important;background-color:var(--color--gray-20)!important}._background\:gray-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c6cfd2!important;background-color:var(--color--gray-25)!important}._background\:gray-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#bbc5c9!important;background-color:var(--color--gray-30)!important}._background\:gray-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#b0bcbf!important;background-color:var(--color--gray-35)!important}._background\:gray-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#a4b2b6!important;background-color:var(--color--gray-40)!important}._background\:gray-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#99a9ad!important;background-color:var(--color--gray-45)!important}._background\:gray-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8e9fa4!important;background-color:var(--color--gray-50)!important}._background\:gray-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#7d9197!important;background-color:var(--color--gray-55)!important}._background\:gray-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#6d8288!important;background-color:var(--color--gray-60)!important}._background\:gray-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#5f7177!important;background-color:var(--color--gray-65)!important}._background\:gray-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#526166!important;background-color:var(--color--gray-70)!important}._background\:gray-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#445155!important;background-color:var(--color--gray-75)!important}._background\:gray-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#364144!important;background-color:var(--color--gray-80)!important}._background\:gray-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#293133!important;background-color:var(--color--gray-85)!important}._background\:gray-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1b2022!important;background-color:var(--color--gray-90)!important}._background\:gray-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0e1011!important;background-color:var(--color--gray-95)!important}._background\:light-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#eef1f1!important;background-color:var(--color--light-25)!important}._background\:light-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ebeeef!important;background-color:var(--color--light-30)!important}._background\:light-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e8eced!important;background-color:var(--color--light-35)!important}._background\:light-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e3e7e8!important;background-color:var(--color--light-40)!important}._background\:light-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e0e5e6!important;background-color:var(--color--light-45)!important}._background\:light-50{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#dde2e4!important;background-color:var(--color--light-50)!important}._background\:light-55{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c4cdcf!important;background-color:var(--color--light-55)!important}._background\:light-60{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#aab7bb!important;background-color:var(--color--light-60)!important}._background\:light-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#93a4a9!important;background-color:var(--color--light-65)!important}._background\:light-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#7a8e94!important;background-color:var(--color--light-70)!important}._background\:light-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#64777d!important;background-color:var(--color--light-75)!important}._background\:dark-25{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#9aa0a2!important;background-color:var(--color--dark-25)!important}._background\:dark-30{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#858c8e!important;background-color:var(--color--dark-30)!important}._background\:dark-35{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#737a7d!important;background-color:var(--color--dark-35)!important}._background\:dark-40{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#5f6667!important;background-color:var(--color--dark-40)!important}._background\:dark-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4e5355!important;background-color:var(--color--dark-45)!important}._background\:dark-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3b3f40!important;background-color:var(--color--dark-50)!important}._background\:dark-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#36393a!important;background-color:var(--color--dark-55)!important}._background\:dark-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2f3132!important;background-color:var(--color--dark-60)!important}._background\:dark-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2a2c2d!important;background-color:var(--color--dark-65)!important}._background\:dark-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#222425!important;background-color:var(--color--dark-70)!important}._background\:dark-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1d1f20!important;background-color:var(--color--dark-75)!important}._background\:facebook-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#354f88!important;background-color:var(--color--facebook-55)!important}._background\:facebook-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2f4779!important;background-color:var(--color--facebook-60)!important}._background\:twitter-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0d94e7!important;background-color:var(--color--twitter-55)!important}._background\:twitter-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0c84cf!important;background-color:var(--color--twitter-60)!important}._background\:google-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#d63924!important;background-color:var(--color--google-55)!important}._background\:google-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#c03321!important;background-color:var(--color--google-60)!important}._background\:github-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2e2e2e!important;background-color:var(--color--github-55)!important}._background\:github-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#292929!important;background-color:var(--color--github-60)!important}._color\:primary,._text\:primary{color:#178bb2!important;color:var(--color--primary)!important}._color\:secondary,._text\:secondary{color:#8268ae!important;color:var(--color--secondary)!important}._color\:info,._text\:info{color:#48b4a9!important;color:var(--color--info)!important}._color\:warning,._text\:warning{color:#ffda77!important;color:var(--color--warning)!important}._color\:danger,._text\:danger{color:#f2413d!important;color:var(--color--danger)!important}._color\:success,._text\:success{color:#2fb079!important;color:var(--color--success)!important}._color\:red,._text\:red{color:#f2413d!important;color:var(--color--red)!important}._color\:orange,._text\:orange{color:#f98e5a!important;color:var(--color--orange)!important}._color\:yellow,._text\:yellow{color:#ffda77!important;color:var(--color--yellow)!important}._color\:green,._text\:green{color:#2fb079!important;color:var(--color--green)!important}._color\:teal,._text\:teal{color:#48b4a9!important;color:var(--color--teal)!important}._color\:blue,._text\:blue{color:#178bb2!important;color:var(--color--blue)!important}._color\:purple,._text\:purple{color:#8268ae!important;color:var(--color--purple)!important}._color\:pink,._text\:pink{color:#fc778a!important;color:var(--color--pink)!important}._color\:transparent,._text\:transparent{color:#000!important;color:var(--color--transparent)!important}._color\:white,._text\:white{color:#fff!important;color:var(--color--white)!important}._color\:black,._text\:black{color:#000!important;color:var(--color--black)!important}._color\:gray,._text\:gray{color:#8e9fa4!important;color:var(--color--gray)!important}._color\:light,._text\:light{color:#dde2e4!important;color:var(--color--light)!important}._color\:dark,._text\:dark{color:#3b3f40!important;color:var(--color--dark)!important}._color\:facebook,._text\:facebook{color:#3b5998!important;color:var(--color--facebook)!important}._color\:twitter,._text\:twitter{color:#1da1f2!important;color:var(--color--twitter)!important}._color\:google,._text\:google{color:#dd4b39!important;color:var(--color--google)!important}._color\:github,._text\:github{color:#333!important;color:var(--color--github)!important}._color\:instagram,._text\:instagram{color:#fd1d1d!important;color:var(--color--instagram)!important}._color\:dribbble,._text\:dribbble{color:#ea4c89!important;color:var(--color--dribbble)!important}._color\:behance,._text\:behance{color:#1769ff!important;color:var(--color--behance)!important}._color\:flickr,._text\:flickr{color:#ff0084!important;color:var(--color--flickr)!important}._color\:linkedin,._text\:linkedin{color:#0077b5!important;color:var(--color--linkedin)!important}._color\:youtube,._text\:youtube{color:#b31217!important;color:var(--color--youtube)!important}._color\:pinterest,._text\:pinterest{color:#bd081c!important;color:var(--color--pinterest)!important}._color\:gitlab,._text\:gitlab{color:#fa7035!important;color:var(--color--gitlab)!important}._color\:tumblr,._text\:tumblr{color:#35465c!important;color:var(--color--tumblr)!important}._color\:twitch,._text\:twitch{color:#6441a5!important;color:var(--color--twitch)!important}._color\:envato,._text\:envato{color:#82b541!important;color:var(--color--envato)!important}._color\:vine,._text\:vine{color:#00bf8f!important;color:var(--color--vine)!important}._color\:primary-05,._text\:primary-05{color:#e4f6fb!important;color:var(--color--primary-05)!important}._color\:primary-10,._text\:primary-10{color:#c9ecf8!important;color:var(--color--primary-10)!important}._color\:primary-15,._text\:primary-15{color:#aee3f4!important;color:var(--color--primary-15)!important}._color\:primary-20,._text\:primary-20{color:#93d9f1!important;color:var(--color--primary-20)!important}._color\:primary-25,._text\:primary-25{color:#78d0ed!important;color:var(--color--primary-25)!important}._color\:primary-30,._text\:primary-30{color:#5dc7ea!important;color:var(--color--primary-30)!important}._color\:primary-35,._text\:primary-35{color:#41bde6!important;color:var(--color--primary-35)!important}._color\:primary-40,._text\:primary-40{color:#26b4e3!important;color:var(--color--primary-40)!important}._color\:primary-45,._text\:primary-45{color:#1a9fcb!important;color:var(--color--primary-45)!important}._color\:primary-50,._text\:primary-50{color:#178ab0!important;color:var(--color--primary-50)!important}._color\:primary-55,._text\:primary-55{color:#157c9e!important;color:var(--color--primary-55)!important}._color\:primary-60,._text\:primary-60{color:#137190!important;color:var(--color--primary-60)!important}._color\:primary-65,._text\:primary-65{color:#10637e!important;color:var(--color--primary-65)!important}._color\:primary-70,._text\:primary-70{color:#0e556c!important;color:var(--color--primary-70)!important}._color\:primary-75,._text\:primary-75{color:#0c475a!important;color:var(--color--primary-75)!important}._color\:primary-80,._text\:primary-80{color:#093948!important;color:var(--color--primary-80)!important}._color\:primary-85,._text\:primary-85{color:#072a36!important;color:var(--color--primary-85)!important}._color\:primary-90,._text\:primary-90{color:#051c24!important;color:var(--color--primary-90)!important}._color\:primary-95,._text\:primary-95{color:#020e12!important;color:var(--color--primary-95)!important}._color\:secondary-05,._text\:secondary-05{color:#f1eef6!important;color:var(--color--secondary-05)!important}._color\:secondary-10,._text\:secondary-10{color:#e6e1ef!important;color:var(--color--secondary-10)!important}._color\:secondary-15,._text\:secondary-15{color:#d8d1e6!important;color:var(--color--secondary-15)!important}._color\:secondary-20,._text\:secondary-20{color:#cdc3df!important;color:var(--color--secondary-20)!important}._color\:secondary-25,._text\:secondary-25{color:#c0b3d6!important;color:var(--color--secondary-25)!important}._color\:secondary-30,._text\:secondary-30{color:#b5a5cf!important;color:var(--color--secondary-30)!important}._color\:secondary-35,._text\:secondary-35{color:#a795c6!important;color:var(--color--secondary-35)!important}._color\:secondary-40,._text\:secondary-40{color:#9c88bf!important;color:var(--color--secondary-40)!important}._color\:secondary-45,._text\:secondary-45{color:#8e77b6!important;color:var(--color--secondary-45)!important}._color\:secondary-50,._text\:secondary-50{color:#836aaf!important;color:var(--color--secondary-50)!important}._color\:secondary-55,._text\:secondary-55{color:#7357a2!important;color:var(--color--secondary-55)!important}._color\:secondary-60,._text\:secondary-60{color:#674f92!important;color:var(--color--secondary-60)!important}._color\:secondary-65,._text\:secondary-65{color:#59447e!important;color:var(--color--secondary-65)!important}._color\:secondary-70,._text\:secondary-70{color:#4d3b6d!important;color:var(--color--secondary-70)!important}._color\:secondary-75,._text\:secondary-75{color:#3f305a!important;color:var(--color--secondary-75)!important}._color\:secondary-80,._text\:secondary-80{color:#342749!important;color:var(--color--secondary-80)!important}._color\:secondary-85,._text\:secondary-85{color:#261d35!important;color:var(--color--secondary-85)!important}._color\:secondary-90,._text\:secondary-90{color:#1a1424!important;color:var(--color--secondary-90)!important}._color\:secondary-95,._text\:secondary-95{color:#0c0911!important;color:var(--color--secondary-95)!important}._color\:info-05,._text\:info-05{color:#edf8f7!important;color:var(--color--info-05)!important}._color\:info-10,._text\:info-10{color:#dbf0ee!important;color:var(--color--info-10)!important}._color\:info-15,._text\:info-15{color:#c8e9e6!important;color:var(--color--info-15)!important}._color\:info-20,._text\:info-20{color:#b6e2de!important;color:var(--color--info-20)!important}._color\:info-25,._text\:info-25{color:#a4dbd5!important;color:var(--color--info-25)!important}._color\:info-30,._text\:info-30{color:#92d3cd!important;color:var(--color--info-30)!important}._color\:info-35,._text\:info-35{color:#7fccc4!important;color:var(--color--info-35)!important}._color\:info-40,._text\:info-40{color:#6dc5bc!important;color:var(--color--info-40)!important}._color\:info-45,._text\:info-45{color:#57bcb2!important;color:var(--color--info-45)!important}._color\:info-50,._text\:info-50{color:#47b3a8!important;color:var(--color--info-50)!important}._color\:info-55,._text\:info-55{color:#40a097!important;color:var(--color--info-55)!important}._color\:info-60,._text\:info-60{color:#3a9289!important;color:var(--color--info-60)!important}._color\:info-65,._text\:info-65{color:#338078!important;color:var(--color--info-65)!important}._color\:info-70,._text\:info-70{color:#2c6d67!important;color:var(--color--info-70)!important}._color\:info-75,._text\:info-75{color:#245b56!important;color:var(--color--info-75)!important}._color\:info-80,._text\:info-80{color:#1d4945!important;color:var(--color--info-80)!important}._color\:info-85,._text\:info-85{color:#163733!important;color:var(--color--info-85)!important}._color\:info-90,._text\:info-90{color:#0f2422!important;color:var(--color--info-90)!important}._color\:info-95,._text\:info-95{color:#071211!important;color:var(--color--info-95)!important}._color\:warning-05,._text\:warning-05{color:#fffbf0!important;color:var(--color--warning-05)!important}._color\:warning-10,._text\:warning-10{color:#fff8e5!important;color:var(--color--warning-10)!important}._color\:warning-15,._text\:warning-15{color:#fff4d6!important;color:var(--color--warning-15)!important}._color\:warning-20,._text\:warning-20{color:#fff0c7!important;color:var(--color--warning-20)!important}._color\:warning-25,._text\:warning-25{color:#ffedbd!important;color:var(--color--warning-25)!important}._color\:warning-30,._text\:warning-30{color:#ffe9ad!important;color:var(--color--warning-30)!important}._color\:warning-35,._text\:warning-35{color:#ffe59e!important;color:var(--color--warning-35)!important}._color\:warning-40,._text\:warning-40{color:#ffe294!important;color:var(--color--warning-40)!important}._color\:warning-45,._text\:warning-45{color:#ffde85!important;color:var(--color--warning-45)!important}._color\:warning-50,._text\:warning-50{color:#ffda75!important;color:var(--color--warning-50)!important}._color\:warning-55,._text\:warning-55{color:#ffd152!important;color:var(--color--warning-55)!important}._color\:warning-60,._text\:warning-60{color:#ffc72e!important;color:var(--color--warning-60)!important}._color\:warning-65,._text\:warning-65{color:#ffbc05!important;color:var(--color--warning-65)!important}._color\:warning-70,._text\:warning-70{color:#e0a500!important;color:var(--color--warning-70)!important}._color\:warning-75,._text\:warning-75{color:#bd8a00!important;color:var(--color--warning-75)!important}._color\:warning-80,._text\:warning-80{color:#946c00!important;color:var(--color--warning-80)!important}._color\:warning-85,._text\:warning-85{color:#705200!important;color:var(--color--warning-85)!important}._color\:warning-90,._text\:warning-90{color:#4d3800!important;color:var(--color--warning-90)!important}._color\:warning-95,._text\:warning-95{color:#241a00!important;color:var(--color--warning-95)!important}._color\:danger-05,._text\:danger-05{color:#feecec!important;color:var(--color--danger-05)!important}._color\:danger-10,._text\:danger-10{color:#fcd9d9!important;color:var(--color--danger-10)!important}._color\:danger-15,._text\:danger-15{color:#fbc7c6!important;color:var(--color--danger-15)!important}._color\:danger-20,._text\:danger-20{color:#fab4b3!important;color:var(--color--danger-20)!important}._color\:danger-25,._text\:danger-25{color:#f8a1a0!important;color:var(--color--danger-25)!important}._color\:danger-30,._text\:danger-30{color:#f78e8d!important;color:var(--color--danger-30)!important}._color\:danger-35,._text\:danger-35{color:#f67c79!important;color:var(--color--danger-35)!important}._color\:danger-40,._text\:danger-40{color:#f46966!important;color:var(--color--danger-40)!important}._color\:danger-45,._text\:danger-45{color:#f3514f!important;color:var(--color--danger-45)!important}._color\:danger-50,._text\:danger-50{color:#f13f3b!important;color:var(--color--danger-50)!important}._color\:danger-55,._text\:danger-55{color:#ef221f!important;color:var(--color--danger-55)!important}._color\:danger-60,._text\:danger-60{color:#e51310!important;color:var(--color--danger-60)!important}._color\:danger-65,._text\:danger-65{color:#c8110e!important;color:var(--color--danger-65)!important}._color\:danger-70,._text\:danger-70{color:#ac0f0c!important;color:var(--color--danger-70)!important}._color\:danger-75,._text\:danger-75{color:#8f0c0a!important;color:var(--color--danger-75)!important}._color\:danger-80,._text\:danger-80{color:#720a08!important;color:var(--color--danger-80)!important}._color\:danger-85,._text\:danger-85{color:#560706!important;color:var(--color--danger-85)!important}._color\:danger-90,._text\:danger-90{color:#390504!important;color:var(--color--danger-90)!important}._color\:danger-95,._text\:danger-95{color:#1d0202!important;color:var(--color--danger-95)!important}._color\:success-05,._text\:success-05{color:#e7f9f1!important;color:var(--color--success-05)!important}._color\:success-10,._text\:success-10{color:#d3f3e5!important;color:var(--color--success-10)!important}._color\:success-15,._text\:success-15{color:#bbedd7!important;color:var(--color--success-15)!important}._color\:success-20,._text\:success-20{color:#a2e6c9!important;color:var(--color--success-20)!important}._color\:success-25,._text\:success-25{color:#8ee1bd!important;color:var(--color--success-25)!important}._color\:success-30,._text\:success-30{color:#76dbaf!important;color:var(--color--success-30)!important}._color\:success-35,._text\:success-35{color:#62d5a3!important;color:var(--color--success-35)!important}._color\:success-40,._text\:success-40{color:#4acf95!important;color:var(--color--success-40)!important}._color\:success-45,._text\:success-45{color:#34c587!important;color:var(--color--success-45)!important}._color\:success-50,._text\:success-50{color:#2fb179!important;color:var(--color--success-50)!important}._color\:success-55,._text\:success-55{color:#2a9d6b!important;color:var(--color--success-55)!important}._color\:success-60,._text\:success-60{color:#258d60!important;color:var(--color--success-60)!important}._color\:success-65,._text\:success-65{color:#217d55!important;color:var(--color--success-65)!important}._color\:success-70,._text\:success-70{color:#1c6947!important;color:var(--color--success-70)!important}._color\:success-75,._text\:success-75{color:#18593c!important;color:var(--color--success-75)!important}._color\:success-80,._text\:success-80{color:#12442f!important;color:var(--color--success-80)!important}._color\:success-85,._text\:success-85{color:#0e3424!important;color:var(--color--success-85)!important}._color\:success-90,._text\:success-90{color:#0a2419!important;color:var(--color--success-90)!important}._color\:success-95,._text\:success-95{color:#04100b!important;color:var(--color--success-95)!important}._color\:red-05,._text\:red-05{color:#feecec!important;color:var(--color--red-05)!important}._color\:red-10,._text\:red-10{color:#fcd9d9!important;color:var(--color--red-10)!important}._color\:red-15,._text\:red-15{color:#fbc7c6!important;color:var(--color--red-15)!important}._color\:red-20,._text\:red-20{color:#fab4b3!important;color:var(--color--red-20)!important}._color\:red-25,._text\:red-25{color:#f8a1a0!important;color:var(--color--red-25)!important}._color\:red-30,._text\:red-30{color:#f78e8d!important;color:var(--color--red-30)!important}._color\:red-35,._text\:red-35{color:#f67c79!important;color:var(--color--red-35)!important}._color\:red-40,._text\:red-40{color:#f46966!important;color:var(--color--red-40)!important}._color\:red-45,._text\:red-45{color:#f3514f!important;color:var(--color--red-45)!important}._color\:red-50,._text\:red-50{color:#f13f3b!important;color:var(--color--red-50)!important}._color\:red-55,._text\:red-55{color:#ef221f!important;color:var(--color--red-55)!important}._color\:red-60,._text\:red-60{color:#e51310!important;color:var(--color--red-60)!important}._color\:red-65,._text\:red-65{color:#c8110e!important;color:var(--color--red-65)!important}._color\:red-70,._text\:red-70{color:#ac0f0c!important;color:var(--color--red-70)!important}._color\:red-75,._text\:red-75{color:#8f0c0a!important;color:var(--color--red-75)!important}._color\:red-80,._text\:red-80{color:#720a08!important;color:var(--color--red-80)!important}._color\:red-85,._text\:red-85{color:#560706!important;color:var(--color--red-85)!important}._color\:red-90,._text\:red-90{color:#390504!important;color:var(--color--red-90)!important}._color\:red-95,._text\:red-95{color:#1d0202!important;color:var(--color--red-95)!important}._color\:orange-05,._text\:orange-05{color:#fef5f0!important;color:var(--color--orange-05)!important}._color\:orange-10,._text\:orange-10{color:#fee8dd!important;color:var(--color--orange-10)!important}._color\:orange-15,._text\:orange-15{color:#fddece!important;color:var(--color--orange-15)!important}._color\:orange-20,._text\:orange-20{color:#fdd4bf!important;color:var(--color--orange-20)!important}._color\:orange-25,._text\:orange-25{color:#fcc6ab!important;color:var(--color--orange-25)!important}._color\:orange-30,._text\:orange-30{color:#fbbc9d!important;color:var(--color--orange-30)!important}._color\:orange-35,._text\:orange-35{color:#fbb28e!important;color:var(--color--orange-35)!important}._color\:orange-40,._text\:orange-40{color:#faa57a!important;color:var(--color--orange-40)!important}._color\:orange-45,._text\:orange-45{color:#fa9b6b!important;color:var(--color--orange-45)!important}._color\:orange-50,._text\:orange-50{color:#f98d58!important;color:var(--color--orange-50)!important}._color\:orange-55,._text\:orange-55{color:#f8793a!important;color:var(--color--orange-55)!important}._color\:orange-60,._text\:orange-60{color:#f76218!important;color:var(--color--orange-60)!important}._color\:orange-65,._text\:orange-65{color:#e75308!important;color:var(--color--orange-65)!important}._color\:orange-70,._text\:orange-70{color:#c54607!important;color:var(--color--orange-70)!important}._color\:orange-75,._text\:orange-75{color:#a23a06!important;color:var(--color--orange-75)!important}._color\:orange-80,._text\:orange-80{color:#853005!important;color:var(--color--orange-80)!important}._color\:orange-85,._text\:orange-85{color:#622304!important;color:var(--color--orange-85)!important}._color\:orange-90,._text\:orange-90{color:#401702!important;color:var(--color--orange-90)!important}._color\:orange-95,._text\:orange-95{color:#220c01!important;color:var(--color--orange-95)!important}._color\:yellow-05,._text\:yellow-05{color:#fffbf0!important;color:var(--color--yellow-05)!important}._color\:yellow-10,._text\:yellow-10{color:#fff8e5!important;color:var(--color--yellow-10)!important}._color\:yellow-15,._text\:yellow-15{color:#fff4d6!important;color:var(--color--yellow-15)!important}._color\:yellow-20,._text\:yellow-20{color:#fff0c7!important;color:var(--color--yellow-20)!important}._color\:yellow-25,._text\:yellow-25{color:#ffedbd!important;color:var(--color--yellow-25)!important}._color\:yellow-30,._text\:yellow-30{color:#ffe9ad!important;color:var(--color--yellow-30)!important}._color\:yellow-35,._text\:yellow-35{color:#ffe59e!important;color:var(--color--yellow-35)!important}._color\:yellow-40,._text\:yellow-40{color:#ffe294!important;color:var(--color--yellow-40)!important}._color\:yellow-45,._text\:yellow-45{color:#ffde85!important;color:var(--color--yellow-45)!important}._color\:yellow-50,._text\:yellow-50{color:#ffda75!important;color:var(--color--yellow-50)!important}._color\:yellow-55,._text\:yellow-55{color:#ffd152!important;color:var(--color--yellow-55)!important}._color\:yellow-60,._text\:yellow-60{color:#ffc72e!important;color:var(--color--yellow-60)!important}._color\:yellow-65,._text\:yellow-65{color:#ffbc05!important;color:var(--color--yellow-65)!important}._color\:yellow-70,._text\:yellow-70{color:#e0a500!important;color:var(--color--yellow-70)!important}._color\:yellow-75,._text\:yellow-75{color:#bd8a00!important;color:var(--color--yellow-75)!important}._color\:yellow-80,._text\:yellow-80{color:#946c00!important;color:var(--color--yellow-80)!important}._color\:yellow-85,._text\:yellow-85{color:#705200!important;color:var(--color--yellow-85)!important}._color\:yellow-90,._text\:yellow-90{color:#4d3800!important;color:var(--color--yellow-90)!important}._color\:yellow-95,._text\:yellow-95{color:#241a00!important;color:var(--color--yellow-95)!important}._color\:green-05,._text\:green-05{color:#e7f9f1!important;color:var(--color--green-05)!important}._color\:green-10,._text\:green-10{color:#d3f3e5!important;color:var(--color--green-10)!important}._color\:green-15,._text\:green-15{color:#bbedd7!important;color:var(--color--green-15)!important}._color\:green-20,._text\:green-20{color:#a2e6c9!important;color:var(--color--green-20)!important}._color\:green-25,._text\:green-25{color:#8ee1bd!important;color:var(--color--green-25)!important}._color\:green-30,._text\:green-30{color:#76dbaf!important;color:var(--color--green-30)!important}._color\:green-35,._text\:green-35{color:#62d5a3!important;color:var(--color--green-35)!important}._color\:green-40,._text\:green-40{color:#4acf95!important;color:var(--color--green-40)!important}._color\:green-45,._text\:green-45{color:#34c587!important;color:var(--color--green-45)!important}._color\:green-50,._text\:green-50{color:#2fb179!important;color:var(--color--green-50)!important}._color\:green-55,._text\:green-55{color:#2a9d6b!important;color:var(--color--green-55)!important}._color\:green-60,._text\:green-60{color:#258d60!important;color:var(--color--green-60)!important}._color\:green-65,._text\:green-65{color:#217d55!important;color:var(--color--green-65)!important}._color\:green-70,._text\:green-70{color:#1c6947!important;color:var(--color--green-70)!important}._color\:green-75,._text\:green-75{color:#18593c!important;color:var(--color--green-75)!important}._color\:green-80,._text\:green-80{color:#12442f!important;color:var(--color--green-80)!important}._color\:green-85,._text\:green-85{color:#0e3424!important;color:var(--color--green-85)!important}._color\:green-90,._text\:green-90{color:#0a2419!important;color:var(--color--green-90)!important}._color\:green-95,._text\:green-95{color:#04100b!important;color:var(--color--green-95)!important}._color\:teal-05,._text\:teal-05{color:#edf8f7!important;color:var(--color--teal-05)!important}._color\:teal-10,._text\:teal-10{color:#dbf0ee!important;color:var(--color--teal-10)!important}._color\:teal-15,._text\:teal-15{color:#c8e9e6!important;color:var(--color--teal-15)!important}._color\:teal-20,._text\:teal-20{color:#b6e2de!important;color:var(--color--teal-20)!important}._color\:teal-25,._text\:teal-25{color:#a4dbd5!important;color:var(--color--teal-25)!important}._color\:teal-30,._text\:teal-30{color:#92d3cd!important;color:var(--color--teal-30)!important}._color\:teal-35,._text\:teal-35{color:#7fccc4!important;color:var(--color--teal-35)!important}._color\:teal-40,._text\:teal-40{color:#6dc5bc!important;color:var(--color--teal-40)!important}._color\:teal-45,._text\:teal-45{color:#57bcb2!important;color:var(--color--teal-45)!important}._color\:teal-50,._text\:teal-50{color:#47b3a8!important;color:var(--color--teal-50)!important}._color\:teal-55,._text\:teal-55{color:#40a097!important;color:var(--color--teal-55)!important}._color\:teal-60,._text\:teal-60{color:#3a9289!important;color:var(--color--teal-60)!important}._color\:teal-65,._text\:teal-65{color:#338078!important;color:var(--color--teal-65)!important}._color\:teal-70,._text\:teal-70{color:#2c6d67!important;color:var(--color--teal-70)!important}._color\:teal-75,._text\:teal-75{color:#245b56!important;color:var(--color--teal-75)!important}._color\:teal-80,._text\:teal-80{color:#1d4945!important;color:var(--color--teal-80)!important}._color\:teal-85,._text\:teal-85{color:#163733!important;color:var(--color--teal-85)!important}._color\:teal-90,._text\:teal-90{color:#0f2422!important;color:var(--color--teal-90)!important}._color\:teal-95,._text\:teal-95{color:#071211!important;color:var(--color--teal-95)!important}._color\:blue-05,._text\:blue-05{color:#e4f6fb!important;color:var(--color--blue-05)!important}._color\:blue-10,._text\:blue-10{color:#c9ecf8!important;color:var(--color--blue-10)!important}._color\:blue-15,._text\:blue-15{color:#aee3f4!important;color:var(--color--blue-15)!important}._color\:blue-20,._text\:blue-20{color:#93d9f1!important;color:var(--color--blue-20)!important}._color\:blue-25,._text\:blue-25{color:#78d0ed!important;color:var(--color--blue-25)!important}._color\:blue-30,._text\:blue-30{color:#5dc7ea!important;color:var(--color--blue-30)!important}._color\:blue-35,._text\:blue-35{color:#41bde6!important;color:var(--color--blue-35)!important}._color\:blue-40,._text\:blue-40{color:#26b4e3!important;color:var(--color--blue-40)!important}._color\:blue-45,._text\:blue-45{color:#1a9fcb!important;color:var(--color--blue-45)!important}._color\:blue-50,._text\:blue-50{color:#178ab0!important;color:var(--color--blue-50)!important}._color\:blue-55,._text\:blue-55{color:#157c9e!important;color:var(--color--blue-55)!important}._color\:blue-60,._text\:blue-60{color:#137190!important;color:var(--color--blue-60)!important}._color\:blue-65,._text\:blue-65{color:#10637e!important;color:var(--color--blue-65)!important}._color\:blue-70,._text\:blue-70{color:#0e556c!important;color:var(--color--blue-70)!important}._color\:blue-75,._text\:blue-75{color:#0c475a!important;color:var(--color--blue-75)!important}._color\:blue-80,._text\:blue-80{color:#093948!important;color:var(--color--blue-80)!important}._color\:blue-85,._text\:blue-85{color:#072a36!important;color:var(--color--blue-85)!important}._color\:blue-90,._text\:blue-90{color:#051c24!important;color:var(--color--blue-90)!important}._color\:blue-95,._text\:blue-95{color:#020e12!important;color:var(--color--blue-95)!important}._color\:purple-05,._text\:purple-05{color:#f1eef6!important;color:var(--color--purple-05)!important}._color\:purple-10,._text\:purple-10{color:#e6e1ef!important;color:var(--color--purple-10)!important}._color\:purple-15,._text\:purple-15{color:#d8d1e6!important;color:var(--color--purple-15)!important}._color\:purple-20,._text\:purple-20{color:#cdc3df!important;color:var(--color--purple-20)!important}._color\:purple-25,._text\:purple-25{color:#c0b3d6!important;color:var(--color--purple-25)!important}._color\:purple-30,._text\:purple-30{color:#b5a5cf!important;color:var(--color--purple-30)!important}._color\:purple-35,._text\:purple-35{color:#a795c6!important;color:var(--color--purple-35)!important}._color\:purple-40,._text\:purple-40{color:#9c88bf!important;color:var(--color--purple-40)!important}._color\:purple-45,._text\:purple-45{color:#8e77b6!important;color:var(--color--purple-45)!important}._color\:purple-50,._text\:purple-50{color:#836aaf!important;color:var(--color--purple-50)!important}._color\:purple-55,._text\:purple-55{color:#7357a2!important;color:var(--color--purple-55)!important}._color\:purple-60,._text\:purple-60{color:#674f92!important;color:var(--color--purple-60)!important}._color\:purple-65,._text\:purple-65{color:#59447e!important;color:var(--color--purple-65)!important}._color\:purple-70,._text\:purple-70{color:#4d3b6d!important;color:var(--color--purple-70)!important}._color\:purple-75,._text\:purple-75{color:#3f305a!important;color:var(--color--purple-75)!important}._color\:purple-80,._text\:purple-80{color:#342749!important;color:var(--color--purple-80)!important}._color\:purple-85,._text\:purple-85{color:#261d35!important;color:var(--color--purple-85)!important}._color\:purple-90,._text\:purple-90{color:#1a1424!important;color:var(--color--purple-90)!important}._color\:purple-95,._text\:purple-95{color:#0c0911!important;color:var(--color--purple-95)!important}._color\:pink-05,._text\:pink-05{color:#fff0f2!important;color:var(--color--pink-05)!important}._color\:pink-10,._text\:pink-10{color:#fee6ea!important;color:var(--color--pink-10)!important}._color\:pink-15,._text\:pink-15{color:#fed7dd!important;color:var(--color--pink-15)!important}._color\:pink-20,._text\:pink-20{color:#fec8d0!important;color:var(--color--pink-20)!important}._color\:pink-25,._text\:pink-25{color:#feb9c3!important;color:var(--color--pink-25)!important}._color\:pink-30,._text\:pink-30{color:#fdafbb!important;color:var(--color--pink-30)!important}._color\:pink-35,._text\:pink-35{color:#fda0ae!important;color:var(--color--pink-35)!important}._color\:pink-40,._text\:pink-40{color:#fd91a1!important;color:var(--color--pink-40)!important}._color\:pink-45,._text\:pink-45{color:#fc8294!important;color:var(--color--pink-45)!important}._color\:pink-50,._text\:pink-50{color:#fc788c!important;color:var(--color--pink-50)!important}._color\:pink-55,._text\:pink-55{color:#fb506a!important;color:var(--color--pink-55)!important}._color\:pink-60,._text\:pink-60{color:#fb2d4c!important;color:var(--color--pink-60)!important}._color\:pink-65,._text\:pink-65{color:#fa0a2e!important;color:var(--color--pink-65)!important}._color\:pink-70,._text\:pink-70{color:#dc0425!important;color:var(--color--pink-70)!important}._color\:pink-75,._text\:pink-75{color:#b4041e!important;color:var(--color--pink-75)!important}._color\:pink-80,._text\:pink-80{color:#910318!important;color:var(--color--pink-80)!important}._color\:pink-85,._text\:pink-85{color:#6e0212!important;color:var(--color--pink-85)!important}._color\:pink-90,._text\:pink-90{color:#4b020d!important;color:var(--color--pink-90)!important}._color\:pink-95,._text\:pink-95{color:#230106!important;color:var(--color--pink-95)!important}._color\:gray-05,._text\:gray-05{color:#f4f5f6!important;color:var(--color--gray-05)!important}._color\:gray-10,._text\:gray-10{color:#e8eced!important;color:var(--color--gray-10)!important}._color\:gray-15,._text\:gray-15{color:#dde2e4!important;color:var(--color--gray-15)!important}._color\:gray-20,._text\:gray-20{color:#d2d9db!important;color:var(--color--gray-20)!important}._color\:gray-25,._text\:gray-25{color:#c6cfd2!important;color:var(--color--gray-25)!important}._color\:gray-30,._text\:gray-30{color:#bbc5c9!important;color:var(--color--gray-30)!important}._color\:gray-35,._text\:gray-35{color:#b0bcbf!important;color:var(--color--gray-35)!important}._color\:gray-40,._text\:gray-40{color:#a4b2b6!important;color:var(--color--gray-40)!important}._color\:gray-45,._text\:gray-45{color:#99a9ad!important;color:var(--color--gray-45)!important}._color\:gray-50,._text\:gray-50{color:#8e9fa4!important;color:var(--color--gray-50)!important}._color\:gray-55,._text\:gray-55{color:#7d9197!important;color:var(--color--gray-55)!important}._color\:gray-60,._text\:gray-60{color:#6d8288!important;color:var(--color--gray-60)!important}._color\:gray-65,._text\:gray-65{color:#5f7177!important;color:var(--color--gray-65)!important}._color\:gray-70,._text\:gray-70{color:#526166!important;color:var(--color--gray-70)!important}._color\:gray-75,._text\:gray-75{color:#445155!important;color:var(--color--gray-75)!important}._color\:gray-80,._text\:gray-80{color:#364144!important;color:var(--color--gray-80)!important}._color\:gray-85,._text\:gray-85{color:#293133!important;color:var(--color--gray-85)!important}._color\:gray-90,._text\:gray-90{color:#1b2022!important;color:var(--color--gray-90)!important}._color\:gray-95,._text\:gray-95{color:#0e1011!important;color:var(--color--gray-95)!important}._color\:light-25,._text\:light-25{color:#eef1f1!important;color:var(--color--light-25)!important}._color\:light-30,._text\:light-30{color:#ebeeef!important;color:var(--color--light-30)!important}._color\:light-35,._text\:light-35{color:#e8eced!important;color:var(--color--light-35)!important}._color\:light-40,._text\:light-40{color:#e3e7e8!important;color:var(--color--light-40)!important}._color\:light-45,._text\:light-45{color:#e0e5e6!important;color:var(--color--light-45)!important}._color\:light-50,._text\:light-50{color:#dde2e4!important;color:var(--color--light-50)!important}._color\:light-55,._text\:light-55{color:#c4cdcf!important;color:var(--color--light-55)!important}._color\:light-60,._text\:light-60{color:#aab7bb!important;color:var(--color--light-60)!important}._color\:light-65,._text\:light-65{color:#93a4a9!important;color:var(--color--light-65)!important}._color\:light-70,._text\:light-70{color:#7a8e94!important;color:var(--color--light-70)!important}._color\:light-75,._text\:light-75{color:#64777d!important;color:var(--color--light-75)!important}._color\:dark-25,._text\:dark-25{color:#9aa0a2!important;color:var(--color--dark-25)!important}._color\:dark-30,._text\:dark-30{color:#858c8e!important;color:var(--color--dark-30)!important}._color\:dark-35,._text\:dark-35{color:#737a7d!important;color:var(--color--dark-35)!important}._color\:dark-40,._text\:dark-40{color:#5f6667!important;color:var(--color--dark-40)!important}._color\:dark-45,._text\:dark-45{color:#4e5355!important;color:var(--color--dark-45)!important}._color\:dark-50,._text\:dark-50{color:#3b3f40!important;color:var(--color--dark-50)!important}._color\:dark-55,._text\:dark-55{color:#36393a!important;color:var(--color--dark-55)!important}._color\:dark-60,._text\:dark-60{color:#2f3132!important;color:var(--color--dark-60)!important}._color\:dark-65,._text\:dark-65{color:#2a2c2d!important;color:var(--color--dark-65)!important}._color\:dark-70,._text\:dark-70{color:#222425!important;color:var(--color--dark-70)!important}._color\:dark-75,._text\:dark-75{color:#1d1f20!important;color:var(--color--dark-75)!important}._color\:facebook-55,._text\:facebook-55{color:#354f88!important;color:var(--color--facebook-55)!important}._color\:facebook-60,._text\:facebook-60{color:#2f4779!important;color:var(--color--facebook-60)!important}._color\:twitter-55,._text\:twitter-55{color:#0d94e7!important;color:var(--color--twitter-55)!important}._color\:twitter-60,._text\:twitter-60{color:#0c84cf!important;color:var(--color--twitter-60)!important}._color\:google-55,._text\:google-55{color:#d63924!important;color:var(--color--google-55)!important}._color\:google-60,._text\:google-60{color:#c03321!important;color:var(--color--google-60)!important}._color\:github-55,._text\:github-55{color:#2e2e2e!important;color:var(--color--github-55)!important}._color\:github-60,._text\:github-60{color:#292929!important;color:var(--color--github-60)!important}._cursor\:pointer{cursor:pointer!important}._cursor\:default{cursor:default!important}._xs\:display\:none{display:none!important}._xs\:display\:inline{display:inline!important}._xs\:display\:inline-block{display:inline-block!important}._xs\:display\:block{display:block!important}._xs\:display\:table{display:table!important}._xs\:display\:table-cell{display:table-cell!important}._xs\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._xs\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media screen and (min-width: 576px){._sm\:display\:none{display:none!important}._sm\:display\:inline{display:inline!important}._sm\:display\:inline-block{display:inline-block!important}._sm\:display\:block{display:block!important}._sm\:display\:table{display:table!important}._sm\:display\:table-cell{display:table-cell!important}._sm\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._sm\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 768px){._md\:display\:none{display:none!important}._md\:display\:inline{display:inline!important}._md\:display\:inline-block{display:inline-block!important}._md\:display\:block{display:block!important}._md\:display\:table{display:table!important}._md\:display\:table-cell{display:table-cell!important}._md\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._md\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 992px){._lg\:display\:none{display:none!important}._lg\:display\:inline{display:inline!important}._lg\:display\:inline-block{display:inline-block!important}._lg\:display\:block{display:block!important}._lg\:display\:table{display:table!important}._lg\:display\:table-cell{display:table-cell!important}._lg\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._lg\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 1200px){._xl\:display\:none{display:none!important}._xl\:display\:inline{display:inline!important}._xl\:display\:inline-block{display:inline-block!important}._xl\:display\:block{display:block!important}._xl\:display\:table{display:table!important}._xl\:display\:table-cell{display:table-cell!important}._xl\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._xl\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 1400px){._xxl\:display\:none{display:none!important}._xxl\:display\:inline{display:inline!important}._xxl\:display\:inline-block{display:inline-block!important}._xxl\:display\:block{display:block!important}._xxl\:display\:table{display:table!important}._xxl\:display\:table-cell{display:table-cell!important}._xxl\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._xxl\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}._display\:none{display:none!important}._display\:inline{display:inline!important}._display\:inline-block{display:inline-block!important}._display\:block{display:block!important}._display\:table{display:table!important}._display\:table-cell{display:table-cell!important}._display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}._print\:display\:block{display:none!important}@media print{._print\:display\:block{display:block!important}}._print\:display\:inline{display:none!important}@media print{._print\:display\:inline{display:inline!important}}._print\:display\:inline-block{display:none!important}@media print{._print\:display\:inline-block{display:inline-block!important}}@media print{._print\:display\:none{display:none!important}}[class^=_embed]{position:relative;display:block;width:100%;padding:0;overflow:hidden}[class^=_embed]:before{display:block;content:""}[class^=_embed]>._embed-item,[class^=_embed] iframe,[class^=_embed] embed,[class^=_embed] object,[class^=_embed] video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:none}._embed\:21\:9:before{padding-top:42.8571428571%}._embed\:16\:9:before{padding-top:56.25%}._embed\:4\:3:before{padding-top:75%}._embed\:1\:1:before{padding-top:100%}._xs\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._xs\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._xs\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._xs\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._xs\:flex\:wrap,._xs\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._xs\:flex\:nowrap,._xs\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._xs\:flex\:wrap-reverse,._xs\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._xs\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._xs\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._xs\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._xs\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._xs\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._xs\:justify-content\:start,._xs\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._xs\:justify-content\:end,._xs\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._xs\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._xs\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._xs\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._xs\:align-items\:start,._xs\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._xs\:align-items\:end,._xs\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._xs\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._xs\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._xs\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._xs\:align-content\:start,._xs\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._xs\:align-content\:end,._xs\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._xs\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._xs\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._xs\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._xs\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._xs\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._xs\:align-self\:start,._xs\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._xs\:align-self\:end,._xs\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._xs\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._xs\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._xs\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._xs\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._xs\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._xs\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._xs\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._xs\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._xs\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._xs\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._xs\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._xs\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._xs\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._xs\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._xs\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._xs\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._xs\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._xs\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}@media screen and (min-width: 576px){._sm\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._sm\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._sm\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._sm\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._sm\:flex\:wrap,._sm\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._sm\:flex\:nowrap,._sm\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._sm\:flex\:wrap-reverse,._sm\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._sm\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._sm\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._sm\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._sm\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._sm\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._sm\:justify-content\:start,._sm\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._sm\:justify-content\:end,._sm\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._sm\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._sm\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._sm\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._sm\:align-items\:start,._sm\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._sm\:align-items\:end,._sm\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._sm\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._sm\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._sm\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._sm\:align-content\:start,._sm\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._sm\:align-content\:end,._sm\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._sm\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._sm\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._sm\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._sm\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._sm\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._sm\:align-self\:start,._sm\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._sm\:align-self\:end,._sm\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._sm\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._sm\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._sm\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._sm\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._sm\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._sm\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._sm\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._sm\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._sm\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._sm\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._sm\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._sm\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._sm\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._sm\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._sm\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._sm\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._sm\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._sm\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}}@media screen and (min-width: 768px){._md\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._md\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._md\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._md\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._md\:flex\:wrap,._md\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._md\:flex\:nowrap,._md\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._md\:flex\:wrap-reverse,._md\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._md\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._md\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._md\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._md\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._md\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._md\:justify-content\:start,._md\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._md\:justify-content\:end,._md\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._md\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._md\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._md\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._md\:align-items\:start,._md\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._md\:align-items\:end,._md\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._md\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._md\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._md\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._md\:align-content\:start,._md\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._md\:align-content\:end,._md\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._md\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._md\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._md\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._md\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._md\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._md\:align-self\:start,._md\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._md\:align-self\:end,._md\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._md\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._md\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._md\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._md\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._md\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._md\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._md\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._md\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._md\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._md\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._md\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._md\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._md\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._md\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._md\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._md\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._md\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._md\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}}@media screen and (min-width: 992px){._lg\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._lg\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._lg\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._lg\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._lg\:flex\:wrap,._lg\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._lg\:flex\:nowrap,._lg\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._lg\:flex\:wrap-reverse,._lg\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._lg\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._lg\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._lg\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._lg\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._lg\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._lg\:justify-content\:start,._lg\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._lg\:justify-content\:end,._lg\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._lg\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._lg\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._lg\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._lg\:align-items\:start,._lg\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._lg\:align-items\:end,._lg\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._lg\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._lg\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._lg\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._lg\:align-content\:start,._lg\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._lg\:align-content\:end,._lg\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._lg\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._lg\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._lg\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._lg\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._lg\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._lg\:align-self\:start,._lg\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._lg\:align-self\:end,._lg\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._lg\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._lg\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._lg\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._lg\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._lg\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._lg\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._lg\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._lg\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._lg\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._lg\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._lg\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._lg\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._lg\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._lg\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._lg\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._lg\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._lg\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._lg\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}}@media screen and (min-width: 1200px){._xl\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._xl\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._xl\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._xl\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._xl\:flex\:wrap,._xl\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._xl\:flex\:nowrap,._xl\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._xl\:flex\:wrap-reverse,._xl\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._xl\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._xl\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._xl\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._xl\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._xl\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._xl\:justify-content\:start,._xl\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._xl\:justify-content\:end,._xl\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._xl\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._xl\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._xl\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._xl\:align-items\:start,._xl\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._xl\:align-items\:end,._xl\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._xl\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._xl\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._xl\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._xl\:align-content\:start,._xl\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._xl\:align-content\:end,._xl\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._xl\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._xl\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._xl\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._xl\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._xl\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._xl\:align-self\:start,._xl\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._xl\:align-self\:end,._xl\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._xl\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._xl\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._xl\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._xl\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._xl\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._xl\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._xl\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._xl\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._xl\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._xl\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._xl\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._xl\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._xl\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._xl\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._xl\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._xl\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._xl\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._xl\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}}@media screen and (min-width: 1400px){._xxl\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._xxl\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._xxl\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._xxl\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._xxl\:flex\:wrap,._xxl\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._xxl\:flex\:nowrap,._xxl\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._xxl\:flex\:wrap-reverse,._xxl\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._xxl\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._xxl\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._xxl\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._xxl\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._xxl\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._xxl\:justify-content\:start,._xxl\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._xxl\:justify-content\:end,._xxl\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._xxl\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._xxl\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._xxl\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._xxl\:align-items\:start,._xxl\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._xxl\:align-items\:end,._xxl\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._xxl\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._xxl\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._xxl\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._xxl\:align-content\:start,._xxl\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._xxl\:align-content\:end,._xxl\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._xxl\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._xxl\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._xxl\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._xxl\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._xxl\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._xxl\:align-self\:start,._xxl\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._xxl\:align-self\:end,._xxl\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._xxl\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._xxl\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._xxl\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._xxl\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._xxl\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._xxl\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._xxl\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._xxl\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._xxl\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._xxl\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._xxl\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._xxl\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._xxl\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._xxl\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._xxl\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._xxl\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._xxl\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._xxl\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}}._flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._flex\:wrap,._flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._flex\:nowrap,._flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._flex\:wrap-reverse,._flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._justify-content\:start,._justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._justify-content\:end,._justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._align-items\:start,._align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._align-items\:end,._align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._align-content\:start,._align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._align-content\:end,._align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._align-self\:start,._align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._align-self\:end,._align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}._xs\:float\:left{float:left!important}._xs\:float\:right{float:right!important}._xs\:float\:none{float:none!important}@media screen and (min-width: 576px){._sm\:float\:left{float:left!important}._sm\:float\:right{float:right!important}._sm\:float\:none{float:none!important}}@media screen and (min-width: 768px){._md\:float\:left{float:left!important}._md\:float\:right{float:right!important}._md\:float\:none{float:none!important}}@media screen and (min-width: 992px){._lg\:float\:left{float:left!important}._lg\:float\:right{float:right!important}._lg\:float\:none{float:none!important}}@media screen and (min-width: 1200px){._xl\:float\:left{float:left!important}._xl\:float\:right{float:right!important}._xl\:float\:none{float:none!important}}@media screen and (min-width: 1400px){._xxl\:float\:left{float:left!important}._xxl\:float\:right{float:right!important}._xxl\:float\:none{float:none!important}}._float\:left{float:left!important}._float\:right{float:right!important}._float\:none{float:none!important}._overflow\:auto{overflow:auto!important}._overflow\:hidden{overflow:hidden!important}._overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}._overlay-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:""}._position\:static{position:static!important}._position\:relative{position:relative!important}._position\:absolute{position:absolute!important}._position\:fixed{position:fixed!important}._position\:sticky{position:sticky!important}._position\:fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030;z-index:var(--z-index--fixed)}._position\:fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030;z-index:var(--z-index--fixed)}@supports (position: sticky){._position\:sticky-top{position:sticky;top:0;z-index:1020;z-index:var(--z-index--sticky)}}._width\:0\%{width:0%!important;width:var(--size-percentage--0)!important}._height\:0\%{height:0%!important;height:var(--size-percentage--0)!important}._width\:25\%{width:25%!important;width:var(--size-percentage--25)!important}._height\:25\%{height:25%!important;height:var(--size-percentage--25)!important}._width\:50\%{width:50%!important;width:var(--size-percentage--50)!important}._height\:50\%{height:50%!important;height:var(--size-percentage--50)!important}._width\:75\%{width:75%!important;width:var(--size-percentage--75)!important}._height\:75\%{height:75%!important;height:var(--size-percentage--75)!important}._width\:100\%{width:100%!important;width:var(--size-percentage--100)!important}._height\:100\%{height:100%!important;height:var(--size-percentage--100)!important}._max-height\:100\%{max-height:100%!important}._max-width\:100\%{max-width:100%!important}._width\:100vw{width:100vw!important}._height\:100vh{height:100vh!important}._max-width\:100vw{max-width:100vw!important}._max-height\:100vh{max-height:100vh!important}._xs\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._xs\:margin-top\:1\/2,._xs\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._xs\:margin-right\:1\/2,._xs\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._xs\:margin-bottom\:1\/2,._xs\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._xs\:margin-left\:1\/2,._xs\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._xs\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._xs\:margin-top\:1\/3,._xs\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._xs\:margin-right\:1\/3,._xs\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._xs\:margin-bottom\:1\/3,._xs\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._xs\:margin-left\:1\/3,._xs\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._xs\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._xs\:margin-top\:2\/3,._xs\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._xs\:margin-right\:2\/3,._xs\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._xs\:margin-bottom\:2\/3,._xs\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._xs\:margin-left\:2\/3,._xs\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._xs\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._xs\:margin-top\:1\/4,._xs\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._xs\:margin-right\:1\/4,._xs\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._xs\:margin-bottom\:1\/4,._xs\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._xs\:margin-left\:1\/4,._xs\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._xs\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._xs\:margin-top\:3\/4,._xs\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._xs\:margin-right\:3\/4,._xs\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._xs\:margin-bottom\:3\/4,._xs\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._xs\:margin-left\:3\/4,._xs\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._xs\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._xs\:margin-top\:0,._xs\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._xs\:margin-right\:0,._xs\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._xs\:margin-bottom\:0,._xs\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._xs\:margin-left\:0,._xs\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._xs\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._xs\:margin-top\:1,._xs\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._xs\:margin-right\:1,._xs\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._xs\:margin-bottom\:1,._xs\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._xs\:margin-left\:1,._xs\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._xs\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._xs\:margin-top\:2,._xs\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._xs\:margin-right\:2,._xs\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._xs\:margin-bottom\:2,._xs\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._xs\:margin-left\:2,._xs\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._xs\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._xs\:margin-top\:3,._xs\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._xs\:margin-right\:3,._xs\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._xs\:margin-bottom\:3,._xs\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._xs\:margin-left\:3,._xs\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._xs\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._xs\:margin-top\:4,._xs\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._xs\:margin-right\:4,._xs\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._xs\:margin-bottom\:4,._xs\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._xs\:margin-left\:4,._xs\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._xs\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._xs\:margin-top\:5,._xs\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._xs\:margin-right\:5,._xs\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._xs\:margin-bottom\:5,._xs\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._xs\:margin-left\:5,._xs\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._xs\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._xs\:margin-top\:6,._xs\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._xs\:margin-right\:6,._xs\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._xs\:margin-bottom\:6,._xs\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._xs\:margin-left\:6,._xs\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._xs\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._xs\:margin-top\:7,._xs\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._xs\:margin-right\:7,._xs\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._xs\:margin-bottom\:7,._xs\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._xs\:margin-left\:7,._xs\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._xs\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._xs\:margin-top\:8,._xs\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._xs\:margin-right\:8,._xs\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._xs\:margin-bottom\:8,._xs\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._xs\:margin-left\:8,._xs\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._xs\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._xs\:padding-top\:1\/2,._xs\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._xs\:padding-right\:1\/2,._xs\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._xs\:padding-bottom\:1\/2,._xs\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._xs\:padding-left\:1\/2,._xs\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._xs\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._xs\:padding-top\:1\/3,._xs\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._xs\:padding-right\:1\/3,._xs\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._xs\:padding-bottom\:1\/3,._xs\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._xs\:padding-left\:1\/3,._xs\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._xs\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._xs\:padding-top\:2\/3,._xs\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._xs\:padding-right\:2\/3,._xs\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._xs\:padding-bottom\:2\/3,._xs\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._xs\:padding-left\:2\/3,._xs\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._xs\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._xs\:padding-top\:1\/4,._xs\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._xs\:padding-right\:1\/4,._xs\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._xs\:padding-bottom\:1\/4,._xs\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._xs\:padding-left\:1\/4,._xs\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._xs\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._xs\:padding-top\:3\/4,._xs\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._xs\:padding-right\:3\/4,._xs\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._xs\:padding-bottom\:3\/4,._xs\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._xs\:padding-left\:3\/4,._xs\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._xs\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._xs\:padding-top\:0,._xs\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._xs\:padding-right\:0,._xs\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._xs\:padding-bottom\:0,._xs\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._xs\:padding-left\:0,._xs\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._xs\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._xs\:padding-top\:1,._xs\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._xs\:padding-right\:1,._xs\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._xs\:padding-bottom\:1,._xs\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._xs\:padding-left\:1,._xs\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._xs\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._xs\:padding-top\:2,._xs\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._xs\:padding-right\:2,._xs\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._xs\:padding-bottom\:2,._xs\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._xs\:padding-left\:2,._xs\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._xs\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._xs\:padding-top\:3,._xs\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._xs\:padding-right\:3,._xs\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._xs\:padding-bottom\:3,._xs\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._xs\:padding-left\:3,._xs\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._xs\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._xs\:padding-top\:4,._xs\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._xs\:padding-right\:4,._xs\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._xs\:padding-bottom\:4,._xs\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._xs\:padding-left\:4,._xs\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._xs\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._xs\:padding-top\:5,._xs\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._xs\:padding-right\:5,._xs\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._xs\:padding-bottom\:5,._xs\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._xs\:padding-left\:5,._xs\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._xs\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._xs\:padding-top\:6,._xs\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._xs\:padding-right\:6,._xs\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._xs\:padding-bottom\:6,._xs\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._xs\:padding-left\:6,._xs\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._xs\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._xs\:padding-top\:7,._xs\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._xs\:padding-right\:7,._xs\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._xs\:padding-bottom\:7,._xs\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._xs\:padding-left\:7,._xs\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._xs\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._xs\:padding-top\:8,._xs\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._xs\:padding-right\:8,._xs\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._xs\:padding-bottom\:8,._xs\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._xs\:padding-left\:8,._xs\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._xs\:margin\:auto{margin:auto!important}._xs\:margin-top\:auto,._xs\:margin-y\:auto{margin-top:auto!important}._xs\:margin-right\:auto,._xs\:margin-x\:auto{margin-right:auto!important}._xs\:margin-bottom\:auto,._xs\:margin-y\:auto{margin-bottom:auto!important}._xs\:margin-left\:auto,._xs\:margin-x\:auto{margin-left:auto!important}@media screen and (min-width: 576px){._sm\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._sm\:margin-top\:1\/2,._sm\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._sm\:margin-right\:1\/2,._sm\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._sm\:margin-bottom\:1\/2,._sm\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._sm\:margin-left\:1\/2,._sm\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._sm\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._sm\:margin-top\:1\/3,._sm\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._sm\:margin-right\:1\/3,._sm\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._sm\:margin-bottom\:1\/3,._sm\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._sm\:margin-left\:1\/3,._sm\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._sm\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._sm\:margin-top\:2\/3,._sm\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._sm\:margin-right\:2\/3,._sm\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._sm\:margin-bottom\:2\/3,._sm\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._sm\:margin-left\:2\/3,._sm\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._sm\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._sm\:margin-top\:1\/4,._sm\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._sm\:margin-right\:1\/4,._sm\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._sm\:margin-bottom\:1\/4,._sm\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._sm\:margin-left\:1\/4,._sm\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._sm\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._sm\:margin-top\:3\/4,._sm\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._sm\:margin-right\:3\/4,._sm\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._sm\:margin-bottom\:3\/4,._sm\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._sm\:margin-left\:3\/4,._sm\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._sm\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._sm\:margin-top\:0,._sm\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._sm\:margin-right\:0,._sm\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._sm\:margin-bottom\:0,._sm\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._sm\:margin-left\:0,._sm\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._sm\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._sm\:margin-top\:1,._sm\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._sm\:margin-right\:1,._sm\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._sm\:margin-bottom\:1,._sm\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._sm\:margin-left\:1,._sm\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._sm\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._sm\:margin-top\:2,._sm\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._sm\:margin-right\:2,._sm\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._sm\:margin-bottom\:2,._sm\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._sm\:margin-left\:2,._sm\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._sm\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._sm\:margin-top\:3,._sm\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._sm\:margin-right\:3,._sm\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._sm\:margin-bottom\:3,._sm\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._sm\:margin-left\:3,._sm\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._sm\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._sm\:margin-top\:4,._sm\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._sm\:margin-right\:4,._sm\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._sm\:margin-bottom\:4,._sm\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._sm\:margin-left\:4,._sm\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._sm\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._sm\:margin-top\:5,._sm\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._sm\:margin-right\:5,._sm\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._sm\:margin-bottom\:5,._sm\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._sm\:margin-left\:5,._sm\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._sm\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._sm\:margin-top\:6,._sm\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._sm\:margin-right\:6,._sm\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._sm\:margin-bottom\:6,._sm\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._sm\:margin-left\:6,._sm\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._sm\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._sm\:margin-top\:7,._sm\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._sm\:margin-right\:7,._sm\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._sm\:margin-bottom\:7,._sm\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._sm\:margin-left\:7,._sm\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._sm\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._sm\:margin-top\:8,._sm\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._sm\:margin-right\:8,._sm\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._sm\:margin-bottom\:8,._sm\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._sm\:margin-left\:8,._sm\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._sm\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._sm\:padding-top\:1\/2,._sm\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._sm\:padding-right\:1\/2,._sm\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._sm\:padding-bottom\:1\/2,._sm\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._sm\:padding-left\:1\/2,._sm\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._sm\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._sm\:padding-top\:1\/3,._sm\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._sm\:padding-right\:1\/3,._sm\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._sm\:padding-bottom\:1\/3,._sm\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._sm\:padding-left\:1\/3,._sm\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._sm\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._sm\:padding-top\:2\/3,._sm\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._sm\:padding-right\:2\/3,._sm\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._sm\:padding-bottom\:2\/3,._sm\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._sm\:padding-left\:2\/3,._sm\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._sm\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._sm\:padding-top\:1\/4,._sm\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._sm\:padding-right\:1\/4,._sm\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._sm\:padding-bottom\:1\/4,._sm\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._sm\:padding-left\:1\/4,._sm\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._sm\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._sm\:padding-top\:3\/4,._sm\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._sm\:padding-right\:3\/4,._sm\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._sm\:padding-bottom\:3\/4,._sm\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._sm\:padding-left\:3\/4,._sm\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._sm\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._sm\:padding-top\:0,._sm\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._sm\:padding-right\:0,._sm\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._sm\:padding-bottom\:0,._sm\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._sm\:padding-left\:0,._sm\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._sm\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._sm\:padding-top\:1,._sm\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._sm\:padding-right\:1,._sm\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._sm\:padding-bottom\:1,._sm\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._sm\:padding-left\:1,._sm\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._sm\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._sm\:padding-top\:2,._sm\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._sm\:padding-right\:2,._sm\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._sm\:padding-bottom\:2,._sm\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._sm\:padding-left\:2,._sm\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._sm\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._sm\:padding-top\:3,._sm\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._sm\:padding-right\:3,._sm\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._sm\:padding-bottom\:3,._sm\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._sm\:padding-left\:3,._sm\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._sm\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._sm\:padding-top\:4,._sm\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._sm\:padding-right\:4,._sm\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._sm\:padding-bottom\:4,._sm\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._sm\:padding-left\:4,._sm\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._sm\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._sm\:padding-top\:5,._sm\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._sm\:padding-right\:5,._sm\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._sm\:padding-bottom\:5,._sm\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._sm\:padding-left\:5,._sm\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._sm\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._sm\:padding-top\:6,._sm\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._sm\:padding-right\:6,._sm\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._sm\:padding-bottom\:6,._sm\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._sm\:padding-left\:6,._sm\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._sm\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._sm\:padding-top\:7,._sm\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._sm\:padding-right\:7,._sm\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._sm\:padding-bottom\:7,._sm\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._sm\:padding-left\:7,._sm\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._sm\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._sm\:padding-top\:8,._sm\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._sm\:padding-right\:8,._sm\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._sm\:padding-bottom\:8,._sm\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._sm\:padding-left\:8,._sm\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._sm\:margin\:auto{margin:auto!important}._sm\:margin-top\:auto,._sm\:margin-y\:auto{margin-top:auto!important}._sm\:margin-right\:auto,._sm\:margin-x\:auto{margin-right:auto!important}._sm\:margin-bottom\:auto,._sm\:margin-y\:auto{margin-bottom:auto!important}._sm\:margin-left\:auto,._sm\:margin-x\:auto{margin-left:auto!important}}@media screen and (min-width: 768px){._md\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._md\:margin-top\:1\/2,._md\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._md\:margin-right\:1\/2,._md\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._md\:margin-bottom\:1\/2,._md\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._md\:margin-left\:1\/2,._md\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._md\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._md\:margin-top\:1\/3,._md\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._md\:margin-right\:1\/3,._md\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._md\:margin-bottom\:1\/3,._md\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._md\:margin-left\:1\/3,._md\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._md\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._md\:margin-top\:2\/3,._md\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._md\:margin-right\:2\/3,._md\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._md\:margin-bottom\:2\/3,._md\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._md\:margin-left\:2\/3,._md\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._md\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._md\:margin-top\:1\/4,._md\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._md\:margin-right\:1\/4,._md\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._md\:margin-bottom\:1\/4,._md\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._md\:margin-left\:1\/4,._md\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._md\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._md\:margin-top\:3\/4,._md\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._md\:margin-right\:3\/4,._md\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._md\:margin-bottom\:3\/4,._md\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._md\:margin-left\:3\/4,._md\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._md\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._md\:margin-top\:0,._md\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._md\:margin-right\:0,._md\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._md\:margin-bottom\:0,._md\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._md\:margin-left\:0,._md\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._md\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._md\:margin-top\:1,._md\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._md\:margin-right\:1,._md\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._md\:margin-bottom\:1,._md\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._md\:margin-left\:1,._md\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._md\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._md\:margin-top\:2,._md\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._md\:margin-right\:2,._md\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._md\:margin-bottom\:2,._md\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._md\:margin-left\:2,._md\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._md\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._md\:margin-top\:3,._md\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._md\:margin-right\:3,._md\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._md\:margin-bottom\:3,._md\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._md\:margin-left\:3,._md\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._md\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._md\:margin-top\:4,._md\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._md\:margin-right\:4,._md\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._md\:margin-bottom\:4,._md\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._md\:margin-left\:4,._md\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._md\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._md\:margin-top\:5,._md\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._md\:margin-right\:5,._md\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._md\:margin-bottom\:5,._md\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._md\:margin-left\:5,._md\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._md\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._md\:margin-top\:6,._md\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._md\:margin-right\:6,._md\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._md\:margin-bottom\:6,._md\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._md\:margin-left\:6,._md\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._md\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._md\:margin-top\:7,._md\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._md\:margin-right\:7,._md\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._md\:margin-bottom\:7,._md\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._md\:margin-left\:7,._md\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._md\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._md\:margin-top\:8,._md\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._md\:margin-right\:8,._md\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._md\:margin-bottom\:8,._md\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._md\:margin-left\:8,._md\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._md\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._md\:padding-top\:1\/2,._md\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._md\:padding-right\:1\/2,._md\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._md\:padding-bottom\:1\/2,._md\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._md\:padding-left\:1\/2,._md\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._md\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._md\:padding-top\:1\/3,._md\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._md\:padding-right\:1\/3,._md\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._md\:padding-bottom\:1\/3,._md\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._md\:padding-left\:1\/3,._md\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._md\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._md\:padding-top\:2\/3,._md\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._md\:padding-right\:2\/3,._md\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._md\:padding-bottom\:2\/3,._md\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._md\:padding-left\:2\/3,._md\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._md\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._md\:padding-top\:1\/4,._md\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._md\:padding-right\:1\/4,._md\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._md\:padding-bottom\:1\/4,._md\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._md\:padding-left\:1\/4,._md\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._md\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._md\:padding-top\:3\/4,._md\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._md\:padding-right\:3\/4,._md\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._md\:padding-bottom\:3\/4,._md\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._md\:padding-left\:3\/4,._md\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._md\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._md\:padding-top\:0,._md\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._md\:padding-right\:0,._md\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._md\:padding-bottom\:0,._md\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._md\:padding-left\:0,._md\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._md\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._md\:padding-top\:1,._md\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._md\:padding-right\:1,._md\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._md\:padding-bottom\:1,._md\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._md\:padding-left\:1,._md\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._md\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._md\:padding-top\:2,._md\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._md\:padding-right\:2,._md\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._md\:padding-bottom\:2,._md\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._md\:padding-left\:2,._md\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._md\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._md\:padding-top\:3,._md\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._md\:padding-right\:3,._md\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._md\:padding-bottom\:3,._md\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._md\:padding-left\:3,._md\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._md\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._md\:padding-top\:4,._md\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._md\:padding-right\:4,._md\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._md\:padding-bottom\:4,._md\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._md\:padding-left\:4,._md\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._md\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._md\:padding-top\:5,._md\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._md\:padding-right\:5,._md\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._md\:padding-bottom\:5,._md\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._md\:padding-left\:5,._md\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._md\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._md\:padding-top\:6,._md\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._md\:padding-right\:6,._md\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._md\:padding-bottom\:6,._md\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._md\:padding-left\:6,._md\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._md\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._md\:padding-top\:7,._md\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._md\:padding-right\:7,._md\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._md\:padding-bottom\:7,._md\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._md\:padding-left\:7,._md\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._md\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._md\:padding-top\:8,._md\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._md\:padding-right\:8,._md\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._md\:padding-bottom\:8,._md\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._md\:padding-left\:8,._md\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._md\:margin\:auto{margin:auto!important}._md\:margin-top\:auto,._md\:margin-y\:auto{margin-top:auto!important}._md\:margin-right\:auto,._md\:margin-x\:auto{margin-right:auto!important}._md\:margin-bottom\:auto,._md\:margin-y\:auto{margin-bottom:auto!important}._md\:margin-left\:auto,._md\:margin-x\:auto{margin-left:auto!important}}@media screen and (min-width: 992px){._lg\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._lg\:margin-top\:1\/2,._lg\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._lg\:margin-right\:1\/2,._lg\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._lg\:margin-bottom\:1\/2,._lg\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._lg\:margin-left\:1\/2,._lg\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._lg\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._lg\:margin-top\:1\/3,._lg\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._lg\:margin-right\:1\/3,._lg\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._lg\:margin-bottom\:1\/3,._lg\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._lg\:margin-left\:1\/3,._lg\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._lg\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._lg\:margin-top\:2\/3,._lg\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._lg\:margin-right\:2\/3,._lg\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._lg\:margin-bottom\:2\/3,._lg\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._lg\:margin-left\:2\/3,._lg\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._lg\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._lg\:margin-top\:1\/4,._lg\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._lg\:margin-right\:1\/4,._lg\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._lg\:margin-bottom\:1\/4,._lg\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._lg\:margin-left\:1\/4,._lg\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._lg\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._lg\:margin-top\:3\/4,._lg\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._lg\:margin-right\:3\/4,._lg\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._lg\:margin-bottom\:3\/4,._lg\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._lg\:margin-left\:3\/4,._lg\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._lg\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._lg\:margin-top\:0,._lg\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._lg\:margin-right\:0,._lg\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._lg\:margin-bottom\:0,._lg\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._lg\:margin-left\:0,._lg\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._lg\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._lg\:margin-top\:1,._lg\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._lg\:margin-right\:1,._lg\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._lg\:margin-bottom\:1,._lg\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._lg\:margin-left\:1,._lg\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._lg\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._lg\:margin-top\:2,._lg\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._lg\:margin-right\:2,._lg\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._lg\:margin-bottom\:2,._lg\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._lg\:margin-left\:2,._lg\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._lg\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._lg\:margin-top\:3,._lg\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._lg\:margin-right\:3,._lg\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._lg\:margin-bottom\:3,._lg\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._lg\:margin-left\:3,._lg\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._lg\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._lg\:margin-top\:4,._lg\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._lg\:margin-right\:4,._lg\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._lg\:margin-bottom\:4,._lg\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._lg\:margin-left\:4,._lg\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._lg\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._lg\:margin-top\:5,._lg\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._lg\:margin-right\:5,._lg\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._lg\:margin-bottom\:5,._lg\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._lg\:margin-left\:5,._lg\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._lg\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._lg\:margin-top\:6,._lg\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._lg\:margin-right\:6,._lg\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._lg\:margin-bottom\:6,._lg\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._lg\:margin-left\:6,._lg\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._lg\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._lg\:margin-top\:7,._lg\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._lg\:margin-right\:7,._lg\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._lg\:margin-bottom\:7,._lg\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._lg\:margin-left\:7,._lg\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._lg\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._lg\:margin-top\:8,._lg\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._lg\:margin-right\:8,._lg\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._lg\:margin-bottom\:8,._lg\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._lg\:margin-left\:8,._lg\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._lg\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._lg\:padding-top\:1\/2,._lg\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._lg\:padding-right\:1\/2,._lg\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._lg\:padding-bottom\:1\/2,._lg\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._lg\:padding-left\:1\/2,._lg\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._lg\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._lg\:padding-top\:1\/3,._lg\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._lg\:padding-right\:1\/3,._lg\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._lg\:padding-bottom\:1\/3,._lg\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._lg\:padding-left\:1\/3,._lg\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._lg\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._lg\:padding-top\:2\/3,._lg\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._lg\:padding-right\:2\/3,._lg\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._lg\:padding-bottom\:2\/3,._lg\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._lg\:padding-left\:2\/3,._lg\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._lg\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._lg\:padding-top\:1\/4,._lg\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._lg\:padding-right\:1\/4,._lg\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._lg\:padding-bottom\:1\/4,._lg\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._lg\:padding-left\:1\/4,._lg\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._lg\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._lg\:padding-top\:3\/4,._lg\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._lg\:padding-right\:3\/4,._lg\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._lg\:padding-bottom\:3\/4,._lg\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._lg\:padding-left\:3\/4,._lg\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._lg\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._lg\:padding-top\:0,._lg\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._lg\:padding-right\:0,._lg\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._lg\:padding-bottom\:0,._lg\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._lg\:padding-left\:0,._lg\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._lg\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._lg\:padding-top\:1,._lg\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._lg\:padding-right\:1,._lg\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._lg\:padding-bottom\:1,._lg\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._lg\:padding-left\:1,._lg\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._lg\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._lg\:padding-top\:2,._lg\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._lg\:padding-right\:2,._lg\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._lg\:padding-bottom\:2,._lg\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._lg\:padding-left\:2,._lg\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._lg\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._lg\:padding-top\:3,._lg\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._lg\:padding-right\:3,._lg\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._lg\:padding-bottom\:3,._lg\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._lg\:padding-left\:3,._lg\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._lg\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._lg\:padding-top\:4,._lg\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._lg\:padding-right\:4,._lg\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._lg\:padding-bottom\:4,._lg\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._lg\:padding-left\:4,._lg\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._lg\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._lg\:padding-top\:5,._lg\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._lg\:padding-right\:5,._lg\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._lg\:padding-bottom\:5,._lg\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._lg\:padding-left\:5,._lg\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._lg\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._lg\:padding-top\:6,._lg\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._lg\:padding-right\:6,._lg\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._lg\:padding-bottom\:6,._lg\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._lg\:padding-left\:6,._lg\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._lg\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._lg\:padding-top\:7,._lg\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._lg\:padding-right\:7,._lg\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._lg\:padding-bottom\:7,._lg\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._lg\:padding-left\:7,._lg\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._lg\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._lg\:padding-top\:8,._lg\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._lg\:padding-right\:8,._lg\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._lg\:padding-bottom\:8,._lg\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._lg\:padding-left\:8,._lg\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._lg\:margin\:auto{margin:auto!important}._lg\:margin-top\:auto,._lg\:margin-y\:auto{margin-top:auto!important}._lg\:margin-right\:auto,._lg\:margin-x\:auto{margin-right:auto!important}._lg\:margin-bottom\:auto,._lg\:margin-y\:auto{margin-bottom:auto!important}._lg\:margin-left\:auto,._lg\:margin-x\:auto{margin-left:auto!important}}@media screen and (min-width: 1200px){._xl\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._xl\:margin-top\:1\/2,._xl\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._xl\:margin-right\:1\/2,._xl\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._xl\:margin-bottom\:1\/2,._xl\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._xl\:margin-left\:1\/2,._xl\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._xl\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._xl\:margin-top\:1\/3,._xl\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._xl\:margin-right\:1\/3,._xl\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._xl\:margin-bottom\:1\/3,._xl\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._xl\:margin-left\:1\/3,._xl\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._xl\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._xl\:margin-top\:2\/3,._xl\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._xl\:margin-right\:2\/3,._xl\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._xl\:margin-bottom\:2\/3,._xl\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._xl\:margin-left\:2\/3,._xl\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._xl\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._xl\:margin-top\:1\/4,._xl\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._xl\:margin-right\:1\/4,._xl\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._xl\:margin-bottom\:1\/4,._xl\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._xl\:margin-left\:1\/4,._xl\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._xl\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._xl\:margin-top\:3\/4,._xl\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._xl\:margin-right\:3\/4,._xl\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._xl\:margin-bottom\:3\/4,._xl\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._xl\:margin-left\:3\/4,._xl\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._xl\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._xl\:margin-top\:0,._xl\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._xl\:margin-right\:0,._xl\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._xl\:margin-bottom\:0,._xl\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._xl\:margin-left\:0,._xl\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._xl\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._xl\:margin-top\:1,._xl\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._xl\:margin-right\:1,._xl\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._xl\:margin-bottom\:1,._xl\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._xl\:margin-left\:1,._xl\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._xl\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._xl\:margin-top\:2,._xl\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._xl\:margin-right\:2,._xl\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._xl\:margin-bottom\:2,._xl\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._xl\:margin-left\:2,._xl\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._xl\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._xl\:margin-top\:3,._xl\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._xl\:margin-right\:3,._xl\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._xl\:margin-bottom\:3,._xl\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._xl\:margin-left\:3,._xl\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._xl\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._xl\:margin-top\:4,._xl\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._xl\:margin-right\:4,._xl\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._xl\:margin-bottom\:4,._xl\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._xl\:margin-left\:4,._xl\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._xl\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._xl\:margin-top\:5,._xl\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._xl\:margin-right\:5,._xl\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._xl\:margin-bottom\:5,._xl\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._xl\:margin-left\:5,._xl\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._xl\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._xl\:margin-top\:6,._xl\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._xl\:margin-right\:6,._xl\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._xl\:margin-bottom\:6,._xl\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._xl\:margin-left\:6,._xl\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._xl\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._xl\:margin-top\:7,._xl\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._xl\:margin-right\:7,._xl\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._xl\:margin-bottom\:7,._xl\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._xl\:margin-left\:7,._xl\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._xl\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._xl\:margin-top\:8,._xl\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._xl\:margin-right\:8,._xl\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._xl\:margin-bottom\:8,._xl\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._xl\:margin-left\:8,._xl\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._xl\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._xl\:padding-top\:1\/2,._xl\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._xl\:padding-right\:1\/2,._xl\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._xl\:padding-bottom\:1\/2,._xl\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._xl\:padding-left\:1\/2,._xl\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._xl\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._xl\:padding-top\:1\/3,._xl\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._xl\:padding-right\:1\/3,._xl\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._xl\:padding-bottom\:1\/3,._xl\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._xl\:padding-left\:1\/3,._xl\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._xl\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._xl\:padding-top\:2\/3,._xl\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._xl\:padding-right\:2\/3,._xl\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._xl\:padding-bottom\:2\/3,._xl\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._xl\:padding-left\:2\/3,._xl\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._xl\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._xl\:padding-top\:1\/4,._xl\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._xl\:padding-right\:1\/4,._xl\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._xl\:padding-bottom\:1\/4,._xl\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._xl\:padding-left\:1\/4,._xl\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._xl\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._xl\:padding-top\:3\/4,._xl\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._xl\:padding-right\:3\/4,._xl\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._xl\:padding-bottom\:3\/4,._xl\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._xl\:padding-left\:3\/4,._xl\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._xl\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._xl\:padding-top\:0,._xl\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._xl\:padding-right\:0,._xl\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._xl\:padding-bottom\:0,._xl\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._xl\:padding-left\:0,._xl\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._xl\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._xl\:padding-top\:1,._xl\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._xl\:padding-right\:1,._xl\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._xl\:padding-bottom\:1,._xl\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._xl\:padding-left\:1,._xl\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._xl\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._xl\:padding-top\:2,._xl\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._xl\:padding-right\:2,._xl\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._xl\:padding-bottom\:2,._xl\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._xl\:padding-left\:2,._xl\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._xl\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._xl\:padding-top\:3,._xl\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._xl\:padding-right\:3,._xl\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._xl\:padding-bottom\:3,._xl\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._xl\:padding-left\:3,._xl\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._xl\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._xl\:padding-top\:4,._xl\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._xl\:padding-right\:4,._xl\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._xl\:padding-bottom\:4,._xl\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._xl\:padding-left\:4,._xl\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._xl\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._xl\:padding-top\:5,._xl\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._xl\:padding-right\:5,._xl\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._xl\:padding-bottom\:5,._xl\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._xl\:padding-left\:5,._xl\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._xl\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._xl\:padding-top\:6,._xl\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._xl\:padding-right\:6,._xl\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._xl\:padding-bottom\:6,._xl\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._xl\:padding-left\:6,._xl\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._xl\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._xl\:padding-top\:7,._xl\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._xl\:padding-right\:7,._xl\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._xl\:padding-bottom\:7,._xl\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._xl\:padding-left\:7,._xl\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._xl\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._xl\:padding-top\:8,._xl\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._xl\:padding-right\:8,._xl\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._xl\:padding-bottom\:8,._xl\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._xl\:padding-left\:8,._xl\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._xl\:margin\:auto{margin:auto!important}._xl\:margin-top\:auto,._xl\:margin-y\:auto{margin-top:auto!important}._xl\:margin-right\:auto,._xl\:margin-x\:auto{margin-right:auto!important}._xl\:margin-bottom\:auto,._xl\:margin-y\:auto{margin-bottom:auto!important}._xl\:margin-left\:auto,._xl\:margin-x\:auto{margin-left:auto!important}}@media screen and (min-width: 1400px){._xxl\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._xxl\:margin-top\:1\/2,._xxl\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._xxl\:margin-right\:1\/2,._xxl\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._xxl\:margin-bottom\:1\/2,._xxl\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._xxl\:margin-left\:1\/2,._xxl\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._xxl\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._xxl\:margin-top\:1\/3,._xxl\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._xxl\:margin-right\:1\/3,._xxl\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._xxl\:margin-bottom\:1\/3,._xxl\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._xxl\:margin-left\:1\/3,._xxl\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._xxl\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._xxl\:margin-top\:2\/3,._xxl\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._xxl\:margin-right\:2\/3,._xxl\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._xxl\:margin-bottom\:2\/3,._xxl\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._xxl\:margin-left\:2\/3,._xxl\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._xxl\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._xxl\:margin-top\:1\/4,._xxl\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._xxl\:margin-right\:1\/4,._xxl\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._xxl\:margin-bottom\:1\/4,._xxl\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._xxl\:margin-left\:1\/4,._xxl\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._xxl\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._xxl\:margin-top\:3\/4,._xxl\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._xxl\:margin-right\:3\/4,._xxl\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._xxl\:margin-bottom\:3\/4,._xxl\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._xxl\:margin-left\:3\/4,._xxl\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._xxl\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._xxl\:margin-top\:0,._xxl\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._xxl\:margin-right\:0,._xxl\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._xxl\:margin-bottom\:0,._xxl\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._xxl\:margin-left\:0,._xxl\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._xxl\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._xxl\:margin-top\:1,._xxl\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._xxl\:margin-right\:1,._xxl\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._xxl\:margin-bottom\:1,._xxl\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._xxl\:margin-left\:1,._xxl\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._xxl\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._xxl\:margin-top\:2,._xxl\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._xxl\:margin-right\:2,._xxl\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._xxl\:margin-bottom\:2,._xxl\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._xxl\:margin-left\:2,._xxl\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._xxl\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._xxl\:margin-top\:3,._xxl\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._xxl\:margin-right\:3,._xxl\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._xxl\:margin-bottom\:3,._xxl\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._xxl\:margin-left\:3,._xxl\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._xxl\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._xxl\:margin-top\:4,._xxl\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._xxl\:margin-right\:4,._xxl\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._xxl\:margin-bottom\:4,._xxl\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._xxl\:margin-left\:4,._xxl\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._xxl\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._xxl\:margin-top\:5,._xxl\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._xxl\:margin-right\:5,._xxl\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._xxl\:margin-bottom\:5,._xxl\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._xxl\:margin-left\:5,._xxl\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._xxl\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._xxl\:margin-top\:6,._xxl\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._xxl\:margin-right\:6,._xxl\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._xxl\:margin-bottom\:6,._xxl\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._xxl\:margin-left\:6,._xxl\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._xxl\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._xxl\:margin-top\:7,._xxl\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._xxl\:margin-right\:7,._xxl\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._xxl\:margin-bottom\:7,._xxl\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._xxl\:margin-left\:7,._xxl\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._xxl\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._xxl\:margin-top\:8,._xxl\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._xxl\:margin-right\:8,._xxl\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._xxl\:margin-bottom\:8,._xxl\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._xxl\:margin-left\:8,._xxl\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._xxl\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._xxl\:padding-top\:1\/2,._xxl\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._xxl\:padding-right\:1\/2,._xxl\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._xxl\:padding-bottom\:1\/2,._xxl\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._xxl\:padding-left\:1\/2,._xxl\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._xxl\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._xxl\:padding-top\:1\/3,._xxl\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._xxl\:padding-right\:1\/3,._xxl\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._xxl\:padding-bottom\:1\/3,._xxl\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._xxl\:padding-left\:1\/3,._xxl\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._xxl\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._xxl\:padding-top\:2\/3,._xxl\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._xxl\:padding-right\:2\/3,._xxl\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._xxl\:padding-bottom\:2\/3,._xxl\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._xxl\:padding-left\:2\/3,._xxl\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._xxl\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._xxl\:padding-top\:1\/4,._xxl\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._xxl\:padding-right\:1\/4,._xxl\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._xxl\:padding-bottom\:1\/4,._xxl\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._xxl\:padding-left\:1\/4,._xxl\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._xxl\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._xxl\:padding-top\:3\/4,._xxl\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._xxl\:padding-right\:3\/4,._xxl\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._xxl\:padding-bottom\:3\/4,._xxl\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._xxl\:padding-left\:3\/4,._xxl\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._xxl\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._xxl\:padding-top\:0,._xxl\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._xxl\:padding-right\:0,._xxl\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._xxl\:padding-bottom\:0,._xxl\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._xxl\:padding-left\:0,._xxl\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._xxl\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._xxl\:padding-top\:1,._xxl\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._xxl\:padding-right\:1,._xxl\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._xxl\:padding-bottom\:1,._xxl\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._xxl\:padding-left\:1,._xxl\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._xxl\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._xxl\:padding-top\:2,._xxl\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._xxl\:padding-right\:2,._xxl\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._xxl\:padding-bottom\:2,._xxl\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._xxl\:padding-left\:2,._xxl\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._xxl\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._xxl\:padding-top\:3,._xxl\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._xxl\:padding-right\:3,._xxl\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._xxl\:padding-bottom\:3,._xxl\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._xxl\:padding-left\:3,._xxl\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._xxl\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._xxl\:padding-top\:4,._xxl\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._xxl\:padding-right\:4,._xxl\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._xxl\:padding-bottom\:4,._xxl\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._xxl\:padding-left\:4,._xxl\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._xxl\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._xxl\:padding-top\:5,._xxl\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._xxl\:padding-right\:5,._xxl\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._xxl\:padding-bottom\:5,._xxl\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._xxl\:padding-left\:5,._xxl\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._xxl\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._xxl\:padding-top\:6,._xxl\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._xxl\:padding-right\:6,._xxl\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._xxl\:padding-bottom\:6,._xxl\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._xxl\:padding-left\:6,._xxl\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._xxl\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._xxl\:padding-top\:7,._xxl\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._xxl\:padding-right\:7,._xxl\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._xxl\:padding-bottom\:7,._xxl\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._xxl\:padding-left\:7,._xxl\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._xxl\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._xxl\:padding-top\:8,._xxl\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._xxl\:padding-right\:8,._xxl\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._xxl\:padding-bottom\:8,._xxl\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._xxl\:padding-left\:8,._xxl\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._xxl\:margin\:auto{margin:auto!important}._xxl\:margin-top\:auto,._xxl\:margin-y\:auto{margin-top:auto!important}._xxl\:margin-right\:auto,._xxl\:margin-x\:auto{margin-right:auto!important}._xxl\:margin-bottom\:auto,._xxl\:margin-y\:auto{margin-bottom:auto!important}._xxl\:margin-left\:auto,._xxl\:margin-x\:auto{margin-left:auto!important}}._margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._margin-top\:1\/2,._margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._margin-right\:1\/2,._margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._margin-bottom\:1\/2,._margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._margin-left\:1\/2,._margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._margin-top\:1\/3,._margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._margin-right\:1\/3,._margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._margin-bottom\:1\/3,._margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._margin-left\:1\/3,._margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._margin-top\:2\/3,._margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._margin-right\:2\/3,._margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._margin-bottom\:2\/3,._margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._margin-left\:2\/3,._margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._margin-top\:1\/4,._margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._margin-right\:1\/4,._margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._margin-bottom\:1\/4,._margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._margin-left\:1\/4,._margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._margin-top\:3\/4,._margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._margin-right\:3\/4,._margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._margin-bottom\:3\/4,._margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._margin-left\:3\/4,._margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._margin-top\:0,._margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._margin-right\:0,._margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._margin-bottom\:0,._margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._margin-left\:0,._margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._margin\:1{margin:1rem!important;margin:var(--spacing)!important}._margin-top\:1,._margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._margin-right\:1,._margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._margin-bottom\:1,._margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._margin-left\:1,._margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._margin-top\:2,._margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._margin-right\:2,._margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._margin-bottom\:2,._margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._margin-left\:2,._margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._margin-top\:3,._margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._margin-right\:3,._margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._margin-bottom\:3,._margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._margin-left\:3,._margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._margin-top\:4,._margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._margin-right\:4,._margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._margin-bottom\:4,._margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._margin-left\:4,._margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._margin-top\:5,._margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._margin-right\:5,._margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._margin-bottom\:5,._margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._margin-left\:5,._margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._margin-top\:6,._margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._margin-right\:6,._margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._margin-bottom\:6,._margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._margin-left\:6,._margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._margin-top\:7,._margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._margin-right\:7,._margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._margin-bottom\:7,._margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._margin-left\:7,._margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._margin-top\:8,._margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._margin-right\:8,._margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._margin-bottom\:8,._margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._margin-left\:8,._margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._padding-top\:1\/2,._padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._padding-right\:1\/2,._padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._padding-bottom\:1\/2,._padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._padding-left\:1\/2,._padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._padding-top\:1\/3,._padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._padding-right\:1\/3,._padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._padding-bottom\:1\/3,._padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._padding-left\:1\/3,._padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._padding-top\:2\/3,._padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._padding-right\:2\/3,._padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._padding-bottom\:2\/3,._padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._padding-left\:2\/3,._padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._padding-top\:1\/4,._padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._padding-right\:1\/4,._padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._padding-bottom\:1\/4,._padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._padding-left\:1\/4,._padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._padding-top\:3\/4,._padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._padding-right\:3\/4,._padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._padding-bottom\:3\/4,._padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._padding-left\:3\/4,._padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._padding-top\:0,._padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._padding-right\:0,._padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._padding-bottom\:0,._padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._padding-left\:0,._padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._padding\:1{padding:1rem!important;padding:var(--spacing)!important}._padding-top\:1,._padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._padding-right\:1,._padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._padding-bottom\:1,._padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._padding-left\:1,._padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._padding-top\:2,._padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._padding-right\:2,._padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._padding-bottom\:2,._padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._padding-left\:2,._padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._padding-top\:3,._padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._padding-right\:3,._padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._padding-bottom\:3,._padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._padding-left\:3,._padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._padding-top\:4,._padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._padding-right\:4,._padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._padding-bottom\:4,._padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._padding-left\:4,._padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._padding-top\:5,._padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._padding-right\:5,._padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._padding-bottom\:5,._padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._padding-left\:5,._padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._padding-top\:6,._padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._padding-right\:6,._padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._padding-bottom\:6,._padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._padding-left\:6,._padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._padding-top\:7,._padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._padding-right\:7,._padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._padding-bottom\:7,._padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._padding-left\:7,._padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._padding-top\:8,._padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._padding-right\:8,._padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._padding-bottom\:8,._padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._padding-left\:8,._padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._margin\:auto{margin:auto!important}._margin-top\:auto,._margin-y\:auto{margin-top:auto!important}._margin-right\:auto,._margin-x\:auto{margin-right:auto!important}._margin-bottom\:auto,._margin-y\:auto{margin-bottom:auto!important}._margin-left\:auto,._margin-x\:auto{margin-left:auto!important}._xs\:text\:left,._xs\:text-align\:left{text-align:left!important}._xs\:text\:right,._xs\:text-align\:right{text-align:right!important}._xs\:text\:center,._xs\:text-align\:center{text-align:center!important}._xs\:text\:wrap,._xs\:white-space\:normal{white-space:normal!important}._xs\:text\:nowrap,._xs\:white-space\:nowrap{white-space:nowrap!important}._xs\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media screen and (min-width: 576px){._sm\:text\:left,._sm\:text-align\:left{text-align:left!important}._sm\:text\:right,._sm\:text-align\:right{text-align:right!important}._sm\:text\:center,._sm\:text-align\:center{text-align:center!important}._sm\:text\:wrap,._sm\:white-space\:normal{white-space:normal!important}._sm\:text\:nowrap,._sm\:white-space\:nowrap{white-space:nowrap!important}._sm\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width: 768px){._md\:text\:left,._md\:text-align\:left{text-align:left!important}._md\:text\:right,._md\:text-align\:right{text-align:right!important}._md\:text\:center,._md\:text-align\:center{text-align:center!important}._md\:text\:wrap,._md\:white-space\:normal{white-space:normal!important}._md\:text\:nowrap,._md\:white-space\:nowrap{white-space:nowrap!important}._md\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width: 992px){._lg\:text\:left,._lg\:text-align\:left{text-align:left!important}._lg\:text\:right,._lg\:text-align\:right{text-align:right!important}._lg\:text\:center,._lg\:text-align\:center{text-align:center!important}._lg\:text\:wrap,._lg\:white-space\:normal{white-space:normal!important}._lg\:text\:nowrap,._lg\:white-space\:nowrap{white-space:nowrap!important}._lg\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width: 1200px){._xl\:text\:left,._xl\:text-align\:left{text-align:left!important}._xl\:text\:right,._xl\:text-align\:right{text-align:right!important}._xl\:text\:center,._xl\:text-align\:center{text-align:center!important}._xl\:text\:wrap,._xl\:white-space\:normal{white-space:normal!important}._xl\:text\:nowrap,._xl\:white-space\:nowrap{white-space:nowrap!important}._xl\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width: 1400px){._xxl\:text\:left,._xxl\:text-align\:left{text-align:left!important}._xxl\:text\:right,._xxl\:text-align\:right{text-align:right!important}._xxl\:text\:center,._xxl\:text-align\:center{text-align:center!important}._xxl\:text\:wrap,._xxl\:white-space\:normal{white-space:normal!important}._xxl\:text\:nowrap,._xxl\:white-space\:nowrap{white-space:nowrap!important}._xxl\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}._text\:left,._text-align\:left{text-align:left!important}._text\:right,._text-align\:right{text-align:right!important}._text\:center,._text-align\:center{text-align:center!important}._text\:wrap,._white-space\:normal{white-space:normal!important}._text\:nowrap,._white-space\:nowrap{white-space:nowrap!important}._text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._text\:justify,._text-align\:justify{text-align:justify!important}._text\:lowercase,._text-transform\:lowercase{text-transform:lowercase!important}._text\:uppercase,._text-transform\:uppercase{text-transform:uppercase!important}._text\:capitalize,._text-transform\:capitalize{text-transform:capitalize!important}._text\:extralight,._font-weight\:extralight{font-weight:200!important;font-weight:var(--font-weight--extralight)!important}._text\:light,._font-weight\:light{font-weight:300!important;font-weight:var(--font-weight--light)!important}._text\:lighter,._font-weight\:lighter{font-weight:lighter!important;font-weight:var(--font-weight--lighter)!important}._text\:normal,._font-weight\:normal{font-weight:400!important;font-weight:var(--font-weight--normal)!important}._text\:semibold,._font-weight\:semibold{font-weight:600!important;font-weight:var(--font-weight--semibold)!important}._text\:bold,._font-weight\:bold{font-weight:700!important;font-weight:var(--font-weight--bold)!important}._text\:bolder,._font-weight\:bolder{font-weight:bolder!important;font-weight:var(--font-weight--bolder)!important}._text\:black,._font-weight\:black{font-weight:900!important;font-weight:var(--font-weight--black)!important}._text\:italic,._font-style\:italic{font-style:italic!important}._text\:monospace,._font-family\:monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace)}._text\:muted,._color-muted{color:#6d8288!important;color:var(--text-muted)!important}._text\:hide{text-indent:-10000px}._text\:break-word{word-break:break-word!important;word-wrap:break-word!important}._text\:reset{color:inherit!important}._text-decoration\:none{-webkit-text-decoration:none!important;text-decoration:none!important}._text\:xs,._font-size\:xs{font-size:calc(1rem * (1 / (1.2 * 1.2)));font-size:calc(1rem * calc(1 / 1.44));font-size:var(--font-size--xs)}._text\:sm,._font-size\:sm{font-size:calc(1rem * (1 / 1.2));font-size:calc(1rem * calc(1 / 1.2));font-size:var(--font-size--sm)}._text\:md,._font-size\:md{font-size:1rem;font-size:var(--font-size--md)}._text\:lg,._font-size\:lg{font-size:1.2rem;font-size:var(--font-size--lg)}._text\:xl,._font-size\:xl{font-size:1.44rem;font-size:var(--font-size--xl)}[class*="_xs:visible"]{display:none!important}._xs\:visible,._xs\:visible\:block{display:block!important}._xs\:visible\:inline-block{display:inline-block!important}._xs\:visible\:inline{display:inline!important}._xs\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._xs\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}._xs\:hidden,[class*="_sm:visible"]{display:none!important}@media screen and (min-width: 576px){._sm\:visible{display:block!important}}@media screen and (min-width: 576px){._sm\:visible\:block{display:block!important}}@media screen and (min-width: 576px){._sm\:visible\:inline-block{display:inline-block!important}}@media screen and (min-width: 576px){._sm\:visible\:inline{display:inline!important}}@media screen and (min-width: 576px){._sm\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}}@media screen and (min-width: 576px){._sm\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 576px){._sm\:hidden{display:none!important}}[class*="_md:visible"]{display:none!important}@media screen and (min-width: 768px){._md\:visible{display:block!important}}@media screen and (min-width: 768px){._md\:visible\:block{display:block!important}}@media screen and (min-width: 768px){._md\:visible\:inline-block{display:inline-block!important}}@media screen and (min-width: 768px){._md\:visible\:inline{display:inline!important}}@media screen and (min-width: 768px){._md\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}}@media screen and (min-width: 768px){._md\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 768px){._md\:hidden{display:none!important}}[class*="_lg:visible"]{display:none!important}@media screen and (min-width: 992px){._lg\:visible{display:block!important}}@media screen and (min-width: 992px){._lg\:visible\:block{display:block!important}}@media screen and (min-width: 992px){._lg\:visible\:inline-block{display:inline-block!important}}@media screen and (min-width: 992px){._lg\:visible\:inline{display:inline!important}}@media screen and (min-width: 992px){._lg\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}}@media screen and (min-width: 992px){._lg\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 992px){._lg\:hidden{display:none!important}}[class*="_xl:visible"]{display:none!important}@media screen and (min-width: 1200px){._xl\:visible{display:block!important}}@media screen and (min-width: 1200px){._xl\:visible\:block{display:block!important}}@media screen and (min-width: 1200px){._xl\:visible\:inline-block{display:inline-block!important}}@media screen and (min-width: 1200px){._xl\:visible\:inline{display:inline!important}}@media screen and (min-width: 1200px){._xl\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}}@media screen and (min-width: 1200px){._xl\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 1200px){._xl\:hidden{display:none!important}}[class*="_xxl:visible"]{display:none!important}@media screen and (min-width: 1400px){._xxl\:visible{display:block!important}}@media screen and (min-width: 1400px){._xxl\:visible\:block{display:block!important}}@media screen and (min-width: 1400px){._xxl\:visible\:inline-block{display:inline-block!important}}@media screen and (min-width: 1400px){._xxl\:visible\:inline{display:inline!important}}@media screen and (min-width: 1400px){._xxl\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}}@media screen and (min-width: 1400px){._xxl\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 1400px){._xxl\:hidden{display:none!important}}[class*=_visible]{display:none!important}._visible,._visible\:block{display:block!important}._visible\:inline-block{display:inline-block!important}._visible\:inline{display:inline!important}._visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}._hidden{display:none!important}._visibility\:visible{visibility:visible!important}._visibility\:hidden{visibility:hidden!important}*,*:before,*:after{-webkit-box-sizing:border-box;box-sizing:border-box}html{-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-overflow-style:scrollbar}body{margin:0;color:#364144;color:var(--body--color);background-color:#fff;background-color:var(--body--background)}body.inkline{-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing)}body.inkline.-dark{--border-color: var(--border-color--dark);--body--color: var(--body--color--dark);--body--background: var(--body--background--dark)}@-ms-viewport{width:device-width}article,aside,footer,header,nav,section,figcaption,figure,main{display:block}figure{margin:0 0 1rem}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}a{color:#178bb2;color:var(--link--color);text-decoration:none;-webkit-text-decoration:var(--link--decoration);text-decoration:var(--link--decoration);-webkit-text-decoration-skip:objects;background-color:transparent}a:hover,a:focus,a:active{color:#26b4e3;color:var(--link--color--hover);text-decoration:underline;-webkit-text-decoration:var(--link--decoration--hover);text-decoration:var(--link--decoration--hover);outline-width:0}a:not([href]):not([tabindex]){color:inherit;-webkit-text-decoration:none;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;-webkit-text-decoration:none;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;-webkit-text-decoration:underline dotted;cursor:help;border-bottom:0}ol,ul,dl{margin-top:0;margin-bottom:1rem;margin-bottom:var(--spacing)}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700;font-weight:var(--font-weight--bold)}dd{margin-bottom:.5rem;margin-bottom:calc(var(--spacing) * 1 / 2);margin-left:0}address{margin-bottom:1rem;margin-bottom:var(--spacing);font-style:normal;line-height:inherit}b,strong{font-weight:inherit;font-weight:bolder}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace);font-size:1rem}dfn{font-style:italic}small{font-size:80%}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none;vertical-align:middle}svg:not(:root){overflow:hidden}progress{display:inline-block;vertical-align:baseline}details,menu{display:block}summary{display:list-item}output{display:inline-block}canvas{display:inline-block}template{display:none}[hidden]{display:none!important}pre{margin-top:0;margin-bottom:1rem;margin-bottom:var(--spacing);overflow:auto}table{border-collapse:collapse}caption{text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}fieldset{min-width:0;padding:0;margin:0;border:none}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;margin-bottom:calc(var(--spacing) * 1 / 2);font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}label{display:inline-block;margin-bottom:.5rem;margin-bottom:calc(var(--spacing) * 1 / 2)}textarea{overflow:auto;resize:vertical}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace);padding:.15rem .4rem;padding:var(--code--padding);font-size:90%;font-size:var(--code--font-size);color:#bd4147;color:var(--code--color);background-color:#e8eced;background-color:var(--code--background);border-radius:.25rem;border-radius:var(--border-radius-md);-webkit-transition-property:background-color,color,text-shadow;transition-property:background-color,color,text-shadow;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing)}a>code{padding:0;color:inherit;background-color:inherit}.inkline.-dark code{background-color:#364144;background-color:var(--code--background--dark);color:#ff6d6b;color:var(--code--color--dark)}kbd{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace);padding:.15rem .4rem;padding:var(--kbd--padding);font-size:90%;font-size:var(--kbd--font-size);color:#fff;color:var(--kbd--color);background-color:#1b2022;background-color:var(--kbd--background);border-radius:calc(.25rem * (1 / 1.2)) calc(.25rem * (1 / 1.2)) calc(.25rem * (1 / 1.2)) calc(.25rem * (1 / 1.2));border-radius:calc(.25rem * calc(1 / 1.2)) calc(.25rem * calc(1 / 1.2)) calc(.25rem * calc(1 / 1.2)) calc(.25rem * calc(1 / 1.2));border-radius:var(--border-radius-sm);-webkit-box-shadow:inset 0 -.1rem 0 rgba(0,0,0,.25);box-shadow:inset 0 -.1rem #00000040;-webkit-box-shadow:var(--kbd--box-shadow);box-shadow:var(--kbd--box-shadow)}kbd kbd{padding:0;font-size:100%;font-weight:var(--kbd-nested-font-weight);-webkit-box-shadow:none;box-shadow:none}pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace);display:block;margin-top:0;margin-bottom:1rem;font-size:90%;font-size:var(--pre--font-size);color:#1b2022;color:var(--pre--color);-webkit-transition-property:background-color,color,text-shadow;transition-property:background-color,color,text-shadow;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing)}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0;-webkit-transition-property:none;transition-property:none}pre.-scrollable{max-height:340px;max-height:var(--pre--scrollable-max-height);overflow-y:scroll}.inkline.-dark pre{color:#fff;color:var(--pre--color--dark)}.inkline.-dark pre code{color:inherit;background-color:transparent}samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace)}.figure{display:inline-block}.figure>.img{margin-bottom:.5rem;margin-bottom:var(--figure--image--margin-bottom);line-height:1}.figure>.caption{font-size:90%;font-size:var(--figure--caption--font-size);color:#6d8288;color:var(--figure--caption--color)}.img.-responsive,.image.-responsive,.img.-polaroid,.image.-polaroid,.img.-thumbnail,.image.-thumbnail{max-width:100%;height:auto}.img.-polaroid,.image.-polaroid,.img.-thumbnail,.image.-thumbnail{padding:.5rem;padding:var(--thumbnail--padding);background-color:#fff;background-color:var(--thumbnail--background);border-width:1px 1px 1px 1px;border-width:var(--thumbnail--border-width);border-style:solid;border-style:var(--border-style);border-color:#a4b2b6;border-color:var(--thumbnail--border-color);border-radius:.25rem;border-radius:var(--thumbnail--border-radius);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-webkit-transition:var(--thumbnail--transition);transition:var(--thumbnail--transition);-webkit-box-shadow:0 1px 2px rgba(hsl(0deg,0%,0%),.075);box-shadow:0 1px 2px rgba(hsl(0deg,0%,0%),.075);-webkit-box-shadow:var(--thumbnail--box-shadow);box-shadow:var(--thumbnail--box-shadow)}.img.-fluid,.image.-fluid{width:100%;height:auto}.img[src$=".svg"],.image[src$=".svg"]{width:100% \	}.img.-polaroid,.image.-polaroid{padding-bottom:3rem;padding-bottom:var(--polaroid--padding)}body.-modal{overflow:hidden}@media print{*,*:before,*:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{-webkit-text-decoration:underline;text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre{white-space:pre-wrap!important}pre,blockquote{border:1px solid #999999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.expand-enter-active,.expand-leave-active{-webkit-transition-property:height;transition-property:height;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);overflow:hidden}.expand-enter-from,.expand-leave-to{height:0}:root{--fade-in-transition: all .3s cubic-bezier(.55, 0, .1, 1)}.fade-in-transition-enter-active,.fade-in-transition-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1);-webkit-transition:var(--fade-in-transition);transition:var(--fade-in-transition)}.fade-in-transition-enter-from,.fade-in-transition-leave-active{opacity:0}:root{--fade-in-linear-transition: opacity .3s cubic-bezier(.23, 1, .32, 1)}.fade-in-linear-transition-enter-active,.fade-in-linear-transition-leave-active{-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1);-webkit-transition:var(--fade-in-linear-transition);transition:var(--fade-in-linear-transition)}.fade-in-linear-transition-enter-from,.fade-in-linear-transition-leave-from,.fade-in-linear-transition-leave-active{opacity:0}:root{--slide-in-right-transition: transform .3s ease}.slide-in-right-transition-enter-active,.slide-in-right-transition-leave-active{-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;-webkit-transition:var(--slide-in-right-transition);transition:var(--slide-in-right-transition);-webkit-transform-origin:left;transform-origin:left}.slide-in-right-transition-enter-from,.slide-in-right-transition-leave-to{-webkit-transform:translateX(-100%);transform:translate(-100%)}.slide-in-right-transition-enter-to,.slide-in-right-transition-leave-from{-webkit-transform:translateX(0);transform:translate(0)}:root{--zoom-in-bottom-transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1)}.zoom-in-bottom-transition-enter-active,.zoom-in-bottom-transition-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transition:var(--zoom-in-bottom-transition);transition:var(--zoom-in-bottom-transition);-webkit-transform-origin:center bottom;transform-origin:center bottom}.zoom-in-bottom-transition-enter-from,.zoom-in-bottom-transition-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}:root{--zoom-in-center-transition: all .3s cubic-bezier(.55, 0, .1, 1)}.zoom-in-center-transition-enter-active,.zoom-in-center-transition-leave-active{opacity:1;-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1);-webkit-transition:var(--zoom-in-center-transition);transition:var(--zoom-in-center-transition);-webkit-transform-origin:center center;transform-origin:center center}.zoom-in-center-transition-enter-from,.zoom-in-center-transition-leave-active{opacity:0;-webkit-transform:scale(0,0);transform:scale(0)}:root{--zoom-in-top-transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1)}.zoom-in-top-transition-enter-active,.zoom-in-top-transition-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transition:var(--zoom-in-top-transition);transition:var(--zoom-in-top-transition);-webkit-transform-origin:center top;transform-origin:center top}.zoom-in-top-transition-enter-from,.zoom-in-top-transition-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}:root{--zoom-in-left-transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1)}.zoom-in-left-transition-enter-active,.zoom-in-left-transition-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transition:var(--zoom-in-left-transition);transition:var(--zoom-in-left-transition);-webkit-transform-origin:top left;transform-origin:top left}.zoom-in-left-transition-enter-from,.zoom-in-left-transition-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45)}:root{--zoom-in-right-transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1)}.zoom-in-right-transition-enter-active,.zoom-in-right-transition-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transition:var(--zoom-in-right-transition);transition:var(--zoom-in-right-transition);-webkit-transform-origin:top right;transform-origin:top right}.zoom-in-right-transition-enter-from,.zoom-in-right-transition-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45)}.blockquote{margin:0 0 1rem;margin:0 0 var(--blockquote--margin);font-size:1.2rem;font-size:var(--blockquote--font-size)}.blockquote.-left{text-align:left}.blockquote.-left.-bordered{padding-left:1rem;padding-left:var(--spacing);border-left:3px solid hsl(194,11%,76%);border-left:var(--blockquote--border)}.blockquote.-center{text-align:center}.blockquote.-right{text-align:right}.blockquote.-right.-bordered{padding-right:1rem;padding-right:var(--blockquote--padding--bordered);border-right:3px solid hsl(194,11%,76%);border-right:var(--blockquote--border)}.blockquote>p{margin-bottom:0}.blockquote>footer,.blockquote>.footer{display:block;font-size:80%;color:#6d8288;color:var(--blockquote--footer--color)}.blockquote>footer:before,.blockquote>.footer:before{content:"— "}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:1rem;font-size:var(--font-size--md);font-weight:400;font-weight:var(--font-weight--normal);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--font-family-primary--base);line-height:1.5;line-height:var(--line-height);letter-spacing:0;letter-spacing:var(--letter-spacing);text-align:left;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}h1,.h1,.d1{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h1,.h1{font-size:2.48832rem;font-size:var(--h1--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d1{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * (((((1.2 * 1.2) * 1.2) * 1.2) * 1.2) * 1.2));font-size:calc(2.48832rem * calc(2.48832 * 1.2));font-size:var(--d1--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}h2,.h2,.d2{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h2,.h2{font-size:2.0736rem;font-size:var(--h2--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d2{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2));font-size:calc(2.48832rem * 2.48832);font-size:var(--d2--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}h3,.h3,.d3{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h3,.h3{font-size:1.728rem;font-size:var(--h3--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d3{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * (((1.2 * 1.2) * 1.2) * 1.2));font-size:calc(2.48832rem * 2.0736);font-size:var(--d3--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}h4,.h4,.d4{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h4,.h4{font-size:1.44rem;font-size:var(--h4--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d4{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * ((1.2 * 1.2) * 1.2));font-size:calc(2.48832rem * 1.728);font-size:var(--d4--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}h5,.h5,.d5{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h5,.h5{font-size:1.2rem;font-size:var(--h5--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d5{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * (1.2 * 1.2));font-size:calc(2.48832rem * 1.44);font-size:var(--d5--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}h6,.h6,.d6{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h6,.h6{font-size:1rem;font-size:var(--h6--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d6{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * 1.2);font-size:calc(2.48832rem * 1.2);font-size:var(--d6--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}ul>.item,ul>li,ol>.item,ol>li,dl>.item,dl>li,.list>.item,.list>li{margin-bottom:.5rem;margin-bottom:var(--list--item--margin-bottom)}ul.-unstyled,ul._list\:unstyled,ol.-unstyled,ol._list\:unstyled,dl.-unstyled,dl._list\:unstyled,.list.-unstyled,.list._list\:unstyled,ul.-inline,ul._list\:inline,ol.-inline,ol._list\:inline,dl.-inline,dl._list\:inline,.list.-inline,.list._list\:inline{padding-left:0;list-style:none}ul.-inline>.item,ul.-inline>li,ul._list\:inline>.item,ul._list\:inline>li,ol.-inline>.item,ol.-inline>li,ol._list\:inline>.item,ol._list\:inline>li,dl.-inline>.item,dl.-inline>li,dl._list\:inline>.item,dl._list\:inline>li,.list.-inline>.item,.list.-inline>li,.list._list\:inline>.item,.list._list\:inline>li{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-bottom:0}ul.-inline>.item:not(:last-child),ul.-inline>li:not(:last-child),ul._list\:inline>.item:not(:last-child),ul._list\:inline>li:not(:last-child),ol.-inline>.item:not(:last-child),ol.-inline>li:not(:last-child),ol._list\:inline>.item:not(:last-child),ol._list\:inline>li:not(:last-child),dl.-inline>.item:not(:last-child),dl.-inline>li:not(:last-child),dl._list\:inline>.item:not(:last-child),dl._list\:inline>li:not(:last-child),.list.-inline>.item:not(:last-child),.list.-inline>li:not(:last-child),.list._list\:inline>.item:not(:last-child),.list._list\:inline>li:not(:last-child){margin-right:1rem;margin-right:var(--list--item--padding--inline)}hr{margin:1rem 0;margin:var(--hr--margin) 0;border:none;border-top:1px solid hsla(0deg,0%,0%,.1);border-top:var(--hr--border-width) var(--hr--border-style) var(--hr--border-color)}small,.small{font-size:calc(1rem * (1 / 1.2));font-size:calc(1rem * calc(1 / 1.2));font-size:var(--small--font-size);font-weight:400;font-weight:var(--small--font-weight)}mark,.mark{padding:.2rem .4rem;padding:var(--mark--padding);background-color:#fff8e5;background-color:var(--mark--background-color);color:#364144;color:var(--mark--color)}.lead{font-size:1.2rem;font-size:var(--lead--font-size);font-weight:300;font-weight:var(--lead--font-weight)}.initialism{font-size:90%;text-transform:uppercase}
+@charset "UTF-8";.alert{----background: var(--color--info);----border-top-color: var(--color--info-60);----border-right-color: var(--color--info-60);----border-bottom-color: var(--color--info-60);----border-left-color: var(--color--info-60);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-dark-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----code--color: var(----color);----code--background: var(--color--info-60);----dismiss--margin: var(----padding-right);----dismiss--padding: calc(var(----padding-top) / 2);----link--color: var(----color)}.alert.-info{----background: var(--color--info);----border-top-color: var(--color--info-60);----border-right-color: var(--color--info-60);----border-bottom-color: var(--color--info-60);----border-left-color: var(--color--info-60);----color: var(--contrast-color-for-dark-background);----code--background: var(--color--info-60)}.alert.-success{----background: var(--color--success);----border-top-color: var(--color--success-60);----border-right-color: var(--color--success-60);----border-bottom-color: var(--color--success-60);----border-left-color: var(--color--success-60);----color: var(--contrast-color-for-dark-background);----code--background: var(--color--success-60)}.alert.-warning{----background: var(--color--warning);----border-top-color: var(--color--warning-60);----border-right-color: var(--color--warning-60);----border-bottom-color: var(--color--warning-60);----border-left-color: var(--color--warning-60);----color: var(--contrast-color-for-light-background);----code--background: var(--color--warning-60)}.alert.-danger{----background: var(--color--danger);----border-top-color: var(--color--danger-60);----border-right-color: var(--color--danger-60);----border-bottom-color: var(--color--danger-60);----border-left-color: var(--color--danger-60);----color: var(--contrast-color-for-dark-background);----code--background: var(--color--danger-60)}.alert.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.alert.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.alert.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.alert{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;word-wrap:break-word;border-style:var(----border-style);border-width:var(----border-width);border-color:var(----border-color);border-radius:var(----border-radius);font-size:var(----font-size);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);background:var(----background);background-clip:border-box;color:var(----color);-webkit-transition-property:background-color,color,border-color;transition-property:background-color,color,border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-box-align:center;-ms-flex-align:center;align-items:center}.alert a{color:var(----link--color);font-weight:600;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:var(----transition-duration);transition-duration:var(----transition-duration);-webkit-transition-timing-function:var(----transition-easing);transition-timing-function:var(----transition-easing)}.alert a:hover,.alert a:focus{color:var(----link--color)}.alert code{background:var(----code--background);color:var(----code--color)}.alert>.title{margin-bottom:var(--spacing)}.alert>.content{padding:var(----padding)}.alert>.icon{padding-left:var(----padding-left);padding-right:var(----padding-right);border-color:var(----border-color);-webkit-box-flex:1;-ms-flex:1;flex:1}.alert>.link+.link{margin-left:var(--spacing)}.alert>.dismiss{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;cursor:pointer;display:inline-block;text-align:center;padding:var(----dismiss--padding);margin-right:var(----dismiss--margin);margin-left:var(----dismiss--margin)}.alert,.alert>.content{-webkit-box-flex:0;-ms-flex:0 1 100%;flex:0 1 100%}.alert>hr,.alert>.content>hr{margin-right:0;margin-left:0}.alert>*:first-child,.alert>.content>*:first-child{margin-top:0}.alert>*:last-child,.alert>.content>*:last-child{margin-bottom:0}.alert.-dismissible>.content{padding-right:0}.alert.-with-icon>.content{padding-left:0}.badge{----background: var(--color--light);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----color: var(--contrast-color-for-light-background);----font-size: 75%;----font-weight: var(--font-weight--bold);----line-height: var(--line-height);----padding-top: calc(var(--padding-top) / 2);----padding-right: calc(var(--padding-right) / 2);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: calc(var(--padding-left) / 2);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----link--background--hover: var(--color--light-60);----pill--border-radius: 10rem}.badge.-primary{----background: var(--color--primary);----border-top-color: var(--color--primary-55);----border-right-color: var(--color--primary-55);----border-bottom-color: var(--color--primary-55);----border-left-color: var(--color--primary-55);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--primary-60)}.badge.-secondary{----background: var(--color--secondary);----border-top-color: var(--color--secondary-55);----border-right-color: var(--color--secondary-55);----border-bottom-color: var(--color--secondary-55);----border-left-color: var(--color--secondary-55);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--secondary-60)}.badge.-light{----background: var(--color--light);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----color: var(--contrast-color-for-light-background);----link--background--hover: var(--color--light-60)}.badge.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-45);----border-right-color: var(--color--dark-45);----border-bottom-color: var(--color--dark-45);----border-left-color: var(--color--dark-45);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--dark-40)}.badge.-info{----background: var(--color--info);----border-top-color: var(--color--info-55);----border-right-color: var(--color--info-55);----border-bottom-color: var(--color--info-55);----border-left-color: var(--color--info-55);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--info-60)}.badge.-warning{----background: var(--color--warning);----border-top-color: var(--color--warning-55);----border-right-color: var(--color--warning-55);----border-bottom-color: var(--color--warning-55);----border-left-color: var(--color--warning-55);----color: var(--contrast-color-for-light-background);----link--background--hover: var(--color--warning-60)}.badge.-danger{----background: var(--color--danger);----border-top-color: var(--color--danger-55);----border-right-color: var(--color--danger-55);----border-bottom-color: var(--color--danger-55);----border-left-color: var(--color--danger-55);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--danger-60)}.badge.-success{----background: var(--color--success);----border-top-color: var(--color--success-55);----border-right-color: var(--color--success-55);----border-bottom-color: var(--color--success-55);----border-left-color: var(--color--success-55);----color: var(--contrast-color-for-dark-background);----link--background--hover: var(--color--success-60)}.badge.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(65% * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--sm))}.badge.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(75% * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--md))}.badge.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(85% * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--lg))}.badge{display:inline-block;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;background:var(----background);color:var(----color);border-style:var(----border-style);border-width:var(----border-width);border-color:var(----border-color);border-radius:var(----border-radius);font-size:var(----font-size);font-weight:var(----font-weight);padding:var(----padding);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}a:hover .badge,a:focus .badge{-webkit-text-decoration:none;text-decoration:none;----background: var(----link--background--hover)}.button .badge{position:relative;top:-1px}.badge.-pill{----border-radius: var(----pill--border-radius)}.breadcrumb{----color: var(--color--gray-90);----color--link: var(--color--primary);----color--active: var(--color--gray-70);----font-size: var(--font-size);----margin-bottom: var(--spacing);----padding-right: var(--padding-right);----padding-left: var(--padding-left)}.breadcrumb.-light{----color: var(--color--gray-90);----color--link: var(--color--primary);----color--active: var(--color--gray-70)}.breadcrumb.-dark{----color: var(--color--white);----color--link: var(--color--primary);----color--active: var(--color--gray-40)}.breadcrumb.-sm{----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.breadcrumb.-md{----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.breadcrumb.-lg{----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:var(----margin-bottom);font-size:var(----font-size)}.breadcrumb ol{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;list-style:none}.breadcrumb-item[data-v-28fa6b16]{margin-bottom:0;padding-left:var(----padding-left)}.breadcrumb-item a[data-v-28fa6b16]{color:var(----color)}.breadcrumb-item a[href][data-v-28fa6b16],.breadcrumb-item a[to][data-v-28fa6b16]{----color: var(----color--link)}.breadcrumb-item.-active a[data-v-28fa6b16]{----color: var(----color--active)}.breadcrumb-item+.breadcrumb-item[data-v-28fa6b16]:before{padding-right:var(----padding-right)}.breadcrumb-item>span[data-v-28fa6b16]{display:inline-block}.breadcrumb-item[data-v-28fa6b16]:first-child{padding-left:0}.breadcrumb-item+.breadcrumb-item[data-v-28fa6b16]:before{display:inline-block;content:"/"}.breadcrumb-item+.breadcrumb-item[data-v-28fa6b16]:hover:before{-webkit-text-decoration:underline;text-decoration:underline}.breadcrumb-item+.breadcrumb-item[data-v-28fa6b16]:hover:before{-webkit-text-decoration:none;text-decoration:none}.breadcrumb-item[data-v-28fa6b16] :not([href]):not([to]){-webkit-text-decoration:none;text-decoration:none}.breadcrumb-item [href][data-v-28fa6b16],.breadcrumb-item [to][data-v-28fa6b16]{cursor:pointer}.loader{----animation-duration: 1.2s;----size: 64px;----background: var(--color--primary)}.loader.-primary{----background: var(--color--primary)}.loader.-light{----background: var(--color--light)}.loader.-dark{----background: var(--color--dark)}.loader.-sm{----size: calc(64px * var(--size-multiplier--sm))}.loader.-md{----size: calc(64px * var(--size-multiplier--md))}.loader.-lg{----size: calc(64px * var(--size-multiplier--lg))}.loader{display:inline-block;position:relative;width:var(----size);height:var(----size)}.loader:before{content:"";display:block;padding-top:100%}.loader .loader-text,.loader>svg{position:absolute;height:100%;width:100%;top:0;left:0;right:0;bottom:0;margin:auto}.loader .loader-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.loader>svg{-webkit-animation:loader-rotate var(----animation-duration) linear infinite;animation:loader-rotate var(----animation-duration) linear infinite;-webkit-transform-origin:center center;transform-origin:center center}.loader>svg>circle{stroke:var(----background);stroke-dasharray:89,200;stroke-dashoffset:-35px;-webkit-animation:loader-dash var(----animation-duration) ease-in-out infinite;animation:loader-dash var(----animation-duration) ease-in-out infinite;stroke-linecap:round}.loader.-auto{width:100%;height:100%}@-webkit-keyframes loader-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loader-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes loader-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.button{----background: var(--color--light);----background--hover: var(--color--light-55);----background--active: var(--color--light-60);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-color--hover: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----padding-top: calc(var(--padding-top) / 2);----padding-right: var(--padding-right);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----block--margin: var(--spacing);----circle--size: 42px;----link--color: var(--color--light);----link--color--active: var(--color--light-55)}.button.-primary{----background: var(--color--primary);----background--hover: var(--color--primary-55);----background--active: var(--color--primary-60);----border-top-color: var(--color--primary-55);----border-right-color: var(--color--primary-55);----border-bottom-color: var(--color--primary-55);----border-left-color: var(--color--primary-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--primary);----link--color--active: var(--color--primary-55)}.button.-secondary{----background: var(--color--secondary);----background--hover: var(--color--secondary-55);----background--active: var(--color--secondary-60);----border-top-color: var(--color--secondary-55);----border-right-color: var(--color--secondary-55);----border-bottom-color: var(--color--secondary-55);----border-left-color: var(--color--secondary-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--secondary);----link--color--active: var(--color--secondary-55)}.button.-light{----background: var(--color--light);----background--hover: var(--color--light-55);----background--active: var(--color--light-60);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----color: var(--contrast-color-for-light-background);----link--color: var(--color--light);----link--color--active: var(--color--light-55)}.button.-dark{----background: var(--color--dark);----background--hover: var(--color--dark-45);----background--active: var(--color--dark-40);----border-top-color: var(--color--dark-45);----border-right-color: var(--color--dark-45);----border-bottom-color: var(--color--dark-45);----border-left-color: var(--color--dark-45);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--dark);----link--color--active: var(--color--dark-45)}.button.-info{----background: var(--color--info);----background--hover: var(--color--info-55);----background--active: var(--color--info-60);----border-top-color: var(--color--info-55);----border-right-color: var(--color--info-55);----border-bottom-color: var(--color--info-55);----border-left-color: var(--color--info-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--info);----link--color--active: var(--color--info-55)}.button.-success{----background: var(--color--success);----background--hover: var(--color--success-55);----background--active: var(--color--success-60);----border-top-color: var(--color--success-55);----border-right-color: var(--color--success-55);----border-bottom-color: var(--color--success-55);----border-left-color: var(--color--success-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--success);----link--color--active: var(--color--success-55)}.button.-warning{----background: var(--color--warning);----background--hover: var(--color--warning-55);----background--active: var(--color--warning-60);----border-top-color: var(--color--warning-55);----border-right-color: var(--color--warning-55);----border-bottom-color: var(--color--warning-55);----border-left-color: var(--color--warning-55);----color: var(--contrast-color-for-light-background);----link--color: var(--color--warning);----link--color--active: var(--color--warning-55)}.button.-danger{----background: var(--color--danger);----background--hover: var(--color--danger-55);----background--active: var(--color--danger-60);----border-top-color: var(--color--danger-55);----border-right-color: var(--color--danger-55);----border-bottom-color: var(--color--danger-55);----border-left-color: var(--color--danger-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--danger);----link--color--active: var(--color--danger-55)}.button.-facebook{----background: var(--color--facebook);----background--hover: var(--color--facebook-55);----background--active: var(--color--facebook-60);----border-top-color: var(--color--facebook-55);----border-right-color: var(--color--facebook-55);----border-bottom-color: var(--color--facebook-55);----border-left-color: var(--color--facebook-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--facebook);----link--color--active: var(--color--facebook-55)}.button.-google{----background: var(--color--google);----background--hover: var(--color--google-55);----background--active: var(--color--google-60);----border-top-color: var(--color--google-55);----border-right-color: var(--color--google-55);----border-bottom-color: var(--color--google-55);----border-left-color: var(--color--google-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--google);----link--color--active: var(--color--google-55)}.button.-twitter{----background: var(--color--twitter);----background--hover: var(--color--twitter-55);----background--active: var(--color--twitter-60);----border-top-color: var(--color--twitter-55);----border-right-color: var(--color--twitter-55);----border-bottom-color: var(--color--twitter-55);----border-left-color: var(--color--twitter-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--twitter);----link--color--active: var(--color--twitter-55)}.button.-github{----background: var(--color--github);----background--hover: var(--color--github-55);----background--active: var(--color--github-60);----border-top-color: var(--color--github-55);----border-right-color: var(--color--github-55);----border-bottom-color: var(--color--github-55);----border-left-color: var(--color--github-55);----color: var(--contrast-color-for-dark-background);----link--color: var(--color--github);----link--color--active: var(--color--github-55)}.button.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----circle--size: calc(34px * var(--size-multiplier--sm))}.button.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----circle--size: calc(42px * var(--size-multiplier--md))}.button.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----circle--size: calc(49px * var(--size-multiplier--lg))}.button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-weight:var(----font-weight);font-size:var(----font-size);line-height:var(----line-height);text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-style:var(----border-style);border-width:var(----border-width);border-color:var(----border-color);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);padding:var(----padding);-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----color);background:var(----background)}.button:not(:disabled):not(.-disabled){cursor:pointer}.button:not(:disabled):not(.-disabled):hover,.button:not(:disabled):not(.-disabled):focus,.button:not(:disabled):not(.-disabled).-hovered,.button:not(:disabled):not(.-disabled).-focused{----background: var(----background--hover);----border-color: var(----border-color--hover);-webkit-text-decoration:none;text-decoration:none;color:var(----color);outline:0}.button:not(:disabled):not(.-disabled):active,.button:not(:disabled):not(.-disabled).-active{----background: var(----background--active)}.button.-disabled,.button:disabled{opacity:var(----opacity--disabled);-webkit-box-shadow:none;box-shadow:none}.button.-block{display:block;width:100%}.button.-block+.button.-block{margin-left:0;margin-top:var(----block--margin)}.button.-link{----color: var(----link--color);-webkit-box-shadow:none;box-shadow:none;background-color:transparent;border-color:transparent}.button.-link:not(:disabled):not(.-disabled):hover,.button.-link:not(:disabled):not(.-disabled):focus,.button.-link:not(:disabled):not(.-disabled):active,.button.-link:not(:disabled):not(.-disabled).-hovered,.button.-link:not(:disabled):not(.-disabled).-focused,.button.-link:not(:disabled):not(.-disabled).-active{----color: var(----link--color--active);background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;-webkit-text-decoration:underline;text-decoration:underline}.button.-link:disabled,.button.-link.-disabled{pointer-events:none}.button.-outline{background:transparent;color:var(----background);border-color:var(----background);----box-shadow: none}.button.-outline:not(:disabled):not(.-disabled):hover,.button.-outline:not(:disabled):not(.-disabled):focus,.button.-outline:not(:disabled):not(.-disabled):active,.button.-outline:not(:disabled):not(.-disabled).-hovered,.button.-outline:not(:disabled):not(.-disabled).-focused,.button.-outline:not(:disabled):not(.-disabled).-active{----border-color: var(----border-color--hover);background:var(----background);color:var(----color)}.button.-circle{----border-radius: 100%;width:var(----circle--size);height:var(----circle--size);padding:0}.button .loader{margin-top:calc(var(--spacing) * 1 / 4);margin-bottom:calc(var(--spacing) * 1 / 4);width:var(----font-size);height:var(----font-size)}.button .loader>svg>circle{stroke:var(----color)!important}.button-group:not(.-vertical)>.button:not(:first-child){----border-left-color: var(----background--hover)}.button-group.-vertical>.button:not(:first-child){----border-top-color: var(----background--hover)}a.button.-disabled,*:disabled a.button{pointer-events:none}input[type=submit].-block,input[type=reset].-block,input[type=button].-block{width:100%}.button-group{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box}.button-group .button{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;z-index:0;margin-right:0;font-size:var(----font-size);padding:var(----padding)}.button-group .button:hover,.button-group .button:focus,.button-group .button:active,.button-group .button.-active{z-index:1}.button-group .button.-circle{border-radius:100%;width:var(----circle--size);height:var(----circle--size);padding:0}.button-group>.button:first-child{margin-left:0}.button-group.-block{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:100%;flex-basis:100%}.button-group.-block>.button{-ms-flex-preferred-size:100%;flex-basis:100%}.button-group>.button,.button-group>.button-group>.button,.button-group>[class$=-wrapper] .button{border-radius:0}.button-group:not(.-vertical)>.button:last-child,.button-group:not(.-vertical)>[class$=-wrapper]:last-child>*>.button:last-child{border-top-right-radius:var(----border-top-right-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.button-group:not(.-vertical)>.button:first-child,.button-group:not(.-vertical)>[class$=-wrapper]:first-child>*>.button:first-child{border-top-left-radius:var(----border-top-left-radius);border-bottom-left-radius:var(----border-bottom-left-radius)}.button-group:not(.-vertical)>.button:not(:last-child),.button-group:not(.-vertical)>.button-group:not(:last-child) .button,.button-group:not(.-vertical)>[class$=-wrapper]:not(:last-child)>*>.button,.button-group:not(.-vertical)>.button-group:not(:last-child) [class$=-wrapper]>*>.button{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.button-group:not(.-vertical)>.button:not(:first-child),.button-group:not(.-vertical)>.button-group:not(:first-child) .button,.button-group:not(.-vertical)>[class$=-wrapper]:not(:first-child)>*>.button,.button-group:not(.-vertical)>.button-group:not(:first-child) [class$=-wrapper]>*>.button{border-top-left-radius:0;border-bottom-left-radius:0}.button-group.-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.button-group.-vertical .button,.button-group.-vertical .button-group,.button-group.-vertical [class$=-wrapper]{width:100%}.button-group.-vertical>.button:last-child,.button-group.-vertical>[class$=-wrapper]:last-child>*>.button:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.button-group.-vertical>.button:first-child,.button-group.-vertical>[class$=-wrapper]:first-child>*>.button:first-child{border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.button-group.-vertical>.button:not(:last-child),.button-group.-vertical>.button-group:not(:last-child) .button,.button-group.-vertical>[class$=-wrapper]:not(:last-child)>*>.button,.button-group.-vertical>.button-group:not(:last-child) [class$=-wrapper]>*>.button{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:0}.button-group.-vertical>.button:not(:first-child),.button-group.-vertical>.button-group:not(:first-child) .button,.button-group.-vertical>[class$=-wrapper]:not(:first-child)>*>.button,.button-group.-vertical>.button-group:not(:first-child) [class$=-wrapper]>*>.button{border-top-left-radius:0;border-top-right-radius:0}.col,.column{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;min-height:1px;position:relative;padding-left:calc(var(--gutter--xs) / 2);padding-right:calc(var(--gutter--xs) / 2)}@media screen and (min-width: 576px){.col,.column{padding-left:calc(var(--gutter--sm) / 2);padding-right:calc(var(--gutter--sm) / 2)}}@media screen and (min-width: 768px){.col,.column{padding-left:calc(var(--gutter--md) / 2);padding-right:calc(var(--gutter--md) / 2)}}@media screen and (min-width: 992px){.col,.column{padding-left:calc(var(--gutter--lg) / 2);padding-right:calc(var(--gutter--lg) / 2)}}@media screen and (min-width: 1200px){.col,.column{padding-left:calc(var(--gutter--xl) / 2);padding-right:calc(var(--gutter--xl) / 2)}}@media screen and (min-width: 1400px){.col,.column{padding-left:calc(var(--gutter--xxl) / 2);padding-right:calc(var(--gutter--xxl) / 2)}}.col.-xs,.col.-xs-auto,.column.-xs,.column.-xs-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs,.column.-xs{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-xs-auto,.column.-xs-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-xs,.column.-first-xs{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-xs,.column.-last-xs{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.col.-xs-1,.column.-xs-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-1,.column.-xs-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-xs-1,.column.-offset-xs-1{margin-left:8.3333333333%}.col.-push-xs-1,.column.-push-xs-1{left:8.3333333333%}.col.-pull-xs-1,.column.-pull-xs-1{right:8.3333333333%}.col.-xs-2,.column.-xs-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-2,.column.-xs-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-xs-2,.column.-offset-xs-2{margin-left:16.6666666667%}.col.-push-xs-2,.column.-push-xs-2{left:16.6666666667%}.col.-pull-xs-2,.column.-pull-xs-2{right:16.6666666667%}.col.-xs-3,.column.-xs-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-3,.column.-xs-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-xs-3,.column.-offset-xs-3{margin-left:25%}.col.-push-xs-3,.column.-push-xs-3{left:25%}.col.-pull-xs-3,.column.-pull-xs-3{right:25%}.col.-xs-4,.column.-xs-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-4,.column.-xs-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-xs-4,.column.-offset-xs-4{margin-left:33.3333333333%}.col.-push-xs-4,.column.-push-xs-4{left:33.3333333333%}.col.-pull-xs-4,.column.-pull-xs-4{right:33.3333333333%}.col.-xs-5,.column.-xs-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-5,.column.-xs-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-xs-5,.column.-offset-xs-5{margin-left:41.6666666667%}.col.-push-xs-5,.column.-push-xs-5{left:41.6666666667%}.col.-pull-xs-5,.column.-pull-xs-5{right:41.6666666667%}.col.-xs-6,.column.-xs-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-6,.column.-xs-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-xs-6,.column.-offset-xs-6{margin-left:50%}.col.-push-xs-6,.column.-push-xs-6{left:50%}.col.-pull-xs-6,.column.-pull-xs-6{right:50%}.col.-xs-7,.column.-xs-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-7,.column.-xs-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-xs-7,.column.-offset-xs-7{margin-left:58.3333333333%}.col.-push-xs-7,.column.-push-xs-7{left:58.3333333333%}.col.-pull-xs-7,.column.-pull-xs-7{right:58.3333333333%}.col.-xs-8,.column.-xs-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-8,.column.-xs-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-xs-8,.column.-offset-xs-8{margin-left:66.6666666667%}.col.-push-xs-8,.column.-push-xs-8{left:66.6666666667%}.col.-pull-xs-8,.column.-pull-xs-8{right:66.6666666667%}.col.-xs-9,.column.-xs-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-9,.column.-xs-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-xs-9,.column.-offset-xs-9{margin-left:75%}.col.-push-xs-9,.column.-push-xs-9{left:75%}.col.-pull-xs-9,.column.-pull-xs-9{right:75%}.col.-xs-10,.column.-xs-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-10,.column.-xs-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-xs-10,.column.-offset-xs-10{margin-left:83.3333333333%}.col.-push-xs-10,.column.-push-xs-10{left:83.3333333333%}.col.-pull-xs-10,.column.-pull-xs-10{right:83.3333333333%}.col.-xs-11,.column.-xs-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-11,.column.-xs-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-xs-11,.column.-offset-xs-11{margin-left:91.6666666667%}.col.-push-xs-11,.column.-push-xs-11{left:91.6666666667%}.col.-pull-xs-11,.column.-pull-xs-11{right:91.6666666667%}.col.-xs-12,.column.-xs-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.col.-xs-12,.column.-xs-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-xs-12,.column.-offset-xs-12{margin-left:100%}.col.-push-xs-12,.column.-push-xs-12{left:100%}.col.-pull-xs-12,.column.-pull-xs-12{right:100%}.col.-offset-xs-0,.column.-offset-xs-0{margin-left:0}.col.-push-xs-0,.column.-push-xs-0{left:0}.col.-pull-xs-0,.column.-pull-xs-0{right:0}.col.-sm,.col.-sm-auto,.column.-sm,.column.-sm-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm,.column.-sm{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-sm-auto,.column.-sm-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-sm,.column.-first-sm{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-sm,.column.-last-sm{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.col.-sm-1,.column.-sm-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-1,.column.-sm-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-sm-1,.column.-offset-sm-1{margin-left:8.3333333333%}.col.-push-sm-1,.column.-push-sm-1{left:8.3333333333%}.col.-pull-sm-1,.column.-pull-sm-1{right:8.3333333333%}}.col.-sm-2,.column.-sm-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-2,.column.-sm-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-sm-2,.column.-offset-sm-2{margin-left:16.6666666667%}.col.-push-sm-2,.column.-push-sm-2{left:16.6666666667%}.col.-pull-sm-2,.column.-pull-sm-2{right:16.6666666667%}}.col.-sm-3,.column.-sm-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-3,.column.-sm-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-sm-3,.column.-offset-sm-3{margin-left:25%}.col.-push-sm-3,.column.-push-sm-3{left:25%}.col.-pull-sm-3,.column.-pull-sm-3{right:25%}}.col.-sm-4,.column.-sm-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-4,.column.-sm-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-sm-4,.column.-offset-sm-4{margin-left:33.3333333333%}.col.-push-sm-4,.column.-push-sm-4{left:33.3333333333%}.col.-pull-sm-4,.column.-pull-sm-4{right:33.3333333333%}}.col.-sm-5,.column.-sm-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-5,.column.-sm-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-sm-5,.column.-offset-sm-5{margin-left:41.6666666667%}.col.-push-sm-5,.column.-push-sm-5{left:41.6666666667%}.col.-pull-sm-5,.column.-pull-sm-5{right:41.6666666667%}}.col.-sm-6,.column.-sm-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-6,.column.-sm-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-sm-6,.column.-offset-sm-6{margin-left:50%}.col.-push-sm-6,.column.-push-sm-6{left:50%}.col.-pull-sm-6,.column.-pull-sm-6{right:50%}}.col.-sm-7,.column.-sm-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-7,.column.-sm-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-sm-7,.column.-offset-sm-7{margin-left:58.3333333333%}.col.-push-sm-7,.column.-push-sm-7{left:58.3333333333%}.col.-pull-sm-7,.column.-pull-sm-7{right:58.3333333333%}}.col.-sm-8,.column.-sm-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-8,.column.-sm-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-sm-8,.column.-offset-sm-8{margin-left:66.6666666667%}.col.-push-sm-8,.column.-push-sm-8{left:66.6666666667%}.col.-pull-sm-8,.column.-pull-sm-8{right:66.6666666667%}}.col.-sm-9,.column.-sm-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-9,.column.-sm-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-sm-9,.column.-offset-sm-9{margin-left:75%}.col.-push-sm-9,.column.-push-sm-9{left:75%}.col.-pull-sm-9,.column.-pull-sm-9{right:75%}}.col.-sm-10,.column.-sm-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-10,.column.-sm-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-sm-10,.column.-offset-sm-10{margin-left:83.3333333333%}.col.-push-sm-10,.column.-push-sm-10{left:83.3333333333%}.col.-pull-sm-10,.column.-pull-sm-10{right:83.3333333333%}}.col.-sm-11,.column.-sm-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-11,.column.-sm-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-sm-11,.column.-offset-sm-11{margin-left:91.6666666667%}.col.-push-sm-11,.column.-push-sm-11{left:91.6666666667%}.col.-pull-sm-11,.column.-pull-sm-11{right:91.6666666667%}}.col.-sm-12,.column.-sm-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 576px){.col.-sm-12,.column.-sm-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-sm-12,.column.-offset-sm-12{margin-left:100%}.col.-push-sm-12,.column.-push-sm-12{left:100%}.col.-pull-sm-12,.column.-pull-sm-12{right:100%}}@media screen and (min-width: 576px){.col.-offset-sm-0,.column.-offset-sm-0{margin-left:0}.col.-push-sm-0,.column.-push-sm-0{left:0}.col.-pull-sm-0,.column.-pull-sm-0{right:0}}.col.-md,.col.-md-auto,.column.-md,.column.-md-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md,.column.-md{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-md-auto,.column.-md-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-md,.column.-first-md{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-md,.column.-last-md{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.col.-md-1,.column.-md-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-1,.column.-md-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-md-1,.column.-offset-md-1{margin-left:8.3333333333%}.col.-push-md-1,.column.-push-md-1{left:8.3333333333%}.col.-pull-md-1,.column.-pull-md-1{right:8.3333333333%}}.col.-md-2,.column.-md-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-2,.column.-md-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-md-2,.column.-offset-md-2{margin-left:16.6666666667%}.col.-push-md-2,.column.-push-md-2{left:16.6666666667%}.col.-pull-md-2,.column.-pull-md-2{right:16.6666666667%}}.col.-md-3,.column.-md-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-3,.column.-md-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-md-3,.column.-offset-md-3{margin-left:25%}.col.-push-md-3,.column.-push-md-3{left:25%}.col.-pull-md-3,.column.-pull-md-3{right:25%}}.col.-md-4,.column.-md-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-4,.column.-md-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-md-4,.column.-offset-md-4{margin-left:33.3333333333%}.col.-push-md-4,.column.-push-md-4{left:33.3333333333%}.col.-pull-md-4,.column.-pull-md-4{right:33.3333333333%}}.col.-md-5,.column.-md-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-5,.column.-md-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-md-5,.column.-offset-md-5{margin-left:41.6666666667%}.col.-push-md-5,.column.-push-md-5{left:41.6666666667%}.col.-pull-md-5,.column.-pull-md-5{right:41.6666666667%}}.col.-md-6,.column.-md-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-6,.column.-md-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-md-6,.column.-offset-md-6{margin-left:50%}.col.-push-md-6,.column.-push-md-6{left:50%}.col.-pull-md-6,.column.-pull-md-6{right:50%}}.col.-md-7,.column.-md-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-7,.column.-md-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-md-7,.column.-offset-md-7{margin-left:58.3333333333%}.col.-push-md-7,.column.-push-md-7{left:58.3333333333%}.col.-pull-md-7,.column.-pull-md-7{right:58.3333333333%}}.col.-md-8,.column.-md-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-8,.column.-md-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-md-8,.column.-offset-md-8{margin-left:66.6666666667%}.col.-push-md-8,.column.-push-md-8{left:66.6666666667%}.col.-pull-md-8,.column.-pull-md-8{right:66.6666666667%}}.col.-md-9,.column.-md-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-9,.column.-md-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-md-9,.column.-offset-md-9{margin-left:75%}.col.-push-md-9,.column.-push-md-9{left:75%}.col.-pull-md-9,.column.-pull-md-9{right:75%}}.col.-md-10,.column.-md-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-10,.column.-md-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-md-10,.column.-offset-md-10{margin-left:83.3333333333%}.col.-push-md-10,.column.-push-md-10{left:83.3333333333%}.col.-pull-md-10,.column.-pull-md-10{right:83.3333333333%}}.col.-md-11,.column.-md-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-11,.column.-md-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-md-11,.column.-offset-md-11{margin-left:91.6666666667%}.col.-push-md-11,.column.-push-md-11{left:91.6666666667%}.col.-pull-md-11,.column.-pull-md-11{right:91.6666666667%}}.col.-md-12,.column.-md-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 768px){.col.-md-12,.column.-md-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-md-12,.column.-offset-md-12{margin-left:100%}.col.-push-md-12,.column.-push-md-12{left:100%}.col.-pull-md-12,.column.-pull-md-12{right:100%}}@media screen and (min-width: 768px){.col.-offset-md-0,.column.-offset-md-0{margin-left:0}.col.-push-md-0,.column.-push-md-0{left:0}.col.-pull-md-0,.column.-pull-md-0{right:0}}.col.-lg,.col.-lg-auto,.column.-lg,.column.-lg-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg,.column.-lg{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-lg-auto,.column.-lg-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-lg,.column.-first-lg{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-lg,.column.-last-lg{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.col.-lg-1,.column.-lg-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-1,.column.-lg-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-lg-1,.column.-offset-lg-1{margin-left:8.3333333333%}.col.-push-lg-1,.column.-push-lg-1{left:8.3333333333%}.col.-pull-lg-1,.column.-pull-lg-1{right:8.3333333333%}}.col.-lg-2,.column.-lg-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-2,.column.-lg-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-lg-2,.column.-offset-lg-2{margin-left:16.6666666667%}.col.-push-lg-2,.column.-push-lg-2{left:16.6666666667%}.col.-pull-lg-2,.column.-pull-lg-2{right:16.6666666667%}}.col.-lg-3,.column.-lg-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-3,.column.-lg-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-lg-3,.column.-offset-lg-3{margin-left:25%}.col.-push-lg-3,.column.-push-lg-3{left:25%}.col.-pull-lg-3,.column.-pull-lg-3{right:25%}}.col.-lg-4,.column.-lg-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-4,.column.-lg-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-lg-4,.column.-offset-lg-4{margin-left:33.3333333333%}.col.-push-lg-4,.column.-push-lg-4{left:33.3333333333%}.col.-pull-lg-4,.column.-pull-lg-4{right:33.3333333333%}}.col.-lg-5,.column.-lg-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-5,.column.-lg-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-lg-5,.column.-offset-lg-5{margin-left:41.6666666667%}.col.-push-lg-5,.column.-push-lg-5{left:41.6666666667%}.col.-pull-lg-5,.column.-pull-lg-5{right:41.6666666667%}}.col.-lg-6,.column.-lg-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-6,.column.-lg-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-lg-6,.column.-offset-lg-6{margin-left:50%}.col.-push-lg-6,.column.-push-lg-6{left:50%}.col.-pull-lg-6,.column.-pull-lg-6{right:50%}}.col.-lg-7,.column.-lg-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-7,.column.-lg-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-lg-7,.column.-offset-lg-7{margin-left:58.3333333333%}.col.-push-lg-7,.column.-push-lg-7{left:58.3333333333%}.col.-pull-lg-7,.column.-pull-lg-7{right:58.3333333333%}}.col.-lg-8,.column.-lg-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-8,.column.-lg-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-lg-8,.column.-offset-lg-8{margin-left:66.6666666667%}.col.-push-lg-8,.column.-push-lg-8{left:66.6666666667%}.col.-pull-lg-8,.column.-pull-lg-8{right:66.6666666667%}}.col.-lg-9,.column.-lg-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-9,.column.-lg-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-lg-9,.column.-offset-lg-9{margin-left:75%}.col.-push-lg-9,.column.-push-lg-9{left:75%}.col.-pull-lg-9,.column.-pull-lg-9{right:75%}}.col.-lg-10,.column.-lg-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-10,.column.-lg-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-lg-10,.column.-offset-lg-10{margin-left:83.3333333333%}.col.-push-lg-10,.column.-push-lg-10{left:83.3333333333%}.col.-pull-lg-10,.column.-pull-lg-10{right:83.3333333333%}}.col.-lg-11,.column.-lg-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-11,.column.-lg-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-lg-11,.column.-offset-lg-11{margin-left:91.6666666667%}.col.-push-lg-11,.column.-push-lg-11{left:91.6666666667%}.col.-pull-lg-11,.column.-pull-lg-11{right:91.6666666667%}}.col.-lg-12,.column.-lg-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 992px){.col.-lg-12,.column.-lg-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-lg-12,.column.-offset-lg-12{margin-left:100%}.col.-push-lg-12,.column.-push-lg-12{left:100%}.col.-pull-lg-12,.column.-pull-lg-12{right:100%}}@media screen and (min-width: 992px){.col.-offset-lg-0,.column.-offset-lg-0{margin-left:0}.col.-push-lg-0,.column.-push-lg-0{left:0}.col.-pull-lg-0,.column.-pull-lg-0{right:0}}.col.-xl,.col.-xl-auto,.column.-xl,.column.-xl-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl,.column.-xl{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-xl-auto,.column.-xl-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-xl,.column.-first-xl{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-xl,.column.-last-xl{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.col.-xl-1,.column.-xl-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-1,.column.-xl-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-xl-1,.column.-offset-xl-1{margin-left:8.3333333333%}.col.-push-xl-1,.column.-push-xl-1{left:8.3333333333%}.col.-pull-xl-1,.column.-pull-xl-1{right:8.3333333333%}}.col.-xl-2,.column.-xl-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-2,.column.-xl-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-xl-2,.column.-offset-xl-2{margin-left:16.6666666667%}.col.-push-xl-2,.column.-push-xl-2{left:16.6666666667%}.col.-pull-xl-2,.column.-pull-xl-2{right:16.6666666667%}}.col.-xl-3,.column.-xl-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-3,.column.-xl-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-xl-3,.column.-offset-xl-3{margin-left:25%}.col.-push-xl-3,.column.-push-xl-3{left:25%}.col.-pull-xl-3,.column.-pull-xl-3{right:25%}}.col.-xl-4,.column.-xl-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-4,.column.-xl-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-xl-4,.column.-offset-xl-4{margin-left:33.3333333333%}.col.-push-xl-4,.column.-push-xl-4{left:33.3333333333%}.col.-pull-xl-4,.column.-pull-xl-4{right:33.3333333333%}}.col.-xl-5,.column.-xl-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-5,.column.-xl-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-xl-5,.column.-offset-xl-5{margin-left:41.6666666667%}.col.-push-xl-5,.column.-push-xl-5{left:41.6666666667%}.col.-pull-xl-5,.column.-pull-xl-5{right:41.6666666667%}}.col.-xl-6,.column.-xl-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-6,.column.-xl-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-xl-6,.column.-offset-xl-6{margin-left:50%}.col.-push-xl-6,.column.-push-xl-6{left:50%}.col.-pull-xl-6,.column.-pull-xl-6{right:50%}}.col.-xl-7,.column.-xl-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-7,.column.-xl-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-xl-7,.column.-offset-xl-7{margin-left:58.3333333333%}.col.-push-xl-7,.column.-push-xl-7{left:58.3333333333%}.col.-pull-xl-7,.column.-pull-xl-7{right:58.3333333333%}}.col.-xl-8,.column.-xl-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-8,.column.-xl-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-xl-8,.column.-offset-xl-8{margin-left:66.6666666667%}.col.-push-xl-8,.column.-push-xl-8{left:66.6666666667%}.col.-pull-xl-8,.column.-pull-xl-8{right:66.6666666667%}}.col.-xl-9,.column.-xl-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-9,.column.-xl-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-xl-9,.column.-offset-xl-9{margin-left:75%}.col.-push-xl-9,.column.-push-xl-9{left:75%}.col.-pull-xl-9,.column.-pull-xl-9{right:75%}}.col.-xl-10,.column.-xl-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-10,.column.-xl-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-xl-10,.column.-offset-xl-10{margin-left:83.3333333333%}.col.-push-xl-10,.column.-push-xl-10{left:83.3333333333%}.col.-pull-xl-10,.column.-pull-xl-10{right:83.3333333333%}}.col.-xl-11,.column.-xl-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-11,.column.-xl-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-xl-11,.column.-offset-xl-11{margin-left:91.6666666667%}.col.-push-xl-11,.column.-push-xl-11{left:91.6666666667%}.col.-pull-xl-11,.column.-pull-xl-11{right:91.6666666667%}}.col.-xl-12,.column.-xl-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1200px){.col.-xl-12,.column.-xl-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-xl-12,.column.-offset-xl-12{margin-left:100%}.col.-push-xl-12,.column.-push-xl-12{left:100%}.col.-pull-xl-12,.column.-pull-xl-12{right:100%}}@media screen and (min-width: 1200px){.col.-offset-xl-0,.column.-offset-xl-0{margin-left:0}.col.-push-xl-0,.column.-push-xl-0{left:0}.col.-pull-xl-0,.column.-pull-xl-0{right:0}}.col.-xxl,.col.-xxl-auto,.column.-xxl,.column.-xxl-auto{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl,.column.-xxl{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.col.-xxl-auto,.column.-xxl-auto{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;max-width:auto}.col.-first-xxl,.column.-first-xxl{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last-xxl,.column.-last-xxl{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.col.-xxl-1,.column.-xxl-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-1,.column.-xxl-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:8.3333333333%;flex-basis:8.3333333333%;max-width:8.3333333333%}.col.-offset-xxl-1,.column.-offset-xxl-1{margin-left:8.3333333333%}.col.-push-xxl-1,.column.-push-xxl-1{left:8.3333333333%}.col.-pull-xxl-1,.column.-pull-xxl-1{right:8.3333333333%}}.col.-xxl-2,.column.-xxl-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-2,.column.-xxl-2{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.col.-offset-xxl-2,.column.-offset-xxl-2{margin-left:16.6666666667%}.col.-push-xxl-2,.column.-push-xxl-2{left:16.6666666667%}.col.-pull-xxl-2,.column.-pull-xxl-2{right:16.6666666667%}}.col.-xxl-3,.column.-xxl-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-3,.column.-xxl-3{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.col.-offset-xxl-3,.column.-offset-xxl-3{margin-left:25%}.col.-push-xxl-3,.column.-push-xxl-3{left:25%}.col.-pull-xxl-3,.column.-pull-xxl-3{right:25%}}.col.-xxl-4,.column.-xxl-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-4,.column.-xxl-4{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}.col.-offset-xxl-4,.column.-offset-xxl-4{margin-left:33.3333333333%}.col.-push-xxl-4,.column.-push-xxl-4{left:33.3333333333%}.col.-pull-xxl-4,.column.-pull-xxl-4{right:33.3333333333%}}.col.-xxl-5,.column.-xxl-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-5,.column.-xxl-5{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:41.6666666667%;flex-basis:41.6666666667%;max-width:41.6666666667%}.col.-offset-xxl-5,.column.-offset-xxl-5{margin-left:41.6666666667%}.col.-push-xxl-5,.column.-push-xxl-5{left:41.6666666667%}.col.-pull-xxl-5,.column.-pull-xxl-5{right:41.6666666667%}}.col.-xxl-6,.column.-xxl-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-6,.column.-xxl-6{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.col.-offset-xxl-6,.column.-offset-xxl-6{margin-left:50%}.col.-push-xxl-6,.column.-push-xxl-6{left:50%}.col.-pull-xxl-6,.column.-pull-xxl-6{right:50%}}.col.-xxl-7,.column.-xxl-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-7,.column.-xxl-7{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:58.3333333333%;flex-basis:58.3333333333%;max-width:58.3333333333%}.col.-offset-xxl-7,.column.-offset-xxl-7{margin-left:58.3333333333%}.col.-push-xxl-7,.column.-push-xxl-7{left:58.3333333333%}.col.-pull-xxl-7,.column.-pull-xxl-7{right:58.3333333333%}}.col.-xxl-8,.column.-xxl-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-8,.column.-xxl-8{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:66.6666666667%;flex-basis:66.6666666667%;max-width:66.6666666667%}.col.-offset-xxl-8,.column.-offset-xxl-8{margin-left:66.6666666667%}.col.-push-xxl-8,.column.-push-xxl-8{left:66.6666666667%}.col.-pull-xxl-8,.column.-pull-xxl-8{right:66.6666666667%}}.col.-xxl-9,.column.-xxl-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-9,.column.-xxl-9{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.col.-offset-xxl-9,.column.-offset-xxl-9{margin-left:75%}.col.-push-xxl-9,.column.-push-xxl-9{left:75%}.col.-pull-xxl-9,.column.-pull-xxl-9{right:75%}}.col.-xxl-10,.column.-xxl-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-10,.column.-xxl-10{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:83.3333333333%;flex-basis:83.3333333333%;max-width:83.3333333333%}.col.-offset-xxl-10,.column.-offset-xxl-10{margin-left:83.3333333333%}.col.-push-xxl-10,.column.-push-xxl-10{left:83.3333333333%}.col.-pull-xxl-10,.column.-pull-xxl-10{right:83.3333333333%}}.col.-xxl-11,.column.-xxl-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-11,.column.-xxl-11{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:91.6666666667%;flex-basis:91.6666666667%;max-width:91.6666666667%}.col.-offset-xxl-11,.column.-offset-xxl-11{margin-left:91.6666666667%}.col.-push-xxl-11,.column.-push-xxl-11{left:91.6666666667%}.col.-pull-xxl-11,.column.-pull-xxl-11{right:91.6666666667%}}.col.-xxl-12,.column.-xxl-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}@media screen and (min-width: 1400px){.col.-xxl-12,.column.-xxl-12{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.col.-offset-xxl-12,.column.-offset-xxl-12{margin-left:100%}.col.-push-xxl-12,.column.-push-xxl-12{left:100%}.col.-pull-xxl-12,.column.-pull-xxl-12{right:100%}}@media screen and (min-width: 1400px){.col.-offset-xxl-0,.column.-offset-xxl-0{margin-left:0}.col.-push-xxl-0,.column.-push-xxl-0{left:0}.col.-pull-xxl-0,.column.-pull-xxl-0{right:0}}.col.-first,.column.-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.col.-last,.column.-last{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.col.-offset-1,.column.-offset-1{margin-left:8.3333333333%}.col.-push-1,.column.-push-1{left:8.3333333333%}.col.-pull-1,.column.-pull-1{right:8.3333333333%}.col.-offset-2,.column.-offset-2{margin-left:16.6666666667%}.col.-push-2,.column.-push-2{left:16.6666666667%}.col.-pull-2,.column.-pull-2{right:16.6666666667%}.col.-offset-3,.column.-offset-3{margin-left:25%}.col.-push-3,.column.-push-3{left:25%}.col.-pull-3,.column.-pull-3{right:25%}.col.-offset-4,.column.-offset-4{margin-left:33.3333333333%}.col.-push-4,.column.-push-4{left:33.3333333333%}.col.-pull-4,.column.-pull-4{right:33.3333333333%}.col.-offset-5,.column.-offset-5{margin-left:41.6666666667%}.col.-push-5,.column.-push-5{left:41.6666666667%}.col.-pull-5,.column.-pull-5{right:41.6666666667%}.col.-offset-6,.column.-offset-6{margin-left:50%}.col.-push-6,.column.-push-6{left:50%}.col.-pull-6,.column.-pull-6{right:50%}.col.-offset-7,.column.-offset-7{margin-left:58.3333333333%}.col.-push-7,.column.-push-7{left:58.3333333333%}.col.-pull-7,.column.-pull-7{right:58.3333333333%}.col.-offset-8,.column.-offset-8{margin-left:66.6666666667%}.col.-push-8,.column.-push-8{left:66.6666666667%}.col.-pull-8,.column.-pull-8{right:66.6666666667%}.col.-offset-9,.column.-offset-9{margin-left:75%}.col.-push-9,.column.-push-9{left:75%}.col.-pull-9,.column.-pull-9{right:75%}.col.-offset-10,.column.-offset-10{margin-left:83.3333333333%}.col.-push-10,.column.-push-10{left:83.3333333333%}.col.-pull-10,.column.-pull-10{right:83.3333333333%}.col.-offset-11,.column.-offset-11{margin-left:91.6666666667%}.col.-push-11,.column.-push-11{left:91.6666666667%}.col.-pull-11,.column.-pull-11{right:91.6666666667%}.col.-offset-12,.column.-offset-12{margin-left:100%}.col.-push-12,.column.-push-12{left:100%}.col.-pull-12,.column.-pull-12{right:100%}.col.-offset-0,.column.-offset-0{margin-left:0}.col.-push-0,.column.-push-0{left:0}.col.-pull-0,.column.-pull-0{right:0}.container{----width--xs: 100%;----width--sm: calc(576px - var(--gutter--sm));----width--md: calc(768px - var(--gutter--md));----width--lg: calc(992px - var(--gutter--lg));----width--xl: calc(1200px - var(--gutter--xl));----width--xxl: calc(1400px - var(--gutter--xxl))}.container{margin-left:auto;margin-right:auto;-webkit-box-sizing:border-box;box-sizing:border-box;width:var(----width--xs);max-width:var(----width--xs);padding-left:calc(var(--gutter--xs) / 2);padding-right:calc(var(--gutter--xs) / 2)}@media screen and (min-width: 576px){.container{max-width:var(----width--sm);padding-left:calc(var(--gutter--sm) / 2);padding-right:calc(var(--gutter--sm) / 2)}}@media screen and (min-width: 768px){.container{max-width:var(----width--md);padding-left:calc(var(--gutter--md) / 2);padding-right:calc(var(--gutter--md) / 2)}}@media screen and (min-width: 992px){.container{max-width:var(----width--lg);padding-left:calc(var(--gutter--lg) / 2);padding-right:calc(var(--gutter--lg) / 2)}}@media screen and (min-width: 1200px){.container{max-width:var(----width--xl);padding-left:calc(var(--gutter--xl) / 2);padding-right:calc(var(--gutter--xl) / 2)}}@media screen and (min-width: 1400px){.container{max-width:var(----width--xxl);padding-left:calc(var(--gutter--xxl) / 2);padding-right:calc(var(--gutter--xxl) / 2)}}.container.-fluid{max-width:100%}.card{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----header--background: var(--color--light-25);----header--border-color: var(----border-color);----header--border-style: var(----border-style);----header--border-top-width: var(----border-top-width);----header--border-right-width: var(----border-right-width);----header--border-bottom-width: var(----border-bottom-width);----header--border-left-width: var(----border-left-width);----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--color: var(----color);----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--background: var(----background);----body--border-color: var(----border-color);----body--border-style: var(----border-style);----body--border-top-width: var(----border-top-width);----body--border-right-width: var(----border-right-width);----body--border-bottom-width: var(----border-bottom-width);----body--border-left-width: var(----border-left-width);----body--border-width: var(----body--border-top-width) var(----body--border-right-width) var(----body--border-bottom-width) var(----body--border-left-width);----body--color: var(----color);----body--padding-top: var(----padding-top);----body--padding-right: var(----padding-right);----body--padding-bottom: var(----padding-bottom);----body--padding-left: var(----padding-left);----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left);----footer--background: var(--color--light-25);----footer--border-color: var(----border-color);----footer--border-style: var(----border-style);----footer--border-top-width: var(----border-top-width);----footer--border-right-width: var(----border-right-width);----footer--border-bottom-width: var(----border-bottom-width);----footer--border-left-width: var(----border-left-width);----footer--border-width: var(----footer--border-top-width) var(----footer--border-right-width) var(----footer--border-bottom-width) var(----footer--border-left-width);----footer--color: var(----color);----footer--padding-top: var(----padding-top);----footer--padding-right: var(----padding-right);----footer--padding-bottom: var(----padding-bottom);----footer--padding-left: var(----padding-left);----footer--padding: var(----footer--padding-top) var(----footer--padding-right) var(----footer--padding-bottom) var(----footer--padding-left)}.card.-primary{----background: var(--color--primary);----border-top-color: var(--color--primary-60);----border-right-color: var(--color--primary-60);----border-bottom-color: var(--color--primary-60);----border-left-color: var(--color--primary-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--primary-55);----footer--background: var(--color--primary-55)}.card.-secondary{----background: var(--color--secondary);----border-top-color: var(--color--secondary-60);----border-right-color: var(--color--secondary-60);----border-bottom-color: var(--color--secondary-60);----border-left-color: var(--color--secondary-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--secondary-55);----footer--background: var(--color--secondary-55)}.card.-light{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background);----header--background: var(--color--light-25);----footer--background: var(--color--light-25)}.card.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--dark-55);----footer--background: var(--color--dark-55)}.card.-info{----background: var(--color--info);----border-top-color: var(--color--info-60);----border-right-color: var(--color--info-60);----border-bottom-color: var(--color--info-60);----border-left-color: var(--color--info-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--info-55);----footer--background: var(--color--info-55)}.card.-success{----background: var(--color--success);----border-top-color: var(--color--success-60);----border-right-color: var(--color--success-60);----border-bottom-color: var(--color--success-60);----border-left-color: var(--color--success-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--success-55);----footer--background: var(--color--success-55)}.card.-warning{----background: var(--color--warning);----border-top-color: var(--color--warning-60);----border-right-color: var(--color--warning-60);----border-bottom-color: var(--color--warning-60);----border-left-color: var(--color--warning-60);----color: var(--contrast-color-for-light-background);----header--background: var(--color--warning-55);----footer--background: var(--color--warning-55)}.card.-danger{----background: var(--color--danger);----border-top-color: var(--color--danger-60);----border-right-color: var(--color--danger-60);----border-bottom-color: var(--color--danger-60);----border-left-color: var(--color--danger-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--danger-55);----footer--background: var(--color--danger-55)}.card.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.card.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.card.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-clip:border-box;border-radius:var(----border-radius);font-size:var(----font-size);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.card>hr{margin-right:0;margin-left:0}.card>.card-header{color:var(----header--color);background:var(----header--background);border-color:var(----header--border-color);border-width:var(----header--border-width);border-style:var(----header--border-style);padding:var(----header--padding);border-bottom-width:0;margin-bottom:0}.card>.card-header>h1,.card>.card-header>h2,.card>.card-header>h3,.card>.card-header>h4,.card>.card-header>h5,.card>.card-header>h6,.card>.card-header>p,.card>.card-header>.h1,.card>.card-header>.h2,.card>.card-header>.h3,.card>.card-header>.h4,.card>.card-header>.h5,.card>.card-header>.h6,.card>.card-header>.p{margin-bottom:0;margin-top:0}.card>.card-header+img,.card>.card-header+.card-body{border-top-left-radius:0;border-top-right-radius:0}.card>.card-header+.list-group .list-group-item:first-child{border-top:0}.card>.card-header:first-child{border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.card>.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;background:var(----body--background);border-width:var(----body--border-width);border-style:var(----body--border-style);border-color:var(----body--border-color);color:var(----body--color);padding:var(----body--padding);-webkit-transition-property:border-color;transition-property:border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);border-radius:var(----border-radius)}.card>.card-body:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.card>.card-body:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0}.card>.card-body>.card-title{margin-top:0;margin-bottom:var(--margin-bottom)}.card>.card-body>.card-subtitle{margin-top:var(--margin-top);margin-bottom:0}.card>.card-body>.card-link{-webkit-text-decoration:none;text-decoration:none}.card>.card-body>.card-link+.card-link{margin-left:var(--margin-left)}.card>.card-body>*:first-child{margin-top:0}.card>.card-body>*:last-child{margin-bottom:0}.card>.card-footer{background:var(----footer--background);border-color:var(----footer--border-color);border-width:var(----footer--border-width);border-style:var(----footer--border-style);color:var(----footer--color);padding:var(----footer--padding);border-top-width:0}.card>.card-footer:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.card>img{width:100%;border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.card:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.card,.card>.card-header,.card>.card-footer{-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing)}.card>.list-group:first-child,.card .list-group-item:first-child{border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.card>.list-group:last-child,.card .list-group-item:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.checkbox{----background: var(--color--white);----background--checked: var(--color--primary);----background--disabled: var(--color--light-25);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--color--white);----color--disabled: var(--color--light-25);----margin-right: calc(var(--margin-right) / 2);----size: 1rem;----checkmark--size: 8px;----label--font-size: var(--font-size);----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70)}.form.-light .checkbox,.form-group.-light .checkbox,.checkbox.-light{----background: var(--color--white);----background--checked: var(--color--primary);----background--disabled: var(--color--light-25);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----color: var(--color--white);----color--disabled: var(--color--light-25);----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70)}.form.-dark .checkbox,.form-group.-dark .checkbox,.checkbox.-dark{----background: var(--color--dark);----background--checked: var(--color--primary);----background--disabled: var(--color--dark-25);----background--checked-disabled: var(--color--primary-75);----border-color: var(--color--dark);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--dark);----border-color--checked-disabled: var(--color--primary-70);----color: var(--color--white);----color--disabled: var(--color--dark-25);----label--color: var(--contrast-color-for-dark-background);----label--color--disabled: var(--color--dark-30)}.form.-sm .checkbox,.form-group.-sm .checkbox,.checkbox.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----size: calc(1rem * var(--size-multiplier--sm));----checkmark--size: calc(8px * var(--size-multiplier--sm));----label--font-size: calc(var(--font-size) * var(--size-multiplier--sm))}.form.-md .checkbox,.form-group.-md .checkbox,.checkbox.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----size: calc(1rem * var(--size-multiplier--md));----checkmark--size: calc(8px * var(--size-multiplier--md));----label--font-size: calc(var(--font-size) * var(--size-multiplier--md))}.form.-lg .checkbox,.form-group.-lg .checkbox,.checkbox.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----size: calc(1rem * var(--size-multiplier--lg));----checkmark--size: calc(8px * var(--size-multiplier--lg));----label--font-size: calc(var(--font-size) * var(--size-multiplier--lg))}.checkbox{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;white-space:nowrap;outline:none;cursor:pointer;margin-right:var(--margin-right)}.checkbox:last-child{margin-right:0}.checkbox.-disabled{cursor:default}.checkbox.-disabled .checkbox-label:before,.checkbox.-disabled .checkbox-label:after{cursor:default}.checkbox input{top:0;left:0;position:absolute;z-index:0;opacity:0;height:0;width:0;outline:0}.checkbox input:checked~.checkbox-label:before,.checkbox input[type=checkbox]:indeterminate~.checkbox-label:before{----border-color: var(----border-color--checked);----background: var(----background--checked)}.checkbox input:checked~.checkbox-label:after,.checkbox input[type=checkbox]:indeterminate~.checkbox-label:after{content:"";-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-transform:scale(1);transform:scale(1)}.checkbox input:disabled~.checkbox-label,.checkbox input[readonly]~.checkbox-label{----label--color: var(----label--color--disabled)}.checkbox input:disabled:checked~.checkbox-label:before,.checkbox input[readonly]:checked~.checkbox-label:before{----border-color: var(----border-color--checked-disabled);----background: var(----background--checked-disabled)}.checkbox input:disabled:checked~.checkbox-label:after,.checkbox input[readonly]:checked~.checkbox-label:after{----background: var(----color--disabled)}.checkbox input:indeterminate~.checkbox-label:after{-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>minus</title><path d="M0 11.375v5.25c0 0.483 0.392 0.875 0.875 0.875h26.25c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875h-26.25c-0.483 0-0.875 0.392-0.875 0.875z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>minus</title><path d="M0 11.375v5.25c0 0.483 0.392 0.875 0.875 0.875h26.25c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875h-26.25c-0.483 0-0.875 0.392-0.875 0.875z"></path></svg>')}.checkbox input:focus,.checkbox input:active{outline:none}.checkbox .checkbox-label{margin-bottom:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----label--color);font-size:var(----label--font-size)}.checkbox .checkbox-label:before,.checkbox .checkbox-label:after{width:var(----size);height:var(----size);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer}.checkbox .checkbox-label:before{content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);margin-right:var(----margin-right);-webkit-transition-property:background-color,border-color;transition-property:background-color,border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);background-color:var(----background)}.checkbox .checkbox-label:after{-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>check</title><path d="M23.625 3.5l-13.125 13.125-6.125-6.125-4.375 4.375 10.5 10.5 17.5-17.5z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>check</title><path d="M23.625 3.5l-13.125 13.125-6.125-6.125-4.375 4.375 10.5 10.5 17.5-17.5z"></path></svg>');position:absolute;top:50%;left:0;z-index:1;text-align:center;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transform:scale(0);transform:scale(0);background-color:var(----color);margin-top:calc(var(----size) / -2);-webkit-mask-size:var(----checkmark--size) var(----checkmark--size);mask-size:var(----checkmark--size) var(----checkmark--size)}.checkbox.-native input{top:auto;left:auto;position:relative;opacity:1;height:auto;width:auto;margin-right:var(----margin-right)}.checkbox.-native .checkbox-label:after,.checkbox.-native .checkbox-label:before{display:none}.checkbox-group[data-v-4043b2ce]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.checkbox-group.-inline[data-v-4043b2ce]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.collapsible{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----header--background: var(----background);----header--border-color: var(----border-color);----header--border-style: var(----border-style);----header--border-top-width: var(----border-top-width);----header--border-right-width: var(----border-right-width);----header--border-bottom-width: var(----border-bottom-width);----header--border-left-width: var(----border-left-width);----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--color: var(----color);----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--background: var(--color--white);----body--border-color: var(----border-color);----body--border-style: var(----border-style);----body--border-top-width: 0;----body--border-right-width: var(----border-right-width);----body--border-bottom-width: var(----border-bottom-width);----body--border-left-width: var(----border-left-width);----body--border-width: var(----body--border-top-width) var(----body--border-right-width) var(----body--border-bottom-width) var(----body--border-left-width);----body--color: var(----color);----body--padding-top: var(----padding-top);----body--padding-right: var(----padding-right);----body--padding-bottom: var(----padding-bottom);----body--padding-left: var(----padding-left);----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left)}.collapsible.-light{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----color: var(--contrast-color-for-light-background);----body--background: var(--color--white)}.collapsible.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-40);----border-right-color: var(--color--dark-40);----border-bottom-color: var(--color--dark-40);----border-left-color: var(--color--dark-40);----color: var(--contrast-color-for-dark-background);----body--background: var(--color--dark-45)}.collapsible.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--sm));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--sm));----body--padding-right: calc(var(----padding-right) * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.collapsible.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--md));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--md));----body--padding-right: calc(var(----padding-right) * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.collapsible.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--lg));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--lg));----body--padding-right: calc(var(----padding-right) * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.collapsible{position:relative;display:block;font-size:var(----font-size)}.expand-enter-active[data-v-1e395af5],.expand-leave-active[data-v-1e395af5]{-webkit-transition-property:height;transition-property:height;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);overflow:hidden}.expand-enter[data-v-1e395af5],.expand-leave-to[data-v-1e395af5]{height:0}[data-v-1e395af5]{will-change:height;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.expand-enter-from[data-v-1e395af5],.expand-enter-active[data-v-1e395af5],.expand-leave-active[data-v-1e395af5],.expand-leave-to[data-v-1e395af5]{will-change:height;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.collapsible>.collapsible-item{position:relative;display:block;-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.collapsible>.collapsible-item>.collapsible-header{border-width:var(----header--border-width);border-style:var(----header--border-style);border-color:var(----header--border-color);color:var(----header--color);background-color:var(----header--background);padding:var(----header--padding);display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-text-decoration:none;text-decoration:none;-webkit-transition-property:border-radius;transition-property:border-radius;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing)}.collapsible>.collapsible-item>.collapsible-header>.icon{background-color:var(----header--color);width:var(----font-size);height:var(----font-size);-webkit-mask-size:var(----font-size) var(----font-size);mask-size:var(----font-size) var(----font-size);display:inline-block;position:relative;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>chevron-down</title><path d="M26.297 12.625l-11.594 11.578c-0.391 0.391-1.016 0.391-1.406 0l-11.594-11.578c-0.391-0.391-0.391-1.031 0-1.422l2.594-2.578c0.391-0.391 1.016-0.391 1.406 0l8.297 8.297 8.297-8.297c0.391-0.391 1.016-0.391 1.406 0l2.594 2.578c0.391 0.391 0.391 1.031 0 1.422z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>chevron-down</title><path d="M26.297 12.625l-11.594 11.578c-0.391 0.391-1.016 0.391-1.406 0l-11.594-11.578c-0.391-0.391-0.391-1.031 0-1.422l2.594-2.578c0.391-0.391 1.016-0.391 1.406 0l8.297 8.297 8.297-8.297c0.391-0.391 1.016-0.391 1.406 0l2.594 2.578c0.391 0.391 0.391 1.031 0 1.422z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.collapsible>.collapsible-item>.collapsible-body{display:block;position:relative;background-color:var(----body--background);border-width:var(----body--border-width);border-color:var(----body--border-color);border-style:var(----body--border-style);color:var(----body--color)}.collapsible>.collapsible-item>.collapsible-body>.content{padding:var(----body--padding)}.collapsible>.collapsible-item:first-child>.collapsible-header{border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.collapsible>.collapsible-item:last-child>.collapsible-header{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.collapsible>.collapsible-item:last-child>.collapsible-body{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.collapsible>.collapsible-item.-active>.collapsible-header{border-bottom-left-radius:0;border-bottom-right-radius:0}.collapsible>.collapsible-item.-active>.collapsible-header>.icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.collapsible>.collapsible-item+.collapsible-item>.collapsible-header{border-top-width:0}.collapsible.-blank>.collapsible-item{-webkit-box-shadow:none;box-shadow:none}.collapsible.-blank>.collapsible-item>.collapsible-header,.collapsible.-blank>.collapsible-item>.collapsible-body{border:0;background-color:transparent;background-color:initial;color:inherit}.dropdown.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----item--padding-top: calc(calc(var(----padding-top) / 2) * var(--size-multiplier--sm));----item--padding-right: calc(var(----padding-right) * var(--size-multiplier--sm));----item--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--sm));----item--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--sm));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--sm));----body--padding-right: calc(0 * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(0 * var(--size-multiplier--sm));----footer--padding-top: calc(var(----padding-top) * var(--size-multiplier--sm));----footer--padding-right: calc(var(----padding-right) * var(--size-multiplier--sm));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.dropdown.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----item--padding-top: calc(calc(var(----padding-top) / 2) * var(--size-multiplier--md));----item--padding-right: calc(var(----padding-right) * var(--size-multiplier--md));----item--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--md));----item--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--md));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--md));----body--padding-right: calc(0 * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(0 * var(--size-multiplier--md));----footer--padding-top: calc(var(----padding-top) * var(--size-multiplier--md));----footer--padding-right: calc(var(----padding-right) * var(--size-multiplier--md));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.dropdown.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----item--padding-top: calc(calc(var(----padding-top) / 2) * var(--size-multiplier--lg));----item--padding-right: calc(var(----padding-right) * var(--size-multiplier--lg));----item--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--lg));----item--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----header--padding-top: calc(var(----padding-top) * var(--size-multiplier--lg));----header--padding-right: calc(var(----padding-right) * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-top: calc(var(----padding-top) * var(--size-multiplier--lg));----body--padding-right: calc(0 * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(0 * var(--size-multiplier--lg));----footer--padding-top: calc(var(----padding-top) * var(--size-multiplier--lg));----footer--padding-right: calc(var(----padding-right) * var(--size-multiplier--lg));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.dropdown.-light{----background: var(--color--white);----background--active: var(--color--light-25);----background--disabled: transparent;----background--hover: var(--color--light-25);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background);----color--active: var(--dropdown-color-variant-light-color);----color--disabled: var(--color--light-65);----color--hover: var(--dropdown-color-variant-light-color);----header--background: var(--color--gray-05);----footer--background: var(--color--gray-05)}.dropdown.-dark{----background: var(--color--dark);----background--active: var(--color--dark-45);----background--disabled: transparent;----background--hover: var(--color--dark-45);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background);----color--active: var(--dropdown-color-variant-dark-color);----color--disabled: var(--color--dark-25);----color--hover: var(--dropdown-color-variant-dark-color);----header--background: var(--color--dark-55);----footer--background: var(--color--dark-55)}.dropdown-wrapper{display:inline-block;position:relative}.dropdown-wrapper .dropdown-trigger{display:contents;cursor:pointer}.dropdown{position:fixed;z-index:var(----z-index);word-wrap:break-word;text-align:left;list-style:none;line-height:var(----line-height);font-size:var(----font-size);background-clip:padding-box;display:inline-block;white-space:normal;min-width:var(----min-width);max-width:var(----max-width);color:var(----color);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.dropdown:focus:hover{outline-width:0}.dropdown[data-popper-placement^=top]{-webkit-transform-origin:center bottom;transform-origin:center bottom}.dropdown[data-popper-placement^=bottom]{-webkit-transform-origin:center top;transform-origin:center top}.dropdown[data-popper-placement^=right]{-webkit-transform-origin:left center;transform-origin:left center}.dropdown[data-popper-placement^=left]{-webkit-transform-origin:right center;transform-origin:right center}.dropdown>[data-popper-arrow],.dropdown>[data-popper-arrow]:after{display:block;width:0;height:0;border-color:transparent;border-style:solid;position:absolute}.dropdown>[data-popper-arrow]:after{content:""}.dropdown[data-popper-placement^=top]>[data-popper-arrow]{border-bottom-width:0}.dropdown[data-popper-placement^=top]>[data-popper-arrow]:after{border-bottom-width:0}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]{border-top-width:0}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-top-width:0}.dropdown[data-popper-placement^=right]>[data-popper-arrow]{border-left-width:0}.dropdown[data-popper-placement^=right]>[data-popper-arrow]:after{border-left-width:0}.dropdown[data-popper-placement^=left]>[data-popper-arrow]{border-right-width:0}.dropdown[data-popper-placement^=left]>[data-popper-arrow]:after{border-right-width:0}.dropdown>[data-popper-arrow],.dropdown>[data-popper-arrow]:after{border-width:6px}.dropdown[data-popper-placement^=top]>[data-popper-arrow]:after,.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]:after{margin-left:-6px}.dropdown[data-popper-placement^=left]>[data-popper-arrow]:after,.dropdown[data-popper-placement^=right]>[data-popper-arrow]:after{margin-top:-6px}.dropdown[data-popper-placement^=top]>[data-popper-arrow]{bottom:-6px}.dropdown[data-popper-placement^=top]>[data-popper-arrow]:after{bottom:1px}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]{top:-6px}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]:after{top:1px}.dropdown[data-popper-placement^=left]>[data-popper-arrow]{right:-6px}.dropdown[data-popper-placement^=left]>[data-popper-arrow]:after{right:1px}.dropdown[data-popper-placement^=right]>[data-popper-arrow]{left:-6px}.dropdown[data-popper-placement^=right]>[data-popper-arrow]:after{left:1px}.dropdown>.dropdown-header{border-width:var(----border-top-width) var(----border-right-width) 0 var(----border-left-width);border-style:var(----border-style);border-color:var(----border-color);background-color:var(----header--background);padding:var(----header--padding)}.dropdown>.dropdown-body{border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);background-color:var(----background);padding:var(----body--padding)}.dropdown>.dropdown-body .dropdown-wrapper{width:100%}.dropdown>.dropdown-body .dropdown-divider{margin-top:var(----divider--margin-top);margin-bottom:var(----divider--margin-bottom);background-color:var(----border-top-color)}.dropdown>.dropdown-footer{border-width:0 var(----border-right-width) var(----border-bottom-width) var(----border-left-width);border-style:var(----border-style);border-color:var(----border-color);background-color:var(----footer--background);padding:var(----footer--padding)}.dropdown>*:nth-child(2){border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.dropdown>*:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.dropdown[data-popper-placement^=top]>[data-popper-arrow]{border-top-color:var(----border-bottom-color)}.dropdown[data-popper-placement^=top]>[data-popper-arrow]:after{border-top-color:var(----background)}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]{border-bottom-color:var(----border-top-color)}.dropdown[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-bottom-color:var(----background)}.dropdown[data-popper-placement^=left]>[data-popper-arrow]{border-left-color:var(----border-right-color)}.dropdown[data-popper-placement^=left]>[data-popper-arrow]:after{border-left-color:var(----background)}.dropdown[data-popper-placement^=right]>[data-popper-arrow]{border-right-color:var(----border-left-color)}.dropdown[data-popper-placement^=right]>[data-popper-arrow]:after{border-right-color:var(----background)}.dropdown-divider{display:block;height:1px;width:100%;clear:both}.dropdown{----background: var(--color--white);----background--active: var(--color--light-25);----background--disabled: transparent;----background--hover: var(--color--light-25);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----color--active: var(--dropdown-color-variant-light-color);----color--disabled: var(--color--light-65);----color--hover: var(--dropdown-color-variant-light-color);----font-weight: var(--font-weight--normal);----font-size: var(--font-size);----line-height: var(--line-height);----min-width: 240px;----max-width: 90vw;----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----z-index: 2000;----divider--margin-top: calc(var(--margin-top) / 2);----divider--margin-bottom: calc(var(--margin-bottom) / 2);----item--padding-top: calc(var(----padding-top) / 2);----item--padding-right: var(----padding-right);----item--padding-bottom: calc(var(----padding-bottom) / 2);----item--padding-left: var(----padding-left);----item--padding: var(----item--padding-top) var(----item--padding-right) var(----item--padding-bottom) var(----item--padding-left);----header--background: var(--color--gray-05);----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--padding-top: var(----padding-top);----body--padding-right: 0;----body--padding-bottom: var(----padding-bottom);----body--padding-left: 0;----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left);----footer--background: var(--color--gray-05);----footer--padding-top: var(----padding-top);----footer--padding-right: var(----padding-right);----footer--padding-bottom: var(----padding-bottom);----footer--padding-left: var(----padding-left);----footer--padding: var(----footer--padding-top) var(----footer--padding-right) var(----footer--padding-bottom) var(----footer--padding-left)}.dropdown .dropdown-item{display:block;width:100%;clear:both;margin-bottom:0;text-align:inherit;white-space:nowrap;background-color:transparent;border:0;cursor:pointer;-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);color:var(----color);border-color:var(----border-color);padding:var(----item--padding);background:var(----background)}.dropdown .dropdown-item:not(.-disabled):not(.-plaintext):hover,.dropdown .dropdown-item:not(.-disabled):not(.-plaintext):focus{----color: var(----color--hover);----background: var(----background--hover)}.dropdown .dropdown-item.-disabled{----color: var(----color--disabled);----background: var(----background--disabled)}.dropdown .dropdown-item.-active{----color: var(----color--active);----background: var(----background--active)}.dropdown .dropdown-item:hover,.dropdown .dropdown-item:focus{outline:0;-webkit-text-decoration:none;text-decoration:none}.dropdown .dropdown-item.-disabled{pointer-events:none;cursor:default}.dropdown .dropdown-item.-plaintext{cursor:default}.dropdown .dropdown-item.-active{font-weight:700}.input-wrapper[data-v-575ccba7]{----background: var(--color--white);----background--disabled: var(--color--light-25);----border-color: var(--color--light-55);----border-color--hover: var(--color--light-60);----border-color--focus: var(--color--primary);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----color--disabled: var(--color--light-75);----font-size: var(--font-size);----line-height: var(--line-height);----padding-top: calc(var(--padding-top) / 2);----padding-right: var(--padding-right);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----clear--background: transparent;----clear--background--hover: var(--color--light-30);----clear--background--active: var(--color--light-40);----clear--color: var(--color--light-70);----clear--size: 1.2rem;----placeholder--color: var(--color--light-60);----prefix--border-width: var(----border-right-width);----suffix--border-width: var(----border-left-width);----prefix-suffix--border-style: var(--border-style);----prefix-suffix--color: var(--color--light-70);----prefix-suffix--padding-right: var(----padding-right);----prefix-suffix--padding-left: var(----padding-left);----prepend-append--background: var(--color--light)}.form.-sm .input-wrapper[data-v-575ccba7],.form-group.-sm .input-wrapper[data-v-575ccba7],.input-wrapper.-sm[data-v-575ccba7]{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.form.-md .input-wrapper[data-v-575ccba7],.form-group.-md .input-wrapper[data-v-575ccba7],.input-wrapper.-md[data-v-575ccba7]{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.form.-lg .input-wrapper[data-v-575ccba7],.form-group.-lg .input-wrapper[data-v-575ccba7],.input-wrapper.-lg[data-v-575ccba7]{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.form.-light .input-wrapper[data-v-575ccba7],.form-group.-light .input-wrapper[data-v-575ccba7],.input-wrapper.-light[data-v-575ccba7]{----background: var(--color--white);----background--disabled: var(--color--light-25);----border-color: var(--color--light-55);----border-color--hover: var(--color--light-60);----border-color--focus: var(--color--primary);----color: var(--contrast-color-for-light-background);----color--disabled: var(--color--light-75);----clear--background: transparent;----clear--background--hover: var(--color--light-30);----clear--background--active: var(--color--light-40);----clear--color: var(--color--light-70);----placeholder--color: var(--color--light-60);----prefix-suffix--color: var(--color--light-70);----prepend-append--background: var(--color--light)}.form.-dark .input-wrapper[data-v-575ccba7],.form-group.-dark .input-wrapper[data-v-575ccba7],.input-wrapper.-dark[data-v-575ccba7]{----background: var(--color--dark);----background--disabled: var(--color--dark-40);----border-color: var(--color--dark-45);----border-color--hover: var(--color--dark-40);----border-color--focus: var(--color--primary);----color: var(--contrast-color-for-dark-background);----color--disabled: var(--color--gray-35);----clear--background: transparent;----clear--background--hover: var(--color--dark-35);----clear--background--active: var(--color--dark-30);----clear--color: var(--color--dark-30);----placeholder--color: var(--color--dark-25);----prefix-suffix--color: var(--color--dark-25);----prepend-append--background: var(--color--dark)}.input-wrapper[data-v-575ccba7]{display:block;vertical-align:middle;position:relative}.input-wrapper .input-prepend[data-v-575ccba7],.input-wrapper .input-append[data-v-575ccba7]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0;line-height:var(--input-line-height);-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);background-color:var(----prepend-append--background);font-size:var(----font-size)}.input-wrapper .input-prepend[data-v-575ccba7]>*,.input-wrapper .input-append[data-v-575ccba7]>*{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:auto 1 0px;flex:auto 1 0;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:0;padding-left:var(----prefix-suffix--padding-left);padding-right:var(----prefix-suffix--padding-right)}.input-wrapper .input-prepend>[class$=-wrapper][data-v-575ccba7],.input-wrapper .input-append>[class$=-wrapper][data-v-575ccba7]{padding-left:0;padding-right:0}.input-wrapper .input-prepend[data-v-575ccba7],.input-wrapper .input-prepend[data-v-575ccba7]>*:first-child{border-top-left-radius:var(----border-top-left-radius);border-bottom-left-radius:var(----border-bottom-left-radius)}.input-wrapper .input-append[data-v-575ccba7],.input-wrapper .input-append[data-v-575ccba7]>*:last-child{border-top-right-radius:var(----border-top-right-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.input-wrapper .input[data-v-575ccba7]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background-clip:padding-box;border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);-webkit-transition-property:background-color,color,border-color,-webkit-box-shadow;transition-property:background-color,color,border-color,-webkit-box-shadow;transition-property:background-color,color,border-color,box-shadow;transition-property:background-color,color,border-color,box-shadow,-webkit-box-shadow;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----color);background-color:var(----background);font-size:var(----font-size)}.input-wrapper .input[data-v-575ccba7]:hover{----border-color: var(----border-color--hover)}.input-wrapper .input[data-v-575ccba7]:focus-within{outline:0;-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);----border-color: var(----border-color--focus)}.input-wrapper .input>input[data-v-575ccba7],.input-wrapper .input>select[data-v-575ccba7],.input-wrapper .input>textarea[data-v-575ccba7]{position:relative;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;width:1%;background:transparent;border:0;margin:0;outline:0;line-height:var(----line-height);color:var(----color);padding:var(----padding)}.input-wrapper .input>input[data-v-575ccba7]::-ms-expand,.input-wrapper .input>select[data-v-575ccba7]::-ms-expand,.input-wrapper .input>textarea[data-v-575ccba7]::-ms-expand{background-color:transparent;border:0}.input-wrapper .input>input[data-v-575ccba7]::-webkit-input-placeholder,.input-wrapper .input>select[data-v-575ccba7]::-webkit-input-placeholder,.input-wrapper .input>textarea[data-v-575ccba7]::-webkit-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input[data-v-575ccba7]::-moz-placeholder,.input-wrapper .input>select[data-v-575ccba7]::-moz-placeholder,.input-wrapper .input>textarea[data-v-575ccba7]::-moz-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input[data-v-575ccba7]:-ms-input-placeholder,.input-wrapper .input>select[data-v-575ccba7]:-ms-input-placeholder,.input-wrapper .input>textarea[data-v-575ccba7]:-ms-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input[data-v-575ccba7]::-ms-input-placeholder,.input-wrapper .input>select[data-v-575ccba7]::-ms-input-placeholder,.input-wrapper .input>textarea[data-v-575ccba7]::-ms-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input[data-v-575ccba7]::placeholder,.input-wrapper .input>select[data-v-575ccba7]::placeholder,.input-wrapper .input>textarea[data-v-575ccba7]::placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input[data-v-575ccba7]:disabled,.input-wrapper .input>input[readonly][data-v-575ccba7],.input-wrapper .input>select[data-v-575ccba7]:disabled,.input-wrapper .input>select[readonly][data-v-575ccba7],.input-wrapper .input>textarea[data-v-575ccba7]:disabled,.input-wrapper .input>textarea[readonly][data-v-575ccba7]{opacity:1;cursor:default}.input-wrapper .input>input[readonly][data-v-575ccba7]:focus,.input-wrapper .input>select[readonly][data-v-575ccba7]:focus,.input-wrapper .input>textarea[readonly][data-v-575ccba7]:focus{outline:0}.input-wrapper .input .input-prefix[data-v-575ccba7],.input-wrapper .input .input-suffix[data-v-575ccba7]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;font-style:normal;-webkit-transition-property:border-color;transition-property:border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);border-color:var(----border-color);color:var(----prefix-suffix--color);padding-right:var(----prefix-suffix--padding-right);padding-left:var(----prefix-suffix--padding-left)}.input-wrapper .input .input-prefix>button[data-v-575ccba7],.input-wrapper .input .input-suffix>button[data-v-575ccba7]{background:transparent;border:0;color:inherit}.input-wrapper .input .input-prefix[data-v-575ccba7]{border-right-width:var(----prefix--border-width);border-right-style:var(----prefix-suffix--border-style)}.input-wrapper .input .input-suffix[data-v-575ccba7]{border-left-width:var(----suffix--border-width);border-left-style:var(----prefix-suffix--border-style)}.input-wrapper .input .input-clear[data-v-575ccba7]{-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;width:var(----clear--size);height:var(----clear--size);border-radius:100%;background-color:var(----clear--background);color:var(----clear--color)}.input-wrapper .input .input-clear[data-v-575ccba7]:hover,.input-wrapper .input .input-clear[data-v-575ccba7]:focus{----clear--color: var(----clear--color--hover);----clear--background: var(----clear--background--hover)}.input-wrapper .input .input-clear[data-v-575ccba7]:active{----clear--background: var(----clear--background--active)}.input-wrapper .input .input-clear[data-v-575ccba7]:before{background-color:var(----clear--color);content:"";-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:8px 8px;mask-size:8px 8px;height:8px;width:8px}.input-wrapper.-prepended[data-v-575ccba7],.input-wrapper.-appended[data-v-575ccba7]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.input-wrapper.-prepended>.input[data-v-575ccba7],.input-wrapper.-appended>.input[data-v-575ccba7]{-ms-flex-negative:1;flex-shrink:1}.input-wrapper.-prepended>.input[data-v-575ccba7]{border-top-left-radius:0;border-bottom-left-radius:0}.input-wrapper.-appended>.input[data-v-575ccba7]{border-top-right-radius:0;border-bottom-right-radius:0}.input-wrapper.-error>.input[data-v-575ccba7]{----border-color: var(--color--danger)}.input-wrapper.-disabled>.input[data-v-575ccba7],.input-wrapper.-readonly>.input[data-v-575ccba7]{----color: var(----color--disabled);----background: var(----background--disabled)}.input-wrapper.-disabled>.input[data-v-575ccba7]:hover,.input-wrapper.-readonly>.input[data-v-575ccba7]:hover{border-color:var(----border-color)}.input-wrapper.-disabled>.input>input[data-v-575ccba7]:disabled,.input-wrapper.-disabled>.input>input[readonly][data-v-575ccba7],.input-wrapper.-disabled>.input>select[data-v-575ccba7]:disabled,.input-wrapper.-disabled>.input>select[readonly][data-v-575ccba7],.input-wrapper.-disabled>.input>textarea[data-v-575ccba7]:disabled,.input-wrapper.-disabled>.input>textarea[readonly][data-v-575ccba7],.input-wrapper.-readonly>.input>input[data-v-575ccba7]:disabled,.input-wrapper.-readonly>.input>input[readonly][data-v-575ccba7],.input-wrapper.-readonly>.input>select[data-v-575ccba7]:disabled,.input-wrapper.-readonly>.input>select[readonly][data-v-575ccba7],.input-wrapper.-readonly>.input>textarea[data-v-575ccba7]:disabled,.input-wrapper.-readonly>.input>textarea[readonly][data-v-575ccba7]{----color: var(----color--disabled)}.input-wrapper.-readonly>.input[data-v-575ccba7]:focus-within{outline:0;----border-color: var(----border-color--focus)}.form[data-v-575ccba7]{position:relative}.form-group{----margin-top: var(--margin-top)}.form-group{display:block;vertical-align:middle;position:relative}.form-group+.form-group{margin-top:var(----margin-top)}.form-group.-inline{display:-webkit-box;display:-ms-flexbox;display:flex}.form-group.-inline>.form-input-group{-ms-flex-preferred-size:100%;flex-basis:100%}.form-group.-inline>.form-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-item-align:center;align-self:center;margin-bottom:0}.form-group.-inline>.form-label.-right{margin-right:0}.form-error{----font-size: var(--font-size--sm);----margin-top: calc(var(--margin-top) / 4);----margin-right: 0;----margin-bottom: 0;----margin-left: 0;----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----color: var(--color--danger)}.form-error{position:relative;margin:var(----margin);padding:0;list-style:none;color:var(----color);font-size:var(--font-size--sm)}.form-error li{margin:0}.form-label{----font-size: var(--font-size);----margin-top: 0;----margin-right: var(--margin-right);----margin-bottom: calc(var(--margin-bottom) / 4);----margin-left: var(--margin-left)}.form.-sm .form-label,.form-group.-sm .form-label,.form-label.-sm{----font-size: calc(var(--font-size) * var(--size-multiplier--sm))}.form.-md .form-label,.form-group.-md .form-label,.form-label.-md{----font-size: calc(var(--font-size) * var(--size-multiplier--md))}.form.-lg .form-label,.form-group.-lg .form-label,.form-label.-lg{----font-size: calc(var(--font-size) * var(--size-multiplier--lg))}.form-label{position:relative;-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-transition:color var(--transition-easing) var(--transition-duration);transition:color var(--transition-easing) var(--transition-duration);font-size:var(----font-size);margin-top:var(----margin-top);margin-bottom:var(----margin-bottom)}.form-label.-right{margin-right:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.form-group.-required>.form-label:after{color:var(--color--danger);content:" *"}.form-group.-error>.form-label{color:var(--color-danger)}.form-group.-inline>.form-label{margin-right:var(----margin-right)}.form-group.-inline>.form-label.-right{margin-left:var(----margin-left)}.hamburger-menu{----background: var(--color--dark);----opacity: .7;----opacity--hover: 1;----padding-top: calc(var(--padding-top) / 2);----padding-right: calc(var(--padding-right) / 2);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: calc(var(--padding-left) / 2);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----bar--border-radius: 2px;----bar--spacing: 5px;----bar--width: 30px;----bar--height: 3px}.hamburger-menu.-light{----background: var(--color--dark)}.hamburger-menu.-dark{----background: var(--color--light)}.hamburger-menu{opacity:var(----opacity);padding:var(----padding);width:var(----bar--width);height:calc(var(----bar--height) * 3 + var(----bar--spacing) * 2);display:inline-block;position:relative;-webkit-box-sizing:content-box;box-sizing:content-box;cursor:pointer;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.hamburger-menu:hover{----opacity: var(----opacity--hover)}.hamburger-menu>.hamburger-menu-bars{display:block;top:50%;margin-top:calc(var(----bar--height) / -2)}.hamburger-menu>.hamburger-menu-bars,.hamburger-menu>.hamburger-menu-bars:before,.hamburger-menu>.hamburger-menu-bars:after{width:var(----bar--width);height:var(----bar--height);border-radius:var(----bar--border-radius);background:var(----background);position:absolute;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.hamburger-menu>.hamburger-menu-bars:before,.hamburger-menu>.hamburger-menu-bars:after{content:"";display:block}.hamburger-menu>.hamburger-menu-bars:before{top:calc(var(----bar--spacing) * -1 + var(----bar--height) * -1)}.hamburger-menu>.hamburger-menu-bars:after{bottom:calc(var(----bar--spacing) * -1 + var(----bar--height) * -1)}.hamburger-menu.-close>.hamburger-menu-bars{-webkit-transition-duration:.22s;transition-duration:.22s;-webkit-transition-timing-function:cubic-bezier(.55,.055,.675,.19);transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger-menu.-close>.hamburger-menu-bars:before{-webkit-transition:top .1s .25s ease-in,opacity .1s ease-in;transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger-menu.-close>.hamburger-menu-bars:after{-webkit-transition:bottom .1s .25s ease-in,-webkit-transform .22s cubic-bezier(.55,.055,.675,.19);transition:bottom .1s .25s ease-in,-webkit-transform .22s cubic-bezier(.55,.055,.675,.19);transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19);transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19),-webkit-transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger-menu.-close.-active>.hamburger-menu-bars{-webkit-transform:rotate(225deg);transform:rotate(225deg);-webkit-transition-delay:.12s;transition-delay:.12s;-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger-menu.-close.-active>.hamburger-menu-bars:before{top:0;opacity:0;-webkit-transition:top .1s ease-out,opacity .1s .12s ease-out;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger-menu.-close.-active>.hamburger-menu-bars:after{bottom:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transition:bottom .1s ease-out,-webkit-transform .22s .12s cubic-bezier(.215,.61,.355,1);transition:bottom .1s ease-out,-webkit-transform .22s .12s cubic-bezier(.215,.61,.355,1);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1),-webkit-transform .22s .12s cubic-bezier(.215,.61,.355,1)}.hamburger-menu.-arrow-left.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(calc(var(----bar--width) * -.2),0,0) rotate(-45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * -.2),0,0) rotate(-45deg) scaleX(.7)}.hamburger-menu.-arrow-left.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(calc(var(----bar--width) * -.2),0,0) rotate(45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * -.2),0,0) rotate(45deg) scaleX(.7)}.hamburger-menu.-arrow-right.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scaleX(.7)}.hamburger-menu.-arrow-right.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scaleX(.7)}.hamburger-menu.-arrow-up.-active>.hamburger-menu-bars{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.hamburger-menu.-arrow-up.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scaleX(.7)}.hamburger-menu.-arrow-up.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scaleX(.7)}.hamburger-menu.-arrow-down.-active>.hamburger-menu-bars{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.hamburger-menu.-arrow-down.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(45deg) scaleX(.7)}.hamburger-menu.-arrow-down.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scale(.7,1);transform:translate3d(calc(var(----bar--width) * .2),0,0) rotate(-45deg) scaleX(.7)}.hamburger-menu.-minus.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(0,calc(var(----bar--spacing) + var(----bar--height)),0);transform:translate3d(0,calc(var(----bar--spacing) + var(----bar--height)),0)}.hamburger-menu.-minus.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(0,calc(var(----bar--spacing) * -1 + var(----bar--height) * -1),0);transform:translate3d(0,calc(var(----bar--spacing) * -1 + var(----bar--height) * -1),0)}.hamburger-menu.-plus.-active>.hamburger-menu-bars:before{-webkit-transform:translate3d(0,calc(var(----bar--spacing) + var(----bar--height)),0);transform:translate3d(0,calc(var(----bar--spacing) + var(----bar--height)),0)}.hamburger-menu.-plus.-active>.hamburger-menu-bars:after{-webkit-transform:translate3d(0,calc(var(----bar--spacing) * -1 + var(----bar--height) * -1),0) rotate(90deg);transform:translate3d(0,calc(var(----bar--spacing) * -1 + var(----bar--height) * -1),0) rotate(90deg)}.row{-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:calc(var(--gutter--xs) / -2);margin-right:calc(var(--gutter--xs) / -2)}@media screen and (min-width: 576px){.row{margin-left:calc(var(--gutter--sm) / -2);margin-right:calc(var(--gutter--sm) / -2)}}@media screen and (min-width: 768px){.row{margin-left:calc(var(--gutter--md) / -2);margin-right:calc(var(--gutter--md) / -2)}}@media screen and (min-width: 992px){.row{margin-left:calc(var(--gutter--lg) / -2);margin-right:calc(var(--gutter--lg) / -2)}}@media screen and (min-width: 1200px){.row{margin-left:calc(var(--gutter--xl) / -2);margin-right:calc(var(--gutter--xl) / -2)}}@media screen and (min-width: 1400px){.row{margin-left:calc(var(--gutter--xxl) / -2);margin-right:calc(var(--gutter--xxl) / -2)}}.row.-no-gutter{margin-left:0;margin-right:0}.row.-no-gutter>.column{padding-left:0;padding-right:0}.row.-no-collapse{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.row.-start-xs{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-xs{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-xs{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-xs{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-xs{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-xs{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-xs{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-xs{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-xs{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}@media screen and (min-width: 576px){.row.-start-sm{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-sm{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-sm{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-sm{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-sm{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-sm{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-sm{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-sm{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-sm{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media screen and (min-width: 768px){.row.-start-md{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-md{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-md{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-md{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-md{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-md{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-md{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-md{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-md{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media screen and (min-width: 992px){.row.-start-lg{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-lg{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-lg{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-lg{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-lg{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-lg{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-lg{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-lg{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-lg{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media screen and (min-width: 1200px){.row.-start-xl{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-xl{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-xl{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-xl{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-xl{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-xl{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-xl{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-xl{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-xl{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media screen and (min-width: 1400px){.row.-start-xxl{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center-xxl{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end-xxl{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top-xxl{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle-xxl{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom-xxl{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around-xxl{-ms-flex-pack:distribute;justify-content:space-around}.row.-between-xxl{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse-xxl{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}.row.-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.row.-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.row.-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.row.-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.row.-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.row.-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.row.-around{-ms-flex-pack:distribute;justify-content:space-around}.row.-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.row.-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.header{----background: var(--color--light);----color: var(--contrast-color-for-light-background);----padding-top: 10rem;----padding-right: 0rem;----padding-bottom: 10rem;----padding-left: 0rem;----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left)}.header.-sm{----padding-top: calc(10rem * var(--size-multiplier--sm));----padding-right: calc(0rem * var(--size-multiplier--sm));----padding-bottom: calc(10rem * var(--size-multiplier--sm));----padding-left: calc(0rem * var(--size-multiplier--sm))}.header.-md{----padding-top: calc(10rem * var(--size-multiplier--md));----padding-right: calc(0rem * var(--size-multiplier--md));----padding-bottom: calc(10rem * var(--size-multiplier--md));----padding-left: calc(0rem * var(--size-multiplier--md))}.header.-lg{----padding-top: calc(10rem * var(--size-multiplier--lg));----padding-right: calc(0rem * var(--size-multiplier--lg));----padding-bottom: calc(10rem * var(--size-multiplier--lg));----padding-left: calc(0rem * var(--size-multiplier--lg))}.header.-primary{----background: var(--color--primary);----color: var(--contrast-color-for-dark-background)}.header.-light{----background: var(--color--light);----color: var(--contrast-color-for-light-background)}.header.-dark{----background: var(--color--dark);----color: var(--contrast-color-for-dark-background)}.header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----color);background:var(----background);padding:var(----padding)}.header>.container,.header h1,.header h2,.header h3,.header h4,.header h5,.header h6,.header .h1,.header .h2,.header .h3,.header .h4,.header .h5,.header .h6{margin-top:0}.header.-cover{background-repeat:no-repeat;background-position:center center;background-attachment:scroll;background-attachment:initial;background-size:cover}.header.-fullscreen{padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100vw;height:100vh;max-width:100%;max-height:100%}.inkline-icon{----size: 1rem}.inkline-icon.-sm{----size: calc(1rem * var(--size-multiplier--sm))}.inkline-icon.-md{----size: calc(1rem * var(--size-multiplier--md))}.inkline-icon.-lg{----size: calc(1rem * var(--size-multiplier--lg))}.inkline-icon{height:var(----size)}.input-wrapper{----background: var(--color--white);----background--disabled: var(--color--light-25);----border-color: var(--color--light-55);----border-color--hover: var(--color--light-60);----border-color--focus: var(--color--primary);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----color--disabled: var(--color--light-75);----font-size: var(--font-size);----line-height: var(--line-height);----padding-top: calc(var(--padding-top) / 2);----padding-right: var(--padding-right);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----clear--background: transparent;----clear--background--hover: var(--color--light-30);----clear--background--active: var(--color--light-40);----clear--color: var(--color--light-70);----clear--size: 1.2rem;----placeholder--color: var(--color--light-60);----prefix--border-width: var(----border-right-width);----suffix--border-width: var(----border-left-width);----prefix-suffix--border-style: var(--border-style);----prefix-suffix--color: var(--color--light-70);----prefix-suffix--padding-right: var(----padding-right);----prefix-suffix--padding-left: var(----padding-left);----prepend-append--background: var(--color--light)}.form.-sm .input-wrapper,.form-group.-sm .input-wrapper,.input-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.form.-md .input-wrapper,.form-group.-md .input-wrapper,.input-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.form.-lg .input-wrapper,.form-group.-lg .input-wrapper,.input-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.form.-light .input-wrapper,.form-group.-light .input-wrapper,.input-wrapper.-light{----background: var(--color--white);----background--disabled: var(--color--light-25);----border-color: var(--color--light-55);----border-color--hover: var(--color--light-60);----border-color--focus: var(--color--primary);----color: var(--contrast-color-for-light-background);----color--disabled: var(--color--light-75);----clear--background: transparent;----clear--background--hover: var(--color--light-30);----clear--background--active: var(--color--light-40);----clear--color: var(--color--light-70);----placeholder--color: var(--color--light-60);----prefix-suffix--color: var(--color--light-70);----prepend-append--background: var(--color--light)}.form.-dark .input-wrapper,.form-group.-dark .input-wrapper,.input-wrapper.-dark{----background: var(--color--dark);----background--disabled: var(--color--dark-40);----border-color: var(--color--dark-45);----border-color--hover: var(--color--dark-40);----border-color--focus: var(--color--primary);----color: var(--contrast-color-for-dark-background);----color--disabled: var(--color--gray-35);----clear--background: transparent;----clear--background--hover: var(--color--dark-35);----clear--background--active: var(--color--dark-30);----clear--color: var(--color--dark-30);----placeholder--color: var(--color--dark-25);----prefix-suffix--color: var(--color--dark-25);----prepend-append--background: var(--color--dark)}.input-wrapper{display:block;vertical-align:middle;position:relative}.input-wrapper .input-prepend,.input-wrapper .input-append{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0;line-height:var(--input-line-height);-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);background-color:var(----prepend-append--background);font-size:var(----font-size)}.input-wrapper .input-prepend>*,.input-wrapper .input-append>*{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:auto 1 0px;flex:auto 1 0;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:0;padding-left:var(----prefix-suffix--padding-left);padding-right:var(----prefix-suffix--padding-right)}.input-wrapper .input-prepend>[class$=-wrapper],.input-wrapper .input-append>[class$=-wrapper]{padding-left:0;padding-right:0}.input-wrapper .input-prepend,.input-wrapper .input-prepend>*:first-child{border-top-left-radius:var(----border-top-left-radius);border-bottom-left-radius:var(----border-bottom-left-radius)}.input-wrapper .input-append,.input-wrapper .input-append>*:last-child{border-top-right-radius:var(----border-top-right-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.input-wrapper .input{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background-clip:padding-box;border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);-webkit-transition-property:background-color,color,border-color,-webkit-box-shadow;transition-property:background-color,color,border-color,-webkit-box-shadow;transition-property:background-color,color,border-color,box-shadow;transition-property:background-color,color,border-color,box-shadow,-webkit-box-shadow;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----color);background-color:var(----background);font-size:var(----font-size)}.input-wrapper .input:hover{----border-color: var(----border-color--hover)}.input-wrapper .input:focus-within{outline:0;-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);----border-color: var(----border-color--focus)}.input-wrapper .input>input,.input-wrapper .input>select,.input-wrapper .input>textarea{position:relative;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;width:1%;background:transparent;border:0;margin:0;outline:0;line-height:var(----line-height);color:var(----color);padding:var(----padding)}.input-wrapper .input>input::-ms-expand,.input-wrapper .input>select::-ms-expand,.input-wrapper .input>textarea::-ms-expand{background-color:transparent;border:0}.input-wrapper .input>input::-webkit-input-placeholder,.input-wrapper .input>select::-webkit-input-placeholder,.input-wrapper .input>textarea::-webkit-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input::-moz-placeholder,.input-wrapper .input>select::-moz-placeholder,.input-wrapper .input>textarea::-moz-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input:-ms-input-placeholder,.input-wrapper .input>select:-ms-input-placeholder,.input-wrapper .input>textarea:-ms-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input::-ms-input-placeholder,.input-wrapper .input>select::-ms-input-placeholder,.input-wrapper .input>textarea::-ms-input-placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input::placeholder,.input-wrapper .input>select::placeholder,.input-wrapper .input>textarea::placeholder{opacity:1;color:var(----placeholder--color)}.input-wrapper .input>input:disabled,.input-wrapper .input>input[readonly],.input-wrapper .input>select:disabled,.input-wrapper .input>select[readonly],.input-wrapper .input>textarea:disabled,.input-wrapper .input>textarea[readonly]{opacity:1;cursor:default}.input-wrapper .input>input[readonly]:focus,.input-wrapper .input>select[readonly]:focus,.input-wrapper .input>textarea[readonly]:focus{outline:0}.input-wrapper .input .input-prefix,.input-wrapper .input .input-suffix{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;font-style:normal;-webkit-transition-property:border-color;transition-property:border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);border-color:var(----border-color);color:var(----prefix-suffix--color);padding-right:var(----prefix-suffix--padding-right);padding-left:var(----prefix-suffix--padding-left)}.input-wrapper .input .input-prefix>button,.input-wrapper .input .input-suffix>button{background:transparent;border:0;color:inherit}.input-wrapper .input .input-prefix{border-right-width:var(----prefix--border-width);border-right-style:var(----prefix-suffix--border-style)}.input-wrapper .input .input-suffix{border-left-width:var(----suffix--border-width);border-left-style:var(----prefix-suffix--border-style)}.input-wrapper .input .input-clear{-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;width:var(----clear--size);height:var(----clear--size);border-radius:100%;background-color:var(----clear--background);color:var(----clear--color)}.input-wrapper .input .input-clear:hover,.input-wrapper .input .input-clear:focus{----clear--color: var(----clear--color--hover);----clear--background: var(----clear--background--hover)}.input-wrapper .input .input-clear:active{----clear--background: var(----clear--background--active)}.input-wrapper .input .input-clear:before{background-color:var(----clear--color);content:"";-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:8px 8px;mask-size:8px 8px;height:8px;width:8px}.input-wrapper.-prepended,.input-wrapper.-appended{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.input-wrapper.-prepended>.input,.input-wrapper.-appended>.input{-ms-flex-negative:1;flex-shrink:1}.input-wrapper.-prepended>.input{border-top-left-radius:0;border-bottom-left-radius:0}.input-wrapper.-appended>.input{border-top-right-radius:0;border-bottom-right-radius:0}.input-wrapper.-error>.input{----border-color: var(--color--danger)}.input-wrapper.-disabled>.input,.input-wrapper.-readonly>.input{----color: var(----color--disabled);----background: var(----background--disabled)}.input-wrapper.-disabled>.input:hover,.input-wrapper.-readonly>.input:hover{border-color:var(----border-color)}.input-wrapper.-disabled>.input>input:disabled,.input-wrapper.-disabled>.input>input[readonly],.input-wrapper.-disabled>.input>select:disabled,.input-wrapper.-disabled>.input>select[readonly],.input-wrapper.-disabled>.input>textarea:disabled,.input-wrapper.-disabled>.input>textarea[readonly],.input-wrapper.-readonly>.input>input:disabled,.input-wrapper.-readonly>.input>input[readonly],.input-wrapper.-readonly>.input>select:disabled,.input-wrapper.-readonly>.input>select[readonly],.input-wrapper.-readonly>.input>textarea:disabled,.input-wrapper.-readonly>.input>textarea[readonly]{----color: var(----color--disabled)}.input-wrapper.-readonly>.input:focus-within{outline:0;----border-color: var(----border-color--focus)}.layout[data-v-9a9f03c1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;position:relative}.layout[data-v-9a9f03c1],.layout[data-v-9a9f03c1] *{-webkit-box-sizing:border-box;box-sizing:border-box}.layout.-vertical[data-v-9a9f03c1]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:100%}.layout.-vertical>.layout[data-v-9a9f03c1],.layout.-vertical>.container[data-v-9a9f03c1]{overflow-x:hidden}.layout>.container[data-v-9a9f03c1]{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.layout-aside[data-v-6e13c28d]{----width: 320px}.layout-aside[data-v-6e13c28d]{-webkit-transition:all .2s;transition:all .2s;position:relative;width:var(----width);-webkit-box-flex:0;-ms-flex:0 0 var(----width);flex:0 0 var(----width);min-width:0}.layout-aside-children[data-v-6e13c28d]{height:100%;padding-top:.1px;margin-top:-.1px}.layout-aside.-right[data-v-6e13c28d]{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.layout-content[data-v-5b197a5d]{-webkit-box-flex:1;-ms-flex:auto;flex:auto;min-width:0}.layout-footer[data-v-31bd8dbc],.layout-header[data-v-ece9ef9b]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.list-group{----background: var(--color--white);----background--active: var(--color--primary);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-color--active: var(--color--primary-55);----border-style: solid;----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----color: var(--contrast-color-for-light-background);----color--active: var(--contrast-color-for-dark-background);----color--disabled: var(--text-muted);----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left)}.list-group.-light{----background: var(--color--white);----background--active: var(--color--primary);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color--active: var(--color--primary-55);----color: var(--contrast-color-for-light-background);----color--active: var(--contrast-color-for-dark-background);----color--disabled: var(--text-muted)}.list-group.-dark{----background: var(--color--dark);----background--active: var(--color--primary);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----border-color--active: var(--color--primary-55);----color: var(--contrast-color-for-dark-background);----color--active: var(--contrast-color-for-dark-background);----color--disabled: var(--text-muted)}.list-group.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.list-group.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.list-group.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-transition-property:background-color,border-color;transition-property:background-color,border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);background-color:var(----background);color:var(----color);font-size:var(----font-size);border-radius:var(----border-radius)}.list-group.-border{border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color)}.list-group .list-group-item{display:block;margin-bottom:0;border-bottom-width:var(----border-bottom-width);border-bottom-style:var(----border-style);border-bottom-color:var(----border-bottom-color);-webkit-transition-property:color,border-color;transition-property:color,border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);padding:var(----padding)}.list-group .list-group-item.-active{color:var(----color--active);background:var(----background--active);border-bottom-color:var(----border-color--active)}.list-group .list-group-item:first-child{border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.list-group .list-group-item:last-child{border-bottom-width:0;border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.list-group .list-group-item:hover,.list-group .list-group-item:focus{-webkit-text-decoration:none;text-decoration:none}.list-group .list-group-item>*:first-child{margin-top:0}.list-group .list-group-item>*:last-child{margin-bottom:0}.list-group .list-group-item.-disabled{color:var(----color--disabled);pointer-events:none;cursor:default}.media{----image--margin-right: var(--margin-right)}.media{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.media>.media-body{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.media>.media-body>*:first-child{margin-top:0}.media>.media-body>*:last-child{margin-bottom:0}.media>img,.media>.img,.media>.image{-ms-flex-item-align:start;align-self:flex-start;height:auto;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:var(----image--margin-right)}.modal-wrapper{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----margin-top: var(--margin-top);----margin-right: var(--margin-right);----margin-bottom: var(--margin-bottom);----margin-left: var(--margin-left);----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----width: 480px;----header--background: var(--color--light-25);----header--border-color: var(----border-color);----header--border-style: var(----border-style);----header--border-top-width: var(----border-top-width);----header--border-right-width: var(----border-right-width);----header--border-bottom-width: var(----border-bottom-width);----header--border-left-width: var(----border-left-width);----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--color: var(----color);----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--background: var(----background);----body--border-color: var(----border-color);----body--border-style: var(----border-style);----body--border-top-width: var(----border-top-width);----body--border-right-width: var(----border-right-width);----body--border-bottom-width: var(----border-bottom-width);----body--border-left-width: var(----border-left-width);----body--border-width: var(----body--border-top-width) var(----body--border-right-width) var(----body--border-bottom-width) var(----body--border-left-width);----body--color: var(----color);----body--padding-top: var(----padding-top);----body--padding-right: var(----padding-right);----body--padding-bottom: var(----padding-bottom);----body--padding-left: var(----padding-left);----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left);----footer--background: var(--color--light-25);----footer--border-color: var(----border-color);----footer--border-style: var(----border-style);----footer--border-top-width: var(----border-top-width);----footer--border-right-width: var(----border-right-width);----footer--border-bottom-width: var(----border-bottom-width);----footer--border-left-width: var(----border-left-width);----footer--border-width: var(----footer--border-top-width) var(----footer--border-right-width) var(----footer--border-bottom-width) var(----footer--border-left-width);----footer--color: var(----color);----footer--padding-top: var(----padding-top);----footer--padding-right: var(----padding-right);----footer--padding-bottom: var(----padding-bottom);----footer--padding-left: var(----padding-left);----footer--padding: var(----footer--padding-top) var(----footer--padding-right) var(----footer--padding-bottom) var(----footer--padding-left);----wrapper--background: rgba(0, 0, 0, .75)}.modal-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----margin-top: calc(var(--margin-top) * var(--size-multiplier--sm));----margin-right: calc(var(--margin-right) * var(--size-multiplier--sm));----margin-bottom: calc(var(--margin-bottom) * var(--size-multiplier--sm));----margin-left: calc(var(--margin-left) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----width: calc(480px * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.modal-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----margin-top: calc(var(--margin-top) * var(--size-multiplier--md));----margin-right: calc(var(--margin-right) * var(--size-multiplier--md));----margin-bottom: calc(var(--margin-bottom) * var(--size-multiplier--md));----margin-left: calc(var(--margin-left) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----width: calc(480px * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.modal-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----margin-top: calc(var(--margin-top) * var(--size-multiplier--lg));----margin-right: calc(var(--margin-right) * var(--size-multiplier--lg));----margin-bottom: calc(var(--margin-bottom) * var(--size-multiplier--lg));----margin-left: calc(var(--margin-left) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----width: calc(480px * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.modal-wrapper.-primary{----background: var(--color--primary);----border-top-color: var(--color--primary-60);----border-right-color: var(--color--primary-60);----border-bottom-color: var(--color--primary-60);----border-left-color: var(--color--primary-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--primary-55);----footer--background: var(--color--primary-55)}.modal-wrapper.-secondary{----background: var(--color--secondary);----border-top-color: var(--color--secondary-60);----border-right-color: var(--color--secondary-60);----border-bottom-color: var(--color--secondary-60);----border-left-color: var(--color--secondary-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--secondary-55);----footer--background: var(--color--secondary-55)}.modal-wrapper.-light{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background);----header--background: var(--color--light-25);----footer--background: var(--color--light-25)}.modal-wrapper.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--dark-55);----footer--background: var(--color--dark-55)}.modal-wrapper.-info{----background: var(--color--info);----border-top-color: var(--color--info-60);----border-right-color: var(--color--info-60);----border-bottom-color: var(--color--info-60);----border-left-color: var(--color--info-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--info-55);----footer--background: var(--color--info-55)}.modal-wrapper.-success{----background: var(--color--success);----border-top-color: var(--color--success-60);----border-right-color: var(--color--success-60);----border-bottom-color: var(--color--success-60);----border-left-color: var(--color--success-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--success-55);----footer--background: var(--color--success-55)}.modal-wrapper.-warning{----background: var(--color--warning);----border-top-color: var(--color--warning-60);----border-right-color: var(--color--warning-60);----border-bottom-color: var(--color--warning-60);----border-left-color: var(--color--warning-60);----color: var(--contrast-color-for-light-background);----header--background: var(--color--warning-55);----footer--background: var(--color--warning-55)}.modal-wrapper.-danger{----background: var(--color--danger);----border-top-color: var(--color--danger-60);----border-right-color: var(--color--danger-60);----border-bottom-color: var(--color--danger-60);----border-left-color: var(--color--danger-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--danger-55);----footer--background: var(--color--danger-55)}.modal-wrapper{background:var(----wrapper--background);position:fixed;top:0;left:0;z-index:2000;width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.modal{text-align:left;list-style:none;line-height:var(----line-height);display:block;width:calc(100% - var(----margin-left) - var(----margin-right));max-width:var(----width);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.modal>.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:var(----header--background);border-color:var(----header--border-color);border-style:var(----header--border-style);border-width:var(----header--border-width);border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius);color:var(----header--color);padding:var(----header--padding)}.modal>.modal-header>.close{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:1.5rem;width:1.5rem;line-height:1.5rem;font-size:.5rem;cursor:pointer;padding:0;border:0;-webkit-transition:background-color .3s ease;transition:background-color .3s ease;background-color:transparent;border-radius:var(----border-radius)}.modal>.modal-header>.close>.icon{-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>times</title><path d="M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(----header--color);width:var(----font-size);height:var(----font-size);-webkit-mask-size:calc(var(----font-size) / 2) calc(var(----font-size) / 2);mask-size:calc(var(----font-size) / 2) calc(var(----font-size) / 2)}.modal>.modal-header>.close:hover,.modal>.modal-header>.close:focus{outline:none;background-color:#0000001a}.modal>.modal-header>.close:active{background-color:#00000026}.modal>.modal-body{background:var(----body--background);border-color:var(----body--border-color);border-style:var(----body--border-style);border-width:var(----body--border-width);color:var(----body--color);padding:var(----body--padding)}.modal>.modal-footer{background:var(----footer--background);border-color:var(----footer--border-color);border-style:var(----footer--border-style);border-width:var(----footer--border-width);border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius);color:var(----footer--color);padding:var(----footer--padding)}.modal>.modal-header+.modal-body,.modal>.modal-header+.modal-footer,.modal>.modal-body+.modal-footer,.modal>.modal-body+.modal-body{border-top-width:0}.nav.-light{----color: var(--contrast-color-for-light-background);----color--active: var(--contrast-color-for-dark-background);----color--disabled: var(--text-muted)}.nav.-dark{----color: var(--contrast-color-for-dark-background);----color--active: var(--contrast-color-for-dark-background);----color--disabled: var(--text-muted)}.nav.-sm{----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.nav.-md{----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.nav.-lg{----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-bottom:0;list-style:none}.nav.-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.nav{----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----color: contrast-color($color-light);----color--active: var(--color--primary);----color--disabled: var(--text-muted)}.nav .nav-item{display:block;margin-bottom:0;-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);padding:var(----padding);color:var(----color);font-size:var(----font-size)}.nav .nav-item:hover,.nav .nav-item:focus{-webkit-text-decoration:none;text-decoration:none;outline:0}.nav .nav-item.-disabled{pointer-events:none;cursor:default;color:var(----color--disabled)}.nav .nav-item.-active{----color: var(----color--active);font-weight:700}.navbar{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: 0;----padding-bottom: var(--padding-bottom);----padding-left: 0;----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----color: var(--contrast-color-for-light-background);----item--background: var(--color--light);----item--background--hover: var(--color--light-55);----item--color: var(----color);----item--color--hover: var(----color);----item--padding-top: calc(var(--padding-top) / 2);----item--padding-right: var(--padding-right);----item--padding-bottom: calc(var(--padding-bottom) / 2);----item--padding-left: var(--padding-left);----item--padding: var(----item--padding-top) var(----item--padding-right) var(----item--padding-bottom) var(----item--padding-left);----collapsed--background: var(--color--light);----collapsed--item--color: var(----color);----collapsed--item--color--hover: var(----color);----collapsed--item--background: var(----item--background);----collapsed--item--background--hover: var(----item--background--hover);----brand--margin-right: var(--margin-right)}.navbar.-light{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----color: var(--contrast-color-for-light-background);----item--background: var(--color--light);----item--background--hover: var(--color--light-55);----collapsed--background: var(--color--light)}.navbar.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-40);----border-right-color: var(--color--dark-40);----border-bottom-color: var(--color--dark-40);----border-left-color: var(--color--dark-40);----color: var(--contrast-color-for-dark-background);----item--background: var(--color--dark);----item--background--hover: var(--color--dark-45);----collapsed--background: var(--color--dark)}.navbar.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.navbar.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.navbar.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.navbar{color:var(----color);background:var(----background);padding:var(----padding);font-size:var(----font-size);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);border-radius:var(----border-radius)}.navbar>.container>.row>.column{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar .navbar-collapsible .nav-item{----color: var(----item--color);----padding: var(----item--padding);----font-size: var(----font-size);----background: var(----item--background);border-radius:var(----border-radius);background:var(----background)}.navbar .navbar-collapsible .nav-item.-focused,.navbar .navbar-collapsible .nav-item.-hovered,.navbar .navbar-collapsible .nav-item:focus,.navbar .navbar-collapsible .nav-item:hover{----color: var(----item--color--hover);----background: var(----item--background--hover)}.navbar.-collapsible .navbar-collapsible{background:var(----collapsed--background)}.navbar.-collapsible .navbar-collapsible .nav-item{----background: var(----collapsed--item--background);----color: var(----collapsed--item--color)}.navbar.-collapsible .navbar-collapsible .nav-item:hover{----color: var(----collapsed--item--color--hover);----background: var(----collapsed--item--background--hover)}.navbar .collapse-toggle{display:none}@media screen and (max-width: 575px){.navbar.-collapse-xs .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-xs .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-xs .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-xs .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-xs .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-xs .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-xs .collapse-toggle{display:inline-block}.navbar.-collapse-xs .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-xs .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}}@media screen and (max-width: 767px){.navbar.-collapse-sm .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-sm .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-sm .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-sm .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-sm .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-sm .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-sm .collapse-toggle{display:inline-block}.navbar.-collapse-sm .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-sm .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}}@media screen and (max-width: 991px){.navbar.-collapse-md .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-md .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-md .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-md .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-md .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-md .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-md .collapse-toggle{display:inline-block}.navbar.-collapse-md .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-md .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}}@media screen and (max-width: 1199px){.navbar.-collapse-lg .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-lg .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-lg .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-lg .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-lg .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-lg .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-lg .collapse-toggle{display:inline-block}.navbar.-collapse-lg .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-lg .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}}@media screen and (max-width: 1399px){.navbar.-collapse-xl .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-xl .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-xl .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-xl .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-xl .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-xl .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-xl .collapse-toggle{display:inline-block}.navbar.-collapse-xl .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-xl .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}}.navbar.-collapse-xxl .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-xxl .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-xxl .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-xxl .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-xxl .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-xxl .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-xxl .collapse-toggle{display:inline-block}.navbar.-collapse-xxl .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar.-collapse-xxl .navbar-collapsible{margin-top:var(----padding-top);border-radius:var(----border-radius)}.navbar.-collapse-true .navbar-collapsible{position:relative;display:block;width:100%}.navbar.-collapse-true .navbar-collapsible .nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.navbar.-collapse-true .navbar-collapsible .nav .nav-item{width:100%;-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.navbar.-collapse-true .navbar-collapsible .nav .dropdown-wrapper{width:100%}.navbar.-collapse-true .navbar-collapsible .nav .dropdown-wrapper .dropdown{width:100%;position:relative!important;left:auto!important;top:auto!important;-webkit-transform-origin:center top;transform-origin:center top}.navbar.-collapse-true .navbar-collapsible .nav .dropdown-wrapper .dropdown [data-popper-arrow]{display:none}.navbar.-collapse-true .collapse-toggle{display:inline-block}.navbar.-collapse-true .collapse-toggle+.navbar-brand{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.navbar .navbar-brand{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:var(----color);padding:var(----item--padding);font-size:var(----font-size);margin-right:var(----brand--margin-right);line-height:inherit;white-space:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar .navbar-brand:hover,.navbar .navbar-brand:focus{-webkit-text-decoration:none;text-decoration:none}.navbar .navbar-brand>h1,.navbar .navbar-brand>h2,.navbar .navbar-brand>h3,.navbar .navbar-brand>h4,.navbar .navbar-brand>h5,.navbar .navbar-brand>h6{margin-top:0;margin-bottom:0}.navbar .navbar-collapsible{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.pagination{----background: var(--color--light);----background--hover: var(--color--light-55);----background--active: var(--color--primary);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-color--active: var(--color--primary-55);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----color--active: var(--contrast-color-for-dark-background);----font-size: var(--font-size);----margin-top: 0;----margin-right: calc(var(--margin-right) / 4);----margin-bottom: 0;----margin-left: calc(var(--margin-left) / 4);----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----min-width: 40px;----opacity--disabled: .85;----padding-top: calc(var(--padding-top) / 2);----padding-right: calc(var(--padding-right) / 2);----padding-bottom: calc(var(--padding-bottom) / 2);----padding-left: calc(var(--padding-left) / 2);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left)}.pagination.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----margin-right: calc(calc(var(--margin-right) / 4) * var(--size-multiplier--sm));----margin-left: calc(calc(var(--margin-left) / 4) * var(--size-multiplier--sm));----min-width: calc(40px * var(--size-multiplier--sm));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--sm));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--sm))}.pagination.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----margin-right: calc(calc(var(--margin-right) / 4) * var(--size-multiplier--md));----margin-left: calc(calc(var(--margin-left) / 4) * var(--size-multiplier--md));----min-width: calc(40px * var(--size-multiplier--md));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--md));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--md))}.pagination.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----margin-right: calc(calc(var(--margin-right) / 4) * var(--size-multiplier--lg));----margin-left: calc(calc(var(--margin-left) / 4) * var(--size-multiplier--lg));----min-width: calc(40px * var(--size-multiplier--lg));----padding-right: calc(calc(var(--padding-right) / 2) * var(--size-multiplier--lg));----padding-left: calc(calc(var(--padding-left) / 2) * var(--size-multiplier--lg))}.pagination.-light{----background: var(--color--light);----background--hover: var(--color--light-55);----background--active: var(--color--primary);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color--active: var(--color--primary-55);----color: var(--contrast-color-for-light-background);----color--active: var(--contrast-color-for-dark-background)}.pagination.-dark{----background: var(--color--dark);----background--hover: var(--color--dark-45);----background--active: var(--color--primary);----border-top-color: var(--color--dark-45);----border-right-color: var(--color--dark-45);----border-bottom-color: var(--color--dark-45);----border-left-color: var(--color--dark-45);----border-color--active: var(--color--primary-55);----color: var(--contrast-color-for-dark-background);----color--active: var(--contrast-color-for-dark-background)}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;max-width:100%;font-size:var(----font-size)}.pagination .pagination-items{list-style:none;margin-bottom:0;padding-left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.pagination .pagination-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;border-color:var(----border-color);border-width:var(----border-width);border-style:var(----border-style);border-radius:var(----border-radius);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);padding:var(----padding);min-width:var(----min-width);color:var(----color);background-color:var(----background);margin:var(----margin);text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-transition-property:background,color,border;transition-property:background,color,border;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.pagination .pagination-item:hover:not(.-disabled),.pagination .pagination-item:focus:not(.-disabled){----background: var(----background--hover)}.pagination .pagination-item.-active{----background: var(----background--active);----border-color: var(----border-color--active);----color: var(----color--active);font-weight:700}.pagination .pagination-item.-active:hover,.pagination .pagination-item.-active:focus{----background: var(----background--active)}.pagination .pagination-item.-disabled{cursor:default;opacity:var(----opacity--disabled)}.pagination .pagination-item.-quick-next.-disabled,.pagination .pagination-item.-quick-previous.-disabled{----border-color: var(----background);opacity:var(----opacity--disabled)}.popover-wrapper{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----margin-top: calc(var(--margin-top) / 2);----margin-right: calc(var(--margin-right) / 2);----margin-bottom: calc(var(--margin-bottom) / 2);----margin-left: calc(var(--margin-left) / 2);----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----padding-top: calc(var(--padding-top) * 3 / 4);----padding-right: var(--padding-right);----padding-bottom: calc(var(--padding-bottom) * 3 / 4);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----max-width: 90vw;----width: 280px;----z-index: 2000;----header--background: var(--color--gray-05);----header--border-color: var(----border-color);----header--border-style: var(----border-style);----header--border-top-width: var(----border-top-width);----header--border-right-width: var(----border-right-width);----header--border-bottom-width: var(----border-bottom-width);----header--border-left-width: var(----border-left-width);----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--color: var(----color);----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--background: var(----background);----body--border-color: var(----border-color);----body--border-style: var(----border-style);----body--border-top-width: var(----border-top-width);----body--border-right-width: var(----border-right-width);----body--border-bottom-width: var(----border-bottom-width);----body--border-left-width: var(----border-left-width);----body--border-width: var(----body--border-top-width) var(----body--border-right-width) var(----body--border-bottom-width) var(----body--border-left-width);----body--color: var(----color);----body--padding-top: var(----padding-top);----body--padding-right: var(----padding-right);----body--padding-bottom: var(----padding-bottom);----body--padding-left: var(----padding-left);----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left);----footer--background: var(--color--gray-05);----footer--border-color: var(----border-color);----footer--border-style: var(----border-style);----footer--border-top-width: var(----border-top-width);----footer--border-right-width: var(----border-right-width);----footer--border-bottom-width: var(----border-bottom-width);----footer--border-left-width: var(----border-left-width);----footer--border-width: var(----footer--border-top-width) var(----footer--border-right-width) var(----footer--border-bottom-width) var(----footer--border-left-width);----footer--color: var(----color);----footer--padding-top: var(----padding-top);----footer--padding-right: var(----padding-right);----footer--padding-bottom: var(----padding-bottom);----footer--padding-left: var(----padding-left);----footer--padding: var(----footer--padding-top) var(----footer--padding-right) var(----footer--padding-bottom) var(----footer--padding-left)}.popover-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--sm));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--sm));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--sm));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.popover-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--md));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--md));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--md));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.popover-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--lg));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--lg));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--lg));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----footer--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.popover-wrapper.-light{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background);----header--background: var(--color--gray-05);----footer--background: var(--color--gray-05)}.popover-wrapper.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--dark-55);----footer--background: var(--color--dark-55)}.popover-wrapper{display:inline-block;position:relative}.popover-wrapper .popover-trigger{display:contents}.popover{position:fixed;z-index:var(----z-index);word-wrap:break-word;text-align:left;list-style:none;line-height:var(----line-height);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);background-clip:padding-box;display:inline-block;white-space:normal;width:var(----width);max-width:var(----max-width);color:var(----color);font-size:var(----font-size)}.popover:focus:hover{outline-width:0}.popover[data-popper-placement^=top]{-webkit-transform-origin:center bottom;transform-origin:center bottom}.popover[data-popper-placement^=bottom]{-webkit-transform-origin:center top;transform-origin:center top}.popover[data-popper-placement^=right]{-webkit-transform-origin:left center;transform-origin:left center}.popover[data-popper-placement^=left]{-webkit-transform-origin:right center;transform-origin:right center}.popover>[data-popper-arrow],.popover>[data-popper-arrow]:after{display:block;width:0;height:0;border-color:transparent;border-style:solid;position:absolute}.popover>[data-popper-arrow]:after{content:""}.popover[data-popper-placement^=top]>[data-popper-arrow]{border-bottom-width:0}.popover[data-popper-placement^=top]>[data-popper-arrow]:after{border-bottom-width:0}.popover[data-popper-placement^=bottom]>[data-popper-arrow]{border-top-width:0}.popover[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-top-width:0}.popover[data-popper-placement^=right]>[data-popper-arrow]{border-left-width:0}.popover[data-popper-placement^=right]>[data-popper-arrow]:after{border-left-width:0}.popover[data-popper-placement^=left]>[data-popper-arrow]{border-right-width:0}.popover[data-popper-placement^=left]>[data-popper-arrow]:after{border-right-width:0}.popover>[data-popper-arrow],.popover>[data-popper-arrow]:after{border-width:6px}.popover[data-popper-placement^=top]>[data-popper-arrow]:after,.popover[data-popper-placement^=bottom]>[data-popper-arrow]:after{margin-left:-6px}.popover[data-popper-placement^=left]>[data-popper-arrow]:after,.popover[data-popper-placement^=right]>[data-popper-arrow]:after{margin-top:-6px}.popover[data-popper-placement^=top]>[data-popper-arrow]{bottom:-6px}.popover[data-popper-placement^=top]>[data-popper-arrow]:after{bottom:1px}.popover[data-popper-placement^=bottom]>[data-popper-arrow]{top:-6px}.popover[data-popper-placement^=bottom]>[data-popper-arrow]:after{top:1px}.popover[data-popper-placement^=left]>[data-popper-arrow]{right:-6px}.popover[data-popper-placement^=left]>[data-popper-arrow]:after{right:1px}.popover[data-popper-placement^=right]>[data-popper-arrow]{left:-6px}.popover[data-popper-placement^=right]>[data-popper-arrow]:after{left:1px}.popover>.popover-header{border-style:var(----header--border-style);border-width:var(----header--border-width);border-bottom-width:0;border-color:var(----header--border-color);background-color:var(----header--background);padding:var(----header--padding)}.popover>.popover-body{border-style:var(----body--border-style);border-width:var(----body--border-width);background-color:var(----body--background);border-color:var(----body--border-color);padding:var(----body--padding)}.popover>.popover-footer{border-style:var(----footer--border-style);border-width:var(----footer--border-width);border-top-width:0;border-color:var(----footer--border-color);background-color:var(----footer--background);padding:var(----footer--padding)}.popover>*:nth-child(2){border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.popover>*:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.popover[data-popper-placement^=top]>[data-popper-arrow]{border-top-color:var(----border-top-color)}.popover[data-popper-placement^=top]>[data-popper-arrow]:after{border-top-color:var(----body--background)}.popover[data-popper-placement^=bottom]>[data-popper-arrow]{border-bottom-color:var(----border-bottom-color)}.popover[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-bottom-color:var(----body--background)}.popover[data-popper-placement^=left]>[data-popper-arrow]{border-left-color:var(----border-left-color)}.popover[data-popper-placement^=left]>[data-popper-arrow]:after{border-left-color:var(----body--background)}.popover[data-popper-placement^=right]>[data-popper-arrow]{border-right-color:var(----border-right-color)}.popover[data-popper-placement^=right]>[data-popper-arrow]:after{border-right-color:var(----body--background)}.progress{----background: var(--color--light);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----height: calc(var(--spacing) * 3 / 4)}.progress.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----height: calc(calc(var(--spacing) * 3 / 4) * var(--size-multiplier--sm))}.progress.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----height: calc(calc(var(--spacing) * 3 / 4) * var(--size-multiplier--md))}.progress.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----height: calc(calc(var(--spacing) * 3 / 4) * var(--size-multiplier--lg))}.progress.-light{----background: var(--color--light);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55)}.progress.-dark{----background: var(--color--dark-60);----border-top-color: var(--color--dark-45);----border-right-color: var(--color--dark-45);----border-bottom-color: var(--color--dark-45);----border-left-color: var(--color--dark-45)}.progress{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:100%;flex-basis:100%;position:relative;overflow:hidden;background:var(----background);border-radius:var(----border-radius);border-color:var(----border-color);border-style:var(----border-style);border-width:var(----border-width);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);height:var(----height)}.progress-bar,.progress-bar.-primary{----color: var(--contrast-color-for-dark-background);----background: var(--color--primary)}.progress-bar.-secondary{----color: var(--contrast-color-for-dark-background);----background: var(--color--secondary)}.progress-bar.-light{----color: var(--contrast-color-for-light-background);----background: var(--color--white)}.progress-bar.-dark{----color: var(--contrast-color-for-dark-background);----background: var(--color--dark)}.progress-bar.-info{----color: var(--contrast-color-for-dark-background);----background: var(--color--info)}.progress-bar.-success{----color: var(--contrast-color-for-dark-background);----background: var(--color--success)}.progress-bar.-warning{----color: var(--contrast-color-for-light-background);----background: var(--color--warning)}.progress-bar.-danger{----color: var(--contrast-color-for-dark-background);----background: var(--color--danger)}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;white-space:nowrap;height:100%;color:var(----color);background:var(----background)}.radio{----background: var(--color--white);----background--checked: var(--color--primary);----background--disabled: var(--color--light-25);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: 50%;----border-top-right-radius: 50%;----border-bottom-right-radius: 50%;----border-bottom-left-radius: 50%;----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--color--white);----color--disabled: var(--color--light-25);----margin-right: calc(var(--margin-right) / 2);----size: 1rem;----checkmark--size: 8px;----label--font-size: var(--font-size);----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70)}.form.-light .radio,.form-group.-light .radio,.radio.-light{----background: var(--color--white);----background--checked: var(--color--primary);----background--disabled: var(--color--light-25);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----color: var(--color--white);----color--disabled: var(--color--light-25);----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70)}.form.-dark .radio,.form-group.-dark .radio,.radio.-dark{----background: var(--color--dark);----background--checked: var(--color--primary);----background--disabled: var(--color--dark-25);----background--checked-disabled: var(--color--primary-75);----border-color: var(--color--dark);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--dark);----border-color--checked-disabled: var(--color--primary-70);----color: var(--color--white);----color--disabled: var(--color--dark-25);----label--color: var(--contrast-color-for-dark-background);----label--color--disabled: var(--color--dark-30)}.form.-sm .radio,.form-group.-sm .radio,.radio.-sm{----size: calc(1rem * var(--size-multiplier--sm));----checkmark--size: calc(8px * var(--size-multiplier--sm));----label--font-size: calc(var(--font-size) * var(--size-multiplier--sm))}.form.-md .radio,.form-group.-md .radio,.radio.-md{----size: calc(1rem * var(--size-multiplier--md));----checkmark--size: calc(8px * var(--size-multiplier--md));----label--font-size: calc(var(--font-size) * var(--size-multiplier--md))}.form.-lg .radio,.form-group.-lg .radio,.radio.-lg{----size: calc(1rem * var(--size-multiplier--lg));----checkmark--size: calc(8px * var(--size-multiplier--lg));----label--font-size: calc(var(--font-size) * var(--size-multiplier--lg))}.radio{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;white-space:nowrap;outline:none;cursor:pointer;margin-right:var(----margin-right)}.radio:last-child{margin-right:0}.radio input{top:0;left:0;position:absolute;z-index:0;opacity:0;height:0;width:0}.radio input:focus,.radio input:active{outline:none}.radio input:checked~.radio-label:before{----border-color: var(----border-color--checked);----background: var(----background--checked)}.radio input:checked~.radio-label:after{content:"";-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="28" viewBox="0 0 24 28"><title>circle</title><path d="M24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="28" viewBox="0 0 24 28"><title>circle</title><path d="M24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.radio input:disabled~.radio-label,.radio input[readonly]~.radio-label{----label--color: var(----label--color--disabled)}.radio input:disabled:checked~.radio-label:before,.radio input[readonly]:checked~.radio-label:before{----border-color: var(----border-color--checked-disabled);----background: var(----background--checked-disabled)}.radio input:disabled:checked~.radio-label:after,.radio input[readonly]:checked~.radio-label:after{----background: var(----color--disabled)}.radio .radio-label{margin-bottom:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----label--color);font-size:var(----label--font-size)}.radio .radio-label:before,.radio .radio-label:after{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;width:var(----size);height:var(----size)}.radio .radio-label:before{border-radius:100%;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition-property:background-color,border-color;transition-property:background-color,border-color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);margin-right:var(----margin-right);border-color:var(----border-color);border-style:var(----border-style);border-width:var(----border-width);background-color:var(----background)}.radio .radio-label:after{position:absolute;top:50%;left:0;z-index:1;text-align:center;background-color:var(----color);margin-top:calc(var(----size) / -2);-webkit-mask-size:var(----checkmark--size) var(----checkmark--size);mask-size:var(----checkmark--size) var(----checkmark--size)}.radio.-disabled{cursor:default}.radio.-disabled .radio-label:before,.radio.-disabled .radio-label:after{cursor:default}.radio.-native input{top:auto;left:auto;position:relative;opacity:1;height:auto;width:auto;margin-right:var(----margin-right)}.radio.-native .radio-label:after,.radio.-native .radio-label:before{display:none}.radio-group[data-v-fa4fe77a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.radio-group.-inline[data-v-fa4fe77a]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.select .select-option{display:block;width:100%;clear:both;margin-bottom:0;border:0;cursor:pointer;-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration)}.select .select-option:hover,.select .select-option:focus{outline:0;-webkit-text-decoration:none;text-decoration:none}.select .select-option.-disabled{pointer-events:none;cursor:default}.select .select-option.-active{font-weight:700}.select-wrapper{----background: var(--color--white);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----margin-top: calc(var(--margin-top) / 2);----margin-right: calc(var(--margin-right) / 2);----margin-bottom: calc(var(--margin-bottom) / 2);----margin-left: calc(var(--margin-left) / 2);----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----min-width: 240px;----max-width: 90vw;----max-height: 300px;----z-index: 2000;----option--background: var(----background);----option--background--hover: var(--color--light-25);----option--background--active: var(----option-background--active);----option--background--disabled: transparent;----option--border-top-left-radius: 0;----option--border-top-right-radius: 0;----option--border-bottom-right-radius: 0;----option--border-bottom-left-radius: 0;----option--border-radius: var(----option--border-top-left-radius) var(----option--border-top-right-radius) var(----option--border-bottom-right-radius) var(----option--border-bottom-left-radius);----option--color: var(----color);----option--color--hover: var(----option--color);----option--color--active: var(----option--color);----option--color--disabled: var(--color--light-65);----option--padding-top: calc(var(----padding-top) / 2);----option--padding-right: var(----padding-right);----option--padding-bottom: calc(var(----padding-bottom) / 2);----option--padding-left: var(----padding-left);----option--padding: var(----option--padding-top) var(----option--padding-right) var(----option--padding-bottom) var(----option--padding-left);----divider--margin: calc(var(--spacing) * 1 / 2);----header--background: var(--color--gray-05);----header--border-color: var(----border-color);----header--border-style: var(----border-style);----header--border-top-width: var(----border-top-width);----header--border-right-width: var(----border-right-width);----header--border-bottom-width: 0;----header--border-left-width: var(----border-left-width);----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--color: var(----color);----header--padding-top: calc(var(----padding-top) * 3 / 4);----header--padding-right: var(----padding-right);----header--padding-bottom: calc(var(----padding-bottom) * 3 / 4);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left);----body--background: var(----background);----body--border-color: var(----border-color);----body--border-style: var(----border-style);----body--border-top-width: var(----border-top-width);----body--border-right-width: var(----border-right-width);----body--border-bottom-width: var(----border-bottom-width);----body--border-left-width: var(----border-left-width);----body--border-width: var(----body--border-top-width) var(----body--border-right-width) var(----body--border-bottom-width) var(----body--border-left-width);----body--color: var(----color);----body--padding-top: var(----padding-top);----body--padding-right: 0;----body--padding-bottom: var(----padding-bottom);----body--padding-left: 0;----body--padding: var(----body--padding-top) var(----body--padding-right) var(----body--padding-bottom) var(----body--padding-left);----footer--background: var(--color--gray-05);----footer--border-color: var(----border-color);----footer--border-style: var(----border-style);----footer--border-top-width: var(----border-top-width);----footer--border-right-width: var(----border-right-width);----footer--border-bottom-width: var(----border-bottom-width);----footer--border-left-width: var(----border-left-width);----footer--border-width: var(----footer--border-top-width) var(----footer--border-right-width) var(----footer--border-bottom-width) var(----footer--border-left-width);----footer--color: var(----color);----footer--padding-top: calc(var(----padding-top) * 3 / 4);----footer--padding-right: var(----padding-right);----footer--padding-bottom: calc(var(----padding-bottom) * 3 / 4);----footer--padding-left: var(----padding-left);----footer--padding: var(----footer--padding-top) var(----footer--padding-right) var(----footer--padding-bottom) var(----footer--padding-left)}.form.-sm .select-wrapper,.form-group.-sm .select-wrapper,.select-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--sm));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--sm));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--sm));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----option--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--sm));----option--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----header--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----body--padding-left: calc(0 * var(--size-multiplier--sm));----footer--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--sm));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.form.-md .select-wrapper,.form-group.-md .select-wrapper,.select-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--md));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--md));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--md));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----option--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--md));----option--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----header--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----body--padding-left: calc(0 * var(--size-multiplier--md));----footer--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--md));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.form.-lg .select-wrapper,.form-group.-lg .select-wrapper,.select-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--lg));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--lg));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--lg));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----option--padding-bottom: calc(calc(var(----padding-bottom) / 2) * var(--size-multiplier--lg));----option--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----header--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg));----body--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----body--padding-left: calc(0 * var(--size-multiplier--lg));----footer--padding-bottom: calc(calc(var(----padding-bottom) * 3 / 4) * var(--size-multiplier--lg));----footer--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.form.-light .select-wrapper,.form-group.-light .select-wrapper,.select-wrapper.-light{----background: var(--color--white);----border-top-color: var(--color--light-55);----border-right-color: var(--color--light-55);----border-bottom-color: var(--color--light-55);----border-left-color: var(--color--light-55);----color: var(--contrast-color-for-light-background);----option--background--hover: var(--color--light-25);----option--background--disabled: transparent;----option--color--disabled: var(--color--light-65);----header--background: var(--color--gray-05);----footer--background: var(--color--gray-05)}.form.-dark .select-wrapper,.form-group.-dark .select-wrapper,.select-wrapper.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-45);----border-right-color: var(--color--dark-45);----border-bottom-color: var(--color--dark-45);----border-left-color: var(--color--dark-45);----color: var(--contrast-color-for-dark-background);----option--background--hover: var(--color--dark-45);----option--background--disabled: transparent;----option--color--disabled: var(--color--dark-25);----header--background: var(--color--dark-55);----footer--background: var(--color--dark-55)}.select-wrapper{display:block;position:relative}.select-wrapper .select{position:fixed;z-index:var(----z-index);word-wrap:break-word;text-align:left;list-style:none;line-height:var(--select-line-height);background-clip:padding-box;display:inline-block;white-space:normal;min-width:var(----min-width);max-width:var(----max-width);color:var(----color);font-size:var(----font-size);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.select-wrapper .select:focus:hover{outline-width:0}.select-wrapper .select[data-popper-placement^=top]{-webkit-transform-origin:center bottom;transform-origin:center bottom}.select-wrapper .select[data-popper-placement^=bottom]{-webkit-transform-origin:center top;transform-origin:center top}.select-wrapper .select[data-popper-placement^=right]{-webkit-transform-origin:left center;transform-origin:left center}.select-wrapper .select[data-popper-placement^=left]{-webkit-transform-origin:right center;transform-origin:right center}.select-wrapper .select>[data-popper-arrow],.select-wrapper .select>[data-popper-arrow]:after{display:block;width:0;height:0;border-color:transparent;border-style:solid;position:absolute}.select-wrapper .select>[data-popper-arrow]:after{content:""}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]{border-bottom-width:0}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]:after{border-bottom-width:0}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]{border-top-width:0}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-top-width:0}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]{border-left-width:0}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]:after{border-left-width:0}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]{border-right-width:0}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]:after{border-right-width:0}.select-wrapper .select>[data-popper-arrow],.select-wrapper .select>[data-popper-arrow]:after{border-width:6px}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]:after,.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]:after{margin-left:-6px}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]:after,.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]:after{margin-top:-6px}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]{bottom:-6px}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]:after{bottom:1px}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]{top:-6px}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]:after{top:1px}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]{right:-6px}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]:after{right:1px}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]{left:-6px}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]:after{left:1px}.select-wrapper .select>.select-header{border-width:var(----header--border-width);border-style:var(----header--border-style);border-color:var(----header--border-color);background-color:var(----header--background);padding:var(----header--padding)}.select-wrapper .select>.select-body{overflow:auto;border-width:var(----body--border-width);border-style:var(----body--border-style);border-color:var(----body--border-color);background-color:var(----body--background);padding:var(----body--padding);max-height:var(----max-height)}.select-wrapper .select>.select-body .select-option{color:var(----option--color);border-color:var(----option--border-color);padding:var(----option--padding);background:var(----option--background);border-radius:var(----option--border-radius)}.select-wrapper .select>.select-body .select-option mark{padding-left:0;padding-right:0}.select-wrapper .select>.select-body .select-option:not(.-disabled):not(.-plaintext):hover,.select-wrapper .select>.select-body .select-option:not(.-disabled):not(.-plaintext):focus{----option--color: var(----option--color--hover);----option--background: var(----option--background--hover)}.select-wrapper .select>.select-body .select-option.-disabled{----option--color: var(----option--color--disabled);----option--background: var(----option--background--disabled)}.select-wrapper .select>.select-body .select-option.-active{----option--color: var(----option--color--active);----option--background: var(----option--background--active)}.select-wrapper .select>.select-body .select-divider{background-color:var(----divider--border-color)}.select-wrapper .select>.select-body .select-no-results{text-align:center}.select-wrapper .select>.select-footer{border-width:var(----footer--border-width);border-style:var(----footer--border-style);border-color:var(----footer--border-color);background-color:var(----footer--background);padding:var(----footer--padding)}.select-wrapper .select>*:nth-child(2){border-top-left-radius:var(----border-top-left-radius);border-top-right-radius:var(----border-top-right-radius)}.select-wrapper .select>*:last-child{border-bottom-left-radius:var(----border-bottom-left-radius);border-bottom-right-radius:var(----border-bottom-right-radius)}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]{border-top-color:var(----body--border-bottom-color)}.select-wrapper .select[data-popper-placement^=top]>[data-popper-arrow]:after{border-top-color:var(----body--background)}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]{border-bottom-color:var(----border-top-color)}.select-wrapper .select[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-bottom-color:var(----body--background)}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]{border-left-color:var(----border-right-color)}.select-wrapper .select[data-popper-placement^=left]>[data-popper-arrow]:after{border-left-color:var(----body--background)}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]{border-right-color:var(----border-left-color)}.select-wrapper .select[data-popper-placement^=right]>[data-popper-arrow]:after{border-right-color:var(----body--background)}.select-wrapper .input-wrapper *+.select-caret{margin-left:var(--spacing)}.select-wrapper .input-wrapper .input-suffix>.select-caret{cursor:pointer;-webkit-mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="28" viewBox="0 0 16 28"><title>caret-down</title><path d="M16 11c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"></path></svg>');mask-image:url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="28" viewBox="0 0 16 28"><title>caret-down</title><path d="M16 11c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"></path></svg>');-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(----color);height:var(----font-size);width:var(----font-size);-webkit-mask-size:var(----font-size) var(----font-size);mask-size:var(----font-size) var(----font-size)}.sidebar-wrapper{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----width: 14rem;----z-index: var(--z-index--fixed);----item--color: var(--contrast-color-for-light-background);----item--color--hover: var(--contrast-color-for-light-background);----item--background: var(--color--light);----item--background--hover: var(--color--light-55);----item--border-top-left-radius: var(----border-top-left-radius);----item--border-top-right-radius: var(----border-top-right-radius);----item--border-bottom-right-radius: var(----border-bottom-right-radius);----item--border-bottom-left-radius: var(----border-bottom-left-radius);----item--border-radius: var(----item--border-top-left-radius) var(----item--border-top-right-radius) var(----item--border-bottom-right-radius) var(----item--border-bottom-left-radius);----item--padding-top: calc(var(--padding-top) / 2);----item--padding-right: var(--padding-right);----item--padding-bottom: calc(var(--padding-bottom) / 2);----item--padding-left: var(--padding-left);----item--padding: var(----item--padding-top) var(----item--padding-right) var(----item--padding-bottom) var(----item--padding-left);----overlay--background: rgba(0, 0, 0, .5)}.sidebar-wrapper.-light{----background: var(--color--light);----border-top-color: var(--color--light-60);----border-right-color: var(--color--light-60);----border-bottom-color: var(--color--light-60);----border-left-color: var(--color--light-60);----color: var(--contrast-color-for-light-background);----item--color: var(--contrast-color-for-light-background);----item--color--hover: var(--contrast-color-for-light-background);----item--background: var(--color--light);----item--background--hover: var(--color--light-55)}.sidebar-wrapper.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-40);----border-right-color: var(--color--dark-40);----border-bottom-color: var(--color--dark-40);----border-left-color: var(--color--dark-40);----color: var(--contrast-color-for-dark-background);----item--color: var(--contrast-color-for-dark-background);----item--color--hover: var(--contrast-color-for-dark-background);----item--background: var(--color--dark);----item--background--hover: var(--color--dark-45)}.sidebar-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----width: calc(14rem * var(--size-multiplier--sm));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--sm));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--sm));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.sidebar-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----width: calc(14rem * var(--size-multiplier--md));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--md));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--md));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.sidebar-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----width: calc(14rem * var(--size-multiplier--lg));----item--padding-top: calc(calc(var(--padding-top) / 2) * var(--size-multiplier--lg));----item--padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----item--padding-bottom: calc(calc(var(--padding-bottom) / 2) * var(--size-multiplier--lg));----item--padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.sidebar-wrapper{position:relative;min-height:100%;min-width:0;overflow:hidden;z-index:var(----z-index);-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;width:var(----width)}.sidebar-wrapper .sidebar{position:absolute;height:100%;z-index:1;color:var(----color);background:var(----background);width:var(----width);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow);border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);border-radius:var(----border-radius);padding:var(----padding)}.sidebar-wrapper .sidebar .sidebar-content{height:100%;width:100%;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-top:.1px;margin-top:-.1px}.sidebar-wrapper .sidebar .sidebar-content .nav .nav-item{border-radius:var(----item--border-radius);padding:var(----item--padding)}.sidebar-wrapper .sidebar .sidebar-content .nav .nav-item.-active{cursor:pointer}.sidebar-wrapper .sidebar .sidebar-content .nav.-vertical .nav-item{width:100%}.sidebar-wrapper .sidebar .sidebar-content .collapsible{width:100%;border:0}.sidebar-wrapper .sidebar .sidebar-content .collapsible .collapsible-item{-webkit-box-shadow:none;box-shadow:none}.sidebar-wrapper .sidebar .sidebar-content .collapsible .collapsible-header{border-width:0;-webkit-transition-property:background,color;transition-property:background,color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);border-radius:var(----item--border-radius);padding:var(----item--padding)}.sidebar-wrapper .sidebar .sidebar-content .collapsible .collapsible-body{border-width:0;background:transparent}.sidebar-wrapper .sidebar .sidebar-content .collapsible .collapsible-body .content{padding:0}.sidebar-wrapper .sidebar .sidebar-content .nav-item,.sidebar-wrapper .sidebar .sidebar-content .collapsible-header{color:var(----item--color);background-color:var(----item--background)}.sidebar-wrapper .sidebar .sidebar-content .nav-item.-focused,.sidebar-wrapper .sidebar .sidebar-content .nav-item.-hovered,.sidebar-wrapper .sidebar .sidebar-content .nav-item:focus,.sidebar-wrapper .sidebar .sidebar-content .nav-item:hover,.sidebar-wrapper .sidebar .sidebar-content .collapsible-header.-focused,.sidebar-wrapper .sidebar .sidebar-content .collapsible-header.-hovered,.sidebar-wrapper .sidebar .sidebar-content .collapsible-header:focus,.sidebar-wrapper .sidebar .sidebar-content .collapsible-header:hover{----item--color: var(----item--color--hover);----item--background: var(----item--background--hover)}.sidebar-wrapper.-collapse-relative.-placement-left .sidebar{right:0}.sidebar-wrapper.-collapse-relative.-placement-right .sidebar,.sidebar-wrapper.-collapse-absolute.-placement-left .sidebar,.sidebar-wrapper.-collapse-fixed.-placement-left .sidebar{left:0}.sidebar-wrapper.-collapse-absolute.-placement-right .sidebar,.sidebar-wrapper.-collapse-fixed.-placement-right .sidebar{right:0}.sidebar-wrapper .sidebar-overlay{width:100%;height:100%;z-index:0;background:var(----overlay--background);border-top-left-radius:var(----border-top-left-radius);border-bottom-left-radius:var(----border-bottom-left-radius)}@media screen and (max-width: 575px){.sidebar-wrapper.-collapse-xs.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-xs.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-xs.-collapse-fixed,.sidebar-wrapper.-collapse-xs.-collapse-absolute{width:100%;height:100%}}@media screen and (max-width: 767px){.sidebar-wrapper.-collapse-sm.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-sm.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-sm.-collapse-fixed,.sidebar-wrapper.-collapse-sm.-collapse-absolute{width:100%;height:100%}}@media screen and (max-width: 991px){.sidebar-wrapper.-collapse-md.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-md.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-md.-collapse-fixed,.sidebar-wrapper.-collapse-md.-collapse-absolute{width:100%;height:100%}}@media screen and (max-width: 1199px){.sidebar-wrapper.-collapse-lg.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-lg.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-lg.-collapse-fixed,.sidebar-wrapper.-collapse-lg.-collapse-absolute{width:100%;height:100%}}@media screen and (max-width: 1399px){.sidebar-wrapper.-collapse-xl.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-xl.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-xl.-collapse-fixed,.sidebar-wrapper.-collapse-xl.-collapse-absolute{width:100%;height:100%}}.sidebar-wrapper.-collapse-xxl.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-xxl.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-xxl.-collapse-fixed,.sidebar-wrapper.-collapse-xxl.-collapse-absolute{width:100%;height:100%}.sidebar-wrapper.-collapse-true.-collapse-fixed{position:fixed;top:0}.sidebar-wrapper.-collapse-true.-collapse-absolute{position:absolute}.sidebar-wrapper.-collapse-true.-collapse-fixed,.sidebar-wrapper.-collapse-true.-collapse-absolute{width:100%;height:100%}.sidebar-wrapper.sidebar-wrapper-transition-enter-to,.sidebar-wrapper.sidebar-wrapper-transition-leave{width:var(----width)}.sidebar-wrapper-transition-enter-active,.sidebar-wrapper-transition-leave-active{-webkit-transition:width var(--transition-duration) var(--transition-easing);transition:width var(--transition-duration) var(--transition-easing)}.sidebar-wrapper-none-transition-enter-active,.sidebar-wrapper-none-transition-leave-active{-webkit-transition:none var(--transition-duration) var(--transition-easing);transition:none var(--transition-duration) var(--transition-easing)}.sidebar-wrapper-transition-enter-from,.sidebar-wrapper-transition-leave-to{width:0}.sidebar-transition-enter-active,.sidebar-transition-leave-active{-webkit-transition:-webkit-transform var(--transition-duration) var(--transition-easing);transition:-webkit-transform var(--transition-duration) var(--transition-easing);transition:transform var(--transition-duration) var(--transition-easing);transition:transform var(--transition-duration) var(--transition-easing),-webkit-transform var(--transition-duration) var(--transition-easing);-webkit-transform-origin:left;transform-origin:left}.sidebar-transition-enter-from,.sidebar-transition-leave-to{-webkit-transform:translateX(-100%);transform:translate(-100%)}.sidebar-transition-enter-to,.sidebar-transition-leave-from{-webkit-transform:translateX(0);transform:translate(0)}.sidebar-wrapper.-placement-right .sidebar-transition-enter-active,.sidebar-wrapper.-placement-right .sidebar-transition-leave-active{-webkit-transform-origin:right;transform-origin:right}.sidebar-wrapper.-placement-right .sidebar-transition-enter-from,.sidebar-wrapper.-placement-right .sidebar-transition-leave-to{-webkit-transform:translateX(100%);transform:translate(100%)}.sidebar-overlay-transition-enter-active,.sidebar-overlay-transition-leave-active{-webkit-transition:opacity var(--transition-duration) var(--transition-easing);transition:opacity var(--transition-duration) var(--transition-easing)}.sidebar-overlay-transition-enter-from,.sidebar-overlay-transition-leave-to,.sidebar-overlay-transition-leave-active{opacity:0}.table-wrapper{----background: var(--color--white);----background--hover: var(--color--light-30);----background--striped: var(--color--light-25);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-color: var(--color--light-25);----color: var(--contrast-color-for-light-background);----margin-bottom: var(--margin-bottom);----padding-top: calc(var(--padding-top) * 3 / 4);----padding-right: calc(var(--padding-right) * 3 / 4);----padding-bottom: calc(var(--padding-bottom) * 3 / 4);----padding-left: calc(var(--padding-left) * 3 / 4);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----padding-top--condensed: calc(var(--padding-top) * 1 / 4);----padding-right--condensed: calc(var(--padding-right) * 1 / 4);----padding-bottom--condensed: calc(var(--padding-bottom) * 1 / 4);----padding-left--condensed: calc(var(--padding-left) * 1 / 4);----padding--condensed: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left)}.table-wrapper.-primary{----background: var(--color--primary);----background--hover: var(--color--primary-60);----background--striped: var(--color--primary-55);----border-color: var(--color--primary-55);----color: var(--contrast-color-for-dark-background)}.table-wrapper.-secondary{----background: var(--color--secondary);----background--hover: var(--color--secondary-60);----background--striped: var(--color--secondary-55);----border-color: var(--color--secondary-55);----color: var(--contrast-color-for-dark-background)}.table-wrapper.-light{----background: var(--color--white);----background--hover: var(--color--light-30);----background--striped: var(--color--light-25);----border-color: var(--color--light-25);----color: var(--contrast-color-for-light-background)}.table-wrapper.-dark{----background: var(--color--dark);----background--hover: var(--color--gray-40);----background--striped: var(--color--dark-45);----border-color: var(--color--dark-45);----color: var(--contrast-color-for-dark-background)}.table-wrapper.-info{----background: var(--color--info);----background--hover: var(--color--info-60);----background--striped: var(--color--info-55);----border-color: var(--color--info-55);----color: var(--contrast-color-for-dark-background)}.table-wrapper.-success{----background: var(--color--success);----background--hover: var(--color--success-60);----background--striped: var(--color--success-55);----border-color: var(--color--success-55);----color: var(--contrast-color-for-dark-background)}.table-wrapper.-warning{----background: var(--color--warning);----background--hover: var(--color--warning-60);----background--striped: var(--color--warning-55);----border-color: var(--color--warning-55);----color: var(--contrast-color-for-light-background)}.table-wrapper.-danger{----background: var(--color--danger);----background--hover: var(--color--danger-60);----background--striped: var(--color--danger-55);----border-color: var(--color--danger-55);----color: var(--contrast-color-for-dark-background)}.table-wrapper{display:block;position:relative}@media screen and (max-width: 575px){.table-wrapper.-responsive-xs{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-xs .table.-border{border:none}}@media screen and (max-width: 767px){.table-wrapper.-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-sm .table.-border{border:none}}@media screen and (max-width: 991px){.table-wrapper.-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-md .table.-border{border:none}}@media screen and (max-width: 1199px){.table-wrapper.-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-lg .table.-border{border:none}}@media screen and (max-width: 1399px){.table-wrapper.-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-xl .table.-border{border:none}}.table-wrapper.-responsive-xxl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-wrapper.-responsive-xxl .table.-border{border:none}.table-wrapper .table{width:100%;max-width:100%;margin-bottom:var(----margin-bottom);border-top-color:var(----border-color);color:var(----color)}.table-wrapper .table th,.table-wrapper .table td{padding:var(----padding);vertical-align:top;border-top-style:var(----border-style);border-top-color:var(----border-color);border-top-width:var(----border-top-width);background-color:var(----background);-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);-webkit-transition-property:color,background-color,border;transition-property:color,background-color,border}.table-wrapper .table thead th{vertical-align:bottom;border-bottom-width:calc(2 * var(----border-bottom-width))}.table-wrapper .table tbody+tbody{border-top:calc(2 * var(----border-top-width)) solid transparent}.table-wrapper .table th,.table-wrapper .table td,.table-wrapper .table tbody+tbody{border-top-color:var(----border-color)}.table-wrapper.-condensed .table th,.table-wrapper.-condensed .table td{----padding: var(----padding--condensed)}.table-wrapper.-border .table,.table-wrapper.-border .table th,.table-wrapper.-border .table td{border-style:var(----border-style);border-color:var(----border-color);border-width:var(----border-width)}.table-wrapper.-nowrap .table th,.table-wrapper.-nowrap .table td{white-space:nowrap}.table-wrapper.-striped .table>tr:nth-of-type(odd) th,.table-wrapper.-striped .table>tr:nth-of-type(odd) td,.table-wrapper.-striped .table tbody>tr:nth-of-type(odd) th,.table-wrapper.-striped .table tbody>tr:nth-of-type(odd) td{----background: var(----background--striped)}.table-wrapper.-hover .table tbody tr th,.table-wrapper.-hover .table tbody tr td{-webkit-transition:background-color var(--transition-duration) ease;transition:background-color var(--transition-duration) ease}.table-wrapper.-hover .table tbody tr:hover th,.table-wrapper.-hover .table tbody tr:hover td{----background: var(----background--hover)}.tabs.-light{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background);----header--background: var(--color--white);----header--background--active: var(--color--white);----header--background--hover: var(--color--gray-05);----header--border-color: transparent}.tabs.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background);----header--background: var(--color--dark);----header--background--active: var(--color--dark);----header--background--hover: var(--color--dark-45);----header--border-color: transparent}.tabs.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----padding-top: calc(var(--padding-top) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--sm));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--sm))}.tabs.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----padding-top: calc(var(--padding-top) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--md));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--md))}.tabs.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----padding-top: calc(var(--padding-top) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(var(--padding-bottom) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg));----header--padding-bottom: calc(var(----padding-bottom) * var(--size-multiplier--lg));----header--padding-left: calc(var(----padding-left) * var(--size-multiplier--lg))}.tabs{position:relative;display:block}.tabs .tabs-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);margin-bottom:var(----header--margin-bottom);overflow:auto;color:var(----header--color);background:var(----header--background)}.tabs .tab{position:relative;display:block;border-width:1px;border-style:solid;-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----color);border-color:var(----border-color);background:var(----background)}.tabs .tab>.tab-body{display:block;position:relative;font-size:var(----font-size);padding:var(----padding);border-radius:var(----border-radius)}.tabs{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----padding-top: var(--padding-top);----padding-right: var(--padding-right);----padding-bottom: var(--padding-bottom);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----header--background: var(--color--white);----header--background--active: var(--color--white);----header--background--hover: var(--color--gray-05);----header--border-color: transparent;----header--border-color--active: var(--color--primary);----header--color--active: var(----color);----header--border-style: var(--border-style);----header--border-top-width: 0;----header--border-right-width: 0;----header--border-bottom-width: 2px;----header--border-left-width: 0;----header--border-width: var(----header--border-top-width) var(----header--border-right-width) var(----header--border-bottom-width) var(----header--border-left-width);----header--margin-bottom: -1px;----header--padding-top: var(----padding-top);----header--padding-right: var(----padding-right);----header--padding-bottom: var(----padding-bottom);----header--padding-left: var(----padding-left);----header--padding: var(----header--padding-top) var(----header--padding-right) var(----header--padding-bottom) var(----header--padding-left)}.tabs{----header--color: var(----color)}.tabs .tab-title{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0;border-width:var(----header--border-width);border-style:var(----header--border-style);border-color:var(----header--border-color);font-size:var(----header--font-size);padding:var(----header--padding);-webkit-transition-property:background-color,border-color,color;transition-property:background-color,border-color,color;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);color:var(----header--color);background:var(----header--background)}.tabs .tab-title.-active{----header--color: var(----header--color--active);----header--background: var(----header--background--active);----header--border-color: var(----header--border-color--active);font-weight:var(--font-weight--semibold)}.tabs .tab-title:hover,.tabs .tab-title:focus{----header--background: var(----header--background--hover);cursor:pointer;outline:none}.tabs.-stretch>.tabs-header .tab-title{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.toggle{----background: var(--color--light);----background--checked: var(--color--primary);----background--disabled: var(--color--light-40);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(----height);----border-top-right-radius: var(----height);----border-bottom-right-radius: var(----height);----border-bottom-left-radius: var(----height);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----margin-right: var(--margin-right);----margin-top: var(--margin-right);----width: 40px;----height: 20px;----transition-duration: var(--transition-duration);----indicator--background: var(--color--white);----indicator--background--checked: var(----indicator--background);----indicator--background--disabled: var(--color--gray-05);----indicator--background--checked-disabled: var(--color--gray-10);----indicator--border-top-left-radius: 50%;----indicator--border-top-right-radius: 50%;----indicator--border-bottom-right-radius: 50%;----indicator--border-bottom-left-radius: 50%;----indicator--border-radius: var(----indicator--border-top-left-radius) var(----indicator--border-top-right-radius) var(----indicator--border-bottom-right-radius) var(----indicator--border-bottom-left-radius);----indicator--width: 16px;----indicator--height: 16px;----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70);----label--font-size: var(--font-size)}.form.-sm .toggle,.form-group.-sm .toggle,.toggle.-sm{----width: calc(40px * var(--size-multiplier--sm));----height: calc(20px * var(--size-multiplier--sm));----indicator--border-top-left-radius: calc(50% * var(--size-multiplier--sm));----indicator--border-top-right-radius: calc(50% * var(--size-multiplier--sm));----indicator--border-bottom-right-radius: calc(50% * var(--size-multiplier--sm));----indicator--border-bottom-left-radius: calc(50% * var(--size-multiplier--sm));----indicator--width: calc(16px * var(--size-multiplier--sm));----indicator--height: calc(16px * var(--size-multiplier--sm));----label--font-size: calc(var(--font-size) * var(--size-multiplier--sm))}.form.-md .toggle,.form-group.-md .toggle,.toggle.-md{----width: calc(40px * var(--size-multiplier--md));----height: calc(20px * var(--size-multiplier--md));----indicator--border-top-left-radius: calc(50% * var(--size-multiplier--md));----indicator--border-top-right-radius: calc(50% * var(--size-multiplier--md));----indicator--border-bottom-right-radius: calc(50% * var(--size-multiplier--md));----indicator--border-bottom-left-radius: calc(50% * var(--size-multiplier--md));----indicator--width: calc(16px * var(--size-multiplier--md));----indicator--height: calc(16px * var(--size-multiplier--md));----label--font-size: calc(var(--font-size) * var(--size-multiplier--md))}.form.-lg .toggle,.form-group.-lg .toggle,.toggle.-lg{----width: calc(40px * var(--size-multiplier--lg));----height: calc(20px * var(--size-multiplier--lg));----indicator--border-top-left-radius: calc(50% * var(--size-multiplier--lg));----indicator--border-top-right-radius: calc(50% * var(--size-multiplier--lg));----indicator--border-bottom-right-radius: calc(50% * var(--size-multiplier--lg));----indicator--border-bottom-left-radius: calc(50% * var(--size-multiplier--lg));----indicator--width: calc(16px * var(--size-multiplier--lg));----indicator--height: calc(16px * var(--size-multiplier--lg));----label--font-size: calc(var(--font-size) * var(--size-multiplier--lg))}.form.-light .toggle,.form-group.-light .toggle,.toggle.-light{----background: var(--color--light);----background--checked: var(--color--primary);----background--disabled: var(--color--light-40);----background--checked-disabled: var(--color--primary-25);----border-color: var(--color--light-55);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--light);----border-color--checked-disabled: var(--color--primary-30);----indicator--background: var(--color--white);----indicator--background--disabled: var(--color--gray-05);----indicator--background--checked-disabled: var(--color--gray-10);----label--color: var(--contrast-color-for-light-background);----label--color--disabled: var(--color--light-70)}.form.-dark .toggle,.form-group.-dark .toggle,.toggle.-dark{----background: var(--color--dark);----background--checked: var(--color--primary);----background--disabled: var(--color--dark-40);----background--checked-disabled: var(--color--primary-75);----border-color: var(--color--dark);----border-color--checked: var(--color--primary-55);----border-color--disabled: var(--color--dark);----border-color--checked-disabled: var(--color--primary-70);----indicator--background: var(--color--white);----indicator--background--disabled: var(--color--gray-30);----indicator--background--checked-disabled: var(--color--dark-25);----label--color: var(--contrast-color-for-dark-background);----label--color--disabled: var(--color--dark-30)}.toggle{position:relative;margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex}.toggle>input{opacity:0;width:0;height:0;cursor:pointer;position:absolute;top:0;left:0}.toggle>input:checked+.toggle-label:before{----background: var(----background--checked);----border-color: var(----border-color--checked)}.toggle>input:checked+.toggle-label:after{----indicator--background: var(----indicator--background--checked);-webkit-transform:translate(calc(var(----width) / 2),0);transform:translate(calc(var(----width) / 2))}.toggle>input:focus+.toggle-label:before{-webkit-box-shadow:0 0 1px var(----background--checked);box-shadow:0 0 1px var(----background--checked)}.toggle>input:disabled+.toggle-label,.toggle>input[readonly]+.toggle-label{cursor:default;color:var(----label--color--disabled)}.toggle>input:disabled+.toggle-label:before,.toggle>input[readonly]+.toggle-label:before{----background: var(----background--disabled);----border-color: var(----border-color--disabled)}.toggle>input:disabled+.toggle-label:after,.toggle>input[readonly]+.toggle-label:after{----indicator--background: var(----indicator--background--disabled)}.toggle>input:disabled:checked+.toggle-label:before,.toggle>input[readonly]:checked+.toggle-label:before{----background: var(----background--checked-disabled);----border-color: var(----border-color--checked-disabled)}.toggle>input:disabled:checked+.toggle-label:after,.toggle>input[readonly]:checked+.toggle-label:after{----indicator--background: var(----indicator--background--checked-disabled)}.toggle .toggle-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;margin:0;color:var(----label--color);font-size:var(----label--font-size)}.toggle .toggle-label:before{content:"";position:relative;display:inline-block;cursor:pointer;-webkit-transition:var(----transition-duration);transition:var(----transition-duration);border-width:var(----border-width);border-style:var(----border-style);border-color:var(----border-color);margin-right:var(----margin-right);-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;background-color:var(----background);width:var(----width);height:var(----height);border-radius:var(----border-radius)}.toggle .toggle-label:after{content:"";position:absolute;display:block;top:50%;left:0;z-index:1;-webkit-transform:translate(0,0);transform:translate(0);-webkit-transition:var(----transition-duration);transition:var(----transition-duration);background-color:var(----indicator--background);height:var(----indicator--width);width:var(----indicator--height);border-radius:var(----border-radius);margin-top:calc(var(----indicator--height) / -2);margin-left:calc(var(----height) / 2 - var(----indicator--height) / 2)}.tooltip-wrapper{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----border-color: var(----border-top-color) var(----border-right-color) var(----border-bottom-color) var(----border-left-color);----border-style: var(--border-style);----border-top-width: var(--border-top-width);----border-right-width: var(--border-right-width);----border-bottom-width: var(--border-bottom-width);----border-left-width: var(--border-left-width);----border-width: var(----border-top-width) var(----border-right-width) var(----border-bottom-width) var(----border-left-width);----border-top-left-radius: var(--border-top-left-radius);----border-top-right-radius: var(--border-top-right-radius);----border-bottom-right-radius: var(--border-bottom-right-radius);----border-bottom-left-radius: var(--border-bottom-left-radius);----border-radius: var(----border-top-left-radius) var(----border-top-right-radius) var(----border-bottom-right-radius) var(----border-bottom-left-radius);----box-shadow-offset-x: var(--box-shadow-offset-x);----box-shadow-offset-y: var(--box-shadow-offset-y);----box-shadow-blur-radius: var(--box-shadow-blur-radius);----box-shadow-spread-radius: var(--box-shadow-spread-radius);----box-shadow-color: var(--box-shadow-color);----box-shadow: var(----box-shadow-offset-x) var(----box-shadow-offset-y) var(----box-shadow-blur-radius) var(----box-shadow-spread-radius) var(----box-shadow-color);----color: var(--contrast-color-for-light-background);----font-size: var(--font-size);----font-weight: var(--font-weight--normal);----line-height: var(--line-height);----margin-top: calc(var(--margin-top) / 2);----margin-right: calc(var(--margin-right) / 2);----margin-bottom: calc(var(--margin-bottom) / 2);----margin-left: calc(var(--margin-left) / 2);----margin: var(----margin-top) var(----margin-right) var(----margin-bottom) var(----margin-left);----padding-top: calc(var(--padding-top) * 3 / 4);----padding-right: var(--padding-right);----padding-bottom: calc(var(--padding-bottom) * 3 / 4);----padding-left: var(--padding-left);----padding: var(----padding-top) var(----padding-right) var(----padding-bottom) var(----padding-left);----width: 280px;----z-index: 2000}.tooltip-wrapper.-sm{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));----font-size: calc(var(--font-size) * var(--size-multiplier--sm));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--sm));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--sm));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--sm));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--sm));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--sm));----padding-right: calc(var(--padding-right) * var(--size-multiplier--sm));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--sm));----padding-left: calc(var(--padding-left) * var(--size-multiplier--sm))}.tooltip-wrapper.-md{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--md));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--md));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));----font-size: calc(var(--font-size) * var(--size-multiplier--md));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--md));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--md));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--md));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--md));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--md));----padding-right: calc(var(--padding-right) * var(--size-multiplier--md));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--md));----padding-left: calc(var(--padding-left) * var(--size-multiplier--md))}.tooltip-wrapper.-lg{----border-top-left-radius: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));----border-top-right-radius: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));----border-bottom-right-radius: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));----border-bottom-left-radius: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));----font-size: calc(var(--font-size) * var(--size-multiplier--lg));----margin-top: calc(calc(var(--margin-top) / 2) * var(--size-multiplier--lg));----margin-right: calc(calc(var(--margin-right) / 2) * var(--size-multiplier--lg));----margin-bottom: calc(calc(var(--margin-bottom) / 2) * var(--size-multiplier--lg));----margin-left: calc(calc(var(--margin-left) / 2) * var(--size-multiplier--lg));----padding-top: calc(calc(var(--padding-top) * 3 / 4) * var(--size-multiplier--lg));----padding-right: calc(var(--padding-right) * var(--size-multiplier--lg));----padding-bottom: calc(calc(var(--padding-bottom) * 3 / 4) * var(--size-multiplier--lg));----padding-left: calc(var(--padding-left) * var(--size-multiplier--lg))}.tooltip-wrapper.-light{----background: var(--color--white);----border-top-color: var(--color--light);----border-right-color: var(--color--light);----border-bottom-color: var(--color--light);----border-left-color: var(--color--light);----color: var(--contrast-color-for-light-background)}.tooltip-wrapper.-dark{----background: var(--color--dark);----border-top-color: var(--color--dark-60);----border-right-color: var(--color--dark-60);----border-bottom-color: var(--color--dark-60);----border-left-color: var(--color--dark-60);----color: var(--contrast-color-for-dark-background)}.tooltip-wrapper{display:inline-block;position:relative}.tooltip-wrapper .tooltip-trigger{display:contents}.tooltip-wrapper .tooltip{position:fixed;z-index:var(----z-index);word-wrap:break-word;text-align:left;list-style:none;background-clip:padding-box;display:inline-block;white-space:nowrap;line-height:var(----line-height);border-width:var(----border-width);border-style:var(----border-style);color:var(----color);background-color:var(----background);border-color:var(----border-color);border-radius:var(----border-radius);font-size:var(----font-size);padding:var(----padding);-webkit-box-shadow:var(----box-shadow);box-shadow:var(----box-shadow)}.tooltip-wrapper .tooltip:focus:hover{outline-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=top]{-webkit-transform-origin:center bottom;transform-origin:center bottom}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]{-webkit-transform-origin:center top;transform-origin:center top}.tooltip-wrapper .tooltip[data-popper-placement^=right]{-webkit-transform-origin:left center;transform-origin:left center}.tooltip-wrapper .tooltip[data-popper-placement^=left]{-webkit-transform-origin:right center;transform-origin:right center}.tooltip-wrapper .tooltip>[data-popper-arrow],.tooltip-wrapper .tooltip>[data-popper-arrow]:after{display:block;width:0;height:0;border-color:transparent;border-style:solid;position:absolute}.tooltip-wrapper .tooltip>[data-popper-arrow]:after{content:""}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]{border-bottom-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]:after{border-bottom-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]{border-top-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-top-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]{border-left-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]:after{border-left-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]{border-right-width:0}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]:after{border-right-width:0}.tooltip-wrapper .tooltip>[data-popper-arrow],.tooltip-wrapper .tooltip>[data-popper-arrow]:after{border-width:6px}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]:after,.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]:after{margin-left:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]:after,.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]:after{margin-top:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]{bottom:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]:after{bottom:1px}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]{top:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]:after{top:1px}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]{right:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]:after{right:1px}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]{left:-6px}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]:after{left:1px}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]{border-top-color:var(----border-top-color)}.tooltip-wrapper .tooltip[data-popper-placement^=top]>[data-popper-arrow]:after{border-top-color:var(----background)}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]{border-bottom-color:var(----border-bottom-color)}.tooltip-wrapper .tooltip[data-popper-placement^=bottom]>[data-popper-arrow]:after{border-bottom-color:var(----background)}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]{border-left-color:var(----border-left-color)}.tooltip-wrapper .tooltip[data-popper-placement^=left]>[data-popper-arrow]:after{border-left-color:var(----background)}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]{border-right-color:var(----border-right-color)}.tooltip-wrapper .tooltip[data-popper-placement^=right]>[data-popper-arrow]:after{border-right-color:var(----background)}._visually-hidden\:focusable:not(:focus),._visually-hidden{position:absolute!important;width:1px!important;height:1px!important;top:1px;left:1px;overflow:hidden}:root{--transition-duration: .3s;--transition-easing: ease}:root{--size-percentage--0: 0%;--size-percentage--25: 25%;--size-percentage--50: 50%;--size-percentage--75: 75%;--size-percentage--100: 100%;--size-multiplier: 1;--size-multiplier--xs: calc(var(--size-multiplier) / var(--scale-ratio--pow-2));--size-multiplier--sm: calc(var(--size-multiplier) / var(--scale-ratio));--size-multiplier--md: var(--size-multiplier);--size-multiplier--lg: calc(var(--size-multiplier) * var(--scale-ratio));--size-multiplier--xl: calc(var(--size-multiplier) * var(--scale-ratio--pow-2))}:root{--spacing: 1rem;--margin-top: var(--spacing);--margin-right: var(--spacing);--margin-bottom: var(--spacing);--margin-left: var(--spacing);--margin: var(--margin-top) var(--margin-right) var(--margin-bottom) var(--margin-left);--padding-top: var(--spacing);--padding-right: var(--spacing);--padding-bottom: var(--spacing);--padding-left: var(--spacing);--padding: var(--padding-top) var(--padding-right) var(--padding-bottom) var(--padding-left)}:root{--color--primary--h: 195.0967741935deg;--color--primary--s: 77.1144278607%;--color--primary--l: 39.4117647059%;--color--primary: hsl(var(--color--primary--h), var(--color--primary--s), var(--color--primary--l));--color--secondary--h: 262.2857142857deg;--color--secondary--s: 30.1724137931%;--color--secondary--l: 54.5098039216%;--color--secondary: hsl(var(--color--secondary--h), var(--color--secondary--s), var(--color--secondary--l));--color--info--h: 173.8888888889deg;--color--info--s: 42.8571428571%;--color--info--l: 49.4117647059%;--color--info: hsl(var(--color--info--h), var(--color--info--s), var(--color--info--l));--color--warning--h: 43.6764705882deg;--color--warning--s: 100%;--color--warning--l: 73.3333333333%;--color--warning: hsl(var(--color--warning--h), var(--color--warning--s), var(--color--warning--l));--color--danger--h: 1.3259668508deg;--color--danger--s: 87.4396135266%;--color--danger--l: 59.4117647059%;--color--danger: hsl(var(--color--danger--h), var(--color--danger--s), var(--color--danger--l));--color--success--h: 154.4186046512deg;--color--success--s: 57.8475336323%;--color--success--l: 43.7254901961%;--color--success: hsl(var(--color--success--h), var(--color--success--s), var(--color--success--l));--color--red--h: 1.3259668508deg;--color--red--s: 87.4396135266%;--color--red--l: 59.4117647059%;--color--red: hsl(var(--color--red--h), var(--color--red--s), var(--color--red--l));--color--orange--h: 19.6226415094deg;--color--orange--s: 92.9824561404%;--color--orange--l: 66.4705882353%;--color--orange: hsl(var(--color--orange--h), var(--color--orange--s), var(--color--orange--l));--color--yellow--h: 43.6764705882deg;--color--yellow--s: 100%;--color--yellow--l: 73.3333333333%;--color--yellow: hsl(var(--color--yellow--h), var(--color--yellow--s), var(--color--yellow--l));--color--green--h: 154.4186046512deg;--color--green--s: 57.8475336323%;--color--green--l: 43.7254901961%;--color--green: hsl(var(--color--green--h), var(--color--green--s), var(--color--green--l));--color--teal--h: 173.8888888889deg;--color--teal--s: 42.8571428571%;--color--teal--l: 49.4117647059%;--color--teal: hsl(var(--color--teal--h), var(--color--teal--s), var(--color--teal--l));--color--blue--h: 195.0967741935deg;--color--blue--s: 77.1144278607%;--color--blue--l: 39.4117647059%;--color--blue: hsl(var(--color--blue--h), var(--color--blue--s), var(--color--blue--l));--color--purple--h: 262.2857142857deg;--color--purple--s: 30.1724137931%;--color--purple--l: 54.5098039216%;--color--purple: hsl(var(--color--purple--h), var(--color--purple--s), var(--color--purple--l));--color--pink--h: 351.4285714286deg;--color--pink--s: 95.6834532374%;--color--pink--l: 72.7450980392%;--color--pink: hsl(var(--color--pink--h), var(--color--pink--s), var(--color--pink--l));--color--transparent--h: 0deg;--color--transparent--s: 0%;--color--transparent--l: 0%;--color--transparent: hsl(var(--color--transparent--h), var(--color--transparent--s), var(--color--transparent--l));--color--white--h: 0deg;--color--white--s: 0%;--color--white--l: 100%;--color--white: hsl(var(--color--white--h), var(--color--white--s), var(--color--white--l));--color--black--h: 0deg;--color--black--s: 0%;--color--black--l: 0%;--color--black: hsl(var(--color--black--h), var(--color--black--s), var(--color--black--l));--color--gray--h: 193.6363636364deg;--color--gray--s: 10.7843137255%;--color--gray--l: 60%;--color--gray: hsl(var(--color--gray--h), var(--color--gray--s), var(--color--gray--l));--color--light--h: 193.6363636364deg;--color--light--s: 10.7843137255%;--color--light--l: 88%;--color--light: hsl(var(--color--light--h), var(--color--light--s), var(--color--light--l));--color--dark--h: 193.6363636364deg;--color--dark--s: 4.3137254902%;--color--dark--l: 24%;--color--dark: hsl(var(--color--dark--h), var(--color--dark--s), var(--color--dark--l));--color--facebook--h: 220.6451612903deg;--color--facebook--s: 44.0758293839%;--color--facebook--l: 41.3725490196%;--color--facebook: hsl(var(--color--facebook--h), var(--color--facebook--s), var(--color--facebook--l));--color--twitter--h: 202.8169014085deg;--color--twitter--s: 89.1213389121%;--color--twitter--l: 53.137254902%;--color--twitter: hsl(var(--color--twitter--h), var(--color--twitter--s), var(--color--twitter--l));--color--google--h: 6.5853658537deg;--color--google--s: 70.6896551724%;--color--google--l: 54.5098039216%;--color--google: hsl(var(--color--google--h), var(--color--google--s), var(--color--google--l));--color--github--h: 0deg;--color--github--s: 0%;--color--github--l: 20%;--color--github: hsl(var(--color--github--h), var(--color--github--s), var(--color--github--l));--color--instagram--h: 0deg;--color--instagram--s: 98.2456140351%;--color--instagram--l: 55.2941176471%;--color--instagram: hsl(var(--color--instagram--h), var(--color--instagram--s), var(--color--instagram--l));--color--dribbble--h: 336.835443038deg;--color--dribbble--s: 79%;--color--dribbble--l: 60.7843137255%;--color--dribbble: hsl(var(--color--dribbble--h), var(--color--dribbble--s), var(--color--dribbble--l));--color--behance--h: 218.7931034483deg;--color--behance--s: 100%;--color--behance--l: 54.5098039216%;--color--behance: hsl(var(--color--behance--h), var(--color--behance--s), var(--color--behance--l));--color--flickr--h: 328.9411764706deg;--color--flickr--s: 100%;--color--flickr--l: 50%;--color--flickr: hsl(var(--color--flickr--h), var(--color--flickr--s), var(--color--flickr--l));--color--linkedin--h: 200.5524861878deg;--color--linkedin--s: 100%;--color--linkedin--l: 35.4901960784%;--color--linkedin: hsl(var(--color--linkedin--h), var(--color--linkedin--s), var(--color--linkedin--l));--color--youtube--h: 358.1366459627deg;--color--youtube--s: 81.7258883249%;--color--youtube--l: 38.6274509804%;--color--youtube: hsl(var(--color--youtube--h), var(--color--youtube--s), var(--color--youtube--l));--color--pinterest--h: 353.3701657459deg;--color--pinterest--s: 91.8781725888%;--color--pinterest--l: 38.6274509804%;--color--pinterest: hsl(var(--color--pinterest--h), var(--color--pinterest--s), var(--color--pinterest--l));--color--gitlab--h: 17.9695431472deg;--color--gitlab--s: 95.1690821256%;--color--gitlab--l: 59.4117647059%;--color--gitlab: hsl(var(--color--gitlab--h), var(--color--gitlab--s), var(--color--gitlab--l));--color--tumblr--h: 213.8461538462deg;--color--tumblr--s: 26.8965517241%;--color--tumblr--l: 28.431372549%;--color--tumblr: hsl(var(--color--tumblr--h), var(--color--tumblr--s), var(--color--tumblr--l));--color--twitch--h: 261deg;--color--twitch--s: 43.4782608696%;--color--twitch--l: 45.0980392157%;--color--twitch: hsl(var(--color--twitch--h), var(--color--twitch--s), var(--color--twitch--l));--color--envato--h: 86.3793103448deg;--color--envato--s: 47.1544715447%;--color--envato--l: 48.2352941176%;--color--envato: hsl(var(--color--envato--h), var(--color--envato--s), var(--color--envato--l));--color--vine--h: 164.9214659686deg;--color--vine--s: 100%;--color--vine--l: 37.4509803922%;--color--vine: hsl(var(--color--vine--h), var(--color--vine--s), var(--color--vine--l));--color--primary-05-h: var(--color--primary--h);--color--primary-05-s: var(--color--primary--s);--color--primary-05-l: calc(var(--color--primary--l) + 54.5294117647%);--color--primary-05: hsl(var(--color--primary-05-h) var(--color--primary-05-s) var(--color--primary-05-l));--color--primary-10-h: var(--color--primary--h);--color--primary-10-s: var(--color--primary--s);--color--primary-10-l: calc(var(--color--primary--l) + 48.4705882353%);--color--primary-10: hsl(var(--color--primary-10-h) var(--color--primary-10-s) var(--color--primary-10-l));--color--primary-15-h: var(--color--primary--h);--color--primary-15-s: var(--color--primary--s);--color--primary-15-l: calc(var(--color--primary--l) + 42.4117647059%);--color--primary-15: hsl(var(--color--primary-15-h) var(--color--primary-15-s) var(--color--primary-15-l));--color--primary-20-h: var(--color--primary--h);--color--primary-20-s: var(--color--primary--s);--color--primary-20-l: calc(var(--color--primary--l) + 36.3529411765%);--color--primary-20: hsl(var(--color--primary-20-h) var(--color--primary-20-s) var(--color--primary-20-l));--color--primary-25-h: var(--color--primary--h);--color--primary-25-s: var(--color--primary--s);--color--primary-25-l: calc(var(--color--primary--l) + 30.2941176471%);--color--primary-25: hsl(var(--color--primary-25-h) var(--color--primary-25-s) var(--color--primary-25-l));--color--primary-30-h: var(--color--primary--h);--color--primary-30-s: var(--color--primary--s);--color--primary-30-l: calc(var(--color--primary--l) + 24.2352941176%);--color--primary-30: hsl(var(--color--primary-30-h) var(--color--primary-30-s) var(--color--primary-30-l));--color--primary-35-h: var(--color--primary--h);--color--primary-35-s: var(--color--primary--s);--color--primary-35-l: calc(var(--color--primary--l) + 18.1764705882%);--color--primary-35: hsl(var(--color--primary-35-h) var(--color--primary-35-s) var(--color--primary-35-l));--color--primary-40-h: var(--color--primary--h);--color--primary-40-s: var(--color--primary--s);--color--primary-40-l: calc(var(--color--primary--l) + 12.1176470588%);--color--primary-40: hsl(var(--color--primary-40-h) var(--color--primary-40-s) var(--color--primary-40-l));--color--primary-45-h: var(--color--primary--h);--color--primary-45-s: var(--color--primary--s);--color--primary-45-l: calc(var(--color--primary--l) + 6.0588235294%);--color--primary-45: hsl(var(--color--primary-45-h) var(--color--primary-45-s) var(--color--primary-45-l));--color--primary-50-h: var(--color--primary--h);--color--primary-50-s: var(--color--primary--s);--color--primary-50-l: calc(var(--color--primary--l) + 0%);--color--primary-50: hsl(var(--color--primary-50-h) var(--color--primary-50-s) var(--color--primary-50-l));--color--primary-55-h: var(--color--primary--h);--color--primary-55-s: var(--color--primary--s);--color--primary-55-l: calc(var(--color--primary--l) + -3.9411764706%);--color--primary-55: hsl(var(--color--primary-55-h) var(--color--primary-55-s) var(--color--primary-55-l));--color--primary-60-h: var(--color--primary--h);--color--primary-60-s: var(--color--primary--s);--color--primary-60-l: calc(var(--color--primary--l) + -7.8823529412%);--color--primary-60: hsl(var(--color--primary-60-h) var(--color--primary-60-s) var(--color--primary-60-l));--color--primary-65-h: var(--color--primary--h);--color--primary-65-s: var(--color--primary--s);--color--primary-65-l: calc(var(--color--primary--l) + -11.8235294118%);--color--primary-65: hsl(var(--color--primary-65-h) var(--color--primary-65-s) var(--color--primary-65-l));--color--primary-70-h: var(--color--primary--h);--color--primary-70-s: var(--color--primary--s);--color--primary-70-l: calc(var(--color--primary--l) + -15.7647058824%);--color--primary-70: hsl(var(--color--primary-70-h) var(--color--primary-70-s) var(--color--primary-70-l));--color--primary-75-h: var(--color--primary--h);--color--primary-75-s: var(--color--primary--s);--color--primary-75-l: calc(var(--color--primary--l) + -19.7058823529%);--color--primary-75: hsl(var(--color--primary-75-h) var(--color--primary-75-s) var(--color--primary-75-l));--color--primary-80-h: var(--color--primary--h);--color--primary-80-s: var(--color--primary--s);--color--primary-80-l: calc(var(--color--primary--l) + -23.6470588235%);--color--primary-80: hsl(var(--color--primary-80-h) var(--color--primary-80-s) var(--color--primary-80-l));--color--primary-85-h: var(--color--primary--h);--color--primary-85-s: var(--color--primary--s);--color--primary-85-l: calc(var(--color--primary--l) + -27.5882352941%);--color--primary-85: hsl(var(--color--primary-85-h) var(--color--primary-85-s) var(--color--primary-85-l));--color--primary-90-h: var(--color--primary--h);--color--primary-90-s: var(--color--primary--s);--color--primary-90-l: calc(var(--color--primary--l) + -31.5294117647%);--color--primary-90: hsl(var(--color--primary-90-h) var(--color--primary-90-s) var(--color--primary-90-l));--color--primary-95-h: var(--color--primary--h);--color--primary-95-s: var(--color--primary--s);--color--primary-95-l: calc(var(--color--primary--l) + -35.4705882353%);--color--primary-95: hsl(var(--color--primary-95-h) var(--color--primary-95-s) var(--color--primary-95-l));--color--secondary-05-h: var(--color--secondary--h);--color--secondary-05-s: var(--color--secondary--s);--color--secondary-05-l: calc(var(--color--secondary--l) + 40.9411764706%);--color--secondary-05: hsl(var(--color--secondary-05-h) var(--color--secondary-05-s) var(--color--secondary-05-l));--color--secondary-10-h: var(--color--secondary--h);--color--secondary-10-s: var(--color--secondary--s);--color--secondary-10-l: calc(var(--color--secondary--l) + 36.3921568627%);--color--secondary-10: hsl(var(--color--secondary-10-h) var(--color--secondary-10-s) var(--color--secondary-10-l));--color--secondary-15-h: var(--color--secondary--h);--color--secondary-15-s: var(--color--secondary--s);--color--secondary-15-l: calc(var(--color--secondary--l) + 31.8431372549%);--color--secondary-15: hsl(var(--color--secondary-15-h) var(--color--secondary-15-s) var(--color--secondary-15-l));--color--secondary-20-h: var(--color--secondary--h);--color--secondary-20-s: var(--color--secondary--s);--color--secondary-20-l: calc(var(--color--secondary--l) + 27.2941176471%);--color--secondary-20: hsl(var(--color--secondary-20-h) var(--color--secondary-20-s) var(--color--secondary-20-l));--color--secondary-25-h: var(--color--secondary--h);--color--secondary-25-s: var(--color--secondary--s);--color--secondary-25-l: calc(var(--color--secondary--l) + 22.7450980392%);--color--secondary-25: hsl(var(--color--secondary-25-h) var(--color--secondary-25-s) var(--color--secondary-25-l));--color--secondary-30-h: var(--color--secondary--h);--color--secondary-30-s: var(--color--secondary--s);--color--secondary-30-l: calc(var(--color--secondary--l) + 18.1960784314%);--color--secondary-30: hsl(var(--color--secondary-30-h) var(--color--secondary-30-s) var(--color--secondary-30-l));--color--secondary-35-h: var(--color--secondary--h);--color--secondary-35-s: var(--color--secondary--s);--color--secondary-35-l: calc(var(--color--secondary--l) + 13.6470588235%);--color--secondary-35: hsl(var(--color--secondary-35-h) var(--color--secondary-35-s) var(--color--secondary-35-l));--color--secondary-40-h: var(--color--secondary--h);--color--secondary-40-s: var(--color--secondary--s);--color--secondary-40-l: calc(var(--color--secondary--l) + 9.0980392157%);--color--secondary-40: hsl(var(--color--secondary-40-h) var(--color--secondary-40-s) var(--color--secondary-40-l));--color--secondary-45-h: var(--color--secondary--h);--color--secondary-45-s: var(--color--secondary--s);--color--secondary-45-l: calc(var(--color--secondary--l) + 4.5490196078%);--color--secondary-45: hsl(var(--color--secondary-45-h) var(--color--secondary-45-s) var(--color--secondary-45-l));--color--secondary-50-h: var(--color--secondary--h);--color--secondary-50-s: var(--color--secondary--s);--color--secondary-50-l: calc(var(--color--secondary--l) + 0%);--color--secondary-50: hsl(var(--color--secondary-50-h) var(--color--secondary-50-s) var(--color--secondary-50-l));--color--secondary-55-h: var(--color--secondary--h);--color--secondary-55-s: var(--color--secondary--s);--color--secondary-55-l: calc(var(--color--secondary--l) + -5.4509803922%);--color--secondary-55: hsl(var(--color--secondary-55-h) var(--color--secondary-55-s) var(--color--secondary-55-l));--color--secondary-60-h: var(--color--secondary--h);--color--secondary-60-s: var(--color--secondary--s);--color--secondary-60-l: calc(var(--color--secondary--l) + -10.9019607843%);--color--secondary-60: hsl(var(--color--secondary-60-h) var(--color--secondary-60-s) var(--color--secondary-60-l));--color--secondary-65-h: var(--color--secondary--h);--color--secondary-65-s: var(--color--secondary--s);--color--secondary-65-l: calc(var(--color--secondary--l) + -16.3529411765%);--color--secondary-65: hsl(var(--color--secondary-65-h) var(--color--secondary-65-s) var(--color--secondary-65-l));--color--secondary-70-h: var(--color--secondary--h);--color--secondary-70-s: var(--color--secondary--s);--color--secondary-70-l: calc(var(--color--secondary--l) + -21.8039215686%);--color--secondary-70: hsl(var(--color--secondary-70-h) var(--color--secondary-70-s) var(--color--secondary-70-l));--color--secondary-75-h: var(--color--secondary--h);--color--secondary-75-s: var(--color--secondary--s);--color--secondary-75-l: calc(var(--color--secondary--l) + -27.2549019608%);--color--secondary-75: hsl(var(--color--secondary-75-h) var(--color--secondary-75-s) var(--color--secondary-75-l));--color--secondary-80-h: var(--color--secondary--h);--color--secondary-80-s: var(--color--secondary--s);--color--secondary-80-l: calc(var(--color--secondary--l) + -32.7058823529%);--color--secondary-80: hsl(var(--color--secondary-80-h) var(--color--secondary-80-s) var(--color--secondary-80-l));--color--secondary-85-h: var(--color--secondary--h);--color--secondary-85-s: var(--color--secondary--s);--color--secondary-85-l: calc(var(--color--secondary--l) + -38.1568627451%);--color--secondary-85: hsl(var(--color--secondary-85-h) var(--color--secondary-85-s) var(--color--secondary-85-l));--color--secondary-90-h: var(--color--secondary--h);--color--secondary-90-s: var(--color--secondary--s);--color--secondary-90-l: calc(var(--color--secondary--l) + -43.6078431373%);--color--secondary-90: hsl(var(--color--secondary-90-h) var(--color--secondary-90-s) var(--color--secondary-90-l));--color--secondary-95-h: var(--color--secondary--h);--color--secondary-95-s: var(--color--secondary--s);--color--secondary-95-l: calc(var(--color--secondary--l) + -49.0588235294%);--color--secondary-95: hsl(var(--color--secondary-95-h) var(--color--secondary-95-s) var(--color--secondary-95-l));--color--info-05-h: var(--color--info--h);--color--info-05-s: var(--color--info--s);--color--info-05-l: calc(var(--color--info--l) + 45.5294117647%);--color--info-05: hsl(var(--color--info-05-h) var(--color--info-05-s) var(--color--info-05-l));--color--info-10-h: var(--color--info--h);--color--info-10-s: var(--color--info--s);--color--info-10-l: calc(var(--color--info--l) + 40.4705882353%);--color--info-10: hsl(var(--color--info-10-h) var(--color--info-10-s) var(--color--info-10-l));--color--info-15-h: var(--color--info--h);--color--info-15-s: var(--color--info--s);--color--info-15-l: calc(var(--color--info--l) + 35.4117647059%);--color--info-15: hsl(var(--color--info-15-h) var(--color--info-15-s) var(--color--info-15-l));--color--info-20-h: var(--color--info--h);--color--info-20-s: var(--color--info--s);--color--info-20-l: calc(var(--color--info--l) + 30.3529411765%);--color--info-20: hsl(var(--color--info-20-h) var(--color--info-20-s) var(--color--info-20-l));--color--info-25-h: var(--color--info--h);--color--info-25-s: var(--color--info--s);--color--info-25-l: calc(var(--color--info--l) + 25.2941176471%);--color--info-25: hsl(var(--color--info-25-h) var(--color--info-25-s) var(--color--info-25-l));--color--info-30-h: var(--color--info--h);--color--info-30-s: var(--color--info--s);--color--info-30-l: calc(var(--color--info--l) + 20.2352941176%);--color--info-30: hsl(var(--color--info-30-h) var(--color--info-30-s) var(--color--info-30-l));--color--info-35-h: var(--color--info--h);--color--info-35-s: var(--color--info--s);--color--info-35-l: calc(var(--color--info--l) + 15.1764705882%);--color--info-35: hsl(var(--color--info-35-h) var(--color--info-35-s) var(--color--info-35-l));--color--info-40-h: var(--color--info--h);--color--info-40-s: var(--color--info--s);--color--info-40-l: calc(var(--color--info--l) + 10.1176470588%);--color--info-40: hsl(var(--color--info-40-h) var(--color--info-40-s) var(--color--info-40-l));--color--info-45-h: var(--color--info--h);--color--info-45-s: var(--color--info--s);--color--info-45-l: calc(var(--color--info--l) + 5.0588235294%);--color--info-45: hsl(var(--color--info-45-h) var(--color--info-45-s) var(--color--info-45-l));--color--info-50-h: var(--color--info--h);--color--info-50-s: var(--color--info--s);--color--info-50-l: calc(var(--color--info--l) + 0%);--color--info-50: hsl(var(--color--info-50-h) var(--color--info-50-s) var(--color--info-50-l));--color--info-55-h: var(--color--info--h);--color--info-55-s: var(--color--info--s);--color--info-55-l: calc(var(--color--info--l) + -4.9411764706%);--color--info-55: hsl(var(--color--info-55-h) var(--color--info-55-s) var(--color--info-55-l));--color--info-60-h: var(--color--info--h);--color--info-60-s: var(--color--info--s);--color--info-60-l: calc(var(--color--info--l) + -9.8823529412%);--color--info-60: hsl(var(--color--info-60-h) var(--color--info-60-s) var(--color--info-60-l));--color--info-65-h: var(--color--info--h);--color--info-65-s: var(--color--info--s);--color--info-65-l: calc(var(--color--info--l) + -14.8235294118%);--color--info-65: hsl(var(--color--info-65-h) var(--color--info-65-s) var(--color--info-65-l));--color--info-70-h: var(--color--info--h);--color--info-70-s: var(--color--info--s);--color--info-70-l: calc(var(--color--info--l) + -19.7647058824%);--color--info-70: hsl(var(--color--info-70-h) var(--color--info-70-s) var(--color--info-70-l));--color--info-75-h: var(--color--info--h);--color--info-75-s: var(--color--info--s);--color--info-75-l: calc(var(--color--info--l) + -24.7058823529%);--color--info-75: hsl(var(--color--info-75-h) var(--color--info-75-s) var(--color--info-75-l));--color--info-80-h: var(--color--info--h);--color--info-80-s: var(--color--info--s);--color--info-80-l: calc(var(--color--info--l) + -29.6470588235%);--color--info-80: hsl(var(--color--info-80-h) var(--color--info-80-s) var(--color--info-80-l));--color--info-85-h: var(--color--info--h);--color--info-85-s: var(--color--info--s);--color--info-85-l: calc(var(--color--info--l) + -34.5882352941%);--color--info-85: hsl(var(--color--info-85-h) var(--color--info-85-s) var(--color--info-85-l));--color--info-90-h: var(--color--info--h);--color--info-90-s: var(--color--info--s);--color--info-90-l: calc(var(--color--info--l) + -39.5294117647%);--color--info-90: hsl(var(--color--info-90-h) var(--color--info-90-s) var(--color--info-90-l));--color--info-95-h: var(--color--info--h);--color--info-95-s: var(--color--info--s);--color--info-95-l: calc(var(--color--info--l) + -44.4705882353%);--color--info-95: hsl(var(--color--info-95-h) var(--color--info-95-s) var(--color--info-95-l));--color--warning-05-h: var(--color--warning--h);--color--warning-05-s: var(--color--warning--s);--color--warning-05-l: calc(var(--color--warning--l) + 24%);--color--warning-05: hsl(var(--color--warning-05-h) var(--color--warning-05-s) var(--color--warning-05-l));--color--warning-10-h: var(--color--warning--h);--color--warning-10-s: var(--color--warning--s);--color--warning-10-l: calc(var(--color--warning--l) + 21.3333333333%);--color--warning-10: hsl(var(--color--warning-10-h) var(--color--warning-10-s) var(--color--warning-10-l));--color--warning-15-h: var(--color--warning--h);--color--warning-15-s: var(--color--warning--s);--color--warning-15-l: calc(var(--color--warning--l) + 18.6666666667%);--color--warning-15: hsl(var(--color--warning-15-h) var(--color--warning-15-s) var(--color--warning-15-l));--color--warning-20-h: var(--color--warning--h);--color--warning-20-s: var(--color--warning--s);--color--warning-20-l: calc(var(--color--warning--l) + 16%);--color--warning-20: hsl(var(--color--warning-20-h) var(--color--warning-20-s) var(--color--warning-20-l));--color--warning-25-h: var(--color--warning--h);--color--warning-25-s: var(--color--warning--s);--color--warning-25-l: calc(var(--color--warning--l) + 13.3333333333%);--color--warning-25: hsl(var(--color--warning-25-h) var(--color--warning-25-s) var(--color--warning-25-l));--color--warning-30-h: var(--color--warning--h);--color--warning-30-s: var(--color--warning--s);--color--warning-30-l: calc(var(--color--warning--l) + 10.6666666667%);--color--warning-30: hsl(var(--color--warning-30-h) var(--color--warning-30-s) var(--color--warning-30-l));--color--warning-35-h: var(--color--warning--h);--color--warning-35-s: var(--color--warning--s);--color--warning-35-l: calc(var(--color--warning--l) + 8%);--color--warning-35: hsl(var(--color--warning-35-h) var(--color--warning-35-s) var(--color--warning-35-l));--color--warning-40-h: var(--color--warning--h);--color--warning-40-s: var(--color--warning--s);--color--warning-40-l: calc(var(--color--warning--l) + 5.3333333333%);--color--warning-40: hsl(var(--color--warning-40-h) var(--color--warning-40-s) var(--color--warning-40-l));--color--warning-45-h: var(--color--warning--h);--color--warning-45-s: var(--color--warning--s);--color--warning-45-l: calc(var(--color--warning--l) + 2.6666666667%);--color--warning-45: hsl(var(--color--warning-45-h) var(--color--warning-45-s) var(--color--warning-45-l));--color--warning-50-h: var(--color--warning--h);--color--warning-50-s: var(--color--warning--s);--color--warning-50-l: calc(var(--color--warning--l) + 0%);--color--warning-50: hsl(var(--color--warning-50-h) var(--color--warning-50-s) var(--color--warning-50-l));--color--warning-55-h: var(--color--warning--h);--color--warning-55-s: var(--color--warning--s);--color--warning-55-l: calc(var(--color--warning--l) + -7.3333333333%);--color--warning-55: hsl(var(--color--warning-55-h) var(--color--warning-55-s) var(--color--warning-55-l));--color--warning-60-h: var(--color--warning--h);--color--warning-60-s: var(--color--warning--s);--color--warning-60-l: calc(var(--color--warning--l) + -14.6666666667%);--color--warning-60: hsl(var(--color--warning-60-h) var(--color--warning-60-s) var(--color--warning-60-l));--color--warning-65-h: var(--color--warning--h);--color--warning-65-s: var(--color--warning--s);--color--warning-65-l: calc(var(--color--warning--l) + -22%);--color--warning-65: hsl(var(--color--warning-65-h) var(--color--warning-65-s) var(--color--warning-65-l));--color--warning-70-h: var(--color--warning--h);--color--warning-70-s: var(--color--warning--s);--color--warning-70-l: calc(var(--color--warning--l) + -29.3333333333%);--color--warning-70: hsl(var(--color--warning-70-h) var(--color--warning-70-s) var(--color--warning-70-l));--color--warning-75-h: var(--color--warning--h);--color--warning-75-s: var(--color--warning--s);--color--warning-75-l: calc(var(--color--warning--l) + -36.6666666667%);--color--warning-75: hsl(var(--color--warning-75-h) var(--color--warning-75-s) var(--color--warning-75-l));--color--warning-80-h: var(--color--warning--h);--color--warning-80-s: var(--color--warning--s);--color--warning-80-l: calc(var(--color--warning--l) + -44%);--color--warning-80: hsl(var(--color--warning-80-h) var(--color--warning-80-s) var(--color--warning-80-l));--color--warning-85-h: var(--color--warning--h);--color--warning-85-s: var(--color--warning--s);--color--warning-85-l: calc(var(--color--warning--l) + -51.3333333333%);--color--warning-85: hsl(var(--color--warning-85-h) var(--color--warning-85-s) var(--color--warning-85-l));--color--warning-90-h: var(--color--warning--h);--color--warning-90-s: var(--color--warning--s);--color--warning-90-l: calc(var(--color--warning--l) + -58.6666666667%);--color--warning-90: hsl(var(--color--warning-90-h) var(--color--warning-90-s) var(--color--warning-90-l));--color--warning-95-h: var(--color--warning--h);--color--warning-95-s: var(--color--warning--s);--color--warning-95-l: calc(var(--color--warning--l) + -66%);--color--warning-95: hsl(var(--color--warning-95-h) var(--color--warning-95-s) var(--color--warning-95-l));--color--danger-05-h: var(--color--danger--h);--color--danger-05-s: var(--color--danger--s);--color--danger-05-l: calc(var(--color--danger--l) + 36.5294117647%);--color--danger-05: hsl(var(--color--danger-05-h) var(--color--danger-05-s) var(--color--danger-05-l));--color--danger-10-h: var(--color--danger--h);--color--danger-10-s: var(--color--danger--s);--color--danger-10-l: calc(var(--color--danger--l) + 32.4705882353%);--color--danger-10: hsl(var(--color--danger-10-h) var(--color--danger-10-s) var(--color--danger-10-l));--color--danger-15-h: var(--color--danger--h);--color--danger-15-s: var(--color--danger--s);--color--danger-15-l: calc(var(--color--danger--l) + 28.4117647059%);--color--danger-15: hsl(var(--color--danger-15-h) var(--color--danger-15-s) var(--color--danger-15-l));--color--danger-20-h: var(--color--danger--h);--color--danger-20-s: var(--color--danger--s);--color--danger-20-l: calc(var(--color--danger--l) + 24.3529411765%);--color--danger-20: hsl(var(--color--danger-20-h) var(--color--danger-20-s) var(--color--danger-20-l));--color--danger-25-h: var(--color--danger--h);--color--danger-25-s: var(--color--danger--s);--color--danger-25-l: calc(var(--color--danger--l) + 20.2941176471%);--color--danger-25: hsl(var(--color--danger-25-h) var(--color--danger-25-s) var(--color--danger-25-l));--color--danger-30-h: var(--color--danger--h);--color--danger-30-s: var(--color--danger--s);--color--danger-30-l: calc(var(--color--danger--l) + 16.2352941176%);--color--danger-30: hsl(var(--color--danger-30-h) var(--color--danger-30-s) var(--color--danger-30-l));--color--danger-35-h: var(--color--danger--h);--color--danger-35-s: var(--color--danger--s);--color--danger-35-l: calc(var(--color--danger--l) + 12.1764705882%);--color--danger-35: hsl(var(--color--danger-35-h) var(--color--danger-35-s) var(--color--danger-35-l));--color--danger-40-h: var(--color--danger--h);--color--danger-40-s: var(--color--danger--s);--color--danger-40-l: calc(var(--color--danger--l) + 8.1176470588%);--color--danger-40: hsl(var(--color--danger-40-h) var(--color--danger-40-s) var(--color--danger-40-l));--color--danger-45-h: var(--color--danger--h);--color--danger-45-s: var(--color--danger--s);--color--danger-45-l: calc(var(--color--danger--l) + 4.0588235294%);--color--danger-45: hsl(var(--color--danger-45-h) var(--color--danger-45-s) var(--color--danger-45-l));--color--danger-50-h: var(--color--danger--h);--color--danger-50-s: var(--color--danger--s);--color--danger-50-l: calc(var(--color--danger--l) + 0%);--color--danger-50: hsl(var(--color--danger-50-h) var(--color--danger-50-s) var(--color--danger-50-l));--color--danger-55-h: var(--color--danger--h);--color--danger-55-s: var(--color--danger--s);--color--danger-55-l: calc(var(--color--danger--l) + -5.9411764706%);--color--danger-55: hsl(var(--color--danger-55-h) var(--color--danger-55-s) var(--color--danger-55-l));--color--danger-60-h: var(--color--danger--h);--color--danger-60-s: var(--color--danger--s);--color--danger-60-l: calc(var(--color--danger--l) + -11.8823529412%);--color--danger-60: hsl(var(--color--danger-60-h) var(--color--danger-60-s) var(--color--danger-60-l));--color--danger-65-h: var(--color--danger--h);--color--danger-65-s: var(--color--danger--s);--color--danger-65-l: calc(var(--color--danger--l) + -17.8235294118%);--color--danger-65: hsl(var(--color--danger-65-h) var(--color--danger-65-s) var(--color--danger-65-l));--color--danger-70-h: var(--color--danger--h);--color--danger-70-s: var(--color--danger--s);--color--danger-70-l: calc(var(--color--danger--l) + -23.7647058824%);--color--danger-70: hsl(var(--color--danger-70-h) var(--color--danger-70-s) var(--color--danger-70-l));--color--danger-75-h: var(--color--danger--h);--color--danger-75-s: var(--color--danger--s);--color--danger-75-l: calc(var(--color--danger--l) + -29.7058823529%);--color--danger-75: hsl(var(--color--danger-75-h) var(--color--danger-75-s) var(--color--danger-75-l));--color--danger-80-h: var(--color--danger--h);--color--danger-80-s: var(--color--danger--s);--color--danger-80-l: calc(var(--color--danger--l) + -35.6470588235%);--color--danger-80: hsl(var(--color--danger-80-h) var(--color--danger-80-s) var(--color--danger-80-l));--color--danger-85-h: var(--color--danger--h);--color--danger-85-s: var(--color--danger--s);--color--danger-85-l: calc(var(--color--danger--l) + -41.5882352941%);--color--danger-85: hsl(var(--color--danger-85-h) var(--color--danger-85-s) var(--color--danger-85-l));--color--danger-90-h: var(--color--danger--h);--color--danger-90-s: var(--color--danger--s);--color--danger-90-l: calc(var(--color--danger--l) + -47.5294117647%);--color--danger-90: hsl(var(--color--danger-90-h) var(--color--danger-90-s) var(--color--danger-90-l));--color--danger-95-h: var(--color--danger--h);--color--danger-95-s: var(--color--danger--s);--color--danger-95-l: calc(var(--color--danger--l) + -53.4705882353%);--color--danger-95: hsl(var(--color--danger-95-h) var(--color--danger-95-s) var(--color--danger-95-l));--color--success-05-h: var(--color--success--h);--color--success-05-s: var(--color--success--s);--color--success-05-l: calc(var(--color--success--l) + 50.6470588235%);--color--success-05: hsl(var(--color--success-05-h) var(--color--success-05-s) var(--color--success-05-l));--color--success-10-h: var(--color--success--h);--color--success-10-s: var(--color--success--s);--color--success-10-l: calc(var(--color--success--l) + 45.0196078431%);--color--success-10: hsl(var(--color--success-10-h) var(--color--success-10-s) var(--color--success-10-l));--color--success-15-h: var(--color--success--h);--color--success-15-s: var(--color--success--s);--color--success-15-l: calc(var(--color--success--l) + 39.3921568627%);--color--success-15: hsl(var(--color--success-15-h) var(--color--success-15-s) var(--color--success-15-l));--color--success-20-h: var(--color--success--h);--color--success-20-s: var(--color--success--s);--color--success-20-l: calc(var(--color--success--l) + 33.7647058824%);--color--success-20: hsl(var(--color--success-20-h) var(--color--success-20-s) var(--color--success-20-l));--color--success-25-h: var(--color--success--h);--color--success-25-s: var(--color--success--s);--color--success-25-l: calc(var(--color--success--l) + 28.137254902%);--color--success-25: hsl(var(--color--success-25-h) var(--color--success-25-s) var(--color--success-25-l));--color--success-30-h: var(--color--success--h);--color--success-30-s: var(--color--success--s);--color--success-30-l: calc(var(--color--success--l) + 22.5098039216%);--color--success-30: hsl(var(--color--success-30-h) var(--color--success-30-s) var(--color--success-30-l));--color--success-35-h: var(--color--success--h);--color--success-35-s: var(--color--success--s);--color--success-35-l: calc(var(--color--success--l) + 16.8823529412%);--color--success-35: hsl(var(--color--success-35-h) var(--color--success-35-s) var(--color--success-35-l));--color--success-40-h: var(--color--success--h);--color--success-40-s: var(--color--success--s);--color--success-40-l: calc(var(--color--success--l) + 11.2549019608%);--color--success-40: hsl(var(--color--success-40-h) var(--color--success-40-s) var(--color--success-40-l));--color--success-45-h: var(--color--success--h);--color--success-45-s: var(--color--success--s);--color--success-45-l: calc(var(--color--success--l) + 5.6274509804%);--color--success-45: hsl(var(--color--success-45-h) var(--color--success-45-s) var(--color--success-45-l));--color--success-50-h: var(--color--success--h);--color--success-50-s: var(--color--success--s);--color--success-50-l: calc(var(--color--success--l) + 0%);--color--success-50: hsl(var(--color--success-50-h) var(--color--success-50-s) var(--color--success-50-l));--color--success-55-h: var(--color--success--h);--color--success-55-s: var(--color--success--s);--color--success-55-l: calc(var(--color--success--l) + -4.3725490196%);--color--success-55: hsl(var(--color--success-55-h) var(--color--success-55-s) var(--color--success-55-l));--color--success-60-h: var(--color--success--h);--color--success-60-s: var(--color--success--s);--color--success-60-l: calc(var(--color--success--l) + -8.7450980392%);--color--success-60: hsl(var(--color--success-60-h) var(--color--success-60-s) var(--color--success-60-l));--color--success-65-h: var(--color--success--h);--color--success-65-s: var(--color--success--s);--color--success-65-l: calc(var(--color--success--l) + -13.1176470588%);--color--success-65: hsl(var(--color--success-65-h) var(--color--success-65-s) var(--color--success-65-l));--color--success-70-h: var(--color--success--h);--color--success-70-s: var(--color--success--s);--color--success-70-l: calc(var(--color--success--l) + -17.4901960784%);--color--success-70: hsl(var(--color--success-70-h) var(--color--success-70-s) var(--color--success-70-l));--color--success-75-h: var(--color--success--h);--color--success-75-s: var(--color--success--s);--color--success-75-l: calc(var(--color--success--l) + -21.862745098%);--color--success-75: hsl(var(--color--success-75-h) var(--color--success-75-s) var(--color--success-75-l));--color--success-80-h: var(--color--success--h);--color--success-80-s: var(--color--success--s);--color--success-80-l: calc(var(--color--success--l) + -26.2352941176%);--color--success-80: hsl(var(--color--success-80-h) var(--color--success-80-s) var(--color--success-80-l));--color--success-85-h: var(--color--success--h);--color--success-85-s: var(--color--success--s);--color--success-85-l: calc(var(--color--success--l) + -30.6078431373%);--color--success-85: hsl(var(--color--success-85-h) var(--color--success-85-s) var(--color--success-85-l));--color--success-90-h: var(--color--success--h);--color--success-90-s: var(--color--success--s);--color--success-90-l: calc(var(--color--success--l) + -34.9803921569%);--color--success-90: hsl(var(--color--success-90-h) var(--color--success-90-s) var(--color--success-90-l));--color--success-95-h: var(--color--success--h);--color--success-95-s: var(--color--success--s);--color--success-95-l: calc(var(--color--success--l) + -39.3529411765%);--color--success-95: hsl(var(--color--success-95-h) var(--color--success-95-s) var(--color--success-95-l));--color--red-05-h: var(--color--red--h);--color--red-05-s: var(--color--red--s);--color--red-05-l: calc(var(--color--red--l) + 36.5294117647%);--color--red-05: hsl(var(--color--red-05-h) var(--color--red-05-s) var(--color--red-05-l));--color--red-10-h: var(--color--red--h);--color--red-10-s: var(--color--red--s);--color--red-10-l: calc(var(--color--red--l) + 32.4705882353%);--color--red-10: hsl(var(--color--red-10-h) var(--color--red-10-s) var(--color--red-10-l));--color--red-15-h: var(--color--red--h);--color--red-15-s: var(--color--red--s);--color--red-15-l: calc(var(--color--red--l) + 28.4117647059%);--color--red-15: hsl(var(--color--red-15-h) var(--color--red-15-s) var(--color--red-15-l));--color--red-20-h: var(--color--red--h);--color--red-20-s: var(--color--red--s);--color--red-20-l: calc(var(--color--red--l) + 24.3529411765%);--color--red-20: hsl(var(--color--red-20-h) var(--color--red-20-s) var(--color--red-20-l));--color--red-25-h: var(--color--red--h);--color--red-25-s: var(--color--red--s);--color--red-25-l: calc(var(--color--red--l) + 20.2941176471%);--color--red-25: hsl(var(--color--red-25-h) var(--color--red-25-s) var(--color--red-25-l));--color--red-30-h: var(--color--red--h);--color--red-30-s: var(--color--red--s);--color--red-30-l: calc(var(--color--red--l) + 16.2352941176%);--color--red-30: hsl(var(--color--red-30-h) var(--color--red-30-s) var(--color--red-30-l));--color--red-35-h: var(--color--red--h);--color--red-35-s: var(--color--red--s);--color--red-35-l: calc(var(--color--red--l) + 12.1764705882%);--color--red-35: hsl(var(--color--red-35-h) var(--color--red-35-s) var(--color--red-35-l));--color--red-40-h: var(--color--red--h);--color--red-40-s: var(--color--red--s);--color--red-40-l: calc(var(--color--red--l) + 8.1176470588%);--color--red-40: hsl(var(--color--red-40-h) var(--color--red-40-s) var(--color--red-40-l));--color--red-45-h: var(--color--red--h);--color--red-45-s: var(--color--red--s);--color--red-45-l: calc(var(--color--red--l) + 4.0588235294%);--color--red-45: hsl(var(--color--red-45-h) var(--color--red-45-s) var(--color--red-45-l));--color--red-50-h: var(--color--red--h);--color--red-50-s: var(--color--red--s);--color--red-50-l: calc(var(--color--red--l) + 0%);--color--red-50: hsl(var(--color--red-50-h) var(--color--red-50-s) var(--color--red-50-l));--color--red-55-h: var(--color--red--h);--color--red-55-s: var(--color--red--s);--color--red-55-l: calc(var(--color--red--l) + -5.9411764706%);--color--red-55: hsl(var(--color--red-55-h) var(--color--red-55-s) var(--color--red-55-l));--color--red-60-h: var(--color--red--h);--color--red-60-s: var(--color--red--s);--color--red-60-l: calc(var(--color--red--l) + -11.8823529412%);--color--red-60: hsl(var(--color--red-60-h) var(--color--red-60-s) var(--color--red-60-l));--color--red-65-h: var(--color--red--h);--color--red-65-s: var(--color--red--s);--color--red-65-l: calc(var(--color--red--l) + -17.8235294118%);--color--red-65: hsl(var(--color--red-65-h) var(--color--red-65-s) var(--color--red-65-l));--color--red-70-h: var(--color--red--h);--color--red-70-s: var(--color--red--s);--color--red-70-l: calc(var(--color--red--l) + -23.7647058824%);--color--red-70: hsl(var(--color--red-70-h) var(--color--red-70-s) var(--color--red-70-l));--color--red-75-h: var(--color--red--h);--color--red-75-s: var(--color--red--s);--color--red-75-l: calc(var(--color--red--l) + -29.7058823529%);--color--red-75: hsl(var(--color--red-75-h) var(--color--red-75-s) var(--color--red-75-l));--color--red-80-h: var(--color--red--h);--color--red-80-s: var(--color--red--s);--color--red-80-l: calc(var(--color--red--l) + -35.6470588235%);--color--red-80: hsl(var(--color--red-80-h) var(--color--red-80-s) var(--color--red-80-l));--color--red-85-h: var(--color--red--h);--color--red-85-s: var(--color--red--s);--color--red-85-l: calc(var(--color--red--l) + -41.5882352941%);--color--red-85: hsl(var(--color--red-85-h) var(--color--red-85-s) var(--color--red-85-l));--color--red-90-h: var(--color--red--h);--color--red-90-s: var(--color--red--s);--color--red-90-l: calc(var(--color--red--l) + -47.5294117647%);--color--red-90: hsl(var(--color--red-90-h) var(--color--red-90-s) var(--color--red-90-l));--color--red-95-h: var(--color--red--h);--color--red-95-s: var(--color--red--s);--color--red-95-l: calc(var(--color--red--l) + -53.4705882353%);--color--red-95: hsl(var(--color--red-95-h) var(--color--red-95-s) var(--color--red-95-l));--color--orange-05-h: var(--color--orange--h);--color--orange-05-s: var(--color--orange--s);--color--orange-05-l: calc(var(--color--orange--l) + 30.1764705882%);--color--orange-05: hsl(var(--color--orange-05-h) var(--color--orange-05-s) var(--color--orange-05-l));--color--orange-10-h: var(--color--orange--h);--color--orange-10-s: var(--color--orange--s);--color--orange-10-l: calc(var(--color--orange--l) + 26.8235294118%);--color--orange-10: hsl(var(--color--orange-10-h) var(--color--orange-10-s) var(--color--orange-10-l));--color--orange-15-h: var(--color--orange--h);--color--orange-15-s: var(--color--orange--s);--color--orange-15-l: calc(var(--color--orange--l) + 23.4705882353%);--color--orange-15: hsl(var(--color--orange-15-h) var(--color--orange-15-s) var(--color--orange-15-l));--color--orange-20-h: var(--color--orange--h);--color--orange-20-s: var(--color--orange--s);--color--orange-20-l: calc(var(--color--orange--l) + 20.1176470588%);--color--orange-20: hsl(var(--color--orange-20-h) var(--color--orange-20-s) var(--color--orange-20-l));--color--orange-25-h: var(--color--orange--h);--color--orange-25-s: var(--color--orange--s);--color--orange-25-l: calc(var(--color--orange--l) + 16.7647058824%);--color--orange-25: hsl(var(--color--orange-25-h) var(--color--orange-25-s) var(--color--orange-25-l));--color--orange-30-h: var(--color--orange--h);--color--orange-30-s: var(--color--orange--s);--color--orange-30-l: calc(var(--color--orange--l) + 13.4117647059%);--color--orange-30: hsl(var(--color--orange-30-h) var(--color--orange-30-s) var(--color--orange-30-l));--color--orange-35-h: var(--color--orange--h);--color--orange-35-s: var(--color--orange--s);--color--orange-35-l: calc(var(--color--orange--l) + 10.0588235294%);--color--orange-35: hsl(var(--color--orange-35-h) var(--color--orange-35-s) var(--color--orange-35-l));--color--orange-40-h: var(--color--orange--h);--color--orange-40-s: var(--color--orange--s);--color--orange-40-l: calc(var(--color--orange--l) + 6.7058823529%);--color--orange-40: hsl(var(--color--orange-40-h) var(--color--orange-40-s) var(--color--orange-40-l));--color--orange-45-h: var(--color--orange--h);--color--orange-45-s: var(--color--orange--s);--color--orange-45-l: calc(var(--color--orange--l) + 3.3529411765%);--color--orange-45: hsl(var(--color--orange-45-h) var(--color--orange-45-s) var(--color--orange-45-l));--color--orange-50-h: var(--color--orange--h);--color--orange-50-s: var(--color--orange--s);--color--orange-50-l: calc(var(--color--orange--l) + 0%);--color--orange-50: hsl(var(--color--orange-50-h) var(--color--orange-50-s) var(--color--orange-50-l));--color--orange-55-h: var(--color--orange--h);--color--orange-55-s: var(--color--orange--s);--color--orange-55-l: calc(var(--color--orange--l) + -6.6470588235%);--color--orange-55: hsl(var(--color--orange-55-h) var(--color--orange-55-s) var(--color--orange-55-l));--color--orange-60-h: var(--color--orange--h);--color--orange-60-s: var(--color--orange--s);--color--orange-60-l: calc(var(--color--orange--l) + -13.2941176471%);--color--orange-60: hsl(var(--color--orange-60-h) var(--color--orange-60-s) var(--color--orange-60-l));--color--orange-65-h: var(--color--orange--h);--color--orange-65-s: var(--color--orange--s);--color--orange-65-l: calc(var(--color--orange--l) + -19.9411764706%);--color--orange-65: hsl(var(--color--orange-65-h) var(--color--orange-65-s) var(--color--orange-65-l));--color--orange-70-h: var(--color--orange--h);--color--orange-70-s: var(--color--orange--s);--color--orange-70-l: calc(var(--color--orange--l) + -26.5882352941%);--color--orange-70: hsl(var(--color--orange-70-h) var(--color--orange-70-s) var(--color--orange-70-l));--color--orange-75-h: var(--color--orange--h);--color--orange-75-s: var(--color--orange--s);--color--orange-75-l: calc(var(--color--orange--l) + -33.2352941176%);--color--orange-75: hsl(var(--color--orange-75-h) var(--color--orange-75-s) var(--color--orange-75-l));--color--orange-80-h: var(--color--orange--h);--color--orange-80-s: var(--color--orange--s);--color--orange-80-l: calc(var(--color--orange--l) + -39.8823529412%);--color--orange-80: hsl(var(--color--orange-80-h) var(--color--orange-80-s) var(--color--orange-80-l));--color--orange-85-h: var(--color--orange--h);--color--orange-85-s: var(--color--orange--s);--color--orange-85-l: calc(var(--color--orange--l) + -46.5294117647%);--color--orange-85: hsl(var(--color--orange-85-h) var(--color--orange-85-s) var(--color--orange-85-l));--color--orange-90-h: var(--color--orange--h);--color--orange-90-s: var(--color--orange--s);--color--orange-90-l: calc(var(--color--orange--l) + -53.1764705882%);--color--orange-90: hsl(var(--color--orange-90-h) var(--color--orange-90-s) var(--color--orange-90-l));--color--orange-95-h: var(--color--orange--h);--color--orange-95-s: var(--color--orange--s);--color--orange-95-l: calc(var(--color--orange--l) + -59.8235294118%);--color--orange-95: hsl(var(--color--orange-95-h) var(--color--orange-95-s) var(--color--orange-95-l));--color--yellow-05-h: var(--color--yellow--h);--color--yellow-05-s: var(--color--yellow--s);--color--yellow-05-l: calc(var(--color--yellow--l) + 24%);--color--yellow-05: hsl(var(--color--yellow-05-h) var(--color--yellow-05-s) var(--color--yellow-05-l));--color--yellow-10-h: var(--color--yellow--h);--color--yellow-10-s: var(--color--yellow--s);--color--yellow-10-l: calc(var(--color--yellow--l) + 21.3333333333%);--color--yellow-10: hsl(var(--color--yellow-10-h) var(--color--yellow-10-s) var(--color--yellow-10-l));--color--yellow-15-h: var(--color--yellow--h);--color--yellow-15-s: var(--color--yellow--s);--color--yellow-15-l: calc(var(--color--yellow--l) + 18.6666666667%);--color--yellow-15: hsl(var(--color--yellow-15-h) var(--color--yellow-15-s) var(--color--yellow-15-l));--color--yellow-20-h: var(--color--yellow--h);--color--yellow-20-s: var(--color--yellow--s);--color--yellow-20-l: calc(var(--color--yellow--l) + 16%);--color--yellow-20: hsl(var(--color--yellow-20-h) var(--color--yellow-20-s) var(--color--yellow-20-l));--color--yellow-25-h: var(--color--yellow--h);--color--yellow-25-s: var(--color--yellow--s);--color--yellow-25-l: calc(var(--color--yellow--l) + 13.3333333333%);--color--yellow-25: hsl(var(--color--yellow-25-h) var(--color--yellow-25-s) var(--color--yellow-25-l));--color--yellow-30-h: var(--color--yellow--h);--color--yellow-30-s: var(--color--yellow--s);--color--yellow-30-l: calc(var(--color--yellow--l) + 10.6666666667%);--color--yellow-30: hsl(var(--color--yellow-30-h) var(--color--yellow-30-s) var(--color--yellow-30-l));--color--yellow-35-h: var(--color--yellow--h);--color--yellow-35-s: var(--color--yellow--s);--color--yellow-35-l: calc(var(--color--yellow--l) + 8%);--color--yellow-35: hsl(var(--color--yellow-35-h) var(--color--yellow-35-s) var(--color--yellow-35-l));--color--yellow-40-h: var(--color--yellow--h);--color--yellow-40-s: var(--color--yellow--s);--color--yellow-40-l: calc(var(--color--yellow--l) + 5.3333333333%);--color--yellow-40: hsl(var(--color--yellow-40-h) var(--color--yellow-40-s) var(--color--yellow-40-l));--color--yellow-45-h: var(--color--yellow--h);--color--yellow-45-s: var(--color--yellow--s);--color--yellow-45-l: calc(var(--color--yellow--l) + 2.6666666667%);--color--yellow-45: hsl(var(--color--yellow-45-h) var(--color--yellow-45-s) var(--color--yellow-45-l));--color--yellow-50-h: var(--color--yellow--h);--color--yellow-50-s: var(--color--yellow--s);--color--yellow-50-l: calc(var(--color--yellow--l) + 0%);--color--yellow-50: hsl(var(--color--yellow-50-h) var(--color--yellow-50-s) var(--color--yellow-50-l));--color--yellow-55-h: var(--color--yellow--h);--color--yellow-55-s: var(--color--yellow--s);--color--yellow-55-l: calc(var(--color--yellow--l) + -7.3333333333%);--color--yellow-55: hsl(var(--color--yellow-55-h) var(--color--yellow-55-s) var(--color--yellow-55-l));--color--yellow-60-h: var(--color--yellow--h);--color--yellow-60-s: var(--color--yellow--s);--color--yellow-60-l: calc(var(--color--yellow--l) + -14.6666666667%);--color--yellow-60: hsl(var(--color--yellow-60-h) var(--color--yellow-60-s) var(--color--yellow-60-l));--color--yellow-65-h: var(--color--yellow--h);--color--yellow-65-s: var(--color--yellow--s);--color--yellow-65-l: calc(var(--color--yellow--l) + -22%);--color--yellow-65: hsl(var(--color--yellow-65-h) var(--color--yellow-65-s) var(--color--yellow-65-l));--color--yellow-70-h: var(--color--yellow--h);--color--yellow-70-s: var(--color--yellow--s);--color--yellow-70-l: calc(var(--color--yellow--l) + -29.3333333333%);--color--yellow-70: hsl(var(--color--yellow-70-h) var(--color--yellow-70-s) var(--color--yellow-70-l));--color--yellow-75-h: var(--color--yellow--h);--color--yellow-75-s: var(--color--yellow--s);--color--yellow-75-l: calc(var(--color--yellow--l) + -36.6666666667%);--color--yellow-75: hsl(var(--color--yellow-75-h) var(--color--yellow-75-s) var(--color--yellow-75-l));--color--yellow-80-h: var(--color--yellow--h);--color--yellow-80-s: var(--color--yellow--s);--color--yellow-80-l: calc(var(--color--yellow--l) + -44%);--color--yellow-80: hsl(var(--color--yellow-80-h) var(--color--yellow-80-s) var(--color--yellow-80-l));--color--yellow-85-h: var(--color--yellow--h);--color--yellow-85-s: var(--color--yellow--s);--color--yellow-85-l: calc(var(--color--yellow--l) + -51.3333333333%);--color--yellow-85: hsl(var(--color--yellow-85-h) var(--color--yellow-85-s) var(--color--yellow-85-l));--color--yellow-90-h: var(--color--yellow--h);--color--yellow-90-s: var(--color--yellow--s);--color--yellow-90-l: calc(var(--color--yellow--l) + -58.6666666667%);--color--yellow-90: hsl(var(--color--yellow-90-h) var(--color--yellow-90-s) var(--color--yellow-90-l));--color--yellow-95-h: var(--color--yellow--h);--color--yellow-95-s: var(--color--yellow--s);--color--yellow-95-l: calc(var(--color--yellow--l) + -66%);--color--yellow-95: hsl(var(--color--yellow-95-h) var(--color--yellow-95-s) var(--color--yellow-95-l));--color--green-05-h: var(--color--green--h);--color--green-05-s: var(--color--green--s);--color--green-05-l: calc(var(--color--green--l) + 50.6470588235%);--color--green-05: hsl(var(--color--green-05-h) var(--color--green-05-s) var(--color--green-05-l));--color--green-10-h: var(--color--green--h);--color--green-10-s: var(--color--green--s);--color--green-10-l: calc(var(--color--green--l) + 45.0196078431%);--color--green-10: hsl(var(--color--green-10-h) var(--color--green-10-s) var(--color--green-10-l));--color--green-15-h: var(--color--green--h);--color--green-15-s: var(--color--green--s);--color--green-15-l: calc(var(--color--green--l) + 39.3921568627%);--color--green-15: hsl(var(--color--green-15-h) var(--color--green-15-s) var(--color--green-15-l));--color--green-20-h: var(--color--green--h);--color--green-20-s: var(--color--green--s);--color--green-20-l: calc(var(--color--green--l) + 33.7647058824%);--color--green-20: hsl(var(--color--green-20-h) var(--color--green-20-s) var(--color--green-20-l));--color--green-25-h: var(--color--green--h);--color--green-25-s: var(--color--green--s);--color--green-25-l: calc(var(--color--green--l) + 28.137254902%);--color--green-25: hsl(var(--color--green-25-h) var(--color--green-25-s) var(--color--green-25-l));--color--green-30-h: var(--color--green--h);--color--green-30-s: var(--color--green--s);--color--green-30-l: calc(var(--color--green--l) + 22.5098039216%);--color--green-30: hsl(var(--color--green-30-h) var(--color--green-30-s) var(--color--green-30-l));--color--green-35-h: var(--color--green--h);--color--green-35-s: var(--color--green--s);--color--green-35-l: calc(var(--color--green--l) + 16.8823529412%);--color--green-35: hsl(var(--color--green-35-h) var(--color--green-35-s) var(--color--green-35-l));--color--green-40-h: var(--color--green--h);--color--green-40-s: var(--color--green--s);--color--green-40-l: calc(var(--color--green--l) + 11.2549019608%);--color--green-40: hsl(var(--color--green-40-h) var(--color--green-40-s) var(--color--green-40-l));--color--green-45-h: var(--color--green--h);--color--green-45-s: var(--color--green--s);--color--green-45-l: calc(var(--color--green--l) + 5.6274509804%);--color--green-45: hsl(var(--color--green-45-h) var(--color--green-45-s) var(--color--green-45-l));--color--green-50-h: var(--color--green--h);--color--green-50-s: var(--color--green--s);--color--green-50-l: calc(var(--color--green--l) + 0%);--color--green-50: hsl(var(--color--green-50-h) var(--color--green-50-s) var(--color--green-50-l));--color--green-55-h: var(--color--green--h);--color--green-55-s: var(--color--green--s);--color--green-55-l: calc(var(--color--green--l) + -4.3725490196%);--color--green-55: hsl(var(--color--green-55-h) var(--color--green-55-s) var(--color--green-55-l));--color--green-60-h: var(--color--green--h);--color--green-60-s: var(--color--green--s);--color--green-60-l: calc(var(--color--green--l) + -8.7450980392%);--color--green-60: hsl(var(--color--green-60-h) var(--color--green-60-s) var(--color--green-60-l));--color--green-65-h: var(--color--green--h);--color--green-65-s: var(--color--green--s);--color--green-65-l: calc(var(--color--green--l) + -13.1176470588%);--color--green-65: hsl(var(--color--green-65-h) var(--color--green-65-s) var(--color--green-65-l));--color--green-70-h: var(--color--green--h);--color--green-70-s: var(--color--green--s);--color--green-70-l: calc(var(--color--green--l) + -17.4901960784%);--color--green-70: hsl(var(--color--green-70-h) var(--color--green-70-s) var(--color--green-70-l));--color--green-75-h: var(--color--green--h);--color--green-75-s: var(--color--green--s);--color--green-75-l: calc(var(--color--green--l) + -21.862745098%);--color--green-75: hsl(var(--color--green-75-h) var(--color--green-75-s) var(--color--green-75-l));--color--green-80-h: var(--color--green--h);--color--green-80-s: var(--color--green--s);--color--green-80-l: calc(var(--color--green--l) + -26.2352941176%);--color--green-80: hsl(var(--color--green-80-h) var(--color--green-80-s) var(--color--green-80-l));--color--green-85-h: var(--color--green--h);--color--green-85-s: var(--color--green--s);--color--green-85-l: calc(var(--color--green--l) + -30.6078431373%);--color--green-85: hsl(var(--color--green-85-h) var(--color--green-85-s) var(--color--green-85-l));--color--green-90-h: var(--color--green--h);--color--green-90-s: var(--color--green--s);--color--green-90-l: calc(var(--color--green--l) + -34.9803921569%);--color--green-90: hsl(var(--color--green-90-h) var(--color--green-90-s) var(--color--green-90-l));--color--green-95-h: var(--color--green--h);--color--green-95-s: var(--color--green--s);--color--green-95-l: calc(var(--color--green--l) + -39.3529411765%);--color--green-95: hsl(var(--color--green-95-h) var(--color--green-95-s) var(--color--green-95-l));--color--teal-05-h: var(--color--teal--h);--color--teal-05-s: var(--color--teal--s);--color--teal-05-l: calc(var(--color--teal--l) + 45.5294117647%);--color--teal-05: hsl(var(--color--teal-05-h) var(--color--teal-05-s) var(--color--teal-05-l));--color--teal-10-h: var(--color--teal--h);--color--teal-10-s: var(--color--teal--s);--color--teal-10-l: calc(var(--color--teal--l) + 40.4705882353%);--color--teal-10: hsl(var(--color--teal-10-h) var(--color--teal-10-s) var(--color--teal-10-l));--color--teal-15-h: var(--color--teal--h);--color--teal-15-s: var(--color--teal--s);--color--teal-15-l: calc(var(--color--teal--l) + 35.4117647059%);--color--teal-15: hsl(var(--color--teal-15-h) var(--color--teal-15-s) var(--color--teal-15-l));--color--teal-20-h: var(--color--teal--h);--color--teal-20-s: var(--color--teal--s);--color--teal-20-l: calc(var(--color--teal--l) + 30.3529411765%);--color--teal-20: hsl(var(--color--teal-20-h) var(--color--teal-20-s) var(--color--teal-20-l));--color--teal-25-h: var(--color--teal--h);--color--teal-25-s: var(--color--teal--s);--color--teal-25-l: calc(var(--color--teal--l) + 25.2941176471%);--color--teal-25: hsl(var(--color--teal-25-h) var(--color--teal-25-s) var(--color--teal-25-l));--color--teal-30-h: var(--color--teal--h);--color--teal-30-s: var(--color--teal--s);--color--teal-30-l: calc(var(--color--teal--l) + 20.2352941176%);--color--teal-30: hsl(var(--color--teal-30-h) var(--color--teal-30-s) var(--color--teal-30-l));--color--teal-35-h: var(--color--teal--h);--color--teal-35-s: var(--color--teal--s);--color--teal-35-l: calc(var(--color--teal--l) + 15.1764705882%);--color--teal-35: hsl(var(--color--teal-35-h) var(--color--teal-35-s) var(--color--teal-35-l));--color--teal-40-h: var(--color--teal--h);--color--teal-40-s: var(--color--teal--s);--color--teal-40-l: calc(var(--color--teal--l) + 10.1176470588%);--color--teal-40: hsl(var(--color--teal-40-h) var(--color--teal-40-s) var(--color--teal-40-l));--color--teal-45-h: var(--color--teal--h);--color--teal-45-s: var(--color--teal--s);--color--teal-45-l: calc(var(--color--teal--l) + 5.0588235294%);--color--teal-45: hsl(var(--color--teal-45-h) var(--color--teal-45-s) var(--color--teal-45-l));--color--teal-50-h: var(--color--teal--h);--color--teal-50-s: var(--color--teal--s);--color--teal-50-l: calc(var(--color--teal--l) + 0%);--color--teal-50: hsl(var(--color--teal-50-h) var(--color--teal-50-s) var(--color--teal-50-l));--color--teal-55-h: var(--color--teal--h);--color--teal-55-s: var(--color--teal--s);--color--teal-55-l: calc(var(--color--teal--l) + -4.9411764706%);--color--teal-55: hsl(var(--color--teal-55-h) var(--color--teal-55-s) var(--color--teal-55-l));--color--teal-60-h: var(--color--teal--h);--color--teal-60-s: var(--color--teal--s);--color--teal-60-l: calc(var(--color--teal--l) + -9.8823529412%);--color--teal-60: hsl(var(--color--teal-60-h) var(--color--teal-60-s) var(--color--teal-60-l));--color--teal-65-h: var(--color--teal--h);--color--teal-65-s: var(--color--teal--s);--color--teal-65-l: calc(var(--color--teal--l) + -14.8235294118%);--color--teal-65: hsl(var(--color--teal-65-h) var(--color--teal-65-s) var(--color--teal-65-l));--color--teal-70-h: var(--color--teal--h);--color--teal-70-s: var(--color--teal--s);--color--teal-70-l: calc(var(--color--teal--l) + -19.7647058824%);--color--teal-70: hsl(var(--color--teal-70-h) var(--color--teal-70-s) var(--color--teal-70-l));--color--teal-75-h: var(--color--teal--h);--color--teal-75-s: var(--color--teal--s);--color--teal-75-l: calc(var(--color--teal--l) + -24.7058823529%);--color--teal-75: hsl(var(--color--teal-75-h) var(--color--teal-75-s) var(--color--teal-75-l));--color--teal-80-h: var(--color--teal--h);--color--teal-80-s: var(--color--teal--s);--color--teal-80-l: calc(var(--color--teal--l) + -29.6470588235%);--color--teal-80: hsl(var(--color--teal-80-h) var(--color--teal-80-s) var(--color--teal-80-l));--color--teal-85-h: var(--color--teal--h);--color--teal-85-s: var(--color--teal--s);--color--teal-85-l: calc(var(--color--teal--l) + -34.5882352941%);--color--teal-85: hsl(var(--color--teal-85-h) var(--color--teal-85-s) var(--color--teal-85-l));--color--teal-90-h: var(--color--teal--h);--color--teal-90-s: var(--color--teal--s);--color--teal-90-l: calc(var(--color--teal--l) + -39.5294117647%);--color--teal-90: hsl(var(--color--teal-90-h) var(--color--teal-90-s) var(--color--teal-90-l));--color--teal-95-h: var(--color--teal--h);--color--teal-95-s: var(--color--teal--s);--color--teal-95-l: calc(var(--color--teal--l) + -44.4705882353%);--color--teal-95: hsl(var(--color--teal-95-h) var(--color--teal-95-s) var(--color--teal-95-l));--color--blue-05-h: var(--color--blue--h);--color--blue-05-s: var(--color--blue--s);--color--blue-05-l: calc(var(--color--blue--l) + 54.5294117647%);--color--blue-05: hsl(var(--color--blue-05-h) var(--color--blue-05-s) var(--color--blue-05-l));--color--blue-10-h: var(--color--blue--h);--color--blue-10-s: var(--color--blue--s);--color--blue-10-l: calc(var(--color--blue--l) + 48.4705882353%);--color--blue-10: hsl(var(--color--blue-10-h) var(--color--blue-10-s) var(--color--blue-10-l));--color--blue-15-h: var(--color--blue--h);--color--blue-15-s: var(--color--blue--s);--color--blue-15-l: calc(var(--color--blue--l) + 42.4117647059%);--color--blue-15: hsl(var(--color--blue-15-h) var(--color--blue-15-s) var(--color--blue-15-l));--color--blue-20-h: var(--color--blue--h);--color--blue-20-s: var(--color--blue--s);--color--blue-20-l: calc(var(--color--blue--l) + 36.3529411765%);--color--blue-20: hsl(var(--color--blue-20-h) var(--color--blue-20-s) var(--color--blue-20-l));--color--blue-25-h: var(--color--blue--h);--color--blue-25-s: var(--color--blue--s);--color--blue-25-l: calc(var(--color--blue--l) + 30.2941176471%);--color--blue-25: hsl(var(--color--blue-25-h) var(--color--blue-25-s) var(--color--blue-25-l));--color--blue-30-h: var(--color--blue--h);--color--blue-30-s: var(--color--blue--s);--color--blue-30-l: calc(var(--color--blue--l) + 24.2352941176%);--color--blue-30: hsl(var(--color--blue-30-h) var(--color--blue-30-s) var(--color--blue-30-l));--color--blue-35-h: var(--color--blue--h);--color--blue-35-s: var(--color--blue--s);--color--blue-35-l: calc(var(--color--blue--l) + 18.1764705882%);--color--blue-35: hsl(var(--color--blue-35-h) var(--color--blue-35-s) var(--color--blue-35-l));--color--blue-40-h: var(--color--blue--h);--color--blue-40-s: var(--color--blue--s);--color--blue-40-l: calc(var(--color--blue--l) + 12.1176470588%);--color--blue-40: hsl(var(--color--blue-40-h) var(--color--blue-40-s) var(--color--blue-40-l));--color--blue-45-h: var(--color--blue--h);--color--blue-45-s: var(--color--blue--s);--color--blue-45-l: calc(var(--color--blue--l) + 6.0588235294%);--color--blue-45: hsl(var(--color--blue-45-h) var(--color--blue-45-s) var(--color--blue-45-l));--color--blue-50-h: var(--color--blue--h);--color--blue-50-s: var(--color--blue--s);--color--blue-50-l: calc(var(--color--blue--l) + 0%);--color--blue-50: hsl(var(--color--blue-50-h) var(--color--blue-50-s) var(--color--blue-50-l));--color--blue-55-h: var(--color--blue--h);--color--blue-55-s: var(--color--blue--s);--color--blue-55-l: calc(var(--color--blue--l) + -3.9411764706%);--color--blue-55: hsl(var(--color--blue-55-h) var(--color--blue-55-s) var(--color--blue-55-l));--color--blue-60-h: var(--color--blue--h);--color--blue-60-s: var(--color--blue--s);--color--blue-60-l: calc(var(--color--blue--l) + -7.8823529412%);--color--blue-60: hsl(var(--color--blue-60-h) var(--color--blue-60-s) var(--color--blue-60-l));--color--blue-65-h: var(--color--blue--h);--color--blue-65-s: var(--color--blue--s);--color--blue-65-l: calc(var(--color--blue--l) + -11.8235294118%);--color--blue-65: hsl(var(--color--blue-65-h) var(--color--blue-65-s) var(--color--blue-65-l));--color--blue-70-h: var(--color--blue--h);--color--blue-70-s: var(--color--blue--s);--color--blue-70-l: calc(var(--color--blue--l) + -15.7647058824%);--color--blue-70: hsl(var(--color--blue-70-h) var(--color--blue-70-s) var(--color--blue-70-l));--color--blue-75-h: var(--color--blue--h);--color--blue-75-s: var(--color--blue--s);--color--blue-75-l: calc(var(--color--blue--l) + -19.7058823529%);--color--blue-75: hsl(var(--color--blue-75-h) var(--color--blue-75-s) var(--color--blue-75-l));--color--blue-80-h: var(--color--blue--h);--color--blue-80-s: var(--color--blue--s);--color--blue-80-l: calc(var(--color--blue--l) + -23.6470588235%);--color--blue-80: hsl(var(--color--blue-80-h) var(--color--blue-80-s) var(--color--blue-80-l));--color--blue-85-h: var(--color--blue--h);--color--blue-85-s: var(--color--blue--s);--color--blue-85-l: calc(var(--color--blue--l) + -27.5882352941%);--color--blue-85: hsl(var(--color--blue-85-h) var(--color--blue-85-s) var(--color--blue-85-l));--color--blue-90-h: var(--color--blue--h);--color--blue-90-s: var(--color--blue--s);--color--blue-90-l: calc(var(--color--blue--l) + -31.5294117647%);--color--blue-90: hsl(var(--color--blue-90-h) var(--color--blue-90-s) var(--color--blue-90-l));--color--blue-95-h: var(--color--blue--h);--color--blue-95-s: var(--color--blue--s);--color--blue-95-l: calc(var(--color--blue--l) + -35.4705882353%);--color--blue-95: hsl(var(--color--blue-95-h) var(--color--blue-95-s) var(--color--blue-95-l));--color--purple-05-h: var(--color--purple--h);--color--purple-05-s: var(--color--purple--s);--color--purple-05-l: calc(var(--color--purple--l) + 40.9411764706%);--color--purple-05: hsl(var(--color--purple-05-h) var(--color--purple-05-s) var(--color--purple-05-l));--color--purple-10-h: var(--color--purple--h);--color--purple-10-s: var(--color--purple--s);--color--purple-10-l: calc(var(--color--purple--l) + 36.3921568627%);--color--purple-10: hsl(var(--color--purple-10-h) var(--color--purple-10-s) var(--color--purple-10-l));--color--purple-15-h: var(--color--purple--h);--color--purple-15-s: var(--color--purple--s);--color--purple-15-l: calc(var(--color--purple--l) + 31.8431372549%);--color--purple-15: hsl(var(--color--purple-15-h) var(--color--purple-15-s) var(--color--purple-15-l));--color--purple-20-h: var(--color--purple--h);--color--purple-20-s: var(--color--purple--s);--color--purple-20-l: calc(var(--color--purple--l) + 27.2941176471%);--color--purple-20: hsl(var(--color--purple-20-h) var(--color--purple-20-s) var(--color--purple-20-l));--color--purple-25-h: var(--color--purple--h);--color--purple-25-s: var(--color--purple--s);--color--purple-25-l: calc(var(--color--purple--l) + 22.7450980392%);--color--purple-25: hsl(var(--color--purple-25-h) var(--color--purple-25-s) var(--color--purple-25-l));--color--purple-30-h: var(--color--purple--h);--color--purple-30-s: var(--color--purple--s);--color--purple-30-l: calc(var(--color--purple--l) + 18.1960784314%);--color--purple-30: hsl(var(--color--purple-30-h) var(--color--purple-30-s) var(--color--purple-30-l));--color--purple-35-h: var(--color--purple--h);--color--purple-35-s: var(--color--purple--s);--color--purple-35-l: calc(var(--color--purple--l) + 13.6470588235%);--color--purple-35: hsl(var(--color--purple-35-h) var(--color--purple-35-s) var(--color--purple-35-l));--color--purple-40-h: var(--color--purple--h);--color--purple-40-s: var(--color--purple--s);--color--purple-40-l: calc(var(--color--purple--l) + 9.0980392157%);--color--purple-40: hsl(var(--color--purple-40-h) var(--color--purple-40-s) var(--color--purple-40-l));--color--purple-45-h: var(--color--purple--h);--color--purple-45-s: var(--color--purple--s);--color--purple-45-l: calc(var(--color--purple--l) + 4.5490196078%);--color--purple-45: hsl(var(--color--purple-45-h) var(--color--purple-45-s) var(--color--purple-45-l));--color--purple-50-h: var(--color--purple--h);--color--purple-50-s: var(--color--purple--s);--color--purple-50-l: calc(var(--color--purple--l) + 0%);--color--purple-50: hsl(var(--color--purple-50-h) var(--color--purple-50-s) var(--color--purple-50-l));--color--purple-55-h: var(--color--purple--h);--color--purple-55-s: var(--color--purple--s);--color--purple-55-l: calc(var(--color--purple--l) + -5.4509803922%);--color--purple-55: hsl(var(--color--purple-55-h) var(--color--purple-55-s) var(--color--purple-55-l));--color--purple-60-h: var(--color--purple--h);--color--purple-60-s: var(--color--purple--s);--color--purple-60-l: calc(var(--color--purple--l) + -10.9019607843%);--color--purple-60: hsl(var(--color--purple-60-h) var(--color--purple-60-s) var(--color--purple-60-l));--color--purple-65-h: var(--color--purple--h);--color--purple-65-s: var(--color--purple--s);--color--purple-65-l: calc(var(--color--purple--l) + -16.3529411765%);--color--purple-65: hsl(var(--color--purple-65-h) var(--color--purple-65-s) var(--color--purple-65-l));--color--purple-70-h: var(--color--purple--h);--color--purple-70-s: var(--color--purple--s);--color--purple-70-l: calc(var(--color--purple--l) + -21.8039215686%);--color--purple-70: hsl(var(--color--purple-70-h) var(--color--purple-70-s) var(--color--purple-70-l));--color--purple-75-h: var(--color--purple--h);--color--purple-75-s: var(--color--purple--s);--color--purple-75-l: calc(var(--color--purple--l) + -27.2549019608%);--color--purple-75: hsl(var(--color--purple-75-h) var(--color--purple-75-s) var(--color--purple-75-l));--color--purple-80-h: var(--color--purple--h);--color--purple-80-s: var(--color--purple--s);--color--purple-80-l: calc(var(--color--purple--l) + -32.7058823529%);--color--purple-80: hsl(var(--color--purple-80-h) var(--color--purple-80-s) var(--color--purple-80-l));--color--purple-85-h: var(--color--purple--h);--color--purple-85-s: var(--color--purple--s);--color--purple-85-l: calc(var(--color--purple--l) + -38.1568627451%);--color--purple-85: hsl(var(--color--purple-85-h) var(--color--purple-85-s) var(--color--purple-85-l));--color--purple-90-h: var(--color--purple--h);--color--purple-90-s: var(--color--purple--s);--color--purple-90-l: calc(var(--color--purple--l) + -43.6078431373%);--color--purple-90: hsl(var(--color--purple-90-h) var(--color--purple-90-s) var(--color--purple-90-l));--color--purple-95-h: var(--color--purple--h);--color--purple-95-s: var(--color--purple--s);--color--purple-95-l: calc(var(--color--purple--l) + -49.0588235294%);--color--purple-95: hsl(var(--color--purple-95-h) var(--color--purple-95-s) var(--color--purple-95-l));--color--pink-05-h: var(--color--pink--h);--color--pink-05-s: var(--color--pink--s);--color--pink-05-l: calc(var(--color--pink--l) + 24.5294117647%);--color--pink-05: hsl(var(--color--pink-05-h) var(--color--pink-05-s) var(--color--pink-05-l));--color--pink-10-h: var(--color--pink--h);--color--pink-10-s: var(--color--pink--s);--color--pink-10-l: calc(var(--color--pink--l) + 21.8039215686%);--color--pink-10: hsl(var(--color--pink-10-h) var(--color--pink-10-s) var(--color--pink-10-l));--color--pink-15-h: var(--color--pink--h);--color--pink-15-s: var(--color--pink--s);--color--pink-15-l: calc(var(--color--pink--l) + 19.0784313725%);--color--pink-15: hsl(var(--color--pink-15-h) var(--color--pink-15-s) var(--color--pink-15-l));--color--pink-20-h: var(--color--pink--h);--color--pink-20-s: var(--color--pink--s);--color--pink-20-l: calc(var(--color--pink--l) + 16.3529411765%);--color--pink-20: hsl(var(--color--pink-20-h) var(--color--pink-20-s) var(--color--pink-20-l));--color--pink-25-h: var(--color--pink--h);--color--pink-25-s: var(--color--pink--s);--color--pink-25-l: calc(var(--color--pink--l) + 13.6274509804%);--color--pink-25: hsl(var(--color--pink-25-h) var(--color--pink-25-s) var(--color--pink-25-l));--color--pink-30-h: var(--color--pink--h);--color--pink-30-s: var(--color--pink--s);--color--pink-30-l: calc(var(--color--pink--l) + 10.9019607843%);--color--pink-30: hsl(var(--color--pink-30-h) var(--color--pink-30-s) var(--color--pink-30-l));--color--pink-35-h: var(--color--pink--h);--color--pink-35-s: var(--color--pink--s);--color--pink-35-l: calc(var(--color--pink--l) + 8.1764705882%);--color--pink-35: hsl(var(--color--pink-35-h) var(--color--pink-35-s) var(--color--pink-35-l));--color--pink-40-h: var(--color--pink--h);--color--pink-40-s: var(--color--pink--s);--color--pink-40-l: calc(var(--color--pink--l) + 5.4509803922%);--color--pink-40: hsl(var(--color--pink-40-h) var(--color--pink-40-s) var(--color--pink-40-l));--color--pink-45-h: var(--color--pink--h);--color--pink-45-s: var(--color--pink--s);--color--pink-45-l: calc(var(--color--pink--l) + 2.7254901961%);--color--pink-45: hsl(var(--color--pink-45-h) var(--color--pink-45-s) var(--color--pink-45-l));--color--pink-50-h: var(--color--pink--h);--color--pink-50-s: var(--color--pink--s);--color--pink-50-l: calc(var(--color--pink--l) + 0%);--color--pink-50: hsl(var(--color--pink-50-h) var(--color--pink-50-s) var(--color--pink-50-l));--color--pink-55-h: var(--color--pink--h);--color--pink-55-s: var(--color--pink--s);--color--pink-55-l: calc(var(--color--pink--l) + -7.2745098039%);--color--pink-55: hsl(var(--color--pink-55-h) var(--color--pink-55-s) var(--color--pink-55-l));--color--pink-60-h: var(--color--pink--h);--color--pink-60-s: var(--color--pink--s);--color--pink-60-l: calc(var(--color--pink--l) + -14.5490196078%);--color--pink-60: hsl(var(--color--pink-60-h) var(--color--pink-60-s) var(--color--pink-60-l));--color--pink-65-h: var(--color--pink--h);--color--pink-65-s: var(--color--pink--s);--color--pink-65-l: calc(var(--color--pink--l) + -21.8235294118%);--color--pink-65: hsl(var(--color--pink-65-h) var(--color--pink-65-s) var(--color--pink-65-l));--color--pink-70-h: var(--color--pink--h);--color--pink-70-s: var(--color--pink--s);--color--pink-70-l: calc(var(--color--pink--l) + -29.0980392157%);--color--pink-70: hsl(var(--color--pink-70-h) var(--color--pink-70-s) var(--color--pink-70-l));--color--pink-75-h: var(--color--pink--h);--color--pink-75-s: var(--color--pink--s);--color--pink-75-l: calc(var(--color--pink--l) + -36.3725490196%);--color--pink-75: hsl(var(--color--pink-75-h) var(--color--pink-75-s) var(--color--pink-75-l));--color--pink-80-h: var(--color--pink--h);--color--pink-80-s: var(--color--pink--s);--color--pink-80-l: calc(var(--color--pink--l) + -43.6470588235%);--color--pink-80: hsl(var(--color--pink-80-h) var(--color--pink-80-s) var(--color--pink-80-l));--color--pink-85-h: var(--color--pink--h);--color--pink-85-s: var(--color--pink--s);--color--pink-85-l: calc(var(--color--pink--l) + -50.9215686275%);--color--pink-85: hsl(var(--color--pink-85-h) var(--color--pink-85-s) var(--color--pink-85-l));--color--pink-90-h: var(--color--pink--h);--color--pink-90-s: var(--color--pink--s);--color--pink-90-l: calc(var(--color--pink--l) + -58.1960784314%);--color--pink-90: hsl(var(--color--pink-90-h) var(--color--pink-90-s) var(--color--pink-90-l));--color--pink-95-h: var(--color--pink--h);--color--pink-95-s: var(--color--pink--s);--color--pink-95-l: calc(var(--color--pink--l) + -65.4705882353%);--color--pink-95: hsl(var(--color--pink-95-h) var(--color--pink-95-s) var(--color--pink-95-l));--color--gray-05-h: var(--color--gray--h);--color--gray-05-s: var(--color--gray--s);--color--gray-05-l: calc(var(--color--gray--l) + 36%);--color--gray-05: hsl(var(--color--gray-05-h) var(--color--gray-05-s) var(--color--gray-05-l));--color--gray-10-h: var(--color--gray--h);--color--gray-10-s: var(--color--gray--s);--color--gray-10-l: calc(var(--color--gray--l) + 32%);--color--gray-10: hsl(var(--color--gray-10-h) var(--color--gray-10-s) var(--color--gray-10-l));--color--gray-15-h: var(--color--gray--h);--color--gray-15-s: var(--color--gray--s);--color--gray-15-l: calc(var(--color--gray--l) + 28%);--color--gray-15: hsl(var(--color--gray-15-h) var(--color--gray-15-s) var(--color--gray-15-l));--color--gray-20-h: var(--color--gray--h);--color--gray-20-s: var(--color--gray--s);--color--gray-20-l: calc(var(--color--gray--l) + 24%);--color--gray-20: hsl(var(--color--gray-20-h) var(--color--gray-20-s) var(--color--gray-20-l));--color--gray-25-h: var(--color--gray--h);--color--gray-25-s: var(--color--gray--s);--color--gray-25-l: calc(var(--color--gray--l) + 20%);--color--gray-25: hsl(var(--color--gray-25-h) var(--color--gray-25-s) var(--color--gray-25-l));--color--gray-30-h: var(--color--gray--h);--color--gray-30-s: var(--color--gray--s);--color--gray-30-l: calc(var(--color--gray--l) + 16%);--color--gray-30: hsl(var(--color--gray-30-h) var(--color--gray-30-s) var(--color--gray-30-l));--color--gray-35-h: var(--color--gray--h);--color--gray-35-s: var(--color--gray--s);--color--gray-35-l: calc(var(--color--gray--l) + 12%);--color--gray-35: hsl(var(--color--gray-35-h) var(--color--gray-35-s) var(--color--gray-35-l));--color--gray-40-h: var(--color--gray--h);--color--gray-40-s: var(--color--gray--s);--color--gray-40-l: calc(var(--color--gray--l) + 8%);--color--gray-40: hsl(var(--color--gray-40-h) var(--color--gray-40-s) var(--color--gray-40-l));--color--gray-45-h: var(--color--gray--h);--color--gray-45-s: var(--color--gray--s);--color--gray-45-l: calc(var(--color--gray--l) + 4%);--color--gray-45: hsl(var(--color--gray-45-h) var(--color--gray-45-s) var(--color--gray-45-l));--color--gray-50-h: var(--color--gray--h);--color--gray-50-s: var(--color--gray--s);--color--gray-50-l: calc(var(--color--gray--l) + 0%);--color--gray-50: hsl(var(--color--gray-50-h) var(--color--gray-50-s) var(--color--gray-50-l));--color--gray-55-h: var(--color--gray--h);--color--gray-55-s: var(--color--gray--s);--color--gray-55-l: calc(var(--color--gray--l) + -6%);--color--gray-55: hsl(var(--color--gray-55-h) var(--color--gray-55-s) var(--color--gray-55-l));--color--gray-60-h: var(--color--gray--h);--color--gray-60-s: var(--color--gray--s);--color--gray-60-l: calc(var(--color--gray--l) + -12%);--color--gray-60: hsl(var(--color--gray-60-h) var(--color--gray-60-s) var(--color--gray-60-l));--color--gray-65-h: var(--color--gray--h);--color--gray-65-s: var(--color--gray--s);--color--gray-65-l: calc(var(--color--gray--l) + -18%);--color--gray-65: hsl(var(--color--gray-65-h) var(--color--gray-65-s) var(--color--gray-65-l));--color--gray-70-h: var(--color--gray--h);--color--gray-70-s: var(--color--gray--s);--color--gray-70-l: calc(var(--color--gray--l) + -24%);--color--gray-70: hsl(var(--color--gray-70-h) var(--color--gray-70-s) var(--color--gray-70-l));--color--gray-75-h: var(--color--gray--h);--color--gray-75-s: var(--color--gray--s);--color--gray-75-l: calc(var(--color--gray--l) + -30%);--color--gray-75: hsl(var(--color--gray-75-h) var(--color--gray-75-s) var(--color--gray-75-l));--color--gray-80-h: var(--color--gray--h);--color--gray-80-s: var(--color--gray--s);--color--gray-80-l: calc(var(--color--gray--l) + -36%);--color--gray-80: hsl(var(--color--gray-80-h) var(--color--gray-80-s) var(--color--gray-80-l));--color--gray-85-h: var(--color--gray--h);--color--gray-85-s: var(--color--gray--s);--color--gray-85-l: calc(var(--color--gray--l) + -42%);--color--gray-85: hsl(var(--color--gray-85-h) var(--color--gray-85-s) var(--color--gray-85-l));--color--gray-90-h: var(--color--gray--h);--color--gray-90-s: var(--color--gray--s);--color--gray-90-l: calc(var(--color--gray--l) + -48%);--color--gray-90: hsl(var(--color--gray-90-h) var(--color--gray-90-s) var(--color--gray-90-l));--color--gray-95-h: var(--color--gray--h);--color--gray-95-s: var(--color--gray--s);--color--gray-95-l: calc(var(--color--gray--l) + -54%);--color--gray-95: hsl(var(--color--gray-95-h) var(--color--gray-95-s) var(--color--gray-95-l));--color--light-25-h: var(--color--light--h);--color--light-25-s: var(--color--light--s);--color--light-25-l: calc(var(--color--light--l) + 6%);--color--light-25: hsl(var(--color--light-25-h) var(--color--light-25-s) var(--color--light-25-l));--color--light-30-h: var(--color--light--h);--color--light-30-s: var(--color--light--s);--color--light-30-l: calc(var(--color--light--l) + 4.8%);--color--light-30: hsl(var(--color--light-30-h) var(--color--light-30-s) var(--color--light-30-l));--color--light-35-h: var(--color--light--h);--color--light-35-s: var(--color--light--s);--color--light-35-l: calc(var(--color--light--l) + 3.6%);--color--light-35: hsl(var(--color--light-35-h) var(--color--light-35-s) var(--color--light-35-l));--color--light-40-h: var(--color--light--h);--color--light-40-s: var(--color--light--s);--color--light-40-l: calc(var(--color--light--l) + 2.4%);--color--light-40: hsl(var(--color--light-40-h) var(--color--light-40-s) var(--color--light-40-l));--color--light-45-h: var(--color--light--h);--color--light-45-s: var(--color--light--s);--color--light-45-l: calc(var(--color--light--l) + 1.2%);--color--light-45: hsl(var(--color--light-45-h) var(--color--light-45-s) var(--color--light-45-l));--color--light-50-h: var(--color--light--h);--color--light-50-s: var(--color--light--s);--color--light-50-l: calc(var(--color--light--l) + 0%);--color--light-50: hsl(var(--color--light-50-h) var(--color--light-50-s) var(--color--light-50-l));--color--light-55-h: var(--color--light--h);--color--light-55-s: var(--color--light--s);--color--light-55-l: calc(var(--color--light--l) + -8.8%);--color--light-55: hsl(var(--color--light-55-h) var(--color--light-55-s) var(--color--light-55-l));--color--light-60-h: var(--color--light--h);--color--light-60-s: var(--color--light--s);--color--light-60-l: calc(var(--color--light--l) + -17.6%);--color--light-60: hsl(var(--color--light-60-h) var(--color--light-60-s) var(--color--light-60-l));--color--light-65-h: var(--color--light--h);--color--light-65-s: var(--color--light--s);--color--light-65-l: calc(var(--color--light--l) + -26.4%);--color--light-65: hsl(var(--color--light-65-h) var(--color--light-65-s) var(--color--light-65-l));--color--light-70-h: var(--color--light--h);--color--light-70-s: var(--color--light--s);--color--light-70-l: calc(var(--color--light--l) + -35.2%);--color--light-70: hsl(var(--color--light-70-h) var(--color--light-70-s) var(--color--light-70-l));--color--light-75-h: var(--color--light--h);--color--light-75-s: var(--color--light--s);--color--light-75-l: calc(var(--color--light--l) + -44%);--color--light-75: hsl(var(--color--light-75-h) var(--color--light-75-s) var(--color--light-75-l));--color--dark-25-h: var(--color--dark--h);--color--dark-25-s: var(--color--dark--s);--color--dark-25-l: calc(var(--color--dark--l) + 38%);--color--dark-25: hsl(var(--color--dark-25-h) var(--color--dark-25-s) var(--color--dark-25-l));--color--dark-30-h: var(--color--dark--h);--color--dark-30-s: var(--color--dark--s);--color--dark-30-l: calc(var(--color--dark--l) + 30.4%);--color--dark-30: hsl(var(--color--dark-30-h) var(--color--dark-30-s) var(--color--dark-30-l));--color--dark-35-h: var(--color--dark--h);--color--dark-35-s: var(--color--dark--s);--color--dark-35-l: calc(var(--color--dark--l) + 22.8%);--color--dark-35: hsl(var(--color--dark-35-h) var(--color--dark-35-s) var(--color--dark-35-l));--color--dark-40-h: var(--color--dark--h);--color--dark-40-s: var(--color--dark--s);--color--dark-40-l: calc(var(--color--dark--l) + 15.2%);--color--dark-40: hsl(var(--color--dark-40-h) var(--color--dark-40-s) var(--color--dark-40-l));--color--dark-45-h: var(--color--dark--h);--color--dark-45-s: var(--color--dark--s);--color--dark-45-l: calc(var(--color--dark--l) + 7.6%);--color--dark-45: hsl(var(--color--dark-45-h) var(--color--dark-45-s) var(--color--dark-45-l));--color--dark-50-h: var(--color--dark--h);--color--dark-50-s: var(--color--dark--s);--color--dark-50-l: calc(var(--color--dark--l) + 0%);--color--dark-50: hsl(var(--color--dark-50-h) var(--color--dark-50-s) var(--color--dark-50-l));--color--dark-55-h: var(--color--dark--h);--color--dark-55-s: var(--color--dark--s);--color--dark-55-l: calc(var(--color--dark--l) + -2.4%);--color--dark-55: hsl(var(--color--dark-55-h) var(--color--dark-55-s) var(--color--dark-55-l));--color--dark-60-h: var(--color--dark--h);--color--dark-60-s: var(--color--dark--s);--color--dark-60-l: calc(var(--color--dark--l) + -4.8%);--color--dark-60: hsl(var(--color--dark-60-h) var(--color--dark-60-s) var(--color--dark-60-l));--color--dark-65-h: var(--color--dark--h);--color--dark-65-s: var(--color--dark--s);--color--dark-65-l: calc(var(--color--dark--l) + -7.2%);--color--dark-65: hsl(var(--color--dark-65-h) var(--color--dark-65-s) var(--color--dark-65-l));--color--dark-70-h: var(--color--dark--h);--color--dark-70-s: var(--color--dark--s);--color--dark-70-l: calc(var(--color--dark--l) + -9.6%);--color--dark-70: hsl(var(--color--dark-70-h) var(--color--dark-70-s) var(--color--dark-70-l));--color--dark-75-h: var(--color--dark--h);--color--dark-75-s: var(--color--dark--s);--color--dark-75-l: calc(var(--color--dark--l) + -12%);--color--dark-75: hsl(var(--color--dark-75-h) var(--color--dark-75-s) var(--color--dark-75-l));--color--facebook-55-h: var(--color--facebook--h);--color--facebook-55-s: var(--color--facebook--s);--color--facebook-55-l: calc(var(--color--facebook--l) + -4.137254902%);--color--facebook-55: hsl(var(--color--facebook-55-h) var(--color--facebook-55-s) var(--color--facebook-55-l));--color--facebook-60-h: var(--color--facebook--h);--color--facebook-60-s: var(--color--facebook--s);--color--facebook-60-l: calc(var(--color--facebook--l) + -8.2745098039%);--color--facebook-60: hsl(var(--color--facebook-60-h) var(--color--facebook-60-s) var(--color--facebook-60-l));--color--twitter-55-h: var(--color--twitter--h);--color--twitter-55-s: var(--color--twitter--s);--color--twitter-55-l: calc(var(--color--twitter--l) + -5.3137254902%);--color--twitter-55: hsl(var(--color--twitter-55-h) var(--color--twitter-55-s) var(--color--twitter-55-l));--color--twitter-60-h: var(--color--twitter--h);--color--twitter-60-s: var(--color--twitter--s);--color--twitter-60-l: calc(var(--color--twitter--l) + -10.6274509804%);--color--twitter-60: hsl(var(--color--twitter-60-h) var(--color--twitter-60-s) var(--color--twitter-60-l));--color--google-55-h: var(--color--google--h);--color--google-55-s: var(--color--google--s);--color--google-55-l: calc(var(--color--google--l) + -5.4509803922%);--color--google-55: hsl(var(--color--google-55-h) var(--color--google-55-s) var(--color--google-55-l));--color--google-60-h: var(--color--google--h);--color--google-60-s: var(--color--google--s);--color--google-60-l: calc(var(--color--google--l) + -10.9019607843%);--color--google-60: hsl(var(--color--google-60-h) var(--color--google-60-s) var(--color--google-60-l));--color--github-55-h: var(--color--github--h);--color--github-55-s: var(--color--github--s);--color--github-55-l: calc(var(--color--github--l) + -2%);--color--github-55: hsl(var(--color--github-55-h) var(--color--github-55-s) var(--color--github-55-l));--color--github-60-h: var(--color--github--h);--color--github-60-s: var(--color--github--s);--color--github-60-l: calc(var(--color--github--l) + -4%);--color--github-60: hsl(var(--color--github-60-h) var(--color--github-60-s) var(--color--github-60-l));--contrast-color-for-light-background: rgb(29.94, 30.96, 31.26);--contrast-color-for-dark-background: #ffffff}:root{--border-style: solid;--border-top-width: 1px;--border-right-width: 1px;--border-bottom-width: 1px;--border-left-width: 1px;--border-width: var(--border-top-width) var(--border-right-width) var(--border-bottom-width) var(--border-left-width);--border-color--light: var(--color--gray-30);--border-color--dark: var(--color--gray-70);--border-color: var(--border-color--light);--border-top-left-radius: .25rem;--border-top-right-radius: .25rem;--border-bottom-right-radius: .25rem;--border-bottom-left-radius: .25rem;--border-radius: var(--border-top-left-radius) var(--border-top-right-radius) var(--border-bottom-right-radius) var(--border-bottom-left-radius);--border-top-left-radius-xs: calc(var(--border-top-left-radius) * var(--size-multiplier--xs));--border-top-left-radius-sm: calc(var(--border-top-left-radius) * var(--size-multiplier--sm));--border-top-left-radius-md: calc(var(--border-top-left-radius) * var(--size-multiplier--md));--border-top-left-radius-lg: calc(var(--border-top-left-radius) * var(--size-multiplier--lg));--border-top-left-radius-xl: calc(var(--border-top-left-radius) * var(--size-multiplier--xl));--border-top-right-radius-xs: calc(var(--border-top-right-radius) * var(--size-multiplier--xs));--border-top-right-radius-sm: calc(var(--border-top-right-radius) * var(--size-multiplier--sm));--border-top-right-radius-md: calc(var(--border-top-right-radius) * var(--size-multiplier--md));--border-top-right-radius-lg: calc(var(--border-top-right-radius) * var(--size-multiplier--lg));--border-top-right-radius-xl: calc(var(--border-top-right-radius) * var(--size-multiplier--xl));--border-bottom-right-radius-xs: calc(var(--border-bottom-right-radius) * var(--size-multiplier--xs));--border-bottom-right-radius-sm: calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm));--border-bottom-right-radius-md: calc(var(--border-bottom-right-radius) * var(--size-multiplier--md));--border-bottom-right-radius-lg: calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg));--border-bottom-right-radius-xl: calc(var(--border-bottom-right-radius) * var(--size-multiplier--xl));--border-bottom-left-radius-xs: calc(var(--border-bottom-left-radius) * var(--size-multiplier--xs));--border-bottom-left-radius-sm: calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));--border-bottom-left-radius-md: calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));--border-bottom-left-radius-lg: calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));--border-bottom-left-radius-xl: calc(var(--border-bottom-left-radius) * var(--size-multiplier--xl));--border-radius-xs: calc(var(--border-top-left-radius) * var(--size-multiplier--xs)) calc(var(--border-top-right-radius) * var(--size-multiplier--xs)) calc(var(--border-bottom-right-radius) * var(--size-multiplier--xs)) calc(var(--border-bottom-left-radius) * var(--size-multiplier--xs));--border-radius-sm: calc(var(--border-top-left-radius) * var(--size-multiplier--sm)) calc(var(--border-top-right-radius) * var(--size-multiplier--sm)) calc(var(--border-bottom-right-radius) * var(--size-multiplier--sm)) calc(var(--border-bottom-left-radius) * var(--size-multiplier--sm));--border-radius-md: calc(var(--border-top-left-radius) * var(--size-multiplier--md)) calc(var(--border-top-right-radius) * var(--size-multiplier--md)) calc(var(--border-bottom-right-radius) * var(--size-multiplier--md)) calc(var(--border-bottom-left-radius) * var(--size-multiplier--md));--border-radius-lg: calc(var(--border-top-left-radius) * var(--size-multiplier--lg)) calc(var(--border-top-right-radius) * var(--size-multiplier--lg)) calc(var(--border-bottom-right-radius) * var(--size-multiplier--lg)) calc(var(--border-bottom-left-radius) * var(--size-multiplier--lg));--border-radius-xl: calc(var(--border-top-left-radius) * var(--size-multiplier--xl)) calc(var(--border-top-right-radius) * var(--size-multiplier--xl)) calc(var(--border-bottom-right-radius) * var(--size-multiplier--xl)) calc(var(--border-bottom-left-radius) * var(--size-multiplier--xl))}:root{--box-shadow-offset-x: 0;--box-shadow-offset-y: .5rem;--box-shadow-blur-radius: 1rem;--box-shadow-spread-radius: -.75rem;--box-shadow-color: rgba(0, 0, 0, .15);--box-shadow: var(--box-shadow-offset-x) var(--box-shadow-offset-y) var(--box-shadow-blur-radius) var(--box-shadow-spread-radius) var(--box-shadow-color)}:root{--body--background--light: var(--color--white);--body--color--light: var(--color--gray-80);--body--background--dark: var(--color--gray-90);--body--color--dark: var(--color--gray-10);--body--background: var(--body--background--light);--body--color: var(--body--color--light)}:root{--gutter: 28px;--gutter--xs: calc(var(--gutter) * .85);--gutter--sm: calc(var(--gutter) * .925);--gutter--md: var(--gutter);--gutter--lg: calc(var(--gutter) * 1.075);--gutter--xl: calc(var(--gutter) * 1.15);--gutter--xxl: calc(var(--gutter) * 1.25)}:root{--thumbnail--padding: calc(var(--spacing) / 2);--thumbnail--background: var(--color--white);--thumbnail--border-width: var(--border-width);--thumbnail--border-color: var(--color--gray-40);--thumbnail--border-radius: var(--border-radius);--thumbnail--box-shadow: 0 1px 2px rgba(var(--color--black), .075);--thumbnail--transition: all .2s ease-in-out;--polaroid--padding: calc(var(--spacing) * 3);--figure--caption--font-size: 90%;--figure--caption--color: var(--color--gray-60);--figure--image--margin-bottom: calc(var(--spacing) / 2)}:root{--scale-ratio--minor-second: 1.067;--scale-ratio--major-second: 1.125;--scale-ratio--minor-third: 1.2;--scale-ratio--major-third: 1.25;--scale-ratio--perfect-fourth: 1.333;--scale-ratio--augmented-fourth: 1.414;--scale-ratio--perfect-fifth: 1.5;--scale-ratio--golden: 1.618;--scale-ratio: var(--scale-ratio--minor-third);--scale-ratio-secondary: var(--scale-ratio--perfect-fourth);--scale-ratio--pow-1: var(--scale-ratio);--scale-ratio--pow-2: calc(var(--scale-ratio--pow-1) * var(--scale-ratio));--scale-ratio--pow-3: calc(var(--scale-ratio--pow-2) * var(--scale-ratio));--scale-ratio--pow-4: calc(var(--scale-ratio--pow-3) * var(--scale-ratio));--scale-ratio--pow-5: calc(var(--scale-ratio--pow-4) * var(--scale-ratio));--scale-ratio--pow-6: calc(var(--scale-ratio--pow-5) * var(--scale-ratio))}:root{--font-family-primary--base: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif;--font-family-primary--monospace: SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;--font-family-primary--print: Georgia, Times New Roman, Times, serif;--font-family-secondary--base: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif;--font-family-secondary--monospace: SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;--font-family-secondary--print: Georgia, Times New Roman, Times, serif;--letter-spacing: 0;--font-size: 1rem;--line-height: 1.5;--text-muted: var(--color--gray-60);--font-size--xs: calc(var(--font-size) * var(--size-multiplier--xs));--font-size--sm: calc(var(--font-size) * var(--size-multiplier--sm));--font-size--md: calc(var(--font-size) * var(--size-multiplier--md));--font-size--lg: calc(var(--font-size) * var(--size-multiplier--lg));--font-size--xl: calc(var(--font-size) * var(--size-multiplier--xl));--font-weight--extralight: 200;--font-weight--light: 300;--font-weight--lighter: lighter;--font-weight--normal: normal;--font-weight--semibold: 600;--font-weight--bold: bold;--font-weight--bolder: bolder;--font-weight--black: 900;--h1--font-size: calc(var(--font-size) * var(--scale-ratio--pow-5));--h2--font-size: calc(var(--font-size) * var(--scale-ratio--pow-4));--h3--font-size: calc(var(--font-size) * var(--scale-ratio--pow-3));--h4--font-size: calc(var(--font-size) * var(--scale-ratio--pow-2));--h5--font-size: calc(var(--font-size) * var(--scale-ratio--pow-1));--h6--font-size: calc(var(--font-size));--heading--margin-top: calc(var(--spacing) * 2.5);--heading--margin-bottom: var(--spacing);--heading--font-family: var(--font-family-secondary--base);--heading--font-weight: var(--font-weight--semibold);--heading--line-height: 1.1;--heading--color: inherit;--d1--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-6));--d2--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-5));--d3--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-4));--d4--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-3));--d5--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-2));--d6--font-size: calc(var(--h1--font-size) * var(--scale-ratio--pow-1));--display--font-weight: var(--font-weight--semibold);--display--line-height: 1.1;--link--color: var(--color--primary);--link--color--hover: var(--color--primary-40);--link--decoration: none;--link--decoration--hover: underline;--lead--font-size: var(--font-size--lg);--lead--font-weight: var(--font-weight--light);--list--item--padding--inline: var(--spacing);--list--item--margin-bottom: calc(var(--spacing) * 1 / 2);--dt--font-weight: var(--font-weight--bold);--small--font-size: var(--font-size--sm);--small--font-weight: var(--font-weight--normal);--blockquote--footer--color: var(--color--gray-60);--blockquote--font-size: var(--font-size--lg);--blockquote--border: 3px solid var(--color--gray-30);--blockquote--margin: var(--spacing);--blockquote--padding--bordered: var(--spacing);--hr--border-color: hsla(var(--color--black--h), var(--color--black--s), var(--color--black--l), .1);--hr--border-width: var(--border-top-width);--hr--border-style: var(--border-style);--hr--margin: var(--spacing);--mark--padding: .2rem .4rem;--mark--color: var(--color--gray-80);--mark--background-color: var(--color--yellow-10);--code--font-size: 90%;--code--padding: .15rem .4rem;--code--color: #bd4147;--code--background: var(--color--gray-10);--code--color--dark: #ff6d6b;--code--background--dark: var(--color--gray-80);--kbd--font-size: var(--code--font-size);--kbd--box-shadow: inset 0 -.1rem 0 rgba(0, 0, 0, .25);--kbd--nested-font-weight: var(--font-weight--bold);--kbd--color: var(--color--white);--kbd--background: var(--color--gray-90);--kbd--padding: var(--code--padding);--pre--font-size: var(--code--font-size);--pre--color: var(--color--gray-90);--pre--color--dark: var(--color--white);--pre--scrollable-max-height: 340px}:root{--z-index--dropdown: 1000;--z-index--sticky: 1020;--z-index--fixed: 1030;--z-index--modal-backdrop: 1040;--z-index--modal: 1050;--z-index--popover: 1060;--z-index--tooltip: 1070}._vertical-align\:baseline{vertical-align:baseline!important}._vertical-align\:top{vertical-align:top!important}._vertical-align\:middle{vertical-align:middle!important}._vertical-align\:bottom{vertical-align:bottom!important}._vertical-align\:text-bottom{vertical-align:text-bottom!important}._vertical-align\:text-top{vertical-align:text-top!important}._border{border-width:1px 1px 1px 1px!important;border-width:var(--border-width)!important;border-style:solid!important;border-color:#bbc5c9;border-color:var(--border-color)}._border-0{border:none!important}._border-top{border-top-width:1px!important;border-top-width:var(--border-top-width)!important;border-top-style:solid!important;border-top-color:#bbc5c9;border-top-color:var(--border-color)}._border-top\:0{border-top:none!important}._border-right{border-right-width:1px!important;border-right-width:var(--border-right-width)!important;border-right-style:solid!important;border-right-color:#bbc5c9;border-right-color:var(--border-color)}._border-right\:0{border-right:none!important}._border-bottom{border-bottom-width:1px!important;border-bottom-width:var(--border-bottom-width)!important;border-bottom-style:solid!important;border-bottom-color:#bbc5c9;border-bottom-color:var(--border-color)}._border-bottom\:0{border-bottom:none!important}._border-left{border-left-width:1px!important;border-left-width:var(--border-left-width)!important;border-left-style:solid!important;border-left-color:#bbc5c9;border-left-color:var(--border-color)}._border-left\:0{border-left:none!important}._border-color\:primary{border-color:#178bb2!important;border-color:var(--color--primary)!important}._border-top-color\:primary{border-top-color:#178bb2!important;border-top-color:var(--color--primary)!important}._border-right-color\:primary{border-right-color:#178bb2!important;border-right-color:var(--color--primary)!important}._border-bottom-color\:primary{border-bottom-color:#178bb2!important;border-bottom-color:var(--color--primary)!important}._border-left-color\:primary{border-left-color:#178bb2!important;border-left-color:var(--color--primary)!important}._border-color\:secondary{border-color:#8268ae!important;border-color:var(--color--secondary)!important}._border-top-color\:secondary{border-top-color:#8268ae!important;border-top-color:var(--color--secondary)!important}._border-right-color\:secondary{border-right-color:#8268ae!important;border-right-color:var(--color--secondary)!important}._border-bottom-color\:secondary{border-bottom-color:#8268ae!important;border-bottom-color:var(--color--secondary)!important}._border-left-color\:secondary{border-left-color:#8268ae!important;border-left-color:var(--color--secondary)!important}._border-color\:light{border-color:#dde2e4!important;border-color:var(--color--light)!important}._border-top-color\:light{border-top-color:#dde2e4!important;border-top-color:var(--color--light)!important}._border-right-color\:light{border-right-color:#dde2e4!important;border-right-color:var(--color--light)!important}._border-bottom-color\:light{border-bottom-color:#dde2e4!important;border-bottom-color:var(--color--light)!important}._border-left-color\:light{border-left-color:#dde2e4!important;border-left-color:var(--color--light)!important}._border-color\:dark{border-color:#3b3f40!important;border-color:var(--color--dark)!important}._border-top-color\:dark{border-top-color:#3b3f40!important;border-top-color:var(--color--dark)!important}._border-right-color\:dark{border-right-color:#3b3f40!important;border-right-color:var(--color--dark)!important}._border-bottom-color\:dark{border-bottom-color:#3b3f40!important;border-bottom-color:var(--color--dark)!important}._border-left-color\:dark{border-left-color:#3b3f40!important;border-left-color:var(--color--dark)!important}._border-color\:white{border-color:#fff!important;border-color:var(--color--white)!important}._border-top-color\:white{border-top-color:#fff!important;border-top-color:var(--color--white)!important}._border-right-color\:white{border-right-color:#fff!important;border-right-color:var(--color--white)!important}._border-bottom-color\:white{border-bottom-color:#fff!important;border-bottom-color:var(--color--white)!important}._border-left-color\:white{border-left-color:#fff!important;border-left-color:var(--color--white)!important}._border-color\:gray-10{border-color:#e8eced!important;border-color:var(--color--gray-10)!important}._border-top-color\:gray-10{border-top-color:#e8eced!important;border-top-color:var(--color--gray-10)!important}._border-right-color\:gray-10{border-right-color:#e8eced!important;border-right-color:var(--color--gray-10)!important}._border-bottom-color\:gray-10{border-bottom-color:#e8eced!important;border-bottom-color:var(--color--gray-10)!important}._border-left-color\:gray-10{border-left-color:#e8eced!important;border-left-color:var(--color--gray-10)!important}._border-color\:gray-20{border-color:#d2d9db!important;border-color:var(--color--gray-20)!important}._border-top-color\:gray-20{border-top-color:#d2d9db!important;border-top-color:var(--color--gray-20)!important}._border-right-color\:gray-20{border-right-color:#d2d9db!important;border-right-color:var(--color--gray-20)!important}._border-bottom-color\:gray-20{border-bottom-color:#d2d9db!important;border-bottom-color:var(--color--gray-20)!important}._border-left-color\:gray-20{border-left-color:#d2d9db!important;border-left-color:var(--color--gray-20)!important}._border-color\:gray-30{border-color:#bbc5c9!important;border-color:var(--color--gray-30)!important}._border-top-color\:gray-30{border-top-color:#bbc5c9!important;border-top-color:var(--color--gray-30)!important}._border-right-color\:gray-30{border-right-color:#bbc5c9!important;border-right-color:var(--color--gray-30)!important}._border-bottom-color\:gray-30{border-bottom-color:#bbc5c9!important;border-bottom-color:var(--color--gray-30)!important}._border-left-color\:gray-30{border-left-color:#bbc5c9!important;border-left-color:var(--color--gray-30)!important}._border-color\:gray-40{border-color:#a4b2b6!important;border-color:var(--color--gray-40)!important}._border-top-color\:gray-40{border-top-color:#a4b2b6!important;border-top-color:var(--color--gray-40)!important}._border-right-color\:gray-40{border-right-color:#a4b2b6!important;border-right-color:var(--color--gray-40)!important}._border-bottom-color\:gray-40{border-bottom-color:#a4b2b6!important;border-bottom-color:var(--color--gray-40)!important}._border-left-color\:gray-40{border-left-color:#a4b2b6!important;border-left-color:var(--color--gray-40)!important}._border-color\:gray-50{border-color:#8e9fa4!important;border-color:var(--color--gray-50)!important}._border-top-color\:gray-50{border-top-color:#8e9fa4!important;border-top-color:var(--color--gray-50)!important}._border-right-color\:gray-50{border-right-color:#8e9fa4!important;border-right-color:var(--color--gray-50)!important}._border-bottom-color\:gray-50{border-bottom-color:#8e9fa4!important;border-bottom-color:var(--color--gray-50)!important}._border-left-color\:gray-50{border-left-color:#8e9fa4!important;border-left-color:var(--color--gray-50)!important}._border-color\:gray-60{border-color:#6d8288!important;border-color:var(--color--gray-60)!important}._border-top-color\:gray-60{border-top-color:#6d8288!important;border-top-color:var(--color--gray-60)!important}._border-right-color\:gray-60{border-right-color:#6d8288!important;border-right-color:var(--color--gray-60)!important}._border-bottom-color\:gray-60{border-bottom-color:#6d8288!important;border-bottom-color:var(--color--gray-60)!important}._border-left-color\:gray-60{border-left-color:#6d8288!important;border-left-color:var(--color--gray-60)!important}._border-color\:gray-70{border-color:#526166!important;border-color:var(--color--gray-70)!important}._border-top-color\:gray-70{border-top-color:#526166!important;border-top-color:var(--color--gray-70)!important}._border-right-color\:gray-70{border-right-color:#526166!important;border-right-color:var(--color--gray-70)!important}._border-bottom-color\:gray-70{border-bottom-color:#526166!important;border-bottom-color:var(--color--gray-70)!important}._border-left-color\:gray-70{border-left-color:#526166!important;border-left-color:var(--color--gray-70)!important}._border-color\:gray-80{border-color:#364144!important;border-color:var(--color--gray-80)!important}._border-top-color\:gray-80{border-top-color:#364144!important;border-top-color:var(--color--gray-80)!important}._border-right-color\:gray-80{border-right-color:#364144!important;border-right-color:var(--color--gray-80)!important}._border-bottom-color\:gray-80{border-bottom-color:#364144!important;border-bottom-color:var(--color--gray-80)!important}._border-left-color\:gray-80{border-left-color:#364144!important;border-left-color:var(--color--gray-80)!important}._border-color\:gray-90{border-color:#1b2022!important;border-color:var(--color--gray-90)!important}._border-top-color\:gray-90{border-top-color:#1b2022!important;border-top-color:var(--color--gray-90)!important}._border-right-color\:gray-90{border-right-color:#1b2022!important;border-right-color:var(--color--gray-90)!important}._border-bottom-color\:gray-90{border-bottom-color:#1b2022!important;border-bottom-color:var(--color--gray-90)!important}._border-left-color\:gray-90{border-left-color:#1b2022!important;border-left-color:var(--color--gray-90)!important}._border-color\:black{border-color:#000!important;border-color:var(--color--black)!important}._border-top-color\:black{border-top-color:#000!important;border-top-color:var(--color--black)!important}._border-right-color\:black{border-right-color:#000!important;border-right-color:var(--color--black)!important}._border-bottom-color\:black{border-bottom-color:#000!important;border-bottom-color:var(--color--black)!important}._border-left-color\:black{border-left-color:#000!important;border-left-color:var(--color--black)!important}._border-color\:info{border-color:#48b4a9!important;border-color:var(--color--info)!important}._border-top-color\:info{border-top-color:#48b4a9!important;border-top-color:var(--color--info)!important}._border-right-color\:info{border-right-color:#48b4a9!important;border-right-color:var(--color--info)!important}._border-bottom-color\:info{border-bottom-color:#48b4a9!important;border-bottom-color:var(--color--info)!important}._border-left-color\:info{border-left-color:#48b4a9!important;border-left-color:var(--color--info)!important}._border-color\:success{border-color:#2fb079!important;border-color:var(--color--success)!important}._border-top-color\:success{border-top-color:#2fb079!important;border-top-color:var(--color--success)!important}._border-right-color\:success{border-right-color:#2fb079!important;border-right-color:var(--color--success)!important}._border-bottom-color\:success{border-bottom-color:#2fb079!important;border-bottom-color:var(--color--success)!important}._border-left-color\:success{border-left-color:#2fb079!important;border-left-color:var(--color--success)!important}._border-color\:warning{border-color:#ffda77!important;border-color:var(--color--warning)!important}._border-top-color\:warning{border-top-color:#ffda77!important;border-top-color:var(--color--warning)!important}._border-right-color\:warning{border-right-color:#ffda77!important;border-right-color:var(--color--warning)!important}._border-bottom-color\:warning{border-bottom-color:#ffda77!important;border-bottom-color:var(--color--warning)!important}._border-left-color\:warning{border-left-color:#ffda77!important;border-left-color:var(--color--warning)!important}._border-color\:danger{border-color:#f2413d!important;border-color:var(--color--danger)!important}._border-top-color\:danger{border-top-color:#f2413d!important;border-top-color:var(--color--danger)!important}._border-right-color\:danger{border-right-color:#f2413d!important;border-right-color:var(--color--danger)!important}._border-bottom-color\:danger{border-bottom-color:#f2413d!important;border-bottom-color:var(--color--danger)!important}._border-left-color\:danger{border-left-color:#f2413d!important;border-left-color:var(--color--danger)!important}._border-radius{border-radius:.25rem!important;border-radius:var(--border-radius)!important}._border-top-radius{border-top-left-radius:.25rem!important;border-top-left-radius:var(--border-top-left-radius)!important;border-top-right-radius:.25rem!important;border-top-right-radius:var(--border-top-right-radius)!important}._border-right-radius{border-top-right-radius:.25rem!important;border-top-right-radius:var(--border-top-right-radius)!important;border-bottom-right-radius:.25rem!important;border-bottom-right-radius:var(--border-bottom-right-radius)!important}._border-bottom-radius{border-bottom-right-radius:.25rem!important;border-bottom-right-radius:var(--border-bottom-right-radius)!important;border-bottom-left-radius:.25rem!important;border-bottom-left-radius:var(--border-bottom-left-radius)!important}._border-left-radius{border-top-left-radius:.25rem!important;border-top-left-radius:var(--border-top-left-radius)!important;border-bottom-left-radius:.25rem!important;border-bottom-left-radius:var(--border-bottom-left-radius)!important}._border-top-left-radius{border-top-left-radius:.25rem!important;border-top-left-radius:var(--border-top-left-radius)!important}._border-top-right-radius{border-top-right-radius:.25rem!important;border-top-right-radius:var(--border-top-right-radius)!important}._border-bottom-right-radius{border-bottom-right-radius:.25rem!important;border-bottom-right-radius:var(--border-bottom-right-radius)!important}._border-bottom-left-radius{border-bottom-left-radius:.25rem!important;border-bottom-left-radius:var(--border-bottom-left-radius)!important}._border-radius\:circle{border-radius:50%!important}._border-radius\:0{border-radius:0!important}._clearfix:after{content:"";display:table;clear:both}._background\:primary{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#178bb2!important;background-color:var(--color--primary)!important}._background\:secondary{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8268ae!important;background-color:var(--color--secondary)!important}._background\:info{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#48b4a9!important;background-color:var(--color--info)!important}._background\:warning{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffda77!important;background-color:var(--color--warning)!important}._background\:danger{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f2413d!important;background-color:var(--color--danger)!important}._background\:success{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2fb079!important;background-color:var(--color--success)!important}._background\:red{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f2413d!important;background-color:var(--color--red)!important}._background\:orange{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f98e5a!important;background-color:var(--color--orange)!important}._background\:yellow{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffda77!important;background-color:var(--color--yellow)!important}._background\:green{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2fb079!important;background-color:var(--color--green)!important}._background\:teal{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#48b4a9!important;background-color:var(--color--teal)!important}._background\:blue{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#178bb2!important;background-color:var(--color--blue)!important}._background\:purple{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8268ae!important;background-color:var(--color--purple)!important}._background\:pink{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fc778a!important;background-color:var(--color--pink)!important}._background\:transparent{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#000!important;background-color:var(--color--transparent)!important}._background\:white{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff!important;background-color:var(--color--white)!important}._background\:black{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#000!important;background-color:var(--color--black)!important}._background\:gray{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8e9fa4!important;background-color:var(--color--gray)!important}._background\:light{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#dde2e4!important;background-color:var(--color--light)!important}._background\:dark{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3b3f40!important;background-color:var(--color--dark)!important}._background\:facebook{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3b5998!important;background-color:var(--color--facebook)!important}._background\:twitter{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1da1f2!important;background-color:var(--color--twitter)!important}._background\:google{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#dd4b39!important;background-color:var(--color--google)!important}._background\:github{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#333!important;background-color:var(--color--github)!important}._background\:instagram{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fd1d1d!important;background-color:var(--color--instagram)!important}._background\:dribbble{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ea4c89!important;background-color:var(--color--dribbble)!important}._background\:behance{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1769ff!important;background-color:var(--color--behance)!important}._background\:flickr{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ff0084!important;background-color:var(--color--flickr)!important}._background\:linkedin{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0077b5!important;background-color:var(--color--linkedin)!important}._background\:youtube{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#b31217!important;background-color:var(--color--youtube)!important}._background\:pinterest{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#bd081c!important;background-color:var(--color--pinterest)!important}._background\:gitlab{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fa7035!important;background-color:var(--color--gitlab)!important}._background\:tumblr{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#35465c!important;background-color:var(--color--tumblr)!important}._background\:twitch{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#6441a5!important;background-color:var(--color--twitch)!important}._background\:envato{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#82b541!important;background-color:var(--color--envato)!important}._background\:vine{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#00bf8f!important;background-color:var(--color--vine)!important}._background\:primary-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e4f6fb!important;background-color:var(--color--primary-05)!important}._background\:primary-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c9ecf8!important;background-color:var(--color--primary-10)!important}._background\:primary-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#aee3f4!important;background-color:var(--color--primary-15)!important}._background\:primary-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#93d9f1!important;background-color:var(--color--primary-20)!important}._background\:primary-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#78d0ed!important;background-color:var(--color--primary-25)!important}._background\:primary-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#5dc7ea!important;background-color:var(--color--primary-30)!important}._background\:primary-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#41bde6!important;background-color:var(--color--primary-35)!important}._background\:primary-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#26b4e3!important;background-color:var(--color--primary-40)!important}._background\:primary-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1a9fcb!important;background-color:var(--color--primary-45)!important}._background\:primary-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#178ab0!important;background-color:var(--color--primary-50)!important}._background\:primary-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#157c9e!important;background-color:var(--color--primary-55)!important}._background\:primary-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#137190!important;background-color:var(--color--primary-60)!important}._background\:primary-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#10637e!important;background-color:var(--color--primary-65)!important}._background\:primary-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0e556c!important;background-color:var(--color--primary-70)!important}._background\:primary-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0c475a!important;background-color:var(--color--primary-75)!important}._background\:primary-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#093948!important;background-color:var(--color--primary-80)!important}._background\:primary-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#072a36!important;background-color:var(--color--primary-85)!important}._background\:primary-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#051c24!important;background-color:var(--color--primary-90)!important}._background\:primary-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#020e12!important;background-color:var(--color--primary-95)!important}._background\:secondary-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f1eef6!important;background-color:var(--color--secondary-05)!important}._background\:secondary-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e6e1ef!important;background-color:var(--color--secondary-10)!important}._background\:secondary-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#d8d1e6!important;background-color:var(--color--secondary-15)!important}._background\:secondary-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#cdc3df!important;background-color:var(--color--secondary-20)!important}._background\:secondary-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c0b3d6!important;background-color:var(--color--secondary-25)!important}._background\:secondary-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#b5a5cf!important;background-color:var(--color--secondary-30)!important}._background\:secondary-35{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#a795c6!important;background-color:var(--color--secondary-35)!important}._background\:secondary-40{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#9c88bf!important;background-color:var(--color--secondary-40)!important}._background\:secondary-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8e77b6!important;background-color:var(--color--secondary-45)!important}._background\:secondary-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#836aaf!important;background-color:var(--color--secondary-50)!important}._background\:secondary-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#7357a2!important;background-color:var(--color--secondary-55)!important}._background\:secondary-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#674f92!important;background-color:var(--color--secondary-60)!important}._background\:secondary-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#59447e!important;background-color:var(--color--secondary-65)!important}._background\:secondary-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4d3b6d!important;background-color:var(--color--secondary-70)!important}._background\:secondary-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3f305a!important;background-color:var(--color--secondary-75)!important}._background\:secondary-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#342749!important;background-color:var(--color--secondary-80)!important}._background\:secondary-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#261d35!important;background-color:var(--color--secondary-85)!important}._background\:secondary-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1a1424!important;background-color:var(--color--secondary-90)!important}._background\:secondary-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0c0911!important;background-color:var(--color--secondary-95)!important}._background\:info-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#edf8f7!important;background-color:var(--color--info-05)!important}._background\:info-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#dbf0ee!important;background-color:var(--color--info-10)!important}._background\:info-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c8e9e6!important;background-color:var(--color--info-15)!important}._background\:info-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#b6e2de!important;background-color:var(--color--info-20)!important}._background\:info-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#a4dbd5!important;background-color:var(--color--info-25)!important}._background\:info-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#92d3cd!important;background-color:var(--color--info-30)!important}._background\:info-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#7fccc4!important;background-color:var(--color--info-35)!important}._background\:info-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#6dc5bc!important;background-color:var(--color--info-40)!important}._background\:info-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#57bcb2!important;background-color:var(--color--info-45)!important}._background\:info-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#47b3a8!important;background-color:var(--color--info-50)!important}._background\:info-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#40a097!important;background-color:var(--color--info-55)!important}._background\:info-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3a9289!important;background-color:var(--color--info-60)!important}._background\:info-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#338078!important;background-color:var(--color--info-65)!important}._background\:info-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2c6d67!important;background-color:var(--color--info-70)!important}._background\:info-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#245b56!important;background-color:var(--color--info-75)!important}._background\:info-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1d4945!important;background-color:var(--color--info-80)!important}._background\:info-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#163733!important;background-color:var(--color--info-85)!important}._background\:info-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0f2422!important;background-color:var(--color--info-90)!important}._background\:info-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#071211!important;background-color:var(--color--info-95)!important}._background\:warning-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fffbf0!important;background-color:var(--color--warning-05)!important}._background\:warning-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff8e5!important;background-color:var(--color--warning-10)!important}._background\:warning-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff4d6!important;background-color:var(--color--warning-15)!important}._background\:warning-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff0c7!important;background-color:var(--color--warning-20)!important}._background\:warning-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffedbd!important;background-color:var(--color--warning-25)!important}._background\:warning-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe9ad!important;background-color:var(--color--warning-30)!important}._background\:warning-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe59e!important;background-color:var(--color--warning-35)!important}._background\:warning-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe294!important;background-color:var(--color--warning-40)!important}._background\:warning-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffde85!important;background-color:var(--color--warning-45)!important}._background\:warning-50{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffda75!important;background-color:var(--color--warning-50)!important}._background\:warning-55{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffd152!important;background-color:var(--color--warning-55)!important}._background\:warning-60{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffc72e!important;background-color:var(--color--warning-60)!important}._background\:warning-65{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffbc05!important;background-color:var(--color--warning-65)!important}._background\:warning-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#e0a500!important;background-color:var(--color--warning-70)!important}._background\:warning-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#bd8a00!important;background-color:var(--color--warning-75)!important}._background\:warning-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#946c00!important;background-color:var(--color--warning-80)!important}._background\:warning-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#705200!important;background-color:var(--color--warning-85)!important}._background\:warning-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4d3800!important;background-color:var(--color--warning-90)!important}._background\:warning-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#241a00!important;background-color:var(--color--warning-95)!important}._background\:danger-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#feecec!important;background-color:var(--color--danger-05)!important}._background\:danger-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fcd9d9!important;background-color:var(--color--danger-10)!important}._background\:danger-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fbc7c6!important;background-color:var(--color--danger-15)!important}._background\:danger-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fab4b3!important;background-color:var(--color--danger-20)!important}._background\:danger-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f8a1a0!important;background-color:var(--color--danger-25)!important}._background\:danger-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f78e8d!important;background-color:var(--color--danger-30)!important}._background\:danger-35{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f67c79!important;background-color:var(--color--danger-35)!important}._background\:danger-40{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f46966!important;background-color:var(--color--danger-40)!important}._background\:danger-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f3514f!important;background-color:var(--color--danger-45)!important}._background\:danger-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f13f3b!important;background-color:var(--color--danger-50)!important}._background\:danger-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ef221f!important;background-color:var(--color--danger-55)!important}._background\:danger-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#e51310!important;background-color:var(--color--danger-60)!important}._background\:danger-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#c8110e!important;background-color:var(--color--danger-65)!important}._background\:danger-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ac0f0c!important;background-color:var(--color--danger-70)!important}._background\:danger-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8f0c0a!important;background-color:var(--color--danger-75)!important}._background\:danger-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#720a08!important;background-color:var(--color--danger-80)!important}._background\:danger-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#560706!important;background-color:var(--color--danger-85)!important}._background\:danger-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#390504!important;background-color:var(--color--danger-90)!important}._background\:danger-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1d0202!important;background-color:var(--color--danger-95)!important}._background\:success-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e7f9f1!important;background-color:var(--color--success-05)!important}._background\:success-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#d3f3e5!important;background-color:var(--color--success-10)!important}._background\:success-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#bbedd7!important;background-color:var(--color--success-15)!important}._background\:success-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#a2e6c9!important;background-color:var(--color--success-20)!important}._background\:success-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#8ee1bd!important;background-color:var(--color--success-25)!important}._background\:success-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#76dbaf!important;background-color:var(--color--success-30)!important}._background\:success-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#62d5a3!important;background-color:var(--color--success-35)!important}._background\:success-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#4acf95!important;background-color:var(--color--success-40)!important}._background\:success-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#34c587!important;background-color:var(--color--success-45)!important}._background\:success-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2fb179!important;background-color:var(--color--success-50)!important}._background\:success-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2a9d6b!important;background-color:var(--color--success-55)!important}._background\:success-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#258d60!important;background-color:var(--color--success-60)!important}._background\:success-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#217d55!important;background-color:var(--color--success-65)!important}._background\:success-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1c6947!important;background-color:var(--color--success-70)!important}._background\:success-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#18593c!important;background-color:var(--color--success-75)!important}._background\:success-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#12442f!important;background-color:var(--color--success-80)!important}._background\:success-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0e3424!important;background-color:var(--color--success-85)!important}._background\:success-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0a2419!important;background-color:var(--color--success-90)!important}._background\:success-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#04100b!important;background-color:var(--color--success-95)!important}._background\:red-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#feecec!important;background-color:var(--color--red-05)!important}._background\:red-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fcd9d9!important;background-color:var(--color--red-10)!important}._background\:red-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fbc7c6!important;background-color:var(--color--red-15)!important}._background\:red-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fab4b3!important;background-color:var(--color--red-20)!important}._background\:red-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f8a1a0!important;background-color:var(--color--red-25)!important}._background\:red-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f78e8d!important;background-color:var(--color--red-30)!important}._background\:red-35{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f67c79!important;background-color:var(--color--red-35)!important}._background\:red-40{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f46966!important;background-color:var(--color--red-40)!important}._background\:red-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f3514f!important;background-color:var(--color--red-45)!important}._background\:red-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f13f3b!important;background-color:var(--color--red-50)!important}._background\:red-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ef221f!important;background-color:var(--color--red-55)!important}._background\:red-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#e51310!important;background-color:var(--color--red-60)!important}._background\:red-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#c8110e!important;background-color:var(--color--red-65)!important}._background\:red-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#ac0f0c!important;background-color:var(--color--red-70)!important}._background\:red-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8f0c0a!important;background-color:var(--color--red-75)!important}._background\:red-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#720a08!important;background-color:var(--color--red-80)!important}._background\:red-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#560706!important;background-color:var(--color--red-85)!important}._background\:red-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#390504!important;background-color:var(--color--red-90)!important}._background\:red-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1d0202!important;background-color:var(--color--red-95)!important}._background\:orange-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fef5f0!important;background-color:var(--color--orange-05)!important}._background\:orange-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fee8dd!important;background-color:var(--color--orange-10)!important}._background\:orange-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fddece!important;background-color:var(--color--orange-15)!important}._background\:orange-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fdd4bf!important;background-color:var(--color--orange-20)!important}._background\:orange-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fcc6ab!important;background-color:var(--color--orange-25)!important}._background\:orange-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fbbc9d!important;background-color:var(--color--orange-30)!important}._background\:orange-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fbb28e!important;background-color:var(--color--orange-35)!important}._background\:orange-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#faa57a!important;background-color:var(--color--orange-40)!important}._background\:orange-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fa9b6b!important;background-color:var(--color--orange-45)!important}._background\:orange-50{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f98d58!important;background-color:var(--color--orange-50)!important}._background\:orange-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f8793a!important;background-color:var(--color--orange-55)!important}._background\:orange-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#f76218!important;background-color:var(--color--orange-60)!important}._background\:orange-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#e75308!important;background-color:var(--color--orange-65)!important}._background\:orange-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#c54607!important;background-color:var(--color--orange-70)!important}._background\:orange-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#a23a06!important;background-color:var(--color--orange-75)!important}._background\:orange-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#853005!important;background-color:var(--color--orange-80)!important}._background\:orange-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#622304!important;background-color:var(--color--orange-85)!important}._background\:orange-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#401702!important;background-color:var(--color--orange-90)!important}._background\:orange-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#220c01!important;background-color:var(--color--orange-95)!important}._background\:yellow-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fffbf0!important;background-color:var(--color--yellow-05)!important}._background\:yellow-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff8e5!important;background-color:var(--color--yellow-10)!important}._background\:yellow-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff4d6!important;background-color:var(--color--yellow-15)!important}._background\:yellow-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff0c7!important;background-color:var(--color--yellow-20)!important}._background\:yellow-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffedbd!important;background-color:var(--color--yellow-25)!important}._background\:yellow-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe9ad!important;background-color:var(--color--yellow-30)!important}._background\:yellow-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe59e!important;background-color:var(--color--yellow-35)!important}._background\:yellow-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffe294!important;background-color:var(--color--yellow-40)!important}._background\:yellow-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffde85!important;background-color:var(--color--yellow-45)!important}._background\:yellow-50{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffda75!important;background-color:var(--color--yellow-50)!important}._background\:yellow-55{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffd152!important;background-color:var(--color--yellow-55)!important}._background\:yellow-60{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffc72e!important;background-color:var(--color--yellow-60)!important}._background\:yellow-65{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ffbc05!important;background-color:var(--color--yellow-65)!important}._background\:yellow-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#e0a500!important;background-color:var(--color--yellow-70)!important}._background\:yellow-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#bd8a00!important;background-color:var(--color--yellow-75)!important}._background\:yellow-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#946c00!important;background-color:var(--color--yellow-80)!important}._background\:yellow-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#705200!important;background-color:var(--color--yellow-85)!important}._background\:yellow-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4d3800!important;background-color:var(--color--yellow-90)!important}._background\:yellow-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#241a00!important;background-color:var(--color--yellow-95)!important}._background\:green-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e7f9f1!important;background-color:var(--color--green-05)!important}._background\:green-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#d3f3e5!important;background-color:var(--color--green-10)!important}._background\:green-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#bbedd7!important;background-color:var(--color--green-15)!important}._background\:green-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#a2e6c9!important;background-color:var(--color--green-20)!important}._background\:green-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#8ee1bd!important;background-color:var(--color--green-25)!important}._background\:green-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#76dbaf!important;background-color:var(--color--green-30)!important}._background\:green-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#62d5a3!important;background-color:var(--color--green-35)!important}._background\:green-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#4acf95!important;background-color:var(--color--green-40)!important}._background\:green-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#34c587!important;background-color:var(--color--green-45)!important}._background\:green-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2fb179!important;background-color:var(--color--green-50)!important}._background\:green-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2a9d6b!important;background-color:var(--color--green-55)!important}._background\:green-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#258d60!important;background-color:var(--color--green-60)!important}._background\:green-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#217d55!important;background-color:var(--color--green-65)!important}._background\:green-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1c6947!important;background-color:var(--color--green-70)!important}._background\:green-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#18593c!important;background-color:var(--color--green-75)!important}._background\:green-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#12442f!important;background-color:var(--color--green-80)!important}._background\:green-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0e3424!important;background-color:var(--color--green-85)!important}._background\:green-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0a2419!important;background-color:var(--color--green-90)!important}._background\:green-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#04100b!important;background-color:var(--color--green-95)!important}._background\:teal-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#edf8f7!important;background-color:var(--color--teal-05)!important}._background\:teal-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#dbf0ee!important;background-color:var(--color--teal-10)!important}._background\:teal-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c8e9e6!important;background-color:var(--color--teal-15)!important}._background\:teal-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#b6e2de!important;background-color:var(--color--teal-20)!important}._background\:teal-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#a4dbd5!important;background-color:var(--color--teal-25)!important}._background\:teal-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#92d3cd!important;background-color:var(--color--teal-30)!important}._background\:teal-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#7fccc4!important;background-color:var(--color--teal-35)!important}._background\:teal-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#6dc5bc!important;background-color:var(--color--teal-40)!important}._background\:teal-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#57bcb2!important;background-color:var(--color--teal-45)!important}._background\:teal-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#47b3a8!important;background-color:var(--color--teal-50)!important}._background\:teal-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#40a097!important;background-color:var(--color--teal-55)!important}._background\:teal-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3a9289!important;background-color:var(--color--teal-60)!important}._background\:teal-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#338078!important;background-color:var(--color--teal-65)!important}._background\:teal-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2c6d67!important;background-color:var(--color--teal-70)!important}._background\:teal-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#245b56!important;background-color:var(--color--teal-75)!important}._background\:teal-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1d4945!important;background-color:var(--color--teal-80)!important}._background\:teal-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#163733!important;background-color:var(--color--teal-85)!important}._background\:teal-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0f2422!important;background-color:var(--color--teal-90)!important}._background\:teal-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#071211!important;background-color:var(--color--teal-95)!important}._background\:blue-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e4f6fb!important;background-color:var(--color--blue-05)!important}._background\:blue-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c9ecf8!important;background-color:var(--color--blue-10)!important}._background\:blue-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#aee3f4!important;background-color:var(--color--blue-15)!important}._background\:blue-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#93d9f1!important;background-color:var(--color--blue-20)!important}._background\:blue-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#78d0ed!important;background-color:var(--color--blue-25)!important}._background\:blue-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#5dc7ea!important;background-color:var(--color--blue-30)!important}._background\:blue-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#41bde6!important;background-color:var(--color--blue-35)!important}._background\:blue-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#26b4e3!important;background-color:var(--color--blue-40)!important}._background\:blue-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1a9fcb!important;background-color:var(--color--blue-45)!important}._background\:blue-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#178ab0!important;background-color:var(--color--blue-50)!important}._background\:blue-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#157c9e!important;background-color:var(--color--blue-55)!important}._background\:blue-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#137190!important;background-color:var(--color--blue-60)!important}._background\:blue-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#10637e!important;background-color:var(--color--blue-65)!important}._background\:blue-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0e556c!important;background-color:var(--color--blue-70)!important}._background\:blue-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0c475a!important;background-color:var(--color--blue-75)!important}._background\:blue-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#093948!important;background-color:var(--color--blue-80)!important}._background\:blue-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#072a36!important;background-color:var(--color--blue-85)!important}._background\:blue-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#051c24!important;background-color:var(--color--blue-90)!important}._background\:blue-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#020e12!important;background-color:var(--color--blue-95)!important}._background\:purple-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f1eef6!important;background-color:var(--color--purple-05)!important}._background\:purple-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e6e1ef!important;background-color:var(--color--purple-10)!important}._background\:purple-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#d8d1e6!important;background-color:var(--color--purple-15)!important}._background\:purple-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#cdc3df!important;background-color:var(--color--purple-20)!important}._background\:purple-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c0b3d6!important;background-color:var(--color--purple-25)!important}._background\:purple-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#b5a5cf!important;background-color:var(--color--purple-30)!important}._background\:purple-35{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#a795c6!important;background-color:var(--color--purple-35)!important}._background\:purple-40{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#9c88bf!important;background-color:var(--color--purple-40)!important}._background\:purple-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8e77b6!important;background-color:var(--color--purple-45)!important}._background\:purple-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#836aaf!important;background-color:var(--color--purple-50)!important}._background\:purple-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#7357a2!important;background-color:var(--color--purple-55)!important}._background\:purple-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#674f92!important;background-color:var(--color--purple-60)!important}._background\:purple-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#59447e!important;background-color:var(--color--purple-65)!important}._background\:purple-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4d3b6d!important;background-color:var(--color--purple-70)!important}._background\:purple-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3f305a!important;background-color:var(--color--purple-75)!important}._background\:purple-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#342749!important;background-color:var(--color--purple-80)!important}._background\:purple-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#261d35!important;background-color:var(--color--purple-85)!important}._background\:purple-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1a1424!important;background-color:var(--color--purple-90)!important}._background\:purple-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0c0911!important;background-color:var(--color--purple-95)!important}._background\:pink-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fff0f2!important;background-color:var(--color--pink-05)!important}._background\:pink-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fee6ea!important;background-color:var(--color--pink-10)!important}._background\:pink-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fed7dd!important;background-color:var(--color--pink-15)!important}._background\:pink-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fec8d0!important;background-color:var(--color--pink-20)!important}._background\:pink-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#feb9c3!important;background-color:var(--color--pink-25)!important}._background\:pink-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fdafbb!important;background-color:var(--color--pink-30)!important}._background\:pink-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fda0ae!important;background-color:var(--color--pink-35)!important}._background\:pink-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fd91a1!important;background-color:var(--color--pink-40)!important}._background\:pink-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#fc8294!important;background-color:var(--color--pink-45)!important}._background\:pink-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fc788c!important;background-color:var(--color--pink-50)!important}._background\:pink-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fb506a!important;background-color:var(--color--pink-55)!important}._background\:pink-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fb2d4c!important;background-color:var(--color--pink-60)!important}._background\:pink-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#fa0a2e!important;background-color:var(--color--pink-65)!important}._background\:pink-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#dc0425!important;background-color:var(--color--pink-70)!important}._background\:pink-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#b4041e!important;background-color:var(--color--pink-75)!important}._background\:pink-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#910318!important;background-color:var(--color--pink-80)!important}._background\:pink-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#6e0212!important;background-color:var(--color--pink-85)!important}._background\:pink-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4b020d!important;background-color:var(--color--pink-90)!important}._background\:pink-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#230106!important;background-color:var(--color--pink-95)!important}._background\:gray-05{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#f4f5f6!important;background-color:var(--color--gray-05)!important}._background\:gray-10{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e8eced!important;background-color:var(--color--gray-10)!important}._background\:gray-15{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#dde2e4!important;background-color:var(--color--gray-15)!important}._background\:gray-20{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#d2d9db!important;background-color:var(--color--gray-20)!important}._background\:gray-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c6cfd2!important;background-color:var(--color--gray-25)!important}._background\:gray-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#bbc5c9!important;background-color:var(--color--gray-30)!important}._background\:gray-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#b0bcbf!important;background-color:var(--color--gray-35)!important}._background\:gray-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#a4b2b6!important;background-color:var(--color--gray-40)!important}._background\:gray-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#99a9ad!important;background-color:var(--color--gray-45)!important}._background\:gray-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#8e9fa4!important;background-color:var(--color--gray-50)!important}._background\:gray-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#7d9197!important;background-color:var(--color--gray-55)!important}._background\:gray-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#6d8288!important;background-color:var(--color--gray-60)!important}._background\:gray-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#5f7177!important;background-color:var(--color--gray-65)!important}._background\:gray-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#526166!important;background-color:var(--color--gray-70)!important}._background\:gray-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#445155!important;background-color:var(--color--gray-75)!important}._background\:gray-80{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#364144!important;background-color:var(--color--gray-80)!important}._background\:gray-85{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#293133!important;background-color:var(--color--gray-85)!important}._background\:gray-90{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1b2022!important;background-color:var(--color--gray-90)!important}._background\:gray-95{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0e1011!important;background-color:var(--color--gray-95)!important}._background\:light-25{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#eef1f1!important;background-color:var(--color--light-25)!important}._background\:light-30{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#ebeeef!important;background-color:var(--color--light-30)!important}._background\:light-35{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e8eced!important;background-color:var(--color--light-35)!important}._background\:light-40{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e3e7e8!important;background-color:var(--color--light-40)!important}._background\:light-45{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#e0e5e6!important;background-color:var(--color--light-45)!important}._background\:light-50{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#dde2e4!important;background-color:var(--color--light-50)!important}._background\:light-55{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#c4cdcf!important;background-color:var(--color--light-55)!important}._background\:light-60{color:#1e1f1f;color:var(--contrast-color-for-light-background);background-color:#aab7bb!important;background-color:var(--color--light-60)!important}._background\:light-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#93a4a9!important;background-color:var(--color--light-65)!important}._background\:light-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#7a8e94!important;background-color:var(--color--light-70)!important}._background\:light-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#64777d!important;background-color:var(--color--light-75)!important}._background\:dark-25{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#9aa0a2!important;background-color:var(--color--dark-25)!important}._background\:dark-30{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#858c8e!important;background-color:var(--color--dark-30)!important}._background\:dark-35{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#737a7d!important;background-color:var(--color--dark-35)!important}._background\:dark-40{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#5f6667!important;background-color:var(--color--dark-40)!important}._background\:dark-45{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#4e5355!important;background-color:var(--color--dark-45)!important}._background\:dark-50{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#3b3f40!important;background-color:var(--color--dark-50)!important}._background\:dark-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#36393a!important;background-color:var(--color--dark-55)!important}._background\:dark-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2f3132!important;background-color:var(--color--dark-60)!important}._background\:dark-65{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2a2c2d!important;background-color:var(--color--dark-65)!important}._background\:dark-70{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#222425!important;background-color:var(--color--dark-70)!important}._background\:dark-75{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#1d1f20!important;background-color:var(--color--dark-75)!important}._background\:facebook-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#354f88!important;background-color:var(--color--facebook-55)!important}._background\:facebook-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2f4779!important;background-color:var(--color--facebook-60)!important}._background\:twitter-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0d94e7!important;background-color:var(--color--twitter-55)!important}._background\:twitter-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#0c84cf!important;background-color:var(--color--twitter-60)!important}._background\:google-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#d63924!important;background-color:var(--color--google-55)!important}._background\:google-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#c03321!important;background-color:var(--color--google-60)!important}._background\:github-55{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#2e2e2e!important;background-color:var(--color--github-55)!important}._background\:github-60{color:#fff;color:var(--contrast-color-for-dark-background);background-color:#292929!important;background-color:var(--color--github-60)!important}._color\:primary,._text\:primary{color:#178bb2!important;color:var(--color--primary)!important}._color\:secondary,._text\:secondary{color:#8268ae!important;color:var(--color--secondary)!important}._color\:info,._text\:info{color:#48b4a9!important;color:var(--color--info)!important}._color\:warning,._text\:warning{color:#ffda77!important;color:var(--color--warning)!important}._color\:danger,._text\:danger{color:#f2413d!important;color:var(--color--danger)!important}._color\:success,._text\:success{color:#2fb079!important;color:var(--color--success)!important}._color\:red,._text\:red{color:#f2413d!important;color:var(--color--red)!important}._color\:orange,._text\:orange{color:#f98e5a!important;color:var(--color--orange)!important}._color\:yellow,._text\:yellow{color:#ffda77!important;color:var(--color--yellow)!important}._color\:green,._text\:green{color:#2fb079!important;color:var(--color--green)!important}._color\:teal,._text\:teal{color:#48b4a9!important;color:var(--color--teal)!important}._color\:blue,._text\:blue{color:#178bb2!important;color:var(--color--blue)!important}._color\:purple,._text\:purple{color:#8268ae!important;color:var(--color--purple)!important}._color\:pink,._text\:pink{color:#fc778a!important;color:var(--color--pink)!important}._color\:transparent,._text\:transparent{color:#000!important;color:var(--color--transparent)!important}._color\:white,._text\:white{color:#fff!important;color:var(--color--white)!important}._color\:black,._text\:black{color:#000!important;color:var(--color--black)!important}._color\:gray,._text\:gray{color:#8e9fa4!important;color:var(--color--gray)!important}._color\:light,._text\:light{color:#dde2e4!important;color:var(--color--light)!important}._color\:dark,._text\:dark{color:#3b3f40!important;color:var(--color--dark)!important}._color\:facebook,._text\:facebook{color:#3b5998!important;color:var(--color--facebook)!important}._color\:twitter,._text\:twitter{color:#1da1f2!important;color:var(--color--twitter)!important}._color\:google,._text\:google{color:#dd4b39!important;color:var(--color--google)!important}._color\:github,._text\:github{color:#333!important;color:var(--color--github)!important}._color\:instagram,._text\:instagram{color:#fd1d1d!important;color:var(--color--instagram)!important}._color\:dribbble,._text\:dribbble{color:#ea4c89!important;color:var(--color--dribbble)!important}._color\:behance,._text\:behance{color:#1769ff!important;color:var(--color--behance)!important}._color\:flickr,._text\:flickr{color:#ff0084!important;color:var(--color--flickr)!important}._color\:linkedin,._text\:linkedin{color:#0077b5!important;color:var(--color--linkedin)!important}._color\:youtube,._text\:youtube{color:#b31217!important;color:var(--color--youtube)!important}._color\:pinterest,._text\:pinterest{color:#bd081c!important;color:var(--color--pinterest)!important}._color\:gitlab,._text\:gitlab{color:#fa7035!important;color:var(--color--gitlab)!important}._color\:tumblr,._text\:tumblr{color:#35465c!important;color:var(--color--tumblr)!important}._color\:twitch,._text\:twitch{color:#6441a5!important;color:var(--color--twitch)!important}._color\:envato,._text\:envato{color:#82b541!important;color:var(--color--envato)!important}._color\:vine,._text\:vine{color:#00bf8f!important;color:var(--color--vine)!important}._color\:primary-05,._text\:primary-05{color:#e4f6fb!important;color:var(--color--primary-05)!important}._color\:primary-10,._text\:primary-10{color:#c9ecf8!important;color:var(--color--primary-10)!important}._color\:primary-15,._text\:primary-15{color:#aee3f4!important;color:var(--color--primary-15)!important}._color\:primary-20,._text\:primary-20{color:#93d9f1!important;color:var(--color--primary-20)!important}._color\:primary-25,._text\:primary-25{color:#78d0ed!important;color:var(--color--primary-25)!important}._color\:primary-30,._text\:primary-30{color:#5dc7ea!important;color:var(--color--primary-30)!important}._color\:primary-35,._text\:primary-35{color:#41bde6!important;color:var(--color--primary-35)!important}._color\:primary-40,._text\:primary-40{color:#26b4e3!important;color:var(--color--primary-40)!important}._color\:primary-45,._text\:primary-45{color:#1a9fcb!important;color:var(--color--primary-45)!important}._color\:primary-50,._text\:primary-50{color:#178ab0!important;color:var(--color--primary-50)!important}._color\:primary-55,._text\:primary-55{color:#157c9e!important;color:var(--color--primary-55)!important}._color\:primary-60,._text\:primary-60{color:#137190!important;color:var(--color--primary-60)!important}._color\:primary-65,._text\:primary-65{color:#10637e!important;color:var(--color--primary-65)!important}._color\:primary-70,._text\:primary-70{color:#0e556c!important;color:var(--color--primary-70)!important}._color\:primary-75,._text\:primary-75{color:#0c475a!important;color:var(--color--primary-75)!important}._color\:primary-80,._text\:primary-80{color:#093948!important;color:var(--color--primary-80)!important}._color\:primary-85,._text\:primary-85{color:#072a36!important;color:var(--color--primary-85)!important}._color\:primary-90,._text\:primary-90{color:#051c24!important;color:var(--color--primary-90)!important}._color\:primary-95,._text\:primary-95{color:#020e12!important;color:var(--color--primary-95)!important}._color\:secondary-05,._text\:secondary-05{color:#f1eef6!important;color:var(--color--secondary-05)!important}._color\:secondary-10,._text\:secondary-10{color:#e6e1ef!important;color:var(--color--secondary-10)!important}._color\:secondary-15,._text\:secondary-15{color:#d8d1e6!important;color:var(--color--secondary-15)!important}._color\:secondary-20,._text\:secondary-20{color:#cdc3df!important;color:var(--color--secondary-20)!important}._color\:secondary-25,._text\:secondary-25{color:#c0b3d6!important;color:var(--color--secondary-25)!important}._color\:secondary-30,._text\:secondary-30{color:#b5a5cf!important;color:var(--color--secondary-30)!important}._color\:secondary-35,._text\:secondary-35{color:#a795c6!important;color:var(--color--secondary-35)!important}._color\:secondary-40,._text\:secondary-40{color:#9c88bf!important;color:var(--color--secondary-40)!important}._color\:secondary-45,._text\:secondary-45{color:#8e77b6!important;color:var(--color--secondary-45)!important}._color\:secondary-50,._text\:secondary-50{color:#836aaf!important;color:var(--color--secondary-50)!important}._color\:secondary-55,._text\:secondary-55{color:#7357a2!important;color:var(--color--secondary-55)!important}._color\:secondary-60,._text\:secondary-60{color:#674f92!important;color:var(--color--secondary-60)!important}._color\:secondary-65,._text\:secondary-65{color:#59447e!important;color:var(--color--secondary-65)!important}._color\:secondary-70,._text\:secondary-70{color:#4d3b6d!important;color:var(--color--secondary-70)!important}._color\:secondary-75,._text\:secondary-75{color:#3f305a!important;color:var(--color--secondary-75)!important}._color\:secondary-80,._text\:secondary-80{color:#342749!important;color:var(--color--secondary-80)!important}._color\:secondary-85,._text\:secondary-85{color:#261d35!important;color:var(--color--secondary-85)!important}._color\:secondary-90,._text\:secondary-90{color:#1a1424!important;color:var(--color--secondary-90)!important}._color\:secondary-95,._text\:secondary-95{color:#0c0911!important;color:var(--color--secondary-95)!important}._color\:info-05,._text\:info-05{color:#edf8f7!important;color:var(--color--info-05)!important}._color\:info-10,._text\:info-10{color:#dbf0ee!important;color:var(--color--info-10)!important}._color\:info-15,._text\:info-15{color:#c8e9e6!important;color:var(--color--info-15)!important}._color\:info-20,._text\:info-20{color:#b6e2de!important;color:var(--color--info-20)!important}._color\:info-25,._text\:info-25{color:#a4dbd5!important;color:var(--color--info-25)!important}._color\:info-30,._text\:info-30{color:#92d3cd!important;color:var(--color--info-30)!important}._color\:info-35,._text\:info-35{color:#7fccc4!important;color:var(--color--info-35)!important}._color\:info-40,._text\:info-40{color:#6dc5bc!important;color:var(--color--info-40)!important}._color\:info-45,._text\:info-45{color:#57bcb2!important;color:var(--color--info-45)!important}._color\:info-50,._text\:info-50{color:#47b3a8!important;color:var(--color--info-50)!important}._color\:info-55,._text\:info-55{color:#40a097!important;color:var(--color--info-55)!important}._color\:info-60,._text\:info-60{color:#3a9289!important;color:var(--color--info-60)!important}._color\:info-65,._text\:info-65{color:#338078!important;color:var(--color--info-65)!important}._color\:info-70,._text\:info-70{color:#2c6d67!important;color:var(--color--info-70)!important}._color\:info-75,._text\:info-75{color:#245b56!important;color:var(--color--info-75)!important}._color\:info-80,._text\:info-80{color:#1d4945!important;color:var(--color--info-80)!important}._color\:info-85,._text\:info-85{color:#163733!important;color:var(--color--info-85)!important}._color\:info-90,._text\:info-90{color:#0f2422!important;color:var(--color--info-90)!important}._color\:info-95,._text\:info-95{color:#071211!important;color:var(--color--info-95)!important}._color\:warning-05,._text\:warning-05{color:#fffbf0!important;color:var(--color--warning-05)!important}._color\:warning-10,._text\:warning-10{color:#fff8e5!important;color:var(--color--warning-10)!important}._color\:warning-15,._text\:warning-15{color:#fff4d6!important;color:var(--color--warning-15)!important}._color\:warning-20,._text\:warning-20{color:#fff0c7!important;color:var(--color--warning-20)!important}._color\:warning-25,._text\:warning-25{color:#ffedbd!important;color:var(--color--warning-25)!important}._color\:warning-30,._text\:warning-30{color:#ffe9ad!important;color:var(--color--warning-30)!important}._color\:warning-35,._text\:warning-35{color:#ffe59e!important;color:var(--color--warning-35)!important}._color\:warning-40,._text\:warning-40{color:#ffe294!important;color:var(--color--warning-40)!important}._color\:warning-45,._text\:warning-45{color:#ffde85!important;color:var(--color--warning-45)!important}._color\:warning-50,._text\:warning-50{color:#ffda75!important;color:var(--color--warning-50)!important}._color\:warning-55,._text\:warning-55{color:#ffd152!important;color:var(--color--warning-55)!important}._color\:warning-60,._text\:warning-60{color:#ffc72e!important;color:var(--color--warning-60)!important}._color\:warning-65,._text\:warning-65{color:#ffbc05!important;color:var(--color--warning-65)!important}._color\:warning-70,._text\:warning-70{color:#e0a500!important;color:var(--color--warning-70)!important}._color\:warning-75,._text\:warning-75{color:#bd8a00!important;color:var(--color--warning-75)!important}._color\:warning-80,._text\:warning-80{color:#946c00!important;color:var(--color--warning-80)!important}._color\:warning-85,._text\:warning-85{color:#705200!important;color:var(--color--warning-85)!important}._color\:warning-90,._text\:warning-90{color:#4d3800!important;color:var(--color--warning-90)!important}._color\:warning-95,._text\:warning-95{color:#241a00!important;color:var(--color--warning-95)!important}._color\:danger-05,._text\:danger-05{color:#feecec!important;color:var(--color--danger-05)!important}._color\:danger-10,._text\:danger-10{color:#fcd9d9!important;color:var(--color--danger-10)!important}._color\:danger-15,._text\:danger-15{color:#fbc7c6!important;color:var(--color--danger-15)!important}._color\:danger-20,._text\:danger-20{color:#fab4b3!important;color:var(--color--danger-20)!important}._color\:danger-25,._text\:danger-25{color:#f8a1a0!important;color:var(--color--danger-25)!important}._color\:danger-30,._text\:danger-30{color:#f78e8d!important;color:var(--color--danger-30)!important}._color\:danger-35,._text\:danger-35{color:#f67c79!important;color:var(--color--danger-35)!important}._color\:danger-40,._text\:danger-40{color:#f46966!important;color:var(--color--danger-40)!important}._color\:danger-45,._text\:danger-45{color:#f3514f!important;color:var(--color--danger-45)!important}._color\:danger-50,._text\:danger-50{color:#f13f3b!important;color:var(--color--danger-50)!important}._color\:danger-55,._text\:danger-55{color:#ef221f!important;color:var(--color--danger-55)!important}._color\:danger-60,._text\:danger-60{color:#e51310!important;color:var(--color--danger-60)!important}._color\:danger-65,._text\:danger-65{color:#c8110e!important;color:var(--color--danger-65)!important}._color\:danger-70,._text\:danger-70{color:#ac0f0c!important;color:var(--color--danger-70)!important}._color\:danger-75,._text\:danger-75{color:#8f0c0a!important;color:var(--color--danger-75)!important}._color\:danger-80,._text\:danger-80{color:#720a08!important;color:var(--color--danger-80)!important}._color\:danger-85,._text\:danger-85{color:#560706!important;color:var(--color--danger-85)!important}._color\:danger-90,._text\:danger-90{color:#390504!important;color:var(--color--danger-90)!important}._color\:danger-95,._text\:danger-95{color:#1d0202!important;color:var(--color--danger-95)!important}._color\:success-05,._text\:success-05{color:#e7f9f1!important;color:var(--color--success-05)!important}._color\:success-10,._text\:success-10{color:#d3f3e5!important;color:var(--color--success-10)!important}._color\:success-15,._text\:success-15{color:#bbedd7!important;color:var(--color--success-15)!important}._color\:success-20,._text\:success-20{color:#a2e6c9!important;color:var(--color--success-20)!important}._color\:success-25,._text\:success-25{color:#8ee1bd!important;color:var(--color--success-25)!important}._color\:success-30,._text\:success-30{color:#76dbaf!important;color:var(--color--success-30)!important}._color\:success-35,._text\:success-35{color:#62d5a3!important;color:var(--color--success-35)!important}._color\:success-40,._text\:success-40{color:#4acf95!important;color:var(--color--success-40)!important}._color\:success-45,._text\:success-45{color:#34c587!important;color:var(--color--success-45)!important}._color\:success-50,._text\:success-50{color:#2fb179!important;color:var(--color--success-50)!important}._color\:success-55,._text\:success-55{color:#2a9d6b!important;color:var(--color--success-55)!important}._color\:success-60,._text\:success-60{color:#258d60!important;color:var(--color--success-60)!important}._color\:success-65,._text\:success-65{color:#217d55!important;color:var(--color--success-65)!important}._color\:success-70,._text\:success-70{color:#1c6947!important;color:var(--color--success-70)!important}._color\:success-75,._text\:success-75{color:#18593c!important;color:var(--color--success-75)!important}._color\:success-80,._text\:success-80{color:#12442f!important;color:var(--color--success-80)!important}._color\:success-85,._text\:success-85{color:#0e3424!important;color:var(--color--success-85)!important}._color\:success-90,._text\:success-90{color:#0a2419!important;color:var(--color--success-90)!important}._color\:success-95,._text\:success-95{color:#04100b!important;color:var(--color--success-95)!important}._color\:red-05,._text\:red-05{color:#feecec!important;color:var(--color--red-05)!important}._color\:red-10,._text\:red-10{color:#fcd9d9!important;color:var(--color--red-10)!important}._color\:red-15,._text\:red-15{color:#fbc7c6!important;color:var(--color--red-15)!important}._color\:red-20,._text\:red-20{color:#fab4b3!important;color:var(--color--red-20)!important}._color\:red-25,._text\:red-25{color:#f8a1a0!important;color:var(--color--red-25)!important}._color\:red-30,._text\:red-30{color:#f78e8d!important;color:var(--color--red-30)!important}._color\:red-35,._text\:red-35{color:#f67c79!important;color:var(--color--red-35)!important}._color\:red-40,._text\:red-40{color:#f46966!important;color:var(--color--red-40)!important}._color\:red-45,._text\:red-45{color:#f3514f!important;color:var(--color--red-45)!important}._color\:red-50,._text\:red-50{color:#f13f3b!important;color:var(--color--red-50)!important}._color\:red-55,._text\:red-55{color:#ef221f!important;color:var(--color--red-55)!important}._color\:red-60,._text\:red-60{color:#e51310!important;color:var(--color--red-60)!important}._color\:red-65,._text\:red-65{color:#c8110e!important;color:var(--color--red-65)!important}._color\:red-70,._text\:red-70{color:#ac0f0c!important;color:var(--color--red-70)!important}._color\:red-75,._text\:red-75{color:#8f0c0a!important;color:var(--color--red-75)!important}._color\:red-80,._text\:red-80{color:#720a08!important;color:var(--color--red-80)!important}._color\:red-85,._text\:red-85{color:#560706!important;color:var(--color--red-85)!important}._color\:red-90,._text\:red-90{color:#390504!important;color:var(--color--red-90)!important}._color\:red-95,._text\:red-95{color:#1d0202!important;color:var(--color--red-95)!important}._color\:orange-05,._text\:orange-05{color:#fef5f0!important;color:var(--color--orange-05)!important}._color\:orange-10,._text\:orange-10{color:#fee8dd!important;color:var(--color--orange-10)!important}._color\:orange-15,._text\:orange-15{color:#fddece!important;color:var(--color--orange-15)!important}._color\:orange-20,._text\:orange-20{color:#fdd4bf!important;color:var(--color--orange-20)!important}._color\:orange-25,._text\:orange-25{color:#fcc6ab!important;color:var(--color--orange-25)!important}._color\:orange-30,._text\:orange-30{color:#fbbc9d!important;color:var(--color--orange-30)!important}._color\:orange-35,._text\:orange-35{color:#fbb28e!important;color:var(--color--orange-35)!important}._color\:orange-40,._text\:orange-40{color:#faa57a!important;color:var(--color--orange-40)!important}._color\:orange-45,._text\:orange-45{color:#fa9b6b!important;color:var(--color--orange-45)!important}._color\:orange-50,._text\:orange-50{color:#f98d58!important;color:var(--color--orange-50)!important}._color\:orange-55,._text\:orange-55{color:#f8793a!important;color:var(--color--orange-55)!important}._color\:orange-60,._text\:orange-60{color:#f76218!important;color:var(--color--orange-60)!important}._color\:orange-65,._text\:orange-65{color:#e75308!important;color:var(--color--orange-65)!important}._color\:orange-70,._text\:orange-70{color:#c54607!important;color:var(--color--orange-70)!important}._color\:orange-75,._text\:orange-75{color:#a23a06!important;color:var(--color--orange-75)!important}._color\:orange-80,._text\:orange-80{color:#853005!important;color:var(--color--orange-80)!important}._color\:orange-85,._text\:orange-85{color:#622304!important;color:var(--color--orange-85)!important}._color\:orange-90,._text\:orange-90{color:#401702!important;color:var(--color--orange-90)!important}._color\:orange-95,._text\:orange-95{color:#220c01!important;color:var(--color--orange-95)!important}._color\:yellow-05,._text\:yellow-05{color:#fffbf0!important;color:var(--color--yellow-05)!important}._color\:yellow-10,._text\:yellow-10{color:#fff8e5!important;color:var(--color--yellow-10)!important}._color\:yellow-15,._text\:yellow-15{color:#fff4d6!important;color:var(--color--yellow-15)!important}._color\:yellow-20,._text\:yellow-20{color:#fff0c7!important;color:var(--color--yellow-20)!important}._color\:yellow-25,._text\:yellow-25{color:#ffedbd!important;color:var(--color--yellow-25)!important}._color\:yellow-30,._text\:yellow-30{color:#ffe9ad!important;color:var(--color--yellow-30)!important}._color\:yellow-35,._text\:yellow-35{color:#ffe59e!important;color:var(--color--yellow-35)!important}._color\:yellow-40,._text\:yellow-40{color:#ffe294!important;color:var(--color--yellow-40)!important}._color\:yellow-45,._text\:yellow-45{color:#ffde85!important;color:var(--color--yellow-45)!important}._color\:yellow-50,._text\:yellow-50{color:#ffda75!important;color:var(--color--yellow-50)!important}._color\:yellow-55,._text\:yellow-55{color:#ffd152!important;color:var(--color--yellow-55)!important}._color\:yellow-60,._text\:yellow-60{color:#ffc72e!important;color:var(--color--yellow-60)!important}._color\:yellow-65,._text\:yellow-65{color:#ffbc05!important;color:var(--color--yellow-65)!important}._color\:yellow-70,._text\:yellow-70{color:#e0a500!important;color:var(--color--yellow-70)!important}._color\:yellow-75,._text\:yellow-75{color:#bd8a00!important;color:var(--color--yellow-75)!important}._color\:yellow-80,._text\:yellow-80{color:#946c00!important;color:var(--color--yellow-80)!important}._color\:yellow-85,._text\:yellow-85{color:#705200!important;color:var(--color--yellow-85)!important}._color\:yellow-90,._text\:yellow-90{color:#4d3800!important;color:var(--color--yellow-90)!important}._color\:yellow-95,._text\:yellow-95{color:#241a00!important;color:var(--color--yellow-95)!important}._color\:green-05,._text\:green-05{color:#e7f9f1!important;color:var(--color--green-05)!important}._color\:green-10,._text\:green-10{color:#d3f3e5!important;color:var(--color--green-10)!important}._color\:green-15,._text\:green-15{color:#bbedd7!important;color:var(--color--green-15)!important}._color\:green-20,._text\:green-20{color:#a2e6c9!important;color:var(--color--green-20)!important}._color\:green-25,._text\:green-25{color:#8ee1bd!important;color:var(--color--green-25)!important}._color\:green-30,._text\:green-30{color:#76dbaf!important;color:var(--color--green-30)!important}._color\:green-35,._text\:green-35{color:#62d5a3!important;color:var(--color--green-35)!important}._color\:green-40,._text\:green-40{color:#4acf95!important;color:var(--color--green-40)!important}._color\:green-45,._text\:green-45{color:#34c587!important;color:var(--color--green-45)!important}._color\:green-50,._text\:green-50{color:#2fb179!important;color:var(--color--green-50)!important}._color\:green-55,._text\:green-55{color:#2a9d6b!important;color:var(--color--green-55)!important}._color\:green-60,._text\:green-60{color:#258d60!important;color:var(--color--green-60)!important}._color\:green-65,._text\:green-65{color:#217d55!important;color:var(--color--green-65)!important}._color\:green-70,._text\:green-70{color:#1c6947!important;color:var(--color--green-70)!important}._color\:green-75,._text\:green-75{color:#18593c!important;color:var(--color--green-75)!important}._color\:green-80,._text\:green-80{color:#12442f!important;color:var(--color--green-80)!important}._color\:green-85,._text\:green-85{color:#0e3424!important;color:var(--color--green-85)!important}._color\:green-90,._text\:green-90{color:#0a2419!important;color:var(--color--green-90)!important}._color\:green-95,._text\:green-95{color:#04100b!important;color:var(--color--green-95)!important}._color\:teal-05,._text\:teal-05{color:#edf8f7!important;color:var(--color--teal-05)!important}._color\:teal-10,._text\:teal-10{color:#dbf0ee!important;color:var(--color--teal-10)!important}._color\:teal-15,._text\:teal-15{color:#c8e9e6!important;color:var(--color--teal-15)!important}._color\:teal-20,._text\:teal-20{color:#b6e2de!important;color:var(--color--teal-20)!important}._color\:teal-25,._text\:teal-25{color:#a4dbd5!important;color:var(--color--teal-25)!important}._color\:teal-30,._text\:teal-30{color:#92d3cd!important;color:var(--color--teal-30)!important}._color\:teal-35,._text\:teal-35{color:#7fccc4!important;color:var(--color--teal-35)!important}._color\:teal-40,._text\:teal-40{color:#6dc5bc!important;color:var(--color--teal-40)!important}._color\:teal-45,._text\:teal-45{color:#57bcb2!important;color:var(--color--teal-45)!important}._color\:teal-50,._text\:teal-50{color:#47b3a8!important;color:var(--color--teal-50)!important}._color\:teal-55,._text\:teal-55{color:#40a097!important;color:var(--color--teal-55)!important}._color\:teal-60,._text\:teal-60{color:#3a9289!important;color:var(--color--teal-60)!important}._color\:teal-65,._text\:teal-65{color:#338078!important;color:var(--color--teal-65)!important}._color\:teal-70,._text\:teal-70{color:#2c6d67!important;color:var(--color--teal-70)!important}._color\:teal-75,._text\:teal-75{color:#245b56!important;color:var(--color--teal-75)!important}._color\:teal-80,._text\:teal-80{color:#1d4945!important;color:var(--color--teal-80)!important}._color\:teal-85,._text\:teal-85{color:#163733!important;color:var(--color--teal-85)!important}._color\:teal-90,._text\:teal-90{color:#0f2422!important;color:var(--color--teal-90)!important}._color\:teal-95,._text\:teal-95{color:#071211!important;color:var(--color--teal-95)!important}._color\:blue-05,._text\:blue-05{color:#e4f6fb!important;color:var(--color--blue-05)!important}._color\:blue-10,._text\:blue-10{color:#c9ecf8!important;color:var(--color--blue-10)!important}._color\:blue-15,._text\:blue-15{color:#aee3f4!important;color:var(--color--blue-15)!important}._color\:blue-20,._text\:blue-20{color:#93d9f1!important;color:var(--color--blue-20)!important}._color\:blue-25,._text\:blue-25{color:#78d0ed!important;color:var(--color--blue-25)!important}._color\:blue-30,._text\:blue-30{color:#5dc7ea!important;color:var(--color--blue-30)!important}._color\:blue-35,._text\:blue-35{color:#41bde6!important;color:var(--color--blue-35)!important}._color\:blue-40,._text\:blue-40{color:#26b4e3!important;color:var(--color--blue-40)!important}._color\:blue-45,._text\:blue-45{color:#1a9fcb!important;color:var(--color--blue-45)!important}._color\:blue-50,._text\:blue-50{color:#178ab0!important;color:var(--color--blue-50)!important}._color\:blue-55,._text\:blue-55{color:#157c9e!important;color:var(--color--blue-55)!important}._color\:blue-60,._text\:blue-60{color:#137190!important;color:var(--color--blue-60)!important}._color\:blue-65,._text\:blue-65{color:#10637e!important;color:var(--color--blue-65)!important}._color\:blue-70,._text\:blue-70{color:#0e556c!important;color:var(--color--blue-70)!important}._color\:blue-75,._text\:blue-75{color:#0c475a!important;color:var(--color--blue-75)!important}._color\:blue-80,._text\:blue-80{color:#093948!important;color:var(--color--blue-80)!important}._color\:blue-85,._text\:blue-85{color:#072a36!important;color:var(--color--blue-85)!important}._color\:blue-90,._text\:blue-90{color:#051c24!important;color:var(--color--blue-90)!important}._color\:blue-95,._text\:blue-95{color:#020e12!important;color:var(--color--blue-95)!important}._color\:purple-05,._text\:purple-05{color:#f1eef6!important;color:var(--color--purple-05)!important}._color\:purple-10,._text\:purple-10{color:#e6e1ef!important;color:var(--color--purple-10)!important}._color\:purple-15,._text\:purple-15{color:#d8d1e6!important;color:var(--color--purple-15)!important}._color\:purple-20,._text\:purple-20{color:#cdc3df!important;color:var(--color--purple-20)!important}._color\:purple-25,._text\:purple-25{color:#c0b3d6!important;color:var(--color--purple-25)!important}._color\:purple-30,._text\:purple-30{color:#b5a5cf!important;color:var(--color--purple-30)!important}._color\:purple-35,._text\:purple-35{color:#a795c6!important;color:var(--color--purple-35)!important}._color\:purple-40,._text\:purple-40{color:#9c88bf!important;color:var(--color--purple-40)!important}._color\:purple-45,._text\:purple-45{color:#8e77b6!important;color:var(--color--purple-45)!important}._color\:purple-50,._text\:purple-50{color:#836aaf!important;color:var(--color--purple-50)!important}._color\:purple-55,._text\:purple-55{color:#7357a2!important;color:var(--color--purple-55)!important}._color\:purple-60,._text\:purple-60{color:#674f92!important;color:var(--color--purple-60)!important}._color\:purple-65,._text\:purple-65{color:#59447e!important;color:var(--color--purple-65)!important}._color\:purple-70,._text\:purple-70{color:#4d3b6d!important;color:var(--color--purple-70)!important}._color\:purple-75,._text\:purple-75{color:#3f305a!important;color:var(--color--purple-75)!important}._color\:purple-80,._text\:purple-80{color:#342749!important;color:var(--color--purple-80)!important}._color\:purple-85,._text\:purple-85{color:#261d35!important;color:var(--color--purple-85)!important}._color\:purple-90,._text\:purple-90{color:#1a1424!important;color:var(--color--purple-90)!important}._color\:purple-95,._text\:purple-95{color:#0c0911!important;color:var(--color--purple-95)!important}._color\:pink-05,._text\:pink-05{color:#fff0f2!important;color:var(--color--pink-05)!important}._color\:pink-10,._text\:pink-10{color:#fee6ea!important;color:var(--color--pink-10)!important}._color\:pink-15,._text\:pink-15{color:#fed7dd!important;color:var(--color--pink-15)!important}._color\:pink-20,._text\:pink-20{color:#fec8d0!important;color:var(--color--pink-20)!important}._color\:pink-25,._text\:pink-25{color:#feb9c3!important;color:var(--color--pink-25)!important}._color\:pink-30,._text\:pink-30{color:#fdafbb!important;color:var(--color--pink-30)!important}._color\:pink-35,._text\:pink-35{color:#fda0ae!important;color:var(--color--pink-35)!important}._color\:pink-40,._text\:pink-40{color:#fd91a1!important;color:var(--color--pink-40)!important}._color\:pink-45,._text\:pink-45{color:#fc8294!important;color:var(--color--pink-45)!important}._color\:pink-50,._text\:pink-50{color:#fc788c!important;color:var(--color--pink-50)!important}._color\:pink-55,._text\:pink-55{color:#fb506a!important;color:var(--color--pink-55)!important}._color\:pink-60,._text\:pink-60{color:#fb2d4c!important;color:var(--color--pink-60)!important}._color\:pink-65,._text\:pink-65{color:#fa0a2e!important;color:var(--color--pink-65)!important}._color\:pink-70,._text\:pink-70{color:#dc0425!important;color:var(--color--pink-70)!important}._color\:pink-75,._text\:pink-75{color:#b4041e!important;color:var(--color--pink-75)!important}._color\:pink-80,._text\:pink-80{color:#910318!important;color:var(--color--pink-80)!important}._color\:pink-85,._text\:pink-85{color:#6e0212!important;color:var(--color--pink-85)!important}._color\:pink-90,._text\:pink-90{color:#4b020d!important;color:var(--color--pink-90)!important}._color\:pink-95,._text\:pink-95{color:#230106!important;color:var(--color--pink-95)!important}._color\:gray-05,._text\:gray-05{color:#f4f5f6!important;color:var(--color--gray-05)!important}._color\:gray-10,._text\:gray-10{color:#e8eced!important;color:var(--color--gray-10)!important}._color\:gray-15,._text\:gray-15{color:#dde2e4!important;color:var(--color--gray-15)!important}._color\:gray-20,._text\:gray-20{color:#d2d9db!important;color:var(--color--gray-20)!important}._color\:gray-25,._text\:gray-25{color:#c6cfd2!important;color:var(--color--gray-25)!important}._color\:gray-30,._text\:gray-30{color:#bbc5c9!important;color:var(--color--gray-30)!important}._color\:gray-35,._text\:gray-35{color:#b0bcbf!important;color:var(--color--gray-35)!important}._color\:gray-40,._text\:gray-40{color:#a4b2b6!important;color:var(--color--gray-40)!important}._color\:gray-45,._text\:gray-45{color:#99a9ad!important;color:var(--color--gray-45)!important}._color\:gray-50,._text\:gray-50{color:#8e9fa4!important;color:var(--color--gray-50)!important}._color\:gray-55,._text\:gray-55{color:#7d9197!important;color:var(--color--gray-55)!important}._color\:gray-60,._text\:gray-60{color:#6d8288!important;color:var(--color--gray-60)!important}._color\:gray-65,._text\:gray-65{color:#5f7177!important;color:var(--color--gray-65)!important}._color\:gray-70,._text\:gray-70{color:#526166!important;color:var(--color--gray-70)!important}._color\:gray-75,._text\:gray-75{color:#445155!important;color:var(--color--gray-75)!important}._color\:gray-80,._text\:gray-80{color:#364144!important;color:var(--color--gray-80)!important}._color\:gray-85,._text\:gray-85{color:#293133!important;color:var(--color--gray-85)!important}._color\:gray-90,._text\:gray-90{color:#1b2022!important;color:var(--color--gray-90)!important}._color\:gray-95,._text\:gray-95{color:#0e1011!important;color:var(--color--gray-95)!important}._color\:light-25,._text\:light-25{color:#eef1f1!important;color:var(--color--light-25)!important}._color\:light-30,._text\:light-30{color:#ebeeef!important;color:var(--color--light-30)!important}._color\:light-35,._text\:light-35{color:#e8eced!important;color:var(--color--light-35)!important}._color\:light-40,._text\:light-40{color:#e3e7e8!important;color:var(--color--light-40)!important}._color\:light-45,._text\:light-45{color:#e0e5e6!important;color:var(--color--light-45)!important}._color\:light-50,._text\:light-50{color:#dde2e4!important;color:var(--color--light-50)!important}._color\:light-55,._text\:light-55{color:#c4cdcf!important;color:var(--color--light-55)!important}._color\:light-60,._text\:light-60{color:#aab7bb!important;color:var(--color--light-60)!important}._color\:light-65,._text\:light-65{color:#93a4a9!important;color:var(--color--light-65)!important}._color\:light-70,._text\:light-70{color:#7a8e94!important;color:var(--color--light-70)!important}._color\:light-75,._text\:light-75{color:#64777d!important;color:var(--color--light-75)!important}._color\:dark-25,._text\:dark-25{color:#9aa0a2!important;color:var(--color--dark-25)!important}._color\:dark-30,._text\:dark-30{color:#858c8e!important;color:var(--color--dark-30)!important}._color\:dark-35,._text\:dark-35{color:#737a7d!important;color:var(--color--dark-35)!important}._color\:dark-40,._text\:dark-40{color:#5f6667!important;color:var(--color--dark-40)!important}._color\:dark-45,._text\:dark-45{color:#4e5355!important;color:var(--color--dark-45)!important}._color\:dark-50,._text\:dark-50{color:#3b3f40!important;color:var(--color--dark-50)!important}._color\:dark-55,._text\:dark-55{color:#36393a!important;color:var(--color--dark-55)!important}._color\:dark-60,._text\:dark-60{color:#2f3132!important;color:var(--color--dark-60)!important}._color\:dark-65,._text\:dark-65{color:#2a2c2d!important;color:var(--color--dark-65)!important}._color\:dark-70,._text\:dark-70{color:#222425!important;color:var(--color--dark-70)!important}._color\:dark-75,._text\:dark-75{color:#1d1f20!important;color:var(--color--dark-75)!important}._color\:facebook-55,._text\:facebook-55{color:#354f88!important;color:var(--color--facebook-55)!important}._color\:facebook-60,._text\:facebook-60{color:#2f4779!important;color:var(--color--facebook-60)!important}._color\:twitter-55,._text\:twitter-55{color:#0d94e7!important;color:var(--color--twitter-55)!important}._color\:twitter-60,._text\:twitter-60{color:#0c84cf!important;color:var(--color--twitter-60)!important}._color\:google-55,._text\:google-55{color:#d63924!important;color:var(--color--google-55)!important}._color\:google-60,._text\:google-60{color:#c03321!important;color:var(--color--google-60)!important}._color\:github-55,._text\:github-55{color:#2e2e2e!important;color:var(--color--github-55)!important}._color\:github-60,._text\:github-60{color:#292929!important;color:var(--color--github-60)!important}._cursor\:pointer{cursor:pointer!important}._cursor\:default{cursor:default!important}._xs\:display\:none{display:none!important}._xs\:display\:inline{display:inline!important}._xs\:display\:inline-block{display:inline-block!important}._xs\:display\:block{display:block!important}._xs\:display\:table{display:table!important}._xs\:display\:table-cell{display:table-cell!important}._xs\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._xs\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media screen and (min-width: 576px){._sm\:display\:none{display:none!important}._sm\:display\:inline{display:inline!important}._sm\:display\:inline-block{display:inline-block!important}._sm\:display\:block{display:block!important}._sm\:display\:table{display:table!important}._sm\:display\:table-cell{display:table-cell!important}._sm\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._sm\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 768px){._md\:display\:none{display:none!important}._md\:display\:inline{display:inline!important}._md\:display\:inline-block{display:inline-block!important}._md\:display\:block{display:block!important}._md\:display\:table{display:table!important}._md\:display\:table-cell{display:table-cell!important}._md\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._md\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 992px){._lg\:display\:none{display:none!important}._lg\:display\:inline{display:inline!important}._lg\:display\:inline-block{display:inline-block!important}._lg\:display\:block{display:block!important}._lg\:display\:table{display:table!important}._lg\:display\:table-cell{display:table-cell!important}._lg\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._lg\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 1200px){._xl\:display\:none{display:none!important}._xl\:display\:inline{display:inline!important}._xl\:display\:inline-block{display:inline-block!important}._xl\:display\:block{display:block!important}._xl\:display\:table{display:table!important}._xl\:display\:table-cell{display:table-cell!important}._xl\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._xl\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 1400px){._xxl\:display\:none{display:none!important}._xxl\:display\:inline{display:inline!important}._xxl\:display\:inline-block{display:inline-block!important}._xxl\:display\:block{display:block!important}._xxl\:display\:table{display:table!important}._xxl\:display\:table-cell{display:table-cell!important}._xxl\:display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._xxl\:display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}._display\:none{display:none!important}._display\:inline{display:inline!important}._display\:inline-block{display:inline-block!important}._display\:block{display:block!important}._display\:table{display:table!important}._display\:table-cell{display:table-cell!important}._display\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._display\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}._print\:display\:block{display:none!important}@media print{._print\:display\:block{display:block!important}}._print\:display\:inline{display:none!important}@media print{._print\:display\:inline{display:inline!important}}._print\:display\:inline-block{display:none!important}@media print{._print\:display\:inline-block{display:inline-block!important}}@media print{._print\:display\:none{display:none!important}}[class^=_embed]{position:relative;display:block;width:100%;padding:0;overflow:hidden}[class^=_embed]:before{display:block;content:""}[class^=_embed]>._embed-item,[class^=_embed] iframe,[class^=_embed] embed,[class^=_embed] object,[class^=_embed] video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:none}._embed\:21\:9:before{padding-top:42.8571428571%}._embed\:16\:9:before{padding-top:56.25%}._embed\:4\:3:before{padding-top:75%}._embed\:1\:1:before{padding-top:100%}._xs\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._xs\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._xs\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._xs\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._xs\:flex\:wrap,._xs\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._xs\:flex\:nowrap,._xs\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._xs\:flex\:wrap-reverse,._xs\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._xs\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._xs\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._xs\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._xs\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._xs\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._xs\:justify-content\:start,._xs\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._xs\:justify-content\:end,._xs\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._xs\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._xs\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._xs\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._xs\:align-items\:start,._xs\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._xs\:align-items\:end,._xs\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._xs\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._xs\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._xs\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._xs\:align-content\:start,._xs\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._xs\:align-content\:end,._xs\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._xs\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._xs\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._xs\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._xs\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._xs\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._xs\:align-self\:start,._xs\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._xs\:align-self\:end,._xs\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._xs\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._xs\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._xs\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._xs\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._xs\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._xs\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._xs\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._xs\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._xs\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._xs\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._xs\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._xs\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._xs\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._xs\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._xs\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._xs\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._xs\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._xs\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}@media screen and (min-width: 576px){._sm\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._sm\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._sm\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._sm\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._sm\:flex\:wrap,._sm\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._sm\:flex\:nowrap,._sm\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._sm\:flex\:wrap-reverse,._sm\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._sm\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._sm\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._sm\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._sm\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._sm\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._sm\:justify-content\:start,._sm\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._sm\:justify-content\:end,._sm\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._sm\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._sm\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._sm\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._sm\:align-items\:start,._sm\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._sm\:align-items\:end,._sm\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._sm\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._sm\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._sm\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._sm\:align-content\:start,._sm\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._sm\:align-content\:end,._sm\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._sm\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._sm\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._sm\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._sm\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._sm\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._sm\:align-self\:start,._sm\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._sm\:align-self\:end,._sm\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._sm\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._sm\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._sm\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._sm\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._sm\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._sm\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._sm\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._sm\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._sm\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._sm\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._sm\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._sm\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._sm\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._sm\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._sm\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._sm\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._sm\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._sm\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}}@media screen and (min-width: 768px){._md\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._md\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._md\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._md\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._md\:flex\:wrap,._md\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._md\:flex\:nowrap,._md\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._md\:flex\:wrap-reverse,._md\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._md\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._md\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._md\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._md\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._md\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._md\:justify-content\:start,._md\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._md\:justify-content\:end,._md\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._md\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._md\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._md\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._md\:align-items\:start,._md\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._md\:align-items\:end,._md\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._md\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._md\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._md\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._md\:align-content\:start,._md\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._md\:align-content\:end,._md\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._md\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._md\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._md\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._md\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._md\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._md\:align-self\:start,._md\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._md\:align-self\:end,._md\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._md\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._md\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._md\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._md\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._md\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._md\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._md\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._md\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._md\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._md\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._md\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._md\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._md\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._md\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._md\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._md\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._md\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._md\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}}@media screen and (min-width: 992px){._lg\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._lg\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._lg\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._lg\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._lg\:flex\:wrap,._lg\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._lg\:flex\:nowrap,._lg\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._lg\:flex\:wrap-reverse,._lg\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._lg\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._lg\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._lg\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._lg\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._lg\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._lg\:justify-content\:start,._lg\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._lg\:justify-content\:end,._lg\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._lg\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._lg\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._lg\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._lg\:align-items\:start,._lg\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._lg\:align-items\:end,._lg\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._lg\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._lg\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._lg\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._lg\:align-content\:start,._lg\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._lg\:align-content\:end,._lg\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._lg\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._lg\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._lg\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._lg\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._lg\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._lg\:align-self\:start,._lg\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._lg\:align-self\:end,._lg\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._lg\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._lg\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._lg\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._lg\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._lg\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._lg\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._lg\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._lg\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._lg\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._lg\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._lg\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._lg\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._lg\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._lg\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._lg\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._lg\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._lg\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._lg\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}}@media screen and (min-width: 1200px){._xl\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._xl\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._xl\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._xl\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._xl\:flex\:wrap,._xl\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._xl\:flex\:nowrap,._xl\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._xl\:flex\:wrap-reverse,._xl\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._xl\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._xl\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._xl\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._xl\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._xl\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._xl\:justify-content\:start,._xl\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._xl\:justify-content\:end,._xl\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._xl\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._xl\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._xl\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._xl\:align-items\:start,._xl\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._xl\:align-items\:end,._xl\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._xl\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._xl\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._xl\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._xl\:align-content\:start,._xl\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._xl\:align-content\:end,._xl\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._xl\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._xl\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._xl\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._xl\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._xl\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._xl\:align-self\:start,._xl\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._xl\:align-self\:end,._xl\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._xl\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._xl\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._xl\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._xl\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._xl\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._xl\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._xl\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._xl\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._xl\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._xl\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._xl\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._xl\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._xl\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._xl\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._xl\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._xl\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._xl\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._xl\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}}@media screen and (min-width: 1400px){._xxl\:flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._xxl\:flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._xxl\:flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._xxl\:flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._xxl\:flex\:wrap,._xxl\:flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._xxl\:flex\:nowrap,._xxl\:flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._xxl\:flex\:wrap-reverse,._xxl\:flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._xxl\:flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._xxl\:flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._xxl\:flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._xxl\:flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._xxl\:flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._xxl\:justify-content\:start,._xxl\:justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._xxl\:justify-content\:end,._xxl\:justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._xxl\:justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._xxl\:justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._xxl\:justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._xxl\:align-items\:start,._xxl\:align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._xxl\:align-items\:end,._xxl\:align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._xxl\:align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._xxl\:align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._xxl\:align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._xxl\:align-content\:start,._xxl\:align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._xxl\:align-content\:end,._xxl\:align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._xxl\:align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._xxl\:align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._xxl\:align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._xxl\:align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._xxl\:align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._xxl\:align-self\:start,._xxl\:align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._xxl\:align-self\:end,._xxl\:align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._xxl\:align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._xxl\:align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._xxl\:align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._xxl\:order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._xxl\:order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._xxl\:order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._xxl\:order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._xxl\:order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._xxl\:order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._xxl\:order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._xxl\:order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._xxl\:order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._xxl\:order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._xxl\:order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._xxl\:order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._xxl\:order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._xxl\:order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._xxl\:order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}}._flex-direction\:row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}._flex-direction\:column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}._flex-direction\:row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}._flex-direction\:column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}._flex\:wrap,._flex-wrap\:wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}._flex\:nowrap,._flex-wrap\:nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}._flex\:wrap-reverse,._flex-wrap\:wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}._flex\:fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}._flex-grow\:1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}._flex-grow\:0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}._flex-shrink\:1{-ms-flex-negative:1!important;flex-shrink:1!important}._flex-shrink\:0{-ms-flex-negative:0!important;flex-shrink:0!important}._justify-content\:start,._justify-content\:flex-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}._justify-content\:end,._justify-content\:flex-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}._justify-content\:center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}._justify-content\:space-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}._justify-content\:space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}._align-items\:start,._align-items\:flex-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}._align-items\:end,._align-items\:flex-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}._align-items\:center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}._align-items\:baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}._align-items\:stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}._align-content\:start,._align-content\:flex-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}._align-content\:end,._align-content\:flex-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}._align-content\:center{-ms-flex-line-pack:center!important;align-content:center!important}._align-content\:space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}._align-content\:space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}._align-content\:stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}._align-self\:auto{-ms-flex-item-align:auto!important;align-self:auto!important}._align-self\:start,._align-self\:flex-start{-ms-flex-item-align:start!important;align-self:flex-start!important}._align-self\:end,._align-self\:flex-end{-ms-flex-item-align:end!important;align-self:flex-end!important}._align-self\:center{-ms-flex-item-align:center!important;align-self:center!important}._align-self\:baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}._align-self\:stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}._order\:0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}._order\:1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}._order\:2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}._order\:3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}._order\:4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}._order\:5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}._order\:6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}._order\:7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}._order\:8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}._order\:9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}._order\:10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}._order\:11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}._order\:12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}._order\:first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}._order\:last{-webkit-box-ordinal-group:100;-ms-flex-order:99;order:99}._xs\:float\:left{float:left!important}._xs\:float\:right{float:right!important}._xs\:float\:none{float:none!important}@media screen and (min-width: 576px){._sm\:float\:left{float:left!important}._sm\:float\:right{float:right!important}._sm\:float\:none{float:none!important}}@media screen and (min-width: 768px){._md\:float\:left{float:left!important}._md\:float\:right{float:right!important}._md\:float\:none{float:none!important}}@media screen and (min-width: 992px){._lg\:float\:left{float:left!important}._lg\:float\:right{float:right!important}._lg\:float\:none{float:none!important}}@media screen and (min-width: 1200px){._xl\:float\:left{float:left!important}._xl\:float\:right{float:right!important}._xl\:float\:none{float:none!important}}@media screen and (min-width: 1400px){._xxl\:float\:left{float:left!important}._xxl\:float\:right{float:right!important}._xxl\:float\:none{float:none!important}}._float\:left{float:left!important}._float\:right{float:right!important}._float\:none{float:none!important}._overflow\:auto{overflow:auto!important}._overflow\:hidden{overflow:hidden!important}._overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}._overlay-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:""}._position\:static{position:static!important}._position\:relative{position:relative!important}._position\:absolute{position:absolute!important}._position\:fixed{position:fixed!important}._position\:sticky{position:sticky!important}._position\:fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030;z-index:var(--z-index--fixed)}._position\:fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030;z-index:var(--z-index--fixed)}@supports (position: sticky){._position\:sticky-top{position:sticky;top:0;z-index:1020;z-index:var(--z-index--sticky)}}._width\:0\%{width:0%!important;width:var(--size-percentage--0)!important}._height\:0\%{height:0%!important;height:var(--size-percentage--0)!important}._width\:25\%{width:25%!important;width:var(--size-percentage--25)!important}._height\:25\%{height:25%!important;height:var(--size-percentage--25)!important}._width\:50\%{width:50%!important;width:var(--size-percentage--50)!important}._height\:50\%{height:50%!important;height:var(--size-percentage--50)!important}._width\:75\%{width:75%!important;width:var(--size-percentage--75)!important}._height\:75\%{height:75%!important;height:var(--size-percentage--75)!important}._width\:100\%{width:100%!important;width:var(--size-percentage--100)!important}._height\:100\%{height:100%!important;height:var(--size-percentage--100)!important}._max-height\:100\%{max-height:100%!important}._max-width\:100\%{max-width:100%!important}._width\:100vw{width:100vw!important}._height\:100vh{height:100vh!important}._max-width\:100vw{max-width:100vw!important}._max-height\:100vh{max-height:100vh!important}._xs\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._xs\:margin-top\:1\/2,._xs\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._xs\:margin-right\:1\/2,._xs\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._xs\:margin-bottom\:1\/2,._xs\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._xs\:margin-left\:1\/2,._xs\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._xs\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._xs\:margin-top\:1\/3,._xs\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._xs\:margin-right\:1\/3,._xs\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._xs\:margin-bottom\:1\/3,._xs\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._xs\:margin-left\:1\/3,._xs\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._xs\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._xs\:margin-top\:2\/3,._xs\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._xs\:margin-right\:2\/3,._xs\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._xs\:margin-bottom\:2\/3,._xs\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._xs\:margin-left\:2\/3,._xs\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._xs\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._xs\:margin-top\:1\/4,._xs\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._xs\:margin-right\:1\/4,._xs\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._xs\:margin-bottom\:1\/4,._xs\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._xs\:margin-left\:1\/4,._xs\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._xs\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._xs\:margin-top\:3\/4,._xs\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._xs\:margin-right\:3\/4,._xs\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._xs\:margin-bottom\:3\/4,._xs\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._xs\:margin-left\:3\/4,._xs\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._xs\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._xs\:margin-top\:0,._xs\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._xs\:margin-right\:0,._xs\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._xs\:margin-bottom\:0,._xs\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._xs\:margin-left\:0,._xs\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._xs\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._xs\:margin-top\:1,._xs\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._xs\:margin-right\:1,._xs\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._xs\:margin-bottom\:1,._xs\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._xs\:margin-left\:1,._xs\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._xs\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._xs\:margin-top\:2,._xs\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._xs\:margin-right\:2,._xs\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._xs\:margin-bottom\:2,._xs\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._xs\:margin-left\:2,._xs\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._xs\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._xs\:margin-top\:3,._xs\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._xs\:margin-right\:3,._xs\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._xs\:margin-bottom\:3,._xs\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._xs\:margin-left\:3,._xs\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._xs\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._xs\:margin-top\:4,._xs\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._xs\:margin-right\:4,._xs\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._xs\:margin-bottom\:4,._xs\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._xs\:margin-left\:4,._xs\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._xs\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._xs\:margin-top\:5,._xs\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._xs\:margin-right\:5,._xs\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._xs\:margin-bottom\:5,._xs\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._xs\:margin-left\:5,._xs\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._xs\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._xs\:margin-top\:6,._xs\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._xs\:margin-right\:6,._xs\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._xs\:margin-bottom\:6,._xs\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._xs\:margin-left\:6,._xs\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._xs\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._xs\:margin-top\:7,._xs\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._xs\:margin-right\:7,._xs\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._xs\:margin-bottom\:7,._xs\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._xs\:margin-left\:7,._xs\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._xs\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._xs\:margin-top\:8,._xs\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._xs\:margin-right\:8,._xs\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._xs\:margin-bottom\:8,._xs\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._xs\:margin-left\:8,._xs\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._xs\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._xs\:padding-top\:1\/2,._xs\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._xs\:padding-right\:1\/2,._xs\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._xs\:padding-bottom\:1\/2,._xs\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._xs\:padding-left\:1\/2,._xs\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._xs\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._xs\:padding-top\:1\/3,._xs\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._xs\:padding-right\:1\/3,._xs\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._xs\:padding-bottom\:1\/3,._xs\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._xs\:padding-left\:1\/3,._xs\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._xs\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._xs\:padding-top\:2\/3,._xs\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._xs\:padding-right\:2\/3,._xs\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._xs\:padding-bottom\:2\/3,._xs\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._xs\:padding-left\:2\/3,._xs\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._xs\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._xs\:padding-top\:1\/4,._xs\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._xs\:padding-right\:1\/4,._xs\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._xs\:padding-bottom\:1\/4,._xs\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._xs\:padding-left\:1\/4,._xs\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._xs\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._xs\:padding-top\:3\/4,._xs\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._xs\:padding-right\:3\/4,._xs\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._xs\:padding-bottom\:3\/4,._xs\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._xs\:padding-left\:3\/4,._xs\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._xs\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._xs\:padding-top\:0,._xs\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._xs\:padding-right\:0,._xs\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._xs\:padding-bottom\:0,._xs\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._xs\:padding-left\:0,._xs\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._xs\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._xs\:padding-top\:1,._xs\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._xs\:padding-right\:1,._xs\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._xs\:padding-bottom\:1,._xs\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._xs\:padding-left\:1,._xs\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._xs\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._xs\:padding-top\:2,._xs\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._xs\:padding-right\:2,._xs\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._xs\:padding-bottom\:2,._xs\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._xs\:padding-left\:2,._xs\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._xs\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._xs\:padding-top\:3,._xs\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._xs\:padding-right\:3,._xs\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._xs\:padding-bottom\:3,._xs\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._xs\:padding-left\:3,._xs\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._xs\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._xs\:padding-top\:4,._xs\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._xs\:padding-right\:4,._xs\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._xs\:padding-bottom\:4,._xs\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._xs\:padding-left\:4,._xs\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._xs\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._xs\:padding-top\:5,._xs\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._xs\:padding-right\:5,._xs\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._xs\:padding-bottom\:5,._xs\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._xs\:padding-left\:5,._xs\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._xs\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._xs\:padding-top\:6,._xs\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._xs\:padding-right\:6,._xs\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._xs\:padding-bottom\:6,._xs\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._xs\:padding-left\:6,._xs\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._xs\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._xs\:padding-top\:7,._xs\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._xs\:padding-right\:7,._xs\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._xs\:padding-bottom\:7,._xs\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._xs\:padding-left\:7,._xs\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._xs\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._xs\:padding-top\:8,._xs\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._xs\:padding-right\:8,._xs\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._xs\:padding-bottom\:8,._xs\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._xs\:padding-left\:8,._xs\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._xs\:margin\:auto{margin:auto!important}._xs\:margin-top\:auto,._xs\:margin-y\:auto{margin-top:auto!important}._xs\:margin-right\:auto,._xs\:margin-x\:auto{margin-right:auto!important}._xs\:margin-bottom\:auto,._xs\:margin-y\:auto{margin-bottom:auto!important}._xs\:margin-left\:auto,._xs\:margin-x\:auto{margin-left:auto!important}@media screen and (min-width: 576px){._sm\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._sm\:margin-top\:1\/2,._sm\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._sm\:margin-right\:1\/2,._sm\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._sm\:margin-bottom\:1\/2,._sm\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._sm\:margin-left\:1\/2,._sm\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._sm\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._sm\:margin-top\:1\/3,._sm\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._sm\:margin-right\:1\/3,._sm\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._sm\:margin-bottom\:1\/3,._sm\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._sm\:margin-left\:1\/3,._sm\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._sm\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._sm\:margin-top\:2\/3,._sm\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._sm\:margin-right\:2\/3,._sm\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._sm\:margin-bottom\:2\/3,._sm\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._sm\:margin-left\:2\/3,._sm\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._sm\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._sm\:margin-top\:1\/4,._sm\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._sm\:margin-right\:1\/4,._sm\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._sm\:margin-bottom\:1\/4,._sm\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._sm\:margin-left\:1\/4,._sm\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._sm\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._sm\:margin-top\:3\/4,._sm\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._sm\:margin-right\:3\/4,._sm\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._sm\:margin-bottom\:3\/4,._sm\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._sm\:margin-left\:3\/4,._sm\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._sm\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._sm\:margin-top\:0,._sm\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._sm\:margin-right\:0,._sm\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._sm\:margin-bottom\:0,._sm\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._sm\:margin-left\:0,._sm\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._sm\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._sm\:margin-top\:1,._sm\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._sm\:margin-right\:1,._sm\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._sm\:margin-bottom\:1,._sm\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._sm\:margin-left\:1,._sm\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._sm\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._sm\:margin-top\:2,._sm\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._sm\:margin-right\:2,._sm\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._sm\:margin-bottom\:2,._sm\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._sm\:margin-left\:2,._sm\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._sm\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._sm\:margin-top\:3,._sm\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._sm\:margin-right\:3,._sm\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._sm\:margin-bottom\:3,._sm\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._sm\:margin-left\:3,._sm\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._sm\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._sm\:margin-top\:4,._sm\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._sm\:margin-right\:4,._sm\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._sm\:margin-bottom\:4,._sm\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._sm\:margin-left\:4,._sm\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._sm\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._sm\:margin-top\:5,._sm\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._sm\:margin-right\:5,._sm\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._sm\:margin-bottom\:5,._sm\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._sm\:margin-left\:5,._sm\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._sm\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._sm\:margin-top\:6,._sm\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._sm\:margin-right\:6,._sm\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._sm\:margin-bottom\:6,._sm\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._sm\:margin-left\:6,._sm\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._sm\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._sm\:margin-top\:7,._sm\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._sm\:margin-right\:7,._sm\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._sm\:margin-bottom\:7,._sm\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._sm\:margin-left\:7,._sm\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._sm\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._sm\:margin-top\:8,._sm\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._sm\:margin-right\:8,._sm\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._sm\:margin-bottom\:8,._sm\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._sm\:margin-left\:8,._sm\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._sm\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._sm\:padding-top\:1\/2,._sm\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._sm\:padding-right\:1\/2,._sm\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._sm\:padding-bottom\:1\/2,._sm\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._sm\:padding-left\:1\/2,._sm\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._sm\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._sm\:padding-top\:1\/3,._sm\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._sm\:padding-right\:1\/3,._sm\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._sm\:padding-bottom\:1\/3,._sm\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._sm\:padding-left\:1\/3,._sm\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._sm\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._sm\:padding-top\:2\/3,._sm\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._sm\:padding-right\:2\/3,._sm\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._sm\:padding-bottom\:2\/3,._sm\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._sm\:padding-left\:2\/3,._sm\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._sm\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._sm\:padding-top\:1\/4,._sm\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._sm\:padding-right\:1\/4,._sm\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._sm\:padding-bottom\:1\/4,._sm\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._sm\:padding-left\:1\/4,._sm\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._sm\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._sm\:padding-top\:3\/4,._sm\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._sm\:padding-right\:3\/4,._sm\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._sm\:padding-bottom\:3\/4,._sm\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._sm\:padding-left\:3\/4,._sm\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._sm\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._sm\:padding-top\:0,._sm\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._sm\:padding-right\:0,._sm\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._sm\:padding-bottom\:0,._sm\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._sm\:padding-left\:0,._sm\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._sm\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._sm\:padding-top\:1,._sm\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._sm\:padding-right\:1,._sm\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._sm\:padding-bottom\:1,._sm\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._sm\:padding-left\:1,._sm\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._sm\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._sm\:padding-top\:2,._sm\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._sm\:padding-right\:2,._sm\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._sm\:padding-bottom\:2,._sm\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._sm\:padding-left\:2,._sm\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._sm\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._sm\:padding-top\:3,._sm\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._sm\:padding-right\:3,._sm\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._sm\:padding-bottom\:3,._sm\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._sm\:padding-left\:3,._sm\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._sm\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._sm\:padding-top\:4,._sm\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._sm\:padding-right\:4,._sm\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._sm\:padding-bottom\:4,._sm\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._sm\:padding-left\:4,._sm\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._sm\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._sm\:padding-top\:5,._sm\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._sm\:padding-right\:5,._sm\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._sm\:padding-bottom\:5,._sm\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._sm\:padding-left\:5,._sm\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._sm\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._sm\:padding-top\:6,._sm\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._sm\:padding-right\:6,._sm\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._sm\:padding-bottom\:6,._sm\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._sm\:padding-left\:6,._sm\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._sm\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._sm\:padding-top\:7,._sm\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._sm\:padding-right\:7,._sm\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._sm\:padding-bottom\:7,._sm\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._sm\:padding-left\:7,._sm\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._sm\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._sm\:padding-top\:8,._sm\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._sm\:padding-right\:8,._sm\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._sm\:padding-bottom\:8,._sm\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._sm\:padding-left\:8,._sm\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._sm\:margin\:auto{margin:auto!important}._sm\:margin-top\:auto,._sm\:margin-y\:auto{margin-top:auto!important}._sm\:margin-right\:auto,._sm\:margin-x\:auto{margin-right:auto!important}._sm\:margin-bottom\:auto,._sm\:margin-y\:auto{margin-bottom:auto!important}._sm\:margin-left\:auto,._sm\:margin-x\:auto{margin-left:auto!important}}@media screen and (min-width: 768px){._md\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._md\:margin-top\:1\/2,._md\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._md\:margin-right\:1\/2,._md\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._md\:margin-bottom\:1\/2,._md\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._md\:margin-left\:1\/2,._md\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._md\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._md\:margin-top\:1\/3,._md\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._md\:margin-right\:1\/3,._md\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._md\:margin-bottom\:1\/3,._md\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._md\:margin-left\:1\/3,._md\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._md\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._md\:margin-top\:2\/3,._md\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._md\:margin-right\:2\/3,._md\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._md\:margin-bottom\:2\/3,._md\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._md\:margin-left\:2\/3,._md\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._md\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._md\:margin-top\:1\/4,._md\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._md\:margin-right\:1\/4,._md\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._md\:margin-bottom\:1\/4,._md\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._md\:margin-left\:1\/4,._md\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._md\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._md\:margin-top\:3\/4,._md\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._md\:margin-right\:3\/4,._md\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._md\:margin-bottom\:3\/4,._md\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._md\:margin-left\:3\/4,._md\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._md\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._md\:margin-top\:0,._md\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._md\:margin-right\:0,._md\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._md\:margin-bottom\:0,._md\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._md\:margin-left\:0,._md\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._md\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._md\:margin-top\:1,._md\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._md\:margin-right\:1,._md\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._md\:margin-bottom\:1,._md\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._md\:margin-left\:1,._md\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._md\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._md\:margin-top\:2,._md\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._md\:margin-right\:2,._md\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._md\:margin-bottom\:2,._md\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._md\:margin-left\:2,._md\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._md\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._md\:margin-top\:3,._md\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._md\:margin-right\:3,._md\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._md\:margin-bottom\:3,._md\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._md\:margin-left\:3,._md\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._md\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._md\:margin-top\:4,._md\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._md\:margin-right\:4,._md\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._md\:margin-bottom\:4,._md\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._md\:margin-left\:4,._md\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._md\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._md\:margin-top\:5,._md\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._md\:margin-right\:5,._md\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._md\:margin-bottom\:5,._md\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._md\:margin-left\:5,._md\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._md\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._md\:margin-top\:6,._md\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._md\:margin-right\:6,._md\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._md\:margin-bottom\:6,._md\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._md\:margin-left\:6,._md\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._md\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._md\:margin-top\:7,._md\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._md\:margin-right\:7,._md\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._md\:margin-bottom\:7,._md\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._md\:margin-left\:7,._md\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._md\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._md\:margin-top\:8,._md\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._md\:margin-right\:8,._md\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._md\:margin-bottom\:8,._md\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._md\:margin-left\:8,._md\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._md\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._md\:padding-top\:1\/2,._md\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._md\:padding-right\:1\/2,._md\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._md\:padding-bottom\:1\/2,._md\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._md\:padding-left\:1\/2,._md\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._md\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._md\:padding-top\:1\/3,._md\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._md\:padding-right\:1\/3,._md\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._md\:padding-bottom\:1\/3,._md\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._md\:padding-left\:1\/3,._md\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._md\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._md\:padding-top\:2\/3,._md\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._md\:padding-right\:2\/3,._md\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._md\:padding-bottom\:2\/3,._md\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._md\:padding-left\:2\/3,._md\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._md\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._md\:padding-top\:1\/4,._md\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._md\:padding-right\:1\/4,._md\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._md\:padding-bottom\:1\/4,._md\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._md\:padding-left\:1\/4,._md\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._md\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._md\:padding-top\:3\/4,._md\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._md\:padding-right\:3\/4,._md\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._md\:padding-bottom\:3\/4,._md\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._md\:padding-left\:3\/4,._md\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._md\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._md\:padding-top\:0,._md\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._md\:padding-right\:0,._md\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._md\:padding-bottom\:0,._md\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._md\:padding-left\:0,._md\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._md\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._md\:padding-top\:1,._md\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._md\:padding-right\:1,._md\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._md\:padding-bottom\:1,._md\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._md\:padding-left\:1,._md\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._md\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._md\:padding-top\:2,._md\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._md\:padding-right\:2,._md\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._md\:padding-bottom\:2,._md\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._md\:padding-left\:2,._md\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._md\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._md\:padding-top\:3,._md\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._md\:padding-right\:3,._md\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._md\:padding-bottom\:3,._md\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._md\:padding-left\:3,._md\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._md\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._md\:padding-top\:4,._md\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._md\:padding-right\:4,._md\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._md\:padding-bottom\:4,._md\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._md\:padding-left\:4,._md\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._md\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._md\:padding-top\:5,._md\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._md\:padding-right\:5,._md\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._md\:padding-bottom\:5,._md\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._md\:padding-left\:5,._md\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._md\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._md\:padding-top\:6,._md\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._md\:padding-right\:6,._md\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._md\:padding-bottom\:6,._md\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._md\:padding-left\:6,._md\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._md\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._md\:padding-top\:7,._md\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._md\:padding-right\:7,._md\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._md\:padding-bottom\:7,._md\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._md\:padding-left\:7,._md\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._md\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._md\:padding-top\:8,._md\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._md\:padding-right\:8,._md\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._md\:padding-bottom\:8,._md\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._md\:padding-left\:8,._md\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._md\:margin\:auto{margin:auto!important}._md\:margin-top\:auto,._md\:margin-y\:auto{margin-top:auto!important}._md\:margin-right\:auto,._md\:margin-x\:auto{margin-right:auto!important}._md\:margin-bottom\:auto,._md\:margin-y\:auto{margin-bottom:auto!important}._md\:margin-left\:auto,._md\:margin-x\:auto{margin-left:auto!important}}@media screen and (min-width: 992px){._lg\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._lg\:margin-top\:1\/2,._lg\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._lg\:margin-right\:1\/2,._lg\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._lg\:margin-bottom\:1\/2,._lg\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._lg\:margin-left\:1\/2,._lg\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._lg\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._lg\:margin-top\:1\/3,._lg\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._lg\:margin-right\:1\/3,._lg\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._lg\:margin-bottom\:1\/3,._lg\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._lg\:margin-left\:1\/3,._lg\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._lg\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._lg\:margin-top\:2\/3,._lg\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._lg\:margin-right\:2\/3,._lg\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._lg\:margin-bottom\:2\/3,._lg\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._lg\:margin-left\:2\/3,._lg\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._lg\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._lg\:margin-top\:1\/4,._lg\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._lg\:margin-right\:1\/4,._lg\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._lg\:margin-bottom\:1\/4,._lg\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._lg\:margin-left\:1\/4,._lg\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._lg\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._lg\:margin-top\:3\/4,._lg\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._lg\:margin-right\:3\/4,._lg\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._lg\:margin-bottom\:3\/4,._lg\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._lg\:margin-left\:3\/4,._lg\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._lg\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._lg\:margin-top\:0,._lg\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._lg\:margin-right\:0,._lg\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._lg\:margin-bottom\:0,._lg\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._lg\:margin-left\:0,._lg\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._lg\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._lg\:margin-top\:1,._lg\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._lg\:margin-right\:1,._lg\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._lg\:margin-bottom\:1,._lg\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._lg\:margin-left\:1,._lg\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._lg\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._lg\:margin-top\:2,._lg\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._lg\:margin-right\:2,._lg\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._lg\:margin-bottom\:2,._lg\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._lg\:margin-left\:2,._lg\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._lg\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._lg\:margin-top\:3,._lg\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._lg\:margin-right\:3,._lg\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._lg\:margin-bottom\:3,._lg\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._lg\:margin-left\:3,._lg\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._lg\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._lg\:margin-top\:4,._lg\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._lg\:margin-right\:4,._lg\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._lg\:margin-bottom\:4,._lg\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._lg\:margin-left\:4,._lg\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._lg\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._lg\:margin-top\:5,._lg\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._lg\:margin-right\:5,._lg\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._lg\:margin-bottom\:5,._lg\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._lg\:margin-left\:5,._lg\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._lg\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._lg\:margin-top\:6,._lg\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._lg\:margin-right\:6,._lg\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._lg\:margin-bottom\:6,._lg\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._lg\:margin-left\:6,._lg\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._lg\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._lg\:margin-top\:7,._lg\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._lg\:margin-right\:7,._lg\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._lg\:margin-bottom\:7,._lg\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._lg\:margin-left\:7,._lg\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._lg\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._lg\:margin-top\:8,._lg\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._lg\:margin-right\:8,._lg\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._lg\:margin-bottom\:8,._lg\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._lg\:margin-left\:8,._lg\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._lg\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._lg\:padding-top\:1\/2,._lg\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._lg\:padding-right\:1\/2,._lg\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._lg\:padding-bottom\:1\/2,._lg\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._lg\:padding-left\:1\/2,._lg\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._lg\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._lg\:padding-top\:1\/3,._lg\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._lg\:padding-right\:1\/3,._lg\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._lg\:padding-bottom\:1\/3,._lg\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._lg\:padding-left\:1\/3,._lg\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._lg\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._lg\:padding-top\:2\/3,._lg\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._lg\:padding-right\:2\/3,._lg\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._lg\:padding-bottom\:2\/3,._lg\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._lg\:padding-left\:2\/3,._lg\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._lg\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._lg\:padding-top\:1\/4,._lg\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._lg\:padding-right\:1\/4,._lg\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._lg\:padding-bottom\:1\/4,._lg\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._lg\:padding-left\:1\/4,._lg\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._lg\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._lg\:padding-top\:3\/4,._lg\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._lg\:padding-right\:3\/4,._lg\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._lg\:padding-bottom\:3\/4,._lg\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._lg\:padding-left\:3\/4,._lg\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._lg\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._lg\:padding-top\:0,._lg\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._lg\:padding-right\:0,._lg\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._lg\:padding-bottom\:0,._lg\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._lg\:padding-left\:0,._lg\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._lg\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._lg\:padding-top\:1,._lg\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._lg\:padding-right\:1,._lg\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._lg\:padding-bottom\:1,._lg\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._lg\:padding-left\:1,._lg\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._lg\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._lg\:padding-top\:2,._lg\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._lg\:padding-right\:2,._lg\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._lg\:padding-bottom\:2,._lg\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._lg\:padding-left\:2,._lg\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._lg\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._lg\:padding-top\:3,._lg\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._lg\:padding-right\:3,._lg\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._lg\:padding-bottom\:3,._lg\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._lg\:padding-left\:3,._lg\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._lg\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._lg\:padding-top\:4,._lg\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._lg\:padding-right\:4,._lg\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._lg\:padding-bottom\:4,._lg\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._lg\:padding-left\:4,._lg\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._lg\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._lg\:padding-top\:5,._lg\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._lg\:padding-right\:5,._lg\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._lg\:padding-bottom\:5,._lg\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._lg\:padding-left\:5,._lg\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._lg\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._lg\:padding-top\:6,._lg\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._lg\:padding-right\:6,._lg\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._lg\:padding-bottom\:6,._lg\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._lg\:padding-left\:6,._lg\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._lg\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._lg\:padding-top\:7,._lg\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._lg\:padding-right\:7,._lg\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._lg\:padding-bottom\:7,._lg\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._lg\:padding-left\:7,._lg\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._lg\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._lg\:padding-top\:8,._lg\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._lg\:padding-right\:8,._lg\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._lg\:padding-bottom\:8,._lg\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._lg\:padding-left\:8,._lg\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._lg\:margin\:auto{margin:auto!important}._lg\:margin-top\:auto,._lg\:margin-y\:auto{margin-top:auto!important}._lg\:margin-right\:auto,._lg\:margin-x\:auto{margin-right:auto!important}._lg\:margin-bottom\:auto,._lg\:margin-y\:auto{margin-bottom:auto!important}._lg\:margin-left\:auto,._lg\:margin-x\:auto{margin-left:auto!important}}@media screen and (min-width: 1200px){._xl\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._xl\:margin-top\:1\/2,._xl\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._xl\:margin-right\:1\/2,._xl\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._xl\:margin-bottom\:1\/2,._xl\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._xl\:margin-left\:1\/2,._xl\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._xl\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._xl\:margin-top\:1\/3,._xl\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._xl\:margin-right\:1\/3,._xl\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._xl\:margin-bottom\:1\/3,._xl\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._xl\:margin-left\:1\/3,._xl\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._xl\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._xl\:margin-top\:2\/3,._xl\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._xl\:margin-right\:2\/3,._xl\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._xl\:margin-bottom\:2\/3,._xl\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._xl\:margin-left\:2\/3,._xl\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._xl\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._xl\:margin-top\:1\/4,._xl\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._xl\:margin-right\:1\/4,._xl\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._xl\:margin-bottom\:1\/4,._xl\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._xl\:margin-left\:1\/4,._xl\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._xl\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._xl\:margin-top\:3\/4,._xl\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._xl\:margin-right\:3\/4,._xl\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._xl\:margin-bottom\:3\/4,._xl\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._xl\:margin-left\:3\/4,._xl\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._xl\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._xl\:margin-top\:0,._xl\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._xl\:margin-right\:0,._xl\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._xl\:margin-bottom\:0,._xl\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._xl\:margin-left\:0,._xl\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._xl\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._xl\:margin-top\:1,._xl\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._xl\:margin-right\:1,._xl\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._xl\:margin-bottom\:1,._xl\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._xl\:margin-left\:1,._xl\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._xl\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._xl\:margin-top\:2,._xl\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._xl\:margin-right\:2,._xl\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._xl\:margin-bottom\:2,._xl\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._xl\:margin-left\:2,._xl\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._xl\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._xl\:margin-top\:3,._xl\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._xl\:margin-right\:3,._xl\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._xl\:margin-bottom\:3,._xl\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._xl\:margin-left\:3,._xl\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._xl\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._xl\:margin-top\:4,._xl\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._xl\:margin-right\:4,._xl\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._xl\:margin-bottom\:4,._xl\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._xl\:margin-left\:4,._xl\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._xl\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._xl\:margin-top\:5,._xl\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._xl\:margin-right\:5,._xl\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._xl\:margin-bottom\:5,._xl\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._xl\:margin-left\:5,._xl\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._xl\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._xl\:margin-top\:6,._xl\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._xl\:margin-right\:6,._xl\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._xl\:margin-bottom\:6,._xl\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._xl\:margin-left\:6,._xl\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._xl\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._xl\:margin-top\:7,._xl\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._xl\:margin-right\:7,._xl\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._xl\:margin-bottom\:7,._xl\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._xl\:margin-left\:7,._xl\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._xl\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._xl\:margin-top\:8,._xl\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._xl\:margin-right\:8,._xl\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._xl\:margin-bottom\:8,._xl\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._xl\:margin-left\:8,._xl\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._xl\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._xl\:padding-top\:1\/2,._xl\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._xl\:padding-right\:1\/2,._xl\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._xl\:padding-bottom\:1\/2,._xl\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._xl\:padding-left\:1\/2,._xl\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._xl\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._xl\:padding-top\:1\/3,._xl\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._xl\:padding-right\:1\/3,._xl\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._xl\:padding-bottom\:1\/3,._xl\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._xl\:padding-left\:1\/3,._xl\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._xl\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._xl\:padding-top\:2\/3,._xl\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._xl\:padding-right\:2\/3,._xl\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._xl\:padding-bottom\:2\/3,._xl\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._xl\:padding-left\:2\/3,._xl\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._xl\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._xl\:padding-top\:1\/4,._xl\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._xl\:padding-right\:1\/4,._xl\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._xl\:padding-bottom\:1\/4,._xl\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._xl\:padding-left\:1\/4,._xl\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._xl\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._xl\:padding-top\:3\/4,._xl\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._xl\:padding-right\:3\/4,._xl\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._xl\:padding-bottom\:3\/4,._xl\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._xl\:padding-left\:3\/4,._xl\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._xl\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._xl\:padding-top\:0,._xl\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._xl\:padding-right\:0,._xl\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._xl\:padding-bottom\:0,._xl\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._xl\:padding-left\:0,._xl\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._xl\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._xl\:padding-top\:1,._xl\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._xl\:padding-right\:1,._xl\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._xl\:padding-bottom\:1,._xl\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._xl\:padding-left\:1,._xl\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._xl\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._xl\:padding-top\:2,._xl\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._xl\:padding-right\:2,._xl\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._xl\:padding-bottom\:2,._xl\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._xl\:padding-left\:2,._xl\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._xl\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._xl\:padding-top\:3,._xl\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._xl\:padding-right\:3,._xl\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._xl\:padding-bottom\:3,._xl\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._xl\:padding-left\:3,._xl\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._xl\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._xl\:padding-top\:4,._xl\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._xl\:padding-right\:4,._xl\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._xl\:padding-bottom\:4,._xl\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._xl\:padding-left\:4,._xl\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._xl\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._xl\:padding-top\:5,._xl\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._xl\:padding-right\:5,._xl\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._xl\:padding-bottom\:5,._xl\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._xl\:padding-left\:5,._xl\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._xl\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._xl\:padding-top\:6,._xl\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._xl\:padding-right\:6,._xl\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._xl\:padding-bottom\:6,._xl\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._xl\:padding-left\:6,._xl\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._xl\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._xl\:padding-top\:7,._xl\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._xl\:padding-right\:7,._xl\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._xl\:padding-bottom\:7,._xl\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._xl\:padding-left\:7,._xl\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._xl\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._xl\:padding-top\:8,._xl\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._xl\:padding-right\:8,._xl\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._xl\:padding-bottom\:8,._xl\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._xl\:padding-left\:8,._xl\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._xl\:margin\:auto{margin:auto!important}._xl\:margin-top\:auto,._xl\:margin-y\:auto{margin-top:auto!important}._xl\:margin-right\:auto,._xl\:margin-x\:auto{margin-right:auto!important}._xl\:margin-bottom\:auto,._xl\:margin-y\:auto{margin-bottom:auto!important}._xl\:margin-left\:auto,._xl\:margin-x\:auto{margin-left:auto!important}}@media screen and (min-width: 1400px){._xxl\:margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._xxl\:margin-top\:1\/2,._xxl\:margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._xxl\:margin-right\:1\/2,._xxl\:margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._xxl\:margin-bottom\:1\/2,._xxl\:margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._xxl\:margin-left\:1\/2,._xxl\:margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._xxl\:margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._xxl\:margin-top\:1\/3,._xxl\:margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._xxl\:margin-right\:1\/3,._xxl\:margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._xxl\:margin-bottom\:1\/3,._xxl\:margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._xxl\:margin-left\:1\/3,._xxl\:margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._xxl\:margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._xxl\:margin-top\:2\/3,._xxl\:margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._xxl\:margin-right\:2\/3,._xxl\:margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._xxl\:margin-bottom\:2\/3,._xxl\:margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._xxl\:margin-left\:2\/3,._xxl\:margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._xxl\:margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._xxl\:margin-top\:1\/4,._xxl\:margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._xxl\:margin-right\:1\/4,._xxl\:margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._xxl\:margin-bottom\:1\/4,._xxl\:margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._xxl\:margin-left\:1\/4,._xxl\:margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._xxl\:margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._xxl\:margin-top\:3\/4,._xxl\:margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._xxl\:margin-right\:3\/4,._xxl\:margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._xxl\:margin-bottom\:3\/4,._xxl\:margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._xxl\:margin-left\:3\/4,._xxl\:margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._xxl\:margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._xxl\:margin-top\:0,._xxl\:margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._xxl\:margin-right\:0,._xxl\:margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._xxl\:margin-bottom\:0,._xxl\:margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._xxl\:margin-left\:0,._xxl\:margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._xxl\:margin\:1{margin:1rem!important;margin:var(--spacing)!important}._xxl\:margin-top\:1,._xxl\:margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._xxl\:margin-right\:1,._xxl\:margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._xxl\:margin-bottom\:1,._xxl\:margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._xxl\:margin-left\:1,._xxl\:margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._xxl\:margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._xxl\:margin-top\:2,._xxl\:margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._xxl\:margin-right\:2,._xxl\:margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._xxl\:margin-bottom\:2,._xxl\:margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._xxl\:margin-left\:2,._xxl\:margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._xxl\:margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._xxl\:margin-top\:3,._xxl\:margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._xxl\:margin-right\:3,._xxl\:margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._xxl\:margin-bottom\:3,._xxl\:margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._xxl\:margin-left\:3,._xxl\:margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._xxl\:margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._xxl\:margin-top\:4,._xxl\:margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._xxl\:margin-right\:4,._xxl\:margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._xxl\:margin-bottom\:4,._xxl\:margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._xxl\:margin-left\:4,._xxl\:margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._xxl\:margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._xxl\:margin-top\:5,._xxl\:margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._xxl\:margin-right\:5,._xxl\:margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._xxl\:margin-bottom\:5,._xxl\:margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._xxl\:margin-left\:5,._xxl\:margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._xxl\:margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._xxl\:margin-top\:6,._xxl\:margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._xxl\:margin-right\:6,._xxl\:margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._xxl\:margin-bottom\:6,._xxl\:margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._xxl\:margin-left\:6,._xxl\:margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._xxl\:margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._xxl\:margin-top\:7,._xxl\:margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._xxl\:margin-right\:7,._xxl\:margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._xxl\:margin-bottom\:7,._xxl\:margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._xxl\:margin-left\:7,._xxl\:margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._xxl\:margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._xxl\:margin-top\:8,._xxl\:margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._xxl\:margin-right\:8,._xxl\:margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._xxl\:margin-bottom\:8,._xxl\:margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._xxl\:margin-left\:8,._xxl\:margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._xxl\:padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._xxl\:padding-top\:1\/2,._xxl\:padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._xxl\:padding-right\:1\/2,._xxl\:padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._xxl\:padding-bottom\:1\/2,._xxl\:padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._xxl\:padding-left\:1\/2,._xxl\:padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._xxl\:padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._xxl\:padding-top\:1\/3,._xxl\:padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._xxl\:padding-right\:1\/3,._xxl\:padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._xxl\:padding-bottom\:1\/3,._xxl\:padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._xxl\:padding-left\:1\/3,._xxl\:padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._xxl\:padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._xxl\:padding-top\:2\/3,._xxl\:padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._xxl\:padding-right\:2\/3,._xxl\:padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._xxl\:padding-bottom\:2\/3,._xxl\:padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._xxl\:padding-left\:2\/3,._xxl\:padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._xxl\:padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._xxl\:padding-top\:1\/4,._xxl\:padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._xxl\:padding-right\:1\/4,._xxl\:padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._xxl\:padding-bottom\:1\/4,._xxl\:padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._xxl\:padding-left\:1\/4,._xxl\:padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._xxl\:padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._xxl\:padding-top\:3\/4,._xxl\:padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._xxl\:padding-right\:3\/4,._xxl\:padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._xxl\:padding-bottom\:3\/4,._xxl\:padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._xxl\:padding-left\:3\/4,._xxl\:padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._xxl\:padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._xxl\:padding-top\:0,._xxl\:padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._xxl\:padding-right\:0,._xxl\:padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._xxl\:padding-bottom\:0,._xxl\:padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._xxl\:padding-left\:0,._xxl\:padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._xxl\:padding\:1{padding:1rem!important;padding:var(--spacing)!important}._xxl\:padding-top\:1,._xxl\:padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._xxl\:padding-right\:1,._xxl\:padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._xxl\:padding-bottom\:1,._xxl\:padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._xxl\:padding-left\:1,._xxl\:padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._xxl\:padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._xxl\:padding-top\:2,._xxl\:padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._xxl\:padding-right\:2,._xxl\:padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._xxl\:padding-bottom\:2,._xxl\:padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._xxl\:padding-left\:2,._xxl\:padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._xxl\:padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._xxl\:padding-top\:3,._xxl\:padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._xxl\:padding-right\:3,._xxl\:padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._xxl\:padding-bottom\:3,._xxl\:padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._xxl\:padding-left\:3,._xxl\:padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._xxl\:padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._xxl\:padding-top\:4,._xxl\:padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._xxl\:padding-right\:4,._xxl\:padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._xxl\:padding-bottom\:4,._xxl\:padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._xxl\:padding-left\:4,._xxl\:padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._xxl\:padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._xxl\:padding-top\:5,._xxl\:padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._xxl\:padding-right\:5,._xxl\:padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._xxl\:padding-bottom\:5,._xxl\:padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._xxl\:padding-left\:5,._xxl\:padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._xxl\:padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._xxl\:padding-top\:6,._xxl\:padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._xxl\:padding-right\:6,._xxl\:padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._xxl\:padding-bottom\:6,._xxl\:padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._xxl\:padding-left\:6,._xxl\:padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._xxl\:padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._xxl\:padding-top\:7,._xxl\:padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._xxl\:padding-right\:7,._xxl\:padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._xxl\:padding-bottom\:7,._xxl\:padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._xxl\:padding-left\:7,._xxl\:padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._xxl\:padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._xxl\:padding-top\:8,._xxl\:padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._xxl\:padding-right\:8,._xxl\:padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._xxl\:padding-bottom\:8,._xxl\:padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._xxl\:padding-left\:8,._xxl\:padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._xxl\:margin\:auto{margin:auto!important}._xxl\:margin-top\:auto,._xxl\:margin-y\:auto{margin-top:auto!important}._xxl\:margin-right\:auto,._xxl\:margin-x\:auto{margin-right:auto!important}._xxl\:margin-bottom\:auto,._xxl\:margin-y\:auto{margin-bottom:auto!important}._xxl\:margin-left\:auto,._xxl\:margin-x\:auto{margin-left:auto!important}}._margin\:1\/2{margin:.5rem!important;margin:calc(var(--spacing) * 1 / 2)!important}._margin-top\:1\/2,._margin-y\:1\/2{margin-top:.5rem!important;margin-top:calc(var(--spacing) * 1 / 2)!important}._margin-right\:1\/2,._margin-x\:1\/2{margin-right:.5rem!important;margin-right:calc(var(--spacing) * 1 / 2)!important}._margin-bottom\:1\/2,._margin-y\:1\/2{margin-bottom:.5rem!important;margin-bottom:calc(var(--spacing) * 1 / 2)!important}._margin-left\:1\/2,._margin-x\:1\/2{margin-left:.5rem!important;margin-left:calc(var(--spacing) * 1 / 2)!important}._margin\:1\/3{margin:calc(1rem * 1 / 3)!important;margin:calc(var(--spacing) * 1 / 3)!important}._margin-top\:1\/3,._margin-y\:1\/3{margin-top:calc(1rem * 1 / 3)!important;margin-top:calc(var(--spacing) * 1 / 3)!important}._margin-right\:1\/3,._margin-x\:1\/3{margin-right:calc(1rem * 1 / 3)!important;margin-right:calc(var(--spacing) * 1 / 3)!important}._margin-bottom\:1\/3,._margin-y\:1\/3{margin-bottom:calc(1rem * 1 / 3)!important;margin-bottom:calc(var(--spacing) * 1 / 3)!important}._margin-left\:1\/3,._margin-x\:1\/3{margin-left:calc(1rem * 1 / 3)!important;margin-left:calc(var(--spacing) * 1 / 3)!important}._margin\:2\/3{margin:calc(1rem * 2 / 3)!important;margin:calc(var(--spacing) * 2 / 3)!important}._margin-top\:2\/3,._margin-y\:2\/3{margin-top:calc(1rem * 2 / 3)!important;margin-top:calc(var(--spacing) * 2 / 3)!important}._margin-right\:2\/3,._margin-x\:2\/3{margin-right:calc(1rem * 2 / 3)!important;margin-right:calc(var(--spacing) * 2 / 3)!important}._margin-bottom\:2\/3,._margin-y\:2\/3{margin-bottom:calc(1rem * 2 / 3)!important;margin-bottom:calc(var(--spacing) * 2 / 3)!important}._margin-left\:2\/3,._margin-x\:2\/3{margin-left:calc(1rem * 2 / 3)!important;margin-left:calc(var(--spacing) * 2 / 3)!important}._margin\:1\/4{margin:.25rem!important;margin:calc(var(--spacing) * 1 / 4)!important}._margin-top\:1\/4,._margin-y\:1\/4{margin-top:.25rem!important;margin-top:calc(var(--spacing) * 1 / 4)!important}._margin-right\:1\/4,._margin-x\:1\/4{margin-right:.25rem!important;margin-right:calc(var(--spacing) * 1 / 4)!important}._margin-bottom\:1\/4,._margin-y\:1\/4{margin-bottom:.25rem!important;margin-bottom:calc(var(--spacing) * 1 / 4)!important}._margin-left\:1\/4,._margin-x\:1\/4{margin-left:.25rem!important;margin-left:calc(var(--spacing) * 1 / 4)!important}._margin\:3\/4{margin:.75rem!important;margin:calc(var(--spacing) * 3 / 4)!important}._margin-top\:3\/4,._margin-y\:3\/4{margin-top:.75rem!important;margin-top:calc(var(--spacing) * 3 / 4)!important}._margin-right\:3\/4,._margin-x\:3\/4{margin-right:.75rem!important;margin-right:calc(var(--spacing) * 3 / 4)!important}._margin-bottom\:3\/4,._margin-y\:3\/4{margin-bottom:.75rem!important;margin-bottom:calc(var(--spacing) * 3 / 4)!important}._margin-left\:3\/4,._margin-x\:3\/4{margin-left:.75rem!important;margin-left:calc(var(--spacing) * 3 / 4)!important}._margin\:0{margin:0rem!important;margin:calc(var(--spacing) * 0)!important}._margin-top\:0,._margin-y\:0{margin-top:0rem!important;margin-top:calc(var(--spacing) * 0)!important}._margin-right\:0,._margin-x\:0{margin-right:0rem!important;margin-right:calc(var(--spacing) * 0)!important}._margin-bottom\:0,._margin-y\:0{margin-bottom:0rem!important;margin-bottom:calc(var(--spacing) * 0)!important}._margin-left\:0,._margin-x\:0{margin-left:0rem!important;margin-left:calc(var(--spacing) * 0)!important}._margin\:1{margin:1rem!important;margin:var(--spacing)!important}._margin-top\:1,._margin-y\:1{margin-top:1rem!important;margin-top:var(--spacing)!important}._margin-right\:1,._margin-x\:1{margin-right:1rem!important;margin-right:var(--spacing)!important}._margin-bottom\:1,._margin-y\:1{margin-bottom:1rem!important;margin-bottom:var(--spacing)!important}._margin-left\:1,._margin-x\:1{margin-left:1rem!important;margin-left:var(--spacing)!important}._margin\:2{margin:2rem!important;margin:calc(var(--spacing) * 2)!important}._margin-top\:2,._margin-y\:2{margin-top:2rem!important;margin-top:calc(var(--spacing) * 2)!important}._margin-right\:2,._margin-x\:2{margin-right:2rem!important;margin-right:calc(var(--spacing) * 2)!important}._margin-bottom\:2,._margin-y\:2{margin-bottom:2rem!important;margin-bottom:calc(var(--spacing) * 2)!important}._margin-left\:2,._margin-x\:2{margin-left:2rem!important;margin-left:calc(var(--spacing) * 2)!important}._margin\:3{margin:3rem!important;margin:calc(var(--spacing) * 3)!important}._margin-top\:3,._margin-y\:3{margin-top:3rem!important;margin-top:calc(var(--spacing) * 3)!important}._margin-right\:3,._margin-x\:3{margin-right:3rem!important;margin-right:calc(var(--spacing) * 3)!important}._margin-bottom\:3,._margin-y\:3{margin-bottom:3rem!important;margin-bottom:calc(var(--spacing) * 3)!important}._margin-left\:3,._margin-x\:3{margin-left:3rem!important;margin-left:calc(var(--spacing) * 3)!important}._margin\:4{margin:4rem!important;margin:calc(var(--spacing) * 4)!important}._margin-top\:4,._margin-y\:4{margin-top:4rem!important;margin-top:calc(var(--spacing) * 4)!important}._margin-right\:4,._margin-x\:4{margin-right:4rem!important;margin-right:calc(var(--spacing) * 4)!important}._margin-bottom\:4,._margin-y\:4{margin-bottom:4rem!important;margin-bottom:calc(var(--spacing) * 4)!important}._margin-left\:4,._margin-x\:4{margin-left:4rem!important;margin-left:calc(var(--spacing) * 4)!important}._margin\:5{margin:5rem!important;margin:calc(var(--spacing) * 5)!important}._margin-top\:5,._margin-y\:5{margin-top:5rem!important;margin-top:calc(var(--spacing) * 5)!important}._margin-right\:5,._margin-x\:5{margin-right:5rem!important;margin-right:calc(var(--spacing) * 5)!important}._margin-bottom\:5,._margin-y\:5{margin-bottom:5rem!important;margin-bottom:calc(var(--spacing) * 5)!important}._margin-left\:5,._margin-x\:5{margin-left:5rem!important;margin-left:calc(var(--spacing) * 5)!important}._margin\:6{margin:6rem!important;margin:calc(var(--spacing) * 6)!important}._margin-top\:6,._margin-y\:6{margin-top:6rem!important;margin-top:calc(var(--spacing) * 6)!important}._margin-right\:6,._margin-x\:6{margin-right:6rem!important;margin-right:calc(var(--spacing) * 6)!important}._margin-bottom\:6,._margin-y\:6{margin-bottom:6rem!important;margin-bottom:calc(var(--spacing) * 6)!important}._margin-left\:6,._margin-x\:6{margin-left:6rem!important;margin-left:calc(var(--spacing) * 6)!important}._margin\:7{margin:7rem!important;margin:calc(var(--spacing) * 7)!important}._margin-top\:7,._margin-y\:7{margin-top:7rem!important;margin-top:calc(var(--spacing) * 7)!important}._margin-right\:7,._margin-x\:7{margin-right:7rem!important;margin-right:calc(var(--spacing) * 7)!important}._margin-bottom\:7,._margin-y\:7{margin-bottom:7rem!important;margin-bottom:calc(var(--spacing) * 7)!important}._margin-left\:7,._margin-x\:7{margin-left:7rem!important;margin-left:calc(var(--spacing) * 7)!important}._margin\:8{margin:8rem!important;margin:calc(var(--spacing) * 8)!important}._margin-top\:8,._margin-y\:8{margin-top:8rem!important;margin-top:calc(var(--spacing) * 8)!important}._margin-right\:8,._margin-x\:8{margin-right:8rem!important;margin-right:calc(var(--spacing) * 8)!important}._margin-bottom\:8,._margin-y\:8{margin-bottom:8rem!important;margin-bottom:calc(var(--spacing) * 8)!important}._margin-left\:8,._margin-x\:8{margin-left:8rem!important;margin-left:calc(var(--spacing) * 8)!important}._padding\:1\/2{padding:.5rem!important;padding:calc(var(--spacing) * 1 / 2)!important}._padding-top\:1\/2,._padding-y\:1\/2{padding-top:.5rem!important;padding-top:calc(var(--spacing) * 1 / 2)!important}._padding-right\:1\/2,._padding-x\:1\/2{padding-right:.5rem!important;padding-right:calc(var(--spacing) * 1 / 2)!important}._padding-bottom\:1\/2,._padding-y\:1\/2{padding-bottom:.5rem!important;padding-bottom:calc(var(--spacing) * 1 / 2)!important}._padding-left\:1\/2,._padding-x\:1\/2{padding-left:.5rem!important;padding-left:calc(var(--spacing) * 1 / 2)!important}._padding\:1\/3{padding:calc(1rem * 1 / 3)!important;padding:calc(var(--spacing) * 1 / 3)!important}._padding-top\:1\/3,._padding-y\:1\/3{padding-top:calc(1rem * 1 / 3)!important;padding-top:calc(var(--spacing) * 1 / 3)!important}._padding-right\:1\/3,._padding-x\:1\/3{padding-right:calc(1rem * 1 / 3)!important;padding-right:calc(var(--spacing) * 1 / 3)!important}._padding-bottom\:1\/3,._padding-y\:1\/3{padding-bottom:calc(1rem * 1 / 3)!important;padding-bottom:calc(var(--spacing) * 1 / 3)!important}._padding-left\:1\/3,._padding-x\:1\/3{padding-left:calc(1rem * 1 / 3)!important;padding-left:calc(var(--spacing) * 1 / 3)!important}._padding\:2\/3{padding:calc(1rem * 2 / 3)!important;padding:calc(var(--spacing) * 2 / 3)!important}._padding-top\:2\/3,._padding-y\:2\/3{padding-top:calc(1rem * 2 / 3)!important;padding-top:calc(var(--spacing) * 2 / 3)!important}._padding-right\:2\/3,._padding-x\:2\/3{padding-right:calc(1rem * 2 / 3)!important;padding-right:calc(var(--spacing) * 2 / 3)!important}._padding-bottom\:2\/3,._padding-y\:2\/3{padding-bottom:calc(1rem * 2 / 3)!important;padding-bottom:calc(var(--spacing) * 2 / 3)!important}._padding-left\:2\/3,._padding-x\:2\/3{padding-left:calc(1rem * 2 / 3)!important;padding-left:calc(var(--spacing) * 2 / 3)!important}._padding\:1\/4{padding:.25rem!important;padding:calc(var(--spacing) * 1 / 4)!important}._padding-top\:1\/4,._padding-y\:1\/4{padding-top:.25rem!important;padding-top:calc(var(--spacing) * 1 / 4)!important}._padding-right\:1\/4,._padding-x\:1\/4{padding-right:.25rem!important;padding-right:calc(var(--spacing) * 1 / 4)!important}._padding-bottom\:1\/4,._padding-y\:1\/4{padding-bottom:.25rem!important;padding-bottom:calc(var(--spacing) * 1 / 4)!important}._padding-left\:1\/4,._padding-x\:1\/4{padding-left:.25rem!important;padding-left:calc(var(--spacing) * 1 / 4)!important}._padding\:3\/4{padding:.75rem!important;padding:calc(var(--spacing) * 3 / 4)!important}._padding-top\:3\/4,._padding-y\:3\/4{padding-top:.75rem!important;padding-top:calc(var(--spacing) * 3 / 4)!important}._padding-right\:3\/4,._padding-x\:3\/4{padding-right:.75rem!important;padding-right:calc(var(--spacing) * 3 / 4)!important}._padding-bottom\:3\/4,._padding-y\:3\/4{padding-bottom:.75rem!important;padding-bottom:calc(var(--spacing) * 3 / 4)!important}._padding-left\:3\/4,._padding-x\:3\/4{padding-left:.75rem!important;padding-left:calc(var(--spacing) * 3 / 4)!important}._padding\:0{padding:0rem!important;padding:calc(var(--spacing) * 0)!important}._padding-top\:0,._padding-y\:0{padding-top:0rem!important;padding-top:calc(var(--spacing) * 0)!important}._padding-right\:0,._padding-x\:0{padding-right:0rem!important;padding-right:calc(var(--spacing) * 0)!important}._padding-bottom\:0,._padding-y\:0{padding-bottom:0rem!important;padding-bottom:calc(var(--spacing) * 0)!important}._padding-left\:0,._padding-x\:0{padding-left:0rem!important;padding-left:calc(var(--spacing) * 0)!important}._padding\:1{padding:1rem!important;padding:var(--spacing)!important}._padding-top\:1,._padding-y\:1{padding-top:1rem!important;padding-top:var(--spacing)!important}._padding-right\:1,._padding-x\:1{padding-right:1rem!important;padding-right:var(--spacing)!important}._padding-bottom\:1,._padding-y\:1{padding-bottom:1rem!important;padding-bottom:var(--spacing)!important}._padding-left\:1,._padding-x\:1{padding-left:1rem!important;padding-left:var(--spacing)!important}._padding\:2{padding:2rem!important;padding:calc(var(--spacing) * 2)!important}._padding-top\:2,._padding-y\:2{padding-top:2rem!important;padding-top:calc(var(--spacing) * 2)!important}._padding-right\:2,._padding-x\:2{padding-right:2rem!important;padding-right:calc(var(--spacing) * 2)!important}._padding-bottom\:2,._padding-y\:2{padding-bottom:2rem!important;padding-bottom:calc(var(--spacing) * 2)!important}._padding-left\:2,._padding-x\:2{padding-left:2rem!important;padding-left:calc(var(--spacing) * 2)!important}._padding\:3{padding:3rem!important;padding:calc(var(--spacing) * 3)!important}._padding-top\:3,._padding-y\:3{padding-top:3rem!important;padding-top:calc(var(--spacing) * 3)!important}._padding-right\:3,._padding-x\:3{padding-right:3rem!important;padding-right:calc(var(--spacing) * 3)!important}._padding-bottom\:3,._padding-y\:3{padding-bottom:3rem!important;padding-bottom:calc(var(--spacing) * 3)!important}._padding-left\:3,._padding-x\:3{padding-left:3rem!important;padding-left:calc(var(--spacing) * 3)!important}._padding\:4{padding:4rem!important;padding:calc(var(--spacing) * 4)!important}._padding-top\:4,._padding-y\:4{padding-top:4rem!important;padding-top:calc(var(--spacing) * 4)!important}._padding-right\:4,._padding-x\:4{padding-right:4rem!important;padding-right:calc(var(--spacing) * 4)!important}._padding-bottom\:4,._padding-y\:4{padding-bottom:4rem!important;padding-bottom:calc(var(--spacing) * 4)!important}._padding-left\:4,._padding-x\:4{padding-left:4rem!important;padding-left:calc(var(--spacing) * 4)!important}._padding\:5{padding:5rem!important;padding:calc(var(--spacing) * 5)!important}._padding-top\:5,._padding-y\:5{padding-top:5rem!important;padding-top:calc(var(--spacing) * 5)!important}._padding-right\:5,._padding-x\:5{padding-right:5rem!important;padding-right:calc(var(--spacing) * 5)!important}._padding-bottom\:5,._padding-y\:5{padding-bottom:5rem!important;padding-bottom:calc(var(--spacing) * 5)!important}._padding-left\:5,._padding-x\:5{padding-left:5rem!important;padding-left:calc(var(--spacing) * 5)!important}._padding\:6{padding:6rem!important;padding:calc(var(--spacing) * 6)!important}._padding-top\:6,._padding-y\:6{padding-top:6rem!important;padding-top:calc(var(--spacing) * 6)!important}._padding-right\:6,._padding-x\:6{padding-right:6rem!important;padding-right:calc(var(--spacing) * 6)!important}._padding-bottom\:6,._padding-y\:6{padding-bottom:6rem!important;padding-bottom:calc(var(--spacing) * 6)!important}._padding-left\:6,._padding-x\:6{padding-left:6rem!important;padding-left:calc(var(--spacing) * 6)!important}._padding\:7{padding:7rem!important;padding:calc(var(--spacing) * 7)!important}._padding-top\:7,._padding-y\:7{padding-top:7rem!important;padding-top:calc(var(--spacing) * 7)!important}._padding-right\:7,._padding-x\:7{padding-right:7rem!important;padding-right:calc(var(--spacing) * 7)!important}._padding-bottom\:7,._padding-y\:7{padding-bottom:7rem!important;padding-bottom:calc(var(--spacing) * 7)!important}._padding-left\:7,._padding-x\:7{padding-left:7rem!important;padding-left:calc(var(--spacing) * 7)!important}._padding\:8{padding:8rem!important;padding:calc(var(--spacing) * 8)!important}._padding-top\:8,._padding-y\:8{padding-top:8rem!important;padding-top:calc(var(--spacing) * 8)!important}._padding-right\:8,._padding-x\:8{padding-right:8rem!important;padding-right:calc(var(--spacing) * 8)!important}._padding-bottom\:8,._padding-y\:8{padding-bottom:8rem!important;padding-bottom:calc(var(--spacing) * 8)!important}._padding-left\:8,._padding-x\:8{padding-left:8rem!important;padding-left:calc(var(--spacing) * 8)!important}._margin\:auto{margin:auto!important}._margin-top\:auto,._margin-y\:auto{margin-top:auto!important}._margin-right\:auto,._margin-x\:auto{margin-right:auto!important}._margin-bottom\:auto,._margin-y\:auto{margin-bottom:auto!important}._margin-left\:auto,._margin-x\:auto{margin-left:auto!important}._xs\:text\:left,._xs\:text-align\:left{text-align:left!important}._xs\:text\:right,._xs\:text-align\:right{text-align:right!important}._xs\:text\:center,._xs\:text-align\:center{text-align:center!important}._xs\:text\:wrap,._xs\:white-space\:normal{white-space:normal!important}._xs\:text\:nowrap,._xs\:white-space\:nowrap{white-space:nowrap!important}._xs\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media screen and (min-width: 576px){._sm\:text\:left,._sm\:text-align\:left{text-align:left!important}._sm\:text\:right,._sm\:text-align\:right{text-align:right!important}._sm\:text\:center,._sm\:text-align\:center{text-align:center!important}._sm\:text\:wrap,._sm\:white-space\:normal{white-space:normal!important}._sm\:text\:nowrap,._sm\:white-space\:nowrap{white-space:nowrap!important}._sm\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width: 768px){._md\:text\:left,._md\:text-align\:left{text-align:left!important}._md\:text\:right,._md\:text-align\:right{text-align:right!important}._md\:text\:center,._md\:text-align\:center{text-align:center!important}._md\:text\:wrap,._md\:white-space\:normal{white-space:normal!important}._md\:text\:nowrap,._md\:white-space\:nowrap{white-space:nowrap!important}._md\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width: 992px){._lg\:text\:left,._lg\:text-align\:left{text-align:left!important}._lg\:text\:right,._lg\:text-align\:right{text-align:right!important}._lg\:text\:center,._lg\:text-align\:center{text-align:center!important}._lg\:text\:wrap,._lg\:white-space\:normal{white-space:normal!important}._lg\:text\:nowrap,._lg\:white-space\:nowrap{white-space:nowrap!important}._lg\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width: 1200px){._xl\:text\:left,._xl\:text-align\:left{text-align:left!important}._xl\:text\:right,._xl\:text-align\:right{text-align:right!important}._xl\:text\:center,._xl\:text-align\:center{text-align:center!important}._xl\:text\:wrap,._xl\:white-space\:normal{white-space:normal!important}._xl\:text\:nowrap,._xl\:white-space\:nowrap{white-space:nowrap!important}._xl\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width: 1400px){._xxl\:text\:left,._xxl\:text-align\:left{text-align:left!important}._xxl\:text\:right,._xxl\:text-align\:right{text-align:right!important}._xxl\:text\:center,._xxl\:text-align\:center{text-align:center!important}._xxl\:text\:wrap,._xxl\:white-space\:normal{white-space:normal!important}._xxl\:text\:nowrap,._xxl\:white-space\:nowrap{white-space:nowrap!important}._xxl\:text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}._text\:left,._text-align\:left{text-align:left!important}._text\:right,._text-align\:right{text-align:right!important}._text\:center,._text-align\:center{text-align:center!important}._text\:wrap,._white-space\:normal{white-space:normal!important}._text\:nowrap,._white-space\:nowrap{white-space:nowrap!important}._text\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._text\:justify,._text-align\:justify{text-align:justify!important}._text\:lowercase,._text-transform\:lowercase{text-transform:lowercase!important}._text\:uppercase,._text-transform\:uppercase{text-transform:uppercase!important}._text\:capitalize,._text-transform\:capitalize{text-transform:capitalize!important}._text\:extralight,._font-weight\:extralight{font-weight:200!important;font-weight:var(--font-weight--extralight)!important}._text\:light,._font-weight\:light{font-weight:300!important;font-weight:var(--font-weight--light)!important}._text\:lighter,._font-weight\:lighter{font-weight:lighter!important;font-weight:var(--font-weight--lighter)!important}._text\:normal,._font-weight\:normal{font-weight:400!important;font-weight:var(--font-weight--normal)!important}._text\:semibold,._font-weight\:semibold{font-weight:600!important;font-weight:var(--font-weight--semibold)!important}._text\:bold,._font-weight\:bold{font-weight:700!important;font-weight:var(--font-weight--bold)!important}._text\:bolder,._font-weight\:bolder{font-weight:bolder!important;font-weight:var(--font-weight--bolder)!important}._text\:black,._font-weight\:black{font-weight:900!important;font-weight:var(--font-weight--black)!important}._text\:italic,._font-style\:italic{font-style:italic!important}._text\:monospace,._font-family\:monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace)}._text\:muted,._color-muted{color:#6d8288!important;color:var(--text-muted)!important}._text\:hide{text-indent:-10000px}._text\:break-word{word-break:break-word!important;word-wrap:break-word!important}._text\:reset{color:inherit!important}._text-decoration\:none{-webkit-text-decoration:none!important;text-decoration:none!important}._text\:xs,._font-size\:xs{font-size:calc(1rem * (1 / (1.2 * 1.2)));font-size:calc(1rem * calc(1 / 1.44));font-size:var(--font-size--xs)}._text\:sm,._font-size\:sm{font-size:calc(1rem * (1 / 1.2));font-size:calc(1rem * calc(1 / 1.2));font-size:var(--font-size--sm)}._text\:md,._font-size\:md{font-size:1rem;font-size:var(--font-size--md)}._text\:lg,._font-size\:lg{font-size:1.2rem;font-size:var(--font-size--lg)}._text\:xl,._font-size\:xl{font-size:1.44rem;font-size:var(--font-size--xl)}[class*="_xs:visible"]{display:none!important}._xs\:visible,._xs\:visible\:block{display:block!important}._xs\:visible\:inline-block{display:inline-block!important}._xs\:visible\:inline{display:inline!important}._xs\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._xs\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}._xs\:hidden,[class*="_sm:visible"]{display:none!important}@media screen and (min-width: 576px){._sm\:visible{display:block!important}}@media screen and (min-width: 576px){._sm\:visible\:block{display:block!important}}@media screen and (min-width: 576px){._sm\:visible\:inline-block{display:inline-block!important}}@media screen and (min-width: 576px){._sm\:visible\:inline{display:inline!important}}@media screen and (min-width: 576px){._sm\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}}@media screen and (min-width: 576px){._sm\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 576px){._sm\:hidden{display:none!important}}[class*="_md:visible"]{display:none!important}@media screen and (min-width: 768px){._md\:visible{display:block!important}}@media screen and (min-width: 768px){._md\:visible\:block{display:block!important}}@media screen and (min-width: 768px){._md\:visible\:inline-block{display:inline-block!important}}@media screen and (min-width: 768px){._md\:visible\:inline{display:inline!important}}@media screen and (min-width: 768px){._md\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}}@media screen and (min-width: 768px){._md\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 768px){._md\:hidden{display:none!important}}[class*="_lg:visible"]{display:none!important}@media screen and (min-width: 992px){._lg\:visible{display:block!important}}@media screen and (min-width: 992px){._lg\:visible\:block{display:block!important}}@media screen and (min-width: 992px){._lg\:visible\:inline-block{display:inline-block!important}}@media screen and (min-width: 992px){._lg\:visible\:inline{display:inline!important}}@media screen and (min-width: 992px){._lg\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}}@media screen and (min-width: 992px){._lg\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 992px){._lg\:hidden{display:none!important}}[class*="_xl:visible"]{display:none!important}@media screen and (min-width: 1200px){._xl\:visible{display:block!important}}@media screen and (min-width: 1200px){._xl\:visible\:block{display:block!important}}@media screen and (min-width: 1200px){._xl\:visible\:inline-block{display:inline-block!important}}@media screen and (min-width: 1200px){._xl\:visible\:inline{display:inline!important}}@media screen and (min-width: 1200px){._xl\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}}@media screen and (min-width: 1200px){._xl\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 1200px){._xl\:hidden{display:none!important}}[class*="_xxl:visible"]{display:none!important}@media screen and (min-width: 1400px){._xxl\:visible{display:block!important}}@media screen and (min-width: 1400px){._xxl\:visible\:block{display:block!important}}@media screen and (min-width: 1400px){._xxl\:visible\:inline-block{display:inline-block!important}}@media screen and (min-width: 1400px){._xxl\:visible\:inline{display:inline!important}}@media screen and (min-width: 1400px){._xxl\:visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}}@media screen and (min-width: 1400px){._xxl\:visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media screen and (min-width: 1400px){._xxl\:hidden{display:none!important}}[class*=_visible]{display:none!important}._visible,._visible\:block{display:block!important}._visible\:inline-block{display:inline-block!important}._visible\:inline{display:inline!important}._visible\:flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}._visible\:inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}._hidden{display:none!important}._visibility\:visible{visibility:visible!important}._visibility\:hidden{visibility:hidden!important}*,*:before,*:after{-webkit-box-sizing:border-box;box-sizing:border-box}html{-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-overflow-style:scrollbar}body{margin:0;color:#364144;color:var(--body--color);background-color:#fff;background-color:var(--body--background)}body.inkline{-webkit-transition-property:background-color,color;transition-property:background-color,color;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing)}body.inkline.-dark{--border-color: var(--border-color--dark);--body--color: var(--body--color--dark);--body--background: var(--body--background--dark)}@-ms-viewport{width:device-width}article,aside,footer,header,nav,section,figcaption,figure,main{display:block}figure{margin:0 0 1rem}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}a{color:#178bb2;color:var(--link--color);text-decoration:none;-webkit-text-decoration:var(--link--decoration);text-decoration:var(--link--decoration);-webkit-text-decoration-skip:objects;background-color:transparent}a:hover,a:focus,a:active{color:#26b4e3;color:var(--link--color--hover);text-decoration:underline;-webkit-text-decoration:var(--link--decoration--hover);text-decoration:var(--link--decoration--hover);outline-width:0}a:not([href]):not([tabindex]){color:inherit;-webkit-text-decoration:none;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;-webkit-text-decoration:none;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;-webkit-text-decoration:underline dotted;cursor:help;border-bottom:0}ol,ul,dl{margin-top:0;margin-bottom:1rem;margin-bottom:var(--spacing)}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700;font-weight:var(--font-weight--bold)}dd{margin-bottom:.5rem;margin-bottom:calc(var(--spacing) * 1 / 2);margin-left:0}address{margin-bottom:1rem;margin-bottom:var(--spacing);font-style:normal;line-height:inherit}b,strong{font-weight:inherit;font-weight:bolder}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace);font-size:1rem}dfn{font-style:italic}small{font-size:80%}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none;vertical-align:middle}svg:not(:root){overflow:hidden}progress{display:inline-block;vertical-align:baseline}details,menu{display:block}summary{display:list-item}output{display:inline-block}canvas{display:inline-block}template{display:none}[hidden]{display:none!important}pre{margin-top:0;margin-bottom:1rem;margin-bottom:var(--spacing);overflow:auto}table{border-collapse:collapse}caption{text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}fieldset{min-width:0;padding:0;margin:0;border:none}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;margin-bottom:calc(var(--spacing) * 1 / 2);font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}label{display:inline-block;margin-bottom:.5rem;margin-bottom:calc(var(--spacing) * 1 / 2)}textarea{overflow:auto;resize:vertical}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace);padding:.15rem .4rem;padding:var(--code--padding);font-size:90%;font-size:var(--code--font-size);color:#bd4147;color:var(--code--color);background-color:#e8eced;background-color:var(--code--background);border-radius:.25rem;border-radius:var(--border-radius-md);-webkit-transition-property:background-color,color,text-shadow;transition-property:background-color,color,text-shadow;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing)}a>code{padding:0;color:inherit;background-color:inherit}.inkline.-dark code{background-color:#364144;background-color:var(--code--background--dark);color:#ff6d6b;color:var(--code--color--dark)}kbd{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace);padding:.15rem .4rem;padding:var(--kbd--padding);font-size:90%;font-size:var(--kbd--font-size);color:#fff;color:var(--kbd--color);background-color:#1b2022;background-color:var(--kbd--background);border-radius:calc(.25rem * (1 / 1.2)) calc(.25rem * (1 / 1.2)) calc(.25rem * (1 / 1.2)) calc(.25rem * (1 / 1.2));border-radius:calc(.25rem * calc(1 / 1.2)) calc(.25rem * calc(1 / 1.2)) calc(.25rem * calc(1 / 1.2)) calc(.25rem * calc(1 / 1.2));border-radius:var(--border-radius-sm);-webkit-box-shadow:inset 0 -.1rem 0 rgba(0,0,0,.25);box-shadow:inset 0 -.1rem #00000040;-webkit-box-shadow:var(--kbd--box-shadow);box-shadow:var(--kbd--box-shadow)}kbd kbd{padding:0;font-size:100%;font-weight:var(--kbd-nested-font-weight);-webkit-box-shadow:none;box-shadow:none}pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace);display:block;margin-top:0;margin-bottom:1rem;font-size:90%;font-size:var(--pre--font-size);color:#1b2022;color:var(--pre--color);-webkit-transition-property:background-color,color,text-shadow;transition-property:background-color,color,text-shadow;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing)}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0;-webkit-transition-property:none;transition-property:none}pre.-scrollable{max-height:340px;max-height:var(--pre--scrollable-max-height);overflow-y:scroll}.inkline.-dark pre{color:#fff;color:var(--pre--color--dark)}.inkline.-dark pre code{color:inherit;background-color:transparent}samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-family-primary--monospace)}.figure{display:inline-block}.figure>.img{margin-bottom:.5rem;margin-bottom:var(--figure--image--margin-bottom);line-height:1}.figure>.caption{font-size:90%;font-size:var(--figure--caption--font-size);color:#6d8288;color:var(--figure--caption--color)}.img.-responsive,.image.-responsive,.img.-polaroid,.image.-polaroid,.img.-thumbnail,.image.-thumbnail{max-width:100%;height:auto}.img.-polaroid,.image.-polaroid,.img.-thumbnail,.image.-thumbnail{padding:.5rem;padding:var(--thumbnail--padding);background-color:#fff;background-color:var(--thumbnail--background);border-width:1px 1px 1px 1px;border-width:var(--thumbnail--border-width);border-style:solid;border-style:var(--border-style);border-color:#a4b2b6;border-color:var(--thumbnail--border-color);border-radius:.25rem;border-radius:var(--thumbnail--border-radius);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-webkit-transition:var(--thumbnail--transition);transition:var(--thumbnail--transition);-webkit-box-shadow:0 1px 2px rgba(hsl(0deg,0%,0%),.075);box-shadow:0 1px 2px rgba(hsl(0deg,0%,0%),.075);-webkit-box-shadow:var(--thumbnail--box-shadow);box-shadow:var(--thumbnail--box-shadow)}.img.-fluid,.image.-fluid{width:100%;height:auto}.img[src$=".svg"],.image[src$=".svg"]{width:100% \	}.img.-polaroid,.image.-polaroid{padding-bottom:3rem;padding-bottom:var(--polaroid--padding)}body.-modal{overflow:hidden}@media print{*,*:before,*:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{-webkit-text-decoration:underline;text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre{white-space:pre-wrap!important}pre,blockquote{border:1px solid #999999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.expand-enter-active,.expand-leave-active{-webkit-transition-property:height;transition-property:height;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-duration:var(--transition-duration);transition-duration:var(--transition-duration);-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-timing-function:var(--transition-easing);transition-timing-function:var(--transition-easing);overflow:hidden}.expand-enter-from,.expand-leave-to{height:0}:root{--fade-in-transition: all .3s cubic-bezier(.55, 0, .1, 1)}.fade-in-transition-enter-active,.fade-in-transition-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1);-webkit-transition:var(--fade-in-transition);transition:var(--fade-in-transition)}.fade-in-transition-enter-from,.fade-in-transition-leave-active{opacity:0}:root{--fade-in-linear-transition: opacity .3s cubic-bezier(.23, 1, .32, 1)}.fade-in-linear-transition-enter-active,.fade-in-linear-transition-leave-active{-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1);-webkit-transition:var(--fade-in-linear-transition);transition:var(--fade-in-linear-transition)}.fade-in-linear-transition-enter-from,.fade-in-linear-transition-leave-from,.fade-in-linear-transition-leave-active{opacity:0}:root{--slide-in-right-transition: transform .3s ease}.slide-in-right-transition-enter-active,.slide-in-right-transition-leave-active{-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;-webkit-transition:var(--slide-in-right-transition);transition:var(--slide-in-right-transition);-webkit-transform-origin:left;transform-origin:left}.slide-in-right-transition-enter-from,.slide-in-right-transition-leave-to{-webkit-transform:translateX(-100%);transform:translate(-100%)}.slide-in-right-transition-enter-to,.slide-in-right-transition-leave-from{-webkit-transform:translateX(0);transform:translate(0)}:root{--zoom-in-bottom-transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1)}.zoom-in-bottom-transition-enter-active,.zoom-in-bottom-transition-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transition:var(--zoom-in-bottom-transition);transition:var(--zoom-in-bottom-transition);-webkit-transform-origin:center bottom;transform-origin:center bottom}.zoom-in-bottom-transition-enter-from,.zoom-in-bottom-transition-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}:root{--zoom-in-center-transition: all .3s cubic-bezier(.55, 0, .1, 1)}.zoom-in-center-transition-enter-active,.zoom-in-center-transition-leave-active{opacity:1;-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1);-webkit-transition:var(--zoom-in-center-transition);transition:var(--zoom-in-center-transition);-webkit-transform-origin:center center;transform-origin:center center}.zoom-in-center-transition-enter-from,.zoom-in-center-transition-leave-active{opacity:0;-webkit-transform:scale(0,0);transform:scale(0)}:root{--zoom-in-top-transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1)}.zoom-in-top-transition-enter-active,.zoom-in-top-transition-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transition:var(--zoom-in-top-transition);transition:var(--zoom-in-top-transition);-webkit-transform-origin:center top;transform-origin:center top}.zoom-in-top-transition-enter-from,.zoom-in-top-transition-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}:root{--zoom-in-left-transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1)}.zoom-in-left-transition-enter-active,.zoom-in-left-transition-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transition:var(--zoom-in-left-transition);transition:var(--zoom-in-left-transition);-webkit-transform-origin:top left;transform-origin:top left}.zoom-in-left-transition-enter-from,.zoom-in-left-transition-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45)}:root{--zoom-in-right-transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1)}.zoom-in-right-transition-enter-active,.zoom-in-right-transition-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transition:var(--zoom-in-right-transition);transition:var(--zoom-in-right-transition);-webkit-transform-origin:top right;transform-origin:top right}.zoom-in-right-transition-enter-from,.zoom-in-right-transition-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45)}.blockquote{margin:0 0 1rem;margin:0 0 var(--blockquote--margin);font-size:1.2rem;font-size:var(--blockquote--font-size)}.blockquote.-left{text-align:left}.blockquote.-left.-bordered{padding-left:1rem;padding-left:var(--spacing);border-left:3px solid hsl(194,11%,76%);border-left:var(--blockquote--border)}.blockquote.-center{text-align:center}.blockquote.-right{text-align:right}.blockquote.-right.-bordered{padding-right:1rem;padding-right:var(--blockquote--padding--bordered);border-right:3px solid hsl(194,11%,76%);border-right:var(--blockquote--border)}.blockquote>p{margin-bottom:0}.blockquote>footer,.blockquote>.footer{display:block;font-size:80%;color:#6d8288;color:var(--blockquote--footer--color)}.blockquote>footer:before,.blockquote>.footer:before{content:"— "}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:1rem;font-size:var(--font-size--md);font-weight:400;font-weight:var(--font-weight--normal);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--font-family-primary--base);line-height:1.5;line-height:var(--line-height);letter-spacing:0;letter-spacing:var(--letter-spacing);text-align:left;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}h1,.h1,.d1{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h1,.h1{font-size:2.48832rem;font-size:var(--h1--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d1{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * (((((1.2 * 1.2) * 1.2) * 1.2) * 1.2) * 1.2));font-size:calc(2.48832rem * calc(2.48832 * 1.2));font-size:var(--d1--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}h2,.h2,.d2{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h2,.h2{font-size:2.0736rem;font-size:var(--h2--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d2{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2));font-size:calc(2.48832rem * 2.48832);font-size:var(--d2--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}h3,.h3,.d3{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h3,.h3{font-size:1.728rem;font-size:var(--h3--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d3{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * (((1.2 * 1.2) * 1.2) * 1.2));font-size:calc(2.48832rem * 2.0736);font-size:var(--d3--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}h4,.h4,.d4{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h4,.h4{font-size:1.44rem;font-size:var(--h4--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d4{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * ((1.2 * 1.2) * 1.2));font-size:calc(2.48832rem * 1.728);font-size:var(--d4--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}h5,.h5,.d5{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h5,.h5{font-size:1.2rem;font-size:var(--h5--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d5{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * (1.2 * 1.2));font-size:calc(2.48832rem * 1.44);font-size:var(--d5--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}h6,.h6,.d6{margin-top:2.5rem;margin-top:var(--heading--margin-top);margin-bottom:1rem;margin-bottom:var(--heading--margin-bottom);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-family:var(--heading--font-family);color:inherit;color:var(--heading--color)}h6,.h6{font-size:1rem;font-size:var(--h6--font-size);font-weight:600;font-weight:var(--heading--font-weight);line-height:1.1;line-height:var(--heading--line-height)}.d6{font-size:calc((1rem * ((((1.2 * 1.2) * 1.2) * 1.2) * 1.2)) * 1.2);font-size:calc(2.48832rem * 1.2);font-size:var(--d6--font-size);font-weight:600;font-weight:var(--display--font-weight);line-height:1.1;line-height:var(--display--line-height)}ul>.item,ul>li,ol>.item,ol>li,dl>.item,dl>li,.list>.item,.list>li{margin-bottom:.5rem;margin-bottom:var(--list--item--margin-bottom)}ul.-unstyled,ul._list\:unstyled,ol.-unstyled,ol._list\:unstyled,dl.-unstyled,dl._list\:unstyled,.list.-unstyled,.list._list\:unstyled,ul.-inline,ul._list\:inline,ol.-inline,ol._list\:inline,dl.-inline,dl._list\:inline,.list.-inline,.list._list\:inline{padding-left:0;list-style:none}ul.-inline>.item,ul.-inline>li,ul._list\:inline>.item,ul._list\:inline>li,ol.-inline>.item,ol.-inline>li,ol._list\:inline>.item,ol._list\:inline>li,dl.-inline>.item,dl.-inline>li,dl._list\:inline>.item,dl._list\:inline>li,.list.-inline>.item,.list.-inline>li,.list._list\:inline>.item,.list._list\:inline>li{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-bottom:0}ul.-inline>.item:not(:last-child),ul.-inline>li:not(:last-child),ul._list\:inline>.item:not(:last-child),ul._list\:inline>li:not(:last-child),ol.-inline>.item:not(:last-child),ol.-inline>li:not(:last-child),ol._list\:inline>.item:not(:last-child),ol._list\:inline>li:not(:last-child),dl.-inline>.item:not(:last-child),dl.-inline>li:not(:last-child),dl._list\:inline>.item:not(:last-child),dl._list\:inline>li:not(:last-child),.list.-inline>.item:not(:last-child),.list.-inline>li:not(:last-child),.list._list\:inline>.item:not(:last-child),.list._list\:inline>li:not(:last-child){margin-right:1rem;margin-right:var(--list--item--padding--inline)}hr{margin:1rem 0;margin:var(--hr--margin) 0;border:none;border-top:1px solid hsla(0deg,0%,0%,.1);border-top:var(--hr--border-width) var(--hr--border-style) var(--hr--border-color)}small,.small{font-size:calc(1rem * (1 / 1.2));font-size:calc(1rem * calc(1 / 1.2));font-size:var(--small--font-size);font-weight:400;font-weight:var(--small--font-weight)}mark,.mark{padding:.2rem .4rem;padding:var(--mark--padding);background-color:#fff8e5;background-color:var(--mark--background-color);color:#364144;color:var(--mark--color)}.lead{font-size:1.2rem;font-size:var(--lead--font-size);font-weight:300;font-weight:var(--lead--font-weight)}.initialism{font-size:90%;text-transform:uppercase}
diff --git a/packages/modules/display_themes/cards/web/assets/vendor-inkline-Ce5aFAnW.js b/packages/modules/display_themes/cards/web/assets/vendor-inkline-Ce5aFAnW.js
new file mode 100644
index 0000000000..f0ab71724e
--- /dev/null
+++ b/packages/modules/display_themes/cards/web/assets/vendor-inkline-Ce5aFAnW.js
@@ -0,0 +1 @@
+import{h as tt,w as kt,r as wt,d as p,a as It,b as k,v as C,o,e as l,f as d,i as m,j as f,m as h,k as T,l as V,n as b,p as X,q as A,s as I,t as M,u as Y,T as L,x as F,y as z,z as Z,F as G,A as _,c as se,B as Ct,C as St,D as Bt,E as zt,G as At}from"./vendor-CZ1MGz7j.js";const c=(e,t)=>{const s=e.__vccOpts||e;for(const[i,a]of t)s[i]=a;return s};function g(e){let t=e.color;return t||(e.$inkline.options.colorMode==="system"?t=typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t=e.$inkline.options.colorMode),{[`-${t}`]:!0}}function st(e,t){if(!e||!t)return!1;if(t.indexOf(" ")!==-1)throw new Error("Class name should not contain spaces.");return e.classList?e.classList.contains(t):(" "+e.className+" ").indexOf(" "+t+" ")>-1}function Me(e,t){if(!e)return;let s=e.className;const i=(t||"").split(" ");for(let a=0,r=i.length;a<r;a++){const n=i[a];n&&(e.classList?e.classList.add(n):st(e,n)||(s+=" "+n))}e.classList||(e.className=s)}function We(e,t="camel"){const s=t==="camel"?/([A-Z])/g:/_([a-zA-Z])/g;return e.replace(s,(i,a)=>"-"+a.toLowerCase())}function it(e,t){return["string","number"].indexOf(typeof t)>-1&&t!==""?`${We(e)}-${t}`:We(e)}function Pe(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Q(e){if(Array.isArray(e)){const t=e.slice().map(Q),s=Object.keys(t);return Object.keys(e).filter(i=>!s.includes(i)).forEach(i=>{t[i]=e[i]}),t}else if(typeof e=="object")return Object.keys(e).reduce((t,s)=>(t[s]=Q(e[s]),t),{});return e}function Vt(e,t){let s;return function(...i){const a=this;clearTimeout(s),s=setTimeout(()=>e.apply(a,i),t)}}function Fe(e){if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return e.type!=="hidden"&&e.type!=="file";case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}}function Nt(e){if(!Fe(e))return!1;try{e.focus()}catch{}return typeof window<"u"&&document.activeElement===e}function at(e){for(let t=0;t<e.childNodes.length;t++){const s=e.childNodes[t];if(Nt(s)||at(s))return!0}return!1}function q(e,t){if(!e||!t||typeof window>"u")return;if(e.currentStyle)return e.currentStyle[t];const s=window.getComputedStyle(e,null);return s.getPropertyValue?s.getPropertyValue(t):s[t]}const nt=e=>e instanceof Function,x={xs:[0,575],sm:[576,767],md:[768,991],lg:[992,1199],xl:[1200,1399],xxl:[1400,1/0]},je=["","xs","sm","md","lg","xl","xxl"],Ot={tab:["Tab",9],enter:["Enter",13],esc:["Escape",27],space:[" ","Space",32],left:["ArrowLeft","Left",37],up:["ArrowUp","Up",38],right:["ArrowRight","Right",39],down:["ArrowDown","Down",40]},qe={pristine:!0,dirty:!1,untouched:!0,touched:!1,valid:!0,invalid:!1,errors:[]},Lt={value:"",validators:[]},ot=["value","validators","pristine","dirty","untouched","touched","valid","invalid","errors"],v=(e,t)=>{const s=t.key||t.keyIdentifier||t.keyCode;return Ot[e].indexOf(s)!==-1};function Dt(e){return!!e&&!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function Tt(e,t){if(!t)return[{text:e}];const s=[],i=e.toLowerCase(),a=t.toLowerCase();let r=0,n=0;for(;n<e.length;){const $=i.indexOf(a,n),N=$>=0;n=N?$:e.length,n&&(s.push({text:e.substring(r,n)}),r=n),N&&(n+=t.length,s.push({text:e.substring(r,n),marked:!0}),r=n)}return s}function Pt(e){const t={};return(...s)=>{const i=JSON.stringify(s);return i in t||(t[i]=e(...s)),t[i]}}function Et(e,t,s){e&&t&&e.removeEventListener(t,s,!1)}function Rt(e,t,s){e&&t&&e.detachEvent("on"+t,s)}const Mt=()=>typeof window>"u"?()=>{}:window.document.removeEventListener?Et:Rt,D=Mt();function Ft(e,t,s){e&&t&&s&&e.addEventListener(t,s,!1)}function jt(e,t,s){e&&t&&s&&e.attachEvent("on"+t,s)}const Gt=()=>typeof window>"u"?()=>{}:window.document.addEventListener?Ft:jt,O=Gt(),rt=e=>e.map(t=>t.type==="element"?tt(t.name,t.attributes,rt(t.children)):t.value);function Zt(e){return(e||"").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,"")}function lt(e,t){if(!e||!t)return;const s=t.split(" ");let i=" "+e.className+" ";for(let a=0,r=s.length;a<r;a++){const n=s[a];n&&(e.classList?e.classList.remove(n):st(e,n)&&(i=i.replace(" "+n+" "," ")))}e.classList||(e.className=Zt(i))}function j(e,t){return t.split(".").reduce((s,i)=>s&&s[i],e)}function Kt(e,t,s,i){return j(e,t)[s]=i,e}function ie(e,t,s){return t&&t.split(".").reduce((i,a)=>(Object.keys(s).forEach(r=>{i[a][r]=s[r]}),i&&i[a]),e),Object.keys(s).forEach(i=>{e[i]=s[i]}),e}function Ht(e,t="dash"){const s=t==="dash"?/-([a-z0-9])/g:/_([a-z0-9])/g;return e.replace(s,(i,a)=>a.toUpperCase())}function B(e){return`${e?`${e}-`:""}${Math.random().toString(36).substr(2,9)}`}const P={"en-US":/^[A-Z]+$/i,"bg-BG":/^[А-Я]+$/i,"cs-CZ":/^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,"da-DK":/^[A-ZÆØÅ]+$/i,"de-DE":/^[A-ZÄÖÜß]+$/i,"el-GR":/^[Α-ω]+$/i,"es-ES":/^[A-ZÁÉÍÑÓÚÜ]+$/i,"fr-FR":/^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,"it-IT":/^[A-ZÀÉÈÌÎÓÒÙ]+$/i,"nb-NO":/^[A-ZÆØÅ]+$/i,"nl-NL":/^[A-ZÁÉËÏÓÖÜÚ]+$/i,"nn-NO":/^[A-ZÆØÅ]+$/i,"hu-HU":/^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,"pl-PL":/^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,"pt-PT":/^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]+$/i,"ru-RU":/^[А-ЯЁ]+$/i,"sl-SI":/^[A-ZČĆĐŠŽ]+$/i,"sk-SK":/^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,"sr-RS@latin":/^[A-ZČĆŽŠĐ]+$/i,"sr-RS":/^[А-ЯЂЈЉЊЋЏ]+$/i,"sv-SE":/^[A-ZÅÄÖ]+$/i,"tr-TR":/^[A-ZÇĞİıÖŞÜ]+$/i,"uk-UA":/^[А-ЩЬЮЯЄIЇҐі]+$/i,"ku-IQ":/^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,ar:/^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/},E={"en-US":/^[0-9A-Z]+$/i,"bg-BG":/^[0-9А-Я]+$/i,"cs-CZ":/^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,"da-DK":/^[0-9A-ZÆØÅ]+$/i,"de-DE":/^[0-9A-ZÄÖÜß]+$/i,"el-GR":/^[0-9Α-ω]+$/i,"es-ES":/^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,"fr-FR":/^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,"it-IT":/^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,"hu-HU":/^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,"nb-NO":/^[0-9A-ZÆØÅ]+$/i,"nl-NL":/^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,"nn-NO":/^[0-9A-ZÆØÅ]+$/i,"pl-PL":/^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,"pt-PT":/^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]+$/i,"ru-RU":/^[0-9А-ЯЁ]+$/i,"sl-SI":/^[0-9A-ZČĆĐŠŽ]+$/i,"sk-SK":/^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,"sr-RS@latin":/^[0-9A-ZČĆŽŠĐ]+$/i,"sr-RS":/^[0-9А-ЯЂЈЉЊЋЏ]+$/i,"sv-SE":/^[0-9A-ZÅÄÖ]+$/i,"tr-TR":/^[0-9A-ZÇĞİıÖŞÜ]+$/i,"uk-UA":/^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,"ku-IQ":/^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/},Wt=["AE","BH","DZ","EG","IQ","JO","KW","LB","LY","MA","QM","QA","SA","SD","SY","TN","YE"],qt=["AU","GB","HK","IN","NZ","ZA","ZM"];qt.forEach(e=>{P[`en-${e}`]=P["en-US"],E[`en-${e}`]=E["en-US"]});Wt.forEach(e=>{P[`ar-${e}`]=P.ar,E[`ar-${e}`]=E.ar});P["pt-BR"]=P["pt-PT"];E["pt-BR"]=E["pt-PT"];P["pl-Pl"]=P["pl-PL"];E["pl-Pl"]=E["pl-PL"];function Ut(e,t={}){const s=t.locale||"en-US",i=a=>{let r=String(a);return t.allowDashes&&(r=r.replace(/-/g,"")),t.allowSpaces&&(r=r.replace(/ /g,"")),r};return e.constructor===Array?e.every(a=>P[s].test(i(a))):P[s].test(i(e))}function Qt(e,t={}){const s=t.locale||"en-US",i=a=>{let r=String(a);return t.allowDashes&&(r=r.replace(/-/g,"")),t.allowSpaces&&(r=r.replace(/ /g,"")),r};return e.constructor===Array?e.every(a=>E[s].test(i(a))):E[s].test(i(e))}function Jt(e,t={validator:()=>!0}){return e.constructor===Array?e.every(s=>t.validator(s)):t.validator(e)}function Yt(e,t={allowNegative:!1,allowDecimal:!1}){let s="\\d+";t.allowNegative&&(s="[-]?"+s),t.allowDecimal&&(s+="([\\.\\,]\\d+)?");const i=new RegExp(`^${s}$`);return e.constructor===Array?e.every(a=>i.test(a)):i.test(e)}const Ue=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;function Xt(e){return e.constructor===Array?e.every(t=>!t||Ue.test(String(t))):!e||Ue.test(String(e))}function xt(e,t={value:0}){if(e==null)return!1;const s=i=>Number(i);return Array.isArray(e)?e.every(i=>s(i)<=t.value):s(e)<=t.value}function _t(e,t={value:0}){return e==null?!1:e.constructor===Array?e.length<=t.value:typeof e=="object"?Object.keys(e).length<=t.value:String(e).length<=t.value}function es(e,t={value:0}){if(e==null)return!1;const s=i=>Number(i);return Array.isArray(e)?e.every(i=>s(i)>=t.value):s(e)>=t.value}function ts(e,t={value:0}){return e==null?!1:e.constructor===Array?e.length>=t.value:typeof e=="object"?Object.keys(e).length>=t.value:String(e).length>=t.value}function ss(e,t={invalidateFalse:!1}){return e==null?!1:e.constructor===Array?!!e.length:typeof e=="boolean"?t.invalidateFalse?e:!0:!!String(e).trim().length}function is(e,t={}){if(!t.target)return!1;const s=j(t.schema(),t.target);if(!s)throw new Error(`Could not find target with name '${t.target}' in 'sameAs' validator.`);return e===s.value}const as={alpha:Ut,alphanumeric:Qt,custom:Jt,number:Yt,email:Xt,max:xt,maxLength:_t,min:es,minLength:ts,required:ss,sameAs:is};function dt(e){const s=Object.keys(e).length===0||Array.isArray(e.validators)||e.hasOwnProperty("value")?{...qe,...Lt}:qe;return Object.entries(s).forEach(([i,a])=>{e.hasOwnProperty(i)||(e[i]=a)}),Object.keys(e).filter(i=>!ot.includes(i)).forEach(i=>{(typeof e[i]=="object"||Array.isArray(e[i]))&&(e[i]=dt(e[i]))}),e}const ns={validation:{alpha:e=>{let t;switch(!0){case(e.allowSpaces&&e.allowDashes):t="letters, spaces, and dashes";break;case e.allowSpaces:t="letters and spaces";break;case e.allowDashes:t="letters and dashes";break;default:t="letters"}return`Please enter ${t} only.`},alphanumeric:e=>{let t;switch(!0){case(e.allowSpaces&&e.allowDashes):t="letters, numbers, spaces, and dashes";break;case e.allowSpaces:t="letters, numbers, and spaces";break;case e.allowDashes:t="letters, numbers, and dashes";break;default:t="letters and numbers"}return`Please enter ${t} only.`},number:e=>{let t;switch(!0){case(e.allowNegative&&e.allowDecimal):t="positive or negative decimal numbers";break;case e.allowNegative:t="positive or negative numbers";break;case e.allowDecimal:t="decimal numbers";break;default:t="numbers"}return`Please enter ${t} only.`},email:()=>"Please enter a valid email address.",max:()=>"Please enter a maximum value of {value}.",maxLength:()=>"Please enter up to {value} characters.",min:()=>"Please enter a minimum value of {value}.",minLength:()=>"Please enter at least {value} characters.",required:()=>"Please enter a value for this field.",sameAs:()=>"Please make sure that the two values match.",custom:()=>"Please enter a correct value for this field."}};function os(e,t={}){const s=j(Ee.messages[Ee.locale],e),i=nt(s)?s(t):s||e;return Object.keys(t).reduce((a,r)=>a.replace(new RegExp(`{${r}}`,"g"),`${t[r]}`),i)}const Ee={locale:"en",messages:{en:ns}};function rs(e){Ee.locale=e}function ls(e,t=""){const s=[];return e.valid=(e.validators||[]).reduce((i,a)=>{const r=typeof a=="string"?{name:a}:a,n=as[r.name](e.value,r);if(!n){const{name:$,message:N,...W}=r,w={name:t.split(".").pop(),value:e.value,...W},vt=(N instanceof Function?N():N)||os(`validation.${$}`,w);s.push({name:$,message:vt,path:t})}return i&&n},!0),e.invalid=!e.valid,e.errors=s,e}function ut(e,t=""){return e.valid=Object.keys(e).filter(s=>!ot.includes(s)).reduce((s,i)=>(Object.keys(e[i]).length===0||e[i].validators||e[i].value?e[i]=ls(e[i],`${t}`?`${t}.${i}`:i):e[i]=ut(e[i],`${t}`?`${t}.${i}`:i),s&&e[i].valid),!0),e.invalid=!e.valid,e}function ae(e){return ut(e,"")}const ds={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"28",viewBox:"0 0 16 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"caret-down",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M16 11c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"},children:[]}]},us={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"check",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M23.625 3.5l-13.125 13.125-6.125-6.125-4.375 4.375 10.5 10.5 17.5-17.5z"},children:[]}]},ps={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"chevron-down",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M26.297 12.625l-11.594 11.578c-0.391 0.391-1.016 0.391-1.406 0l-11.594-11.578c-0.391-0.391-0.391-1.031 0-1.422l2.594-2.578c0.391-0.391 1.016-0.391 1.406 0l8.297 8.297 8.297-8.297c0.391-0.391 1.016-0.391 1.406 0l2.594 2.578c0.391 0.391 0.391 1.031 0 1.422z"},children:[]}]},cs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"28",viewBox:"0 0 24 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"circle",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z"},children:[]}]},hs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"danger",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M14 2.625c-3.038 0-5.895 1.183-8.043 3.332s-3.332 5.005-3.332 8.043c0 3.038 1.183 5.895 3.332 8.043s5.005 3.332 8.043 3.332c3.038 0 5.895-1.183 8.043-3.332s3.332-5.005 3.332-8.043c0-3.038-1.183-5.895-3.332-8.043s-5.005-3.332-8.043-3.332zM14 0v0c7.732 0 14 6.268 14 14s-6.268 14-14 14c-7.732 0-14-6.268-14-14s6.268-14 14-14zM12.25 19.25h3.5v3.5h-3.5zM12.25 5.25h3.5v10.5h-3.5z"},children:[]}]},fs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"info",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M12.25 8.313c0-0.722 0.591-1.313 1.313-1.313h0.875c0.722 0 1.313 0.591 1.313 1.313v0.875c0 0.722-0.591 1.313-1.313 1.313h-0.875c-0.722 0-1.313-0.591-1.313-1.313v-0.875z"},children:[]},{name:"path",type:"element",value:"",attributes:{d:"M17.5 21h-7v-1.75h1.75v-5.25h-1.75v-1.75h5.25v7h1.75z"},children:[]},{name:"path",type:"element",value:"",attributes:{d:"M14 0c-7.732 0-14 6.268-14 14s6.268 14 14 14 14-6.268 14-14-6.268-14-14-14zM14 25.375c-6.282 0-11.375-5.093-11.375-11.375s5.093-11.375 11.375-11.375 11.375 5.093 11.375 11.375-5.093 11.375-11.375 11.375z"},children:[]}]},ms={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"minus",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M0 11.375v5.25c0 0.483 0.392 0.875 0.875 0.875h26.25c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875h-26.25c-0.483 0-0.875 0.392-0.875 0.875z"},children:[]}]},$s={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"plus",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M27.125 10.5h-9.625v-9.625c0-0.483-0.392-0.875-0.875-0.875h-5.25c-0.483 0-0.875 0.392-0.875 0.875v9.625h-9.625c-0.483 0-0.875 0.392-0.875 0.875v5.25c0 0.483 0.392 0.875 0.875 0.875h9.625v9.625c0 0.483 0.392 0.875 0.875 0.875h5.25c0.483 0 0.875-0.392 0.875-0.875v-9.625h9.625c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875z"},children:[]}]},bs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"search",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M27.132 23.827l-6.632-5.641c-0.686-0.617-1.419-0.9-2.011-0.873 1.566-1.834 2.511-4.213 2.511-6.813 0-5.799-4.701-10.5-10.5-10.5s-10.5 4.701-10.5 10.5 4.701 10.5 10.5 10.5c2.6 0 4.98-0.946 6.813-2.511-0.027 0.592 0.256 1.326 0.873 2.011l5.641 6.632c0.966 1.073 2.544 1.164 3.506 0.201s0.872-2.54-0.201-3.506zM10.5 17.5c-3.866 0-7-3.134-7-7s3.134-7 7-7 7 3.134 7 7-3.134 7-7 7z"},children:[]}]},ys={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"28",viewBox:"0 0 16 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"sort-asc",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M16 11c0 0.547-0.453 1-1 1h-14c-0.547 0-1-0.453-1-1 0-0.266 0.109-0.516 0.297-0.703l7-7c0.187-0.187 0.438-0.297 0.703-0.297s0.516 0.109 0.703 0.297l7 7c0.187 0.187 0.297 0.438 0.297 0.703z"},children:[]}]},gs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"28",viewBox:"0 0 16 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"sort-desc",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M16 17c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"},children:[]}]},vs={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"28",viewBox:"0 0 16 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"sort",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M16 17c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1zM16 11c0 0.547-0.453 1-1 1h-14c-0.547 0-1-0.453-1-1 0-0.266 0.109-0.516 0.297-0.703l7-7c0.187-0.187 0.438-0.297 0.703-0.297s0.516 0.109 0.703 0.297l7 7c0.187 0.187 0.297 0.438 0.297 0.703z"},children:[]}]},ks={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"times",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M27.745 22.495c-0-0-0-0-0-0l-8.494-8.494 8.494-8.494c0-0 0-0 0-0 0.091-0.091 0.158-0.198 0.2-0.312 0.116-0.311 0.050-0.675-0.2-0.925l-4.013-4.013c-0.25-0.25-0.614-0.316-0.925-0.2-0.114 0.042-0.221 0.109-0.312 0.2 0 0-0 0-0 0l-8.494 8.494-8.494-8.494c-0-0-0-0-0-0-0.091-0.091-0.198-0.158-0.312-0.2-0.311-0.116-0.675-0.050-0.925 0.2l-4.013 4.013c-0.25 0.25-0.316 0.614-0.2 0.925 0.042 0.114 0.109 0.221 0.2 0.312 0 0 0 0 0 0l8.494 8.494-8.494 8.494c-0 0-0 0-0 0-0.091 0.091-0.157 0.198-0.2 0.312-0.116 0.311-0.050 0.675 0.2 0.925l4.013 4.013c0.25 0.25 0.614 0.316 0.925 0.2 0.114-0.042 0.221-0.109 0.312-0.2 0-0 0-0 0-0l8.494-8.494 8.494 8.494c0 0 0 0 0 0 0.092 0.091 0.198 0.158 0.312 0.2 0.311 0.116 0.675 0.050 0.925-0.2l4.013-4.013c0.25-0.25 0.316-0.614 0.2-0.925-0.042-0.114-0.109-0.221-0.2-0.312z"},children:[]}]},ws={name:"svg",type:"element",value:"",attributes:{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 28 28",fill:"currentColor"},children:[{name:"title",type:"element",value:"",attributes:{},children:[{name:"",type:"text",value:"warning",attributes:{},children:[]}]},{name:"path",type:"element",value:"",attributes:{d:"M14 2.537l11.733 23.385h-23.467l11.733-23.385zM14 0c-0.603 0-1.207 0.407-1.665 1.221l-11.951 23.819c-0.916 1.628-0.137 2.96 1.731 2.96h23.77c1.868 0 2.647-1.332 1.731-2.96h0l-11.951-23.819c-0.458-0.814-1.061-1.221-1.665-1.221v0z"},children:[]},{name:"path",type:"element",value:"",attributes:{d:"M15.75 22.75c0 0.966-0.784 1.75-1.75 1.75s-1.75-0.784-1.75-1.75c0-0.966 0.784-1.75 1.75-1.75s1.75 0.784 1.75 1.75z"},children:[]},{name:"path",type:"element",value:"",attributes:{d:"M14 19.25c-0.966 0-1.75-0.784-1.75-1.75v-5.25c0-0.966 0.784-1.75 1.75-1.75s1.75 0.784 1.75 1.75v5.25c0 0.966-0.784 1.75-1.75 1.75z"},children:[]}]},Is=Object.freeze(Object.defineProperty({__proto__:null,inkCaretDown:ds,inkCheck:us,inkChevronDown:ps,inkCircle:cs,inkDanger:hs,inkInfo:fs,inkMinus:ms,inkPlus:$s,inkSearch:bs,inkSort:vs,inkSortAsc:ys,inkSortDesc:gs,inkTimes:ks,inkWarning:ws},Symbol.toStringTag,{value:"Module"})),Qe="inkline-color-mode",ne=e=>{let t;e==="system"?t=matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t=e,lt(document.body,"-light -dark"),Me(document.body,`-${t}`)},Cs={components:{},icons:{},colorMode:"system",locale:"en",validateOn:["input","blur"],color:"",size:"",routerComponent:"router-link",componentOptions:{}};function Ss({icons:e,components:t,...s}){return{form(i){return dt(i)},setLocale(i){rs(i)},options:wt(s)}}const U={prototype:void 0,icons:void 0},Xr={install(e,t={}){const s={...Cs,...t};for(const r in s.components)e.component(s.components[r].name,s.components[r]);if(typeof window<"u"){const r=localStorage.getItem(Qe);r&&(s.colorMode=r)}const i=Ss(s);U.prototype=i,e.config.globalProperties.$inkline=i,e.provide("inkline",i);const a={...Is,...s.icons};if(e.provide("inklineIcons",a),typeof window<"u"){kt(()=>i.options.colorMode,$=>{ne($),localStorage.setItem(Qe,$)});const r=()=>{i.options.colorMode==="system"&&ne(i.options.colorMode)},n=matchMedia("(prefers-color-scheme: dark)");n.addEventListener?n.addEventListener("change",r):n.addListener(r),Me(document.body,"inkline"),ne(s.colorMode)}}};function u(e,t,s=""){return()=>{var i;return U.prototype?(i=U.prototype.options.componentOptions[e])!=null&&i[t]?U.prototype.options.componentOptions[e][t]:U.prototype.options[t]:s}}function y(e){return["","xs","sm","md","lg","xl","xxl"].includes(e)}const pt=p({props:{collapse:{type:[String,Boolean],default:"md"},modelValue:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{open:this.modelValue,windowWidth:typeof window<"u"?window.innerWidth:0}},computed:{collapsibleClasses(){return{"-open":this.open,"-collapsible":this.collapsible,[`-collapse-${this.collapse}`]:!!this.collapse}},collapsible(){return this.collapse===!0||this.collapse===!1?this.collapse:this.windowWidth<=x[this.collapse][1]}},watch:{modelValue(e){this.open=e}},created(){typeof window<"u"&&(O(window,"resize",this.onWindowResize),this.onWindowResize())},beforeUnmount(){typeof window<"u"&&D(window,"resize",this.onWindowResize)},methods:{setOpen(e){this.open=e,this.$emit("update:modelValue",this.open)},toggleOpen(){this.open=!this.open,this.$emit("update:modelValue",this.open)},onWindowResize(){if(this.collapse===!0||this.collapse===!1||typeof window>"u")return;const e=window.innerWidth;this.windowWidth<=x[this.collapse][1]&&e>x[this.collapse][1]&&this.setOpen(!1),this.windowWidth=window.innerWidth}}}),R=p({inject:{formGroup:{default:()=>({})},form:{default:()=>({})}},computed:{isDisabled(){return this.disabled||this.form.isDisabled||this.formGroup.isDisabled},isReadonly(){return this.readonly||this.form.isReadonly||this.formGroup.isReadonly},parent(){return this.formGroup.$?this.formGroup:this.form},schema(){const e=this.parent.schema||{};return this.name!==""?j(e,`${this.name}`):e}}}),K=p({props:{tag:{type:String,default:"a"}},computed:{isTag(){return this.$attrs.to?this.routerComponent:this.$attrs.href?"a":this.tag},isComponent(){return this.isTag===this.routerComponent},routerComponent(){return this.$inkline.options.routerComponent}}}),Bs=e=>({name:"offset",options:{offset:[0,e]}}),zs=()=>({name:"arrow",options:{padding:6}}),As=()=>({name:"preventOverflow",options:{padding:8}}),Vs=()=>({name:"computeStyles",options:{gpuAcceleration:!1,adaptive:!1}}),Ns=()=>({name:"sameWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:({state:e})=>{e.styles.popper.width=`${e.rects.reference.width}px`},effect({state:e}){e.elements.popper.style.width=`${e.elements.reference.offsetWidth}px`}}),ct=({offset:e})=>[Bs(e),zs(),As(),Vs()],ee=p({props:{placement:{type:String,default:"auto"},offset:{type:Number,default:6},popperOptions:{type:Object,default:()=>({})}},data(){return{popperInstance:void 0}},watch:{placement(e){this.popperInstance&&this.popperInstance.setOptions({placement:e})}},beforeUnmount(){this.destroyPopper()},methods:{createPopper(){if(typeof window>"u")return;const e=ct({offset:this.offset});this.popperInstance=It(this.$refs.wrapper,this.$refs.popup,{strategy:"fixed",placement:this.placement,modifiers:e,...this.popperOptions})},destroyPopper(){this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=void 0)}}}),Ge=p({props:{disabled:{type:Boolean,default:!1},modelValue:{type:Boolean,default:void 0},trigger:{type:Array,default:()=>["hover","click","focus"]},interactable:{type:Boolean,default:!0},hoverHideDelay:{type:Number,default:300}},emits:["update:modelValue","click-outside"],data(){return{visible:this.modelValue,triggerStack:0,hoverHideTransition:!1}},watch:{modelValue(e){e?this.show():this.hide()}},mounted(){if(!this.$slots.default)throw new Error("Popup components require one child element to be used as trigger.");this.addEventListeners()},beforeUnmount(){this.removeEventListeners()},methods:{show(){this.disabled||this.visible||(this.triggerStack+=1,this.visible=!0,this.createPopper(),this.$emit("update:modelValue",!0))},hide(){this.disabled||!this.visible||(this.triggerStack-=1,this.triggerStack<=0&&(this.triggerStack=0,this.visible=!1,this.$emit("update:modelValue",!1)))},hoverShow(){this.hoverHideTransition=!1,this.show()},hoverHide(){this.hoverHideTransition=!0,setTimeout(()=>{this.hoverHideTransition&&this.hide()},this.hoverHideDelay)},onClick(){this.visible?this.hide():this.show()},onClickOutside(e){this.visible&&this.$emit("click-outside",e),!this.modelValue&&this.hide()},addEventListeners(){[].concat(this.trigger).forEach(e=>{switch(e){case"hover":O(this.$refs.trigger,"mouseenter",this.interactable?this.hoverShow:this.show),O(this.$refs.trigger,"mouseleave",this.interactable?this.hoverHide:this.hide),this.interactable&&(O(this.$refs.popup,"mouseenter",this.hoverShow),O(this.$refs.popup,"mouseleave",this.hoverHide));break;case"click":O(this.$refs.trigger,"click",this.onClick);break;case"focus":for(const t of this.$refs.trigger.children)O(t,"focus",this.show),O(t,"blur",this.hide);break}})},removeEventListeners(){[].concat(this.trigger).forEach(e=>{switch(e){case"hover":D(this.$refs.trigger,"mouseenter",this.interactable?this.hoverShow:this.show),D(this.$refs.trigger,"mouseleave",this.interactable?this.hoverHide:this.hide),this.interactable&&(D(this.$refs.popup,"mouseenter",this.hoverShow),D(this.$refs.popup,"mouseleave",this.hoverHide));break;case"click":D(this.$refs.trigger,"click",this.onClick);break;case"focus":for(const t of this.$refs.trigger.children)D(t,"focus",this.show),D(t,"blur",this.hide);break}})},focusTrigger(){for(const e of this.$refs.trigger.children)if(at(e)){e.focus();break}}}}),oe="IAlert",Os=p({name:oe,inheritAttrs:!1,props:{size:{type:String,default:u(oe,"size"),validator:y},color:{type:String,default:u(oe,"color")},modelValue:{type:Boolean,default:!0},dismissible:{type:Boolean,default:!1},dismissAriaLabel:{type:String,default:"Dismiss"}},emits:["update:modelValue"],data(){return{dismissed:!1}},computed:{classes(){return{[`-${this.color}`]:!!this.color,[`-${this.size}`]:!!this.size,"-dismissible":this.dismissible,"-with-icon":!!this.$slots.icon}}},watch:{modelValue(e){this.dismissed=!e}},methods:{dismiss(){this.dismissed=!0,this.$emit("update:modelValue",!1)}}}),Ls={key:0,class:"icon",role:"img","aria-hidden":"true"},Ds={class:"content"},Ts=["aria-label"];function Ps(e,t,s,i,a,r){return k((o(),l("div",h({class:["alert",e.classes],role:"alert"},e.$attrs),[e.$slots.icon?(o(),l("span",Ls,[d(e.$slots,"icon")])):m("",!0),f("div",Ds,[d(e.$slots,"default")]),e.dismissible?(o(),l("span",{key:1,class:"dismiss",role:"button","aria-label":e.dismissAriaLabel,onClick:t[0]||(t[0]=(...n)=>e.dismiss&&e.dismiss(...n))},[d(e.$slots,"dismiss",{},()=>[t[1]||(t[1]=T("×"))])],8,Ts)):m("",!0)],16)),[[C,!e.dismissed]])}const Es=c(Os,[["render",Ps]]),re="IBadge",Rs=p({name:re,inheritAttrs:!1,props:{color:{type:String,default:u(re,"color")},size:{type:String,default:u(re,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}}});function Ms(e,t,s,i,a,r){return o(),l("div",h({class:["badge",e.classes]},e.$attrs),[d(e.$slots,"default")],16)}const Fs=c(Rs,[["render",Ms]]),le="IBreadcrumb",js=p({name:le,inheritAttrs:!1,props:{ariaLabel:{type:String,default:"Breadcrumbs"},color:{type:String,default:u(le,"color")},size:{type:String,default:u(le,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}}}),Gs=["aria-label"];function Zs(e,t,s,i,a,r){return o(),l("nav",h({class:["breadcrumb",e.classes],"aria-label":e.ariaLabel},e.$attrs),[f("ol",null,[d(e.$slots,"default")])],16,Gs)}const Ks=c(js,[["render",Zs]]),Hs="IBreadcrumbItem",Ws=p({name:Hs,mixins:[K],inheritAttrs:!1,props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},href:{type:String,default:""},to:{type:[String,Object],default:""},tabindex:{type:[Number,String],default:0}},computed:{classes(){return{"-active":this.active,"-disabled":this.disabled}},tabIndex(){return this.disabled||this.active?-1:this.tabindex}}}),qs=["is","href","to","tabindex","aria-current"];function Us(e,t,s,i,a,r){return o(),l("li",h({class:["breadcrumb-item",e.classes]},e.$attrs),[f("a",{is:e.isTag,href:e.href,to:e.to,tabindex:e.tabIndex,"aria-current":e.active?"location":null},[d(e.$slots,"default",{},void 0,!0)],8,qs)],16)}const Qs=c(Ws,[["render",Us],["__scopeId","data-v-28fa6b16"]]),de="ILoader",Js=p({name:de,inheritAttrs:!1,props:{color:{type:String,default:u(de,"color")},size:{type:String,default:u(de,"size")}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}}}),Ys={key:0,class:"loader-text"};function Xs(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["loader",e.classes],role:"img","aria-hidden":"true"}),[e.$slots.default?(o(),l("span",Ys,[d(e.$slots,"default")])):m("",!0),t[0]||(t[0]=f("svg",{viewBox:"25 25 50 50"},[f("circle",{cx:"50",cy:"50",r:"20",fill:"none","stroke-width":"4","stroke-miterlimit":"10"})],-1))],16)}const ht=c(Js,[["render",Xs]]),ue="IButton",xs=p({name:ue,components:{ILoader:ht},mixins:[K],inject:{buttonGroup:{default:()=>({})},form:{default:()=>({})},formGroup:{default:()=>({})}},inheritAttrs:!1,props:{active:{type:Boolean,default:!1},block:{type:Boolean,default:!1},circle:{type:Boolean,default:!1},color:{type:String,default:u(ue,"color")},disabled:{type:Boolean,default:!1},link:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},outline:{type:Boolean,default:!1},tag:{type:String,default:"button"},tabindex:{type:[Number,String],default:0},size:{type:String,default:u(ue,"size"),validator:y}},computed:{ariaBusy(){return this.role!=="button"?null:this.loading?"true":"false"},ariaDisabled(){return this.role!=="button"?null:this.disabled?"true":"false"},ariaPressed(){return this.role!=="button"?null:this.active?"true":"false"},classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-active":this.active,"-block":this.block,"-circle":this.circle,"-disabled":this.isDisabled,"-link":this.link,"-outline":this.outline}},isDisabled(){return this.disabled||this.buttonGroup.disabled||this.form.disabled||this.formGroup.disabled},role(){return this.$attrs.to||this.$attrs.href?"link":"button"},tabIndex(){return this.isDisabled?-1:this.tabindex}}});function _s(e,t,s,i,a,r){const n=A("i-loader");return o(),V(X(e.isTag),h(e.$attrs,{class:["button",e.classes],tag:e.tag,role:e.role,tabindex:e.tabIndex,disabled:e.isDisabled||e.loading,"aria-disabled":e.ariaDisabled,"aria-pressed":e.ariaPressed,"aria-busy":e.ariaBusy,"aria-live":"polite"}),{default:b(()=>[e.loading?d(e.$slots,"loading",{key:0},()=>[I(n)]):m("",!0),e.loading?m("",!0):d(e.$slots,"default",{key:1})]),_:3},16,["tag","role","tabindex","class","disabled","aria-disabled","aria-pressed","aria-busy"])}const ft=c(xs,[["render",_s]]),ei="IButtonGroup",ti=p({name:ei,inject:{form:{default:()=>({})},buttonGroup:{default:()=>({})},formGroup:{default:()=>({})}},provide(){return{buttonGroup:this}},inheritAttrs:!1,props:{vertical:{type:Boolean,default:!1},block:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},computed:{classes(){return{"-vertical":this.vertical,"-block":this.block,"-disabled":this.isDisabled}},isDisabled(){return this.disabled||this.buttonGroup.disabled||this.form.disabled||this.formGroup.disabled}}}),si=["aria-disabled"];function ii(e,t,s,i,a,r){return o(),l("div",h({class:["button-group",e.classes],role:"group","aria-disabled":e.isDisabled},e.$attrs),[d(e.$slots,"default")],16,si)}const ai=c(ti,[["render",ii]]),J={};for(const e of je){e!==""&&(J[e]={type:[String,Boolean,Number],default:!1});for(const t of["first","last"])J[`${t}${Pe(e)}`]={type:Boolean,default:!1};for(const t of["offset","push","pull"])J[`${t}${Pe(e)}`]={type:[String,Number],default:""}}const ni="IColumn",oi=p({name:ni,inheritAttrs:!1,props:J,computed:{classes(){return Object.keys(J).reduce((e,t)=>(this[t]&&(e[it(`-${t}`,this[t])]=!0),e),{})}}});function ri(e,t,s,i,a,r){return o(),l("div",h({class:["column",e.classes]},e.$attrs),[d(e.$slots,"default")],16)}const Ze=c(oi,[["render",ri]]),li="IContainer",di=p({name:li,inheritAttrs:!1,props:{fluid:{type:Boolean,default:!1}},computed:{classes(){return{"-fluid":this.fluid}}}});function ui(e,t,s,i,a,r){return o(),l("div",h({class:["container",e.classes]},e.$attrs),[d(e.$slots,"default")],16)}const Ke=c(di,[["render",ui]]),pe="ICard",pi=p({name:pe,inheritAttrs:!1,props:{color:{type:String,default:u(pe,"color")},size:{type:String,default:u(pe,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}}}),ci={key:0,class:"card-header"},hi={key:1,class:"card-body"},fi={key:2,class:"card-footer"};function mi(e,t,s,i,a,r){return o(),l("div",h({class:["card",e.classes]},e.$attrs),[e.$slots.header?(o(),l("header",ci,[d(e.$slots,"header")])):m("",!0),d(e.$slots,"image"),e.$slots.default?(o(),l("div",hi,[d(e.$slots,"default")])):m("",!0),e.$slots.footer?(o(),l("footer",fi,[d(e.$slots,"footer")])):m("",!0)],16)}const $i=c(pi,[["render",mi]]),ce="ICheckbox",bi=p({name:ce,mixins:[R],inheritAttrs:!1,props:{color:{type:String,default:u(ce,"color")},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},value:{default:!1},modelValue:{default:!1},name:{type:[String,Number],default(){return B("checkbox")}},native:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},size:{type:String,default:u(ce,"size"),validator:y},tabindex:{type:[Number,String],default:0}},emits:["update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-native":this.native}},checked(){return this.formGroup.checked?this.formGroup.checked.includes(this.value):this.schema?this.schema.value:this.modelValue},tabIndex(){return this.isDisabled?-1:this.tabindex}},methods:{clickInputRef(){this.isReadonly||this.$refs.input.click()},onChange(e){var t,s,i,a;(s=(t=this.parent).onInput)==null||s.call(t,this.name,e.target.checked),(a=(i=this.formGroup).onChange)==null||a.call(i,this.value),this.$emit("update:modelValue",e.target.checked)},onBlur(e){var t,s;(s=(t=this.parent).onBlur)==null||s.call(t,this.name,e)}}}),yi=["aria-checked"],gi=["checked","name","disabled","readonly",".indeterminate"],vi=["aria-checked","aria-disabled","aria-readonly","tabindex"];function ki(e,t,s,i,a,r){return o(),l("div",h({class:["checkbox",e.classes],"aria-checked":e.checked?"true":"false",role:"checkbox"},e.$attrs),[f("input",{ref:"input",type:"checkbox",checked:e.checked,tabindex:"-1",name:e.name,disabled:e.isDisabled,readonly:e.isReadonly,".indeterminate":e.indeterminate,"aria-hidden":"true",onChange:t[0]||(t[0]=(...n)=>e.onChange&&e.onChange(...n))},null,40,gi),f("label",{class:"checkbox-label","aria-checked":e.checked,"aria-disabled":e.isDisabled,"aria-readonly":e.isReadonly,tabindex:e.tabIndex,onBlur:t[1]||(t[1]=(...n)=>e.onBlur&&e.onBlur(...n)),onClick:t[2]||(t[2]=(...n)=>e.clickInputRef&&e.clickInputRef(...n)),onKeydown:t[3]||(t[3]=M(Y((...n)=>e.clickInputRef&&e.clickInputRef(...n),["stop","prevent"]),["space"]))},[d(e.$slots,"default")],40,vi)],16,yi)}const wi=c(bi,[["render",ki]]),he="ICheckboxGroup",Ii=p({name:he,mixins:[R],provide(){return{formGroup:this}},inheritAttrs:!1,props:{color:{type:String,default:u(he,"color")},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},modelValue:{default:()=>[]},name:{type:[String,Number],default(){return B("checkbox-group")}},readonly:{type:Boolean,default:!1},size:{type:String,default:u(he,"size"),validator:y}},emits:["update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-inline":this.inline}},checked(){return this.schema?this.schema.value:this.modelValue}},methods:{onChange(e){var i,a;const t=[...this.modelValue],s=t.findIndex(r=>r===e);s!==-1?t.splice(s,1):t.push(e),(a=(i=this.parent).onInput)==null||a.call(i,this.name,t),this.$emit("update:modelValue",t)}}}),Ci=["name"];function Si(e,t,s,i,a,r){return o(),l("div",h({class:["form-group checkbox-group",e.classes],name:e.name,role:"checkboxgroup"},e.$attrs),[d(e.$slots,"default",{},void 0,!0)],16,Ci)}const Bi=c(Ii,[["render",Si],["__scopeId","data-v-4043b2ce"]]),fe="ICollapsible",zi=p({name:fe,provide(){return{collapsible:this}},inheritAttrs:!1,props:{accordion:{type:Boolean,default:!1},color:{type:String,default:u(fe,"color")},size:{type:String,default:u(fe,"size"),validator:y},modelValue:{type:Array,default:()=>[]}},emits:["update:modelValue"],data(){return{activeItems:[].concat(this.modelValue)}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}},watch:{modelValue(e){this.activeItems=[].concat(e)}},methods:{onItemClick(e){if(this.accordion)return this.activeItems=this.activeItems.indexOf(e.name)>-1?[]:[e.name],this.activeItems;const t=this.activeItems.indexOf(e.name);t>-1?this.activeItems.splice(t,1):this.activeItems.push(e.name),this.$emit("update:modelValue",this.activeItems)}}});function Ai(e,t,s,i,a,r){return o(),l("div",h({class:["collapsible",e.classes],role:"tablist","aria-multiselectable":"true"},e.$attrs),[d(e.$slots,"default")],16)}const Vi=c(zi,[["render",Ai]]),Ni=p({name:"IExpandTransition",methods:{onEnter(e){const t=q(e,"width");e.style.width=t,e.style.position="absolute",e.style.visibility="hidden",e.style.height="auto";const s=q(e,"height");e.style.width=null,e.style.position=null,e.style.visibility=null,e.style.height=0,q(e,"height"),setTimeout(()=>{e.style.height=s})},onAfterEnter(e){e.style.height="auto"},onLeave(e){e.style.height=q(e,"height"),q(e,"height"),setTimeout(()=>{e.style.height=0})}}});function Oi(e,t,s,i,a,r){return o(),V(L,{name:"expand",onEnter:e.onEnter,onAfterEnter:e.onAfterEnter,onLeave:e.onLeave},{default:b(()=>[d(e.$slots,"default",{},void 0,!0)]),_:3},8,["onEnter","onAfterEnter","onLeave"])}const mt=c(Ni,[["render",Oi],["__scopeId","data-v-1e395af5"]]),Li="ICollapsibleItem",Di=p({name:Li,components:{IExpandTransition:mt},inject:{collapsible:{default:()=>({activeItems:[]})}},inheritAttrs:!1,props:{name:{type:String,default(){return B("collapsible-item")}},title:{type:String,default:""}},computed:{active(){return this.collapsible.activeItems.indexOf(this.name)>-1},classes(){return{"-active":this.active}}},methods:{onClick(){this.collapsible.onItemClick(this)}}}),Ti=["name"],Pi=["id","aria-expanded","aria-controls","aria-describedby"],Ei=["id","aria-hidden","aria-labelledby"],Ri={class:"content"};function Mi(e,t,s,i,a,r){const n=A("i-expand-transition");return o(),l("div",h({class:["collapsible-item",e.classes],name:e.name},e.$attrs),[f("a",{class:"collapsible-header",role:"tab",id:`collapsible-item-heading-${e.name}`,"aria-expanded":e.active?"true":"false","aria-controls":`collapsible-item-content-${e.name}`,"aria-describedby":`collapsible-item-content-${e.name}`,tabindex:"0",onClick:t[0]||(t[0]=(...$)=>e.onClick&&e.onClick(...$)),onKeydown:[t[1]||(t[1]=M(Y((...$)=>e.onClick&&e.onClick(...$),["prevent"]),["space"])),t[2]||(t[2]=M(Y((...$)=>e.onClick&&e.onClick(...$),["prevent"]),["enter"]))]},[d(e.$slots,"header",{},()=>[T(F(e.title),1)]),t[3]||(t[3]=f("i",{class:"icon"},null,-1))],40,Pi),I(n,null,{default:b(()=>[k(f("div",{class:"collapsible-body",role:"tabpanel",id:`collapsible-item-content-${e.name}`,"aria-hidden":e.active?"false":"true","aria-labelledby":`collapsible-item-heading-${e.name}`},[f("div",Ri,[d(e.$slots,"default")])],8,Ei),[[C,e.active]])]),_:3})],16,Ti)}const Fi=c(Di,[["render",Mi]]),ji=(e,t)=>s=>{!Dt(e)||!s.target||e===s.target||e.contains(s.target)||t.value(s)},H={beforeMount(e,t){typeof window<"u"&&O(window.document,"mousedown",ji(e,t))}},me="IDropdown",Gi=p({name:me,directives:{ClickOutside:H},mixins:[ee,Ge],provide(){return{dropdown:this}},inject:{navbar:{default:()=>({onItemClick:()=>{}})},sidebar:{default:()=>({onItemClick:()=>{}})}},inheritAttrs:!1,props:{animationDuration:{type:Number,default:300},color:{type:String,default:u(me,"color")},disabled:{type:Boolean,default:!1},hideOnItemClick:{type:Boolean,default:!0},keydownTrigger:{type:Array,default:()=>["up","down","enter","space","tab","esc"]},keydownItem:{type:Array,default:()=>["up","down","enter","space","tab","esc"]},modelValue:{type:Boolean,default:!1},arrow:{type:Boolean,default:!0},placement:{type:String,default:"bottom"},trigger:{type:[String,Array],default:()=>["click"]},offset:{type:Number,default:6},interactable:{type:Boolean,default:!0},popperOptions:{type:Object,default:()=>({})},size:{type:String,default:u(me,"size"),validator:y}},emits:["click-outside","update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}},mounted(){for(const e of this.$refs.trigger.children)O(e,"keydown",this.onTriggerKeyDown);O(this.$refs.popup,"keydown",this.onItemKeyDown)},beforeUnmount(){for(const e of this.$refs.trigger.children)D(e,"keydown",this.onTriggerKeyDown);D(this.$refs.popup,"keydown",this.onItemKeyDown)},methods:{onEscape(){this.visible=!1,this.$emit("update:modelValue",!1)},handleClickOutside(e){this.visible=!1,this.$emit("update:modelValue",!1),this.onClickOutside(e)},getFocusableItems(){const e=[];for(const t of this.$refs.body.children)Fe(t)&&e.push(t);return e},onTriggerKeyDown(e){if(this.keydownTrigger.length===0)return;const t=this.getFocusableItems(),s=t.findIndex(r=>r.active),i=s>-1?s:0,a=t[i];switch(!0){case(v("up",e)&&this.keydownTrigger.includes("up")):case(v("down",e)&&this.keydownTrigger.includes("down")):this.show(),setTimeout(()=>{a.focus()},this.visible?0:this.animationDuration),e.preventDefault(),e.stopPropagation();break;case(v("enter",e)&&this.keydownTrigger.includes("enter")):case(v("space",e)&&this.keydownTrigger.includes("space")):this.onClick(),this.visible||setTimeout(()=>{a.focus()},this.animationDuration),e.preventDefault();break;case(v("tab",e)&&this.keydownTrigger.includes("tab")):case(v("esc",e)&&this.keydownTrigger.includes("esc")):this.hide();break}},onItemKeyDown(e){if(this.keydownItem.length!==0)switch(!0){case(v("up",e)&&this.keydownItem.includes("up")):case(v("down",e)&&this.keydownItem.includes("down")):const t=this.getFocusableItems(),s=t.findIndex(r=>r===e.target),i=t.length-1;let a;v("up",e)?a=s>0?s-1:0:a=s<i?s+1:i,t[a].focus(),e.preventDefault(),e.stopPropagation();break;case(v("enter",e)&&this.keydownItem.includes("enter")):case(v("space",e)&&this.keydownItem.includes("space")):e.target.click(),this.hideOnItemClick&&this.hide(),this.focusTrigger(),e.preventDefault();break;case(v("tab",e)&&this.keydownItem.includes("tab")):case(v("esc",e)&&this.keydownItem.includes("esc")):this.hide(),this.focusTrigger(),e.preventDefault();break}},onItemClick(){this.hideOnItemClick&&this.hide(),[this.navbar,this.sidebar].forEach(e=>{e.onItemClick()})}}}),Zi={class:"dropdown-trigger",ref:"trigger"},Ki=["aria-hidden"],Hi={key:0,"data-popper-arrow":""},Wi={key:1,class:"dropdown-header"},qi={key:2,class:"dropdown-body",ref:"body"},Ui={key:3,class:"dropdown-footer"};function Qi(e,t,s,i,a,r){const n=Z("click-outside");return k((o(),l("div",h({class:"dropdown-wrapper",ref:"wrapper","aria-haspopup":"true",onKeyup:t[0]||(t[0]=M((...$)=>e.onEscape&&e.onEscape(...$),["esc"]))},e.$attrs),[f("div",Zi,[d(e.$slots,"default")],512),I(L,{name:"zoom-in-top-transition",onAfterLeave:e.destroyPopper},{default:b(()=>[k(f("div",{class:z(["dropdown",e.classes]),role:"menu",ref:"popup","aria-hidden":e.visible?"false":"true"},[e.arrow?(o(),l("span",Hi)):m("",!0),e.$slots.header?(o(),l("div",Wi,[d(e.$slots,"header")])):m("",!0),e.$slots.body?(o(),l("div",qi,[d(e.$slots,"body")],512)):m("",!0),e.$slots.footer?(o(),l("div",Ui,[d(e.$slots,"footer")])):m("",!0)],10,Ki),[[C,e.visible]])]),_:3},8,["onAfterLeave"])],16)),[[n,e.onClickOutside]])}const Ji=c(Gi,[["render",Qi]]),Yi="IDropdownDivider",Xi=p({name:Yi,inheritAttrs:!1});function xi(e,t,s,i,a,r){return o(),l("div",h({class:"dropdown-divider",role:"separator"},e.$attrs),null,16)}const _i=c(Xi,[["render",xi]]),ea="IDropdownItem",ta=p({name:ea,mixins:[K],inject:{dropdown:{default:()=>({})}},inheritAttrs:!1,props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},plaintext:{type:Boolean,default:!1},tag:{type:String,default:"div"},tabindex:{type:[Number,String],default:0}},computed:{classes(){return{"-active":this.active,"-disabled":this.disabled,"-plaintext":this.plaintext}},role(){return this.$attrs.to||this.$attrs.href?"link":"menuitem"},tabIndex(){return this.disabled?-1:this.tabindex}},methods:{onClick(e){var t,s;(s=(t=this.dropdown).onItemClick)==null||s.call(t,this,e)}}});function sa(e,t,s,i,a,r){return o(),V(X(e.isTag),h(e.$attrs,{class:["dropdown-item",e.classes],role:e.role,tag:e.tag,tabindex:e.tabIndex,disabled:e.disabled,"aria-disabled":e.disabled,"aria-pressed":e.active,onClick:e.onClick}),{default:b(()=>[d(e.$slots,"default")]),_:3},16,["class","role","tag","tabindex","disabled","aria-disabled","aria-pressed","onClick"])}const ia=c(ta,[["render",sa]]),Je="IForm",aa=p({name:Je,mixins:[R],provide(){return{form:this}},inheritAttrs:!1,props:{color:{type:String,default:""},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},name:{type:String,default(){return B("form")}},modelValue:{type:Object,default:()=>null},readonly:{type:Boolean,default:!1},size:{type:String,default:u(Je,"size"),validator:y}},emits:["update:modelValue","submit"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-inline":this.inline}},schema(){return this.modelValue?this.modelValue:j(this.formGroup.schema||this.form.schema||{},this.name)}},methods:{onBlur(e,t){var s,i;if((i=(s=this.parent).onBlur)==null||i.call(s,this.name?`${this.name}.${e}`:e,t),this.modelValue){let a=Q(this.modelValue);a=ie(a,e,{untouched:!1,touched:!0}),this.shouldValidate(e,"blur")&&(a=ae(a)),this.$emit("update:modelValue",a)}},onInput(e,t){var s,i;if((i=(s=this.parent).onInput)==null||i.call(s,this.name?`${this.name}.${e}`:e,t),this.modelValue){let a=Q(this.modelValue);a=Kt(a,e,"value",t),a=ie(a,e,{pristine:!1,dirty:!0}),this.shouldValidate(e,"input")&&(a=ae(a)),this.$emit("update:modelValue",a)}},onSubmit(e){if(e.preventDefault(),this.modelValue){let t=Q(this.modelValue);if(t=ie(ae(t),"",{untouched:!1,touched:!0}),this.$emit("update:modelValue",t),t.invalid)return}this.$emit("submit",e)},shouldValidate(e,t){const s=j(this.modelValue,e);return(s.validateOn?[].concat(s.validateOn):this.$inkline.options.validateOn).includes(t)}}}),na=["name","readonly","disabled"];function oa(e,t,s,i,a,r){return o(),l("form",h(e.$attrs,{class:["form",e.classes],role:"form",name:e.name,readonly:e.isReadonly,disabled:e.isDisabled,onSubmit:t[0]||(t[0]=(...n)=>e.onSubmit&&e.onSubmit(...n))}),[d(e.$slots,"default",{},void 0,!0)],16,na)}const ra=c(aa,[["render",oa],["__scopeId","data-v-575ccba7"]]),$e="IFormGroup",la=p({name:$e,mixins:[R],provide(){return{formGroup:this}},props:{color:{type:String,default:u($e,"color")},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},name:{type:String,default:""},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},size:{type:String,default:u($e,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-inline":this.inline,"-required":this.required}}},methods:{onBlur(e,t){var s,i;(i=(s=this.parent)==null?void 0:s.onBlur)==null||i.call(s,this.name?`${this.name}.${e}`:e,t)},onInput(e,t){var s,i;(i=(s=this.parent)==null?void 0:s.onInput)==null||i.call(s,this.name?`${this.name}.${e}`:e,t)}}}),da=["name"];function ua(e,t,s,i,a,r){return o(),l("fieldset",{class:z(["form-group",e.classes]),name:e.name,role:"group"},[d(e.$slots,"default")],10,da)}const pa=c(la,[["render",ua]]),ca="IFormError",ha=p({name:ca,inject:{formGroup:{default:()=>({})},form:{default:()=>({})}},props:{for:{type:String,default:""},visible:{type:[Array,String],default:()=>["touched","dirty","invalid"]}},computed:{parent(){return this.formGroup.$?this.formGroup:this.form},schema(){return this.for!==""?j(this.parent.schema||{},`${this.for}`):this.parent.schema||{}},errors(){return this.schema.errors||[]},isVisible(){let e=!0;return this.schema&&this.visible&&[].concat(this.visible).forEach(t=>{e=e&&this.schema[t]}),e}}}),fa={key:0,class:"form-error","aria-live":"polite"};function ma(e,t,s,i,a,r){return e.schema?k((o(),V(L,{key:0,name:"fade-in-transition"},{default:b(()=>[e.errors.length>0?(o(),l("ul",fa,[(o(!0),l(G,null,_(e.errors,n=>(o(),l("li",null,F(n.message),1))),256))])):m("",!0)]),_:1},512)),[[C,e.isVisible]]):m("",!0)}const $a=c(ha,[["render",ma]]),Ye="IFormLabel",ba=p({name:Ye,mixins:[R],props:{for:{type:String,default:""},placement:{type:String,default:""},size:{type:String,default:u(Ye,"size"),validator:y}},computed:{classes(){return{[`-${this.size}`]:!!this.size,[`-${this.placement}`]:!!this.placement}},forAttr(){return this.for}},methods:{getNextSibling(){return this.$el.nextSibling.querySelector("input, textarea")},onClick(){var e;this.for||(e=this.getNextSibling())==null||e.focus()}}}),ya=["for"];function ga(e,t,s,i,a,r){return o(),l("label",h(e.$attrs,{class:["form-label",e.classes],for:e.forAttr,onClick:t[0]||(t[0]=(...n)=>e.onClick&&e.onClick(...n))}),[d(e.$slots,"default")],16,ya)}const va=c(ba,[["render",ga]]),Xe="IHamburgerMenu",ka=p({name:Xe,inheritAttrs:!1,props:{animation:{type:String,default:"close"},color:{type:String,default:u(Xe,"color")},modelValue:{type:Boolean,default:!1}},emits:["update:modelValue"],computed:{classes(){return{...g(this),"-active":this.modelValue,[`-${this.animation}`]:!0}}},methods:{onClick(){this.$emit("update:modelValue",!this.modelValue)}}});function wa(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["hamburger-menu",e.classes],onClick:t[0]||(t[0]=(...n)=>e.onClick&&e.onClick(...n))}),t[1]||(t[1]=[f("span",{class:"hamburger-menu-bars"},null,-1)]),16)}const $t=c(ka,[["render",wa]]),Re={};for(const e of je)for(const t of["start","center","end","top","middle","bottom","around","between","reverse"])Re[`${t}${Pe(e)}`]={type:Boolean,default:!1};const Ia="IRow",Ca=p({name:Ia,inheritAttrs:!1,props:{noGutter:{type:Boolean,default:!1},noCollapse:{type:Boolean,default:!1},...Re},computed:{classes(){const e=Object.keys(Re).reduce((t,s)=>(this[s]&&(t[it(`-${s}`,this[s])]=!0),t),{});return{"-no-gutter":this.noGutter,"-no-collapse":this.noCollapse,...e}}}});function Sa(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["row",e.classes]}),[d(e.$slots,"default")],16)}const He=c(Ca,[["render",Sa]]),be="IHeader",Ba=p({name:be,components:{IContainer:Ke,IRow:He,IColumn:Ze},inheritAttrs:!1,props:{color:{type:String,default:u(be,"color")},cover:{type:Boolean,default:!1},fluid:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},size:{type:String,default:u(be,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-cover":this.cover,"-fullscreen":this.fullscreen}}}});function za(e,t,s,i,a,r){const n=A("i-column"),$=A("i-row"),N=A("i-container");return o(),l("header",h(e.$attrs,{class:["header",e.classes]}),[I(N,{fluid:e.fluid},{default:b(()=>[I($,null,{default:b(()=>[I(n,null,{default:b(()=>[d(e.$slots,"default")]),_:3})]),_:3})]),_:3},8,["fluid"])],16)}const Aa=c(Ba,[["render",za]]),xe="IIcon",Va=p({name:xe,inheritAttrs:!1,props:{name:{type:String,default:""},size:{type:String,default:u(xe,"size"),validator:y}},setup(e){const t=St("inklineIcons"),s=se(()=>Ht(e.name)),i=se(()=>t[s.value]),a=se(()=>({"inkline-icon":!0,[`-${e.size}`]:!!e.size}));return Ct(()=>{s.value&&!t[s.value]&&console.error(`The icon ${s.value} is not registered.`)}),()=>{var r,n;return tt("svg",{class:a.value,...(r=i.value)==null?void 0:r.attributes},rt(((n=i.value)==null?void 0:n.children)||[]))}}});function Na(e,t,s,i,a,r){const n=A("icon");return o(),V(n,h(e.$attrs,{size:e.size}),null,16,["size"])}const bt=c(Va,[["render",Na]]),ye="IInput",Oa=p({name:ye,mixins:[R],inheritAttrs:!1,props:{color:{type:String,default:u(ye,"color")},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{type:[Array,Boolean],default:()=>["touched","dirty","invalid"]},id:{type:String,default:void 0},modelValue:{type:[String,Number],default:""},name:{type:[String,Number],default(){return B("input")}},plaintext:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},size:{type:String,default:u(ye,"size"),validator:y},tabindex:{type:[Number,String],default:0},type:{type:String,default:"text"},clearAriaLabel:{type:String,default:"Clear"}},emits:["update:modelValue","clear"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-error":this.hasError,"-readonly":this.isReadonly,"-prefixed":!!this.$slots.prefix,"-suffixed":!!this.$slots.suffix,"-prepended":!!this.$slots.prepend,"-appended":!!this.$slots.append}},hasError(){if(typeof this.error=="boolean")return this.error;if(this.schema&&this.error){let e=!0;return[].concat(this.error).forEach(t=>{e=e&&this.schema[t]}),e}return!1},tabIndex(){return this.isDisabled?-1:this.tabindex},isClearable(){return this.clearable&&!this.isDisabled&&!this.isReadonly&&this.value!==""},value(){return this.schema?this.schema.value:this.modelValue}},methods:{onBlur(e){var t,s;(s=(t=this.parent).onBlur)==null||s.call(t,this.name,e)},onInput(e){var t,s;(s=(t=this.parent).onInput)==null||s.call(t,this.name,e.target.value),this.$emit("update:modelValue",e.target.value)},onClear(e){this.$emit("update:modelValue",""),this.$emit("clear",e)},focus(){this.$refs.input.focus()}}}),La={key:0,class:"input-prepend"},Da={class:"input"},Ta={key:0,class:"input-prefix"},Pa=["value","name","id","type","tabindex","disabled","aria-disabled","readonly","aria-readonly"],Ea={key:1,class:"input-suffix"},Ra=["aria-label","aria-hidden"],Ma={key:1,class:"input-append"};function Fa(e,t,s,i,a,r){return o(),l("div",{class:z(["input-wrapper",e.classes])},[e.$slots.prepend?(o(),l("div",La,[d(e.$slots,"prepend")])):m("",!0),f("div",Da,[e.$slots.prefix?(o(),l("span",Ta,[d(e.$slots,"prefix")])):m("",!0),f("input",h(e.$attrs,{value:e.value,ref:"input",name:e.name,id:e.id,type:e.type,tabindex:e.tabIndex,disabled:e.isDisabled,"aria-disabled":e.isDisabled?"true":!1,readonly:e.isReadonly||e.plaintext,"aria-readonly":e.isReadonly||e.plaintext?"true":!1,onInput:t[0]||(t[0]=(...n)=>e.onInput&&e.onInput(...n)),onBlur:t[1]||(t[1]=(...n)=>e.onBlur&&e.onBlur(...n))}),null,16,Pa),e.$slots.suffix||e.clearable&&e.isClearable?(o(),l("span",Ea,[d(e.$slots,"clearable",{clear:e.onClear},()=>[e.clearable?k((o(),l("i",{key:0,class:"input-clear",role:"button","aria-label":e.clearAriaLabel,"aria-hidden":e.isClearable?"false":"true",onClick:t[2]||(t[2]=(...n)=>e.onClear&&e.onClear(...n))},null,8,Ra)),[[C,e.isClearable]]):m("",!0)]),d(e.$slots,"suffix")])):m("",!0)]),e.$slots.append?(o(),l("div",Ma,[d(e.$slots,"append")])):m("",!0)],2)}const te=c(Oa,[["render",Fa]]),ge="INumberInput",ja=p({name:ge,components:{IButton:ft},extends:te,inheritAttrs:!1,props:{color:{type:String,default:u(ge,"color")},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{type:String,default:""},modelValue:{type:[String,Number],default:""},name:{type:[String,Number],default(){return B("input")}},readonly:{type:Boolean,default:!1},size:{type:String,default:u(ge,"size"),validator:y},tabindex:{type:[Number,String],default:0},min:{type:[Number,String],default:-1/0},max:{type:[Number,String],default:1/0},precision:{type:Number,default:0},step:{type:Number,default:1}},emits:["update:modelValue"],watch:{modelValue:{immediate:!0,handler(e){var s,i;let t=(e||"").toString().replace(/^[^0-9-]/,"").replace(/^(-)[^0-9]/,"$1").replace(new RegExp(`^(-?[0-9]+)[^0-9${this.precision>0?".":""}]`),"$1");this.precision>0&&(t=t.replace(/^(-?[0-9]+\.)[^0-9]/,"$1").replace(new RegExp(`^(-?[0-9]+\\.[0-9]{0,${this.precision}}).*`),"$1")),parseFloat(t)>=parseFloat(this.max)&&(t=this.max.toString()),parseFloat(t)<=parseFloat(this.min)&&(t=this.min.toString()),(i=(s=this.parent).onInput)==null||i.call(s,this.name,t),this.$emit("update:modelValue",t)}}},methods:{decrease(){this.$emit("update:modelValue",this.formatPrecision((Number(this.modelValue)-this.step).toString()))},increase(){this.$emit("update:modelValue",this.formatPrecision((Number(this.modelValue)+this.step).toString()))},formatPrecision(e){const t=e.split(".");let s=t[1]||"";for(let i=s.length;i<this.precision;i+=1)s+="0";return this.precision>0?`${t[0]}.${s}`:t[0]},onBlurFormatPrecision(e){var t,s;this.$emit("update:modelValue",this.formatPrecision(Number(this.modelValue).toString())),(s=(t=this.parent).onBlur)==null||s.call(t,this.name,e)}}}),Ga={class:"input-prepend"},Za={class:"input"},Ka={key:0,class:"input-prefix"},Ha=["value","name","id","tabindex","disabled","aria-disabled","readonly","aria-readonly"],Wa={key:1,class:"input-suffix"},qa=["aria-label","aria-hidden"],Ua={class:"input-append"};function Qa(e,t,s,i,a,r){const n=A("i-button");return o(),l("div",{class:z(["input-wrapper -prepended -appended",e.classes])},[f("div",Ga,[d(e.$slots,"prepend"),I(n,{type:"button",color:e.color,size:e.size,disabled:e.disabled,class:"input-button-decrease",onClick:e.decrease},{default:b(()=>t[3]||(t[3]=[T(" - ")])),_:1},8,["color","size","disabled","onClick"])]),f("div",Za,[e.$slots.prefix?(o(),l("span",Ka,[d(e.$slots,"prefix")])):m("",!0),f("input",h(e.$attrs,{value:e.value,ref:"input",name:e.name,id:e.id,type:"text",tabindex:e.tabIndex,disabled:e.isDisabled,"aria-disabled":e.isDisabled?"true":!1,readonly:e.isReadonly,"aria-readonly":e.isReadonly?"true":!1,onInput:t[0]||(t[0]=(...$)=>e.onInput&&e.onInput(...$)),onBlur:t[1]||(t[1]=(...$)=>e.onBlur&&e.onBlur(...$))}),null,16,Ha),e.$slots.suffix||e.clearable&&e.isClearable?(o(),l("span",Wa,[d(e.$slots,"clearable",{clear:e.onClear},()=>[e.clearable?k((o(),l("i",{key:0,class:"input-clear",role:"button","aria-label":e.clearAriaLabel,"aria-hidden":e.isClearable?"false":"true",onClick:t[2]||(t[2]=(...$)=>e.onClear&&e.onClear(...$))},null,8,qa)),[[C,e.isClearable]]):m("",!0)]),d(e.$slots,"suffix")])):m("",!0)]),f("div",Ua,[I(n,{type:"button",color:e.color,size:e.size,disabled:e.disabled,class:"input-button-increase",onClick:e.increase},{default:b(()=>t[4]||(t[4]=[T(" + ")])),_:1},8,["color","size","disabled","onClick"]),d(e.$slots,"append")])],2)}const Ja=c(ja,[["render",Qa]]),ve="ITextarea",Ya=p({name:ve,extends:te,inheritAttrs:!1,props:{color:{type:String,default:u(ve,"color")},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{type:String,default:""},modelValue:{type:String,default:""},name:{type:[String,Number],default(){return B("textarea")}},readonly:{type:Boolean,default:!1},size:{type:String,default:u(ve,"size"),validator:y},tabindex:{type:[Number,String],default:0}},emits:["update:modelValue"]}),Xa={key:0,class:"input-prepend"},xa={class:"input"},_a={key:0,class:"input-prefix"},en=["value","name","id","tabindex","disabled","aria-disabled","readonly","aria-readonly"],tn={key:1,class:"input-suffix"},sn={key:1,class:"input-append"};function an(e,t,s,i,a,r){return o(),l("div",{class:z(["input-wrapper",e.classes])},[e.$slots.prepend?(o(),l("div",Xa,[d(e.$slots,"prepend")])):m("",!0),f("div",xa,[e.$slots.prefix?(o(),l("span",_a,[d(e.$slots,"prefix")])):m("",!0),f("textarea",h(e.$attrs,{value:e.value,ref:"input",role:"textbox",name:e.name,id:e.id,tabindex:e.tabIndex,disabled:e.isDisabled,"aria-disabled":e.isDisabled?"true":!1,readonly:e.isReadonly,"aria-readonly":e.isReadonly?"true":!1,"aria-multiline":"true",onInput:t[0]||(t[0]=(...n)=>e.onInput&&e.onInput(...n)),onBlur:t[1]||(t[1]=(...n)=>e.onBlur&&e.onBlur(...n))}),null,16,en),e.$slots.suffix||e.clearable&&e.isClearable?(o(),l("span",tn,[d(e.$slots,"clearable",{clear:e.onClear},()=>[k(f("i",{class:"input-clear","aria-label":"Clear",onClick:t[2]||(t[2]=(...n)=>e.onClear&&e.onClear(...n))},null,512),[[C,e.isClearable]])]),d(e.$slots,"suffix")])):m("",!0)]),e.$slots.append?(o(),l("div",sn,[d(e.$slots,"append")])):m("",!0)],2)}const nn=c(Ya,[["render",an]]),on="ILayout",rn=p({name:on,inheritAttrs:!1,props:{vertical:{type:Boolean,default:!1}},computed:{classes(){return{"-vertical":this.vertical}}}});function ln(e,t,s,i,a,r){return o(),l("main",h(e.$attrs,{class:["layout",e.classes]}),[d(e.$slots,"default",{},void 0,!0)],16)}const dn=c(rn,[["render",ln],["__scopeId","data-v-9a9f03c1"]]),un="ILayoutAside",pn=p({name:un,inheritAttrs:!1}),cn={class:"layout-aside-children"};function hn(e,t,s,i,a,r){return o(),l("aside",h(e.$attrs,{class:"layout-aside"}),[f("div",cn,[d(e.$slots,"default",{},void 0,!0)])],16)}const fn=c(pn,[["render",hn],["__scopeId","data-v-6e13c28d"]]),mn="ILayoutContent",$n=p({name:mn,inheritAttrs:!1});function bn(e,t,s,i,a,r){return o(),l("section",h(e.$attrs,{class:"layout-content"}),[d(e.$slots,"default",{},void 0,!0)],16)}const yn=c($n,[["render",bn],["__scopeId","data-v-5b197a5d"]]),gn="ILayoutFooter",vn=p({name:gn,inheritAttrs:!1});function kn(e,t,s,i,a,r){return o(),l("footer",h(e.$attrs,{class:"layout-footer"}),[d(e.$slots,"default",{},void 0,!0)],16)}const wn=c(vn,[["render",kn],["__scopeId","data-v-31bd8dbc"]]),In="ILayoutHeader",Cn=p({name:In,inheritAttrs:!1});function Sn(e,t,s,i,a,r){return o(),l("header",h(e.$attrs,{class:"layout-header"}),[d(e.$slots,"default",{},void 0,!0)],16)}const Bn=c(Cn,[["render",Sn],["__scopeId","data-v-ece9ef9b"]]),ke="IListGroup",zn=p({name:ke,inheritAttrs:!1,props:{border:{type:Boolean,default:!0},color:{type:String,default:u(ke,"color")},size:{type:String,default:u(ke,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-border":this.border}}}});function An(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["list-group",e.classes],role:"list"}),[d(e.$slots,"default")],16)}const Vn=c(zn,[["render",An]]),Nn="IListGroupItem",On=p({name:Nn,mixins:[K],inheritAttrs:!1,props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},tag:{type:String,default:"div"},tabindex:{type:[Number,String],default:0}},computed:{ariaDisabled(){return this.role==="link"?null:this.disabled?"true":"false"},classes(){return{"-active":this.active,"-disabled":this.disabled}},role(){return this.$attrs.to||this.$attrs.href?"link":"listitem"},tabIndex(){return this.disabled?-1:this.tabindex}}});function Ln(e,t,s,i,a,r){return o(),V(X(e.isTag),h(e.$attrs,{class:["list-group-item",e.classes],tag:e.tag,role:e.role,tabindex:e.tabIndex,disabled:e.disabled,"aria-disabled":e.ariaDisabled}),{default:b(()=>[d(e.$slots,"default")]),_:3},16,["tag","role","tabindex","class","disabled","aria-disabled"])}const Dn=c(On,[["render",Ln]]),Tn=Pt(Tt),Pn="IMark",En=p({name:Pn,inheritAttrs:!1,props:{text:{type:String,default:""},query:{type:String,default:""}},computed:{parts(){return Tn(this.text,this.query)}}}),Rn={key:0};function Mn(e,t,s,i,a,r){return o(),l("span",Bt(zt(e.$attrs)),[(o(!0),l(G,null,_(e.parts,({text:n,marked:$})=>(o(),l(G,null,[$?(o(),l("mark",Rn,F(n),1)):(o(),l(G,{key:1},[T(F(n),1)],64))],64))),256))],16)}const yt=c(En,[["render",Mn]]),Fn="IMedia",jn=p({name:Fn,inheritAttrs:!1}),Gn={class:"media-body"};function Zn(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:"media"}),[d(e.$slots,"image"),f("div",Gn,[d(e.$slots,"default")])],16)}const Kn=c(jn,[["render",Zn]]),S={instances:{},stack:[],zIndex:1050,register(e){e&&e.name&&(S.instances[e.name]=e)},unregister(e){e&&e.name&&(S.instances[e.name]=null,delete S.instances[e.name])},open(e){typeof window>"u"||(S.stack.push(e),S.instances[e].$el.style.zIndex=S.zIndex++)},close(e){typeof window>"u"||S.stack.splice(S.stack.indexOf(e),1)},getTopOverlay(){const e=S.stack.slice(-1)[0]||"";return S.instances[e]},onPressEscape(){const e=S.getTopOverlay();e&&e.closeOnPressEscape&&e.hide()}};typeof window<"u"&&window.addEventListener("keydown",e=>{v("esc",e)&&S.onPressEscape()});const we="IModal",Hn=p({name:we,directives:{ClickOutside:H},inheritAttrs:!1,props:{closeOnPressEscape:{type:Boolean,default:!0},closeAriaLabel:{type:String,default:"Close"},color:{type:String,default:u(we,"color")},disabled:{type:Boolean,default:!1},hideOnClickOutside:{type:Boolean,default:!0},name:{type:String,default(){return B("modal")}},showClose:{type:Boolean,default:!0},size:{type:String,default:u(we,"size"),validator:y},modelValue:{type:Boolean,default:!1},transition:{type:String,default:"zoom-in-center-transition"}},emits:["update:modelValue"],data(){return{visible:this.modelValue}},computed:{classes(){return{"-disabled":this.disabled,...g(this),[`-${this.size}`]:!!this.size}}},watch:{modelValue(e){e?this.show():this.hide()}},mounted(){S.register(this)},unmounted(){S.unregister(this)},methods:{show(){this.disabled||(this.visible=!0,this.$emit("update:modelValue",!0),S.open(this.name),typeof window<"u"&&Me(window.document.body,"-modal"))},hide(){this.disabled||(this.visible=!1,this.$emit("update:modelValue",!1),S.close(this.name),typeof window<"u"&&lt(window.document.body,"-modal"))},onClickOutside(){this.hideOnClickOutside&&this.hide()}}}),Wn=["aria-hidden","id","name","aria-labelledby"],qn={class:"modal"},Un=["id"],Qn=["aria-label"],Jn={key:1,class:"modal-body"},Yn={key:2,class:"modal-footer"};function Xn(e,t,s,i,a,r){const n=Z("click-outside");return o(),V(L,{name:"fade-in-transition"},{default:b(()=>[k(f("div",h(e.$attrs,{class:["modal-wrapper",e.classes],role:"dialog","aria-modal":"true","aria-hidden":e.visible?"false":"true",id:e.name,name:e.name,"aria-labelledby":`${e.name}-header`}),[I(L,{name:e.transition},{default:b(()=>[k((o(),l("div",qn,[e.$slots.header?(o(),l("div",{key:0,class:"modal-header",id:`${e.name}-header`},[d(e.$slots,"header"),e.showClose?(o(),l("button",{key:0,class:"close","aria-hidden":"true","aria-label":e.closeAriaLabel,onClick:t[0]||(t[0]=(...$)=>e.hide&&e.hide(...$))},[d(e.$slots,"close",{},()=>[t[1]||(t[1]=f("i",{class:"icon"},null,-1))])],8,Qn)):m("",!0)],8,Un)):m("",!0),e.$slots.default?(o(),l("div",Jn,[d(e.$slots,"default")])):m("",!0),e.$slots.footer?(o(),l("div",Yn,[d(e.$slots,"footer")])):m("",!0)])),[[n,e.onClickOutside],[C,e.visible]])]),_:3},8,["name"])],16,Wn),[[C,e.visible]])]),_:3})}const xn=c(Hn,[["render",Xn]]),Ie="INav",_n=p({name:Ie,provide(){return{nav:this}},inject:{navbar:{default:()=>({onItemClick:()=>{}})},sidebar:{default:()=>({onItemClick:()=>{}})}},inheritAttrs:!1,props:{color:{type:String,default:u(Ie,"color")},size:{type:String,default:u(Ie,"size"),validator:y},vertical:{type:Boolean,default:!1}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-vertical":this.vertical}}},methods:{onItemClick(){[this.navbar,this.sidebar].forEach(e=>{e.onItemClick()})}}});function eo(e,t,s,i,a,r){return o(),l("nav",h(e.$attrs,{class:["nav",e.classes],role:"menubar"}),[d(e.$slots,"default")],16)}const to=c(_n,[["render",eo]]),so="INavItem",io=p({name:so,mixins:[K],inject:{nav:{default:()=>({onItemClick:()=>{}})}},inheritAttrs:!1,props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},stopPropagation:{type:Boolean,default:!1},tag:{type:String,default:"div"},tabindex:{type:[Number,String],default:0}},computed:{ariaDisabled(){return this.role==="link"?null:this.disabled?"true":"false"},classes(){return{"-active":this.active,"-disabled":this.disabled}},role(){return this.$attrs.to||this.$attrs.href?"link":"menuitem"},tabIndex(){return this.disabled?-1:this.tabindex}},methods:{onClick(e){this.stopPropagation||this.nav.onItemClick(this,e)}}});function ao(e,t,s,i,a,r){return o(),V(X(e.isTag),h(e.$attrs,{class:["nav-item",e.classes],role:e.role,tag:e.tag,tabindex:e.tabIndex,disabled:e.disabled,"aria-disabled":e.ariaDisabled,onClick:e.onClick}),{default:b(()=>[d(e.$slots,"default")]),_:3},16,["role","tag","tabindex","class","disabled","aria-disabled","onClick"])}const no=c(io,[["render",ao]]),Ce="INavbar",oo=p({name:Ce,components:{IContainer:Ke,IRow:He,IColumn:Ze,IHamburgerMenu:$t},directives:{ClickOutside:H},mixins:[pt],provide(){return{navbar:this}},inheritAttrs:!1,props:{collapseOnItemClick:{type:Boolean,default:!0},collapseOnClickOutside:{type:Boolean,default:!0},color:{type:String,default:u(Ce,"color")},fluid:{type:Boolean,default:!1},size:{type:String,default:u(Ce,"size"),validator:y},menuAnimation:{type:String,default:"close"}},emits:["update:modelValue"],computed:{classes(){return{...this.collapsibleClasses,...g(this),[`-${this.size}`]:!!this.size}}},methods:{onItemClick(){this.collapseOnItemClick&&this.open&&this.setOpen(!1)},onClickOutside(){this.collapseOnClickOutside&&this.open&&this.setOpen(!1)}}});function ro(e,t,s,i,a,r){const n=A("i-hamburger-menu"),$=A("i-column"),N=A("i-row"),W=A("i-container"),w=Z("click-outside");return k((o(),l("nav",h(e.$attrs,{class:["navbar",e.classes]}),[I(W,{fluid:e.fluid},{default:b(()=>[I(N,null,{default:b(()=>[I($,null,{default:b(()=>[I(n,{class:"collapse-toggle",animation:e.menuAnimation,color:e.color,modelValue:e.open,"onUpdate:modelValue":e.toggleOpen},null,8,["animation","color","modelValue","onUpdate:modelValue"]),d(e.$slots,"default")]),_:3})]),_:3})]),_:3},8,["fluid"])],16)),[[w,e.onClickOutside]])}const lo=c(oo,[["render",ro]]),uo="INavbarBrand",po=p({name:uo,mixins:[K],inheritAttrs:!1,props:{tag:{type:String,default:"div"}}});function co(e,t,s,i,a,r){return o(),V(X(e.isTag),h(e.$attrs,{class:"navbar-brand",tag:e.tag,translate:"no"}),{default:b(()=>[d(e.$slots,"default")]),_:3},16,["tag"])}const ho=c(po,[["render",co]]),fo="INavbarCollapsible",mo=p({name:fo,components:{IExpandTransition:mt},inject:{navbar:{default:()=>({})}},inheritAttrs:!1,computed:{visible(){const e=typeof window>"u";return this.navbar.open||!this.navbar.collapsible||e}}}),$o=["aria-hidden","aria-expanded"];function bo(e,t,s,i,a,r){const n=A("i-expand-transition");return o(),V(n,null,{default:b(()=>[k(f("div",h(e.$attrs,{class:"navbar-collapsible","aria-hidden":e.visible?"false":"true","aria-expanded":e.visible?"true":"false"}),[d(e.$slots,"default")],16,$o),[[C,e.visible]])]),_:3})}const yo=c(mo,[["render",bo]]),Se="IPagination",go=p({name:Se,inheritAttrs:!1,props:{ariaLabel:{type:String,default:"Pagination"},color:{type:String,default:u(Se,"color")},itemsPerPage:{type:Number,default:20},itemsTotal:{type:Number,default:0},limit:{type:[Number,Object],default(){return{xs:3,sm:5}}},quickLink:{type:Boolean,default:!1},modelValue:{type:Number,default:1},size:{type:String,default:u(Se,"size"),validator:y}},emits:["update:modelValue"],data(){return{pageLimit:5}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}},pageCount(){return Math.ceil(this.itemsTotal/this.itemsPerPage)},showQuickPrevious(){return this.pageCount>this.pageLimit&&this.modelValue>this.pageLimit-(this.pageLimit-1)/2},showQuickNext(){return this.pageCount>this.pageLimit&&this.modelValue<this.pageCount-(this.pageLimit-1)/2},pages(){const e=[];if(this.showQuickPrevious&&!this.showQuickNext){const t=this.pageCount-(this.pageLimit-2);for(let s=t;s<this.pageCount;s++)e.push(s)}else if(!this.showQuickPrevious&&this.showQuickNext)for(let t=2;t<this.pageLimit;t++)e.push(t);else if(this.showQuickPrevious&&this.showQuickNext){const t=Math.floor(this.pageLimit/2)-1;for(let s=this.modelValue-t;s<=this.modelValue+t;s++)e.push(s)}else for(let t=2;t<this.pageCount;t++)e.push(t);return e}},created(){this.debouncedOnWindowResize=Vt(this.onWindowResize,250),typeof window<"u"&&(window.addEventListener("resize",this.debouncedOnWindowResize),this.onWindowResize())},unmounted(){typeof window<"u"&&window.removeEventListener("resize",this.debouncedOnWindowResize)},methods:{next(){this.modelValue!==this.pageCount&&this.onClick(this.modelValue+1)},quickNext(){if(!this.quickLink)return;const e=this.modelValue+(this.pageLimit-2);this.onClick(e>this.pageCount?this.pageCount:e)},previous(){this.modelValue!==1&&this.onClick(this.modelValue-1)},quickPrevious(){if(!this.quickLink)return;const e=this.modelValue-(this.pageLimit-2);this.onClick(e<1?1:e)},onClick(e){this.$emit("update:modelValue",e)},onWindowResize(){if(typeof this.limit=="number")return this.pageLimit=this.limit,this.pageLimit;for(const e of je.slice().reverse())if(this.limit.hasOwnProperty(e)&&typeof window<"u"&&window.innerWidth>=x[e][0])return this.pageLimit=this.limit[e],this.pageLimit}}}),vo=["aria-label"],ko={class:"pagination-items"},wo={"aria-hidden":"true"},Io=["aria-current","onClick"],Co={"aria-hidden":"true"};function So(e,t,s,i,a,r){return o(),l("nav",h(e.$attrs,{class:["pagination",e.classes],role:"navigation","aria-label":e.ariaLabel}),[f("ul",ko,[e.pageCount>0?(o(),l("li",{key:0,class:z(["pagination-item -previous",{"-disabled":e.modelValue===1}]),onClick:t[0]||(t[0]=(...n)=>e.previous&&e.previous(...n))},[f("span",wo,[d(e.$slots,"previous",{},()=>[t[6]||(t[6]=T("<"))])])],2)):m("",!0),e.pageCount>0?(o(),l("li",{key:1,class:z(["pagination-item -first",{"-active":e.modelValue===1}]),onClick:t[1]||(t[1]=n=>e.onClick(1))}," 1 ",2)):m("",!0),e.showQuickPrevious?(o(),l("li",{key:2,class:z(["pagination-item -quick-previous",{"-disabled":!e.quickLink}]),onClick:t[2]||(t[2]=(...n)=>e.quickPrevious&&e.quickPrevious(...n))}," … ",2)):m("",!0),(o(!0),l(G,null,_(e.pages,n=>(o(),l("li",{class:z(["pagination-item",{"-active":e.modelValue===n}]),"aria-current":e.modelValue===n?"page":!1,onClick:$=>e.onClick(n)},F(n),11,Io))),256)),e.showQuickNext?(o(),l("li",{key:3,class:z(["pagination-item -quick-next",{"-disabled":!e.quickLink}]),onClick:t[3]||(t[3]=(...n)=>e.quickNext&&e.quickNext(...n))}," … ",2)):m("",!0),e.pageCount>1?(o(),l("li",{key:4,class:z(["pagination-item -last",{"-active":e.modelValue===e.pageCount}]),onClick:t[4]||(t[4]=n=>e.onClick(e.pageCount))},F(e.pageCount),3)):m("",!0),e.pageCount>0?(o(),l("li",{key:5,class:z(["pagination-item -next",{"-disabled":e.modelValue===e.pageCount}]),onClick:t[5]||(t[5]=(...n)=>e.next&&e.next(...n))},[f("span",Co,[d(e.$slots,"next",{},()=>[t[7]||(t[7]=T(">"))])])],2)):m("",!0)])],16,vo)}const Bo=c(go,[["render",So]]),Be="IPopover",zo=p({name:Be,directives:{ClickOutside:H},mixins:[ee,Ge],inheritAttrs:!1,props:{color:{type:String,default:u(Be,"color")},disabled:{type:Boolean,default:!1},modelValue:{type:Boolean,default:!1},name:{type:String,default(){return B("popover")}},arrow:{type:Boolean,default:!0},placement:{type:String,default:"top"},trigger:{type:[String,Array],default:()=>["click"]},offset:{type:Number,default:6},interactable:{type:Boolean,default:!1},popperOptions:{type:Object,default:()=>({})},size:{type:String,default:u(Be,"size"),validator:y}},emits:["click-outside","update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}},methods:{onEscape(){this.visible=!1,this.$emit("update:modelValue",!1)},handleClickOutside(e){this.visible=!1,this.$emit("update:modelValue",!1),this.onClickOutside(e)}}}),Ao=["id"],Vo=["aria-describedby","aria-disabled","aria-expanded"],No=["id","aria-hidden"],Oo={key:0,"data-popper-arrow":""},Lo={key:1,class:"popover-header"},Do={key:2,class:"popover-body"},To={key:3,class:"popover-footer"};function Po(e,t,s,i,a,r){const n=Z("click-outside");return k((o(),l("div",h(e.$attrs,{class:["popover-wrapper",e.classes],ref:"wrapper",id:e.name,onKeyup:t[0]||(t[0]=M((...$)=>e.onEscape&&e.onEscape(...$),["esc"]))}),[f("div",{class:"popover-trigger",ref:"trigger","aria-describedby":`${e.name}-popup`,"aria-disabled":e.disabled?"true":"false","aria-expanded":e.visible?"true":"false"},[d(e.$slots,"default")],8,Vo),I(L,{name:"zoom-in-top-transition",onAfterLeave:e.destroyPopper},{default:b(()=>[k(f("div",{class:"popover",ref:"popup",role:"tooltip","aria-live":"polite",id:`${e.name}-popup`,"aria-hidden":e.visible?"false":"true"},[e.arrow?(o(),l("span",Oo)):m("",!0),e.$slots.header?(o(),l("div",Lo,[d(e.$slots,"header")])):m("",!0),e.$slots.body?(o(),l("div",Do,[d(e.$slots,"body")])):m("",!0),e.$slots.footer?(o(),l("div",To,[d(e.$slots,"footer")])):m("",!0)],8,No),[[C,e.visible]])]),_:3},8,["onAfterLeave"])],16,Ao)),[[n,e.onClickOutside]])}const Eo=c(zo,[["render",Po]]),ze="IProgress",Ro=p({name:ze,provide(){return{progress:this}},inheritAttrs:!1,props:{color:{type:String,default:u(ze,"color")},min:{type:[String,Number],default:0},max:{type:[String,Number],default:100},size:{type:String,default:u(ze,"size"),validator:y}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}}});function Mo(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["progress",e.classes]}),[d(e.$slots,"default")],16)}const Fo=c(Ro,[["render",Mo]]),_e="IProgressBar",jo=p({name:_e,inject:{progress:{default:()=>({min:0,max:100})}},inheritAttrs:!1,props:{color:{type:String,default:u(_e,"color","primary")},value:{type:[String,Number],default:0}},computed:{computedValue(){const e=typeof this.min=="string"?parseFloat(this.min):this.min,t=typeof this.value=="string"?parseFloat(this.value.replace("%","")):this.value,s=typeof this.max=="string"?parseFloat(this.max):this.max;return(t-e)*100/(s-e)},min(){return this.progress.min},max(){return this.progress.max},style(){return{width:`${this.computedValue}%`}},classes(){return{...g(this)}}}}),Go=["aria-valuemin","aria-valuemax","aria-valuenow"];function Zo(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["progress-bar",e.classes],style:e.style,role:"progressbar","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-valuenow":e.computedValue}),[d(e.$slots,"default")],16,Go)}const Ko=c(jo,[["render",Zo]]),Ae="IRadio",Ho=p({name:Ae,mixins:[R],inheritAttrs:!1,props:{color:{type:String,default:u(Ae,"color")},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},value:{default:""},modelValue:{default:!1},name:{type:[String,Number],default(){return B("radio")}},native:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},size:{type:String,default:u(Ae,"size"),validator:y},tabindex:{type:[Number,String],default:0}},emits:["update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-native":this.native}},checked(){return this.formGroup.checked===this.value},tabIndex(){return this.isDisabled?-1:this.tabindex}},methods:{clickInputRef(){this.isReadonly||this.$refs.input.click()},onChange(e){var t,s,i,a;(s=(t=this.parent).onInput)==null||s.call(t,this.name,e.target.checked),(a=(i=this.formGroup).onChange)==null||a.call(i,this.value),this.$emit("update:modelValue",e.target.checked)},onBlur(e){var t,s;(s=(t=this.parent).onBlur)==null||s.call(t,this.name,e)}}}),Wo=["checked","name","disabled","readonly",".indeterminate"],qo=["aria-checked","aria-disabled","aria-readonly","tabindex"];function Uo(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["radio",e.classes],role:"radio"}),[f("input",{checked:e.checked,ref:"input",type:"radio",tabindex:"-1",name:e.name,disabled:e.isDisabled,readonly:e.isReadonly,".indeterminate":e.indeterminate,onChange:t[0]||(t[0]=(...n)=>e.onChange&&e.onChange(...n))},null,40,Wo),f("label",{class:"radio-label","aria-checked":e.checked,"aria-disabled":e.isDisabled,"aria-readonly":e.isReadonly,tabindex:e.tabIndex,onBlur:t[1]||(t[1]=(...n)=>e.onBlur&&e.onBlur(...n)),onClick:t[2]||(t[2]=(...n)=>e.clickInputRef&&e.clickInputRef(...n)),onKeydown:t[3]||(t[3]=M(Y((...n)=>e.clickInputRef&&e.clickInputRef(...n),["stop","prevent"]),["space"]))},[d(e.$slots,"default")],40,qo)],16)}const Qo=c(Ho,[["render",Uo]]),Ve="IRadioGroup",Jo=p({name:Ve,mixins:[R],provide(){return{formGroup:this}},inheritAttrs:!1,props:{color:{type:String,default:u(Ve,"color")},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},modelValue:{default:""},name:{type:[String,Number],default(){return B("radio-group")}},readonly:{type:Boolean,default:!1},size:{type:String,default:u(Ve,"size"),validator:y}},emits:["update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly,"-inline":this.inline}},checked(){return this.schema?this.schema.value:this.modelValue}},methods:{onChange(e){var t,s;(s=(t=this.parent).onInput)==null||s.call(t,this.name,e),this.$emit("update:modelValue",e)}}}),Yo=["name"];function Xo(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["form-group radio-group",e.classes],name:e.name,role:"radiogroup"}),[d(e.$slots,"default",{},void 0,!0)],16,Yo)}const xo=c(Jo,[["render",Xo],["__scopeId","data-v-fa4fe77a"]]),_o="ISelectOption",er=p({name:_o,inject:{select:{default:()=>({})}},inheritAttrs:!1,props:{active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},label:{type:String,default:""},tabindex:{type:[Number,String],default:0},value:{type:[Object,String,Number],default:()=>({})}},computed:{ariaDisabled(){return this.disabled?"true":"false"},ariaSelected(){return this.active?"true":"false"},isActive(){return this.active||this.value===this.select.modelValue},classes(){return{"-active":this.isActive,"-disabled":this.disabled}},tabIndex(){return this.disabled?-1:this.tabindex}},methods:{onClick(){this.disabled||this.select.onInput(this.value,this.label)}}}),tr=["tabindex","aria-disabled","aria-selected"];function sr(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["select-option",e.classes],role:"option",tabindex:e.tabIndex,"aria-disabled":e.ariaDisabled,"aria-selected":e.ariaSelected,onClick:t[0]||(t[0]=(...n)=>e.onClick&&e.onClick(...n))}),[d(e.$slots,"default",{},()=>[T(F(e.label),1)])],16,tr)}const gt=c(er,[["render",sr]]),Ne="ISelect",ir=p({name:Ne,directives:{ClickOutside:H},components:{IInput:te,IIcon:bt,ISelectOption:gt,IMark:yt},mixins:[R,ee],provide(){return{select:this}},props:{animationDuration:{type:Number,default:300},autocomplete:{type:Boolean,default:!1},arrow:{type:Boolean,default:!0},color:{type:String,default:u(Ne,"color")},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},idField:{type:String,default:"id"},keydownTrigger:{type:Array,default:()=>["up","down","enter","space","tab","esc"]},keydownItem:{type:Array,default:()=>["up","down","enter","space","tab","esc"]},label:{type:[String,Function],default:"label"},loading:{type:Boolean,default:!1},modelValue:{type:[Object,String,Number],default:null},minLength:{type:Number,default:0},name:{type:[String,Number],default:()=>B("select")},options:{type:Array,default:()=>[]},placeholder:{type:String,default:""},offset:{type:Number,default:6},placement:{type:String,default:"bottom"},popperOptions:{type:Object,default:()=>({modifiers:[...ct({offset:8}),Ns()]})},readonly:{type:Boolean,default:!1},scrollTolerance:{type:Number,default:160},selectFirstOptionOnEnter:{type:Boolean,default:!0},size:{type:String,default:u(Ne,"size"),validator:y},tabindex:{type:[Number,String],default:0},type:{type:String,default:"text"},total:{type:Number,default:void 0}},emits:["update:modelValue","search","pagination"],data(){return{animating:!1,visible:!1,inputValue:this.computeLabel(this.modelValue)||""}},computed:{wrapperClasses(){return{...g(this),[`-${this.size}`]:!!this.size}},popupClasses(){return{"-disabled":this.isDisabled,"-readonly":this.isReadonly}},tabIndex(){return this.isDisabled?-1:this.tabindex},isClearable(){return this.value&&this.clearable&&!this.isDisabled&&!this.isReadonly},value(){return this.schema?this.schema.value:this.modelValue},inputPlaceholder(){return this.value?this.computeLabel(this.value):this.placeholder}},watch:{value(e){this.inputValue=this.computeLabel(e)},inputValue(e){const t=this.inputMatchesLength(e),s=this.inputMatchesLabel(e);t&&!s&&!this.animating&&this.show(),this.$emit("search",this.inputValue)},options(){this.visible&&this.createPopper()}},methods:{onInput(e,t){var s,i;e.disabled||(this.hide(),t&&(this.inputValue=t),(i=(s=this.parent).onInput)==null||i.call(s,this.name,e),this.$emit("update:modelValue",e))},onClear(){this.animating=!0,this.$emit("update:modelValue",null),this.$nextTick(()=>{this.animating=!1})},onFocus(e){if(!this.value&&this.options.length===0)return;this.autocomplete&&(this.inputValue=""),(!e.relatedTarget||!this.$refs.wrapper.contains(e.relatedTarget))&&this.inputShouldShowSelect(this.inputValue)&&this.show()},onBlur(e){var s,i;(!e.relatedTarget||!this.$refs.wrapper.contains(e.relatedTarget))&&(this.hide(),this.inputValue=this.computeLabel(this.value)),(i=(s=this.parent).onBlur)==null||i.call(s,this.name,e)},onClick(){this.autocomplete&&(this.inputValue=""),this.inputShouldShowSelect(this.inputValue)&&this.show()},onClickOutside(){this.hide()},onClickCaret(e){this.visible?this.onBlur(e):(this.focus(),this.onFocus(e)),e.preventDefault(),e.stopPropagation()},onScroll(){if(isNaN(this.total))return;const e=this.$refs.body.scrollTop,t=parseInt(getComputedStyle(this.$refs.body).height,10),s=parseInt(getComputedStyle(this.$refs.options).height,10),i=e+t>s-this.scrollTolerance,a=this.options.length>=this.total;i&&!a&&this.options.length>0&&!this.loading&&this.$emit("pagination")},onWindowResize(){this.onScroll(),this.visible&&this.$nextTick().then(()=>this.createPopper())},onTriggerKeyDown(e){if(this.keydownTrigger.length===0)return;const t=this.getFocusableItems(),s=t.findIndex(r=>r.active),i=s>-1?s:0,a=t[i];switch(!0){case(v("up",e)&&this.keydownTrigger.includes("up")):case(v("down",e)&&this.keydownTrigger.includes("down")):this.show(),setTimeout(()=>{a.focus()},this.visible?0:this.animationDuration),e.preventDefault(),e.stopPropagation();break;case(v("enter",e)&&this.keydownTrigger.includes("enter")):if(this.selectFirstOptionOnEnter&&(!this.value||!this.inputMatchesLabel(this.inputValue))){const r=this.options.find(n=>!n.disabled);r&&(this.onInput(r),this.focus())}else this.onClick();this.visible||setTimeout(()=>{a.focus()},this.animationDuration),e.preventDefault();break;case(v("tab",e)&&this.keydownTrigger.includes("tab")):case(v("esc",e)&&this.keydownTrigger.includes("esc")):this.hide();break}},onItemKeyDown(e){if(this.keydownItem.length!==0)switch(!0){case(v("up",e)&&this.keydownItem.includes("up")):case(v("down",e)&&this.keydownItem.includes("down")):const t=this.getFocusableItems(),s=t.findIndex(r=>r===e.target),i=t.length-1;let a;v("up",e)?a=s>0?s-1:0:a=s<i?s+1:i,t[a].focus(),e.preventDefault(),e.stopPropagation();break;case(v("enter",e)&&this.keydownItem.includes("enter")):case(v("space",e)&&this.keydownItem.includes("space")):e.target.click(),this.focus(),e.preventDefault();break;case(v("tab",e)&&this.keydownItem.includes("tab")):case(v("esc",e)&&this.keydownItem.includes("esc")):this.hide(),this.focus(),e.preventDefault();break}},onEscape(){this.hide()},show(){this.isDisabled||this.isReadonly||this.visible||(this.visible=!0,this.createPopper())},hide(){this.visible&&(this.visible=!1,this.animating=!0,setTimeout(()=>{this.animating=!1},this.animationDuration))},focus(){this.$refs.trigger.focus()},getFocusableItems(){const e=[];for(const t of this.$refs.options.children)Fe(t)&&e.push(t);return e},getElementHeight(e){const t=getComputedStyle(e);return t.height?Math.ceil(parseFloat(t.height)):NaN},inputMatchesLabel(e){return this.value&&e===this.computeLabel(this.value)},inputMatchesLength(e){return this.minLength===0||e&&e.length>=this.minLength},inputShouldShowSelect(e){return this.autocomplete?this.inputMatchesLength(e)&&!this.inputMatchesLabel(e):!0},computeLabel(e){return typeof e!="object"?this.inputValue:nt(this.label)?this.label(e):j(e,this.label)}}}),ar=["id","name","aria-owns","aria-expanded"],nr=["id","aria-hidden"],or={key:0,"data-popper-arrow":""},rr={key:1,class:"select-header"},lr={key:0,class:"select-no-results"},dr={class:"select-options",ref:"options"},ur={key:2,class:"select-footer"};function pr(e,t,s,i,a,r){const n=A("i-input"),$=A("i-mark"),N=A("i-select-option"),W=Z("click-outside");return k((o(),l("div",h(e.$attrs,{class:["select-wrapper",e.wrapperClasses],id:e.name,name:e.name,ref:"wrapper",role:"combobox","aria-haspopup":"listbox","aria-owns":`${e.name}-options`,"aria-expanded":e.visible?"true":"false",onKeyup:t[3]||(t[3]=M((...w)=>e.onEscape&&e.onEscape(...w),["esc"]))}),[I(n,{modelValue:e.inputValue,"onUpdate:modelValue":t[1]||(t[1]=w=>e.inputValue=w),ref:"trigger",autocomplete:"off","aria-autocomplete":"both","aria-controls":`${e.name}-options`,disabled:e.isDisabled,readonly:e.isReadonly,tabindex:e.tabIndex,plaintext:!e.autocomplete,placeholder:e.inputPlaceholder,clearable:e.isClearable,color:e.color,size:e.size,name:`${e.name}-input`,onClick:e.onClick,onFocus:e.onFocus,onBlur:e.onBlur,onClear:e.onClear,onKeydown:e.onTriggerKeyDown},At({suffix:b(()=>[d(e.$slots,"suffix"),f("button",{class:"select-caret","aria-hidden":"true",role:"button",onClick:t[0]||(t[0]=(...w)=>e.onClickCaret&&e.onClickCaret(...w))})]),_:2},[e.$slots.prepend?{name:"prepend",fn:b(()=>[d(e.$slots,"prepend")]),key:"0"}:void 0,e.$slots.prefix?{name:"prefix",fn:b(()=>[d(e.$slots,"prefix")]),key:"1"}:void 0,e.$slots.append?{name:"append",fn:b(()=>[d(e.$slots,"append")]),key:"2"}:void 0]),1032,["modelValue","aria-controls","disabled","readonly","tabindex","plaintext","placeholder","clearable","color","size","name","onClick","onFocus","onBlur","onClear","onKeydown"]),I(L,{name:"zoom-in-top-transition",onAfterLeave:e.destroyPopper},{default:b(()=>[k(f("div",{class:z(["select",e.popupClasses]),id:`${e.name}-options`,role:"listbox",ref:"popup","aria-hidden":e.visible?"false":"true"},[e.arrow?(o(),l("span",or)):m("",!0),e.$slots.header?(o(),l("div",rr,[d(e.$slots,"header")])):m("",!0),f("div",{class:"select-body",ref:"body",onScroll:t[2]||(t[2]=(...w)=>e.onScroll&&e.onScroll(...w))},[!e.$slots.default&&e.options.length===0?(o(),l("div",lr,[d(e.$slots,"no-results",{},()=>[t[4]||(t[4]=T(" There are no results for your query. "))])])):m("",!0),f("div",dr,[d(e.$slots,"default"),(o(!0),l(G,null,_(e.options,w=>(o(),V(N,{key:w[e.idField],active:e.value&&e.value[e.idField]===w[e.idField],disabled:w.disabled,value:w,onKeydown:e.onItemKeyDown},{default:b(()=>[d(e.$slots,"option",{option:w},()=>[e.autocomplete&&e.inputValue!==e.computeLabel(w)?(o(),V($,{key:0,text:e.computeLabel(w),query:e.inputValue},null,8,["text","query"])):(o(),l(G,{key:1},[T(F(e.computeLabel(w)),1)],64))])]),_:2},1032,["active","disabled","value","onKeydown"]))),128))],512)],544),e.$slots.footer?(o(),l("div",ur,[d(e.$slots,"footer")])):m("",!0)],10,nr),[[C,e.visible]])]),_:3},8,["onAfterLeave"])],16,ar)),[[W,e.onClickOutside]])}const cr=c(ir,[["render",pr]]),Oe="ISidebar",hr=p({name:Oe,mixins:[pt],provide(){return{sidebar:this}},inheritAttrs:!1,props:{ariaLabel:{type:String,default:"Sidebar"},collapseOnItemClick:{type:Boolean,default:!0},collapseOnClickOutside:{type:Boolean,default:!0},collapsePosition:{type:String,default:"absolute"},color:{type:String,default:u(Oe,"color")},placement:{type:String,default:"left"},size:{type:String,default:u(Oe,"size"),validator:y}},emits:["update:modelValue"],computed:{classes(){return{...this.collapsibleClasses,...g(this),[`-${this.size}`]:!!this.size,[`-collapse-${this.collapsePosition}`]:!0,[`-placement-${this.placement}`]:!0}},sidebarWrapperTransition(){return this.collapsePosition!=="relative"?"sidebar-wrapper-none-transition":"sidebar-wrapper-transition"},sidebarTransition(){return this.collapsePosition!=="relative"?"sidebar-transition":"sidebar-none-transition"}},methods:{onItemClick(){this.collapseOnItemClick&&this.open&&this.setOpen(!1)},onOverlayClick(){this.collapseOnClickOutside&&this.open&&this.setOpen(!1)}}}),fr=["aria-label"],mr={class:"sidebar"},$r={class:"sidebar-content"};function br(e,t,s,i,a,r){return o(),V(L,{name:e.sidebarWrapperTransition},{default:b(()=>[k(f("aside",h(e.$attrs,{role:"complementary",class:["sidebar-wrapper",e.classes],"aria-label":e.ariaLabel,ref:"wrapper"}),[I(L,{name:e.sidebarTransition},{default:b(()=>[k(f("div",mr,[f("div",$r,[d(e.$slots,"default")])],512),[[C,e.collapsePosition==="relative"||e.open||!e.collapsible]])]),_:3},8,["name"]),I(L,{name:"sidebar-overlay-transition"},{default:b(()=>[e.collapsePosition!=="relative"?k((o(),l("div",{key:0,class:"sidebar-overlay",onClick:t[0]||(t[0]=(...n)=>e.onOverlayClick&&e.onOverlayClick(...n))},null,512)),[[C,e.open]]):m("",!0)]),_:1})],16,fr),[[C,e.open||!e.collapsible]])]),_:3},8,["name"])}const yr=c(hr,[["render",br]]),et="ITable",gr=p({name:et,inheritAttrs:!1,props:{border:{type:Boolean,default:!1},condensed:{type:Boolean,default:!1},striped:{type:Boolean,default:!1},hover:{type:Boolean,default:!1},responsive:{type:[Boolean,String],default:!0},nowrap:{type:Boolean,default:!1},color:{type:String,default:u(et,"color")}},computed:{classes(){return{...g(this),"-border":this.border,"-condensed":this.condensed,"-striped":this.striped,"-hover":this.hover,"-nowrap":this.nowrap,[`-responsive${typeof this.responsive=="boolean"?"":`-${this.responsive}`}`]:!!this.responsive}}}}),vr={class:"table"};function kr(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["table-wrapper",e.classes]}),[f("table",vr,[d(e.$slots,"default")])],16)}const wr=c(gr,[["render",kr]]),Le="ITabs",Ir=p({name:Le,provide(){return{tabs:this}},inheritAttrs:!1,props:{color:{type:String,default:u(Le,"color")},modelValue:{type:String,default:""},size:{type:String,default:u(Le,"size"),validator:y},stretch:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{active:this.modelValue,tabs:[]}},computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-stretch":this.stretch}}},watch:{modelValue(e){this.active=e}},methods:{setActive(e){this.active=e,this.$emit("update:modelValue",this.active)}}}),Cr={class:"tabs-header"};function Sr(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["tabs",e.classes],role:"tablist","aria-multiselectable":"true"}),[f("div",Cr,[d(e.$slots,"header")]),d(e.$slots,"default")],16)}const Br=c(Ir,[["render",Sr]]),zr="ITab",Ar=p({name:zr,inject:{tabs:{default:()=>({})}},props:{title:{type:String,default:""},name:{type:String,default(){return B("tab")}}},computed:{active(){return this.tabs.active===this.name},classes(){return{"-active":this.active}}}}),Vr=["name","aria-hidden","aria-labelledby"],Nr={class:"tab-body"};function Or(e,t,s,i,a,r){return k((o(),l("div",{class:z(["tab",e.classes]),role:"tabpanel",name:e.name,"aria-hidden":!e.active,"aria-labelledby":`tab-heading-${e.name}`},[f("div",Nr,[d(e.$slots,"default")])],10,Vr)),[[C,e.active]])}const Lr=c(Ar,[["render",Or]]),Dr="ITabTitle",Tr=p({name:Dr,inject:{tabs:{default:()=>({})}},props:{for:{type:String,default(){return B("tab")}}},computed:{active(){return this.tabs.active===this.for},classes(){return{"-active":this.active}},name(){return this.for}},methods:{onClick(){this.tabs.setActive(this.for)}}}),Pr=["for","active","aria-expanded","aria-controls","aria-describedby"];function Er(e,t,s,i,a,r){return o(),l("div",{class:z(["tab-title",e.classes]),role:"tab",for:e.name,active:e.active,"aria-expanded":e.active,"aria-controls":`tab-content-${e.name}`,"aria-describedby":`tab-content-${e.name}`,tabindex:"0",onClick:t[0]||(t[0]=(...n)=>e.onClick&&e.onClick(...n))},[d(e.$slots,"default")],10,Pr)}const Rr=c(Tr,[["render",Er]]),De="IToggle",Mr=p({name:De,mixins:[R],inheritAttrs:!1,props:{color:{type:String,default:u(De,"color")},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},value:{default:!1},modelValue:{default:!1},name:{type:[String,Number],default(){return B("toggle")}},readonly:{type:Boolean,default:!1},size:{type:String,default:u(De,"size"),validator:y},tabindex:{type:[Number,String],default:0}},emits:["update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size,"-disabled":this.isDisabled,"-readonly":this.isReadonly}},checked(){return this.schema?this.schema.value:this.modelValue},tabIndex(){return this.isDisabled?-1:this.tabindex}},methods:{clickInputRef(){this.isReadonly||this.$refs.input.click()},onChange(e){var t,s;(s=(t=this.parent).onInput)==null||s.call(t,this.name,e.target.checked),this.$emit("update:modelValue",e.target.checked)},onBlur(e){var t,s;(s=(t=this.parent).onBlur)==null||s.call(t,this.name,e)}}}),Fr=["checked","disabled","readonly","aria-checked","aria-disabled","aria-readonly","name"],jr=["aria-checked","aria-disabled","aria-readonly","tabindex"];function Gr(e,t,s,i,a,r){return o(),l("div",h(e.$attrs,{class:["toggle",e.classes]}),[f("input",{ref:"input",type:"checkbox",checked:e.checked,disabled:e.isDisabled,readonly:e.isReadonly,"aria-checked":e.checked,"aria-disabled":e.isDisabled,"aria-readonly":e.isReadonly,name:e.name,onChange:t[0]||(t[0]=(...n)=>e.onChange&&e.onChange(...n))},null,40,Fr),f("label",{class:"toggle-label","aria-checked":e.checked,"aria-disabled":e.isDisabled,"aria-readonly":e.isReadonly,tabindex:e.tabIndex,onClick:t[1]||(t[1]=(...n)=>e.clickInputRef&&e.clickInputRef(...n)),onBlur:t[2]||(t[2]=(...n)=>e.onBlur&&e.onBlur(...n)),onKeydown:t[3]||(t[3]=M(Y((...n)=>e.clickInputRef&&e.clickInputRef(...n),["stop","prevent"]),["space"]))},[d(e.$slots,"default")],40,jr)],16)}const Zr=c(Mr,[["render",Gr]]),Te="ITooltip",Kr=p({name:Te,directives:{ClickOutside:H},mixins:[ee,Ge],inheritAttrs:!1,props:{color:{type:String,default:u(Te,"color")},disabled:{type:Boolean,default:!1},modelValue:{type:Boolean,default:!1},name:{type:String,default(){return B("tooltip")}},arrow:{type:Boolean,default:!0},placement:{type:String,default:"top"},trigger:{type:[String,Array],default:()=>["hover","focus"]},offset:{type:Number,default:6},interactable:{type:Boolean,default:!1},popperOptions:{type:Object,default:()=>({})},size:{type:String,default:u(Te,"size"),validator:y}},emits:["click-outside","update:modelValue"],computed:{classes(){return{...g(this),[`-${this.size}`]:!!this.size}}},methods:{onEscape(){this.visible=!1,this.$emit("update:modelValue",!1)},handleClickOutside(e){this.visible=!1,this.$emit("update:modelValue",!1),this.onClickOutside(e)}}}),Hr=["id"],Wr=["aria-describedby","aria-disabled","aria-expanded"],qr=["id","aria-hidden"],Ur={key:0,"data-popper-arrow":""};function Qr(e,t,s,i,a,r){const n=Z("click-outside");return k((o(),l("div",h(e.$attrs,{class:["tooltip-wrapper",e.classes],ref:"wrapper",id:e.name,onKeyup:t[0]||(t[0]=M((...$)=>e.onEscape&&e.onEscape(...$),["esc"]))}),[f("div",{class:"tooltip-trigger",ref:"trigger","aria-describedby":`${e.name}-popup`,"aria-disabled":e.disabled?"true":"false","aria-expanded":e.visible?"true":"false"},[d(e.$slots,"default")],8,Wr),I(L,{name:"zoom-in-top-transition",onAfterLeave:e.destroyPopper},{default:b(()=>[k(f("div",{class:"tooltip",ref:"popup",role:"tooltip","aria-live":"polite",id:`${e.name}-popup`,"aria-hidden":e.visible?"false":"true"},[e.arrow?(o(),l("span",Ur)):m("",!0),d(e.$slots,"body")],8,qr),[[C,e.visible]])]),_:3},8,["onAfterLeave"])],16,Hr)),[[n,e.onClickOutside]])}const Jr=c(Kr,[["render",Qr]]),xr=Object.freeze(Object.defineProperty({__proto__:null,IAlert:Es,IBadge:Fs,IBreadcrumb:Ks,IBreadcrumbItem:Qs,IButton:ft,IButtonGroup:ai,ICard:$i,ICheckbox:wi,ICheckboxGroup:Bi,ICollapsible:Vi,ICollapsibleItem:Fi,IColumn:Ze,IContainer:Ke,IDropdown:Ji,IDropdownDivider:_i,IDropdownItem:ia,IForm:ra,IFormError:$a,IFormGroup:pa,IFormLabel:va,IHamburgerMenu:$t,IHeader:Aa,IIcon:bt,IInput:te,ILayout:dn,ILayoutAside:fn,ILayoutContent:yn,ILayoutFooter:wn,ILayoutHeader:Bn,IListGroup:Vn,IListGroupItem:Dn,ILoader:ht,IMark:yt,IMedia:Kn,IModal:xn,INav:to,INavItem:no,INavbar:lo,INavbarBrand:ho,INavbarCollapsible:yo,INumberInput:Ja,IPagination:Bo,IPopover:Eo,IProgress:Fo,IProgressBar:Ko,IRadio:Qo,IRadioGroup:xo,IRow:He,ISelect:cr,ISelectOption:gt,ISidebar:yr,ITab:Lr,ITabTitle:Rr,ITable:wr,ITabs:Br,ITextarea:nn,IToggle:Zr,ITooltip:Jr},Symbol.toStringTag,{value:"Module"}));export{Xr as I,c as _,xr as c};
diff --git a/packages/modules/display_themes/cards/web/index.html b/packages/modules/display_themes/cards/web/index.html
index ef24668990..d7ce7033ec 100644
--- a/packages/modules/display_themes/cards/web/index.html
+++ b/packages/modules/display_themes/cards/web/index.html
@@ -6,12 +6,12 @@
   <link rel="icon" href="/openWB/web/display/themes/cards/favicon.ico">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>openWB Display - Cards</title>
-  <script type="module" crossorigin src="/openWB/web/display/themes/cards/assets/index-AtLAf1dw.js"></script>
-  <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-Cv1UtYRW.js">
-  <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-inkline-7C7Ddj37.js">
-  <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-fortawesome-CVmDIOjI.js">
-  <link rel="stylesheet" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-inkline-B7Agb5gs.css">
-  <link rel="stylesheet" crossorigin href="/openWB/web/display/themes/cards/assets/index-B7S8vMKj.css">
+  <script type="module" crossorigin src="/openWB/web/display/themes/cards/assets/index-CHLaD7ED.js"></script>
+  <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-CZ1MGz7j.js">
+  <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-inkline-Ce5aFAnW.js">
+  <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-fortawesome-C68yAli-.js">
+  <link rel="stylesheet" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-inkline-BDgt6n8h.css">
+  <link rel="stylesheet" crossorigin href="/openWB/web/display/themes/cards/assets/index-BkCKa8xR.css">
 </head>
 
 <body>

From 9bdb43485afce7ebf1ee459f333e55f090d9a1b9 Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Tue, 1 Oct 2024 10:03:51 +0200
Subject: [PATCH 097/205] build settings ui - bugfix (#1909)

fix broken update event handling
---
 .../assets/{ChargeLog-9836d756.js => ChargeLog-a730dd70.js}     | 2 +-
 web/settings/assets/ChargePointInstallation-12a5c989.js         | 1 -
 web/settings/assets/ChargePointInstallation-8dff21bc.js         | 1 +
 web/settings/assets/{Chart-eb294839.js => Chart-19a9b222.js}    | 2 +-
 .../assets/{CloudConfig-d834b2a3.js => CloudConfig-595194ca.js} | 2 +-
 web/settings/assets/DataManagement-ad71d105.js                  | 1 -
 web/settings/assets/DataManagement-b9730b64.js                  | 1 +
 .../assets/{DebugConfig-0ce8b81e.js => DebugConfig-d1261f2b.js} | 2 +-
 web/settings/assets/GeneralChargeConfig-a5add01a.js             | 1 -
 web/settings/assets/GeneralChargeConfig-f6ca097b.js             | 1 +
 web/settings/assets/GeneralConfig-1c49e709.js                   | 1 +
 web/settings/assets/GeneralConfig-2f07ba45.js                   | 1 -
 web/settings/assets/HardwareInstallation-6cc98da9.js            | 1 -
 web/settings/assets/HardwareInstallation-70f156e6.js            | 1 +
 ...nstallAssistant-c6a6444f.js => InstallAssistant-6d2c34f9.js} | 2 +-
 ...stantStep0-de111777.js => InstallAssistantStep0-3ae5776e.js} | 2 +-
 ...stantStep1-eec2b42e.js => InstallAssistantStep1-f2cb69f1.js} | 2 +-
 ...antStep10-a22f74f5.js => InstallAssistantStep10-6a0bfe8b.js} | 2 +-
 ...stantStep2-95ec4f8b.js => InstallAssistantStep2-116b498f.js} | 2 +-
 ...stantStep3-e076a393.js => InstallAssistantStep3-b44c543e.js} | 2 +-
 ...stantStep4-07e22013.js => InstallAssistantStep4-ca57a396.js} | 2 +-
 ...stantStep5-4b69dc5b.js => InstallAssistantStep5-2a886f5d.js} | 2 +-
 ...stantStep6-ae56da1e.js => InstallAssistantStep6-25f8b1a2.js} | 2 +-
 ...stantStep7-824e5762.js => InstallAssistantStep7-be0e6887.js} | 2 +-
 ...stantStep8-37e813b9.js => InstallAssistantStep8-5bb0860d.js} | 2 +-
 ...stantStep9-7a22998e.js => InstallAssistantStep9-af2ff378.js} | 2 +-
 ...ate-0780226f.js => InstallAssistantStepTemplate-3c026c08.js} | 2 +-
 ...ChargeConfig-d3719370.js => InstantChargeConfig-61c4fd49.js} | 2 +-
 .../{LegalSettings-b9806df1.js => LegalSettings-ddd5b296.js}    | 2 +-
 ...ementConfig-87715007.js => LoadManagementConfig-da717df7.js} | 2 +-
 ...qttBridgeConfig-a467e292.js => MqttBridgeConfig-2e7d7922.js} | 2 +-
 web/settings/assets/OptionalComponents-36fd698f.js              | 2 ++
 web/settings/assets/OptionalComponents-be1b1295.js              | 2 --
 .../{PVChargeConfig-f08197ff.js => PVChargeConfig-13001890.js}  | 2 +-
 ...argeConfig-6d89b998.js => ScheduledChargeConfig-6a548cac.js} | 2 +-
 web/settings/assets/{Status-425f485b.js => Status-bc2c7d27.js}  | 2 +-
 .../assets/{Support-9ecadb2d.js => Support-a91e414e.js}         | 2 +-
 web/settings/assets/{System-8e218ae4.js => System-aff61250.js}  | 2 +-
 .../{TestingStore-ffe2c569.js => TestingStore-c3e1bdb5.js}      | 2 +-
 ...imeChargeConfig-7cd7d455.js => TimeChargeConfig-9d481afa.js} | 2 +-
 web/settings/assets/VehicleConfig-0ab604e8.js                   | 1 -
 web/settings/assets/VehicleConfig-e8ea05c9.js                   | 1 +
 .../{backup_cloud-3f7a1039.js => backup_cloud-13d4bee8.js}      | 2 +-
 .../{backup_cloud-71b57f4d.js => backup_cloud-5feeb3e2.js}      | 2 +-
 .../{backup_cloud-510cc7e0.js => backup_cloud-b3e9e685.js}      | 2 +-
 .../{backup_cloud-333e299c.js => backup_cloud-fd1d0158.js}      | 2 +-
 web/settings/assets/{bat-98a7f166.js => bat-12daed7b.js}        | 2 +-
 web/settings/assets/{bat-fefe88d3.js => bat-328595a8.js}        | 2 +-
 web/settings/assets/{bat-9577327c.js => bat-3b4b20a7.js}        | 2 +-
 web/settings/assets/{bat-45a2224e.js => bat-426bdd63.js}        | 2 +-
 web/settings/assets/{bat-e05764b6.js => bat-61eea3a5.js}        | 2 +-
 web/settings/assets/{bat-7c88776b.js => bat-80f0d2f4.js}        | 2 +-
 web/settings/assets/{bat-03d10b16.js => bat-840118d9.js}        | 2 +-
 web/settings/assets/{bat-2a37d4a1.js => bat-99d6a6cb.js}        | 2 +-
 web/settings/assets/{bat-dc1d9a2f.js => bat-9d6be7fa.js}        | 2 +-
 web/settings/assets/{bat-9807eb70.js => bat-9d9a67fb.js}        | 2 +-
 web/settings/assets/{bat-9eca6500.js => bat-a28914e4.js}        | 2 +-
 web/settings/assets/{bat-7dc3e16d.js => bat-a74943cb.js}        | 2 +-
 web/settings/assets/{bat-713dd112.js => bat-ab8d4880.js}        | 2 +-
 web/settings/assets/{bat-c6e7f4e5.js => bat-ba2e5e6b.js}        | 2 +-
 web/settings/assets/{bat-af534ff4.js => bat-baab6c7d.js}        | 2 +-
 web/settings/assets/{bat-c3b737a8.js => bat-bae92296.js}        | 2 +-
 web/settings/assets/{bat-8dd42ecd.js => bat-bb33d730.js}        | 2 +-
 web/settings/assets/{bat-b62c3097.js => bat-bdfaf1f4.js}        | 2 +-
 web/settings/assets/{bat-8c346425.js => bat-c64928d7.js}        | 2 +-
 web/settings/assets/{bat-5763ad59.js => bat-f044ae56.js}        | 2 +-
 ...at_smart_energy-2291c4ec.js => bat_smart_energy-999a65de.js} | 2 +-
 .../assets/{chargePoint-3f4bb03f.js => chargePoint-112ccae9.js} | 2 +-
 .../assets/{chargePoint-8d89f54f.js => chargePoint-3babeeb9.js} | 2 +-
 .../assets/{chargePoint-f77b98b5.js => chargePoint-468fc8e7.js} | 2 +-
 .../assets/{chargePoint-f92622dd.js => chargePoint-52b6ceee.js} | 2 +-
 .../assets/{chargePoint-72c59831.js => chargePoint-7fec8739.js} | 2 +-
 .../assets/{chargePoint-8472765d.js => chargePoint-a02180ae.js} | 2 +-
 .../assets/{chargePoint-f3a56f90.js => chargePoint-f1ada5d6.js} | 2 +-
 .../assets/{commands-0749d4c7.js => commands-62da4db2.js}       | 2 +-
 ...tion_counter-a72d5a10.js => consumption_counter-c6d1b3df.js} | 2 +-
 .../assets/{counter-6f319353.js => counter-02712182.js}         | 2 +-
 .../assets/{counter-e43b2263.js => counter-116a65cb.js}         | 2 +-
 .../assets/{counter-ab7dda04.js => counter-277eabf6.js}         | 2 +-
 .../assets/{counter-9fd0b8be.js => counter-321d3599.js}         | 2 +-
 .../assets/{counter-c524e146.js => counter-38172dbc.js}         | 2 +-
 .../assets/{counter-37e09ebf.js => counter-3942ce7f.js}         | 2 +-
 .../assets/{counter-11a808b3.js => counter-4410dc4e.js}         | 2 +-
 .../assets/{counter-4760f2a8.js => counter-4498494c.js}         | 2 +-
 .../assets/{counter-6dd39fae.js => counter-46612257.js}         | 2 +-
 .../assets/{counter-6a117469.js => counter-50d0810f.js}         | 2 +-
 .../assets/{counter-8cf3e538.js => counter-55fd6368.js}         | 2 +-
 .../assets/{counter-211768c3.js => counter-68a2bd86.js}         | 2 +-
 .../assets/{counter-3c3a8ee4.js => counter-7a3ba47e.js}         | 2 +-
 .../assets/{counter-e2ea1207.js => counter-7bf5aea7.js}         | 2 +-
 .../assets/{counter-339b78e6.js => counter-7fca39df.js}         | 2 +-
 .../assets/{counter-4e131617.js => counter-865f9c61.js}         | 2 +-
 .../assets/{counter-e2aa39de.js => counter-86f04938.js}         | 2 +-
 .../assets/{counter-5e68cf56.js => counter-8757edbf.js}         | 2 +-
 .../assets/{counter-9028760b.js => counter-8af15294.js}         | 2 +-
 .../assets/{counter-4e0e153d.js => counter-9b6e8dff.js}         | 2 +-
 .../assets/{counter-2d7b83ed.js => counter-9fcc4ae5.js}         | 2 +-
 .../assets/{counter-61e6692b.js => counter-9ff0cd5b.js}         | 2 +-
 .../assets/{counter-b8ca89e1.js => counter-b0f78c7c.js}         | 2 +-
 .../assets/{counter-59a65215.js => counter-b3f26d9d.js}         | 2 +-
 .../assets/{counter-62b27636.js => counter-bc776e4a.js}         | 2 +-
 .../assets/{counter-b3df37ca.js => counter-bff0132e.js}         | 2 +-
 .../assets/{counter-dae0c479.js => counter-c8cb4ab4.js}         | 2 +-
 .../assets/{counter-87bd2dba.js => counter-cda681c6.js}         | 2 +-
 .../assets/{counter-70744c17.js => counter-dc002a5d.js}         | 2 +-
 .../assets/{counter-9f134879.js => counter-e6014599.js}         | 2 +-
 .../assets/{counter-873539d4.js => counter-ec9f9982.js}         | 2 +-
 .../assets/{counter-2af1b45c.js => counter-f74d8989.js}         | 2 +-
 .../assets/{counter_sm-ce85abde.js => counter_sm-46c91fda.js}   | 2 +-
 web/settings/assets/{device-20a3cc0b.js => device-17812629.js}  | 2 +-
 web/settings/assets/{device-f2e0c7de.js => device-1a463b8a.js}  | 2 +-
 web/settings/assets/{device-f057baf4.js => device-1eaab064.js}  | 2 +-
 web/settings/assets/{device-930131aa.js => device-2045e148.js}  | 2 +-
 web/settings/assets/{device-1a057dc5.js => device-24fa8719.js}  | 2 +-
 web/settings/assets/{device-17ee5402.js => device-2812d314.js}  | 2 +-
 web/settings/assets/{device-cbb1f36f.js => device-282ac597.js}  | 2 +-
 web/settings/assets/{device-f2ca9f52.js => device-2861d843.js}  | 2 +-
 web/settings/assets/{device-5aef24bb.js => device-2a6323de.js}  | 2 +-
 web/settings/assets/{device-191071c7.js => device-2fe61a6a.js}  | 2 +-
 web/settings/assets/{device-41c2f368.js => device-35c75ada.js}  | 2 +-
 web/settings/assets/{device-ba7411f1.js => device-37c8a5d7.js}  | 2 +-
 web/settings/assets/{device-a4ac3a30.js => device-3ed84812.js}  | 2 +-
 web/settings/assets/{device-97810824.js => device-436ab177.js}  | 2 +-
 web/settings/assets/{device-13bf79c7.js => device-44627252.js}  | 2 +-
 web/settings/assets/{device-92f55c21.js => device-44ac2d07.js}  | 2 +-
 web/settings/assets/{device-63bdcc3c.js => device-4696232a.js}  | 2 +-
 web/settings/assets/{device-fa6313a5.js => device-4992e86f.js}  | 2 +-
 web/settings/assets/{device-00ea06ea.js => device-4cd875ee.js}  | 2 +-
 web/settings/assets/{device-511acdb3.js => device-51badd6c.js}  | 2 +-
 web/settings/assets/{device-8770c372.js => device-51cbfef1.js}  | 2 +-
 web/settings/assets/{device-dcaa50ab.js => device-53686a65.js}  | 2 +-
 web/settings/assets/{device-f5beaf39.js => device-5860e973.js}  | 2 +-
 web/settings/assets/{device-a55b4f4a.js => device-5dc8caee.js}  | 2 +-
 web/settings/assets/{device-b5ff9479.js => device-70dec769.js}  | 2 +-
 web/settings/assets/{device-667da2bf.js => device-752b4387.js}  | 2 +-
 web/settings/assets/{device-2dc6cc3c.js => device-7893f72c.js}  | 2 +-
 web/settings/assets/{device-7c975c06.js => device-7e1581b0.js}  | 2 +-
 web/settings/assets/{device-c1c7f277.js => device-823f72ad.js}  | 2 +-
 web/settings/assets/{device-19334006.js => device-827098d6.js}  | 2 +-
 web/settings/assets/{device-09e0b5dd.js => device-82e0acf7.js}  | 2 +-
 web/settings/assets/{device-c1920155.js => device-8308249d.js}  | 2 +-
 web/settings/assets/{device-4f01c44f.js => device-86c123c1.js}  | 2 +-
 web/settings/assets/{device-c37bf0a2.js => device-87e58e62.js}  | 2 +-
 web/settings/assets/{device-8b304fd5.js => device-8d6c27df.js}  | 2 +-
 web/settings/assets/{device-57a08fa3.js => device-900bb2eb.js}  | 2 +-
 web/settings/assets/{device-264b9607.js => device-939b0ad1.js}  | 2 +-
 web/settings/assets/{device-7d21f4f3.js => device-9f7025df.js}  | 2 +-
 web/settings/assets/{device-c9df224a.js => device-a018debc.js}  | 2 +-
 web/settings/assets/{device-a945746f.js => device-a159510e.js}  | 2 +-
 web/settings/assets/{device-2bd6af83.js => device-a41c9f9a.js}  | 2 +-
 web/settings/assets/{device-8f5f7340.js => device-ac3617bf.js}  | 2 +-
 web/settings/assets/{device-9eedb23a.js => device-ac5464c5.js}  | 2 +-
 web/settings/assets/{device-e6c608f5.js => device-b07f9cfe.js}  | 2 +-
 web/settings/assets/{device-73279a9d.js => device-b14a6820.js}  | 2 +-
 web/settings/assets/{device-d779a283.js => device-b80563d5.js}  | 2 +-
 web/settings/assets/{device-84e9833f.js => device-baaf93fc.js}  | 2 +-
 web/settings/assets/{device-967835b8.js => device-c3b4d8e4.js}  | 2 +-
 web/settings/assets/{device-e1695c1b.js => device-c3ba2a50.js}  | 2 +-
 web/settings/assets/{device-97dc9354.js => device-cd05bdaa.js}  | 2 +-
 web/settings/assets/{device-dc9695a4.js => device-d0fb85ca.js}  | 2 +-
 web/settings/assets/{device-51a9d57c.js => device-d8584875.js}  | 2 +-
 web/settings/assets/{device-7aeda0a3.js => device-d91bc952.js}  | 2 +-
 web/settings/assets/{device-95627a98.js => device-e77cad4b.js}  | 2 +-
 web/settings/assets/{device-fb6dbf7a.js => device-e7ac4171.js}  | 2 +-
 web/settings/assets/{device-944bfe1b.js => device-e9766b50.js}  | 2 +-
 web/settings/assets/{device-c0ddbba1.js => device-ee62c15a.js}  | 2 +-
 web/settings/assets/{device-c3e49e5d.js => device-eed61bed.js}  | 2 +-
 web/settings/assets/{device-8a6c3a9f.js => device-f511f708.js}  | 2 +-
 web/settings/assets/{device-7552eed1.js => device-f8b42d98.js}  | 2 +-
 web/settings/assets/{device-c3aaf957.js => device-fd700d8f.js}  | 2 +-
 web/settings/assets/{device-a5ad3257.js => device-fe5fad52.js}  | 2 +-
 .../{displayTheme-78ab078b.js => displayTheme-4083964b.js}      | 2 +-
 ...ricity_tariff-b400ca32.js => electricity_tariff-4bc01805.js} | 2 +-
 ...ricity_tariff-c1ffcfa7.js => electricity_tariff-5111f15f.js} | 2 +-
 ...ricity_tariff-9f4ce3a7.js => electricity_tariff-63a1e9ec.js} | 2 +-
 ...ricity_tariff-ac583f0a.js => electricity_tariff-7b04b620.js} | 2 +-
 ...ricity_tariff-18981e99.js => electricity_tariff-e23d6291.js} | 2 +-
 ...ernal_inverter-319dd94a.js => external_inverter-a76bfa79.js} | 2 +-
 web/settings/assets/{index-dc0e711f.js => index-f9fda857.js}    | 2 +-
 .../assets/{inverter-b4941105.js => inverter-1529fe73.js}       | 2 +-
 .../assets/{inverter-62aebfd4.js => inverter-1e6b58f6.js}       | 2 +-
 .../assets/{inverter-d79a2e57.js => inverter-287e8910.js}       | 2 +-
 .../assets/{inverter-cf814a97.js => inverter-2c898c0e.js}       | 2 +-
 .../assets/{inverter-521e60bd.js => inverter-36b2f4c7.js}       | 2 +-
 .../assets/{inverter-00707516.js => inverter-3715b21d.js}       | 2 +-
 .../assets/{inverter-0372b463.js => inverter-471fa6e9.js}       | 2 +-
 .../assets/{inverter-3f3aa74b.js => inverter-48761201.js}       | 2 +-
 .../assets/{inverter-d1ef1a1b.js => inverter-57d15ff3.js}       | 2 +-
 .../assets/{inverter-a77daa25.js => inverter-5f7aec52.js}       | 2 +-
 .../assets/{inverter-90d5660d.js => inverter-692fd261.js}       | 2 +-
 .../assets/{inverter-668ceedf.js => inverter-6f84161c.js}       | 2 +-
 .../assets/{inverter-ab8a80e4.js => inverter-70f78ef5.js}       | 2 +-
 .../assets/{inverter-f293b026.js => inverter-80f24f74.js}       | 2 +-
 .../assets/{inverter-22aad90d.js => inverter-88d5ed46.js}       | 2 +-
 .../assets/{inverter-0fe312b3.js => inverter-b61011e2.js}       | 2 +-
 .../assets/{inverter-eee7c6e5.js => inverter-bcc6d0d6.js}       | 2 +-
 .../assets/{inverter-3a770b71.js => inverter-bdcf1a2f.js}       | 2 +-
 .../assets/{inverter-6f930abf.js => inverter-c29b676e.js}       | 2 +-
 .../assets/{inverter-3661665d.js => inverter-c38863be.js}       | 2 +-
 .../assets/{inverter-c319320b.js => inverter-d29f4c1a.js}       | 2 +-
 .../assets/{inverter-f30a6830.js => inverter-da1db027.js}       | 2 +-
 .../assets/{inverter-3c18bfc8.js => inverter-e10956ea.js}       | 2 +-
 .../assets/{inverter-7c07833e.js => inverter-e49c5d75.js}       | 2 +-
 .../assets/{inverter-efcd16da.js => inverter-eb5f339a.js}       | 2 +-
 .../assets/{inverter-832fb3b7.js => inverter-fa1c29cd.js}       | 2 +-
 .../assets/{inverter-d090560a.js => inverter-fa423cd0.js}       | 2 +-
 ...ter_secondary-67eeedf8.js => inverter_secondary-4a5d5bbc.js} | 2 +-
 ...receiver-9035a86a.js => ripple_control_receiver-432648b7.js} | 2 +-
 ...receiver-fed88f10.js => ripple_control_receiver-8b00be72.js} | 2 +-
 .../assets/{vehicle-b9845ca5.js => vehicle-022511d4.js}         | 2 +-
 .../assets/{vehicle-bedc772a.js => vehicle-317e6bfc.js}         | 2 +-
 .../assets/{vehicle-7f7d2e44.js => vehicle-35b782fb.js}         | 2 +-
 .../assets/{vehicle-19e3adb9.js => vehicle-38d89acf.js}         | 2 +-
 .../assets/{vehicle-42f1ed52.js => vehicle-4afffc4b.js}         | 2 +-
 .../assets/{vehicle-f050a85d.js => vehicle-4df6c138.js}         | 2 +-
 .../assets/{vehicle-039c8759.js => vehicle-635e6620.js}         | 2 +-
 .../assets/{vehicle-03c9aa3d.js => vehicle-693cb69a.js}         | 2 +-
 .../assets/{vehicle-0babcb51.js => vehicle-6dc5238d.js}         | 2 +-
 .../assets/{vehicle-7f1d1c67.js => vehicle-81ee016b.js}         | 2 +-
 .../assets/{vehicle-5b8d1dc8.js => vehicle-95222308.js}         | 2 +-
 .../assets/{vehicle-7adb9a7c.js => vehicle-a8092426.js}         | 2 +-
 .../assets/{vehicle-28a9dcf3.js => vehicle-a9e07390.js}         | 2 +-
 .../assets/{vehicle-7bb9b768.js => vehicle-ad06c8a7.js}         | 2 +-
 .../assets/{vehicle-9ce6bac4.js => vehicle-caa88593.js}         | 2 +-
 .../assets/{vehicle-47ed0a84.js => vehicle-cb0122fd.js}         | 2 +-
 .../assets/{vehicle-85478721.js => vehicle-cc94e01f.js}         | 2 +-
 .../assets/{vehicle-0bc01aa8.js => vehicle-ed5ef659.js}         | 2 +-
 web/settings/index.html                                         | 2 +-
 228 files changed, 222 insertions(+), 222 deletions(-)
 rename web/settings/assets/{ChargeLog-9836d756.js => ChargeLog-a730dd70.js} (99%)
 delete mode 100644 web/settings/assets/ChargePointInstallation-12a5c989.js
 create mode 100644 web/settings/assets/ChargePointInstallation-8dff21bc.js
 rename web/settings/assets/{Chart-eb294839.js => Chart-19a9b222.js} (99%)
 rename web/settings/assets/{CloudConfig-d834b2a3.js => CloudConfig-595194ca.js} (99%)
 delete mode 100644 web/settings/assets/DataManagement-ad71d105.js
 create mode 100644 web/settings/assets/DataManagement-b9730b64.js
 rename web/settings/assets/{DebugConfig-0ce8b81e.js => DebugConfig-d1261f2b.js} (98%)
 delete mode 100644 web/settings/assets/GeneralChargeConfig-a5add01a.js
 create mode 100644 web/settings/assets/GeneralChargeConfig-f6ca097b.js
 create mode 100644 web/settings/assets/GeneralConfig-1c49e709.js
 delete mode 100644 web/settings/assets/GeneralConfig-2f07ba45.js
 delete mode 100644 web/settings/assets/HardwareInstallation-6cc98da9.js
 create mode 100644 web/settings/assets/HardwareInstallation-70f156e6.js
 rename web/settings/assets/{InstallAssistant-c6a6444f.js => InstallAssistant-6d2c34f9.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-de111777.js => InstallAssistantStep0-3ae5776e.js} (95%)
 rename web/settings/assets/{InstallAssistantStep1-eec2b42e.js => InstallAssistantStep1-f2cb69f1.js} (89%)
 rename web/settings/assets/{InstallAssistantStep10-a22f74f5.js => InstallAssistantStep10-6a0bfe8b.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-95ec4f8b.js => InstallAssistantStep2-116b498f.js} (89%)
 rename web/settings/assets/{InstallAssistantStep3-e076a393.js => InstallAssistantStep3-b44c543e.js} (92%)
 rename web/settings/assets/{InstallAssistantStep4-07e22013.js => InstallAssistantStep4-ca57a396.js} (92%)
 rename web/settings/assets/{InstallAssistantStep5-4b69dc5b.js => InstallAssistantStep5-2a886f5d.js} (93%)
 rename web/settings/assets/{InstallAssistantStep6-ae56da1e.js => InstallAssistantStep6-25f8b1a2.js} (94%)
 rename web/settings/assets/{InstallAssistantStep7-824e5762.js => InstallAssistantStep7-be0e6887.js} (93%)
 rename web/settings/assets/{InstallAssistantStep8-37e813b9.js => InstallAssistantStep8-5bb0860d.js} (93%)
 rename web/settings/assets/{InstallAssistantStep9-7a22998e.js => InstallAssistantStep9-af2ff378.js} (91%)
 rename web/settings/assets/{InstallAssistantStepTemplate-0780226f.js => InstallAssistantStepTemplate-3c026c08.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-d3719370.js => InstantChargeConfig-61c4fd49.js} (96%)
 rename web/settings/assets/{LegalSettings-b9806df1.js => LegalSettings-ddd5b296.js} (97%)
 rename web/settings/assets/{LoadManagementConfig-87715007.js => LoadManagementConfig-da717df7.js} (99%)
 rename web/settings/assets/{MqttBridgeConfig-a467e292.js => MqttBridgeConfig-2e7d7922.js} (99%)
 create mode 100644 web/settings/assets/OptionalComponents-36fd698f.js
 delete mode 100644 web/settings/assets/OptionalComponents-be1b1295.js
 rename web/settings/assets/{PVChargeConfig-f08197ff.js => PVChargeConfig-13001890.js} (99%)
 rename web/settings/assets/{ScheduledChargeConfig-6d89b998.js => ScheduledChargeConfig-6a548cac.js} (98%)
 rename web/settings/assets/{Status-425f485b.js => Status-bc2c7d27.js} (99%)
 rename web/settings/assets/{Support-9ecadb2d.js => Support-a91e414e.js} (99%)
 rename web/settings/assets/{System-8e218ae4.js => System-aff61250.js} (98%)
 rename web/settings/assets/{TestingStore-ffe2c569.js => TestingStore-c3e1bdb5.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-7cd7d455.js => TimeChargeConfig-9d481afa.js} (96%)
 delete mode 100644 web/settings/assets/VehicleConfig-0ab604e8.js
 create mode 100644 web/settings/assets/VehicleConfig-e8ea05c9.js
 rename web/settings/assets/{backup_cloud-3f7a1039.js => backup_cloud-13d4bee8.js} (93%)
 rename web/settings/assets/{backup_cloud-71b57f4d.js => backup_cloud-5feeb3e2.js} (83%)
 rename web/settings/assets/{backup_cloud-510cc7e0.js => backup_cloud-b3e9e685.js} (92%)
 rename web/settings/assets/{backup_cloud-333e299c.js => backup_cloud-fd1d0158.js} (86%)
 rename web/settings/assets/{bat-98a7f166.js => bat-12daed7b.js} (83%)
 rename web/settings/assets/{bat-fefe88d3.js => bat-328595a8.js} (88%)
 rename web/settings/assets/{bat-9577327c.js => bat-3b4b20a7.js} (96%)
 rename web/settings/assets/{bat-45a2224e.js => bat-426bdd63.js} (89%)
 rename web/settings/assets/{bat-e05764b6.js => bat-61eea3a5.js} (94%)
 rename web/settings/assets/{bat-7c88776b.js => bat-80f0d2f4.js} (83%)
 rename web/settings/assets/{bat-03d10b16.js => bat-840118d9.js} (88%)
 rename web/settings/assets/{bat-2a37d4a1.js => bat-99d6a6cb.js} (88%)
 rename web/settings/assets/{bat-dc1d9a2f.js => bat-9d6be7fa.js} (87%)
 rename web/settings/assets/{bat-9807eb70.js => bat-9d9a67fb.js} (88%)
 rename web/settings/assets/{bat-9eca6500.js => bat-a28914e4.js} (91%)
 rename web/settings/assets/{bat-7dc3e16d.js => bat-a74943cb.js} (95%)
 rename web/settings/assets/{bat-713dd112.js => bat-ab8d4880.js} (87%)
 rename web/settings/assets/{bat-c6e7f4e5.js => bat-ba2e5e6b.js} (88%)
 rename web/settings/assets/{bat-af534ff4.js => bat-baab6c7d.js} (87%)
 rename web/settings/assets/{bat-c3b737a8.js => bat-bae92296.js} (87%)
 rename web/settings/assets/{bat-8dd42ecd.js => bat-bb33d730.js} (81%)
 rename web/settings/assets/{bat-b62c3097.js => bat-bdfaf1f4.js} (87%)
 rename web/settings/assets/{bat-8c346425.js => bat-c64928d7.js} (90%)
 rename web/settings/assets/{bat-5763ad59.js => bat-f044ae56.js} (89%)
 rename web/settings/assets/{bat_smart_energy-2291c4ec.js => bat_smart_energy-999a65de.js} (88%)
 rename web/settings/assets/{chargePoint-3f4bb03f.js => chargePoint-112ccae9.js} (90%)
 rename web/settings/assets/{chargePoint-8d89f54f.js => chargePoint-3babeeb9.js} (92%)
 rename web/settings/assets/{chargePoint-f77b98b5.js => chargePoint-468fc8e7.js} (86%)
 rename web/settings/assets/{chargePoint-f92622dd.js => chargePoint-52b6ceee.js} (90%)
 rename web/settings/assets/{chargePoint-72c59831.js => chargePoint-7fec8739.js} (90%)
 rename web/settings/assets/{chargePoint-8472765d.js => chargePoint-a02180ae.js} (86%)
 rename web/settings/assets/{chargePoint-f3a56f90.js => chargePoint-f1ada5d6.js} (98%)
 rename web/settings/assets/{commands-0749d4c7.js => commands-62da4db2.js} (93%)
 rename web/settings/assets/{consumption_counter-a72d5a10.js => consumption_counter-c6d1b3df.js} (93%)
 rename web/settings/assets/{counter-6f319353.js => counter-02712182.js} (88%)
 rename web/settings/assets/{counter-e43b2263.js => counter-116a65cb.js} (85%)
 rename web/settings/assets/{counter-ab7dda04.js => counter-277eabf6.js} (92%)
 rename web/settings/assets/{counter-9fd0b8be.js => counter-321d3599.js} (87%)
 rename web/settings/assets/{counter-c524e146.js => counter-38172dbc.js} (92%)
 rename web/settings/assets/{counter-37e09ebf.js => counter-3942ce7f.js} (85%)
 rename web/settings/assets/{counter-11a808b3.js => counter-4410dc4e.js} (97%)
 rename web/settings/assets/{counter-4760f2a8.js => counter-4498494c.js} (82%)
 rename web/settings/assets/{counter-6dd39fae.js => counter-46612257.js} (89%)
 rename web/settings/assets/{counter-6a117469.js => counter-50d0810f.js} (86%)
 rename web/settings/assets/{counter-8cf3e538.js => counter-55fd6368.js} (87%)
 rename web/settings/assets/{counter-211768c3.js => counter-68a2bd86.js} (92%)
 rename web/settings/assets/{counter-3c3a8ee4.js => counter-7a3ba47e.js} (90%)
 rename web/settings/assets/{counter-e2ea1207.js => counter-7bf5aea7.js} (87%)
 rename web/settings/assets/{counter-339b78e6.js => counter-7fca39df.js} (96%)
 rename web/settings/assets/{counter-4e131617.js => counter-865f9c61.js} (97%)
 rename web/settings/assets/{counter-e2aa39de.js => counter-86f04938.js} (85%)
 rename web/settings/assets/{counter-5e68cf56.js => counter-8757edbf.js} (90%)
 rename web/settings/assets/{counter-9028760b.js => counter-8af15294.js} (83%)
 rename web/settings/assets/{counter-4e0e153d.js => counter-9b6e8dff.js} (89%)
 rename web/settings/assets/{counter-2d7b83ed.js => counter-9fcc4ae5.js} (88%)
 rename web/settings/assets/{counter-61e6692b.js => counter-9ff0cd5b.js} (85%)
 rename web/settings/assets/{counter-b8ca89e1.js => counter-b0f78c7c.js} (90%)
 rename web/settings/assets/{counter-59a65215.js => counter-b3f26d9d.js} (88%)
 rename web/settings/assets/{counter-62b27636.js => counter-bc776e4a.js} (89%)
 rename web/settings/assets/{counter-b3df37ca.js => counter-bff0132e.js} (86%)
 rename web/settings/assets/{counter-dae0c479.js => counter-c8cb4ab4.js} (82%)
 rename web/settings/assets/{counter-87bd2dba.js => counter-cda681c6.js} (90%)
 rename web/settings/assets/{counter-70744c17.js => counter-dc002a5d.js} (88%)
 rename web/settings/assets/{counter-9f134879.js => counter-e6014599.js} (88%)
 rename web/settings/assets/{counter-873539d4.js => counter-ec9f9982.js} (87%)
 rename web/settings/assets/{counter-2af1b45c.js => counter-f74d8989.js} (91%)
 rename web/settings/assets/{counter_sm-ce85abde.js => counter_sm-46c91fda.js} (95%)
 rename web/settings/assets/{device-20a3cc0b.js => device-17812629.js} (87%)
 rename web/settings/assets/{device-f2e0c7de.js => device-1a463b8a.js} (87%)
 rename web/settings/assets/{device-f057baf4.js => device-1eaab064.js} (89%)
 rename web/settings/assets/{device-930131aa.js => device-2045e148.js} (84%)
 rename web/settings/assets/{device-1a057dc5.js => device-24fa8719.js} (90%)
 rename web/settings/assets/{device-17ee5402.js => device-2812d314.js} (81%)
 rename web/settings/assets/{device-cbb1f36f.js => device-282ac597.js} (89%)
 rename web/settings/assets/{device-f2ca9f52.js => device-2861d843.js} (84%)
 rename web/settings/assets/{device-5aef24bb.js => device-2a6323de.js} (84%)
 rename web/settings/assets/{device-191071c7.js => device-2fe61a6a.js} (92%)
 rename web/settings/assets/{device-41c2f368.js => device-35c75ada.js} (88%)
 rename web/settings/assets/{device-ba7411f1.js => device-37c8a5d7.js} (89%)
 rename web/settings/assets/{device-a4ac3a30.js => device-3ed84812.js} (86%)
 rename web/settings/assets/{device-97810824.js => device-436ab177.js} (89%)
 rename web/settings/assets/{device-13bf79c7.js => device-44627252.js} (80%)
 rename web/settings/assets/{device-92f55c21.js => device-44ac2d07.js} (87%)
 rename web/settings/assets/{device-63bdcc3c.js => device-4696232a.js} (91%)
 rename web/settings/assets/{device-fa6313a5.js => device-4992e86f.js} (91%)
 rename web/settings/assets/{device-00ea06ea.js => device-4cd875ee.js} (94%)
 rename web/settings/assets/{device-511acdb3.js => device-51badd6c.js} (89%)
 rename web/settings/assets/{device-8770c372.js => device-51cbfef1.js} (81%)
 rename web/settings/assets/{device-dcaa50ab.js => device-53686a65.js} (87%)
 rename web/settings/assets/{device-f5beaf39.js => device-5860e973.js} (87%)
 rename web/settings/assets/{device-a55b4f4a.js => device-5dc8caee.js} (93%)
 rename web/settings/assets/{device-b5ff9479.js => device-70dec769.js} (92%)
 rename web/settings/assets/{device-667da2bf.js => device-752b4387.js} (91%)
 rename web/settings/assets/{device-2dc6cc3c.js => device-7893f72c.js} (96%)
 rename web/settings/assets/{device-7c975c06.js => device-7e1581b0.js} (89%)
 rename web/settings/assets/{device-c1c7f277.js => device-823f72ad.js} (92%)
 rename web/settings/assets/{device-19334006.js => device-827098d6.js} (88%)
 rename web/settings/assets/{device-09e0b5dd.js => device-82e0acf7.js} (89%)
 rename web/settings/assets/{device-c1920155.js => device-8308249d.js} (90%)
 rename web/settings/assets/{device-4f01c44f.js => device-86c123c1.js} (86%)
 rename web/settings/assets/{device-c37bf0a2.js => device-87e58e62.js} (92%)
 rename web/settings/assets/{device-8b304fd5.js => device-8d6c27df.js} (82%)
 rename web/settings/assets/{device-57a08fa3.js => device-900bb2eb.js} (87%)
 rename web/settings/assets/{device-264b9607.js => device-939b0ad1.js} (95%)
 rename web/settings/assets/{device-7d21f4f3.js => device-9f7025df.js} (91%)
 rename web/settings/assets/{device-c9df224a.js => device-a018debc.js} (91%)
 rename web/settings/assets/{device-a945746f.js => device-a159510e.js} (84%)
 rename web/settings/assets/{device-2bd6af83.js => device-a41c9f9a.js} (92%)
 rename web/settings/assets/{device-8f5f7340.js => device-ac3617bf.js} (86%)
 rename web/settings/assets/{device-9eedb23a.js => device-ac5464c5.js} (94%)
 rename web/settings/assets/{device-e6c608f5.js => device-b07f9cfe.js} (93%)
 rename web/settings/assets/{device-73279a9d.js => device-b14a6820.js} (89%)
 rename web/settings/assets/{device-d779a283.js => device-b80563d5.js} (91%)
 rename web/settings/assets/{device-84e9833f.js => device-baaf93fc.js} (92%)
 rename web/settings/assets/{device-967835b8.js => device-c3b4d8e4.js} (91%)
 rename web/settings/assets/{device-e1695c1b.js => device-c3ba2a50.js} (89%)
 rename web/settings/assets/{device-97dc9354.js => device-cd05bdaa.js} (86%)
 rename web/settings/assets/{device-dc9695a4.js => device-d0fb85ca.js} (91%)
 rename web/settings/assets/{device-51a9d57c.js => device-d8584875.js} (91%)
 rename web/settings/assets/{device-7aeda0a3.js => device-d91bc952.js} (95%)
 rename web/settings/assets/{device-95627a98.js => device-e77cad4b.js} (86%)
 rename web/settings/assets/{device-fb6dbf7a.js => device-e7ac4171.js} (87%)
 rename web/settings/assets/{device-944bfe1b.js => device-e9766b50.js} (92%)
 rename web/settings/assets/{device-c0ddbba1.js => device-ee62c15a.js} (84%)
 rename web/settings/assets/{device-c3e49e5d.js => device-eed61bed.js} (91%)
 rename web/settings/assets/{device-8a6c3a9f.js => device-f511f708.js} (91%)
 rename web/settings/assets/{device-7552eed1.js => device-f8b42d98.js} (91%)
 rename web/settings/assets/{device-c3aaf957.js => device-fd700d8f.js} (90%)
 rename web/settings/assets/{device-a5ad3257.js => device-fe5fad52.js} (92%)
 rename web/settings/assets/{displayTheme-78ab078b.js => displayTheme-4083964b.js} (97%)
 rename web/settings/assets/{electricity_tariff-b400ca32.js => electricity_tariff-4bc01805.js} (94%)
 rename web/settings/assets/{electricity_tariff-c1ffcfa7.js => electricity_tariff-5111f15f.js} (96%)
 rename web/settings/assets/{electricity_tariff-9f4ce3a7.js => electricity_tariff-63a1e9ec.js} (89%)
 rename web/settings/assets/{electricity_tariff-ac583f0a.js => electricity_tariff-7b04b620.js} (91%)
 rename web/settings/assets/{electricity_tariff-18981e99.js => electricity_tariff-e23d6291.js} (91%)
 rename web/settings/assets/{external_inverter-319dd94a.js => external_inverter-a76bfa79.js} (94%)
 rename web/settings/assets/{index-dc0e711f.js => index-f9fda857.js} (96%)
 rename web/settings/assets/{inverter-b4941105.js => inverter-1529fe73.js} (82%)
 rename web/settings/assets/{inverter-62aebfd4.js => inverter-1e6b58f6.js} (82%)
 rename web/settings/assets/{inverter-d79a2e57.js => inverter-287e8910.js} (87%)
 rename web/settings/assets/{inverter-cf814a97.js => inverter-2c898c0e.js} (90%)
 rename web/settings/assets/{inverter-521e60bd.js => inverter-36b2f4c7.js} (91%)
 rename web/settings/assets/{inverter-00707516.js => inverter-3715b21d.js} (88%)
 rename web/settings/assets/{inverter-0372b463.js => inverter-471fa6e9.js} (88%)
 rename web/settings/assets/{inverter-3f3aa74b.js => inverter-48761201.js} (90%)
 rename web/settings/assets/{inverter-d1ef1a1b.js => inverter-57d15ff3.js} (91%)
 rename web/settings/assets/{inverter-a77daa25.js => inverter-5f7aec52.js} (81%)
 rename web/settings/assets/{inverter-90d5660d.js => inverter-692fd261.js} (87%)
 rename web/settings/assets/{inverter-668ceedf.js => inverter-6f84161c.js} (91%)
 rename web/settings/assets/{inverter-ab8a80e4.js => inverter-70f78ef5.js} (81%)
 rename web/settings/assets/{inverter-f293b026.js => inverter-80f24f74.js} (93%)
 rename web/settings/assets/{inverter-22aad90d.js => inverter-88d5ed46.js} (81%)
 rename web/settings/assets/{inverter-0fe312b3.js => inverter-b61011e2.js} (83%)
 rename web/settings/assets/{inverter-eee7c6e5.js => inverter-bcc6d0d6.js} (83%)
 rename web/settings/assets/{inverter-3a770b71.js => inverter-bdcf1a2f.js} (92%)
 rename web/settings/assets/{inverter-6f930abf.js => inverter-c29b676e.js} (89%)
 rename web/settings/assets/{inverter-3661665d.js => inverter-c38863be.js} (89%)
 rename web/settings/assets/{inverter-c319320b.js => inverter-d29f4c1a.js} (88%)
 rename web/settings/assets/{inverter-f30a6830.js => inverter-da1db027.js} (93%)
 rename web/settings/assets/{inverter-3c18bfc8.js => inverter-e10956ea.js} (89%)
 rename web/settings/assets/{inverter-7c07833e.js => inverter-e49c5d75.js} (94%)
 rename web/settings/assets/{inverter-efcd16da.js => inverter-eb5f339a.js} (85%)
 rename web/settings/assets/{inverter-832fb3b7.js => inverter-fa1c29cd.js} (94%)
 rename web/settings/assets/{inverter-d090560a.js => inverter-fa423cd0.js} (89%)
 rename web/settings/assets/{inverter_secondary-67eeedf8.js => inverter_secondary-4a5d5bbc.js} (92%)
 rename web/settings/assets/{ripple_control_receiver-9035a86a.js => ripple_control_receiver-432648b7.js} (79%)
 rename web/settings/assets/{ripple_control_receiver-fed88f10.js => ripple_control_receiver-8b00be72.js} (88%)
 rename web/settings/assets/{vehicle-b9845ca5.js => vehicle-022511d4.js} (87%)
 rename web/settings/assets/{vehicle-bedc772a.js => vehicle-317e6bfc.js} (89%)
 rename web/settings/assets/{vehicle-7f7d2e44.js => vehicle-35b782fb.js} (89%)
 rename web/settings/assets/{vehicle-19e3adb9.js => vehicle-38d89acf.js} (87%)
 rename web/settings/assets/{vehicle-42f1ed52.js => vehicle-4afffc4b.js} (97%)
 rename web/settings/assets/{vehicle-f050a85d.js => vehicle-4df6c138.js} (89%)
 rename web/settings/assets/{vehicle-039c8759.js => vehicle-635e6620.js} (96%)
 rename web/settings/assets/{vehicle-03c9aa3d.js => vehicle-693cb69a.js} (93%)
 rename web/settings/assets/{vehicle-0babcb51.js => vehicle-6dc5238d.js} (91%)
 rename web/settings/assets/{vehicle-7f1d1c67.js => vehicle-81ee016b.js} (86%)
 rename web/settings/assets/{vehicle-5b8d1dc8.js => vehicle-95222308.js} (88%)
 rename web/settings/assets/{vehicle-7adb9a7c.js => vehicle-a8092426.js} (91%)
 rename web/settings/assets/{vehicle-28a9dcf3.js => vehicle-a9e07390.js} (94%)
 rename web/settings/assets/{vehicle-7bb9b768.js => vehicle-ad06c8a7.js} (88%)
 rename web/settings/assets/{vehicle-9ce6bac4.js => vehicle-caa88593.js} (92%)
 rename web/settings/assets/{vehicle-47ed0a84.js => vehicle-cb0122fd.js} (82%)
 rename web/settings/assets/{vehicle-85478721.js => vehicle-cc94e01f.js} (91%)
 rename web/settings/assets/{vehicle-0bc01aa8.js => vehicle-ed5ef659.js} (95%)

diff --git a/web/settings/assets/ChargeLog-9836d756.js b/web/settings/assets/ChargeLog-a730dd70.js
similarity index 99%
rename from web/settings/assets/ChargeLog-9836d756.js
rename to web/settings/assets/ChargeLog-a730dd70.js
index 5d7705be94..4ba1556c38 100644
--- a/web/settings/assets/ChargeLog-9836d756.js
+++ b/web/settings/assets/ChargeLog-a730dd70.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,$ as S,u as g,k as h,l as u,x as i,D as d,N as s,A as V,B as I,y as c,z as n,M as _,q as w}from"./vendor-a21b3a62.js";import{C as W}from"./index-dc0e711f.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";R.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:E},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,$ as S,u as g,k as h,l as u,x as i,D as d,N as s,A as V,B as I,y as c,z as n,M as _,q as w}from"./vendor-a21b3a62.js";import{C as W}from"./index-f9fda857.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";R.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:E},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}}},T={class:"chargeLog"},U={name:"chargeLogForm"},y=["href"],M={key:1},P={class:"td-end"},z={class:"td-end"},O=["title"],A=["aria-valuenow"],Z=["aria-valuenow"],j=["aria-valuenow"],K=["aria-valuenow"],J={key:1,class:"td-center"},G={class:"td-end"},H={class:"no-wrap"},Y={class:"no-wrap"},Q={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"td-end"},se={key:0},oe={class:"row justify-content-center"},ne={ref:"downloadChargeLogLink",class:"hide"},le={class:"td-end"},de={class:"td-end"},ce={class:"td-end"},ge={class:"td-end"};function he(t,e,o,p,l,r){const C=g("openwb-base-text-input"),f=g("font-awesome-icon"),D=g("openwb-base-button-group-input"),m=g("openwb-base-select-input"),q=g("openwb-base-array-input"),v=g("openwb-base-card"),b=g("openwb-base-alert"),L=g("vue3-table-lite"),N=g("openwb-base-click-button");return h(),u("div",T,[i("form",U,[d(v,{title:"Filter"},{default:s(()=>[d(C,{modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())],title:"Zeitraum",subtype:"month",min:"2018-01","show-quick-buttons":!0,max:l.currentMonth},null,8,["modelValue","max"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),e[13]||(e[13]=c(" Erweiterte Optionen "))]),default:s(()=>[d(D,{modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())],title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"]),d(m,{modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())],title:"Lademodus",multiple:"",options:r.chargeModeList},{help:s(()=>e[14]||(e[14]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(m,{modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())],title:"Ladepunkt",multiple:"",options:r.chargePointList},{help:s(()=>e[15]||(e[15]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(m,{modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())],title:"Fahrzeug",multiple:"",options:r.vehicleList},{help:s(()=>e[16]||(e[16]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(q,{modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())],title:"ID-Tags"},{help:s(()=>e[17]||(e[17]=[c(" Es können mehrere Tags als Filter verwendet werden. ")])),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[e[18]||(e[18]=c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,y)]),_:1}),r.chargeLogRead?(h(),u("div",M,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",P,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(h(),u("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:_({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,A),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:_({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,Z),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:_({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,j),i("div",{class:"progress-bar bg-success",role:"progressbar",style:_({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K)],8,O)):(h(),u("div",J," - "))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",G,[i("span",H,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",Y," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",Q,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",ee,[i("span",te,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",ae," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",re,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ie,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(h(),u("div",se,[i("div",oe,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[e[20]||(e[20]=c(" Als CSV exportieren ")),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ne,null,512)]),e[21]||(e[21]=i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",le,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",de,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ce,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",ge,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):I("",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>e[19]||(e[19]=[c(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const Le=B(F,[["render",he],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{Le as default};
diff --git a/web/settings/assets/ChargePointInstallation-12a5c989.js b/web/settings/assets/ChargePointInstallation-12a5c989.js
deleted file mode 100644
index 1353d5896c..0000000000
--- a/web/settings/assets/ChargePointInstallation-12a5c989.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as G,d as Q,a0 as X,A as Y,a9 as K,aa as ee,K as te,ab as ne,F as ae,I as oe}from"./vendor-fortawesome-41164876.js";import{_ as V,C as le}from"./index-dc0e711f.js";import{_ as q}from"./dynamic-import-helper-be004503.js";import{_ as S,u as g,k as l,l as p,A as _,N as o,y as s,z as w,D as a,x as d,a0 as E,a1 as D,J as A,K as x,B as h,q as M,a2 as F,P as ie}from"./vendor-a21b3a62.js";const se={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},O=S(se,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[O]},ue={class:"charge-point-config-fallback"},de={key:1};function pe(t,e,c,y,m,u){const k=g("openwb-base-alert"),f=g("openwb-base-textarea");return l(),p("div",ue,[Object.keys(t.chargePoint.configuration).length==0?(l(),_(k,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),p("div",de,[a(k,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=L=>t.updateConfiguration(L,"configuration"))},{help:o(()=>e[1]||(e[1]=[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const me=S(re,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={props:{chargePoint:{type:Object,required:!0}}},he=S(ge,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),ce={name:"ChargePointCommandsFallback",mixins:[he]},be={class:"charge-point-commands-fallback"};function fe(t,e,c,y,m,u){const k=g("openwb-base-alert");return l(),p("div",be,[a(k,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const _e=S(ce,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),ve={name:"OpenwbChargePointProxy",mixins:[O],computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),E({loader:()=>q(Object.assign({"./external_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-3f4bb03f.js"),["assets/chargePoint-3f4bb03f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-8d89f54f.js"),["assets/chargePoint-8d89f54f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>V(()=>import("./chargePoint-f3a56f90.js"),["assets/chargePoint-f3a56f90.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>V(()=>import("./chargePoint-8472765d.js"),["assets/chargePoint-8472765d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>V(()=>import("./chargePoint-f77b98b5.js"),["assets/chargePoint-f77b98b5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>V(()=>import("./chargePoint-f92622dd.js"),["assets/chargePoint-f92622dd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>V(()=>import("./chargePoint-72c59831.js"),["assets/chargePoint-72c59831.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:me})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),E({loader:()=>q(Object.assign({"./openwb_pro/commands.vue":()=>V(()=>import("./commands-0749d4c7.js"),["assets/commands-0749d4c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:_e})}}};function we(t,e,c,y,m,u){const k=g("openwb-base-heading");return l(),p(A,null,[a(k,null,{default:o(()=>[s(' Einstellungen für Ladepunkt Typ "'+w(t.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointSettingsComponent),{"charge-point":t.chargePoint,"onUpdate:configuration":e[0]||(e[0]=f=>t.updateConfiguration(f))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[s(' Befehle für Ladepunkt Typ "'+w(t.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointCommandsComponent),{"charge-point":t.chargePoint},null,8,["charge-point"]))],64)}const ke=S(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);G.add(Q,X,Y,K,ee,te,ne);const Ce={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:oe,OpenwbChargePointProxy:ke},mixins:[le],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[c,y]of Object.entries(t))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[c]=y);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let c=parseInt(e.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+c].name;t.push({value:c,text:y})}),t}}},methods:{addChargePoint(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&(console.debug("request removal of charge point '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}}))},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation(),console.info("requesting new charge point template autolock plan...");let c=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:c}})},removeChargePointTemplateAutolockPlanModal(t,e,c){c.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,c){this.showChargePointTemplateAutolockPlanModal=!1,c=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"' autolock plan '"+e+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}}))},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le={key:1},Be={key:0},We={class:"col-1"},Ae={key:0},Se={key:1},Ue={key:1},xe={key:0},Te={key:2},ze={key:4},Ie=["onClick"],qe={key:0},Ee={key:1},De={key:2},Me={key:2};function Fe(t,e,c,y,m,u){const k=g("openwb-base-modal-dialog"),f=g("font-awesome-icon"),L=g("openwb-base-avatar"),P=g("openwb-base-text-input"),T=g("openwb-base-select-input"),$=g("openwb-charge-point-proxy"),B=g("openwb-base-heading"),C=g("openwb-base-button-group-input"),U=g("openwb-base-card"),N=g("openwb-base-click-button"),j=g("font-awesome-layers"),z=g("openwb-base-alert"),R=g("openwb-base-array-input"),I=g("openwb-base-range-input"),Z=g("openwb-base-number-input"),J=g("openwb-base-submit-buttons");return l(),p(A,null,[a(k,{show:m.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=i=>u.removeChargePoint(m.modalChargePointIndex,i))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(m.modalChargePointIndex))+'" (ID: '+w(m.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:m.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=i=>u.removeChargePointTemplate(m.modalChargePointTemplateIndex,i))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(m.modalChargePointTemplateIndex))+'" (ID: '+w(m.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:m.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=i=>u.removeChargePointTemplateAutolockPlan(m.modalChargePointTemplateIndex,m.modalChargePointTemplateAutolockPlanIndex,i))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(m.modalChargePointTemplateIndex,m.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",ye,[d("form",Pe,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!c.installAssistantActive},{header:o(()=>[a(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=s(" Ladepunkte "))]),default:o(()=>[(l(!0),p(A,null,x(u.installedChargePoints,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+i.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?h("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":n=>t.updateState(r,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[r].type},null,8,["model-value"]),i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),p("span",Ve,[a(T,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[r].template,"onUpdate:modelValue":n=>t.updateState(r,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):h("",!0),e[13]||(e[13]=d("hr",null,null,-1)),a($,{"charge-point":i,"onUpdate:configuration":n=>u.updateConfiguration(r,n)},null,8,["charge-point","onUpdate:configuration"]),(i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&i.charging_type!=="DC"?(l(),p("div",Le,[e[12]||(e[12]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[8]||(e[8]=[s(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[9]||(e[9]=[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{default:o(()=>[...e[10]||(e[10]=[s(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.connected_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":i.phase_1,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_1")},{help:o(()=>[...e[11]||(e[11]=[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):h("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(l(),p("hr",Be)):h("",!0),a(T,{class:"mb-2",title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":m.chargePointToAdd,"onUpdate:modelValue":e[3]||(e[3]=i=>m.chargePointToAdd=i)},{append:o(()=>[d("span",We,[a(N,{class:M(m.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:m.chargePointToAdd===void 0,onButtonClicked:u.addChargePoint},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>e[14]||(e[14]=[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),d("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),d("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),e[37]||(e[37]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a(j,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[15]||(e[15]=s(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),_(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):h("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),p("div",Ae,[a(z,{subtype:"info"},{default:o(()=>e[16]||(e[16]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),p("div",Se,[(l(!0),p(A,null,x(u.chargePointTemplates,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+u.getChargePointTemplateIndex(r)+")",collapsible:!0,collapsed:!0},F({default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:o(()=>[e[17]||(e[17]=s(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(l(),_(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":i.charging_type,"onUpdate:modelValue":n=>t.updateState(r,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),e[34]||(e[34]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[18]||(e[18]=[s(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(r,n,"disable_after_unplug")},{help:o(()=>[...e[19]||(e[19]=[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!c.installAssistantActive?(l(),p("div",Ue,[i.disable_after_unplug?(l(),_(R,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":i.valid_tags,"onUpdate:modelValue":n=>t.updateState(r,n,"valid_tags")},{help:o(()=>[...e[20]||(e[20]=[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):h("",!0)])):h("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[21]||(e[21]=[s(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(z,{subtype:"info"},{default:o(()=>[e[22]||(e[22]=s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[23]||(e[23]=d("br",null,null,-1)),e[24]||(e[24]=s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),i.charging_type==="AC"?(l(),p("span",xe," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):h("",!0),e[25]||(e[25]=d("br",null,null,-1)),e[26]||(e[26]=s(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[27]||(e[27]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[28]||(e[28]=s(" beschrieben. "))]),_:2},1024),i.charging_type==="AC"||u.dcChargingEnabled!==!0?(l(),p("div",Te,[a(I,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(I,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(l(),_(Z,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),e[36]||(e[36]=d("hr",null,null,-1)),c.installAssistantActive?h("",!0):(l(),p("div",ze,[e[33]||(e[33]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[29]||(e[29]=[s(" Automatische Sperre ")])]),_:1}),a(C,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.active,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.active")},{help:o(()=>[...e[30]||(e[30]=[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[31]||(e[31]=[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{actions:o(()=>[a(L,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(r,n)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[32]||(e[32]=s(" Zeitpläne für die automatische Sperre "))]),_:2},1024)])),(l(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(r),(n,v)=>(l(),_(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(l(),p("span",{key:0,class:M(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:ie(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(f,{"fixed-width":"",icon:["fas","clock"]}),s(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(l(),p("span",qe,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):h("",!0),n.frequency.selected=="daily"?(l(),p("span",Ee,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):h("",!0),n.frequency.selected=="weekly"?(l(),p("span",De,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):h("",!0)],10,Ie)):h("",!0),b.collapsed==!1?(l(),_(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(r,v,W)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):h("",!0)]),default:o(()=>[a(P,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(l(),_(P,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):h("",!0),n.frequency.selected=="once"?(l(),_(P,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):h("",!0),n.frequency.selected=="weekly"?(l(),p("div",Me,[(l(!0),p(A,null,x(t.weekdays,(b,W)=>(l(),_(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":H=>t.updateState(v,H,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):h("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?h("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(J,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=i=>t.$emit("save")),onReset:e[5]||(e[5]=i=>t.$emit("reset")),onDefaults:e[6]||(e[6]=i=>t.$emit("defaults"))})])])],64)}const Oe=S(Ce,[["render",Fe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Oe},Symbol.toStringTag,{value:"Module"}));export{O as C,he as a,Oe as b,Ze as c};
diff --git a/web/settings/assets/ChargePointInstallation-8dff21bc.js b/web/settings/assets/ChargePointInstallation-8dff21bc.js
new file mode 100644
index 0000000000..1e82001908
--- /dev/null
+++ b/web/settings/assets/ChargePointInstallation-8dff21bc.js
@@ -0,0 +1 @@
+import{l as H,d as G,a0 as Q,A as X,a9 as Y,aa as K,K as ee,ab as te,F as ne,I as ae}from"./vendor-fortawesome-41164876.js";import{_ as V,C as oe}from"./index-f9fda857.js";import{_ as I}from"./dynamic-import-helper-be004503.js";import{_ as S,u as h,k as l,l as p,A as _,N as o,y as s,z as w,D as a,x as d,a0 as E,a1 as D,J as A,K as x,B as c,q as M,a2 as O,P as le}from"./vendor-a21b3a62.js";const ie={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=S(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[se]},ue={class:"charge-point-config-fallback"},de={key:1};function pe(t,e,m,y,g,u){const k=h("openwb-base-alert"),f=h("openwb-base-textarea");return l(),p("div",ue,[Object.keys(t.chargePoint.configuration).length==0?(l(),_(k,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),p("div",de,[a(k,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=L=>t.updateConfiguration(L,"configuration"))},{help:o(()=>e[1]||(e[1]=[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const me=S(re,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={props:{chargePoint:{type:Object,required:!0}}},he=S(ge,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),ce={name:"ChargePointCommandsFallback",mixins:[he]},be={class:"charge-point-commands-fallback"};function fe(t,e,m,y,g,u){const k=h("openwb-base-alert");return l(),p("div",be,[a(k,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const _e=S(ce,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),ve={name:"OpenwbChargePointProxy",props:{chargePoint:{required:!0,type:Object}},emits:["update:configuration"],computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),E({loader:()=>I(Object.assign({"./external_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-112ccae9.js"),["assets/chargePoint-112ccae9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-3babeeb9.js"),["assets/chargePoint-3babeeb9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>V(()=>import("./chargePoint-f1ada5d6.js"),["assets/chargePoint-f1ada5d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>V(()=>import("./chargePoint-a02180ae.js"),["assets/chargePoint-a02180ae.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>V(()=>import("./chargePoint-468fc8e7.js"),["assets/chargePoint-468fc8e7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>V(()=>import("./chargePoint-52b6ceee.js"),["assets/chargePoint-52b6ceee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>V(()=>import("./chargePoint-7fec8739.js"),["assets/chargePoint-7fec8739.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:me})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),E({loader:()=>I(Object.assign({"./openwb_pro/commands.vue":()=>V(()=>import("./commands-62da4db2.js"),["assets/commands-62da4db2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:_e})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function we(t,e,m,y,g,u){const k=h("openwb-base-heading");return l(),p(A,null,[a(k,null,{default:o(()=>[s(' Einstellungen für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointSettingsComponent),{"charge-point":m.chargePoint,"onUpdate:configuration":e[0]||(e[0]=f=>u.updateConfiguration(f))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[s(' Befehle für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointCommandsComponent),{"charge-point":m.chargePoint},null,8,["charge-point"]))],64)}const ke=S(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);H.add(G,Q,X,Y,K,ee,te);const Ce={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:ke},mixins:[oe],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[m,y]of Object.entries(t))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[m]=y);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let m=parseInt(e.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;t.push({value:m,text:y})}),t}}},methods:{addChargePoint(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&(console.debug("request removal of charge point '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}}))},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(t,e,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"' autolock plan '"+e+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}}))},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le={key:1},Be={key:0},We={class:"col-1"},Ae={key:0},Se={key:1},Ue={key:1},xe={key:0},Te={key:2},ze={key:4},qe=["onClick"],Ie={key:0},Ee={key:1},De={key:2},Me={key:2};function Oe(t,e,m,y,g,u){const k=h("openwb-base-modal-dialog"),f=h("font-awesome-icon"),L=h("openwb-base-avatar"),P=h("openwb-base-text-input"),T=h("openwb-base-select-input"),F=h("openwb-charge-point-proxy"),B=h("openwb-base-heading"),C=h("openwb-base-button-group-input"),U=h("openwb-base-card"),N=h("openwb-base-click-button"),$=h("font-awesome-layers"),z=h("openwb-base-alert"),j=h("openwb-base-array-input"),q=h("openwb-base-range-input"),R=h("openwb-base-number-input"),Z=h("openwb-base-submit-buttons");return l(),p(A,null,[a(k,{show:g.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=i=>u.removeChargePoint(g.modalChargePointIndex,i))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(g.modalChargePointIndex))+'" (ID: '+w(g.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:g.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=i=>u.removeChargePointTemplate(g.modalChargePointTemplateIndex,i))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(g.modalChargePointTemplateIndex))+'" (ID: '+w(g.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:g.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=i=>u.removeChargePointTemplateAutolockPlan(g.modalChargePointTemplateIndex,g.modalChargePointTemplateAutolockPlanIndex,i))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(g.modalChargePointTemplateIndex,g.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",ye,[d("form",Pe,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[a(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=s(" Ladepunkte "))]),default:o(()=>[(l(!0),p(A,null,x(u.installedChargePoints,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+i.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?c("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":n=>t.updateState(r,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[r].type},null,8,["model-value"]),i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),p("span",Ve,[a(T,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[r].template,"onUpdate:modelValue":n=>t.updateState(r,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("",!0),e[13]||(e[13]=d("hr",null,null,-1)),a(F,{"charge-point":i,"onUpdate:configuration":n=>u.updateConfiguration(r,n)},null,8,["charge-point","onUpdate:configuration"]),(i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&i.charging_type!=="DC"?(l(),p("div",Le,[e[12]||(e[12]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[8]||(e[8]=[s(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[9]||(e[9]=[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{default:o(()=>[...e[10]||(e[10]=[s(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.connected_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":i.phase_1,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_1")},{help:o(()=>[...e[11]||(e[11]=[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(l(),p("hr",Be)):c("",!0),a(T,{class:"mb-2",title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":g.chargePointToAdd,"onUpdate:modelValue":e[3]||(e[3]=i=>g.chargePointToAdd=i)},{append:o(()=>[d("span",We,[a(N,{class:M(g.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:g.chargePointToAdd===void 0,onButtonClicked:u.addChargePoint},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>e[14]||(e[14]=[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),d("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),d("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),e[37]||(e[37]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a($,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[15]||(e[15]=s(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),_(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),p("div",Ae,[a(z,{subtype:"info"},{default:o(()=>e[16]||(e[16]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),p("div",Se,[(l(!0),p(A,null,x(u.chargePointTemplates,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+u.getChargePointTemplateIndex(r)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},O({_:2},[r.endsWith("/0")?{name:"help",fn:o(()=>[e[17]||(e[17]=s(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(l(),_(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":i.charging_type,"onUpdate:modelValue":n=>t.updateState(r,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):c("",!0),e[34]||(e[34]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[18]||(e[18]=[s(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(r,n,"disable_after_unplug")},{help:o(()=>[...e[19]||(e[19]=[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(l(),p("div",Ue,[i.disable_after_unplug?(l(),_(j,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":i.valid_tags,"onUpdate:modelValue":n=>t.updateState(r,n,"valid_tags")},{help:o(()=>[...e[20]||(e[20]=[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):c("",!0)])):c("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[21]||(e[21]=[s(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(z,{subtype:"info"},{default:o(()=>[e[22]||(e[22]=s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[23]||(e[23]=d("br",null,null,-1)),e[24]||(e[24]=s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),i.charging_type==="AC"?(l(),p("span",xe," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):c("",!0),e[25]||(e[25]=d("br",null,null,-1)),e[26]||(e[26]=s(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[27]||(e[27]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[28]||(e[28]=s(" beschrieben. "))]),_:2},1024),i.charging_type==="AC"||u.dcChargingEnabled!==!0?(l(),p("div",Te,[a(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(l(),_(R,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),e[36]||(e[36]=d("hr",null,null,-1)),m.installAssistantActive?c("",!0):(l(),p("div",ze,[e[33]||(e[33]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[29]||(e[29]=[s(" Automatische Sperre ")])]),_:1}),a(C,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.active,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.active")},{help:o(()=>[...e[30]||(e[30]=[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[31]||(e[31]=[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{actions:o(()=>[a(L,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(r,n)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[32]||(e[32]=s(" Zeitpläne für die automatische Sperre "))]),_:2},1024)])),(l(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(r),(n,v)=>(l(),_(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(l(),p("span",{key:0,class:M(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:le(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(f,{"fixed-width":"",icon:["fas","clock"]}),s(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(l(),p("span",Ie,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):c("",!0),n.frequency.selected=="daily"?(l(),p("span",Ee,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("",!0),n.frequency.selected=="weekly"?(l(),p("span",De,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("",!0)],10,qe)):c("",!0),b.collapsed==!1?(l(),_(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(r,v,W)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("",!0)]),default:o(()=>[a(P,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(l(),_(P,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("",!0),n.frequency.selected=="once"?(l(),_(P,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("",!0),n.frequency.selected=="weekly"?(l(),p("div",Me,[(l(!0),p(A,null,x(t.weekdays,(b,W)=>(l(),_(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":J=>t.updateState(v,J,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?c("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(Z,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=i=>t.$emit("save")),onReset:e[5]||(e[5]=i=>t.$emit("reset")),onDefaults:e[6]||(e[6]=i=>t.$emit("defaults"))})])])],64)}const Fe=S(Ce,[["render",Oe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));export{se as C,he as a,Fe as b,Ze as c};
diff --git a/web/settings/assets/Chart-eb294839.js b/web/settings/assets/Chart-19a9b222.js
similarity index 99%
rename from web/settings/assets/Chart-eb294839.js
rename to web/settings/assets/Chart-19a9b222.js
index d960a3f66d..ef3f358b1d 100644
--- a/web/settings/assets/Chart-eb294839.js
+++ b/web/settings/assets/Chart-19a9b222.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as q,V as j,W as M,F as V}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-dc0e711f.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-5fa56b74.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,q,j,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[4]||(t[4]=[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[3]||(t[3]=[f(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as q,V as j,W as M,F as V}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-f9fda857.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-5fa56b74.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,q,j,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[4]||(t[4]=[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[3]||(t[3]=[f(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-d834b2a3.js b/web/settings/assets/CloudConfig-595194ca.js
similarity index 99%
rename from web/settings/assets/CloudConfig-d834b2a3.js
rename to web/settings/assets/CloudConfig-595194ca.js
index ef54478121..3d5ae81fda 100644
--- a/web/settings/assets/CloudConfig-d834b2a3.js
+++ b/web/settings/assets/CloudConfig-595194ca.js
@@ -1 +1 @@
-import{l as q,$ as P,F as z}from"./vendor-fortawesome-41164876.js";import{C as Z}from"./index-dc0e711f.js";import{_ as I,u as d,k as a,l as w,D as r,N as t,x as m,A as p,B as i,a2 as D,J as x,y as u,q as V}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";q.add(P);const M={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[Z],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,k]of Object.entries(o))k.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},h={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},A={class:"row justify-content-center"},N={key:2,name:"cloudConfigConnectForm"},R={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j={class:"row justify-content-center"};function G(o,e,k,T,s,l){const W=d("openwb-base-modal-dialog"),c=d("router-link"),g=d("openwb-base-alert"),b=d("openwb-base-text-input"),C=d("openwb-base-button-group-input"),f=d("font-awesome-icon"),B=d("openwb-base-array-input"),y=d("openwb-base-click-button"),v=d("openwb-base-card"),S=d("openwb-base-heading"),_=d("openwb-base-submit-buttons");return a(),w(x,null,[r(W,{show:s.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>l.removeCloud(n))},{default:t(()=>e[17]||(e[17]=[u(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",h,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(a(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[19]||(e[19]=u(" Sie müssen der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[18]||(e[18]=[u(" Datenschutzerklärung ")])),_:1}),e[20]||(e[20]=u(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(a(),w("div",K,[r(g,{subtype:"success"},{default:t(()=>[e[22]||(e[22]=u(" Sie haben der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[21]||(e[21]=[u(" Datenschutzerklärung ")])),_:1}),e[23]||(e[23]=u(" zugestimmt und können die openWB Cloud nutzen. "))]),_:1}),s.enableRemoveCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[24]||(e[24]=[u(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),l.cloudBridgeKey?i("",!0):(a(),w("form",U,[r(v,{title:"Neuen Zugang erstellen"},D({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[25]||(e[25]=[u(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),u(" . ")])),_:1}),r(b,{modelValue:s.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>s.newCloudData.username=n),title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",disabled:""},null,8,["modelValue"]),r(b,{modelValue:s.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>s.newCloudData.email=n),title:"E-Mail",required:"",subtype:"email",disabled:""},null,8,["modelValue"]),r(C,{modelValue:s.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>s.newCloudData.partner=n),disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[26]||(e[26]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.newCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[27]||(e[27]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",A,[r(y,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>e[28]||(e[28]=[u(" Zugang erstellen ")])),_:1})])]),key:"0"}:void 0]),1024),s.enableNewCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>e[29]||(e[29]=[u(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")])),_:1}))])),l.cloudBridgeKey?i("",!0):(a(),w("form",N,[r(v,{title:"Vorhandenen Zugang einrichten"},D({default:t(()=>[r(b,{modelValue:s.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>s.connectCloudData.username=n),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(b,{modelValue:s.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>s.connectCloudData.password=n),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(C,{modelValue:s.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>s.connectCloudData.partner=n),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[30]||(e[30]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.connectCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[31]||(e[31]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",R,[r(y,{class:V(["col-4",s.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!s.enableCloudConnectButton,onButtonClicked:l.connectCloud},{default:t(()=>e[32]||(e[32]=[u(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),l.cloudBridgeKey?(a(),w("form",F,[!s.enableCloudConnectButton||!s.enableNewCloudButton?(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[33]||(e[33]=[u(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(v,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",j,[r(y,{class:V(["col-4",s.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!s.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>l.removeCloudModal(n))},{default:t(()=>e[37]||(e[37]=[u(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(S,null,{default:t(()=>e[34]||(e[34]=[m("span",null,[u(" Mit diesen Zugangsdaten können Sie sich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),u(" anmelden. ")],-1)])),_:1}),r(b,{modelValue:l.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>l.cloudSettings.username=n),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(b,{modelValue:l.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>l.cloudSettings.password=n),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[38]||(e[38]=m("hr",null,null,-1)),r(C,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(l.cloudBridgeKey,n,"access.partner"))},{help:t(()=>e[35]||(e[35]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),l.cloudSettings.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[36]||(e[36]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),l.cloudBridgeKey?(a(),p(_,{key:4,"form-name":"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const Y=I(M,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{Y as default};
+import{l as q,$ as P,F as z}from"./vendor-fortawesome-41164876.js";import{C as Z}from"./index-f9fda857.js";import{_ as I,u as d,k as a,l as w,D as r,N as t,x as m,A as p,B as i,a2 as D,J as x,y as u,q as V}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";q.add(P);const M={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[Z],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,k]of Object.entries(o))k.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},h={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},A={class:"row justify-content-center"},N={key:2,name:"cloudConfigConnectForm"},R={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j={class:"row justify-content-center"};function G(o,e,k,T,s,l){const W=d("openwb-base-modal-dialog"),c=d("router-link"),g=d("openwb-base-alert"),b=d("openwb-base-text-input"),C=d("openwb-base-button-group-input"),f=d("font-awesome-icon"),B=d("openwb-base-array-input"),y=d("openwb-base-click-button"),v=d("openwb-base-card"),S=d("openwb-base-heading"),_=d("openwb-base-submit-buttons");return a(),w(x,null,[r(W,{show:s.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>l.removeCloud(n))},{default:t(()=>e[17]||(e[17]=[u(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",h,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(a(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[19]||(e[19]=u(" Sie müssen der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[18]||(e[18]=[u(" Datenschutzerklärung ")])),_:1}),e[20]||(e[20]=u(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(a(),w("div",K,[r(g,{subtype:"success"},{default:t(()=>[e[22]||(e[22]=u(" Sie haben der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[21]||(e[21]=[u(" Datenschutzerklärung ")])),_:1}),e[23]||(e[23]=u(" zugestimmt und können die openWB Cloud nutzen. "))]),_:1}),s.enableRemoveCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[24]||(e[24]=[u(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),l.cloudBridgeKey?i("",!0):(a(),w("form",U,[r(v,{title:"Neuen Zugang erstellen"},D({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[25]||(e[25]=[u(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),u(" . ")])),_:1}),r(b,{modelValue:s.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>s.newCloudData.username=n),title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",disabled:""},null,8,["modelValue"]),r(b,{modelValue:s.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>s.newCloudData.email=n),title:"E-Mail",required:"",subtype:"email",disabled:""},null,8,["modelValue"]),r(C,{modelValue:s.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>s.newCloudData.partner=n),disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[26]||(e[26]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.newCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[27]||(e[27]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",A,[r(y,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>e[28]||(e[28]=[u(" Zugang erstellen ")])),_:1})])]),key:"0"}:void 0]),1024),s.enableNewCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>e[29]||(e[29]=[u(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")])),_:1}))])),l.cloudBridgeKey?i("",!0):(a(),w("form",N,[r(v,{title:"Vorhandenen Zugang einrichten"},D({default:t(()=>[r(b,{modelValue:s.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>s.connectCloudData.username=n),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(b,{modelValue:s.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>s.connectCloudData.password=n),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(C,{modelValue:s.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>s.connectCloudData.partner=n),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[30]||(e[30]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.connectCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[31]||(e[31]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",R,[r(y,{class:V(["col-4",s.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!s.enableCloudConnectButton,onButtonClicked:l.connectCloud},{default:t(()=>e[32]||(e[32]=[u(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),l.cloudBridgeKey?(a(),w("form",F,[!s.enableCloudConnectButton||!s.enableNewCloudButton?(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[33]||(e[33]=[u(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(v,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",j,[r(y,{class:V(["col-4",s.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!s.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>l.removeCloudModal(n))},{default:t(()=>e[37]||(e[37]=[u(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(S,null,{default:t(()=>e[34]||(e[34]=[m("span",null,[u(" Mit diesen Zugangsdaten können Sie sich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),u(" anmelden. ")],-1)])),_:1}),r(b,{modelValue:l.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>l.cloudSettings.username=n),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(b,{modelValue:l.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>l.cloudSettings.password=n),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[38]||(e[38]=m("hr",null,null,-1)),r(C,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(l.cloudBridgeKey,n,"access.partner"))},{help:t(()=>e[35]||(e[35]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),l.cloudSettings.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[36]||(e[36]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),l.cloudBridgeKey?(a(),p(_,{key:4,"form-name":"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const Y=I(M,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{Y as default};
diff --git a/web/settings/assets/DataManagement-ad71d105.js b/web/settings/assets/DataManagement-ad71d105.js
deleted file mode 100644
index 327514bb5b..0000000000
--- a/web/settings/assets/DataManagement-ad71d105.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as z,af as V,ag as j,ah as H,ai as R,aj as E,F as P}from"./vendor-fortawesome-41164876.js";import{_ as B,C as U}from"./index-dc0e711f.js";import{_ as N}from"./dynamic-import-helper-be004503.js";import{_ as S,u as m,k as d,l as f,A as w,N as a,y as s,z as y,D as o,x as n,a0 as q,a1 as I,J as W,B as _,q as D,K as F,a2 as G}from"./vendor-a21b3a62.js";const J={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})},sendCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},A=S(J,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),$={name:"BackupCloudConfigFallback",mixins:[A]},Z={class:"backup-cloud-fallback"},K={key:1};function Q(t,e,u,g,i,l){const b=m("openwb-base-alert"),p=m("openwb-base-textarea");return d(),f("div",Z,[Object.keys(t.backupCloud.configuration).length==0?(d(),w(b,{key:0,subtype:"info"},{default:a(()=>[s(' Die Backup-Cloud "'+y(t.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),f("div",K,[o(b,{subtype:"warning"},{default:a(()=>[s(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+y(t.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(p,{title:"Konfiguration",subtype:"json","model-value":t.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=v=>t.updateConfiguration(v,"configuration"))},{help:a(()=>e[1]||(e[1]=[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),o(b,{subtype:"info"},{default:a(()=>[n("pre",null,y(JSON.stringify(t.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const X=S($,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),Y={name:"OpenwbBackupCloudProxy",mixins:[A],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),q({loader:()=>N(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-510cc7e0.js"),["assets/backup_cloud-510cc7e0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-333e299c.js"),["assets/backup_cloud-333e299c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-71b57f4d.js"),["assets/backup_cloud-71b57f4d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-3f7a1039.js"),["assets/backup_cloud-3f7a1039.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:X})}}};function ee(t,e,u,g,i,l){const b=m("openwb-base-heading");return d(),f(W,null,[o(b,null,{default:a(()=>[s(' Einstellungen für Backup-Cloud Modul "'+y(t.backupCloud.name)+'" ',1)]),_:1}),(d(),w(I(l.myComponent),{"backup-cloud":t.backupCloud,"onUpdate:configuration":e[0]||(e[0]=p=>t.updateConfiguration(p)),onSendCommand:e[1]||(e[1]=p=>t.sendCommand(p))},null,40,["backup-cloud"]))],64)}const te=S(Y,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);z.add(V,j,H,R,E);const ne={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:P,OpenwbBackupCloudProxy:te},mixins:[U],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let i=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:i,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let i=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:i,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${i}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let i=new FormData;i.append("file",e),i.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",i,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(l=>{if(l.response){console.error(l.response.status,l.response.data);var b="Hochladen der Datei fehlgeschlagen!<br />"+l.response.status+": "+l.response.data}else l.request?(console.error(l.request),b+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",l.message),b+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(b,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},oe={class:"system"},se={key:1},ie={name:"backupForm"},ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue={key:0,name:"restoreForm"},re={class:"input-group"},de={class:"input-group-prepend"},pe={class:"input-group-text"},ce={class:"custom-file"},me={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},be={class:"input-group-append"},fe=["disabled"],ge={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:1,name:"cloudBackupForm"},ye={key:0},ve={name:"dataMigrationForm"},_e={class:"input-group"},we={class:"input-group-prepend"},Ce={class:"input-group-text"},Be={class:"custom-file"},De={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Se={class:"input-group-append"},Oe=["disabled"],We={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},Fe={key:1,name:"resetForm"},Ae={class:"row justify-content-center"},Te={class:"col-md-4 d-flex py-1 justify-content-center"};function xe(t,e,u,g,i,l){const b=m("openwb-base-button-group-input"),p=m("openwb-base-alert"),v=m("openwb-base-heading"),k=m("font-awesome-icon"),C=m("openwb-base-click-button"),M=m("openwb-base-select-input"),T=m("openwb-base-button-input"),x=m("openwb-backup-cloud-proxy"),L=m("openwb-base-submit-buttons"),O=m("openwb-base-card");return d(),f("div",oe,[u.installAssistantActive?_("",!0):(d(),w(p,{key:0,subtype:"danger"},{default:a(()=>[e[17]||(e[17]=n("h2",null,"Achtung!",-1)),e[18]||(e[18]=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),o(b,{modelValue:i.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=c=>i.warningAcknowledged=c),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),i.warningAcknowledged||u.installAssistantActive?(d(),f("div",se,[o(O,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:a(()=>{var c,h;return[n("form",ie,[o(v,null,{default:a(()=>e[19]||(e[19]=[s("Sicherung")])),_:1}),o(p,{subtype:"danger"},{default:a(()=>e[20]||(e[20]=[s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o(p,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[s(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),s(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),n("div",ae,[n("div",le,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=r=>l.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:a(()=>[e[22]||(e[22]=s(" Sicherung erstellen ")),o(k,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),i.showRestoreSection?(d(),f("form",ue,[e[27]||(e[27]=n("hr",null,null,-1)),o(v,null,{default:a(()=>e[23]||(e[23]=[s("Wiederherstellung")])),_:1}),o(p,{subtype:"danger"},{default:a(()=>e[24]||(e[24]=[s(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),n("br",null,null,-1),s(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),n("div",re,[n("div",de,[n("div",pe,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ce,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=r=>l.updateSelectedRestoreFile(r))},null,32),n("label",me,y(i.selectedRestoreFile?i.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",be,[n("button",{class:D(["btn",i.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=r=>l.uploadRestoreFile())},[e[25]||(e[25]=s(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,fe)])]),n("div",ge,[n("div",he,[o(C,{class:D(i.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.restoreUploadDone,onButtonClicked:e[4]||(e[4]=r=>l.restoreBackup())},{default:a(()=>[e[26]||(e[26]=s(" Wiederherstellung starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),u.showBackupCloudSection?(d(),f("form",ke,[e[31]||(e[31]=n("hr",null,null,-1)),o(v,null,{default:a(()=>e[28]||(e[28]=[s(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),o(p,{subtype:"info"},{default:a(()=>e[29]||(e[29]=[s(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),n("br",null,null,-1),s(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),n("br",null,null,-1),s(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),s(" . ")])),_:1}),o(M,{class:"mb-2",title:"Backup-Cloud",options:l.backupCloudList,"model-value":(c=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:c.type,"onUpdate:modelValue":e[5]||(e[5]=r=>l.updateSelectedBackupCloud(r))},null,8,["options","model-value"]),(h=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&h.type?(d(),f("div",ye,[o(b,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=r=>t.updateState("openWB/system/backup_cloud/backup_before_update",r))},{help:a(()=>e[30]||(e[30]=[s(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),o(T,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=r=>l.sendSystemCommand("createCloudBackup",{}))}),o(x,{"backup-cloud":t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=r=>l.updateConfiguration("openWB/system/backup_cloud/config",r)),onSendCommand:e[9]||(e[9]=r=>l.sendSystemCommand(r.command,r.args))},null,8,["backup-cloud"])])):_("",!0),o(L,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=r=>t.$emit("save")),onReset:e[11]||(e[11]=r=>t.$emit("reset")),onDefaults:e[12]||(e[12]=r=>t.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?_("",!0):(d(),w(O,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:a(()=>[n("form",ve,[o(p,{subtype:"info"},{default:a(()=>e[32]||(e[32]=[s(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),o(p,{subtype:"danger"},{default:a(()=>e[33]||(e[33]=[s(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),n("br",null,null,-1),s(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),n("br",null,null,-1),s(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),n("div",_e,[n("div",we,[n("div",Ce,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Be,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=c=>l.updateSelectedDataMigrationFile(c))},null,32),n("label",De,y(i.selectedDataMigrationFile?i.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Se,[n("button",{class:D(["btn",i.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!i.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=c=>l.uploadDataMigrationFile())},[e[34]||(e[34]=s(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,Oe)])]),o(v,null,{default:a(()=>e[35]||(e[35]=[s(" Zuordnung der Komponenten ")])),_:1}),(d(!0),f(W,null,F(i.dataMigrationConfig,c=>(d(),f("div",{key:c.sectionName},[o(v,null,{default:a(()=>[s(y(c.sectionName),1)]),_:2},1024),(d(!0),f(W,null,F(c.sectionComponents,h=>(d(),w(M,{key:h.key,modelValue:i.dataMigrationMapping[h.key],"onUpdate:modelValue":r=>i.dataMigrationMapping[h.key]=r,title:h.label,options:l.getMigrationOptions(h.validTypes)},G({_:2},[h.help?{name:"help",fn:a(()=>[s(y(h.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),n("div",We,[n("div",Me,[o(C,{class:D(i.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!i.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=c=>l.dataMigration())},{default:a(()=>[e[36]||(e[36]=s(" Datenübernahme starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?_("",!0):(d(),f("form",Fe,[o(O,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[n("div",Ae,[n("div",Te,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=c=>l.factoryReset())},{default:a(()=>[o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[38]||(e[38]=s(" Zurücksetzen ")),o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:a(()=>[o(p,{subtype:"danger"},{default:a(()=>e[37]||(e[37]=[s(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})]))])):_("",!0)])}const Le=S(ne,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Re=Object.freeze(Object.defineProperty({__proto__:null,default:Le},Symbol.toStringTag,{value:"Module"}));export{A as B,Le as D,Re as a};
diff --git a/web/settings/assets/DataManagement-b9730b64.js b/web/settings/assets/DataManagement-b9730b64.js
new file mode 100644
index 0000000000..15e0537a5d
--- /dev/null
+++ b/web/settings/assets/DataManagement-b9730b64.js
@@ -0,0 +1 @@
+import{l as L,af as z,ag as V,ah as j,ai as H,aj as R,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,C as P}from"./index-f9fda857.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as S,u as m,k as r,l as f,A as w,N as l,y as i,z as y,D as o,x as n,a0 as N,a1 as q,J as W,B as _,q as D,K as F,a2 as I}from"./vendor-a21b3a62.js";const G={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},J=S(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),Z={name:"BackupCloudConfigFallback",mixins:[J]},K={class:"backup-cloud-fallback"},$={key:1};function Q(t,e,u,g,s,a){const b=m("openwb-base-alert"),p=m("openwb-base-textarea");return r(),f("div",K,[Object.keys(t.backupCloud.configuration).length==0?(r(),w(b,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+y(t.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),f("div",$,[o(b,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+y(t.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(p,{title:"Konfiguration",subtype:"json","model-value":t.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=v=>t.updateConfiguration(v,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),o(b,{subtype:"info"},{default:l(()=>[n("pre",null,y(JSON.stringify(t.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const X=S(Z,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),Y={name:"OpenwbBackupCloudProxy",props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),N({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-b3e9e685.js"),["assets/backup_cloud-b3e9e685.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-fd1d0158.js"),["assets/backup_cloud-fd1d0158.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-5feeb3e2.js"),["assets/backup_cloud-5feeb3e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-13d4bee8.js"),["assets/backup_cloud-13d4bee8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:X})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function ee(t,e,u,g,s,a){const b=m("openwb-base-heading");return r(),f(W,null,[o(b,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+y(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(a.myComponent),{"backup-cloud":u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=p=>a.updateConfiguration(p)),onSendCommand:e[1]||(e[1]=p=>a.sendCommand(p))},null,40,["backup-cloud"]))],64)}const te=S(Y,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(z,V,j,H,R);const ne={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:te},mixins:[P],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let s=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let s=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var b="Hochladen der Datei fehlgeschlagen!<br />"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),b+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),b+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(b,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},oe={class:"system"},ie={key:1},se={name:"backupForm"},ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue={key:0,name:"restoreForm"},de={class:"input-group"},re={class:"input-group-prepend"},pe={class:"input-group-text"},ce={class:"custom-file"},me={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},be={class:"input-group-append"},fe=["disabled"],ge={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:1,name:"cloudBackupForm"},ye={key:0},ve={name:"dataMigrationForm"},_e={class:"input-group"},we={class:"input-group-prepend"},Ce={class:"input-group-text"},Be={class:"custom-file"},De={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Se={class:"input-group-append"},Oe=["disabled"],We={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},Fe={key:1,name:"resetForm"},Ae={class:"row justify-content-center"},Te={class:"col-md-4 d-flex py-1 justify-content-center"};function xe(t,e,u,g,s,a){const b=m("openwb-base-button-group-input"),p=m("openwb-base-alert"),v=m("openwb-base-heading"),k=m("font-awesome-icon"),C=m("openwb-base-click-button"),M=m("openwb-base-select-input"),A=m("openwb-base-button-input"),T=m("openwb-backup-cloud-proxy"),x=m("openwb-base-submit-buttons"),O=m("openwb-base-card");return r(),f("div",oe,[u.installAssistantActive?_("",!0):(r(),w(p,{key:0,subtype:"danger"},{default:l(()=>[e[17]||(e[17]=n("h2",null,"Achtung!",-1)),e[18]||(e[18]=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),o(b,{modelValue:s.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=c=>s.warningAcknowledged=c),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),s.warningAcknowledged||u.installAssistantActive?(r(),f("div",ie,[o(O,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var c,h;return[n("form",se,[o(v,null,{default:l(()=>e[19]||(e[19]=[i("Sicherung")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[20]||(e[20]=[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[21]||(e[21]=[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),n("div",ae,[n("div",le,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[e[22]||(e[22]=i(" Sicherung erstellen ")),o(k,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),s.showRestoreSection?(r(),f("form",ue,[e[27]||(e[27]=n("hr",null,null,-1)),o(v,null,{default:l(()=>e[23]||(e[23]=[i("Wiederherstellung")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[24]||(e[24]=[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),n("br",null,null,-1),i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),n("div",de,[n("div",re,[n("div",pe,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ce,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>a.updateSelectedRestoreFile(d))},null,32),n("label",me,y(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",be,[n("button",{class:D(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>a.uploadRestoreFile())},[e[25]||(e[25]=i(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,fe)])]),n("div",ge,[n("div",he,[o(C,{class:D(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>a.restoreBackup())},{default:l(()=>[e[26]||(e[26]=i(" Wiederherstellung starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),u.showBackupCloudSection?(r(),f("form",ke,[e[31]||(e[31]=n("hr",null,null,-1)),o(v,null,{default:l(()=>e[28]||(e[28]=[i(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[29]||(e[29]=[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),n("br",null,null,-1),i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),n("br",null,null,-1),i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),i(" . ")])),_:1}),o(M,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(c=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:c.type,"onUpdate:modelValue":e[5]||(e[5]=d=>a.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(h=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&h.type?(r(),f("div",ye,[o(b,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>e[30]||(e[30]=[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),o(A,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>a.sendSystemCommand("createCloudBackup",{}))}),o(T,{"backup-cloud":t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>a.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>a.sendSystemCommand(d.command,d.args))},null,8,["backup-cloud"])])):_("",!0),o(x,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?_("",!0):(r(),w(O,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",ve,[o(p,{subtype:"info"},{default:l(()=>e[32]||(e[32]=[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[33]||(e[33]=[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),n("br",null,null,-1),i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),n("br",null,null,-1),i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),n("div",_e,[n("div",we,[n("div",Ce,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Be,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=c=>a.updateSelectedDataMigrationFile(c))},null,32),n("label",De,y(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Se,[n("button",{class:D(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=c=>a.uploadDataMigrationFile())},[e[34]||(e[34]=i(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,Oe)])]),o(v,null,{default:l(()=>e[35]||(e[35]=[i(" Zuordnung der Komponenten ")])),_:1}),(r(!0),f(W,null,F(s.dataMigrationConfig,c=>(r(),f("div",{key:c.sectionName},[o(v,null,{default:l(()=>[i(y(c.sectionName),1)]),_:2},1024),(r(!0),f(W,null,F(c.sectionComponents,h=>(r(),w(M,{key:h.key,modelValue:s.dataMigrationMapping[h.key],"onUpdate:modelValue":d=>s.dataMigrationMapping[h.key]=d,title:h.label,options:a.getMigrationOptions(h.validTypes)},I({_:2},[h.help?{name:"help",fn:l(()=>[i(y(h.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),n("div",We,[n("div",Me,[o(C,{class:D(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=c=>a.dataMigration())},{default:l(()=>[e[36]||(e[36]=i(" Datenübernahme starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?_("",!0):(r(),f("form",Fe,[o(O,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ae,[n("div",Te,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=c=>a.factoryReset())},{default:l(()=>[o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[38]||(e[38]=i(" Zurücksetzen ")),o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(p,{subtype:"danger"},{default:l(()=>e[37]||(e[37]=[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})]))])):_("",!0)])}const Le=S(ne,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Re=Object.freeze(Object.defineProperty({__proto__:null,default:Le},Symbol.toStringTag,{value:"Module"}));export{J as B,Le as D,Re as a};
diff --git a/web/settings/assets/DebugConfig-0ce8b81e.js b/web/settings/assets/DebugConfig-d1261f2b.js
similarity index 98%
rename from web/settings/assets/DebugConfig-0ce8b81e.js
rename to web/settings/assets/DebugConfig-d1261f2b.js
index a8eac39574..15fda99b3c 100644
--- a/web/settings/assets/DebugConfig-0ce8b81e.js
+++ b/web/settings/assets/DebugConfig-d1261f2b.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-dc0e711f.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-41164876.js";import{_,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as b,J as F,K as N,y as f}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-f9fda857.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-41164876.js";import{_,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as b,J as F,K as N,y as f}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),m=s("openwb-base-avatar"),p=s("openwb-base-card");return d(),w(p,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(m,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=_($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",components:{OpenwbLogCard:I},mixins:[k],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),m=s("openwb-base-alert"),p=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),b("div",z,[v("form",V,[i(p,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>e[4]||(e[4]=[f(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')])),_:1},8,["model-value"]),i(m,{subtype:"warning"},{default:l(()=>e[5]||(e[5]=[f(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')])),_:1})]),_:1}),i(c,{"form-name":"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),b(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=_(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-a5add01a.js b/web/settings/assets/GeneralChargeConfig-a5add01a.js
deleted file mode 100644
index cb19563e98..0000000000
--- a/web/settings/assets/GeneralChargeConfig-a5add01a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as g,C as E}from"./index-dc0e711f.js";import{_ as T}from"./dynamic-import-helper-be004503.js";import{_ as b,u as o,k as l,l as s,D as n,N as a,y as r,z as v,x as d,a0 as V,A as k,a1 as P,J as L,B as W}from"./vendor-a21b3a62.js";const M={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},$=b(M,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),q={name:"ElectricityTariffConfigFallback",mixins:[$]},O={class:"backup-cloud-fallback"};function A(t,e,m,h,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-textarea");return l(),s("div",O,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+v(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=c=>t.updateConfiguration(c,"configuration"))},{help:a(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[d("pre",null,v(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const U=b(q,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),F={name:"OpenwbElectricityTariffProxy",mixins:[$],computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),V({loader:()=>T(Object.assign({"./awattar/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-9f4ce3a7.js"),["assets/electricity_tariff-9f4ce3a7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-b400ca32.js"),["assets/electricity_tariff-b400ca32.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-ac583f0a.js"),["assets/electricity_tariff-ac583f0a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-c1ffcfa7.js"),["assets/electricity_tariff-c1ffcfa7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>g(()=>import("./electricity_tariff-18981e99.js"),["assets/electricity_tariff-18981e99.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:U})}}};function D(t,e,m,h,y,p){const u=o("openwb-base-heading");return l(),s(L,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+v(t.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(P(p.myComponent),{"electricity-tariff":t.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=f=>t.updateConfiguration(f))},null,40,["electricity-tariff"]))],64)}const N=b(F,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),I={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:N},mixins:[E],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(m=>m.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},j={class:"generalChargeConfig"},R={name:"generalChargeConfigForm"},Z={key:0},G={key:1},J={key:1},K={key:2},x={key:0},H={key:1},Q={key:0};function X(t,e,m,h,y,p){const u=o("openwb-base-alert"),f=o("openwb-base-button-group-input"),c=o("openwb-base-range-input"),w=o("openwb-base-heading"),_=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),C=o("openwb-base-submit-buttons");return l(),s("div",j,[d("form",R,[n(B,{title:"Allgemein"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",Z,[n(u,{subtype:"info"},{default:a(()=>e[12]||(e[12]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",G,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>e[13]||(e[13]=[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),d("br",null,null,-1),r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(c,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>e[14]||(e[14]=[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):W("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=i=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>e[15]||(e[15]=[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),d("br",null,null,-1),r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(c,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=i=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>e[16]||(e[16]=[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),d("br",null,null,-1),r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[20]||(e[20]=d("hr",null,null,-1)),n(w,null,{help:a(()=>e[17]||(e[17]=[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),d("br",null,null,-1),r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:a(()=>[e[18]||(e[18]=r(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",J,[n(u,{subtype:"info"},{default:a(()=>e[19]||(e[19]=[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")])),_:1})])):(l(),s("div",K,[n(_,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=i=>t.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(_,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=i=>t.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(_,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=i=>t.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",x,[n(u,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",H,[n(w,null,{default:a(()=>e[22]||(e[22]=[r(" Variable Stromtarife ")])),_:1}),n(u,{subtype:"info"},{default:a(()=>e[23]||(e[23]=[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),d("br",null,null,-1),r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",Q,[n(S,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricity-tariff"])])):W("",!0)]))]),_:1}),n(C,{"form-name":"generalChargeConfigForm",onSave:e[9]||(e[9]=i=>t.$emit("save")),onReset:e[10]||(e[10]=i=>t.$emit("reset")),onDefaults:e[11]||(e[11]=i=>t.$emit("defaults"))})])])}const Y=b(I,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ie=Object.freeze(Object.defineProperty({__proto__:null,default:Y},Symbol.toStringTag,{value:"Module"}));export{$ as E,ie as G};
diff --git a/web/settings/assets/GeneralChargeConfig-f6ca097b.js b/web/settings/assets/GeneralChargeConfig-f6ca097b.js
new file mode 100644
index 0000000000..443b0208f0
--- /dev/null
+++ b/web/settings/assets/GeneralChargeConfig-f6ca097b.js
@@ -0,0 +1 @@
+import{_ as m,C}from"./index-f9fda857.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as b,u as o,k as l,l as s,D as n,N as a,y as r,z as v,x as d,a0 as T,A as k,a1 as V,J as P,B as W}from"./vendor-a21b3a62.js";const L={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},q=b(L,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),M={name:"ElectricityTariffConfigFallback",mixins:[q]},O={class:"backup-cloud-fallback"};function A(t,e,f,h,y,p){const u=o("openwb-base-alert"),g=o("openwb-base-textarea");return l(),s("div",O,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+v(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=c=>t.updateConfiguration(c,"configuration"))},{help:a(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[d("pre",null,v(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const U=b(M,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),F={name:"OpenwbElectricityTariffProxy",props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),T({loader:()=>E(Object.assign({"./awattar/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-63a1e9ec.js"),["assets/electricity_tariff-63a1e9ec.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-4bc01805.js"),["assets/electricity_tariff-4bc01805.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-7b04b620.js"),["assets/electricity_tariff-7b04b620.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-5111f15f.js"),["assets/electricity_tariff-5111f15f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-e23d6291.js"),["assets/electricity_tariff-e23d6291.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:U})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function D(t,e,f,h,y,p){const u=o("openwb-base-heading");return l(),s(P,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+v(f.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{"electricity-tariff":f.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=g=>p.updateConfiguration(g))},null,40,["electricity-tariff"]))],64)}const N=b(F,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),I={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:N},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(f=>f.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},j={class:"generalChargeConfig"},R={name:"generalChargeConfigForm"},Z={key:0},G={key:1},x={key:1},J={key:2},K={key:0},H={key:1},Q={key:0};function X(t,e,f,h,y,p){const u=o("openwb-base-alert"),g=o("openwb-base-button-group-input"),c=o("openwb-base-range-input"),w=o("openwb-base-heading"),_=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),$=o("openwb-base-submit-buttons");return l(),s("div",j,[d("form",R,[n(B,{title:"Allgemein"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",Z,[n(u,{subtype:"info"},{default:a(()=>e[12]||(e[12]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",G,[n(g,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>e[13]||(e[13]=[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),d("br",null,null,-1),r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(c,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>e[14]||(e[14]=[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):W("",!0),n(g,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=i=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>e[15]||(e[15]=[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),d("br",null,null,-1),r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(c,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=i=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>e[16]||(e[16]=[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),d("br",null,null,-1),r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[20]||(e[20]=d("hr",null,null,-1)),n(w,null,{help:a(()=>e[17]||(e[17]=[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),d("br",null,null,-1),r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:a(()=>[e[18]||(e[18]=r(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",x,[n(u,{subtype:"info"},{default:a(()=>e[19]||(e[19]=[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")])),_:1})])):(l(),s("div",J,[n(_,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=i=>t.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(_,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=i=>t.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(_,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=i=>t.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",K,[n(u,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",H,[n(w,null,{default:a(()=>e[22]||(e[22]=[r(" Variable Stromtarife ")])),_:1}),n(u,{subtype:"info"},{default:a(()=>e[23]||(e[23]=[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),d("br",null,null,-1),r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",Q,[n(S,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricity-tariff"])])):W("",!0)]))]),_:1}),n($,{"form-name":"generalChargeConfigForm",onSave:e[9]||(e[9]=i=>t.$emit("save")),onReset:e[10]||(e[10]=i=>t.$emit("reset")),onDefaults:e[11]||(e[11]=i=>t.$emit("defaults"))})])])}const Y=b(I,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ie=Object.freeze(Object.defineProperty({__proto__:null,default:Y},Symbol.toStringTag,{value:"Module"}));export{q as E,ie as G};
diff --git a/web/settings/assets/GeneralConfig-1c49e709.js b/web/settings/assets/GeneralConfig-1c49e709.js
new file mode 100644
index 0000000000..dc044fcb49
--- /dev/null
+++ b/web/settings/assets/GeneralConfig-1c49e709.js
@@ -0,0 +1 @@
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-41164876.js";import{_ as U,C as re}from"./index-f9fda857.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as h,u as b,k as l,l as d,A as v,N as o,y as a,z as c,D as n,x as s,a0 as M,a1 as I,J as G,B as _}from"./vendor-a21b3a62.js";const ie={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},le=h(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),se={name:"WebThemeFallback",mixins:[le]},ue={class:"web-theme-fallback"},de={key:1};function pe(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-textarea");return l(),d("div",ue,[Object.keys(t.webTheme.configuration).length==0?(l(),v(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+c(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",de,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+c(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,c(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const ge=h(se,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const me={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:F},props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),M({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:ge})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function be(t,e,p,B,y,m){const g=b("font-awesome-icon"),r=b("openwb-base-alert"),w=b("openwb-base-heading");return l(),d(G,null,[p.webTheme.official?(l(),v(r,{key:0,subtype:"success"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+c(p.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),v(r,{key:1,subtype:"info"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(w,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+c(p.webTheme.name)+'" ',1)]),_:1}),(l(),v(I(m.myComponent),{"web-theme":p.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>m.updateConfiguration(W))},null,40,["web-theme"]))],64)}const fe=h(me,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},_e=h(ce,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),ve={name:"RippleControlReceiverConfigFallback",mixins:[_e]},we={class:"ripple-control-receiver-fallback"},he={key:1};function We(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-textarea");return l(),d("div",we,[Object.keys(t.rippleControlReceiver.configuration).length==0?(l(),v(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+c(t.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",he,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+c(t.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":t.rippleControlReceiver.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,c(JSON.stringify(t.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const Be=h(ve,[["render",We],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ye={name:"OpenwbRippleControlReceiverProxy",props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),M({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-8b00be72.js"),["assets/ripple_control_receiver-8b00be72.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-432648b7.js"),["assets/ripple_control_receiver-432648b7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:Be})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Se(t,e,p,B,y,m){const g=b("openwb-base-heading");return l(),d(G,null,[n(g,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+c(p.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),v(I(m.myComponent),{"ripple-control-receiver":p.rippleControlReceiver,"onUpdate:configuration":e[0]||(e[0]=r=>m.updateConfiguration(r)),onSendCommand:e[1]||(e[1]=r=>m.sendCommand(r))},null,40,["ripple-control-receiver"]))],64)}const ke=h(ye,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const Ve={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:fe,OpenwbRippleControlReceiverProxy:ke,FontAwesomeIcon:F},mixins:[re],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(p=>p.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},getRippleControlReceiverDefaultConfiguration(t){const e=this.rippleControlReceiverList.find(p=>p.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedRippleControlReceiverModule(t){this.updateState("openWB/general/ripple_control_receiver/module",t,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(t))}}},Ce={class:"generalConfig"},Re={name:"generalConfigForm"},$e={key:0},Te={key:1},qe={key:1},ze={class:"border border-info w-100 p-1"},De={class:"border border-info w-100 p-1"},Oe={key:0},Ee={key:1},Ne={key:0},Ae={key:2},xe={key:0},Pe={key:0},Le={key:1},Ue={key:0},Je={key:0},Fe={key:1};function je(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-button-group-input"),w=b("openwb-base-copy-to-clipboard"),W=b("openwb-base-card"),S=b("openwb-base-heading"),k=b("openwb-base-select-input"),K=b("openwb-ripple-control-receiver-proxy"),H=b("openwb-web-theme-proxy"),f=b("font-awesome-icon"),Z=b("openwb-base-submit-buttons");return l(),d("div",Ce,[s("form",Re,[n(W,{title:"Steuerungsmodus"},{default:o(()=>[n(g,{subtype:"info"},{default:o(()=>e[29]||(e[29]=[s("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),s("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),s("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),s("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=u=>t.updateState("openWB/general/extern",u))},null,8,["model-value"]),p.installAssistantActive?_("",!0):(l(),d("div",$e,[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),v(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=u=>t.updateState("openWB/general/modbus_control",u))},{help:o(()=>e[30]||(e[30]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),s("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),d("div",Te,[n(g,{subtype:"info"},{default:o(()=>e[31]||(e[31]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):_("",!0)])),p.installAssistantActive?_("",!0):(l(),d("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=u=>t.updateState("openWB/general/http_api",u))},{help:o(()=>[e[38]||(e[38]=s("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1)),e[39]||(e[39]=s("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1)),s("ul",null,[s("li",null,[e[32]||(e[32]=a(" GET-Request:")),e[33]||(e[33]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+c(m.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),s("li",null,[e[34]||(e[34]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[35]||(e[35]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+c(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[40]||(e[40]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",ze,c(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),e[41]||(e[41]=s("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1)),e[42]||(e[42]=s("p",null,"Beispiel 2: integriertes Display abschalten",-1)),s("ul",null,[s("li",null,[e[36]||(e[36]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[37]||(e[37]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+c(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[43]||(e[43]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",De,c(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(W,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Oe,[n(g,{subtype:"info"},{default:o(()=>e[44]||(e[44]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):_("",!0),p.installAssistantActive?_("",!0):(l(),d("div",Ee,[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ne,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=u=>t.updateState("openWB/general/control_interval",u))},{help:o(()=>e[45]||(e[45]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),s("br",null,null,-1),s("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=u=>t.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>e[46]||(e[46]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),s("br",null,null,-1),s("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):_("",!0),e[47]||(e[47]=s("hr",null,null,-1))])),t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ae,[n(S,{class:"mt-0"},{default:o(()=>e[48]||(e[48]=[a(" Steuerbare Verbrauchseinrichtung ")])),_:1}),n(g,{sub_type:"info"},{default:o(()=>e[49]||(e[49]=[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')])),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:m.rippleControlReceiverList,"model-value":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":e[5]||(e[5]=u=>m.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),d("div",xe,[n(K,{"ripple-control-receiver":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":e[6]||(e[6]=u=>m.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["ripple-control-receiver"])])):_("",!0)])):_("",!0)]),_:1}),p.installAssistantActive?_("",!0):(l(),v(W,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Pe,[n(g,{subtype:"info"},{default:o(()=>e[50]||(e[50]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Le,[n(S,{class:"mt-0"},{default:o(()=>e[51]||(e[51]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),d("div",Ue,[n(k,{class:"mb-2",title:"Theme",groups:m.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[7]||(e[7]=u=>m.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(l(),v(H,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[8]||(e[8]=u=>m.updateConfiguration("openWB/general/web_theme",u))},null,8,["web-theme"])):_("",!0)])):_("",!0)]))]),_:1})),p.installAssistantActive?_("",!0):(l(),v(W,{key:1,title:"Lade-Log"},{default:o(()=>{var u,V,C,R,$,T,q,z,D,O,E,N,A,x,P,L;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Je,[n(g,{subtype:"info"},{default:o(()=>e[52]||(e[52]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Fe,[n(r,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[9]||(e[9]=i=>t.updateState("openWB/general/range_unit",i))},null,8,["model-value"]),n(S,null,{default:o(()=>e[53]||(e[53]=[a(" Auswahl der Datenfelder ")])),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":e[10]||(e[10]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","calendar"]}),e[54]||(e[54]=a(" Beginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":e[11]||(e[11]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","calendar"]}),e[55]||(e[55]=a(" Ende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":e[12]||(e[12]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","clock"]}),e[56]||(e[56]=a(" Dauer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":e[13]||(e[13]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","coins"]}),e[57]||(e[57]=a(" Kosten "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.data_power_source,"onUpdate:modelValue":e[14]||(e[14]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","pie-chart"]}),e[58]||(e[58]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.vehicle_name,"onUpdate:modelValue":e[15]||(e[15]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[59]||(e[59]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":e[16]||(e[16]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[60]||(e[60]=a(" Lademodus "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_prio,"onUpdate:modelValue":e[17]||(e[17]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[61]||(e[61]=a(" Priorität "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_rfid,"onUpdate:modelValue":e[18]||(e[18]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[62]||(e[62]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":e[19]||(e[19]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[63]||(e[63]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":e[20]||(e[20]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[64]||(e[64]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":e[21]||(e[21]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[65]||(e[65]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":e[22]||(e[22]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[66]||(e[66]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.data_imported_since_mode_switch,"onUpdate:modelValue":e[23]||(e[23]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[67]||(e[67]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_start,"onUpdate:modelValue":e[24]||(e[24]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[68]||(e[68]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_end,"onUpdate:modelValue":e[25]||(e[25]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[69]||(e[69]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{"form-name":"generalConfigForm",onSave:e[26]||(e[26]=u=>t.$emit("save")),onReset:e[27]||(e[27]=u=>t.$emit("reset")),onDefaults:e[28]||(e[28]=u=>t.$emit("defaults"))})])])}const Me=h(Ve,[["render",je],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Me},Symbol.toStringTag,{value:"Module"}));export{Me as G,_e as R,Ze as a};
diff --git a/web/settings/assets/GeneralConfig-2f07ba45.js b/web/settings/assets/GeneralConfig-2f07ba45.js
deleted file mode 100644
index 1639a56284..0000000000
--- a/web/settings/assets/GeneralConfig-2f07ba45.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as J,X as Y,Y as ee,F,R as te,K as ne,z as oe,a4 as ae,a5 as re,a6 as le}from"./vendor-fortawesome-41164876.js";import{_ as x,C as ie}from"./index-dc0e711f.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as h,u as g,k as i,l as d,A as v,N as o,y as a,z as f,D as n,x as s,a0 as j,a1 as I,J as G,B as _}from"./vendor-a21b3a62.js";const se={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},K=h(se,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),ue={name:"WebThemeFallback",mixins:[K]},de={class:"web-theme-fallback"},pe={key:1};function ge(t,e,c,B,y,b){const p=g("openwb-base-alert"),l=g("openwb-base-textarea");return i(),d("div",de,[Object.keys(t.webTheme.configuration).length==0?(i(),v(p,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+f(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),d("div",pe,[n(p,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+f(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(l,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(p,{subtype:"info"},{default:o(()=>[s("pre",null,f(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const me=h(ue,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(Y,ee);const be={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:F},mixins:[K],computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),j({loader:()=>M(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:me})}}};function fe(t,e,c,B,y,b){const p=g("font-awesome-icon"),l=g("openwb-base-alert"),w=g("openwb-base-heading");return i(),d(G,null,[t.webTheme.official?(i(),v(l,{key:0,subtype:"success"},{default:o(()=>[n(p,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+f(t.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(i(),v(l,{key:1,subtype:"info"},{default:o(()=>[n(p,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(w,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+f(t.webTheme.name)+'" ',1)]),_:1}),(i(),v(I(b.myComponent),{"web-theme":t.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>t.updateConfiguration(W))},null,40,["web-theme"]))],64)}const ce=h(be,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),_e={props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},H=h(_e,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),ve={name:"RippleControlReceiverConfigFallback",mixins:[H]},we={class:"ripple-control-receiver-fallback"},he={key:1};function We(t,e,c,B,y,b){const p=g("openwb-base-alert"),l=g("openwb-base-textarea");return i(),d("div",we,[Object.keys(t.rippleControlReceiver.configuration).length==0?(i(),v(p,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+f(t.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(i(),d("div",he,[n(p,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+f(t.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(l,{title:"Konfiguration",subtype:"json","model-value":t.rippleControlReceiver.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(p,{subtype:"info"},{default:o(()=>[s("pre",null,f(JSON.stringify(t.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const Be=h(ve,[["render",We],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ye={name:"OpenwbRippleControlReceiverProxy",mixins:[H],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),j({loader:()=>M(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>x(()=>import("./ripple_control_receiver-fed88f10.js"),["assets/ripple_control_receiver-fed88f10.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>x(()=>import("./ripple_control_receiver-9035a86a.js"),["assets/ripple_control_receiver-9035a86a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:Be})}}};function Se(t,e,c,B,y,b){const p=g("openwb-base-heading");return i(),d(G,null,[n(p,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+f(t.rippleControlReceiver.name)+'" ',1)]),_:1}),(i(),v(I(b.myComponent),{"ripple-control-receiver":t.rippleControlReceiver,"onUpdate:configuration":e[0]||(e[0]=l=>t.updateConfiguration(l))},null,40,["ripple-control-receiver"]))],64)}const ke=h(ye,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(te,ne,oe,ae,re,le);const Ve={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:ce,OpenwbRippleControlReceiverProxy:ke,FontAwesomeIcon:F},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(c=>c.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},getRippleControlReceiverDefaultConfiguration(t){const e=this.rippleControlReceiverList.find(c=>c.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedRippleControlReceiverModule(t){this.updateState("openWB/general/ripple_control_receiver/module",t,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(t))}}},Ce={class:"generalConfig"},$e={name:"generalConfigForm"},Re={key:0},Te={key:1},qe={key:1},ze={class:"border border-info w-100 p-1"},De={class:"border border-info w-100 p-1"},Oe={key:0},Ee={key:1},Ne={key:0},Ae={key:2},Pe={key:0},Le={key:0},Ue={key:1},xe={key:0},Je={key:0},Fe={key:1};function Me(t,e,c,B,y,b){const p=g("openwb-base-alert"),l=g("openwb-base-button-group-input"),w=g("openwb-base-copy-to-clipboard"),W=g("openwb-base-card"),S=g("openwb-base-heading"),k=g("openwb-base-select-input"),Z=g("openwb-ripple-control-receiver-proxy"),X=g("openwb-web-theme-proxy"),m=g("font-awesome-icon"),Q=g("openwb-base-submit-buttons");return i(),d("div",Ce,[s("form",$e,[n(W,{title:"Steuerungsmodus"},{default:o(()=>[n(p,{subtype:"info"},{default:o(()=>e[29]||(e[29]=[s("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),s("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),s("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),s("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(l,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=u=>t.updateState("openWB/general/extern",u))},null,8,["model-value"]),c.installAssistantActive?_("",!0):(i(),d("div",Re,[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),v(l,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=u=>t.updateState("openWB/general/modbus_control",u))},{help:o(()=>e[30]||(e[30]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),s("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(i(),d("div",Te,[n(p,{subtype:"info"},{default:o(()=>e[31]||(e[31]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):_("",!0)])),c.installAssistantActive?_("",!0):(i(),d("div",qe,[n(l,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=u=>t.updateState("openWB/general/http_api",u))},{help:o(()=>[e[38]||(e[38]=s("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1)),e[39]||(e[39]=s("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1)),s("ul",null,[s("li",null,[e[32]||(e[32]=a(" GET-Request:")),e[33]||(e[33]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+f(b.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),s("li",null,[e[34]||(e[34]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[35]||(e[35]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+f(b.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[40]||(e[40]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",ze,f(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),e[41]||(e[41]=s("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1)),e[42]||(e[42]=s("p",null,"Beispiel 2: integriertes Display abschalten",-1)),s("ul",null,[s("li",null,[e[36]||(e[36]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[37]||(e[37]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+f(b.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[43]||(e[43]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",De,f(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(W,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),d("div",Oe,[n(p,{subtype:"info"},{default:o(()=>e[44]||(e[44]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):_("",!0),c.installAssistantActive?_("",!0):(i(),d("div",Ee,[t.$store.state.mqtt["openWB/general/extern"]===!1?(i(),d("div",Ne,[n(l,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=u=>t.updateState("openWB/general/control_interval",u))},{help:o(()=>e[45]||(e[45]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),s("br",null,null,-1),s("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(l,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=u=>t.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>e[46]||(e[46]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),s("br",null,null,-1),s("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):_("",!0),e[47]||(e[47]=s("hr",null,null,-1))])),t.$store.state.mqtt["openWB/general/extern"]===!1?(i(),d("div",Ae,[n(S,{class:"mt-0"},{default:o(()=>e[48]||(e[48]=[a(" Steuerbare Verbrauchseinrichtung ")])),_:1}),n(p,{sub_type:"info"},{default:o(()=>e[49]||(e[49]=[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')])),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:b.rippleControlReceiverList,"model-value":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":e[5]||(e[5]=u=>b.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(i(),d("div",Pe,[n(Z,{"ripple-control-receiver":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":e[6]||(e[6]=u=>b.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["ripple-control-receiver"])])):_("",!0)])):_("",!0)]),_:1}),c.installAssistantActive?_("",!0):(i(),v(W,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),d("div",Le,[n(p,{subtype:"info"},{default:o(()=>e[50]||(e[50]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),d("div",Ue,[n(S,{class:"mt-0"},{default:o(()=>e[51]||(e[51]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(i(),d("div",xe,[n(k,{class:"mb-2",title:"Theme",groups:b.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[7]||(e[7]=u=>b.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(i(),v(X,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[8]||(e[8]=u=>b.updateConfiguration("openWB/general/web_theme",u))},null,8,["web-theme"])):_("",!0)])):_("",!0)]))]),_:1})),c.installAssistantActive?_("",!0):(i(),v(W,{key:1,title:"Lade-Log"},{default:o(()=>{var u,V,C,$,R,T,q,z,D,O,E,N,A,P,L,U;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),d("div",Je,[n(p,{subtype:"info"},{default:o(()=>e[52]||(e[52]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),d("div",Fe,[n(l,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[9]||(e[9]=r=>t.updateState("openWB/general/range_unit",r))},null,8,["model-value"]),n(S,null,{default:o(()=>e[53]||(e[53]=[a(" Auswahl der Datenfelder ")])),_:1}),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":e[10]||(e[10]=r=>t.updateState("openWB/general/charge_log_data_config",r,"time_begin"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","calendar"]}),e[54]||(e[54]=a(" Beginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":e[11]||(e[11]=r=>t.updateState("openWB/general/charge_log_data_config",r,"time_end"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","calendar"]}),e[55]||(e[55]=a(" Ende "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":e[12]||(e[12]=r=>t.updateState("openWB/general/charge_log_data_config",r,"time_time_charged"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","clock"]}),e[56]||(e[56]=a(" Dauer "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.data_costs,"onUpdate:modelValue":e[13]||(e[13]=r=>t.updateState("openWB/general/charge_log_data_config",r,"data_costs"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","coins"]}),e[57]||(e[57]=a(" Kosten "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_power_source,"onUpdate:modelValue":e[14]||(e[14]=r=>t.updateState("openWB/general/charge_log_data_config",r,"data_power_source"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","pie-chart"]}),e[58]||(e[58]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.vehicle_name,"onUpdate:modelValue":e[15]||(e[15]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_name"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[59]||(e[59]=a(" Name "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":e[16]||(e[16]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_chargemode"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[60]||(e[60]=a(" Lademodus "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_prio,"onUpdate:modelValue":e[17]||(e[17]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_prio"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[61]||(e[61]=a(" Priorität "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_rfid,"onUpdate:modelValue":e[18]||(e[18]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_rfid"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[62]||(e[62]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":e[19]||(e[19]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_soc_at_start"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[63]||(e[63]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":e[20]||(e[20]=r=>t.updateState("openWB/general/charge_log_data_config",r,"vehicle_soc_at_end"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","car"]}),e[64]||(e[64]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":e[21]||(e[21]=r=>t.updateState("openWB/general/charge_log_data_config",r,"chargepoint_name"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[65]||(e[65]=a(" Name "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":e[22]||(e[22]=r=>t.updateState("openWB/general/charge_log_data_config",r,"chargepoint_serial_number"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[66]||(e[66]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.data_imported_since_mode_switch,"onUpdate:modelValue":e[23]||(e[23]=r=>t.updateState("openWB/general/charge_log_data_config",r,"data_imported_since_mode_switch"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[67]||(e[67]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_start,"onUpdate:modelValue":e[24]||(e[24]=r=>t.updateState("openWB/general/charge_log_data_config",r,"chargepoint_imported_at_start"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[68]||(e[68]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(l,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(U=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:U.chargepoint_imported_at_end,"onUpdate:modelValue":e[25]||(e[25]=r=>t.updateState("openWB/general/charge_log_data_config",r,"chargepoint_imported_at_end"))},{default:o(()=>[n(m,{"fixed-width":"",icon:["fas","charging-station"]}),e[69]||(e[69]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(Q,{"form-name":"generalConfigForm",onSave:e[26]||(e[26]=u=>t.$emit("save")),onReset:e[27]||(e[27]=u=>t.$emit("reset")),onDefaults:e[28]||(e[28]=u=>t.$emit("defaults"))})])])}const je=h(Ve,[["render",Me],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));export{je as G,H as R,Ze as a};
diff --git a/web/settings/assets/HardwareInstallation-6cc98da9.js b/web/settings/assets/HardwareInstallation-6cc98da9.js
deleted file mode 100644
index f30ea93100..0000000000
--- a/web/settings/assets/HardwareInstallation-6cc98da9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as q,d as $,t as N,a7 as G,a0 as K,P as H,O as F,N as J,F as Z}from"./vendor-fortawesome-41164876.js";import{_ as e,C as Q}from"./index-dc0e711f.js";import{_ as M}from"./dynamic-import-helper-be004503.js";import{_ as I,u as p,k as d,l as g,A as E,N as _,y as u,z as b,D as r,x as l,a0 as j,a1 as X,B as P,J as R,K as h,q as k}from"./vendor-a21b3a62.js";const Y={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,o=void 0){this.$emit("update:configuration",{value:t,object:o})}}},C=I(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),ee={name:"DeviceFallback",mixins:[C]},oe={class:"device-fallback"},te={key:1};function _e(t,o,v,m,s,n){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return d(),g("div",oe,[Object.keys(t.device.configuration).length==0?(d(),E(c,{key:0,subtype:"info"},{default:_(()=>[u(' Der Gerät-Typ "'+b(t.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",te,[r(c,{subtype:"warning"},{default:_(()=>[u(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+b(t.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.device.configuration,"onUpdate:modelValue":o[0]||(o[0]=T=>t.updateConfiguration(T,"configuration"))},{help:_(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:_(()=>[l("pre",null,b(JSON.stringify(t.device.configuration,void 0,2)),1)]),_:1})]))])}const ie=I(ee,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),re={mixins:[C],props:{component:{type:Object,required:!0}}},ne=I(re,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),ue={name:"ComponentFallback",mixins:[ne]},de={class:"component-fallback"},se={key:1};function ve(t,o,v,m,s,n){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return d(),g("div",de,[Object.keys(t.component.configuration).length==0?(d(),E(c,{key:0,subtype:"info"},{default:_(()=>[u(' Der Komponenten-Typ "'+b(t.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",se,[r(c,{subtype:"warning"},{default:_(()=>[u(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+b(t.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.component.configuration,"onUpdate:modelValue":o[0]||(o[0]=T=>t.updateConfiguration(T,"configuration"))},{help:_(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:_(()=>[l("pre",null,b(JSON.stringify(t.component.configuration,void 0,2)),1)]),_:1})]))])}const ae=I(ue,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),me={name:"OpenwbConfigProxy",mixins:[C],computed:{myComponent(){var t;return console.debug(`loading component: ${this.device.type} / ${(t=this.component)==null?void 0:t.type}`),this.component!==void 0?j({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-00ea06ea.js"),["assets/device-00ea06ea.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-20a3cc0b.js"),["assets/device-20a3cc0b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-92f55c21.js"),["assets/device-92f55c21.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-13bf79c7.js"),["assets/device-13bf79c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-63bdcc3c.js"),["assets/device-63bdcc3c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-e43b2263.js"),["assets/counter-e43b2263.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-c3e49e5d.js"),["assets/device-c3e49e5d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-b62c3097.js"),["assets/bat-b62c3097.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-873539d4.js"),["assets/counter-873539d4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-dc9695a4.js"),["assets/device-dc9695a4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-d79a2e57.js"),["assets/inverter-d79a2e57.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-87bd2dba.js"),["assets/counter-87bd2dba.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-511acdb3.js"),["assets/device-511acdb3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-cf814a97.js"),["assets/inverter-cf814a97.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-97dc9354.js"),["assets/device-97dc9354.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-dae0c479.js"),["assets/counter-dae0c479.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-2dc6cc3c.js"),["assets/device-2dc6cc3c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-b4941105.js"),["assets/inverter-b4941105.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-03d10b16.js"),["assets/bat-03d10b16.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-667da2bf.js"),["assets/device-667da2bf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-713dd112.js"),["assets/bat-713dd112.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-8cf3e538.js"),["assets/counter-8cf3e538.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-930131aa.js"),["assets/device-930131aa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-90d5660d.js"),["assets/inverter-90d5660d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-dc1d9a2f.js"),["assets/bat-dc1d9a2f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-ce85abde.js"),["assets/counter_sm-ce85abde.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-c1c7f277.js"),["assets/device-c1c7f277.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-67eeedf8.js"),["assets/inverter_secondary-67eeedf8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-9577327c.js"),["assets/bat-9577327c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-4e131617.js"),["assets/counter-4e131617.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-f057baf4.js"),["assets/device-f057baf4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-832fb3b7.js"),["assets/inverter-832fb3b7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-e05764b6.js"),["assets/bat-e05764b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-339b78e6.js"),["assets/counter-339b78e6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-97810824.js"),["assets/device-97810824.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-f293b026.js"),["assets/inverter-f293b026.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-7dc3e16d.js"),["assets/bat-7dc3e16d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-11a808b3.js"),["assets/counter-11a808b3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-7552eed1.js"),["assets/device-7552eed1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-f30a6830.js"),["assets/inverter-f30a6830.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-3c3a8ee4.js"),["assets/counter-3c3a8ee4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-7aeda0a3.js"),["assets/device-7aeda0a3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-191071c7.js"),["assets/device-191071c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-2a37d4a1.js"),["assets/bat-2a37d4a1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-59a65215.js"),["assets/counter-59a65215.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-c3aaf957.js"),["assets/device-c3aaf957.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-00707516.js"),["assets/inverter-00707516.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-61e6692b.js"),["assets/counter-61e6692b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-8f5f7340.js"),["assets/device-8f5f7340.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-2d7b83ed.js"),["assets/counter-2d7b83ed.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-c1920155.js"),["assets/device-c1920155.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-eee7c6e5.js"),["assets/inverter-eee7c6e5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-b5ff9479.js"),["assets/device-b5ff9479.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-70744c17.js"),["assets/counter-70744c17.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-2bd6af83.js"),["assets/device-2bd6af83.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-b3df37ca.js"),["assets/counter-b3df37ca.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-c9df224a.js"),["assets/device-c9df224a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-8b304fd5.js"),["assets/device-8b304fd5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-6f930abf.js"),["assets/inverter-6f930abf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-41c2f368.js"),["assets/device-41c2f368.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-9eca6500.js"),["assets/bat-9eca6500.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-6f319353.js"),["assets/counter-6f319353.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-09e0b5dd.js"),["assets/device-09e0b5dd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-c319320b.js"),["assets/inverter-c319320b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-f5beaf39.js"),["assets/device-f5beaf39.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-45a2224e.js"),["assets/bat-45a2224e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-5763ad59.js"),["assets/bat-5763ad59.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-6dd39fae.js"),["assets/counter-6dd39fae.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-3c18bfc8.js"),["assets/inverter-3c18bfc8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-8c346425.js"),["assets/bat-8c346425.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-a72d5a10.js"),["assets/consumption_counter-a72d5a10.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-c524e146.js"),["assets/counter-c524e146.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-e1695c1b.js"),["assets/device-e1695c1b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-521e60bd.js"),["assets/inverter-521e60bd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-3661665d.js"),["assets/inverter-3661665d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-4760f2a8.js"),["assets/counter-4760f2a8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-d779a283.js"),["assets/device-d779a283.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-211768c3.js"),["assets/counter-211768c3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-cbb1f36f.js"),["assets/device-cbb1f36f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-3a770b71.js"),["assets/inverter-3a770b71.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-fa6313a5.js"),["assets/device-fa6313a5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-fb6dbf7a.js"),["assets/device-fb6dbf7a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-95627a98.js"),["assets/device-95627a98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-4e0e153d.js"),["assets/counter-4e0e153d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-944bfe1b.js"),["assets/device-944bfe1b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-a5ad3257.js"),["assets/device-a5ad3257.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-c37bf0a2.js"),["assets/device-c37bf0a2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-7c88776b.js"),["assets/bat-7c88776b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-9028760b.js"),["assets/counter-9028760b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-5aef24bb.js"),["assets/device-5aef24bb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-0fe312b3.js"),["assets/inverter-0fe312b3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-62b27636.js"),["assets/counter-62b27636.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-3f3aa74b.js"),["assets/inverter-3f3aa74b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-fefe88d3.js"),["assets/bat-fefe88d3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-2291c4ec.js"),["assets/bat_smart_energy-2291c4ec.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-9f134879.js"),["assets/counter-9f134879.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-8a6c3a9f.js"),["assets/device-8a6c3a9f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-7c07833e.js"),["assets/inverter-7c07833e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-c6e7f4e5.js"),["assets/bat-c6e7f4e5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-f2ca9f52.js"),["assets/device-f2ca9f52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-f2e0c7de.js"),["assets/device-f2e0c7de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-e2ea1207.js"),["assets/counter-e2ea1207.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-ba7411f1.js"),["assets/device-ba7411f1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-a77daa25.js"),["assets/inverter-a77daa25.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-dcaa50ab.js"),["assets/device-dcaa50ab.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f01c44f.js"),["assets/device-4f01c44f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-5e68cf56.js"),["assets/counter-5e68cf56.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-57a08fa3.js"),["assets/device-57a08fa3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-967835b8.js"),["assets/device-967835b8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-d090560a.js"),["assets/inverter-d090560a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-7d21f4f3.js"),["assets/device-7d21f4f3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-8770c372.js"),["assets/device-8770c372.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-9807eb70.js"),["assets/bat-9807eb70.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-2af1b45c.js"),["assets/counter-2af1b45c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-e6c608f5.js"),["assets/device-e6c608f5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-319dd94a.js"),["assets/external_inverter-319dd94a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-0372b463.js"),["assets/inverter-0372b463.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-98a7f166.js"),["assets/bat-98a7f166.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-73279a9d.js"),["assets/device-73279a9d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-22aad90d.js"),["assets/inverter-22aad90d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-a55b4f4a.js"),["assets/device-a55b4f4a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-8dd42ecd.js"),["assets/bat-8dd42ecd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-9fd0b8be.js"),["assets/counter-9fd0b8be.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-84e9833f.js"),["assets/device-84e9833f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-ab8a80e4.js"),["assets/inverter-ab8a80e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-6a117469.js"),["assets/counter-6a117469.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-264b9607.js"),["assets/device-264b9607.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-af534ff4.js"),["assets/bat-af534ff4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-c0ddbba1.js"),["assets/device-c0ddbba1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-d1ef1a1b.js"),["assets/inverter-d1ef1a1b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-b8ca89e1.js"),["assets/counter-b8ca89e1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-9eedb23a.js"),["assets/device-9eedb23a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-7c975c06.js"),["assets/device-7c975c06.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-1a057dc5.js"),["assets/device-1a057dc5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-37e09ebf.js"),["assets/counter-37e09ebf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-51a9d57c.js"),["assets/device-51a9d57c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-a4ac3a30.js"),["assets/device-a4ac3a30.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-c3b737a8.js"),["assets/bat-c3b737a8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-e2aa39de.js"),["assets/counter-e2aa39de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-a945746f.js"),["assets/device-a945746f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-efcd16da.js"),["assets/inverter-efcd16da.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-ab7dda04.js"),["assets/counter-ab7dda04.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-19334006.js"),["assets/device-19334006.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-668ceedf.js"),["assets/inverter-668ceedf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-17ee5402.js"),["assets/device-17ee5402.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-62aebfd4.js"),["assets/inverter-62aebfd4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ae}):j({loader:()=>M(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-00ea06ea.js"),["assets/device-00ea06ea.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-20a3cc0b.js"),["assets/device-20a3cc0b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-92f55c21.js"),["assets/device-92f55c21.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-13bf79c7.js"),["assets/device-13bf79c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-63bdcc3c.js"),["assets/device-63bdcc3c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-c3e49e5d.js"),["assets/device-c3e49e5d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-dc9695a4.js"),["assets/device-dc9695a4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-511acdb3.js"),["assets/device-511acdb3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-97dc9354.js"),["assets/device-97dc9354.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-2dc6cc3c.js"),["assets/device-2dc6cc3c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-667da2bf.js"),["assets/device-667da2bf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-930131aa.js"),["assets/device-930131aa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-c1c7f277.js"),["assets/device-c1c7f277.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-f057baf4.js"),["assets/device-f057baf4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-97810824.js"),["assets/device-97810824.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-7552eed1.js"),["assets/device-7552eed1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-7aeda0a3.js"),["assets/device-7aeda0a3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-191071c7.js"),["assets/device-191071c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-c3aaf957.js"),["assets/device-c3aaf957.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-8f5f7340.js"),["assets/device-8f5f7340.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-c1920155.js"),["assets/device-c1920155.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-b5ff9479.js"),["assets/device-b5ff9479.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-2bd6af83.js"),["assets/device-2bd6af83.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-c9df224a.js"),["assets/device-c9df224a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-8b304fd5.js"),["assets/device-8b304fd5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-41c2f368.js"),["assets/device-41c2f368.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-09e0b5dd.js"),["assets/device-09e0b5dd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-f5beaf39.js"),["assets/device-f5beaf39.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-e1695c1b.js"),["assets/device-e1695c1b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-d779a283.js"),["assets/device-d779a283.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-cbb1f36f.js"),["assets/device-cbb1f36f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-fa6313a5.js"),["assets/device-fa6313a5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-fb6dbf7a.js"),["assets/device-fb6dbf7a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-95627a98.js"),["assets/device-95627a98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-944bfe1b.js"),["assets/device-944bfe1b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-a5ad3257.js"),["assets/device-a5ad3257.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-c37bf0a2.js"),["assets/device-c37bf0a2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-5aef24bb.js"),["assets/device-5aef24bb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-8a6c3a9f.js"),["assets/device-8a6c3a9f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-f2ca9f52.js"),["assets/device-f2ca9f52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-f2e0c7de.js"),["assets/device-f2e0c7de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-ba7411f1.js"),["assets/device-ba7411f1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-dcaa50ab.js"),["assets/device-dcaa50ab.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4f01c44f.js"),["assets/device-4f01c44f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-57a08fa3.js"),["assets/device-57a08fa3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-967835b8.js"),["assets/device-967835b8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-7d21f4f3.js"),["assets/device-7d21f4f3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-8770c372.js"),["assets/device-8770c372.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-e6c608f5.js"),["assets/device-e6c608f5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-73279a9d.js"),["assets/device-73279a9d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-a55b4f4a.js"),["assets/device-a55b4f4a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-84e9833f.js"),["assets/device-84e9833f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-264b9607.js"),["assets/device-264b9607.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-c0ddbba1.js"),["assets/device-c0ddbba1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-9eedb23a.js"),["assets/device-9eedb23a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-7c975c06.js"),["assets/device-7c975c06.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-1a057dc5.js"),["assets/device-1a057dc5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-51a9d57c.js"),["assets/device-51a9d57c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-a4ac3a30.js"),["assets/device-a4ac3a30.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-a945746f.js"),["assets/device-a945746f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-19334006.js"),["assets/device-19334006.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-17ee5402.js"),["assets/device-17ee5402.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:ie})}}};function pe(t,o,v,m,s,n){return d(),E(X(n.myComponent),{device:t.device,component:t.component,"onUpdate:configuration":o[0]||(o[0]=c=>t.updateConfiguration(c))},null,40,["device","component"])}const le=I(me,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);q.add($,N,G,K,H,F,J);const ce={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:Z,OpenwbConfigProxy:le},mixins:[Q],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([t,o])=>({label:o.group_name,options:Object.entries(o.vendors).map(([v,m])=>({value:[t,v],text:m.vendor_name})).sort((v,m)=>v.text.localeCompare(m.text))})).sort((t,o)=>-t.label.localeCompare(o.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[t,o]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][t].vendors[o].devices).map(([v,m])=>({value:[o,v],text:m.device_name})).sort((v,m)=>v.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(t){return t.match(/^(.+_)?counter(_.+)?$/)?"danger":t.match(/^(.+_)?inverter(_.+)?$/)?"success":t.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(t){return t.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:t.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:t.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(t){return this.getWildcardTopics("openWB/system/device/"+t+"/component/+/config")},deviceHasConfiguredComponents(t){return Object.keys(this.getMyInstalledComponents(t)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(t,o,v){v.stopPropagation(),this.modalDevice=t,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(t){this.showDeviceRemoveModal=!1,t=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(t,o,v,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:t,deviceType:v,deviceVendor:o,type:m}})},removeComponentModal(t,o,v,m,s){s.stopPropagation(),this.modalComponent={deviceId:t,id:o,type:v},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(t){this.showComponentRemoveModal=!1,t=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(t,o){if(t===void 0||o===void 0)return[];console.debug("finding components for",t,o);let v=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[t]!==void 0?(m.vendors[t].devices[o]!==void 0&&(v=Object.entries(m.vendors[t].devices[o].components).map(([n,c])=>({value:n,text:c.component_name}))),!1):!0),v},updateConfiguration(t,o){console.debug("updateConfiguration",t,o),this.updateState(t,o.value,o.object)}}},Ee={class:"hardwareInstallation"},ge={name:"hardwareInstallationForm"},fe={key:0},be={key:1},Ve={key:1},Te={class:"col-1"},Oe={key:0},Ie={class:"col-1"};function Ae(t,o,v,m,s,n){const c=p("openwb-base-modal-dialog"),A=p("router-link"),T=p("openwb-base-alert"),O=p("font-awesome-icon"),L=p("openwb-base-avatar"),D=p("openwb-base-text-input"),x=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),z=p("openwb-base-click-button"),y=p("openwb-base-select-input"),S=p("openwb-base-submit-buttons");return d(),g(R,null,[r(c,{show:s.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeDevice},{default:_(()=>[u(' Wollen Sie das Gerät "'+b(s.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(c,{show:s.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:n.removeComponent},{default:_(()=>[u(' Wollen Sie die Komponente "'+b(s.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",Ee,[l("form",ge,[v.installAssistantActive?P("",!0):(d(),E(T,{key:0,subtype:"info"},{default:_(()=>[o[6]||(o[6]=u(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),r(A,{to:"/LoadManagementConfiguration"},{default:_(()=>o[5]||(o[5]=[u(" Lastmanagement ")])),_:1}),o[7]||(o[7]=u(" zu prüfen! "))]),_:1})),r(w,{title:"Geräte und Komponenten"},{default:_(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",fe,[r(T,{subtype:"info"},{default:_(()=>o[8]||(o[8]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",be,[(d(!0),g(R,null,h(n.installedDevices,(i,B)=>(d(),E(w,{key:i.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:_(()=>[r(O,{"fixed-width":"",icon:["fas","network-wired"]}),u(" "+b(i.name),1)]),actions:_(a=>[a.collapsed?(d(),g("div",Ve,[(d(!0),g(R,null,h(n.getMyInstalledComponents(i.id),f=>(d(),E(L,{key:f.id,class:k("ml-1 bg-"+n.getComponentTypeClass(f.type))},{default:_(()=>[r(O,{"fixed-width":"",icon:n.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(d(),E(L,{key:0,class:"bg-danger clickable",onClick:f=>n.removeDeviceModal(i.id,i.name,f)},{default:_(()=>[r(O,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:_(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":a=>t.updateState(B,a,"name")},null,8,["model-value","onUpdate:modelValue"]),o[16]||(o[16]=l("hr",null,null,-1)),r(x,{device:i,"onUpdate:configuration":a=>n.updateConfiguration(B,a)},null,8,["device","onUpdate:configuration"]),o[17]||(o[17]=l("hr",null,null,-1)),r(W,null,{default:_(()=>[...o[9]||(o[9]=[u("Komponenten")])]),_:1}),n.deviceHasConfiguredComponents(i.id)?P("",!0):(d(),E(T,{key:0,subtype:"warning"},{default:_(()=>[...o[10]||(o[10]=[u(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(d(!0),g(R,null,h(n.getMyInstalledComponents(i.id),(a,f)=>(d(),E(w,{key:a.id,collapsible:!0,collapsed:!0,subtype:n.getComponentTypeClass(a.type)},{header:_(()=>[r(O,{"fixed-width":"",icon:n.getComponentTypeIcon(a.type)},null,8,["icon"]),u(" "+b(a.name),1)]),actions:_(V=>[V.collapsed?P("",!0):(d(),E(L,{key:0,class:"bg-danger clickable",onClick:U=>n.removeComponentModal(i.id,a.id,a.type,a.name,U)},{default:_(()=>[r(O,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:_(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":a.name,"onUpdate:modelValue":V=>t.updateState(f,V,"name")},null,8,["model-value","onUpdate:modelValue"]),r(D,{title:"Hersteller",subtype:"text","model-value":a.info.manufacturer,"onUpdate:modelValue":V=>t.updateState(f,V,"info.manufacturer")},{help:_(()=>[...o[11]||(o[11]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),r(D,{title:"Modell",subtype:"text","model-value":a.info.model,"onUpdate:modelValue":V=>t.updateState(f,V,"info.model")},{help:_(()=>[...o[12]||(o[12]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o[13]||(o[13]=l("hr",null,null,-1)),r(x,{device:i,component:a,"onUpdate:configuration":V=>n.updateConfiguration(f,V)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),o[18]||(o[18]=l("hr",null,null,-1)),n.getComponentList(i.vendor,i.type).length?(d(),E(y,{key:1,class:"mb-2",title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:n.getComponentList(i.vendor,i.type),"model-value":s.componentToAdd[i.id],"onUpdate:modelValue":a=>s.componentToAdd[i.id]=a},{append:_(()=>[l("span",Te,[r(z,{class:k(s.componentToAdd[i.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.componentToAdd[i.id]===void 0,onButtonClicked:a=>n.addComponent(i.id,i.vendor,i.type,s.componentToAdd[i.id])},{default:_(()=>[r(O,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:_(()=>[...o[14]||(o[14]=[u(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(d(),E(T,{key:2,subtype:"info"},{default:_(()=>[...o[15]||(o[15]=[u(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(n.installedDevices).length>0?(d(),g("hr",Oe)):P("",!0),r(y,{modelValue:s.selectedVendor,"onUpdate:modelValue":o[0]||(o[0]=i=>s.selectedVendor=i),title:"Hersteller","not-selected":"Bitte auswählen",groups:n.vendorList},null,8,["modelValue","groups"]),r(y,{modelValue:s.deviceToAdd,"onUpdate:modelValue":o[1]||(o[1]=i=>s.deviceToAdd=i),title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:s.selectedVendor===void 0,options:n.deviceList},{append:_(()=>[l("span",Ie,[r(z,{class:k(s.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:s.deviceToAdd===void 0,onButtonClicked:n.addDevice},{default:_(()=>[r(O,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:_(()=>o[19]||(o[19]=[l("p",null,[u(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),u(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),l("p",null,[u(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),u(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options"])]))]),_:1}),r(S,{"form-name":"hardwareInstallationForm",onSave:o[2]||(o[2]=i=>t.$emit("save")),onReset:o[3]||(o[3]=i=>t.$emit("reset")),onDefaults:o[4]||(o[4]=i=>t.$emit("defaults"))})])])],64)}const De=I(ce,[["render",Ae],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),ye=Object.freeze(Object.defineProperty({__proto__:null,default:De},Symbol.toStringTag,{value:"Module"}));export{ne as C,C as D,De as H,ye as a};
diff --git a/web/settings/assets/HardwareInstallation-70f156e6.js b/web/settings/assets/HardwareInstallation-70f156e6.js
new file mode 100644
index 0000000000..b90ad97485
--- /dev/null
+++ b/web/settings/assets/HardwareInstallation-70f156e6.js
@@ -0,0 +1 @@
+import{l as U,d as N,t as G,a7 as K,a0 as H,P as F,O as $,N as J,F as Z}from"./vendor-fortawesome-41164876.js";import{_ as e,C as Q}from"./index-f9fda857.js";import{_ as B}from"./dynamic-import-helper-be004503.js";import{_ as I,u as p,k as s,l as g,A as E,N as i,y as u,z as b,D as r,x as l,a0 as M,a1 as X,B as P,J as R,K as h,q as k}from"./vendor-a21b3a62.js";const Y={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,o=void 0){this.$emit("update:configuration",{value:t,object:o})}}},j=I(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),ee={name:"DeviceFallback",mixins:[j]},oe={class:"device-fallback"},te={key:1};function ie(t,o,_,m,a,d){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return s(),g("div",oe,[Object.keys(t.device.configuration).length==0?(s(),E(c,{key:0,subtype:"info"},{default:i(()=>[u(' Der Gerät-Typ "'+b(t.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",te,[r(c,{subtype:"warning"},{default:i(()=>[u(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+b(t.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.device.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:i(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:i(()=>[l("pre",null,b(JSON.stringify(t.device.configuration,void 0,2)),1)]),_:1})]))])}const _e=I(ee,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ne={mixins:[j],props:{component:{type:Object,required:!0}}},re=I(ne,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),de={name:"ComponentFallback",mixins:[re]},ue={class:"component-fallback"},se={key:1};function ae(t,o,_,m,a,d){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return s(),g("div",ue,[Object.keys(t.component.configuration).length==0?(s(),E(c,{key:0,subtype:"info"},{default:i(()=>[u(' Der Komponenten-Typ "'+b(t.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",se,[r(c,{subtype:"warning"},{default:i(()=>[u(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+b(t.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.component.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:i(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:i(()=>[l("pre",null,b(JSON.stringify(t.component.configuration,void 0,2)),1)]),_:1})]))])}const ve=I(de,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),me={name:"OpenwbConfigProxy",props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},emits:["update:configuration"],computed:{myComponent(){var t;return console.debug(`loading component: ${this.device.type} / ${(t=this.component)==null?void 0:t.type}`),this.component!==void 0?M({loader:()=>B(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-4cd875ee.js"),["assets/device-4cd875ee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-17812629.js"),["assets/device-17812629.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-44ac2d07.js"),["assets/device-44ac2d07.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-44627252.js"),["assets/device-44627252.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-4696232a.js"),["assets/device-4696232a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-116a65cb.js"),["assets/counter-116a65cb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-eed61bed.js"),["assets/device-eed61bed.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-bdfaf1f4.js"),["assets/bat-bdfaf1f4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-ec9f9982.js"),["assets/counter-ec9f9982.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-d0fb85ca.js"),["assets/device-d0fb85ca.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-287e8910.js"),["assets/inverter-287e8910.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-cda681c6.js"),["assets/counter-cda681c6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-51badd6c.js"),["assets/device-51badd6c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-2c898c0e.js"),["assets/inverter-2c898c0e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-cd05bdaa.js"),["assets/device-cd05bdaa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-c8cb4ab4.js"),["assets/counter-c8cb4ab4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-7893f72c.js"),["assets/device-7893f72c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-1529fe73.js"),["assets/inverter-1529fe73.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-840118d9.js"),["assets/bat-840118d9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-752b4387.js"),["assets/device-752b4387.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-ab8d4880.js"),["assets/bat-ab8d4880.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-55fd6368.js"),["assets/counter-55fd6368.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-2045e148.js"),["assets/device-2045e148.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-692fd261.js"),["assets/inverter-692fd261.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-9d6be7fa.js"),["assets/bat-9d6be7fa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-46c91fda.js"),["assets/counter_sm-46c91fda.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-823f72ad.js"),["assets/device-823f72ad.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-4a5d5bbc.js"),["assets/inverter_secondary-4a5d5bbc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-3b4b20a7.js"),["assets/bat-3b4b20a7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-865f9c61.js"),["assets/counter-865f9c61.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-1eaab064.js"),["assets/device-1eaab064.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-fa1c29cd.js"),["assets/inverter-fa1c29cd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-61eea3a5.js"),["assets/bat-61eea3a5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-7fca39df.js"),["assets/counter-7fca39df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-436ab177.js"),["assets/device-436ab177.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-80f24f74.js"),["assets/inverter-80f24f74.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-a74943cb.js"),["assets/bat-a74943cb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-4410dc4e.js"),["assets/counter-4410dc4e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f8b42d98.js"),["assets/device-f8b42d98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-da1db027.js"),["assets/inverter-da1db027.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-7a3ba47e.js"),["assets/counter-7a3ba47e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-d91bc952.js"),["assets/device-d91bc952.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-2fe61a6a.js"),["assets/device-2fe61a6a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-99d6a6cb.js"),["assets/bat-99d6a6cb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-b3f26d9d.js"),["assets/counter-b3f26d9d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-fd700d8f.js"),["assets/device-fd700d8f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-3715b21d.js"),["assets/inverter-3715b21d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-9ff0cd5b.js"),["assets/counter-9ff0cd5b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-ac3617bf.js"),["assets/device-ac3617bf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-9fcc4ae5.js"),["assets/counter-9fcc4ae5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-8308249d.js"),["assets/device-8308249d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-bcc6d0d6.js"),["assets/inverter-bcc6d0d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-70dec769.js"),["assets/device-70dec769.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-dc002a5d.js"),["assets/counter-dc002a5d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-a41c9f9a.js"),["assets/device-a41c9f9a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-bff0132e.js"),["assets/counter-bff0132e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-a018debc.js"),["assets/device-a018debc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-8d6c27df.js"),["assets/device-8d6c27df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-c29b676e.js"),["assets/inverter-c29b676e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-35c75ada.js"),["assets/device-35c75ada.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-a28914e4.js"),["assets/bat-a28914e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-02712182.js"),["assets/counter-02712182.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-82e0acf7.js"),["assets/device-82e0acf7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-d29f4c1a.js"),["assets/inverter-d29f4c1a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-5860e973.js"),["assets/device-5860e973.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-426bdd63.js"),["assets/bat-426bdd63.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-f044ae56.js"),["assets/bat-f044ae56.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-46612257.js"),["assets/counter-46612257.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-e10956ea.js"),["assets/inverter-e10956ea.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-c64928d7.js"),["assets/bat-c64928d7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-c6d1b3df.js"),["assets/consumption_counter-c6d1b3df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-38172dbc.js"),["assets/counter-38172dbc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-c3ba2a50.js"),["assets/device-c3ba2a50.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-36b2f4c7.js"),["assets/inverter-36b2f4c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-c38863be.js"),["assets/inverter-c38863be.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-4498494c.js"),["assets/counter-4498494c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-b80563d5.js"),["assets/device-b80563d5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-68a2bd86.js"),["assets/counter-68a2bd86.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-282ac597.js"),["assets/device-282ac597.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-bdcf1a2f.js"),["assets/inverter-bdcf1a2f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-4992e86f.js"),["assets/device-4992e86f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-e7ac4171.js"),["assets/device-e7ac4171.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-e77cad4b.js"),["assets/device-e77cad4b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-9b6e8dff.js"),["assets/counter-9b6e8dff.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-e9766b50.js"),["assets/device-e9766b50.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-fe5fad52.js"),["assets/device-fe5fad52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-87e58e62.js"),["assets/device-87e58e62.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-80f0d2f4.js"),["assets/bat-80f0d2f4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-8af15294.js"),["assets/counter-8af15294.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-2a6323de.js"),["assets/device-2a6323de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-b61011e2.js"),["assets/inverter-b61011e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-bc776e4a.js"),["assets/counter-bc776e4a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-48761201.js"),["assets/inverter-48761201.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-328595a8.js"),["assets/bat-328595a8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-999a65de.js"),["assets/bat_smart_energy-999a65de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-e6014599.js"),["assets/counter-e6014599.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-f511f708.js"),["assets/device-f511f708.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-e49c5d75.js"),["assets/inverter-e49c5d75.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-ba2e5e6b.js"),["assets/bat-ba2e5e6b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-2861d843.js"),["assets/device-2861d843.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-1a463b8a.js"),["assets/device-1a463b8a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-7bf5aea7.js"),["assets/counter-7bf5aea7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-37c8a5d7.js"),["assets/device-37c8a5d7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-5f7aec52.js"),["assets/inverter-5f7aec52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-53686a65.js"),["assets/device-53686a65.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-86c123c1.js"),["assets/device-86c123c1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-8757edbf.js"),["assets/counter-8757edbf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-900bb2eb.js"),["assets/device-900bb2eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c3b4d8e4.js"),["assets/device-c3b4d8e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-fa423cd0.js"),["assets/inverter-fa423cd0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-9f7025df.js"),["assets/device-9f7025df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-51cbfef1.js"),["assets/device-51cbfef1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-9d9a67fb.js"),["assets/bat-9d9a67fb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-f74d8989.js"),["assets/counter-f74d8989.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-b07f9cfe.js"),["assets/device-b07f9cfe.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-a76bfa79.js"),["assets/external_inverter-a76bfa79.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-471fa6e9.js"),["assets/inverter-471fa6e9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-12daed7b.js"),["assets/bat-12daed7b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-b14a6820.js"),["assets/device-b14a6820.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-88d5ed46.js"),["assets/inverter-88d5ed46.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-5dc8caee.js"),["assets/device-5dc8caee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-bb33d730.js"),["assets/bat-bb33d730.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-321d3599.js"),["assets/counter-321d3599.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-baaf93fc.js"),["assets/device-baaf93fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-70f78ef5.js"),["assets/inverter-70f78ef5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-50d0810f.js"),["assets/counter-50d0810f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-939b0ad1.js"),["assets/device-939b0ad1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-baab6c7d.js"),["assets/bat-baab6c7d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-ee62c15a.js"),["assets/device-ee62c15a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-57d15ff3.js"),["assets/inverter-57d15ff3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-b0f78c7c.js"),["assets/counter-b0f78c7c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-ac5464c5.js"),["assets/device-ac5464c5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-7e1581b0.js"),["assets/device-7e1581b0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-24fa8719.js"),["assets/device-24fa8719.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-3942ce7f.js"),["assets/counter-3942ce7f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-d8584875.js"),["assets/device-d8584875.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-3ed84812.js"),["assets/device-3ed84812.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-bae92296.js"),["assets/bat-bae92296.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-86f04938.js"),["assets/counter-86f04938.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-a159510e.js"),["assets/device-a159510e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-eb5f339a.js"),["assets/inverter-eb5f339a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-277eabf6.js"),["assets/counter-277eabf6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-827098d6.js"),["assets/device-827098d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-6f84161c.js"),["assets/inverter-6f84161c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-2812d314.js"),["assets/device-2812d314.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-1e6b58f6.js"),["assets/inverter-1e6b58f6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ve}):M({loader:()=>B(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-4cd875ee.js"),["assets/device-4cd875ee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-17812629.js"),["assets/device-17812629.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-44ac2d07.js"),["assets/device-44ac2d07.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-44627252.js"),["assets/device-44627252.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-4696232a.js"),["assets/device-4696232a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-eed61bed.js"),["assets/device-eed61bed.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-d0fb85ca.js"),["assets/device-d0fb85ca.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-51badd6c.js"),["assets/device-51badd6c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-cd05bdaa.js"),["assets/device-cd05bdaa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-7893f72c.js"),["assets/device-7893f72c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-752b4387.js"),["assets/device-752b4387.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-2045e148.js"),["assets/device-2045e148.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-823f72ad.js"),["assets/device-823f72ad.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-1eaab064.js"),["assets/device-1eaab064.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-436ab177.js"),["assets/device-436ab177.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f8b42d98.js"),["assets/device-f8b42d98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-d91bc952.js"),["assets/device-d91bc952.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-2fe61a6a.js"),["assets/device-2fe61a6a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-fd700d8f.js"),["assets/device-fd700d8f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-ac3617bf.js"),["assets/device-ac3617bf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-8308249d.js"),["assets/device-8308249d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-70dec769.js"),["assets/device-70dec769.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-a41c9f9a.js"),["assets/device-a41c9f9a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-a018debc.js"),["assets/device-a018debc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-8d6c27df.js"),["assets/device-8d6c27df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-35c75ada.js"),["assets/device-35c75ada.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-82e0acf7.js"),["assets/device-82e0acf7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-5860e973.js"),["assets/device-5860e973.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-c3ba2a50.js"),["assets/device-c3ba2a50.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-b80563d5.js"),["assets/device-b80563d5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-282ac597.js"),["assets/device-282ac597.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-4992e86f.js"),["assets/device-4992e86f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-e7ac4171.js"),["assets/device-e7ac4171.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-e77cad4b.js"),["assets/device-e77cad4b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-e9766b50.js"),["assets/device-e9766b50.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-fe5fad52.js"),["assets/device-fe5fad52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-87e58e62.js"),["assets/device-87e58e62.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-2a6323de.js"),["assets/device-2a6323de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-f511f708.js"),["assets/device-f511f708.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-2861d843.js"),["assets/device-2861d843.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-1a463b8a.js"),["assets/device-1a463b8a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-37c8a5d7.js"),["assets/device-37c8a5d7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-53686a65.js"),["assets/device-53686a65.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-86c123c1.js"),["assets/device-86c123c1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-900bb2eb.js"),["assets/device-900bb2eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c3b4d8e4.js"),["assets/device-c3b4d8e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-9f7025df.js"),["assets/device-9f7025df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-51cbfef1.js"),["assets/device-51cbfef1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-b07f9cfe.js"),["assets/device-b07f9cfe.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-b14a6820.js"),["assets/device-b14a6820.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-5dc8caee.js"),["assets/device-5dc8caee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-baaf93fc.js"),["assets/device-baaf93fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-939b0ad1.js"),["assets/device-939b0ad1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-ee62c15a.js"),["assets/device-ee62c15a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-ac5464c5.js"),["assets/device-ac5464c5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-7e1581b0.js"),["assets/device-7e1581b0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-24fa8719.js"),["assets/device-24fa8719.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-d8584875.js"),["assets/device-d8584875.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-3ed84812.js"),["assets/device-3ed84812.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-a159510e.js"),["assets/device-a159510e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-827098d6.js"),["assets/device-827098d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-2812d314.js"),["assets/device-2812d314.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:_e})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function pe(t,o,_,m,a,d){return s(),E(X(d.myComponent),{device:_.device,component:_.component,configuration:_.component?_.component.configuration:_.device.configuration,"device-id":_.device.id,"device-type":_.device.type,"component-id":_.component?_.component.id:void 0,"component-type":_.component?_.component.type:void 0,"onUpdate:configuration":o[0]||(o[0]=c=>d.updateConfiguration(c))},null,40,["device","component","configuration","device-id","device-type","component-id","component-type"])}const le=I(me,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);U.add(N,G,K,H,F,$,J);const ce={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:Z,OpenwbConfigProxy:le},mixins:[Q],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([t,o])=>({label:o.group_name,options:Object.entries(o.vendors).map(([_,m])=>({value:[t,_],text:m.vendor_name})).sort((_,m)=>_.text.localeCompare(m.text))})).sort((t,o)=>-t.label.localeCompare(o.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[t,o]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][t].vendors[o].devices).map(([_,m])=>({value:[o,_],text:m.device_name})).sort((_,m)=>_.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(t){return t.match(/^(.+_)?counter(_.+)?$/)?"danger":t.match(/^(.+_)?inverter(_.+)?$/)?"success":t.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(t){return t.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:t.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:t.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(t){return this.getWildcardTopics("openWB/system/device/"+t+"/component/+/config")},deviceHasConfiguredComponents(t){return Object.keys(this.getMyInstalledComponents(t)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(t,o,_){_.stopPropagation(),this.modalDevice=t,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(t){this.showDeviceRemoveModal=!1,t=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(t,o,_,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:t,deviceType:_,deviceVendor:o,type:m}})},removeComponentModal(t,o,_,m,a){a.stopPropagation(),this.modalComponent={deviceId:t,id:o,type:_},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(t){this.showComponentRemoveModal=!1,t=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(t,o){if(t===void 0||o===void 0)return[];console.debug("finding components for",t,o);let _=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[t]!==void 0?(m.vendors[t].devices[o]!==void 0&&(_=Object.entries(m.vendors[t].devices[o].components).map(([d,c])=>({value:d,text:c.component_name}))),!1):!0),_},updateConfiguration(t,o){console.debug("updateConfiguration",t,o),this.updateState(t,o.value,o.object)}}},Ee={class:"hardwareInstallation"},ge={name:"hardwareInstallationForm"},fe={key:0},be={key:1},Ve={key:1},Oe={class:"col-1"},Te={key:0},Ie={class:"col-1"};function Ae(t,o,_,m,a,d){const c=p("openwb-base-modal-dialog"),A=p("router-link"),O=p("openwb-base-alert"),T=p("font-awesome-icon"),L=p("openwb-base-avatar"),D=p("openwb-base-text-input"),C=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),x=p("openwb-base-click-button"),y=p("openwb-base-select-input"),S=p("openwb-base-submit-buttons");return s(),g(R,null,[r(c,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeDevice},{default:i(()=>[u(' Wollen Sie das Gerät "'+b(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(c,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeComponent},{default:i(()=>[u(' Wollen Sie die Komponente "'+b(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",Ee,[l("form",ge,[_.installAssistantActive?P("",!0):(s(),E(O,{key:0,subtype:"info"},{default:i(()=>[o[6]||(o[6]=u(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),r(A,{to:"/LoadManagementConfiguration"},{default:i(()=>o[5]||(o[5]=[u(" Lastmanagement ")])),_:1}),o[7]||(o[7]=u(" zu prüfen! "))]),_:1})),r(w,{title:"Geräte und Komponenten"},{default:i(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),g("div",fe,[r(O,{subtype:"info"},{default:i(()=>o[8]||(o[8]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),g("div",be,[(s(!0),g(R,null,h(d.installedDevices,(n,z)=>(s(),E(w,{key:n.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[r(T,{"fixed-width":"",icon:["fas","network-wired"]}),u(" "+b(n.name),1)]),actions:i(v=>[v.collapsed?(s(),g("div",Ve,[(s(!0),g(R,null,h(d.getMyInstalledComponents(n.id),f=>(s(),E(L,{key:f.id,class:k("ml-1 bg-"+d.getComponentTypeClass(f.type))},{default:i(()=>[r(T,{"fixed-width":"",icon:d.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(s(),E(L,{key:0,class:"bg-danger clickable",onClick:f=>d.removeDeviceModal(n.id,n.name,f)},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":n.name,"onUpdate:modelValue":v=>t.updateState(z,v,"name")},null,8,["model-value","onUpdate:modelValue"]),o[16]||(o[16]=l("hr",null,null,-1)),r(C,{device:n,"onUpdate:configuration":v=>d.updateConfiguration(z,v)},null,8,["device","onUpdate:configuration"]),o[17]||(o[17]=l("hr",null,null,-1)),r(W,null,{default:i(()=>[...o[9]||(o[9]=[u("Komponenten")])]),_:1}),d.deviceHasConfiguredComponents(n.id)?P("",!0):(s(),E(O,{key:0,subtype:"warning"},{default:i(()=>[...o[10]||(o[10]=[u(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(s(!0),g(R,null,h(d.getMyInstalledComponents(n.id),(v,f)=>(s(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:d.getComponentTypeClass(v.type)},{header:i(()=>[r(T,{"fixed-width":"",icon:d.getComponentTypeIcon(v.type)},null,8,["icon"]),u(" "+b(v.name),1)]),actions:i(V=>[V.collapsed?P("",!0):(s(),E(L,{key:0,class:"bg-danger clickable",onClick:q=>d.removeComponentModal(n.id,v.id,v.type,v.name,q)},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":V=>t.updateState(f,V,"name")},null,8,["model-value","onUpdate:modelValue"]),r(D,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":V=>t.updateState(f,V,"info.manufacturer")},{help:i(()=>[...o[11]||(o[11]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),r(D,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":V=>t.updateState(f,V,"info.model")},{help:i(()=>[...o[12]||(o[12]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o[13]||(o[13]=l("hr",null,null,-1)),r(C,{device:n,component:v,"onUpdate:configuration":V=>d.updateConfiguration(f,V)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),o[18]||(o[18]=l("hr",null,null,-1)),d.getComponentList(n.vendor,n.type).length?(s(),E(y,{key:1,class:"mb-2",title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:d.getComponentList(n.vendor,n.type),"model-value":a.componentToAdd[n.id],"onUpdate:modelValue":v=>a.componentToAdd[n.id]=v},{append:i(()=>[l("span",Oe,[r(x,{class:k(a.componentToAdd[n.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[n.id]===void 0,onButtonClicked:v=>d.addComponent(n.id,n.vendor,n.type,a.componentToAdd[n.id])},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[...o[14]||(o[14]=[u(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(s(),E(O,{key:2,subtype:"info"},{default:i(()=>[...o[15]||(o[15]=[u(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(d.installedDevices).length>0?(s(),g("hr",Te)):P("",!0),r(y,{modelValue:a.selectedVendor,"onUpdate:modelValue":o[0]||(o[0]=n=>a.selectedVendor=n),title:"Hersteller","not-selected":"Bitte auswählen",groups:d.vendorList},null,8,["modelValue","groups"]),r(y,{modelValue:a.deviceToAdd,"onUpdate:modelValue":o[1]||(o[1]=n=>a.deviceToAdd=n),title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:a.selectedVendor===void 0,options:d.deviceList},{append:i(()=>[l("span",Ie,[r(x,{class:k(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:d.addDevice},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>o[19]||(o[19]=[l("p",null,[u(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),u(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),l("p",null,[u(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),u(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options"])]))]),_:1}),r(S,{"form-name":"hardwareInstallationForm",onSave:o[2]||(o[2]=n=>t.$emit("save")),onReset:o[3]||(o[3]=n=>t.$emit("reset")),onDefaults:o[4]||(o[4]=n=>t.$emit("defaults"))})])])],64)}const De=I(ce,[["render",Ae],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),ye=Object.freeze(Object.defineProperty({__proto__:null,default:De},Symbol.toStringTag,{value:"Module"}));export{re as C,j as D,De as H,ye as a};
diff --git a/web/settings/assets/InstallAssistant-c6a6444f.js b/web/settings/assets/InstallAssistant-6d2c34f9.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-c6a6444f.js
rename to web/settings/assets/InstallAssistant-6d2c34f9.js
index eb6781d47c..7ab379ac0a 100644
--- a/web/settings/assets/InstallAssistant-c6a6444f.js
+++ b/web/settings/assets/InstallAssistant-6d2c34f9.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-dc0e711f.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a0 as p,u as d,k as i,l as u,D as A,N as v,A as E,a1 as I,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-de111777.js"),["assets/InstallAssistantStep0-de111777.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-eec2b42e.js"),["assets/InstallAssistantStep1-eec2b42e.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-ad71d105.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-a22f74f5.js"),["assets/InstallAssistantStep10-a22f74f5.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-95ec4f8b.js"),["assets/InstallAssistantStep2-95ec4f8b.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-8e218ae4.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-e076a393.js"),["assets/InstallAssistantStep3-e076a393.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-2f07ba45.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-07e22013.js"),["assets/InstallAssistantStep4-07e22013.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-12a5c989.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-4b69dc5b.js"),["assets/InstallAssistantStep5-4b69dc5b.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-6cc98da9.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-ae56da1e.js"),["assets/InstallAssistantStep6-ae56da1e.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-12a5c989.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-824e5762.js"),["assets/InstallAssistantStep7-824e5762.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-87715007.js","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-37e813b9.js"),["assets/InstallAssistantStep8-37e813b9.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-0ab604e8.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-7a22998e.js"),["assets/InstallAssistantStep9-7a22998e.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-0780226f.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-ad71d105.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-0780226f.js"),["assets/InstallAssistantStepTemplate-0780226f.js","assets/index-dc0e711f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-f9fda857.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a0 as p,u as d,k as i,l as u,D as A,N as v,A as E,a1 as I,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-3ae5776e.js"),["assets/InstallAssistantStep0-3ae5776e.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-f2cb69f1.js"),["assets/InstallAssistantStep1-f2cb69f1.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-b9730b64.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-6a0bfe8b.js"),["assets/InstallAssistantStep10-6a0bfe8b.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-116b498f.js"),["assets/InstallAssistantStep2-116b498f.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-aff61250.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-b44c543e.js"),["assets/InstallAssistantStep3-b44c543e.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-1c49e709.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-ca57a396.js"),["assets/InstallAssistantStep4-ca57a396.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-8dff21bc.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-2a886f5d.js"),["assets/InstallAssistantStep5-2a886f5d.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-70f156e6.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-25f8b1a2.js"),["assets/InstallAssistantStep6-25f8b1a2.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-8dff21bc.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-be0e6887.js"),["assets/InstallAssistantStep7-be0e6887.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-da717df7.js","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-5bb0860d.js"),["assets/InstallAssistantStep8-5bb0860d.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-e8ea05c9.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-af2ff378.js"),["assets/InstallAssistantStep9-af2ff378.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-b9730b64.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-3c026c08.js"),["assets/InstallAssistantStepTemplate-3c026c08.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-de111777.js b/web/settings/assets/InstallAssistantStep0-3ae5776e.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-de111777.js
rename to web/settings/assets/InstallAssistantStep0-3ae5776e.js
index 901610fe1b..93ec8e8d5b 100644
--- a/web/settings/assets/InstallAssistantStep0-de111777.js
+++ b/web/settings/assets/InstallAssistantStep0-3ae5776e.js
@@ -1 +1 @@
-import{C as u}from"./index-dc0e711f.js";import d from"./InstallAssistantStepTemplate-0780226f.js";import{_ as p,u as i,k as m,A as g,N as a,D as h,y as c,x as t}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function A(s,e,b,w,P,n){const l=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(l,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=o=>n.nextPage(o))},{default:a(()=>e[1]||(e[1]=[c(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung - Eine Sicherung erstellen"),t("li",null,"Aktualisierung des Systems"),t("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung - Eine Sicherung erstellen")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const z=p(f,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{z as default};
+import{C as u}from"./index-f9fda857.js";import d from"./InstallAssistantStepTemplate-3c026c08.js";import{_ as p,u as i,k as m,A as g,N as a,D as h,y as c,x as t}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function A(s,e,b,w,P,n){const l=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(l,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=o=>n.nextPage(o))},{default:a(()=>e[1]||(e[1]=[c(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung - Eine Sicherung erstellen"),t("li",null,"Aktualisierung des Systems"),t("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung - Eine Sicherung erstellen")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const z=p(f,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{z as default};
diff --git a/web/settings/assets/InstallAssistantStep1-eec2b42e.js b/web/settings/assets/InstallAssistantStep1-f2cb69f1.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep1-eec2b42e.js
rename to web/settings/assets/InstallAssistantStep1-f2cb69f1.js
index 307ea272ed..4698f9daf0 100644
--- a/web/settings/assets/InstallAssistantStep1-eec2b42e.js
+++ b/web/settings/assets/InstallAssistantStep1-f2cb69f1.js
@@ -1 +1 @@
-import{C as m}from"./index-dc0e711f.js";import p from"./InstallAssistantStepTemplate-0780226f.js";import{D as l}from"./DataManagement-ad71d105.js";import{_ as d,u as a,k as u,A as g,N as i,x as f,D as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,P,S,w,n){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:i(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:i(()=>[v(o,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=d(A,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{T as default};
+import{C as m}from"./index-f9fda857.js";import p from"./InstallAssistantStepTemplate-3c026c08.js";import{D as l}from"./DataManagement-b9730b64.js";import{_ as d,u as a,k as u,A as g,N as i,x as f,D as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,P,S,w,n){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:i(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:i(()=>[v(o,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=d(A,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep10-a22f74f5.js b/web/settings/assets/InstallAssistantStep10-6a0bfe8b.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-a22f74f5.js
rename to web/settings/assets/InstallAssistantStep10-6a0bfe8b.js
index 22f6f7a16b..17855398c9 100644
--- a/web/settings/assets/InstallAssistantStep10-a22f74f5.js
+++ b/web/settings/assets/InstallAssistantStep10-6a0bfe8b.js
@@ -1 +1 @@
-import{C as a}from"./index-dc0e711f.js";import o from"./InstallAssistantStepTemplate-0780226f.js";import{_ as r,u as l,k as d,A as m,N as p,x as n}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const g={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function u(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return d(),m(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:p(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const v=r(g,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{v as default};
+import{C as a}from"./index-f9fda857.js";import o from"./InstallAssistantStepTemplate-3c026c08.js";import{_ as r,u as l,k as d,A as m,N as p,x as n}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const g={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function u(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return d(),m(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:p(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const v=r(g,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{v as default};
diff --git a/web/settings/assets/InstallAssistantStep2-95ec4f8b.js b/web/settings/assets/InstallAssistantStep2-116b498f.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-95ec4f8b.js
rename to web/settings/assets/InstallAssistantStep2-116b498f.js
index d6d7732ad5..bf5a46bef0 100644
--- a/web/settings/assets/InstallAssistantStep2-95ec4f8b.js
+++ b/web/settings/assets/InstallAssistantStep2-116b498f.js
@@ -1 +1 @@
-import{C as p}from"./index-dc0e711f.js";import d from"./InstallAssistantStepTemplate-0780226f.js";import l from"./System-8e218ae4.js";import{_ as u,u as i,k as f,A as g,N as o,x as a,D as S}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const A={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:d,SystemView:l},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function v(e,t,P,w,$,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>t[4]||(t[4]=[a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1)])),content:o(()=>[S(r,{"install-assistant-active":!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(A,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{N as default};
+import{C as p}from"./index-f9fda857.js";import d from"./InstallAssistantStepTemplate-3c026c08.js";import l from"./System-aff61250.js";import{_ as u,u as i,k as f,A as g,N as o,x as a,D as S}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const A={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:d,SystemView:l},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function v(e,t,P,w,$,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>t[4]||(t[4]=[a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1)])),content:o(()=>[S(r,{"install-assistant-active":!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(A,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep3-e076a393.js b/web/settings/assets/InstallAssistantStep3-b44c543e.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep3-e076a393.js
rename to web/settings/assets/InstallAssistantStep3-b44c543e.js
index ff80cd9cb0..c6d1f34a26 100644
--- a/web/settings/assets/InstallAssistantStep3-e076a393.js
+++ b/web/settings/assets/InstallAssistantStep3-b44c543e.js
@@ -1 +1 @@
-import{C as p}from"./index-dc0e711f.js";import d from"./InstallAssistantStepTemplate-0780226f.js";import{G as m}from"./GeneralConfig-2f07ba45.js";import{_ as u,u as i,k as g,A as f,N as r,x as s,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function k(n,e,B,S,A,a){const o=i("GeneralConfigView"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:a.nextPage,onPreviousPage:a.previousPage,onEndAssistant:a.endAssistant},{help:r(()=>e[4]||(e[4]=[s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=t=>n.$emit("sendCommand",t)),onSave:e[1]||(e[1]=t=>n.$emit("save")),onReset:e[2]||(e[2]=t=>n.$emit("reset")),onDefaults:e[3]||(e[3]=t=>n.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{I as default};
+import{C as p}from"./index-f9fda857.js";import d from"./InstallAssistantStepTemplate-3c026c08.js";import{G as m}from"./GeneralConfig-1c49e709.js";import{_ as u,u as i,k as g,A as f,N as r,x as s,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function k(n,e,B,S,A,a){const o=i("GeneralConfigView"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:a.nextPage,onPreviousPage:a.previousPage,onEndAssistant:a.endAssistant},{help:r(()=>e[4]||(e[4]=[s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=t=>n.$emit("sendCommand",t)),onSave:e[1]||(e[1]=t=>n.$emit("save")),onReset:e[2]||(e[2]=t=>n.$emit("reset")),onDefaults:e[3]||(e[3]=t=>n.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStep4-07e22013.js b/web/settings/assets/InstallAssistantStep4-ca57a396.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep4-07e22013.js
rename to web/settings/assets/InstallAssistantStep4-ca57a396.js
index e30f34b299..18ad5f3c10 100644
--- a/web/settings/assets/InstallAssistantStep4-07e22013.js
+++ b/web/settings/assets/InstallAssistantStep4-ca57a396.js
@@ -1 +1 @@
-import{C as l}from"./index-dc0e711f.js";import p from"./InstallAssistantStepTemplate-0780226f.js";import{b as u}from"./ChargePointInstallation-12a5c989.js";import{_ as m,u as a,k as g,A as f,N as o,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,B,h,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const L=m(k,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{L as default};
+import{C as l}from"./index-f9fda857.js";import p from"./InstallAssistantStepTemplate-3c026c08.js";import{b as u}from"./ChargePointInstallation-8dff21bc.js";import{_ as m,u as a,k as g,A as f,N as o,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,B,h,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const L=m(k,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep5-4b69dc5b.js b/web/settings/assets/InstallAssistantStep5-2a886f5d.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep5-4b69dc5b.js
rename to web/settings/assets/InstallAssistantStep5-2a886f5d.js
index 25aeb95bac..359ba74c72 100644
--- a/web/settings/assets/InstallAssistantStep5-4b69dc5b.js
+++ b/web/settings/assets/InstallAssistantStep5-2a886f5d.js
@@ -1 +1 @@
-import{C as l}from"./index-dc0e711f.js";import m from"./InstallAssistantStepTemplate-0780226f.js";import{H as u}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as r,k as g,A as f,N as a,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,b,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default};
+import{C as l}from"./index-f9fda857.js";import m from"./InstallAssistantStepTemplate-3c026c08.js";import{H as u}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as r,k as g,A as f,N as a,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,b,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default};
diff --git a/web/settings/assets/InstallAssistantStep6-ae56da1e.js b/web/settings/assets/InstallAssistantStep6-25f8b1a2.js
similarity index 94%
rename from web/settings/assets/InstallAssistantStep6-ae56da1e.js
rename to web/settings/assets/InstallAssistantStep6-25f8b1a2.js
index 7ba3beceed..d44194c77a 100644
--- a/web/settings/assets/InstallAssistantStep6-ae56da1e.js
+++ b/web/settings/assets/InstallAssistantStep6-25f8b1a2.js
@@ -1 +1 @@
-import{C as d}from"./index-dc0e711f.js";import u from"./InstallAssistantStepTemplate-0780226f.js";import{b as p}from"./ChargePointInstallation-12a5c989.js";import{_ as m,u as a,k as g,A as h,N as r,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default};
+import{C as d}from"./index-f9fda857.js";import u from"./InstallAssistantStepTemplate-3c026c08.js";import{b as p}from"./ChargePointInstallation-8dff21bc.js";import{_ as m,u as a,k as g,A as h,N as r,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default};
diff --git a/web/settings/assets/InstallAssistantStep7-824e5762.js b/web/settings/assets/InstallAssistantStep7-be0e6887.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-824e5762.js
rename to web/settings/assets/InstallAssistantStep7-be0e6887.js
index 83e0841a6e..a87f6808ea 100644
--- a/web/settings/assets/InstallAssistantStep7-824e5762.js
+++ b/web/settings/assets/InstallAssistantStep7-be0e6887.js
@@ -1 +1 @@
-import{C as l}from"./index-dc0e711f.js";import m from"./InstallAssistantStepTemplate-0780226f.js";import p from"./LoadManagementConfig-87715007.js";import{_ as u,u as r,k as g,A as h,N as a,x as n,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./OpenwbSortableList-3ce7f991.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default};
+import{C as l}from"./index-f9fda857.js";import m from"./InstallAssistantStepTemplate-3c026c08.js";import p from"./LoadManagementConfig-da717df7.js";import{_ as u,u as r,k as g,A as h,N as a,x as n,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./OpenwbSortableList-3ce7f991.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStep8-37e813b9.js b/web/settings/assets/InstallAssistantStep8-5bb0860d.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep8-37e813b9.js
rename to web/settings/assets/InstallAssistantStep8-5bb0860d.js
index 7a02b601a9..1373772c94 100644
--- a/web/settings/assets/InstallAssistantStep8-37e813b9.js
+++ b/web/settings/assets/InstallAssistantStep8-5bb0860d.js
@@ -1 +1 @@
-import{C as l}from"./index-dc0e711f.js";import u from"./InstallAssistantStepTemplate-0780226f.js";import{a as m}from"./VehicleConfig-0ab604e8.js";import{_ as g,u as a,k as h,A as p,N as r,x as n,D as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}};function z(t,e,P,w,v,i){const o=a("VehicleConfigView"),d=a("InstallAssistantStepTemplate");return h(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[f(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=g(c,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{x as default};
+import{C as l}from"./index-f9fda857.js";import u from"./InstallAssistantStepTemplate-3c026c08.js";import{a as m}from"./VehicleConfig-e8ea05c9.js";import{_ as g,u as a,k as h,A as p,N as r,x as n,D as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}};function z(t,e,P,w,v,i){const o=a("VehicleConfigView"),d=a("InstallAssistantStepTemplate");return h(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[f(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=g(c,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{x as default};
diff --git a/web/settings/assets/InstallAssistantStep9-7a22998e.js b/web/settings/assets/InstallAssistantStep9-af2ff378.js
similarity index 91%
rename from web/settings/assets/InstallAssistantStep9-7a22998e.js
rename to web/settings/assets/InstallAssistantStep9-af2ff378.js
index 88c8236e4a..69153fdb29 100644
--- a/web/settings/assets/InstallAssistantStep9-7a22998e.js
+++ b/web/settings/assets/InstallAssistantStep9-af2ff378.js
@@ -1 +1 @@
-import{C as l}from"./index-dc0e711f.js";import p from"./InstallAssistantStepTemplate-0780226f.js";import{D as u}from"./DataManagement-ad71d105.js";import{_ as d,u as i,k as g,A as f,N as r,x as a,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,S,A,P,n){const o=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),f(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:r(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:r(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const I=d(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{I as default};
+import{C as l}from"./index-f9fda857.js";import p from"./InstallAssistantStepTemplate-3c026c08.js";import{D as u}from"./DataManagement-b9730b64.js";import{_ as d,u as i,k as g,A as f,N as r,x as a,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,S,A,P,n){const o=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),f(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:r(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:r(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const I=d(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-0780226f.js b/web/settings/assets/InstallAssistantStepTemplate-3c026c08.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-0780226f.js
rename to web/settings/assets/InstallAssistantStepTemplate-3c026c08.js
index 8ace279eb4..453ea50ba6 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-0780226f.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-3c026c08.js
@@ -1 +1 @@
-import{C as g}from"./index-dc0e711f.js";import{l as v,ak as y,al as w,F as x}from"./vendor-fortawesome-41164876.js";import{_ as k,u as r,k as i,l as a,D as t,N as s,x as n,y as c,B as p,m as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(y,w);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},S={class:"row justify-content-center"},T={class:"page-help-text col-md-3 py-2"},I={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",N,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",S,[n("div",T,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",I,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const Z=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{Z as default};
+import{C as g}from"./index-f9fda857.js";import{l as v,ak as y,al as w,F as x}from"./vendor-fortawesome-41164876.js";import{_ as k,u as r,k as i,l as a,D as t,N as s,x as n,y as c,B as p,m as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(y,w);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},S={class:"row justify-content-center"},T={class:"page-help-text col-md-3 py-2"},I={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",N,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",S,[n("div",T,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",I,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const Z=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{Z as default};
diff --git a/web/settings/assets/InstantChargeConfig-d3719370.js b/web/settings/assets/InstantChargeConfig-61c4fd49.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-d3719370.js
rename to web/settings/assets/InstantChargeConfig-61c4fd49.js
index d2c1aa9b18..237d9854f2 100644
--- a/web/settings/assets/InstantChargeConfig-d3719370.js
+++ b/web/settings/assets/InstantChargeConfig-61c4fd49.js
@@ -1 +1 @@
-import{C as l}from"./index-dc0e711f.js";import{_ as b,u as o,k as a,l as i,x as _,D as s,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-f9fda857.js";import{_ as b,u as o,k as a,l as i,x as _,D as s,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-b9806df1.js b/web/settings/assets/LegalSettings-ddd5b296.js
similarity index 97%
rename from web/settings/assets/LegalSettings-b9806df1.js
rename to web/settings/assets/LegalSettings-ddd5b296.js
index fc38cff553..1855df7a3f 100644
--- a/web/settings/assets/LegalSettings-b9806df1.js
+++ b/web/settings/assets/LegalSettings-ddd5b296.js
@@ -1 +1 @@
-import{l as _,a3 as k,F as y}from"./vendor-fortawesome-41164876.js";import{C as v}from"./index-dc0e711f.js";import{_ as B,u as n,k as i,l as h,x as a,D as o,N as r,A as m,y as d,B as p}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";_.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:y},mixins:[v],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",$,[a("form",z,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const O=B(S,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{O as default};
+import{l as _,a3 as k,F as y}from"./vendor-fortawesome-41164876.js";import{C as v}from"./index-f9fda857.js";import{_ as B,u as n,k as i,l as h,x as a,D as o,N as r,A as m,y as d,B as p}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";_.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:y},mixins:[v],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",$,[a("form",z,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const O=B(S,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{O as default};
diff --git a/web/settings/assets/LoadManagementConfig-87715007.js b/web/settings/assets/LoadManagementConfig-da717df7.js
similarity index 99%
rename from web/settings/assets/LoadManagementConfig-87715007.js
rename to web/settings/assets/LoadManagementConfig-da717df7.js
index d5da3879a6..0c9feaf6a4 100644
--- a/web/settings/assets/LoadManagementConfig-87715007.js
+++ b/web/settings/assets/LoadManagementConfig-da717df7.js
@@ -1 +1 @@
-import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-41164876.js";import{C as V}from"./index-dc0e711f.js";import{S as $}from"./OpenwbSortableList-3ce7f991.js";import{_ as q,u as l,k as u,l as m,x as d,D as s,N as o,y as i,J as v,K as w,A as W,z as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";z.add(C,x);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:L},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("counter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,r)=>e.text==r.text?0:e.text>r.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("inverter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let r=this.getChargePoint(t.id);r&&(e[t.id]=r.name)}else{let r=this.getComponent(t.id);r&&(e[t.id]=r.name)}return t.children.forEach(r=>{e={...e,...this.getElementTreeNames(r)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},isComponentType(t,e){return t.split("_").includes(e)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E={key:0},O={key:1};function F(t,e,r,H,P,p){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),g=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/counter/config/consider_less_charging",n))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:p.getHcSourceIdOptions.options,groups:p.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(v,null,w(p.counterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(n.name),1)]),default:o(()=>[s(g,{title:"Maximale Leistung",min:1,step:1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[15]||(e[15]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(v,null,w(p.inverterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(n.name),1)]),default:o(()=>[s(g,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[16]||(e[16]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",E,[s(h,{subtype:"info"},{default:o(()=>e[17]||(e[17]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",O,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:p.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateState("openWB/counter/get/hierarchy",n))},{help:o(()=>e[18]||(e[18]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=n=>t.$emit("save")),onReset:e[4]||(e[4]=n=>t.$emit("reset")),onDefaults:e[5]||(e[5]=n=>t.$emit("defaults"))})])])}const Q=q(Z,[["render",F],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Q as default};
+import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-41164876.js";import{C as V}from"./index-f9fda857.js";import{S as $}from"./OpenwbSortableList-3ce7f991.js";import{_ as q,u as l,k as u,l as m,x as d,D as s,N as o,y as i,J as v,K as w,A as W,z as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";z.add(C,x);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:L},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("counter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,r)=>e.text==r.text?0:e.text>r.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("inverter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let r=this.getChargePoint(t.id);r&&(e[t.id]=r.name)}else{let r=this.getComponent(t.id);r&&(e[t.id]=r.name)}return t.children.forEach(r=>{e={...e,...this.getElementTreeNames(r)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},isComponentType(t,e){return t.split("_").includes(e)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E={key:0},O={key:1};function F(t,e,r,H,P,p){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),g=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/counter/config/consider_less_charging",n))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:p.getHcSourceIdOptions.options,groups:p.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(v,null,w(p.counterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(n.name),1)]),default:o(()=>[s(g,{title:"Maximale Leistung",min:1,step:1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[15]||(e[15]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(v,null,w(p.inverterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(n.name),1)]),default:o(()=>[s(g,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[16]||(e[16]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",E,[s(h,{subtype:"info"},{default:o(()=>e[17]||(e[17]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",O,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:p.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateState("openWB/counter/get/hierarchy",n))},{help:o(()=>e[18]||(e[18]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=n=>t.$emit("save")),onReset:e[4]||(e[4]=n=>t.$emit("reset")),onDefaults:e[5]||(e[5]=n=>t.$emit("defaults"))})])])}const Q=q(Z,[["render",F],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Q as default};
diff --git a/web/settings/assets/MqttBridgeConfig-a467e292.js b/web/settings/assets/MqttBridgeConfig-2e7d7922.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-a467e292.js
rename to web/settings/assets/MqttBridgeConfig-2e7d7922.js
index 994d96e98c..3e8ec055a4 100644
--- a/web/settings/assets/MqttBridgeConfig-a467e292.js
+++ b/web/settings/assets/MqttBridgeConfig-2e7d7922.js
@@ -1 +1 @@
-import{l as x,d as C,a0 as A,F as q}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-dc0e711f.js";import{_ as D,u,k as m,l as b,D as o,N as a,x as f,J as k,y as s,z as y,A as M,B as T,K as W}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";x.add(C,A);const E={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&(console.info("request removal of mqtt bridge '"+t+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}}))},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},I={class:"mqttBridgeConfiguration"},P={key:0},Q={key:1},Z=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),_=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),w=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),V=u("openwb-base-card");return m(),b(k,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",I,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(V,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),M(_,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",P,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Q,[Object.keys(i.configuredMqttBridges).length===0?(m(),M(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(k,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(V,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(_,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,Z))),128))]))]),_:1})])],64)}const H=D(E,[["render",N],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{H as default};
+import{l as x,d as C,a0 as A,F as q}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-f9fda857.js";import{_ as D,u,k as m,l as b,D as o,N as a,x as f,J as k,y as s,z as y,A as M,B as T,K as W}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";x.add(C,A);const E={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&(console.info("request removal of mqtt bridge '"+t+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}}))},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},I={class:"mqttBridgeConfiguration"},P={key:0},Q={key:1},Z=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),_=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),w=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),V=u("openwb-base-card");return m(),b(k,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",I,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(V,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),M(_,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",P,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Q,[Object.keys(i.configuredMqttBridges).length===0?(m(),M(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(k,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(V,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(_,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,Z))),128))]))]),_:1})])],64)}const H=D(E,[["render",N],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{H as default};
diff --git a/web/settings/assets/OptionalComponents-36fd698f.js b/web/settings/assets/OptionalComponents-36fd698f.js
new file mode 100644
index 0000000000..582a444161
--- /dev/null
+++ b/web/settings/assets/OptionalComponents-36fd698f.js
@@ -0,0 +1,2 @@
+import{_ as $,C}from"./index-f9fda857.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,X as z,Y as V,F as L}from"./vendor-fortawesome-41164876.js";import{_ as v,u as p,k as s,l as r,A as y,N as o,y as i,z as g,D as n,x as l,a0 as I,a1 as E,J as q,B as _}from"./vendor-a21b3a62.js";const F={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},M=v(F,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[M]},j={class:"display-theme-fallback"},x={key:1};function A(t,e,u,c,w,b){const d=p("openwb-base-alert"),m=p("openwb-base-textarea");return s(),r("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),y(d,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+g(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),r("div",x,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+g(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(m,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=f=>t.updateConfiguration(f,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[l("pre",null,g(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const P=v(N,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:L},props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-4083964b.js"),["assets/displayTheme-4083964b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:P})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function H(t,e,u,c,w,b){const d=p("font-awesome-icon"),m=p("openwb-base-alert"),f=p("openwb-base-heading");return s(),r(q,null,[u.displayTheme.official?(s(),y(m,{key:0,subtype:"success"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),y(m,{key:1,subtype:"info"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(f,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+g(u.displayTheme.name)+'" ',1)]),_:1}),(s(),y(E(b.myComponent),{"display-theme":u.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>b.updateConfiguration(h))},null,40,["display-theme"]))],64)}const R=v(U,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:R},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},X={key:1},Y={key:0},Q=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,u,c,w,b){const d=p("openwb-base-alert"),m=p("openwb-base-button-group-input"),f=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),r("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",Z,[n(d,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",X,[n(m,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[11]||(e[11]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),r("div",Y,[n(d,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Q)]),_:1}),n(f,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":b.idTagList.join(`
+`)},{help:o(()=>e[16]||(e[16]=[i(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")])),_:1},8,["model-value"])])):_("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(m,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateState("openWB/optional/int_display/active",a))},{help:o(()=>e[17]||(e[17]=[i(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),r("div",ee,[n(m,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}],"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateState("openWB/optional/int_display/rotation",a))},{help:o(()=>e[18]||(e[18]=[i(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),l("br",null,null,-1),i(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")])),_:1},8,["model-value"]),e[21]||(e[21]=l("hr",null,null,-1)),n(T,null,{default:o(()=>e[19]||(e[19]=[i(" Display Standby ")])),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}],"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateState("openWB/optional/int_display/standby",a))},{help:o(()=>e[20]||(e[20]=[i(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")])),_:1},8,["model-value"])])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",te,[e[23]||(e[23]=l("hr",null,null,-1)),n(d,{subtype:"info"},{default:o(()=>e[22]||(e[22]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",ne,[e[26]||(e[26]=l("hr",null,null,-1)),n(m,{title:"Ladepunkte auf externen openWB","model-value":t.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=a=>t.updateState("openWB/optional/int_display/only_local_charge_points",a))},{help:o(()=>e[24]||(e[24]=[i(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")])),_:1},8,["model-value"]),e[27]||(e[27]=l("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),r("div",oe,[n(D,{class:"mb-2",title:"Theme des Displays",groups:b.displayThemeGroupList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":e[5]||(e[5]=a=>b.updateSelectedDisplayTheme(a))},{help:o(()=>e[25]||(e[25]=[i(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")])),_:1},8,["groups","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),y(W,{key:0,"display-theme":t.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":e[6]||(e[6]=a=>b.updateConfiguration("openWB/optional/int_display/theme",a))},null,8,["display-theme"])):_("",!0)])):_("",!0)]))]),_:1}),n(k,{"form-name":"optionalComponentsForm",onSave:e[7]||(e[7]=a=>t.$emit("save")),onReset:e[8]||(e[8]=a=>t.$emit("reset")),onDefaults:e[9]||(e[9]=a=>t.$emit("defaults"))})])])}const ae=v(J,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]),de=Object.freeze(Object.defineProperty({__proto__:null,default:ae},Symbol.toStringTag,{value:"Module"}));export{M as D,de as O};
diff --git a/web/settings/assets/OptionalComponents-be1b1295.js b/web/settings/assets/OptionalComponents-be1b1295.js
deleted file mode 100644
index e90ed0e50f..0000000000
--- a/web/settings/assets/OptionalComponents-be1b1295.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import{_ as C,C as S}from"./index-dc0e711f.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as z,X as V,Y as L,F as I}from"./vendor-fortawesome-41164876.js";import{_ as v,u as p,k as s,l as r,A as f,N as o,y as i,z as b,D as n,x as l,a0 as E,a1 as q,J as F,B as _}from"./vendor-a21b3a62.js";const M={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},T=v(M,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[T]},j={class:"display-theme-fallback"},A={key:1};function P(t,e,y,w,c,m){const d=p("openwb-base-alert"),u=p("openwb-base-textarea");return s(),r("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),f(d,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+b(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),r("div",A,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+b(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(u,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=g=>t.updateConfiguration(g,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[l("pre",null,b(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const U=v(N,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);z.add(V,L);const H={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:I},mixins:[T],computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),E({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>C(()=>import("./displayTheme-78ab078b.js"),["assets/displayTheme-78ab078b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:U})}}};function R(t,e,y,w,c,m){const d=p("font-awesome-icon"),u=p("openwb-base-alert"),g=p("openwb-base-heading");return s(),r(F,null,[t.displayTheme.official?(s(),f(u,{key:0,subtype:"success"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+b(t.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),f(u,{key:1,subtype:"info"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+b(t.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(g,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+b(t.displayTheme.name)+'" ',1)]),_:1}),(s(),f(q(m.myComponent),{"display-theme":t.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>t.updateConfiguration(h))},null,40,["display-theme"]))],64)}const x=v(H,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:x},mixins:[S],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(y=>y.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},X={key:1},Y={key:0},Q=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,y,w,c,m){const d=p("openwb-base-alert"),u=p("openwb-base-button-group-input"),g=p("openwb-base-textarea"),h=p("openwb-base-card"),B=p("openwb-base-heading"),D=p("openwb-base-range-input"),W=p("openwb-base-select-input"),k=p("openwb-display-theme-proxy"),$=p("openwb-base-submit-buttons");return s(),r("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",Z,[n(d,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",X,[n(u,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[11]||(e[11]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),r("div",Y,[n(d,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Q)]),_:1}),n(g,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":m.idTagList.join(`
-`)},{help:o(()=>e[16]||(e[16]=[i(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")])),_:1},8,["model-value"])])):_("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(u,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateState("openWB/optional/int_display/active",a))},{help:o(()=>e[17]||(e[17]=[i(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),r("div",ee,[n(u,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}],"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateState("openWB/optional/int_display/rotation",a))},{help:o(()=>e[18]||(e[18]=[i(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),l("br",null,null,-1),i(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")])),_:1},8,["model-value"]),e[21]||(e[21]=l("hr",null,null,-1)),n(B,null,{default:o(()=>e[19]||(e[19]=[i(" Display Standby ")])),_:1}),n(D,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}],"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateState("openWB/optional/int_display/standby",a))},{help:o(()=>e[20]||(e[20]=[i(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")])),_:1},8,["model-value"])])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",te,[e[23]||(e[23]=l("hr",null,null,-1)),n(d,{subtype:"info"},{default:o(()=>e[22]||(e[22]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",ne,[e[26]||(e[26]=l("hr",null,null,-1)),n(u,{title:"Ladepunkte auf externen openWB","model-value":t.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=a=>t.updateState("openWB/optional/int_display/only_local_charge_points",a))},{help:o(()=>e[24]||(e[24]=[i(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")])),_:1},8,["model-value"]),e[27]||(e[27]=l("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),r("div",oe,[n(W,{class:"mb-2",title:"Theme des Displays",groups:m.displayThemeGroupList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":e[5]||(e[5]=a=>m.updateSelectedDisplayTheme(a))},{help:o(()=>e[25]||(e[25]=[i(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")])),_:1},8,["groups","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),f(k,{key:0,"display-theme":t.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":e[6]||(e[6]=a=>m.updateConfiguration("openWB/optional/int_display/theme",a))},null,8,["display-theme"])):_("",!0)])):_("",!0)]))]),_:1}),n($,{"form-name":"optionalComponentsForm",onSave:e[7]||(e[7]=a=>t.$emit("save")),onReset:e[8]||(e[8]=a=>t.$emit("reset")),onDefaults:e[9]||(e[9]=a=>t.$emit("defaults"))})])])}const ae=v(J,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]),de=Object.freeze(Object.defineProperty({__proto__:null,default:ae},Symbol.toStringTag,{value:"Module"}));export{T as D,de as O};
diff --git a/web/settings/assets/PVChargeConfig-f08197ff.js b/web/settings/assets/PVChargeConfig-13001890.js
similarity index 99%
rename from web/settings/assets/PVChargeConfig-f08197ff.js
rename to web/settings/assets/PVChargeConfig-13001890.js
index eb24c754d8..64ed4baeb7 100644
--- a/web/settings/assets/PVChargeConfig-f08197ff.js
+++ b/web/settings/assets/PVChargeConfig-13001890.js
@@ -1 +1 @@
-import{C as B}from"./index-dc0e711f.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-41164876.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as _,B as v}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[B],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},q={class:"pvChargeConfig"},M={name:"pvChargeConfigForm"},L={key:0},A={key:1},P={key:0},R={key:1},$={key:0},U={key:1},F={key:0};function D(n,e,p,N,I,l){const b=g("openwb-base-alert"),h=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),c=g("openwb-base-card"),m=g("font-awesome-icon"),w=g("openwb-base-range-input"),f=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",q,[o("form",M,[i(c,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(b,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",A,[i(h,{modelValue:l.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>l.controlMode=t),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[22]||(e[22]=[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>e[23]||(e[23]=[r(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>e[24]||(e[24]=[r(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>e[25]||(e[25]=[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>e[26]||(e[26]=[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[31]||(e[31]=o("hr",null,null,-1)),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>e[27]||(e[27]=[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),o("br",null,null,-1),r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>e[28]||(e[28]=[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[32]||(e[32]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>e[29]||(e[29]=[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",P,[i(b,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",R,[i(h,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>e[34]||(e[34]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",$,[i(b,{subtype:"info"},{default:a(()=>e[35]||(e[35]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",U,[i(h,{modelValue:l.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>l.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[36]||(e[36]=r(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[37]||(e[37]=r(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[38]||(e[38]=r(" Mindest-SoC des Speichers "))]),help:a(()=>[e[45]||(e[45]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[39]||(e[39]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[40]||(e[40]=r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[41]||(e[41]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[42]||(e[42]=r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[43]||(e[43]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[44]||(e[44]=r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue","model-value"]),l.batMode==="min_soc_bat_mode"?(s(),u("div",F,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(f,null,{default:a(()=>e[46]||(e[46]=[r(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>e[47]||(e[47]=[r(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),_(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["model-value"])):v("",!0),i(f,null,{default:a(()=>e[48]||(e[48]=[r(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>e[49]||(e[49]=[r(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),_(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["model-value"])):v("",!0)])):v("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const K=E(C,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{K as default};
+import{C as B}from"./index-f9fda857.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-41164876.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as _,B as v}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[B],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},q={class:"pvChargeConfig"},M={name:"pvChargeConfigForm"},L={key:0},A={key:1},P={key:0},R={key:1},$={key:0},U={key:1},F={key:0};function D(n,e,p,N,I,l){const b=g("openwb-base-alert"),h=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),c=g("openwb-base-card"),m=g("font-awesome-icon"),w=g("openwb-base-range-input"),f=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",q,[o("form",M,[i(c,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(b,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",A,[i(h,{modelValue:l.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>l.controlMode=t),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[22]||(e[22]=[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>e[23]||(e[23]=[r(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>e[24]||(e[24]=[r(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>e[25]||(e[25]=[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>e[26]||(e[26]=[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[31]||(e[31]=o("hr",null,null,-1)),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>e[27]||(e[27]=[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),o("br",null,null,-1),r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>e[28]||(e[28]=[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[32]||(e[32]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>e[29]||(e[29]=[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",P,[i(b,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",R,[i(h,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>e[34]||(e[34]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",$,[i(b,{subtype:"info"},{default:a(()=>e[35]||(e[35]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",U,[i(h,{modelValue:l.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>l.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[36]||(e[36]=r(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[37]||(e[37]=r(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[38]||(e[38]=r(" Mindest-SoC des Speichers "))]),help:a(()=>[e[45]||(e[45]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[39]||(e[39]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[40]||(e[40]=r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[41]||(e[41]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[42]||(e[42]=r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[43]||(e[43]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[44]||(e[44]=r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue","model-value"]),l.batMode==="min_soc_bat_mode"?(s(),u("div",F,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(f,null,{default:a(()=>e[46]||(e[46]=[r(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>e[47]||(e[47]=[r(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),_(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["model-value"])):v("",!0),i(f,null,{default:a(()=>e[48]||(e[48]=[r(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>e[49]||(e[49]=[r(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),_(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["model-value"])):v("",!0)])):v("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const K=E(C,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{K as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-6d89b998.js b/web/settings/assets/ScheduledChargeConfig-6a548cac.js
similarity index 98%
rename from web/settings/assets/ScheduledChargeConfig-6d89b998.js
rename to web/settings/assets/ScheduledChargeConfig-6a548cac.js
index 7b8329eedf..c715670e15 100644
--- a/web/settings/assets/ScheduledChargeConfig-6d89b998.js
+++ b/web/settings/assets/ScheduledChargeConfig-6a548cac.js
@@ -1 +1 @@
-import{C as h}from"./index-dc0e711f.js";import{_ as b,u as o,k as i,l as u,x as l,D as s,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[h],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},c={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const g=o("openwb-base-alert"),d=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return i(),u("div",c,[l("form",f,[s(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[s(g,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[s(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"]),e[8]||(e[8]=l("hr",null,null,-1)),s(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(p,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const E=b(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default};
+import{C as h}from"./index-f9fda857.js";import{_ as b,u as o,k as i,l as u,x as l,D as s,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[h],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},c={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const g=o("openwb-base-alert"),d=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return i(),u("div",c,[l("form",f,[s(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[s(g,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[s(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"]),e[8]||(e[8]=l("hr",null,null,-1)),s(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(p,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const E=b(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default};
diff --git a/web/settings/assets/Status-425f485b.js b/web/settings/assets/Status-bc2c7d27.js
similarity index 99%
rename from web/settings/assets/Status-425f485b.js
rename to web/settings/assets/Status-bc2c7d27.js
index 4ba5cd0cd7..9b2070c633 100644
--- a/web/settings/assets/Status-425f485b.js
+++ b/web/settings/assets/Status-bc2c7d27.js
@@ -1 +1 @@
-import{C as y}from"./index-dc0e711f.js";import{l as w,K as S,F as x,L as k,M as C,c as q,N as z,O as $,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-41164876.js";import{_ as W,u as o,k as r,A as l,N as d,D as n,y as p,z as f,x as v,B as T,l as I,J as P,K as L}from"./vendor-a21b3a62.js";import{C as H,p as Z,a as K,L as F,b as J,P as G,c as Q,T as U,i as X,d as Y,e as ee}from"./vendor-chartjs-5fa56b74.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";w.add(S);const te={name:"ChargePointSumCard",components:{FontAwesomeIcon:x},mixins:[y]};function ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-text-input"),c=o("openwb-base-heading"),u=o("openwb-base-card");return r(),l(u,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),t[0]||(t[0]=p(" Alle Ladepunkte "))]),default:d(()=>[n(m,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[1]||(t[1]=[p("Historie")])),_:1}),n(m,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const oe=W(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,q,S);const ae={name:"ChargePointCard",components:{FontAwesomeIcon:x},mixins:[y],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}};function re(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-checkbox-input"),u=o("openwb-base-text-input"),_=o("openwb-base-heading"),B=o("openwb-base-card");return r(),l(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),p(" "+f(a.installedChargePoint.name)+" (ID: "+f(s.chargePointIndex)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(m,{subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/state_str"]),1)]),_:1}),n(c,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),n(c,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),n(u,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/current",2)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[4]||(t[4]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[5]||(t[5]=[p("Phasen")])),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),l(u,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+s.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(r(),l(u,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),n(u,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const se=W(ae,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,q,z);const le={name:"CounterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{counter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ie(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-card");return r(),l(_,{subtype:"danger",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","gauge-high"]}),p(" "+f(a.counter.name)+" (ID: "+f(a.counter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]!=null?(r(),l(m,{key:0,subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]),1)]),_:1})):T("",!0),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Zählerstände")])),_:1}),n(u,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/frequency",3)},null,8,["model-value"]),n(c,null,{default:d(()=>t[6]||(t[6]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const ue=W(le,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,q,$);const pe={name:"InverterSumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function de(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),t[0]||(t[0]=p(" Alle Wechselrichter "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[3]||(t[3]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ce=W(pe,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,q,$);const me={name:"InverterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{inverter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ge(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),p(" "+f(a.inverter.name)+" (ID: "+f(a.inverter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[2]||(t[2]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const fe=W(me,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,q,A);const be={name:"BatterySumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function _e(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),t[0]||(t[0]=p(" Alle Speicher "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Tageswerte")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const he=W(be,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,q,A);const ve={name:"BatteryCard",components:{FontAwesomeIcon:x},mixins:[y],props:{battery:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ye(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),p(" "+f(a.battery.name)+" (ID: "+f(a.battery.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Aktuelle Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/soc"]},null,8,["model-value"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const We=W(ve,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,q,E);const we={name:"RippleControlReceiverCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}};function xe(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(r(),l(u,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{icon:["fas","tower-broadcast"]}),t[0]||(t[0]=p(" Steuerbare Verbrauchseinrichtung (RSE) "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):T("",!0)}const Be=W(we,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,q,M);const ke={name:"VehicleCard",components:{FontAwesomeIcon:x},mixins:[y],props:{vehicle:{type:Object,required:!1,default:void 0},vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}};function Ce(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-number-input"),_=o("openwb-base-text-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car"]}),p(" "+f(a.vehicleName)+" (ID: "+f(s.vehicleIndex)+") ",1)]),default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]!==void 0?(r(),l(m,{key:0,subtype:g.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):T("",!0),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Fahrzeugdaten")])),_:1}),n(u,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/soc"]},null,8,["model-value"]),n(u,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":s.socRange},null,8,["model-value"]),n(_,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":s.socTimestamp},null,8,["model-value"])]),_:1})}const qe=W(ke,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,q,V);H.register(Z,K,F,J,G,Q,U,X,Y);const Te={name:"ElectricityTariffCard",components:{ChartjsLine:ee,FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],t=[];for(const[g,s]of Object.entries(e))t.push({timestamp:g*1e3,price:s*1e5});const b=t.slice(-1)[0];t.push({timestamp:b.timestamp+(60*60-1)*1e3,price:b.price})}const a=this.chartDatasets;return a.datasets[0].data=t,a}}},Ie={class:"openwb-chart"};function Ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("chartjs-line"),_=o("openwb-base-card");return s.electricityTariffConfigured?(r(),l(_,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","ranking-star"]}),t[0]||(t[0]=p(" Variabler Stromtarif "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ie,[s.chartDataRead?(r(),l(u,{key:0,ref:"myChart",data:s.chartDataObject,options:g.chartOptions},null,8,["data","options"])):T("",!0)])]),_:1})):T("",!0)}const Pe=W(Te,[["render",Ne],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Le={name:"OpenwbStatusView",components:{ChargePointSumCard:oe,ChargePointCard:se,CounterCard:ue,InverterSumCard:ce,InverterCard:fe,BatterySumCard:he,BatteryCard:We,RippleControlReceiverCard:Be,VehicleCard:qe,ElectricityTariffCard:Pe},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),t={};for(const[a,b]of Object.entries(e))(b.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(t[a]=b);return t}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,t){return Object.keys(e).filter(a=>e[a].type.includes(t)).reduce((a,b)=>({...a,[b]:e[b]}),{})}}},Se={class:"status"};function $e(e,t,a,b,g,s){const i=o("charge-point-sum-card"),m=o("charge-point-card"),c=o("counter-card"),u=o("inverter-sum-card"),_=o("inverter-card"),B=o("battery-sum-card"),O=o("battery-card"),j=o("vehicle-card"),D=o("electricity-tariff-card"),R=o("ripple-control-receiver-card");return r(),I("div",Se,[s.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(i,{key:0})):T("",!0),(r(!0),I(P,null,L(s.installedChargePoints,(h,N)=>(r(),l(m,{key:N,"installed-charge-point":h,"installed-charge-point-key":N},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(r(!0),I(P,null,L(s.counterConfigs,h=>(r(),l(c,{key:h.id,counter:h},null,8,["counter"]))),128)),s.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(u,{key:1})):T("",!0),(r(!0),I(P,null,L(s.inverterConfigs,h=>(r(),l(_,{key:h.id,inverter:h},null,8,["inverter"]))),128)),s.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(B,{key:2})):T("",!0),(r(!0),I(P,null,L(s.batteryConfigs,h=>(r(),l(O,{key:h.id,battery:h},null,8,["battery"]))),128)),(r(!0),I(P,null,L(s.vehicleNames,(h,N)=>(r(),l(j,{key:N,"vehicle-key":N,"vehicle-name":h},null,8,["vehicle-key","vehicle-name"]))),128)),n(D),n(R)])}const He=W(Le,[["render",$e],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{He as default};
+import{C as y}from"./index-f9fda857.js";import{l as w,K as S,F as x,L as k,M as C,c as q,N as z,O as $,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-41164876.js";import{_ as W,u as o,k as r,A as l,N as d,D as n,y as p,z as f,x as v,B as T,l as I,J as P,K as L}from"./vendor-a21b3a62.js";import{C as H,p as Z,a as K,L as F,b as J,P as G,c as Q,T as U,i as X,d as Y,e as ee}from"./vendor-chartjs-5fa56b74.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";w.add(S);const te={name:"ChargePointSumCard",components:{FontAwesomeIcon:x},mixins:[y]};function ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-text-input"),c=o("openwb-base-heading"),u=o("openwb-base-card");return r(),l(u,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),t[0]||(t[0]=p(" Alle Ladepunkte "))]),default:d(()=>[n(m,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[1]||(t[1]=[p("Historie")])),_:1}),n(m,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const oe=W(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,q,S);const ae={name:"ChargePointCard",components:{FontAwesomeIcon:x},mixins:[y],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}};function re(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-checkbox-input"),u=o("openwb-base-text-input"),_=o("openwb-base-heading"),B=o("openwb-base-card");return r(),l(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),p(" "+f(a.installedChargePoint.name)+" (ID: "+f(s.chargePointIndex)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(m,{subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/state_str"]),1)]),_:1}),n(c,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),n(c,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),n(u,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/current",2)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[4]||(t[4]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[5]||(t[5]=[p("Phasen")])),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),l(u,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+s.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(r(),l(u,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),n(u,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const se=W(ae,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,q,z);const le={name:"CounterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{counter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ie(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-card");return r(),l(_,{subtype:"danger",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","gauge-high"]}),p(" "+f(a.counter.name)+" (ID: "+f(a.counter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]!=null?(r(),l(m,{key:0,subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]),1)]),_:1})):T("",!0),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Zählerstände")])),_:1}),n(u,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/frequency",3)},null,8,["model-value"]),n(c,null,{default:d(()=>t[6]||(t[6]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const ue=W(le,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,q,$);const pe={name:"InverterSumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function de(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),t[0]||(t[0]=p(" Alle Wechselrichter "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[3]||(t[3]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ce=W(pe,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,q,$);const me={name:"InverterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{inverter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ge(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),p(" "+f(a.inverter.name)+" (ID: "+f(a.inverter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[2]||(t[2]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const fe=W(me,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,q,A);const be={name:"BatterySumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function _e(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),t[0]||(t[0]=p(" Alle Speicher "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Tageswerte")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const he=W(be,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,q,A);const ve={name:"BatteryCard",components:{FontAwesomeIcon:x},mixins:[y],props:{battery:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ye(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),p(" "+f(a.battery.name)+" (ID: "+f(a.battery.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Aktuelle Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/soc"]},null,8,["model-value"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const We=W(ve,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,q,E);const we={name:"RippleControlReceiverCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}};function xe(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(r(),l(u,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{icon:["fas","tower-broadcast"]}),t[0]||(t[0]=p(" Steuerbare Verbrauchseinrichtung (RSE) "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):T("",!0)}const Be=W(we,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,q,M);const ke={name:"VehicleCard",components:{FontAwesomeIcon:x},mixins:[y],props:{vehicle:{type:Object,required:!1,default:void 0},vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}};function Ce(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-number-input"),_=o("openwb-base-text-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car"]}),p(" "+f(a.vehicleName)+" (ID: "+f(s.vehicleIndex)+") ",1)]),default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]!==void 0?(r(),l(m,{key:0,subtype:g.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):T("",!0),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Fahrzeugdaten")])),_:1}),n(u,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/soc"]},null,8,["model-value"]),n(u,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":s.socRange},null,8,["model-value"]),n(_,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":s.socTimestamp},null,8,["model-value"])]),_:1})}const qe=W(ke,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,q,V);H.register(Z,K,F,J,G,Q,U,X,Y);const Te={name:"ElectricityTariffCard",components:{ChartjsLine:ee,FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],t=[];for(const[g,s]of Object.entries(e))t.push({timestamp:g*1e3,price:s*1e5});const b=t.slice(-1)[0];t.push({timestamp:b.timestamp+(60*60-1)*1e3,price:b.price})}const a=this.chartDatasets;return a.datasets[0].data=t,a}}},Ie={class:"openwb-chart"};function Ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("chartjs-line"),_=o("openwb-base-card");return s.electricityTariffConfigured?(r(),l(_,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","ranking-star"]}),t[0]||(t[0]=p(" Variabler Stromtarif "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ie,[s.chartDataRead?(r(),l(u,{key:0,ref:"myChart",data:s.chartDataObject,options:g.chartOptions},null,8,["data","options"])):T("",!0)])]),_:1})):T("",!0)}const Pe=W(Te,[["render",Ne],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Le={name:"OpenwbStatusView",components:{ChargePointSumCard:oe,ChargePointCard:se,CounterCard:ue,InverterSumCard:ce,InverterCard:fe,BatterySumCard:he,BatteryCard:We,RippleControlReceiverCard:Be,VehicleCard:qe,ElectricityTariffCard:Pe},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),t={};for(const[a,b]of Object.entries(e))(b.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(t[a]=b);return t}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,t){return Object.keys(e).filter(a=>e[a].type.includes(t)).reduce((a,b)=>({...a,[b]:e[b]}),{})}}},Se={class:"status"};function $e(e,t,a,b,g,s){const i=o("charge-point-sum-card"),m=o("charge-point-card"),c=o("counter-card"),u=o("inverter-sum-card"),_=o("inverter-card"),B=o("battery-sum-card"),O=o("battery-card"),j=o("vehicle-card"),D=o("electricity-tariff-card"),R=o("ripple-control-receiver-card");return r(),I("div",Se,[s.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(i,{key:0})):T("",!0),(r(!0),I(P,null,L(s.installedChargePoints,(h,N)=>(r(),l(m,{key:N,"installed-charge-point":h,"installed-charge-point-key":N},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(r(!0),I(P,null,L(s.counterConfigs,h=>(r(),l(c,{key:h.id,counter:h},null,8,["counter"]))),128)),s.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(u,{key:1})):T("",!0),(r(!0),I(P,null,L(s.inverterConfigs,h=>(r(),l(_,{key:h.id,inverter:h},null,8,["inverter"]))),128)),s.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(B,{key:2})):T("",!0),(r(!0),I(P,null,L(s.batteryConfigs,h=>(r(),l(O,{key:h.id,battery:h},null,8,["battery"]))),128)),(r(!0),I(P,null,L(s.vehicleNames,(h,N)=>(r(),l(j,{key:N,"vehicle-key":N,"vehicle-name":h},null,8,["vehicle-key","vehicle-name"]))),128)),n(D),n(R)])}const He=W(Le,[["render",$e],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{He as default};
diff --git a/web/settings/assets/Support-9ecadb2d.js b/web/settings/assets/Support-a91e414e.js
similarity index 99%
rename from web/settings/assets/Support-9ecadb2d.js
rename to web/settings/assets/Support-a91e414e.js
index 9f60a51c74..4cba49b5b5 100644
--- a/web/settings/assets/Support-9ecadb2d.js
+++ b/web/settings/assets/Support-a91e414e.js
@@ -1,3 +1,3 @@
-import{l as D,g as V,F as W}from"./vendor-fortawesome-41164876.js";import{C as A}from"./index-dc0e711f.js";import{_ as C,u,k as f,l as c,x as r,A as k,N as s,D as o,a2 as F,B as w,y as n,q as z}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[A],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p}
+import{l as D,g as V,F as W}from"./vendor-fortawesome-41164876.js";import{C as A}from"./index-f9fda857.js";import{_ as C,u,k as f,l as c,x as r,A as k,N as s,D as o,a2 as F,B as w,y as n,q as z}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[A],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p}
 `}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const e=this.getWildcardTopics("openWB/vehicle/+/info");for(const[b,m]of Object.entries(e)){const t=parseInt(b.split("/")[2]);if(t!==0){const a=m.manufacturer||"N/A",d=m.model||"N/A";i+=`(${t}) Hersteller: ${a}, Modell: ${d}
 `}}return i.trim()}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},_={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T={class:"row justify-content-center"};function M(i,e,b,m,t,a){const d=u("router-link"),p=u("openwb-base-alert"),v=u("FontAwesomeIcon"),h=u("openwb-base-text-input"),g=u("openwb-base-textarea"),y=u("openwb-base-click-button"),B=u("openwb-base-card"),S=u("font-awesome-icon");return f(),c("div",_,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(f(),k(p,{key:0,subtype:"danger"},{default:s(()=>[e[6]||(e[6]=n(" Du musst der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[5]||(e[5]=[n(" Datenschutzerklärung ")])),_:1}),e[7]||(e[7]=n(" zustimmen, um einen Systembericht senden zu können. "))]),_:1})):(f(),c("div",I,[o(p,{subtype:"success"},{default:s(()=>[e[9]||(e[9]=n(" Du hast der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[8]||(e[8]=[n(" Datenschutzerklärung ")])),_:1}),e[10]||(e[10]=n(" zugestimmt und kannst Systemberichte senden. "))]),_:1}),o(B,{title:"Systembericht"},F({default:s(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(f(),c("div",N,[o(p,{subtype:"info"},{default:s(()=>[r("ul",null,[r("li",null,[e[11]||(e[11]=n(" Lies bitte den Hilfetext, der durch Klick auf das ")),o(v,{icon:["far","question-circle"]}),e[12]||(e[12]=n(" angezeigt wird. Nimm das Wiki zur Hilfe. "))]),e[13]||(e[13]=r("li",null,' Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist. ',-1)),e[14]||(e[14]=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1)),e[15]||(e[15]=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1)),e[16]||(e[16]=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1))])]),_:1}),o(h,{modelValue:t.email,"onUpdate:modelValue":e[0]||(e[0]=l=>t.email=l),title:"E-Mail",required:"",subtype:"email"},{help:s(()=>e[17]||(e[17]=[n(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")])),_:1},8,["modelValue"]),o(h,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:s(()=>e[18]||(e[18]=[n(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),r("br",null,null,-1),n(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")])),_:1},8,["model-value"]),o(g,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":a.installedComponents,"onUpdate:modelValue":e[2]||(e[2]=l=>t.components=l)},{help:s(()=>[e[20]||(e[20]=n(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind.")),e[21]||(e[21]=r("br",null,null,-1)),o(d,{to:"/HardwareInstallation"},{default:s(()=>e[19]||(e[19]=[n(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":a.vehicleInfo,"onUpdate:modelValue":e[3]||(e[3]=l=>t.vehicles=l)},{help:s(()=>[e[23]||(e[23]=n(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr).")),e[24]||(e[24]=r("br",null,null,-1)),o(d,{to:"/VehicleConfiguration"},{default:s(()=>e[22]||(e[22]=[n(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{modelValue:t.message,"onUpdate:modelValue":e[4]||(e[4]=l=>t.message=l),title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500"},null,8,["modelValue"])])):w("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[r("div",T,[o(y,{class:z(["col-4",t.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!t.enableSendDebugButton,onButtonClicked:a.sendDebugMessage},{default:s(()=>e[25]||(e[25]=[n(" Absenden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),t.enableSendDebugButton?w("",!0):(f(),k(p,{key:0,subtype:"success"},{default:s(()=>[e[26]||(e[26]=n(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. ")),o(S,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const G=C(x,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{G as default};
diff --git a/web/settings/assets/System-8e218ae4.js b/web/settings/assets/System-aff61250.js
similarity index 98%
rename from web/settings/assets/System-8e218ae4.js
rename to web/settings/assets/System-aff61250.js
index 5ee2703983..6643fc74d8 100644
--- a/web/settings/assets/System-8e218ae4.js
+++ b/web/settings/assets/System-aff61250.js
@@ -1 +1 @@
-import{l as W,ae as A,p as q,a3 as C,U as S,af as z,F as U}from"./vendor-fortawesome-41164876.js";import{C as x}from"./index-dc0e711f.js";import{_ as E,u as b,k as c,l as h,A as _,N as a,B as w,x as r,D as t,y as i,q as B,J as $,K as F,z as j}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";W.add(A,q,C,S,z);const D={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[x],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getBranchGroups(){const n="Release",e="Beta",u="master",v=[n,e],p=(l,d)=>l.value==d.value?0:l.value==n?-1:d.value==n?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var m=0;for(const[l,d]of Object.entries(o))v.includes(l)?m=0:l==u?m=1:m=2,f[m].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(p),f[1].options.sort(p)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var n=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(n!==void 0)for(const[u,v]of Object.entries(n))e.unshift({value:u,text:v});return e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},T={class:"system"},L={key:1},N={name:"versionInfoForm"},R={class:"missing-commits"},Z={class:"row justify-content-center"},I={class:"col-md-4 d-flex py-1 justify-content-center"},O={class:"col-md-4 d-flex py-1 justify-content-center"},P={key:0,name:"powerForm"},G={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={key:1,name:"releaseChangeForm"},M={class:"row justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"};function X(n,e,u,v,p,o){const f=b("openwb-base-button-group-input"),m=b("openwb-base-alert"),l=b("openwb-base-text-input"),d=b("openwb-base-card"),g=b("font-awesome-icon"),y=b("openwb-base-click-button"),k=b("openwb-base-select-input");return c(),h("div",T,[u.installAssistantActive?w("",!0):(c(),_(m,{key:0,subtype:"danger"},{default:a(()=>[e[12]||(e[12]=r("h2",null,"Achtung!",-1)),e[13]||(e[13]=r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=s=>p.warningAcknowledged=s),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),h("div",L,[r("form",N,[t(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",Z,[r("div",I,[t(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=s=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[e[16]||(e[16]=i(" Informationen aktualisieren ")),t(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",O,[t(y,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=s=>o.systemUpdate())},{default:a(()=>[e[17]||(e[17]=i(" Update ")),t(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=s=>n.$store.state.mqtt["openWB/system/current_branch"]=s),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=s=>n.$store.state.mqtt["openWB/system/version"]=s),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=s=>n.$store.state.mqtt["openWB/system/current_commit"]=s),title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=s=>n.$store.state.mqtt["openWB/system/current_branch_commit"]=s),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),o.updateAvailable?(c(),_(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",R,[(c(!0),h($,null,F(n.$store.state.mqtt["openWB/system/current_missing_commits"],(s,V)=>(c(),h("li",{key:V},j(s),1))),128))])]),_:1})):w("",!0),t(m,{subtype:"danger"},{default:a(()=>e[14]||(e[14]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),n.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),_(m,{key:1,subtype:"danger"},{default:a(()=>e[15]||(e[15]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),r("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(c(),h("form",P,[t(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",G,[r("div",J,[t(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=s=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[e[19]||(e[19]=i(" Neustart ")),t(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",H,[t(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=s=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[e[20]||(e[20]=i(" Ausschalten ")),t(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[18]||(e[18]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(c(),h("form",K,[t(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",M,[r("div",Q,[t(y,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=s=>o.switchBranch())},{default:a(()=>[t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[23]||(e[23]=i(" Branch und Tag wechseln ")),t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[21]||(e[21]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),t(m,{subtype:"warning"},{default:a(()=>e[22]||(e[22]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),r("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),r("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),r("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),r("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),t(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=s=>n.updateState("openWB/system/current_branch",s))},null,8,["groups","model-value"]),t(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=s=>p.selectedTag=s),title:"Tag",options:o.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):w("",!0)])}const oe=E(D,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{oe as default};
+import{l as W,ae as A,p as q,a3 as C,U as S,af as z,F as U}from"./vendor-fortawesome-41164876.js";import{C as x}from"./index-f9fda857.js";import{_ as E,u as b,k as c,l as h,A as _,N as a,B as w,x as r,D as t,y as i,q as B,J as $,K as F,z as j}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";W.add(A,q,C,S,z);const D={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[x],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getBranchGroups(){const n="Release",e="Beta",u="master",v=[n,e],p=(l,d)=>l.value==d.value?0:l.value==n?-1:d.value==n?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var m=0;for(const[l,d]of Object.entries(o))v.includes(l)?m=0:l==u?m=1:m=2,f[m].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(p),f[1].options.sort(p)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var n=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(n!==void 0)for(const[u,v]of Object.entries(n))e.unshift({value:u,text:v});return e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},T={class:"system"},L={key:1},N={name:"versionInfoForm"},R={class:"missing-commits"},Z={class:"row justify-content-center"},I={class:"col-md-4 d-flex py-1 justify-content-center"},O={class:"col-md-4 d-flex py-1 justify-content-center"},P={key:0,name:"powerForm"},G={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={key:1,name:"releaseChangeForm"},M={class:"row justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"};function X(n,e,u,v,p,o){const f=b("openwb-base-button-group-input"),m=b("openwb-base-alert"),l=b("openwb-base-text-input"),d=b("openwb-base-card"),g=b("font-awesome-icon"),y=b("openwb-base-click-button"),k=b("openwb-base-select-input");return c(),h("div",T,[u.installAssistantActive?w("",!0):(c(),_(m,{key:0,subtype:"danger"},{default:a(()=>[e[12]||(e[12]=r("h2",null,"Achtung!",-1)),e[13]||(e[13]=r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=s=>p.warningAcknowledged=s),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),h("div",L,[r("form",N,[t(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",Z,[r("div",I,[t(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=s=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[e[16]||(e[16]=i(" Informationen aktualisieren ")),t(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",O,[t(y,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=s=>o.systemUpdate())},{default:a(()=>[e[17]||(e[17]=i(" Update ")),t(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=s=>n.$store.state.mqtt["openWB/system/current_branch"]=s),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=s=>n.$store.state.mqtt["openWB/system/version"]=s),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=s=>n.$store.state.mqtt["openWB/system/current_commit"]=s),title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=s=>n.$store.state.mqtt["openWB/system/current_branch_commit"]=s),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),o.updateAvailable?(c(),_(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",R,[(c(!0),h($,null,F(n.$store.state.mqtt["openWB/system/current_missing_commits"],(s,V)=>(c(),h("li",{key:V},j(s),1))),128))])]),_:1})):w("",!0),t(m,{subtype:"danger"},{default:a(()=>e[14]||(e[14]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),n.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),_(m,{key:1,subtype:"danger"},{default:a(()=>e[15]||(e[15]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),r("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(c(),h("form",P,[t(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",G,[r("div",J,[t(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=s=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[e[19]||(e[19]=i(" Neustart ")),t(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",H,[t(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=s=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[e[20]||(e[20]=i(" Ausschalten ")),t(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[18]||(e[18]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(c(),h("form",K,[t(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",M,[r("div",Q,[t(y,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=s=>o.switchBranch())},{default:a(()=>[t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[23]||(e[23]=i(" Branch und Tag wechseln ")),t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[21]||(e[21]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),t(m,{subtype:"warning"},{default:a(()=>e[22]||(e[22]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),r("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),r("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),r("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),r("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),t(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=s=>n.updateState("openWB/system/current_branch",s))},null,8,["groups","model-value"]),t(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=s=>p.selectedTag=s),title:"Tag",options:o.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):w("",!0)])}const oe=E(D,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{oe as default};
diff --git a/web/settings/assets/TestingStore-ffe2c569.js b/web/settings/assets/TestingStore-c3e1bdb5.js
similarity index 99%
rename from web/settings/assets/TestingStore-ffe2c569.js
rename to web/settings/assets/TestingStore-c3e1bdb5.js
index 1490611c25..7845b157b7 100644
--- a/web/settings/assets/TestingStore-ffe2c569.js
+++ b/web/settings/assets/TestingStore-c3e1bdb5.js
@@ -1 +1 @@
-import{C as U}from"./index-dc0e711f.js";import{S as y}from"./OpenwbSortableList-3ce7f991.js";import{_ as E,u as s,k,l as T,x as u,D as a,N as n,y as o,z as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const z={name:"OpenwbTestingStoreView",components:{SortableList:y},mixins:[U],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},N={class:"testingStore"},O={name:"testingStoreForm"};function Z(t,e,j,D,B,J){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),d=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),w=s("openwb-base-array-input"),x=s("openwb-base-heading"),r=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return k(),T("div",N,[u("form",O,[a(i,{title:"Einfache Eingabefelder"},{default:n(()=>[a(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("text1",l))},{help:n(()=>e[26]||(e[26]=[o(" Einfacher Text ")])),_:1},8,["model-value"]),a(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text2",l))},{help:n(()=>e[27]||(e[27]=[o(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),a(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text3",l))},{help:n(()=>e[28]||(e[28]=[o(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),a(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text4",l))},{help:n(()=>e[29]||(e[29]=[o(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),a(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text5",l))},{help:n(()=>e[30]||(e[30]=[o(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),a(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text6",l))},{help:n(()=>e[31]||(e[31]=[o(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),a(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text7",l))},{help:n(()=>e[32]||(e[32]=[o(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[38]||(e[38]=u("hr",null,null,-1)),a(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("number1",l))},{help:n(()=>e[33]||(e[33]=[o(" Zahl mit Einheit ")])),_:1},8,["model-value"]),a(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number2",l))},{help:n(()=>e[34]||(e[34]=[o(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),a(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[35]||(e[35]=[o(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),u("br",null,null,-1),o(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),u("br",null,null,-1),o(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),a(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("password1",l))},{help:n(()=>e[36]||(e[36]=[o(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[39]||(e[39]=u("hr",null,null,-1)),a(f,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("textarea1",l))},{help:n(()=>e[37]||(e[37]=[o(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"Spezielle Elemente"},{default:n(()=>[a(d,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("range1",l))},{help:n(()=>e[40]||(e[40]=[o(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),a(d,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range2",l))},{help:n(()=>e[41]||(e[41]=[o(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[46]||(e[46]=u("hr",null,null,-1)),a(b,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("select1",l))},{help:n(()=>e[42]||(e[42]=[o(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),a(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select2",l))},{help:n(()=>e[43]||(e[43]=[o(" Select mit Gruppen ")])),_:1},8,["model-value"]),e[47]||(e[47]=u("hr",null,null,-1)),a(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[44]||(e[44]=[o(" Hilfetext ")])),_:1},8,["model-value"]),e[48]||(e[48]=u("hr",null,null,-1)),a(S,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[17]||(e[17]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[45]||(e[45]=[o(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"JSON Gruppe"},{default:n(()=>[a(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("json1",l))},{help:n(()=>e[49]||(e[49]=[o(" JSON Objekt ")])),_:1},8,["model-value"]),a(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[50]||(e[50]=[o(" Text im JSON Objekt ")])),_:1},8,["model-value"]),a(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[51]||(e[51]=[o(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),a(w,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("tags",l))},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),a(i,{title:"Meldungen"},{header:n(()=>e[52]||(e[52]=[u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[o(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),o(" Slot ")],-1)])),default:n(()=>[a(x,null,{help:n(()=>e[53]||(e[53]=[o(" Es sind auch Hilfetexte im #help Slot möglich. ")])),default:n(()=>[e[54]||(e[54]=o(" Das ist eine Überschrift "))]),_:1}),a(r,null,{default:n(()=>e[55]||(e[55]=[o(" Meldung ohne speziellen Subtype. ")])),_:1}),a(r,{subtype:"info"},{default:n(()=>e[56]||(e[56]=[o(" Infomeldung ")])),_:1}),a(r,{subtype:"warning"},{default:n(()=>e[57]||(e[57]=[o(" Warnmeldung ")])),_:1}),a(r,{subtype:"danger"},{default:n(()=>e[58]||(e[58]=[o(" Fehlermeldung ")])),_:1})]),_:1}),a(i,{title:"Listen"},{default:n(()=>[a($,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[22]||(e[22]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),a(V,{"form-name":"testingStoreForm",onSave:e[23]||(e[23]=l=>t.$emit("save")),onReset:e[24]||(e[24]=l=>t.$emit("reset")),onDefaults:e[25]||(e[25]=l=>t.$emit("defaults"))})])])}const M=E(z,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{M as default};
+import{C as U}from"./index-f9fda857.js";import{S as y}from"./OpenwbSortableList-3ce7f991.js";import{_ as E,u as s,k,l as T,x as u,D as a,N as n,y as o,z as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const z={name:"OpenwbTestingStoreView",components:{SortableList:y},mixins:[U],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},N={class:"testingStore"},O={name:"testingStoreForm"};function Z(t,e,j,D,B,J){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),d=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),w=s("openwb-base-array-input"),x=s("openwb-base-heading"),r=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return k(),T("div",N,[u("form",O,[a(i,{title:"Einfache Eingabefelder"},{default:n(()=>[a(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("text1",l))},{help:n(()=>e[26]||(e[26]=[o(" Einfacher Text ")])),_:1},8,["model-value"]),a(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text2",l))},{help:n(()=>e[27]||(e[27]=[o(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),a(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text3",l))},{help:n(()=>e[28]||(e[28]=[o(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),a(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text4",l))},{help:n(()=>e[29]||(e[29]=[o(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),a(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text5",l))},{help:n(()=>e[30]||(e[30]=[o(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),a(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text6",l))},{help:n(()=>e[31]||(e[31]=[o(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),a(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text7",l))},{help:n(()=>e[32]||(e[32]=[o(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[38]||(e[38]=u("hr",null,null,-1)),a(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("number1",l))},{help:n(()=>e[33]||(e[33]=[o(" Zahl mit Einheit ")])),_:1},8,["model-value"]),a(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number2",l))},{help:n(()=>e[34]||(e[34]=[o(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),a(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[35]||(e[35]=[o(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),u("br",null,null,-1),o(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),u("br",null,null,-1),o(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),a(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("password1",l))},{help:n(()=>e[36]||(e[36]=[o(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[39]||(e[39]=u("hr",null,null,-1)),a(f,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("textarea1",l))},{help:n(()=>e[37]||(e[37]=[o(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"Spezielle Elemente"},{default:n(()=>[a(d,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("range1",l))},{help:n(()=>e[40]||(e[40]=[o(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),a(d,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range2",l))},{help:n(()=>e[41]||(e[41]=[o(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[46]||(e[46]=u("hr",null,null,-1)),a(b,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("select1",l))},{help:n(()=>e[42]||(e[42]=[o(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),a(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select2",l))},{help:n(()=>e[43]||(e[43]=[o(" Select mit Gruppen ")])),_:1},8,["model-value"]),e[47]||(e[47]=u("hr",null,null,-1)),a(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[44]||(e[44]=[o(" Hilfetext ")])),_:1},8,["model-value"]),e[48]||(e[48]=u("hr",null,null,-1)),a(S,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[17]||(e[17]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[45]||(e[45]=[o(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"JSON Gruppe"},{default:n(()=>[a(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("json1",l))},{help:n(()=>e[49]||(e[49]=[o(" JSON Objekt ")])),_:1},8,["model-value"]),a(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[50]||(e[50]=[o(" Text im JSON Objekt ")])),_:1},8,["model-value"]),a(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[51]||(e[51]=[o(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),a(w,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("tags",l))},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),a(i,{title:"Meldungen"},{header:n(()=>e[52]||(e[52]=[u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[o(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),o(" Slot ")],-1)])),default:n(()=>[a(x,null,{help:n(()=>e[53]||(e[53]=[o(" Es sind auch Hilfetexte im #help Slot möglich. ")])),default:n(()=>[e[54]||(e[54]=o(" Das ist eine Überschrift "))]),_:1}),a(r,null,{default:n(()=>e[55]||(e[55]=[o(" Meldung ohne speziellen Subtype. ")])),_:1}),a(r,{subtype:"info"},{default:n(()=>e[56]||(e[56]=[o(" Infomeldung ")])),_:1}),a(r,{subtype:"warning"},{default:n(()=>e[57]||(e[57]=[o(" Warnmeldung ")])),_:1}),a(r,{subtype:"danger"},{default:n(()=>e[58]||(e[58]=[o(" Fehlermeldung ")])),_:1})]),_:1}),a(i,{title:"Listen"},{default:n(()=>[a($,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[22]||(e[22]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),a(V,{"form-name":"testingStoreForm",onSave:e[23]||(e[23]=l=>t.$emit("save")),onReset:e[24]||(e[24]=l=>t.$emit("reset")),onDefaults:e[25]||(e[25]=l=>t.$emit("defaults"))})])])}const M=E(z,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{M as default};
diff --git a/web/settings/assets/TimeChargeConfig-7cd7d455.js b/web/settings/assets/TimeChargeConfig-9d481afa.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-7cd7d455.js
rename to web/settings/assets/TimeChargeConfig-9d481afa.js
index be4a4b1a16..f942e4c9b5 100644
--- a/web/settings/assets/TimeChargeConfig-7cd7d455.js
+++ b/web/settings/assets/TimeChargeConfig-9d481afa.js
@@ -1 +1 @@
-import{C as l}from"./index-dc0e711f.js";import{_ as b,u as o,k as i,l as a,x as _,D as s,N as r,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-f9fda857.js";import{_ as b,u as o,k as i,l as a,x as _,D as s,N as r,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-0ab604e8.js b/web/settings/assets/VehicleConfig-0ab604e8.js
deleted file mode 100644
index 291c4935d5..0000000000
--- a/web/settings/assets/VehicleConfig-0ab604e8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as H,d as j,a0 as J,A as G,a9 as Q,aa as X,z as Y,P as K,ac as ee,R as te,ab as ne,ad as ae,F as le,I as ie}from"./vendor-fortawesome-41164876.js";import{_ as k,C as oe}from"./index-dc0e711f.js";import{_ as re}from"./dynamic-import-helper-be004503.js";import{_ as q,u as V,k as d,l as g,A as p,N as l,y as i,z as C,D as a,x as h,a0 as de,a1 as ue,J as P,B as s,K as E,a2 as F,q as x,P as N}from"./vendor-a21b3a62.js";const se={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},O=q(se,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[O]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,v,B,f,m){const W=V("openwb-base-alert"),b=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(b,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=q(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",mixins:[O],computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),de({loader:()=>re(Object.assign({"./bmw/vehicle.vue":()=>k(()=>import("./vehicle-7adb9a7c.js"),["assets/vehicle-7adb9a7c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-28a9dcf3.js"),["assets/vehicle-28a9dcf3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-039c8759.js"),["assets/vehicle-039c8759.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-f050a85d.js"),["assets/vehicle-f050a85d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-b9845ca5.js"),["assets/vehicle-b9845ca5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-bedc772a.js"),["assets/vehicle-bedc772a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-47ed0a84.js"),["assets/vehicle-47ed0a84.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-0bc01aa8.js"),["assets/vehicle-0bc01aa8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-03c9aa3d.js"),["assets/vehicle-03c9aa3d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-7bb9b768.js"),["assets/vehicle-7bb9b768.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-5b8d1dc8.js"),["assets/vehicle-5b8d1dc8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-7f7d2e44.js"),["assets/vehicle-7f7d2e44.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-19e3adb9.js"),["assets/vehicle-19e3adb9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarteq/vehicle.vue":()=>k(()=>import("./vehicle-0babcb51.js"),["assets/vehicle-0babcb51.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-7f1d1c67.js"),["assets/vehicle-7f1d1c67.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-42f1ed52.js"),["assets/vehicle-42f1ed52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-axios-0e6de98a.js","assets/index-dc0e711f.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-9ce6bac4.js"),["assets/vehicle-9ce6bac4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-85478721.js"),["assets/vehicle-85478721.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-dc0e711f.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})}}};function ve(t,e,v,B,f,m){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(t.vehicle.name)+'" ',1)]),_:1}),(d(),p(ue(m.myComponent),{"vehicle-id":t.vehicleId,vehicle:t.vehicle,"onUpdate:configuration":e[0]||(e[0]=b=>t.updateConfiguration(b))},null,40,["vehicle-id","vehicle"]))],64)}const fe=q(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);H.add(j,J,G,Q,X,Y,K,ee,te,ne,ae);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:le,FontAwesomeLayers:ie,OpenwbVehicleProxy:fe},mixins:[oe],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let v=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+v].name;t.push({value:v,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let v=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+v].name;t.push({value:v,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&(console.info("request removal of vehicle '"+t+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}}))},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(v=>v.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&(console.info("request removal of ev template '"+t+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}}))},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&(console.info("request removal of charge template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}}))},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation(),console.info("requesting new charge template schedule plan...");let v=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:v}})},removeChargeTemplateSchedulePlanModal(t,e,v){v.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,v){this.showChargeTemplateSchedulePlanModal=!1,v=="confirm"&&(console.info("request removal of charge template '"+t+"' schedule plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}}))},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation(),console.info("requesting new charge template time charging plan...");let v=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:v}})},removeChargeTemplateTimeChargingPlanModal(t,e,v){v.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,v){this.showChargeTemplateTimeChargingPlanModal=!1,v=="confirm"&&(console.info("request removal of charge template '"+t+"' time charging plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}}))}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},Ae={key:0},ye={key:0},Ee={key:3},Be={key:0},Fe={key:1},qe={key:0},Me={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Re={key:3},Ie={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:5};function et(t,e,v,B,f,m){const W=V("openwb-base-modal-dialog"),b=V("font-awesome-icon"),T=V("openwb-base-avatar"),y=V("openwb-base-alert"),z=V("openwb-base-text-input"),M=V("openwb-base-select-input"),R=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),A=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),$=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>m.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(m.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>m.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(m.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>m.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(m.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>m.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(m.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[4]||(e[4]=o=>m.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zeitladen Zeitplan "'+C(m.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",we,[h("form",ke,[a(A,{subtype:"info",collapsible:!0,collapsed:t.$route.params.section!="vehicle"},{header:l(()=>[a(b,{"fixed-width":"",icon:["fas","car"]}),e[8]||(e[8]=i(" Fahrzeuge "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:m.addVehicle},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Ve,[a(y,{subtype:"info"},{default:l(()=>e[9]||(e[9]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Ce,[(d(!0),g(P,null,E(m.vehicleIndexes,o=>(d(),p(A,{key:o,title:m.getVehicleName(o),collapsible:!0,collapsed:!(t.$route.params.section=="vehicle"&&parseInt(t.$route.params.section_index)==o),subtype:"info"},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/name"],disabled:o===0,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/name",r)},F({_:2},[o===0?{name:"help",fn:l(()=>[e[10]||(e[10]=i(" Das Standard-Fahrzeug kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),o!==0?(d(),p(z,{key:0,title:"Fahrzeughersteller ","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].manufacturer,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"manufacturer")},{help:l(()=>[...e[11]||(e[11]=[i(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),o!==0?(d(),p(z,{key:1,title:"Fahrzeugmodell","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].model,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"model")},{help:l(()=>[...e[12]||(e[12]=[i(" Optional: zusätzliche Information für den Systembericht."),h("br",null,null,-1),i(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),a(y,{subtype:"info"},{default:l(()=>[...e[13]||(e[13]=[i(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])]),_:1}),a(M,{title:"Fahrzeug-Profil",options:m.evTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/ev_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/ev_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),a(M,{title:"Lade-Profil",options:m.chargeTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/charge_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/charge_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),e[24]||(e[24]=h("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!v.installAssistantActive?(d(),g("div",Se,[a(R,{title:"Zugeordnete ID-Tags","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/tag_id"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/tag_id",r)},null,8,["model-value","onUpdate:modelValue"]),a(y,{subtype:"info"},{default:l(()=>[e[14]||(e[14]=i(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung.")),e[15]||(e[15]=h("br",null,null,-1)),h("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,ze)]),_:1}),e[16]||(e[16]=h("hr",null,null,-1))])):s("",!0),a(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:m.socModuleList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type,"onUpdate:modelValue":r=>m.updateSelectedSocModule(o,r)},{help:l(()=>[...e[17]||(e[17]=[i(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),h("br",null,null,-1),i(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),h("br",null,null,-1),i(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),h("br",null,null,-1),i(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type?(d(),g("div",Ue,[a(_,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"use_soc_from_cp")},{help:l(()=>[...e[18]||(e[18]=[i(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{help:l(()=>[...e[19]||(e[19]=[i(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")])]),default:l(()=>[e[20]||(e[20]=i(" Aktualisierung der Fahrzeugdaten "))]),_:1}),a(w,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_charging")},{help:l(()=>[...e[21]||(e[21]=[i(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_not_charging")},{help:l(()=>[...e[22]||(e[22]=[i(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"request_only_plugged")},{help:l(()=>[...e[23]||(e[23]=[i(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(I,{"vehicle-id":o,vehicle:t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"],"onUpdate:configuration":r=>m.updateConfiguration("openWB/vehicle/"+o+"/soc_module/config",r)},null,8,["vehicle-id","vehicle","onUpdate:configuration"])])):s("",!0)]),_:2},[o!==0?{name:"actions",fn:l(r=>[r.collapsed?s("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:n=>m.removeVehicleModal(o,n)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),e[81]||(e[81]=h("hr",{class:"border-secondary"},null,-1)),a(L,null,{default:l(()=>e[25]||(e[25]=[i("Profile")])),_:1}),a(A,{collapsible:!0,collapsed:!0},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),e[26]||(e[26]=i(" Fahrzeug-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:m.addEvTemplate},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Te,[a(y,{subtype:"info"},{default:l(()=>e[27]||(e[27]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",We,[a(y,{subtype:"info"},{default:l(()=>e[28]||(e[28]=[i(" Ein anderes Fahrzeug-Profil wird erst "),h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1),i(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])),_:1}),(d(!0),g(P,null,E(m.evTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!0},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[29]||(e[29]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[30]||(e[30]=[i(" Angaben zur Batterie ")])]),_:1}),a(w,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":o.battery_capacity/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"battery_capacity")},{help:l(()=>[...e[31]||(e[31]=[i(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),v.installAssistantActive?s("",!0):(d(),g("div",Le,[a(w,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":o.efficiency,"onUpdate:modelValue":n=>t.updateState(r,n,"efficiency")},{help:l(()=>[...e[32]||(e[32]=[i(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),h("br",null,null,-1),i(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),h("br",null,null,-1),i(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),h("br",null,null,-1),i(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),h("br",null,null,-1)])]),_:2},1032,["model-value","onUpdate:modelValue"])])),a(w,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":o.average_consump/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),g("div",Pe,[a(L,null,{default:l(()=>[...e[33]||(e[33]=[i(" Angaben zur Ladeleistung (DC) ")])]),_:1}),a(w,{title:"Mindestleistung",min:5,unit:"kW","model-value":t.ac_current2dc_power(o.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Maximalleistung",unit:"kW","model-value":t.ac_current2dc_power(o.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):s("",!0),a(L,null,{default:l(()=>[e[34]||(e[34]=i(" Angaben zum Ladestrom ")),m.dcChargingEnabled===!0?(d(),g("span",Ae," (AC) ")):s("",!0)]),_:1}),a(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":o.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":o.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":o.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":o.nominal_difference,"onUpdate:modelValue":n=>t.updateState(r,n,"nominal_difference")},{help:l(()=>[...e[35]||(e[35]=[i(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:l(()=>[e[36]||(e[36]=i(" Angaben zur Handhabung von Phasen ")),m.dcChargingEnabled===!0?(d(),g("span",ye," (AC) ")):s("",!0)]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":o.max_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_phases")},{help:l(()=>[...e[37]||(e[37]=[i(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.control_pilot_interruption,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption")},{help:l(()=>[...e[38]||(e[38]=[i(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o.control_pilot_interruption?(d(),p(w,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":o.control_pilot_interruption_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_phase_switch,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_phase_switch")},{help:l(()=>[...e[39]||(e[39]=[i(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_charge_stop,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_charge_stop")},{help:l(()=>[...e[40]||(e[40]=[i(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":o.phase_switch_pause,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),v.installAssistantActive?s("",!0):(d(),g("div",Ee,[a(w,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":o.keep_charge_active_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"keep_charge_active_duration")},{help:l(()=>[...e[41]||(e[41]=[i(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[t.$store.state.mqtt["openWB/general/extern"]===!1&&!n.collapsed?(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>m.removeEvTemplateModal(r,c)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(A,{collapsible:!0,collapsed:t.$route.params.section!="charge_template"},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(b,{"fixed-width":"",icon:["far","file"]}),a(b,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),e[42]||(e[42]=i(" Lade-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:m.addChargeTemplate},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):s("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Be,[a(y,{subtype:"info"},{default:l(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Fe,[(d(!0),g(P,null,E(m.chargeTemplates,(o,r)=>(d(),p(A,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!(t.$route.params.section=="charge_template"&&parseInt(t.$route.params.section_index)==m.getChargeTemplateIndex(r))},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[44]||(e[44]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[45]||(e[45]=[i(" Allgemeine Optionen ")])]),_:1}),a(_,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":o.chargemode.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.selected")},{help:l(()=>[...e[46]||(e[46]=[i(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),h("br",null,null,-1),i(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),h("br",null,null,-1),h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)])]),_:2},1032,["model-value","onUpdate:modelValue"]),v.installAssistantActive?s("",!0):(d(),g("div",qe,[a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.prio,"onUpdate:modelValue":n=>t.updateState(r,n,"prio")},{help:l(()=>[...e[47]||(e[47]=[i(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.time_charging.active,"onUpdate:modelValue":n=>t.updateState(r,n,"time_charging.active")},{help:l(()=>[...e[48]||(e[48]=[i(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.load_default,"onUpdate:modelValue":n=>t.updateState(r,n,"load_default")},{help:l(()=>[...e[49]||(e[49]=[i(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.et.active,"onUpdate:modelValue":n=>t.updateState(r,n,"et.active")},null,8,["model-value","onUpdate:modelValue"]),o.et.active==!0?(d(),g("div",Me,[!t.$store.state.mqtt["openWB/optional/et/provider"]||!t.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),g("div",De,[a(y,{subtype:"danger"},{default:l(()=>[...e[50]||(e[50]=[i(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")])]),_:1})])):s("",!0),a(w,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":o.et.max_price*1e5,"onUpdate:modelValue":n=>t.updateState(r,parseFloat((n/1e5).toFixed(7)),"et.max_price")},{help:l(()=>[...e[51]||(e[51]=[i(" Für Zielladen werden die günstigsten Stunden ermittelt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):s("",!0),e[52]||(e[52]=h("hr",null,null,-1))])),a(L,null,{default:l(()=>[...e[53]||(e[53]=[i("Sofortladen")])]),_:1}),a(S,{title:"Soll-Ladestrom"+(m.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.instant_charging.current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),p(w,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.instant_charging.dc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":o.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.selected")},{help:l(()=>[...e[54]||(e[54]=[i(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":o.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.soc")},{help:l(()=>[...e[55]||(e[55]=[i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":o.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"chargemode.instant_charging.limit.amount")},{help:l(()=>[...e[56]||(e[56]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[79]||(e[79]=h("hr",null,null,-1)),a(L,null,{default:l(()=>[...e[57]||(e[57]=[i("PV-Laden")])]),_:1}),a(S,{title:"Minimaler Dauerstrom"+(m.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":o.chargemode.pv_charging.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_current")},{help:l(()=>[...e[58]||(e[58]=[i(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),p(w,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_current")},{help:l(()=>[...e[59]||(e[59]=[i(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),a(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":o.chargemode.pv_charging.max_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.max_soc")},{help:l(()=>[...e[60]||(e[60]=[i(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":o.chargemode.pv_charging.min_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc")},{help:l(()=>[...e[61]||(e[61]=[i(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC-Strom"+(m.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc_current")},{help:l(()=>[...e[62]||(e[62]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),p(w,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_soc_current")},{help:l(()=>[...e[63]||(e[63]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.feed_in_limit")},{help:l(()=>[...e[64]||(e[64]=[i(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[80]||(e[80]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>m.addChargeTemplateSchedulePlan(r,n)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[65]||(e[65]=[i(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),h("br",null,null,-1),i(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),h("br",null,null,-1),i(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")])]),default:l(()=>[e[66]||(e[66]=i(" Zielladen "))]),_:2},1024),(d(!0),g(P,null,E(m.getChargeTemplateScheduledChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",xe,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc_scheduled)+"% ",1)])):s("",!0),n.limit.selected=="amount"?(d(),g("span",Ne,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):s("",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time)+" ",1),n.frequency.selected=="once"?(d(),g("span",Oe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once)),1)])):s("",!0),n.frequency.selected=="daily"?(d(),g("span",Re,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ie,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("",!0)],10,Ze)):s("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>m.removeChargeTemplateSchedulePlanModal(r,c,U)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Ziel-Uhrzeit",subtype:"time","model-value":n.time,"onUpdate:modelValue":u=>t.updateState(c,u,"time")},{help:l(()=>[...e[67]||(e[67]=[i(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(m.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},{help:l(()=>[...e[68]||(e[68]=[i(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[69]||(e[69]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_scheduled,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_scheduled")},{help:l(()=>[...e[70]||(e[70]=[i(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),n.limit.selected=="soc"?(d(),p(S,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_limit,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_limit")},{help:l(()=>[...e[71]||(e[71]=[i(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),n.limit.selected=="amount"?(d(),p(w,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[72]||(e[72]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Datum",subtype:"date","model-value":n.frequency.once,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),n.frequency.selected=="weekly"?(d(),g("div",$e,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("",!0)]),_:2},1032,["title"]))),128)),v.installAssistantActive?s("",!0):(d(),g("div",He,[e[75]||(e[75]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>m.addChargeTemplateTimeChargingPlan(r,n)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[73]||(e[73]=[i(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")])]),default:l(()=>[e[74]||(e[74]=i(" Laden nach Zeitplan "))]),_:2},1024)])),(d(!0),g(P,null,E(m.getChargeTemplateTimeChargingPlans(r),(n,c)=>(d(),p(A,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",Je,[a(b,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc)+"% ",1)])):s("",!0),n.limit.selected=="amount"?(d(),g("span",Ge,[a(b,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):s("",!0),a(b,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time[0])+" - "+C(n.time[1])+" ",1),n.frequency.selected=="once"?(d(),g("span",Qe,[a(b,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):s("",!0),n.frequency.selected=="daily"?(d(),g("span",Xe,[a(b,{"fixed-width":"",icon:["fas","calendar-week"]})])):s("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ye,[a(b,{"fixed-width":"",icon:["fas","calendar-alt"]})])):s("",!0)],10,je)):s("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>m.removeChargeTemplateTimeChargingPlanModal(r,c,U)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):s("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(m.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),m.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[76]||(e[76]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc")},{help:l(()=>[...e[77]||(e[77]=[i(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),n.limit.selected=="amount"?(d(),p(w,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[78]||(e[78]=[i(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):s("",!0),a(z,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":u=>t.updateState(c,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":u=>t.updateState(c,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:3,title:"Gültig ab",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):s("",!0),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Gültig bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):s("",!0),n.frequency.selected=="weekly"?(d(),g("div",Ke,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):s("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[n.collapsed?s("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>m.removeChargeTemplateModal(r,c)},{default:l(()=>[a(b,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a($,{"form-name":"vehicleConfigForm",onSave:e[5]||(e[5]=o=>t.$emit("save")),onReset:e[6]||(e[6]=o=>t.$emit("reset")),onDefaults:e[7]||(e[7]=o=>t.$emit("defaults"))})])])],64)}const tt=q(_e,[["render",et],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),ot=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{O as V,tt as a,ot as b};
diff --git a/web/settings/assets/VehicleConfig-e8ea05c9.js b/web/settings/assets/VehicleConfig-e8ea05c9.js
new file mode 100644
index 0000000000..73400ba7b0
--- /dev/null
+++ b/web/settings/assets/VehicleConfig-e8ea05c9.js
@@ -0,0 +1 @@
+import{l as $,d as H,a0 as j,A as J,a9 as G,aa as Q,z as X,P as Y,ac as K,R as ee,ab as te,ad as ne,F as ae,I as le}from"./vendor-fortawesome-41164876.js";import{_ as k,C as ie}from"./index-f9fda857.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as q,u as V,k as d,l as g,A as p,N as l,y as i,z as C,D as a,x as h,a0 as re,a1 as de,J as P,B as m,K as E,a2 as F,q as x,P as N}from"./vendor-a21b3a62.js";const ue={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=q(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[se]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,b,B,f,s){const W=V("openwb-base-alert"),v=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(v,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=q(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",props:{vehicleId:{type:Number,required:!0},vehicle:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>k(()=>import("./vehicle-a8092426.js"),["assets/vehicle-a8092426.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-a9e07390.js"),["assets/vehicle-a9e07390.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-635e6620.js"),["assets/vehicle-635e6620.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-4df6c138.js"),["assets/vehicle-4df6c138.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-022511d4.js"),["assets/vehicle-022511d4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-317e6bfc.js"),["assets/vehicle-317e6bfc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-cb0122fd.js"),["assets/vehicle-cb0122fd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-ed5ef659.js"),["assets/vehicle-ed5ef659.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-693cb69a.js"),["assets/vehicle-693cb69a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-ad06c8a7.js"),["assets/vehicle-ad06c8a7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-95222308.js"),["assets/vehicle-95222308.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-35b782fb.js"),["assets/vehicle-35b782fb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-38d89acf.js"),["assets/vehicle-38d89acf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarteq/vehicle.vue":()=>k(()=>import("./vehicle-6dc5238d.js"),["assets/vehicle-6dc5238d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-81ee016b.js"),["assets/vehicle-81ee016b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-4afffc4b.js"),["assets/vehicle-4afffc4b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-axios-0e6de98a.js","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-caa88593.js"),["assets/vehicle-caa88593.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-cc94e01f.js"),["assets/vehicle-cc94e01f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,b,B,f,s){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(de(s.myComponent),{"vehicle-id":b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":e[0]||(e[0]=v=>s.updateConfiguration(v))},null,40,["vehicle-id","vehicle"]))],64)}const fe=q(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ne);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;t.push({value:b,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;t.push({value:b,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&(console.info("request removal of vehicle '"+t+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}}))},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(b=>b.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&(console.info("request removal of ev template '"+t+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}}))},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&(console.info("request removal of charge template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}}))},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation(),console.info("requesting new charge template schedule plan...");let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+t+"' schedule plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}}))},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation(),console.info("requesting new charge template time charging plan...");let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+t+"' time charging plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}}))}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},ye={key:0},Ae={key:0},Ee={key:3},Be={key:0},Fe={key:1},qe={key:0},Me={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Ie={key:3},Re={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:5};function et(t,e,b,B,f,s){const W=V("openwb-base-modal-dialog"),v=V("font-awesome-icon"),T=V("openwb-base-avatar"),A=V("openwb-base-alert"),z=V("openwb-base-text-input"),M=V("openwb-base-select-input"),O=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),y=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>s.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>s.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>s.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[4]||(e[4]=o=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zeitladen Zeitplan "'+C(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",we,[h("form",ke,[a(y,{subtype:"info",collapsible:!0,collapsed:t.$route.params.section!="vehicle"},{header:l(()=>[a(v,{"fixed-width":"",icon:["fas","car"]}),e[8]||(e[8]=i(" Fahrzeuge "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Ve,[a(A,{subtype:"info"},{default:l(()=>e[9]||(e[9]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Ce,[(d(!0),g(P,null,E(s.vehicleIndexes,o=>(d(),p(y,{key:o,title:s.getVehicleName(o),collapsible:!0,collapsed:!(t.$route.params.section=="vehicle"&&parseInt(t.$route.params.section_index)==o),subtype:"info"},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/name"],disabled:o===0,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/name",r)},F({_:2},[o===0?{name:"help",fn:l(()=>[e[10]||(e[10]=i(" Das Standard-Fahrzeug kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),o!==0?(d(),p(z,{key:0,title:"Fahrzeughersteller ","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].manufacturer,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"manufacturer")},{help:l(()=>[...e[11]||(e[11]=[i(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),o!==0?(d(),p(z,{key:1,title:"Fahrzeugmodell","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].model,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"model")},{help:l(()=>[...e[12]||(e[12]=[i(" Optional: zusätzliche Information für den Systembericht."),h("br",null,null,-1),i(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(A,{subtype:"info"},{default:l(()=>[...e[13]||(e[13]=[i(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])]),_:1}),a(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/ev_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/ev_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),a(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/charge_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/charge_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),e[24]||(e[24]=h("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!b.installAssistantActive?(d(),g("div",Se,[a(O,{title:"Zugeordnete ID-Tags","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/tag_id"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/tag_id",r)},null,8,["model-value","onUpdate:modelValue"]),a(A,{subtype:"info"},{default:l(()=>[e[14]||(e[14]=i(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung.")),e[15]||(e[15]=h("br",null,null,-1)),h("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,ze)]),_:1}),e[16]||(e[16]=h("hr",null,null,-1))])):m("",!0),a(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type,"onUpdate:modelValue":r=>s.updateSelectedSocModule(o,r)},{help:l(()=>[...e[17]||(e[17]=[i(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),h("br",null,null,-1),i(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),h("br",null,null,-1),i(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),h("br",null,null,-1),i(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type?(d(),g("div",Ue,[a(_,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"use_soc_from_cp")},{help:l(()=>[...e[18]||(e[18]=[i(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{help:l(()=>[...e[19]||(e[19]=[i(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")])]),default:l(()=>[e[20]||(e[20]=i(" Aktualisierung der Fahrzeugdaten "))]),_:1}),a(w,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_charging")},{help:l(()=>[...e[21]||(e[21]=[i(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_not_charging")},{help:l(()=>[...e[22]||(e[22]=[i(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"request_only_plugged")},{help:l(()=>[...e[23]||(e[23]=[i(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(I,{"vehicle-id":o,vehicle:t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"],"onUpdate:configuration":r=>s.updateConfiguration("openWB/vehicle/"+o+"/soc_module/config",r)},null,8,["vehicle-id","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[o!==0?{name:"actions",fn:l(r=>[r.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:n=>s.removeVehicleModal(o,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),e[81]||(e[81]=h("hr",{class:"border-secondary"},null,-1)),a(L,null,{default:l(()=>e[25]||(e[25]=[i("Profile")])),_:1}),a(y,{collapsible:!0,collapsed:!0},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),e[26]||(e[26]=i(" Fahrzeug-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Te,[a(A,{subtype:"info"},{default:l(()=>e[27]||(e[27]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",We,[a(A,{subtype:"info"},{default:l(()=>e[28]||(e[28]=[i(" Ein anderes Fahrzeug-Profil wird erst "),h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1),i(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])),_:1}),(d(!0),g(P,null,E(s.evTemplates,(o,r)=>(d(),p(y,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!0},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[29]||(e[29]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[30]||(e[30]=[i(" Angaben zur Batterie ")])]),_:1}),a(w,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":o.battery_capacity/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"battery_capacity")},{help:l(()=>[...e[31]||(e[31]=[i(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Le,[a(w,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":o.efficiency,"onUpdate:modelValue":n=>t.updateState(r,n,"efficiency")},{help:l(()=>[...e[32]||(e[32]=[i(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),h("br",null,null,-1),i(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),h("br",null,null,-1),i(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),h("br",null,null,-1),i(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),h("br",null,null,-1)])]),_:2},1032,["model-value","onUpdate:modelValue"])])),a(w,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":o.average_consump/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),g("div",Pe,[a(L,null,{default:l(()=>[...e[33]||(e[33]=[i(" Angaben zur Ladeleistung (DC) ")])]),_:1}),a(w,{title:"Mindestleistung",min:5,unit:"kW","model-value":t.ac_current2dc_power(o.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Maximalleistung",unit:"kW","model-value":t.ac_current2dc_power(o.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),a(L,null,{default:l(()=>[e[34]||(e[34]=i(" Angaben zum Ladestrom ")),s.dcChargingEnabled===!0?(d(),g("span",ye," (AC) ")):m("",!0)]),_:1}),a(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":o.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":o.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":o.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":o.nominal_difference,"onUpdate:modelValue":n=>t.updateState(r,n,"nominal_difference")},{help:l(()=>[...e[35]||(e[35]=[i(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:l(()=>[e[36]||(e[36]=i(" Angaben zur Handhabung von Phasen ")),s.dcChargingEnabled===!0?(d(),g("span",Ae," (AC) ")):m("",!0)]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":o.max_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_phases")},{help:l(()=>[...e[37]||(e[37]=[i(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.control_pilot_interruption,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption")},{help:l(()=>[...e[38]||(e[38]=[i(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o.control_pilot_interruption?(d(),p(w,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":o.control_pilot_interruption_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_phase_switch,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_phase_switch")},{help:l(()=>[...e[39]||(e[39]=[i(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_charge_stop,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_charge_stop")},{help:l(()=>[...e[40]||(e[40]=[i(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":o.phase_switch_pause,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Ee,[a(w,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":o.keep_charge_active_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"keep_charge_active_duration")},{help:l(()=>[...e[41]||(e[41]=[i(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[t.$store.state.mqtt["openWB/general/extern"]===!1&&!n.collapsed?(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeEvTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(y,{collapsible:!0,collapsed:t.$route.params.section!="charge_template"},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),e[42]||(e[42]=i(" Lade-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Be,[a(A,{subtype:"info"},{default:l(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Fe,[(d(!0),g(P,null,E(s.chargeTemplates,(o,r)=>(d(),p(y,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!(t.$route.params.section=="charge_template"&&parseInt(t.$route.params.section_index)==s.getChargeTemplateIndex(r))},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[44]||(e[44]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[45]||(e[45]=[i(" Allgemeine Optionen ")])]),_:1}),a(_,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":o.chargemode.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.selected")},{help:l(()=>[...e[46]||(e[46]=[i(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),h("br",null,null,-1),i(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),h("br",null,null,-1),h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",qe,[a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.prio,"onUpdate:modelValue":n=>t.updateState(r,n,"prio")},{help:l(()=>[...e[47]||(e[47]=[i(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.time_charging.active,"onUpdate:modelValue":n=>t.updateState(r,n,"time_charging.active")},{help:l(()=>[...e[48]||(e[48]=[i(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.load_default,"onUpdate:modelValue":n=>t.updateState(r,n,"load_default")},{help:l(()=>[...e[49]||(e[49]=[i(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.et.active,"onUpdate:modelValue":n=>t.updateState(r,n,"et.active")},null,8,["model-value","onUpdate:modelValue"]),o.et.active==!0?(d(),g("div",Me,[!t.$store.state.mqtt["openWB/optional/et/provider"]||!t.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),g("div",De,[a(A,{subtype:"danger"},{default:l(()=>[...e[50]||(e[50]=[i(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")])]),_:1})])):m("",!0),a(w,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":o.et.max_price*1e5,"onUpdate:modelValue":n=>t.updateState(r,parseFloat((n/1e5).toFixed(7)),"et.max_price")},{help:l(()=>[...e[51]||(e[51]=[i(" Für Zielladen werden die günstigsten Stunden ermittelt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),e[52]||(e[52]=h("hr",null,null,-1))])),a(L,null,{default:l(()=>[...e[53]||(e[53]=[i("Sofortladen")])]),_:1}),a(S,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.instant_charging.current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.instant_charging.dc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":o.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.selected")},{help:l(()=>[...e[54]||(e[54]=[i(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":o.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.soc")},{help:l(()=>[...e[55]||(e[55]=[i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":o.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"chargemode.instant_charging.limit.amount")},{help:l(()=>[...e[56]||(e[56]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[79]||(e[79]=h("hr",null,null,-1)),a(L,null,{default:l(()=>[...e[57]||(e[57]=[i("PV-Laden")])]),_:1}),a(S,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":o.chargemode.pv_charging.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_current")},{help:l(()=>[...e[58]||(e[58]=[i(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_current")},{help:l(()=>[...e[59]||(e[59]=[i(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":o.chargemode.pv_charging.max_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.max_soc")},{help:l(()=>[...e[60]||(e[60]=[i(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":o.chargemode.pv_charging.min_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc")},{help:l(()=>[...e[61]||(e[61]=[i(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc_current")},{help:l(()=>[...e[62]||(e[62]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_soc_current")},{help:l(()=>[...e[63]||(e[63]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.feed_in_limit")},{help:l(()=>[...e[64]||(e[64]=[i(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[80]||(e[80]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateSchedulePlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[65]||(e[65]=[i(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),h("br",null,null,-1),i(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),h("br",null,null,-1),i(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")])]),default:l(()=>[e[66]||(e[66]=i(" Zielladen "))]),_:2},1024),(d(!0),g(P,null,E(s.getChargeTemplateScheduledChargingPlans(r),(n,c)=>(d(),p(y,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",xe,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc_scheduled)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ne,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time)+" ",1),n.frequency.selected=="once"?(d(),g("span",Oe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once)),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Ie,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Re,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,Ze)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateSchedulePlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Ziel-Uhrzeit",subtype:"time","model-value":n.time,"onUpdate:modelValue":u=>t.updateState(c,u,"time")},{help:l(()=>[...e[67]||(e[67]=[i(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},{help:l(()=>[...e[68]||(e[68]=[i(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[69]||(e[69]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_scheduled,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_scheduled")},{help:l(()=>[...e[70]||(e[70]=[i(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="soc"?(d(),p(S,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_limit,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_limit")},{help:l(()=>[...e[71]||(e[71]=[i(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[72]||(e[72]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Datum",subtype:"date","model-value":n.frequency.once,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",$e,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),b.installAssistantActive?m("",!0):(d(),g("div",He,[e[75]||(e[75]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateTimeChargingPlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[73]||(e[73]=[i(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")])]),default:l(()=>[e[74]||(e[74]=i(" Laden nach Zeitplan "))]),_:2},1024)])),(d(!0),g(P,null,E(s.getChargeTemplateTimeChargingPlans(r),(n,c)=>(d(),p(y,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",Je,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ge,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time[0])+" - "+C(n.time[1])+" ",1),n.frequency.selected=="once"?(d(),g("span",Qe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Xe,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ye,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,je)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateTimeChargingPlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[76]||(e[76]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc")},{help:l(()=>[...e[77]||(e[77]=[i(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[78]||(e[78]=[i(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(z,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":u=>t.updateState(c,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":u=>t.updateState(c,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:3,title:"Gültig ab",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Gültig bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",Ke,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[n.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeChargeTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{"form-name":"vehicleConfigForm",onSave:e[5]||(e[5]=o=>t.$emit("save")),onReset:e[6]||(e[6]=o=>t.$emit("reset")),onDefaults:e[7]||(e[7]=o=>t.$emit("defaults"))})])])],64)}const tt=q(_e,[["render",et],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),ot=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{se as V,tt as a,ot as b};
diff --git a/web/settings/assets/backup_cloud-3f7a1039.js b/web/settings/assets/backup_cloud-13d4bee8.js
similarity index 93%
rename from web/settings/assets/backup_cloud-3f7a1039.js
rename to web/settings/assets/backup_cloud-13d4bee8.js
index 090608fd51..288a29f2b6 100644
--- a/web/settings/assets/backup_cloud-3f7a1039.js
+++ b/web/settings/assets/backup_cloud-13d4bee8.js
@@ -1 +1 @@
-import{B as r}from"./DataManagement-ad71d105.js";import{_ as i,u as s,k as p,l as d,D as t,N as m,y as a,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[r]},f={class:"backup-cloud-samba"};function g(o,e,v,C,k,c){const u=s("openwb-base-text-input");return p(),d("div",f,[t(u,{title:"Server",subtype:"host",required:"","model-value":o.backupCloud.configuration.smb_server,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),t(u,{title:"Freigabe",required:"","model-value":o.backupCloud.configuration.smb_share,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),t(u,{title:"Unterordner (optional)","model-value":o.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>e[5]||(e[5]=[a(" Jeder Unterordner muss mit / enden."),l("br",null,null,-1),a(' Die Zeichen \\:"|*?<> sind verboten!'),l("br",null,null,-1),a(" Beispiel 1: openwb/ "),l("br",null,null,-1),a(" Beispiel 2: openwb/lp2/ ")])),_:1},8,["model-value"]),t(u,{title:"Benutzer",subtype:"user","model-value":o.backupCloud.configuration.smb_user,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),t(u,{title:"Kennwort",subtype:"password","model-value":o.backupCloud.configuration.smb_password,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const D=i(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{D as default};
+import{B as r}from"./DataManagement-b9730b64.js";import{_ as i,u as s,k as p,l as d,D as t,N as m,y as a,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[r]},f={class:"backup-cloud-samba"};function g(o,e,v,C,k,c){const u=s("openwb-base-text-input");return p(),d("div",f,[t(u,{title:"Server",subtype:"host",required:"","model-value":o.backupCloud.configuration.smb_server,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),t(u,{title:"Freigabe",required:"","model-value":o.backupCloud.configuration.smb_share,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),t(u,{title:"Unterordner (optional)","model-value":o.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>e[5]||(e[5]=[a(" Jeder Unterordner muss mit / enden."),l("br",null,null,-1),a(' Die Zeichen \\:"|*?<> sind verboten!'),l("br",null,null,-1),a(" Beispiel 1: openwb/ "),l("br",null,null,-1),a(" Beispiel 2: openwb/lp2/ ")])),_:1},8,["model-value"]),t(u,{title:"Benutzer",subtype:"user","model-value":o.backupCloud.configuration.smb_user,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),t(u,{title:"Kennwort",subtype:"password","model-value":o.backupCloud.configuration.smb_password,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const D=i(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{D as default};
diff --git a/web/settings/assets/backup_cloud-71b57f4d.js b/web/settings/assets/backup_cloud-5feeb3e2.js
similarity index 83%
rename from web/settings/assets/backup_cloud-71b57f4d.js
rename to web/settings/assets/backup_cloud-5feeb3e2.js
index 43dcfcd284..0521aa2d14 100644
--- a/web/settings/assets/backup_cloud-71b57f4d.js
+++ b/web/settings/assets/backup_cloud-5feeb3e2.js
@@ -1 +1 @@
-import{B as c}from"./DataManagement-ad71d105.js";import{_ as m,u as a,k as b,l as f,D as t,N as r,y as n,x as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},v={class:"backup-cloud-one-drive"};function k(o,e,h,w,B,C){const d=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),l=a("openwb-base-button-input");return b(),f("div",v,[t(d,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[n(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),i("br",null,null,-1),n(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")])),_:1}),t(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":o.backupCloud.configuration.backuppath,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>e[4]||(e[4]=[n(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),i("br",null,null,-1),n(" Beispiel: /openWB/Backup/ ")])),_:1},8,["model-value"]),t(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":o.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(p,null,{default:r(()=>e[5]||(e[5]=[n(" Zugang zu OneDrive für diese openWB autorisieren ")])),_:1}),t(l,{title:"1. Anmeldeanforderung erstellen","button-text":"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:e[1]||(e[1]=s=>o.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>e[6]||(e[6]=[n(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),i("br",null,null,-1),n(" Weitere Infos:"),i("br",null,null,-1),i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1)])),_:1}),t(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":o.backupCloud.configuration.authcode},null,8,["model-value"]),t(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":o.backupCloud.configuration.authurl},{help:r(()=>e[7]||(e[7]=[n(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")])),_:1},8,["model-value"]),t(l,{title:"4. Token abrufen und speichern","button-text":"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:e[2]||(e[2]=s=>o.sendCommand("retrieveMSALTokens",{}))},{help:r(()=>e[8]||(e[8]=[n(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")])),_:1})])}const L=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{L as default};
+import{B as c}from"./DataManagement-b9730b64.js";import{_ as m,u as a,k as b,l as f,D as t,N as r,y as n,x as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},v={class:"backup-cloud-one-drive"};function k(o,e,h,w,B,C){const d=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),l=a("openwb-base-button-input");return b(),f("div",v,[t(d,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[n(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),i("br",null,null,-1),n(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")])),_:1}),t(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":o.backupCloud.configuration.backuppath,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>e[4]||(e[4]=[n(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),i("br",null,null,-1),n(" Beispiel: /openWB/Backup/ ")])),_:1},8,["model-value"]),t(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":o.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(p,null,{default:r(()=>e[5]||(e[5]=[n(" Zugang zu OneDrive für diese openWB autorisieren ")])),_:1}),t(l,{title:"1. Anmeldeanforderung erstellen","button-text":"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:e[1]||(e[1]=s=>o.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>e[6]||(e[6]=[n(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),i("br",null,null,-1),n(" Weitere Infos:"),i("br",null,null,-1),i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1)])),_:1}),t(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":o.backupCloud.configuration.authcode},null,8,["model-value"]),t(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":o.backupCloud.configuration.authurl},{help:r(()=>e[7]||(e[7]=[n(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")])),_:1},8,["model-value"]),t(l,{title:"4. Token abrufen und speichern","button-text":"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:e[2]||(e[2]=s=>o.sendSystemCommand("retrieveMSALTokens",{}))},{help:r(()=>e[8]||(e[8]=[n(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")])),_:1})])}const L=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{L as default};
diff --git a/web/settings/assets/backup_cloud-510cc7e0.js b/web/settings/assets/backup_cloud-b3e9e685.js
similarity index 92%
rename from web/settings/assets/backup_cloud-510cc7e0.js
rename to web/settings/assets/backup_cloud-b3e9e685.js
index e8e19a817a..5149ab606b 100644
--- a/web/settings/assets/backup_cloud-510cc7e0.js
+++ b/web/settings/assets/backup_cloud-b3e9e685.js
@@ -1 +1 @@
-import{B as s}from"./DataManagement-ad71d105.js";import{_ as a,u as r,k as i,l,D as u,N as d,y as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[s]},c={class:"backup-cloud-next-cloud"};function f(o,e,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":o.backupCloud.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>e[3]||(e[3]=[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")])),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":o.backupCloud.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":o.backupCloud.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{$ as default};
+import{B as s}from"./DataManagement-b9730b64.js";import{_ as a,u as r,k as i,l,D as u,N as d,y as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[s]},c={class:"backup-cloud-next-cloud"};function f(o,e,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":o.backupCloud.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>e[3]||(e[3]=[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")])),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":o.backupCloud.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":o.backupCloud.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{$ as default};
diff --git a/web/settings/assets/backup_cloud-333e299c.js b/web/settings/assets/backup_cloud-fd1d0158.js
similarity index 86%
rename from web/settings/assets/backup_cloud-333e299c.js
rename to web/settings/assets/backup_cloud-fd1d0158.js
index f0421da69c..855a1af316 100644
--- a/web/settings/assets/backup_cloud-333e299c.js
+++ b/web/settings/assets/backup_cloud-fd1d0158.js
@@ -1 +1 @@
-import{B as a}from"./DataManagement-ad71d105.js";import{_ as p,u as s,k as r,l as u,D as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"BackupCloudNfs",mixins:[a]},l={class:"backup-cloud-nfs"};function d(o,e,m,_,f,b){const t=s("openwb-base-text-input");return r(),u("div",l,[i(t,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":o.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.nfs_share"))},null,8,["model-value"])])}const N=p(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{N as default};
+import{B as a}from"./DataManagement-b9730b64.js";import{_ as p,u as s,k as r,l as u,D as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"BackupCloudNfs",mixins:[a]},l={class:"backup-cloud-nfs"};function d(o,e,m,_,f,b){const t=s("openwb-base-text-input");return r(),u("div",l,[i(t,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":o.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.nfs_share"))},null,8,["model-value"])])}const N=p(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-98a7f166.js b/web/settings/assets/bat-12daed7b.js
similarity index 83%
rename from web/settings/assets/bat-98a7f166.js
rename to web/settings/assets/bat-12daed7b.js
index c243629034..56518477e3 100644
--- a/web/settings/assets/bat-98a7f166.js
+++ b/web/settings/assets/bat-12daed7b.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as p,l,D as n,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxBat",mixins:[r]},b={class:"device-solarmax-bat"};function _(o,e,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",b,[n(a,{subtype:"info"},{default:u(()=>e[1]||(e[1]=[d(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const T=m(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{T as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as p,l,D as n,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxBat",mixins:[r]},b={class:"device-solarmax-bat"};function _(o,e,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",b,[n(a,{subtype:"info"},{default:u(()=>e[1]||(e[1]=[d(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const T=m(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{T as default};
diff --git a/web/settings/assets/bat-fefe88d3.js b/web/settings/assets/bat-328595a8.js
similarity index 88%
rename from web/settings/assets/bat-fefe88d3.js
rename to web/settings/assets/bat-328595a8.js
index c0596933c8..ba759923d7 100644
--- a/web/settings/assets/bat-fefe88d3.js
+++ b/web/settings/assets/bat-328595a8.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},b={class:"device-sunnyboy-bat"};function c(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",b,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{S as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},b={class:"device-sunnyboy-bat"};function c(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",b,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{S as default};
diff --git a/web/settings/assets/bat-9577327c.js b/web/settings/assets/bat-3b4b20a7.js
similarity index 96%
rename from web/settings/assets/bat-9577327c.js
rename to web/settings/assets/bat-3b4b20a7.js
index fa68319413..1afbe8d515 100644
--- a/web/settings/assets/bat-9577327c.js
+++ b/web/settings/assets/bat-3b4b20a7.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as s,k as p,l as g,D as r,N as i,y as n,x as o}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpBat",mixins:[u]},b={class:"device-http-bat"};function f(t,e,v,w,c,k){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),g("div",b,[r(d,null,{default:i(()=>e[4]||(e[4]=[n(" Einstellungen für Http Batteriespeicher ")])),_:1}),r(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>e[5]||(e[5]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>e[6]||(e[6]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),o("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const A=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{A as default};
+import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as s,k as p,l as g,D as r,N as i,y as n,x as o}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpBat",mixins:[u]},b={class:"device-http-bat"};function f(t,e,v,w,c,k){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),g("div",b,[r(d,null,{default:i(()=>e[4]||(e[4]=[n(" Einstellungen für Http Batteriespeicher ")])),_:1}),r(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>e[5]||(e[5]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>e[6]||(e[6]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),o("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const A=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{A as default};
diff --git a/web/settings/assets/bat-45a2224e.js b/web/settings/assets/bat-426bdd63.js
similarity index 89%
rename from web/settings/assets/bat-45a2224e.js
rename to web/settings/assets/bat-426bdd63.js
index 4bf21f5bb5..18062f2b91 100644
--- a/web/settings/assets/bat-45a2224e.js
+++ b/web/settings/assets/bat-426bdd63.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as o,k as l,l as m,D as n,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(t,e,f,v,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),m("div",_,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const E=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{E as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as o,k as l,l as m,D as n,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(t,e,f,v,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),m("div",_,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const E=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-e05764b6.js b/web/settings/assets/bat-61eea3a5.js
similarity index 94%
rename from web/settings/assets/bat-e05764b6.js
rename to web/settings/assets/bat-61eea3a5.js
index 6edbe47722..9e10212293 100644
--- a/web/settings/assets/bat-e05764b6.js
+++ b/web/settings/assets/bat-61eea3a5.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as l,k as p,l as m,D as o,N as a,y as r,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"};function w(t,e,v,j,q,_){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>e[4]||(e[4]=[r(" Einstellungen für JSON Batteriespeicher ")])),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":t.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>e[5]||(e[5]=[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":t.component.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":t.component.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>e[6]||(e[6]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":t.component.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=n=>t.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>e[7]||(e[7]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const N=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{N as default};
+import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as l,k as p,l as m,D as o,N as a,y as r,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"};function w(t,e,v,j,q,_){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>e[4]||(e[4]=[r(" Einstellungen für JSON Batteriespeicher ")])),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":t.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>e[5]||(e[5]=[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":t.component.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":t.component.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>e[6]||(e[6]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":t.component.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=n=>t.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>e[7]||(e[7]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const N=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-7c88776b.js b/web/settings/assets/bat-80f0d2f4.js
similarity index 83%
rename from web/settings/assets/bat-7c88776b.js
rename to web/settings/assets/bat-80f0d2f4.js
index f981c4f2da..34ccf8739c 100644
--- a/web/settings/assets/bat-7c88776b.js
+++ b/web/settings/assets/bat-80f0d2f4.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as n,k as u,l,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyBat",mixins:[m]},b={class:"device-sigenergy-bat"};function _(o,e,c,f,v,y){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),l("div",b,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Sigenergy Batteriespeicher ")])),_:1}),t(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const N=d(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{N as default};
+import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as n,k as u,l,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyBat",mixins:[m]},b={class:"device-sigenergy-bat"};function _(o,e,c,f,v,y){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),l("div",b,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Sigenergy Batteriespeicher ")])),_:1}),t(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const N=d(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-03d10b16.js b/web/settings/assets/bat-840118d9.js
similarity index 88%
rename from web/settings/assets/bat-03d10b16.js
rename to web/settings/assets/bat-840118d9.js
index c8c8806796..ef2d8f12c1 100644
--- a/web/settings/assets/bat-03d10b16.js
+++ b/web/settings/assets/bat-840118d9.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as o,k as m,l as u,D as t,N as l,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},f={class:"device-fems-bat"};function _(n,e,b,v,g,C){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return m(),u("div",f,[t(i,null,{default:l(()=>e[1]||(e[1]=[c(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")])),_:1}),t(s,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":n.component.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.num"))},null,8,["model-value"])])}const M=p(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{M as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as o,k as m,l as u,D as t,N as l,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},f={class:"device-fems-bat"};function _(n,e,b,v,g,C){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return m(),u("div",f,[t(i,null,{default:l(()=>e[1]||(e[1]=[c(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")])),_:1}),t(s,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":n.component.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.num"))},null,8,["model-value"])])}const M=p(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{M as default};
diff --git a/web/settings/assets/bat-2a37d4a1.js b/web/settings/assets/bat-99d6a6cb.js
similarity index 88%
rename from web/settings/assets/bat-2a37d4a1.js
rename to web/settings/assets/bat-99d6a6cb.js
index 09cd0c2d30..27682d2f18 100644
--- a/web/settings/assets/bat-2a37d4a1.js
+++ b/web/settings/assets/bat-99d6a6cb.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as p,l as u,D as n,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},c={class:"device-huawei-smart-logger-bat"};function b(o,e,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",c,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")])),_:1}),n(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{E as default};
+import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as p,l as u,D as n,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},c={class:"device-huawei-smart-logger-bat"};function b(o,e,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",c,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")])),_:1}),n(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-dc1d9a2f.js b/web/settings/assets/bat-9d6be7fa.js
similarity index 87%
rename from web/settings/assets/bat-dc1d9a2f.js
rename to web/settings/assets/bat-9d6be7fa.js
index 484588bff7..2e816f9f38 100644
--- a/web/settings/assets/bat-dc1d9a2f.js
+++ b/web/settings/assets/bat-9d6be7fa.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(o,e,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Fronius Batteriespeicher ")])),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const E=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(o,e,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Fronius Batteriespeicher ")])),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const E=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-9807eb70.js b/web/settings/assets/bat-9d9a67fb.js
similarity index 88%
rename from web/settings/assets/bat-9807eb70.js
rename to web/settings/assets/bat-9d9a67fb.js
index 8ada093cfe..8dea9b389f 100644
--- a/web/settings/assets/bat-9807eb70.js
+++ b/web/settings/assets/bat-9d9a67fb.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(o,e,f,g,v,w){const i=n("openwb-base-heading"),a=n("openwb-base-number-input");return d(),m("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Batteriespeicher ")])),_:1}),t(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{V as default};
+import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(o,e,f,g,v,w){const i=n("openwb-base-heading"),a=n("openwb-base-number-input");return d(),m("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Batteriespeicher ")])),_:1}),t(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-9eca6500.js b/web/settings/assets/bat-a28914e4.js
similarity index 91%
rename from web/settings/assets/bat-9eca6500.js
rename to web/settings/assets/bat-a28914e4.js
index 8f1b7f481b..a874139ab3 100644
--- a/web/settings/assets/bat-9eca6500.js
+++ b/web/settings/assets/bat-a28914e4.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as t,k as d,l as c,D as i,N as a,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMTecBat",mixins:[m]},_={class:"device-mtec-bat"};function f(o,e,v,g,w,C){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",_,[i(p,null,{default:a(()=>e[2]||(e[2]=[s(" Einstellungen für M-Tec Batteriespeicher ")])),_:1}),i(r,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":o.component.configuration.generation,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>e[3]||(e[3]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const N=l(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{N as default};
+import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as t,k as d,l as c,D as i,N as a,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMTecBat",mixins:[m]},_={class:"device-mtec-bat"};function f(o,e,v,g,w,C){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",_,[i(p,null,{default:a(()=>e[2]||(e[2]=[s(" Einstellungen für M-Tec Batteriespeicher ")])),_:1}),i(r,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":o.component.configuration.generation,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>e[3]||(e[3]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const N=l(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-7dc3e16d.js b/web/settings/assets/bat-a74943cb.js
similarity index 95%
rename from web/settings/assets/bat-7dc3e16d.js
rename to web/settings/assets/bat-a74943cb.js
index 727068d95c..95c2ba3a22 100644
--- a/web/settings/assets/bat-7dc3e16d.js
+++ b/web/settings/assets/bat-a74943cb.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as r,k as b,l as f,D as o,N as l,y as t,x as n,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttBat",mixins:[m]},k={class:"device-mqtt-bat"};function B(i,e,x,v,w,z){const u=r("openwb-base-heading"),s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return b(),f("div",k,[o(u,null,{default:l(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Batteriespeicher ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>[e[21]||(e[21]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung")),e[3]||(e[3]=n("br",null,null,-1)),e[4]||(e[4]=t(" Beispiel: ")),e[5]||(e[5]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/imported ",1)]),_:1}),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[8]||(e[8]=n("br",null,null,-1)),e[9]||(e[9]=t(" Beispiel: ")),e[10]||(e[10]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/exported ",1)]),_:1}),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[13]||(e[13]=n("br",null,null,-1)),e[14]||(e[14]=t(" Beispiel: ")),e[15]||(e[15]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/soc ",1)]),_:1}),e[16]||(e[16]=n("br",null,null,-1)),e[17]||(e[17]=t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100")),e[18]||(e[18]=n("br",null,null,-1)),e[19]||(e[19]=t(" Beispiel: ")),e[20]||(e[20]=n("span",{class:"text-info"},"95",-1))])])]),_:1})])}const P=d(g,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{P as default};
+import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as r,k as b,l as f,D as o,N as l,y as t,x as n,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttBat",mixins:[m]},k={class:"device-mqtt-bat"};function B(i,e,x,v,w,z){const u=r("openwb-base-heading"),s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return b(),f("div",k,[o(u,null,{default:l(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Batteriespeicher ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>[e[21]||(e[21]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung")),e[3]||(e[3]=n("br",null,null,-1)),e[4]||(e[4]=t(" Beispiel: ")),e[5]||(e[5]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/imported ",1)]),_:1}),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[8]||(e[8]=n("br",null,null,-1)),e[9]||(e[9]=t(" Beispiel: ")),e[10]||(e[10]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/exported ",1)]),_:1}),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[13]||(e[13]=n("br",null,null,-1)),e[14]||(e[14]=t(" Beispiel: ")),e[15]||(e[15]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/soc ",1)]),_:1}),e[16]||(e[16]=n("br",null,null,-1)),e[17]||(e[17]=t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100")),e[18]||(e[18]=n("br",null,null,-1)),e[19]||(e[19]=t(" Beispiel: ")),e[20]||(e[20]=n("span",{class:"text-info"},"95",-1))])])]),_:1})])}const P=d(g,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{P as default};
diff --git a/web/settings/assets/bat-713dd112.js b/web/settings/assets/bat-ab8d4880.js
similarity index 87%
rename from web/settings/assets/bat-713dd112.js
rename to web/settings/assets/bat-ab8d4880.js
index 38b31e416a..eba5a3775a 100644
--- a/web/settings/assets/bat-713dd112.js
+++ b/web/settings/assets/bat-ab8d4880.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssBat",mixins:[r]},c={class:"device-fox_ess-bat"};function b(o,e,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{h as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssBat",mixins:[r]},c={class:"device-fox_ess-bat"};function b(o,e,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{h as default};
diff --git a/web/settings/assets/bat-c6e7f4e5.js b/web/settings/assets/bat-ba2e5e6b.js
similarity index 88%
rename from web/settings/assets/bat-c6e7f4e5.js
rename to web/settings/assets/bat-ba2e5e6b.js
index aca680beda..56df2f6824 100644
--- a/web/settings/assets/bat-c6e7f4e5.js
+++ b/web/settings/assets/bat-ba2e5e6b.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as o,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIslandBat",mixins:[r]},c={class:"device-sunnyisland-bat"};function b(n,e,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Sunny Island Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{V as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as o,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIslandBat",mixins:[r]},c={class:"device-sunnyisland-bat"};function b(n,e,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Sunny Island Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-af534ff4.js b/web/settings/assets/bat-baab6c7d.js
similarity index 87%
rename from web/settings/assets/bat-af534ff4.js
rename to web/settings/assets/bat-baab6c7d.js
index f017422141..c3154730d7 100644
--- a/web/settings/assets/bat-af534ff4.js
+++ b/web/settings/assets/bat-baab6c7d.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as u,l as d,D as n,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(o,e,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return u(),d("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für Studer Batteriespeicher ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as u,l as d,D as n,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(o,e,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return u(),d("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für Studer Batteriespeicher ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-c3b737a8.js b/web/settings/assets/bat-bae92296.js
similarity index 87%
rename from web/settings/assets/bat-c3b737a8.js
rename to web/settings/assets/bat-bae92296.js
index 5ea22bd2f7..d37fbd2dc1 100644
--- a/web/settings/assets/bat-c3b737a8.js
+++ b/web/settings/assets/bat-bae92296.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[c(" Einstellungen für Victron Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[c(" Einstellungen für Victron Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-8dd42ecd.js b/web/settings/assets/bat-bb33d730.js
similarity index 81%
rename from web/settings/assets/bat-8dd42ecd.js
rename to web/settings/assets/bat-bb33d730.js
index 5ab13f57f7..94b80d9ebc 100644
--- a/web/settings/assets/bat-8dd42ecd.js
+++ b/web/settings/assets/bat-bb33d730.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{E as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-b62c3097.js b/web/settings/assets/bat-bdfaf1f4.js
similarity index 87%
rename from web/settings/assets/bat-b62c3097.js
rename to web/settings/assets/bat-bdfaf1f4.js
index 0bd5e59b64..e8b1df6102 100644
--- a/web/settings/assets/bat-b62c3097.js
+++ b/web/settings/assets/bat-bdfaf1f4.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as d,D as t,N as u,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{h as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as d,D as t,N as u,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{h as default};
diff --git a/web/settings/assets/bat-8c346425.js b/web/settings/assets/bat-c64928d7.js
similarity index 90%
rename from web/settings/assets/bat-8c346425.js
rename to web/settings/assets/bat-c64928d7.js
index 64de8e848f..1053784fb4 100644
--- a/web/settings/assets/bat-8c346425.js
+++ b/web/settings/assets/bat-c64928d7.js
@@ -1 +1 @@
-import{C as l}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as t,k as u,l as m,D as i,N as d,y as b}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenwbFlexBat",mixins:[l]},f={class:"device-openwb-flex-bat"};function _(o,e,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",f,[i(a,null,{default:d(()=>e[2]||(e[2]=[b(" Einstellungen für openWB-Flex Batteriespeicher ")])),_:1}),i(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const h=r(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{h as default};
+import{C as l}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as t,k as u,l as m,D as i,N as d,y as b}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenwbFlexBat",mixins:[l]},f={class:"device-openwb-flex-bat"};function _(o,e,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",f,[i(a,null,{default:d(()=>e[2]||(e[2]=[b(" Einstellungen für openWB-Flex Batteriespeicher ")])),_:1}),i(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const h=r(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{h as default};
diff --git a/web/settings/assets/bat-5763ad59.js b/web/settings/assets/bat-f044ae56.js
similarity index 89%
rename from web/settings/assets/bat-5763ad59.js
rename to web/settings/assets/bat-f044ae56.js
index 4829d6cff6..2a9f1f39ce 100644
--- a/web/settings/assets/bat-5763ad59.js
+++ b/web/settings/assets/bat-f044ae56.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as o,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[a]},_={class:"device-openwb-evukit-bat"};function v(t,e,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{$ as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as o,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[a]},_={class:"device-openwb-evukit-bat"};function v(t,e,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat_smart_energy-2291c4ec.js b/web/settings/assets/bat_smart_energy-999a65de.js
similarity index 88%
rename from web/settings/assets/bat_smart_energy-2291c4ec.js
rename to web/settings/assets/bat_smart_energy-999a65de.js
index 455c6f832b..4603789f52 100644
--- a/web/settings/assets/bat_smart_energy-2291c4ec.js
+++ b/web/settings/assets/bat_smart_energy-999a65de.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as o,k as p,l as u,D as t,N as d,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[a]},b={class:"device-sunnyboy-bat-smart-energy"};function c(n,e,f,y,g,v){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return p(),u("div",b,[t(s,null,{default:d(()=>e[1]||(e[1]=[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const M=m(l,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{M as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as o,k as p,l as u,D as t,N as d,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[a]},b={class:"device-sunnyboy-bat-smart-energy"};function c(n,e,f,y,g,v){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return p(),u("div",b,[t(s,null,{default:d(()=>e[1]||(e[1]=[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const M=m(l,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{M as default};
diff --git a/web/settings/assets/chargePoint-3f4bb03f.js b/web/settings/assets/chargePoint-112ccae9.js
similarity index 90%
rename from web/settings/assets/chargePoint-3f4bb03f.js
rename to web/settings/assets/chargePoint-112ccae9.js
index 3a0a2976bf..4e8374d1fc 100644
--- a/web/settings/assets/chargePoint-3f4bb03f.js
+++ b/web/settings/assets/chargePoint-112ccae9.js
@@ -1 +1 @@
-import{C as p}from"./ChargePointInstallation-12a5c989.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointExternalOpenwb",mixins:[p]},c={class:"charge-point-external-openwb"};function g(n,e,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const $=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{$ as default};
+import{C as p}from"./ChargePointInstallation-8dff21bc.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointExternalOpenwb",mixins:[p]},c={class:"charge-point-external-openwb"};function g(n,e,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const $=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{$ as default};
diff --git a/web/settings/assets/chargePoint-8d89f54f.js b/web/settings/assets/chargePoint-3babeeb9.js
similarity index 92%
rename from web/settings/assets/chargePoint-8d89f54f.js
rename to web/settings/assets/chargePoint-3babeeb9.js
index daef6df8e1..06f6cf0e31 100644
--- a/web/settings/assets/chargePoint-8d89f54f.js
+++ b/web/settings/assets/chargePoint-3babeeb9.js
@@ -1 +1 @@
-import{C as u}from"./ChargePointInstallation-12a5c989.js";import{_ as p,u as t,k as i,l as d,D as m,A as l,N as c,y as g,B as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){(e=="series"||e=="socket")&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},h={class:"charge-point-internal-openwb"};function b(e,n,B,w,k,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",h,[m(r,{title:"Bauart","not-selected":"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":n[0]||(n[0]=o=>a.updateMode(o))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:c(()=>n[2]||(n[2]=[g(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])):f("",!0)])}const M=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{M as default};
+import{C as u}from"./ChargePointInstallation-8dff21bc.js";import{_ as p,u as t,k as i,l as d,D as m,A as l,N as c,y as g,B as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){(e=="series"||e=="socket")&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},h={class:"charge-point-internal-openwb"};function b(e,n,B,w,k,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",h,[m(r,{title:"Bauart","not-selected":"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":n[0]||(n[0]=o=>a.updateMode(o))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:c(()=>n[2]||(n[2]=[g(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])):f("",!0)])}const M=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{M as default};
diff --git a/web/settings/assets/chargePoint-f77b98b5.js b/web/settings/assets/chargePoint-468fc8e7.js
similarity index 86%
rename from web/settings/assets/chargePoint-f77b98b5.js
rename to web/settings/assets/chargePoint-468fc8e7.js
index 957b58dd16..6bac400e8e 100644
--- a/web/settings/assets/chargePoint-f77b98b5.js
+++ b/web/settings/assets/chargePoint-468fc8e7.js
@@ -1 +1 @@
-import{C as r}from"./ChargePointInstallation-12a5c989.js";import{_ as i,u as p,k as s,l as a,D as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{B as default};
+import{C as r}from"./ChargePointInstallation-8dff21bc.js";import{_ as i,u as p,k as s,l as a,D as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{B as default};
diff --git a/web/settings/assets/chargePoint-f92622dd.js b/web/settings/assets/chargePoint-52b6ceee.js
similarity index 90%
rename from web/settings/assets/chargePoint-f92622dd.js
rename to web/settings/assets/chargePoint-52b6ceee.js
index 98f8a4bbf6..0619096b89 100644
--- a/web/settings/assets/chargePoint-f92622dd.js
+++ b/web/settings/assets/chargePoint-52b6ceee.js
@@ -1 +1 @@
-import{C as p}from"./ChargePointInstallation-12a5c989.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointSatellite",mixins:[p]},c={class:"charge-point-openwb-satellite"};function g(n,e,f,b,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const $=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{$ as default};
+import{C as p}from"./ChargePointInstallation-8dff21bc.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointSatellite",mixins:[p]},c={class:"charge-point-openwb-satellite"};function g(n,e,f,b,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const $=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{$ as default};
diff --git a/web/settings/assets/chargePoint-72c59831.js b/web/settings/assets/chargePoint-7fec8739.js
similarity index 90%
rename from web/settings/assets/chargePoint-72c59831.js
rename to web/settings/assets/chargePoint-7fec8739.js
index 8b7fdc3b7f..63d804b712 100644
--- a/web/settings/assets/chargePoint-72c59831.js
+++ b/web/settings/assets/chargePoint-7fec8739.js
@@ -1 +1 @@
-import{C as s}from"./ChargePointInstallation-12a5c989.js";import{_ as p,u as n,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},b={class:"charge-point-smartwb"};function c(t,e,f,_,w,v){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",b,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":t.chargePoint.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>e[2]||(e[2]=[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")])),_:1},8,["model-value"])])}const W=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{W as default};
+import{C as s}from"./ChargePointInstallation-8dff21bc.js";import{_ as p,u as n,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},b={class:"charge-point-smartwb"};function c(t,e,f,_,w,v){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",b,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":t.chargePoint.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>e[2]||(e[2]=[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")])),_:1},8,["model-value"])])}const W=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{W as default};
diff --git a/web/settings/assets/chargePoint-8472765d.js b/web/settings/assets/chargePoint-a02180ae.js
similarity index 86%
rename from web/settings/assets/chargePoint-8472765d.js
rename to web/settings/assets/chargePoint-a02180ae.js
index 4e68f5e9b5..3c9e76a422 100644
--- a/web/settings/assets/chargePoint-8472765d.js
+++ b/web/settings/assets/chargePoint-a02180ae.js
@@ -1 +1 @@
-import{C as r}from"./ChargePointInstallation-12a5c989.js";import{_ as i,u as a,k as p,l as s,D as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{B as default};
+import{C as r}from"./ChargePointInstallation-8dff21bc.js";import{_ as i,u as a,k as p,l as s,D as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{B as default};
diff --git a/web/settings/assets/chargePoint-f3a56f90.js b/web/settings/assets/chargePoint-f1ada5d6.js
similarity index 98%
rename from web/settings/assets/chargePoint-f3a56f90.js
rename to web/settings/assets/chargePoint-f1ada5d6.js
index 4de05d56f1..fb2cd37636 100644
--- a/web/settings/assets/chargePoint-f3a56f90.js
+++ b/web/settings/assets/chargePoint-f1ada5d6.js
@@ -1 +1 @@
-import{C as d}from"./ChargePointInstallation-12a5c989.js";import{_ as g,u,k as a,l as f,D as e,N as i,y as t,x as l,z as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"ChargePointMqtt",mixins:[d]},b={class:"charge-point-mqtt"};function k(o,n,B,v,w,W){const p=u("openwb-base-alert"),s=u("openwb-base-copy-to-clipboard");return a(),f("div",b,[e(p,{subtype:"danger"},{default:i(()=>n[0]||(n[0]=[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")])),_:1}),e(p,{subtype:"info"},{default:i(()=>[n[72]||(n[72]=t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden.")),n[73]||(n[73]=l("br",null,null,-1)),n[74]||(n[74]=t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). ")),l("ol",null,[l("li",null,[n[11]||(n[11]=t(" von openWB gesendete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/current ",1)]),_:1}),n[1]||(n[1]=l("br",null,null,-1)),n[2]||(n[2]=t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[3]||(n[3]=l("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=l("span",{class:"text-info"},"12.34",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/phases_to_use ",1)]),_:1}),n[6]||(n[6]=l("br",null,null,-1)),n[7]||(n[7]=t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3")),n[8]||(n[8]=l("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=l("span",{class:"text-info"},"1",-1))])])]),l("li",null,[n[37]||(n[37]=t(" von openWB zwingend erwartete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/currents ",1)]),_:1}),n[12]||(n[12]=l("br",null,null,-1)),n[13]||(n[13]=t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[14]||(n[14]=l("br",null,null,-1)),n[15]||(n[15]=t(" Beispiel: ")),n[16]||(n[16]=l("span",{class:"text-info"},"[6.78,6.89,6.94]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power ",1)]),_:1}),n[17]||(n[17]=l("br",null,null,-1)),n[18]||(n[18]=t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[19]||(n[19]=l("br",null,null,-1)),n[20]||(n[20]=t(" Beispiel: ")),n[21]||(n[21]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/plug_state ",1)]),_:1}),n[22]||(n[22]=l("br",null,null,-1)),n[23]||(n[23]=t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool).")),n[24]||(n[24]=l("br",null,null,-1)),n[25]||(n[25]=t(" Beispiel: ")),n[26]||(n[26]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/charge_state ",1)]),_:1}),n[27]||(n[27]=l("br",null,null,-1)),n[28]||(n[28]=t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool).")),n[29]||(n[29]=l("br",null,null,-1)),n[30]||(n[30]=t(" Beispiel: ")),n[31]||(n[31]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/phases_in_use ",1)]),_:1}),n[32]||(n[32]=l("br",null,null,-1)),n[33]||(n[33]=t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3")),n[34]||(n[34]=l("br",null,null,-1)),n[35]||(n[35]=t(" Beispiel: ")),n[36]||(n[36]=l("span",{class:"text-info"},"3",-1))])])]),l("li",null,[n[71]||(n[71]=t(" optionale Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/imported ",1)]),_:1}),n[38]||(n[38]=l("br",null,null,-1)),n[39]||(n[39]=t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[40]||(n[40]=l("br",null,null,-1)),n[41]||(n[41]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[42]||(n[42]=l("br",null,null,-1)),n[43]||(n[43]=t(" Beispiel: ")),n[44]||(n[44]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/exported ",1)]),_:1}),n[45]||(n[45]=l("br",null,null,-1)),n[46]||(n[46]=t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[47]||(n[47]=l("br",null,null,-1)),n[48]||(n[48]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[49]||(n[49]=l("br",null,null,-1)),n[50]||(n[50]=t(" Beispiel: ")),n[51]||(n[51]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/voltages ",1)]),_:1}),n[52]||(n[52]=l("br",null,null,-1)),n[53]||(n[53]=t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv.")),n[54]||(n[54]=l("br",null,null,-1)),n[55]||(n[55]=t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[56]||(n[56]=l("br",null,null,-1)),n[57]||(n[57]=t(" Beispiel: ")),n[58]||(n[58]=l("span",{class:"text-info"},"[230.12,231.08,232.54]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power_factors ",1)]),_:1}),n[59]||(n[59]=l("br",null,null,-1)),n[60]||(n[60]=t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1.")),n[61]||(n[61]=l("br",null,null,-1)),n[62]||(n[62]=t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[63]||(n[63]=l("br",null,null,-1)),n[64]||(n[64]=t(" Beispiel: ")),n[65]||(n[65]=l("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/rfid_tag ",1)]),_:1}),n[66]||(n[66]=l("br",null,null,-1)),n[67]||(n[67]=t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert.")),n[68]||(n[68]=l("br",null,null,-1)),n[69]||(n[69]=t(" Beispiel: ")),n[70]||(n[70]=l("span",{class:"text-info"},'"123654"',-1))])])])])]),_:1})])}const D=g(m,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{D as default};
+import{C as d}from"./ChargePointInstallation-8dff21bc.js";import{_ as g,u,k as a,l as f,D as e,N as i,y as t,x as l,z as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"ChargePointMqtt",mixins:[d]},b={class:"charge-point-mqtt"};function k(o,n,B,v,w,W){const p=u("openwb-base-alert"),s=u("openwb-base-copy-to-clipboard");return a(),f("div",b,[e(p,{subtype:"danger"},{default:i(()=>n[0]||(n[0]=[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")])),_:1}),e(p,{subtype:"info"},{default:i(()=>[n[72]||(n[72]=t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden.")),n[73]||(n[73]=l("br",null,null,-1)),n[74]||(n[74]=t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). ")),l("ol",null,[l("li",null,[n[11]||(n[11]=t(" von openWB gesendete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/current ",1)]),_:1}),n[1]||(n[1]=l("br",null,null,-1)),n[2]||(n[2]=t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[3]||(n[3]=l("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=l("span",{class:"text-info"},"12.34",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/phases_to_use ",1)]),_:1}),n[6]||(n[6]=l("br",null,null,-1)),n[7]||(n[7]=t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3")),n[8]||(n[8]=l("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=l("span",{class:"text-info"},"1",-1))])])]),l("li",null,[n[37]||(n[37]=t(" von openWB zwingend erwartete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/currents ",1)]),_:1}),n[12]||(n[12]=l("br",null,null,-1)),n[13]||(n[13]=t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[14]||(n[14]=l("br",null,null,-1)),n[15]||(n[15]=t(" Beispiel: ")),n[16]||(n[16]=l("span",{class:"text-info"},"[6.78,6.89,6.94]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power ",1)]),_:1}),n[17]||(n[17]=l("br",null,null,-1)),n[18]||(n[18]=t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[19]||(n[19]=l("br",null,null,-1)),n[20]||(n[20]=t(" Beispiel: ")),n[21]||(n[21]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/plug_state ",1)]),_:1}),n[22]||(n[22]=l("br",null,null,-1)),n[23]||(n[23]=t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool).")),n[24]||(n[24]=l("br",null,null,-1)),n[25]||(n[25]=t(" Beispiel: ")),n[26]||(n[26]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/charge_state ",1)]),_:1}),n[27]||(n[27]=l("br",null,null,-1)),n[28]||(n[28]=t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool).")),n[29]||(n[29]=l("br",null,null,-1)),n[30]||(n[30]=t(" Beispiel: ")),n[31]||(n[31]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/phases_in_use ",1)]),_:1}),n[32]||(n[32]=l("br",null,null,-1)),n[33]||(n[33]=t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3")),n[34]||(n[34]=l("br",null,null,-1)),n[35]||(n[35]=t(" Beispiel: ")),n[36]||(n[36]=l("span",{class:"text-info"},"3",-1))])])]),l("li",null,[n[71]||(n[71]=t(" optionale Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/imported ",1)]),_:1}),n[38]||(n[38]=l("br",null,null,-1)),n[39]||(n[39]=t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[40]||(n[40]=l("br",null,null,-1)),n[41]||(n[41]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[42]||(n[42]=l("br",null,null,-1)),n[43]||(n[43]=t(" Beispiel: ")),n[44]||(n[44]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/exported ",1)]),_:1}),n[45]||(n[45]=l("br",null,null,-1)),n[46]||(n[46]=t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[47]||(n[47]=l("br",null,null,-1)),n[48]||(n[48]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[49]||(n[49]=l("br",null,null,-1)),n[50]||(n[50]=t(" Beispiel: ")),n[51]||(n[51]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/voltages ",1)]),_:1}),n[52]||(n[52]=l("br",null,null,-1)),n[53]||(n[53]=t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv.")),n[54]||(n[54]=l("br",null,null,-1)),n[55]||(n[55]=t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[56]||(n[56]=l("br",null,null,-1)),n[57]||(n[57]=t(" Beispiel: ")),n[58]||(n[58]=l("span",{class:"text-info"},"[230.12,231.08,232.54]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power_factors ",1)]),_:1}),n[59]||(n[59]=l("br",null,null,-1)),n[60]||(n[60]=t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1.")),n[61]||(n[61]=l("br",null,null,-1)),n[62]||(n[62]=t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[63]||(n[63]=l("br",null,null,-1)),n[64]||(n[64]=t(" Beispiel: ")),n[65]||(n[65]=l("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/rfid_tag ",1)]),_:1}),n[66]||(n[66]=l("br",null,null,-1)),n[67]||(n[67]=t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert.")),n[68]||(n[68]=l("br",null,null,-1)),n[69]||(n[69]=t(" Beispiel: ")),n[70]||(n[70]=l("span",{class:"text-info"},'"123654"',-1))])])])])]),_:1})])}const D=g(m,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{D as default};
diff --git a/web/settings/assets/commands-0749d4c7.js b/web/settings/assets/commands-62da4db2.js
similarity index 93%
rename from web/settings/assets/commands-0749d4c7.js
rename to web/settings/assets/commands-62da4db2.js
index 8aa1b0620f..0fa07e4c29 100644
--- a/web/settings/assets/commands-0749d4c7.js
+++ b/web/settings/assets/commands-62da4db2.js
@@ -1 +1 @@
-import{a as i}from"./ChargePointInstallation-12a5c989.js";import{_ as r,u as p,k as d,l as c,D as u,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointCommandsOpenwbPro",mixins:[i],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!<br />";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})}}},h={class:"charge-point-commands-openwb-pro"};function _(t,o,e,s,f,n){const a=p("openwb-base-button-input");return d(),c("div",h,[u(a,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:m(()=>o[0]||(o[0]=[l(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["disabled","onButtonClicked"])])}const $=r(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{$ as default};
+import{a as i}from"./ChargePointInstallation-8dff21bc.js";import{_ as r,u as p,k as d,l as c,D as u,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointCommandsOpenwbPro",mixins:[i],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!<br />";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})}}},h={class:"charge-point-commands-openwb-pro"};function _(t,o,e,s,f,n){const a=p("openwb-base-button-input");return d(),c("div",h,[u(a,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:m(()=>o[0]||(o[0]=[l(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["disabled","onButtonClicked"])])}const $=r(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{$ as default};
diff --git a/web/settings/assets/consumption_counter-a72d5a10.js b/web/settings/assets/consumption_counter-c6d1b3df.js
similarity index 93%
rename from web/settings/assets/consumption_counter-a72d5a10.js
rename to web/settings/assets/consumption_counter-c6d1b3df.js
index 512d434345..bc93adf1ba 100644
--- a/web/settings/assets/consumption_counter-a72d5a10.js
+++ b/web/settings/assets/consumption_counter-c6d1b3df.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as o,k as b,l as c,D as t,N as s,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(n,e,w,v,x,B){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),p=o("openwb-base-select-input"),a=o("openwb-base-number-input");return b(),c("div",f,[t(l,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für openWB-Flex Verbrauchszähler ")])),_:1}),t(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{k as default};
+import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as o,k as b,l as c,D as t,N as s,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(n,e,w,v,x,B){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),p=o("openwb-base-select-input"),a=o("openwb-base-number-input");return b(),c("div",f,[t(l,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für openWB-Flex Verbrauchszähler ")])),_:1}),t(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-6f319353.js b/web/settings/assets/counter-02712182.js
similarity index 88%
rename from web/settings/assets/counter-6f319353.js
rename to web/settings/assets/counter-02712182.js
index 4fcecffcca..c3150c738c 100644
--- a/web/settings/assets/counter-6f319353.js
+++ b/web/settings/assets/counter-02712182.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as d,l as c,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[a]},_={class:"device-mtec-counter"};function b(o,e,f,v,g,C){const r=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),c("div",_,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für M-Tec Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const V=u(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{V as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as d,l as c,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[a]},_={class:"device-mtec-counter"};function b(o,e,f,v,g,C){const r=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),c("div",_,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für M-Tec Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const V=u(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-e43b2263.js b/web/settings/assets/counter-116a65cb.js
similarity index 85%
rename from web/settings/assets/counter-e43b2263.js
rename to web/settings/assets/counter-116a65cb.js
index 0d2e200005..739306faa8 100644
--- a/web/settings/assets/counter-e43b2263.js
+++ b/web/settings/assets/counter-116a65cb.js
@@ -1 +1 @@
-import{C as t}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as s,k as n,l as a,D as i,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceCarloGavazziCounter",mixins:[t]},_={class:"device-carlo-gavazzi-counter"};function u(l,e,d,f,v,z){const o=s("openwb-base-alert");return n(),a("div",_,[i(o,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")])),_:1})])}const N=r(m,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{N as default};
+import{C as t}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as s,k as n,l as a,D as i,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceCarloGavazziCounter",mixins:[t]},_={class:"device-carlo-gavazzi-counter"};function u(l,e,d,f,v,z){const o=s("openwb-base-alert");return n(),a("div",_,[i(o,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")])),_:1})])}const N=r(m,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-ab7dda04.js b/web/settings/assets/counter-277eabf6.js
similarity index 92%
rename from web/settings/assets/counter-ab7dda04.js
rename to web/settings/assets/counter-277eabf6.js
index 9e0df63122..f67857c118 100644
--- a/web/settings/assets/counter-ab7dda04.js
+++ b/web/settings/assets/counter-277eabf6.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as r,k as m,l as g,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerCounter",mixins:[s]},_={class:"device-vzlogger-counter"};function c(n,e,b,v,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[t(a,null,{default:l(()=>e[3]||(e[3]=[u(" Einstellungen für VZLogger Zähler ")])),_:1}),t(p,{subtype:"info"},{default:l(()=>e[4]||(e[4]=[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":n.component.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const E=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{E as default};
+import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as r,k as m,l as g,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerCounter",mixins:[s]},_={class:"device-vzlogger-counter"};function c(n,e,b,v,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[t(a,null,{default:l(()=>e[3]||(e[3]=[u(" Einstellungen für VZLogger Zähler ")])),_:1}),t(p,{subtype:"info"},{default:l(()=>e[4]||(e[4]=[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":n.component.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const E=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-9fd0b8be.js b/web/settings/assets/counter-321d3599.js
similarity index 87%
rename from web/settings/assets/counter-9fd0b8be.js
rename to web/settings/assets/counter-321d3599.js
index ebbc6626f0..0df57135ce 100644
--- a/web/settings/assets/counter-9fd0b8be.js
+++ b/web/settings/assets/counter-321d3599.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l as u,D as t,N as l,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisCounter",mixins:[p]},_={class:"device-solis-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{E as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l as u,D as t,N as l,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisCounter",mixins:[p]},_={class:"device-solis-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-c524e146.js b/web/settings/assets/counter-38172dbc.js
similarity index 92%
rename from web/settings/assets/counter-c524e146.js
rename to web/settings/assets/counter-38172dbc.js
index b8bcbfb853..493644cd94 100644
--- a/web/settings/assets/counter-c524e146.js
+++ b/web/settings/assets/counter-38172dbc.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as o,k as b,l as c,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceOpenwbFlexCounter",mixins:[d]},_={class:"device-openwb-flex-counter"};function v(n,e,w,g,M,x){const l=o("openwb-base-heading"),a=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return b(),c("div",_,[t(l,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für openWB-Flex Zähler ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{k as default};
+import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as o,k as b,l as c,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceOpenwbFlexCounter",mixins:[d]},_={class:"device-openwb-flex-counter"};function v(n,e,w,g,M,x){const l=o("openwb-base-heading"),a=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return b(),c("div",_,[t(l,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für openWB-Flex Zähler ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-37e09ebf.js b/web/settings/assets/counter-3942ce7f.js
similarity index 85%
rename from web/settings/assets/counter-37e09ebf.js
rename to web/settings/assets/counter-3942ce7f.js
index 7a81b3d00b..4beb6c1ea0 100644
--- a/web/settings/assets/counter-37e09ebf.js
+++ b/web/settings/assets/counter-3942ce7f.js
@@ -1 +1 @@
-import{C as n}from"./HardwareInstallation-6cc98da9.js";import{_ as o,u as s,k as r,l as a,D as i,N as m,y as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceTeslaCounter",mixins:[n]},l={class:"device-tesla-counter"};function _(d,e,u,f,v,x){const t=s("openwb-base-alert");return r(),a("div",l,[i(t,{subtype:"info"},{default:m(()=>e[0]||(e[0]=[p(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")])),_:1})])}const N=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{N as default};
+import{C as n}from"./HardwareInstallation-70f156e6.js";import{_ as o,u as s,k as r,l as a,D as i,N as m,y as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceTeslaCounter",mixins:[n]},l={class:"device-tesla-counter"};function _(d,e,u,f,v,x){const t=s("openwb-base-alert");return r(),a("div",l,[i(t,{subtype:"info"},{default:m(()=>e[0]||(e[0]=[p(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")])),_:1})])}const N=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-11a808b3.js b/web/settings/assets/counter-4410dc4e.js
similarity index 97%
rename from web/settings/assets/counter-11a808b3.js
rename to web/settings/assets/counter-4410dc4e.js
index 2156a06172..2d8e4e87d3 100644
--- a/web/settings/assets/counter-11a808b3.js
+++ b/web/settings/assets/counter-4410dc4e.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u,k as f,l as g,D as l,N as o,y as t,x as e,z as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMqttCounter",mixins:[d]},k={class:"device-mqtt-counter"};function B(i,n,z,x,v,w){const p=u("openwb-base-heading"),s=u("openwb-base-copy-to-clipboard"),m=u("openwb-base-alert");return f(),g("div",k,[l(p,null,{default:o(()=>n[0]||(n[0]=[t(" Einstellungen für MQTT Zähler ")])),_:1}),l(m,{subtype:"info"},{default:o(()=>[n[41]||(n[41]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power ",1)]),_:1}),n[1]||(n[1]=e("br",null,null,-1)),n[2]||(n[2]=t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung")),n[3]||(n[3]=e("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=e("span",{class:"text-info"},"-123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/imported ",1)]),_:1}),n[6]||(n[6]=e("br",null,null,-1)),n[7]||(n[7]=t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[8]||(n[8]=e("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=e("span",{class:"text-info"},"123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/exported ",1)]),_:1}),n[11]||(n[11]=e("br",null,null,-1)),n[12]||(n[12]=t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[13]||(n[13]=e("br",null,null,-1)),n[14]||(n[14]=t(" Beispiel: ")),n[15]||(n[15]=e("span",{class:"text-info"},"123.45",-1))])]),n[42]||(n[42]=t(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/currents ",1)]),_:1}),n[16]||(n[16]=e("br",null,null,-1)),n[17]||(n[17]=t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung")),n[18]||(n[18]=e("br",null,null,-1)),n[19]||(n[19]=t(" Beispiel: ")),n[20]||(n[20]=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1))])]),n[43]||(n[43]=t(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/frequency ",1)]),_:1}),n[21]||(n[21]=e("br",null,null,-1)),n[22]||(n[22]=t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen")),n[23]||(n[23]=e("br",null,null,-1)),n[24]||(n[24]=t(" Beispiel: ")),n[25]||(n[25]=e("span",{class:"text-info"},"50.12",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/voltages ",1)]),_:1}),n[26]||(n[26]=e("br",null,null,-1)),n[27]||(n[27]=t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)")),n[28]||(n[28]=e("br",null,null,-1)),n[29]||(n[29]=t(" Beispiel: ")),n[30]||(n[30]=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/powers ",1)]),_:1}),n[31]||(n[31]=e("br",null,null,-1)),n[32]||(n[32]=t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)")),n[33]||(n[33]=e("br",null,null,-1)),n[34]||(n[34]=t(" Beispiel: ")),n[35]||(n[35]=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power_factors ",1)]),_:1}),n[36]||(n[36]=e("br",null,null,-1)),n[37]||(n[37]=t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1")),n[38]||(n[38]=e("br",null,null,-1)),n[39]||(n[39]=t(" Beispiel: ")),n[40]||(n[40]=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1))])])]),_:1})])}const q=a(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{q as default};
+import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as a,u,k as f,l as g,D as l,N as o,y as t,x as e,z as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMqttCounter",mixins:[d]},k={class:"device-mqtt-counter"};function B(i,n,z,x,v,w){const p=u("openwb-base-heading"),s=u("openwb-base-copy-to-clipboard"),m=u("openwb-base-alert");return f(),g("div",k,[l(p,null,{default:o(()=>n[0]||(n[0]=[t(" Einstellungen für MQTT Zähler ")])),_:1}),l(m,{subtype:"info"},{default:o(()=>[n[41]||(n[41]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power ",1)]),_:1}),n[1]||(n[1]=e("br",null,null,-1)),n[2]||(n[2]=t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung")),n[3]||(n[3]=e("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=e("span",{class:"text-info"},"-123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/imported ",1)]),_:1}),n[6]||(n[6]=e("br",null,null,-1)),n[7]||(n[7]=t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[8]||(n[8]=e("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=e("span",{class:"text-info"},"123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/exported ",1)]),_:1}),n[11]||(n[11]=e("br",null,null,-1)),n[12]||(n[12]=t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[13]||(n[13]=e("br",null,null,-1)),n[14]||(n[14]=t(" Beispiel: ")),n[15]||(n[15]=e("span",{class:"text-info"},"123.45",-1))])]),n[42]||(n[42]=t(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/currents ",1)]),_:1}),n[16]||(n[16]=e("br",null,null,-1)),n[17]||(n[17]=t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung")),n[18]||(n[18]=e("br",null,null,-1)),n[19]||(n[19]=t(" Beispiel: ")),n[20]||(n[20]=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1))])]),n[43]||(n[43]=t(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/frequency ",1)]),_:1}),n[21]||(n[21]=e("br",null,null,-1)),n[22]||(n[22]=t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen")),n[23]||(n[23]=e("br",null,null,-1)),n[24]||(n[24]=t(" Beispiel: ")),n[25]||(n[25]=e("span",{class:"text-info"},"50.12",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/voltages ",1)]),_:1}),n[26]||(n[26]=e("br",null,null,-1)),n[27]||(n[27]=t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)")),n[28]||(n[28]=e("br",null,null,-1)),n[29]||(n[29]=t(" Beispiel: ")),n[30]||(n[30]=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/powers ",1)]),_:1}),n[31]||(n[31]=e("br",null,null,-1)),n[32]||(n[32]=t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)")),n[33]||(n[33]=e("br",null,null,-1)),n[34]||(n[34]=t(" Beispiel: ")),n[35]||(n[35]=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power_factors ",1)]),_:1}),n[36]||(n[36]=e("br",null,null,-1)),n[37]||(n[37]=t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1")),n[38]||(n[38]=e("br",null,null,-1)),n[39]||(n[39]=t(" Beispiel: ")),n[40]||(n[40]=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1))])])]),_:1})])}const q=a(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{q as default};
diff --git a/web/settings/assets/counter-4760f2a8.js b/web/settings/assets/counter-4498494c.js
similarity index 82%
rename from web/settings/assets/counter-4760f2a8.js
rename to web/settings/assets/counter-4498494c.js
index 94fca010a4..b73568742c 100644
--- a/web/settings/assets/counter-4760f2a8.js
+++ b/web/settings/assets/counter-4498494c.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as t,k as a,l,D as n,N as d,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(e,o,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),l("div",_,[n(i,null,{default:d(()=>o[1]||(o[1]=[m(" Einstellungen für Powerdog Zähler ")])),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":e.component.configuration.position_evu,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as t,k as a,l,D as n,N as d,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(e,o,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),l("div",_,[n(i,null,{default:d(()=>o[1]||(o[1]=[m(" Einstellungen für Powerdog Zähler ")])),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":e.component.configuration.position_evu,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-6dd39fae.js b/web/settings/assets/counter-46612257.js
similarity index 89%
rename from web/settings/assets/counter-6dd39fae.js
rename to web/settings/assets/counter-46612257.js
index b7fb3c69f6..fe7f68c8f4 100644
--- a/web/settings/assets/counter-6dd39fae.js
+++ b/web/settings/assets/counter-46612257.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},v={class:"device-openwb-evukit-counter"};function _(o,e,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Zähler ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},v={class:"device-openwb-evukit-counter"};function _(o,e,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Zähler ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-6a117469.js b/web/settings/assets/counter-50d0810f.js
similarity index 86%
rename from web/settings/assets/counter-6a117469.js
rename to web/settings/assets/counter-50d0810f.js
index 29520545fb..f8b4d7d672 100644
--- a/web/settings/assets/counter-6a117469.js
+++ b/web/settings/assets/counter-50d0810f.js
@@ -1 +1 @@
-import{C as t}from"./HardwareInstallation-6cc98da9.js";import{_ as o,u as s,k as i,l as r,D as a,N as p,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSonnenbatterieCounter",mixins:[t]},d={class:"device-sonnenbatterie-counter"};function _(l,e,u,f,b,v){const n=s("openwb-base-alert");return i(),r("div",d,[a(n,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[m(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")])),_:1})])}const N=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{N as default};
+import{C as t}from"./HardwareInstallation-70f156e6.js";import{_ as o,u as s,k as i,l as r,D as a,N as p,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSonnenbatterieCounter",mixins:[t]},d={class:"device-sonnenbatterie-counter"};function _(l,e,u,f,b,v){const n=s("openwb-base-alert");return i(),r("div",d,[a(n,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[m(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")])),_:1})])}const N=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-8cf3e538.js b/web/settings/assets/counter-55fd6368.js
similarity index 87%
rename from web/settings/assets/counter-8cf3e538.js
rename to web/settings/assets/counter-55fd6368.js
index 5821d3a149..b1229da0df 100644
--- a/web/settings/assets/counter-8cf3e538.js
+++ b/web/settings/assets/counter-55fd6368.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[p]},c={class:"device-fox_ess-counter"};function f(o,e,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Zähler ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const h=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{h as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[p]},c={class:"device-fox_ess-counter"};function f(o,e,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Zähler ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const h=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{h as default};
diff --git a/web/settings/assets/counter-211768c3.js b/web/settings/assets/counter-68a2bd86.js
similarity index 92%
rename from web/settings/assets/counter-211768c3.js
rename to web/settings/assets/counter-68a2bd86.js
index 375bcf0e44..dbc58a0ab7 100644
--- a/web/settings/assets/counter-211768c3.js
+++ b/web/settings/assets/counter-68a2bd86.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as t,k as c,l as m,D as r,N as i,y as n,x as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[u]},b={class:"device-powerfox-counter"};function g(o,e,w,x,_,h){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return c(),m("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Zähler ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{V as default};
+import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as t,k as c,l as m,D as r,N as i,y as n,x as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[u]},b={class:"device-powerfox-counter"};function g(o,e,w,x,_,h){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return c(),m("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Zähler ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-3c3a8ee4.js b/web/settings/assets/counter-7a3ba47e.js
similarity index 90%
rename from web/settings/assets/counter-3c3a8ee4.js
rename to web/settings/assets/counter-7a3ba47e.js
index e8807888bb..38f1b446ac 100644
--- a/web/settings/assets/counter-3c3a8ee4.js
+++ b/web/settings/assets/counter-7a3ba47e.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as t,k as m,l as d,D as o,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(n,e,b,g,v,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return m(),d("div",_,[o(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für virtuelle Zähler ")])),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":n.component.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>e[2]||(e[2]=[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")])),_:1},8,["model-value"])])}const N=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{N as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as t,k as m,l as d,D as o,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(n,e,b,g,v,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return m(),d("div",_,[o(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für virtuelle Zähler ")])),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":n.component.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>e[2]||(e[2]=[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")])),_:1},8,["model-value"])])}const N=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-e2ea1207.js b/web/settings/assets/counter-7bf5aea7.js
similarity index 87%
rename from web/settings/assets/counter-e2ea1207.js
rename to web/settings/assets/counter-7bf5aea7.js
index 0ecfb6d019..6daa97fc1d 100644
--- a/web/settings/assets/counter-e2ea1207.js
+++ b/web/settings/assets/counter-7bf5aea7.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as p,l as u,D as n,N as l,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(o,e,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),u("div",_,[n(r,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für smart-me Zähler ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as p,l as u,D as n,N as l,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(o,e,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),u("div",_,[n(r,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für smart-me Zähler ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-339b78e6.js b/web/settings/assets/counter-7fca39df.js
similarity index 96%
rename from web/settings/assets/counter-339b78e6.js
rename to web/settings/assets/counter-7fca39df.js
index ff3e49308c..995ac417fe 100644
--- a/web/settings/assets/counter-339b78e6.js
+++ b/web/settings/assets/counter-7fca39df.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u,k as m,l as f,D as t,N as a,y as l,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"};function v(n,e,j,q,P,C){const i=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-alert");return m(),f("div",w,[t(i,null,{default:a(()=>e[9]||(e[9]=[l(" Einstellungen für JSON Zähler ")])),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>e[10]||(e[10]=[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":n.component.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>e[11]||(e[11]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>e[12]||(e[12]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>e[13]||(e[13]=[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")])),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=o=>n.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const z=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{z as default};
+import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as p,u,k as m,l as f,D as t,N as a,y as l,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"};function v(n,e,j,q,P,C){const i=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-alert");return m(),f("div",w,[t(i,null,{default:a(()=>e[9]||(e[9]=[l(" Einstellungen für JSON Zähler ")])),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>e[10]||(e[10]=[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":n.component.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>e[11]||(e[11]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>e[12]||(e[12]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>e[13]||(e[13]=[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")])),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=o=>n.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const z=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{z as default};
diff --git a/web/settings/assets/counter-4e131617.js b/web/settings/assets/counter-865f9c61.js
similarity index 97%
rename from web/settings/assets/counter-4e131617.js
rename to web/settings/assets/counter-865f9c61.js
index f6add0677c..4afa51eec5 100644
--- a/web/settings/assets/counter-4e131617.js
+++ b/web/settings/assets/counter-865f9c61.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as s,k as p,l as g,D as i,N as a,y as n,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpCounter",mixins:[u]},b={class:"device-http-counter"};function f(t,e,w,v,k,S){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),g("div",b,[i(d,null,{default:a(()=>e[6]||(e[6]=[n(" Einstellungen für Http Zähler ")])),_:1}),i(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>e[9]||(e[9]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l1_path,"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>e[10]||(e[10]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l2_path,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>e[11]||(e[11]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l3_path,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>e[12]||(e[12]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const F=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{F as default};
+import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as s,k as p,l as g,D as i,N as a,y as n,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpCounter",mixins:[u]},b={class:"device-http-counter"};function f(t,e,w,v,k,S){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),g("div",b,[i(d,null,{default:a(()=>e[6]||(e[6]=[n(" Einstellungen für Http Zähler ")])),_:1}),i(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>e[9]||(e[9]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l1_path,"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>e[10]||(e[10]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l2_path,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>e[11]||(e[11]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l3_path,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>e[12]||(e[12]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const F=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{F as default};
diff --git a/web/settings/assets/counter-e2aa39de.js b/web/settings/assets/counter-86f04938.js
similarity index 85%
rename from web/settings/assets/counter-e2aa39de.js
rename to web/settings/assets/counter-86f04938.js
index 95debd7cc7..389045ff4e 100644
--- a/web/settings/assets/counter-e2aa39de.js
+++ b/web/settings/assets/counter-86f04938.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronCounter",mixins:[p]},_={class:"device-victron-counter"};function f(o,e,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Zähler ")])),_:1}),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":o.component.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const N=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{N as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronCounter",mixins:[p]},_={class:"device-victron-counter"};function f(o,e,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Zähler ")])),_:1}),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":o.component.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const N=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-5e68cf56.js b/web/settings/assets/counter-8757edbf.js
similarity index 90%
rename from web/settings/assets/counter-5e68cf56.js
rename to web/settings/assets/counter-8757edbf.js
index 5f303686a4..7fa085ac16 100644
--- a/web/settings/assets/counter-5e68cf56.js
+++ b/web/settings/assets/counter-8757edbf.js
@@ -1 +1 @@
-import{C as n}from"./HardwareInstallation-6cc98da9.js";import{_ as s,u as a,k as i,l,D as p,N as c,x as e,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceSolarLogCounter",mixins:[n]},u={class:"device-solar_log-counter"};function d(_,o,g,h,f,b){const t=a("openwb-base-alert");return i(),l("div",u,[p(t,{subtype:"info"},{default:c(()=>o[0]||(o[0]=[e("span",{class:"text-danger"},[r(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),e("br")],-1),r(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),e("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1),r(". ")])),_:1})])}const N=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{N as default};
+import{C as n}from"./HardwareInstallation-70f156e6.js";import{_ as s,u as a,k as i,l,D as p,N as c,x as e,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceSolarLogCounter",mixins:[n]},u={class:"device-solar_log-counter"};function d(_,o,g,h,f,b){const t=a("openwb-base-alert");return i(),l("div",u,[p(t,{subtype:"info"},{default:c(()=>o[0]||(o[0]=[e("span",{class:"text-danger"},[r(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),e("br")],-1),r(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),e("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1),r(". ")])),_:1})])}const N=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-9028760b.js b/web/settings/assets/counter-8af15294.js
similarity index 83%
rename from web/settings/assets/counter-9028760b.js
rename to web/settings/assets/counter-8af15294.js
index ed907add1c..7a24074140 100644
--- a/web/settings/assets/counter-9028760b.js
+++ b/web/settings/assets/counter-8af15294.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as d,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function c(o,e,b,f,v,y){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const N=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{N as default};
+import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as d,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function c(o,e,b,f,v,y){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const N=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-4e0e153d.js b/web/settings/assets/counter-9b6e8dff.js
similarity index 89%
rename from web/settings/assets/counter-4e0e153d.js
rename to web/settings/assets/counter-9b6e8dff.js
index 5a4d4ba21a..77e3095d40 100644
--- a/web/settings/assets/counter-4e0e153d.js
+++ b/web/settings/assets/counter-9b6e8dff.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as c,u as t,k as m,l as u,D as o,N as s,y as l,x as n,z as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShellyCounter",mixins:[p]},f={class:"device-shelly-counter"},h={class:"small"};function b(r,e,y,g,x,v){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return m(),u("div",f,[o(i,null,{default:s(()=>[e[0]||(e[0]=l(" Einstellungen für Shelly Zähler ")),n("span",h,"(Modul: "+d(r.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shellys unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),n("br",null,null,-1),l(" Diese Komponente benötigt keine Einstellungen. ")])),_:1})])}const N=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{N as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as c,u as t,k as m,l as u,D as o,N as s,y as l,x as n,z as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShellyCounter",mixins:[p]},f={class:"device-shelly-counter"},h={class:"small"};function b(r,e,y,g,x,v){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return m(),u("div",f,[o(i,null,{default:s(()=>[e[0]||(e[0]=l(" Einstellungen für Shelly Zähler ")),n("span",h,"(Modul: "+d(r.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shellys unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),n("br",null,null,-1),l(" Diese Komponente benötigt keine Einstellungen. ")])),_:1})])}const N=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-2d7b83ed.js b/web/settings/assets/counter-9fcc4ae5.js
similarity index 88%
rename from web/settings/assets/counter-2d7b83ed.js
rename to web/settings/assets/counter-9fcc4ae5.js
index f44bfcb385..dcf436b2dc 100644
--- a/web/settings/assets/counter-2d7b83ed.js
+++ b/web/settings/assets/counter-9fcc4ae5.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as s,u as n,k as i,l as a,D as p,N as c,y as o,x as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPikoCounter",mixins:[r]},u={class:"device-kostal-piko-counter"};function _(d,e,f,b,h,k){const t=n("openwb-base-alert");return i(),a("div",u,[p(t,{subtype:"info"},{default:c(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const Z=s(l,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{Z as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as s,u as n,k as i,l as a,D as p,N as c,y as o,x as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPikoCounter",mixins:[r]},u={class:"device-kostal-piko-counter"};function _(d,e,f,b,h,k){const t=n("openwb-base-alert");return i(),a("div",u,[p(t,{subtype:"info"},{default:c(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const Z=s(l,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{Z as default};
diff --git a/web/settings/assets/counter-61e6692b.js b/web/settings/assets/counter-9ff0cd5b.js
similarity index 85%
rename from web/settings/assets/counter-61e6692b.js
rename to web/settings/assets/counter-9ff0cd5b.js
index 662c27fd47..c8fe8b36cc 100644
--- a/web/settings/assets/counter-61e6692b.js
+++ b/web/settings/assets/counter-9ff0cd5b.js
@@ -1 +1 @@
-import{C as o}from"./HardwareInstallation-6cc98da9.js";import{_ as n,u as i,k as s,l as a,D as r,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceJanitzaBat",mixins:[o]},u={class:"device-janitza-counter"};function _(d,e,f,l,v,b){const t=i("openwb-base-alert");return s(),a("div",u,[r(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')])),_:1})])}const D=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{D as default};
+import{C as o}from"./HardwareInstallation-70f156e6.js";import{_ as n,u as i,k as s,l as a,D as r,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceJanitzaBat",mixins:[o]},u={class:"device-janitza-counter"};function _(d,e,f,l,v,b){const t=i("openwb-base-alert");return s(),a("div",u,[r(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')])),_:1})])}const D=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-b8ca89e1.js b/web/settings/assets/counter-b0f78c7c.js
similarity index 90%
rename from web/settings/assets/counter-b8ca89e1.js
rename to web/settings/assets/counter-b0f78c7c.js
index f7f70312ec..be35bae34f 100644
--- a/web/settings/assets/counter-b8ca89e1.js
+++ b/web/settings/assets/counter-b0f78c7c.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as o,k as m,l as d,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSungrowCounter",mixins:[p]},g={class:"device-sungrow-counter"};function _(n,e,b,f,v,w){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return m(),d("div",g,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sungrow Zähler ")])),_:1}),t(u,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":n.component.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.version"))},{help:i(()=>e[2]||(e[2]=[r(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")])),_:1},8,["model-value"])])}const V=l(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/counter.vue"]]);export{V as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as o,k as m,l as d,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSungrowCounter",mixins:[p]},g={class:"device-sungrow-counter"};function _(n,e,b,f,v,w){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return m(),d("div",g,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sungrow Zähler ")])),_:1}),t(u,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":n.component.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.version"))},{help:i(()=>e[2]||(e[2]=[r(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")])),_:1},8,["model-value"])])}const V=l(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-59a65215.js b/web/settings/assets/counter-b3f26d9d.js
similarity index 88%
rename from web/settings/assets/counter-59a65215.js
rename to web/settings/assets/counter-b3f26d9d.js
index cd58b4b0b7..71992d4d03 100644
--- a/web/settings/assets/counter-59a65215.js
+++ b/web/settings/assets/counter-b3f26d9d.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as m,l as p,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(o,e,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),p("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{E as default};
+import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as m,l as p,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(o,e,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),p("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-62b27636.js b/web/settings/assets/counter-bc776e4a.js
similarity index 89%
rename from web/settings/assets/counter-62b27636.js
rename to web/settings/assets/counter-bc776e4a.js
index 79a599b539..a68571a12c 100644
--- a/web/settings/assets/counter-62b27636.js
+++ b/web/settings/assets/counter-bc776e4a.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as t,k as l,l as d,D as r,N as i,y as n,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"};function b(o,e,g,v,M,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return l(),d("div",f,[r(s,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für SMA-HM/EM Zähler ")])),_:1}),r(a,{title:"Seriennummer","model-value":o.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.serials"))},{help:i(()=>e[2]||(e[2]=[n(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),c("br",null,null,-1),n(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")])),_:1},8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{$ as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as t,k as l,l as d,D as r,N as i,y as n,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"};function b(o,e,g,v,M,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return l(),d("div",f,[r(s,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für SMA-HM/EM Zähler ")])),_:1}),r(a,{title:"Seriennummer","model-value":o.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.serials"))},{help:i(()=>e[2]||(e[2]=[n(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),c("br",null,null,-1),n(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")])),_:1},8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-b3df37ca.js b/web/settings/assets/counter-bff0132e.js
similarity index 86%
rename from web/settings/assets/counter-b3df37ca.js
rename to web/settings/assets/counter-bff0132e.js
index 87d99a463c..88334cf13d 100644
--- a/web/settings/assets/counter-b3df37ca.js
+++ b/web/settings/assets/counter-bff0132e.js
@@ -1 +1 @@
-import{C as o}from"./HardwareInstallation-6cc98da9.js";import{_ as s,u as n,k as r,l as i,D as a,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalSemCounter",mixins:[o]},l={class:"device-kostal-sem-counter"};function d(_,e,u,f,b,h){const t=n("openwb-base-alert");return r(),i("div",l,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")])),_:1})])}const D=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{D as default};
+import{C as o}from"./HardwareInstallation-70f156e6.js";import{_ as s,u as n,k as r,l as i,D as a,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalSemCounter",mixins:[o]},l={class:"device-kostal-sem-counter"};function d(_,e,u,f,b,h){const t=n("openwb-base-alert");return r(),i("div",l,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")])),_:1})])}const D=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-dae0c479.js b/web/settings/assets/counter-c8cb4ab4.js
similarity index 82%
rename from web/settings/assets/counter-dae0c479.js
rename to web/settings/assets/counter-c8cb4ab4.js
index 3288bd7798..a4499b1b1d 100644
--- a/web/settings/assets/counter-dae0c479.js
+++ b/web/settings/assets/counter-c8cb4ab4.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as o,k as d,l,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(n,e,b,v,g,w){const p=o("openwb-base-heading"),r=o("openwb-base-number-input");return d(),l("div",_,[t(p,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")])),_:1}),t(r,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[s(' EID für "net-consumption" ')])),_:1},8,["model-value"])])}const I=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{I as default};
+import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as o,k as d,l,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(n,e,b,v,g,w){const p=o("openwb-base-heading"),r=o("openwb-base-number-input");return d(),l("div",_,[t(p,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")])),_:1}),t(r,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[s(' EID für "net-consumption" ')])),_:1},8,["model-value"])])}const I=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{I as default};
diff --git a/web/settings/assets/counter-87bd2dba.js b/web/settings/assets/counter-cda681c6.js
similarity index 90%
rename from web/settings/assets/counter-87bd2dba.js
rename to web/settings/assets/counter-cda681c6.js
index c839e87846..918259c673 100644
--- a/web/settings/assets/counter-87bd2dba.js
+++ b/web/settings/assets/counter-cda681c6.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as m,l as c,D as r,N as i,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDiscovergyCounter",mixins:[d]},g={class:"device-discovergy-counter"};function _(t,e,v,b,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return m(),c("div",g,[r(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Zähler ")])),_:1}),r(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const z=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{z as default};
+import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as m,l as c,D as r,N as i,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDiscovergyCounter",mixins:[d]},g={class:"device-discovergy-counter"};function _(t,e,v,b,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return m(),c("div",g,[r(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Zähler ")])),_:1}),r(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const z=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{z as default};
diff --git a/web/settings/assets/counter-70744c17.js b/web/settings/assets/counter-dc002a5d.js
similarity index 88%
rename from web/settings/assets/counter-70744c17.js
rename to web/settings/assets/counter-dc002a5d.js
index f7a4f56f2a..d3d18cb540 100644
--- a/web/settings/assets/counter-70744c17.js
+++ b/web/settings/assets/counter-dc002a5d.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as n,u as s,k as i,l as a,D as c,N as p,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPlenticoreCounter",mixins:[r]},u={class:"device-kostal-plenticore-counter"};function _(d,e,f,b,h,v){const t=s("openwb-base-alert");return i(),a("div",u,[c(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),l("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const Z=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{Z as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as n,u as s,k as i,l as a,D as c,N as p,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPlenticoreCounter",mixins:[r]},u={class:"device-kostal-plenticore-counter"};function _(d,e,f,b,h,v){const t=s("openwb-base-alert");return i(),a("div",u,[c(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),l("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const Z=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{Z as default};
diff --git a/web/settings/assets/counter-9f134879.js b/web/settings/assets/counter-e6014599.js
similarity index 88%
rename from web/settings/assets/counter-9f134879.js
rename to web/settings/assets/counter-e6014599.js
index cea472b20e..374ef1e0a9 100644
--- a/web/settings/assets/counter-9f134879.js
+++ b/web/settings/assets/counter-e6014599.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as a,l as m,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyCounter",mixins:[p]},_={class:"device-sunnyboy-counter"};function b(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return a(),m("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const S=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{S as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as a,l as m,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyCounter",mixins:[p]},_={class:"device-sunnyboy-counter"};function b(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return a(),m("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const S=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{S as default};
diff --git a/web/settings/assets/counter-873539d4.js b/web/settings/assets/counter-ec9f9982.js
similarity index 87%
rename from web/settings/assets/counter-873539d4.js
rename to web/settings/assets/counter-ec9f9982.js
index 893313a128..e628a7fe33 100644
--- a/web/settings/assets/counter-873539d4.js
+++ b/web/settings/assets/counter-ec9f9982.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeCounter",mixins:[p]},_={class:"device-deye-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const h=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{h as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeCounter",mixins:[p]},_={class:"device-deye-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const h=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{h as default};
diff --git a/web/settings/assets/counter-2af1b45c.js b/web/settings/assets/counter-f74d8989.js
similarity index 91%
rename from web/settings/assets/counter-2af1b45c.js
rename to web/settings/assets/counter-f74d8989.js
index a9b6add078..0cc26f22df 100644
--- a/web/settings/assets/counter-2af1b45c.js
+++ b/web/settings/assets/counter-f74d8989.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as r,k as p,l as f,D as n,N as s,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolaredgeCounter",mixins:[d]},b={class:"device-solaredge-counter"};function c(o,e,_,v,w,C){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),f("div",b,[n(l,null,{default:s(()=>e[2]||(e[2]=[a(" Einstellungen für SolarEdge Zähler ")])),_:1}),n(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[a(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")])),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":o.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=m(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default};
+import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as r,k as p,l as f,D as n,N as s,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolaredgeCounter",mixins:[d]},b={class:"device-solaredge-counter"};function c(o,e,_,v,w,C){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),f("div",b,[n(l,null,{default:s(()=>e[2]||(e[2]=[a(" Einstellungen für SolarEdge Zähler ")])),_:1}),n(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[a(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")])),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":o.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=m(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default};
diff --git a/web/settings/assets/counter_sm-ce85abde.js b/web/settings/assets/counter_sm-46c91fda.js
similarity index 95%
rename from web/settings/assets/counter_sm-ce85abde.js
rename to web/settings/assets/counter_sm-46c91fda.js
index 102cd920b9..cfbf50b045 100644
--- a/web/settings/assets/counter_sm-ce85abde.js
+++ b/web/settings/assets/counter_sm-46c91fda.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as f,u as i,k as g,l as c,D as o,N as a,y as t,x as l,z as b}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},v={class:"device-fronius-counter-sm"},w=["href"];function D(n,e,M,k,S,s){const d=i("openwb-base-heading"),m=i("openwb-base-select-input"),u=i("openwb-base-number-input");return g(),c("div",v,[o(d,null,{default:a(()=>e[2]||(e[2]=[t(" Einstellungen für Fronius SmartMeter ")])),_:1}),o(m,{title:"Kompatibilitätsmodus","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":n.component.configuration.variant,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.variant"))},{help:a(()=>e[3]||(e[3]=[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")])),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":n.component.configuration.meter_id,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[e[4]||(e[4]=t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. ")),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},b(s.meterRealtimeUrl),9,w),e[5]||(e[5]=l("br",null,null,-1)),e[6]||(e[6]=t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. '))]),_:1},8,["model-value"])])}const U=f(_,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{U as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as f,u as i,k as g,l as c,D as o,N as a,y as t,x as l,z as b}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},v={class:"device-fronius-counter-sm"},w=["href"];function D(n,e,M,k,S,s){const d=i("openwb-base-heading"),m=i("openwb-base-select-input"),u=i("openwb-base-number-input");return g(),c("div",v,[o(d,null,{default:a(()=>e[2]||(e[2]=[t(" Einstellungen für Fronius SmartMeter ")])),_:1}),o(m,{title:"Kompatibilitätsmodus","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":n.component.configuration.variant,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.variant"))},{help:a(()=>e[3]||(e[3]=[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")])),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":n.component.configuration.meter_id,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[e[4]||(e[4]=t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. ")),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},b(s.meterRealtimeUrl),9,w),e[5]||(e[5]=l("br",null,null,-1)),e[6]||(e[6]=t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. '))]),_:1},8,["model-value"])])}const U=f(_,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-20a3cc0b.js b/web/settings/assets/device-17812629.js
similarity index 87%
rename from web/settings/assets/device-20a3cc0b.js
rename to web/settings/assets/device-17812629.js
index b962427000..e3e5896264 100644
--- a/web/settings/assets/device-20a3cc0b.js
+++ b/web/settings/assets/device-17812629.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as i,k as p,l,D as t,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(o,e,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>e[3]||(e[3]=[_(" Einstellungen für Azzurro ZCS ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{U as default};
+import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as i,k as p,l,D as t,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(o,e,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>e[3]||(e[3]=[_(" Einstellungen für Azzurro ZCS ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-f2e0c7de.js b/web/settings/assets/device-1a463b8a.js
similarity index 87%
rename from web/settings/assets/device-f2e0c7de.js
rename to web/settings/assets/device-1a463b8a.js
index 15194a763e..38f822bcab 100644
--- a/web/settings/assets/device-f2e0c7de.js
+++ b/web/settings/assets/device-1a463b8a.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as t,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(o,e,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SMA Webbox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=r(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{h as default};
+import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as t,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(o,e,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SMA Webbox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=r(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-f057baf4.js b/web/settings/assets/device-1eaab064.js
similarity index 89%
rename from web/settings/assets/device-f057baf4.js
rename to web/settings/assets/device-1eaab064.js
index cac5ac21ae..cffae14242 100644
--- a/web/settings/assets/device-f057baf4.js
+++ b/web/settings/assets/device-1eaab064.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as o,k as u,l as m,D as i,N as r,y as t,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceHttp",mixins:[d]},v={class:"device-http"};function _(n,e,b,g,x,w){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return u(),m("div",v,[i(s,null,{default:r(()=>e[1]||(e[1]=[t(" Einstellungen für Http ")])),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.url"))},{help:r(()=>e[2]||(e[2]=[t(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),c("br",null,null,-1),t(" Beispiel: http://mein.server:8080 ")])),_:1},8,["model-value"])])}const y=l(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{y as default};
+import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as o,k as u,l as m,D as i,N as r,y as t,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceHttp",mixins:[d]},v={class:"device-http"};function _(n,e,b,g,x,w){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return u(),m("div",v,[i(s,null,{default:r(()=>e[1]||(e[1]=[t(" Einstellungen für Http ")])),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.url"))},{help:r(()=>e[2]||(e[2]=[t(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),c("br",null,null,-1),t(" Beispiel: http://mein.server:8080 ")])),_:1},8,["model-value"])])}const y=l(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-930131aa.js b/web/settings/assets/device-2045e148.js
similarity index 84%
rename from web/settings/assets/device-930131aa.js
rename to web/settings/assets/device-2045e148.js
index 9666b6e29d..cc48247b65 100644
--- a/web/settings/assets/device-930131aa.js
+++ b/web/settings/assets/device-2045e148.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[a]},f={class:"device-fox_ess"};function b(o,e,v,g,x,w){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_("Einstellungen für FoxEss")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{y as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[a]},f={class:"device-fox_ess"};function b(o,e,v,g,x,w){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_("Einstellungen für FoxEss")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-1a057dc5.js b/web/settings/assets/device-24fa8719.js
similarity index 90%
rename from web/settings/assets/device-1a057dc5.js
rename to web/settings/assets/device-24fa8719.js
index 0116fe2a61..16499fe087 100644
--- a/web/settings/assets/device-1a057dc5.js
+++ b/web/settings/assets/device-24fa8719.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as n,k as u,l as d,D as a,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(t,e,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>e[2]||(e[2]=[c("Einstellungen für Tasmota")])),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase","not-selected":"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":t.device.configuration.phase,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default};
+import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as n,k as u,l as d,D as a,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(t,e,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>e[2]||(e[2]=[c("Einstellungen für Tasmota")])),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase","not-selected":"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":t.device.configuration.phase,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-17ee5402.js b/web/settings/assets/device-2812d314.js
similarity index 81%
rename from web/settings/assets/device-17ee5402.js
rename to web/settings/assets/device-2812d314.js
index 92bb449939..c473bf91e6 100644
--- a/web/settings/assets/device-17ee5402.js
+++ b/web/settings/assets/device-2812d314.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as d,l,D as s,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceYouless",mixins:[r]},_={class:"device-youless"};function f(o,e,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>e[1]||(e[1]=[m(" Einstellungen für Youless ")])),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const h=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{h as default};
+import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as d,l,D as s,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceYouless",mixins:[r]},_={class:"device-youless"};function f(o,e,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>e[1]||(e[1]=[m(" Einstellungen für Youless ")])),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const h=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-cbb1f36f.js b/web/settings/assets/device-282ac597.js
similarity index 89%
rename from web/settings/assets/device-cbb1f36f.js
rename to web/settings/assets/device-282ac597.js
index 56613b828c..3a4cede6aa 100644
--- a/web/settings/assets/device-cbb1f36f.js
+++ b/web/settings/assets/device-282ac597.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as r,k as u,l as d,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfox",mixins:[a]},c={class:"device-powerfox"};function v(o,e,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",c,[n(s,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Powerfox ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const P=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{P as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as r,k as u,l as d,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfox",mixins:[a]},c={class:"device-powerfox"};function v(o,e,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",c,[n(s,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Powerfox ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const P=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-f2ca9f52.js b/web/settings/assets/device-2861d843.js
similarity index 84%
rename from web/settings/assets/device-f2ca9f52.js
rename to web/settings/assets/device-2861d843.js
index de86919d15..acb3fc6a8e 100644
--- a/web/settings/assets/device-f2ca9f52.js
+++ b/web/settings/assets/device-2861d843.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(n,e,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für Sunny Island ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default};
+import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(n,e,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für Sunny Island ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-5aef24bb.js b/web/settings/assets/device-2a6323de.js
similarity index 84%
rename from web/settings/assets/device-5aef24bb.js
rename to web/settings/assets/device-2a6323de.js
index bf69514a17..e4bc1430ca 100644
--- a/web/settings/assets/device-5aef24bb.js
+++ b/web/settings/assets/device-2a6323de.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSigenergy",mixins:[a]},_={class:"device-sigenergy"};function f(o,e,b,v,w,y){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",_,[i(r,null,{default:m(()=>e[2]||(e[2]=[g("Einstellungen für Sigenergy")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{E as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSigenergy",mixins:[a]},_={class:"device-sigenergy"};function f(o,e,b,v,w,y){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",_,[i(r,null,{default:m(()=>e[2]||(e[2]=[g("Einstellungen für Sigenergy")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-191071c7.js b/web/settings/assets/device-2fe61a6a.js
similarity index 92%
rename from web/settings/assets/device-191071c7.js
rename to web/settings/assets/device-2fe61a6a.js
index 3f1036b4f0..dfd9f5493e 100644
--- a/web/settings/assets/device-191071c7.js
+++ b/web/settings/assets/device-2fe61a6a.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as m,l as b,D as i,N as s,y as r,x as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceHuawei",mixins:[l]},c={class:"device-huawei"};function g(n,e,_,w,D,h){const u=t("openwb-base-heading"),d=t("openwb-base-text-input"),a=t("openwb-base-number-input");return m(),b("div",c,[i(u,null,{default:s(()=>e[3]||(e[3]=[r(" Einstellungen für Huawei ")])),_:1}),i(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:s(()=>e[4]||(e[4]=[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),f("br",null,null,-1),r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")])),_:1},8,["model-value"])])}const q=p(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{q as default};
+import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as m,l as b,D as i,N as s,y as r,x as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceHuawei",mixins:[l]},c={class:"device-huawei"};function g(n,e,_,w,D,h){const u=t("openwb-base-heading"),d=t("openwb-base-text-input"),a=t("openwb-base-number-input");return m(),b("div",c,[i(u,null,{default:s(()=>e[3]||(e[3]=[r(" Einstellungen für Huawei ")])),_:1}),i(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:s(()=>e[4]||(e[4]=[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),f("br",null,null,-1),r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")])),_:1},8,["model-value"])])}const q=p(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-41c2f368.js b/web/settings/assets/device-35c75ada.js
similarity index 88%
rename from web/settings/assets/device-41c2f368.js
rename to web/settings/assets/device-35c75ada.js
index ae1de08867..50f75c404b 100644
--- a/web/settings/assets/device-41c2f368.js
+++ b/web/settings/assets/device-35c75ada.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as s,k as p,l,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceLG",mixins:[m]},f={class:"device-lg"};function c(n,e,v,b,_,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",f,[t(d,null,{default:r(()=>e[2]||(e[2]=[a(" Einstellungen für LG ESS V1.0 ")])),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.password"))},{help:r(()=>e[3]||(e[3]=[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')])),_:1},8,["model-value"])])}const B=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{B as default};
+import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as s,k as p,l,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceLG",mixins:[m]},f={class:"device-lg"};function c(n,e,v,b,_,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",f,[t(d,null,{default:r(()=>e[2]||(e[2]=[a(" Einstellungen für LG ESS V1.0 ")])),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.password"))},{help:r(()=>e[3]||(e[3]=[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')])),_:1},8,["model-value"])])}const B=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-ba7411f1.js b/web/settings/assets/device-37c8a5d7.js
similarity index 89%
rename from web/settings/assets/device-ba7411f1.js
rename to web/settings/assets/device-37c8a5d7.js
index 14eb9228c9..67b9707efe 100644
--- a/web/settings/assets/device-ba7411f1.js
+++ b/web/settings/assets/device-37c8a5d7.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as s,k as u,l as m,D as n,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function v(o,e,_,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),m("div",f,[n(r,null,{default:d(()=>e[2]||(e[2]=[l(" Einstellungen für smart-me ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{q as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as s,k as u,l as m,D as n,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function v(o,e,_,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),m("div",f,[n(r,null,{default:d(()=>e[2]||(e[2]=[l(" Einstellungen für smart-me ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-a4ac3a30.js b/web/settings/assets/device-3ed84812.js
similarity index 86%
rename from web/settings/assets/device-a4ac3a30.js
rename to web/settings/assets/device-3ed84812.js
index a86b802e2f..fbec935a80 100644
--- a/web/settings/assets/device-a4ac3a30.js
+++ b/web/settings/assets/device-3ed84812.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVarta",mixins:[d]},b={class:"device-varta"};function _(o,e,c,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Varta ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{y as default};
+import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVarta",mixins:[d]},b={class:"device-varta"};function _(o,e,c,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Varta ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-97810824.js b/web/settings/assets/device-436ab177.js
similarity index 89%
rename from web/settings/assets/device-97810824.js
rename to web/settings/assets/device-436ab177.js
index 91fb387e10..177835d75e 100644
--- a/web/settings/assets/device-97810824.js
+++ b/web/settings/assets/device-436ab177.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as m,l as u,D as i,N as s,y as o,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return m(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const E=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{E as default};
+import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as m,l as u,D as i,N as s,y as o,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return m(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const E=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-13bf79c7.js b/web/settings/assets/device-44627252.js
similarity index 80%
rename from web/settings/assets/device-13bf79c7.js
rename to web/settings/assets/device-44627252.js
index cfaec13f75..bdee5b93fe 100644
--- a/web/settings/assets/device-13bf79c7.js
+++ b/web/settings/assets/device-44627252.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as o,k as d,l,D as t,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBenning",mixins:[p]},_={class:"device-benning"};function f(n,e,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[m("Einstellungen für Benning")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const y=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{y as default};
+import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as o,k as d,l,D as t,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBenning",mixins:[p]},_={class:"device-benning"};function f(n,e,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[m("Einstellungen für Benning")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const y=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-92f55c21.js b/web/settings/assets/device-44ac2d07.js
similarity index 87%
rename from web/settings/assets/device-92f55c21.js
rename to web/settings/assets/device-44ac2d07.js
index 48da2f00f7..bb1c9d350a 100644
--- a/web/settings/assets/device-92f55c21.js
+++ b/web/settings/assets/device-44ac2d07.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as o,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBatterX",mixins:[a]},_={class:"device-batterx"};function f(t,e,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für BatterX ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{y as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as o,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBatterX",mixins:[a]},_={class:"device-batterx"};function f(t,e,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für BatterX ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-63bdcc3c.js b/web/settings/assets/device-4696232a.js
similarity index 91%
rename from web/settings/assets/device-63bdcc3c.js
rename to web/settings/assets/device-4696232a.js
index afafbc44ba..b106b52c1f 100644
--- a/web/settings/assets/device-63bdcc3c.js
+++ b/web/settings/assets/device-4696232a.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as s,k as u,l as p,D as t,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[a]},v={class:"device-byd"};function b(o,e,c,g,_,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",v,[t(r,null,{default:l(()=>e[3]||(e[3]=[m(" Einstellungen für BYD ")])),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const N=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{N as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as s,k as u,l as p,D as t,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[a]},v={class:"device-byd"};function b(o,e,c,g,_,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",v,[t(r,null,{default:l(()=>e[3]||(e[3]=[m(" Einstellungen für BYD ")])),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const N=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-fa6313a5.js b/web/settings/assets/device-4992e86f.js
similarity index 91%
rename from web/settings/assets/device-fa6313a5.js
rename to web/settings/assets/device-4992e86f.js
index f890834577..777e3052a5 100644
--- a/web/settings/assets/device-fa6313a5.js
+++ b/web/settings/assets/device-4992e86f.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as i,k as u,l as p,D as t,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},b={class:"device-qcells"};function v(o,e,_,g,w,C){const l=i("openwb-base-heading"),a=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",b,[t(l,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für QCells ESS ")])),_:1}),t(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{U as default};
+import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as i,k as u,l as p,D as t,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},b={class:"device-qcells"};function v(o,e,_,g,w,C){const l=i("openwb-base-heading"),a=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",b,[t(l,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für QCells ESS ")])),_:1}),t(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-00ea06ea.js b/web/settings/assets/device-4cd875ee.js
similarity index 94%
rename from web/settings/assets/device-00ea06ea.js
rename to web/settings/assets/device-4cd875ee.js
index 510ab0d80f..46366ecb7c 100644
--- a/web/settings/assets/device-00ea06ea.js
+++ b/web/settings/assets/device-4cd875ee.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as v,u as t,k as i,l as f,D as a,N as c,y as b,A as u,B as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,k,B){const d=t("openwb-base-heading"),r=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),f("div",_,[a(d,null,{default:c(()=>o[5]||(o[5]=[b(" Einstellungen für Alpha ESS ")])),_:1}),a(r,{title:"Ausleseart","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):s("",!0),a(r,{title:"Firmware Version","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const $=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{$ as default};
+import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as v,u as t,k as i,l as f,D as a,N as c,y as b,A as u,B as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,k,B){const d=t("openwb-base-heading"),r=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),f("div",_,[a(d,null,{default:c(()=>o[5]||(o[5]=[b(" Einstellungen für Alpha ESS ")])),_:1}),a(r,{title:"Ausleseart","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):s("",!0),a(r,{title:"Firmware Version","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const $=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-511acdb3.js b/web/settings/assets/device-51badd6c.js
similarity index 89%
rename from web/settings/assets/device-511acdb3.js
rename to web/settings/assets/device-51badd6c.js
index c4e3a09f80..f0b67e41bd 100644
--- a/web/settings/assets/device-511acdb3.js
+++ b/web/settings/assets/device-51badd6c.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as s,k as d,l as u,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(o,e,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Discovergy ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as s,k as d,l as u,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(o,e,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Discovergy ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-8770c372.js b/web/settings/assets/device-51cbfef1.js
similarity index 81%
rename from web/settings/assets/device-8770c372.js
rename to web/settings/assets/device-51cbfef1.js
index bee8f1cdf1..cfd926980e 100644
--- a/web/settings/assets/device-8770c372.js
+++ b/web/settings/assets/device-51cbfef1.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as d,l,D as n,N as m,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarWorld",mixins:[a]},c={class:"device-solar_world"};function f(o,e,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für SolarWorld ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{h as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as d,l,D as n,N as m,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarWorld",mixins:[a]},c={class:"device-solar_world"};function f(o,e,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für SolarWorld ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-dcaa50ab.js b/web/settings/assets/device-53686a65.js
similarity index 87%
rename from web/settings/assets/device-dcaa50ab.js
rename to web/settings/assets/device-53686a65.js
index 00488a9d31..f44dfc7e89 100644
--- a/web/settings/assets/device-dcaa50ab.js
+++ b/web/settings/assets/device-53686a65.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartfox",mixins:[a]},f={class:"device-smartfox"};function _(o,e,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",f,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für Smartfox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{y as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartfox",mixins:[a]},f={class:"device-smartfox"};function _(o,e,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",f,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für Smartfox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-f5beaf39.js b/web/settings/assets/device-5860e973.js
similarity index 87%
rename from web/settings/assets/device-f5beaf39.js
rename to web/settings/assets/device-5860e973.js
index d70f99c5c8..32d351b27f 100644
--- a/web/settings/assets/device-f5beaf39.js
+++ b/web/settings/assets/device-5860e973.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as d,l as u,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[m("Einstellungen für OpenDTU")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const V=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{V as default};
+import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as d,l as u,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[m("Einstellungen für OpenDTU")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const V=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-a55b4f4a.js b/web/settings/assets/device-5dc8caee.js
similarity index 93%
rename from web/settings/assets/device-a55b4f4a.js
rename to web/settings/assets/device-5dc8caee.js
index a03fb94a70..2f363b5251 100644
--- a/web/settings/assets/device-a55b4f4a.js
+++ b/web/settings/assets/device-5dc8caee.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as i,k as m,l as g,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolax",mixins:[u]},f={class:"device-solax"};function v(o,e,c,_,x,w){const d=i("openwb-base-heading"),l=i("openwb-base-text-input"),a=i("openwb-base-number-input");return m(),g("div",f,[t(d,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für Solax ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",min:1,max:65535,placeholder:502,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},{help:r(()=>e[4]||(e[4]=[s(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")])),_:1},8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":o.device.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:r(()=>e[5]||(e[5]=[s(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")])),_:1},8,["model-value"])])}const h=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{h as default};
+import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as i,k as m,l as g,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolax",mixins:[u]},f={class:"device-solax"};function v(o,e,c,_,x,w){const d=i("openwb-base-heading"),l=i("openwb-base-text-input"),a=i("openwb-base-number-input");return m(),g("div",f,[t(d,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für Solax ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",min:1,max:65535,placeholder:502,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},{help:r(()=>e[4]||(e[4]=[s(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")])),_:1},8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":o.device.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:r(()=>e[5]||(e[5]=[s(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")])),_:1},8,["model-value"])])}const h=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-b5ff9479.js b/web/settings/assets/device-70dec769.js
similarity index 92%
rename from web/settings/assets/device-b5ff9479.js
rename to web/settings/assets/device-70dec769.js
index b0a476599e..42ab78a447 100644
--- a/web/settings/assets/device-b5ff9479.js
+++ b/web/settings/assets/device-70dec769.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as r,k as d,l as m,D as i,N as s,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPikoOld",mixins:[u]},v={class:"device-kostal-piko-old"};function c(o,e,g,b,k,w){const a=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",v,[i(a,null,{default:s(()=>e[3]||(e[3]=[l(" Einstellungen für Kostal Piko (alte Generation) ")])),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.url"))},{help:s(()=>e[4]||(e[4]=[l(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')])),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=p(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{$ as default};
+import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as r,k as d,l as m,D as i,N as s,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPikoOld",mixins:[u]},v={class:"device-kostal-piko-old"};function c(o,e,g,b,k,w){const a=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",v,[i(a,null,{default:s(()=>e[3]||(e[3]=[l(" Einstellungen für Kostal Piko (alte Generation) ")])),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.url"))},{help:s(()=>e[4]||(e[4]=[l(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')])),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=p(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-667da2bf.js b/web/settings/assets/device-752b4387.js
similarity index 91%
rename from web/settings/assets/device-667da2bf.js
rename to web/settings/assets/device-752b4387.js
index 4ce91a64f0..d64a748b96 100644
--- a/web/settings/assets/device-667da2bf.js
+++ b/web/settings/assets/device-752b4387.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as i,k as m,l as u,D as n,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFems",mixins:[d]},c={class:"device-fems"};function v(o,e,_,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return m(),u("div",c,[n(p,null,{default:a(()=>e[2]||(e[2]=[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>e[3]||(e[3]=[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")])),_:1},8,["model-value"])])}const P=l(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{P as default};
+import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as i,k as m,l as u,D as n,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFems",mixins:[d]},c={class:"device-fems"};function v(o,e,_,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return m(),u("div",c,[n(p,null,{default:a(()=>e[2]||(e[2]=[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>e[3]||(e[3]=[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")])),_:1},8,["model-value"])])}const P=l(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-2dc6cc3c.js b/web/settings/assets/device-7893f72c.js
similarity index 96%
rename from web/settings/assets/device-2dc6cc3c.js
rename to web/settings/assets/device-7893f72c.js
index 0ca959881a..b0f46ca012 100644
--- a/web/settings/assets/device-2dc6cc3c.js
+++ b/web/settings/assets/device-7893f72c.js
@@ -1 +1 @@
-import{D as f}from"./HardwareInstallation-6cc98da9.js";import{_ as g,u as d,k as t,l as b,D as l,N as a,y as i,A as s,B as u,x as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceEnphase",mixins:[f]},y={class:"device-enphase"};function k(n,e,V,c,E,h){const m=d("openwb-base-heading"),r=d("openwb-base-text-input"),v=d("openwb-base-select-input");return t(),b("div",y,[l(m,null,{default:a(()=>e[6]||(e[6]=[i(" Einstellungen für Enphase Envoy / IQ Gateway ")])),_:1}),l(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>e[7]||(e[7]=[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')])),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":n.device.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[8]||(e[8]=[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")])),_:1},8,["model-value"]),n.device.configuration.version>1?(t(),s(r,{key:0,title:"Benutzer",subtype:"user","model-value":n.device.configuration.user,required:"","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:1,title:"Kennwort",subtype:"password","model-value":n.device.configuration.password,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:2,title:"Envoy Seriennummer","model-value":n.device.configuration.serial,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:3,title:"Token",subtype:"password","model-value":n.device.configuration.token,required:"","onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.token"))},{help:a(()=>e[9]||(e[9]=[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),p("br",null,null,-1),i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1),i(" erledigen. ")])),_:1},8,["model-value"])):u("",!0)])}const T=g(w,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{T as default};
+import{D as f}from"./HardwareInstallation-70f156e6.js";import{_ as g,u as d,k as t,l as b,D as l,N as a,y as i,A as s,B as u,x as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceEnphase",mixins:[f]},y={class:"device-enphase"};function k(n,e,V,c,E,h){const m=d("openwb-base-heading"),r=d("openwb-base-text-input"),v=d("openwb-base-select-input");return t(),b("div",y,[l(m,null,{default:a(()=>e[6]||(e[6]=[i(" Einstellungen für Enphase Envoy / IQ Gateway ")])),_:1}),l(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>e[7]||(e[7]=[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')])),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":n.device.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[8]||(e[8]=[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")])),_:1},8,["model-value"]),n.device.configuration.version>1?(t(),s(r,{key:0,title:"Benutzer",subtype:"user","model-value":n.device.configuration.user,required:"","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:1,title:"Kennwort",subtype:"password","model-value":n.device.configuration.password,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:2,title:"Envoy Seriennummer","model-value":n.device.configuration.serial,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:3,title:"Token",subtype:"password","model-value":n.device.configuration.token,required:"","onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.token"))},{help:a(()=>e[9]||(e[9]=[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),p("br",null,null,-1),i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1),i(" erledigen. ")])),_:1},8,["model-value"])):u("",!0)])}const T=g(w,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{T as default};
diff --git a/web/settings/assets/device-7c975c06.js b/web/settings/assets/device-7e1581b0.js
similarity index 89%
rename from web/settings/assets/device-7c975c06.js
rename to web/settings/assets/device-7e1581b0.js
index dd00914eb6..9a354f4cb6 100644
--- a/web/settings/assets/device-7c975c06.js
+++ b/web/settings/assets/device-7e1581b0.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as i,k as d,l as u,D as t,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function v(o,e,w,_,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Sunways ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{q as default};
+import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as i,k as d,l as u,D as t,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function v(o,e,w,_,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Sunways ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-c1c7f277.js b/web/settings/assets/device-823f72ad.js
similarity index 92%
rename from web/settings/assets/device-c1c7f277.js
rename to web/settings/assets/device-823f72ad.js
index 63ad7bdf98..6daafbeca9 100644
--- a/web/settings/assets/device-c1c7f277.js
+++ b/web/settings/assets/device-823f72ad.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as m,l as c,D as t,N as r,y as o,x as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"};function g(i,e,v,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),d=n("openwb-base-text-input");return m(),c("div",b,[t(s,null,{default:r(()=>e[1]||(e[1]=[o(" Einstellungen für Fronius ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[o(" Die Fronius API muss aktiviert sein."),_("br",null,null,-1),o(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const M=p(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{M as default};
+import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as c,D as t,N as r,y as o,x as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"};function g(i,e,v,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),d=n("openwb-base-text-input");return m(),c("div",b,[t(s,null,{default:r(()=>e[1]||(e[1]=[o(" Einstellungen für Fronius ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[o(" Die Fronius API muss aktiviert sein."),_("br",null,null,-1),o(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const M=p(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{M as default};
diff --git a/web/settings/assets/device-19334006.js b/web/settings/assets/device-827098d6.js
similarity index 88%
rename from web/settings/assets/device-19334006.js
rename to web/settings/assets/device-827098d6.js
index 70eea8717c..3a1b5bd93f 100644
--- a/web/settings/assets/device-19334006.js
+++ b/web/settings/assets/device-827098d6.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as l,l as u,D as n,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceVZLogger",mixins:[d]},c={class:"device-vzlogger"};function _(o,e,v,f,b,w){const r=t("openwb-base-heading"),p=t("openwb-base-text-input");return l(),u("div",c,[n(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für VZLogger ")])),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},{help:i(()=>e[2]||(e[2]=[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")])),_:1},8,["model-value"])])}const N=m(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{N as default};
+import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as l,l as u,D as n,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceVZLogger",mixins:[d]},c={class:"device-vzlogger"};function _(o,e,v,f,b,w){const r=t("openwb-base-heading"),p=t("openwb-base-text-input");return l(),u("div",c,[n(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für VZLogger ")])),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},{help:i(()=>e[2]||(e[2]=[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")])),_:1},8,["model-value"])])}const N=m(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-09e0b5dd.js b/web/settings/assets/device-82e0acf7.js
similarity index 89%
rename from web/settings/assets/device-09e0b5dd.js
rename to web/settings/assets/device-82e0acf7.js
index 0e0baa3058..5a5cb5a2e8 100644
--- a/web/settings/assets/device-09e0b5dd.js
+++ b/web/settings/assets/device-82e0acf7.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as n,k as u,l as m,D as i,N as l,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[a]},f={class:"device-mtec"};function b(o,e,v,g,w,x){const s=n("openwb-base-heading"),r=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[c("Einstellungen für M-Tec")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{q as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as n,k as u,l as m,D as i,N as l,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[a]},f={class:"device-mtec"};function b(o,e,v,g,w,x){const s=n("openwb-base-heading"),r=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[c("Einstellungen für M-Tec")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-c1920155.js b/web/settings/assets/device-8308249d.js
similarity index 90%
rename from web/settings/assets/device-c1920155.js
rename to web/settings/assets/device-8308249d.js
index 6bc3e6a31a..7771053640 100644
--- a/web/settings/assets/device-c1920155.js
+++ b/web/settings/assets/device-8308249d.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as t,k as c,l as m,D as o,N as s,y as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalPiko",mixins:[d]},f={class:"device-kostal-piko"};function b(n,e,v,g,k,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input");return c(),m("div",f,[o(a,null,{default:s(()=>e[1]||(e[1]=[i(" Einstellungen für Kostal Piko ")])),_:1}),o(r,{subtype:"info"},{default:s(()=>e[2]||(e[2]=[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>n.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{$ as default};
+import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as t,k as c,l as m,D as o,N as s,y as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalPiko",mixins:[d]},f={class:"device-kostal-piko"};function b(n,e,v,g,k,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input");return c(),m("div",f,[o(a,null,{default:s(()=>e[1]||(e[1]=[i(" Einstellungen für Kostal Piko ")])),_:1}),o(r,{subtype:"info"},{default:s(()=>e[2]||(e[2]=[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>n.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-4f01c44f.js b/web/settings/assets/device-86c123c1.js
similarity index 86%
rename from web/settings/assets/device-4f01c44f.js
rename to web/settings/assets/device-86c123c1.js
index 03bc580a10..9850854a6f 100644
--- a/web/settings/assets/device-4f01c44f.js
+++ b/web/settings/assets/device-86c123c1.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSofar",mixins:[d]},v={class:"device-sofar"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f("Einstellungen für Sofar")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{y as default};
+import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSofar",mixins:[d]},v={class:"device-sofar"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f("Einstellungen für Sofar")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-c37bf0a2.js b/web/settings/assets/device-87e58e62.js
similarity index 92%
rename from web/settings/assets/device-c37bf0a2.js
rename to web/settings/assets/device-87e58e62.js
index 757aa3cfef..800371d184 100644
--- a/web/settings/assets/device-c37bf0a2.js
+++ b/web/settings/assets/device-87e58e62.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as i,k as b,l as f,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemensSentron",mixins:[m]},v={class:"device-siemens-sentron"};function c(n,e,g,w,C,D){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(u,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens Sentron ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const E=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{E as default};
+import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as i,k as b,l as f,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemensSentron",mixins:[m]},v={class:"device-siemens-sentron"};function c(n,e,g,w,C,D){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(u,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens Sentron ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const E=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-8b304fd5.js b/web/settings/assets/device-8d6c27df.js
similarity index 82%
rename from web/settings/assets/device-8b304fd5.js
rename to web/settings/assets/device-8d6c27df.js
index 1a5b192290..a1eb0a51c7 100644
--- a/web/settings/assets/device-8b304fd5.js
+++ b/web/settings/assets/device-8d6c27df.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as d,l,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(o,e,v,b,g,k){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[n(s,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")])),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{h as default};
+import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as d,l,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(o,e,v,b,g,k){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[n(s,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")])),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-57a08fa3.js b/web/settings/assets/device-900bb2eb.js
similarity index 87%
rename from web/settings/assets/device-57a08fa3.js
rename to web/settings/assets/device-900bb2eb.js
index 74cef54531..b351d88a2f 100644
--- a/web/settings/assets/device-57a08fa3.js
+++ b/web/settings/assets/device-900bb2eb.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as l,l as d,D as n,N as m,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarLog",mixins:[a]},c={class:"device-solar_log"};function f(o,e,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für Solar-Log ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{y as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as l,l as d,D as n,N as m,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarLog",mixins:[a]},c={class:"device-solar_log"};function f(o,e,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für Solar-Log ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-264b9607.js b/web/settings/assets/device-939b0ad1.js
similarity index 95%
rename from web/settings/assets/device-264b9607.js
rename to web/settings/assets/device-939b0ad1.js
index 255c734e22..a683c91767 100644
--- a/web/settings/assets/device-264b9607.js
+++ b/web/settings/assets/device-939b0ad1.js
@@ -1 +1 @@
-import{D as v}from"./HardwareInstallation-6cc98da9.js";import{_ as g,u as o,k as m,l as _,D as s,N as u,y as i,x as n,z as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"DeviceSonnenbatterie",mixins:[v],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},k={class:"device-sonnenbatterie"},w={style:{display:"block"}},B=["href"],J=["href"],R=["href"],I=["href"];function P(r,e,x,h,z,t){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),f=o("openwb-base-text-input"),b=o("openwb-base-select-input");return m(),_("div",k,[s(d,null,{default:u(()=>e[2]||(e[2]=[i(" Einstellungen für SonnenBatterie ")])),_:1}),s(p,{subtype:"info"},{default:u(()=>e[3]||(e[3]=[i(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')])),_:1}),s(f,{title:"IP oder Hostname",subtype:"host",required:"","model-value":r.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>r.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),s(b,{title:"Datenverbindung",required:"","not-selected":"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":r.device.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=a=>r.updateConfiguration(a,"configuration.variant"))},{help:u(()=>[n("span",w,[e[4]||(e[4]=i(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:")),e[5]||(e[5]=n("br",null,null,-1)),e[6]||(e[6]=i(" Rest-API 1: ")),n("a",{href:t.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi1),9,B),e[7]||(e[7]=n("br",null,null,-1)),e[8]||(e[8]=i(" Rest-API 2: ")),n("a",{href:t.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi2),9,J),e[9]||(e[9]=n("br",null,null,-1)),e[10]||(e[10]=i(" JSON-API v1: ")),n("a",{href:t.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi1),9,R),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=i(" JSON-API v2: ")),n("a",{href:t.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi2),9,I)])]),_:1},8,["model-value"])])}const U=g(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{U as default};
+import{D as v}from"./HardwareInstallation-70f156e6.js";import{_ as g,u as o,k as m,l as _,D as s,N as u,y as i,x as n,z as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"DeviceSonnenbatterie",mixins:[v],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},k={class:"device-sonnenbatterie"},w={style:{display:"block"}},B=["href"],J=["href"],R=["href"],I=["href"];function P(r,e,x,h,z,t){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),f=o("openwb-base-text-input"),b=o("openwb-base-select-input");return m(),_("div",k,[s(d,null,{default:u(()=>e[2]||(e[2]=[i(" Einstellungen für SonnenBatterie ")])),_:1}),s(p,{subtype:"info"},{default:u(()=>e[3]||(e[3]=[i(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')])),_:1}),s(f,{title:"IP oder Hostname",subtype:"host",required:"","model-value":r.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>r.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),s(b,{title:"Datenverbindung",required:"","not-selected":"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":r.device.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=a=>r.updateConfiguration(a,"configuration.variant"))},{help:u(()=>[n("span",w,[e[4]||(e[4]=i(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:")),e[5]||(e[5]=n("br",null,null,-1)),e[6]||(e[6]=i(" Rest-API 1: ")),n("a",{href:t.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi1),9,B),e[7]||(e[7]=n("br",null,null,-1)),e[8]||(e[8]=i(" Rest-API 2: ")),n("a",{href:t.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi2),9,J),e[9]||(e[9]=n("br",null,null,-1)),e[10]||(e[10]=i(" JSON-API v1: ")),n("a",{href:t.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi1),9,R),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=i(" JSON-API v2: ")),n("a",{href:t.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi2),9,I)])]),_:1},8,["model-value"])])}const U=g(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-7d21f4f3.js b/web/settings/assets/device-9f7025df.js
similarity index 91%
rename from web/settings/assets/device-7d21f4f3.js
rename to web/settings/assets/device-9f7025df.js
index 5b3223a9e3..86850ea5d8 100644
--- a/web/settings/assets/device-7d21f4f3.js
+++ b/web/settings/assets/device-9f7025df.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as m,l as _,D as a,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarwatt",mixins:[p]},v={class:"device-solarwatt"};function c(t,e,w,b,g,x){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[a(s,null,{default:i(()=>e[2]||(e[2]=[r(" Einstellungen für Solarwatt/My Reserve ")])),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode","not-selected":"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":t.device.configuration.energy_manager,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>e[3]||(e[3]=[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")])),_:1},8,["model-value"])])}const E=u(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{E as default};
+import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as m,l as _,D as a,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarwatt",mixins:[p]},v={class:"device-solarwatt"};function c(t,e,w,b,g,x){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[a(s,null,{default:i(()=>e[2]||(e[2]=[r(" Einstellungen für Solarwatt/My Reserve ")])),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode","not-selected":"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":t.device.configuration.energy_manager,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>e[3]||(e[3]=[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")])),_:1},8,["model-value"])])}const E=u(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-c9df224a.js b/web/settings/assets/device-a018debc.js
similarity index 91%
rename from web/settings/assets/device-c9df224a.js
rename to web/settings/assets/device-a018debc.js
index 6bb61adc8a..92f6cf7e6e 100644
--- a/web/settings/assets/device-c9df224a.js
+++ b/web/settings/assets/device-a018debc.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as i,k as l,l as p,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalSEM",mixins:[d]},v={class:"device-kostal-sem"};function _(o,e,c,g,w,k){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",v,[t(s,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{B as default};
+import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as i,k as l,l as p,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalSEM",mixins:[d]},v={class:"device-kostal-sem"};function _(o,e,c,g,w,k){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",v,[t(s,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-a945746f.js b/web/settings/assets/device-a159510e.js
similarity index 84%
rename from web/settings/assets/device-a945746f.js
rename to web/settings/assets/device-a159510e.js
index 1dc9d636d5..287a0a4fed 100644
--- a/web/settings/assets/device-a945746f.js
+++ b/web/settings/assets/device-a159510e.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[a]},v={class:"device-victron"};function f(o,e,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",v,[i(r,null,{default:m(()=>e[2]||(e[2]=[c(" Einstellungen für Victron ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{E as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[a]},v={class:"device-victron"};function f(o,e,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",v,[i(r,null,{default:m(()=>e[2]||(e[2]=[c(" Einstellungen für Victron ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-2bd6af83.js b/web/settings/assets/device-a41c9f9a.js
similarity index 92%
rename from web/settings/assets/device-2bd6af83.js
rename to web/settings/assets/device-a41c9f9a.js
index 2aeef3047c..a6a3fc7591 100644
--- a/web/settings/assets/device-2bd6af83.js
+++ b/web/settings/assets/device-a41c9f9a.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as i,k as c,l as b,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPlenticore",mixins:[u]},_={class:"device-kostal-plenticore"};function v(o,e,g,w,k,C){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),b("div",_,[t(l,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Kostal Plenticore ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{$ as default};
+import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as i,k as c,l as b,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPlenticore",mixins:[u]},_={class:"device-kostal-plenticore"};function v(o,e,g,w,k,C){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),b("div",_,[t(l,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Kostal Plenticore ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-8f5f7340.js b/web/settings/assets/device-ac3617bf.js
similarity index 86%
rename from web/settings/assets/device-8f5f7340.js
rename to web/settings/assets/device-ac3617bf.js
index f47f187dd5..af4b1cfaca 100644
--- a/web/settings/assets/device-8f5f7340.js
+++ b/web/settings/assets/device-ac3617bf.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJanitza",mixins:[d]},v={class:"device-janitza"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Janitza ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{N as default};
+import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJanitza",mixins:[d]},v={class:"device-janitza"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Janitza ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-9eedb23a.js b/web/settings/assets/device-ac5464c5.js
similarity index 94%
rename from web/settings/assets/device-9eedb23a.js
rename to web/settings/assets/device-ac5464c5.js
index 71b116b4c8..720cbca7a3 100644
--- a/web/settings/assets/device-9eedb23a.js
+++ b/web/settings/assets/device-ac5464c5.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as b,u as i,k as g,l as v,D as t,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSungrow",mixins:[m]},w={class:"device-sungrow"};function _(n,e,c,S,D,W){const s=i("openwb-base-heading"),a=i("openwb-base-alert"),d=i("openwb-base-text-input"),l=i("openwb-base-number-input"),p=i("openwb-base-select-input");return g(),v("div",w,[t(s,null,{default:r(()=>e[4]||(e[4]=[u(" Einstellungen für Sungrow ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[5]||(e[5]=[u(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(p,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},{help:r(()=>e[6]||(e[6]=[u(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um iSolarCloud nutzen zu können. ")])),_:1},8,["model-value"])])}const q=b(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{q as default};
+import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as b,u as i,k as g,l as v,D as t,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSungrow",mixins:[m]},w={class:"device-sungrow"};function _(n,e,c,S,D,W){const s=i("openwb-base-heading"),a=i("openwb-base-alert"),d=i("openwb-base-text-input"),l=i("openwb-base-number-input"),p=i("openwb-base-select-input");return g(),v("div",w,[t(s,null,{default:r(()=>e[4]||(e[4]=[u(" Einstellungen für Sungrow ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[5]||(e[5]=[u(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(p,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},{help:r(()=>e[6]||(e[6]=[u(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um iSolarCloud nutzen zu können. ")])),_:1},8,["model-value"])])}const q=b(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-e6c608f5.js b/web/settings/assets/device-b07f9cfe.js
similarity index 93%
rename from web/settings/assets/device-e6c608f5.js
rename to web/settings/assets/device-b07f9cfe.js
index d3779423ea..7247c86c83 100644
--- a/web/settings/assets/device-e6c608f5.js
+++ b/web/settings/assets/device-b07f9cfe.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as o,k as b,l as c,D as t,N as s,y as r,x as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolarEdge",mixins:[u]},_={class:"device-solaredge"};function v(n,e,w,h,B,k){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),p=o("openwb-base-text-input"),l=o("openwb-base-number-input");return b(),c("div",_,[t(a,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für SolarEdge ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),f("br",null,null,-1),r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren Smarthome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},{help:s(()=>e[4]||(e[4]=[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")])),_:1},8,["model-value"])])}const D=m(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{D as default};
+import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as o,k as b,l as c,D as t,N as s,y as r,x as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolarEdge",mixins:[u]},_={class:"device-solaredge"};function v(n,e,w,h,B,k){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),p=o("openwb-base-text-input"),l=o("openwb-base-number-input");return b(),c("div",_,[t(a,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für SolarEdge ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),f("br",null,null,-1),r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren Smarthome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},{help:s(()=>e[4]||(e[4]=[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")])),_:1},8,["model-value"])])}const D=m(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{D as default};
diff --git a/web/settings/assets/device-73279a9d.js b/web/settings/assets/device-b14a6820.js
similarity index 89%
rename from web/settings/assets/device-73279a9d.js
rename to web/settings/assets/device-b14a6820.js
index f003533735..c04d8ec543 100644
--- a/web/settings/assets/device-73279a9d.js
+++ b/web/settings/assets/device-b14a6820.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as t,k as m,l as d,D as i,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(o,e,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return m(),d("div",f,[i(a,null,{default:u(()=>e[2]||(e[2]=[c(" Einstellungen für Solarmax ")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{E as default};
+import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as t,k as m,l as d,D as i,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(o,e,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return m(),d("div",f,[i(a,null,{default:u(()=>e[2]||(e[2]=[c(" Einstellungen für Solarmax ")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-d779a283.js b/web/settings/assets/device-b80563d5.js
similarity index 91%
rename from web/settings/assets/device-d779a283.js
rename to web/settings/assets/device-b80563d5.js
index da2eccad85..b2c8d885dc 100644
--- a/web/settings/assets/device-d779a283.js
+++ b/web/settings/assets/device-b80563d5.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as i,k as b,l as f,D as t,N as s,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DevicePowerdog",mixins:[l]},v={class:"device-powerdog"};function g(o,e,c,w,C,x){const a=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),r=i("openwb-base-number-input");return b(),f("div",v,[t(a,null,{default:s(()=>e[3]||(e[3]=[d(" Einstellungen für Powerdog ")])),_:1}),t(p,{subtype:"info"},{default:s(()=>e[4]||(e[4]=[d(" ModbusTCP muss aktiviert sein. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{N as default};
+import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as i,k as b,l as f,D as t,N as s,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DevicePowerdog",mixins:[l]},v={class:"device-powerdog"};function g(o,e,c,w,C,x){const a=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),r=i("openwb-base-number-input");return b(),f("div",v,[t(a,null,{default:s(()=>e[3]||(e[3]=[d(" Einstellungen für Powerdog ")])),_:1}),t(p,{subtype:"info"},{default:s(()=>e[4]||(e[4]=[d(" ModbusTCP muss aktiviert sein. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-84e9833f.js b/web/settings/assets/device-baaf93fc.js
similarity index 92%
rename from web/settings/assets/device-84e9833f.js
rename to web/settings/assets/device-baaf93fc.js
index 0799efd599..5422483516 100644
--- a/web/settings/assets/device-84e9833f.js
+++ b/web/settings/assets/device-baaf93fc.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as t,k as d,l as m,D as i,N as c,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(o,e,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>e[3]||(e[3]=[v("Einstellungen für Solis")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":o.device.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const N=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{N as default};
+import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as t,k as d,l as m,D as i,N as c,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(o,e,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>e[3]||(e[3]=[v("Einstellungen für Solis")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":o.device.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const N=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-967835b8.js b/web/settings/assets/device-c3b4d8e4.js
similarity index 91%
rename from web/settings/assets/device-967835b8.js
rename to web/settings/assets/device-c3b4d8e4.js
index 16f35b7fa3..656576952d 100644
--- a/web/settings/assets/device-967835b8.js
+++ b/web/settings/assets/device-c3b4d8e4.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as i,k as p,l as d,D as t,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarView",mixins:[u]},_={class:"device-solar-view"};function c(o,e,b,g,w,V){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),d("div",_,[t(a,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für SolarView ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Timeout",required:"","model-value":o.device.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const y=l(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{y as default};
+import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as i,k as p,l as d,D as t,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarView",mixins:[u]},_={class:"device-solar-view"};function c(o,e,b,g,w,V){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),d("div",_,[t(a,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für SolarView ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Timeout",required:"","model-value":o.device.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const y=l(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-e1695c1b.js b/web/settings/assets/device-c3ba2a50.js
similarity index 89%
rename from web/settings/assets/device-e1695c1b.js
rename to web/settings/assets/device-c3ba2a50.js
index b1774fa6fe..541f671fcb 100644
--- a/web/settings/assets/device-e1695c1b.js
+++ b/web/settings/assets/device-c3ba2a50.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as l,l as u,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlex",mixins:[a]},c={class:"device-openwb-flex"};function f(o,e,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),r=t("openwb-base-number-input");return l(),u("div",c,[i(p,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für openWB-Flex ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{E as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as l,l as u,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlex",mixins:[a]},c={class:"device-openwb-flex"};function f(o,e,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),r=t("openwb-base-number-input");return l(),u("div",c,[i(p,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für openWB-Flex ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-97dc9354.js b/web/settings/assets/device-cd05bdaa.js
similarity index 86%
rename from web/settings/assets/device-97dc9354.js
rename to web/settings/assets/device-cd05bdaa.js
index 930798b0fb..4bbb8f12bf 100644
--- a/web/settings/assets/device-97dc9354.js
+++ b/web/settings/assets/device-cd05bdaa.js
@@ -1 +1 @@
-import{D as s}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(o,e,_,g,w,C){const a=i("openwb-base-heading"),r=i("openwb-base-text-input"),d=i("openwb-base-number-input");return p(),l("div",b,[t(a,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für E3DC ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{U as default};
+import{D as s}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(o,e,_,g,w,C){const a=i("openwb-base-heading"),r=i("openwb-base-text-input"),d=i("openwb-base-number-input");return p(),l("div",b,[t(a,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für E3DC ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-dc9695a4.js b/web/settings/assets/device-d0fb85ca.js
similarity index 91%
rename from web/settings/assets/device-dc9695a4.js
rename to web/settings/assets/device-d0fb85ca.js
index 2de045f318..cf15652778 100644
--- a/web/settings/assets/device-dc9695a4.js
+++ b/web/settings/assets/device-d0fb85ca.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as n,k as m,l as b,D as t,N as s,y as c,x as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"};function g(o,e,w,y,x,D){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-number-input");return m(),b("div",v,[t(r,null,{default:s(()=>e[2]||(e[2]=[c("Einstellungen für Deye")])),_:1}),t(a,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[_("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1)])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{E as default};
+import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as n,k as m,l as b,D as t,N as s,y as c,x as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"};function g(o,e,w,y,x,D){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-number-input");return m(),b("div",v,[t(r,null,{default:s(()=>e[2]||(e[2]=[c("Einstellungen für Deye")])),_:1}),t(a,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[_("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1)])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-51a9d57c.js b/web/settings/assets/device-d8584875.js
similarity index 91%
rename from web/settings/assets/device-51a9d57c.js
rename to web/settings/assets/device-d8584875.js
index d41c8dee94..d33ec455f8 100644
--- a/web/settings/assets/device-51a9d57c.js
+++ b/web/settings/assets/device-d8584875.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as r,u as a,k as d,l as p,D as i,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceTesla",mixins:[l]},v={class:"device-tesla"};function c(o,e,g,b,_,w){const s=a("openwb-base-heading"),n=a("openwb-base-text-input");return d(),p("div",v,[i(s,null,{default:u(()=>e[3]||(e[3]=[m(" Einstellungen für Tesla ")])),_:1}),i(n,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(n,{title:"E-Mail",subtype:"email",required:"","model-value":o.device.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const E=r(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{E as default};
+import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as a,k as d,l as p,D as i,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceTesla",mixins:[l]},v={class:"device-tesla"};function c(o,e,g,b,_,w){const s=a("openwb-base-heading"),n=a("openwb-base-text-input");return d(),p("div",v,[i(s,null,{default:u(()=>e[3]||(e[3]=[m(" Einstellungen für Tesla ")])),_:1}),i(n,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(n,{title:"E-Mail",subtype:"email",required:"","model-value":o.device.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const E=r(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-7aeda0a3.js b/web/settings/assets/device-d91bc952.js
similarity index 95%
rename from web/settings/assets/device-7aeda0a3.js
rename to web/settings/assets/device-d91bc952.js
index a4f2e51fe2..644c64d776 100644
--- a/web/settings/assets/device-7aeda0a3.js
+++ b/web/settings/assets/device-d91bc952.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as v,u as t,k as b,l as f,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},w={class:"device-goodwe"};function _(o,e,W,c,D,V){const l=t("openwb-base-heading"),a=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input"),u=t("openwb-base-select-input");return b(),f("div",w,[i(l,null,{default:r(()=>e[5]||(e[5]=[s("Einstellungen für GoodWe")])),_:1}),i(a,{subtype:"info"},{default:r(()=>e[6]||(e[6]=[s(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")])),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"API-Version","not-selected":"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.version"))},{help:r(()=>e[7]||(e[7]=[s(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"]),i(u,{title:"Firmware","not-selected":"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>e[8]||(e[8]=[s(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")])),_:1},8,["model-value"])])}const P=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{P as default};
+import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as v,u as t,k as b,l as f,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},w={class:"device-goodwe"};function _(o,e,W,c,D,V){const l=t("openwb-base-heading"),a=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input"),u=t("openwb-base-select-input");return b(),f("div",w,[i(l,null,{default:r(()=>e[5]||(e[5]=[s("Einstellungen für GoodWe")])),_:1}),i(a,{subtype:"info"},{default:r(()=>e[6]||(e[6]=[s(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")])),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"API-Version","not-selected":"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.version"))},{help:r(()=>e[7]||(e[7]=[s(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"]),i(u,{title:"Firmware","not-selected":"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>e[8]||(e[8]=[s(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")])),_:1},8,["model-value"])])}const P=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-95627a98.js b/web/settings/assets/device-e77cad4b.js
similarity index 86%
rename from web/settings/assets/device-95627a98.js
rename to web/settings/assets/device-e77cad4b.js
index a382c831d2..e4e4d2390b 100644
--- a/web/settings/assets/device-95627a98.js
+++ b/web/settings/assets/device-e77cad4b.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as i,k as u,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSaxpower",mixins:[p]},v={class:"device-saxpower"};function _(o,e,c,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Saxpower ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{y as default};
+import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as i,k as u,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSaxpower",mixins:[p]},v={class:"device-saxpower"};function _(o,e,c,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Saxpower ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-fb6dbf7a.js b/web/settings/assets/device-e7ac4171.js
similarity index 87%
rename from web/settings/assets/device-fb6dbf7a.js
rename to web/settings/assets/device-e7ac4171.js
index dddd386d0d..3d805c2091 100644
--- a/web/settings/assets/device-fb6dbf7a.js
+++ b/web/settings/assets/device-e7ac4171.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as d,l as c,D as n,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[p]},_={class:"device-rct"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für RCT ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const h=a(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{h as default};
+import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as d,l as c,D as n,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[p]},_={class:"device-rct"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für RCT ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const h=a(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-944bfe1b.js b/web/settings/assets/device-e9766b50.js
similarity index 92%
rename from web/settings/assets/device-944bfe1b.js
rename to web/settings/assets/device-e9766b50.js
index f3ec9792fb..56e5d6fd98 100644
--- a/web/settings/assets/device-944bfe1b.js
+++ b/web/settings/assets/device-e9766b50.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as n,k as c,l as f,D as o,N as l,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(t,e,g,h,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return c(),f("div",v,[o(r,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für Shelly ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shellys der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren","not-selected":"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":t.device.configuration.factor,required:"","onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.factor"))},{help:l(()=>e[4]||(e[4]=[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")])),_:1},8,["model-value"])])}const P=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{P as default};
+import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as n,k as c,l as f,D as o,N as l,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(t,e,g,h,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return c(),f("div",v,[o(r,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für Shelly ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shellys der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren","not-selected":"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":t.device.configuration.factor,required:"","onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.factor"))},{help:l(()=>e[4]||(e[4]=[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")])),_:1},8,["model-value"])])}const P=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-c0ddbba1.js b/web/settings/assets/device-ee62c15a.js
similarity index 84%
rename from web/settings/assets/device-c0ddbba1.js
rename to web/settings/assets/device-ee62c15a.js
index d34a2b053b..3b05dd4587 100644
--- a/web/settings/assets/device-c0ddbba1.js
+++ b/web/settings/assets/device-ee62c15a.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as n,k as u,l,D as i,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[a]},f={class:"device-studer"};function b(o,e,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),l("div",f,[i(r,null,{default:m(()=>e[2]||(e[2]=[c(" Einstellungen für Studer ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const E=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{E as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as n,k as u,l,D as i,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[a]},f={class:"device-studer"};function b(o,e,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),l("div",f,[i(r,null,{default:m(()=>e[2]||(e[2]=[c(" Einstellungen für Studer ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const E=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-c3e49e5d.js b/web/settings/assets/device-eed61bed.js
similarity index 91%
rename from web/settings/assets/device-c3e49e5d.js
rename to web/settings/assets/device-eed61bed.js
index e5feba7b49..1742dc5803 100644
--- a/web/settings/assets/device-c3e49e5d.js
+++ b/web/settings/assets/device-eed61bed.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as t,k as l,l as p,D as i,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceCarloGavazzi",mixins:[d]},f={class:"device-carlogavazzi"};function _(o,e,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",f,[i(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Carlo Gavazzi ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default};
+import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as t,k as l,l as p,D as i,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceCarloGavazzi",mixins:[d]},f={class:"device-carlogavazzi"};function _(o,e,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",f,[i(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Carlo Gavazzi ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-8a6c3a9f.js b/web/settings/assets/device-f511f708.js
similarity index 91%
rename from web/settings/assets/device-8a6c3a9f.js
rename to web/settings/assets/device-f511f708.js
index 1633424e6a..d97255fe69 100644
--- a/web/settings/assets/device-8a6c3a9f.js
+++ b/web/settings/assets/device-f511f708.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as n,k as b,l as _,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(o,e,w,y,g,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return b(),_("div",f,[t(a,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für SMA Sunny Boy/Tripower ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{E as default};
+import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as n,k as b,l as _,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(o,e,w,y,g,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return b(),_("div",f,[t(a,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für SMA Sunny Boy/Tripower ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-7552eed1.js b/web/settings/assets/device-f8b42d98.js
similarity index 91%
rename from web/settings/assets/device-7552eed1.js
rename to web/settings/assets/device-f8b42d98.js
index 1e4a15d6d6..aee2d44422 100644
--- a/web/settings/assets/device-7552eed1.js
+++ b/web/settings/assets/device-f8b42d98.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as t,k as l,l as m,D as i,N as s,y as n,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceMqtt",mixins:[a]},u={class:"device-mqtt"};function g(_,e,b,f,h,v){const r=t("openwb-base-heading"),o=t("openwb-base-alert");return l(),m("div",u,[i(r,null,{default:s(()=>e[0]||(e[0]=[n("Einstellungen für MQTT")])),_:1}),i(o,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),c("br",null,null,-1),n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")])),_:1})])}const y=d(p,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{y as default};
+import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as l,l as m,D as i,N as s,y as n,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceMqtt",mixins:[a]},u={class:"device-mqtt"};function g(_,e,b,f,h,v){const r=t("openwb-base-heading"),o=t("openwb-base-alert");return l(),m("div",u,[i(r,null,{default:s(()=>e[0]||(e[0]=[n("Einstellungen für MQTT")])),_:1}),i(o,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),c("br",null,null,-1),n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")])),_:1})])}const y=d(p,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-c3aaf957.js b/web/settings/assets/device-fd700d8f.js
similarity index 90%
rename from web/settings/assets/device-c3aaf957.js
rename to web/settings/assets/device-fd700d8f.js
index 254cab92c7..5804ff4dae 100644
--- a/web/settings/assets/device-c3aaf957.js
+++ b/web/settings/assets/device-fd700d8f.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as d,l as m,D as i,N as l,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(o,e,b,v,w,x){const r=n("openwb-base-heading"),a=n("openwb-base-text-input"),s=n("openwb-base-number-input");return d(),m("div",g,[i(r,null,{default:l(()=>e[2]||(e[2]=[_(" Einstellungen für Huawei SmartLogger ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default};
+import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as d,l as m,D as i,N as l,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(o,e,b,v,w,x){const r=n("openwb-base-heading"),a=n("openwb-base-text-input"),s=n("openwb-base-number-input");return d(),m("div",g,[i(r,null,{default:l(()=>e[2]||(e[2]=[_(" Einstellungen für Huawei SmartLogger ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-a5ad3257.js b/web/settings/assets/device-fe5fad52.js
similarity index 92%
rename from web/settings/assets/device-a5ad3257.js
rename to web/settings/assets/device-fe5fad52.js
index c1a9addaf1..9869dd55a9 100644
--- a/web/settings/assets/device-a5ad3257.js
+++ b/web/settings/assets/device-fe5fad52.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as i,k as b,l as f,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemens",mixins:[m]},v={class:"device-siemens"};function c(o,e,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(p,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens ")])),_:1}),t(d,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{N as default};
+import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as i,k as b,l as f,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemens",mixins:[m]},v={class:"device-siemens"};function c(o,e,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(p,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens ")])),_:1}),t(d,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/displayTheme-78ab078b.js b/web/settings/assets/displayTheme-4083964b.js
similarity index 97%
rename from web/settings/assets/displayTheme-78ab078b.js
rename to web/settings/assets/displayTheme-4083964b.js
index 923858218f..9ed091e488 100644
--- a/web/settings/assets/displayTheme-78ab078b.js
+++ b/web/settings/assets/displayTheme-4083964b.js
@@ -1 +1 @@
-import{D as g}from"./OptionalComponents-be1b1295.js";import{_ as m,u as i,k as d,l as f,D as a,N as l,y as u,A as r,B as b}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeCards",mixins:[g]},c={class:"display-theme-cards"};function v(n,e,V,h,y,A){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),f("div",c,[a(s,null,{default:l(()=>e[13]||(e[13]=[u("Bediensperre")])),_:1}),a(o,{title:"Bedienung sperren","model-value":n.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.lock_changes"))},{help:l(()=>e[14]||(e[14]=[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),n.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>e[15]||(e[15]=[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>e[16]||(e[16]=[u("Ansichten")])),_:1}),a(o,{title:"Übersicht anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_view"))},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":n.displayTheme.configuration.enable_energy_flow_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.enable_energy_flow_view"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_charge_points_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.enable_charge_points_view"))},null,8,["model-value"]),n.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":n.displayTheme.configuration.simple_charge_point_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateConfiguration(t,"configuration.simple_charge_point_view"))},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":n.displayTheme.configuration.enable_status_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateConfiguration(t,"configuration.enable_status_view"))},null,8,["model-value"]),a(s,null,{help:l(()=>e[17]||(e[17]=[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')])),default:l(()=>[e[18]||(e[18]=u(" Datenauswahl "))]),_:1}),a(o,{title:"EVU anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_grid,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_grid"))},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_home_consumption,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption"))},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_inverter_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[9]||(e[9]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum"))},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_battery_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[10]||(e[10]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_charge_point_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum"))},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_vehicles,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[12]||(e[12]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles"))},null,8,["model-value"])])}const x=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{x as default};
+import{D as g}from"./OptionalComponents-36fd698f.js";import{_ as m,u as i,k as d,l as f,D as a,N as l,y as u,A as r,B as b}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeCards",mixins:[g]},c={class:"display-theme-cards"};function v(n,e,V,h,y,A){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),f("div",c,[a(s,null,{default:l(()=>e[13]||(e[13]=[u("Bediensperre")])),_:1}),a(o,{title:"Bedienung sperren","model-value":n.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.lock_changes"))},{help:l(()=>e[14]||(e[14]=[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),n.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>e[15]||(e[15]=[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>e[16]||(e[16]=[u("Ansichten")])),_:1}),a(o,{title:"Übersicht anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_view"))},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":n.displayTheme.configuration.enable_energy_flow_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.enable_energy_flow_view"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_charge_points_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.enable_charge_points_view"))},null,8,["model-value"]),n.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":n.displayTheme.configuration.simple_charge_point_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateConfiguration(t,"configuration.simple_charge_point_view"))},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":n.displayTheme.configuration.enable_status_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateConfiguration(t,"configuration.enable_status_view"))},null,8,["model-value"]),a(s,null,{help:l(()=>e[17]||(e[17]=[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')])),default:l(()=>[e[18]||(e[18]=u(" Datenauswahl "))]),_:1}),a(o,{title:"EVU anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_grid,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_grid"))},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_home_consumption,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption"))},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_inverter_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[9]||(e[9]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum"))},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_battery_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[10]||(e[10]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_charge_point_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum"))},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_vehicles,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[12]||(e[12]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles"))},null,8,["model-value"])])}const x=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{x as default};
diff --git a/web/settings/assets/electricity_tariff-b400ca32.js b/web/settings/assets/electricity_tariff-4bc01805.js
similarity index 94%
rename from web/settings/assets/electricity_tariff-b400ca32.js
rename to web/settings/assets/electricity_tariff-4bc01805.js
index 5198826382..c6c3126f64 100644
--- a/web/settings/assets/electricity_tariff-b400ca32.js
+++ b/web/settings/assets/electricity_tariff-4bc01805.js
@@ -1 +1 @@
-import{E as c}from"./GeneralChargeConfig-a5add01a.js";import{_ as p,u as r,k as d,l as f,D as i,N as o,y as s,x as m}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energycharts"};function b(t,e,y,_,w,v){const a=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(a,{subtype:"info"},{default:o(()=>e[2]||(e[2]=[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),m("br",null,null,-1),s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")])),_:1}),i(l,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":t.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:o(()=>e[3]||(e[3]=[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")])),_:1},8,["model-value"])])}const V=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{V as default};
+import{E as c}from"./GeneralChargeConfig-f6ca097b.js";import{_ as p,u as r,k as d,l as f,D as i,N as o,y as s,x as m}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energycharts"};function b(t,e,y,_,w,v){const a=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(a,{subtype:"info"},{default:o(()=>e[2]||(e[2]=[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),m("br",null,null,-1),s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")])),_:1}),i(l,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":t.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:o(()=>e[3]||(e[3]=[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")])),_:1},8,["model-value"])])}const V=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{V as default};
diff --git a/web/settings/assets/electricity_tariff-c1ffcfa7.js b/web/settings/assets/electricity_tariff-5111f15f.js
similarity index 96%
rename from web/settings/assets/electricity_tariff-c1ffcfa7.js
rename to web/settings/assets/electricity_tariff-5111f15f.js
index 61c27a9a61..2c9a5be6a1 100644
--- a/web/settings/assets/electricity_tariff-c1ffcfa7.js
+++ b/web/settings/assets/electricity_tariff-5111f15f.js
@@ -1 +1 @@
-import{E as m}from"./GeneralChargeConfig-a5add01a.js";import{_ as g,u as s,k as h,l as _,D as n,N as y,y as l,x as T}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!<pre>"+e+"</pre>","danger")}}}},v={class:"electricity-tariff-tibber"};function w(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>e[3]||(e[3]=[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1),l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")])),_:1}),n(a,{ref:"tokenInput",title:"Token",required:"","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const E=g(k,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{E as default};
+import{E as m}from"./GeneralChargeConfig-f6ca097b.js";import{_ as g,u as s,k as h,l as _,D as n,N as y,y as l,x as T}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!<pre>"+e+"</pre>","danger")}}}},v={class:"electricity-tariff-tibber"};function w(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>e[3]||(e[3]=[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1),l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")])),_:1}),n(a,{ref:"tokenInput",title:"Token",required:"","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const E=g(k,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{E as default};
diff --git a/web/settings/assets/electricity_tariff-9f4ce3a7.js b/web/settings/assets/electricity_tariff-63a1e9ec.js
similarity index 89%
rename from web/settings/assets/electricity_tariff-9f4ce3a7.js
rename to web/settings/assets/electricity_tariff-63a1e9ec.js
index 364ec1039b..9c836f49dd 100644
--- a/web/settings/assets/electricity_tariff-9f4ce3a7.js
+++ b/web/settings/assets/electricity_tariff-63a1e9ec.js
@@ -1 +1 @@
-import{E as o}from"./GeneralChargeConfig-a5add01a.js";import{_ as a,u as n,k as s,l as c,D as l,N as p,y as f}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(t,e,_,w,y,b){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.country"))},{help:p(()=>e[1]||(e[1]=[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")])),_:1},8,["model-value"])])}const $=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{$ as default};
+import{E as o}from"./GeneralChargeConfig-f6ca097b.js";import{_ as a,u as n,k as s,l as c,D as l,N as p,y as f}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(t,e,_,w,y,b){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.country"))},{help:p(()=>e[1]||(e[1]=[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")])),_:1},8,["model-value"])])}const $=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{$ as default};
diff --git a/web/settings/assets/electricity_tariff-ac583f0a.js b/web/settings/assets/electricity_tariff-7b04b620.js
similarity index 91%
rename from web/settings/assets/electricity_tariff-ac583f0a.js
rename to web/settings/assets/electricity_tariff-7b04b620.js
index 1b014b75e5..a1bfd731b5 100644
--- a/web/settings/assets/electricity_tariff-ac583f0a.js
+++ b/web/settings/assets/electricity_tariff-7b04b620.js
@@ -1 +1 @@
-import{E as s}from"./GeneralChargeConfig-a5add01a.js";import{_ as l,u as r,k as c,l as p,D as n,N as u,y as f}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(t,e,b,y,g,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")])),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{I as default};
+import{E as s}from"./GeneralChargeConfig-f6ca097b.js";import{_ as l,u as r,k as c,l as p,D as n,N as u,y as f}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(t,e,b,y,g,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")])),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{I as default};
diff --git a/web/settings/assets/electricity_tariff-18981e99.js b/web/settings/assets/electricity_tariff-e23d6291.js
similarity index 91%
rename from web/settings/assets/electricity_tariff-18981e99.js
rename to web/settings/assets/electricity_tariff-e23d6291.js
index a74cd22c14..6978b9bb88 100644
--- a/web/settings/assets/electricity_tariff-18981e99.js
+++ b/web/settings/assets/electricity_tariff-e23d6291.js
@@ -1 +1 @@
-import{E as l}from"./GeneralChargeConfig-a5add01a.js";import{_ as s,u as r,k as c,l as p,D as o,N as u,y as f}from"./vendor-a21b3a62.js";import"./index-dc0e711f.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(t,e,g,b,y,v){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")])),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const E=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{E as default};
+import{E as l}from"./GeneralChargeConfig-f6ca097b.js";import{_ as s,u as r,k as c,l as p,D as o,N as u,y as f}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(t,e,g,b,y,v){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")])),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const E=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{E as default};
diff --git a/web/settings/assets/external_inverter-319dd94a.js b/web/settings/assets/external_inverter-a76bfa79.js
similarity index 94%
rename from web/settings/assets/external_inverter-319dd94a.js
rename to web/settings/assets/external_inverter-a76bfa79.js
index 52e338ae64..21e9c38bfd 100644
--- a/web/settings/assets/external_inverter-319dd94a.js
+++ b/web/settings/assets/external_inverter-a76bfa79.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as i,k as g,l as f,D as o,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolaredgeExternalInverter",mixins:[m]},c={class:"device-solaredge-external-inverter"};function v(n,e,_,w,x,C){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),a=i("openwb-base-number-input"),d=i("openwb-base-select-input");return g(),f("div",c,[o(l,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für SolarEdge externen Wechselrichter ")])),_:1}),o(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[s(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')])),_:1}),o(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(a,{title:"SolarEdge-Meter-ID","model-value":n.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren","not-selected":"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":n.component.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.factor"))},{help:r(()=>e[5]||(e[5]=[s(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")])),_:1},8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default};
+import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as i,k as g,l as f,D as o,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolaredgeExternalInverter",mixins:[m]},c={class:"device-solaredge-external-inverter"};function v(n,e,_,w,x,C){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),a=i("openwb-base-number-input"),d=i("openwb-base-select-input");return g(),f("div",c,[o(l,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für SolarEdge externen Wechselrichter ")])),_:1}),o(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[s(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')])),_:1}),o(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(a,{title:"SolarEdge-Meter-ID","model-value":n.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren","not-selected":"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":n.component.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.factor"))},{help:r(()=>e[5]||(e[5]=[s(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")])),_:1},8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default};
diff --git a/web/settings/assets/index-dc0e711f.js b/web/settings/assets/index-f9fda857.js
similarity index 96%
rename from web/settings/assets/index-dc0e711f.js
rename to web/settings/assets/index-f9fda857.js
index 4ecf28a346..76609327d1 100644
--- a/web/settings/assets/index-dc0e711f.js
+++ b/web/settings/assets/index-f9fda857.js
@@ -1 +1 @@
-import{_ as y,k as r,l as d,m as h,q as k,u as g,x as o,y as p,z as b,A as _,B as c,D as m,E as B,F as x,G as S,I as z,J as T,K as P,L as G,M as J,N as f,O as K,P as Q,T as R,Q as Y,R as j,S as Z,U as X,V as ee,W as te,X as se,Y as ne,Z as oe}from"./vendor-a21b3a62.js";import{l as C,f as I,a as V,b as ae,c as le,d as ie,e as re,F as O,g as D,h as de,i as ue,j as ce,k as pe,m as me,n as fe,o as ge,p as he,q as _e,r as be,s as ve,t as ye,u as we,v as ke,w as Se,x as Be,y as Ce,z as Oe,A as $e,B as xe,C as Te,D as Ie,E as Ve,G as Me,H as Ae,I as qe,J as Pe}from"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import{p as He,a as De}from"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-jquery-a5dbbab1.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))u(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&u(a)}).observe(document,{childList:!0,subtree:!0});function n(l){const s={};return l.integrity&&(s.integrity=l.integrity),l.referrerPolicy&&(s.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?s.credentials="include":l.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function u(l){if(l.ep)return;l.ep=!0;const s=n(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}}};function Le(t,e,n,u,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(t.$slots,"default")],2)}const je=y(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));C.add(I,V,ae,le,ie,re);const Re={name:"OpenwbArrayInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!0,default:"#TITLE#"},modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let t=this.value;t.push(this.newTag),t.sort(),this.value=t,this.newTag=""}this.$refs.tagInput.focus()},removeTag(t){let e=this.value;e.splice(t,1),this.value=e}}},Ne={class:"form-row mb-1"},Fe={class:"col-md-8"},Ue={class:"form-row"},ze={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Ne,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Fe,[o("div",Ue,[o("div",ze,[o("div",Ge,[o("div",Je,[h(t.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),B(o("input",S({ref:"tagInput","onUpdate:modelValue":e[1]||(e[1]=i=>l.newTag=i),type:"text",class:"form-control"},t.$attrs,{onKeyup:e[2]||(e[2]=z((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[x,l.newTag]]),o("div",Ke,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:e[3]||(e[3]=(...i)=>s.addTag&&s.addTag(...i))},[h(t.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):c("",!0),(r(!0),d(T,null,P(s.value,(i,v)=>(r(),d("span",{key:v,class:"tag"},[h(t.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(i)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const et=y(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},nt={class:"avatar"};function ot(t,e,n,u,l,s){return r(),d("div",nt,[h(t.$slots,"default",{},()=>[e[0]||(e[0]=p("?"))],!0)])}const at=y(st,[["render",ot],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),lt=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));C.add(I,V,D);const it={name:"OpenwbButtonGroupInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean],default:void 0},buttons:{type:Array,required:!0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ut={class:"form-row"},ct={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",rt,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[h(t.$slots,"default",{},()=>[p(b(n.title),1)]),t.$slots.help?(r(),_(a,{key:0,"fixed-width":"",icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",dt,[o("div",ut,[o("div",ct,[(r(!0),d(T,null,P(n.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=v=>s.value=v),type:"radio",value:i.buttonValue,ref_for:!0},t.$attrs),null,16,pt),[[G,s.value]]),h(t.$slots,"label-"+i.buttonValue,{},()=>[p(b(i.text),1)]),m(a,{icon:["fas","check"],style:J([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[h(t.$slots,"help")])):c("",!0)])])}const gt=y(it,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:gt},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const _t={name:"OpenwbButtonInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},buttonText:{type:String,required:!1,default:void 0},disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}},emits:["buttonClicked"],data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(t){this.$emit("buttonClicked",t)}}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},yt={class:"form-row"},wt={key:0,class:"form-row alert alert-info my-1 small"};function kt(t,e,n,u,l,s){const a=g("font-awesome-icon"),i=g("openwb-base-click-button");return r(),d("div",bt,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",vt,[o("div",yt,[m(i,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},t.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[h(t.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",wt,[h(t.$slots,"help")])):c("",!0)])])}const St=y(_t,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Bt=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));C.add(de,ue);const Ct={name:"OpenwbCard",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(t)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},xt={class:"col"},Tt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:1,class:"card-footer"};function Mt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:e[0]||(e[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[o("div",Ot,[o("div",$t,[o("div",xt,[h(t.$slots,"header",{collapsed:l.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Tt,[t.$slots.actions?(r(),d("span",It,[h(t.$slots,"actions",{collapsed:l.isCollapsed})])):c("",!0),n.collapsible?(r(),_(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):c("",!0)])],2),l.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},t.$attrs),[h(t.$slots,"default")],16)):c("",!0),t.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Vt,[h(t.$slots,"footer")])):c("",!0)],2)}const At=y(Ct,[["render",Mt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),qt=Object.freeze(Object.defineProperty({__proto__:null,default:At},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Pt={name:"OpenwbCheckboxInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Ht={class:"form-row mb-1"},Dt={class:"col-md-8"},Et={class:"form-row"},Lt={key:0,class:"form-row alert alert-info my-1 small"};function jt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Ht,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Dt,[o("div",Et,[B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"form-control",type:"checkbox"},t.$attrs),null,16),[[K,s.value]])]),l.showHelp?(r(),d("span",Lt,[h(t.$slots,"help")])):c("",!0)])])}const Wt=y(Pt,[["render",jt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Rt=Object.freeze(Object.defineProperty({__proto__:null,default:Wt},Symbol.toStringTag,{value:"Module"}));const Nt={name:"OpenwbClickButton",props:{title:{type:String,required:!1,default:""}},emits:["buttonClicked"],methods:{click(t){this.$emit("buttonClicked",t)}}};function Ft(t,e,n,u,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:e[0]||(e[0]=Q((...a)=>s.click&&s.click(...a),["prevent"]))},[h(t.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Ut=y(Nt,[["render",Ft],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),zt=Object.freeze(Object.defineProperty({__proto__:null,default:Ut},Symbol.toStringTag,{value:"Module"}));C.add(ce,pe);const Gt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const t=window.getSelection(),e=document.createRange();e.selectNodeContents(this.$refs["slot-wrapper"]),t.removeAllRanges(),t.addRange(e);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const t=document.body.createTextRange();t.moveToElementText(this.$refs["slot-wrapper"]),t.select()}else console.warn("could not select text, unsupported browser")}}}},Jt=["title"];function Kt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:e[0]||(e[0]=(...i)=>s.click&&s.click(...i))},[h(t.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Jt)}const Qt=y(Gt,[["render",Kt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));C.add(I,V,D);const Zt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},inheritAttrs:!1,data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Xt={key:0,class:"actions"},es={class:""},ts={key:0,class:"form-row alert alert-info small"};function ss(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d(T,null,[o("div",S({class:"card-text card-text-heading"},t.$attrs),[o("div",{class:"heading-text",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[h(t.$slots,"default",{},void 0,!0),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),t.$slots.actions?(r(),d("span",Xt,[h(t.$slots,"actions",{},void 0,!0)])):c("",!0)],16),o("div",es,[l.showHelp?(r(),d("span",ts,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])],64)}const ns=y(Zt,[["render",ss],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),os=Object.freeze(Object.defineProperty({__proto__:null,default:ns},Symbol.toStringTag,{value:"Module"})),as={name:"OpenwbModalDialog",props:{title:{type:String,required:!1,default:""},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(t){return["around","between","center","end","start"].indexOf(t)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},emits:["modal-result"],computed:{myButtons(){var t=[];return this.buttons!==void 0&&(t=this.buttons),this.preventClose||t.push({text:"Schließen",event:"close"}),t}},methods:{handleClick(t){t.stopPropagation();let e=t.target.getAttribute("data-event");e===null&&(e="close"),(e!="close"||!this.preventClose)&&this.$emit("modal-result",e)}}},ls={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},is={class:"modal-content"},rs={class:"modal-title"},ds={class:"modal-body"},us=["data-event"];function cs(t,e,n,u,l,s){return n.show?(r(),_(R,{key:0,to:"body"},[e[4]||(e[4]=o("div",{class:"modal-backdrop fade show"},null,-1)),o("div",{class:"modal fade d-block show",role:"dialog",onClick:e[2]||(e[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ls,[o("div",is,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",rs,b(n.title),1),n.preventClose?c("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:e[0]||(e[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",ds,[h(t.$slots,"default",{},()=>[e[3]||(e[3]=p("# Body #"))])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(T,null,P(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:e[1]||(e[1]=(...i)=>s.handleClick&&s.handleClick(...i))},b(a.text),11,us))),128))],2)):c("",!0)])])])])):c("",!0)}const ps=y(as,[["render",cs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),ms=Object.freeze(Object.defineProperty({__proto__:null,default:ps},Symbol.toStringTag,{value:"Module"}));C.add(I,V,me);const fs={name:"OpenwbNumberInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},precision:{type:Number,default:void 0},emptyValue:{type:[Number,null],required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(t){(isNaN(t)||typeof t!="number")&&(t=this.emptyValue),this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},gs={class:"form-row mb-1"},hs={class:"col-md-8"},_s={class:"form-row"},bs={class:"input-group"},vs={class:"input-group-prepend"},ys={class:"input-group-text"},ws={key:0,class:"input-group-append"},ks={class:"input-group-text"},Ss={key:0,class:"form-row alert alert-info my-1 small"};function Bs(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",gs,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",hs,[o("div",_s,[o("div",bs,[o("div",vs,[o("div",ys,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),type:"number",class:"form-control"},t.$attrs),null,16),[[x,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",ws,[o("div",ks,b(n.unit),1)])):c("",!0)])]),l.showHelp?(r(),d("span",Ss,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const Cs=y(fs,[["render",Bs],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Os=Object.freeze(Object.defineProperty({__proto__:null,default:Cs},Symbol.toStringTag,{value:"Module"}));C.add(I,V,fe,ge);const $s={name:"OpenwbRangeInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},min:{type:Number,required:!0,default:0},max:{type:Number,required:!0,default:100},step:{type:Number,required:!1,default:1},labels:{type:Array,required:!1,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var t;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?t=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):t=this.sliderValue,typeof t=="number"&&(t=t.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(t+=" "+this.unit)),t},precision(){if(!isFinite(this.step))return 0;for(var t=1,e=0;Math.round(this.step*t)/t!==this.step;)t*=10,e++;return e},sliderValue:{get(){if(this.labels){var t=void 0;for(let e=0;e<this.labels.length;e++)if(this.labels[e].value==this.modelValue){t=e;break}return t===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):t}return this.modelValue},set(t){if(this.labels){var e=this.labels[t].value;this.$emit("update:modelValue",e)}else this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var t=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(t*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var t=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(t*Math.pow(10,this.precision))/Math.pow(10,this.precision)}}},xs={class:"form-row mb-1"},Ts={class:"col-md-8"},Is={class:"form-row vaRow mb-1"},Vs={key:0,class:"col-2 col-form-label valueLabel"},Ms={class:"col"},As=["min","max","step"],qs={key:0,class:"form-row alert alert-info my-1 small"},Ps={class:"col"};function Hs(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",xs,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Ts,[o("div",Is,[s.label?(r(),d("label",Vs,b(s.label),1)):c("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[1]||(e[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),o("div",Ms,[B(o("input",S({"onUpdate:modelValue":e[2]||(e[2]=i=>s.sliderValue=i),type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step},t.$attrs),null,16,As),[[x,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[3]||(e[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[o("div",Ps,[h(t.$slots,"help",{},void 0,!0)])])):c("",!0)])])}const Ds=y($s,[["render",Hs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Es=Object.freeze(Object.defineProperty({__proto__:null,default:Ds},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Ls={name:"OpenwbSelectInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Array,null],required:!1,default:void 0},groups:{type:Array,required:!1,default:void 0},options:{type:Array,required:!1,default:void 0},notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},js={class:"form-row mb-1"},Ws={class:"col-md-8"},Rs={class:"form-row"},Ns={key:0,value:void 0,disabled:""},Fs=["value"],Us=["label"],zs=["value"],Gs={key:0,class:"form-row alert alert-info my-1 small"};function Js(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",js,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Ws,[o("div",Rs,[B(o("select",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"col form-control"},t.$attrs),[n.notSelected!==void 0?(r(),d("option",Ns," -- "+b(n.notSelected)+" -- ",1)):c("",!0),(r(!0),d(T,null,P(n.options,i=>(r(),d("option",{key:i.value,value:i.value},b(i.text),9,Fs))),128)),(r(!0),d(T,null,P(n.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(T,null,P(i.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,zs))),128))],8,Us))),128))],16),[[Y,s.value]]),h(t.$slots,"append")]),l.showHelp?(r(),d("span",Gs,[h(t.$slots,"help")])):c("",!0)])])}const Ks=y(Ls,[["render",Js],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Qs=Object.freeze(Object.defineProperty({__proto__:null,default:Ks},Symbol.toStringTag,{value:"Module"}));C.add(D,he,_e);const Ys={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},emits:["reset","defaults","save"],data(){return{showModalReset:!1,showModalDefaults:!1}},computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(t){this.showModalReset=!1,t=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(t){this.showModalDefaults=!1,t=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},Zs={class:"row justify-content-center mb-1"},Xs={class:"col-md-4 d-flex py-1 justify-content-center"},en={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},tn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function sn(t,e,n,u,l,s){const a=g("openwb-base-modal-dialog"),i=g("font-awesome-icon");return r(),d(T,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success","prevent-close":!0},{default:f(()=>e[3]||(e[3]=[p(" Einstellungen werden gespeichert... ")])),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>e[4]||(e[4]=[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")])),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>e[5]||(e[5]=[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")])),_:1},8,["show","onModalResult"]),o("div",Zs,[o("div",Xs,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:e[0]||(e[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[e[6]||(e[6]=p(" Speichern ")),m(i,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?c("",!0):(r(),d("div",en,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:e[1]||(e[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[e[7]||(e[7]=p(" Änderungen verwerfen ")),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?c("",!0):(r(),d("div",tn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:e[2]||(e[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[e[8]||(e[8]=p(" Werkseinstellungen ")),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const nn=y(Ys,[["render",sn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),on=Object.freeze(Object.defineProperty({__proto__:null,default:nn},Symbol.toStringTag,{value:"Module"}));C.add(I,V,be,ve,ye,we,ke,Se,Be,Ce,Oe,$e,xe,Te);const an={name:"OpenwbTextInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(t)!==-1},default:"text"},pattern:{type:String,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},emptyValue:{type:[String,Object,null],required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.error("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else t==""&&(t=this.emptyValue),this.$emit("update:modelValue",t)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(t){var e,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+t),e=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}e>this.inputRef.max||e<this.inputRef.min||(this.value=e)}}},ln={class:"form-row mb-1"},rn={class:"col-md-8"},dn={class:"form-row"},un={class:"input-group"},cn={class:"input-group-prepend"},pn={class:"input-group-text"},mn=["pattern"],fn=["pattern"],gn=["type","pattern"],hn=["type"],_n={key:9,class:"input-group-append"},bn={class:"input-group-text"},vn={class:"input-group-text"},yn={key:0,class:"form-row alert alert-info my-1 small"};function wn(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",ln,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",rn,[o("div",dn,[o("div",un,[o("div",cn,[o("div",pn,[n.subtype=="text"?(r(),_(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):c("",!0),n.subtype=="email"?(r(),_(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):c("",!0),n.subtype=="host"?(r(),_(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):c("",!0),n.subtype=="url"?(r(),_(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):c("",!0),n.subtype=="user"?(r(),_(a,{key:4,"fixed-width":"",icon:["fas","user"]})):c("",!0),n.subtype=="json"?(r(),_(a,{key:5,"fixed-width":"",icon:["fas","code"]})):c("",!0),n.subtype=="password"?(r(),_(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):c("",!0),n.subtype=="time"?(r(),_(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):c("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),_(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):c("",!0)])]),["text","user"].includes(n.subtype)?B((r(),d("input",S({key:0,ref:"textInput","onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),type:"text",class:["form-control",{invalid:l.inputInvalid}]},t.$attrs,{pattern:n.pattern}),null,16,mn)),[[x,s.value]]):c("",!0),n.subtype=="json"?B((r(),d("input",S({key:1,ref:"jsonInput","onUpdate:modelValue":e[2]||(e[2]=i=>s.value=i),type:"text",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,fn)),[[x,s.value]]):c("",!0),n.subtype=="password"?B((r(),d("input",S({key:2,ref:"passwordInput","onUpdate:modelValue":e[3]||(e[3]=i=>s.value=i),type:l.showPassword?"text":"password",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,gn)),[[j,s.value]]):c("",!0),n.subtype=="host"?B((r(),d("input",S({key:3,ref:"hostInput","onUpdate:modelValue":e[4]||(e[4]=i=>s.value=i),type:"text",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),["email","url"].includes(n.subtype)?B((r(),d("input",S({key:4,"onUpdate:modelValue":e[5]||(e[5]=i=>s.value=i),refs:"urlInput",type:n.subtype,class:"form-control"},t.$attrs),null,16,hn)),[[j,s.value]]):c("",!0),n.subtype=="time"?B((r(),d("input",S({key:5,ref:"timeInput","onUpdate:modelValue":e[6]||(e[6]=i=>s.value=i),type:"time",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="date"?B((r(),d("input",S({key:6,ref:"dateInput","onUpdate:modelValue":e[7]||(e[7]=i=>s.value=i),type:"date",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="month"?B((r(),d("input",S({key:7,ref:"monthInput","onUpdate:modelValue":e[8]||(e[8]=i=>s.value=i),type:"month",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="year"?B((r(),d("input",S({key:8,ref:"yearInput","onUpdate:modelValue":e[9]||(e[9]=i=>s.value=i),type:"number",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.unit?(r(),d("div",_n,[o("div",bn,b(n.unit),1)])):c("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:e[10]||(e[10]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[o("div",vn,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):c("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:e[11]||(e[11]=i=>s.modify(-1))},e[13]||(e[13]=[o("div",{class:"input-group-text"}," - ",-1)]))):c("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:e[12]||(e[12]=i=>s.modify(1))},e[14]||(e[14]=[o("div",{class:"input-group-text"}," + ",-1)]))):c("",!0)])]),l.showHelp?(r(),d("span",yn,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const kn=y(an,[["render",wn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Sn=Object.freeze(Object.defineProperty({__proto__:null,default:kn},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Bn={name:"OpenwbTextareaInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","json"].indexOf(t)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.warn("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else this.$emit("update:modelValue",t)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Cn={class:"form-row mb-1"},On={class:"col-md-8"},$n={class:"form-row"},xn={class:"input-group"},Tn={class:"input-group-prepend"},In={class:"input-group-text"},Vn={key:2,class:"input-group-append"},Mn={class:"input-group-text"},An={class:"form-text text-muted text-right"},qn={key:0,class:"form-row alert alert-info my-1 small"};function Pn(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Cn,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",On,[o("div",$n,[o("div",xn,[o("div",Tn,[o("div",In,[n.subtype=="text"?(r(),_(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):c("",!0),n.subtype=="json"?(r(),_(a,{key:1,"fixed-width":"",icon:["fas","code"]})):c("",!0)])]),n.subtype==="json"?B((r(),d("textarea",S({key:0,ref:"jsonInput","onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"form-control"},t.$attrs),null,16)),[[x,s.value,void 0,{lazy:!0}]]):B((r(),d("textarea",S({key:1,"onUpdate:modelValue":e[2]||(e[2]=i=>s.value=i),class:"form-control"},t.$attrs),null,16)),[[x,s.value]]),t.$attrs.maxlength?(r(),d("div",Vn,[o("div",Mn,[o("small",An,b(s.length)+" / "+b(t.$attrs.maxlength),1)])])):c("",!0)])]),l.showHelp?(r(),d("span",qn,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const Hn=y(Bn,[["render",Pn],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Dn=Object.freeze(Object.defineProperty({__proto__:null,default:Hn},Symbol.toStringTag,{value:"Module"}));const En={name:"OpenwbToast",props:{topic:{type:String,required:!0},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},source:{type:String,required:!0,validator:function(t){return["system","client","command"].indexOf(t)!==-1}},timestamp:{type:Number,required:!0}},emits:["dismiss","hide"],data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const t={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var e=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const u=new Date-this.timestamp*1e3;for(var l in t)if(Math.abs(u)>t[l]){this.relativeTime=e.format(Math.round(-u/t[l]),l);break}u>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}}},Ln={key:0,class:"time-diff"},jn={class:"toast-body"};function Wn(t,e,n,u,l,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[e[2]||(e[2]=o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),n.timestamp?(r(),d("small",Ln,b(l.relativeTime),1)):c("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:e[0]||(e[0]=(...a)=>s.dismiss&&s.dismiss(...a))},e[1]||(e[1]=[o("span",{"aria-hidden":"true"},"×",-1)]))],2),o("div",jn,[h(t.$slots,"default",{},void 0,!0)])],2)}const Rn=y(En,[["render",Wn],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Nn=Object.freeze(Object.defineProperty({__proto__:null,default:Rn},Symbol.toStringTag,{value:"Module"}));C.add(Ie);const Fn={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},Un={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},zn={ref:"navbarButton",class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar"},Gn={id:"collapsibleNavbar",ref:"collapsibleNavbar",class:"collapse navbar-collapse navbar-nav-scroll"},Jn={class:"navbar-nav"},Kn={class:"nav-item"},Qn={class:"nav-item dropdown nav-separator-after"},Yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Zn={class:"nav-item dropdown"},Xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},eo={class:"nav-item dropdown"},to={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},so={class:"nav-item dropdown"},no={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},oo={class:"nav-item dropdown"},ao={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},lo={class:"nav-item nav-separator-before"},io={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function ro(t,e,n,u,l,s){const a=g("router-link"),i=g("font-awesome-icon");return r(),d("nav",Un,[e[31]||(e[31]=o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),o("button",zn,e[0]||(e[0]=[o("span",{class:"navbar-toggler-icon"},null,-1)]),512),o("div",Gn,[o("ul",Jn,[o("li",Kn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>e[1]||(e[1]=[p(" Status ")])),_:1})]),o("li",Qn,[e[4]||(e[4]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),o("div",Yn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[2]||(e[2]=[p(" Ladeprotokoll ")])),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[3]||(e[3]=[p(" Diagramme ")])),_:1})])]),o("li",Zn,[e[7]||(e[7]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),o("div",Xn,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[5]||(e[5]=[p(" Allgemein ")])),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[6]||(e[6]=[p(" Optionale Hardware ")])),_:1})])]),o("li",eo,[e[13]||(e[13]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),o("div",to,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[8]||(e[8]=[p(" Übergreifendes ")])),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[9]||(e[9]=[p(" Sofortladen ")])),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[10]||(e[10]=[p(" PV-Laden ")])),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[11]||(e[11]=[p(" Zeitladen ")])),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[12]||(e[12]=[p(" Zielladen ")])),_:1})])]),o("li",so,[e[20]||(e[20]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),o("div",no,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[14]||(e[14]=[p(" Geräte und Komponenten ")])),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[15]||(e[15]=[p(" Lastmanagement ")])),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[16]||(e[16]=[p(" Ladepunkte ")])),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[17]||(e[17]=[p(" Fahrzeuge ")])),_:1}),e[18]||(e[18]=o("div",{class:"dropdown-divider"},null,-1)),e[19]||(e[19]=o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1))])]),o("li",oo,[e[29]||(e[29]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),o("div",ao,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[21]||(e[21]=[p(" Einrichtungsassistent ")])),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[22]||(e[22]=[p(" openWB Cloud ")])),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[23]||(e[23]=[p(" MQTT-Brücken ")])),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[24]||(e[24]=[p(" Fehlersuche ")])),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[25]||(e[25]=[p(" Support ")])),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[26]||(e[26]=[p(" Datenverwaltung ")])),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[27]||(e[27]=[p(" System ")])),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[28]||(e[28]=[p(" Rechtliches ")])),_:1})])]),o("li",lo,[o("a",io,[e[30]||(e[30]=p(" Wiki ")),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const uo=y(Fn,[["render",ro],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const co={name:"OpenwbPageFooter"},po={id:"footer",class:"footer bg-dark text-light font-small"},mo={class:"container text-center"};function fo(t,e,n,u,l,s){return r(),d("footer",po,[o("div",mo,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(t.$route.meta.heading),1)])])}const go=y(co,[["render",fo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);C.add(Ve);const ho={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},_o={class:"mt-3 alert alert-dark text-center"},bo={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},vo={type:"submit",class:"btn btn-primary"};function yo(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",_o,[e[3]||(e[3]=p(" Open Source made with love!")),e[4]||(e[4]=o("br",null,null,-1)),e[5]||(e[5]=p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben")),e[6]||(e[6]=o("br",null,null,-1)),o("form",bo,[e[1]||(e[1]=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1)),e[2]||(e[2]=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1)),o("button",vo,[e[0]||(e[0]=p(" Spenden ")),m(a,{icon:["fab","paypal"]})])])])}const wo=y(ho,[["render",yo],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),ko={name:"ComponentState",emits:["reset","defaults","save"],data(){return{mqttTopicsToSubscribe:[]}},computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)},methods:{updateState(t,e,n=void 0){console.debug("updateState:",t,e,n),this.$store.commit({type:"updateTopic",topic:t,objectPath:n,payload:e})},ac_current2dc_power(t){return parseFloat((t*3*230/1e3).toFixed(2))},dc_power2ac_current(t){return parseFloat((t*1e3/230/3).toFixed(2))},getWildcardIndexList(t,e=!1){let n=t;e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let u=Object.keys(this.$store.state.mqtt).filter(l=>l.match(n));return u.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),u},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(u=>u.match(n)).reduce((u,l)=>({...u,[l]:this.$store.state.mqtt[l]}),{})},formatDate(t,e={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(t).toLocaleDateString(void 0,e)},formatNumber(t,e=0,n=e,u=1){if(!(t==null||isNaN(t)))return(t*u).toLocaleString(void 0,{minimumFractionDigits:e,maximumFractionDigits:n})},formatNumberTopic(t,e=0,n=e,u=1){return this.$store.state.mqtt[t]?this.formatNumber(this.$store.state.mqtt[t],e,n,u):"-"},formatPhaseArrayNumberTopic(t,e=0,n=e,u=1){return this.$store.state.mqtt[t]?this.$store.state.mqtt[t].map(l=>this.formatNumber(l,e,n,u)).join(" / "):"- / - / -"},translateChargeMode(t){switch(t){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",t),t}}}},N=y(ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);C.add(Me,Ae);const So={name:"OpenwbPageMessages",components:{FontAwesomeIcon:O,FontAwesomeLayers:qe,FontAwesomeLayersText:Pe},mixins:[N],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((e,n)=>((e=="light"&&["info","success","warning","danger"].includes(n.type)||e=="info"&&["success","warning","danger"].includes(n.type)||e=="success"&&["warning","danger"].includes(n.type)||e=="warning"&&n.type=="danger")&&(e=n.type),e),"light")},messages(){const t=[];return this.systemMessages.forEach(e=>{t.push(e)}),this.clientMessages.forEach(e=>{t.push(e)}),t.sort(this.compareMessagesByTimestamp),t},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(t=>!this.hiddenMessages.includes(t.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let t=this.getWildcardTopics("openWB/system/messages/+");var e=[];for(const[n,u]of Object.entries(t))e.push({topic:n,...u});return e},clientMessages(){let t=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var e=[];for(const[n,u]of Object.entries(t))e.push({topic:n,...u});return e}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(t,e){return e.timestamp-t.timestamp},clearTopic(t){this.$root.doPublish(t,void 0)},dismissMessage(t){this.clearTopic(t.topic);var e=this.hiddenMessages.indexOf(t.topic);e>-1&&this.hiddenMessages.splice(e,1)},dismissAllMessages(){this.messages.forEach(t=>{this.clearTopic(t.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(t){this.hiddenMessages.includes(t.topic)||this.hiddenMessages.push(t.topic)}}},Bo=["innerHTML"];function Co(t,e,n,u,l,s){const a=g("font-awesome-icon"),i=g("font-awesome-layers-text"),v=g("font-awesome-layers"),$=g("openwb-base-alert"),M=g("openwb-base-click-button"),A=g("openwb-base-toast");return r(),d(T,null,[(r(),_(R,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",l.showAllMessages?"active":""]),onClick:e[0]||(e[0]=(...q)=>s.toggleAllMessages&&s.toggleAllMessages(...q))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:f(()=>[m(a,{"fixed-width":"",icon:l.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),_(i,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):c("",!0)]),_:1})],2)])),s.recentMessages.length>0||l.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",l.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),_($,{key:0,subtype:"info"},{default:f(()=>e[1]||(e[1]=[p(" Keine Nachrichten vorhanden. ")])),_:1})):l.showAllMessages?(r(),_(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:f(()=>e[2]||(e[2]=[p(" Alle Nachrichten löschen ")])),_:1},8,["onButtonClicked"])):c("",!0),(r(!0),d(T,null,P(s.recentMessages,q=>(r(),_(A,{key:q.topic,topic:q.topic,source:q.source,subtype:q.type,timestamp:q.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:f(()=>[o("span",{innerHTML:q.message},null,8,Bo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):c("",!0)],64)}const Oo=y(So,[["render",Co],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),$o={name:"OpenwbPageBlocker",mixins:[N],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(t){t=="reload"?location.reload():console.warn("unknown event",t)}}},xo={class:"openwb-blocker"},To={key:0},Io={key:1},Vo={key:2},Mo={key:3};function Ao(t,e,n,u,l,s){const a=g("openwb-base-modal-dialog");return r(),d("div",xo,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark","prevent-close":!0,buttons:s.myButtons,onModalResult:e[0]||(e[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",To," Der Systemstart ist noch nicht abgeschlossen. ")):c("",!0),s.updateInProgress?(r(),d("p",Io," Es wird eine Systemaktualisierung ausgeführt. ")):c("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",Vo," Bitte die Seite neu laden. ")):(r(),d("p",Mo," Bitte warten... "))]),_:1},8,["show","title","buttons"])])}const qo=y($o,[["render",Ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const Po={name:"OpenwbSettingsApp",components:{NavBar:uo,PageFooter:go,DonationBanner:wo,Messages:Oo,Blocker:qo},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch(t){console.error("mqttClientId error",t);return}},topicList(){return Object.keys(this.$store.state.mqtt)}},created(){this.createConnection()},methods:{async saveValues(t=void 0){function e(u){return new Promise(l=>setTimeout(l,u))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};t===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(t)?t.forEach(u=>{n[u]=this.$store.state.mqtt[u]}):console.error("expected array, got ",typeof t);for(const[u,l]of Object.entries(n)){let s=u.replace("openWB/","openWB/set/");console.debug("saving data:",s,l),this.doPublish(s,l),await e(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(t=this.topicList){console.debug("resetting values..."),console.debug("topics: ",t),this.doUnsubscribe(t),this.doSubscribe(t)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(t){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",t,!1)},createConnection(){const{protocol:t,host:e,port:n,endpoint:u,...l}=this.connection,s=`${t}://${e}:${n}${u}`;console.debug("connecting to broker:",s);try{this.client=Z.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let v;try{v=JSON.parse(i.toString())}catch($){console.debug("Json parsing failed, fallback to string: ",a,$),v=i.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(t){console.debug("doSubscribe",t),t.forEach(e=>{this.$store.commit("addSubscription",e),this.$store.getters.subscriptionCount(e)==1?(e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.$store.commit("addTopic",{topic:e,payload:void 0}),this.client.subscribe(e,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",e)})},doUnsubscribe(t){console.debug("doUnsubscribe",t),t.forEach(e=>{this.$store.commit("removeSubscription",e),this.$store.getters.subscriptionCount(e)==0?(this.client.unsubscribe(e,n=>{n&&console.error("Unsubscribe error",n)}),e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",e),this.$store.commit("removeTopic",e))):console.debug("Still subscribed to topic: ",e)})},doPublish(t,e,n=!0,u=2){let l={qos:u,retain:n};this.client.publish(t,JSON.stringify(e),l,s=>{s&&console.error("Publish error",s)})},postClientMessage(t,e="secondary"){console.debug("postMessage:",t,e);const n=Date.now(),u="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:u,payload:{message:t,type:e,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(u=>u.match(n)).reduce((u,l)=>({...u,[l]:this.$store.state.mqtt[l]}),{})}}},Ho={role:"main",class:"container"},Do={id:"content"};function Eo(t,e,n,u,l,s){const a=g("nav-bar"),i=g("router-view"),v=g("donation-banner"),$=g("page-footer"),M=g("messages"),A=g("blocker");return r(),d(T,null,[o("header",null,[m(a)]),o("div",Ho,[o("div",Do,[o("h1",null,b(t.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(A)],64)}const Lo=y(Po,[["render",Eo],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),jo="modulepreload",Wo=function(t){return"/openWB/web/settings/"+t},W={},w=function(e,n,u){if(!n||n.length===0)return e();const l=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=Wo(s),s in W)return;W[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!u)for(let M=l.length-1;M>=0;M--){const A=l[M];if(A.href===s&&(!a||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":jo,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,A)=>{$.addEventListener("load",M),$.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};F.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const H=X({state:F,mutations:{storeLocal(t,e){t.local[e.name]=e.value},addTopic(t,e){Object.keys(t.mqtt).includes(e.topic)?console.warn("topic already exists: ",e.topic):t.mqtt[e.topic]=e.payload},removeTopic(t,e){delete t.mqtt[e]},updateTopic(t,e){const n=(u,l,s)=>l.split(".").reduce((a,i,v)=>a[i]=l.split(".").length===++v?s:a[i]||{},u);e.topic in t.mqtt||!(e.topic in t.examples)?e.objectPath!=null?n(t.mqtt[e.topic],e.objectPath,e.payload):t.mqtt[e.topic]=e.payload:(console.debug("topic not found in state.mqtt: ",e.topic),e.topic in t.examples?e.objectPath!=null?n(t.examples[e.topic],e.objectPath,e.payload):t.examples[e.topic]=e.payload:console.warn("topic not found in state: ",e.topic," giving up"))},addSubscription(t,e){e in t.mqttSubscriptions?t.mqttSubscriptions[e]+=1:t.mqttSubscriptions[e]=1,console.debug("subscription count: ",e,t.mqttSubscriptions[e])},removeSubscription(t,e){e in t.mqttSubscriptions&&(t.mqttSubscriptions[e]-=1,t.mqttSubscriptions[e]<=0&&delete t.mqttSubscriptions[e])}},actions:{},modules:{},getters:{usageTermsAcknowledged(t){return new Promise(e=>{if(t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)e(t.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,u;n=setTimeout(()=>{clearInterval(u),e(!1)},5e3),u=setInterval(()=>{t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(u),e(t.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(t){return new Promise(e=>{if(t.mqtt["openWB/system/installAssistantDone"]!==void 0)e(t.mqtt["openWB/system/installAssistantDone"]);else{var n,u;n=setTimeout(()=>{clearInterval(u),e(!1)},5e3),u=setInterval(()=>{t.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(u),e(t.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:t=>e=>t.mqttSubscriptions[e]||0}}),U=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>w(()=>import("./Status-425f485b.js"),["assets/Status-425f485b.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-5fa56b74.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>w(()=>import("./ChargeLog-9836d756.js"),["assets/ChargeLog-9836d756.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>w(()=>import("./Chart-eb294839.js"),["assets/Chart-eb294839.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-5fa56b74.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>w(()=>import("./GeneralConfig-2f07ba45.js").then(t=>t.a),["assets/GeneralConfig-2f07ba45.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>w(()=>import("./OptionalComponents-be1b1295.js").then(t=>t.O),["assets/OptionalComponents-be1b1295.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>w(()=>import("./GeneralChargeConfig-a5add01a.js").then(t=>t.G),["assets/GeneralChargeConfig-a5add01a.js","assets/dynamic-import-helper-be004503.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>w(()=>import("./InstantChargeConfig-d3719370.js"),["assets/InstantChargeConfig-d3719370.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>w(()=>import("./PVChargeConfig-f08197ff.js"),["assets/PVChargeConfig-f08197ff.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>w(()=>import("./TimeChargeConfig-7cd7d455.js"),["assets/TimeChargeConfig-7cd7d455.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>w(()=>import("./ScheduledChargeConfig-6d89b998.js"),["assets/ScheduledChargeConfig-6d89b998.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>w(()=>import("./HardwareInstallation-6cc98da9.js").then(t=>t.a),["assets/HardwareInstallation-6cc98da9.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>w(()=>import("./LoadManagementConfig-87715007.js"),["assets/LoadManagementConfig-87715007.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>w(()=>import("./ChargePointInstallation-12a5c989.js").then(t=>t.c),["assets/ChargePointInstallation-12a5c989.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>w(()=>import("./VehicleConfig-0ab604e8.js").then(t=>t.b),["assets/VehicleConfig-0ab604e8.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>w(()=>import("./CloudConfig-d834b2a3.js"),["assets/CloudConfig-d834b2a3.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>w(()=>import("./MqttBridgeConfig-a467e292.js"),["assets/MqttBridgeConfig-a467e292.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>w(()=>import("./DebugConfig-0ce8b81e.js"),["assets/DebugConfig-0ce8b81e.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>w(()=>import("./Support-9ecadb2d.js"),["assets/Support-9ecadb2d.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>w(()=>import("./LegalSettings-b9806df1.js"),["assets/LegalSettings-b9806df1.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>w(()=>import("./System-8e218ae4.js"),["assets/System-8e218ae4.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>w(()=>import("./DataManagement-ad71d105.js").then(t=>t.a),["assets/DataManagement-ad71d105.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>w(()=>import("./InstallAssistant-c6a6444f.js"),["assets/InstallAssistant-c6a6444f.js","assets/dynamic-import-helper-be004503.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])}];U.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>w(()=>import("./TestingStore-ffe2c569.js"),["assets/TestingStore-ffe2c569.js","assets/OpenwbSortableList-3ce7f991.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])});const E=ee({history:te(),routes:U});E.beforeEach(async t=>{if(await H.getters.usageTermsAcknowledged){if(!await H.getters.installAssistantDone&&t.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(t.name!=="LegalSettings")return{name:"LegalSettings"}});E.afterEach(t=>{t.meta.heading?document.title="openWB | "+t.meta.heading:document.title="openWB"});const L=se(Lo);L.use(H).use(E).use(He,De);const Ro=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":lt,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Bt,"./components/OpenwbBaseCard.vue":qt,"./components/OpenwbBaseCheckboxInput.vue":Rt,"./components/OpenwbBaseClickButton.vue":zt,"./components/OpenwbBaseCopyToClipboard.vue":Yt,"./components/OpenwbBaseHeading.vue":os,"./components/OpenwbBaseModalDialog.vue":ms,"./components/OpenwbBaseNumberInput.vue":Os,"./components/OpenwbBaseRangeInput.vue":Es,"./components/OpenwbBaseSelectInput.vue":Qs,"./components/OpenwbBaseSubmitButtons.vue":on,"./components/OpenwbBaseTextInput.vue":Sn,"./components/OpenwbBaseTextarea.vue":Dn,"./components/OpenwbBaseToast.vue":Nn});Object.entries(Ro).forEach(([t,e])=>{const n=ne(oe(t.split("/").pop().replace(/\.\w+$/,"")));L.component(n,e.default)});L.mount("#app");export{N as C,w as _};
+import{_ as y,k as r,l as d,m as h,q as k,u as g,x as o,y as p,z as b,A as _,B as c,D as m,E as B,F as x,G as S,I as z,J as T,K as P,L as G,M as J,N as f,O as K,P as Q,T as R,Q as Y,R as j,S as Z,U as X,V as ee,W as te,X as se,Y as ne,Z as oe}from"./vendor-a21b3a62.js";import{l as C,f as I,a as V,b as ae,c as le,d as ie,e as re,F as O,g as D,h as de,i as ue,j as ce,k as pe,m as me,n as fe,o as ge,p as he,q as _e,r as be,s as ve,t as ye,u as we,v as ke,w as Se,x as Be,y as Ce,z as Oe,A as $e,B as xe,C as Te,D as Ie,E as Ve,G as Me,H as Ae,I as qe,J as Pe}from"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import{p as He,a as De}from"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-jquery-a5dbbab1.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))u(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&u(a)}).observe(document,{childList:!0,subtree:!0});function n(l){const s={};return l.integrity&&(s.integrity=l.integrity),l.referrerPolicy&&(s.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?s.credentials="include":l.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function u(l){if(l.ep)return;l.ep=!0;const s=n(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}}};function Le(t,e,n,u,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(t.$slots,"default")],2)}const je=y(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));C.add(I,V,ae,le,ie,re);const Re={name:"OpenwbArrayInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!0,default:"#TITLE#"},modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let t=this.value;t.push(this.newTag),t.sort(),this.value=t,this.newTag=""}this.$refs.tagInput.focus()},removeTag(t){let e=this.value;e.splice(t,1),this.value=e}}},Ne={class:"form-row mb-1"},Fe={class:"col-md-8"},Ue={class:"form-row"},ze={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Ne,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Fe,[o("div",Ue,[o("div",ze,[o("div",Ge,[o("div",Je,[h(t.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),B(o("input",S({ref:"tagInput","onUpdate:modelValue":e[1]||(e[1]=i=>l.newTag=i),type:"text",class:"form-control"},t.$attrs,{onKeyup:e[2]||(e[2]=z((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[x,l.newTag]]),o("div",Ke,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:e[3]||(e[3]=(...i)=>s.addTag&&s.addTag(...i))},[h(t.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):c("",!0),(r(!0),d(T,null,P(s.value,(i,v)=>(r(),d("span",{key:v,class:"tag"},[h(t.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(i)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const et=y(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},nt={class:"avatar"};function ot(t,e,n,u,l,s){return r(),d("div",nt,[h(t.$slots,"default",{},()=>[e[0]||(e[0]=p("?"))],!0)])}const at=y(st,[["render",ot],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),lt=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));C.add(I,V,D);const it={name:"OpenwbButtonGroupInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean],default:void 0},buttons:{type:Array,required:!0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ut={class:"form-row"},ct={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",rt,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[h(t.$slots,"default",{},()=>[p(b(n.title),1)]),t.$slots.help?(r(),_(a,{key:0,"fixed-width":"",icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",dt,[o("div",ut,[o("div",ct,[(r(!0),d(T,null,P(n.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=v=>s.value=v),type:"radio",value:i.buttonValue,ref_for:!0},t.$attrs),null,16,pt),[[G,s.value]]),h(t.$slots,"label-"+i.buttonValue,{},()=>[p(b(i.text),1)]),m(a,{icon:["fas","check"],style:J([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[h(t.$slots,"help")])):c("",!0)])])}const gt=y(it,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:gt},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const _t={name:"OpenwbButtonInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},buttonText:{type:String,required:!1,default:void 0},disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}},emits:["buttonClicked"],data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(t){this.$emit("buttonClicked",t)}}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},yt={class:"form-row"},wt={key:0,class:"form-row alert alert-info my-1 small"};function kt(t,e,n,u,l,s){const a=g("font-awesome-icon"),i=g("openwb-base-click-button");return r(),d("div",bt,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",vt,[o("div",yt,[m(i,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},t.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[h(t.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",wt,[h(t.$slots,"help")])):c("",!0)])])}const St=y(_t,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Bt=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));C.add(de,ue);const Ct={name:"OpenwbCard",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(t)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},xt={class:"col"},Tt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:1,class:"card-footer"};function Mt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:e[0]||(e[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[o("div",Ot,[o("div",$t,[o("div",xt,[h(t.$slots,"header",{collapsed:l.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Tt,[t.$slots.actions?(r(),d("span",It,[h(t.$slots,"actions",{collapsed:l.isCollapsed})])):c("",!0),n.collapsible?(r(),_(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):c("",!0)])],2),l.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},t.$attrs),[h(t.$slots,"default")],16)):c("",!0),t.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Vt,[h(t.$slots,"footer")])):c("",!0)],2)}const At=y(Ct,[["render",Mt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),qt=Object.freeze(Object.defineProperty({__proto__:null,default:At},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Pt={name:"OpenwbCheckboxInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Ht={class:"form-row mb-1"},Dt={class:"col-md-8"},Et={class:"form-row"},Lt={key:0,class:"form-row alert alert-info my-1 small"};function jt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Ht,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Dt,[o("div",Et,[B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"form-control",type:"checkbox"},t.$attrs),null,16),[[K,s.value]])]),l.showHelp?(r(),d("span",Lt,[h(t.$slots,"help")])):c("",!0)])])}const Wt=y(Pt,[["render",jt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Rt=Object.freeze(Object.defineProperty({__proto__:null,default:Wt},Symbol.toStringTag,{value:"Module"}));const Nt={name:"OpenwbClickButton",props:{title:{type:String,required:!1,default:""}},emits:["buttonClicked"],methods:{click(t){this.$emit("buttonClicked",t)}}};function Ft(t,e,n,u,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:e[0]||(e[0]=Q((...a)=>s.click&&s.click(...a),["prevent"]))},[h(t.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Ut=y(Nt,[["render",Ft],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),zt=Object.freeze(Object.defineProperty({__proto__:null,default:Ut},Symbol.toStringTag,{value:"Module"}));C.add(ce,pe);const Gt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const t=window.getSelection(),e=document.createRange();e.selectNodeContents(this.$refs["slot-wrapper"]),t.removeAllRanges(),t.addRange(e);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const t=document.body.createTextRange();t.moveToElementText(this.$refs["slot-wrapper"]),t.select()}else console.warn("could not select text, unsupported browser")}}}},Jt=["title"];function Kt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:e[0]||(e[0]=(...i)=>s.click&&s.click(...i))},[h(t.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Jt)}const Qt=y(Gt,[["render",Kt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));C.add(I,V,D);const Zt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},inheritAttrs:!1,data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Xt={key:0,class:"actions"},es={class:""},ts={key:0,class:"form-row alert alert-info small"};function ss(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d(T,null,[o("div",S({class:"card-text card-text-heading"},t.$attrs),[o("div",{class:"heading-text",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[h(t.$slots,"default",{},void 0,!0),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),t.$slots.actions?(r(),d("span",Xt,[h(t.$slots,"actions",{},void 0,!0)])):c("",!0)],16),o("div",es,[l.showHelp?(r(),d("span",ts,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])],64)}const ns=y(Zt,[["render",ss],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),os=Object.freeze(Object.defineProperty({__proto__:null,default:ns},Symbol.toStringTag,{value:"Module"})),as={name:"OpenwbModalDialog",props:{title:{type:String,required:!1,default:""},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(t){return["around","between","center","end","start"].indexOf(t)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},emits:["modal-result"],computed:{myButtons(){var t=[];return this.buttons!==void 0&&(t=this.buttons),this.preventClose||t.push({text:"Schließen",event:"close"}),t}},methods:{handleClick(t){t.stopPropagation();let e=t.target.getAttribute("data-event");e===null&&(e="close"),(e!="close"||!this.preventClose)&&this.$emit("modal-result",e)}}},ls={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},is={class:"modal-content"},rs={class:"modal-title"},ds={class:"modal-body"},us=["data-event"];function cs(t,e,n,u,l,s){return n.show?(r(),_(R,{key:0,to:"body"},[e[4]||(e[4]=o("div",{class:"modal-backdrop fade show"},null,-1)),o("div",{class:"modal fade d-block show",role:"dialog",onClick:e[2]||(e[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ls,[o("div",is,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",rs,b(n.title),1),n.preventClose?c("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:e[0]||(e[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",ds,[h(t.$slots,"default",{},()=>[e[3]||(e[3]=p("# Body #"))])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(T,null,P(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:e[1]||(e[1]=(...i)=>s.handleClick&&s.handleClick(...i))},b(a.text),11,us))),128))],2)):c("",!0)])])])])):c("",!0)}const ps=y(as,[["render",cs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),ms=Object.freeze(Object.defineProperty({__proto__:null,default:ps},Symbol.toStringTag,{value:"Module"}));C.add(I,V,me);const fs={name:"OpenwbNumberInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},precision:{type:Number,default:void 0},emptyValue:{type:[Number,null],required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(t){(isNaN(t)||typeof t!="number")&&(t=this.emptyValue),this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},gs={class:"form-row mb-1"},hs={class:"col-md-8"},_s={class:"form-row"},bs={class:"input-group"},vs={class:"input-group-prepend"},ys={class:"input-group-text"},ws={key:0,class:"input-group-append"},ks={class:"input-group-text"},Ss={key:0,class:"form-row alert alert-info my-1 small"};function Bs(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",gs,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",hs,[o("div",_s,[o("div",bs,[o("div",vs,[o("div",ys,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),type:"number",class:"form-control"},t.$attrs),null,16),[[x,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",ws,[o("div",ks,b(n.unit),1)])):c("",!0)])]),l.showHelp?(r(),d("span",Ss,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const Cs=y(fs,[["render",Bs],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Os=Object.freeze(Object.defineProperty({__proto__:null,default:Cs},Symbol.toStringTag,{value:"Module"}));C.add(I,V,fe,ge);const $s={name:"OpenwbRangeInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},min:{type:Number,required:!0,default:0},max:{type:Number,required:!0,default:100},step:{type:Number,required:!1,default:1},labels:{type:Array,required:!1,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var t;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?t=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):t=this.sliderValue,typeof t=="number"&&(t=t.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(t+=" "+this.unit)),t},precision(){if(!isFinite(this.step))return 0;for(var t=1,e=0;Math.round(this.step*t)/t!==this.step;)t*=10,e++;return e},sliderValue:{get(){if(this.labels){var t=void 0;for(let e=0;e<this.labels.length;e++)if(this.labels[e].value==this.modelValue){t=e;break}return t===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):t}return this.modelValue},set(t){if(this.labels){var e=this.labels[t].value;this.$emit("update:modelValue",e)}else this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var t=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(t*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var t=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(t*Math.pow(10,this.precision))/Math.pow(10,this.precision)}}},xs={class:"form-row mb-1"},Ts={class:"col-md-8"},Is={class:"form-row vaRow mb-1"},Vs={key:0,class:"col-2 col-form-label valueLabel"},Ms={class:"col"},As=["min","max","step"],qs={key:0,class:"form-row alert alert-info my-1 small"},Ps={class:"col"};function Hs(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",xs,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Ts,[o("div",Is,[s.label?(r(),d("label",Vs,b(s.label),1)):c("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[1]||(e[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),o("div",Ms,[B(o("input",S({"onUpdate:modelValue":e[2]||(e[2]=i=>s.sliderValue=i),type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step},t.$attrs),null,16,As),[[x,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[3]||(e[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[o("div",Ps,[h(t.$slots,"help",{},void 0,!0)])])):c("",!0)])])}const Ds=y($s,[["render",Hs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Es=Object.freeze(Object.defineProperty({__proto__:null,default:Ds},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Ls={name:"OpenwbSelectInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Array,null],required:!1,default:void 0},groups:{type:Array,required:!1,default:void 0},options:{type:Array,required:!1,default:void 0},notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},js={class:"form-row mb-1"},Ws={class:"col-md-8"},Rs={class:"form-row"},Ns={key:0,value:void 0,disabled:""},Fs=["value"],Us=["label"],zs=["value"],Gs={key:0,class:"form-row alert alert-info my-1 small"};function Js(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",js,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Ws,[o("div",Rs,[B(o("select",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"col form-control"},t.$attrs),[n.notSelected!==void 0?(r(),d("option",Ns," -- "+b(n.notSelected)+" -- ",1)):c("",!0),(r(!0),d(T,null,P(n.options,i=>(r(),d("option",{key:i.value,value:i.value},b(i.text),9,Fs))),128)),(r(!0),d(T,null,P(n.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(T,null,P(i.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,zs))),128))],8,Us))),128))],16),[[Y,s.value]]),h(t.$slots,"append")]),l.showHelp?(r(),d("span",Gs,[h(t.$slots,"help")])):c("",!0)])])}const Ks=y(Ls,[["render",Js],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Qs=Object.freeze(Object.defineProperty({__proto__:null,default:Ks},Symbol.toStringTag,{value:"Module"}));C.add(D,he,_e);const Ys={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},emits:["reset","defaults","save"],data(){return{showModalReset:!1,showModalDefaults:!1}},computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(t){this.showModalReset=!1,t=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(t){this.showModalDefaults=!1,t=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},Zs={class:"row justify-content-center mb-1"},Xs={class:"col-md-4 d-flex py-1 justify-content-center"},en={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},tn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function sn(t,e,n,u,l,s){const a=g("openwb-base-modal-dialog"),i=g("font-awesome-icon");return r(),d(T,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success","prevent-close":!0},{default:f(()=>e[3]||(e[3]=[p(" Einstellungen werden gespeichert... ")])),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>e[4]||(e[4]=[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")])),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>e[5]||(e[5]=[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")])),_:1},8,["show","onModalResult"]),o("div",Zs,[o("div",Xs,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:e[0]||(e[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[e[6]||(e[6]=p(" Speichern ")),m(i,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?c("",!0):(r(),d("div",en,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:e[1]||(e[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[e[7]||(e[7]=p(" Änderungen verwerfen ")),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?c("",!0):(r(),d("div",tn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:e[2]||(e[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[e[8]||(e[8]=p(" Werkseinstellungen ")),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const nn=y(Ys,[["render",sn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),on=Object.freeze(Object.defineProperty({__proto__:null,default:nn},Symbol.toStringTag,{value:"Module"}));C.add(I,V,be,ve,ye,we,ke,Se,Be,Ce,Oe,$e,xe,Te);const an={name:"OpenwbTextInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(t)!==-1},default:"text"},pattern:{type:String,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},emptyValue:{type:[String,Object,null],required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.error("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else t==""&&(t=this.emptyValue),this.$emit("update:modelValue",t)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(t){var e,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+t),e=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}e>this.inputRef.max||e<this.inputRef.min||(this.value=e)}}},ln={class:"form-row mb-1"},rn={class:"col-md-8"},dn={class:"form-row"},un={class:"input-group"},cn={class:"input-group-prepend"},pn={class:"input-group-text"},mn=["pattern"],fn=["pattern"],gn=["type","pattern"],hn=["type"],_n={key:9,class:"input-group-append"},bn={class:"input-group-text"},vn={class:"input-group-text"},yn={key:0,class:"form-row alert alert-info my-1 small"};function wn(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",ln,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",rn,[o("div",dn,[o("div",un,[o("div",cn,[o("div",pn,[n.subtype=="text"?(r(),_(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):c("",!0),n.subtype=="email"?(r(),_(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):c("",!0),n.subtype=="host"?(r(),_(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):c("",!0),n.subtype=="url"?(r(),_(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):c("",!0),n.subtype=="user"?(r(),_(a,{key:4,"fixed-width":"",icon:["fas","user"]})):c("",!0),n.subtype=="json"?(r(),_(a,{key:5,"fixed-width":"",icon:["fas","code"]})):c("",!0),n.subtype=="password"?(r(),_(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):c("",!0),n.subtype=="time"?(r(),_(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):c("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),_(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):c("",!0)])]),["text","user"].includes(n.subtype)?B((r(),d("input",S({key:0,ref:"textInput","onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),type:"text",class:["form-control",{invalid:l.inputInvalid}]},t.$attrs,{pattern:n.pattern}),null,16,mn)),[[x,s.value]]):c("",!0),n.subtype=="json"?B((r(),d("input",S({key:1,ref:"jsonInput","onUpdate:modelValue":e[2]||(e[2]=i=>s.value=i),type:"text",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,fn)),[[x,s.value]]):c("",!0),n.subtype=="password"?B((r(),d("input",S({key:2,ref:"passwordInput","onUpdate:modelValue":e[3]||(e[3]=i=>s.value=i),type:l.showPassword?"text":"password",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,gn)),[[j,s.value]]):c("",!0),n.subtype=="host"?B((r(),d("input",S({key:3,ref:"hostInput","onUpdate:modelValue":e[4]||(e[4]=i=>s.value=i),type:"text",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),["email","url"].includes(n.subtype)?B((r(),d("input",S({key:4,"onUpdate:modelValue":e[5]||(e[5]=i=>s.value=i),refs:"urlInput",type:n.subtype,class:"form-control"},t.$attrs),null,16,hn)),[[j,s.value]]):c("",!0),n.subtype=="time"?B((r(),d("input",S({key:5,ref:"timeInput","onUpdate:modelValue":e[6]||(e[6]=i=>s.value=i),type:"time",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="date"?B((r(),d("input",S({key:6,ref:"dateInput","onUpdate:modelValue":e[7]||(e[7]=i=>s.value=i),type:"date",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="month"?B((r(),d("input",S({key:7,ref:"monthInput","onUpdate:modelValue":e[8]||(e[8]=i=>s.value=i),type:"month",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="year"?B((r(),d("input",S({key:8,ref:"yearInput","onUpdate:modelValue":e[9]||(e[9]=i=>s.value=i),type:"number",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.unit?(r(),d("div",_n,[o("div",bn,b(n.unit),1)])):c("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:e[10]||(e[10]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[o("div",vn,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):c("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:e[11]||(e[11]=i=>s.modify(-1))},e[13]||(e[13]=[o("div",{class:"input-group-text"}," - ",-1)]))):c("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:e[12]||(e[12]=i=>s.modify(1))},e[14]||(e[14]=[o("div",{class:"input-group-text"}," + ",-1)]))):c("",!0)])]),l.showHelp?(r(),d("span",yn,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const kn=y(an,[["render",wn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Sn=Object.freeze(Object.defineProperty({__proto__:null,default:kn},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Bn={name:"OpenwbTextareaInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","json"].indexOf(t)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.warn("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else this.$emit("update:modelValue",t)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Cn={class:"form-row mb-1"},On={class:"col-md-8"},$n={class:"form-row"},xn={class:"input-group"},Tn={class:"input-group-prepend"},In={class:"input-group-text"},Vn={key:2,class:"input-group-append"},Mn={class:"input-group-text"},An={class:"form-text text-muted text-right"},qn={key:0,class:"form-row alert alert-info my-1 small"};function Pn(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Cn,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",On,[o("div",$n,[o("div",xn,[o("div",Tn,[o("div",In,[n.subtype=="text"?(r(),_(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):c("",!0),n.subtype=="json"?(r(),_(a,{key:1,"fixed-width":"",icon:["fas","code"]})):c("",!0)])]),n.subtype==="json"?B((r(),d("textarea",S({key:0,ref:"jsonInput","onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"form-control"},t.$attrs),null,16)),[[x,s.value,void 0,{lazy:!0}]]):B((r(),d("textarea",S({key:1,"onUpdate:modelValue":e[2]||(e[2]=i=>s.value=i),class:"form-control"},t.$attrs),null,16)),[[x,s.value]]),t.$attrs.maxlength?(r(),d("div",Vn,[o("div",Mn,[o("small",An,b(s.length)+" / "+b(t.$attrs.maxlength),1)])])):c("",!0)])]),l.showHelp?(r(),d("span",qn,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const Hn=y(Bn,[["render",Pn],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Dn=Object.freeze(Object.defineProperty({__proto__:null,default:Hn},Symbol.toStringTag,{value:"Module"}));const En={name:"OpenwbToast",props:{topic:{type:String,required:!0},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},source:{type:String,required:!0,validator:function(t){return["system","client","command"].indexOf(t)!==-1}},timestamp:{type:Number,required:!0}},emits:["dismiss","hide"],data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const t={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var e=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const u=new Date-this.timestamp*1e3;for(var l in t)if(Math.abs(u)>t[l]){this.relativeTime=e.format(Math.round(-u/t[l]),l);break}u>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}}},Ln={key:0,class:"time-diff"},jn={class:"toast-body"};function Wn(t,e,n,u,l,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[e[2]||(e[2]=o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),n.timestamp?(r(),d("small",Ln,b(l.relativeTime),1)):c("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:e[0]||(e[0]=(...a)=>s.dismiss&&s.dismiss(...a))},e[1]||(e[1]=[o("span",{"aria-hidden":"true"},"×",-1)]))],2),o("div",jn,[h(t.$slots,"default",{},void 0,!0)])],2)}const Rn=y(En,[["render",Wn],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Nn=Object.freeze(Object.defineProperty({__proto__:null,default:Rn},Symbol.toStringTag,{value:"Module"}));C.add(Ie);const Fn={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},Un={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},zn={ref:"navbarButton",class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar"},Gn={id:"collapsibleNavbar",ref:"collapsibleNavbar",class:"collapse navbar-collapse navbar-nav-scroll"},Jn={class:"navbar-nav"},Kn={class:"nav-item"},Qn={class:"nav-item dropdown nav-separator-after"},Yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Zn={class:"nav-item dropdown"},Xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},eo={class:"nav-item dropdown"},to={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},so={class:"nav-item dropdown"},no={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},oo={class:"nav-item dropdown"},ao={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},lo={class:"nav-item nav-separator-before"},io={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function ro(t,e,n,u,l,s){const a=g("router-link"),i=g("font-awesome-icon");return r(),d("nav",Un,[e[31]||(e[31]=o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),o("button",zn,e[0]||(e[0]=[o("span",{class:"navbar-toggler-icon"},null,-1)]),512),o("div",Gn,[o("ul",Jn,[o("li",Kn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>e[1]||(e[1]=[p(" Status ")])),_:1})]),o("li",Qn,[e[4]||(e[4]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),o("div",Yn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[2]||(e[2]=[p(" Ladeprotokoll ")])),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[3]||(e[3]=[p(" Diagramme ")])),_:1})])]),o("li",Zn,[e[7]||(e[7]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),o("div",Xn,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[5]||(e[5]=[p(" Allgemein ")])),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[6]||(e[6]=[p(" Optionale Hardware ")])),_:1})])]),o("li",eo,[e[13]||(e[13]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),o("div",to,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[8]||(e[8]=[p(" Übergreifendes ")])),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[9]||(e[9]=[p(" Sofortladen ")])),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[10]||(e[10]=[p(" PV-Laden ")])),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[11]||(e[11]=[p(" Zeitladen ")])),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[12]||(e[12]=[p(" Zielladen ")])),_:1})])]),o("li",so,[e[20]||(e[20]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),o("div",no,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[14]||(e[14]=[p(" Geräte und Komponenten ")])),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[15]||(e[15]=[p(" Lastmanagement ")])),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[16]||(e[16]=[p(" Ladepunkte ")])),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[17]||(e[17]=[p(" Fahrzeuge ")])),_:1}),e[18]||(e[18]=o("div",{class:"dropdown-divider"},null,-1)),e[19]||(e[19]=o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1))])]),o("li",oo,[e[29]||(e[29]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),o("div",ao,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[21]||(e[21]=[p(" Einrichtungsassistent ")])),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[22]||(e[22]=[p(" openWB Cloud ")])),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[23]||(e[23]=[p(" MQTT-Brücken ")])),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[24]||(e[24]=[p(" Fehlersuche ")])),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[25]||(e[25]=[p(" Support ")])),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[26]||(e[26]=[p(" Datenverwaltung ")])),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[27]||(e[27]=[p(" System ")])),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[28]||(e[28]=[p(" Rechtliches ")])),_:1})])]),o("li",lo,[o("a",io,[e[30]||(e[30]=p(" Wiki ")),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const uo=y(Fn,[["render",ro],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const co={name:"OpenwbPageFooter"},po={id:"footer",class:"footer bg-dark text-light font-small"},mo={class:"container text-center"};function fo(t,e,n,u,l,s){return r(),d("footer",po,[o("div",mo,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(t.$route.meta.heading),1)])])}const go=y(co,[["render",fo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);C.add(Ve);const ho={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},_o={class:"mt-3 alert alert-dark text-center"},bo={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},vo={type:"submit",class:"btn btn-primary"};function yo(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",_o,[e[3]||(e[3]=p(" Open Source made with love!")),e[4]||(e[4]=o("br",null,null,-1)),e[5]||(e[5]=p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben")),e[6]||(e[6]=o("br",null,null,-1)),o("form",bo,[e[1]||(e[1]=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1)),e[2]||(e[2]=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1)),o("button",vo,[e[0]||(e[0]=p(" Spenden ")),m(a,{icon:["fab","paypal"]})])])])}const wo=y(ho,[["render",yo],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),ko={name:"ComponentState",emits:["reset","defaults","save"],data(){return{mqttTopicsToSubscribe:[]}},computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)},methods:{updateState(t,e,n=void 0){console.debug("updateState:",t,e,n),this.$store.commit({type:"updateTopic",topic:t,objectPath:n,payload:e})},ac_current2dc_power(t){return parseFloat((t*3*230/1e3).toFixed(2))},dc_power2ac_current(t){return parseFloat((t*1e3/230/3).toFixed(2))},getWildcardIndexList(t,e=!1){let n=t;e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let u=Object.keys(this.$store.state.mqtt).filter(l=>l.match(n));return u.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),u},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(u=>u.match(n)).reduce((u,l)=>({...u,[l]:this.$store.state.mqtt[l]}),{})},formatDate(t,e={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(t).toLocaleDateString(void 0,e)},formatNumber(t,e=0,n=e,u=1){if(!(t==null||isNaN(t)))return(t*u).toLocaleString(void 0,{minimumFractionDigits:e,maximumFractionDigits:n})},formatNumberTopic(t,e=0,n=e,u=1){return this.$store.state.mqtt[t]?this.formatNumber(this.$store.state.mqtt[t],e,n,u):"-"},formatPhaseArrayNumberTopic(t,e=0,n=e,u=1){return this.$store.state.mqtt[t]?this.$store.state.mqtt[t].map(l=>this.formatNumber(l,e,n,u)).join(" / "):"- / - / -"},translateChargeMode(t){switch(t){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",t),t}}}},N=y(ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);C.add(Me,Ae);const So={name:"OpenwbPageMessages",components:{FontAwesomeIcon:O,FontAwesomeLayers:qe,FontAwesomeLayersText:Pe},mixins:[N],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((e,n)=>((e=="light"&&["info","success","warning","danger"].includes(n.type)||e=="info"&&["success","warning","danger"].includes(n.type)||e=="success"&&["warning","danger"].includes(n.type)||e=="warning"&&n.type=="danger")&&(e=n.type),e),"light")},messages(){const t=[];return this.systemMessages.forEach(e=>{t.push(e)}),this.clientMessages.forEach(e=>{t.push(e)}),t.sort(this.compareMessagesByTimestamp),t},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(t=>!this.hiddenMessages.includes(t.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let t=this.getWildcardTopics("openWB/system/messages/+");var e=[];for(const[n,u]of Object.entries(t))e.push({topic:n,...u});return e},clientMessages(){let t=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var e=[];for(const[n,u]of Object.entries(t))e.push({topic:n,...u});return e}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(t,e){return e.timestamp-t.timestamp},clearTopic(t){this.$root.doPublish(t,void 0)},dismissMessage(t){this.clearTopic(t.topic);var e=this.hiddenMessages.indexOf(t.topic);e>-1&&this.hiddenMessages.splice(e,1)},dismissAllMessages(){this.messages.forEach(t=>{this.clearTopic(t.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(t){this.hiddenMessages.includes(t.topic)||this.hiddenMessages.push(t.topic)}}},Bo=["innerHTML"];function Co(t,e,n,u,l,s){const a=g("font-awesome-icon"),i=g("font-awesome-layers-text"),v=g("font-awesome-layers"),$=g("openwb-base-alert"),M=g("openwb-base-click-button"),A=g("openwb-base-toast");return r(),d(T,null,[(r(),_(R,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",l.showAllMessages?"active":""]),onClick:e[0]||(e[0]=(...q)=>s.toggleAllMessages&&s.toggleAllMessages(...q))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:f(()=>[m(a,{"fixed-width":"",icon:l.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),_(i,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):c("",!0)]),_:1})],2)])),s.recentMessages.length>0||l.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",l.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),_($,{key:0,subtype:"info"},{default:f(()=>e[1]||(e[1]=[p(" Keine Nachrichten vorhanden. ")])),_:1})):l.showAllMessages?(r(),_(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:f(()=>e[2]||(e[2]=[p(" Alle Nachrichten löschen ")])),_:1},8,["onButtonClicked"])):c("",!0),(r(!0),d(T,null,P(s.recentMessages,q=>(r(),_(A,{key:q.topic,topic:q.topic,source:q.source,subtype:q.type,timestamp:q.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:f(()=>[o("span",{innerHTML:q.message},null,8,Bo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):c("",!0)],64)}const Oo=y(So,[["render",Co],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),$o={name:"OpenwbPageBlocker",mixins:[N],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(t){t=="reload"?location.reload():console.warn("unknown event",t)}}},xo={class:"openwb-blocker"},To={key:0},Io={key:1},Vo={key:2},Mo={key:3};function Ao(t,e,n,u,l,s){const a=g("openwb-base-modal-dialog");return r(),d("div",xo,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark","prevent-close":!0,buttons:s.myButtons,onModalResult:e[0]||(e[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",To," Der Systemstart ist noch nicht abgeschlossen. ")):c("",!0),s.updateInProgress?(r(),d("p",Io," Es wird eine Systemaktualisierung ausgeführt. ")):c("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",Vo," Bitte die Seite neu laden. ")):(r(),d("p",Mo," Bitte warten... "))]),_:1},8,["show","title","buttons"])])}const qo=y($o,[["render",Ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const Po={name:"OpenwbSettingsApp",components:{NavBar:uo,PageFooter:go,DonationBanner:wo,Messages:Oo,Blocker:qo},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch(t){console.error("mqttClientId error",t);return}},topicList(){return Object.keys(this.$store.state.mqtt)}},created(){this.createConnection()},methods:{async saveValues(t=void 0){function e(u){return new Promise(l=>setTimeout(l,u))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};t===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(t)?t.forEach(u=>{n[u]=this.$store.state.mqtt[u]}):console.error("expected array, got ",typeof t);for(const[u,l]of Object.entries(n)){let s=u.replace("openWB/","openWB/set/");console.debug("saving data:",s,l),this.doPublish(s,l),await e(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(t=this.topicList){console.debug("resetting values..."),console.debug("topics: ",t),this.doUnsubscribe(t),this.doSubscribe(t)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(t){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",t,!1)},createConnection(){const{protocol:t,host:e,port:n,endpoint:u,...l}=this.connection,s=`${t}://${e}:${n}${u}`;console.debug("connecting to broker:",s);try{this.client=Z.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let v;try{v=JSON.parse(i.toString())}catch($){console.debug("Json parsing failed, fallback to string: ",a,$),v=i.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(t){console.debug("doSubscribe",t),t.forEach(e=>{this.$store.commit("addSubscription",e),this.$store.getters.subscriptionCount(e)==1?(e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.$store.commit("addTopic",{topic:e,payload:void 0}),this.client.subscribe(e,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",e)})},doUnsubscribe(t){console.debug("doUnsubscribe",t),t.forEach(e=>{this.$store.commit("removeSubscription",e),this.$store.getters.subscriptionCount(e)==0?(this.client.unsubscribe(e,n=>{n&&console.error("Unsubscribe error",n)}),e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",e),this.$store.commit("removeTopic",e))):console.debug("Still subscribed to topic: ",e)})},doPublish(t,e,n=!0,u=2){let l={qos:u,retain:n};this.client.publish(t,JSON.stringify(e),l,s=>{s&&console.error("Publish error",s)})},postClientMessage(t,e="secondary"){console.debug("postMessage:",t,e);const n=Date.now(),u="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:u,payload:{message:t,type:e,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(u=>u.match(n)).reduce((u,l)=>({...u,[l]:this.$store.state.mqtt[l]}),{})}}},Ho={role:"main",class:"container"},Do={id:"content"};function Eo(t,e,n,u,l,s){const a=g("nav-bar"),i=g("router-view"),v=g("donation-banner"),$=g("page-footer"),M=g("messages"),A=g("blocker");return r(),d(T,null,[o("header",null,[m(a)]),o("div",Ho,[o("div",Do,[o("h1",null,b(t.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(A)],64)}const Lo=y(Po,[["render",Eo],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),jo="modulepreload",Wo=function(t){return"/openWB/web/settings/"+t},W={},w=function(e,n,u){if(!n||n.length===0)return e();const l=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=Wo(s),s in W)return;W[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!u)for(let M=l.length-1;M>=0;M--){const A=l[M];if(A.href===s&&(!a||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":jo,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,A)=>{$.addEventListener("load",M),$.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};F.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const H=X({state:F,mutations:{storeLocal(t,e){t.local[e.name]=e.value},addTopic(t,e){Object.keys(t.mqtt).includes(e.topic)?console.warn("topic already exists: ",e.topic):t.mqtt[e.topic]=e.payload},removeTopic(t,e){delete t.mqtt[e]},updateTopic(t,e){const n=(u,l,s)=>l.split(".").reduce((a,i,v)=>a[i]=l.split(".").length===++v?s:a[i]||{},u);e.topic in t.mqtt||!(e.topic in t.examples)?e.objectPath!=null?n(t.mqtt[e.topic],e.objectPath,e.payload):t.mqtt[e.topic]=e.payload:(console.debug("topic not found in state.mqtt: ",e.topic),e.topic in t.examples?e.objectPath!=null?n(t.examples[e.topic],e.objectPath,e.payload):t.examples[e.topic]=e.payload:console.warn("topic not found in state: ",e.topic," giving up"))},addSubscription(t,e){e in t.mqttSubscriptions?t.mqttSubscriptions[e]+=1:t.mqttSubscriptions[e]=1,console.debug("subscription count: ",e,t.mqttSubscriptions[e])},removeSubscription(t,e){e in t.mqttSubscriptions&&(t.mqttSubscriptions[e]-=1,t.mqttSubscriptions[e]<=0&&delete t.mqttSubscriptions[e])}},actions:{},modules:{},getters:{usageTermsAcknowledged(t){return new Promise(e=>{if(t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)e(t.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,u;n=setTimeout(()=>{clearInterval(u),e(!1)},5e3),u=setInterval(()=>{t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(u),e(t.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(t){return new Promise(e=>{if(t.mqtt["openWB/system/installAssistantDone"]!==void 0)e(t.mqtt["openWB/system/installAssistantDone"]);else{var n,u;n=setTimeout(()=>{clearInterval(u),e(!1)},5e3),u=setInterval(()=>{t.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(u),e(t.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:t=>e=>t.mqttSubscriptions[e]||0}}),U=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>w(()=>import("./Status-bc2c7d27.js"),["assets/Status-bc2c7d27.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-5fa56b74.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>w(()=>import("./ChargeLog-a730dd70.js"),["assets/ChargeLog-a730dd70.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>w(()=>import("./Chart-19a9b222.js"),["assets/Chart-19a9b222.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-5fa56b74.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>w(()=>import("./GeneralConfig-1c49e709.js").then(t=>t.a),["assets/GeneralConfig-1c49e709.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>w(()=>import("./OptionalComponents-36fd698f.js").then(t=>t.O),["assets/OptionalComponents-36fd698f.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>w(()=>import("./GeneralChargeConfig-f6ca097b.js").then(t=>t.G),["assets/GeneralChargeConfig-f6ca097b.js","assets/dynamic-import-helper-be004503.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>w(()=>import("./InstantChargeConfig-61c4fd49.js"),["assets/InstantChargeConfig-61c4fd49.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>w(()=>import("./PVChargeConfig-13001890.js"),["assets/PVChargeConfig-13001890.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>w(()=>import("./TimeChargeConfig-9d481afa.js"),["assets/TimeChargeConfig-9d481afa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>w(()=>import("./ScheduledChargeConfig-6a548cac.js"),["assets/ScheduledChargeConfig-6a548cac.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>w(()=>import("./HardwareInstallation-70f156e6.js").then(t=>t.a),["assets/HardwareInstallation-70f156e6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>w(()=>import("./LoadManagementConfig-da717df7.js"),["assets/LoadManagementConfig-da717df7.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>w(()=>import("./ChargePointInstallation-8dff21bc.js").then(t=>t.c),["assets/ChargePointInstallation-8dff21bc.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>w(()=>import("./VehicleConfig-e8ea05c9.js").then(t=>t.b),["assets/VehicleConfig-e8ea05c9.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>w(()=>import("./CloudConfig-595194ca.js"),["assets/CloudConfig-595194ca.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>w(()=>import("./MqttBridgeConfig-2e7d7922.js"),["assets/MqttBridgeConfig-2e7d7922.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>w(()=>import("./DebugConfig-d1261f2b.js"),["assets/DebugConfig-d1261f2b.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>w(()=>import("./Support-a91e414e.js"),["assets/Support-a91e414e.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>w(()=>import("./LegalSettings-ddd5b296.js"),["assets/LegalSettings-ddd5b296.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>w(()=>import("./System-aff61250.js"),["assets/System-aff61250.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>w(()=>import("./DataManagement-b9730b64.js").then(t=>t.a),["assets/DataManagement-b9730b64.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>w(()=>import("./InstallAssistant-6d2c34f9.js"),["assets/InstallAssistant-6d2c34f9.js","assets/dynamic-import-helper-be004503.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])}];U.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>w(()=>import("./TestingStore-c3e1bdb5.js"),["assets/TestingStore-c3e1bdb5.js","assets/OpenwbSortableList-3ce7f991.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])});const E=ee({history:te(),routes:U});E.beforeEach(async t=>{if(await H.getters.usageTermsAcknowledged){if(!await H.getters.installAssistantDone&&t.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(t.name!=="LegalSettings")return{name:"LegalSettings"}});E.afterEach(t=>{t.meta.heading?document.title="openWB | "+t.meta.heading:document.title="openWB"});const L=se(Lo);L.use(H).use(E).use(He,De);const Ro=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":lt,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Bt,"./components/OpenwbBaseCard.vue":qt,"./components/OpenwbBaseCheckboxInput.vue":Rt,"./components/OpenwbBaseClickButton.vue":zt,"./components/OpenwbBaseCopyToClipboard.vue":Yt,"./components/OpenwbBaseHeading.vue":os,"./components/OpenwbBaseModalDialog.vue":ms,"./components/OpenwbBaseNumberInput.vue":Os,"./components/OpenwbBaseRangeInput.vue":Es,"./components/OpenwbBaseSelectInput.vue":Qs,"./components/OpenwbBaseSubmitButtons.vue":on,"./components/OpenwbBaseTextInput.vue":Sn,"./components/OpenwbBaseTextarea.vue":Dn,"./components/OpenwbBaseToast.vue":Nn});Object.entries(Ro).forEach(([t,e])=>{const n=ne(oe(t.split("/").pop().replace(/\.\w+$/,"")));L.component(n,e.default)});L.mount("#app");export{N as C,w as _};
diff --git a/web/settings/assets/inverter-b4941105.js b/web/settings/assets/inverter-1529fe73.js
similarity index 82%
rename from web/settings/assets/inverter-b4941105.js
rename to web/settings/assets/inverter-1529fe73.js
index e5c48e4cee..2840006952 100644
--- a/web/settings/assets/inverter-b4941105.js
+++ b/web/settings/assets/inverter-1529fe73.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as o,k as u,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(n,e,v,b,g,h){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")])),_:1}),t(p,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[r(' EID für "production" ')])),_:1},8,["model-value"])])}const B=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{B as default};
+import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as o,k as u,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(n,e,v,b,g,h){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")])),_:1}),t(p,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[r(' EID für "production" ')])),_:1},8,["model-value"])])}const B=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-62aebfd4.js b/web/settings/assets/inverter-1e6b58f6.js
similarity index 82%
rename from web/settings/assets/inverter-62aebfd4.js
rename to web/settings/assets/inverter-1e6b58f6.js
index 7e9bab9892..02eb83dac4 100644
--- a/web/settings/assets/inverter-62aebfd4.js
+++ b/web/settings/assets/inverter-1e6b58f6.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as p,l,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[u]},d={class:"device-youless-inverter"};function f(o,e,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Youless LS120 Wechselrichter ")])),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":o.component.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default};
+import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as p,l,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[u]},d={class:"device-youless-inverter"};function f(o,e,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Youless LS120 Wechselrichter ")])),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":o.component.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-d79a2e57.js b/web/settings/assets/inverter-287e8910.js
similarity index 87%
rename from web/settings/assets/inverter-d79a2e57.js
rename to web/settings/assets/inverter-287e8910.js
index 8998e81d00..b40e158518 100644
--- a/web/settings/assets/inverter-d79a2e57.js
+++ b/web/settings/assets/inverter-287e8910.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l as d,D as t,N as u,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeInverter",mixins:[p]},_={class:"device-deye-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const V=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{V as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l as d,D as t,N as u,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeInverter",mixins:[p]},_={class:"device-deye-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const V=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-cf814a97.js b/web/settings/assets/inverter-2c898c0e.js
similarity index 90%
rename from web/settings/assets/inverter-cf814a97.js
rename to web/settings/assets/inverter-2c898c0e.js
index d873daf5f1..38040ec102 100644
--- a/web/settings/assets/inverter-cf814a97.js
+++ b/web/settings/assets/inverter-2c898c0e.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as r,k as u,l as c,D as n,N as i,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceDiscovergyInverter",mixins:[d]},f={class:"device-discovergy-inverter"};function g(t,e,_,b,w,x){const s=r("openwb-base-heading"),a=r("openwb-base-text-input");return u(),c("div",f,[n(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Wechselrichter ")])),_:1}),n(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const $=m(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{$ as default};
+import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as r,k as u,l as c,D as n,N as i,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceDiscovergyInverter",mixins:[d]},f={class:"device-discovergy-inverter"};function g(t,e,_,b,w,x){const s=r("openwb-base-heading"),a=r("openwb-base-text-input");return u(),c("div",f,[n(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Wechselrichter ")])),_:1}),n(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const $=m(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-521e60bd.js b/web/settings/assets/inverter-36b2f4c7.js
similarity index 91%
rename from web/settings/assets/inverter-521e60bd.js
rename to web/settings/assets/inverter-36b2f4c7.js
index 469939b77e..090f9aa90f 100644
--- a/web/settings/assets/inverter-521e60bd.js
+++ b/web/settings/assets/inverter-36b2f4c7.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as u,l as m,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[s]},b={class:"device-openwb-flex-inverter"};function f(o,e,_,w,x,g){const r=t("openwb-base-heading"),l=t("openwb-base-select-input"),p=t("openwb-base-number-input");return u(),m("div",b,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für openWB-Flex Wechselrichter ")])),_:1}),i(l,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const S=a(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{S as default};
+import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as u,l as m,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[s]},b={class:"device-openwb-flex-inverter"};function f(o,e,_,w,x,g){const r=t("openwb-base-heading"),l=t("openwb-base-select-input"),p=t("openwb-base-number-input");return u(),m("div",b,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für openWB-Flex Wechselrichter ")])),_:1}),i(l,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const S=a(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-00707516.js b/web/settings/assets/inverter-3715b21d.js
similarity index 88%
rename from web/settings/assets/inverter-00707516.js
rename to web/settings/assets/inverter-3715b21d.js
index b4cc74a339..fad6f59f77 100644
--- a/web/settings/assets/inverter-00707516.js
+++ b/web/settings/assets/inverter-3715b21d.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as n,k as p,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[a]},_={class:"device-huawei-smart-logger-inverter"};function g(o,e,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as n,k as p,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[a]},_={class:"device-huawei-smart-logger-inverter"};function g(o,e,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-0372b463.js b/web/settings/assets/inverter-471fa6e9.js
similarity index 88%
rename from web/settings/assets/inverter-0372b463.js
rename to web/settings/assets/inverter-471fa6e9.js
index 6167312794..8867caa443 100644
--- a/web/settings/assets/inverter-0372b463.js
+++ b/web/settings/assets/inverter-471fa6e9.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(o,e,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return d(),m("div",_,[t(r,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Wechselrichter ")])),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{S as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(o,e,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return d(),m("div",_,[t(r,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Wechselrichter ")])),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-3f3aa74b.js b/web/settings/assets/inverter-48761201.js
similarity index 90%
rename from web/settings/assets/inverter-3f3aa74b.js
rename to web/settings/assets/inverter-48761201.js
index 9cc8bd0983..398687449c 100644
--- a/web/settings/assets/inverter-3f3aa74b.js
+++ b/web/settings/assets/inverter-48761201.js
@@ -1 +1 @@
-import{C as l}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as n,k as d,l as c,D as o,N as r,y as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[l]},f={class:"device-smahm-inverter"};function b(t,e,v,g,h,w){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),m=n("openwb-base-number-input");return d(),c("div",f,[o(s,null,{default:r(()=>e[1]||(e[1]=[i(" Einstellungen für SMA-HM/EM Wechselrichter ")])),_:1}),o(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')])),_:1}),o(m,{title:"Seriennummer",required:"","model-value":t.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default};
+import{C as l}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as d,l as c,D as o,N as r,y as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[l]},f={class:"device-smahm-inverter"};function b(t,e,v,g,h,w){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),m=n("openwb-base-number-input");return d(),c("div",f,[o(s,null,{default:r(()=>e[1]||(e[1]=[i(" Einstellungen für SMA-HM/EM Wechselrichter ")])),_:1}),o(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')])),_:1}),o(m,{title:"Seriennummer",required:"","model-value":t.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-d1ef1a1b.js b/web/settings/assets/inverter-57d15ff3.js
similarity index 91%
rename from web/settings/assets/inverter-d1ef1a1b.js
rename to web/settings/assets/inverter-57d15ff3.js
index 572dbda477..771382c1ef 100644
--- a/web/settings/assets/inverter-d1ef1a1b.js
+++ b/web/settings/assets/inverter-57d15ff3.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as n,k as m,l as c,D as r,N as i,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(t,e,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>e[2]||(e[2]=[a(" Einstellungen für Studer Wechselrichter ")])),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":t.component.configuration.vc_type,required:"","onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":t.component.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>e[3]||(e[3]=[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")])),_:1},8,["model-value"])])}const B=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{B as default};
+import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as n,k as m,l as c,D as r,N as i,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(t,e,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>e[2]||(e[2]=[a(" Einstellungen für Studer Wechselrichter ")])),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":t.component.configuration.vc_type,required:"","onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":t.component.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>e[3]||(e[3]=[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")])),_:1},8,["model-value"])])}const B=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-a77daa25.js b/web/settings/assets/inverter-5f7aec52.js
similarity index 81%
rename from web/settings/assets/inverter-a77daa25.js
rename to web/settings/assets/inverter-5f7aec52.js
index 95f25b01df..3ab2599d66 100644
--- a/web/settings/assets/inverter-a77daa25.js
+++ b/web/settings/assets/inverter-5f7aec52.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as o,k as p,l,D as n,N as d,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(t,e,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),l("div",_,[n(r,null,{default:d(()=>e[1]||(e[1]=[u(" Einstellungen für smart-me Wechselrichter ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":t.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as o,k as p,l,D as n,N as d,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(t,e,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),l("div",_,[n(r,null,{default:d(()=>e[1]||(e[1]=[u(" Einstellungen für smart-me Wechselrichter ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":t.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-90d5660d.js b/web/settings/assets/inverter-692fd261.js
similarity index 87%
rename from web/settings/assets/inverter-90d5660d.js
rename to web/settings/assets/inverter-692fd261.js
index 6fc2f34031..919997998a 100644
--- a/web/settings/assets/inverter-90d5660d.js
+++ b/web/settings/assets/inverter-692fd261.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[p]},c={class:"device-fox_ess-inverter"};function f(o,e,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{V as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[p]},c={class:"device-fox_ess-inverter"};function f(o,e,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-668ceedf.js b/web/settings/assets/inverter-6f84161c.js
similarity index 91%
rename from web/settings/assets/inverter-668ceedf.js
rename to web/settings/assets/inverter-6f84161c.js
index ab5d93a02c..089ee969ad 100644
--- a/web/settings/assets/inverter-668ceedf.js
+++ b/web/settings/assets/inverter-6f84161c.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as r,k as m,l as g,D as o,N as l,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function c(n,e,v,b,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[o(a,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für VZLogger Wechselrichter ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const k=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{k as default};
+import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as r,k as m,l as g,D as o,N as l,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function c(n,e,v,b,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[o(a,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für VZLogger Wechselrichter ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const k=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-ab8a80e4.js b/web/settings/assets/inverter-70f78ef5.js
similarity index 81%
rename from web/settings/assets/inverter-ab8a80e4.js
rename to web/settings/assets/inverter-70f78ef5.js
index 28062fdfee..018531a352 100644
--- a/web/settings/assets/inverter-ab8a80e4.js
+++ b/web/settings/assets/inverter-70f78ef5.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[p]},_={class:"device-solis-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Wechselrichter ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{E as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[p]},_={class:"device-solis-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Wechselrichter ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-f293b026.js b/web/settings/assets/inverter-80f24f74.js
similarity index 93%
rename from web/settings/assets/inverter-f293b026.js
rename to web/settings/assets/inverter-80f24f74.js
index 9e1c8d9fc5..3808d4f9c1 100644
--- a/web/settings/assets/inverter-f293b026.js
+++ b/web/settings/assets/inverter-80f24f74.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as a,k as p,l as m,D as r,N as i,y as t,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceJsonInverter",mixins:[d]},f={class:"device-json-inverter"};function b(n,e,c,v,_,h){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",f,[r(l,null,{default:i(()=>e[2]||(e[2]=[t(" Einstellungen für JSON Wechselrichter ")])),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>e[3]||(e[3]=[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>e[4]||(e[4]=[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const B=u(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{B as default};
+import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as a,k as p,l as m,D as r,N as i,y as t,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceJsonInverter",mixins:[d]},f={class:"device-json-inverter"};function b(n,e,c,v,_,h){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",f,[r(l,null,{default:i(()=>e[2]||(e[2]=[t(" Einstellungen für JSON Wechselrichter ")])),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>e[3]||(e[3]=[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>e[4]||(e[4]=[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const B=u(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-22aad90d.js b/web/settings/assets/inverter-88d5ed46.js
similarity index 81%
rename from web/settings/assets/inverter-22aad90d.js
rename to web/settings/assets/inverter-88d5ed46.js
index 0b31f4006d..676ff31163 100644
--- a/web/settings/assets/inverter-22aad90d.js
+++ b/web/settings/assets/inverter-88d5ed46.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as n,k as p,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[a]},_={class:"device-solarmax-inverter"};function b(o,e,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solarmax Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as n,k as p,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[a]},_={class:"device-solarmax-inverter"};function b(o,e,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solarmax Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-0fe312b3.js b/web/settings/assets/inverter-b61011e2.js
similarity index 83%
rename from web/settings/assets/inverter-0fe312b3.js
rename to web/settings/assets/inverter-b61011e2.js
index 0acb988541..ca77e7f1b9 100644
--- a/web/settings/assets/inverter-0fe312b3.js
+++ b/web/settings/assets/inverter-b61011e2.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as o,k as u,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function c(n,e,b,f,v,y){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{M as default};
+import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as o,k as u,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function c(n,e,b,f,v,y){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{M as default};
diff --git a/web/settings/assets/inverter-eee7c6e5.js b/web/settings/assets/inverter-bcc6d0d6.js
similarity index 83%
rename from web/settings/assets/inverter-eee7c6e5.js
rename to web/settings/assets/inverter-bcc6d0d6.js
index 9c2276dd82..67073650d6 100644
--- a/web/settings/assets/inverter-eee7c6e5.js
+++ b/web/settings/assets/inverter-bcc6d0d6.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as t,k as u,l,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[a]},_={class:"device-kostal-piko-inverter"};function f(o,e,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko Wechselrichter ")])),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":o.component.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.bat_configured"))},null,8,["model-value"])])}const E=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as u,l,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[a]},_={class:"device-kostal-piko-inverter"};function f(o,e,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko Wechselrichter ")])),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":o.component.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.bat_configured"))},null,8,["model-value"])])}const E=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-3a770b71.js b/web/settings/assets/inverter-bdcf1a2f.js
similarity index 92%
rename from web/settings/assets/inverter-3a770b71.js
rename to web/settings/assets/inverter-bdcf1a2f.js
index 880c6e7f9c..0ead69fcf8 100644
--- a/web/settings/assets/inverter-3a770b71.js
+++ b/web/settings/assets/inverter-bdcf1a2f.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as t,k as m,l as c,D as r,N as i,y as n,x as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[u]},b={class:"device-powerfox-inverter"};function g(o,e,v,w,x,_){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Wechselrichter ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{V as default};
+import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as t,k as m,l as c,D as r,N as i,y as n,x as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[u]},b={class:"device-powerfox-inverter"};function g(o,e,v,w,x,_){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Wechselrichter ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-6f930abf.js b/web/settings/assets/inverter-c29b676e.js
similarity index 89%
rename from web/settings/assets/inverter-6f930abf.js
rename to web/settings/assets/inverter-c29b676e.js
index 43c5e581f3..e454409e50 100644
--- a/web/settings/assets/inverter-6f930abf.js
+++ b/web/settings/assets/inverter-c29b676e.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-6cc98da9.js";import{_ as p,u as o,k as l,l as u,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(t,e,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),u("div",_,[n(a,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")])),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":t.component.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const B=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{B as default};
+import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as o,k as l,l as u,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(t,e,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),u("div",_,[n(a,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")])),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":t.component.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const B=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-3661665d.js b/web/settings/assets/inverter-c38863be.js
similarity index 89%
rename from web/settings/assets/inverter-3661665d.js
rename to web/settings/assets/inverter-c38863be.js
index cc54268003..1cc791a9ca 100644
--- a/web/settings/assets/inverter-3661665d.js
+++ b/web/settings/assets/inverter-c38863be.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as o,k as l,l as m,D as n,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),m("div",v,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB PV-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as o,k as l,l as m,D as n,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),m("div",v,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB PV-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-c319320b.js b/web/settings/assets/inverter-d29f4c1a.js
similarity index 88%
rename from web/settings/assets/inverter-c319320b.js
rename to web/settings/assets/inverter-d29f4c1a.js
index 43214f2468..a9ce7d5332 100644
--- a/web/settings/assets/inverter-c319320b.js
+++ b/web/settings/assets/inverter-d29f4c1a.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as n,k as u,l as c,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[a]},_={class:"device-mtec-inverter"};function b(o,e,f,v,g,w){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für M-Tec Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const N=d(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{N as default};
+import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as n,k as u,l as c,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[a]},_={class:"device-mtec-inverter"};function b(o,e,f,v,g,w){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für M-Tec Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const N=d(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-f30a6830.js b/web/settings/assets/inverter-da1db027.js
similarity index 93%
rename from web/settings/assets/inverter-f30a6830.js
rename to web/settings/assets/inverter-da1db027.js
index 242302f9fb..4f9daa7848 100644
--- a/web/settings/assets/inverter-f30a6830.js
+++ b/web/settings/assets/inverter-da1db027.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as d,u as s,k as b,l as f,D as o,N as i,y as t,x as n,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttInverter",mixins:[u]},v={class:"device-mqtt-inverter"};function w(r,e,c,x,z,B){const a=s("openwb-base-heading"),l=s("openwb-base-copy-to-clipboard"),m=s("openwb-base-alert");return b(),f("div",v,[o(a,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Wechselrichter ")])),_:1}),o(m,{subtype:"info"},{default:i(()=>[e[9]||(e[9]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: ")),e[3]||(e[3]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/exported ",1)]),_:1}),e[4]||(e[4]=n("br",null,null,-1)),e[5]||(e[5]=t(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Beispiel: ")),e[8]||(e[8]=n("span",{class:"text-info"},"123.45",-1))])])]),_:1})])}const E=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{E as default};
+import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as s,k as b,l as f,D as o,N as i,y as t,x as n,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttInverter",mixins:[u]},v={class:"device-mqtt-inverter"};function w(r,e,c,x,z,B){const a=s("openwb-base-heading"),l=s("openwb-base-copy-to-clipboard"),m=s("openwb-base-alert");return b(),f("div",v,[o(a,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Wechselrichter ")])),_:1}),o(m,{subtype:"info"},{default:i(()=>[e[9]||(e[9]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: ")),e[3]||(e[3]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/exported ",1)]),_:1}),e[4]||(e[4]=n("br",null,null,-1)),e[5]||(e[5]=t(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Beispiel: ")),e[8]||(e[8]=n("span",{class:"text-info"},"123.45",-1))])])]),_:1})])}const E=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-3c18bfc8.js b/web/settings/assets/inverter-e10956ea.js
similarity index 89%
rename from web/settings/assets/inverter-3c18bfc8.js
rename to web/settings/assets/inverter-e10956ea.js
index 349da7d9e3..fdc341f1ec 100644
--- a/web/settings/assets/inverter-3c18bfc8.js
+++ b/web/settings/assets/inverter-e10956ea.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as o,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as o,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-7c07833e.js b/web/settings/assets/inverter-e49c5d75.js
similarity index 94%
rename from web/settings/assets/inverter-7c07833e.js
rename to web/settings/assets/inverter-e49c5d75.js
index 73a5945752..80db1bcd9d 100644
--- a/web/settings/assets/inverter-7c07833e.js
+++ b/web/settings/assets/inverter-e49c5d75.js
@@ -1 +1 @@
-import{C as l}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as b,l as v,D as r,N as i,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSunnyBoyInverter",mixins:[l]},_={class:"device-sunnyboy-inverter"};function g(n,e,y,c,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),v("div",_,[r(s,null,{default:i(()=>e[3]||(e[3]=[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")])),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":n.component.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>e[4]||(e[4]=[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")])),_:1},8,["model-value"]),r(d,{title:"Version","not-selected":"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>e[5]||(e[5]=[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")])),_:1},8,["model-value"])])}const I=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default};
+import{C as l}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as b,l as v,D as r,N as i,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSunnyBoyInverter",mixins:[l]},_={class:"device-sunnyboy-inverter"};function g(n,e,y,c,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),v("div",_,[r(s,null,{default:i(()=>e[3]||(e[3]=[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")])),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":n.component.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>e[4]||(e[4]=[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")])),_:1},8,["model-value"]),r(d,{title:"Version","not-selected":"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>e[5]||(e[5]=[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")])),_:1},8,["model-value"])])}const I=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-efcd16da.js b/web/settings/assets/inverter-eb5f339a.js
similarity index 85%
rename from web/settings/assets/inverter-efcd16da.js
rename to web/settings/assets/inverter-eb5f339a.js
index 6e566b392e..73eae2c3d1 100644
--- a/web/settings/assets/inverter-efcd16da.js
+++ b/web/settings/assets/inverter-eb5f339a.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-6cc98da9.js";import{_ as a,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[s]},_={class:"device-victron-inverter"};function f(o,e,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Wechselrichter ")])),_:1}),i(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":o.component.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const I=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{I as default};
+import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[s]},_={class:"device-victron-inverter"};function f(o,e,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Wechselrichter ")])),_:1}),i(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":o.component.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const I=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-832fb3b7.js b/web/settings/assets/inverter-fa1c29cd.js
similarity index 94%
rename from web/settings/assets/inverter-832fb3b7.js
rename to web/settings/assets/inverter-fa1c29cd.js
index 53a32537dc..7e631fae63 100644
--- a/web/settings/assets/inverter-832fb3b7.js
+++ b/web/settings/assets/inverter-fa1c29cd.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as u,u as l,k as m,l as g,D as r,N as o,y as n,x as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},c={class:"device-http-inverter"};function b(t,e,v,f,w,_){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),g("div",c,[r(d,null,{default:o(()=>e[2]||(e[2]=[n(" Einstellungen für Http Wechselrichter ")])),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>e[3]||(e[3]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>e[4]||(e[4]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),a("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"])])}const S=u(h,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{S as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as l,k as m,l as g,D as r,N as o,y as n,x as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},c={class:"device-http-inverter"};function b(t,e,v,f,w,_){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),g("div",c,[r(d,null,{default:o(()=>e[2]||(e[2]=[n(" Einstellungen für Http Wechselrichter ")])),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>e[3]||(e[3]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>e[4]||(e[4]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),a("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"])])}const S=u(h,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-d090560a.js b/web/settings/assets/inverter-fa423cd0.js
similarity index 89%
rename from web/settings/assets/inverter-d090560a.js
rename to web/settings/assets/inverter-fa423cd0.js
index 2af929dc62..0969dcacd8 100644
--- a/web/settings/assets/inverter-d090560a.js
+++ b/web/settings/assets/inverter-fa423cd0.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-6cc98da9.js";import{_ as l,u as n,k as d,l as c,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSolarViewInverter",mixins:[p]},_={class:"device-solar-view-inverter"};function f(o,e,v,g,w,b){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return d(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für SolarView Wechselrichter ")])),_:1}),t(a,{title:"Kommando für die Abfrage",required:"","model-value":o.component.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.command"))},{help:i(()=>e[2]||(e[2]=[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")])),_:1},8,["model-value"])])}const N=l(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{N as default};
+import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as n,k as d,l as c,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSolarViewInverter",mixins:[p]},_={class:"device-solar-view-inverter"};function f(o,e,v,g,w,b){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return d(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für SolarView Wechselrichter ")])),_:1}),t(a,{title:"Kommando für die Abfrage",required:"","model-value":o.component.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.command"))},{help:i(()=>e[2]||(e[2]=[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")])),_:1},8,["model-value"])])}const N=l(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter_secondary-67eeedf8.js b/web/settings/assets/inverter_secondary-4a5d5bbc.js
similarity index 92%
rename from web/settings/assets/inverter_secondary-67eeedf8.js
rename to web/settings/assets/inverter_secondary-4a5d5bbc.js
index d942462e3a..4ae8295b6b 100644
--- a/web/settings/assets/inverter_secondary-67eeedf8.js
+++ b/web/settings/assets/inverter_secondary-4a5d5bbc.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-6cc98da9.js";import{_ as m,u as t,k as f,l as c,D as i,N as s,y as n,x as a,z as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceFroniusInverterSecondary",mixins:[u],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},_={class:"device-fronius-inverter-secondary"},v=["href"];function D(r,e,b,k,h,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return f(),c("div",_,[i(d,null,{default:s(()=>e[1]||(e[1]=[n(" Einstellungen für einen sekundären Wechselrichter ")])),_:1}),i(l,{title:"ID","model-value":r.component.configuration.id,min:"0",required:"","onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e[2]||(e[2]=n(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. ")),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},g(o.powerFlowUrl),9,v),e[3]||(e[3]=a("br",null,null,-1)),e[4]||(e[4]=n(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. '))]),_:1},8,["model-value"])])}const U=m(w,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{U as default};
+import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as f,l as c,D as i,N as s,y as n,x as a,z as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceFroniusInverterSecondary",mixins:[u],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},_={class:"device-fronius-inverter-secondary"},v=["href"];function D(r,e,b,k,h,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return f(),c("div",_,[i(d,null,{default:s(()=>e[1]||(e[1]=[n(" Einstellungen für einen sekundären Wechselrichter ")])),_:1}),i(l,{title:"ID","model-value":r.component.configuration.id,min:"0",required:"","onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e[2]||(e[2]=n(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. ")),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},g(o.powerFlowUrl),9,v),e[3]||(e[3]=a("br",null,null,-1)),e[4]||(e[4]=n(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. '))]),_:1},8,["model-value"])])}const U=m(w,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{U as default};
diff --git a/web/settings/assets/ripple_control_receiver-9035a86a.js b/web/settings/assets/ripple_control_receiver-432648b7.js
similarity index 79%
rename from web/settings/assets/ripple_control_receiver-9035a86a.js
rename to web/settings/assets/ripple_control_receiver-432648b7.js
index cbfe0fd38f..6d34fcbde1 100644
--- a/web/settings/assets/ripple_control_receiver-9035a86a.js
+++ b/web/settings/assets/ripple_control_receiver-432648b7.js
@@ -1 +1 @@
-import{R as t}from"./GeneralConfig-2f07ba45.js";import{_ as r,u as n,k as i,l as p,D as s,N as a,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"RippleControlReceiverGpio",mixins:[t]},_={class:"ripple-control-receiver-gpio"};function d(m,e,f,u,v,g){const o=n("openwb-base-alert");return i(),p("div",_,[s(o,{subtype:"info"},{default:a(()=>e[0]||(e[0]=[c(" Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakte offen sind, darf geladen werden. ")])),_:1})])}const W=r(l,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/gpio/ripple_control_receiver.vue"]]);export{W as default};
+import{R as t}from"./GeneralConfig-1c49e709.js";import{_ as r,u as n,k as i,l as p,D as s,N as a,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"RippleControlReceiverGpio",mixins:[t]},_={class:"ripple-control-receiver-gpio"};function d(m,e,f,u,v,g){const o=n("openwb-base-alert");return i(),p("div",_,[s(o,{subtype:"info"},{default:a(()=>e[0]||(e[0]=[c(" Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakte offen sind, darf geladen werden. ")])),_:1})])}const W=r(l,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/gpio/ripple_control_receiver.vue"]]);export{W as default};
diff --git a/web/settings/assets/ripple_control_receiver-fed88f10.js b/web/settings/assets/ripple_control_receiver-8b00be72.js
similarity index 88%
rename from web/settings/assets/ripple_control_receiver-fed88f10.js
rename to web/settings/assets/ripple_control_receiver-8b00be72.js
index 93c9677cbc..b8075f0aec 100644
--- a/web/settings/assets/ripple_control_receiver-fed88f10.js
+++ b/web/settings/assets/ripple_control_receiver-8b00be72.js
@@ -1 +1 @@
-import{R as s}from"./GeneralConfig-2f07ba45.js";import{_ as a,u as i,k as d,l as u,D as t,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"RippleControlReceiverDimmKit",mixins:[s]},c={class:"ripple-control-receiver-dimm-kit"};function b(o,e,v,g,w,C){const p=i("openwb-base-alert"),l=i("openwb-base-text-input"),r=i("openwb-base-number-input");return d(),u("div",c,[t(p,{subtype:"info"},{default:m(()=>e[3]||(e[3]=[_(" In der aktuellen Implementierung werden Kontakt 1 und 2 des Dimm-Kits ausgewertet. Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte geschlossen sind, darf geladen werden. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.rippleControlReceiver.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"","model-value":o.rippleControlReceiver.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.rippleControlReceiver.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=a(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/dimm_kit/ripple_control_receiver.vue"]]);export{y as default};
+import{R as s}from"./GeneralConfig-1c49e709.js";import{_ as a,u as i,k as d,l as u,D as t,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"RippleControlReceiverDimmKit",mixins:[s]},c={class:"ripple-control-receiver-dimm-kit"};function b(o,e,v,g,w,C){const p=i("openwb-base-alert"),l=i("openwb-base-text-input"),r=i("openwb-base-number-input");return d(),u("div",c,[t(p,{subtype:"info"},{default:m(()=>e[3]||(e[3]=[_(" In der aktuellen Implementierung werden Kontakt 1 und 2 des Dimm-Kits ausgewertet. Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte geschlossen sind, darf geladen werden. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.rippleControlReceiver.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"","model-value":o.rippleControlReceiver.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.rippleControlReceiver.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=a(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/dimm_kit/ripple_control_receiver.vue"]]);export{y as default};
diff --git a/web/settings/assets/vehicle-b9845ca5.js b/web/settings/assets/vehicle-022511d4.js
similarity index 87%
rename from web/settings/assets/vehicle-b9845ca5.js
rename to web/settings/assets/vehicle-022511d4.js
index 96f19d24f4..099810f076 100644
--- a/web/settings/assets/vehicle-b9845ca5.js
+++ b/web/settings/assets/vehicle-022511d4.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-0ab604e8.js";import{_ as s,u as p,k as u,l as m,D as n,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocHttp",mixins:[a]},c={class:"vehicle-soc-http"};function v(t,e,f,h,g,w){const i=p("openwb-base-text-input");return u(),m("div",c,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":t.vehicle.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>e[2]||(e[2]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")])),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":t.vehicle.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>e[3]||(e[3]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")])),_:1},8,["model-value"])])}const S=s(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{S as default};
+import{V as a}from"./VehicleConfig-e8ea05c9.js";import{_ as s,u as p,k as u,l as m,D as n,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocHttp",mixins:[a]},c={class:"vehicle-soc-http"};function v(t,e,f,h,g,w){const i=p("openwb-base-text-input");return u(),m("div",c,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":t.vehicle.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>e[2]||(e[2]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")])),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":t.vehicle.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>e[3]||(e[3]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")])),_:1},8,["model-value"])])}const S=s(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{S as default};
diff --git a/web/settings/assets/vehicle-bedc772a.js b/web/settings/assets/vehicle-317e6bfc.js
similarity index 89%
rename from web/settings/assets/vehicle-bedc772a.js
rename to web/settings/assets/vehicle-317e6bfc.js
index 8b35c85a78..6e7a98ae90 100644
--- a/web/settings/assets/vehicle-bedc772a.js
+++ b/web/settings/assets/vehicle-317e6bfc.js
@@ -1 +1 @@
-import{V as u}from"./VehicleConfig-0ab604e8.js";import{_ as a,u as s,k as d,l as p,D as t,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[u]},v={class:"vehicle-soc-kia"};function f(o,e,g,w,V,b){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":o.vehicle.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.pin"))},{help:r(()=>e[6]||(e[6]=[l(" Die PIN für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{$ as default};
+import{V as u}from"./VehicleConfig-e8ea05c9.js";import{_ as a,u as s,k as d,l as p,D as t,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[u]},v={class:"vehicle-soc-kia"};function f(o,e,g,w,V,b){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":o.vehicle.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.pin"))},{help:r(()=>e[6]||(e[6]=[l(" Die PIN für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-7f7d2e44.js b/web/settings/assets/vehicle-35b782fb.js
similarity index 89%
rename from web/settings/assets/vehicle-7f7d2e44.js
rename to web/settings/assets/vehicle-35b782fb.js
index d04c4a8c18..7e5856618f 100644
--- a/web/settings/assets/vehicle-7f7d2e44.js
+++ b/web/settings/assets/vehicle-35b782fb.js
@@ -1 +1 @@
-import{V as u}from"./VehicleConfig-0ab604e8.js";import{_ as a,u as s,k as d,l as p,D as i,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[u]},f={class:"vehicle-soc-renault"};function v(n,e,g,V,w,b){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":n.vehicle.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.country"))},{help:r(()=>e[6]||(e[6]=[l(" Land des Fahrzeugs, z.b. DE für Deutschland. ")])),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")])),_:1},8,["model-value"])])}const U=a(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{U as default};
+import{V as u}from"./VehicleConfig-e8ea05c9.js";import{_ as a,u as s,k as d,l as p,D as i,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[u]},f={class:"vehicle-soc-renault"};function v(n,e,g,V,w,b){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":n.vehicle.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.country"))},{help:r(()=>e[6]||(e[6]=[l(" Land des Fahrzeugs, z.b. DE für Deutschland. ")])),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")])),_:1},8,["model-value"])])}const U=a(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{U as default};
diff --git a/web/settings/assets/vehicle-19e3adb9.js b/web/settings/assets/vehicle-38d89acf.js
similarity index 87%
rename from web/settings/assets/vehicle-19e3adb9.js
rename to web/settings/assets/vehicle-38d89acf.js
index def4ee6e1e..9feaff5718 100644
--- a/web/settings/assets/vehicle-19e3adb9.js
+++ b/web/settings/assets/vehicle-38d89acf.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-0ab604e8.js";import{_ as l,u as d,k as u,l as p,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[a]},v={class:"vehicle-soc-skodaconnect"};function f(o,e,c,g,w,V){const t=d("openwb-base-text-input");return u(),p("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{$ as default};
+import{V as a}from"./VehicleConfig-e8ea05c9.js";import{_ as l,u as d,k as u,l as p,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[a]},v={class:"vehicle-soc-skodaconnect"};function f(o,e,c,g,w,V){const t=d("openwb-base-text-input");return u(),p("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-42f1ed52.js b/web/settings/assets/vehicle-4afffc4b.js
similarity index 97%
rename from web/settings/assets/vehicle-42f1ed52.js
rename to web/settings/assets/vehicle-4afffc4b.js
index 1650086a67..fadfee48a5 100644
--- a/web/settings/assets/vehicle-42f1ed52.js
+++ b/web/settings/assets/vehicle-4afffc4b.js
@@ -1 +1 @@
-import{_ as h,a4 as c,a5 as _,a6 as f,u as r,k as b,l as k,D as i,N as a,y as s,x as v}from"./vendor-a21b3a62.js";import{a as w}from"./vendor-axios-0e6de98a.js";import{C as y}from"./index-dc0e711f.js";import{V as C}from"./VehicleConfig-0ab604e8.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",mixins:[y,C],data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=c.encode(_.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=_.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=c.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+o+"</pre>","danger")}}}},U={class:"vehicle-soc-tesla"};function B(e,n,o,z,l,p){const u=r("openwb-base-number-input"),m=r("openwb-base-heading"),g=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",U,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>n[6]||(n[6]=[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')])),_:1},8,["model-value"]),i(m,null,{default:a(()=>n[7]||(n[7]=[s("Token abrufen oder eingeben")])),_:1}),i(g,{title:"1. Anmelden","button-text":"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>n[8]||(n[8]=[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")])),_:1},8,["onButtonClicked"]),i(d,{modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t),title:"2. URL kopieren und einfügen",subtype:"url","empty-value":null},{help:a(()=>n[9]||(n[9]=[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')])),_:1},8,["modelValue"]),i(g,{title:"3. Token abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>n[10]||(n[10]=[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")])),_:1},8,["disabled","onButtonClicked"]),n[13]||(n[13]=v("hr",null,null,-1)),i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>n[11]||(n[11]=[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")])),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>n[12]||(n[12]=[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")])),_:1},8,["model-value"])])}const R=h(T,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{R as default};
+import{_ as h,a4 as c,a5 as _,a6 as f,u as r,k as b,l as k,D as i,N as a,y as s,x as v}from"./vendor-a21b3a62.js";import{a as w}from"./vendor-axios-0e6de98a.js";import{C as y}from"./index-f9fda857.js";import{V as C}from"./VehicleConfig-e8ea05c9.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",mixins:[y,C],data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=c.encode(_.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=_.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=c.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+o+"</pre>","danger")}}}},U={class:"vehicle-soc-tesla"};function B(e,n,o,z,l,p){const u=r("openwb-base-number-input"),m=r("openwb-base-heading"),g=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",U,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>n[6]||(n[6]=[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')])),_:1},8,["model-value"]),i(m,null,{default:a(()=>n[7]||(n[7]=[s("Token abrufen oder eingeben")])),_:1}),i(g,{title:"1. Anmelden","button-text":"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>n[8]||(n[8]=[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")])),_:1},8,["onButtonClicked"]),i(d,{modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t),title:"2. URL kopieren und einfügen",subtype:"url","empty-value":null},{help:a(()=>n[9]||(n[9]=[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')])),_:1},8,["modelValue"]),i(g,{title:"3. Token abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>n[10]||(n[10]=[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")])),_:1},8,["disabled","onButtonClicked"]),n[13]||(n[13]=v("hr",null,null,-1)),i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>n[11]||(n[11]=[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")])),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>n[12]||(n[12]=[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")])),_:1},8,["model-value"])])}const R=h(T,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{R as default};
diff --git a/web/settings/assets/vehicle-f050a85d.js b/web/settings/assets/vehicle-4df6c138.js
similarity index 89%
rename from web/settings/assets/vehicle-f050a85d.js
rename to web/settings/assets/vehicle-4df6c138.js
index 23ea709519..838489f82e 100644
--- a/web/settings/assets/vehicle-f050a85d.js
+++ b/web/settings/assets/vehicle-4df6c138.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-0ab604e8.js";import{_ as u,u as l,k as p,l as s,D as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default};
+import{V as a}from"./VehicleConfig-e8ea05c9.js";import{_ as u,u as l,k as p,l as s,D as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default};
diff --git a/web/settings/assets/vehicle-039c8759.js b/web/settings/assets/vehicle-635e6620.js
similarity index 96%
rename from web/settings/assets/vehicle-039c8759.js
rename to web/settings/assets/vehicle-635e6620.js
index 419de2ba87..fa77f8ab82 100644
--- a/web/settings/assets/vehicle-039c8759.js
+++ b/web/settings/assets/vehicle-635e6620.js
@@ -1 +1 @@
-import{V as s}from"./VehicleConfig-0ab604e8.js";import{_ as p,u,k as d,l as v,D as a,N as n,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},g={class:"vehicle-soc-evcc"};function x(t,e,f,V,w,b){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",g,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":t.vehicle.configuration.sponsor_token,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>e[5]||(e[5]=[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")])),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>e[6]||(e[6]=[l(" Benutzername beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.password"))},{help:n(()=>e[7]||(e[7]=[l(" Kennwort beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(r,{title:"Marke",required:"","not-selected":"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":t.vehicle.configuration.vehicle_type,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>e[8]||(e[8]=[l(" Marke aus des Fahrzeugs. ")])),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":t.vehicle.configuration.VIN,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>e[9]||(e[9]=[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const B=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{B as default};
+import{V as s}from"./VehicleConfig-e8ea05c9.js";import{_ as p,u,k as d,l as v,D as a,N as n,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},g={class:"vehicle-soc-evcc"};function x(t,e,f,V,w,b){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",g,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":t.vehicle.configuration.sponsor_token,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>e[5]||(e[5]=[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")])),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>e[6]||(e[6]=[l(" Benutzername beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.password"))},{help:n(()=>e[7]||(e[7]=[l(" Kennwort beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(r,{title:"Marke",required:"","not-selected":"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":t.vehicle.configuration.vehicle_type,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>e[8]||(e[8]=[l(" Marke aus des Fahrzeugs. ")])),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":t.vehicle.configuration.VIN,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>e[9]||(e[9]=[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const B=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{B as default};
diff --git a/web/settings/assets/vehicle-03c9aa3d.js b/web/settings/assets/vehicle-693cb69a.js
similarity index 93%
rename from web/settings/assets/vehicle-03c9aa3d.js
rename to web/settings/assets/vehicle-693cb69a.js
index a2a31ba72a..952371f10d 100644
--- a/web/settings/assets/vehicle-03c9aa3d.js
+++ b/web/settings/assets/vehicle-693cb69a.js
@@ -1 +1 @@
-import{V as m}from"./VehicleConfig-0ab604e8.js";import{_ as d,u as r,k as u,l as f,D as n,N as l,y as o,x as t,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocMqtt",mixins:[m]},v={class:"vehicle-soc-mqtt"};function g(i,e,w,k,x,B){const s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return u(),f("div",v,[n(a,{subtype:"info"},{default:l(()=>[e[12]||(e[12]=o(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. ")),t("ul",null,[t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/soc ",1)]),_:1}),e[0]||(e[0]=t("br",null,null,-1)),e[1]||(e[1]=o(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl")),e[2]||(e[2]=t("br",null,null,-1)),e[3]||(e[3]=o(" Beispiel: ")),e[4]||(e[4]=t("span",{class:"text-info"},"89.5",-1))]),t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/range ",1)]),_:1}),e[5]||(e[5]=t("br",null,null,-1)),e[6]||(e[6]=o(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl")),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Diese Info ist optional.")),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Beispiel: ")),e[11]||(e[11]=t("span",{class:"text-info"},"356.5",-1))])])]),_:1})])}const $=d(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{$ as default};
+import{V as m}from"./VehicleConfig-e8ea05c9.js";import{_ as d,u as r,k as u,l as f,D as n,N as l,y as o,x as t,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocMqtt",mixins:[m]},v={class:"vehicle-soc-mqtt"};function g(i,e,w,k,x,B){const s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return u(),f("div",v,[n(a,{subtype:"info"},{default:l(()=>[e[12]||(e[12]=o(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. ")),t("ul",null,[t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/soc ",1)]),_:1}),e[0]||(e[0]=t("br",null,null,-1)),e[1]||(e[1]=o(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl")),e[2]||(e[2]=t("br",null,null,-1)),e[3]||(e[3]=o(" Beispiel: ")),e[4]||(e[4]=t("span",{class:"text-info"},"89.5",-1))]),t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/range ",1)]),_:1}),e[5]||(e[5]=t("br",null,null,-1)),e[6]||(e[6]=o(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl")),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Diese Info ist optional.")),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Beispiel: ")),e[11]||(e[11]=t("span",{class:"text-info"},"356.5",-1))])])]),_:1})])}const $=d(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-0babcb51.js b/web/settings/assets/vehicle-6dc5238d.js
similarity index 91%
rename from web/settings/assets/vehicle-0babcb51.js
rename to web/settings/assets/vehicle-6dc5238d.js
index 4ad9a94a6d..ed5c12affa 100644
--- a/web/settings/assets/vehicle-0babcb51.js
+++ b/web/settings/assets/vehicle-6dc5238d.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-0ab604e8.js";import{_ as l,u,k as p,l as d,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmarteq",mixins:[a]},v={class:"vehicle-soc-smarteq"};function f(o,e,g,w,V,b){const t=u("openwb-base-text-input");return p(),d("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{$ as default};
+import{V as a}from"./VehicleConfig-e8ea05c9.js";import{_ as l,u,k as p,l as d,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmarteq",mixins:[a]},v={class:"vehicle-soc-smarteq"};function f(o,e,g,w,V,b){const t=u("openwb-base-text-input");return p(),d("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-7f1d1c67.js b/web/settings/assets/vehicle-81ee016b.js
similarity index 86%
rename from web/settings/assets/vehicle-7f1d1c67.js
rename to web/settings/assets/vehicle-81ee016b.js
index bebc59e7a9..ecfb4fa180 100644
--- a/web/settings/assets/vehicle-7f1d1c67.js
+++ b/web/settings/assets/vehicle-81ee016b.js
@@ -1 +1 @@
-import{V as r}from"./VehicleConfig-0ab604e8.js";import{_ as l,u as s,k as a,l as u,D as i,N as p,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},f={class:"vehicle-soc-smart-hello"};function v(o,e,c,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",f,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":o.vehicle.configuration.VIN,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>e[3]||(e[3]=[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{$ as default};
+import{V as r}from"./VehicleConfig-e8ea05c9.js";import{_ as l,u as s,k as a,l as u,D as i,N as p,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},f={class:"vehicle-soc-smart-hello"};function v(o,e,c,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",f,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":o.vehicle.configuration.VIN,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>e[3]||(e[3]=[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-5b8d1dc8.js b/web/settings/assets/vehicle-95222308.js
similarity index 88%
rename from web/settings/assets/vehicle-5b8d1dc8.js
rename to web/settings/assets/vehicle-95222308.js
index 06ca303604..f19281fad2 100644
--- a/web/settings/assets/vehicle-5b8d1dc8.js
+++ b/web/settings/assets/vehicle-95222308.js
@@ -1 +1 @@
-import{V as o}from"./VehicleConfig-0ab604e8.js";import{_ as i,u as r,k as s,l as a,D as c,N as p,y as n,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocPSA",mixins:[o]},m={class:"vehicle-soc-psa"};function u(f,e,_,h,b,g){const t=r("openwb-base-alert");return s(),a("div",m,[c(t,{subtype:"danger"},{default:p(()=>e[0]||(e[0]=[n(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),l("br",null,null,-1),n(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")])),_:1})])}const N=i(d,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{N as default};
+import{V as o}from"./VehicleConfig-e8ea05c9.js";import{_ as i,u as r,k as s,l as a,D as c,N as p,y as n,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocPSA",mixins:[o]},m={class:"vehicle-soc-psa"};function u(f,e,_,h,b,g){const t=r("openwb-base-alert");return s(),a("div",m,[c(t,{subtype:"danger"},{default:p(()=>e[0]||(e[0]=[n(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),l("br",null,null,-1),n(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")])),_:1})])}const N=i(d,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/assets/vehicle-7adb9a7c.js b/web/settings/assets/vehicle-a8092426.js
similarity index 91%
rename from web/settings/assets/vehicle-7adb9a7c.js
rename to web/settings/assets/vehicle-a8092426.js
index 9f0b58a1fb..d3fa60cea4 100644
--- a/web/settings/assets/vehicle-7adb9a7c.js
+++ b/web/settings/assets/vehicle-a8092426.js
@@ -1 +1 @@
-import{V as l}from"./VehicleConfig-0ab604e8.js";import{_ as a,u,k as p,l as d,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocBmw",mixins:[l]},v={class:"vehicle-soc-bmw"};function f(o,e,g,w,b,V){const i=u("openwb-base-text-input");return p(),d("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const q=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{q as default};
+import{V as l}from"./VehicleConfig-e8ea05c9.js";import{_ as a,u,k as p,l as d,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocBmw",mixins:[l]},v={class:"vehicle-soc-bmw"};function f(o,e,g,w,b,V){const i=u("openwb-base-text-input");return p(),d("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const q=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-28a9dcf3.js b/web/settings/assets/vehicle-a9e07390.js
similarity index 94%
rename from web/settings/assets/vehicle-28a9dcf3.js
rename to web/settings/assets/vehicle-a9e07390.js
index 36eaf1bcd7..5710898159 100644
--- a/web/settings/assets/vehicle-28a9dcf3.js
+++ b/web/settings/assets/vehicle-a9e07390.js
@@ -1 +1 @@
-import{V as d}from"./VehicleConfig-0ab604e8.js";import{_ as p,u as l,k as m,l as b,D as i,N as r,y as t,x as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"VehicleSocBmwBimmerConnected",mixins:[d]},f={class:"vehicle-soc-bmwbc"};function v(n,e,c,w,V,B){const u=l("openwb-base-text-input"),s=l("openwb-base-button-group-input");return m(),b("div",f,[i(u,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"VIN",required:"","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[6]||(e[6]=[t(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.calculate_soc"))},{help:r(()=>e[7]||(e[7]=[t(" Berechnet den Ladestand (SoC) während der Ladung. "),a("br",null,null,-1),t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),a("br",null,null,-1)])),_:1},8,["model-value"])])}const $=p(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{$ as default};
+import{V as d}from"./VehicleConfig-e8ea05c9.js";import{_ as p,u as l,k as m,l as b,D as i,N as r,y as t,x as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"VehicleSocBmwBimmerConnected",mixins:[d]},f={class:"vehicle-soc-bmwbc"};function v(n,e,c,w,V,B){const u=l("openwb-base-text-input"),s=l("openwb-base-button-group-input");return m(),b("div",f,[i(u,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"VIN",required:"","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[6]||(e[6]=[t(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.calculate_soc"))},{help:r(()=>e[7]||(e[7]=[t(" Berechnet den Ladestand (SoC) während der Ladung. "),a("br",null,null,-1),t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),a("br",null,null,-1)])),_:1},8,["model-value"])])}const $=p(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-7bb9b768.js b/web/settings/assets/vehicle-ad06c8a7.js
similarity index 88%
rename from web/settings/assets/vehicle-7bb9b768.js
rename to web/settings/assets/vehicle-ad06c8a7.js
index e36724bded..23d78b1185 100644
--- a/web/settings/assets/vehicle-7bb9b768.js
+++ b/web/settings/assets/vehicle-ad06c8a7.js
@@ -1 +1 @@
-import{V as d}from"./VehicleConfig-0ab604e8.js";import{_ as l,u as a,k as u,l as p,D as n,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocOVMS",mixins:[d]},v={class:"vehicle-soc-ovms"};function f(o,e,g,V,c,w){const i=a("openwb-base-text-input");return u(),p("div",v,[n(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")])),_:1},8,["model-value"]),n(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")])),_:1},8,["model-value"]),n(i,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.vehicleId"))},{help:r(()=>e[5]||(e[5]=[s(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")])),_:1},8,["model-value"])])}const D=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{D as default};
+import{V as d}from"./VehicleConfig-e8ea05c9.js";import{_ as l,u as a,k as u,l as p,D as n,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocOVMS",mixins:[d]},v={class:"vehicle-soc-ovms"};function f(o,e,g,V,c,w){const i=a("openwb-base-text-input");return u(),p("div",v,[n(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")])),_:1},8,["model-value"]),n(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")])),_:1},8,["model-value"]),n(i,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.vehicleId"))},{help:r(()=>e[5]||(e[5]=[s(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")])),_:1},8,["model-value"])])}const D=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{D as default};
diff --git a/web/settings/assets/vehicle-9ce6bac4.js b/web/settings/assets/vehicle-caa88593.js
similarity index 92%
rename from web/settings/assets/vehicle-9ce6bac4.js
rename to web/settings/assets/vehicle-caa88593.js
index 0a79338e6f..0f17a08c9f 100644
--- a/web/settings/assets/vehicle-9ce6bac4.js
+++ b/web/settings/assets/vehicle-caa88593.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-0ab604e8.js";import{_ as d,u,k as p,l as g,D as o,N as l,y as i,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[a]},f={class:"vehicle-soc-tronity"};function b(n,e,v,C,w,h){const r=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return p(),g("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>e[4]||(e[4]=[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":n.vehicle.configuration.client_id,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>e[5]||(e[5]=[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":n.vehicle.configuration.client_secret,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>e[6]||(e[6]=[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')])),_:1},8,["model-value"]),o(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>e[7]||(e[7]=[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),c("br",null,null,-1),i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"])])}const L=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{L as default};
+import{V as a}from"./VehicleConfig-e8ea05c9.js";import{_ as d,u,k as p,l as g,D as o,N as l,y as i,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[a]},f={class:"vehicle-soc-tronity"};function b(n,e,v,C,w,h){const r=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return p(),g("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>e[4]||(e[4]=[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":n.vehicle.configuration.client_id,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>e[5]||(e[5]=[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":n.vehicle.configuration.client_secret,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>e[6]||(e[6]=[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')])),_:1},8,["model-value"]),o(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>e[7]||(e[7]=[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),c("br",null,null,-1),i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"])])}const L=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{L as default};
diff --git a/web/settings/assets/vehicle-47ed0a84.js b/web/settings/assets/vehicle-cb0122fd.js
similarity index 82%
rename from web/settings/assets/vehicle-47ed0a84.js
rename to web/settings/assets/vehicle-cb0122fd.js
index 8a358c2fec..9bd12bca3e 100644
--- a/web/settings/assets/vehicle-47ed0a84.js
+++ b/web/settings/assets/vehicle-cb0122fd.js
@@ -1 +1 @@
-import{V as n}from"./VehicleConfig-0ab604e8.js";import{_ as s,u as i,k as o,l as r,D as a,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const p={name:"VehicleSocManual",mixins:[n]},c={class:"vehicle-soc-tesla"};function u(m,e,_,f,h,g){const t=i("openwb-base-alert");return o(),r("div",c,[a(t,{subtype:"info"},{default:d(()=>e[0]||(e[0]=[l(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')])),_:1})])}const z=s(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default};
+import{V as n}from"./VehicleConfig-e8ea05c9.js";import{_ as s,u as i,k as o,l as r,D as a,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const p={name:"VehicleSocManual",mixins:[n]},c={class:"vehicle-soc-tesla"};function u(m,e,_,f,h,g){const t=i("openwb-base-alert");return o(),r("div",c,[a(t,{subtype:"info"},{default:d(()=>e[0]||(e[0]=[l(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')])),_:1})])}const z=s(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default};
diff --git a/web/settings/assets/vehicle-85478721.js b/web/settings/assets/vehicle-cc94e01f.js
similarity index 91%
rename from web/settings/assets/vehicle-85478721.js
rename to web/settings/assets/vehicle-cc94e01f.js
index aff14eacc3..08a964fb14 100644
--- a/web/settings/assets/vehicle-85478721.js
+++ b/web/settings/assets/vehicle-cc94e01f.js
@@ -1 +1 @@
-import{V as l}from"./VehicleConfig-0ab604e8.js";import{_ as a,u,k as d,l as p,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[l]},v={class:"vehicle-soc-vwid"};function f(o,e,g,w,V,b){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const q=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default};
+import{V as l}from"./VehicleConfig-e8ea05c9.js";import{_ as a,u,k as d,l as p,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[l]},v={class:"vehicle-soc-vwid"};function f(o,e,g,w,V,b){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const q=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-0bc01aa8.js b/web/settings/assets/vehicle-ed5ef659.js
similarity index 95%
rename from web/settings/assets/vehicle-0bc01aa8.js
rename to web/settings/assets/vehicle-ed5ef659.js
index 3708011c51..e3ec81862d 100644
--- a/web/settings/assets/vehicle-0bc01aa8.js
+++ b/web/settings/assets/vehicle-ed5ef659.js
@@ -1 +1 @@
-import{V as m}from"./VehicleConfig-0ab604e8.js";import{_ as b,u as s,k as g,l as v,D as i,N as o,y as n,x as u,z as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-dc0e711f.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocMercedesEq",mixins:[m],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var t=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");t.focus()}}},h={class:"vehicle-soc-mercedeseq"};function w(t,e,k,C,y,r){const a=s("openwb-base-text-input"),d=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert"),c=s("openwb-base-button-input");return g(),v("div",h,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":t.vehicle.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>e[3]||(e[3]=[n(" Die im Developer Portal angelegte Client-ID. ")])),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":t.vehicle.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>e[4]||(e[4]=[n(" Das im Developer Portal angelegte Client Secret. ")])),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateConfiguration(l,"configuration.vin"))},{help:o(()=>e[5]||(e[5]=[n(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(p,{subtype:"info"},{default:o(()=>[e[6]||(e[6]=n(" Vor dem Anmelden bitte die Angaben speichern.")),e[7]||(e[7]=u("br",null,null,-1)),e[8]||(e[8]=n(" Die Callback-URL für die Anmeldung lautet:")),e[9]||(e[9]=u("br",null,null,-1)),i(d,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[n(_(r.callback_url),1)]),_:1})]),_:1}),i(c,{title:"Anmelden","button-text":"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>e[10]||(e[10]=[n(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),u("br",null,null,-1)])),_:1},8,["disabled","onButtonClicked"])])}const S=b(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{S as default};
+import{V as m}from"./VehicleConfig-e8ea05c9.js";import{_ as b,u as s,k as g,l as v,D as i,N as o,y as n,x as u,z as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocMercedesEq",mixins:[m],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var t=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");t.focus()}}},h={class:"vehicle-soc-mercedeseq"};function w(t,e,k,C,y,r){const a=s("openwb-base-text-input"),d=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert"),c=s("openwb-base-button-input");return g(),v("div",h,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":t.vehicle.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>e[3]||(e[3]=[n(" Die im Developer Portal angelegte Client-ID. ")])),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":t.vehicle.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>e[4]||(e[4]=[n(" Das im Developer Portal angelegte Client Secret. ")])),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateConfiguration(l,"configuration.vin"))},{help:o(()=>e[5]||(e[5]=[n(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(p,{subtype:"info"},{default:o(()=>[e[6]||(e[6]=n(" Vor dem Anmelden bitte die Angaben speichern.")),e[7]||(e[7]=u("br",null,null,-1)),e[8]||(e[8]=n(" Die Callback-URL für die Anmeldung lautet:")),e[9]||(e[9]=u("br",null,null,-1)),i(d,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[n(_(r.callback_url),1)]),_:1})]),_:1}),i(c,{title:"Anmelden","button-text":"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>e[10]||(e[10]=[n(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),u("br",null,null,-1)])),_:1},8,["disabled","onButtonClicked"])])}const S=b(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{S as default};
diff --git a/web/settings/index.html b/web/settings/index.html
index 2d5467c028..dabee19768 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -7,7 +7,7 @@
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
   <link rel="icon" href="/openWB/web/settings/favicon.ico">
   <title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-dc0e711f.js"></script>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-f9fda857.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-3016fed8.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-a21b3a62.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-41164876.js">

From cc81b495e280455806066682c1d8bfd60b05aa83 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 1 Oct 2024 12:50:18 +0200
Subject: [PATCH 098/205] fix hardware configuration file (#1896)

* fix hardware configuration file

* update default file

* msg

* improve

* don't fix all breaking changes after reset
---
 data/config/configuration.json                |  2 +-
 .../helpermodules/hardware_configuration.py   | 20 +++++++++++++++++--
 packages/helpermodules/update_config.py       |  3 ++-
 3 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/data/config/configuration.json b/data/config/configuration.json
index d765199d71..fce3029094 100644
--- a/data/config/configuration.json
+++ b/data/config/configuration.json
@@ -1 +1 @@
-{"openwb-version": 1, "ripple_control_receiver_configured": false, "max_c_socket": 32}
\ No newline at end of file
+{"openwb-version": 1, "max_c_socket": 32, "dc_charging": false}
\ No newline at end of file
diff --git a/packages/helpermodules/hardware_configuration.py b/packages/helpermodules/hardware_configuration.py
index fdf405f9bb..67f521c367 100644
--- a/packages/helpermodules/hardware_configuration.py
+++ b/packages/helpermodules/hardware_configuration.py
@@ -1,15 +1,31 @@
+import logging
 import json
 import sys
 from typing import Dict, Optional
 
 from helpermodules.utils.json_file_handler import write_and_check
 
+log = logging.getLogger(__name__)
+
 HARDWARE_CONFIGURATION_FILE = "/home/openwb/configuration.json"
 
 
 def _read_configuration() -> Dict:
-    with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
-        return json.loads(f.read())
+    for i in range(2):
+        try:
+            with open(HARDWARE_CONFIGURATION_FILE, "r") as f:
+                config = json.loads(f.read())
+            if isinstance(config, dict):
+                return config
+        except Exception:
+            # wird im else-Zweig abgefangen
+            pass
+    else:
+        log.error("Invalid configuration.json file. Creating new one with default values.")
+        with open("./data/config/configuration.json", "r") as f:
+            config_file = json.loads(f.read())
+        write_and_check(HARDWARE_CONFIGURATION_FILE, config_file)
+        return config_file
 
 
 def update_hardware_configuration(new_setting: Dict) -> None:
diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 8099201ca1..a1595f16ee 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -617,7 +617,8 @@ def __update_version(self):
     def __solve_breaking_changes(self) -> None:
         """ solve breaking changes in the datastore
         """
-        datastore_version = decode_payload(self.all_received_topics.get("openWB/system/datastore_version")) or 0
+        datastore_version = (decode_payload(self.all_received_topics.get("openWB/system/datastore_version")) or
+                             self.DATASTORE_VERSION)
         log.debug(f"current datastore version: {datastore_version}")
         log.debug(f"target datastore version: {self.DATASTORE_VERSION}")
         for version in range(datastore_version, self.DATASTORE_VERSION):

From ed67a82d4aa0d17eb384ea100f91eb0d72d69c55 Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Tue, 1 Oct 2024 13:20:58 +0200
Subject: [PATCH 099/205] fix parsing local charge point id (#1911)

---
 packages/modules/display_themes/cards/source/src/App.vue | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/packages/modules/display_themes/cards/source/src/App.vue b/packages/modules/display_themes/cards/source/src/App.vue
index 251f0544ee..b0cc084183 100644
--- a/packages/modules/display_themes/cards/source/src/App.vue
+++ b/packages/modules/display_themes/cards/source/src/App.vue
@@ -90,7 +90,11 @@ export default {
         let data = JSON.parse(params.get("data"));
         Object.entries(data).forEach(([key, value]) => {
           console.log("updateSetting", key, value);
-          this.mqttStore.updateSetting(key, value);
+          if (key.startsWith("parentChargePoint")) {
+            this.mqttStore.updateSetting(key, parseInt(value));
+          } else {
+            this.mqttStore.updateSetting(key, value);
+          }
         });
       }
     }

From 87843de55056e541d760d891bb520b50a163b77d Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Tue, 1 Oct 2024 11:21:30 +0000
Subject: [PATCH 100/205] Build Display Theme: Cards

---
 ...PlugBadge-DyF92yTK.js => ChargePointPlugBadge-Bsi0zWop.js} | 2 +-
 ...rgePointsView-CZeUBF37.js => ChargePointsView-CaYX8Nkl.js} | 2 +-
 .../{DashBoardView-_HZMNhnS.js => DashBoardView-BJO8O7Y4.js}  | 2 +-
 ...{EnergyFlowView-BcB2FDT1.js => EnergyFlowView-CAd9Xlbe.js} | 2 +-
 .../assets/{StatusView-uYO1gy9a.js => StatusView-DclrRcZL.js} | 2 +-
 .../web/assets/{index-BkCKa8xR.css => index-CqRNIbkO.css}     | 2 +-
 .../cards/web/assets/{index-CHLaD7ED.js => index-CtySFcBa.js} | 4 ++--
 packages/modules/display_themes/cards/web/index.html          | 4 ++--
 8 files changed, 10 insertions(+), 10 deletions(-)
 rename packages/modules/display_themes/cards/web/assets/{ChargePointPlugBadge-DyF92yTK.js => ChargePointPlugBadge-Bsi0zWop.js} (98%)
 rename packages/modules/display_themes/cards/web/assets/{ChargePointsView-CZeUBF37.js => ChargePointsView-CaYX8Nkl.js} (99%)
 rename packages/modules/display_themes/cards/web/assets/{DashBoardView-_HZMNhnS.js => DashBoardView-BJO8O7Y4.js} (97%)
 rename packages/modules/display_themes/cards/web/assets/{EnergyFlowView-BcB2FDT1.js => EnergyFlowView-CAd9Xlbe.js} (99%)
 rename packages/modules/display_themes/cards/web/assets/{StatusView-uYO1gy9a.js => StatusView-DclrRcZL.js} (99%)
 rename packages/modules/display_themes/cards/web/assets/{index-BkCKa8xR.css => index-CqRNIbkO.css} (85%)
 rename packages/modules/display_themes/cards/web/assets/{index-CHLaD7ED.js => index-CtySFcBa.js} (70%)

diff --git a/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-DyF92yTK.js b/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-Bsi0zWop.js
similarity index 98%
rename from packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-DyF92yTK.js
rename to packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-Bsi0zWop.js
index f860cb612f..43e8a89e40 100644
--- a/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-DyF92yTK.js
+++ b/packages/modules/display_themes/cards/web/assets/ChargePointPlugBadge-Bsi0zWop.js
@@ -1 +1 @@
-import{O as p,o as n,e as c,i as m,F as P,A as C,y as _,j as x,q as l,l as S,n as w,s as k,x as u}from"./vendor-CZ1MGz7j.js";import{_ as y}from"./vendor-inkline-Ce5aFAnW.js";import{u as v}from"./index-CHLaD7ED.js";import{l as N,z as b,A as D,B as q,F as B}from"./vendor-fortawesome-C68yAli-.js";const d={props:{data:{required:!1,type:Array,default:void 0},socData:{required:!1,type:Array,default:void 0},width:{type:Number,default:250},height:{type:Number,default:70},gap:{type:Number,default:3},stroke:{type:Number,default:3},min:{type:Number,default:0},max:{type:Number,default:1},color:{type:String,default:"var(--color--primary)"},colorNegative:{type:String,default:void 0}},computed:{highestPoint(){return Math.max(1,this.max,...this.slicedData)},lowestPoint(){return Math.min(0,this.min,...this.slicedData)},maxPoints(){return Math.floor(this.width/(this.stroke+this.gap))},slicedData(){if(this.data)return this.data.slice(-this.maxPoints)},slicedSocData(){if(this.socData)return this.socData.slice(-this.maxPoints)},zeroHeight(){return this.height-(0-this.lowestPoint)/(this.highestPoint-this.lowestPoint)*this.height},coordinates(){if(this.data)return this.calculateCoordinates(this.slicedData,this.lowestPoint,this.highestPoint)},socCoordinates(){if(this.socData)return this.calculateCoordinates(this.slicedSocData,0,100)},bars(){if(this.coordinates){const t=[];return this.coordinates.forEach(s=>{const e=s.x,r=s.y,o=this.stroke,a=Math.min(r,this.zeroHeight),i=Math.abs(r-this.zeroHeight),h=r>this.zeroHeight;t.push({x:e,y:a,width:o,height:i,negative:h})}),t}},socPath(){if(this.socCoordinates&&this.socCoordinates.length>0){let s=this.socCoordinates.slice(0,1)[0],e=this.socCoordinates.slice(-1)[0];var t=`M 0,${this.height}`;return t+=` L 0,${s.y}`,this.socCoordinates.forEach(r=>{t+=` L ${r.x+this.stroke/2},${r.y}`}),t+=` L ${e.x+this.stroke},${e.y} L ${e.x+this.stroke},${this.height} Z`,t}}},methods:{calculateCoordinates(t,s,e){const r=[];return t.forEach((o,a)=>{const i=a*this.width/this.maxPoints+1,h=this.height-(o-s)/(e-s)*this.height;r.push({x:i,y:h})}),r}}},g=()=>{p(t=>({"3f7db06a":t.color,"1de516bf":t.colorNegative}))},f=d.setup;d.setup=f?(t,s)=>(g(),f(t,s)):g;const I=["viewBox"],z=["d"],M=["x","y","width","height"],A=["y1","x2","y2"];function E(t,s,e,r,o,a){return n(),c("svg",{class:"spark-line",viewBox:`0 0 ${e.width} ${e.height}`,width:"100%",preserveAspectRatio:"xMinYMin"},[e.socData?(n(),c("path",{key:0,class:"soc-path",d:a.socPath},null,8,z)):m("",!0),(n(!0),c(P,null,C(a.bars,i=>(n(),c("rect",{key:i.x,x:i.x,y:i.y,width:i.width,height:i.height,class:_(e.colorNegative&&i.negative?"negative":"")},null,10,M))),128)),x("line",{class:"zero-line",x1:0,y1:a.zeroHeight,x2:e.width,y2:a.zeroHeight},null,8,A)],8,I)}const R=y(d,[["render",E],["__scopeId","data-v-22cdf82b"]]);N.add(b,D,q);const H={name:"ChargePointStateBadge",components:{FontAwesomeIcon:B},props:{chargePointId:{required:!0,type:Array},showEnergyCharged:{required:!1,type:Boolean,default:!0}},data(){return{mqttStore:v()}},computed:{plugState(){var t=!1;return this.chargePointId.forEach(s=>{t|=this.mqttStore.getChargePointPlugState(s)}),t},chargeState(){var t=!1;return this.chargePointId.forEach(s=>{t|=this.mqttStore.getChargePointChargeState(s)}),t},stateIcon(){return this.plugState?this.chargeState?["fas","fa-plug-circle-bolt"]:["fas","fa-plug-circle-check"]:["fas","fa-plug-circle-xmark"]},stateClass(){return this.plugState?this.chargeState?"_color:success":"_color:warning":"_color:gray"}}},L={key:0,class:"_padding-left:1"};function V(t,s,e,r,o,a){const i=l("font-awesome-icon"),h=l("i-badge");return n(),S(h,{size:"lg"},{default:w(()=>[k(i,{"fixed-width":"",icon:a.stateIcon,class:_(a.stateClass)},null,8,["icon","class"]),a.plugState&&e.showEnergyCharged?(n(),c("span",L,u(o.mqttStore.getChargePointImportedSincePlugged(e.chargePointId).energy)+" / "+u(o.mqttStore.getChargePointImportedSincePlugged(e.chargePointId).range),1)):m("",!0)]),_:1})}const X=y(H,[["render",V]]);export{X as C,R as S};
+import{O as p,o as n,e as c,i as m,F as P,A as C,y as _,j as x,q as l,l as S,n as w,s as k,x as u}from"./vendor-CZ1MGz7j.js";import{_ as y}from"./vendor-inkline-Ce5aFAnW.js";import{u as v}from"./index-CtySFcBa.js";import{l as N,z as b,A as D,B as q,F as B}from"./vendor-fortawesome-C68yAli-.js";const d={props:{data:{required:!1,type:Array,default:void 0},socData:{required:!1,type:Array,default:void 0},width:{type:Number,default:250},height:{type:Number,default:70},gap:{type:Number,default:3},stroke:{type:Number,default:3},min:{type:Number,default:0},max:{type:Number,default:1},color:{type:String,default:"var(--color--primary)"},colorNegative:{type:String,default:void 0}},computed:{highestPoint(){return Math.max(1,this.max,...this.slicedData)},lowestPoint(){return Math.min(0,this.min,...this.slicedData)},maxPoints(){return Math.floor(this.width/(this.stroke+this.gap))},slicedData(){if(this.data)return this.data.slice(-this.maxPoints)},slicedSocData(){if(this.socData)return this.socData.slice(-this.maxPoints)},zeroHeight(){return this.height-(0-this.lowestPoint)/(this.highestPoint-this.lowestPoint)*this.height},coordinates(){if(this.data)return this.calculateCoordinates(this.slicedData,this.lowestPoint,this.highestPoint)},socCoordinates(){if(this.socData)return this.calculateCoordinates(this.slicedSocData,0,100)},bars(){if(this.coordinates){const t=[];return this.coordinates.forEach(s=>{const e=s.x,r=s.y,o=this.stroke,a=Math.min(r,this.zeroHeight),i=Math.abs(r-this.zeroHeight),h=r>this.zeroHeight;t.push({x:e,y:a,width:o,height:i,negative:h})}),t}},socPath(){if(this.socCoordinates&&this.socCoordinates.length>0){let s=this.socCoordinates.slice(0,1)[0],e=this.socCoordinates.slice(-1)[0];var t=`M 0,${this.height}`;return t+=` L 0,${s.y}`,this.socCoordinates.forEach(r=>{t+=` L ${r.x+this.stroke/2},${r.y}`}),t+=` L ${e.x+this.stroke},${e.y} L ${e.x+this.stroke},${this.height} Z`,t}}},methods:{calculateCoordinates(t,s,e){const r=[];return t.forEach((o,a)=>{const i=a*this.width/this.maxPoints+1,h=this.height-(o-s)/(e-s)*this.height;r.push({x:i,y:h})}),r}}},g=()=>{p(t=>({"3f7db06a":t.color,"1de516bf":t.colorNegative}))},f=d.setup;d.setup=f?(t,s)=>(g(),f(t,s)):g;const I=["viewBox"],z=["d"],M=["x","y","width","height"],A=["y1","x2","y2"];function E(t,s,e,r,o,a){return n(),c("svg",{class:"spark-line",viewBox:`0 0 ${e.width} ${e.height}`,width:"100%",preserveAspectRatio:"xMinYMin"},[e.socData?(n(),c("path",{key:0,class:"soc-path",d:a.socPath},null,8,z)):m("",!0),(n(!0),c(P,null,C(a.bars,i=>(n(),c("rect",{key:i.x,x:i.x,y:i.y,width:i.width,height:i.height,class:_(e.colorNegative&&i.negative?"negative":"")},null,10,M))),128)),x("line",{class:"zero-line",x1:0,y1:a.zeroHeight,x2:e.width,y2:a.zeroHeight},null,8,A)],8,I)}const R=y(d,[["render",E],["__scopeId","data-v-22cdf82b"]]);N.add(b,D,q);const H={name:"ChargePointStateBadge",components:{FontAwesomeIcon:B},props:{chargePointId:{required:!0,type:Array},showEnergyCharged:{required:!1,type:Boolean,default:!0}},data(){return{mqttStore:v()}},computed:{plugState(){var t=!1;return this.chargePointId.forEach(s=>{t|=this.mqttStore.getChargePointPlugState(s)}),t},chargeState(){var t=!1;return this.chargePointId.forEach(s=>{t|=this.mqttStore.getChargePointChargeState(s)}),t},stateIcon(){return this.plugState?this.chargeState?["fas","fa-plug-circle-bolt"]:["fas","fa-plug-circle-check"]:["fas","fa-plug-circle-xmark"]},stateClass(){return this.plugState?this.chargeState?"_color:success":"_color:warning":"_color:gray"}}},L={key:0,class:"_padding-left:1"};function V(t,s,e,r,o,a){const i=l("font-awesome-icon"),h=l("i-badge");return n(),S(h,{size:"lg"},{default:w(()=>[k(i,{"fixed-width":"",icon:a.stateIcon,class:_(a.stateClass)},null,8,["icon","class"]),a.plugState&&e.showEnergyCharged?(n(),c("span",L,u(o.mqttStore.getChargePointImportedSincePlugged(e.chargePointId).energy)+" / "+u(o.mqttStore.getChargePointImportedSincePlugged(e.chargePointId).range),1)):m("",!0)]),_:1})}const X=y(H,[["render",V]]);export{X as C,R as S};
diff --git a/packages/modules/display_themes/cards/web/assets/ChargePointsView-CZeUBF37.js b/packages/modules/display_themes/cards/web/assets/ChargePointsView-CaYX8Nkl.js
similarity index 99%
rename from packages/modules/display_themes/cards/web/assets/ChargePointsView-CZeUBF37.js
rename to packages/modules/display_themes/cards/web/assets/ChargePointsView-CaYX8Nkl.js
index f69d1a853e..a14be09e0e 100644
--- a/packages/modules/display_themes/cards/web/assets/ChargePointsView-CZeUBF37.js
+++ b/packages/modules/display_themes/cards/web/assets/ChargePointsView-CaYX8Nkl.js
@@ -1 +1 @@
-import{u as B,C as ne,N as ie}from"./index-CHLaD7ED.js";import{D as z}from"./DashBoardCard-BterAPyf.js";import{S as oe,C as W}from"./ChargePointPlugBadge-DyF92yTK.js";import{l as N,b as le,c as ae,F as A,j as re,k as E,m as U,e as D,n as Z,o as R,p as j,q as O,r as J,s as K,t as G,u as H,v as ce,w as de,x as ge,y as he}from"./vendor-fortawesome-C68yAli-.js";import{_ as T}from"./vendor-inkline-Ce5aFAnW.js";import{q as g,o as d,l as u,n as i,s as n,y as q,e as S,k as r,F as x,x as s,i as m,A as L,I as se,j as ue,p as me}from"./vendor-CZ1MGz7j.js";N.add(le,ae);const Ce={name:"ChargePointLockButton",components:{FontAwesomeIcon:A},props:{chargePointId:{required:!0,type:Number},changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:B()}},computed:{locked(){return this.mqttStore.getChargePointManualLock(this.chargePointId)},stateIcon(){return this.locked?["fas","fa-lock"]:["fas","fa-lock-open"]},stateClass(){return this.locked?["_color:danger"]:"_color:success"}},methods:{toggleChargePointManualLock(){this.changesLocked||this.$root.sendTopicToBroker(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`,!this.mqttStore.getValueBool(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`))}}};function fe(o,e,l,P,t,c){const f=g("font-awesome-icon"),V=g("i-button");return d(),u(V,{size:"lg",disabled:l.changesLocked,outline:l.changesLocked},{default:i(()=>[n(f,{"fixed-width":"",icon:c.stateIcon,class:q(c.stateClass),onClick:e[0]||(e[0]=C=>c.toggleChargePointManualLock())},null,8,["icon","class"])]),_:1},8,["disabled","outline"])}const Q=T(Ce,[["render",fe]]);N.add(re);const Pe={name:"ChargePointCodeButton",components:{FontAwesomeIcon:A,CodeInputModal:ne},props:{chargePointId:{type:Number,required:!0}},data(){return{mqttStore:B(),modalIdTagEntryVisible:!1,modalIdTagEntryColor:"warning",code:""}},computed:{tagState(){return this.mqttStore.getChargepointTagState(this.chargePointId)},tagButtonColor(){switch(this.tagState){case 2:return"success";case 1:return"warning";default:return""}},tagClass(){switch(this.tagState){case 2:return"_color:success-80";case 1:return"_color:warning-80";default:return""}}},methods:{toggleIdTagModal(){this.modalIdTagEntryVisible=!this.modalIdTagEntryVisible},sendIdTag(o){this.$root.sendTopicToBroker(`openWB/chargepoint/${this.chargePointId}/get/rfid`,o),this.modalIdTagEntryVisible=!1}}};function _e(o,e,l,P,t,c){const f=g("FontAwesomeIcon"),V=g("i-button"),C=g("CodeInputModal");return d(),S(x,null,[n(V,{class:"_margin-right:1",size:"lg",color:c.tagButtonColor,disabled:c.tagState==2,onClick:e[0]||(e[0]=h=>c.toggleIdTagModal())},{default:i(()=>[n(f,{"fixed-width":"",icon:["fas","fa-calculator"],class:q(c.tagClass)},null,8,["class"])]),_:1},8,["color","disabled"]),n(C,{ref:"lockInput",modelValue:t.modalIdTagEntryVisible,"onUpdate:modelValue":e[1]||(e[1]=h=>t.modalIdTagEntryVisible=h),"min-length":4,"max-length":20,"onUpdate:inputValue":c.sendIdTag},{header:i(()=>e[2]||(e[2]=[r(" Bitte einen ID-Tag eingeben. ")])),_:1},8,["modelValue","onUpdate:inputValue"])],64)}const X=T(Pe,[["render",_e]]);N.add(E,U,D,Z,R,j,O,J,K,G,H);const Se={name:"ChargePointCard",components:{DashBoardCard:z,SparkLine:oe,ChargePointPlugBadge:W,ChargePointLockButton:Q,ChargePointCodeButton:X,FontAwesomeIcon:A},props:{chargePointId:{type:Number,required:!0},changesLocked:{type:Boolean,required:!0}},emits:["vehicle-click","soc-click","charge-mode-click","toggle-charge-point-settings"],data(){return{mqttStore:B()}},methods:{handleVehicleClick(o){this.$emit("vehicle-click",o)},handleSocClick(o){this.$emit("soc-click",o)},handleChargeModeClick(o){this.$emit("charge-mode-click",o)},toggleChargePointSettings(o){this.$emit("toggle-charge-point-settings",o)}}},Ve={key:0};function be(o,e,l,P,t,c){const f=g("charge-point-plug-badge"),V=g("charge-point-code-button"),C=g("charge-point-lock-button"),h=g("i-column"),b=g("i-row"),k=g("spark-line"),I=g("font-awesome-icon"),_=g("i-badge"),y=g("i-button"),v=g("i-container"),p=g("dash-board-card");return d(),u(p,{color:"primary"},{headerLeft:i(()=>[r(s(t.mqttStore.getChargePointName(l.chargePointId)),1)]),headerRight:i(()=>[n(f,{"charge-point-id":[l.chargePointId]},null,8,["charge-point-id"])]),default:i(()=>[n(v,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[t.mqttStore.getRfidEnabled?(d(),u(V,{key:0,"charge-point-id":l.chargePointId},null,8,["charge-point-id"])):m("",!0),n(C,{"charge-point-id":l.chargePointId,"changes-locked":l.changesLocked},null,8,["charge-point-id","changes-locked"])]),_:1}),n(h,{class:"_text-align:right _padding-left:0"},{default:i(()=>[r(s(t.mqttStore.getChargePointPower(l.chargePointId))+" "+s(t.mqttStore.getChargePointPhasesInUse(l.chargePointId))+" "+s(t.mqttStore.getChargePointSetCurrent(l.chargePointId)),1)]),_:1})]),_:1}),n(b,{class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0"},{default:i(()=>[n(k,{color:"var(--color--primary)",data:t.mqttStore.getChargePointPowerChartData(l.chargePointId)},null,8,["data"])]),_:1})]),_:1})]),_:1}),n(h,{md:"6"},{default:i(()=>[n(b,{class:"_display:flex"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:i(()=>[n(_,{size:"lg",class:q(["_width:100%",l.changesLocked?"":"clickable"]),onClick:e[0]||(e[0]=w=>c.handleVehicleClick(l.chargePointId))},{default:i(()=>[n(I,{"fixed-width":"",icon:["fas","fa-car"]}),r(" "+s(t.mqttStore.getChargePointConnectedVehicleName(l.chargePointId)),1)]),_:1},8,["class"])]),_:1}),t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))||t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(h,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:i(()=>[n(y,{size:"sm",disabled:l.changesLocked,class:q(l.changesLocked?"":"clickable"),onClick:e[1]||(e[1]=w=>c.handleSocClick(l.chargePointId))},{default:i(()=>[t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?(d(),S("span",Ve,[n(I,{"fixed-width":"",icon:t.mqttStore.getVehicleSocIsManual(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?["fas","fa-edit"]:["fas","fa-car-battery"]},null,8,["icon"]),r(" "+s(t.mqttStore.getChargePointConnectedVehicleSoc(l.chargePointId).soc)+"% ",1)])):m("",!0),t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(I,{key:1,"fixed-width":"",icon:t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?["fas","times-circle"]:["fas","exclamation-triangle"]:[],class:q(t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?"_color:danger":"_color:warning":"")},null,8,["icon","class"])):m("",!0)]),_:1},8,["disabled","class"])]),_:1})):m("",!0)]),_:1}),n(b,{class:"_padding-top:1 _display:flex"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:i(()=>[n(_,{size:"lg",class:q(["_width:100%",l.changesLocked?"":"clickable"]),color:t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).class,onClick:e[2]||(e[2]=w=>c.handleChargeModeClick(l.chargePointId))},{default:i(()=>[r(s(t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).label)+" ",1),n(I,{"fixed-width":"",icon:t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?["fas","fa-star"]:["far","fa-star"],class:q(t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?"_color:warning":"")},null,8,["icon","class"])]),_:1},8,["class","color"])]),_:1}),t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(l.chargePointId)?(d(),u(h,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:i(()=>[n(_,{size:"lg"},{default:i(()=>[t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(l.chargePointId)?(d(),u(I,{key:0,"fixed-width":"",icon:t.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(l.chargePointId)?["fas","fa-clock"]:["far","fa-clock"],class:q(t.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(l.chargePointId)?"_color:success":"")},null,8,["icon","class"])):m("",!0)]),_:1})]),_:1})):m("",!0)]),_:1}),l.changesLocked?m("",!0):(d(),u(b,{key:0,class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[n(y,{block:"",onClick:e[3]||(e[3]=w=>c.toggleChargePointSettings(l.chargePointId))},{default:i(()=>[n(I,{"fixed-width":"",icon:["fas","fa-wrench"]})]),_:1})]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})]),_:1})}const Ie=T(Se,[["render",be],["__scopeId","data-v-3c6489c4"]]);N.add(E,U,D,Z,R,j,O,J,K,G,H);const ve={name:"ChargePointCard",components:{DashBoardCard:z,ChargePointPlugBadge:W,ChargePointLockButton:Q,ChargePointCodeButton:X,FontAwesomeIcon:A},props:{chargePointId:{type:Number,required:!0},changesLocked:{type:Boolean,required:!0}},emits:["vehicle-click","soc-click","charge-mode-click","toggle-charge-point-settings","set-charge-point-connected-vehicle-charge-mode"],data(){return{mqttStore:B(),simpleChargeModes:["instant_charging","pv_charging","stop"]}},computed:{filteredChargeModes(){return this.mqttStore.getSimpleChargePointView?this.mqttStore.chargeModeList().filter(o=>this.simpleChargeModes.includes(o.id)):this.mqttStore.chargeModeList()}},methods:{handleVehicleClick(o){this.$emit("vehicle-click",o)},handleSocClick(o){this.$emit("soc-click",o)},handleChargeModeClick(o){this.$emit("charge-mode-click",o)},toggleChargePointSettings(o){this.$emit("toggle-charge-point-settings",o)},setChargePointConnectedVehicleChargeMode(o,e){this.$emit("set-charge-point-connected-vehicle-charge-mode",o,e)}}},ke={key:0};function pe(o,e,l,P,t,c){const f=g("charge-point-plug-badge"),V=g("charge-point-code-button"),C=g("charge-point-lock-button"),h=g("i-column"),b=g("i-row"),k=g("font-awesome-icon"),I=g("i-button"),_=g("i-button-group"),y=g("i-container"),v=g("dash-board-card");return d(),u(v,{color:"primary"},{headerLeft:i(()=>[r(s(t.mqttStore.getChargePointName(l.chargePointId)),1)]),headerRight:i(()=>[n(f,{"charge-point-id":[l.chargePointId]},null,8,["charge-point-id"])]),default:i(()=>[n(y,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[t.mqttStore.getRfidEnabled?(d(),u(V,{key:0,"charge-point-id":l.chargePointId},null,8,["charge-point-id"])):m("",!0),n(C,{"charge-point-id":l.chargePointId,"changes-locked":l.changesLocked},null,8,["charge-point-id","changes-locked"])]),_:1}),n(h,{class:"_text-align:right _padding-left:0"},{default:i(()=>[r(s(t.mqttStore.getChargePointPower(l.chargePointId))+" "+s(t.mqttStore.getChargePointPhasesInUse(l.chargePointId))+" "+s(t.mqttStore.getChargePointSetCurrent(l.chargePointId)),1)]),_:1})]),_:1}),n(b,{class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0 button-group-wrapper"},{default:i(()=>[n(_,{class:"button-group main-button-group"},{default:i(()=>[n(I,{class:q(["large-button _flex-grow:1",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:e[0]||(e[0]=p=>c.handleVehicleClick(l.chargePointId))},{default:i(()=>[n(k,{"fixed-width":"",icon:["fas","fa-car"]}),r(" "+s(t.mqttStore.getChargePointConnectedVehicleName(l.chargePointId))+" ",1),n(k,{class:q(["_padding-left:1",t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?"_color:warning":""]),"fixed-width":"",icon:t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?["fas","fa-star"]:["far","fa-star"]},null,8,["icon","class"])]),_:1},8,["class","disabled"]),t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))||t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(I,{key:0,class:q(["large-button _flex-grow:0",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:e[1]||(e[1]=p=>c.handleSocClick(l.chargePointId))},{default:i(()=>[t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?(d(),S("span",ke,[n(k,{"fixed-width":"",icon:t.mqttStore.getVehicleSocIsManual(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?["fas","fa-edit"]:["fas","fa-car-battery"]},null,8,["icon"]),r(" "+s(t.mqttStore.getChargePointConnectedVehicleSoc(l.chargePointId).soc)+"% ",1)])):m("",!0),t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(k,{key:1,"fixed-width":"",icon:t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?["fas","times-circle"]:["fas","exclamation-triangle"]:[],class:q(t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?"_color:danger":"_color:warning":"")},null,8,["icon","class"])):m("",!0)]),_:1},8,["disabled","class"])):m("",!0),n(I,{class:q(["large-button _flex-grow:0",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:e[2]||(e[2]=p=>c.toggleChargePointSettings(l.chargePointId))},{default:i(()=>[n(k,{"fixed-width":"",icon:["fas","fa-wrench"]})]),_:1},8,["class","disabled"])]),_:1}),n(_,{class:"button-group _margin-top:1",disabled:l.changesLocked},{default:i(()=>[(d(!0),S(x,null,L(c.filteredChargeModes,p=>(d(),u(I,{key:p.id,outline:"",class:q(["large-button _flex-grow:1",l.changesLocked?"":"clickable"]),color:p.class!="dark"?p.class:"light",active:t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId)!=null&&p.id==t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).mode,onClick:w=>c.setChargePointConnectedVehicleChargeMode(l.chargePointId,p.id)},{default:i(()=>[r(s(p.label),1)]),_:2},1032,["class","color","active","onClick"]))),128))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const qe=T(ve,[["render",pe],["__scopeId","data-v-5e676b1f"]]),ye={name:"ExtendedNumberInput",inheritAttrs:!1,props:{modelValue:{type:Number,required:!0,default:NaN},unit:{type:String,default:""},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array,default:void 0}},emits:["update:modelValue"],data(){return{minimum:this.labels?0:this.min,maximum:this.labels?this.labels.length-1:this.max,stepSize:this.labels?1:this.step}},computed:{label(){var o;return this.labels&&this.inputValue!=null?this.inputValue<this.labels.length?o=this.labels[this.inputValue].label:console.error("index out of bounds: "+this.inputValue):o=this.inputValue,typeof o=="number"&&(o=o.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision})),o},precision(){if(!isFinite(this.stepSize))return 0;for(var o=1,e=0;Math.round(this.stepSize*o)/o!==this.stepSize;)o*=10,e++;return e},inputValue:{get(){if(this.labels){var o=void 0;for(let e=0;e<this.labels.length;e++)if(this.labels[e].value==this.modelValue){o=e;break}return o===void 0&&this.modelValue!==void 0?(console.warn("inputValue: not found in values: ",this.modelValue,"using minimum as default: ",this.minimum),this.minimum):o}return this.modelValue},set(o){if(this.labels){var e=this.labels[o].value;this.$emit("update:modelValue",e)}else this.$emit("update:modelValue",o)}}},methods:{increment(){var o=Math.min(this.inputValue+this.stepSize,this.maximum);this.inputValue=Math.round(o*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var o=Math.max(this.inputValue-this.stepSize,this.minimum);this.inputValue=Math.round(o*Math.pow(10,this.precision))/Math.pow(10,this.precision)}}};function we(o,e,l,P,t,c){const f=g("i-button"),V=g("i-input");return d(),u(V,{modelValue:c.label,"onUpdate:modelValue":e[0]||(e[0]=C=>c.label=C),plaintext:"",class:"_text-align:right",size:"lg"},{prepend:i(()=>[n(f,{onClick:c.decrement},{default:i(()=>e[1]||(e[1]=[r(" - ")])),_:1},8,["onClick"])]),suffix:i(()=>[r(s(l.unit),1)]),append:i(()=>[n(f,{onClick:c.increment},{default:i(()=>e[2]||(e[2]=[r(" + ")])),_:1},8,["onClick"])]),_:1},8,["modelValue"])}const Y=T(ye,[["render",we]]),xe={name:"ManualSocInput",components:{ExtendedNumberInput:Y,NumberPad:ie},props:{modelValue:{required:!0,type:Boolean,default:!1},vehicleId:{required:!0,type:Number,default:0}},emits:["update:modelValue"],data(){return{mqttStore:B(),newSoc:0}},methods:{enter(o){let e=this.newSoc*10+parseInt(o);e>=0&&e<=100&&(this.newSoc=e)},removeDigit(){this.newSoc=Math.trunc(this.newSoc/10)},clear(){this.newSoc=0},close(){this.$emit("update:modelValue",!1),this.newSoc=0},updateManualSoc(){this.$root.sendTopicToBroker(`openWB/vehicle/${this.vehicleId}/soc_module/calculated_soc_state/manual_soc`,this.newSoc),this.close()}}};function Me(o,e,l,P,t,c){const f=g("extended-number-input"),V=g("i-column"),C=g("i-row"),h=g("NumberPad"),b=g("i-container"),k=g("i-button"),I=g("i-modal");return d(),u(se,{to:"body"},[n(I,{"model-value":l.modelValue,size:"sm","onUpdate:modelValue":e[6]||(e[6]=_=>o.$emit("update:modelValue",_))},{header:i(()=>[r(' SoC für Fahrzeug "'+s(t.mqttStore.getVehicleName(l.vehicleId))+'" ',1)]),footer:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,null,{default:i(()=>[n(k,{color:"danger",onClick:e[4]||(e[4]=_=>c.close())},{default:i(()=>e[7]||(e[7]=[r(" Zurück ")])),_:1})]),_:1}),n(V,{class:"_text-align:right"},{default:i(()=>[n(k,{color:"success",onClick:e[5]||(e[5]=_=>c.updateManualSoc())},{default:i(()=>e[8]||(e[8]=[r(" OK ")])),_:1})]),_:1})]),_:1})]),_:1})]),default:i(()=>[n(b,null,{default:i(()=>[n(C,{center:"",class:"_padding-bottom:1"},{default:i(()=>[n(V,null,{default:i(()=>[n(f,{modelValue:t.newSoc,"onUpdate:modelValue":e[0]||(e[0]=_=>t.newSoc=_),unit:"%",min:0,max:100,step:1,size:"lg",class:"_text-align:center"},null,8,["modelValue"])]),_:1})]),_:1}),n(h,{"onKey:digit":e[1]||(e[1]=_=>c.enter(_)),"onKey:clear":e[2]||(e[2]=_=>c.clear()),"onKey:delete":e[3]||(e[3]=_=>c.removeDigit())})]),_:1})]),_:1},8,["model-value"])])}const Te=T(xe,[["render",Me]]);N.add(ce,de,ge,he);const Le={name:"ChargePointsView",components:{ChargePointCard:Ie,SimpleChargePointCard:qe,ExtendedNumberInput:Y,ManualSocInput:Te,FontAwesomeIcon:A},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:B(),modalChargeModeSettingVisible:!1,modalVehicleSelectVisible:!1,modalChargePointSettingsVisible:!1,modalChargePointId:0,modalVehicleId:0,modalActiveTab:"tab-general",modalManualSocInputVisible:!1,simpleChargeModes:["instant_charging","pv_charging","stop"]}},computed:{vehicleList(){let o=this.mqttStore.getVehicleList;var e=[];return Object.keys(o).forEach(l=>{let P=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""));e.push({id:P,name:o[l]})}),e},filteredChargeModes(){return this.mqttStore.getSimpleChargePointView?this.mqttStore.chargeModeList().filter(o=>this.simpleChargeModes.includes(o.id)):this.mqttStore.chargeModeList()}},watch:{changesLocked(o,e){e!==!0&&o===!0&&(this.modalChargeModeSettingVisible=!1,this.modalVehicleSelectVisible=!1,this.modalChargePointSettingsVisible=!1,this.modalManualSocInputVisible=!1)}},methods:{toggleChargePointSettings(o){switch(this.mqttStore.getChargePointConnectedVehicleChargeMode(o).mode){case"pv_charging":this.modalActiveTab="tab-pv-charging";break;case"scheduled_charging":this.modalActiveTab="tab-scheduled-charging";break;default:this.modalActiveTab="tab-instant-charging"}this.modalChargePointId=o,this.modalChargePointSettingsVisible=!0},handleChargeModeClick(o){this.changesLocked||(this.modalChargePointId=o,this.modalChargeModeSettingVisible=!0)},handleVehicleClick(o){this.changesLocked||(this.modalChargePointId=o,this.modalVehicleSelectVisible=!0)},handleSocClick(o){let e=this.mqttStore.getChargePointConnectedVehicleId(o);if(this.mqttStore.getVehicleSocIsManual(e)){this.modalVehicleId=e,this.modalManualSocInputVisible=!0;return}this.$root.sendTopicToBroker(`openWB/set/vehicle/${e}/get/force_soc_update`,1)},setChargePointConnectedVehicle(o,e){e.id!=this.mqttStore.getChargePointConnectedVehicleId(o)&&this.$root.sendTopicToBroker(`openWB/chargepoint/${o}/config/ev`,e.id),this.modalVehicleSelectVisible&&(this.modalVehicleSelectVisible=!1)},setChargePointConnectedVehicleChargeMode(o,e){if(e.id!=this.mqttStore.getChargePointConnectedVehicleChargeMode(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/selected`,e)}},setChargePointConnectedVehiclePriority(o,e){if(e!=this.mqttStore.getChargePointConnectedVehiclePriority(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/prio`,e)}},setChargePointConnectedVehicleTimeChargingActive(o,e){if(e!=this.mqttStore.getChargePointConnectedVehicleTimeChargingActive(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/time_charging/active`,e)}},setChargePointConnectedVehicleInstantChargingCurrent(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/current`,parseFloat(e))}},setChargePointConnectedVehicleInstantChargingLimit(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).selected){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/selected`,e)}},setChargePointConnectedVehicleInstantChargingLimitSoc(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).soc){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/soc`,parseInt(e))}},setChargePointConnectedVehicleInstantChargingLimitAmount(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).amount){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/amount`,e)}},setChargePointConnectedVehiclePvChargingFeedInLimit(o,e){if(e!=this.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/feed_in_limit`,e)}},setChargePointConnectedVehiclePvChargingMinCurrent(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/min_current`,P)}},setChargePointConnectedVehiclePvChargingMinSoc(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/min_soc`,P)}},setChargePointConnectedVehiclePvChargingMinSocCurrent(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/min_soc_current`,P)}},setChargePointConnectedVehiclePvChargingMaxSoc(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/max_soc`,P)}},setChargePointConnectedVehicleScheduledChargingPlanActive(o,e){this.$root.sendTopicToBroker(`${o}/active`,e)},setChargePointConnectedVehicleTimeChargingPlanActive(o,e){this.$root.sendTopicToBroker(`${o}/active`,e)}}},Be={class:"charge-points-card-wrapper"},Ne={key:0},Ae={key:1},Fe={key:2},ze={key:3},We={key:4},Ee={key:0},Ue={key:1},De={key:0},Ze={key:1},Re={key:2},je={key:3},Oe={key:4};function Je(o,e,l,P,t,c){const f=g("i-button"),V=g("i-button-group"),C=g("i-form-group"),h=g("i-form-label"),b=g("i-form"),k=g("i-modal"),I=g("i-tab-title"),_=g("extended-number-input"),y=g("i-tab"),v=g("font-awesome-icon"),p=g("i-alert"),w=g("i-row"),F=g("i-container"),$=g("i-tabs"),ee=g("manual-soc-input");return d(),S(x,null,[ue("div",Be,[(d(!0),S(x,null,L(t.mqttStore.getChargePointIds,a=>(d(),u(me(t.mqttStore.getSimpleChargePointView?"SimpleChargePointCard":"ChargePointCard"),{key:a,"charge-point-id":a,"changes-locked":l.changesLocked,onVehicleClick:c.handleVehicleClick,onSocClick:c.handleSocClick,onChargeModeClick:c.handleChargeModeClick,onToggleChargePointSettings:c.toggleChargePointSettings,onSetChargePointConnectedVehicleChargeMode:c.setChargePointConnectedVehicleChargeMode},null,40,["charge-point-id","changes-locked","onVehicleClick","onSocClick","onChargeModeClick","onToggleChargePointSettings","onSetChargePointConnectedVehicleChargeMode"]))),128))]),n(k,{modelValue:t.modalChargeModeSettingVisible,"onUpdate:modelValue":e[2]||(e[2]=a=>t.modalChargeModeSettingVisible=a),size:"lg"},{header:i(()=>[r(' Lademodus für "'+s(t.mqttStore.getChargePointConnectedVehicleName(t.modalChargePointId))+'" auswählen ',1)]),default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,{block:"",vertical:""},{default:i(()=>[(d(!0),S(x,null,L(c.filteredChargeModes,a=>(d(),u(f,{key:a.id,size:"lg",class:"large-button",outline:"",color:a.class!="dark"?a.class:"light",active:t.mqttStore.getChargePointConnectedVehicleChargeMode(t.modalChargePointId)!=null&&a.id==t.mqttStore.getChargePointConnectedVehicleChargeMode(t.modalChargePointId).mode,onClick:M=>c.setChargePointConnectedVehicleChargeMode(t.modalChargePointId,a.id)},{default:i(()=>[r(s(a.label),1)]),_:2},1032,["color","active","onClick"]))),128))]),_:1})]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[21]||(e[21]=[r("Priorität")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{size:"lg",class:"large-button",color:t.mqttStore.getChargePointConnectedVehiclePriority(t.modalChargePointId)!==!0?"danger":"",onClick:e[0]||(e[0]=a=>c.setChargePointConnectedVehiclePriority(t.modalChargePointId,!1))},{default:i(()=>e[22]||(e[22]=[r(" Nein ")])),_:1},8,["color"]),n(f,{color:t.mqttStore.getChargePointConnectedVehiclePriority(t.modalChargePointId)===!0?"success":"",onClick:e[1]||(e[1]=a=>c.setChargePointConnectedVehiclePriority(t.modalChargePointId,!0))},{default:i(()=>e[23]||(e[23]=[r(" Ja ")])),_:1},8,["color"])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(k,{modelValue:t.modalVehicleSelectVisible,"onUpdate:modelValue":e[3]||(e[3]=a=>t.modalVehicleSelectVisible=a),class:"modal-vehicle-select",size:"lg"},{header:i(()=>[r(' Fahrzeug an "'+s(t.mqttStore.getChargePointName(t.modalChargePointId))+'" auswählen ',1)]),default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,{vertical:"",block:""},{default:i(()=>[(d(!0),S(x,null,L(c.vehicleList,a=>(d(),u(f,{key:a.id,size:"lg",class:"large-button",active:t.mqttStore.getChargePointConnectedVehicleId(t.modalChargePointId)==a.id,color:t.mqttStore.getChargePointConnectedVehicleId(t.modalChargePointId)==a.id?"primary":"",onClick:M=>c.setChargePointConnectedVehicle(t.modalChargePointId,a)},{default:i(()=>[r(s(a.name),1)]),_:2},1032,["active","color","onClick"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(k,{modelValue:t.modalChargePointSettingsVisible,"onUpdate:modelValue":e[19]||(e[19]=a=>t.modalChargePointSettingsVisible=a),size:"lg"},{header:i(()=>[r(' Einstellungen für Fahrzeug "'+s(t.mqttStore.getChargePointConnectedVehicleName(t.modalChargePointId))+'" ',1)]),default:i(()=>[n($,{modelValue:t.modalActiveTab,"onUpdate:modelValue":e[18]||(e[18]=a=>t.modalActiveTab=a),stretch:""},{header:i(()=>[n(I,{for:"tab-instant-charging"},{default:i(()=>e[24]||(e[24]=[r(" Sofort ")])),_:1}),n(I,{for:"tab-pv-charging"},{default:i(()=>e[25]||(e[25]=[r(" PV ")])),_:1}),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(I,{key:0,for:"tab-scheduled-charging"},{default:i(()=>e[26]||(e[26]=[r(" Zielladen ")])),_:1})),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(I,{key:1,for:"tab-time-charging"},{default:i(()=>e[27]||(e[27]=[r(" Zeitladen ")])),_:1}))]),default:i(()=>[n(y,{name:"tab-instant-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[28]||(e[28]=[r("Stromstärke")])),_:1}),n(_,{unit:"A",min:6,max:32,"model-value":t.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(t.modalChargePointId),"onUpdate:modelValue":e[4]||(e[4]=a=>c.setChargePointConnectedVehicleInstantChargingCurrent(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[29]||(e[29]=[r("Begrenzung")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="none"?"primary":"",active:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="none",onClick:e[5]||(e[5]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId,"none"))},{default:i(()=>e[30]||(e[30]=[r(" Keine ")])),_:1},8,["color","active"]),n(f,{color:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="soc"?"primary":"",active:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="soc",onClick:e[6]||(e[6]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId,"soc"))},{default:i(()=>e[31]||(e[31]=[r(" EV-SoC ")])),_:1},8,["color","active"]),n(f,{color:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="amount"?"primary":"",active:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="amount",onClick:e[7]||(e[7]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId,"amount"))},{default:i(()=>e[32]||(e[32]=[r(" Energie ")])),_:1},8,["color","active"])]),_:1})]),_:1}),t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="soc"?(d(),u(C,{key:0},{default:i(()=>[n(h,null,{default:i(()=>e[33]||(e[33]=[r("Max. SoC")])),_:1}),n(_,{unit:"%",min:5,max:100,step:5,"model-value":t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).soc,"onUpdate:modelValue":e[8]||(e[8]=a=>c.setChargePointConnectedVehicleInstantChargingLimitSoc(t.modalChargePointId,a))},null,8,["model-value"])]),_:1})):m("",!0),t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="amount"?(d(),u(C,{key:1},{default:i(()=>[n(h,null,{default:i(()=>e[34]||(e[34]=[r("Max. Energie")])),_:1}),n(_,{unit:"kWh",min:1,max:100,"model-value":t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).amount/1e3,"onUpdate:modelValue":e[9]||(e[9]=a=>c.setChargePointConnectedVehicleInstantChargingLimitAmount(t.modalChargePointId,a*1e3))},null,8,["model-value"])]),_:1})):m("",!0)]),_:1})]),_:1}),n(y,{name:"tab-pv-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[35]||(e[35]=[r("Einspeisegrenze beachten")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:t.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId)!==!0?"danger":"",onClick:e[10]||(e[10]=a=>c.setChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId,!1))},{default:i(()=>e[36]||(e[36]=[r(" Nein ")])),_:1},8,["color"]),n(f,{color:t.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId)===!0?"success":"",onClick:e[11]||(e[11]=a=>c.setChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId,!0))},{default:i(()=>e[37]||(e[37]=[r(" Ja ")])),_:1},8,["color"])]),_:1})]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[38]||(e[38]=[r("Minimaler Dauerstrom")])),_:1}),n(_,{unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(t.modalChargePointId),"onUpdate:modelValue":e[12]||(e[12]=a=>c.setChargePointConnectedVehiclePvChargingMinCurrent(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[39]||(e[39]=[r("Mindest-SoC")])),_:1}),n(_,{unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(t.modalChargePointId),"onUpdate:modelValue":e[13]||(e[13]=a=>c.setChargePointConnectedVehiclePvChargingMinSoc(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[40]||(e[40]=[r("Mindest-SoC Strom")])),_:1}),n(_,{min:6,max:32,unit:"A","model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(t.modalChargePointId),"onUpdate:modelValue":e[14]||(e[14]=a=>c.setChargePointConnectedVehiclePvChargingMinSocCurrent(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[41]||(e[41]=[r("SoC-Limit")])),_:1}),n(_,{unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(t.modalChargePointId),"onUpdate:modelValue":e[15]||(e[15]=a=>c.setChargePointConnectedVehiclePvChargingMaxSoc(t.modalChargePointId,a))},null,8,["model-value"])]),_:1})]),_:1})]),_:1}),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(y,{key:0,name:"tab-scheduled-charging"},{default:i(()=>[Object.keys(t.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(t.modalChargePointId)).length===0?(d(),u(p,{key:0},{icon:i(()=>[n(v,{"fixed-width":"",icon:["fas","fa-info-circle"]})]),default:i(()=>[e[42]||(e[42]=r(" Es wurden noch keine Zeitpläne für das Zielladen eingerichtet. "))]),_:1})):(d(),u(b,{key:1},{default:i(()=>[(d(!0),S(x,null,L(t.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(t.modalChargePointId),(a,M)=>(d(),u(C,{key:M},{default:i(()=>[n(F,null,{default:i(()=>[n(w,null,{default:i(()=>[n(h,null,{default:i(()=>[r(s(a.name),1)]),_:2},1024)]),_:2},1024),n(w,null,{default:i(()=>[n(f,{size:"lg",block:"",color:a.active?"success":"danger",onClick:te=>c.setChargePointConnectedVehicleScheduledChargingPlanActive(M,!a.active)},{default:i(()=>[a.frequency.selected=="once"?(d(),S("span",Ne,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+s(t.mqttStore.formatDate(a.frequency.once)),1)])):m("",!0),a.frequency.selected=="daily"?(d(),S("span",Ae,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]}),e[43]||(e[43]=r(" täglich "))])):m("",!0),a.frequency.selected=="weekly"?(d(),S("span",Fe,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]}),r(" "+s(t.mqttStore.formatWeeklyScheduleDays(a.frequency.weekly)),1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),r(" "+s(a.time)+" ",1),a.limit.selected=="soc"?(d(),S("span",ze,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+s(a.limit.soc_scheduled)+" % ",1)])):m("",!0),a.limit.selected=="amount"?(d(),S("span",We,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),r(" "+s(a.limit.amount/1e3)+" kWh ",1)])):m("",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}))]),_:1})),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(y,{key:1,name:"tab-time-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[44]||(e[44]=[r("Zeitladen aktivieren")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId)!==!0?"danger":"",onClick:e[16]||(e[16]=a=>c.setChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId,!1))},{default:i(()=>e[45]||(e[45]=[r(" Nein ")])),_:1},8,["color"]),n(f,{color:t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId)===!0?"success":"",onClick:e[17]||(e[17]=a=>c.setChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId,!0))},{default:i(()=>e[46]||(e[46]=[r(" Ja ")])),_:1},8,["color"])]),_:1})]),_:1}),t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId)===!0?(d(),S("div",Ee,[Object.keys(t.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(t.modalChargePointId)).length===0?(d(),u(p,{key:0,color:"warning",class:"_margin-top:2"},{icon:i(()=>[n(v,{"fixed-width":"",icon:["fas","fa-circle-info"]})]),default:i(()=>[e[47]||(e[47]=r(" Es wurden noch keine Zeitpläne für das Zeitladen eingerichtet. "))]),_:1})):(d(),S("div",Ue,[(d(!0),S(x,null,L(t.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(t.modalChargePointId),(a,M)=>(d(),u(C,{key:M},{default:i(()=>[n(F,null,{default:i(()=>[n(w,null,{default:i(()=>[n(h,null,{default:i(()=>[r(s(a.name),1)]),_:2},1024)]),_:2},1024),n(w,null,{default:i(()=>[n(f,{size:"lg",block:"",color:a.active?"success":"danger",onClick:te=>c.setChargePointConnectedVehicleTimeChargingPlanActive(M,!a.active)},{default:i(()=>[a.frequency.selected=="once"?(d(),S("span",De,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+s(t.mqttStore.formatDateRange(a.frequency.once)),1)])):m("",!0),a.frequency.selected=="daily"?(d(),S("span",Ze,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]}),e[48]||(e[48]=r(" täglich "))])):m("",!0),a.frequency.selected=="weekly"?(d(),S("span",Re,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]}),r(" "+s(t.mqttStore.formatWeeklyScheduleDays(a.frequency.weekly)),1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),r(" "+s(a.time.join("-"))+" ",1),a.limit.selected=="soc"?(d(),S("span",je,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+s(a.limit.soc)+" % ",1)])):m("",!0),a.limit.selected=="amount"?(d(),S("span",Oe,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),r(" "+s(a.limit.amount/1e3)+" kWh ",1)])):m("",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]))])):m("",!0)]),_:1})]),_:1}))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"]),n(ee,{modelValue:t.modalManualSocInputVisible,"onUpdate:modelValue":e[20]||(e[20]=a=>t.modalManualSocInputVisible=a),"vehicle-id":t.modalVehicleId},null,8,["modelValue","vehicle-id"])],64)}const $e=T(Le,[["render",Je],["__scopeId","data-v-76699ceb"]]);export{$e as default};
+import{u as B,C as ne,N as ie}from"./index-CtySFcBa.js";import{D as z}from"./DashBoardCard-BterAPyf.js";import{S as oe,C as W}from"./ChargePointPlugBadge-Bsi0zWop.js";import{l as N,b as le,c as ae,F as A,j as re,k as E,m as U,e as D,n as Z,o as R,p as j,q as O,r as J,s as K,t as G,u as H,v as ce,w as de,x as ge,y as he}from"./vendor-fortawesome-C68yAli-.js";import{_ as T}from"./vendor-inkline-Ce5aFAnW.js";import{q as g,o as d,l as u,n as i,s as n,y as q,e as S,k as r,F as x,x as s,i as m,A as L,I as se,j as ue,p as me}from"./vendor-CZ1MGz7j.js";N.add(le,ae);const Ce={name:"ChargePointLockButton",components:{FontAwesomeIcon:A},props:{chargePointId:{required:!0,type:Number},changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:B()}},computed:{locked(){return this.mqttStore.getChargePointManualLock(this.chargePointId)},stateIcon(){return this.locked?["fas","fa-lock"]:["fas","fa-lock-open"]},stateClass(){return this.locked?["_color:danger"]:"_color:success"}},methods:{toggleChargePointManualLock(){this.changesLocked||this.$root.sendTopicToBroker(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`,!this.mqttStore.getValueBool(`openWB/chargepoint/${this.chargePointId}/set/manual_lock`))}}};function fe(o,e,l,P,t,c){const f=g("font-awesome-icon"),V=g("i-button");return d(),u(V,{size:"lg",disabled:l.changesLocked,outline:l.changesLocked},{default:i(()=>[n(f,{"fixed-width":"",icon:c.stateIcon,class:q(c.stateClass),onClick:e[0]||(e[0]=C=>c.toggleChargePointManualLock())},null,8,["icon","class"])]),_:1},8,["disabled","outline"])}const Q=T(Ce,[["render",fe]]);N.add(re);const Pe={name:"ChargePointCodeButton",components:{FontAwesomeIcon:A,CodeInputModal:ne},props:{chargePointId:{type:Number,required:!0}},data(){return{mqttStore:B(),modalIdTagEntryVisible:!1,modalIdTagEntryColor:"warning",code:""}},computed:{tagState(){return this.mqttStore.getChargepointTagState(this.chargePointId)},tagButtonColor(){switch(this.tagState){case 2:return"success";case 1:return"warning";default:return""}},tagClass(){switch(this.tagState){case 2:return"_color:success-80";case 1:return"_color:warning-80";default:return""}}},methods:{toggleIdTagModal(){this.modalIdTagEntryVisible=!this.modalIdTagEntryVisible},sendIdTag(o){this.$root.sendTopicToBroker(`openWB/chargepoint/${this.chargePointId}/get/rfid`,o),this.modalIdTagEntryVisible=!1}}};function _e(o,e,l,P,t,c){const f=g("FontAwesomeIcon"),V=g("i-button"),C=g("CodeInputModal");return d(),S(x,null,[n(V,{class:"_margin-right:1",size:"lg",color:c.tagButtonColor,disabled:c.tagState==2,onClick:e[0]||(e[0]=h=>c.toggleIdTagModal())},{default:i(()=>[n(f,{"fixed-width":"",icon:["fas","fa-calculator"],class:q(c.tagClass)},null,8,["class"])]),_:1},8,["color","disabled"]),n(C,{ref:"lockInput",modelValue:t.modalIdTagEntryVisible,"onUpdate:modelValue":e[1]||(e[1]=h=>t.modalIdTagEntryVisible=h),"min-length":4,"max-length":20,"onUpdate:inputValue":c.sendIdTag},{header:i(()=>e[2]||(e[2]=[r(" Bitte einen ID-Tag eingeben. ")])),_:1},8,["modelValue","onUpdate:inputValue"])],64)}const X=T(Pe,[["render",_e]]);N.add(E,U,D,Z,R,j,O,J,K,G,H);const Se={name:"ChargePointCard",components:{DashBoardCard:z,SparkLine:oe,ChargePointPlugBadge:W,ChargePointLockButton:Q,ChargePointCodeButton:X,FontAwesomeIcon:A},props:{chargePointId:{type:Number,required:!0},changesLocked:{type:Boolean,required:!0}},emits:["vehicle-click","soc-click","charge-mode-click","toggle-charge-point-settings"],data(){return{mqttStore:B()}},methods:{handleVehicleClick(o){this.$emit("vehicle-click",o)},handleSocClick(o){this.$emit("soc-click",o)},handleChargeModeClick(o){this.$emit("charge-mode-click",o)},toggleChargePointSettings(o){this.$emit("toggle-charge-point-settings",o)}}},Ve={key:0};function be(o,e,l,P,t,c){const f=g("charge-point-plug-badge"),V=g("charge-point-code-button"),C=g("charge-point-lock-button"),h=g("i-column"),b=g("i-row"),k=g("spark-line"),I=g("font-awesome-icon"),_=g("i-badge"),y=g("i-button"),v=g("i-container"),p=g("dash-board-card");return d(),u(p,{color:"primary"},{headerLeft:i(()=>[r(s(t.mqttStore.getChargePointName(l.chargePointId)),1)]),headerRight:i(()=>[n(f,{"charge-point-id":[l.chargePointId]},null,8,["charge-point-id"])]),default:i(()=>[n(v,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[t.mqttStore.getRfidEnabled?(d(),u(V,{key:0,"charge-point-id":l.chargePointId},null,8,["charge-point-id"])):m("",!0),n(C,{"charge-point-id":l.chargePointId,"changes-locked":l.changesLocked},null,8,["charge-point-id","changes-locked"])]),_:1}),n(h,{class:"_text-align:right _padding-left:0"},{default:i(()=>[r(s(t.mqttStore.getChargePointPower(l.chargePointId))+" "+s(t.mqttStore.getChargePointPhasesInUse(l.chargePointId))+" "+s(t.mqttStore.getChargePointSetCurrent(l.chargePointId)),1)]),_:1})]),_:1}),n(b,{class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0"},{default:i(()=>[n(k,{color:"var(--color--primary)",data:t.mqttStore.getChargePointPowerChartData(l.chargePointId)},null,8,["data"])]),_:1})]),_:1})]),_:1}),n(h,{md:"6"},{default:i(()=>[n(b,{class:"_display:flex"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:i(()=>[n(_,{size:"lg",class:q(["_width:100%",l.changesLocked?"":"clickable"]),onClick:e[0]||(e[0]=w=>c.handleVehicleClick(l.chargePointId))},{default:i(()=>[n(I,{"fixed-width":"",icon:["fas","fa-car"]}),r(" "+s(t.mqttStore.getChargePointConnectedVehicleName(l.chargePointId)),1)]),_:1},8,["class"])]),_:1}),t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))||t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(h,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:i(()=>[n(y,{size:"sm",disabled:l.changesLocked,class:q(l.changesLocked?"":"clickable"),onClick:e[1]||(e[1]=w=>c.handleSocClick(l.chargePointId))},{default:i(()=>[t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?(d(),S("span",Ve,[n(I,{"fixed-width":"",icon:t.mqttStore.getVehicleSocIsManual(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?["fas","fa-edit"]:["fas","fa-car-battery"]},null,8,["icon"]),r(" "+s(t.mqttStore.getChargePointConnectedVehicleSoc(l.chargePointId).soc)+"% ",1)])):m("",!0),t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(I,{key:1,"fixed-width":"",icon:t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?["fas","times-circle"]:["fas","exclamation-triangle"]:[],class:q(t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?"_color:danger":"_color:warning":"")},null,8,["icon","class"])):m("",!0)]),_:1},8,["disabled","class"])]),_:1})):m("",!0)]),_:1}),n(b,{class:"_padding-top:1 _display:flex"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0 _flex-grow:1"},{default:i(()=>[n(_,{size:"lg",class:q(["_width:100%",l.changesLocked?"":"clickable"]),color:t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).class,onClick:e[2]||(e[2]=w=>c.handleChargeModeClick(l.chargePointId))},{default:i(()=>[r(s(t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).label)+" ",1),n(I,{"fixed-width":"",icon:t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?["fas","fa-star"]:["far","fa-star"],class:q(t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?"_color:warning":"")},null,8,["icon","class"])]),_:1},8,["class","color"])]),_:1}),t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(l.chargePointId)?(d(),u(h,{key:0,class:"_flex-grow:0 _padding-right:0 _padding-left:1"},{default:i(()=>[n(_,{size:"lg"},{default:i(()=>[t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(l.chargePointId)?(d(),u(I,{key:0,"fixed-width":"",icon:t.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(l.chargePointId)?["fas","fa-clock"]:["far","fa-clock"],class:q(t.mqttStore.getChargePointConnectedVehicleTimeChargingRunning(l.chargePointId)?"_color:success":"")},null,8,["icon","class"])):m("",!0)]),_:1})]),_:1})):m("",!0)]),_:1}),l.changesLocked?m("",!0):(d(),u(b,{key:0,class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[n(y,{block:"",onClick:e[3]||(e[3]=w=>c.toggleChargePointSettings(l.chargePointId))},{default:i(()=>[n(I,{"fixed-width":"",icon:["fas","fa-wrench"]})]),_:1})]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})]),_:1})}const Ie=T(Se,[["render",be],["__scopeId","data-v-3c6489c4"]]);N.add(E,U,D,Z,R,j,O,J,K,G,H);const ve={name:"ChargePointCard",components:{DashBoardCard:z,ChargePointPlugBadge:W,ChargePointLockButton:Q,ChargePointCodeButton:X,FontAwesomeIcon:A},props:{chargePointId:{type:Number,required:!0},changesLocked:{type:Boolean,required:!0}},emits:["vehicle-click","soc-click","charge-mode-click","toggle-charge-point-settings","set-charge-point-connected-vehicle-charge-mode"],data(){return{mqttStore:B(),simpleChargeModes:["instant_charging","pv_charging","stop"]}},computed:{filteredChargeModes(){return this.mqttStore.getSimpleChargePointView?this.mqttStore.chargeModeList().filter(o=>this.simpleChargeModes.includes(o.id)):this.mqttStore.chargeModeList()}},methods:{handleVehicleClick(o){this.$emit("vehicle-click",o)},handleSocClick(o){this.$emit("soc-click",o)},handleChargeModeClick(o){this.$emit("charge-mode-click",o)},toggleChargePointSettings(o){this.$emit("toggle-charge-point-settings",o)},setChargePointConnectedVehicleChargeMode(o,e){this.$emit("set-charge-point-connected-vehicle-charge-mode",o,e)}}},ke={key:0};function pe(o,e,l,P,t,c){const f=g("charge-point-plug-badge"),V=g("charge-point-code-button"),C=g("charge-point-lock-button"),h=g("i-column"),b=g("i-row"),k=g("font-awesome-icon"),I=g("i-button"),_=g("i-button-group"),y=g("i-container"),v=g("dash-board-card");return d(),u(v,{color:"primary"},{headerLeft:i(()=>[r(s(t.mqttStore.getChargePointName(l.chargePointId)),1)]),headerRight:i(()=>[n(f,{"charge-point-id":[l.chargePointId]},null,8,["charge-point-id"])]),default:i(()=>[n(y,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,null,{default:i(()=>[n(b,null,{default:i(()=>[n(h,{class:"_padding-left:0 _padding-right:0"},{default:i(()=>[t.mqttStore.getRfidEnabled?(d(),u(V,{key:0,"charge-point-id":l.chargePointId},null,8,["charge-point-id"])):m("",!0),n(C,{"charge-point-id":l.chargePointId,"changes-locked":l.changesLocked},null,8,["charge-point-id","changes-locked"])]),_:1}),n(h,{class:"_text-align:right _padding-left:0"},{default:i(()=>[r(s(t.mqttStore.getChargePointPower(l.chargePointId))+" "+s(t.mqttStore.getChargePointPhasesInUse(l.chargePointId))+" "+s(t.mqttStore.getChargePointSetCurrent(l.chargePointId)),1)]),_:1})]),_:1}),n(b,{class:"_padding-top:1"},{default:i(()=>[n(h,{class:"_padding-left:0 button-group-wrapper"},{default:i(()=>[n(_,{class:"button-group main-button-group"},{default:i(()=>[n(I,{class:q(["large-button _flex-grow:1",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:e[0]||(e[0]=p=>c.handleVehicleClick(l.chargePointId))},{default:i(()=>[n(k,{"fixed-width":"",icon:["fas","fa-car"]}),r(" "+s(t.mqttStore.getChargePointConnectedVehicleName(l.chargePointId))+" ",1),n(k,{class:q(["_padding-left:1",t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?"_color:warning":""]),"fixed-width":"",icon:t.mqttStore.getChargePointConnectedVehiclePriority(l.chargePointId)?["fas","fa-star"]:["far","fa-star"]},null,8,["icon","class"])]),_:1},8,["class","disabled"]),t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))||t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(I,{key:0,class:q(["large-button _flex-grow:0",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:e[1]||(e[1]=p=>c.handleSocClick(l.chargePointId))},{default:i(()=>[t.mqttStore.getVehicleSocConfigured(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?(d(),S("span",ke,[n(k,{"fixed-width":"",icon:t.mqttStore.getVehicleSocIsManual(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))?["fas","fa-edit"]:["fas","fa-car-battery"]},null,8,["icon"]),r(" "+s(t.mqttStore.getChargePointConnectedVehicleSoc(l.chargePointId).soc)+"% ",1)])):m("",!0),t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))!=0?(d(),u(k,{key:1,"fixed-width":"",icon:t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?["fas","times-circle"]:["fas","exclamation-triangle"]:[],class:q(t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>0?t.mqttStore.getVehicleFaultState(t.mqttStore.getChargePointConnectedVehicleId(l.chargePointId))>1?"_color:danger":"_color:warning":"")},null,8,["icon","class"])):m("",!0)]),_:1},8,["disabled","class"])):m("",!0),n(I,{class:q(["large-button _flex-grow:0",l.changesLocked?"":"clickable"]),disabled:l.changesLocked,onClick:e[2]||(e[2]=p=>c.toggleChargePointSettings(l.chargePointId))},{default:i(()=>[n(k,{"fixed-width":"",icon:["fas","fa-wrench"]})]),_:1},8,["class","disabled"])]),_:1}),n(_,{class:"button-group _margin-top:1",disabled:l.changesLocked},{default:i(()=>[(d(!0),S(x,null,L(c.filteredChargeModes,p=>(d(),u(I,{key:p.id,outline:"",class:q(["large-button _flex-grow:1",l.changesLocked?"":"clickable"]),color:p.class!="dark"?p.class:"light",active:t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId)!=null&&p.id==t.mqttStore.getChargePointConnectedVehicleChargeMode(l.chargePointId).mode,onClick:w=>c.setChargePointConnectedVehicleChargeMode(l.chargePointId,p.id)},{default:i(()=>[r(s(p.label),1)]),_:2},1032,["class","color","active","onClick"]))),128))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const qe=T(ve,[["render",pe],["__scopeId","data-v-5e676b1f"]]),ye={name:"ExtendedNumberInput",inheritAttrs:!1,props:{modelValue:{type:Number,required:!0,default:NaN},unit:{type:String,default:""},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},labels:{type:Array,default:void 0}},emits:["update:modelValue"],data(){return{minimum:this.labels?0:this.min,maximum:this.labels?this.labels.length-1:this.max,stepSize:this.labels?1:this.step}},computed:{label(){var o;return this.labels&&this.inputValue!=null?this.inputValue<this.labels.length?o=this.labels[this.inputValue].label:console.error("index out of bounds: "+this.inputValue):o=this.inputValue,typeof o=="number"&&(o=o.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision})),o},precision(){if(!isFinite(this.stepSize))return 0;for(var o=1,e=0;Math.round(this.stepSize*o)/o!==this.stepSize;)o*=10,e++;return e},inputValue:{get(){if(this.labels){var o=void 0;for(let e=0;e<this.labels.length;e++)if(this.labels[e].value==this.modelValue){o=e;break}return o===void 0&&this.modelValue!==void 0?(console.warn("inputValue: not found in values: ",this.modelValue,"using minimum as default: ",this.minimum),this.minimum):o}return this.modelValue},set(o){if(this.labels){var e=this.labels[o].value;this.$emit("update:modelValue",e)}else this.$emit("update:modelValue",o)}}},methods:{increment(){var o=Math.min(this.inputValue+this.stepSize,this.maximum);this.inputValue=Math.round(o*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var o=Math.max(this.inputValue-this.stepSize,this.minimum);this.inputValue=Math.round(o*Math.pow(10,this.precision))/Math.pow(10,this.precision)}}};function we(o,e,l,P,t,c){const f=g("i-button"),V=g("i-input");return d(),u(V,{modelValue:c.label,"onUpdate:modelValue":e[0]||(e[0]=C=>c.label=C),plaintext:"",class:"_text-align:right",size:"lg"},{prepend:i(()=>[n(f,{onClick:c.decrement},{default:i(()=>e[1]||(e[1]=[r(" - ")])),_:1},8,["onClick"])]),suffix:i(()=>[r(s(l.unit),1)]),append:i(()=>[n(f,{onClick:c.increment},{default:i(()=>e[2]||(e[2]=[r(" + ")])),_:1},8,["onClick"])]),_:1},8,["modelValue"])}const Y=T(ye,[["render",we]]),xe={name:"ManualSocInput",components:{ExtendedNumberInput:Y,NumberPad:ie},props:{modelValue:{required:!0,type:Boolean,default:!1},vehicleId:{required:!0,type:Number,default:0}},emits:["update:modelValue"],data(){return{mqttStore:B(),newSoc:0}},methods:{enter(o){let e=this.newSoc*10+parseInt(o);e>=0&&e<=100&&(this.newSoc=e)},removeDigit(){this.newSoc=Math.trunc(this.newSoc/10)},clear(){this.newSoc=0},close(){this.$emit("update:modelValue",!1),this.newSoc=0},updateManualSoc(){this.$root.sendTopicToBroker(`openWB/vehicle/${this.vehicleId}/soc_module/calculated_soc_state/manual_soc`,this.newSoc),this.close()}}};function Me(o,e,l,P,t,c){const f=g("extended-number-input"),V=g("i-column"),C=g("i-row"),h=g("NumberPad"),b=g("i-container"),k=g("i-button"),I=g("i-modal");return d(),u(se,{to:"body"},[n(I,{"model-value":l.modelValue,size:"sm","onUpdate:modelValue":e[6]||(e[6]=_=>o.$emit("update:modelValue",_))},{header:i(()=>[r(' SoC für Fahrzeug "'+s(t.mqttStore.getVehicleName(l.vehicleId))+'" ',1)]),footer:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,null,{default:i(()=>[n(k,{color:"danger",onClick:e[4]||(e[4]=_=>c.close())},{default:i(()=>e[7]||(e[7]=[r(" Zurück ")])),_:1})]),_:1}),n(V,{class:"_text-align:right"},{default:i(()=>[n(k,{color:"success",onClick:e[5]||(e[5]=_=>c.updateManualSoc())},{default:i(()=>e[8]||(e[8]=[r(" OK ")])),_:1})]),_:1})]),_:1})]),_:1})]),default:i(()=>[n(b,null,{default:i(()=>[n(C,{center:"",class:"_padding-bottom:1"},{default:i(()=>[n(V,null,{default:i(()=>[n(f,{modelValue:t.newSoc,"onUpdate:modelValue":e[0]||(e[0]=_=>t.newSoc=_),unit:"%",min:0,max:100,step:1,size:"lg",class:"_text-align:center"},null,8,["modelValue"])]),_:1})]),_:1}),n(h,{"onKey:digit":e[1]||(e[1]=_=>c.enter(_)),"onKey:clear":e[2]||(e[2]=_=>c.clear()),"onKey:delete":e[3]||(e[3]=_=>c.removeDigit())})]),_:1})]),_:1},8,["model-value"])])}const Te=T(xe,[["render",Me]]);N.add(ce,de,ge,he);const Le={name:"ChargePointsView",components:{ChargePointCard:Ie,SimpleChargePointCard:qe,ExtendedNumberInput:Y,ManualSocInput:Te,FontAwesomeIcon:A},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:B(),modalChargeModeSettingVisible:!1,modalVehicleSelectVisible:!1,modalChargePointSettingsVisible:!1,modalChargePointId:0,modalVehicleId:0,modalActiveTab:"tab-general",modalManualSocInputVisible:!1,simpleChargeModes:["instant_charging","pv_charging","stop"]}},computed:{vehicleList(){let o=this.mqttStore.getVehicleList;var e=[];return Object.keys(o).forEach(l=>{let P=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""));e.push({id:P,name:o[l]})}),e},filteredChargeModes(){return this.mqttStore.getSimpleChargePointView?this.mqttStore.chargeModeList().filter(o=>this.simpleChargeModes.includes(o.id)):this.mqttStore.chargeModeList()}},watch:{changesLocked(o,e){e!==!0&&o===!0&&(this.modalChargeModeSettingVisible=!1,this.modalVehicleSelectVisible=!1,this.modalChargePointSettingsVisible=!1,this.modalManualSocInputVisible=!1)}},methods:{toggleChargePointSettings(o){switch(this.mqttStore.getChargePointConnectedVehicleChargeMode(o).mode){case"pv_charging":this.modalActiveTab="tab-pv-charging";break;case"scheduled_charging":this.modalActiveTab="tab-scheduled-charging";break;default:this.modalActiveTab="tab-instant-charging"}this.modalChargePointId=o,this.modalChargePointSettingsVisible=!0},handleChargeModeClick(o){this.changesLocked||(this.modalChargePointId=o,this.modalChargeModeSettingVisible=!0)},handleVehicleClick(o){this.changesLocked||(this.modalChargePointId=o,this.modalVehicleSelectVisible=!0)},handleSocClick(o){let e=this.mqttStore.getChargePointConnectedVehicleId(o);if(this.mqttStore.getVehicleSocIsManual(e)){this.modalVehicleId=e,this.modalManualSocInputVisible=!0;return}this.$root.sendTopicToBroker(`openWB/set/vehicle/${e}/get/force_soc_update`,1)},setChargePointConnectedVehicle(o,e){e.id!=this.mqttStore.getChargePointConnectedVehicleId(o)&&this.$root.sendTopicToBroker(`openWB/chargepoint/${o}/config/ev`,e.id),this.modalVehicleSelectVisible&&(this.modalVehicleSelectVisible=!1)},setChargePointConnectedVehicleChargeMode(o,e){if(e.id!=this.mqttStore.getChargePointConnectedVehicleChargeMode(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/selected`,e)}},setChargePointConnectedVehiclePriority(o,e){if(e!=this.mqttStore.getChargePointConnectedVehiclePriority(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/prio`,e)}},setChargePointConnectedVehicleTimeChargingActive(o,e){if(e!=this.mqttStore.getChargePointConnectedVehicleTimeChargingActive(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/time_charging/active`,e)}},setChargePointConnectedVehicleInstantChargingCurrent(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/current`,parseFloat(e))}},setChargePointConnectedVehicleInstantChargingLimit(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).selected){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/selected`,e)}},setChargePointConnectedVehicleInstantChargingLimitSoc(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).soc){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/soc`,parseInt(e))}},setChargePointConnectedVehicleInstantChargingLimitAmount(o,e){if(e&&e!=this.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(o).amount){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/instant_charging/limit/amount`,e)}},setChargePointConnectedVehiclePvChargingFeedInLimit(o,e){if(e!=this.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(o)){var l=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${l}/chargemode/pv_charging/feed_in_limit`,e)}},setChargePointConnectedVehiclePvChargingMinCurrent(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/min_current`,P)}},setChargePointConnectedVehiclePvChargingMinSoc(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/min_soc`,P)}},setChargePointConnectedVehiclePvChargingMinSocCurrent(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/min_soc_current`,P)}},setChargePointConnectedVehiclePvChargingMaxSoc(o,e){let l=this.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(o),P=parseInt(e);if(P!=l&&!isNaN(P)){var t=this.mqttStore.getChargePointConnectedVehicleChargeTemplateIndex(o);this.$root.sendTopicToBroker(`openWB/vehicle/template/charge_template/${t}/chargemode/pv_charging/max_soc`,P)}},setChargePointConnectedVehicleScheduledChargingPlanActive(o,e){this.$root.sendTopicToBroker(`${o}/active`,e)},setChargePointConnectedVehicleTimeChargingPlanActive(o,e){this.$root.sendTopicToBroker(`${o}/active`,e)}}},Be={class:"charge-points-card-wrapper"},Ne={key:0},Ae={key:1},Fe={key:2},ze={key:3},We={key:4},Ee={key:0},Ue={key:1},De={key:0},Ze={key:1},Re={key:2},je={key:3},Oe={key:4};function Je(o,e,l,P,t,c){const f=g("i-button"),V=g("i-button-group"),C=g("i-form-group"),h=g("i-form-label"),b=g("i-form"),k=g("i-modal"),I=g("i-tab-title"),_=g("extended-number-input"),y=g("i-tab"),v=g("font-awesome-icon"),p=g("i-alert"),w=g("i-row"),F=g("i-container"),$=g("i-tabs"),ee=g("manual-soc-input");return d(),S(x,null,[ue("div",Be,[(d(!0),S(x,null,L(t.mqttStore.getChargePointIds,a=>(d(),u(me(t.mqttStore.getSimpleChargePointView?"SimpleChargePointCard":"ChargePointCard"),{key:a,"charge-point-id":a,"changes-locked":l.changesLocked,onVehicleClick:c.handleVehicleClick,onSocClick:c.handleSocClick,onChargeModeClick:c.handleChargeModeClick,onToggleChargePointSettings:c.toggleChargePointSettings,onSetChargePointConnectedVehicleChargeMode:c.setChargePointConnectedVehicleChargeMode},null,40,["charge-point-id","changes-locked","onVehicleClick","onSocClick","onChargeModeClick","onToggleChargePointSettings","onSetChargePointConnectedVehicleChargeMode"]))),128))]),n(k,{modelValue:t.modalChargeModeSettingVisible,"onUpdate:modelValue":e[2]||(e[2]=a=>t.modalChargeModeSettingVisible=a),size:"lg"},{header:i(()=>[r(' Lademodus für "'+s(t.mqttStore.getChargePointConnectedVehicleName(t.modalChargePointId))+'" auswählen ',1)]),default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,{block:"",vertical:""},{default:i(()=>[(d(!0),S(x,null,L(c.filteredChargeModes,a=>(d(),u(f,{key:a.id,size:"lg",class:"large-button",outline:"",color:a.class!="dark"?a.class:"light",active:t.mqttStore.getChargePointConnectedVehicleChargeMode(t.modalChargePointId)!=null&&a.id==t.mqttStore.getChargePointConnectedVehicleChargeMode(t.modalChargePointId).mode,onClick:M=>c.setChargePointConnectedVehicleChargeMode(t.modalChargePointId,a.id)},{default:i(()=>[r(s(a.label),1)]),_:2},1032,["color","active","onClick"]))),128))]),_:1})]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[21]||(e[21]=[r("Priorität")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{size:"lg",class:"large-button",color:t.mqttStore.getChargePointConnectedVehiclePriority(t.modalChargePointId)!==!0?"danger":"",onClick:e[0]||(e[0]=a=>c.setChargePointConnectedVehiclePriority(t.modalChargePointId,!1))},{default:i(()=>e[22]||(e[22]=[r(" Nein ")])),_:1},8,["color"]),n(f,{color:t.mqttStore.getChargePointConnectedVehiclePriority(t.modalChargePointId)===!0?"success":"",onClick:e[1]||(e[1]=a=>c.setChargePointConnectedVehiclePriority(t.modalChargePointId,!0))},{default:i(()=>e[23]||(e[23]=[r(" Ja ")])),_:1},8,["color"])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(k,{modelValue:t.modalVehicleSelectVisible,"onUpdate:modelValue":e[3]||(e[3]=a=>t.modalVehicleSelectVisible=a),class:"modal-vehicle-select",size:"lg"},{header:i(()=>[r(' Fahrzeug an "'+s(t.mqttStore.getChargePointName(t.modalChargePointId))+'" auswählen ',1)]),default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(V,{vertical:"",block:""},{default:i(()=>[(d(!0),S(x,null,L(c.vehicleList,a=>(d(),u(f,{key:a.id,size:"lg",class:"large-button",active:t.mqttStore.getChargePointConnectedVehicleId(t.modalChargePointId)==a.id,color:t.mqttStore.getChargePointConnectedVehicleId(t.modalChargePointId)==a.id?"primary":"",onClick:M=>c.setChargePointConnectedVehicle(t.modalChargePointId,a)},{default:i(()=>[r(s(a.name),1)]),_:2},1032,["active","color","onClick"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(k,{modelValue:t.modalChargePointSettingsVisible,"onUpdate:modelValue":e[19]||(e[19]=a=>t.modalChargePointSettingsVisible=a),size:"lg"},{header:i(()=>[r(' Einstellungen für Fahrzeug "'+s(t.mqttStore.getChargePointConnectedVehicleName(t.modalChargePointId))+'" ',1)]),default:i(()=>[n($,{modelValue:t.modalActiveTab,"onUpdate:modelValue":e[18]||(e[18]=a=>t.modalActiveTab=a),stretch:""},{header:i(()=>[n(I,{for:"tab-instant-charging"},{default:i(()=>e[24]||(e[24]=[r(" Sofort ")])),_:1}),n(I,{for:"tab-pv-charging"},{default:i(()=>e[25]||(e[25]=[r(" PV ")])),_:1}),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(I,{key:0,for:"tab-scheduled-charging"},{default:i(()=>e[26]||(e[26]=[r(" Zielladen ")])),_:1})),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(I,{key:1,for:"tab-time-charging"},{default:i(()=>e[27]||(e[27]=[r(" Zeitladen ")])),_:1}))]),default:i(()=>[n(y,{name:"tab-instant-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[28]||(e[28]=[r("Stromstärke")])),_:1}),n(_,{unit:"A",min:6,max:32,"model-value":t.mqttStore.getChargePointConnectedVehicleInstantChargingCurrent(t.modalChargePointId),"onUpdate:modelValue":e[4]||(e[4]=a=>c.setChargePointConnectedVehicleInstantChargingCurrent(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[29]||(e[29]=[r("Begrenzung")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="none"?"primary":"",active:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="none",onClick:e[5]||(e[5]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId,"none"))},{default:i(()=>e[30]||(e[30]=[r(" Keine ")])),_:1},8,["color","active"]),n(f,{color:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="soc"?"primary":"",active:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="soc",onClick:e[6]||(e[6]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId,"soc"))},{default:i(()=>e[31]||(e[31]=[r(" EV-SoC ")])),_:1},8,["color","active"]),n(f,{color:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="amount"?"primary":"",active:t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="amount",onClick:e[7]||(e[7]=a=>c.setChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId,"amount"))},{default:i(()=>e[32]||(e[32]=[r(" Energie ")])),_:1},8,["color","active"])]),_:1})]),_:1}),t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="soc"?(d(),u(C,{key:0},{default:i(()=>[n(h,null,{default:i(()=>e[33]||(e[33]=[r("Max. SoC")])),_:1}),n(_,{unit:"%",min:5,max:100,step:5,"model-value":t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).soc,"onUpdate:modelValue":e[8]||(e[8]=a=>c.setChargePointConnectedVehicleInstantChargingLimitSoc(t.modalChargePointId,a))},null,8,["model-value"])]),_:1})):m("",!0),t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).selected=="amount"?(d(),u(C,{key:1},{default:i(()=>[n(h,null,{default:i(()=>e[34]||(e[34]=[r("Max. Energie")])),_:1}),n(_,{unit:"kWh",min:1,max:100,"model-value":t.mqttStore.getChargePointConnectedVehicleInstantChargingLimit(t.modalChargePointId).amount/1e3,"onUpdate:modelValue":e[9]||(e[9]=a=>c.setChargePointConnectedVehicleInstantChargingLimitAmount(t.modalChargePointId,a*1e3))},null,8,["model-value"])]),_:1})):m("",!0)]),_:1})]),_:1}),n(y,{name:"tab-pv-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[35]||(e[35]=[r("Einspeisegrenze beachten")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:t.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId)!==!0?"danger":"",onClick:e[10]||(e[10]=a=>c.setChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId,!1))},{default:i(()=>e[36]||(e[36]=[r(" Nein ")])),_:1},8,["color"]),n(f,{color:t.mqttStore.getChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId)===!0?"success":"",onClick:e[11]||(e[11]=a=>c.setChargePointConnectedVehiclePvChargingFeedInLimit(t.modalChargePointId,!0))},{default:i(()=>e[37]||(e[37]=[r(" Ja ")])),_:1},8,["color"])]),_:1})]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[38]||(e[38]=[r("Minimaler Dauerstrom")])),_:1}),n(_,{unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMinCurrent(t.modalChargePointId),"onUpdate:modelValue":e[12]||(e[12]=a=>c.setChargePointConnectedVehiclePvChargingMinCurrent(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[39]||(e[39]=[r("Mindest-SoC")])),_:1}),n(_,{unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMinSoc(t.modalChargePointId),"onUpdate:modelValue":e[13]||(e[13]=a=>c.setChargePointConnectedVehiclePvChargingMinSoc(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[40]||(e[40]=[r("Mindest-SoC Strom")])),_:1}),n(_,{min:6,max:32,unit:"A","model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMinSocCurrent(t.modalChargePointId),"onUpdate:modelValue":e[14]||(e[14]=a=>c.setChargePointConnectedVehiclePvChargingMinSocCurrent(t.modalChargePointId,a))},null,8,["model-value"])]),_:1}),n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[41]||(e[41]=[r("SoC-Limit")])),_:1}),n(_,{unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":t.mqttStore.getChargePointConnectedVehiclePvChargingMaxSoc(t.modalChargePointId),"onUpdate:modelValue":e[15]||(e[15]=a=>c.setChargePointConnectedVehiclePvChargingMaxSoc(t.modalChargePointId,a))},null,8,["model-value"])]),_:1})]),_:1})]),_:1}),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(y,{key:0,name:"tab-scheduled-charging"},{default:i(()=>[Object.keys(t.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(t.modalChargePointId)).length===0?(d(),u(p,{key:0},{icon:i(()=>[n(v,{"fixed-width":"",icon:["fas","fa-info-circle"]})]),default:i(()=>[e[42]||(e[42]=r(" Es wurden noch keine Zeitpläne für das Zielladen eingerichtet. "))]),_:1})):(d(),u(b,{key:1},{default:i(()=>[(d(!0),S(x,null,L(t.mqttStore.getChargePointConnectedVehicleScheduledChargingPlans(t.modalChargePointId),(a,M)=>(d(),u(C,{key:M},{default:i(()=>[n(F,null,{default:i(()=>[n(w,null,{default:i(()=>[n(h,null,{default:i(()=>[r(s(a.name),1)]),_:2},1024)]),_:2},1024),n(w,null,{default:i(()=>[n(f,{size:"lg",block:"",color:a.active?"success":"danger",onClick:te=>c.setChargePointConnectedVehicleScheduledChargingPlanActive(M,!a.active)},{default:i(()=>[a.frequency.selected=="once"?(d(),S("span",Ne,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+s(t.mqttStore.formatDate(a.frequency.once)),1)])):m("",!0),a.frequency.selected=="daily"?(d(),S("span",Ae,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]}),e[43]||(e[43]=r(" täglich "))])):m("",!0),a.frequency.selected=="weekly"?(d(),S("span",Fe,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]}),r(" "+s(t.mqttStore.formatWeeklyScheduleDays(a.frequency.weekly)),1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),r(" "+s(a.time)+" ",1),a.limit.selected=="soc"?(d(),S("span",ze,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+s(a.limit.soc_scheduled)+" % ",1)])):m("",!0),a.limit.selected=="amount"?(d(),S("span",We,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),r(" "+s(a.limit.amount/1e3)+" kWh ",1)])):m("",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}))]),_:1})),t.mqttStore.getSimpleChargePointView?m("",!0):(d(),u(y,{key:1,name:"tab-time-charging"},{default:i(()=>[n(b,null,{default:i(()=>[n(C,null,{default:i(()=>[n(h,null,{default:i(()=>e[44]||(e[44]=[r("Zeitladen aktivieren")])),_:1}),n(V,{block:""},{default:i(()=>[n(f,{color:t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId)!==!0?"danger":"",onClick:e[16]||(e[16]=a=>c.setChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId,!1))},{default:i(()=>e[45]||(e[45]=[r(" Nein ")])),_:1},8,["color"]),n(f,{color:t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId)===!0?"success":"",onClick:e[17]||(e[17]=a=>c.setChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId,!0))},{default:i(()=>e[46]||(e[46]=[r(" Ja ")])),_:1},8,["color"])]),_:1})]),_:1}),t.mqttStore.getChargePointConnectedVehicleTimeChargingActive(t.modalChargePointId)===!0?(d(),S("div",Ee,[Object.keys(t.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(t.modalChargePointId)).length===0?(d(),u(p,{key:0,color:"warning",class:"_margin-top:2"},{icon:i(()=>[n(v,{"fixed-width":"",icon:["fas","fa-circle-info"]})]),default:i(()=>[e[47]||(e[47]=r(" Es wurden noch keine Zeitpläne für das Zeitladen eingerichtet. "))]),_:1})):(d(),S("div",Ue,[(d(!0),S(x,null,L(t.mqttStore.getChargePointConnectedVehicleTimeChargingPlans(t.modalChargePointId),(a,M)=>(d(),u(C,{key:M},{default:i(()=>[n(F,null,{default:i(()=>[n(w,null,{default:i(()=>[n(h,null,{default:i(()=>[r(s(a.name),1)]),_:2},1024)]),_:2},1024),n(w,null,{default:i(()=>[n(f,{size:"lg",block:"",color:a.active?"success":"danger",onClick:te=>c.setChargePointConnectedVehicleTimeChargingPlanActive(M,!a.active)},{default:i(()=>[a.frequency.selected=="once"?(d(),S("span",De,[n(v,{"fixed-width":"",icon:["fas","calendar-day"]}),r(" "+s(t.mqttStore.formatDateRange(a.frequency.once)),1)])):m("",!0),a.frequency.selected=="daily"?(d(),S("span",Ze,[n(v,{"fixed-width":"",icon:["fas","calendar-week"]}),e[48]||(e[48]=r(" täglich "))])):m("",!0),a.frequency.selected=="weekly"?(d(),S("span",Re,[n(v,{"fixed-width":"",icon:["fas","calendar-alt"]}),r(" "+s(t.mqttStore.formatWeeklyScheduleDays(a.frequency.weekly)),1)])):m("",!0),n(v,{"fixed-width":"",icon:["fas","clock"]}),r(" "+s(a.time.join("-"))+" ",1),a.limit.selected=="soc"?(d(),S("span",je,[n(v,{"fixed-width":"",icon:["fas","car-battery"]}),r(" "+s(a.limit.soc)+" % ",1)])):m("",!0),a.limit.selected=="amount"?(d(),S("span",Oe,[n(v,{"fixed-width":"",icon:["fas","bolt"]}),r(" "+s(a.limit.amount/1e3)+" kWh ",1)])):m("",!0)]),_:2},1032,["color","onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]))])):m("",!0)]),_:1})]),_:1}))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"]),n(ee,{modelValue:t.modalManualSocInputVisible,"onUpdate:modelValue":e[20]||(e[20]=a=>t.modalManualSocInputVisible=a),"vehicle-id":t.modalVehicleId},null,8,["modelValue","vehicle-id"])],64)}const $e=T(Le,[["render",Je],["__scopeId","data-v-76699ceb"]]);export{$e as default};
diff --git a/packages/modules/display_themes/cards/web/assets/DashBoardView-_HZMNhnS.js b/packages/modules/display_themes/cards/web/assets/DashBoardView-BJO8O7Y4.js
similarity index 97%
rename from packages/modules/display_themes/cards/web/assets/DashBoardView-_HZMNhnS.js
rename to packages/modules/display_themes/cards/web/assets/DashBoardView-BJO8O7Y4.js
index 1bad69b521..12a0ba9190 100644
--- a/packages/modules/display_themes/cards/web/assets/DashBoardView-_HZMNhnS.js
+++ b/packages/modules/display_themes/cards/web/assets/DashBoardView-BJO8O7Y4.js
@@ -1 +1 @@
-import{u as g}from"./index-CHLaD7ED.js";import{D as S}from"./DashBoardCard-BterAPyf.js";import{S as q,C as k}from"./ChargePointPlugBadge-DyF92yTK.js";import{l as P,d as v,F as w,e as x,g as B,h as D,i as I}from"./vendor-fortawesome-C68yAli-.js";import{_ as h}from"./vendor-inkline-Ce5aFAnW.js";import{o as c,l as i,n as o,s as d,k as m,x as p,q as e,i as _,e as H}from"./vendor-CZ1MGz7j.js";P.add(v);const L={name:"GridCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function E(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return c(),i(s,{color:"danger"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-gauge-high"]}),r[0]||(r[0]=m(" EVU "))]),headerRight:o(()=>[m(p(t.mqttStore.getGridPower()),1)]),default:o(()=>[d(n,{color:"var(--color--danger)","color-negative":"var(--color--success)",data:t.mqttStore.getGridPowerChartData},null,8,["data"])]),_:1})}const V=h(L,[["render",E]]);P.add(x);const G={name:"BatteryCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function R(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return t.mqttStore.getBatteryConfigured?(c(),i(s,{key:0,color:"warning"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r[0]||(r[0]=m(" Speicher "))]),headerRight:o(()=>[m(p(t.mqttStore.getBatterySoc())+" / "+p(t.mqttStore.getBatteryPower()),1)]),default:o(()=>[d(n,{color:"var(--color--warning)",data:t.mqttStore.getBatteryPowerChartData,"soc-data":t.mqttStore.getBatterySocChartData},null,8,["data","soc-data"])]),_:1})):_("",!0)}const $=h(G,[["render",R]]);P.add(B);const N={name:"InverterCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function F(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return t.mqttStore.getPvConfigured?(c(),i(s,{key:0,color:"success"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-solar-panel"]}),r[0]||(r[0]=m(" PV "))]),headerRight:o(()=>[m(p(t.mqttStore.getPvPower()),1)]),default:o(()=>[d(n,{color:"var(--color--success)",data:t.mqttStore.getPvPowerChartData,inverted:!0},null,8,["data"])]),_:1})):_("",!0)}const A=h(N,[["render",F]]);P.add(D);const M={name:"HomeCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function T(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return c(),i(s,{color:"light"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-home"]}),r[0]||(r[0]=m(" Hausverbrauch "))]),headerRight:o(()=>[m(p(t.mqttStore.getHomePower()),1)]),default:o(()=>[d(n,{color:"var(--color--light)",data:t.mqttStore.getHomePowerChartData},null,8,["data"])]),_:1})}const U=h(M,[["render",T]]);P.add(I);const j={name:"ChargePointsCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w,ChargePointPlugBadge:k},props:{},data(){return{mqttStore:g()}}};function z(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("charge-point-plug-badge"),s=e("spark-line"),y=e("dash-board-card");return t.mqttStore.getChargePointIds.length>0?(c(),i(y,{key:0,color:"primary"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-charging-station"]}),m(" "+p(t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointName(t.mqttStore.getChargePointIds[0]):"Ladepunkte"),1)]),headerRight:o(()=>[m(p(t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointPower(t.mqttStore.getChargePointIds[0]):t.mqttStore.getChargePointSumPower())+" ",1),d(n,{"charge-point-id":t.mqttStore.getChargePointIds,"show-energy-charged":!1},null,8,["charge-point-id"])]),default:o(()=>[d(s,{color:"var(--color--primary)",data:t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointPowerChartData(t.mqttStore.getChargePointIds[0]):t.mqttStore.getChargePointSumPowerChartData},null,8,["data"])]),_:1})):_("",!0)}const J=h(j,[["render",z]]),K={name:"DashboardView",components:{GridCard:V,HomeCard:U,BatteryCard:$,InverterCard:A,ChargePointsCard:J},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:g()}}},O={class:"dash-board-card-wrapper"};function Q(l,r,f,u,t,C){const a=e("grid-card"),n=e("home-card"),s=e("battery-card"),y=e("inverter-card"),b=e("charge-points-card");return c(),H("div",O,[t.mqttStore.getGridCardEnabled?(c(),i(a,{key:0})):_("",!0),t.mqttStore.getHomeCardEnabled?(c(),i(n,{key:1})):_("",!0),t.mqttStore.getBatteryCardEnabled?(c(),i(s,{key:2})):_("",!0),t.mqttStore.getPvCardEnabled?(c(),i(y,{key:3})):_("",!0),t.mqttStore.getChargePointsCardEnabled?(c(),i(b,{key:4})):_("",!0)])}const ot=h(K,[["render",Q],["__scopeId","data-v-2085947b"]]);export{ot as default};
+import{u as g}from"./index-CtySFcBa.js";import{D as S}from"./DashBoardCard-BterAPyf.js";import{S as q,C as k}from"./ChargePointPlugBadge-Bsi0zWop.js";import{l as P,d as v,F as w,e as x,g as B,h as D,i as I}from"./vendor-fortawesome-C68yAli-.js";import{_ as h}from"./vendor-inkline-Ce5aFAnW.js";import{o as c,l as i,n as o,s as d,k as m,x as p,q as e,i as _,e as H}from"./vendor-CZ1MGz7j.js";P.add(v);const L={name:"GridCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function E(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return c(),i(s,{color:"danger"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-gauge-high"]}),r[0]||(r[0]=m(" EVU "))]),headerRight:o(()=>[m(p(t.mqttStore.getGridPower()),1)]),default:o(()=>[d(n,{color:"var(--color--danger)","color-negative":"var(--color--success)",data:t.mqttStore.getGridPowerChartData},null,8,["data"])]),_:1})}const V=h(L,[["render",E]]);P.add(x);const G={name:"BatteryCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function R(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return t.mqttStore.getBatteryConfigured?(c(),i(s,{key:0,color:"warning"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-car-battery"]}),r[0]||(r[0]=m(" Speicher "))]),headerRight:o(()=>[m(p(t.mqttStore.getBatterySoc())+" / "+p(t.mqttStore.getBatteryPower()),1)]),default:o(()=>[d(n,{color:"var(--color--warning)",data:t.mqttStore.getBatteryPowerChartData,"soc-data":t.mqttStore.getBatterySocChartData},null,8,["data","soc-data"])]),_:1})):_("",!0)}const $=h(G,[["render",R]]);P.add(B);const N={name:"InverterCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function F(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return t.mqttStore.getPvConfigured?(c(),i(s,{key:0,color:"success"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-solar-panel"]}),r[0]||(r[0]=m(" PV "))]),headerRight:o(()=>[m(p(t.mqttStore.getPvPower()),1)]),default:o(()=>[d(n,{color:"var(--color--success)",data:t.mqttStore.getPvPowerChartData,inverted:!0},null,8,["data"])]),_:1})):_("",!0)}const A=h(N,[["render",F]]);P.add(D);const M={name:"HomeCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w},props:{},data(){return{mqttStore:g()}}};function T(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("spark-line"),s=e("dash-board-card");return c(),i(s,{color:"light"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-home"]}),r[0]||(r[0]=m(" Hausverbrauch "))]),headerRight:o(()=>[m(p(t.mqttStore.getHomePower()),1)]),default:o(()=>[d(n,{color:"var(--color--light)",data:t.mqttStore.getHomePowerChartData},null,8,["data"])]),_:1})}const U=h(M,[["render",T]]);P.add(I);const j={name:"ChargePointsCard",components:{DashBoardCard:S,SparkLine:q,FontAwesomeIcon:w,ChargePointPlugBadge:k},props:{},data(){return{mqttStore:g()}}};function z(l,r,f,u,t,C){const a=e("font-awesome-icon"),n=e("charge-point-plug-badge"),s=e("spark-line"),y=e("dash-board-card");return t.mqttStore.getChargePointIds.length>0?(c(),i(y,{key:0,color:"primary"},{headerLeft:o(()=>[d(a,{"fixed-width":"",icon:["fas","fa-charging-station"]}),m(" "+p(t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointName(t.mqttStore.getChargePointIds[0]):"Ladepunkte"),1)]),headerRight:o(()=>[m(p(t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointPower(t.mqttStore.getChargePointIds[0]):t.mqttStore.getChargePointSumPower())+" ",1),d(n,{"charge-point-id":t.mqttStore.getChargePointIds,"show-energy-charged":!1},null,8,["charge-point-id"])]),default:o(()=>[d(s,{color:"var(--color--primary)",data:t.mqttStore.getChargePointIds.length==1?t.mqttStore.getChargePointPowerChartData(t.mqttStore.getChargePointIds[0]):t.mqttStore.getChargePointSumPowerChartData},null,8,["data"])]),_:1})):_("",!0)}const J=h(j,[["render",z]]),K={name:"DashboardView",components:{GridCard:V,HomeCard:U,BatteryCard:$,InverterCard:A,ChargePointsCard:J},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:g()}}},O={class:"dash-board-card-wrapper"};function Q(l,r,f,u,t,C){const a=e("grid-card"),n=e("home-card"),s=e("battery-card"),y=e("inverter-card"),b=e("charge-points-card");return c(),H("div",O,[t.mqttStore.getGridCardEnabled?(c(),i(a,{key:0})):_("",!0),t.mqttStore.getHomeCardEnabled?(c(),i(n,{key:1})):_("",!0),t.mqttStore.getBatteryCardEnabled?(c(),i(s,{key:2})):_("",!0),t.mqttStore.getPvCardEnabled?(c(),i(y,{key:3})):_("",!0),t.mqttStore.getChargePointsCardEnabled?(c(),i(b,{key:4})):_("",!0)])}const ot=h(K,[["render",Q],["__scopeId","data-v-2085947b"]]);export{ot as default};
diff --git a/packages/modules/display_themes/cards/web/assets/EnergyFlowView-BcB2FDT1.js b/packages/modules/display_themes/cards/web/assets/EnergyFlowView-CAd9Xlbe.js
similarity index 99%
rename from packages/modules/display_themes/cards/web/assets/EnergyFlowView-BcB2FDT1.js
rename to packages/modules/display_themes/cards/web/assets/EnergyFlowView-CAd9Xlbe.js
index aee876bee1..f4ccf43eb3 100644
--- a/packages/modules/display_themes/cards/web/assets/EnergyFlowView-BcB2FDT1.js
+++ b/packages/modules/display_themes/cards/web/assets/EnergyFlowView-CAd9Xlbe.js
@@ -1 +1 @@
-import{u as z}from"./index-CHLaD7ED.js";import{D as V}from"./DashBoardCard-BterAPyf.js";import{o,l as x,n as d,k as m,s as R,j as n,e as c,F as C,A as S,y as g,i as u,x as w,O as p,q as v}from"./vendor-CZ1MGz7j.js";import{_ as f}from"./vendor-inkline-Ce5aFAnW.js";import"./vendor-fortawesome-C68yAli-.js";const P={name:"DashboardFlowCard",components:{DashBoardCard:V},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:z(),svgSize:{xMin:0,xMax:150,yMin:0,yMax:105,circleRadius:10,strokeWidth:.5,textSize:5,numRows:4,numColumns:3}}},computed:{svgViewBox(){return`${this.svgSize.xMin} ${this.svgSize.yMin} ${this.svgSize.xMax} ${this.svgSize.yMax}`},svgFontSize(){return`${this.svgSize.textSize}px`},svgRectWidth(){return(this.svgSize.xMax-this.svgSize.xMin-this.svgSize.strokeWidth-this.svgSize.numColumns)/this.svgSize.numColumns},svgStrokeWidth(){return this.svgSize.strokeWidth},svgIconWidth(){return this.svgSize.circleRadius},svgIconHeight(){return this.svgSize.circleRadius},gridPower(){return this.mqttStore.getGridPower("object")},pvPower(){return this.mqttStore.getPvPower("object")},homePower(){return this.mqttStore.getHomePower("object")},batteryPower(){return this.mqttStore.getBatteryPower("object")},batterySoc(){return this.mqttStore.getBatterySoc("object").value/100},connectedChargePoints(){return this.mqttStore.getChargePointIds},chargePointSumPower(){return this.mqttStore.getChargePointSumPower("object")},chargePoint1Power(){return this.connectedChargePoints.length>0?this.mqttStore.getChargePointPower(this.connectedChargePoints[0],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint2Power(){return this.connectedChargePoints.length>1?this.mqttStore.getChargePointPower(this.connectedChargePoints[1],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint3Power(){return this.connectedChargePoints.length>2?this.mqttStore.getChargePointPower(this.connectedChargePoints[2],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint1Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[0])},chargePoint2Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[1])},chargePoint3Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[2])},chargePoint1VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[0])},chargePoint2VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[1])},chargePoint3VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[0])},chargePoint2ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[1])},chargePoint3ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[0])},chargePoint2ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[1])},chargePoint3ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[0]).soc/100},chargePoint2ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[1]).soc/100},chargePoint3ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[2]).soc/100},gridConsumption(){return this.gridPower.value>0},gridFeedIn(){return this.gridPower.value<0},homeConsumption(){return this.homePower.value>0},homeProduction(){return this.homePower.value<0},pvProduction(){return this.pvPower.value>0},batteryDischarging(){return this.batteryPower.value<0},batteryCharging(){return this.batteryPower.value>0},chargePointSumCharging(){return this.chargePointSumPower.value>0},chargePointSumDischarging(){return this.chargePointSumPower.value<0},chargePoint1Charging(){return this.chargePoint1Power.value>0},chargePoint1Discharging(){return this.chargePoint1Power.value<0},chargePoint2Charging(){return this.chargePoint2Power.value>0},chargePoint2Discharging(){return this.chargePoint2Power.value<0},chargePoint3Charging(){return this.chargePoint3Power.value>0},chargePoint3Discharging(){return this.chargePoint3Power.value<0},svgComponents(){var e=[];return this.mqttStore.getThemeConfiguration.enable_dashboard_card_grid&&e.push({id:"grid",class:{base:"grid",valueLabel:this.gridFeedIn?"fill-success":this.gridConsumption?"fill-danger":"",animated:this.gridConsumption,animatedReverse:this.gridFeedIn},position:{row:0,column:0},label:["EVU",this.gridPower.textValue],icon:"icons/owbGrid.svg"}),this.mqttStore.getThemeConfiguration.enable_dashboard_card_home_consumption&&e.push({id:"home",class:{base:"home",valueLabel:"",animated:this.homeProduction,animatedReverse:this.homeConsumption},position:{row:0,column:2},label:["Haus",this.homePower.textValue],icon:"icons/owbHouse.svg"}),this.mqttStore.getPvConfigured&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_inverter_sum&&e.push({id:"pv",class:{base:"pv",valueLabel:this.pvProduction?"fill-success":"",animated:this.pvProduction,animatedReverse:!1},position:{row:1,column:0},label:["PV",this.pvPower.textValue],icon:"icons/owbPV.svg"}),this.mqttStore.getBatteryConfigured&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_battery_sum&&e.push({id:"battery",class:{base:"battery",valueLabel:"",animated:this.batteryDischarging,animatedReverse:this.batteryCharging},position:{row:1,column:2},label:["Speicher",this.batteryPower.textValue],soc:this.batterySoc,icon:"icons/owbBattery.svg"}),this.connectedChargePoints.length>0&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_charge_point_sum&&(this.connectedChargePoints.length<=3?(e.push({id:"charge-point-1",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint1Discharging,animatedReverse:this.chargePoint1Charging},position:{row:2,column:this.connectedChargePoints.length>1?0:1},label:[this.chargePoint1Name,this.chargePoint1Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint1VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-1",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint1ConnectedVehicleChargeMode.class},position:{row:3,column:this.connectedChargePoints.length>1?0:1},label:[this.chargePoint1ConnectedVehicleName||"---",this.chargePoint1ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint1ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"}),this.connectedChargePoints.length>1&&(e.push({id:"charge-point-2",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint2Discharging,animatedReverse:this.chargePoint2Charging},position:{row:2,column:this.connectedChargePoints.length>2?1:2},label:[this.chargePoint2Name,this.chargePoint2Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint2VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-2",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint2ConnectedVehicleChargeMode.class},position:{row:3,column:this.connectedChargePoints.length>2?1:2},label:[this.chargePoint2ConnectedVehicleName||"---",this.chargePoint2ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint2ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"}),this.connectedChargePoints.length>2&&(e.push({id:"charge-point-3",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint3Discharging,animatedReverse:this.chargePoint3Charging},position:{row:2,column:2},label:[this.chargePoint3Name,this.chargePoint3Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint3VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-3",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint3ConnectedVehicleChargeMode.class},position:{row:3,column:2},label:[this.chargePoint3ConnectedVehicleName||"---",this.chargePoint3ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint3ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"})))):e.push({id:"charge-point-sum",class:{base:"charge-point",valueLabel:"",animated:this.chargePointSumDischarging,animatedReverse:this.chargePointSumCharging},position:{row:2,column:1},label:["Ladepunkte",this.chargePointSumPower.textValue],icon:"icons/owbChargePoint.svg"})),(!this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles||this.connectedChargePoints.length===0||this.connectedChargePoints.length>3)&&this.setSvgNumRows(3),e}},methods:{setSvgNumRows(e){this.svgSize.numRows=e},calcRowY(e){let r=this.svgSize.yMin+this.svgSize.strokeWidth+this.svgSize.circleRadius,a=this.svgSize.yMax-this.svgSize.strokeWidth-this.svgSize.circleRadius-r;return e*(a/(this.svgSize.numRows-1))+r},calcColumnX(e){let r=this.svgSize.xMin+this.svgSize.strokeWidth+this.svgRectWidth/2,a=this.svgSize.xMax-this.svgSize.strokeWidth-this.svgRectWidth/2-r;return e*(a/(this.svgSize.numColumns-1))+r},calcFlowLineAnchorX(e){let r=this.calcColumnX(e);return e<(this.svgSize.numColumns-1)/2?r+this.svgRectWidth/2-this.svgSize.circleRadius:e>(this.svgSize.numColumns-1)/2?r-this.svgRectWidth/2+this.svgSize.circleRadius:r},calcSvgElementBoundingBox(e){let r=document.getElementById(e);if(r==null)return{x:0,y:0,width:0,height:0};let h=r.getBBox();return{x:h.x,y:h.y,width:h.width,height:h.height}},beginAnimation(e){var r;this.$refs[e]!=null&&((r=this.$refs[e][0])==null||r.beginElement())}}},b=()=>{p(e=>({"2d21ce23":e.svgStrokeWidth,"0cb0615b":e.svgFontSize}))},_=P.setup;P.setup=_?(e,r)=>(b(),_(e,r)):b;const q={class:"svg-container"},M=["viewBox"],W={id:"layer1",style:{display:"inline"}},k=["d"],N={id:"layer2",style:{display:"inline"}},B=["cx","cy","r"],L=["transform","onClick"],F=["id"],D=["x","y","width","height"],j=["id"],I=["x","y","width","height","rx","ry"],E=["x","y","width","height","rx","ry"],T=["clip-path"],A=["id","x","y"],X=["values"],H=["id","x","y"],Y=["transform"],G=["r"],O=["r","clip-path"],U=["href","x","y","height","width"];function J(e,r,h,a,t,s){const l=v("i-container"),y=v("dash-board-card");return o(),x(y,{color:"primary"},{headerLeft:d(()=>r[0]||(r[0]=[m(" Übersicht - Energiefluss ")])),default:d(()=>[R(l,null,{default:d(()=>[n("div",q,[(o(),c("svg",{viewBox:s.svgViewBox,version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},[n("g",W,[(o(!0),c(C,null,S(s.svgComponents,i=>(o(),c("path",{key:i.id,class:g([i.class.base,{animated:i.class.animated},{animatedReverse:i.class.animatedReverse}]),d:i.class.base!=="vehicle"?`M ${s.calcFlowLineAnchorX(i.position.column)}, ${s.calcRowY(i.position.row)} ${s.calcColumnX(1)}, ${s.calcRowY(1)}`:""},null,10,k))),128))]),n("g",N,[n("circle",{id:"center",cx:s.calcColumnX(1),cy:s.calcRowY(1),r:t.svgSize.circleRadius/3},null,8,B),(o(!0),c(C,null,S(s.svgComponents,i=>(o(),c("g",{key:i.id,class:g(i.class.base),transform:`translate(${s.calcColumnX(i.position.column)}, ${s.calcRowY(i.position.row)})`,onClick:$=>s.beginAnimation(`animate-label-${i.id}`)},[n("defs",null,[i.soc?(o(),c("clipPath",{key:0,id:`clip-soc-${i.id}`},[n("rect",{x:-t.svgSize.circleRadius-t.svgSize.strokeWidth,y:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*(1-2*i.soc),width:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*2,height:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*2*i.soc},null,8,D)],8,F)):u("",!0),n("clipPath",{id:`clip-label-${i.id}`},[n("rect",{x:-s.svgRectWidth/2,y:-t.svgSize.circleRadius,width:s.svgRectWidth,height:t.svgSize.circleRadius*2,rx:t.svgSize.circleRadius,ry:t.svgSize.circleRadius},null,8,I)],8,j)]),n("rect",{x:-s.svgRectWidth/2,y:-t.svgSize.circleRadius,width:s.svgRectWidth,height:t.svgSize.circleRadius*2,rx:t.svgSize.circleRadius,ry:t.svgSize.circleRadius},null,8,E),n("text",{"clip-path":`url(#clip-label-${i.id})`},[n("tspan",{id:`label-${i.id}`,"text-anchor":"start",x:-s.svgRectWidth/2+2*t.svgSize.circleRadius+t.svgSize.strokeWidth,y:-t.svgSize.textSize/2},[s.calcSvgElementBoundingBox(`label-${i.id}`).width>s.svgRectWidth-2*t.svgSize.circleRadius-2*t.svgSize.strokeWidth?(o(),c("animate",{key:0,ref_for:!0,ref:`animate-label-${i.id}`,xmlns:"http://www.w3.org/2000/svg",attributeName:"x",dur:"5s",values:"0; "+(-s.calcSvgElementBoundingBox(`label-${i.id}`).width+s.svgRectWidth-2.5*t.svgSize.circleRadius-2*t.svgSize.strokeWidth)+"; 0;",repeatCount:"0",begin:"2s",additive:"sum"},null,8,X)):u("",!0),m(" "+w(i.label[0]),1)],8,A),n("tspan",{id:`value-${i.id}`,class:g(i.class.valueLabel),"text-anchor":"end",x:2*t.svgSize.circleRadius+t.svgSize.strokeWidth,y:t.svgSize.textSize},w(i.label[1]),11,H)],8,T),n("g",{transform:`translate(${t.svgSize.circleRadius-s.svgRectWidth/2}, 0)`},[n("circle",{cx:"0",cy:"0",r:t.svgSize.circleRadius,class:g({soc:i.soc})},null,10,G),i.soc?(o(),c("circle",{key:0,cx:"0",cy:"0",r:t.svgSize.circleRadius,"clip-path":`url(#clip-soc-${i.id})`},null,8,O)):u("",!0),n("image",{href:i.icon,x:-s.svgIconWidth/2,y:-s.svgIconHeight/2,height:s.svgIconHeight,width:s.svgIconWidth},null,8,U)],8,Y)],10,L))),128))])],8,M))])]),_:1})]),_:1})}const K=f(P,[["render",J],["__scopeId","data-v-9e868ed0"]]),Q={name:"EnergyFlowView",components:{FlowCard:K},props:{changesLocked:{required:!1,type:Boolean,default:!1}}};function Z(e,r,h,a,t,s){const l=v("FlowCard");return o(),x(l)}const ne=f(Q,[["render",Z]]);export{ne as default};
+import{u as z}from"./index-CtySFcBa.js";import{D as V}from"./DashBoardCard-BterAPyf.js";import{o,l as x,n as d,k as m,s as R,j as n,e as c,F as C,A as S,y as g,i as u,x as w,O as p,q as v}from"./vendor-CZ1MGz7j.js";import{_ as f}from"./vendor-inkline-Ce5aFAnW.js";import"./vendor-fortawesome-C68yAli-.js";const P={name:"DashboardFlowCard",components:{DashBoardCard:V},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:z(),svgSize:{xMin:0,xMax:150,yMin:0,yMax:105,circleRadius:10,strokeWidth:.5,textSize:5,numRows:4,numColumns:3}}},computed:{svgViewBox(){return`${this.svgSize.xMin} ${this.svgSize.yMin} ${this.svgSize.xMax} ${this.svgSize.yMax}`},svgFontSize(){return`${this.svgSize.textSize}px`},svgRectWidth(){return(this.svgSize.xMax-this.svgSize.xMin-this.svgSize.strokeWidth-this.svgSize.numColumns)/this.svgSize.numColumns},svgStrokeWidth(){return this.svgSize.strokeWidth},svgIconWidth(){return this.svgSize.circleRadius},svgIconHeight(){return this.svgSize.circleRadius},gridPower(){return this.mqttStore.getGridPower("object")},pvPower(){return this.mqttStore.getPvPower("object")},homePower(){return this.mqttStore.getHomePower("object")},batteryPower(){return this.mqttStore.getBatteryPower("object")},batterySoc(){return this.mqttStore.getBatterySoc("object").value/100},connectedChargePoints(){return this.mqttStore.getChargePointIds},chargePointSumPower(){return this.mqttStore.getChargePointSumPower("object")},chargePoint1Power(){return this.connectedChargePoints.length>0?this.mqttStore.getChargePointPower(this.connectedChargePoints[0],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint2Power(){return this.connectedChargePoints.length>1?this.mqttStore.getChargePointPower(this.connectedChargePoints[1],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint3Power(){return this.connectedChargePoints.length>2?this.mqttStore.getChargePointPower(this.connectedChargePoints[2],"object")||{textValue:"Loading..."}:{textValue:"N/A"}},chargePoint1Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[0])},chargePoint2Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[1])},chargePoint3Name(){return this.mqttStore.getChargePointName(this.connectedChargePoints[2])},chargePoint1VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[0])},chargePoint2VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[1])},chargePoint3VehicleConnected(){return this.mqttStore.getChargePointPlugState(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[0])},chargePoint2ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[1])},chargePoint3ConnectedVehicleName(){return this.mqttStore.getChargePointConnectedVehicleName(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[0])},chargePoint2ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[1])},chargePoint3ConnectedVehicleChargeMode(){return this.mqttStore.getChargePointConnectedVehicleChargeMode(this.connectedChargePoints[2])},chargePoint1ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[0]).soc/100},chargePoint2ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[1]).soc/100},chargePoint3ConnectedVehicleSoc(){return this.mqttStore.getChargePointConnectedVehicleSoc(this.connectedChargePoints[2]).soc/100},gridConsumption(){return this.gridPower.value>0},gridFeedIn(){return this.gridPower.value<0},homeConsumption(){return this.homePower.value>0},homeProduction(){return this.homePower.value<0},pvProduction(){return this.pvPower.value>0},batteryDischarging(){return this.batteryPower.value<0},batteryCharging(){return this.batteryPower.value>0},chargePointSumCharging(){return this.chargePointSumPower.value>0},chargePointSumDischarging(){return this.chargePointSumPower.value<0},chargePoint1Charging(){return this.chargePoint1Power.value>0},chargePoint1Discharging(){return this.chargePoint1Power.value<0},chargePoint2Charging(){return this.chargePoint2Power.value>0},chargePoint2Discharging(){return this.chargePoint2Power.value<0},chargePoint3Charging(){return this.chargePoint3Power.value>0},chargePoint3Discharging(){return this.chargePoint3Power.value<0},svgComponents(){var e=[];return this.mqttStore.getThemeConfiguration.enable_dashboard_card_grid&&e.push({id:"grid",class:{base:"grid",valueLabel:this.gridFeedIn?"fill-success":this.gridConsumption?"fill-danger":"",animated:this.gridConsumption,animatedReverse:this.gridFeedIn},position:{row:0,column:0},label:["EVU",this.gridPower.textValue],icon:"icons/owbGrid.svg"}),this.mqttStore.getThemeConfiguration.enable_dashboard_card_home_consumption&&e.push({id:"home",class:{base:"home",valueLabel:"",animated:this.homeProduction,animatedReverse:this.homeConsumption},position:{row:0,column:2},label:["Haus",this.homePower.textValue],icon:"icons/owbHouse.svg"}),this.mqttStore.getPvConfigured&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_inverter_sum&&e.push({id:"pv",class:{base:"pv",valueLabel:this.pvProduction?"fill-success":"",animated:this.pvProduction,animatedReverse:!1},position:{row:1,column:0},label:["PV",this.pvPower.textValue],icon:"icons/owbPV.svg"}),this.mqttStore.getBatteryConfigured&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_battery_sum&&e.push({id:"battery",class:{base:"battery",valueLabel:"",animated:this.batteryDischarging,animatedReverse:this.batteryCharging},position:{row:1,column:2},label:["Speicher",this.batteryPower.textValue],soc:this.batterySoc,icon:"icons/owbBattery.svg"}),this.connectedChargePoints.length>0&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_charge_point_sum&&(this.connectedChargePoints.length<=3?(e.push({id:"charge-point-1",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint1Discharging,animatedReverse:this.chargePoint1Charging},position:{row:2,column:this.connectedChargePoints.length>1?0:1},label:[this.chargePoint1Name,this.chargePoint1Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint1VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-1",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint1ConnectedVehicleChargeMode.class},position:{row:3,column:this.connectedChargePoints.length>1?0:1},label:[this.chargePoint1ConnectedVehicleName||"---",this.chargePoint1ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint1ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"}),this.connectedChargePoints.length>1&&(e.push({id:"charge-point-2",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint2Discharging,animatedReverse:this.chargePoint2Charging},position:{row:2,column:this.connectedChargePoints.length>2?1:2},label:[this.chargePoint2Name,this.chargePoint2Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint2VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-2",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint2ConnectedVehicleChargeMode.class},position:{row:3,column:this.connectedChargePoints.length>2?1:2},label:[this.chargePoint2ConnectedVehicleName||"---",this.chargePoint2ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint2ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"}),this.connectedChargePoints.length>2&&(e.push({id:"charge-point-3",class:{base:"charge-point",valueLabel:"",animated:this.chargePoint3Discharging,animatedReverse:this.chargePoint3Charging},position:{row:2,column:2},label:[this.chargePoint3Name,this.chargePoint3Power.textValue],icon:"icons/owbChargePoint.svg"}),this.chargePoint3VehicleConnected&&this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles&&e.push({id:"vehicle-3",class:{base:"vehicle",valueLabel:"fill-"+this.chargePoint3ConnectedVehicleChargeMode.class},position:{row:3,column:2},label:[this.chargePoint3ConnectedVehicleName||"---",this.chargePoint3ConnectedVehicleChargeMode.label||"---"],soc:this.chargePoint3ConnectedVehicleSoc,icon:"icons/owbVehicle.svg"})))):e.push({id:"charge-point-sum",class:{base:"charge-point",valueLabel:"",animated:this.chargePointSumDischarging,animatedReverse:this.chargePointSumCharging},position:{row:2,column:1},label:["Ladepunkte",this.chargePointSumPower.textValue],icon:"icons/owbChargePoint.svg"})),(!this.mqttStore.getThemeConfiguration.enable_dashboard_card_vehicles||this.connectedChargePoints.length===0||this.connectedChargePoints.length>3)&&this.setSvgNumRows(3),e}},methods:{setSvgNumRows(e){this.svgSize.numRows=e},calcRowY(e){let r=this.svgSize.yMin+this.svgSize.strokeWidth+this.svgSize.circleRadius,a=this.svgSize.yMax-this.svgSize.strokeWidth-this.svgSize.circleRadius-r;return e*(a/(this.svgSize.numRows-1))+r},calcColumnX(e){let r=this.svgSize.xMin+this.svgSize.strokeWidth+this.svgRectWidth/2,a=this.svgSize.xMax-this.svgSize.strokeWidth-this.svgRectWidth/2-r;return e*(a/(this.svgSize.numColumns-1))+r},calcFlowLineAnchorX(e){let r=this.calcColumnX(e);return e<(this.svgSize.numColumns-1)/2?r+this.svgRectWidth/2-this.svgSize.circleRadius:e>(this.svgSize.numColumns-1)/2?r-this.svgRectWidth/2+this.svgSize.circleRadius:r},calcSvgElementBoundingBox(e){let r=document.getElementById(e);if(r==null)return{x:0,y:0,width:0,height:0};let h=r.getBBox();return{x:h.x,y:h.y,width:h.width,height:h.height}},beginAnimation(e){var r;this.$refs[e]!=null&&((r=this.$refs[e][0])==null||r.beginElement())}}},b=()=>{p(e=>({"2d21ce23":e.svgStrokeWidth,"0cb0615b":e.svgFontSize}))},_=P.setup;P.setup=_?(e,r)=>(b(),_(e,r)):b;const q={class:"svg-container"},M=["viewBox"],W={id:"layer1",style:{display:"inline"}},k=["d"],N={id:"layer2",style:{display:"inline"}},B=["cx","cy","r"],L=["transform","onClick"],F=["id"],D=["x","y","width","height"],j=["id"],I=["x","y","width","height","rx","ry"],E=["x","y","width","height","rx","ry"],T=["clip-path"],A=["id","x","y"],X=["values"],H=["id","x","y"],Y=["transform"],G=["r"],O=["r","clip-path"],U=["href","x","y","height","width"];function J(e,r,h,a,t,s){const l=v("i-container"),y=v("dash-board-card");return o(),x(y,{color:"primary"},{headerLeft:d(()=>r[0]||(r[0]=[m(" Übersicht - Energiefluss ")])),default:d(()=>[R(l,null,{default:d(()=>[n("div",q,[(o(),c("svg",{viewBox:s.svgViewBox,version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},[n("g",W,[(o(!0),c(C,null,S(s.svgComponents,i=>(o(),c("path",{key:i.id,class:g([i.class.base,{animated:i.class.animated},{animatedReverse:i.class.animatedReverse}]),d:i.class.base!=="vehicle"?`M ${s.calcFlowLineAnchorX(i.position.column)}, ${s.calcRowY(i.position.row)} ${s.calcColumnX(1)}, ${s.calcRowY(1)}`:""},null,10,k))),128))]),n("g",N,[n("circle",{id:"center",cx:s.calcColumnX(1),cy:s.calcRowY(1),r:t.svgSize.circleRadius/3},null,8,B),(o(!0),c(C,null,S(s.svgComponents,i=>(o(),c("g",{key:i.id,class:g(i.class.base),transform:`translate(${s.calcColumnX(i.position.column)}, ${s.calcRowY(i.position.row)})`,onClick:$=>s.beginAnimation(`animate-label-${i.id}`)},[n("defs",null,[i.soc?(o(),c("clipPath",{key:0,id:`clip-soc-${i.id}`},[n("rect",{x:-t.svgSize.circleRadius-t.svgSize.strokeWidth,y:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*(1-2*i.soc),width:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*2,height:(t.svgSize.circleRadius+t.svgSize.strokeWidth)*2*i.soc},null,8,D)],8,F)):u("",!0),n("clipPath",{id:`clip-label-${i.id}`},[n("rect",{x:-s.svgRectWidth/2,y:-t.svgSize.circleRadius,width:s.svgRectWidth,height:t.svgSize.circleRadius*2,rx:t.svgSize.circleRadius,ry:t.svgSize.circleRadius},null,8,I)],8,j)]),n("rect",{x:-s.svgRectWidth/2,y:-t.svgSize.circleRadius,width:s.svgRectWidth,height:t.svgSize.circleRadius*2,rx:t.svgSize.circleRadius,ry:t.svgSize.circleRadius},null,8,E),n("text",{"clip-path":`url(#clip-label-${i.id})`},[n("tspan",{id:`label-${i.id}`,"text-anchor":"start",x:-s.svgRectWidth/2+2*t.svgSize.circleRadius+t.svgSize.strokeWidth,y:-t.svgSize.textSize/2},[s.calcSvgElementBoundingBox(`label-${i.id}`).width>s.svgRectWidth-2*t.svgSize.circleRadius-2*t.svgSize.strokeWidth?(o(),c("animate",{key:0,ref_for:!0,ref:`animate-label-${i.id}`,xmlns:"http://www.w3.org/2000/svg",attributeName:"x",dur:"5s",values:"0; "+(-s.calcSvgElementBoundingBox(`label-${i.id}`).width+s.svgRectWidth-2.5*t.svgSize.circleRadius-2*t.svgSize.strokeWidth)+"; 0;",repeatCount:"0",begin:"2s",additive:"sum"},null,8,X)):u("",!0),m(" "+w(i.label[0]),1)],8,A),n("tspan",{id:`value-${i.id}`,class:g(i.class.valueLabel),"text-anchor":"end",x:2*t.svgSize.circleRadius+t.svgSize.strokeWidth,y:t.svgSize.textSize},w(i.label[1]),11,H)],8,T),n("g",{transform:`translate(${t.svgSize.circleRadius-s.svgRectWidth/2}, 0)`},[n("circle",{cx:"0",cy:"0",r:t.svgSize.circleRadius,class:g({soc:i.soc})},null,10,G),i.soc?(o(),c("circle",{key:0,cx:"0",cy:"0",r:t.svgSize.circleRadius,"clip-path":`url(#clip-soc-${i.id})`},null,8,O)):u("",!0),n("image",{href:i.icon,x:-s.svgIconWidth/2,y:-s.svgIconHeight/2,height:s.svgIconHeight,width:s.svgIconWidth},null,8,U)],8,Y)],10,L))),128))])],8,M))])]),_:1})]),_:1})}const K=f(P,[["render",J],["__scopeId","data-v-9e868ed0"]]),Q={name:"EnergyFlowView",components:{FlowCard:K},props:{changesLocked:{required:!1,type:Boolean,default:!1}}};function Z(e,r,h,a,t,s){const l=v("FlowCard");return o(),x(l)}const ne=f(Q,[["render",Z]]);export{ne as default};
diff --git a/packages/modules/display_themes/cards/web/assets/StatusView-uYO1gy9a.js b/packages/modules/display_themes/cards/web/assets/StatusView-DclrRcZL.js
similarity index 99%
rename from packages/modules/display_themes/cards/web/assets/StatusView-uYO1gy9a.js
rename to packages/modules/display_themes/cards/web/assets/StatusView-DclrRcZL.js
index 90793f53ae..29c62f35d1 100644
--- a/packages/modules/display_themes/cards/web/assets/StatusView-uYO1gy9a.js
+++ b/packages/modules/display_themes/cards/web/assets/StatusView-DclrRcZL.js
@@ -1 +1 @@
-import{u as S}from"./index-CHLaD7ED.js";import{l as y,C as x,F as k,D as V}from"./vendor-fortawesome-C68yAli-.js";import{_ as w}from"./vendor-inkline-Ce5aFAnW.js";import{o as _,l as f,n as e,k as s,s as o,q as n,I as M,j as A,i as C}from"./vendor-CZ1MGz7j.js";import{D as I}from"./DashBoardCard-BterAPyf.js";y.add(x);const P={name:"ReloadButton",components:{FontAwesomeIcon:k},props:{},data(){return{}},methods:{reloadDisplay(){location.reload()}}};function F(b,t,p,h,u,m){const d=n("FontAwesomeIcon"),l=n("i-button");return _(),f(l,{color:"success",size:"lg",onClick:t[0]||(t[0]=a=>m.reloadDisplay())},{default:e(()=>[t[1]||(t[1]=s(" Display neu laden ")),o(d,{"fixed-width":"",icon:["fas","fa-undo"]})]),_:1})}const z=w(P,[["render",F]]);y.add(x);const D={name:"RebootButton",components:{FontAwesomeIcon:k},props:{},data(){return{mqttStore:S(),showModal:!1}},methods:{toggleModal(){this.showModal=!this.showModal},cancel(){this.toggleModal()},confirm(){this.toggleModal(),console.log("reboot requested"),this.mqttStore.settings.parentChargePoint1!==void 0?(console.log("rebooting secondary charge point:",this.mqttStore.settings.parentChargePoint1),this.$root.sendSystemCommand("chargepointReboot",{chargePoint:this.mqttStore.settings.parentChargePoint1})):(console.log("rebooting primary system"),this.$root.sendSystemCommand("systemReboot"))}}};function N(b,t,p,h,u,m){const d=n("FontAwesomeIcon"),l=n("i-container"),a=n("i-button"),r=n("i-column"),c=n("i-row"),g=n("i-modal");return _(),f(a,{color:"warning",size:"lg",onClick:t[3]||(t[3]=i=>m.toggleModal())},{default:e(()=>[t[8]||(t[8]=s(" openWB neu starten ")),o(d,{"fixed-width":"",icon:["fas","fa-undo"]}),(_(),f(M,{to:"body"},[o(g,{modelValue:u.showModal,"onUpdate:modelValue":t[2]||(t[2]=i=>u.showModal=i),size:"sm"},{header:e(()=>t[4]||(t[4]=[s(" openWB neu starten... ")])),footer:e(()=>[o(l,null,{default:e(()=>[o(c,null,{default:e(()=>[o(r,{class:"_text-align:right"},{default:e(()=>[o(a,{color:"success",onClick:t[0]||(t[0]=i=>m.cancel())},{default:e(()=>t[6]||(t[6]=[s(" Zurück ")])),_:1})]),_:1}),o(r,null,{default:e(()=>[o(a,{color:"danger",onClick:t[1]||(t[1]=i=>m.confirm())},{default:e(()=>t[7]||(t[7]=[s(" Neustart ")])),_:1})]),_:1})]),_:1})]),_:1})]),default:e(()=>[o(l,null,{default:e(()=>t[5]||(t[5]=[s(" Möchten Sie diese openWB wirklich neu starten? ")])),_:1})]),_:1},8,["modelValue"])]))]),_:1})}const R=w(D,[["render",N]]);y.add(V);const W={name:"ShutdownButton",components:{FontAwesomeIcon:k},props:{},data(){return{mqttStore:S(),showModal:!1}},methods:{toggleModal(){this.showModal=!this.showModal},cancel(){this.toggleModal()},confirm(){this.toggleModal(),console.log("shutdown requested"),this.mqttStore.settings.parentChargePoint1!==void 0?(console.log("shutting down secondary charge point:",this.mqttStore.settings.parentChargePoint1),this.$root.sendSystemCommand("chargepointShutdown",{chargePoint:this.mqttStore.settings.parentChargePoint1})):(console.log("shutting down primary system"),this.$root.sendSystemCommand("systemShutdown"))}}};function L(b,t,p,h,u,m){const d=n("FontAwesomeIcon"),l=n("i-container"),a=n("i-button"),r=n("i-column"),c=n("i-row"),g=n("i-modal");return _(),f(a,{color:"danger",size:"lg",onClick:t[3]||(t[3]=i=>m.toggleModal())},{default:e(()=>[t[8]||(t[8]=s(" openWB ausschalten ")),o(d,{"fixed-width":"",icon:["fas","fa-power-off"]}),(_(),f(M,{to:"body"},[o(g,{modelValue:u.showModal,"onUpdate:modelValue":t[2]||(t[2]=i=>u.showModal=i),size:"sm"},{header:e(()=>t[4]||(t[4]=[s(" openWB ausschalten... ")])),footer:e(()=>[o(l,null,{default:e(()=>[o(c,null,{default:e(()=>[o(r,{class:"_text-align:right"},{default:e(()=>[o(a,{color:"success",onClick:t[0]||(t[0]=i=>m.cancel())},{default:e(()=>t[6]||(t[6]=[s(" Zurück ")])),_:1})]),_:1}),o(r,null,{default:e(()=>[o(a,{color:"danger",onClick:t[1]||(t[1]=i=>m.confirm())},{default:e(()=>t[7]||(t[7]=[s(" Ausschalten ")])),_:1})]),_:1})]),_:1})]),_:1})]),default:e(()=>[o(l,null,{default:e(()=>t[5]||(t[5]=[s(" Möchten Sie diese openWB wirklich ausschalten?"),A("br",null,null,-1),s(" Nach dem Ausschalten muss die Ladestation komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1},8,["modelValue"])]))]),_:1})}const T=w(W,[["render",L]]),U={name:"StatusView",components:{ReloadButton:z,RebootButton:R,ShutdownButton:T,DashBoardCard:I},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:S()}}};function Z(b,t,p,h,u,m){const d=n("i-form-label"),l=n("i-column"),a=n("i-input"),r=n("i-row"),c=n("i-form-group"),g=n("reload-button"),i=n("reboot-button"),q=n("shutdown-button"),v=n("i-form"),B=n("i-container"),$=n("dash-board-card");return _(),f($,{color:"primary"},{headerLeft:e(()=>t[0]||(t[0]=[s(" Status ")])),default:e(()=>[o(B,null,{default:e(()=>[o(v,null,{default:e(()=>[o(r,null,{default:e(()=>[o(l,null,{default:e(()=>[o(c,null,{default:e(()=>[o(r,{class:"_margin-top:2"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[1]||(t[1]=[s(" IP-Adresse ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_ip",plaintext:"","model-value":u.mqttStore.getSystemIp},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[2]||(t[2]=[s(" Systemzeit ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_time",plaintext:"","model-value":u.mqttStore.getSystemTime},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[3]||(t[3]=[s(" Version ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_version",plaintext:"","model-value":u.mqttStore.getSystemVersion},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[4]||(t[4]=[s(" Version (Details) ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_commit",plaintext:"","model-value":u.mqttStore.getSystemCurrentCommit},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[5]||(t[5]=[s(" Entwicklungszweig ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_branch",plaintext:"","model-value":u.mqttStore.getSystemBranch},null,8,["model-value"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),p.changesLocked?C("",!0):(_(),f(r,{key:0,class:"_margin-top:5",between:""},{default:e(()=>[o(l,null,{default:e(()=>[o(g,{block:""})]),_:1})]),_:1})),p.changesLocked?C("",!0):(_(),f(r,{key:1,between:""},{default:e(()=>[o(l,null,{default:e(()=>[o(i,{block:"",class:"_margin-top:2"})]),_:1}),o(l,null,{default:e(()=>[o(q,{block:"",class:"_margin-top:2"})]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})}const J=w(U,[["render",Z]]);export{J as default};
+import{u as S}from"./index-CtySFcBa.js";import{l as y,C as x,F as k,D as V}from"./vendor-fortawesome-C68yAli-.js";import{_ as w}from"./vendor-inkline-Ce5aFAnW.js";import{o as _,l as f,n as e,k as s,s as o,q as n,I as M,j as A,i as C}from"./vendor-CZ1MGz7j.js";import{D as I}from"./DashBoardCard-BterAPyf.js";y.add(x);const P={name:"ReloadButton",components:{FontAwesomeIcon:k},props:{},data(){return{}},methods:{reloadDisplay(){location.reload()}}};function F(b,t,p,h,u,m){const d=n("FontAwesomeIcon"),l=n("i-button");return _(),f(l,{color:"success",size:"lg",onClick:t[0]||(t[0]=a=>m.reloadDisplay())},{default:e(()=>[t[1]||(t[1]=s(" Display neu laden ")),o(d,{"fixed-width":"",icon:["fas","fa-undo"]})]),_:1})}const z=w(P,[["render",F]]);y.add(x);const D={name:"RebootButton",components:{FontAwesomeIcon:k},props:{},data(){return{mqttStore:S(),showModal:!1}},methods:{toggleModal(){this.showModal=!this.showModal},cancel(){this.toggleModal()},confirm(){this.toggleModal(),console.log("reboot requested"),this.mqttStore.settings.parentChargePoint1!==void 0?(console.log("rebooting secondary charge point:",this.mqttStore.settings.parentChargePoint1),this.$root.sendSystemCommand("chargepointReboot",{chargePoint:this.mqttStore.settings.parentChargePoint1})):(console.log("rebooting primary system"),this.$root.sendSystemCommand("systemReboot"))}}};function N(b,t,p,h,u,m){const d=n("FontAwesomeIcon"),l=n("i-container"),a=n("i-button"),r=n("i-column"),c=n("i-row"),g=n("i-modal");return _(),f(a,{color:"warning",size:"lg",onClick:t[3]||(t[3]=i=>m.toggleModal())},{default:e(()=>[t[8]||(t[8]=s(" openWB neu starten ")),o(d,{"fixed-width":"",icon:["fas","fa-undo"]}),(_(),f(M,{to:"body"},[o(g,{modelValue:u.showModal,"onUpdate:modelValue":t[2]||(t[2]=i=>u.showModal=i),size:"sm"},{header:e(()=>t[4]||(t[4]=[s(" openWB neu starten... ")])),footer:e(()=>[o(l,null,{default:e(()=>[o(c,null,{default:e(()=>[o(r,{class:"_text-align:right"},{default:e(()=>[o(a,{color:"success",onClick:t[0]||(t[0]=i=>m.cancel())},{default:e(()=>t[6]||(t[6]=[s(" Zurück ")])),_:1})]),_:1}),o(r,null,{default:e(()=>[o(a,{color:"danger",onClick:t[1]||(t[1]=i=>m.confirm())},{default:e(()=>t[7]||(t[7]=[s(" Neustart ")])),_:1})]),_:1})]),_:1})]),_:1})]),default:e(()=>[o(l,null,{default:e(()=>t[5]||(t[5]=[s(" Möchten Sie diese openWB wirklich neu starten? ")])),_:1})]),_:1},8,["modelValue"])]))]),_:1})}const R=w(D,[["render",N]]);y.add(V);const W={name:"ShutdownButton",components:{FontAwesomeIcon:k},props:{},data(){return{mqttStore:S(),showModal:!1}},methods:{toggleModal(){this.showModal=!this.showModal},cancel(){this.toggleModal()},confirm(){this.toggleModal(),console.log("shutdown requested"),this.mqttStore.settings.parentChargePoint1!==void 0?(console.log("shutting down secondary charge point:",this.mqttStore.settings.parentChargePoint1),this.$root.sendSystemCommand("chargepointShutdown",{chargePoint:this.mqttStore.settings.parentChargePoint1})):(console.log("shutting down primary system"),this.$root.sendSystemCommand("systemShutdown"))}}};function L(b,t,p,h,u,m){const d=n("FontAwesomeIcon"),l=n("i-container"),a=n("i-button"),r=n("i-column"),c=n("i-row"),g=n("i-modal");return _(),f(a,{color:"danger",size:"lg",onClick:t[3]||(t[3]=i=>m.toggleModal())},{default:e(()=>[t[8]||(t[8]=s(" openWB ausschalten ")),o(d,{"fixed-width":"",icon:["fas","fa-power-off"]}),(_(),f(M,{to:"body"},[o(g,{modelValue:u.showModal,"onUpdate:modelValue":t[2]||(t[2]=i=>u.showModal=i),size:"sm"},{header:e(()=>t[4]||(t[4]=[s(" openWB ausschalten... ")])),footer:e(()=>[o(l,null,{default:e(()=>[o(c,null,{default:e(()=>[o(r,{class:"_text-align:right"},{default:e(()=>[o(a,{color:"success",onClick:t[0]||(t[0]=i=>m.cancel())},{default:e(()=>t[6]||(t[6]=[s(" Zurück ")])),_:1})]),_:1}),o(r,null,{default:e(()=>[o(a,{color:"danger",onClick:t[1]||(t[1]=i=>m.confirm())},{default:e(()=>t[7]||(t[7]=[s(" Ausschalten ")])),_:1})]),_:1})]),_:1})]),_:1})]),default:e(()=>[o(l,null,{default:e(()=>t[5]||(t[5]=[s(" Möchten Sie diese openWB wirklich ausschalten?"),A("br",null,null,-1),s(" Nach dem Ausschalten muss die Ladestation komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1},8,["modelValue"])]))]),_:1})}const T=w(W,[["render",L]]),U={name:"StatusView",components:{ReloadButton:z,RebootButton:R,ShutdownButton:T,DashBoardCard:I},props:{changesLocked:{required:!1,type:Boolean,default:!1}},data(){return{mqttStore:S()}}};function Z(b,t,p,h,u,m){const d=n("i-form-label"),l=n("i-column"),a=n("i-input"),r=n("i-row"),c=n("i-form-group"),g=n("reload-button"),i=n("reboot-button"),q=n("shutdown-button"),v=n("i-form"),B=n("i-container"),$=n("dash-board-card");return _(),f($,{color:"primary"},{headerLeft:e(()=>t[0]||(t[0]=[s(" Status ")])),default:e(()=>[o(B,null,{default:e(()=>[o(v,null,{default:e(()=>[o(r,null,{default:e(()=>[o(l,null,{default:e(()=>[o(c,null,{default:e(()=>[o(r,{class:"_margin-top:2"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[1]||(t[1]=[s(" IP-Adresse ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_ip",plaintext:"","model-value":u.mqttStore.getSystemIp},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[2]||(t[2]=[s(" Systemzeit ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_time",plaintext:"","model-value":u.mqttStore.getSystemTime},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[3]||(t[3]=[s(" Version ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_version",plaintext:"","model-value":u.mqttStore.getSystemVersion},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[4]||(t[4]=[s(" Version (Details) ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_commit",plaintext:"","model-value":u.mqttStore.getSystemCurrentCommit},null,8,["model-value"])]),_:1})]),_:1}),o(r,{class:"_margin-top:1"},{default:e(()=>[o(l,{xl:"2",lg:"3",md:"4"},{default:e(()=>[o(d,null,{default:e(()=>t[5]||(t[5]=[s(" Entwicklungszweig ")])),_:1})]),_:1}),o(l,null,{default:e(()=>[o(a,{id:"input_system_branch",plaintext:"","model-value":u.mqttStore.getSystemBranch},null,8,["model-value"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),p.changesLocked?C("",!0):(_(),f(r,{key:0,class:"_margin-top:5",between:""},{default:e(()=>[o(l,null,{default:e(()=>[o(g,{block:""})]),_:1})]),_:1})),p.changesLocked?C("",!0):(_(),f(r,{key:1,between:""},{default:e(()=>[o(l,null,{default:e(()=>[o(i,{block:"",class:"_margin-top:2"})]),_:1}),o(l,null,{default:e(()=>[o(q,{block:"",class:"_margin-top:2"})]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})}const J=w(U,[["render",Z]]);export{J as default};
diff --git a/packages/modules/display_themes/cards/web/assets/index-BkCKa8xR.css b/packages/modules/display_themes/cards/web/assets/index-CqRNIbkO.css
similarity index 85%
rename from packages/modules/display_themes/cards/web/assets/index-BkCKa8xR.css
rename to packages/modules/display_themes/cards/web/assets/index-CqRNIbkO.css
index fc435732b5..5d4307d7e9 100644
--- a/packages/modules/display_themes/cards/web/assets/index-BkCKa8xR.css
+++ b/packages/modules/display_themes/cards/web/assets/index-CqRNIbkO.css
@@ -1 +1 @@
-.nav-item[data-v-1db6ae73]{margin-bottom:var(--spacing)!important;border-radius:var(--border-radius)}.nav-item.-active[data-v-1db6ae73]{background-color:var(--color--primary)}.pin-button-column[data-v-4e2103db]{display:flex;flex-grow:1}.pin-button[data-v-4e2103db]{min-height:2em;flex-grow:1;font-size:200%;font-weight:700}.touch-blocker[data-v-e4e632d4]{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}[data-v-e4e632d4] .modal{box-shadow:none}[data-v-e4e632d4] .modal>.modal-body{display:flex;flex-direction:column;align-items:center;background:transparent;border:none}.layout-aside[data-v-6c4642a5]{----width: 10rem !important}.layout-content[data-v-6c4642a5]{margin-left:calc(10rem + var(--spacing));margin-right:var(--spacing)}hr[data-v-6c4642a5]{border-color:var(--color--primary);margin:var(--spacing) 0}.container[data-v-16686e30],.row[data-v-16686e30]{height:100vh}.card[data-v-16686e30]{----background: inherit !important;----body--color: var(--contrast-color-for-dark-background) !important}img.logo[data-v-16686e30]{max-width:100%}:root{--spacing: .5rem}html,body{overscroll-behavior:none}body{overflow-y:overlay}html,body{scrollbar-width:thin;scrollbar-color:var(--color--primary-70) transparent}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-thumb{background:var(--color--primary-70);border-radius:2px}
+.nav-item[data-v-1db6ae73]{margin-bottom:var(--spacing)!important;border-radius:var(--border-radius)}.nav-item.-active[data-v-1db6ae73]{background-color:var(--color--primary)}.pin-button-column[data-v-4e2103db]{display:flex;flex-grow:1}.pin-button[data-v-4e2103db]{min-height:2em;flex-grow:1;font-size:200%;font-weight:700}.touch-blocker[data-v-e4e632d4]{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}[data-v-e4e632d4] .modal{box-shadow:none}[data-v-e4e632d4] .modal>.modal-body{display:flex;flex-direction:column;align-items:center;background:transparent;border:none}.layout-aside[data-v-ca2dbc73]{----width: 10rem !important}.layout-content[data-v-ca2dbc73]{margin-left:calc(10rem + var(--spacing));margin-right:var(--spacing)}hr[data-v-ca2dbc73]{border-color:var(--color--primary);margin:var(--spacing) 0}.container[data-v-16686e30],.row[data-v-16686e30]{height:100vh}.card[data-v-16686e30]{----background: inherit !important;----body--color: var(--contrast-color-for-dark-background) !important}img.logo[data-v-16686e30]{max-width:100%}:root{--spacing: .5rem}html,body{overscroll-behavior:none}body{overflow-y:overlay}html,body{scrollbar-width:thin;scrollbar-color:var(--color--primary-70) transparent}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-thumb{background:var(--color--primary-70);border-radius:2px}
diff --git a/packages/modules/display_themes/cards/web/assets/index-CHLaD7ED.js b/packages/modules/display_themes/cards/web/assets/index-CtySFcBa.js
similarity index 70%
rename from packages/modules/display_themes/cards/web/assets/index-CHLaD7ED.js
rename to packages/modules/display_themes/cards/web/assets/index-CtySFcBa.js
index 1484935e77..8ddcd79147 100644
--- a/packages/modules/display_themes/cards/web/assets/index-CHLaD7ED.js
+++ b/packages/modules/display_themes/cards/web/assets/index-CtySFcBa.js
@@ -1,2 +1,2 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashBoardView-_HZMNhnS.js","assets/DashBoardCard-BterAPyf.js","assets/vendor-inkline-Ce5aFAnW.js","assets/vendor-CZ1MGz7j.js","assets/vendor-inkline-BDgt6n8h.css","assets/DashBoardCard-DKbC8x2S.css","assets/ChargePointPlugBadge-DyF92yTK.js","assets/vendor-fortawesome-C68yAli-.js","assets/ChargePointPlugBadge-DqNX7D_z.css","assets/DashBoardView-CrVFeUF-.css","assets/EnergyFlowView-BcB2FDT1.js","assets/EnergyFlowView-C3xLYKue.css","assets/ChargePointsView-CZeUBF37.js","assets/ChargePointsView-DPrjgv0h.css","assets/StatusView-uYO1gy9a.js"])))=>i.map(i=>d[i]);
-import{o as p,e as B,k as _,x as W,f as y,j as V,F as P,H as j,q as u,l as m,n as s,i as w,A as D,s as l,I,y as A,R,J as U,K as H,L as z,M as G,N as K}from"./vendor-CZ1MGz7j.js";import{_ as v,I as J,c as Z}from"./vendor-inkline-Ce5aFAnW.js";import{l as E,f as L,a as q,F as O,b as Y,c as Q}from"./vendor-fortawesome-C68yAli-.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))i(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();const X={name:"DateTime",data(){return{dateTimeInterval:"",date:"",time:""}},mounted(){this.update(),this.dateTimeInterval=setInterval(this.update,1e3)},beforeUnmount(){clearInterval(this.dateTimeInterval)},methods:{update(){const e=new Date,t={weekday:"short",year:"numeric",month:"2-digit",day:"2-digit"},n={hour:"2-digit",minute:"2-digit",second:"2-digit"};this.date=e.toLocaleDateString(void 0,t),this.time=e.toLocaleTimeString(void 0,n)}}};function ee(e,t,n,i,o,r){return p(),B(P,null,[_(W(o.time),1),y(e.$slots,"default",{},()=>[t[0]||(t[0]=V("br",null,null,-1))]),_(W(o.date),1)],64)}const te=v(X,[["render",ee]]),S=j("mqtt",{state:()=>({settings:{localIp:void 0,localBranch:void 0,localCommit:void 0,localVersion:void 0,parentChargePoint1:void 0,parentChargePoint2:void 0},topics:{},chartData:{}}),getters:{getChargePointFilter:e=>{let t=[];return e.settings.parentChargePoint1!==void 0&&t.push(e.settings.parentChargePoint1),e.settings.parentChargePoint2!==void 0&&t.push(e.settings.parentChargePoint2),t},getWildcardIndexList:e=>(t,n=!1)=>{let i=t;n||(i="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let o=Object.keys(e.topics).filter(r=>r.match(i));return o.forEach((r,a,c)=>{c[a]=parseInt(r.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),o},getWildcardTopics:e=>(t,n=!1)=>{let i=t;return n||(i="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(e.topics).filter(o=>o.match(i)).reduce((o,r)=>({...o,[r]:e.topics[r]}),{})},getObjectIds:e=>t=>{function n(i){let o=[];return i!==void 0&&i.forEach(r=>{r.type==t&&o.push(r.id),o=[...o,...n(r.children)]}),o}return n(e.topics["openWB/counter/get/hierarchy"])},getValueBool:e=>(t,n=!1)=>{let i=e.topics[t];return i!==void 0?i:(console.warn("topic not found! using default",t,n),n)},getValueString:e=>(t,n="W",i="",o=!0,r=!1,a="---",c=void 0)=>{var d=!1,g=e.topics[t];if(g===void 0||c!==void 0&&g[c]===void 0)console.warn("topic not found! using default",t,a),C=a;else{c!==void 0&&(g=g[c]),r&&(g*=-1);for(var C=g.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:0}),h=g;o&&(h>999||h<-999);)switch(h=h/1e3,d=!0,i){case"":i="k";break;case"k":i="M";break;case"M":i="G";break}C=h.toLocaleString(void 0,{minimumFractionDigits:d?2:0,maximumFractionDigits:d?2:0})}return{textValue:`${C} ${i}${n}`,value:g,unit:n,scaledValue:h,scaledUnit:`${i}${n}`}},getChartData:e=>t=>e.chartData[t]===void 0?[]:e.chartData[t],getDisplayStandby:e=>e.topics["openWB/optional/int_display/standby"],getThemeConfiguration:e=>{if("openWB/optional/int_display/theme"in e.topics&&e.topics["openWB/optional/int_display/theme"]!==void 0&&"configuration"in e.topics["openWB/optional/int_display/theme"])return e.topics["openWB/optional/int_display/theme"].configuration},getDashBoardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_view:!0},getEnergyFlowEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_energy_flow_view:!0},getChargePointsEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_charge_points_view:!0},getStateEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_status_view:!0},getGridCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_grid:!0},getHomeCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_home_consumption:!0},getBatteryCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_battery_sum:!0},getChargePointsCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_charge_point_sum:!0},getPvCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_inverter_sum:!0},getLockChanges(e){return e.getThemeConfiguration?e.getThemeConfiguration.lock_changes:!0},getSimpleChargePointView(e){return e.getThemeConfiguration?e.getThemeConfiguration.simple_charge_point_view:!1},getGridId(e){let t=e.topics["openWB/counter/get/hierarchy"];if(t!==void 0&&Object.keys(t).length>0){let n=Object.keys(e.topics["openWB/counter/get/hierarchy"])[0];if(console.debug("getGridId",n,e.topics["openWB/counter/get/hierarchy"][n]),e.topics["openWB/counter/get/hierarchy"][n].type=="counter")return e.topics["openWB/counter/get/hierarchy"][n].id}},getGridPower(e){return(t="textValue")=>{let n=e.getGridId;if(n===void 0)return"---";let i=e.getValueString(`openWB/counter/${n}/get/power`,"W");if(Object.hasOwnProperty.call(i,t))return i[t];if(t=="object")return i;console.error("returnType not found!",t,i)}},getGridPowerChartData(e){let t=e.getGridId;return t===void 0?[]:e.getChartData(`openWB/counter/${t}/get/power`)},getHomePower(e){return(t="textValue")=>{let n=e.getValueString("openWB/counter/set/home_consumption","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getHomePowerChartData(e){return e.getChartData("openWB/counter/set/home_consumption")},getBatteryConfigured(e){return e.getValueBool("openWB/bat/config/configured")},getBatteryPower(e){return(t="textValue")=>{let n=e.getValueString("openWB/bat/get/power","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getBatteryPowerChartData(e){return e.getChartData("openWB/bat/get/power")},getBatterySoc(e){return(t="textValue")=>{let n=e.getValueString("openWB/bat/get/soc","%","",!1);if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getBatterySocChartData(e){return e.getChartData("openWB/bat/get/soc")},getPvConfigured(e){return e.getValueBool("openWB/pv/config/configured")},getPvPower(e){return(t="textValue")=>{var n=e.getValueString("openWB/pv/get/power","W","",!0,!0);if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getPvPowerChartData(e){return e.getChartData("openWB/pv/get/power").map(t=>t*-1)},getChargePointSumPower(e){return(t="textValue")=>{var n=e.getValueString("openWB/chargepoint/get/power","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getChargePointSumPowerChartData(e){return e.getChartData("openWB/chargepoint/get/power")},getChargePointIds(e){let t=e.getObjectIds("cp"),n=this.getChargePointFilter;return n.length>0?(console.debug("charge points are filtered!",t,n),t.filter(i=>n.includes(i))):t},getChargePointName(e){return t=>e.topics[`openWB/chargepoint/${t}/config`]!==void 0?e.topics[`openWB/chargepoint/${t}/config`].name:"---"},getChargePointPower(e){return(t,n="textValue")=>{var i=e.getValueString(`openWB/chargepoint/${t}/get/power`,"W");if(Object.hasOwnProperty.call(i,n))return i[n];if(n=="object")return i;console.error("returnType not found!",n,i)}},getChargePointImportedSincePlugged(e){return t=>({energy:e.getValueString(`openWB/chargepoint/${t}/set/log`,"Wh","",!0,!1,"---","imported_since_plugged").textValue,range:e.getValueString(`openWB/chargepoint/${t}/set/log`,"m","k",!1,!1,"---","range_charged").textValue})},getChargePointPowerChartData(e){return t=>e.getChartData(`openWB/chargepoint/${t}/get/power`)},getChargePointSetCurrent(e){return(t,n="textValue")=>{let i=e.getValueString(`openWB/chargepoint/${t}/set/current`,"A");if(Object.hasOwnProperty.call(i,n))return i[n];if(n=="object")return i;console.error("returnType not found!",n,i)}},getChargePointPhasesInUse(e){return t=>{const n=["/","①","②","③"],i=e.topics[`openWB/chargepoint/${t}/get/phases_in_use`];return i!==void 0&&i>=0&&i<n.length?n[e.topics[`openWB/chargepoint/${t}/get/phases_in_use`]]:(console.warn("topic not found!",`openWB/chargepoint/${t}/get/phases_in_use`),"?")}},getChargePointPlugState(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/get/plug_state`)},getChargePointChargeState(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/get/charge_state`)},getChargePointManualLock(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/set/manual_lock`)},getChargepointTagState(e){return t=>{if([void 0,null,""].includes(e.topics[`openWB/chargepoint/${t}/set/rfid`])){if(![void 0,null,""].includes(e.topics[`openWB/chargepoint/${t}/get/rfid`]))return 1}else return 2;return 0}},getChargePointConnectedVehicleConfig(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/config`]},getChargePointConnectedVehicleChargeMode(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.translateChargeMode(e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.selected)}},getChargePointConnectedVehiclePriority(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).prio}},getChargePointConnectedVehicleInfo(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`]},getChargePointConnectedVehicleId(e){return t=>{if(e.getChargePointConnectedVehicleInfo(t))return e.getChargePointConnectedVehicleInfo(t).id}},getChargePointConnectedVehicleChargeTemplateIndex(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).charge_template}},getChargePointConnectedVehicleChargeTemplate(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.topics[`openWB/vehicle/template/charge_template/${n}`]}},getChargePointConnectedVehicleEvTemplate(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).ev_template}},getChargePointConnectedVehicleName(e){return t=>{if(e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`])return e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`].name}},getChargePointConnectedVehicleSoc(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/soc`]},getChargePointConnectedVehicleTimeChargingActive(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).time_charging.active}},getChargePointConnectedVehicleTimeChargingRunning(e){return t=>{let n=e.getChargePointConnectedVehicleConfig(t).time_charging_in_use;return n!==void 0?n:!1}},getChargePointConnectedVehicleInstantChargingCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.instant_charging.current}},getChargePointConnectedVehicleInstantChargingLimit(e){return t=>e.getChargePointConnectedVehicleChargeTemplate(t)?e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.instant_charging.limit:{selected:void 0}},getChargePointConnectedVehiclePvChargingFeedInLimit(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.feed_in_limit}},getChargePointConnectedVehiclePvChargingMinCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_current}},getChargePointConnectedVehiclePvChargingMinSoc(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_soc}},getChargePointConnectedVehiclePvChargingMinSocCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_soc_current}},getChargePointConnectedVehiclePvChargingMaxSoc(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.max_soc}},getChargePointConnectedVehicleScheduledChargingPlans(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.getWildcardTopics(`openWB/vehicle/template/charge_template/${n}/chargemode/scheduled_charging/plans/+`)}},getChargePointConnectedVehicleTimeChargingPlans(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.getWildcardTopics(`openWB/vehicle/template/charge_template/${n}/time_charging/plans/+`)}},getVehicleList(e){return e.getWildcardTopics("openWB/vehicle/+/name")},getVehicleName(e){return t=>e.topics[`openWB/vehicle/${t}/name`]},getVehicleSocConfigured(e){return t=>e.topics[`openWB/vehicle/${t}/soc_module/config`].type!=null},getVehicleSocIsManual(e){return t=>e.topics[`openWB/vehicle/${t}/soc_module/config`].type=="manual"},getVehicleFaultState(e){return t=>e.topics[`openWB/vehicle/${t}/get/fault_state`]?e.topics[`openWB/vehicle/${t}/get/fault_state`]:0},getSystemTime(e){if(e.topics["openWB/system/time"])return new Date(e.topics["openWB/system/time"]*1e3).toLocaleString()},getSystemIp(e){if(e.settings.localIp!==void 0)return e.settings.localIp;if(e.topics["openWB/system/ip_address"])return e.topics["openWB/system/ip_address"]},getSystemVersion(e){if(e.settings.localVersion!==void 0)return e.settings.localVersion;if(e.topics["openWB/system/version"])return e.topics["openWB/system/version"]},getSystemBranch(e){if(e.settings.localBranch!==void 0)return e.settings.localBranch;if(e.topics["openWB/system/current_branch"])return e.topics["openWB/system/current_branch"]},getSystemCurrentCommit(e){if(e.settings.localCommit!==void 0)return e.settings.localCommit;if(e.topics["openWB/system/current_commit"])return e.topics["openWB/system/current_commit"]},getRfidEnabled(){return this.getValueBool("openWB/optional/rfid/active")}},actions:{updateSetting(e,t){e in this.settings&&(this.settings[e]=t)},initTopic(e,t=void 0){e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.addTopic(e,t)},addTopic(e,t){console.debug("addTopic",e,t),this.topics[e]=t},removeTopic(e){e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic for removal:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),delete this.topics[t]})):delete this.topics[e]},updateTopic(e,t,n=void 0){const i=(o,r,a)=>r.split(".").reduce((c,d,g)=>c[d]=r.split(".").length===++g?a:c[d]||{},o);e in this.topics?n!=null?i(this.topics[e],n,t):this.topics[e]=t:console.debug("topic not found: ",e)},updateChartData(){for(const[e,t]of Object.entries(this.topics))(e.endsWith("home_consumption")||e.endsWith("power")||e.endsWith("soc"))&&(this.chartData[e]===void 0&&(this.chartData[e]=[]),t!=null&&(this.chartData[e].push(t),this.chartData[e].slice(-128)))},updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.updateTopic(e,t,n)},chargeModeList(){var e=[{id:"instant_charging"},{id:"pv_charging"},{id:"scheduled_charging"},{id:"standby"},{id:"stop"}];return e.forEach(t=>{t.label=this.translateChargeMode(t.id).label,t.class=this.translateChargeMode(t.id).class}),e},translateChargeMode(e){switch(e){case"instant_charging":return{mode:e,label:"Sofort",class:"danger"};case"pv_charging":return{mode:e,label:"PV",class:"success"};case"scheduled_charging":return{mode:e,label:"Zielladen",class:"primary"};case"time_charging":return{mode:e,label:"Zeitladen",class:"warning"};case"standby":return{mode:e,label:"Standby",class:"secondary"};case"stop":return{mode:e,label:"Stop",class:"dark"};default:return console.warn("unknown charge mode:",e),{mode:e,label:e,class:e}}},checkChangesLockCode(e){return!!(this.getThemeConfiguration&&this.getThemeConfiguration.lock_changes_code==e)},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatDateRange(e,t="-"){const n={year:"numeric",month:"2-digit",day:"2-digit"};let i={day:"2-digit"};const o=new Date(e[0]),r=new Date(e[1]);return o.getFullYear()==r.getFullYear()?o.getMonth()!=r.getMonth()&&(i.month=n.month):i=n,`${this.formatDate(e[0],i)}${t}${this.formatDate(e[1],n)}`},formatWeeklyScheduleDays(e){const t=["Mo","Di","Mi","Do","Fr","Sa","So"];let n=[];return e.forEach(function(i,o){i==!0&&n.push(t[o])}),n.join(",")}}}),ne={name:"NavItem",props:{to:{type:Object,required:!0}}};function oe(e,t,n,i,o,r){const a=u("i-nav-item");return p(),m(a,{to:n.to,"active-class":"-active",class:"_border _border-color:primary _text-align:center"},{default:s(()=>[y(e.$slots,"default",{},void 0,!0)]),_:3},8,["to"])}const re=v(ne,[["render",oe],["__scopeId","data-v-1db6ae73"]]),ie={name:"NavBar",components:{NavItem:re},data(){return{mqttStore:S()}}};function ae(e,t,n,i,o,r){const a=u("nav-item"),c=u("i-nav");return p(),m(c,{vertical:"",class:"_align-items:stretch",size:"lg"},{default:s(()=>[o.mqttStore.getDashBoardEnabled?(p(),m(a,{key:0,to:{name:"dash-board"}},{default:s(()=>t[0]||(t[0]=[_(" Übersicht ")])),_:1})):w("",!0),o.mqttStore.getEnergyFlowEnabled?(p(),m(a,{key:1,to:{name:"energy-flow"}},{default:s(()=>t[1]||(t[1]=[_(" Energiefluss ")])),_:1})):w("",!0),o.mqttStore.getChargePointsEnabled&&o.mqttStore.getChargePointIds.length>0?(p(),m(a,{key:2,to:{name:"charge-points"}},{default:s(()=>t[2]||(t[2]=[_(" Ladepunkte ")])),_:1})):w("",!0),o.mqttStore.getStateEnabled?(p(),m(a,{key:3,to:{name:"status"}},{default:s(()=>t[3]||(t[3]=[_(" Status ")])),_:1})):w("",!0)]),_:1})}const ce=v(ie,[["render",ae]]);E.add(L,q);const se={name:"NumberPad",components:{FontAwesomeIcon:O},emits:["key:digit","key:clear","key:delete"],data(){return{buttonRows:[[{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"}],[{value:4,label:"4"},{value:5,label:"5"},{value:6,label:"6"}],[{value:7,label:"7"},{value:8,label:"8"},{value:9,label:"9"}]]}},methods:{emitDigit(e){this.$emit("key:digit",e)},emitClear(){this.$emit("key:clear")},emitDelete(){this.$emit("key:delete")}}};function le(e,t,n,i,o,r){const a=u("i-button"),c=u("i-column"),d=u("i-row"),g=u("FontAwesomeIcon"),C=u("i-container");return p(),m(C,null,{default:s(()=>[(p(!0),B(P,null,D(o.buttonRows,h=>(p(),m(d,{key:h,center:"",class:"_padding-bottom:1"},{default:s(()=>[(p(!0),B(P,null,D(h,b=>(p(),m(c,{key:b.value,class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:f=>r.emitDigit(b.value)},{default:s(()=>[_(W(b.label),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:2},1024))),128)),l(d,{center:""},{default:s(()=>[l(c,{class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[0]||(t[0]=h=>r.emitClear())},{default:s(()=>[l(g,{"fixed-width":"",icon:["fas","fa-eraser"]})]),_:1})]),_:1}),l(c,{class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[1]||(t[1]=h=>r.emitDigit("0"))},{default:s(()=>t[3]||(t[3]=[_(" 0 ")])),_:1})]),_:1}),l(c,{class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[2]||(t[2]=h=>r.emitDelete())},{default:s(()=>[l(g,{"fixed-width":"",icon:["fas","fa-delete-left"]})]),_:1})]),_:1})]),_:1})]),_:1})}const ue=v(se,[["render",le],["__scopeId","data-v-4e2103db"]]),de={name:"CodeInputModal",components:{NumberPad:ue},props:{modelValue:{type:Boolean,required:!0},backgroundColor:{type:String,default:"warning"},placeholderCharacter:{type:String,default:"*",validator(e){return e.length==1}},inputVisible:{type:Boolean,default:!1},minLength:{type:Number,default:4},maxLength:{type:Number,default:4}},emits:["update:modelValue","update:inputValue"],data(){return{number:"",modalBackground:this.backgroundColor}},computed:{placeholder(){return this.placeholderCharacter.repeat(this.minLength)},enableSubmit(){return this.number.length>=this.minLength&&this.number.length<=this.maxLength}},watch:{modelValue(e,t){e===!1&&t===!0&&this.clear()}},methods:{abort(){this.$emit("update:modelValue",!1)},addDigit(e){this.number.length<this.maxLength&&(this.number+=e)},removeDigit(){this.number=this.number.slice(0,-1)},clear(){this.number=""},submit(){this.$emit("update:inputValue",this.number)},success(e="success"){this.modalBackground=e,setTimeout(()=>{this.$emit("update:modelValue",!1),this.modalBackground=this.backgroundColor},500)},error(e="danger"){this.modalBackground=e,setTimeout(()=>{this.clear(),this.modalBackground=this.backgroundColor},2e3)}}};function ge(e,t,n,i,o,r){const a=u("i-input"),c=u("i-column"),d=u("i-row"),g=u("NumberPad"),C=u("i-container"),h=u("i-button"),b=u("i-modal");return p(),m(I,{to:"body"},[l(b,{"model-value":n.modelValue,color:o.modalBackground,"onUpdate:modelValue":t[4]||(t[4]=f=>e.$emit("update:modelValue",f))},{header:s(()=>[y(e.$slots,"header",{},()=>[t[5]||(t[5]=_(" **HEADER** "))])]),footer:s(()=>[l(C,null,{default:s(()=>[l(d,null,{default:s(()=>[l(c,null,{default:s(()=>[l(h,{color:"danger",onClick:r.abort},{default:s(()=>[y(e.$slots,"abort",{},()=>[t[6]||(t[6]=_(" Zurück "))])]),_:3},8,["onClick"])]),_:3}),l(c,{class:"_text-align:right"},{default:s(()=>[r.enableSubmit?(p(),m(h,{key:0,color:"success",onClick:r.submit},{default:s(()=>[y(e.$slots,"submit",{},()=>[t[7]||(t[7]=_(" OK "))])]),_:3},8,["onClick"])):w("",!0)]),_:3})]),_:3})]),_:3})]),default:s(()=>[l(C,null,{default:s(()=>[l(d,{center:"",class:"_padding-bottom:1"},{default:s(()=>[l(c,null,{default:s(()=>[l(a,{modelValue:o.number,"onUpdate:modelValue":t[0]||(t[0]=f=>o.number=f),placeholder:r.placeholder,readonly:"",size:"lg",type:n.inputVisible?"text":"password",class:"_text-align:center"},null,8,["modelValue","placeholder","type"])]),_:1})]),_:1}),l(g,{"onKey:digit":t[1]||(t[1]=f=>r.addDigit(f)),"onKey:clear":t[2]||(t[2]=f=>r.clear()),"onKey:delete":t[3]||(t[3]=f=>r.removeDigit(f))})]),_:1})]),_:3},8,["model-value","color"])])}const he=v(de,[["render",ge]]);E.add(Y,Q,L,q);const pe={name:"LockNavItem",components:{FontAwesomeIcon:O,CodeInputModal:he},props:{},data(){return{mqttStore:S(),modalPinEntryVisible:!1,modalPinEntryColor:"warning",code:"",countdown:0,countdownInterval:void 0,events:["mousemove","touchmove","wheel","click"]}},computed:{changesLocked:{get(){return this.mqttStore.settings.changesLocked},set(e){this.mqttStore.settings.changesLocked=e}},timer(){return Math.trunc(this.countdown/60).toString()+":"+(this.countdown%60).toString().padStart(2,"0")}},mounted(){this.changesLocked=!0},methods:{toggleChangesLock(){this.changesLocked?this.unlockChanges():this.lockChanges()},unlockChanges(){this.modalPinEntryVisible=!0},checkUnlockCode(e){this.mqttStore.checkChangesLockCode(e)?(this.$refs.lockInput.success("success"),this.changesLocked=!1,this.mqttStore.getDisplayStandby>0&&(this.countdown=this.mqttStore.getDisplayStandby,this.countdownInterval=setInterval(this.updateCountdown,1e3),this.events.forEach(t=>{document.addEventListener(t,this.handleDocumentEvent,{passive:!0})}))):(console.warn("check unlock code failed!"),this.$refs.lockInput.error("danger"))},lockChanges(){this.changesLocked=!0,this.events.forEach(e=>{document.removeEventListener(e,this.handleDocumentEvent,{passive:!0})}),this.countdownInterval!==void 0&&(clearInterval(this.countdownInterval),this.countdownInterval=void 0)},updateCountdown(){this.countdown-=1,this.countdown<1&&this.lockChanges()},handleDocumentEvent(){this.countdown=this.mqttStore.getDisplayStandby}}},me={key:0,class:"_padding-left:1"};function fe(e,t,n,i,o,r){const a=u("FontAwesomeIcon"),c=u("i-button"),d=u("CodeInputModal");return p(),B(P,null,[o.mqttStore.getLockChanges?(p(),m(c,{key:0,class:"_padding-left:0 _padding-right:0 _margin-bottom:1",size:"lg",block:"",color:r.changesLocked?"danger":"success",onClick:t[0]||(t[0]=g=>r.toggleChangesLock())},{default:s(()=>[l(a,{"fixed-width":"",icon:r.changesLocked?["fas","fa-lock"]:["fas","fa-lock-open"],class:A(r.changesLocked?"_color:danger-80":"_color:success-80")},null,8,["icon","class"]),!r.changesLocked&&o.countdownInterval?(p(),B("span",me,W(r.timer),1)):w("",!0)]),_:1},8,["color"])):w("",!0),l(d,{ref:"lockInput",modelValue:o.modalPinEntryVisible,"onUpdate:modelValue":t[1]||(t[1]=g=>o.modalPinEntryVisible=g),"min-length":4,"max-length":10,"onUpdate:inputValue":r.checkUnlockCode},{header:s(()=>t[2]||(t[2]=[_(" Bitte den PIN zur Freigabe von Änderungen eingeben. ")])),_:1},8,["modelValue","onUpdate:inputValue"])],64)}const _e=v(pe,[["render",fe]]),x="/openWB/web/display/themes/cards/openWB_logo_dark.png",Ce={name:"TouchBlocker",data(){return{mqttStore:S(),show:!1,countdown:void 0,countdownInterval:void 0,events:["mousemove","touchmove","wheel","click"],eventHandlerSetup:!1}},computed:{configuredDisplayStandby(){if(!(this.mqttStore.getDisplayStandby===0||this.mqttStore.getDisplayStandby===void 0))return this.mqttStore.getDisplayStandby},touchBlockerTimeout(){return Math.max(this.configuredDisplayStandby-3,1)}},mounted(){this.setupEventHandler(),this.setupTimeout()},unmounted(){this.clearEventHandler(),this.clearTimeout()},methods:{handleTouchBlockerClick(e){e===!1&&(this.show=!1,this.setupEventHandler(),this.setupTimeout())},setupEventHandler(){this.eventHandlerSetup||(this.events.forEach(e=>{document.addEventListener(e,this.handleDocumentEvent,{passive:!0})}),this.eventHandlerSetup=!0)},clearEventHandler(){this.eventHandlerSetup&&(this.events.forEach(e=>{document.removeEventListener(e,this.handleDocumentEvent,{passive:!0})}),this.eventHandlerSetup=!1)},setupTimeout(){this.countdownInterval===void 0&&(this.countdownInterval=setInterval(this.updateCountdown,1e3))},clearTimeout(){this.countdownInterval!==void 0&&(clearInterval(this.countdownInterval),this.countdownInterval=void 0)},updateCountdown(){this.countdown===void 0?this.countdown=this.touchBlockerTimeout:(this.countdown-=1,this.countdown<1&&this.showTouchBlocker())},handleDocumentEvent(){this.countdown=this.touchBlockerTimeout,this.show=!1},showTouchBlocker(){this.show=!0,this.clearTimeout()}}};function be(e,t,n,i,o,r){const a=u("IModal");return p(),m(I,{to:"body"},[l(a,{class:"touch-blocker",size:"sm",color:"dark","model-value":o.show,"onUpdate:modelValue":t[0]||(t[0]=c=>r.handleTouchBlockerClick(c))},{default:s(()=>t[1]||(t[1]=[V("img",{class:"logo",src:x},null,-1),V("p",null," Bitte das Display berühren. ",-1)])),_:1},8,["model-value"])])}const ve=v(Ce,[["render",be],["__scopeId","data-v-e4e632d4"]]),we={name:"OpenwbDisplayCardsApp",components:{RouterView:R,DateTime:te,NavBar:ce,LockNavItem:_e,TouchBlocker:ve},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3},mqttTopicsToSubscribe:["openWB/bat/config/configured","openWB/bat/get/power","openWB/bat/get/soc","openWB/chargepoint/+/config","openWB/chargepoint/+/get/charge_state","openWB/chargepoint/+/get/connected_vehicle/+","openWB/chargepoint/+/get/phases_in_use","openWB/chargepoint/+/get/plug_state","openWB/chargepoint/+/get/power","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/set/current","openWB/chargepoint/+/set/manual_lock","openWB/chargepoint/+/set/log","openWB/chargepoint/+/set/rfid","openWB/chargepoint/get/power","openWB/counter/+/get/power","openWB/counter/get/hierarchy","openWB/counter/set/home_consumption","openWB/optional/int_display/theme","openWB/optional/int_display/standby","openWB/optional/rfid/active","openWB/pv/config/configured","openWB/pv/get/power","openWB/system/current_branch","openWB/system/current_commit","openWB/system/ip_address","openWB/system/time","openWB/system/version","openWB/vehicle/+/get/fault_state","openWB/vehicle/+/name","openWB/vehicle/+/soc_module/config","openWB/vehicle/template/charge_template/#"],mqttStore:S(),chartInterval:""}},computed:{changesLocked(){return this.mqttStore.getLockChanges&&this.mqttStore.settings.changesLocked}},created(){this.createConnection()},mounted(){let e=window.location.search;if(e!=""){console.debug("search",e);let t=new URLSearchParams(e);if(t.has("data")){let n=JSON.parse(t.get("data"));Object.entries(n).forEach(([i,o])=>{console.log("updateSetting",i,o),this.mqttStore.updateSetting(i,o)})}}this.doSubscribe(this.mqttTopicsToSubscribe),this.chartInterval=setInterval(this.mqttStore.updateChartData,5e3)},beforeUnmount(){this.doUnsubscribe(this.mqttTopicsToSubscribe),clearInterval(this.chartInterval)},methods:{createConnection(){const{protocol:e,host:t,port:n,endpoint:i,...o}=this.connection,r=`${e}://${t}:${n}${i}`;console.debug("connecting to broker:",r);try{this.client=U.connect(r,o)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId)}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,c)=>{if(console.debug(`Received message "${c}" from topic "${a}"`),c.toString().length>0){let d;try{d=JSON.parse(c.toString())}catch(g){console.debug("Json parsing failed, fallback to string: ",a,g),d=c.toString()}this.mqttStore.addTopic(a,d)}else this.mqttStore.removeTopic(a)})},doSubscribe(e){e.forEach(t=>{this.mqttStore.initTopic(t)}),this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){e.forEach(t=>{this.mqttStore.removeTopic(t)}),this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,n=!0,i=2){console.debug("doPublish",e,t);let o={qos:i,retain:n};this.client.publish(e,JSON.stringify(t),o,r=>{r&&console.error("Publish error",r)})},sendTopicToBroker(e,t=void 0){let n=e.replace("openWB/","openWB/set/");t===void 0&&(t=this.mqttStore.topics[e]),this.doPublish(n,t)},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},sendSystemCommand(e,t={}){this.sendCommand({command:e,data:t})}}};function ye(e,t,n,i,o,r){const a=u("DateTime"),c=u("i-column"),d=u("i-row"),g=u("i-container"),C=u("LockNavItem"),h=u("NavBar"),b=u("TouchBlocker"),f=u("i-layout-aside"),N=u("RouterView"),F=u("i-layout-content"),M=u("i-layout");return p(),m(M,{vertical:""},{default:s(()=>[l(f,{class:"_position:fixed"},{default:s(()=>[l(g,{fluid:"",class:"_margin-bottom:1"},{default:s(()=>[l(d,{center:""},{default:s(()=>[l(c,null,{default:s(()=>[l(a)]),_:1})]),_:1})]),_:1}),l(C),l(h,{"changes-locked":r.changesLocked},null,8,["changes-locked"]),l(b)]),_:1}),l(F,null,{default:s(()=>[l(N,{"changes-locked":r.changesLocked},null,8,["changes-locked"])]),_:1})]),_:1})}const Be=v(we,[["render",ye],["__scopeId","data-v-6c4642a5"]]),Se="modulepreload",ke=function(e){return"/openWB/web/display/themes/cards/"+e},$={},k=function(t,n,i){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));o=Promise.allSettled(n.map(d=>{if(d=ke(d),d in $)return;$[d]=!0;const g=d.endsWith(".css"),C=g?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${C}`))return;const h=document.createElement("link");if(h.rel=g?"stylesheet":Se,g||(h.as="script"),h.crossOrigin="",h.href=d,c&&h.setAttribute("nonce",c),document.head.appendChild(h),g)return new Promise((b,f)=>{h.addEventListener("load",b),h.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${d}`)))})}))}function r(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return o.then(a=>{for(const c of a||[])c.status==="rejected"&&r(c.reason);return t().catch(r)})},We={name:"WelcomeView",data(){return{mqttStore:S()}},computed:{firstView(){if(this.mqttStore.getThemeConfiguration){if(this.mqttStore.getThemeConfiguration.enable_dashboard_view)return"dash-board";if(this.mqttStore.getThemeConfiguration.enable_energy_flow_view)return"energy-flow";if(this.mqttStore.getThemeConfiguration.enable_charge_points_view)return"charge-points";if(this.mqttStore.getThemeConfiguration.enable_status_view)return"status"}}},mounted(){setTimeout(this.selectFirstRoute,3e3)},methods:{selectFirstRoute(){this.firstView?this.$router.push({name:this.firstView}):console.warn("no router view enabled, check your configuration!")}}};function Ve(e,t,n,i,o,r){const a=u("i-card"),c=u("i-column"),d=u("i-row"),g=u("i-container");return p(),m(g,null,{default:s(()=>[l(d,{center:"",middle:""},{default:s(()=>[l(c,null,{default:s(()=>[l(a,{color:"primary"},{header:s(()=>t[0]||(t[0]=[_(" Cards Theme ")])),default:s(()=>[t[1]||(t[1]=V("img",{class:"logo",src:x},null,-1))]),_:1})]),_:1})]),_:1})]),_:1})}const Pe=v(We,[["render",Ve],["__scopeId","data-v-16686e30"]]),Te=H({history:z("/openWB/web/display/themes/cards/"),routes:[{path:"/",name:"welcome",component:Pe},{path:"/DashBoard",name:"dash-board",component:()=>k(()=>import("./DashBoardView-_HZMNhnS.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))},{path:"/EnergyFlow",name:"energy-flow",component:()=>k(()=>import("./EnergyFlowView-BcB2FDT1.js"),__vite__mapDeps([10,1,2,3,4,5,7,11]))},{path:"/ChargePoints",name:"charge-points",component:()=>k(()=>import("./ChargePointsView-CZeUBF37.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,8,13]))},{path:"/Status",name:"status",component:()=>k(()=>import("./StatusView-uYO1gy9a.js"),__vite__mapDeps([14,7,3,2,4,1,5]))}]}),T=G(Be);T.use(K());T.use(Te);T.use(J,{colorMode:"dark",components:Z});T.mount("#app");export{he as C,ue as N,S as u};
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashBoardView-BJO8O7Y4.js","assets/DashBoardCard-BterAPyf.js","assets/vendor-inkline-Ce5aFAnW.js","assets/vendor-CZ1MGz7j.js","assets/vendor-inkline-BDgt6n8h.css","assets/DashBoardCard-DKbC8x2S.css","assets/ChargePointPlugBadge-Bsi0zWop.js","assets/vendor-fortawesome-C68yAli-.js","assets/ChargePointPlugBadge-DqNX7D_z.css","assets/DashBoardView-CrVFeUF-.css","assets/EnergyFlowView-CAd9Xlbe.js","assets/EnergyFlowView-C3xLYKue.css","assets/ChargePointsView-CaYX8Nkl.js","assets/ChargePointsView-DPrjgv0h.css","assets/StatusView-DclrRcZL.js"])))=>i.map(i=>d[i]);
+import{o as p,e as B,k as _,x as W,f as y,j as V,F as P,H as j,q as u,l as m,n as s,i as w,A as D,s as l,I,y as A,R,J as U,K as H,L as z,M as G,N as K}from"./vendor-CZ1MGz7j.js";import{_ as v,I as J,c as Z}from"./vendor-inkline-Ce5aFAnW.js";import{l as E,f as L,a as q,F as O,b as Y,c as Q}from"./vendor-fortawesome-C68yAli-.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();const X={name:"DateTime",data(){return{dateTimeInterval:"",date:"",time:""}},mounted(){this.update(),this.dateTimeInterval=setInterval(this.update,1e3)},beforeUnmount(){clearInterval(this.dateTimeInterval)},methods:{update(){const e=new Date,t={weekday:"short",year:"numeric",month:"2-digit",day:"2-digit"},n={hour:"2-digit",minute:"2-digit",second:"2-digit"};this.date=e.toLocaleDateString(void 0,t),this.time=e.toLocaleTimeString(void 0,n)}}};function ee(e,t,n,r,o,i){return p(),B(P,null,[_(W(o.time),1),y(e.$slots,"default",{},()=>[t[0]||(t[0]=V("br",null,null,-1))]),_(W(o.date),1)],64)}const te=v(X,[["render",ee]]),S=j("mqtt",{state:()=>({settings:{localIp:void 0,localBranch:void 0,localCommit:void 0,localVersion:void 0,parentChargePoint1:void 0,parentChargePoint2:void 0},topics:{},chartData:{}}),getters:{getChargePointFilter:e=>{let t=[];return e.settings.parentChargePoint1!==void 0&&t.push(e.settings.parentChargePoint1),e.settings.parentChargePoint2!==void 0&&t.push(e.settings.parentChargePoint2),t},getWildcardIndexList:e=>(t,n=!1)=>{let r=t;n||(r="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let o=Object.keys(e.topics).filter(i=>i.match(r));return o.forEach((i,a,c)=>{c[a]=parseInt(i.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),o},getWildcardTopics:e=>(t,n=!1)=>{let r=t;return n||(r="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(e.topics).filter(o=>o.match(r)).reduce((o,i)=>({...o,[i]:e.topics[i]}),{})},getObjectIds:e=>t=>{function n(r){let o=[];return r!==void 0&&r.forEach(i=>{i.type==t&&o.push(i.id),o=[...o,...n(i.children)]}),o}return n(e.topics["openWB/counter/get/hierarchy"])},getValueBool:e=>(t,n=!1)=>{let r=e.topics[t];return r!==void 0?r:(console.warn("topic not found! using default",t,n),n)},getValueString:e=>(t,n="W",r="",o=!0,i=!1,a="---",c=void 0)=>{var d=!1,g=e.topics[t];if(g===void 0||c!==void 0&&g[c]===void 0)console.warn("topic not found! using default",t,a),C=a;else{c!==void 0&&(g=g[c]),i&&(g*=-1);for(var C=g.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:0}),h=g;o&&(h>999||h<-999);)switch(h=h/1e3,d=!0,r){case"":r="k";break;case"k":r="M";break;case"M":r="G";break}C=h.toLocaleString(void 0,{minimumFractionDigits:d?2:0,maximumFractionDigits:d?2:0})}return{textValue:`${C} ${r}${n}`,value:g,unit:n,scaledValue:h,scaledUnit:`${r}${n}`}},getChartData:e=>t=>e.chartData[t]===void 0?[]:e.chartData[t],getDisplayStandby:e=>e.topics["openWB/optional/int_display/standby"],getThemeConfiguration:e=>{if("openWB/optional/int_display/theme"in e.topics&&e.topics["openWB/optional/int_display/theme"]!==void 0&&"configuration"in e.topics["openWB/optional/int_display/theme"])return e.topics["openWB/optional/int_display/theme"].configuration},getDashBoardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_view:!0},getEnergyFlowEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_energy_flow_view:!0},getChargePointsEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_charge_points_view:!0},getStateEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_status_view:!0},getGridCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_grid:!0},getHomeCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_home_consumption:!0},getBatteryCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_battery_sum:!0},getChargePointsCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_charge_point_sum:!0},getPvCardEnabled(e){return e.getThemeConfiguration?e.getThemeConfiguration.enable_dashboard_card_inverter_sum:!0},getLockChanges(e){return e.getThemeConfiguration?e.getThemeConfiguration.lock_changes:!0},getSimpleChargePointView(e){return e.getThemeConfiguration?e.getThemeConfiguration.simple_charge_point_view:!1},getGridId(e){let t=e.topics["openWB/counter/get/hierarchy"];if(t!==void 0&&Object.keys(t).length>0){let n=Object.keys(e.topics["openWB/counter/get/hierarchy"])[0];if(console.debug("getGridId",n,e.topics["openWB/counter/get/hierarchy"][n]),e.topics["openWB/counter/get/hierarchy"][n].type=="counter")return e.topics["openWB/counter/get/hierarchy"][n].id}},getGridPower(e){return(t="textValue")=>{let n=e.getGridId;if(n===void 0)return"---";let r=e.getValueString(`openWB/counter/${n}/get/power`,"W");if(Object.hasOwnProperty.call(r,t))return r[t];if(t=="object")return r;console.error("returnType not found!",t,r)}},getGridPowerChartData(e){let t=e.getGridId;return t===void 0?[]:e.getChartData(`openWB/counter/${t}/get/power`)},getHomePower(e){return(t="textValue")=>{let n=e.getValueString("openWB/counter/set/home_consumption","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getHomePowerChartData(e){return e.getChartData("openWB/counter/set/home_consumption")},getBatteryConfigured(e){return e.getValueBool("openWB/bat/config/configured")},getBatteryPower(e){return(t="textValue")=>{let n=e.getValueString("openWB/bat/get/power","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getBatteryPowerChartData(e){return e.getChartData("openWB/bat/get/power")},getBatterySoc(e){return(t="textValue")=>{let n=e.getValueString("openWB/bat/get/soc","%","",!1);if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getBatterySocChartData(e){return e.getChartData("openWB/bat/get/soc")},getPvConfigured(e){return e.getValueBool("openWB/pv/config/configured")},getPvPower(e){return(t="textValue")=>{var n=e.getValueString("openWB/pv/get/power","W","",!0,!0);if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getPvPowerChartData(e){return e.getChartData("openWB/pv/get/power").map(t=>t*-1)},getChargePointSumPower(e){return(t="textValue")=>{var n=e.getValueString("openWB/chargepoint/get/power","W");if(Object.hasOwnProperty.call(n,t))return n[t];if(t=="object")return n;console.error("returnType not found!",t,n)}},getChargePointSumPowerChartData(e){return e.getChartData("openWB/chargepoint/get/power")},getChargePointIds(e){let t=e.getObjectIds("cp"),n=this.getChargePointFilter;return n.length>0?(console.debug("charge points are filtered!",t,n),t.filter(r=>n.includes(r))):t},getChargePointName(e){return t=>e.topics[`openWB/chargepoint/${t}/config`]!==void 0?e.topics[`openWB/chargepoint/${t}/config`].name:"---"},getChargePointPower(e){return(t,n="textValue")=>{var r=e.getValueString(`openWB/chargepoint/${t}/get/power`,"W");if(Object.hasOwnProperty.call(r,n))return r[n];if(n=="object")return r;console.error("returnType not found!",n,r)}},getChargePointImportedSincePlugged(e){return t=>({energy:e.getValueString(`openWB/chargepoint/${t}/set/log`,"Wh","",!0,!1,"---","imported_since_plugged").textValue,range:e.getValueString(`openWB/chargepoint/${t}/set/log`,"m","k",!1,!1,"---","range_charged").textValue})},getChargePointPowerChartData(e){return t=>e.getChartData(`openWB/chargepoint/${t}/get/power`)},getChargePointSetCurrent(e){return(t,n="textValue")=>{let r=e.getValueString(`openWB/chargepoint/${t}/set/current`,"A");if(Object.hasOwnProperty.call(r,n))return r[n];if(n=="object")return r;console.error("returnType not found!",n,r)}},getChargePointPhasesInUse(e){return t=>{const n=["/","①","②","③"],r=e.topics[`openWB/chargepoint/${t}/get/phases_in_use`];return r!==void 0&&r>=0&&r<n.length?n[e.topics[`openWB/chargepoint/${t}/get/phases_in_use`]]:(console.warn("topic not found!",`openWB/chargepoint/${t}/get/phases_in_use`),"?")}},getChargePointPlugState(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/get/plug_state`)},getChargePointChargeState(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/get/charge_state`)},getChargePointManualLock(e){return t=>e.getValueBool(`openWB/chargepoint/${t}/set/manual_lock`)},getChargepointTagState(e){return t=>{if([void 0,null,""].includes(e.topics[`openWB/chargepoint/${t}/set/rfid`])){if(![void 0,null,""].includes(e.topics[`openWB/chargepoint/${t}/get/rfid`]))return 1}else return 2;return 0}},getChargePointConnectedVehicleConfig(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/config`]},getChargePointConnectedVehicleChargeMode(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.translateChargeMode(e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.selected)}},getChargePointConnectedVehiclePriority(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).prio}},getChargePointConnectedVehicleInfo(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`]},getChargePointConnectedVehicleId(e){return t=>{if(e.getChargePointConnectedVehicleInfo(t))return e.getChargePointConnectedVehicleInfo(t).id}},getChargePointConnectedVehicleChargeTemplateIndex(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).charge_template}},getChargePointConnectedVehicleChargeTemplate(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.topics[`openWB/vehicle/template/charge_template/${n}`]}},getChargePointConnectedVehicleEvTemplate(e){return t=>{if(e.getChargePointConnectedVehicleConfig(t))return e.getChargePointConnectedVehicleConfig(t).ev_template}},getChargePointConnectedVehicleName(e){return t=>{if(e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`])return e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/info`].name}},getChargePointConnectedVehicleSoc(e){return t=>e.topics[`openWB/chargepoint/${t}/get/connected_vehicle/soc`]},getChargePointConnectedVehicleTimeChargingActive(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).time_charging.active}},getChargePointConnectedVehicleTimeChargingRunning(e){return t=>{let n=e.getChargePointConnectedVehicleConfig(t).time_charging_in_use;return n!==void 0?n:!1}},getChargePointConnectedVehicleInstantChargingCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.instant_charging.current}},getChargePointConnectedVehicleInstantChargingLimit(e){return t=>e.getChargePointConnectedVehicleChargeTemplate(t)?e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.instant_charging.limit:{selected:void 0}},getChargePointConnectedVehiclePvChargingFeedInLimit(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.feed_in_limit}},getChargePointConnectedVehiclePvChargingMinCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_current}},getChargePointConnectedVehiclePvChargingMinSoc(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_soc}},getChargePointConnectedVehiclePvChargingMinSocCurrent(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.min_soc_current}},getChargePointConnectedVehiclePvChargingMaxSoc(e){return t=>{if(e.getChargePointConnectedVehicleChargeTemplate(t))return e.getChargePointConnectedVehicleChargeTemplate(t).chargemode.pv_charging.max_soc}},getChargePointConnectedVehicleScheduledChargingPlans(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.getWildcardTopics(`openWB/vehicle/template/charge_template/${n}/chargemode/scheduled_charging/plans/+`)}},getChargePointConnectedVehicleTimeChargingPlans(e){return t=>{let n=e.getChargePointConnectedVehicleChargeTemplateIndex(t);return e.getWildcardTopics(`openWB/vehicle/template/charge_template/${n}/time_charging/plans/+`)}},getVehicleList(e){return e.getWildcardTopics("openWB/vehicle/+/name")},getVehicleName(e){return t=>e.topics[`openWB/vehicle/${t}/name`]},getVehicleSocConfigured(e){return t=>e.topics[`openWB/vehicle/${t}/soc_module/config`].type!=null},getVehicleSocIsManual(e){return t=>e.topics[`openWB/vehicle/${t}/soc_module/config`].type=="manual"},getVehicleFaultState(e){return t=>e.topics[`openWB/vehicle/${t}/get/fault_state`]?e.topics[`openWB/vehicle/${t}/get/fault_state`]:0},getSystemTime(e){if(e.topics["openWB/system/time"])return new Date(e.topics["openWB/system/time"]*1e3).toLocaleString()},getSystemIp(e){if(e.settings.localIp!==void 0)return e.settings.localIp;if(e.topics["openWB/system/ip_address"])return e.topics["openWB/system/ip_address"]},getSystemVersion(e){if(e.settings.localVersion!==void 0)return e.settings.localVersion;if(e.topics["openWB/system/version"])return e.topics["openWB/system/version"]},getSystemBranch(e){if(e.settings.localBranch!==void 0)return e.settings.localBranch;if(e.topics["openWB/system/current_branch"])return e.topics["openWB/system/current_branch"]},getSystemCurrentCommit(e){if(e.settings.localCommit!==void 0)return e.settings.localCommit;if(e.topics["openWB/system/current_commit"])return e.topics["openWB/system/current_commit"]},getRfidEnabled(){return this.getValueBool("openWB/optional/rfid/active")}},actions:{updateSetting(e,t){e in this.settings&&(this.settings[e]=t)},initTopic(e,t=void 0){e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.addTopic(e,t)},addTopic(e,t){console.debug("addTopic",e,t),this.topics[e]=t},removeTopic(e){e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic for removal:",e),Object.keys(this.getWildcardTopics(e)).forEach(t=>{console.debug("removing wildcardTopic:",t),delete this.topics[t]})):delete this.topics[e]},updateTopic(e,t,n=void 0){const r=(o,i,a)=>i.split(".").reduce((c,d,g)=>c[d]=i.split(".").length===++g?a:c[d]||{},o);e in this.topics?n!=null?r(this.topics[e],n,t):this.topics[e]=t:console.debug("topic not found: ",e)},updateChartData(){for(const[e,t]of Object.entries(this.topics))(e.endsWith("home_consumption")||e.endsWith("power")||e.endsWith("soc"))&&(this.chartData[e]===void 0&&(this.chartData[e]=[]),t!=null&&(this.chartData[e].push(t),this.chartData[e].slice(-128)))},updateState(e,t,n=void 0){console.debug("updateState:",e,t,n),this.updateTopic(e,t,n)},chargeModeList(){var e=[{id:"instant_charging"},{id:"pv_charging"},{id:"scheduled_charging"},{id:"standby"},{id:"stop"}];return e.forEach(t=>{t.label=this.translateChargeMode(t.id).label,t.class=this.translateChargeMode(t.id).class}),e},translateChargeMode(e){switch(e){case"instant_charging":return{mode:e,label:"Sofort",class:"danger"};case"pv_charging":return{mode:e,label:"PV",class:"success"};case"scheduled_charging":return{mode:e,label:"Zielladen",class:"primary"};case"time_charging":return{mode:e,label:"Zeitladen",class:"warning"};case"standby":return{mode:e,label:"Standby",class:"secondary"};case"stop":return{mode:e,label:"Stop",class:"dark"};default:return console.warn("unknown charge mode:",e),{mode:e,label:e,class:e}}},checkChangesLockCode(e){return!!(this.getThemeConfiguration&&this.getThemeConfiguration.lock_changes_code==e)},formatDate(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(e).toLocaleDateString(void 0,t)},formatDateRange(e,t="-"){const n={year:"numeric",month:"2-digit",day:"2-digit"};let r={day:"2-digit"};const o=new Date(e[0]),i=new Date(e[1]);return o.getFullYear()==i.getFullYear()?o.getMonth()!=i.getMonth()&&(r.month=n.month):r=n,`${this.formatDate(e[0],r)}${t}${this.formatDate(e[1],n)}`},formatWeeklyScheduleDays(e){const t=["Mo","Di","Mi","Do","Fr","Sa","So"];let n=[];return e.forEach(function(r,o){r==!0&&n.push(t[o])}),n.join(",")}}}),ne={name:"NavItem",props:{to:{type:Object,required:!0}}};function oe(e,t,n,r,o,i){const a=u("i-nav-item");return p(),m(a,{to:n.to,"active-class":"-active",class:"_border _border-color:primary _text-align:center"},{default:s(()=>[y(e.$slots,"default",{},void 0,!0)]),_:3},8,["to"])}const re=v(ne,[["render",oe],["__scopeId","data-v-1db6ae73"]]),ie={name:"NavBar",components:{NavItem:re},data(){return{mqttStore:S()}}};function ae(e,t,n,r,o,i){const a=u("nav-item"),c=u("i-nav");return p(),m(c,{vertical:"",class:"_align-items:stretch",size:"lg"},{default:s(()=>[o.mqttStore.getDashBoardEnabled?(p(),m(a,{key:0,to:{name:"dash-board"}},{default:s(()=>t[0]||(t[0]=[_(" Übersicht ")])),_:1})):w("",!0),o.mqttStore.getEnergyFlowEnabled?(p(),m(a,{key:1,to:{name:"energy-flow"}},{default:s(()=>t[1]||(t[1]=[_(" Energiefluss ")])),_:1})):w("",!0),o.mqttStore.getChargePointsEnabled&&o.mqttStore.getChargePointIds.length>0?(p(),m(a,{key:2,to:{name:"charge-points"}},{default:s(()=>t[2]||(t[2]=[_(" Ladepunkte ")])),_:1})):w("",!0),o.mqttStore.getStateEnabled?(p(),m(a,{key:3,to:{name:"status"}},{default:s(()=>t[3]||(t[3]=[_(" Status ")])),_:1})):w("",!0)]),_:1})}const ce=v(ie,[["render",ae]]);E.add(L,q);const se={name:"NumberPad",components:{FontAwesomeIcon:O},emits:["key:digit","key:clear","key:delete"],data(){return{buttonRows:[[{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"}],[{value:4,label:"4"},{value:5,label:"5"},{value:6,label:"6"}],[{value:7,label:"7"},{value:8,label:"8"},{value:9,label:"9"}]]}},methods:{emitDigit(e){this.$emit("key:digit",e)},emitClear(){this.$emit("key:clear")},emitDelete(){this.$emit("key:delete")}}};function le(e,t,n,r,o,i){const a=u("i-button"),c=u("i-column"),d=u("i-row"),g=u("FontAwesomeIcon"),C=u("i-container");return p(),m(C,null,{default:s(()=>[(p(!0),B(P,null,D(o.buttonRows,h=>(p(),m(d,{key:h,center:"",class:"_padding-bottom:1"},{default:s(()=>[(p(!0),B(P,null,D(h,b=>(p(),m(c,{key:b.value,class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:f=>i.emitDigit(b.value)},{default:s(()=>[_(W(b.label),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:2},1024))),128)),l(d,{center:""},{default:s(()=>[l(c,{class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[0]||(t[0]=h=>i.emitClear())},{default:s(()=>[l(g,{"fixed-width":"",icon:["fas","fa-eraser"]})]),_:1})]),_:1}),l(c,{class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[1]||(t[1]=h=>i.emitDigit("0"))},{default:s(()=>t[3]||(t[3]=[_(" 0 ")])),_:1})]),_:1}),l(c,{class:"pin-button-column"},{default:s(()=>[l(a,{size:"lg",class:"pin-button",onClick:t[2]||(t[2]=h=>i.emitDelete())},{default:s(()=>[l(g,{"fixed-width":"",icon:["fas","fa-delete-left"]})]),_:1})]),_:1})]),_:1})]),_:1})}const ue=v(se,[["render",le],["__scopeId","data-v-4e2103db"]]),de={name:"CodeInputModal",components:{NumberPad:ue},props:{modelValue:{type:Boolean,required:!0},backgroundColor:{type:String,default:"warning"},placeholderCharacter:{type:String,default:"*",validator(e){return e.length==1}},inputVisible:{type:Boolean,default:!1},minLength:{type:Number,default:4},maxLength:{type:Number,default:4}},emits:["update:modelValue","update:inputValue"],data(){return{number:"",modalBackground:this.backgroundColor}},computed:{placeholder(){return this.placeholderCharacter.repeat(this.minLength)},enableSubmit(){return this.number.length>=this.minLength&&this.number.length<=this.maxLength}},watch:{modelValue(e,t){e===!1&&t===!0&&this.clear()}},methods:{abort(){this.$emit("update:modelValue",!1)},addDigit(e){this.number.length<this.maxLength&&(this.number+=e)},removeDigit(){this.number=this.number.slice(0,-1)},clear(){this.number=""},submit(){this.$emit("update:inputValue",this.number)},success(e="success"){this.modalBackground=e,setTimeout(()=>{this.$emit("update:modelValue",!1),this.modalBackground=this.backgroundColor},500)},error(e="danger"){this.modalBackground=e,setTimeout(()=>{this.clear(),this.modalBackground=this.backgroundColor},2e3)}}};function ge(e,t,n,r,o,i){const a=u("i-input"),c=u("i-column"),d=u("i-row"),g=u("NumberPad"),C=u("i-container"),h=u("i-button"),b=u("i-modal");return p(),m(I,{to:"body"},[l(b,{"model-value":n.modelValue,color:o.modalBackground,"onUpdate:modelValue":t[4]||(t[4]=f=>e.$emit("update:modelValue",f))},{header:s(()=>[y(e.$slots,"header",{},()=>[t[5]||(t[5]=_(" **HEADER** "))])]),footer:s(()=>[l(C,null,{default:s(()=>[l(d,null,{default:s(()=>[l(c,null,{default:s(()=>[l(h,{color:"danger",onClick:i.abort},{default:s(()=>[y(e.$slots,"abort",{},()=>[t[6]||(t[6]=_(" Zurück "))])]),_:3},8,["onClick"])]),_:3}),l(c,{class:"_text-align:right"},{default:s(()=>[i.enableSubmit?(p(),m(h,{key:0,color:"success",onClick:i.submit},{default:s(()=>[y(e.$slots,"submit",{},()=>[t[7]||(t[7]=_(" OK "))])]),_:3},8,["onClick"])):w("",!0)]),_:3})]),_:3})]),_:3})]),default:s(()=>[l(C,null,{default:s(()=>[l(d,{center:"",class:"_padding-bottom:1"},{default:s(()=>[l(c,null,{default:s(()=>[l(a,{modelValue:o.number,"onUpdate:modelValue":t[0]||(t[0]=f=>o.number=f),placeholder:i.placeholder,readonly:"",size:"lg",type:n.inputVisible?"text":"password",class:"_text-align:center"},null,8,["modelValue","placeholder","type"])]),_:1})]),_:1}),l(g,{"onKey:digit":t[1]||(t[1]=f=>i.addDigit(f)),"onKey:clear":t[2]||(t[2]=f=>i.clear()),"onKey:delete":t[3]||(t[3]=f=>i.removeDigit(f))})]),_:1})]),_:3},8,["model-value","color"])])}const he=v(de,[["render",ge]]);E.add(Y,Q,L,q);const pe={name:"LockNavItem",components:{FontAwesomeIcon:O,CodeInputModal:he},props:{},data(){return{mqttStore:S(),modalPinEntryVisible:!1,modalPinEntryColor:"warning",code:"",countdown:0,countdownInterval:void 0,events:["mousemove","touchmove","wheel","click"]}},computed:{changesLocked:{get(){return this.mqttStore.settings.changesLocked},set(e){this.mqttStore.settings.changesLocked=e}},timer(){return Math.trunc(this.countdown/60).toString()+":"+(this.countdown%60).toString().padStart(2,"0")}},mounted(){this.changesLocked=!0},methods:{toggleChangesLock(){this.changesLocked?this.unlockChanges():this.lockChanges()},unlockChanges(){this.modalPinEntryVisible=!0},checkUnlockCode(e){this.mqttStore.checkChangesLockCode(e)?(this.$refs.lockInput.success("success"),this.changesLocked=!1,this.mqttStore.getDisplayStandby>0&&(this.countdown=this.mqttStore.getDisplayStandby,this.countdownInterval=setInterval(this.updateCountdown,1e3),this.events.forEach(t=>{document.addEventListener(t,this.handleDocumentEvent,{passive:!0})}))):(console.warn("check unlock code failed!"),this.$refs.lockInput.error("danger"))},lockChanges(){this.changesLocked=!0,this.events.forEach(e=>{document.removeEventListener(e,this.handleDocumentEvent,{passive:!0})}),this.countdownInterval!==void 0&&(clearInterval(this.countdownInterval),this.countdownInterval=void 0)},updateCountdown(){this.countdown-=1,this.countdown<1&&this.lockChanges()},handleDocumentEvent(){this.countdown=this.mqttStore.getDisplayStandby}}},me={key:0,class:"_padding-left:1"};function fe(e,t,n,r,o,i){const a=u("FontAwesomeIcon"),c=u("i-button"),d=u("CodeInputModal");return p(),B(P,null,[o.mqttStore.getLockChanges?(p(),m(c,{key:0,class:"_padding-left:0 _padding-right:0 _margin-bottom:1",size:"lg",block:"",color:i.changesLocked?"danger":"success",onClick:t[0]||(t[0]=g=>i.toggleChangesLock())},{default:s(()=>[l(a,{"fixed-width":"",icon:i.changesLocked?["fas","fa-lock"]:["fas","fa-lock-open"],class:A(i.changesLocked?"_color:danger-80":"_color:success-80")},null,8,["icon","class"]),!i.changesLocked&&o.countdownInterval?(p(),B("span",me,W(i.timer),1)):w("",!0)]),_:1},8,["color"])):w("",!0),l(d,{ref:"lockInput",modelValue:o.modalPinEntryVisible,"onUpdate:modelValue":t[1]||(t[1]=g=>o.modalPinEntryVisible=g),"min-length":4,"max-length":10,"onUpdate:inputValue":i.checkUnlockCode},{header:s(()=>t[2]||(t[2]=[_(" Bitte den PIN zur Freigabe von Änderungen eingeben. ")])),_:1},8,["modelValue","onUpdate:inputValue"])],64)}const _e=v(pe,[["render",fe]]),x="/openWB/web/display/themes/cards/openWB_logo_dark.png",Ce={name:"TouchBlocker",data(){return{mqttStore:S(),show:!1,countdown:void 0,countdownInterval:void 0,events:["mousemove","touchmove","wheel","click"],eventHandlerSetup:!1}},computed:{configuredDisplayStandby(){if(!(this.mqttStore.getDisplayStandby===0||this.mqttStore.getDisplayStandby===void 0))return this.mqttStore.getDisplayStandby},touchBlockerTimeout(){return Math.max(this.configuredDisplayStandby-3,1)}},mounted(){this.setupEventHandler(),this.setupTimeout()},unmounted(){this.clearEventHandler(),this.clearTimeout()},methods:{handleTouchBlockerClick(e){e===!1&&(this.show=!1,this.setupEventHandler(),this.setupTimeout())},setupEventHandler(){this.eventHandlerSetup||(this.events.forEach(e=>{document.addEventListener(e,this.handleDocumentEvent,{passive:!0})}),this.eventHandlerSetup=!0)},clearEventHandler(){this.eventHandlerSetup&&(this.events.forEach(e=>{document.removeEventListener(e,this.handleDocumentEvent,{passive:!0})}),this.eventHandlerSetup=!1)},setupTimeout(){this.countdownInterval===void 0&&(this.countdownInterval=setInterval(this.updateCountdown,1e3))},clearTimeout(){this.countdownInterval!==void 0&&(clearInterval(this.countdownInterval),this.countdownInterval=void 0)},updateCountdown(){this.countdown===void 0?this.countdown=this.touchBlockerTimeout:(this.countdown-=1,this.countdown<1&&this.showTouchBlocker())},handleDocumentEvent(){this.countdown=this.touchBlockerTimeout,this.show=!1},showTouchBlocker(){this.show=!0,this.clearTimeout()}}};function be(e,t,n,r,o,i){const a=u("IModal");return p(),m(I,{to:"body"},[l(a,{class:"touch-blocker",size:"sm",color:"dark","model-value":o.show,"onUpdate:modelValue":t[0]||(t[0]=c=>i.handleTouchBlockerClick(c))},{default:s(()=>t[1]||(t[1]=[V("img",{class:"logo",src:x},null,-1),V("p",null," Bitte das Display berühren. ",-1)])),_:1},8,["model-value"])])}const ve=v(Ce,[["render",be],["__scopeId","data-v-e4e632d4"]]),we={name:"OpenwbDisplayCardsApp",components:{RouterView:R,DateTime:te,NavBar:ce,LockNavItem:_e,TouchBlocker:ve},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3},mqttTopicsToSubscribe:["openWB/bat/config/configured","openWB/bat/get/power","openWB/bat/get/soc","openWB/chargepoint/+/config","openWB/chargepoint/+/get/charge_state","openWB/chargepoint/+/get/connected_vehicle/+","openWB/chargepoint/+/get/phases_in_use","openWB/chargepoint/+/get/plug_state","openWB/chargepoint/+/get/power","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/set/current","openWB/chargepoint/+/set/manual_lock","openWB/chargepoint/+/set/log","openWB/chargepoint/+/set/rfid","openWB/chargepoint/get/power","openWB/counter/+/get/power","openWB/counter/get/hierarchy","openWB/counter/set/home_consumption","openWB/optional/int_display/theme","openWB/optional/int_display/standby","openWB/optional/rfid/active","openWB/pv/config/configured","openWB/pv/get/power","openWB/system/current_branch","openWB/system/current_commit","openWB/system/ip_address","openWB/system/time","openWB/system/version","openWB/vehicle/+/get/fault_state","openWB/vehicle/+/name","openWB/vehicle/+/soc_module/config","openWB/vehicle/template/charge_template/#"],mqttStore:S(),chartInterval:""}},computed:{changesLocked(){return this.mqttStore.getLockChanges&&this.mqttStore.settings.changesLocked}},created(){this.createConnection()},mounted(){let e=window.location.search;if(e!=""){console.debug("search",e);let t=new URLSearchParams(e);if(t.has("data")){let n=JSON.parse(t.get("data"));Object.entries(n).forEach(([r,o])=>{console.log("updateSetting",r,o),r.startsWith("parentChargePoint")?this.mqttStore.updateSetting(r,parseInt(o)):this.mqttStore.updateSetting(r,o)})}}this.doSubscribe(this.mqttTopicsToSubscribe),this.chartInterval=setInterval(this.mqttStore.updateChartData,5e3)},beforeUnmount(){this.doUnsubscribe(this.mqttTopicsToSubscribe),clearInterval(this.chartInterval)},methods:{createConnection(){const{protocol:e,host:t,port:n,endpoint:r,...o}=this.connection,i=`${e}://${t}:${n}${r}`;console.debug("connecting to broker:",i);try{this.client=U.connect(i,o)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId)}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,c)=>{if(console.debug(`Received message "${c}" from topic "${a}"`),c.toString().length>0){let d;try{d=JSON.parse(c.toString())}catch(g){console.debug("Json parsing failed, fallback to string: ",a,g),d=c.toString()}this.mqttStore.addTopic(a,d)}else this.mqttStore.removeTopic(a)})},doSubscribe(e){e.forEach(t=>{this.mqttStore.initTopic(t)}),this.client.subscribe(e,{},t=>{if(t){console.error("Subscribe to topics error",t);return}})},doUnsubscribe(e){e.forEach(t=>{this.mqttStore.removeTopic(t)}),this.client.unsubscribe(e,t=>{t&&console.error("Unsubscribe error",t)})},doPublish(e,t,n=!0,r=2){console.debug("doPublish",e,t);let o={qos:r,retain:n};this.client.publish(e,JSON.stringify(t),o,i=>{i&&console.error("Publish error",i)})},sendTopicToBroker(e,t=void 0){let n=e.replace("openWB/","openWB/set/");t===void 0&&(t=this.mqttStore.topics[e]),this.doPublish(n,t)},sendCommand(e){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",e,!1)},sendSystemCommand(e,t={}){this.sendCommand({command:e,data:t})}}};function ye(e,t,n,r,o,i){const a=u("DateTime"),c=u("i-column"),d=u("i-row"),g=u("i-container"),C=u("LockNavItem"),h=u("NavBar"),b=u("TouchBlocker"),f=u("i-layout-aside"),N=u("RouterView"),F=u("i-layout-content"),M=u("i-layout");return p(),m(M,{vertical:""},{default:s(()=>[l(f,{class:"_position:fixed"},{default:s(()=>[l(g,{fluid:"",class:"_margin-bottom:1"},{default:s(()=>[l(d,{center:""},{default:s(()=>[l(c,null,{default:s(()=>[l(a)]),_:1})]),_:1})]),_:1}),l(C),l(h,{"changes-locked":i.changesLocked},null,8,["changes-locked"]),l(b)]),_:1}),l(F,null,{default:s(()=>[l(N,{"changes-locked":i.changesLocked},null,8,["changes-locked"])]),_:1})]),_:1})}const Be=v(we,[["render",ye],["__scopeId","data-v-ca2dbc73"]]),Se="modulepreload",ke=function(e){return"/openWB/web/display/themes/cards/"+e},$={},k=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));o=Promise.allSettled(n.map(d=>{if(d=ke(d),d in $)return;$[d]=!0;const g=d.endsWith(".css"),C=g?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${C}`))return;const h=document.createElement("link");if(h.rel=g?"stylesheet":Se,g||(h.as="script"),h.crossOrigin="",h.href=d,c&&h.setAttribute("nonce",c),document.head.appendChild(h),g)return new Promise((b,f)=>{h.addEventListener("load",b),h.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${d}`)))})}))}function i(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return o.then(a=>{for(const c of a||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})},We={name:"WelcomeView",data(){return{mqttStore:S()}},computed:{firstView(){if(this.mqttStore.getThemeConfiguration){if(this.mqttStore.getThemeConfiguration.enable_dashboard_view)return"dash-board";if(this.mqttStore.getThemeConfiguration.enable_energy_flow_view)return"energy-flow";if(this.mqttStore.getThemeConfiguration.enable_charge_points_view)return"charge-points";if(this.mqttStore.getThemeConfiguration.enable_status_view)return"status"}}},mounted(){setTimeout(this.selectFirstRoute,3e3)},methods:{selectFirstRoute(){this.firstView?this.$router.push({name:this.firstView}):console.warn("no router view enabled, check your configuration!")}}};function Ve(e,t,n,r,o,i){const a=u("i-card"),c=u("i-column"),d=u("i-row"),g=u("i-container");return p(),m(g,null,{default:s(()=>[l(d,{center:"",middle:""},{default:s(()=>[l(c,null,{default:s(()=>[l(a,{color:"primary"},{header:s(()=>t[0]||(t[0]=[_(" Cards Theme ")])),default:s(()=>[t[1]||(t[1]=V("img",{class:"logo",src:x},null,-1))]),_:1})]),_:1})]),_:1})]),_:1})}const Pe=v(We,[["render",Ve],["__scopeId","data-v-16686e30"]]),Te=H({history:z("/openWB/web/display/themes/cards/"),routes:[{path:"/",name:"welcome",component:Pe},{path:"/DashBoard",name:"dash-board",component:()=>k(()=>import("./DashBoardView-BJO8O7Y4.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))},{path:"/EnergyFlow",name:"energy-flow",component:()=>k(()=>import("./EnergyFlowView-CAd9Xlbe.js"),__vite__mapDeps([10,1,2,3,4,5,7,11]))},{path:"/ChargePoints",name:"charge-points",component:()=>k(()=>import("./ChargePointsView-CaYX8Nkl.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,8,13]))},{path:"/Status",name:"status",component:()=>k(()=>import("./StatusView-DclrRcZL.js"),__vite__mapDeps([14,7,3,2,4,1,5]))}]}),T=G(Be);T.use(K());T.use(Te);T.use(J,{colorMode:"dark",components:Z});T.mount("#app");export{he as C,ue as N,S as u};
diff --git a/packages/modules/display_themes/cards/web/index.html b/packages/modules/display_themes/cards/web/index.html
index d7ce7033ec..99ee2aacd0 100644
--- a/packages/modules/display_themes/cards/web/index.html
+++ b/packages/modules/display_themes/cards/web/index.html
@@ -6,12 +6,12 @@
   <link rel="icon" href="/openWB/web/display/themes/cards/favicon.ico">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>openWB Display - Cards</title>
-  <script type="module" crossorigin src="/openWB/web/display/themes/cards/assets/index-CHLaD7ED.js"></script>
+  <script type="module" crossorigin src="/openWB/web/display/themes/cards/assets/index-CtySFcBa.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-CZ1MGz7j.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-inkline-Ce5aFAnW.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-fortawesome-C68yAli-.js">
   <link rel="stylesheet" crossorigin href="/openWB/web/display/themes/cards/assets/vendor-inkline-BDgt6n8h.css">
-  <link rel="stylesheet" crossorigin href="/openWB/web/display/themes/cards/assets/index-BkCKa8xR.css">
+  <link rel="stylesheet" crossorigin href="/openWB/web/display/themes/cards/assets/index-CqRNIbkO.css">
 </head>
 
 <body>

From f6c4a675655aad3435c2180f358b7fee87669964 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 1 Oct 2024 13:39:45 +0200
Subject: [PATCH 101/205] fix error handling internal chargepoint (#1910)

---
 .../internal_chargepoint_handler.py                         | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py b/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py
index 2c096726df..ad64807b29 100644
--- a/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py
+++ b/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py
@@ -205,9 +205,11 @@ def _loop():
                 if self.cp1:
                     self.cp1.update(data["global_data"], data["cp1"].data, data["rfid_data"])
                 time.sleep(1.1)
-        with SingleComponentUpdateContext(self.fault_state_info_cp0):
+        with SingleComponentUpdateContext(self.fault_state_info_cp0, update_always=False):
             # Allgemeine Fehlermeldungen an LP 1
-            if self.cp0_client_handler is not None and self.cp1_client_handler is None:
+            if self.cp0_client_handler is None and self.cp1_client_handler is None:
+                log.error("Kein ClientHandler vorhanden. Beende.")
+            elif self.cp0_client_handler is not None and self.cp1_client_handler is None:
                 with self.cp0_client_handler.client:
                     _loop()
             elif self.cp0_client_handler is None and self.cp1_client_handler is not None:

From 11ad1fc869f67cc4f9b17d25a5fffd4c83eeb491 Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Wed, 2 Oct 2024 07:53:23 +0200
Subject: [PATCH 102/205] handle offline boot (#1854)

* check for inet connection and disable data fetching

* skip restore without inet connection
---
 runs/atreboot.sh      | 67 +++++++++++++++++++++++++------------------
 runs/setup_network.sh | 29 +++++++++++++------
 2 files changed, 60 insertions(+), 36 deletions(-)

diff --git a/runs/atreboot.sh b/runs/atreboot.sh
index b82a48efa4..93bc1692a5 100755
--- a/runs/atreboot.sh
+++ b/runs/atreboot.sh
@@ -1,5 +1,6 @@
 #!/bin/bash
 OPENWBBASEDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
+hasInet=0
 
 # setup log file
 LOGFILE="${OPENWBBASEDIR}/ramdisk/main.log"
@@ -151,7 +152,15 @@ chmod 666 "$LOGFILE"
 
 	# network setup
 	echo "Network..."
-	"${OPENWBBASEDIR}/runs/setup_network.sh"
+	if "${OPENWBBASEDIR}/runs/setup_network.sh"; then
+		hasInet=1
+		echo "network setup done"
+	else
+		hasInet=0
+		echo "#### network setup failed!"
+		echo "#### unable to update dependencies and version information"
+		echo "#### continue anyway..."
+	fi
 
 	# tune apt configuration and install required packages
 	if [ -d "/etc/apt/apt.conf.d" ]; then
@@ -164,7 +173,11 @@ chmod 666 "$LOGFILE"
 	else
 		echo "path '/etc/apt/apt.conf.d' is missing! unsupported system!"
 	fi
-	"${OPENWBBASEDIR}/runs/install_packages.sh"
+	if ((hasInet == 1)); then
+		"${OPENWBBASEDIR}/runs/install_packages.sh"
+	else
+		echo "no internet connection, skipping package installation"
+	fi
 
 	# check for openwb cron jobs
 	if versionMatch "${OPENWBBASEDIR}/data/config/openwb.cron" "/etc/cron.d/openwb"; then
@@ -188,16 +201,6 @@ chmod 666 "$LOGFILE"
 		sudo reboot now &
 	fi
 
-	# this check is obsolete as openwb2 service definition is a symlink!
-	# ToDo: remove lines
-	# if versionMatch "${OPENWBBASEDIR}/data/config/openwb2.service" "/etc/systemd/system/openwb2.service"; then
-	# 	echo "openwb2.service already up to date"
-	# else
-	# 	echo "updating openwb2.service"
-	# 	sudo cp "${OPENWBBASEDIR}/data/config/openwb2.service" "/etc/systemd/system/openwb2.service"
-	# 	sudo reboot now &
-	# fi
-
 	# check for remote support service definition
 	if [ ! -f "/etc/systemd/system/openwbRemoteSupport.service" ]; then
 		echo "openwbRemoteSupport service missing, installing service"
@@ -219,11 +222,15 @@ chmod 666 "$LOGFILE"
 
 	# check for pending restore
 	if [[ -f "${OPENWBBASEDIR}/data/restore/run_on_boot" ]]; then
-		echo "pending restore detected, executing restore"
+		echo "pending restore detected"
 		# remove flag to prevent a boot loop on failure
 		rm "${OPENWBBASEDIR}/data/restore/run_on_boot"
-		"${OPENWBBASEDIR}/runs/restore.sh"
-		# restore.sh will reboot if successful
+		if ((hasInet == 1)); then
+			"${OPENWBBASEDIR}/runs/restore.sh"
+			# restore.sh will reboot if successful
+		else
+			echo "no internet connection, restore not possible, skipping"
+		fi
 	else
 		echo "no restore pending, normal startup"
 	fi
@@ -346,26 +353,30 @@ chmod 666 "$LOGFILE"
 	fi
 
 	# check for python dependencies
-	echo "install required python packages with 'pip3'..."
-	if pip3 install -r "${OPENWBBASEDIR}/requirements.txt"; then
-		echo "done"
+	if ((hasInet == 1)); then
+		echo "install required python packages with 'pip3'..."
+		if pip3 install -r "${OPENWBBASEDIR}/requirements.txt"; then
+			echo "done"
+		else
+			echo "failed!"
+			message="Bei der Installation der benötigten Python-Bibliotheken ist ein Fehler aufgetreten! Bitte die Logdateien prüfen."
+			payload=$(printf '{"source": "system", "type": "danger", "message": "%s", "timestamp": %d}' "$message" "$(date +"%s")")
+			mosquitto_pub -p 1886 -t "openWB/system/messages/$(date +"%s%3N")" -r -m "$payload"
+		fi
 	else
-		echo "failed!"
-		message="Bei der Installation der benötigten Python-Bibliotheken ist ein Fehler aufgetreten! Bitte die Logdateien prüfen."
-		payload=$(printf '{"source": "system", "type": "danger", "message": "%s", "timestamp": %d}' "$message" "$(date +"%s")")
-		mosquitto_pub -p 1886 -t "openWB/system/messages/$(date +"%s%3N")" -r -m "$payload"
+		echo "no internet connection, skipping python package installation"
 	fi
 
 	# collect some hardware info
 	"${OPENWBBASEDIR}/runs/uuid.sh"
 
 	# update current published versions
-	echo "load versions..."
-	"$OPENWBBASEDIR/runs/update_available_versions.sh"
-	# # and record the current commit details
-	# commitId=$(git -C "${OPENWBBASEDIR}/" log --format="%h" -n 1)
-	# echo "$commitId" > "${OPENWBBASEDIR}/ramdisk/currentCommitHash"
-	# git -C "${OPENWBBASEDIR}/" branch -a --contains "$commitId" | perl -nle 'm|.*origin/(.+).*|; print $1' | uniq | xargs > "${OPENWBBASEDIR}/ramdisk/currentCommitBranches"
+	if ((hasInet == 1)); then
+		echo "load versions..."
+		"$OPENWBBASEDIR/runs/update_available_versions.sh"
+	else
+		echo "no internet connection, skipping version update"
+	fi
 
 	# set restore dir permissions to allow file upload for apache
 	sudo chgrp www-data "${OPENWBBASEDIR}/data/restore" "${OPENWBBASEDIR}/data/restore/"* "${OPENWBBASEDIR}/data/data_migration" "${OPENWBBASEDIR}/data/data_migration/"*
diff --git a/runs/setup_network.sh b/runs/setup_network.sh
index 049293cbed..1e152f04a1 100755
--- a/runs/setup_network.sh
+++ b/runs/setup_network.sh
@@ -28,6 +28,15 @@ function setup_pnp_network() {
 	fi
 }
 
+function check_internet_connection() {
+	if ping -c1 "www.openwb.de" &>/dev/null; then
+		echo "Internet connection is up"
+	else
+		echo "ERROR: no internet connection!"
+		exit 1
+	fi
+}
+
 # check for LAN/WLAN connection
 echo -n "Wait for connection..."
 connectCounter=0
@@ -37,13 +46,17 @@ while [[ ! $(ip route get 1) ]] && ((connectCounter < 30)); do
 	sleep 1
 done
 echo ""
-if ((connectCounter <30)); then
-	# image restricted to LAN only
-	# get local ip
-	ip="$(get_ip)"
-	echo "my primary IP: $ip"
-	mosquitto_pub -t "openWB/system/ip_address" -p 1886 -r -m "\"$ip\""
-	setup_pnp_network
-else
+if ((connectCounter >= 30)); then
 	echo "ERROR: network not up after $connectCounter seconds!"
+	exit 1
+fi
+
+# image restricted to LAN only
+# get local ip
+ip="$(get_ip)"
+echo "my primary IP: $ip"
+mosquitto_pub -t "openWB/system/ip_address" -p 1886 -r -m "\"$ip\""
+setup_pnp_network
+if ! check_internet_connection; then
+	exit 1
 fi

From b804bed00702393e907d462be684903fcf70a4da Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Wed, 2 Oct 2024 07:56:51 +0200
Subject: [PATCH 103/205] implement local display detection on rpi (#1890)

* implement local display detection on rpi
* new default values
---
 packages/helpermodules/update_config.py |  6 ++++--
 runs/atreboot.sh                        | 19 +++++++++++++++++++
 runs/update_local_display.sh            |  4 ++--
 3 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index a1595f16ee..6251afc440 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -242,6 +242,7 @@ class UpdateConfig:
         "^openWB/optional/et/get/prices$",
         "^openWB/optional/et/provider$",
         "^openWB/optional/int_display/active$",
+        "^openWB/optional/int_display/detected$",
         "^openWB/optional/int_display/on_if_plugged_in$",
         "^openWB/optional/int_display/pin_active$",
         "^openWB/optional/int_display/pin_code$",
@@ -488,12 +489,13 @@ class UpdateConfig:
         ("openWB/internal_chargepoint/0/data/parent_cp", None),
         ("openWB/internal_chargepoint/1/data/parent_cp", None),
         ("openWB/optional/et/provider", NO_MODULE),
-        ("openWB/optional/int_display/active", False),
+        ("openWB/optional/int_display/active", True),
+        ("openWB/optional/int_display/detected", True),
         ("openWB/optional/int_display/on_if_plugged_in", True),
         ("openWB/optional/int_display/pin_active", False),
         ("openWB/optional/int_display/pin_code", "0000"),
         ("openWB/optional/int_display/standby", 60),
-        ("openWB/optional/int_display/rotation", 180),
+        ("openWB/optional/int_display/rotation", 0),
         ("openWB/optional/int_display/theme", dataclass_utils.asdict(CardsDisplayTheme())),
         ("openWB/optional/int_display/only_local_charge_points", False),
         ("openWB/optional/led/active", False),
diff --git a/runs/atreboot.sh b/runs/atreboot.sh
index 93bc1692a5..2e683e05dc 100755
--- a/runs/atreboot.sh
+++ b/runs/atreboot.sh
@@ -239,6 +239,25 @@ chmod 666 "$LOGFILE"
 	echo "cleaning obsolete python cache folders..."
 	"$OPENWBBASEDIR/runs/cleanPythonCache.sh"
 
+	# detect connected displays
+	# set default to "true" as fallback if "tvservice" is missing
+	displayDetected="true"
+	if which tvservice >/dev/null; then
+		echo "detected 'tvservice', query for connected displays"
+		output=$(tvservice -l)
+		echo "$output"
+		if [[ ! $output =~ "HDMI" ]] && [[ ! $output =~ "LCD" ]]; then
+			echo "no display detected"
+			displayDetected="false"
+		else
+			echo "detected HDMI or LCD display(s)"
+		fi
+	else
+		echo "'tvservice' not found, assuming a display is present"
+	fi
+	echo "displayDetected: $displayDetected"
+	mosquitto_pub -p 1886 -t "openWB/optional/int_display/detected" -r -m "$displayDetected"
+
 	# display setup
 	echo "display setup..."
 	displaySetupModified=0
diff --git a/runs/update_local_display.sh b/runs/update_local_display.sh
index e50a2e0973..fb3dd1bd46 100755
--- a/runs/update_local_display.sh
+++ b/runs/update_local_display.sh
@@ -13,7 +13,7 @@ sudo sed -i "s/^xset s .*$/xset s ${timeout}/" "/home/openwb/.config/lxsession/L
 
 # enable/disable display
 default_target=$(systemctl get-default)
-if display_active=$(mosquitto_sub -p 1886 -t "openWB/optional/int_display/active" -C 1 -W 1) && [[ $display_active == "true" ]]; then
+if display_active=$(mosquitto_sub -p 1886 -t "openWB/optional/int_display/active" -C 1 -W 1) && [[ $display_active == "true" ]] && display_detected=$(mosquitto_sub -p 1886 -t "openWB/optional/int_display/detected" -C 1 -W 1) && [[ $display_detected == "true" ]]; then
 	if [[ $default_target == "graphical.target" ]]; then
 		echo "graphical target already configured"
 	else
@@ -37,7 +37,7 @@ else
 fi
 
 if rotation=$(mosquitto_sub -p 1886 -t "openWB/optional/int_display/rotation" -C 1 -W 1); then
-	rotationValue=$(((rotation / 90 + 4) % 4))  # this allows negative rotation angles
+	rotationValue=$(((rotation / 90 + 4) % 4)) # this allows negative rotation angles
 	current_rotation=$(grep "^lcd_rotate=[0-3]$" /boot/config.txt | grep -o "[0-3]$")
 	echo "current display rotation: $current_rotation"
 	echo "new display rotation: '$rotation' -> $rotationValue"

From 7b56ff78aff0e8724f3052a531a57cfde48a8b45 Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Wed, 2 Oct 2024 12:24:18 +0200
Subject: [PATCH 104/205] update colors display npm packages (#1913)

---
 .../colors/source/package-lock.json           | 1485 +++++++++++------
 .../display_themes/colors/source/package.json |   24 +-
 2 files changed, 951 insertions(+), 558 deletions(-)

diff --git a/packages/modules/display_themes/colors/source/package-lock.json b/packages/modules/display_themes/colors/source/package-lock.json
index 80527ede0e..fbd236b5d8 100644
--- a/packages/modules/display_themes/colors/source/package-lock.json
+++ b/packages/modules/display_themes/colors/source/package-lock.json
@@ -11,19 +11,19 @@
       "dependencies": {
         "bootstrap": "^5.3.3",
         "d3": "^7.9.0",
-        "mqtt": "^5.9.1",
+        "mqtt": "^5.10.0",
         "rollup-plugin-polyfill-node": "^0.13.0",
         "vue": "^3.4.21"
       },
       "devDependencies": {
-        "@babel/types": "^7.25.2",
+        "@babel/types": "^7.25.4",
         "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
         "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
         "@rushstack/eslint-patch": "^1.10.4",
         "@tsconfig/node20": "^20.1.4",
         "@types/bootstrap": "^5.2.10",
         "@types/d3": "^7.4.3",
-        "@types/node": "^20.14.14",
+        "@types/node": "^20.16.1",
         "@vitejs/plugin-vue": "^5.1.2",
         "@vue/eslint-config-prettier": "^8.0.0",
         "@vue/eslint-config-typescript": "^12.0.0",
@@ -33,26 +33,17 @@
         "eslint-plugin-vue": "^9.27.0",
         "npm-run-all2": "^6.2.2",
         "prettier": "^3.3.3",
-        "rollup": "^4.20.0",
+        "rollup": "^4.21.0",
         "typescript": "~5.4.0",
-        "vite": "^5.1.7",
+        "vite": "^5.4.2",
         "vue-tsc": "^2.0.29"
       }
     },
-    "node_modules/@aashutoshrathi/word-wrap": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
-      "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/@babel/helper-string-parser": {
       "version": "7.24.8",
       "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
       "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
-      "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
@@ -61,15 +52,19 @@
       "version": "7.24.7",
       "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
       "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
-      "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/parser": {
-      "version": "7.24.0",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz",
-      "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==",
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
+      "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.25.6"
+      },
       "bin": {
         "parser": "bin/babel-parser.js"
       },
@@ -78,9 +73,10 @@
       }
     },
     "node_modules/@babel/runtime": {
-      "version": "7.24.0",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz",
-      "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==",
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+      "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
+      "license": "MIT",
       "dependencies": {
         "regenerator-runtime": "^0.14.0"
       },
@@ -89,10 +85,10 @@
       }
     },
     "node_modules/@babel/types": {
-      "version": "7.25.2",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz",
-      "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
-      "dev": true,
+      "version": "7.25.6",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
+      "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
+      "license": "MIT",
       "dependencies": {
         "@babel/helper-string-parser": "^7.24.8",
         "@babel/helper-validator-identifier": "^7.24.7",
@@ -107,6 +103,7 @@
       "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz",
       "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==",
       "dev": true,
+      "license": "ISC",
       "peerDependencies": {
         "esbuild": "*"
       }
@@ -116,6 +113,7 @@
       "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.2.2.tgz",
       "integrity": "sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "escape-string-regexp": "^4.0.0",
         "rollup-plugin-node-polyfills": "^0.2.1"
@@ -132,6 +130,7 @@
         "ppc64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "aix"
@@ -148,6 +147,7 @@
         "arm"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
@@ -164,6 +164,7 @@
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
@@ -180,6 +181,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
@@ -196,6 +198,7 @@
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
@@ -212,6 +215,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
@@ -228,6 +232,7 @@
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "freebsd"
@@ -244,6 +249,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "freebsd"
@@ -260,6 +266,7 @@
         "arm"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -276,6 +283,7 @@
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -292,6 +300,7 @@
         "ia32"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -308,6 +317,7 @@
         "loong64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -324,6 +334,7 @@
         "mips64el"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -340,6 +351,7 @@
         "ppc64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -356,6 +368,7 @@
         "riscv64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -372,6 +385,7 @@
         "s390x"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -388,6 +402,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -404,6 +419,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "netbsd"
@@ -420,6 +436,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "openbsd"
@@ -436,6 +453,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "sunos"
@@ -452,6 +470,7 @@
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -468,6 +487,7 @@
         "ia32"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -484,6 +504,7 @@
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -497,6 +518,7 @@
       "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
       "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "eslint-visitor-keys": "^3.3.0"
       },
@@ -508,10 +530,11 @@
       }
     },
     "node_modules/@eslint-community/regexpp": {
-      "version": "4.10.0",
-      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
-      "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+      "version": "4.11.1",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
+      "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
       }
@@ -521,6 +544,7 @@
       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
       "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ajv": "^6.12.4",
         "debug": "^4.3.2",
@@ -544,6 +568,7 @@
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -554,6 +579,7 @@
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -562,21 +588,24 @@
       }
     },
     "node_modules/@eslint/js": {
-      "version": "8.57.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
-      "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+      "version": "8.57.1",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+      "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       }
     },
     "node_modules/@humanwhocodes/config-array": {
-      "version": "0.11.14",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
-      "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+      "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+      "deprecated": "Use @eslint/config-array instead",
       "dev": true,
+      "license": "Apache-2.0",
       "dependencies": {
-        "@humanwhocodes/object-schema": "^2.0.2",
+        "@humanwhocodes/object-schema": "^2.0.3",
         "debug": "^4.3.1",
         "minimatch": "^3.0.5"
       },
@@ -589,6 +618,7 @@
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -599,6 +629,7 @@
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -611,6 +642,7 @@
       "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
       "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": ">=12.22"
       },
@@ -620,21 +652,25 @@
       }
     },
     "node_modules/@humanwhocodes/object-schema": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
-      "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
-      "dev": true
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+      "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+      "deprecated": "Use @eslint/object-schema instead",
+      "dev": true,
+      "license": "BSD-3-Clause"
     },
     "node_modules/@jridgewell/sourcemap-codec": {
-      "version": "1.4.15",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
-      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+      "license": "MIT"
     },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
       "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@nodelib/fs.stat": "2.0.5",
         "run-parallel": "^1.1.9"
@@ -648,6 +684,7 @@
       "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
       "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 8"
       }
@@ -657,6 +694,7 @@
       "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
       "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@nodelib/fs.scandir": "2.1.5",
         "fastq": "^1.6.0"
@@ -670,6 +708,7 @@
       "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
       "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
       },
@@ -681,6 +720,7 @@
       "version": "2.11.8",
       "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
       "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+      "license": "MIT",
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/popperjs"
@@ -690,6 +730,7 @@
       "version": "5.0.5",
       "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz",
       "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==",
+      "license": "MIT",
       "dependencies": {
         "@rollup/pluginutils": "^5.0.1",
         "estree-walker": "^2.0.2",
@@ -707,10 +748,26 @@
         }
       }
     },
+    "node_modules/@rollup/plugin-inject/node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "license": "MIT"
+    },
+    "node_modules/@rollup/plugin-inject/node_modules/magic-string": {
+      "version": "0.30.11",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
+      "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
+      "license": "MIT",
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.5.0"
+      }
+    },
     "node_modules/@rollup/pluginutils": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
-      "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz",
+      "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==",
+      "license": "MIT",
       "dependencies": {
         "@types/estree": "^1.0.0",
         "estree-walker": "^2.0.2",
@@ -728,193 +785,215 @@
         }
       }
     },
+    "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "license": "MIT"
+    },
     "node_modules/@rollup/rollup-android-arm-eabi": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz",
-      "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz",
+      "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==",
       "cpu": [
         "arm"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
       ]
     },
     "node_modules/@rollup/rollup-android-arm64": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz",
-      "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz",
+      "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
       ]
     },
     "node_modules/@rollup/rollup-darwin-arm64": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz",
-      "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz",
+      "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
       ]
     },
     "node_modules/@rollup/rollup-darwin-x64": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz",
-      "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz",
+      "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
       ]
     },
     "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz",
-      "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz",
+      "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==",
       "cpu": [
         "arm"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz",
-      "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz",
+      "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==",
       "cpu": [
         "arm"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-arm64-gnu": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz",
-      "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz",
+      "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-arm64-musl": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz",
-      "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz",
+      "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz",
-      "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz",
+      "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==",
       "cpu": [
         "ppc64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz",
-      "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz",
+      "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==",
       "cpu": [
         "riscv64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-s390x-gnu": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz",
-      "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz",
+      "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==",
       "cpu": [
         "s390x"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-gnu": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz",
-      "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz",
+      "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-musl": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz",
-      "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz",
+      "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
       ]
     },
     "node_modules/@rollup/rollup-win32-arm64-msvc": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz",
-      "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz",
+      "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==",
       "cpu": [
         "arm64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
       ]
     },
     "node_modules/@rollup/rollup-win32-ia32-msvc": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz",
-      "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz",
+      "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==",
       "cpu": [
         "ia32"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
       ]
     },
     "node_modules/@rollup/rollup-win32-x64-msvc": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz",
-      "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz",
+      "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==",
       "cpu": [
         "x64"
       ],
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -924,19 +1003,22 @@
       "version": "1.10.4",
       "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz",
       "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@tsconfig/node20": {
       "version": "20.1.4",
       "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz",
       "integrity": "sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/bootstrap": {
       "version": "5.2.10",
       "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.2.10.tgz",
       "integrity": "sha512-F2X+cd6551tep0MvVZ6nM8v7XgGN/twpdNDjqS1TUM7YFNEtQYWk+dKAnH+T1gr6QgCoGMPl487xw/9hXooa2g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@popperjs/core": "^2.9.2"
       }
@@ -946,6 +1028,7 @@
       "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
       "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-array": "*",
         "@types/d3-axis": "*",
@@ -983,13 +1066,15 @@
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
       "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-axis": {
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz",
       "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-selection": "*"
       }
@@ -999,6 +1084,7 @@
       "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz",
       "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-selection": "*"
       }
@@ -1007,19 +1093,22 @@
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz",
       "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-color": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
       "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-contour": {
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz",
       "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-array": "*",
         "@types/geojson": "*"
@@ -1029,19 +1118,22 @@
       "version": "6.0.4",
       "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
       "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-dispatch": {
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz",
       "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-drag": {
       "version": "3.0.7",
       "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz",
       "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-selection": "*"
       }
@@ -1050,55 +1142,63 @@
       "version": "3.0.7",
       "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz",
       "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-ease": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz",
       "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-fetch": {
       "version": "3.0.7",
       "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz",
       "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-dsv": "*"
       }
     },
     "node_modules/@types/d3-force": {
-      "version": "3.0.9",
-      "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.9.tgz",
-      "integrity": "sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==",
-      "dev": true
+      "version": "3.0.10",
+      "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz",
+      "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==",
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-format": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz",
       "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-geo": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz",
       "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/geojson": "*"
       }
     },
     "node_modules/@types/d3-hierarchy": {
-      "version": "3.1.6",
-      "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.6.tgz",
-      "integrity": "sha512-qlmD/8aMk5xGorUvTUWHCiumvgaUXYldYjNVOWtYoTYY/L+WwIEAmJxUmTgr9LoGNG0PPAOmqMDJVDPc7DOpPw==",
-      "dev": true
+      "version": "3.1.7",
+      "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz",
+      "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==",
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-interpolate": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
       "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-color": "*"
       }
@@ -1107,31 +1207,36 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz",
       "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-polygon": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz",
       "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-quadtree": {
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz",
       "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-random": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz",
       "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-scale": {
       "version": "4.0.8",
       "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
       "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-time": "*"
       }
@@ -1140,19 +1245,22 @@
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz",
       "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-selection": {
       "version": "3.0.10",
       "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz",
       "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-shape": {
       "version": "3.1.6",
       "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz",
       "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-path": "*"
       }
@@ -1161,25 +1269,29 @@
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz",
       "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-time-format": {
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz",
       "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-timer": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
       "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/d3-transition": {
       "version": "3.0.8",
       "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz",
       "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-selection": "*"
       }
@@ -1189,40 +1301,46 @@
       "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz",
       "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@types/d3-interpolate": "*",
         "@types/d3-selection": "*"
       }
     },
     "node_modules/@types/estree": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
-      "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+      "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+      "license": "MIT"
     },
     "node_modules/@types/geojson": {
       "version": "7946.0.14",
       "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
       "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/json-schema": {
       "version": "7.0.15",
       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
       "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/node": {
-      "version": "20.14.14",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.14.tgz",
-      "integrity": "sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==",
+      "version": "20.16.10",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.10.tgz",
+      "integrity": "sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==",
+      "license": "MIT",
       "dependencies": {
-        "undici-types": "~5.26.4"
+        "undici-types": "~6.19.2"
       }
     },
     "node_modules/@types/readable-stream": {
-      "version": "4.0.10",
-      "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.10.tgz",
-      "integrity": "sha512-AbUKBjcC8SHmImNi4yK2bbjogQlkFSg7shZCcicxPQapniOlajG8GCc39lvXzCWX4lLRRs7DM3VAeSlqmEVZUA==",
+      "version": "4.0.15",
+      "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.15.tgz",
+      "integrity": "sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw==",
+      "license": "MIT",
       "dependencies": {
         "@types/node": "*",
         "safe-buffer": "~5.1.1"
@@ -1232,12 +1350,14 @@
       "version": "7.5.8",
       "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
       "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/ws": {
-      "version": "8.5.10",
-      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
-      "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
+      "version": "8.5.12",
+      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
+      "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
+      "license": "MIT",
       "dependencies": {
         "@types/node": "*"
       }
@@ -1247,6 +1367,7 @@
       "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
       "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/regexpp": "^4.5.1",
         "@typescript-eslint/scope-manager": "6.21.0",
@@ -1282,6 +1403,7 @@
       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
       "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "@typescript-eslint/scope-manager": "6.21.0",
         "@typescript-eslint/types": "6.21.0",
@@ -1310,6 +1432,7 @@
       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
       "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/types": "6.21.0",
         "@typescript-eslint/visitor-keys": "6.21.0"
@@ -1327,6 +1450,7 @@
       "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz",
       "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/typescript-estree": "6.21.0",
         "@typescript-eslint/utils": "6.21.0",
@@ -1354,6 +1478,7 @@
       "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
       "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^16.0.0 || >=18.0.0"
       },
@@ -1367,6 +1492,7 @@
       "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
       "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "@typescript-eslint/types": "6.21.0",
         "@typescript-eslint/visitor-keys": "6.21.0",
@@ -1395,6 +1521,7 @@
       "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
       "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
         "@types/json-schema": "^7.0.12",
@@ -1420,6 +1547,7 @@
       "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
       "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/types": "6.21.0",
         "eslint-visitor-keys": "^3.4.1"
@@ -1436,13 +1564,15 @@
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
       "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/@vitejs/plugin-vue": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz",
-      "integrity": "sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==",
+      "version": "5.1.4",
+      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz",
+      "integrity": "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^18.0.0 || >=20.0.0"
       },
@@ -1452,75 +1582,103 @@
       }
     },
     "node_modules/@volar/language-core": {
-      "version": "2.4.0-alpha.18",
-      "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.18.tgz",
-      "integrity": "sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==",
+      "version": "2.4.5",
+      "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.5.tgz",
+      "integrity": "sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@volar/source-map": "2.4.0-alpha.18"
+        "@volar/source-map": "2.4.5"
       }
     },
     "node_modules/@volar/source-map": {
-      "version": "2.4.0-alpha.18",
-      "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.18.tgz",
-      "integrity": "sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==",
-      "dev": true
+      "version": "2.4.5",
+      "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.5.tgz",
+      "integrity": "sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==",
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@volar/typescript": {
-      "version": "2.4.0-alpha.18",
-      "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.18.tgz",
-      "integrity": "sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==",
+      "version": "2.4.5",
+      "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.5.tgz",
+      "integrity": "sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@volar/language-core": "2.4.0-alpha.18",
+        "@volar/language-core": "2.4.5",
         "path-browserify": "^1.0.1",
         "vscode-uri": "^3.0.8"
       }
     },
     "node_modules/@vue/compiler-core": {
-      "version": "3.4.21",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz",
-      "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.10.tgz",
+      "integrity": "sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==",
+      "license": "MIT",
       "dependencies": {
-        "@babel/parser": "^7.23.9",
-        "@vue/shared": "3.4.21",
+        "@babel/parser": "^7.25.3",
+        "@vue/shared": "3.5.10",
         "entities": "^4.5.0",
         "estree-walker": "^2.0.2",
-        "source-map-js": "^1.0.2"
+        "source-map-js": "^1.2.0"
       }
     },
+    "node_modules/@vue/compiler-core/node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "license": "MIT"
+    },
     "node_modules/@vue/compiler-dom": {
-      "version": "3.4.21",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz",
-      "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.10.tgz",
+      "integrity": "sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/compiler-core": "3.4.21",
-        "@vue/shared": "3.4.21"
+        "@vue/compiler-core": "3.5.10",
+        "@vue/shared": "3.5.10"
       }
     },
     "node_modules/@vue/compiler-sfc": {
-      "version": "3.4.21",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz",
-      "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==",
-      "dependencies": {
-        "@babel/parser": "^7.23.9",
-        "@vue/compiler-core": "3.4.21",
-        "@vue/compiler-dom": "3.4.21",
-        "@vue/compiler-ssr": "3.4.21",
-        "@vue/shared": "3.4.21",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.10.tgz",
+      "integrity": "sha512-to8E1BgpakV7224ZCm8gz1ZRSyjNCAWEplwFMWKlzCdP9DkMKhRRwt0WkCjY7jkzi/Vz3xgbpeig5Pnbly4Tow==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.25.3",
+        "@vue/compiler-core": "3.5.10",
+        "@vue/compiler-dom": "3.5.10",
+        "@vue/compiler-ssr": "3.5.10",
+        "@vue/shared": "3.5.10",
         "estree-walker": "^2.0.2",
-        "magic-string": "^0.30.7",
-        "postcss": "^8.4.35",
-        "source-map-js": "^1.0.2"
+        "magic-string": "^0.30.11",
+        "postcss": "^8.4.47",
+        "source-map-js": "^1.2.0"
+      }
+    },
+    "node_modules/@vue/compiler-sfc/node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "license": "MIT"
+    },
+    "node_modules/@vue/compiler-sfc/node_modules/magic-string": {
+      "version": "0.30.11",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
+      "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
+      "license": "MIT",
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.5.0"
       }
     },
     "node_modules/@vue/compiler-ssr": {
-      "version": "3.4.21",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz",
-      "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.10.tgz",
+      "integrity": "sha512-hxP4Y3KImqdtyUKXDRSxKSRkSm1H9fCvhojEYrnaoWhE4w/y8vwWhnosJoPPe2AXm5sU7CSbYYAgkt2ZPhDz+A==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/compiler-dom": "3.4.21",
-        "@vue/shared": "3.4.21"
+        "@vue/compiler-dom": "3.5.10",
+        "@vue/shared": "3.5.10"
       }
     },
     "node_modules/@vue/compiler-vue2": {
@@ -1528,6 +1686,7 @@
       "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz",
       "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "de-indent": "^1.0.2",
         "he": "^1.2.0"
@@ -1538,6 +1697,7 @@
       "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz",
       "integrity": "sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "eslint-config-prettier": "^8.8.0",
         "eslint-plugin-prettier": "^5.0.0"
@@ -1552,6 +1712,7 @@
       "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz",
       "integrity": "sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@typescript-eslint/eslint-plugin": "^6.7.0",
         "@typescript-eslint/parser": "^6.7.0",
@@ -1572,12 +1733,13 @@
       }
     },
     "node_modules/@vue/language-core": {
-      "version": "2.0.29",
-      "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.29.tgz",
-      "integrity": "sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==",
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.1.6.tgz",
+      "integrity": "sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@volar/language-core": "~2.4.0-alpha.18",
+        "@volar/language-core": "~2.4.1",
         "@vue/compiler-dom": "^3.4.0",
         "@vue/compiler-vue2": "^2.7.16",
         "@vue/shared": "^3.4.0",
@@ -1596,59 +1758,67 @@
       }
     },
     "node_modules/@vue/reactivity": {
-      "version": "3.4.21",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz",
-      "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.10.tgz",
+      "integrity": "sha512-kW08v06F6xPSHhid9DJ9YjOGmwNDOsJJQk0ax21wKaUYzzuJGEuoKNU2Ujux8FLMrP7CFJJKsHhXN9l2WOVi2g==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/shared": "3.4.21"
+        "@vue/shared": "3.5.10"
       }
     },
     "node_modules/@vue/runtime-core": {
-      "version": "3.4.21",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz",
-      "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.10.tgz",
+      "integrity": "sha512-9Q86I5Qq3swSkFfzrZ+iqEy7Vla325M7S7xc1NwKnRm/qoi1Dauz0rT6mTMmscqx4qz0EDJ1wjB+A36k7rl8mA==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/reactivity": "3.4.21",
-        "@vue/shared": "3.4.21"
+        "@vue/reactivity": "3.5.10",
+        "@vue/shared": "3.5.10"
       }
     },
     "node_modules/@vue/runtime-dom": {
-      "version": "3.4.21",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz",
-      "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.10.tgz",
+      "integrity": "sha512-t3x7ht5qF8ZRi1H4fZqFzyY2j+GTMTDxRheT+i8M9Ph0oepUxoadmbwlFwMoW7RYCpNQLpP2Yx3feKs+fyBdpA==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/runtime-core": "3.4.21",
-        "@vue/shared": "3.4.21",
+        "@vue/reactivity": "3.5.10",
+        "@vue/runtime-core": "3.5.10",
+        "@vue/shared": "3.5.10",
         "csstype": "^3.1.3"
       }
     },
     "node_modules/@vue/server-renderer": {
-      "version": "3.4.21",
-      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz",
-      "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.10.tgz",
+      "integrity": "sha512-IVE97tt2kGKwHNq9yVO0xdh1IvYfZCShvDSy46JIh5OQxP1/EXSpoDqetVmyIzL7CYOWnnmMkVqd7YK2QSWkdw==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/compiler-ssr": "3.4.21",
-        "@vue/shared": "3.4.21"
+        "@vue/compiler-ssr": "3.5.10",
+        "@vue/shared": "3.5.10"
       },
       "peerDependencies": {
-        "vue": "3.4.21"
+        "vue": "3.5.10"
       }
     },
     "node_modules/@vue/shared": {
-      "version": "3.4.21",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz",
-      "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g=="
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.10.tgz",
+      "integrity": "sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==",
+      "license": "MIT"
     },
     "node_modules/@vue/tsconfig": {
       "version": "0.5.1",
       "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz",
       "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/abort-controller": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
       "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+      "license": "MIT",
       "dependencies": {
         "event-target-shim": "^5.0.0"
       },
@@ -1657,10 +1827,11 @@
       }
     },
     "node_modules/acorn": {
-      "version": "8.11.3",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
-      "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+      "version": "8.12.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
+      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "acorn": "bin/acorn"
       },
@@ -1673,6 +1844,7 @@
       "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
       "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
       "dev": true,
+      "license": "MIT",
       "peerDependencies": {
         "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
       }
@@ -1682,6 +1854,7 @@
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
         "fast-json-stable-stringify": "^2.0.0",
@@ -1698,6 +1871,7 @@
       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -1707,6 +1881,7 @@
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "color-convert": "^2.0.1"
       },
@@ -1721,13 +1896,15 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true
+      "dev": true,
+      "license": "Python-2.0"
     },
     "node_modules/array-union": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
       "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -1736,7 +1913,8 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/base64-js": {
       "version": "1.5.1",
@@ -1755,12 +1933,14 @@
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
+      ],
+      "license": "MIT"
     },
     "node_modules/bl": {
-      "version": "6.0.12",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.12.tgz",
-      "integrity": "sha512-EnEYHilP93oaOa2MnmNEjAcovPS3JlQZOyzGXi3EyEpPhm9qWvdDp7BmAVEVusGzp8LlwQK56Av+OkDoRjzE0w==",
+      "version": "6.0.16",
+      "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.16.tgz",
+      "integrity": "sha512-V/kz+z2Mx5/6qDfRCilmrukUXcXuCoXKg3/3hDvzKKoSUx8CJKudfIoT29XZc3UE9xBvxs5qictiHdprwtteEg==",
+      "license": "MIT",
       "dependencies": {
         "@types/readable-stream": "^4.0.0",
         "buffer": "^6.0.3",
@@ -1772,7 +1952,8 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
       "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/bootstrap": {
       "version": "5.3.3",
@@ -1788,6 +1969,7 @@
           "url": "https://opencollective.com/bootstrap"
         }
       ],
+      "license": "MIT",
       "peerDependencies": {
         "@popperjs/core": "^2.11.8"
       }
@@ -1797,6 +1979,7 @@
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
       "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0"
       }
@@ -1806,6 +1989,7 @@
       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
       "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "fill-range": "^7.1.1"
       },
@@ -1831,6 +2015,7 @@
           "url": "https://feross.org/support"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "base64-js": "^1.3.1",
         "ieee754": "^1.2.1"
@@ -1839,13 +2024,15 @@
     "node_modules/buffer-from": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+      "license": "MIT"
     },
     "node_modules/callsites": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
@@ -1855,6 +2042,7 @@
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-styles": "^4.1.0",
         "supports-color": "^7.1.0"
@@ -1871,6 +2059,7 @@
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "color-name": "~1.1.4"
       },
@@ -1882,12 +2071,14 @@
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/commander": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
       "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+      "license": "MIT",
       "engines": {
         "node": ">= 10"
       }
@@ -1895,19 +2086,22 @@
     "node_modules/commist": {
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/commist/-/commist-3.2.0.tgz",
-      "integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw=="
+      "integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==",
+      "license": "MIT"
     },
     "node_modules/computeds": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
       "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/concat-stream": {
       "version": "2.0.0",
@@ -1916,6 +2110,7 @@
       "engines": [
         "node >= 6.0"
       ],
+      "license": "MIT",
       "dependencies": {
         "buffer-from": "^1.0.0",
         "inherits": "^2.0.3",
@@ -1927,6 +2122,7 @@
       "version": "3.6.2",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
       "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.3",
         "string_decoder": "^1.1.1",
@@ -1941,6 +2137,7 @@
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "path-key": "^3.1.0",
         "shebang-command": "^2.0.0",
@@ -1955,6 +2152,7 @@
       "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
       "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "cssesc": "bin/cssesc"
       },
@@ -1965,12 +2163,14 @@
     "node_modules/csstype": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
-      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+      "license": "MIT"
     },
     "node_modules/d3": {
       "version": "7.9.0",
       "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz",
       "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==",
+      "license": "ISC",
       "dependencies": {
         "d3-array": "3",
         "d3-axis": "3",
@@ -2011,6 +2211,7 @@
       "version": "3.2.4",
       "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
       "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+      "license": "ISC",
       "dependencies": {
         "internmap": "1 - 2"
       },
@@ -2022,6 +2223,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
       "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2030,6 +2232,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
       "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
+      "license": "ISC",
       "dependencies": {
         "d3-dispatch": "1 - 3",
         "d3-drag": "2 - 3",
@@ -2045,6 +2248,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
       "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
+      "license": "ISC",
       "dependencies": {
         "d3-path": "1 - 3"
       },
@@ -2056,6 +2260,7 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
       "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2064,6 +2269,7 @@
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
       "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
+      "license": "ISC",
       "dependencies": {
         "d3-array": "^3.2.0"
       },
@@ -2075,6 +2281,7 @@
       "version": "6.0.4",
       "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
       "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+      "license": "ISC",
       "dependencies": {
         "delaunator": "5"
       },
@@ -2086,6 +2293,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
       "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2094,6 +2302,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
       "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
+      "license": "ISC",
       "dependencies": {
         "d3-dispatch": "1 - 3",
         "d3-selection": "3"
@@ -2106,6 +2315,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
       "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
+      "license": "ISC",
       "dependencies": {
         "commander": "7",
         "iconv-lite": "0.6",
@@ -2130,6 +2340,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
       "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
+      "license": "BSD-3-Clause",
       "engines": {
         "node": ">=12"
       }
@@ -2138,6 +2349,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
       "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+      "license": "ISC",
       "dependencies": {
         "d3-dsv": "1 - 3"
       },
@@ -2149,6 +2361,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
       "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
+      "license": "ISC",
       "dependencies": {
         "d3-dispatch": "1 - 3",
         "d3-quadtree": "1 - 3",
@@ -2162,6 +2375,7 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
       "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2170,6 +2384,7 @@
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz",
       "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==",
+      "license": "ISC",
       "dependencies": {
         "d3-array": "2.5.0 - 3"
       },
@@ -2181,6 +2396,7 @@
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
       "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2189,6 +2405,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
       "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+      "license": "ISC",
       "dependencies": {
         "d3-color": "1 - 3"
       },
@@ -2200,6 +2417,7 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
       "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2208,6 +2426,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
       "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2216,6 +2435,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
       "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2224,6 +2444,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
       "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2232,6 +2453,7 @@
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
       "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+      "license": "ISC",
       "dependencies": {
         "d3-array": "2.10.0 - 3",
         "d3-format": "1 - 3",
@@ -2247,6 +2469,7 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
       "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
+      "license": "ISC",
       "dependencies": {
         "d3-color": "1 - 3",
         "d3-interpolate": "1 - 3"
@@ -2259,6 +2482,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
       "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2267,6 +2491,7 @@
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
       "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+      "license": "ISC",
       "dependencies": {
         "d3-path": "^3.1.0"
       },
@@ -2278,6 +2503,7 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
       "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+      "license": "ISC",
       "dependencies": {
         "d3-array": "2 - 3"
       },
@@ -2289,6 +2515,7 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
       "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+      "license": "ISC",
       "dependencies": {
         "d3-time": "1 - 3"
       },
@@ -2300,6 +2527,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
       "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -2308,6 +2536,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
       "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
+      "license": "ISC",
       "dependencies": {
         "d3-color": "1 - 3",
         "d3-dispatch": "1 - 3",
@@ -2326,6 +2555,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
       "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+      "license": "ISC",
       "dependencies": {
         "d3-dispatch": "1 - 3",
         "d3-drag": "2 - 3",
@@ -2341,14 +2571,16 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
       "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "version": "4.3.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+      "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+      "license": "MIT",
       "dependencies": {
-        "ms": "2.1.2"
+        "ms": "^2.1.3"
       },
       "engines": {
         "node": ">=6.0"
@@ -2363,12 +2595,14 @@
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
       "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/delaunator": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
       "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
+      "license": "ISC",
       "dependencies": {
         "robust-predicates": "^3.0.2"
       }
@@ -2378,6 +2612,7 @@
       "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
       "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "path-type": "^4.0.0"
       },
@@ -2390,6 +2625,7 @@
       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
       "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
       "dev": true,
+      "license": "Apache-2.0",
       "dependencies": {
         "esutils": "^2.0.2"
       },
@@ -2401,6 +2637,7 @@
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
       "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "license": "BSD-2-Clause",
       "engines": {
         "node": ">=0.12"
       },
@@ -2414,6 +2651,7 @@
       "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
       "dev": true,
       "hasInstallScript": true,
+      "license": "MIT",
       "bin": {
         "esbuild": "bin/esbuild"
       },
@@ -2451,6 +2689,7 @@
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=10"
       },
@@ -2459,16 +2698,17 @@
       }
     },
     "node_modules/eslint": {
-      "version": "8.57.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
-      "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+      "version": "8.57.1",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+      "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/regexpp": "^4.6.1",
         "@eslint/eslintrc": "^2.1.4",
-        "@eslint/js": "8.57.0",
-        "@humanwhocodes/config-array": "^0.11.14",
+        "@eslint/js": "8.57.1",
+        "@humanwhocodes/config-array": "^0.13.0",
         "@humanwhocodes/module-importer": "^1.0.1",
         "@nodelib/fs.walk": "^1.2.8",
         "@ungap/structured-clone": "^1.2.0",
@@ -2518,6 +2758,7 @@
       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz",
       "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "eslint-config-prettier": "bin/cli.js"
       },
@@ -2526,13 +2767,14 @@
       }
     },
     "node_modules/eslint-plugin-prettier": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz",
-      "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==",
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz",
+      "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "prettier-linter-helpers": "^1.0.0",
-        "synckit": "^0.8.6"
+        "synckit": "^0.9.1"
       },
       "engines": {
         "node": "^14.18.0 || >=16.0.0"
@@ -2556,17 +2798,18 @@
       }
     },
     "node_modules/eslint-plugin-vue": {
-      "version": "9.27.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.27.0.tgz",
-      "integrity": "sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==",
+      "version": "9.28.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.28.0.tgz",
+      "integrity": "sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
         "globals": "^13.24.0",
         "natural-compare": "^1.4.0",
         "nth-check": "^2.1.1",
         "postcss-selector-parser": "^6.0.15",
-        "semver": "^7.6.0",
+        "semver": "^7.6.3",
         "vue-eslint-parser": "^9.4.3",
         "xml-name-validator": "^4.0.0"
       },
@@ -2582,6 +2825,7 @@
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
       "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "esrecurse": "^4.3.0",
         "estraverse": "^5.2.0"
@@ -2598,6 +2842,7 @@
       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
       "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       },
@@ -2610,6 +2855,7 @@
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -2620,6 +2866,7 @@
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -2632,6 +2879,7 @@
       "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
       "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "acorn": "^8.9.0",
         "acorn-jsx": "^5.3.2",
@@ -2645,10 +2893,11 @@
       }
     },
     "node_modules/esquery": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
-      "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+      "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
       "dev": true,
+      "license": "BSD-3-Clause",
       "dependencies": {
         "estraverse": "^5.1.0"
       },
@@ -2661,6 +2910,7 @@
       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "estraverse": "^5.2.0"
       },
@@ -2673,20 +2923,24 @@
       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "engines": {
         "node": ">=4.0"
       }
     },
     "node_modules/estree-walker": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
-      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+      "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/esutils": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
       "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -2695,6 +2949,7 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
       "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
@@ -2703,6 +2958,7 @@
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
       "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+      "license": "MIT",
       "engines": {
         "node": ">=0.8.x"
       }
@@ -2711,19 +2967,22 @@
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
       "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/fast-diff": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
       "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
-      "dev": true
+      "dev": true,
+      "license": "Apache-2.0"
     },
     "node_modules/fast-glob": {
       "version": "3.3.2",
       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
       "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@nodelib/fs.stat": "^2.0.2",
         "@nodelib/fs.walk": "^1.2.3",
@@ -2740,6 +2999,7 @@
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "is-glob": "^4.0.1"
       },
@@ -2751,18 +3011,21 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
       "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/fast-levenshtein": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
       "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/fast-unique-numbers": {
       "version": "8.0.13",
       "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-8.0.13.tgz",
       "integrity": "sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==",
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.23.8",
         "tslib": "^2.6.2"
@@ -2776,6 +3039,7 @@
       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
       "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "reusify": "^1.0.4"
       }
@@ -2785,6 +3049,7 @@
       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
       "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "flat-cache": "^3.0.4"
       },
@@ -2797,6 +3062,7 @@
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
       "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "to-regex-range": "^5.0.1"
       },
@@ -2809,6 +3075,7 @@
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
       "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "locate-path": "^6.0.0",
         "path-exists": "^4.0.0"
@@ -2825,6 +3092,7 @@
       "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
       "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "flatted": "^3.2.9",
         "keyv": "^4.5.3",
@@ -2838,19 +3106,22 @@
       "version": "3.3.1",
       "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
       "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/fs.realpath": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/fsevents": {
       "version": "2.3.3",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
       "hasInstallScript": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
@@ -2863,7 +3134,9 @@
       "version": "7.2.3",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
       "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "deprecated": "Glob versions prior to v9 are no longer supported",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -2884,6 +3157,7 @@
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
       "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "is-glob": "^4.0.3"
       },
@@ -2896,6 +3170,7 @@
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -2906,6 +3181,7 @@
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -2918,6 +3194,7 @@
       "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
       "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "type-fest": "^0.20.2"
       },
@@ -2933,6 +3210,7 @@
       "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
       "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "array-union": "^2.1.0",
         "dir-glob": "^3.0.1",
@@ -2952,13 +3230,15 @@
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
       "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/has-flag": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -2968,6 +3248,7 @@
       "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "he": "bin/he"
       }
@@ -2975,12 +3256,14 @@
     "node_modules/help-me": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz",
-      "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg=="
+      "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==",
+      "license": "MIT"
     },
     "node_modules/iconv-lite": {
       "version": "0.6.3",
       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
       "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "license": "MIT",
       "dependencies": {
         "safer-buffer": ">= 2.1.2 < 3.0.0"
       },
@@ -3005,13 +3288,15 @@
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
+      ],
+      "license": "BSD-3-Clause"
     },
     "node_modules/ignore": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
-      "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 4"
       }
@@ -3021,6 +3306,7 @@
       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
       "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "parent-module": "^1.0.0",
         "resolve-from": "^4.0.0"
@@ -3037,6 +3323,7 @@
       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
       "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=0.8.19"
       }
@@ -3045,7 +3332,9 @@
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
       "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "once": "^1.3.0",
         "wrappy": "1"
@@ -3054,12 +3343,14 @@
     "node_modules/inherits": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "license": "ISC"
     },
     "node_modules/internmap": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
       "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
+      "license": "ISC",
       "engines": {
         "node": ">=12"
       }
@@ -3069,6 +3360,7 @@
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -3078,6 +3370,7 @@
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "is-extglob": "^2.1.1"
       },
@@ -3090,6 +3383,7 @@
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=0.12.0"
       }
@@ -3099,6 +3393,7 @@
       "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
       "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -3107,12 +3402,14 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
       "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/js-sdsl": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz",
       "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==",
+      "license": "MIT",
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/js-sdsl"
@@ -3123,6 +3420,7 @@
       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "argparse": "^2.0.1"
       },
@@ -3134,13 +3432,15 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
       "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/json-parse-even-better-errors": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz",
-      "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz",
+      "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
       }
@@ -3149,19 +3449,22 @@
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/json-stable-stringify-without-jsonify": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
       "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/keyv": {
       "version": "4.5.4",
       "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
       "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "json-buffer": "3.0.1"
       }
@@ -3171,6 +3474,7 @@
       "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
       "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "prelude-ls": "^1.2.1",
         "type-check": "~0.4.0"
@@ -3184,6 +3488,7 @@
       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
       "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "p-locate": "^5.0.0"
       },
@@ -3198,35 +3503,30 @@
       "version": "4.17.21",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/lodash.merge": {
       "version": "4.6.2",
       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
+      "version": "10.4.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+      "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+      "license": "ISC"
     },
     "node_modules/magic-string": {
-      "version": "0.30.8",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz",
-      "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==",
+      "version": "0.25.9",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+      "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@jridgewell/sourcemap-codec": "^1.4.15"
-      },
-      "engines": {
-        "node": ">=12"
+        "sourcemap-codec": "^1.4.8"
       }
     },
     "node_modules/memorystream": {
@@ -3243,17 +3543,19 @@
       "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
       "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 8"
       }
     },
     "node_modules/micromatch": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "braces": "^3.0.2",
+        "braces": "^3.0.3",
         "picomatch": "^2.3.1"
       },
       "engines": {
@@ -3265,6 +3567,7 @@
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
       "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^2.0.1"
       },
@@ -3279,14 +3582,16 @@
       "version": "1.2.8",
       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
       "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "license": "MIT",
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
     },
     "node_modules/mqtt": {
-      "version": "5.9.1",
-      "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.9.1.tgz",
-      "integrity": "sha512-FMENfSUMfCSUCnkuUVAL4U01795SUEfrX0NZ53HNr1r2VNpwKhR5Au9viq9WCFGtgrDAmsll4fkloqFCFgStYA==",
+      "version": "5.10.1",
+      "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.10.1.tgz",
+      "integrity": "sha512-hXCOki8sANoQ7w+2OzJzg6qMBxTtrH9RlnVNV8panLZgnl+Gh0J/t4k6r8Az8+C7y3KAcyXtn0mmLixyUom8Sw==",
+      "license": "MIT",
       "dependencies": {
         "@types/readable-stream": "^4.0.5",
         "@types/ws": "^8.5.9",
@@ -3296,7 +3601,6 @@
         "help-me": "^5.0.0",
         "lru-cache": "^10.0.1",
         "minimist": "^1.2.8",
-        "mqtt": "^5.2.0",
         "mqtt-packet": "^9.0.0",
         "number-allocator": "^1.0.14",
         "readable-stream": "^4.4.2",
@@ -3319,30 +3623,25 @@
       "version": "9.0.0",
       "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-9.0.0.tgz",
       "integrity": "sha512-8v+HkX+fwbodsWAZIZTI074XIoxVBOmPeggQuDFCGg1SqNcC+uoRMWu7J6QlJPqIUIJXmjNYYHxBBLr1Y/Df4w==",
+      "license": "MIT",
       "dependencies": {
         "bl": "^6.0.8",
         "debug": "^4.3.4",
         "process-nextick-args": "^2.0.1"
       }
     },
-    "node_modules/mqtt/node_modules/lru-cache": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
-      "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
-      "engines": {
-        "node": "14 || >=16.14"
-      }
-    },
     "node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "license": "MIT"
     },
     "node_modules/muggle-string": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz",
       "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/nanoid": {
       "version": "3.3.7",
@@ -3354,6 +3653,7 @@
           "url": "https://github.com/sponsors/ai"
         }
       ],
+      "license": "MIT",
       "bin": {
         "nanoid": "bin/nanoid.cjs"
       },
@@ -3365,22 +3665,25 @@
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
       "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/npm-normalize-package-bin": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz",
       "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==",
       "dev": true,
+      "license": "ISC",
       "engines": {
         "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
       }
     },
     "node_modules/npm-run-all2": {
-      "version": "6.2.2",
-      "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.2.tgz",
-      "integrity": "sha512-Q+alQAGIW7ZhKcxLt8GcSi3h3ryheD6xnmXahkMRVM5LYmajcUrSITm8h+OPC9RYWMV2GR0Q1ntTUCfxaNoOJw==",
+      "version": "6.2.3",
+      "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.3.tgz",
+      "integrity": "sha512-5RsxC7jEc/RjxOYBVdEfrJf5FsJ0pHA7jr2/OxrThXknajETCTYjigOCG3iaGjdYIKEQlDuCG0ir0T1HTva8pg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-styles": "^6.2.1",
         "cross-spawn": "^7.0.3",
@@ -3406,6 +3709,7 @@
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
       "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=12"
       },
@@ -3418,6 +3722,7 @@
       "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
       "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "boolbase": "^1.0.0"
       },
@@ -3429,6 +3734,7 @@
       "version": "1.0.14",
       "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz",
       "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==",
+      "license": "MIT",
       "dependencies": {
         "debug": "^4.3.1",
         "js-sdsl": "4.3.0"
@@ -3439,22 +3745,24 @@
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
       "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "wrappy": "1"
       }
     },
     "node_modules/optionator": {
-      "version": "0.9.3",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
-      "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+      "version": "0.9.4",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+      "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@aashutoshrathi/word-wrap": "^1.2.3",
         "deep-is": "^0.1.3",
         "fast-levenshtein": "^2.0.6",
         "levn": "^0.4.1",
         "prelude-ls": "^1.2.1",
-        "type-check": "^0.4.0"
+        "type-check": "^0.4.0",
+        "word-wrap": "^1.2.5"
       },
       "engines": {
         "node": ">= 0.8.0"
@@ -3465,6 +3773,7 @@
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
       "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "yocto-queue": "^0.1.0"
       },
@@ -3480,6 +3789,7 @@
       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
       "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "p-limit": "^3.0.2"
       },
@@ -3495,6 +3805,7 @@
       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
       "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "callsites": "^3.0.0"
       },
@@ -3506,13 +3817,15 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
       "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/path-exists": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
       "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -3522,6 +3835,7 @@
       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
       "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -3531,6 +3845,7 @@
       "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
       "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -3540,19 +3855,22 @@
       "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
       "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
     },
     "node_modules/picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+      "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
+      "license": "ISC"
     },
     "node_modules/picomatch": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "license": "MIT",
       "engines": {
         "node": ">=8.6"
       },
@@ -3565,6 +3883,7 @@
       "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
       "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "pidtree": "bin/pidtree.js"
       },
@@ -3573,9 +3892,9 @@
       }
     },
     "node_modules/postcss": {
-      "version": "8.4.35",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
-      "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
+      "version": "8.4.47",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
+      "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
       "funding": [
         {
           "type": "opencollective",
@@ -3590,20 +3909,22 @@
           "url": "https://github.com/sponsors/ai"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "nanoid": "^3.3.7",
-        "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
+        "picocolors": "^1.1.0",
+        "source-map-js": "^1.2.1"
       },
       "engines": {
         "node": "^10 || ^12 || >=14"
       }
     },
     "node_modules/postcss-selector-parser": {
-      "version": "6.0.16",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
-      "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+      "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "cssesc": "^3.0.0",
         "util-deprecate": "^1.0.2"
@@ -3617,6 +3938,7 @@
       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
       "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 0.8.0"
       }
@@ -3626,6 +3948,7 @@
       "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
       "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "prettier": "bin/prettier.cjs"
       },
@@ -3641,6 +3964,7 @@
       "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
       "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "fast-diff": "^1.1.2"
       },
@@ -3652,6 +3976,7 @@
       "version": "0.11.10",
       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
       "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.6.0"
       }
@@ -3659,13 +3984,15 @@
     "node_modules/process-nextick-args": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+      "license": "MIT"
     },
     "node_modules/punycode": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
       "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=6"
       }
@@ -3688,13 +4015,15 @@
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
+      ],
+      "license": "MIT"
     },
     "node_modules/read-package-json-fast": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz",
       "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "json-parse-even-better-errors": "^3.0.0",
         "npm-normalize-package-bin": "^3.0.0"
@@ -3707,6 +4036,7 @@
       "version": "4.5.2",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
       "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+      "license": "MIT",
       "dependencies": {
         "abort-controller": "^3.0.0",
         "buffer": "^6.0.3",
@@ -3721,18 +4051,21 @@
     "node_modules/regenerator-runtime": {
       "version": "0.14.1",
       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
-      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+      "license": "MIT"
     },
     "node_modules/reinterval": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz",
-      "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
+      "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==",
+      "license": "MIT"
     },
     "node_modules/resolve-from": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
       "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=4"
       }
@@ -3742,21 +4075,25 @@
       "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
       "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "iojs": ">=1.0.0",
         "node": ">=0.10.0"
       }
     },
     "node_modules/rfdc": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz",
-      "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg=="
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+      "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
+      "license": "MIT"
     },
     "node_modules/rimraf": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
       "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "deprecated": "Rimraf versions prior to v4 are no longer supported",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "glob": "^7.1.3"
       },
@@ -3770,14 +4107,16 @@
     "node_modules/robust-predicates": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
-      "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
+      "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==",
+      "license": "Unlicense"
     },
     "node_modules/rollup": {
-      "version": "4.20.0",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz",
-      "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==",
+      "version": "4.24.0",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz",
+      "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==",
+      "license": "MIT",
       "dependencies": {
-        "@types/estree": "1.0.5"
+        "@types/estree": "1.0.6"
       },
       "bin": {
         "rollup": "dist/bin/rollup"
@@ -3787,22 +4126,22 @@
         "npm": ">=8.0.0"
       },
       "optionalDependencies": {
-        "@rollup/rollup-android-arm-eabi": "4.20.0",
-        "@rollup/rollup-android-arm64": "4.20.0",
-        "@rollup/rollup-darwin-arm64": "4.20.0",
-        "@rollup/rollup-darwin-x64": "4.20.0",
-        "@rollup/rollup-linux-arm-gnueabihf": "4.20.0",
-        "@rollup/rollup-linux-arm-musleabihf": "4.20.0",
-        "@rollup/rollup-linux-arm64-gnu": "4.20.0",
-        "@rollup/rollup-linux-arm64-musl": "4.20.0",
-        "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0",
-        "@rollup/rollup-linux-riscv64-gnu": "4.20.0",
-        "@rollup/rollup-linux-s390x-gnu": "4.20.0",
-        "@rollup/rollup-linux-x64-gnu": "4.20.0",
-        "@rollup/rollup-linux-x64-musl": "4.20.0",
-        "@rollup/rollup-win32-arm64-msvc": "4.20.0",
-        "@rollup/rollup-win32-ia32-msvc": "4.20.0",
-        "@rollup/rollup-win32-x64-msvc": "4.20.0",
+        "@rollup/rollup-android-arm-eabi": "4.24.0",
+        "@rollup/rollup-android-arm64": "4.24.0",
+        "@rollup/rollup-darwin-arm64": "4.24.0",
+        "@rollup/rollup-darwin-x64": "4.24.0",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.24.0",
+        "@rollup/rollup-linux-arm-musleabihf": "4.24.0",
+        "@rollup/rollup-linux-arm64-gnu": "4.24.0",
+        "@rollup/rollup-linux-arm64-musl": "4.24.0",
+        "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0",
+        "@rollup/rollup-linux-riscv64-gnu": "4.24.0",
+        "@rollup/rollup-linux-s390x-gnu": "4.24.0",
+        "@rollup/rollup-linux-x64-gnu": "4.24.0",
+        "@rollup/rollup-linux-x64-musl": "4.24.0",
+        "@rollup/rollup-win32-arm64-msvc": "4.24.0",
+        "@rollup/rollup-win32-ia32-msvc": "4.24.0",
+        "@rollup/rollup-win32-x64-msvc": "4.24.0",
         "fsevents": "~2.3.2"
       }
     },
@@ -3812,32 +4151,19 @@
       "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==",
       "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "estree-walker": "^0.6.1",
         "magic-string": "^0.25.3",
         "rollup-pluginutils": "^2.8.1"
       }
     },
-    "node_modules/rollup-plugin-inject/node_modules/estree-walker": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
-      "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
-      "dev": true
-    },
-    "node_modules/rollup-plugin-inject/node_modules/magic-string": {
-      "version": "0.25.9",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
-      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
-      "dev": true,
-      "dependencies": {
-        "sourcemap-codec": "^1.4.8"
-      }
-    },
     "node_modules/rollup-plugin-node-polyfills": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz",
       "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "rollup-plugin-inject": "^3.0.0"
       }
@@ -3846,6 +4172,7 @@
       "version": "0.13.0",
       "resolved": "https://registry.npmjs.org/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.13.0.tgz",
       "integrity": "sha512-FYEvpCaD5jGtyBuBFcQImEGmTxDTPbiHjJdrYIp+mFIwgXiXabxvKUK7ZT9P31ozu2Tqm9llYQMRWsfvTMTAOw==",
+      "license": "MIT",
       "dependencies": {
         "@rollup/plugin-inject": "^5.0.4"
       },
@@ -3858,16 +4185,11 @@
       "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
       "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "estree-walker": "^0.6.1"
       }
     },
-    "node_modules/rollup-pluginutils/node_modules/estree-walker": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
-      "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
-      "dev": true
-    },
     "node_modules/run-parallel": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -3887,6 +4209,7 @@
           "url": "https://feross.org/support"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "queue-microtask": "^1.2.2"
       }
@@ -3894,26 +4217,27 @@
     "node_modules/rw": {
       "version": "1.3.3",
       "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
-      "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
+      "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
+      "license": "BSD-3-Clause"
     },
     "node_modules/safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "license": "MIT"
     },
     "node_modules/safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "license": "MIT"
     },
     "node_modules/semver": {
-      "version": "7.6.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
-      "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+      "version": "7.6.3",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
       "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
+      "license": "ISC",
       "bin": {
         "semver": "bin/semver.js"
       },
@@ -3926,6 +4250,7 @@
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
       "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "shebang-regex": "^3.0.0"
       },
@@ -3938,6 +4263,7 @@
       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
       "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
@@ -3947,6 +4273,7 @@
       "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
       "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
       "dev": true,
+      "license": "MIT",
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
@@ -3956,14 +4283,16 @@
       "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
       "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
     },
     "node_modules/source-map-js": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+      "license": "BSD-3-Clause",
       "engines": {
         "node": ">=0.10.0"
       }
@@ -3973,12 +4302,14 @@
       "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
       "deprecated": "Please use @jridgewell/sourcemap-codec instead",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/split2": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
       "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+      "license": "ISC",
       "engines": {
         "node": ">= 10.x"
       }
@@ -3987,6 +4318,7 @@
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
       "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+      "license": "MIT",
       "dependencies": {
         "safe-buffer": "~5.2.0"
       }
@@ -4008,13 +4340,15 @@
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
+      ],
+      "license": "MIT"
     },
     "node_modules/strip-ansi": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-regex": "^5.0.1"
       },
@@ -4027,6 +4361,7 @@
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
       "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       },
@@ -4039,6 +4374,7 @@
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -4047,10 +4383,11 @@
       }
     },
     "node_modules/synckit": {
-      "version": "0.8.8",
-      "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz",
-      "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==",
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz",
+      "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@pkgr/core": "^0.1.0",
         "tslib": "^2.6.2"
@@ -4066,13 +4403,14 @@
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
       "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/to-fast-properties": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
       "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
-      "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=4"
       }
@@ -4082,6 +4420,7 @@
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "is-number": "^7.0.0"
       },
@@ -4094,6 +4433,7 @@
       "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
       "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=16"
       },
@@ -4102,15 +4442,17 @@
       }
     },
     "node_modules/tslib": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
-      "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+      "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
+      "license": "0BSD"
     },
     "node_modules/type-check": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
       "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "prelude-ls": "^1.2.1"
       },
@@ -4123,6 +4465,7 @@
       "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
       "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
       "dev": true,
+      "license": "(MIT OR CC0-1.0)",
       "engines": {
         "node": ">=10"
       },
@@ -4133,13 +4476,15 @@
     "node_modules/typedarray": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+      "license": "MIT"
     },
     "node_modules/typescript": {
-      "version": "5.4.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz",
-      "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==",
+      "version": "5.4.5",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
+      "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
       "devOptional": true,
+      "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -4149,15 +4494,17 @@
       }
     },
     "node_modules/undici-types": {
-      "version": "5.26.5",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
-      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+      "version": "6.19.8",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+      "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+      "license": "MIT"
     },
     "node_modules/uri-js": {
       "version": "4.4.1",
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
       "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "punycode": "^2.1.0"
       }
@@ -4165,17 +4512,19 @@
     "node_modules/util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+      "license": "MIT"
     },
     "node_modules/vite": {
-      "version": "5.1.7",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz",
-      "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==",
+      "version": "5.4.8",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz",
+      "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "esbuild": "^0.19.3",
-        "postcss": "^8.4.35",
-        "rollup": "^4.2.0"
+        "esbuild": "^0.21.3",
+        "postcss": "^8.4.43",
+        "rollup": "^4.20.0"
       },
       "bin": {
         "vite": "bin/vite.js"
@@ -4194,6 +4543,7 @@
         "less": "*",
         "lightningcss": "^1.21.0",
         "sass": "*",
+        "sass-embedded": "*",
         "stylus": "*",
         "sugarss": "*",
         "terser": "^5.4.0"
@@ -4211,6 +4561,9 @@
         "sass": {
           "optional": true
         },
+        "sass-embedded": {
+          "optional": true
+        },
         "stylus": {
           "optional": true
         },
@@ -4223,13 +4576,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/aix-ppc64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
-      "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+      "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
       "cpu": [
         "ppc64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "aix"
@@ -4239,13 +4593,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/android-arm": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
-      "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+      "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
       "cpu": [
         "arm"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
@@ -4255,13 +4610,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/android-arm64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
-      "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+      "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
       "cpu": [
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
@@ -4271,13 +4627,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/android-x64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
-      "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+      "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "android"
@@ -4287,13 +4644,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/darwin-arm64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
-      "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+      "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
       "cpu": [
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
@@ -4303,13 +4661,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/darwin-x64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
-      "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+      "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "darwin"
@@ -4319,13 +4678,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
-      "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+      "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
       "cpu": [
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "freebsd"
@@ -4335,13 +4695,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/freebsd-x64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
-      "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+      "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "freebsd"
@@ -4351,13 +4712,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/linux-arm": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
-      "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+      "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
       "cpu": [
         "arm"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4367,13 +4729,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/linux-arm64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
-      "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+      "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
       "cpu": [
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4383,13 +4746,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/linux-ia32": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
-      "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+      "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
       "cpu": [
         "ia32"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4399,13 +4763,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/linux-loong64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
-      "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+      "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
       "cpu": [
         "loong64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4415,13 +4780,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/linux-mips64el": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
-      "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+      "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
       "cpu": [
         "mips64el"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4431,13 +4797,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/linux-ppc64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
-      "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+      "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
       "cpu": [
         "ppc64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4447,13 +4814,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/linux-riscv64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
-      "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+      "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
       "cpu": [
         "riscv64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4463,13 +4831,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/linux-s390x": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
-      "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+      "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
       "cpu": [
         "s390x"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4479,13 +4848,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/linux-x64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
-      "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+      "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "linux"
@@ -4495,13 +4865,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/netbsd-x64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
-      "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+      "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "netbsd"
@@ -4511,13 +4882,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/openbsd-x64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
-      "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+      "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "openbsd"
@@ -4527,13 +4899,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/sunos-x64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
-      "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+      "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "sunos"
@@ -4543,13 +4916,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/win32-arm64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
-      "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+      "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
       "cpu": [
         "arm64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -4559,13 +4933,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/win32-ia32": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
-      "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+      "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
       "cpu": [
         "ia32"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -4575,13 +4950,14 @@
       }
     },
     "node_modules/vite/node_modules/@esbuild/win32-x64": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
-      "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+      "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
       "cpu": [
         "x64"
       ],
       "dev": true,
+      "license": "MIT",
       "optional": true,
       "os": [
         "win32"
@@ -4591,11 +4967,12 @@
       }
     },
     "node_modules/vite/node_modules/esbuild": {
-      "version": "0.19.12",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
-      "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
+      "version": "0.21.5",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+      "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
       "dev": true,
       "hasInstallScript": true,
+      "license": "MIT",
       "bin": {
         "esbuild": "bin/esbuild"
       },
@@ -4603,47 +4980,49 @@
         "node": ">=12"
       },
       "optionalDependencies": {
-        "@esbuild/aix-ppc64": "0.19.12",
-        "@esbuild/android-arm": "0.19.12",
-        "@esbuild/android-arm64": "0.19.12",
-        "@esbuild/android-x64": "0.19.12",
-        "@esbuild/darwin-arm64": "0.19.12",
-        "@esbuild/darwin-x64": "0.19.12",
-        "@esbuild/freebsd-arm64": "0.19.12",
-        "@esbuild/freebsd-x64": "0.19.12",
-        "@esbuild/linux-arm": "0.19.12",
-        "@esbuild/linux-arm64": "0.19.12",
-        "@esbuild/linux-ia32": "0.19.12",
-        "@esbuild/linux-loong64": "0.19.12",
-        "@esbuild/linux-mips64el": "0.19.12",
-        "@esbuild/linux-ppc64": "0.19.12",
-        "@esbuild/linux-riscv64": "0.19.12",
-        "@esbuild/linux-s390x": "0.19.12",
-        "@esbuild/linux-x64": "0.19.12",
-        "@esbuild/netbsd-x64": "0.19.12",
-        "@esbuild/openbsd-x64": "0.19.12",
-        "@esbuild/sunos-x64": "0.19.12",
-        "@esbuild/win32-arm64": "0.19.12",
-        "@esbuild/win32-ia32": "0.19.12",
-        "@esbuild/win32-x64": "0.19.12"
+        "@esbuild/aix-ppc64": "0.21.5",
+        "@esbuild/android-arm": "0.21.5",
+        "@esbuild/android-arm64": "0.21.5",
+        "@esbuild/android-x64": "0.21.5",
+        "@esbuild/darwin-arm64": "0.21.5",
+        "@esbuild/darwin-x64": "0.21.5",
+        "@esbuild/freebsd-arm64": "0.21.5",
+        "@esbuild/freebsd-x64": "0.21.5",
+        "@esbuild/linux-arm": "0.21.5",
+        "@esbuild/linux-arm64": "0.21.5",
+        "@esbuild/linux-ia32": "0.21.5",
+        "@esbuild/linux-loong64": "0.21.5",
+        "@esbuild/linux-mips64el": "0.21.5",
+        "@esbuild/linux-ppc64": "0.21.5",
+        "@esbuild/linux-riscv64": "0.21.5",
+        "@esbuild/linux-s390x": "0.21.5",
+        "@esbuild/linux-x64": "0.21.5",
+        "@esbuild/netbsd-x64": "0.21.5",
+        "@esbuild/openbsd-x64": "0.21.5",
+        "@esbuild/sunos-x64": "0.21.5",
+        "@esbuild/win32-arm64": "0.21.5",
+        "@esbuild/win32-ia32": "0.21.5",
+        "@esbuild/win32-x64": "0.21.5"
       }
     },
     "node_modules/vscode-uri": {
       "version": "3.0.8",
       "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
       "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/vue": {
-      "version": "3.4.21",
-      "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz",
-      "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==",
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.10.tgz",
+      "integrity": "sha512-Vy2kmJwHPlouC/tSnIgXVg03SG+9wSqT1xu1Vehc+ChsXsRd7jLkKgMltVEFOzUdBr3uFwBCG+41LJtfAcBRng==",
+      "license": "MIT",
       "dependencies": {
-        "@vue/compiler-dom": "3.4.21",
-        "@vue/compiler-sfc": "3.4.21",
-        "@vue/runtime-dom": "3.4.21",
-        "@vue/server-renderer": "3.4.21",
-        "@vue/shared": "3.4.21"
+        "@vue/compiler-dom": "3.5.10",
+        "@vue/compiler-sfc": "3.5.10",
+        "@vue/runtime-dom": "3.5.10",
+        "@vue/server-renderer": "3.5.10",
+        "@vue/shared": "3.5.10"
       },
       "peerDependencies": {
         "typescript": "*"
@@ -4659,6 +5038,7 @@
       "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz",
       "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "debug": "^4.3.4",
         "eslint-scope": "^7.1.1",
@@ -4679,13 +5059,14 @@
       }
     },
     "node_modules/vue-tsc": {
-      "version": "2.0.29",
-      "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.29.tgz",
-      "integrity": "sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==",
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.1.6.tgz",
+      "integrity": "sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "@volar/typescript": "~2.4.0-alpha.18",
-        "@vue/language-core": "2.0.29",
+        "@volar/typescript": "~2.4.1",
+        "@vue/language-core": "2.1.6",
         "semver": "^7.5.4"
       },
       "bin": {
@@ -4700,6 +5081,7 @@
       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "isexe": "^2.0.0"
       },
@@ -4710,34 +5092,47 @@
         "node": ">= 8"
       }
     },
+    "node_modules/word-wrap": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+      "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/worker-timers": {
-      "version": "7.1.4",
-      "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.1.4.tgz",
-      "integrity": "sha512-8PRtiPAyeYukrY+iOUL+0tq4Zn5qyCHrTqFTtHxcESfIxGyulxNwyzQkybrYBKhnMWmx0bku3wxRfE1hts5R6Q==",
+      "version": "7.1.8",
+      "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.1.8.tgz",
+      "integrity": "sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw==",
+      "license": "MIT",
       "dependencies": {
-        "@babel/runtime": "^7.24.0",
+        "@babel/runtime": "^7.24.5",
         "tslib": "^2.6.2",
-        "worker-timers-broker": "^6.1.4",
-        "worker-timers-worker": "^7.0.67"
+        "worker-timers-broker": "^6.1.8",
+        "worker-timers-worker": "^7.0.71"
       }
     },
     "node_modules/worker-timers-broker": {
-      "version": "6.1.4",
-      "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-6.1.4.tgz",
-      "integrity": "sha512-y3D+Yfj37lrItEMIlcfCm/IRueYtYKgpLlTG2wgTIZ9PSw0n/K4kweilgk3gTC4ahbQNVGT90lU+Rf7W4M5bsw==",
+      "version": "6.1.8",
+      "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-6.1.8.tgz",
+      "integrity": "sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ==",
+      "license": "MIT",
       "dependencies": {
-        "@babel/runtime": "^7.24.0",
+        "@babel/runtime": "^7.24.5",
         "fast-unique-numbers": "^8.0.13",
         "tslib": "^2.6.2",
-        "worker-timers-worker": "^7.0.67"
+        "worker-timers-worker": "^7.0.71"
       }
     },
     "node_modules/worker-timers-worker": {
-      "version": "7.0.67",
-      "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-7.0.67.tgz",
-      "integrity": "sha512-0ZP2+v2fyiiiGaCEdWxMRUk5YxGFwWdRGB12ZfQy13vw8/27Xd+MW3ua56qlcM30nzjpddXXzLuEpHhGW+Pz7w==",
+      "version": "7.0.71",
+      "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-7.0.71.tgz",
+      "integrity": "sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ==",
+      "license": "MIT",
       "dependencies": {
-        "@babel/runtime": "^7.24.0",
+        "@babel/runtime": "^7.24.5",
         "tslib": "^2.6.2"
       }
     },
@@ -4745,12 +5140,14 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-      "dev": true
+      "dev": true,
+      "license": "ISC"
     },
     "node_modules/ws": {
       "version": "8.18.0",
       "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
       "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+      "license": "MIT",
       "engines": {
         "node": ">=10.0.0"
       },
@@ -4772,21 +5169,17 @@
       "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
       "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
       "dev": true,
+      "license": "Apache-2.0",
       "engines": {
         "node": ">=12"
       }
     },
-    "node_modules/yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true
-    },
     "node_modules/yocto-queue": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
       "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=10"
       },
diff --git a/packages/modules/display_themes/colors/source/package.json b/packages/modules/display_themes/colors/source/package.json
index 6994a1f101..9f547a3f84 100644
--- a/packages/modules/display_themes/colors/source/package.json
+++ b/packages/modules/display_themes/colors/source/package.json
@@ -15,31 +15,31 @@
   "dependencies": {
     "bootstrap": "^5.3.3",
     "d3": "^7.9.0",
-    "mqtt": "^5.10.0",
+    "mqtt": "^5.10.1",
     "rollup-plugin-polyfill-node": "^0.13.0",
-    "vue": "^3.4.21"
+    "vue": "^3.5.10"
   },
   "devDependencies": {
-    "@babel/types": "^7.25.4",
+    "@babel/types": "^7.25.6",
     "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
     "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
     "@rushstack/eslint-patch": "^1.10.4",
     "@tsconfig/node20": "^20.1.4",
     "@types/bootstrap": "^5.2.10",
     "@types/d3": "^7.4.3",
-    "@types/node": "^20.16.1",
-    "@vitejs/plugin-vue": "^5.1.2",
+    "@types/node": "^20.16.10",
+    "@vitejs/plugin-vue": "^5.1.4",
     "@vue/eslint-config-prettier": "^8.0.0",
     "@vue/eslint-config-typescript": "^12.0.0",
     "@vue/tsconfig": "^0.5.1",
     "esbuild": "^0.20.2",
-    "eslint": "^8.57.0",
-    "eslint-plugin-vue": "^9.27.0",
-    "npm-run-all2": "^6.2.2",
+    "eslint": "^8.57.1",
+    "eslint-plugin-vue": "^9.28.0",
+    "npm-run-all2": "^6.2.3",
     "prettier": "^3.3.3",
-    "rollup": "^4.21.0",
-    "typescript": "~5.4.0",
-    "vite": "^5.4.2",
-    "vue-tsc": "^2.0.29"
+    "rollup": "^4.24.0",
+    "typescript": "~5.4.5",
+    "vite": "^5.4.8",
+    "vue-tsc": "^2.1.6"
   }
 }

From 00ba14565b769cf005525d6ad0858d82bd419629 Mon Sep 17 00:00:00 2001
From: benderl <benderl@users.noreply.github.com>
Date: Wed, 2 Oct 2024 10:24:47 +0000
Subject: [PATCH 105/205] Build Display Theme: Colors

---
 .../colors/web/assets/index-Cdwm3zKc.js       |  6 ++++
 .../colors/web/assets/index-ScYbRoOj.js       |  6 ----
 .../colors/web/assets/vendor-B1GimsSk.js      | 35 -------------------
 .../colors/web/assets/vendor-CxuALWWJ.js      | 35 +++++++++++++++++++
 .../display_themes/colors/web/index.html      |  4 +--
 5 files changed, 43 insertions(+), 43 deletions(-)
 create mode 100644 packages/modules/display_themes/colors/web/assets/index-Cdwm3zKc.js
 delete mode 100644 packages/modules/display_themes/colors/web/assets/index-ScYbRoOj.js
 delete mode 100644 packages/modules/display_themes/colors/web/assets/vendor-B1GimsSk.js
 create mode 100644 packages/modules/display_themes/colors/web/assets/vendor-CxuALWWJ.js

diff --git a/packages/modules/display_themes/colors/web/assets/index-Cdwm3zKc.js b/packages/modules/display_themes/colors/web/assets/index-Cdwm3zKc.js
new file mode 100644
index 0000000000..deb599d8f5
--- /dev/null
+++ b/packages/modules/display_themes/colors/web/assets/index-Cdwm3zKc.js
@@ -0,0 +1,6 @@
+var na=Object.defineProperty;var oa=(t,e,a)=>e in t?na(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var l=(t,e,a)=>oa(t,typeof e!="symbol"?e+"":e,a);import{m as sa,r as F,a as ve,M as ft,d as A,o as m,c as _,n as te,b as M,e as u,f as ge,g as re,h as g,s as fe,i as nt,j as ia,k as b,w as x,u as i,l as T,t as C,p as j,q as Vt,v as Lt,x as la,F as we,y as Be,z as Ae,A as pt,B as Oe,C as Dt,D as ot,E as Ze,G as De,H as Ye,I as gt,J as ca,K as Ue,L as Et,N as ua,O as da,P as Ee,Q as ha,R as pa,S as Gt,T as ga,U as Xe,V as Wt,W as it,X as ma}from"./vendor-CxuALWWJ.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))r(n);new MutationObserver(n=>{for(const s of n)if(s.type==="childList")for(const d of s.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&r(d)}).observe(document,{childList:!0,subtree:!0});function a(n){const s={};return n.integrity&&(s.integrity=n.integrity),n.referrerPolicy&&(s.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?s.credentials="include":n.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(n){if(n.ep)return;n.ep=!0;const s=a(n);fetch(n.href,s)}})();function qe(t,e=1){let a;if(t>=1e3&&e<4){switch(e){case 0:a=Math.round(t/1e3);break;case 1:a=Math.round(t/100)/10;break;case 2:a=Math.round(t/10)/100;break;case 3:a=Math.round(t)/1e3;break;default:a=Math.round(t/100)/10;break}return(a==null?void 0:a.toLocaleString(void 0,{minimumFractionDigits:e}))+" kW"}else return Math.round(t).toLocaleString(void 0)+" W"}function jt(t,e=1,a=!1){let r;if(t>1e6&&(a=!0,t=t/1e3),t>=1e3&&e<4){switch(e){case 0:r=Math.round(t/1e3);break;case 1:r=(Math.round(t/100)/10).toFixed(1);break;case 2:r=(Math.round(t/10)/100).toFixed(2);break;case 3:r=(Math.round(t)/1e3).toFixed(3);break;default:r=Math.round(t/100)/10;break}return r.toLocaleString(void 0,{minimumFractionDigits:e})+(a?" MWh":" kWh")}else return Math.round(t).toLocaleString(void 0)+(a?" kWh":" Wh")}function va(t){return t.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function fa(t,e){return["Jan","Feb","März","April","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Dez"][t]+" "+e}const ya=0,Nt={host:location.hostname,port:location.protocol=="https:"?443:80,endpoint:"/ws",protocol:location.protocol=="https:"?"wss":"ws",connectTimeout:4e3,reconnectPeriod:4e3,clean:!1,clientId:Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,6)},Ke={topic:"",qos:ya};let ue;const{host:ba,port:_a,endpoint:wa,...Ut}=Nt,Sa=`${Ut.protocol}://${ba}:${_a}${wa}`;try{ue=sa.connect(Sa,Ut),ue.on("connect",()=>{console.info("MQTT connection successful.")}),ue.on("disconnect",()=>{console.info("MQTT disconnected")}),ue.on("error",t=>{console.error("MQTT connection failed: ",t)})}catch(t){console.error("MQTT connect error: ",t)}async function ka(t){await zt(),ue?ue.on("message",t):console.error("MqttRegister: MQTT client not available")}async function Te(t){Ke.topic=t;const{topic:e,qos:a}=Ke;await zt(),ue.subscribe(e,{qos:a},r=>{if(r){console.error("MQTT Subscription error: "+r);return}})}function Ve(t){Ke.topic=t;const{topic:e}=Ke;ue.unsubscribe(e,a=>{if(a){console.error("MQTT Unsubscribe from "+t+" failed: "+a);return}})}async function mt(t,e){let r=ue.connected,n=0;for(;!r&&n<10;)console.warn("MQTT not connected. Waiting 0.1 seconds"),await Ft(100),r=ue.connected,n+=1;if(n<10)try{ue.publish(t,e,{qos:0},s=>{s&&console.warn("MQTT publish error: ",s),console.info("MQTT publish: Message sent: ["+t+"]("+e+")")})}catch(s){console.warn("MQTT publish: caught error: "+s)}else console.error("MQTT publish: Lost connection to MQTT server. Please reload the page")}function yt(){return Nt.clientId}const Mt=20;async function zt(){let t=ue.connected,e=0;for(;!t&&e<Mt;)console.warn("MQTT not connected. Waiting 0.1 seconds"),await Ft(100),t=ue.connected,e+=1;return new Promise((a,r)=>{e<Mt?a(!0):r(!1)})}function Ft(t){return new Promise(e=>setTimeout(e,t))}class xa{constructor(e){l(this,"id");l(this,"name","Ladepunkt");l(this,"icon","Ladepunkt");l(this,"type","");l(this,"ev",0);l(this,"template",0);l(this,"connectedPhases",0);l(this,"phase_1",0);l(this,"autoPhaseSwitchHw",!1);l(this,"controlPilotInterruptionHw",!1);l(this,"isEnabled",!0);l(this,"isPluggedIn",!1);l(this,"isCharging",!1);l(this,"_isLocked",!1);l(this,"_connectedVehicle",0);l(this,"chargeTemplate",0);l(this,"evTemplate",0);l(this,"_chargeMode","pv_charging");l(this,"_hasPriority",!1);l(this,"currentPlan","");l(this,"averageConsumption",0);l(this,"vehicleName","");l(this,"rangeCharged",0);l(this,"rangeUnit","");l(this,"counter",0);l(this,"dailyYield",0);l(this,"energyPv",0);l(this,"energyBat",0);l(this,"pvPercentage",0);l(this,"faultState",0);l(this,"faultStr","");l(this,"phasesInUse",0);l(this,"power",0);l(this,"chargedSincePlugged",0);l(this,"stateStr","");l(this,"current",0);l(this,"currents",[0,0,0]);l(this,"phasesToUse",0);l(this,"isSocConfigured",!0);l(this,"isSocManual",!1);l(this,"waitingForSoc",!1);l(this,"color","white");l(this,"_timedCharging",!1);l(this,"_instantChargeLimitMode","");l(this,"_instantTargetCurrent",0);l(this,"_instantTargetSoc",0);l(this,"_instantMaxEnergy",0);l(this,"_pvFeedInLimit",!1);l(this,"_pvMinCurrent",0);l(this,"_pvMaxSoc",101);l(this,"_pvMinSoc",0);l(this,"_pvMinSocCurrent",0);l(this,"_etActive",!1);l(this,"_etMaxPrice",20);this.id=e}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e,q("cpLock",e,this.id)}updateIsLocked(e){this._isLocked=e}get connectedVehicle(){return this._connectedVehicle}set connectedVehicle(e){this._connectedVehicle=e,q("cpVehicle",e,this.id)}updateConnectedVehicle(e){this._connectedVehicle=e}get soc(){return N[this.connectedVehicle]?N[this.connectedVehicle].soc:0}set soc(e){N[this.connectedVehicle]&&(N[this.connectedVehicle].soc=e)}get chargeMode(){return this._chargeMode}set chargeMode(e){this._chargeMode=e,q("chargeMode",e,this.id)}updateChargeMode(e){this._chargeMode=e}get hasPriority(){return this._hasPriority}set hasPriority(e){this._hasPriority=e,q("cpPriority",e,this.id)}updateCpPriority(e){this._hasPriority=e}get timedCharging(){return ie[this.chargeTemplate]?ie[this.chargeTemplate].time_charging.active:!1}set timedCharging(e){ie[this.chargeTemplate].time_charging.active=e,q("cpTimedCharging",e,this.chargeTemplate)}get instantTargetCurrent(){return this._instantTargetCurrent}set instantTargetCurrent(e){this._instantTargetCurrent=e,q("cpInstantTargetCurrent",e,this.id)}updateInstantTargetCurrent(e){this._instantTargetCurrent=e}get instantChargeLimitMode(){return this._instantChargeLimitMode}set instantChargeLimitMode(e){this._instantChargeLimitMode=e,q("cpInstantChargeLimitMode",e,this.id)}updateInstantChargeLimitMode(e){this._instantChargeLimitMode=e}get instantTargetSoc(){return this._instantTargetSoc}set instantTargetSoc(e){this._instantTargetSoc=e,q("cpInstantTargetSoc",e,this.id)}updateInstantTargetSoc(e){this._instantTargetSoc=e}get instantMaxEnergy(){return this._instantMaxEnergy}set instantMaxEnergy(e){this._instantMaxEnergy=e,q("cpInstantMaxEnergy",e,this.id)}updateInstantMaxEnergy(e){this._instantMaxEnergy=e}get pvFeedInLimit(){return this._pvFeedInLimit}set pvFeedInLimit(e){this._pvFeedInLimit=e,q("cpPvFeedInLimit",e,this.id)}updatePvFeedInLimit(e){this._pvFeedInLimit=e}get pvMinCurrent(){return this._pvMinCurrent}set pvMinCurrent(e){this._pvMinCurrent=e,q("cpPvMinCurrent",e,this.id)}updatePvMinCurrent(e){this._pvMinCurrent=e}get pvMaxSoc(){return this._pvMaxSoc}set pvMaxSoc(e){this._pvMaxSoc=e,q("cpPvMaxSoc",e,this.id)}updatePvMaxSoc(e){this._pvMaxSoc=e}get pvMinSoc(){return this._pvMinSoc}set pvMinSoc(e){this._pvMinSoc=e,q("cpPvMinSoc",e,this.id)}updatePvMinSoc(e){this._pvMinSoc=e}get pvMinSocCurrent(){return this._pvMinSocCurrent}set pvMinSocCurrent(e){this._pvMinSocCurrent=e,q("cpPvMinSocCurrent",e,this.id)}updatePvMinSocCurrent(e){this._pvMinSocCurrent=e}get realCurrent(){switch(this.phasesInUse){case 0:return 0;case 1:return this.currents[0];case 2:return(this.currents[0]+this.currents[1])/2;case 3:return(this.currents[0]+this.currents[1]+this.currents[2])/3;default:return 0}}get etActive(){return N[this.connectedVehicle]?N[this.connectedVehicle].etActive:!1}set etActive(e){N[this.connectedVehicle]&&(N[this.connectedVehicle].etActive=e)}get etMaxPrice(){return N[this.connectedVehicle].etMaxPrice??0}set etMaxPrice(e){console.log("Setting et max price needs to be implemented"),q("cpEtMaxPrice",Math.round(e*10)/1e6,this.id)}toPowerItem(){return{name:this.name,power:this.power,energy:this.dailyYield,energyPv:this.energyPv,energyBat:this.energyBat,pvPercentage:this.pvPercentage,color:this.color,icon:this.icon}}}class Ma{constructor(e){l(this,"id");l(this,"name","");l(this,"_chargeTemplateId",0);l(this,"_evTemplateId",0);l(this,"tags",[]);l(this,"config",{});l(this,"soc",0);l(this,"range",0);l(this,"_etActive",!1);l(this,"_etMaxPrice",20);this.id=e}get chargeTemplateId(){return this._chargeTemplateId}set chargeTemplateId(e){this._chargeTemplateId=e,q("vhChargeTemplateId",e,this.id)}updateChargeTemplateId(e){this._chargeTemplateId=e}get evTemplateId(){return this._evTemplateId}set evTemplateId(e){this._evTemplateId=e,q("vhEvTemplateId",e,this.id)}updateEvTemplateId(e){this._evTemplateId=e}get etActive(){return ie[this.chargeTemplateId]?ie[this.chargeTemplateId].et.active:!1}set etActive(e){ie[this.chargeTemplateId]&&q("priceCharging",e,this.chargeTemplateId)}get etMaxPrice(){if(ie[this.chargeTemplateId]&&ie[this.chargeTemplateId].et.active)return ie[this.chargeTemplateId].et.max_price*1e5}get chargepoint(){for(const e of Object.values(w))if(e.connectedVehicle==this.id)return e}}var me=(t=>(t.instant_charging="instant_charging",t.pv_charging="pv_charging",t.scheduled_charging="scheduled_charging",t.standby="standby",t.stop="stop",t))(me||{});const w=F({}),N=F({}),ie=F({}),Ge=F({}),We=F({}),Pa=F({});function Ca(t){t in w||(w[t]=new xa(t),w[t].color="var(--color-cp"+(Object.values(w).length-1)+")")}function Ia(){Object.keys(w).forEach(t=>{delete w[parseInt(t)]})}const $a={cpLock:"openWB/set/chargepoint/%/set/manual_lock",chargeMode:"openWB/set/vehicle/template/charge_template/%/chargemode/selected",cpPriority:"openWB/set/vehicle/template/charge_template/%/prio",cpTimedCharging:"openWB/set/vehicle/template/charge_template/%/time_charging/active",cpTimedPlanActive:"openWB/set/vehicle/template/charge_template/%/time_charging/plans/@/active",cpScheduledPlanActive:"openWB/set/vehicle/template/charge_template/%/chargemode/scheduled_charging/plans/@/active",pvBatteryPriority:"openWB/set/general/chargemode_config/pv_charging/bat_mode",cpVehicle:"openWB/set/chargepoint/%/config/ev",cpInstantChargeLimitMode:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/selected",cpInstantTargetCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/current",cpInstantTargetSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/soc",cpInstantMaxEnergy:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/amount",cpPvFeedInLimit:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/feed_in_limit",cpPvMinCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_current",cpPvMaxSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/max_soc",cpPvMinSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc",cpPvMinSocCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc_current",cpEtMaxPrice:"openWB/set/vehicle/template/charge_template/%/et/max_price",vhChargeTemplateId:"openWB/set/vehicle/%/charge_template",vhEvTemplateId:"openWB/set/vehicle/%/ev_template",shSetManual:"openWB/set/LegacySmartHome/config/set/Devices/%/mode",shSwitchOn:"openWB/set/LegacySmartHome/config/set/Devices/%/device_manual_control",socUpdate:"openWB/set/vehicle/%/get/force_soc_update",setSoc:"openWB/set/vehicle/%/soc_module/calculated_soc_state/manual_soc",priceCharging:"openWB/set/vehicle/template/charge_template/%/et/active"};function q(t,e,a=0,r=void 0){if(isNaN(a)){console.warn("Invalid index");return}let n=$a[t];if(!n){console.warn("No topic for update type "+t);return}switch(t){case"chargeMode":case"cpPriority":case"cpScheduledCharging":case"cpInstantTargetCurrent":case"cpInstantChargeLimitMode":case"cpInstantTargetSoc":case"cpInstantMaxEnergy":case"cpPvFeedInLimit":case"cpPvMinCurrent":case"cpPvMaxSoc":case"cpPvMinSoc":case"cpEtMaxPrice":case"cpPvMinSocCurrent":n=n.replace("%",w[a].chargeTemplate.toString());break;default:n=n.replace("%",String(a)),r!=null&&(n=n.replace("@",String(r)))}switch(typeof e){case"number":mt(n,JSON.stringify(+e));break;default:mt(n,JSON.stringify(e))}}function bt(t){mt("openWB/set/command/"+yt()+"/todo",JSON.stringify(t))}class Oa{constructor(){l(this,"batterySoc",0);l(this,"isBatteryConfigured",!0);l(this,"chargeMode","0");l(this,"_pvBatteryPriority","ev_mode");l(this,"displayLiveGraph",!0);l(this,"isEtEnabled",!0);l(this,"etMaxPrice",0);l(this,"etCurrentPrice",0);l(this,"cpDailyExported",0);l(this,"evuId",0);l(this,"etProvider","");l(this,"ipAddress","");l(this,"systemTime",0);l(this,"version","");l(this,"versionDetails","");l(this,"devBranch","")}get pvBatteryPriority(){return this._pvBatteryPriority}set pvBatteryPriority(e){this._pvBatteryPriority=e,q("pvBatteryPriority",e)}updatePvBatteryPriority(e){this._pvBatteryPriority=e}}const Ba=[["EV","ev_mode"],["Speicher","bat_mode"],["MinSoc","min_soc_bat_mode"]],oe=F({evuIn:{name:"Netz",color:"var(--color-evu)",icon:""},pv:{name:"PV",color:"var(--color-pv",icon:""},batOut:{name:"Bat >",color:"var(--color-battery)",icon:""},evuOut:{name:"Export",color:"var(--color-export)",icon:""},charging:{name:"Laden",color:"var(--color-charging)",icon:""},devices:{name:"Geräte",color:"var(--color-devices)",icon:""},batIn:{name:"> Bat",color:"var(--color-battery)",icon:""},house:{name:"Haus",color:"var(--color-house)",icon:""},cp1:{name:"Ladepunkt",color:"var(--color-cp1)",icon:"Ladepunkt"},cp2:{name:"Ladepunkt",color:"var(--color-cp2)",icon:"Ladepunkt"},cp3:{name:"Ladepunkt",color:"var(--color-cp3)",icon:"Ladepunkt"},cp4:{name:"Ladepunkt",color:"var(--color-cp4)",icon:"Ladepunkt"},cp5:{name:"Ladepunkt",color:"var(--color-cp5)",icon:"Ladepunkt"},cp6:{name:"Ladepunkt",color:"var(--color-cp6)",icon:"Ladepunkt"},cp7:{name:"Ladepunkt",color:"var(--color-cp7)",icon:"Ladepunkt"},cp8:{name:"Ladepunkt",color:"var(--color-cp8)",icon:"Ladepunkt"},sh1:{name:"Gerät",color:"var(--color-sh1)",icon:"Gerät"},sh2:{name:"Gerät",color:"var(--color-sh2)",icon:"Gerät"},sh3:{name:"Gerät",color:"var(--color-sh3)",icon:"Gerät"},sh4:{name:"Gerät",color:"var(--color-sh4)",icon:"Gerät"},sh5:{name:"Gerät",color:"var(--color-sh5)",icon:"Gerät"},sh6:{name:"Gerät",color:"var(--color-sh6)",icon:"Gerät"},sh7:{name:"Gerät",color:"var(--color-sh7)",icon:"Gerät"},sh8:{name:"Gerät",color:"var(--color-sh8)",icon:"Gerät"},sh9:{name:"Gerät",color:"var(--color-sh9)",icon:"Gerät"}});class Jt{constructor(){l(this,"_items",{});this.addItem("evuIn"),this.addItem("pv"),this.addItem("batOut"),this.addItem("evuOut"),this.addItem("charging"),this.addItem("devices"),this.addItem("batIn"),this.addItem("house")}get items(){return this._items}keys(){return Object.keys(this._items)}values(){return Object.values(this._items)}addItem(e){this._items[e]=Me(e)}setEnergy(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energy=a}setEnergyPv(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyPv=a}setEnergyBat(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyBat=a}setPvPercentage(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].pvPercentage=a}calculateHouseEnergy(){this._items.house.energy=this._items.evuIn.energy+this._items.pv.energy+this._items.batOut.energy-this._items.evuOut.energy-this._items.batIn.energy-this._items.charging.energy-this._items.devices.energy}}let P=new Jt;function _t(){P=new Jt}const W=F({evuIn:Me("evuIn"),pv:Me("pv"),batOut:Me("batOut")}),$=F({evuOut:Me("evuOut"),charging:Me("charging"),devices:Me("devices"),batIn:Me("batIn"),house:Me("house")}),z=F(new Oa);ve("");const et=ve(!1);function Me(t){return{name:oe[t]?oe[t].name:"item",power:0,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:oe[t]?oe[t].color:"var(--color-charging)",icon:oe[t]?oe[t].icon:""}}const ae=F({active:!1,locked:!0,usePin:!1,code:"",timeout:60,localCpOnly:!1});function tt(){ae.usePin&&ae.locked?new ft("#numberpad").toggle():(ae.locked=!1,setTimeout(()=>{ae.locked=!0},ae.timeout*1e3))}function Ta(t){return t==ae.code}function Aa(){$.house.power=$.house.power-$.devices.power}const Pt=ve(new Date),Va={class:"scaled"},La=A({__name:"DisplayButton",props:{icon:{},bgcolor:{},color:{}},emits:["click"],setup(t,{emit:e}){const a=t,r=e;function n(){r("click",!0)}return(s,d)=>(m(),_("div",{style:re({"background-color":a.bgcolor?a.bgcolor:"var(--color-bg)",color:a.color?a.color:"var(--color-title)"}),class:"displaybutton rounded-pill",type:"button",onClick:n},[a.icon?(m(),_("span",{key:0,class:te(["fas me-2 scaled",a.icon])},null,2)):M("",!0),u("span",Va,[ge(s.$slots,"default",{},void 0)])],4))}}),U=(t,e)=>{const a=t.__vccOpts||t;for(const[r,n]of e)a[r]=n;return a},be=U(La,[["__scopeId","data-v-0f8aebee"]]);class Da{constructor(e){l(this,"id");l(this,"name","Gerät");l(this,"power",0);l(this,"status","off");l(this,"energy",0);l(this,"runningTime",0);l(this,"configured",!1);l(this,"_showInGraph",!0);l(this,"color","white");l(this,"canSwitch",!1);l(this,"countAsHouse",!1);l(this,"energyPv",0);l(this,"energyBat",0);l(this,"pvPercentage",0);l(this,"tempConfigured",0);l(this,"temp",[300,300,300]);l(this,"on",!1);l(this,"isAutomatic",!0);l(this,"icon","");this.id=e}get showInGraph(){return this._showInGraph}set showInGraph(e){this._showInGraph=e,Y()}setShowInGraph(e){this._showInGraph=e}}const E=F({});function Rt(t){t in E?console.info("Duplicate sh device message: "+t):(E[t]=new Da(t),E[t].color="var(--color-sh"+Object.values(E).length+")")}class Ea{constructor(){l(this,"graphToShow","powermeter");l(this,"cpToShow",0);l(this,"displayLocked",!0);l(this,"_showRelativeArcs",!1);l(this,"showTodayGraph",!0);l(this,"_graphPreference","live");l(this,"_usageStackOrder",0);l(this,"_displayMode","dark");l(this,"_showGrid",!1);l(this,"_smartHomeColors","normal");l(this,"_decimalPlaces",1);l(this,"_showQuickAccess",!0);l(this,"_simpleCpList",!1);l(this,"_shortCpList","no");l(this,"_showAnimations",!0);l(this,"_preferWideBoxes",!1);l(this,"_maxPower",4e3);l(this,"_fluidDisplay",!1);l(this,"_showClock","no");l(this,"_showButtonBar",!0);l(this,"_showCounters",!1);l(this,"_showVehicles",!1);l(this,"_showPrices",!1);l(this,"_debug",!1);l(this,"isEtEnabled",!1);l(this,"etPrice",20.5);l(this,"showRightButton",!0);l(this,"showLeftButton",!0);l(this,"animationDuration",300);l(this,"animationDelay",100);l(this,"zoomGraph",!1)}get showRelativeArcs(){return this._showRelativeArcs}set showRelativeArcs(e){this._showRelativeArcs=e,Y()}setShowRelativeArcs(e){this._showRelativeArcs=e}get graphPreference(){return this._graphPreference}set graphPreference(e){this._graphPreference=e,Y()}setGraphPreference(e){this._graphPreference=e}get usageStackOrder(){return this._usageStackOrder}set usageStackOrder(e){this._usageStackOrder=e,Y()}setUsageStackOrder(e){this._usageStackOrder=e}get displayMode(){return this._displayMode}set displayMode(e){this._displayMode=e,ja(e)}setDisplayMode(e){this._displayMode=e}get showGrid(){return this._showGrid}set showGrid(e){this._showGrid=e,Y()}setShowGrid(e){this._showGrid=e}get decimalPlaces(){return this._decimalPlaces}set decimalPlaces(e){this._decimalPlaces=e,Y()}setDecimalPlaces(e){this._decimalPlaces=e}get smartHomeColors(){return this._smartHomeColors}set smartHomeColors(e){this._smartHomeColors=e,Ct(e),Y()}setSmartHomeColors(e){this._smartHomeColors=e,Ct(e)}get showQuickAccess(){return this._showQuickAccess}set showQuickAccess(e){this._showQuickAccess=e,Y()}setShowQuickAccess(e){this._showQuickAccess=e}get simpleCpList(){return this._simpleCpList}set simpleCpList(e){this._simpleCpList=e,Y()}setSimpleCpList(e){this._simpleCpList=e}get shortCpList(){return this._shortCpList}set shortCpList(e){this._shortCpList=e,Y()}setShortCpList(e){this._shortCpList=e}get showAnimations(){return this._showAnimations}set showAnimations(e){this._showAnimations=e,Y()}setShowAnimations(e){this._showAnimations=e}get preferWideBoxes(){return this._preferWideBoxes}set preferWideBoxes(e){this._preferWideBoxes=e,Y()}setPreferWideBoxes(e){this._preferWideBoxes=e}get maxPower(){return this._maxPower}set maxPower(e){this._maxPower=e,Y()}setMaxPower(e){this._maxPower=e}get fluidDisplay(){return this._fluidDisplay}set fluidDisplay(e){this._fluidDisplay=e,Y()}setFluidDisplay(e){this._fluidDisplay=e}get showClock(){return this._showClock}set showClock(e){this._showClock=e,Y()}setShowClock(e){this._showClock=e}get debug(){return this._debug}set debug(e){this._debug=e,Y()}setDebug(e){this._debug=e}get showButtonBar(){return this._showButtonBar}set showButtonBar(e){this._showButtonBar=e,Y()}setShowButtonBar(e){this._showButtonBar=e}get showCounters(){return this._showCounters}set showCounters(e){this._showCounters=e,Y()}setShowCounters(e){this._showCounters=e}get showVehicles(){return this._showVehicles}set showVehicles(e){this._showVehicles=e,Y()}setShowVehicles(e){this._showVehicles=e}get showPrices(){return this._showPrices}set showPrices(e){this._showPrices=e,Y()}setShowPrices(e){this._showPrices=e}}const f=F(new Ea),Ga=992,vt=F({x:document.documentElement.clientWidth,y:document.documentElement.clientHeight});function Wa(){vt.x=document.documentElement.clientWidth,vt.y=document.documentElement.clientHeight}g(()=>vt.x>=Ga);const Le={stop:{mode:me.stop,name:"Stop",color:"var(--color-fg)",icon:"fa-power-off"},standby:{mode:me.standby,name:"Standby",color:"var(--color-axis",icon:"fa-pause"},pv_charging:{mode:me.pv_charging,name:"PV",color:"var(--color-pv",icon:"fa-solar-panel"},scheduled_charging:{mode:me.scheduled_charging,name:"Zielladen",color:"var(--color-battery)",icon:"fa-bullseye"},instant_charging:{mode:me.instant_charging,name:"Sofort",color:"var(--color-charging)",icon:"fa-bolt"}};function Y(){Na()}function ja(t){const e=fe("html");e.classed("theme-dark",t=="dark"),e.classed("theme-light",t=="light"),e.classed("theme-blue",t=="blue"),Y()}function Ct(t){const e=fe("html");e.classed("shcolors-normal",t=="normal"),e.classed("shcolors-standard",t=="standard"),e.classed("shcolors-advanced",t=="advanced")}function Na(){const t={};t.hideSH=Object.values(E).filter(e=>!e.showInGraph).map(e=>e.id),t.showLG=f.graphPreference=="live",t.displayM=f.displayMode,t.stackO=f.usageStackOrder,t.showGr=f.showGrid,t.decimalP=f.decimalPlaces,t.smartHomeC=f.smartHomeColors,t.relPM=f.showRelativeArcs,t.maxPow=f.maxPower,t.showQA=f.showQuickAccess,t.simpleCP=f.simpleCpList,t.shortCP=f.shortCpList,t.animation=f.showAnimations,t.wideB=f.preferWideBoxes,t.fluidD=f.fluidDisplay,t.clock=f.showClock,t.showButtonBar=f.showButtonBar,t.showCounters=f.showCounters,t.showVehicles=f.showVehicles,t.showPrices=f.showPrices,t.debug=f.debug,document.cookie="openWBColorTheme="+JSON.stringify(t)+";max-age=16000000;samesite=strict"}const Ua={class:"navigation"},za={class:"graphbuttons"},Fa={class:"cpbuttons"},Ja={class:"timedisplay ms-4"},Ra=A({__name:"NavigationBar",setup(t){let e;function a(){let c=Object.values(w).length;f.cpToShow=(f.cpToShow+1)%c}function r(){let c=Object.values(w).length;f.cpToShow=((f.cpToShow-1)%c+c)%c}function n(){f.graphToShow="powermeter"}function s(){f.graphToShow="powergraph"}function d(){f.graphToShow="energymeter"}return nt(()=>{e=setInterval(()=>{Pt.value=new Date},1e3)}),ia(()=>{clearInterval(e)}),(c,o)=>(m(),_("div",Ua,[u("span",za,[o[3]||(o[3]=u("span",{class:"brand me-4"},"openWB",-1)),b(be,{icon:"fa-chart-pie",onClick:n},{default:x(()=>o[0]||(o[0]=[j("Leistung")])),_:1}),b(be,{icon:"fa-chart-line",onClick:s},{default:x(()=>o[1]||(o[1]=[j("Verlauf")])),_:1}),b(be,{icon:"fa-chart-column",onClick:d},{default:x(()=>o[2]||(o[2]=[j("Energie")])),_:1})]),b(be,{icon:"fa-rectangle-list","data-bs-toggle":"modal","data-bs-target":"#statuspage"},{default:x(()=>o[4]||(o[4]=[j("Status")])),_:1}),u("span",Fa,[Object.values(i(w)).length>1?(m(),T(be,{key:0,color:"var(--color-cp0)",onClick:r},{default:x(()=>o[5]||(o[5]=[u("span",{class:"fas fa-arrow-left px-2"},null,-1),u("span",{class:"fas fa-charging-station pe-2"},null,-1)])),_:1})):M("",!0),b(be,{bgcolor:i(ae).locked?"var(--color-evu)":"var(--color-pv)",onClick:i(tt)},{default:x(()=>o[6]||(o[6]=[u("span",{class:"fas fa-lock px-4"},null,-1)])),_:1},8,["bgcolor","onClick"]),Object.values(i(w)).length>1?(m(),T(be,{key:1,color:"var(--color-cp0)",onClick:a},{default:x(()=>o[7]||(o[7]=[u("span",{class:"fas fa-charging-station px-2"},null,-1),u("span",{class:"fas fa-arrow-right pe-2"},null,-1)])),_:1})):M("",!0),u("span",Ja,C(i(va)(i(Pt))),1)])]))}}),Ha=U(Ra,[["__scopeId","data-v-97154896"]]),Ya=["origin"],qa=A({__name:"PMSourceArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=g(()=>{let r={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:""},n=W;n["zz-empty"]=r;const s=Object.values(W).length-1,d=Vt().value(p=>p.power).startAngle(-Math.PI/2+e.circleGapSize).endAngle(Math.PI/2-e.circleGapSize).sort(null),c=Lt().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius).padAngle(0),o=fe("g#pmSourceArc");return o.selectAll("*").remove(),o.selectAll("sources").data(d(Object.values(n))).enter().append("path").attr("d",c).attr("fill",p=>p.data.color).attr("stroke",(p,v)=>v==s?p.data.power>0?"var(--color-scale)":"null":p.data.color),"pmSourceArc.vue"});return la(()=>{let r=W.pv.power+W.evuIn.power+W.batOut.power;r>f.maxPower&&(f.maxPower=r)}),(r,n)=>(m(),_("g",{id:"pmSourceArc",origin:a.value},null,8,Ya))}}),Qa=["origin"],Za=A({__name:"PMUsageArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=g(()=>{let r={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:""};const n=[$.evuOut,$.charging].concat(Object.values(E).filter(p=>p.configured&&!p.countAsHouse).sort((p,v)=>v.power-p.power)).concat([$.batIn,$.house]).concat(r),s=n.length-1,d=Vt().value(p=>p.power).startAngle(Math.PI*1.5-e.circleGapSize).endAngle(Math.PI/2+e.circleGapSize).sort(null),c=Lt().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius),o=fe("g#pmUsageArc");return o.selectAll("*").remove(),o.selectAll("consumers").data(d(n)).enter().append("path").attr("d",c).attr("fill",p=>p.data.color).attr("stroke",(p,v)=>v==s?p.data.power>0?"var(--color-scale)":"null":p.data.color),"pmUsageArc.vue"});return(r,n)=>(m(),_("g",{id:"pmUsageArc",origin:a.value},null,8,Qa))}}),Ht=A({__name:"FormatWatt",props:{watt:{}},setup(t){const e=t,a=g(()=>qe(e.watt,f.decimalPlaces));return(r,n)=>C(a.value)}}),Xa={key:0,id:"pmLabel"},Ka=["x","y","fill","text-anchor"],er=22,ye=A({__name:"PMLabel",props:{x:{},y:{},data:{},props:{},anchor:{},labeltext:{},labelicon:{},labelcolor:{}},setup(t){const e=t,a=g(()=>e.labeltext?e.labeltext:e.props?e.props.icon+" ":e.labelicon?e.labelicon+" ":""),r=g(()=>e.labelcolor?e.labelcolor:e.props?e.props.color:""),n=g(()=>!e.data||e.data.power>0),s=g(()=>e.labeltext?"":"fas");return(d,c)=>n.value?(m(),_("g",Xa,[u("text",{x:d.x,y:d.y,fill:r.value,"text-anchor":d.anchor,"font-size":er,class:"pmLabel"},[u("tspan",{class:te(s.value)},C(a.value),3),u("tspan",null,[d.data!==void 0?(m(),T(Ht,{key:0,watt:d.data.power},null,8,["watt"])):M("",!0)])],8,Ka)])):M("",!0)}}),tr={},ar={class:"p-2 m-0"},rr={class:"wb-widget m-0 pb-4 shadow"},nr={class:"header mt-4 mx-2"},or={class:"titles"},sr={class:"title"},ir={class:"subtitle"},lr={class:"buttons"},cr={class:"wb-subwidget mx-2 subgrid"},ur={key:0,class:"subgrid"},dr={class:"wb-subwidget mx-2 subgrid"};function hr(t,e){return m(),_("div",ar,[u("div",rr,[u("div",nr,[u("div",or,[u("div",sr,[ge(t.$slots,"title",{},()=>[e[0]||(e[0]=u("div",{class:"p-0"},"(title goes here)",-1))])]),u("div",ir,[ge(t.$slots,"subtitle",{},void 0)])]),u("div",lr,[ge(t.$slots,"buttons",{},void 0)])]),u("div",cr,[ge(t.$slots,"default",{},void 0)]),t.$slots.footer!=null?(m(),_("div",ur,[e[1]||(e[1]=u("hr",{class:"grid-col-12"},null,-1)),u("div",dr,[ge(t.$slots,"footer",{},void 0)])])):M("",!0)])])}const st=U(tr,[["render",hr],["__scopeId","data-v-b83b615b"]]);class pr{constructor(){l(this,"active",!1);l(this,"etPriceList",new Map);l(this,"etProvider","");l(this,"etMaxPrice",0)}get etCurrentPriceString(){const[e]=X.etPriceList.values();return(Math.round(e*10)/10).toFixed(1)+" ct"}}const X=F(new pr),gr={class:"grid-col-12"},mr={id:"powermeter",class:"powermeter p-0 m-0 align-self-stretch"},vr=["viewBox"],fr=["transform"],yr={transform:"scale(0.9294,1)"},br=["x"],Se=500,ke=20,It=1,_r=A({__name:"PowerMeter",setup(t){const e=Se,a=Math.PI/40,r=[[4],[4,6],[1,4,6],[0,2,4,6],[0,2,3,5,6]],n=[{x:-85,y:e/2*1/5},{x:0,y:e/2*1/5},{x:85,y:e/2*1/5},{x:-85,y:e/2*2/5},{x:0,y:e/2*2/5},{x:85,y:e/2*2/5},{x:0,y:e/2*3/5}],s=g(()=>Se/2-ke),d=g(()=>{let D="",G=Object.values(W).filter(H=>H.power>0);return G.length==1&&G[0].name=="PV"?D="Aktueller Verbrauch: ":D="Bezug/Verbrauch: ",D+qe($.house.power+$.charging.power+$.devices.power+$.batIn.power,f.decimalPlaces)}),c=g(()=>{let D=W.pv.power+W.evuIn.power+W.batOut.power;return f.maxPower>D?qe(f.maxPower,f.decimalPlaces):qe(D,f.decimalPlaces)}),o=g(()=>Object.values(w)),p=g(()=>{let D=0;return f.showRelativeArcs&&(D=f.maxPower-(W.pv.power+W.evuIn.power+W.batOut.power)),D<0?0:D}),v=g(()=>[$.evuOut,$.charging,$.devices,$.batIn,$.house].filter(D=>D.power>0)),I=g(()=>r[v.value.length-1]);function k(D){return n[I.value[D]]}function R(D){return Math.round(o.value[D].soc)}function ee(D){return D.length>12?D.slice(0,11)+".":D}const se=g(()=>{const[D]=X.etPriceList.values();return Math.round(D*10)/10});return(D,G)=>(m(),T(st,null,{title:x(()=>G[0]||(G[0]=[j(" Aktuelle Leistung ")])),default:x(()=>[u("div",gr,[u("figure",mr,[(m(),_("svg",{viewBox:"0 0 "+Se+" "+i(e)},[u("g",{transform:"translate("+Se/2+","+i(e)/2+")"},[u("g",yr,[b(qa,{radius:s.value,"corner-radius":It,"circle-gap-size":a,"empty-power":p.value},null,8,["radius","empty-power"]),b(Za,{"sh-device":i(E),radius:s.value,"corner-radius":It,"circle-gap-size":a,"empty-power":p.value},null,8,["sh-device","radius","empty-power"]),b(ye,{x:0,y:-i(e)/10*2,data:i(W).pv,props:i(oe).pv,anchor:"middle",config:i(f)},null,8,["y","data","props","config"]),b(ye,{x:0,y:-i(e)/10*3,data:i(W).evuIn,props:i(oe).evuIn,anchor:"middle",config:i(f)},null,8,["y","data","props","config"]),b(ye,{x:0,y:-i(e)/10,data:i(W).batOut,props:i(oe).batOut,anchor:"middle",config:i(f)},null,8,["y","data","props","config"]),i(X).active?(m(),T(ye,{key:0,x:0,y:-i(e)/10,data:i(W).batOut,props:i(oe).batOut,anchor:"middle",config:i(f)},null,8,["y","data","props","config"])):M("",!0),(m(!0),_(we,null,Be(v.value,(H,O)=>(m(),T(ye,{key:O,x:k(O).x,y:k(O).y,data:H,labelicon:H.icon,labelcolor:H.color,anchor:"middle",config:i(f)},null,8,["x","y","data","labelicon","labelcolor","config"]))),128)),o.value.length>0&&i(N)[o.value[0].connectedVehicle]?(m(),T(ye,{key:1,x:-Se/2-ke/4+10,y:-i(e)/2+ke+5,labeltext:ee(i(N)[o.value[0].connectedVehicle].name)+": "+R(0)+"%",labelcolor:o.value[0].color,anchor:"start",config:i(f)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),o.value.length>1&&i(N)[o.value[1].connectedVehicle]?(m(),T(ye,{key:2,x:Se/2+ke/4-10,y:-i(e)/2+ke+5,labeltext:ee(i(N)[o.value[1].connectedVehicle].name)+": "+R(1)+"%",labelcolor:o.value[1].color,anchor:"end",config:i(f)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),i(z).batterySoc>0?(m(),T(ye,{key:3,x:-Se/2-ke/4+10,y:i(e)/2-ke+15,labeltext:"Speicher: "+i(z).batterySoc+"%",labelcolor:i($).batIn.color,anchor:"start",config:i(f)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),i(X).active?(m(),T(ye,{key:4,x:Se/2+ke/4-10,y:i(e)/2-ke+15,value:se.value,labeltext:i(X).etCurrentPriceString,labelcolor:"var(--color-charging)",anchor:"end",config:i(f)},null,8,["x","y","value","labeltext","config"])):M("",!0),b(ye,{x:0,y:0,labeltext:d.value,labelcolor:"var(--color-fg)",anchor:"middle",config:i(f)},null,8,["labeltext","config"]),i(f).showRelativeArcs?(m(),_("text",{key:5,x:Se/2-44,y:"2","text-anchor":"middle",fill:"var(--color-axis)","font-size":"12"}," Peak: "+C(c.value),9,br)):M("",!0)])],8,fr)],8,vr))])])]),_:1}))}}),xe=500,Ce=500,L={top:10,right:20,bottom:10,left:25},wt=["charging","house","batIn","devices"];class wr{constructor(){l(this,"data",[]);l(this,"_graphMode","")}get graphMode(){return this._graphMode}set graphMode(e){this._graphMode=e}}const h=F(new wr);let at=!0,ze=!0;function $t(){at=!1}function Ot(){ze=!1}function Sr(t){ze=t}function Fe(t){h.data=t}const Z=F({refreshTopicPrefix:"openWB/graph/alllivevaluesJson",updateTopic:"openWB/graph/lastlivevaluesJson",configTopic:"openWB/graph/config/#",initialized:!1,initCounter:0,graphRefreshCounter:0,rawDataPacks:[],duration:0,activate(){h.data=[],this.unsubscribeUpdates(),this.subscribeRefresh(),Te(this.configTopic),this.initialized=!1,this.initCounter=0,this.graphRefreshCounter=0,this.rawDataPacks=[],Cr(),et.value=!0},deactivate(){this.unsubscribeRefresh(),this.unsubscribeUpdates(),Ve(this.configTopic)},subscribeRefresh(){for(let t=1;t<17;t++)Te(this.refreshTopicPrefix+t)},unsubscribeRefresh(){for(let t=1;t<17;t++)Ve(this.refreshTopicPrefix+t)},subscribeUpdates(){Te(this.updateTopic)},unsubscribeUpdates(){Ve(this.updateTopic)}}),J=F({topic:"openWB/log/daily/#",date:new Date,activate(){if(h.graphMode=="day"||h.graphMode=="today"){h.graphMode=="today"&&(this.date=new Date);const t=this.date.getFullYear().toString()+(this.date.getMonth()+1).toString().padStart(2,"0")+this.date.getDate().toString().padStart(2,"0");Te(this.topic),bt({command:"getDailyLog",data:{day:t}})}},deactivate(){Ve(this.topic)},back(){this.date=new Date(this.date.setTime(this.date.getTime()-864e5))},forward(){this.date=new Date(this.date.setTime(this.date.getTime()+864e5))},setDate(t){this.date=t},getDate(){return this.date}}),Pe=F({topic:"openWB/log/monthly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(){const t=this.year.toString()+this.month.toString().padStart(2,"0");h.data=[],Te(this.topic),bt({command:"getMonthlyLog",data:{month:t}})},deactivate(){Ve(this.topic)},back(){this.month-=1,this.month<1&&(this.month=12,this.year-=1),this.activate()},forward(){const t=new Date;t.getFullYear()==this.year?this.month-1<t.getMonth()&&(this.month=this.month+1):(this.month=this.month+1,this.month>12&&(this.month=1,this.year+=1)),this.activate()},getDate(){return new Date(this.year,this.month)}}),Ie=F({topic:"openWB/log/yearly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(){const t=this.year.toString();h.data=[],Te(this.topic),bt({command:"getYearlyLog",data:{year:t}})},deactivate(){Ve(this.topic)},back(){this.year-=1,this.activate()},forward(){this.year<new Date().getFullYear()&&(this.year=this.year+1,this.activate())},getDate(){return new Date(this.year,this.month)}});function K(t=!1){switch(h.graphMode==""?kr(f.graphPreference):h.graphMode=="live"?f.graphPreference="live":f.graphPreference="today",t||(at=!0,ze=!0),h.graphMode){case"live":J.deactivate(),Pe.deactivate(),Ie.deactivate(),Z.activate();break;case"today":Z.deactivate(),Pe.deactivate(),Ie.deactivate(),J.activate();break;case"day":Z.deactivate(),Pe.deactivate(),Ie.deactivate(),J.activate();break;case"month":Z.deactivate(),J.deactivate(),Ie.deactivate(),Pe.activate();break;case"year":Z.deactivate(),J.deactivate(),Pe.deactivate(),Ie.activate();break}}function kr(t){h.graphMode=t}function xr(t,e){e[t]>0&&(P.items[t].energyPv+=1e3/12*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),P.items[t].energyBat+=1e3/12*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}function Mr(t,e){e[t]>0&&(P.items[t].energyPv+=1e3*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),P.items[t].energyBat+=1e3*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}const Pr=["evuIn","pv","batIn","evuOut"],je=ve(!1);function St(t,e){Object.entries(t).length>0?(je.value=!1,Object.entries(t.counter).forEach(([a,r])=>{(e.length==0||e.includes(a))&&(P.items.evuIn.energy+=r.energy_imported,P.items.evuOut.energy+=r.energy_exported)}),P.items.pv.energy=t.pv.all.energy_exported,t.bat.all&&(P.items.batIn.energy=t.bat.all.energy_imported,P.items.batOut.energy=t.bat.all.energy_exported),Object.entries(t.cp).forEach(([a,r])=>{a=="all"?P.setEnergy("charging",r.energy_imported):P.setEnergy(a,r.energy_imported)}),P.setEnergy("devices",0),Object.entries(t.sh).forEach(([a,r])=>{P.setEnergy(a,r.energy_imported);const n=a.substring(2);E[+n].countAsHouse||(P.items.devices.energy+=r.energy_imported)}),t.hc&&t.hc.all?P.setEnergy("house",t.hc.all.energy_imported):P.calculateHouseEnergy(),P.keys().map(a=>{Pr.includes(a)||(P.setPvPercentage(a,Math.round((P.items[a].energyPv+P.items[a].energyBat)/P.items[a].energy*100)),wt.includes(a)&&($[a].energy=P.items[a].energy,$[a].energyPv=P.items[a].energyPv,$[a].energyBat=P.items[a].energyBat,$[a].pvPercentage=P.items[a].pvPercentage))}),h.graphMode=="today"&&(Object.values(w).map(a=>{const r=P.items["cp"+a.id];r&&(a.energyPv=r.energyPv,a.energyBat=r.energyBat,a.pvPercentage=r.pvPercentage)}),Object.values(E).map(a=>{const r=P.items["sh"+a.id];r&&(a.energy=r.energy,a.energyPv=r.energyPv,a.energyBat=r.energyBat,a.pvPercentage=r.pvPercentage)}))):je.value=!0,et.value=!0}function Cr(){P.keys().map(t=>{wt.includes(t)&&($[t].energy=P.items[t].energy,$[t].energyPv=0,$[t].energyBat=0,$[t].pvPercentage=0)}),Object.values(w).map(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0}),Object.values(E).map(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0})}const _e=g(()=>{const t=Ae(h.data,e=>e.date);return t[1]?pt().domain(Array.from({length:t[1]},(e,a)=>a+1)).paddingInner(.4).range([0,xe-L.left-2]):pt().range([0,0])});function kt(){switch(h.graphMode){case"live":h.graphMode="today",f.showRightButton=!0,K();break;case"today":h.graphMode="day",J.date=new Date,J.back(),K();break;case"day":J.back(),K();break;case"month":Pe.back();break;case"year":Ie.back();break}}function Yt(){const t=new Date;switch(h.graphMode){case"live":break;case"today":h.graphMode="live",f.showRightButton=!1,K();break;case"day":J.forward(),J.date.getDate()==t.getDate()&&J.date.getMonth()==t.getMonth()&&J.date.getFullYear()==t.getFullYear()&&(h.graphMode="today"),K();break;case"month":Pe.forward();break;case"year":Ie.forward();break}}function qt(){switch(h.graphMode){case"live":kt();break;case"day":case"today":h.graphMode="month",K();break;case"month":h.graphMode="year",K();break}}function Qt(){switch(h.graphMode){case"year":h.graphMode="month",K();break;case"month":h.graphMode="today",K();break;case"today":case"day":h.graphMode="live",K();break}}function Ir(t){if(h.graphMode=="day"||h.graphMode=="today"){J.setDate(t);const e=new Date;J.date.getDate()==e.getDate()&&J.date.getMonth()==e.getMonth()&&J.date.getFullYear()==e.getFullYear()?h.graphMode="today":h.graphMode="day",K()}}const $r=["origin","transform"],Or=A({__name:"PGSourceGraph",props:{width:{},height:{},margin:{}},setup(t){const e=t,a={house:"var(--color-house)",batIn:"var(--color-battery)",inverter:"var(--color-pv)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)"};var r,n;const s=f.showAnimations?f.animationDuration:0,d=f.showAnimations?f.animationDelay:0,c=g(()=>{const S=fe("g#pgSourceGraph");h.graphMode=="month"||h.graphMode=="year"?O(S):H(S),S.selectAll(".axis").remove();const y=S.append("g").attr("class","axis");return y.call(se.value),y.selectAll(".tick").attr("font-size",12),y.selectAll(".tick line").attr("stroke",G.value).attr("stroke-width",D.value),y.select(".domain").attr("stroke","var(--color-bg)"),"pgSourceGraph.vue"}),o=g(()=>h.graphMode=="month"||h.graphMode=="year"?["evuIn","batOut","selfUsage","evuOut"]:["selfUsage","evuOut","batOut","evuIn"]),p=g(()=>Oe().domain([0,h.data.length-1]).range([0,e.width])),v=g(()=>Dt().keys(o.value)),I=g(()=>v.value(h.data)),k=g(()=>Oe().range([e.height-10,0]).domain(h.graphMode=="year"?[0,Math.ceil(R.value[1]*10)/10]:[0,Math.ceil(R.value[1])])),R=g(()=>{let S=Ae(h.data,y=>Math.max(y.pv+y.evuIn+y.batOut,y.selfUsage+y.evuOut));return S[0]!=null&&S[1]!=null?(h.graphMode=="year"&&(S[0]=S[0]/1e3,S[1]=S[1]/1e3),S):[0,0]}),ee=g(()=>h.graphMode=="month"||h.graphMode=="year"?-e.width-e.margin.right-22:-e.width),se=g(()=>ot(k.value).tickSizeInner(ee.value).ticks(4).tickFormat(S=>(S==0?"":Math.round(S*10)/10).toLocaleString(void 0))),D=g(()=>f.showGrid?"0.5":"1"),G=g(()=>f.showGrid?"var(--color-grid)":"var(--color-bg)");function H(S){const y=Ze().x((V,ne)=>p.value(ne)).y(k.value(0)),B=Ze().x((V,ne)=>p.value(ne)).y0(V=>k.value(h.graphMode=="year"?V[0]/1e3:V[0])).y1(V=>k.value(h.graphMode=="year"?V[1]/1e3:V[1]));at?(S.selectAll("*").remove(),r=S.selectAll(".sourceareas").data(I.value).enter().append("path").attr("fill",(V,ne)=>a[o.value[ne]]).attr("d",V=>y(V)),r.transition().duration(s).delay(d).ease(De).attr("d",V=>B(V)),$t()):r.data(I.value).transition().duration(0).ease(De).attr("d",V=>B(V))}function O(S){at?(S.selectAll("*").remove(),n=S.selectAll(".sourcebar").data(I.value).enter().append("g").attr("fill",(y,B)=>a[o.value[B]]).selectAll("rect").data(y=>y).enter().append("rect").attr("x",(y,B)=>_e.value(h.data[B].date)??0).attr("y",()=>k.value(0)).attr("height",0).attr("width",_e.value.bandwidth()),n.transition().duration(s).delay(d).ease(De).attr("height",y=>h.graphMode=="year"?k.value(y[0]/1e3)-k.value(y[1]/1e3):k.value(y[0])-k.value(y[1])).attr("y",y=>h.graphMode=="year"?k.value(y[1]/1e3):k.value(y[1])),$t()):(S.selectAll("*").remove(),n=S.selectAll(".sourcebar").data(I.value).enter().append("g").attr("fill",(y,B)=>a[o.value[B]]).selectAll("rect").data(y=>y).enter().append("rect").attr("x",(y,B)=>_e.value(h.data[B].date)??0).attr("y",y=>h.graphMode=="year"?k.value(y[1]/1e3):k.value(y[1])).attr("width",_e.value.bandwidth()).attr("height",y=>h.graphMode=="year"?k.value(y[0]/1e3)-k.value(y[1]/1e3):k.value(y[0])-k.value(y[1])))}return(S,y)=>(m(),_("g",{id:"pgSourceGraph",origin:c.value,transform:"translate("+S.margin.left+","+S.margin.top+")"},null,8,$r))}}),Br=["origin","transform"],Tr=A({__name:"PGUsageGraph",props:{width:{},height:{},margin:{},stackOrder:{}},setup(t){const e=t,a=[["house","charging","devices","batIn"],["charging","devices","house","batIn"],["devices","charging","house","batIn"]],r={house:"var(--color-house)",charging:"var(--color-charging)",batIn:"var(--color-battery)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)",cp0:"var(--color-cp0)",cp1:"var(--color-cp1)",cp2:"var(--color-cp2)",cp3:"var(--color-cp3)",sh1:"var(--color-sh1)",sh2:"var(--color-sh2)",sh3:"var(--color-sh3)",sh4:"var(--color-sh4)",devices:"var(--color-devices)"};var n,s;const d=f.showAnimations?f.animationDuration:0,c=f.showAnimations?f.animationDelay:0,o=g(()=>{const O=fe("g#pgUsageGraph");h.graphMode=="month"||h.graphMode=="year"?H(O):G(O),O.selectAll(".axis").remove();const S=O.append("g").attr("class","axis");return S.call(D.value),S.selectAll(".tick").attr("font-size",12).attr("color","var(--color-axis)"),f.showGrid?S.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):S.selectAll(".tick line").attr("stroke","var(--color-bg)"),S.select(".domain").attr("stroke","var(--color-bg)"),"pgUsageGraph.vue"}),p=g(()=>Dt().keys(R.value)),v=g(()=>p.value(h.data)),I=g(()=>Oe().domain([0,h.data.length-1]).range([0,e.width])),k=g(()=>Oe().range([e.height+10,2*e.height]).domain(h.graphMode=="year"?[0,Math.ceil(ee.value[1]*10)/10]:[0,Math.ceil(ee.value[1])])),R=g(()=>{if(h.graphMode!="today"&&h.graphMode!="day")return a[e.stackOrder];{const O=a[e.stackOrder].slice(),S=O.indexOf("charging");O.splice(S,1);const y=/cp\d+/;let B=[];return h.data.length>0&&(B=Object.keys(h.data[0]).reduce((V,ne)=>(ne.match(y)&&V.push(ne),V),[])),B.map((V,ne)=>{O.splice(S+ne,0,V),r[V]="var(--color-cp"+ne+")"}),O}}),ee=g(()=>{let O=Ae(h.data,S=>S.house+S.charging+S.batIn+S.devices);return O[0]!=null&&O[1]!=null?(h.graphMode=="year"&&(O[0]=O[0]/1e3,O[1]=O[1]/1e3),O):[0,0]}),se=g(()=>h.graphMode=="month"||h.graphMode=="year"?-e.width-e.margin.right-22:-e.width),D=g(()=>ot(k.value).tickSizeInner(se.value).ticks(4).tickFormat(O=>(O==0?"":Math.round(O*10)/10).toLocaleString(void 0)));function G(O){const S=Ze().x((B,V)=>I.value(V)).y(k.value(0)),y=Ze().x((B,V)=>I.value(V)).y0(B=>k.value(B[0])).y1(B=>k.value(B[1]));f.showAnimations?ze?(O.selectAll("*").remove(),n=O.selectAll(".usageareas").data(v.value).enter().append("path").attr("d",B=>S(B)).attr("fill",(B,V)=>r[R.value[V]]),n.transition().duration(300).delay(100).ease(De).attr("d",B=>y(B)),Ot()):(O.selectAll("*").remove(),O.selectAll(".usageareas").data(v.value).enter().append("path").attr("d",B=>y(B)).attr("fill",(B,V)=>r[R.value[V]])):(O.selectAll("*").remove(),O.selectAll(".usageareas").data(v.value).enter().append("path").attr("d",B=>y(B)).attr("fill",(B,V)=>r[R.value[V]]))}function H(O){ze?(O.selectAll("*").remove(),s=O.selectAll(".usagebar").data(v.value).enter().append("g").attr("fill",(S,y)=>r[a[e.stackOrder][y]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,y)=>_e.value(h.data[y].date)??0).attr("y",()=>k.value(0)).attr("height",0).attr("width",_e.value.bandwidth()),s.transition().duration(d).delay(c).ease(De).attr("y",S=>h.graphMode=="year"?k.value(S[0]/1e3):k.value(S[0])).attr("height",S=>h.graphMode=="year"?k.value(S[1]/1e3)-k.value(S[0]/1e3):k.value(S[1])-k.value(S[0])),Ot()):(O.selectAll("*").remove(),s=O.selectAll(".usagebar").data(v.value).enter().append("g").attr("fill",(S,y)=>r[a[e.stackOrder][y]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,y)=>_e.value(h.data[y].date)??0).attr("y",S=>h.graphMode=="year"?k.value(S[0]/1e3):k.value(S[0])).attr("height",S=>h.graphMode=="year"?k.value(S[1]/1e3)-k.value(S[0]/1e3):k.value(S[1])-k.value(S[0])).attr("width",_e.value.bandwidth()))}return(O,S)=>(m(),_("g",{id:"pgUsageGraph",origin:o.value,transform:"translate("+O.margin.left+","+O.margin.top+")"},null,8,Br))}}),Ar=["transform"],Vr=["origin","transform"],Lr=["origin","transform"],Dr={key:0},Er=["width","height"],Gr={key:1},Wr=["y","width","height"],lt=12,jr=A({__name:"PGXAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=g(()=>Ye(c.value).ticks(4).tickSizeInner(d.value).tickFormat(gt("%H:%M"))),r=g(()=>ca(c.value).ticks(4).tickSizeInner(d.value+3).tickFormat(gt(""))),n=g(()=>Ye(_e.value).ticks(4).tickSizeInner(d.value).tickFormat(v=>v.toString())),s=g(()=>Ye(_e.value).ticks(4).tickSizeInner(d.value).tickFormat(()=>"")),d=g(()=>h.graphMode!=="month"&&h.graphMode!=="year"?f.showGrid?-(e.height/2-7):-10:0),c=g(()=>{let v=Ae(h.data,I=>I.date);return v[0]&&v[1]?Ue().domain(v).range([0,e.width]):Ue().range([0,0])}),o=g(()=>{let v=fe("g#PGXAxis");return v.selectAll("*").remove(),h.graphMode=="month"||h.graphMode=="year"?v.call(n.value):v.call(a.value),v.selectAll(".tick > text").attr("fill",(I,k)=>k>0||h.graphMode=="month"||h.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",lt),f.showGrid?v.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):v.selectAll(".tick line").attr("stroke","var(--color-bg)"),v.select(".domain").attr("stroke","var(--color-bg)"),v.append("text").attr("x",-e.margin.left).attr("y",12).attr("fill","var(--color-axis)").attr("font-size",lt).text(h.graphMode=="year"?"MW":"kW").attr("text-anchor","start"),"PGXAxis.vue"}),p=g(()=>{let v=fe("g#PGXAxis2");return v.selectAll("*").remove(),h.graphMode=="month"||h.graphMode=="year"?v.call(s.value):v.call(r.value),v.selectAll(".tick > text").attr("fill",(I,k)=>k>0||h.graphMode=="month"||h.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",lt),f.showGrid?(v.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"),v.select(".domain").attr("stroke","var(--color-bg)")):v.selectAll(".tick line").attr("stroke","var(--color-bg)"),v.select(".domain").attr("stroke","var(--color-bg)"),"PGXAxis2.vue"});return(v,I)=>(m(),_("g",{transform:"translate("+v.margin.left+","+v.margin.top+")"},[u("g",{id:"PGXAxis",class:"axis",origin:o.value,transform:"translate(0,"+(v.height/2-6)+")"},null,8,Vr),u("g",{id:"PGXAxis2",class:"axis",origin:p.value,transform:"translate(0,"+(v.height/2+10)+")"},null,8,Lr),i(f).showGrid?(m(),_("g",Dr,[u("rect",{x:"0",y:"0",width:v.width,height:v.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Er)])):M("",!0),i(f).showGrid?(m(),_("g",Gr,[u("rect",{x:"0",y:v.height/2+10,width:v.width,height:v.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,Wr)])):M("",!0)],8,Ar))}}),Nr=["d"],Ur=["d","stroke"],zr=["x","y","text-anchor"],ct=A({__name:"PgSoc",props:{width:{},height:{},margin:{},order:{}},setup(t){const e=t,a=g(()=>{let k=Ae(h.data,R=>R.date);return k[0]&&k[1]?Ue().domain(k).range([0,e.width]):Ue().range([0,0])}),r=g(()=>Oe().range([e.height-10,0]).domain([0,100])),n=g(()=>Et().x(ee=>a.value(ee.date)).y(ee=>r.value(e.order==2?ee.batSoc:ee["soc"+p.value.connectedVehicle])??r.value(0))(h.data)??""),s=g(()=>e.order==2?"Speicher":p.value.connectedVehicle),d=g(()=>e.order==2?"Speicher":p.value.vehicleName),c=g(()=>{switch(e.order){case 0:return"var(--color-cp1)";case 1:return"var(--color-cp2)";case 2:return"var(--color-battery)";default:return"red"}}),o=g(()=>{switch(e.order){case 0:return e.width-3;case 1:return 3;case 2:return e.width/2;default:return 0}}),p=g(()=>{const k=e.order==2?0:e.order;return Object.values(w)[k]}),v=g(()=>{if(h.data.length>0){let k;switch(e.order){case 0:return k=h.data.length-1,r.value(h.data[k]["soc"+s.value]+2);case 1:return k=0,r.value(h.data[k]["soc"+s.value]+2);case 2:return k=Math.round(h.data.length/2),r.value(h.data[k].batSoc+2);default:return 0}}else return 0}),I=g(()=>{switch(e.order){case 0:return"end";case 1:return"start";case 2:return"middle";default:return"middle"}});return(k,R)=>(m(),_(we,null,[u("path",{class:"soc-baseline",d:n.value,stroke:"var(--color-bg)","stroke-width":"1",fill:"none"},null,8,Nr),u("path",{class:"soc-dashes",d:n.value,stroke:c.value,"stroke-width":"1",style:{strokeDasharray:"3,3"},fill:"none"},null,8,Ur),u("text",{class:"cpname",x:o.value,y:v.value,style:re({fill:c.value,fontSize:10}),"text-anchor":I.value},C(d.value),13,zr)],64))}}),Fr=["transform"],Jr=A({__name:"PgSocAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=g(()=>Oe().range([e.height-10,0]).domain([0,100])),r=g(()=>ua(a.value).ticks(5).tickFormat(s=>s.toString()+"%"));function n(){let s=fe("g#PGSocAxis");s.call(r.value),s.selectAll(".tick").attr("font-size",12),s.selectAll(".tick line").attr("stroke","var(--color-bg)"),s.select(".domain").attr("stroke","var(--color-bg)")}return nt(()=>{n()}),(s,d)=>(m(),_("g",{id:"PGSocAxis",class:"axis",transform:"translate("+(s.width-20)+",0)"},null,8,Fr))}}),Rr={class:"btn-group m-0",role:"group","aria-label":"radiobar"},Hr=["id","value"],Yr=A({__name:"RadioBarInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=g({get(){return a.modelValue},set(c){r("update:modelValue",c)}});function s(c){let o=a.options[c].color?a.options[c].color:"var(--color-fg)";return a.options[c].active?{color:"var(--color-bg)",background:o}:{color:o}}function d(c){let o=c.target;for(;o&&!o.value&&o.parentElement;)o=o.parentElement;o.value&&(n.value=o.value)}return(c,o)=>(m(),_("div",null,[u("div",Rr,[(m(!0),_(we,null,Be(c.options,(p,v)=>(m(),_("button",{id:"radio-"+p.value,key:v,class:te(["btn btn-outline-secondary btn-sm radiobutton mx-0 mb-0 px-2",p.value==n.value?"active":""]),value:p.value,style:re(s(v)),onClick:d},[u("span",{style:re(s(v)),class:"scaled"},[p.icon?(m(),_("i",{key:0,class:te(["fa-solid",p.icon])},null,2)):M("",!0),j(" "+C(p.text),1)],4)],14,Hr))),128))])]))}}),Zt=U(Yr,[["__scopeId","data-v-60f5d4c2"]]),qr={key:0,class:"fa-solid fa-xl fa-chevron-circle-down p-1",style:{color:"var(--color-bg)"}},Qr=A({__name:"PgSelector",props:{widgetid:{},showLeftButton:{type:Boolean},showRightButton:{type:Boolean},ignoreLive:{type:Boolean}},emits:["shiftLeft","shiftRight","shiftUp","shiftDown"],setup(t){const e=t,a=ve(0),r=g(()=>{switch(h.graphMode){case"live":return e.ignoreLive?"heute":`${Z.duration} min`;case"today":return"heute";case"day":return J.date.getDate()+"."+(J.date.getMonth()+1)+".";case"month":return fa(Pe.month-1,Pe.year);case"year":return Ie.year.toString();default:return"???"}}),n=["live","today","day","month","year"],s=["Live","Heute","Tag","Monat","Jahr"],d=g({get(){return h.graphMode},set(D){switch(D){case"day":p();break;case"today":v();break;case"live":o();break;case"month":I();break;case"year":k()}}});function c(){a.value+=1,a.value>1&&(a.value=0)}function o(){h.graphMode!="live"&&(h.graphMode="live",K())}function p(){h.graphMode!="day"&&h.graphMode!="today"&&(h.graphMode="day",K())}function v(){h.graphMode!="today"&&(h.graphMode="today",Ir(new Date),K())}function I(){h.graphMode!="month"&&(h.graphMode="month",K())}function k(){h.graphMode!="year"&&(h.graphMode="year",K())}const R=g(()=>a.value>0?{border:"1px solid var(--color-frame)"}:""),ee=g(()=>a.value==1?"justify-content-between":"justify-content-end"),se=g(()=>a.value==1?"justify-content-between":"justify-content-center");return(D,G)=>(m(),_("div",{class:"d-flex flex-column justify-content-center pgselector rounded",style:re(R.value)},[a.value==2?(m(),T(Zt,{key:0,id:"pgm2",modelValue:d.value,"onUpdate:modelValue":G[0]||(G[0]=H=>d.value=H),class:"m-2",options:n.map((H,O)=>({text:s[O],value:H,color:"var(--color-menu)",active:H==i(h).graphMode}))},null,8,["modelValue","options"])):M("",!0),a.value==1?(m(),_("span",{key:1,type:"button",class:te(["arrowButton d-flex align-self-center mb-3 mt-3",{disabled:!e.showLeftButton}]),onClick:G[1]||(G[1]=H=>D.$emit("shiftUp"))},G[6]||(G[6]=[u("i",{class:"fa-solid fa-xl fa-chevron-circle-up"},null,-1)]),2)):M("",!0),u("div",{class:te(["d-flex align-items-center",se.value])},[a.value==1?(m(),_("span",{key:0,type:"button",class:te(["p-1",{disabled:!e.showLeftButton}]),onClick:G[2]||(G[2]=H=>D.$emit("shiftLeft"))},G[7]||(G[7]=[u("span",{class:"fa-solid fa-xl fa-chevron-circle-left arrowButton"},null,-1)]),2)):M("",!0),a.value<2?(m(),_("span",{key:1,type:"button",class:"btn-outline-secondary p-2 px-3 badge rounded-pill datebadge",onClick:c},C(r.value),1)):M("",!0),a.value==1?(m(),_("span",{key:2,id:"graphRightButton",type:"button",class:te(["arrowButton fa-solid fa-xl fa-chevron-circle-right p-1",{disabled:!e.showRightButton}]),onClick:G[3]||(G[3]=H=>D.$emit("shiftRight"))},null,2)):M("",!0)],2),u("div",{class:te(["d-flex align-items-center",ee.value])},[a.value==1?(m(),_("span",qr)):M("",!0),a.value==1?(m(),_("span",{key:1,id:"graphLeftButton",type:"button",class:te(["arrowButton fa-solid fa-xl fa-chevron-circle-down p-1",{disabled:!e.showLeftButton}]),onClick:G[4]||(G[4]=H=>D.$emit("shiftDown"))},null,2)):M("",!0),a.value>0?(m(),_("span",{key:2,type:"button",class:"p-1",onClick:G[5]||(G[5]=H=>a.value=0)},G[8]||(G[8]=[u("span",{class:"fa-solid fa-xl fa-circle-check"},null,-1)]))):M("",!0)],2)],4))}}),Xt=U(Qr,[["__scopeId","data-v-7fd067cd"]]),Zr={class:"d-flex justify-content-end"},Xr={class:"grid-col-12"},Kr=["viewBox"],en=["transform"],tn=2,an="Leistung / Ladestand ",rn=A({__name:"PowerGraph",setup(t){function e(){let a=f.usageStackOrder+1;a>tn&&(a=0),f.usageStackOrder=a,Sr(!0)}return(a,r)=>(m(),T(st,null,{title:x(()=>[j(C(an))]),buttons:x(()=>[u("div",Zr,[b(Xt,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!1,onShiftLeft:i(kt),onShiftRight:i(Yt),onShiftUp:i(qt),onShiftDown:i(Qt)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])])]),default:x(()=>[u("div",Xr,[u("figure",{id:"powergraph",class:"p-0 m-0 align-self-stretch",onClick:e},[(m(),_("svg",{viewBox:"0 0 "+i(xe)+" "+i(Ce)},[b(Or,{width:i(xe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L)},null,8,["width","height","margin"]),b(Tr,{width:i(xe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),"stack-order":i(f).usageStackOrder},null,8,["width","height","margin","stack-order"]),b(jr,{width:i(xe)-i(L).left-2*i(L).right,height:i(Ce)-i(L).top-i(L).bottom,margin:i(L),"graph-data":i(h)},null,8,["width","height","margin","graph-data"]),u("g",{transform:"translate("+i(L).left+","+i(L).top+")"},[(i(h).graphMode=="day"||i(h).graphMode=="today"||i(h).graphMode=="live")&&Object.values(i(w)).length>0?(m(),T(ct,{key:0,width:i(xe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),order:0},null,8,["width","height","margin"])):M("",!0),(i(h).graphMode=="day"||i(h).graphMode=="today"||i(h).graphMode=="live")&&Object.values(i(w)).length>1?(m(),T(ct,{key:1,width:i(xe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),order:1},null,8,["width","height","margin"])):M("",!0),["day","today","live"].includes(i(h).graphMode)&&i(z).isBatteryConfigured?(m(),T(ct,{key:2,width:i(xe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),order:2},null,8,["width","height","margin"])):M("",!0),["day","today","live"].includes(i(h).graphMode)?(m(),T(Jr,{key:3,width:i(xe)-i(L).left-i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L)},null,8,["width","height","margin"])):M("",!0)],8,en)],8,Kr))])])]),_:1}))}}),nn=U(rn,[["__scopeId","data-v-ba892fa4"]]),on=["id"],sn=["x","width","height","fill"],ln=["x","width","height"],cn=["x","y","width","height"],un=A({__name:"EmBar",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=g(()=>e.height-e.yScale(e.item.energy)-e.margin.top-e.margin.bottom),r=g(()=>e.item.energyPv>0?e.height-e.yScale(e.item.energyPv)-e.margin.top-e.margin.bottom:0),n=g(()=>e.item.energyPv>0?e.height-e.yScale(e.item.energyBat)-e.margin.top-e.margin.bottom:0);return(s,d)=>(m(),_("g",{id:"bar-"+e.item.name,transform:"scale(1,-1) translate (0,-445)"},[u("rect",{class:"bar",x:e.xScale(s.item.name),y:"0",width:e.xScale.bandwidth(),height:a.value,fill:s.item.color},null,8,sn),u("rect",{class:"bar",x:e.xScale(s.item.name)+e.xScale.bandwidth()/6,y:"0",width:e.xScale.bandwidth()*2/3,height:r.value,fill:"var(--color-pv)","fill-opacity":"66%"},null,8,ln),u("rect",{class:"bar",x:e.xScale(s.item.name)+e.xScale.bandwidth()/6,y:r.value,width:e.xScale.bandwidth()*2/3,height:n.value,fill:"var(--color-battery)","fill-opacity":"66%"},null,8,cn)],8,on))}}),dn={id:"emBargraph"},hn=A({__name:"EMBarGraph",props:{plotdata:{},xScale:{},yScale:{},margin:{},height:{}},setup(t){const e=t;function a(n){if(n.name=="PV"){const s=h.graphMode=="live"||h.graphMode=="day"?W:P.items,c=(h.graphMode=="live"||h.graphMode=="day"?$:P.items).evuOut.energy,o=s.pv.energy;return Math.round((o-c)/o*100)}else if(n.name=="Netz"){const s=h.graphMode=="live"||h.graphMode=="day"?W:P.items,d=h.graphMode=="live"||h.graphMode=="day"?$:P.items,c=d.evuOut.energy,o=s.evuIn.energy,p=s.pv.energy,v=s.batOut.energy,I=d.batIn.energy;return Math.round((p+v-c-I)/(p+v+o-c-I)*100)}else return n.pvPercentage}function r(n){return n.name=="PV"?"Eigen":"Aut"}return(n,s)=>(m(),_("g",dn,[(m(!0),_(we,null,Be(e.plotdata,(d,c)=>(m(),_("g",{key:c},[b(un,{item:d,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":r(d),autarchy:a(d)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128)),s[0]||(s[0]=u("animateTransform",{"attribute-name":"transform",type:"scale",from:"1 0",to:"1 1",begin:"0s",dur:"2s"},null,-1))]))}}),pn=["origin"],gn=A({__name:"EMYAxis",props:{yScale:{type:[Function,Object]},width:{},fontsize:{}},setup(t){const e=t,a=g(()=>ot(e.yScale).tickFormat(n=>n>0?(n/1e3).toString():"").ticks(6).tickSizeInner(-e.width)),r=g(()=>{const n=fe("g#emYAxis");return n.attr("class","axis").call(a.value),n.append("text").attr("y",6).attr("dy","0.71em").attr("text-anchor","end").text("energy"),n.selectAll(".tick").attr("font-size",e.fontsize),f.showGrid?n.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):n.selectAll(".tick line").attr("stroke","var(--color-bg)"),n.select(".domain").attr("stroke","var(--color-bg)"),"emYAxis.vue"});return(n,s)=>(m(),_("g",{id:"emYAxis",class:"axis",origin:r.value},null,8,pn))}}),mn=["id"],vn=["x","y","font-size"],fn=["x","y","font-size","fill"],yn=["x","y","font-size","fill"],bn=A({__name:"EmLabel",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=g(()=>e.autarchy?e.yScale(e.item.energy)-25:e.yScale(e.item.energy)-10),r=g(()=>{let o=16,p=e.barcount;return p<=5?o=16:p==6?o=14:p>6&&p<=8?o=13:p==9?o=11:p==10?o=10:o=9,o}),n=g(()=>{let o=12,p=e.barcount;return p<=5?o=12:p==6?o=11:p>6&&p<=8||p==9?o=8:p==10?o=7:o=6,o});function s(o,p){return p.length>n.value?p.substring(0,n.value)+".":p}function d(){return e.autarchy?e.autText+": "+e.autarchy.toLocaleString(void 0)+" %":""}function c(){return"var(--color-pv)"}return(o,p)=>(m(),_("g",{id:"barlabel-"+e.item.name},[u("text",{x:e.xScale(o.item.name)+e.xScale.bandwidth()/2,y:a.value,"font-size":r.value,"text-anchor":"middle",fill:"var(--color-menu)"},C(i(jt)(o.item.energy,i(f).decimalPlaces,!1)),9,vn),u("text",{x:e.xScale(o.item.name)+e.xScale.bandwidth()/2,y:e.yScale(o.item.energy)-10,"font-size":r.value-2,"text-anchor":"middle",fill:c()},C(d()),9,fn),u("text",{x:e.xScale(o.item.name)+e.xScale.bandwidth()/2,y:e.height-e.margin.bottom-5,"font-size":r.value,"text-anchor":"middle",fill:o.item.color,class:te(o.item.icon.length<=2?"fas":"")},C(s(o.item.name,o.item.icon)),11,yn)],8,mn))}}),_n={id:"emBarLabels"},wn=A({__name:"EMLabels",props:{plotdata:{},xScale:{},yScale:{},height:{},margin:{}},setup(t){const e=t;function a(n){if(n.name=="PV"){const s=h.graphMode=="live"||h.graphMode=="day"?W:P.items,c=(h.graphMode=="live"||h.graphMode=="day"?$:P.items).evuOut.energy,o=s.pv.energy;return Math.round((o-c)/o*100)}else if(n.name=="Netz"){const s=h.graphMode=="live"||h.graphMode=="day"?W:P.items,d=h.graphMode=="live"||h.graphMode=="day"?$:P.items,c=d.evuOut.energy,o=s.evuIn.energy,p=s.pv.energy,v=s.batOut.energy,I=d.batIn.energy;return p+v-c-I>0?Math.round((p+v-c-I)/(p+v+o-c-I)*100):0}else return n.pvPercentage}function r(n){return n.name=="PV"?"Eigen":"Aut"}return(n,s)=>(m(),_("g",_n,[(m(!0),_(we,null,Be(e.plotdata,(d,c)=>(m(),_("g",{key:c},[b(bn,{item:d,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":r(d),autarchy:a(d)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128))]))}}),Sn={class:"grid-col-12"},kn={id:"energymeter",class:"energymeter p-0 m-0 align-self-stretch"},xn={viewBox:"0 0 500 500"},Mn=["transform"],Pn=["x"],Cn={key:0},Bt=500,ut=500,Tt=12,In="Energie",$n=A({__name:"EnergyMeter",setup(t){const e={top:25,bottom:30,left:25,right:0},a=g(()=>{let d=Object.values(W),c=s.value,o=P.values(),p=[];switch(f.debug&&(console.debug("----------------------- source summary -----------------"),console.debug(W),console.debug("----------------------- usage details ------------------"),console.debug(s.value),console.debug("----------------------- historic summary ---------------"),console.debug(P),console.debug("--------------------------------------------------------")),et.value==!0&&(et.value=!1),h.graphMode){default:case"live":case"today":p=d.concat(c).filter(v=>v.energy>0);break;case"day":case"month":case"year":o.length==0?je.value=!0:(je.value=!1,p=o.filter(v=>v.energy>0))}return p}),r=g(()=>pt().range([0,Bt-e.left-e.right]).domain(a.value.map(d=>d.name)).padding(.4)),n=g(()=>Oe().range([ut-e.bottom-e.top,15]).domain([0,da(a.value,d=>d.energy)])),s=g(()=>{const d=Object.values(w).length,c=Object.values(E).filter(o=>o.configured).length;return[$.evuOut,$.devices,$.charging].concat(d>1?Object.values(w).map(o=>o.toPowerItem()):[]).concat(c>1?Object.values(E).filter(o=>o.configured&&o.showInGraph):[]).concat([$.batIn,$.house])});return(d,c)=>(m(),T(st,null,{title:x(()=>[j(C(In))]),buttons:x(()=>[b(Xt,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!0,onShiftLeft:i(kt),onShiftRight:i(Yt),onShiftUp:i(qt),onShiftDown:i(Qt)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])]),default:x(()=>[u("div",Sn,[u("figure",kn,[(m(),_("svg",xn,[u("g",{transform:"translate("+e.left+","+e.top+")"},[b(hn,{plotdata:a.value,"x-scale":r.value,"y-scale":n.value,height:ut,margin:e},null,8,["plotdata","x-scale","y-scale"]),b(gn,{"y-scale":n.value,width:Bt,fontsize:Tt,config:i(f)},null,8,["y-scale","config"]),u("text",{x:-e.left,y:"-15",fill:"var(--color-axis)","font-size":Tt},C(i(h).graphMode=="year"?"MWh":"kWh"),9,Pn),b(wn,{plotdata:a.value,"x-scale":r.value,"y-scale":n.value,height:ut,margin:e,config:i(f)},null,8,["plotdata","x-scale","y-scale","config"])],8,Mn)]))])]),i(je)?(m(),_("p",Cn,"No data")):M("",!0)]),_:1}))}}),On=U($n,[["__scopeId","data-v-69785337"]]),Bn=["id"],Tn={class:"modal-dialog modal-lg modal-fullscreen-lg-down"},An={class:"modal-content"},Vn={class:"modal-header"},Ln={class:"modal-title scaled"},Dn={class:"modal-body"},En=A({__name:"ModalComponent",props:{modalId:{}},setup(t){const e=t;return(a,r)=>(m(),_("div",{id:e.modalId,class:"modal fade"},[u("div",Tn,[u("div",An,[u("div",Vn,[u("h3",Ln,[ge(a.$slots,"title",{},void 0)]),r[0]||(r[0]=u("button",{type:"button",class:"btn-close buttonTextSize d-flex justify-content-center pt-3 pb-0","data-bs-dismiss":"modal"},[u("i",{class:"fa-solid fa-lg fa-circle-check m-0 p-0"})],-1))]),u("div",Dn,[ge(a.$slots,"default",{},void 0)]),r[1]||(r[1]=u("div",{class:"modal-footer"},null,-1))])])],8,Bn))}}),dt=U(En,[["__scopeId","data-v-dff8d7c2"]]),Gn={class:"digit scaled",type:"button"},Wn=A({__name:"PadButton",props:{modelValue:{},color:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=ve(!1);function n(){r.value=!0,d("update:modelValue",a.modelValue),setTimeout(()=>{r.value=!1},300)}const s=g(()=>r.value?{"background-color":"white",color:"black"}:{"background-color":a.color??"var(--color-axis)"}),d=e;return(c,o)=>(m(),_("div",{class:"padbutton",style:re(s.value),onClick:n},[u("span",Gn,[ge(c.$slots,"default",{},void 0)])],4))}}),Je=U(Wn,[["__scopeId","data-v-cc256a6f"]]),jn={class:"numberpad"},Nn={class:"codedisplay scaled"},Un={class:"numberentry"},zn=A({__name:"NumberPad",props:{modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const r=ve(t.modelValue),n=e,s=g(()=>r.value.length==0?"Bitte geben Sie die PIN ein":"*".repeat(r.value.length));function d(c){c==-1?r.value=r.value.slice(0,-1):c==-2?(n("update:modelValue",r.value),r.value=""):r.value=r.value+c.toString()}return(c,o)=>(m(),_("div",jn,[u("p",Nn,C(s.value),1),u("div",Un,[(m(),_(we,null,Be(9,p=>b(Je,{key:p,"model-value":p,"onUpdate:modelValue":d},{default:x(()=>[j(C(p),1)]),_:2},1032,["model-value"])),64)),b(Je,{"model-value":0,"onUpdate:modelValue":d},{default:x(()=>o[0]||(o[0]=[j("0")])),_:1}),b(Je,{"model-value":-1,color:"var(--color-devices)","onUpdate:modelValue":d},{default:x(()=>o[1]||(o[1]=[u("span",{class:"fas fa-delete-left"},null,-1)])),_:1}),b(Je,{"model-value":-2,color:"var(--color-devices)","data-bs-dismiss":"modal","onUpdate:modelValue":d},{default:x(()=>o[2]||(o[2]=[u("span",{class:"fas fa-circle-check"},null,-1)])),_:1})])]))}}),Fn=U(zn,[["__scopeId","data-v-63c8fa5c"]]),Jn={class:"statustable"},Rn=A({__name:"StatusPage",setup(t){return(e,a)=>(m(),_("div",Jn,[a[0]||(a[0]=u("span",{class:"header"},"IP-Adresse:",-1)),u("span",null,C(i(z).ipAddress),1),a[1]||(a[1]=u("span",{class:"header"},"Systemzeit:",-1)),u("span",null,C(new Date(i(z).systemTime*1e3).toLocaleString(void 0)),1),a[2]||(a[2]=u("span",{class:"header"},"Version:",-1)),u("span",null,C(i(z).version),1),a[3]||(a[3]=u("span",{class:"header"},"Version (Details):",-1)),u("span",null,C(i(z).versionDetails),1),a[4]||(a[4]=u("span",{class:"header"},"Entwicklungszweig:",-1)),u("span",null,C(i(z).devBranch),1)]))}}),Hn=U(Rn,[["__scopeId","data-v-6a182015"]]),Yn={class:"configitem subgrid"},qn={class:"d-flex align-items-baseline m-0 p-0 grid-col-6 scaled"},Qn={class:"ms-1 mb-2 p-0 pt-2 d-flex justify-content-stretch align-items-center grid-col-6"},Zn={class:"justify-content-stretch d-flex"},Xn=A({__name:"ConfigItem",props:{title:{},infotext:{},icon:{},iconcolor:{},fullwidth:{type:Boolean}},setup(t){const e=t;return(a,r)=>(m(),_("div",Yn,[u("span",qn,[e.icon?(m(),_("i",{key:0,class:te(["fa-solid fa-sm m-0 p-0 me-2 item-icon",e.icon]),style:re({color:e.iconcolor?e.iconcolor:"var(--color-charging)"})},null,6)):M("",!0),j(" "+C(a.title),1)]),u("div",Qn,[u("span",Zn,[ge(a.$slots,"default",{},void 0)])])]))}}),Q=U(Xn,[["__scopeId","data-v-40d270c0"]]),Kn={class:"rangewidget d-flex flex-column"},eo={class:"rangeslider d-flex flex-fill justify-content-between align-items-center"},to=["id","min","max","step"],ao={class:"d-flex justify-content-between align-items-center"},ro={class:"minlabel ps-4"},no={class:"valuelabel"},oo={class:"maxlabel pe-4"},so=A({__name:"RangeInput",props:{id:{},min:{},max:{},step:{},unit:{},decimals:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=a.decimals??0,n=e,s=g({get(){return Math.round(a.modelValue*Math.pow(10,r))/Math.pow(10,r)},set(o){n("update:modelValue",o)}});function d(){s.value>a.min&&(s.value=Math.round((s.value-a.step)*Math.pow(10,r))/Math.pow(10,r))}function c(){s.value<a.max&&(s.value=Math.round((s.value+a.step)*Math.pow(10,r))/Math.pow(10,r))}return(o,p)=>(m(),_("span",Kn,[u("span",eo,[u("span",{type:"button",class:"minusButton",onClick:d},p[1]||(p[1]=[u("i",{class:"fa fa-xl fa-minus-square me-2"},null,-1)])),Ee(u("input",{id:o.id,"onUpdate:modelValue":p[0]||(p[0]=v=>s.value=v),type:"range",class:"form-range flex-fill",min:o.min,max:o.max,step:o.step},null,8,to),[[ha,s.value,void 0,{number:!0}]]),u("span",{type:"button",class:"plusButton",onClick:c},p[2]||(p[2]=[u("i",{class:"fa fa-xl fa-plus-square ms-2"},null,-1)]))]),u("span",ao,[u("span",ro,C(o.min),1),u("span",no,C(s.value)+" "+C(o.unit),1),u("span",oo,C(o.max),1)])]))}}),$e=U(so,[["__scopeId","data-v-0e01f92a"]]),io=["id","value"],lo=A({__name:"RadioInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=g({get(){return a.modelValue},set(c){r("update:modelValue",c)}});function s(c){return a.options[c][2]?{color:a.options[c][2]}:{color:"var(--color-fg)"}}function d(c){let o=c.target;for(;o&&!o.value&&o.parentElement;)o=o.parentElement;o.value&&(n.value=o.value)}return(c,o)=>(m(),_("div",null,[(m(!0),_(we,null,Be(c.options,(p,v)=>(m(),_("button",{id:"radio-"+p[1],key:v,class:te(["btn btn-outline-secondary radiobutton me-2 mb-0 px-2",p[1]==n.value?"active":""]),value:p[1],style:re(s(v)),onClick:d},[u("span",{style:re(s(v)),class:"scaled"},[p[3]?(m(),_("i",{key:0,class:te(["fa-solid",p[3]])},null,2)):M("",!0),j(" "+C(p[0]),1)],4)],14,io))),128))]))}}),Qe=U(lo,[["__scopeId","data-v-005a14a9"]]),co={class:"instantsettings mt-5 grid12"},uo={key:0},ho=A({__name:"CPConfigInstant",props:{chargepointId:{}},setup(t){const e=t,a=g(()=>w[e.chargepointId]),r=[{name:"keine",id:"none"},{name:"EV-SoC",id:"soc"},{name:"Energiemenge",id:"amount"}],n=g({get(){return a.value.instantMaxEnergy/1e3},set(s){a.value.instantMaxEnergy=s*1e3}});return(s,d)=>(m(),_("div",co,[b(Q,{title:"Stromstärke",icon:"fa-bolt",fullwidth:!0},{default:x(()=>[b($e,{id:"targetCurrent",modelValue:a.value.instantTargetCurrent,"onUpdate:modelValue":d[0]||(d[0]=c=>a.value.instantTargetCurrent=c),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1}),a.value.instantChargeLimitMode!="none"?(m(),_("hr",uo)):M("",!0),b(Q,{title:"Begrenzung",icon:"fa-hand",fullwidth:!0},{default:x(()=>[b(Qe,{modelValue:a.value.instantChargeLimitMode,"onUpdate:modelValue":d[1]||(d[1]=c=>a.value.instantChargeLimitMode=c),options:r.map(c=>[c.name,c.id])},null,8,["modelValue","options"])]),_:1}),a.value.instantChargeLimitMode=="soc"?(m(),T(Q,{key:1,title:"Maximaler SoC",icon:"fa-sliders",fullwidth:!0},{default:x(()=>[b($e,{id:"maxSoc",modelValue:a.value.instantTargetSoc,"onUpdate:modelValue":d[2]||(d[2]=c=>a.value.instantTargetSoc=c),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),a.value.instantChargeLimitMode=="amount"?(m(),T(Q,{key:2,title:"Zu ladende Energie",icon:"fa-sliders",fullwidth:!0},{default:x(()=>[b($e,{id:"maxEnergy",modelValue:n.value,"onUpdate:modelValue":d[3]||(d[3]=c=>n.value=c),min:0,max:100,step:1,unit:"kWh"},null,8,["modelValue"])]),_:1})):M("",!0)]))}}),po=U(ho,[["__scopeId","data-v-02d97261"]]),go={class:"form-check form-switch d-flex align-items-center justify-content-center"},mo=A({__name:"SwitchInput",props:{modelValue:{type:Boolean},onColor:{},offColor:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,r=e,n=g({get(){return a.modelValue},set(s){r("update:modelValue",s)}});return(s,d)=>(m(),_("div",go,[Ee(u("input",{"onUpdate:modelValue":d[0]||(d[0]=c=>n.value=c),class:"form-check-input",type:"checkbox",role:"switch"},null,512),[[pa,n.value]])]))}}),he=U(mo,[["__scopeId","data-v-547e6de4"]]),vo={class:"pvsettings pt-5 grid12"},fo=A({__name:"CPConfigPv",props:{chargepointId:{}},setup(t){const e=t,a=g(()=>w[e.chargepointId]),r=g({get(){return a.value.pvMinCurrent>5},set(d){d?a.value.pvMinCurrent=6:a.value.pvMinCurrent=0}}),n=g({get(){return a.value.pvMinSoc>0},set(d){d?a.value.pvMinSoc=50:a.value.pvMinSoc=0}}),s=g({get(){return a.value.pvMaxSoc<=100},set(d){d?a.value.pvMaxSoc=100:a.value.pvMaxSoc=101}});return(d,c)=>(m(),_("div",vo,[b(Q,{title:"Ladestand begrenzen",icon:"fa-battery-three-quarters",fullwidth:!0},{default:x(()=>[b(he,{id:"limitSoc",modelValue:s.value,"onUpdate:modelValue":c[0]||(c[0]=o=>s.value=o)},null,8,["modelValue"])]),_:1}),s.value?(m(),T(Q,{key:0,title:"...auf maximal...",icon:"fa-battery-three-quarters",fullwidth:!0},{default:x(()=>[b($e,{id:"maxSoc",modelValue:a.value.pvMaxSoc,"onUpdate:modelValue":c[1]||(c[1]=o=>a.value.pvMaxSoc=o),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),b(Q,{title:"Einspeisegrenze beachten",icon:"fa-hand",fullwidth:!0},{default:x(()=>[b(he,{modelValue:a.value.pvFeedInLimit,"onUpdate:modelValue":c[2]||(c[2]=o=>a.value.pvFeedInLimit=o)},null,8,["modelValue"])]),_:1}),b(Q,{title:"Mindest-Ladestand",icon:"fa-battery-half",fullwidth:!0},{default:x(()=>[b(he,{modelValue:n.value,"onUpdate:modelValue":c[3]||(c[3]=o=>n.value=o)},null,8,["modelValue"])]),_:1}),n.value?(m(),T(Q,{key:1,title:"...bis SoC",fullwidth:!0},{default:x(()=>[b($e,{id:"minSoc",modelValue:a.value.pvMinSoc,"onUpdate:modelValue":c[4]||(c[4]=o=>a.value.pvMinSoc=o),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),n.value?(m(),T(Q,{key:2,title:"...mit Ladestrom",fullwidth:!0},{default:x(()=>[b($e,{id:"minSocCurrent",modelValue:a.value.pvMinSocCurrent,"onUpdate:modelValue":c[5]||(c[5]=o=>a.value.pvMinSocCurrent=o),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):M("",!0),b(Q,{title:"Minimaler Ladestrom",icon:"fa-bolt",fullwidth:!0},{default:x(()=>[b(he,{modelValue:r.value,"onUpdate:modelValue":c[6]||(c[6]=o=>r.value=o)},null,8,["modelValue"])]),_:1}),r.value?(m(),T(Q,{key:3,title:"...bei Ladestrom (minimal)",fullwidth:!0},{default:x(()=>[b($e,{id:"minCurrent",modelValue:a.value.pvMinCurrent,"onUpdate:modelValue":c[7]||(c[7]=o=>a.value.pvMinCurrent=o),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):M("",!0)]))}}),yo=U(fo,[["__scopeId","data-v-455524b6"]]),bo={class:"schedulestable p-3 grid12"},_o={key:0,class:"warning grid-col-12 p-5"},wo={class:"grid-col-2"},So={class:"grid-col-3 grid-left"},ko={class:"grid-col-2"},xo={class:"grid-col-2"},Mo={class:"grid-col-3"},Po=A({__name:"CPConfigScheduled",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,r=g(()=>Ge[a.chargeTemplateId]?Object.values(Ge[a.chargeTemplateId]):[]);function n(c){console.log(`update ${c}`),q("cpScheduledPlanActive",r.value[c].active,a.chargeTemplateId,c)}function s(c){return r.value[c].time}function d(c){return{"font-weight":r.value[c].active?"bold":"regular"}}return(c,o)=>(m(),_("div",bo,[o[0]||(o[0]=u("div",{class:"subtitle grid-col-12"},"Pläne für Zielladen:",-1)),r.value.length==0?(m(),_("div",_o," Es sind noch keine Pläne definiert. Pläne für das Zielladen können in der Web-App festgelegt werden. ")):M("",!0),o[1]||(o[1]=Gt('<div class="subgrid tableheader" data-v-ff0b6341><span class="grid-col-2 grid-left" data-v-ff0b6341></span><span class="grid-col-3 grid-left" data-v-ff0b6341>Startzeit</span><span class="grid-col-2" data-v-ff0b6341>SoC-Ziel</span><span class="grid-col-2" data-v-ff0b6341>SoC-Limit</span><span class="grid-col-3" data-v-ff0b6341>Wiederholung</span></div>',1)),(m(!0),_(we,null,Be(r.value,(p,v)=>(m(),_("div",{key:v,style:re(d(v)),class:"subgrid tableline"},[u("span",wo,[b(he,{modelValue:p.active,"onUpdate:modelValue":[I=>p.active=I,I=>n(v)]},null,8,["modelValue","onUpdate:modelValue"])]),u("span",So,C(s(v)),1),u("span",ko,C(p.limit.soc_scheduled)+"%",1),u("span",xo,C(p.limit.soc_limit)+"%",1),u("span",Mo,C(e[p.frequency.selected]),1)],4))),128))]))}}),Co=U(Po,[["__scopeId","data-v-ff0b6341"]]),Io={class:"timeplantable p-3 grid12"},$o={key:0,class:"warning grid-col-12 p-5"},Oo={class:"grid-col-2"},Bo={class:"grid-col-3 grid-left"},To={class:"grid-col-2"},Ao={class:"grid-col-2"},Vo={class:"grid-col-3"},Lo=A({__name:"CPConfigTimed",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,r=g(()=>We[a.chargeTemplateId]?Object.values(We[a.chargeTemplateId])??[]:[]);function n(d){console.log(`update ${d}`),q("cpTimedPlanActive",r.value[d].active,a.chargeTemplateId,d)}function s(d){return{"font-weight":r.value[d].active?"bold":"regular"}}return(d,c)=>(m(),_("div",Io,[c[0]||(c[0]=u("div",{class:"subtitle grid-col-12"},"Zeitpläne:",-1)),r.value.length==0?(m(),_("div",$o," Es sind noch keine Pläne definiert. Zeitpläne können in der Web-App festgelegt werden. ")):M("",!0),c[1]||(c[1]=Gt('<div class="subgrid tableheader" data-v-ace151e1><span class="grid-col-2" data-v-ace151e1></span><span class="grid-col-3 grid-left" data-v-ace151e1>Von</span><span class="grid-col-2" data-v-ace151e1>Bis</span><span class="grid-col-2" data-v-ace151e1>Ladestrom</span><span class="grid-col-3" data-v-ace151e1>Wiederholung</span></div>',1)),(m(!0),_(we,null,Be(r.value,(o,p)=>(m(),_("div",{key:p,style:re(s(p)),class:"subgrid tableline"},[u("span",Oo,[b(he,{modelValue:o.active,"onUpdate:modelValue":[v=>o.active=v,v=>n(p)]},null,8,["modelValue","onUpdate:modelValue"])]),u("span",Bo,C(o.time[0]),1),u("span",To,C(o.time[1]),1),u("span",Ao,C(o.current)+"A",1),u("span",Vo,C(e[o.frequency.selected]),1)],4))),128))]))}}),Do=U(Lo,[["__scopeId","data-v-ace151e1"]]),Eo={class:"settingslist"},Go={key:2,class:"grid-col-12 my-2"},Wo=A({__name:"CPChargeConfig",props:{chargepointId:{}},setup(t){const e=t,a=g(()=>w[e.chargepointId]),r=g({get:()=>a.value.connectedVehicle,set:d=>{w[a.value.id].connectedVehicle=d}}),n=g({get:()=>a.value.etActive,set:d=>{w[a.value.id].etActive=d}}),s=g({get:()=>a.value.timedCharging,set:d=>{w[a.value.id].timedCharging=d}});return(d,c)=>(m(),_("div",Eo,[Object.keys(i(N)).length>1?(m(),T(Q,{key:0,title:"Fahrzeug wechseln",icon:"fa-car",fullwidth:!0},{default:x(()=>[b(Qe,{modelValue:r.value,"onUpdate:modelValue":c[0]||(c[0]=o=>r.value=o),modelModifiers:{number:!0},options:Object.values(i(N)).map(o=>[o.name,o.id])},null,8,["modelValue","options"])]),_:1})):M("",!0),Object.keys(i(ie)).length>1?(m(),T(Q,{key:1,title:"Ladeprofil",icon:"fa-sliders",iconcolor:"var(--color-pv)"},{default:x(()=>[i(N)[r.value]?(m(),T(Qe,{key:0,modelValue:i(N)[r.value].chargeTemplateId,"onUpdate:modelValue":c[1]||(c[1]=o=>i(N)[r.value].chargeTemplateId=o),modelModifiers:{number:!0},options:Object.keys(i(ie)).map(o=>[i(ie)[+o].name,o])},null,8,["modelValue","options"])):M("",!0)]),_:1})):M("",!0),c[7]||(c[7]=u("hr",{class:"grid-col-12 my-2"},null,-1)),b(Q,{title:"Priorität",icon:"fa-star",iconcolor:"var(--color-evu)",fullwidth:!0},{default:x(()=>[b(he,{modelValue:a.value.hasPriority,"onUpdate:modelValue":c[2]||(c[2]=o=>a.value.hasPriority=o)},null,8,["modelValue"])]),_:1}),b(Q,{title:"Zeitplan aktivieren",icon:"fa-clock",iconcolor:"var(--color-battery)"},{default:x(()=>[b(he,{modelValue:s.value,"onUpdate:modelValue":c[3]||(c[3]=o=>s.value=o)},null,8,["modelValue"])]),_:1}),b(Q,{title:"Sperren",icon:"fa-lock",iconcolor:"var(--color-evu)",fullwidth:!0},{default:x(()=>[b(he,{modelValue:a.value.isLocked,"onUpdate:modelValue":c[4]||(c[4]=o=>a.value.isLocked=o)},null,8,["modelValue"])]),_:1}),b(Q,{title:"Strompreisbasiert laden",icon:"fa-coins",iconcolor:"var(--color-battery)"},{default:x(()=>[b(he,{modelValue:n.value,"onUpdate:modelValue":c[5]||(c[5]=o=>n.value=o)},null,8,["modelValue"])]),_:1}),i(z).isBatteryConfigured?(m(),_("hr",Go)):M("",!0),i(z).isBatteryConfigured?(m(),T(Q,{key:3,title:"PV-Priorität (global)",icon:"fa-car-battery",iconcolor:"var(--color-battery)",fullwidth:!0},{default:x(()=>[b(Qe,{modelValue:i(z).pvBatteryPriority,"onUpdate:modelValue":c[6]||(c[6]=o=>i(z).pvBatteryPriority=o),options:i(Ba)},null,8,["modelValue","options"])]),_:1})):M("",!0)]))}}),jo=U(Wo,[["__scopeId","data-v-ed7593cf"]]),No={class:"pricesettings grid12"},Uo={class:"subtitle grid-col-12"},zo={class:"grapharea"},Fo={id:"pricechart"},Jo={viewBox:"0 0 400 300"},Ro=["id","origin","transform"],Ho={class:"controlarea d-flex align-items-center"},Yo={class:"priceinput d-flex flex-column justify-content-center align-items-center"},qo={class:"grid12 pb-5"},Qo=["disabled"],Re=400,ht=250,At=12,Zo=A({__name:"PriceChart",props:{chargePointId:{},globalview:{type:Boolean}},setup(t){const e=t,a=g(()=>w[e.chargePointId]),r=ve(a.value.etMaxPrice),n=ve(!1),s=g({get:()=>r.value,set(y){r.value=y,n.value=!0}}),d=g({get:()=>a.value.etActive,set:y=>{a.value.etActive=y}});function c(){a.value&&(a.value.etMaxPrice=s.value),n.value=!1}const o=ve(!1),p={top:0,bottom:15,left:20,right:15},v=g(()=>{let y=[];return X.etPriceList.size>0&&X.etPriceList.forEach((B,V)=>{y.push([V,B])}),y}),I=g(()=>v.value.length>1?(Re-p.left-p.right)/v.value.length-1:0),k=g(()=>n.value?{background:"var(--color-charging)"}:{background:"var(--color-menu)"}),R=g(()=>{let y=Ae(v.value,B=>B[0]);return y[1]&&(y[1]=new Date(y[1]),y[1].setTime(y[1].getTime()+36e5)),Ue().range([p.left,Re-p.right]).domain(y)}),ee=g(()=>{let y=Ae(v.value,B=>B[1]);return y[0]=y[0]?Math.floor(y[0]-1):0,y[1]=y[1]?Math.floor(y[1]+1):0,y}),se=g(()=>Oe().range([ht-p.bottom,0]).domain(ee.value)),D=g(()=>{const y=Et(),B=[[p.left,se.value(s.value)],[Re-p.right-1,se.value(s.value)]];return y(B)}),G=g(()=>Ye(R.value).ticks(v.value.length).tickSize(5).tickSizeInner(-ht).tickFormat(y=>y.getHours()%6==0?gt("%H:%M")(y):"")),H=g(()=>ot(se.value).ticks(6).tickSizeInner(-(Re-p.right-p.left)).tickFormat(y=>y.toString())),O=g(()=>{o.value==!0;const y=fe("g#"+S.value);y.selectAll("*").remove(),y.selectAll("bar").data(v.value).enter().append("g").append("rect").attr("class","bar").attr("x",pe=>R.value(pe[0])).attr("y",pe=>se.value(pe[1])).attr("width",I.value).attr("height",pe=>se.value(ee.value[0])-se.value(pe[1])).attr("fill",pe=>pe[1]<=s.value?"var(--color-charging)":"var(--color-axis)");const V=y.append("g").attr("class","axis").call(G.value);V.attr("transform","translate(0,"+(ht-p.bottom)+")"),V.selectAll(".tick").attr("font-size",At).attr("color","var(--color-bg)"),V.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",pe=>pe.getHours()%6==0?"2":"0.5"),V.select(".domain").attr("stroke","var(--color-bg");const ne=y.append("g").attr("class","axis").call(H.value);return ne.attr("transform","translate("+p.left+",0)"),ne.selectAll(".tick").attr("font-size",At).attr("color","var(--color-bg)"),ne.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",pe=>pe%5==0?"2":"0.5"),ne.select(".domain").attr("stroke","var(--color-bg)"),y.append("path").attr("d",D.value).attr("stroke","yellow"),"PriceChart.vue"}),S=g(()=>a.value?"priceChartCanvas"+a.value.id:"priceChartCanvasGlobal");return nt(()=>{o.value=!o.value}),ga(()=>{r.value=a.value.etMaxPrice}),(y,B)=>(m(),_("div",No,[u("div",Uo,"Anbieter: "+C(i(X).etProvider),1),u("div",zo,[u("figure",Fo,[(m(),_("svg",Jo,[u("g",{id:S.value,origin:O.value,transform:"translate("+p.top+","+p.right+")"},null,8,Ro)]))])]),u("div",Ho,[u("div",Yo,[u("div",qo,[b(Q,{title:"Strompreisbasiert laden",icon:"fa-coins",iconcolor:"var(--color-battery)"},{default:x(()=>[b(he,{modelValue:d.value,"onUpdate:modelValue":B[0]||(B[0]=V=>d.value=V)},null,8,["modelValue"])]),_:1})]),b($e,{id:"etmaxprice",modelValue:s.value,"onUpdate:modelValue":B[1]||(B[1]=V=>s.value=V),min:-25,max:95,step:.1,decimals:1,unit:"ct"},null,8,["modelValue"]),u("span",{class:"pt-3",onClick:c},[u("button",{type:"button",class:"btn btn-lg btn-secondary",style:re(k.value),disabled:!n.value}," Bestätigen ",12,Qo)])])]),u("span",null,C(s.value),1)]))}}),Xo=U(Zo,[["__scopeId","data-v-08931d61"]]),Ko={class:"m-0 mt-1 p-0 grid-col-12 tabarea"},es={class:"nav nav-tabs nav-justified mx-1 mt-1",role:"tablist"},ts=["id","data-bs-target"],as=["id","data-bs-target"],rs=["id","data-bs-target"],ns=["id","data-bs-target"],os=["id","data-bs-target"],ss=["id","data-bs-target"],is={id:"settingsPanes",class:"tab-content mt-2"},ls=["id"],cs=["id"],us=["id"],ds=["id"],hs=["id"],ps=["id"],gs=A({__name:"SettingsPage",props:{chargepoint:{}},setup(t){const e=t,a=g(()=>ie[e.chargepoint.chargeTemplate]),r=g(()=>e.chargepoint.id);return(n,s)=>(m(),_("div",Ko,[u("nav",es,[u("a",{id:"chSettings"+r.value,class:"nav-link active","data-bs-toggle":"tab","data-bs-target":"#chargeSettings"+r.value},s[0]||(s[0]=[u("i",{class:"fa-solid fa-charging-station"},null,-1),j(" Allgemein ")]),8,ts),u("a",{id:"inSettings"+r.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#instantSettings"+r.value},s[1]||(s[1]=[u("i",{class:"fa-solid fa-lg fa-bolt"},null,-1),j(" Sofort ")]),8,as),u("a",{id:"phvSettings"+r.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pvSettings"+r.value},s[2]||(s[2]=[u("i",{class:"fa-solid fa-solar-panel me-1"},null,-1),j(" PV ")]),8,rs),u("a",{id:"scSettings"+r.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#scheduledSettings"+r.value},s[3]||(s[3]=[u("i",{class:"fa-solid fa-bullseye me-1"},null,-1),j(" Zielladen ")]),8,ns),u("a",{id:"tmSettings"+r.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#timeSettings"+r.value},s[4]||(s[4]=[u("i",{class:"fa-solid fa-clock"},null,-1),j(" Zeitpläne ")]),8,os),u("a",{id:"prSettings"+r.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#priceSettings"+r.value},s[5]||(s[5]=[u("i",{class:"fa-solid fa-coins"},null,-1),j(" Strompreis ")]),8,ss)]),u("div",is,[u("div",{id:"chargeSettings"+r.value,class:"tab-pane active",role:"tabpanel","aria-labelledby":"instant-tab"},[b(jo,{"chargepoint-id":r.value},null,8,["chargepoint-id"])],8,ls),u("div",{id:"instantSettings"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"instant-tab"},[b(po,{"chargepoint-id":r.value},null,8,["chargepoint-id"])],8,cs),u("div",{id:"pvSettings"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"pv-tab"},[b(yo,{"chargepoint-id":r.value},null,8,["chargepoint-id"])],8,us),u("div",{id:"scheduledSettings"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"scheduled-tab"},[a.value!=null?(m(),T(Co,{key:0,"charge-template-id":e.chargepoint.chargeTemplate},null,8,["charge-template-id"])):M("",!0)],8,ds),u("div",{id:"timeSettings"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"time-tab"},[a.value!=null?(m(),T(Do,{key:0,"charge-template-id":e.chargepoint.chargeTemplate},null,8,["charge-template-id"])):M("",!0)],8,hs),u("div",{id:"priceSettings"+r.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},[i(X).active?(m(),T(Xo,{key:0,"charge-point-id":e.chargepoint.id},null,8,["charge-point-id"])):M("",!0)],8,ps)])]))}}),ms=U(gs,[["__scopeId","data-v-06d2c4a9"]]);function vs(t,e){t=="openWB/graph/boolDisplayLiveGraph"?z.displayLiveGraph=+e==1:t.match(/^openwb\/graph\/alllivevaluesJson[1-9][0-9]*$/i)?fs(t,e):t=="openWB/graph/lastlivevaluesJson"?ys(t,e):t=="openWB/graph/config/duration"&&(Z.duration=JSON.parse(e))}function fs(t,e){if(!Z.initialized){let a=[];const r=e.toString().split(`
+`);r.length>1?a=r.map(d=>JSON.parse(d)):a=[];const n=t.match(/(\d+)$/g),s=n?n[0]:"";s!=""&&typeof Z.rawDataPacks[+s-1]>"u"&&(Z.rawDataPacks[+s-1]=a,Z.initCounter++)}if(Z.initCounter==16){const a=[];Z.unsubscribeRefresh(),Z.initialized=!0,Z.rawDataPacks.map(r=>{r.map(n=>{const s=Kt(n);a.push(s)})}),Fe(a),Z.subscribeUpdates()}}function ys(t,e){const a=JSON.parse(e),r=Kt(a);Z.graphRefreshCounter++,Fe(h.data.concat(r)),Z.graphRefreshCounter>60&&Z.activate()}function Kt(t){const e=Object.values(w).length>0?Object.values(w)[0].connectedVehicle:0,a=Object.values(w).length>1?Object.values(w)[1].connectedVehicle:1,r="ev"+e+"-soc",n="ev"+a+"-soc",s={};s.date=bs(t.time).valueOf(),+t.grid>0?(s.evuIn=+t.grid,s.evuOut=0):+t.grid<=0?(s.evuIn=0,s.evuOut=-t.grid):(s.evuIn=0,s.evuOut=0),+t["pv-all"]>=0?(s.pv=+t["pv-all"],s.inverter=0):(s.pv=0,s.inverter=-t["pv-all"]),s.house=+t["house-power"],+t["bat-all-power"]>0?(s.batOut=0,s.batIn=+t["bat-all-power"]):+t["bat-all-power"]<0?(s.batOut=-t["bat-all-power"],s.batIn=0):(s.batOut=0,s.batIn=0),t["bat-all-soc"]?s.batSoc=+t["bat-all-soc"]:s.batSoc=0,t[r]&&(s["soc"+e]=+t[r]),t[n]&&(s["soc"+a]=+t[n]),s.charging=+t["charging-all"];for(let d=0;d<10;d++){const c="cp"+d;s[c]=+(t[c+"-power"]??0)}return s.selfUsage=s.pv-s.evuOut,s.selfUsage<0&&(s.selfUsage=0),s.devices=0,s}function bs(t){const e=new Date(Date.now()),a=864e5;let r=new Date;const n=Xe("%H:%M:%S")(t);return n&&(r=n,r.setDate(e.getDate()),r.setMonth(e.getMonth()),r.setFullYear(e.getFullYear()),r.getHours()>e.getHours()&&(r=new Date(r.getTime()-a))),r}const _s=["evuIn","pv","batIn","evuOut"];let rt=[];function ws(t,e){const a=JSON.parse(e).entries,r=JSON.parse(e).totals;_t(),rt=[],wt.map(s=>{P.setEnergyPv(s,0),P.setEnergyBat(s,0)});const n=Ss(a);Fe(n),St(r,rt),f.debug&&(console.debug("---------------------------------------- Graph Data ---------------------------"),console.debug("--- Incoming graph data:"),console.debug(a),console.debug("data to be displayed:"),console.debug(n),console.debug("-------------------------------------------------------------------------------")),h.graphMode=="today"&&setTimeout(()=>J.activate(),3e5)}function Ss(t){const e=[];let a={};return t.map(r=>{a=ks(r);const n=a;e.push(n)}),e}function ks(t){const e={};if(h.graphMode=="day"||h.graphMode=="today")if(typeof t.date=="number")e.date=new Date(+t.date*1e3).getTime();else{const r=Xe("%H:%M")(t.date);r&&(r.setMonth(J.date.getMonth()),r.setDate(J.date.getDate()),r.setFullYear(J.date.getFullYear()),e.date=r.getTime())}else if(typeof t.date=="string"){const r=Xe("%Y%m%d")(t.date);r&&(e.date=r.getDate())}return e.evuOut=0,e.evuIn=0,Object.entries(t.counter).forEach(([r,n])=>{n.grid&&(e.evuOut+=n.power_exported,e.evuIn+=n.power_imported,rt.includes(r)||rt.push(r))}),e.evuOut==0&&e.evuIn==0&&Object.entries(t.counter).forEach(r=>{e.evuOut+=r[1].power_exported,e.evuIn+=r[1].power_imported}),e.pv=t.pv.all.power_exported,Object.entries(t.bat).length>0?(e.batIn=t.bat.all.power_imported,e.batOut=t.bat.all.power_exported,e.batSoc=t.bat.all.soc??0):(e.batIn=0,e.batOut=0,e.batSoc=0),Object.entries(t.cp).forEach(([r,n])=>{r!="all"?(e[r]=n.power_imported,P.keys().includes(r)||P.addItem(r)):e.charging=n.power_imported}),Object.entries(t.ev).forEach(([r,n])=>{r!="all"&&(e["soc"+r.substring(2)]=n.soc)}),e.devices=0,Object.entries(t.sh).forEach(([r,n])=>{r!="all"&&(e[r]=n.power_imported??0,e.devices+=n.power_imported??0,P.keys().includes(r)||P.addItem(r))}),e.selfUsage=e.pv-e.evuOut,t.hc&&t.hc.all?e.house=t.hc.all.power_imported:e.house=e.evuIn+e.batOut+e.pv-e.evuOut-e.charging-e.devices-e.batOut,e.evuIn+e.batOut+e.pv>0?P.keys().filter(r=>!_s.includes(r)).map(r=>{xr(r,e)}):Object.keys(e).map(r=>{e[r+"Pv"]=0,e[r+"Bat"]=0}),e}let He={};const xt=["charging","house","batIn","devices"],xs=["evuIn","pv","batIn","evuOut"];let Ne=[];function Ms(t,e){const a=JSON.parse(e).entries,r=JSON.parse(e).totals;_t(),Ne=[],xt.map(n=>{P.items[n].energyPv=0,P.items[n].energyBat=0}),a.length>0&&Fe(ea(a)),St(r,[])}function Ps(t,e){const a=JSON.parse(e).entries,r=JSON.parse(e).totals;_t(),Ne=[],xt.forEach(n=>{P.items[n].energyPv=0,P.items[n].energyBat=0}),Fe(ea(a)),St(r,[])}function ea(t){const e=[];let a={};return He={},t.map(r=>{a=Cs(r),e.push(a),Object.keys(a).forEach(n=>{n!="date"&&(a[n]<0&&(console.warn(`Negative energy value for ${n} in row ${a.date}. Ignoring the value.`),a[n]=0),He[n]?He[n]+=a[n]:He[n]=a[n])})}),e}function Cs(t){const e={},a=Xe("%Y%m%d")(t.date);a&&(e.date=h.graphMode=="month"?a.getDate():a.getMonth()+1),e.evuOut=0,e.evuIn=0;let r=0,n=0;return Object.entries(t.counter).forEach(([d,c])=>{r+=c.energy_exported,n+=c.energy_imported,c.grid&&(e.evuOut+=c.energy_exported,e.evuIn+=c.energy_imported,Ne.includes(d)||Ne.push(d))}),Ne.length==0&&(e.evuOut=r,e.evuIn=n),e.pv=t.pv.all.energy_exported,Object.entries(t.bat).length>0?(t.bat.all.energy_imported>=0?e.batIn=t.bat.all.energy_imported:(console.warn("ignoring negative value for batIn on day "+e.date),e.batIn=0),t.bat.all.energy_exported>=0?e.batOut=t.bat.all.energy_exported:(console.warn("ignoring negative value for batOut on day "+e.date),e.batOut=0)):(e.batIn=0,e.batOut=0),Object.entries(t.cp).forEach(([d,c])=>{d!="all"?(P.keys().includes(d)||P.addItem(d),e[d]=c.energy_imported):e.charging=c.energy_imported}),Object.entries(t.ev).forEach(([d,c])=>{d!="all"&&(e["soc-"+d]=c.soc)}),e.devices=Object.entries(t.sh).reduce((d,c)=>(P.keys().includes(c[0])||P.addItem(c[0]),c[1].energy_imported>=0?d+=c[1].energy_imported:console.warn(`Negative energy value for device ${c[0]} in row ${e.date}. Ignoring this value`),d),0),e.house=e.pv+e.evuIn+e.batOut-e.evuOut-e.batIn-e.charging,e.selfUsage=e.pv-e.evuOut,e.evuIn+e.batOut+e.pv>0?P.keys().filter(d=>!xs.includes(d)).map(d=>{Mr(d,e)}):xt.map(d=>{e[d+"Pv"]=0,e[d+"Bat"]=0}),e}class Is{constructor(e){l(this,"id");l(this,"dailyYieldExport",0);l(this,"dailyYieldImport",0);l(this,"exported",0);l(this,"faultState",0);l(this,"faultStr","");l(this,"imported",0);l(this,"power",0);l(this,"soc",0);this.id=e}}class $s{constructor(){l(this,"dailyExport",0);l(this,"dailyImport",0);l(this,"exported",0);l(this,"imported",0);l(this,"power",0);l(this,"soc",0)}}const le=F({});F(new $s);function Os(t){t in le?console.info("Duplicate battery message: "+t):le[t]=new Is(t)}function Bs(){Object.keys(le).forEach(t=>{delete le[parseInt(t)]})}function Ts(t,e){const a=As(t);if(a&&!(a in le)){console.warn("Invalid battery index received: "+a);return}t=="openWB/bat/config/configured"?z.isBatteryConfigured=e=="true":t=="openWB/bat/get/power"?+e>0?($.batIn.power=+e,W.batOut.power=0):($.batIn.power=0,W.batOut.power=-e):t=="openWB/bat/get/soc"?z.batterySoc=+e:t=="openWB/bat/get/daily_exported"?W.batOut.energy=+e:t=="openWB/bat/get/daily_imported"?$.batIn.energy=+e:a&&(t.match(/^openwb\/bat\/[0-9]+\/get\/daily_yield_export$/i)?le[a].dailyYieldExport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/daily_yield_import$/i)?le[a].dailyYieldImport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/exported$/i)?le[a].exported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_state$/i)?le[a].faultState=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_str$/i)?le[a].faultStr=e:t.match(/^openwb\/bat\/[0-9]+\/get\/imported$/i)?le[a].imported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/power$/i)?le[a].power=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/soc$/i)&&(le[a].soc=+e))}function As(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Vs(t,e){if(t=="openWB/optional/et/provider")JSON.parse(e).type==null?X.active=!1:(X.active=!0,X.etProvider=JSON.parse(e).name);else if(t=="openWB/optional/et/get/prices"){const a=JSON.parse(e);X.etPriceList=new Map,Object.keys(a).map(r=>{X.etPriceList.set(new Date(+r*1e3),a[r]*1e5)})}}function Ls(t,e){const a=ta(t);if(a&&!(a in w)){console.warn("Invalid chargepoint id received: "+a);return}if(t=="openWB/chargepoint/get/power"?$.charging.power=+e:t=="openWB/chargepoint/get/daily_imported"&&($.charging.energy=+e),t=="openWB/chargepoint/get/daily_exported")z.cpDailyExported=+e;else if(a){if(t.match(/^openwb\/chargepoint\/[0-9]+\/config$/i))if(w[a]){const r=JSON.parse(e);w[a].name=r.name,w[a].icon=r.name,oe["cp"+a]?(oe["cp"+a].name=r.name,oe["cp"+a].icon=r.name):oe["cp"+a]={name:r.name,icon:r.name,color:"var(--color-charging)"}}else console.warn("invalid chargepoint index: "+a);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/state_str$/i))w[a].stateStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_str$/i))w[a].faultStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_state$/i))w[a].faultState=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/power$/i))w[a].power=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/daily_imported$/i))w[a].dailyYield=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/plug_state$/i))w[a].isPluggedIn=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/charge_state$/i))w[a].isCharging=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/manual_lock$/i))w[a].updateIsLocked(e=="true");else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/enabled$/i))w[a].isEnabled=e=="1";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/phases_in_use/i))w[a].phasesInUse=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/current/i))w[a].current=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/currents/i))w[a].currents=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/log/i)){const r=JSON.parse(e);w[a].chargedSincePlugged=r.imported_since_plugged}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/soc$/i)){const r=JSON.parse(e);w[a].soc=r.soc,w[a].waitingForSoc=!1,w[a].rangeCharged=r.range_charged,w[a].rangeUnit=r.range_unit}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/info$/i)){const r=JSON.parse(e);w[a].vehicleName=String(r.name),w[a].updateConnectedVehicle(+r.id)}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/config$/i)){const r=JSON.parse(e);switch(r.chargemode){case"instant_charging":w[a].updateChargeMode(me.instant_charging);break;case"pv_charging":w[a].updateChargeMode(me.pv_charging);break;case"scheduled_charging":w[a].updateChargeMode(me.scheduled_charging);break;case"standby":w[a].updateChargeMode(me.standby);break;case"stop":w[a].updateChargeMode(me.stop);break}w[a].chargeTemplate=r.charge_template,w[a].averageConsumption=r.average_consumption}}}function Ds(t,e){const a=ta(t);if(a!=null){if(!(a in N)){const r=new Ma(a);N[a]=r}if(t.match(/^openwb\/vehicle\/[0-9]+\/name$/i))Object.values(w).forEach(r=>{r.connectedVehicle==a&&(r.vehicleName=JSON.parse(e))}),N[a].name=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/soc$/i))N[a].soc=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/range$/i))isNaN(+e)?N[a].range=0:N[a].range=+e;else if(t.match(/^openwb\/vehicle\/[0-9]+\/charge_template$/i))N[a].updateChargeTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/ev_template$/i))N[a].updateEvTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/soc_module\/config$/i)){const r=JSON.parse(e);Object.values(w).forEach(n=>{n.connectedVehicle==a&&(n.isSocConfigured=r.type!==null,n.isSocManual=r.type=="manual")})}}}function Es(t,e){if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const r=+a[0],n=JSON.parse(e);ie[r]=n,Gs(r,n)}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/time_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),r=t.match(/[0-9]+$/i);if(a&&r){const n=+a[0].replace(/[^0-9]+/g,""),s=+r[0],d=JSON.parse(e);n in We||(We[n]=[]),We[n][s]=d}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/chargemode\/scheduled_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),r=t.match(/[0-9]+$/i);if(a&&r){const n=+a[0].replace(/[^0-9]+/g,""),s=+r[0],d=JSON.parse(e);n in Ge||(Ge[n]=[]),Ge[n][s]=d}}else if(t.match(/^openwb\/vehicle\/template\/ev_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const r=+a[0],n=JSON.parse(e);Pa[r]=n}}}function Gs(t,e){Object.values(w).forEach(a=>{a.chargeTemplate==t&&(a.updateCpPriority(e.prio),a.updateInstantChargeLimitMode(e.chargemode.instant_charging.limit.selected),a.updateInstantTargetCurrent(e.chargemode.instant_charging.current),a.updateInstantTargetSoc(e.chargemode.instant_charging.limit.soc),a.updateInstantMaxEnergy(e.chargemode.instant_charging.limit.amount),a.updatePvFeedInLimit(e.chargemode.pv_charging.feed_in_limit),a.updatePvMinCurrent(e.chargemode.pv_charging.min_current),a.updatePvMaxSoc(e.chargemode.pv_charging.max_soc),a.updatePvMinSoc(e.chargemode.pv_charging.min_soc),a.updatePvMinSocCurrent(e.chargemode.pv_charging.min_soc_current))})}function ta(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Ws(t,e){t.match(/^openWB\/LegacySmarthome\/config\//i)?js(t,e):t.match(/^openWB\/LegacySmarthome\/Devices\//i)&&Ns(t,e)}function js(t,e){const a=aa(t);a!=null&&(a in E||Rt(a),t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_configured$/i)?E[a].configured=e!="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_name$/i)?(E[a].name=e.toString(),E[a].icon=e.toString(),oe["sh"+a].name=e.toString(),oe["sh"+a].icon=e.toString()):t.match(/^openWB\/LegacySmarthome\/config\/set\/Devices\/[0-9]+\/mode$/i)?E[a].isAutomatic=e=="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_canSwitch$/i)?E[a].canSwitch=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_homeConsumtion$/i)?E[a].countAsHouse=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_temperatur_configured$/i)&&(E[a].tempConfigured=+e))}function Ns(t,e){const a=aa(t);if(a==null){console.warn("Smarthome: Missing index in "+t);return}if(a in E||Rt(a),t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Watt$/i))E[a].power=+e,Us("power");else if(!t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Wh$/i)){if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/RunningTimeToday$/i))E[a].runningTime=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor0$/i))E[a].temp[0]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor1$/i))E[a].temp[1]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor2$/i))E[a].temp[2]=+e;else if(t.match(/^openWB\/LegacySmartHome\/Devices\/[0-9]+\/Status$/i))switch(+e){case 10:E[a].status="off";break;case 11:E[a].status="on";break;case 20:E[a].status="detection";break;case 30:E[a].status="timeout";break;default:E[a].status="off"}}}function Us(t){switch(t){case"power":$.devices.power=Object.values(E).filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.power,0);break;case"energy":$.devices.energy=Object.values(E).filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.energy,0);break;default:console.error("Unknown category")}}function aa(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}class zs{constructor(e){l(this,"id");l(this,"name","Zähler");l(this,"power",0);l(this,"energy_imported",0);l(this,"energy_exported",0);l(this,"grid",!1);l(this,"type","counter");l(this,"color","var(--color-evu)");l(this,"energyPv",0);l(this,"energyBat",0);l(this,"pvPercentage",0);l(this,"icon","");this.id=e}}const de=F({});function Fs(t,e){if(t in de)console.info("Duplicate counter message: "+t);else switch(de[t]=new zs(t),de[t].type=e,e){case"counter":de[t].color="var(--color-evu)";break;case"inverter":de[t].color="var(--color-pv)";break;case"cp":de[t].color="var(--color-charging)";break;case"bat":de[t].color="var(--color-bat)";break}}const Js=["openWB/counter/#","openWB/bat/#","openWB/pv/get/#","openWB/chargepoint/#","openWB/vehicle/#","openWB/general/chargemode_config/pv_charging/#","openWB/optional/et/#","openWB/system/#","openWB/LegacySmartHome/#","openWB/command/"+yt()+"/#","openWB/optional/int_display/#"];function Rs(){ka(Hs),Js.forEach(t=>{Te(t)}),K()}function Hs(t,e){const a=e.toString();t.match(/^openwb\/counter\/[0-9]+\//i)?Ys(t,a):t.match(/^openwb\/counter\//i)?qs(t,a):t.match(/^openwb\/bat\//i)?Ts(t,a):t.match(/^openwb\/pv\//i)?Qs(t,a):t.match(/^openwb\/chargepoint\//i)?Ls(t,a):t.match(/^openwb\/vehicle\/template\//i)?Es(t,a):t.match(/^openwb\/vehicle\//i)?Ds(t,a):t.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)?Zs(t,a):t.match(/^openwb\/graph\//i)?vs(t,a):t.match(/^openwb\/log\/daily\//i)?ws(t,a):t.match(/^openwb\/log\/monthly\//i)?Ms(t,a):t.match(/^openwb\/log\/yearly\//i)?Ps(t,a):t.match(/^openwb\/optional\/et\//i)?Vs(t,a):t.match(/^openwb\/system\//i)?Ks(t,a):t.match(/^openwb\/LegacySmartHome\//i)?Ws(t,a):t.match(/^openwb\/command\//i)?ei(t,a):t.match(/^openwb\/optional\//i)&&ti(t,a)}function Ys(t,e){const a=t.split("/"),r=+a[2];if(r==z.evuId?Xs(t,e):a[3]=="config",a[3]=="get"&&r in de)switch(a[4]){case"power":de[r].power=+e;break;case"config":break;case"fault_str":break;case"fault_state":break;case"power_factors":break;case"imported":break;case"exported":break;case"frequency":break;case"daily_imported":de[r].energy_imported=+e;break;case"daily_exported":de[r].energy_exported=+e;break}}function qs(t,e){if(t.match(/^openwb\/counter\/get\/hierarchy$/i)){const a=JSON.parse(e);if(a.length){Ia(),Bs();for(const r of a)r.type=="counter"&&(z.evuId=r.id);ra(a[0])}}else t.match(/^openwb\/counter\/set\/home_consumption$/i)?($.house.power=+e,Aa()):t.match(/^openwb\/counter\/set\/daily_yield_home_consumption$/i)&&($.house.energy=+e)}function ra(t){switch(t.type){case"counter":Fs(t.id,t.type);break;case"cp":Ca(t.id);break;case"bat":Os(t.id);break}t.children.forEach(e=>ra(e))}function Qs(t,e){switch(t){case"openWB/pv/get/power":W.pv.power=-e;break;case"openWB/pv/get/daily_exported":W.pv.energy=+e;break}}function Zs(t,e){const a=t.split("/");if(a.length>0)switch(a[4]){case"bat_mode":z.updatePvBatteryPriority(JSON.parse(e));break}}function Xs(t,e){switch(t.split("/")[4]){case"power":+e>0?(W.evuIn.power=+e,$.evuOut.power=0):(W.evuIn.power=0,$.evuOut.power=-e);break;case"daily_imported":W.evuIn.energy=+e;break;case"daily_exported":$.evuOut.energy=+e;break}}function Ks(t,e){if(t.match(/^openWB\/system\/device\/[0-9]+\/component\/[0-9]+\/config$/i)){const a=JSON.parse(e);a.type=="counter"&&(de[a.id].name=a.name)}else t.match(/^openWB\/system\/ip_address$/i)?z.ipAddress=JSON.parse(e):t.match(/^openWB\/system\/time$/i)?z.systemTime=JSON.parse(e):t.match(/^openWB\/system\/version$/i)?z.version=JSON.parse(e):t.match(/^openWB\/system\/current_commit$/i)?z.versionDetails=JSON.parse(e):t.match(/^openWB\/system\/current_branch$/i)&&(z.devBranch=JSON.parse(e))}function ei(t,e){const a=t.split("/");if(t.match(/^openWB\/command\/[a-z]+\/error$/i)&&a[2]==yt()){const r=JSON.parse(e);console.error(`Error message from openWB: 
+Command: ${r.command}
+Data: JSON.stringify(err.data)
+Error:
+ ${r.error}`)}}function ti(t,e){if(t.match(/^openwb\/optional\/int_display\/active$/i))ae.active=JSON.parse(e);else if(t.match(/^openwb\/optional\/int_display\/only_local_charge_points$/i))ae.localCpOnly=JSON.parse(e);else if(t.match(/^openwb\/optional\/int_display\/theme$/i)){const a=JSON.parse(e);ae.usePin=a.configuration.lock_changes,ae.code=a.configuration.lock_changes_code}}const ai={class:"d-flex flex-column align-items-center justify-content-start infoitem"},ri=A({__name:"InfoItem",props:{heading:{},small:{type:Boolean}},setup(t){const e=t,a=g(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-small)"}),r=g(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-normal)"}),n=g(()=>e.small?"mt-0":"mt-1");return(s,d)=>(m(),_("span",ai,[u("span",{class:te(["d-flex heading scaled",n.value]),style:re(a.value)},C(e.heading),7),u("span",{class:"d-flex my-0 me-0 align-items-center content scaled",style:re(r.value)},[ge(s.$slots,"default",{},void 0)],4)]))}}),ce=U(ri,[["__scopeId","data-v-9215fd9b"]]),ni=A({__name:"FormatWattH",props:{wattH:{}},setup(t){const e=t,a=g(()=>jt(e.wattH,f.decimalPlaces));return(r,n)=>(m(),_("span",null,C(a.value),1))}}),oi=A({__name:"BatterySymbol",props:{soc:{}},setup(t){const e=t,a=g(()=>e.soc<=12?"fa-battery-empty":e.soc<38?"fa-battery-quarter":e.soc<63?"fa-battery-half":e.soc<89?"fa-battery-three-quarters":"fa-battery-full");return(r,n)=>(m(),_("span",null,[u("i",{class:te(["fa batIcon",a.value])},null,2),j(" "+C(Math.round(r.soc)+"%"),1)]))}}),si=U(oi,[["__scopeId","data-v-fc156cd3"]]),ii={class:"subgrid justify-content-left"},li={class:"titleline grid-col-12 d-flex justify-content-left mb-3"},ci={class:"carname d-flex justify-content-left align-items-center px-2"},ui={key:0,class:"ms-2 me-0 fa-solid fa-xs fa-star ps-1"},di={key:1,class:"ms-2 me-0 fa-solid fa-xs fa-coins ps-0"},hi={key:0,class:"me-1 fa-solid fa-xs fa-clock ps-1"},pi={class:"maxprice"},gi={key:1},mi=A({__name:"CPVehicle",props:{chargepoint:{}},setup(t){const e=t,a=ve(e.chargepoint),r=g(()=>e.chargepoint.soc),n=g({get(){return e.chargepoint.chargeMode},set(o){ae.locked?tt():w[e.chargepoint.id].chargeMode=o}}),s=g(()=>{const[o]=X.etPriceList.values();return(Math.round(o*10)/10).toFixed(1)});function d(o=""){ae.locked&&tt(),new ft("#settingspage").toggle();let v=o;if(o=="")switch(e.chargepoint.chargeMode){case"instant_charging":v="#inSettings";break;case"pv_charging":v="#phvSettings";break;case"scheduled_charging":v="#scSettings";break;default:v="#chSettings"}const I=document.querySelector(v+e.chargepoint.id);if(I){var k=new Wt(I);k.show()}else console.error("no element found")}const c=g(()=>e.chargepoint.etMaxPrice>=+s.value?{color:"var(--color-charging)"}:{color:"var(--color-menu)"});return(o,p)=>(m(),_("div",ii,[u("div",li,[b(be,{onClick:p[0]||(p[0]=v=>d("#chSettings"))},{default:x(()=>[u("div",ci,[p[4]||(p[4]=u("i",{class:"fa-solid fa-sm fa-car me-3"},null,-1)),j(" "+C(o.chargepoint.vehicleName)+" ",1),o.chargepoint.hasPriority?(m(),_("span",ui)):M("",!0),o.chargepoint.etActive?(m(),_("span",di)):M("",!0)])]),_:1})]),o.chargepoint.isSocConfigured?(m(),T(ce,{key:0,heading:"Ladestand:",class:"grid-col-4 grid-left"},{default:x(()=>[b(si,{soc:r.value,class:"me-2"},null,8,["soc"])]),_:1})):M("",!0),o.chargepoint.isSocConfigured?(m(),T(ce,{key:1,heading:"Reichweite:",class:"grid-col-4"},{default:x(()=>[j(C(i(N)[e.chargepoint.connectedVehicle]?Math.round(i(N)[e.chargepoint.connectedVehicle].range):0)+" km ",1)]),_:1})):M("",!0),b(ce,{heading:"Zeitplan:",class:"grid-col-4 grid-right"},{default:x(()=>[o.chargepoint.timedCharging?(m(),_("span",hi)):M("",!0),j(" "+C(e.chargepoint.timedCharging?"Ja":"Nein"),1)]),_:1}),i(X).active?(m(),T(ce,{key:2,heading:"Preisladen:",class:"grid-col-4 grid-left"},{default:x(()=>[b(he,{modelValue:a.value.etActive,"onUpdate:modelValue":p[1]||(p[1]=v=>a.value.etActive=v)},null,8,["modelValue"])]),_:1})):M("",!0),i(X).active?(m(),T(ce,{key:3,heading:"max. Preis:",class:"grid-col-4"},{default:x(()=>[a.value.etActive?(m(),T(be,{key:0,onClick:p[2]||(p[2]=v=>d("#prSettings"))},{default:x(()=>[u("span",pi,C(e.chargepoint.etActive?(Math.round(e.chargepoint.etMaxPrice*10)/10).toFixed(1)+" ct":"-"),1)]),_:1})):(m(),_("span",gi,"-"))]),_:1})):M("",!0),i(X).active?(m(),T(ce,{key:4,heading:"akt. Preis:",class:"grid-col-4 grid-right"},{default:x(()=>[u("span",{style:re(c.value)},C(s.value)+" ct ",5)]),_:1})):M("",!0),b(Zt,{id:"chargemode-"+o.chargepoint.name,modelValue:n.value,"onUpdate:modelValue":p[3]||(p[3]=v=>n.value=v),class:"chargemodes mx-3 mt-4 mb-0",options:Object.keys(i(Le)).map(v=>({text:i(Le)[v].name,value:v,color:i(Le)[v].color,icon:i(Le)[v].icon,active:i(Le)[v].mode==o.chargepoint.chargeMode}))},null,8,["id","modelValue","options"])]))}}),vi=U(mi,[["__scopeId","data-v-17a63962"]]),fi={class:"subgrid"},yi={class:"targetCurrent"},bi=A({__name:"CPChargePoint",props:{chargepoint:{}},setup(t){const e=t,a=g(()=>(Math.round(e.chargepoint.current*10)/10).toLocaleString(void 0)+" A"),r=g(()=>(Math.round(e.chargepoint.realCurrent*10)/10).toLocaleString(void 0)+" A"),n=g(()=>{const v=e.chargepoint.rangeCharged,I=e.chargepoint.chargedSincePlugged,k=e.chargepoint.dailyYield;return I>0?Math.round(v/I*k).toString()+" "+e.chargepoint.rangeUnit:"0 km"}),s=g(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei"),d=g(()=>e.chargepoint.isLocked?"var(--color-evu)":e.chargepoint.isCharging?"var(--color-charging)":e.chargepoint.isPluggedIn?"var(--color-battery)":"var(--color-axis)"),c=g(()=>{let v="";return e.chargepoint.isLocked?v="fa-lock":e.chargepoint.isCharging?v=" fa-bolt":e.chargepoint.isPluggedIn&&(v="fa-plug"),"fa "+v}),o=g(()=>({color:e.chargepoint.color}));function p(){ae.locked&&tt(),new ft("#settingspage").toggle();let I="";switch(e.chargepoint.chargeMode){case"instant_charging":I="#inSettings";break;case"pv_charging":I="#phvSettings";break;case"scheduled_charging":I="#scSettings";break;default:I="#chSettings"}const k=document.querySelector(I+e.chargepoint.id);if(k){var R=new Wt(k);R.show()}else console.error("no element found")}return(v,I)=>(m(),T(st,null,{title:x(()=>[u("span",{style:re(o.value)},[I[0]||(I[0]=u("span",{class:"fa-solid fa-charging-station"}," ",-1)),j(" "+C(e.chargepoint.name),1)],4)]),buttons:x(()=>[b(be,{color:"var(--color-cp0)",icon:"fa-edit",onClick:p},{default:x(()=>I[1]||(I[1]=[j(" Einstellungen")])),_:1})]),footer:x(()=>[b(vi,{chargepoint:e.chargepoint},null,8,["chargepoint"])]),default:x(()=>[u("div",fi,[b(ce,{heading:"Status:",class:"grid-col-4 grid-left"},{default:x(()=>[u("span",{style:re({color:d.value})},[u("i",{class:te(c.value)},null,2),j(" "+C(s.value),1)],4)]),_:1}),b(ce,{heading:"Geladen:",class:"grid-col-4"},{default:x(()=>[b(ni,{"watt-h":v.chargepoint.dailyYield},null,8,["watt-h"])]),_:1}),b(ce,{heading:"gel. Reichw.:",class:"grid-col-4 grid-right"},{default:x(()=>[j(C(n.value),1)]),_:1}),e.chargepoint.power>0?(m(),T(ce,{key:0,heading:"Leistung:",class:"grid-col-3 grid-left"},{default:x(()=>[b(Ht,{watt:e.chargepoint.power},null,8,["watt"])]),_:1})):M("",!0),e.chargepoint.power>0?(m(),T(ce,{key:1,heading:"Strom:",class:"grid-col-3"},{default:x(()=>[j(C(r.value),1)]),_:1})):M("",!0),e.chargepoint.power>0?(m(),T(ce,{key:2,heading:"Phasen:",class:"grid-col-3"},{default:x(()=>[j(C(e.chargepoint.phasesInUse),1)]),_:1})):M("",!0),e.chargepoint.power>0?(m(),T(ce,{key:3,heading:"Sollstrom:",class:"grid-col-3 grid-right"},{default:x(()=>[u("span",yi,C(a.value),1)]),_:1})):M("",!0)])]),_:1}))}}),_i=U(bi,[["__scopeId","data-v-795d5c8f"]]),wi={class:"content"},Si={class:"leftside"},ki={class:"rightside"},xi={class:"settingstitle"},Mi=A({__name:"DisplayTheme",setup(t){function e(r){Ta(r)&&(ae.locked=!1,setTimeout(()=>{ae.locked=!0},ae.timeout*1e3))}nt(()=>{window.addEventListener("resize",Wa),window.addEventListener("focus",a),Rs()});function a(){document.hasFocus()&&K()}return(r,n)=>(m(),_(we,null,[u("div",wi,[u("div",Si,[Ee(u("div",null,[b(_r)],512),[[it,i(f).graphToShow=="powermeter"]]),Ee(u("div",null,[b(nn)],512),[[it,i(f).graphToShow=="powergraph"]]),Ee(u("div",null,[b(On)],512),[[it,i(f).graphToShow=="energymeter"]])]),u("div",ki,[Object.values(i(w)).length>i(f).cpToShow?(m(),T(_i,{key:0,chargepoint:Object.values(i(w))[i(f).cpToShow]},null,8,["chargepoint"])):M("",!0)])]),b(dt,{"modal-id":"numberpad"},{title:x(()=>n[0]||(n[0]=[j("Code")])),default:x(()=>[b(Fn,{"model-value":"","onUpdate:modelValue":e})]),_:1}),b(dt,{"modal-id":"statuspage"},{title:x(()=>n[1]||(n[1]=[u("span",{class:"statustitle"},"Systemstatus",-1)])),default:x(()=>[b(Hn)]),_:1}),Object.values(i(w)).length>i(f).cpToShow?(m(),T(dt,{key:0,"modal-id":"settingspage"},{title:x(()=>[u("span",xi,"Einstellungen für "+C(Object.values(i(w))[i(f).cpToShow].vehicleName)+" an Ladepunkt "+C(Object.values(i(w))[i(f).cpToShow].name),1)]),default:x(()=>[b(ms,{chargepoint:Object.values(i(w))[i(f).cpToShow]},null,8,["chargepoint"])]),_:1})):M("",!0)],64))}}),Pi=U(Mi,[["__scopeId","data-v-9f6c66b0"]]),Ci={class:"fixeddisplay"},Ii=A({__name:"App",setup(t){return(e,a)=>(m(),_("div",Ci,[b(Pi),b(Ha)]))}}),$i=U(Ii,[["__scopeId","data-v-75d14554"]]),Oi=ma($i);Oi.mount("#app");
diff --git a/packages/modules/display_themes/colors/web/assets/index-ScYbRoOj.js b/packages/modules/display_themes/colors/web/assets/index-ScYbRoOj.js
deleted file mode 100644
index 82307b3105..0000000000
--- a/packages/modules/display_themes/colors/web/assets/index-ScYbRoOj.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var ga=Object.defineProperty;var ma=(t,e,a)=>e in t?ga(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var c=(t,e,a)=>ma(t,typeof e!="symbol"?e+"":e,a);import{m as va,r as F,a as _e,M as St,d as A,o as g,c as b,n as ae,b as M,e as l,f as ve,g as ee,h as p,s as ye,i as lt,j as fa,k as y,w as x,u as i,l as T,t as $,p as W,q as ce,v as le,x as jt,y as Nt,z as _a,F as ke,A as Ae,B as Le,C as _t,D as Te,E as Ut,G as dt,H as at,I as je,J as Ke,K as yt,L as ya,N as Re,O as zt,P as ba,Q as wa,R as Ne,S as Sa,T as ka,U as Ft,V as xa,W as nt,X as Jt,Y as ht,Z as Ma}from"./vendor-B1GimsSk.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const u of o.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&n(u)}).observe(document,{childList:!0,subtree:!0});function a(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(r){if(r.ep)return;r.ep=!0;const o=a(r);fetch(r.href,o)}})();function et(t,e=1){let a;if(t>=1e3&&e<4){switch(e){case 0:a=Math.round(t/1e3);break;case 1:a=Math.round(t/100)/10;break;case 2:a=Math.round(t/10)/100;break;case 3:a=Math.round(t)/1e3;break;default:a=Math.round(t/100)/10;break}return(a==null?void 0:a.toLocaleString(void 0,{minimumFractionDigits:e}))+" kW"}else return Math.round(t).toLocaleString(void 0)+" W"}function Rt(t,e=1,a=!1){let n;if(t>1e6&&(a=!0,t=t/1e3),t>=1e3&&e<4){switch(e){case 0:n=Math.round(t/1e3);break;case 1:n=(Math.round(t/100)/10).toFixed(1);break;case 2:n=(Math.round(t/10)/100).toFixed(2);break;case 3:n=(Math.round(t)/1e3).toFixed(3);break;default:n=Math.round(t/100)/10;break}return n.toLocaleString(void 0,{minimumFractionDigits:e})+(a?" MWh":" kWh")}else return Math.round(t).toLocaleString(void 0)+(a?" kWh":" Wh")}function Pa(t){return t.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function $a(t,e){return["Jan","Feb","März","April","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Dez"][t]+" "+e}const Ia=0,Ht={host:location.hostname,port:location.protocol=="https:"?443:80,endpoint:"/ws",protocol:location.protocol=="https:"?"wss":"ws",connectTimeout:4e3,reconnectPeriod:4e3,clean:!1,clientId:Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,6)},rt={topic:"",qos:Ia};let he;const{host:Ca,port:Oa,endpoint:Ba,...Yt}=Ht,Ta=`${Yt.protocol}://${Ca}:${Oa}${Ba}`;try{he=va.connect(Ta,Yt),he.on("connect",()=>{console.info("MQTT connection successful.")}),he.on("disconnect",()=>{console.info("MQTT disconnected")}),he.on("error",t=>{console.error("MQTT connection failed: ",t)})}catch(t){console.error("MQTT connect error: ",t)}async function Aa(t){await qt(),he?he.on("message",t):console.error("MqttRegister: MQTT client not available")}async function Ve(t){rt.topic=t;const{topic:e,qos:a}=rt;await qt(),he.subscribe(e,{qos:a},n=>{if(n){console.error("MQTT Subscription error: "+n);return}})}function De(t){rt.topic=t;const{topic:e}=rt;he.unsubscribe(e,a=>{if(a){console.error("MQTT Unsubscribe from "+t+" failed: "+a);return}})}async function bt(t,e){let n=he.connected,r=0;for(;!n&&r<10;)console.warn("MQTT not connected. Waiting 0.1 seconds"),await Qt(100),n=he.connected,r+=1;if(r<10)try{he.publish(t,e,{qos:0},o=>{o&&console.warn("MQTT publish error: ",o),console.info("MQTT publish: Message sent: ["+t+"]("+e+")")})}catch(o){console.warn("MQTT publish: caught error: "+o)}else console.error("MQTT publish: Lost connection to MQTT server. Please reload the page")}function kt(){return Ht.clientId}const Bt=20;async function qt(){let t=he.connected,e=0;for(;!t&&e<Bt;)console.warn("MQTT not connected. Waiting 0.1 seconds"),await Qt(100),t=he.connected,e+=1;return new Promise((a,n)=>{e<Bt?a(!0):n(!1)})}function Qt(t){return new Promise(e=>setTimeout(e,t))}class Va{constructor(e){c(this,"id");c(this,"name","Ladepunkt");c(this,"icon","Ladepunkt");c(this,"type","");c(this,"ev",0);c(this,"template",0);c(this,"connectedPhases",0);c(this,"phase_1",0);c(this,"autoPhaseSwitchHw",!1);c(this,"controlPilotInterruptionHw",!1);c(this,"isEnabled",!0);c(this,"isPluggedIn",!1);c(this,"isCharging",!1);c(this,"_isLocked",!1);c(this,"_connectedVehicle",0);c(this,"chargeTemplate",0);c(this,"evTemplate",0);c(this,"_chargeMode","pv_charging");c(this,"_hasPriority",!1);c(this,"currentPlan","");c(this,"averageConsumption",0);c(this,"vehicleName","");c(this,"rangeCharged",0);c(this,"rangeUnit","");c(this,"counter",0);c(this,"dailyYield",0);c(this,"energyPv",0);c(this,"energyBat",0);c(this,"pvPercentage",0);c(this,"faultState",0);c(this,"faultStr","");c(this,"phasesInUse",0);c(this,"power",0);c(this,"chargedSincePlugged",0);c(this,"stateStr","");c(this,"current",0);c(this,"currents",[0,0,0]);c(this,"phasesToUse",0);c(this,"isSocConfigured",!0);c(this,"isSocManual",!1);c(this,"waitingForSoc",!1);c(this,"color","white");c(this,"_timedCharging",!1);c(this,"_instantChargeLimitMode","");c(this,"_instantTargetCurrent",0);c(this,"_instantTargetSoc",0);c(this,"_instantMaxEnergy",0);c(this,"_pvFeedInLimit",!1);c(this,"_pvMinCurrent",0);c(this,"_pvMaxSoc",101);c(this,"_pvMinSoc",0);c(this,"_pvMinSocCurrent",0);c(this,"_etActive",!1);c(this,"_etMaxPrice",20);this.id=e}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e,q("cpLock",e,this.id)}updateIsLocked(e){this._isLocked=e}get connectedVehicle(){return this._connectedVehicle}set connectedVehicle(e){this._connectedVehicle=e,q("cpVehicle",e,this.id)}updateConnectedVehicle(e){this._connectedVehicle=e}get soc(){return j[this.connectedVehicle]?j[this.connectedVehicle].soc:0}set soc(e){j[this.connectedVehicle]&&(j[this.connectedVehicle].soc=e)}get chargeMode(){return this._chargeMode}set chargeMode(e){this._chargeMode=e,q("chargeMode",e,this.id)}updateChargeMode(e){this._chargeMode=e}get hasPriority(){return this._hasPriority}set hasPriority(e){this._hasPriority=e,q("cpPriority",e,this.id)}updateCpPriority(e){this._hasPriority=e}get timedCharging(){return ie[this.chargeTemplate]?ie[this.chargeTemplate].time_charging.active:!1}set timedCharging(e){ie[this.chargeTemplate].time_charging.active=e,q("cpTimedCharging",e,this.chargeTemplate)}get instantTargetCurrent(){return this._instantTargetCurrent}set instantTargetCurrent(e){this._instantTargetCurrent=e,q("cpInstantTargetCurrent",e,this.id)}updateInstantTargetCurrent(e){this._instantTargetCurrent=e}get instantChargeLimitMode(){return this._instantChargeLimitMode}set instantChargeLimitMode(e){this._instantChargeLimitMode=e,q("cpInstantChargeLimitMode",e,this.id)}updateInstantChargeLimitMode(e){this._instantChargeLimitMode=e}get instantTargetSoc(){return this._instantTargetSoc}set instantTargetSoc(e){this._instantTargetSoc=e,q("cpInstantTargetSoc",e,this.id)}updateInstantTargetSoc(e){this._instantTargetSoc=e}get instantMaxEnergy(){return this._instantMaxEnergy}set instantMaxEnergy(e){this._instantMaxEnergy=e,q("cpInstantMaxEnergy",e,this.id)}updateInstantMaxEnergy(e){this._instantMaxEnergy=e}get pvFeedInLimit(){return this._pvFeedInLimit}set pvFeedInLimit(e){this._pvFeedInLimit=e,q("cpPvFeedInLimit",e,this.id)}updatePvFeedInLimit(e){this._pvFeedInLimit=e}get pvMinCurrent(){return this._pvMinCurrent}set pvMinCurrent(e){this._pvMinCurrent=e,q("cpPvMinCurrent",e,this.id)}updatePvMinCurrent(e){this._pvMinCurrent=e}get pvMaxSoc(){return this._pvMaxSoc}set pvMaxSoc(e){this._pvMaxSoc=e,q("cpPvMaxSoc",e,this.id)}updatePvMaxSoc(e){this._pvMaxSoc=e}get pvMinSoc(){return this._pvMinSoc}set pvMinSoc(e){this._pvMinSoc=e,q("cpPvMinSoc",e,this.id)}updatePvMinSoc(e){this._pvMinSoc=e}get pvMinSocCurrent(){return this._pvMinSocCurrent}set pvMinSocCurrent(e){this._pvMinSocCurrent=e,q("cpPvMinSocCurrent",e,this.id)}updatePvMinSocCurrent(e){this._pvMinSocCurrent=e}get realCurrent(){switch(this.phasesInUse){case 0:return 0;case 1:return this.currents[0];case 2:return(this.currents[0]+this.currents[1])/2;case 3:return(this.currents[0]+this.currents[1]+this.currents[2])/3;default:return 0}}get etActive(){return j[this.connectedVehicle]?j[this.connectedVehicle].etActive:!1}set etActive(e){j[this.connectedVehicle]&&(j[this.connectedVehicle].etActive=e)}get etMaxPrice(){return j[this.connectedVehicle].etMaxPrice??0}set etMaxPrice(e){console.log("Setting et max price needs to be implemented"),q("cpEtMaxPrice",Math.round(e*10)/1e6,this.id)}toPowerItem(){return{name:this.name,power:this.power,energy:this.dailyYield,energyPv:this.energyPv,energyBat:this.energyBat,pvPercentage:this.pvPercentage,color:this.color,icon:this.icon}}}class La{constructor(e){c(this,"id");c(this,"name","");c(this,"_chargeTemplateId",0);c(this,"_evTemplateId",0);c(this,"tags",[]);c(this,"config",{});c(this,"soc",0);c(this,"range",0);c(this,"_etActive",!1);c(this,"_etMaxPrice",20);this.id=e}get chargeTemplateId(){return this._chargeTemplateId}set chargeTemplateId(e){this._chargeTemplateId=e,q("vhChargeTemplateId",e,this.id)}updateChargeTemplateId(e){this._chargeTemplateId=e}get evTemplateId(){return this._evTemplateId}set evTemplateId(e){this._evTemplateId=e,q("vhEvTemplateId",e,this.id)}updateEvTemplateId(e){this._evTemplateId=e}get etActive(){return ie[this.chargeTemplateId]?ie[this.chargeTemplateId].et.active:!1}set etActive(e){ie[this.chargeTemplateId]&&q("priceCharging",e,this.chargeTemplateId)}get etMaxPrice(){if(ie[this.chargeTemplateId]&&ie[this.chargeTemplateId].et.active)return ie[this.chargeTemplateId].et.max_price*1e5}get chargepoint(){for(const e of Object.values(w))if(e.connectedVehicle==this.id)return e}}var fe=(t=>(t.instant_charging="instant_charging",t.pv_charging="pv_charging",t.scheduled_charging="scheduled_charging",t.standby="standby",t.stop="stop",t))(fe||{});const w=F({}),j=F({}),ie=F({}),Ue=F({}),ze=F({}),Da=F({});function Ea(t){t in w||(w[t]=new Va(t),w[t].color="var(--color-cp"+(Object.values(w).length-1)+")")}function Ga(){Object.keys(w).forEach(t=>{delete w[parseInt(t)]})}const Wa={cpLock:"openWB/set/chargepoint/%/set/manual_lock",chargeMode:"openWB/set/vehicle/template/charge_template/%/chargemode/selected",cpPriority:"openWB/set/vehicle/template/charge_template/%/prio",cpTimedCharging:"openWB/set/vehicle/template/charge_template/%/time_charging/active",cpTimedPlanActive:"openWB/set/vehicle/template/charge_template/%/time_charging/plans/@/active",cpScheduledPlanActive:"openWB/set/vehicle/template/charge_template/%/chargemode/scheduled_charging/plans/@/active",pvBatteryPriority:"openWB/set/general/chargemode_config/pv_charging/bat_mode",cpVehicle:"openWB/set/chargepoint/%/config/ev",cpInstantChargeLimitMode:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/selected",cpInstantTargetCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/current",cpInstantTargetSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/soc",cpInstantMaxEnergy:"openWB/set/vehicle/template/charge_template/%/chargemode/instant_charging/limit/amount",cpPvFeedInLimit:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/feed_in_limit",cpPvMinCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_current",cpPvMaxSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/max_soc",cpPvMinSoc:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc",cpPvMinSocCurrent:"openWB/set/vehicle/template/charge_template/%/chargemode/pv_charging/min_soc_current",cpEtMaxPrice:"openWB/set/vehicle/template/charge_template/%/et/max_price",vhChargeTemplateId:"openWB/set/vehicle/%/charge_template",vhEvTemplateId:"openWB/set/vehicle/%/ev_template",shSetManual:"openWB/set/LegacySmartHome/config/set/Devices/%/mode",shSwitchOn:"openWB/set/LegacySmartHome/config/set/Devices/%/device_manual_control",socUpdate:"openWB/set/vehicle/%/get/force_soc_update",setSoc:"openWB/set/vehicle/%/soc_module/calculated_soc_state/manual_soc",priceCharging:"openWB/set/vehicle/template/charge_template/%/et/active"};function q(t,e,a=0,n=void 0){if(isNaN(a)){console.warn("Invalid index");return}let r=Wa[t];if(!r){console.warn("No topic for update type "+t);return}switch(t){case"chargeMode":case"cpPriority":case"cpScheduledCharging":case"cpInstantTargetCurrent":case"cpInstantChargeLimitMode":case"cpInstantTargetSoc":case"cpInstantMaxEnergy":case"cpPvFeedInLimit":case"cpPvMinCurrent":case"cpPvMaxSoc":case"cpPvMinSoc":case"cpEtMaxPrice":case"cpPvMinSocCurrent":r=r.replace("%",w[a].chargeTemplate.toString());break;default:r=r.replace("%",String(a)),n!=null&&(r=r.replace("@",String(n)))}switch(typeof e){case"number":bt(r,JSON.stringify(+e));break;default:bt(r,JSON.stringify(e))}}function xt(t){bt("openWB/set/command/"+kt()+"/todo",JSON.stringify(t))}class ja{constructor(){c(this,"batterySoc",0);c(this,"isBatteryConfigured",!0);c(this,"chargeMode","0");c(this,"_pvBatteryPriority","ev_mode");c(this,"displayLiveGraph",!0);c(this,"isEtEnabled",!0);c(this,"etMaxPrice",0);c(this,"etCurrentPrice",0);c(this,"cpDailyExported",0);c(this,"evuId",0);c(this,"etProvider","");c(this,"ipAddress","");c(this,"systemTime",0);c(this,"version","");c(this,"versionDetails","");c(this,"devBranch","")}get pvBatteryPriority(){return this._pvBatteryPriority}set pvBatteryPriority(e){this._pvBatteryPriority=e,q("pvBatteryPriority",e)}updatePvBatteryPriority(e){this._pvBatteryPriority=e}}const Na=[["EV","ev_mode"],["Speicher","bat_mode"],["MinSoc","min_soc_bat_mode"]],oe=F({evuIn:{name:"Netz",color:"var(--color-evu)",icon:""},pv:{name:"PV",color:"var(--color-pv",icon:""},batOut:{name:"Bat >",color:"var(--color-battery)",icon:""},evuOut:{name:"Export",color:"var(--color-export)",icon:""},charging:{name:"Laden",color:"var(--color-charging)",icon:""},devices:{name:"Geräte",color:"var(--color-devices)",icon:""},batIn:{name:"> Bat",color:"var(--color-battery)",icon:""},house:{name:"Haus",color:"var(--color-house)",icon:""},cp1:{name:"Ladepunkt",color:"var(--color-cp1)",icon:"Ladepunkt"},cp2:{name:"Ladepunkt",color:"var(--color-cp2)",icon:"Ladepunkt"},cp3:{name:"Ladepunkt",color:"var(--color-cp3)",icon:"Ladepunkt"},cp4:{name:"Ladepunkt",color:"var(--color-cp4)",icon:"Ladepunkt"},cp5:{name:"Ladepunkt",color:"var(--color-cp5)",icon:"Ladepunkt"},cp6:{name:"Ladepunkt",color:"var(--color-cp6)",icon:"Ladepunkt"},cp7:{name:"Ladepunkt",color:"var(--color-cp7)",icon:"Ladepunkt"},cp8:{name:"Ladepunkt",color:"var(--color-cp8)",icon:"Ladepunkt"},sh1:{name:"Gerät",color:"var(--color-sh1)",icon:"Gerät"},sh2:{name:"Gerät",color:"var(--color-sh2)",icon:"Gerät"},sh3:{name:"Gerät",color:"var(--color-sh3)",icon:"Gerät"},sh4:{name:"Gerät",color:"var(--color-sh4)",icon:"Gerät"},sh5:{name:"Gerät",color:"var(--color-sh5)",icon:"Gerät"},sh6:{name:"Gerät",color:"var(--color-sh6)",icon:"Gerät"},sh7:{name:"Gerät",color:"var(--color-sh7)",icon:"Gerät"},sh8:{name:"Gerät",color:"var(--color-sh8)",icon:"Gerät"},sh9:{name:"Gerät",color:"var(--color-sh9)",icon:"Gerät"}});class Zt{constructor(){c(this,"_items",{});this.addItem("evuIn"),this.addItem("pv"),this.addItem("batOut"),this.addItem("evuOut"),this.addItem("charging"),this.addItem("devices"),this.addItem("batIn"),this.addItem("house")}get items(){return this._items}keys(){return Object.keys(this._items)}values(){return Object.values(this._items)}addItem(e){this._items[e]=$e(e)}setEnergy(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energy=a}setEnergyPv(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyPv=a}setEnergyBat(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].energyBat=a}setPvPercentage(e,a){this.keys().includes(e)||this.addItem(e),this._items[e].pvPercentage=a}calculateHouseEnergy(){this._items.house.energy=this._items.evuIn.energy+this._items.pv.energy+this._items.batOut.energy-this._items.evuOut.energy-this._items.batIn.energy-this._items.charging.energy-this._items.devices.energy}}let P=new Zt;function Mt(){P=new Zt}const G=F({evuIn:$e("evuIn"),pv:$e("pv"),batOut:$e("batOut")}),I=F({evuOut:$e("evuOut"),charging:$e("charging"),devices:$e("devices"),batIn:$e("batIn"),house:$e("house")}),U=F(new ja);_e("");const ot=_e(!1);function $e(t){return{name:oe[t]?oe[t].name:"item",power:0,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:oe[t]?oe[t].color:"var(--color-charging)",icon:oe[t]?oe[t].icon:""}}const ne=F({active:!1,locked:!0,usePin:!1,code:"",timeout:60,localCpOnly:!1});function st(){ne.usePin&&ne.locked?new St("#numberpad").toggle():(ne.locked=!1,setTimeout(()=>{ne.locked=!0},ne.timeout*1e3))}function Ua(t){return t==ne.code}function za(){I.house.power=I.house.power-I.devices.power}const Tt=_e(new Date),Fa={class:"scaled"},Ja=A({__name:"DisplayButton",props:{icon:{},bgcolor:{},color:{}},emits:["click"],setup(t,{emit:e}){const a=t,n=e;function r(){n("click",!0)}return(o,u)=>(g(),b("div",{style:ee({"background-color":a.bgcolor?a.bgcolor:"var(--color-bg)",color:a.color?a.color:"var(--color-title)"}),class:"displaybutton rounded-pill",type:"button",onClick:r},[a.icon?(g(),b("span",{key:0,class:ae(["fas me-2 scaled",a.icon])},null,2)):M("",!0),l("span",Fa,[ve(o.$slots,"default",{},void 0)])],4))}}),N=(t,e)=>{const a=t.__vccOpts||t;for(const[n,r]of e)a[n]=r;return a},we=N(Ja,[["__scopeId","data-v-0f8aebee"]]);class Ra{constructor(e){c(this,"id");c(this,"name","Gerät");c(this,"power",0);c(this,"status","off");c(this,"energy",0);c(this,"runningTime",0);c(this,"configured",!1);c(this,"_showInGraph",!0);c(this,"color","white");c(this,"canSwitch",!1);c(this,"countAsHouse",!1);c(this,"energyPv",0);c(this,"energyBat",0);c(this,"pvPercentage",0);c(this,"tempConfigured",0);c(this,"temp",[300,300,300]);c(this,"on",!1);c(this,"isAutomatic",!0);c(this,"icon","");this.id=e}get showInGraph(){return this._showInGraph}set showInGraph(e){this._showInGraph=e,Y()}setShowInGraph(e){this._showInGraph=e}}const E=F({});function Xt(t){t in E?console.info("Duplicate sh device message: "+t):(E[t]=new Ra(t),E[t].color="var(--color-sh"+Object.values(E).length+")")}class Ha{constructor(){c(this,"graphToShow","powermeter");c(this,"cpToShow",0);c(this,"displayLocked",!0);c(this,"_showRelativeArcs",!1);c(this,"showTodayGraph",!0);c(this,"_graphPreference","live");c(this,"_usageStackOrder",0);c(this,"_displayMode","dark");c(this,"_showGrid",!1);c(this,"_smartHomeColors","normal");c(this,"_decimalPlaces",1);c(this,"_showQuickAccess",!0);c(this,"_simpleCpList",!1);c(this,"_shortCpList","no");c(this,"_showAnimations",!0);c(this,"_preferWideBoxes",!1);c(this,"_maxPower",4e3);c(this,"_fluidDisplay",!1);c(this,"_showClock","no");c(this,"_showButtonBar",!0);c(this,"_showCounters",!1);c(this,"_showVehicles",!1);c(this,"_showPrices",!1);c(this,"_debug",!1);c(this,"isEtEnabled",!1);c(this,"etPrice",20.5);c(this,"showRightButton",!0);c(this,"showLeftButton",!0);c(this,"animationDuration",300);c(this,"animationDelay",100);c(this,"zoomGraph",!1)}get showRelativeArcs(){return this._showRelativeArcs}set showRelativeArcs(e){this._showRelativeArcs=e,Y()}setShowRelativeArcs(e){this._showRelativeArcs=e}get graphPreference(){return this._graphPreference}set graphPreference(e){this._graphPreference=e,Y()}setGraphPreference(e){this._graphPreference=e}get usageStackOrder(){return this._usageStackOrder}set usageStackOrder(e){this._usageStackOrder=e,Y()}setUsageStackOrder(e){this._usageStackOrder=e}get displayMode(){return this._displayMode}set displayMode(e){this._displayMode=e,Qa(e)}setDisplayMode(e){this._displayMode=e}get showGrid(){return this._showGrid}set showGrid(e){this._showGrid=e,Y()}setShowGrid(e){this._showGrid=e}get decimalPlaces(){return this._decimalPlaces}set decimalPlaces(e){this._decimalPlaces=e,Y()}setDecimalPlaces(e){this._decimalPlaces=e}get smartHomeColors(){return this._smartHomeColors}set smartHomeColors(e){this._smartHomeColors=e,At(e),Y()}setSmartHomeColors(e){this._smartHomeColors=e,At(e)}get showQuickAccess(){return this._showQuickAccess}set showQuickAccess(e){this._showQuickAccess=e,Y()}setShowQuickAccess(e){this._showQuickAccess=e}get simpleCpList(){return this._simpleCpList}set simpleCpList(e){this._simpleCpList=e,Y()}setSimpleCpList(e){this._simpleCpList=e}get shortCpList(){return this._shortCpList}set shortCpList(e){this._shortCpList=e,Y()}setShortCpList(e){this._shortCpList=e}get showAnimations(){return this._showAnimations}set showAnimations(e){this._showAnimations=e,Y()}setShowAnimations(e){this._showAnimations=e}get preferWideBoxes(){return this._preferWideBoxes}set preferWideBoxes(e){this._preferWideBoxes=e,Y()}setPreferWideBoxes(e){this._preferWideBoxes=e}get maxPower(){return this._maxPower}set maxPower(e){this._maxPower=e,Y()}setMaxPower(e){this._maxPower=e}get fluidDisplay(){return this._fluidDisplay}set fluidDisplay(e){this._fluidDisplay=e,Y()}setFluidDisplay(e){this._fluidDisplay=e}get showClock(){return this._showClock}set showClock(e){this._showClock=e,Y()}setShowClock(e){this._showClock=e}get debug(){return this._debug}set debug(e){this._debug=e,Y()}setDebug(e){this._debug=e}get showButtonBar(){return this._showButtonBar}set showButtonBar(e){this._showButtonBar=e,Y()}setShowButtonBar(e){this._showButtonBar=e}get showCounters(){return this._showCounters}set showCounters(e){this._showCounters=e,Y()}setShowCounters(e){this._showCounters=e}get showVehicles(){return this._showVehicles}set showVehicles(e){this._showVehicles=e,Y()}setShowVehicles(e){this._showVehicles=e}get showPrices(){return this._showPrices}set showPrices(e){this._showPrices=e,Y()}setShowPrices(e){this._showPrices=e}}const f=F(new Ha),Ya=992,wt=F({x:document.documentElement.clientWidth,y:document.documentElement.clientHeight});function qa(){wt.x=document.documentElement.clientWidth,wt.y=document.documentElement.clientHeight}p(()=>wt.x>=Ya);const We={stop:{mode:fe.stop,name:"Stop",color:"var(--color-fg)",icon:"fa-power-off"},standby:{mode:fe.standby,name:"Standby",color:"var(--color-axis",icon:"fa-pause"},pv_charging:{mode:fe.pv_charging,name:"PV",color:"var(--color-pv",icon:"fa-solar-panel"},scheduled_charging:{mode:fe.scheduled_charging,name:"Zielladen",color:"var(--color-battery)",icon:"fa-bullseye"},instant_charging:{mode:fe.instant_charging,name:"Sofort",color:"var(--color-charging)",icon:"fa-bolt"}};function Y(){Za()}function Qa(t){const e=ye("html");e.classed("theme-dark",t=="dark"),e.classed("theme-light",t=="light"),e.classed("theme-blue",t=="blue"),Y()}function At(t){const e=ye("html");e.classed("shcolors-normal",t=="normal"),e.classed("shcolors-standard",t=="standard"),e.classed("shcolors-advanced",t=="advanced")}function Za(){const t={};t.hideSH=Object.values(E).filter(e=>!e.showInGraph).map(e=>e.id),t.showLG=f.graphPreference=="live",t.displayM=f.displayMode,t.stackO=f.usageStackOrder,t.showGr=f.showGrid,t.decimalP=f.decimalPlaces,t.smartHomeC=f.smartHomeColors,t.relPM=f.showRelativeArcs,t.maxPow=f.maxPower,t.showQA=f.showQuickAccess,t.simpleCP=f.simpleCpList,t.shortCP=f.shortCpList,t.animation=f.showAnimations,t.wideB=f.preferWideBoxes,t.fluidD=f.fluidDisplay,t.clock=f.showClock,t.showButtonBar=f.showButtonBar,t.showCounters=f.showCounters,t.showVehicles=f.showVehicles,t.showPrices=f.showPrices,t.debug=f.debug,document.cookie="openWBColorTheme="+JSON.stringify(t)+";max-age=16000000;samesite=strict"}const Ee=t=>(ce("data-v-97154896"),t=t(),le(),t),Xa={class:"navigation"},Ka={class:"graphbuttons"},en=Ee(()=>l("span",{class:"brand me-4"},"openWB",-1)),tn={class:"cpbuttons"},an=Ee(()=>l("span",{class:"fas fa-arrow-left px-2"},null,-1)),nn=Ee(()=>l("span",{class:"fas fa-charging-station pe-2"},null,-1)),rn=Ee(()=>l("span",{class:"fas fa-lock px-4"},null,-1)),on=Ee(()=>l("span",{class:"fas fa-charging-station px-2"},null,-1)),sn=Ee(()=>l("span",{class:"fas fa-arrow-right pe-2"},null,-1)),cn={class:"timedisplay ms-4"},ln=A({__name:"NavigationBar",setup(t){let e;function a(){let d=Object.values(w).length;f.cpToShow=(f.cpToShow+1)%d}function n(){let d=Object.values(w).length;f.cpToShow=((f.cpToShow-1)%d+d)%d}function r(){f.graphToShow="powermeter"}function o(){f.graphToShow="powergraph"}function u(){f.graphToShow="energymeter"}return lt(()=>{e=setInterval(()=>{Tt.value=new Date},1e3)}),fa(()=>{clearInterval(e)}),(d,s)=>(g(),b("div",Xa,[l("span",Ka,[en,y(we,{icon:"fa-chart-pie",onClick:r},{default:x(()=>[W("Leistung")]),_:1}),y(we,{icon:"fa-chart-line",onClick:o},{default:x(()=>[W("Verlauf")]),_:1}),y(we,{icon:"fa-chart-column",onClick:u},{default:x(()=>[W("Energie")]),_:1})]),y(we,{icon:"fa-rectangle-list","data-bs-toggle":"modal","data-bs-target":"#statuspage"},{default:x(()=>[W("Status")]),_:1}),l("span",tn,[Object.values(i(w)).length>1?(g(),T(we,{key:0,color:"var(--color-cp0)",onClick:n},{default:x(()=>[an,nn]),_:1})):M("",!0),y(we,{bgcolor:i(ne).locked?"var(--color-evu)":"var(--color-pv)",onClick:i(st)},{default:x(()=>[rn]),_:1},8,["bgcolor","onClick"]),Object.values(i(w)).length>1?(g(),T(we,{key:1,color:"var(--color-cp0)",onClick:a},{default:x(()=>[on,sn]),_:1})):M("",!0),l("span",cn,$(i(Pa)(i(Tt))),1)])]))}}),dn=N(ln,[["__scopeId","data-v-97154896"]]),un=["origin"],hn=A({__name:"PMSourceArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=p(()=>{let n={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:""},r=G;r["zz-empty"]=n;const o=Object.values(G).length-1,u=jt().value(m=>m.power).startAngle(-Math.PI/2+e.circleGapSize).endAngle(Math.PI/2-e.circleGapSize).sort(null),d=Nt().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius).padAngle(0),s=ye("g#pmSourceArc");return s.selectAll("*").remove(),s.selectAll("sources").data(u(Object.values(r))).enter().append("path").attr("d",d).attr("fill",m=>m.data.color).attr("stroke",(m,v)=>v==o?m.data.power>0?"var(--color-scale)":"null":m.data.color),"pmSourceArc.vue"});return _a(()=>{let n=G.pv.power+G.evuIn.power+G.batOut.power;n>f.maxPower&&(f.maxPower=n)}),(n,r)=>(g(),b("g",{id:"pmSourceArc",origin:a.value},null,8,un))}}),pn=["origin"],gn=A({__name:"PMUsageArc",props:{radius:{},cornerRadius:{},circleGapSize:{},emptyPower:{}},setup(t){const e=t,a=p(()=>{let n={name:"",power:e.emptyPower,energy:0,energyPv:0,energyBat:0,pvPercentage:0,color:"var(--color-bg)",icon:""};const r=[I.evuOut,I.charging].concat(Object.values(E).filter(m=>m.configured&&!m.countAsHouse).sort((m,v)=>v.power-m.power)).concat([I.batIn,I.house]).concat(n),o=r.length-1,u=jt().value(m=>m.power).startAngle(Math.PI*1.5-e.circleGapSize).endAngle(Math.PI/2+e.circleGapSize).sort(null),d=Nt().innerRadius(e.radius/6*5).outerRadius(e.radius).cornerRadius(e.cornerRadius),s=ye("g#pmUsageArc");return s.selectAll("*").remove(),s.selectAll("consumers").data(u(r)).enter().append("path").attr("d",d).attr("fill",m=>m.data.color).attr("stroke",(m,v)=>v==o?m.data.power>0?"var(--color-scale)":"null":m.data.color),"pmUsageArc.vue"});return(n,r)=>(g(),b("g",{id:"pmUsageArc",origin:a.value},null,8,pn))}}),Kt=A({__name:"FormatWatt",props:{watt:{}},setup(t){const e=t,a=p(()=>et(e.watt,f.decimalPlaces));return(n,r)=>$(a.value)}}),mn={key:0,id:"pmLabel"},vn=["x","y","fill","text-anchor"],fn=22,be=A({__name:"PMLabel",props:{x:{},y:{},data:{},props:{},anchor:{},labeltext:{},labelicon:{},labelcolor:{}},setup(t){const e=t,a=p(()=>e.labeltext?e.labeltext:e.props?e.props.icon+" ":e.labelicon?e.labelicon+" ":""),n=p(()=>e.labelcolor?e.labelcolor:e.props?e.props.color:""),r=p(()=>!e.data||e.data.power>0),o=p(()=>e.labeltext?"":"fas");return(u,d)=>r.value?(g(),b("g",mn,[l("text",{x:u.x,y:u.y,fill:n.value,"text-anchor":u.anchor,"font-size":fn,class:"pmLabel"},[l("tspan",{class:ae(o.value)},$(a.value),3),l("tspan",null,[u.data!==void 0?(g(),T(Kt,{key:0,watt:u.data.power},null,8,["watt"])):M("",!0)])],8,vn)])):M("",!0)}}),_n={},ea=t=>(ce("data-v-b83b615b"),t=t(),le(),t),yn={class:"p-2 m-0"},bn={class:"wb-widget m-0 pb-4 shadow"},wn={class:"header mt-4 mx-2"},Sn={class:"titles"},kn={class:"title"},xn=ea(()=>l("div",{class:"p-0"},"(title goes here)",-1)),Mn={class:"subtitle"},Pn={class:"buttons"},$n={class:"wb-subwidget mx-2 subgrid"},In={key:0,class:"subgrid"},Cn=ea(()=>l("hr",{class:"grid-col-12"},null,-1)),On={class:"wb-subwidget mx-2 subgrid"};function Bn(t,e){return g(),b("div",yn,[l("div",bn,[l("div",wn,[l("div",Sn,[l("div",kn,[ve(t.$slots,"title",{},()=>[xn])]),l("div",Mn,[ve(t.$slots,"subtitle",{},void 0)])]),l("div",Pn,[ve(t.$slots,"buttons",{},void 0)])]),l("div",$n,[ve(t.$slots,"default",{},void 0)]),t.$slots.footer!=null?(g(),b("div",In,[Cn,l("div",On,[ve(t.$slots,"footer",{},void 0)])])):M("",!0)])])}const ut=N(_n,[["render",Bn],["__scopeId","data-v-b83b615b"]]);class Tn{constructor(){c(this,"active",!1);c(this,"etPriceList",new Map);c(this,"etProvider","");c(this,"etMaxPrice",0)}get etCurrentPriceString(){const[e]=X.etPriceList.values();return(Math.round(e*10)/10).toFixed(1)+" ct"}}const X=F(new Tn),An={class:"grid-col-12"},Vn={id:"powermeter",class:"powermeter p-0 m-0 align-self-stretch"},Ln=["viewBox"],Dn=["transform"],En={transform:"scale(0.9294,1)"},Gn=["x"],xe=500,Me=20,Vt=1,Wn=A({__name:"PowerMeter",setup(t){const e=xe,a=Math.PI/40,n=[[4],[4,6],[1,4,6],[0,2,4,6],[0,2,3,5,6]],r=[{x:-85,y:e/2*1/5},{x:0,y:e/2*1/5},{x:85,y:e/2*1/5},{x:-85,y:e/2*2/5},{x:0,y:e/2*2/5},{x:85,y:e/2*2/5},{x:0,y:e/2*3/5}],o=p(()=>xe/2-Me),u=p(()=>{let D="",z=Object.values(G).filter(H=>H.power>0);return z.length==1&&z[0].name=="PV"?D="Aktueller Verbrauch: ":D="Bezug/Verbrauch: ",D+et(I.house.power+I.charging.power+I.devices.power+I.batIn.power,f.decimalPlaces)}),d=p(()=>{let D=G.pv.power+G.evuIn.power+G.batOut.power;return f.maxPower>D?et(f.maxPower,f.decimalPlaces):et(D,f.decimalPlaces)}),s=p(()=>Object.values(w)),m=p(()=>{let D=0;return f.showRelativeArcs&&(D=f.maxPower-(G.pv.power+G.evuIn.power+G.batOut.power)),D<0?0:D}),v=p(()=>[I.evuOut,I.charging,I.devices,I.batIn,I.house].filter(D=>D.power>0)),B=p(()=>n[v.value.length-1]);function k(D){return r[B.value[D]]}function R(D){return Math.round(s.value[D].soc)}function te(D){return D.length>12?D.slice(0,11)+".":D}const se=p(()=>{const[D]=X.etPriceList.values();return Math.round(D*10)/10});return(D,z)=>(g(),T(ut,null,{title:x(()=>[W(" Aktuelle Leistung ")]),default:x(()=>[l("div",An,[l("figure",Vn,[(g(),b("svg",{viewBox:"0 0 "+xe+" "+i(e)},[l("g",{transform:"translate("+xe/2+","+i(e)/2+")"},[l("g",En,[y(hn,{radius:o.value,"corner-radius":Vt,"circle-gap-size":a,"empty-power":m.value},null,8,["radius","empty-power"]),y(gn,{"sh-device":i(E),radius:o.value,"corner-radius":Vt,"circle-gap-size":a,"empty-power":m.value},null,8,["sh-device","radius","empty-power"]),y(be,{x:0,y:-i(e)/10*2,data:i(G).pv,props:i(oe).pv,anchor:"middle",config:i(f)},null,8,["y","data","props","config"]),y(be,{x:0,y:-i(e)/10*3,data:i(G).evuIn,props:i(oe).evuIn,anchor:"middle",config:i(f)},null,8,["y","data","props","config"]),y(be,{x:0,y:-i(e)/10,data:i(G).batOut,props:i(oe).batOut,anchor:"middle",config:i(f)},null,8,["y","data","props","config"]),i(X).active?(g(),T(be,{key:0,x:0,y:-i(e)/10,data:i(G).batOut,props:i(oe).batOut,anchor:"middle",config:i(f)},null,8,["y","data","props","config"])):M("",!0),(g(!0),b(ke,null,Ae(v.value,(H,C)=>(g(),T(be,{key:C,x:k(C).x,y:k(C).y,data:H,labelicon:H.icon,labelcolor:H.color,anchor:"middle",config:i(f)},null,8,["x","y","data","labelicon","labelcolor","config"]))),128)),s.value.length>0&&i(j)[s.value[0].connectedVehicle]?(g(),T(be,{key:1,x:-xe/2-Me/4+10,y:-i(e)/2+Me+5,labeltext:te(i(j)[s.value[0].connectedVehicle].name)+": "+R(0)+"%",labelcolor:s.value[0].color,anchor:"start",config:i(f)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),s.value.length>1&&i(j)[s.value[1].connectedVehicle]?(g(),T(be,{key:2,x:xe/2+Me/4-10,y:-i(e)/2+Me+5,labeltext:te(i(j)[s.value[1].connectedVehicle].name)+": "+R(1)+"%",labelcolor:s.value[1].color,anchor:"end",config:i(f)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),i(U).batterySoc>0?(g(),T(be,{key:3,x:-xe/2-Me/4+10,y:i(e)/2-Me+15,labeltext:"Speicher: "+i(U).batterySoc+"%",labelcolor:i(I).batIn.color,anchor:"start",config:i(f)},null,8,["x","y","labeltext","labelcolor","config"])):M("",!0),i(X).active?(g(),T(be,{key:4,x:xe/2+Me/4-10,y:i(e)/2-Me+15,value:se.value,labeltext:i(X).etCurrentPriceString,labelcolor:"var(--color-charging)",anchor:"end",config:i(f)},null,8,["x","y","value","labeltext","config"])):M("",!0),y(be,{x:0,y:0,labeltext:u.value,labelcolor:"var(--color-fg)",anchor:"middle",config:i(f)},null,8,["labeltext","config"]),i(f).showRelativeArcs?(g(),b("text",{key:5,x:xe/2-44,y:"2","text-anchor":"middle",fill:"var(--color-axis)","font-size":"12"}," Peak: "+$(d.value),9,Gn)):M("",!0)])],8,Dn)],8,Ln))])])]),_:1}))}}),Pe=500,Ce=500,L={top:10,right:20,bottom:10,left:25},Pt=["charging","house","batIn","devices"];class jn{constructor(){c(this,"data",[]);c(this,"_graphMode","")}get graphMode(){return this._graphMode}set graphMode(e){this._graphMode=e}}const h=F(new jn);let it=!0,He=!0;function Lt(){it=!1}function Dt(){He=!1}function Nn(t){He=t}function Ye(t){h.data=t}const Z=F({refreshTopicPrefix:"openWB/graph/alllivevaluesJson",updateTopic:"openWB/graph/lastlivevaluesJson",configTopic:"openWB/graph/config/#",initialized:!1,initCounter:0,graphRefreshCounter:0,rawDataPacks:[],duration:0,activate(){h.data=[],this.unsubscribeUpdates(),this.subscribeRefresh(),Ve(this.configTopic),this.initialized=!1,this.initCounter=0,this.graphRefreshCounter=0,this.rawDataPacks=[],Rn(),ot.value=!0},deactivate(){this.unsubscribeRefresh(),this.unsubscribeUpdates(),De(this.configTopic)},subscribeRefresh(){for(let t=1;t<17;t++)Ve(this.refreshTopicPrefix+t)},unsubscribeRefresh(){for(let t=1;t<17;t++)De(this.refreshTopicPrefix+t)},subscribeUpdates(){Ve(this.updateTopic)},unsubscribeUpdates(){De(this.updateTopic)}}),J=F({topic:"openWB/log/daily/#",date:new Date,activate(){if(h.graphMode=="day"||h.graphMode=="today"){h.graphMode=="today"&&(this.date=new Date);const t=this.date.getFullYear().toString()+(this.date.getMonth()+1).toString().padStart(2,"0")+this.date.getDate().toString().padStart(2,"0");Ve(this.topic),xt({command:"getDailyLog",data:{day:t}})}},deactivate(){De(this.topic)},back(){this.date=new Date(this.date.setTime(this.date.getTime()-864e5))},forward(){this.date=new Date(this.date.setTime(this.date.getTime()+864e5))},setDate(t){this.date=t},getDate(){return this.date}}),Ie=F({topic:"openWB/log/monthly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(){const t=this.year.toString()+this.month.toString().padStart(2,"0");h.data=[],Ve(this.topic),xt({command:"getMonthlyLog",data:{month:t}})},deactivate(){De(this.topic)},back(){this.month-=1,this.month<1&&(this.month=12,this.year-=1),this.activate()},forward(){const t=new Date;t.getFullYear()==this.year?this.month-1<t.getMonth()&&(this.month=this.month+1):(this.month=this.month+1,this.month>12&&(this.month=1,this.year+=1)),this.activate()},getDate(){return new Date(this.year,this.month)}}),Oe=F({topic:"openWB/log/yearly/#",month:new Date().getMonth()+1,year:new Date().getFullYear(),activate(){const t=this.year.toString();h.data=[],Ve(this.topic),xt({command:"getYearlyLog",data:{year:t}})},deactivate(){De(this.topic)},back(){this.year-=1,this.activate()},forward(){this.year<new Date().getFullYear()&&(this.year=this.year+1,this.activate())},getDate(){return new Date(this.year,this.month)}});function K(t=!1){switch(h.graphMode==""?Un(f.graphPreference):h.graphMode=="live"?f.graphPreference="live":f.graphPreference="today",t||(it=!0,He=!0),h.graphMode){case"live":J.deactivate(),Ie.deactivate(),Oe.deactivate(),Z.activate();break;case"today":Z.deactivate(),Ie.deactivate(),Oe.deactivate(),J.activate();break;case"day":Z.deactivate(),Ie.deactivate(),Oe.deactivate(),J.activate();break;case"month":Z.deactivate(),J.deactivate(),Oe.deactivate(),Ie.activate();break;case"year":Z.deactivate(),J.deactivate(),Ie.deactivate(),Oe.activate();break}}function Un(t){h.graphMode=t}function zn(t,e){e[t]>0&&(P.items[t].energyPv+=1e3/12*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),P.items[t].energyBat+=1e3/12*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}function Fn(t,e){e[t]>0&&(P.items[t].energyPv+=1e3*(e[t]*(e.pv-e.evuOut))/(e.pv-e.evuOut+e.evuIn+e.batOut),P.items[t].energyBat+=1e3*(e[t]*e.batOut)/(e.pv-e.evuOut+e.evuIn+e.batOut))}const Jn=["evuIn","pv","batIn","evuOut"],Fe=_e(!1);function $t(t,e){Object.entries(t).length>0?(Fe.value=!1,Object.entries(t.counter).forEach(([a,n])=>{(e.length==0||e.includes(a))&&(P.items.evuIn.energy+=n.energy_imported,P.items.evuOut.energy+=n.energy_exported)}),P.items.pv.energy=t.pv.all.energy_exported,t.bat.all&&(P.items.batIn.energy=t.bat.all.energy_imported,P.items.batOut.energy=t.bat.all.energy_exported),Object.entries(t.cp).forEach(([a,n])=>{a=="all"?P.setEnergy("charging",n.energy_imported):P.setEnergy(a,n.energy_imported)}),P.setEnergy("devices",0),Object.entries(t.sh).forEach(([a,n])=>{P.setEnergy(a,n.energy_imported);const r=a.substring(2);E[+r].countAsHouse||(P.items.devices.energy+=n.energy_imported)}),t.hc&&t.hc.all?P.setEnergy("house",t.hc.all.energy_imported):P.calculateHouseEnergy(),P.keys().map(a=>{Jn.includes(a)||(P.setPvPercentage(a,Math.round((P.items[a].energyPv+P.items[a].energyBat)/P.items[a].energy*100)),Pt.includes(a)&&(I[a].energy=P.items[a].energy,I[a].energyPv=P.items[a].energyPv,I[a].energyBat=P.items[a].energyBat,I[a].pvPercentage=P.items[a].pvPercentage))}),h.graphMode=="today"&&(Object.values(w).map(a=>{const n=P.items["cp"+a.id];n&&(a.energyPv=n.energyPv,a.energyBat=n.energyBat,a.pvPercentage=n.pvPercentage)}),Object.values(E).map(a=>{const n=P.items["sh"+a.id];n&&(a.energy=n.energy,a.energyPv=n.energyPv,a.energyBat=n.energyBat,a.pvPercentage=n.pvPercentage)}))):Fe.value=!0,ot.value=!0}function Rn(){P.keys().map(t=>{Pt.includes(t)&&(I[t].energy=P.items[t].energy,I[t].energyPv=0,I[t].energyBat=0,I[t].pvPercentage=0)}),Object.values(w).map(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0}),Object.values(E).map(t=>{t.energyPv=0,t.energyBat=0,t.pvPercentage=0})}const Se=p(()=>{const t=Le(h.data,e=>e.date);return t[1]?_t().domain(Array.from({length:t[1]},(e,a)=>a+1)).paddingInner(.4).range([0,Pe-L.left-2]):_t().range([0,0])});function It(){switch(h.graphMode){case"live":h.graphMode="today",f.showRightButton=!0,K();break;case"today":h.graphMode="day",J.date=new Date,J.back(),K();break;case"day":J.back(),K();break;case"month":Ie.back();break;case"year":Oe.back();break}}function ta(){const t=new Date;switch(h.graphMode){case"live":break;case"today":h.graphMode="live",f.showRightButton=!1,K();break;case"day":J.forward(),J.date.getDate()==t.getDate()&&J.date.getMonth()==t.getMonth()&&J.date.getFullYear()==t.getFullYear()&&(h.graphMode="today"),K();break;case"month":Ie.forward();break;case"year":Oe.forward();break}}function aa(){switch(h.graphMode){case"live":It();break;case"day":case"today":h.graphMode="month",K();break;case"month":h.graphMode="year",K();break}}function na(){switch(h.graphMode){case"year":h.graphMode="month",K();break;case"month":h.graphMode="today",K();break;case"today":case"day":h.graphMode="live",K();break}}function Hn(t){if(h.graphMode=="day"||h.graphMode=="today"){J.setDate(t);const e=new Date;J.date.getDate()==e.getDate()&&J.date.getMonth()==e.getMonth()&&J.date.getFullYear()==e.getFullYear()?h.graphMode="today":h.graphMode="day",K()}}const Yn=["origin","transform"],qn=A({__name:"PGSourceGraph",props:{width:{},height:{},margin:{}},setup(t){const e=t,a={house:"var(--color-house)",batIn:"var(--color-battery)",inverter:"var(--color-pv)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)"};var n,r;const o=f.showAnimations?f.animationDuration:0,u=f.showAnimations?f.animationDelay:0,d=p(()=>{const S=ye("g#pgSourceGraph");h.graphMode=="month"||h.graphMode=="year"?C(S):H(S),S.selectAll(".axis").remove();const _=S.append("g").attr("class","axis");return _.call(se.value),_.selectAll(".tick").attr("font-size",12),_.selectAll(".tick line").attr("stroke",z.value).attr("stroke-width",D.value),_.select(".domain").attr("stroke","var(--color-bg)"),"pgSourceGraph.vue"}),s=p(()=>h.graphMode=="month"||h.graphMode=="year"?["evuIn","batOut","selfUsage","evuOut"]:["selfUsage","evuOut","batOut","evuIn"]),m=p(()=>Te().domain([0,h.data.length-1]).range([0,e.width])),v=p(()=>Ut().keys(s.value)),B=p(()=>v.value(h.data)),k=p(()=>Te().range([e.height-10,0]).domain(h.graphMode=="year"?[0,Math.ceil(R.value[1]*10)/10]:[0,Math.ceil(R.value[1])])),R=p(()=>{let S=Le(h.data,_=>Math.max(_.pv+_.evuIn+_.batOut,_.selfUsage+_.evuOut));return S[0]!=null&&S[1]!=null?(h.graphMode=="year"&&(S[0]=S[0]/1e3,S[1]=S[1]/1e3),S):[0,0]}),te=p(()=>h.graphMode=="month"||h.graphMode=="year"?-e.width-e.margin.right-22:-e.width),se=p(()=>dt(k.value).tickSizeInner(te.value).ticks(4).tickFormat(S=>(S==0?"":Math.round(S*10)/10).toLocaleString(void 0))),D=p(()=>f.showGrid?"0.5":"1"),z=p(()=>f.showGrid?"var(--color-grid)":"var(--color-bg)");function H(S){const _=at().x((V,re)=>m.value(re)).y(k.value(0)),O=at().x((V,re)=>m.value(re)).y0(V=>k.value(h.graphMode=="year"?V[0]/1e3:V[0])).y1(V=>k.value(h.graphMode=="year"?V[1]/1e3:V[1]));it?(S.selectAll("*").remove(),n=S.selectAll(".sourceareas").data(B.value).enter().append("path").attr("fill",(V,re)=>a[s.value[re]]).attr("d",V=>_(V)),n.transition().duration(o).delay(u).ease(je).attr("d",V=>O(V)),Lt()):n.data(B.value).transition().duration(0).ease(je).attr("d",V=>O(V))}function C(S){it?(S.selectAll("*").remove(),r=S.selectAll(".sourcebar").data(B.value).enter().append("g").attr("fill",(_,O)=>a[s.value[O]]).selectAll("rect").data(_=>_).enter().append("rect").attr("x",(_,O)=>Se.value(h.data[O].date)??0).attr("y",()=>k.value(0)).attr("height",0).attr("width",Se.value.bandwidth()),r.transition().duration(o).delay(u).ease(je).attr("height",_=>h.graphMode=="year"?k.value(_[0]/1e3)-k.value(_[1]/1e3):k.value(_[0])-k.value(_[1])).attr("y",_=>h.graphMode=="year"?k.value(_[1]/1e3):k.value(_[1])),Lt()):(S.selectAll("*").remove(),r=S.selectAll(".sourcebar").data(B.value).enter().append("g").attr("fill",(_,O)=>a[s.value[O]]).selectAll("rect").data(_=>_).enter().append("rect").attr("x",(_,O)=>Se.value(h.data[O].date)??0).attr("y",_=>h.graphMode=="year"?k.value(_[1]/1e3):k.value(_[1])).attr("width",Se.value.bandwidth()).attr("height",_=>h.graphMode=="year"?k.value(_[0]/1e3)-k.value(_[1]/1e3):k.value(_[0])-k.value(_[1])))}return(S,_)=>(g(),b("g",{id:"pgSourceGraph",origin:d.value,transform:"translate("+S.margin.left+","+S.margin.top+")"},null,8,Yn))}}),Qn=["origin","transform"],Zn=A({__name:"PGUsageGraph",props:{width:{},height:{},margin:{},stackOrder:{}},setup(t){const e=t,a=[["house","charging","devices","batIn"],["charging","devices","house","batIn"],["devices","charging","house","batIn"]],n={house:"var(--color-house)",charging:"var(--color-charging)",batIn:"var(--color-battery)",batOut:"var(--color-battery)",selfUsage:"var(--color-pv)",evuOut:"var(--color-export)",evuIn:"var(--color-evu)",cp0:"var(--color-cp0)",cp1:"var(--color-cp1)",cp2:"var(--color-cp2)",cp3:"var(--color-cp3)",sh1:"var(--color-sh1)",sh2:"var(--color-sh2)",sh3:"var(--color-sh3)",sh4:"var(--color-sh4)",devices:"var(--color-devices)"};var r,o;const u=f.showAnimations?f.animationDuration:0,d=f.showAnimations?f.animationDelay:0,s=p(()=>{const C=ye("g#pgUsageGraph");h.graphMode=="month"||h.graphMode=="year"?H(C):z(C),C.selectAll(".axis").remove();const S=C.append("g").attr("class","axis");return S.call(D.value),S.selectAll(".tick").attr("font-size",12).attr("color","var(--color-axis)"),f.showGrid?S.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):S.selectAll(".tick line").attr("stroke","var(--color-bg)"),S.select(".domain").attr("stroke","var(--color-bg)"),"pgUsageGraph.vue"}),m=p(()=>Ut().keys(R.value)),v=p(()=>m.value(h.data)),B=p(()=>Te().domain([0,h.data.length-1]).range([0,e.width])),k=p(()=>Te().range([e.height+10,2*e.height]).domain(h.graphMode=="year"?[0,Math.ceil(te.value[1]*10)/10]:[0,Math.ceil(te.value[1])])),R=p(()=>{if(h.graphMode!="today"&&h.graphMode!="day")return a[e.stackOrder];{const C=a[e.stackOrder].slice(),S=C.indexOf("charging");C.splice(S,1);const _=/cp\d+/;let O=[];return h.data.length>0&&(O=Object.keys(h.data[0]).reduce((V,re)=>(re.match(_)&&V.push(re),V),[])),O.map((V,re)=>{C.splice(S+re,0,V),n[V]="var(--color-cp"+re+")"}),C}}),te=p(()=>{let C=Le(h.data,S=>S.house+S.charging+S.batIn+S.devices);return C[0]!=null&&C[1]!=null?(h.graphMode=="year"&&(C[0]=C[0]/1e3,C[1]=C[1]/1e3),C):[0,0]}),se=p(()=>h.graphMode=="month"||h.graphMode=="year"?-e.width-e.margin.right-22:-e.width),D=p(()=>dt(k.value).tickSizeInner(se.value).ticks(4).tickFormat(C=>(C==0?"":Math.round(C*10)/10).toLocaleString(void 0)));function z(C){const S=at().x((O,V)=>B.value(V)).y(k.value(0)),_=at().x((O,V)=>B.value(V)).y0(O=>k.value(O[0])).y1(O=>k.value(O[1]));f.showAnimations?He?(C.selectAll("*").remove(),r=C.selectAll(".usageareas").data(v.value).enter().append("path").attr("d",O=>S(O)).attr("fill",(O,V)=>n[R.value[V]]),r.transition().duration(300).delay(100).ease(je).attr("d",O=>_(O)),Dt()):(C.selectAll("*").remove(),C.selectAll(".usageareas").data(v.value).enter().append("path").attr("d",O=>_(O)).attr("fill",(O,V)=>n[R.value[V]])):(C.selectAll("*").remove(),C.selectAll(".usageareas").data(v.value).enter().append("path").attr("d",O=>_(O)).attr("fill",(O,V)=>n[R.value[V]]))}function H(C){He?(C.selectAll("*").remove(),o=C.selectAll(".usagebar").data(v.value).enter().append("g").attr("fill",(S,_)=>n[a[e.stackOrder][_]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,_)=>Se.value(h.data[_].date)??0).attr("y",()=>k.value(0)).attr("height",0).attr("width",Se.value.bandwidth()),o.transition().duration(u).delay(d).ease(je).attr("y",S=>h.graphMode=="year"?k.value(S[0]/1e3):k.value(S[0])).attr("height",S=>h.graphMode=="year"?k.value(S[1]/1e3)-k.value(S[0]/1e3):k.value(S[1])-k.value(S[0])),Dt()):(C.selectAll("*").remove(),o=C.selectAll(".usagebar").data(v.value).enter().append("g").attr("fill",(S,_)=>n[a[e.stackOrder][_]]).selectAll("rect").data(S=>S).enter().append("rect").attr("x",(S,_)=>Se.value(h.data[_].date)??0).attr("y",S=>h.graphMode=="year"?k.value(S[0]/1e3):k.value(S[0])).attr("height",S=>h.graphMode=="year"?k.value(S[1]/1e3)-k.value(S[0]/1e3):k.value(S[1])-k.value(S[0])).attr("width",Se.value.bandwidth()))}return(C,S)=>(g(),b("g",{id:"pgUsageGraph",origin:s.value,transform:"translate("+C.margin.left+","+C.margin.top+")"},null,8,Qn))}}),Xn=["transform"],Kn=["origin","transform"],er=["origin","transform"],tr={key:0},ar=["width","height"],nr={key:1},rr=["y","width","height"],pt=12,or=A({__name:"PGXAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=p(()=>Ke(d.value).ticks(4).tickSizeInner(u.value).tickFormat(yt("%H:%M"))),n=p(()=>ya(d.value).ticks(4).tickSizeInner(u.value+3).tickFormat(yt(""))),r=p(()=>Ke(Se.value).ticks(4).tickSizeInner(u.value).tickFormat(v=>v.toString())),o=p(()=>Ke(Se.value).ticks(4).tickSizeInner(u.value).tickFormat(()=>"")),u=p(()=>h.graphMode!=="month"&&h.graphMode!=="year"?f.showGrid?-(e.height/2-7):-10:0),d=p(()=>{let v=Le(h.data,B=>B.date);return v[0]&&v[1]?Re().domain(v).range([0,e.width]):Re().range([0,0])}),s=p(()=>{let v=ye("g#PGXAxis");return v.selectAll("*").remove(),h.graphMode=="month"||h.graphMode=="year"?v.call(r.value):v.call(a.value),v.selectAll(".tick > text").attr("fill",(B,k)=>k>0||h.graphMode=="month"||h.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",pt),f.showGrid?v.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):v.selectAll(".tick line").attr("stroke","var(--color-bg)"),v.select(".domain").attr("stroke","var(--color-bg)"),v.append("text").attr("x",-e.margin.left).attr("y",12).attr("fill","var(--color-axis)").attr("font-size",pt).text(h.graphMode=="year"?"MW":"kW").attr("text-anchor","start"),"PGXAxis.vue"}),m=p(()=>{let v=ye("g#PGXAxis2");return v.selectAll("*").remove(),h.graphMode=="month"||h.graphMode=="year"?v.call(o.value):v.call(n.value),v.selectAll(".tick > text").attr("fill",(B,k)=>k>0||h.graphMode=="month"||h.graphMode=="year"?"var(--color-axis)":"var(--color-bg)").attr("font-size",pt),f.showGrid?(v.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"),v.select(".domain").attr("stroke","var(--color-bg)")):v.selectAll(".tick line").attr("stroke","var(--color-bg)"),v.select(".domain").attr("stroke","var(--color-bg)"),"PGXAxis2.vue"});return(v,B)=>(g(),b("g",{transform:"translate("+v.margin.left+","+v.margin.top+")"},[l("g",{id:"PGXAxis",class:"axis",origin:s.value,transform:"translate(0,"+(v.height/2-6)+")"},null,8,Kn),l("g",{id:"PGXAxis2",class:"axis",origin:m.value,transform:"translate(0,"+(v.height/2+10)+")"},null,8,er),i(f).showGrid?(g(),b("g",tr,[l("rect",{x:"0",y:"0",width:v.width,height:v.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,ar)])):M("",!0),i(f).showGrid?(g(),b("g",nr,[l("rect",{x:"0",y:v.height/2+10,width:v.width,height:v.height/2-10,fill:"none",stroke:"var(--color-grid)","stroke-width":"0.5"},null,8,rr)])):M("",!0)],8,Xn))}}),sr=["d"],ir=["d","stroke"],cr=["x","y","text-anchor"],gt=A({__name:"PgSoc",props:{width:{},height:{},margin:{},order:{}},setup(t){const e=t,a=p(()=>{let k=Le(h.data,R=>R.date);return k[0]&&k[1]?Re().domain(k).range([0,e.width]):Re().range([0,0])}),n=p(()=>Te().range([e.height-10,0]).domain([0,100])),r=p(()=>zt().x(te=>a.value(te.date)).y(te=>n.value(e.order==2?te.batSoc:te["soc"+m.value.connectedVehicle])??n.value(0))(h.data)??""),o=p(()=>e.order==2?"Speicher":m.value.connectedVehicle),u=p(()=>e.order==2?"Speicher":m.value.vehicleName),d=p(()=>{switch(e.order){case 0:return"var(--color-cp1)";case 1:return"var(--color-cp2)";case 2:return"var(--color-battery)";default:return"red"}}),s=p(()=>{switch(e.order){case 0:return e.width-3;case 1:return 3;case 2:return e.width/2;default:return 0}}),m=p(()=>{const k=e.order==2?0:e.order;return Object.values(w)[k]}),v=p(()=>{if(h.data.length>0){let k;switch(e.order){case 0:return k=h.data.length-1,n.value(h.data[k]["soc"+o.value]+2);case 1:return k=0,n.value(h.data[k]["soc"+o.value]+2);case 2:return k=Math.round(h.data.length/2),n.value(h.data[k].batSoc+2);default:return 0}}else return 0}),B=p(()=>{switch(e.order){case 0:return"end";case 1:return"start";case 2:return"middle";default:return"middle"}});return(k,R)=>(g(),b(ke,null,[l("path",{class:"soc-baseline",d:r.value,stroke:"var(--color-bg)","stroke-width":"1",fill:"none"},null,8,sr),l("path",{class:"soc-dashes",d:r.value,stroke:d.value,"stroke-width":"1",style:{strokeDasharray:"3,3"},fill:"none"},null,8,ir),l("text",{class:"cpname",x:s.value,y:v.value,style:ee({fill:d.value,fontSize:10}),"text-anchor":B.value},$(u.value),13,cr)],64))}}),lr=["transform"],dr=A({__name:"PgSocAxis",props:{width:{},height:{},margin:{}},setup(t){const e=t,a=p(()=>Te().range([e.height-10,0]).domain([0,100])),n=p(()=>ba(a.value).ticks(5).tickFormat(o=>o.toString()+"%"));function r(){let o=ye("g#PGSocAxis");o.call(n.value),o.selectAll(".tick").attr("font-size",12),o.selectAll(".tick line").attr("stroke","var(--color-bg)"),o.select(".domain").attr("stroke","var(--color-bg)")}return lt(()=>{r()}),(o,u)=>(g(),b("g",{id:"PGSocAxis",class:"axis",transform:"translate("+(o.width-20)+",0)"},null,8,lr))}}),ur={class:"btn-group m-0",role:"group","aria-label":"radiobar"},hr=["id","value"],pr=A({__name:"RadioBarInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,r=p({get(){return a.modelValue},set(d){n("update:modelValue",d)}});function o(d){let s=a.options[d].color?a.options[d].color:"var(--color-fg)";return a.options[d].active?{color:"var(--color-bg)",background:s}:{color:s}}function u(d){let s=d.target;for(;s&&!s.value&&s.parentElement;)s=s.parentElement;s.value&&(r.value=s.value)}return(d,s)=>(g(),b("div",null,[l("div",ur,[(g(!0),b(ke,null,Ae(d.options,(m,v)=>(g(),b("button",{id:"radio-"+m.value,key:v,class:ae(["btn btn-outline-secondary btn-sm radiobutton mx-0 mb-0 px-2",m.value==r.value?"active":""]),value:m.value,style:ee(o(v)),onClick:u},[l("span",{style:ee(o(v)),class:"scaled"},[m.icon?(g(),b("i",{key:0,class:ae(["fa-solid",m.icon])},null,2)):M("",!0),W(" "+$(m.text),1)],4)],14,hr))),128))])]))}}),ra=N(pr,[["__scopeId","data-v-60f5d4c2"]]),Ct=t=>(ce("data-v-7fd067cd"),t=t(),le(),t),gr=Ct(()=>l("i",{class:"fa-solid fa-xl fa-chevron-circle-up"},null,-1)),mr=[gr],vr=Ct(()=>l("span",{class:"fa-solid fa-xl fa-chevron-circle-left arrowButton"},null,-1)),fr=[vr],_r=Ct(()=>l("span",{class:"fa-solid fa-xl fa-circle-check"},null,-1)),yr=[_r],br=A({__name:"PgSelector",props:{widgetid:{},showLeftButton:{type:Boolean},showRightButton:{type:Boolean},ignoreLive:{type:Boolean}},emits:["shiftLeft","shiftRight","shiftUp","shiftDown"],setup(t){const e=t,a=_e(0),n=p(()=>{switch(h.graphMode){case"live":return e.ignoreLive?"heute":`${Z.duration} min`;case"today":return"heute";case"day":return J.date.getDate()+"."+(J.date.getMonth()+1)+".";case"month":return $a(Ie.month-1,Ie.year);case"year":return Oe.year.toString();default:return"???"}}),r=["live","today","day","month","year"],o=["Live","Heute","Tag","Monat","Jahr"],u=p({get(){return h.graphMode},set(D){switch(D){case"day":m();break;case"today":v();break;case"live":s();break;case"month":B();break;case"year":k()}}});function d(){a.value+=1,a.value>1&&(a.value=0)}function s(){h.graphMode!="live"&&(h.graphMode="live",K())}function m(){h.graphMode!="day"&&h.graphMode!="today"&&(h.graphMode="day",K())}function v(){h.graphMode!="today"&&(h.graphMode="today",Hn(new Date),K())}function B(){h.graphMode!="month"&&(h.graphMode="month",K())}function k(){h.graphMode!="year"&&(h.graphMode="year",K())}const R=p(()=>a.value>0?{border:"1px solid var(--color-frame)"}:""),te=p(()=>a.value==1?"justify-content-between":"justify-content-end"),se=p(()=>a.value==1?"justify-content-between":"justify-content-center");return(D,z)=>(g(),b("div",{class:"d-flex flex-column justify-content-center pgselector rounded",style:ee(R.value)},[a.value==2?(g(),T(ra,{key:0,id:"pgm2",modelValue:u.value,"onUpdate:modelValue":z[0]||(z[0]=H=>u.value=H),class:"m-2",options:r.map((H,C)=>({text:o[C],value:H,color:"var(--color-menu)",active:H==i(h).graphMode}))},null,8,["modelValue","options"])):M("",!0),a.value==1?(g(),b("span",{key:1,type:"button",class:ae(["arrowButton d-flex align-self-center mb-3 mt-3",{disabled:!e.showLeftButton}]),onClick:z[1]||(z[1]=H=>D.$emit("shiftUp"))},mr,2)):M("",!0),l("div",{class:ae(["d-flex align-items-center",se.value])},[a.value==1?(g(),b("span",{key:0,type:"button",class:ae(["p-1",{disabled:!e.showLeftButton}]),onClick:z[2]||(z[2]=H=>D.$emit("shiftLeft"))},fr,2)):M("",!0),a.value<2?(g(),b("span",{key:1,type:"button",class:"btn-outline-secondary p-2 px-3 badge rounded-pill datebadge",onClick:d},$(n.value),1)):M("",!0),a.value==1?(g(),b("span",{key:2,id:"graphRightButton",type:"button",class:ae(["arrowButton fa-solid fa-xl fa-chevron-circle-right p-1",{disabled:!e.showRightButton}]),onClick:z[3]||(z[3]=H=>D.$emit("shiftRight"))},null,2)):M("",!0)],2),l("div",{class:ae(["d-flex align-items-center",te.value])},[a.value==1?(g(),b("span",{key:0,class:"fa-solid fa-xl fa-chevron-circle-down p-1",style:ee({color:"var(--color-bg)"})},null,4)):M("",!0),a.value==1?(g(),b("span",{key:1,id:"graphLeftButton",type:"button",class:ae(["arrowButton fa-solid fa-xl fa-chevron-circle-down p-1",{disabled:!e.showLeftButton}]),onClick:z[4]||(z[4]=H=>D.$emit("shiftDown"))},null,2)):M("",!0),a.value>0?(g(),b("span",{key:2,type:"button",class:"p-1",onClick:z[5]||(z[5]=H=>a.value=0)},yr)):M("",!0)],2)],4))}}),oa=N(br,[["__scopeId","data-v-7fd067cd"]]),wr={class:"d-flex justify-content-end"},Sr={class:"grid-col-12"},kr=["viewBox"],xr=["transform"],Mr=2,Pr="Leistung / Ladestand ",$r=A({__name:"PowerGraph",setup(t){function e(){let a=f.usageStackOrder+1;a>Mr&&(a=0),f.usageStackOrder=a,Nn(!0)}return(a,n)=>(g(),T(ut,null,{title:x(()=>[W($(Pr))]),buttons:x(()=>[l("div",wr,[y(oa,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!1,onShiftLeft:i(It),onShiftRight:i(ta),onShiftUp:i(aa),onShiftDown:i(na)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])])]),default:x(()=>[l("div",Sr,[l("figure",{id:"powergraph",class:"p-0 m-0 align-self-stretch",onClick:e},[(g(),b("svg",{viewBox:"0 0 "+i(Pe)+" "+i(Ce)},[y(qn,{width:i(Pe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L)},null,8,["width","height","margin"]),y(Zn,{width:i(Pe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),"stack-order":i(f).usageStackOrder},null,8,["width","height","margin","stack-order"]),y(or,{width:i(Pe)-i(L).left-2*i(L).right,height:i(Ce)-i(L).top-i(L).bottom,margin:i(L),"graph-data":i(h)},null,8,["width","height","margin","graph-data"]),l("g",{transform:"translate("+i(L).left+","+i(L).top+")"},[(i(h).graphMode=="day"||i(h).graphMode=="today"||i(h).graphMode=="live")&&Object.values(i(w)).length>0?(g(),T(gt,{key:0,width:i(Pe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),order:0},null,8,["width","height","margin"])):M("",!0),(i(h).graphMode=="day"||i(h).graphMode=="today"||i(h).graphMode=="live")&&Object.values(i(w)).length>1?(g(),T(gt,{key:1,width:i(Pe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),order:1},null,8,["width","height","margin"])):M("",!0),["day","today","live"].includes(i(h).graphMode)&&i(U).isBatteryConfigured?(g(),T(gt,{key:2,width:i(Pe)-i(L).left-2*i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L),order:2},null,8,["width","height","margin"])):M("",!0),["day","today","live"].includes(i(h).graphMode)?(g(),T(dr,{key:3,width:i(Pe)-i(L).left-i(L).right,height:(i(Ce)-i(L).top-i(L).bottom)/2,margin:i(L)},null,8,["width","height","margin"])):M("",!0)],8,xr)],8,kr))])])]),_:1}))}}),Ir=N($r,[["__scopeId","data-v-ba892fa4"]]),Cr=["id"],Or=["x","width","height","fill"],Br=["x","width","height"],Tr=["x","y","width","height"],Ar=A({__name:"EmBar",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=p(()=>e.height-e.yScale(e.item.energy)-e.margin.top-e.margin.bottom),n=p(()=>e.item.energyPv>0?e.height-e.yScale(e.item.energyPv)-e.margin.top-e.margin.bottom:0),r=p(()=>e.item.energyPv>0?e.height-e.yScale(e.item.energyBat)-e.margin.top-e.margin.bottom:0);return(o,u)=>(g(),b("g",{id:"bar-"+e.item.name,transform:"scale(1,-1) translate (0,-445)"},[l("rect",{class:"bar",x:e.xScale(o.item.name),y:"0",width:e.xScale.bandwidth(),height:a.value,fill:o.item.color},null,8,Or),l("rect",{class:"bar",x:e.xScale(o.item.name)+e.xScale.bandwidth()/6,y:"0",width:e.xScale.bandwidth()*2/3,height:n.value,fill:"var(--color-pv)","fill-opacity":"66%"},null,8,Br),l("rect",{class:"bar",x:e.xScale(o.item.name)+e.xScale.bandwidth()/6,y:n.value,width:e.xScale.bandwidth()*2/3,height:r.value,fill:"var(--color-battery)","fill-opacity":"66%"},null,8,Tr)],8,Cr))}}),Vr={id:"emBargraph"},Lr=l("animateTransform",{"attribute-name":"transform",type:"scale",from:"1 0",to:"1 1",begin:"0s",dur:"2s"},null,-1),Dr=A({__name:"EMBarGraph",props:{plotdata:{},xScale:{},yScale:{},margin:{},height:{}},setup(t){const e=t;function a(r){if(r.name=="PV"){const o=h.graphMode=="live"||h.graphMode=="day"?G:P.items,d=(h.graphMode=="live"||h.graphMode=="day"?I:P.items).evuOut.energy,s=o.pv.energy;return Math.round((s-d)/s*100)}else if(r.name=="Netz"){const o=h.graphMode=="live"||h.graphMode=="day"?G:P.items,u=h.graphMode=="live"||h.graphMode=="day"?I:P.items,d=u.evuOut.energy,s=o.evuIn.energy,m=o.pv.energy,v=o.batOut.energy,B=u.batIn.energy;return Math.round((m+v-d-B)/(m+v+s-d-B)*100)}else return r.pvPercentage}function n(r){return r.name=="PV"?"Eigen":"Aut"}return(r,o)=>(g(),b("g",Vr,[(g(!0),b(ke,null,Ae(e.plotdata,(u,d)=>(g(),b("g",{key:d},[y(Ar,{item:u,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":n(u),autarchy:a(u)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128)),Lr]))}}),Er=["origin"],Gr=A({__name:"EMYAxis",props:{yScale:{type:[Function,Object]},width:{},fontsize:{}},setup(t){const e=t,a=p(()=>dt(e.yScale).tickFormat(r=>r>0?(r/1e3).toString():"").ticks(6).tickSizeInner(-e.width)),n=p(()=>{const r=ye("g#emYAxis");return r.attr("class","axis").call(a.value),r.append("text").attr("y",6).attr("dy","0.71em").attr("text-anchor","end").text("energy"),r.selectAll(".tick").attr("font-size",e.fontsize),f.showGrid?r.selectAll(".tick line").attr("stroke","var(--color-grid)").attr("stroke-width","0.5"):r.selectAll(".tick line").attr("stroke","var(--color-bg)"),r.select(".domain").attr("stroke","var(--color-bg)"),"emYAxis.vue"});return(r,o)=>(g(),b("g",{id:"emYAxis",class:"axis",origin:n.value},null,8,Er))}}),Wr=["id"],jr=["x","y","font-size"],Nr=["x","y","font-size","fill"],Ur=["x","y","font-size","fill"],zr=A({__name:"EmLabel",props:{item:{},xScale:{},yScale:{},margin:{},height:{},barcount:{},autarchy:{},autText:{}},setup(t){const e=t,a=p(()=>e.autarchy?e.yScale(e.item.energy)-25:e.yScale(e.item.energy)-10),n=p(()=>{let s=16,m=e.barcount;return m<=5?s=16:m==6?s=14:m>6&&m<=8?s=13:m==9?s=11:m==10?s=10:s=9,s}),r=p(()=>{let s=12,m=e.barcount;return m<=5?s=12:m==6?s=11:m>6&&m<=8||m==9?s=8:m==10?s=7:s=6,s});function o(s,m){return m.length>r.value?m.substring(0,r.value)+".":m}function u(){return e.autarchy?e.autText+": "+e.autarchy.toLocaleString(void 0)+" %":""}function d(){return"var(--color-pv)"}return(s,m)=>(g(),b("g",{id:"barlabel-"+e.item.name},[l("text",{x:e.xScale(s.item.name)+e.xScale.bandwidth()/2,y:a.value,"font-size":n.value,"text-anchor":"middle",fill:"var(--color-menu)"},$(i(Rt)(s.item.energy,i(f).decimalPlaces,!1)),9,jr),l("text",{x:e.xScale(s.item.name)+e.xScale.bandwidth()/2,y:e.yScale(s.item.energy)-10,"font-size":n.value-2,"text-anchor":"middle",fill:d()},$(u()),9,Nr),l("text",{x:e.xScale(s.item.name)+e.xScale.bandwidth()/2,y:e.height-e.margin.bottom-5,"font-size":n.value,"text-anchor":"middle",fill:s.item.color,class:ae(s.item.icon.length<=2?"fas":"")},$(o(s.item.name,s.item.icon)),11,Ur)],8,Wr))}}),Fr={id:"emBarLabels"},Jr=A({__name:"EMLabels",props:{plotdata:{},xScale:{},yScale:{},height:{},margin:{}},setup(t){const e=t;function a(r){if(r.name=="PV"){const o=h.graphMode=="live"||h.graphMode=="day"?G:P.items,d=(h.graphMode=="live"||h.graphMode=="day"?I:P.items).evuOut.energy,s=o.pv.energy;return Math.round((s-d)/s*100)}else if(r.name=="Netz"){const o=h.graphMode=="live"||h.graphMode=="day"?G:P.items,u=h.graphMode=="live"||h.graphMode=="day"?I:P.items,d=u.evuOut.energy,s=o.evuIn.energy,m=o.pv.energy,v=o.batOut.energy,B=u.batIn.energy;return m+v-d-B>0?Math.round((m+v-d-B)/(m+v+s-d-B)*100):0}else return r.pvPercentage}function n(r){return r.name=="PV"?"Eigen":"Aut"}return(r,o)=>(g(),b("g",Fr,[(g(!0),b(ke,null,Ae(e.plotdata,(u,d)=>(g(),b("g",{key:d},[y(zr,{item:u,"x-scale":e.xScale,"y-scale":e.yScale,margin:e.margin,height:e.height,barcount:e.plotdata.length,"aut-text":n(u),autarchy:a(u)},null,8,["item","x-scale","y-scale","margin","height","barcount","aut-text","autarchy"])]))),128))]))}}),Rr={class:"grid-col-12"},Hr={id:"energymeter",class:"energymeter p-0 m-0 align-self-stretch"},Yr={viewBox:"0 0 500 500"},qr=["transform"],Qr=["x"],Zr={key:0},Et=500,mt=500,Gt=12,Xr="Energie",Kr=A({__name:"EnergyMeter",setup(t){const e={top:25,bottom:30,left:25,right:0},a=p(()=>{let u=Object.values(G),d=o.value,s=P.values(),m=[];switch(f.debug&&(console.debug("----------------------- source summary -----------------"),console.debug(G),console.debug("----------------------- usage details ------------------"),console.debug(o.value),console.debug("----------------------- historic summary ---------------"),console.debug(P),console.debug("--------------------------------------------------------")),ot.value==!0&&(ot.value=!1),h.graphMode){default:case"live":case"today":m=u.concat(d).filter(v=>v.energy>0);break;case"day":case"month":case"year":s.length==0?Fe.value=!0:(Fe.value=!1,m=s.filter(v=>v.energy>0))}return m}),n=p(()=>_t().range([0,Et-e.left-e.right]).domain(a.value.map(u=>u.name)).padding(.4)),r=p(()=>Te().range([mt-e.bottom-e.top,15]).domain([0,wa(a.value,u=>u.energy)])),o=p(()=>{const u=Object.values(w).length,d=Object.values(E).filter(s=>s.configured).length;return[I.evuOut,I.devices,I.charging].concat(u>1?Object.values(w).map(s=>s.toPowerItem()):[]).concat(d>1?Object.values(E).filter(s=>s.configured&&s.showInGraph):[]).concat([I.batIn,I.house])});return(u,d)=>(g(),T(ut,null,{title:x(()=>[W($(Xr))]),buttons:x(()=>[y(oa,{widgetid:"graphsettings","show-left-button":!0,"show-right-button":!0,"ignore-live":!0,onShiftLeft:i(It),onShiftRight:i(ta),onShiftUp:i(aa),onShiftDown:i(na)},null,8,["onShiftLeft","onShiftRight","onShiftUp","onShiftDown"])]),default:x(()=>[l("div",Rr,[l("figure",Hr,[(g(),b("svg",Yr,[l("g",{transform:"translate("+e.left+","+e.top+")"},[y(Dr,{plotdata:a.value,"x-scale":n.value,"y-scale":r.value,height:mt,margin:e},null,8,["plotdata","x-scale","y-scale"]),y(Gr,{"y-scale":r.value,width:Et,fontsize:Gt,config:i(f)},null,8,["y-scale","config"]),l("text",{x:-e.left,y:"-15",fill:"var(--color-axis)","font-size":Gt},$(i(h).graphMode=="year"?"MWh":"kWh"),9,Qr),y(Jr,{plotdata:a.value,"x-scale":n.value,"y-scale":r.value,height:mt,margin:e,config:i(f)},null,8,["plotdata","x-scale","y-scale","config"])],8,qr)]))])]),i(Fe)?(g(),b("p",Zr,"No data")):M("",!0)]),_:1}))}}),eo=N(Kr,[["__scopeId","data-v-69785337"]]),sa=t=>(ce("data-v-dff8d7c2"),t=t(),le(),t),to=["id"],ao={class:"modal-dialog modal-lg modal-fullscreen-lg-down"},no={class:"modal-content"},ro={class:"modal-header"},oo={class:"modal-title scaled"},so=sa(()=>l("button",{type:"button",class:"btn-close buttonTextSize d-flex justify-content-center pt-3 pb-0","data-bs-dismiss":"modal"},[l("i",{class:"fa-solid fa-lg fa-circle-check m-0 p-0"})],-1)),io={class:"modal-body"},co=sa(()=>l("div",{class:"modal-footer"},null,-1)),lo=A({__name:"ModalComponent",props:{modalId:{}},setup(t){const e=t;return(a,n)=>(g(),b("div",{id:e.modalId,class:"modal fade"},[l("div",ao,[l("div",no,[l("div",ro,[l("h3",oo,[ve(a.$slots,"title",{},void 0)]),so]),l("div",io,[ve(a.$slots,"default",{},void 0)]),co])])],8,to))}}),vt=N(lo,[["__scopeId","data-v-dff8d7c2"]]),uo={class:"digit scaled",type:"button"},ho=A({__name:"PadButton",props:{modelValue:{},color:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=_e(!1);function r(){n.value=!0,u("update:modelValue",a.modelValue),setTimeout(()=>{n.value=!1},300)}const o=p(()=>n.value?{"background-color":"white",color:"black"}:{"background-color":a.color??"var(--color-axis)"}),u=e;return(d,s)=>(g(),b("div",{class:"padbutton",style:ee(o.value),onClick:r},[l("span",uo,[ve(d.$slots,"default",{},void 0)])],4))}}),Qe=N(ho,[["__scopeId","data-v-cc256a6f"]]),ia=t=>(ce("data-v-63c8fa5c"),t=t(),le(),t),po={class:"numberpad"},go={class:"codedisplay scaled"},mo={class:"numberentry"},vo=ia(()=>l("span",{class:"fas fa-delete-left"},null,-1)),fo=ia(()=>l("span",{class:"fas fa-circle-check"},null,-1)),_o=A({__name:"NumberPad",props:{modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const n=_e(t.modelValue),r=e,o=p(()=>n.value.length==0?"Bitte geben Sie die PIN ein":"*".repeat(n.value.length));function u(d){d==-1?n.value=n.value.slice(0,-1):d==-2?(r("update:modelValue",n.value),n.value=""):n.value=n.value+d.toString()}return(d,s)=>(g(),b("div",po,[l("p",go,$(o.value),1),l("div",mo,[(g(),b(ke,null,Ae(9,m=>y(Qe,{key:m,"model-value":m,"onUpdate:modelValue":u},{default:x(()=>[W($(m),1)]),_:2},1032,["model-value"])),64)),y(Qe,{"model-value":0,"onUpdate:modelValue":u},{default:x(()=>[W("0")]),_:1}),y(Qe,{"model-value":-1,color:"var(--color-devices)","onUpdate:modelValue":u},{default:x(()=>[vo]),_:1}),y(Qe,{"model-value":-2,color:"var(--color-devices)","data-bs-dismiss":"modal","onUpdate:modelValue":u},{default:x(()=>[fo]),_:1})])]))}}),yo=N(_o,[["__scopeId","data-v-63c8fa5c"]]),qe=t=>(ce("data-v-6a182015"),t=t(),le(),t),bo={class:"statustable"},wo=qe(()=>l("span",{class:"header"},"IP-Adresse:",-1)),So=qe(()=>l("span",{class:"header"},"Systemzeit:",-1)),ko=qe(()=>l("span",{class:"header"},"Version:",-1)),xo=qe(()=>l("span",{class:"header"},"Version (Details):",-1)),Mo=qe(()=>l("span",{class:"header"},"Entwicklungszweig:",-1)),Po=A({__name:"StatusPage",setup(t){return(e,a)=>(g(),b("div",bo,[wo,l("span",null,$(i(U).ipAddress),1),So,l("span",null,$(new Date(i(U).systemTime*1e3).toLocaleString(void 0)),1),ko,l("span",null,$(i(U).version),1),xo,l("span",null,$(i(U).versionDetails),1),Mo,l("span",null,$(i(U).devBranch),1)]))}}),$o=N(Po,[["__scopeId","data-v-6a182015"]]),Io={class:"configitem subgrid"},Co={class:"d-flex align-items-baseline m-0 p-0 grid-col-6 scaled"},Oo={class:"ms-1 mb-2 p-0 pt-2 d-flex justify-content-stretch align-items-center grid-col-6"},Bo={class:"justify-content-stretch d-flex"},To=A({__name:"ConfigItem",props:{title:{},infotext:{},icon:{},iconcolor:{},fullwidth:{type:Boolean}},setup(t){const e=t;return(a,n)=>(g(),b("div",Io,[l("span",Co,[e.icon?(g(),b("i",{key:0,class:ae(["fa-solid fa-sm m-0 p-0 me-2 item-icon",e.icon]),style:ee({color:e.iconcolor?e.iconcolor:"var(--color-charging)"})},null,6)):M("",!0),W(" "+$(a.title),1)]),l("div",Oo,[l("span",Bo,[ve(a.$slots,"default",{},void 0)])])]))}}),Q=N(To,[["__scopeId","data-v-40d270c0"]]),ca=t=>(ce("data-v-0e01f92a"),t=t(),le(),t),Ao={class:"rangewidget d-flex flex-column"},Vo={class:"rangeslider d-flex flex-fill justify-content-between align-items-center"},Lo=ca(()=>l("i",{class:"fa fa-xl fa-minus-square me-2"},null,-1)),Do=[Lo],Eo=["id","min","max","step"],Go=ca(()=>l("i",{class:"fa fa-xl fa-plus-square ms-2"},null,-1)),Wo=[Go],jo={class:"d-flex justify-content-between align-items-center"},No={class:"minlabel ps-4"},Uo={class:"valuelabel"},zo={class:"maxlabel pe-4"},Fo=A({__name:"RangeInput",props:{id:{},min:{},max:{},step:{},unit:{},decimals:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=a.decimals??0,r=e,o=p({get(){return Math.round(a.modelValue*Math.pow(10,n))/Math.pow(10,n)},set(s){r("update:modelValue",s)}});function u(){o.value>a.min&&(o.value=Math.round((o.value-a.step)*Math.pow(10,n))/Math.pow(10,n))}function d(){o.value<a.max&&(o.value=Math.round((o.value+a.step)*Math.pow(10,n))/Math.pow(10,n))}return(s,m)=>(g(),b("span",Ao,[l("span",Vo,[l("span",{type:"button",class:"minusButton",onClick:u},Do),Ne(l("input",{id:s.id,"onUpdate:modelValue":m[0]||(m[0]=v=>o.value=v),type:"range",class:"form-range flex-fill",min:s.min,max:s.max,step:s.step},null,8,Eo),[[Sa,o.value,void 0,{number:!0}]]),l("span",{type:"button",class:"plusButton",onClick:d},Wo)]),l("span",jo,[l("span",No,$(s.min),1),l("span",Uo,$(o.value)+" "+$(s.unit),1),l("span",zo,$(s.max),1)])]))}}),Be=N(Fo,[["__scopeId","data-v-0e01f92a"]]),Jo=["id","value"],Ro=A({__name:"RadioInput",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,r=p({get(){return a.modelValue},set(d){n("update:modelValue",d)}});function o(d){return a.options[d][2]?{color:a.options[d][2]}:{color:"var(--color-fg)"}}function u(d){let s=d.target;for(;s&&!s.value&&s.parentElement;)s=s.parentElement;s.value&&(r.value=s.value)}return(d,s)=>(g(),b("div",null,[(g(!0),b(ke,null,Ae(d.options,(m,v)=>(g(),b("button",{id:"radio-"+m[1],key:v,class:ae(["btn btn-outline-secondary radiobutton me-2 mb-0 px-2",m[1]==r.value?"active":""]),value:m[1],style:ee(o(v)),onClick:u},[l("span",{style:ee(o(v)),class:"scaled"},[m[3]?(g(),b("i",{key:0,class:ae(["fa-solid",m[3]])},null,2)):M("",!0),W(" "+$(m[0]),1)],4)],14,Jo))),128))]))}}),tt=N(Ro,[["__scopeId","data-v-005a14a9"]]),Ho={class:"instantsettings mt-5 grid12"},Yo={key:0},qo=A({__name:"CPConfigInstant",props:{chargepointId:{}},setup(t){const e=t,a=p(()=>w[e.chargepointId]),n=[{name:"keine",id:"none"},{name:"EV-SoC",id:"soc"},{name:"Energiemenge",id:"amount"}],r=p({get(){return a.value.instantMaxEnergy/1e3},set(o){a.value.instantMaxEnergy=o*1e3}});return(o,u)=>(g(),b("div",Ho,[y(Q,{title:"Stromstärke",icon:"fa-bolt",fullwidth:!0},{default:x(()=>[y(Be,{id:"targetCurrent",modelValue:a.value.instantTargetCurrent,"onUpdate:modelValue":u[0]||(u[0]=d=>a.value.instantTargetCurrent=d),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1}),a.value.instantChargeLimitMode!="none"?(g(),b("hr",Yo)):M("",!0),y(Q,{title:"Begrenzung",icon:"fa-hand",fullwidth:!0},{default:x(()=>[y(tt,{modelValue:a.value.instantChargeLimitMode,"onUpdate:modelValue":u[1]||(u[1]=d=>a.value.instantChargeLimitMode=d),options:n.map(d=>[d.name,d.id])},null,8,["modelValue","options"])]),_:1}),a.value.instantChargeLimitMode=="soc"?(g(),T(Q,{key:1,title:"Maximaler SoC",icon:"fa-sliders",fullwidth:!0},{default:x(()=>[y(Be,{id:"maxSoc",modelValue:a.value.instantTargetSoc,"onUpdate:modelValue":u[2]||(u[2]=d=>a.value.instantTargetSoc=d),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),a.value.instantChargeLimitMode=="amount"?(g(),T(Q,{key:2,title:"Zu ladende Energie",icon:"fa-sliders",fullwidth:!0},{default:x(()=>[y(Be,{id:"maxEnergy",modelValue:r.value,"onUpdate:modelValue":u[3]||(u[3]=d=>r.value=d),min:0,max:100,step:1,unit:"kWh"},null,8,["modelValue"])]),_:1})):M("",!0)]))}}),Qo=N(qo,[["__scopeId","data-v-02d97261"]]),Zo={class:"form-check form-switch d-flex align-items-center justify-content-center"},Xo=A({__name:"SwitchInput",props:{modelValue:{type:Boolean},onColor:{},offColor:{}},emits:["update:modelValue"],setup(t,{emit:e}){const a=t,n=e,r=p({get(){return a.modelValue},set(o){n("update:modelValue",o)}});return(o,u)=>(g(),b("div",Zo,[Ne(l("input",{"onUpdate:modelValue":u[0]||(u[0]=d=>r.value=d),class:"form-check-input",type:"checkbox",role:"switch"},null,512),[[ka,r.value]])]))}}),ge=N(Xo,[["__scopeId","data-v-547e6de4"]]),Ko={class:"pvsettings pt-5 grid12"},es=A({__name:"CPConfigPv",props:{chargepointId:{}},setup(t){const e=t,a=p(()=>w[e.chargepointId]),n=p({get(){return a.value.pvMinCurrent>5},set(u){u?a.value.pvMinCurrent=6:a.value.pvMinCurrent=0}}),r=p({get(){return a.value.pvMinSoc>0},set(u){u?a.value.pvMinSoc=50:a.value.pvMinSoc=0}}),o=p({get(){return a.value.pvMaxSoc<=100},set(u){u?a.value.pvMaxSoc=100:a.value.pvMaxSoc=101}});return(u,d)=>(g(),b("div",Ko,[y(Q,{title:"Ladestand begrenzen",icon:"fa-battery-three-quarters",fullwidth:!0},{default:x(()=>[y(ge,{id:"limitSoc",modelValue:o.value,"onUpdate:modelValue":d[0]||(d[0]=s=>o.value=s)},null,8,["modelValue"])]),_:1}),o.value?(g(),T(Q,{key:0,title:"...auf maximal...",icon:"fa-battery-three-quarters",fullwidth:!0},{default:x(()=>[y(Be,{id:"maxSoc",modelValue:a.value.pvMaxSoc,"onUpdate:modelValue":d[1]||(d[1]=s=>a.value.pvMaxSoc=s),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),y(Q,{title:"Einspeisegrenze beachten",icon:"fa-hand",fullwidth:!0},{default:x(()=>[y(ge,{modelValue:a.value.pvFeedInLimit,"onUpdate:modelValue":d[2]||(d[2]=s=>a.value.pvFeedInLimit=s)},null,8,["modelValue"])]),_:1}),y(Q,{title:"Mindest-Ladestand",icon:"fa-battery-half",fullwidth:!0},{default:x(()=>[y(ge,{modelValue:r.value,"onUpdate:modelValue":d[3]||(d[3]=s=>r.value=s)},null,8,["modelValue"])]),_:1}),r.value?(g(),T(Q,{key:1,title:"...bis SoC",fullwidth:!0},{default:x(()=>[y(Be,{id:"minSoc",modelValue:a.value.pvMinSoc,"onUpdate:modelValue":d[4]||(d[4]=s=>a.value.pvMinSoc=s),min:0,max:100,step:1,unit:"%"},null,8,["modelValue"])]),_:1})):M("",!0),r.value?(g(),T(Q,{key:2,title:"...mit Ladestrom",fullwidth:!0},{default:x(()=>[y(Be,{id:"minSocCurrent",modelValue:a.value.pvMinSocCurrent,"onUpdate:modelValue":d[5]||(d[5]=s=>a.value.pvMinSocCurrent=s),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):M("",!0),y(Q,{title:"Minimaler Ladestrom",icon:"fa-bolt",fullwidth:!0},{default:x(()=>[y(ge,{modelValue:n.value,"onUpdate:modelValue":d[6]||(d[6]=s=>n.value=s)},null,8,["modelValue"])]),_:1}),n.value?(g(),T(Q,{key:3,title:"...bei Ladestrom (minimal)",fullwidth:!0},{default:x(()=>[y(Be,{id:"minCurrent",modelValue:a.value.pvMinCurrent,"onUpdate:modelValue":d[7]||(d[7]=s=>a.value.pvMinCurrent=s),min:6,max:32,step:1,unit:"A"},null,8,["modelValue"])]),_:1})):M("",!0)]))}}),ts=N(es,[["__scopeId","data-v-455524b6"]]),as=t=>(ce("data-v-ff0b6341"),t=t(),le(),t),ns={class:"schedulestable p-3 grid12"},rs=as(()=>l("div",{class:"subtitle grid-col-12"},"Pläne für Zielladen:",-1)),os={key:0,class:"warning grid-col-12 p-5"},ss=Ft('<div class="subgrid tableheader" data-v-ff0b6341><span class="grid-col-2 grid-left" data-v-ff0b6341></span><span class="grid-col-3 grid-left" data-v-ff0b6341>Startzeit</span><span class="grid-col-2" data-v-ff0b6341>SoC-Ziel</span><span class="grid-col-2" data-v-ff0b6341>SoC-Limit</span><span class="grid-col-3" data-v-ff0b6341>Wiederholung</span></div>',1),is={class:"grid-col-2"},cs={class:"grid-col-3 grid-left"},ls={class:"grid-col-2"},ds={class:"grid-col-2"},us={class:"grid-col-3"},hs=A({__name:"CPConfigScheduled",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,n=p(()=>Ue[a.chargeTemplateId]?Object.values(Ue[a.chargeTemplateId]):[]);function r(d){console.log(`update ${d}`),q("cpScheduledPlanActive",n.value[d].active,a.chargeTemplateId,d)}function o(d){return n.value[d].time}function u(d){return{"font-weight":n.value[d].active?"bold":"regular"}}return(d,s)=>(g(),b("div",ns,[rs,n.value.length==0?(g(),b("div",os," Es sind noch keine Pläne definiert. Pläne für das Zielladen können in der Web-App festgelegt werden. ")):M("",!0),ss,(g(!0),b(ke,null,Ae(n.value,(m,v)=>(g(),b("div",{key:v,style:ee(u(v)),class:"subgrid tableline"},[l("span",is,[y(ge,{modelValue:m.active,"onUpdate:modelValue":[B=>m.active=B,B=>r(v)]},null,8,["modelValue","onUpdate:modelValue"])]),l("span",cs,$(o(v)),1),l("span",ls,$(m.limit.soc_scheduled)+"%",1),l("span",ds,$(m.limit.soc_limit)+"%",1),l("span",us,$(e[m.frequency.selected]),1)],4))),128))]))}}),ps=N(hs,[["__scopeId","data-v-ff0b6341"]]),gs=t=>(ce("data-v-ace151e1"),t=t(),le(),t),ms={class:"timeplantable p-3 grid12"},vs=gs(()=>l("div",{class:"subtitle grid-col-12"},"Zeitpläne:",-1)),fs={key:0,class:"warning grid-col-12 p-5"},_s=Ft('<div class="subgrid tableheader" data-v-ace151e1><span class="grid-col-2" data-v-ace151e1></span><span class="grid-col-3 grid-left" data-v-ace151e1>Von</span><span class="grid-col-2" data-v-ace151e1>Bis</span><span class="grid-col-2" data-v-ace151e1>Ladestrom</span><span class="grid-col-3" data-v-ace151e1>Wiederholung</span></div>',1),ys={class:"grid-col-2"},bs={class:"grid-col-3 grid-left"},ws={class:"grid-col-2"},Ss={class:"grid-col-2"},ks={class:"grid-col-3"},xs=A({__name:"CPConfigTimed",props:{chargeTemplateId:{}},setup(t){const e={daily:"Täglich",once:"Einmal",weekly:"Wöchentlich"},a=t,n=p(()=>ze[a.chargeTemplateId]?Object.values(ze[a.chargeTemplateId])??[]:[]);function r(u){console.log(`update ${u}`),q("cpTimedPlanActive",n.value[u].active,a.chargeTemplateId,u)}function o(u){return{"font-weight":n.value[u].active?"bold":"regular"}}return(u,d)=>(g(),b("div",ms,[vs,n.value.length==0?(g(),b("div",fs," Es sind noch keine Pläne definiert. Zeitpläne können in der Web-App festgelegt werden. ")):M("",!0),_s,(g(!0),b(ke,null,Ae(n.value,(s,m)=>(g(),b("div",{key:m,style:ee(o(m)),class:"subgrid tableline"},[l("span",ys,[y(ge,{modelValue:s.active,"onUpdate:modelValue":[v=>s.active=v,v=>r(m)]},null,8,["modelValue","onUpdate:modelValue"])]),l("span",bs,$(s.time[0]),1),l("span",ws,$(s.time[1]),1),l("span",Ss,$(s.current)+"A",1),l("span",ks,$(e[s.frequency.selected]),1)],4))),128))]))}}),Ms=N(xs,[["__scopeId","data-v-ace151e1"]]),Ps=t=>(ce("data-v-ed7593cf"),t=t(),le(),t),$s={class:"settingslist"},Is=Ps(()=>l("hr",{class:"grid-col-12 my-2"},null,-1)),Cs={key:2,class:"grid-col-12 my-2"},Os=A({__name:"CPChargeConfig",props:{chargepointId:{}},setup(t){const e=t,a=p(()=>w[e.chargepointId]),n=p({get:()=>a.value.connectedVehicle,set:u=>{w[a.value.id].connectedVehicle=u}}),r=p({get:()=>a.value.etActive,set:u=>{w[a.value.id].etActive=u}}),o=p({get:()=>a.value.timedCharging,set:u=>{w[a.value.id].timedCharging=u}});return(u,d)=>(g(),b("div",$s,[Object.keys(i(j)).length>1?(g(),T(Q,{key:0,title:"Fahrzeug wechseln",icon:"fa-car",fullwidth:!0},{default:x(()=>[y(tt,{modelValue:n.value,"onUpdate:modelValue":d[0]||(d[0]=s=>n.value=s),modelModifiers:{number:!0},options:Object.values(i(j)).map(s=>[s.name,s.id])},null,8,["modelValue","options"])]),_:1})):M("",!0),Object.keys(i(ie)).length>1?(g(),T(Q,{key:1,title:"Ladeprofil",icon:"fa-sliders",iconcolor:"var(--color-pv)"},{default:x(()=>[i(j)[n.value]?(g(),T(tt,{key:0,modelValue:i(j)[n.value].chargeTemplateId,"onUpdate:modelValue":d[1]||(d[1]=s=>i(j)[n.value].chargeTemplateId=s),modelModifiers:{number:!0},options:Object.keys(i(ie)).map(s=>[i(ie)[+s].name,s])},null,8,["modelValue","options"])):M("",!0)]),_:1})):M("",!0),Is,y(Q,{title:"Priorität",icon:"fa-star",iconcolor:"var(--color-evu)",fullwidth:!0},{default:x(()=>[y(ge,{modelValue:a.value.hasPriority,"onUpdate:modelValue":d[2]||(d[2]=s=>a.value.hasPriority=s)},null,8,["modelValue"])]),_:1}),y(Q,{title:"Zeitplan aktivieren",icon:"fa-clock",iconcolor:"var(--color-battery)"},{default:x(()=>[y(ge,{modelValue:o.value,"onUpdate:modelValue":d[3]||(d[3]=s=>o.value=s)},null,8,["modelValue"])]),_:1}),y(Q,{title:"Sperren",icon:"fa-lock",iconcolor:"var(--color-evu)",fullwidth:!0},{default:x(()=>[y(ge,{modelValue:a.value.isLocked,"onUpdate:modelValue":d[4]||(d[4]=s=>a.value.isLocked=s)},null,8,["modelValue"])]),_:1}),y(Q,{title:"Strompreisbasiert laden",icon:"fa-coins",iconcolor:"var(--color-battery)"},{default:x(()=>[y(ge,{modelValue:r.value,"onUpdate:modelValue":d[5]||(d[5]=s=>r.value=s)},null,8,["modelValue"])]),_:1}),i(U).isBatteryConfigured?(g(),b("hr",Cs)):M("",!0),i(U).isBatteryConfigured?(g(),T(Q,{key:3,title:"PV-Priorität (global)",icon:"fa-car-battery",iconcolor:"var(--color-battery)",fullwidth:!0},{default:x(()=>[y(tt,{modelValue:i(U).pvBatteryPriority,"onUpdate:modelValue":d[6]||(d[6]=s=>i(U).pvBatteryPriority=s),options:i(Na)},null,8,["modelValue","options"])]),_:1})):M("",!0)]))}}),Bs=N(Os,[["__scopeId","data-v-ed7593cf"]]),Ts={class:"pricesettings grid12"},As={class:"subtitle grid-col-12"},Vs={class:"grapharea"},Ls={id:"pricechart"},Ds={viewBox:"0 0 400 300"},Es=["id","origin","transform"],Gs={class:"controlarea d-flex align-items-center"},Ws={class:"priceinput d-flex flex-column justify-content-center align-items-center"},js={class:"grid12 pb-5"},Ns=["disabled"],Ze=400,ft=250,Wt=12,Us=A({__name:"PriceChart",props:{chargePointId:{},globalview:{type:Boolean}},setup(t){const e=t,a=p(()=>w[e.chargePointId]),n=_e(a.value.etMaxPrice),r=_e(!1),o=p({get:()=>n.value,set(_){n.value=_,r.value=!0}}),u=p({get:()=>a.value.etActive,set:_=>{a.value.etActive=_}});function d(){a.value&&(a.value.etMaxPrice=o.value),r.value=!1}const s=_e(!1),m={top:0,bottom:15,left:20,right:15},v=p(()=>{let _=[];return X.etPriceList.size>0&&X.etPriceList.forEach((O,V)=>{_.push([V,O])}),_}),B=p(()=>v.value.length>1?(Ze-m.left-m.right)/v.value.length-1:0),k=p(()=>r.value?{background:"var(--color-charging)"}:{background:"var(--color-menu)"}),R=p(()=>{let _=Le(v.value,O=>O[0]);return _[1]&&(_[1]=new Date(_[1]),_[1].setTime(_[1].getTime()+36e5)),Re().range([m.left,Ze-m.right]).domain(_)}),te=p(()=>{let _=Le(v.value,O=>O[1]);return _[0]=_[0]?Math.floor(_[0]-1):0,_[1]=_[1]?Math.floor(_[1]+1):0,_}),se=p(()=>Te().range([ft-m.bottom,0]).domain(te.value)),D=p(()=>{const _=zt(),O=[[m.left,se.value(o.value)],[Ze-m.right-1,se.value(o.value)]];return _(O)}),z=p(()=>Ke(R.value).ticks(v.value.length).tickSize(5).tickSizeInner(-ft).tickFormat(_=>_.getHours()%6==0?yt("%H:%M")(_):"")),H=p(()=>dt(se.value).ticks(6).tickSizeInner(-(Ze-m.right-m.left)).tickFormat(_=>_.toString())),C=p(()=>{s.value==!0;const _=ye("g#"+S.value);_.selectAll("*").remove(),_.selectAll("bar").data(v.value).enter().append("g").append("rect").attr("class","bar").attr("x",me=>R.value(me[0])).attr("y",me=>se.value(me[1])).attr("width",B.value).attr("height",me=>se.value(te.value[0])-se.value(me[1])).attr("fill",me=>me[1]<=o.value?"var(--color-charging)":"var(--color-axis)");const V=_.append("g").attr("class","axis").call(z.value);V.attr("transform","translate(0,"+(ft-m.bottom)+")"),V.selectAll(".tick").attr("font-size",Wt).attr("color","var(--color-bg)"),V.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",me=>me.getHours()%6==0?"2":"0.5"),V.select(".domain").attr("stroke","var(--color-bg");const re=_.append("g").attr("class","axis").call(H.value);return re.attr("transform","translate("+m.left+",0)"),re.selectAll(".tick").attr("font-size",Wt).attr("color","var(--color-bg)"),re.selectAll(".tick line").attr("stroke","var(--color-bg)").attr("stroke-width",me=>me%5==0?"2":"0.5"),re.select(".domain").attr("stroke","var(--color-bg)"),_.append("path").attr("d",D.value).attr("stroke","yellow"),"PriceChart.vue"}),S=p(()=>a.value?"priceChartCanvas"+a.value.id:"priceChartCanvasGlobal");return lt(()=>{s.value=!s.value}),xa(()=>{n.value=a.value.etMaxPrice}),(_,O)=>(g(),b("div",Ts,[l("div",As,"Anbieter: "+$(i(X).etProvider),1),l("div",Vs,[l("figure",Ls,[(g(),b("svg",Ds,[l("g",{id:S.value,origin:C.value,transform:"translate("+m.top+","+m.right+")"},null,8,Es)]))])]),l("div",Gs,[l("div",Ws,[l("div",js,[y(Q,{title:"Strompreisbasiert laden",icon:"fa-coins",iconcolor:"var(--color-battery)"},{default:x(()=>[y(ge,{modelValue:u.value,"onUpdate:modelValue":O[0]||(O[0]=V=>u.value=V)},null,8,["modelValue"])]),_:1})]),y(Be,{id:"etmaxprice",modelValue:o.value,"onUpdate:modelValue":O[1]||(O[1]=V=>o.value=V),min:-25,max:95,step:.1,decimals:1,unit:"ct"},null,8,["modelValue"]),l("span",{class:"pt-3",onClick:d},[l("button",{type:"button",class:"btn btn-lg btn-secondary",style:ee(k.value),disabled:!r.value}," Bestätigen ",12,Ns)])])]),l("span",null,$(o.value),1)]))}}),zs=N(Us,[["__scopeId","data-v-08931d61"]]),Ge=t=>(ce("data-v-06d2c4a9"),t=t(),le(),t),Fs={class:"m-0 mt-1 p-0 grid-col-12 tabarea"},Js={class:"nav nav-tabs nav-justified mx-1 mt-1",role:"tablist"},Rs=["id","data-bs-target"],Hs=Ge(()=>l("i",{class:"fa-solid fa-charging-station"},null,-1)),Ys=["id","data-bs-target"],qs=Ge(()=>l("i",{class:"fa-solid fa-lg fa-bolt"},null,-1)),Qs=["id","data-bs-target"],Zs=Ge(()=>l("i",{class:"fa-solid fa-solar-panel me-1"},null,-1)),Xs=["id","data-bs-target"],Ks=Ge(()=>l("i",{class:"fa-solid fa-bullseye me-1"},null,-1)),ei=["id","data-bs-target"],ti=Ge(()=>l("i",{class:"fa-solid fa-clock"},null,-1)),ai=["id","data-bs-target"],ni=Ge(()=>l("i",{class:"fa-solid fa-coins"},null,-1)),ri={id:"settingsPanes",class:"tab-content mt-2"},oi=["id"],si=["id"],ii=["id"],ci=["id"],li=["id"],di=["id"],ui=A({__name:"SettingsPage",props:{chargepoint:{}},setup(t){const e=t,a=p(()=>ie[e.chargepoint.chargeTemplate]),n=p(()=>e.chargepoint.id);return(r,o)=>(g(),b("div",Fs,[l("nav",Js,[l("a",{id:"chSettings"+n.value,class:"nav-link active","data-bs-toggle":"tab","data-bs-target":"#chargeSettings"+n.value},[Hs,W(" Allgemein ")],8,Rs),l("a",{id:"inSettings"+n.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#instantSettings"+n.value},[qs,W(" Sofort ")],8,Ys),l("a",{id:"phvSettings"+n.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#pvSettings"+n.value},[Zs,W(" PV ")],8,Qs),l("a",{id:"scSettings"+n.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#scheduledSettings"+n.value},[Ks,W(" Zielladen ")],8,Xs),l("a",{id:"tmSettings"+n.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#timeSettings"+n.value},[ti,W(" Zeitpläne ")],8,ei),l("a",{id:"prSettings"+n.value,class:"nav-link","data-bs-toggle":"tab","data-bs-target":"#priceSettings"+n.value},[ni,W(" Strompreis ")],8,ai)]),l("div",ri,[l("div",{id:"chargeSettings"+n.value,class:"tab-pane active",role:"tabpanel","aria-labelledby":"instant-tab"},[y(Bs,{"chargepoint-id":n.value},null,8,["chargepoint-id"])],8,oi),l("div",{id:"instantSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"instant-tab"},[y(Qo,{"chargepoint-id":n.value},null,8,["chargepoint-id"])],8,si),l("div",{id:"pvSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"pv-tab"},[y(ts,{"chargepoint-id":n.value},null,8,["chargepoint-id"])],8,ii),l("div",{id:"scheduledSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"scheduled-tab"},[a.value!=null?(g(),T(ps,{key:0,"charge-template-id":e.chargepoint.chargeTemplate},null,8,["charge-template-id"])):M("",!0)],8,ci),l("div",{id:"timeSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"time-tab"},[a.value!=null?(g(),T(Ms,{key:0,"charge-template-id":e.chargepoint.chargeTemplate},null,8,["charge-template-id"])):M("",!0)],8,li),l("div",{id:"priceSettings"+n.value,class:"tab-pane",role:"tabpanel","aria-labelledby":"price-tab"},[i(X).active?(g(),T(zs,{key:0,"charge-point-id":e.chargepoint.id},null,8,["charge-point-id"])):M("",!0)],8,di)])]))}}),hi=N(ui,[["__scopeId","data-v-06d2c4a9"]]);function pi(t,e){t=="openWB/graph/boolDisplayLiveGraph"?U.displayLiveGraph=+e==1:t.match(/^openwb\/graph\/alllivevaluesJson[1-9][0-9]*$/i)?gi(t,e):t=="openWB/graph/lastlivevaluesJson"?mi(t,e):t=="openWB/graph/config/duration"&&(Z.duration=JSON.parse(e))}function gi(t,e){if(!Z.initialized){let a=[];const n=e.toString().split(`
-`);n.length>1?a=n.map(u=>JSON.parse(u)):a=[];const r=t.match(/(\d+)$/g),o=r?r[0]:"";o!=""&&typeof Z.rawDataPacks[+o-1]>"u"&&(Z.rawDataPacks[+o-1]=a,Z.initCounter++)}if(Z.initCounter==16){const a=[];Z.unsubscribeRefresh(),Z.initialized=!0,Z.rawDataPacks.map(n=>{n.map(r=>{const o=la(r);a.push(o)})}),Ye(a),Z.subscribeUpdates()}}function mi(t,e){const a=JSON.parse(e),n=la(a);Z.graphRefreshCounter++,Ye(h.data.concat(n)),Z.graphRefreshCounter>60&&Z.activate()}function la(t){const e=Object.values(w).length>0?Object.values(w)[0].connectedVehicle:0,a=Object.values(w).length>1?Object.values(w)[1].connectedVehicle:1,n="ev"+e+"-soc",r="ev"+a+"-soc",o={};o.date=vi(t.time).valueOf(),+t.grid>0?(o.evuIn=+t.grid,o.evuOut=0):+t.grid<=0?(o.evuIn=0,o.evuOut=-t.grid):(o.evuIn=0,o.evuOut=0),+t["pv-all"]>=0?(o.pv=+t["pv-all"],o.inverter=0):(o.pv=0,o.inverter=-t["pv-all"]),o.house=+t["house-power"],+t["bat-all-power"]>0?(o.batOut=0,o.batIn=+t["bat-all-power"]):+t["bat-all-power"]<0?(o.batOut=-t["bat-all-power"],o.batIn=0):(o.batOut=0,o.batIn=0),t["bat-all-soc"]?o.batSoc=+t["bat-all-soc"]:o.batSoc=0,t[n]&&(o["soc"+e]=+t[n]),t[r]&&(o["soc"+a]=+t[r]),o.charging=+t["charging-all"];for(let u=0;u<10;u++){const d="cp"+u;o[d]=+(t[d+"-power"]??0)}return o.selfUsage=o.pv-o.evuOut,o.selfUsage<0&&(o.selfUsage=0),o.devices=0,o}function vi(t){const e=new Date(Date.now()),a=864e5;let n=new Date;const r=nt("%H:%M:%S")(t);return r&&(n=r,n.setDate(e.getDate()),n.setMonth(e.getMonth()),n.setFullYear(e.getFullYear()),n.getHours()>e.getHours()&&(n=new Date(n.getTime()-a))),n}const fi=["evuIn","pv","batIn","evuOut"];let ct=[];function _i(t,e){const a=JSON.parse(e).entries,n=JSON.parse(e).totals;Mt(),ct=[],Pt.map(o=>{P.setEnergyPv(o,0),P.setEnergyBat(o,0)});const r=yi(a);Ye(r),$t(n,ct),f.debug&&(console.debug("---------------------------------------- Graph Data ---------------------------"),console.debug("--- Incoming graph data:"),console.debug(a),console.debug("data to be displayed:"),console.debug(r),console.debug("-------------------------------------------------------------------------------")),h.graphMode=="today"&&setTimeout(()=>J.activate(),3e5)}function yi(t){const e=[];let a={};return t.map(n=>{a=bi(n);const r=a;e.push(r)}),e}function bi(t){const e={};if(h.graphMode=="day"||h.graphMode=="today")if(typeof t.date=="number")e.date=new Date(+t.date*1e3).getTime();else{const n=nt("%H:%M")(t.date);n&&(n.setMonth(J.date.getMonth()),n.setDate(J.date.getDate()),n.setFullYear(J.date.getFullYear()),e.date=n.getTime())}else if(typeof t.date=="string"){const n=nt("%Y%m%d")(t.date);n&&(e.date=n.getDate())}return e.evuOut=0,e.evuIn=0,Object.entries(t.counter).forEach(([n,r])=>{r.grid&&(e.evuOut+=r.power_exported,e.evuIn+=r.power_imported,ct.includes(n)||ct.push(n))}),e.evuOut==0&&e.evuIn==0&&Object.entries(t.counter).forEach(n=>{e.evuOut+=n[1].power_exported,e.evuIn+=n[1].power_imported}),e.pv=t.pv.all.power_exported,Object.entries(t.bat).length>0?(e.batIn=t.bat.all.power_imported,e.batOut=t.bat.all.power_exported,e.batSoc=t.bat.all.soc??0):(e.batIn=0,e.batOut=0,e.batSoc=0),Object.entries(t.cp).forEach(([n,r])=>{n!="all"?(e[n]=r.power_imported,P.keys().includes(n)||P.addItem(n)):e.charging=r.power_imported}),Object.entries(t.ev).forEach(([n,r])=>{n!="all"&&(e["soc"+n.substring(2)]=r.soc)}),e.devices=0,Object.entries(t.sh).forEach(([n,r])=>{n!="all"&&(e[n]=r.power_imported??0,e.devices+=r.power_imported??0,P.keys().includes(n)||P.addItem(n))}),e.selfUsage=e.pv-e.evuOut,t.hc&&t.hc.all?e.house=t.hc.all.power_imported:e.house=e.evuIn+e.batOut+e.pv-e.evuOut-e.charging-e.devices-e.batOut,e.evuIn+e.batOut+e.pv>0?P.keys().filter(n=>!fi.includes(n)).map(n=>{zn(n,e)}):Object.keys(e).map(n=>{e[n+"Pv"]=0,e[n+"Bat"]=0}),e}let Xe={};const Ot=["charging","house","batIn","devices"],wi=["evuIn","pv","batIn","evuOut"];let Je=[];function Si(t,e){const a=JSON.parse(e).entries,n=JSON.parse(e).totals;Mt(),Je=[],Ot.map(r=>{P.items[r].energyPv=0,P.items[r].energyBat=0}),a.length>0&&Ye(da(a)),$t(n,[])}function ki(t,e){const a=JSON.parse(e).entries,n=JSON.parse(e).totals;Mt(),Je=[],Ot.forEach(r=>{P.items[r].energyPv=0,P.items[r].energyBat=0}),Ye(da(a)),$t(n,[])}function da(t){const e=[];let a={};return Xe={},t.map(n=>{a=xi(n),e.push(a),Object.keys(a).forEach(r=>{r!="date"&&(a[r]<0&&(console.warn(`Negative energy value for ${r} in row ${a.date}. Ignoring the value.`),a[r]=0),Xe[r]?Xe[r]+=a[r]:Xe[r]=a[r])})}),e}function xi(t){const e={},a=nt("%Y%m%d")(t.date);a&&(e.date=h.graphMode=="month"?a.getDate():a.getMonth()+1),e.evuOut=0,e.evuIn=0;let n=0,r=0;return Object.entries(t.counter).forEach(([u,d])=>{n+=d.energy_exported,r+=d.energy_imported,d.grid&&(e.evuOut+=d.energy_exported,e.evuIn+=d.energy_imported,Je.includes(u)||Je.push(u))}),Je.length==0&&(e.evuOut=n,e.evuIn=r),e.pv=t.pv.all.energy_exported,Object.entries(t.bat).length>0?(t.bat.all.energy_imported>=0?e.batIn=t.bat.all.energy_imported:(console.warn("ignoring negative value for batIn on day "+e.date),e.batIn=0),t.bat.all.energy_exported>=0?e.batOut=t.bat.all.energy_exported:(console.warn("ignoring negative value for batOut on day "+e.date),e.batOut=0)):(e.batIn=0,e.batOut=0),Object.entries(t.cp).forEach(([u,d])=>{u!="all"?(P.keys().includes(u)||P.addItem(u),e[u]=d.energy_imported):e.charging=d.energy_imported}),Object.entries(t.ev).forEach(([u,d])=>{u!="all"&&(e["soc-"+u]=d.soc)}),e.devices=Object.entries(t.sh).reduce((u,d)=>(P.keys().includes(d[0])||P.addItem(d[0]),d[1].energy_imported>=0?u+=d[1].energy_imported:console.warn(`Negative energy value for device ${d[0]} in row ${e.date}. Ignoring this value`),u),0),e.house=e.pv+e.evuIn+e.batOut-e.evuOut-e.batIn-e.charging,e.selfUsage=e.pv-e.evuOut,e.evuIn+e.batOut+e.pv>0?P.keys().filter(u=>!wi.includes(u)).map(u=>{Fn(u,e)}):Ot.map(u=>{e[u+"Pv"]=0,e[u+"Bat"]=0}),e}class Mi{constructor(e){c(this,"id");c(this,"dailyYieldExport",0);c(this,"dailyYieldImport",0);c(this,"exported",0);c(this,"faultState",0);c(this,"faultStr","");c(this,"imported",0);c(this,"power",0);c(this,"soc",0);this.id=e}}class Pi{constructor(){c(this,"dailyExport",0);c(this,"dailyImport",0);c(this,"exported",0);c(this,"imported",0);c(this,"power",0);c(this,"soc",0)}}const de=F({});F(new Pi);function $i(t){t in de?console.info("Duplicate battery message: "+t):de[t]=new Mi(t)}function Ii(){Object.keys(de).forEach(t=>{delete de[parseInt(t)]})}function Ci(t,e){const a=Oi(t);if(a&&!(a in de)){console.warn("Invalid battery index received: "+a);return}t=="openWB/bat/config/configured"?U.isBatteryConfigured=e=="true":t=="openWB/bat/get/power"?+e>0?(I.batIn.power=+e,G.batOut.power=0):(I.batIn.power=0,G.batOut.power=-e):t=="openWB/bat/get/soc"?U.batterySoc=+e:t=="openWB/bat/get/daily_exported"?G.batOut.energy=+e:t=="openWB/bat/get/daily_imported"?I.batIn.energy=+e:a&&(t.match(/^openwb\/bat\/[0-9]+\/get\/daily_yield_export$/i)?de[a].dailyYieldExport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/daily_yield_import$/i)?de[a].dailyYieldImport=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/exported$/i)?de[a].exported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_state$/i)?de[a].faultState=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/fault_str$/i)?de[a].faultStr=e:t.match(/^openwb\/bat\/[0-9]+\/get\/imported$/i)?de[a].imported=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/power$/i)?de[a].power=+e:t.match(/^openwb\/bat\/[0-9]+\/get\/soc$/i)&&(de[a].soc=+e))}function Oi(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Bi(t,e){if(t=="openWB/optional/et/provider")JSON.parse(e).type==null?X.active=!1:(X.active=!0,X.etProvider=JSON.parse(e).name);else if(t=="openWB/optional/et/get/prices"){const a=JSON.parse(e);X.etPriceList=new Map,Object.keys(a).map(n=>{X.etPriceList.set(new Date(+n*1e3),a[n]*1e5)})}}function Ti(t,e){const a=ua(t);if(a&&!(a in w)){console.warn("Invalid chargepoint id received: "+a);return}if(t=="openWB/chargepoint/get/power"?I.charging.power=+e:t=="openWB/chargepoint/get/daily_imported"&&(I.charging.energy=+e),t=="openWB/chargepoint/get/daily_exported")U.cpDailyExported=+e;else if(a){if(t.match(/^openwb\/chargepoint\/[0-9]+\/config$/i))if(w[a]){const n=JSON.parse(e);w[a].name=n.name,w[a].icon=n.name,oe["cp"+a]?(oe["cp"+a].name=n.name,oe["cp"+a].icon=n.name):oe["cp"+a]={name:n.name,icon:n.name,color:"var(--color-charging)"}}else console.warn("invalid chargepoint index: "+a);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/state_str$/i))w[a].stateStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_str$/i))w[a].faultStr=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/fault_state$/i))w[a].faultState=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/power$/i))w[a].power=+e;else if(t.match(/^openWB\/chargepoint\/[0-9]+\/get\/daily_imported$/i))w[a].dailyYield=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/plug_state$/i))w[a].isPluggedIn=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/charge_state$/i))w[a].isCharging=e=="true";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/manual_lock$/i))w[a].updateIsLocked(e=="true");else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/enabled$/i))w[a].isEnabled=e=="1";else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/phases_in_use/i))w[a].phasesInUse=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/current/i))w[a].current=+e;else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/currents/i))w[a].currents=JSON.parse(e);else if(t.match(/^openwb\/chargepoint\/[0-9]+\/set\/log/i)){const n=JSON.parse(e);w[a].chargedSincePlugged=n.imported_since_plugged}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/soc$/i)){const n=JSON.parse(e);w[a].soc=n.soc,w[a].waitingForSoc=!1,w[a].rangeCharged=n.range_charged,w[a].rangeUnit=n.range_unit}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/info$/i)){const n=JSON.parse(e);w[a].vehicleName=String(n.name),w[a].updateConnectedVehicle(+n.id)}else if(t.match(/^openwb\/chargepoint\/[0-9]+\/get\/connected_vehicle\/config$/i)){const n=JSON.parse(e);switch(n.chargemode){case"instant_charging":w[a].updateChargeMode(fe.instant_charging);break;case"pv_charging":w[a].updateChargeMode(fe.pv_charging);break;case"scheduled_charging":w[a].updateChargeMode(fe.scheduled_charging);break;case"standby":w[a].updateChargeMode(fe.standby);break;case"stop":w[a].updateChargeMode(fe.stop);break}w[a].chargeTemplate=n.charge_template,w[a].averageConsumption=n.average_consumption}}}function Ai(t,e){const a=ua(t);if(a!=null){if(!(a in j)){const n=new La(a);j[a]=n}if(t.match(/^openwb\/vehicle\/[0-9]+\/name$/i))Object.values(w).forEach(n=>{n.connectedVehicle==a&&(n.vehicleName=JSON.parse(e))}),j[a].name=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/soc$/i))j[a].soc=JSON.parse(e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/get\/range$/i))isNaN(+e)?j[a].range=0:j[a].range=+e;else if(t.match(/^openwb\/vehicle\/[0-9]+\/charge_template$/i))j[a].updateChargeTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/ev_template$/i))j[a].updateEvTemplateId(+e);else if(t.match(/^openwb\/vehicle\/[0-9]+\/soc_module\/config$/i)){const n=JSON.parse(e);Object.values(w).forEach(r=>{r.connectedVehicle==a&&(r.isSocConfigured=n.type!==null,r.isSocManual=n.type=="manual")})}}}function Vi(t,e){if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const n=+a[0],r=JSON.parse(e);ie[n]=r,Li(n,r)}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/time_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),n=t.match(/[0-9]+$/i);if(a&&n){const r=+a[0].replace(/[^0-9]+/g,""),o=+n[0],u=JSON.parse(e);r in ze||(ze[r]=[]),ze[r][o]=u}}else if(t.match(/^openwb\/vehicle\/template\/charge_template\/[0-9]+\/chargemode\/scheduled_charging\/plans\/[0-9]+$/i)){const a=t.match(/(?:\/)([0-9]+)(?:\/)/g),n=t.match(/[0-9]+$/i);if(a&&n){const r=+a[0].replace(/[^0-9]+/g,""),o=+n[0],u=JSON.parse(e);r in Ue||(Ue[r]=[]),Ue[r][o]=u}}else if(t.match(/^openwb\/vehicle\/template\/ev_template\/[0-9]+$/i)){const a=t.match(/[0-9]+$/i);if(a){const n=+a[0],r=JSON.parse(e);Da[n]=r}}}function Li(t,e){Object.values(w).forEach(a=>{a.chargeTemplate==t&&(a.updateCpPriority(e.prio),a.updateInstantChargeLimitMode(e.chargemode.instant_charging.limit.selected),a.updateInstantTargetCurrent(e.chargemode.instant_charging.current),a.updateInstantTargetSoc(e.chargemode.instant_charging.limit.soc),a.updateInstantMaxEnergy(e.chargemode.instant_charging.limit.amount),a.updatePvFeedInLimit(e.chargemode.pv_charging.feed_in_limit),a.updatePvMinCurrent(e.chargemode.pv_charging.min_current),a.updatePvMaxSoc(e.chargemode.pv_charging.max_soc),a.updatePvMinSoc(e.chargemode.pv_charging.min_soc),a.updatePvMinSocCurrent(e.chargemode.pv_charging.min_soc_current))})}function ua(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}function Di(t,e){t.match(/^openWB\/LegacySmarthome\/config\//i)?Ei(t,e):t.match(/^openWB\/LegacySmarthome\/Devices\//i)&&Gi(t,e)}function Ei(t,e){const a=ha(t);a!=null&&(a in E||Xt(a),t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_configured$/i)?E[a].configured=e!="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_name$/i)?(E[a].name=e.toString(),E[a].icon=e.toString(),oe["sh"+a].name=e.toString(),oe["sh"+a].icon=e.toString()):t.match(/^openWB\/LegacySmarthome\/config\/set\/Devices\/[0-9]+\/mode$/i)?E[a].isAutomatic=e=="0":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_canSwitch$/i)?E[a].canSwitch=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_homeConsumtion$/i)?E[a].countAsHouse=e=="1":t.match(/^openWB\/LegacySmarthome\/config\/get\/Devices\/[0-9]+\/device_temperatur_configured$/i)&&(E[a].tempConfigured=+e))}function Gi(t,e){const a=ha(t);if(a==null){console.warn("Smarthome: Missing index in "+t);return}if(a in E||Xt(a),t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Watt$/i))E[a].power=+e,Wi("power");else if(!t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/Wh$/i)){if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/RunningTimeToday$/i))E[a].runningTime=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor0$/i))E[a].temp[0]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor1$/i))E[a].temp[1]=+e;else if(t.match(/^openWB\/LegacySmarthome\/Devices\/[0-9]+\/TemperatureSensor2$/i))E[a].temp[2]=+e;else if(t.match(/^openWB\/LegacySmartHome\/Devices\/[0-9]+\/Status$/i))switch(+e){case 10:E[a].status="off";break;case 11:E[a].status="on";break;case 20:E[a].status="detection";break;case 30:E[a].status="timeout";break;default:E[a].status="off"}}}function Wi(t){switch(t){case"power":I.devices.power=Object.values(E).filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.power,0);break;case"energy":I.devices.energy=Object.values(E).filter(e=>e.configured&&!e.countAsHouse).reduce((e,a)=>e+a.energy,0);break;default:console.error("Unknown category")}}function ha(t){let e=0;try{const a=t.match(/(?:\/)([0-9]+)(?=\/)/g);return a?(e=+a[0].replace(/[^0-9]+/g,""),e):void 0}catch{console.warn("Parser error in getIndex for topic "+t)}}class ji{constructor(e){c(this,"id");c(this,"name","Zähler");c(this,"power",0);c(this,"energy_imported",0);c(this,"energy_exported",0);c(this,"grid",!1);c(this,"type","counter");c(this,"color","var(--color-evu)");c(this,"energyPv",0);c(this,"energyBat",0);c(this,"pvPercentage",0);c(this,"icon","");this.id=e}}const pe=F({});function Ni(t,e){if(t in pe)console.info("Duplicate counter message: "+t);else switch(pe[t]=new ji(t),pe[t].type=e,e){case"counter":pe[t].color="var(--color-evu)";break;case"inverter":pe[t].color="var(--color-pv)";break;case"cp":pe[t].color="var(--color-charging)";break;case"bat":pe[t].color="var(--color-bat)";break}}const Ui=["openWB/counter/#","openWB/bat/#","openWB/pv/get/#","openWB/chargepoint/#","openWB/vehicle/#","openWB/general/chargemode_config/pv_charging/#","openWB/optional/et/#","openWB/system/#","openWB/LegacySmartHome/#","openWB/command/"+kt()+"/#","openWB/optional/int_display/#"];function zi(){Aa(Fi),Ui.forEach(t=>{Ve(t)}),K()}function Fi(t,e){const a=e.toString();t.match(/^openwb\/counter\/[0-9]+\//i)?Ji(t,a):t.match(/^openwb\/counter\//i)?Ri(t,a):t.match(/^openwb\/bat\//i)?Ci(t,a):t.match(/^openwb\/pv\//i)?Hi(t,a):t.match(/^openwb\/chargepoint\//i)?Ti(t,a):t.match(/^openwb\/vehicle\/template\//i)?Vi(t,a):t.match(/^openwb\/vehicle\//i)?Ai(t,a):t.match(/^openwb\/general\/chargemode_config\/pv_charging\//i)?Yi(t,a):t.match(/^openwb\/graph\//i)?pi(t,a):t.match(/^openwb\/log\/daily\//i)?_i(t,a):t.match(/^openwb\/log\/monthly\//i)?Si(t,a):t.match(/^openwb\/log\/yearly\//i)?ki(t,a):t.match(/^openwb\/optional\/et\//i)?Bi(t,a):t.match(/^openwb\/system\//i)?Qi(t,a):t.match(/^openwb\/LegacySmartHome\//i)?Di(t,a):t.match(/^openwb\/command\//i)?Zi(t,a):t.match(/^openwb\/optional\//i)&&Xi(t,a)}function Ji(t,e){const a=t.split("/"),n=+a[2];if(n==U.evuId?qi(t,e):a[3]=="config",a[3]=="get"&&n in pe)switch(a[4]){case"power":pe[n].power=+e;break;case"config":break;case"fault_str":break;case"fault_state":break;case"power_factors":break;case"imported":break;case"exported":break;case"frequency":break;case"daily_imported":pe[n].energy_imported=+e;break;case"daily_exported":pe[n].energy_exported=+e;break}}function Ri(t,e){if(t.match(/^openwb\/counter\/get\/hierarchy$/i)){const a=JSON.parse(e);if(a.length){Ga(),Ii();for(const n of a)n.type=="counter"&&(U.evuId=n.id);pa(a[0])}}else t.match(/^openwb\/counter\/set\/home_consumption$/i)?(I.house.power=+e,za()):t.match(/^openwb\/counter\/set\/daily_yield_home_consumption$/i)&&(I.house.energy=+e)}function pa(t){switch(t.type){case"counter":Ni(t.id,t.type);break;case"cp":Ea(t.id);break;case"bat":$i(t.id);break}t.children.forEach(e=>pa(e))}function Hi(t,e){switch(t){case"openWB/pv/get/power":G.pv.power=-e;break;case"openWB/pv/get/daily_exported":G.pv.energy=+e;break}}function Yi(t,e){const a=t.split("/");if(a.length>0)switch(a[4]){case"bat_mode":U.updatePvBatteryPriority(JSON.parse(e));break}}function qi(t,e){switch(t.split("/")[4]){case"power":+e>0?(G.evuIn.power=+e,I.evuOut.power=0):(G.evuIn.power=0,I.evuOut.power=-e);break;case"daily_imported":G.evuIn.energy=+e;break;case"daily_exported":I.evuOut.energy=+e;break}}function Qi(t,e){if(t.match(/^openWB\/system\/device\/[0-9]+\/component\/[0-9]+\/config$/i)){const a=JSON.parse(e);a.type=="counter"&&(pe[a.id].name=a.name)}else t.match(/^openWB\/system\/ip_address$/i)?U.ipAddress=JSON.parse(e):t.match(/^openWB\/system\/time$/i)?U.systemTime=JSON.parse(e):t.match(/^openWB\/system\/version$/i)?U.version=JSON.parse(e):t.match(/^openWB\/system\/current_commit$/i)?U.versionDetails=JSON.parse(e):t.match(/^openWB\/system\/current_branch$/i)&&(U.devBranch=JSON.parse(e))}function Zi(t,e){const a=t.split("/");if(t.match(/^openWB\/command\/[a-z]+\/error$/i)&&a[2]==kt()){const n=JSON.parse(e);console.error(`Error message from openWB: 
-Command: ${n.command}
-Data: JSON.stringify(err.data)
-Error:
- ${n.error}`)}}function Xi(t,e){if(t.match(/^openwb\/optional\/int_display\/active$/i))ne.active=JSON.parse(e);else if(t.match(/^openwb\/optional\/int_display\/only_local_charge_points$/i))ne.localCpOnly=JSON.parse(e);else if(t.match(/^openwb\/optional\/int_display\/theme$/i)){const a=JSON.parse(e);ne.usePin=a.configuration.lock_changes,ne.code=a.configuration.lock_changes_code}}const Ki={class:"d-flex flex-column align-items-center justify-content-start infoitem"},ec=A({__name:"InfoItem",props:{heading:{},small:{type:Boolean}},setup(t){const e=t,a=p(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-small)"}),n=p(()=>e.small?{"font-size":"var(--font-small)"}:{"font-size":"var(--font-normal)"}),r=p(()=>e.small?"mt-0":"mt-1");return(o,u)=>(g(),b("span",Ki,[l("span",{class:ae(["d-flex heading scaled",r.value]),style:ee(a.value)},$(e.heading),7),l("span",{class:"d-flex my-0 me-0 align-items-center content scaled",style:ee(n.value)},[ve(o.$slots,"default",{},void 0)],4)]))}}),ue=N(ec,[["__scopeId","data-v-9215fd9b"]]),tc=A({__name:"FormatWattH",props:{wattH:{}},setup(t){const e=t,a=p(()=>Rt(e.wattH,f.decimalPlaces));return(n,r)=>(g(),b("span",null,$(a.value),1))}}),ac=A({__name:"BatterySymbol",props:{soc:{}},setup(t){const e=t,a=p(()=>e.soc<=12?"fa-battery-empty":e.soc<38?"fa-battery-quarter":e.soc<63?"fa-battery-half":e.soc<89?"fa-battery-three-quarters":"fa-battery-full");return(n,r)=>(g(),b("span",null,[l("i",{class:ae(["fa batIcon",a.value])},null,2),W(" "+$(Math.round(n.soc)+"%"),1)]))}}),nc=N(ac,[["__scopeId","data-v-fc156cd3"]]),rc=t=>(ce("data-v-17a63962"),t=t(),le(),t),oc={class:"subgrid justify-content-left"},sc={class:"titleline grid-col-12 d-flex justify-content-left mb-3"},ic={class:"carname d-flex justify-content-left align-items-center px-2"},cc=rc(()=>l("i",{class:"fa-solid fa-sm fa-car me-3"},null,-1)),lc={key:0,class:"ms-2 me-0 fa-solid fa-xs fa-star ps-1"},dc={key:1,class:"ms-2 me-0 fa-solid fa-xs fa-coins ps-0"},uc={key:0,class:"me-1 fa-solid fa-xs fa-clock ps-1"},hc={class:"maxprice"},pc={key:1},gc=A({__name:"CPVehicle",props:{chargepoint:{}},setup(t){const e=t,a=_e(e.chargepoint),n=p(()=>e.chargepoint.soc),r=p({get(){return e.chargepoint.chargeMode},set(s){ne.locked?st():w[e.chargepoint.id].chargeMode=s}}),o=p(()=>{const[s]=X.etPriceList.values();return(Math.round(s*10)/10).toFixed(1)});function u(s=""){ne.locked&&st(),new St("#settingspage").toggle();let v=s;if(s=="")switch(e.chargepoint.chargeMode){case"instant_charging":v="#inSettings";break;case"pv_charging":v="#phvSettings";break;case"scheduled_charging":v="#scSettings";break;default:v="#chSettings"}const B=document.querySelector(v+e.chargepoint.id);if(B){var k=new Jt(B);k.show()}else console.error("no element found")}const d=p(()=>e.chargepoint.etMaxPrice>=+o.value?{color:"var(--color-charging)"}:{color:"var(--color-menu)"});return(s,m)=>(g(),b("div",oc,[l("div",sc,[y(we,{onClick:m[0]||(m[0]=v=>u("#chSettings"))},{default:x(()=>[l("div",ic,[cc,W(" "+$(s.chargepoint.vehicleName)+" ",1),s.chargepoint.hasPriority?(g(),b("span",lc)):M("",!0),s.chargepoint.etActive?(g(),b("span",dc)):M("",!0)])]),_:1})]),s.chargepoint.isSocConfigured?(g(),T(ue,{key:0,heading:"Ladestand:",class:"grid-col-4 grid-left"},{default:x(()=>[y(nc,{soc:n.value,class:"me-2"},null,8,["soc"])]),_:1})):M("",!0),s.chargepoint.isSocConfigured?(g(),T(ue,{key:1,heading:"Reichweite:",class:"grid-col-4"},{default:x(()=>[W($(i(j)[e.chargepoint.connectedVehicle]?Math.round(i(j)[e.chargepoint.connectedVehicle].range):0)+" km ",1)]),_:1})):M("",!0),y(ue,{heading:"Zeitplan:",class:"grid-col-4 grid-right"},{default:x(()=>[s.chargepoint.timedCharging?(g(),b("span",uc)):M("",!0),W(" "+$(e.chargepoint.timedCharging?"Ja":"Nein"),1)]),_:1}),i(X).active?(g(),T(ue,{key:2,heading:"Preisladen:",class:"grid-col-4 grid-left"},{default:x(()=>[y(ge,{modelValue:a.value.etActive,"onUpdate:modelValue":m[1]||(m[1]=v=>a.value.etActive=v)},null,8,["modelValue"])]),_:1})):M("",!0),i(X).active?(g(),T(ue,{key:3,heading:"max. Preis:",class:"grid-col-4"},{default:x(()=>[a.value.etActive?(g(),T(we,{key:0,onClick:m[2]||(m[2]=v=>u("#prSettings"))},{default:x(()=>[l("span",hc,$(e.chargepoint.etActive?(Math.round(e.chargepoint.etMaxPrice*10)/10).toFixed(1)+" ct":"-"),1)]),_:1})):(g(),b("span",pc,"-"))]),_:1})):M("",!0),i(X).active?(g(),T(ue,{key:4,heading:"akt. Preis:",class:"grid-col-4 grid-right"},{default:x(()=>[l("span",{style:ee(d.value)},$(o.value)+" ct ",5)]),_:1})):M("",!0),y(ra,{id:"chargemode-"+s.chargepoint.name,modelValue:r.value,"onUpdate:modelValue":m[3]||(m[3]=v=>r.value=v),class:"chargemodes mx-3 mt-4 mb-0",options:Object.keys(i(We)).map(v=>({text:i(We)[v].name,value:v,color:i(We)[v].color,icon:i(We)[v].icon,active:i(We)[v].mode==s.chargepoint.chargeMode}))},null,8,["id","modelValue","options"])]))}}),mc=N(gc,[["__scopeId","data-v-17a63962"]]),vc=t=>(ce("data-v-795d5c8f"),t=t(),le(),t),fc=vc(()=>l("span",{class:"fa-solid fa-charging-station"}," ",-1)),_c={class:"subgrid"},yc={class:"targetCurrent"},bc=A({__name:"CPChargePoint",props:{chargepoint:{}},setup(t){const e=t,a=p(()=>(Math.round(e.chargepoint.current*10)/10).toLocaleString(void 0)+" A"),n=p(()=>(Math.round(e.chargepoint.realCurrent*10)/10).toLocaleString(void 0)+" A"),r=p(()=>{const v=e.chargepoint.rangeCharged,B=e.chargepoint.chargedSincePlugged,k=e.chargepoint.dailyYield;return B>0?Math.round(v/B*k).toString()+" "+e.chargepoint.rangeUnit:"0 km"}),o=p(()=>e.chargepoint.isLocked?"Gesperrt":e.chargepoint.isCharging?"Lädt":e.chargepoint.isPluggedIn?"Bereit":"Frei"),u=p(()=>e.chargepoint.isLocked?"var(--color-evu)":e.chargepoint.isCharging?"var(--color-charging)":e.chargepoint.isPluggedIn?"var(--color-battery)":"var(--color-axis)"),d=p(()=>{let v="";return e.chargepoint.isLocked?v="fa-lock":e.chargepoint.isCharging?v=" fa-bolt":e.chargepoint.isPluggedIn&&(v="fa-plug"),"fa "+v}),s=p(()=>({color:e.chargepoint.color}));function m(){ne.locked&&st(),new St("#settingspage").toggle();let B="";switch(e.chargepoint.chargeMode){case"instant_charging":B="#inSettings";break;case"pv_charging":B="#phvSettings";break;case"scheduled_charging":B="#scSettings";break;default:B="#chSettings"}const k=document.querySelector(B+e.chargepoint.id);if(k){var R=new Jt(k);R.show()}else console.error("no element found")}return(v,B)=>(g(),T(ut,null,{title:x(()=>[l("span",{style:ee(s.value)},[fc,W(" "+$(e.chargepoint.name),1)],4)]),buttons:x(()=>[y(we,{color:"var(--color-cp0)",icon:"fa-edit",onClick:m},{default:x(()=>[W(" Einstellungen")]),_:1})]),footer:x(()=>[y(mc,{chargepoint:e.chargepoint},null,8,["chargepoint"])]),default:x(()=>[l("div",_c,[y(ue,{heading:"Status:",class:"grid-col-4 grid-left"},{default:x(()=>[l("span",{style:ee({color:u.value})},[l("i",{class:ae(d.value)},null,2),W(" "+$(o.value),1)],4)]),_:1}),y(ue,{heading:"Geladen:",class:"grid-col-4"},{default:x(()=>[y(tc,{"watt-h":v.chargepoint.dailyYield},null,8,["watt-h"])]),_:1}),y(ue,{heading:"gel. Reichw.:",class:"grid-col-4 grid-right"},{default:x(()=>[W($(r.value),1)]),_:1}),e.chargepoint.power>0?(g(),T(ue,{key:0,heading:"Leistung:",class:"grid-col-3 grid-left"},{default:x(()=>[y(Kt,{watt:e.chargepoint.power},null,8,["watt"])]),_:1})):M("",!0),e.chargepoint.power>0?(g(),T(ue,{key:1,heading:"Strom:",class:"grid-col-3"},{default:x(()=>[W($(n.value),1)]),_:1})):M("",!0),e.chargepoint.power>0?(g(),T(ue,{key:2,heading:"Phasen:",class:"grid-col-3"},{default:x(()=>[W($(e.chargepoint.phasesInUse),1)]),_:1})):M("",!0),e.chargepoint.power>0?(g(),T(ue,{key:3,heading:"Sollstrom:",class:"grid-col-3 grid-right"},{default:x(()=>[l("span",yc,$(a.value),1)]),_:1})):M("",!0)])]),_:1}))}}),wc=N(bc,[["__scopeId","data-v-795d5c8f"]]),Sc=t=>(ce("data-v-9f6c66b0"),t=t(),le(),t),kc={class:"content"},xc={class:"leftside"},Mc={class:"rightside"},Pc=Sc(()=>l("span",{class:"statustitle"},"Systemstatus",-1)),$c={class:"settingstitle"},Ic=A({__name:"DisplayTheme",setup(t){function e(n){Ua(n)&&(ne.locked=!1,setTimeout(()=>{ne.locked=!0},ne.timeout*1e3))}lt(()=>{window.addEventListener("resize",qa),window.addEventListener("focus",a),zi()});function a(){document.hasFocus()&&K()}return(n,r)=>(g(),b(ke,null,[l("div",kc,[l("div",xc,[Ne(l("div",null,[y(Wn)],512),[[ht,i(f).graphToShow=="powermeter"]]),Ne(l("div",null,[y(Ir)],512),[[ht,i(f).graphToShow=="powergraph"]]),Ne(l("div",null,[y(eo)],512),[[ht,i(f).graphToShow=="energymeter"]])]),l("div",Mc,[Object.values(i(w)).length>i(f).cpToShow?(g(),T(wc,{key:0,chargepoint:Object.values(i(w))[i(f).cpToShow]},null,8,["chargepoint"])):M("",!0)])]),y(vt,{"modal-id":"numberpad"},{title:x(()=>[W("Code")]),default:x(()=>[y(yo,{"model-value":"","onUpdate:modelValue":e})]),_:1}),y(vt,{"modal-id":"statuspage"},{title:x(()=>[Pc]),default:x(()=>[y($o)]),_:1}),Object.values(i(w)).length>i(f).cpToShow?(g(),T(vt,{key:0,"modal-id":"settingspage"},{title:x(()=>[l("span",$c,"Einstellungen für "+$(Object.values(i(w))[i(f).cpToShow].vehicleName)+" an Ladepunkt "+$(Object.values(i(w))[i(f).cpToShow].name),1)]),default:x(()=>[y(hi,{chargepoint:Object.values(i(w))[i(f).cpToShow]},null,8,["chargepoint"])]),_:1})):M("",!0)],64))}}),Cc=N(Ic,[["__scopeId","data-v-9f6c66b0"]]),Oc={class:"fixeddisplay"},Bc=A({__name:"App",setup(t){return(e,a)=>(g(),b("div",Oc,[y(Cc),y(dn)]))}}),Tc=N(Bc,[["__scopeId","data-v-75d14554"]]),Ac=Ma(Tc);Ac.mount("#app");
diff --git a/packages/modules/display_themes/colors/web/assets/vendor-B1GimsSk.js b/packages/modules/display_themes/colors/web/assets/vendor-B1GimsSk.js
deleted file mode 100644
index 97f6ec0bbb..0000000000
--- a/packages/modules/display_themes/colors/web/assets/vendor-B1GimsSk.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var dE=Object.defineProperty;var $p=e=>{throw TypeError(e)};var pE=(e,t,r)=>t in e?dE(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var rt=(e,t,r)=>pE(e,typeof t!="symbol"?t+"":t,r),Ru=(e,t,r)=>t.has(e)||$p("Cannot "+r);var Q=(e,t,r)=>(Ru(e,t,"read from private field"),r?r.call(e):t.get(e)),Fe=(e,t,r)=>t.has(e)?$p("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Le=(e,t,r,n)=>(Ru(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),Me=(e,t,r)=>(Ru(e,t,"access private method"),r);var Qs=(e,t,r,n)=>({set _(o){Le(e,t,o,r)},get _(){return Q(e,t,n)}});const Ai=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};/**
-* @vue/shared v3.4.21
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function sd(e,t){const r=new Set(e.split(","));return n=>r.has(n)}const Qe={},uo=[],Zt=()=>{},gE=()=>!1,Nl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ad=e=>e.startsWith("onUpdate:"),yt=Object.assign,ld=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},mE=Object.prototype.hasOwnProperty,Ue=(e,t)=>mE.call(e,t),Be=Array.isArray,co=e=>Bs(e)==="[object Map]",Ml=e=>Bs(e)==="[object Set]",Up=e=>Bs(e)==="[object Date]",De=e=>typeof e=="function",ct=e=>typeof e=="string",Mn=e=>typeof e=="symbol",Xe=e=>e!==null&&typeof e=="object",wy=e=>(Xe(e)||De(e))&&De(e.then)&&De(e.catch),vy=Object.prototype.toString,Bs=e=>vy.call(e),yE=e=>Bs(e).slice(8,-1),Ey=e=>Bs(e)==="[object Object]",ud=e=>ct(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ms=sd(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Pl=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},_E=/-(\w)/g,wo=Pl(e=>e.replace(_E,(t,r)=>r?r.toUpperCase():"")),bE=/\B([A-Z])/g,Bo=Pl(e=>e.replace(bE,"-$1").toLowerCase()),Sy=Pl(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ou=Pl(e=>e?`on${Sy(e)}`:""),Pn=(e,t)=>!Object.is(e,t),Ta=(e,t)=>{for(let r=0;r<e.length;r++)e[r](t)},Za=(e,t,r)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},Wc=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Fp;const Ay=()=>Fp||(Fp=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof Ai<"u"?Ai:{});function cd(e){if(Be(e)){const t={};for(let r=0;r<e.length;r++){const n=e[r],o=ct(n)?SE(n):cd(n);if(o)for(const i in o)t[i]=o[i]}return t}else if(ct(e)||Xe(e))return e}const wE=/;(?![^(]*\))/g,vE=/:([^]+)/,EE=/\/\*[^]*?\*\//g;function SE(e){const t={};return e.replace(EE,"").split(wE).forEach(r=>{if(r){const n=r.split(vE);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function fd(e){let t="";if(ct(e))t=e;else if(Be(e))for(let r=0;r<e.length;r++){const n=fd(e[r]);n&&(t+=n+" ")}else if(Xe(e))for(const r in e)e[r]&&(t+=r+" ");return t.trim()}const AE="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",TE=sd(AE);function Ty(e){return!!e||e===""}function xE(e,t){if(e.length!==t.length)return!1;let r=!0;for(let n=0;r&&n<e.length;n++)r=Ll(e[n],t[n]);return r}function Ll(e,t){if(e===t)return!0;let r=Up(e),n=Up(t);if(r||n)return r&&n?e.getTime()===t.getTime():!1;if(r=Mn(e),n=Mn(t),r||n)return e===t;if(r=Be(e),n=Be(t),r||n)return r&&n?xE(e,t):!1;if(r=Xe(e),n=Xe(t),r||n){if(!r||!n)return!1;const o=Object.keys(e).length,i=Object.keys(t).length;if(o!==i)return!1;for(const s in e){const a=e.hasOwnProperty(s),l=t.hasOwnProperty(s);if(a&&!l||!a&&l||!Ll(e[s],t[s]))return!1}}return String(e)===String(t)}function xy(e,t){return e.findIndex(r=>Ll(r,t))}const LF=e=>ct(e)?e:e==null?"":Be(e)||Xe(e)&&(e.toString===vy||!De(e.toString))?JSON.stringify(e,Iy,2):String(e),Iy=(e,t)=>t&&t.__v_isRef?Iy(e,t.value):co(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[n,o],i)=>(r[ku(n,i)+" =>"]=o,r),{})}:Ml(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>ku(r))}:Mn(t)?ku(t):Xe(t)&&!Be(t)&&!Ey(t)?String(t):t,ku=(e,t="")=>{var r;return Mn(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/**
-* @vue/reactivity v3.4.21
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let ur;class IE{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ur,!t&&ur&&(this.index=(ur.scopes||(ur.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=ur;try{return ur=this,t()}finally{ur=r}}}on(){ur=this}off(){ur=this.parent}stop(t){if(this._active){let r,n;for(r=0,n=this.effects.length;r<n;r++)this.effects[r].stop();for(r=0,n=this.cleanups.length;r<n;r++)this.cleanups[r]();if(this.scopes)for(r=0,n=this.scopes.length;r<n;r++)this.scopes[r].stop(!0);if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0,this._active=!1}}}function CE(e,t=ur){t&&t.active&&t.effects.push(e)}function RE(){return ur}let mi;class hd{constructor(t,r,n,o){this.fn=t,this.trigger=r,this.scheduler=n,this.active=!0,this.deps=[],this._dirtyLevel=4,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,CE(this,o)}get dirty(){if(this._dirtyLevel===2||this._dirtyLevel===3){this._dirtyLevel=1,ki();for(let t=0;t<this._depsLength;t++){const r=this.deps[t];if(r.computed&&(OE(r.computed),this._dirtyLevel>=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),Ni()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=kn,r=mi;try{return kn=!0,mi=this,this._runnings++,jp(this),this.fn()}finally{Wp(this),this._runnings--,mi=r,kn=t}}stop(){var t;this.active&&(jp(this),Wp(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function OE(e){return e.value}function jp(e){e._trackId++,e._depsLength=0}function Wp(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t<e.deps.length;t++)Cy(e.deps[t],e);e.deps.length=e._depsLength}}function Cy(e,t){const r=e.get(t);r!==void 0&&t._trackId!==r&&(e.delete(t),e.size===0&&e.cleanup())}let kn=!0,Hc=0;const Ry=[];function ki(){Ry.push(kn),kn=!1}function Ni(){const e=Ry.pop();kn=e===void 0?!0:e}function dd(){Hc++}function pd(){for(Hc--;!Hc&&Vc.length;)Vc.shift()()}function Oy(e,t,r){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const n=e.deps[e._depsLength];n!==t?(n&&Cy(n,e),e.deps[e._depsLength++]=t):e._depsLength++}}const Vc=[];function ky(e,t,r){dd();for(const n of e.keys()){let o;n._dirtyLevel<t&&(o??(o=e.get(n)===n._trackId))&&(n._shouldSchedule||(n._shouldSchedule=n._dirtyLevel===0),n._dirtyLevel=t),n._shouldSchedule&&(o??(o=e.get(n)===n._trackId))&&(n.trigger(),(!n._runnings||n.allowRecurse)&&n._dirtyLevel!==2&&(n._shouldSchedule=!1,n.scheduler&&Vc.push(n.scheduler)))}pd()}const Ny=(e,t)=>{const r=new Map;return r.cleanup=e,r.computed=t,r},qc=new WeakMap,yi=Symbol(""),Kc=Symbol("");function $t(e,t,r){if(kn&&mi){let n=qc.get(e);n||qc.set(e,n=new Map);let o=n.get(r);o||n.set(r,o=Ny(()=>n.delete(r))),Oy(mi,o)}}function Zr(e,t,r,n,o,i){const s=qc.get(e);if(!s)return;let a=[];if(t==="clear")a=[...s.values()];else if(r==="length"&&Be(e)){const l=Number(n);s.forEach((u,c)=>{(c==="length"||!Mn(c)&&c>=l)&&a.push(u)})}else switch(r!==void 0&&a.push(s.get(r)),t){case"add":Be(e)?ud(r)&&a.push(s.get("length")):(a.push(s.get(yi)),co(e)&&a.push(s.get(Kc)));break;case"delete":Be(e)||(a.push(s.get(yi)),co(e)&&a.push(s.get(Kc)));break;case"set":co(e)&&a.push(s.get(yi));break}dd();for(const l of a)l&&ky(l,4);pd()}const kE=sd("__proto__,__v_isRef,__isVue"),My=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Mn)),Hp=NE();function NE(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const n=We(this);for(let i=0,s=this.length;i<s;i++)$t(n,"get",i+"");const o=n[t](...r);return o===-1||o===!1?n[t](...r.map(We)):o}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...r){ki(),dd();const n=We(this)[t].apply(this,r);return pd(),Ni(),n}}),e}function ME(e){const t=We(this);return $t(t,"has",e),t.hasOwnProperty(e)}class Py{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,n){const o=this._isReadonly,i=this._isShallow;if(r==="__v_isReactive")return!o;if(r==="__v_isReadonly")return o;if(r==="__v_isShallow")return i;if(r==="__v_raw")return n===(o?i?KE:$y:i?Dy:By).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const s=Be(t);if(!o){if(s&&Ue(Hp,r))return Reflect.get(Hp,r,n);if(r==="hasOwnProperty")return ME}const a=Reflect.get(t,r,n);return(Mn(r)?My.has(r):kE(r))||(o||$t(t,"get",r),i)?a:Ut(a)?s&&ud(r)?a:a.value:Xe(a)?o?Uy(a):yd(a):a}}class Ly extends Py{constructor(t=!1){super(!1,t)}set(t,r,n,o){let i=t[r];if(!this._isShallow){const l=vo(i);if(!el(n)&&!vo(n)&&(i=We(i),n=We(n)),!Be(t)&&Ut(i)&&!Ut(n))return l?!1:(i.value=n,!0)}const s=Be(t)&&ud(r)?Number(r)<t.length:Ue(t,r),a=Reflect.set(t,r,n,o);return t===We(o)&&(s?Pn(n,i)&&Zr(t,"set",r,n):Zr(t,"add",r,n)),a}deleteProperty(t,r){const n=Ue(t,r);t[r];const o=Reflect.deleteProperty(t,r);return o&&n&&Zr(t,"delete",r,void 0),o}has(t,r){const n=Reflect.has(t,r);return(!Mn(r)||!My.has(r))&&$t(t,"has",r),n}ownKeys(t){return $t(t,"iterate",Be(t)?"length":yi),Reflect.ownKeys(t)}}class PE extends Py{constructor(t=!1){super(!0,t)}set(t,r){return!0}deleteProperty(t,r){return!0}}const LE=new Ly,BE=new PE,DE=new Ly(!0),gd=e=>e,Bl=e=>Reflect.getPrototypeOf(e);function Xs(e,t,r=!1,n=!1){e=e.__v_raw;const o=We(e),i=We(t);r||(Pn(t,i)&&$t(o,"get",t),$t(o,"get",i));const{has:s}=Bl(o),a=n?gd:r?bd:xs;if(s.call(o,t))return a(e.get(t));if(s.call(o,i))return a(e.get(i));e!==o&&e.get(t)}function Js(e,t=!1){const r=this.__v_raw,n=We(r),o=We(e);return t||(Pn(e,o)&&$t(n,"has",e),$t(n,"has",o)),e===o?r.has(e):r.has(e)||r.has(o)}function Zs(e,t=!1){return e=e.__v_raw,!t&&$t(We(e),"iterate",yi),Reflect.get(e,"size",e)}function Vp(e){e=We(e);const t=We(this);return Bl(t).has.call(t,e)||(t.add(e),Zr(t,"add",e,e)),this}function qp(e,t){t=We(t);const r=We(this),{has:n,get:o}=Bl(r);let i=n.call(r,e);i||(e=We(e),i=n.call(r,e));const s=o.call(r,e);return r.set(e,t),i?Pn(t,s)&&Zr(r,"set",e,t):Zr(r,"add",e,t),this}function Kp(e){const t=We(this),{has:r,get:n}=Bl(t);let o=r.call(t,e);o||(e=We(e),o=r.call(t,e)),n&&n.call(t,e);const i=t.delete(e);return o&&Zr(t,"delete",e,void 0),i}function Yp(){const e=We(this),t=e.size!==0,r=e.clear();return t&&Zr(e,"clear",void 0,void 0),r}function ea(e,t){return function(n,o){const i=this,s=i.__v_raw,a=We(s),l=t?gd:e?bd:xs;return!e&&$t(a,"iterate",yi),s.forEach((u,c)=>n.call(o,l(u),l(c),i))}}function ta(e,t,r){return function(...n){const o=this.__v_raw,i=We(o),s=co(i),a=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,u=o[e](...n),c=r?gd:t?bd:xs;return!t&&$t(i,"iterate",l?Kc:yi),{next(){const{value:d,done:p}=u.next();return p?{value:d,done:p}:{value:a?[c(d[0]),c(d[1])]:c(d),done:p}},[Symbol.iterator](){return this}}}}function bn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function $E(){const e={get(i){return Xs(this,i)},get size(){return Zs(this)},has:Js,add:Vp,set:qp,delete:Kp,clear:Yp,forEach:ea(!1,!1)},t={get(i){return Xs(this,i,!1,!0)},get size(){return Zs(this)},has:Js,add:Vp,set:qp,delete:Kp,clear:Yp,forEach:ea(!1,!0)},r={get(i){return Xs(this,i,!0)},get size(){return Zs(this,!0)},has(i){return Js.call(this,i,!0)},add:bn("add"),set:bn("set"),delete:bn("delete"),clear:bn("clear"),forEach:ea(!0,!1)},n={get(i){return Xs(this,i,!0,!0)},get size(){return Zs(this,!0)},has(i){return Js.call(this,i,!0)},add:bn("add"),set:bn("set"),delete:bn("delete"),clear:bn("clear"),forEach:ea(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=ta(i,!1,!1),r[i]=ta(i,!0,!1),t[i]=ta(i,!1,!0),n[i]=ta(i,!0,!0)}),[e,r,t,n]}const[UE,FE,jE,WE]=$E();function md(e,t){const r=t?e?WE:jE:e?FE:UE;return(n,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?n:Reflect.get(Ue(r,o)&&o in n?r:n,o,i)}const HE={get:md(!1,!1)},VE={get:md(!1,!0)},qE={get:md(!0,!1)},By=new WeakMap,Dy=new WeakMap,$y=new WeakMap,KE=new WeakMap;function YE(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function zE(e){return e.__v_skip||!Object.isExtensible(e)?0:YE(yE(e))}function yd(e){return vo(e)?e:_d(e,!1,LE,HE,By)}function GE(e){return _d(e,!1,DE,VE,Dy)}function Uy(e){return _d(e,!0,BE,qE,$y)}function _d(e,t,r,n,o){if(!Xe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const s=zE(e);if(s===0)return e;const a=new Proxy(e,s===2?n:r);return o.set(e,a),a}function fo(e){return vo(e)?fo(e.__v_raw):!!(e&&e.__v_isReactive)}function vo(e){return!!(e&&e.__v_isReadonly)}function el(e){return!!(e&&e.__v_isShallow)}function Fy(e){return fo(e)||vo(e)}function We(e){const t=e&&e.__v_raw;return t?We(t):e}function jy(e){return Object.isExtensible(e)&&Za(e,"__v_skip",!0),e}const xs=e=>Xe(e)?yd(e):e,bd=e=>Xe(e)?Uy(e):e;class Wy{constructor(t,r,n,o){this.getter=t,this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new hd(()=>t(this._value),()=>xa(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=n}get value(){const t=We(this);return(!t._cacheable||t.effect.dirty)&&Pn(t._value,t._value=t.effect.run())&&xa(t,4),Hy(t),t.effect._dirtyLevel>=2&&xa(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function QE(e,t,r=!1){let n,o;const i=De(e);return i?(n=e,o=Zt):(n=e.get,o=e.set),new Wy(n,o,i||!o,r)}function Hy(e){var t;kn&&mi&&(e=We(e),Oy(mi,(t=e.dep)!=null?t:e.dep=Ny(()=>e.dep=void 0,e instanceof Wy?e:void 0)))}function xa(e,t=4,r){e=We(e);const n=e.dep;n&&ky(n,t)}function Ut(e){return!!(e&&e.__v_isRef===!0)}function BF(e){return XE(e,!1)}function XE(e,t){return Ut(e)?e:new JE(e,t)}class JE{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:We(t),this._value=r?t:xs(t)}get value(){return Hy(this),this._value}set value(t){const r=this.__v_isShallow||el(t)||vo(t);t=r?t:We(t),Pn(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:xs(t),xa(this,4))}}function ZE(e){return Ut(e)?e.value:e}const eS={get:(e,t,r)=>ZE(Reflect.get(e,t,r)),set:(e,t,r,n)=>{const o=e[t];return Ut(o)&&!Ut(r)?(o.value=r,!0):Reflect.set(e,t,r,n)}};function Vy(e){return fo(e)?e:new Proxy(e,eS)}/**
-* @vue/runtime-core v3.4.21
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function Nn(e,t,r,n){try{return n?e(...n):e()}catch(o){Dl(o,t,r)}}function mr(e,t,r,n){if(De(e)){const i=Nn(e,t,r,n);return i&&wy(i)&&i.catch(s=>{Dl(s,t,r)}),i}const o=[];for(let i=0;i<e.length;i++)o.push(mr(e[i],t,r,n));return o}function Dl(e,t,r,n=!0){const o=t?t.vnode:null;if(t){let i=t.parent;const s=t.proxy,a=`https://vuejs.org/error-reference/#runtime-${r}`;for(;i;){const u=i.ec;if(u){for(let c=0;c<u.length;c++)if(u[c](e,s,a)===!1)return}i=i.parent}const l=t.appContext.config.errorHandler;if(l){Nn(l,null,10,[e,s,a]);return}}tS(e,r,o,n)}function tS(e,t,r,n=!0){console.error(e)}let Is=!1,Yc=!1;const Tt=[];let Ir=0;const ho=[];let In=null,oi=0;const qy=Promise.resolve();let wd=null;function rS(e){const t=wd||qy;return e?t.then(this?e.bind(this):e):t}function nS(e){let t=Ir+1,r=Tt.length;for(;t<r;){const n=t+r>>>1,o=Tt[n],i=Cs(o);i<e||i===e&&o.pre?t=n+1:r=n}return t}function vd(e){(!Tt.length||!Tt.includes(e,Is&&e.allowRecurse?Ir+1:Ir))&&(e.id==null?Tt.push(e):Tt.splice(nS(e.id),0,e),Ky())}function Ky(){!Is&&!Yc&&(Yc=!0,wd=qy.then(zy))}function iS(e){const t=Tt.indexOf(e);t>Ir&&Tt.splice(t,1)}function oS(e){Be(e)?ho.push(...e):(!In||!In.includes(e,e.allowRecurse?oi+1:oi))&&ho.push(e),Ky()}function zp(e,t,r=Is?Ir+1:0){for(;r<Tt.length;r++){const n=Tt[r];if(n&&n.pre){if(e&&n.id!==e.uid)continue;Tt.splice(r,1),r--,n()}}}function Yy(e){if(ho.length){const t=[...new Set(ho)].sort((r,n)=>Cs(r)-Cs(n));if(ho.length=0,In){In.push(...t);return}for(In=t,oi=0;oi<In.length;oi++)In[oi]();In=null,oi=0}}const Cs=e=>e.id==null?1/0:e.id,sS=(e,t)=>{const r=Cs(e)-Cs(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function zy(e){Yc=!1,Is=!0,Tt.sort(sS);try{for(Ir=0;Ir<Tt.length;Ir++){const t=Tt[Ir];t&&t.active!==!1&&Nn(t,null,14)}}finally{Ir=0,Tt.length=0,Yy(),Is=!1,wd=null,(Tt.length||ho.length)&&zy()}}function aS(e,t,...r){if(e.isUnmounted)return;const n=e.vnode.props||Qe;let o=r;const i=t.startsWith("update:"),s=i&&t.slice(7);if(s&&s in n){const c=`${s==="modelValue"?"model":s}Modifiers`,{number:d,trim:p}=n[c]||Qe;p&&(o=r.map(m=>ct(m)?m.trim():m)),d&&(o=r.map(Wc))}let a,l=n[a=Ou(t)]||n[a=Ou(wo(t))];!l&&i&&(l=n[a=Ou(Bo(t))]),l&&mr(l,e,6,o);const u=n[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,mr(u,e,6,o)}}function Gy(e,t,r=!1){const n=t.emitsCache,o=n.get(e);if(o!==void 0)return o;const i=e.emits;let s={},a=!1;if(!De(e)){const l=u=>{const c=Gy(u,t,!0);c&&(a=!0,yt(s,c))};!r&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!a?(Xe(e)&&n.set(e,null),null):(Be(i)?i.forEach(l=>s[l]=null):yt(s,i),Xe(e)&&n.set(e,s),s)}function $l(e,t){return!e||!Nl(t)?!1:(t=t.slice(2).replace(/Once$/,""),Ue(e,t[0].toLowerCase()+t.slice(1))||Ue(e,Bo(t))||Ue(e,t))}let mt=null,Ul=null;function tl(e){const t=mt;return mt=e,Ul=e&&e.type.__scopeId||null,t}function DF(e){Ul=e}function $F(){Ul=null}function lS(e,t=mt,r){if(!t||e._n)return e;const n=(...o)=>{n._d&&ig(-1);const i=tl(t);let s;try{s=e(...o)}finally{tl(i),n._d&&ig(1)}return s};return n._n=!0,n._c=!0,n._d=!0,n}function Nu(e){const{type:t,vnode:r,proxy:n,withProxy:o,props:i,propsOptions:[s],slots:a,attrs:l,emit:u,render:c,renderCache:d,data:p,setupState:m,ctx:_,inheritAttrs:b}=e;let T,N;const R=tl(e);try{if(r.shapeFlag&4){const D=o||n,U=D;T=xr(c.call(U,D,d,i,m,p,_)),N=l}else{const D=t;T=xr(D.length>1?D(i,{attrs:l,slots:a,emit:u}):D(i,null)),N=t.props?l:uS(l)}}catch(D){ws.length=0,Dl(D,e,1),T=yr(Ln)}let S=T;if(N&&b!==!1){const D=Object.keys(N),{shapeFlag:U}=S;D.length&&U&7&&(s&&D.some(ad)&&(N=cS(N,s)),S=Eo(S,N))}return r.dirs&&(S=Eo(S),S.dirs=S.dirs?S.dirs.concat(r.dirs):r.dirs),r.transition&&(S.transition=r.transition),T=S,tl(R),T}const uS=e=>{let t;for(const r in e)(r==="class"||r==="style"||Nl(r))&&((t||(t={}))[r]=e[r]);return t},cS=(e,t)=>{const r={};for(const n in e)(!ad(n)||!(n.slice(9)in t))&&(r[n]=e[n]);return r};function fS(e,t,r){const{props:n,children:o,component:i}=e,{props:s,children:a,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&l>=0){if(l&1024)return!0;if(l&16)return n?Gp(n,s,u):!!s;if(l&8){const c=t.dynamicProps;for(let d=0;d<c.length;d++){const p=c[d];if(s[p]!==n[p]&&!$l(u,p))return!0}}}else return(o||a)&&(!a||!a.$stable)?!0:n===s?!1:n?s?Gp(n,s,u):!0:!!s;return!1}function Gp(e,t,r){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let o=0;o<n.length;o++){const i=n[o];if(t[i]!==e[i]&&!$l(r,i))return!0}return!1}function hS({vnode:e,parent:t},r){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=r,t=t.parent;else break}}const dS=Symbol.for("v-ndc"),pS=e=>e.__isSuspense;function gS(e,t){t&&t.pendingBranch?Be(e)?t.effects.push(...e):t.effects.push(e):oS(e)}const mS=Symbol.for("v-scx"),yS=()=>Ia(mS);function UF(e,t){return Ed(e,null,t)}const ra={};function Mu(e,t,r){return Ed(e,t,r)}function Ed(e,t,{immediate:r,deep:n,flush:o,once:i,onTrack:s,onTrigger:a}=Qe){if(t&&i){const x=t;t=(...L)=>{x(...L),U()}}const l=Rt,u=x=>n===!0?x:li(x,n===!1?1:void 0);let c,d=!1,p=!1;if(Ut(e)?(c=()=>e.value,d=el(e)):fo(e)?(c=()=>u(e),d=!0):Be(e)?(p=!0,d=e.some(x=>fo(x)||el(x)),c=()=>e.map(x=>{if(Ut(x))return x.value;if(fo(x))return u(x);if(De(x))return Nn(x,l,2)})):De(e)?t?c=()=>Nn(e,l,2):c=()=>(m&&m(),mr(e,l,3,[_])):c=Zt,t&&n){const x=c;c=()=>li(x())}let m,_=x=>{m=S.onStop=()=>{Nn(x,l,4),m=S.onStop=void 0}},b;if(Hl)if(_=Zt,t?r&&mr(t,l,3,[c(),p?[]:void 0,_]):c(),o==="sync"){const x=yS();b=x.__watcherHandles||(x.__watcherHandles=[])}else return Zt;let T=p?new Array(e.length).fill(ra):ra;const N=()=>{if(!(!S.active||!S.dirty))if(t){const x=S.run();(n||d||(p?x.some((L,j)=>Pn(L,T[j])):Pn(x,T)))&&(m&&m(),mr(t,l,3,[x,T===ra?void 0:p&&T[0]===ra?[]:T,_]),T=x)}else S.run()};N.allowRecurse=!!t;let R;o==="sync"?R=N:o==="post"?R=()=>Lt(N,l&&l.suspense):(N.pre=!0,l&&(N.id=l.uid),R=()=>vd(N));const S=new hd(c,Zt,R),D=RE(),U=()=>{S.stop(),D&&ld(D.effects,S)};return t?r?N():T=S.run():o==="post"?Lt(S.run.bind(S),l&&l.suspense):S.run(),b&&b.push(U),U}function _S(e,t,r){const n=this.proxy,o=ct(e)?e.includes(".")?Qy(n,e):()=>n[e]:e.bind(n,n);let i;De(t)?i=t:(i=t.handler,r=t);const s=Ds(this),a=Ed(o,i.bind(n),r);return s(),a}function Qy(e,t){const r=t.split(".");return()=>{let n=e;for(let o=0;o<r.length&&n;o++)n=n[r[o]];return n}}function li(e,t,r=0,n){if(!Xe(e)||e.__v_skip)return e;if(t&&t>0){if(r>=t)return e;r++}if(n=n||new Set,n.has(e))return e;if(n.add(e),Ut(e))li(e.value,t,r,n);else if(Be(e))for(let o=0;o<e.length;o++)li(e[o],t,r,n);else if(Ml(e)||co(e))e.forEach(o=>{li(o,t,r,n)});else if(Ey(e))for(const o in e)li(e[o],t,r,n);return e}function FF(e,t){if(mt===null)return e;const r=Vl(mt)||mt.proxy,n=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[i,s,a,l=Qe]=t[o];i&&(De(i)&&(i={mounted:i,updated:i}),i.deep&&li(s),n.push({dir:i,instance:r,value:s,oldValue:void 0,arg:a,modifiers:l}))}return e}function Kn(e,t,r,n){const o=e.dirs,i=t&&t.dirs;for(let s=0;s<o.length;s++){const a=o[s];i&&(a.oldValue=i[s].value);let l=a.dir[n];l&&(ki(),mr(l,r,8,[e.el,a,e,t]),Ni())}}/*! #__NO_SIDE_EFFECTS__ */function jF(e,t){return De(e)?yt({name:e.name},t,{setup:e}):e}const ys=e=>!!e.type.__asyncLoader,Xy=e=>e.type.__isKeepAlive;function bS(e,t){Jy(e,"a",t)}function wS(e,t){Jy(e,"da",t)}function Jy(e,t,r=Rt){const n=e.__wdc||(e.__wdc=()=>{let o=r;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Fl(t,n,r),r){let o=r.parent;for(;o&&o.parent;)Xy(o.parent.vnode)&&vS(n,t,r,o),o=o.parent}}function vS(e,t,r,n){const o=Fl(t,e,n,!0);Zy(()=>{ld(n[t],o)},r)}function Fl(e,t,r=Rt,n=!1){if(r){const o=r[e]||(r[e]=[]),i=t.__weh||(t.__weh=(...s)=>{if(r.isUnmounted)return;ki();const a=Ds(r),l=mr(t,r,e,s);return a(),Ni(),l});return n?o.unshift(i):o.push(i),i}}const hn=e=>(t,r=Rt)=>(!Hl||e==="sp")&&Fl(e,(...n)=>t(...n),r),ES=hn("bm"),SS=hn("m"),AS=hn("bu"),TS=hn("u"),xS=hn("bum"),Zy=hn("um"),IS=hn("sp"),CS=hn("rtg"),RS=hn("rtc");function OS(e,t=Rt){Fl("ec",e,t)}function WF(e,t,r,n){let o;const i=r;if(Be(e)||ct(e)){o=new Array(e.length);for(let s=0,a=e.length;s<a;s++)o[s]=t(e[s],s,void 0,i)}else if(typeof e=="number"){o=new Array(e);for(let s=0;s<e;s++)o[s]=t(s+1,s,void 0,i)}else if(Xe(e))if(e[Symbol.iterator])o=Array.from(e,(s,a)=>t(s,a,void 0,i));else{const s=Object.keys(e);o=new Array(s.length);for(let a=0,l=s.length;a<l;a++){const u=s[a];o[a]=t(e[u],u,a,i)}}else o=[];return o}function HF(e,t,r={},n,o){if(mt.isCE||mt.parent&&ys(mt.parent)&&mt.parent.isCE)return t!=="default"&&(r.name=t),yr("slot",r,n&&n());let i=e[t];i&&i._c&&(i._d=!1),c_();const s=i&&e_(i(r)),a=h_(fr,{key:r.key||s&&s.key||`_${t}`},s||(n?n():[]),s&&e._===1?64:-2);return i&&i._c&&(i._d=!0),a}function e_(e){return e.some(t=>d_(t)?!(t.type===Ln||t.type===fr&&!e_(t.children)):!0)?e:null}const zc=e=>e?m_(e)?Vl(e)||e.proxy:zc(e.parent):null,_s=yt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>zc(e.parent),$root:e=>zc(e.root),$emit:e=>e.emit,$options:e=>Sd(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,vd(e.update)}),$nextTick:e=>e.n||(e.n=rS.bind(e.proxy)),$watch:e=>_S.bind(e)}),Pu=(e,t)=>e!==Qe&&!e.__isScriptSetup&&Ue(e,t),kS={get({_:e},t){const{ctx:r,setupState:n,data:o,props:i,accessCache:s,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const m=s[t];if(m!==void 0)switch(m){case 1:return n[t];case 2:return o[t];case 4:return r[t];case 3:return i[t]}else{if(Pu(n,t))return s[t]=1,n[t];if(o!==Qe&&Ue(o,t))return s[t]=2,o[t];if((u=e.propsOptions[0])&&Ue(u,t))return s[t]=3,i[t];if(r!==Qe&&Ue(r,t))return s[t]=4,r[t];Gc&&(s[t]=0)}}const c=_s[t];let d,p;if(c)return t==="$attrs"&&$t(e,"get",t),c(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(r!==Qe&&Ue(r,t))return s[t]=4,r[t];if(p=l.config.globalProperties,Ue(p,t))return p[t]},set({_:e},t,r){const{data:n,setupState:o,ctx:i}=e;return Pu(o,t)?(o[t]=r,!0):n!==Qe&&Ue(n,t)?(n[t]=r,!0):Ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:n,appContext:o,propsOptions:i}},s){let a;return!!r[s]||e!==Qe&&Ue(e,s)||Pu(t,s)||(a=i[0])&&Ue(a,s)||Ue(n,s)||Ue(_s,s)||Ue(o.config.globalProperties,s)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:Ue(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function Qp(e){return Be(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}let Gc=!0;function NS(e){const t=Sd(e),r=e.proxy,n=e.ctx;Gc=!1,t.beforeCreate&&Xp(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:s,watch:a,provide:l,inject:u,created:c,beforeMount:d,mounted:p,beforeUpdate:m,updated:_,activated:b,deactivated:T,beforeDestroy:N,beforeUnmount:R,destroyed:S,unmounted:D,render:U,renderTracked:x,renderTriggered:L,errorCaptured:j,serverPrefetch:Y,expose:se,inheritAttrs:re,components:P,directives:B,filters:oe}=t;if(u&&MS(u,n,null),s)for(const ae in s){const z=s[ae];De(z)&&(n[ae]=z.bind(r))}if(o){const ae=o.call(r,r);Xe(ae)&&(e.data=yd(ae))}if(Gc=!0,i)for(const ae in i){const z=i[ae],pe=De(z)?z.bind(r,r):De(z.get)?z.get.bind(r,r):Zt,de=!De(z)&&De(z.set)?z.set.bind(r):Zt,ge=uA({get:pe,set:de});Object.defineProperty(n,ae,{enumerable:!0,configurable:!0,get:()=>ge.value,set:O=>ge.value=O})}if(a)for(const ae in a)t_(a[ae],n,r,ae);if(l){const ae=De(l)?l.call(r):l;Reflect.ownKeys(ae).forEach(z=>{US(z,ae[z])})}c&&Xp(c,e,"c");function ue(ae,z){Be(z)?z.forEach(pe=>ae(pe.bind(r))):z&&ae(z.bind(r))}if(ue(ES,d),ue(SS,p),ue(AS,m),ue(TS,_),ue(bS,b),ue(wS,T),ue(OS,j),ue(RS,x),ue(CS,L),ue(xS,R),ue(Zy,D),ue(IS,Y),Be(se))if(se.length){const ae=e.exposed||(e.exposed={});se.forEach(z=>{Object.defineProperty(ae,z,{get:()=>r[z],set:pe=>r[z]=pe})})}else e.exposed||(e.exposed={});U&&e.render===Zt&&(e.render=U),re!=null&&(e.inheritAttrs=re),P&&(e.components=P),B&&(e.directives=B)}function MS(e,t,r=Zt){Be(e)&&(e=Qc(e));for(const n in e){const o=e[n];let i;Xe(o)?"default"in o?i=Ia(o.from||n,o.default,!0):i=Ia(o.from||n):i=Ia(o),Ut(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:s=>i.value=s}):t[n]=i}}function Xp(e,t,r){mr(Be(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,r)}function t_(e,t,r,n){const o=n.includes(".")?Qy(r,n):()=>r[n];if(ct(e)){const i=t[e];De(i)&&Mu(o,i)}else if(De(e))Mu(o,e.bind(r));else if(Xe(e))if(Be(e))e.forEach(i=>t_(i,t,r,n));else{const i=De(e.handler)?e.handler.bind(r):t[e.handler];De(i)&&Mu(o,i,e)}}function Sd(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,a=i.get(t);let l;return a?l=a:!o.length&&!r&&!n?l=t:(l={},o.length&&o.forEach(u=>rl(l,u,s,!0)),rl(l,t,s)),Xe(t)&&i.set(t,l),l}function rl(e,t,r,n=!1){const{mixins:o,extends:i}=t;i&&rl(e,i,r,!0),o&&o.forEach(s=>rl(e,s,r,!0));for(const s in t)if(!(n&&s==="expose")){const a=PS[s]||r&&r[s];e[s]=a?a(e[s],t[s]):t[s]}return e}const PS={data:Jp,props:Zp,emits:Zp,methods:as,computed:as,beforeCreate:Ct,created:Ct,beforeMount:Ct,mounted:Ct,beforeUpdate:Ct,updated:Ct,beforeDestroy:Ct,beforeUnmount:Ct,destroyed:Ct,unmounted:Ct,activated:Ct,deactivated:Ct,errorCaptured:Ct,serverPrefetch:Ct,components:as,directives:as,watch:BS,provide:Jp,inject:LS};function Jp(e,t){return t?e?function(){return yt(De(e)?e.call(this,this):e,De(t)?t.call(this,this):t)}:t:e}function LS(e,t){return as(Qc(e),Qc(t))}function Qc(e){if(Be(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function Ct(e,t){return e?[...new Set([].concat(e,t))]:t}function as(e,t){return e?yt(Object.create(null),e,t):t}function Zp(e,t){return e?Be(e)&&Be(t)?[...new Set([...e,...t])]:yt(Object.create(null),Qp(e),Qp(t??{})):t}function BS(e,t){if(!e)return t;if(!t)return e;const r=yt(Object.create(null),e);for(const n in t)r[n]=Ct(e[n],t[n]);return r}function r_(){return{app:null,config:{isNativeTag:gE,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let DS=0;function $S(e,t){return function(n,o=null){De(n)||(n=yt({},n)),o!=null&&!Xe(o)&&(o=null);const i=r_(),s=new WeakSet;let a=!1;const l=i.app={_uid:DS++,_component:n,_props:o,_container:null,_context:i,_instance:null,version:cA,get config(){return i.config},set config(u){},use(u,...c){return s.has(u)||(u&&De(u.install)?(s.add(u),u.install(l,...c)):De(u)&&(s.add(u),u(l,...c))),l},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),l},component(u,c){return c?(i.components[u]=c,l):i.components[u]},directive(u,c){return c?(i.directives[u]=c,l):i.directives[u]},mount(u,c,d){if(!a){const p=yr(n,o);return p.appContext=i,d===!0?d="svg":d===!1&&(d=void 0),c&&t?t(p,u):e(p,u,d),a=!0,l._container=u,u.__vue_app__=l,Vl(p.component)||p.component.proxy}},unmount(){a&&(e(null,l._container),delete l._container.__vue_app__)},provide(u,c){return i.provides[u]=c,l},runWithContext(u){const c=bs;bs=l;try{return u()}finally{bs=c}}};return l}}let bs=null;function US(e,t){if(Rt){let r=Rt.provides;const n=Rt.parent&&Rt.parent.provides;n===r&&(r=Rt.provides=Object.create(n)),r[e]=t}}function Ia(e,t,r=!1){const n=Rt||mt;if(n||bs){const o=n?n.parent==null?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:bs._context.provides;if(o&&e in o)return o[e];if(arguments.length>1)return r&&De(t)?t.call(n&&n.proxy):t}}function FS(e,t,r,n=!1){const o={},i={};Za(i,Wl,1),e.propsDefaults=Object.create(null),n_(e,t,o,i);for(const s in e.propsOptions[0])s in o||(o[s]=void 0);r?e.props=n?o:GE(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function jS(e,t,r,n){const{props:o,attrs:i,vnode:{patchFlag:s}}=e,a=We(o),[l]=e.propsOptions;let u=!1;if((n||s>0)&&!(s&16)){if(s&8){const c=e.vnode.dynamicProps;for(let d=0;d<c.length;d++){let p=c[d];if($l(e.emitsOptions,p))continue;const m=t[p];if(l)if(Ue(i,p))m!==i[p]&&(i[p]=m,u=!0);else{const _=wo(p);o[_]=Xc(l,a,_,m,e,!1)}else m!==i[p]&&(i[p]=m,u=!0)}}}else{n_(e,t,o,i)&&(u=!0);let c;for(const d in a)(!t||!Ue(t,d)&&((c=Bo(d))===d||!Ue(t,c)))&&(l?r&&(r[d]!==void 0||r[c]!==void 0)&&(o[d]=Xc(l,a,d,void 0,e,!0)):delete o[d]);if(i!==a)for(const d in i)(!t||!Ue(t,d))&&(delete i[d],u=!0)}u&&Zr(e,"set","$attrs")}function n_(e,t,r,n){const[o,i]=e.propsOptions;let s=!1,a;if(t)for(let l in t){if(ms(l))continue;const u=t[l];let c;o&&Ue(o,c=wo(l))?!i||!i.includes(c)?r[c]=u:(a||(a={}))[c]=u:$l(e.emitsOptions,l)||(!(l in n)||u!==n[l])&&(n[l]=u,s=!0)}if(i){const l=We(r),u=a||Qe;for(let c=0;c<i.length;c++){const d=i[c];r[d]=Xc(o,l,d,u[d],e,!Ue(u,d))}}return s}function Xc(e,t,r,n,o,i){const s=e[r];if(s!=null){const a=Ue(s,"default");if(a&&n===void 0){const l=s.default;if(s.type!==Function&&!s.skipFactory&&De(l)){const{propsDefaults:u}=o;if(r in u)n=u[r];else{const c=Ds(o);n=u[r]=l.call(null,t),c()}}else n=l}s[0]&&(i&&!a?n=!1:s[1]&&(n===""||n===Bo(r))&&(n=!0))}return n}function i_(e,t,r=!1){const n=t.propsCache,o=n.get(e);if(o)return o;const i=e.props,s={},a=[];let l=!1;if(!De(e)){const c=d=>{l=!0;const[p,m]=i_(d,t,!0);yt(s,p),m&&a.push(...m)};!r&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!i&&!l)return Xe(e)&&n.set(e,uo),uo;if(Be(i))for(let c=0;c<i.length;c++){const d=wo(i[c]);eg(d)&&(s[d]=Qe)}else if(i)for(const c in i){const d=wo(c);if(eg(d)){const p=i[c],m=s[d]=Be(p)||De(p)?{type:p}:yt({},p);if(m){const _=ng(Boolean,m.type),b=ng(String,m.type);m[0]=_>-1,m[1]=b<0||_<b,(_>-1||Ue(m,"default"))&&a.push(d)}}}const u=[s,a];return Xe(e)&&n.set(e,u),u}function eg(e){return e[0]!=="$"&&!ms(e)}function tg(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function rg(e,t){return tg(e)===tg(t)}function ng(e,t){return Be(t)?t.findIndex(r=>rg(r,e)):De(t)&&rg(t,e)?0:-1}const o_=e=>e[0]==="_"||e==="$stable",Ad=e=>Be(e)?e.map(xr):[xr(e)],WS=(e,t,r)=>{if(t._n)return t;const n=lS((...o)=>Ad(t(...o)),r);return n._c=!1,n},s_=(e,t,r)=>{const n=e._ctx;for(const o in e){if(o_(o))continue;const i=e[o];if(De(i))t[o]=WS(o,i,n);else if(i!=null){const s=Ad(i);t[o]=()=>s}}},a_=(e,t)=>{const r=Ad(t);e.slots.default=()=>r},HS=(e,t)=>{if(e.vnode.shapeFlag&32){const r=t._;r?(e.slots=We(t),Za(t,"_",r)):s_(t,e.slots={})}else e.slots={},t&&a_(e,t);Za(e.slots,Wl,1)},VS=(e,t,r)=>{const{vnode:n,slots:o}=e;let i=!0,s=Qe;if(n.shapeFlag&32){const a=t._;a?r&&a===1?i=!1:(yt(o,t),!r&&a===1&&delete o._):(i=!t.$stable,s_(t,o)),s=t}else t&&(a_(e,t),s={default:1});if(i)for(const a in o)!o_(a)&&s[a]==null&&delete o[a]};function Jc(e,t,r,n,o=!1){if(Be(e)){e.forEach((p,m)=>Jc(p,t&&(Be(t)?t[m]:t),r,n,o));return}if(ys(n)&&!o)return;const i=n.shapeFlag&4?Vl(n.component)||n.component.proxy:n.el,s=o?null:i,{i:a,r:l}=e,u=t&&t.r,c=a.refs===Qe?a.refs={}:a.refs,d=a.setupState;if(u!=null&&u!==l&&(ct(u)?(c[u]=null,Ue(d,u)&&(d[u]=null)):Ut(u)&&(u.value=null)),De(l))Nn(l,a,12,[s,c]);else{const p=ct(l),m=Ut(l);if(p||m){const _=()=>{if(e.f){const b=p?Ue(d,l)?d[l]:c[l]:l.value;o?Be(b)&&ld(b,i):Be(b)?b.includes(i)||b.push(i):p?(c[l]=[i],Ue(d,l)&&(d[l]=c[l])):(l.value=[i],e.k&&(c[e.k]=l.value))}else p?(c[l]=s,Ue(d,l)&&(d[l]=s)):m&&(l.value=s,e.k&&(c[e.k]=s))};s?(_.id=-1,Lt(_,r)):_()}}}const Lt=gS;function qS(e){return KS(e)}function KS(e,t){const r=Ay();r.__VUE__=!0;const{insert:n,remove:o,patchProp:i,createElement:s,createText:a,createComment:l,setText:u,setElementText:c,parentNode:d,nextSibling:p,setScopeId:m=Zt,insertStaticContent:_}=e,b=(v,A,E,k=null,M=null,ee=null,te=void 0,$=null,K=!!A.dynamicChildren)=>{if(v===A)return;v&&!zo(v,A)&&(k=q(v),O(v,M,ee,!0),v=null),A.patchFlag===-2&&(K=!1,A.dynamicChildren=null);const{type:I,ref:W,shapeFlag:J}=A;switch(I){case jl:T(v,A,E,k);break;case Ln:N(v,A,E,k);break;case Ca:v==null&&R(A,E,k,te);break;case fr:P(v,A,E,k,M,ee,te,$,K);break;default:J&1?U(v,A,E,k,M,ee,te,$,K):J&6?B(v,A,E,k,M,ee,te,$,K):(J&64||J&128)&&I.process(v,A,E,k,M,ee,te,$,K,he)}W!=null&&M&&Jc(W,v&&v.ref,ee,A||v,!A)},T=(v,A,E,k)=>{if(v==null)n(A.el=a(A.children),E,k);else{const M=A.el=v.el;A.children!==v.children&&u(M,A.children)}},N=(v,A,E,k)=>{v==null?n(A.el=l(A.children||""),E,k):A.el=v.el},R=(v,A,E,k)=>{[v.el,v.anchor]=_(v.children,A,E,k,v.el,v.anchor)},S=({el:v,anchor:A},E,k)=>{let M;for(;v&&v!==A;)M=p(v),n(v,E,k),v=M;n(A,E,k)},D=({el:v,anchor:A})=>{let E;for(;v&&v!==A;)E=p(v),o(v),v=E;o(A)},U=(v,A,E,k,M,ee,te,$,K)=>{A.type==="svg"?te="svg":A.type==="math"&&(te="mathml"),v==null?x(A,E,k,M,ee,te,$,K):Y(v,A,M,ee,te,$,K)},x=(v,A,E,k,M,ee,te,$)=>{let K,I;const{props:W,shapeFlag:J,transition:le,dirs:y}=v;if(K=v.el=s(v.type,ee,W&&W.is,W),J&8?c(K,v.children):J&16&&j(v.children,K,null,k,M,Lu(v,ee),te,$),y&&Kn(v,null,k,"created"),L(K,v,v.scopeId,te,k),W){for(const f in W)f!=="value"&&!ms(f)&&i(K,f,null,W[f],ee,v.children,k,M,ye);"value"in W&&i(K,"value",null,W.value,ee),(I=W.onVnodeBeforeMount)&&wr(I,k,v)}y&&Kn(v,null,k,"beforeMount");const h=YS(M,le);h&&le.beforeEnter(K),n(K,A,E),((I=W&&W.onVnodeMounted)||h||y)&&Lt(()=>{I&&wr(I,k,v),h&&le.enter(K),y&&Kn(v,null,k,"mounted")},M)},L=(v,A,E,k,M)=>{if(E&&m(v,E),k)for(let ee=0;ee<k.length;ee++)m(v,k[ee]);if(M){let ee=M.subTree;if(A===ee){const te=M.vnode;L(v,te,te.scopeId,te.slotScopeIds,M.parent)}}},j=(v,A,E,k,M,ee,te,$,K=0)=>{for(let I=K;I<v.length;I++){const W=v[I]=$?Cn(v[I]):xr(v[I]);b(null,W,A,E,k,M,ee,te,$)}},Y=(v,A,E,k,M,ee,te)=>{const $=A.el=v.el;let{patchFlag:K,dynamicChildren:I,dirs:W}=A;K|=v.patchFlag&16;const J=v.props||Qe,le=A.props||Qe;let y;if(E&&Yn(E,!1),(y=le.onVnodeBeforeUpdate)&&wr(y,E,A,v),W&&Kn(A,v,E,"beforeUpdate"),E&&Yn(E,!0),I?se(v.dynamicChildren,I,$,E,k,Lu(A,M),ee):te||z(v,A,$,null,E,k,Lu(A,M),ee,!1),K>0){if(K&16)re($,A,J,le,E,k,M);else if(K&2&&J.class!==le.class&&i($,"class",null,le.class,M),K&4&&i($,"style",J.style,le.style,M),K&8){const h=A.dynamicProps;for(let f=0;f<h.length;f++){const g=h[f],w=J[g],C=le[g];(C!==w||g==="value")&&i($,g,w,C,M,v.children,E,k,ye)}}K&1&&v.children!==A.children&&c($,A.children)}else!te&&I==null&&re($,A,J,le,E,k,M);((y=le.onVnodeUpdated)||W)&&Lt(()=>{y&&wr(y,E,A,v),W&&Kn(A,v,E,"updated")},k)},se=(v,A,E,k,M,ee,te)=>{for(let $=0;$<A.length;$++){const K=v[$],I=A[$],W=K.el&&(K.type===fr||!zo(K,I)||K.shapeFlag&70)?d(K.el):E;b(K,I,W,null,k,M,ee,te,!0)}},re=(v,A,E,k,M,ee,te)=>{if(E!==k){if(E!==Qe)for(const $ in E)!ms($)&&!($ in k)&&i(v,$,E[$],null,te,A.children,M,ee,ye);for(const $ in k){if(ms($))continue;const K=k[$],I=E[$];K!==I&&$!=="value"&&i(v,$,I,K,te,A.children,M,ee,ye)}"value"in k&&i(v,"value",E.value,k.value,te)}},P=(v,A,E,k,M,ee,te,$,K)=>{const I=A.el=v?v.el:a(""),W=A.anchor=v?v.anchor:a("");let{patchFlag:J,dynamicChildren:le,slotScopeIds:y}=A;y&&($=$?$.concat(y):y),v==null?(n(I,E,k),n(W,E,k),j(A.children||[],E,W,M,ee,te,$,K)):J>0&&J&64&&le&&v.dynamicChildren?(se(v.dynamicChildren,le,E,M,ee,te,$),(A.key!=null||M&&A===M.subTree)&&l_(v,A,!0)):z(v,A,E,W,M,ee,te,$,K)},B=(v,A,E,k,M,ee,te,$,K)=>{A.slotScopeIds=$,v==null?A.shapeFlag&512?M.ctx.activate(A,E,k,te,K):oe(A,E,k,M,ee,te,K):ne(v,A,K)},oe=(v,A,E,k,M,ee,te)=>{const $=v.component=nA(v,k,M);if(Xy(v)&&($.ctx.renderer=he),iA($),$.asyncDep){if(M&&M.registerDep($,ue),!v.el){const K=$.subTree=yr(Ln);N(null,K,A,E)}}else ue($,v,A,E,M,ee,te)},ne=(v,A,E)=>{const k=A.component=v.component;if(fS(v,A,E))if(k.asyncDep&&!k.asyncResolved){ae(k,A,E);return}else k.next=A,iS(k.update),k.effect.dirty=!0,k.update();else A.el=v.el,k.vnode=A},ue=(v,A,E,k,M,ee,te)=>{const $=()=>{if(v.isMounted){let{next:W,bu:J,u:le,parent:y,vnode:h}=v;{const V=u_(v);if(V){W&&(W.el=h.el,ae(v,W,te)),V.asyncDep.then(()=>{v.isUnmounted||$()});return}}let f=W,g;Yn(v,!1),W?(W.el=h.el,ae(v,W,te)):W=h,J&&Ta(J),(g=W.props&&W.props.onVnodeBeforeUpdate)&&wr(g,y,W,h),Yn(v,!0);const w=Nu(v),C=v.subTree;v.subTree=w,b(C,w,d(C.el),q(C),v,M,ee),W.el=w.el,f===null&&hS(v,w.el),le&&Lt(le,M),(g=W.props&&W.props.onVnodeUpdated)&&Lt(()=>wr(g,y,W,h),M)}else{let W;const{el:J,props:le}=A,{bm:y,m:h,parent:f}=v,g=ys(A);if(Yn(v,!1),y&&Ta(y),!g&&(W=le&&le.onVnodeBeforeMount)&&wr(W,f,A),Yn(v,!0),J&&Z){const w=()=>{v.subTree=Nu(v),Z(J,v.subTree,v,M,null)};g?A.type.__asyncLoader().then(()=>!v.isUnmounted&&w()):w()}else{const w=v.subTree=Nu(v);b(null,w,E,k,v,M,ee),A.el=w.el}if(h&&Lt(h,M),!g&&(W=le&&le.onVnodeMounted)){const w=A;Lt(()=>wr(W,f,w),M)}(A.shapeFlag&256||f&&ys(f.vnode)&&f.vnode.shapeFlag&256)&&v.a&&Lt(v.a,M),v.isMounted=!0,A=E=k=null}},K=v.effect=new hd($,Zt,()=>vd(I),v.scope),I=v.update=()=>{K.dirty&&K.run()};I.id=v.uid,Yn(v,!0),I()},ae=(v,A,E)=>{A.component=v;const k=v.vnode.props;v.vnode=A,v.next=null,jS(v,A.props,k,E),VS(v,A.children,E),ki(),zp(v),Ni()},z=(v,A,E,k,M,ee,te,$,K=!1)=>{const I=v&&v.children,W=v?v.shapeFlag:0,J=A.children,{patchFlag:le,shapeFlag:y}=A;if(le>0){if(le&128){de(I,J,E,k,M,ee,te,$,K);return}else if(le&256){pe(I,J,E,k,M,ee,te,$,K);return}}y&8?(W&16&&ye(I,M,ee),J!==I&&c(E,J)):W&16?y&16?de(I,J,E,k,M,ee,te,$,K):ye(I,M,ee,!0):(W&8&&c(E,""),y&16&&j(J,E,k,M,ee,te,$,K))},pe=(v,A,E,k,M,ee,te,$,K)=>{v=v||uo,A=A||uo;const I=v.length,W=A.length,J=Math.min(I,W);let le;for(le=0;le<J;le++){const y=A[le]=K?Cn(A[le]):xr(A[le]);b(v[le],y,E,null,M,ee,te,$,K)}I>W?ye(v,M,ee,!0,!1,J):j(A,E,k,M,ee,te,$,K,J)},de=(v,A,E,k,M,ee,te,$,K)=>{let I=0;const W=A.length;let J=v.length-1,le=W-1;for(;I<=J&&I<=le;){const y=v[I],h=A[I]=K?Cn(A[I]):xr(A[I]);if(zo(y,h))b(y,h,E,null,M,ee,te,$,K);else break;I++}for(;I<=J&&I<=le;){const y=v[J],h=A[le]=K?Cn(A[le]):xr(A[le]);if(zo(y,h))b(y,h,E,null,M,ee,te,$,K);else break;J--,le--}if(I>J){if(I<=le){const y=le+1,h=y<W?A[y].el:k;for(;I<=le;)b(null,A[I]=K?Cn(A[I]):xr(A[I]),E,h,M,ee,te,$,K),I++}}else if(I>le)for(;I<=J;)O(v[I],M,ee,!0),I++;else{const y=I,h=I,f=new Map;for(I=h;I<=le;I++){const Te=A[I]=K?Cn(A[I]):xr(A[I]);Te.key!=null&&f.set(Te.key,I)}let g,w=0;const C=le-h+1;let V=!1,fe=0;const xe=new Array(C);for(I=0;I<C;I++)xe[I]=0;for(I=y;I<=J;I++){const Te=v[I];if(w>=C){O(Te,M,ee,!0);continue}let Oe;if(Te.key!=null)Oe=f.get(Te.key);else for(g=h;g<=le;g++)if(xe[g-h]===0&&zo(Te,A[g])){Oe=g;break}Oe===void 0?O(Te,M,ee,!0):(xe[Oe-h]=I+1,Oe>=fe?fe=Oe:V=!0,b(Te,A[Oe],E,null,M,ee,te,$,K),w++)}const ke=V?zS(xe):uo;for(g=ke.length-1,I=C-1;I>=0;I--){const Te=h+I,Oe=A[Te],Re=Te+1<W?A[Te+1].el:k;xe[I]===0?b(null,Oe,E,Re,M,ee,te,$,K):V&&(g<0||I!==ke[g]?ge(Oe,E,Re,2):g--)}}},ge=(v,A,E,k,M=null)=>{const{el:ee,type:te,transition:$,children:K,shapeFlag:I}=v;if(I&6){ge(v.component.subTree,A,E,k);return}if(I&128){v.suspense.move(A,E,k);return}if(I&64){te.move(v,A,E,he);return}if(te===fr){n(ee,A,E);for(let J=0;J<K.length;J++)ge(K[J],A,E,k);n(v.anchor,A,E);return}if(te===Ca){S(v,A,E);return}if(k!==2&&I&1&&$)if(k===0)$.beforeEnter(ee),n(ee,A,E),Lt(()=>$.enter(ee),M);else{const{leave:J,delayLeave:le,afterLeave:y}=$,h=()=>n(ee,A,E),f=()=>{J(ee,()=>{h(),y&&y()})};le?le(ee,h,f):f()}else n(ee,A,E)},O=(v,A,E,k=!1,M=!1)=>{const{type:ee,props:te,ref:$,children:K,dynamicChildren:I,shapeFlag:W,patchFlag:J,dirs:le}=v;if($!=null&&Jc($,null,E,v,!0),W&256){A.ctx.deactivate(v);return}const y=W&1&&le,h=!ys(v);let f;if(h&&(f=te&&te.onVnodeBeforeUnmount)&&wr(f,A,v),W&6)ve(v.component,E,k);else{if(W&128){v.suspense.unmount(E,k);return}y&&Kn(v,null,A,"beforeUnmount"),W&64?v.type.remove(v,A,E,M,he,k):I&&(ee!==fr||J>0&&J&64)?ye(I,A,E,!1,!0):(ee===fr&&J&384||!M&&W&16)&&ye(K,A,E),k&&ie(v)}(h&&(f=te&&te.onVnodeUnmounted)||y)&&Lt(()=>{f&&wr(f,A,v),y&&Kn(v,null,A,"unmounted")},E)},ie=v=>{const{type:A,el:E,anchor:k,transition:M}=v;if(A===fr){me(E,k);return}if(A===Ca){D(v);return}const ee=()=>{o(E),M&&!M.persisted&&M.afterLeave&&M.afterLeave()};if(v.shapeFlag&1&&M&&!M.persisted){const{leave:te,delayLeave:$}=M,K=()=>te(E,ee);$?$(v.el,ee,K):K()}else ee()},me=(v,A)=>{let E;for(;v!==A;)E=p(v),o(v),v=E;o(A)},ve=(v,A,E)=>{const{bum:k,scope:M,update:ee,subTree:te,um:$}=v;k&&Ta(k),M.stop(),ee&&(ee.active=!1,O(te,v,A,E)),$&&Lt($,A),Lt(()=>{v.isUnmounted=!0},A),A&&A.pendingBranch&&!A.isUnmounted&&v.asyncDep&&!v.asyncResolved&&v.suspenseId===A.pendingId&&(A.deps--,A.deps===0&&A.resolve())},ye=(v,A,E,k=!1,M=!1,ee=0)=>{for(let te=ee;te<v.length;te++)O(v[te],A,E,k,M)},q=v=>v.shapeFlag&6?q(v.component.subTree):v.shapeFlag&128?v.suspense.next():p(v.anchor||v.el);let F=!1;const X=(v,A,E)=>{v==null?A._vnode&&O(A._vnode,null,null,!0):b(A._vnode||null,v,A,null,null,null,E),F||(F=!0,zp(),Yy(),F=!1),A._vnode=v},he={p:b,um:O,m:ge,r:ie,mt:oe,mc:j,pc:z,pbc:se,n:q,o:e};let ce,Z;return{render:X,hydrate:ce,createApp:$S(X,ce)}}function Lu({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function Yn({effect:e,update:t},r){e.allowRecurse=t.allowRecurse=r}function YS(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function l_(e,t,r=!1){const n=e.children,o=t.children;if(Be(n)&&Be(o))for(let i=0;i<n.length;i++){const s=n[i];let a=o[i];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=o[i]=Cn(o[i]),a.el=s.el),r||l_(s,a)),a.type===jl&&(a.el=s.el)}}function zS(e){const t=e.slice(),r=[0];let n,o,i,s,a;const l=e.length;for(n=0;n<l;n++){const u=e[n];if(u!==0){if(o=r[r.length-1],e[o]<u){t[n]=o,r.push(n);continue}for(i=0,s=r.length-1;i<s;)a=i+s>>1,e[r[a]]<u?i=a+1:s=a;u<e[r[i]]&&(i>0&&(t[n]=r[i-1]),r[i]=n)}}for(i=r.length,s=r[i-1];i-- >0;)r[i]=s,s=t[s];return r}function u_(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:u_(t)}const GS=e=>e.__isTeleport,fr=Symbol.for("v-fgt"),jl=Symbol.for("v-txt"),Ln=Symbol.for("v-cmt"),Ca=Symbol.for("v-stc"),ws=[];let gr=null;function c_(e=!1){ws.push(gr=e?null:[])}function QS(){ws.pop(),gr=ws[ws.length-1]||null}let Rs=1;function ig(e){Rs+=e}function f_(e){return e.dynamicChildren=Rs>0?gr||uo:null,QS(),Rs>0&&gr&&gr.push(e),e}function VF(e,t,r,n,o,i){return f_(g_(e,t,r,n,o,i,!0))}function h_(e,t,r,n,o){return f_(yr(e,t,r,n,o,!0))}function d_(e){return e?e.__v_isVNode===!0:!1}function zo(e,t){return e.type===t.type&&e.key===t.key}const Wl="__vInternal",p_=({key:e})=>e??null,Ra=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?ct(e)||Ut(e)||De(e)?{i:mt,r:e,k:t,f:!!r}:e:null);function g_(e,t=null,r=null,n=0,o=null,i=e===fr?0:1,s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&p_(t),ref:t&&Ra(t),scopeId:Ul,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:mt};return a?(Td(l,r),i&128&&e.normalize(l)):r&&(l.shapeFlag|=ct(r)?8:16),Rs>0&&!s&&gr&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&gr.push(l),l}const yr=XS;function XS(e,t=null,r=null,n=0,o=null,i=!1){if((!e||e===dS)&&(e=Ln),d_(e)){const a=Eo(e,t,!0);return r&&Td(a,r),Rs>0&&!i&&gr&&(a.shapeFlag&6?gr[gr.indexOf(e)]=a:gr.push(a)),a.patchFlag|=-2,a}if(lA(e)&&(e=e.__vccOpts),t){t=JS(t);let{class:a,style:l}=t;a&&!ct(a)&&(t.class=fd(a)),Xe(l)&&(Fy(l)&&!Be(l)&&(l=yt({},l)),t.style=cd(l))}const s=ct(e)?1:pS(e)?128:GS(e)?64:Xe(e)?4:De(e)?2:0;return g_(e,t,r,n,o,s,i,!0)}function JS(e){return e?Fy(e)||Wl in e?yt({},e):e:null}function Eo(e,t,r=!1){const{props:n,ref:o,patchFlag:i,children:s}=e,a=t?eA(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&p_(a),ref:t&&t.ref?r&&o?Be(o)?o.concat(Ra(t)):[o,Ra(t)]:Ra(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==fr?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Eo(e.ssContent),ssFallback:e.ssFallback&&Eo(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ZS(e=" ",t=0){return yr(jl,null,e,t)}function qF(e,t){const r=yr(Ca,null,e);return r.staticCount=t,r}function KF(e="",t=!1){return t?(c_(),h_(Ln,null,e)):yr(Ln,null,e)}function xr(e){return e==null||typeof e=="boolean"?yr(Ln):Be(e)?yr(fr,null,e.slice()):typeof e=="object"?Cn(e):yr(jl,null,String(e))}function Cn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Eo(e)}function Td(e,t){let r=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(Be(t))r=16;else if(typeof t=="object")if(n&65){const o=t.default;o&&(o._c&&(o._d=!1),Td(e,o()),o._c&&(o._d=!0));return}else{r=32;const o=t._;!o&&!(Wl in t)?t._ctx=mt:o===3&&mt&&(mt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else De(t)?(t={default:t,_ctx:mt},r=32):(t=String(t),n&64?(r=16,t=[ZS(t)]):r=8);e.children=t,e.shapeFlag|=r}function eA(...e){const t={};for(let r=0;r<e.length;r++){const n=e[r];for(const o in n)if(o==="class")t.class!==n.class&&(t.class=fd([t.class,n.class]));else if(o==="style")t.style=cd([t.style,n.style]);else if(Nl(o)){const i=t[o],s=n[o];s&&i!==s&&!(Be(i)&&i.includes(s))&&(t[o]=i?[].concat(i,s):s)}else o!==""&&(t[o]=n[o])}return t}function wr(e,t,r,n=null){mr(e,t,7,[r,n])}const tA=r_();let rA=0;function nA(e,t,r){const n=e.type,o=(t?t.appContext:e.appContext)||tA,i={uid:rA++,vnode:e,type:n,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,scope:new IE(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:i_(n,o),emitsOptions:Gy(n,o),emit:null,emitted:null,propsDefaults:Qe,inheritAttrs:n.inheritAttrs,ctx:Qe,data:Qe,props:Qe,attrs:Qe,slots:Qe,refs:Qe,setupState:Qe,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=aS.bind(null,i),e.ce&&e.ce(i),i}let Rt=null,nl,Zc;{const e=Ay(),t=(r,n)=>{let o;return(o=e[r])||(o=e[r]=[]),o.push(n),i=>{o.length>1?o.forEach(s=>s(i)):o[0](i)}};nl=t("__VUE_INSTANCE_SETTERS__",r=>Rt=r),Zc=t("__VUE_SSR_SETTERS__",r=>Hl=r)}const Ds=e=>{const t=Rt;return nl(e),e.scope.on(),()=>{e.scope.off(),nl(t)}},og=()=>{Rt&&Rt.scope.off(),nl(null)};function m_(e){return e.vnode.shapeFlag&4}let Hl=!1;function iA(e,t=!1){t&&Zc(t);const{props:r,children:n}=e.vnode,o=m_(e);FS(e,r,o,t),HS(e,n);const i=o?oA(e,t):void 0;return t&&Zc(!1),i}function oA(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=jy(new Proxy(e.ctx,kS));const{setup:n}=r;if(n){const o=e.setupContext=n.length>1?aA(e):null,i=Ds(e);ki();const s=Nn(n,e,0,[e.props,o]);if(Ni(),i(),wy(s)){if(s.then(og,og),t)return s.then(a=>{sg(e,a,t)}).catch(a=>{Dl(a,e,0)});e.asyncDep=s}else sg(e,s,t)}else y_(e,t)}function sg(e,t,r){De(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Xe(t)&&(e.setupState=Vy(t)),y_(e,r)}let ag;function y_(e,t,r){const n=e.type;if(!e.render){if(!t&&ag&&!n.render){const o=n.template||Sd(e).template;if(o){const{isCustomElement:i,compilerOptions:s}=e.appContext.config,{delimiters:a,compilerOptions:l}=n,u=yt(yt({isCustomElement:i,delimiters:a},s),l);n.render=ag(o,u)}}e.render=n.render||Zt}{const o=Ds(e);ki();try{NS(e)}finally{Ni(),o()}}}function sA(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,r){return $t(e,"get","$attrs"),t[r]}}))}function aA(e){const t=r=>{e.exposed=r||{}};return{get attrs(){return sA(e)},slots:e.slots,emit:e.emit,expose:t}}function Vl(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Vy(jy(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in _s)return _s[r](e)},has(t,r){return r in t||r in _s}}))}function lA(e){return De(e)&&"__vccOpts"in e}const uA=(e,t)=>QE(e,t,Hl),cA="3.4.21";/**
-* @vue/runtime-dom v3.4.21
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/const fA="http://www.w3.org/2000/svg",hA="http://www.w3.org/1998/Math/MathML",Rn=typeof document<"u"?document:null,lg=Rn&&Rn.createElement("template"),dA={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,n)=>{const o=t==="svg"?Rn.createElementNS(fA,e):t==="mathml"?Rn.createElementNS(hA,e):Rn.createElement(e,r?{is:r}:void 0);return e==="select"&&n&&n.multiple!=null&&o.setAttribute("multiple",n.multiple),o},createText:e=>Rn.createTextNode(e),createComment:e=>Rn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Rn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,n,o,i){const s=r?r.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),r),!(o===i||!(o=o.nextSibling)););else{lg.innerHTML=n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e;const a=lg.content;if(n==="svg"||n==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,r)}return[s?s.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},pA=Symbol("_vtc");function gA(e,t,r){const n=e[pA];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const il=Symbol("_vod"),__=Symbol("_vsh"),YF={beforeMount(e,{value:t},{transition:r}){e[il]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):Go(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:n}){!t!=!r&&(n?t?(n.beforeEnter(e),Go(e,!0),n.enter(e)):n.leave(e,()=>{Go(e,!1)}):Go(e,t))},beforeUnmount(e,{value:t}){Go(e,t)}};function Go(e,t){e.style.display=t?e[il]:"none",e[__]=!t}const mA=Symbol(""),yA=/(^|;)\s*display\s*:/;function _A(e,t,r){const n=e.style,o=ct(r);let i=!1;if(r&&!o){if(t)if(ct(t))for(const s of t.split(";")){const a=s.slice(0,s.indexOf(":")).trim();r[a]==null&&Oa(n,a,"")}else for(const s in t)r[s]==null&&Oa(n,s,"");for(const s in r)s==="display"&&(i=!0),Oa(n,s,r[s])}else if(o){if(t!==r){const s=n[mA];s&&(r+=";"+s),n.cssText=r,i=yA.test(r)}}else t&&e.removeAttribute("style");il in e&&(e[il]=i?n.display:"",e[__]&&(n.display="none"))}const ug=/\s*!important$/;function Oa(e,t,r){if(Be(r))r.forEach(n=>Oa(e,t,n));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const n=bA(e,t);ug.test(r)?e.setProperty(Bo(n),r.replace(ug,""),"important"):e[n]=r}}const cg=["Webkit","Moz","ms"],Bu={};function bA(e,t){const r=Bu[t];if(r)return r;let n=wo(t);if(n!=="filter"&&n in e)return Bu[t]=n;n=Sy(n);for(let o=0;o<cg.length;o++){const i=cg[o]+n;if(i in e)return Bu[t]=i}return t}const fg="http://www.w3.org/1999/xlink";function wA(e,t,r,n,o){if(n&&t.startsWith("xlink:"))r==null?e.removeAttributeNS(fg,t.slice(6,t.length)):e.setAttributeNS(fg,t,r);else{const i=TE(t);r==null||i&&!Ty(r)?e.removeAttribute(t):e.setAttribute(t,i?"":r)}}function vA(e,t,r,n,o,i,s){if(t==="innerHTML"||t==="textContent"){n&&s(n,o,i),e[t]=r??"";return}const a=e.tagName;if(t==="value"&&a!=="PROGRESS"&&!a.includes("-")){const u=a==="OPTION"?e.getAttribute("value")||"":e.value,c=r??"";(u!==c||!("_value"in e))&&(e.value=c),r==null&&e.removeAttribute(t),e._value=r;return}let l=!1;if(r===""||r==null){const u=typeof e[t];u==="boolean"?r=Ty(r):r==null&&u==="string"?(r="",l=!0):u==="number"&&(r=0,l=!0)}try{e[t]=r}catch{}l&&e.removeAttribute(t)}function si(e,t,r,n){e.addEventListener(t,r,n)}function EA(e,t,r,n){e.removeEventListener(t,r,n)}const hg=Symbol("_vei");function SA(e,t,r,n,o=null){const i=e[hg]||(e[hg]={}),s=i[t];if(n&&s)s.value=n;else{const[a,l]=AA(t);if(n){const u=i[t]=IA(n,o);si(e,a,u,l)}else s&&(EA(e,a,s,l),i[t]=void 0)}}const dg=/(?:Once|Passive|Capture)$/;function AA(e){let t;if(dg.test(e)){t={};let n;for(;n=e.match(dg);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Bo(e.slice(2)),t]}let Du=0;const TA=Promise.resolve(),xA=()=>Du||(TA.then(()=>Du=0),Du=Date.now());function IA(e,t){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;mr(CA(n,r.value),t,5,[n])};return r.value=e,r.attached=xA(),r}function CA(e,t){if(Be(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(n=>o=>!o._stopped&&n&&n(o))}else return t}const pg=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,RA=(e,t,r,n,o,i,s,a,l)=>{const u=o==="svg";t==="class"?gA(e,n,u):t==="style"?_A(e,r,n):Nl(t)?ad(t)||SA(e,t,r,n,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):OA(e,t,n,u))?vA(e,t,n,i,s,a,l):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),wA(e,t,n,u))};function OA(e,t,r,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&pg(t)&&De(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return pg(t)&&ct(r)?!1:t in e}const ol=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Be(t)?r=>Ta(t,r):t};function kA(e){e.target.composing=!0}function gg(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const po=Symbol("_assign"),zF={created(e,{modifiers:{lazy:t,trim:r,number:n}},o){e[po]=ol(o);const i=n||o.props&&o.props.type==="number";si(e,t?"change":"input",s=>{if(s.target.composing)return;let a=e.value;r&&(a=a.trim()),i&&(a=Wc(a)),e[po](a)}),r&&si(e,"change",()=>{e.value=e.value.trim()}),t||(si(e,"compositionstart",kA),si(e,"compositionend",gg),si(e,"change",gg))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:r,trim:n,number:o}},i){if(e[po]=ol(i),e.composing)return;const s=o||e.type==="number"?Wc(e.value):e.value,a=t??"";s!==a&&(document.activeElement===e&&e.type!=="range"&&(r||n&&e.value.trim()===a)||(e.value=a))}},GF={deep:!0,created(e,t,r){e[po]=ol(r),si(e,"change",()=>{const n=e._modelValue,o=NA(e),i=e.checked,s=e[po];if(Be(n)){const a=xy(n,o),l=a!==-1;if(i&&!l)s(n.concat(o));else if(!i&&l){const u=[...n];u.splice(a,1),s(u)}}else if(Ml(n)){const a=new Set(n);i?a.add(o):a.delete(o),s(a)}else s(b_(e,i))})},mounted:mg,beforeUpdate(e,t,r){e[po]=ol(r),mg(e,t,r)}};function mg(e,{value:t,oldValue:r},n){e._modelValue=t,Be(t)?e.checked=xy(t,n.props.value)>-1:Ml(t)?e.checked=t.has(n.props.value):t!==r&&(e.checked=Ll(t,b_(e,!0)))}function NA(e){return"_value"in e?e._value:e.value}function b_(e,t){const r=t?"_trueValue":"_falseValue";return r in e?e[r]:t}const MA=yt({patchProp:RA},dA);let yg;function PA(){return yg||(yg=qS(MA))}const QF=(...e)=>{const t=PA().createApp(...e),{mount:r}=t;return t.mount=n=>{const o=BA(n);if(!o)return;const i=t._component;!De(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.innerHTML="";const s=r(o,!1,LA(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),s},t};function LA(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function BA(e){return ct(e)?document.querySelector(e):e}var Ot="top",qt="bottom",Kt="right",kt="left",ql="auto",Do=[Ot,qt,Kt,kt],Ti="start",So="end",w_="clippingParents",xd="viewport",Ji="popper",v_="reference",ef=Do.reduce(function(e,t){return e.concat([t+"-"+Ti,t+"-"+So])},[]),Id=[].concat(Do,[ql]).reduce(function(e,t){return e.concat([t,t+"-"+Ti,t+"-"+So])},[]),E_="beforeRead",S_="read",A_="afterRead",T_="beforeMain",x_="main",I_="afterMain",C_="beforeWrite",R_="write",O_="afterWrite",k_=[E_,S_,A_,T_,x_,I_,C_,R_,O_];function Lr(e){return e?(e.nodeName||"").toLowerCase():null}function Yt(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function xi(e){var t=Yt(e).Element;return e instanceof t||e instanceof Element}function tr(e){var t=Yt(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Cd(e){if(typeof ShadowRoot>"u")return!1;var t=Yt(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function DA(e){var t=e.state;Object.keys(t.elements).forEach(function(r){var n=t.styles[r]||{},o=t.attributes[r]||{},i=t.elements[r];!tr(i)||!Lr(i)||(Object.assign(i.style,n),Object.keys(o).forEach(function(s){var a=o[s];a===!1?i.removeAttribute(s):i.setAttribute(s,a===!0?"":a)}))})}function $A(e){var t=e.state,r={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.styles=r,t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach(function(n){var o=t.elements[n],i=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:r[n]),a=s.reduce(function(l,u){return l[u]="",l},{});!tr(o)||!Lr(o)||(Object.assign(o.style,a),Object.keys(i).forEach(function(l){o.removeAttribute(l)}))})}}const Rd={name:"applyStyles",enabled:!0,phase:"write",fn:DA,effect:$A,requires:["computeStyles"]};function kr(e){return e.split("-")[0]}var _i=Math.max,sl=Math.min,Ao=Math.round;function tf(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function N_(){return!/^((?!chrome|android).)*safari/i.test(tf())}function To(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!1);var n=e.getBoundingClientRect(),o=1,i=1;t&&tr(e)&&(o=e.offsetWidth>0&&Ao(n.width)/e.offsetWidth||1,i=e.offsetHeight>0&&Ao(n.height)/e.offsetHeight||1);var s=xi(e)?Yt(e):window,a=s.visualViewport,l=!N_()&&r,u=(n.left+(l&&a?a.offsetLeft:0))/o,c=(n.top+(l&&a?a.offsetTop:0))/i,d=n.width/o,p=n.height/i;return{width:d,height:p,top:c,right:u+d,bottom:c+p,left:u,x:u,y:c}}function Od(e){var t=To(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function M_(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Cd(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function rn(e){return Yt(e).getComputedStyle(e)}function UA(e){return["table","td","th"].indexOf(Lr(e))>=0}function Un(e){return((xi(e)?e.ownerDocument:e.document)||window.document).documentElement}function Kl(e){return Lr(e)==="html"?e:e.assignedSlot||e.parentNode||(Cd(e)?e.host:null)||Un(e)}function _g(e){return!tr(e)||rn(e).position==="fixed"?null:e.offsetParent}function FA(e){var t=/firefox/i.test(tf()),r=/Trident/i.test(tf());if(r&&tr(e)){var n=rn(e);if(n.position==="fixed")return null}var o=Kl(e);for(Cd(o)&&(o=o.host);tr(o)&&["html","body"].indexOf(Lr(o))<0;){var i=rn(o);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||t&&i.willChange==="filter"||t&&i.filter&&i.filter!=="none")return o;o=o.parentNode}return null}function $s(e){for(var t=Yt(e),r=_g(e);r&&UA(r)&&rn(r).position==="static";)r=_g(r);return r&&(Lr(r)==="html"||Lr(r)==="body"&&rn(r).position==="static")?t:r||FA(e)||t}function kd(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function vs(e,t,r){return _i(e,sl(t,r))}function jA(e,t,r){var n=vs(e,t,r);return n>r?r:n}function P_(){return{top:0,right:0,bottom:0,left:0}}function L_(e){return Object.assign({},P_(),e)}function B_(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}var WA=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,L_(typeof t!="number"?t:B_(t,Do))};function HA(e){var t,r=e.state,n=e.name,o=e.options,i=r.elements.arrow,s=r.modifiersData.popperOffsets,a=kr(r.placement),l=kd(a),u=[kt,Kt].indexOf(a)>=0,c=u?"height":"width";if(!(!i||!s)){var d=WA(o.padding,r),p=Od(i),m=l==="y"?Ot:kt,_=l==="y"?qt:Kt,b=r.rects.reference[c]+r.rects.reference[l]-s[l]-r.rects.popper[c],T=s[l]-r.rects.reference[l],N=$s(i),R=N?l==="y"?N.clientHeight||0:N.clientWidth||0:0,S=b/2-T/2,D=d[m],U=R-p[c]-d[_],x=R/2-p[c]/2+S,L=vs(D,x,U),j=l;r.modifiersData[n]=(t={},t[j]=L,t.centerOffset=L-x,t)}}function VA(e){var t=e.state,r=e.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||M_(t.elements.popper,o)&&(t.elements.arrow=o))}const D_={name:"arrow",enabled:!0,phase:"main",fn:HA,effect:VA,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function xo(e){return e.split("-")[1]}var qA={top:"auto",right:"auto",bottom:"auto",left:"auto"};function KA(e,t){var r=e.x,n=e.y,o=t.devicePixelRatio||1;return{x:Ao(r*o)/o||0,y:Ao(n*o)/o||0}}function bg(e){var t,r=e.popper,n=e.popperRect,o=e.placement,i=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,d=e.isFixed,p=s.x,m=p===void 0?0:p,_=s.y,b=_===void 0?0:_,T=typeof c=="function"?c({x:m,y:b}):{x:m,y:b};m=T.x,b=T.y;var N=s.hasOwnProperty("x"),R=s.hasOwnProperty("y"),S=kt,D=Ot,U=window;if(u){var x=$s(r),L="clientHeight",j="clientWidth";if(x===Yt(r)&&(x=Un(r),rn(x).position!=="static"&&a==="absolute"&&(L="scrollHeight",j="scrollWidth")),x=x,o===Ot||(o===kt||o===Kt)&&i===So){D=qt;var Y=d&&x===U&&U.visualViewport?U.visualViewport.height:x[L];b-=Y-n.height,b*=l?1:-1}if(o===kt||(o===Ot||o===qt)&&i===So){S=Kt;var se=d&&x===U&&U.visualViewport?U.visualViewport.width:x[j];m-=se-n.width,m*=l?1:-1}}var re=Object.assign({position:a},u&&qA),P=c===!0?KA({x:m,y:b},Yt(r)):{x:m,y:b};if(m=P.x,b=P.y,l){var B;return Object.assign({},re,(B={},B[D]=R?"0":"",B[S]=N?"0":"",B.transform=(U.devicePixelRatio||1)<=1?"translate("+m+"px, "+b+"px)":"translate3d("+m+"px, "+b+"px, 0)",B))}return Object.assign({},re,(t={},t[D]=R?b+"px":"",t[S]=N?m+"px":"",t.transform="",t))}function YA(e){var t=e.state,r=e.options,n=r.gpuAcceleration,o=n===void 0?!0:n,i=r.adaptive,s=i===void 0?!0:i,a=r.roundOffsets,l=a===void 0?!0:a,u={placement:kr(t.placement),variation:xo(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,bg(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,bg(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const Nd={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:YA,data:{}};var na={passive:!0};function zA(e){var t=e.state,r=e.instance,n=e.options,o=n.scroll,i=o===void 0?!0:o,s=n.resize,a=s===void 0?!0:s,l=Yt(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&u.forEach(function(c){c.addEventListener("scroll",r.update,na)}),a&&l.addEventListener("resize",r.update,na),function(){i&&u.forEach(function(c){c.removeEventListener("scroll",r.update,na)}),a&&l.removeEventListener("resize",r.update,na)}}const Md={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:zA,data:{}};var GA={left:"right",right:"left",bottom:"top",top:"bottom"};function ka(e){return e.replace(/left|right|bottom|top/g,function(t){return GA[t]})}var QA={start:"end",end:"start"};function wg(e){return e.replace(/start|end/g,function(t){return QA[t]})}function Pd(e){var t=Yt(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Ld(e){return To(Un(e)).left+Pd(e).scrollLeft}function XA(e,t){var r=Yt(e),n=Un(e),o=r.visualViewport,i=n.clientWidth,s=n.clientHeight,a=0,l=0;if(o){i=o.width,s=o.height;var u=N_();(u||!u&&t==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}return{width:i,height:s,x:a+Ld(e),y:l}}function JA(e){var t,r=Un(e),n=Pd(e),o=(t=e.ownerDocument)==null?void 0:t.body,i=_i(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=_i(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+Ld(e),l=-n.scrollTop;return rn(o||r).direction==="rtl"&&(a+=_i(r.clientWidth,o?o.clientWidth:0)-i),{width:i,height:s,x:a,y:l}}function Bd(e){var t=rn(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function $_(e){return["html","body","#document"].indexOf(Lr(e))>=0?e.ownerDocument.body:tr(e)&&Bd(e)?e:$_(Kl(e))}function Es(e,t){var r;t===void 0&&(t=[]);var n=$_(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),i=Yt(n),s=o?[i].concat(i.visualViewport||[],Bd(n)?n:[]):n,a=t.concat(s);return o?a:a.concat(Es(Kl(s)))}function rf(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ZA(e,t){var r=To(e,!1,t==="fixed");return r.top=r.top+e.clientTop,r.left=r.left+e.clientLeft,r.bottom=r.top+e.clientHeight,r.right=r.left+e.clientWidth,r.width=e.clientWidth,r.height=e.clientHeight,r.x=r.left,r.y=r.top,r}function vg(e,t,r){return t===xd?rf(XA(e,r)):xi(t)?ZA(t,r):rf(JA(Un(e)))}function eT(e){var t=Es(Kl(e)),r=["absolute","fixed"].indexOf(rn(e).position)>=0,n=r&&tr(e)?$s(e):e;return xi(n)?t.filter(function(o){return xi(o)&&M_(o,n)&&Lr(o)!=="body"}):[]}function tT(e,t,r,n){var o=t==="clippingParents"?eT(e):[].concat(t),i=[].concat(o,[r]),s=i[0],a=i.reduce(function(l,u){var c=vg(e,u,n);return l.top=_i(c.top,l.top),l.right=sl(c.right,l.right),l.bottom=sl(c.bottom,l.bottom),l.left=_i(c.left,l.left),l},vg(e,s,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function U_(e){var t=e.reference,r=e.element,n=e.placement,o=n?kr(n):null,i=n?xo(n):null,s=t.x+t.width/2-r.width/2,a=t.y+t.height/2-r.height/2,l;switch(o){case Ot:l={x:s,y:t.y-r.height};break;case qt:l={x:s,y:t.y+t.height};break;case Kt:l={x:t.x+t.width,y:a};break;case kt:l={x:t.x-r.width,y:a};break;default:l={x:t.x,y:t.y}}var u=o?kd(o):null;if(u!=null){var c=u==="y"?"height":"width";switch(i){case Ti:l[u]=l[u]-(t[c]/2-r[c]/2);break;case So:l[u]=l[u]+(t[c]/2-r[c]/2);break}}return l}function Io(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,i=r.strategy,s=i===void 0?e.strategy:i,a=r.boundary,l=a===void 0?w_:a,u=r.rootBoundary,c=u===void 0?xd:u,d=r.elementContext,p=d===void 0?Ji:d,m=r.altBoundary,_=m===void 0?!1:m,b=r.padding,T=b===void 0?0:b,N=L_(typeof T!="number"?T:B_(T,Do)),R=p===Ji?v_:Ji,S=e.rects.popper,D=e.elements[_?R:p],U=tT(xi(D)?D:D.contextElement||Un(e.elements.popper),l,c,s),x=To(e.elements.reference),L=U_({reference:x,element:S,strategy:"absolute",placement:o}),j=rf(Object.assign({},S,L)),Y=p===Ji?j:x,se={top:U.top-Y.top+N.top,bottom:Y.bottom-U.bottom+N.bottom,left:U.left-Y.left+N.left,right:Y.right-U.right+N.right},re=e.modifiersData.offset;if(p===Ji&&re){var P=re[o];Object.keys(se).forEach(function(B){var oe=[Kt,qt].indexOf(B)>=0?1:-1,ne=[Ot,qt].indexOf(B)>=0?"y":"x";se[B]+=P[ne]*oe})}return se}function rT(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,i=r.rootBoundary,s=r.padding,a=r.flipVariations,l=r.allowedAutoPlacements,u=l===void 0?Id:l,c=xo(n),d=c?a?ef:ef.filter(function(_){return xo(_)===c}):Do,p=d.filter(function(_){return u.indexOf(_)>=0});p.length===0&&(p=d);var m=p.reduce(function(_,b){return _[b]=Io(e,{placement:b,boundary:o,rootBoundary:i,padding:s})[kr(b)],_},{});return Object.keys(m).sort(function(_,b){return m[_]-m[b]})}function nT(e){if(kr(e)===ql)return[];var t=ka(e);return[wg(e),t,wg(t)]}function iT(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,i=o===void 0?!0:o,s=r.altAxis,a=s===void 0?!0:s,l=r.fallbackPlacements,u=r.padding,c=r.boundary,d=r.rootBoundary,p=r.altBoundary,m=r.flipVariations,_=m===void 0?!0:m,b=r.allowedAutoPlacements,T=t.options.placement,N=kr(T),R=N===T,S=l||(R||!_?[ka(T)]:nT(T)),D=[T].concat(S).reduce(function(me,ve){return me.concat(kr(ve)===ql?rT(t,{placement:ve,boundary:c,rootBoundary:d,padding:u,flipVariations:_,allowedAutoPlacements:b}):ve)},[]),U=t.rects.reference,x=t.rects.popper,L=new Map,j=!0,Y=D[0],se=0;se<D.length;se++){var re=D[se],P=kr(re),B=xo(re)===Ti,oe=[Ot,qt].indexOf(P)>=0,ne=oe?"width":"height",ue=Io(t,{placement:re,boundary:c,rootBoundary:d,altBoundary:p,padding:u}),ae=oe?B?Kt:kt:B?qt:Ot;U[ne]>x[ne]&&(ae=ka(ae));var z=ka(ae),pe=[];if(i&&pe.push(ue[P]<=0),a&&pe.push(ue[ae]<=0,ue[z]<=0),pe.every(function(me){return me})){Y=re,j=!1;break}L.set(re,pe)}if(j)for(var de=_?3:1,ge=function(ve){var ye=D.find(function(q){var F=L.get(q);if(F)return F.slice(0,ve).every(function(X){return X})});if(ye)return Y=ye,"break"},O=de;O>0;O--){var ie=ge(O);if(ie==="break")break}t.placement!==Y&&(t.modifiersData[n]._skip=!0,t.placement=Y,t.reset=!0)}}const F_={name:"flip",enabled:!0,phase:"main",fn:iT,requiresIfExists:["offset"],data:{_skip:!1}};function Eg(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Sg(e){return[Ot,Kt,qt,kt].some(function(t){return e[t]>=0})}function oT(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,s=Io(t,{elementContext:"reference"}),a=Io(t,{altBoundary:!0}),l=Eg(s,n),u=Eg(a,o,i),c=Sg(l),d=Sg(u);t.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}const j_={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:oT};function sT(e,t,r){var n=kr(e),o=[kt,Ot].indexOf(n)>=0?-1:1,i=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,s=i[0],a=i[1];return s=s||0,a=(a||0)*o,[kt,Kt].indexOf(n)>=0?{x:a,y:s}:{x:s,y:a}}function aT(e){var t=e.state,r=e.options,n=e.name,o=r.offset,i=o===void 0?[0,0]:o,s=Id.reduce(function(c,d){return c[d]=sT(d,t.rects,i),c},{}),a=s[t.placement],l=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=s}const W_={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:aT};function lT(e){var t=e.state,r=e.name;t.modifiersData[r]=U_({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const Dd={name:"popperOffsets",enabled:!0,phase:"read",fn:lT,data:{}};function uT(e){return e==="x"?"y":"x"}function cT(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,i=o===void 0?!0:o,s=r.altAxis,a=s===void 0?!1:s,l=r.boundary,u=r.rootBoundary,c=r.altBoundary,d=r.padding,p=r.tether,m=p===void 0?!0:p,_=r.tetherOffset,b=_===void 0?0:_,T=Io(t,{boundary:l,rootBoundary:u,padding:d,altBoundary:c}),N=kr(t.placement),R=xo(t.placement),S=!R,D=kd(N),U=uT(D),x=t.modifiersData.popperOffsets,L=t.rects.reference,j=t.rects.popper,Y=typeof b=="function"?b(Object.assign({},t.rects,{placement:t.placement})):b,se=typeof Y=="number"?{mainAxis:Y,altAxis:Y}:Object.assign({mainAxis:0,altAxis:0},Y),re=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,P={x:0,y:0};if(x){if(i){var B,oe=D==="y"?Ot:kt,ne=D==="y"?qt:Kt,ue=D==="y"?"height":"width",ae=x[D],z=ae+T[oe],pe=ae-T[ne],de=m?-j[ue]/2:0,ge=R===Ti?L[ue]:j[ue],O=R===Ti?-j[ue]:-L[ue],ie=t.elements.arrow,me=m&&ie?Od(ie):{width:0,height:0},ve=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:P_(),ye=ve[oe],q=ve[ne],F=vs(0,L[ue],me[ue]),X=S?L[ue]/2-de-F-ye-se.mainAxis:ge-F-ye-se.mainAxis,he=S?-L[ue]/2+de+F+q+se.mainAxis:O+F+q+se.mainAxis,ce=t.elements.arrow&&$s(t.elements.arrow),Z=ce?D==="y"?ce.clientTop||0:ce.clientLeft||0:0,v=(B=re==null?void 0:re[D])!=null?B:0,A=ae+X-v-Z,E=ae+he-v,k=vs(m?sl(z,A):z,ae,m?_i(pe,E):pe);x[D]=k,P[D]=k-ae}if(a){var M,ee=D==="x"?Ot:kt,te=D==="x"?qt:Kt,$=x[U],K=U==="y"?"height":"width",I=$+T[ee],W=$-T[te],J=[Ot,kt].indexOf(N)!==-1,le=(M=re==null?void 0:re[U])!=null?M:0,y=J?I:$-L[K]-j[K]-le+se.altAxis,h=J?$+L[K]+j[K]-le-se.altAxis:W,f=m&&J?jA(y,$,h):vs(m?y:I,$,m?h:W);x[U]=f,P[U]=f-$}t.modifiersData[n]=P}}const H_={name:"preventOverflow",enabled:!0,phase:"main",fn:cT,requiresIfExists:["offset"]};function fT(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function hT(e){return e===Yt(e)||!tr(e)?Pd(e):fT(e)}function dT(e){var t=e.getBoundingClientRect(),r=Ao(t.width)/e.offsetWidth||1,n=Ao(t.height)/e.offsetHeight||1;return r!==1||n!==1}function pT(e,t,r){r===void 0&&(r=!1);var n=tr(t),o=tr(t)&&dT(t),i=Un(t),s=To(e,o,r),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!r)&&((Lr(t)!=="body"||Bd(i))&&(a=hT(t)),tr(t)?(l=To(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):i&&(l.x=Ld(i))),{x:s.left+a.scrollLeft-l.x,y:s.top+a.scrollTop-l.y,width:s.width,height:s.height}}function gT(e){var t=new Map,r=new Set,n=[];e.forEach(function(i){t.set(i.name,i)});function o(i){r.add(i.name);var s=[].concat(i.requires||[],i.requiresIfExists||[]);s.forEach(function(a){if(!r.has(a)){var l=t.get(a);l&&o(l)}}),n.push(i)}return e.forEach(function(i){r.has(i.name)||o(i)}),n}function mT(e){var t=gT(e);return k_.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function yT(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function _T(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}var Ag={placement:"bottom",modifiers:[],strategy:"absolute"};function Tg(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function Yl(e){e===void 0&&(e={});var t=e,r=t.defaultModifiers,n=r===void 0?[]:r,o=t.defaultOptions,i=o===void 0?Ag:o;return function(a,l,u){u===void 0&&(u=i);var c={placement:"bottom",orderedModifiers:[],options:Object.assign({},Ag,i),modifiersData:{},elements:{reference:a,popper:l},attributes:{},styles:{}},d=[],p=!1,m={state:c,setOptions:function(N){var R=typeof N=="function"?N(c.options):N;b(),c.options=Object.assign({},i,c.options,R),c.scrollParents={reference:xi(a)?Es(a):a.contextElement?Es(a.contextElement):[],popper:Es(l)};var S=mT(_T([].concat(n,c.options.modifiers)));return c.orderedModifiers=S.filter(function(D){return D.enabled}),_(),m.update()},forceUpdate:function(){if(!p){var N=c.elements,R=N.reference,S=N.popper;if(Tg(R,S)){c.rects={reference:pT(R,$s(S),c.options.strategy==="fixed"),popper:Od(S)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(se){return c.modifiersData[se.name]=Object.assign({},se.data)});for(var D=0;D<c.orderedModifiers.length;D++){if(c.reset===!0){c.reset=!1,D=-1;continue}var U=c.orderedModifiers[D],x=U.fn,L=U.options,j=L===void 0?{}:L,Y=U.name;typeof x=="function"&&(c=x({state:c,options:j,name:Y,instance:m})||c)}}}},update:yT(function(){return new Promise(function(T){m.forceUpdate(),T(c)})}),destroy:function(){b(),p=!0}};if(!Tg(a,l))return m;m.setOptions(u).then(function(T){!p&&u.onFirstUpdate&&u.onFirstUpdate(T)});function _(){c.orderedModifiers.forEach(function(T){var N=T.name,R=T.options,S=R===void 0?{}:R,D=T.effect;if(typeof D=="function"){var U=D({state:c,name:N,instance:m,options:S}),x=function(){};d.push(U||x)}})}function b(){d.forEach(function(T){return T()}),d=[]}return m}}var bT=Yl(),wT=[Md,Dd,Nd,Rd],vT=Yl({defaultModifiers:wT}),ET=[Md,Dd,Nd,Rd,W_,F_,H_,D_,j_],$d=Yl({defaultModifiers:ET});const V_=Object.freeze(Object.defineProperty({__proto__:null,afterMain:I_,afterRead:A_,afterWrite:O_,applyStyles:Rd,arrow:D_,auto:ql,basePlacements:Do,beforeMain:T_,beforeRead:E_,beforeWrite:C_,bottom:qt,clippingParents:w_,computeStyles:Nd,createPopper:$d,createPopperBase:bT,createPopperLite:vT,detectOverflow:Io,end:So,eventListeners:Md,flip:F_,hide:j_,left:kt,main:x_,modifierPhases:k_,offset:W_,placements:Id,popper:Ji,popperGenerator:Yl,popperOffsets:Dd,preventOverflow:H_,read:S_,reference:v_,right:Kt,start:Ti,top:Ot,variationPlacements:ef,viewport:xd,write:R_},Symbol.toStringTag,{value:"Module"}));/*!
-  * Bootstrap v5.3.3 (https://getbootstrap.com/)
-  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
-  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-  */const wn=new Map,$u={set(e,t,r){wn.has(e)||wn.set(e,new Map);const n=wn.get(e);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,r)},get(e,t){return wn.has(e)&&wn.get(e).get(t)||null},remove(e,t){if(!wn.has(e))return;const r=wn.get(e);r.delete(t),r.size===0&&wn.delete(e)}},ST=1e6,AT=1e3,nf="transitionend",q_=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,r)=>`#${CSS.escape(r)}`)),e),TT=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),xT=e=>{do e+=Math.floor(Math.random()*ST);while(document.getElementById(e));return e},IT=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e);const n=Number.parseFloat(t),o=Number.parseFloat(r);return!n&&!o?0:(t=t.split(",")[0],r=r.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(r))*AT)},K_=e=>{e.dispatchEvent(new Event(nf))},en=e=>!e||typeof e!="object"?!1:(typeof e.jquery<"u"&&(e=e[0]),typeof e.nodeType<"u"),Bn=e=>en(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(q_(e)):null,$o=e=>{if(!en(e)||e.getClientRects().length===0)return!1;const t=getComputedStyle(e).getPropertyValue("visibility")==="visible",r=e.closest("details:not([open])");if(!r)return t;if(r!==e){const n=e.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return t},Dn=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled<"u"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",Y_=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?Y_(e.parentNode):null},al=()=>{},Us=e=>{e.offsetHeight},z_=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Uu=[],CT=e=>{document.readyState==="loading"?(Uu.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of Uu)t()}),Uu.push(e)):e()},rr=()=>document.documentElement.dir==="rtl",ir=e=>{CT(()=>{const t=z_();if(t){const r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}})},Bt=(e,t=[],r=e)=>typeof e=="function"?e(...t):r,G_=(e,t,r=!0)=>{if(!r){Bt(e);return}const o=IT(t)+5;let i=!1;const s=({target:a})=>{a===t&&(i=!0,t.removeEventListener(nf,s),Bt(e))};t.addEventListener(nf,s),setTimeout(()=>{i||K_(t)},o)},Ud=(e,t,r,n)=>{const o=e.length;let i=e.indexOf(t);return i===-1?!r&&n?e[o-1]:e[0]:(i+=r?1:-1,n&&(i=(i+o)%o),e[Math.max(0,Math.min(i,o-1))])},RT=/[^.]*(?=\..*)\.|.*/,OT=/\..*/,kT=/::\d+$/,Fu={};let xg=1;const Q_={mouseenter:"mouseover",mouseleave:"mouseout"},NT=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function X_(e,t){return t&&`${t}::${xg++}`||e.uidEvent||xg++}function J_(e){const t=X_(e);return e.uidEvent=t,Fu[t]=Fu[t]||{},Fu[t]}function MT(e,t){return function r(n){return Fd(n,{delegateTarget:e}),r.oneOff&&Se.off(e,n.type,t),t.apply(e,[n])}}function PT(e,t,r){return function n(o){const i=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of i)if(a===s)return Fd(o,{delegateTarget:s}),n.oneOff&&Se.off(e,o.type,t,r),r.apply(s,[o])}}function Z_(e,t,r=null){return Object.values(e).find(n=>n.callable===t&&n.delegationSelector===r)}function eb(e,t,r){const n=typeof t=="string",o=n?r:t||r;let i=tb(e);return NT.has(i)||(i=e),[n,o,i]}function Ig(e,t,r,n,o){if(typeof t!="string"||!e)return;let[i,s,a]=eb(t,r,n);t in Q_&&(s=(_=>function(b){if(!b.relatedTarget||b.relatedTarget!==b.delegateTarget&&!b.delegateTarget.contains(b.relatedTarget))return _.call(this,b)})(s));const l=J_(e),u=l[a]||(l[a]={}),c=Z_(u,s,i?r:null);if(c){c.oneOff=c.oneOff&&o;return}const d=X_(s,t.replace(RT,"")),p=i?PT(e,r,s):MT(e,s);p.delegationSelector=i?r:null,p.callable=s,p.oneOff=o,p.uidEvent=d,u[d]=p,e.addEventListener(a,p,i)}function of(e,t,r,n,o){const i=Z_(t[r],n,o);i&&(e.removeEventListener(r,i,!!o),delete t[r][i.uidEvent])}function LT(e,t,r,n){const o=t[r]||{};for(const[i,s]of Object.entries(o))i.includes(n)&&of(e,t,r,s.callable,s.delegationSelector)}function tb(e){return e=e.replace(OT,""),Q_[e]||e}const Se={on(e,t,r,n){Ig(e,t,r,n,!1)},one(e,t,r,n){Ig(e,t,r,n,!0)},off(e,t,r,n){if(typeof t!="string"||!e)return;const[o,i,s]=eb(t,r,n),a=s!==t,l=J_(e),u=l[s]||{},c=t.startsWith(".");if(typeof i<"u"){if(!Object.keys(u).length)return;of(e,l,s,i,o?r:null);return}if(c)for(const d of Object.keys(l))LT(e,l,d,t.slice(1));for(const[d,p]of Object.entries(u)){const m=d.replace(kT,"");(!a||t.includes(m))&&of(e,l,s,p.callable,p.delegationSelector)}},trigger(e,t,r){if(typeof t!="string"||!e)return null;const n=z_(),o=tb(t),i=t!==o;let s=null,a=!0,l=!0,u=!1;i&&n&&(s=n.Event(t,r),n(e).trigger(s),a=!s.isPropagationStopped(),l=!s.isImmediatePropagationStopped(),u=s.isDefaultPrevented());const c=Fd(new Event(t,{bubbles:a,cancelable:!0}),r);return u&&c.preventDefault(),l&&e.dispatchEvent(c),c.defaultPrevented&&s&&s.preventDefault(),c}};function Fd(e,t={}){for(const[r,n]of Object.entries(t))try{e[r]=n}catch{Object.defineProperty(e,r,{configurable:!0,get(){return n}})}return e}function Cg(e){if(e==="true")return!0;if(e==="false")return!1;if(e===Number(e).toString())return Number(e);if(e===""||e==="null")return null;if(typeof e!="string")return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function ju(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const tn={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${ju(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${ju(t)}`)},getDataAttributes(e){if(!e)return{};const t={},r=Object.keys(e.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(const n of r){let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1,o.length),t[o]=Cg(e.dataset[n])}return t},getDataAttribute(e,t){return Cg(e.getAttribute(`data-bs-${ju(t)}`))}};class Fs{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,r){const n=en(r)?tn.getDataAttribute(r,"config"):{};return{...this.constructor.Default,...typeof n=="object"?n:{},...en(r)?tn.getDataAttributes(r):{},...typeof t=="object"?t:{}}}_typeCheckConfig(t,r=this.constructor.DefaultType){for(const[n,o]of Object.entries(r)){const i=t[n],s=en(i)?"element":TT(i);if(!new RegExp(o).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${o}".`)}}}const BT="5.3.3";class _r extends Fs{constructor(t,r){super(),t=Bn(t),t&&(this._element=t,this._config=this._getConfig(r),$u.set(this._element,this.constructor.DATA_KEY,this))}dispose(){$u.remove(this._element,this.constructor.DATA_KEY),Se.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,r,n=!0){G_(t,r,n)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return $u.get(Bn(t),this.DATA_KEY)}static getOrCreateInstance(t,r={}){return this.getInstance(t)||new this(t,typeof r=="object"?r:null)}static get VERSION(){return BT}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const Wu=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&r!=="#"?r.trim():null}return t?t.split(",").map(r=>q_(r)).join(","):null},Pe={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(r=>r.matches(t))},parents(e,t){const r=[];let n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(r=>!Dn(r)&&$o(r))},getSelectorFromElement(e){const t=Wu(e);return t&&Pe.findOne(t)?t:null},getElementFromSelector(e){const t=Wu(e);return t?Pe.findOne(t):null},getMultipleElementsFromSelector(e){const t=Wu(e);return t?Pe.find(t):[]}},zl=(e,t="hide")=>{const r=`click.dismiss${e.EVENT_KEY}`,n=e.NAME;Se.on(document,r,`[data-bs-dismiss="${n}"]`,function(o){if(["A","AREA"].includes(this.tagName)&&o.preventDefault(),Dn(this))return;const i=Pe.getElementFromSelector(this)||this.closest(`.${n}`);e.getOrCreateInstance(i)[t]()})},DT="alert",$T="bs.alert",rb=`.${$T}`,UT=`close${rb}`,FT=`closed${rb}`,jT="fade",WT="show";class Gl extends _r{static get NAME(){return DT}close(){if(Se.trigger(this._element,UT).defaultPrevented)return;this._element.classList.remove(WT);const r=this._element.classList.contains(jT);this._queueCallback(()=>this._destroyElement(),this._element,r)}_destroyElement(){this._element.remove(),Se.trigger(this._element,FT),this.dispose()}static jQueryInterface(t){return this.each(function(){const r=Gl.getOrCreateInstance(this);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}zl(Gl,"close");ir(Gl);const HT="button",VT="bs.button",qT=`.${VT}`,KT=".data-api",YT="active",Rg='[data-bs-toggle="button"]',zT=`click${qT}${KT}`;class Ql extends _r{static get NAME(){return HT}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(YT))}static jQueryInterface(t){return this.each(function(){const r=Ql.getOrCreateInstance(this);t==="toggle"&&r[t]()})}}Se.on(document,zT,Rg,e=>{e.preventDefault();const t=e.target.closest(Rg);Ql.getOrCreateInstance(t).toggle()});ir(Ql);const GT="swipe",Uo=".bs.swipe",QT=`touchstart${Uo}`,XT=`touchmove${Uo}`,JT=`touchend${Uo}`,ZT=`pointerdown${Uo}`,ex=`pointerup${Uo}`,tx="touch",rx="pen",nx="pointer-event",ix=40,ox={endCallback:null,leftCallback:null,rightCallback:null},sx={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class ll extends Fs{constructor(t,r){super(),this._element=t,!(!t||!ll.isSupported())&&(this._config=this._getConfig(r),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return ox}static get DefaultType(){return sx}static get NAME(){return GT}dispose(){Se.off(this._element,Uo)}_start(t){if(!this._supportPointerEvents){this._deltaX=t.touches[0].clientX;return}this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX)}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Bt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=ix)return;const r=t/this._deltaX;this._deltaX=0,r&&Bt(r>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(Se.on(this._element,ZT,t=>this._start(t)),Se.on(this._element,ex,t=>this._end(t)),this._element.classList.add(nx)):(Se.on(this._element,QT,t=>this._start(t)),Se.on(this._element,XT,t=>this._move(t)),Se.on(this._element,JT,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&(t.pointerType===rx||t.pointerType===tx)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ax="carousel",lx="bs.carousel",Fn=`.${lx}`,nb=".data-api",ux="ArrowLeft",cx="ArrowRight",fx=500,Qo="next",Yi="prev",Zi="left",Na="right",hx=`slide${Fn}`,Hu=`slid${Fn}`,dx=`keydown${Fn}`,px=`mouseenter${Fn}`,gx=`mouseleave${Fn}`,mx=`dragstart${Fn}`,yx=`load${Fn}${nb}`,_x=`click${Fn}${nb}`,ib="carousel",ia="active",bx="slide",vx="carousel-item-end",Ex="carousel-item-start",Sx="carousel-item-next",Ax="carousel-item-prev",ob=".active",sb=".carousel-item",Tx=ob+sb,xx=".carousel-item img",Ix=".carousel-indicators",Cx="[data-bs-slide], [data-bs-slide-to]",Rx='[data-bs-ride="carousel"]',Ox={[ux]:Na,[cx]:Zi},kx={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Nx={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class js extends _r{constructor(t,r){super(t,r),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Pe.findOne(Ix,this._element),this._addEventListeners(),this._config.ride===ib&&this.cycle()}static get Default(){return kx}static get DefaultType(){return Nx}static get NAME(){return ax}next(){this._slide(Qo)}nextWhenVisible(){!document.hidden&&$o(this._element)&&this.next()}prev(){this._slide(Yi)}pause(){this._isSliding&&K_(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){Se.one(this._element,Hu,()=>this.cycle());return}this.cycle()}}to(t){const r=this._getItems();if(t>r.length-1||t<0)return;if(this._isSliding){Se.one(this._element,Hu,()=>this.to(t));return}const n=this._getItemIndex(this._getActive());if(n===t)return;const o=t>n?Qo:Yi;this._slide(o,r[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&Se.on(this._element,dx,t=>this._keydown(t)),this._config.pause==="hover"&&(Se.on(this._element,px,()=>this.pause()),Se.on(this._element,gx,()=>this._maybeEnableCycle())),this._config.touch&&ll.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const n of Pe.find(xx,this._element))Se.on(n,mx,o=>o.preventDefault());const r={leftCallback:()=>this._slide(this._directionToOrder(Zi)),rightCallback:()=>this._slide(this._directionToOrder(Na)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),fx+this._config.interval))}};this._swipeHelper=new ll(this._element,r)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const r=Ox[t.key];r&&(t.preventDefault(),this._slide(this._directionToOrder(r)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const r=Pe.findOne(ob,this._indicatorsElement);r.classList.remove(ia),r.removeAttribute("aria-current");const n=Pe.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);n&&(n.classList.add(ia),n.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const r=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=r||this._config.defaultInterval}_slide(t,r=null){if(this._isSliding)return;const n=this._getActive(),o=t===Qo,i=r||Ud(this._getItems(),n,o,this._config.wrap);if(i===n)return;const s=this._getItemIndex(i),a=m=>Se.trigger(this._element,m,{relatedTarget:i,direction:this._orderToDirection(t),from:this._getItemIndex(n),to:s});if(a(hx).defaultPrevented||!n||!i)return;const u=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(s),this._activeElement=i;const c=o?Ex:vx,d=o?Sx:Ax;i.classList.add(d),Us(i),n.classList.add(c),i.classList.add(c);const p=()=>{i.classList.remove(c,d),i.classList.add(ia),n.classList.remove(ia,d,c),this._isSliding=!1,a(Hu)};this._queueCallback(p,n,this._isAnimated()),u&&this.cycle()}_isAnimated(){return this._element.classList.contains(bx)}_getActive(){return Pe.findOne(Tx,this._element)}_getItems(){return Pe.find(sb,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return rr()?t===Zi?Yi:Qo:t===Zi?Qo:Yi}_orderToDirection(t){return rr()?t===Yi?Zi:Na:t===Yi?Na:Zi}static jQueryInterface(t){return this.each(function(){const r=js.getOrCreateInstance(this,t);if(typeof t=="number"){r.to(t);return}if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Se.on(document,_x,Cx,function(e){const t=Pe.getElementFromSelector(this);if(!t||!t.classList.contains(ib))return;e.preventDefault();const r=js.getOrCreateInstance(t),n=this.getAttribute("data-bs-slide-to");if(n){r.to(n),r._maybeEnableCycle();return}if(tn.getDataAttribute(this,"slide")==="next"){r.next(),r._maybeEnableCycle();return}r.prev(),r._maybeEnableCycle()});Se.on(window,yx,()=>{const e=Pe.find(Rx);for(const t of e)js.getOrCreateInstance(t)});ir(js);const Mx="collapse",Px="bs.collapse",Ws=`.${Px}`,Lx=".data-api",Bx=`show${Ws}`,Dx=`shown${Ws}`,$x=`hide${Ws}`,Ux=`hidden${Ws}`,Fx=`click${Ws}${Lx}`,Vu="show",io="collapse",oa="collapsing",jx="collapsed",Wx=`:scope .${io} .${io}`,Hx="collapse-horizontal",Vx="width",qx="height",Kx=".collapse.show, .collapse.collapsing",sf='[data-bs-toggle="collapse"]',Yx={parent:null,toggle:!0},zx={parent:"(null|element)",toggle:"boolean"};class Os extends _r{constructor(t,r){super(t,r),this._isTransitioning=!1,this._triggerArray=[];const n=Pe.find(sf);for(const o of n){const i=Pe.getSelectorFromElement(o),s=Pe.find(i).filter(a=>a===this._element);i!==null&&s.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Yx}static get DefaultType(){return zx}static get NAME(){return Mx}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(Kx).filter(a=>a!==this._element).map(a=>Os.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||Se.trigger(this._element,Bx).defaultPrevented)return;for(const a of t)a.hide();const n=this._getDimension();this._element.classList.remove(io),this._element.classList.add(oa),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const o=()=>{this._isTransitioning=!1,this._element.classList.remove(oa),this._element.classList.add(io,Vu),this._element.style[n]="",Se.trigger(this._element,Dx)},s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(o,this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown()||Se.trigger(this._element,$x).defaultPrevented)return;const r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,Us(this._element),this._element.classList.add(oa),this._element.classList.remove(io,Vu);for(const o of this._triggerArray){const i=Pe.getElementFromSelector(o);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([o],!1)}this._isTransitioning=!0;const n=()=>{this._isTransitioning=!1,this._element.classList.remove(oa),this._element.classList.add(io),Se.trigger(this._element,Ux)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Vu)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=Bn(t.parent),t}_getDimension(){return this._element.classList.contains(Hx)?Vx:qx}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(sf);for(const r of t){const n=Pe.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(t){const r=Pe.find(Wx,this._config.parent);return Pe.find(t,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(t,r){if(t.length)for(const n of t)n.classList.toggle(jx,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(t){const r={};return typeof t=="string"&&/show|hide/.test(t)&&(r.toggle=!1),this.each(function(){const n=Os.getOrCreateInstance(this,r);if(typeof t=="string"){if(typeof n[t]>"u")throw new TypeError(`No method named "${t}"`);n[t]()}})}}Se.on(document,Fx,sf,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();for(const t of Pe.getMultipleElementsFromSelector(this))Os.getOrCreateInstance(t,{toggle:!1}).toggle()});ir(Os);const Og="dropdown",Gx="bs.dropdown",Mi=`.${Gx}`,jd=".data-api",Qx="Escape",kg="Tab",Xx="ArrowUp",Ng="ArrowDown",Jx=2,Zx=`hide${Mi}`,eI=`hidden${Mi}`,tI=`show${Mi}`,rI=`shown${Mi}`,ab=`click${Mi}${jd}`,lb=`keydown${Mi}${jd}`,nI=`keyup${Mi}${jd}`,eo="show",iI="dropup",oI="dropend",sI="dropstart",aI="dropup-center",lI="dropdown-center",ui='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',uI=`${ui}.${eo}`,Ma=".dropdown-menu",cI=".navbar",fI=".navbar-nav",hI=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",dI=rr()?"top-end":"top-start",pI=rr()?"top-start":"top-end",gI=rr()?"bottom-end":"bottom-start",mI=rr()?"bottom-start":"bottom-end",yI=rr()?"left-start":"right-start",_I=rr()?"right-start":"left-start",bI="top",wI="bottom",vI={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},EI={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Nr extends _r{constructor(t,r){super(t,r),this._popper=null,this._parent=this._element.parentNode,this._menu=Pe.next(this._element,Ma)[0]||Pe.prev(this._element,Ma)[0]||Pe.findOne(Ma,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return vI}static get DefaultType(){return EI}static get NAME(){return Og}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Dn(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!Se.trigger(this._element,tI,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(fI))for(const n of[].concat(...document.body.children))Se.on(n,"mouseover",al);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(eo),this._element.classList.add(eo),Se.trigger(this._element,rI,t)}}hide(){if(Dn(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!Se.trigger(this._element,Zx,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))Se.off(n,"mouseover",al);this._popper&&this._popper.destroy(),this._menu.classList.remove(eo),this._element.classList.remove(eo),this._element.setAttribute("aria-expanded","false"),tn.removeDataAttribute(this._menu,"popper"),Se.trigger(this._element,eI,t)}}_getConfig(t){if(t=super._getConfig(t),typeof t.reference=="object"&&!en(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${Og.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(typeof V_>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;this._config.reference==="parent"?t=this._parent:en(this._config.reference)?t=Bn(this._config.reference):typeof this._config.reference=="object"&&(t=this._config.reference);const r=this._getPopperConfig();this._popper=$d(t,this._menu,r)}_isShown(){return this._menu.classList.contains(eo)}_getPlacement(){const t=this._parent;if(t.classList.contains(oI))return yI;if(t.classList.contains(sI))return _I;if(t.classList.contains(aI))return bI;if(t.classList.contains(lI))return wI;const r=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(iI)?r?pI:dI:r?mI:gI}_detectNavbar(){return this._element.closest(cI)!==null}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(tn.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Bt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:r}){const n=Pe.find(hI,this._menu).filter(o=>$o(o));n.length&&Ud(n,r,t===Ng,!n.includes(r)).focus()}static jQueryInterface(t){return this.each(function(){const r=Nr.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}static clearMenus(t){if(t.button===Jx||t.type==="keyup"&&t.key!==kg)return;const r=Pe.find(uI);for(const n of r){const o=Nr.getInstance(n);if(!o||o._config.autoClose===!1)continue;const i=t.composedPath(),s=i.includes(o._menu);if(i.includes(o._element)||o._config.autoClose==="inside"&&!s||o._config.autoClose==="outside"&&s||o._menu.contains(t.target)&&(t.type==="keyup"&&t.key===kg||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const a={relatedTarget:o._element};t.type==="click"&&(a.clickEvent=t),o._completeHide(a)}}static dataApiKeydownHandler(t){const r=/input|textarea/i.test(t.target.tagName),n=t.key===Qx,o=[Xx,Ng].includes(t.key);if(!o&&!n||r&&!n)return;t.preventDefault();const i=this.matches(ui)?this:Pe.prev(this,ui)[0]||Pe.next(this,ui)[0]||Pe.findOne(ui,t.delegateTarget.parentNode),s=Nr.getOrCreateInstance(i);if(o){t.stopPropagation(),s.show(),s._selectMenuItem(t);return}s._isShown()&&(t.stopPropagation(),s.hide(),i.focus())}}Se.on(document,lb,ui,Nr.dataApiKeydownHandler);Se.on(document,lb,Ma,Nr.dataApiKeydownHandler);Se.on(document,ab,Nr.clearMenus);Se.on(document,nI,Nr.clearMenus);Se.on(document,ab,ui,function(e){e.preventDefault(),Nr.getOrCreateInstance(this).toggle()});ir(Nr);const ub="backdrop",SI="fade",Mg="show",Pg=`mousedown.bs.${ub}`,AI={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},TI={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class cb extends Fs{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return AI}static get DefaultType(){return TI}static get NAME(){return ub}show(t){if(!this._config.isVisible){Bt(t);return}this._append();const r=this._getElement();this._config.isAnimated&&Us(r),r.classList.add(Mg),this._emulateAnimation(()=>{Bt(t)})}hide(t){if(!this._config.isVisible){Bt(t);return}this._getElement().classList.remove(Mg),this._emulateAnimation(()=>{this.dispose(),Bt(t)})}dispose(){this._isAppended&&(Se.off(this._element,Pg),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(SI),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Bn(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),Se.on(t,Pg,()=>{Bt(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(t){G_(t,this._getElement(),this._config.isAnimated)}}const xI="focustrap",II="bs.focustrap",ul=`.${II}`,CI=`focusin${ul}`,RI=`keydown.tab${ul}`,OI="Tab",kI="forward",Lg="backward",NI={autofocus:!0,trapElement:null},MI={autofocus:"boolean",trapElement:"element"};class fb extends Fs{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return NI}static get DefaultType(){return MI}static get NAME(){return xI}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),Se.off(document,ul),Se.on(document,CI,t=>this._handleFocusin(t)),Se.on(document,RI,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,Se.off(document,ul))}_handleFocusin(t){const{trapElement:r}=this._config;if(t.target===document||t.target===r||r.contains(t.target))return;const n=Pe.focusableChildren(r);n.length===0?r.focus():this._lastTabNavDirection===Lg?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){t.key===OI&&(this._lastTabNavDirection=t.shiftKey?Lg:kI)}}const Bg=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Dg=".sticky-top",sa="padding-right",$g="margin-right";class af{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,sa,r=>r+t),this._setElementAttributes(Bg,sa,r=>r+t),this._setElementAttributes(Dg,$g,r=>r-t)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,sa),this._resetElementAttributes(Bg,sa),this._resetElementAttributes(Dg,$g)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,r,n){const o=this.getWidth(),i=s=>{if(s!==this._element&&window.innerWidth>s.clientWidth+o)return;this._saveInitialAttribute(s,r);const a=window.getComputedStyle(s).getPropertyValue(r);s.style.setProperty(r,`${n(Number.parseFloat(a))}px`)};this._applyManipulationCallback(t,i)}_saveInitialAttribute(t,r){const n=t.style.getPropertyValue(r);n&&tn.setDataAttribute(t,r,n)}_resetElementAttributes(t,r){const n=o=>{const i=tn.getDataAttribute(o,r);if(i===null){o.style.removeProperty(r);return}tn.removeDataAttribute(o,r),o.style.setProperty(r,i)};this._applyManipulationCallback(t,n)}_applyManipulationCallback(t,r){if(en(t)){r(t);return}for(const n of Pe.find(t,this._element))r(n)}}const PI="modal",LI="bs.modal",nr=`.${LI}`,BI=".data-api",DI="Escape",$I=`hide${nr}`,UI=`hidePrevented${nr}`,hb=`hidden${nr}`,db=`show${nr}`,FI=`shown${nr}`,jI=`resize${nr}`,WI=`click.dismiss${nr}`,HI=`mousedown.dismiss${nr}`,VI=`keydown.dismiss${nr}`,qI=`click${nr}${BI}`,Ug="modal-open",KI="fade",Fg="show",qu="modal-static",YI=".modal.show",zI=".modal-dialog",GI=".modal-body",QI='[data-bs-toggle="modal"]',XI={backdrop:!0,focus:!0,keyboard:!0},JI={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Co extends _r{constructor(t,r){super(t,r),this._dialog=Pe.findOne(zI,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new af,this._addEventListeners()}static get Default(){return XI}static get DefaultType(){return JI}static get NAME(){return PI}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||Se.trigger(this._element,db,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ug),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){!this._isShown||this._isTransitioning||Se.trigger(this._element,$I).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Fg),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){Se.off(window,nr),Se.off(this._dialog,nr),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new cb({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new fb({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const r=Pe.findOne(GI,this._dialog);r&&(r.scrollTop=0),Us(this._element),this._element.classList.add(Fg);const n=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,Se.trigger(this._element,FI,{relatedTarget:t})};this._queueCallback(n,this._dialog,this._isAnimated())}_addEventListeners(){Se.on(this._element,VI,t=>{if(t.key===DI){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),Se.on(window,jI,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),Se.on(this._element,HI,t=>{Se.one(this._element,WI,r=>{if(!(this._element!==t.target||this._element!==r.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Ug),this._resetAdjustments(),this._scrollBar.reset(),Se.trigger(this._element,hb)})}_isAnimated(){return this._element.classList.contains(KI)}_triggerBackdropTransition(){if(Se.trigger(this._element,UI).defaultPrevented)return;const r=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;n==="hidden"||this._element.classList.contains(qu)||(r||(this._element.style.overflowY="hidden"),this._element.classList.add(qu),this._queueCallback(()=>{this._element.classList.remove(qu),this._queueCallback(()=>{this._element.style.overflowY=n},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,r=this._scrollBar.getWidth(),n=r>0;if(n&&!t){const o=rr()?"paddingLeft":"paddingRight";this._element.style[o]=`${r}px`}if(!n&&t){const o=rr()?"paddingRight":"paddingLeft";this._element.style[o]=`${r}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,r){return this.each(function(){const n=Co.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]>"u")throw new TypeError(`No method named "${t}"`);n[t](r)}})}}Se.on(document,qI,QI,function(e){const t=Pe.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),Se.one(t,db,o=>{o.defaultPrevented||Se.one(t,hb,()=>{$o(this)&&this.focus()})});const r=Pe.findOne(YI);r&&Co.getInstance(r).hide(),Co.getOrCreateInstance(t).toggle(this)});zl(Co);ir(Co);const ZI="offcanvas",eC="bs.offcanvas",dn=`.${eC}`,pb=".data-api",tC=`load${dn}${pb}`,rC="Escape",jg="show",Wg="showing",Hg="hiding",nC="offcanvas-backdrop",gb=".offcanvas.show",iC=`show${dn}`,oC=`shown${dn}`,sC=`hide${dn}`,Vg=`hidePrevented${dn}`,mb=`hidden${dn}`,aC=`resize${dn}`,lC=`click${dn}${pb}`,uC=`keydown.dismiss${dn}`,cC='[data-bs-toggle="offcanvas"]',fC={backdrop:!0,keyboard:!0,scroll:!1},hC={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class $n extends _r{constructor(t,r){super(t,r),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return fC}static get DefaultType(){return hC}static get NAME(){return ZI}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||Se.trigger(this._element,iC,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new af().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Wg);const n=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(jg),this._element.classList.remove(Wg),Se.trigger(this._element,oC,{relatedTarget:t})};this._queueCallback(n,this._element,!0)}hide(){if(!this._isShown||Se.trigger(this._element,sC).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Hg),this._backdrop.hide();const r=()=>{this._element.classList.remove(jg,Hg),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new af().reset(),Se.trigger(this._element,mb)};this._queueCallback(r,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=()=>{if(this._config.backdrop==="static"){Se.trigger(this._element,Vg);return}this.hide()},r=!!this._config.backdrop;return new cb({className:nC,isVisible:r,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:r?t:null})}_initializeFocusTrap(){return new fb({trapElement:this._element})}_addEventListeners(){Se.on(this._element,uC,t=>{if(t.key===rC){if(this._config.keyboard){this.hide();return}Se.trigger(this._element,Vg)}})}static jQueryInterface(t){return this.each(function(){const r=$n.getOrCreateInstance(this,t);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}Se.on(document,lC,cC,function(e){const t=Pe.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),Dn(this))return;Se.one(t,mb,()=>{$o(this)&&this.focus()});const r=Pe.findOne(gb);r&&r!==t&&$n.getInstance(r).hide(),$n.getOrCreateInstance(t).toggle(this)});Se.on(window,tC,()=>{for(const e of Pe.find(gb))$n.getOrCreateInstance(e).show()});Se.on(window,aC,()=>{for(const e of Pe.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(e).position!=="fixed"&&$n.getOrCreateInstance(e).hide()});zl($n);ir($n);const dC=/^aria-[\w-]*$/i,yb={"*":["class","dir","id","lang","role",dC],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},pC=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),gC=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,mC=(e,t)=>{const r=e.nodeName.toLowerCase();return t.includes(r)?pC.has(r)?!!gC.test(e.nodeValue):!0:t.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function yC(e,t,r){if(!e.length)return e;if(r&&typeof r=="function")return r(e);const o=new window.DOMParser().parseFromString(e,"text/html"),i=[].concat(...o.body.querySelectorAll("*"));for(const s of i){const a=s.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){s.remove();continue}const l=[].concat(...s.attributes),u=[].concat(t["*"]||[],t[a]||[]);for(const c of l)mC(c,u)||s.removeAttribute(c.nodeName)}return o.body.innerHTML}const _C="TemplateFactory",bC={allowList:yb,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},wC={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},vC={entry:"(string|element|function|null)",selector:"(string|element)"};class EC extends Fs{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return bC}static get DefaultType(){return wC}static get NAME(){return _C}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[o,i]of Object.entries(this._config.content))this._setContent(t,i,o);const r=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[r,n]of Object.entries(t))super._typeCheckConfig({selector:r,entry:n},vC)}_setContent(t,r,n){const o=Pe.findOne(n,t);if(o){if(r=this._resolvePossibleFunction(r),!r){o.remove();return}if(en(r)){this._putElementInTemplate(Bn(r),o);return}if(this._config.html){o.innerHTML=this._maybeSanitize(r);return}o.textContent=r}}_maybeSanitize(t){return this._config.sanitize?yC(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Bt(t,[this])}_putElementInTemplate(t,r){if(this._config.html){r.innerHTML="",r.append(t);return}r.textContent=t.textContent}}const SC="tooltip",AC=new Set(["sanitize","allowList","sanitizeFn"]),Ku="fade",TC="modal",aa="show",xC=".tooltip-inner",qg=`.${TC}`,Kg="hide.bs.modal",Xo="hover",Yu="focus",IC="click",CC="manual",RC="hide",OC="hidden",kC="show",NC="shown",MC="inserted",PC="click",LC="focusin",BC="focusout",DC="mouseenter",$C="mouseleave",UC={AUTO:"auto",TOP:"top",RIGHT:rr()?"left":"right",BOTTOM:"bottom",LEFT:rr()?"right":"left"},FC={allowList:yb,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},jC={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Fo extends _r{constructor(t,r){if(typeof V_>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return FC}static get DefaultType(){return jC}static get NAME(){return SC}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),Se.off(this._element.closest(qg),Kg,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const t=Se.trigger(this._element,this.constructor.eventName(kC)),n=(Y_(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();const o=this._getTipElement();this._element.setAttribute("aria-describedby",o.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(o),Se.trigger(this._element,this.constructor.eventName(MC))),this._popper=this._createPopper(o),o.classList.add(aa),"ontouchstart"in document.documentElement)for(const a of[].concat(...document.body.children))Se.on(a,"mouseover",al);const s=()=>{Se.trigger(this._element,this.constructor.eventName(NC)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(s,this.tip,this._isAnimated())}hide(){if(!this._isShown()||Se.trigger(this._element,this.constructor.eventName(RC)).defaultPrevented)return;if(this._getTipElement().classList.remove(aa),"ontouchstart"in document.documentElement)for(const o of[].concat(...document.body.children))Se.off(o,"mouseover",al);this._activeTrigger[IC]=!1,this._activeTrigger[Yu]=!1,this._activeTrigger[Xo]=!1,this._isHovered=null;const n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),Se.trigger(this._element,this.constructor.eventName(OC)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const r=this._getTemplateFactory(t).toHtml();if(!r)return null;r.classList.remove(Ku,aa),r.classList.add(`bs-${this.constructor.NAME}-auto`);const n=xT(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(Ku),r}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new EC({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[xC]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ku)}_isShown(){return this.tip&&this.tip.classList.contains(aa)}_createPopper(t){const r=Bt(this._config.placement,[this,t,this._element]),n=UC[r.toUpperCase()];return $d(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_resolvePossibleFunction(t){return Bt(t,[this._element])}_getPopperConfig(t){const r={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return{...r,...Bt(this._config.popperConfig,[r])}}_setListeners(){const t=this._config.trigger.split(" ");for(const r of t)if(r==="click")Se.on(this._element,this.constructor.eventName(PC),this._config.selector,n=>{this._initializeOnDelegatedTarget(n).toggle()});else if(r!==CC){const n=r===Xo?this.constructor.eventName(DC):this.constructor.eventName(LC),o=r===Xo?this.constructor.eventName($C):this.constructor.eventName(BC);Se.on(this._element,n,this._config.selector,i=>{const s=this._initializeOnDelegatedTarget(i);s._activeTrigger[i.type==="focusin"?Yu:Xo]=!0,s._enter()}),Se.on(this._element,o,this._config.selector,i=>{const s=this._initializeOnDelegatedTarget(i);s._activeTrigger[i.type==="focusout"?Yu:Xo]=s._element.contains(i.relatedTarget),s._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},Se.on(this._element.closest(qg),Kg,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,r){clearTimeout(this._timeout),this._timeout=setTimeout(t,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const r=tn.getDataAttributes(this._element);for(const n of Object.keys(r))AC.has(n)&&delete r[n];return t={...r,...typeof t=="object"&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:Bn(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(t[r]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){const r=Fo.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}}ir(Fo);const WC="popover",HC=".popover-header",VC=".popover-body",qC={...Fo.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},KC={...Fo.DefaultType,content:"(null|string|element|function)"};class Wd extends Fo{static get Default(){return qC}static get DefaultType(){return KC}static get NAME(){return WC}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[HC]:this._getTitle(),[VC]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){const r=Wd.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}}ir(Wd);const YC="scrollspy",zC="bs.scrollspy",Hd=`.${zC}`,GC=".data-api",QC=`activate${Hd}`,Yg=`click${Hd}`,XC=`load${Hd}${GC}`,JC="dropdown-item",zi="active",ZC='[data-bs-spy="scroll"]',zu="[href]",eR=".nav, .list-group",zg=".nav-link",tR=".nav-item",rR=".list-group-item",nR=`${zg}, ${tR} > ${zg}, ${rR}`,iR=".dropdown",oR=".dropdown-toggle",sR={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},aR={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Xl extends _r{constructor(t,r){super(t,r),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return sR}static get DefaultType(){return aR}static get NAME(){return YC}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Bn(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,typeof t.threshold=="string"&&(t.threshold=t.threshold.split(",").map(r=>Number.parseFloat(r))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(Se.off(this._config.target,Yg),Se.on(this._config.target,Yg,zu,t=>{const r=this._observableSections.get(t.target.hash);if(r){t.preventDefault();const n=this._rootElement||window,o=r.offsetTop-this._element.offsetTop;if(n.scrollTo){n.scrollTo({top:o,behavior:"smooth"});return}n.scrollTop=o}}))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(r=>this._observerCallback(r),t)}_observerCallback(t){const r=s=>this._targetLinks.get(`#${s.target.id}`),n=s=>{this._previousScrollData.visibleEntryTop=s.target.offsetTop,this._process(r(s))},o=(this._rootElement||document.documentElement).scrollTop,i=o>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=o;for(const s of t){if(!s.isIntersecting){this._activeTarget=null,this._clearActiveClass(r(s));continue}const a=s.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(i&&a){if(n(s),!o)return;continue}!i&&!a&&n(s)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Pe.find(zu,this._config.target);for(const r of t){if(!r.hash||Dn(r))continue;const n=Pe.findOne(decodeURI(r.hash),this._element);$o(n)&&(this._targetLinks.set(decodeURI(r.hash),r),this._observableSections.set(r.hash,n))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(zi),this._activateParents(t),Se.trigger(this._element,QC,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(JC)){Pe.findOne(oR,t.closest(iR)).classList.add(zi);return}for(const r of Pe.parents(t,eR))for(const n of Pe.prev(r,nR))n.classList.add(zi)}_clearActiveClass(t){t.classList.remove(zi);const r=Pe.find(`${zu}.${zi}`,t);for(const n of r)n.classList.remove(zi)}static jQueryInterface(t){return this.each(function(){const r=Xl.getOrCreateInstance(this,t);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Se.on(window,XC,()=>{for(const e of Pe.find(ZC))Xl.getOrCreateInstance(e)});ir(Xl);const lR="tab",uR="bs.tab",Pi=`.${uR}`,cR=`hide${Pi}`,fR=`hidden${Pi}`,hR=`show${Pi}`,dR=`shown${Pi}`,pR=`click${Pi}`,gR=`keydown${Pi}`,mR=`load${Pi}`,yR="ArrowLeft",Gg="ArrowRight",_R="ArrowUp",Qg="ArrowDown",Gu="Home",Xg="End",ci="active",Jg="fade",Qu="show",bR="dropdown",_b=".dropdown-toggle",wR=".dropdown-menu",Xu=`:not(${_b})`,vR='.list-group, .nav, [role="tablist"]',ER=".nav-item, .list-group-item",SR=`.nav-link${Xu}, .list-group-item${Xu}, [role="tab"]${Xu}`,bb='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Ju=`${SR}, ${bb}`,AR=`.${ci}[data-bs-toggle="tab"], .${ci}[data-bs-toggle="pill"], .${ci}[data-bs-toggle="list"]`;class Ro extends _r{constructor(t){super(t),this._parent=this._element.closest(vR),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),Se.on(this._element,gR,r=>this._keydown(r)))}static get NAME(){return lR}show(){const t=this._element;if(this._elemIsActive(t))return;const r=this._getActiveElem(),n=r?Se.trigger(r,cR,{relatedTarget:t}):null;Se.trigger(t,hR,{relatedTarget:r}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(r,t),this._activate(t,r))}_activate(t,r){if(!t)return;t.classList.add(ci),this._activate(Pe.getElementFromSelector(t));const n=()=>{if(t.getAttribute("role")!=="tab"){t.classList.add(Qu);return}t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),Se.trigger(t,dR,{relatedTarget:r})};this._queueCallback(n,t,t.classList.contains(Jg))}_deactivate(t,r){if(!t)return;t.classList.remove(ci),t.blur(),this._deactivate(Pe.getElementFromSelector(t));const n=()=>{if(t.getAttribute("role")!=="tab"){t.classList.remove(Qu);return}t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),Se.trigger(t,fR,{relatedTarget:r})};this._queueCallback(n,t,t.classList.contains(Jg))}_keydown(t){if(![yR,Gg,_R,Qg,Gu,Xg].includes(t.key))return;t.stopPropagation(),t.preventDefault();const r=this._getChildren().filter(o=>!Dn(o));let n;if([Gu,Xg].includes(t.key))n=r[t.key===Gu?0:r.length-1];else{const o=[Gg,Qg].includes(t.key);n=Ud(r,t.target,o,!0)}n&&(n.focus({preventScroll:!0}),Ro.getOrCreateInstance(n).show())}_getChildren(){return Pe.find(Ju,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,r){this._setAttributeIfNotExists(t,"role","tablist");for(const n of r)this._setInitialAttributesOnChild(n)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const r=this._elemIsActive(t),n=this._getOuterElement(t);t.setAttribute("aria-selected",r),n!==t&&this._setAttributeIfNotExists(n,"role","presentation"),r||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const r=Pe.getElementFromSelector(t);r&&(this._setAttributeIfNotExists(r,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(r,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,r){const n=this._getOuterElement(t);if(!n.classList.contains(bR))return;const o=(i,s)=>{const a=Pe.findOne(i,n);a&&a.classList.toggle(s,r)};o(_b,ci),o(wR,Qu),n.setAttribute("aria-expanded",r)}_setAttributeIfNotExists(t,r,n){t.hasAttribute(r)||t.setAttribute(r,n)}_elemIsActive(t){return t.classList.contains(ci)}_getInnerElement(t){return t.matches(Ju)?t:Pe.findOne(Ju,t)}_getOuterElement(t){return t.closest(ER)||t}static jQueryInterface(t){return this.each(function(){const r=Ro.getOrCreateInstance(this);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Se.on(document,pR,bb,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),!Dn(this)&&Ro.getOrCreateInstance(this).show()});Se.on(window,mR,()=>{for(const e of Pe.find(AR))Ro.getOrCreateInstance(e)});ir(Ro);const TR="toast",xR="bs.toast",jn=`.${xR}`,IR=`mouseover${jn}`,CR=`mouseout${jn}`,RR=`focusin${jn}`,OR=`focusout${jn}`,kR=`hide${jn}`,NR=`hidden${jn}`,MR=`show${jn}`,PR=`shown${jn}`,LR="fade",Zg="hide",la="show",ua="showing",BR={animation:"boolean",autohide:"boolean",delay:"number"},DR={animation:!0,autohide:!0,delay:5e3};class Jl extends _r{constructor(t,r){super(t,r),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return DR}static get DefaultType(){return BR}static get NAME(){return TR}show(){if(Se.trigger(this._element,MR).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(LR);const r=()=>{this._element.classList.remove(ua),Se.trigger(this._element,PR),this._maybeScheduleHide()};this._element.classList.remove(Zg),Us(this._element),this._element.classList.add(la,ua),this._queueCallback(r,this._element,this._config.animation)}hide(){if(!this.isShown()||Se.trigger(this._element,kR).defaultPrevented)return;const r=()=>{this._element.classList.add(Zg),this._element.classList.remove(ua,la),Se.trigger(this._element,NR)};this._element.classList.add(ua),this._queueCallback(r,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(la),super.dispose()}isShown(){return this._element.classList.contains(la)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,r){switch(t.type){case"mouseover":case"mouseout":{this._hasMouseInteraction=r;break}case"focusin":case"focusout":{this._hasKeyboardInteraction=r;break}}if(r){this._clearTimeout();return}const n=t.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){Se.on(this._element,IR,t=>this._onInteraction(t,!0)),Se.on(this._element,CR,t=>this._onInteraction(t,!1)),Se.on(this._element,RR,t=>this._onInteraction(t,!0)),Se.on(this._element,OR,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const r=Jl.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}zl(Jl);ir(Jl);var Vd=Object.defineProperty,$R=Object.getOwnPropertyDescriptor,UR=Object.getOwnPropertyNames,FR=Object.prototype.hasOwnProperty,_t=(e,t)=>()=>(e&&(t=e(e=0)),t),Ae=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Li=(e,t)=>{for(var r in t)Vd(e,r,{get:t[r],enumerable:!0})},jR=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of UR(t))!FR.call(e,o)&&o!==r&&Vd(e,o,{get:()=>t[o],enumerable:!(n=$R(t,o))||n.enumerable});return e},ze=e=>jR(Vd({},"__esModule",{value:!0}),e),_e=_t(()=>{}),He={};Li(He,{_debugEnd:()=>Ff,_debugProcess:()=>Uf,_events:()=>th,_eventsCount:()=>rh,_exiting:()=>Tf,_fatalExceptions:()=>Bf,_getActiveHandles:()=>xb,_getActiveRequests:()=>Tb,_kill:()=>Cf,_linkedBinding:()=>Sb,_maxListeners:()=>eh,_preload_modules:()=>Jf,_rawDebug:()=>Ef,_startProfilerIdleNotifier:()=>jf,_stopProfilerIdleNotifier:()=>Wf,_tickCallback:()=>$f,abort:()=>Kf,addListener:()=>nh,allowedNodeEnvironmentFlags:()=>Pf,arch:()=>uf,argv:()=>hf,argv0:()=>Xf,assert:()=>Ib,binding:()=>yf,chdir:()=>wf,config:()=>xf,cpuUsage:()=>ls,cwd:()=>bf,debugPort:()=>Qf,default:()=>Kd,dlopen:()=>Ab,domain:()=>Af,emit:()=>lh,emitWarning:()=>mf,env:()=>ff,execArgv:()=>df,execPath:()=>Gf,exit:()=>Nf,features:()=>Lf,hasUncaughtExceptionCaptureCallback:()=>Cb,hrtime:()=>Pa,kill:()=>kf,listeners:()=>Ob,memoryUsage:()=>Of,moduleLoadList:()=>Sf,nextTick:()=>vb,off:()=>oh,on:()=>Wr,once:()=>ih,openStdin:()=>Mf,pid:()=>Yf,platform:()=>cf,ppid:()=>zf,prependListener:()=>uh,prependOnceListener:()=>ch,reallyExit:()=>If,release:()=>vf,removeAllListeners:()=>ah,removeListener:()=>sh,resourceUsage:()=>Rf,setSourceMapsEnabled:()=>Zf,setUncaughtExceptionCaptureCallback:()=>Df,stderr:()=>Vf,stdin:()=>qf,stdout:()=>Hf,title:()=>lf,umask:()=>_f,uptime:()=>Rb,version:()=>pf,versions:()=>gf});function qd(e){throw new Error("Node.js process "+e+" is not supported by JSPM core outside of Node.js")}function WR(){!bi||!fi||(bi=!1,fi.length?Rr=fi.concat(Rr):Ss=-1,Rr.length&&wb())}function wb(){if(!bi){var e=setTimeout(WR,0);bi=!0;for(var t=Rr.length;t;){for(fi=Rr,Rr=[];++Ss<t;)fi&&fi[Ss].run();Ss=-1,t=Rr.length}fi=null,bi=!1,clearTimeout(e)}}function vb(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Rr.push(new Eb(e,t)),Rr.length===1&&!bi&&setTimeout(wb,0)}function Eb(e,t){this.fun=e,this.array=t}function St(){}function Sb(e){qd("_linkedBinding")}function Ab(e){qd("dlopen")}function Tb(){return[]}function xb(){return[]}function Ib(e,t){if(!e)throw new Error(t||"assertion error")}function Cb(){return!1}function Rb(){return Kr.now()/1e3}function Pa(e){var t=Math.floor((Date.now()-Kr.now())*.001),r=Kr.now()*.001,n=Math.floor(r)+t,o=Math.floor(r%1*1e9);return e&&(n=n-e[0],o=o-e[1],o<0&&(n--,o+=La)),[n,o]}function Wr(){return Kd}function Ob(e){return[]}var Rr,bi,fi,Ss,lf,uf,cf,ff,hf,df,pf,gf,mf,yf,_f,bf,wf,vf,Ef,Sf,Af,Tf,xf,If,Cf,ls,Rf,Of,kf,Nf,Mf,Pf,Lf,Bf,Df,$f,Uf,Ff,jf,Wf,Hf,Vf,qf,Kf,Yf,zf,Gf,Qf,Xf,Jf,Zf,Kr,Zu,La,eh,th,rh,nh,ih,oh,sh,ah,lh,uh,ch,Kd,HR=_t(()=>{_e(),we(),be(),Rr=[],bi=!1,Ss=-1,Eb.prototype.run=function(){this.fun.apply(null,this.array)},lf="browser",uf="x64",cf="browser",ff={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},hf=["/usr/bin/node"],df=[],pf="v16.8.0",gf={},mf=function(e,t){console.warn((t?t+": ":"")+e)},yf=function(e){qd("binding")},_f=function(e){return 0},bf=function(){return"/"},wf=function(e){},vf={name:"node",sourceUrl:"",headersUrl:"",libUrl:""},Ef=St,Sf=[],Af={},Tf=!1,xf={},If=St,Cf=St,ls=function(){return{}},Rf=ls,Of=ls,kf=St,Nf=St,Mf=St,Pf={},Lf={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},Bf=St,Df=St,$f=St,Uf=St,Ff=St,jf=St,Wf=St,Hf=void 0,Vf=void 0,qf=void 0,Kf=St,Yf=2,zf=1,Gf="/bin/usr/node",Qf=9229,Xf="node",Jf=[],Zf=St,Kr={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0},Kr.now===void 0&&(Zu=Date.now(),Kr.timing&&Kr.timing.navigationStart&&(Zu=Kr.timing.navigationStart),Kr.now=()=>Date.now()-Zu),La=1e9,Pa.bigint=function(e){var t=Pa(e);return typeof BigInt>"u"?t[0]*La+t[1]:BigInt(t[0]*La)+BigInt(t[1])},eh=10,th={},rh=0,nh=Wr,ih=Wr,oh=Wr,sh=Wr,ah=Wr,lh=St,uh=Wr,ch=Wr,Kd={version:pf,versions:gf,arch:uf,platform:cf,release:vf,_rawDebug:Ef,moduleLoadList:Sf,binding:yf,_linkedBinding:Sb,_events:th,_eventsCount:rh,_maxListeners:eh,on:Wr,addListener:nh,once:ih,off:oh,removeListener:sh,removeAllListeners:ah,emit:lh,prependListener:uh,prependOnceListener:ch,listeners:Ob,domain:Af,_exiting:Tf,config:xf,dlopen:Ab,uptime:Rb,_getActiveRequests:Tb,_getActiveHandles:xb,reallyExit:If,_kill:Cf,cpuUsage:ls,resourceUsage:Rf,memoryUsage:Of,kill:kf,exit:Nf,openStdin:Mf,allowedNodeEnvironmentFlags:Pf,assert:Ib,features:Lf,_fatalExceptions:Bf,setUncaughtExceptionCaptureCallback:Df,hasUncaughtExceptionCaptureCallback:Cb,emitWarning:mf,nextTick:vb,_tickCallback:$f,_debugProcess:Uf,_debugEnd:Ff,_startProfilerIdleNotifier:jf,_stopProfilerIdleNotifier:Wf,stdout:Hf,stdin:qf,stderr:Vf,abort:Kf,umask:_f,chdir:wf,cwd:bf,env:ff,title:lf,argv:hf,execArgv:df,pid:Yf,ppid:zf,execPath:Gf,debugPort:Qf,hrtime:Pa,argv0:Xf,_preload_modules:Jf,setSourceMapsEnabled:Zf}}),be=_t(()=>{HR()}),bt={};Li(bt,{Buffer:()=>cl,INSPECT_MAX_BYTES:()=>kb,default:()=>Hr,kMaxLength:()=>Nb});function VR(){if(fh)return to;fh=!0,to.byteLength=a,to.toByteArray=u,to.fromByteArray=p;for(var e=[],t=[],r=typeof Uint8Array<"u"?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,i=n.length;o<i;++o)e[o]=n[o],t[n.charCodeAt(o)]=o;t[45]=62,t[95]=63;function s(m){var _=m.length;if(_%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var b=m.indexOf("=");b===-1&&(b=_);var T=b===_?0:4-b%4;return[b,T]}function a(m){var _=s(m),b=_[0],T=_[1];return(b+T)*3/4-T}function l(m,_,b){return(_+b)*3/4-b}function u(m){var _,b=s(m),T=b[0],N=b[1],R=new r(l(m,T,N)),S=0,D=N>0?T-4:T,U;for(U=0;U<D;U+=4)_=t[m.charCodeAt(U)]<<18|t[m.charCodeAt(U+1)]<<12|t[m.charCodeAt(U+2)]<<6|t[m.charCodeAt(U+3)],R[S++]=_>>16&255,R[S++]=_>>8&255,R[S++]=_&255;return N===2&&(_=t[m.charCodeAt(U)]<<2|t[m.charCodeAt(U+1)]>>4,R[S++]=_&255),N===1&&(_=t[m.charCodeAt(U)]<<10|t[m.charCodeAt(U+1)]<<4|t[m.charCodeAt(U+2)]>>2,R[S++]=_>>8&255,R[S++]=_&255),R}function c(m){return e[m>>18&63]+e[m>>12&63]+e[m>>6&63]+e[m&63]}function d(m,_,b){for(var T,N=[],R=_;R<b;R+=3)T=(m[R]<<16&16711680)+(m[R+1]<<8&65280)+(m[R+2]&255),N.push(c(T));return N.join("")}function p(m){for(var _,b=m.length,T=b%3,N=[],R=16383,S=0,D=b-T;S<D;S+=R)N.push(d(m,S,S+R>D?D:S+R));return T===1?(_=m[b-1],N.push(e[_>>2]+e[_<<4&63]+"==")):T===2&&(_=(m[b-2]<<8)+m[b-1],N.push(e[_>>10]+e[_>>4&63]+e[_<<2&63]+"=")),N.join("")}return to}function qR(){return hh?us:(hh=!0,us.read=function(e,t,r,n,o){var i,s,a=o*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,m=e[t+d];for(d+=p,i=m&(1<<-c)-1,m>>=-c,c+=a;c>0;i=i*256+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=s*256+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:(m?-1:1)*(1/0);s=s+Math.pow(2,n),i=i-u}return(m?-1:1)*s*Math.pow(2,i-n)},us.write=function(e,t,r,n,o,i){var s,a,l,u=i*8-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+d>=1?t+=p/l:t+=p*Math.pow(2,1-d),t*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s=s+d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+m]=a&255,m+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+m]=s&255,m+=_,s/=256,u-=8);e[r+m-_]|=b*128},us)}function KR(){if(dh)return vn;dh=!0;let e=VR(),t=qR(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;vn.Buffer=s,vn.SlowBuffer=N,vn.INSPECT_MAX_BYTES=50;let n=2147483647;vn.kMaxLength=n,s.TYPED_ARRAY_SUPPORT=o(),!s.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{let y=new Uint8Array(1),h={foo:function(){return 42}};return Object.setPrototypeOf(h,Uint8Array.prototype),Object.setPrototypeOf(y,h),y.foo()===42}catch{return!1}}Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}});function i(y){if(y>n)throw new RangeError('The value "'+y+'" is invalid for option "size"');let h=new Uint8Array(y);return Object.setPrototypeOf(h,s.prototype),h}function s(y,h,f){if(typeof y=="number"){if(typeof h=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(y)}return a(y,h,f)}s.poolSize=8192;function a(y,h,f){if(typeof y=="string")return d(y,h);if(ArrayBuffer.isView(y))return m(y);if(y==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof y);if(K(y,ArrayBuffer)||y&&K(y.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(K(y,SharedArrayBuffer)||y&&K(y.buffer,SharedArrayBuffer)))return _(y,h,f);if(typeof y=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let g=y.valueOf&&y.valueOf();if(g!=null&&g!==y)return s.from(g,h,f);let w=b(y);if(w)return w;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof y[Symbol.toPrimitive]=="function")return s.from(y[Symbol.toPrimitive]("string"),h,f);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof y)}s.from=function(y,h,f){return a(y,h,f)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array);function l(y){if(typeof y!="number")throw new TypeError('"size" argument must be of type number');if(y<0)throw new RangeError('The value "'+y+'" is invalid for option "size"')}function u(y,h,f){return l(y),y<=0?i(y):h!==void 0?typeof f=="string"?i(y).fill(h,f):i(y).fill(h):i(y)}s.alloc=function(y,h,f){return u(y,h,f)};function c(y){return l(y),i(y<0?0:T(y)|0)}s.allocUnsafe=function(y){return c(y)},s.allocUnsafeSlow=function(y){return c(y)};function d(y,h){if((typeof h!="string"||h==="")&&(h="utf8"),!s.isEncoding(h))throw new TypeError("Unknown encoding: "+h);let f=R(y,h)|0,g=i(f),w=g.write(y,h);return w!==f&&(g=g.slice(0,w)),g}function p(y){let h=y.length<0?0:T(y.length)|0,f=i(h);for(let g=0;g<h;g+=1)f[g]=y[g]&255;return f}function m(y){if(K(y,Uint8Array)){let h=new Uint8Array(y);return _(h.buffer,h.byteOffset,h.byteLength)}return p(y)}function _(y,h,f){if(h<0||y.byteLength<h)throw new RangeError('"offset" is outside of buffer bounds');if(y.byteLength<h+(f||0))throw new RangeError('"length" is outside of buffer bounds');let g;return h===void 0&&f===void 0?g=new Uint8Array(y):f===void 0?g=new Uint8Array(y,h):g=new Uint8Array(y,h,f),Object.setPrototypeOf(g,s.prototype),g}function b(y){if(s.isBuffer(y)){let h=T(y.length)|0,f=i(h);return f.length===0||y.copy(f,0,0,h),f}if(y.length!==void 0)return typeof y.length!="number"||I(y.length)?i(0):p(y);if(y.type==="Buffer"&&Array.isArray(y.data))return p(y.data)}function T(y){if(y>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return y|0}function N(y){return+y!=y&&(y=0),s.alloc(+y)}s.isBuffer=function(y){return y!=null&&y._isBuffer===!0&&y!==s.prototype},s.compare=function(y,h){if(K(y,Uint8Array)&&(y=s.from(y,y.offset,y.byteLength)),K(h,Uint8Array)&&(h=s.from(h,h.offset,h.byteLength)),!s.isBuffer(y)||!s.isBuffer(h))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(y===h)return 0;let f=y.length,g=h.length;for(let w=0,C=Math.min(f,g);w<C;++w)if(y[w]!==h[w]){f=y[w],g=h[w];break}return f<g?-1:g<f?1:0},s.isEncoding=function(y){switch(String(y).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(y,h){if(!Array.isArray(y))throw new TypeError('"list" argument must be an Array of Buffers');if(y.length===0)return s.alloc(0);let f;if(h===void 0)for(h=0,f=0;f<y.length;++f)h+=y[f].length;let g=s.allocUnsafe(h),w=0;for(f=0;f<y.length;++f){let C=y[f];if(K(C,Uint8Array))w+C.length>g.length?(s.isBuffer(C)||(C=s.from(C)),C.copy(g,w)):Uint8Array.prototype.set.call(g,C,w);else if(s.isBuffer(C))C.copy(g,w);else throw new TypeError('"list" argument must be an Array of Buffers');w+=C.length}return g};function R(y,h){if(s.isBuffer(y))return y.length;if(ArrayBuffer.isView(y)||K(y,ArrayBuffer))return y.byteLength;if(typeof y!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof y);let f=y.length,g=arguments.length>2&&arguments[2]===!0;if(!g&&f===0)return 0;let w=!1;for(;;)switch(h){case"ascii":case"latin1":case"binary":return f;case"utf8":case"utf-8":return k(y).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return f*2;case"hex":return f>>>1;case"base64":return te(y).length;default:if(w)return g?-1:k(y).length;h=(""+h).toLowerCase(),w=!0}}s.byteLength=R;function S(y,h,f){let g=!1;if((h===void 0||h<0)&&(h=0),h>this.length||((f===void 0||f>this.length)&&(f=this.length),f<=0)||(f>>>=0,h>>>=0,f<=h))return"";for(y||(y="utf8");;)switch(y){case"hex":return z(this,h,f);case"utf8":case"utf-8":return B(this,h,f);case"ascii":return ue(this,h,f);case"latin1":case"binary":return ae(this,h,f);case"base64":return P(this,h,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return pe(this,h,f);default:if(g)throw new TypeError("Unknown encoding: "+y);y=(y+"").toLowerCase(),g=!0}}s.prototype._isBuffer=!0;function D(y,h,f){let g=y[h];y[h]=y[f],y[f]=g}s.prototype.swap16=function(){let y=this.length;if(y%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let h=0;h<y;h+=2)D(this,h,h+1);return this},s.prototype.swap32=function(){let y=this.length;if(y%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let h=0;h<y;h+=4)D(this,h,h+3),D(this,h+1,h+2);return this},s.prototype.swap64=function(){let y=this.length;if(y%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let h=0;h<y;h+=8)D(this,h,h+7),D(this,h+1,h+6),D(this,h+2,h+5),D(this,h+3,h+4);return this},s.prototype.toString=function(){let y=this.length;return y===0?"":arguments.length===0?B(this,0,y):S.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(y){if(!s.isBuffer(y))throw new TypeError("Argument must be a Buffer");return this===y?!0:s.compare(this,y)===0},s.prototype.inspect=function(){let y="",h=vn.INSPECT_MAX_BYTES;return y=this.toString("hex",0,h).replace(/(.{2})/g,"$1 ").trim(),this.length>h&&(y+=" ... "),"<Buffer "+y+">"},r&&(s.prototype[r]=s.prototype.inspect),s.prototype.compare=function(y,h,f,g,w){if(K(y,Uint8Array)&&(y=s.from(y,y.offset,y.byteLength)),!s.isBuffer(y))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof y);if(h===void 0&&(h=0),f===void 0&&(f=y?y.length:0),g===void 0&&(g=0),w===void 0&&(w=this.length),h<0||f>y.length||g<0||w>this.length)throw new RangeError("out of range index");if(g>=w&&h>=f)return 0;if(g>=w)return-1;if(h>=f)return 1;if(h>>>=0,f>>>=0,g>>>=0,w>>>=0,this===y)return 0;let C=w-g,V=f-h,fe=Math.min(C,V),xe=this.slice(g,w),ke=y.slice(h,f);for(let Te=0;Te<fe;++Te)if(xe[Te]!==ke[Te]){C=xe[Te],V=ke[Te];break}return C<V?-1:V<C?1:0};function U(y,h,f,g,w){if(y.length===0)return-1;if(typeof f=="string"?(g=f,f=0):f>2147483647?f=2147483647:f<-2147483648&&(f=-2147483648),f=+f,I(f)&&(f=w?0:y.length-1),f<0&&(f=y.length+f),f>=y.length){if(w)return-1;f=y.length-1}else if(f<0)if(w)f=0;else return-1;if(typeof h=="string"&&(h=s.from(h,g)),s.isBuffer(h))return h.length===0?-1:x(y,h,f,g,w);if(typeof h=="number")return h=h&255,typeof Uint8Array.prototype.indexOf=="function"?w?Uint8Array.prototype.indexOf.call(y,h,f):Uint8Array.prototype.lastIndexOf.call(y,h,f):x(y,[h],f,g,w);throw new TypeError("val must be string, number or Buffer")}function x(y,h,f,g,w){let C=1,V=y.length,fe=h.length;if(g!==void 0&&(g=String(g).toLowerCase(),g==="ucs2"||g==="ucs-2"||g==="utf16le"||g==="utf-16le")){if(y.length<2||h.length<2)return-1;C=2,V/=2,fe/=2,f/=2}function xe(Te,Oe){return C===1?Te[Oe]:Te.readUInt16BE(Oe*C)}let ke;if(w){let Te=-1;for(ke=f;ke<V;ke++)if(xe(y,ke)===xe(h,Te===-1?0:ke-Te)){if(Te===-1&&(Te=ke),ke-Te+1===fe)return Te*C}else Te!==-1&&(ke-=ke-Te),Te=-1}else for(f+fe>V&&(f=V-fe),ke=f;ke>=0;ke--){let Te=!0;for(let Oe=0;Oe<fe;Oe++)if(xe(y,ke+Oe)!==xe(h,Oe)){Te=!1;break}if(Te)return ke}return-1}s.prototype.includes=function(y,h,f){return this.indexOf(y,h,f)!==-1},s.prototype.indexOf=function(y,h,f){return U(this,y,h,f,!0)},s.prototype.lastIndexOf=function(y,h,f){return U(this,y,h,f,!1)};function L(y,h,f,g){f=Number(f)||0;let w=y.length-f;g?(g=Number(g),g>w&&(g=w)):g=w;let C=h.length;g>C/2&&(g=C/2);let V;for(V=0;V<g;++V){let fe=parseInt(h.substr(V*2,2),16);if(I(fe))return V;y[f+V]=fe}return V}function j(y,h,f,g){return $(k(h,y.length-f),y,f,g)}function Y(y,h,f,g){return $(M(h),y,f,g)}function se(y,h,f,g){return $(te(h),y,f,g)}function re(y,h,f,g){return $(ee(h,y.length-f),y,f,g)}s.prototype.write=function(y,h,f,g){if(h===void 0)g="utf8",f=this.length,h=0;else if(f===void 0&&typeof h=="string")g=h,f=this.length,h=0;else if(isFinite(h))h=h>>>0,isFinite(f)?(f=f>>>0,g===void 0&&(g="utf8")):(g=f,f=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let w=this.length-h;if((f===void 0||f>w)&&(f=w),y.length>0&&(f<0||h<0)||h>this.length)throw new RangeError("Attempt to write outside buffer bounds");g||(g="utf8");let C=!1;for(;;)switch(g){case"hex":return L(this,y,h,f);case"utf8":case"utf-8":return j(this,y,h,f);case"ascii":case"latin1":case"binary":return Y(this,y,h,f);case"base64":return se(this,y,h,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return re(this,y,h,f);default:if(C)throw new TypeError("Unknown encoding: "+g);g=(""+g).toLowerCase(),C=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function P(y,h,f){return h===0&&f===y.length?e.fromByteArray(y):e.fromByteArray(y.slice(h,f))}function B(y,h,f){f=Math.min(y.length,f);let g=[],w=h;for(;w<f;){let C=y[w],V=null,fe=C>239?4:C>223?3:C>191?2:1;if(w+fe<=f){let xe,ke,Te,Oe;switch(fe){case 1:C<128&&(V=C);break;case 2:xe=y[w+1],(xe&192)===128&&(Oe=(C&31)<<6|xe&63,Oe>127&&(V=Oe));break;case 3:xe=y[w+1],ke=y[w+2],(xe&192)===128&&(ke&192)===128&&(Oe=(C&15)<<12|(xe&63)<<6|ke&63,Oe>2047&&(Oe<55296||Oe>57343)&&(V=Oe));break;case 4:xe=y[w+1],ke=y[w+2],Te=y[w+3],(xe&192)===128&&(ke&192)===128&&(Te&192)===128&&(Oe=(C&15)<<18|(xe&63)<<12|(ke&63)<<6|Te&63,Oe>65535&&Oe<1114112&&(V=Oe))}}V===null?(V=65533,fe=1):V>65535&&(V-=65536,g.push(V>>>10&1023|55296),V=56320|V&1023),g.push(V),w+=fe}return ne(g)}let oe=4096;function ne(y){let h=y.length;if(h<=oe)return String.fromCharCode.apply(String,y);let f="",g=0;for(;g<h;)f+=String.fromCharCode.apply(String,y.slice(g,g+=oe));return f}function ue(y,h,f){let g="";f=Math.min(y.length,f);for(let w=h;w<f;++w)g+=String.fromCharCode(y[w]&127);return g}function ae(y,h,f){let g="";f=Math.min(y.length,f);for(let w=h;w<f;++w)g+=String.fromCharCode(y[w]);return g}function z(y,h,f){let g=y.length;(!h||h<0)&&(h=0),(!f||f<0||f>g)&&(f=g);let w="";for(let C=h;C<f;++C)w+=W[y[C]];return w}function pe(y,h,f){let g=y.slice(h,f),w="";for(let C=0;C<g.length-1;C+=2)w+=String.fromCharCode(g[C]+g[C+1]*256);return w}s.prototype.slice=function(y,h){let f=this.length;y=~~y,h=h===void 0?f:~~h,y<0?(y+=f,y<0&&(y=0)):y>f&&(y=f),h<0?(h+=f,h<0&&(h=0)):h>f&&(h=f),h<y&&(h=y);let g=this.subarray(y,h);return Object.setPrototypeOf(g,s.prototype),g};function de(y,h,f){if(y%1!==0||y<0)throw new RangeError("offset is not uint");if(y+h>f)throw new RangeError("Trying to access beyond buffer length")}s.prototype.readUintLE=s.prototype.readUIntLE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=this[y],w=1,C=0;for(;++C<h&&(w*=256);)g+=this[y+C]*w;return g},s.prototype.readUintBE=s.prototype.readUIntBE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=this[y+--h],w=1;for(;h>0&&(w*=256);)g+=this[y+--h]*w;return g},s.prototype.readUint8=s.prototype.readUInt8=function(y,h){return y=y>>>0,h||de(y,1,this.length),this[y]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(y,h){return y=y>>>0,h||de(y,2,this.length),this[y]|this[y+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(y,h){return y=y>>>0,h||de(y,2,this.length),this[y]<<8|this[y+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(y,h){return y=y>>>0,h||de(y,4,this.length),(this[y]|this[y+1]<<8|this[y+2]<<16)+this[y+3]*16777216},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(y,h){return y=y>>>0,h||de(y,4,this.length),this[y]*16777216+(this[y+1]<<16|this[y+2]<<8|this[y+3])},s.prototype.readBigUInt64LE=J(function(y){y=y>>>0,Z(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=h+this[++y]*2**8+this[++y]*2**16+this[++y]*2**24,w=this[++y]+this[++y]*2**8+this[++y]*2**16+f*2**24;return BigInt(g)+(BigInt(w)<<BigInt(32))}),s.prototype.readBigUInt64BE=J(function(y){y=y>>>0,Z(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=h*2**24+this[++y]*2**16+this[++y]*2**8+this[++y],w=this[++y]*2**24+this[++y]*2**16+this[++y]*2**8+f;return(BigInt(g)<<BigInt(32))+BigInt(w)}),s.prototype.readIntLE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=this[y],w=1,C=0;for(;++C<h&&(w*=256);)g+=this[y+C]*w;return w*=128,g>=w&&(g-=Math.pow(2,8*h)),g},s.prototype.readIntBE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=h,w=1,C=this[y+--g];for(;g>0&&(w*=256);)C+=this[y+--g]*w;return w*=128,C>=w&&(C-=Math.pow(2,8*h)),C},s.prototype.readInt8=function(y,h){return y=y>>>0,h||de(y,1,this.length),this[y]&128?(255-this[y]+1)*-1:this[y]},s.prototype.readInt16LE=function(y,h){y=y>>>0,h||de(y,2,this.length);let f=this[y]|this[y+1]<<8;return f&32768?f|4294901760:f},s.prototype.readInt16BE=function(y,h){y=y>>>0,h||de(y,2,this.length);let f=this[y+1]|this[y]<<8;return f&32768?f|4294901760:f},s.prototype.readInt32LE=function(y,h){return y=y>>>0,h||de(y,4,this.length),this[y]|this[y+1]<<8|this[y+2]<<16|this[y+3]<<24},s.prototype.readInt32BE=function(y,h){return y=y>>>0,h||de(y,4,this.length),this[y]<<24|this[y+1]<<16|this[y+2]<<8|this[y+3]},s.prototype.readBigInt64LE=J(function(y){y=y>>>0,Z(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=this[y+4]+this[y+5]*2**8+this[y+6]*2**16+(f<<24);return(BigInt(g)<<BigInt(32))+BigInt(h+this[++y]*2**8+this[++y]*2**16+this[++y]*2**24)}),s.prototype.readBigInt64BE=J(function(y){y=y>>>0,Z(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=(h<<24)+this[++y]*2**16+this[++y]*2**8+this[++y];return(BigInt(g)<<BigInt(32))+BigInt(this[++y]*2**24+this[++y]*2**16+this[++y]*2**8+f)}),s.prototype.readFloatLE=function(y,h){return y=y>>>0,h||de(y,4,this.length),t.read(this,y,!0,23,4)},s.prototype.readFloatBE=function(y,h){return y=y>>>0,h||de(y,4,this.length),t.read(this,y,!1,23,4)},s.prototype.readDoubleLE=function(y,h){return y=y>>>0,h||de(y,8,this.length),t.read(this,y,!0,52,8)},s.prototype.readDoubleBE=function(y,h){return y=y>>>0,h||de(y,8,this.length),t.read(this,y,!1,52,8)};function ge(y,h,f,g,w,C){if(!s.isBuffer(y))throw new TypeError('"buffer" argument must be a Buffer instance');if(h>w||h<C)throw new RangeError('"value" argument is out of bounds');if(f+g>y.length)throw new RangeError("Index out of range")}s.prototype.writeUintLE=s.prototype.writeUIntLE=function(y,h,f,g){if(y=+y,h=h>>>0,f=f>>>0,!g){let V=Math.pow(2,8*f)-1;ge(this,y,h,f,V,0)}let w=1,C=0;for(this[h]=y&255;++C<f&&(w*=256);)this[h+C]=y/w&255;return h+f},s.prototype.writeUintBE=s.prototype.writeUIntBE=function(y,h,f,g){if(y=+y,h=h>>>0,f=f>>>0,!g){let V=Math.pow(2,8*f)-1;ge(this,y,h,f,V,0)}let w=f-1,C=1;for(this[h+w]=y&255;--w>=0&&(C*=256);)this[h+w]=y/C&255;return h+f},s.prototype.writeUint8=s.prototype.writeUInt8=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,1,255,0),this[h]=y&255,h+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,65535,0),this[h]=y&255,this[h+1]=y>>>8,h+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,65535,0),this[h]=y>>>8,this[h+1]=y&255,h+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,4294967295,0),this[h+3]=y>>>24,this[h+2]=y>>>16,this[h+1]=y>>>8,this[h]=y&255,h+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,4294967295,0),this[h]=y>>>24,this[h+1]=y>>>16,this[h+2]=y>>>8,this[h+3]=y&255,h+4};function O(y,h,f,g,w){ce(h,g,w,y,f,7);let C=Number(h&BigInt(4294967295));y[f++]=C,C=C>>8,y[f++]=C,C=C>>8,y[f++]=C,C=C>>8,y[f++]=C;let V=Number(h>>BigInt(32)&BigInt(4294967295));return y[f++]=V,V=V>>8,y[f++]=V,V=V>>8,y[f++]=V,V=V>>8,y[f++]=V,f}function ie(y,h,f,g,w){ce(h,g,w,y,f,7);let C=Number(h&BigInt(4294967295));y[f+7]=C,C=C>>8,y[f+6]=C,C=C>>8,y[f+5]=C,C=C>>8,y[f+4]=C;let V=Number(h>>BigInt(32)&BigInt(4294967295));return y[f+3]=V,V=V>>8,y[f+2]=V,V=V>>8,y[f+1]=V,V=V>>8,y[f]=V,f+8}s.prototype.writeBigUInt64LE=J(function(y,h=0){return O(this,y,h,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=J(function(y,h=0){return ie(this,y,h,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(y,h,f,g){if(y=+y,h=h>>>0,!g){let fe=Math.pow(2,8*f-1);ge(this,y,h,f,fe-1,-fe)}let w=0,C=1,V=0;for(this[h]=y&255;++w<f&&(C*=256);)y<0&&V===0&&this[h+w-1]!==0&&(V=1),this[h+w]=(y/C>>0)-V&255;return h+f},s.prototype.writeIntBE=function(y,h,f,g){if(y=+y,h=h>>>0,!g){let fe=Math.pow(2,8*f-1);ge(this,y,h,f,fe-1,-fe)}let w=f-1,C=1,V=0;for(this[h+w]=y&255;--w>=0&&(C*=256);)y<0&&V===0&&this[h+w+1]!==0&&(V=1),this[h+w]=(y/C>>0)-V&255;return h+f},s.prototype.writeInt8=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,1,127,-128),y<0&&(y=255+y+1),this[h]=y&255,h+1},s.prototype.writeInt16LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,32767,-32768),this[h]=y&255,this[h+1]=y>>>8,h+2},s.prototype.writeInt16BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,32767,-32768),this[h]=y>>>8,this[h+1]=y&255,h+2},s.prototype.writeInt32LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,2147483647,-2147483648),this[h]=y&255,this[h+1]=y>>>8,this[h+2]=y>>>16,this[h+3]=y>>>24,h+4},s.prototype.writeInt32BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,2147483647,-2147483648),y<0&&(y=4294967295+y+1),this[h]=y>>>24,this[h+1]=y>>>16,this[h+2]=y>>>8,this[h+3]=y&255,h+4},s.prototype.writeBigInt64LE=J(function(y,h=0){return O(this,y,h,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=J(function(y,h=0){return ie(this,y,h,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function me(y,h,f,g,w,C){if(f+g>y.length)throw new RangeError("Index out of range");if(f<0)throw new RangeError("Index out of range")}function ve(y,h,f,g,w){return h=+h,f=f>>>0,w||me(y,h,f,4),t.write(y,h,f,g,23,4),f+4}s.prototype.writeFloatLE=function(y,h,f){return ve(this,y,h,!0,f)},s.prototype.writeFloatBE=function(y,h,f){return ve(this,y,h,!1,f)};function ye(y,h,f,g,w){return h=+h,f=f>>>0,w||me(y,h,f,8),t.write(y,h,f,g,52,8),f+8}s.prototype.writeDoubleLE=function(y,h,f){return ye(this,y,h,!0,f)},s.prototype.writeDoubleBE=function(y,h,f){return ye(this,y,h,!1,f)},s.prototype.copy=function(y,h,f,g){if(!s.isBuffer(y))throw new TypeError("argument should be a Buffer");if(f||(f=0),!g&&g!==0&&(g=this.length),h>=y.length&&(h=y.length),h||(h=0),g>0&&g<f&&(g=f),g===f||y.length===0||this.length===0)return 0;if(h<0)throw new RangeError("targetStart out of bounds");if(f<0||f>=this.length)throw new RangeError("Index out of range");if(g<0)throw new RangeError("sourceEnd out of bounds");g>this.length&&(g=this.length),y.length-h<g-f&&(g=y.length-h+f);let w=g-f;return this===y&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(h,f,g):Uint8Array.prototype.set.call(y,this.subarray(f,g),h),w},s.prototype.fill=function(y,h,f,g){if(typeof y=="string"){if(typeof h=="string"?(g=h,h=0,f=this.length):typeof f=="string"&&(g=f,f=this.length),g!==void 0&&typeof g!="string")throw new TypeError("encoding must be a string");if(typeof g=="string"&&!s.isEncoding(g))throw new TypeError("Unknown encoding: "+g);if(y.length===1){let C=y.charCodeAt(0);(g==="utf8"&&C<128||g==="latin1")&&(y=C)}}else typeof y=="number"?y=y&255:typeof y=="boolean"&&(y=Number(y));if(h<0||this.length<h||this.length<f)throw new RangeError("Out of range index");if(f<=h)return this;h=h>>>0,f=f===void 0?this.length:f>>>0,y||(y=0);let w;if(typeof y=="number")for(w=h;w<f;++w)this[w]=y;else{let C=s.isBuffer(y)?y:s.from(y,g),V=C.length;if(V===0)throw new TypeError('The value "'+y+'" is invalid for argument "value"');for(w=0;w<f-h;++w)this[w+h]=C[w%V]}return this};let q={};function F(y,h,f){q[y]=class extends f{constructor(){super(),Object.defineProperty(this,"message",{value:h.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${y}]`,this.stack,delete this.name}get code(){return y}set code(g){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:g,writable:!0})}toString(){return`${this.name} [${y}]: ${this.message}`}}}F("ERR_BUFFER_OUT_OF_BOUNDS",function(y){return y?`${y} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),F("ERR_INVALID_ARG_TYPE",function(y,h){return`The "${y}" argument must be of type number. Received type ${typeof h}`},TypeError),F("ERR_OUT_OF_RANGE",function(y,h,f){let g=`The value of "${y}" is out of range.`,w=f;return Number.isInteger(f)&&Math.abs(f)>2**32?w=X(String(f)):typeof f=="bigint"&&(w=String(f),(f>BigInt(2)**BigInt(32)||f<-(BigInt(2)**BigInt(32)))&&(w=X(w)),w+="n"),g+=` It must be ${h}. Received ${w}`,g},RangeError);function X(y){let h="",f=y.length,g=y[0]==="-"?1:0;for(;f>=g+4;f-=3)h=`_${y.slice(f-3,f)}${h}`;return`${y.slice(0,f)}${h}`}function he(y,h,f){Z(h,"offset"),(y[h]===void 0||y[h+f]===void 0)&&v(h,y.length-(f+1))}function ce(y,h,f,g,w,C){if(y>f||y<h){let V=typeof h=="bigint"?"n":"",fe;throw h===0||h===BigInt(0)?fe=`>= 0${V} and < 2${V} ** ${(C+1)*8}${V}`:fe=`>= -(2${V} ** ${(C+1)*8-1}${V}) and < 2 ** ${(C+1)*8-1}${V}`,new q.ERR_OUT_OF_RANGE("value",fe,y)}he(g,w,C)}function Z(y,h){if(typeof y!="number")throw new q.ERR_INVALID_ARG_TYPE(h,"number",y)}function v(y,h,f){throw Math.floor(y)!==y?(Z(y,f),new q.ERR_OUT_OF_RANGE("offset","an integer",y)):h<0?new q.ERR_BUFFER_OUT_OF_BOUNDS:new q.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${h}`,y)}let A=/[^+/0-9A-Za-z-_]/g;function E(y){if(y=y.split("=")[0],y=y.trim().replace(A,""),y.length<2)return"";for(;y.length%4!==0;)y=y+"=";return y}function k(y,h){h=h||1/0;let f,g=y.length,w=null,C=[];for(let V=0;V<g;++V){if(f=y.charCodeAt(V),f>55295&&f<57344){if(!w){if(f>56319){(h-=3)>-1&&C.push(239,191,189);continue}else if(V+1===g){(h-=3)>-1&&C.push(239,191,189);continue}w=f;continue}if(f<56320){(h-=3)>-1&&C.push(239,191,189),w=f;continue}f=(w-55296<<10|f-56320)+65536}else w&&(h-=3)>-1&&C.push(239,191,189);if(w=null,f<128){if((h-=1)<0)break;C.push(f)}else if(f<2048){if((h-=2)<0)break;C.push(f>>6|192,f&63|128)}else if(f<65536){if((h-=3)<0)break;C.push(f>>12|224,f>>6&63|128,f&63|128)}else if(f<1114112){if((h-=4)<0)break;C.push(f>>18|240,f>>12&63|128,f>>6&63|128,f&63|128)}else throw new Error("Invalid code point")}return C}function M(y){let h=[];for(let f=0;f<y.length;++f)h.push(y.charCodeAt(f)&255);return h}function ee(y,h){let f,g,w,C=[];for(let V=0;V<y.length&&!((h-=2)<0);++V)f=y.charCodeAt(V),g=f>>8,w=f%256,C.push(w),C.push(g);return C}function te(y){return e.toByteArray(E(y))}function $(y,h,f,g){let w;for(w=0;w<g&&!(w+f>=h.length||w>=y.length);++w)h[w+f]=y[w];return w}function K(y,h){return y instanceof h||y!=null&&y.constructor!=null&&y.constructor.name!=null&&y.constructor.name===h.name}function I(y){return y!==y}let W=function(){let y="0123456789abcdef",h=new Array(256);for(let f=0;f<16;++f){let g=f*16;for(let w=0;w<16;++w)h[g+w]=y[f]+y[w]}return h}();function J(y){return typeof BigInt>"u"?le:y}function le(){throw new Error("BigInt not supported")}return vn}var to,fh,us,hh,vn,dh,Hr,cl,kb,Nb,wt=_t(()=>{_e(),we(),be(),to={},fh=!1,us={},hh=!1,vn={},dh=!1,Hr=KR(),Hr.Buffer,Hr.SlowBuffer,Hr.INSPECT_MAX_BYTES,Hr.kMaxLength,cl=Hr.Buffer,kb=Hr.INSPECT_MAX_BYTES,Nb=Hr.kMaxLength}),we=_t(()=>{wt()}),YR=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(r){this.aliasToTopic={},this.max=r}put(r,n){return n===0||n>this.max?!1:(this.aliasToTopic[n]=r,this.length=Object.keys(this.aliasToTopic).length,!0)}getTopicByAlias(r){return this.aliasToTopic[r]}clear(){this.aliasToTopic={}}};e.default=t}),ft=Ae((e,t)=>{_e(),we(),be(),t.exports={ArrayIsArray(r){return Array.isArray(r)},ArrayPrototypeIncludes(r,n){return r.includes(n)},ArrayPrototypeIndexOf(r,n){return r.indexOf(n)},ArrayPrototypeJoin(r,n){return r.join(n)},ArrayPrototypeMap(r,n){return r.map(n)},ArrayPrototypePop(r,n){return r.pop(n)},ArrayPrototypePush(r,n){return r.push(n)},ArrayPrototypeSlice(r,n,o){return r.slice(n,o)},Error,FunctionPrototypeCall(r,n,...o){return r.call(n,...o)},FunctionPrototypeSymbolHasInstance(r,n){return Function.prototype[Symbol.hasInstance].call(r,n)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(r,n){return Object.defineProperties(r,n)},ObjectDefineProperty(r,n,o){return Object.defineProperty(r,n,o)},ObjectGetOwnPropertyDescriptor(r,n){return Object.getOwnPropertyDescriptor(r,n)},ObjectKeys(r){return Object.keys(r)},ObjectSetPrototypeOf(r,n){return Object.setPrototypeOf(r,n)},Promise,PromisePrototypeCatch(r,n){return r.catch(n)},PromisePrototypeThen(r,n,o){return r.then(n,o)},PromiseReject(r){return Promise.reject(r)},ReflectApply:Reflect.apply,RegExpPrototypeTest(r,n){return r.test(n)},SafeSet:Set,String,StringPrototypeSlice(r,n,o){return r.slice(n,o)},StringPrototypeToLowerCase(r){return r.toLowerCase()},StringPrototypeToUpperCase(r){return r.toUpperCase()},StringPrototypeTrim(r){return r.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,TypedArrayPrototypeSet(r,n,o){return r.set(n,o)},Uint8Array}}),nn=Ae((e,t)=>{_e(),we(),be();var r=(wt(),ze(bt)),n=Object.getPrototypeOf(async function(){}).constructor,o=globalThis.Blob||r.Blob,i=typeof o<"u"?function(a){return a instanceof o}:function(a){return!1},s=class extends Error{constructor(a){if(!Array.isArray(a))throw new TypeError(`Expected input to be an Array, got ${typeof a}`);let l="";for(let u=0;u<a.length;u++)l+=`    ${a[u].stack}
-`;super(l),this.name="AggregateError",this.errors=a}};t.exports={AggregateError:s,kEmptyObject:Object.freeze({}),once(a){let l=!1;return function(...u){l||(l=!0,a.apply(this,u))}},createDeferredPromise:function(){let a,l;return{promise:new Promise((u,c)=>{a=u,l=c}),resolve:a,reject:l}},promisify(a){return new Promise((l,u)=>{a((c,...d)=>c?u(c):l(...d))})},debuglog(){return function(){}},format(a,...l){return a.replace(/%([sdifj])/g,function(...[u,c]){let d=l.shift();return c==="f"?d.toFixed(6):c==="j"?JSON.stringify(d):c==="s"&&typeof d=="object"?`${d.constructor!==Object?d.constructor.name:""} {}`.trim():d.toString()})},inspect(a){switch(typeof a){case"string":if(a.includes("'"))if(a.includes('"')){if(!a.includes("`")&&!a.includes("${"))return`\`${a}\``}else return`"${a}"`;return`'${a}'`;case"number":return isNaN(a)?"NaN":Object.is(a,-0)?String(a):a;case"bigint":return`${String(a)}n`;case"boolean":case"undefined":return String(a);case"object":return"{}"}},types:{isAsyncFunction(a){return a instanceof n},isArrayBufferView(a){return ArrayBuffer.isView(a)}},isBlob:i},t.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),Yd=Ae((e,t)=>{_e(),we(),be();var{AbortController:r,AbortSignal:n}=typeof self<"u"?self:typeof window<"u"?window:void 0;t.exports=r,t.exports.AbortSignal=n,t.exports.default=r}),Ft=Ae((e,t)=>{_e(),we(),be();var{format:r,inspect:n,AggregateError:o}=nn(),i=globalThis.AggregateError||o,s=Symbol("kIsNodeError"),a=["string","function","number","object","Function","Object","boolean","bigint","symbol"],l=/^([A-Z][a-z0-9]*)+$/,u="__node_internal_",c={};function d(R,S){if(!R)throw new c.ERR_INTERNAL_ASSERTION(S)}function p(R){let S="",D=R.length,U=R[0]==="-"?1:0;for(;D>=U+4;D-=3)S=`_${R.slice(D-3,D)}${S}`;return`${R.slice(0,D)}${S}`}function m(R,S,D){if(typeof S=="function")return d(S.length<=D.length,`Code: ${R}; The provided arguments length (${D.length}) does not match the required ones (${S.length}).`),S(...D);let U=(S.match(/%[dfijoOs]/g)||[]).length;return d(U===D.length,`Code: ${R}; The provided arguments length (${D.length}) does not match the required ones (${U}).`),D.length===0?S:r(S,...D)}function _(R,S,D){D||(D=Error);class U extends D{constructor(...L){super(m(R,S,L))}toString(){return`${this.name} [${R}]: ${this.message}`}}Object.defineProperties(U.prototype,{name:{value:D.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${R}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),U.prototype.code=R,U.prototype[s]=!0,c[R]=U}function b(R){let S=u+R.name;return Object.defineProperty(R,"name",{value:S}),R}function T(R,S){if(R&&S&&R!==S){if(Array.isArray(S.errors))return S.errors.push(R),S;let D=new i([S,R],S.message);return D.code=S.code,D}return R||S}var N=class extends Error{constructor(R="The operation was aborted",S=void 0){if(S!==void 0&&typeof S!="object")throw new c.ERR_INVALID_ARG_TYPE("options","Object",S);super(R,S),this.code="ABORT_ERR",this.name="AbortError"}};_("ERR_ASSERTION","%s",Error),_("ERR_INVALID_ARG_TYPE",(R,S,D)=>{d(typeof R=="string","'name' must be a string"),Array.isArray(S)||(S=[S]);let U="The ";R.endsWith(" argument")?U+=`${R} `:U+=`"${R}" ${R.includes(".")?"property":"argument"} `,U+="must be ";let x=[],L=[],j=[];for(let se of S)d(typeof se=="string","All expected entries have to be of type string"),a.includes(se)?x.push(se.toLowerCase()):l.test(se)?L.push(se):(d(se!=="object",'The value "object" should be written as "Object"'),j.push(se));if(L.length>0){let se=x.indexOf("object");se!==-1&&(x.splice(x,se,1),L.push("Object"))}if(x.length>0){switch(x.length){case 1:U+=`of type ${x[0]}`;break;case 2:U+=`one of type ${x[0]} or ${x[1]}`;break;default:{let se=x.pop();U+=`one of type ${x.join(", ")}, or ${se}`}}(L.length>0||j.length>0)&&(U+=" or ")}if(L.length>0){switch(L.length){case 1:U+=`an instance of ${L[0]}`;break;case 2:U+=`an instance of ${L[0]} or ${L[1]}`;break;default:{let se=L.pop();U+=`an instance of ${L.join(", ")}, or ${se}`}}j.length>0&&(U+=" or ")}switch(j.length){case 0:break;case 1:j[0].toLowerCase()!==j[0]&&(U+="an "),U+=`${j[0]}`;break;case 2:U+=`one of ${j[0]} or ${j[1]}`;break;default:{let se=j.pop();U+=`one of ${j.join(", ")}, or ${se}`}}if(D==null)U+=`. Received ${D}`;else if(typeof D=="function"&&D.name)U+=`. Received function ${D.name}`;else if(typeof D=="object"){var Y;if((Y=D.constructor)!==null&&Y!==void 0&&Y.name)U+=`. Received an instance of ${D.constructor.name}`;else{let se=n(D,{depth:-1});U+=`. Received ${se}`}}else{let se=n(D,{colors:!1});se.length>25&&(se=`${se.slice(0,25)}...`),U+=`. Received type ${typeof D} (${se})`}return U},TypeError),_("ERR_INVALID_ARG_VALUE",(R,S,D="is invalid")=>{let U=n(S);return U.length>128&&(U=U.slice(0,128)+"..."),`The ${R.includes(".")?"property":"argument"} '${R}' ${D}. Received ${U}`},TypeError),_("ERR_INVALID_RETURN_VALUE",(R,S,D)=>{var U;let x=D!=null&&(U=D.constructor)!==null&&U!==void 0&&U.name?`instance of ${D.constructor.name}`:`type ${typeof D}`;return`Expected ${R} to be returned from the "${S}" function but got ${x}.`},TypeError),_("ERR_MISSING_ARGS",(...R)=>{d(R.length>0,"At least one arg needs to be specified");let S,D=R.length;switch(R=(Array.isArray(R)?R:[R]).map(U=>`"${U}"`).join(" or "),D){case 1:S+=`The ${R[0]} argument`;break;case 2:S+=`The ${R[0]} and ${R[1]} arguments`;break;default:{let U=R.pop();S+=`The ${R.join(", ")}, and ${U} arguments`}break}return`${S} must be specified`},TypeError),_("ERR_OUT_OF_RANGE",(R,S,D)=>{d(S,'Missing "range" argument');let U;return Number.isInteger(D)&&Math.abs(D)>2**32?U=p(String(D)):typeof D=="bigint"?(U=String(D),(D>2n**32n||D<-(2n**32n))&&(U=p(U)),U+="n"):U=n(D),`The value of "${R}" is out of range. It must be ${S}. Received ${U}`},RangeError),_("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),_("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),_("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),_("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),_("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),_("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),_("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),_("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),_("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),_("ERR_STREAM_WRITE_AFTER_END","write after end",Error),_("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),t.exports={AbortError:N,aggregateTwoErrors:b(T),hideStackFrames:b,codes:c}}),Zl=Ae((e,t)=>{_e(),we(),be();var{ArrayIsArray:r,ArrayPrototypeIncludes:n,ArrayPrototypeJoin:o,ArrayPrototypeMap:i,NumberIsInteger:s,NumberIsNaN:a,NumberMAX_SAFE_INTEGER:l,NumberMIN_SAFE_INTEGER:u,NumberParseInt:c,ObjectPrototypeHasOwnProperty:d,RegExpPrototypeExec:p,String:m,StringPrototypeToUpperCase:_,StringPrototypeTrim:b}=ft(),{hideStackFrames:T,codes:{ERR_SOCKET_BAD_PORT:N,ERR_INVALID_ARG_TYPE:R,ERR_INVALID_ARG_VALUE:S,ERR_OUT_OF_RANGE:D,ERR_UNKNOWN_SIGNAL:U}}=Ft(),{normalizeEncoding:x}=nn(),{isAsyncFunction:L,isArrayBufferView:j}=nn().types,Y={};function se($){return $===($|0)}function re($){return $===$>>>0}var P=/^[0-7]+$/,B="must be a 32-bit unsigned integer or an octal string";function oe($,K,I){if(typeof $>"u"&&($=I),typeof $=="string"){if(p(P,$)===null)throw new S(K,$,B);$=c($,8)}return ae($,K),$}var ne=T(($,K,I=u,W=l)=>{if(typeof $!="number")throw new R(K,"number",$);if(!s($))throw new D(K,"an integer",$);if($<I||$>W)throw new D(K,`>= ${I} && <= ${W}`,$)}),ue=T(($,K,I=-2147483648,W=2147483647)=>{if(typeof $!="number")throw new R(K,"number",$);if(!s($))throw new D(K,"an integer",$);if($<I||$>W)throw new D(K,`>= ${I} && <= ${W}`,$)}),ae=T(($,K,I=!1)=>{if(typeof $!="number")throw new R(K,"number",$);if(!s($))throw new D(K,"an integer",$);let W=I?1:0,J=4294967295;if($<W||$>J)throw new D(K,`>= ${W} && <= ${J}`,$)});function z($,K){if(typeof $!="string")throw new R(K,"string",$)}function pe($,K,I=void 0,W){if(typeof $!="number")throw new R(K,"number",$);if(I!=null&&$<I||W!=null&&$>W||(I!=null||W!=null)&&a($))throw new D(K,`${I!=null?`>= ${I}`:""}${I!=null&&W!=null?" && ":""}${W!=null?`<= ${W}`:""}`,$)}var de=T(($,K,I)=>{if(!n(I,$)){let W="must be one of: "+o(i(I,J=>typeof J=="string"?`'${J}'`:m(J)),", ");throw new S(K,$,W)}});function ge($,K){if(typeof $!="boolean")throw new R(K,"boolean",$)}function O($,K,I){return $==null||!d($,K)?I:$[K]}var ie=T(($,K,I=null)=>{let W=O(I,"allowArray",!1),J=O(I,"allowFunction",!1);if(!O(I,"nullable",!1)&&$===null||!W&&r($)||typeof $!="object"&&(!J||typeof $!="function"))throw new R(K,"Object",$)}),me=T(($,K)=>{if($!=null&&typeof $!="object"&&typeof $!="function")throw new R(K,"a dictionary",$)}),ve=T(($,K,I=0)=>{if(!r($))throw new R(K,"Array",$);if($.length<I){let W=`must be longer than ${I}`;throw new S(K,$,W)}});function ye($,K){ve($,K);for(let I=0;I<$.length;I++)z($[I],`${K}[${I}]`)}function q($,K){ve($,K);for(let I=0;I<$.length;I++)ge($[I],`${K}[${I}]`)}function F($,K="signal"){if(z($,K),Y[$]===void 0)throw Y[_($)]!==void 0?new U($+" (signals must use all capital letters)"):new U($)}var X=T(($,K="buffer")=>{if(!j($))throw new R(K,["Buffer","TypedArray","DataView"],$)});function he($,K){let I=x(K),W=$.length;if(I==="hex"&&W%2!==0)throw new S("encoding",K,`is invalid for data of length ${W}`)}function ce($,K="Port",I=!0){if(typeof $!="number"&&typeof $!="string"||typeof $=="string"&&b($).length===0||+$!==+$>>>0||$>65535||$===0&&!I)throw new N(K,$,I);return $|0}var Z=T(($,K)=>{if($!==void 0&&($===null||typeof $!="object"||!("aborted"in $)))throw new R(K,"AbortSignal",$)}),v=T(($,K)=>{if(typeof $!="function")throw new R(K,"Function",$)}),A=T(($,K)=>{if(typeof $!="function"||L($))throw new R(K,"Function",$)}),E=T(($,K)=>{if($!==void 0)throw new R(K,"undefined",$)});function k($,K,I){if(!n(I,$))throw new R(K,`('${o(I,"|")}')`,$)}var M=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function ee($,K){if(typeof $>"u"||!p(M,$))throw new S(K,$,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function te($){if(typeof $=="string")return ee($,"hints"),$;if(r($)){let K=$.length,I="";if(K===0)return I;for(let W=0;W<K;W++){let J=$[W];ee(J,"hints"),I+=J,W!==K-1&&(I+=", ")}return I}throw new S("hints",$,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}t.exports={isInt32:se,isUint32:re,parseFileMode:oe,validateArray:ve,validateStringArray:ye,validateBooleanArray:q,validateBoolean:ge,validateBuffer:X,validateDictionary:me,validateEncoding:he,validateFunction:v,validateInt32:ue,validateInteger:ne,validateNumber:pe,validateObject:ie,validateOneOf:de,validatePlainFunction:A,validatePort:ce,validateSignalName:F,validateString:z,validateUint32:ae,validateUndefined:E,validateUnion:k,validateAbortSignal:Z,validateLinkHeaderValue:te}}),Bi=Ae((e,t)=>{_e(),we(),be();var r=t.exports={},n,o;function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?n=setTimeout:n=i}catch{n=i}try{typeof clearTimeout=="function"?o=clearTimeout:o=s}catch{o=s}})();function a(N){if(n===setTimeout)return setTimeout(N,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(N,0);try{return n(N,0)}catch{try{return n.call(null,N,0)}catch{return n.call(this,N,0)}}}function l(N){if(o===clearTimeout)return clearTimeout(N);if((o===s||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(N);try{return o(N)}catch{try{return o.call(null,N)}catch{return o.call(this,N)}}}var u=[],c=!1,d,p=-1;function m(){!c||!d||(c=!1,d.length?u=d.concat(u):p=-1,u.length&&_())}function _(){if(!c){var N=a(m);c=!0;for(var R=u.length;R;){for(d=u,u=[];++p<R;)d&&d[p].run();p=-1,R=u.length}d=null,c=!1,l(N)}}r.nextTick=function(N){var R=new Array(arguments.length-1);if(arguments.length>1)for(var S=1;S<arguments.length;S++)R[S-1]=arguments[S];u.push(new b(N,R)),u.length===1&&!c&&a(_)};function b(N,R){this.fun=N,this.array=R}b.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={};function T(){}r.on=T,r.addListener=T,r.once=T,r.off=T,r.removeListener=T,r.removeAllListeners=T,r.emit=T,r.prependListener=T,r.prependOnceListener=T,r.listeners=function(N){return[]},r.binding=function(N){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(N){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}}),pn=Ae((e,t)=>{_e(),we(),be();var{Symbol:r,SymbolAsyncIterator:n,SymbolIterator:o,SymbolFor:i}=ft(),s=r("kDestroyed"),a=r("kIsErrored"),l=r("kIsReadable"),u=r("kIsDisturbed"),c=i("nodejs.webstream.isClosedPromise"),d=i("nodejs.webstream.controllerErrorFunction");function p(O,ie=!1){var me;return!!(O&&typeof O.pipe=="function"&&typeof O.on=="function"&&(!ie||typeof O.pause=="function"&&typeof O.resume=="function")&&(!O._writableState||((me=O._readableState)===null||me===void 0?void 0:me.readable)!==!1)&&(!O._writableState||O._readableState))}function m(O){var ie;return!!(O&&typeof O.write=="function"&&typeof O.on=="function"&&(!O._readableState||((ie=O._writableState)===null||ie===void 0?void 0:ie.writable)!==!1))}function _(O){return!!(O&&typeof O.pipe=="function"&&O._readableState&&typeof O.on=="function"&&typeof O.write=="function")}function b(O){return O&&(O._readableState||O._writableState||typeof O.write=="function"&&typeof O.on=="function"||typeof O.pipe=="function"&&typeof O.on=="function")}function T(O){return!!(O&&!b(O)&&typeof O.pipeThrough=="function"&&typeof O.getReader=="function"&&typeof O.cancel=="function")}function N(O){return!!(O&&!b(O)&&typeof O.getWriter=="function"&&typeof O.abort=="function")}function R(O){return!!(O&&!b(O)&&typeof O.readable=="object"&&typeof O.writable=="object")}function S(O){return T(O)||N(O)||R(O)}function D(O,ie){return O==null?!1:ie===!0?typeof O[n]=="function":ie===!1?typeof O[o]=="function":typeof O[n]=="function"||typeof O[o]=="function"}function U(O){if(!b(O))return null;let ie=O._writableState,me=O._readableState,ve=ie||me;return!!(O.destroyed||O[s]||ve!=null&&ve.destroyed)}function x(O){if(!m(O))return null;if(O.writableEnded===!0)return!0;let ie=O._writableState;return ie!=null&&ie.errored?!1:typeof(ie==null?void 0:ie.ended)!="boolean"?null:ie.ended}function L(O,ie){if(!m(O))return null;if(O.writableFinished===!0)return!0;let me=O._writableState;return me!=null&&me.errored?!1:typeof(me==null?void 0:me.finished)!="boolean"?null:!!(me.finished||ie===!1&&me.ended===!0&&me.length===0)}function j(O){if(!p(O))return null;if(O.readableEnded===!0)return!0;let ie=O._readableState;return!ie||ie.errored?!1:typeof(ie==null?void 0:ie.ended)!="boolean"?null:ie.ended}function Y(O,ie){if(!p(O))return null;let me=O._readableState;return me!=null&&me.errored?!1:typeof(me==null?void 0:me.endEmitted)!="boolean"?null:!!(me.endEmitted||ie===!1&&me.ended===!0&&me.length===0)}function se(O){return O&&O[l]!=null?O[l]:typeof(O==null?void 0:O.readable)!="boolean"?null:U(O)?!1:p(O)&&O.readable&&!Y(O)}function re(O){return typeof(O==null?void 0:O.writable)!="boolean"?null:U(O)?!1:m(O)&&O.writable&&!x(O)}function P(O,ie){return b(O)?U(O)?!0:!((ie==null?void 0:ie.readable)!==!1&&se(O)||(ie==null?void 0:ie.writable)!==!1&&re(O)):null}function B(O){var ie,me;return b(O)?O.writableErrored?O.writableErrored:(ie=(me=O._writableState)===null||me===void 0?void 0:me.errored)!==null&&ie!==void 0?ie:null:null}function oe(O){var ie,me;return b(O)?O.readableErrored?O.readableErrored:(ie=(me=O._readableState)===null||me===void 0?void 0:me.errored)!==null&&ie!==void 0?ie:null:null}function ne(O){if(!b(O))return null;if(typeof O.closed=="boolean")return O.closed;let ie=O._writableState,me=O._readableState;return typeof(ie==null?void 0:ie.closed)=="boolean"||typeof(me==null?void 0:me.closed)=="boolean"?(ie==null?void 0:ie.closed)||(me==null?void 0:me.closed):typeof O._closed=="boolean"&&ue(O)?O._closed:null}function ue(O){return typeof O._closed=="boolean"&&typeof O._defaultKeepAlive=="boolean"&&typeof O._removedConnection=="boolean"&&typeof O._removedContLen=="boolean"}function ae(O){return typeof O._sent100=="boolean"&&ue(O)}function z(O){var ie;return typeof O._consuming=="boolean"&&typeof O._dumped=="boolean"&&((ie=O.req)===null||ie===void 0?void 0:ie.upgradeOrConnect)===void 0}function pe(O){if(!b(O))return null;let ie=O._writableState,me=O._readableState,ve=ie||me;return!ve&&ae(O)||!!(ve&&ve.autoDestroy&&ve.emitClose&&ve.closed===!1)}function de(O){var ie;return!!(O&&((ie=O[u])!==null&&ie!==void 0?ie:O.readableDidRead||O.readableAborted))}function ge(O){var ie,me,ve,ye,q,F,X,he,ce,Z;return!!(O&&((ie=(me=(ve=(ye=(q=(F=O[a])!==null&&F!==void 0?F:O.readableErrored)!==null&&q!==void 0?q:O.writableErrored)!==null&&ye!==void 0?ye:(X=O._readableState)===null||X===void 0?void 0:X.errorEmitted)!==null&&ve!==void 0?ve:(he=O._writableState)===null||he===void 0?void 0:he.errorEmitted)!==null&&me!==void 0?me:(ce=O._readableState)===null||ce===void 0?void 0:ce.errored)!==null&&ie!==void 0?ie:!((Z=O._writableState)===null||Z===void 0)&&Z.errored))}t.exports={kDestroyed:s,isDisturbed:de,kIsDisturbed:u,isErrored:ge,kIsErrored:a,isReadable:se,kIsReadable:l,kIsClosedPromise:c,kControllerErrorFunction:d,isClosed:ne,isDestroyed:U,isDuplexNodeStream:_,isFinished:P,isIterable:D,isReadableNodeStream:p,isReadableStream:T,isReadableEnded:j,isReadableFinished:Y,isReadableErrored:oe,isNodeStream:b,isWebStream:S,isWritable:re,isWritableNodeStream:m,isWritableStream:N,isWritableEnded:x,isWritableFinished:L,isWritableErrored:B,isServerRequest:z,isServerResponse:ae,willEmitClose:pe,isTransformStream:R}}),Wn=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{AbortError:n,codes:o}=Ft(),{ERR_INVALID_ARG_TYPE:i,ERR_STREAM_PREMATURE_CLOSE:s}=o,{kEmptyObject:a,once:l}=nn(),{validateAbortSignal:u,validateFunction:c,validateObject:d,validateBoolean:p}=Zl(),{Promise:m,PromisePrototypeThen:_}=ft(),{isClosed:b,isReadable:T,isReadableNodeStream:N,isReadableStream:R,isReadableFinished:S,isReadableErrored:D,isWritable:U,isWritableNodeStream:x,isWritableStream:L,isWritableFinished:j,isWritableErrored:Y,isNodeStream:se,willEmitClose:re,kIsClosedPromise:P}=pn();function B(z){return z.setHeader&&typeof z.abort=="function"}var oe=()=>{};function ne(z,pe,de){var ge,O;if(arguments.length===2?(de=pe,pe=a):pe==null?pe=a:d(pe,"options"),c(de,"callback"),u(pe.signal,"options.signal"),de=l(de),R(z)||L(z))return ue(z,pe,de);if(!se(z))throw new i("stream",["ReadableStream","WritableStream","Stream"],z);let ie=(ge=pe.readable)!==null&&ge!==void 0?ge:N(z),me=(O=pe.writable)!==null&&O!==void 0?O:x(z),ve=z._writableState,ye=z._readableState,q=()=>{z.writable||he()},F=re(z)&&N(z)===ie&&x(z)===me,X=j(z,!1),he=()=>{X=!0,z.destroyed&&(F=!1),!(F&&(!z.readable||ie))&&(!ie||ce)&&de.call(z)},ce=S(z,!1),Z=()=>{ce=!0,z.destroyed&&(F=!1),!(F&&(!z.writable||me))&&(!me||X)&&de.call(z)},v=te=>{de.call(z,te)},A=b(z),E=()=>{A=!0;let te=Y(z)||D(z);if(te&&typeof te!="boolean")return de.call(z,te);if(ie&&!ce&&N(z,!0)&&!S(z,!1))return de.call(z,new s);if(me&&!X&&!j(z,!1))return de.call(z,new s);de.call(z)},k=()=>{A=!0;let te=Y(z)||D(z);if(te&&typeof te!="boolean")return de.call(z,te);de.call(z)},M=()=>{z.req.on("finish",he)};B(z)?(z.on("complete",he),F||z.on("abort",E),z.req?M():z.on("request",M)):me&&!ve&&(z.on("end",q),z.on("close",q)),!F&&typeof z.aborted=="boolean"&&z.on("aborted",E),z.on("end",Z),z.on("finish",he),pe.error!==!1&&z.on("error",v),z.on("close",E),A?r.nextTick(E):ve!=null&&ve.errorEmitted||ye!=null&&ye.errorEmitted?F||r.nextTick(k):(!ie&&(!F||T(z))&&(X||U(z)===!1)||!me&&(!F||U(z))&&(ce||T(z)===!1)||ye&&z.req&&z.aborted)&&r.nextTick(k);let ee=()=>{de=oe,z.removeListener("aborted",E),z.removeListener("complete",he),z.removeListener("abort",E),z.removeListener("request",M),z.req&&z.req.removeListener("finish",he),z.removeListener("end",q),z.removeListener("close",q),z.removeListener("finish",he),z.removeListener("end",Z),z.removeListener("error",v),z.removeListener("close",E)};if(pe.signal&&!A){let te=()=>{let $=de;ee(),$.call(z,new n(void 0,{cause:pe.signal.reason}))};if(pe.signal.aborted)r.nextTick(te);else{let $=de;de=l((...K)=>{pe.signal.removeEventListener("abort",te),$.apply(z,K)}),pe.signal.addEventListener("abort",te)}}return ee}function ue(z,pe,de){let ge=!1,O=oe;if(pe.signal)if(O=()=>{ge=!0,de.call(z,new n(void 0,{cause:pe.signal.reason}))},pe.signal.aborted)r.nextTick(O);else{let me=de;de=l((...ve)=>{pe.signal.removeEventListener("abort",O),me.apply(z,ve)}),pe.signal.addEventListener("abort",O)}let ie=(...me)=>{ge||r.nextTick(()=>de.apply(z,me))};return _(z[P].promise,ie,ie),oe}function ae(z,pe){var de;let ge=!1;return pe===null&&(pe=a),(de=pe)!==null&&de!==void 0&&de.cleanup&&(p(pe.cleanup,"cleanup"),ge=pe.cleanup),new m((O,ie)=>{let me=ne(z,pe,ve=>{ge&&me(),ve?ie(ve):O()})})}t.exports=ne,t.exports.finished=ae}),jo=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{aggregateTwoErrors:n,codes:{ERR_MULTIPLE_CALLBACK:o},AbortError:i}=Ft(),{Symbol:s}=ft(),{kDestroyed:a,isDestroyed:l,isFinished:u,isServerRequest:c}=pn(),d=s("kDestroy"),p=s("kConstruct");function m(P,B,oe){P&&(P.stack,B&&!B.errored&&(B.errored=P),oe&&!oe.errored&&(oe.errored=P))}function _(P,B){let oe=this._readableState,ne=this._writableState,ue=ne||oe;return ne!=null&&ne.destroyed||oe!=null&&oe.destroyed?(typeof B=="function"&&B(),this):(m(P,ne,oe),ne&&(ne.destroyed=!0),oe&&(oe.destroyed=!0),ue.constructed?b(this,P,B):this.once(d,function(ae){b(this,n(ae,P),B)}),this)}function b(P,B,oe){let ne=!1;function ue(ae){if(ne)return;ne=!0;let z=P._readableState,pe=P._writableState;m(ae,pe,z),pe&&(pe.closed=!0),z&&(z.closed=!0),typeof oe=="function"&&oe(ae),ae?r.nextTick(T,P,ae):r.nextTick(N,P)}try{P._destroy(B||null,ue)}catch(ae){ue(ae)}}function T(P,B){R(P,B),N(P)}function N(P){let B=P._readableState,oe=P._writableState;oe&&(oe.closeEmitted=!0),B&&(B.closeEmitted=!0),(oe!=null&&oe.emitClose||B!=null&&B.emitClose)&&P.emit("close")}function R(P,B){let oe=P._readableState,ne=P._writableState;ne!=null&&ne.errorEmitted||oe!=null&&oe.errorEmitted||(ne&&(ne.errorEmitted=!0),oe&&(oe.errorEmitted=!0),P.emit("error",B))}function S(){let P=this._readableState,B=this._writableState;P&&(P.constructed=!0,P.closed=!1,P.closeEmitted=!1,P.destroyed=!1,P.errored=null,P.errorEmitted=!1,P.reading=!1,P.ended=P.readable===!1,P.endEmitted=P.readable===!1),B&&(B.constructed=!0,B.destroyed=!1,B.closed=!1,B.closeEmitted=!1,B.errored=null,B.errorEmitted=!1,B.finalCalled=!1,B.prefinished=!1,B.ended=B.writable===!1,B.ending=B.writable===!1,B.finished=B.writable===!1)}function D(P,B,oe){let ne=P._readableState,ue=P._writableState;if(ue!=null&&ue.destroyed||ne!=null&&ne.destroyed)return this;ne!=null&&ne.autoDestroy||ue!=null&&ue.autoDestroy?P.destroy(B):B&&(B.stack,ue&&!ue.errored&&(ue.errored=B),ne&&!ne.errored&&(ne.errored=B),oe?r.nextTick(R,P,B):R(P,B))}function U(P,B){if(typeof P._construct!="function")return;let oe=P._readableState,ne=P._writableState;oe&&(oe.constructed=!1),ne&&(ne.constructed=!1),P.once(p,B),!(P.listenerCount(p)>1)&&r.nextTick(x,P)}function x(P){let B=!1;function oe(ne){if(B){D(P,ne??new o);return}B=!0;let ue=P._readableState,ae=P._writableState,z=ae||ue;ue&&(ue.constructed=!0),ae&&(ae.constructed=!0),z.destroyed?P.emit(d,ne):ne?D(P,ne,!0):r.nextTick(L,P)}try{P._construct(ne=>{r.nextTick(oe,ne)})}catch(ne){r.nextTick(oe,ne)}}function L(P){P.emit(p)}function j(P){return(P==null?void 0:P.setHeader)&&typeof P.abort=="function"}function Y(P){P.emit("close")}function se(P,B){P.emit("error",B),r.nextTick(Y,P)}function re(P,B){!P||l(P)||(!B&&!u(P)&&(B=new i),c(P)?(P.socket=null,P.destroy(B)):j(P)?P.abort():j(P.req)?P.req.abort():typeof P.destroy=="function"?P.destroy(B):typeof P.close=="function"?P.close():B?r.nextTick(se,P,B):r.nextTick(Y,P),P.destroyed||(P[a]=!0))}t.exports={construct:U,destroyer:re,destroy:_,undestroy:S,errorOrDestroy:D}});function Ke(){Ke.init.call(this)}function Ba(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function Mb(e){return e._maxListeners===void 0?Ke.defaultMaxListeners:e._maxListeners}function em(e,t,r,n){var o,i,s,a;if(Ba(r),(i=e._events)===void 0?(i=e._events=Object.create(null),e._eventsCount=0):(i.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),s=i[t]),s===void 0)s=i[t]=r,++e._eventsCount;else if(typeof s=="function"?s=i[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(o=Mb(e))>0&&s.length>o&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,a=l,console&&console.warn&&console.warn(a)}return e}function zR(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function tm(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=zR.bind(n);return o.listener=r,n.wrapFn=o,o}function rm(e,t,r){var n=e._events;if(n===void 0)return[];var o=n[t];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?function(i){for(var s=new Array(i.length),a=0;a<s.length;++a)s[a]=i[a].listener||i[a];return s}(o):Pb(o,o.length)}function nm(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}function Pb(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}var im,om,zn,ec,tc,rc,Ht,sm=_t(()=>{_e(),we(),be(),zn=typeof Reflect=="object"?Reflect:null,ec=zn&&typeof zn.apply=="function"?zn.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)},om=zn&&typeof zn.ownKeys=="function"?zn.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)},tc=Number.isNaN||function(e){return e!=e},im=Ke,Ke.EventEmitter=Ke,Ke.prototype._events=void 0,Ke.prototype._eventsCount=0,Ke.prototype._maxListeners=void 0,rc=10,Object.defineProperty(Ke,"defaultMaxListeners",{enumerable:!0,get:function(){return rc},set:function(e){if(typeof e!="number"||e<0||tc(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");rc=e}}),Ke.init=function(){this._events!==void 0&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ke.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||tc(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},Ke.prototype.getMaxListeners=function(){return Mb(this)},Ke.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n=e==="error",o=this._events;if(o!==void 0)n=n&&o.error===void 0;else if(!n)return!1;if(n){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var s=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw s.context=i,s}var a=o[e];if(a===void 0)return!1;if(typeof a=="function")ec(a,this,t);else{var l=a.length,u=Pb(a,l);for(r=0;r<l;++r)ec(u[r],this,t)}return!0},Ke.prototype.addListener=function(e,t){return em(this,e,t,!1)},Ke.prototype.on=Ke.prototype.addListener,Ke.prototype.prependListener=function(e,t){return em(this,e,t,!0)},Ke.prototype.once=function(e,t){return Ba(t),this.on(e,tm(this,e,t)),this},Ke.prototype.prependOnceListener=function(e,t){return Ba(t),this.prependListener(e,tm(this,e,t)),this},Ke.prototype.removeListener=function(e,t){var r,n,o,i,s;if(Ba(t),(n=this._events)===void 0)return this;if((r=n[e])===void 0)return this;if(r===t||r.listener===t)--this._eventsCount==0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if(typeof r!="function"){for(o=-1,i=r.length-1;i>=0;i--)if(r[i]===t||r[i].listener===t){s=r[i].listener,o=i;break}if(o<0)return this;o===0?r.shift():function(a,l){for(;l+1<a.length;l++)a[l]=a[l+1];a.pop()}(r,o),r.length===1&&(n[e]=r[0]),n.removeListener!==void 0&&this.emit("removeListener",e,s||t)}return this},Ke.prototype.off=Ke.prototype.removeListener,Ke.prototype.removeAllListeners=function(e){var t,r,n;if((r=this._events)===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var o,i=Object.keys(r);for(n=0;n<i.length;++n)(o=i[n])!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(typeof(t=r[e])=="function")this.removeListener(e,t);else if(t!==void 0)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},Ke.prototype.listeners=function(e){return rm(this,e,!0)},Ke.prototype.rawListeners=function(e){return rm(this,e,!1)},Ke.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):nm.call(e,t)},Ke.prototype.listenerCount=nm,Ke.prototype.eventNames=function(){return this._eventsCount>0?om(this._events):[]},Ht=im,Ht.EventEmitter,Ht.defaultMaxListeners,Ht.init,Ht.listenerCount,Ht.EventEmitter,Ht.defaultMaxListeners,Ht.init,Ht.listenerCount}),Di={};Li(Di,{EventEmitter:()=>Lb,default:()=>Ht,defaultMaxListeners:()=>Bb,init:()=>Db,listenerCount:()=>$b,on:()=>Ub,once:()=>Fb});var Lb,Bb,Db,$b,Ub,Fb,Wo=_t(()=>{_e(),we(),be(),sm(),sm(),Ht.once=function(e,t){return new Promise((r,n)=>{function o(...s){i!==void 0&&e.removeListener("error",i),r(s)}let i;t!=="error"&&(i=s=>{e.removeListener(name,o),n(s)},e.once("error",i)),e.once(t,o)})},Ht.on=function(e,t){let r=[],n=[],o=null,i=!1,s={async next(){let u=r.shift();if(u)return createIterResult(u,!1);if(o){let c=Promise.reject(o);return o=null,c}return i?createIterResult(void 0,!0):new Promise((c,d)=>n.push({resolve:c,reject:d}))},async return(){e.removeListener(t,a),e.removeListener("error",l),i=!0;for(let u of n)u.resolve(createIterResult(void 0,!0));return createIterResult(void 0,!0)},throw(u){o=u,e.removeListener(t,a),e.removeListener("error",l)},[Symbol.asyncIterator](){return this}};return e.on(t,a),e.on("error",l),s;function a(...u){let c=n.shift();c?c.resolve(createIterResult(u,!1)):r.push(u)}function l(u){i=!0;let c=n.shift();c?c.reject(u):o=u,s.return()}},{EventEmitter:Lb,defaultMaxListeners:Bb,init:Db,listenerCount:$b,on:Ub,once:Fb}=Ht}),zd=Ae((e,t)=>{_e(),we(),be();var{ArrayIsArray:r,ObjectSetPrototypeOf:n}=ft(),{EventEmitter:o}=(Wo(),ze(Di));function i(a){o.call(this,a)}n(i.prototype,o.prototype),n(i,o),i.prototype.pipe=function(a,l){let u=this;function c(N){a.writable&&a.write(N)===!1&&u.pause&&u.pause()}u.on("data",c);function d(){u.readable&&u.resume&&u.resume()}a.on("drain",d),!a._isStdio&&(!l||l.end!==!1)&&(u.on("end",m),u.on("close",_));let p=!1;function m(){p||(p=!0,a.end())}function _(){p||(p=!0,typeof a.destroy=="function"&&a.destroy())}function b(N){T(),o.listenerCount(this,"error")===0&&this.emit("error",N)}s(u,"error",b),s(a,"error",b);function T(){u.removeListener("data",c),a.removeListener("drain",d),u.removeListener("end",m),u.removeListener("close",_),u.removeListener("error",b),a.removeListener("error",b),u.removeListener("end",T),u.removeListener("close",T),a.removeListener("close",T)}return u.on("end",T),u.on("close",T),a.on("close",T),a.emit("pipe",u),a};function s(a,l,u){if(typeof a.prependListener=="function")return a.prependListener(l,u);!a._events||!a._events[l]?a.on(l,u):r(a._events[l])?a._events[l].unshift(u):a._events[l]=[u,a._events[l]]}t.exports={Stream:i,prependListener:s}}),eu=Ae((e,t)=>{_e(),we(),be();var{AbortError:r,codes:n}=Ft(),{isNodeStream:o,isWebStream:i,kControllerErrorFunction:s}=pn(),a=Wn(),{ERR_INVALID_ARG_TYPE:l}=n,u=(c,d)=>{if(typeof c!="object"||!("aborted"in c))throw new l(d,"AbortSignal",c)};t.exports.addAbortSignal=function(c,d){if(u(c,"signal"),!o(d)&&!i(d))throw new l("stream",["ReadableStream","WritableStream","Stream"],d);return t.exports.addAbortSignalNoValidate(c,d)},t.exports.addAbortSignalNoValidate=function(c,d){if(typeof c!="object"||!("aborted"in c))return d;let p=o(d)?()=>{d.destroy(new r(void 0,{cause:c.reason}))}:()=>{d[s](new r(void 0,{cause:c.reason}))};return c.aborted?p():(c.addEventListener("abort",p),a(d,()=>c.removeEventListener("abort",p))),d}}),GR=Ae((e,t)=>{_e(),we(),be();var{StringPrototypeSlice:r,SymbolIterator:n,TypedArrayPrototypeSet:o,Uint8Array:i}=ft(),{Buffer:s}=(wt(),ze(bt)),{inspect:a}=nn();t.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(l){let u={data:l,next:null};this.length>0?this.tail.next=u:this.head=u,this.tail=u,++this.length}unshift(l){let u={data:l,next:this.head};this.length===0&&(this.tail=u),this.head=u,++this.length}shift(){if(this.length===0)return;let l=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,l}clear(){this.head=this.tail=null,this.length=0}join(l){if(this.length===0)return"";let u=this.head,c=""+u.data;for(;(u=u.next)!==null;)c+=l+u.data;return c}concat(l){if(this.length===0)return s.alloc(0);let u=s.allocUnsafe(l>>>0),c=this.head,d=0;for(;c;)o(u,c.data,d),d+=c.data.length,c=c.next;return u}consume(l,u){let c=this.head.data;if(l<c.length){let d=c.slice(0,l);return this.head.data=c.slice(l),d}return l===c.length?this.shift():u?this._getString(l):this._getBuffer(l)}first(){return this.head.data}*[n](){for(let l=this.head;l;l=l.next)yield l.data}_getString(l){let u="",c=this.head,d=0;do{let p=c.data;if(l>p.length)u+=p,l-=p.length;else{l===p.length?(u+=p,++d,c.next?this.head=c.next:this.head=this.tail=null):(u+=r(p,0,l),this.head=c,c.data=r(p,l));break}++d}while((c=c.next)!==null);return this.length-=d,u}_getBuffer(l){let u=s.allocUnsafe(l),c=l,d=this.head,p=0;do{let m=d.data;if(l>m.length)o(u,m,c-l),l-=m.length;else{l===m.length?(o(u,m,c-l),++p,d.next?this.head=d.next:this.head=this.tail=null):(o(u,new i(m.buffer,m.byteOffset,l),c-l),this.head=d,d.data=m.slice(l));break}++p}while((d=d.next)!==null);return this.length-=p,u}[Symbol.for("nodejs.util.inspect.custom")](l,u){return a(this,{...u,depth:0,customInspect:!1})}}}),Gd=Ae((e,t)=>{_e(),we(),be();var{MathFloor:r,NumberIsInteger:n}=ft(),{ERR_INVALID_ARG_VALUE:o}=Ft().codes;function i(l,u,c){return l.highWaterMark!=null?l.highWaterMark:u?l[c]:null}function s(l){return l?16:16*1024}function a(l,u,c,d){let p=i(u,d,c);if(p!=null){if(!n(p)||p<0){let m=d?`options.${c}`:"options.highWaterMark";throw new o(m,p)}return r(p)}return s(l.objectMode)}t.exports={getHighWaterMark:a,getDefaultHighWaterMark:s}});function am(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return r===-1&&(r=t),[r,r===t?0:4-r%4]}function QR(e,t,r){for(var n,o,i=[],s=t;s<r;s+=3)n=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]),i.push(cr[(o=n)>>18&63]+cr[o>>12&63]+cr[o>>6&63]+cr[63&o]);return i.join("")}function Yr(e){if(e>2147483647)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,Ee.prototype),t}function Ee(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return ph(e)}return jb(e,t,r)}function jb(e,t,r){if(typeof e=="string")return function(i,s){if(typeof s=="string"&&s!==""||(s="utf8"),!Ee.isEncoding(s))throw new TypeError("Unknown encoding: "+s);var a=0|Hb(i,s),l=Yr(a),u=l.write(i,s);return u!==a&&(l=l.slice(0,u)),l}(e,t);if(ArrayBuffer.isView(e))return nc(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(zr(e,ArrayBuffer)||e&&zr(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(zr(e,SharedArrayBuffer)||e&&zr(e.buffer,SharedArrayBuffer)))return XR(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return Ee.from(n,t,r);var o=function(i){if(Ee.isBuffer(i)){var s=0|Qd(i.length),a=Yr(s);return a.length===0||i.copy(a,0,0,s),a}if(i.length!==void 0)return typeof i.length!="number"||Xd(i.length)?Yr(0):nc(i);if(i.type==="Buffer"&&Array.isArray(i.data))return nc(i.data)}(e);if(o)return o;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return Ee.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function Wb(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function ph(e){return Wb(e),Yr(e<0?0:0|Qd(e))}function nc(e){for(var t=e.length<0?0:0|Qd(e.length),r=Yr(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function XR(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=t===void 0&&r===void 0?new Uint8Array(e):r===void 0?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,Ee.prototype),n}function Qd(e){if(e>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function Hb(e,t){if(Ee.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||zr(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return gh(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Yb(e).length;default:if(o)return n?-1:gh(e).length;t=(""+t).toLowerCase(),o=!0}}function JR(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return aO(this,t,r);case"utf8":case"utf-8":return qb(this,t,r);case"ascii":return oO(this,t,r);case"latin1":case"binary":return sO(this,t,r);case"base64":return iO(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return lO(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Gn(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function lm(e,t,r,n,o){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Xd(r=+r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if(typeof t=="string"&&(t=Ee.from(t,n)),Ee.isBuffer(t))return t.length===0?-1:um(e,t,r,n,o);if(typeof t=="number")return t&=255,typeof Uint8Array.prototype.indexOf=="function"?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):um(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function um(e,t,r,n,o){var i,s=1,a=e.length,l=t.length;if(n!==void 0&&((n=String(n).toLowerCase())==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;s=2,a/=2,l/=2,r/=2}function u(m,_){return s===1?m[_]:m.readUInt16BE(_*s)}if(o){var c=-1;for(i=r;i<a;i++)if(u(e,i)===u(t,c===-1?0:i-c)){if(c===-1&&(c=i),i-c+1===l)return c*s}else c!==-1&&(i-=i-c),c=-1}else for(r+l>a&&(r=a-l),i=r;i>=0;i--){for(var d=!0,p=0;p<l;p++)if(u(e,i+p)!==u(t,p)){d=!1;break}if(d)return i}return-1}function ZR(e,t,r,n){r=Number(r)||0;var o=e.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=t.length;n>i/2&&(n=i/2);for(var s=0;s<n;++s){var a=parseInt(t.substr(2*s,2),16);if(Xd(a))return s;e[r+s]=a}return s}function eO(e,t,r,n){return tu(gh(t,e.length-r),e,r,n)}function Vb(e,t,r,n){return tu(function(o){for(var i=[],s=0;s<o.length;++s)i.push(255&o.charCodeAt(s));return i}(t),e,r,n)}function tO(e,t,r,n){return Vb(e,t,r,n)}function rO(e,t,r,n){return tu(Yb(t),e,r,n)}function nO(e,t,r,n){return tu(function(o,i){for(var s,a,l,u=[],c=0;c<o.length&&!((i-=2)<0);++c)s=o.charCodeAt(c),a=s>>8,l=s%256,u.push(l),u.push(a);return u}(t,e.length-r),e,r,n)}function iO(e,t,r){return t===0&&r===e.length?fl.fromByteArray(e):fl.fromByteArray(e.slice(t,r))}function qb(e,t,r){r=Math.min(e.length,r);for(var n=[],o=t;o<r;){var i,s,a,l,u=e[o],c=null,d=u>239?4:u>223?3:u>191?2:1;if(o+d<=r)switch(d){case 1:u<128&&(c=u);break;case 2:(192&(i=e[o+1]))==128&&(l=(31&u)<<6|63&i)>127&&(c=l);break;case 3:i=e[o+1],s=e[o+2],(192&i)==128&&(192&s)==128&&(l=(15&u)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:i=e[o+1],s=e[o+2],a=e[o+3],(192&i)==128&&(192&s)==128&&(192&a)==128&&(l=(15&u)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(c=l)}c===null?(c=65533,d=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=d}return function(p){var m=p.length;if(m<=4096)return String.fromCharCode.apply(String,p);for(var _="",b=0;b<m;)_+=String.fromCharCode.apply(String,p.slice(b,b+=4096));return _}(n)}function oO(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(127&e[o]);return n}function sO(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(e[o]);return n}function aO(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var o="",i=t;i<r;++i)o+=Gb[e[i]];return o}function lO(e,t,r){for(var n=e.slice(t,r),o="",i=0;i<n.length;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function dt(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function Mt(e,t,r,n,o,i){if(!Ee.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||t<i)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function Kb(e,t,r,n,o,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function cm(e,t,r,n,o){return t=+t,r>>>=0,o||Kb(e,0,r,4),ai.write(e,t,r,n,23,4),r+4}function fm(e,t,r,n,o){return t=+t,r>>>=0,o||Kb(e,0,r,8),ai.write(e,t,r,n,52,8),r+8}function gh(e,t){var r;t=t||1/0;for(var n=e.length,o=null,i=[],s=0;s<n;++s){if((r=e.charCodeAt(s))>55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function Yb(e){return fl.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(zb,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(e))}function tu(e,t,r,n){for(var o=0;o<n&&!(o+r>=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function zr(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function Xd(e){return e!=e}function hm(e,t){for(var r in e)t[r]=e[r]}function Qn(e,t,r){return ar(e,t,r)}function Jo(e){var t;switch(this.encoding=function(r){var n=function(o){if(!o)return"utf8";for(var i;;)switch(o){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return o;default:if(i)return;o=(""+o).toLowerCase(),i=!0}}(r);if(typeof n!="string"&&(hl.isEncoding===mh||!mh(r)))throw new Error("Unknown encoding: "+r);return n||r}(e),this.encoding){case"utf16le":this.text=cO,this.end=fO,t=4;break;case"utf8":this.fillLast=uO,t=4;break;case"base64":this.text=hO,this.end=dO,t=3;break;default:return this.write=pO,this.end=gO,void 0}this.lastNeed=0,this.lastTotal=0,this.lastChar=hl.allocUnsafe(t)}function ic(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function uO(e){var t=this.lastTotal-this.lastNeed,r=function(n,o,i){if((192&o[0])!=128)return n.lastNeed=0,"�";if(n.lastNeed>1&&o.length>1){if((192&o[1])!=128)return n.lastNeed=1,"�";if(n.lastNeed>2&&o.length>2&&(192&o[2])!=128)return n.lastNeed=2,"�"}}(this,e);return r!==void 0?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length,void 0)}function cO(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function fO(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function hO(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function dO(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function pO(e){return e.toString(this.encoding)}function gO(e){return e&&e.length?this.write(e):""}var dm,cr,Wt,pm,ca,Xn,gm,mm,vr,fl,ai,oc,zb,Gb,Zo,es,ar,ym,oo,hl,mh,_m=_t(()=>{for(_e(),we(),be(),dm={byteLength:function(e){var t=am(e),r=t[0],n=t[1];return 3*(r+n)/4-n},toByteArray:function(e){var t,r,n=am(e),o=n[0],i=n[1],s=new pm(function(u,c,d){return 3*(c+d)/4-d}(0,o,i)),a=0,l=i>0?o-4:o;for(r=0;r<l;r+=4)t=Wt[e.charCodeAt(r)]<<18|Wt[e.charCodeAt(r+1)]<<12|Wt[e.charCodeAt(r+2)]<<6|Wt[e.charCodeAt(r+3)],s[a++]=t>>16&255,s[a++]=t>>8&255,s[a++]=255&t;return i===2&&(t=Wt[e.charCodeAt(r)]<<2|Wt[e.charCodeAt(r+1)]>>4,s[a++]=255&t),i===1&&(t=Wt[e.charCodeAt(r)]<<10|Wt[e.charCodeAt(r+1)]<<4|Wt[e.charCodeAt(r+2)]>>2,s[a++]=t>>8&255,s[a++]=255&t),s},fromByteArray:function(e){for(var t,r=e.length,n=r%3,o=[],i=0,s=r-n;i<s;i+=16383)o.push(QR(e,i,i+16383>s?s:i+16383));return n===1?(t=e[r-1],o.push(cr[t>>2]+cr[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],o.push(cr[t>>10]+cr[t>>4&63]+cr[t<<2&63]+"=")),o.join("")}},cr=[],Wt=[],pm=typeof Uint8Array<"u"?Uint8Array:Array,ca="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Xn=0,gm=ca.length;Xn<gm;++Xn)cr[Xn]=ca[Xn],Wt[ca.charCodeAt(Xn)]=Xn;Wt[45]=62,Wt[95]=63,mm={read:function(e,t,r,n,o){var i,s,a=8*o-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,m=e[t+d];for(d+=p,i=m&(1<<-c)-1,m>>=-c,c+=a;c>0;i=256*i+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=256*s+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:1/0*(m?-1:1);s+=Math.pow(2,n),i-=u}return(m?-1:1)*s*Math.pow(2,i-n)},write:function(e,t,r,n,o,i){var s,a,l,u=8*i-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+d>=1?p/l:p*Math.pow(2,1-d))*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s+=d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+m]=255&a,m+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+m]=255&s,m+=_,s/=256,u-=8);e[r+m-_]|=128*b}},vr={},fl=dm,ai=mm,oc=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null,vr.Buffer=Ee,vr.SlowBuffer=function(e){return+e!=e&&(e=0),Ee.alloc(+e)},vr.INSPECT_MAX_BYTES=50,vr.kMaxLength=2147483647,Ee.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch{return!1}}(),Ee.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Ee.prototype,"parent",{enumerable:!0,get:function(){if(Ee.isBuffer(this))return this.buffer}}),Object.defineProperty(Ee.prototype,"offset",{enumerable:!0,get:function(){if(Ee.isBuffer(this))return this.byteOffset}}),Ee.poolSize=8192,Ee.from=function(e,t,r){return jb(e,t,r)},Object.setPrototypeOf(Ee.prototype,Uint8Array.prototype),Object.setPrototypeOf(Ee,Uint8Array),Ee.alloc=function(e,t,r){return function(n,o,i){return Wb(n),n<=0?Yr(n):o!==void 0?typeof i=="string"?Yr(n).fill(o,i):Yr(n).fill(o):Yr(n)}(e,t,r)},Ee.allocUnsafe=function(e){return ph(e)},Ee.allocUnsafeSlow=function(e){return ph(e)},Ee.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==Ee.prototype},Ee.compare=function(e,t){if(zr(e,Uint8Array)&&(e=Ee.from(e,e.offset,e.byteLength)),zr(t,Uint8Array)&&(t=Ee.from(t,t.offset,t.byteLength)),!Ee.isBuffer(e)||!Ee.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,o=0,i=Math.min(r,n);o<i;++o)if(e[o]!==t[o]){r=e[o],n=t[o];break}return r<n?-1:n<r?1:0},Ee.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Ee.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return Ee.alloc(0);var r;if(t===void 0)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=Ee.allocUnsafe(t),o=0;for(r=0;r<e.length;++r){var i=e[r];if(zr(i,Uint8Array)&&(i=Ee.from(i)),!Ee.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,o),o+=i.length}return n},Ee.byteLength=Hb,Ee.prototype._isBuffer=!0,Ee.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)Gn(this,t,t+1);return this},Ee.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)Gn(this,t,t+3),Gn(this,t+1,t+2);return this},Ee.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)Gn(this,t,t+7),Gn(this,t+1,t+6),Gn(this,t+2,t+5),Gn(this,t+3,t+4);return this},Ee.prototype.toString=function(){var e=this.length;return e===0?"":arguments.length===0?qb(this,0,e):JR.apply(this,arguments)},Ee.prototype.toLocaleString=Ee.prototype.toString,Ee.prototype.equals=function(e){if(!Ee.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||Ee.compare(this,e)===0},Ee.prototype.inspect=function(){var e="",t=vr.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},oc&&(Ee.prototype[oc]=Ee.prototype.inspect),Ee.prototype.compare=function(e,t,r,n,o){if(zr(e,Uint8Array)&&(e=Ee.from(e,e.offset,e.byteLength)),!Ee.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),r===void 0&&(r=e?e.length:0),n===void 0&&(n=0),o===void 0&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0),a=Math.min(i,s),l=this.slice(n,o),u=e.slice(t,r),c=0;c<a;++c)if(l[c]!==u[c]){i=l[c],s=u[c];break}return i<s?-1:s<i?1:0},Ee.prototype.includes=function(e,t,r){return this.indexOf(e,t,r)!==-1},Ee.prototype.indexOf=function(e,t,r){return lm(this,e,t,r,!0)},Ee.prototype.lastIndexOf=function(e,t,r){return lm(this,e,t,r,!1)},Ee.prototype.write=function(e,t,r,n){if(t===void 0)n="utf8",r=this.length,t=0;else if(r===void 0&&typeof t=="string")n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,n===void 0&&(n="utf8")):(n=r,r=void 0)}var o=this.length-t;if((r===void 0||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return ZR(this,e,t,r);case"utf8":case"utf-8":return eO(this,e,t,r);case"ascii":return Vb(this,e,t,r);case"latin1":case"binary":return tO(this,e,t,r);case"base64":return rO(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return nO(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},Ee.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},Ee.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=t===void 0?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,Ee.prototype),n},Ee.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||dt(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n},Ee.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||dt(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},Ee.prototype.readUInt8=function(e,t){return e>>>=0,t||dt(e,1,this.length),this[e]},Ee.prototype.readUInt16LE=function(e,t){return e>>>=0,t||dt(e,2,this.length),this[e]|this[e+1]<<8},Ee.prototype.readUInt16BE=function(e,t){return e>>>=0,t||dt(e,2,this.length),this[e]<<8|this[e+1]},Ee.prototype.readUInt32LE=function(e,t){return e>>>=0,t||dt(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Ee.prototype.readUInt32BE=function(e,t){return e>>>=0,t||dt(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Ee.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||dt(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n>=(o*=128)&&(n-=Math.pow(2,8*t)),n},Ee.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||dt(e,t,this.length);for(var n=t,o=1,i=this[e+--n];n>0&&(o*=256);)i+=this[e+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},Ee.prototype.readInt8=function(e,t){return e>>>=0,t||dt(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Ee.prototype.readInt16LE=function(e,t){e>>>=0,t||dt(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Ee.prototype.readInt16BE=function(e,t){e>>>=0,t||dt(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Ee.prototype.readInt32LE=function(e,t){return e>>>=0,t||dt(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Ee.prototype.readInt32BE=function(e,t){return e>>>=0,t||dt(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Ee.prototype.readFloatLE=function(e,t){return e>>>=0,t||dt(e,4,this.length),ai.read(this,e,!0,23,4)},Ee.prototype.readFloatBE=function(e,t){return e>>>=0,t||dt(e,4,this.length),ai.read(this,e,!1,23,4)},Ee.prototype.readDoubleLE=function(e,t){return e>>>=0,t||dt(e,8,this.length),ai.read(this,e,!0,52,8)},Ee.prototype.readDoubleBE=function(e,t){return e>>>=0,t||dt(e,8,this.length),ai.read(this,e,!1,52,8)},Ee.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||Mt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[t]=255&e;++i<r&&(o*=256);)this[t+i]=e/o&255;return t+r},Ee.prototype.writeUIntBE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||Mt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+r},Ee.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,1,255,0),this[t]=255&e,t+1},Ee.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},Ee.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},Ee.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},Ee.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Ee.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);Mt(this,e,t,r,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i<r&&(s*=256);)e<0&&a===0&&this[t+i-1]!==0&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+r},Ee.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);Mt(this,e,t,r,o-1,-o)}var i=r-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&a===0&&this[t+i+1]!==0&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+r},Ee.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},Ee.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},Ee.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},Ee.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},Ee.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||Mt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Ee.prototype.writeFloatLE=function(e,t,r){return cm(this,e,t,!0,r)},Ee.prototype.writeFloatBE=function(e,t,r){return cm(this,e,t,!1,r)},Ee.prototype.writeDoubleLE=function(e,t,r){return fm(this,e,t,!0,r)},Ee.prototype.writeDoubleBE=function(e,t,r){return fm(this,e,t,!1,r)},Ee.prototype.copy=function(e,t,r,n){if(!Ee.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||n===0||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var o=n-r;if(this===e&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(t,r,n);else if(this===e&&r<t&&t<n)for(var i=o-1;i>=0;--i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return o},Ee.prototype.fill=function(e,t,r,n){if(typeof e=="string"){if(typeof t=="string"?(n=t,t=0,r=this.length):typeof r=="string"&&(n=r,r=this.length),n!==void 0&&typeof n!="string")throw new TypeError("encoding must be a string");if(typeof n=="string"&&!Ee.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(e.length===1){var o=e.charCodeAt(0);(n==="utf8"&&o<128||n==="latin1")&&(e=o)}}else typeof e=="number"?e&=255:typeof e=="boolean"&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var i;if(t>>>=0,r=r===void 0?this.length:r>>>0,e||(e=0),typeof e=="number")for(i=t;i<r;++i)this[i]=e;else{var s=Ee.isBuffer(e)?e:Ee.from(e,n),a=s.length;if(a===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=s[i%a]}return this},zb=/[^+/0-9A-Za-z-_]/g,Gb=function(){for(var e=new Array(256),t=0;t<16;++t)for(var r=16*t,n=0;n<16;++n)e[r+n]="0123456789abcdef"[t]+"0123456789abcdef"[n];return e}(),vr.Buffer,vr.INSPECT_MAX_BYTES,vr.kMaxLength,Zo={},es=vr,ar=es.Buffer,ar.from&&ar.alloc&&ar.allocUnsafe&&ar.allocUnsafeSlow?Zo=es:(hm(es,Zo),Zo.Buffer=Qn),Qn.prototype=Object.create(ar.prototype),hm(ar,Qn),Qn.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ar(e,t,r)},Qn.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=ar(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n},Qn.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ar(e)},Qn.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return es.SlowBuffer(e)},ym=Zo,oo={},hl=ym.Buffer,mh=hl.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},oo.StringDecoder=Jo,Jo.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if((t=this.fillLast(e))===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""},Jo.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},Jo.prototype.text=function(e,t){var r=function(o,i,s){var a=i.length-1;if(a<s)return 0;var l=ic(i[a]);return l>=0?(l>0&&(o.lastNeed=l-1),l):--a<s||l===-2?0:(l=ic(i[a]))>=0?(l>0&&(o.lastNeed=l-2),l):--a<s||l===-2?0:(l=ic(i[a]))>=0?(l>0&&(l===2?l=0:o.lastNeed=l-3),l):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},Jo.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},oo.StringDecoder,oo.StringDecoder}),Qb={};Li(Qb,{StringDecoder:()=>Xb,default:()=>oo});var Xb,mO=_t(()=>{_e(),we(),be(),_m(),_m(),Xb=oo.StringDecoder}),Jb=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{PromisePrototypeThen:n,SymbolAsyncIterator:o,SymbolIterator:i}=ft(),{Buffer:s}=(wt(),ze(bt)),{ERR_INVALID_ARG_TYPE:a,ERR_STREAM_NULL_VALUES:l}=Ft().codes;function u(c,d,p){let m;if(typeof d=="string"||d instanceof s)return new c({objectMode:!0,...p,read(){this.push(d),this.push(null)}});let _;if(d&&d[o])_=!0,m=d[o]();else if(d&&d[i])_=!1,m=d[i]();else throw new a("iterable",["Iterable"],d);let b=new c({objectMode:!0,highWaterMark:1,...p}),T=!1;b._read=function(){T||(T=!0,R())},b._destroy=function(S,D){n(N(S),()=>r.nextTick(D,S),U=>r.nextTick(D,U||S))};async function N(S){let D=S!=null,U=typeof m.throw=="function";if(D&&U){let{value:x,done:L}=await m.throw(S);if(await x,L)return}if(typeof m.return=="function"){let{value:x}=await m.return();await x}}async function R(){for(;;){try{let{value:S,done:D}=_?await m.next():m.next();if(D)b.push(null);else{let U=S&&typeof S.then=="function"?await S:S;if(U===null)throw T=!1,new l;if(b.push(U))continue;T=!1}}catch(S){b.destroy(S)}break}}return b}t.exports=u}),ru=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{ArrayPrototypeIndexOf:n,NumberIsInteger:o,NumberIsNaN:i,NumberParseInt:s,ObjectDefineProperties:a,ObjectKeys:l,ObjectSetPrototypeOf:u,Promise:c,SafeSet:d,SymbolAsyncIterator:p,Symbol:m}=ft();t.exports=O,O.ReadableState=ge;var{EventEmitter:_}=(Wo(),ze(Di)),{Stream:b,prependListener:T}=zd(),{Buffer:N}=(wt(),ze(bt)),{addAbortSignal:R}=eu(),S=Wn(),D=nn().debuglog("stream",h=>{D=h}),U=GR(),x=jo(),{getHighWaterMark:L,getDefaultHighWaterMark:j}=Gd(),{aggregateTwoErrors:Y,codes:{ERR_INVALID_ARG_TYPE:se,ERR_METHOD_NOT_IMPLEMENTED:re,ERR_OUT_OF_RANGE:P,ERR_STREAM_PUSH_AFTER_EOF:B,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:oe}}=Ft(),{validateObject:ne}=Zl(),ue=m("kPaused"),{StringDecoder:ae}=(mO(),ze(Qb)),z=Jb();u(O.prototype,b.prototype),u(O,b);var pe=()=>{},{errorOrDestroy:de}=x;function ge(h,f,g){typeof g!="boolean"&&(g=f instanceof on()),this.objectMode=!!(h&&h.objectMode),g&&(this.objectMode=this.objectMode||!!(h&&h.readableObjectMode)),this.highWaterMark=h?L(this,h,"readableHighWaterMark",g):j(!1),this.buffer=new U,this.length=0,this.pipes=[],this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.constructed=!0,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this[ue]=null,this.errorEmitted=!1,this.emitClose=!h||h.emitClose!==!1,this.autoDestroy=!h||h.autoDestroy!==!1,this.destroyed=!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this.defaultEncoding=h&&h.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.multiAwaitDrain=!1,this.readingMore=!1,this.dataEmitted=!1,this.decoder=null,this.encoding=null,h&&h.encoding&&(this.decoder=new ae(h.encoding),this.encoding=h.encoding)}function O(h){if(!(this instanceof O))return new O(h);let f=this instanceof on();this._readableState=new ge(h,this,f),h&&(typeof h.read=="function"&&(this._read=h.read),typeof h.destroy=="function"&&(this._destroy=h.destroy),typeof h.construct=="function"&&(this._construct=h.construct),h.signal&&!f&&R(h.signal,this)),b.call(this,h),x.construct(this,()=>{this._readableState.needReadable&&ce(this,this._readableState)})}O.prototype.destroy=x.destroy,O.prototype._undestroy=x.undestroy,O.prototype._destroy=function(h,f){f(h)},O.prototype[_.captureRejectionSymbol]=function(h){this.destroy(h)},O.prototype.push=function(h,f){return ie(this,h,f,!1)},O.prototype.unshift=function(h,f){return ie(this,h,f,!0)};function ie(h,f,g,w){D("readableAddChunk",f);let C=h._readableState,V;if(C.objectMode||(typeof f=="string"?(g=g||C.defaultEncoding,C.encoding!==g&&(w&&C.encoding?f=N.from(f,g).toString(C.encoding):(f=N.from(f,g),g=""))):f instanceof N?g="":b._isUint8Array(f)?(f=b._uint8ArrayToBuffer(f),g=""):f!=null&&(V=new se("chunk",["string","Buffer","Uint8Array"],f))),V)de(h,V);else if(f===null)C.reading=!1,F(h,C);else if(C.objectMode||f&&f.length>0)if(w)if(C.endEmitted)de(h,new oe);else{if(C.destroyed||C.errored)return!1;me(h,C,f,!0)}else if(C.ended)de(h,new B);else{if(C.destroyed||C.errored)return!1;C.reading=!1,C.decoder&&!g?(f=C.decoder.write(f),C.objectMode||f.length!==0?me(h,C,f,!1):ce(h,C)):me(h,C,f,!1)}else w||(C.reading=!1,ce(h,C));return!C.ended&&(C.length<C.highWaterMark||C.length===0)}function me(h,f,g,w){f.flowing&&f.length===0&&!f.sync&&h.listenerCount("data")>0?(f.multiAwaitDrain?f.awaitDrainWriters.clear():f.awaitDrainWriters=null,f.dataEmitted=!0,h.emit("data",g)):(f.length+=f.objectMode?1:g.length,w?f.buffer.unshift(g):f.buffer.push(g),f.needReadable&&X(h)),ce(h,f)}O.prototype.isPaused=function(){let h=this._readableState;return h[ue]===!0||h.flowing===!1},O.prototype.setEncoding=function(h){let f=new ae(h);this._readableState.decoder=f,this._readableState.encoding=this._readableState.decoder.encoding;let g=this._readableState.buffer,w="";for(let C of g)w+=f.write(C);return g.clear(),w!==""&&g.push(w),this._readableState.length=w.length,this};var ve=1073741824;function ye(h){if(h>ve)throw new P("size","<= 1GiB",h);return h--,h|=h>>>1,h|=h>>>2,h|=h>>>4,h|=h>>>8,h|=h>>>16,h++,h}function q(h,f){return h<=0||f.length===0&&f.ended?0:f.objectMode?1:i(h)?f.flowing&&f.length?f.buffer.first().length:f.length:h<=f.length?h:f.ended?f.length:0}O.prototype.read=function(h){D("read",h),h===void 0?h=NaN:o(h)||(h=s(h,10));let f=this._readableState,g=h;if(h>f.highWaterMark&&(f.highWaterMark=ye(h)),h!==0&&(f.emittedReadable=!1),h===0&&f.needReadable&&((f.highWaterMark!==0?f.length>=f.highWaterMark:f.length>0)||f.ended))return D("read: emitReadable",f.length,f.ended),f.length===0&&f.ended?I(this):X(this),null;if(h=q(h,f),h===0&&f.ended)return f.length===0&&I(this),null;let w=f.needReadable;if(D("need readable",w),(f.length===0||f.length-h<f.highWaterMark)&&(w=!0,D("length less than watermark",w)),f.ended||f.reading||f.destroyed||f.errored||!f.constructed)w=!1,D("reading, ended or constructing",w);else if(w){D("do read"),f.reading=!0,f.sync=!0,f.length===0&&(f.needReadable=!0);try{this._read(f.highWaterMark)}catch(V){de(this,V)}f.sync=!1,f.reading||(h=q(g,f))}let C;return h>0?C=K(h,f):C=null,C===null?(f.needReadable=f.length<=f.highWaterMark,h=0):(f.length-=h,f.multiAwaitDrain?f.awaitDrainWriters.clear():f.awaitDrainWriters=null),f.length===0&&(f.ended||(f.needReadable=!0),g!==h&&f.ended&&I(this)),C!==null&&!f.errorEmitted&&!f.closeEmitted&&(f.dataEmitted=!0,this.emit("data",C)),C};function F(h,f){if(D("onEofChunk"),!f.ended){if(f.decoder){let g=f.decoder.end();g&&g.length&&(f.buffer.push(g),f.length+=f.objectMode?1:g.length)}f.ended=!0,f.sync?X(h):(f.needReadable=!1,f.emittedReadable=!0,he(h))}}function X(h){let f=h._readableState;D("emitReadable",f.needReadable,f.emittedReadable),f.needReadable=!1,f.emittedReadable||(D("emitReadable",f.flowing),f.emittedReadable=!0,r.nextTick(he,h))}function he(h){let f=h._readableState;D("emitReadable_",f.destroyed,f.length,f.ended),!f.destroyed&&!f.errored&&(f.length||f.ended)&&(h.emit("readable"),f.emittedReadable=!1),f.needReadable=!f.flowing&&!f.ended&&f.length<=f.highWaterMark,ee(h)}function ce(h,f){!f.readingMore&&f.constructed&&(f.readingMore=!0,r.nextTick(Z,h,f))}function Z(h,f){for(;!f.reading&&!f.ended&&(f.length<f.highWaterMark||f.flowing&&f.length===0);){let g=f.length;if(D("maybeReadMore read 0"),h.read(0),g===f.length)break}f.readingMore=!1}O.prototype._read=function(h){throw new re("_read()")},O.prototype.pipe=function(h,f){let g=this,w=this._readableState;w.pipes.length===1&&(w.multiAwaitDrain||(w.multiAwaitDrain=!0,w.awaitDrainWriters=new d(w.awaitDrainWriters?[w.awaitDrainWriters]:[]))),w.pipes.push(h),D("pipe count=%d opts=%j",w.pipes.length,f);let C=(!f||f.end!==!1)&&h!==r.stdout&&h!==r.stderr?fe:st;w.endEmitted?r.nextTick(C):g.once("end",C),h.on("unpipe",V);function V(gt,ut){D("onunpipe"),gt===g&&ut&&ut.hasUnpiped===!1&&(ut.hasUnpiped=!0,Te())}function fe(){D("onend"),h.end()}let xe,ke=!1;function Te(){D("cleanup"),h.removeListener("close",lt),h.removeListener("finish",Je),xe&&h.removeListener("drain",xe),h.removeListener("error",Ve),h.removeListener("unpipe",V),g.removeListener("end",fe),g.removeListener("end",st),g.removeListener("data",Re),ke=!0,xe&&w.awaitDrainWriters&&(!h._writableState||h._writableState.needDrain)&&xe()}function Oe(){ke||(w.pipes.length===1&&w.pipes[0]===h?(D("false write response, pause",0),w.awaitDrainWriters=h,w.multiAwaitDrain=!1):w.pipes.length>1&&w.pipes.includes(h)&&(D("false write response, pause",w.awaitDrainWriters.size),w.awaitDrainWriters.add(h)),g.pause()),xe||(xe=v(g,h),h.on("drain",xe))}g.on("data",Re);function Re(gt){D("ondata");let ut=h.write(gt);D("dest.write",ut),ut===!1&&Oe()}function Ve(gt){if(D("onerror",gt),st(),h.removeListener("error",Ve),h.listenerCount("error")===0){let ut=h._writableState||h._readableState;ut&&!ut.errorEmitted?de(h,gt):h.emit("error",gt)}}T(h,"error",Ve);function lt(){h.removeListener("finish",Je),st()}h.once("close",lt);function Je(){D("onfinish"),h.removeListener("close",lt),st()}h.once("finish",Je);function st(){D("unpipe"),g.unpipe(h)}return h.emit("pipe",g),h.writableNeedDrain===!0?w.flowing&&Oe():w.flowing||(D("pipe resume"),g.resume()),h};function v(h,f){return function(){let g=h._readableState;g.awaitDrainWriters===f?(D("pipeOnDrain",1),g.awaitDrainWriters=null):g.multiAwaitDrain&&(D("pipeOnDrain",g.awaitDrainWriters.size),g.awaitDrainWriters.delete(f)),(!g.awaitDrainWriters||g.awaitDrainWriters.size===0)&&h.listenerCount("data")&&h.resume()}}O.prototype.unpipe=function(h){let f=this._readableState,g={hasUnpiped:!1};if(f.pipes.length===0)return this;if(!h){let C=f.pipes;f.pipes=[],this.pause();for(let V=0;V<C.length;V++)C[V].emit("unpipe",this,{hasUnpiped:!1});return this}let w=n(f.pipes,h);return w===-1?this:(f.pipes.splice(w,1),f.pipes.length===0&&this.pause(),h.emit("unpipe",this,g),this)},O.prototype.on=function(h,f){let g=b.prototype.on.call(this,h,f),w=this._readableState;return h==="data"?(w.readableListening=this.listenerCount("readable")>0,w.flowing!==!1&&this.resume()):h==="readable"&&!w.endEmitted&&!w.readableListening&&(w.readableListening=w.needReadable=!0,w.flowing=!1,w.emittedReadable=!1,D("on readable",w.length,w.reading),w.length?X(this):w.reading||r.nextTick(E,this)),g},O.prototype.addListener=O.prototype.on,O.prototype.removeListener=function(h,f){let g=b.prototype.removeListener.call(this,h,f);return h==="readable"&&r.nextTick(A,this),g},O.prototype.off=O.prototype.removeListener,O.prototype.removeAllListeners=function(h){let f=b.prototype.removeAllListeners.apply(this,arguments);return(h==="readable"||h===void 0)&&r.nextTick(A,this),f};function A(h){let f=h._readableState;f.readableListening=h.listenerCount("readable")>0,f.resumeScheduled&&f[ue]===!1?f.flowing=!0:h.listenerCount("data")>0?h.resume():f.readableListening||(f.flowing=null)}function E(h){D("readable nexttick read 0"),h.read(0)}O.prototype.resume=function(){let h=this._readableState;return h.flowing||(D("resume"),h.flowing=!h.readableListening,k(this,h)),h[ue]=!1,this};function k(h,f){f.resumeScheduled||(f.resumeScheduled=!0,r.nextTick(M,h,f))}function M(h,f){D("resume",f.reading),f.reading||h.read(0),f.resumeScheduled=!1,h.emit("resume"),ee(h),f.flowing&&!f.reading&&h.read(0)}O.prototype.pause=function(){return D("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(D("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[ue]=!0,this};function ee(h){let f=h._readableState;for(D("flow",f.flowing);f.flowing&&h.read()!==null;);}O.prototype.wrap=function(h){let f=!1;h.on("data",w=>{!this.push(w)&&h.pause&&(f=!0,h.pause())}),h.on("end",()=>{this.push(null)}),h.on("error",w=>{de(this,w)}),h.on("close",()=>{this.destroy()}),h.on("destroy",()=>{this.destroy()}),this._read=()=>{f&&h.resume&&(f=!1,h.resume())};let g=l(h);for(let w=1;w<g.length;w++){let C=g[w];this[C]===void 0&&typeof h[C]=="function"&&(this[C]=h[C].bind(h))}return this},O.prototype[p]=function(){return te(this)},O.prototype.iterator=function(h){return h!==void 0&&ne(h,"options"),te(this,h)};function te(h,f){typeof h.read!="function"&&(h=O.wrap(h,{objectMode:!0}));let g=$(h,f);return g.stream=h,g}async function*$(h,f){let g=pe;function w(fe){this===h?(g(),g=pe):g=fe}h.on("readable",w);let C,V=S(h,{writable:!1},fe=>{C=fe?Y(C,fe):null,g(),g=pe});try{for(;;){let fe=h.destroyed?null:h.read();if(fe!==null)yield fe;else{if(C)throw C;if(C===null)return;await new c(w)}}}catch(fe){throw C=Y(C,fe),C}finally{(C||(f==null?void 0:f.destroyOnReturn)!==!1)&&(C===void 0||h._readableState.autoDestroy)?x.destroyer(h,null):(h.off("readable",w),V())}}a(O.prototype,{readable:{__proto__:null,get(){let h=this._readableState;return!!h&&h.readable!==!1&&!h.destroyed&&!h.errorEmitted&&!h.endEmitted},set(h){this._readableState&&(this._readableState.readable=!!h)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(h){this._readableState&&(this._readableState.flowing=h)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(h){this._readableState&&(this._readableState.destroyed=h)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),a(ge.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[ue]!==!1},set(h){this[ue]=!!h}}}),O._fromList=K;function K(h,f){if(f.length===0)return null;let g;return f.objectMode?g=f.buffer.shift():!h||h>=f.length?(f.decoder?g=f.buffer.join(""):f.buffer.length===1?g=f.buffer.first():g=f.buffer.concat(f.length),f.buffer.clear()):g=f.buffer.consume(h,f.decoder),g}function I(h){let f=h._readableState;D("endReadable",f.endEmitted),f.endEmitted||(f.ended=!0,r.nextTick(W,f,h))}function W(h,f){if(D("endReadableNT",h.endEmitted,h.length),!h.errored&&!h.closeEmitted&&!h.endEmitted&&h.length===0){if(h.endEmitted=!0,f.emit("end"),f.writable&&f.allowHalfOpen===!1)r.nextTick(J,f);else if(h.autoDestroy){let g=f._writableState;(!g||g.autoDestroy&&(g.finished||g.writable===!1))&&f.destroy()}}}function J(h){h.writable&&!h.writableEnded&&!h.destroyed&&h.end()}O.from=function(h,f){return z(O,h,f)};var le;function y(){return le===void 0&&(le={}),le}O.fromWeb=function(h,f){return y().newStreamReadableFromReadableStream(h,f)},O.toWeb=function(h,f){return y().newReadableStreamFromStreamReadable(h,f)},O.wrap=function(h,f){var g,w;return new O({objectMode:(g=(w=h.readableObjectMode)!==null&&w!==void 0?w:h.objectMode)!==null&&g!==void 0?g:!0,...f,destroy(C,V){x.destroyer(h,C),V(C)}}).wrap(h)}}),Zb=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{ArrayPrototypeSlice:n,Error:o,FunctionPrototypeSymbolHasInstance:i,ObjectDefineProperty:s,ObjectDefineProperties:a,ObjectSetPrototypeOf:l,StringPrototypeToLowerCase:u,Symbol:c,SymbolHasInstance:d}=ft();t.exports=ae,ae.WritableState=ne;var{EventEmitter:p}=(Wo(),ze(Di)),m=zd().Stream,{Buffer:_}=(wt(),ze(bt)),b=jo(),{addAbortSignal:T}=eu(),{getHighWaterMark:N,getDefaultHighWaterMark:R}=Gd(),{ERR_INVALID_ARG_TYPE:S,ERR_METHOD_NOT_IMPLEMENTED:D,ERR_MULTIPLE_CALLBACK:U,ERR_STREAM_CANNOT_PIPE:x,ERR_STREAM_DESTROYED:L,ERR_STREAM_ALREADY_FINISHED:j,ERR_STREAM_NULL_VALUES:Y,ERR_STREAM_WRITE_AFTER_END:se,ERR_UNKNOWN_ENCODING:re}=Ft().codes,{errorOrDestroy:P}=b;l(ae.prototype,m.prototype),l(ae,m);function B(){}var oe=c("kOnFinished");function ne(E,k,M){typeof M!="boolean"&&(M=k instanceof on()),this.objectMode=!!(E&&E.objectMode),M&&(this.objectMode=this.objectMode||!!(E&&E.writableObjectMode)),this.highWaterMark=E?N(this,E,"writableHighWaterMark",M):R(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let ee=!!(E&&E.decodeStrings===!1);this.decodeStrings=!ee,this.defaultEncoding=E&&E.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=O.bind(void 0,k),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,ue(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!E||E.emitClose!==!1,this.autoDestroy=!E||E.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[oe]=[]}function ue(E){E.buffered=[],E.bufferedIndex=0,E.allBuffers=!0,E.allNoop=!0}ne.prototype.getBuffer=function(){return n(this.buffered,this.bufferedIndex)},s(ne.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function ae(E){let k=this instanceof on();if(!k&&!i(ae,this))return new ae(E);this._writableState=new ne(E,this,k),E&&(typeof E.write=="function"&&(this._write=E.write),typeof E.writev=="function"&&(this._writev=E.writev),typeof E.destroy=="function"&&(this._destroy=E.destroy),typeof E.final=="function"&&(this._final=E.final),typeof E.construct=="function"&&(this._construct=E.construct),E.signal&&T(E.signal,this)),m.call(this,E),b.construct(this,()=>{let M=this._writableState;M.writing||ye(this,M),he(this,M)})}s(ae,d,{__proto__:null,value:function(E){return i(this,E)?!0:this!==ae?!1:E&&E._writableState instanceof ne}}),ae.prototype.pipe=function(){P(this,new x)};function z(E,k,M,ee){let te=E._writableState;if(typeof M=="function")ee=M,M=te.defaultEncoding;else{if(!M)M=te.defaultEncoding;else if(M!=="buffer"&&!_.isEncoding(M))throw new re(M);typeof ee!="function"&&(ee=B)}if(k===null)throw new Y;if(!te.objectMode)if(typeof k=="string")te.decodeStrings!==!1&&(k=_.from(k,M),M="buffer");else if(k instanceof _)M="buffer";else if(m._isUint8Array(k))k=m._uint8ArrayToBuffer(k),M="buffer";else throw new S("chunk",["string","Buffer","Uint8Array"],k);let $;return te.ending?$=new se:te.destroyed&&($=new L("write")),$?(r.nextTick(ee,$),P(E,$,!0),$):(te.pendingcb++,pe(E,te,k,M,ee))}ae.prototype.write=function(E,k,M){return z(this,E,k,M)===!0},ae.prototype.cork=function(){this._writableState.corked++},ae.prototype.uncork=function(){let E=this._writableState;E.corked&&(E.corked--,E.writing||ye(this,E))},ae.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=u(E)),!_.isEncoding(E))throw new re(E);return this._writableState.defaultEncoding=E,this};function pe(E,k,M,ee,te){let $=k.objectMode?1:M.length;k.length+=$;let K=k.length<k.highWaterMark;return K||(k.needDrain=!0),k.writing||k.corked||k.errored||!k.constructed?(k.buffered.push({chunk:M,encoding:ee,callback:te}),k.allBuffers&&ee!=="buffer"&&(k.allBuffers=!1),k.allNoop&&te!==B&&(k.allNoop=!1)):(k.writelen=$,k.writecb=te,k.writing=!0,k.sync=!0,E._write(M,ee,k.onwrite),k.sync=!1),K&&!k.errored&&!k.destroyed}function de(E,k,M,ee,te,$,K){k.writelen=ee,k.writecb=K,k.writing=!0,k.sync=!0,k.destroyed?k.onwrite(new L("write")):M?E._writev(te,k.onwrite):E._write(te,$,k.onwrite),k.sync=!1}function ge(E,k,M,ee){--k.pendingcb,ee(M),ve(k),P(E,M)}function O(E,k){let M=E._writableState,ee=M.sync,te=M.writecb;if(typeof te!="function"){P(E,new U);return}M.writing=!1,M.writecb=null,M.length-=M.writelen,M.writelen=0,k?(k.stack,M.errored||(M.errored=k),E._readableState&&!E._readableState.errored&&(E._readableState.errored=k),ee?r.nextTick(ge,E,M,k,te):ge(E,M,k,te)):(M.buffered.length>M.bufferedIndex&&ye(E,M),ee?M.afterWriteTickInfo!==null&&M.afterWriteTickInfo.cb===te?M.afterWriteTickInfo.count++:(M.afterWriteTickInfo={count:1,cb:te,stream:E,state:M},r.nextTick(ie,M.afterWriteTickInfo)):me(E,M,1,te))}function ie({stream:E,state:k,count:M,cb:ee}){return k.afterWriteTickInfo=null,me(E,k,M,ee)}function me(E,k,M,ee){for(!k.ending&&!E.destroyed&&k.length===0&&k.needDrain&&(k.needDrain=!1,E.emit("drain"));M-- >0;)k.pendingcb--,ee();k.destroyed&&ve(k),he(E,k)}function ve(E){if(E.writing)return;for(let te=E.bufferedIndex;te<E.buffered.length;++te){var k;let{chunk:$,callback:K}=E.buffered[te],I=E.objectMode?1:$.length;E.length-=I,K((k=E.errored)!==null&&k!==void 0?k:new L("write"))}let M=E[oe].splice(0);for(let te=0;te<M.length;te++){var ee;M[te]((ee=E.errored)!==null&&ee!==void 0?ee:new L("end"))}ue(E)}function ye(E,k){if(k.corked||k.bufferProcessing||k.destroyed||!k.constructed)return;let{buffered:M,bufferedIndex:ee,objectMode:te}=k,$=M.length-ee;if(!$)return;let K=ee;if(k.bufferProcessing=!0,$>1&&E._writev){k.pendingcb-=$-1;let I=k.allNoop?B:J=>{for(let le=K;le<M.length;++le)M[le].callback(J)},W=k.allNoop&&K===0?M:n(M,K);W.allBuffers=k.allBuffers,de(E,k,!0,k.length,W,"",I),ue(k)}else{do{let{chunk:I,encoding:W,callback:J}=M[K];M[K++]=null;let le=te?1:I.length;de(E,k,!1,le,I,W,J)}while(K<M.length&&!k.writing);K===M.length?ue(k):K>256?(M.splice(0,K),k.bufferedIndex=0):k.bufferedIndex=K}k.bufferProcessing=!1}ae.prototype._write=function(E,k,M){if(this._writev)this._writev([{chunk:E,encoding:k}],M);else throw new D("_write()")},ae.prototype._writev=null,ae.prototype.end=function(E,k,M){let ee=this._writableState;typeof E=="function"?(M=E,E=null,k=null):typeof k=="function"&&(M=k,k=null);let te;if(E!=null){let $=z(this,E,k);$ instanceof o&&(te=$)}return ee.corked&&(ee.corked=1,this.uncork()),te||(!ee.errored&&!ee.ending?(ee.ending=!0,he(this,ee,!0),ee.ended=!0):ee.finished?te=new j("end"):ee.destroyed&&(te=new L("end"))),typeof M=="function"&&(te||ee.finished?r.nextTick(M,te):ee[oe].push(M)),this};function q(E){return E.ending&&!E.destroyed&&E.constructed&&E.length===0&&!E.errored&&E.buffered.length===0&&!E.finished&&!E.writing&&!E.errorEmitted&&!E.closeEmitted}function F(E,k){let M=!1;function ee(te){if(M){P(E,te??U());return}if(M=!0,k.pendingcb--,te){let $=k[oe].splice(0);for(let K=0;K<$.length;K++)$[K](te);P(E,te,k.sync)}else q(k)&&(k.prefinished=!0,E.emit("prefinish"),k.pendingcb++,r.nextTick(ce,E,k))}k.sync=!0,k.pendingcb++;try{E._final(ee)}catch(te){ee(te)}k.sync=!1}function X(E,k){!k.prefinished&&!k.finalCalled&&(typeof E._final=="function"&&!k.destroyed?(k.finalCalled=!0,F(E,k)):(k.prefinished=!0,E.emit("prefinish")))}function he(E,k,M){q(k)&&(X(E,k),k.pendingcb===0&&(M?(k.pendingcb++,r.nextTick((ee,te)=>{q(te)?ce(ee,te):te.pendingcb--},E,k)):q(k)&&(k.pendingcb++,ce(E,k))))}function ce(E,k){k.pendingcb--,k.finished=!0;let M=k[oe].splice(0);for(let ee=0;ee<M.length;ee++)M[ee]();if(E.emit("finish"),k.autoDestroy){let ee=E._readableState;(!ee||ee.autoDestroy&&(ee.endEmitted||ee.readable===!1))&&E.destroy()}}a(ae.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(E){this._writableState&&(this._writableState.destroyed=E)}},writable:{__proto__:null,get(){let E=this._writableState;return!!E&&E.writable!==!1&&!E.destroyed&&!E.errored&&!E.ending&&!E.ended},set(E){this._writableState&&(this._writableState.writable=!!E)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){let E=this._writableState;return E?!E.destroyed&&!E.ending&&E.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});var Z=b.destroy;ae.prototype.destroy=function(E,k){let M=this._writableState;return!M.destroyed&&(M.bufferedIndex<M.buffered.length||M[oe].length)&&r.nextTick(ve,M),Z.call(this,E,k),this},ae.prototype._undestroy=b.undestroy,ae.prototype._destroy=function(E,k){k(E)},ae.prototype[p.captureRejectionSymbol]=function(E){this.destroy(E)};var v;function A(){return v===void 0&&(v={}),v}ae.fromWeb=function(E,k){return A().newStreamWritableFromWritableStream(E,k)},ae.toWeb=function(E){return A().newWritableStreamFromStreamWritable(E)}}),yO=Ae((e,t)=>{_e(),we(),be();var r=Bi(),n=(wt(),ze(bt)),{isReadable:o,isWritable:i,isIterable:s,isNodeStream:a,isReadableNodeStream:l,isWritableNodeStream:u,isDuplexNodeStream:c}=pn(),d=Wn(),{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:m,ERR_INVALID_RETURN_VALUE:_}}=Ft(),{destroyer:b}=jo(),T=on(),N=ru(),{createDeferredPromise:R}=nn(),S=Jb(),D=globalThis.Blob||n.Blob,U=typeof D<"u"?function(re){return re instanceof D}:function(re){return!1},x=globalThis.AbortController||Yd().AbortController,{FunctionPrototypeCall:L}=ft(),j=class extends T{constructor(re){super(re),(re==null?void 0:re.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(re==null?void 0:re.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}};t.exports=function re(P,B){if(c(P))return P;if(l(P))return se({readable:P});if(u(P))return se({writable:P});if(a(P))return se({writable:!1,readable:!1});if(typeof P=="function"){let{value:ne,write:ue,final:ae,destroy:z}=Y(P);if(s(ne))return S(j,ne,{objectMode:!0,write:ue,final:ae,destroy:z});let pe=ne==null?void 0:ne.then;if(typeof pe=="function"){let de,ge=L(pe,ne,O=>{if(O!=null)throw new _("nully","body",O)},O=>{b(de,O)});return de=new j({objectMode:!0,readable:!1,write:ue,final(O){ae(async()=>{try{await ge,r.nextTick(O,null)}catch(ie){r.nextTick(O,ie)}})},destroy:z})}throw new _("Iterable, AsyncIterable or AsyncFunction",B,ne)}if(U(P))return re(P.arrayBuffer());if(s(P))return S(j,P,{objectMode:!0,writable:!1});if(typeof(P==null?void 0:P.writable)=="object"||typeof(P==null?void 0:P.readable)=="object"){let ne=P!=null&&P.readable?l(P==null?void 0:P.readable)?P==null?void 0:P.readable:re(P.readable):void 0,ue=P!=null&&P.writable?u(P==null?void 0:P.writable)?P==null?void 0:P.writable:re(P.writable):void 0;return se({readable:ne,writable:ue})}let oe=P==null?void 0:P.then;if(typeof oe=="function"){let ne;return L(oe,P,ue=>{ue!=null&&ne.push(ue),ne.push(null)},ue=>{b(ne,ue)}),ne=new j({objectMode:!0,writable:!1,read(){}})}throw new m(B,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],P)};function Y(re){let{promise:P,resolve:B}=R(),oe=new x,ne=oe.signal;return{value:re(async function*(){for(;;){let ue=P;P=null;let{chunk:ae,done:z,cb:pe}=await ue;if(r.nextTick(pe),z)return;if(ne.aborted)throw new p(void 0,{cause:ne.reason});({promise:P,resolve:B}=R()),yield ae}}(),{signal:ne}),write(ue,ae,z){let pe=B;B=null,pe({chunk:ue,done:!1,cb:z})},final(ue){let ae=B;B=null,ae({done:!0,cb:ue})},destroy(ue,ae){oe.abort(),ae(ue)}}}function se(re){let P=re.readable&&typeof re.readable.read!="function"?N.wrap(re.readable):re.readable,B=re.writable,oe=!!o(P),ne=!!i(B),ue,ae,z,pe,de;function ge(O){let ie=pe;pe=null,ie?ie(O):O&&de.destroy(O)}return de=new j({readableObjectMode:!!(P!=null&&P.readableObjectMode),writableObjectMode:!!(B!=null&&B.writableObjectMode),readable:oe,writable:ne}),ne&&(d(B,O=>{ne=!1,O&&b(P,O),ge(O)}),de._write=function(O,ie,me){B.write(O,ie)?me():ue=me},de._final=function(O){B.end(),ae=O},B.on("drain",function(){if(ue){let O=ue;ue=null,O()}}),B.on("finish",function(){if(ae){let O=ae;ae=null,O()}})),oe&&(d(P,O=>{oe=!1,O&&b(P,O),ge(O)}),P.on("readable",function(){if(z){let O=z;z=null,O()}}),P.on("end",function(){de.push(null)}),de._read=function(){for(;;){let O=P.read();if(O===null){z=de._read;return}if(!de.push(O))return}}),de._destroy=function(O,ie){!O&&pe!==null&&(O=new p),z=null,ue=null,ae=null,pe===null?ie(O):(pe=ie,b(B,O),b(P,O))},de}}),on=Ae((e,t)=>{_e(),we(),be();var{ObjectDefineProperties:r,ObjectGetOwnPropertyDescriptor:n,ObjectKeys:o,ObjectSetPrototypeOf:i}=ft();t.exports=l;var s=ru(),a=Zb();i(l.prototype,s.prototype),i(l,s);{let p=o(a.prototype);for(let m=0;m<p.length;m++){let _=p[m];l.prototype[_]||(l.prototype[_]=a.prototype[_])}}function l(p){if(!(this instanceof l))return new l(p);s.call(this,p),a.call(this,p),p?(this.allowHalfOpen=p.allowHalfOpen!==!1,p.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),p.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}r(l.prototype,{writable:{__proto__:null,...n(a.prototype,"writable")},writableHighWaterMark:{__proto__:null,...n(a.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...n(a.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...n(a.prototype,"writableBuffer")},writableLength:{__proto__:null,...n(a.prototype,"writableLength")},writableFinished:{__proto__:null,...n(a.prototype,"writableFinished")},writableCorked:{__proto__:null,...n(a.prototype,"writableCorked")},writableEnded:{__proto__:null,...n(a.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...n(a.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(p){this._readableState&&this._writableState&&(this._readableState.destroyed=p,this._writableState.destroyed=p)}}});var u;function c(){return u===void 0&&(u={}),u}l.fromWeb=function(p,m){return c().newStreamDuplexFromReadableWritablePair(p,m)},l.toWeb=function(p){return c().newReadableWritablePairFromDuplex(p)};var d;l.from=function(p){return d||(d=yO()),d(p,"body")}}),ew=Ae((e,t)=>{_e(),we(),be();var{ObjectSetPrototypeOf:r,Symbol:n}=ft();t.exports=l;var{ERR_METHOD_NOT_IMPLEMENTED:o}=Ft().codes,i=on(),{getHighWaterMark:s}=Gd();r(l.prototype,i.prototype),r(l,i);var a=n("kCallback");function l(d){if(!(this instanceof l))return new l(d);let p=d?s(this,d,"readableHighWaterMark",!0):null;p===0&&(d={...d,highWaterMark:null,readableHighWaterMark:p,writableHighWaterMark:d.writableHighWaterMark||0}),i.call(this,d),this._readableState.sync=!1,this[a]=null,d&&(typeof d.transform=="function"&&(this._transform=d.transform),typeof d.flush=="function"&&(this._flush=d.flush)),this.on("prefinish",c)}function u(d){typeof this._flush=="function"&&!this.destroyed?this._flush((p,m)=>{if(p){d?d(p):this.destroy(p);return}m!=null&&this.push(m),this.push(null),d&&d()}):(this.push(null),d&&d())}function c(){this._final!==u&&u.call(this)}l.prototype._final=u,l.prototype._transform=function(d,p,m){throw new o("_transform()")},l.prototype._write=function(d,p,m){let _=this._readableState,b=this._writableState,T=_.length;this._transform(d,p,(N,R)=>{if(N){m(N);return}R!=null&&this.push(R),b.ended||T===_.length||_.length<_.highWaterMark?m():this[a]=m})},l.prototype._read=function(){if(this[a]){let d=this[a];this[a]=null,d()}}}),tw=Ae((e,t)=>{_e(),we(),be();var{ObjectSetPrototypeOf:r}=ft();t.exports=o;var n=ew();r(o.prototype,n.prototype),r(o,n);function o(i){if(!(this instanceof o))return new o(i);n.call(this,i)}o.prototype._transform=function(i,s,a){a(null,i)}}),Jd=Ae((e,t)=>{_e(),we(),be();var r=Bi(),{ArrayIsArray:n,Promise:o,SymbolAsyncIterator:i}=ft(),s=Wn(),{once:a}=nn(),l=jo(),u=on(),{aggregateTwoErrors:c,codes:{ERR_INVALID_ARG_TYPE:d,ERR_INVALID_RETURN_VALUE:p,ERR_MISSING_ARGS:m,ERR_STREAM_DESTROYED:_,ERR_STREAM_PREMATURE_CLOSE:b},AbortError:T}=Ft(),{validateFunction:N,validateAbortSignal:R}=Zl(),{isIterable:S,isReadable:D,isReadableNodeStream:U,isNodeStream:x,isTransformStream:L,isWebStream:j,isReadableStream:Y,isReadableEnded:se}=pn(),re=globalThis.AbortController||Yd().AbortController,P,B;function oe(ie,me,ve){let ye=!1;ie.on("close",()=>{ye=!0});let q=s(ie,{readable:me,writable:ve},F=>{ye=!F});return{destroy:F=>{ye||(ye=!0,l.destroyer(ie,F||new _("pipe")))},cleanup:q}}function ne(ie){return N(ie[ie.length-1],"streams[stream.length - 1]"),ie.pop()}function ue(ie){if(S(ie))return ie;if(U(ie))return ae(ie);throw new d("val",["Readable","Iterable","AsyncIterable"],ie)}async function*ae(ie){B||(B=ru()),yield*B.prototype[i].call(ie)}async function z(ie,me,ve,{end:ye}){let q,F=null,X=Z=>{if(Z&&(q=Z),F){let v=F;F=null,v()}},he=()=>new o((Z,v)=>{q?v(q):F=()=>{q?v(q):Z()}});me.on("drain",X);let ce=s(me,{readable:!1},X);try{me.writableNeedDrain&&await he();for await(let Z of ie)me.write(Z)||await he();ye&&me.end(),await he(),ve()}catch(Z){ve(q!==Z?c(q,Z):Z)}finally{ce(),me.off("drain",X)}}async function pe(ie,me,ve,{end:ye}){L(me)&&(me=me.writable);let q=me.getWriter();try{for await(let F of ie)await q.ready,q.write(F).catch(()=>{});await q.ready,ye&&await q.close(),ve()}catch(F){try{await q.abort(F),ve(F)}catch(X){ve(X)}}}function de(...ie){return ge(ie,a(ne(ie)))}function ge(ie,me,ve){if(ie.length===1&&n(ie[0])&&(ie=ie[0]),ie.length<2)throw new m("streams");let ye=new re,q=ye.signal,F=ve==null?void 0:ve.signal,X=[];R(F,"options.signal");function he(){k(new T)}F==null||F.addEventListener("abort",he);let ce,Z,v=[],A=0;function E($){k($,--A===0)}function k($,K){if($&&(!ce||ce.code==="ERR_STREAM_PREMATURE_CLOSE")&&(ce=$),!(!ce&&!K)){for(;v.length;)v.shift()(ce);F==null||F.removeEventListener("abort",he),ye.abort(),K&&(ce||X.forEach(I=>I()),r.nextTick(me,ce,Z))}}let M;for(let $=0;$<ie.length;$++){let K=ie[$],I=$<ie.length-1,W=$>0,J=I||(ve==null?void 0:ve.end)!==!1,le=$===ie.length-1;if(x(K)){let y=function(h){h&&h.name!=="AbortError"&&h.code!=="ERR_STREAM_PREMATURE_CLOSE"&&E(h)};if(J){let{destroy:h,cleanup:f}=oe(K,I,W);v.push(h),D(K)&&le&&X.push(f)}K.on("error",y),D(K)&&le&&X.push(()=>{K.removeListener("error",y)})}if($===0)if(typeof K=="function"){if(M=K({signal:q}),!S(M))throw new p("Iterable, AsyncIterable or Stream","source",M)}else S(K)||U(K)||L(K)?M=K:M=u.from(K);else if(typeof K=="function"){if(L(M)){var ee;M=ue((ee=M)===null||ee===void 0?void 0:ee.readable)}else M=ue(M);if(M=K(M,{signal:q}),I){if(!S(M,!0))throw new p("AsyncIterable",`transform[${$-1}]`,M)}else{var te;P||(P=tw());let y=new P({objectMode:!0}),h=(te=M)===null||te===void 0?void 0:te.then;if(typeof h=="function")A++,h.call(M,w=>{Z=w,w!=null&&y.write(w),J&&y.end(),r.nextTick(E)},w=>{y.destroy(w),r.nextTick(E,w)});else if(S(M,!0))A++,z(M,y,E,{end:J});else if(Y(M)||L(M)){let w=M.readable||M;A++,z(w,y,E,{end:J})}else throw new p("AsyncIterable or Promise","destination",M);M=y;let{destroy:f,cleanup:g}=oe(M,!1,!0);v.push(f),le&&X.push(g)}}else if(x(K)){if(U(M)){A+=2;let y=O(M,K,E,{end:J});D(K)&&le&&X.push(y)}else if(L(M)||Y(M)){let y=M.readable||M;A++,z(y,K,E,{end:J})}else if(S(M))A++,z(M,K,E,{end:J});else throw new d("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],M);M=K}else if(j(K)){if(U(M))A++,pe(ue(M),K,E,{end:J});else if(Y(M)||S(M))A++,pe(M,K,E,{end:J});else if(L(M))A++,pe(M.readable,K,E,{end:J});else throw new d("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],M);M=K}else M=u.from(K)}return(q!=null&&q.aborted||F!=null&&F.aborted)&&r.nextTick(he),M}function O(ie,me,ve,{end:ye}){let q=!1;if(me.on("close",()=>{q||ve(new b)}),ie.pipe(me,{end:!1}),ye){let F=function(){q=!0,me.end()};se(ie)?r.nextTick(F):ie.once("end",F)}else ve();return s(ie,{readable:!0,writable:!1},F=>{let X=ie._readableState;F&&F.code==="ERR_STREAM_PREMATURE_CLOSE"&&X&&X.ended&&!X.errored&&!X.errorEmitted?ie.once("end",ve).once("error",ve):ve(F)}),s(me,{readable:!1,writable:!0},ve)}t.exports={pipelineImpl:ge,pipeline:de}}),rw=Ae((e,t)=>{_e(),we(),be();var{pipeline:r}=Jd(),n=on(),{destroyer:o}=jo(),{isNodeStream:i,isReadable:s,isWritable:a,isWebStream:l,isTransformStream:u,isWritableStream:c,isReadableStream:d}=pn(),{AbortError:p,codes:{ERR_INVALID_ARG_VALUE:m,ERR_MISSING_ARGS:_}}=Ft(),b=Wn();t.exports=function(...T){if(T.length===0)throw new _("streams");if(T.length===1)return n.from(T[0]);let N=[...T];if(typeof T[0]=="function"&&(T[0]=n.from(T[0])),typeof T[T.length-1]=="function"){let P=T.length-1;T[P]=n.from(T[P])}for(let P=0;P<T.length;++P)if(!(!i(T[P])&&!l(T[P]))){if(P<T.length-1&&!(s(T[P])||d(T[P])||u(T[P])))throw new m(`streams[${P}]`,N[P],"must be readable");if(P>0&&!(a(T[P])||c(T[P])||u(T[P])))throw new m(`streams[${P}]`,N[P],"must be writable")}let R,S,D,U,x;function L(P){let B=U;U=null,B?B(P):P?x.destroy(P):!re&&!se&&x.destroy()}let j=T[0],Y=r(T,L),se=!!(a(j)||c(j)||u(j)),re=!!(s(Y)||d(Y)||u(Y));if(x=new n({writableObjectMode:!!(j!=null&&j.writableObjectMode),readableObjectMode:!!(Y!=null&&Y.writableObjectMode),writable:se,readable:re}),se){if(i(j))x._write=function(B,oe,ne){j.write(B,oe)?ne():R=ne},x._final=function(B){j.end(),S=B},j.on("drain",function(){if(R){let B=R;R=null,B()}});else if(l(j)){let B=(u(j)?j.writable:j).getWriter();x._write=async function(oe,ne,ue){try{await B.ready,B.write(oe).catch(()=>{}),ue()}catch(ae){ue(ae)}},x._final=async function(oe){try{await B.ready,B.close().catch(()=>{}),S=oe}catch(ne){oe(ne)}}}let P=u(Y)?Y.readable:Y;b(P,()=>{if(S){let B=S;S=null,B()}})}if(re){if(i(Y))Y.on("readable",function(){if(D){let P=D;D=null,P()}}),Y.on("end",function(){x.push(null)}),x._read=function(){for(;;){let P=Y.read();if(P===null){D=x._read;return}if(!x.push(P))return}};else if(l(Y)){let P=(u(Y)?Y.readable:Y).getReader();x._read=async function(){for(;;)try{let{value:B,done:oe}=await P.read();if(!x.push(B))return;if(oe){x.push(null);return}}catch{return}}}}return x._destroy=function(P,B){!P&&U!==null&&(P=new p),D=null,R=null,S=null,U===null?B(P):(U=B,i(Y)&&o(Y,P))},x}}),_O=Ae((e,t)=>{_e(),we(),be();var r=globalThis.AbortController||Yd().AbortController,{codes:{ERR_INVALID_ARG_VALUE:n,ERR_INVALID_ARG_TYPE:o,ERR_MISSING_ARGS:i,ERR_OUT_OF_RANGE:s},AbortError:a}=Ft(),{validateAbortSignal:l,validateInteger:u,validateObject:c}=Zl(),d=ft().Symbol("kWeak"),{finished:p}=Wn(),m=rw(),{addAbortSignalNoValidate:_}=eu(),{isWritable:b,isNodeStream:T}=pn(),{ArrayPrototypePush:N,MathFloor:R,Number:S,NumberIsNaN:D,Promise:U,PromiseReject:x,PromisePrototypeThen:L,Symbol:j}=ft(),Y=j("kEmpty"),se=j("kEof");function re(ye,q){if(q!=null&&c(q,"options"),(q==null?void 0:q.signal)!=null&&l(q.signal,"options.signal"),T(ye)&&!b(ye))throw new n("stream",ye,"must be writable");let F=m(this,ye);return q!=null&&q.signal&&_(q.signal,F),F}function P(ye,q){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);q!=null&&c(q,"options"),(q==null?void 0:q.signal)!=null&&l(q.signal,"options.signal");let F=1;return(q==null?void 0:q.concurrency)!=null&&(F=R(q.concurrency)),u(F,"concurrency",1),(async function*(){var X,he;let ce=new r,Z=this,v=[],A=ce.signal,E={signal:A},k=()=>ce.abort();q!=null&&(X=q.signal)!==null&&X!==void 0&&X.aborted&&k(),q==null||(he=q.signal)===null||he===void 0||he.addEventListener("abort",k);let M,ee,te=!1;function $(){te=!0}async function K(){try{for await(let J of Z){var I;if(te)return;if(A.aborted)throw new a;try{J=ye(J,E)}catch(le){J=x(le)}J!==Y&&(typeof((I=J)===null||I===void 0?void 0:I.catch)=="function"&&J.catch($),v.push(J),M&&(M(),M=null),!te&&v.length&&v.length>=F&&await new U(le=>{ee=le}))}v.push(se)}catch(J){let le=x(J);L(le,void 0,$),v.push(le)}finally{var W;te=!0,M&&(M(),M=null),q==null||(W=q.signal)===null||W===void 0||W.removeEventListener("abort",k)}}K();try{for(;;){for(;v.length>0;){let I=await v[0];if(I===se)return;if(A.aborted)throw new a;I!==Y&&(yield I),v.shift(),ee&&(ee(),ee=null)}await new U(I=>{M=I})}}finally{ce.abort(),te=!0,ee&&(ee(),ee=null)}}).call(this)}function B(ye=void 0){return ye!=null&&c(ye,"options"),(ye==null?void 0:ye.signal)!=null&&l(ye.signal,"options.signal"),(async function*(){let q=0;for await(let X of this){var F;if(ye!=null&&(F=ye.signal)!==null&&F!==void 0&&F.aborted)throw new a({cause:ye.signal.reason});yield[q++,X]}}).call(this)}async function oe(ye,q=void 0){for await(let F of z.call(this,ye,q))return!0;return!1}async function ne(ye,q=void 0){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);return!await oe.call(this,async(...F)=>!await ye(...F),q)}async function ue(ye,q){for await(let F of z.call(this,ye,q))return F}async function ae(ye,q){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);async function F(X,he){return await ye(X,he),Y}for await(let X of P.call(this,F,q));}function z(ye,q){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);async function F(X,he){return await ye(X,he)?X:Y}return P.call(this,F,q)}var pe=class extends i{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}};async function de(ye,q,F){var X;if(typeof ye!="function")throw new o("reducer",["Function","AsyncFunction"],ye);F!=null&&c(F,"options"),(F==null?void 0:F.signal)!=null&&l(F.signal,"options.signal");let he=arguments.length>1;if(F!=null&&(X=F.signal)!==null&&X!==void 0&&X.aborted){let E=new a(void 0,{cause:F.signal.reason});throw this.once("error",()=>{}),await p(this.destroy(E)),E}let ce=new r,Z=ce.signal;if(F!=null&&F.signal){let E={once:!0,[d]:this};F.signal.addEventListener("abort",()=>ce.abort(),E)}let v=!1;try{for await(let E of this){var A;if(v=!0,F!=null&&(A=F.signal)!==null&&A!==void 0&&A.aborted)throw new a;he?q=await ye(q,E,{signal:Z}):(q=E,he=!0)}if(!v&&!he)throw new pe}finally{ce.abort()}return q}async function ge(ye){ye!=null&&c(ye,"options"),(ye==null?void 0:ye.signal)!=null&&l(ye.signal,"options.signal");let q=[];for await(let X of this){var F;if(ye!=null&&(F=ye.signal)!==null&&F!==void 0&&F.aborted)throw new a(void 0,{cause:ye.signal.reason});N(q,X)}return q}function O(ye,q){let F=P.call(this,ye,q);return(async function*(){for await(let X of F)yield*X}).call(this)}function ie(ye){if(ye=S(ye),D(ye))return 0;if(ye<0)throw new s("number",">= 0",ye);return ye}function me(ye,q=void 0){return q!=null&&c(q,"options"),(q==null?void 0:q.signal)!=null&&l(q.signal,"options.signal"),ye=ie(ye),(async function*(){var F;if(q!=null&&(F=q.signal)!==null&&F!==void 0&&F.aborted)throw new a;for await(let he of this){var X;if(q!=null&&(X=q.signal)!==null&&X!==void 0&&X.aborted)throw new a;ye--<=0&&(yield he)}}).call(this)}function ve(ye,q=void 0){return q!=null&&c(q,"options"),(q==null?void 0:q.signal)!=null&&l(q.signal,"options.signal"),ye=ie(ye),(async function*(){var F;if(q!=null&&(F=q.signal)!==null&&F!==void 0&&F.aborted)throw new a;for await(let he of this){var X;if(q!=null&&(X=q.signal)!==null&&X!==void 0&&X.aborted)throw new a;if(ye-- >0)yield he;else return}}).call(this)}t.exports.streamReturningOperators={asIndexedPairs:B,drop:me,filter:z,flatMap:O,map:P,take:ve,compose:re},t.exports.promiseReturningOperators={every:ne,forEach:ae,reduce:de,toArray:ge,some:oe,find:ue}}),nw=Ae((e,t)=>{_e(),we(),be();var{ArrayPrototypePop:r,Promise:n}=ft(),{isIterable:o,isNodeStream:i,isWebStream:s}=pn(),{pipelineImpl:a}=Jd(),{finished:l}=Wn();iw();function u(...c){return new n((d,p)=>{let m,_,b=c[c.length-1];if(b&&typeof b=="object"&&!i(b)&&!o(b)&&!s(b)){let T=r(c);m=T.signal,_=T.end}a(c,(T,N)=>{T?p(T):d(N)},{signal:m,end:_})})}t.exports={finished:l,pipeline:u}}),iw=Ae((e,t)=>{_e(),we(),be();var{Buffer:r}=(wt(),ze(bt)),{ObjectDefineProperty:n,ObjectKeys:o,ReflectApply:i}=ft(),{promisify:{custom:s}}=nn(),{streamReturningOperators:a,promiseReturningOperators:l}=_O(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:u}}=Ft(),c=rw(),{pipeline:d}=Jd(),{destroyer:p}=jo(),m=Wn(),_=nw(),b=pn(),T=t.exports=zd().Stream;T.isDisturbed=b.isDisturbed,T.isErrored=b.isErrored,T.isReadable=b.isReadable,T.Readable=ru();for(let R of o(a)){let S=function(...U){if(new.target)throw u();return T.Readable.from(i(D,this,U))},D=a[R];n(S,"name",{__proto__:null,value:D.name}),n(S,"length",{__proto__:null,value:D.length}),n(T.Readable.prototype,R,{__proto__:null,value:S,enumerable:!1,configurable:!0,writable:!0})}for(let R of o(l)){let S=function(...U){if(new.target)throw u();return i(D,this,U)},D=l[R];n(S,"name",{__proto__:null,value:D.name}),n(S,"length",{__proto__:null,value:D.length}),n(T.Readable.prototype,R,{__proto__:null,value:S,enumerable:!1,configurable:!0,writable:!0})}T.Writable=Zb(),T.Duplex=on(),T.Transform=ew(),T.PassThrough=tw(),T.pipeline=d;var{addAbortSignal:N}=eu();T.addAbortSignal=N,T.finished=m,T.destroy=p,T.compose=c,n(T,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return _}}),n(d,s,{__proto__:null,enumerable:!0,get(){return _.pipeline}}),n(m,s,{__proto__:null,enumerable:!0,get(){return _.finished}}),T.Stream=T,T._isUint8Array=function(R){return R instanceof Uint8Array},T._uint8ArrayToBuffer=function(R){return r.from(R.buffer,R.byteOffset,R.byteLength)}}),$i=Ae((e,t)=>{_e(),we(),be();var r=iw(),n=nw(),o=r.Readable.destroy;t.exports=r.Readable,t.exports._uint8ArrayToBuffer=r._uint8ArrayToBuffer,t.exports._isUint8Array=r._isUint8Array,t.exports.isDisturbed=r.isDisturbed,t.exports.isErrored=r.isErrored,t.exports.isReadable=r.isReadable,t.exports.Readable=r.Readable,t.exports.Writable=r.Writable,t.exports.Duplex=r.Duplex,t.exports.Transform=r.Transform,t.exports.PassThrough=r.PassThrough,t.exports.addAbortSignal=r.addAbortSignal,t.exports.finished=r.finished,t.exports.destroy=r.destroy,t.exports.destroy=o,t.exports.pipeline=r.pipeline,t.exports.compose=r.compose,Object.defineProperty(r,"promises",{configurable:!0,enumerable:!0,get(){return n}}),t.exports.Stream=r.Stream,t.exports.default=t.exports}),bO=Ae((e,t)=>{_e(),we(),be(),typeof Object.create=="function"?t.exports=function(r,n){n&&(r.super_=n,r.prototype=Object.create(n.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(r,n){if(n){r.super_=n;var o=function(){};o.prototype=n.prototype,r.prototype=new o,r.prototype.constructor=r}}}),wO=Ae((e,t)=>{_e(),we(),be();var{Buffer:r}=(wt(),ze(bt)),n=Symbol.for("BufferList");function o(i){if(!(this instanceof o))return new o(i);o._init.call(this,i)}o._init=function(i){Object.defineProperty(this,n,{value:!0}),this._bufs=[],this.length=0,i&&this.append(i)},o.prototype._new=function(i){return new o(i)},o.prototype._offset=function(i){if(i===0)return[0,0];let s=0;for(let a=0;a<this._bufs.length;a++){let l=s+this._bufs[a].length;if(i<l||a===this._bufs.length-1)return[a,i-s];s=l}},o.prototype._reverseOffset=function(i){let s=i[0],a=i[1];for(let l=0;l<s;l++)a+=this._bufs[l].length;return a},o.prototype.get=function(i){if(i>this.length||i<0)return;let s=this._offset(i);return this._bufs[s[0]][s[1]]},o.prototype.slice=function(i,s){return typeof i=="number"&&i<0&&(i+=this.length),typeof s=="number"&&s<0&&(s+=this.length),this.copy(null,0,i,s)},o.prototype.copy=function(i,s,a,l){if((typeof a!="number"||a<0)&&(a=0),(typeof l!="number"||l>this.length)&&(l=this.length),a>=this.length||l<=0)return i||r.alloc(0);let u=!!i,c=this._offset(a),d=l-a,p=d,m=u&&s||0,_=c[1];if(a===0&&l===this.length){if(!u)return this._bufs.length===1?this._bufs[0]:r.concat(this._bufs,this.length);for(let b=0;b<this._bufs.length;b++)this._bufs[b].copy(i,m),m+=this._bufs[b].length;return i}if(p<=this._bufs[c[0]].length-_)return u?this._bufs[c[0]].copy(i,s,_,_+p):this._bufs[c[0]].slice(_,_+p);u||(i=r.allocUnsafe(d));for(let b=c[0];b<this._bufs.length;b++){let T=this._bufs[b].length-_;if(p>T)this._bufs[b].copy(i,m,_),m+=T;else{this._bufs[b].copy(i,m,_,_+p),m+=T;break}p-=T,_&&(_=0)}return i.length>m?i.slice(0,m):i},o.prototype.shallowSlice=function(i,s){if(i=i||0,s=typeof s!="number"?this.length:s,i<0&&(i+=this.length),s<0&&(s+=this.length),i===s)return this._new();let a=this._offset(i),l=this._offset(s),u=this._bufs.slice(a[0],l[0]+1);return l[1]===0?u.pop():u[u.length-1]=u[u.length-1].slice(0,l[1]),a[1]!==0&&(u[0]=u[0].slice(a[1])),this._new(u)},o.prototype.toString=function(i,s,a){return this.slice(s,a).toString(i)},o.prototype.consume=function(i){if(i=Math.trunc(i),Number.isNaN(i)||i<=0)return this;for(;this._bufs.length;)if(i>=this._bufs[0].length)i-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(i),this.length-=i;break}return this},o.prototype.duplicate=function(){let i=this._new();for(let s=0;s<this._bufs.length;s++)i.append(this._bufs[s]);return i},o.prototype.append=function(i){if(i==null)return this;if(i.buffer)this._appendBuffer(r.from(i.buffer,i.byteOffset,i.byteLength));else if(Array.isArray(i))for(let s=0;s<i.length;s++)this.append(i[s]);else if(this._isBufferList(i))for(let s=0;s<i._bufs.length;s++)this.append(i._bufs[s]);else typeof i=="number"&&(i=i.toString()),this._appendBuffer(r.from(i));return this},o.prototype._appendBuffer=function(i){this._bufs.push(i),this.length+=i.length},o.prototype.indexOf=function(i,s,a){if(a===void 0&&typeof s=="string"&&(a=s,s=void 0),typeof i=="function"||Array.isArray(i))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof i=="number"?i=r.from([i]):typeof i=="string"?i=r.from(i,a):this._isBufferList(i)?i=i.slice():Array.isArray(i.buffer)?i=r.from(i.buffer,i.byteOffset,i.byteLength):r.isBuffer(i)||(i=r.from(i)),s=Number(s||0),isNaN(s)&&(s=0),s<0&&(s=this.length+s),s<0&&(s=0),i.length===0)return s>this.length?this.length:s;let l=this._offset(s),u=l[0],c=l[1];for(;u<this._bufs.length;u++){let d=this._bufs[u];for(;c<d.length;)if(d.length-c>=i.length){let p=d.indexOf(i,c);if(p!==-1)return this._reverseOffset([u,p]);c=d.length-i.length+1}else{let p=this._reverseOffset([u,c]);if(this._match(p,i))return p;c++}c=0}return-1},o.prototype._match=function(i,s){if(this.length-i<s.length)return!1;for(let a=0;a<s.length;a++)if(this.get(i+a)!==s[a])return!1;return!0},function(){let i={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let s in i)(function(a){i[a]===null?o.prototype[a]=function(l,u){return this.slice(l,l+u)[a](0,u)}:o.prototype[a]=function(l=0){return this.slice(l,l+i[a])[a](0)}})(s)}(),o.prototype._isBufferList=function(i){return i instanceof o||o.isBufferList(i)},o.isBufferList=function(i){return i!=null&&i[n]},t.exports=o}),vO=Ae((e,t)=>{_e(),we(),be();var r=$i().Duplex,n=bO(),o=wO();function i(s){if(!(this instanceof i))return new i(s);if(typeof s=="function"){this._callback=s;let a=(function(l){this._callback&&(this._callback(l),this._callback=null)}).bind(this);this.on("pipe",function(l){l.on("error",a)}),this.on("unpipe",function(l){l.removeListener("error",a)}),s=null}o._init.call(this,s),r.call(this)}n(i,r),Object.assign(i.prototype,o.prototype),i.prototype._new=function(s){return new i(s)},i.prototype._write=function(s,a,l){this._appendBuffer(s),typeof l=="function"&&l()},i.prototype._read=function(s){if(!this.length)return this.push(null);s=Math.min(s,this.length),this.push(this.slice(0,s)),this.consume(s)},i.prototype.end=function(s){r.prototype.end.call(this,s),this._callback&&(this._callback(null,this.slice()),this._callback=null)},i.prototype._destroy=function(s,a){this._bufs.length=0,this.length=0,a(s)},i.prototype._isBufferList=function(s){return s instanceof i||s instanceof o||i.isBufferList(s)},i.isBufferList=o.isBufferList,t.exports=i,t.exports.BufferListStream=i,t.exports.BufferList=o}),EO=Ae((e,t)=>{_e(),we(),be();var r=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};t.exports=r}),ow=Ae((e,t)=>{_e(),we(),be();var r=t.exports,{Buffer:n}=(wt(),ze(bt));r.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},r.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},r.requiredHeaderFlagsErrors={};for(let i in r.requiredHeaderFlags){let s=r.requiredHeaderFlags[i];r.requiredHeaderFlagsErrors[i]="Invalid header flag bits, must be 0x"+s.toString(16)+" for "+r.types[i]+" packet"}r.codes={};for(let i in r.types){let s=r.types[i];r.codes[s]=i}r.CMD_SHIFT=4,r.CMD_MASK=240,r.DUP_MASK=8,r.QOS_MASK=3,r.QOS_SHIFT=1,r.RETAIN_MASK=1,r.VARBYTEINT_MASK=127,r.VARBYTEINT_FIN_MASK=128,r.VARBYTEINT_MAX=268435455,r.SESSIONPRESENT_MASK=1,r.SESSIONPRESENT_HEADER=n.from([r.SESSIONPRESENT_MASK]),r.CONNACK_HEADER=n.from([r.codes.connack<<r.CMD_SHIFT]),r.USERNAME_MASK=128,r.PASSWORD_MASK=64,r.WILL_RETAIN_MASK=32,r.WILL_QOS_MASK=24,r.WILL_QOS_SHIFT=3,r.WILL_FLAG_MASK=4,r.CLEAN_SESSION_MASK=2,r.CONNECT_HEADER=n.from([r.codes.connect<<r.CMD_SHIFT]),r.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},r.propertiesCodes={};for(let i in r.properties){let s=r.properties[i];r.propertiesCodes[s]=i}r.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function o(i){return[0,1,2].map(s=>[0,1].map(a=>[0,1].map(l=>{let u=n.alloc(1);return u.writeUInt8(r.codes[i]<<r.CMD_SHIFT|(a?r.DUP_MASK:0)|s<<r.QOS_SHIFT|l,0,!0),u})))}r.PUBLISH_HEADER=o("publish"),r.SUBSCRIBE_HEADER=o("subscribe"),r.SUBSCRIBE_OPTIONS_QOS_MASK=3,r.SUBSCRIBE_OPTIONS_NL_MASK=1,r.SUBSCRIBE_OPTIONS_NL_SHIFT=2,r.SUBSCRIBE_OPTIONS_RAP_MASK=1,r.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,r.SUBSCRIBE_OPTIONS_RH_MASK=3,r.SUBSCRIBE_OPTIONS_RH_SHIFT=4,r.SUBSCRIBE_OPTIONS_RH=[0,16,32],r.SUBSCRIBE_OPTIONS_NL=4,r.SUBSCRIBE_OPTIONS_RAP=8,r.SUBSCRIBE_OPTIONS_QOS=[0,1,2],r.UNSUBSCRIBE_HEADER=o("unsubscribe"),r.ACKS={unsuback:o("unsuback"),puback:o("puback"),pubcomp:o("pubcomp"),pubrel:o("pubrel"),pubrec:o("pubrec")},r.SUBACK_HEADER=n.from([r.codes.suback<<r.CMD_SHIFT]),r.VERSION3=n.from([3]),r.VERSION4=n.from([4]),r.VERSION5=n.from([5]),r.VERSION131=n.from([131]),r.VERSION132=n.from([132]),r.QOS=[0,1,2].map(i=>n.from([i])),r.EMPTY={pingreq:n.from([r.codes.pingreq<<4,0]),pingresp:n.from([r.codes.pingresp<<4,0]),disconnect:n.from([r.codes.disconnect<<4,0])},r.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},r.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},r.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},r.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}}),SO=Ae((e,t)=>{_e(),we(),be();var r=1e3,n=r*60,o=n*60,i=o*24,s=i*7,a=i*365.25;t.exports=function(p,m){m=m||{};var _=typeof p;if(_==="string"&&p.length>0)return l(p);if(_==="number"&&isFinite(p))return m.long?c(p):u(p);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(p))};function l(p){if(p=String(p),!(p.length>100)){var m=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(p);if(m){var _=parseFloat(m[1]),b=(m[2]||"ms").toLowerCase();switch(b){case"years":case"year":case"yrs":case"yr":case"y":return _*a;case"weeks":case"week":case"w":return _*s;case"days":case"day":case"d":return _*i;case"hours":case"hour":case"hrs":case"hr":case"h":return _*o;case"minutes":case"minute":case"mins":case"min":case"m":return _*n;case"seconds":case"second":case"secs":case"sec":case"s":return _*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return _;default:return}}}}function u(p){var m=Math.abs(p);return m>=i?Math.round(p/i)+"d":m>=o?Math.round(p/o)+"h":m>=n?Math.round(p/n)+"m":m>=r?Math.round(p/r)+"s":p+"ms"}function c(p){var m=Math.abs(p);return m>=i?d(p,m,i,"day"):m>=o?d(p,m,o,"hour"):m>=n?d(p,m,n,"minute"):m>=r?d(p,m,r,"second"):p+" ms"}function d(p,m,_,b){var T=m>=_*1.5;return Math.round(p/_)+" "+b+(T?"s":"")}}),AO=Ae((e,t)=>{_e(),we(),be();function r(n){i.debug=i,i.default=i,i.coerce=d,i.disable=l,i.enable=a,i.enabled=u,i.humanize=SO(),i.destroy=p,Object.keys(n).forEach(m=>{i[m]=n[m]}),i.names=[],i.skips=[],i.formatters={};function o(m){let _=0;for(let b=0;b<m.length;b++)_=(_<<5)-_+m.charCodeAt(b),_|=0;return i.colors[Math.abs(_)%i.colors.length]}i.selectColor=o;function i(m){let _,b=null,T,N;function R(...S){if(!R.enabled)return;let D=R,U=Number(new Date),x=U-(_||U);D.diff=x,D.prev=_,D.curr=U,_=U,S[0]=i.coerce(S[0]),typeof S[0]!="string"&&S.unshift("%O");let L=0;S[0]=S[0].replace(/%([a-zA-Z%])/g,(j,Y)=>{if(j==="%%")return"%";L++;let se=i.formatters[Y];if(typeof se=="function"){let re=S[L];j=se.call(D,re),S.splice(L,1),L--}return j}),i.formatArgs.call(D,S),(D.log||i.log).apply(D,S)}return R.namespace=m,R.useColors=i.useColors(),R.color=i.selectColor(m),R.extend=s,R.destroy=i.destroy,Object.defineProperty(R,"enabled",{enumerable:!0,configurable:!1,get:()=>b!==null?b:(T!==i.namespaces&&(T=i.namespaces,N=i.enabled(m)),N),set:S=>{b=S}}),typeof i.init=="function"&&i.init(R),R}function s(m,_){let b=i(this.namespace+(typeof _>"u"?":":_)+m);return b.log=this.log,b}function a(m){i.save(m),i.namespaces=m,i.names=[],i.skips=[];let _,b=(typeof m=="string"?m:"").split(/[\s,]+/),T=b.length;for(_=0;_<T;_++)b[_]&&(m=b[_].replace(/\*/g,".*?"),m[0]==="-"?i.skips.push(new RegExp("^"+m.slice(1)+"$")):i.names.push(new RegExp("^"+m+"$")))}function l(){let m=[...i.names.map(c),...i.skips.map(c).map(_=>"-"+_)].join(",");return i.enable(""),m}function u(m){if(m[m.length-1]==="*")return!0;let _,b;for(_=0,b=i.skips.length;_<b;_++)if(i.skips[_].test(m))return!1;for(_=0,b=i.names.length;_<b;_++)if(i.names[_].test(m))return!0;return!1}function c(m){return m.toString().substring(2,m.toString().length-2).replace(/\.\*\?$/,"*")}function d(m){return m instanceof Error?m.stack||m.message:m}function p(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return i.enable(i.load()),i}t.exports=r}),sn=Ae((e,t)=>{_e(),we(),be(),e.formatArgs=n,e.save=o,e.load=i,e.useColors=r,e.storage=s(),e.destroy=(()=>{let l=!1;return()=>{l||(l=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function n(l){if(l[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+l[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;let u="color: "+this.color;l.splice(1,0,u,"color: inherit");let c=0,d=0;l[0].replace(/%[a-zA-Z%]/g,p=>{p!=="%%"&&(c++,p==="%c"&&(d=c))}),l.splice(d,0,u)}e.log=console.debug||console.log||(()=>{});function o(l){try{l?e.storage.setItem("debug",l):e.storage.removeItem("debug")}catch{}}function i(){let l;try{l=e.storage.getItem("debug")}catch{}return!l&&typeof He<"u"&&"env"in He&&(l=He.env.DEBUG),l}function s(){try{return localStorage}catch{}}t.exports=AO()(e);var{formatters:a}=t.exports;a.j=function(l){try{return JSON.stringify(l)}catch(u){return"[UnexpectedJSONParseError]: "+u.message}}}),TO=Ae((e,t)=>{_e(),we(),be();var r=vO(),{EventEmitter:n}=(Wo(),ze(Di)),o=EO(),i=ow(),s=sn()("mqtt-packet:parser"),a=class yh extends n{constructor(){super(),this.parser=this.constructor.parser}static parser(u){return this instanceof yh?(this.settings=u||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new yh().parser(u)}_resetState(){s("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new o,this.error=null,this._list=r(),this._stateCounter=0}parse(u){for(this.error&&this._resetState(),this._list.append(u),s("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,s("parse: state complete. _stateCounter is now: %d",this._stateCounter),s("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return s("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){let u=this._list.readUInt8(0),c=u>>i.CMD_SHIFT;this.packet.cmd=i.types[c];let d=u&15,p=i.requiredHeaderFlags[c];return p!=null&&d!==p?this._emitError(new Error(i.requiredHeaderFlagsErrors[c])):(this.packet.retain=(u&i.RETAIN_MASK)!==0,this.packet.qos=u>>i.QOS_SHIFT&i.QOS_MASK,this.packet.qos>2?this._emitError(new Error("Packet must not have both QoS bits set to 1")):(this.packet.dup=(u&i.DUP_MASK)!==0,s("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0))}_parseLength(){let u=this._parseVarByteNum(!0);return u&&(this.packet.length=u.value,this._list.consume(u.bytes)),s("_parseLength %d",u.value),!!u}_parsePayload(){s("_parsePayload: payload %O",this._list);let u=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}u=!0}return s("_parsePayload complete result: %s",u),u}_parseConnect(){s("_parseConnect");let u,c,d,p,m={},_=this.packet,b=this._parseString();if(b===null)return this._emitError(new Error("Cannot parse protocolId"));if(b!=="MQTT"&&b!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(_.protocolId=b,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(_.protocolVersion=this._list.readUInt8(this._pos),_.protocolVersion>=128&&(_.bridgeMode=!0,_.protocolVersion=_.protocolVersion-128),_.protocolVersion!==3&&_.protocolVersion!==4&&_.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(this._list.readUInt8(this._pos)&1)return this._emitError(new Error("Connect flag bit 0 must be 0, but got 1"));m.username=this._list.readUInt8(this._pos)&i.USERNAME_MASK,m.password=this._list.readUInt8(this._pos)&i.PASSWORD_MASK,m.will=this._list.readUInt8(this._pos)&i.WILL_FLAG_MASK;let T=!!(this._list.readUInt8(this._pos)&i.WILL_RETAIN_MASK),N=(this._list.readUInt8(this._pos)&i.WILL_QOS_MASK)>>i.WILL_QOS_SHIFT;if(m.will)_.will={},_.will.retain=T,_.will.qos=N;else{if(T)return this._emitError(new Error("Will Retain Flag must be set to zero when Will Flag is set to 0"));if(N)return this._emitError(new Error("Will QoS must be set to zero when Will Flag is set to 0"))}if(_.clean=(this._list.readUInt8(this._pos)&i.CLEAN_SESSION_MASK)!==0,this._pos++,_.keepalive=this._parseNum(),_.keepalive===-1)return this._emitError(new Error("Packet too short"));if(_.protocolVersion===5){let S=this._parseProperties();Object.getOwnPropertyNames(S).length&&(_.properties=S)}let R=this._parseString();if(R===null)return this._emitError(new Error("Packet too short"));if(_.clientId=R,s("_parseConnect: packet.clientId: %s",_.clientId),m.will){if(_.protocolVersion===5){let S=this._parseProperties();Object.getOwnPropertyNames(S).length&&(_.will.properties=S)}if(u=this._parseString(),u===null)return this._emitError(new Error("Cannot parse will topic"));if(_.will.topic=u,s("_parseConnect: packet.will.topic: %s",_.will.topic),c=this._parseBuffer(),c===null)return this._emitError(new Error("Cannot parse will payload"));_.will.payload=c,s("_parseConnect: packet.will.paylaod: %s",_.will.payload)}if(m.username){if(p=this._parseString(),p===null)return this._emitError(new Error("Cannot parse username"));_.username=p,s("_parseConnect: packet.username: %s",_.username)}if(m.password){if(d=this._parseBuffer(),d===null)return this._emitError(new Error("Cannot parse password"));_.password=d}return this.settings=_,s("_parseConnect: complete"),_}_parseConnack(){s("_parseConnack");let u=this.packet;if(this._list.length<1)return null;let c=this._list.readUInt8(this._pos++);if(c>1)return this._emitError(new Error("Invalid connack flags, bits 7-1 must be set to 0"));if(u.sessionPresent=!!(c&i.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?u.reasonCode=this._list.readUInt8(this._pos++):u.reasonCode=0;else{if(this._list.length<2)return null;u.returnCode=this._list.readUInt8(this._pos++)}if(u.returnCode===-1||u.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){let d=this._parseProperties();Object.getOwnPropertyNames(d).length&&(u.properties=d)}s("_parseConnack: complete")}_parsePublish(){s("_parsePublish");let u=this.packet;if(u.topic=this._parseString(),u.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(u.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}u.payload=this._list.slice(this._pos,u.length),s("_parsePublish: payload from buffer list: %o",u.payload)}}_parseSubscribe(){s("_parseSubscribe");let u=this.packet,c,d,p,m,_,b,T;if(u.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let N=this._parseProperties();Object.getOwnPropertyNames(N).length&&(u.properties=N)}if(u.length<=0)return this._emitError(new Error("Malformed subscribe, no payload specified"));for(;this._pos<u.length;){if(c=this._parseString(),c===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=u.length)return this._emitError(new Error("Malformed Subscribe Payload"));if(d=this._parseByte(),this.settings.protocolVersion===5){if(d&192)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-6 must be 0"))}else if(d&252)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-2 must be 0"));if(p=d&i.SUBSCRIBE_OPTIONS_QOS_MASK,p>2)return this._emitError(new Error("Invalid subscribe QoS, must be <= 2"));if(b=(d>>i.SUBSCRIBE_OPTIONS_NL_SHIFT&i.SUBSCRIBE_OPTIONS_NL_MASK)!==0,_=(d>>i.SUBSCRIBE_OPTIONS_RAP_SHIFT&i.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,m=d>>i.SUBSCRIBE_OPTIONS_RH_SHIFT&i.SUBSCRIBE_OPTIONS_RH_MASK,m>2)return this._emitError(new Error("Invalid retain handling, must be <= 2"));T={topic:c,qos:p},this.settings.protocolVersion===5?(T.nl=b,T.rap=_,T.rh=m):this.settings.bridgeMode&&(T.rh=0,T.rap=!0,T.nl=!0),s("_parseSubscribe: push subscription `%s` to subscription",T),u.subscriptions.push(T)}}}_parseSuback(){s("_parseSuback");let u=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed suback, no payload specified"));for(;this._pos<this.packet.length;){let c=this._list.readUInt8(this._pos++);if(this.settings.protocolVersion===5){if(!i.MQTT5_SUBACK_CODES[c])return this._emitError(new Error("Invalid suback code"))}else if(c>2&&c!==128)return this._emitError(new Error("Invalid suback QoS, must be 0, 1, 2 or 128"));this.packet.granted.push(c)}}}_parseUnsubscribe(){s("_parseUnsubscribe");let u=this.packet;if(u.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed unsubscribe, no payload specified"));for(;this._pos<u.length;){let c=this._parseString();if(c===null)return this._emitError(new Error("Cannot parse topic"));s("_parseUnsubscribe: push topic `%s` to unsubscriptions",c),u.unsubscriptions.push(c)}}}_parseUnsuback(){s("_parseUnsuback");let u=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if((this.settings.protocolVersion===3||this.settings.protocolVersion===4)&&u.length!==2)return this._emitError(new Error("Malformed unsuback, payload length must be 2"));if(u.length<=0)return this._emitError(new Error("Malformed unsuback, no payload specified"));if(this.settings.protocolVersion===5){let c=this._parseProperties();for(Object.getOwnPropertyNames(c).length&&(u.properties=c),u.granted=[];this._pos<this.packet.length;){let d=this._list.readUInt8(this._pos++);if(!i.MQTT5_UNSUBACK_CODES[d])return this._emitError(new Error("Invalid unsuback code"));this.packet.granted.push(d)}}}_parseConfirmation(){s("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);let u=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5){if(u.length>2){switch(u.reasonCode=this._parseByte(),this.packet.cmd){case"puback":case"pubrec":if(!i.MQTT5_PUBACK_PUBREC_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break;case"pubrel":case"pubcomp":if(!i.MQTT5_PUBREL_PUBCOMP_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break}s("_parseConfirmation: packet.reasonCode `%d`",u.reasonCode)}else u.reasonCode=0;if(u.length>3){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}}return!0}_parseDisconnect(){let u=this.packet;if(s("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?(u.reasonCode=this._parseByte(),i.MQTT5_DISCONNECT_CODES[u.reasonCode]||this._emitError(new Error("Invalid disconnect reason code"))):u.reasonCode=0;let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}return s("_parseDisconnect result: true"),!0}_parseAuth(){s("_parseAuth");let u=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));if(u.reasonCode=this._parseByte(),!i.MQTT5_AUTH_CODES[u.reasonCode])return this._emitError(new Error("Invalid auth reason code"));let c=this._parseProperties();return Object.getOwnPropertyNames(c).length&&(u.properties=c),s("_parseAuth: result: true"),!0}_parseMessageId(){let u=this.packet;return u.messageId=this._parseNum(),u.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(s("_parseMessageId: packet.messageId %d",u.messageId),!0)}_parseString(u){let c=this._parseNum(),d=c+this._pos;if(c===-1||d>this._list.length||d>this.packet.length)return null;let p=this._list.toString("utf8",this._pos,d);return this._pos+=c,s("_parseString: result: %s",p),p}_parseStringPair(){return s("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){let u=this._parseNum(),c=u+this._pos;if(u===-1||c>this._list.length||c>this.packet.length)return null;let d=this._list.slice(this._pos,c);return this._pos+=u,s("_parseBuffer: result: %o",d),d}_parseNum(){if(this._list.length-this._pos<2)return-1;let u=this._list.readUInt16BE(this._pos);return this._pos+=2,s("_parseNum: result: %s",u),u}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;let u=this._list.readUInt32BE(this._pos);return this._pos+=4,s("_parse4ByteNum: result: %s",u),u}_parseVarByteNum(u){s("_parseVarByteNum");let c=4,d=0,p=1,m=0,_=!1,b,T=this._pos?this._pos:0;for(;d<c&&T+d<this._list.length;){if(b=this._list.readUInt8(T+d++),m+=p*(b&i.VARBYTEINT_MASK),p*=128,!(b&i.VARBYTEINT_FIN_MASK)){_=!0;break}if(this._list.length<=d)break}return!_&&d===c&&this._list.length>=d&&this._emitError(new Error("Invalid variable byte integer")),T&&(this._pos+=d),_?u?_={bytes:d,value:m}:_=m:_=!1,s("_parseVarByteNum: result: %o",_),_}_parseByte(){let u;return this._pos<this._list.length&&(u=this._list.readUInt8(this._pos),this._pos++),s("_parseByte: result: %o",u),u}_parseByType(u){switch(s("_parseByType: type: %s",u),u){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){s("_parseProperties");let u=this._parseVarByteNum(),c=this._pos+u,d={};for(;this._pos<c;){let p=this._parseByte();if(!p)return this._emitError(new Error("Cannot parse property code type")),!1;let m=i.propertiesCodes[p];if(!m)return this._emitError(new Error("Unknown property")),!1;if(m==="userProperties"){d[m]||(d[m]=Object.create(null));let _=this._parseByType(i.propertiesTypes[m]);if(d[m][_.name])if(Array.isArray(d[m][_.name]))d[m][_.name].push(_.value);else{let b=d[m][_.name];d[m][_.name]=[b],d[m][_.name].push(_.value)}else d[m][_.name]=_.value;continue}d[m]?Array.isArray(d[m])?d[m].push(this._parseByType(i.propertiesTypes[m])):(d[m]=[d[m]],d[m].push(this._parseByType(i.propertiesTypes[m]))):d[m]=this._parseByType(i.propertiesTypes[m])}return d}_newPacket(){return s("_newPacket"),this.packet&&(this._list.consume(this.packet.length),s("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),s("_newPacket: new packet"),this.packet=new o,this._pos=0,!0}_emitError(u){s("_emitError",u),this.error=u,this.emit("error",u)}};t.exports=a}),xO=Ae((e,t)=>{_e(),we(),be();var{Buffer:r}=(wt(),ze(bt)),n=65536,o={},i=r.isBuffer(r.from([1,2]).subarray(0,1));function s(c){let d=r.allocUnsafe(2);return d.writeUInt8(c>>8,0),d.writeUInt8(c&255,1),d}function a(){for(let c=0;c<n;c++)o[c]=s(c)}function l(c){let d=0,p=0,m=r.allocUnsafe(4);do d=c%128|0,c=c/128|0,c>0&&(d=d|128),m.writeUInt8(d,p++);while(c>0&&p<4);return c>0&&(p=0),i?m.subarray(0,p):m.slice(0,p)}function u(c){let d=r.allocUnsafe(4);return d.writeUInt32BE(c,0),d}t.exports={cache:o,generateCache:a,generateNumber:s,genBufVariableByteInt:l,generate4ByteBuffer:u}}),IO=Ae((e,t)=>{_e(),we(),be(),typeof He>"u"||!He.version||He.version.indexOf("v0.")===0||He.version.indexOf("v1.")===0&&He.version.indexOf("v1.8.")!==0?t.exports={nextTick:r}:t.exports=He;function r(n,o,i,s){if(typeof n!="function")throw new TypeError('"callback" argument must be a function');var a=arguments.length,l,u;switch(a){case 0:case 1:return He.nextTick(n);case 2:return He.nextTick(function(){n.call(null,o)});case 3:return He.nextTick(function(){n.call(null,o,i)});case 4:return He.nextTick(function(){n.call(null,o,i,s)});default:for(l=new Array(a-1),u=0;u<l.length;)l[u++]=arguments[u];return He.nextTick(function(){n.apply(null,l)})}}}),sw=Ae((e,t)=>{_e(),we(),be();var r=ow(),{Buffer:n}=(wt(),ze(bt)),o=n.allocUnsafe(0),i=n.from([0]),s=xO(),a=IO().nextTick,l=sn()("mqtt-packet:writeToStream"),u=s.cache,c=s.generateNumber,d=s.generateCache,p=s.genBufVariableByteInt,m=s.generate4ByteBuffer,_=ae,b=!0;function T(q,F,X){switch(l("generate called"),F.cork&&(F.cork(),a(N,F)),b&&(b=!1,d()),l("generate: packet.cmd: %s",q.cmd),q.cmd){case"connect":return R(q,F);case"connack":return S(q,F,X);case"publish":return D(q,F,X);case"puback":case"pubrec":case"pubrel":case"pubcomp":return U(q,F,X);case"subscribe":return x(q,F,X);case"suback":return L(q,F,X);case"unsubscribe":return j(q,F,X);case"unsuback":return Y(q,F,X);case"pingreq":case"pingresp":return se(q,F);case"disconnect":return re(q,F,X);case"auth":return P(q,F,X);default:return F.destroy(new Error("Unknown command")),!1}}Object.defineProperty(T,"cacheNumbers",{get(){return _===ae},set(q){q?((!u||Object.keys(u).length===0)&&(b=!0),_=ae):(b=!1,_=z)}});function N(q){q.uncork()}function R(q,F,X){let he=q||{},ce=he.protocolId||"MQTT",Z=he.protocolVersion||4,v=he.will,A=he.clean,E=he.keepalive||0,k=he.clientId||"",M=he.username,ee=he.password,te=he.properties;A===void 0&&(A=!0);let $=0;if(!ce||typeof ce!="string"&&!n.isBuffer(ce))return F.destroy(new Error("Invalid protocolId")),!1;if($+=ce.length+2,Z!==3&&Z!==4&&Z!==5)return F.destroy(new Error("Invalid protocol version")),!1;if($+=1,(typeof k=="string"||n.isBuffer(k))&&(k||Z>=4)&&(k||A))$+=n.byteLength(k)+2;else{if(Z<4)return F.destroy(new Error("clientId must be supplied before 3.1.1")),!1;if(A*1===0)return F.destroy(new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof E!="number"||E<0||E>65535||E%1!==0)return F.destroy(new Error("Invalid keepalive")),!1;$+=2,$+=1;let K,I;if(Z===5){if(K=ge(F,te),!K)return!1;$+=K.length}if(v){if(typeof v!="object")return F.destroy(new Error("Invalid will")),!1;if(!v.topic||typeof v.topic!="string")return F.destroy(new Error("Invalid will topic")),!1;if($+=n.byteLength(v.topic)+2,$+=2,v.payload)if(v.payload.length>=0)typeof v.payload=="string"?$+=n.byteLength(v.payload):$+=v.payload.length;else return F.destroy(new Error("Invalid will payload")),!1;if(I={},Z===5){if(I=ge(F,v.properties),!I)return!1;$+=I.length}}let W=!1;if(M!=null)if(ye(M))W=!0,$+=n.byteLength(M)+2;else return F.destroy(new Error("Invalid username")),!1;if(ee!=null){if(!W)return F.destroy(new Error("Username is required to use password")),!1;if(ye(ee))$+=ve(ee)+2;else return F.destroy(new Error("Invalid password")),!1}F.write(r.CONNECT_HEADER),oe(F,$),de(F,ce),he.bridgeMode&&(Z+=128),F.write(Z===131?r.VERSION131:Z===132?r.VERSION132:Z===4?r.VERSION4:Z===5?r.VERSION5:r.VERSION3);let J=0;return J|=M!=null?r.USERNAME_MASK:0,J|=ee!=null?r.PASSWORD_MASK:0,J|=v&&v.retain?r.WILL_RETAIN_MASK:0,J|=v&&v.qos?v.qos<<r.WILL_QOS_SHIFT:0,J|=v?r.WILL_FLAG_MASK:0,J|=A?r.CLEAN_SESSION_MASK:0,F.write(n.from([J])),_(F,E),Z===5&&K.write(),de(F,k),v&&(Z===5&&I.write(),ne(F,v.topic),de(F,v.payload)),M!=null&&de(F,M),ee!=null&&de(F,ee),!0}function S(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=he===5?ce.reasonCode:ce.returnCode,v=ce.properties,A=2;if(typeof Z!="number")return F.destroy(new Error("Invalid return code")),!1;let E=null;if(he===5){if(E=ge(F,v),!E)return!1;A+=E.length}return F.write(r.CONNACK_HEADER),oe(F,A),F.write(ce.sessionPresent?r.SESSIONPRESENT_HEADER:i),F.write(n.from([Z])),E==null||E.write(),!0}function D(q,F,X){l("publish: packet: %o",q);let he=X?X.protocolVersion:4,ce=q||{},Z=ce.qos||0,v=ce.retain?r.RETAIN_MASK:0,A=ce.topic,E=ce.payload||o,k=ce.messageId,M=ce.properties,ee=0;if(typeof A=="string")ee+=n.byteLength(A)+2;else if(n.isBuffer(A))ee+=A.length+2;else return F.destroy(new Error("Invalid topic")),!1;if(n.isBuffer(E)?ee+=E.length:ee+=n.byteLength(E),Z&&typeof k!="number")return F.destroy(new Error("Invalid messageId")),!1;Z&&(ee+=2);let te=null;if(he===5){if(te=ge(F,M),!te)return!1;ee+=te.length}return F.write(r.PUBLISH_HEADER[Z][ce.dup?1:0][v?1:0]),oe(F,ee),_(F,ve(A)),F.write(A),Z>0&&_(F,k),te==null||te.write(),l("publish: payload: %o",E),F.write(E)}function U(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.cmd||"puback",v=ce.messageId,A=ce.dup&&Z==="pubrel"?r.DUP_MASK:0,E=0,k=ce.reasonCode,M=ce.properties,ee=he===5?3:2;if(Z==="pubrel"&&(E=1),typeof v!="number")return F.destroy(new Error("Invalid messageId")),!1;let te=null;if(he===5&&typeof M=="object"){if(te=O(F,M,X,ee),!te)return!1;ee+=te.length}return F.write(r.ACKS[Z][E][A][0]),ee===3&&(ee+=k!==0?1:-1),oe(F,ee),_(F,v),he===5&&ee!==2&&F.write(n.from([k])),te!==null?te.write():ee===4&&F.write(n.from([0])),!0}function x(q,F,X){l("subscribe: packet: ");let he=X?X.protocolVersion:4,ce=q||{},Z=ce.dup?r.DUP_MASK:0,v=ce.messageId,A=ce.subscriptions,E=ce.properties,k=0;if(typeof v!="number")return F.destroy(new Error("Invalid messageId")),!1;k+=2;let M=null;if(he===5){if(M=ge(F,E),!M)return!1;k+=M.length}if(typeof A=="object"&&A.length)for(let te=0;te<A.length;te+=1){let $=A[te].topic,K=A[te].qos;if(typeof $!="string")return F.destroy(new Error("Invalid subscriptions - invalid topic")),!1;if(typeof K!="number")return F.destroy(new Error("Invalid subscriptions - invalid qos")),!1;if(he===5){if(typeof(A[te].nl||!1)!="boolean")return F.destroy(new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(A[te].rap||!1)!="boolean")return F.destroy(new Error("Invalid subscriptions - invalid Retain as Published")),!1;let I=A[te].rh||0;if(typeof I!="number"||I>2)return F.destroy(new Error("Invalid subscriptions - invalid Retain Handling")),!1}k+=n.byteLength($)+2+1}else return F.destroy(new Error("Invalid subscriptions")),!1;l("subscribe: writing to stream: %o",r.SUBSCRIBE_HEADER),F.write(r.SUBSCRIBE_HEADER[1][Z?1:0][0]),oe(F,k),_(F,v),M!==null&&M.write();let ee=!0;for(let te of A){let $=te.topic,K=te.qos,I=+te.nl,W=+te.rap,J=te.rh,le;ne(F,$),le=r.SUBSCRIBE_OPTIONS_QOS[K],he===5&&(le|=I?r.SUBSCRIBE_OPTIONS_NL:0,le|=W?r.SUBSCRIBE_OPTIONS_RAP:0,le|=J?r.SUBSCRIBE_OPTIONS_RH[J]:0),ee=F.write(n.from([le]))}return ee}function L(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.messageId,v=ce.granted,A=ce.properties,E=0;if(typeof Z!="number")return F.destroy(new Error("Invalid messageId")),!1;if(E+=2,typeof v=="object"&&v.length)for(let M=0;M<v.length;M+=1){if(typeof v[M]!="number")return F.destroy(new Error("Invalid qos vector")),!1;E+=1}else return F.destroy(new Error("Invalid qos vector")),!1;let k=null;if(he===5){if(k=O(F,A,X,E),!k)return!1;E+=k.length}return F.write(r.SUBACK_HEADER),oe(F,E),_(F,Z),k!==null&&k.write(),F.write(n.from(v))}function j(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.messageId,v=ce.dup?r.DUP_MASK:0,A=ce.unsubscriptions,E=ce.properties,k=0;if(typeof Z!="number")return F.destroy(new Error("Invalid messageId")),!1;if(k+=2,typeof A=="object"&&A.length)for(let te=0;te<A.length;te+=1){if(typeof A[te]!="string")return F.destroy(new Error("Invalid unsubscriptions")),!1;k+=n.byteLength(A[te])+2}else return F.destroy(new Error("Invalid unsubscriptions")),!1;let M=null;if(he===5){if(M=ge(F,E),!M)return!1;k+=M.length}F.write(r.UNSUBSCRIBE_HEADER[1][v?1:0][0]),oe(F,k),_(F,Z),M!==null&&M.write();let ee=!0;for(let te=0;te<A.length;te++)ee=ne(F,A[te]);return ee}function Y(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.messageId,v=ce.dup?r.DUP_MASK:0,A=ce.granted,E=ce.properties,k=ce.cmd,M=0,ee=2;if(typeof Z!="number")return F.destroy(new Error("Invalid messageId")),!1;if(he===5)if(typeof A=="object"&&A.length)for(let $=0;$<A.length;$+=1){if(typeof A[$]!="number")return F.destroy(new Error("Invalid qos vector")),!1;ee+=1}else return F.destroy(new Error("Invalid qos vector")),!1;let te=null;if(he===5){if(te=O(F,E,X,ee),!te)return!1;ee+=te.length}return F.write(r.ACKS[k][M][v][0]),oe(F,ee),_(F,Z),te!==null&&te.write(),he===5&&F.write(n.from(A)),!0}function se(q,F,X){return F.write(r.EMPTY[q.cmd])}function re(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.reasonCode,v=ce.properties,A=he===5?1:0,E=null;if(he===5){if(E=O(F,v,X,A),!E)return!1;A+=E.length}return F.write(n.from([r.codes.disconnect<<4])),oe(F,A),he===5&&F.write(n.from([Z])),E!==null&&E.write(),!0}function P(q,F,X){let he=X?X.protocolVersion:4,ce=q||{},Z=ce.reasonCode,v=ce.properties,A=he===5?1:0;he!==5&&F.destroy(new Error("Invalid mqtt version for auth packet"));let E=O(F,v,X,A);return E?(A+=E.length,F.write(n.from([r.codes.auth<<4])),oe(F,A),F.write(n.from([Z])),E!==null&&E.write(),!0):!1}var B={};function oe(q,F){if(F>r.VARBYTEINT_MAX)return q.destroy(new Error(`Invalid variable byte integer: ${F}`)),!1;let X=B[F];return X||(X=p(F),F<16384&&(B[F]=X)),l("writeVarByteInt: writing to stream: %o",X),q.write(X)}function ne(q,F){let X=n.byteLength(F);return _(q,X),l("writeString: %s",F),q.write(F,"utf8")}function ue(q,F,X){ne(q,F),ne(q,X)}function ae(q,F){return l("writeNumberCached: number: %d",F),l("writeNumberCached: %o",u[F]),q.write(u[F])}function z(q,F){let X=c(F);return l("writeNumberGenerated: %o",X),q.write(X)}function pe(q,F){let X=m(F);return l("write4ByteNumber: %o",X),q.write(X)}function de(q,F){typeof F=="string"?ne(q,F):F?(_(q,F.length),q.write(F)):_(q,0)}function ge(q,F){if(typeof F!="object"||F.length!=null)return{length:1,write(){me(q,{},0)}};let X=0;function he(ce,Z){let v=r.propertiesTypes[ce],A=0;switch(v){case"byte":{if(typeof Z!="boolean")return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=2;break}case"int8":{if(typeof Z!="number"||Z<0||Z>255)return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=2;break}case"binary":{if(Z&&Z===null)return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=1+n.byteLength(Z)+2;break}case"int16":{if(typeof Z!="number"||Z<0||Z>65535)return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=3;break}case"int32":{if(typeof Z!="number"||Z<0||Z>4294967295)return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=5;break}case"var":{if(typeof Z!="number"||Z<0||Z>268435455)return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=1+n.byteLength(p(Z));break}case"string":{if(typeof Z!="string")return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=3+n.byteLength(Z.toString());break}case"pair":{if(typeof Z!="object")return q.destroy(new Error(`Invalid ${ce}: ${Z}`)),!1;A+=Object.getOwnPropertyNames(Z).reduce((E,k)=>{let M=Z[k];return Array.isArray(M)?E+=M.reduce((ee,te)=>(ee+=3+n.byteLength(k.toString())+2+n.byteLength(te.toString()),ee),0):E+=3+n.byteLength(k.toString())+2+n.byteLength(Z[k].toString()),E},0);break}default:return q.destroy(new Error(`Invalid property ${ce}: ${Z}`)),!1}return A}if(F)for(let ce in F){let Z=0,v=0,A=F[ce];if(Array.isArray(A))for(let E=0;E<A.length;E++){if(v=he(ce,A[E]),!v)return!1;Z+=v}else{if(v=he(ce,A),!v)return!1;Z=v}if(!Z)return!1;X+=Z}return{length:n.byteLength(p(X))+X,write(){me(q,F,X)}}}function O(q,F,X,he){let ce=["reasonString","userProperties"],Z=X&&X.properties&&X.properties.maximumPacketSize?X.properties.maximumPacketSize:0,v=ge(q,F);if(Z)for(;he+v.length>Z;){let A=ce.shift();if(A&&F[A])delete F[A],v=ge(q,F);else return!1}return v}function ie(q,F,X){switch(r.propertiesTypes[F]){case"byte":{q.write(n.from([r.properties[F]])),q.write(n.from([+X]));break}case"int8":{q.write(n.from([r.properties[F]])),q.write(n.from([X]));break}case"binary":{q.write(n.from([r.properties[F]])),de(q,X);break}case"int16":{q.write(n.from([r.properties[F]])),_(q,X);break}case"int32":{q.write(n.from([r.properties[F]])),pe(q,X);break}case"var":{q.write(n.from([r.properties[F]])),oe(q,X);break}case"string":{q.write(n.from([r.properties[F]])),ne(q,X);break}case"pair":{Object.getOwnPropertyNames(X).forEach(he=>{let ce=X[he];Array.isArray(ce)?ce.forEach(Z=>{q.write(n.from([r.properties[F]])),ue(q,he.toString(),Z.toString())}):(q.write(n.from([r.properties[F]])),ue(q,he.toString(),ce.toString()))});break}default:return q.destroy(new Error(`Invalid property ${F} value: ${X}`)),!1}}function me(q,F,X){oe(q,X);for(let he in F)if(Object.prototype.hasOwnProperty.call(F,he)&&F[he]!==null){let ce=F[he];if(Array.isArray(ce))for(let Z=0;Z<ce.length;Z++)ie(q,he,ce[Z]);else ie(q,he,ce)}}function ve(q){return q?q instanceof n?q.length:n.byteLength(q):0}function ye(q){return typeof q=="string"||q instanceof n}t.exports=T}),CO=Ae((e,t)=>{_e(),we(),be();var r=sw(),{EventEmitter:n}=(Wo(),ze(Di)),{Buffer:o}=(wt(),ze(bt));function i(a,l){let u=new s;return r(a,u,l),u.concat()}var s=class extends n{constructor(){super(),this._array=new Array(20),this._i=0}write(a){return this._array[this._i++]=a,!0}concat(){let a=0,l=new Array(this._array.length),u=this._array,c=0,d;for(d=0;d<u.length&&u[d]!==void 0;d++)typeof u[d]!="string"?l[d]=u[d].length:l[d]=o.byteLength(u[d]),a+=l[d];let p=o.allocUnsafe(a);for(d=0;d<u.length&&u[d]!==void 0;d++)typeof u[d]!="string"?(u[d].copy(p,c),c+=l[d]):(p.write(u[d],c),c+=l[d]);return p}destroy(a){a&&this.emit("error",a)}};t.exports=i}),RO=Ae(e=>{_e(),we(),be(),e.parser=TO().parser,e.generate=CO(),e.writeToStream=sw()}),aw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(){this.nextId=Math.max(1,Math.floor(Math.random()*65535))}allocate(){let r=this.nextId++;return this.nextId===65536&&(this.nextId=1),r}getLastAllocated(){return this.nextId===1?65535:this.nextId-1}register(r){return!0}deallocate(r){}clear(){}};e.default=t}),OO=Ae((e,t)=>{_e(),we(),be(),t.exports=n;function r(i){return i instanceof cl?cl.from(i):new i.constructor(i.buffer.slice(),i.byteOffset,i.length)}function n(i){if(i=i||{},i.circles)return o(i);return i.proto?l:a;function s(u,c){for(var d=Object.keys(u),p=new Array(d.length),m=0;m<d.length;m++){var _=d[m],b=u[_];typeof b!="object"||b===null?p[_]=b:b instanceof Date?p[_]=new Date(b):ArrayBuffer.isView(b)?p[_]=r(b):p[_]=c(b)}return p}function a(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return s(u,a);if(u instanceof Map)return new Map(s(Array.from(u),a));if(u instanceof Set)return new Set(s(Array.from(u),a));var c={};for(var d in u)if(Object.hasOwnProperty.call(u,d)!==!1){var p=u[d];typeof p!="object"||p===null?c[d]=p:p instanceof Date?c[d]=new Date(p):p instanceof Map?c[d]=new Map(s(Array.from(p),a)):p instanceof Set?c[d]=new Set(s(Array.from(p),a)):ArrayBuffer.isView(p)?c[d]=r(p):c[d]=a(p)}return c}function l(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return s(u,l);if(u instanceof Map)return new Map(s(Array.from(u),l));if(u instanceof Set)return new Set(s(Array.from(u),l));var c={};for(var d in u){var p=u[d];typeof p!="object"||p===null?c[d]=p:p instanceof Date?c[d]=new Date(p):p instanceof Map?c[d]=new Map(s(Array.from(p),l)):p instanceof Set?c[d]=new Set(s(Array.from(p),l)):ArrayBuffer.isView(p)?c[d]=r(p):c[d]=l(p)}return c}}function o(i){var s=[],a=[];return i.proto?c:u;function l(d,p){for(var m=Object.keys(d),_=new Array(m.length),b=0;b<m.length;b++){var T=m[b],N=d[T];if(typeof N!="object"||N===null)_[T]=N;else if(N instanceof Date)_[T]=new Date(N);else if(ArrayBuffer.isView(N))_[T]=r(N);else{var R=s.indexOf(N);R!==-1?_[T]=a[R]:_[T]=p(N)}}return _}function u(d){if(typeof d!="object"||d===null)return d;if(d instanceof Date)return new Date(d);if(Array.isArray(d))return l(d,u);if(d instanceof Map)return new Map(l(Array.from(d),u));if(d instanceof Set)return new Set(l(Array.from(d),u));var p={};s.push(d),a.push(p);for(var m in d)if(Object.hasOwnProperty.call(d,m)!==!1){var _=d[m];if(typeof _!="object"||_===null)p[m]=_;else if(_ instanceof Date)p[m]=new Date(_);else if(_ instanceof Map)p[m]=new Map(l(Array.from(_),u));else if(_ instanceof Set)p[m]=new Set(l(Array.from(_),u));else if(ArrayBuffer.isView(_))p[m]=r(_);else{var b=s.indexOf(_);b!==-1?p[m]=a[b]:p[m]=u(_)}}return s.pop(),a.pop(),p}function c(d){if(typeof d!="object"||d===null)return d;if(d instanceof Date)return new Date(d);if(Array.isArray(d))return l(d,c);if(d instanceof Map)return new Map(l(Array.from(d),c));if(d instanceof Set)return new Set(l(Array.from(d),c));var p={};s.push(d),a.push(p);for(var m in d){var _=d[m];if(typeof _!="object"||_===null)p[m]=_;else if(_ instanceof Date)p[m]=new Date(_);else if(_ instanceof Map)p[m]=new Map(l(Array.from(_),c));else if(_ instanceof Set)p[m]=new Set(l(Array.from(_),c));else if(ArrayBuffer.isView(_))p[m]=r(_);else{var b=s.indexOf(_);b!==-1?p[m]=a[b]:p[m]=c(_)}}return s.pop(),a.pop(),p}}}),kO=Ae((e,t)=>{_e(),we(),be(),t.exports=OO()()}),NO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.validateTopics=e.validateTopic=void 0;function t(n){let o=n.split("/");for(let i=0;i<o.length;i++)if(o[i]!=="+"){if(o[i]==="#")return i===o.length-1;if(o[i].indexOf("+")!==-1||o[i].indexOf("#")!==-1)return!1}return!0}e.validateTopic=t;function r(n){if(n.length===0)return"empty_topic_list";for(let o=0;o<n.length;o++)if(!t(n[o]))return n[o];return null}e.validateTopics=r}),lw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=$i(),r={objectMode:!0},n={clean:!0},o=class{constructor(i){this.options=i||{},this.options=Object.assign(Object.assign({},n),i),this._inflights=new Map}put(i,s){return this._inflights.set(i.messageId,i),s&&s(),this}createStream(){let i=new t.Readable(r),s=[],a=!1,l=0;return this._inflights.forEach((u,c)=>{s.push(u)}),i._read=()=>{!a&&l<s.length?i.push(s[l++]):i.push(null)},i.destroy=u=>{if(!a)return a=!0,setTimeout(()=>{i.emit("close")},0),i},i}del(i,s){let a=this._inflights.get(i.messageId);return a?(this._inflights.delete(i.messageId),s(null,a)):s&&s(new Error("missing packet")),this}get(i,s){let a=this._inflights.get(i.messageId);return a?s(null,a):s&&s(new Error("missing packet")),this}close(i){this.options.clean&&(this._inflights=null),i&&i()}};e.default=o}),MO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=[0,16,128,131,135,144,145,151,153],r=(n,o,i)=>{n.log("handlePublish: packet %o",o),i=typeof i<"u"?i:n.noop;let s=o.topic.toString(),a=o.payload,{qos:l}=o,{messageId:u}=o,{options:c}=n;if(n.options.protocolVersion===5){let d;if(o.properties&&(d=o.properties.topicAlias),typeof d<"u")if(s.length===0)if(d>0&&d<=65535){let p=n.topicAliasRecv.getTopicByAlias(d);if(p)s=p,n.log("handlePublish :: topic complemented by alias. topic: %s - alias: %d",s,d);else{n.log("handlePublish :: unregistered topic alias. alias: %d",d),n.emit("error",new Error("Received unregistered Topic Alias"));return}}else{n.log("handlePublish :: topic alias out of range. alias: %d",d),n.emit("error",new Error("Received Topic Alias is out of range"));return}else if(n.topicAliasRecv.put(s,d))n.log("handlePublish :: registered topic: %s - alias: %d",s,d);else{n.log("handlePublish :: topic alias out of range. alias: %d",d),n.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(n.log("handlePublish: qos %d",l),l){case 2:{c.customHandleAcks(s,a,o,(d,p)=>{if(typeof d=="number"&&(p=d,d=null),d)return n.emit("error",d);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for pubrec"));p?n._sendPacket({cmd:"pubrec",messageId:u,reasonCode:p},i):n.incomingStore.put(o,()=>{n._sendPacket({cmd:"pubrec",messageId:u},i)})});break}case 1:{c.customHandleAcks(s,a,o,(d,p)=>{if(typeof d=="number"&&(p=d,d=null),d)return n.emit("error",d);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for puback"));p||n.emit("message",s,a,o),n.handleMessage(o,m=>{if(m)return i&&i(m);n._sendPacket({cmd:"puback",messageId:u,reasonCode:p},i)})});break}case 0:n.emit("message",s,a,o),n.handleMessage(o,i);break;default:n.log("handlePublish: unknown QoS. Doing nothing.");break}};e.default=r}),PO=Ae((e,t)=>{t.exports={version:"5.10.1"}}),Ho=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.MQTTJS_VERSION=e.nextTick=e.applyMixin=e.ErrorWithReasonCode=void 0;var t=class uw extends Error{constructor(o,i){super(o),this.code=i,Object.setPrototypeOf(this,uw.prototype),Object.getPrototypeOf(this).name="ErrorWithReasonCode"}};e.ErrorWithReasonCode=t;function r(n,o,i=!1){var s;let a=[o];for(;;){let l=a[0],u=Object.getPrototypeOf(l);if(u!=null&&u.prototype)a.unshift(u);else break}for(let l of a)for(let u of Object.getOwnPropertyNames(l.prototype))(i||u!=="constructor")&&Object.defineProperty(n.prototype,u,(s=Object.getOwnPropertyDescriptor(l.prototype,u))!==null&&s!==void 0?s:Object.create(null))}e.applyMixin=r,e.nextTick=typeof(He==null?void 0:He.nextTick)=="function"?He.nextTick:n=>{setTimeout(n,0)},e.MQTTJS_VERSION=PO().version}),nu=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=void 0;var t=Ho();e.ReasonCodes={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};var r=(n,o)=>{let{messageId:i}=o,s=o.cmd,a=null,l=n.outgoing[i]?n.outgoing[i].cb:null,u=null;if(!l){n.log("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(n.log("_handleAck :: packet type",s),s){case"pubcomp":case"puback":{let c=o.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{l(u,o)})):n._removeOutgoingAndStoreMessage(i,l);break}case"pubrec":{a={cmd:"pubrel",qos:2,messageId:i};let c=o.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{l(u,o)})):n._sendPacket(a);break}case"suback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i);let c=o.granted;for(let d=0;d<c.length;d++){let p=c[d];if(p&128){u=new Error(`Subscribe error: ${e.ReasonCodes[p]}`),u.code=p;let m=n.messageIdToTopic[i];m&&m.forEach(_=>{delete n._resubscribeTopics[_]})}}delete n.messageIdToTopic[i],n._invokeStoreProcessingQueue(),l(u,o);break}case"unsuback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i),n._invokeStoreProcessingQueue(),l(null,o);break}default:n.emit("error",new Error("unrecognized packet type"))}n.disconnecting&&Object.keys(n.outgoing).length===0&&n.emit("outgoingEmpty")};e.default=r}),LO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=Ho(),r=nu(),n=(o,i)=>{let{options:s}=o,a=s.protocolVersion,l=a===5?i.reasonCode:i.returnCode;if(a!==5){let u=new t.ErrorWithReasonCode(`Protocol error: Auth packets are only supported in MQTT 5. Your version:${a}`,l);o.emit("error",u);return}o.handleAuth(i,(u,c)=>{if(u){o.emit("error",u);return}if(l===24)o.reconnecting=!1,o._sendPacket(c);else{let d=new t.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[l]}`,l);o.emit("error",d)}})};e.default=n}),BO=Ae(e=>{var m,_,b,T,N,R,S,D,U,x,L,j,Y,se,re,P,B,oe,ne,ue,ae,z,pe,de,ge,O,_h,me,ve,ye,q,cw,X,he,ce,En,Sn,bh,Da,$a,Ze,wh,cs,$;_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=void 0;var t=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,r=new Set,n=typeof He=="object"&&He?He:{},o=(K,I,W,J)=>{typeof n.emitWarning=="function"?n.emitWarning(K,I,W,J):console.error(`[${W}] ${I}: ${K}`)},i=globalThis.AbortController,s=globalThis.AbortSignal;if(typeof i>"u"){s=class{constructor(){rt(this,"onabort");rt(this,"_onabort",[]);rt(this,"reason");rt(this,"aborted",!1)}addEventListener(W,J){this._onabort.push(J)}},i=class{constructor(){rt(this,"signal",new s);I()}abort(W){var J,le;if(!this.signal.aborted){this.signal.reason=W,this.signal.aborted=!0;for(let y of this.signal._onabort)y(W);(le=(J=this.signal).onabort)==null||le.call(J,W)}}};let K=((m=n.env)==null?void 0:m.LRU_CACHE_IGNORE_AC_WARNING)!=="1",I=()=>{K&&(K=!1,o("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",I))}}var a=K=>!r.has(K),l=K=>K&&K===Math.floor(K)&&K>0&&isFinite(K),u=K=>l(K)?K<=Math.pow(2,8)?Uint8Array:K<=Math.pow(2,16)?Uint16Array:K<=Math.pow(2,32)?Uint32Array:K<=Number.MAX_SAFE_INTEGER?c:null:null,c=class extends Array{constructor(K){super(K),this.fill(0)}},d=(_=class{constructor(I,W){rt(this,"heap");rt(this,"length");if(!Q(_,b))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new W(I),this.length=0}static create(I){let W=u(I);if(!W)return[];Le(_,b,!0);let J=new _(I,W);return Le(_,b,!1),J}push(I){this.heap[this.length++]=I}pop(){return this.heap[--this.length]}},b=new WeakMap,Fe(_,b,!1),_),p=($=class{constructor(I){Fe(this,O);Fe(this,T);Fe(this,N);Fe(this,R);Fe(this,S);Fe(this,D);rt(this,"ttl");rt(this,"ttlResolution");rt(this,"ttlAutopurge");rt(this,"updateAgeOnGet");rt(this,"updateAgeOnHas");rt(this,"allowStale");rt(this,"noDisposeOnSet");rt(this,"noUpdateTTL");rt(this,"maxEntrySize");rt(this,"sizeCalculation");rt(this,"noDeleteOnFetchRejection");rt(this,"noDeleteOnStaleGet");rt(this,"allowStaleOnFetchAbort");rt(this,"allowStaleOnFetchRejection");rt(this,"ignoreFetchAbort");Fe(this,U);Fe(this,x);Fe(this,L);Fe(this,j);Fe(this,Y);Fe(this,se);Fe(this,re);Fe(this,P);Fe(this,B);Fe(this,oe);Fe(this,ne);Fe(this,ue);Fe(this,ae);Fe(this,z);Fe(this,pe);Fe(this,de);Fe(this,ge);Fe(this,me,()=>{});Fe(this,ve,()=>{});Fe(this,ye,()=>{});Fe(this,q,()=>!1);Fe(this,X,I=>{});Fe(this,he,(I,W,J)=>{});Fe(this,ce,(I,W,J,le)=>{if(J||le)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});let{max:W=0,ttl:J,ttlResolution:le=1,ttlAutopurge:y,updateAgeOnGet:h,updateAgeOnHas:f,allowStale:g,dispose:w,disposeAfter:C,noDisposeOnSet:V,noUpdateTTL:fe,maxSize:xe=0,maxEntrySize:ke=0,sizeCalculation:Te,fetchMethod:Oe,noDeleteOnFetchRejection:Re,noDeleteOnStaleGet:Ve,allowStaleOnFetchRejection:lt,allowStaleOnFetchAbort:Je,ignoreFetchAbort:st}=I;if(W!==0&&!l(W))throw new TypeError("max option must be a nonnegative integer");let gt=W?u(W):Array;if(!gt)throw new Error("invalid max value: "+W);if(Le(this,T,W),Le(this,N,xe),this.maxEntrySize=ke||Q(this,N),this.sizeCalculation=Te,this.sizeCalculation){if(!Q(this,N)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(Oe!==void 0&&typeof Oe!="function")throw new TypeError("fetchMethod must be a function if specified");if(Le(this,D,Oe),Le(this,de,!!Oe),Le(this,L,new Map),Le(this,j,new Array(W).fill(void 0)),Le(this,Y,new Array(W).fill(void 0)),Le(this,se,new gt(W)),Le(this,re,new gt(W)),Le(this,P,0),Le(this,B,0),Le(this,oe,d.create(W)),Le(this,U,0),Le(this,x,0),typeof w=="function"&&Le(this,R,w),typeof C=="function"?(Le(this,S,C),Le(this,ne,[])):(Le(this,S,void 0),Le(this,ne,void 0)),Le(this,pe,!!Q(this,R)),Le(this,ge,!!Q(this,S)),this.noDisposeOnSet=!!V,this.noUpdateTTL=!!fe,this.noDeleteOnFetchRejection=!!Re,this.allowStaleOnFetchRejection=!!lt,this.allowStaleOnFetchAbort=!!Je,this.ignoreFetchAbort=!!st,this.maxEntrySize!==0){if(Q(this,N)!==0&&!l(Q(this,N)))throw new TypeError("maxSize must be a positive integer if specified");if(!l(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Me(this,O,cw).call(this)}if(this.allowStale=!!g,this.noDeleteOnStaleGet=!!Ve,this.updateAgeOnGet=!!h,this.updateAgeOnHas=!!f,this.ttlResolution=l(le)||le===0?le:1,this.ttlAutopurge=!!y,this.ttl=J||0,this.ttl){if(!l(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Me(this,O,_h).call(this)}if(Q(this,T)===0&&this.ttl===0&&Q(this,N)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!Q(this,T)&&!Q(this,N)){let ut="LRU_CACHE_UNBOUNDED";a(ut)&&(r.add(ut),o("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",ut,$))}}static unsafeExposeInternals(I){return{starts:Q(I,ae),ttls:Q(I,z),sizes:Q(I,ue),keyMap:Q(I,L),keyList:Q(I,j),valList:Q(I,Y),next:Q(I,se),prev:Q(I,re),get head(){return Q(I,P)},get tail(){return Q(I,B)},free:Q(I,oe),isBackgroundFetch:W=>{var J;return Me(J=I,O,Ze).call(J,W)},backgroundFetch:(W,J,le,y)=>{var h;return Me(h=I,O,$a).call(h,W,J,le,y)},moveToTail:W=>{var J;return Me(J=I,O,cs).call(J,W)},indexes:W=>{var J;return Me(J=I,O,En).call(J,W)},rindexes:W=>{var J;return Me(J=I,O,Sn).call(J,W)},isStale:W=>{var J;return Q(J=I,q).call(J,W)}}}get max(){return Q(this,T)}get maxSize(){return Q(this,N)}get calculatedSize(){return Q(this,x)}get size(){return Q(this,U)}get fetchMethod(){return Q(this,D)}get dispose(){return Q(this,R)}get disposeAfter(){return Q(this,S)}getRemainingTTL(I){return Q(this,L).has(I)?1/0:0}*entries(){for(let I of Me(this,O,En).call(this))Q(this,Y)[I]!==void 0&&Q(this,j)[I]!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield[Q(this,j)[I],Q(this,Y)[I]])}*rentries(){for(let I of Me(this,O,Sn).call(this))Q(this,Y)[I]!==void 0&&Q(this,j)[I]!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield[Q(this,j)[I],Q(this,Y)[I]])}*keys(){for(let I of Me(this,O,En).call(this)){let W=Q(this,j)[I];W!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield W)}}*rkeys(){for(let I of Me(this,O,Sn).call(this)){let W=Q(this,j)[I];W!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield W)}}*values(){for(let I of Me(this,O,En).call(this))Q(this,Y)[I]!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield Q(this,Y)[I])}*rvalues(){for(let I of Me(this,O,Sn).call(this))Q(this,Y)[I]!==void 0&&!Me(this,O,Ze).call(this,Q(this,Y)[I])&&(yield Q(this,Y)[I])}[Symbol.iterator](){return this.entries()}find(I,W={}){for(let J of Me(this,O,En).call(this)){let le=Q(this,Y)[J],y=Me(this,O,Ze).call(this,le)?le.__staleWhileFetching:le;if(y!==void 0&&I(y,Q(this,j)[J],this))return this.get(Q(this,j)[J],W)}}forEach(I,W=this){for(let J of Me(this,O,En).call(this)){let le=Q(this,Y)[J],y=Me(this,O,Ze).call(this,le)?le.__staleWhileFetching:le;y!==void 0&&I.call(W,y,Q(this,j)[J],this)}}rforEach(I,W=this){for(let J of Me(this,O,Sn).call(this)){let le=Q(this,Y)[J],y=Me(this,O,Ze).call(this,le)?le.__staleWhileFetching:le;y!==void 0&&I.call(W,y,Q(this,j)[J],this)}}purgeStale(){let I=!1;for(let W of Me(this,O,Sn).call(this,{allowStale:!0}))Q(this,q).call(this,W)&&(this.delete(Q(this,j)[W]),I=!0);return I}dump(){let I=[];for(let W of Me(this,O,En).call(this,{allowStale:!0})){let J=Q(this,j)[W],le=Q(this,Y)[W],y=Me(this,O,Ze).call(this,le)?le.__staleWhileFetching:le;if(y===void 0||J===void 0)continue;let h={value:y};if(Q(this,z)&&Q(this,ae)){h.ttl=Q(this,z)[W];let f=t.now()-Q(this,ae)[W];h.start=Math.floor(Date.now()-f)}Q(this,ue)&&(h.size=Q(this,ue)[W]),I.unshift([J,h])}return I}load(I){this.clear();for(let[W,J]of I){if(J.start){let le=Date.now()-J.start;J.start=t.now()-le}this.set(W,J.value,J)}}set(I,W,J={}){var fe,xe,ke,Te,Oe;if(W===void 0)return this.delete(I),this;let{ttl:le=this.ttl,start:y,noDisposeOnSet:h=this.noDisposeOnSet,sizeCalculation:f=this.sizeCalculation,status:g}=J,{noUpdateTTL:w=this.noUpdateTTL}=J,C=Q(this,ce).call(this,I,W,J.size||0,f);if(this.maxEntrySize&&C>this.maxEntrySize)return g&&(g.set="miss",g.maxEntrySizeExceeded=!0),this.delete(I),this;let V=Q(this,U)===0?void 0:Q(this,L).get(I);if(V===void 0)V=Q(this,U)===0?Q(this,B):Q(this,oe).length!==0?Q(this,oe).pop():Q(this,U)===Q(this,T)?Me(this,O,Da).call(this,!1):Q(this,U),Q(this,j)[V]=I,Q(this,Y)[V]=W,Q(this,L).set(I,V),Q(this,se)[Q(this,B)]=V,Q(this,re)[V]=Q(this,B),Le(this,B,V),Qs(this,U)._++,Q(this,he).call(this,V,C,g),g&&(g.set="add"),w=!1;else{Me(this,O,cs).call(this,V);let Re=Q(this,Y)[V];if(W!==Re){if(Q(this,de)&&Me(this,O,Ze).call(this,Re)){Re.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:Ve}=Re;Ve!==void 0&&!h&&(Q(this,pe)&&((fe=Q(this,R))==null||fe.call(this,Ve,I,"set")),Q(this,ge)&&((xe=Q(this,ne))==null||xe.push([Ve,I,"set"])))}else h||(Q(this,pe)&&((ke=Q(this,R))==null||ke.call(this,Re,I,"set")),Q(this,ge)&&((Te=Q(this,ne))==null||Te.push([Re,I,"set"])));if(Q(this,X).call(this,V),Q(this,he).call(this,V,C,g),Q(this,Y)[V]=W,g){g.set="replace";let Ve=Re&&Me(this,O,Ze).call(this,Re)?Re.__staleWhileFetching:Re;Ve!==void 0&&(g.oldValue=Ve)}}else g&&(g.set="update")}if(le!==0&&!Q(this,z)&&Me(this,O,_h).call(this),Q(this,z)&&(w||Q(this,ye).call(this,V,le,y),g&&Q(this,ve).call(this,g,V)),!h&&Q(this,ge)&&Q(this,ne)){let Re=Q(this,ne),Ve;for(;Ve=Re==null?void 0:Re.shift();)(Oe=Q(this,S))==null||Oe.call(this,...Ve)}return this}pop(){var I;try{for(;Q(this,U);){let W=Q(this,Y)[Q(this,P)];if(Me(this,O,Da).call(this,!0),Me(this,O,Ze).call(this,W)){if(W.__staleWhileFetching)return W.__staleWhileFetching}else if(W!==void 0)return W}}finally{if(Q(this,ge)&&Q(this,ne)){let W=Q(this,ne),J;for(;J=W==null?void 0:W.shift();)(I=Q(this,S))==null||I.call(this,...J)}}}has(I,W={}){let{updateAgeOnHas:J=this.updateAgeOnHas,status:le}=W,y=Q(this,L).get(I);if(y!==void 0){let h=Q(this,Y)[y];if(Me(this,O,Ze).call(this,h)&&h.__staleWhileFetching===void 0)return!1;if(Q(this,q).call(this,y))le&&(le.has="stale",Q(this,ve).call(this,le,y));else return J&&Q(this,me).call(this,y),le&&(le.has="hit",Q(this,ve).call(this,le,y)),!0}else le&&(le.has="miss");return!1}peek(I,W={}){let{allowStale:J=this.allowStale}=W,le=Q(this,L).get(I);if(le!==void 0&&(J||!Q(this,q).call(this,le))){let y=Q(this,Y)[le];return Me(this,O,Ze).call(this,y)?y.__staleWhileFetching:y}}async fetch(I,W={}){let{allowStale:J=this.allowStale,updateAgeOnGet:le=this.updateAgeOnGet,noDeleteOnStaleGet:y=this.noDeleteOnStaleGet,ttl:h=this.ttl,noDisposeOnSet:f=this.noDisposeOnSet,size:g=0,sizeCalculation:w=this.sizeCalculation,noUpdateTTL:C=this.noUpdateTTL,noDeleteOnFetchRejection:V=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:fe=this.allowStaleOnFetchRejection,ignoreFetchAbort:xe=this.ignoreFetchAbort,allowStaleOnFetchAbort:ke=this.allowStaleOnFetchAbort,context:Te,forceRefresh:Oe=!1,status:Re,signal:Ve}=W;if(!Q(this,de))return Re&&(Re.fetch="get"),this.get(I,{allowStale:J,updateAgeOnGet:le,noDeleteOnStaleGet:y,status:Re});let lt={allowStale:J,updateAgeOnGet:le,noDeleteOnStaleGet:y,ttl:h,noDisposeOnSet:f,size:g,sizeCalculation:w,noUpdateTTL:C,noDeleteOnFetchRejection:V,allowStaleOnFetchRejection:fe,allowStaleOnFetchAbort:ke,ignoreFetchAbort:xe,status:Re,signal:Ve},Je=Q(this,L).get(I);if(Je===void 0){Re&&(Re.fetch="miss");let st=Me(this,O,$a).call(this,I,Je,lt,Te);return st.__returned=st}else{let st=Q(this,Y)[Je];if(Me(this,O,Ze).call(this,st)){let Ko=J&&st.__staleWhileFetching!==void 0;return Re&&(Re.fetch="inflight",Ko&&(Re.returnedStale=!0)),Ko?st.__staleWhileFetching:st.__returned=st}let gt=Q(this,q).call(this,Je);if(!Oe&&!gt)return Re&&(Re.fetch="hit"),Me(this,O,cs).call(this,Je),le&&Q(this,me).call(this,Je),Re&&Q(this,ve).call(this,Re,Je),st;let ut=Me(this,O,$a).call(this,I,Je,lt,Te),Ki=ut.__staleWhileFetching!==void 0&&J;return Re&&(Re.fetch=gt?"stale":"refresh",Ki&&gt&&(Re.returnedStale=!0)),Ki?ut.__staleWhileFetching:ut.__returned=ut}}get(I,W={}){let{allowStale:J=this.allowStale,updateAgeOnGet:le=this.updateAgeOnGet,noDeleteOnStaleGet:y=this.noDeleteOnStaleGet,status:h}=W,f=Q(this,L).get(I);if(f!==void 0){let g=Q(this,Y)[f],w=Me(this,O,Ze).call(this,g);return h&&Q(this,ve).call(this,h,f),Q(this,q).call(this,f)?(h&&(h.get="stale"),w?(h&&J&&g.__staleWhileFetching!==void 0&&(h.returnedStale=!0),J?g.__staleWhileFetching:void 0):(y||this.delete(I),h&&J&&(h.returnedStale=!0),J?g:void 0)):(h&&(h.get="hit"),w?g.__staleWhileFetching:(Me(this,O,cs).call(this,f),le&&Q(this,me).call(this,f),g))}else h&&(h.get="miss")}delete(I){var J,le,y,h;let W=!1;if(Q(this,U)!==0){let f=Q(this,L).get(I);if(f!==void 0)if(W=!0,Q(this,U)===1)this.clear();else{Q(this,X).call(this,f);let g=Q(this,Y)[f];Me(this,O,Ze).call(this,g)?g.__abortController.abort(new Error("deleted")):(Q(this,pe)||Q(this,ge))&&(Q(this,pe)&&((J=Q(this,R))==null||J.call(this,g,I,"delete")),Q(this,ge)&&((le=Q(this,ne))==null||le.push([g,I,"delete"]))),Q(this,L).delete(I),Q(this,j)[f]=void 0,Q(this,Y)[f]=void 0,f===Q(this,B)?Le(this,B,Q(this,re)[f]):f===Q(this,P)?Le(this,P,Q(this,se)[f]):(Q(this,se)[Q(this,re)[f]]=Q(this,se)[f],Q(this,re)[Q(this,se)[f]]=Q(this,re)[f]),Qs(this,U)._--,Q(this,oe).push(f)}}if(Q(this,ge)&&((y=Q(this,ne))!=null&&y.length)){let f=Q(this,ne),g;for(;g=f==null?void 0:f.shift();)(h=Q(this,S))==null||h.call(this,...g)}return W}clear(){var I,W,J;for(let le of Me(this,O,Sn).call(this,{allowStale:!0})){let y=Q(this,Y)[le];if(Me(this,O,Ze).call(this,y))y.__abortController.abort(new Error("deleted"));else{let h=Q(this,j)[le];Q(this,pe)&&((I=Q(this,R))==null||I.call(this,y,h,"delete")),Q(this,ge)&&((W=Q(this,ne))==null||W.push([y,h,"delete"]))}}if(Q(this,L).clear(),Q(this,Y).fill(void 0),Q(this,j).fill(void 0),Q(this,z)&&Q(this,ae)&&(Q(this,z).fill(0),Q(this,ae).fill(0)),Q(this,ue)&&Q(this,ue).fill(0),Le(this,P,0),Le(this,B,0),Q(this,oe).length=0,Le(this,x,0),Le(this,U,0),Q(this,ge)&&Q(this,ne)){let le=Q(this,ne),y;for(;y=le==null?void 0:le.shift();)(J=Q(this,S))==null||J.call(this,...y)}}},T=new WeakMap,N=new WeakMap,R=new WeakMap,S=new WeakMap,D=new WeakMap,U=new WeakMap,x=new WeakMap,L=new WeakMap,j=new WeakMap,Y=new WeakMap,se=new WeakMap,re=new WeakMap,P=new WeakMap,B=new WeakMap,oe=new WeakMap,ne=new WeakMap,ue=new WeakMap,ae=new WeakMap,z=new WeakMap,pe=new WeakMap,de=new WeakMap,ge=new WeakMap,O=new WeakSet,_h=function(){let I=new c(Q(this,T)),W=new c(Q(this,T));Le(this,z,I),Le(this,ae,W),Le(this,ye,(y,h,f=t.now())=>{if(W[y]=h!==0?f:0,I[y]=h,h!==0&&this.ttlAutopurge){let g=setTimeout(()=>{Q(this,q).call(this,y)&&this.delete(Q(this,j)[y])},h+1);g.unref&&g.unref()}}),Le(this,me,y=>{W[y]=I[y]!==0?t.now():0}),Le(this,ve,(y,h)=>{if(I[h]){let f=I[h],g=W[h];y.ttl=f,y.start=g,y.now=J||le();let w=y.now-g;y.remainingTTL=f-w}});let J=0,le=()=>{let y=t.now();if(this.ttlResolution>0){J=y;let h=setTimeout(()=>J=0,this.ttlResolution);h.unref&&h.unref()}return y};this.getRemainingTTL=y=>{let h=Q(this,L).get(y);if(h===void 0)return 0;let f=I[h],g=W[h];if(f===0||g===0)return 1/0;let w=(J||le())-g;return f-w},Le(this,q,y=>I[y]!==0&&W[y]!==0&&(J||le())-W[y]>I[y])},me=new WeakMap,ve=new WeakMap,ye=new WeakMap,q=new WeakMap,cw=function(){let I=new c(Q(this,T));Le(this,x,0),Le(this,ue,I),Le(this,X,W=>{Le(this,x,Q(this,x)-I[W]),I[W]=0}),Le(this,ce,(W,J,le,y)=>{if(Me(this,O,Ze).call(this,J))return 0;if(!l(le))if(y){if(typeof y!="function")throw new TypeError("sizeCalculation must be a function");if(le=y(J,W),!l(le))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return le}),Le(this,he,(W,J,le)=>{if(I[W]=J,Q(this,N)){let y=Q(this,N)-I[W];for(;Q(this,x)>y;)Me(this,O,Da).call(this,!0)}Le(this,x,Q(this,x)+I[W]),le&&(le.entrySize=J,le.totalCalculatedSize=Q(this,x))})},X=new WeakMap,he=new WeakMap,ce=new WeakMap,En=function*({allowStale:I=this.allowStale}={}){if(Q(this,U))for(let W=Q(this,B);!(!Me(this,O,bh).call(this,W)||((I||!Q(this,q).call(this,W))&&(yield W),W===Q(this,P)));)W=Q(this,re)[W]},Sn=function*({allowStale:I=this.allowStale}={}){if(Q(this,U))for(let W=Q(this,P);!(!Me(this,O,bh).call(this,W)||((I||!Q(this,q).call(this,W))&&(yield W),W===Q(this,B)));)W=Q(this,se)[W]},bh=function(I){return I!==void 0&&Q(this,L).get(Q(this,j)[I])===I},Da=function(I){var y,h;let W=Q(this,P),J=Q(this,j)[W],le=Q(this,Y)[W];return Q(this,de)&&Me(this,O,Ze).call(this,le)?le.__abortController.abort(new Error("evicted")):(Q(this,pe)||Q(this,ge))&&(Q(this,pe)&&((y=Q(this,R))==null||y.call(this,le,J,"evict")),Q(this,ge)&&((h=Q(this,ne))==null||h.push([le,J,"evict"]))),Q(this,X).call(this,W),I&&(Q(this,j)[W]=void 0,Q(this,Y)[W]=void 0,Q(this,oe).push(W)),Q(this,U)===1?(Le(this,P,Le(this,B,0)),Q(this,oe).length=0):Le(this,P,Q(this,se)[W]),Q(this,L).delete(J),Qs(this,U)._--,W},$a=function(I,W,J,le){let y=W===void 0?void 0:Q(this,Y)[W];if(Me(this,O,Ze).call(this,y))return y;let h=new i,{signal:f}=J;f==null||f.addEventListener("abort",()=>h.abort(f.reason),{signal:h.signal});let g={signal:h.signal,options:J,context:le},w=(Te,Oe=!1)=>{let{aborted:Re}=h.signal,Ve=J.ignoreFetchAbort&&Te!==void 0;if(J.status&&(Re&&!Oe?(J.status.fetchAborted=!0,J.status.fetchError=h.signal.reason,Ve&&(J.status.fetchAbortIgnored=!0)):J.status.fetchResolved=!0),Re&&!Ve&&!Oe)return V(h.signal.reason);let lt=xe;return Q(this,Y)[W]===xe&&(Te===void 0?lt.__staleWhileFetching?Q(this,Y)[W]=lt.__staleWhileFetching:this.delete(I):(J.status&&(J.status.fetchUpdated=!0),this.set(I,Te,g.options))),Te},C=Te=>(J.status&&(J.status.fetchRejected=!0,J.status.fetchError=Te),V(Te)),V=Te=>{let{aborted:Oe}=h.signal,Re=Oe&&J.allowStaleOnFetchAbort,Ve=Re||J.allowStaleOnFetchRejection,lt=Ve||J.noDeleteOnFetchRejection,Je=xe;if(Q(this,Y)[W]===xe&&(!lt||Je.__staleWhileFetching===void 0?this.delete(I):Re||(Q(this,Y)[W]=Je.__staleWhileFetching)),Ve)return J.status&&Je.__staleWhileFetching!==void 0&&(J.status.returnedStale=!0),Je.__staleWhileFetching;if(Je.__returned===Je)throw Te},fe=(Te,Oe)=>{var Ve;let Re=(Ve=Q(this,D))==null?void 0:Ve.call(this,I,y,g);Re&&Re instanceof Promise&&Re.then(lt=>Te(lt===void 0?void 0:lt),Oe),h.signal.addEventListener("abort",()=>{(!J.ignoreFetchAbort||J.allowStaleOnFetchAbort)&&(Te(void 0),J.allowStaleOnFetchAbort&&(Te=lt=>w(lt,!0)))})};J.status&&(J.status.fetchDispatched=!0);let xe=new Promise(fe).then(w,C),ke=Object.assign(xe,{__abortController:h,__staleWhileFetching:y,__returned:void 0});return W===void 0?(this.set(I,ke,{...g.options,status:void 0}),W=Q(this,L).get(I)):Q(this,Y)[W]=ke,ke},Ze=function(I){if(!Q(this,de))return!1;let W=I;return!!W&&W instanceof Promise&&W.hasOwnProperty("__staleWhileFetching")&&W.__abortController instanceof i},wh=function(I,W){Q(this,re)[W]=I,Q(this,se)[I]=W},cs=function(I){I!==Q(this,B)&&(I===Q(this,P)?Le(this,P,Q(this,se)[I]):Me(this,O,wh).call(this,Q(this,re)[I],Q(this,se)[I]),Me(this,O,wh).call(this,Q(this,B),I),Le(this,B,I))},$);e.LRUCache=p}),gn=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.ContainerIterator=e.Container=e.Base=void 0;var t=class{constructor(o=0){this.iteratorType=o}equals(o){return this.o===o.o}};e.ContainerIterator=t;var r=class{constructor(){this.i=0}get length(){return this.i}size(){return this.i}empty(){return this.i===0}};e.Base=r;var n=class extends r{};e.Container=n}),DO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=gn(),r=class extends t.Base{constructor(o=[]){super(),this.S=[];let i=this;o.forEach(function(s){i.push(s)})}clear(){this.i=0,this.S=[]}push(o){return this.S.push(o),this.i+=1,this.i}pop(){if(this.i!==0)return this.i-=1,this.S.pop()}top(){return this.S[this.i-1]}},n=r;e.default=n}),$O=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=gn(),r=class extends t.Base{constructor(o=[]){super(),this.j=0,this.q=[];let i=this;o.forEach(function(s){i.push(s)})}clear(){this.q=[],this.i=this.j=0}push(o){let i=this.q.length;if(this.j/i>.5&&this.j+this.i>=i&&i>4096){let s=this.i;for(let a=0;a<s;++a)this.q[a]=this.q[this.j+a];this.j=0,this.q[this.i]=o}else this.q[this.j+this.i]=o;return++this.i}pop(){if(this.i===0)return;let o=this.q[this.j++];return this.i-=1,o}front(){if(this.i!==0)return this.q[this.j]}},n=r;e.default=n}),UO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=gn(),r=class extends t.Base{constructor(o=[],i=function(a,l){return a>l?-1:a<l?1:0},s=!0){if(super(),this.v=i,Array.isArray(o))this.C=s?[...o]:o;else{this.C=[];let l=this;o.forEach(function(u){l.C.push(u)})}this.i=this.C.length;let a=this.i>>1;for(let l=this.i-1>>1;l>=0;--l)this.k(l,a)}m(o){let i=this.C[o];for(;o>0;){let s=o-1>>1,a=this.C[s];if(this.v(a,i)<=0)break;this.C[o]=a,o=s}this.C[o]=i}k(o,i){let s=this.C[o];for(;o<i;){let a=o<<1|1,l=a+1,u=this.C[a];if(l<this.i&&this.v(u,this.C[l])>0&&(a=l,u=this.C[l]),this.v(u,s)>=0)break;this.C[o]=u,o=a}this.C[o]=s}clear(){this.i=0,this.C.length=0}push(o){this.C.push(o),this.m(this.i),this.i+=1}pop(){if(this.i===0)return;let o=this.C[0],i=this.C.pop();return this.i-=1,this.i&&(this.C[0]=i,this.k(0,this.i>>1)),o}top(){return this.C[0]}find(o){return this.C.indexOf(o)>=0}remove(o){let i=this.C.indexOf(o);return i<0?!1:(i===0?this.pop():i===this.i-1?(this.C.pop(),this.i-=1):(this.C.splice(i,1,this.C.pop()),this.i-=1,this.m(i),this.k(i,this.i>>1)),!0)}updateItem(o){let i=this.C.indexOf(o);return i<0?!1:(this.m(i),this.k(i,this.i>>1),!0)}toArray(){return[...this.C]}},n=r;e.default=n}),Zd=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=gn(),r=class extends t.Container{},n=r;e.default=n}),mn=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.throwIteratorAccessError=t;function t(){throw new RangeError("Iterator access denied!")}}),fw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.RandomIterator=void 0;var t=gn(),r=mn(),n=class extends t.ContainerIterator{constructor(o,i){super(i),this.o=o,this.iteratorType===0?(this.pre=function(){return this.o===0&&(0,r.throwIteratorAccessError)(),this.o-=1,this},this.next=function(){return this.o===this.container.size()&&(0,r.throwIteratorAccessError)(),this.o+=1,this}):(this.pre=function(){return this.o===this.container.size()-1&&(0,r.throwIteratorAccessError)(),this.o+=1,this},this.next=function(){return this.o===-1&&(0,r.throwIteratorAccessError)(),this.o-=1,this})}get pointer(){return this.container.getElementByPos(this.o)}set pointer(o){this.container.setElementByPos(this.o,o)}};e.RandomIterator=n}),FO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(Zd()),r=fw();function n(a){return a&&a.t?a:{default:a}}var o=class hw extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new hw(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(a=[],l=!0){if(super(),Array.isArray(a))this.J=l?[...a]:a,this.i=a.length;else{this.J=[];let u=this;a.forEach(function(c){u.pushBack(c)})}}clear(){this.i=0,this.J.length=0}begin(){return new o(0,this)}end(){return new o(this.i,this)}rBegin(){return new o(this.i-1,this,1)}rEnd(){return new o(-1,this,1)}front(){return this.J[0]}back(){return this.J[this.i-1]}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J[a]}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J.splice(a,1),this.i-=1,this.i}eraseElementByValue(a){let l=0;for(let u=0;u<this.i;++u)this.J[u]!==a&&(this.J[l++]=this.J[u]);return this.i=this.J.length=l,this.i}eraseElementByIterator(a){let l=a.o;return a=a.next(),this.eraseElementByPos(l),a}pushBack(a){return this.J.push(a),this.i+=1,this.i}popBack(){if(this.i!==0)return this.i-=1,this.J.pop()}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;this.J[a]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;return this.J.splice(a,0,...new Array(u).fill(l)),this.i+=u,this.i}find(a){for(let l=0;l<this.i;++l)if(this.J[l]===a)return new o(l,this);return this.end()}reverse(){this.J.reverse()}unique(){let a=1;for(let l=1;l<this.i;++l)this.J[l]!==this.J[l-1]&&(this.J[a++]=this.J[l]);return this.i=this.J.length=a,this.i}sort(a){this.J.sort(a)}forEach(a){for(let l=0;l<this.i;++l)a(this.J[l],l,this)}[Symbol.iterator](){return(function*(){yield*this.J}).bind(this)()}},s=i;e.default=s}),jO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(Zd()),r=gn(),n=mn();function o(l){return l&&l.t?l:{default:l}}var i=class dw extends r.ContainerIterator{constructor(u,c,d,p){super(p),this.o=u,this.h=c,this.container=d,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l}set pointer(u){this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l=u}copy(){return new dw(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[]){super(),this.h={},this.p=this._=this.h.L=this.h.B=this.h;let u=this;l.forEach(function(c){u.pushBack(c)})}V(l){let{L:u,B:c}=l;u.B=c,c.L=u,l===this.p&&(this.p=c),l===this._&&(this._=u),this.i-=1}G(l,u){let c=u.B,d={l,L:u,B:c};u.B=d,c.L=d,u===this.h&&(this.p=d),c===this.h&&(this._=d),this.i+=1}clear(){this.i=0,this.p=this._=this.h.L=this.h.B=this.h}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.p.l}back(){return this._.l}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return u.l}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return this.V(u),this.i}eraseElementByValue(l){let u=this.p;for(;u!==this.h;)u.l===l&&this.V(u),u=u.B;return this.i}eraseElementByIterator(l){let u=l.o;return u===this.h&&(0,n.throwIteratorAccessError)(),l=l.next(),this.V(u),l}pushBack(l){return this.G(l,this._),this.i}popBack(){if(this.i===0)return;let l=this._.l;return this.V(this._),l}pushFront(l){return this.G(l,this.h),this.i}popFront(){if(this.i===0)return;let l=this.p.l;return this.V(this.p),l}setElementByPos(l,u){if(l<0||l>this.i-1)throw new RangeError;let c=this.p;for(;l--;)c=c.B;c.l=u}insert(l,u,c=1){if(l<0||l>this.i)throw new RangeError;if(c<=0)return this.i;if(l===0)for(;c--;)this.pushFront(u);else if(l===this.i)for(;c--;)this.pushBack(u);else{let d=this.p;for(let m=1;m<l;++m)d=d.B;let p=d.B;for(this.i+=c;c--;)d.B={l:u,L:d},d.B.L=d,d=d.B;d.B=p,p.L=d}return this.i}find(l){let u=this.p;for(;u!==this.h;){if(u.l===l)return new i(u,this.h,this);u=u.B}return this.end()}reverse(){if(this.i<=1)return;let l=this.p,u=this._,c=0;for(;c<<1<this.i;){let d=l.l;l.l=u.l,u.l=d,l=l.B,u=u.L,c+=1}}unique(){if(this.i<=1)return this.i;let l=this.p;for(;l!==this.h;){let u=l;for(;u.B!==this.h&&u.l===u.B.l;)u=u.B,this.i-=1;l.B=u.B,l.B.L=l,l=l.B}return this.i}sort(l){if(this.i<=1)return;let u=[];this.forEach(function(d){u.push(d)}),u.sort(l);let c=this.p;u.forEach(function(d){c.l=d,c=c.B})}merge(l){let u=this;if(this.i===0)l.forEach(function(c){u.pushBack(c)});else{let c=this.p;l.forEach(function(d){for(;c!==u.h&&c.l<=d;)c=c.B;u.G(d,c.L)})}return this.i}forEach(l){let u=this.p,c=0;for(;u!==this.h;)l(u.l,c++,this),u=u.B}[Symbol.iterator](){return(function*(){if(this.i===0)return;let l=this.p;for(;l!==this.h;)yield l.l,l=l.B}).bind(this)()}},a=s;e.default=a}),WO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(Zd()),r=fw();function n(a){return a&&a.t?a:{default:a}}var o=class pw extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new pw(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(a=[],l=4096){super(),this.j=0,this.D=0,this.R=0,this.N=0,this.P=0,this.A=[];let u=(()=>{if(typeof a.length=="number")return a.length;if(typeof a.size=="number")return a.size;if(typeof a.size=="function")return a.size();throw new TypeError("Cannot get the length or size of the container")})();this.F=l,this.P=Math.max(Math.ceil(u/this.F),1);for(let p=0;p<this.P;++p)this.A.push(new Array(this.F));let c=Math.ceil(u/this.F);this.j=this.R=(this.P>>1)-(c>>1),this.D=this.N=this.F-u%this.F>>1;let d=this;a.forEach(function(p){d.pushBack(p)})}T(){let a=[],l=Math.max(this.P>>1,1);for(let u=0;u<l;++u)a[u]=new Array(this.F);for(let u=this.j;u<this.P;++u)a[a.length]=this.A[u];for(let u=0;u<this.R;++u)a[a.length]=this.A[u];a[a.length]=[...this.A[this.R]],this.j=l,this.R=a.length-1;for(let u=0;u<l;++u)a[a.length]=new Array(this.F);this.A=a,this.P=a.length}O(a){let l=this.D+a+1,u=l%this.F,c=u-1,d=this.j+(l-u)/this.F;return u===0&&(d-=1),d%=this.P,c<0&&(c+=this.F),{curNodeBucketIndex:d,curNodePointerIndex:c}}clear(){this.A=[new Array(this.F)],this.P=1,this.j=this.R=this.i=0,this.D=this.N=this.F>>1}begin(){return new o(0,this)}end(){return new o(this.i,this)}rBegin(){return new o(this.i-1,this,1)}rEnd(){return new o(-1,this,1)}front(){if(this.i!==0)return this.A[this.j][this.D]}back(){if(this.i!==0)return this.A[this.R][this.N]}pushBack(a){return this.i&&(this.N<this.F-1?this.N+=1:this.R<this.P-1?(this.R+=1,this.N=0):(this.R=0,this.N=0),this.R===this.j&&this.N===this.D&&this.T()),this.i+=1,this.A[this.R][this.N]=a,this.i}popBack(){if(this.i===0)return;let a=this.A[this.R][this.N];return this.i!==1&&(this.N>0?this.N-=1:this.R>0?(this.R-=1,this.N=this.F-1):(this.R=this.P-1,this.N=this.F-1)),this.i-=1,a}pushFront(a){return this.i&&(this.D>0?this.D-=1:this.j>0?(this.j-=1,this.D=this.F-1):(this.j=this.P-1,this.D=this.F-1),this.j===this.R&&this.D===this.N&&this.T()),this.i+=1,this.A[this.j][this.D]=a,this.i}popFront(){if(this.i===0)return;let a=this.A[this.j][this.D];return this.i!==1&&(this.D<this.F-1?this.D+=1:this.j<this.P-1?(this.j+=1,this.D=0):(this.j=0,this.D=0)),this.i-=1,a}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.A[l][u]}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:u,curNodePointerIndex:c}=this.O(a);this.A[u][c]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;if(a===0)for(;u--;)this.pushFront(l);else if(a===this.i)for(;u--;)this.pushBack(l);else{let c=[];for(let d=a;d<this.i;++d)c.push(this.getElementByPos(d));this.cut(a-1);for(let d=0;d<u;++d)this.pushBack(l);for(let d=0;d<c.length;++d)this.pushBack(c[d])}return this.i}cut(a){if(a<0)return this.clear(),0;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.R=l,this.N=u,this.i=a+1,this.i}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;if(a===0)this.popFront();else if(a===this.i-1)this.popBack();else{let l=[];for(let c=a+1;c<this.i;++c)l.push(this.getElementByPos(c));this.cut(a),this.popBack();let u=this;l.forEach(function(c){u.pushBack(c)})}return this.i}eraseElementByValue(a){if(this.i===0)return 0;let l=[];for(let c=0;c<this.i;++c){let d=this.getElementByPos(c);d!==a&&l.push(d)}let u=l.length;for(let c=0;c<u;++c)this.setElementByPos(c,l[c]);return this.cut(u-1)}eraseElementByIterator(a){let l=a.o;return this.eraseElementByPos(l),a=a.next(),a}find(a){for(let l=0;l<this.i;++l)if(this.getElementByPos(l)===a)return new o(l,this);return this.end()}reverse(){let a=0,l=this.i-1;for(;a<l;){let u=this.getElementByPos(a);this.setElementByPos(a,this.getElementByPos(l)),this.setElementByPos(l,u),a+=1,l-=1}}unique(){if(this.i<=1)return this.i;let a=1,l=this.getElementByPos(0);for(let u=1;u<this.i;++u){let c=this.getElementByPos(u);c!==l&&(l=c,this.setElementByPos(a++,c))}for(;this.i>a;)this.popBack();return this.i}sort(a){let l=[];for(let u=0;u<this.i;++u)l.push(this.getElementByPos(u));l.sort(a);for(let u=0;u<this.i;++u)this.setElementByPos(u,l[u])}shrinkToFit(){if(this.i===0)return;let a=[];this.forEach(function(l){a.push(l)}),this.P=Math.max(Math.ceil(this.i/this.F),1),this.i=this.j=this.R=this.D=this.N=0,this.A=[];for(let l=0;l<this.P;++l)this.A.push(new Array(this.F));for(let l=0;l<a.length;++l)this.pushBack(a[l])}forEach(a){for(let l=0;l<this.i;++l)a(this.getElementByPos(l),l,this)}[Symbol.iterator](){return(function*(){for(let a=0;a<this.i;++a)yield this.getElementByPos(a)}).bind(this)()}},s=i;e.default=s}),HO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.TreeNodeEnableIndex=e.TreeNode=void 0;var t=class{constructor(n,o){this.ee=1,this.u=void 0,this.l=void 0,this.U=void 0,this.W=void 0,this.tt=void 0,this.u=n,this.l=o}L(){let n=this;if(n.ee===1&&n.tt.tt===n)n=n.W;else if(n.U)for(n=n.U;n.W;)n=n.W;else{let o=n.tt;for(;o.U===n;)n=o,o=n.tt;n=o}return n}B(){let n=this;if(n.W){for(n=n.W;n.U;)n=n.U;return n}else{let o=n.tt;for(;o.W===n;)n=o,o=n.tt;return n.W!==o?o:n}}te(){let n=this.tt,o=this.W,i=o.U;return n.tt===this?n.tt=o:n.U===this?n.U=o:n.W=o,o.tt=n,o.U=this,this.tt=o,this.W=i,i&&(i.tt=this),o}se(){let n=this.tt,o=this.U,i=o.W;return n.tt===this?n.tt=o:n.U===this?n.U=o:n.W=o,o.tt=n,o.W=this,this.tt=o,this.U=i,i&&(i.tt=this),o}};e.TreeNode=t;var r=class extends t{constructor(){super(...arguments),this.rt=1}te(){let n=super.te();return this.ie(),n.ie(),n}se(){let n=super.se();return this.ie(),n.ie(),n}ie(){this.rt=1,this.U&&(this.rt+=this.U.rt),this.W&&(this.rt+=this.W.rt)}};e.TreeNodeEnableIndex=r}),gw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=HO(),r=gn(),n=mn(),o=class extends r.Container{constructor(s=function(l,u){return l<u?-1:l>u?1:0},a=!1){super(),this.Y=void 0,this.v=s,a?(this.re=t.TreeNodeEnableIndex,this.M=function(l,u,c){let d=this.ne(l,u,c);if(d){let p=d.tt;for(;p!==this.h;)p.rt+=1,p=p.tt;let m=this.he(d);if(m){let{parentNode:_,grandParent:b,curNode:T}=m;_.ie(),b.ie(),T.ie()}}return this.i},this.V=function(l){let u=this.fe(l);for(;u!==this.h;)u.rt-=1,u=u.tt}):(this.re=t.TreeNode,this.M=function(l,u,c){let d=this.ne(l,u,c);return d&&this.he(d),this.i},this.V=this.fe),this.h=new this.re}X(s,a){let l=this.h;for(;s;){let u=this.v(s.u,a);if(u<0)s=s.W;else if(u>0)l=s,s=s.U;else return s}return l}Z(s,a){let l=this.h;for(;s;)this.v(s.u,a)<=0?s=s.W:(l=s,s=s.U);return l}$(s,a){let l=this.h;for(;s;){let u=this.v(s.u,a);if(u<0)l=s,s=s.W;else if(u>0)s=s.U;else return s}return l}rr(s,a){let l=this.h;for(;s;)this.v(s.u,a)<0?(l=s,s=s.W):s=s.U;return l}ue(s){for(;;){let a=s.tt;if(a===this.h)return;if(s.ee===1){s.ee=0;return}if(s===a.U){let l=a.W;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.te():a.te();else if(l.W&&l.W.ee===1){l.ee=a.ee,a.ee=0,l.W.ee=0,a===this.Y?this.Y=a.te():a.te();return}else l.U&&l.U.ee===1?(l.ee=1,l.U.ee=0,l.se()):(l.ee=1,s=a)}else{let l=a.U;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.se():a.se();else if(l.U&&l.U.ee===1){l.ee=a.ee,a.ee=0,l.U.ee=0,a===this.Y?this.Y=a.se():a.se();return}else l.W&&l.W.ee===1?(l.ee=1,l.W.ee=0,l.te()):(l.ee=1,s=a)}}}fe(s){if(this.i===1)return this.clear(),this.h;let a=s;for(;a.U||a.W;){if(a.W)for(a=a.W;a.U;)a=a.U;else a=a.U;[s.u,a.u]=[a.u,s.u],[s.l,a.l]=[a.l,s.l],s=a}this.h.U===a?this.h.U=a.tt:this.h.W===a&&(this.h.W=a.tt),this.ue(a);let l=a.tt;return a===l.U?l.U=void 0:l.W=void 0,this.i-=1,this.Y.ee=0,l}oe(s,a){return s===void 0?!1:this.oe(s.U,a)||a(s)?!0:this.oe(s.W,a)}he(s){for(;;){let a=s.tt;if(a.ee===0)return;let l=a.tt;if(a===l.U){let u=l.W;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,s=l;continue}else if(s===a.W){if(s.ee=0,s.U&&(s.U.tt=a),s.W&&(s.W.tt=l),a.W=s.U,l.U=s.W,s.U=a,s.W=l,l===this.Y)this.Y=s,this.h.tt=s;else{let c=l.tt;c.U===l?c.U=s:c.W=s}return s.tt=l.tt,a.tt=s,l.tt=s,l.ee=1,{parentNode:a,grandParent:l,curNode:s}}else a.ee=0,l===this.Y?this.Y=l.se():l.se(),l.ee=1}else{let u=l.U;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,s=l;continue}else if(s===a.U){if(s.ee=0,s.U&&(s.U.tt=l),s.W&&(s.W.tt=a),l.W=s.U,a.U=s.W,s.U=l,s.W=a,l===this.Y)this.Y=s,this.h.tt=s;else{let c=l.tt;c.U===l?c.U=s:c.W=s}return s.tt=l.tt,a.tt=s,l.tt=s,l.ee=1,{parentNode:a,grandParent:l,curNode:s}}else a.ee=0,l===this.Y?this.Y=l.te():l.te(),l.ee=1}return}}ne(s,a,l){if(this.Y===void 0){this.i+=1,this.Y=new this.re(s,a),this.Y.ee=0,this.Y.tt=this.h,this.h.tt=this.Y,this.h.U=this.Y,this.h.W=this.Y;return}let u,c=this.h.U,d=this.v(c.u,s);if(d===0){c.l=a;return}else if(d>0)c.U=new this.re(s,a),c.U.tt=c,u=c.U,this.h.U=u;else{let p=this.h.W,m=this.v(p.u,s);if(m===0){p.l=a;return}else if(m<0)p.W=new this.re(s,a),p.W.tt=p,u=p.W,this.h.W=u;else{if(l!==void 0){let _=l.o;if(_!==this.h){let b=this.v(_.u,s);if(b===0){_.l=a;return}else if(b>0){let T=_.L(),N=this.v(T.u,s);if(N===0){T.l=a;return}else N<0&&(u=new this.re(s,a),T.W===void 0?(T.W=u,u.tt=T):(_.U=u,u.tt=_))}}}if(u===void 0)for(u=this.Y;;){let _=this.v(u.u,s);if(_>0){if(u.U===void 0){u.U=new this.re(s,a),u.U.tt=u,u=u.U;break}u=u.U}else if(_<0){if(u.W===void 0){u.W=new this.re(s,a),u.W.tt=u,u=u.W;break}u=u.W}else{u.l=a;return}}}}return this.i+=1,u}I(s,a){for(;s;){let l=this.v(s.u,a);if(l<0)s=s.W;else if(l>0)s=s.U;else return s}return s||this.h}clear(){this.i=0,this.Y=void 0,this.h.tt=void 0,this.h.U=this.h.W=void 0}updateKeyByIterator(s,a){let l=s.o;if(l===this.h&&(0,n.throwIteratorAccessError)(),this.i===1)return l.u=a,!0;if(l===this.h.U)return this.v(l.B().u,a)>0?(l.u=a,!0):!1;if(l===this.h.W)return this.v(l.L().u,a)<0?(l.u=a,!0):!1;let u=l.L().u;if(this.v(u,a)>=0)return!1;let c=l.B().u;return this.v(c,a)<=0?!1:(l.u=a,!0)}eraseElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a=0,l=this;return this.oe(this.Y,function(u){return s===a?(l.V(u),!0):(a+=1,!1)}),this.i}eraseElementByKey(s){if(this.i===0)return!1;let a=this.I(this.Y,s);return a===this.h?!1:(this.V(a),!0)}eraseElementByIterator(s){let a=s.o;a===this.h&&(0,n.throwIteratorAccessError)();let l=a.W===void 0;return s.iteratorType===0?l&&s.next():(!l||a.U===void 0)&&s.next(),this.V(a),s}forEach(s){let a=0;for(let l of this)s(l,a++,this)}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a,l=0;for(let u of this){if(l===s){a=u;break}l+=1}return a}getHeight(){if(this.i===0)return 0;let s=function(a){return a?Math.max(s(a.U),s(a.W))+1:0};return s(this.Y)}},i=o;e.default=i}),mw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=gn(),r=mn(),n=class extends t.ContainerIterator{constructor(i,s,a){super(a),this.o=i,this.h=s,this.iteratorType===0?(this.pre=function(){return this.o===this.h.U&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this}):(this.pre=function(){return this.o===this.h.W&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this})}get index(){let i=this.o,s=this.h.tt;if(i===this.h)return s?s.rt-1:0;let a=0;for(i.U&&(a+=i.U.rt);i!==s;){let l=i.tt;i===l.W&&(a+=1,l.U&&(a+=l.U.rt)),i=l}return a}},o=n;e.default=o}),VO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(gw()),r=o(mw()),n=mn();function o(l){return l&&l.t?l:{default:l}}var i=class yw extends r.default{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.u}copy(){return new yw(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[],u,c){super(u,c);let d=this;l.forEach(function(p){d.insert(p)})}*K(l){l!==void 0&&(yield*this.K(l.U),yield l.u,yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.h.U?this.h.U.u:void 0}back(){return this.h.W?this.h.W.u:void 0}insert(l,u){return this.M(l,void 0,u)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}union(l){let u=this;return l.forEach(function(c){u.insert(c)}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=s;e.default=a}),qO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(gw()),r=o(mw()),n=mn();function o(l){return l&&l.t?l:{default:l}}var i=class _w extends r.default{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,d){if(d==="0")return u.o.u;if(d==="1")return u.o.l},set(c,d,p){if(d!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new _w(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[],u,c){super(u,c);let d=this;l.forEach(function(p){d.setElement(p[0],p[1])})}*K(l){l!==void 0&&(yield*this.K(l.U),yield[l.u,l.l],yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i===0)return;let l=this.h.U;return[l.u,l.l]}back(){if(this.i===0)return;let l=this.h.W;return[l.u,l.l]}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}setElement(l,u,c){return this.M(l,u,c)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}getElementByKey(l){return this.I(this.Y,l).l}union(l){let u=this;return l.forEach(function(c){u.setElement(c[0],c[1])}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=s;e.default=a}),bw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=t;function t(r){let n=typeof r;return n==="object"&&r!==null||n==="function"}}),ww=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.HashContainerIterator=e.HashContainer=void 0;var t=gn(),r=o(bw()),n=mn();function o(a){return a&&a.t?a:{default:a}}var i=class extends t.ContainerIterator{constructor(a,l,u){super(u),this.o=a,this.h=l,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}};e.HashContainerIterator=i;var s=class extends t.Container{constructor(){super(),this.H=[],this.g={},this.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(this.g,null),this.h={},this.h.L=this.h.B=this.p=this._=this.h}V(a){let{L:l,B:u}=a;l.B=u,u.L=l,a===this.p&&(this.p=u),a===this._&&(this._=l),this.i-=1}M(a,l,u){u===void 0&&(u=(0,r.default)(a));let c;if(u){let d=a[this.HASH_TAG];if(d!==void 0)return this.H[d].l=l,this.i;Object.defineProperty(a,this.HASH_TAG,{value:this.H.length,configurable:!0}),c={u:a,l,L:this._,B:this.h},this.H.push(c)}else{let d=this.g[a];if(d)return d.l=l,this.i;c={u:a,l,L:this._,B:this.h},this.g[a]=c}return this.i===0?(this.p=c,this.h.B=c):this._.B=c,this._=c,this.h.L=c,++this.i}I(a,l){if(l===void 0&&(l=(0,r.default)(a)),l){let u=a[this.HASH_TAG];return u===void 0?this.h:this.H[u]}else return this.g[a]||this.h}clear(){let a=this.HASH_TAG;this.H.forEach(function(l){delete l.u[a]}),this.H=[],this.g={},Object.setPrototypeOf(this.g,null),this.i=0,this.p=this._=this.h.L=this.h.B=this.h}eraseElementByKey(a,l){let u;if(l===void 0&&(l=(0,r.default)(a)),l){let c=a[this.HASH_TAG];if(c===void 0)return!1;delete a[this.HASH_TAG],u=this.H[c],delete this.H[c]}else{if(u=this.g[a],u===void 0)return!1;delete this.g[a]}return this.V(u),!0}eraseElementByIterator(a){let l=a.o;return l===this.h&&(0,n.throwIteratorAccessError)(),this.V(l),a.next()}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let l=this.p;for(;a--;)l=l.B;return this.V(l),this.i}};e.HashContainer=s}),KO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=ww(),r=mn(),n=class vw extends t.HashContainerIterator{constructor(a,l,u,c){super(a,l,c),this.container=u}get pointer(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o.u}copy(){return new vw(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.HashContainer{constructor(s=[]){super();let a=this;s.forEach(function(l){a.insert(l)})}begin(){return new n(this.p,this.h,this)}end(){return new n(this.h,this.h,this)}rBegin(){return new n(this._,this.h,this,1)}rEnd(){return new n(this.h,this.h,this,1)}front(){return this.p.u}back(){return this._.u}insert(s,a){return this.M(s,void 0,a)}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a=this.p;for(;s--;)a=a.B;return a.u}find(s,a){let l=this.I(s,a);return new n(l,this.h,this)}forEach(s){let a=0,l=this.p;for(;l!==this.h;)s(l.u,a++,this),l=l.B}[Symbol.iterator](){return(function*(){let s=this.p;for(;s!==this.h;)yield s.u,s=s.B}).bind(this)()}},i=o;e.default=i}),YO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=ww(),r=o(bw()),n=mn();function o(l){return l&&l.t?l:{default:l}}var i=class Ew extends t.HashContainerIterator{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,d){if(d==="0")return u.o.u;if(d==="1")return u.o.l},set(c,d,p){if(d!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new Ew(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.HashContainer{constructor(l=[]){super();let u=this;l.forEach(function(c){u.setElement(c[0],c[1])})}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i!==0)return[this.p.u,this.p.l]}back(){if(this.i!==0)return[this._.u,this._.l]}setElement(l,u,c){return this.M(l,u,c)}getElementByKey(l,u){if(u===void 0&&(u=(0,r.default)(l)),u){let d=l[this.HASH_TAG];return d!==void 0?this.H[d].l:void 0}let c=this.g[l];return c?c.l:void 0}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return[u.u,u.l]}find(l,u){let c=this.I(l,u);return new i(c,this.h,this)}forEach(l){let u=0,c=this.p;for(;c!==this.h;)l([c.u,c.l],u++,this),c=c.B}[Symbol.iterator](){return(function*(){let l=this.p;for(;l!==this.h;)yield[l.u,l.l],l=l.B}).bind(this)()}},a=s;e.default=a}),zO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),Object.defineProperty(e,"Deque",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"HashMap",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"HashSet",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"LinkList",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"OrderedMap",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"OrderedSet",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"PriorityQueue",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"Queue",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"Stack",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"Vector",{enumerable:!0,get:function(){return o.default}});var t=d(DO()),r=d($O()),n=d(UO()),o=d(FO()),i=d(jO()),s=d(WO()),a=d(VO()),l=d(qO()),u=d(KO()),c=d(YO());function d(p){return p&&p.t?p:{default:p}}}),GO=Ae((e,t)=>{_e(),we(),be();var r=zO().OrderedSet,n=sn()("number-allocator:trace"),o=sn()("number-allocator:error");function i(a,l){this.low=a,this.high=l}i.prototype.equals=function(a){return this.low===a.low&&this.high===a.high},i.prototype.compare=function(a){return this.low<a.low&&this.high<a.low?-1:a.low<this.low&&a.high<this.low?1:0};function s(a,l){if(!(this instanceof s))return new s(a,l);this.min=a,this.max=l,this.ss=new r([],(u,c)=>u.compare(c)),n("Create"),this.clear()}s.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low},s.prototype.alloc=function(){if(this.ss.size()===0)return n("alloc():empty"),null;let a=this.ss.begin(),l=a.pointer.low,u=a.pointer.high,c=l;return c+1<=u?this.ss.updateKeyByIterator(a,new i(l+1,u)):this.ss.eraseElementByPos(0),n("alloc():"+c),c},s.prototype.use=function(a){let l=new i(a,a),u=this.ss.lowerBound(l);if(!u.equals(this.ss.end())){let c=u.pointer.low,d=u.pointer.high;return u.pointer.equals(l)?(this.ss.eraseElementByIterator(u),n("use():"+a),!0):c>a?!1:c===a?(this.ss.updateKeyByIterator(u,new i(c+1,d)),n("use():"+a),!0):d===a?(this.ss.updateKeyByIterator(u,new i(c,d-1)),n("use():"+a),!0):(this.ss.updateKeyByIterator(u,new i(a+1,d)),this.ss.insert(new i(c,a-1)),n("use():"+a),!0)}return n("use():failed"),!1},s.prototype.free=function(a){if(a<this.min||a>this.max){o("free():"+a+" is out of range");return}let l=new i(a,a),u=this.ss.upperBound(l);if(u.equals(this.ss.end())){if(u.equals(this.ss.begin())){this.ss.insert(l);return}u.pre();let c=u.pointer.high;u.pointer.high+1===a?this.ss.updateKeyByIterator(u,new i(c,a)):this.ss.insert(l)}else if(u.equals(this.ss.begin()))if(a+1===u.pointer.low){let c=u.pointer.high;this.ss.updateKeyByIterator(u,new i(a,c))}else this.ss.insert(l);else{let c=u.pointer.low,d=u.pointer.high;u.pre();let p=u.pointer.low;u.pointer.high+1===a?a+1===c?(this.ss.eraseElementByIterator(u),this.ss.updateKeyByIterator(u,new i(p,d))):this.ss.updateKeyByIterator(u,new i(p,a)):a+1===c?(this.ss.eraseElementByIterator(u.next()),this.ss.insert(new i(a,d))):this.ss.insert(l)}n("free():"+a)},s.prototype.clear=function(){n("clear()"),this.ss.clear(),this.ss.insert(new i(this.min,this.max))},s.prototype.intervalCount=function(){return this.ss.size()},s.prototype.dump=function(){console.log("length:"+this.ss.size());for(let a of this.ss)console.log(a)},t.exports=s}),Sw=Ae((e,t)=>{_e(),we(),be();var r=GO();t.exports.NumberAllocator=r}),QO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=BO(),r=Sw(),n=class{constructor(o){o>0&&(this.aliasToTopic=new t.LRUCache({max:o}),this.topicToAlias={},this.numberAllocator=new r.NumberAllocator(1,o),this.max=o,this.length=0)}put(o,i){if(i===0||i>this.max)return!1;let s=this.aliasToTopic.get(i);return s&&delete this.topicToAlias[s],this.aliasToTopic.set(i,o),this.topicToAlias[o]=i,this.numberAllocator.use(i),this.length=this.aliasToTopic.size,!0}getTopicByAlias(o){return this.aliasToTopic.get(o)}getAliasByTopic(o){let i=this.topicToAlias[o];return typeof i<"u"&&this.aliasToTopic.get(i),i}clear(){this.aliasToTopic.clear(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0}getLruAlias(){return this.numberAllocator.firstVacant()||[...this.aliasToTopic.keys()][this.aliasToTopic.size-1]}};e.default=n}),XO=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(e,"__esModule",{value:!0});var r=nu(),n=t(QO()),o=Ho(),i=(s,a)=>{s.log("_handleConnack");let{options:l}=s,u=l.protocolVersion===5?a.reasonCode:a.returnCode;if(clearTimeout(s.connackTimer),delete s.topicAliasSend,a.properties){if(a.properties.topicAliasMaximum){if(a.properties.topicAliasMaximum>65535){s.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}a.properties.topicAliasMaximum>0&&(s.topicAliasSend=new n.default(a.properties.topicAliasMaximum))}a.properties.serverKeepAlive&&l.keepalive&&(l.keepalive=a.properties.serverKeepAlive),a.properties.maximumPacketSize&&(l.properties||(l.properties={}),l.properties.maximumPacketSize=a.properties.maximumPacketSize)}if(u===0)s.reconnecting=!1,s._onConnect(a);else if(u>0){let c=new o.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[u]}`,u);s.emit("error",c)}};e.default=i}),JO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=(r,n,o)=>{r.log("handling pubrel packet");let i=typeof o<"u"?o:r.noop,{messageId:s}=n,a={cmd:"pubcomp",messageId:s};r.incomingStore.get(n,(l,u)=>{l?r._sendPacket(a,i):(r.emit("message",u.topic,u.payload,u),r.handleMessage(u,c=>{if(c)return i(c);r.incomingStore.del(u,r.noop),r._sendPacket(a,i)}))})};e.default=t}),ZO=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(MO()),n=t(LO()),o=t(XO()),i=t(nu()),s=t(JO()),a=(l,u,c)=>{let{options:d}=l;if(d.protocolVersion===5&&d.properties&&d.properties.maximumPacketSize&&d.properties.maximumPacketSize<u.length)return l.emit("error",new Error(`exceeding packets size ${u.cmd}`)),l.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),l;switch(l.log("_handlePacket :: emitting packetreceive"),l.emit("packetreceive",u),u.cmd){case"publish":(0,r.default)(l,u,c);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":l.reschedulePing(),(0,i.default)(l,u),c();break;case"pubrel":l.reschedulePing(),(0,s.default)(l,u,c);break;case"connack":(0,o.default)(l,u),c();break;case"auth":l.reschedulePing(),(0,n.default)(l,u),c();break;case"pingresp":l.log("_handlePacket :: received pingresp"),l.reschedulePing(!0),c();break;case"disconnect":l.emit("disconnect",u),c();break;default:l.log("_handlePacket :: unknown command"),c();break}};e.default=a}),ek=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(e,"__esModule",{value:!0}),e.TypedEventEmitter=void 0;var r=t((Wo(),ze(Di))),n=Ho(),o=class{};e.TypedEventEmitter=o,(0,n.applyMixin)(o,r.default)}),iu=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.isReactNativeBrowser=e.isWebWorker=void 0;var t=()=>{var i;return typeof window<"u"?typeof navigator<"u"&&((i=navigator.userAgent)===null||i===void 0?void 0:i.toLowerCase().indexOf(" electron/"))>-1&&He!=null&&He.versions?!Object.prototype.hasOwnProperty.call(He.versions,"electron"):typeof window.document<"u":!1},r=()=>{var i,s;return!!(typeof self=="object"&&!((s=(i=self==null?void 0:self.constructor)===null||i===void 0?void 0:i.name)===null||s===void 0)&&s.includes("WorkerGlobalScope"))},n=()=>typeof navigator<"u"&&navigator.product==="ReactNative",o=t()||r()||n();e.isWebWorker=r(),e.isReactNativeBrowser=n(),e.default=o}),tk=Ae((e,t)=>{_e(),we(),be(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.fastUniqueNumbers={}))}(e,function(r){var n=function(m){return function(_){var b=m(_);return _.add(b),b}},o=function(m){return function(_,b){return m.set(_,b),b}},i=Number.MAX_SAFE_INTEGER===void 0?9007199254740991:Number.MAX_SAFE_INTEGER,s=536870912,a=s*2,l=function(m,_){return function(b){var T=_.get(b),N=T===void 0?b.size:T<a?T+1:0;if(!b.has(N))return m(b,N);if(b.size<s){for(;b.has(N);)N=Math.floor(Math.random()*a);return m(b,N)}if(b.size>i)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;b.has(N);)N=Math.floor(Math.random()*i);return m(b,N)}},u=new WeakMap,c=o(u),d=l(c,u),p=n(d);r.addUniqueNumber=p,r.generateUniqueNumber=d})}),rk=Ae((e,t)=>{_e(),we(),be(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,tk()):typeof define=="function"&&define.amd?define(["exports","fast-unique-numbers"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimersBroker={},r.fastUniqueNumbers))}(e,function(r,n){var o=function(a){return a.method!==void 0&&a.method==="call"},i=function(a){return a.error===null&&typeof a.id=="number"},s=function(a){var l=new Map([[0,function(){}]]),u=new Map([[0,function(){}]]),c=new Map,d=new Worker(a);d.addEventListener("message",function(T){var N=T.data;if(o(N)){var R=N.params,S=R.timerId,D=R.timerType;if(D==="interval"){var U=l.get(S);if(typeof U=="number"){var x=c.get(U);if(x===void 0||x.timerId!==S||x.timerType!==D)throw new Error("The timer is in an undefined state.")}else if(typeof U<"u")U();else throw new Error("The timer is in an undefined state.")}else if(D==="timeout"){var L=u.get(S);if(typeof L=="number"){var j=c.get(L);if(j===void 0||j.timerId!==S||j.timerType!==D)throw new Error("The timer is in an undefined state.")}else if(typeof L<"u")L(),u.delete(S);else throw new Error("The timer is in an undefined state.")}}else if(i(N)){var Y=N.id,se=c.get(Y);if(se===void 0)throw new Error("The timer is in an undefined state.");var re=se.timerId,P=se.timerType;c.delete(Y),P==="interval"?l.delete(re):u.delete(re)}else{var B=N.error.message;throw new Error(B)}});var p=function(T){var N=n.generateUniqueNumber(c);c.set(N,{timerId:T,timerType:"interval"}),l.set(T,N),d.postMessage({id:N,method:"clear",params:{timerId:T,timerType:"interval"}})},m=function(T){var N=n.generateUniqueNumber(c);c.set(N,{timerId:T,timerType:"timeout"}),u.set(T,N),d.postMessage({id:N,method:"clear",params:{timerId:T,timerType:"timeout"}})},_=function(T){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,R=n.generateUniqueNumber(l);return l.set(R,function(){T(),typeof l.get(R)=="function"&&d.postMessage({id:null,method:"set",params:{delay:N,now:performance.now(),timerId:R,timerType:"interval"}})}),d.postMessage({id:null,method:"set",params:{delay:N,now:performance.now(),timerId:R,timerType:"interval"}}),R},b=function(T){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,R=n.generateUniqueNumber(u);return u.set(R,T),d.postMessage({id:null,method:"set",params:{delay:N,now:performance.now(),timerId:R,timerType:"timeout"}}),R};return{clearInterval:p,clearTimeout:m,setInterval:_,setTimeout:b}};r.load=s})}),nk=Ae((e,t)=>{_e(),we(),be(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,rk()):typeof define=="function"&&define.amd?define(["exports","worker-timers-broker"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimers={},r.workerTimersBroker))}(e,function(r,n){var o=function(d,p){var m=null;return function(){if(m!==null)return m;var _=new Blob([p],{type:"application/javascript; charset=utf-8"}),b=URL.createObjectURL(_);return m=d(b),setTimeout(function(){return URL.revokeObjectURL(b)}),m}},i=`(()=>{var e={472:(e,t,r)=>{var o,i;void 0===(i="function"==typeof(o=function(){"use strict";var e=new Map,t=new Map,r=function(t){var r=e.get(t);if(void 0===r)throw new Error('There is no interval scheduled with the given id "'.concat(t,'".'));clearTimeout(r),e.delete(t)},o=function(e){var r=t.get(e);if(void 0===r)throw new Error('There is no timeout scheduled with the given id "'.concat(e,'".'));clearTimeout(r),t.delete(e)},i=function(e,t){var r,o=performance.now();return{expected:o+(r=e-Math.max(0,o-t)),remainingDelay:r}},n=function e(t,r,o,i){var n=performance.now();n>o?postMessage({id:null,method:"call",params:{timerId:r,timerType:i}}):t.set(r,setTimeout(e,o-n,t,r,o,i))},a=function(t,r,o){var a=i(t,o),s=a.expected,d=a.remainingDelay;e.set(r,setTimeout(n,d,e,r,s,"interval"))},s=function(e,r,o){var a=i(e,o),s=a.expected,d=a.remainingDelay;t.set(r,setTimeout(n,d,t,r,s,"timeout"))};addEventListener("message",(function(e){var t=e.data;try{if("clear"===t.method){var i=t.id,n=t.params,d=n.timerId,c=n.timerType;if("interval"===c)r(d),postMessage({error:null,id:i});else{if("timeout"!==c)throw new Error('The given type "'.concat(c,'" is not supported'));o(d),postMessage({error:null,id:i})}}else{if("set"!==t.method)throw new Error('The given method "'.concat(t.method,'" is not supported'));var u=t.params,l=u.delay,p=u.now,m=u.timerId,v=u.timerType;if("interval"===v)a(l,m,p);else{if("timeout"!==v)throw new Error('The given type "'.concat(v,'" is not supported'));s(l,m,p)}}}catch(e){postMessage({error:{message:e.message},id:t.id,result:null})}}))})?o.call(t,r,t,e):o)||(e.exports=i)}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(472)})()})();`,s=o(n.load,i),a=function(d){return s().clearInterval(d)},l=function(d){return s().clearTimeout(d)},u=function(){var d;return(d=s()).setInterval.apply(d,arguments)},c=function(){var d;return(d=s()).setTimeout.apply(d,arguments)};r.clearInterval=a,r.clearTimeout=l,r.setInterval=u,r.setTimeout=c})}),ik=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(u,c,d,p){p===void 0&&(p=d);var m=Object.getOwnPropertyDescriptor(c,d);(!m||("get"in m?!c.__esModule:m.writable||m.configurable))&&(m={enumerable:!0,get:function(){return c[d]}}),Object.defineProperty(u,p,m)}:function(u,c,d,p){p===void 0&&(p=d),u[p]=c[d]}),r=e&&e.__setModuleDefault||(Object.create?function(u,c){Object.defineProperty(u,"default",{enumerable:!0,value:c})}:function(u,c){u.default=c}),n=e&&e.__importStar||function(u){if(u&&u.__esModule)return u;var c={};if(u!=null)for(var d in u)d!=="default"&&Object.prototype.hasOwnProperty.call(u,d)&&t(c,u,d);return r(c,u),c};Object.defineProperty(e,"__esModule",{value:!0});var o=n(iu()),i=nk(),s={set:i.setInterval,clear:i.clearInterval},a={set:(u,c)=>setInterval(u,c),clear:u=>clearInterval(u)},l=u=>{switch(u){case"native":return a;case"worker":return s;case"auto":default:return o.default&&!o.isWebWorker&&!o.isReactNativeBrowser?s:a}};e.default=l}),Aw=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(ik()),n=class{get keepaliveTimeoutTimestamp(){return this._keepaliveTimeoutTimestamp}get intervalEvery(){return this._intervalEvery}get keepalive(){return this._keepalive}constructor(o,i){this.destroyed=!1,this.client=o,this.timer=typeof i=="object"&&"set"in i&&"clear"in i?i:(0,r.default)(i),this.setKeepalive(o.options.keepalive)}clear(){this.timerId&&(this.timer.clear(this.timerId),this.timerId=null)}setKeepalive(o){if(o*=1e3,isNaN(o)||o<=0||o>2147483647)throw new Error(`Keepalive value must be an integer between 0 and 2147483647. Provided value is ${o}`);this._keepalive=o,this.reschedule(),this.client.log(`KeepaliveManager: set keepalive to ${o}ms`)}destroy(){this.clear(),this.destroyed=!0}reschedule(){if(this.destroyed)return;this.clear(),this.counter=0;let o=Math.ceil(this._keepalive*1.5);this._keepaliveTimeoutTimestamp=Date.now()+o,this._intervalEvery=Math.ceil(this._keepalive/2),this.timerId=this.timer.set(()=>{this.destroyed||(this.counter+=1,this.counter===2?this.client.sendPing():this.counter>2&&this.client.onKeepaliveTimeout())},this._intervalEvery)}};e.default=n}),vh=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(U,x,L,j){j===void 0&&(j=L);var Y=Object.getOwnPropertyDescriptor(x,L);(!Y||("get"in Y?!x.__esModule:Y.writable||Y.configurable))&&(Y={enumerable:!0,get:function(){return x[L]}}),Object.defineProperty(U,j,Y)}:function(U,x,L,j){j===void 0&&(j=L),U[j]=x[L]}),r=e&&e.__setModuleDefault||(Object.create?function(U,x){Object.defineProperty(U,"default",{enumerable:!0,value:x})}:function(U,x){U.default=x}),n=e&&e.__importStar||function(U){if(U&&U.__esModule)return U;var x={};if(U!=null)for(var L in U)L!=="default"&&Object.prototype.hasOwnProperty.call(U,L)&&t(x,U,L);return r(x,U),x},o=e&&e.__importDefault||function(U){return U&&U.__esModule?U:{default:U}};Object.defineProperty(e,"__esModule",{value:!0});var i=o(YR()),s=o(RO()),a=o(aw()),l=$i(),u=o(kO()),c=n(NO()),d=o(sn()),p=o(lw()),m=o(ZO()),_=Ho(),b=ek(),T=o(Aw()),N=n(iu()),R=globalThis.setImmediate||((...U)=>{let x=U.shift();(0,_.nextTick)(()=>{x(...U)})}),S={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0,writeCache:!0,timerVariant:"auto"},D=class Eh extends b.TypedEventEmitter{static defaultId(){return`mqttjs_${Math.random().toString(16).substr(2,8)}`}constructor(x,L){super(),this.options=L||{};for(let j in S)typeof this.options[j]>"u"?this.options[j]=S[j]:this.options[j]=L[j];this.log=this.options.log||(0,d.default)("mqttjs:client"),this.noop=this._noop.bind(this),this.log("MqttClient :: version:",Eh.VERSION),N.isWebWorker?this.log("MqttClient :: environment","webworker"):this.log("MqttClient :: environment",N.default?"browser":"node"),this.log("MqttClient :: options.protocol",L.protocol),this.log("MqttClient :: options.protocolVersion",L.protocolVersion),this.log("MqttClient :: options.username",L.username),this.log("MqttClient :: options.keepalive",L.keepalive),this.log("MqttClient :: options.reconnectPeriod",L.reconnectPeriod),this.log("MqttClient :: options.rejectUnauthorized",L.rejectUnauthorized),this.log("MqttClient :: options.properties.topicAliasMaximum",L.properties?L.properties.topicAliasMaximum:void 0),this.options.clientId=typeof L.clientId=="string"?L.clientId:Eh.defaultId(),this.log("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=L.protocolVersion===5&&L.customHandleAcks?L.customHandleAcks:(...j)=>{j[3](null,0)},this.options.writeCache||(s.default.writeToStream.cacheNumbers=!1),this.streamBuilder=x,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new a.default:this.options.messageIdProvider,this.outgoingStore=L.outgoingStore||new p.default,this.incomingStore=L.incomingStore||new p.default,this.queueQoSZero=L.queueQoSZero===void 0?!0:L.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.keepaliveManager=null,this.connected=!1,this.disconnecting=!1,this.reconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,L.properties&&L.properties.topicAliasMaximum>0&&(L.properties.topicAliasMaximum>65535?this.log("MqttClient :: options.properties.topicAliasMaximum is out of range"):this.topicAliasRecv=new i.default(L.properties.topicAliasMaximum)),this.on("connect",()=>{let{queue:j}=this,Y=()=>{let se=j.shift();this.log("deliver :: entry %o",se);let re=null;if(!se){this._resubscribe();return}re=se.packet,this.log("deliver :: call _sendPacket for %o",re);let P=!0;re.messageId&&re.messageId!==0&&(this.messageIdProvider.register(re.messageId)||(P=!1)),P?this._sendPacket(re,B=>{se.cb&&se.cb(B),Y()}):(this.log("messageId: %d has already used. The message is skipped and removed.",re.messageId),Y())};this.log("connect :: sending queued packets"),Y()}),this.on("close",()=>{this.log("close :: connected set to `false`"),this.connected=!1,this.log("close :: clearing connackTimer"),clearTimeout(this.connackTimer),this._destroyKeepaliveManager(),this.topicAliasRecv&&this.topicAliasRecv.clear(),this.log("close :: calling _setupReconnect"),this._setupReconnect()}),this.options.manualConnect||(this.log("MqttClient :: setting up stream"),this.connect())}handleAuth(x,L){L()}handleMessage(x,L){L()}_nextId(){return this.messageIdProvider.allocate()}getLastMessageId(){return this.messageIdProvider.getLastAllocated()}connect(){var x;let L=new l.Writable,j=s.default.parser(this.options),Y=null,se=[];this.log("connect :: calling method to clear reconnect"),this._clearReconnect(),this.disconnected&&!this.reconnecting&&(this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1),this.log("connect :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),j.on("packet",ne=>{this.log("parser :: on packet push to packets array."),se.push(ne)});let re=()=>{this.log("work :: getting next packet in queue");let ne=se.shift();if(ne)this.log("work :: packet pulled from queue"),(0,m.default)(this,ne,P);else{this.log("work :: no packets in queue");let ue=Y;Y=null,this.log("work :: done flag is %s",!!ue),ue&&ue()}},P=()=>{if(se.length)(0,_.nextTick)(re);else{let ne=Y;Y=null,ne()}};L._write=(ne,ue,ae)=>{Y=ae,this.log("writable stream :: parsing buffer"),j.parse(ne),re()};let B=ne=>{this.log("streamErrorHandler :: error",ne.message),ne.code?(this.log("streamErrorHandler :: emitting error"),this.emit("error",ne)):this.noop(ne)};this.log("connect :: pipe stream to writable stream"),this.stream.pipe(L),this.stream.on("error",B),this.stream.on("close",()=>{this.log("(%s)stream :: on close",this.options.clientId),this._flushVolatile(),this.log("stream: emit close to MqttClient"),this.emit("close")}),this.log("connect: sending packet `connect`");let oe={cmd:"connect",protocolId:this.options.protocolId,protocolVersion:this.options.protocolVersion,clean:this.options.clean,clientId:this.options.clientId,keepalive:this.options.keepalive,username:this.options.username,password:this.options.password,properties:this.options.properties};if(this.options.will&&(oe.will=Object.assign(Object.assign({},this.options.will),{payload:(x=this.options.will)===null||x===void 0?void 0:x.payload})),this.topicAliasRecv&&(oe.properties||(oe.properties={}),this.topicAliasRecv&&(oe.properties.topicAliasMaximum=this.topicAliasRecv.max)),this._writePacket(oe),j.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return this.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){let ne=Object.assign({cmd:"auth",reasonCode:0},this.options.authPacket);this._writePacket(ne)}}return this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(()=>{this.log("!!connectTimeout hit!! Calling _cleanUp with force `true`"),this.emit("error",new Error("connack timeout")),this._cleanUp(!0)},this.options.connectTimeout),this}publish(x,L,j,Y){this.log("publish :: message `%s` to topic `%s`",L,x);let{options:se}=this;typeof j=="function"&&(Y=j,j=null),j=j||{},j=Object.assign(Object.assign({},{qos:0,retain:!1,dup:!1}),j);let{qos:re,retain:P,dup:B,properties:oe,cbStorePut:ne}=j;if(this._checkDisconnecting(Y))return this;let ue=()=>{let ae=0;if((re===1||re===2)&&(ae=this._nextId(),ae===null))return this.log("No messageId left"),!1;let z={cmd:"publish",topic:x,payload:L,qos:re,retain:P,messageId:ae,dup:B};switch(se.protocolVersion===5&&(z.properties=oe),this.log("publish :: qos",re),re){case 1:case 2:this.outgoing[z.messageId]={volatile:!1,cb:Y||this.noop},this.log("MqttClient:publish: packet cmd: %s",z.cmd),this._sendPacket(z,void 0,ne);break;default:this.log("MqttClient:publish: packet cmd: %s",z.cmd),this._sendPacket(z,Y,ne);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!ue())&&this._storeProcessingQueue.push({invoke:ue,cbStorePut:j.cbStorePut,callback:Y}),this}publishAsync(x,L,j){return new Promise((Y,se)=>{this.publish(x,L,j,(re,P)=>{re?se(re):Y(P)})})}subscribe(x,L,j){let Y=this.options.protocolVersion;typeof L=="function"&&(j=L),j=j||this.noop;let se=!1,re=[];typeof x=="string"?(x=[x],re=x):Array.isArray(x)?re=x:typeof x=="object"&&(se=x.resubscribe,delete x.resubscribe,re=Object.keys(x));let P=c.validateTopics(re);if(P!==null)return R(j,new Error(`Invalid topic ${P}`)),this;if(this._checkDisconnecting(j))return this.log("subscribe: discconecting true"),this;let B={qos:0};Y===5&&(B.nl=!1,B.rap=!1,B.rh=0),L=Object.assign(Object.assign({},B),L);let oe=L.properties,ne=[],ue=(z,pe)=>{if(pe=pe||L,!Object.prototype.hasOwnProperty.call(this._resubscribeTopics,z)||this._resubscribeTopics[z].qos<pe.qos||se){let de={topic:z,qos:pe.qos};Y===5&&(de.nl=pe.nl,de.rap=pe.rap,de.rh=pe.rh,de.properties=oe),this.log("subscribe: pushing topic `%s` and qos `%s` to subs list",de.topic,de.qos),ne.push(de)}};if(Array.isArray(x)?x.forEach(z=>{this.log("subscribe: array topic %s",z),ue(z)}):Object.keys(x).forEach(z=>{this.log("subscribe: object topic %s, %o",z,x[z]),ue(z,x[z])}),!ne.length)return j(null,[]),this;let ae=()=>{let z=this._nextId();if(z===null)return this.log("No messageId left"),!1;let pe={cmd:"subscribe",subscriptions:ne,messageId:z};if(oe&&(pe.properties=oe),this.options.resubscribe){this.log("subscribe :: resubscribe true");let de=[];ne.forEach(ge=>{if(this.options.reconnectPeriod>0){let O={qos:ge.qos};Y===5&&(O.nl=ge.nl||!1,O.rap=ge.rap||!1,O.rh=ge.rh||0,O.properties=ge.properties),this._resubscribeTopics[ge.topic]=O,de.push(ge.topic)}}),this.messageIdToTopic[pe.messageId]=de}return this.outgoing[pe.messageId]={volatile:!0,cb(de,ge){if(!de){let{granted:O}=ge;for(let ie=0;ie<O.length;ie+=1)ne[ie].qos=O[ie]}j(de,ne,ge)}},this.log("subscribe :: call _sendPacket"),this._sendPacket(pe),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!ae())&&this._storeProcessingQueue.push({invoke:ae,callback:j}),this}subscribeAsync(x,L){return new Promise((j,Y)=>{this.subscribe(x,L,(se,re)=>{se?Y(se):j(re)})})}unsubscribe(x,L,j){typeof x=="string"&&(x=[x]),typeof L=="function"&&(j=L),j=j||this.noop;let Y=c.validateTopics(x);if(Y!==null)return R(j,new Error(`Invalid topic ${Y}`)),this;if(this._checkDisconnecting(j))return this;let se=()=>{let re=this._nextId();if(re===null)return this.log("No messageId left"),!1;let P={cmd:"unsubscribe",messageId:re,unsubscriptions:[]};return typeof x=="string"?P.unsubscriptions=[x]:Array.isArray(x)&&(P.unsubscriptions=x),this.options.resubscribe&&P.unsubscriptions.forEach(B=>{delete this._resubscribeTopics[B]}),typeof L=="object"&&L.properties&&(P.properties=L.properties),this.outgoing[P.messageId]={volatile:!0,cb:j},this.log("unsubscribe: call _sendPacket"),this._sendPacket(P),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!se())&&this._storeProcessingQueue.push({invoke:se,callback:j}),this}unsubscribeAsync(x,L){return new Promise((j,Y)=>{this.unsubscribe(x,L,(se,re)=>{se?Y(se):j(re)})})}end(x,L,j){this.log("end :: (%s)",this.options.clientId),(x==null||typeof x!="boolean")&&(j=j||L,L=x,x=!1),typeof L!="object"&&(j=j||L,L=null),this.log("end :: cb? %s",!!j),(!j||typeof j!="function")&&(j=this.noop);let Y=()=>{this.log("end :: closeStores: closing incoming and outgoing stores"),this.disconnected=!0,this.incomingStore.close(re=>{this.outgoingStore.close(P=>{if(this.log("end :: closeStores: emitting end"),this.emit("end"),j){let B=re||P;this.log("end :: closeStores: invoking callback with args"),j(B)}})}),this._deferredReconnect?this._deferredReconnect():(this.options.reconnectPeriod===0||this.options.manualConnect)&&(this.disconnecting=!1)},se=()=>{this.log("end :: (%s) :: finish :: calling _cleanUp with force %s",this.options.clientId,x),this._cleanUp(x,()=>{this.log("end :: finish :: calling process.nextTick on closeStores"),(0,_.nextTick)(Y)},L)};return this.disconnecting?(j(),this):(this._clearReconnect(),this.disconnecting=!0,!x&&Object.keys(this.outgoing).length>0?(this.log("end :: (%s) :: calling finish in 10ms once outgoing is empty",this.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,se,10))):(this.log("end :: (%s) :: immediately calling finish",this.options.clientId),se()),this)}endAsync(x,L){return new Promise((j,Y)=>{this.end(x,L,se=>{se?Y(se):j()})})}removeOutgoingMessage(x){if(this.outgoing[x]){let{cb:L}=this.outgoing[x];this._removeOutgoingAndStoreMessage(x,()=>{L(new Error("Message removed"))})}return this}reconnect(x){this.log("client reconnect");let L=()=>{x?(this.options.incomingStore=x.incomingStore,this.options.outgoingStore=x.outgoingStore):(this.options.incomingStore=null,this.options.outgoingStore=null),this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1,this._deferredReconnect=null,this._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=L:L(),this}_flushVolatile(){this.outgoing&&(this.log("_flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(this.outgoing).forEach(x=>{this.outgoing[x].volatile&&typeof this.outgoing[x].cb=="function"&&(this.outgoing[x].cb(new Error("Connection closed")),delete this.outgoing[x])}))}_flush(){this.outgoing&&(this.log("_flush: queue exists? %b",!!this.outgoing),Object.keys(this.outgoing).forEach(x=>{typeof this.outgoing[x].cb=="function"&&(this.outgoing[x].cb(new Error("Connection closed")),delete this.outgoing[x])}))}_removeTopicAliasAndRecoverTopicName(x){let L;x.properties&&(L=x.properties.topicAlias);let j=x.topic.toString();if(this.log("_removeTopicAliasAndRecoverTopicName :: alias %d, topic %o",L,j),j.length===0){if(typeof L>"u")return new Error("Unregistered Topic Alias");if(j=this.topicAliasSend.getTopicByAlias(L),typeof j>"u")return new Error("Unregistered Topic Alias");x.topic=j}L&&delete x.properties.topicAlias}_checkDisconnecting(x){return this.disconnecting&&(x&&x!==this.noop?x(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting}_reconnect(){this.log("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this.connect()}),this.log("client already connected. disconnecting first.")):(this.log("_reconnect: calling connect"),this.connect())}_setupReconnect(){!this.disconnecting&&!this.reconnectTimer&&this.options.reconnectPeriod>0?(this.reconnecting||(this.log("_setupReconnect :: emit `offline` state"),this.emit("offline"),this.log("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),this.log("_setupReconnect :: setting reconnectTimer for %d ms",this.options.reconnectPeriod),this.reconnectTimer=setInterval(()=>{this.log("reconnectTimer :: reconnect triggered!"),this._reconnect()},this.options.reconnectPeriod)):this.log("_setupReconnect :: doing nothing...")}_clearReconnect(){this.log("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)}_cleanUp(x,L,j={}){if(L&&(this.log("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",L)),this.log("_cleanUp :: forced? %s",x),x)this.options.reconnectPeriod===0&&this.options.clean&&this._flush(),this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{let Y=Object.assign({cmd:"disconnect"},j);this.log("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(Y,()=>{this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),R(()=>{this.stream.end(()=>{this.log("_cleanUp :: (%s) :: stream destroyed",this.options.clientId)})})})}!this.disconnecting&&!this.reconnecting&&(this.log("_cleanUp :: client not disconnecting/reconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this._destroyKeepaliveManager(),L&&!this.connected&&(this.log("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",L),L())}_storeAndSend(x,L,j){this.log("storeAndSend :: store packet with cmd %s to outgoingStore",x.cmd);let Y=x,se;if(Y.cmd==="publish"&&(Y=(0,u.default)(x),se=this._removeTopicAliasAndRecoverTopicName(Y),se))return L&&L(se);this.outgoingStore.put(Y,re=>{if(re)return L&&L(re);j(),this._writePacket(x,L)})}_applyTopicAlias(x){if(this.options.protocolVersion===5&&x.cmd==="publish"){let L;x.properties&&(L=x.properties.topicAlias);let j=x.topic.toString();if(this.topicAliasSend)if(L){if(j.length!==0&&(this.log("applyTopicAlias :: register topic: %s - alias: %d",j,L),!this.topicAliasSend.put(j,L)))return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",j,L),new Error("Sending Topic Alias out of range")}else j.length!==0&&(this.options.autoAssignTopicAlias?(L=this.topicAliasSend.getAliasByTopic(j),L?(x.topic="",x.properties=Object.assign(Object.assign({},x.properties),{topicAlias:L}),this.log("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",j,L)):(L=this.topicAliasSend.getLruAlias(),this.topicAliasSend.put(j,L),x.properties=Object.assign(Object.assign({},x.properties),{topicAlias:L}),this.log("applyTopicAlias :: auto assign topic: %s - alias: %d",j,L))):this.options.autoUseTopicAlias&&(L=this.topicAliasSend.getAliasByTopic(j),L&&(x.topic="",x.properties=Object.assign(Object.assign({},x.properties),{topicAlias:L}),this.log("applyTopicAlias :: auto use topic: %s - alias: %d",j,L))));else if(L)return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",j,L),new Error("Sending Topic Alias out of range")}}_noop(x){this.log("noop ::",x)}_writePacket(x,L){this.log("_writePacket :: packet: %O",x),this.log("_writePacket :: emitting `packetsend`"),this.emit("packetsend",x),this.log("_writePacket :: writing to stream");let j=s.default.writeToStream(x,this.stream,this.options);this.log("_writePacket :: writeToStream result %s",j),!j&&L&&L!==this.noop?(this.log("_writePacket :: handle events on `drain` once through callback."),this.stream.once("drain",L)):L&&(this.log("_writePacket :: invoking cb"),L())}_sendPacket(x,L,j,Y){this.log("_sendPacket :: (%s) ::  start",this.options.clientId),j=j||this.noop,L=L||this.noop;let se=this._applyTopicAlias(x);if(se){L(se);return}if(!this.connected){if(x.cmd==="auth"){this._writePacket(x,L);return}this.log("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(x,L,j);return}if(Y){this._writePacket(x,L);return}switch(x.cmd){case"publish":break;case"pubrel":this._storeAndSend(x,L,j);return;default:this._writePacket(x,L);return}switch(x.qos){case 2:case 1:this._storeAndSend(x,L,j);break;case 0:default:this._writePacket(x,L);break}this.log("_sendPacket :: (%s) ::  end",this.options.clientId)}_storePacket(x,L,j){this.log("_storePacket :: packet: %o",x),this.log("_storePacket :: cb? %s",!!L),j=j||this.noop;let Y=x;if(Y.cmd==="publish"){Y=(0,u.default)(x);let re=this._removeTopicAliasAndRecoverTopicName(Y);if(re)return L&&L(re)}let se=Y.qos||0;se===0&&this.queueQoSZero||Y.cmd!=="publish"?this.queue.push({packet:Y,cb:L}):se>0?(L=this.outgoing[Y.messageId]?this.outgoing[Y.messageId].cb:null,this.outgoingStore.put(Y,re=>{if(re)return L&&L(re);j()})):L&&L(new Error("No connection to broker"))}_setupKeepaliveManager(){this.log("_setupKeepaliveManager :: keepalive %d (seconds)",this.options.keepalive),!this.keepaliveManager&&this.options.keepalive&&(this.keepaliveManager=new T.default(this,this.options.timerVariant))}_destroyKeepaliveManager(){this.keepaliveManager&&(this.log("_destroyKeepaliveManager :: destroying keepalive manager"),this.keepaliveManager.destroy(),this.keepaliveManager=null)}reschedulePing(x=!1){this.keepaliveManager&&this.options.keepalive&&(x||this.options.reschedulePings)&&this._reschedulePing()}_reschedulePing(){this.log("_reschedulePing :: rescheduling ping"),this.keepaliveManager.reschedule()}sendPing(){this.log("_sendPing :: sending pingreq"),this._sendPacket({cmd:"pingreq"})}onKeepaliveTimeout(){this.emit("error",new Error("Keepalive timeout")),this.log("onKeepaliveTimeout :: calling _cleanUp with force true"),this._cleanUp(!0)}_resubscribe(){this.log("_resubscribe");let x=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion>=4&&!this.connackPacket.sessionPresent)&&x.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){this.log("_resubscribe: protocolVersion 5");for(let L=0;L<x.length;L++){let j={};j[x[L]]=this._resubscribeTopics[x[L]],j.resubscribe=!0,this.subscribe(j,{properties:j[x[L]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1}_onConnect(x){if(this.disconnected){this.emit("connect",x);return}this.connackPacket=x,this.messageIdProvider.clear(),this._setupKeepaliveManager(),this.connected=!0;let L=()=>{let j=this.outgoingStore.createStream(),Y=()=>{j.destroy(),j=null,this._flushStoreProcessingQueue(),se()},se=()=>{this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={}};this.once("close",Y),j.on("error",P=>{se(),this._flushStoreProcessingQueue(),this.removeListener("close",Y),this.emit("error",P)});let re=()=>{if(!j)return;let P=j.read(1),B;if(!P){j.once("readable",re);return}if(this._storeProcessing=!0,this._packetIdsDuringStoreProcessing[P.messageId]){re();return}!this.disconnecting&&!this.reconnectTimer?(B=this.outgoing[P.messageId]?this.outgoing[P.messageId].cb:null,this.outgoing[P.messageId]={volatile:!1,cb(oe,ne){B&&B(oe,ne),re()}},this._packetIdsDuringStoreProcessing[P.messageId]=!0,this.messageIdProvider.register(P.messageId)?this._sendPacket(P,void 0,void 0,!0):this.log("messageId: %d has already used.",P.messageId)):j.destroy&&j.destroy()};j.on("end",()=>{let P=!0;for(let B in this._packetIdsDuringStoreProcessing)if(!this._packetIdsDuringStoreProcessing[B]){P=!1;break}this.removeListener("close",Y),P?(se(),this._invokeAllStoreProcessingQueue(),this.emit("connect",x)):L()}),re()};L()}_invokeStoreProcessingQueue(){if(!this._storeProcessing&&this._storeProcessingQueue.length>0){let x=this._storeProcessingQueue[0];if(x&&x.invoke())return this._storeProcessingQueue.shift(),!0}return!1}_invokeAllStoreProcessingQueue(){for(;this._invokeStoreProcessingQueue(););}_flushStoreProcessingQueue(){for(let x of this._storeProcessingQueue)x.cbStorePut&&x.cbStorePut(new Error("Connection closed")),x.callback&&x.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)}_removeOutgoingAndStoreMessage(x,L){delete this.outgoing[x],this.outgoingStore.del({messageId:x},(j,Y)=>{L(j,Y),this.messageIdProvider.deallocate(x),this._invokeStoreProcessingQueue()})}};D.VERSION=_.MQTTJS_VERSION,e.default=D}),ok=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=Sw(),r=class{constructor(){this.numberAllocator=new t.NumberAllocator(1,65535)}allocate(){return this.lastId=this.numberAllocator.alloc(),this.lastId}getLastAllocated(){return this.lastId}register(n){return this.numberAllocator.use(n)}deallocate(n){this.numberAllocator.free(n)}clear(){this.numberAllocator.clear()}};e.default=r});function Jn(e){throw new RangeError(xw[e])}function bm(e,t){let r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]);let o=function(i,s){let a=[],l=i.length;for(;l--;)a[l]=s(i[l]);return a}((e=e.replace(Tw,".")).split("."),t).join(".");return n+o}function wm(e){let t=[],r=0,n=e.length;for(;r<n;){let o=e.charCodeAt(r++);if(o>=55296&&o<=56319&&r<n){let i=e.charCodeAt(r++);(64512&i)==56320?t.push(((1023&o)<<10)+(1023&i)+65536):(t.push(o),r--)}else t.push(o)}return t}var vm,Em,Tw,xw,sr,fa,sc,ac,lc,uc,An,sk=_t(()=>{_e(),we(),be(),vm=/^xn--/,Em=/[^\0-\x7E]/,Tw=/[\x2E\u3002\uFF0E\uFF61]/g,xw={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},sr=Math.floor,fa=String.fromCharCode,sc=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},ac=function(e,t,r){let n=0;for(e=r?sr(e/700):e>>1,e+=sr(e/t);e>455;n+=36)e=sr(e/35);return sr(n+36*e/(e+38))},lc=function(e){let t=[],r=e.length,n=0,o=128,i=72,s=e.lastIndexOf("-");s<0&&(s=0);for(let l=0;l<s;++l)e.charCodeAt(l)>=128&&Jn("not-basic"),t.push(e.charCodeAt(l));for(let l=s>0?s+1:0;l<r;){let u=n;for(let d=1,p=36;;p+=36){l>=r&&Jn("invalid-input");let m=(a=e.charCodeAt(l++))-48<10?a-22:a-65<26?a-65:a-97<26?a-97:36;(m>=36||m>sr((2147483647-n)/d))&&Jn("overflow"),n+=m*d;let _=p<=i?1:p>=i+26?26:p-i;if(m<_)break;let b=36-_;d>sr(2147483647/b)&&Jn("overflow"),d*=b}let c=t.length+1;i=ac(n-u,c,u==0),sr(n/c)>2147483647-o&&Jn("overflow"),o+=sr(n/c),n%=c,t.splice(n++,0,o)}var a;return String.fromCodePoint(...t)},uc=function(e){let t=[],r=(e=wm(e)).length,n=128,o=0,i=72;for(let l of e)l<128&&t.push(fa(l));let s=t.length,a=s;for(s&&t.push("-");a<r;){let l=2147483647;for(let c of e)c>=n&&c<l&&(l=c);let u=a+1;l-n>sr((2147483647-o)/u)&&Jn("overflow"),o+=(l-n)*u,n=l;for(let c of e)if(c<n&&++o>2147483647&&Jn("overflow"),c==n){let d=o;for(let p=36;;p+=36){let m=p<=i?1:p>=i+26?26:p-i;if(d<m)break;let _=d-m,b=36-m;t.push(fa(sc(m+_%b,0))),d=sr(_/b)}t.push(fa(sc(d,0))),i=ac(o,u,a==s),o=0,++a}++o,++n}return t.join("")},An={version:"2.1.0",ucs2:{decode:wm,encode:e=>String.fromCodePoint(...e)},decode:lc,encode:uc,toASCII:function(e){return bm(e,function(t){return Em.test(t)?"xn--"+uc(t):t})},toUnicode:function(e){return bm(e,function(t){return vm.test(t)?lc(t.slice(4).toLowerCase()):t})}},An.decode,An.encode,An.toASCII,An.toUnicode,An.ucs2,An.version});function ak(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Sm,Gi,Am,Sr,lk=_t(()=>{_e(),we(),be(),Sm=function(e,t,r,n){t=t||"&",r=r||"=";var o={};if(typeof e!="string"||e.length===0)return o;var i=/\+/g;e=e.split(t);var s=1e3;n&&typeof n.maxKeys=="number"&&(s=n.maxKeys);var a=e.length;s>0&&a>s&&(a=s);for(var l=0;l<a;++l){var u,c,d,p,m=e[l].replace(i,"%20"),_=m.indexOf(r);_>=0?(u=m.substr(0,_),c=m.substr(_+1)):(u=m,c=""),d=decodeURIComponent(u),p=decodeURIComponent(c),ak(o,d)?Array.isArray(o[d])?o[d].push(p):o[d]=[o[d],p]:o[d]=p}return o},Gi=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},Am=function(e,t,r,n){return t=t||"&",r=r||"=",e===null&&(e=void 0),typeof e=="object"?Object.keys(e).map(function(o){var i=encodeURIComponent(Gi(o))+r;return Array.isArray(e[o])?e[o].map(function(s){return i+encodeURIComponent(Gi(s))}).join(t):i+encodeURIComponent(Gi(e[o]))}).join(t):n?encodeURIComponent(Gi(n))+r+encodeURIComponent(Gi(e)):""},Sr={},Sr.decode=Sr.parse=Sm,Sr.encode=Sr.stringify=Am,Sr.decode,Sr.encode,Sr.parse,Sr.stringify});function Sh(){throw new Error("setTimeout has not been defined")}function Ah(){throw new Error("clearTimeout has not been defined")}function Iw(e){if(Vr===setTimeout)return setTimeout(e,0);if((Vr===Sh||!Vr)&&setTimeout)return Vr=setTimeout,setTimeout(e,0);try{return Vr(e,0)}catch{try{return Vr.call(null,e,0)}catch{return Vr.call(this||wi,e,0)}}}function uk(){vi&&hi&&(vi=!1,hi.length?Or=hi.concat(Or):As=-1,Or.length&&Cw())}function Cw(){if(!vi){var e=Iw(uk);vi=!0;for(var t=Or.length;t;){for(hi=Or,Or=[];++As<t;)hi&&hi[As].run();As=-1,t=Or.length}hi=null,vi=!1,function(r){if(qr===clearTimeout)return clearTimeout(r);if((qr===Ah||!qr)&&clearTimeout)return qr=clearTimeout,clearTimeout(r);try{qr(r)}catch{try{return qr.call(null,r)}catch{return qr.call(this||wi,r)}}}(e)}}function Tm(e,t){(this||wi).fun=e,(this||wi).array=t}function Fr(){}var xm,Vr,qr,wi,it,hi,Or,vi,As,nt,ck=_t(()=>{_e(),we(),be(),wi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Ai,it=xm={},function(){try{Vr=typeof setTimeout=="function"?setTimeout:Sh}catch{Vr=Sh}try{qr=typeof clearTimeout=="function"?clearTimeout:Ah}catch{qr=Ah}}(),Or=[],vi=!1,As=-1,it.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Or.push(new Tm(e,t)),Or.length!==1||vi||Iw(Cw)},Tm.prototype.run=function(){(this||wi).fun.apply(null,(this||wi).array)},it.title="browser",it.browser=!0,it.env={},it.argv=[],it.version="",it.versions={},it.on=Fr,it.addListener=Fr,it.once=Fr,it.off=Fr,it.removeListener=Fr,it.removeAllListeners=Fr,it.emit=Fr,it.prependListener=Fr,it.prependOnceListener=Fr,it.listeners=function(e){return[]},it.binding=function(e){throw new Error("process.binding is not supported")},it.cwd=function(){return"/"},it.chdir=function(e){throw new Error("process.chdir is not supported")},it.umask=function(){return 0},nt=xm,nt.addListener,nt.argv,nt.binding,nt.browser,nt.chdir,nt.cwd,nt.emit,nt.env,nt.listeners,nt.nextTick,nt.off,nt.on,nt.once,nt.prependListener,nt.prependOnceListener,nt.removeAllListeners,nt.removeListener,nt.title,nt.umask,nt.version,nt.versions});function fk(){if(Th)return Ua;Th=!0;var e=Ua={},t,r;function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?t=setTimeout:t=n}catch{t=n}try{typeof clearTimeout=="function"?r=clearTimeout:r=o}catch{r=o}})();function i(b){if(t===setTimeout)return setTimeout(b,0);if((t===n||!t)&&setTimeout)return t=setTimeout,setTimeout(b,0);try{return t(b,0)}catch{try{return t.call(null,b,0)}catch{return t.call(this||ri,b,0)}}}function s(b){if(r===clearTimeout)return clearTimeout(b);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(b);try{return r(b)}catch{try{return r.call(null,b)}catch{return r.call(this||ri,b)}}}var a=[],l=!1,u,c=-1;function d(){!l||!u||(l=!1,u.length?a=u.concat(a):c=-1,a.length&&p())}function p(){if(!l){var b=i(d);l=!0;for(var T=a.length;T;){for(u=a,a=[];++c<T;)u&&u[c].run();c=-1,T=a.length}u=null,l=!1,s(b)}}e.nextTick=function(b){var T=new Array(arguments.length-1);if(arguments.length>1)for(var N=1;N<arguments.length;N++)T[N-1]=arguments[N];a.push(new m(b,T)),a.length===1&&!l&&i(p)};function m(b,T){(this||ri).fun=b,(this||ri).array=T}m.prototype.run=function(){(this||ri).fun.apply(null,(this||ri).array)},e.title="browser",e.browser=!0,e.env={},e.argv=[],e.version="",e.versions={};function _(){}return e.on=_,e.addListener=_,e.once=_,e.off=_,e.removeListener=_,e.removeAllListeners=_,e.emit=_,e.prependListener=_,e.prependOnceListener=_,e.listeners=function(b){return[]},e.binding=function(b){throw new Error("process.binding is not supported")},e.cwd=function(){return"/"},e.chdir=function(b){throw new Error("process.chdir is not supported")},e.umask=function(){return 0},Ua}var Ua,Th,ri,et,Rw=_t(()=>{_e(),we(),be(),Ua={},Th=!1,ri=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Ai,et=fk(),et.platform="browser",et.addListener,et.argv,et.binding,et.browser,et.chdir,et.cwd,et.emit,et.env,et.listeners,et.nextTick,et.off,et.on,et.once,et.prependListener,et.prependOnceListener,et.removeAllListeners,et.removeListener,et.title,et.umask,et.version,et.versions});function hk(){if(xh)return Fa;xh=!0;var e=et;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,s){for(var a="",l=0,u=-1,c=0,d,p=0;p<=i.length;++p){if(p<i.length)d=i.charCodeAt(p);else{if(d===47)break;d=47}if(d===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var m=a.lastIndexOf("/");if(m!==a.length-1){m===-1?(a="",l=0):(a=a.slice(0,m),l=a.length-1-a.lastIndexOf("/")),u=p,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=p,c=0;continue}}s&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,p):a=i.slice(u+1,p),l=p-u-1;u=p,c=0}else d===46&&c!==-1?++c:c=-1}return a}function n(i,s){var a=s.dir||s.root,l=s.base||(s.name||"")+(s.ext||"");return a?a===s.root?a+l:a+i+l:l}var o={resolve:function(){for(var i="",s=!1,a,l=arguments.length-1;l>=-1&&!s;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=e.cwd()),u=a),t(u),u.length!==0&&(i=u+"/"+i,s=u.charCodeAt(0)===47)}return i=r(i,!s),s?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var s=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!s),i.length===0&&!s&&(i="."),i.length>0&&a&&(i+="/"),s?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,s=0;s<arguments.length;++s){var a=arguments[s];t(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":o.normalize(i)},relative:function(i,s){if(t(i),t(s),i===s||(i=o.resolve(i),s=o.resolve(s),i===s))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<s.length&&s.charCodeAt(c)===47;++c);for(var d=s.length,p=d-c,m=u<p?u:p,_=-1,b=0;b<=m;++b){if(b===m){if(p>m){if(s.charCodeAt(c+b)===47)return s.slice(c+b+1);if(b===0)return s.slice(c+b)}else u>m&&(i.charCodeAt(a+b)===47?_=b:b===0&&(_=0));break}var T=i.charCodeAt(a+b),N=s.charCodeAt(c+b);if(T!==N)break;T===47&&(_=b)}var R="";for(b=a+_+1;b<=l;++b)(b===l||i.charCodeAt(b)===47)&&(R.length===0?R+="..":R+="/..");return R.length>0?R+s.slice(c+_):(c+=_,s.charCodeAt(c)===47&&++c,s.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var s=i.charCodeAt(0),a=s===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(s=i.charCodeAt(c),s===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,s){if(s!==void 0&&typeof s!="string")throw new TypeError('"ext" argument must be a string');t(i);var a=0,l=-1,u=!0,c;if(s!==void 0&&s.length>0&&s.length<=i.length){if(s.length===i.length&&s===i)return"";var d=s.length-1,p=-1;for(c=i.length-1;c>=0;--c){var m=i.charCodeAt(c);if(m===47){if(!u){a=c+1;break}}else p===-1&&(u=!1,p=c+1),d>=0&&(m===s.charCodeAt(d)?--d===-1&&(l=c):(d=-1,l=p))}return a===l?l=p:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){t(i);for(var s=-1,a=0,l=-1,u=!0,c=0,d=i.length-1;d>=0;--d){var p=i.charCodeAt(d);if(p===47){if(!u){a=d+1;break}continue}l===-1&&(u=!1,l=d+1),p===46?s===-1?s=d:c!==1&&(c=1):s!==-1&&(c=-1)}return s===-1||l===-1||c===0||c===1&&s===l-1&&s===a+1?"":i.slice(s,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var s={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return s;var a=i.charCodeAt(0),l=a===47,u;l?(s.root="/",u=1):u=0;for(var c=-1,d=0,p=-1,m=!0,_=i.length-1,b=0;_>=u;--_){if(a=i.charCodeAt(_),a===47){if(!m){d=_+1;break}continue}p===-1&&(m=!1,p=_+1),a===46?c===-1?c=_:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===d+1?p!==-1&&(d===0&&l?s.base=s.name=i.slice(1,p):s.base=s.name=i.slice(d,p)):(d===0&&l?(s.name=i.slice(1,c),s.base=i.slice(1,p)):(s.name=i.slice(d,c),s.base=i.slice(d,p)),s.ext=i.slice(c,p)),d>0?s.dir=i.slice(0,d-1):l&&(s.dir="/"),s},sep:"/",delimiter:":",win32:null,posix:null};return o.posix=o,Fa=o,Fa}var Fa,xh,Ih,dk=_t(()=>{_e(),we(),be(),Rw(),Fa={},xh=!1,Ih=hk()}),Ow={};Li(Ow,{URL:()=>zw,Url:()=>Hw,default:()=>qe,fileURLToPath:()=>kw,format:()=>Vw,parse:()=>Yw,pathToFileURL:()=>Nw,resolve:()=>qw,resolveObject:()=>Kw});function Xt(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function ts(e,t,r){if(e&&lr.isObject(e)&&e instanceof Xt)return e;var n=new Xt;return n.parse(e,t,r),n}function pk(){if(Ch)return ja;Ch=!0;var e=nt;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,s){for(var a="",l=0,u=-1,c=0,d,p=0;p<=i.length;++p){if(p<i.length)d=i.charCodeAt(p);else{if(d===47)break;d=47}if(d===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var m=a.lastIndexOf("/");if(m!==a.length-1){m===-1?(a="",l=0):(a=a.slice(0,m),l=a.length-1-a.lastIndexOf("/")),u=p,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=p,c=0;continue}}s&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,p):a=i.slice(u+1,p),l=p-u-1;u=p,c=0}else d===46&&c!==-1?++c:c=-1}return a}function n(i,s){var a=s.dir||s.root,l=s.base||(s.name||"")+(s.ext||"");return a?a===s.root?a+l:a+i+l:l}var o={resolve:function(){for(var i="",s=!1,a,l=arguments.length-1;l>=-1&&!s;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=e.cwd()),u=a),t(u),u.length!==0&&(i=u+"/"+i,s=u.charCodeAt(0)===47)}return i=r(i,!s),s?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var s=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!s),i.length===0&&!s&&(i="."),i.length>0&&a&&(i+="/"),s?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,s=0;s<arguments.length;++s){var a=arguments[s];t(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":o.normalize(i)},relative:function(i,s){if(t(i),t(s),i===s||(i=o.resolve(i),s=o.resolve(s),i===s))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<s.length&&s.charCodeAt(c)===47;++c);for(var d=s.length,p=d-c,m=u<p?u:p,_=-1,b=0;b<=m;++b){if(b===m){if(p>m){if(s.charCodeAt(c+b)===47)return s.slice(c+b+1);if(b===0)return s.slice(c+b)}else u>m&&(i.charCodeAt(a+b)===47?_=b:b===0&&(_=0));break}var T=i.charCodeAt(a+b),N=s.charCodeAt(c+b);if(T!==N)break;T===47&&(_=b)}var R="";for(b=a+_+1;b<=l;++b)(b===l||i.charCodeAt(b)===47)&&(R.length===0?R+="..":R+="/..");return R.length>0?R+s.slice(c+_):(c+=_,s.charCodeAt(c)===47&&++c,s.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var s=i.charCodeAt(0),a=s===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(s=i.charCodeAt(c),s===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,s){if(s!==void 0&&typeof s!="string")throw new TypeError('"ext" argument must be a string');t(i);var a=0,l=-1,u=!0,c;if(s!==void 0&&s.length>0&&s.length<=i.length){if(s.length===i.length&&s===i)return"";var d=s.length-1,p=-1;for(c=i.length-1;c>=0;--c){var m=i.charCodeAt(c);if(m===47){if(!u){a=c+1;break}}else p===-1&&(u=!1,p=c+1),d>=0&&(m===s.charCodeAt(d)?--d===-1&&(l=c):(d=-1,l=p))}return a===l?l=p:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){t(i);for(var s=-1,a=0,l=-1,u=!0,c=0,d=i.length-1;d>=0;--d){var p=i.charCodeAt(d);if(p===47){if(!u){a=d+1;break}continue}l===-1&&(u=!1,l=d+1),p===46?s===-1?s=d:c!==1&&(c=1):s!==-1&&(c=-1)}return s===-1||l===-1||c===0||c===1&&s===l-1&&s===a+1?"":i.slice(s,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var s={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return s;var a=i.charCodeAt(0),l=a===47,u;l?(s.root="/",u=1):u=0;for(var c=-1,d=0,p=-1,m=!0,_=i.length-1,b=0;_>=u;--_){if(a=i.charCodeAt(_),a===47){if(!m){d=_+1;break}continue}p===-1&&(m=!1,p=_+1),a===46?c===-1?c=_:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===d+1?p!==-1&&(d===0&&l?s.base=s.name=i.slice(1,p):s.base=s.name=i.slice(d,p)):(d===0&&l?(s.name=i.slice(1,c),s.base=i.slice(1,p)):(s.name=i.slice(d,c),s.base=i.slice(d,p)),s.ext=i.slice(c,p)),d>0?s.dir=i.slice(0,d-1):l&&(s.dir="/"),s},sep:"/",delimiter:":",win32:null,posix:null};return o.posix=o,ja=o,ja}function gk(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return dl?mk(e):yk(e)}function mk(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let o=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&o===102||r[n+1]==="5"&&o===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(Dw,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,o=r[2];if(n<Lw||n>Bw||o!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function yk(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function _k(e){let t=Rh.resolve(e),r=e.charCodeAt(e.length-1);(r===Pw||dl&&r===Mw)&&t[t.length-1]!==Rh.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace($w,"%25")),!dl&&t.includes("\\")&&(t=t.replace(Uw,"%5C")),t.includes(`
-`)&&(t=t.replace(Fw,"%0A")),t.includes("\r")&&(t=t.replace(jw,"%0D")),t.includes("	")&&(t=t.replace(Ww,"%09")),n.pathname=t,n}function kw(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return pl?bk(e):wk(e)}function bk(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let o=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&o===102||r[n+1]==="5"&&o===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(Zw,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,o=r[2];if(n<Xw||n>Jw||o!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function wk(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function Nw(e){let t=Ih.resolve(e),r=e.charCodeAt(e.length-1);(r===Qw||pl&&r===Gw)&&t[t.length-1]!==Ih.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace(ev,"%25")),!pl&&t.includes("\\")&&(t=t.replace(tv,"%5C")),t.includes(`
-`)&&(t=t.replace(rv,"%0A")),t.includes("\r")&&(t=t.replace(nv,"%0D")),t.includes("	")&&(t=t.replace(iv,"%09")),n.pathname=t,n}var qe,Im,lr,Cm,Rm,Om,km,ha,cc,fc,hc,Nm,Mm,da,Zn,pa,ja,Ch,Rh,Pm,Mw,Pw,Lw,Bw,dl,Dw,$w,Uw,Fw,jw,Ww,Lm,Hw,Vw,qw,Kw,Yw,zw,Gw,Qw,Xw,Jw,pl,Zw,ev,tv,rv,nv,iv,vk=_t(()=>{_e(),we(),be(),sk(),lk(),ck(),dk(),Rw(),qe={},Im=An,lr={isString:function(e){return typeof e=="string"},isObject:function(e){return typeof e=="object"&&e!==null},isNull:function(e){return e===null},isNullOrUndefined:function(e){return e==null}},qe.parse=ts,qe.resolve=function(e,t){return ts(e,!1,!0).resolve(t)},qe.resolveObject=function(e,t){return e?ts(e,!1,!0).resolveObject(t):t},qe.format=function(e){return lr.isString(e)&&(e=ts(e)),e instanceof Xt?e.format():Xt.prototype.format.call(e)},qe.Url=Xt,Cm=/^([a-z0-9.+-]+:)/i,Rm=/:[0-9]*$/,Om=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,km=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r",`
-`,"	"]),ha=["'"].concat(km),cc=["%","/","?",";","#"].concat(ha),fc=["/","?","#"],hc=/^[+a-z0-9A-Z_-]{0,63}$/,Nm=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Mm={javascript:!0,"javascript:":!0},da={javascript:!0,"javascript:":!0},Zn={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},pa=Sr,Xt.prototype.parse=function(e,t,r){if(!lr.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e.indexOf("?"),o=n!==-1&&n<e.indexOf("#")?"?":"#",i=e.split(o);i[0]=i[0].replace(/\\/g,"/");var s=e=i.join(o);if(s=s.trim(),!r&&e.split("#").length===1){var a=Om.exec(s);if(a)return this.path=s,this.href=s,this.pathname=a[1],a[2]?(this.search=a[2],this.query=t?pa.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var l=Cm.exec(s);if(l){var u=(l=l[0]).toLowerCase();this.protocol=u,s=s.substr(l.length)}if(r||l||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var c=s.substr(0,2)==="//";!c||l&&da[l]||(s=s.substr(2),this.slashes=!0)}if(!da[l]&&(c||l&&!Zn[l])){for(var d,p,m=-1,_=0;_<fc.length;_++)(b=s.indexOf(fc[_]))!==-1&&(m===-1||b<m)&&(m=b);for((p=m===-1?s.lastIndexOf("@"):s.lastIndexOf("@",m))!==-1&&(d=s.slice(0,p),s=s.slice(p+1),this.auth=decodeURIComponent(d)),m=-1,_=0;_<cc.length;_++){var b;(b=s.indexOf(cc[_]))!==-1&&(m===-1||b<m)&&(m=b)}m===-1&&(m=s.length),this.host=s.slice(0,m),s=s.slice(m),this.parseHost(),this.hostname=this.hostname||"";var T=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!T)for(var N=this.hostname.split(/\./),R=(_=0,N.length);_<R;_++){var S=N[_];if(S&&!S.match(hc)){for(var D="",U=0,x=S.length;U<x;U++)S.charCodeAt(U)>127?D+="x":D+=S[U];if(!D.match(hc)){var L=N.slice(0,_),j=N.slice(_+1),Y=S.match(Nm);Y&&(L.push(Y[1]),j.unshift(Y[2])),j.length&&(s="/"+j.join(".")+s),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),T||(this.hostname=Im.toASCII(this.hostname));var se=this.port?":"+this.port:"",re=this.hostname||"";this.host=re+se,this.href+=this.host,T&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),s[0]!=="/"&&(s="/"+s))}if(!Mm[u])for(_=0,R=ha.length;_<R;_++){var P=ha[_];if(s.indexOf(P)!==-1){var B=encodeURIComponent(P);B===P&&(B=escape(P)),s=s.split(P).join(B)}}var oe=s.indexOf("#");oe!==-1&&(this.hash=s.substr(oe),s=s.slice(0,oe));var ne=s.indexOf("?");if(ne!==-1?(this.search=s.substr(ne),this.query=s.substr(ne+1),t&&(this.query=pa.parse(this.query)),s=s.slice(0,ne)):t&&(this.search="",this.query={}),s&&(this.pathname=s),Zn[u]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){se=this.pathname||"";var ue=this.search||"";this.path=se+ue}return this.href=this.format(),this},Xt.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",o=!1,i="";this.host?o=e+this.host:this.hostname&&(o=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&lr.isObject(this.query)&&Object.keys(this.query).length&&(i=pa.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&t.substr(-1)!==":"&&(t+=":"),this.slashes||(!t||Zn[t])&&o!==!1?(o="//"+(o||""),r&&r.charAt(0)!=="/"&&(r="/"+r)):o||(o=""),n&&n.charAt(0)!=="#"&&(n="#"+n),s&&s.charAt(0)!=="?"&&(s="?"+s),t+o+(r=r.replace(/[?#]/g,function(a){return encodeURIComponent(a)}))+(s=s.replace("#","%23"))+n},Xt.prototype.resolve=function(e){return this.resolveObject(ts(e,!1,!0)).format()},Xt.prototype.resolveObject=function(e){if(lr.isString(e)){var t=new Xt;t.parse(e,!1,!0),e=t}for(var r=new Xt,n=Object.keys(this),o=0;o<n.length;o++){var i=n[o];r[i]=this[i]}if(r.hash=e.hash,e.href==="")return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),a=0;a<s.length;a++){var l=s[a];l!=="protocol"&&(r[l]=e[l])}return Zn[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!Zn[e.protocol]){for(var u=Object.keys(e),c=0;c<u.length;c++){var d=u[c];r[d]=e[d]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||da[e.protocol])r.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),p[0]!==""&&p.unshift(""),p.length<2&&p.unshift(""),r.pathname=p.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",_=r.search||"";r.path=m+_}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var b=r.pathname&&r.pathname.charAt(0)==="/",T=e.host||e.pathname&&e.pathname.charAt(0)==="/",N=T||b||r.host&&e.pathname,R=N,S=r.pathname&&r.pathname.split("/")||[],D=(p=e.pathname&&e.pathname.split("/")||[],r.protocol&&!Zn[r.protocol]);if(D&&(r.hostname="",r.port=null,r.host&&(S[0]===""?S[0]=r.host:S.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(p[0]===""?p[0]=e.host:p.unshift(e.host)),e.host=null),N=N&&(p[0]===""||S[0]==="")),T)r.host=e.host||e.host===""?e.host:r.host,r.hostname=e.hostname||e.hostname===""?e.hostname:r.hostname,r.search=e.search,r.query=e.query,S=p;else if(p.length)S||(S=[]),S.pop(),S=S.concat(p),r.search=e.search,r.query=e.query;else if(!lr.isNullOrUndefined(e.search))return D&&(r.hostname=r.host=S.shift(),(Y=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=Y.shift(),r.host=r.hostname=Y.shift())),r.search=e.search,r.query=e.query,lr.isNull(r.pathname)&&lr.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!S.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var U=S.slice(-1)[0],x=(r.host||e.host||S.length>1)&&(U==="."||U==="..")||U==="",L=0,j=S.length;j>=0;j--)(U=S[j])==="."?S.splice(j,1):U===".."?(S.splice(j,1),L++):L&&(S.splice(j,1),L--);if(!N&&!R)for(;L--;L)S.unshift("..");!N||S[0]===""||S[0]&&S[0].charAt(0)==="/"||S.unshift(""),x&&S.join("/").substr(-1)!=="/"&&S.push("");var Y,se=S[0]===""||S[0]&&S[0].charAt(0)==="/";return D&&(r.hostname=r.host=se?"":S.length?S.shift():"",(Y=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=Y.shift(),r.host=r.hostname=Y.shift())),(N=N||r.host&&S.length)&&!se&&S.unshift(""),S.length?r.pathname=S.join("/"):(r.pathname=null,r.path=null),lr.isNull(r.pathname)&&lr.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},Xt.prototype.parseHost=function(){var e=this.host,t=Rm.exec(e);t&&((t=t[0])!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},qe.Url,qe.format,qe.resolve,qe.resolveObject,ja={},Ch=!1,Rh=pk(),Pm=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=_k,qe.fileURLToPath=gk,qe.Url,qe.format,qe.resolve,qe.resolveObject,qe.URL,Mw=92,Pw=47,Lw=97,Bw=122,dl=Pm==="win32",Dw=/\//g,$w=/%/g,Uw=/\\/g,Fw=/\n/g,jw=/\r/g,Ww=/\t/g,Lm=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=Nw,qe.fileURLToPath=kw,Hw=qe.Url,Vw=qe.format,qw=qe.resolve,Kw=qe.resolveObject,Yw=qe.parse,zw=qe.URL,Gw=92,Qw=47,Xw=97,Jw=122,pl=Lm==="win32",Zw=/\//g,ev=/%/g,tv=/\\/g,rv=/\n/g,nv=/\r/g,iv=/\t/g}),Ek=Ae((e,t)=>{_e(),we(),be(),t.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),ep=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.BufferedDuplex=e.writev=void 0;var t=$i(),r=(wt(),ze(bt));function n(i,s){let a=new Array(i.length);for(let l=0;l<i.length;l++)typeof i[l].chunk=="string"?a[l]=r.Buffer.from(i[l].chunk,"utf8"):a[l]=i[l].chunk;this._write(r.Buffer.concat(a),"binary",s)}e.writev=n;var o=class extends t.Duplex{constructor(i,s,a){super({objectMode:!0}),this.proxy=s,this.socket=a,this.writeQueue=[],i.objectMode||(this._writev=n.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",l=>{this.destroyed||this.push(l)})}_read(i){this.proxy.read(i)}_write(i,s,a){this.isSocketOpen?this.writeToProxy(i,s,a):this.writeQueue.push({chunk:i,encoding:s,cb:a})}_final(i){this.writeQueue=[],this.proxy.end(i)}_destroy(i,s){this.writeQueue=[],this.proxy.destroy(),s(i)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(i,s,a){this.proxy.write(i,s)===!1?this.proxy.once("drain",a):a()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:i,encoding:s,cb:a}=this.writeQueue.shift();this.writeToProxy(i,s,a)}}};e.BufferedDuplex=o}),ga=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(N){return N&&N.__esModule?N:{default:N}};Object.defineProperty(e,"__esModule",{value:!0}),e.streamBuilder=e.browserStreamBuilder=void 0;var r=(wt(),ze(bt)),n=t(Ek()),o=t(sn()),i=$i(),s=t(iu()),a=ep(),l=(0,o.default)("mqttjs:ws"),u=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function c(N,R){let S=`${N.protocol}://${N.hostname}:${N.port}${N.path}`;return typeof N.transformWsUrl=="function"&&(S=N.transformWsUrl(S,N,R)),S}function d(N){let R=N;return N.port||(N.protocol==="wss"?R.port=443:R.port=80),N.path||(R.path="/"),N.wsOptions||(R.wsOptions={}),!s.default&&!N.forceNativeWebSocket&&N.protocol==="wss"&&u.forEach(S=>{Object.prototype.hasOwnProperty.call(N,S)&&!Object.prototype.hasOwnProperty.call(N.wsOptions,S)&&(R.wsOptions[S]=N[S])}),R}function p(N){let R=d(N);if(R.hostname||(R.hostname=R.host),!R.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let S=new URL(document.URL);R.hostname=S.hostname,R.port||(R.port=Number(S.port))}return R.objectMode===void 0&&(R.objectMode=!(R.binary===!0||R.binary===void 0)),R}function m(N,R,S){l("createWebSocket"),l(`protocol: ${S.protocolId} ${S.protocolVersion}`);let D=S.protocolId==="MQIsdp"&&S.protocolVersion===3?"mqttv3.1":"mqtt";l(`creating new Websocket for url: ${R} and protocol: ${D}`);let U;return S.createWebsocket?U=S.createWebsocket(R,[D],S):U=new n.default(R,[D],S.wsOptions),U}function _(N,R){let S=R.protocolId==="MQIsdp"&&R.protocolVersion===3?"mqttv3.1":"mqtt",D=c(R,N),U;return R.createWebsocket?U=R.createWebsocket(D,[S],R):U=new WebSocket(D,[S]),U.binaryType="arraybuffer",U}var b=(N,R)=>{l("streamBuilder");let S=d(R);S.hostname=S.hostname||S.host||"localhost";let D=c(S,N),U=m(N,D,S),x=n.default.createWebSocketStream(U,S.wsOptions);return x.url=D,U.on("close",()=>{x.destroy()}),x};e.streamBuilder=b;var T=(N,R)=>{l("browserStreamBuilder");let S,D=p(R).browserBufferSize||1024*512,U=R.browserBufferTimeout||1e3,x=!R.objectMode,L=_(N,R),j=se(R,ne,ue);R.objectMode||(j._writev=a.writev.bind(j)),j.on("close",()=>{L.close()});let Y=typeof L.addEventListener<"u";L.readyState===L.OPEN?(S=j,S.socket=L):(S=new a.BufferedDuplex(R,j,L),Y?L.addEventListener("open",re):L.onopen=re),Y?(L.addEventListener("close",P),L.addEventListener("error",B),L.addEventListener("message",oe)):(L.onclose=P,L.onerror=B,L.onmessage=oe);function se(ae,z,pe){let de=new i.Transform({objectMode:ae.objectMode});return de._write=z,de._flush=pe,de}function re(){l("WebSocket onOpen"),S instanceof a.BufferedDuplex&&S.socketReady()}function P(ae){l("WebSocket onClose",ae),S.end(),S.destroy()}function B(ae){l("WebSocket onError",ae);let z=new Error("WebSocket error");z.event=ae,S.destroy(z)}async function oe(ae){let{data:z}=ae;z instanceof ArrayBuffer?z=r.Buffer.from(z):z instanceof Blob?z=r.Buffer.from(await new Response(z).arrayBuffer()):z=r.Buffer.from(z,"utf8"),j&&!j.destroyed&&j.push(z)}function ne(ae,z,pe){if(L.bufferedAmount>D){setTimeout(ne,U,ae,z,pe);return}x&&typeof ae=="string"&&(ae=r.Buffer.from(ae,"utf8"));try{L.send(ae)}catch(de){return pe(de)}pe()}function ue(ae){L.close(),ae()}return S};e.browserStreamBuilder=T}),tp={};Li(tp,{Server:()=>tt,Socket:()=>tt,Stream:()=>tt,_createServerHandle:()=>tt,_normalizeArgs:()=>tt,_setSimultaneousAccepts:()=>tt,connect:()=>tt,createConnection:()=>tt,createServer:()=>tt,default:()=>ov,isIP:()=>tt,isIPv4:()=>tt,isIPv6:()=>tt});function tt(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var ov,sv=_t(()=>{_e(),we(),be(),ov={_createServerHandle:tt,_normalizeArgs:tt,_setSimultaneousAccepts:tt,connect:tt,createConnection:tt,createServer:tt,isIP:tt,isIPv4:tt,isIPv6:tt,Server:tt,Socket:tt,Stream:tt}}),Bm=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((sv(),ze(tp))),n=t(sn()),o=(0,n.default)("mqttjs:tcp"),i=(s,a)=>{a.port=a.port||1883,a.hostname=a.hostname||a.host||"localhost";let{port:l,path:u}=a,c=a.hostname;return o("port %d and host %s",l,c),r.default.createConnection({port:l,host:c,path:u})};e.default=i}),av={};Li(av,{default:()=>lv});var lv,Sk=_t(()=>{_e(),we(),be(),lv={}}),Dm=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((Sk(),ze(av))),n=t((sv(),ze(tp))),o=t(sn()),i=(0,o.default)("mqttjs:tls"),s=(a,l)=>{l.port=l.port||8883,l.host=l.hostname||l.host||"localhost",n.default.isIP(l.host)===0&&(l.servername=l.host),l.rejectUnauthorized=l.rejectUnauthorized!==!1,delete l.path,i("port %d host %s rejectUnauthorized %b",l.port,l.host,l.rejectUnauthorized);let u=r.default.connect(l);u.on("secureConnect",()=>{l.rejectUnauthorized&&!u.authorized?u.emit("error",new Error("TLS not authorized")):u.removeListener("error",c)});function c(d){l.rejectUnauthorized&&a.emit("error",d),u.end()}return u.on("error",c),u};e.default=s}),$m=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=(wt(),ze(bt)),r=$i(),n=ep(),o,i,s;function a(){let p=new r.Transform;return p._write=(m,_,b)=>{o.send({data:m.buffer,success(){b()},fail(T){b(new Error(T))}})},p._flush=m=>{o.close({success(){m()}})},p}function l(p){p.hostname||(p.hostname="localhost"),p.path||(p.path="/"),p.wsOptions||(p.wsOptions={})}function u(p,m){let _=p.protocol==="wxs"?"wss":"ws",b=`${_}://${p.hostname}${p.path}`;return p.port&&p.port!==80&&p.port!==443&&(b=`${_}://${p.hostname}:${p.port}${p.path}`),typeof p.transformWsUrl=="function"&&(b=p.transformWsUrl(b,p,m)),b}function c(){o.onOpen(()=>{s.socketReady()}),o.onMessage(p=>{let{data:m}=p;m instanceof ArrayBuffer?m=t.Buffer.from(m):m=t.Buffer.from(m,"utf8"),i.push(m)}),o.onClose(()=>{s.emit("close"),s.end(),s.destroy()}),o.onError(p=>{let m=new Error(p.errMsg);s.destroy(m)})}var d=(p,m)=>{if(m.hostname=m.hostname||m.host,!m.hostname)throw new Error("Could not determine host. Specify host manually.");let _=m.protocolId==="MQIsdp"&&m.protocolVersion===3?"mqttv3.1":"mqtt";l(m);let b=u(m,p);o=wx.connectSocket({url:b,protocols:[_]}),i=a(),s=new n.BufferedDuplex(m,i,o),s._destroy=(N,R)=>{o.close({success(){R&&R(N)}})};let T=s.destroy;return s.destroy=(N,R)=>(s.destroy=T,setTimeout(()=>{o.close({fail(){s._destroy(N,R)}})},0),s),c(),s};e.default=d}),Um=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=(wt(),ze(bt)),r=$i(),n=ep(),o,i,s,a=!1;function l(){let m=new r.Transform;return m._write=(_,b,T)=>{o.sendSocketMessage({data:_.buffer,success(){T()},fail(){T(new Error)}})},m._flush=_=>{o.closeSocket({success(){_()}})},m}function u(m){m.hostname||(m.hostname="localhost"),m.path||(m.path="/"),m.wsOptions||(m.wsOptions={})}function c(m,_){let b=m.protocol==="alis"?"wss":"ws",T=`${b}://${m.hostname}${m.path}`;return m.port&&m.port!==80&&m.port!==443&&(T=`${b}://${m.hostname}:${m.port}${m.path}`),typeof m.transformWsUrl=="function"&&(T=m.transformWsUrl(T,m,_)),T}function d(){a||(a=!0,o.onSocketOpen(()=>{s.socketReady()}),o.onSocketMessage(m=>{if(typeof m.data=="string"){let _=t.Buffer.from(m.data,"base64");i.push(_)}else{let _=new FileReader;_.addEventListener("load",()=>{let b=_.result;b instanceof ArrayBuffer?b=t.Buffer.from(b):b=t.Buffer.from(b,"utf8"),i.push(b)}),_.readAsArrayBuffer(m.data)}}),o.onSocketClose(()=>{s.end(),s.destroy()}),o.onSocketError(m=>{s.destroy(m)}))}var p=(m,_)=>{if(_.hostname=_.hostname||_.host,!_.hostname)throw new Error("Could not determine host. Specify host manually.");let b=_.protocolId==="MQIsdp"&&_.protocolVersion===3?"mqttv3.1":"mqtt";u(_);let T=c(_,m);return o=_.my,o.connectSocket({url:T,protocols:b}),i=l(),s=new n.BufferedDuplex(_,i,o),d(),s};e.default=p}),Ak=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(e,"__esModule",{value:!0}),e.connectAsync=void 0;var r=t(sn()),n=t((vk(),ze(Ow))),o=t(vh()),i=t(iu());typeof(He==null?void 0:He.nextTick)!="function"&&(He.nextTick=setImmediate);var s=(0,r.default)("mqttjs"),a=null;function l(d){let p;d.auth&&(p=d.auth.match(/^(.+):(.+)$/),p?(d.username=p[1],d.password=p[2]):d.username=d.auth)}function u(d,p){var m,_,b,T;if(s("connecting to an MQTT broker..."),typeof d=="object"&&!p&&(p=d,d=""),p=p||{},d&&typeof d=="string"){let S=n.default.parse(d,!0),D={};if(S.port!=null&&(D.port=Number(S.port)),D.host=S.hostname,D.query=S.query,D.auth=S.auth,D.protocol=S.protocol,D.path=S.path,D.protocol=(m=D.protocol)===null||m===void 0?void 0:m.replace(/:$/,""),p=Object.assign(Object.assign({},D),p),!p.protocol)throw new Error("Missing protocol")}if(p.unixSocket=p.unixSocket||((_=p.protocol)===null||_===void 0?void 0:_.includes("+unix")),p.unixSocket?p.protocol=p.protocol.replace("+unix",""):!(!((b=p.protocol)===null||b===void 0)&&b.startsWith("ws"))&&!(!((T=p.protocol)===null||T===void 0)&&T.startsWith("wx"))&&delete p.path,l(p),p.query&&typeof p.query.clientId=="string"&&(p.clientId=p.query.clientId),p.cert&&p.key)if(p.protocol){if(["mqtts","wss","wxs","alis"].indexOf(p.protocol)===-1)switch(p.protocol){case"mqtt":p.protocol="mqtts";break;case"ws":p.protocol="wss";break;case"wx":p.protocol="wxs";break;case"ali":p.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${p.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(a||(a={},!i.default&&!p.forceNativeWebSocket?(a.ws=ga().streamBuilder,a.wss=ga().streamBuilder,a.mqtt=Bm().default,a.tcp=Bm().default,a.ssl=Dm().default,a.tls=a.ssl,a.mqtts=Dm().default):(a.ws=ga().browserStreamBuilder,a.wss=ga().browserStreamBuilder,a.wx=$m().default,a.wxs=$m().default,a.ali=Um().default,a.alis=Um().default)),!a[p.protocol]){let S=["mqtts","wss"].indexOf(p.protocol)!==-1;p.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((D,U)=>S&&U%2===0?!1:typeof a[D]=="function")[0]}if(p.clean===!1&&!p.clientId)throw new Error("Missing clientId for unclean clients");p.protocol&&(p.defaultProtocol=p.protocol);function N(S){return p.servers&&((!S._reconnectCount||S._reconnectCount===p.servers.length)&&(S._reconnectCount=0),p.host=p.servers[S._reconnectCount].host,p.port=p.servers[S._reconnectCount].port,p.protocol=p.servers[S._reconnectCount].protocol?p.servers[S._reconnectCount].protocol:p.defaultProtocol,p.hostname=p.host,S._reconnectCount++),s("calling streambuilder for",p.protocol),a[p.protocol](S,p)}let R=new o.default(N,p);return R.on("error",()=>{}),R}function c(d,p,m=!0){return new Promise((_,b)=>{let T=u(d,p),N={connect:S=>{R(),_(T)},end:()=>{R(),_(T)},error:S=>{R(),T.end(),b(S)}};m===!1&&(N.close=()=>{N.error(new Error("Couldn't connect to server"))});function R(){Object.keys(N).forEach(S=>{T.off(S,N[S])})}Object.keys(N).forEach(S=>{T.on(S,N[S])})})}e.connectAsync=c,e.default=u}),Fm=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(m,_,b,T){T===void 0&&(T=b);var N=Object.getOwnPropertyDescriptor(_,b);(!N||("get"in N?!_.__esModule:N.writable||N.configurable))&&(N={enumerable:!0,get:function(){return _[b]}}),Object.defineProperty(m,T,N)}:function(m,_,b,T){T===void 0&&(T=b),m[T]=_[b]}),r=e&&e.__setModuleDefault||(Object.create?function(m,_){Object.defineProperty(m,"default",{enumerable:!0,value:_})}:function(m,_){m.default=_}),n=e&&e.__importStar||function(m){if(m&&m.__esModule)return m;var _={};if(m!=null)for(var b in m)b!=="default"&&Object.prototype.hasOwnProperty.call(m,b)&&t(_,m,b);return r(_,m),_},o=e&&e.__exportStar||function(m,_){for(var b in m)b!=="default"&&!Object.prototype.hasOwnProperty.call(_,b)&&t(_,m,b)},i=e&&e.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=e.KeepaliveManager=e.UniqueMessageIdProvider=e.DefaultMessageIdProvider=e.Store=e.MqttClient=e.connectAsync=e.connect=e.Client=void 0;var s=i(vh());e.MqttClient=s.default;var a=i(aw());e.DefaultMessageIdProvider=a.default;var l=i(ok());e.UniqueMessageIdProvider=l.default;var u=i(lw());e.Store=u.default;var c=n(Ak());e.connect=c.default,Object.defineProperty(e,"connectAsync",{enumerable:!0,get:function(){return c.connectAsync}});var d=i(Aw());e.KeepaliveManager=d.default,e.Client=s.default,o(vh(),e),o(Ho(),e);var p=nu();Object.defineProperty(e,"ReasonCodes",{enumerable:!0,get:function(){return p.ReasonCodes}})}),Tk=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(s,a,l,u){u===void 0&&(u=l);var c=Object.getOwnPropertyDescriptor(a,l);(!c||("get"in c?!a.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return a[l]}}),Object.defineProperty(s,u,c)}:function(s,a,l,u){u===void 0&&(u=l),s[u]=a[l]}),r=e&&e.__setModuleDefault||(Object.create?function(s,a){Object.defineProperty(s,"default",{enumerable:!0,value:a})}:function(s,a){s.default=a}),n=e&&e.__importStar||function(s){if(s&&s.__esModule)return s;var a={};if(s!=null)for(var l in s)l!=="default"&&Object.prototype.hasOwnProperty.call(s,l)&&t(a,s,l);return r(a,s),a},o=e&&e.__exportStar||function(s,a){for(var l in s)l!=="default"&&!Object.prototype.hasOwnProperty.call(a,l)&&t(a,s,l)};Object.defineProperty(e,"__esModule",{value:!0});var i=n(Fm());e.default=i,o(Fm(),e)});const XF=Tk();/*! Bundled license information:
-
-@jspm/core/nodelibs/browser/buffer.js:
-  (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
-*/var rp={exports:{}},uv={exports:{}},dc={exports:{}},Gt={},ou={};ou.byteLength=Ck;ou.toByteArray=Ok;ou.fromByteArray=Mk;var Cr=[],Jt=[],xk=typeof Uint8Array<"u"?Uint8Array:Array,pc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Qi=0,Ik=pc.length;Qi<Ik;++Qi)Cr[Qi]=pc[Qi],Jt[pc.charCodeAt(Qi)]=Qi;Jt[45]=62;Jt[95]=63;function cv(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function Ck(e){var t=cv(e),r=t[0],n=t[1];return(r+n)*3/4-n}function Rk(e,t,r){return(t+r)*3/4-r}function Ok(e){var t,r=cv(e),n=r[0],o=r[1],i=new xk(Rk(e,n,o)),s=0,a=o>0?n-4:n,l;for(l=0;l<a;l+=4)t=Jt[e.charCodeAt(l)]<<18|Jt[e.charCodeAt(l+1)]<<12|Jt[e.charCodeAt(l+2)]<<6|Jt[e.charCodeAt(l+3)],i[s++]=t>>16&255,i[s++]=t>>8&255,i[s++]=t&255;return o===2&&(t=Jt[e.charCodeAt(l)]<<2|Jt[e.charCodeAt(l+1)]>>4,i[s++]=t&255),o===1&&(t=Jt[e.charCodeAt(l)]<<10|Jt[e.charCodeAt(l+1)]<<4|Jt[e.charCodeAt(l+2)]>>2,i[s++]=t>>8&255,i[s++]=t&255),i}function kk(e){return Cr[e>>18&63]+Cr[e>>12&63]+Cr[e>>6&63]+Cr[e&63]}function Nk(e,t,r){for(var n,o=[],i=t;i<r;i+=3)n=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(e[i+2]&255),o.push(kk(n));return o.join("")}function Mk(e){for(var t,r=e.length,n=r%3,o=[],i=16383,s=0,a=r-n;s<a;s+=i)o.push(Nk(e,s,s+i>a?a:s+i));return n===1?(t=e[r-1],o.push(Cr[t>>2]+Cr[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],o.push(Cr[t>>10]+Cr[t>>4&63]+Cr[t<<2&63]+"=")),o.join("")}var np={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */np.read=function(e,t,r,n,o){var i,s,a=o*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,m=e[t+d];for(d+=p,i=m&(1<<-c)-1,m>>=-c,c+=a;c>0;i=i*256+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=s*256+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:(m?-1:1)*(1/0);s=s+Math.pow(2,n),i=i-u}return(m?-1:1)*s*Math.pow(2,i-n)};np.write=function(e,t,r,n,o,i){var s,a,l,u=i*8-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+d>=1?t+=p/l:t+=p*Math.pow(2,1-d),t*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s=s+d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+m]=a&255,m+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+m]=s&255,m+=_,s/=256,u-=8);e[r+m-_]|=b*128};/*!
- * The buffer module from node.js, for the browser.
- *
- * @author   Feross Aboukhadijeh <https://feross.org>
- * @license  MIT
- */(function(e){const t=ou,r=np,n=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=R,e.INSPECT_MAX_BYTES=50;const o=2147483647;e.kMaxLength=o,a.TYPED_ARRAY_SUPPORT=i(),!a.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function i(){try{const h=new Uint8Array(1),f={foo:function(){return 42}};return Object.setPrototypeOf(f,Uint8Array.prototype),Object.setPrototypeOf(h,f),h.foo()===42}catch{return!1}}Object.defineProperty(a.prototype,"parent",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}});function s(h){if(h>o)throw new RangeError('The value "'+h+'" is invalid for option "size"');const f=new Uint8Array(h);return Object.setPrototypeOf(f,a.prototype),f}function a(h,f,g){if(typeof h=="number"){if(typeof f=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return d(h)}return l(h,f,g)}a.poolSize=8192;function l(h,f,g){if(typeof h=="string")return p(h,f);if(ArrayBuffer.isView(h))return _(h);if(h==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof h);if(I(h,ArrayBuffer)||h&&I(h.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(I(h,SharedArrayBuffer)||h&&I(h.buffer,SharedArrayBuffer)))return b(h,f,g);if(typeof h=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const w=h.valueOf&&h.valueOf();if(w!=null&&w!==h)return a.from(w,f,g);const C=T(h);if(C)return C;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof h[Symbol.toPrimitive]=="function")return a.from(h[Symbol.toPrimitive]("string"),f,g);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof h)}a.from=function(h,f,g){return l(h,f,g)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array);function u(h){if(typeof h!="number")throw new TypeError('"size" argument must be of type number');if(h<0)throw new RangeError('The value "'+h+'" is invalid for option "size"')}function c(h,f,g){return u(h),h<=0?s(h):f!==void 0?typeof g=="string"?s(h).fill(f,g):s(h).fill(f):s(h)}a.alloc=function(h,f,g){return c(h,f,g)};function d(h){return u(h),s(h<0?0:N(h)|0)}a.allocUnsafe=function(h){return d(h)},a.allocUnsafeSlow=function(h){return d(h)};function p(h,f){if((typeof f!="string"||f==="")&&(f="utf8"),!a.isEncoding(f))throw new TypeError("Unknown encoding: "+f);const g=S(h,f)|0;let w=s(g);const C=w.write(h,f);return C!==g&&(w=w.slice(0,C)),w}function m(h){const f=h.length<0?0:N(h.length)|0,g=s(f);for(let w=0;w<f;w+=1)g[w]=h[w]&255;return g}function _(h){if(I(h,Uint8Array)){const f=new Uint8Array(h);return b(f.buffer,f.byteOffset,f.byteLength)}return m(h)}function b(h,f,g){if(f<0||h.byteLength<f)throw new RangeError('"offset" is outside of buffer bounds');if(h.byteLength<f+(g||0))throw new RangeError('"length" is outside of buffer bounds');let w;return f===void 0&&g===void 0?w=new Uint8Array(h):g===void 0?w=new Uint8Array(h,f):w=new Uint8Array(h,f,g),Object.setPrototypeOf(w,a.prototype),w}function T(h){if(a.isBuffer(h)){const f=N(h.length)|0,g=s(f);return g.length===0||h.copy(g,0,0,f),g}if(h.length!==void 0)return typeof h.length!="number"||W(h.length)?s(0):m(h);if(h.type==="Buffer"&&Array.isArray(h.data))return m(h.data)}function N(h){if(h>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return h|0}function R(h){return+h!=h&&(h=0),a.alloc(+h)}a.isBuffer=function(f){return f!=null&&f._isBuffer===!0&&f!==a.prototype},a.compare=function(f,g){if(I(f,Uint8Array)&&(f=a.from(f,f.offset,f.byteLength)),I(g,Uint8Array)&&(g=a.from(g,g.offset,g.byteLength)),!a.isBuffer(f)||!a.isBuffer(g))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(f===g)return 0;let w=f.length,C=g.length;for(let V=0,fe=Math.min(w,C);V<fe;++V)if(f[V]!==g[V]){w=f[V],C=g[V];break}return w<C?-1:C<w?1:0},a.isEncoding=function(f){switch(String(f).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},a.concat=function(f,g){if(!Array.isArray(f))throw new TypeError('"list" argument must be an Array of Buffers');if(f.length===0)return a.alloc(0);let w;if(g===void 0)for(g=0,w=0;w<f.length;++w)g+=f[w].length;const C=a.allocUnsafe(g);let V=0;for(w=0;w<f.length;++w){let fe=f[w];if(I(fe,Uint8Array))V+fe.length>C.length?(a.isBuffer(fe)||(fe=a.from(fe)),fe.copy(C,V)):Uint8Array.prototype.set.call(C,fe,V);else if(a.isBuffer(fe))fe.copy(C,V);else throw new TypeError('"list" argument must be an Array of Buffers');V+=fe.length}return C};function S(h,f){if(a.isBuffer(h))return h.length;if(ArrayBuffer.isView(h)||I(h,ArrayBuffer))return h.byteLength;if(typeof h!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof h);const g=h.length,w=arguments.length>2&&arguments[2]===!0;if(!w&&g===0)return 0;let C=!1;for(;;)switch(f){case"ascii":case"latin1":case"binary":return g;case"utf8":case"utf-8":return M(h).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return g*2;case"hex":return g>>>1;case"base64":return $(h).length;default:if(C)return w?-1:M(h).length;f=(""+f).toLowerCase(),C=!0}}a.byteLength=S;function D(h,f,g){let w=!1;if((f===void 0||f<0)&&(f=0),f>this.length||((g===void 0||g>this.length)&&(g=this.length),g<=0)||(g>>>=0,f>>>=0,g<=f))return"";for(h||(h="utf8");;)switch(h){case"hex":return pe(this,f,g);case"utf8":case"utf-8":return oe(this,f,g);case"ascii":return ae(this,f,g);case"latin1":case"binary":return z(this,f,g);case"base64":return B(this,f,g);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return de(this,f,g);default:if(w)throw new TypeError("Unknown encoding: "+h);h=(h+"").toLowerCase(),w=!0}}a.prototype._isBuffer=!0;function U(h,f,g){const w=h[f];h[f]=h[g],h[g]=w}a.prototype.swap16=function(){const f=this.length;if(f%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let g=0;g<f;g+=2)U(this,g,g+1);return this},a.prototype.swap32=function(){const f=this.length;if(f%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let g=0;g<f;g+=4)U(this,g,g+3),U(this,g+1,g+2);return this},a.prototype.swap64=function(){const f=this.length;if(f%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let g=0;g<f;g+=8)U(this,g,g+7),U(this,g+1,g+6),U(this,g+2,g+5),U(this,g+3,g+4);return this},a.prototype.toString=function(){const f=this.length;return f===0?"":arguments.length===0?oe(this,0,f):D.apply(this,arguments)},a.prototype.toLocaleString=a.prototype.toString,a.prototype.equals=function(f){if(!a.isBuffer(f))throw new TypeError("Argument must be a Buffer");return this===f?!0:a.compare(this,f)===0},a.prototype.inspect=function(){let f="";const g=e.INSPECT_MAX_BYTES;return f=this.toString("hex",0,g).replace(/(.{2})/g,"$1 ").trim(),this.length>g&&(f+=" ... "),"<Buffer "+f+">"},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(f,g,w,C,V){if(I(f,Uint8Array)&&(f=a.from(f,f.offset,f.byteLength)),!a.isBuffer(f))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof f);if(g===void 0&&(g=0),w===void 0&&(w=f?f.length:0),C===void 0&&(C=0),V===void 0&&(V=this.length),g<0||w>f.length||C<0||V>this.length)throw new RangeError("out of range index");if(C>=V&&g>=w)return 0;if(C>=V)return-1;if(g>=w)return 1;if(g>>>=0,w>>>=0,C>>>=0,V>>>=0,this===f)return 0;let fe=V-C,xe=w-g;const ke=Math.min(fe,xe),Te=this.slice(C,V),Oe=f.slice(g,w);for(let Re=0;Re<ke;++Re)if(Te[Re]!==Oe[Re]){fe=Te[Re],xe=Oe[Re];break}return fe<xe?-1:xe<fe?1:0};function x(h,f,g,w,C){if(h.length===0)return-1;if(typeof g=="string"?(w=g,g=0):g>2147483647?g=2147483647:g<-2147483648&&(g=-2147483648),g=+g,W(g)&&(g=C?0:h.length-1),g<0&&(g=h.length+g),g>=h.length){if(C)return-1;g=h.length-1}else if(g<0)if(C)g=0;else return-1;if(typeof f=="string"&&(f=a.from(f,w)),a.isBuffer(f))return f.length===0?-1:L(h,f,g,w,C);if(typeof f=="number")return f=f&255,typeof Uint8Array.prototype.indexOf=="function"?C?Uint8Array.prototype.indexOf.call(h,f,g):Uint8Array.prototype.lastIndexOf.call(h,f,g):L(h,[f],g,w,C);throw new TypeError("val must be string, number or Buffer")}function L(h,f,g,w,C){let V=1,fe=h.length,xe=f.length;if(w!==void 0&&(w=String(w).toLowerCase(),w==="ucs2"||w==="ucs-2"||w==="utf16le"||w==="utf-16le")){if(h.length<2||f.length<2)return-1;V=2,fe/=2,xe/=2,g/=2}function ke(Oe,Re){return V===1?Oe[Re]:Oe.readUInt16BE(Re*V)}let Te;if(C){let Oe=-1;for(Te=g;Te<fe;Te++)if(ke(h,Te)===ke(f,Oe===-1?0:Te-Oe)){if(Oe===-1&&(Oe=Te),Te-Oe+1===xe)return Oe*V}else Oe!==-1&&(Te-=Te-Oe),Oe=-1}else for(g+xe>fe&&(g=fe-xe),Te=g;Te>=0;Te--){let Oe=!0;for(let Re=0;Re<xe;Re++)if(ke(h,Te+Re)!==ke(f,Re)){Oe=!1;break}if(Oe)return Te}return-1}a.prototype.includes=function(f,g,w){return this.indexOf(f,g,w)!==-1},a.prototype.indexOf=function(f,g,w){return x(this,f,g,w,!0)},a.prototype.lastIndexOf=function(f,g,w){return x(this,f,g,w,!1)};function j(h,f,g,w){g=Number(g)||0;const C=h.length-g;w?(w=Number(w),w>C&&(w=C)):w=C;const V=f.length;w>V/2&&(w=V/2);let fe;for(fe=0;fe<w;++fe){const xe=parseInt(f.substr(fe*2,2),16);if(W(xe))return fe;h[g+fe]=xe}return fe}function Y(h,f,g,w){return K(M(f,h.length-g),h,g,w)}function se(h,f,g,w){return K(ee(f),h,g,w)}function re(h,f,g,w){return K($(f),h,g,w)}function P(h,f,g,w){return K(te(f,h.length-g),h,g,w)}a.prototype.write=function(f,g,w,C){if(g===void 0)C="utf8",w=this.length,g=0;else if(w===void 0&&typeof g=="string")C=g,w=this.length,g=0;else if(isFinite(g))g=g>>>0,isFinite(w)?(w=w>>>0,C===void 0&&(C="utf8")):(C=w,w=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const V=this.length-g;if((w===void 0||w>V)&&(w=V),f.length>0&&(w<0||g<0)||g>this.length)throw new RangeError("Attempt to write outside buffer bounds");C||(C="utf8");let fe=!1;for(;;)switch(C){case"hex":return j(this,f,g,w);case"utf8":case"utf-8":return Y(this,f,g,w);case"ascii":case"latin1":case"binary":return se(this,f,g,w);case"base64":return re(this,f,g,w);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,f,g,w);default:if(fe)throw new TypeError("Unknown encoding: "+C);C=(""+C).toLowerCase(),fe=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function B(h,f,g){return f===0&&g===h.length?t.fromByteArray(h):t.fromByteArray(h.slice(f,g))}function oe(h,f,g){g=Math.min(h.length,g);const w=[];let C=f;for(;C<g;){const V=h[C];let fe=null,xe=V>239?4:V>223?3:V>191?2:1;if(C+xe<=g){let ke,Te,Oe,Re;switch(xe){case 1:V<128&&(fe=V);break;case 2:ke=h[C+1],(ke&192)===128&&(Re=(V&31)<<6|ke&63,Re>127&&(fe=Re));break;case 3:ke=h[C+1],Te=h[C+2],(ke&192)===128&&(Te&192)===128&&(Re=(V&15)<<12|(ke&63)<<6|Te&63,Re>2047&&(Re<55296||Re>57343)&&(fe=Re));break;case 4:ke=h[C+1],Te=h[C+2],Oe=h[C+3],(ke&192)===128&&(Te&192)===128&&(Oe&192)===128&&(Re=(V&15)<<18|(ke&63)<<12|(Te&63)<<6|Oe&63,Re>65535&&Re<1114112&&(fe=Re))}}fe===null?(fe=65533,xe=1):fe>65535&&(fe-=65536,w.push(fe>>>10&1023|55296),fe=56320|fe&1023),w.push(fe),C+=xe}return ue(w)}const ne=4096;function ue(h){const f=h.length;if(f<=ne)return String.fromCharCode.apply(String,h);let g="",w=0;for(;w<f;)g+=String.fromCharCode.apply(String,h.slice(w,w+=ne));return g}function ae(h,f,g){let w="";g=Math.min(h.length,g);for(let C=f;C<g;++C)w+=String.fromCharCode(h[C]&127);return w}function z(h,f,g){let w="";g=Math.min(h.length,g);for(let C=f;C<g;++C)w+=String.fromCharCode(h[C]);return w}function pe(h,f,g){const w=h.length;(!f||f<0)&&(f=0),(!g||g<0||g>w)&&(g=w);let C="";for(let V=f;V<g;++V)C+=J[h[V]];return C}function de(h,f,g){const w=h.slice(f,g);let C="";for(let V=0;V<w.length-1;V+=2)C+=String.fromCharCode(w[V]+w[V+1]*256);return C}a.prototype.slice=function(f,g){const w=this.length;f=~~f,g=g===void 0?w:~~g,f<0?(f+=w,f<0&&(f=0)):f>w&&(f=w),g<0?(g+=w,g<0&&(g=0)):g>w&&(g=w),g<f&&(g=f);const C=this.subarray(f,g);return Object.setPrototypeOf(C,a.prototype),C};function ge(h,f,g){if(h%1!==0||h<0)throw new RangeError("offset is not uint");if(h+f>g)throw new RangeError("Trying to access beyond buffer length")}a.prototype.readUintLE=a.prototype.readUIntLE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let C=this[f],V=1,fe=0;for(;++fe<g&&(V*=256);)C+=this[f+fe]*V;return C},a.prototype.readUintBE=a.prototype.readUIntBE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let C=this[f+--g],V=1;for(;g>0&&(V*=256);)C+=this[f+--g]*V;return C},a.prototype.readUint8=a.prototype.readUInt8=function(f,g){return f=f>>>0,g||ge(f,1,this.length),this[f]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(f,g){return f=f>>>0,g||ge(f,2,this.length),this[f]|this[f+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(f,g){return f=f>>>0,g||ge(f,2,this.length),this[f]<<8|this[f+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),(this[f]|this[f+1]<<8|this[f+2]<<16)+this[f+3]*16777216},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),this[f]*16777216+(this[f+1]<<16|this[f+2]<<8|this[f+3])},a.prototype.readBigUInt64LE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&A(f,this.length-8);const C=g+this[++f]*2**8+this[++f]*2**16+this[++f]*2**24,V=this[++f]+this[++f]*2**8+this[++f]*2**16+w*2**24;return BigInt(C)+(BigInt(V)<<BigInt(32))}),a.prototype.readBigUInt64BE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&A(f,this.length-8);const C=g*2**24+this[++f]*2**16+this[++f]*2**8+this[++f],V=this[++f]*2**24+this[++f]*2**16+this[++f]*2**8+w;return(BigInt(C)<<BigInt(32))+BigInt(V)}),a.prototype.readIntLE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let C=this[f],V=1,fe=0;for(;++fe<g&&(V*=256);)C+=this[f+fe]*V;return V*=128,C>=V&&(C-=Math.pow(2,8*g)),C},a.prototype.readIntBE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let C=g,V=1,fe=this[f+--C];for(;C>0&&(V*=256);)fe+=this[f+--C]*V;return V*=128,fe>=V&&(fe-=Math.pow(2,8*g)),fe},a.prototype.readInt8=function(f,g){return f=f>>>0,g||ge(f,1,this.length),this[f]&128?(255-this[f]+1)*-1:this[f]},a.prototype.readInt16LE=function(f,g){f=f>>>0,g||ge(f,2,this.length);const w=this[f]|this[f+1]<<8;return w&32768?w|4294901760:w},a.prototype.readInt16BE=function(f,g){f=f>>>0,g||ge(f,2,this.length);const w=this[f+1]|this[f]<<8;return w&32768?w|4294901760:w},a.prototype.readInt32LE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),this[f]|this[f+1]<<8|this[f+2]<<16|this[f+3]<<24},a.prototype.readInt32BE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),this[f]<<24|this[f+1]<<16|this[f+2]<<8|this[f+3]},a.prototype.readBigInt64LE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&A(f,this.length-8);const C=this[f+4]+this[f+5]*2**8+this[f+6]*2**16+(w<<24);return(BigInt(C)<<BigInt(32))+BigInt(g+this[++f]*2**8+this[++f]*2**16+this[++f]*2**24)}),a.prototype.readBigInt64BE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&A(f,this.length-8);const C=(g<<24)+this[++f]*2**16+this[++f]*2**8+this[++f];return(BigInt(C)<<BigInt(32))+BigInt(this[++f]*2**24+this[++f]*2**16+this[++f]*2**8+w)}),a.prototype.readFloatLE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),r.read(this,f,!0,23,4)},a.prototype.readFloatBE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),r.read(this,f,!1,23,4)},a.prototype.readDoubleLE=function(f,g){return f=f>>>0,g||ge(f,8,this.length),r.read(this,f,!0,52,8)},a.prototype.readDoubleBE=function(f,g){return f=f>>>0,g||ge(f,8,this.length),r.read(this,f,!1,52,8)};function O(h,f,g,w,C,V){if(!a.isBuffer(h))throw new TypeError('"buffer" argument must be a Buffer instance');if(f>C||f<V)throw new RangeError('"value" argument is out of bounds');if(g+w>h.length)throw new RangeError("Index out of range")}a.prototype.writeUintLE=a.prototype.writeUIntLE=function(f,g,w,C){if(f=+f,g=g>>>0,w=w>>>0,!C){const xe=Math.pow(2,8*w)-1;O(this,f,g,w,xe,0)}let V=1,fe=0;for(this[g]=f&255;++fe<w&&(V*=256);)this[g+fe]=f/V&255;return g+w},a.prototype.writeUintBE=a.prototype.writeUIntBE=function(f,g,w,C){if(f=+f,g=g>>>0,w=w>>>0,!C){const xe=Math.pow(2,8*w)-1;O(this,f,g,w,xe,0)}let V=w-1,fe=1;for(this[g+V]=f&255;--V>=0&&(fe*=256);)this[g+V]=f/fe&255;return g+w},a.prototype.writeUint8=a.prototype.writeUInt8=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,1,255,0),this[g]=f&255,g+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,65535,0),this[g]=f&255,this[g+1]=f>>>8,g+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,65535,0),this[g]=f>>>8,this[g+1]=f&255,g+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,4294967295,0),this[g+3]=f>>>24,this[g+2]=f>>>16,this[g+1]=f>>>8,this[g]=f&255,g+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,4294967295,0),this[g]=f>>>24,this[g+1]=f>>>16,this[g+2]=f>>>8,this[g+3]=f&255,g+4};function ie(h,f,g,w,C){Z(f,w,C,h,g,7);let V=Number(f&BigInt(4294967295));h[g++]=V,V=V>>8,h[g++]=V,V=V>>8,h[g++]=V,V=V>>8,h[g++]=V;let fe=Number(f>>BigInt(32)&BigInt(4294967295));return h[g++]=fe,fe=fe>>8,h[g++]=fe,fe=fe>>8,h[g++]=fe,fe=fe>>8,h[g++]=fe,g}function me(h,f,g,w,C){Z(f,w,C,h,g,7);let V=Number(f&BigInt(4294967295));h[g+7]=V,V=V>>8,h[g+6]=V,V=V>>8,h[g+5]=V,V=V>>8,h[g+4]=V;let fe=Number(f>>BigInt(32)&BigInt(4294967295));return h[g+3]=fe,fe=fe>>8,h[g+2]=fe,fe=fe>>8,h[g+1]=fe,fe=fe>>8,h[g]=fe,g+8}a.prototype.writeBigUInt64LE=le(function(f,g=0){return ie(this,f,g,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeBigUInt64BE=le(function(f,g=0){return me(this,f,g,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeIntLE=function(f,g,w,C){if(f=+f,g=g>>>0,!C){const ke=Math.pow(2,8*w-1);O(this,f,g,w,ke-1,-ke)}let V=0,fe=1,xe=0;for(this[g]=f&255;++V<w&&(fe*=256);)f<0&&xe===0&&this[g+V-1]!==0&&(xe=1),this[g+V]=(f/fe>>0)-xe&255;return g+w},a.prototype.writeIntBE=function(f,g,w,C){if(f=+f,g=g>>>0,!C){const ke=Math.pow(2,8*w-1);O(this,f,g,w,ke-1,-ke)}let V=w-1,fe=1,xe=0;for(this[g+V]=f&255;--V>=0&&(fe*=256);)f<0&&xe===0&&this[g+V+1]!==0&&(xe=1),this[g+V]=(f/fe>>0)-xe&255;return g+w},a.prototype.writeInt8=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,1,127,-128),f<0&&(f=255+f+1),this[g]=f&255,g+1},a.prototype.writeInt16LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,32767,-32768),this[g]=f&255,this[g+1]=f>>>8,g+2},a.prototype.writeInt16BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,32767,-32768),this[g]=f>>>8,this[g+1]=f&255,g+2},a.prototype.writeInt32LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,2147483647,-2147483648),this[g]=f&255,this[g+1]=f>>>8,this[g+2]=f>>>16,this[g+3]=f>>>24,g+4},a.prototype.writeInt32BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,2147483647,-2147483648),f<0&&(f=4294967295+f+1),this[g]=f>>>24,this[g+1]=f>>>16,this[g+2]=f>>>8,this[g+3]=f&255,g+4},a.prototype.writeBigInt64LE=le(function(f,g=0){return ie(this,f,g,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),a.prototype.writeBigInt64BE=le(function(f,g=0){return me(this,f,g,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ve(h,f,g,w,C,V){if(g+w>h.length)throw new RangeError("Index out of range");if(g<0)throw new RangeError("Index out of range")}function ye(h,f,g,w,C){return f=+f,g=g>>>0,C||ve(h,f,g,4),r.write(h,f,g,w,23,4),g+4}a.prototype.writeFloatLE=function(f,g,w){return ye(this,f,g,!0,w)},a.prototype.writeFloatBE=function(f,g,w){return ye(this,f,g,!1,w)};function q(h,f,g,w,C){return f=+f,g=g>>>0,C||ve(h,f,g,8),r.write(h,f,g,w,52,8),g+8}a.prototype.writeDoubleLE=function(f,g,w){return q(this,f,g,!0,w)},a.prototype.writeDoubleBE=function(f,g,w){return q(this,f,g,!1,w)},a.prototype.copy=function(f,g,w,C){if(!a.isBuffer(f))throw new TypeError("argument should be a Buffer");if(w||(w=0),!C&&C!==0&&(C=this.length),g>=f.length&&(g=f.length),g||(g=0),C>0&&C<w&&(C=w),C===w||f.length===0||this.length===0)return 0;if(g<0)throw new RangeError("targetStart out of bounds");if(w<0||w>=this.length)throw new RangeError("Index out of range");if(C<0)throw new RangeError("sourceEnd out of bounds");C>this.length&&(C=this.length),f.length-g<C-w&&(C=f.length-g+w);const V=C-w;return this===f&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(g,w,C):Uint8Array.prototype.set.call(f,this.subarray(w,C),g),V},a.prototype.fill=function(f,g,w,C){if(typeof f=="string"){if(typeof g=="string"?(C=g,g=0,w=this.length):typeof w=="string"&&(C=w,w=this.length),C!==void 0&&typeof C!="string")throw new TypeError("encoding must be a string");if(typeof C=="string"&&!a.isEncoding(C))throw new TypeError("Unknown encoding: "+C);if(f.length===1){const fe=f.charCodeAt(0);(C==="utf8"&&fe<128||C==="latin1")&&(f=fe)}}else typeof f=="number"?f=f&255:typeof f=="boolean"&&(f=Number(f));if(g<0||this.length<g||this.length<w)throw new RangeError("Out of range index");if(w<=g)return this;g=g>>>0,w=w===void 0?this.length:w>>>0,f||(f=0);let V;if(typeof f=="number")for(V=g;V<w;++V)this[V]=f;else{const fe=a.isBuffer(f)?f:a.from(f,C),xe=fe.length;if(xe===0)throw new TypeError('The value "'+f+'" is invalid for argument "value"');for(V=0;V<w-g;++V)this[V+g]=fe[V%xe]}return this};const F={};function X(h,f,g){F[h]=class extends g{constructor(){super(),Object.defineProperty(this,"message",{value:f.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${h}]`,this.stack,delete this.name}get code(){return h}set code(C){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:C,writable:!0})}toString(){return`${this.name} [${h}]: ${this.message}`}}}X("ERR_BUFFER_OUT_OF_BOUNDS",function(h){return h?`${h} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),X("ERR_INVALID_ARG_TYPE",function(h,f){return`The "${h}" argument must be of type number. Received type ${typeof f}`},TypeError),X("ERR_OUT_OF_RANGE",function(h,f,g){let w=`The value of "${h}" is out of range.`,C=g;return Number.isInteger(g)&&Math.abs(g)>2**32?C=he(String(g)):typeof g=="bigint"&&(C=String(g),(g>BigInt(2)**BigInt(32)||g<-(BigInt(2)**BigInt(32)))&&(C=he(C)),C+="n"),w+=` It must be ${f}. Received ${C}`,w},RangeError);function he(h){let f="",g=h.length;const w=h[0]==="-"?1:0;for(;g>=w+4;g-=3)f=`_${h.slice(g-3,g)}${f}`;return`${h.slice(0,g)}${f}`}function ce(h,f,g){v(f,"offset"),(h[f]===void 0||h[f+g]===void 0)&&A(f,h.length-(g+1))}function Z(h,f,g,w,C,V){if(h>g||h<f){const fe=typeof f=="bigint"?"n":"";let xe;throw f===0||f===BigInt(0)?xe=`>= 0${fe} and < 2${fe} ** ${(V+1)*8}${fe}`:xe=`>= -(2${fe} ** ${(V+1)*8-1}${fe}) and < 2 ** ${(V+1)*8-1}${fe}`,new F.ERR_OUT_OF_RANGE("value",xe,h)}ce(w,C,V)}function v(h,f){if(typeof h!="number")throw new F.ERR_INVALID_ARG_TYPE(f,"number",h)}function A(h,f,g){throw Math.floor(h)!==h?(v(h,g),new F.ERR_OUT_OF_RANGE("offset","an integer",h)):f<0?new F.ERR_BUFFER_OUT_OF_BOUNDS:new F.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${f}`,h)}const E=/[^+/0-9A-Za-z-_]/g;function k(h){if(h=h.split("=")[0],h=h.trim().replace(E,""),h.length<2)return"";for(;h.length%4!==0;)h=h+"=";return h}function M(h,f){f=f||1/0;let g;const w=h.length;let C=null;const V=[];for(let fe=0;fe<w;++fe){if(g=h.charCodeAt(fe),g>55295&&g<57344){if(!C){if(g>56319){(f-=3)>-1&&V.push(239,191,189);continue}else if(fe+1===w){(f-=3)>-1&&V.push(239,191,189);continue}C=g;continue}if(g<56320){(f-=3)>-1&&V.push(239,191,189),C=g;continue}g=(C-55296<<10|g-56320)+65536}else C&&(f-=3)>-1&&V.push(239,191,189);if(C=null,g<128){if((f-=1)<0)break;V.push(g)}else if(g<2048){if((f-=2)<0)break;V.push(g>>6|192,g&63|128)}else if(g<65536){if((f-=3)<0)break;V.push(g>>12|224,g>>6&63|128,g&63|128)}else if(g<1114112){if((f-=4)<0)break;V.push(g>>18|240,g>>12&63|128,g>>6&63|128,g&63|128)}else throw new Error("Invalid code point")}return V}function ee(h){const f=[];for(let g=0;g<h.length;++g)f.push(h.charCodeAt(g)&255);return f}function te(h,f){let g,w,C;const V=[];for(let fe=0;fe<h.length&&!((f-=2)<0);++fe)g=h.charCodeAt(fe),w=g>>8,C=g%256,V.push(C),V.push(w);return V}function $(h){return t.toByteArray(k(h))}function K(h,f,g,w){let C;for(C=0;C<w&&!(C+g>=f.length||C>=h.length);++C)f[C+g]=h[C];return C}function I(h,f){return h instanceof f||h!=null&&h.constructor!=null&&h.constructor.name!=null&&h.constructor.name===f.name}function W(h){return h!==h}const J=function(){const h="0123456789abcdef",f=new Array(256);for(let g=0;g<16;++g){const w=g*16;for(let C=0;C<16;++C)f[w+C]=h[g]+h[C]}return f}();function le(h){return typeof BigInt>"u"?y:h}function y(){throw new Error("BigInt not supported")}})(Gt);var ot={ArrayIsArray(e){return Array.isArray(e)},ArrayPrototypeIncludes(e,t){return e.includes(t)},ArrayPrototypeIndexOf(e,t){return e.indexOf(t)},ArrayPrototypeJoin(e,t){return e.join(t)},ArrayPrototypeMap(e,t){return e.map(t)},ArrayPrototypePop(e,t){return e.pop(t)},ArrayPrototypePush(e,t){return e.push(t)},ArrayPrototypeSlice(e,t,r){return e.slice(t,r)},Error,FunctionPrototypeCall(e,t,...r){return e.call(t,...r)},FunctionPrototypeSymbolHasInstance(e,t){return Function.prototype[Symbol.hasInstance].call(e,t)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(e,t){return Object.defineProperties(e,t)},ObjectDefineProperty(e,t,r){return Object.defineProperty(e,t,r)},ObjectGetOwnPropertyDescriptor(e,t){return Object.getOwnPropertyDescriptor(e,t)},ObjectKeys(e){return Object.keys(e)},ObjectSetPrototypeOf(e,t){return Object.setPrototypeOf(e,t)},Promise,PromisePrototypeCatch(e,t){return e.catch(t)},PromisePrototypeThen(e,t,r){return e.then(t,r)},PromiseReject(e){return Promise.reject(e)},PromiseResolve(e){return Promise.resolve(e)},ReflectApply:Reflect.apply,RegExpPrototypeTest(e,t){return e.test(t)},SafeSet:Set,String,StringPrototypeSlice(e,t,r){return e.slice(t,r)},StringPrototypeToLowerCase(e){return e.toLowerCase()},StringPrototypeToUpperCase(e){return e.toUpperCase()},StringPrototypeTrim(e){return e.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol("Symbol.dispose"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol("Symbol.asyncDispose"),TypedArrayPrototypeSet(e,t,r){return e.set(t,r)},Boolean,Uint8Array},fv={exports:{}},rs={exports:{}},jm;function ks(){if(jm)return rs.exports;jm=1;const{AbortController:e,AbortSignal:t}=typeof self<"u"?self:typeof window<"u"?window:void 0;return rs.exports=e,rs.exports.AbortSignal=t,rs.exports.default=e,rs.exports}var ip={exports:{}},go=typeof Reflect=="object"?Reflect:null,Wm=go&&typeof go.apply=="function"?go.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},Wa;go&&typeof go.ownKeys=="function"?Wa=go.ownKeys:Object.getOwnPropertySymbols?Wa=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Wa=function(t){return Object.getOwnPropertyNames(t)};function Pk(e){console&&console.warn&&console.warn(e)}var hv=Number.isNaN||function(t){return t!==t};function Ye(){Ye.init.call(this)}ip.exports=Ye;ip.exports.once=$k;Ye.EventEmitter=Ye;Ye.prototype._events=void 0;Ye.prototype._eventsCount=0;Ye.prototype._maxListeners=void 0;var Hm=10;function su(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Ye,"defaultMaxListeners",{enumerable:!0,get:function(){return Hm},set:function(e){if(typeof e!="number"||e<0||hv(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Hm=e}});Ye.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ye.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||hv(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function dv(e){return e._maxListeners===void 0?Ye.defaultMaxListeners:e._maxListeners}Ye.prototype.getMaxListeners=function(){return dv(this)};Ye.prototype.emit=function(t){for(var r=[],n=1;n<arguments.length;n++)r.push(arguments[n]);var o=t==="error",i=this._events;if(i!==void 0)o=o&&i.error===void 0;else if(!o)return!1;if(o){var s;if(r.length>0&&(s=r[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var l=i[t];if(l===void 0)return!1;if(typeof l=="function")Wm(l,this,r);else for(var u=l.length,c=_v(l,u),n=0;n<u;++n)Wm(c[n],this,r);return!0};function pv(e,t,r,n){var o,i,s;if(su(r),i=e._events,i===void 0?(i=e._events=Object.create(null),e._eventsCount=0):(i.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),s=i[t]),s===void 0)s=i[t]=r,++e._eventsCount;else if(typeof s=="function"?s=i[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),o=dv(e),o>0&&s.length>o&&!s.warned){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=e,a.type=t,a.count=s.length,Pk(a)}return e}Ye.prototype.addListener=function(t,r){return pv(this,t,r,!1)};Ye.prototype.on=Ye.prototype.addListener;Ye.prototype.prependListener=function(t,r){return pv(this,t,r,!0)};function Lk(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function gv(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=Lk.bind(n);return o.listener=r,n.wrapFn=o,o}Ye.prototype.once=function(t,r){return su(r),this.on(t,gv(this,t,r)),this};Ye.prototype.prependOnceListener=function(t,r){return su(r),this.prependListener(t,gv(this,t,r)),this};Ye.prototype.removeListener=function(t,r){var n,o,i,s,a;if(su(r),o=this._events,o===void 0)return this;if(n=o[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete o[t],o.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===r||n[s].listener===r){a=n[s].listener,i=s;break}if(i<0)return this;i===0?n.shift():Bk(n,i),n.length===1&&(o[t]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",t,a||r)}return this};Ye.prototype.off=Ye.prototype.removeListener;Ye.prototype.removeAllListeners=function(t){var r,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var i=Object.keys(n),s;for(o=0;o<i.length;++o)s=i[o],s!=="removeListener"&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=n[t],typeof r=="function")this.removeListener(t,r);else if(r!==void 0)for(o=r.length-1;o>=0;o--)this.removeListener(t,r[o]);return this};function mv(e,t,r){var n=e._events;if(n===void 0)return[];var o=n[t];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?Dk(o):_v(o,o.length)}Ye.prototype.listeners=function(t){return mv(this,t,!0)};Ye.prototype.rawListeners=function(t){return mv(this,t,!1)};Ye.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):yv.call(e,t)};Ye.prototype.listenerCount=yv;function yv(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Ye.prototype.eventNames=function(){return this._eventsCount>0?Wa(this._events):[]};function _v(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function Bk(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}function Dk(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}function $k(e,t){return new Promise(function(r,n){function o(s){e.removeListener(t,i),n(s)}function i(){typeof e.removeListener=="function"&&e.removeListener("error",o),r([].slice.call(arguments))}bv(e,t,i,{once:!0}),t!=="error"&&Uk(e,o,{once:!0})})}function Uk(e,t,r){typeof e.on=="function"&&bv(e,"error",t,r)}function bv(e,t,r,n){if(typeof e.on=="function")n.once?e.once(t,r):e.on(t,r);else if(typeof e.addEventListener=="function")e.addEventListener(t,function o(i){n.once&&e.removeEventListener(t,o),r(i)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e)}var au=ip.exports;(function(e){const t=Gt,{kResistStopPropagation:r,SymbolDispose:n}=ot,o=globalThis.AbortSignal||ks().AbortSignal,i=globalThis.AbortController||ks().AbortController,s=Object.getPrototypeOf(async function(){}).constructor,a=globalThis.Blob||t.Blob,l=typeof a<"u"?function(m){return m instanceof a}:function(m){return!1},u=(p,m)=>{if(p!==void 0&&(p===null||typeof p!="object"||!("aborted"in p)))throw new ERR_INVALID_ARG_TYPE(m,"AbortSignal",p)},c=(p,m)=>{if(typeof p!="function")throw new ERR_INVALID_ARG_TYPE(m,"Function",p)};class d extends Error{constructor(m){if(!Array.isArray(m))throw new TypeError(`Expected input to be an Array, got ${typeof m}`);let _="";for(let b=0;b<m.length;b++)_+=`    ${m[b].stack}
-`;super(_),this.name="AggregateError",this.errors=m}}e.exports={AggregateError:d,kEmptyObject:Object.freeze({}),once(p){let m=!1;return function(..._){m||(m=!0,p.apply(this,_))}},createDeferredPromise:function(){let p,m;return{promise:new Promise((b,T)=>{p=b,m=T}),resolve:p,reject:m}},promisify(p){return new Promise((m,_)=>{p((b,...T)=>b?_(b):m(...T))})},debuglog(){return function(){}},format(p,...m){return p.replace(/%([sdifj])/g,function(...[_,b]){const T=m.shift();return b==="f"?T.toFixed(6):b==="j"?JSON.stringify(T):b==="s"&&typeof T=="object"?`${T.constructor!==Object?T.constructor.name:""} {}`.trim():T.toString()})},inspect(p){switch(typeof p){case"string":if(p.includes("'"))if(p.includes('"')){if(!p.includes("`")&&!p.includes("${"))return`\`${p}\``}else return`"${p}"`;return`'${p}'`;case"number":return isNaN(p)?"NaN":Object.is(p,-0)?String(p):p;case"bigint":return`${String(p)}n`;case"boolean":case"undefined":return String(p);case"object":return"{}"}},types:{isAsyncFunction(p){return p instanceof s},isArrayBufferView(p){return ArrayBuffer.isView(p)}},isBlob:l,deprecate(p,m){return p},addAbortListener:au.addAbortListener||function(m,_){if(m===void 0)throw new ERR_INVALID_ARG_TYPE("signal","AbortSignal",m);u(m,"signal"),c(_,"listener");let b;return m.aborted?queueMicrotask(()=>_()):(m.addEventListener("abort",_,{__proto__:null,once:!0,[r]:!0}),b=()=>{m.removeEventListener("abort",_)}),{__proto__:null,[n](){var T;(T=b)===null||T===void 0||T()}}},AbortSignalAny:o.any||function(m){if(m.length===1)return m[0];const _=new i,b=()=>_.abort();return m.forEach(T=>{u(T,"signals"),T.addEventListener("abort",b,{once:!0})}),_.signal.addEventListener("abort",()=>{m.forEach(T=>T.removeEventListener("abort",b))},{once:!0}),_.signal}},e.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")})(fv);var Nt=fv.exports,op={};const{format:Fk,inspect:gl,AggregateError:jk}=Nt,Wk=globalThis.AggregateError||jk,Hk=Symbol("kIsNodeError"),Vk=["string","function","number","object","Function","Object","boolean","bigint","symbol"],qk=/^([A-Z][a-z0-9]*)+$/,Kk="__node_internal_",lu={};function Ei(e,t){if(!e)throw new lu.ERR_INTERNAL_ASSERTION(t)}function Vm(e){let t="",r=e.length;const n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function Yk(e,t,r){if(typeof t=="function")return Ei(t.length<=r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${t.length}).`),t(...r);const n=(t.match(/%[dfijoOs]/g)||[]).length;return Ei(n===r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${n}).`),r.length===0?t:Fk(t,...r)}function vt(e,t,r){r||(r=Error);class n extends r{constructor(...i){super(Yk(e,t,i))}toString(){return`${this.name} [${e}]: ${this.message}`}}Object.defineProperties(n.prototype,{name:{value:r.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${e}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),n.prototype.code=e,n.prototype[Hk]=!0,lu[e]=n}function qm(e){const t=Kk+e.name;return Object.defineProperty(e,"name",{value:t}),e}function zk(e,t){if(e&&t&&e!==t){if(Array.isArray(t.errors))return t.errors.push(e),t;const r=new Wk([t,e],t.message);return r.code=t.code,r}return e||t}let Gk=class extends Error{constructor(t="The operation was aborted",r=void 0){if(r!==void 0&&typeof r!="object")throw new lu.ERR_INVALID_ARG_TYPE("options","Object",r);super(t,r),this.code="ABORT_ERR",this.name="AbortError"}};vt("ERR_ASSERTION","%s",Error);vt("ERR_INVALID_ARG_TYPE",(e,t,r)=>{Ei(typeof e=="string","'name' must be a string"),Array.isArray(t)||(t=[t]);let n="The ";e.endsWith(" argument")?n+=`${e} `:n+=`"${e}" ${e.includes(".")?"property":"argument"} `,n+="must be ";const o=[],i=[],s=[];for(const l of t)Ei(typeof l=="string","All expected entries have to be of type string"),Vk.includes(l)?o.push(l.toLowerCase()):qk.test(l)?i.push(l):(Ei(l!=="object",'The value "object" should be written as "Object"'),s.push(l));if(i.length>0){const l=o.indexOf("object");l!==-1&&(o.splice(o,l,1),i.push("Object"))}if(o.length>0){switch(o.length){case 1:n+=`of type ${o[0]}`;break;case 2:n+=`one of type ${o[0]} or ${o[1]}`;break;default:{const l=o.pop();n+=`one of type ${o.join(", ")}, or ${l}`}}(i.length>0||s.length>0)&&(n+=" or ")}if(i.length>0){switch(i.length){case 1:n+=`an instance of ${i[0]}`;break;case 2:n+=`an instance of ${i[0]} or ${i[1]}`;break;default:{const l=i.pop();n+=`an instance of ${i.join(", ")}, or ${l}`}}s.length>0&&(n+=" or ")}switch(s.length){case 0:break;case 1:s[0].toLowerCase()!==s[0]&&(n+="an "),n+=`${s[0]}`;break;case 2:n+=`one of ${s[0]} or ${s[1]}`;break;default:{const l=s.pop();n+=`one of ${s.join(", ")}, or ${l}`}}if(r==null)n+=`. Received ${r}`;else if(typeof r=="function"&&r.name)n+=`. Received function ${r.name}`;else if(typeof r=="object"){var a;if((a=r.constructor)!==null&&a!==void 0&&a.name)n+=`. Received an instance of ${r.constructor.name}`;else{const l=gl(r,{depth:-1});n+=`. Received ${l}`}}else{let l=gl(r,{colors:!1});l.length>25&&(l=`${l.slice(0,25)}...`),n+=`. Received type ${typeof r} (${l})`}return n},TypeError);vt("ERR_INVALID_ARG_VALUE",(e,t,r="is invalid")=>{let n=gl(t);return n.length>128&&(n=n.slice(0,128)+"..."),`The ${e.includes(".")?"property":"argument"} '${e}' ${r}. Received ${n}`},TypeError);vt("ERR_INVALID_RETURN_VALUE",(e,t,r)=>{var n;const o=r!=null&&(n=r.constructor)!==null&&n!==void 0&&n.name?`instance of ${r.constructor.name}`:`type ${typeof r}`;return`Expected ${e} to be returned from the "${t}" function but got ${o}.`},TypeError);vt("ERR_MISSING_ARGS",(...e)=>{Ei(e.length>0,"At least one arg needs to be specified");let t;const r=e.length;switch(e=(Array.isArray(e)?e:[e]).map(n=>`"${n}"`).join(" or "),r){case 1:t+=`The ${e[0]} argument`;break;case 2:t+=`The ${e[0]} and ${e[1]} arguments`;break;default:{const n=e.pop();t+=`The ${e.join(", ")}, and ${n} arguments`}break}return`${t} must be specified`},TypeError);vt("ERR_OUT_OF_RANGE",(e,t,r)=>{Ei(t,'Missing "range" argument');let n;return Number.isInteger(r)&&Math.abs(r)>2**32?n=Vm(String(r)):typeof r=="bigint"?(n=String(r),(r>2n**32n||r<-(2n**32n))&&(n=Vm(n)),n+="n"):n=gl(r),`The value of "${e}" is out of range. It must be ${t}. Received ${n}`},RangeError);vt("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error);vt("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error);vt("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error);vt("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error);vt("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error);vt("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);vt("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error);vt("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error);vt("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error);vt("ERR_STREAM_WRITE_AFTER_END","write after end",Error);vt("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError);var jt={AbortError:Gk,aggregateTwoErrors:qm(zk),hideStackFrames:qm,codes:lu};const{ArrayIsArray:sp,ArrayPrototypeIncludes:wv,ArrayPrototypeJoin:vv,ArrayPrototypeMap:Qk,NumberIsInteger:ap,NumberIsNaN:Xk,NumberMAX_SAFE_INTEGER:Jk,NumberMIN_SAFE_INTEGER:Zk,NumberParseInt:eN,ObjectPrototypeHasOwnProperty:tN,RegExpPrototypeExec:Ev,String:rN,StringPrototypeToUpperCase:nN,StringPrototypeTrim:iN}=ot,{hideStackFrames:or,codes:{ERR_SOCKET_BAD_PORT:oN,ERR_INVALID_ARG_TYPE:It,ERR_INVALID_ARG_VALUE:Vo,ERR_OUT_OF_RANGE:Ii,ERR_UNKNOWN_SIGNAL:Km}}=jt,{normalizeEncoding:sN}=Nt,{isAsyncFunction:aN,isArrayBufferView:lN}=Nt.types,Ym={};function uN(e){return e===(e|0)}function cN(e){return e===e>>>0}const fN=/^[0-7]+$/,hN="must be a 32-bit unsigned integer or an octal string";function dN(e,t,r){if(typeof e>"u"&&(e=r),typeof e=="string"){if(Ev(fN,e)===null)throw new Vo(t,e,hN);e=eN(e,8)}return Sv(e,t),e}const pN=or((e,t,r=Zk,n=Jk)=>{if(typeof e!="number")throw new It(t,"number",e);if(!ap(e))throw new Ii(t,"an integer",e);if(e<r||e>n)throw new Ii(t,`>= ${r} && <= ${n}`,e)}),gN=or((e,t,r=-2147483648,n=2147483647)=>{if(typeof e!="number")throw new It(t,"number",e);if(!ap(e))throw new Ii(t,"an integer",e);if(e<r||e>n)throw new Ii(t,`>= ${r} && <= ${n}`,e)}),Sv=or((e,t,r=!1)=>{if(typeof e!="number")throw new It(t,"number",e);if(!ap(e))throw new Ii(t,"an integer",e);const n=r?1:0,o=4294967295;if(e<n||e>o)throw new Ii(t,`>= ${n} && <= ${o}`,e)});function lp(e,t){if(typeof e!="string")throw new It(t,"string",e)}function mN(e,t,r=void 0,n){if(typeof e!="number")throw new It(t,"number",e);if(r!=null&&e<r||n!=null&&e>n||(r!=null||n!=null)&&Xk(e))throw new Ii(t,`${r!=null?`>= ${r}`:""}${r!=null&&n!=null?" && ":""}${n!=null?`<= ${n}`:""}`,e)}const yN=or((e,t,r)=>{if(!wv(r,e)){const o="must be one of: "+vv(Qk(r,i=>typeof i=="string"?`'${i}'`:rN(i)),", ");throw new Vo(t,e,o)}});function Av(e,t){if(typeof e!="boolean")throw new It(t,"boolean",e)}function gc(e,t,r){return e==null||!tN(e,t)?r:e[t]}const _N=or((e,t,r=null)=>{const n=gc(r,"allowArray",!1),o=gc(r,"allowFunction",!1);if(!gc(r,"nullable",!1)&&e===null||!n&&sp(e)||typeof e!="object"&&(!o||typeof e!="function"))throw new It(t,"Object",e)}),bN=or((e,t)=>{if(e!=null&&typeof e!="object"&&typeof e!="function")throw new It(t,"a dictionary",e)}),uu=or((e,t,r=0)=>{if(!sp(e))throw new It(t,"Array",e);if(e.length<r){const n=`must be longer than ${r}`;throw new Vo(t,e,n)}});function wN(e,t){uu(e,t);for(let r=0;r<e.length;r++)lp(e[r],`${t}[${r}]`)}function vN(e,t){uu(e,t);for(let r=0;r<e.length;r++)Av(e[r],`${t}[${r}]`)}function EN(e,t){uu(e,t);for(let r=0;r<e.length;r++){const n=e[r],o=`${t}[${r}]`;if(n==null)throw new It(o,"AbortSignal",n);Tv(n,o)}}function SN(e,t="signal"){if(lp(e,t),Ym[e]===void 0)throw Ym[nN(e)]!==void 0?new Km(e+" (signals must use all capital letters)"):new Km(e)}const AN=or((e,t="buffer")=>{if(!lN(e))throw new It(t,["Buffer","TypedArray","DataView"],e)});function TN(e,t){const r=sN(t),n=e.length;if(r==="hex"&&n%2!==0)throw new Vo("encoding",t,`is invalid for data of length ${n}`)}function xN(e,t="Port",r=!0){if(typeof e!="number"&&typeof e!="string"||typeof e=="string"&&iN(e).length===0||+e!==+e>>>0||e>65535||e===0&&!r)throw new oN(t,e,r);return e|0}const Tv=or((e,t)=>{if(e!==void 0&&(e===null||typeof e!="object"||!("aborted"in e)))throw new It(t,"AbortSignal",e)}),IN=or((e,t)=>{if(typeof e!="function")throw new It(t,"Function",e)}),CN=or((e,t)=>{if(typeof e!="function"||aN(e))throw new It(t,"Function",e)}),RN=or((e,t)=>{if(e!==void 0)throw new It(t,"undefined",e)});function ON(e,t,r){if(!wv(r,e))throw new It(t,`('${vv(r,"|")}')`,e)}const kN=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function zm(e,t){if(typeof e>"u"||!Ev(kN,e))throw new Vo(t,e,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function NN(e){if(typeof e=="string")return zm(e,"hints"),e;if(sp(e)){const t=e.length;let r="";if(t===0)return r;for(let n=0;n<t;n++){const o=e[n];zm(o,"hints"),r+=o,n!==t-1&&(r+=", ")}return r}throw new Vo("hints",e,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}var Hs={isInt32:uN,isUint32:cN,parseFileMode:dN,validateArray:uu,validateStringArray:wN,validateBooleanArray:vN,validateAbortSignalArray:EN,validateBoolean:Av,validateBuffer:AN,validateDictionary:bN,validateEncoding:TN,validateFunction:IN,validateInt32:gN,validateInteger:pN,validateNumber:mN,validateObject:_N,validateOneOf:yN,validatePlainFunction:CN,validatePort:xN,validateSignalName:SN,validateString:lp,validateUint32:Sv,validateUndefined:RN,validateUnion:ON,validateAbortSignal:Tv,validateLinkHeaderValue:NN},up={exports:{}},xv={exports:{}},at=xv.exports={},Ar,Tr;function Oh(){throw new Error("setTimeout has not been defined")}function kh(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?Ar=setTimeout:Ar=Oh}catch{Ar=Oh}try{typeof clearTimeout=="function"?Tr=clearTimeout:Tr=kh}catch{Tr=kh}})();function Iv(e){if(Ar===setTimeout)return setTimeout(e,0);if((Ar===Oh||!Ar)&&setTimeout)return Ar=setTimeout,setTimeout(e,0);try{return Ar(e,0)}catch{try{return Ar.call(null,e,0)}catch{return Ar.call(this,e,0)}}}function MN(e){if(Tr===clearTimeout)return clearTimeout(e);if((Tr===kh||!Tr)&&clearTimeout)return Tr=clearTimeout,clearTimeout(e);try{return Tr(e)}catch{try{return Tr.call(null,e)}catch{return Tr.call(this,e)}}}var Gr=[],mo=!1,di,Ha=-1;function PN(){!mo||!di||(mo=!1,di.length?Gr=di.concat(Gr):Ha=-1,Gr.length&&Cv())}function Cv(){if(!mo){var e=Iv(PN);mo=!0;for(var t=Gr.length;t;){for(di=Gr,Gr=[];++Ha<t;)di&&di[Ha].run();Ha=-1,t=Gr.length}di=null,mo=!1,MN(e)}}at.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Gr.push(new Rv(e,t)),Gr.length===1&&!mo&&Iv(Cv)};function Rv(e,t){this.fun=e,this.array=t}Rv.prototype.run=function(){this.fun.apply(null,this.array)};at.title="browser";at.browser=!0;at.env={};at.argv=[];at.version="";at.versions={};function yn(){}at.on=yn;at.addListener=yn;at.once=yn;at.off=yn;at.removeListener=yn;at.removeAllListeners=yn;at.emit=yn;at.prependListener=yn;at.prependOnceListener=yn;at.listeners=function(e){return[]};at.binding=function(e){throw new Error("process.binding is not supported")};at.cwd=function(){return"/"};at.chdir=function(e){throw new Error("process.chdir is not supported")};at.umask=function(){return 0};var Ui=xv.exports;const{SymbolAsyncIterator:Gm,SymbolIterator:Qm,SymbolFor:Fi}=ot,Ov=Fi("nodejs.stream.destroyed"),kv=Fi("nodejs.stream.errored"),Nh=Fi("nodejs.stream.readable"),Mh=Fi("nodejs.stream.writable"),Nv=Fi("nodejs.stream.disturbed"),LN=Fi("nodejs.webstream.isClosedPromise"),BN=Fi("nodejs.webstream.controllerErrorFunction");function cu(e,t=!1){var r;return!!(e&&typeof e.pipe=="function"&&typeof e.on=="function"&&(!t||typeof e.pause=="function"&&typeof e.resume=="function")&&(!e._writableState||((r=e._readableState)===null||r===void 0?void 0:r.readable)!==!1)&&(!e._writableState||e._readableState))}function fu(e){var t;return!!(e&&typeof e.write=="function"&&typeof e.on=="function"&&(!e._readableState||((t=e._writableState)===null||t===void 0?void 0:t.writable)!==!1))}function DN(e){return!!(e&&typeof e.pipe=="function"&&e._readableState&&typeof e.on=="function"&&typeof e.write=="function")}function Dr(e){return e&&(e._readableState||e._writableState||typeof e.write=="function"&&typeof e.on=="function"||typeof e.pipe=="function"&&typeof e.on=="function")}function Mv(e){return!!(e&&!Dr(e)&&typeof e.pipeThrough=="function"&&typeof e.getReader=="function"&&typeof e.cancel=="function")}function Pv(e){return!!(e&&!Dr(e)&&typeof e.getWriter=="function"&&typeof e.abort=="function")}function Lv(e){return!!(e&&!Dr(e)&&typeof e.readable=="object"&&typeof e.writable=="object")}function $N(e){return Mv(e)||Pv(e)||Lv(e)}function UN(e,t){return e==null?!1:t===!0?typeof e[Gm]=="function":t===!1?typeof e[Qm]=="function":typeof e[Gm]=="function"||typeof e[Qm]=="function"}function hu(e){if(!Dr(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!!(e.destroyed||e[Ov]||n!=null&&n.destroyed)}function Bv(e){if(!fu(e))return null;if(e.writableEnded===!0)return!0;const t=e._writableState;return t!=null&&t.errored?!1:typeof(t==null?void 0:t.ended)!="boolean"?null:t.ended}function FN(e,t){if(!fu(e))return null;if(e.writableFinished===!0)return!0;const r=e._writableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.finished)!="boolean"?null:!!(r.finished||t===!1&&r.ended===!0&&r.length===0)}function jN(e){if(!cu(e))return null;if(e.readableEnded===!0)return!0;const t=e._readableState;return!t||t.errored?!1:typeof(t==null?void 0:t.ended)!="boolean"?null:t.ended}function Dv(e,t){if(!cu(e))return null;const r=e._readableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.endEmitted)!="boolean"?null:!!(r.endEmitted||t===!1&&r.ended===!0&&r.length===0)}function $v(e){return e&&e[Nh]!=null?e[Nh]:typeof(e==null?void 0:e.readable)!="boolean"?null:hu(e)?!1:cu(e)&&e.readable&&!Dv(e)}function Uv(e){return e&&e[Mh]!=null?e[Mh]:typeof(e==null?void 0:e.writable)!="boolean"?null:hu(e)?!1:fu(e)&&e.writable&&!Bv(e)}function WN(e,t){return Dr(e)?hu(e)?!0:!((t==null?void 0:t.readable)!==!1&&$v(e)||(t==null?void 0:t.writable)!==!1&&Uv(e)):null}function HN(e){var t,r;return Dr(e)?e.writableErrored?e.writableErrored:(t=(r=e._writableState)===null||r===void 0?void 0:r.errored)!==null&&t!==void 0?t:null:null}function VN(e){var t,r;return Dr(e)?e.readableErrored?e.readableErrored:(t=(r=e._readableState)===null||r===void 0?void 0:r.errored)!==null&&t!==void 0?t:null:null}function qN(e){if(!Dr(e))return null;if(typeof e.closed=="boolean")return e.closed;const t=e._writableState,r=e._readableState;return typeof(t==null?void 0:t.closed)=="boolean"||typeof(r==null?void 0:r.closed)=="boolean"?(t==null?void 0:t.closed)||(r==null?void 0:r.closed):typeof e._closed=="boolean"&&Fv(e)?e._closed:null}function Fv(e){return typeof e._closed=="boolean"&&typeof e._defaultKeepAlive=="boolean"&&typeof e._removedConnection=="boolean"&&typeof e._removedContLen=="boolean"}function jv(e){return typeof e._sent100=="boolean"&&Fv(e)}function KN(e){var t;return typeof e._consuming=="boolean"&&typeof e._dumped=="boolean"&&((t=e.req)===null||t===void 0?void 0:t.upgradeOrConnect)===void 0}function YN(e){if(!Dr(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!n&&jv(e)||!!(n&&n.autoDestroy&&n.emitClose&&n.closed===!1)}function zN(e){var t;return!!(e&&((t=e[Nv])!==null&&t!==void 0?t:e.readableDidRead||e.readableAborted))}function GN(e){var t,r,n,o,i,s,a,l,u,c;return!!(e&&((t=(r=(n=(o=(i=(s=e[kv])!==null&&s!==void 0?s:e.readableErrored)!==null&&i!==void 0?i:e.writableErrored)!==null&&o!==void 0?o:(a=e._readableState)===null||a===void 0?void 0:a.errorEmitted)!==null&&n!==void 0?n:(l=e._writableState)===null||l===void 0?void 0:l.errorEmitted)!==null&&r!==void 0?r:(u=e._readableState)===null||u===void 0?void 0:u.errored)!==null&&t!==void 0?t:!((c=e._writableState)===null||c===void 0)&&c.errored))}var _n={isDestroyed:hu,kIsDestroyed:Ov,isDisturbed:zN,kIsDisturbed:Nv,isErrored:GN,kIsErrored:kv,isReadable:$v,kIsReadable:Nh,kIsClosedPromise:LN,kControllerErrorFunction:BN,kIsWritable:Mh,isClosed:qN,isDuplexNodeStream:DN,isFinished:WN,isIterable:UN,isReadableNodeStream:cu,isReadableStream:Mv,isReadableEnded:jN,isReadableFinished:Dv,isReadableErrored:VN,isNodeStream:Dr,isWebStream:$N,isWritable:Uv,isWritableNodeStream:fu,isWritableStream:Pv,isWritableEnded:Bv,isWritableFinished:FN,isWritableErrored:HN,isServerRequest:KN,isServerResponse:jv,willEmitClose:YN,isTransformStream:Lv};const On=Ui,{AbortError:Wv,codes:QN}=jt,{ERR_INVALID_ARG_TYPE:XN,ERR_STREAM_PREMATURE_CLOSE:Xm}=QN,{kEmptyObject:Ph,once:Lh}=Nt,{validateAbortSignal:JN,validateFunction:ZN,validateObject:eM,validateBoolean:tM}=Hs,{Promise:rM,PromisePrototypeThen:nM,SymbolDispose:Hv}=ot,{isClosed:iM,isReadable:Jm,isReadableNodeStream:mc,isReadableStream:oM,isReadableFinished:Zm,isReadableErrored:e0,isWritable:t0,isWritableNodeStream:r0,isWritableStream:sM,isWritableFinished:n0,isWritableErrored:i0,isNodeStream:aM,willEmitClose:lM,kIsClosedPromise:uM}=_n;let yo;function cM(e){return e.setHeader&&typeof e.abort=="function"}const Bh=()=>{};function Vv(e,t,r){var n,o;if(arguments.length===2?(r=t,t=Ph):t==null?t=Ph:eM(t,"options"),ZN(r,"callback"),JN(t.signal,"options.signal"),r=Lh(r),oM(e)||sM(e))return fM(e,t,r);if(!aM(e))throw new XN("stream",["ReadableStream","WritableStream","Stream"],e);const i=(n=t.readable)!==null&&n!==void 0?n:mc(e),s=(o=t.writable)!==null&&o!==void 0?o:r0(e),a=e._writableState,l=e._readableState,u=()=>{e.writable||p()};let c=lM(e)&&mc(e)===i&&r0(e)===s,d=n0(e,!1);const p=()=>{d=!0,e.destroyed&&(c=!1),!(c&&(!e.readable||i))&&(!i||m)&&r.call(e)};let m=Zm(e,!1);const _=()=>{m=!0,e.destroyed&&(c=!1),!(c&&(!e.writable||s))&&(!s||d)&&r.call(e)},b=U=>{r.call(e,U)};let T=iM(e);const N=()=>{T=!0;const U=i0(e)||e0(e);if(U&&typeof U!="boolean")return r.call(e,U);if(i&&!m&&mc(e,!0)&&!Zm(e,!1))return r.call(e,new Xm);if(s&&!d&&!n0(e,!1))return r.call(e,new Xm);r.call(e)},R=()=>{T=!0;const U=i0(e)||e0(e);if(U&&typeof U!="boolean")return r.call(e,U);r.call(e)},S=()=>{e.req.on("finish",p)};cM(e)?(e.on("complete",p),c||e.on("abort",N),e.req?S():e.on("request",S)):s&&!a&&(e.on("end",u),e.on("close",u)),!c&&typeof e.aborted=="boolean"&&e.on("aborted",N),e.on("end",_),e.on("finish",p),t.error!==!1&&e.on("error",b),e.on("close",N),T?On.nextTick(N):a!=null&&a.errorEmitted||l!=null&&l.errorEmitted?c||On.nextTick(R):(!i&&(!c||Jm(e))&&(d||t0(e)===!1)||!s&&(!c||t0(e))&&(m||Jm(e)===!1)||l&&e.req&&e.aborted)&&On.nextTick(R);const D=()=>{r=Bh,e.removeListener("aborted",N),e.removeListener("complete",p),e.removeListener("abort",N),e.removeListener("request",S),e.req&&e.req.removeListener("finish",p),e.removeListener("end",u),e.removeListener("close",u),e.removeListener("finish",p),e.removeListener("end",_),e.removeListener("error",b),e.removeListener("close",N)};if(t.signal&&!T){const U=()=>{const x=r;D(),x.call(e,new Wv(void 0,{cause:t.signal.reason}))};if(t.signal.aborted)On.nextTick(U);else{yo=yo||Nt.addAbortListener;const x=yo(t.signal,U),L=r;r=Lh((...j)=>{x[Hv](),L.apply(e,j)})}}return D}function fM(e,t,r){let n=!1,o=Bh;if(t.signal)if(o=()=>{n=!0,r.call(e,new Wv(void 0,{cause:t.signal.reason}))},t.signal.aborted)On.nextTick(o);else{yo=yo||Nt.addAbortListener;const s=yo(t.signal,o),a=r;r=Lh((...l)=>{s[Hv](),a.apply(e,l)})}const i=(...s)=>{n||On.nextTick(()=>r.apply(e,s))};return nM(e[uM].promise,i,i),Bh}function hM(e,t){var r;let n=!1;return t===null&&(t=Ph),(r=t)!==null&&r!==void 0&&r.cleanup&&(tM(t.cleanup,"cleanup"),n=t.cleanup),new rM((o,i)=>{const s=Vv(e,t,a=>{n&&s(),a?i(a):o()})})}up.exports=Vv;up.exports.finished=hM;var Hn=up.exports;const Mr=Ui,{aggregateTwoErrors:dM,codes:{ERR_MULTIPLE_CALLBACK:pM},AbortError:gM}=jt,{Symbol:qv}=ot,{kIsDestroyed:mM,isDestroyed:yM,isFinished:_M,isServerRequest:bM}=_n,Kv=qv("kDestroy"),Dh=qv("kConstruct");function Yv(e,t,r){e&&(e.stack,t&&!t.errored&&(t.errored=e),r&&!r.errored&&(r.errored=e))}function wM(e,t){const r=this._readableState,n=this._writableState,o=n||r;return n!=null&&n.destroyed||r!=null&&r.destroyed?(typeof t=="function"&&t(),this):(Yv(e,n,r),n&&(n.destroyed=!0),r&&(r.destroyed=!0),o.constructed?o0(this,e,t):this.once(Kv,function(i){o0(this,dM(i,e),t)}),this)}function o0(e,t,r){let n=!1;function o(i){if(n)return;n=!0;const s=e._readableState,a=e._writableState;Yv(i,a,s),a&&(a.closed=!0),s&&(s.closed=!0),typeof r=="function"&&r(i),i?Mr.nextTick(vM,e,i):Mr.nextTick(zv,e)}try{e._destroy(t||null,o)}catch(i){o(i)}}function vM(e,t){$h(e,t),zv(e)}function zv(e){const t=e._readableState,r=e._writableState;r&&(r.closeEmitted=!0),t&&(t.closeEmitted=!0),(r!=null&&r.emitClose||t!=null&&t.emitClose)&&e.emit("close")}function $h(e,t){const r=e._readableState,n=e._writableState;n!=null&&n.errorEmitted||r!=null&&r.errorEmitted||(n&&(n.errorEmitted=!0),r&&(r.errorEmitted=!0),e.emit("error",t))}function EM(){const e=this._readableState,t=this._writableState;e&&(e.constructed=!0,e.closed=!1,e.closeEmitted=!1,e.destroyed=!1,e.errored=null,e.errorEmitted=!1,e.reading=!1,e.ended=e.readable===!1,e.endEmitted=e.readable===!1),t&&(t.constructed=!0,t.destroyed=!1,t.closed=!1,t.closeEmitted=!1,t.errored=null,t.errorEmitted=!1,t.finalCalled=!1,t.prefinished=!1,t.ended=t.writable===!1,t.ending=t.writable===!1,t.finished=t.writable===!1)}function Uh(e,t,r){const n=e._readableState,o=e._writableState;if(o!=null&&o.destroyed||n!=null&&n.destroyed)return this;n!=null&&n.autoDestroy||o!=null&&o.autoDestroy?e.destroy(t):t&&(t.stack,o&&!o.errored&&(o.errored=t),n&&!n.errored&&(n.errored=t),r?Mr.nextTick($h,e,t):$h(e,t))}function SM(e,t){if(typeof e._construct!="function")return;const r=e._readableState,n=e._writableState;r&&(r.constructed=!1),n&&(n.constructed=!1),e.once(Dh,t),!(e.listenerCount(Dh)>1)&&Mr.nextTick(AM,e)}function AM(e){let t=!1;function r(n){if(t){Uh(e,n??new pM);return}t=!0;const o=e._readableState,i=e._writableState,s=i||o;o&&(o.constructed=!0),i&&(i.constructed=!0),s.destroyed?e.emit(Kv,n):n?Uh(e,n,!0):Mr.nextTick(TM,e)}try{e._construct(n=>{Mr.nextTick(r,n)})}catch(n){Mr.nextTick(r,n)}}function TM(e){e.emit(Dh)}function s0(e){return(e==null?void 0:e.setHeader)&&typeof e.abort=="function"}function Gv(e){e.emit("close")}function xM(e,t){e.emit("error",t),Mr.nextTick(Gv,e)}function IM(e,t){!e||yM(e)||(!t&&!_M(e)&&(t=new gM),bM(e)?(e.socket=null,e.destroy(t)):s0(e)?e.abort():s0(e.req)?e.req.abort():typeof e.destroy=="function"?e.destroy(t):typeof e.close=="function"?e.close():t?Mr.nextTick(xM,e,t):Mr.nextTick(Gv,e),e.destroyed||(e[mM]=!0))}var qo={construct:SM,destroyer:IM,destroy:wM,undestroy:EM,errorOrDestroy:Uh};const{ArrayIsArray:CM,ObjectSetPrototypeOf:Qv}=ot,{EventEmitter:du}=au;function pu(e){du.call(this,e)}Qv(pu.prototype,du.prototype);Qv(pu,du);pu.prototype.pipe=function(e,t){const r=this;function n(c){e.writable&&e.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function o(){r.readable&&r.resume&&r.resume()}e.on("drain",o),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",s),r.on("close",a));let i=!1;function s(){i||(i=!0,e.end())}function a(){i||(i=!0,typeof e.destroy=="function"&&e.destroy())}function l(c){u(),du.listenerCount(this,"error")===0&&this.emit("error",c)}Fh(r,"error",l),Fh(e,"error",l);function u(){r.removeListener("data",n),e.removeListener("drain",o),r.removeListener("end",s),r.removeListener("close",a),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),e.removeListener("close",u)}return r.on("end",u),r.on("close",u),e.on("close",u),e.emit("pipe",r),e};function Fh(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):CM(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}var cp={Stream:pu,prependListener:Fh},Xv={exports:{}};(function(e){const{SymbolDispose:t}=ot,{AbortError:r,codes:n}=jt,{isNodeStream:o,isWebStream:i,kControllerErrorFunction:s}=_n,a=Hn,{ERR_INVALID_ARG_TYPE:l}=n;let u;const c=(d,p)=>{if(typeof d!="object"||!("aborted"in d))throw new l(p,"AbortSignal",d)};e.exports.addAbortSignal=function(p,m){if(c(p,"signal"),!o(m)&&!i(m))throw new l("stream",["ReadableStream","WritableStream","Stream"],m);return e.exports.addAbortSignalNoValidate(p,m)},e.exports.addAbortSignalNoValidate=function(d,p){if(typeof d!="object"||!("aborted"in d))return p;const m=o(p)?()=>{p.destroy(new r(void 0,{cause:d.reason}))}:()=>{p[s](new r(void 0,{cause:d.reason}))};if(d.aborted)m();else{u=u||Nt.addAbortListener;const _=u(d,m);a(p,_[t])}return p}})(Xv);var gu=Xv.exports;const{StringPrototypeSlice:a0,SymbolIterator:RM,TypedArrayPrototypeSet:ma,Uint8Array:OM}=ot,{Buffer:yc}=Gt,{inspect:kM}=Nt;var NM=class{constructor(){this.head=null,this.tail=null,this.length=0}push(t){const r={data:t,next:null};this.length>0?this.tail.next=r:this.head=r,this.tail=r,++this.length}unshift(t){const r={data:t,next:this.head};this.length===0&&(this.tail=r),this.head=r,++this.length}shift(){if(this.length===0)return;const t=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,t}clear(){this.head=this.tail=null,this.length=0}join(t){if(this.length===0)return"";let r=this.head,n=""+r.data;for(;(r=r.next)!==null;)n+=t+r.data;return n}concat(t){if(this.length===0)return yc.alloc(0);const r=yc.allocUnsafe(t>>>0);let n=this.head,o=0;for(;n;)ma(r,n.data,o),o+=n.data.length,n=n.next;return r}consume(t,r){const n=this.head.data;if(t<n.length){const o=n.slice(0,t);return this.head.data=n.slice(t),o}return t===n.length?this.shift():r?this._getString(t):this._getBuffer(t)}first(){return this.head.data}*[RM](){for(let t=this.head;t;t=t.next)yield t.data}_getString(t){let r="",n=this.head,o=0;do{const i=n.data;if(t>i.length)r+=i,t-=i.length;else{t===i.length?(r+=i,++o,n.next?this.head=n.next:this.head=this.tail=null):(r+=a0(i,0,t),this.head=n,n.data=a0(i,t));break}++o}while((n=n.next)!==null);return this.length-=o,r}_getBuffer(t){const r=yc.allocUnsafe(t),n=t;let o=this.head,i=0;do{const s=o.data;if(t>s.length)ma(r,s,n-t),t-=s.length;else{t===s.length?(ma(r,s,n-t),++i,o.next?this.head=o.next:this.head=this.tail=null):(ma(r,new OM(s.buffer,s.byteOffset,t),n-t),this.head=o,o.data=s.slice(t));break}++i}while((o=o.next)!==null);return this.length-=i,r}[Symbol.for("nodejs.util.inspect.custom")](t,r){return kM(this,{...r,depth:0,customInspect:!1})}};const{MathFloor:MM,NumberIsInteger:PM}=ot,{validateInteger:LM}=Hs,{ERR_INVALID_ARG_VALUE:BM}=jt.codes;let Jv=16*1024,Zv=16;function DM(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function e1(e){return e?Zv:Jv}function $M(e,t){LM(t,"value",0),e?Zv=t:Jv=t}function UM(e,t,r,n){const o=DM(t,n,r);if(o!=null){if(!PM(o)||o<0){const i=n?`options.${r}`:"options.highWaterMark";throw new BM(i,o)}return MM(o)}return e1(e.objectMode)}var mu={getHighWaterMark:UM,getDefaultHighWaterMark:e1,setDefaultHighWaterMark:$M},t1={},jh={exports:{}};/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */(function(e,t){var r=Gt,n=r.Buffer;function o(s,a){for(var l in s)a[l]=s[l]}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(o(r,t),t.Buffer=i);function i(s,a,l){return n(s,a,l)}i.prototype=Object.create(n.prototype),o(n,i),i.from=function(s,a,l){if(typeof s=="number")throw new TypeError("Argument must not be a number");return n(s,a,l)},i.alloc=function(s,a,l){if(typeof s!="number")throw new TypeError("Argument must be a number");var u=n(s);return a!==void 0?typeof l=="string"?u.fill(a,l):u.fill(a):u.fill(0),u},i.allocUnsafe=function(s){if(typeof s!="number")throw new TypeError("Argument must be a number");return n(s)},i.allocUnsafeSlow=function(s){if(typeof s!="number")throw new TypeError("Argument must be a number");return r.SlowBuffer(s)}})(jh,jh.exports);var FM=jh.exports,fp=FM.Buffer,l0=fp.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function jM(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function WM(e){var t=jM(e);if(typeof t!="string"&&(fp.isEncoding===l0||!l0(e)))throw new Error("Unknown encoding: "+e);return t||e}t1.StringDecoder=Vs;function Vs(e){this.encoding=WM(e);var t;switch(this.encoding){case"utf16le":this.text=zM,this.end=GM,t=4;break;case"utf8":this.fillLast=qM,t=4;break;case"base64":this.text=QM,this.end=XM,t=3;break;default:this.write=JM,this.end=ZM;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=fp.allocUnsafe(t)}Vs.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""};Vs.prototype.end=YM;Vs.prototype.text=KM;Vs.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length};function _c(e){return e<=127?0:e>>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function HM(e,t,r){var n=t.length-1;if(n<r)return 0;var o=_c(t[n]);return o>=0?(o>0&&(e.lastNeed=o-1),o):--n<r||o===-2?0:(o=_c(t[n]),o>=0?(o>0&&(e.lastNeed=o-2),o):--n<r||o===-2?0:(o=_c(t[n]),o>=0?(o>0&&(o===2?o=0:e.lastNeed=o-3),o):0))}function VM(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"�"}}function qM(e){var t=this.lastTotal-this.lastNeed,r=VM(this,e);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function KM(e,t){var r=HM(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)}function YM(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t}function zM(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function GM(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function QM(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function XM(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function JM(e){return e.toString(this.encoding)}function ZM(e){return e&&e.length?this.write(e):""}const u0=Ui,{PromisePrototypeThen:e2,SymbolAsyncIterator:c0,SymbolIterator:f0}=ot,{Buffer:t2}=Gt,{ERR_INVALID_ARG_TYPE:r2,ERR_STREAM_NULL_VALUES:n2}=jt.codes;function i2(e,t,r){let n;if(typeof t=="string"||t instanceof t2)return new e({objectMode:!0,...r,read(){this.push(t),this.push(null)}});let o;if(t&&t[c0])o=!0,n=t[c0]();else if(t&&t[f0])o=!1,n=t[f0]();else throw new r2("iterable",["Iterable"],t);const i=new e({objectMode:!0,highWaterMark:1,...r});let s=!1;i._read=function(){s||(s=!0,l())},i._destroy=function(u,c){e2(a(u),()=>u0.nextTick(c,u),d=>u0.nextTick(c,d||u))};async function a(u){const c=u!=null,d=typeof n.throw=="function";if(c&&d){const{value:p,done:m}=await n.throw(u);if(await p,m)return}if(typeof n.return=="function"){const{value:p}=await n.return();await p}}async function l(){for(;;){try{const{value:u,done:c}=o?await n.next():n.next();if(c)i.push(null);else{const d=u&&typeof u.then=="function"?await u:u;if(d===null)throw s=!1,new n2;if(i.push(d))continue;s=!1}}catch(u){i.destroy(u)}break}}return i}var r1=i2,bc,h0;function yu(){if(h0)return bc;h0=1;const e=Ui,{ArrayPrototypeIndexOf:t,NumberIsInteger:r,NumberIsNaN:n,NumberParseInt:o,ObjectDefineProperties:i,ObjectKeys:s,ObjectSetPrototypeOf:a,Promise:l,SafeSet:u,SymbolAsyncDispose:c,SymbolAsyncIterator:d,Symbol:p}=ot;bc=I,I.ReadableState=K;const{EventEmitter:m}=au,{Stream:_,prependListener:b}=cp,{Buffer:T}=Gt,{addAbortSignal:N}=gu,R=Hn;let S=Nt.debuglog("stream",H=>{S=H});const D=NM,U=qo,{getHighWaterMark:x,getDefaultHighWaterMark:L}=mu,{aggregateTwoErrors:j,codes:{ERR_INVALID_ARG_TYPE:Y,ERR_METHOD_NOT_IMPLEMENTED:se,ERR_OUT_OF_RANGE:re,ERR_STREAM_PUSH_AFTER_EOF:P,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:B},AbortError:oe}=jt,{validateObject:ne}=Hs,ue=p("kPaused"),{StringDecoder:ae}=t1,z=r1;a(I.prototype,_.prototype),a(I,_);const pe=()=>{},{errorOrDestroy:de}=U,ge=1,O=2,ie=4,me=8,ve=16,ye=32,q=64,F=128,X=256,he=512,ce=1024,Z=2048,v=4096,A=8192,E=16384,k=32768,M=65536,ee=1<<17,te=1<<18;function $(H){return{enumerable:!1,get(){return(this.state&H)!==0},set(G){G?this.state|=H:this.state&=~H}}}i(K.prototype,{objectMode:$(ge),ended:$(O),endEmitted:$(ie),reading:$(me),constructed:$(ve),sync:$(ye),needReadable:$(q),emittedReadable:$(F),readableListening:$(X),resumeScheduled:$(he),errorEmitted:$(ce),emitClose:$(Z),autoDestroy:$(v),destroyed:$(A),closed:$(E),closeEmitted:$(k),multiAwaitDrain:$(M),readingMore:$(ee),dataEmitted:$(te)});function K(H,G,Ie){typeof Ie!="boolean"&&(Ie=G instanceof an()),this.state=Z|v|ve|ye,H&&H.objectMode&&(this.state|=ge),Ie&&H&&H.readableObjectMode&&(this.state|=ge),this.highWaterMark=H?x(this,H,"readableHighWaterMark",Ie):L(!1),this.buffer=new D,this.length=0,this.pipes=[],this.flowing=null,this[ue]=null,H&&H.emitClose===!1&&(this.state&=~Z),H&&H.autoDestroy===!1&&(this.state&=~v),this.errored=null,this.defaultEncoding=H&&H.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,H&&H.encoding&&(this.decoder=new ae(H.encoding),this.encoding=H.encoding)}function I(H){if(!(this instanceof I))return new I(H);const G=this instanceof an();this._readableState=new K(H,this,G),H&&(typeof H.read=="function"&&(this._read=H.read),typeof H.destroy=="function"&&(this._destroy=H.destroy),typeof H.construct=="function"&&(this._construct=H.construct),H.signal&&!G&&N(H.signal,this)),_.call(this,H),U.construct(this,()=>{this._readableState.needReadable&&C(this,this._readableState)})}I.prototype.destroy=U.destroy,I.prototype._undestroy=U.undestroy,I.prototype._destroy=function(H,G){G(H)},I.prototype[m.captureRejectionSymbol]=function(H){this.destroy(H)},I.prototype[c]=function(){let H;return this.destroyed||(H=this.readableEnded?null:new oe,this.destroy(H)),new l((G,Ie)=>R(this,Ce=>Ce&&Ce!==H?Ie(Ce):G(null)))},I.prototype.push=function(H,G){return W(this,H,G,!1)},I.prototype.unshift=function(H,G){return W(this,H,G,!0)};function W(H,G,Ie,Ce){S("readableAddChunk",G);const Ne=H._readableState;let Et;if(Ne.state&ge||(typeof G=="string"?(Ie=Ie||Ne.defaultEncoding,Ne.encoding!==Ie&&(Ce&&Ne.encoding?G=T.from(G,Ie).toString(Ne.encoding):(G=T.from(G,Ie),Ie=""))):G instanceof T?Ie="":_._isUint8Array(G)?(G=_._uint8ArrayToBuffer(G),Ie=""):G!=null&&(Et=new Y("chunk",["string","Buffer","Uint8Array"],G))),Et)de(H,Et);else if(G===null)Ne.state&=~me,f(H,Ne);else if(Ne.state&ge||G&&G.length>0)if(Ce)if(Ne.state&ie)de(H,new B);else{if(Ne.destroyed||Ne.errored)return!1;J(H,Ne,G,!0)}else if(Ne.ended)de(H,new P);else{if(Ne.destroyed||Ne.errored)return!1;Ne.state&=~me,Ne.decoder&&!Ie?(G=Ne.decoder.write(G),Ne.objectMode||G.length!==0?J(H,Ne,G,!1):C(H,Ne)):J(H,Ne,G,!1)}else Ce||(Ne.state&=~me,C(H,Ne));return!Ne.ended&&(Ne.length<Ne.highWaterMark||Ne.length===0)}function J(H,G,Ie,Ce){G.flowing&&G.length===0&&!G.sync&&H.listenerCount("data")>0?(G.state&M?G.awaitDrainWriters.clear():G.awaitDrainWriters=null,G.dataEmitted=!0,H.emit("data",Ie)):(G.length+=G.objectMode?1:Ie.length,Ce?G.buffer.unshift(Ie):G.buffer.push(Ie),G.state&q&&g(H)),C(H,G)}I.prototype.isPaused=function(){const H=this._readableState;return H[ue]===!0||H.flowing===!1},I.prototype.setEncoding=function(H){const G=new ae(H);this._readableState.decoder=G,this._readableState.encoding=this._readableState.decoder.encoding;const Ie=this._readableState.buffer;let Ce="";for(const Ne of Ie)Ce+=G.write(Ne);return Ie.clear(),Ce!==""&&Ie.push(Ce),this._readableState.length=Ce.length,this};const le=1073741824;function y(H){if(H>le)throw new re("size","<= 1GiB",H);return H--,H|=H>>>1,H|=H>>>2,H|=H>>>4,H|=H>>>8,H|=H>>>16,H++,H}function h(H,G){return H<=0||G.length===0&&G.ended?0:G.state&ge?1:n(H)?G.flowing&&G.length?G.buffer.first().length:G.length:H<=G.length?H:G.ended?G.length:0}I.prototype.read=function(H){S("read",H),H===void 0?H=NaN:r(H)||(H=o(H,10));const G=this._readableState,Ie=H;if(H>G.highWaterMark&&(G.highWaterMark=y(H)),H!==0&&(G.state&=~F),H===0&&G.needReadable&&((G.highWaterMark!==0?G.length>=G.highWaterMark:G.length>0)||G.ended))return S("read: emitReadable",G.length,G.ended),G.length===0&&G.ended?st(this):g(this),null;if(H=h(H,G),H===0&&G.ended)return G.length===0&&st(this),null;let Ce=(G.state&q)!==0;if(S("need readable",Ce),(G.length===0||G.length-H<G.highWaterMark)&&(Ce=!0,S("length less than watermark",Ce)),G.ended||G.reading||G.destroyed||G.errored||!G.constructed)Ce=!1,S("reading, ended or constructing",Ce);else if(Ce){S("do read"),G.state|=me|ye,G.length===0&&(G.state|=q);try{this._read(G.highWaterMark)}catch(Et){de(this,Et)}G.state&=~ye,G.reading||(H=h(Ie,G))}let Ne;return H>0?Ne=Je(H,G):Ne=null,Ne===null?(G.needReadable=G.length<=G.highWaterMark,H=0):(G.length-=H,G.multiAwaitDrain?G.awaitDrainWriters.clear():G.awaitDrainWriters=null),G.length===0&&(G.ended||(G.needReadable=!0),Ie!==H&&G.ended&&st(this)),Ne!==null&&!G.errorEmitted&&!G.closeEmitted&&(G.dataEmitted=!0,this.emit("data",Ne)),Ne};function f(H,G){if(S("onEofChunk"),!G.ended){if(G.decoder){const Ie=G.decoder.end();Ie&&Ie.length&&(G.buffer.push(Ie),G.length+=G.objectMode?1:Ie.length)}G.ended=!0,G.sync?g(H):(G.needReadable=!1,G.emittedReadable=!0,w(H))}}function g(H){const G=H._readableState;S("emitReadable",G.needReadable,G.emittedReadable),G.needReadable=!1,G.emittedReadable||(S("emitReadable",G.flowing),G.emittedReadable=!0,e.nextTick(w,H))}function w(H){const G=H._readableState;S("emitReadable_",G.destroyed,G.length,G.ended),!G.destroyed&&!G.errored&&(G.length||G.ended)&&(H.emit("readable"),G.emittedReadable=!1),G.needReadable=!G.flowing&&!G.ended&&G.length<=G.highWaterMark,Re(H)}function C(H,G){!G.readingMore&&G.constructed&&(G.readingMore=!0,e.nextTick(V,H,G))}function V(H,G){for(;!G.reading&&!G.ended&&(G.length<G.highWaterMark||G.flowing&&G.length===0);){const Ie=G.length;if(S("maybeReadMore read 0"),H.read(0),Ie===G.length)break}G.readingMore=!1}I.prototype._read=function(H){throw new se("_read()")},I.prototype.pipe=function(H,G){const Ie=this,Ce=this._readableState;Ce.pipes.length===1&&(Ce.multiAwaitDrain||(Ce.multiAwaitDrain=!0,Ce.awaitDrainWriters=new u(Ce.awaitDrainWriters?[Ce.awaitDrainWriters]:[]))),Ce.pipes.push(H),S("pipe count=%d opts=%j",Ce.pipes.length,G);const Et=(!G||G.end!==!1)&&H!==e.stdout&&H!==e.stderr?Pp:Yo;Ce.endEmitted?e.nextTick(Et):Ie.once("end",Et),H.on("unpipe",Qt);function Qt(qn,Ur){S("onunpipe"),qn===Ie&&Ur&&Ur.hasUnpiped===!1&&(Ur.hasUnpiped=!0,hE())}function Pp(){S("onend"),H.end()}let Vn,Lp=!1;function hE(){S("cleanup"),H.removeListener("close",Iu),H.removeListener("finish",Cu),Vn&&H.removeListener("drain",Vn),H.removeListener("error",xu),H.removeListener("unpipe",Qt),Ie.removeListener("end",Pp),Ie.removeListener("end",Yo),Ie.removeListener("data",Dp),Lp=!0,Vn&&Ce.awaitDrainWriters&&(!H._writableState||H._writableState.needDrain)&&Vn()}function Bp(){Lp||(Ce.pipes.length===1&&Ce.pipes[0]===H?(S("false write response, pause",0),Ce.awaitDrainWriters=H,Ce.multiAwaitDrain=!1):Ce.pipes.length>1&&Ce.pipes.includes(H)&&(S("false write response, pause",Ce.awaitDrainWriters.size),Ce.awaitDrainWriters.add(H)),Ie.pause()),Vn||(Vn=fe(Ie,H),H.on("drain",Vn))}Ie.on("data",Dp);function Dp(qn){S("ondata");const Ur=H.write(qn);S("dest.write",Ur),Ur===!1&&Bp()}function xu(qn){if(S("onerror",qn),Yo(),H.removeListener("error",xu),H.listenerCount("error")===0){const Ur=H._writableState||H._readableState;Ur&&!Ur.errorEmitted?de(H,qn):H.emit("error",qn)}}b(H,"error",xu);function Iu(){H.removeListener("finish",Cu),Yo()}H.once("close",Iu);function Cu(){S("onfinish"),H.removeListener("close",Iu),Yo()}H.once("finish",Cu);function Yo(){S("unpipe"),Ie.unpipe(H)}return H.emit("pipe",Ie),H.writableNeedDrain===!0?Bp():Ce.flowing||(S("pipe resume"),Ie.resume()),H};function fe(H,G){return function(){const Ce=H._readableState;Ce.awaitDrainWriters===G?(S("pipeOnDrain",1),Ce.awaitDrainWriters=null):Ce.multiAwaitDrain&&(S("pipeOnDrain",Ce.awaitDrainWriters.size),Ce.awaitDrainWriters.delete(G)),(!Ce.awaitDrainWriters||Ce.awaitDrainWriters.size===0)&&H.listenerCount("data")&&H.resume()}}I.prototype.unpipe=function(H){const G=this._readableState,Ie={hasUnpiped:!1};if(G.pipes.length===0)return this;if(!H){const Ne=G.pipes;G.pipes=[],this.pause();for(let Et=0;Et<Ne.length;Et++)Ne[Et].emit("unpipe",this,{hasUnpiped:!1});return this}const Ce=t(G.pipes,H);return Ce===-1?this:(G.pipes.splice(Ce,1),G.pipes.length===0&&this.pause(),H.emit("unpipe",this,Ie),this)},I.prototype.on=function(H,G){const Ie=_.prototype.on.call(this,H,G),Ce=this._readableState;return H==="data"?(Ce.readableListening=this.listenerCount("readable")>0,Ce.flowing!==!1&&this.resume()):H==="readable"&&!Ce.endEmitted&&!Ce.readableListening&&(Ce.readableListening=Ce.needReadable=!0,Ce.flowing=!1,Ce.emittedReadable=!1,S("on readable",Ce.length,Ce.reading),Ce.length?g(this):Ce.reading||e.nextTick(ke,this)),Ie},I.prototype.addListener=I.prototype.on,I.prototype.removeListener=function(H,G){const Ie=_.prototype.removeListener.call(this,H,G);return H==="readable"&&e.nextTick(xe,this),Ie},I.prototype.off=I.prototype.removeListener,I.prototype.removeAllListeners=function(H){const G=_.prototype.removeAllListeners.apply(this,arguments);return(H==="readable"||H===void 0)&&e.nextTick(xe,this),G};function xe(H){const G=H._readableState;G.readableListening=H.listenerCount("readable")>0,G.resumeScheduled&&G[ue]===!1?G.flowing=!0:H.listenerCount("data")>0?H.resume():G.readableListening||(G.flowing=null)}function ke(H){S("readable nexttick read 0"),H.read(0)}I.prototype.resume=function(){const H=this._readableState;return H.flowing||(S("resume"),H.flowing=!H.readableListening,Te(this,H)),H[ue]=!1,this};function Te(H,G){G.resumeScheduled||(G.resumeScheduled=!0,e.nextTick(Oe,H,G))}function Oe(H,G){S("resume",G.reading),G.reading||H.read(0),G.resumeScheduled=!1,H.emit("resume"),Re(H),G.flowing&&!G.reading&&H.read(0)}I.prototype.pause=function(){return S("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(S("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[ue]=!0,this};function Re(H){const G=H._readableState;for(S("flow",G.flowing);G.flowing&&H.read()!==null;);}I.prototype.wrap=function(H){let G=!1;H.on("data",Ce=>{!this.push(Ce)&&H.pause&&(G=!0,H.pause())}),H.on("end",()=>{this.push(null)}),H.on("error",Ce=>{de(this,Ce)}),H.on("close",()=>{this.destroy()}),H.on("destroy",()=>{this.destroy()}),this._read=()=>{G&&H.resume&&(G=!1,H.resume())};const Ie=s(H);for(let Ce=1;Ce<Ie.length;Ce++){const Ne=Ie[Ce];this[Ne]===void 0&&typeof H[Ne]=="function"&&(this[Ne]=H[Ne].bind(H))}return this},I.prototype[d]=function(){return Ve(this)},I.prototype.iterator=function(H){return H!==void 0&&ne(H,"options"),Ve(this,H)};function Ve(H,G){typeof H.read!="function"&&(H=I.wrap(H,{objectMode:!0}));const Ie=lt(H,G);return Ie.stream=H,Ie}async function*lt(H,G){let Ie=pe;function Ce(Qt){this===H?(Ie(),Ie=pe):Ie=Qt}H.on("readable",Ce);let Ne;const Et=R(H,{writable:!1},Qt=>{Ne=Qt?j(Ne,Qt):null,Ie(),Ie=pe});try{for(;;){const Qt=H.destroyed?null:H.read();if(Qt!==null)yield Qt;else{if(Ne)throw Ne;if(Ne===null)return;await new l(Ce)}}}catch(Qt){throw Ne=j(Ne,Qt),Ne}finally{(Ne||(G==null?void 0:G.destroyOnReturn)!==!1)&&(Ne===void 0||H._readableState.autoDestroy)?U.destroyer(H,null):(H.off("readable",Ce),Et())}}i(I.prototype,{readable:{__proto__:null,get(){const H=this._readableState;return!!H&&H.readable!==!1&&!H.destroyed&&!H.errorEmitted&&!H.endEmitted},set(H){this._readableState&&(this._readableState.readable=!!H)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(H){this._readableState&&(this._readableState.flowing=H)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(H){this._readableState&&(this._readableState.destroyed=H)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),i(K.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[ue]!==!1},set(H){this[ue]=!!H}}}),I._fromList=Je;function Je(H,G){if(G.length===0)return null;let Ie;return G.objectMode?Ie=G.buffer.shift():!H||H>=G.length?(G.decoder?Ie=G.buffer.join(""):G.buffer.length===1?Ie=G.buffer.first():Ie=G.buffer.concat(G.length),G.buffer.clear()):Ie=G.buffer.consume(H,G.decoder),Ie}function st(H){const G=H._readableState;S("endReadable",G.endEmitted),G.endEmitted||(G.ended=!0,e.nextTick(gt,G,H))}function gt(H,G){if(S("endReadableNT",H.endEmitted,H.length),!H.errored&&!H.closeEmitted&&!H.endEmitted&&H.length===0){if(H.endEmitted=!0,G.emit("end"),G.writable&&G.allowHalfOpen===!1)e.nextTick(ut,G);else if(H.autoDestroy){const Ie=G._writableState;(!Ie||Ie.autoDestroy&&(Ie.finished||Ie.writable===!1))&&G.destroy()}}}function ut(H){H.writable&&!H.writableEnded&&!H.destroyed&&H.end()}I.from=function(H,G){return z(I,H,G)};let Ki;function Ko(){return Ki===void 0&&(Ki={}),Ki}return I.fromWeb=function(H,G){return Ko().newStreamReadableFromReadableStream(H,G)},I.toWeb=function(H,G){return Ko().newReadableStreamFromStreamReadable(H,G)},I.wrap=function(H,G){var Ie,Ce;return new I({objectMode:(Ie=(Ce=H.readableObjectMode)!==null&&Ce!==void 0?Ce:H.objectMode)!==null&&Ie!==void 0?Ie:!0,...G,destroy(Ne,Et){U.destroyer(H,Ne),Et(Ne)}}).wrap(H)},bc}var wc,d0;function hp(){if(d0)return wc;d0=1;const e=Ui,{ArrayPrototypeSlice:t,Error:r,FunctionPrototypeSymbolHasInstance:n,ObjectDefineProperty:o,ObjectDefineProperties:i,ObjectSetPrototypeOf:s,StringPrototypeToLowerCase:a,Symbol:l,SymbolHasInstance:u}=ot;wc=ne,ne.WritableState=B;const{EventEmitter:c}=au,d=cp.Stream,{Buffer:p}=Gt,m=qo,{addAbortSignal:_}=gu,{getHighWaterMark:b,getDefaultHighWaterMark:T}=mu,{ERR_INVALID_ARG_TYPE:N,ERR_METHOD_NOT_IMPLEMENTED:R,ERR_MULTIPLE_CALLBACK:S,ERR_STREAM_CANNOT_PIPE:D,ERR_STREAM_DESTROYED:U,ERR_STREAM_ALREADY_FINISHED:x,ERR_STREAM_NULL_VALUES:L,ERR_STREAM_WRITE_AFTER_END:j,ERR_UNKNOWN_ENCODING:Y}=jt.codes,{errorOrDestroy:se}=m;s(ne.prototype,d.prototype),s(ne,d);function re(){}const P=l("kOnFinished");function B(v,A,E){typeof E!="boolean"&&(E=A instanceof an()),this.objectMode=!!(v&&v.objectMode),E&&(this.objectMode=this.objectMode||!!(v&&v.writableObjectMode)),this.highWaterMark=v?b(this,v,"writableHighWaterMark",E):T(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;const k=!!(v&&v.decodeStrings===!1);this.decodeStrings=!k,this.defaultEncoding=v&&v.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=de.bind(void 0,A),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,oe(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!v||v.emitClose!==!1,this.autoDestroy=!v||v.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[P]=[]}function oe(v){v.buffered=[],v.bufferedIndex=0,v.allBuffers=!0,v.allNoop=!0}B.prototype.getBuffer=function(){return t(this.buffered,this.bufferedIndex)},o(B.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function ne(v){const A=this instanceof an();if(!A&&!n(ne,this))return new ne(v);this._writableState=new B(v,this,A),v&&(typeof v.write=="function"&&(this._write=v.write),typeof v.writev=="function"&&(this._writev=v.writev),typeof v.destroy=="function"&&(this._destroy=v.destroy),typeof v.final=="function"&&(this._final=v.final),typeof v.construct=="function"&&(this._construct=v.construct),v.signal&&_(v.signal,this)),d.call(this,v),m.construct(this,()=>{const E=this._writableState;E.writing||me(this,E),F(this,E)})}o(ne,u,{__proto__:null,value:function(v){return n(this,v)?!0:this!==ne?!1:v&&v._writableState instanceof B}}),ne.prototype.pipe=function(){se(this,new D)};function ue(v,A,E,k){const M=v._writableState;if(typeof E=="function")k=E,E=M.defaultEncoding;else{if(!E)E=M.defaultEncoding;else if(E!=="buffer"&&!p.isEncoding(E))throw new Y(E);typeof k!="function"&&(k=re)}if(A===null)throw new L;if(!M.objectMode)if(typeof A=="string")M.decodeStrings!==!1&&(A=p.from(A,E),E="buffer");else if(A instanceof p)E="buffer";else if(d._isUint8Array(A))A=d._uint8ArrayToBuffer(A),E="buffer";else throw new N("chunk",["string","Buffer","Uint8Array"],A);let ee;return M.ending?ee=new j:M.destroyed&&(ee=new U("write")),ee?(e.nextTick(k,ee),se(v,ee,!0),ee):(M.pendingcb++,ae(v,M,A,E,k))}ne.prototype.write=function(v,A,E){return ue(this,v,A,E)===!0},ne.prototype.cork=function(){this._writableState.corked++},ne.prototype.uncork=function(){const v=this._writableState;v.corked&&(v.corked--,v.writing||me(this,v))},ne.prototype.setDefaultEncoding=function(A){if(typeof A=="string"&&(A=a(A)),!p.isEncoding(A))throw new Y(A);return this._writableState.defaultEncoding=A,this};function ae(v,A,E,k,M){const ee=A.objectMode?1:E.length;A.length+=ee;const te=A.length<A.highWaterMark;return te||(A.needDrain=!0),A.writing||A.corked||A.errored||!A.constructed?(A.buffered.push({chunk:E,encoding:k,callback:M}),A.allBuffers&&k!=="buffer"&&(A.allBuffers=!1),A.allNoop&&M!==re&&(A.allNoop=!1)):(A.writelen=ee,A.writecb=M,A.writing=!0,A.sync=!0,v._write(E,k,A.onwrite),A.sync=!1),te&&!A.errored&&!A.destroyed}function z(v,A,E,k,M,ee,te){A.writelen=k,A.writecb=te,A.writing=!0,A.sync=!0,A.destroyed?A.onwrite(new U("write")):E?v._writev(M,A.onwrite):v._write(M,ee,A.onwrite),A.sync=!1}function pe(v,A,E,k){--A.pendingcb,k(E),ie(A),se(v,E)}function de(v,A){const E=v._writableState,k=E.sync,M=E.writecb;if(typeof M!="function"){se(v,new S);return}E.writing=!1,E.writecb=null,E.length-=E.writelen,E.writelen=0,A?(A.stack,E.errored||(E.errored=A),v._readableState&&!v._readableState.errored&&(v._readableState.errored=A),k?e.nextTick(pe,v,E,A,M):pe(v,E,A,M)):(E.buffered.length>E.bufferedIndex&&me(v,E),k?E.afterWriteTickInfo!==null&&E.afterWriteTickInfo.cb===M?E.afterWriteTickInfo.count++:(E.afterWriteTickInfo={count:1,cb:M,stream:v,state:E},e.nextTick(ge,E.afterWriteTickInfo)):O(v,E,1,M))}function ge({stream:v,state:A,count:E,cb:k}){return A.afterWriteTickInfo=null,O(v,A,E,k)}function O(v,A,E,k){for(!A.ending&&!v.destroyed&&A.length===0&&A.needDrain&&(A.needDrain=!1,v.emit("drain"));E-- >0;)A.pendingcb--,k();A.destroyed&&ie(A),F(v,A)}function ie(v){if(v.writing)return;for(let M=v.bufferedIndex;M<v.buffered.length;++M){var A;const{chunk:ee,callback:te}=v.buffered[M],$=v.objectMode?1:ee.length;v.length-=$,te((A=v.errored)!==null&&A!==void 0?A:new U("write"))}const E=v[P].splice(0);for(let M=0;M<E.length;M++){var k;E[M]((k=v.errored)!==null&&k!==void 0?k:new U("end"))}oe(v)}function me(v,A){if(A.corked||A.bufferProcessing||A.destroyed||!A.constructed)return;const{buffered:E,bufferedIndex:k,objectMode:M}=A,ee=E.length-k;if(!ee)return;let te=k;if(A.bufferProcessing=!0,ee>1&&v._writev){A.pendingcb-=ee-1;const $=A.allNoop?re:I=>{for(let W=te;W<E.length;++W)E[W].callback(I)},K=A.allNoop&&te===0?E:t(E,te);K.allBuffers=A.allBuffers,z(v,A,!0,A.length,K,"",$),oe(A)}else{do{const{chunk:$,encoding:K,callback:I}=E[te];E[te++]=null;const W=M?1:$.length;z(v,A,!1,W,$,K,I)}while(te<E.length&&!A.writing);te===E.length?oe(A):te>256?(E.splice(0,te),A.bufferedIndex=0):A.bufferedIndex=te}A.bufferProcessing=!1}ne.prototype._write=function(v,A,E){if(this._writev)this._writev([{chunk:v,encoding:A}],E);else throw new R("_write()")},ne.prototype._writev=null,ne.prototype.end=function(v,A,E){const k=this._writableState;typeof v=="function"?(E=v,v=null,A=null):typeof A=="function"&&(E=A,A=null);let M;if(v!=null){const ee=ue(this,v,A);ee instanceof r&&(M=ee)}return k.corked&&(k.corked=1,this.uncork()),M||(!k.errored&&!k.ending?(k.ending=!0,F(this,k,!0),k.ended=!0):k.finished?M=new x("end"):k.destroyed&&(M=new U("end"))),typeof E=="function"&&(M||k.finished?e.nextTick(E,M):k[P].push(E)),this};function ve(v){return v.ending&&!v.destroyed&&v.constructed&&v.length===0&&!v.errored&&v.buffered.length===0&&!v.finished&&!v.writing&&!v.errorEmitted&&!v.closeEmitted}function ye(v,A){let E=!1;function k(M){if(E){se(v,M??S());return}if(E=!0,A.pendingcb--,M){const ee=A[P].splice(0);for(let te=0;te<ee.length;te++)ee[te](M);se(v,M,A.sync)}else ve(A)&&(A.prefinished=!0,v.emit("prefinish"),A.pendingcb++,e.nextTick(X,v,A))}A.sync=!0,A.pendingcb++;try{v._final(k)}catch(M){k(M)}A.sync=!1}function q(v,A){!A.prefinished&&!A.finalCalled&&(typeof v._final=="function"&&!A.destroyed?(A.finalCalled=!0,ye(v,A)):(A.prefinished=!0,v.emit("prefinish")))}function F(v,A,E){ve(A)&&(q(v,A),A.pendingcb===0&&(E?(A.pendingcb++,e.nextTick((k,M)=>{ve(M)?X(k,M):M.pendingcb--},v,A)):ve(A)&&(A.pendingcb++,X(v,A))))}function X(v,A){A.pendingcb--,A.finished=!0;const E=A[P].splice(0);for(let k=0;k<E.length;k++)E[k]();if(v.emit("finish"),A.autoDestroy){const k=v._readableState;(!k||k.autoDestroy&&(k.endEmitted||k.readable===!1))&&v.destroy()}}i(ne.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(v){this._writableState&&(this._writableState.destroyed=v)}},writable:{__proto__:null,get(){const v=this._writableState;return!!v&&v.writable!==!1&&!v.destroyed&&!v.errored&&!v.ending&&!v.ended},set(v){this._writableState&&(this._writableState.writable=!!v)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){const v=this._writableState;return v?!v.destroyed&&!v.ending&&v.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});const he=m.destroy;ne.prototype.destroy=function(v,A){const E=this._writableState;return!E.destroyed&&(E.bufferedIndex<E.buffered.length||E[P].length)&&e.nextTick(ie,E),he.call(this,v,A),this},ne.prototype._undestroy=m.undestroy,ne.prototype._destroy=function(v,A){A(v)},ne.prototype[c.captureRejectionSymbol]=function(v){this.destroy(v)};let ce;function Z(){return ce===void 0&&(ce={}),ce}return ne.fromWeb=function(v,A){return Z().newStreamWritableFromWritableStream(v,A)},ne.toWeb=function(v){return Z().newWritableStreamFromStreamWritable(v)},wc}var vc,p0;function o2(){if(p0)return vc;p0=1;const e=Ui,t=Gt,{isReadable:r,isWritable:n,isIterable:o,isNodeStream:i,isReadableNodeStream:s,isWritableNodeStream:a,isDuplexNodeStream:l,isReadableStream:u,isWritableStream:c}=_n,d=Hn,{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:m,ERR_INVALID_RETURN_VALUE:_}}=jt,{destroyer:b}=qo,T=an(),N=yu(),R=hp(),{createDeferredPromise:S}=Nt,D=r1,U=globalThis.Blob||t.Blob,x=typeof U<"u"?function(B){return B instanceof U}:function(B){return!1},L=globalThis.AbortController||ks().AbortController,{FunctionPrototypeCall:j}=ot;class Y extends T{constructor(B){super(B),(B==null?void 0:B.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(B==null?void 0:B.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}}vc=function P(B,oe){if(l(B))return B;if(s(B))return re({readable:B});if(a(B))return re({writable:B});if(i(B))return re({writable:!1,readable:!1});if(u(B))return re({readable:N.fromWeb(B)});if(c(B))return re({writable:R.fromWeb(B)});if(typeof B=="function"){const{value:ue,write:ae,final:z,destroy:pe}=se(B);if(o(ue))return D(Y,ue,{objectMode:!0,write:ae,final:z,destroy:pe});const de=ue==null?void 0:ue.then;if(typeof de=="function"){let ge;const O=j(de,ue,ie=>{if(ie!=null)throw new _("nully","body",ie)},ie=>{b(ge,ie)});return ge=new Y({objectMode:!0,readable:!1,write:ae,final(ie){z(async()=>{try{await O,e.nextTick(ie,null)}catch(me){e.nextTick(ie,me)}})},destroy:pe})}throw new _("Iterable, AsyncIterable or AsyncFunction",oe,ue)}if(x(B))return P(B.arrayBuffer());if(o(B))return D(Y,B,{objectMode:!0,writable:!1});if(u(B==null?void 0:B.readable)&&c(B==null?void 0:B.writable))return Y.fromWeb(B);if(typeof(B==null?void 0:B.writable)=="object"||typeof(B==null?void 0:B.readable)=="object"){const ue=B!=null&&B.readable?s(B==null?void 0:B.readable)?B==null?void 0:B.readable:P(B.readable):void 0,ae=B!=null&&B.writable?a(B==null?void 0:B.writable)?B==null?void 0:B.writable:P(B.writable):void 0;return re({readable:ue,writable:ae})}const ne=B==null?void 0:B.then;if(typeof ne=="function"){let ue;return j(ne,B,ae=>{ae!=null&&ue.push(ae),ue.push(null)},ae=>{b(ue,ae)}),ue=new Y({objectMode:!0,writable:!1,read(){}})}throw new m(oe,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],B)};function se(P){let{promise:B,resolve:oe}=S();const ne=new L,ue=ne.signal;return{value:P(async function*(){for(;;){const z=B;B=null;const{chunk:pe,done:de,cb:ge}=await z;if(e.nextTick(ge),de)return;if(ue.aborted)throw new p(void 0,{cause:ue.reason});({promise:B,resolve:oe}=S()),yield pe}}(),{signal:ue}),write(z,pe,de){const ge=oe;oe=null,ge({chunk:z,done:!1,cb:de})},final(z){const pe=oe;oe=null,pe({done:!0,cb:z})},destroy(z,pe){ne.abort(),pe(z)}}}function re(P){const B=P.readable&&typeof P.readable.read!="function"?N.wrap(P.readable):P.readable,oe=P.writable;let ne=!!r(B),ue=!!n(oe),ae,z,pe,de,ge;function O(ie){const me=de;de=null,me?me(ie):ie&&ge.destroy(ie)}return ge=new Y({readableObjectMode:!!(B!=null&&B.readableObjectMode),writableObjectMode:!!(oe!=null&&oe.writableObjectMode),readable:ne,writable:ue}),ue&&(d(oe,ie=>{ue=!1,ie&&b(B,ie),O(ie)}),ge._write=function(ie,me,ve){oe.write(ie,me)?ve():ae=ve},ge._final=function(ie){oe.end(),z=ie},oe.on("drain",function(){if(ae){const ie=ae;ae=null,ie()}}),oe.on("finish",function(){if(z){const ie=z;z=null,ie()}})),ne&&(d(B,ie=>{ne=!1,ie&&b(B,ie),O(ie)}),B.on("readable",function(){if(pe){const ie=pe;pe=null,ie()}}),B.on("end",function(){ge.push(null)}),ge._read=function(){for(;;){const ie=B.read();if(ie===null){pe=ge._read;return}if(!ge.push(ie))return}}),ge._destroy=function(ie,me){!ie&&de!==null&&(ie=new p),pe=null,ae=null,z=null,de===null?me(ie):(de=me,b(oe,ie),b(B,ie))},ge}return vc}var Ec,g0;function an(){if(g0)return Ec;g0=1;const{ObjectDefineProperties:e,ObjectGetOwnPropertyDescriptor:t,ObjectKeys:r,ObjectSetPrototypeOf:n}=ot;Ec=s;const o=yu(),i=hp();n(s.prototype,o.prototype),n(s,o);{const c=r(i.prototype);for(let d=0;d<c.length;d++){const p=c[d];s.prototype[p]||(s.prototype[p]=i.prototype[p])}}function s(c){if(!(this instanceof s))return new s(c);o.call(this,c),i.call(this,c),c?(this.allowHalfOpen=c.allowHalfOpen!==!1,c.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),c.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}e(s.prototype,{writable:{__proto__:null,...t(i.prototype,"writable")},writableHighWaterMark:{__proto__:null,...t(i.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...t(i.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...t(i.prototype,"writableBuffer")},writableLength:{__proto__:null,...t(i.prototype,"writableLength")},writableFinished:{__proto__:null,...t(i.prototype,"writableFinished")},writableCorked:{__proto__:null,...t(i.prototype,"writableCorked")},writableEnded:{__proto__:null,...t(i.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...t(i.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(c){this._readableState&&this._writableState&&(this._readableState.destroyed=c,this._writableState.destroyed=c)}}});let a;function l(){return a===void 0&&(a={}),a}s.fromWeb=function(c,d){return l().newStreamDuplexFromReadableWritablePair(c,d)},s.toWeb=function(c){return l().newReadableWritablePairFromDuplex(c)};let u;return s.from=function(c){return u||(u=o2()),u(c,"body")},Ec}const{ObjectSetPrototypeOf:n1,Symbol:s2}=ot;var i1=ln;const{ERR_METHOD_NOT_IMPLEMENTED:a2}=jt.codes,dp=an(),{getHighWaterMark:l2}=mu;n1(ln.prototype,dp.prototype);n1(ln,dp);const Ts=s2("kCallback");function ln(e){if(!(this instanceof ln))return new ln(e);const t=e?l2(this,e,"readableHighWaterMark",!0):null;t===0&&(e={...e,highWaterMark:null,readableHighWaterMark:t,writableHighWaterMark:e.writableHighWaterMark||0}),dp.call(this,e),this._readableState.sync=!1,this[Ts]=null,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",u2)}function Wh(e){typeof this._flush=="function"&&!this.destroyed?this._flush((t,r)=>{if(t){e?e(t):this.destroy(t);return}r!=null&&this.push(r),this.push(null),e&&e()}):(this.push(null),e&&e())}function u2(){this._final!==Wh&&Wh.call(this)}ln.prototype._final=Wh;ln.prototype._transform=function(e,t,r){throw new a2("_transform()")};ln.prototype._write=function(e,t,r){const n=this._readableState,o=this._writableState,i=n.length;this._transform(e,t,(s,a)=>{if(s){r(s);return}a!=null&&this.push(a),o.ended||i===n.length||n.length<n.highWaterMark?r():this[Ts]=r})};ln.prototype._read=function(){if(this[Ts]){const e=this[Ts];this[Ts]=null,e()}};const{ObjectSetPrototypeOf:o1}=ot;var s1=Oo;const pp=i1;o1(Oo.prototype,pp.prototype);o1(Oo,pp);function Oo(e){if(!(this instanceof Oo))return new Oo(e);pp.call(this,e)}Oo.prototype._transform=function(e,t,r){r(null,e)};const fs=Ui,{ArrayIsArray:c2,Promise:f2,SymbolAsyncIterator:h2,SymbolDispose:d2}=ot,ml=Hn,{once:p2}=Nt,g2=qo,m0=an(),{aggregateTwoErrors:m2,codes:{ERR_INVALID_ARG_TYPE:Hh,ERR_INVALID_RETURN_VALUE:Sc,ERR_MISSING_ARGS:y2,ERR_STREAM_DESTROYED:_2,ERR_STREAM_PREMATURE_CLOSE:b2},AbortError:w2}=jt,{validateFunction:v2,validateAbortSignal:E2}=Hs,{isIterable:ni,isReadable:Ac,isReadableNodeStream:Va,isNodeStream:y0,isTransformStream:ro,isWebStream:S2,isReadableStream:Tc,isReadableFinished:A2}=_n,T2=globalThis.AbortController||ks().AbortController;let xc,Ic,Cc;function _0(e,t,r){let n=!1;e.on("close",()=>{n=!0});const o=ml(e,{readable:t,writable:r},i=>{n=!i});return{destroy:i=>{n||(n=!0,g2.destroyer(e,i||new _2("pipe")))},cleanup:o}}function x2(e){return v2(e[e.length-1],"streams[stream.length - 1]"),e.pop()}function Rc(e){if(ni(e))return e;if(Va(e))return I2(e);throw new Hh("val",["Readable","Iterable","AsyncIterable"],e)}async function*I2(e){Ic||(Ic=yu()),yield*Ic.prototype[h2].call(e)}async function ya(e,t,r,{end:n}){let o,i=null;const s=u=>{if(u&&(o=u),i){const c=i;i=null,c()}},a=()=>new f2((u,c)=>{o?c(o):i=()=>{o?c(o):u()}});t.on("drain",s);const l=ml(t,{readable:!1},s);try{t.writableNeedDrain&&await a();for await(const u of e)t.write(u)||await a();n&&(t.end(),await a()),r()}catch(u){r(o!==u?m2(o,u):u)}finally{l(),t.off("drain",s)}}async function Oc(e,t,r,{end:n}){ro(t)&&(t=t.writable);const o=t.getWriter();try{for await(const i of e)await o.ready,o.write(i).catch(()=>{});await o.ready,n&&await o.close(),r()}catch(i){try{await o.abort(i),r(i)}catch(s){r(s)}}}function C2(...e){return a1(e,p2(x2(e)))}function a1(e,t,r){if(e.length===1&&c2(e[0])&&(e=e[0]),e.length<2)throw new y2("streams");const n=new T2,o=n.signal,i=r==null?void 0:r.signal,s=[];E2(i,"options.signal");function a(){_(new w2)}Cc=Cc||Nt.addAbortListener;let l;i&&(l=Cc(i,a));let u,c;const d=[];let p=0;function m(R){_(R,--p===0)}function _(R,S){var D;if(R&&(!u||u.code==="ERR_STREAM_PREMATURE_CLOSE")&&(u=R),!(!u&&!S)){for(;d.length;)d.shift()(u);(D=l)===null||D===void 0||D[d2](),n.abort(),S&&(u||s.forEach(U=>U()),fs.nextTick(t,u,c))}}let b;for(let R=0;R<e.length;R++){const S=e[R],D=R<e.length-1,U=R>0,x=D||(r==null?void 0:r.end)!==!1,L=R===e.length-1;if(y0(S)){let j=function(Y){Y&&Y.name!=="AbortError"&&Y.code!=="ERR_STREAM_PREMATURE_CLOSE"&&m(Y)};if(x){const{destroy:Y,cleanup:se}=_0(S,D,U);d.push(Y),Ac(S)&&L&&s.push(se)}S.on("error",j),Ac(S)&&L&&s.push(()=>{S.removeListener("error",j)})}if(R===0)if(typeof S=="function"){if(b=S({signal:o}),!ni(b))throw new Sc("Iterable, AsyncIterable or Stream","source",b)}else ni(S)||Va(S)||ro(S)?b=S:b=m0.from(S);else if(typeof S=="function"){if(ro(b)){var T;b=Rc((T=b)===null||T===void 0?void 0:T.readable)}else b=Rc(b);if(b=S(b,{signal:o}),D){if(!ni(b,!0))throw new Sc("AsyncIterable",`transform[${R-1}]`,b)}else{var N;xc||(xc=s1);const j=new xc({objectMode:!0}),Y=(N=b)===null||N===void 0?void 0:N.then;if(typeof Y=="function")p++,Y.call(b,P=>{c=P,P!=null&&j.write(P),x&&j.end(),fs.nextTick(m)},P=>{j.destroy(P),fs.nextTick(m,P)});else if(ni(b,!0))p++,ya(b,j,m,{end:x});else if(Tc(b)||ro(b)){const P=b.readable||b;p++,ya(P,j,m,{end:x})}else throw new Sc("AsyncIterable or Promise","destination",b);b=j;const{destroy:se,cleanup:re}=_0(b,!1,!0);d.push(se),L&&s.push(re)}}else if(y0(S)){if(Va(b)){p+=2;const j=R2(b,S,m,{end:x});Ac(S)&&L&&s.push(j)}else if(ro(b)||Tc(b)){const j=b.readable||b;p++,ya(j,S,m,{end:x})}else if(ni(b))p++,ya(b,S,m,{end:x});else throw new Hh("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],b);b=S}else if(S2(S)){if(Va(b))p++,Oc(Rc(b),S,m,{end:x});else if(Tc(b)||ni(b))p++,Oc(b,S,m,{end:x});else if(ro(b))p++,Oc(b.readable,S,m,{end:x});else throw new Hh("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],b);b=S}else b=m0.from(S)}return(o!=null&&o.aborted||i!=null&&i.aborted)&&fs.nextTick(a),b}function R2(e,t,r,{end:n}){let o=!1;if(t.on("close",()=>{o||r(new b2)}),e.pipe(t,{end:!1}),n){let i=function(){o=!0,t.end()};A2(e)?fs.nextTick(i):e.once("end",i)}else r();return ml(e,{readable:!0,writable:!1},i=>{const s=e._readableState;i&&i.code==="ERR_STREAM_PREMATURE_CLOSE"&&s&&s.ended&&!s.errored&&!s.errorEmitted?e.once("end",r).once("error",r):r(i)}),ml(t,{readable:!1,writable:!0},r)}var gp={pipelineImpl:a1,pipeline:C2};const{pipeline:O2}=gp,_a=an(),{destroyer:k2}=qo,{isNodeStream:ba,isReadable:b0,isWritable:w0,isWebStream:kc,isTransformStream:ei,isWritableStream:v0,isReadableStream:E0}=_n,{AbortError:N2,codes:{ERR_INVALID_ARG_VALUE:S0,ERR_MISSING_ARGS:M2}}=jt,P2=Hn;var l1=function(...t){if(t.length===0)throw new M2("streams");if(t.length===1)return _a.from(t[0]);const r=[...t];if(typeof t[0]=="function"&&(t[0]=_a.from(t[0])),typeof t[t.length-1]=="function"){const m=t.length-1;t[m]=_a.from(t[m])}for(let m=0;m<t.length;++m)if(!(!ba(t[m])&&!kc(t[m]))){if(m<t.length-1&&!(b0(t[m])||E0(t[m])||ei(t[m])))throw new S0(`streams[${m}]`,r[m],"must be readable");if(m>0&&!(w0(t[m])||v0(t[m])||ei(t[m])))throw new S0(`streams[${m}]`,r[m],"must be writable")}let n,o,i,s,a;function l(m){const _=s;s=null,_?_(m):m?a.destroy(m):!p&&!d&&a.destroy()}const u=t[0],c=O2(t,l),d=!!(w0(u)||v0(u)||ei(u)),p=!!(b0(c)||E0(c)||ei(c));if(a=new _a({writableObjectMode:!!(u!=null&&u.writableObjectMode),readableObjectMode:!!(c!=null&&c.readableObjectMode),writable:d,readable:p}),d){if(ba(u))a._write=function(_,b,T){u.write(_,b)?T():n=T},a._final=function(_){u.end(),o=_},u.on("drain",function(){if(n){const _=n;n=null,_()}});else if(kc(u)){const b=(ei(u)?u.writable:u).getWriter();a._write=async function(T,N,R){try{await b.ready,b.write(T).catch(()=>{}),R()}catch(S){R(S)}},a._final=async function(T){try{await b.ready,b.close().catch(()=>{}),o=T}catch(N){T(N)}}}const m=ei(c)?c.readable:c;P2(m,()=>{if(o){const _=o;o=null,_()}})}if(p){if(ba(c))c.on("readable",function(){if(i){const m=i;i=null,m()}}),c.on("end",function(){a.push(null)}),a._read=function(){for(;;){const m=c.read();if(m===null){i=a._read;return}if(!a.push(m))return}};else if(kc(c)){const _=(ei(c)?c.readable:c).getReader();a._read=async function(){for(;;)try{const{value:b,done:T}=await _.read();if(!a.push(b))return;if(T){a.push(null);return}}catch{return}}}}return a._destroy=function(m,_){!m&&s!==null&&(m=new N2),i=null,n=null,o=null,s===null?_(m):(s=_,ba(c)&&k2(c,m))},a};const L2=globalThis.AbortController||ks().AbortController,{codes:{ERR_INVALID_ARG_VALUE:B2,ERR_INVALID_ARG_TYPE:qs,ERR_MISSING_ARGS:D2,ERR_OUT_OF_RANGE:$2},AbortError:Br}=jt,{validateAbortSignal:ji,validateInteger:A0,validateObject:Wi}=Hs,U2=ot.Symbol("kWeak"),F2=ot.Symbol("kResistStopPropagation"),{finished:j2}=Hn,W2=l1,{addAbortSignalNoValidate:H2}=gu,{isWritable:V2,isNodeStream:q2}=_n,{deprecate:K2}=Nt,{ArrayPrototypePush:Y2,Boolean:z2,MathFloor:T0,Number:G2,NumberIsNaN:Q2,Promise:x0,PromiseReject:I0,PromiseResolve:X2,PromisePrototypeThen:C0,Symbol:u1}=ot,yl=u1("kEmpty"),R0=u1("kEof");function J2(e,t){if(t!=null&&Wi(t,"options"),(t==null?void 0:t.signal)!=null&&ji(t.signal,"options.signal"),q2(e)&&!V2(e))throw new B2("stream",e,"must be writable");const r=W2(this,e);return t!=null&&t.signal&&H2(t.signal,r),r}function _u(e,t){if(typeof e!="function")throw new qs("fn",["Function","AsyncFunction"],e);t!=null&&Wi(t,"options"),(t==null?void 0:t.signal)!=null&&ji(t.signal,"options.signal");let r=1;(t==null?void 0:t.concurrency)!=null&&(r=T0(t.concurrency));let n=r-1;return(t==null?void 0:t.highWaterMark)!=null&&(n=T0(t.highWaterMark)),A0(r,"options.concurrency",1),A0(n,"options.highWaterMark",0),n+=r,(async function*(){const i=Nt.AbortSignalAny([t==null?void 0:t.signal].filter(z2)),s=this,a=[],l={signal:i};let u,c,d=!1,p=0;function m(){d=!0,_()}function _(){p-=1,b()}function b(){c&&!d&&p<r&&a.length<n&&(c(),c=null)}async function T(){try{for await(let N of s){if(d)return;if(i.aborted)throw new Br;try{if(N=e(N,l),N===yl)continue;N=X2(N)}catch(R){N=I0(R)}p+=1,C0(N,_,m),a.push(N),u&&(u(),u=null),!d&&(a.length>=n||p>=r)&&await new x0(R=>{c=R})}a.push(R0)}catch(N){const R=I0(N);C0(R,_,m),a.push(R)}finally{d=!0,u&&(u(),u=null)}}T();try{for(;;){for(;a.length>0;){const N=await a[0];if(N===R0)return;if(i.aborted)throw new Br;N!==yl&&(yield N),a.shift(),b()}await new x0(N=>{u=N})}}finally{d=!0,c&&(c(),c=null)}}).call(this)}function Z2(e=void 0){return e!=null&&Wi(e,"options"),(e==null?void 0:e.signal)!=null&&ji(e.signal,"options.signal"),(async function*(){let r=0;for await(const o of this){var n;if(e!=null&&(n=e.signal)!==null&&n!==void 0&&n.aborted)throw new Br({cause:e.signal.reason});yield[r++,o]}}).call(this)}async function c1(e,t=void 0){for await(const r of mp.call(this,e,t))return!0;return!1}async function eP(e,t=void 0){if(typeof e!="function")throw new qs("fn",["Function","AsyncFunction"],e);return!await c1.call(this,async(...r)=>!await e(...r),t)}async function tP(e,t){for await(const r of mp.call(this,e,t))return r}async function rP(e,t){if(typeof e!="function")throw new qs("fn",["Function","AsyncFunction"],e);async function r(n,o){return await e(n,o),yl}for await(const n of _u.call(this,r,t));}function mp(e,t){if(typeof e!="function")throw new qs("fn",["Function","AsyncFunction"],e);async function r(n,o){return await e(n,o)?n:yl}return _u.call(this,r,t)}class nP extends D2{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}}async function iP(e,t,r){var n;if(typeof e!="function")throw new qs("reducer",["Function","AsyncFunction"],e);r!=null&&Wi(r,"options"),(r==null?void 0:r.signal)!=null&&ji(r.signal,"options.signal");let o=arguments.length>1;if(r!=null&&(n=r.signal)!==null&&n!==void 0&&n.aborted){const u=new Br(void 0,{cause:r.signal.reason});throw this.once("error",()=>{}),await j2(this.destroy(u)),u}const i=new L2,s=i.signal;if(r!=null&&r.signal){const u={once:!0,[U2]:this,[F2]:!0};r.signal.addEventListener("abort",()=>i.abort(),u)}let a=!1;try{for await(const u of this){var l;if(a=!0,r!=null&&(l=r.signal)!==null&&l!==void 0&&l.aborted)throw new Br;o?t=await e(t,u,{signal:s}):(t=u,o=!0)}if(!a&&!o)throw new nP}finally{i.abort()}return t}async function oP(e){e!=null&&Wi(e,"options"),(e==null?void 0:e.signal)!=null&&ji(e.signal,"options.signal");const t=[];for await(const n of this){var r;if(e!=null&&(r=e.signal)!==null&&r!==void 0&&r.aborted)throw new Br(void 0,{cause:e.signal.reason});Y2(t,n)}return t}function sP(e,t){const r=_u.call(this,e,t);return(async function*(){for await(const o of r)yield*o}).call(this)}function f1(e){if(e=G2(e),Q2(e))return 0;if(e<0)throw new $2("number",">= 0",e);return e}function aP(e,t=void 0){return t!=null&&Wi(t,"options"),(t==null?void 0:t.signal)!=null&&ji(t.signal,"options.signal"),e=f1(e),(async function*(){var n;if(t!=null&&(n=t.signal)!==null&&n!==void 0&&n.aborted)throw new Br;for await(const i of this){var o;if(t!=null&&(o=t.signal)!==null&&o!==void 0&&o.aborted)throw new Br;e--<=0&&(yield i)}}).call(this)}function lP(e,t=void 0){return t!=null&&Wi(t,"options"),(t==null?void 0:t.signal)!=null&&ji(t.signal,"options.signal"),e=f1(e),(async function*(){var n;if(t!=null&&(n=t.signal)!==null&&n!==void 0&&n.aborted)throw new Br;for await(const i of this){var o;if(t!=null&&(o=t.signal)!==null&&o!==void 0&&o.aborted)throw new Br;if(e-- >0&&(yield i),e<=0)return}}).call(this)}op.streamReturningOperators={asIndexedPairs:K2(Z2,"readable.asIndexedPairs will be removed in a future version."),drop:aP,filter:mp,flatMap:sP,map:_u,take:lP,compose:J2};op.promiseReturningOperators={every:eP,forEach:rP,reduce:iP,toArray:oP,some:c1,find:tP};var Nc,O0;function h1(){if(O0)return Nc;O0=1;const{ArrayPrototypePop:e,Promise:t}=ot,{isIterable:r,isNodeStream:n,isWebStream:o}=_n,{pipelineImpl:i}=gp,{finished:s}=Hn;d1();function a(...l){return new t((u,c)=>{let d,p;const m=l[l.length-1];if(m&&typeof m=="object"&&!n(m)&&!r(m)&&!o(m)){const _=e(l);d=_.signal,p=_.end}i(l,(_,b)=>{_?c(_):u(b)},{signal:d,end:p})})}return Nc={finished:s,pipeline:a},Nc}var k0;function d1(){if(k0)return dc.exports;k0=1;const{Buffer:e}=Gt,{ObjectDefineProperty:t,ObjectKeys:r,ReflectApply:n}=ot,{promisify:{custom:o}}=Nt,{streamReturningOperators:i,promiseReturningOperators:s}=op,{codes:{ERR_ILLEGAL_CONSTRUCTOR:a}}=jt,l=l1,{setDefaultHighWaterMark:u,getDefaultHighWaterMark:c}=mu,{pipeline:d}=gp,{destroyer:p}=qo,m=Hn,_=h1(),b=_n,T=dc.exports=cp.Stream;T.isDestroyed=b.isDestroyed,T.isDisturbed=b.isDisturbed,T.isErrored=b.isErrored,T.isReadable=b.isReadable,T.isWritable=b.isWritable,T.Readable=yu();for(const R of r(i)){let D=function(...U){if(new.target)throw a();return T.Readable.from(n(S,this,U))};const S=i[R];t(D,"name",{__proto__:null,value:S.name}),t(D,"length",{__proto__:null,value:S.length}),t(T.Readable.prototype,R,{__proto__:null,value:D,enumerable:!1,configurable:!0,writable:!0})}for(const R of r(s)){let D=function(...U){if(new.target)throw a();return n(S,this,U)};const S=s[R];t(D,"name",{__proto__:null,value:S.name}),t(D,"length",{__proto__:null,value:S.length}),t(T.Readable.prototype,R,{__proto__:null,value:D,enumerable:!1,configurable:!0,writable:!0})}T.Writable=hp(),T.Duplex=an(),T.Transform=i1,T.PassThrough=s1,T.pipeline=d;const{addAbortSignal:N}=gu;return T.addAbortSignal=N,T.finished=m,T.destroy=p,T.compose=l,T.setDefaultHighWaterMark=u,T.getDefaultHighWaterMark=c,t(T,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return _}}),t(d,o,{__proto__:null,enumerable:!0,get(){return _.pipeline}}),t(m,o,{__proto__:null,enumerable:!0,get(){return _.finished}}),T.Stream=T,T._isUint8Array=function(S){return S instanceof Uint8Array},T._uint8ArrayToBuffer=function(S){return e.from(S.buffer,S.byteOffset,S.byteLength)},dc.exports}(function(e){const t=d1(),r=h1(),n=t.Readable.destroy;e.exports=t.Readable,e.exports._uint8ArrayToBuffer=t._uint8ArrayToBuffer,e.exports._isUint8Array=t._isUint8Array,e.exports.isDisturbed=t.isDisturbed,e.exports.isErrored=t.isErrored,e.exports.isReadable=t.isReadable,e.exports.Readable=t.Readable,e.exports.Writable=t.Writable,e.exports.Duplex=t.Duplex,e.exports.Transform=t.Transform,e.exports.PassThrough=t.PassThrough,e.exports.addAbortSignal=t.addAbortSignal,e.exports.finished=t.finished,e.exports.destroy=t.destroy,e.exports.destroy=n,e.exports.pipeline=t.pipeline,e.exports.compose=t.compose,Object.defineProperty(t,"promises",{configurable:!0,enumerable:!0,get(){return r}}),e.exports.Stream=t.Stream,e.exports.default=e.exports})(uv);var uP=uv.exports,Vh={exports:{}};typeof Object.create=="function"?Vh.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Vh.exports=function(t,r){if(r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t}};var cP=Vh.exports;const{Buffer:dr}=Gt,p1=Symbol.for("BufferList");function Ge(e){if(!(this instanceof Ge))return new Ge(e);Ge._init.call(this,e)}Ge._init=function(t){Object.defineProperty(this,p1,{value:!0}),this._bufs=[],this.length=0,t&&this.append(t)};Ge.prototype._new=function(t){return new Ge(t)};Ge.prototype._offset=function(t){if(t===0)return[0,0];let r=0;for(let n=0;n<this._bufs.length;n++){const o=r+this._bufs[n].length;if(t<o||n===this._bufs.length-1)return[n,t-r];r=o}};Ge.prototype._reverseOffset=function(e){const t=e[0];let r=e[1];for(let n=0;n<t;n++)r+=this._bufs[n].length;return r};Ge.prototype.get=function(t){if(t>this.length||t<0)return;const r=this._offset(t);return this._bufs[r[0]][r[1]]};Ge.prototype.slice=function(t,r){return typeof t=="number"&&t<0&&(t+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,t,r)};Ge.prototype.copy=function(t,r,n,o){if((typeof n!="number"||n<0)&&(n=0),(typeof o!="number"||o>this.length)&&(o=this.length),n>=this.length||o<=0)return t||dr.alloc(0);const i=!!t,s=this._offset(n),a=o-n;let l=a,u=i&&r||0,c=s[1];if(n===0&&o===this.length){if(!i)return this._bufs.length===1?this._bufs[0]:dr.concat(this._bufs,this.length);for(let d=0;d<this._bufs.length;d++)this._bufs[d].copy(t,u),u+=this._bufs[d].length;return t}if(l<=this._bufs[s[0]].length-c)return i?this._bufs[s[0]].copy(t,r,c,c+l):this._bufs[s[0]].slice(c,c+l);i||(t=dr.allocUnsafe(a));for(let d=s[0];d<this._bufs.length;d++){const p=this._bufs[d].length-c;if(l>p)this._bufs[d].copy(t,u,c),u+=p;else{this._bufs[d].copy(t,u,c,c+l),u+=p;break}l-=p,c&&(c=0)}return t.length>u?t.slice(0,u):t};Ge.prototype.shallowSlice=function(t,r){if(t=t||0,r=typeof r!="number"?this.length:r,t<0&&(t+=this.length),r<0&&(r+=this.length),t===r)return this._new();const n=this._offset(t),o=this._offset(r),i=this._bufs.slice(n[0],o[0]+1);return o[1]===0?i.pop():i[i.length-1]=i[i.length-1].slice(0,o[1]),n[1]!==0&&(i[0]=i[0].slice(n[1])),this._new(i)};Ge.prototype.toString=function(t,r,n){return this.slice(r,n).toString(t)};Ge.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};Ge.prototype.duplicate=function(){const t=this._new();for(let r=0;r<this._bufs.length;r++)t.append(this._bufs[r]);return t};Ge.prototype.append=function(t){if(t==null)return this;if(t.buffer)this._appendBuffer(dr.from(t.buffer,t.byteOffset,t.byteLength));else if(Array.isArray(t))for(let r=0;r<t.length;r++)this.append(t[r]);else if(this._isBufferList(t))for(let r=0;r<t._bufs.length;r++)this.append(t._bufs[r]);else typeof t=="number"&&(t=t.toString()),this._appendBuffer(dr.from(t));return this};Ge.prototype._appendBuffer=function(t){this._bufs.push(t),this.length+=t.length};Ge.prototype.indexOf=function(e,t,r){if(r===void 0&&typeof t=="string"&&(r=t,t=void 0),typeof e=="function"||Array.isArray(e))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof e=="number"?e=dr.from([e]):typeof e=="string"?e=dr.from(e,r):this._isBufferList(e)?e=e.slice():Array.isArray(e.buffer)?e=dr.from(e.buffer,e.byteOffset,e.byteLength):dr.isBuffer(e)||(e=dr.from(e)),t=Number(t||0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;const n=this._offset(t);let o=n[0],i=n[1];for(;o<this._bufs.length;o++){const s=this._bufs[o];for(;i<s.length;)if(s.length-i>=e.length){const l=s.indexOf(e,i);if(l!==-1)return this._reverseOffset([o,l]);i=s.length-e.length+1}else{const l=this._reverseOffset([o,i]);if(this._match(l,e))return l;i++}i=0}return-1};Ge.prototype._match=function(e,t){if(this.length-e<t.length)return!1;for(let r=0;r<t.length;r++)if(this.get(e+r)!==t[r])return!1;return!0};(function(){const e={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(const t in e)(function(r){e[r]===null?Ge.prototype[r]=function(n,o){return this.slice(n,n+o)[r](0,o)}:Ge.prototype[r]=function(n=0){return this.slice(n,n+e[r])[r](0)}})(t)})();Ge.prototype._isBufferList=function(t){return t instanceof Ge||Ge.isBufferList(t)};Ge.isBufferList=function(t){return t!=null&&t[p1]};var fP=Ge;const yp=uP.Duplex,hP=cP,Ks=fP;function xt(e){if(!(this instanceof xt))return new xt(e);if(typeof e=="function"){this._callback=e;const t=(function(n){this._callback&&(this._callback(n),this._callback=null)}).bind(this);this.on("pipe",function(n){n.on("error",t)}),this.on("unpipe",function(n){n.removeListener("error",t)}),e=null}Ks._init.call(this,e),yp.call(this)}hP(xt,yp);Object.assign(xt.prototype,Ks.prototype);xt.prototype._new=function(t){return new xt(t)};xt.prototype._write=function(t,r,n){this._appendBuffer(t),typeof n=="function"&&n()};xt.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};xt.prototype.end=function(t){yp.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};xt.prototype._destroy=function(t,r){this._bufs.length=0,this.length=0,r(t)};xt.prototype._isBufferList=function(t){return t instanceof xt||t instanceof Ks||xt.isBufferList(t)};xt.isBufferList=Ks.isBufferList;rp.exports=xt;rp.exports.BufferListStream=xt;rp.exports.BufferList=Ks;var dP={exports:{}};(function(e){const t=e.exports,{Buffer:r}=Gt;t.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},t.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},t.requiredHeaderFlagsErrors={};for(const o in t.requiredHeaderFlags){const i=t.requiredHeaderFlags[o];t.requiredHeaderFlagsErrors[o]="Invalid header flag bits, must be 0x"+i.toString(16)+" for "+t.types[o]+" packet"}t.codes={};for(const o in t.types){const i=t.types[o];t.codes[i]=o}t.CMD_SHIFT=4,t.CMD_MASK=240,t.DUP_MASK=8,t.QOS_MASK=3,t.QOS_SHIFT=1,t.RETAIN_MASK=1,t.VARBYTEINT_MASK=127,t.VARBYTEINT_FIN_MASK=128,t.VARBYTEINT_MAX=268435455,t.SESSIONPRESENT_MASK=1,t.SESSIONPRESENT_HEADER=r.from([t.SESSIONPRESENT_MASK]),t.CONNACK_HEADER=r.from([t.codes.connack<<t.CMD_SHIFT]),t.USERNAME_MASK=128,t.PASSWORD_MASK=64,t.WILL_RETAIN_MASK=32,t.WILL_QOS_MASK=24,t.WILL_QOS_SHIFT=3,t.WILL_FLAG_MASK=4,t.CLEAN_SESSION_MASK=2,t.CONNECT_HEADER=r.from([t.codes.connect<<t.CMD_SHIFT]),t.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},t.propertiesCodes={};for(const o in t.properties){const i=t.properties[o];t.propertiesCodes[i]=o}t.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function n(o){return[0,1,2].map(i=>[0,1].map(s=>[0,1].map(a=>{const l=r.alloc(1);return l.writeUInt8(t.codes[o]<<t.CMD_SHIFT|(s?t.DUP_MASK:0)|i<<t.QOS_SHIFT|a,0,!0),l})))}t.PUBLISH_HEADER=n("publish"),t.SUBSCRIBE_HEADER=n("subscribe"),t.SUBSCRIBE_OPTIONS_QOS_MASK=3,t.SUBSCRIBE_OPTIONS_NL_MASK=1,t.SUBSCRIBE_OPTIONS_NL_SHIFT=2,t.SUBSCRIBE_OPTIONS_RAP_MASK=1,t.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,t.SUBSCRIBE_OPTIONS_RH_MASK=3,t.SUBSCRIBE_OPTIONS_RH_SHIFT=4,t.SUBSCRIBE_OPTIONS_RH=[0,16,32],t.SUBSCRIBE_OPTIONS_NL=4,t.SUBSCRIBE_OPTIONS_RAP=8,t.SUBSCRIBE_OPTIONS_QOS=[0,1,2],t.UNSUBSCRIBE_HEADER=n("unsubscribe"),t.ACKS={unsuback:n("unsuback"),puback:n("puback"),pubcomp:n("pubcomp"),pubrel:n("pubrel"),pubrec:n("pubrec")},t.SUBACK_HEADER=r.from([t.codes.suback<<t.CMD_SHIFT]),t.VERSION3=r.from([3]),t.VERSION4=r.from([4]),t.VERSION5=r.from([5]),t.VERSION131=r.from([131]),t.VERSION132=r.from([132]),t.QOS=[0,1,2].map(o=>r.from([o])),t.EMPTY={pingreq:r.from([t.codes.pingreq<<4,0]),pingresp:r.from([t.codes.pingresp<<4,0]),disconnect:r.from([t.codes.disconnect<<4,0])},t.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},t.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},t.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},t.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},t.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},t.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}})(dP);function g1(){throw new Error("setTimeout has not been defined")}function m1(){throw new Error("clearTimeout has not been defined")}var Tn=g1,xn=m1;typeof Ai.setTimeout=="function"&&(Tn=setTimeout);typeof Ai.clearTimeout=="function"&&(xn=clearTimeout);function y1(e){if(Tn===setTimeout)return setTimeout(e,0);if((Tn===g1||!Tn)&&setTimeout)return Tn=setTimeout,setTimeout(e,0);try{return Tn(e,0)}catch{try{return Tn.call(null,e,0)}catch{return Tn.call(this,e,0)}}}function pP(e){if(xn===clearTimeout)return clearTimeout(e);if((xn===m1||!xn)&&clearTimeout)return xn=clearTimeout,clearTimeout(e);try{return xn(e)}catch{try{return xn.call(null,e)}catch{return xn.call(this,e)}}}var Qr=[],_o=!1,pi,qa=-1;function gP(){!_o||!pi||(_o=!1,pi.length?Qr=pi.concat(Qr):qa=-1,Qr.length&&_1())}function _1(){if(!_o){var e=y1(gP);_o=!0;for(var t=Qr.length;t;){for(pi=Qr,Qr=[];++qa<t;)pi&&pi[qa].run();qa=-1,t=Qr.length}pi=null,_o=!1,pP(e)}}function mP(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Qr.push(new b1(e,t)),Qr.length===1&&!_o&&y1(_1)}function b1(e,t){this.fun=e,this.array=t}b1.prototype.run=function(){this.fun.apply(null,this.array)};var yP="browser",_P="browser",bP=!0,wP={},vP=[],EP="",SP={},AP={},TP={};function Hi(){}var xP=Hi,IP=Hi,CP=Hi,RP=Hi,OP=Hi,kP=Hi,NP=Hi;function MP(e){throw new Error("process.binding is not supported")}function PP(){return"/"}function LP(e){throw new Error("process.chdir is not supported")}function BP(){return 0}var no=Ai.performance||{},DP=no.now||no.mozNow||no.msNow||no.oNow||no.webkitNow||function(){return new Date().getTime()};function $P(e){var t=DP.call(no)*.001,r=Math.floor(t),n=Math.floor(t%1*1e9);return e&&(r=r-e[0],n=n-e[1],n<0&&(r--,n+=1e9)),[r,n]}var UP=new Date;function FP(){var e=new Date,t=e-UP;return t/1e3}var Vt={nextTick:mP,title:yP,browser:bP,env:wP,argv:vP,version:EP,versions:SP,on:xP,addListener:IP,once:CP,off:RP,removeListener:OP,removeAllListeners:kP,emit:NP,binding:MP,cwd:PP,chdir:LP,umask:BP,hrtime:$P,platform:_P,release:AP,config:TP,uptime:FP},qh={exports:{}},Mc,N0;function jP(){if(N0)return Mc;N0=1;var e=1e3,t=e*60,r=t*60,n=r*24,o=n*7,i=n*365.25;Mc=function(c,d){d=d||{};var p=typeof c;if(p==="string"&&c.length>0)return s(c);if(p==="number"&&isFinite(c))return d.long?l(c):a(c);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(c))};function s(c){if(c=String(c),!(c.length>100)){var d=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(c);if(d){var p=parseFloat(d[1]),m=(d[2]||"ms").toLowerCase();switch(m){case"years":case"year":case"yrs":case"yr":case"y":return p*i;case"weeks":case"week":case"w":return p*o;case"days":case"day":case"d":return p*n;case"hours":case"hour":case"hrs":case"hr":case"h":return p*r;case"minutes":case"minute":case"mins":case"min":case"m":return p*t;case"seconds":case"second":case"secs":case"sec":case"s":return p*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return p;default:return}}}}function a(c){var d=Math.abs(c);return d>=n?Math.round(c/n)+"d":d>=r?Math.round(c/r)+"h":d>=t?Math.round(c/t)+"m":d>=e?Math.round(c/e)+"s":c+"ms"}function l(c){var d=Math.abs(c);return d>=n?u(c,d,n,"day"):d>=r?u(c,d,r,"hour"):d>=t?u(c,d,t,"minute"):d>=e?u(c,d,e,"second"):c+" ms"}function u(c,d,p,m){var _=d>=p*1.5;return Math.round(c/p)+" "+m+(_?"s":"")}return Mc}function WP(e){r.debug=r,r.default=r,r.coerce=l,r.disable=i,r.enable=o,r.enabled=s,r.humanize=jP(),r.destroy=u,Object.keys(e).forEach(c=>{r[c]=e[c]}),r.names=[],r.skips=[],r.formatters={};function t(c){let d=0;for(let p=0;p<c.length;p++)d=(d<<5)-d+c.charCodeAt(p),d|=0;return r.colors[Math.abs(d)%r.colors.length]}r.selectColor=t;function r(c){let d,p=null,m,_;function b(...T){if(!b.enabled)return;const N=b,R=Number(new Date),S=R-(d||R);N.diff=S,N.prev=d,N.curr=R,d=R,T[0]=r.coerce(T[0]),typeof T[0]!="string"&&T.unshift("%O");let D=0;T[0]=T[0].replace(/%([a-zA-Z%])/g,(x,L)=>{if(x==="%%")return"%";D++;const j=r.formatters[L];if(typeof j=="function"){const Y=T[D];x=j.call(N,Y),T.splice(D,1),D--}return x}),r.formatArgs.call(N,T),(N.log||r.log).apply(N,T)}return b.namespace=c,b.useColors=r.useColors(),b.color=r.selectColor(c),b.extend=n,b.destroy=r.destroy,Object.defineProperty(b,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(m!==r.namespaces&&(m=r.namespaces,_=r.enabled(c)),_),set:T=>{p=T}}),typeof r.init=="function"&&r.init(b),b}function n(c,d){const p=r(this.namespace+(typeof d>"u"?":":d)+c);return p.log=this.log,p}function o(c){r.save(c),r.namespaces=c,r.names=[],r.skips=[];let d;const p=(typeof c=="string"?c:"").split(/[\s,]+/),m=p.length;for(d=0;d<m;d++)p[d]&&(c=p[d].replace(/\*/g,".*?"),c[0]==="-"?r.skips.push(new RegExp("^"+c.slice(1)+"$")):r.names.push(new RegExp("^"+c+"$")))}function i(){const c=[...r.names.map(a),...r.skips.map(a).map(d=>"-"+d)].join(",");return r.enable(""),c}function s(c){if(c[c.length-1]==="*")return!0;let d,p;for(d=0,p=r.skips.length;d<p;d++)if(r.skips[d].test(c))return!1;for(d=0,p=r.names.length;d<p;d++)if(r.names[d].test(c))return!0;return!1}function a(c){return c.toString().substring(2,c.toString().length-2).replace(/\.\*\?$/,"*")}function l(c){return c instanceof Error?c.stack||c.message:c}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}var HP=WP;(function(e,t){var r={};t.formatArgs=o,t.save=i,t.load=s,t.useColors=n,t.storage=a(),t.destroy=(()=>{let u=!1;return()=>{u||(u=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function o(u){if(u[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+u[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const c="color: "+this.color;u.splice(1,0,c,"color: inherit");let d=0,p=0;u[0].replace(/%[a-zA-Z%]/g,m=>{m!=="%%"&&(d++,m==="%c"&&(p=d))}),u.splice(p,0,c)}t.log=console.debug||console.log||(()=>{});function i(u){try{u?t.storage.setItem("debug",u):t.storage.removeItem("debug")}catch{}}function s(){let u;try{u=t.storage.getItem("debug")}catch{}return!u&&typeof Vt<"u"&&"env"in Vt&&(u=r.DEBUG),u}function a(){try{return localStorage}catch{}}e.exports=HP(t);const{formatters:l}=e.exports;l.j=function(u){try{return JSON.stringify(u)}catch(c){return"[UnexpectedJSONParseError]: "+c.message}}})(qh,qh.exports);var w1=qh.exports;w1("mqtt-packet:parser");const{Buffer:M0}=Gt;M0.isBuffer(M0.from([1,2]).subarray(0,1));var Kh={exports:{}};typeof Vt>"u"||!Vt.version||Vt.version.indexOf("v0.")===0||Vt.version.indexOf("v1.")===0&&Vt.version.indexOf("v1.8.")!==0?Kh.exports={nextTick:VP}:Kh.exports=Vt;function VP(e,t,r,n){if(typeof e!="function")throw new TypeError('"callback" argument must be a function');var o=arguments.length,i,s;switch(o){case 0:case 1:return Vt.nextTick(e);case 2:return Vt.nextTick(function(){e.call(null,t)});case 3:return Vt.nextTick(function(){e.call(null,t,r)});case 4:return Vt.nextTick(function(){e.call(null,t,r,n)});default:for(i=new Array(o-1),s=0;s<i.length;)i[s++]=arguments[s];return Vt.nextTick(function(){e.apply(null,i)})}}var qP=Kh.exports;const{Buffer:v1}=Gt;v1.allocUnsafe(0);v1.from([0]);qP.nextTick;w1("mqtt-packet:writeToStream");function Ka(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function KP(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function _p(e){let t,r,n;e.length!==2?(t=Ka,r=(a,l)=>Ka(e(a),l),n=(a,l)=>e(a)-l):(t=e===Ka||e===KP?e:YP,r=e,n=e);function o(a,l,u=0,c=a.length){if(u<c){if(t(l,l)!==0)return c;do{const d=u+c>>>1;r(a[d],l)<0?u=d+1:c=d}while(u<c)}return u}function i(a,l,u=0,c=a.length){if(u<c){if(t(l,l)!==0)return c;do{const d=u+c>>>1;r(a[d],l)<=0?u=d+1:c=d}while(u<c)}return u}function s(a,l,u=0,c=a.length){const d=o(a,l,u,c-1);return d>u&&n(a[d-1],l)>-n(a[d],l)?d-1:d}return{left:o,center:s,right:i}}function YP(){return 0}function zP(e){return e===null?NaN:+e}const GP=_p(Ka),QP=GP.right;_p(zP).center;function t3(e,t){let r,n;if(t===void 0)for(const o of e)o!=null&&(r===void 0?o>=o&&(r=n=o):(r>o&&(r=o),n<o&&(n=o)));else{let o=-1;for(let i of e)(i=t(i,++o,e))!=null&&(r===void 0?i>=i&&(r=n=i):(r>i&&(r=i),n<i&&(n=i)))}return[r,n]}class P0 extends Map{constructor(t,r=ZP){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(const[n,o]of t)this.set(n,o)}get(t){return super.get(L0(this,t))}has(t){return super.has(L0(this,t))}set(t,r){return super.set(XP(this,t),r)}delete(t){return super.delete(JP(this,t))}}function L0({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):r}function XP({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function JP({_intern:e,_key:t},r){const n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function ZP(e){return e!==null&&typeof e=="object"?e.valueOf():e}const eL=Math.sqrt(50),tL=Math.sqrt(10),rL=Math.sqrt(2);function _l(e,t,r){const n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),s=i>=eL?10:i>=tL?5:i>=rL?2:1;let a,l,u;return o<0?(u=Math.pow(10,-o)/s,a=Math.round(e*u),l=Math.round(t*u),a/u<e&&++a,l/u>t&&--l,u=-u):(u=Math.pow(10,o)*s,a=Math.round(e/u),l=Math.round(t/u),a*u<e&&++a,l*u>t&&--l),l<a&&.5<=r&&r<2?_l(e,t,r*2):[a,l,u]}function nL(e,t,r){if(t=+t,e=+e,r=+r,!(r>0))return[];if(e===t)return[e];const n=t<e,[o,i,s]=n?_l(t,e,r):_l(e,t,r);if(!(i>=o))return[];const a=i-o+1,l=new Array(a);if(n)if(s<0)for(let u=0;u<a;++u)l[u]=(i-u)/-s;else for(let u=0;u<a;++u)l[u]=(i-u)*s;else if(s<0)for(let u=0;u<a;++u)l[u]=(o+u)/-s;else for(let u=0;u<a;++u)l[u]=(o+u)*s;return l}function Yh(e,t,r){return t=+t,e=+e,r=+r,_l(e,t,r)[2]}function zh(e,t,r){t=+t,e=+e,r=+r;const n=t<e,o=n?Yh(t,e,r):Yh(e,t,r);return(n?-1:1)*(o<0?1/-o:o)}function r3(e,t){let r;if(t===void 0)for(const n of e)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r<o||r===void 0&&o>=o)&&(r=o)}return r}function iL(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,i=new Array(o);++n<o;)i[n]=e+n*r;return i}function oL(e){return e}var Ya=1,za=2,Gh=3,hs=4,B0=1e-6;function sL(e){return"translate("+e+",0)"}function aL(e){return"translate(0,"+e+")"}function lL(e){return t=>+e(t)}function uL(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function cL(){return!this.__axis}function bu(e,t){var r=[],n=null,o=null,i=6,s=6,a=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=e===Ya||e===hs?-1:1,c=e===hs||e===za?"x":"y",d=e===Ya||e===Gh?sL:aL;function p(m){var _=n??(t.ticks?t.ticks.apply(t,r):t.domain()),b=o??(t.tickFormat?t.tickFormat.apply(t,r):oL),T=Math.max(i,0)+a,N=t.range(),R=+N[0]+l,S=+N[N.length-1]+l,D=(t.bandwidth?uL:lL)(t.copy(),l),U=m.selection?m.selection():m,x=U.selectAll(".domain").data([null]),L=U.selectAll(".tick").data(_,t).order(),j=L.exit(),Y=L.enter().append("g").attr("class","tick"),se=L.select("line"),re=L.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),L=L.merge(Y),se=se.merge(Y.append("line").attr("stroke","currentColor").attr(c+"2",u*i)),re=re.merge(Y.append("text").attr("fill","currentColor").attr(c,u*T).attr("dy",e===Ya?"0em":e===Gh?"0.71em":"0.32em")),m!==U&&(x=x.transition(m),L=L.transition(m),se=se.transition(m),re=re.transition(m),j=j.transition(m).attr("opacity",B0).attr("transform",function(P){return isFinite(P=D(P))?d(P+l):this.getAttribute("transform")}),Y.attr("opacity",B0).attr("transform",function(P){var B=this.parentNode.__axis;return d((B&&isFinite(B=B(P))?B:D(P))+l)})),j.remove(),x.attr("d",e===hs||e===za?s?"M"+u*s+","+R+"H"+l+"V"+S+"H"+u*s:"M"+l+","+R+"V"+S:s?"M"+R+","+u*s+"V"+l+"H"+S+"V"+u*s:"M"+R+","+l+"H"+S),L.attr("opacity",1).attr("transform",function(P){return d(D(P)+l)}),se.attr(c+"2",u*i),re.attr(c,u*T).text(b),U.filter(cL).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===za?"start":e===hs?"end":"middle"),U.each(function(){this.__axis=D})}return p.scale=function(m){return arguments.length?(t=m,p):t},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(o=m,p):o},p.tickSize=function(m){return arguments.length?(i=s=+m,p):i},p.tickSizeInner=function(m){return arguments.length?(i=+m,p):i},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(a=+m,p):a},p.offset=function(m){return arguments.length?(l=+m,p):l},p}function n3(e){return bu(Ya,e)}function i3(e){return bu(za,e)}function o3(e){return bu(Gh,e)}function s3(e){return bu(hs,e)}var fL={value:()=>{}};function E1(){for(var e=0,t=arguments.length,r={},n;e<t;++e){if(!(n=arguments[e]+"")||n in r||/[\s.]/.test(n))throw new Error("illegal type: "+n);r[n]=[]}return new Ga(r)}function Ga(e){this._=e}function hL(e,t){return e.trim().split(/^|\s+/).map(function(r){var n="",o=r.indexOf(".");if(o>=0&&(n=r.slice(o+1),r=r.slice(0,o)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}Ga.prototype=E1.prototype={constructor:Ga,on:function(e,t){var r=this._,n=hL(e+"",r),o,i=-1,s=n.length;if(arguments.length<2){for(;++i<s;)if((o=(e=n[i]).type)&&(o=dL(r[o],e.name)))return o;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++i<s;)if(o=(e=n[i]).type)r[o]=D0(r[o],e.name,t);else if(t==null)for(o in r)r[o]=D0(r[o],e.name,null);return this},copy:function(){var e={},t=this._;for(var r in t)e[r]=t[r].slice();return new Ga(e)},call:function(e,t){if((o=arguments.length-2)>0)for(var r=new Array(o),n=0,o,i;n<o;++n)r[n]=arguments[n+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(i=this._[e],n=0,o=i.length;n<o;++n)i[n].value.apply(t,r)},apply:function(e,t,r){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var n=this._[e],o=0,i=n.length;o<i;++o)n[o].value.apply(t,r)}};function dL(e,t){for(var r=0,n=e.length,o;r<n;++r)if((o=e[r]).name===t)return o.value}function D0(e,t,r){for(var n=0,o=e.length;n<o;++n)if(e[n].name===t){e[n]=fL,e=e.slice(0,n).concat(e.slice(n+1));break}return r!=null&&e.push({name:t,value:r}),e}var Qh="http://www.w3.org/1999/xhtml";const $0={svg:"http://www.w3.org/2000/svg",xhtml:Qh,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function wu(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),$0.hasOwnProperty(t)?{space:$0[t],local:e}:e}function pL(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===Qh&&t.documentElement.namespaceURI===Qh?t.createElement(e):t.createElementNS(r,e)}}function gL(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function S1(e){var t=wu(e);return(t.local?gL:pL)(t)}function mL(){}function bp(e){return e==null?mL:function(){return this.querySelector(e)}}function yL(e){typeof e!="function"&&(e=bp(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=new Array(s),l,u,c=0;c<s;++c)(l=i[c])&&(u=e.call(l,l.__data__,c,i))&&("__data__"in l&&(u.__data__=l.__data__),a[c]=u);return new zt(n,this._parents)}function _L(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function bL(){return[]}function A1(e){return e==null?bL:function(){return this.querySelectorAll(e)}}function wL(e){return function(){return _L(e.apply(this,arguments))}}function vL(e){typeof e=="function"?e=wL(e):e=A1(e);for(var t=this._groups,r=t.length,n=[],o=[],i=0;i<r;++i)for(var s=t[i],a=s.length,l,u=0;u<a;++u)(l=s[u])&&(n.push(e.call(l,l.__data__,u,s)),o.push(l));return new zt(n,o)}function T1(e){return function(){return this.matches(e)}}function x1(e){return function(t){return t.matches(e)}}var EL=Array.prototype.find;function SL(e){return function(){return EL.call(this.children,e)}}function AL(){return this.firstElementChild}function TL(e){return this.select(e==null?AL:SL(typeof e=="function"?e:x1(e)))}var xL=Array.prototype.filter;function IL(){return Array.from(this.children)}function CL(e){return function(){return xL.call(this.children,e)}}function RL(e){return this.selectAll(e==null?IL:CL(typeof e=="function"?e:x1(e)))}function OL(e){typeof e!="function"&&(e=T1(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=[],l,u=0;u<s;++u)(l=i[u])&&e.call(l,l.__data__,u,i)&&a.push(l);return new zt(n,this._parents)}function I1(e){return new Array(e.length)}function kL(){return new zt(this._enter||this._groups.map(I1),this._parents)}function bl(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}bl.prototype={constructor:bl,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function NL(e){return function(){return e}}function ML(e,t,r,n,o,i){for(var s=0,a,l=t.length,u=i.length;s<u;++s)(a=t[s])?(a.__data__=i[s],n[s]=a):r[s]=new bl(e,i[s]);for(;s<l;++s)(a=t[s])&&(o[s]=a)}function PL(e,t,r,n,o,i,s){var a,l,u=new Map,c=t.length,d=i.length,p=new Array(c),m;for(a=0;a<c;++a)(l=t[a])&&(p[a]=m=s.call(l,l.__data__,a,t)+"",u.has(m)?o[a]=l:u.set(m,l));for(a=0;a<d;++a)m=s.call(e,i[a],a,i)+"",(l=u.get(m))?(n[a]=l,l.__data__=i[a],u.delete(m)):r[a]=new bl(e,i[a]);for(a=0;a<c;++a)(l=t[a])&&u.get(p[a])===l&&(o[a]=l)}function LL(e){return e.__data__}function BL(e,t){if(!arguments.length)return Array.from(this,LL);var r=t?PL:ML,n=this._parents,o=this._groups;typeof e!="function"&&(e=NL(e));for(var i=o.length,s=new Array(i),a=new Array(i),l=new Array(i),u=0;u<i;++u){var c=n[u],d=o[u],p=d.length,m=DL(e.call(c,c&&c.__data__,u,n)),_=m.length,b=a[u]=new Array(_),T=s[u]=new Array(_),N=l[u]=new Array(p);r(c,d,b,T,N,m,t);for(var R=0,S=0,D,U;R<_;++R)if(D=b[R]){for(R>=S&&(S=R+1);!(U=T[S])&&++S<_;);D._next=U||null}}return s=new zt(s,n),s._enter=a,s._exit=l,s}function DL(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function $L(){return new zt(this._exit||this._groups.map(I1),this._parents)}function UL(e,t,r){var n=this.enter(),o=this,i=this.exit();return typeof e=="function"?(n=e(n),n&&(n=n.selection())):n=n.append(e+""),t!=null&&(o=t(o),o&&(o=o.selection())),r==null?i.remove():r(i),n&&o?n.merge(o).order():o}function FL(e){for(var t=e.selection?e.selection():e,r=this._groups,n=t._groups,o=r.length,i=n.length,s=Math.min(o,i),a=new Array(o),l=0;l<s;++l)for(var u=r[l],c=n[l],d=u.length,p=a[l]=new Array(d),m,_=0;_<d;++_)(m=u[_]||c[_])&&(p[_]=m);for(;l<o;++l)a[l]=r[l];return new zt(a,this._parents)}function jL(){for(var e=this._groups,t=-1,r=e.length;++t<r;)for(var n=e[t],o=n.length-1,i=n[o],s;--o>=0;)(s=n[o])&&(i&&s.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(s,i),i=s);return this}function WL(e){e||(e=HL);function t(d,p){return d&&p?e(d.__data__,p.__data__):!d-!p}for(var r=this._groups,n=r.length,o=new Array(n),i=0;i<n;++i){for(var s=r[i],a=s.length,l=o[i]=new Array(a),u,c=0;c<a;++c)(u=s[c])&&(l[c]=u);l.sort(t)}return new zt(o,this._parents).order()}function HL(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function VL(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function qL(){return Array.from(this)}function KL(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var n=e[t],o=0,i=n.length;o<i;++o){var s=n[o];if(s)return s}return null}function YL(){let e=0;for(const t of this)++e;return e}function zL(){return!this.node()}function GL(e){for(var t=this._groups,r=0,n=t.length;r<n;++r)for(var o=t[r],i=0,s=o.length,a;i<s;++i)(a=o[i])&&e.call(a,a.__data__,i,o);return this}function QL(e){return function(){this.removeAttribute(e)}}function XL(e){return function(){this.removeAttributeNS(e.space,e.local)}}function JL(e,t){return function(){this.setAttribute(e,t)}}function ZL(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function eB(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttribute(e):this.setAttribute(e,r)}}function tB(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function rB(e,t){var r=wu(e);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((t==null?r.local?XL:QL:typeof t=="function"?r.local?tB:eB:r.local?ZL:JL)(r,t))}function C1(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function nB(e){return function(){this.style.removeProperty(e)}}function iB(e,t,r){return function(){this.style.setProperty(e,t,r)}}function oB(e,t,r){return function(){var n=t.apply(this,arguments);n==null?this.style.removeProperty(e):this.style.setProperty(e,n,r)}}function sB(e,t,r){return arguments.length>1?this.each((t==null?nB:typeof t=="function"?oB:iB)(e,t,r??"")):ko(this.node(),e)}function ko(e,t){return e.style.getPropertyValue(t)||C1(e).getComputedStyle(e,null).getPropertyValue(t)}function aB(e){return function(){delete this[e]}}function lB(e,t){return function(){this[e]=t}}function uB(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function cB(e,t){return arguments.length>1?this.each((t==null?aB:typeof t=="function"?uB:lB)(e,t)):this.node()[e]}function R1(e){return e.trim().split(/^|\s+/)}function wp(e){return e.classList||new O1(e)}function O1(e){this._node=e,this._names=R1(e.getAttribute("class")||"")}O1.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function k1(e,t){for(var r=wp(e),n=-1,o=t.length;++n<o;)r.add(t[n])}function N1(e,t){for(var r=wp(e),n=-1,o=t.length;++n<o;)r.remove(t[n])}function fB(e){return function(){k1(this,e)}}function hB(e){return function(){N1(this,e)}}function dB(e,t){return function(){(t.apply(this,arguments)?k1:N1)(this,e)}}function pB(e,t){var r=R1(e+"");if(arguments.length<2){for(var n=wp(this.node()),o=-1,i=r.length;++o<i;)if(!n.contains(r[o]))return!1;return!0}return this.each((typeof t=="function"?dB:t?fB:hB)(r,t))}function gB(){this.textContent=""}function mB(e){return function(){this.textContent=e}}function yB(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function _B(e){return arguments.length?this.each(e==null?gB:(typeof e=="function"?yB:mB)(e)):this.node().textContent}function bB(){this.innerHTML=""}function wB(e){return function(){this.innerHTML=e}}function vB(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function EB(e){return arguments.length?this.each(e==null?bB:(typeof e=="function"?vB:wB)(e)):this.node().innerHTML}function SB(){this.nextSibling&&this.parentNode.appendChild(this)}function AB(){return this.each(SB)}function TB(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function xB(){return this.each(TB)}function IB(e){var t=typeof e=="function"?e:S1(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function CB(){return null}function RB(e,t){var r=typeof e=="function"?e:S1(e),n=t==null?CB:typeof t=="function"?t:bp(t);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}function OB(){var e=this.parentNode;e&&e.removeChild(this)}function kB(){return this.each(OB)}function NB(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function MB(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function PB(e){return this.select(e?MB:NB)}function LB(e){return arguments.length?this.property("__data__",e):this.node().__data__}function BB(e){return function(t){e.call(this,t,this.__data__)}}function DB(e){return e.trim().split(/^|\s+/).map(function(t){var r="",n=t.indexOf(".");return n>=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function $B(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,o=t.length,i;r<o;++r)i=t[r],(!e.type||i.type===e.type)&&i.name===e.name?this.removeEventListener(i.type,i.listener,i.options):t[++n]=i;++n?t.length=n:delete this.__on}}}function UB(e,t,r){return function(){var n=this.__on,o,i=BB(t);if(n){for(var s=0,a=n.length;s<a;++s)if((o=n[s]).type===e.type&&o.name===e.name){this.removeEventListener(o.type,o.listener,o.options),this.addEventListener(o.type,o.listener=i,o.options=r),o.value=t;return}}this.addEventListener(e.type,i,r),o={type:e.type,name:e.name,value:t,listener:i,options:r},n?n.push(o):this.__on=[o]}}function FB(e,t,r){var n=DB(e+""),o,i=n.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var l=0,u=a.length,c;l<u;++l)for(o=0,c=a[l];o<i;++o)if((s=n[o]).type===c.type&&s.name===c.name)return c.value}return}for(a=t?UB:$B,o=0;o<i;++o)this.each(a(n[o],t,r));return this}function M1(e,t,r){var n=C1(e),o=n.CustomEvent;typeof o=="function"?o=new o(t,r):(o=n.document.createEvent("Event"),r?(o.initEvent(t,r.bubbles,r.cancelable),o.detail=r.detail):o.initEvent(t,!1,!1)),e.dispatchEvent(o)}function jB(e,t){return function(){return M1(this,e,t)}}function WB(e,t){return function(){return M1(this,e,t.apply(this,arguments))}}function HB(e,t){return this.each((typeof t=="function"?WB:jB)(e,t))}function*VB(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var n=e[t],o=0,i=n.length,s;o<i;++o)(s=n[o])&&(yield s)}var P1=[null];function zt(e,t){this._groups=e,this._parents=t}function Ys(){return new zt([[document.documentElement]],P1)}function qB(){return this}zt.prototype=Ys.prototype={constructor:zt,select:yL,selectAll:vL,selectChild:TL,selectChildren:RL,filter:OL,data:BL,enter:kL,exit:$L,join:UL,merge:FL,selection:qB,order:jL,sort:WL,call:VL,nodes:qL,node:KL,size:YL,empty:zL,each:GL,attr:rB,style:sB,property:cB,classed:pB,text:_B,html:EB,raise:AB,lower:xB,append:IB,insert:RB,remove:kB,clone:PB,datum:LB,on:FB,dispatch:HB,[Symbol.iterator]:VB};function a3(e){return typeof e=="string"?new zt([[document.querySelector(e)]],[document.documentElement]):new zt([[e]],P1)}function vp(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function L1(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}function zs(){}var Ns=.7,wl=1/Ns,bo="\\s*([+-]?\\d+)\\s*",Ms="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Pr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",KB=/^#([0-9a-f]{3,8})$/,YB=new RegExp(`^rgb\\(${bo},${bo},${bo}\\)$`),zB=new RegExp(`^rgb\\(${Pr},${Pr},${Pr}\\)$`),GB=new RegExp(`^rgba\\(${bo},${bo},${bo},${Ms}\\)$`),QB=new RegExp(`^rgba\\(${Pr},${Pr},${Pr},${Ms}\\)$`),XB=new RegExp(`^hsl\\(${Ms},${Pr},${Pr}\\)$`),JB=new RegExp(`^hsla\\(${Ms},${Pr},${Pr},${Ms}\\)$`),U0={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};vp(zs,Ci,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:F0,formatHex:F0,formatHex8:ZB,formatHsl:eD,formatRgb:j0,toString:j0});function F0(){return this.rgb().formatHex()}function ZB(){return this.rgb().formatHex8()}function eD(){return B1(this).formatHsl()}function j0(){return this.rgb().formatRgb()}function Ci(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=KB.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?W0(t):r===3?new Dt(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?wa(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?wa(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=YB.exec(e))?new Dt(t[1],t[2],t[3],1):(t=zB.exec(e))?new Dt(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=GB.exec(e))?wa(t[1],t[2],t[3],t[4]):(t=QB.exec(e))?wa(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=XB.exec(e))?q0(t[1],t[2]/100,t[3]/100,1):(t=JB.exec(e))?q0(t[1],t[2]/100,t[3]/100,t[4]):U0.hasOwnProperty(e)?W0(U0[e]):e==="transparent"?new Dt(NaN,NaN,NaN,0):null}function W0(e){return new Dt(e>>16&255,e>>8&255,e&255,1)}function wa(e,t,r,n){return n<=0&&(e=t=r=NaN),new Dt(e,t,r,n)}function tD(e){return e instanceof zs||(e=Ci(e)),e?(e=e.rgb(),new Dt(e.r,e.g,e.b,e.opacity)):new Dt}function Xh(e,t,r,n){return arguments.length===1?tD(e):new Dt(e,t,r,n??1)}function Dt(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}vp(Dt,Xh,L1(zs,{brighter(e){return e=e==null?wl:Math.pow(wl,e),new Dt(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ns:Math.pow(Ns,e),new Dt(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Dt(Si(this.r),Si(this.g),Si(this.b),vl(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:H0,formatHex:H0,formatHex8:rD,formatRgb:V0,toString:V0}));function H0(){return`#${gi(this.r)}${gi(this.g)}${gi(this.b)}`}function rD(){return`#${gi(this.r)}${gi(this.g)}${gi(this.b)}${gi((isNaN(this.opacity)?1:this.opacity)*255)}`}function V0(){const e=vl(this.opacity);return`${e===1?"rgb(":"rgba("}${Si(this.r)}, ${Si(this.g)}, ${Si(this.b)}${e===1?")":`, ${e})`}`}function vl(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Si(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function gi(e){return e=Si(e),(e<16?"0":"")+e.toString(16)}function q0(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new pr(e,t,r,n)}function B1(e){if(e instanceof pr)return new pr(e.h,e.s,e.l,e.opacity);if(e instanceof zs||(e=Ci(e)),!e)return new pr;if(e instanceof pr)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),i=Math.max(t,r,n),s=NaN,a=i-o,l=(i+o)/2;return a?(t===i?s=(r-n)/a+(r<n)*6:r===i?s=(n-t)/a+2:s=(t-r)/a+4,a/=l<.5?i+o:2-i-o,s*=60):a=l>0&&l<1?0:s,new pr(s,a,l,e.opacity)}function nD(e,t,r,n){return arguments.length===1?B1(e):new pr(e,t,r,n??1)}function pr(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}vp(pr,nD,L1(zs,{brighter(e){return e=e==null?wl:Math.pow(wl,e),new pr(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ns:Math.pow(Ns,e),new pr(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Dt(Pc(e>=240?e-240:e+120,o,n),Pc(e,o,n),Pc(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new pr(K0(this.h),va(this.s),va(this.l),vl(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=vl(this.opacity);return`${e===1?"hsl(":"hsla("}${K0(this.h)}, ${va(this.s)*100}%, ${va(this.l)*100}%${e===1?")":`, ${e})`}`}}));function K0(e){return e=(e||0)%360,e<0?e+360:e}function va(e){return Math.max(0,Math.min(1,e||0))}function Pc(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}const Ep=e=>()=>e;function iD(e,t){return function(r){return e+r*t}}function oD(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function sD(e){return(e=+e)==1?D1:function(t,r){return r-t?oD(t,r,e):Ep(isNaN(t)?r:t)}}function D1(e,t){var r=t-e;return r?iD(e,r):Ep(isNaN(e)?t:e)}const El=function e(t){var r=sD(t);function n(o,i){var s=r((o=Xh(o)).r,(i=Xh(i)).r),a=r(o.g,i.g),l=r(o.b,i.b),u=D1(o.opacity,i.opacity);return function(c){return o.r=s(c),o.g=a(c),o.b=l(c),o.opacity=u(c),o+""}}return n.gamma=e,n}(1);function aD(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),o;return function(i){for(o=0;o<r;++o)n[o]=e[o]*(1-i)+t[o]*i;return n}}function lD(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function uD(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,o=new Array(n),i=new Array(r),s;for(s=0;s<n;++s)o[s]=Sp(e[s],t[s]);for(;s<r;++s)i[s]=t[s];return function(a){for(s=0;s<n;++s)i[s]=o[s](a);return i}}function cD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}function hr(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}function fD(e,t){var r={},n={},o;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(o in t)o in e?r[o]=Sp(e[o],t[o]):n[o]=t[o];return function(i){for(o in r)n[o]=r[o](i);return n}}var Jh=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Lc=new RegExp(Jh.source,"g");function hD(e){return function(){return e}}function dD(e){return function(t){return e(t)+""}}function $1(e,t){var r=Jh.lastIndex=Lc.lastIndex=0,n,o,i,s=-1,a=[],l=[];for(e=e+"",t=t+"";(n=Jh.exec(e))&&(o=Lc.exec(t));)(i=o.index)>r&&(i=t.slice(r,i),a[s]?a[s]+=i:a[++s]=i),(n=n[0])===(o=o[0])?a[s]?a[s]+=o:a[++s]=o:(a[++s]=null,l.push({i:s,x:hr(n,o)})),r=Lc.lastIndex;return r<t.length&&(i=t.slice(r),a[s]?a[s]+=i:a[++s]=i),a.length<2?l[0]?dD(l[0].x):hD(t):(t=l.length,function(u){for(var c=0,d;c<t;++c)a[(d=l[c]).i]=d.x(u);return a.join("")})}function Sp(e,t){var r=typeof t,n;return t==null||r==="boolean"?Ep(t):(r==="number"?hr:r==="string"?(n=Ci(t))?(t=n,El):$1:t instanceof Ci?El:t instanceof Date?cD:lD(t)?aD:Array.isArray(t)?uD:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?fD:hr)(e,t)}function pD(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var Y0=180/Math.PI,Zh={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function U1(e,t,r,n,o,i){var s,a,l;return(s=Math.sqrt(e*e+t*t))&&(e/=s,t/=s),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(a=Math.sqrt(r*r+n*n))&&(r/=a,n/=a,l/=a),e*n<t*r&&(e=-e,t=-t,l=-l,s=-s),{translateX:o,translateY:i,rotate:Math.atan2(t,e)*Y0,skewX:Math.atan(l)*Y0,scaleX:s,scaleY:a}}var Ea;function gD(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?Zh:U1(t.a,t.b,t.c,t.d,t.e,t.f)}function mD(e){return e==null||(Ea||(Ea=document.createElementNS("http://www.w3.org/2000/svg","g")),Ea.setAttribute("transform",e),!(e=Ea.transform.baseVal.consolidate()))?Zh:(e=e.matrix,U1(e.a,e.b,e.c,e.d,e.e,e.f))}function F1(e,t,r,n){function o(u){return u.length?u.pop()+" ":""}function i(u,c,d,p,m,_){if(u!==d||c!==p){var b=m.push("translate(",null,t,null,r);_.push({i:b-4,x:hr(u,d)},{i:b-2,x:hr(c,p)})}else(d||p)&&m.push("translate("+d+t+p+r)}function s(u,c,d,p){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),p.push({i:d.push(o(d)+"rotate(",null,n)-2,x:hr(u,c)})):c&&d.push(o(d)+"rotate("+c+n)}function a(u,c,d,p){u!==c?p.push({i:d.push(o(d)+"skewX(",null,n)-2,x:hr(u,c)}):c&&d.push(o(d)+"skewX("+c+n)}function l(u,c,d,p,m,_){if(u!==d||c!==p){var b=m.push(o(m)+"scale(",null,",",null,")");_.push({i:b-4,x:hr(u,d)},{i:b-2,x:hr(c,p)})}else(d!==1||p!==1)&&m.push(o(m)+"scale("+d+","+p+")")}return function(u,c){var d=[],p=[];return u=e(u),c=e(c),i(u.translateX,u.translateY,c.translateX,c.translateY,d,p),s(u.rotate,c.rotate,d,p),a(u.skewX,c.skewX,d,p),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,d,p),u=c=null,function(m){for(var _=-1,b=p.length,T;++_<b;)d[(T=p[_]).i]=T.x(m);return d.join("")}}}var yD=F1(gD,"px, ","px)","deg)"),_D=F1(mD,", ",")",")"),No=0,ds=0,ns=0,j1=1e3,Sl,ps,Al=0,Ri=0,vu=0,Ps=typeof performance=="object"&&performance.now?performance:Date,W1=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Ap(){return Ri||(W1(bD),Ri=Ps.now()+vu)}function bD(){Ri=0}function Tl(){this._call=this._time=this._next=null}Tl.prototype=H1.prototype={constructor:Tl,restart:function(e,t,r){if(typeof e!="function")throw new TypeError("callback is not a function");r=(r==null?Ap():+r)+(t==null?0:+t),!this._next&&ps!==this&&(ps?ps._next=this:Sl=this,ps=this),this._call=e,this._time=r,ed()},stop:function(){this._call&&(this._call=null,this._time=1/0,ed())}};function H1(e,t,r){var n=new Tl;return n.restart(e,t,r),n}function wD(){Ap(),++No;for(var e=Sl,t;e;)(t=Ri-e._time)>=0&&e._call.call(void 0,t),e=e._next;--No}function z0(){Ri=(Al=Ps.now())+vu,No=ds=0;try{wD()}finally{No=0,ED(),Ri=0}}function vD(){var e=Ps.now(),t=e-Al;t>j1&&(vu-=t,Al=e)}function ED(){for(var e,t=Sl,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:Sl=r);ps=e,ed(n)}function ed(e){if(!No){ds&&(ds=clearTimeout(ds));var t=e-Ri;t>24?(e<1/0&&(ds=setTimeout(z0,e-Ps.now()-vu)),ns&&(ns=clearInterval(ns))):(ns||(Al=Ps.now(),ns=setInterval(vD,j1)),No=1,W1(z0))}}function G0(e,t,r){var n=new Tl;return t=t==null?0:+t,n.restart(o=>{n.stop(),e(o+t)},t,r),n}var SD=E1("start","end","cancel","interrupt"),AD=[],V1=0,Q0=1,td=2,Qa=3,X0=4,rd=5,Xa=6;function Eu(e,t,r,n,o,i){var s=e.__transition;if(!s)e.__transition={};else if(r in s)return;TD(e,r,{name:t,index:n,group:o,on:SD,tween:AD,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:V1})}function Tp(e,t){var r=br(e,t);if(r.state>V1)throw new Error("too late; already scheduled");return r}function $r(e,t){var r=br(e,t);if(r.state>Qa)throw new Error("too late; already running");return r}function br(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function TD(e,t,r){var n=e.__transition,o;n[t]=r,r.timer=H1(i,0,r.time);function i(u){r.state=Q0,r.timer.restart(s,r.delay,r.time),r.delay<=u&&s(u-r.delay)}function s(u){var c,d,p,m;if(r.state!==Q0)return l();for(c in n)if(m=n[c],m.name===r.name){if(m.state===Qa)return G0(s);m.state===X0?(m.state=Xa,m.timer.stop(),m.on.call("interrupt",e,e.__data__,m.index,m.group),delete n[c]):+c<t&&(m.state=Xa,m.timer.stop(),m.on.call("cancel",e,e.__data__,m.index,m.group),delete n[c])}if(G0(function(){r.state===Qa&&(r.state=X0,r.timer.restart(a,r.delay,r.time),a(u))}),r.state=td,r.on.call("start",e,e.__data__,r.index,r.group),r.state===td){for(r.state=Qa,o=new Array(p=r.tween.length),c=0,d=-1;c<p;++c)(m=r.tween[c].value.call(e,e.__data__,r.index,r.group))&&(o[++d]=m);o.length=d+1}}function a(u){for(var c=u<r.duration?r.ease.call(null,u/r.duration):(r.timer.restart(l),r.state=rd,1),d=-1,p=o.length;++d<p;)o[d].call(e,c);r.state===rd&&(r.on.call("end",e,e.__data__,r.index,r.group),l())}function l(){r.state=Xa,r.timer.stop(),delete n[t];for(var u in n)return;delete e.__transition}}function xD(e,t){var r=e.__transition,n,o,i=!0,s;if(r){t=t==null?null:t+"";for(s in r){if((n=r[s]).name!==t){i=!1;continue}o=n.state>td&&n.state<rd,n.state=Xa,n.timer.stop(),n.on.call(o?"interrupt":"cancel",e,e.__data__,n.index,n.group),delete r[s]}i&&delete e.__transition}}function ID(e){return this.each(function(){xD(this,e)})}function CD(e,t){var r,n;return function(){var o=$r(this,e),i=o.tween;if(i!==r){n=r=i;for(var s=0,a=n.length;s<a;++s)if(n[s].name===t){n=n.slice(),n.splice(s,1);break}}o.tween=n}}function RD(e,t,r){var n,o;if(typeof r!="function")throw new Error;return function(){var i=$r(this,e),s=i.tween;if(s!==n){o=(n=s).slice();for(var a={name:t,value:r},l=0,u=o.length;l<u;++l)if(o[l].name===t){o[l]=a;break}l===u&&o.push(a)}i.tween=o}}function OD(e,t){var r=this._id;if(e+="",arguments.length<2){for(var n=br(this.node(),r).tween,o=0,i=n.length,s;o<i;++o)if((s=n[o]).name===e)return s.value;return null}return this.each((t==null?CD:RD)(r,e,t))}function xp(e,t,r){var n=e._id;return e.each(function(){var o=$r(this,n);(o.value||(o.value={}))[t]=r.apply(this,arguments)}),function(o){return br(o,n).value[t]}}function q1(e,t){var r;return(typeof t=="number"?hr:t instanceof Ci?El:(r=Ci(t))?(t=r,El):$1)(e,t)}function kD(e){return function(){this.removeAttribute(e)}}function ND(e){return function(){this.removeAttributeNS(e.space,e.local)}}function MD(e,t,r){var n,o=r+"",i;return function(){var s=this.getAttribute(e);return s===o?null:s===n?i:i=t(n=s,r)}}function PD(e,t,r){var n,o=r+"",i;return function(){var s=this.getAttributeNS(e.space,e.local);return s===o?null:s===n?i:i=t(n=s,r)}}function LD(e,t,r){var n,o,i;return function(){var s,a=r(this),l;return a==null?void this.removeAttribute(e):(s=this.getAttribute(e),l=a+"",s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a)))}}function BD(e,t,r){var n,o,i;return function(){var s,a=r(this),l;return a==null?void this.removeAttributeNS(e.space,e.local):(s=this.getAttributeNS(e.space,e.local),l=a+"",s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a)))}}function DD(e,t){var r=wu(e),n=r==="transform"?_D:q1;return this.attrTween(e,typeof t=="function"?(r.local?BD:LD)(r,n,xp(this,"attr."+e,t)):t==null?(r.local?ND:kD)(r):(r.local?PD:MD)(r,n,t))}function $D(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}function UD(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}function FD(e,t){var r,n;function o(){var i=t.apply(this,arguments);return i!==n&&(r=(n=i)&&UD(e,i)),r}return o._value=t,o}function jD(e,t){var r,n;function o(){var i=t.apply(this,arguments);return i!==n&&(r=(n=i)&&$D(e,i)),r}return o._value=t,o}function WD(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;var n=wu(e);return this.tween(r,(n.local?FD:jD)(n,t))}function HD(e,t){return function(){Tp(this,e).delay=+t.apply(this,arguments)}}function VD(e,t){return t=+t,function(){Tp(this,e).delay=t}}function qD(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?HD:VD)(t,e)):br(this.node(),t).delay}function KD(e,t){return function(){$r(this,e).duration=+t.apply(this,arguments)}}function YD(e,t){return t=+t,function(){$r(this,e).duration=t}}function zD(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?KD:YD)(t,e)):br(this.node(),t).duration}function GD(e,t){if(typeof t!="function")throw new Error;return function(){$r(this,e).ease=t}}function QD(e){var t=this._id;return arguments.length?this.each(GD(t,e)):br(this.node(),t).ease}function XD(e,t){return function(){var r=t.apply(this,arguments);if(typeof r!="function")throw new Error;$r(this,e).ease=r}}function JD(e){if(typeof e!="function")throw new Error;return this.each(XD(this._id,e))}function ZD(e){typeof e!="function"&&(e=T1(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=[],l,u=0;u<s;++u)(l=i[u])&&e.call(l,l.__data__,u,i)&&a.push(l);return new un(n,this._parents,this._name,this._id)}function e$(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,n=t.length,o=r.length,i=Math.min(n,o),s=new Array(n),a=0;a<i;++a)for(var l=t[a],u=r[a],c=l.length,d=s[a]=new Array(c),p,m=0;m<c;++m)(p=l[m]||u[m])&&(d[m]=p);for(;a<n;++a)s[a]=t[a];return new un(s,this._parents,this._name,this._id)}function t$(e){return(e+"").trim().split(/^|\s+/).every(function(t){var r=t.indexOf(".");return r>=0&&(t=t.slice(0,r)),!t||t==="start"})}function r$(e,t,r){var n,o,i=t$(t)?Tp:$r;return function(){var s=i(this,e),a=s.on;a!==n&&(o=(n=a).copy()).on(t,r),s.on=o}}function n$(e,t){var r=this._id;return arguments.length<2?br(this.node(),r).on.on(e):this.each(r$(r,e,t))}function i$(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function o$(){return this.on("end.remove",i$(this._id))}function s$(e){var t=this._name,r=this._id;typeof e!="function"&&(e=bp(e));for(var n=this._groups,o=n.length,i=new Array(o),s=0;s<o;++s)for(var a=n[s],l=a.length,u=i[s]=new Array(l),c,d,p=0;p<l;++p)(c=a[p])&&(d=e.call(c,c.__data__,p,a))&&("__data__"in c&&(d.__data__=c.__data__),u[p]=d,Eu(u[p],t,r,p,u,br(c,r)));return new un(i,this._parents,t,r)}function a$(e){var t=this._name,r=this._id;typeof e!="function"&&(e=A1(e));for(var n=this._groups,o=n.length,i=[],s=[],a=0;a<o;++a)for(var l=n[a],u=l.length,c,d=0;d<u;++d)if(c=l[d]){for(var p=e.call(c,c.__data__,d,l),m,_=br(c,r),b=0,T=p.length;b<T;++b)(m=p[b])&&Eu(m,t,r,b,p,_);i.push(p),s.push(c)}return new un(i,s,t,r)}var l$=Ys.prototype.constructor;function u$(){return new l$(this._groups,this._parents)}function c$(e,t){var r,n,o;return function(){var i=ko(this,e),s=(this.style.removeProperty(e),ko(this,e));return i===s?null:i===r&&s===n?o:o=t(r=i,n=s)}}function K1(e){return function(){this.style.removeProperty(e)}}function f$(e,t,r){var n,o=r+"",i;return function(){var s=ko(this,e);return s===o?null:s===n?i:i=t(n=s,r)}}function h$(e,t,r){var n,o,i;return function(){var s=ko(this,e),a=r(this),l=a+"";return a==null&&(l=a=(this.style.removeProperty(e),ko(this,e))),s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a))}}function d$(e,t){var r,n,o,i="style."+t,s="end."+i,a;return function(){var l=$r(this,e),u=l.on,c=l.value[i]==null?a||(a=K1(t)):void 0;(u!==r||o!==c)&&(n=(r=u).copy()).on(s,o=c),l.on=n}}function p$(e,t,r){var n=(e+="")=="transform"?yD:q1;return t==null?this.styleTween(e,c$(e,n)).on("end.style."+e,K1(e)):typeof t=="function"?this.styleTween(e,h$(e,n,xp(this,"style."+e,t))).each(d$(this._id,e)):this.styleTween(e,f$(e,n,t),r).on("end.style."+e,null)}function g$(e,t,r){return function(n){this.style.setProperty(e,t.call(this,n),r)}}function m$(e,t,r){var n,o;function i(){var s=t.apply(this,arguments);return s!==o&&(n=(o=s)&&g$(e,s,r)),n}return i._value=t,i}function y$(e,t,r){var n="style."+(e+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,m$(e,t,r??""))}function _$(e){return function(){this.textContent=e}}function b$(e){return function(){var t=e(this);this.textContent=t??""}}function w$(e){return this.tween("text",typeof e=="function"?b$(xp(this,"text",e)):_$(e==null?"":e+""))}function v$(e){return function(t){this.textContent=e.call(this,t)}}function E$(e){var t,r;function n(){var o=e.apply(this,arguments);return o!==r&&(t=(r=o)&&v$(o)),t}return n._value=e,n}function S$(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,E$(e))}function A$(){for(var e=this._name,t=this._id,r=Y1(),n=this._groups,o=n.length,i=0;i<o;++i)for(var s=n[i],a=s.length,l,u=0;u<a;++u)if(l=s[u]){var c=br(l,t);Eu(l,e,r,u,s,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new un(n,this._parents,e,r)}function T$(){var e,t,r=this,n=r._id,o=r.size();return new Promise(function(i,s){var a={value:s},l={value:function(){--o===0&&i()}};r.each(function(){var u=$r(this,n),c=u.on;c!==e&&(t=(e=c).copy(),t._.cancel.push(a),t._.interrupt.push(a),t._.end.push(l)),u.on=t}),o===0&&i()})}var x$=0;function un(e,t,r,n){this._groups=e,this._parents=t,this._name=r,this._id=n}function Y1(){return++x$}var jr=Ys.prototype;un.prototype={constructor:un,select:s$,selectAll:a$,selectChild:jr.selectChild,selectChildren:jr.selectChildren,filter:ZD,merge:e$,selection:u$,transition:A$,call:jr.call,nodes:jr.nodes,node:jr.node,size:jr.size,empty:jr.empty,each:jr.each,on:n$,attr:DD,attrTween:WD,style:p$,styleTween:y$,text:w$,textTween:S$,remove:o$,tween:OD,delay:qD,duration:zD,ease:QD,easeVarying:JD,end:T$,[Symbol.iterator]:jr[Symbol.iterator]};const l3=e=>+e;function I$(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var C$={time:null,delay:0,duration:250,ease:I$};function R$(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function O$(e){var t,r;e instanceof un?(t=e._id,e=e._name):(t=Y1(),(r=C$).time=Ap(),e=e==null?null:e+"");for(var n=this._groups,o=n.length,i=0;i<o;++i)for(var s=n[i],a=s.length,l,u=0;u<a;++u)(l=s[u])&&Eu(l,e,t,u,s,r||R$(l,t));return new un(n,this._parents,e,t)}Ys.prototype.interrupt=ID;Ys.prototype.transition=O$;const nd=Math.PI,id=2*nd,ii=1e-6,k$=id-ii;function z1(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function N$(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return z1;const r=10**t;return function(n){this._+=n[0];for(let o=1,i=n.length;o<i;++o)this._+=Math.round(arguments[o]*r)/r+n[o]}}class M${constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?z1:N$(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,o){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+o}`}bezierCurveTo(t,r,n,o,i,s){this._append`C${+t},${+r},${+n},${+o},${this._x1=+i},${this._y1=+s}`}arcTo(t,r,n,o,i){if(t=+t,r=+r,n=+n,o=+o,i=+i,i<0)throw new Error(`negative radius: ${i}`);let s=this._x1,a=this._y1,l=n-t,u=o-r,c=s-t,d=a-r,p=c*c+d*d;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>ii)if(!(Math.abs(d*l-u*c)>ii)||!i)this._append`L${this._x1=t},${this._y1=r}`;else{let m=n-s,_=o-a,b=l*l+u*u,T=m*m+_*_,N=Math.sqrt(b),R=Math.sqrt(p),S=i*Math.tan((nd-Math.acos((b+p-T)/(2*N*R)))/2),D=S/R,U=S/N;Math.abs(D-1)>ii&&this._append`L${t+D*c},${r+D*d}`,this._append`A${i},${i},0,0,${+(d*m>c*_)},${this._x1=t+U*l},${this._y1=r+U*u}`}}arc(t,r,n,o,i,s){if(t=+t,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let a=n*Math.cos(o),l=n*Math.sin(o),u=t+a,c=r+l,d=1^s,p=s?o-i:i-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>ii||Math.abs(this._y1-c)>ii)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%id+id),p>k$?this._append`A${n},${n},0,1,${d},${t-a},${r-l}A${n},${n},0,1,${d},${this._x1=u},${this._y1=c}`:p>ii&&this._append`A${n},${n},0,${+(p>=nd)},${d},${this._x1=t+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}}function P$(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function xl(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Mo(e){return e=xl(Math.abs(e)),e?e[1]:NaN}function L$(e,t){return function(r,n){for(var o=r.length,i=[],s=0,a=e[0],l=0;o>0&&a>0&&(l+a+1>n&&(a=Math.max(1,n-l)),i.push(r.substring(o-=a,o+a)),!((l+=a+1)>n));)a=e[s=(s+1)%e.length];return i.reverse().join(t)}}function B$(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var D$=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Il(e){if(!(t=D$.exec(e)))throw new Error("invalid format: "+e);var t;return new Ip({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Il.prototype=Ip.prototype;function Ip(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Ip.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function $$(e){e:for(var t=e.length,r=1,n=-1,o;r<t;++r)switch(e[r]){case".":n=o=r;break;case"0":n===0&&(n=r),o=r;break;default:if(!+e[r])break e;n>0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var G1;function U$(e,t){var r=xl(e,t);if(!r)return e+"";var n=r[0],o=r[1],i=o-(G1=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,s=n.length;return i===s?n:i>s?n+new Array(i-s+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+xl(e,Math.max(0,t+i-1))[0]}function J0(e,t){var r=xl(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}const Z0={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:P$,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>J0(e*100,t),r:J0,s:U$,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function ey(e){return e}var ty=Array.prototype.map,ry=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function F$(e){var t=e.grouping===void 0||e.thousands===void 0?ey:L$(ty.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?ey:B$(ty.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",a=e.minus===void 0?"−":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function u(d){d=Il(d);var p=d.fill,m=d.align,_=d.sign,b=d.symbol,T=d.zero,N=d.width,R=d.comma,S=d.precision,D=d.trim,U=d.type;U==="n"?(R=!0,U="g"):Z0[U]||(S===void 0&&(S=12),D=!0,U="g"),(T||p==="0"&&m==="=")&&(T=!0,p="0",m="=");var x=b==="$"?r:b==="#"&&/[boxX]/.test(U)?"0"+U.toLowerCase():"",L=b==="$"?n:/[%p]/.test(U)?s:"",j=Z0[U],Y=/[defgprs%]/.test(U);S=S===void 0?6:/[gprs]/.test(U)?Math.max(1,Math.min(21,S)):Math.max(0,Math.min(20,S));function se(re){var P=x,B=L,oe,ne,ue;if(U==="c")B=j(re)+B,re="";else{re=+re;var ae=re<0||1/re<0;if(re=isNaN(re)?l:j(Math.abs(re),S),D&&(re=$$(re)),ae&&+re==0&&_!=="+"&&(ae=!1),P=(ae?_==="("?_:a:_==="-"||_==="("?"":_)+P,B=(U==="s"?ry[8+G1/3]:"")+B+(ae&&_==="("?")":""),Y){for(oe=-1,ne=re.length;++oe<ne;)if(ue=re.charCodeAt(oe),48>ue||ue>57){B=(ue===46?o+re.slice(oe+1):re.slice(oe))+B,re=re.slice(0,oe);break}}}R&&!T&&(re=t(re,1/0));var z=P.length+re.length+B.length,pe=z<N?new Array(N-z+1).join(p):"";switch(R&&T&&(re=t(pe+re,pe.length?N-B.length:1/0),pe=""),m){case"<":re=P+re+B+pe;break;case"=":re=P+pe+re+B;break;case"^":re=pe.slice(0,z=pe.length>>1)+P+re+B+pe.slice(z);break;default:re=pe+P+re+B;break}return i(re)}return se.toString=function(){return d+""},se}function c(d,p){var m=u((d=Il(d),d.type="f",d)),_=Math.max(-8,Math.min(8,Math.floor(Mo(p)/3)))*3,b=Math.pow(10,-_),T=ry[8+_/3];return function(N){return m(b*N)+T}}return{format:u,formatPrefix:c}}var Sa,Q1,X1;j$({thousands:",",grouping:[3],currency:["$",""]});function j$(e){return Sa=F$(e),Q1=Sa.format,X1=Sa.formatPrefix,Sa}function W$(e){return Math.max(0,-Mo(Math.abs(e)))}function H$(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Mo(t)/3)))*3-Mo(Math.abs(e)))}function V$(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Mo(t)-Mo(e))+1}function Su(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}const ny=Symbol("implicit");function J1(){var e=new P0,t=[],r=[],n=ny;function o(i){let s=e.get(i);if(s===void 0){if(n!==ny)return n;e.set(i,s=t.push(i)-1)}return r[s%r.length]}return o.domain=function(i){if(!arguments.length)return t.slice();t=[],e=new P0;for(const s of i)e.has(s)||e.set(s,t.push(s)-1);return o},o.range=function(i){return arguments.length?(r=Array.from(i),o):r.slice()},o.unknown=function(i){return arguments.length?(n=i,o):n},o.copy=function(){return J1(t,r).unknown(n)},Su.apply(o,arguments),o}function q$(){var e=J1().unknown(void 0),t=e.domain,r=e.range,n=0,o=1,i,s,a=!1,l=0,u=0,c=.5;delete e.unknown;function d(){var p=t().length,m=o<n,_=m?o:n,b=m?n:o;i=(b-_)/Math.max(1,p-l+u*2),a&&(i=Math.floor(i)),_+=(b-_-i*(p-l))*c,s=i*(1-l),a&&(_=Math.round(_),s=Math.round(s));var T=iL(p).map(function(N){return _+i*N});return r(m?T.reverse():T)}return e.domain=function(p){return arguments.length?(t(p),d()):t()},e.range=function(p){return arguments.length?([n,o]=p,n=+n,o=+o,d()):[n,o]},e.rangeRound=function(p){return[n,o]=p,n=+n,o=+o,a=!0,d()},e.bandwidth=function(){return s},e.step=function(){return i},e.round=function(p){return arguments.length?(a=!!p,d()):a},e.padding=function(p){return arguments.length?(l=Math.min(1,u=+p),d()):l},e.paddingInner=function(p){return arguments.length?(l=Math.min(1,p),d()):l},e.paddingOuter=function(p){return arguments.length?(u=+p,d()):u},e.align=function(p){return arguments.length?(c=Math.max(0,Math.min(1,p)),d()):c},e.copy=function(){return q$(t(),[n,o]).round(a).paddingInner(l).paddingOuter(u).align(c)},Su.apply(d(),arguments)}function K$(e){return function(){return e}}function Y$(e){return+e}var iy=[0,1];function so(e){return e}function od(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:K$(isNaN(t)?NaN:.5)}function z$(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function G$(e,t,r){var n=e[0],o=e[1],i=t[0],s=t[1];return o<n?(n=od(o,n),i=r(s,i)):(n=od(n,o),i=r(i,s)),function(a){return i(n(a))}}function Q$(e,t,r){var n=Math.min(e.length,t.length)-1,o=new Array(n),i=new Array(n),s=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++s<n;)o[s]=od(e[s],e[s+1]),i[s]=r(t[s],t[s+1]);return function(a){var l=QP(e,a,1,n)-1;return i[l](o[l](a))}}function Z1(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function X$(){var e=iy,t=iy,r=Sp,n,o,i,s=so,a,l,u;function c(){var p=Math.min(e.length,t.length);return s!==so&&(s=z$(e[0],e[p-1])),a=p>2?Q$:G$,l=u=null,d}function d(p){return p==null||isNaN(p=+p)?i:(l||(l=a(e.map(n),t,r)))(n(s(p)))}return d.invert=function(p){return s(o((u||(u=a(t,e.map(n),hr)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,Y$),c()):e.slice()},d.range=function(p){return arguments.length?(t=Array.from(p),c()):t.slice()},d.rangeRound=function(p){return t=Array.from(p),r=pD,c()},d.clamp=function(p){return arguments.length?(s=p?!0:so,c()):s!==so},d.interpolate=function(p){return arguments.length?(r=p,c()):r},d.unknown=function(p){return arguments.length?(i=p,d):i},function(p,m){return n=p,o=m,c()}}function eE(){return X$()(so,so)}function J$(e,t,r,n){var o=zh(e,t,r),i;switch(n=Il(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(i=H$(o,s))&&(n.precision=i),X1(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=V$(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=W$(o))&&(n.precision=i-(n.type==="%")*2);break}}return Q1(n)}function Z$(e){var t=e.domain;return e.ticks=function(r){var n=t();return nL(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return J$(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,i=n.length-1,s=n[o],a=n[i],l,u,c=10;for(a<s&&(u=s,s=a,a=u,u=o,o=i,i=u);c-- >0;){if(u=Yh(s,a,r),u===l)return n[o]=s,n[i]=a,t(n);if(u>0)s=Math.floor(s/u)*u,a=Math.ceil(a/u)*u;else if(u<0)s=Math.ceil(s*u)/u,a=Math.floor(a*u)/u;else break;l=u}return e},e}function eU(){var e=eE();return e.copy=function(){return Z1(e,eU())},Su.apply(e,arguments),Z$(e)}function tU(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],i=e[n],s;return i<o&&(s=r,r=n,n=s,s=o,o=i,i=s),e[r]=t.floor(o),e[n]=t.ceil(i),e}const Bc=new Date,Dc=new Date;function ht(e,t,r,n){function o(i){return e(i=arguments.length===0?new Date:new Date(+i)),i}return o.floor=i=>(e(i=new Date(+i)),i),o.ceil=i=>(e(i=new Date(i-1)),t(i,1),e(i),i),o.round=i=>{const s=o(i),a=o.ceil(i);return i-s<a-i?s:a},o.offset=(i,s)=>(t(i=new Date(+i),s==null?1:Math.floor(s)),i),o.range=(i,s,a)=>{const l=[];if(i=o.ceil(i),a=a==null?1:Math.floor(a),!(i<s)||!(a>0))return l;let u;do l.push(u=new Date(+i)),t(i,a),e(i);while(u<i&&i<s);return l},o.filter=i=>ht(s=>{if(s>=s)for(;e(s),!i(s);)s.setTime(s-1)},(s,a)=>{if(s>=s)if(a<0)for(;++a<=0;)for(;t(s,-1),!i(s););else for(;--a>=0;)for(;t(s,1),!i(s););}),r&&(o.count=(i,s)=>(Bc.setTime(+i),Dc.setTime(+s),e(Bc),e(Dc),Math.floor(r(Bc,Dc))),o.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?o.filter(n?s=>n(s)%i===0:s=>o.count(0,s)%i===0):o)),o}const Cl=ht(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Cl.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?ht(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Cl);Cl.range;const Xr=1e3,er=Xr*60,Jr=er*60,cn=Jr*24,Cp=cn*7,oy=cn*30,$c=cn*365,ao=ht(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*Xr)},(e,t)=>(t-e)/Xr,e=>e.getUTCSeconds());ao.range;const Rp=ht(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Xr)},(e,t)=>{e.setTime(+e+t*er)},(e,t)=>(t-e)/er,e=>e.getMinutes());Rp.range;const rU=ht(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*er)},(e,t)=>(t-e)/er,e=>e.getUTCMinutes());rU.range;const Op=ht(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Xr-e.getMinutes()*er)},(e,t)=>{e.setTime(+e+t*Jr)},(e,t)=>(t-e)/Jr,e=>e.getHours());Op.range;const nU=ht(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*Jr)},(e,t)=>(t-e)/Jr,e=>e.getUTCHours());nU.range;const Gs=ht(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*er)/cn,e=>e.getDate()-1);Gs.range;const kp=ht(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/cn,e=>e.getUTCDate()-1);kp.range;const iU=ht(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/cn,e=>Math.floor(e/cn));iU.range;function Vi(e){return ht(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*er)/Cp)}const Au=Vi(0),Rl=Vi(1),oU=Vi(2),sU=Vi(3),Po=Vi(4),aU=Vi(5),lU=Vi(6);Au.range;Rl.range;oU.range;sU.range;Po.range;aU.range;lU.range;function qi(e){return ht(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/Cp)}const tE=qi(0),Ol=qi(1),uU=qi(2),cU=qi(3),Lo=qi(4),fU=qi(5),hU=qi(6);tE.range;Ol.range;uU.range;cU.range;Lo.range;fU.range;hU.range;const Np=ht(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Np.range;const dU=ht(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());dU.range;const fn=ht(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());fn.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:ht(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});fn.range;const Oi=ht(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Oi.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:ht(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});Oi.range;function pU(e,t,r,n,o,i){const s=[[ao,1,Xr],[ao,5,5*Xr],[ao,15,15*Xr],[ao,30,30*Xr],[i,1,er],[i,5,5*er],[i,15,15*er],[i,30,30*er],[o,1,Jr],[o,3,3*Jr],[o,6,6*Jr],[o,12,12*Jr],[n,1,cn],[n,2,2*cn],[r,1,Cp],[t,1,oy],[t,3,3*oy],[e,1,$c]];function a(u,c,d){const p=c<u;p&&([u,c]=[c,u]);const m=d&&typeof d.range=="function"?d:l(u,c,d),_=m?m.range(u,+c+1):[];return p?_.reverse():_}function l(u,c,d){const p=Math.abs(c-u)/d,m=_p(([,,T])=>T).right(s,p);if(m===s.length)return e.every(zh(u/$c,c/$c,d));if(m===0)return Cl.every(Math.max(zh(u,c,d),1));const[_,b]=s[p/s[m-1][2]<s[m][2]/p?m-1:m];return _.every(b)}return[a,l]}const[gU,mU]=pU(fn,Np,Au,Gs,Op,Rp);function Uc(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Fc(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function is(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function yU(e){var t=e.dateTime,r=e.date,n=e.time,o=e.periods,i=e.days,s=e.shortDays,a=e.months,l=e.shortMonths,u=os(o),c=ss(o),d=os(i),p=ss(i),m=os(s),_=ss(s),b=os(a),T=ss(a),N=os(l),R=ss(l),S={a:ae,A:z,b:pe,B:de,c:null,d:fy,e:fy,f:FU,g:QU,G:JU,H:DU,I:$U,j:UU,L:rE,m:jU,M:WU,p:ge,q:O,Q:py,s:gy,S:HU,u:VU,U:qU,V:KU,w:YU,W:zU,x:null,X:null,y:GU,Y:XU,Z:ZU,"%":dy},D={a:ie,A:me,b:ve,B:ye,c:null,d:hy,e:hy,f:nF,g:dF,G:gF,H:eF,I:tF,j:rF,L:iE,m:iF,M:oF,p:q,q:F,Q:py,s:gy,S:sF,u:aF,U:lF,V:uF,w:cF,W:fF,x:null,X:null,y:hF,Y:pF,Z:mF,"%":dy},U={a:se,A:re,b:P,B,c:oe,d:uy,e:uy,f:MU,g:ly,G:ay,H:cy,I:cy,j:RU,L:NU,m:CU,M:OU,p:Y,q:IU,Q:LU,s:BU,S:kU,u:EU,U:SU,V:AU,w:vU,W:TU,x:ne,X:ue,y:ly,Y:ay,Z:xU,"%":PU};S.x=x(r,S),S.X=x(n,S),S.c=x(t,S),D.x=x(r,D),D.X=x(n,D),D.c=x(t,D);function x(X,he){return function(ce){var Z=[],v=-1,A=0,E=X.length,k,M,ee;for(ce instanceof Date||(ce=new Date(+ce));++v<E;)X.charCodeAt(v)===37&&(Z.push(X.slice(A,v)),(M=sy[k=X.charAt(++v)])!=null?k=X.charAt(++v):M=k==="e"?" ":"0",(ee=he[k])&&(k=ee(ce,M)),Z.push(k),A=v+1);return Z.push(X.slice(A,v)),Z.join("")}}function L(X,he){return function(ce){var Z=is(1900,void 0,1),v=j(Z,X,ce+="",0),A,E;if(v!=ce.length)return null;if("Q"in Z)return new Date(Z.Q);if("s"in Z)return new Date(Z.s*1e3+("L"in Z?Z.L:0));if(he&&!("Z"in Z)&&(Z.Z=0),"p"in Z&&(Z.H=Z.H%12+Z.p*12),Z.m===void 0&&(Z.m="q"in Z?Z.q:0),"V"in Z){if(Z.V<1||Z.V>53)return null;"w"in Z||(Z.w=1),"Z"in Z?(A=Fc(is(Z.y,0,1)),E=A.getUTCDay(),A=E>4||E===0?Ol.ceil(A):Ol(A),A=kp.offset(A,(Z.V-1)*7),Z.y=A.getUTCFullYear(),Z.m=A.getUTCMonth(),Z.d=A.getUTCDate()+(Z.w+6)%7):(A=Uc(is(Z.y,0,1)),E=A.getDay(),A=E>4||E===0?Rl.ceil(A):Rl(A),A=Gs.offset(A,(Z.V-1)*7),Z.y=A.getFullYear(),Z.m=A.getMonth(),Z.d=A.getDate()+(Z.w+6)%7)}else("W"in Z||"U"in Z)&&("w"in Z||(Z.w="u"in Z?Z.u%7:"W"in Z?1:0),E="Z"in Z?Fc(is(Z.y,0,1)).getUTCDay():Uc(is(Z.y,0,1)).getDay(),Z.m=0,Z.d="W"in Z?(Z.w+6)%7+Z.W*7-(E+5)%7:Z.w+Z.U*7-(E+6)%7);return"Z"in Z?(Z.H+=Z.Z/100|0,Z.M+=Z.Z%100,Fc(Z)):Uc(Z)}}function j(X,he,ce,Z){for(var v=0,A=he.length,E=ce.length,k,M;v<A;){if(Z>=E)return-1;if(k=he.charCodeAt(v++),k===37){if(k=he.charAt(v++),M=U[k in sy?he.charAt(v++):k],!M||(Z=M(X,ce,Z))<0)return-1}else if(k!=ce.charCodeAt(Z++))return-1}return Z}function Y(X,he,ce){var Z=u.exec(he.slice(ce));return Z?(X.p=c.get(Z[0].toLowerCase()),ce+Z[0].length):-1}function se(X,he,ce){var Z=m.exec(he.slice(ce));return Z?(X.w=_.get(Z[0].toLowerCase()),ce+Z[0].length):-1}function re(X,he,ce){var Z=d.exec(he.slice(ce));return Z?(X.w=p.get(Z[0].toLowerCase()),ce+Z[0].length):-1}function P(X,he,ce){var Z=N.exec(he.slice(ce));return Z?(X.m=R.get(Z[0].toLowerCase()),ce+Z[0].length):-1}function B(X,he,ce){var Z=b.exec(he.slice(ce));return Z?(X.m=T.get(Z[0].toLowerCase()),ce+Z[0].length):-1}function oe(X,he,ce){return j(X,t,he,ce)}function ne(X,he,ce){return j(X,r,he,ce)}function ue(X,he,ce){return j(X,n,he,ce)}function ae(X){return s[X.getDay()]}function z(X){return i[X.getDay()]}function pe(X){return l[X.getMonth()]}function de(X){return a[X.getMonth()]}function ge(X){return o[+(X.getHours()>=12)]}function O(X){return 1+~~(X.getMonth()/3)}function ie(X){return s[X.getUTCDay()]}function me(X){return i[X.getUTCDay()]}function ve(X){return l[X.getUTCMonth()]}function ye(X){return a[X.getUTCMonth()]}function q(X){return o[+(X.getUTCHours()>=12)]}function F(X){return 1+~~(X.getUTCMonth()/3)}return{format:function(X){var he=x(X+="",S);return he.toString=function(){return X},he},parse:function(X){var he=L(X+="",!1);return he.toString=function(){return X},he},utcFormat:function(X){var he=x(X+="",D);return he.toString=function(){return X},he},utcParse:function(X){var he=L(X+="",!0);return he.toString=function(){return X},he}}}var sy={"-":"",_:" ",0:"0"},pt=/^\s*\d+/,_U=/^%/,bU=/[\\^$*+?|[\]().{}]/g;function je(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",i=o.length;return n+(i<r?new Array(r-i+1).join(t)+o:o)}function wU(e){return e.replace(bU,"\\$&")}function os(e){return new RegExp("^(?:"+e.map(wU).join("|")+")","i")}function ss(e){return new Map(e.map((t,r)=>[t.toLowerCase(),r]))}function vU(e,t,r){var n=pt.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function EU(e,t,r){var n=pt.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function SU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function AU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function TU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function ay(e,t,r){var n=pt.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function ly(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function xU(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function IU(e,t,r){var n=pt.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function CU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function uy(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function RU(e,t,r){var n=pt.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function cy(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function OU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function kU(e,t,r){var n=pt.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function NU(e,t,r){var n=pt.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function MU(e,t,r){var n=pt.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function PU(e,t,r){var n=_U.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function LU(e,t,r){var n=pt.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function BU(e,t,r){var n=pt.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function fy(e,t){return je(e.getDate(),t,2)}function DU(e,t){return je(e.getHours(),t,2)}function $U(e,t){return je(e.getHours()%12||12,t,2)}function UU(e,t){return je(1+Gs.count(fn(e),e),t,3)}function rE(e,t){return je(e.getMilliseconds(),t,3)}function FU(e,t){return rE(e,t)+"000"}function jU(e,t){return je(e.getMonth()+1,t,2)}function WU(e,t){return je(e.getMinutes(),t,2)}function HU(e,t){return je(e.getSeconds(),t,2)}function VU(e){var t=e.getDay();return t===0?7:t}function qU(e,t){return je(Au.count(fn(e)-1,e),t,2)}function nE(e){var t=e.getDay();return t>=4||t===0?Po(e):Po.ceil(e)}function KU(e,t){return e=nE(e),je(Po.count(fn(e),e)+(fn(e).getDay()===4),t,2)}function YU(e){return e.getDay()}function zU(e,t){return je(Rl.count(fn(e)-1,e),t,2)}function GU(e,t){return je(e.getFullYear()%100,t,2)}function QU(e,t){return e=nE(e),je(e.getFullYear()%100,t,2)}function XU(e,t){return je(e.getFullYear()%1e4,t,4)}function JU(e,t){var r=e.getDay();return e=r>=4||r===0?Po(e):Po.ceil(e),je(e.getFullYear()%1e4,t,4)}function ZU(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+je(t/60|0,"0",2)+je(t%60,"0",2)}function hy(e,t){return je(e.getUTCDate(),t,2)}function eF(e,t){return je(e.getUTCHours(),t,2)}function tF(e,t){return je(e.getUTCHours()%12||12,t,2)}function rF(e,t){return je(1+kp.count(Oi(e),e),t,3)}function iE(e,t){return je(e.getUTCMilliseconds(),t,3)}function nF(e,t){return iE(e,t)+"000"}function iF(e,t){return je(e.getUTCMonth()+1,t,2)}function oF(e,t){return je(e.getUTCMinutes(),t,2)}function sF(e,t){return je(e.getUTCSeconds(),t,2)}function aF(e){var t=e.getUTCDay();return t===0?7:t}function lF(e,t){return je(tE.count(Oi(e)-1,e),t,2)}function oE(e){var t=e.getUTCDay();return t>=4||t===0?Lo(e):Lo.ceil(e)}function uF(e,t){return e=oE(e),je(Lo.count(Oi(e),e)+(Oi(e).getUTCDay()===4),t,2)}function cF(e){return e.getUTCDay()}function fF(e,t){return je(Ol.count(Oi(e)-1,e),t,2)}function hF(e,t){return je(e.getUTCFullYear()%100,t,2)}function dF(e,t){return e=oE(e),je(e.getUTCFullYear()%100,t,2)}function pF(e,t){return je(e.getUTCFullYear()%1e4,t,4)}function gF(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Lo(e):Lo.ceil(e),je(e.getUTCFullYear()%1e4,t,4)}function mF(){return"+0000"}function dy(){return"%"}function py(e){return+e}function gy(e){return Math.floor(+e/1e3)}var Xi,sE,yF;_F({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function _F(e){return Xi=yU(e),sE=Xi.format,yF=Xi.parse,Xi.utcFormat,Xi.utcParse,Xi}function bF(e){return new Date(e)}function wF(e){return e instanceof Date?+e:+new Date(+e)}function aE(e,t,r,n,o,i,s,a,l,u){var c=eE(),d=c.invert,p=c.domain,m=u(".%L"),_=u(":%S"),b=u("%I:%M"),T=u("%I %p"),N=u("%a %d"),R=u("%b %d"),S=u("%B"),D=u("%Y");function U(x){return(l(x)<x?m:a(x)<x?_:s(x)<x?b:i(x)<x?T:n(x)<x?o(x)<x?N:R:r(x)<x?S:D)(x)}return c.invert=function(x){return new Date(d(x))},c.domain=function(x){return arguments.length?p(Array.from(x,wF)):p().map(bF)},c.ticks=function(x){var L=p();return e(L[0],L[L.length-1],x??10)},c.tickFormat=function(x,L){return L==null?U:u(L)},c.nice=function(x){var L=p();return(!x||typeof x.range!="function")&&(x=t(L[0],L[L.length-1],x??10)),x?p(tU(L,x)):c},c.copy=function(){return Z1(c,aE(e,t,r,n,o,i,s,a,l,u))},c}function u3(){return Su.apply(aE(gU,mU,fn,Np,Au,Gs,Op,Rp,ao,sE).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function $e(e){return function(){return e}}const my=Math.abs,At=Math.atan2,ti=Math.cos,vF=Math.max,jc=Math.min,Er=Math.sin,lo=Math.sqrt,Pt=1e-12,Ls=Math.PI,kl=Ls/2,Ja=2*Ls;function EF(e){return e>1?0:e<-1?Ls:Math.acos(e)}function yy(e){return e>=1?kl:e<=-1?-kl:Math.asin(e)}function Mp(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new M$(t)}function SF(e){return e.innerRadius}function AF(e){return e.outerRadius}function TF(e){return e.startAngle}function xF(e){return e.endAngle}function IF(e){return e&&e.padAngle}function CF(e,t,r,n,o,i,s,a){var l=r-e,u=n-t,c=s-o,d=a-i,p=d*l-c*u;if(!(p*p<Pt))return p=(c*(t-i)-d*(e-o))/p,[e+p*l,t+p*u]}function Aa(e,t,r,n,o,i,s){var a=e-r,l=t-n,u=(s?i:-i)/lo(a*a+l*l),c=u*l,d=-u*a,p=e+c,m=t+d,_=r+c,b=n+d,T=(p+_)/2,N=(m+b)/2,R=_-p,S=b-m,D=R*R+S*S,U=o-i,x=p*b-_*m,L=(S<0?-1:1)*lo(vF(0,U*U*D-x*x)),j=(x*S-R*L)/D,Y=(-x*R-S*L)/D,se=(x*S+R*L)/D,re=(-x*R+S*L)/D,P=j-T,B=Y-N,oe=se-T,ne=re-N;return P*P+B*B>oe*oe+ne*ne&&(j=se,Y=re),{cx:j,cy:Y,x01:-c,y01:-d,x11:j*(o/U-1),y11:Y*(o/U-1)}}function c3(){var e=SF,t=AF,r=$e(0),n=null,o=TF,i=xF,s=IF,a=null,l=Mp(u);function u(){var c,d,p=+e.apply(this,arguments),m=+t.apply(this,arguments),_=o.apply(this,arguments)-kl,b=i.apply(this,arguments)-kl,T=my(b-_),N=b>_;if(a||(a=c=l()),m<p&&(d=m,m=p,p=d),!(m>Pt))a.moveTo(0,0);else if(T>Ja-Pt)a.moveTo(m*ti(_),m*Er(_)),a.arc(0,0,m,_,b,!N),p>Pt&&(a.moveTo(p*ti(b),p*Er(b)),a.arc(0,0,p,b,_,N));else{var R=_,S=b,D=_,U=b,x=T,L=T,j=s.apply(this,arguments)/2,Y=j>Pt&&(n?+n.apply(this,arguments):lo(p*p+m*m)),se=jc(my(m-p)/2,+r.apply(this,arguments)),re=se,P=se,B,oe;if(Y>Pt){var ne=yy(Y/p*Er(j)),ue=yy(Y/m*Er(j));(x-=ne*2)>Pt?(ne*=N?1:-1,D+=ne,U-=ne):(x=0,D=U=(_+b)/2),(L-=ue*2)>Pt?(ue*=N?1:-1,R+=ue,S-=ue):(L=0,R=S=(_+b)/2)}var ae=m*ti(R),z=m*Er(R),pe=p*ti(U),de=p*Er(U);if(se>Pt){var ge=m*ti(S),O=m*Er(S),ie=p*ti(D),me=p*Er(D),ve;if(T<Ls)if(ve=CF(ae,z,ie,me,ge,O,pe,de)){var ye=ae-ve[0],q=z-ve[1],F=ge-ve[0],X=O-ve[1],he=1/Er(EF((ye*F+q*X)/(lo(ye*ye+q*q)*lo(F*F+X*X)))/2),ce=lo(ve[0]*ve[0]+ve[1]*ve[1]);re=jc(se,(p-ce)/(he-1)),P=jc(se,(m-ce)/(he+1))}else re=P=0}L>Pt?P>Pt?(B=Aa(ie,me,ae,z,m,P,N),oe=Aa(ge,O,pe,de,m,P,N),a.moveTo(B.cx+B.x01,B.cy+B.y01),P<se?a.arc(B.cx,B.cy,P,At(B.y01,B.x01),At(oe.y01,oe.x01),!N):(a.arc(B.cx,B.cy,P,At(B.y01,B.x01),At(B.y11,B.x11),!N),a.arc(0,0,m,At(B.cy+B.y11,B.cx+B.x11),At(oe.cy+oe.y11,oe.cx+oe.x11),!N),a.arc(oe.cx,oe.cy,P,At(oe.y11,oe.x11),At(oe.y01,oe.x01),!N))):(a.moveTo(ae,z),a.arc(0,0,m,R,S,!N)):a.moveTo(ae,z),!(p>Pt)||!(x>Pt)?a.lineTo(pe,de):re>Pt?(B=Aa(pe,de,ge,O,p,-re,N),oe=Aa(ae,z,ie,me,p,-re,N),a.lineTo(B.cx+B.x01,B.cy+B.y01),re<se?a.arc(B.cx,B.cy,re,At(B.y01,B.x01),At(oe.y01,oe.x01),!N):(a.arc(B.cx,B.cy,re,At(B.y01,B.x01),At(B.y11,B.x11),!N),a.arc(0,0,p,At(B.cy+B.y11,B.cx+B.x11),At(oe.cy+oe.y11,oe.cx+oe.x11),N),a.arc(oe.cx,oe.cy,re,At(oe.y11,oe.x11),At(oe.y01,oe.x01),!N))):a.arc(0,0,p,U,D,N)}if(a.closePath(),c)return a=null,c+""||null}return u.centroid=function(){var c=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,d=(+o.apply(this,arguments)+ +i.apply(this,arguments))/2-Ls/2;return[ti(d)*c,Er(d)*c]},u.innerRadius=function(c){return arguments.length?(e=typeof c=="function"?c:$e(+c),u):e},u.outerRadius=function(c){return arguments.length?(t=typeof c=="function"?c:$e(+c),u):t},u.cornerRadius=function(c){return arguments.length?(r=typeof c=="function"?c:$e(+c),u):r},u.padRadius=function(c){return arguments.length?(n=c==null?null:typeof c=="function"?c:$e(+c),u):n},u.startAngle=function(c){return arguments.length?(o=typeof c=="function"?c:$e(+c),u):o},u.endAngle=function(c){return arguments.length?(i=typeof c=="function"?c:$e(+c),u):i},u.padAngle=function(c){return arguments.length?(s=typeof c=="function"?c:$e(+c),u):s},u.context=function(c){return arguments.length?(a=c??null,u):a},u}function Tu(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function lE(e){this._context=e}lE.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function uE(e){return new lE(e)}function cE(e){return e[0]}function fE(e){return e[1]}function RF(e,t){var r=$e(!0),n=null,o=uE,i=null,s=Mp(a);e=typeof e=="function"?e:e===void 0?cE:$e(e),t=typeof t=="function"?t:t===void 0?fE:$e(t);function a(l){var u,c=(l=Tu(l)).length,d,p=!1,m;for(n==null&&(i=o(m=s())),u=0;u<=c;++u)!(u<c&&r(d=l[u],u,l))===p&&((p=!p)?i.lineStart():i.lineEnd()),p&&i.point(+e(d,u,l),+t(d,u,l));if(m)return i=null,m+""||null}return a.x=function(l){return arguments.length?(e=typeof l=="function"?l:$e(+l),a):e},a.y=function(l){return arguments.length?(t=typeof l=="function"?l:$e(+l),a):t},a.defined=function(l){return arguments.length?(r=typeof l=="function"?l:$e(!!l),a):r},a.curve=function(l){return arguments.length?(o=l,n!=null&&(i=o(n)),a):o},a.context=function(l){return arguments.length?(l==null?n=i=null:i=o(n=l),a):n},a}function f3(e,t,r){var n=null,o=$e(!0),i=null,s=uE,a=null,l=Mp(u);e=typeof e=="function"?e:e===void 0?cE:$e(+e),t=typeof t=="function"?t:$e(t===void 0?0:+t),r=typeof r=="function"?r:r===void 0?fE:$e(+r);function u(d){var p,m,_,b=(d=Tu(d)).length,T,N=!1,R,S=new Array(b),D=new Array(b);for(i==null&&(a=s(R=l())),p=0;p<=b;++p){if(!(p<b&&o(T=d[p],p,d))===N)if(N=!N)m=p,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),_=p-1;_>=m;--_)a.point(S[_],D[_]);a.lineEnd(),a.areaEnd()}N&&(S[p]=+e(T,p,d),D[p]=+t(T,p,d),a.point(n?+n(T,p,d):S[p],r?+r(T,p,d):D[p]))}if(R)return a=null,R+""||null}function c(){return RF().defined(o).curve(s).context(i)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:$e(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:$e(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:$e(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:$e(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:$e(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:$e(+d),u):r},u.lineX0=u.lineY0=function(){return c().x(e).y(t)},u.lineY1=function(){return c().x(e).y(r)},u.lineX1=function(){return c().x(n).y(t)},u.defined=function(d){return arguments.length?(o=typeof d=="function"?d:$e(!!d),u):o},u.curve=function(d){return arguments.length?(s=d,i!=null&&(a=s(i)),u):s},u.context=function(d){return arguments.length?(d==null?i=a=null:a=s(i=d),u):i},u}function OF(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}function kF(e){return e}function h3(){var e=kF,t=OF,r=null,n=$e(0),o=$e(Ja),i=$e(0);function s(a){var l,u=(a=Tu(a)).length,c,d,p=0,m=new Array(u),_=new Array(u),b=+n.apply(this,arguments),T=Math.min(Ja,Math.max(-Ja,o.apply(this,arguments)-b)),N,R=Math.min(Math.abs(T)/u,i.apply(this,arguments)),S=R*(T<0?-1:1),D;for(l=0;l<u;++l)(D=_[m[l]=l]=+e(a[l],l,a))>0&&(p+=D);for(t!=null?m.sort(function(U,x){return t(_[U],_[x])}):r!=null&&m.sort(function(U,x){return r(a[U],a[x])}),l=0,d=p?(T-u*S)/p:0;l<u;++l,b=N)c=m[l],D=_[c],N=b+(D>0?D*d:0)+S,_[c]={data:a[c],index:l,value:D,startAngle:b,endAngle:N,padAngle:R};return _}return s.value=function(a){return arguments.length?(e=typeof a=="function"?a:$e(+a),s):e},s.sortValues=function(a){return arguments.length?(t=a,r=null,s):t},s.sort=function(a){return arguments.length?(r=a,t=null,s):r},s.startAngle=function(a){return arguments.length?(n=typeof a=="function"?a:$e(+a),s):n},s.endAngle=function(a){return arguments.length?(o=typeof a=="function"?a:$e(+a),s):o},s.padAngle=function(a){return arguments.length?(i=typeof a=="function"?a:$e(+a),s):i},s}function _y(e,t){if((s=e.length)>1)for(var r=1,n,o,i=e[t[0]],s,a=i.length;r<s;++r)for(o=i,i=e[t[r]],n=0;n<a;++n)i[n][1]+=i[n][0]=isNaN(o[n][1])?o[n][0]:o[n][1]}function by(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}function NF(e,t){return e[t]}function MF(e){const t=[];return t.key=e,t}function d3(){var e=$e([]),t=by,r=_y,n=NF;function o(i){var s=Array.from(e.apply(this,arguments),MF),a,l=s.length,u=-1,c;for(const d of i)for(a=0,++u;a<l;++a)(s[a][u]=[0,+n(d,s[a].key,u,i)]).data=d;for(a=0,c=Tu(t(s));a<l;++a)s[c[a]].index=a;return r(s,c),s}return o.keys=function(i){return arguments.length?(e=typeof i=="function"?i:$e(Array.from(i)),o):e},o.value=function(i){return arguments.length?(n=typeof i=="function"?i:$e(+i),o):n},o.order=function(i){return arguments.length?(t=i==null?by:typeof i=="function"?i:$e(Array.from(i)),o):t},o.offset=function(i){return arguments.length?(r=i??_y,o):r},o}function gs(e,t,r){this.k=e,this.x=t,this.y=r}gs.prototype={constructor:gs,scale:function(e){return e===1?this:new gs(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new gs(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};gs.prototype;export{WF as A,t3 as B,q$ as C,eU as D,d3 as E,fr as F,s3 as G,f3 as H,l3 as I,o3 as J,sE as K,n3 as L,Co as M,u3 as N,RF as O,i3 as P,r3 as Q,FF as R,zF as S,GF as T,qF as U,TS as V,yF as W,Ro as X,YF as Y,QF as Z,BF as a,KF as b,VF as c,jF as d,g_ as e,HF as f,cd as g,uA as h,SS as i,xS as j,yr as k,h_ as l,XF as m,fd as n,c_ as o,ZS as p,DF as q,yd as r,a3 as s,LF as t,ZE as u,$F as v,lS as w,h3 as x,c3 as y,UF as z};
diff --git a/packages/modules/display_themes/colors/web/assets/vendor-CxuALWWJ.js b/packages/modules/display_themes/colors/web/assets/vendor-CxuALWWJ.js
new file mode 100644
index 0000000000..9372d4bf83
--- /dev/null
+++ b/packages/modules/display_themes/colors/web/assets/vendor-CxuALWWJ.js
@@ -0,0 +1,35 @@
+var NE=Object.defineProperty;var Jp=e=>{throw TypeError(e)};var PE=(e,t,r)=>t in e?NE(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var nt=(e,t,r)=>PE(e,typeof t!="symbol"?t+"":t,r),Pu=(e,t,r)=>t.has(e)||Jp("Cannot "+r);var X=(e,t,r)=>(Pu(e,t,"read from private field"),r?r.call(e):t.get(e)),Ue=(e,t,r)=>t.has(e)?Jp("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Le=(e,t,r,n)=>(Pu(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),Ne=(e,t,r)=>(Pu(e,t,"access private method"),r);var ia=(e,t,r,n)=>({set _(o){Le(e,t,o,r)},get _(){return X(e,t,n)}});const Ri=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};/**
+* @vue/shared v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**//*! #__NO_SIDE_EFFECTS__ */function md(e){const t=Object.create(null);for(const r of e.split(","))t[r]=1;return r=>r in t}const ze={},_o=[],Nr=()=>{},LE=()=>!1,$l=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),yd=e=>e.startsWith("onUpdate:"),yt=Object.assign,_d=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},DE=Object.prototype.hasOwnProperty,je=(e,t)=>DE.call(e,t),De=Array.isArray,bo=e=>Hs(e)==="[object Map]",Ul=e=>Hs(e)==="[object Set]",Zp=e=>Hs(e)==="[object Date]",Be=e=>typeof e=="function",ft=e=>typeof e=="string",$r=e=>typeof e=="symbol",Je=e=>e!==null&&typeof e=="object",Py=e=>(Je(e)||Be(e))&&Be(e.then)&&Be(e.catch),Ly=Object.prototype.toString,Hs=e=>Ly.call(e),BE=e=>Hs(e).slice(8,-1),Dy=e=>Hs(e)==="[object Object]",bd=e=>ft(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,As=md(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Fl=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},$E=/-(\w)/g,$n=Fl(e=>e.replace($E,(t,r)=>r?r.toUpperCase():"")),UE=/\B([A-Z])/g,Bi=Fl(e=>e.replace(UE,"-$1").toLowerCase()),By=Fl(e=>e.charAt(0).toUpperCase()+e.slice(1)),Lu=Fl(e=>e?`on${By(e)}`:""),Un=(e,t)=>!Object.is(e,t),Na=(e,...t)=>{for(let r=0;r<e.length;r++)e[r](...t)},$y=(e,t,r,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:r})},Qc=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let eg;const Uy=()=>eg||(eg=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof Ri<"u"?Ri:{});function wd(e){if(De(e)){const t={};for(let r=0;r<e.length;r++){const n=e[r],o=ft(n)?HE(n):wd(n);if(o)for(const i in o)t[i]=o[i]}return t}else if(ft(e)||Je(e))return e}const FE=/;(?![^(]*\))/g,jE=/:([^]+)/,WE=/\/\*[^]*?\*\//g;function HE(e){const t={};return e.replace(WE,"").split(FE).forEach(r=>{if(r){const n=r.split(jE);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function vd(e){let t="";if(ft(e))t=e;else if(De(e))for(let r=0;r<e.length;r++){const n=vd(e[r]);n&&(t+=n+" ")}else if(Je(e))for(const r in e)e[r]&&(t+=r+" ");return t.trim()}const VE="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",qE=md(VE);function Fy(e){return!!e||e===""}function KE(e,t){if(e.length!==t.length)return!1;let r=!0;for(let n=0;r&&n<e.length;n++)r=jl(e[n],t[n]);return r}function jl(e,t){if(e===t)return!0;let r=Zp(e),n=Zp(t);if(r||n)return r&&n?e.getTime()===t.getTime():!1;if(r=$r(e),n=$r(t),r||n)return e===t;if(r=De(e),n=De(t),r||n)return r&&n?KE(e,t):!1;if(r=Je(e),n=Je(t),r||n){if(!r||!n)return!1;const o=Object.keys(e).length,i=Object.keys(t).length;if(o!==i)return!1;for(const s in e){const a=e.hasOwnProperty(s),l=t.hasOwnProperty(s);if(a&&!l||!a&&l||!jl(e[s],t[s]))return!1}}return String(e)===String(t)}function jy(e,t){return e.findIndex(r=>jl(r,t))}const Wy=e=>!!(e&&e.__v_isRef===!0),YE=e=>ft(e)?e:e==null?"":De(e)||Je(e)&&(e.toString===Ly||!Be(e.toString))?Wy(e)?YE(e.value):JSON.stringify(e,Hy,2):String(e),Hy=(e,t)=>Wy(t)?Hy(e,t.value):bo(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[n,o],i)=>(r[Du(n,i)+" =>"]=o,r),{})}:Ul(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>Du(r))}:$r(t)?Du(t):Je(t)&&!De(t)&&!Dy(t)?String(t):t,Du=(e,t="")=>{var r;return $r(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/**
+* @vue/reactivity v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let qt;class zE{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=qt,!t&&qt&&(this.index=(qt.scopes||(qt.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,r;if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].pause();for(t=0,r=this.effects.length;t<r;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,r;if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].resume();for(t=0,r=this.effects.length;t<r;t++)this.effects[t].resume()}}run(t){if(this._active){const r=qt;try{return qt=this,t()}finally{qt=r}}}on(){qt=this}off(){qt=this.parent}stop(t){if(this._active){let r,n;for(r=0,n=this.effects.length;r<n;r++)this.effects[r].stop();for(r=0,n=this.cleanups.length;r<n;r++)this.cleanups[r]();if(this.scopes)for(r=0,n=this.scopes.length;r<n;r++)this.scopes[r].stop(!0);if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0,this._active=!1}}}function GE(){return qt}let Qe;const Bu=new WeakSet;class Vy{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,qt&&qt.active&&qt.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Bu.has(this)&&(Bu.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Ky(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,tg(this),Yy(this);const t=Qe,r=_r;Qe=this,_r=!0;try{return this.fn()}finally{zy(this),Qe=t,_r=r,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Ad(t);this.deps=this.depsTail=void 0,tg(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Bu.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Xc(this)&&this.run()}get dirty(){return Xc(this)}}let qy=0,fo;function Ky(e){e.flags|=8,e.next=fo,fo=e}function Ed(){qy++}function Sd(){if(--qy>0)return;let e;for(;fo;){let t=fo,r;for(;t;)t.flags&1||(t.flags&=-9),t=t.next;for(t=fo,fo=void 0;t;){if(r=t.next,t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=r}}if(e)throw e}function Yy(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function zy(e){let t,r=e.depsTail,n=r;for(;n;){const o=n.prevDep;n.version===-1?(n===r&&(r=o),Ad(n),QE(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=o}e.deps=t,e.depsTail=r}function Xc(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Gy(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Gy(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ms))return;e.globalVersion=Ms;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Xc(e)){e.flags&=-3;return}const r=Qe,n=_r;Qe=e,_r=!0;try{Yy(e);const o=e.fn(e._value);(t.version===0||Un(o,e._value))&&(e._value=o,t.version++)}catch(o){throw t.version++,o}finally{Qe=r,_r=n,zy(e),e.flags&=-3}}function Ad(e,t=!1){const{dep:r,prevSub:n,nextSub:o}=e;if(n&&(n.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=n,e.nextSub=void 0),r.subs===e&&(r.subs=n),!r.subs&&r.computed){r.computed.flags&=-5;for(let i=r.computed.deps;i;i=i.nextDep)Ad(i,!0)}!t&&!--r.sc&&r.map&&r.map.delete(r.key)}function QE(e){const{prevDep:t,nextDep:r}=e;t&&(t.nextDep=r,e.prevDep=void 0),r&&(r.prevDep=t,e.nextDep=void 0)}let _r=!0;const Qy=[];function Vn(){Qy.push(_r),_r=!1}function qn(){const e=Qy.pop();_r=e===void 0?!0:e}function tg(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const r=Qe;Qe=void 0;try{t()}finally{Qe=r}}}let Ms=0;class XE{constructor(t,r){this.sub=t,this.dep=r,this.version=r.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Td{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.target=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!Qe||!_r||Qe===this.computed)return;let r=this.activeLink;if(r===void 0||r.sub!==Qe)r=this.activeLink=new XE(Qe,this),Qe.deps?(r.prevDep=Qe.depsTail,Qe.depsTail.nextDep=r,Qe.depsTail=r):Qe.deps=Qe.depsTail=r,Xy(r);else if(r.version===-1&&(r.version=this.version,r.nextDep)){const n=r.nextDep;n.prevDep=r.prevDep,r.prevDep&&(r.prevDep.nextDep=n),r.prevDep=Qe.depsTail,r.nextDep=void 0,Qe.depsTail.nextDep=r,Qe.depsTail=r,Qe.deps===r&&(Qe.deps=n)}return r}trigger(t){this.version++,Ms++,this.notify(t)}notify(t){Ed();try{for(let r=this.subs;r;r=r.prevSub)r.sub.notify()&&r.sub.dep.notify()}finally{Sd()}}}function Xy(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Xy(n)}const r=e.dep.subs;r!==e&&(e.prevSub=r,r&&(r.nextSub=e)),e.dep.subs=e}}const Jc=new WeakMap,Ei=Symbol(""),Zc=Symbol(""),Ns=Symbol("");function Rt(e,t,r){if(_r&&Qe){let n=Jc.get(e);n||Jc.set(e,n=new Map);let o=n.get(r);o||(n.set(r,o=new Td),o.target=e,o.map=n,o.key=r),o.track()}}function ln(e,t,r,n,o,i){const s=Jc.get(e);if(!s){Ms++;return}const a=l=>{l&&l.trigger()};if(Ed(),t==="clear")s.forEach(a);else{const l=De(e),u=l&&bd(r);if(l&&r==="length"){const c=Number(n);s.forEach((d,p)=>{(p==="length"||p===Ns||!$r(p)&&p>=c)&&a(d)})}else switch(r!==void 0&&a(s.get(r)),u&&a(s.get(Ns)),t){case"add":l?u&&a(s.get("length")):(a(s.get(Ei)),bo(e)&&a(s.get(Zc)));break;case"delete":l||(a(s.get(Ei)),bo(e)&&a(s.get(Zc)));break;case"set":bo(e)&&a(s.get(Ei));break}}Sd()}function Ji(e){const t=He(e);return t===e?t:(Rt(t,"iterate",Ns),or(e)?t:t.map(Tt))}function Wl(e){return Rt(e=He(e),"iterate",Ns),e}const JE={__proto__:null,[Symbol.iterator](){return $u(this,Symbol.iterator,Tt)},concat(...e){return Ji(this).concat(...e.map(t=>De(t)?Ji(t):t))},entries(){return $u(this,"entries",e=>(e[1]=Tt(e[1]),e))},every(e,t){return qr(this,"every",e,t,void 0,arguments)},filter(e,t){return qr(this,"filter",e,t,r=>r.map(Tt),arguments)},find(e,t){return qr(this,"find",e,t,Tt,arguments)},findIndex(e,t){return qr(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return qr(this,"findLast",e,t,Tt,arguments)},findLastIndex(e,t){return qr(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return qr(this,"forEach",e,t,void 0,arguments)},includes(...e){return Uu(this,"includes",e)},indexOf(...e){return Uu(this,"indexOf",e)},join(e){return Ji(this).join(e)},lastIndexOf(...e){return Uu(this,"lastIndexOf",e)},map(e,t){return qr(this,"map",e,t,void 0,arguments)},pop(){return ts(this,"pop")},push(...e){return ts(this,"push",e)},reduce(e,...t){return rg(this,"reduce",e,t)},reduceRight(e,...t){return rg(this,"reduceRight",e,t)},shift(){return ts(this,"shift")},some(e,t){return qr(this,"some",e,t,void 0,arguments)},splice(...e){return ts(this,"splice",e)},toReversed(){return Ji(this).toReversed()},toSorted(e){return Ji(this).toSorted(e)},toSpliced(...e){return Ji(this).toSpliced(...e)},unshift(...e){return ts(this,"unshift",e)},values(){return $u(this,"values",Tt)}};function $u(e,t,r){const n=Wl(e),o=n[t]();return n!==e&&!or(e)&&(o._next=o.next,o.next=()=>{const i=o._next();return i.value&&(i.value=r(i.value)),i}),o}const ZE=Array.prototype;function qr(e,t,r,n,o,i){const s=Wl(e),a=s!==e&&!or(e),l=s[t];if(l!==ZE[t]){const d=l.apply(e,i);return a?Tt(d):d}let u=r;s!==e&&(a?u=function(d,p){return r.call(this,Tt(d),p,e)}:r.length>2&&(u=function(d,p){return r.call(this,d,p,e)}));const c=l.call(s,u,n);return a&&o?o(c):c}function rg(e,t,r,n){const o=Wl(e);let i=r;return o!==e&&(or(e)?r.length>3&&(i=function(s,a,l){return r.call(this,s,a,l,e)}):i=function(s,a,l){return r.call(this,s,Tt(a),l,e)}),o[t](i,...n)}function Uu(e,t,r){const n=He(e);Rt(n,"iterate",Ns);const o=n[t](...r);return(o===-1||o===!1)&&Od(r[0])?(r[0]=He(r[0]),n[t](...r)):o}function ts(e,t,r=[]){Vn(),Ed();const n=He(e)[t].apply(e,r);return Sd(),qn(),n}const eS=md("__proto__,__v_isRef,__isVue"),Jy=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter($r));function tS(e){$r(e)||(e=String(e));const t=He(this);return Rt(t,"has",e),t.hasOwnProperty(e)}class Zy{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,n){const o=this._isReadonly,i=this._isShallow;if(r==="__v_isReactive")return!o;if(r==="__v_isReadonly")return o;if(r==="__v_isShallow")return i;if(r==="__v_raw")return n===(o?i?pS:n_:i?r_:t_).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const s=De(t);if(!o){let l;if(s&&(l=JE[r]))return l;if(r==="hasOwnProperty")return tS}const a=Reflect.get(t,r,It(t)?t:n);return($r(r)?Jy.has(r):eS(r))||(o||Rt(t,"get",r),i)?a:It(a)?s&&bd(r)?a:a.value:Je(a)?o?i_(a):Cd(a):a}}class e_ extends Zy{constructor(t=!1){super(!1,t)}set(t,r,n,o){let i=t[r];if(!this._isShallow){const l=Oi(i);if(!or(n)&&!Oi(n)&&(i=He(i),n=He(n)),!De(t)&&It(i)&&!It(n))return l?!1:(i.value=n,!0)}const s=De(t)&&bd(r)?Number(r)<t.length:je(t,r),a=Reflect.set(t,r,n,It(t)?t:o);return t===He(o)&&(s?Un(n,i)&&ln(t,"set",r,n):ln(t,"add",r,n)),a}deleteProperty(t,r){const n=je(t,r);t[r];const o=Reflect.deleteProperty(t,r);return o&&n&&ln(t,"delete",r,void 0),o}has(t,r){const n=Reflect.has(t,r);return(!$r(r)||!Jy.has(r))&&Rt(t,"has",r),n}ownKeys(t){return Rt(t,"iterate",De(t)?"length":Ei),Reflect.ownKeys(t)}}class rS extends Zy{constructor(t=!1){super(!0,t)}set(t,r){return!0}deleteProperty(t,r){return!0}}const nS=new e_,iS=new rS,oS=new e_(!0);const xd=e=>e,Hl=e=>Reflect.getPrototypeOf(e);function oa(e,t,r=!1,n=!1){e=e.__v_raw;const o=He(e),i=He(t);r||(Un(t,i)&&Rt(o,"get",t),Rt(o,"get",i));const{has:s}=Hl(o),a=n?xd:r?kd:Tt;if(s.call(o,t))return a(e.get(t));if(s.call(o,i))return a(e.get(i));e!==o&&e.get(t)}function sa(e,t=!1){const r=this.__v_raw,n=He(r),o=He(e);return t||(Un(e,o)&&Rt(n,"has",e),Rt(n,"has",o)),e===o?r.has(e):r.has(e)||r.has(o)}function aa(e,t=!1){return e=e.__v_raw,!t&&Rt(He(e),"iterate",Ei),Reflect.get(e,"size",e)}function ng(e,t=!1){!t&&!or(e)&&!Oi(e)&&(e=He(e));const r=He(this);return Hl(r).has.call(r,e)||(r.add(e),ln(r,"add",e,e)),this}function ig(e,t,r=!1){!r&&!or(t)&&!Oi(t)&&(t=He(t));const n=He(this),{has:o,get:i}=Hl(n);let s=o.call(n,e);s||(e=He(e),s=o.call(n,e));const a=i.call(n,e);return n.set(e,t),s?Un(t,a)&&ln(n,"set",e,t):ln(n,"add",e,t),this}function og(e){const t=He(this),{has:r,get:n}=Hl(t);let o=r.call(t,e);o||(e=He(e),o=r.call(t,e)),n&&n.call(t,e);const i=t.delete(e);return o&&ln(t,"delete",e,void 0),i}function sg(){const e=He(this),t=e.size!==0,r=e.clear();return t&&ln(e,"clear",void 0,void 0),r}function la(e,t){return function(n,o){const i=this,s=i.__v_raw,a=He(s),l=t?xd:e?kd:Tt;return!e&&Rt(a,"iterate",Ei),s.forEach((u,c)=>n.call(o,l(u),l(c),i))}}function ua(e,t,r){return function(...n){const o=this.__v_raw,i=He(o),s=bo(i),a=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,u=o[e](...n),c=r?xd:t?kd:Tt;return!t&&Rt(i,"iterate",l?Zc:Ei),{next(){const{value:d,done:p}=u.next();return p?{value:d,done:p}:{value:a?[c(d[0]),c(d[1])]:c(d),done:p}},[Symbol.iterator](){return this}}}}function In(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function sS(){const e={get(i){return oa(this,i)},get size(){return aa(this)},has:sa,add:ng,set:ig,delete:og,clear:sg,forEach:la(!1,!1)},t={get(i){return oa(this,i,!1,!0)},get size(){return aa(this)},has:sa,add(i){return ng.call(this,i,!0)},set(i,s){return ig.call(this,i,s,!0)},delete:og,clear:sg,forEach:la(!1,!0)},r={get(i){return oa(this,i,!0)},get size(){return aa(this,!0)},has(i){return sa.call(this,i,!0)},add:In("add"),set:In("set"),delete:In("delete"),clear:In("clear"),forEach:la(!0,!1)},n={get(i){return oa(this,i,!0,!0)},get size(){return aa(this,!0)},has(i){return sa.call(this,i,!0)},add:In("add"),set:In("set"),delete:In("delete"),clear:In("clear"),forEach:la(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=ua(i,!1,!1),r[i]=ua(i,!0,!1),t[i]=ua(i,!1,!0),n[i]=ua(i,!0,!0)}),[e,r,t,n]}const[aS,lS,uS,cS]=sS();function Id(e,t){const r=t?e?cS:uS:e?lS:aS;return(n,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?n:Reflect.get(je(r,o)&&o in n?r:n,o,i)}const fS={get:Id(!1,!1)},hS={get:Id(!1,!0)},dS={get:Id(!0,!1)};const t_=new WeakMap,r_=new WeakMap,n_=new WeakMap,pS=new WeakMap;function gS(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function mS(e){return e.__v_skip||!Object.isExtensible(e)?0:gS(BE(e))}function Cd(e){return Oi(e)?e:Rd(e,!1,nS,fS,t_)}function yS(e){return Rd(e,!1,oS,hS,r_)}function i_(e){return Rd(e,!0,iS,dS,n_)}function Rd(e,t,r,n,o){if(!Je(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const s=mS(e);if(s===0)return e;const a=new Proxy(e,s===2?n:r);return o.set(e,a),a}function wo(e){return Oi(e)?wo(e.__v_raw):!!(e&&e.__v_isReactive)}function Oi(e){return!!(e&&e.__v_isReadonly)}function or(e){return!!(e&&e.__v_isShallow)}function Od(e){return e?!!e.__v_raw:!1}function He(e){const t=e&&e.__v_raw;return t?He(t):e}function _S(e){return!je(e,"__v_skip")&&Object.isExtensible(e)&&$y(e,"__v_skip",!0),e}const Tt=e=>Je(e)?Cd(e):e,kd=e=>Je(e)?i_(e):e;function It(e){return e?e.__v_isRef===!0:!1}function o3(e){return bS(e,!1)}function bS(e,t){return It(e)?e:new wS(e,t)}class wS{constructor(t,r){this.dep=new Td,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=r?t:He(t),this._value=r?t:Tt(t),this.__v_isShallow=r}get value(){return this.dep.track(),this._value}set value(t){const r=this._rawValue,n=this.__v_isShallow||or(t)||Oi(t);t=n?t:He(t),Un(t,r)&&(this._rawValue=t,this._value=n?t:Tt(t),this.dep.trigger())}}function vS(e){return It(e)?e.value:e}const ES={get:(e,t,r)=>t==="__v_raw"?e:vS(Reflect.get(e,t,r)),set:(e,t,r,n)=>{const o=e[t];return It(o)&&!It(r)?(o.value=r,!0):Reflect.set(e,t,r,n)}};function o_(e){return wo(e)?e:new Proxy(e,ES)}class SS{constructor(t,r,n){this.fn=t,this.setter=r,this._value=void 0,this.dep=new Td(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ms-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!r,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&Qe!==this)return Ky(this),!0}get value(){const t=this.dep.track();return Gy(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function AS(e,t,r=!1){let n,o;return Be(e)?n=e:(n=e.get,o=e.set),new SS(n,o,r)}const ca={},sl=new WeakMap;let ui;function TS(e,t=!1,r=ui){if(r){let n=sl.get(r);n||sl.set(r,n=[]),n.push(e)}}function xS(e,t,r=ze){const{immediate:n,deep:o,once:i,scheduler:s,augmentJob:a,call:l}=r,u=M=>o?M:or(M)||o===!1||o===0?en(M,1):en(M);let c,d,p,m,_=!1,b=!1;if(It(e)?(d=()=>e.value,_=or(e)):wo(e)?(d=()=>u(e),_=!0):De(e)?(b=!0,_=e.some(M=>wo(M)||or(M)),d=()=>e.map(M=>{if(It(M))return M.value;if(wo(M))return u(M);if(Be(M))return l?l(M,2):M()})):Be(e)?t?d=l?()=>l(e,2):e:d=()=>{if(p){Vn();try{p()}finally{qn()}}const M=ui;ui=c;try{return l?l(e,3,[m]):e(m)}finally{ui=M}}:d=Nr,t&&o){const M=d,$=o===!0?1/0:o;d=()=>en(M(),$)}const T=GE(),k=()=>{c.stop(),T&&_d(T.effects,c)};if(i&&t){const M=t;t=(...$)=>{M(...$),k()}}let C=b?new Array(e.length).fill(ca):ca;const A=M=>{if(!(!(c.flags&1)||!c.dirty&&!M))if(t){const $=c.run();if(o||_||(b?$.some((R,D)=>Un(R,C[D])):Un($,C))){p&&p();const R=ui;ui=c;try{const D=[$,C===ca?void 0:b&&C[0]===ca?[]:C,m];l?l(t,3,D):t(...D),C=$}finally{ui=R}}}else c.run()};return a&&a(A),c=new Vy(d),c.scheduler=s?()=>s(A,!1):A,m=M=>TS(M,!1,c),p=c.onStop=()=>{const M=sl.get(c);if(M){if(l)l(M,4);else for(const $ of M)$();sl.delete(c)}},t?n?A(!0):C=c.run():s?s(A.bind(null,!0),!0):c.run(),k.pause=c.pause.bind(c),k.resume=c.resume.bind(c),k.stop=k,k}function en(e,t=1/0,r){if(t<=0||!Je(e)||e.__v_skip||(r=r||new Set,r.has(e)))return e;if(r.add(e),t--,It(e))en(e.value,t,r);else if(De(e))for(let n=0;n<e.length;n++)en(e[n],t,r);else if(Ul(e)||bo(e))e.forEach(n=>{en(n,t,r)});else if(Dy(e)){for(const n in e)en(e[n],t,r);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&en(e[n],t,r)}return e}/**
+* @vue/runtime-core v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function Vs(e,t,r,n){try{return n?e(...n):e()}catch(o){Vl(o,t,r)}}function Ur(e,t,r,n){if(Be(e)){const o=Vs(e,t,r,n);return o&&Py(o)&&o.catch(i=>{Vl(i,t,r)}),o}if(De(e)){const o=[];for(let i=0;i<e.length;i++)o.push(Ur(e[i],t,r,n));return o}}function Vl(e,t,r,n=!0){const o=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:s}=t&&t.appContext.config||ze;if(t){let a=t.parent;const l=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${r}`;for(;a;){const c=a.ec;if(c){for(let d=0;d<c.length;d++)if(c[d](e,l,u)===!1)return}a=a.parent}if(i){Vn(),Vs(i,null,10,[e,l,u]),qn();return}}IS(e,r,o,n,s)}function IS(e,t,r,n=!0,o=!1){if(o)throw e;console.error(e)}let Ps=!1,ef=!1;const Mt=[];let xr=0;const vo=[];let Ln=null,io=0;const s_=Promise.resolve();let Md=null;function CS(e){const t=Md||s_;return e?t.then(this?e.bind(this):e):t}function RS(e){let t=Ps?xr+1:0,r=Mt.length;for(;t<r;){const n=t+r>>>1,o=Mt[n],i=Ls(o);i<e||i===e&&o.flags&2?t=n+1:r=n}return t}function Nd(e){if(!(e.flags&1)){const t=Ls(e),r=Mt[Mt.length-1];!r||!(e.flags&2)&&t>=Ls(r)?Mt.push(e):Mt.splice(RS(t),0,e),e.flags|=1,a_()}}function a_(){!Ps&&!ef&&(ef=!0,Md=s_.then(u_))}function OS(e){De(e)?vo.push(...e):Ln&&e.id===-1?Ln.splice(io+1,0,e):e.flags&1||(vo.push(e),e.flags|=1),a_()}function ag(e,t,r=Ps?xr+1:0){for(;r<Mt.length;r++){const n=Mt[r];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;Mt.splice(r,1),r--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function l_(e){if(vo.length){const t=[...new Set(vo)].sort((r,n)=>Ls(r)-Ls(n));if(vo.length=0,Ln){Ln.push(...t);return}for(Ln=t,io=0;io<Ln.length;io++){const r=Ln[io];r.flags&4&&(r.flags&=-2),r.flags&8||r(),r.flags&=-2}Ln=null,io=0}}const Ls=e=>e.id==null?e.flags&2?-1:1/0:e.id;function u_(e){ef=!1,Ps=!0;try{for(xr=0;xr<Mt.length;xr++){const t=Mt[xr];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Vs(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;xr<Mt.length;xr++){const t=Mt[xr];t&&(t.flags&=-2)}xr=0,Mt.length=0,l_(),Ps=!1,Md=null,(Mt.length||vo.length)&&u_()}}let xt=null,c_=null;function al(e){const t=xt;return xt=e,c_=e&&e.type.__scopeId||null,t}function kS(e,t=xt,r){if(!t||e._n)return e;const n=(...o)=>{n._d&&gg(-1);const i=al(t);let s;try{s=e(...o)}finally{al(i),n._d&&gg(1)}return s};return n._n=!0,n._c=!0,n._d=!0,n}function s3(e,t){if(xt===null)return e;const r=Gl(xt),n=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[i,s,a,l=ze]=t[o];i&&(Be(i)&&(i={mounted:i,updated:i}),i.deep&&en(s),n.push({dir:i,instance:r,value:s,oldValue:void 0,arg:a,modifiers:l}))}return e}function Zn(e,t,r,n){const o=e.dirs,i=t&&t.dirs;for(let s=0;s<o.length;s++){const a=o[s];i&&(a.oldValue=i[s].value);let l=a.dir[n];l&&(Vn(),Ur(l,r,8,[e.el,a,e,t]),qn())}}const MS=Symbol("_vte"),NS=e=>e.__isTeleport;function Pd(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Pd(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}/*! #__NO_SIDE_EFFECTS__ */function a3(e,t){return Be(e)?yt({name:e.name},t,{setup:e}):e}function f_(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function tf(e,t,r,n,o=!1){if(De(e)){e.forEach((_,b)=>tf(_,t&&(De(t)?t[b]:t),r,n,o));return}if(Eo(n)&&!o)return;const i=n.shapeFlag&4?Gl(n.component):n.el,s=o?null:i,{i:a,r:l}=e,u=t&&t.r,c=a.refs===ze?a.refs={}:a.refs,d=a.setupState,p=He(d),m=d===ze?()=>!1:_=>je(p,_);if(u!=null&&u!==l&&(ft(u)?(c[u]=null,m(u)&&(d[u]=null)):It(u)&&(u.value=null)),Be(l))Vs(l,a,12,[s,c]);else{const _=ft(l),b=It(l);if(_||b){const T=()=>{if(e.f){const k=_?m(l)?d[l]:c[l]:l.value;o?De(k)&&_d(k,i):De(k)?k.includes(i)||k.push(i):_?(c[l]=[i],m(l)&&(d[l]=c[l])):(l.value=[i],e.k&&(c[e.k]=l.value))}else _?(c[l]=s,m(l)&&(d[l]=s)):b&&(l.value=s,e.k&&(c[e.k]=s))};s?(T.id=-1,Vt(T,r)):T()}}}const Eo=e=>!!e.type.__asyncLoader,h_=e=>e.type.__isKeepAlive;function PS(e,t){d_(e,"a",t)}function LS(e,t){d_(e,"da",t)}function d_(e,t,r=Nt){const n=e.__wdc||(e.__wdc=()=>{let o=r;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(ql(t,n,r),r){let o=r.parent;for(;o&&o.parent;)h_(o.parent.vnode)&&DS(n,t,r,o),o=o.parent}}function DS(e,t,r,n){const o=ql(t,e,n,!0);p_(()=>{_d(n[t],o)},r)}function ql(e,t,r=Nt,n=!1){if(r){const o=r[e]||(r[e]=[]),i=t.__weh||(t.__weh=(...s)=>{Vn();const a=qs(r),l=Ur(t,r,e,s);return a(),qn(),l});return n?o.unshift(i):o.push(i),i}}const wn=e=>(t,r=Nt)=>{(!zl||e==="sp")&&ql(e,(...n)=>t(...n),r)},BS=wn("bm"),$S=wn("m"),US=wn("bu"),FS=wn("u"),jS=wn("bum"),p_=wn("um"),WS=wn("sp"),HS=wn("rtg"),VS=wn("rtc");function qS(e,t=Nt){ql("ec",e,t)}const KS=Symbol.for("v-ndc");function l3(e,t,r,n){let o;const i=r,s=De(e);if(s||ft(e)){const a=s&&wo(e);let l=!1;a&&(l=!or(e),e=Wl(e)),o=new Array(e.length);for(let u=0,c=e.length;u<c;u++)o[u]=t(l?Tt(e[u]):e[u],u,void 0,i)}else if(typeof e=="number"){o=new Array(e);for(let a=0;a<e;a++)o[a]=t(a+1,a,void 0,i)}else if(Je(e))if(e[Symbol.iterator])o=Array.from(e,(a,l)=>t(a,l,void 0,i));else{const a=Object.keys(e);o=new Array(a.length);for(let l=0,u=a.length;l<u;l++){const c=a[l];o[l]=t(e[c],c,l,i)}}else o=[];return o}function u3(e,t,r={},n,o){if(xt.ce||xt.parent&&Eo(xt.parent)&&xt.parent.ce)return t!=="default"&&(r.name=t),af(),lf(nr,null,[br("slot",r,n&&n())],64);let i=e[t];i&&i._c&&(i._d=!1),af();const s=i&&g_(i(r)),a=lf(nr,{key:(r.key||s&&s.key||`_${t}`)+(!s&&n?"_fb":"")},s||(n?n():[]),s&&e._===1?64:-2);return i&&i._c&&(i._d=!0),a}function g_(e){return e.some(t=>$d(t)?!(t.type===Fn||t.type===nr&&!g_(t.children)):!0)?e:null}const rf=e=>e?L_(e)?Gl(e):rf(e.parent):null,Ts=yt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>rf(e.parent),$root:e=>rf(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ld(e),$forceUpdate:e=>e.f||(e.f=()=>{Nd(e.update)}),$nextTick:e=>e.n||(e.n=CS.bind(e.proxy)),$watch:e=>pA.bind(e)}),Fu=(e,t)=>e!==ze&&!e.__isScriptSetup&&je(e,t),YS={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:r,setupState:n,data:o,props:i,accessCache:s,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const m=s[t];if(m!==void 0)switch(m){case 1:return n[t];case 2:return o[t];case 4:return r[t];case 3:return i[t]}else{if(Fu(n,t))return s[t]=1,n[t];if(o!==ze&&je(o,t))return s[t]=2,o[t];if((u=e.propsOptions[0])&&je(u,t))return s[t]=3,i[t];if(r!==ze&&je(r,t))return s[t]=4,r[t];nf&&(s[t]=0)}}const c=Ts[t];let d,p;if(c)return t==="$attrs"&&Rt(e.attrs,"get",""),c(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(r!==ze&&je(r,t))return s[t]=4,r[t];if(p=l.config.globalProperties,je(p,t))return p[t]},set({_:e},t,r){const{data:n,setupState:o,ctx:i}=e;return Fu(o,t)?(o[t]=r,!0):n!==ze&&je(n,t)?(n[t]=r,!0):je(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:n,appContext:o,propsOptions:i}},s){let a;return!!r[s]||e!==ze&&je(e,s)||Fu(t,s)||(a=i[0])&&je(a,s)||je(n,s)||je(Ts,s)||je(o.config.globalProperties,s)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:je(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function lg(e){return De(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}let nf=!0;function zS(e){const t=Ld(e),r=e.proxy,n=e.ctx;nf=!1,t.beforeCreate&&ug(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:s,watch:a,provide:l,inject:u,created:c,beforeMount:d,mounted:p,beforeUpdate:m,updated:_,activated:b,deactivated:T,beforeDestroy:k,beforeUnmount:C,destroyed:A,unmounted:M,render:$,renderTracked:R,renderTriggered:D,errorCaptured:j,serverPrefetch:z,expose:se,inheritAttrs:re,components:L,directives:B,filters:oe}=t;if(u&&GS(u,n,null),s)for(const ae in s){const G=s[ae];Be(G)&&(n[ae]=G.bind(r))}if(o){const ae=o.call(r,r);Je(ae)&&(e.data=Cd(ae))}if(nf=!0,i)for(const ae in i){const G=i[ae],pe=Be(G)?G.bind(r,r):Be(G.get)?G.get.bind(r,r):Nr,de=!Be(G)&&Be(G.set)?G.set.bind(r):Nr,ge=LA({get:pe,set:de});Object.defineProperty(n,ae,{enumerable:!0,configurable:!0,get:()=>ge.value,set:O=>ge.value=O})}if(a)for(const ae in a)m_(a[ae],n,r,ae);if(l){const ae=Be(l)?l.call(r):l;Reflect.ownKeys(ae).forEach(G=>{tA(G,ae[G])})}c&&ug(c,e,"c");function ue(ae,G){De(G)?G.forEach(pe=>ae(pe.bind(r))):G&&ae(G.bind(r))}if(ue(BS,d),ue($S,p),ue(US,m),ue(FS,_),ue(PS,b),ue(LS,T),ue(qS,j),ue(VS,R),ue(HS,D),ue(jS,C),ue(p_,M),ue(WS,z),De(se))if(se.length){const ae=e.exposed||(e.exposed={});se.forEach(G=>{Object.defineProperty(ae,G,{get:()=>r[G],set:pe=>r[G]=pe})})}else e.exposed||(e.exposed={});$&&e.render===Nr&&(e.render=$),re!=null&&(e.inheritAttrs=re),L&&(e.components=L),B&&(e.directives=B),z&&f_(e)}function GS(e,t,r=Nr){De(e)&&(e=of(e));for(const n in e){const o=e[n];let i;Je(o)?"default"in o?i=Pa(o.from||n,o.default,!0):i=Pa(o.from||n):i=Pa(o),It(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:s=>i.value=s}):t[n]=i}}function ug(e,t,r){Ur(De(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,r)}function m_(e,t,r,n){let o=n.includes(".")?R_(r,n):()=>r[n];if(ft(e)){const i=t[e];Be(i)&&Wu(o,i)}else if(Be(e))Wu(o,e.bind(r));else if(Je(e))if(De(e))e.forEach(i=>m_(i,t,r,n));else{const i=Be(e.handler)?e.handler.bind(r):t[e.handler];Be(i)&&Wu(o,i,e)}}function Ld(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,a=i.get(t);let l;return a?l=a:!o.length&&!r&&!n?l=t:(l={},o.length&&o.forEach(u=>ll(l,u,s,!0)),ll(l,t,s)),Je(t)&&i.set(t,l),l}function ll(e,t,r,n=!1){const{mixins:o,extends:i}=t;i&&ll(e,i,r,!0),o&&o.forEach(s=>ll(e,s,r,!0));for(const s in t)if(!(n&&s==="expose")){const a=QS[s]||r&&r[s];e[s]=a?a(e[s],t[s]):t[s]}return e}const QS={data:cg,props:fg,emits:fg,methods:gs,computed:gs,beforeCreate:kt,created:kt,beforeMount:kt,mounted:kt,beforeUpdate:kt,updated:kt,beforeDestroy:kt,beforeUnmount:kt,destroyed:kt,unmounted:kt,activated:kt,deactivated:kt,errorCaptured:kt,serverPrefetch:kt,components:gs,directives:gs,watch:JS,provide:cg,inject:XS};function cg(e,t){return t?e?function(){return yt(Be(e)?e.call(this,this):e,Be(t)?t.call(this,this):t)}:t:e}function XS(e,t){return gs(of(e),of(t))}function of(e){if(De(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function kt(e,t){return e?[...new Set([].concat(e,t))]:t}function gs(e,t){return e?yt(Object.create(null),e,t):t}function fg(e,t){return e?De(e)&&De(t)?[...new Set([...e,...t])]:yt(Object.create(null),lg(e),lg(t??{})):t}function JS(e,t){if(!e)return t;if(!t)return e;const r=yt(Object.create(null),e);for(const n in t)r[n]=kt(e[n],t[n]);return r}function y_(){return{app:null,config:{isNativeTag:LE,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ZS=0;function eA(e,t){return function(n,o=null){Be(n)||(n=yt({},n)),o!=null&&!Je(o)&&(o=null);const i=y_(),s=new WeakSet,a=[];let l=!1;const u=i.app={_uid:ZS++,_component:n,_props:o,_container:null,_context:i,_instance:null,version:DA,get config(){return i.config},set config(c){},use(c,...d){return s.has(c)||(c&&Be(c.install)?(s.add(c),c.install(u,...d)):Be(c)&&(s.add(c),c(u,...d))),u},mixin(c){return i.mixins.includes(c)||i.mixins.push(c),u},component(c,d){return d?(i.components[c]=d,u):i.components[c]},directive(c,d){return d?(i.directives[c]=d,u):i.directives[c]},mount(c,d,p){if(!l){const m=u._ceVNode||br(n,o);return m.appContext=i,p===!0?p="svg":p===!1&&(p=void 0),d&&t?t(m,c):e(m,c,p),l=!0,u._container=c,c.__vue_app__=u,Gl(m.component)}},onUnmount(c){a.push(c)},unmount(){l&&(Ur(a,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(c,d){return i.provides[c]=d,u},runWithContext(c){const d=So;So=u;try{return c()}finally{So=d}}};return u}}let So=null;function tA(e,t){if(Nt){let r=Nt.provides;const n=Nt.parent&&Nt.parent.provides;n===r&&(r=Nt.provides=Object.create(n)),r[e]=t}}function Pa(e,t,r=!1){const n=Nt||xt;if(n||So){const o=So?So._context.provides:n?n.parent==null?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return r&&Be(t)?t.call(n&&n.proxy):t}}const __={},b_=()=>Object.create(__),w_=e=>Object.getPrototypeOf(e)===__;function rA(e,t,r,n=!1){const o={},i=b_();e.propsDefaults=Object.create(null),v_(e,t,o,i);for(const s in e.propsOptions[0])s in o||(o[s]=void 0);r?e.props=n?o:yS(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function nA(e,t,r,n){const{props:o,attrs:i,vnode:{patchFlag:s}}=e,a=He(o),[l]=e.propsOptions;let u=!1;if((n||s>0)&&!(s&16)){if(s&8){const c=e.vnode.dynamicProps;for(let d=0;d<c.length;d++){let p=c[d];if(Kl(e.emitsOptions,p))continue;const m=t[p];if(l)if(je(i,p))m!==i[p]&&(i[p]=m,u=!0);else{const _=$n(p);o[_]=sf(l,a,_,m,e,!1)}else m!==i[p]&&(i[p]=m,u=!0)}}}else{v_(e,t,o,i)&&(u=!0);let c;for(const d in a)(!t||!je(t,d)&&((c=Bi(d))===d||!je(t,c)))&&(l?r&&(r[d]!==void 0||r[c]!==void 0)&&(o[d]=sf(l,a,d,void 0,e,!0)):delete o[d]);if(i!==a)for(const d in i)(!t||!je(t,d))&&(delete i[d],u=!0)}u&&ln(e.attrs,"set","")}function v_(e,t,r,n){const[o,i]=e.propsOptions;let s=!1,a;if(t)for(let l in t){if(As(l))continue;const u=t[l];let c;o&&je(o,c=$n(l))?!i||!i.includes(c)?r[c]=u:(a||(a={}))[c]=u:Kl(e.emitsOptions,l)||(!(l in n)||u!==n[l])&&(n[l]=u,s=!0)}if(i){const l=He(r),u=a||ze;for(let c=0;c<i.length;c++){const d=i[c];r[d]=sf(o,l,d,u[d],e,!je(u,d))}}return s}function sf(e,t,r,n,o,i){const s=e[r];if(s!=null){const a=je(s,"default");if(a&&n===void 0){const l=s.default;if(s.type!==Function&&!s.skipFactory&&Be(l)){const{propsDefaults:u}=o;if(r in u)n=u[r];else{const c=qs(o);n=u[r]=l.call(null,t),c()}}else n=l;o.ce&&o.ce._setProp(r,n)}s[0]&&(i&&!a?n=!1:s[1]&&(n===""||n===Bi(r))&&(n=!0))}return n}const iA=new WeakMap;function E_(e,t,r=!1){const n=r?iA:t.propsCache,o=n.get(e);if(o)return o;const i=e.props,s={},a=[];let l=!1;if(!Be(e)){const c=d=>{l=!0;const[p,m]=E_(d,t,!0);yt(s,p),m&&a.push(...m)};!r&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!i&&!l)return Je(e)&&n.set(e,_o),_o;if(De(i))for(let c=0;c<i.length;c++){const d=$n(i[c]);hg(d)&&(s[d]=ze)}else if(i)for(const c in i){const d=$n(c);if(hg(d)){const p=i[c],m=s[d]=De(p)||Be(p)?{type:p}:yt({},p),_=m.type;let b=!1,T=!0;if(De(_))for(let k=0;k<_.length;++k){const C=_[k],A=Be(C)&&C.name;if(A==="Boolean"){b=!0;break}else A==="String"&&(T=!1)}else b=Be(_)&&_.name==="Boolean";m[0]=b,m[1]=T,(b||je(m,"default"))&&a.push(d)}}const u=[s,a];return Je(e)&&n.set(e,u),u}function hg(e){return e[0]!=="$"&&!As(e)}const S_=e=>e[0]==="_"||e==="$stable",Dd=e=>De(e)?e.map(Rr):[Rr(e)],oA=(e,t,r)=>{if(t._n)return t;const n=kS((...o)=>Dd(t(...o)),r);return n._c=!1,n},A_=(e,t,r)=>{const n=e._ctx;for(const o in e){if(S_(o))continue;const i=e[o];if(Be(i))t[o]=oA(o,i,n);else if(i!=null){const s=Dd(i);t[o]=()=>s}}},T_=(e,t)=>{const r=Dd(t);e.slots.default=()=>r},x_=(e,t,r)=>{for(const n in t)(r||n!=="_")&&(e[n]=t[n])},sA=(e,t,r)=>{const n=e.slots=b_();if(e.vnode.shapeFlag&32){const o=t._;o?(x_(n,t,r),r&&$y(n,"_",o,!0)):A_(t,n)}else t&&T_(e,t)},aA=(e,t,r)=>{const{vnode:n,slots:o}=e;let i=!0,s=ze;if(n.shapeFlag&32){const a=t._;a?r&&a===1?i=!1:x_(o,t,r):(i=!t.$stable,A_(t,o)),s=t}else t&&(T_(e,t),s={default:1});if(i)for(const a in o)!S_(a)&&s[a]==null&&delete o[a]},Vt=vA;function lA(e){return uA(e)}function uA(e,t){const r=Uy();r.__VUE__=!0;const{insert:n,remove:o,patchProp:i,createElement:s,createText:a,createComment:l,setText:u,setElementText:c,parentNode:d,nextSibling:p,setScopeId:m=Nr,insertStaticContent:_}=e,b=(v,S,E,N=null,P=null,J=null,te=void 0,U=null,q=!!S.dynamicChildren)=>{if(v===S)return;v&&!rs(v,S)&&(N=V(v),O(v,P,J,!0),v=null),S.patchFlag===-2&&(q=!1,S.dynamicChildren=null);const{type:x,ref:K,shapeFlag:Y}=S;switch(x){case Yl:T(v,S,E,N);break;case Fn:k(v,S,E,N);break;case La:v==null&&C(S,E,N,te);break;case nr:L(v,S,E,N,P,J,te,U,q);break;default:Y&1?$(v,S,E,N,P,J,te,U,q):Y&6?B(v,S,E,N,P,J,te,U,q):(Y&64||Y&128)&&x.process(v,S,E,N,P,J,te,U,q,he)}K!=null&&P&&tf(K,v&&v.ref,J,S||v,!S)},T=(v,S,E,N)=>{if(v==null)n(S.el=a(S.children),E,N);else{const P=S.el=v.el;S.children!==v.children&&u(P,S.children)}},k=(v,S,E,N)=>{v==null?n(S.el=l(S.children||""),E,N):S.el=v.el},C=(v,S,E,N)=>{[v.el,v.anchor]=_(v.children,S,E,N,v.el,v.anchor)},A=({el:v,anchor:S},E,N)=>{let P;for(;v&&v!==S;)P=p(v),n(v,E,N),v=P;n(S,E,N)},M=({el:v,anchor:S})=>{let E;for(;v&&v!==S;)E=p(v),o(v),v=E;o(S)},$=(v,S,E,N,P,J,te,U,q)=>{S.type==="svg"?te="svg":S.type==="math"&&(te="mathml"),v==null?R(S,E,N,P,J,te,U,q):z(v,S,P,J,te,U,q)},R=(v,S,E,N,P,J,te,U)=>{let q,x;const{props:K,shapeFlag:Y,transition:le,dirs:y}=v;if(q=v.el=s(v.type,J,K&&K.is,K),Y&8?c(q,v.children):Y&16&&j(v.children,q,null,N,P,ju(v,J),te,U),y&&Zn(v,null,N,"created"),D(q,v,v.scopeId,te,N),K){for(const f in K)f!=="value"&&!As(f)&&i(q,f,null,K[f],J,N);"value"in K&&i(q,"value",null,K.value,J),(x=K.onVnodeBeforeMount)&&Er(x,N,v)}y&&Zn(v,null,N,"beforeMount");const h=cA(P,le);h&&le.beforeEnter(q),n(q,S,E),((x=K&&K.onVnodeMounted)||h||y)&&Vt(()=>{x&&Er(x,N,v),h&&le.enter(q),y&&Zn(v,null,N,"mounted")},P)},D=(v,S,E,N,P)=>{if(E&&m(v,E),N)for(let J=0;J<N.length;J++)m(v,N[J]);if(P){let J=P.subTree;if(S===J||k_(J.type)&&(J.ssContent===S||J.ssFallback===S)){const te=P.vnode;D(v,te,te.scopeId,te.slotScopeIds,P.parent)}}},j=(v,S,E,N,P,J,te,U,q=0)=>{for(let x=q;x<v.length;x++){const K=v[x]=U?Dn(v[x]):Rr(v[x]);b(null,K,S,E,N,P,J,te,U)}},z=(v,S,E,N,P,J,te)=>{const U=S.el=v.el;let{patchFlag:q,dynamicChildren:x,dirs:K}=S;q|=v.patchFlag&16;const Y=v.props||ze,le=S.props||ze;let y;if(E&&ei(E,!1),(y=le.onVnodeBeforeUpdate)&&Er(y,E,S,v),K&&Zn(S,v,E,"beforeUpdate"),E&&ei(E,!0),(Y.innerHTML&&le.innerHTML==null||Y.textContent&&le.textContent==null)&&c(U,""),x?se(v.dynamicChildren,x,U,E,N,ju(S,P),J):te||G(v,S,U,null,E,N,ju(S,P),J,!1),q>0){if(q&16)re(U,Y,le,E,P);else if(q&2&&Y.class!==le.class&&i(U,"class",null,le.class,P),q&4&&i(U,"style",Y.style,le.style,P),q&8){const h=S.dynamicProps;for(let f=0;f<h.length;f++){const g=h[f],w=Y[g],I=le[g];(I!==w||g==="value")&&i(U,g,w,I,P,E)}}q&1&&v.children!==S.children&&c(U,S.children)}else!te&&x==null&&re(U,Y,le,E,P);((y=le.onVnodeUpdated)||K)&&Vt(()=>{y&&Er(y,E,S,v),K&&Zn(S,v,E,"updated")},N)},se=(v,S,E,N,P,J,te)=>{for(let U=0;U<S.length;U++){const q=v[U],x=S[U],K=q.el&&(q.type===nr||!rs(q,x)||q.shapeFlag&70)?d(q.el):E;b(q,x,K,null,N,P,J,te,!0)}},re=(v,S,E,N,P)=>{if(S!==E){if(S!==ze)for(const J in S)!As(J)&&!(J in E)&&i(v,J,S[J],null,P,N);for(const J in E){if(As(J))continue;const te=E[J],U=S[J];te!==U&&J!=="value"&&i(v,J,U,te,P,N)}"value"in E&&i(v,"value",S.value,E.value,P)}},L=(v,S,E,N,P,J,te,U,q)=>{const x=S.el=v?v.el:a(""),K=S.anchor=v?v.anchor:a("");let{patchFlag:Y,dynamicChildren:le,slotScopeIds:y}=S;y&&(U=U?U.concat(y):y),v==null?(n(x,E,N),n(K,E,N),j(S.children||[],E,K,P,J,te,U,q)):Y>0&&Y&64&&le&&v.dynamicChildren?(se(v.dynamicChildren,le,E,P,J,te,U),(S.key!=null||P&&S===P.subTree)&&I_(v,S,!0)):G(v,S,E,K,P,J,te,U,q)},B=(v,S,E,N,P,J,te,U,q)=>{S.slotScopeIds=U,v==null?S.shapeFlag&512?P.ctx.activate(S,E,N,te,q):oe(S,E,N,P,J,te,q):ne(v,S,q)},oe=(v,S,E,N,P,J,te)=>{const U=v.component=RA(v,N,P);if(h_(v)&&(U.ctx.renderer=he),OA(U,!1,te),U.asyncDep){if(P&&P.registerDep(U,ue,te),!v.el){const q=U.subTree=br(Fn);k(null,q,S,E)}}else ue(U,v,S,E,P,J,te)},ne=(v,S,E)=>{const N=S.component=v.component;if(bA(v,S,E))if(N.asyncDep&&!N.asyncResolved){ae(N,S,E);return}else N.next=S,N.update();else S.el=v.el,N.vnode=S},ue=(v,S,E,N,P,J,te)=>{const U=()=>{if(v.isMounted){let{next:Y,bu:le,u:y,parent:h,vnode:f}=v;{const ce=C_(v);if(ce){Y&&(Y.el=f.el,ae(v,Y,te)),ce.asyncDep.then(()=>{v.isUnmounted||U()});return}}let g=Y,w;ei(v,!1),Y?(Y.el=f.el,ae(v,Y,te)):Y=f,le&&Na(le),(w=Y.props&&Y.props.onVnodeBeforeUpdate)&&Er(w,h,Y,f),ei(v,!0);const I=Hu(v),W=v.subTree;v.subTree=I,b(W,I,d(W.el),V(W),v,P,J),Y.el=I.el,g===null&&wA(v,I.el),y&&Vt(y,P),(w=Y.props&&Y.props.onVnodeUpdated)&&Vt(()=>Er(w,h,Y,f),P)}else{let Y;const{el:le,props:y}=S,{bm:h,m:f,parent:g,root:w,type:I}=v,W=Eo(S);if(ei(v,!1),h&&Na(h),!W&&(Y=y&&y.onVnodeBeforeMount)&&Er(Y,g,S),ei(v,!0),le&&ee){const ce=()=>{v.subTree=Hu(v),ee(le,v.subTree,v,P,null)};W&&I.__asyncHydrate?I.__asyncHydrate(le,v,ce):ce()}else{w.ce&&w.ce._injectChildStyle(I);const ce=v.subTree=Hu(v);b(null,ce,E,N,v,P,J),S.el=ce.el}if(f&&Vt(f,P),!W&&(Y=y&&y.onVnodeMounted)){const ce=S;Vt(()=>Er(Y,g,ce),P)}(S.shapeFlag&256||g&&Eo(g.vnode)&&g.vnode.shapeFlag&256)&&v.a&&Vt(v.a,P),v.isMounted=!0,S=E=N=null}};v.scope.on();const q=v.effect=new Vy(U);v.scope.off();const x=v.update=q.run.bind(q),K=v.job=q.runIfDirty.bind(q);K.i=v,K.id=v.uid,q.scheduler=()=>Nd(K),ei(v,!0),x()},ae=(v,S,E)=>{S.component=v;const N=v.vnode.props;v.vnode=S,v.next=null,nA(v,S.props,N,E),aA(v,S.children,E),Vn(),ag(v),qn()},G=(v,S,E,N,P,J,te,U,q=!1)=>{const x=v&&v.children,K=v?v.shapeFlag:0,Y=S.children,{patchFlag:le,shapeFlag:y}=S;if(le>0){if(le&128){de(x,Y,E,N,P,J,te,U,q);return}else if(le&256){pe(x,Y,E,N,P,J,te,U,q);return}}y&8?(K&16&&ye(x,P,J),Y!==x&&c(E,Y)):K&16?y&16?de(x,Y,E,N,P,J,te,U,q):ye(x,P,J,!0):(K&8&&c(E,""),y&16&&j(Y,E,N,P,J,te,U,q))},pe=(v,S,E,N,P,J,te,U,q)=>{v=v||_o,S=S||_o;const x=v.length,K=S.length,Y=Math.min(x,K);let le;for(le=0;le<Y;le++){const y=S[le]=q?Dn(S[le]):Rr(S[le]);b(v[le],y,E,null,P,J,te,U,q)}x>K?ye(v,P,J,!0,!1,Y):j(S,E,N,P,J,te,U,q,Y)},de=(v,S,E,N,P,J,te,U,q)=>{let x=0;const K=S.length;let Y=v.length-1,le=K-1;for(;x<=Y&&x<=le;){const y=v[x],h=S[x]=q?Dn(S[x]):Rr(S[x]);if(rs(y,h))b(y,h,E,null,P,J,te,U,q);else break;x++}for(;x<=Y&&x<=le;){const y=v[Y],h=S[le]=q?Dn(S[le]):Rr(S[le]);if(rs(y,h))b(y,h,E,null,P,J,te,U,q);else break;Y--,le--}if(x>Y){if(x<=le){const y=le+1,h=y<K?S[y].el:N;for(;x<=le;)b(null,S[x]=q?Dn(S[x]):Rr(S[x]),E,h,P,J,te,U,q),x++}}else if(x>le)for(;x<=Y;)O(v[x],P,J,!0),x++;else{const y=x,h=x,f=new Map;for(x=h;x<=le;x++){const Te=S[x]=q?Dn(S[x]):Rr(S[x]);Te.key!=null&&f.set(Te.key,x)}let g,w=0;const I=le-h+1;let W=!1,ce=0;const xe=new Array(I);for(x=0;x<I;x++)xe[x]=0;for(x=y;x<=Y;x++){const Te=v[x];if(w>=I){O(Te,P,J,!0);continue}let Oe;if(Te.key!=null)Oe=f.get(Te.key);else for(g=h;g<=le;g++)if(xe[g-h]===0&&rs(Te,S[g])){Oe=g;break}Oe===void 0?O(Te,P,J,!0):(xe[Oe-h]=x+1,Oe>=ce?ce=Oe:W=!0,b(Te,S[Oe],E,null,P,J,te,U,q),w++)}const ke=W?fA(xe):_o;for(g=ke.length-1,x=I-1;x>=0;x--){const Te=h+x,Oe=S[Te],Re=Te+1<K?S[Te+1].el:N;xe[x]===0?b(null,Oe,E,Re,P,J,te,U,q):W&&(g<0||x!==ke[g]?ge(Oe,E,Re,2):g--)}}},ge=(v,S,E,N,P=null)=>{const{el:J,type:te,transition:U,children:q,shapeFlag:x}=v;if(x&6){ge(v.component.subTree,S,E,N);return}if(x&128){v.suspense.move(S,E,N);return}if(x&64){te.move(v,S,E,he);return}if(te===nr){n(J,S,E);for(let Y=0;Y<q.length;Y++)ge(q[Y],S,E,N);n(v.anchor,S,E);return}if(te===La){A(v,S,E);return}if(N!==2&&x&1&&U)if(N===0)U.beforeEnter(J),n(J,S,E),Vt(()=>U.enter(J),P);else{const{leave:Y,delayLeave:le,afterLeave:y}=U,h=()=>n(J,S,E),f=()=>{Y(J,()=>{h(),y&&y()})};le?le(J,h,f):f()}else n(J,S,E)},O=(v,S,E,N=!1,P=!1)=>{const{type:J,props:te,ref:U,children:q,dynamicChildren:x,shapeFlag:K,patchFlag:Y,dirs:le,cacheIndex:y}=v;if(Y===-2&&(P=!1),U!=null&&tf(U,null,E,v,!0),y!=null&&(S.renderCache[y]=void 0),K&256){S.ctx.deactivate(v);return}const h=K&1&&le,f=!Eo(v);let g;if(f&&(g=te&&te.onVnodeBeforeUnmount)&&Er(g,S,v),K&6)ve(v.component,E,N);else{if(K&128){v.suspense.unmount(E,N);return}h&&Zn(v,null,S,"beforeUnmount"),K&64?v.type.remove(v,S,E,he,N):x&&!x.hasOnce&&(J!==nr||Y>0&&Y&64)?ye(x,S,E,!1,!0):(J===nr&&Y&384||!P&&K&16)&&ye(q,S,E),N&&ie(v)}(f&&(g=te&&te.onVnodeUnmounted)||h)&&Vt(()=>{g&&Er(g,S,v),h&&Zn(v,null,S,"unmounted")},E)},ie=v=>{const{type:S,el:E,anchor:N,transition:P}=v;if(S===nr){me(E,N);return}if(S===La){M(v);return}const J=()=>{o(E),P&&!P.persisted&&P.afterLeave&&P.afterLeave()};if(v.shapeFlag&1&&P&&!P.persisted){const{leave:te,delayLeave:U}=P,q=()=>te(E,J);U?U(v.el,J,q):q()}else J()},me=(v,S)=>{let E;for(;v!==S;)E=p(v),o(v),v=E;o(S)},ve=(v,S,E)=>{const{bum:N,scope:P,job:J,subTree:te,um:U,m:q,a:x}=v;dg(q),dg(x),N&&Na(N),P.stop(),J&&(J.flags|=8,O(te,v,S,E)),U&&Vt(U,S),Vt(()=>{v.isUnmounted=!0},S),S&&S.pendingBranch&&!S.isUnmounted&&v.asyncDep&&!v.asyncResolved&&v.suspenseId===S.pendingId&&(S.deps--,S.deps===0&&S.resolve())},ye=(v,S,E,N=!1,P=!1,J=0)=>{for(let te=J;te<v.length;te++)O(v[te],S,E,N,P)},V=v=>{if(v.shapeFlag&6)return V(v.component.subTree);if(v.shapeFlag&128)return v.suspense.next();const S=p(v.anchor||v.el),E=S&&S[MS];return E?p(E):S};let F=!1;const Z=(v,S,E)=>{v==null?S._vnode&&O(S._vnode,null,null,!0):b(S._vnode||null,v,S,null,null,null,E),S._vnode=v,F||(F=!0,ag(),l_(),F=!1)},he={p:b,um:O,m:ge,r:ie,mt:oe,mc:j,pc:G,pbc:se,n:V,o:e};let fe,ee;return{render:Z,hydrate:fe,createApp:eA(Z,fe)}}function ju({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function ei({effect:e,job:t},r){r?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function cA(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function I_(e,t,r=!1){const n=e.children,o=t.children;if(De(n)&&De(o))for(let i=0;i<n.length;i++){const s=n[i];let a=o[i];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=o[i]=Dn(o[i]),a.el=s.el),!r&&a.patchFlag!==-2&&I_(s,a)),a.type===Yl&&(a.el=s.el)}}function fA(e){const t=e.slice(),r=[0];let n,o,i,s,a;const l=e.length;for(n=0;n<l;n++){const u=e[n];if(u!==0){if(o=r[r.length-1],e[o]<u){t[n]=o,r.push(n);continue}for(i=0,s=r.length-1;i<s;)a=i+s>>1,e[r[a]]<u?i=a+1:s=a;u<e[r[i]]&&(i>0&&(t[n]=r[i-1]),r[i]=n)}}for(i=r.length,s=r[i-1];i-- >0;)r[i]=s,s=t[s];return r}function C_(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:C_(t)}function dg(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const hA=Symbol.for("v-scx"),dA=()=>Pa(hA);function c3(e,t){return Bd(e,null,t)}function Wu(e,t,r){return Bd(e,t,r)}function Bd(e,t,r=ze){const{immediate:n,deep:o,flush:i,once:s}=r,a=yt({},r);let l;if(zl)if(i==="sync"){const p=dA();l=p.__watcherHandles||(p.__watcherHandles=[])}else if(!t||n)a.once=!0;else{const p=()=>{};return p.stop=Nr,p.resume=Nr,p.pause=Nr,p}const u=Nt;a.call=(p,m,_)=>Ur(p,u,m,_);let c=!1;i==="post"?a.scheduler=p=>{Vt(p,u&&u.suspense)}:i!=="sync"&&(c=!0,a.scheduler=(p,m)=>{m?p():Nd(p)}),a.augmentJob=p=>{t&&(p.flags|=4),c&&(p.flags|=2,u&&(p.id=u.uid,p.i=u))};const d=xS(e,t,a);return l&&l.push(d),d}function pA(e,t,r){const n=this.proxy,o=ft(e)?e.includes(".")?R_(n,e):()=>n[e]:e.bind(n,n);let i;Be(t)?i=t:(i=t.handler,r=t);const s=qs(this),a=Bd(o,i.bind(n),r);return s(),a}function R_(e,t){const r=t.split(".");return()=>{let n=e;for(let o=0;o<r.length&&n;o++)n=n[r[o]];return n}}const gA=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${$n(t)}Modifiers`]||e[`${Bi(t)}Modifiers`];function mA(e,t,...r){if(e.isUnmounted)return;const n=e.vnode.props||ze;let o=r;const i=t.startsWith("update:"),s=i&&gA(n,t.slice(7));s&&(s.trim&&(o=r.map(c=>ft(c)?c.trim():c)),s.number&&(o=r.map(Qc)));let a,l=n[a=Lu(t)]||n[a=Lu($n(t))];!l&&i&&(l=n[a=Lu(Bi(t))]),l&&Ur(l,e,6,o);const u=n[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Ur(u,e,6,o)}}function O_(e,t,r=!1){const n=t.emitsCache,o=n.get(e);if(o!==void 0)return o;const i=e.emits;let s={},a=!1;if(!Be(e)){const l=u=>{const c=O_(u,t,!0);c&&(a=!0,yt(s,c))};!r&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!a?(Je(e)&&n.set(e,null),null):(De(i)?i.forEach(l=>s[l]=null):yt(s,i),Je(e)&&n.set(e,s),s)}function Kl(e,t){return!e||!$l(t)?!1:(t=t.slice(2).replace(/Once$/,""),je(e,t[0].toLowerCase()+t.slice(1))||je(e,Bi(t))||je(e,t))}function Hu(e){const{type:t,vnode:r,proxy:n,withProxy:o,propsOptions:[i],slots:s,attrs:a,emit:l,render:u,renderCache:c,props:d,data:p,setupState:m,ctx:_,inheritAttrs:b}=e,T=al(e);let k,C;try{if(r.shapeFlag&4){const M=o||n,$=M;k=Rr(u.call($,M,c,d,m,p,_)),C=a}else{const M=t;k=Rr(M.length>1?M(d,{attrs:a,slots:s,emit:l}):M(d,null)),C=t.props?a:yA(a)}}catch(M){xs.length=0,Vl(M,e,1),k=br(Fn)}let A=k;if(C&&b!==!1){const M=Object.keys(C),{shapeFlag:$}=A;M.length&&$&7&&(i&&M.some(yd)&&(C=_A(C,i)),A=Oo(A,C,!1,!0))}return r.dirs&&(A=Oo(A,null,!1,!0),A.dirs=A.dirs?A.dirs.concat(r.dirs):r.dirs),r.transition&&Pd(A,r.transition),k=A,al(T),k}const yA=e=>{let t;for(const r in e)(r==="class"||r==="style"||$l(r))&&((t||(t={}))[r]=e[r]);return t},_A=(e,t)=>{const r={};for(const n in e)(!yd(n)||!(n.slice(9)in t))&&(r[n]=e[n]);return r};function bA(e,t,r){const{props:n,children:o,component:i}=e,{props:s,children:a,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&l>=0){if(l&1024)return!0;if(l&16)return n?pg(n,s,u):!!s;if(l&8){const c=t.dynamicProps;for(let d=0;d<c.length;d++){const p=c[d];if(s[p]!==n[p]&&!Kl(u,p))return!0}}}else return(o||a)&&(!a||!a.$stable)?!0:n===s?!1:n?s?pg(n,s,u):!0:!!s;return!1}function pg(e,t,r){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let o=0;o<n.length;o++){const i=n[o];if(t[i]!==e[i]&&!Kl(r,i))return!0}return!1}function wA({vnode:e,parent:t},r){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=r,t=t.parent;else break}}const k_=e=>e.__isSuspense;function vA(e,t){t&&t.pendingBranch?De(e)?t.effects.push(...e):t.effects.push(e):OS(e)}const nr=Symbol.for("v-fgt"),Yl=Symbol.for("v-txt"),Fn=Symbol.for("v-cmt"),La=Symbol.for("v-stc"),xs=[];let zt=null;function af(e=!1){xs.push(zt=e?null:[])}function EA(){xs.pop(),zt=xs[xs.length-1]||null}let Ds=1;function gg(e){Ds+=e,e<0&&zt&&(zt.hasOnce=!0)}function M_(e){return e.dynamicChildren=Ds>0?zt||_o:null,EA(),Ds>0&&zt&&zt.push(e),e}function f3(e,t,r,n,o,i){return M_(P_(e,t,r,n,o,i,!0))}function lf(e,t,r,n,o){return M_(br(e,t,r,n,o,!0))}function $d(e){return e?e.__v_isVNode===!0:!1}function rs(e,t){return e.type===t.type&&e.key===t.key}const N_=({key:e})=>e??null,Da=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?ft(e)||It(e)||Be(e)?{i:xt,r:e,k:t,f:!!r}:e:null);function P_(e,t=null,r=null,n=0,o=null,i=e===nr?0:1,s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&N_(t),ref:t&&Da(t),scopeId:c_,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:xt};return a?(Ud(l,r),i&128&&e.normalize(l)):r&&(l.shapeFlag|=ft(r)?8:16),Ds>0&&!s&&zt&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&zt.push(l),l}const br=SA;function SA(e,t=null,r=null,n=0,o=null,i=!1){if((!e||e===KS)&&(e=Fn),$d(e)){const a=Oo(e,t,!0);return r&&Ud(a,r),Ds>0&&!i&&zt&&(a.shapeFlag&6?zt[zt.indexOf(e)]=a:zt.push(a)),a.patchFlag=-2,a}if(PA(e)&&(e=e.__vccOpts),t){t=AA(t);let{class:a,style:l}=t;a&&!ft(a)&&(t.class=vd(a)),Je(l)&&(Od(l)&&!De(l)&&(l=yt({},l)),t.style=wd(l))}const s=ft(e)?1:k_(e)?128:NS(e)?64:Je(e)?4:Be(e)?2:0;return P_(e,t,r,n,o,s,i,!0)}function AA(e){return e?Od(e)||w_(e)?yt({},e):e:null}function Oo(e,t,r=!1,n=!1){const{props:o,ref:i,patchFlag:s,children:a,transition:l}=e,u=t?xA(o||{},t):o,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&N_(u),ref:t&&t.ref?r&&i?De(i)?i.concat(Da(t)):[i,Da(t)]:Da(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==nr?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Oo(e.ssContent),ssFallback:e.ssFallback&&Oo(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&n&&Pd(c,l.clone(c)),c}function TA(e=" ",t=0){return br(Yl,null,e,t)}function h3(e,t){const r=br(La,null,e);return r.staticCount=t,r}function d3(e="",t=!1){return t?(af(),lf(Fn,null,e)):br(Fn,null,e)}function Rr(e){return e==null||typeof e=="boolean"?br(Fn):De(e)?br(nr,null,e.slice()):$d(e)?Dn(e):br(Yl,null,String(e))}function Dn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Oo(e)}function Ud(e,t){let r=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(De(t))r=16;else if(typeof t=="object")if(n&65){const o=t.default;o&&(o._c&&(o._d=!1),Ud(e,o()),o._c&&(o._d=!0));return}else{r=32;const o=t._;!o&&!w_(t)?t._ctx=xt:o===3&&xt&&(xt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Be(t)?(t={default:t,_ctx:xt},r=32):(t=String(t),n&64?(r=16,t=[TA(t)]):r=8);e.children=t,e.shapeFlag|=r}function xA(...e){const t={};for(let r=0;r<e.length;r++){const n=e[r];for(const o in n)if(o==="class")t.class!==n.class&&(t.class=vd([t.class,n.class]));else if(o==="style")t.style=wd([t.style,n.style]);else if($l(o)){const i=t[o],s=n[o];s&&i!==s&&!(De(i)&&i.includes(s))&&(t[o]=i?[].concat(i,s):s)}else o!==""&&(t[o]=n[o])}return t}function Er(e,t,r,n=null){Ur(e,t,7,[r,n])}const IA=y_();let CA=0;function RA(e,t,r){const n=e.type,o=(t?t.appContext:e.appContext)||IA,i={uid:CA++,vnode:e,type:n,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new zE(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:E_(n,o),emitsOptions:O_(n,o),emit:null,emitted:null,propsDefaults:ze,inheritAttrs:n.inheritAttrs,ctx:ze,data:ze,props:ze,attrs:ze,slots:ze,refs:ze,setupState:ze,setupContext:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=mA.bind(null,i),e.ce&&e.ce(i),i}let Nt=null,ul,uf;{const e=Uy(),t=(r,n)=>{let o;return(o=e[r])||(o=e[r]=[]),o.push(n),i=>{o.length>1?o.forEach(s=>s(i)):o[0](i)}};ul=t("__VUE_INSTANCE_SETTERS__",r=>Nt=r),uf=t("__VUE_SSR_SETTERS__",r=>zl=r)}const qs=e=>{const t=Nt;return ul(e),e.scope.on(),()=>{e.scope.off(),ul(t)}},mg=()=>{Nt&&Nt.scope.off(),ul(null)};function L_(e){return e.vnode.shapeFlag&4}let zl=!1;function OA(e,t=!1,r=!1){t&&uf(t);const{props:n,children:o}=e.vnode,i=L_(e);rA(e,n,i,t),sA(e,o,r);const s=i?kA(e,t):void 0;return t&&uf(!1),s}function kA(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,YS);const{setup:n}=r;if(n){const o=e.setupContext=n.length>1?NA(e):null,i=qs(e);Vn();const s=Vs(n,e,0,[e.props,o]);if(qn(),i(),Py(s)){if(Eo(e)||f_(e),s.then(mg,mg),t)return s.then(a=>{yg(e,a,t)}).catch(a=>{Vl(a,e,0)});e.asyncDep=s}else yg(e,s,t)}else D_(e,t)}function yg(e,t,r){Be(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Je(t)&&(e.setupState=o_(t)),D_(e,r)}let _g;function D_(e,t,r){const n=e.type;if(!e.render){if(!t&&_g&&!n.render){const o=n.template||Ld(e).template;if(o){const{isCustomElement:i,compilerOptions:s}=e.appContext.config,{delimiters:a,compilerOptions:l}=n,u=yt(yt({isCustomElement:i,delimiters:a},s),l);n.render=_g(o,u)}}e.render=n.render||Nr}{const o=qs(e);Vn();try{zS(e)}finally{qn(),o()}}}const MA={get(e,t){return Rt(e,"get",""),e[t]}};function NA(e){const t=r=>{e.exposed=r||{}};return{attrs:new Proxy(e.attrs,MA),slots:e.slots,emit:e.emit,expose:t}}function Gl(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(o_(_S(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in Ts)return Ts[r](e)},has(t,r){return r in t||r in Ts}})):e.proxy}function PA(e){return Be(e)&&"__vccOpts"in e}const LA=(e,t)=>AS(e,t,zl),DA="3.5.10";/**
+* @vue/runtime-dom v3.5.10
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let cf;const bg=typeof window<"u"&&window.trustedTypes;if(bg)try{cf=bg.createPolicy("vue",{createHTML:e=>e})}catch{}const B_=cf?e=>cf.createHTML(e):e=>e,BA="http://www.w3.org/2000/svg",$A="http://www.w3.org/1998/Math/MathML",Qr=typeof document<"u"?document:null,wg=Qr&&Qr.createElement("template"),UA={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,n)=>{const o=t==="svg"?Qr.createElementNS(BA,e):t==="mathml"?Qr.createElementNS($A,e):r?Qr.createElement(e,{is:r}):Qr.createElement(e);return e==="select"&&n&&n.multiple!=null&&o.setAttribute("multiple",n.multiple),o},createText:e=>Qr.createTextNode(e),createComment:e=>Qr.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Qr.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,n,o,i){const s=r?r.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),r),!(o===i||!(o=o.nextSibling)););else{wg.innerHTML=B_(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const a=wg.content;if(n==="svg"||n==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,r)}return[s?s.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},FA=Symbol("_vtc");function jA(e,t,r){const n=e[FA];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const cl=Symbol("_vod"),$_=Symbol("_vsh"),p3={beforeMount(e,{value:t},{transition:r}){e[cl]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):ns(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:n}){!t!=!r&&(n?t?(n.beforeEnter(e),ns(e,!0),n.enter(e)):n.leave(e,()=>{ns(e,!1)}):ns(e,t))},beforeUnmount(e,{value:t}){ns(e,t)}};function ns(e,t){e.style.display=t?e[cl]:"none",e[$_]=!t}const WA=Symbol(""),HA=/(^|;)\s*display\s*:/;function VA(e,t,r){const n=e.style,o=ft(r);let i=!1;if(r&&!o){if(t)if(ft(t))for(const s of t.split(";")){const a=s.slice(0,s.indexOf(":")).trim();r[a]==null&&Ba(n,a,"")}else for(const s in t)r[s]==null&&Ba(n,s,"");for(const s in r)s==="display"&&(i=!0),Ba(n,s,r[s])}else if(o){if(t!==r){const s=n[WA];s&&(r+=";"+s),n.cssText=r,i=HA.test(r)}}else t&&e.removeAttribute("style");cl in e&&(e[cl]=i?n.display:"",e[$_]&&(n.display="none"))}const vg=/\s*!important$/;function Ba(e,t,r){if(De(r))r.forEach(n=>Ba(e,t,n));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const n=qA(e,t);vg.test(r)?e.setProperty(Bi(n),r.replace(vg,""),"important"):e[n]=r}}const Eg=["Webkit","Moz","ms"],Vu={};function qA(e,t){const r=Vu[t];if(r)return r;let n=$n(t);if(n!=="filter"&&n in e)return Vu[t]=n;n=By(n);for(let o=0;o<Eg.length;o++){const i=Eg[o]+n;if(i in e)return Vu[t]=i}return t}const Sg="http://www.w3.org/1999/xlink";function Ag(e,t,r,n,o,i=qE(t)){n&&t.startsWith("xlink:")?r==null?e.removeAttributeNS(Sg,t.slice(6,t.length)):e.setAttributeNS(Sg,t,r):r==null||i&&!Fy(r)?e.removeAttribute(t):e.setAttribute(t,i?"":$r(r)?String(r):r)}function Tg(e,t,r,n){if(t==="innerHTML"||t==="textContent"){r!=null&&(e[t]=t==="innerHTML"?B_(r):r);return}const o=e.tagName;if(t==="value"&&o!=="PROGRESS"&&!o.includes("-")){const s=o==="OPTION"?e.getAttribute("value")||"":e.value,a=r==null?e.type==="checkbox"?"on":"":String(r);(s!==a||!("_value"in e))&&(e.value=a),r==null&&e.removeAttribute(t),e._value=r;return}let i=!1;if(r===""||r==null){const s=typeof e[t];s==="boolean"?r=Fy(r):r==null&&s==="string"?(r="",i=!0):s==="number"&&(r=0,i=!0)}try{e[t]=r}catch{}i&&e.removeAttribute(t)}function di(e,t,r,n){e.addEventListener(t,r,n)}function KA(e,t,r,n){e.removeEventListener(t,r,n)}const xg=Symbol("_vei");function YA(e,t,r,n,o=null){const i=e[xg]||(e[xg]={}),s=i[t];if(n&&s)s.value=n;else{const[a,l]=zA(t);if(n){const u=i[t]=XA(n,o);di(e,a,u,l)}else s&&(KA(e,a,s,l),i[t]=void 0)}}const Ig=/(?:Once|Passive|Capture)$/;function zA(e){let t;if(Ig.test(e)){t={};let n;for(;n=e.match(Ig);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Bi(e.slice(2)),t]}let qu=0;const GA=Promise.resolve(),QA=()=>qu||(GA.then(()=>qu=0),qu=Date.now());function XA(e,t){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;Ur(JA(n,r.value),t,5,[n])};return r.value=e,r.attached=QA(),r}function JA(e,t){if(De(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(n=>o=>!o._stopped&&n&&n(o))}else return t}const Cg=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ZA=(e,t,r,n,o,i)=>{const s=o==="svg";t==="class"?jA(e,n,s):t==="style"?VA(e,r,n):$l(t)?yd(t)||YA(e,t,r,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):eT(e,t,n,s))?(Tg(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ag(e,t,n,s,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ft(n))?Tg(e,$n(t),n):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Ag(e,t,n,s))};function eT(e,t,r,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Cg(t)&&Be(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Cg(t)&&ft(r)?!1:t in e}const fl=e=>{const t=e.props["onUpdate:modelValue"]||!1;return De(t)?r=>Na(t,r):t};function tT(e){e.target.composing=!0}function Rg(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ao=Symbol("_assign"),g3={created(e,{modifiers:{lazy:t,trim:r,number:n}},o){e[Ao]=fl(o);const i=n||o.props&&o.props.type==="number";di(e,t?"change":"input",s=>{if(s.target.composing)return;let a=e.value;r&&(a=a.trim()),i&&(a=Qc(a)),e[Ao](a)}),r&&di(e,"change",()=>{e.value=e.value.trim()}),t||(di(e,"compositionstart",tT),di(e,"compositionend",Rg),di(e,"change",Rg))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:r,modifiers:{lazy:n,trim:o,number:i}},s){if(e[Ao]=fl(s),e.composing)return;const a=(i||e.type==="number")&&!/^0\d/.test(e.value)?Qc(e.value):e.value,l=t??"";a!==l&&(document.activeElement===e&&e.type!=="range"&&(n&&t===r||o&&e.value.trim()===l)||(e.value=l))}},m3={deep:!0,created(e,t,r){e[Ao]=fl(r),di(e,"change",()=>{const n=e._modelValue,o=rT(e),i=e.checked,s=e[Ao];if(De(n)){const a=jy(n,o),l=a!==-1;if(i&&!l)s(n.concat(o));else if(!i&&l){const u=[...n];u.splice(a,1),s(u)}}else if(Ul(n)){const a=new Set(n);i?a.add(o):a.delete(o),s(a)}else s(U_(e,i))})},mounted:Og,beforeUpdate(e,t,r){e[Ao]=fl(r),Og(e,t,r)}};function Og(e,{value:t},r){e._modelValue=t;let n;De(t)?n=jy(t,r.props.value)>-1:Ul(t)?n=t.has(r.props.value):n=jl(t,U_(e,!0)),e.checked!==n&&(e.checked=n)}function rT(e){return"_value"in e?e._value:e.value}function U_(e,t){const r=t?"_trueValue":"_falseValue";return r in e?e[r]:t}const nT=yt({patchProp:ZA},UA);let kg;function iT(){return kg||(kg=lA(nT))}const y3=(...e)=>{const t=iT().createApp(...e),{mount:r}=t;return t.mount=n=>{const o=sT(n);if(!o)return;const i=t._component;!Be(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const s=r(o,!1,oT(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),s},t};function oT(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function sT(e){return ft(e)?document.querySelector(e):e}var Pt="top",Gt="bottom",Qt="right",Lt="left",Ql="auto",Vo=[Pt,Gt,Qt,Lt],ki="start",ko="end",F_="clippingParents",Fd="viewport",oo="popper",j_="reference",ff=Vo.reduce(function(e,t){return e.concat([t+"-"+ki,t+"-"+ko])},[]),jd=[].concat(Vo,[Ql]).reduce(function(e,t){return e.concat([t,t+"-"+ki,t+"-"+ko])},[]),W_="beforeRead",H_="read",V_="afterRead",q_="beforeMain",K_="main",Y_="afterMain",z_="beforeWrite",G_="write",Q_="afterWrite",X_=[W_,H_,V_,q_,K_,Y_,z_,G_,Q_];function Fr(e){return e?(e.nodeName||"").toLowerCase():null}function Xt(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Mi(e){var t=Xt(e).Element;return e instanceof t||e instanceof Element}function sr(e){var t=Xt(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Wd(e){if(typeof ShadowRoot>"u")return!1;var t=Xt(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function aT(e){var t=e.state;Object.keys(t.elements).forEach(function(r){var n=t.styles[r]||{},o=t.attributes[r]||{},i=t.elements[r];!sr(i)||!Fr(i)||(Object.assign(i.style,n),Object.keys(o).forEach(function(s){var a=o[s];a===!1?i.removeAttribute(s):i.setAttribute(s,a===!0?"":a)}))})}function lT(e){var t=e.state,r={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.styles=r,t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach(function(n){var o=t.elements[n],i=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:r[n]),a=s.reduce(function(l,u){return l[u]="",l},{});!sr(o)||!Fr(o)||(Object.assign(o.style,a),Object.keys(i).forEach(function(l){o.removeAttribute(l)}))})}}const Hd={name:"applyStyles",enabled:!0,phase:"write",fn:aT,effect:lT,requires:["computeStyles"]};function Pr(e){return e.split("-")[0]}var Si=Math.max,hl=Math.min,Mo=Math.round;function hf(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function J_(){return!/^((?!chrome|android).)*safari/i.test(hf())}function No(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!1);var n=e.getBoundingClientRect(),o=1,i=1;t&&sr(e)&&(o=e.offsetWidth>0&&Mo(n.width)/e.offsetWidth||1,i=e.offsetHeight>0&&Mo(n.height)/e.offsetHeight||1);var s=Mi(e)?Xt(e):window,a=s.visualViewport,l=!J_()&&r,u=(n.left+(l&&a?a.offsetLeft:0))/o,c=(n.top+(l&&a?a.offsetTop:0))/i,d=n.width/o,p=n.height/i;return{width:d,height:p,top:c,right:u+d,bottom:c+p,left:u,x:u,y:c}}function Vd(e){var t=No(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function Z_(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Wd(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function fn(e){return Xt(e).getComputedStyle(e)}function uT(e){return["table","td","th"].indexOf(Fr(e))>=0}function Kn(e){return((Mi(e)?e.ownerDocument:e.document)||window.document).documentElement}function Xl(e){return Fr(e)==="html"?e:e.assignedSlot||e.parentNode||(Wd(e)?e.host:null)||Kn(e)}function Mg(e){return!sr(e)||fn(e).position==="fixed"?null:e.offsetParent}function cT(e){var t=/firefox/i.test(hf()),r=/Trident/i.test(hf());if(r&&sr(e)){var n=fn(e);if(n.position==="fixed")return null}var o=Xl(e);for(Wd(o)&&(o=o.host);sr(o)&&["html","body"].indexOf(Fr(o))<0;){var i=fn(o);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||t&&i.willChange==="filter"||t&&i.filter&&i.filter!=="none")return o;o=o.parentNode}return null}function Ks(e){for(var t=Xt(e),r=Mg(e);r&&uT(r)&&fn(r).position==="static";)r=Mg(r);return r&&(Fr(r)==="html"||Fr(r)==="body"&&fn(r).position==="static")?t:r||cT(e)||t}function qd(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Is(e,t,r){return Si(e,hl(t,r))}function fT(e,t,r){var n=Is(e,t,r);return n>r?r:n}function eb(){return{top:0,right:0,bottom:0,left:0}}function tb(e){return Object.assign({},eb(),e)}function rb(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}var hT=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,tb(typeof t!="number"?t:rb(t,Vo))};function dT(e){var t,r=e.state,n=e.name,o=e.options,i=r.elements.arrow,s=r.modifiersData.popperOffsets,a=Pr(r.placement),l=qd(a),u=[Lt,Qt].indexOf(a)>=0,c=u?"height":"width";if(!(!i||!s)){var d=hT(o.padding,r),p=Vd(i),m=l==="y"?Pt:Lt,_=l==="y"?Gt:Qt,b=r.rects.reference[c]+r.rects.reference[l]-s[l]-r.rects.popper[c],T=s[l]-r.rects.reference[l],k=Ks(i),C=k?l==="y"?k.clientHeight||0:k.clientWidth||0:0,A=b/2-T/2,M=d[m],$=C-p[c]-d[_],R=C/2-p[c]/2+A,D=Is(M,R,$),j=l;r.modifiersData[n]=(t={},t[j]=D,t.centerOffset=D-R,t)}}function pT(e){var t=e.state,r=e.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||Z_(t.elements.popper,o)&&(t.elements.arrow=o))}const nb={name:"arrow",enabled:!0,phase:"main",fn:dT,effect:pT,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Po(e){return e.split("-")[1]}var gT={top:"auto",right:"auto",bottom:"auto",left:"auto"};function mT(e,t){var r=e.x,n=e.y,o=t.devicePixelRatio||1;return{x:Mo(r*o)/o||0,y:Mo(n*o)/o||0}}function Ng(e){var t,r=e.popper,n=e.popperRect,o=e.placement,i=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,d=e.isFixed,p=s.x,m=p===void 0?0:p,_=s.y,b=_===void 0?0:_,T=typeof c=="function"?c({x:m,y:b}):{x:m,y:b};m=T.x,b=T.y;var k=s.hasOwnProperty("x"),C=s.hasOwnProperty("y"),A=Lt,M=Pt,$=window;if(u){var R=Ks(r),D="clientHeight",j="clientWidth";if(R===Xt(r)&&(R=Kn(r),fn(R).position!=="static"&&a==="absolute"&&(D="scrollHeight",j="scrollWidth")),R=R,o===Pt||(o===Lt||o===Qt)&&i===ko){M=Gt;var z=d&&R===$&&$.visualViewport?$.visualViewport.height:R[D];b-=z-n.height,b*=l?1:-1}if(o===Lt||(o===Pt||o===Gt)&&i===ko){A=Qt;var se=d&&R===$&&$.visualViewport?$.visualViewport.width:R[j];m-=se-n.width,m*=l?1:-1}}var re=Object.assign({position:a},u&&gT),L=c===!0?mT({x:m,y:b},Xt(r)):{x:m,y:b};if(m=L.x,b=L.y,l){var B;return Object.assign({},re,(B={},B[M]=C?"0":"",B[A]=k?"0":"",B.transform=($.devicePixelRatio||1)<=1?"translate("+m+"px, "+b+"px)":"translate3d("+m+"px, "+b+"px, 0)",B))}return Object.assign({},re,(t={},t[M]=C?b+"px":"",t[A]=k?m+"px":"",t.transform="",t))}function yT(e){var t=e.state,r=e.options,n=r.gpuAcceleration,o=n===void 0?!0:n,i=r.adaptive,s=i===void 0?!0:i,a=r.roundOffsets,l=a===void 0?!0:a,u={placement:Pr(t.placement),variation:Po(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Ng(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ng(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const Kd={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:yT,data:{}};var fa={passive:!0};function _T(e){var t=e.state,r=e.instance,n=e.options,o=n.scroll,i=o===void 0?!0:o,s=n.resize,a=s===void 0?!0:s,l=Xt(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&u.forEach(function(c){c.addEventListener("scroll",r.update,fa)}),a&&l.addEventListener("resize",r.update,fa),function(){i&&u.forEach(function(c){c.removeEventListener("scroll",r.update,fa)}),a&&l.removeEventListener("resize",r.update,fa)}}const Yd={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:_T,data:{}};var bT={left:"right",right:"left",bottom:"top",top:"bottom"};function $a(e){return e.replace(/left|right|bottom|top/g,function(t){return bT[t]})}var wT={start:"end",end:"start"};function Pg(e){return e.replace(/start|end/g,function(t){return wT[t]})}function zd(e){var t=Xt(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Gd(e){return No(Kn(e)).left+zd(e).scrollLeft}function vT(e,t){var r=Xt(e),n=Kn(e),o=r.visualViewport,i=n.clientWidth,s=n.clientHeight,a=0,l=0;if(o){i=o.width,s=o.height;var u=J_();(u||!u&&t==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}return{width:i,height:s,x:a+Gd(e),y:l}}function ET(e){var t,r=Kn(e),n=zd(e),o=(t=e.ownerDocument)==null?void 0:t.body,i=Si(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Si(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+Gd(e),l=-n.scrollTop;return fn(o||r).direction==="rtl"&&(a+=Si(r.clientWidth,o?o.clientWidth:0)-i),{width:i,height:s,x:a,y:l}}function Qd(e){var t=fn(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function ib(e){return["html","body","#document"].indexOf(Fr(e))>=0?e.ownerDocument.body:sr(e)&&Qd(e)?e:ib(Xl(e))}function Cs(e,t){var r;t===void 0&&(t=[]);var n=ib(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),i=Xt(n),s=o?[i].concat(i.visualViewport||[],Qd(n)?n:[]):n,a=t.concat(s);return o?a:a.concat(Cs(Xl(s)))}function df(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ST(e,t){var r=No(e,!1,t==="fixed");return r.top=r.top+e.clientTop,r.left=r.left+e.clientLeft,r.bottom=r.top+e.clientHeight,r.right=r.left+e.clientWidth,r.width=e.clientWidth,r.height=e.clientHeight,r.x=r.left,r.y=r.top,r}function Lg(e,t,r){return t===Fd?df(vT(e,r)):Mi(t)?ST(t,r):df(ET(Kn(e)))}function AT(e){var t=Cs(Xl(e)),r=["absolute","fixed"].indexOf(fn(e).position)>=0,n=r&&sr(e)?Ks(e):e;return Mi(n)?t.filter(function(o){return Mi(o)&&Z_(o,n)&&Fr(o)!=="body"}):[]}function TT(e,t,r,n){var o=t==="clippingParents"?AT(e):[].concat(t),i=[].concat(o,[r]),s=i[0],a=i.reduce(function(l,u){var c=Lg(e,u,n);return l.top=Si(c.top,l.top),l.right=hl(c.right,l.right),l.bottom=hl(c.bottom,l.bottom),l.left=Si(c.left,l.left),l},Lg(e,s,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ob(e){var t=e.reference,r=e.element,n=e.placement,o=n?Pr(n):null,i=n?Po(n):null,s=t.x+t.width/2-r.width/2,a=t.y+t.height/2-r.height/2,l;switch(o){case Pt:l={x:s,y:t.y-r.height};break;case Gt:l={x:s,y:t.y+t.height};break;case Qt:l={x:t.x+t.width,y:a};break;case Lt:l={x:t.x-r.width,y:a};break;default:l={x:t.x,y:t.y}}var u=o?qd(o):null;if(u!=null){var c=u==="y"?"height":"width";switch(i){case ki:l[u]=l[u]-(t[c]/2-r[c]/2);break;case ko:l[u]=l[u]+(t[c]/2-r[c]/2);break}}return l}function Lo(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,i=r.strategy,s=i===void 0?e.strategy:i,a=r.boundary,l=a===void 0?F_:a,u=r.rootBoundary,c=u===void 0?Fd:u,d=r.elementContext,p=d===void 0?oo:d,m=r.altBoundary,_=m===void 0?!1:m,b=r.padding,T=b===void 0?0:b,k=tb(typeof T!="number"?T:rb(T,Vo)),C=p===oo?j_:oo,A=e.rects.popper,M=e.elements[_?C:p],$=TT(Mi(M)?M:M.contextElement||Kn(e.elements.popper),l,c,s),R=No(e.elements.reference),D=ob({reference:R,element:A,strategy:"absolute",placement:o}),j=df(Object.assign({},A,D)),z=p===oo?j:R,se={top:$.top-z.top+k.top,bottom:z.bottom-$.bottom+k.bottom,left:$.left-z.left+k.left,right:z.right-$.right+k.right},re=e.modifiersData.offset;if(p===oo&&re){var L=re[o];Object.keys(se).forEach(function(B){var oe=[Qt,Gt].indexOf(B)>=0?1:-1,ne=[Pt,Gt].indexOf(B)>=0?"y":"x";se[B]+=L[ne]*oe})}return se}function xT(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,i=r.rootBoundary,s=r.padding,a=r.flipVariations,l=r.allowedAutoPlacements,u=l===void 0?jd:l,c=Po(n),d=c?a?ff:ff.filter(function(_){return Po(_)===c}):Vo,p=d.filter(function(_){return u.indexOf(_)>=0});p.length===0&&(p=d);var m=p.reduce(function(_,b){return _[b]=Lo(e,{placement:b,boundary:o,rootBoundary:i,padding:s})[Pr(b)],_},{});return Object.keys(m).sort(function(_,b){return m[_]-m[b]})}function IT(e){if(Pr(e)===Ql)return[];var t=$a(e);return[Pg(e),t,Pg(t)]}function CT(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,i=o===void 0?!0:o,s=r.altAxis,a=s===void 0?!0:s,l=r.fallbackPlacements,u=r.padding,c=r.boundary,d=r.rootBoundary,p=r.altBoundary,m=r.flipVariations,_=m===void 0?!0:m,b=r.allowedAutoPlacements,T=t.options.placement,k=Pr(T),C=k===T,A=l||(C||!_?[$a(T)]:IT(T)),M=[T].concat(A).reduce(function(me,ve){return me.concat(Pr(ve)===Ql?xT(t,{placement:ve,boundary:c,rootBoundary:d,padding:u,flipVariations:_,allowedAutoPlacements:b}):ve)},[]),$=t.rects.reference,R=t.rects.popper,D=new Map,j=!0,z=M[0],se=0;se<M.length;se++){var re=M[se],L=Pr(re),B=Po(re)===ki,oe=[Pt,Gt].indexOf(L)>=0,ne=oe?"width":"height",ue=Lo(t,{placement:re,boundary:c,rootBoundary:d,altBoundary:p,padding:u}),ae=oe?B?Qt:Lt:B?Gt:Pt;$[ne]>R[ne]&&(ae=$a(ae));var G=$a(ae),pe=[];if(i&&pe.push(ue[L]<=0),a&&pe.push(ue[ae]<=0,ue[G]<=0),pe.every(function(me){return me})){z=re,j=!1;break}D.set(re,pe)}if(j)for(var de=_?3:1,ge=function(ve){var ye=M.find(function(V){var F=D.get(V);if(F)return F.slice(0,ve).every(function(Z){return Z})});if(ye)return z=ye,"break"},O=de;O>0;O--){var ie=ge(O);if(ie==="break")break}t.placement!==z&&(t.modifiersData[n]._skip=!0,t.placement=z,t.reset=!0)}}const sb={name:"flip",enabled:!0,phase:"main",fn:CT,requiresIfExists:["offset"],data:{_skip:!1}};function Dg(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Bg(e){return[Pt,Qt,Gt,Lt].some(function(t){return e[t]>=0})}function RT(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,s=Lo(t,{elementContext:"reference"}),a=Lo(t,{altBoundary:!0}),l=Dg(s,n),u=Dg(a,o,i),c=Bg(l),d=Bg(u);t.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}const ab={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:RT};function OT(e,t,r){var n=Pr(e),o=[Lt,Pt].indexOf(n)>=0?-1:1,i=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,s=i[0],a=i[1];return s=s||0,a=(a||0)*o,[Lt,Qt].indexOf(n)>=0?{x:a,y:s}:{x:s,y:a}}function kT(e){var t=e.state,r=e.options,n=e.name,o=r.offset,i=o===void 0?[0,0]:o,s=jd.reduce(function(c,d){return c[d]=OT(d,t.rects,i),c},{}),a=s[t.placement],l=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=s}const lb={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:kT};function MT(e){var t=e.state,r=e.name;t.modifiersData[r]=ob({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const Xd={name:"popperOffsets",enabled:!0,phase:"read",fn:MT,data:{}};function NT(e){return e==="x"?"y":"x"}function PT(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,i=o===void 0?!0:o,s=r.altAxis,a=s===void 0?!1:s,l=r.boundary,u=r.rootBoundary,c=r.altBoundary,d=r.padding,p=r.tether,m=p===void 0?!0:p,_=r.tetherOffset,b=_===void 0?0:_,T=Lo(t,{boundary:l,rootBoundary:u,padding:d,altBoundary:c}),k=Pr(t.placement),C=Po(t.placement),A=!C,M=qd(k),$=NT(M),R=t.modifiersData.popperOffsets,D=t.rects.reference,j=t.rects.popper,z=typeof b=="function"?b(Object.assign({},t.rects,{placement:t.placement})):b,se=typeof z=="number"?{mainAxis:z,altAxis:z}:Object.assign({mainAxis:0,altAxis:0},z),re=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(R){if(i){var B,oe=M==="y"?Pt:Lt,ne=M==="y"?Gt:Qt,ue=M==="y"?"height":"width",ae=R[M],G=ae+T[oe],pe=ae-T[ne],de=m?-j[ue]/2:0,ge=C===ki?D[ue]:j[ue],O=C===ki?-j[ue]:-D[ue],ie=t.elements.arrow,me=m&&ie?Vd(ie):{width:0,height:0},ve=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:eb(),ye=ve[oe],V=ve[ne],F=Is(0,D[ue],me[ue]),Z=A?D[ue]/2-de-F-ye-se.mainAxis:ge-F-ye-se.mainAxis,he=A?-D[ue]/2+de+F+V+se.mainAxis:O+F+V+se.mainAxis,fe=t.elements.arrow&&Ks(t.elements.arrow),ee=fe?M==="y"?fe.clientTop||0:fe.clientLeft||0:0,v=(B=re==null?void 0:re[M])!=null?B:0,S=ae+Z-v-ee,E=ae+he-v,N=Is(m?hl(G,S):G,ae,m?Si(pe,E):pe);R[M]=N,L[M]=N-ae}if(a){var P,J=M==="x"?Pt:Lt,te=M==="x"?Gt:Qt,U=R[$],q=$==="y"?"height":"width",x=U+T[J],K=U-T[te],Y=[Pt,Lt].indexOf(k)!==-1,le=(P=re==null?void 0:re[$])!=null?P:0,y=Y?x:U-D[q]-j[q]-le+se.altAxis,h=Y?U+D[q]+j[q]-le-se.altAxis:K,f=m&&Y?fT(y,U,h):Is(m?y:x,U,m?h:K);R[$]=f,L[$]=f-U}t.modifiersData[n]=L}}const ub={name:"preventOverflow",enabled:!0,phase:"main",fn:PT,requiresIfExists:["offset"]};function LT(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function DT(e){return e===Xt(e)||!sr(e)?zd(e):LT(e)}function BT(e){var t=e.getBoundingClientRect(),r=Mo(t.width)/e.offsetWidth||1,n=Mo(t.height)/e.offsetHeight||1;return r!==1||n!==1}function $T(e,t,r){r===void 0&&(r=!1);var n=sr(t),o=sr(t)&&BT(t),i=Kn(t),s=No(e,o,r),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!r)&&((Fr(t)!=="body"||Qd(i))&&(a=DT(t)),sr(t)?(l=No(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):i&&(l.x=Gd(i))),{x:s.left+a.scrollLeft-l.x,y:s.top+a.scrollTop-l.y,width:s.width,height:s.height}}function UT(e){var t=new Map,r=new Set,n=[];e.forEach(function(i){t.set(i.name,i)});function o(i){r.add(i.name);var s=[].concat(i.requires||[],i.requiresIfExists||[]);s.forEach(function(a){if(!r.has(a)){var l=t.get(a);l&&o(l)}}),n.push(i)}return e.forEach(function(i){r.has(i.name)||o(i)}),n}function FT(e){var t=UT(e);return X_.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function jT(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function WT(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}var $g={placement:"bottom",modifiers:[],strategy:"absolute"};function Ug(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function Jl(e){e===void 0&&(e={});var t=e,r=t.defaultModifiers,n=r===void 0?[]:r,o=t.defaultOptions,i=o===void 0?$g:o;return function(a,l,u){u===void 0&&(u=i);var c={placement:"bottom",orderedModifiers:[],options:Object.assign({},$g,i),modifiersData:{},elements:{reference:a,popper:l},attributes:{},styles:{}},d=[],p=!1,m={state:c,setOptions:function(k){var C=typeof k=="function"?k(c.options):k;b(),c.options=Object.assign({},i,c.options,C),c.scrollParents={reference:Mi(a)?Cs(a):a.contextElement?Cs(a.contextElement):[],popper:Cs(l)};var A=FT(WT([].concat(n,c.options.modifiers)));return c.orderedModifiers=A.filter(function(M){return M.enabled}),_(),m.update()},forceUpdate:function(){if(!p){var k=c.elements,C=k.reference,A=k.popper;if(Ug(C,A)){c.rects={reference:$T(C,Ks(A),c.options.strategy==="fixed"),popper:Vd(A)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(se){return c.modifiersData[se.name]=Object.assign({},se.data)});for(var M=0;M<c.orderedModifiers.length;M++){if(c.reset===!0){c.reset=!1,M=-1;continue}var $=c.orderedModifiers[M],R=$.fn,D=$.options,j=D===void 0?{}:D,z=$.name;typeof R=="function"&&(c=R({state:c,options:j,name:z,instance:m})||c)}}}},update:jT(function(){return new Promise(function(T){m.forceUpdate(),T(c)})}),destroy:function(){b(),p=!0}};if(!Ug(a,l))return m;m.setOptions(u).then(function(T){!p&&u.onFirstUpdate&&u.onFirstUpdate(T)});function _(){c.orderedModifiers.forEach(function(T){var k=T.name,C=T.options,A=C===void 0?{}:C,M=T.effect;if(typeof M=="function"){var $=M({state:c,name:k,instance:m,options:A}),R=function(){};d.push($||R)}})}function b(){d.forEach(function(T){return T()}),d=[]}return m}}var HT=Jl(),VT=[Yd,Xd,Kd,Hd],qT=Jl({defaultModifiers:VT}),KT=[Yd,Xd,Kd,Hd,lb,sb,ub,nb,ab],Jd=Jl({defaultModifiers:KT});const cb=Object.freeze(Object.defineProperty({__proto__:null,afterMain:Y_,afterRead:V_,afterWrite:Q_,applyStyles:Hd,arrow:nb,auto:Ql,basePlacements:Vo,beforeMain:q_,beforeRead:W_,beforeWrite:z_,bottom:Gt,clippingParents:F_,computeStyles:Kd,createPopper:Jd,createPopperBase:HT,createPopperLite:qT,detectOverflow:Lo,end:ko,eventListeners:Yd,flip:sb,hide:ab,left:Lt,main:K_,modifierPhases:X_,offset:lb,placements:jd,popper:oo,popperGenerator:Jl,popperOffsets:Xd,preventOverflow:ub,read:H_,reference:j_,right:Qt,start:ki,top:Pt,variationPlacements:ff,viewport:Fd,write:G_},Symbol.toStringTag,{value:"Module"}));/*!
+  * Bootstrap v5.3.3 (https://getbootstrap.com/)
+  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */const Cn=new Map,Ku={set(e,t,r){Cn.has(e)||Cn.set(e,new Map);const n=Cn.get(e);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,r)},get(e,t){return Cn.has(e)&&Cn.get(e).get(t)||null},remove(e,t){if(!Cn.has(e))return;const r=Cn.get(e);r.delete(t),r.size===0&&Cn.delete(e)}},YT=1e6,zT=1e3,pf="transitionend",fb=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,r)=>`#${CSS.escape(r)}`)),e),GT=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),QT=e=>{do e+=Math.floor(Math.random()*YT);while(document.getElementById(e));return e},XT=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e);const n=Number.parseFloat(t),o=Number.parseFloat(r);return!n&&!o?0:(t=t.split(",")[0],r=r.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(r))*zT)},hb=e=>{e.dispatchEvent(new Event(pf))},un=e=>!e||typeof e!="object"?!1:(typeof e.jquery<"u"&&(e=e[0]),typeof e.nodeType<"u"),jn=e=>un(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(fb(e)):null,qo=e=>{if(!un(e)||e.getClientRects().length===0)return!1;const t=getComputedStyle(e).getPropertyValue("visibility")==="visible",r=e.closest("details:not([open])");if(!r)return t;if(r!==e){const n=e.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return t},Wn=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled<"u"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",db=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?db(e.parentNode):null},dl=()=>{},Ys=e=>{e.offsetHeight},pb=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Yu=[],JT=e=>{document.readyState==="loading"?(Yu.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of Yu)t()}),Yu.push(e)):e()},ar=()=>document.documentElement.dir==="rtl",ur=e=>{JT(()=>{const t=pb();if(t){const r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}})},Ut=(e,t=[],r=e)=>typeof e=="function"?e(...t):r,gb=(e,t,r=!0)=>{if(!r){Ut(e);return}const o=XT(t)+5;let i=!1;const s=({target:a})=>{a===t&&(i=!0,t.removeEventListener(pf,s),Ut(e))};t.addEventListener(pf,s),setTimeout(()=>{i||hb(t)},o)},Zd=(e,t,r,n)=>{const o=e.length;let i=e.indexOf(t);return i===-1?!r&&n?e[o-1]:e[0]:(i+=r?1:-1,n&&(i=(i+o)%o),e[Math.max(0,Math.min(i,o-1))])},ZT=/[^.]*(?=\..*)\.|.*/,ex=/\..*/,tx=/::\d+$/,zu={};let Fg=1;const mb={mouseenter:"mouseover",mouseleave:"mouseout"},rx=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function yb(e,t){return t&&`${t}::${Fg++}`||e.uidEvent||Fg++}function _b(e){const t=yb(e);return e.uidEvent=t,zu[t]=zu[t]||{},zu[t]}function nx(e,t){return function r(n){return ep(n,{delegateTarget:e}),r.oneOff&&Se.off(e,n.type,t),t.apply(e,[n])}}function ix(e,t,r){return function n(o){const i=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of i)if(a===s)return ep(o,{delegateTarget:s}),n.oneOff&&Se.off(e,o.type,t,r),r.apply(s,[o])}}function bb(e,t,r=null){return Object.values(e).find(n=>n.callable===t&&n.delegationSelector===r)}function wb(e,t,r){const n=typeof t=="string",o=n?r:t||r;let i=vb(e);return rx.has(i)||(i=e),[n,o,i]}function jg(e,t,r,n,o){if(typeof t!="string"||!e)return;let[i,s,a]=wb(t,r,n);t in mb&&(s=(_=>function(b){if(!b.relatedTarget||b.relatedTarget!==b.delegateTarget&&!b.delegateTarget.contains(b.relatedTarget))return _.call(this,b)})(s));const l=_b(e),u=l[a]||(l[a]={}),c=bb(u,s,i?r:null);if(c){c.oneOff=c.oneOff&&o;return}const d=yb(s,t.replace(ZT,"")),p=i?ix(e,r,s):nx(e,s);p.delegationSelector=i?r:null,p.callable=s,p.oneOff=o,p.uidEvent=d,u[d]=p,e.addEventListener(a,p,i)}function gf(e,t,r,n,o){const i=bb(t[r],n,o);i&&(e.removeEventListener(r,i,!!o),delete t[r][i.uidEvent])}function ox(e,t,r,n){const o=t[r]||{};for(const[i,s]of Object.entries(o))i.includes(n)&&gf(e,t,r,s.callable,s.delegationSelector)}function vb(e){return e=e.replace(ex,""),mb[e]||e}const Se={on(e,t,r,n){jg(e,t,r,n,!1)},one(e,t,r,n){jg(e,t,r,n,!0)},off(e,t,r,n){if(typeof t!="string"||!e)return;const[o,i,s]=wb(t,r,n),a=s!==t,l=_b(e),u=l[s]||{},c=t.startsWith(".");if(typeof i<"u"){if(!Object.keys(u).length)return;gf(e,l,s,i,o?r:null);return}if(c)for(const d of Object.keys(l))ox(e,l,d,t.slice(1));for(const[d,p]of Object.entries(u)){const m=d.replace(tx,"");(!a||t.includes(m))&&gf(e,l,s,p.callable,p.delegationSelector)}},trigger(e,t,r){if(typeof t!="string"||!e)return null;const n=pb(),o=vb(t),i=t!==o;let s=null,a=!0,l=!0,u=!1;i&&n&&(s=n.Event(t,r),n(e).trigger(s),a=!s.isPropagationStopped(),l=!s.isImmediatePropagationStopped(),u=s.isDefaultPrevented());const c=ep(new Event(t,{bubbles:a,cancelable:!0}),r);return u&&c.preventDefault(),l&&e.dispatchEvent(c),c.defaultPrevented&&s&&s.preventDefault(),c}};function ep(e,t={}){for(const[r,n]of Object.entries(t))try{e[r]=n}catch{Object.defineProperty(e,r,{configurable:!0,get(){return n}})}return e}function Wg(e){if(e==="true")return!0;if(e==="false")return!1;if(e===Number(e).toString())return Number(e);if(e===""||e==="null")return null;if(typeof e!="string")return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function Gu(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const cn={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${Gu(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${Gu(t)}`)},getDataAttributes(e){if(!e)return{};const t={},r=Object.keys(e.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(const n of r){let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1,o.length),t[o]=Wg(e.dataset[n])}return t},getDataAttribute(e,t){return Wg(e.getAttribute(`data-bs-${Gu(t)}`))}};class zs{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,r){const n=un(r)?cn.getDataAttribute(r,"config"):{};return{...this.constructor.Default,...typeof n=="object"?n:{},...un(r)?cn.getDataAttributes(r):{},...typeof t=="object"?t:{}}}_typeCheckConfig(t,r=this.constructor.DefaultType){for(const[n,o]of Object.entries(r)){const i=t[n],s=un(i)?"element":GT(i);if(!new RegExp(o).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${o}".`)}}}const sx="5.3.3";class wr extends zs{constructor(t,r){super(),t=jn(t),t&&(this._element=t,this._config=this._getConfig(r),Ku.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Ku.remove(this._element,this.constructor.DATA_KEY),Se.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,r,n=!0){gb(t,r,n)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Ku.get(jn(t),this.DATA_KEY)}static getOrCreateInstance(t,r={}){return this.getInstance(t)||new this(t,typeof r=="object"?r:null)}static get VERSION(){return sx}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const Qu=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&r!=="#"?r.trim():null}return t?t.split(",").map(r=>fb(r)).join(","):null},Pe={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(r=>r.matches(t))},parents(e,t){const r=[];let n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(r=>!Wn(r)&&qo(r))},getSelectorFromElement(e){const t=Qu(e);return t&&Pe.findOne(t)?t:null},getElementFromSelector(e){const t=Qu(e);return t?Pe.findOne(t):null},getMultipleElementsFromSelector(e){const t=Qu(e);return t?Pe.find(t):[]}},Zl=(e,t="hide")=>{const r=`click.dismiss${e.EVENT_KEY}`,n=e.NAME;Se.on(document,r,`[data-bs-dismiss="${n}"]`,function(o){if(["A","AREA"].includes(this.tagName)&&o.preventDefault(),Wn(this))return;const i=Pe.getElementFromSelector(this)||this.closest(`.${n}`);e.getOrCreateInstance(i)[t]()})},ax="alert",lx="bs.alert",Eb=`.${lx}`,ux=`close${Eb}`,cx=`closed${Eb}`,fx="fade",hx="show";class eu extends wr{static get NAME(){return ax}close(){if(Se.trigger(this._element,ux).defaultPrevented)return;this._element.classList.remove(hx);const r=this._element.classList.contains(fx);this._queueCallback(()=>this._destroyElement(),this._element,r)}_destroyElement(){this._element.remove(),Se.trigger(this._element,cx),this.dispose()}static jQueryInterface(t){return this.each(function(){const r=eu.getOrCreateInstance(this);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}Zl(eu,"close");ur(eu);const dx="button",px="bs.button",gx=`.${px}`,mx=".data-api",yx="active",Hg='[data-bs-toggle="button"]',_x=`click${gx}${mx}`;class tu extends wr{static get NAME(){return dx}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(yx))}static jQueryInterface(t){return this.each(function(){const r=tu.getOrCreateInstance(this);t==="toggle"&&r[t]()})}}Se.on(document,_x,Hg,e=>{e.preventDefault();const t=e.target.closest(Hg);tu.getOrCreateInstance(t).toggle()});ur(tu);const bx="swipe",Ko=".bs.swipe",vx=`touchstart${Ko}`,Ex=`touchmove${Ko}`,Sx=`touchend${Ko}`,Ax=`pointerdown${Ko}`,Tx=`pointerup${Ko}`,xx="touch",Ix="pen",Cx="pointer-event",Rx=40,Ox={endCallback:null,leftCallback:null,rightCallback:null},kx={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class pl extends zs{constructor(t,r){super(),this._element=t,!(!t||!pl.isSupported())&&(this._config=this._getConfig(r),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return Ox}static get DefaultType(){return kx}static get NAME(){return bx}dispose(){Se.off(this._element,Ko)}_start(t){if(!this._supportPointerEvents){this._deltaX=t.touches[0].clientX;return}this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX)}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Ut(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=Rx)return;const r=t/this._deltaX;this._deltaX=0,r&&Ut(r>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(Se.on(this._element,Ax,t=>this._start(t)),Se.on(this._element,Tx,t=>this._end(t)),this._element.classList.add(Cx)):(Se.on(this._element,vx,t=>this._start(t)),Se.on(this._element,Ex,t=>this._move(t)),Se.on(this._element,Sx,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&(t.pointerType===Ix||t.pointerType===xx)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const Mx="carousel",Nx="bs.carousel",Yn=`.${Nx}`,Sb=".data-api",Px="ArrowLeft",Lx="ArrowRight",Dx=500,is="next",Zi="prev",so="left",Ua="right",Bx=`slide${Yn}`,Xu=`slid${Yn}`,$x=`keydown${Yn}`,Ux=`mouseenter${Yn}`,Fx=`mouseleave${Yn}`,jx=`dragstart${Yn}`,Wx=`load${Yn}${Sb}`,Hx=`click${Yn}${Sb}`,Ab="carousel",ha="active",Vx="slide",qx="carousel-item-end",Kx="carousel-item-start",Yx="carousel-item-next",zx="carousel-item-prev",Tb=".active",xb=".carousel-item",Gx=Tb+xb,Qx=".carousel-item img",Xx=".carousel-indicators",Jx="[data-bs-slide], [data-bs-slide-to]",Zx='[data-bs-ride="carousel"]',eI={[Px]:Ua,[Lx]:so},tI={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},rI={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Gs extends wr{constructor(t,r){super(t,r),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Pe.findOne(Xx,this._element),this._addEventListeners(),this._config.ride===Ab&&this.cycle()}static get Default(){return tI}static get DefaultType(){return rI}static get NAME(){return Mx}next(){this._slide(is)}nextWhenVisible(){!document.hidden&&qo(this._element)&&this.next()}prev(){this._slide(Zi)}pause(){this._isSliding&&hb(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){Se.one(this._element,Xu,()=>this.cycle());return}this.cycle()}}to(t){const r=this._getItems();if(t>r.length-1||t<0)return;if(this._isSliding){Se.one(this._element,Xu,()=>this.to(t));return}const n=this._getItemIndex(this._getActive());if(n===t)return;const o=t>n?is:Zi;this._slide(o,r[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&Se.on(this._element,$x,t=>this._keydown(t)),this._config.pause==="hover"&&(Se.on(this._element,Ux,()=>this.pause()),Se.on(this._element,Fx,()=>this._maybeEnableCycle())),this._config.touch&&pl.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const n of Pe.find(Qx,this._element))Se.on(n,jx,o=>o.preventDefault());const r={leftCallback:()=>this._slide(this._directionToOrder(so)),rightCallback:()=>this._slide(this._directionToOrder(Ua)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),Dx+this._config.interval))}};this._swipeHelper=new pl(this._element,r)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const r=eI[t.key];r&&(t.preventDefault(),this._slide(this._directionToOrder(r)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const r=Pe.findOne(Tb,this._indicatorsElement);r.classList.remove(ha),r.removeAttribute("aria-current");const n=Pe.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);n&&(n.classList.add(ha),n.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const r=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=r||this._config.defaultInterval}_slide(t,r=null){if(this._isSliding)return;const n=this._getActive(),o=t===is,i=r||Zd(this._getItems(),n,o,this._config.wrap);if(i===n)return;const s=this._getItemIndex(i),a=m=>Se.trigger(this._element,m,{relatedTarget:i,direction:this._orderToDirection(t),from:this._getItemIndex(n),to:s});if(a(Bx).defaultPrevented||!n||!i)return;const u=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(s),this._activeElement=i;const c=o?Kx:qx,d=o?Yx:zx;i.classList.add(d),Ys(i),n.classList.add(c),i.classList.add(c);const p=()=>{i.classList.remove(c,d),i.classList.add(ha),n.classList.remove(ha,d,c),this._isSliding=!1,a(Xu)};this._queueCallback(p,n,this._isAnimated()),u&&this.cycle()}_isAnimated(){return this._element.classList.contains(Vx)}_getActive(){return Pe.findOne(Gx,this._element)}_getItems(){return Pe.find(xb,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return ar()?t===so?Zi:is:t===so?is:Zi}_orderToDirection(t){return ar()?t===Zi?so:Ua:t===Zi?Ua:so}static jQueryInterface(t){return this.each(function(){const r=Gs.getOrCreateInstance(this,t);if(typeof t=="number"){r.to(t);return}if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Se.on(document,Hx,Jx,function(e){const t=Pe.getElementFromSelector(this);if(!t||!t.classList.contains(Ab))return;e.preventDefault();const r=Gs.getOrCreateInstance(t),n=this.getAttribute("data-bs-slide-to");if(n){r.to(n),r._maybeEnableCycle();return}if(cn.getDataAttribute(this,"slide")==="next"){r.next(),r._maybeEnableCycle();return}r.prev(),r._maybeEnableCycle()});Se.on(window,Wx,()=>{const e=Pe.find(Zx);for(const t of e)Gs.getOrCreateInstance(t)});ur(Gs);const nI="collapse",iI="bs.collapse",Qs=`.${iI}`,oI=".data-api",sI=`show${Qs}`,aI=`shown${Qs}`,lI=`hide${Qs}`,uI=`hidden${Qs}`,cI=`click${Qs}${oI}`,Ju="show",ho="collapse",da="collapsing",fI="collapsed",hI=`:scope .${ho} .${ho}`,dI="collapse-horizontal",pI="width",gI="height",mI=".collapse.show, .collapse.collapsing",mf='[data-bs-toggle="collapse"]',yI={parent:null,toggle:!0},_I={parent:"(null|element)",toggle:"boolean"};class Bs extends wr{constructor(t,r){super(t,r),this._isTransitioning=!1,this._triggerArray=[];const n=Pe.find(mf);for(const o of n){const i=Pe.getSelectorFromElement(o),s=Pe.find(i).filter(a=>a===this._element);i!==null&&s.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return yI}static get DefaultType(){return _I}static get NAME(){return nI}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(mI).filter(a=>a!==this._element).map(a=>Bs.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||Se.trigger(this._element,sI).defaultPrevented)return;for(const a of t)a.hide();const n=this._getDimension();this._element.classList.remove(ho),this._element.classList.add(da),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const o=()=>{this._isTransitioning=!1,this._element.classList.remove(da),this._element.classList.add(ho,Ju),this._element.style[n]="",Se.trigger(this._element,aI)},s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(o,this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown()||Se.trigger(this._element,lI).defaultPrevented)return;const r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,Ys(this._element),this._element.classList.add(da),this._element.classList.remove(ho,Ju);for(const o of this._triggerArray){const i=Pe.getElementFromSelector(o);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([o],!1)}this._isTransitioning=!0;const n=()=>{this._isTransitioning=!1,this._element.classList.remove(da),this._element.classList.add(ho),Se.trigger(this._element,uI)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Ju)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=jn(t.parent),t}_getDimension(){return this._element.classList.contains(dI)?pI:gI}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(mf);for(const r of t){const n=Pe.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(t){const r=Pe.find(hI,this._config.parent);return Pe.find(t,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(t,r){if(t.length)for(const n of t)n.classList.toggle(fI,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(t){const r={};return typeof t=="string"&&/show|hide/.test(t)&&(r.toggle=!1),this.each(function(){const n=Bs.getOrCreateInstance(this,r);if(typeof t=="string"){if(typeof n[t]>"u")throw new TypeError(`No method named "${t}"`);n[t]()}})}}Se.on(document,cI,mf,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();for(const t of Pe.getMultipleElementsFromSelector(this))Bs.getOrCreateInstance(t,{toggle:!1}).toggle()});ur(Bs);const Vg="dropdown",bI="bs.dropdown",$i=`.${bI}`,tp=".data-api",wI="Escape",qg="Tab",vI="ArrowUp",Kg="ArrowDown",EI=2,SI=`hide${$i}`,AI=`hidden${$i}`,TI=`show${$i}`,xI=`shown${$i}`,Ib=`click${$i}${tp}`,Cb=`keydown${$i}${tp}`,II=`keyup${$i}${tp}`,ao="show",CI="dropup",RI="dropend",OI="dropstart",kI="dropup-center",MI="dropdown-center",gi='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',NI=`${gi}.${ao}`,Fa=".dropdown-menu",PI=".navbar",LI=".navbar-nav",DI=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",BI=ar()?"top-end":"top-start",$I=ar()?"top-start":"top-end",UI=ar()?"bottom-end":"bottom-start",FI=ar()?"bottom-start":"bottom-end",jI=ar()?"left-start":"right-start",WI=ar()?"right-start":"left-start",HI="top",VI="bottom",qI={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},KI={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Lr extends wr{constructor(t,r){super(t,r),this._popper=null,this._parent=this._element.parentNode,this._menu=Pe.next(this._element,Fa)[0]||Pe.prev(this._element,Fa)[0]||Pe.findOne(Fa,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return qI}static get DefaultType(){return KI}static get NAME(){return Vg}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Wn(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!Se.trigger(this._element,TI,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(LI))for(const n of[].concat(...document.body.children))Se.on(n,"mouseover",dl);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(ao),this._element.classList.add(ao),Se.trigger(this._element,xI,t)}}hide(){if(Wn(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!Se.trigger(this._element,SI,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))Se.off(n,"mouseover",dl);this._popper&&this._popper.destroy(),this._menu.classList.remove(ao),this._element.classList.remove(ao),this._element.setAttribute("aria-expanded","false"),cn.removeDataAttribute(this._menu,"popper"),Se.trigger(this._element,AI,t)}}_getConfig(t){if(t=super._getConfig(t),typeof t.reference=="object"&&!un(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${Vg.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(typeof cb>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;this._config.reference==="parent"?t=this._parent:un(this._config.reference)?t=jn(this._config.reference):typeof this._config.reference=="object"&&(t=this._config.reference);const r=this._getPopperConfig();this._popper=Jd(t,this._menu,r)}_isShown(){return this._menu.classList.contains(ao)}_getPlacement(){const t=this._parent;if(t.classList.contains(RI))return jI;if(t.classList.contains(OI))return WI;if(t.classList.contains(kI))return HI;if(t.classList.contains(MI))return VI;const r=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(CI)?r?$I:BI:r?FI:UI}_detectNavbar(){return this._element.closest(PI)!==null}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(cn.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Ut(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:r}){const n=Pe.find(DI,this._menu).filter(o=>qo(o));n.length&&Zd(n,r,t===Kg,!n.includes(r)).focus()}static jQueryInterface(t){return this.each(function(){const r=Lr.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}static clearMenus(t){if(t.button===EI||t.type==="keyup"&&t.key!==qg)return;const r=Pe.find(NI);for(const n of r){const o=Lr.getInstance(n);if(!o||o._config.autoClose===!1)continue;const i=t.composedPath(),s=i.includes(o._menu);if(i.includes(o._element)||o._config.autoClose==="inside"&&!s||o._config.autoClose==="outside"&&s||o._menu.contains(t.target)&&(t.type==="keyup"&&t.key===qg||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const a={relatedTarget:o._element};t.type==="click"&&(a.clickEvent=t),o._completeHide(a)}}static dataApiKeydownHandler(t){const r=/input|textarea/i.test(t.target.tagName),n=t.key===wI,o=[vI,Kg].includes(t.key);if(!o&&!n||r&&!n)return;t.preventDefault();const i=this.matches(gi)?this:Pe.prev(this,gi)[0]||Pe.next(this,gi)[0]||Pe.findOne(gi,t.delegateTarget.parentNode),s=Lr.getOrCreateInstance(i);if(o){t.stopPropagation(),s.show(),s._selectMenuItem(t);return}s._isShown()&&(t.stopPropagation(),s.hide(),i.focus())}}Se.on(document,Cb,gi,Lr.dataApiKeydownHandler);Se.on(document,Cb,Fa,Lr.dataApiKeydownHandler);Se.on(document,Ib,Lr.clearMenus);Se.on(document,II,Lr.clearMenus);Se.on(document,Ib,gi,function(e){e.preventDefault(),Lr.getOrCreateInstance(this).toggle()});ur(Lr);const Rb="backdrop",YI="fade",Yg="show",zg=`mousedown.bs.${Rb}`,zI={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},GI={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ob extends zs{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return zI}static get DefaultType(){return GI}static get NAME(){return Rb}show(t){if(!this._config.isVisible){Ut(t);return}this._append();const r=this._getElement();this._config.isAnimated&&Ys(r),r.classList.add(Yg),this._emulateAnimation(()=>{Ut(t)})}hide(t){if(!this._config.isVisible){Ut(t);return}this._getElement().classList.remove(Yg),this._emulateAnimation(()=>{this.dispose(),Ut(t)})}dispose(){this._isAppended&&(Se.off(this._element,zg),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(YI),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=jn(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),Se.on(t,zg,()=>{Ut(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(t){gb(t,this._getElement(),this._config.isAnimated)}}const QI="focustrap",XI="bs.focustrap",gl=`.${XI}`,JI=`focusin${gl}`,ZI=`keydown.tab${gl}`,eC="Tab",tC="forward",Gg="backward",rC={autofocus:!0,trapElement:null},nC={autofocus:"boolean",trapElement:"element"};class kb extends zs{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return rC}static get DefaultType(){return nC}static get NAME(){return QI}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),Se.off(document,gl),Se.on(document,JI,t=>this._handleFocusin(t)),Se.on(document,ZI,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,Se.off(document,gl))}_handleFocusin(t){const{trapElement:r}=this._config;if(t.target===document||t.target===r||r.contains(t.target))return;const n=Pe.focusableChildren(r);n.length===0?r.focus():this._lastTabNavDirection===Gg?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){t.key===eC&&(this._lastTabNavDirection=t.shiftKey?Gg:tC)}}const Qg=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Xg=".sticky-top",pa="padding-right",Jg="margin-right";class yf{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,pa,r=>r+t),this._setElementAttributes(Qg,pa,r=>r+t),this._setElementAttributes(Xg,Jg,r=>r-t)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,pa),this._resetElementAttributes(Qg,pa),this._resetElementAttributes(Xg,Jg)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,r,n){const o=this.getWidth(),i=s=>{if(s!==this._element&&window.innerWidth>s.clientWidth+o)return;this._saveInitialAttribute(s,r);const a=window.getComputedStyle(s).getPropertyValue(r);s.style.setProperty(r,`${n(Number.parseFloat(a))}px`)};this._applyManipulationCallback(t,i)}_saveInitialAttribute(t,r){const n=t.style.getPropertyValue(r);n&&cn.setDataAttribute(t,r,n)}_resetElementAttributes(t,r){const n=o=>{const i=cn.getDataAttribute(o,r);if(i===null){o.style.removeProperty(r);return}cn.removeDataAttribute(o,r),o.style.setProperty(r,i)};this._applyManipulationCallback(t,n)}_applyManipulationCallback(t,r){if(un(t)){r(t);return}for(const n of Pe.find(t,this._element))r(n)}}const iC="modal",oC="bs.modal",lr=`.${oC}`,sC=".data-api",aC="Escape",lC=`hide${lr}`,uC=`hidePrevented${lr}`,Mb=`hidden${lr}`,Nb=`show${lr}`,cC=`shown${lr}`,fC=`resize${lr}`,hC=`click.dismiss${lr}`,dC=`mousedown.dismiss${lr}`,pC=`keydown.dismiss${lr}`,gC=`click${lr}${sC}`,Zg="modal-open",mC="fade",em="show",Zu="modal-static",yC=".modal.show",_C=".modal-dialog",bC=".modal-body",wC='[data-bs-toggle="modal"]',vC={backdrop:!0,focus:!0,keyboard:!0},EC={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Do extends wr{constructor(t,r){super(t,r),this._dialog=Pe.findOne(_C,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new yf,this._addEventListeners()}static get Default(){return vC}static get DefaultType(){return EC}static get NAME(){return iC}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||Se.trigger(this._element,Nb,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Zg),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){!this._isShown||this._isTransitioning||Se.trigger(this._element,lC).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(em),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){Se.off(window,lr),Se.off(this._dialog,lr),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ob({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new kb({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const r=Pe.findOne(bC,this._dialog);r&&(r.scrollTop=0),Ys(this._element),this._element.classList.add(em);const n=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,Se.trigger(this._element,cC,{relatedTarget:t})};this._queueCallback(n,this._dialog,this._isAnimated())}_addEventListeners(){Se.on(this._element,pC,t=>{if(t.key===aC){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),Se.on(window,fC,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),Se.on(this._element,dC,t=>{Se.one(this._element,hC,r=>{if(!(this._element!==t.target||this._element!==r.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Zg),this._resetAdjustments(),this._scrollBar.reset(),Se.trigger(this._element,Mb)})}_isAnimated(){return this._element.classList.contains(mC)}_triggerBackdropTransition(){if(Se.trigger(this._element,uC).defaultPrevented)return;const r=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;n==="hidden"||this._element.classList.contains(Zu)||(r||(this._element.style.overflowY="hidden"),this._element.classList.add(Zu),this._queueCallback(()=>{this._element.classList.remove(Zu),this._queueCallback(()=>{this._element.style.overflowY=n},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,r=this._scrollBar.getWidth(),n=r>0;if(n&&!t){const o=ar()?"paddingLeft":"paddingRight";this._element.style[o]=`${r}px`}if(!n&&t){const o=ar()?"paddingRight":"paddingLeft";this._element.style[o]=`${r}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,r){return this.each(function(){const n=Do.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof n[t]>"u")throw new TypeError(`No method named "${t}"`);n[t](r)}})}}Se.on(document,gC,wC,function(e){const t=Pe.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),Se.one(t,Nb,o=>{o.defaultPrevented||Se.one(t,Mb,()=>{qo(this)&&this.focus()})});const r=Pe.findOne(yC);r&&Do.getInstance(r).hide(),Do.getOrCreateInstance(t).toggle(this)});Zl(Do);ur(Do);const SC="offcanvas",AC="bs.offcanvas",vn=`.${AC}`,Pb=".data-api",TC=`load${vn}${Pb}`,xC="Escape",tm="show",rm="showing",nm="hiding",IC="offcanvas-backdrop",Lb=".offcanvas.show",CC=`show${vn}`,RC=`shown${vn}`,OC=`hide${vn}`,im=`hidePrevented${vn}`,Db=`hidden${vn}`,kC=`resize${vn}`,MC=`click${vn}${Pb}`,NC=`keydown.dismiss${vn}`,PC='[data-bs-toggle="offcanvas"]',LC={backdrop:!0,keyboard:!0,scroll:!1},DC={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Hn extends wr{constructor(t,r){super(t,r),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return LC}static get DefaultType(){return DC}static get NAME(){return SC}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||Se.trigger(this._element,CC,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new yf().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(rm);const n=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(tm),this._element.classList.remove(rm),Se.trigger(this._element,RC,{relatedTarget:t})};this._queueCallback(n,this._element,!0)}hide(){if(!this._isShown||Se.trigger(this._element,OC).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(nm),this._backdrop.hide();const r=()=>{this._element.classList.remove(tm,nm),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new yf().reset(),Se.trigger(this._element,Db)};this._queueCallback(r,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=()=>{if(this._config.backdrop==="static"){Se.trigger(this._element,im);return}this.hide()},r=!!this._config.backdrop;return new Ob({className:IC,isVisible:r,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:r?t:null})}_initializeFocusTrap(){return new kb({trapElement:this._element})}_addEventListeners(){Se.on(this._element,NC,t=>{if(t.key===xC){if(this._config.keyboard){this.hide();return}Se.trigger(this._element,im)}})}static jQueryInterface(t){return this.each(function(){const r=Hn.getOrCreateInstance(this,t);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}Se.on(document,MC,PC,function(e){const t=Pe.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),Wn(this))return;Se.one(t,Db,()=>{qo(this)&&this.focus()});const r=Pe.findOne(Lb);r&&r!==t&&Hn.getInstance(r).hide(),Hn.getOrCreateInstance(t).toggle(this)});Se.on(window,TC,()=>{for(const e of Pe.find(Lb))Hn.getOrCreateInstance(e).show()});Se.on(window,kC,()=>{for(const e of Pe.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(e).position!=="fixed"&&Hn.getOrCreateInstance(e).hide()});Zl(Hn);ur(Hn);const BC=/^aria-[\w-]*$/i,Bb={"*":["class","dir","id","lang","role",BC],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},$C=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),UC=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,FC=(e,t)=>{const r=e.nodeName.toLowerCase();return t.includes(r)?$C.has(r)?!!UC.test(e.nodeValue):!0:t.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function jC(e,t,r){if(!e.length)return e;if(r&&typeof r=="function")return r(e);const o=new window.DOMParser().parseFromString(e,"text/html"),i=[].concat(...o.body.querySelectorAll("*"));for(const s of i){const a=s.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){s.remove();continue}const l=[].concat(...s.attributes),u=[].concat(t["*"]||[],t[a]||[]);for(const c of l)FC(c,u)||s.removeAttribute(c.nodeName)}return o.body.innerHTML}const WC="TemplateFactory",HC={allowList:Bb,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},VC={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},qC={entry:"(string|element|function|null)",selector:"(string|element)"};class KC extends zs{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return HC}static get DefaultType(){return VC}static get NAME(){return WC}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[o,i]of Object.entries(this._config.content))this._setContent(t,i,o);const r=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[r,n]of Object.entries(t))super._typeCheckConfig({selector:r,entry:n},qC)}_setContent(t,r,n){const o=Pe.findOne(n,t);if(o){if(r=this._resolvePossibleFunction(r),!r){o.remove();return}if(un(r)){this._putElementInTemplate(jn(r),o);return}if(this._config.html){o.innerHTML=this._maybeSanitize(r);return}o.textContent=r}}_maybeSanitize(t){return this._config.sanitize?jC(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Ut(t,[this])}_putElementInTemplate(t,r){if(this._config.html){r.innerHTML="",r.append(t);return}r.textContent=t.textContent}}const YC="tooltip",zC=new Set(["sanitize","allowList","sanitizeFn"]),ec="fade",GC="modal",ga="show",QC=".tooltip-inner",om=`.${GC}`,sm="hide.bs.modal",os="hover",tc="focus",XC="click",JC="manual",ZC="hide",eR="hidden",tR="show",rR="shown",nR="inserted",iR="click",oR="focusin",sR="focusout",aR="mouseenter",lR="mouseleave",uR={AUTO:"auto",TOP:"top",RIGHT:ar()?"left":"right",BOTTOM:"bottom",LEFT:ar()?"right":"left"},cR={allowList:Bb,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},fR={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Yo extends wr{constructor(t,r){if(typeof cb>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return cR}static get DefaultType(){return fR}static get NAME(){return YC}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),Se.off(this._element.closest(om),sm,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const t=Se.trigger(this._element,this.constructor.eventName(tR)),n=(db(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();const o=this._getTipElement();this._element.setAttribute("aria-describedby",o.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(o),Se.trigger(this._element,this.constructor.eventName(nR))),this._popper=this._createPopper(o),o.classList.add(ga),"ontouchstart"in document.documentElement)for(const a of[].concat(...document.body.children))Se.on(a,"mouseover",dl);const s=()=>{Se.trigger(this._element,this.constructor.eventName(rR)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(s,this.tip,this._isAnimated())}hide(){if(!this._isShown()||Se.trigger(this._element,this.constructor.eventName(ZC)).defaultPrevented)return;if(this._getTipElement().classList.remove(ga),"ontouchstart"in document.documentElement)for(const o of[].concat(...document.body.children))Se.off(o,"mouseover",dl);this._activeTrigger[XC]=!1,this._activeTrigger[tc]=!1,this._activeTrigger[os]=!1,this._isHovered=null;const n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),Se.trigger(this._element,this.constructor.eventName(eR)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const r=this._getTemplateFactory(t).toHtml();if(!r)return null;r.classList.remove(ec,ga),r.classList.add(`bs-${this.constructor.NAME}-auto`);const n=QT(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(ec),r}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new KC({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[QC]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ec)}_isShown(){return this.tip&&this.tip.classList.contains(ga)}_createPopper(t){const r=Ut(this._config.placement,[this,t,this._element]),n=uR[r.toUpperCase()];return Jd(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_resolvePossibleFunction(t){return Ut(t,[this._element])}_getPopperConfig(t){const r={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return{...r,...Ut(this._config.popperConfig,[r])}}_setListeners(){const t=this._config.trigger.split(" ");for(const r of t)if(r==="click")Se.on(this._element,this.constructor.eventName(iR),this._config.selector,n=>{this._initializeOnDelegatedTarget(n).toggle()});else if(r!==JC){const n=r===os?this.constructor.eventName(aR):this.constructor.eventName(oR),o=r===os?this.constructor.eventName(lR):this.constructor.eventName(sR);Se.on(this._element,n,this._config.selector,i=>{const s=this._initializeOnDelegatedTarget(i);s._activeTrigger[i.type==="focusin"?tc:os]=!0,s._enter()}),Se.on(this._element,o,this._config.selector,i=>{const s=this._initializeOnDelegatedTarget(i);s._activeTrigger[i.type==="focusout"?tc:os]=s._element.contains(i.relatedTarget),s._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},Se.on(this._element.closest(om),sm,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,r){clearTimeout(this._timeout),this._timeout=setTimeout(t,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const r=cn.getDataAttributes(this._element);for(const n of Object.keys(r))zC.has(n)&&delete r[n];return t={...r,...typeof t=="object"&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:jn(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(t[r]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){const r=Yo.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}}ur(Yo);const hR="popover",dR=".popover-header",pR=".popover-body",gR={...Yo.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},mR={...Yo.DefaultType,content:"(null|string|element|function)"};class rp extends Yo{static get Default(){return gR}static get DefaultType(){return mR}static get NAME(){return hR}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[dR]:this._getTitle(),[pR]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){const r=rp.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t]()}})}}ur(rp);const yR="scrollspy",_R="bs.scrollspy",np=`.${_R}`,bR=".data-api",wR=`activate${np}`,am=`click${np}`,vR=`load${np}${bR}`,ER="dropdown-item",eo="active",SR='[data-bs-spy="scroll"]',rc="[href]",AR=".nav, .list-group",lm=".nav-link",TR=".nav-item",xR=".list-group-item",IR=`${lm}, ${TR} > ${lm}, ${xR}`,CR=".dropdown",RR=".dropdown-toggle",OR={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},kR={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class ru extends wr{constructor(t,r){super(t,r),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return OR}static get DefaultType(){return kR}static get NAME(){return yR}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=jn(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,typeof t.threshold=="string"&&(t.threshold=t.threshold.split(",").map(r=>Number.parseFloat(r))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(Se.off(this._config.target,am),Se.on(this._config.target,am,rc,t=>{const r=this._observableSections.get(t.target.hash);if(r){t.preventDefault();const n=this._rootElement||window,o=r.offsetTop-this._element.offsetTop;if(n.scrollTo){n.scrollTo({top:o,behavior:"smooth"});return}n.scrollTop=o}}))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(r=>this._observerCallback(r),t)}_observerCallback(t){const r=s=>this._targetLinks.get(`#${s.target.id}`),n=s=>{this._previousScrollData.visibleEntryTop=s.target.offsetTop,this._process(r(s))},o=(this._rootElement||document.documentElement).scrollTop,i=o>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=o;for(const s of t){if(!s.isIntersecting){this._activeTarget=null,this._clearActiveClass(r(s));continue}const a=s.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(i&&a){if(n(s),!o)return;continue}!i&&!a&&n(s)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Pe.find(rc,this._config.target);for(const r of t){if(!r.hash||Wn(r))continue;const n=Pe.findOne(decodeURI(r.hash),this._element);qo(n)&&(this._targetLinks.set(decodeURI(r.hash),r),this._observableSections.set(r.hash,n))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(eo),this._activateParents(t),Se.trigger(this._element,wR,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(ER)){Pe.findOne(RR,t.closest(CR)).classList.add(eo);return}for(const r of Pe.parents(t,AR))for(const n of Pe.prev(r,IR))n.classList.add(eo)}_clearActiveClass(t){t.classList.remove(eo);const r=Pe.find(`${rc}.${eo}`,t);for(const n of r)n.classList.remove(eo)}static jQueryInterface(t){return this.each(function(){const r=ru.getOrCreateInstance(this,t);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Se.on(window,vR,()=>{for(const e of Pe.find(SR))ru.getOrCreateInstance(e)});ur(ru);const MR="tab",NR="bs.tab",Ui=`.${NR}`,PR=`hide${Ui}`,LR=`hidden${Ui}`,DR=`show${Ui}`,BR=`shown${Ui}`,$R=`click${Ui}`,UR=`keydown${Ui}`,FR=`load${Ui}`,jR="ArrowLeft",um="ArrowRight",WR="ArrowUp",cm="ArrowDown",nc="Home",fm="End",mi="active",hm="fade",ic="show",HR="dropdown",$b=".dropdown-toggle",VR=".dropdown-menu",oc=`:not(${$b})`,qR='.list-group, .nav, [role="tablist"]',KR=".nav-item, .list-group-item",YR=`.nav-link${oc}, .list-group-item${oc}, [role="tab"]${oc}`,Ub='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',sc=`${YR}, ${Ub}`,zR=`.${mi}[data-bs-toggle="tab"], .${mi}[data-bs-toggle="pill"], .${mi}[data-bs-toggle="list"]`;class Bo extends wr{constructor(t){super(t),this._parent=this._element.closest(qR),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),Se.on(this._element,UR,r=>this._keydown(r)))}static get NAME(){return MR}show(){const t=this._element;if(this._elemIsActive(t))return;const r=this._getActiveElem(),n=r?Se.trigger(r,PR,{relatedTarget:t}):null;Se.trigger(t,DR,{relatedTarget:r}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(r,t),this._activate(t,r))}_activate(t,r){if(!t)return;t.classList.add(mi),this._activate(Pe.getElementFromSelector(t));const n=()=>{if(t.getAttribute("role")!=="tab"){t.classList.add(ic);return}t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),Se.trigger(t,BR,{relatedTarget:r})};this._queueCallback(n,t,t.classList.contains(hm))}_deactivate(t,r){if(!t)return;t.classList.remove(mi),t.blur(),this._deactivate(Pe.getElementFromSelector(t));const n=()=>{if(t.getAttribute("role")!=="tab"){t.classList.remove(ic);return}t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),Se.trigger(t,LR,{relatedTarget:r})};this._queueCallback(n,t,t.classList.contains(hm))}_keydown(t){if(![jR,um,WR,cm,nc,fm].includes(t.key))return;t.stopPropagation(),t.preventDefault();const r=this._getChildren().filter(o=>!Wn(o));let n;if([nc,fm].includes(t.key))n=r[t.key===nc?0:r.length-1];else{const o=[um,cm].includes(t.key);n=Zd(r,t.target,o,!0)}n&&(n.focus({preventScroll:!0}),Bo.getOrCreateInstance(n).show())}_getChildren(){return Pe.find(sc,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,r){this._setAttributeIfNotExists(t,"role","tablist");for(const n of r)this._setInitialAttributesOnChild(n)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const r=this._elemIsActive(t),n=this._getOuterElement(t);t.setAttribute("aria-selected",r),n!==t&&this._setAttributeIfNotExists(n,"role","presentation"),r||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const r=Pe.getElementFromSelector(t);r&&(this._setAttributeIfNotExists(r,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(r,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,r){const n=this._getOuterElement(t);if(!n.classList.contains(HR))return;const o=(i,s)=>{const a=Pe.findOne(i,n);a&&a.classList.toggle(s,r)};o($b,mi),o(VR,ic),n.setAttribute("aria-expanded",r)}_setAttributeIfNotExists(t,r,n){t.hasAttribute(r)||t.setAttribute(r,n)}_elemIsActive(t){return t.classList.contains(mi)}_getInnerElement(t){return t.matches(sc)?t:Pe.findOne(sc,t)}_getOuterElement(t){return t.closest(KR)||t}static jQueryInterface(t){return this.each(function(){const r=Bo.getOrCreateInstance(this);if(typeof t=="string"){if(r[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);r[t]()}})}}Se.on(document,$R,Ub,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),!Wn(this)&&Bo.getOrCreateInstance(this).show()});Se.on(window,FR,()=>{for(const e of Pe.find(zR))Bo.getOrCreateInstance(e)});ur(Bo);const GR="toast",QR="bs.toast",zn=`.${QR}`,XR=`mouseover${zn}`,JR=`mouseout${zn}`,ZR=`focusin${zn}`,eO=`focusout${zn}`,tO=`hide${zn}`,rO=`hidden${zn}`,nO=`show${zn}`,iO=`shown${zn}`,oO="fade",dm="hide",ma="show",ya="showing",sO={animation:"boolean",autohide:"boolean",delay:"number"},aO={animation:!0,autohide:!0,delay:5e3};class nu extends wr{constructor(t,r){super(t,r),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return aO}static get DefaultType(){return sO}static get NAME(){return GR}show(){if(Se.trigger(this._element,nO).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(oO);const r=()=>{this._element.classList.remove(ya),Se.trigger(this._element,iO),this._maybeScheduleHide()};this._element.classList.remove(dm),Ys(this._element),this._element.classList.add(ma,ya),this._queueCallback(r,this._element,this._config.animation)}hide(){if(!this.isShown()||Se.trigger(this._element,tO).defaultPrevented)return;const r=()=>{this._element.classList.add(dm),this._element.classList.remove(ya,ma),Se.trigger(this._element,rO)};this._element.classList.add(ya),this._queueCallback(r,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(ma),super.dispose()}isShown(){return this._element.classList.contains(ma)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,r){switch(t.type){case"mouseover":case"mouseout":{this._hasMouseInteraction=r;break}case"focusin":case"focusout":{this._hasKeyboardInteraction=r;break}}if(r){this._clearTimeout();return}const n=t.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){Se.on(this._element,XR,t=>this._onInteraction(t,!0)),Se.on(this._element,JR,t=>this._onInteraction(t,!1)),Se.on(this._element,ZR,t=>this._onInteraction(t,!0)),Se.on(this._element,eO,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const r=nu.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]>"u")throw new TypeError(`No method named "${t}"`);r[t](this)}})}}Zl(nu);ur(nu);var ip=Object.defineProperty,lO=Object.getOwnPropertyDescriptor,uO=Object.getOwnPropertyNames,cO=Object.prototype.hasOwnProperty,_t=(e,t)=>()=>(e&&(t=e(e=0)),t),Ae=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Fi=(e,t)=>{for(var r in t)ip(e,r,{get:t[r],enumerable:!0})},fO=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of uO(t))!cO.call(e,o)&&o!==r&&ip(e,o,{get:()=>t[o],enumerable:!(n=lO(t,o))||n.enumerable});return e},Ge=e=>fO(ip({},"__esModule",{value:!0}),e),_e=_t(()=>{}),We={};Fi(We,{_debugEnd:()=>Qf,_debugProcess:()=>Gf,_events:()=>fh,_eventsCount:()=>hh,_exiting:()=>Lf,_fatalExceptions:()=>Kf,_getActiveHandles:()=>Kb,_getActiveRequests:()=>qb,_kill:()=>$f,_linkedBinding:()=>Hb,_maxListeners:()=>ch,_preload_modules:()=>lh,_rawDebug:()=>Mf,_startProfilerIdleNotifier:()=>Xf,_stopProfilerIdleNotifier:()=>Jf,_tickCallback:()=>zf,abort:()=>rh,addListener:()=>dh,allowedNodeEnvironmentFlags:()=>Vf,arch:()=>bf,argv:()=>Ef,argv0:()=>ah,assert:()=>Yb,binding:()=>If,chdir:()=>Of,config:()=>Df,cpuUsage:()=>ms,cwd:()=>Rf,debugPort:()=>sh,default:()=>sp,dlopen:()=>Vb,domain:()=>Pf,emit:()=>_h,emitWarning:()=>xf,env:()=>vf,execArgv:()=>Sf,execPath:()=>oh,exit:()=>Wf,features:()=>qf,hasUncaughtExceptionCaptureCallback:()=>zb,hrtime:()=>ja,kill:()=>jf,listeners:()=>Qb,memoryUsage:()=>Ff,moduleLoadList:()=>Nf,nextTick:()=>jb,off:()=>gh,on:()=>zr,once:()=>ph,openStdin:()=>Hf,pid:()=>nh,platform:()=>wf,ppid:()=>ih,prependListener:()=>bh,prependOnceListener:()=>wh,reallyExit:()=>Bf,release:()=>kf,removeAllListeners:()=>yh,removeListener:()=>mh,resourceUsage:()=>Uf,setSourceMapsEnabled:()=>uh,setUncaughtExceptionCaptureCallback:()=>Yf,stderr:()=>eh,stdin:()=>th,stdout:()=>Zf,title:()=>_f,umask:()=>Cf,uptime:()=>Gb,version:()=>Af,versions:()=>Tf});function op(e){throw new Error("Node.js process "+e+" is not supported by JSPM core outside of Node.js")}function hO(){!Ai||!yi||(Ai=!1,yi.length?kr=yi.concat(kr):Rs=-1,kr.length&&Fb())}function Fb(){if(!Ai){var e=setTimeout(hO,0);Ai=!0;for(var t=kr.length;t;){for(yi=kr,kr=[];++Rs<t;)yi&&yi[Rs].run();Rs=-1,t=kr.length}yi=null,Ai=!1,clearTimeout(e)}}function jb(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];kr.push(new Wb(e,t)),kr.length===1&&!Ai&&setTimeout(Fb,0)}function Wb(e,t){this.fun=e,this.array=t}function St(){}function Hb(e){op("_linkedBinding")}function Vb(e){op("dlopen")}function qb(){return[]}function Kb(){return[]}function Yb(e,t){if(!e)throw new Error(t||"assertion error")}function zb(){return!1}function Gb(){return Zr.now()/1e3}function ja(e){var t=Math.floor((Date.now()-Zr.now())*.001),r=Zr.now()*.001,n=Math.floor(r)+t,o=Math.floor(r%1*1e9);return e&&(n=n-e[0],o=o-e[1],o<0&&(n--,o+=Wa)),[n,o]}function zr(){return sp}function Qb(e){return[]}var kr,Ai,yi,Rs,_f,bf,wf,vf,Ef,Sf,Af,Tf,xf,If,Cf,Rf,Of,kf,Mf,Nf,Pf,Lf,Df,Bf,$f,ms,Uf,Ff,jf,Wf,Hf,Vf,qf,Kf,Yf,zf,Gf,Qf,Xf,Jf,Zf,eh,th,rh,nh,ih,oh,sh,ah,lh,uh,Zr,ac,Wa,ch,fh,hh,dh,ph,gh,mh,yh,_h,bh,wh,sp,dO=_t(()=>{_e(),we(),be(),kr=[],Ai=!1,Rs=-1,Wb.prototype.run=function(){this.fun.apply(null,this.array)},_f="browser",bf="x64",wf="browser",vf={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},Ef=["/usr/bin/node"],Sf=[],Af="v16.8.0",Tf={},xf=function(e,t){console.warn((t?t+": ":"")+e)},If=function(e){op("binding")},Cf=function(e){return 0},Rf=function(){return"/"},Of=function(e){},kf={name:"node",sourceUrl:"",headersUrl:"",libUrl:""},Mf=St,Nf=[],Pf={},Lf=!1,Df={},Bf=St,$f=St,ms=function(){return{}},Uf=ms,Ff=ms,jf=St,Wf=St,Hf=St,Vf={},qf={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},Kf=St,Yf=St,zf=St,Gf=St,Qf=St,Xf=St,Jf=St,Zf=void 0,eh=void 0,th=void 0,rh=St,nh=2,ih=1,oh="/bin/usr/node",sh=9229,ah="node",lh=[],uh=St,Zr={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0},Zr.now===void 0&&(ac=Date.now(),Zr.timing&&Zr.timing.navigationStart&&(ac=Zr.timing.navigationStart),Zr.now=()=>Date.now()-ac),Wa=1e9,ja.bigint=function(e){var t=ja(e);return typeof BigInt>"u"?t[0]*Wa+t[1]:BigInt(t[0]*Wa)+BigInt(t[1])},ch=10,fh={},hh=0,dh=zr,ph=zr,gh=zr,mh=zr,yh=zr,_h=St,bh=zr,wh=zr,sp={version:Af,versions:Tf,arch:bf,platform:wf,release:kf,_rawDebug:Mf,moduleLoadList:Nf,binding:If,_linkedBinding:Hb,_events:fh,_eventsCount:hh,_maxListeners:ch,on:zr,addListener:dh,once:ph,off:gh,removeListener:mh,removeAllListeners:yh,emit:_h,prependListener:bh,prependOnceListener:wh,listeners:Qb,domain:Pf,_exiting:Lf,config:Df,dlopen:Vb,uptime:Gb,_getActiveRequests:qb,_getActiveHandles:Kb,reallyExit:Bf,_kill:$f,cpuUsage:ms,resourceUsage:Uf,memoryUsage:Ff,kill:jf,exit:Wf,openStdin:Hf,allowedNodeEnvironmentFlags:Vf,assert:Yb,features:qf,_fatalExceptions:Kf,setUncaughtExceptionCaptureCallback:Yf,hasUncaughtExceptionCaptureCallback:zb,emitWarning:xf,nextTick:jb,_tickCallback:zf,_debugProcess:Gf,_debugEnd:Qf,_startProfilerIdleNotifier:Xf,_stopProfilerIdleNotifier:Jf,stdout:Zf,stdin:th,stderr:eh,abort:rh,umask:Cf,chdir:Of,cwd:Rf,env:vf,title:_f,argv:Ef,execArgv:Sf,pid:nh,ppid:ih,execPath:oh,debugPort:sh,hrtime:ja,argv0:ah,_preload_modules:lh,setSourceMapsEnabled:uh}}),be=_t(()=>{dO()}),bt={};Fi(bt,{Buffer:()=>ml,INSPECT_MAX_BYTES:()=>Xb,default:()=>Gr,kMaxLength:()=>Jb});function pO(){if(vh)return lo;vh=!0,lo.byteLength=a,lo.toByteArray=u,lo.fromByteArray=p;for(var e=[],t=[],r=typeof Uint8Array<"u"?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,i=n.length;o<i;++o)e[o]=n[o],t[n.charCodeAt(o)]=o;t[45]=62,t[95]=63;function s(m){var _=m.length;if(_%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var b=m.indexOf("=");b===-1&&(b=_);var T=b===_?0:4-b%4;return[b,T]}function a(m){var _=s(m),b=_[0],T=_[1];return(b+T)*3/4-T}function l(m,_,b){return(_+b)*3/4-b}function u(m){var _,b=s(m),T=b[0],k=b[1],C=new r(l(m,T,k)),A=0,M=k>0?T-4:T,$;for($=0;$<M;$+=4)_=t[m.charCodeAt($)]<<18|t[m.charCodeAt($+1)]<<12|t[m.charCodeAt($+2)]<<6|t[m.charCodeAt($+3)],C[A++]=_>>16&255,C[A++]=_>>8&255,C[A++]=_&255;return k===2&&(_=t[m.charCodeAt($)]<<2|t[m.charCodeAt($+1)]>>4,C[A++]=_&255),k===1&&(_=t[m.charCodeAt($)]<<10|t[m.charCodeAt($+1)]<<4|t[m.charCodeAt($+2)]>>2,C[A++]=_>>8&255,C[A++]=_&255),C}function c(m){return e[m>>18&63]+e[m>>12&63]+e[m>>6&63]+e[m&63]}function d(m,_,b){for(var T,k=[],C=_;C<b;C+=3)T=(m[C]<<16&16711680)+(m[C+1]<<8&65280)+(m[C+2]&255),k.push(c(T));return k.join("")}function p(m){for(var _,b=m.length,T=b%3,k=[],C=16383,A=0,M=b-T;A<M;A+=C)k.push(d(m,A,A+C>M?M:A+C));return T===1?(_=m[b-1],k.push(e[_>>2]+e[_<<4&63]+"==")):T===2&&(_=(m[b-2]<<8)+m[b-1],k.push(e[_>>10]+e[_>>4&63]+e[_<<2&63]+"=")),k.join("")}return lo}function gO(){return Eh?ys:(Eh=!0,ys.read=function(e,t,r,n,o){var i,s,a=o*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,m=e[t+d];for(d+=p,i=m&(1<<-c)-1,m>>=-c,c+=a;c>0;i=i*256+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=s*256+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:(m?-1:1)*(1/0);s=s+Math.pow(2,n),i=i-u}return(m?-1:1)*s*Math.pow(2,i-n)},ys.write=function(e,t,r,n,o,i){var s,a,l,u=i*8-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+d>=1?t+=p/l:t+=p*Math.pow(2,1-d),t*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s=s+d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+m]=a&255,m+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+m]=s&255,m+=_,s/=256,u-=8);e[r+m-_]|=b*128},ys)}function mO(){if(Sh)return Rn;Sh=!0;let e=pO(),t=gO(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Rn.Buffer=s,Rn.SlowBuffer=k,Rn.INSPECT_MAX_BYTES=50;let n=2147483647;Rn.kMaxLength=n,s.TYPED_ARRAY_SUPPORT=o(),!s.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{let y=new Uint8Array(1),h={foo:function(){return 42}};return Object.setPrototypeOf(h,Uint8Array.prototype),Object.setPrototypeOf(y,h),y.foo()===42}catch{return!1}}Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}});function i(y){if(y>n)throw new RangeError('The value "'+y+'" is invalid for option "size"');let h=new Uint8Array(y);return Object.setPrototypeOf(h,s.prototype),h}function s(y,h,f){if(typeof y=="number"){if(typeof h=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(y)}return a(y,h,f)}s.poolSize=8192;function a(y,h,f){if(typeof y=="string")return d(y,h);if(ArrayBuffer.isView(y))return m(y);if(y==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof y);if(q(y,ArrayBuffer)||y&&q(y.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(q(y,SharedArrayBuffer)||y&&q(y.buffer,SharedArrayBuffer)))return _(y,h,f);if(typeof y=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let g=y.valueOf&&y.valueOf();if(g!=null&&g!==y)return s.from(g,h,f);let w=b(y);if(w)return w;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof y[Symbol.toPrimitive]=="function")return s.from(y[Symbol.toPrimitive]("string"),h,f);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof y)}s.from=function(y,h,f){return a(y,h,f)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array);function l(y){if(typeof y!="number")throw new TypeError('"size" argument must be of type number');if(y<0)throw new RangeError('The value "'+y+'" is invalid for option "size"')}function u(y,h,f){return l(y),y<=0?i(y):h!==void 0?typeof f=="string"?i(y).fill(h,f):i(y).fill(h):i(y)}s.alloc=function(y,h,f){return u(y,h,f)};function c(y){return l(y),i(y<0?0:T(y)|0)}s.allocUnsafe=function(y){return c(y)},s.allocUnsafeSlow=function(y){return c(y)};function d(y,h){if((typeof h!="string"||h==="")&&(h="utf8"),!s.isEncoding(h))throw new TypeError("Unknown encoding: "+h);let f=C(y,h)|0,g=i(f),w=g.write(y,h);return w!==f&&(g=g.slice(0,w)),g}function p(y){let h=y.length<0?0:T(y.length)|0,f=i(h);for(let g=0;g<h;g+=1)f[g]=y[g]&255;return f}function m(y){if(q(y,Uint8Array)){let h=new Uint8Array(y);return _(h.buffer,h.byteOffset,h.byteLength)}return p(y)}function _(y,h,f){if(h<0||y.byteLength<h)throw new RangeError('"offset" is outside of buffer bounds');if(y.byteLength<h+(f||0))throw new RangeError('"length" is outside of buffer bounds');let g;return h===void 0&&f===void 0?g=new Uint8Array(y):f===void 0?g=new Uint8Array(y,h):g=new Uint8Array(y,h,f),Object.setPrototypeOf(g,s.prototype),g}function b(y){if(s.isBuffer(y)){let h=T(y.length)|0,f=i(h);return f.length===0||y.copy(f,0,0,h),f}if(y.length!==void 0)return typeof y.length!="number"||x(y.length)?i(0):p(y);if(y.type==="Buffer"&&Array.isArray(y.data))return p(y.data)}function T(y){if(y>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return y|0}function k(y){return+y!=y&&(y=0),s.alloc(+y)}s.isBuffer=function(y){return y!=null&&y._isBuffer===!0&&y!==s.prototype},s.compare=function(y,h){if(q(y,Uint8Array)&&(y=s.from(y,y.offset,y.byteLength)),q(h,Uint8Array)&&(h=s.from(h,h.offset,h.byteLength)),!s.isBuffer(y)||!s.isBuffer(h))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(y===h)return 0;let f=y.length,g=h.length;for(let w=0,I=Math.min(f,g);w<I;++w)if(y[w]!==h[w]){f=y[w],g=h[w];break}return f<g?-1:g<f?1:0},s.isEncoding=function(y){switch(String(y).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(y,h){if(!Array.isArray(y))throw new TypeError('"list" argument must be an Array of Buffers');if(y.length===0)return s.alloc(0);let f;if(h===void 0)for(h=0,f=0;f<y.length;++f)h+=y[f].length;let g=s.allocUnsafe(h),w=0;for(f=0;f<y.length;++f){let I=y[f];if(q(I,Uint8Array))w+I.length>g.length?(s.isBuffer(I)||(I=s.from(I)),I.copy(g,w)):Uint8Array.prototype.set.call(g,I,w);else if(s.isBuffer(I))I.copy(g,w);else throw new TypeError('"list" argument must be an Array of Buffers');w+=I.length}return g};function C(y,h){if(s.isBuffer(y))return y.length;if(ArrayBuffer.isView(y)||q(y,ArrayBuffer))return y.byteLength;if(typeof y!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof y);let f=y.length,g=arguments.length>2&&arguments[2]===!0;if(!g&&f===0)return 0;let w=!1;for(;;)switch(h){case"ascii":case"latin1":case"binary":return f;case"utf8":case"utf-8":return N(y).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return f*2;case"hex":return f>>>1;case"base64":return te(y).length;default:if(w)return g?-1:N(y).length;h=(""+h).toLowerCase(),w=!0}}s.byteLength=C;function A(y,h,f){let g=!1;if((h===void 0||h<0)&&(h=0),h>this.length||((f===void 0||f>this.length)&&(f=this.length),f<=0)||(f>>>=0,h>>>=0,f<=h))return"";for(y||(y="utf8");;)switch(y){case"hex":return G(this,h,f);case"utf8":case"utf-8":return B(this,h,f);case"ascii":return ue(this,h,f);case"latin1":case"binary":return ae(this,h,f);case"base64":return L(this,h,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return pe(this,h,f);default:if(g)throw new TypeError("Unknown encoding: "+y);y=(y+"").toLowerCase(),g=!0}}s.prototype._isBuffer=!0;function M(y,h,f){let g=y[h];y[h]=y[f],y[f]=g}s.prototype.swap16=function(){let y=this.length;if(y%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let h=0;h<y;h+=2)M(this,h,h+1);return this},s.prototype.swap32=function(){let y=this.length;if(y%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let h=0;h<y;h+=4)M(this,h,h+3),M(this,h+1,h+2);return this},s.prototype.swap64=function(){let y=this.length;if(y%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let h=0;h<y;h+=8)M(this,h,h+7),M(this,h+1,h+6),M(this,h+2,h+5),M(this,h+3,h+4);return this},s.prototype.toString=function(){let y=this.length;return y===0?"":arguments.length===0?B(this,0,y):A.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(y){if(!s.isBuffer(y))throw new TypeError("Argument must be a Buffer");return this===y?!0:s.compare(this,y)===0},s.prototype.inspect=function(){let y="",h=Rn.INSPECT_MAX_BYTES;return y=this.toString("hex",0,h).replace(/(.{2})/g,"$1 ").trim(),this.length>h&&(y+=" ... "),"<Buffer "+y+">"},r&&(s.prototype[r]=s.prototype.inspect),s.prototype.compare=function(y,h,f,g,w){if(q(y,Uint8Array)&&(y=s.from(y,y.offset,y.byteLength)),!s.isBuffer(y))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof y);if(h===void 0&&(h=0),f===void 0&&(f=y?y.length:0),g===void 0&&(g=0),w===void 0&&(w=this.length),h<0||f>y.length||g<0||w>this.length)throw new RangeError("out of range index");if(g>=w&&h>=f)return 0;if(g>=w)return-1;if(h>=f)return 1;if(h>>>=0,f>>>=0,g>>>=0,w>>>=0,this===y)return 0;let I=w-g,W=f-h,ce=Math.min(I,W),xe=this.slice(g,w),ke=y.slice(h,f);for(let Te=0;Te<ce;++Te)if(xe[Te]!==ke[Te]){I=xe[Te],W=ke[Te];break}return I<W?-1:W<I?1:0};function $(y,h,f,g,w){if(y.length===0)return-1;if(typeof f=="string"?(g=f,f=0):f>2147483647?f=2147483647:f<-2147483648&&(f=-2147483648),f=+f,x(f)&&(f=w?0:y.length-1),f<0&&(f=y.length+f),f>=y.length){if(w)return-1;f=y.length-1}else if(f<0)if(w)f=0;else return-1;if(typeof h=="string"&&(h=s.from(h,g)),s.isBuffer(h))return h.length===0?-1:R(y,h,f,g,w);if(typeof h=="number")return h=h&255,typeof Uint8Array.prototype.indexOf=="function"?w?Uint8Array.prototype.indexOf.call(y,h,f):Uint8Array.prototype.lastIndexOf.call(y,h,f):R(y,[h],f,g,w);throw new TypeError("val must be string, number or Buffer")}function R(y,h,f,g,w){let I=1,W=y.length,ce=h.length;if(g!==void 0&&(g=String(g).toLowerCase(),g==="ucs2"||g==="ucs-2"||g==="utf16le"||g==="utf-16le")){if(y.length<2||h.length<2)return-1;I=2,W/=2,ce/=2,f/=2}function xe(Te,Oe){return I===1?Te[Oe]:Te.readUInt16BE(Oe*I)}let ke;if(w){let Te=-1;for(ke=f;ke<W;ke++)if(xe(y,ke)===xe(h,Te===-1?0:ke-Te)){if(Te===-1&&(Te=ke),ke-Te+1===ce)return Te*I}else Te!==-1&&(ke-=ke-Te),Te=-1}else for(f+ce>W&&(f=W-ce),ke=f;ke>=0;ke--){let Te=!0;for(let Oe=0;Oe<ce;Oe++)if(xe(y,ke+Oe)!==xe(h,Oe)){Te=!1;break}if(Te)return ke}return-1}s.prototype.includes=function(y,h,f){return this.indexOf(y,h,f)!==-1},s.prototype.indexOf=function(y,h,f){return $(this,y,h,f,!0)},s.prototype.lastIndexOf=function(y,h,f){return $(this,y,h,f,!1)};function D(y,h,f,g){f=Number(f)||0;let w=y.length-f;g?(g=Number(g),g>w&&(g=w)):g=w;let I=h.length;g>I/2&&(g=I/2);let W;for(W=0;W<g;++W){let ce=parseInt(h.substr(W*2,2),16);if(x(ce))return W;y[f+W]=ce}return W}function j(y,h,f,g){return U(N(h,y.length-f),y,f,g)}function z(y,h,f,g){return U(P(h),y,f,g)}function se(y,h,f,g){return U(te(h),y,f,g)}function re(y,h,f,g){return U(J(h,y.length-f),y,f,g)}s.prototype.write=function(y,h,f,g){if(h===void 0)g="utf8",f=this.length,h=0;else if(f===void 0&&typeof h=="string")g=h,f=this.length,h=0;else if(isFinite(h))h=h>>>0,isFinite(f)?(f=f>>>0,g===void 0&&(g="utf8")):(g=f,f=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let w=this.length-h;if((f===void 0||f>w)&&(f=w),y.length>0&&(f<0||h<0)||h>this.length)throw new RangeError("Attempt to write outside buffer bounds");g||(g="utf8");let I=!1;for(;;)switch(g){case"hex":return D(this,y,h,f);case"utf8":case"utf-8":return j(this,y,h,f);case"ascii":case"latin1":case"binary":return z(this,y,h,f);case"base64":return se(this,y,h,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return re(this,y,h,f);default:if(I)throw new TypeError("Unknown encoding: "+g);g=(""+g).toLowerCase(),I=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function L(y,h,f){return h===0&&f===y.length?e.fromByteArray(y):e.fromByteArray(y.slice(h,f))}function B(y,h,f){f=Math.min(y.length,f);let g=[],w=h;for(;w<f;){let I=y[w],W=null,ce=I>239?4:I>223?3:I>191?2:1;if(w+ce<=f){let xe,ke,Te,Oe;switch(ce){case 1:I<128&&(W=I);break;case 2:xe=y[w+1],(xe&192)===128&&(Oe=(I&31)<<6|xe&63,Oe>127&&(W=Oe));break;case 3:xe=y[w+1],ke=y[w+2],(xe&192)===128&&(ke&192)===128&&(Oe=(I&15)<<12|(xe&63)<<6|ke&63,Oe>2047&&(Oe<55296||Oe>57343)&&(W=Oe));break;case 4:xe=y[w+1],ke=y[w+2],Te=y[w+3],(xe&192)===128&&(ke&192)===128&&(Te&192)===128&&(Oe=(I&15)<<18|(xe&63)<<12|(ke&63)<<6|Te&63,Oe>65535&&Oe<1114112&&(W=Oe))}}W===null?(W=65533,ce=1):W>65535&&(W-=65536,g.push(W>>>10&1023|55296),W=56320|W&1023),g.push(W),w+=ce}return ne(g)}let oe=4096;function ne(y){let h=y.length;if(h<=oe)return String.fromCharCode.apply(String,y);let f="",g=0;for(;g<h;)f+=String.fromCharCode.apply(String,y.slice(g,g+=oe));return f}function ue(y,h,f){let g="";f=Math.min(y.length,f);for(let w=h;w<f;++w)g+=String.fromCharCode(y[w]&127);return g}function ae(y,h,f){let g="";f=Math.min(y.length,f);for(let w=h;w<f;++w)g+=String.fromCharCode(y[w]);return g}function G(y,h,f){let g=y.length;(!h||h<0)&&(h=0),(!f||f<0||f>g)&&(f=g);let w="";for(let I=h;I<f;++I)w+=K[y[I]];return w}function pe(y,h,f){let g=y.slice(h,f),w="";for(let I=0;I<g.length-1;I+=2)w+=String.fromCharCode(g[I]+g[I+1]*256);return w}s.prototype.slice=function(y,h){let f=this.length;y=~~y,h=h===void 0?f:~~h,y<0?(y+=f,y<0&&(y=0)):y>f&&(y=f),h<0?(h+=f,h<0&&(h=0)):h>f&&(h=f),h<y&&(h=y);let g=this.subarray(y,h);return Object.setPrototypeOf(g,s.prototype),g};function de(y,h,f){if(y%1!==0||y<0)throw new RangeError("offset is not uint");if(y+h>f)throw new RangeError("Trying to access beyond buffer length")}s.prototype.readUintLE=s.prototype.readUIntLE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=this[y],w=1,I=0;for(;++I<h&&(w*=256);)g+=this[y+I]*w;return g},s.prototype.readUintBE=s.prototype.readUIntBE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=this[y+--h],w=1;for(;h>0&&(w*=256);)g+=this[y+--h]*w;return g},s.prototype.readUint8=s.prototype.readUInt8=function(y,h){return y=y>>>0,h||de(y,1,this.length),this[y]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(y,h){return y=y>>>0,h||de(y,2,this.length),this[y]|this[y+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(y,h){return y=y>>>0,h||de(y,2,this.length),this[y]<<8|this[y+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(y,h){return y=y>>>0,h||de(y,4,this.length),(this[y]|this[y+1]<<8|this[y+2]<<16)+this[y+3]*16777216},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(y,h){return y=y>>>0,h||de(y,4,this.length),this[y]*16777216+(this[y+1]<<16|this[y+2]<<8|this[y+3])},s.prototype.readBigUInt64LE=Y(function(y){y=y>>>0,ee(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=h+this[++y]*2**8+this[++y]*2**16+this[++y]*2**24,w=this[++y]+this[++y]*2**8+this[++y]*2**16+f*2**24;return BigInt(g)+(BigInt(w)<<BigInt(32))}),s.prototype.readBigUInt64BE=Y(function(y){y=y>>>0,ee(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=h*2**24+this[++y]*2**16+this[++y]*2**8+this[++y],w=this[++y]*2**24+this[++y]*2**16+this[++y]*2**8+f;return(BigInt(g)<<BigInt(32))+BigInt(w)}),s.prototype.readIntLE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=this[y],w=1,I=0;for(;++I<h&&(w*=256);)g+=this[y+I]*w;return w*=128,g>=w&&(g-=Math.pow(2,8*h)),g},s.prototype.readIntBE=function(y,h,f){y=y>>>0,h=h>>>0,f||de(y,h,this.length);let g=h,w=1,I=this[y+--g];for(;g>0&&(w*=256);)I+=this[y+--g]*w;return w*=128,I>=w&&(I-=Math.pow(2,8*h)),I},s.prototype.readInt8=function(y,h){return y=y>>>0,h||de(y,1,this.length),this[y]&128?(255-this[y]+1)*-1:this[y]},s.prototype.readInt16LE=function(y,h){y=y>>>0,h||de(y,2,this.length);let f=this[y]|this[y+1]<<8;return f&32768?f|4294901760:f},s.prototype.readInt16BE=function(y,h){y=y>>>0,h||de(y,2,this.length);let f=this[y+1]|this[y]<<8;return f&32768?f|4294901760:f},s.prototype.readInt32LE=function(y,h){return y=y>>>0,h||de(y,4,this.length),this[y]|this[y+1]<<8|this[y+2]<<16|this[y+3]<<24},s.prototype.readInt32BE=function(y,h){return y=y>>>0,h||de(y,4,this.length),this[y]<<24|this[y+1]<<16|this[y+2]<<8|this[y+3]},s.prototype.readBigInt64LE=Y(function(y){y=y>>>0,ee(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=this[y+4]+this[y+5]*2**8+this[y+6]*2**16+(f<<24);return(BigInt(g)<<BigInt(32))+BigInt(h+this[++y]*2**8+this[++y]*2**16+this[++y]*2**24)}),s.prototype.readBigInt64BE=Y(function(y){y=y>>>0,ee(y,"offset");let h=this[y],f=this[y+7];(h===void 0||f===void 0)&&v(y,this.length-8);let g=(h<<24)+this[++y]*2**16+this[++y]*2**8+this[++y];return(BigInt(g)<<BigInt(32))+BigInt(this[++y]*2**24+this[++y]*2**16+this[++y]*2**8+f)}),s.prototype.readFloatLE=function(y,h){return y=y>>>0,h||de(y,4,this.length),t.read(this,y,!0,23,4)},s.prototype.readFloatBE=function(y,h){return y=y>>>0,h||de(y,4,this.length),t.read(this,y,!1,23,4)},s.prototype.readDoubleLE=function(y,h){return y=y>>>0,h||de(y,8,this.length),t.read(this,y,!0,52,8)},s.prototype.readDoubleBE=function(y,h){return y=y>>>0,h||de(y,8,this.length),t.read(this,y,!1,52,8)};function ge(y,h,f,g,w,I){if(!s.isBuffer(y))throw new TypeError('"buffer" argument must be a Buffer instance');if(h>w||h<I)throw new RangeError('"value" argument is out of bounds');if(f+g>y.length)throw new RangeError("Index out of range")}s.prototype.writeUintLE=s.prototype.writeUIntLE=function(y,h,f,g){if(y=+y,h=h>>>0,f=f>>>0,!g){let W=Math.pow(2,8*f)-1;ge(this,y,h,f,W,0)}let w=1,I=0;for(this[h]=y&255;++I<f&&(w*=256);)this[h+I]=y/w&255;return h+f},s.prototype.writeUintBE=s.prototype.writeUIntBE=function(y,h,f,g){if(y=+y,h=h>>>0,f=f>>>0,!g){let W=Math.pow(2,8*f)-1;ge(this,y,h,f,W,0)}let w=f-1,I=1;for(this[h+w]=y&255;--w>=0&&(I*=256);)this[h+w]=y/I&255;return h+f},s.prototype.writeUint8=s.prototype.writeUInt8=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,1,255,0),this[h]=y&255,h+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,65535,0),this[h]=y&255,this[h+1]=y>>>8,h+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,65535,0),this[h]=y>>>8,this[h+1]=y&255,h+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,4294967295,0),this[h+3]=y>>>24,this[h+2]=y>>>16,this[h+1]=y>>>8,this[h]=y&255,h+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,4294967295,0),this[h]=y>>>24,this[h+1]=y>>>16,this[h+2]=y>>>8,this[h+3]=y&255,h+4};function O(y,h,f,g,w){fe(h,g,w,y,f,7);let I=Number(h&BigInt(4294967295));y[f++]=I,I=I>>8,y[f++]=I,I=I>>8,y[f++]=I,I=I>>8,y[f++]=I;let W=Number(h>>BigInt(32)&BigInt(4294967295));return y[f++]=W,W=W>>8,y[f++]=W,W=W>>8,y[f++]=W,W=W>>8,y[f++]=W,f}function ie(y,h,f,g,w){fe(h,g,w,y,f,7);let I=Number(h&BigInt(4294967295));y[f+7]=I,I=I>>8,y[f+6]=I,I=I>>8,y[f+5]=I,I=I>>8,y[f+4]=I;let W=Number(h>>BigInt(32)&BigInt(4294967295));return y[f+3]=W,W=W>>8,y[f+2]=W,W=W>>8,y[f+1]=W,W=W>>8,y[f]=W,f+8}s.prototype.writeBigUInt64LE=Y(function(y,h=0){return O(this,y,h,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=Y(function(y,h=0){return ie(this,y,h,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(y,h,f,g){if(y=+y,h=h>>>0,!g){let ce=Math.pow(2,8*f-1);ge(this,y,h,f,ce-1,-ce)}let w=0,I=1,W=0;for(this[h]=y&255;++w<f&&(I*=256);)y<0&&W===0&&this[h+w-1]!==0&&(W=1),this[h+w]=(y/I>>0)-W&255;return h+f},s.prototype.writeIntBE=function(y,h,f,g){if(y=+y,h=h>>>0,!g){let ce=Math.pow(2,8*f-1);ge(this,y,h,f,ce-1,-ce)}let w=f-1,I=1,W=0;for(this[h+w]=y&255;--w>=0&&(I*=256);)y<0&&W===0&&this[h+w+1]!==0&&(W=1),this[h+w]=(y/I>>0)-W&255;return h+f},s.prototype.writeInt8=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,1,127,-128),y<0&&(y=255+y+1),this[h]=y&255,h+1},s.prototype.writeInt16LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,32767,-32768),this[h]=y&255,this[h+1]=y>>>8,h+2},s.prototype.writeInt16BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,2,32767,-32768),this[h]=y>>>8,this[h+1]=y&255,h+2},s.prototype.writeInt32LE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,2147483647,-2147483648),this[h]=y&255,this[h+1]=y>>>8,this[h+2]=y>>>16,this[h+3]=y>>>24,h+4},s.prototype.writeInt32BE=function(y,h,f){return y=+y,h=h>>>0,f||ge(this,y,h,4,2147483647,-2147483648),y<0&&(y=4294967295+y+1),this[h]=y>>>24,this[h+1]=y>>>16,this[h+2]=y>>>8,this[h+3]=y&255,h+4},s.prototype.writeBigInt64LE=Y(function(y,h=0){return O(this,y,h,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=Y(function(y,h=0){return ie(this,y,h,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function me(y,h,f,g,w,I){if(f+g>y.length)throw new RangeError("Index out of range");if(f<0)throw new RangeError("Index out of range")}function ve(y,h,f,g,w){return h=+h,f=f>>>0,w||me(y,h,f,4),t.write(y,h,f,g,23,4),f+4}s.prototype.writeFloatLE=function(y,h,f){return ve(this,y,h,!0,f)},s.prototype.writeFloatBE=function(y,h,f){return ve(this,y,h,!1,f)};function ye(y,h,f,g,w){return h=+h,f=f>>>0,w||me(y,h,f,8),t.write(y,h,f,g,52,8),f+8}s.prototype.writeDoubleLE=function(y,h,f){return ye(this,y,h,!0,f)},s.prototype.writeDoubleBE=function(y,h,f){return ye(this,y,h,!1,f)},s.prototype.copy=function(y,h,f,g){if(!s.isBuffer(y))throw new TypeError("argument should be a Buffer");if(f||(f=0),!g&&g!==0&&(g=this.length),h>=y.length&&(h=y.length),h||(h=0),g>0&&g<f&&(g=f),g===f||y.length===0||this.length===0)return 0;if(h<0)throw new RangeError("targetStart out of bounds");if(f<0||f>=this.length)throw new RangeError("Index out of range");if(g<0)throw new RangeError("sourceEnd out of bounds");g>this.length&&(g=this.length),y.length-h<g-f&&(g=y.length-h+f);let w=g-f;return this===y&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(h,f,g):Uint8Array.prototype.set.call(y,this.subarray(f,g),h),w},s.prototype.fill=function(y,h,f,g){if(typeof y=="string"){if(typeof h=="string"?(g=h,h=0,f=this.length):typeof f=="string"&&(g=f,f=this.length),g!==void 0&&typeof g!="string")throw new TypeError("encoding must be a string");if(typeof g=="string"&&!s.isEncoding(g))throw new TypeError("Unknown encoding: "+g);if(y.length===1){let I=y.charCodeAt(0);(g==="utf8"&&I<128||g==="latin1")&&(y=I)}}else typeof y=="number"?y=y&255:typeof y=="boolean"&&(y=Number(y));if(h<0||this.length<h||this.length<f)throw new RangeError("Out of range index");if(f<=h)return this;h=h>>>0,f=f===void 0?this.length:f>>>0,y||(y=0);let w;if(typeof y=="number")for(w=h;w<f;++w)this[w]=y;else{let I=s.isBuffer(y)?y:s.from(y,g),W=I.length;if(W===0)throw new TypeError('The value "'+y+'" is invalid for argument "value"');for(w=0;w<f-h;++w)this[w+h]=I[w%W]}return this};let V={};function F(y,h,f){V[y]=class extends f{constructor(){super(),Object.defineProperty(this,"message",{value:h.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${y}]`,this.stack,delete this.name}get code(){return y}set code(g){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:g,writable:!0})}toString(){return`${this.name} [${y}]: ${this.message}`}}}F("ERR_BUFFER_OUT_OF_BOUNDS",function(y){return y?`${y} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),F("ERR_INVALID_ARG_TYPE",function(y,h){return`The "${y}" argument must be of type number. Received type ${typeof h}`},TypeError),F("ERR_OUT_OF_RANGE",function(y,h,f){let g=`The value of "${y}" is out of range.`,w=f;return Number.isInteger(f)&&Math.abs(f)>2**32?w=Z(String(f)):typeof f=="bigint"&&(w=String(f),(f>BigInt(2)**BigInt(32)||f<-(BigInt(2)**BigInt(32)))&&(w=Z(w)),w+="n"),g+=` It must be ${h}. Received ${w}`,g},RangeError);function Z(y){let h="",f=y.length,g=y[0]==="-"?1:0;for(;f>=g+4;f-=3)h=`_${y.slice(f-3,f)}${h}`;return`${y.slice(0,f)}${h}`}function he(y,h,f){ee(h,"offset"),(y[h]===void 0||y[h+f]===void 0)&&v(h,y.length-(f+1))}function fe(y,h,f,g,w,I){if(y>f||y<h){let W=typeof h=="bigint"?"n":"",ce;throw h===0||h===BigInt(0)?ce=`>= 0${W} and < 2${W} ** ${(I+1)*8}${W}`:ce=`>= -(2${W} ** ${(I+1)*8-1}${W}) and < 2 ** ${(I+1)*8-1}${W}`,new V.ERR_OUT_OF_RANGE("value",ce,y)}he(g,w,I)}function ee(y,h){if(typeof y!="number")throw new V.ERR_INVALID_ARG_TYPE(h,"number",y)}function v(y,h,f){throw Math.floor(y)!==y?(ee(y,f),new V.ERR_OUT_OF_RANGE("offset","an integer",y)):h<0?new V.ERR_BUFFER_OUT_OF_BOUNDS:new V.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${h}`,y)}let S=/[^+/0-9A-Za-z-_]/g;function E(y){if(y=y.split("=")[0],y=y.trim().replace(S,""),y.length<2)return"";for(;y.length%4!==0;)y=y+"=";return y}function N(y,h){h=h||1/0;let f,g=y.length,w=null,I=[];for(let W=0;W<g;++W){if(f=y.charCodeAt(W),f>55295&&f<57344){if(!w){if(f>56319){(h-=3)>-1&&I.push(239,191,189);continue}else if(W+1===g){(h-=3)>-1&&I.push(239,191,189);continue}w=f;continue}if(f<56320){(h-=3)>-1&&I.push(239,191,189),w=f;continue}f=(w-55296<<10|f-56320)+65536}else w&&(h-=3)>-1&&I.push(239,191,189);if(w=null,f<128){if((h-=1)<0)break;I.push(f)}else if(f<2048){if((h-=2)<0)break;I.push(f>>6|192,f&63|128)}else if(f<65536){if((h-=3)<0)break;I.push(f>>12|224,f>>6&63|128,f&63|128)}else if(f<1114112){if((h-=4)<0)break;I.push(f>>18|240,f>>12&63|128,f>>6&63|128,f&63|128)}else throw new Error("Invalid code point")}return I}function P(y){let h=[];for(let f=0;f<y.length;++f)h.push(y.charCodeAt(f)&255);return h}function J(y,h){let f,g,w,I=[];for(let W=0;W<y.length&&!((h-=2)<0);++W)f=y.charCodeAt(W),g=f>>8,w=f%256,I.push(w),I.push(g);return I}function te(y){return e.toByteArray(E(y))}function U(y,h,f,g){let w;for(w=0;w<g&&!(w+f>=h.length||w>=y.length);++w)h[w+f]=y[w];return w}function q(y,h){return y instanceof h||y!=null&&y.constructor!=null&&y.constructor.name!=null&&y.constructor.name===h.name}function x(y){return y!==y}let K=function(){let y="0123456789abcdef",h=new Array(256);for(let f=0;f<16;++f){let g=f*16;for(let w=0;w<16;++w)h[g+w]=y[f]+y[w]}return h}();function Y(y){return typeof BigInt>"u"?le:y}function le(){throw new Error("BigInt not supported")}return Rn}var lo,vh,ys,Eh,Rn,Sh,Gr,ml,Xb,Jb,wt=_t(()=>{_e(),we(),be(),lo={},vh=!1,ys={},Eh=!1,Rn={},Sh=!1,Gr=mO(),Gr.Buffer,Gr.SlowBuffer,Gr.INSPECT_MAX_BYTES,Gr.kMaxLength,ml=Gr.Buffer,Xb=Gr.INSPECT_MAX_BYTES,Jb=Gr.kMaxLength}),we=_t(()=>{wt()}),yO=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(r){this.aliasToTopic={},this.max=r}put(r,n){return n===0||n>this.max?!1:(this.aliasToTopic[n]=r,this.length=Object.keys(this.aliasToTopic).length,!0)}getTopicByAlias(r){return this.aliasToTopic[r]}clear(){this.aliasToTopic={}}};e.default=t}),ht=Ae((e,t)=>{_e(),we(),be(),t.exports={ArrayIsArray(r){return Array.isArray(r)},ArrayPrototypeIncludes(r,n){return r.includes(n)},ArrayPrototypeIndexOf(r,n){return r.indexOf(n)},ArrayPrototypeJoin(r,n){return r.join(n)},ArrayPrototypeMap(r,n){return r.map(n)},ArrayPrototypePop(r,n){return r.pop(n)},ArrayPrototypePush(r,n){return r.push(n)},ArrayPrototypeSlice(r,n,o){return r.slice(n,o)},Error,FunctionPrototypeCall(r,n,...o){return r.call(n,...o)},FunctionPrototypeSymbolHasInstance(r,n){return Function.prototype[Symbol.hasInstance].call(r,n)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(r,n){return Object.defineProperties(r,n)},ObjectDefineProperty(r,n,o){return Object.defineProperty(r,n,o)},ObjectGetOwnPropertyDescriptor(r,n){return Object.getOwnPropertyDescriptor(r,n)},ObjectKeys(r){return Object.keys(r)},ObjectSetPrototypeOf(r,n){return Object.setPrototypeOf(r,n)},Promise,PromisePrototypeCatch(r,n){return r.catch(n)},PromisePrototypeThen(r,n,o){return r.then(n,o)},PromiseReject(r){return Promise.reject(r)},ReflectApply:Reflect.apply,RegExpPrototypeTest(r,n){return r.test(n)},SafeSet:Set,String,StringPrototypeSlice(r,n,o){return r.slice(n,o)},StringPrototypeToLowerCase(r){return r.toLowerCase()},StringPrototypeToUpperCase(r){return r.toUpperCase()},StringPrototypeTrim(r){return r.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,TypedArrayPrototypeSet(r,n,o){return r.set(n,o)},Uint8Array}}),hn=Ae((e,t)=>{_e(),we(),be();var r=(wt(),Ge(bt)),n=Object.getPrototypeOf(async function(){}).constructor,o=globalThis.Blob||r.Blob,i=typeof o<"u"?function(a){return a instanceof o}:function(a){return!1},s=class extends Error{constructor(a){if(!Array.isArray(a))throw new TypeError(`Expected input to be an Array, got ${typeof a}`);let l="";for(let u=0;u<a.length;u++)l+=`    ${a[u].stack}
+`;super(l),this.name="AggregateError",this.errors=a}};t.exports={AggregateError:s,kEmptyObject:Object.freeze({}),once(a){let l=!1;return function(...u){l||(l=!0,a.apply(this,u))}},createDeferredPromise:function(){let a,l;return{promise:new Promise((u,c)=>{a=u,l=c}),resolve:a,reject:l}},promisify(a){return new Promise((l,u)=>{a((c,...d)=>c?u(c):l(...d))})},debuglog(){return function(){}},format(a,...l){return a.replace(/%([sdifj])/g,function(...[u,c]){let d=l.shift();return c==="f"?d.toFixed(6):c==="j"?JSON.stringify(d):c==="s"&&typeof d=="object"?`${d.constructor!==Object?d.constructor.name:""} {}`.trim():d.toString()})},inspect(a){switch(typeof a){case"string":if(a.includes("'"))if(a.includes('"')){if(!a.includes("`")&&!a.includes("${"))return`\`${a}\``}else return`"${a}"`;return`'${a}'`;case"number":return isNaN(a)?"NaN":Object.is(a,-0)?String(a):a;case"bigint":return`${String(a)}n`;case"boolean":case"undefined":return String(a);case"object":return"{}"}},types:{isAsyncFunction(a){return a instanceof n},isArrayBufferView(a){return ArrayBuffer.isView(a)}},isBlob:i},t.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),ap=Ae((e,t)=>{_e(),we(),be();var{AbortController:r,AbortSignal:n}=typeof self<"u"?self:typeof window<"u"?window:void 0;t.exports=r,t.exports.AbortSignal=n,t.exports.default=r}),jt=Ae((e,t)=>{_e(),we(),be();var{format:r,inspect:n,AggregateError:o}=hn(),i=globalThis.AggregateError||o,s=Symbol("kIsNodeError"),a=["string","function","number","object","Function","Object","boolean","bigint","symbol"],l=/^([A-Z][a-z0-9]*)+$/,u="__node_internal_",c={};function d(C,A){if(!C)throw new c.ERR_INTERNAL_ASSERTION(A)}function p(C){let A="",M=C.length,$=C[0]==="-"?1:0;for(;M>=$+4;M-=3)A=`_${C.slice(M-3,M)}${A}`;return`${C.slice(0,M)}${A}`}function m(C,A,M){if(typeof A=="function")return d(A.length<=M.length,`Code: ${C}; The provided arguments length (${M.length}) does not match the required ones (${A.length}).`),A(...M);let $=(A.match(/%[dfijoOs]/g)||[]).length;return d($===M.length,`Code: ${C}; The provided arguments length (${M.length}) does not match the required ones (${$}).`),M.length===0?A:r(A,...M)}function _(C,A,M){M||(M=Error);class $ extends M{constructor(...D){super(m(C,A,D))}toString(){return`${this.name} [${C}]: ${this.message}`}}Object.defineProperties($.prototype,{name:{value:M.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${C}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),$.prototype.code=C,$.prototype[s]=!0,c[C]=$}function b(C){let A=u+C.name;return Object.defineProperty(C,"name",{value:A}),C}function T(C,A){if(C&&A&&C!==A){if(Array.isArray(A.errors))return A.errors.push(C),A;let M=new i([A,C],A.message);return M.code=A.code,M}return C||A}var k=class extends Error{constructor(C="The operation was aborted",A=void 0){if(A!==void 0&&typeof A!="object")throw new c.ERR_INVALID_ARG_TYPE("options","Object",A);super(C,A),this.code="ABORT_ERR",this.name="AbortError"}};_("ERR_ASSERTION","%s",Error),_("ERR_INVALID_ARG_TYPE",(C,A,M)=>{d(typeof C=="string","'name' must be a string"),Array.isArray(A)||(A=[A]);let $="The ";C.endsWith(" argument")?$+=`${C} `:$+=`"${C}" ${C.includes(".")?"property":"argument"} `,$+="must be ";let R=[],D=[],j=[];for(let se of A)d(typeof se=="string","All expected entries have to be of type string"),a.includes(se)?R.push(se.toLowerCase()):l.test(se)?D.push(se):(d(se!=="object",'The value "object" should be written as "Object"'),j.push(se));if(D.length>0){let se=R.indexOf("object");se!==-1&&(R.splice(R,se,1),D.push("Object"))}if(R.length>0){switch(R.length){case 1:$+=`of type ${R[0]}`;break;case 2:$+=`one of type ${R[0]} or ${R[1]}`;break;default:{let se=R.pop();$+=`one of type ${R.join(", ")}, or ${se}`}}(D.length>0||j.length>0)&&($+=" or ")}if(D.length>0){switch(D.length){case 1:$+=`an instance of ${D[0]}`;break;case 2:$+=`an instance of ${D[0]} or ${D[1]}`;break;default:{let se=D.pop();$+=`an instance of ${D.join(", ")}, or ${se}`}}j.length>0&&($+=" or ")}switch(j.length){case 0:break;case 1:j[0].toLowerCase()!==j[0]&&($+="an "),$+=`${j[0]}`;break;case 2:$+=`one of ${j[0]} or ${j[1]}`;break;default:{let se=j.pop();$+=`one of ${j.join(", ")}, or ${se}`}}if(M==null)$+=`. Received ${M}`;else if(typeof M=="function"&&M.name)$+=`. Received function ${M.name}`;else if(typeof M=="object"){var z;if((z=M.constructor)!==null&&z!==void 0&&z.name)$+=`. Received an instance of ${M.constructor.name}`;else{let se=n(M,{depth:-1});$+=`. Received ${se}`}}else{let se=n(M,{colors:!1});se.length>25&&(se=`${se.slice(0,25)}...`),$+=`. Received type ${typeof M} (${se})`}return $},TypeError),_("ERR_INVALID_ARG_VALUE",(C,A,M="is invalid")=>{let $=n(A);return $.length>128&&($=$.slice(0,128)+"..."),`The ${C.includes(".")?"property":"argument"} '${C}' ${M}. Received ${$}`},TypeError),_("ERR_INVALID_RETURN_VALUE",(C,A,M)=>{var $;let R=M!=null&&($=M.constructor)!==null&&$!==void 0&&$.name?`instance of ${M.constructor.name}`:`type ${typeof M}`;return`Expected ${C} to be returned from the "${A}" function but got ${R}.`},TypeError),_("ERR_MISSING_ARGS",(...C)=>{d(C.length>0,"At least one arg needs to be specified");let A,M=C.length;switch(C=(Array.isArray(C)?C:[C]).map($=>`"${$}"`).join(" or "),M){case 1:A+=`The ${C[0]} argument`;break;case 2:A+=`The ${C[0]} and ${C[1]} arguments`;break;default:{let $=C.pop();A+=`The ${C.join(", ")}, and ${$} arguments`}break}return`${A} must be specified`},TypeError),_("ERR_OUT_OF_RANGE",(C,A,M)=>{d(A,'Missing "range" argument');let $;return Number.isInteger(M)&&Math.abs(M)>2**32?$=p(String(M)):typeof M=="bigint"?($=String(M),(M>2n**32n||M<-(2n**32n))&&($=p($)),$+="n"):$=n(M),`The value of "${C}" is out of range. It must be ${A}. Received ${$}`},RangeError),_("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),_("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),_("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),_("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),_("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),_("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),_("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),_("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),_("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),_("ERR_STREAM_WRITE_AFTER_END","write after end",Error),_("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),t.exports={AbortError:k,aggregateTwoErrors:b(T),hideStackFrames:b,codes:c}}),iu=Ae((e,t)=>{_e(),we(),be();var{ArrayIsArray:r,ArrayPrototypeIncludes:n,ArrayPrototypeJoin:o,ArrayPrototypeMap:i,NumberIsInteger:s,NumberIsNaN:a,NumberMAX_SAFE_INTEGER:l,NumberMIN_SAFE_INTEGER:u,NumberParseInt:c,ObjectPrototypeHasOwnProperty:d,RegExpPrototypeExec:p,String:m,StringPrototypeToUpperCase:_,StringPrototypeTrim:b}=ht(),{hideStackFrames:T,codes:{ERR_SOCKET_BAD_PORT:k,ERR_INVALID_ARG_TYPE:C,ERR_INVALID_ARG_VALUE:A,ERR_OUT_OF_RANGE:M,ERR_UNKNOWN_SIGNAL:$}}=jt(),{normalizeEncoding:R}=hn(),{isAsyncFunction:D,isArrayBufferView:j}=hn().types,z={};function se(U){return U===(U|0)}function re(U){return U===U>>>0}var L=/^[0-7]+$/,B="must be a 32-bit unsigned integer or an octal string";function oe(U,q,x){if(typeof U>"u"&&(U=x),typeof U=="string"){if(p(L,U)===null)throw new A(q,U,B);U=c(U,8)}return ae(U,q),U}var ne=T((U,q,x=u,K=l)=>{if(typeof U!="number")throw new C(q,"number",U);if(!s(U))throw new M(q,"an integer",U);if(U<x||U>K)throw new M(q,`>= ${x} && <= ${K}`,U)}),ue=T((U,q,x=-2147483648,K=2147483647)=>{if(typeof U!="number")throw new C(q,"number",U);if(!s(U))throw new M(q,"an integer",U);if(U<x||U>K)throw new M(q,`>= ${x} && <= ${K}`,U)}),ae=T((U,q,x=!1)=>{if(typeof U!="number")throw new C(q,"number",U);if(!s(U))throw new M(q,"an integer",U);let K=x?1:0,Y=4294967295;if(U<K||U>Y)throw new M(q,`>= ${K} && <= ${Y}`,U)});function G(U,q){if(typeof U!="string")throw new C(q,"string",U)}function pe(U,q,x=void 0,K){if(typeof U!="number")throw new C(q,"number",U);if(x!=null&&U<x||K!=null&&U>K||(x!=null||K!=null)&&a(U))throw new M(q,`${x!=null?`>= ${x}`:""}${x!=null&&K!=null?" && ":""}${K!=null?`<= ${K}`:""}`,U)}var de=T((U,q,x)=>{if(!n(x,U)){let K="must be one of: "+o(i(x,Y=>typeof Y=="string"?`'${Y}'`:m(Y)),", ");throw new A(q,U,K)}});function ge(U,q){if(typeof U!="boolean")throw new C(q,"boolean",U)}function O(U,q,x){return U==null||!d(U,q)?x:U[q]}var ie=T((U,q,x=null)=>{let K=O(x,"allowArray",!1),Y=O(x,"allowFunction",!1);if(!O(x,"nullable",!1)&&U===null||!K&&r(U)||typeof U!="object"&&(!Y||typeof U!="function"))throw new C(q,"Object",U)}),me=T((U,q)=>{if(U!=null&&typeof U!="object"&&typeof U!="function")throw new C(q,"a dictionary",U)}),ve=T((U,q,x=0)=>{if(!r(U))throw new C(q,"Array",U);if(U.length<x){let K=`must be longer than ${x}`;throw new A(q,U,K)}});function ye(U,q){ve(U,q);for(let x=0;x<U.length;x++)G(U[x],`${q}[${x}]`)}function V(U,q){ve(U,q);for(let x=0;x<U.length;x++)ge(U[x],`${q}[${x}]`)}function F(U,q="signal"){if(G(U,q),z[U]===void 0)throw z[_(U)]!==void 0?new $(U+" (signals must use all capital letters)"):new $(U)}var Z=T((U,q="buffer")=>{if(!j(U))throw new C(q,["Buffer","TypedArray","DataView"],U)});function he(U,q){let x=R(q),K=U.length;if(x==="hex"&&K%2!==0)throw new A("encoding",q,`is invalid for data of length ${K}`)}function fe(U,q="Port",x=!0){if(typeof U!="number"&&typeof U!="string"||typeof U=="string"&&b(U).length===0||+U!==+U>>>0||U>65535||U===0&&!x)throw new k(q,U,x);return U|0}var ee=T((U,q)=>{if(U!==void 0&&(U===null||typeof U!="object"||!("aborted"in U)))throw new C(q,"AbortSignal",U)}),v=T((U,q)=>{if(typeof U!="function")throw new C(q,"Function",U)}),S=T((U,q)=>{if(typeof U!="function"||D(U))throw new C(q,"Function",U)}),E=T((U,q)=>{if(U!==void 0)throw new C(q,"undefined",U)});function N(U,q,x){if(!n(x,U))throw new C(q,`('${o(x,"|")}')`,U)}var P=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function J(U,q){if(typeof U>"u"||!p(P,U))throw new A(q,U,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function te(U){if(typeof U=="string")return J(U,"hints"),U;if(r(U)){let q=U.length,x="";if(q===0)return x;for(let K=0;K<q;K++){let Y=U[K];J(Y,"hints"),x+=Y,K!==q-1&&(x+=", ")}return x}throw new A("hints",U,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}t.exports={isInt32:se,isUint32:re,parseFileMode:oe,validateArray:ve,validateStringArray:ye,validateBooleanArray:V,validateBoolean:ge,validateBuffer:Z,validateDictionary:me,validateEncoding:he,validateFunction:v,validateInt32:ue,validateInteger:ne,validateNumber:pe,validateObject:ie,validateOneOf:de,validatePlainFunction:S,validatePort:fe,validateSignalName:F,validateString:G,validateUint32:ae,validateUndefined:E,validateUnion:N,validateAbortSignal:ee,validateLinkHeaderValue:te}}),ji=Ae((e,t)=>{_e(),we(),be();var r=t.exports={},n,o;function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?n=setTimeout:n=i}catch{n=i}try{typeof clearTimeout=="function"?o=clearTimeout:o=s}catch{o=s}})();function a(k){if(n===setTimeout)return setTimeout(k,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(k,0);try{return n(k,0)}catch{try{return n.call(null,k,0)}catch{return n.call(this,k,0)}}}function l(k){if(o===clearTimeout)return clearTimeout(k);if((o===s||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(k);try{return o(k)}catch{try{return o.call(null,k)}catch{return o.call(this,k)}}}var u=[],c=!1,d,p=-1;function m(){!c||!d||(c=!1,d.length?u=d.concat(u):p=-1,u.length&&_())}function _(){if(!c){var k=a(m);c=!0;for(var C=u.length;C;){for(d=u,u=[];++p<C;)d&&d[p].run();p=-1,C=u.length}d=null,c=!1,l(k)}}r.nextTick=function(k){var C=new Array(arguments.length-1);if(arguments.length>1)for(var A=1;A<arguments.length;A++)C[A-1]=arguments[A];u.push(new b(k,C)),u.length===1&&!c&&a(_)};function b(k,C){this.fun=k,this.array=C}b.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={};function T(){}r.on=T,r.addListener=T,r.once=T,r.off=T,r.removeListener=T,r.removeAllListeners=T,r.emit=T,r.prependListener=T,r.prependOnceListener=T,r.listeners=function(k){return[]},r.binding=function(k){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(k){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}}),En=Ae((e,t)=>{_e(),we(),be();var{Symbol:r,SymbolAsyncIterator:n,SymbolIterator:o,SymbolFor:i}=ht(),s=r("kDestroyed"),a=r("kIsErrored"),l=r("kIsReadable"),u=r("kIsDisturbed"),c=i("nodejs.webstream.isClosedPromise"),d=i("nodejs.webstream.controllerErrorFunction");function p(O,ie=!1){var me;return!!(O&&typeof O.pipe=="function"&&typeof O.on=="function"&&(!ie||typeof O.pause=="function"&&typeof O.resume=="function")&&(!O._writableState||((me=O._readableState)===null||me===void 0?void 0:me.readable)!==!1)&&(!O._writableState||O._readableState))}function m(O){var ie;return!!(O&&typeof O.write=="function"&&typeof O.on=="function"&&(!O._readableState||((ie=O._writableState)===null||ie===void 0?void 0:ie.writable)!==!1))}function _(O){return!!(O&&typeof O.pipe=="function"&&O._readableState&&typeof O.on=="function"&&typeof O.write=="function")}function b(O){return O&&(O._readableState||O._writableState||typeof O.write=="function"&&typeof O.on=="function"||typeof O.pipe=="function"&&typeof O.on=="function")}function T(O){return!!(O&&!b(O)&&typeof O.pipeThrough=="function"&&typeof O.getReader=="function"&&typeof O.cancel=="function")}function k(O){return!!(O&&!b(O)&&typeof O.getWriter=="function"&&typeof O.abort=="function")}function C(O){return!!(O&&!b(O)&&typeof O.readable=="object"&&typeof O.writable=="object")}function A(O){return T(O)||k(O)||C(O)}function M(O,ie){return O==null?!1:ie===!0?typeof O[n]=="function":ie===!1?typeof O[o]=="function":typeof O[n]=="function"||typeof O[o]=="function"}function $(O){if(!b(O))return null;let ie=O._writableState,me=O._readableState,ve=ie||me;return!!(O.destroyed||O[s]||ve!=null&&ve.destroyed)}function R(O){if(!m(O))return null;if(O.writableEnded===!0)return!0;let ie=O._writableState;return ie!=null&&ie.errored?!1:typeof(ie==null?void 0:ie.ended)!="boolean"?null:ie.ended}function D(O,ie){if(!m(O))return null;if(O.writableFinished===!0)return!0;let me=O._writableState;return me!=null&&me.errored?!1:typeof(me==null?void 0:me.finished)!="boolean"?null:!!(me.finished||ie===!1&&me.ended===!0&&me.length===0)}function j(O){if(!p(O))return null;if(O.readableEnded===!0)return!0;let ie=O._readableState;return!ie||ie.errored?!1:typeof(ie==null?void 0:ie.ended)!="boolean"?null:ie.ended}function z(O,ie){if(!p(O))return null;let me=O._readableState;return me!=null&&me.errored?!1:typeof(me==null?void 0:me.endEmitted)!="boolean"?null:!!(me.endEmitted||ie===!1&&me.ended===!0&&me.length===0)}function se(O){return O&&O[l]!=null?O[l]:typeof(O==null?void 0:O.readable)!="boolean"?null:$(O)?!1:p(O)&&O.readable&&!z(O)}function re(O){return typeof(O==null?void 0:O.writable)!="boolean"?null:$(O)?!1:m(O)&&O.writable&&!R(O)}function L(O,ie){return b(O)?$(O)?!0:!((ie==null?void 0:ie.readable)!==!1&&se(O)||(ie==null?void 0:ie.writable)!==!1&&re(O)):null}function B(O){var ie,me;return b(O)?O.writableErrored?O.writableErrored:(ie=(me=O._writableState)===null||me===void 0?void 0:me.errored)!==null&&ie!==void 0?ie:null:null}function oe(O){var ie,me;return b(O)?O.readableErrored?O.readableErrored:(ie=(me=O._readableState)===null||me===void 0?void 0:me.errored)!==null&&ie!==void 0?ie:null:null}function ne(O){if(!b(O))return null;if(typeof O.closed=="boolean")return O.closed;let ie=O._writableState,me=O._readableState;return typeof(ie==null?void 0:ie.closed)=="boolean"||typeof(me==null?void 0:me.closed)=="boolean"?(ie==null?void 0:ie.closed)||(me==null?void 0:me.closed):typeof O._closed=="boolean"&&ue(O)?O._closed:null}function ue(O){return typeof O._closed=="boolean"&&typeof O._defaultKeepAlive=="boolean"&&typeof O._removedConnection=="boolean"&&typeof O._removedContLen=="boolean"}function ae(O){return typeof O._sent100=="boolean"&&ue(O)}function G(O){var ie;return typeof O._consuming=="boolean"&&typeof O._dumped=="boolean"&&((ie=O.req)===null||ie===void 0?void 0:ie.upgradeOrConnect)===void 0}function pe(O){if(!b(O))return null;let ie=O._writableState,me=O._readableState,ve=ie||me;return!ve&&ae(O)||!!(ve&&ve.autoDestroy&&ve.emitClose&&ve.closed===!1)}function de(O){var ie;return!!(O&&((ie=O[u])!==null&&ie!==void 0?ie:O.readableDidRead||O.readableAborted))}function ge(O){var ie,me,ve,ye,V,F,Z,he,fe,ee;return!!(O&&((ie=(me=(ve=(ye=(V=(F=O[a])!==null&&F!==void 0?F:O.readableErrored)!==null&&V!==void 0?V:O.writableErrored)!==null&&ye!==void 0?ye:(Z=O._readableState)===null||Z===void 0?void 0:Z.errorEmitted)!==null&&ve!==void 0?ve:(he=O._writableState)===null||he===void 0?void 0:he.errorEmitted)!==null&&me!==void 0?me:(fe=O._readableState)===null||fe===void 0?void 0:fe.errored)!==null&&ie!==void 0?ie:!((ee=O._writableState)===null||ee===void 0)&&ee.errored))}t.exports={kDestroyed:s,isDisturbed:de,kIsDisturbed:u,isErrored:ge,kIsErrored:a,isReadable:se,kIsReadable:l,kIsClosedPromise:c,kControllerErrorFunction:d,isClosed:ne,isDestroyed:$,isDuplexNodeStream:_,isFinished:L,isIterable:M,isReadableNodeStream:p,isReadableStream:T,isReadableEnded:j,isReadableFinished:z,isReadableErrored:oe,isNodeStream:b,isWebStream:A,isWritable:re,isWritableNodeStream:m,isWritableStream:k,isWritableEnded:R,isWritableFinished:D,isWritableErrored:B,isServerRequest:G,isServerResponse:ae,willEmitClose:pe,isTransformStream:C}}),Gn=Ae((e,t)=>{_e(),we(),be();var r=ji(),{AbortError:n,codes:o}=jt(),{ERR_INVALID_ARG_TYPE:i,ERR_STREAM_PREMATURE_CLOSE:s}=o,{kEmptyObject:a,once:l}=hn(),{validateAbortSignal:u,validateFunction:c,validateObject:d,validateBoolean:p}=iu(),{Promise:m,PromisePrototypeThen:_}=ht(),{isClosed:b,isReadable:T,isReadableNodeStream:k,isReadableStream:C,isReadableFinished:A,isReadableErrored:M,isWritable:$,isWritableNodeStream:R,isWritableStream:D,isWritableFinished:j,isWritableErrored:z,isNodeStream:se,willEmitClose:re,kIsClosedPromise:L}=En();function B(G){return G.setHeader&&typeof G.abort=="function"}var oe=()=>{};function ne(G,pe,de){var ge,O;if(arguments.length===2?(de=pe,pe=a):pe==null?pe=a:d(pe,"options"),c(de,"callback"),u(pe.signal,"options.signal"),de=l(de),C(G)||D(G))return ue(G,pe,de);if(!se(G))throw new i("stream",["ReadableStream","WritableStream","Stream"],G);let ie=(ge=pe.readable)!==null&&ge!==void 0?ge:k(G),me=(O=pe.writable)!==null&&O!==void 0?O:R(G),ve=G._writableState,ye=G._readableState,V=()=>{G.writable||he()},F=re(G)&&k(G)===ie&&R(G)===me,Z=j(G,!1),he=()=>{Z=!0,G.destroyed&&(F=!1),!(F&&(!G.readable||ie))&&(!ie||fe)&&de.call(G)},fe=A(G,!1),ee=()=>{fe=!0,G.destroyed&&(F=!1),!(F&&(!G.writable||me))&&(!me||Z)&&de.call(G)},v=te=>{de.call(G,te)},S=b(G),E=()=>{S=!0;let te=z(G)||M(G);if(te&&typeof te!="boolean")return de.call(G,te);if(ie&&!fe&&k(G,!0)&&!A(G,!1))return de.call(G,new s);if(me&&!Z&&!j(G,!1))return de.call(G,new s);de.call(G)},N=()=>{S=!0;let te=z(G)||M(G);if(te&&typeof te!="boolean")return de.call(G,te);de.call(G)},P=()=>{G.req.on("finish",he)};B(G)?(G.on("complete",he),F||G.on("abort",E),G.req?P():G.on("request",P)):me&&!ve&&(G.on("end",V),G.on("close",V)),!F&&typeof G.aborted=="boolean"&&G.on("aborted",E),G.on("end",ee),G.on("finish",he),pe.error!==!1&&G.on("error",v),G.on("close",E),S?r.nextTick(E):ve!=null&&ve.errorEmitted||ye!=null&&ye.errorEmitted?F||r.nextTick(N):(!ie&&(!F||T(G))&&(Z||$(G)===!1)||!me&&(!F||$(G))&&(fe||T(G)===!1)||ye&&G.req&&G.aborted)&&r.nextTick(N);let J=()=>{de=oe,G.removeListener("aborted",E),G.removeListener("complete",he),G.removeListener("abort",E),G.removeListener("request",P),G.req&&G.req.removeListener("finish",he),G.removeListener("end",V),G.removeListener("close",V),G.removeListener("finish",he),G.removeListener("end",ee),G.removeListener("error",v),G.removeListener("close",E)};if(pe.signal&&!S){let te=()=>{let U=de;J(),U.call(G,new n(void 0,{cause:pe.signal.reason}))};if(pe.signal.aborted)r.nextTick(te);else{let U=de;de=l((...q)=>{pe.signal.removeEventListener("abort",te),U.apply(G,q)}),pe.signal.addEventListener("abort",te)}}return J}function ue(G,pe,de){let ge=!1,O=oe;if(pe.signal)if(O=()=>{ge=!0,de.call(G,new n(void 0,{cause:pe.signal.reason}))},pe.signal.aborted)r.nextTick(O);else{let me=de;de=l((...ve)=>{pe.signal.removeEventListener("abort",O),me.apply(G,ve)}),pe.signal.addEventListener("abort",O)}let ie=(...me)=>{ge||r.nextTick(()=>de.apply(G,me))};return _(G[L].promise,ie,ie),oe}function ae(G,pe){var de;let ge=!1;return pe===null&&(pe=a),(de=pe)!==null&&de!==void 0&&de.cleanup&&(p(pe.cleanup,"cleanup"),ge=pe.cleanup),new m((O,ie)=>{let me=ne(G,pe,ve=>{ge&&me(),ve?ie(ve):O()})})}t.exports=ne,t.exports.finished=ae}),zo=Ae((e,t)=>{_e(),we(),be();var r=ji(),{aggregateTwoErrors:n,codes:{ERR_MULTIPLE_CALLBACK:o},AbortError:i}=jt(),{Symbol:s}=ht(),{kDestroyed:a,isDestroyed:l,isFinished:u,isServerRequest:c}=En(),d=s("kDestroy"),p=s("kConstruct");function m(L,B,oe){L&&(L.stack,B&&!B.errored&&(B.errored=L),oe&&!oe.errored&&(oe.errored=L))}function _(L,B){let oe=this._readableState,ne=this._writableState,ue=ne||oe;return ne!=null&&ne.destroyed||oe!=null&&oe.destroyed?(typeof B=="function"&&B(),this):(m(L,ne,oe),ne&&(ne.destroyed=!0),oe&&(oe.destroyed=!0),ue.constructed?b(this,L,B):this.once(d,function(ae){b(this,n(ae,L),B)}),this)}function b(L,B,oe){let ne=!1;function ue(ae){if(ne)return;ne=!0;let G=L._readableState,pe=L._writableState;m(ae,pe,G),pe&&(pe.closed=!0),G&&(G.closed=!0),typeof oe=="function"&&oe(ae),ae?r.nextTick(T,L,ae):r.nextTick(k,L)}try{L._destroy(B||null,ue)}catch(ae){ue(ae)}}function T(L,B){C(L,B),k(L)}function k(L){let B=L._readableState,oe=L._writableState;oe&&(oe.closeEmitted=!0),B&&(B.closeEmitted=!0),(oe!=null&&oe.emitClose||B!=null&&B.emitClose)&&L.emit("close")}function C(L,B){let oe=L._readableState,ne=L._writableState;ne!=null&&ne.errorEmitted||oe!=null&&oe.errorEmitted||(ne&&(ne.errorEmitted=!0),oe&&(oe.errorEmitted=!0),L.emit("error",B))}function A(){let L=this._readableState,B=this._writableState;L&&(L.constructed=!0,L.closed=!1,L.closeEmitted=!1,L.destroyed=!1,L.errored=null,L.errorEmitted=!1,L.reading=!1,L.ended=L.readable===!1,L.endEmitted=L.readable===!1),B&&(B.constructed=!0,B.destroyed=!1,B.closed=!1,B.closeEmitted=!1,B.errored=null,B.errorEmitted=!1,B.finalCalled=!1,B.prefinished=!1,B.ended=B.writable===!1,B.ending=B.writable===!1,B.finished=B.writable===!1)}function M(L,B,oe){let ne=L._readableState,ue=L._writableState;if(ue!=null&&ue.destroyed||ne!=null&&ne.destroyed)return this;ne!=null&&ne.autoDestroy||ue!=null&&ue.autoDestroy?L.destroy(B):B&&(B.stack,ue&&!ue.errored&&(ue.errored=B),ne&&!ne.errored&&(ne.errored=B),oe?r.nextTick(C,L,B):C(L,B))}function $(L,B){if(typeof L._construct!="function")return;let oe=L._readableState,ne=L._writableState;oe&&(oe.constructed=!1),ne&&(ne.constructed=!1),L.once(p,B),!(L.listenerCount(p)>1)&&r.nextTick(R,L)}function R(L){let B=!1;function oe(ne){if(B){M(L,ne??new o);return}B=!0;let ue=L._readableState,ae=L._writableState,G=ae||ue;ue&&(ue.constructed=!0),ae&&(ae.constructed=!0),G.destroyed?L.emit(d,ne):ne?M(L,ne,!0):r.nextTick(D,L)}try{L._construct(ne=>{r.nextTick(oe,ne)})}catch(ne){r.nextTick(oe,ne)}}function D(L){L.emit(p)}function j(L){return(L==null?void 0:L.setHeader)&&typeof L.abort=="function"}function z(L){L.emit("close")}function se(L,B){L.emit("error",B),r.nextTick(z,L)}function re(L,B){!L||l(L)||(!B&&!u(L)&&(B=new i),c(L)?(L.socket=null,L.destroy(B)):j(L)?L.abort():j(L.req)?L.req.abort():typeof L.destroy=="function"?L.destroy(B):typeof L.close=="function"?L.close():B?r.nextTick(se,L,B):r.nextTick(z,L),L.destroyed||(L[a]=!0))}t.exports={construct:$,destroyer:re,destroy:_,undestroy:A,errorOrDestroy:M}});function Ke(){Ke.init.call(this)}function Ha(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function Zb(e){return e._maxListeners===void 0?Ke.defaultMaxListeners:e._maxListeners}function pm(e,t,r,n){var o,i,s,a;if(Ha(r),(i=e._events)===void 0?(i=e._events=Object.create(null),e._eventsCount=0):(i.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),s=i[t]),s===void 0)s=i[t]=r,++e._eventsCount;else if(typeof s=="function"?s=i[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(o=Zb(e))>0&&s.length>o&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,a=l,console&&console.warn&&console.warn(a)}return e}function _O(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function gm(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=_O.bind(n);return o.listener=r,n.wrapFn=o,o}function mm(e,t,r){var n=e._events;if(n===void 0)return[];var o=n[t];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?function(i){for(var s=new Array(i.length),a=0;a<s.length;++a)s[a]=i[a].listener||i[a];return s}(o):ew(o,o.length)}function ym(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}function ew(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}var _m,bm,ti,lc,uc,cc,Kt,wm=_t(()=>{_e(),we(),be(),ti=typeof Reflect=="object"?Reflect:null,lc=ti&&typeof ti.apply=="function"?ti.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)},bm=ti&&typeof ti.ownKeys=="function"?ti.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)},uc=Number.isNaN||function(e){return e!=e},_m=Ke,Ke.EventEmitter=Ke,Ke.prototype._events=void 0,Ke.prototype._eventsCount=0,Ke.prototype._maxListeners=void 0,cc=10,Object.defineProperty(Ke,"defaultMaxListeners",{enumerable:!0,get:function(){return cc},set:function(e){if(typeof e!="number"||e<0||uc(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");cc=e}}),Ke.init=function(){this._events!==void 0&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ke.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||uc(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},Ke.prototype.getMaxListeners=function(){return Zb(this)},Ke.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n=e==="error",o=this._events;if(o!==void 0)n=n&&o.error===void 0;else if(!n)return!1;if(n){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var s=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw s.context=i,s}var a=o[e];if(a===void 0)return!1;if(typeof a=="function")lc(a,this,t);else{var l=a.length,u=ew(a,l);for(r=0;r<l;++r)lc(u[r],this,t)}return!0},Ke.prototype.addListener=function(e,t){return pm(this,e,t,!1)},Ke.prototype.on=Ke.prototype.addListener,Ke.prototype.prependListener=function(e,t){return pm(this,e,t,!0)},Ke.prototype.once=function(e,t){return Ha(t),this.on(e,gm(this,e,t)),this},Ke.prototype.prependOnceListener=function(e,t){return Ha(t),this.prependListener(e,gm(this,e,t)),this},Ke.prototype.removeListener=function(e,t){var r,n,o,i,s;if(Ha(t),(n=this._events)===void 0)return this;if((r=n[e])===void 0)return this;if(r===t||r.listener===t)--this._eventsCount==0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if(typeof r!="function"){for(o=-1,i=r.length-1;i>=0;i--)if(r[i]===t||r[i].listener===t){s=r[i].listener,o=i;break}if(o<0)return this;o===0?r.shift():function(a,l){for(;l+1<a.length;l++)a[l]=a[l+1];a.pop()}(r,o),r.length===1&&(n[e]=r[0]),n.removeListener!==void 0&&this.emit("removeListener",e,s||t)}return this},Ke.prototype.off=Ke.prototype.removeListener,Ke.prototype.removeAllListeners=function(e){var t,r,n;if((r=this._events)===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var o,i=Object.keys(r);for(n=0;n<i.length;++n)(o=i[n])!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(typeof(t=r[e])=="function")this.removeListener(e,t);else if(t!==void 0)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},Ke.prototype.listeners=function(e){return mm(this,e,!0)},Ke.prototype.rawListeners=function(e){return mm(this,e,!1)},Ke.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):ym.call(e,t)},Ke.prototype.listenerCount=ym,Ke.prototype.eventNames=function(){return this._eventsCount>0?bm(this._events):[]},Kt=_m,Kt.EventEmitter,Kt.defaultMaxListeners,Kt.init,Kt.listenerCount,Kt.EventEmitter,Kt.defaultMaxListeners,Kt.init,Kt.listenerCount}),Wi={};Fi(Wi,{EventEmitter:()=>tw,default:()=>Kt,defaultMaxListeners:()=>rw,init:()=>nw,listenerCount:()=>iw,on:()=>ow,once:()=>sw});var tw,rw,nw,iw,ow,sw,Go=_t(()=>{_e(),we(),be(),wm(),wm(),Kt.once=function(e,t){return new Promise((r,n)=>{function o(...s){i!==void 0&&e.removeListener("error",i),r(s)}let i;t!=="error"&&(i=s=>{e.removeListener(name,o),n(s)},e.once("error",i)),e.once(t,o)})},Kt.on=function(e,t){let r=[],n=[],o=null,i=!1,s={async next(){let u=r.shift();if(u)return createIterResult(u,!1);if(o){let c=Promise.reject(o);return o=null,c}return i?createIterResult(void 0,!0):new Promise((c,d)=>n.push({resolve:c,reject:d}))},async return(){e.removeListener(t,a),e.removeListener("error",l),i=!0;for(let u of n)u.resolve(createIterResult(void 0,!0));return createIterResult(void 0,!0)},throw(u){o=u,e.removeListener(t,a),e.removeListener("error",l)},[Symbol.asyncIterator](){return this}};return e.on(t,a),e.on("error",l),s;function a(...u){let c=n.shift();c?c.resolve(createIterResult(u,!1)):r.push(u)}function l(u){i=!0;let c=n.shift();c?c.reject(u):o=u,s.return()}},{EventEmitter:tw,defaultMaxListeners:rw,init:nw,listenerCount:iw,on:ow,once:sw}=Kt}),lp=Ae((e,t)=>{_e(),we(),be();var{ArrayIsArray:r,ObjectSetPrototypeOf:n}=ht(),{EventEmitter:o}=(Go(),Ge(Wi));function i(a){o.call(this,a)}n(i.prototype,o.prototype),n(i,o),i.prototype.pipe=function(a,l){let u=this;function c(k){a.writable&&a.write(k)===!1&&u.pause&&u.pause()}u.on("data",c);function d(){u.readable&&u.resume&&u.resume()}a.on("drain",d),!a._isStdio&&(!l||l.end!==!1)&&(u.on("end",m),u.on("close",_));let p=!1;function m(){p||(p=!0,a.end())}function _(){p||(p=!0,typeof a.destroy=="function"&&a.destroy())}function b(k){T(),o.listenerCount(this,"error")===0&&this.emit("error",k)}s(u,"error",b),s(a,"error",b);function T(){u.removeListener("data",c),a.removeListener("drain",d),u.removeListener("end",m),u.removeListener("close",_),u.removeListener("error",b),a.removeListener("error",b),u.removeListener("end",T),u.removeListener("close",T),a.removeListener("close",T)}return u.on("end",T),u.on("close",T),a.on("close",T),a.emit("pipe",u),a};function s(a,l,u){if(typeof a.prependListener=="function")return a.prependListener(l,u);!a._events||!a._events[l]?a.on(l,u):r(a._events[l])?a._events[l].unshift(u):a._events[l]=[u,a._events[l]]}t.exports={Stream:i,prependListener:s}}),ou=Ae((e,t)=>{_e(),we(),be();var{AbortError:r,codes:n}=jt(),{isNodeStream:o,isWebStream:i,kControllerErrorFunction:s}=En(),a=Gn(),{ERR_INVALID_ARG_TYPE:l}=n,u=(c,d)=>{if(typeof c!="object"||!("aborted"in c))throw new l(d,"AbortSignal",c)};t.exports.addAbortSignal=function(c,d){if(u(c,"signal"),!o(d)&&!i(d))throw new l("stream",["ReadableStream","WritableStream","Stream"],d);return t.exports.addAbortSignalNoValidate(c,d)},t.exports.addAbortSignalNoValidate=function(c,d){if(typeof c!="object"||!("aborted"in c))return d;let p=o(d)?()=>{d.destroy(new r(void 0,{cause:c.reason}))}:()=>{d[s](new r(void 0,{cause:c.reason}))};return c.aborted?p():(c.addEventListener("abort",p),a(d,()=>c.removeEventListener("abort",p))),d}}),bO=Ae((e,t)=>{_e(),we(),be();var{StringPrototypeSlice:r,SymbolIterator:n,TypedArrayPrototypeSet:o,Uint8Array:i}=ht(),{Buffer:s}=(wt(),Ge(bt)),{inspect:a}=hn();t.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(l){let u={data:l,next:null};this.length>0?this.tail.next=u:this.head=u,this.tail=u,++this.length}unshift(l){let u={data:l,next:this.head};this.length===0&&(this.tail=u),this.head=u,++this.length}shift(){if(this.length===0)return;let l=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,l}clear(){this.head=this.tail=null,this.length=0}join(l){if(this.length===0)return"";let u=this.head,c=""+u.data;for(;(u=u.next)!==null;)c+=l+u.data;return c}concat(l){if(this.length===0)return s.alloc(0);let u=s.allocUnsafe(l>>>0),c=this.head,d=0;for(;c;)o(u,c.data,d),d+=c.data.length,c=c.next;return u}consume(l,u){let c=this.head.data;if(l<c.length){let d=c.slice(0,l);return this.head.data=c.slice(l),d}return l===c.length?this.shift():u?this._getString(l):this._getBuffer(l)}first(){return this.head.data}*[n](){for(let l=this.head;l;l=l.next)yield l.data}_getString(l){let u="",c=this.head,d=0;do{let p=c.data;if(l>p.length)u+=p,l-=p.length;else{l===p.length?(u+=p,++d,c.next?this.head=c.next:this.head=this.tail=null):(u+=r(p,0,l),this.head=c,c.data=r(p,l));break}++d}while((c=c.next)!==null);return this.length-=d,u}_getBuffer(l){let u=s.allocUnsafe(l),c=l,d=this.head,p=0;do{let m=d.data;if(l>m.length)o(u,m,c-l),l-=m.length;else{l===m.length?(o(u,m,c-l),++p,d.next?this.head=d.next:this.head=this.tail=null):(o(u,new i(m.buffer,m.byteOffset,l),c-l),this.head=d,d.data=m.slice(l));break}++p}while((d=d.next)!==null);return this.length-=p,u}[Symbol.for("nodejs.util.inspect.custom")](l,u){return a(this,{...u,depth:0,customInspect:!1})}}}),up=Ae((e,t)=>{_e(),we(),be();var{MathFloor:r,NumberIsInteger:n}=ht(),{ERR_INVALID_ARG_VALUE:o}=jt().codes;function i(l,u,c){return l.highWaterMark!=null?l.highWaterMark:u?l[c]:null}function s(l){return l?16:16*1024}function a(l,u,c,d){let p=i(u,d,c);if(p!=null){if(!n(p)||p<0){let m=d?`options.${c}`:"options.highWaterMark";throw new o(m,p)}return r(p)}return s(l.objectMode)}t.exports={getHighWaterMark:a,getDefaultHighWaterMark:s}});function vm(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return r===-1&&(r=t),[r,r===t?0:4-r%4]}function wO(e,t,r){for(var n,o,i=[],s=t;s<r;s+=3)n=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]),i.push(pr[(o=n)>>18&63]+pr[o>>12&63]+pr[o>>6&63]+pr[63&o]);return i.join("")}function tn(e){if(e>2147483647)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,Ee.prototype),t}function Ee(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return Ah(e)}return aw(e,t,r)}function aw(e,t,r){if(typeof e=="string")return function(i,s){if(typeof s=="string"&&s!==""||(s="utf8"),!Ee.isEncoding(s))throw new TypeError("Unknown encoding: "+s);var a=0|uw(i,s),l=tn(a),u=l.write(i,s);return u!==a&&(l=l.slice(0,u)),l}(e,t);if(ArrayBuffer.isView(e))return fc(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(rn(e,ArrayBuffer)||e&&rn(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(rn(e,SharedArrayBuffer)||e&&rn(e.buffer,SharedArrayBuffer)))return vO(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return Ee.from(n,t,r);var o=function(i){if(Ee.isBuffer(i)){var s=0|cp(i.length),a=tn(s);return a.length===0||i.copy(a,0,0,s),a}if(i.length!==void 0)return typeof i.length!="number"||fp(i.length)?tn(0):fc(i);if(i.type==="Buffer"&&Array.isArray(i.data))return fc(i.data)}(e);if(o)return o;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return Ee.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function lw(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function Ah(e){return lw(e),tn(e<0?0:0|cp(e))}function fc(e){for(var t=e.length<0?0:0|cp(e.length),r=tn(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function vO(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=t===void 0&&r===void 0?new Uint8Array(e):r===void 0?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,Ee.prototype),n}function cp(e){if(e>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function uw(e,t){if(Ee.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||rn(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Th(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return dw(e).length;default:if(o)return n?-1:Th(e).length;t=(""+t).toLowerCase(),o=!0}}function EO(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return kO(this,t,r);case"utf8":case"utf-8":return fw(this,t,r);case"ascii":return RO(this,t,r);case"latin1":case"binary":return OO(this,t,r);case"base64":return CO(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return MO(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function ri(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function Em(e,t,r,n,o){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),fp(r=+r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if(typeof t=="string"&&(t=Ee.from(t,n)),Ee.isBuffer(t))return t.length===0?-1:Sm(e,t,r,n,o);if(typeof t=="number")return t&=255,typeof Uint8Array.prototype.indexOf=="function"?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):Sm(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function Sm(e,t,r,n,o){var i,s=1,a=e.length,l=t.length;if(n!==void 0&&((n=String(n).toLowerCase())==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;s=2,a/=2,l/=2,r/=2}function u(m,_){return s===1?m[_]:m.readUInt16BE(_*s)}if(o){var c=-1;for(i=r;i<a;i++)if(u(e,i)===u(t,c===-1?0:i-c)){if(c===-1&&(c=i),i-c+1===l)return c*s}else c!==-1&&(i-=i-c),c=-1}else for(r+l>a&&(r=a-l),i=r;i>=0;i--){for(var d=!0,p=0;p<l;p++)if(u(e,i+p)!==u(t,p)){d=!1;break}if(d)return i}return-1}function SO(e,t,r,n){r=Number(r)||0;var o=e.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=t.length;n>i/2&&(n=i/2);for(var s=0;s<n;++s){var a=parseInt(t.substr(2*s,2),16);if(fp(a))return s;e[r+s]=a}return s}function AO(e,t,r,n){return su(Th(t,e.length-r),e,r,n)}function cw(e,t,r,n){return su(function(o){for(var i=[],s=0;s<o.length;++s)i.push(255&o.charCodeAt(s));return i}(t),e,r,n)}function TO(e,t,r,n){return cw(e,t,r,n)}function xO(e,t,r,n){return su(dw(t),e,r,n)}function IO(e,t,r,n){return su(function(o,i){for(var s,a,l,u=[],c=0;c<o.length&&!((i-=2)<0);++c)s=o.charCodeAt(c),a=s>>8,l=s%256,u.push(l),u.push(a);return u}(t,e.length-r),e,r,n)}function CO(e,t,r){return t===0&&r===e.length?yl.fromByteArray(e):yl.fromByteArray(e.slice(t,r))}function fw(e,t,r){r=Math.min(e.length,r);for(var n=[],o=t;o<r;){var i,s,a,l,u=e[o],c=null,d=u>239?4:u>223?3:u>191?2:1;if(o+d<=r)switch(d){case 1:u<128&&(c=u);break;case 2:(192&(i=e[o+1]))==128&&(l=(31&u)<<6|63&i)>127&&(c=l);break;case 3:i=e[o+1],s=e[o+2],(192&i)==128&&(192&s)==128&&(l=(15&u)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:i=e[o+1],s=e[o+2],a=e[o+3],(192&i)==128&&(192&s)==128&&(192&a)==128&&(l=(15&u)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(c=l)}c===null?(c=65533,d=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=d}return function(p){var m=p.length;if(m<=4096)return String.fromCharCode.apply(String,p);for(var _="",b=0;b<m;)_+=String.fromCharCode.apply(String,p.slice(b,b+=4096));return _}(n)}function RO(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(127&e[o]);return n}function OO(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(e[o]);return n}function kO(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var o="",i=t;i<r;++i)o+=gw[e[i]];return o}function MO(e,t,r){for(var n=e.slice(t,r),o="",i=0;i<n.length;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function pt(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function Bt(e,t,r,n,o,i){if(!Ee.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||t<i)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function hw(e,t,r,n,o,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Am(e,t,r,n,o){return t=+t,r>>>=0,o||hw(e,0,r,4),pi.write(e,t,r,n,23,4),r+4}function Tm(e,t,r,n,o){return t=+t,r>>>=0,o||hw(e,0,r,8),pi.write(e,t,r,n,52,8),r+8}function Th(e,t){var r;t=t||1/0;for(var n=e.length,o=null,i=[],s=0;s<n;++s){if((r=e.charCodeAt(s))>55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function dw(e){return yl.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(pw,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(e))}function su(e,t,r,n){for(var o=0;o<n&&!(o+r>=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function rn(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function fp(e){return e!=e}function xm(e,t){for(var r in e)t[r]=e[r]}function ni(e,t,r){return hr(e,t,r)}function ss(e){var t;switch(this.encoding=function(r){var n=function(o){if(!o)return"utf8";for(var i;;)switch(o){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return o;default:if(i)return;o=(""+o).toLowerCase(),i=!0}}(r);if(typeof n!="string"&&(_l.isEncoding===xh||!xh(r)))throw new Error("Unknown encoding: "+r);return n||r}(e),this.encoding){case"utf16le":this.text=PO,this.end=LO,t=4;break;case"utf8":this.fillLast=NO,t=4;break;case"base64":this.text=DO,this.end=BO,t=3;break;default:return this.write=$O,this.end=UO,void 0}this.lastNeed=0,this.lastTotal=0,this.lastChar=_l.allocUnsafe(t)}function hc(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function NO(e){var t=this.lastTotal-this.lastNeed,r=function(n,o,i){if((192&o[0])!=128)return n.lastNeed=0,"�";if(n.lastNeed>1&&o.length>1){if((192&o[1])!=128)return n.lastNeed=1,"�";if(n.lastNeed>2&&o.length>2&&(192&o[2])!=128)return n.lastNeed=2,"�"}}(this,e);return r!==void 0?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length,void 0)}function PO(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function LO(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function DO(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function BO(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function $O(e){return e.toString(this.encoding)}function UO(e){return e&&e.length?this.write(e):""}var Im,pr,Ht,Cm,_a,ii,Rm,Om,Sr,yl,pi,dc,pw,gw,as,ls,hr,km,po,_l,xh,Mm=_t(()=>{for(_e(),we(),be(),Im={byteLength:function(e){var t=vm(e),r=t[0],n=t[1];return 3*(r+n)/4-n},toByteArray:function(e){var t,r,n=vm(e),o=n[0],i=n[1],s=new Cm(function(u,c,d){return 3*(c+d)/4-d}(0,o,i)),a=0,l=i>0?o-4:o;for(r=0;r<l;r+=4)t=Ht[e.charCodeAt(r)]<<18|Ht[e.charCodeAt(r+1)]<<12|Ht[e.charCodeAt(r+2)]<<6|Ht[e.charCodeAt(r+3)],s[a++]=t>>16&255,s[a++]=t>>8&255,s[a++]=255&t;return i===2&&(t=Ht[e.charCodeAt(r)]<<2|Ht[e.charCodeAt(r+1)]>>4,s[a++]=255&t),i===1&&(t=Ht[e.charCodeAt(r)]<<10|Ht[e.charCodeAt(r+1)]<<4|Ht[e.charCodeAt(r+2)]>>2,s[a++]=t>>8&255,s[a++]=255&t),s},fromByteArray:function(e){for(var t,r=e.length,n=r%3,o=[],i=0,s=r-n;i<s;i+=16383)o.push(wO(e,i,i+16383>s?s:i+16383));return n===1?(t=e[r-1],o.push(pr[t>>2]+pr[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],o.push(pr[t>>10]+pr[t>>4&63]+pr[t<<2&63]+"=")),o.join("")}},pr=[],Ht=[],Cm=typeof Uint8Array<"u"?Uint8Array:Array,_a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ii=0,Rm=_a.length;ii<Rm;++ii)pr[ii]=_a[ii],Ht[_a.charCodeAt(ii)]=ii;Ht[45]=62,Ht[95]=63,Om={read:function(e,t,r,n,o){var i,s,a=8*o-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,m=e[t+d];for(d+=p,i=m&(1<<-c)-1,m>>=-c,c+=a;c>0;i=256*i+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=256*s+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:1/0*(m?-1:1);s+=Math.pow(2,n),i-=u}return(m?-1:1)*s*Math.pow(2,i-n)},write:function(e,t,r,n,o,i){var s,a,l,u=8*i-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+d>=1?p/l:p*Math.pow(2,1-d))*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s+=d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+m]=255&a,m+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+m]=255&s,m+=_,s/=256,u-=8);e[r+m-_]|=128*b}},Sr={},yl=Im,pi=Om,dc=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null,Sr.Buffer=Ee,Sr.SlowBuffer=function(e){return+e!=e&&(e=0),Ee.alloc(+e)},Sr.INSPECT_MAX_BYTES=50,Sr.kMaxLength=2147483647,Ee.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch{return!1}}(),Ee.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Ee.prototype,"parent",{enumerable:!0,get:function(){if(Ee.isBuffer(this))return this.buffer}}),Object.defineProperty(Ee.prototype,"offset",{enumerable:!0,get:function(){if(Ee.isBuffer(this))return this.byteOffset}}),Ee.poolSize=8192,Ee.from=function(e,t,r){return aw(e,t,r)},Object.setPrototypeOf(Ee.prototype,Uint8Array.prototype),Object.setPrototypeOf(Ee,Uint8Array),Ee.alloc=function(e,t,r){return function(n,o,i){return lw(n),n<=0?tn(n):o!==void 0?typeof i=="string"?tn(n).fill(o,i):tn(n).fill(o):tn(n)}(e,t,r)},Ee.allocUnsafe=function(e){return Ah(e)},Ee.allocUnsafeSlow=function(e){return Ah(e)},Ee.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==Ee.prototype},Ee.compare=function(e,t){if(rn(e,Uint8Array)&&(e=Ee.from(e,e.offset,e.byteLength)),rn(t,Uint8Array)&&(t=Ee.from(t,t.offset,t.byteLength)),!Ee.isBuffer(e)||!Ee.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,o=0,i=Math.min(r,n);o<i;++o)if(e[o]!==t[o]){r=e[o],n=t[o];break}return r<n?-1:n<r?1:0},Ee.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Ee.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return Ee.alloc(0);var r;if(t===void 0)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=Ee.allocUnsafe(t),o=0;for(r=0;r<e.length;++r){var i=e[r];if(rn(i,Uint8Array)&&(i=Ee.from(i)),!Ee.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,o),o+=i.length}return n},Ee.byteLength=uw,Ee.prototype._isBuffer=!0,Ee.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)ri(this,t,t+1);return this},Ee.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)ri(this,t,t+3),ri(this,t+1,t+2);return this},Ee.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)ri(this,t,t+7),ri(this,t+1,t+6),ri(this,t+2,t+5),ri(this,t+3,t+4);return this},Ee.prototype.toString=function(){var e=this.length;return e===0?"":arguments.length===0?fw(this,0,e):EO.apply(this,arguments)},Ee.prototype.toLocaleString=Ee.prototype.toString,Ee.prototype.equals=function(e){if(!Ee.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||Ee.compare(this,e)===0},Ee.prototype.inspect=function(){var e="",t=Sr.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},dc&&(Ee.prototype[dc]=Ee.prototype.inspect),Ee.prototype.compare=function(e,t,r,n,o){if(rn(e,Uint8Array)&&(e=Ee.from(e,e.offset,e.byteLength)),!Ee.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),r===void 0&&(r=e?e.length:0),n===void 0&&(n=0),o===void 0&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0),a=Math.min(i,s),l=this.slice(n,o),u=e.slice(t,r),c=0;c<a;++c)if(l[c]!==u[c]){i=l[c],s=u[c];break}return i<s?-1:s<i?1:0},Ee.prototype.includes=function(e,t,r){return this.indexOf(e,t,r)!==-1},Ee.prototype.indexOf=function(e,t,r){return Em(this,e,t,r,!0)},Ee.prototype.lastIndexOf=function(e,t,r){return Em(this,e,t,r,!1)},Ee.prototype.write=function(e,t,r,n){if(t===void 0)n="utf8",r=this.length,t=0;else if(r===void 0&&typeof t=="string")n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,n===void 0&&(n="utf8")):(n=r,r=void 0)}var o=this.length-t;if((r===void 0||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return SO(this,e,t,r);case"utf8":case"utf-8":return AO(this,e,t,r);case"ascii":return cw(this,e,t,r);case"latin1":case"binary":return TO(this,e,t,r);case"base64":return xO(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return IO(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},Ee.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},Ee.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=t===void 0?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,Ee.prototype),n},Ee.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||pt(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n},Ee.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||pt(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},Ee.prototype.readUInt8=function(e,t){return e>>>=0,t||pt(e,1,this.length),this[e]},Ee.prototype.readUInt16LE=function(e,t){return e>>>=0,t||pt(e,2,this.length),this[e]|this[e+1]<<8},Ee.prototype.readUInt16BE=function(e,t){return e>>>=0,t||pt(e,2,this.length),this[e]<<8|this[e+1]},Ee.prototype.readUInt32LE=function(e,t){return e>>>=0,t||pt(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Ee.prototype.readUInt32BE=function(e,t){return e>>>=0,t||pt(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Ee.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||pt(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n>=(o*=128)&&(n-=Math.pow(2,8*t)),n},Ee.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||pt(e,t,this.length);for(var n=t,o=1,i=this[e+--n];n>0&&(o*=256);)i+=this[e+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},Ee.prototype.readInt8=function(e,t){return e>>>=0,t||pt(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Ee.prototype.readInt16LE=function(e,t){e>>>=0,t||pt(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Ee.prototype.readInt16BE=function(e,t){e>>>=0,t||pt(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Ee.prototype.readInt32LE=function(e,t){return e>>>=0,t||pt(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Ee.prototype.readInt32BE=function(e,t){return e>>>=0,t||pt(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Ee.prototype.readFloatLE=function(e,t){return e>>>=0,t||pt(e,4,this.length),pi.read(this,e,!0,23,4)},Ee.prototype.readFloatBE=function(e,t){return e>>>=0,t||pt(e,4,this.length),pi.read(this,e,!1,23,4)},Ee.prototype.readDoubleLE=function(e,t){return e>>>=0,t||pt(e,8,this.length),pi.read(this,e,!0,52,8)},Ee.prototype.readDoubleBE=function(e,t){return e>>>=0,t||pt(e,8,this.length),pi.read(this,e,!1,52,8)},Ee.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||Bt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[t]=255&e;++i<r&&(o*=256);)this[t+i]=e/o&255;return t+r},Ee.prototype.writeUIntBE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||Bt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+r},Ee.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,1,255,0),this[t]=255&e,t+1},Ee.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},Ee.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},Ee.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},Ee.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Ee.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);Bt(this,e,t,r,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i<r&&(s*=256);)e<0&&a===0&&this[t+i-1]!==0&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+r},Ee.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);Bt(this,e,t,r,o-1,-o)}var i=r-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&a===0&&this[t+i+1]!==0&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+r},Ee.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},Ee.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},Ee.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},Ee.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},Ee.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||Bt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Ee.prototype.writeFloatLE=function(e,t,r){return Am(this,e,t,!0,r)},Ee.prototype.writeFloatBE=function(e,t,r){return Am(this,e,t,!1,r)},Ee.prototype.writeDoubleLE=function(e,t,r){return Tm(this,e,t,!0,r)},Ee.prototype.writeDoubleBE=function(e,t,r){return Tm(this,e,t,!1,r)},Ee.prototype.copy=function(e,t,r,n){if(!Ee.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||n===0||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var o=n-r;if(this===e&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(t,r,n);else if(this===e&&r<t&&t<n)for(var i=o-1;i>=0;--i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return o},Ee.prototype.fill=function(e,t,r,n){if(typeof e=="string"){if(typeof t=="string"?(n=t,t=0,r=this.length):typeof r=="string"&&(n=r,r=this.length),n!==void 0&&typeof n!="string")throw new TypeError("encoding must be a string");if(typeof n=="string"&&!Ee.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(e.length===1){var o=e.charCodeAt(0);(n==="utf8"&&o<128||n==="latin1")&&(e=o)}}else typeof e=="number"?e&=255:typeof e=="boolean"&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var i;if(t>>>=0,r=r===void 0?this.length:r>>>0,e||(e=0),typeof e=="number")for(i=t;i<r;++i)this[i]=e;else{var s=Ee.isBuffer(e)?e:Ee.from(e,n),a=s.length;if(a===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=s[i%a]}return this},pw=/[^+/0-9A-Za-z-_]/g,gw=function(){for(var e=new Array(256),t=0;t<16;++t)for(var r=16*t,n=0;n<16;++n)e[r+n]="0123456789abcdef"[t]+"0123456789abcdef"[n];return e}(),Sr.Buffer,Sr.INSPECT_MAX_BYTES,Sr.kMaxLength,as={},ls=Sr,hr=ls.Buffer,hr.from&&hr.alloc&&hr.allocUnsafe&&hr.allocUnsafeSlow?as=ls:(xm(ls,as),as.Buffer=ni),ni.prototype=Object.create(hr.prototype),xm(hr,ni),ni.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return hr(e,t,r)},ni.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=hr(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n},ni.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return hr(e)},ni.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ls.SlowBuffer(e)},km=as,po={},_l=km.Buffer,xh=_l.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},po.StringDecoder=ss,ss.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if((t=this.fillLast(e))===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""},ss.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},ss.prototype.text=function(e,t){var r=function(o,i,s){var a=i.length-1;if(a<s)return 0;var l=hc(i[a]);return l>=0?(l>0&&(o.lastNeed=l-1),l):--a<s||l===-2?0:(l=hc(i[a]))>=0?(l>0&&(o.lastNeed=l-2),l):--a<s||l===-2?0:(l=hc(i[a]))>=0?(l>0&&(l===2?l=0:o.lastNeed=l-3),l):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},ss.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},po.StringDecoder,po.StringDecoder}),mw={};Fi(mw,{StringDecoder:()=>yw,default:()=>po});var yw,FO=_t(()=>{_e(),we(),be(),Mm(),Mm(),yw=po.StringDecoder}),_w=Ae((e,t)=>{_e(),we(),be();var r=ji(),{PromisePrototypeThen:n,SymbolAsyncIterator:o,SymbolIterator:i}=ht(),{Buffer:s}=(wt(),Ge(bt)),{ERR_INVALID_ARG_TYPE:a,ERR_STREAM_NULL_VALUES:l}=jt().codes;function u(c,d,p){let m;if(typeof d=="string"||d instanceof s)return new c({objectMode:!0,...p,read(){this.push(d),this.push(null)}});let _;if(d&&d[o])_=!0,m=d[o]();else if(d&&d[i])_=!1,m=d[i]();else throw new a("iterable",["Iterable"],d);let b=new c({objectMode:!0,highWaterMark:1,...p}),T=!1;b._read=function(){T||(T=!0,C())},b._destroy=function(A,M){n(k(A),()=>r.nextTick(M,A),$=>r.nextTick(M,$||A))};async function k(A){let M=A!=null,$=typeof m.throw=="function";if(M&&$){let{value:R,done:D}=await m.throw(A);if(await R,D)return}if(typeof m.return=="function"){let{value:R}=await m.return();await R}}async function C(){for(;;){try{let{value:A,done:M}=_?await m.next():m.next();if(M)b.push(null);else{let $=A&&typeof A.then=="function"?await A:A;if($===null)throw T=!1,new l;if(b.push($))continue;T=!1}}catch(A){b.destroy(A)}break}}return b}t.exports=u}),au=Ae((e,t)=>{_e(),we(),be();var r=ji(),{ArrayPrototypeIndexOf:n,NumberIsInteger:o,NumberIsNaN:i,NumberParseInt:s,ObjectDefineProperties:a,ObjectKeys:l,ObjectSetPrototypeOf:u,Promise:c,SafeSet:d,SymbolAsyncIterator:p,Symbol:m}=ht();t.exports=O,O.ReadableState=ge;var{EventEmitter:_}=(Go(),Ge(Wi)),{Stream:b,prependListener:T}=lp(),{Buffer:k}=(wt(),Ge(bt)),{addAbortSignal:C}=ou(),A=Gn(),M=hn().debuglog("stream",h=>{M=h}),$=bO(),R=zo(),{getHighWaterMark:D,getDefaultHighWaterMark:j}=up(),{aggregateTwoErrors:z,codes:{ERR_INVALID_ARG_TYPE:se,ERR_METHOD_NOT_IMPLEMENTED:re,ERR_OUT_OF_RANGE:L,ERR_STREAM_PUSH_AFTER_EOF:B,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:oe}}=jt(),{validateObject:ne}=iu(),ue=m("kPaused"),{StringDecoder:ae}=(FO(),Ge(mw)),G=_w();u(O.prototype,b.prototype),u(O,b);var pe=()=>{},{errorOrDestroy:de}=R;function ge(h,f,g){typeof g!="boolean"&&(g=f instanceof dn()),this.objectMode=!!(h&&h.objectMode),g&&(this.objectMode=this.objectMode||!!(h&&h.readableObjectMode)),this.highWaterMark=h?D(this,h,"readableHighWaterMark",g):j(!1),this.buffer=new $,this.length=0,this.pipes=[],this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.constructed=!0,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this[ue]=null,this.errorEmitted=!1,this.emitClose=!h||h.emitClose!==!1,this.autoDestroy=!h||h.autoDestroy!==!1,this.destroyed=!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this.defaultEncoding=h&&h.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.multiAwaitDrain=!1,this.readingMore=!1,this.dataEmitted=!1,this.decoder=null,this.encoding=null,h&&h.encoding&&(this.decoder=new ae(h.encoding),this.encoding=h.encoding)}function O(h){if(!(this instanceof O))return new O(h);let f=this instanceof dn();this._readableState=new ge(h,this,f),h&&(typeof h.read=="function"&&(this._read=h.read),typeof h.destroy=="function"&&(this._destroy=h.destroy),typeof h.construct=="function"&&(this._construct=h.construct),h.signal&&!f&&C(h.signal,this)),b.call(this,h),R.construct(this,()=>{this._readableState.needReadable&&fe(this,this._readableState)})}O.prototype.destroy=R.destroy,O.prototype._undestroy=R.undestroy,O.prototype._destroy=function(h,f){f(h)},O.prototype[_.captureRejectionSymbol]=function(h){this.destroy(h)},O.prototype.push=function(h,f){return ie(this,h,f,!1)},O.prototype.unshift=function(h,f){return ie(this,h,f,!0)};function ie(h,f,g,w){M("readableAddChunk",f);let I=h._readableState,W;if(I.objectMode||(typeof f=="string"?(g=g||I.defaultEncoding,I.encoding!==g&&(w&&I.encoding?f=k.from(f,g).toString(I.encoding):(f=k.from(f,g),g=""))):f instanceof k?g="":b._isUint8Array(f)?(f=b._uint8ArrayToBuffer(f),g=""):f!=null&&(W=new se("chunk",["string","Buffer","Uint8Array"],f))),W)de(h,W);else if(f===null)I.reading=!1,F(h,I);else if(I.objectMode||f&&f.length>0)if(w)if(I.endEmitted)de(h,new oe);else{if(I.destroyed||I.errored)return!1;me(h,I,f,!0)}else if(I.ended)de(h,new B);else{if(I.destroyed||I.errored)return!1;I.reading=!1,I.decoder&&!g?(f=I.decoder.write(f),I.objectMode||f.length!==0?me(h,I,f,!1):fe(h,I)):me(h,I,f,!1)}else w||(I.reading=!1,fe(h,I));return!I.ended&&(I.length<I.highWaterMark||I.length===0)}function me(h,f,g,w){f.flowing&&f.length===0&&!f.sync&&h.listenerCount("data")>0?(f.multiAwaitDrain?f.awaitDrainWriters.clear():f.awaitDrainWriters=null,f.dataEmitted=!0,h.emit("data",g)):(f.length+=f.objectMode?1:g.length,w?f.buffer.unshift(g):f.buffer.push(g),f.needReadable&&Z(h)),fe(h,f)}O.prototype.isPaused=function(){let h=this._readableState;return h[ue]===!0||h.flowing===!1},O.prototype.setEncoding=function(h){let f=new ae(h);this._readableState.decoder=f,this._readableState.encoding=this._readableState.decoder.encoding;let g=this._readableState.buffer,w="";for(let I of g)w+=f.write(I);return g.clear(),w!==""&&g.push(w),this._readableState.length=w.length,this};var ve=1073741824;function ye(h){if(h>ve)throw new L("size","<= 1GiB",h);return h--,h|=h>>>1,h|=h>>>2,h|=h>>>4,h|=h>>>8,h|=h>>>16,h++,h}function V(h,f){return h<=0||f.length===0&&f.ended?0:f.objectMode?1:i(h)?f.flowing&&f.length?f.buffer.first().length:f.length:h<=f.length?h:f.ended?f.length:0}O.prototype.read=function(h){M("read",h),h===void 0?h=NaN:o(h)||(h=s(h,10));let f=this._readableState,g=h;if(h>f.highWaterMark&&(f.highWaterMark=ye(h)),h!==0&&(f.emittedReadable=!1),h===0&&f.needReadable&&((f.highWaterMark!==0?f.length>=f.highWaterMark:f.length>0)||f.ended))return M("read: emitReadable",f.length,f.ended),f.length===0&&f.ended?x(this):Z(this),null;if(h=V(h,f),h===0&&f.ended)return f.length===0&&x(this),null;let w=f.needReadable;if(M("need readable",w),(f.length===0||f.length-h<f.highWaterMark)&&(w=!0,M("length less than watermark",w)),f.ended||f.reading||f.destroyed||f.errored||!f.constructed)w=!1,M("reading, ended or constructing",w);else if(w){M("do read"),f.reading=!0,f.sync=!0,f.length===0&&(f.needReadable=!0);try{this._read(f.highWaterMark)}catch(W){de(this,W)}f.sync=!1,f.reading||(h=V(g,f))}let I;return h>0?I=q(h,f):I=null,I===null?(f.needReadable=f.length<=f.highWaterMark,h=0):(f.length-=h,f.multiAwaitDrain?f.awaitDrainWriters.clear():f.awaitDrainWriters=null),f.length===0&&(f.ended||(f.needReadable=!0),g!==h&&f.ended&&x(this)),I!==null&&!f.errorEmitted&&!f.closeEmitted&&(f.dataEmitted=!0,this.emit("data",I)),I};function F(h,f){if(M("onEofChunk"),!f.ended){if(f.decoder){let g=f.decoder.end();g&&g.length&&(f.buffer.push(g),f.length+=f.objectMode?1:g.length)}f.ended=!0,f.sync?Z(h):(f.needReadable=!1,f.emittedReadable=!0,he(h))}}function Z(h){let f=h._readableState;M("emitReadable",f.needReadable,f.emittedReadable),f.needReadable=!1,f.emittedReadable||(M("emitReadable",f.flowing),f.emittedReadable=!0,r.nextTick(he,h))}function he(h){let f=h._readableState;M("emitReadable_",f.destroyed,f.length,f.ended),!f.destroyed&&!f.errored&&(f.length||f.ended)&&(h.emit("readable"),f.emittedReadable=!1),f.needReadable=!f.flowing&&!f.ended&&f.length<=f.highWaterMark,J(h)}function fe(h,f){!f.readingMore&&f.constructed&&(f.readingMore=!0,r.nextTick(ee,h,f))}function ee(h,f){for(;!f.reading&&!f.ended&&(f.length<f.highWaterMark||f.flowing&&f.length===0);){let g=f.length;if(M("maybeReadMore read 0"),h.read(0),g===f.length)break}f.readingMore=!1}O.prototype._read=function(h){throw new re("_read()")},O.prototype.pipe=function(h,f){let g=this,w=this._readableState;w.pipes.length===1&&(w.multiAwaitDrain||(w.multiAwaitDrain=!0,w.awaitDrainWriters=new d(w.awaitDrainWriters?[w.awaitDrainWriters]:[]))),w.pipes.push(h),M("pipe count=%d opts=%j",w.pipes.length,f);let I=(!f||f.end!==!1)&&h!==r.stdout&&h!==r.stderr?ce:at;w.endEmitted?r.nextTick(I):g.once("end",I),h.on("unpipe",W);function W(mt,ct){M("onunpipe"),mt===g&&ct&&ct.hasUnpiped===!1&&(ct.hasUnpiped=!0,Te())}function ce(){M("onend"),h.end()}let xe,ke=!1;function Te(){M("cleanup"),h.removeListener("close",ut),h.removeListener("finish",Ze),xe&&h.removeListener("drain",xe),h.removeListener("error",Ve),h.removeListener("unpipe",W),g.removeListener("end",ce),g.removeListener("end",at),g.removeListener("data",Re),ke=!0,xe&&w.awaitDrainWriters&&(!h._writableState||h._writableState.needDrain)&&xe()}function Oe(){ke||(w.pipes.length===1&&w.pipes[0]===h?(M("false write response, pause",0),w.awaitDrainWriters=h,w.multiAwaitDrain=!1):w.pipes.length>1&&w.pipes.includes(h)&&(M("false write response, pause",w.awaitDrainWriters.size),w.awaitDrainWriters.add(h)),g.pause()),xe||(xe=v(g,h),h.on("drain",xe))}g.on("data",Re);function Re(mt){M("ondata");let ct=h.write(mt);M("dest.write",ct),ct===!1&&Oe()}function Ve(mt){if(M("onerror",mt),at(),h.removeListener("error",Ve),h.listenerCount("error")===0){let ct=h._writableState||h._readableState;ct&&!ct.errorEmitted?de(h,mt):h.emit("error",mt)}}T(h,"error",Ve);function ut(){h.removeListener("finish",Ze),at()}h.once("close",ut);function Ze(){M("onfinish"),h.removeListener("close",ut),at()}h.once("finish",Ze);function at(){M("unpipe"),g.unpipe(h)}return h.emit("pipe",g),h.writableNeedDrain===!0?w.flowing&&Oe():w.flowing||(M("pipe resume"),g.resume()),h};function v(h,f){return function(){let g=h._readableState;g.awaitDrainWriters===f?(M("pipeOnDrain",1),g.awaitDrainWriters=null):g.multiAwaitDrain&&(M("pipeOnDrain",g.awaitDrainWriters.size),g.awaitDrainWriters.delete(f)),(!g.awaitDrainWriters||g.awaitDrainWriters.size===0)&&h.listenerCount("data")&&h.resume()}}O.prototype.unpipe=function(h){let f=this._readableState,g={hasUnpiped:!1};if(f.pipes.length===0)return this;if(!h){let I=f.pipes;f.pipes=[],this.pause();for(let W=0;W<I.length;W++)I[W].emit("unpipe",this,{hasUnpiped:!1});return this}let w=n(f.pipes,h);return w===-1?this:(f.pipes.splice(w,1),f.pipes.length===0&&this.pause(),h.emit("unpipe",this,g),this)},O.prototype.on=function(h,f){let g=b.prototype.on.call(this,h,f),w=this._readableState;return h==="data"?(w.readableListening=this.listenerCount("readable")>0,w.flowing!==!1&&this.resume()):h==="readable"&&!w.endEmitted&&!w.readableListening&&(w.readableListening=w.needReadable=!0,w.flowing=!1,w.emittedReadable=!1,M("on readable",w.length,w.reading),w.length?Z(this):w.reading||r.nextTick(E,this)),g},O.prototype.addListener=O.prototype.on,O.prototype.removeListener=function(h,f){let g=b.prototype.removeListener.call(this,h,f);return h==="readable"&&r.nextTick(S,this),g},O.prototype.off=O.prototype.removeListener,O.prototype.removeAllListeners=function(h){let f=b.prototype.removeAllListeners.apply(this,arguments);return(h==="readable"||h===void 0)&&r.nextTick(S,this),f};function S(h){let f=h._readableState;f.readableListening=h.listenerCount("readable")>0,f.resumeScheduled&&f[ue]===!1?f.flowing=!0:h.listenerCount("data")>0?h.resume():f.readableListening||(f.flowing=null)}function E(h){M("readable nexttick read 0"),h.read(0)}O.prototype.resume=function(){let h=this._readableState;return h.flowing||(M("resume"),h.flowing=!h.readableListening,N(this,h)),h[ue]=!1,this};function N(h,f){f.resumeScheduled||(f.resumeScheduled=!0,r.nextTick(P,h,f))}function P(h,f){M("resume",f.reading),f.reading||h.read(0),f.resumeScheduled=!1,h.emit("resume"),J(h),f.flowing&&!f.reading&&h.read(0)}O.prototype.pause=function(){return M("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(M("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[ue]=!0,this};function J(h){let f=h._readableState;for(M("flow",f.flowing);f.flowing&&h.read()!==null;);}O.prototype.wrap=function(h){let f=!1;h.on("data",w=>{!this.push(w)&&h.pause&&(f=!0,h.pause())}),h.on("end",()=>{this.push(null)}),h.on("error",w=>{de(this,w)}),h.on("close",()=>{this.destroy()}),h.on("destroy",()=>{this.destroy()}),this._read=()=>{f&&h.resume&&(f=!1,h.resume())};let g=l(h);for(let w=1;w<g.length;w++){let I=g[w];this[I]===void 0&&typeof h[I]=="function"&&(this[I]=h[I].bind(h))}return this},O.prototype[p]=function(){return te(this)},O.prototype.iterator=function(h){return h!==void 0&&ne(h,"options"),te(this,h)};function te(h,f){typeof h.read!="function"&&(h=O.wrap(h,{objectMode:!0}));let g=U(h,f);return g.stream=h,g}async function*U(h,f){let g=pe;function w(ce){this===h?(g(),g=pe):g=ce}h.on("readable",w);let I,W=A(h,{writable:!1},ce=>{I=ce?z(I,ce):null,g(),g=pe});try{for(;;){let ce=h.destroyed?null:h.read();if(ce!==null)yield ce;else{if(I)throw I;if(I===null)return;await new c(w)}}}catch(ce){throw I=z(I,ce),I}finally{(I||(f==null?void 0:f.destroyOnReturn)!==!1)&&(I===void 0||h._readableState.autoDestroy)?R.destroyer(h,null):(h.off("readable",w),W())}}a(O.prototype,{readable:{__proto__:null,get(){let h=this._readableState;return!!h&&h.readable!==!1&&!h.destroyed&&!h.errorEmitted&&!h.endEmitted},set(h){this._readableState&&(this._readableState.readable=!!h)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(h){this._readableState&&(this._readableState.flowing=h)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(h){this._readableState&&(this._readableState.destroyed=h)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),a(ge.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[ue]!==!1},set(h){this[ue]=!!h}}}),O._fromList=q;function q(h,f){if(f.length===0)return null;let g;return f.objectMode?g=f.buffer.shift():!h||h>=f.length?(f.decoder?g=f.buffer.join(""):f.buffer.length===1?g=f.buffer.first():g=f.buffer.concat(f.length),f.buffer.clear()):g=f.buffer.consume(h,f.decoder),g}function x(h){let f=h._readableState;M("endReadable",f.endEmitted),f.endEmitted||(f.ended=!0,r.nextTick(K,f,h))}function K(h,f){if(M("endReadableNT",h.endEmitted,h.length),!h.errored&&!h.closeEmitted&&!h.endEmitted&&h.length===0){if(h.endEmitted=!0,f.emit("end"),f.writable&&f.allowHalfOpen===!1)r.nextTick(Y,f);else if(h.autoDestroy){let g=f._writableState;(!g||g.autoDestroy&&(g.finished||g.writable===!1))&&f.destroy()}}}function Y(h){h.writable&&!h.writableEnded&&!h.destroyed&&h.end()}O.from=function(h,f){return G(O,h,f)};var le;function y(){return le===void 0&&(le={}),le}O.fromWeb=function(h,f){return y().newStreamReadableFromReadableStream(h,f)},O.toWeb=function(h,f){return y().newReadableStreamFromStreamReadable(h,f)},O.wrap=function(h,f){var g,w;return new O({objectMode:(g=(w=h.readableObjectMode)!==null&&w!==void 0?w:h.objectMode)!==null&&g!==void 0?g:!0,...f,destroy(I,W){R.destroyer(h,I),W(I)}}).wrap(h)}}),bw=Ae((e,t)=>{_e(),we(),be();var r=ji(),{ArrayPrototypeSlice:n,Error:o,FunctionPrototypeSymbolHasInstance:i,ObjectDefineProperty:s,ObjectDefineProperties:a,ObjectSetPrototypeOf:l,StringPrototypeToLowerCase:u,Symbol:c,SymbolHasInstance:d}=ht();t.exports=ae,ae.WritableState=ne;var{EventEmitter:p}=(Go(),Ge(Wi)),m=lp().Stream,{Buffer:_}=(wt(),Ge(bt)),b=zo(),{addAbortSignal:T}=ou(),{getHighWaterMark:k,getDefaultHighWaterMark:C}=up(),{ERR_INVALID_ARG_TYPE:A,ERR_METHOD_NOT_IMPLEMENTED:M,ERR_MULTIPLE_CALLBACK:$,ERR_STREAM_CANNOT_PIPE:R,ERR_STREAM_DESTROYED:D,ERR_STREAM_ALREADY_FINISHED:j,ERR_STREAM_NULL_VALUES:z,ERR_STREAM_WRITE_AFTER_END:se,ERR_UNKNOWN_ENCODING:re}=jt().codes,{errorOrDestroy:L}=b;l(ae.prototype,m.prototype),l(ae,m);function B(){}var oe=c("kOnFinished");function ne(E,N,P){typeof P!="boolean"&&(P=N instanceof dn()),this.objectMode=!!(E&&E.objectMode),P&&(this.objectMode=this.objectMode||!!(E&&E.writableObjectMode)),this.highWaterMark=E?k(this,E,"writableHighWaterMark",P):C(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let J=!!(E&&E.decodeStrings===!1);this.decodeStrings=!J,this.defaultEncoding=E&&E.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=O.bind(void 0,N),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,ue(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!E||E.emitClose!==!1,this.autoDestroy=!E||E.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[oe]=[]}function ue(E){E.buffered=[],E.bufferedIndex=0,E.allBuffers=!0,E.allNoop=!0}ne.prototype.getBuffer=function(){return n(this.buffered,this.bufferedIndex)},s(ne.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function ae(E){let N=this instanceof dn();if(!N&&!i(ae,this))return new ae(E);this._writableState=new ne(E,this,N),E&&(typeof E.write=="function"&&(this._write=E.write),typeof E.writev=="function"&&(this._writev=E.writev),typeof E.destroy=="function"&&(this._destroy=E.destroy),typeof E.final=="function"&&(this._final=E.final),typeof E.construct=="function"&&(this._construct=E.construct),E.signal&&T(E.signal,this)),m.call(this,E),b.construct(this,()=>{let P=this._writableState;P.writing||ye(this,P),he(this,P)})}s(ae,d,{__proto__:null,value:function(E){return i(this,E)?!0:this!==ae?!1:E&&E._writableState instanceof ne}}),ae.prototype.pipe=function(){L(this,new R)};function G(E,N,P,J){let te=E._writableState;if(typeof P=="function")J=P,P=te.defaultEncoding;else{if(!P)P=te.defaultEncoding;else if(P!=="buffer"&&!_.isEncoding(P))throw new re(P);typeof J!="function"&&(J=B)}if(N===null)throw new z;if(!te.objectMode)if(typeof N=="string")te.decodeStrings!==!1&&(N=_.from(N,P),P="buffer");else if(N instanceof _)P="buffer";else if(m._isUint8Array(N))N=m._uint8ArrayToBuffer(N),P="buffer";else throw new A("chunk",["string","Buffer","Uint8Array"],N);let U;return te.ending?U=new se:te.destroyed&&(U=new D("write")),U?(r.nextTick(J,U),L(E,U,!0),U):(te.pendingcb++,pe(E,te,N,P,J))}ae.prototype.write=function(E,N,P){return G(this,E,N,P)===!0},ae.prototype.cork=function(){this._writableState.corked++},ae.prototype.uncork=function(){let E=this._writableState;E.corked&&(E.corked--,E.writing||ye(this,E))},ae.prototype.setDefaultEncoding=function(E){if(typeof E=="string"&&(E=u(E)),!_.isEncoding(E))throw new re(E);return this._writableState.defaultEncoding=E,this};function pe(E,N,P,J,te){let U=N.objectMode?1:P.length;N.length+=U;let q=N.length<N.highWaterMark;return q||(N.needDrain=!0),N.writing||N.corked||N.errored||!N.constructed?(N.buffered.push({chunk:P,encoding:J,callback:te}),N.allBuffers&&J!=="buffer"&&(N.allBuffers=!1),N.allNoop&&te!==B&&(N.allNoop=!1)):(N.writelen=U,N.writecb=te,N.writing=!0,N.sync=!0,E._write(P,J,N.onwrite),N.sync=!1),q&&!N.errored&&!N.destroyed}function de(E,N,P,J,te,U,q){N.writelen=J,N.writecb=q,N.writing=!0,N.sync=!0,N.destroyed?N.onwrite(new D("write")):P?E._writev(te,N.onwrite):E._write(te,U,N.onwrite),N.sync=!1}function ge(E,N,P,J){--N.pendingcb,J(P),ve(N),L(E,P)}function O(E,N){let P=E._writableState,J=P.sync,te=P.writecb;if(typeof te!="function"){L(E,new $);return}P.writing=!1,P.writecb=null,P.length-=P.writelen,P.writelen=0,N?(N.stack,P.errored||(P.errored=N),E._readableState&&!E._readableState.errored&&(E._readableState.errored=N),J?r.nextTick(ge,E,P,N,te):ge(E,P,N,te)):(P.buffered.length>P.bufferedIndex&&ye(E,P),J?P.afterWriteTickInfo!==null&&P.afterWriteTickInfo.cb===te?P.afterWriteTickInfo.count++:(P.afterWriteTickInfo={count:1,cb:te,stream:E,state:P},r.nextTick(ie,P.afterWriteTickInfo)):me(E,P,1,te))}function ie({stream:E,state:N,count:P,cb:J}){return N.afterWriteTickInfo=null,me(E,N,P,J)}function me(E,N,P,J){for(!N.ending&&!E.destroyed&&N.length===0&&N.needDrain&&(N.needDrain=!1,E.emit("drain"));P-- >0;)N.pendingcb--,J();N.destroyed&&ve(N),he(E,N)}function ve(E){if(E.writing)return;for(let te=E.bufferedIndex;te<E.buffered.length;++te){var N;let{chunk:U,callback:q}=E.buffered[te],x=E.objectMode?1:U.length;E.length-=x,q((N=E.errored)!==null&&N!==void 0?N:new D("write"))}let P=E[oe].splice(0);for(let te=0;te<P.length;te++){var J;P[te]((J=E.errored)!==null&&J!==void 0?J:new D("end"))}ue(E)}function ye(E,N){if(N.corked||N.bufferProcessing||N.destroyed||!N.constructed)return;let{buffered:P,bufferedIndex:J,objectMode:te}=N,U=P.length-J;if(!U)return;let q=J;if(N.bufferProcessing=!0,U>1&&E._writev){N.pendingcb-=U-1;let x=N.allNoop?B:Y=>{for(let le=q;le<P.length;++le)P[le].callback(Y)},K=N.allNoop&&q===0?P:n(P,q);K.allBuffers=N.allBuffers,de(E,N,!0,N.length,K,"",x),ue(N)}else{do{let{chunk:x,encoding:K,callback:Y}=P[q];P[q++]=null;let le=te?1:x.length;de(E,N,!1,le,x,K,Y)}while(q<P.length&&!N.writing);q===P.length?ue(N):q>256?(P.splice(0,q),N.bufferedIndex=0):N.bufferedIndex=q}N.bufferProcessing=!1}ae.prototype._write=function(E,N,P){if(this._writev)this._writev([{chunk:E,encoding:N}],P);else throw new M("_write()")},ae.prototype._writev=null,ae.prototype.end=function(E,N,P){let J=this._writableState;typeof E=="function"?(P=E,E=null,N=null):typeof N=="function"&&(P=N,N=null);let te;if(E!=null){let U=G(this,E,N);U instanceof o&&(te=U)}return J.corked&&(J.corked=1,this.uncork()),te||(!J.errored&&!J.ending?(J.ending=!0,he(this,J,!0),J.ended=!0):J.finished?te=new j("end"):J.destroyed&&(te=new D("end"))),typeof P=="function"&&(te||J.finished?r.nextTick(P,te):J[oe].push(P)),this};function V(E){return E.ending&&!E.destroyed&&E.constructed&&E.length===0&&!E.errored&&E.buffered.length===0&&!E.finished&&!E.writing&&!E.errorEmitted&&!E.closeEmitted}function F(E,N){let P=!1;function J(te){if(P){L(E,te??$());return}if(P=!0,N.pendingcb--,te){let U=N[oe].splice(0);for(let q=0;q<U.length;q++)U[q](te);L(E,te,N.sync)}else V(N)&&(N.prefinished=!0,E.emit("prefinish"),N.pendingcb++,r.nextTick(fe,E,N))}N.sync=!0,N.pendingcb++;try{E._final(J)}catch(te){J(te)}N.sync=!1}function Z(E,N){!N.prefinished&&!N.finalCalled&&(typeof E._final=="function"&&!N.destroyed?(N.finalCalled=!0,F(E,N)):(N.prefinished=!0,E.emit("prefinish")))}function he(E,N,P){V(N)&&(Z(E,N),N.pendingcb===0&&(P?(N.pendingcb++,r.nextTick((J,te)=>{V(te)?fe(J,te):te.pendingcb--},E,N)):V(N)&&(N.pendingcb++,fe(E,N))))}function fe(E,N){N.pendingcb--,N.finished=!0;let P=N[oe].splice(0);for(let J=0;J<P.length;J++)P[J]();if(E.emit("finish"),N.autoDestroy){let J=E._readableState;(!J||J.autoDestroy&&(J.endEmitted||J.readable===!1))&&E.destroy()}}a(ae.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(E){this._writableState&&(this._writableState.destroyed=E)}},writable:{__proto__:null,get(){let E=this._writableState;return!!E&&E.writable!==!1&&!E.destroyed&&!E.errored&&!E.ending&&!E.ended},set(E){this._writableState&&(this._writableState.writable=!!E)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){let E=this._writableState;return E?!E.destroyed&&!E.ending&&E.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});var ee=b.destroy;ae.prototype.destroy=function(E,N){let P=this._writableState;return!P.destroyed&&(P.bufferedIndex<P.buffered.length||P[oe].length)&&r.nextTick(ve,P),ee.call(this,E,N),this},ae.prototype._undestroy=b.undestroy,ae.prototype._destroy=function(E,N){N(E)},ae.prototype[p.captureRejectionSymbol]=function(E){this.destroy(E)};var v;function S(){return v===void 0&&(v={}),v}ae.fromWeb=function(E,N){return S().newStreamWritableFromWritableStream(E,N)},ae.toWeb=function(E){return S().newWritableStreamFromStreamWritable(E)}}),jO=Ae((e,t)=>{_e(),we(),be();var r=ji(),n=(wt(),Ge(bt)),{isReadable:o,isWritable:i,isIterable:s,isNodeStream:a,isReadableNodeStream:l,isWritableNodeStream:u,isDuplexNodeStream:c}=En(),d=Gn(),{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:m,ERR_INVALID_RETURN_VALUE:_}}=jt(),{destroyer:b}=zo(),T=dn(),k=au(),{createDeferredPromise:C}=hn(),A=_w(),M=globalThis.Blob||n.Blob,$=typeof M<"u"?function(re){return re instanceof M}:function(re){return!1},R=globalThis.AbortController||ap().AbortController,{FunctionPrototypeCall:D}=ht(),j=class extends T{constructor(re){super(re),(re==null?void 0:re.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(re==null?void 0:re.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}};t.exports=function re(L,B){if(c(L))return L;if(l(L))return se({readable:L});if(u(L))return se({writable:L});if(a(L))return se({writable:!1,readable:!1});if(typeof L=="function"){let{value:ne,write:ue,final:ae,destroy:G}=z(L);if(s(ne))return A(j,ne,{objectMode:!0,write:ue,final:ae,destroy:G});let pe=ne==null?void 0:ne.then;if(typeof pe=="function"){let de,ge=D(pe,ne,O=>{if(O!=null)throw new _("nully","body",O)},O=>{b(de,O)});return de=new j({objectMode:!0,readable:!1,write:ue,final(O){ae(async()=>{try{await ge,r.nextTick(O,null)}catch(ie){r.nextTick(O,ie)}})},destroy:G})}throw new _("Iterable, AsyncIterable or AsyncFunction",B,ne)}if($(L))return re(L.arrayBuffer());if(s(L))return A(j,L,{objectMode:!0,writable:!1});if(typeof(L==null?void 0:L.writable)=="object"||typeof(L==null?void 0:L.readable)=="object"){let ne=L!=null&&L.readable?l(L==null?void 0:L.readable)?L==null?void 0:L.readable:re(L.readable):void 0,ue=L!=null&&L.writable?u(L==null?void 0:L.writable)?L==null?void 0:L.writable:re(L.writable):void 0;return se({readable:ne,writable:ue})}let oe=L==null?void 0:L.then;if(typeof oe=="function"){let ne;return D(oe,L,ue=>{ue!=null&&ne.push(ue),ne.push(null)},ue=>{b(ne,ue)}),ne=new j({objectMode:!0,writable:!1,read(){}})}throw new m(B,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],L)};function z(re){let{promise:L,resolve:B}=C(),oe=new R,ne=oe.signal;return{value:re(async function*(){for(;;){let ue=L;L=null;let{chunk:ae,done:G,cb:pe}=await ue;if(r.nextTick(pe),G)return;if(ne.aborted)throw new p(void 0,{cause:ne.reason});({promise:L,resolve:B}=C()),yield ae}}(),{signal:ne}),write(ue,ae,G){let pe=B;B=null,pe({chunk:ue,done:!1,cb:G})},final(ue){let ae=B;B=null,ae({done:!0,cb:ue})},destroy(ue,ae){oe.abort(),ae(ue)}}}function se(re){let L=re.readable&&typeof re.readable.read!="function"?k.wrap(re.readable):re.readable,B=re.writable,oe=!!o(L),ne=!!i(B),ue,ae,G,pe,de;function ge(O){let ie=pe;pe=null,ie?ie(O):O&&de.destroy(O)}return de=new j({readableObjectMode:!!(L!=null&&L.readableObjectMode),writableObjectMode:!!(B!=null&&B.writableObjectMode),readable:oe,writable:ne}),ne&&(d(B,O=>{ne=!1,O&&b(L,O),ge(O)}),de._write=function(O,ie,me){B.write(O,ie)?me():ue=me},de._final=function(O){B.end(),ae=O},B.on("drain",function(){if(ue){let O=ue;ue=null,O()}}),B.on("finish",function(){if(ae){let O=ae;ae=null,O()}})),oe&&(d(L,O=>{oe=!1,O&&b(L,O),ge(O)}),L.on("readable",function(){if(G){let O=G;G=null,O()}}),L.on("end",function(){de.push(null)}),de._read=function(){for(;;){let O=L.read();if(O===null){G=de._read;return}if(!de.push(O))return}}),de._destroy=function(O,ie){!O&&pe!==null&&(O=new p),G=null,ue=null,ae=null,pe===null?ie(O):(pe=ie,b(B,O),b(L,O))},de}}),dn=Ae((e,t)=>{_e(),we(),be();var{ObjectDefineProperties:r,ObjectGetOwnPropertyDescriptor:n,ObjectKeys:o,ObjectSetPrototypeOf:i}=ht();t.exports=l;var s=au(),a=bw();i(l.prototype,s.prototype),i(l,s);{let p=o(a.prototype);for(let m=0;m<p.length;m++){let _=p[m];l.prototype[_]||(l.prototype[_]=a.prototype[_])}}function l(p){if(!(this instanceof l))return new l(p);s.call(this,p),a.call(this,p),p?(this.allowHalfOpen=p.allowHalfOpen!==!1,p.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),p.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}r(l.prototype,{writable:{__proto__:null,...n(a.prototype,"writable")},writableHighWaterMark:{__proto__:null,...n(a.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...n(a.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...n(a.prototype,"writableBuffer")},writableLength:{__proto__:null,...n(a.prototype,"writableLength")},writableFinished:{__proto__:null,...n(a.prototype,"writableFinished")},writableCorked:{__proto__:null,...n(a.prototype,"writableCorked")},writableEnded:{__proto__:null,...n(a.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...n(a.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(p){this._readableState&&this._writableState&&(this._readableState.destroyed=p,this._writableState.destroyed=p)}}});var u;function c(){return u===void 0&&(u={}),u}l.fromWeb=function(p,m){return c().newStreamDuplexFromReadableWritablePair(p,m)},l.toWeb=function(p){return c().newReadableWritablePairFromDuplex(p)};var d;l.from=function(p){return d||(d=jO()),d(p,"body")}}),ww=Ae((e,t)=>{_e(),we(),be();var{ObjectSetPrototypeOf:r,Symbol:n}=ht();t.exports=l;var{ERR_METHOD_NOT_IMPLEMENTED:o}=jt().codes,i=dn(),{getHighWaterMark:s}=up();r(l.prototype,i.prototype),r(l,i);var a=n("kCallback");function l(d){if(!(this instanceof l))return new l(d);let p=d?s(this,d,"readableHighWaterMark",!0):null;p===0&&(d={...d,highWaterMark:null,readableHighWaterMark:p,writableHighWaterMark:d.writableHighWaterMark||0}),i.call(this,d),this._readableState.sync=!1,this[a]=null,d&&(typeof d.transform=="function"&&(this._transform=d.transform),typeof d.flush=="function"&&(this._flush=d.flush)),this.on("prefinish",c)}function u(d){typeof this._flush=="function"&&!this.destroyed?this._flush((p,m)=>{if(p){d?d(p):this.destroy(p);return}m!=null&&this.push(m),this.push(null),d&&d()}):(this.push(null),d&&d())}function c(){this._final!==u&&u.call(this)}l.prototype._final=u,l.prototype._transform=function(d,p,m){throw new o("_transform()")},l.prototype._write=function(d,p,m){let _=this._readableState,b=this._writableState,T=_.length;this._transform(d,p,(k,C)=>{if(k){m(k);return}C!=null&&this.push(C),b.ended||T===_.length||_.length<_.highWaterMark?m():this[a]=m})},l.prototype._read=function(){if(this[a]){let d=this[a];this[a]=null,d()}}}),vw=Ae((e,t)=>{_e(),we(),be();var{ObjectSetPrototypeOf:r}=ht();t.exports=o;var n=ww();r(o.prototype,n.prototype),r(o,n);function o(i){if(!(this instanceof o))return new o(i);n.call(this,i)}o.prototype._transform=function(i,s,a){a(null,i)}}),hp=Ae((e,t)=>{_e(),we(),be();var r=ji(),{ArrayIsArray:n,Promise:o,SymbolAsyncIterator:i}=ht(),s=Gn(),{once:a}=hn(),l=zo(),u=dn(),{aggregateTwoErrors:c,codes:{ERR_INVALID_ARG_TYPE:d,ERR_INVALID_RETURN_VALUE:p,ERR_MISSING_ARGS:m,ERR_STREAM_DESTROYED:_,ERR_STREAM_PREMATURE_CLOSE:b},AbortError:T}=jt(),{validateFunction:k,validateAbortSignal:C}=iu(),{isIterable:A,isReadable:M,isReadableNodeStream:$,isNodeStream:R,isTransformStream:D,isWebStream:j,isReadableStream:z,isReadableEnded:se}=En(),re=globalThis.AbortController||ap().AbortController,L,B;function oe(ie,me,ve){let ye=!1;ie.on("close",()=>{ye=!0});let V=s(ie,{readable:me,writable:ve},F=>{ye=!F});return{destroy:F=>{ye||(ye=!0,l.destroyer(ie,F||new _("pipe")))},cleanup:V}}function ne(ie){return k(ie[ie.length-1],"streams[stream.length - 1]"),ie.pop()}function ue(ie){if(A(ie))return ie;if($(ie))return ae(ie);throw new d("val",["Readable","Iterable","AsyncIterable"],ie)}async function*ae(ie){B||(B=au()),yield*B.prototype[i].call(ie)}async function G(ie,me,ve,{end:ye}){let V,F=null,Z=ee=>{if(ee&&(V=ee),F){let v=F;F=null,v()}},he=()=>new o((ee,v)=>{V?v(V):F=()=>{V?v(V):ee()}});me.on("drain",Z);let fe=s(me,{readable:!1},Z);try{me.writableNeedDrain&&await he();for await(let ee of ie)me.write(ee)||await he();ye&&me.end(),await he(),ve()}catch(ee){ve(V!==ee?c(V,ee):ee)}finally{fe(),me.off("drain",Z)}}async function pe(ie,me,ve,{end:ye}){D(me)&&(me=me.writable);let V=me.getWriter();try{for await(let F of ie)await V.ready,V.write(F).catch(()=>{});await V.ready,ye&&await V.close(),ve()}catch(F){try{await V.abort(F),ve(F)}catch(Z){ve(Z)}}}function de(...ie){return ge(ie,a(ne(ie)))}function ge(ie,me,ve){if(ie.length===1&&n(ie[0])&&(ie=ie[0]),ie.length<2)throw new m("streams");let ye=new re,V=ye.signal,F=ve==null?void 0:ve.signal,Z=[];C(F,"options.signal");function he(){N(new T)}F==null||F.addEventListener("abort",he);let fe,ee,v=[],S=0;function E(U){N(U,--S===0)}function N(U,q){if(U&&(!fe||fe.code==="ERR_STREAM_PREMATURE_CLOSE")&&(fe=U),!(!fe&&!q)){for(;v.length;)v.shift()(fe);F==null||F.removeEventListener("abort",he),ye.abort(),q&&(fe||Z.forEach(x=>x()),r.nextTick(me,fe,ee))}}let P;for(let U=0;U<ie.length;U++){let q=ie[U],x=U<ie.length-1,K=U>0,Y=x||(ve==null?void 0:ve.end)!==!1,le=U===ie.length-1;if(R(q)){let y=function(h){h&&h.name!=="AbortError"&&h.code!=="ERR_STREAM_PREMATURE_CLOSE"&&E(h)};if(Y){let{destroy:h,cleanup:f}=oe(q,x,K);v.push(h),M(q)&&le&&Z.push(f)}q.on("error",y),M(q)&&le&&Z.push(()=>{q.removeListener("error",y)})}if(U===0)if(typeof q=="function"){if(P=q({signal:V}),!A(P))throw new p("Iterable, AsyncIterable or Stream","source",P)}else A(q)||$(q)||D(q)?P=q:P=u.from(q);else if(typeof q=="function"){if(D(P)){var J;P=ue((J=P)===null||J===void 0?void 0:J.readable)}else P=ue(P);if(P=q(P,{signal:V}),x){if(!A(P,!0))throw new p("AsyncIterable",`transform[${U-1}]`,P)}else{var te;L||(L=vw());let y=new L({objectMode:!0}),h=(te=P)===null||te===void 0?void 0:te.then;if(typeof h=="function")S++,h.call(P,w=>{ee=w,w!=null&&y.write(w),Y&&y.end(),r.nextTick(E)},w=>{y.destroy(w),r.nextTick(E,w)});else if(A(P,!0))S++,G(P,y,E,{end:Y});else if(z(P)||D(P)){let w=P.readable||P;S++,G(w,y,E,{end:Y})}else throw new p("AsyncIterable or Promise","destination",P);P=y;let{destroy:f,cleanup:g}=oe(P,!1,!0);v.push(f),le&&Z.push(g)}}else if(R(q)){if($(P)){S+=2;let y=O(P,q,E,{end:Y});M(q)&&le&&Z.push(y)}else if(D(P)||z(P)){let y=P.readable||P;S++,G(y,q,E,{end:Y})}else if(A(P))S++,G(P,q,E,{end:Y});else throw new d("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],P);P=q}else if(j(q)){if($(P))S++,pe(ue(P),q,E,{end:Y});else if(z(P)||A(P))S++,pe(P,q,E,{end:Y});else if(D(P))S++,pe(P.readable,q,E,{end:Y});else throw new d("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],P);P=q}else P=u.from(q)}return(V!=null&&V.aborted||F!=null&&F.aborted)&&r.nextTick(he),P}function O(ie,me,ve,{end:ye}){let V=!1;if(me.on("close",()=>{V||ve(new b)}),ie.pipe(me,{end:!1}),ye){let F=function(){V=!0,me.end()};se(ie)?r.nextTick(F):ie.once("end",F)}else ve();return s(ie,{readable:!0,writable:!1},F=>{let Z=ie._readableState;F&&F.code==="ERR_STREAM_PREMATURE_CLOSE"&&Z&&Z.ended&&!Z.errored&&!Z.errorEmitted?ie.once("end",ve).once("error",ve):ve(F)}),s(me,{readable:!1,writable:!0},ve)}t.exports={pipelineImpl:ge,pipeline:de}}),Ew=Ae((e,t)=>{_e(),we(),be();var{pipeline:r}=hp(),n=dn(),{destroyer:o}=zo(),{isNodeStream:i,isReadable:s,isWritable:a,isWebStream:l,isTransformStream:u,isWritableStream:c,isReadableStream:d}=En(),{AbortError:p,codes:{ERR_INVALID_ARG_VALUE:m,ERR_MISSING_ARGS:_}}=jt(),b=Gn();t.exports=function(...T){if(T.length===0)throw new _("streams");if(T.length===1)return n.from(T[0]);let k=[...T];if(typeof T[0]=="function"&&(T[0]=n.from(T[0])),typeof T[T.length-1]=="function"){let L=T.length-1;T[L]=n.from(T[L])}for(let L=0;L<T.length;++L)if(!(!i(T[L])&&!l(T[L]))){if(L<T.length-1&&!(s(T[L])||d(T[L])||u(T[L])))throw new m(`streams[${L}]`,k[L],"must be readable");if(L>0&&!(a(T[L])||c(T[L])||u(T[L])))throw new m(`streams[${L}]`,k[L],"must be writable")}let C,A,M,$,R;function D(L){let B=$;$=null,B?B(L):L?R.destroy(L):!re&&!se&&R.destroy()}let j=T[0],z=r(T,D),se=!!(a(j)||c(j)||u(j)),re=!!(s(z)||d(z)||u(z));if(R=new n({writableObjectMode:!!(j!=null&&j.writableObjectMode),readableObjectMode:!!(z!=null&&z.writableObjectMode),writable:se,readable:re}),se){if(i(j))R._write=function(B,oe,ne){j.write(B,oe)?ne():C=ne},R._final=function(B){j.end(),A=B},j.on("drain",function(){if(C){let B=C;C=null,B()}});else if(l(j)){let B=(u(j)?j.writable:j).getWriter();R._write=async function(oe,ne,ue){try{await B.ready,B.write(oe).catch(()=>{}),ue()}catch(ae){ue(ae)}},R._final=async function(oe){try{await B.ready,B.close().catch(()=>{}),A=oe}catch(ne){oe(ne)}}}let L=u(z)?z.readable:z;b(L,()=>{if(A){let B=A;A=null,B()}})}if(re){if(i(z))z.on("readable",function(){if(M){let L=M;M=null,L()}}),z.on("end",function(){R.push(null)}),R._read=function(){for(;;){let L=z.read();if(L===null){M=R._read;return}if(!R.push(L))return}};else if(l(z)){let L=(u(z)?z.readable:z).getReader();R._read=async function(){for(;;)try{let{value:B,done:oe}=await L.read();if(!R.push(B))return;if(oe){R.push(null);return}}catch{return}}}}return R._destroy=function(L,B){!L&&$!==null&&(L=new p),M=null,C=null,A=null,$===null?B(L):($=B,i(z)&&o(z,L))},R}}),WO=Ae((e,t)=>{_e(),we(),be();var r=globalThis.AbortController||ap().AbortController,{codes:{ERR_INVALID_ARG_VALUE:n,ERR_INVALID_ARG_TYPE:o,ERR_MISSING_ARGS:i,ERR_OUT_OF_RANGE:s},AbortError:a}=jt(),{validateAbortSignal:l,validateInteger:u,validateObject:c}=iu(),d=ht().Symbol("kWeak"),{finished:p}=Gn(),m=Ew(),{addAbortSignalNoValidate:_}=ou(),{isWritable:b,isNodeStream:T}=En(),{ArrayPrototypePush:k,MathFloor:C,Number:A,NumberIsNaN:M,Promise:$,PromiseReject:R,PromisePrototypeThen:D,Symbol:j}=ht(),z=j("kEmpty"),se=j("kEof");function re(ye,V){if(V!=null&&c(V,"options"),(V==null?void 0:V.signal)!=null&&l(V.signal,"options.signal"),T(ye)&&!b(ye))throw new n("stream",ye,"must be writable");let F=m(this,ye);return V!=null&&V.signal&&_(V.signal,F),F}function L(ye,V){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);V!=null&&c(V,"options"),(V==null?void 0:V.signal)!=null&&l(V.signal,"options.signal");let F=1;return(V==null?void 0:V.concurrency)!=null&&(F=C(V.concurrency)),u(F,"concurrency",1),(async function*(){var Z,he;let fe=new r,ee=this,v=[],S=fe.signal,E={signal:S},N=()=>fe.abort();V!=null&&(Z=V.signal)!==null&&Z!==void 0&&Z.aborted&&N(),V==null||(he=V.signal)===null||he===void 0||he.addEventListener("abort",N);let P,J,te=!1;function U(){te=!0}async function q(){try{for await(let Y of ee){var x;if(te)return;if(S.aborted)throw new a;try{Y=ye(Y,E)}catch(le){Y=R(le)}Y!==z&&(typeof((x=Y)===null||x===void 0?void 0:x.catch)=="function"&&Y.catch(U),v.push(Y),P&&(P(),P=null),!te&&v.length&&v.length>=F&&await new $(le=>{J=le}))}v.push(se)}catch(Y){let le=R(Y);D(le,void 0,U),v.push(le)}finally{var K;te=!0,P&&(P(),P=null),V==null||(K=V.signal)===null||K===void 0||K.removeEventListener("abort",N)}}q();try{for(;;){for(;v.length>0;){let x=await v[0];if(x===se)return;if(S.aborted)throw new a;x!==z&&(yield x),v.shift(),J&&(J(),J=null)}await new $(x=>{P=x})}}finally{fe.abort(),te=!0,J&&(J(),J=null)}}).call(this)}function B(ye=void 0){return ye!=null&&c(ye,"options"),(ye==null?void 0:ye.signal)!=null&&l(ye.signal,"options.signal"),(async function*(){let V=0;for await(let Z of this){var F;if(ye!=null&&(F=ye.signal)!==null&&F!==void 0&&F.aborted)throw new a({cause:ye.signal.reason});yield[V++,Z]}}).call(this)}async function oe(ye,V=void 0){for await(let F of G.call(this,ye,V))return!0;return!1}async function ne(ye,V=void 0){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);return!await oe.call(this,async(...F)=>!await ye(...F),V)}async function ue(ye,V){for await(let F of G.call(this,ye,V))return F}async function ae(ye,V){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);async function F(Z,he){return await ye(Z,he),z}for await(let Z of L.call(this,F,V));}function G(ye,V){if(typeof ye!="function")throw new o("fn",["Function","AsyncFunction"],ye);async function F(Z,he){return await ye(Z,he)?Z:z}return L.call(this,F,V)}var pe=class extends i{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}};async function de(ye,V,F){var Z;if(typeof ye!="function")throw new o("reducer",["Function","AsyncFunction"],ye);F!=null&&c(F,"options"),(F==null?void 0:F.signal)!=null&&l(F.signal,"options.signal");let he=arguments.length>1;if(F!=null&&(Z=F.signal)!==null&&Z!==void 0&&Z.aborted){let E=new a(void 0,{cause:F.signal.reason});throw this.once("error",()=>{}),await p(this.destroy(E)),E}let fe=new r,ee=fe.signal;if(F!=null&&F.signal){let E={once:!0,[d]:this};F.signal.addEventListener("abort",()=>fe.abort(),E)}let v=!1;try{for await(let E of this){var S;if(v=!0,F!=null&&(S=F.signal)!==null&&S!==void 0&&S.aborted)throw new a;he?V=await ye(V,E,{signal:ee}):(V=E,he=!0)}if(!v&&!he)throw new pe}finally{fe.abort()}return V}async function ge(ye){ye!=null&&c(ye,"options"),(ye==null?void 0:ye.signal)!=null&&l(ye.signal,"options.signal");let V=[];for await(let Z of this){var F;if(ye!=null&&(F=ye.signal)!==null&&F!==void 0&&F.aborted)throw new a(void 0,{cause:ye.signal.reason});k(V,Z)}return V}function O(ye,V){let F=L.call(this,ye,V);return(async function*(){for await(let Z of F)yield*Z}).call(this)}function ie(ye){if(ye=A(ye),M(ye))return 0;if(ye<0)throw new s("number",">= 0",ye);return ye}function me(ye,V=void 0){return V!=null&&c(V,"options"),(V==null?void 0:V.signal)!=null&&l(V.signal,"options.signal"),ye=ie(ye),(async function*(){var F;if(V!=null&&(F=V.signal)!==null&&F!==void 0&&F.aborted)throw new a;for await(let he of this){var Z;if(V!=null&&(Z=V.signal)!==null&&Z!==void 0&&Z.aborted)throw new a;ye--<=0&&(yield he)}}).call(this)}function ve(ye,V=void 0){return V!=null&&c(V,"options"),(V==null?void 0:V.signal)!=null&&l(V.signal,"options.signal"),ye=ie(ye),(async function*(){var F;if(V!=null&&(F=V.signal)!==null&&F!==void 0&&F.aborted)throw new a;for await(let he of this){var Z;if(V!=null&&(Z=V.signal)!==null&&Z!==void 0&&Z.aborted)throw new a;if(ye-- >0)yield he;else return}}).call(this)}t.exports.streamReturningOperators={asIndexedPairs:B,drop:me,filter:G,flatMap:O,map:L,take:ve,compose:re},t.exports.promiseReturningOperators={every:ne,forEach:ae,reduce:de,toArray:ge,some:oe,find:ue}}),Sw=Ae((e,t)=>{_e(),we(),be();var{ArrayPrototypePop:r,Promise:n}=ht(),{isIterable:o,isNodeStream:i,isWebStream:s}=En(),{pipelineImpl:a}=hp(),{finished:l}=Gn();Aw();function u(...c){return new n((d,p)=>{let m,_,b=c[c.length-1];if(b&&typeof b=="object"&&!i(b)&&!o(b)&&!s(b)){let T=r(c);m=T.signal,_=T.end}a(c,(T,k)=>{T?p(T):d(k)},{signal:m,end:_})})}t.exports={finished:l,pipeline:u}}),Aw=Ae((e,t)=>{_e(),we(),be();var{Buffer:r}=(wt(),Ge(bt)),{ObjectDefineProperty:n,ObjectKeys:o,ReflectApply:i}=ht(),{promisify:{custom:s}}=hn(),{streamReturningOperators:a,promiseReturningOperators:l}=WO(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:u}}=jt(),c=Ew(),{pipeline:d}=hp(),{destroyer:p}=zo(),m=Gn(),_=Sw(),b=En(),T=t.exports=lp().Stream;T.isDisturbed=b.isDisturbed,T.isErrored=b.isErrored,T.isReadable=b.isReadable,T.Readable=au();for(let C of o(a)){let A=function(...$){if(new.target)throw u();return T.Readable.from(i(M,this,$))},M=a[C];n(A,"name",{__proto__:null,value:M.name}),n(A,"length",{__proto__:null,value:M.length}),n(T.Readable.prototype,C,{__proto__:null,value:A,enumerable:!1,configurable:!0,writable:!0})}for(let C of o(l)){let A=function(...$){if(new.target)throw u();return i(M,this,$)},M=l[C];n(A,"name",{__proto__:null,value:M.name}),n(A,"length",{__proto__:null,value:M.length}),n(T.Readable.prototype,C,{__proto__:null,value:A,enumerable:!1,configurable:!0,writable:!0})}T.Writable=bw(),T.Duplex=dn(),T.Transform=ww(),T.PassThrough=vw(),T.pipeline=d;var{addAbortSignal:k}=ou();T.addAbortSignal=k,T.finished=m,T.destroy=p,T.compose=c,n(T,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return _}}),n(d,s,{__proto__:null,enumerable:!0,get(){return _.pipeline}}),n(m,s,{__proto__:null,enumerable:!0,get(){return _.finished}}),T.Stream=T,T._isUint8Array=function(C){return C instanceof Uint8Array},T._uint8ArrayToBuffer=function(C){return r.from(C.buffer,C.byteOffset,C.byteLength)}}),Hi=Ae((e,t)=>{_e(),we(),be();var r=Aw(),n=Sw(),o=r.Readable.destroy;t.exports=r.Readable,t.exports._uint8ArrayToBuffer=r._uint8ArrayToBuffer,t.exports._isUint8Array=r._isUint8Array,t.exports.isDisturbed=r.isDisturbed,t.exports.isErrored=r.isErrored,t.exports.isReadable=r.isReadable,t.exports.Readable=r.Readable,t.exports.Writable=r.Writable,t.exports.Duplex=r.Duplex,t.exports.Transform=r.Transform,t.exports.PassThrough=r.PassThrough,t.exports.addAbortSignal=r.addAbortSignal,t.exports.finished=r.finished,t.exports.destroy=r.destroy,t.exports.destroy=o,t.exports.pipeline=r.pipeline,t.exports.compose=r.compose,Object.defineProperty(r,"promises",{configurable:!0,enumerable:!0,get(){return n}}),t.exports.Stream=r.Stream,t.exports.default=t.exports}),HO=Ae((e,t)=>{_e(),we(),be(),typeof Object.create=="function"?t.exports=function(r,n){n&&(r.super_=n,r.prototype=Object.create(n.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(r,n){if(n){r.super_=n;var o=function(){};o.prototype=n.prototype,r.prototype=new o,r.prototype.constructor=r}}}),VO=Ae((e,t)=>{_e(),we(),be();var{Buffer:r}=(wt(),Ge(bt)),n=Symbol.for("BufferList");function o(i){if(!(this instanceof o))return new o(i);o._init.call(this,i)}o._init=function(i){Object.defineProperty(this,n,{value:!0}),this._bufs=[],this.length=0,i&&this.append(i)},o.prototype._new=function(i){return new o(i)},o.prototype._offset=function(i){if(i===0)return[0,0];let s=0;for(let a=0;a<this._bufs.length;a++){let l=s+this._bufs[a].length;if(i<l||a===this._bufs.length-1)return[a,i-s];s=l}},o.prototype._reverseOffset=function(i){let s=i[0],a=i[1];for(let l=0;l<s;l++)a+=this._bufs[l].length;return a},o.prototype.get=function(i){if(i>this.length||i<0)return;let s=this._offset(i);return this._bufs[s[0]][s[1]]},o.prototype.slice=function(i,s){return typeof i=="number"&&i<0&&(i+=this.length),typeof s=="number"&&s<0&&(s+=this.length),this.copy(null,0,i,s)},o.prototype.copy=function(i,s,a,l){if((typeof a!="number"||a<0)&&(a=0),(typeof l!="number"||l>this.length)&&(l=this.length),a>=this.length||l<=0)return i||r.alloc(0);let u=!!i,c=this._offset(a),d=l-a,p=d,m=u&&s||0,_=c[1];if(a===0&&l===this.length){if(!u)return this._bufs.length===1?this._bufs[0]:r.concat(this._bufs,this.length);for(let b=0;b<this._bufs.length;b++)this._bufs[b].copy(i,m),m+=this._bufs[b].length;return i}if(p<=this._bufs[c[0]].length-_)return u?this._bufs[c[0]].copy(i,s,_,_+p):this._bufs[c[0]].slice(_,_+p);u||(i=r.allocUnsafe(d));for(let b=c[0];b<this._bufs.length;b++){let T=this._bufs[b].length-_;if(p>T)this._bufs[b].copy(i,m,_),m+=T;else{this._bufs[b].copy(i,m,_,_+p),m+=T;break}p-=T,_&&(_=0)}return i.length>m?i.slice(0,m):i},o.prototype.shallowSlice=function(i,s){if(i=i||0,s=typeof s!="number"?this.length:s,i<0&&(i+=this.length),s<0&&(s+=this.length),i===s)return this._new();let a=this._offset(i),l=this._offset(s),u=this._bufs.slice(a[0],l[0]+1);return l[1]===0?u.pop():u[u.length-1]=u[u.length-1].slice(0,l[1]),a[1]!==0&&(u[0]=u[0].slice(a[1])),this._new(u)},o.prototype.toString=function(i,s,a){return this.slice(s,a).toString(i)},o.prototype.consume=function(i){if(i=Math.trunc(i),Number.isNaN(i)||i<=0)return this;for(;this._bufs.length;)if(i>=this._bufs[0].length)i-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(i),this.length-=i;break}return this},o.prototype.duplicate=function(){let i=this._new();for(let s=0;s<this._bufs.length;s++)i.append(this._bufs[s]);return i},o.prototype.append=function(i){if(i==null)return this;if(i.buffer)this._appendBuffer(r.from(i.buffer,i.byteOffset,i.byteLength));else if(Array.isArray(i))for(let s=0;s<i.length;s++)this.append(i[s]);else if(this._isBufferList(i))for(let s=0;s<i._bufs.length;s++)this.append(i._bufs[s]);else typeof i=="number"&&(i=i.toString()),this._appendBuffer(r.from(i));return this},o.prototype._appendBuffer=function(i){this._bufs.push(i),this.length+=i.length},o.prototype.indexOf=function(i,s,a){if(a===void 0&&typeof s=="string"&&(a=s,s=void 0),typeof i=="function"||Array.isArray(i))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof i=="number"?i=r.from([i]):typeof i=="string"?i=r.from(i,a):this._isBufferList(i)?i=i.slice():Array.isArray(i.buffer)?i=r.from(i.buffer,i.byteOffset,i.byteLength):r.isBuffer(i)||(i=r.from(i)),s=Number(s||0),isNaN(s)&&(s=0),s<0&&(s=this.length+s),s<0&&(s=0),i.length===0)return s>this.length?this.length:s;let l=this._offset(s),u=l[0],c=l[1];for(;u<this._bufs.length;u++){let d=this._bufs[u];for(;c<d.length;)if(d.length-c>=i.length){let p=d.indexOf(i,c);if(p!==-1)return this._reverseOffset([u,p]);c=d.length-i.length+1}else{let p=this._reverseOffset([u,c]);if(this._match(p,i))return p;c++}c=0}return-1},o.prototype._match=function(i,s){if(this.length-i<s.length)return!1;for(let a=0;a<s.length;a++)if(this.get(i+a)!==s[a])return!1;return!0},function(){let i={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let s in i)(function(a){i[a]===null?o.prototype[a]=function(l,u){return this.slice(l,l+u)[a](0,u)}:o.prototype[a]=function(l=0){return this.slice(l,l+i[a])[a](0)}})(s)}(),o.prototype._isBufferList=function(i){return i instanceof o||o.isBufferList(i)},o.isBufferList=function(i){return i!=null&&i[n]},t.exports=o}),qO=Ae((e,t)=>{_e(),we(),be();var r=Hi().Duplex,n=HO(),o=VO();function i(s){if(!(this instanceof i))return new i(s);if(typeof s=="function"){this._callback=s;let a=(function(l){this._callback&&(this._callback(l),this._callback=null)}).bind(this);this.on("pipe",function(l){l.on("error",a)}),this.on("unpipe",function(l){l.removeListener("error",a)}),s=null}o._init.call(this,s),r.call(this)}n(i,r),Object.assign(i.prototype,o.prototype),i.prototype._new=function(s){return new i(s)},i.prototype._write=function(s,a,l){this._appendBuffer(s),typeof l=="function"&&l()},i.prototype._read=function(s){if(!this.length)return this.push(null);s=Math.min(s,this.length),this.push(this.slice(0,s)),this.consume(s)},i.prototype.end=function(s){r.prototype.end.call(this,s),this._callback&&(this._callback(null,this.slice()),this._callback=null)},i.prototype._destroy=function(s,a){this._bufs.length=0,this.length=0,a(s)},i.prototype._isBufferList=function(s){return s instanceof i||s instanceof o||i.isBufferList(s)},i.isBufferList=o.isBufferList,t.exports=i,t.exports.BufferListStream=i,t.exports.BufferList=o}),KO=Ae((e,t)=>{_e(),we(),be();var r=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};t.exports=r}),Tw=Ae((e,t)=>{_e(),we(),be();var r=t.exports,{Buffer:n}=(wt(),Ge(bt));r.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},r.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},r.requiredHeaderFlagsErrors={};for(let i in r.requiredHeaderFlags){let s=r.requiredHeaderFlags[i];r.requiredHeaderFlagsErrors[i]="Invalid header flag bits, must be 0x"+s.toString(16)+" for "+r.types[i]+" packet"}r.codes={};for(let i in r.types){let s=r.types[i];r.codes[s]=i}r.CMD_SHIFT=4,r.CMD_MASK=240,r.DUP_MASK=8,r.QOS_MASK=3,r.QOS_SHIFT=1,r.RETAIN_MASK=1,r.VARBYTEINT_MASK=127,r.VARBYTEINT_FIN_MASK=128,r.VARBYTEINT_MAX=268435455,r.SESSIONPRESENT_MASK=1,r.SESSIONPRESENT_HEADER=n.from([r.SESSIONPRESENT_MASK]),r.CONNACK_HEADER=n.from([r.codes.connack<<r.CMD_SHIFT]),r.USERNAME_MASK=128,r.PASSWORD_MASK=64,r.WILL_RETAIN_MASK=32,r.WILL_QOS_MASK=24,r.WILL_QOS_SHIFT=3,r.WILL_FLAG_MASK=4,r.CLEAN_SESSION_MASK=2,r.CONNECT_HEADER=n.from([r.codes.connect<<r.CMD_SHIFT]),r.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},r.propertiesCodes={};for(let i in r.properties){let s=r.properties[i];r.propertiesCodes[s]=i}r.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function o(i){return[0,1,2].map(s=>[0,1].map(a=>[0,1].map(l=>{let u=n.alloc(1);return u.writeUInt8(r.codes[i]<<r.CMD_SHIFT|(a?r.DUP_MASK:0)|s<<r.QOS_SHIFT|l,0,!0),u})))}r.PUBLISH_HEADER=o("publish"),r.SUBSCRIBE_HEADER=o("subscribe"),r.SUBSCRIBE_OPTIONS_QOS_MASK=3,r.SUBSCRIBE_OPTIONS_NL_MASK=1,r.SUBSCRIBE_OPTIONS_NL_SHIFT=2,r.SUBSCRIBE_OPTIONS_RAP_MASK=1,r.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,r.SUBSCRIBE_OPTIONS_RH_MASK=3,r.SUBSCRIBE_OPTIONS_RH_SHIFT=4,r.SUBSCRIBE_OPTIONS_RH=[0,16,32],r.SUBSCRIBE_OPTIONS_NL=4,r.SUBSCRIBE_OPTIONS_RAP=8,r.SUBSCRIBE_OPTIONS_QOS=[0,1,2],r.UNSUBSCRIBE_HEADER=o("unsubscribe"),r.ACKS={unsuback:o("unsuback"),puback:o("puback"),pubcomp:o("pubcomp"),pubrel:o("pubrel"),pubrec:o("pubrec")},r.SUBACK_HEADER=n.from([r.codes.suback<<r.CMD_SHIFT]),r.VERSION3=n.from([3]),r.VERSION4=n.from([4]),r.VERSION5=n.from([5]),r.VERSION131=n.from([131]),r.VERSION132=n.from([132]),r.QOS=[0,1,2].map(i=>n.from([i])),r.EMPTY={pingreq:n.from([r.codes.pingreq<<4,0]),pingresp:n.from([r.codes.pingresp<<4,0]),disconnect:n.from([r.codes.disconnect<<4,0])},r.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},r.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},r.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},r.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},r.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}}),YO=Ae((e,t)=>{_e(),we(),be();var r=1e3,n=r*60,o=n*60,i=o*24,s=i*7,a=i*365.25;t.exports=function(p,m){m=m||{};var _=typeof p;if(_==="string"&&p.length>0)return l(p);if(_==="number"&&isFinite(p))return m.long?c(p):u(p);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(p))};function l(p){if(p=String(p),!(p.length>100)){var m=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(p);if(m){var _=parseFloat(m[1]),b=(m[2]||"ms").toLowerCase();switch(b){case"years":case"year":case"yrs":case"yr":case"y":return _*a;case"weeks":case"week":case"w":return _*s;case"days":case"day":case"d":return _*i;case"hours":case"hour":case"hrs":case"hr":case"h":return _*o;case"minutes":case"minute":case"mins":case"min":case"m":return _*n;case"seconds":case"second":case"secs":case"sec":case"s":return _*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return _;default:return}}}}function u(p){var m=Math.abs(p);return m>=i?Math.round(p/i)+"d":m>=o?Math.round(p/o)+"h":m>=n?Math.round(p/n)+"m":m>=r?Math.round(p/r)+"s":p+"ms"}function c(p){var m=Math.abs(p);return m>=i?d(p,m,i,"day"):m>=o?d(p,m,o,"hour"):m>=n?d(p,m,n,"minute"):m>=r?d(p,m,r,"second"):p+" ms"}function d(p,m,_,b){var T=m>=_*1.5;return Math.round(p/_)+" "+b+(T?"s":"")}}),zO=Ae((e,t)=>{_e(),we(),be();function r(n){i.debug=i,i.default=i,i.coerce=d,i.disable=l,i.enable=a,i.enabled=u,i.humanize=YO(),i.destroy=p,Object.keys(n).forEach(m=>{i[m]=n[m]}),i.names=[],i.skips=[],i.formatters={};function o(m){let _=0;for(let b=0;b<m.length;b++)_=(_<<5)-_+m.charCodeAt(b),_|=0;return i.colors[Math.abs(_)%i.colors.length]}i.selectColor=o;function i(m){let _,b=null,T,k;function C(...A){if(!C.enabled)return;let M=C,$=Number(new Date),R=$-(_||$);M.diff=R,M.prev=_,M.curr=$,_=$,A[0]=i.coerce(A[0]),typeof A[0]!="string"&&A.unshift("%O");let D=0;A[0]=A[0].replace(/%([a-zA-Z%])/g,(j,z)=>{if(j==="%%")return"%";D++;let se=i.formatters[z];if(typeof se=="function"){let re=A[D];j=se.call(M,re),A.splice(D,1),D--}return j}),i.formatArgs.call(M,A),(M.log||i.log).apply(M,A)}return C.namespace=m,C.useColors=i.useColors(),C.color=i.selectColor(m),C.extend=s,C.destroy=i.destroy,Object.defineProperty(C,"enabled",{enumerable:!0,configurable:!1,get:()=>b!==null?b:(T!==i.namespaces&&(T=i.namespaces,k=i.enabled(m)),k),set:A=>{b=A}}),typeof i.init=="function"&&i.init(C),C}function s(m,_){let b=i(this.namespace+(typeof _>"u"?":":_)+m);return b.log=this.log,b}function a(m){i.save(m),i.namespaces=m,i.names=[],i.skips=[];let _,b=(typeof m=="string"?m:"").split(/[\s,]+/),T=b.length;for(_=0;_<T;_++)b[_]&&(m=b[_].replace(/\*/g,".*?"),m[0]==="-"?i.skips.push(new RegExp("^"+m.slice(1)+"$")):i.names.push(new RegExp("^"+m+"$")))}function l(){let m=[...i.names.map(c),...i.skips.map(c).map(_=>"-"+_)].join(",");return i.enable(""),m}function u(m){if(m[m.length-1]==="*")return!0;let _,b;for(_=0,b=i.skips.length;_<b;_++)if(i.skips[_].test(m))return!1;for(_=0,b=i.names.length;_<b;_++)if(i.names[_].test(m))return!0;return!1}function c(m){return m.toString().substring(2,m.toString().length-2).replace(/\.\*\?$/,"*")}function d(m){return m instanceof Error?m.stack||m.message:m}function p(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return i.enable(i.load()),i}t.exports=r}),pn=Ae((e,t)=>{_e(),we(),be(),e.formatArgs=n,e.save=o,e.load=i,e.useColors=r,e.storage=s(),e.destroy=(()=>{let l=!1;return()=>{l||(l=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function n(l){if(l[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+l[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;let u="color: "+this.color;l.splice(1,0,u,"color: inherit");let c=0,d=0;l[0].replace(/%[a-zA-Z%]/g,p=>{p!=="%%"&&(c++,p==="%c"&&(d=c))}),l.splice(d,0,u)}e.log=console.debug||console.log||(()=>{});function o(l){try{l?e.storage.setItem("debug",l):e.storage.removeItem("debug")}catch{}}function i(){let l;try{l=e.storage.getItem("debug")}catch{}return!l&&typeof We<"u"&&"env"in We&&(l=We.env.DEBUG),l}function s(){try{return localStorage}catch{}}t.exports=zO()(e);var{formatters:a}=t.exports;a.j=function(l){try{return JSON.stringify(l)}catch(u){return"[UnexpectedJSONParseError]: "+u.message}}}),GO=Ae((e,t)=>{_e(),we(),be();var r=qO(),{EventEmitter:n}=(Go(),Ge(Wi)),o=KO(),i=Tw(),s=pn()("mqtt-packet:parser"),a=class Ih extends n{constructor(){super(),this.parser=this.constructor.parser}static parser(u){return this instanceof Ih?(this.settings=u||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new Ih().parser(u)}_resetState(){s("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new o,this.error=null,this._list=r(),this._stateCounter=0}parse(u){for(this.error&&this._resetState(),this._list.append(u),s("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,s("parse: state complete. _stateCounter is now: %d",this._stateCounter),s("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return s("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){let u=this._list.readUInt8(0),c=u>>i.CMD_SHIFT;this.packet.cmd=i.types[c];let d=u&15,p=i.requiredHeaderFlags[c];return p!=null&&d!==p?this._emitError(new Error(i.requiredHeaderFlagsErrors[c])):(this.packet.retain=(u&i.RETAIN_MASK)!==0,this.packet.qos=u>>i.QOS_SHIFT&i.QOS_MASK,this.packet.qos>2?this._emitError(new Error("Packet must not have both QoS bits set to 1")):(this.packet.dup=(u&i.DUP_MASK)!==0,s("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0))}_parseLength(){let u=this._parseVarByteNum(!0);return u&&(this.packet.length=u.value,this._list.consume(u.bytes)),s("_parseLength %d",u.value),!!u}_parsePayload(){s("_parsePayload: payload %O",this._list);let u=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}u=!0}return s("_parsePayload complete result: %s",u),u}_parseConnect(){s("_parseConnect");let u,c,d,p,m={},_=this.packet,b=this._parseString();if(b===null)return this._emitError(new Error("Cannot parse protocolId"));if(b!=="MQTT"&&b!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(_.protocolId=b,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(_.protocolVersion=this._list.readUInt8(this._pos),_.protocolVersion>=128&&(_.bridgeMode=!0,_.protocolVersion=_.protocolVersion-128),_.protocolVersion!==3&&_.protocolVersion!==4&&_.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(this._list.readUInt8(this._pos)&1)return this._emitError(new Error("Connect flag bit 0 must be 0, but got 1"));m.username=this._list.readUInt8(this._pos)&i.USERNAME_MASK,m.password=this._list.readUInt8(this._pos)&i.PASSWORD_MASK,m.will=this._list.readUInt8(this._pos)&i.WILL_FLAG_MASK;let T=!!(this._list.readUInt8(this._pos)&i.WILL_RETAIN_MASK),k=(this._list.readUInt8(this._pos)&i.WILL_QOS_MASK)>>i.WILL_QOS_SHIFT;if(m.will)_.will={},_.will.retain=T,_.will.qos=k;else{if(T)return this._emitError(new Error("Will Retain Flag must be set to zero when Will Flag is set to 0"));if(k)return this._emitError(new Error("Will QoS must be set to zero when Will Flag is set to 0"))}if(_.clean=(this._list.readUInt8(this._pos)&i.CLEAN_SESSION_MASK)!==0,this._pos++,_.keepalive=this._parseNum(),_.keepalive===-1)return this._emitError(new Error("Packet too short"));if(_.protocolVersion===5){let A=this._parseProperties();Object.getOwnPropertyNames(A).length&&(_.properties=A)}let C=this._parseString();if(C===null)return this._emitError(new Error("Packet too short"));if(_.clientId=C,s("_parseConnect: packet.clientId: %s",_.clientId),m.will){if(_.protocolVersion===5){let A=this._parseProperties();Object.getOwnPropertyNames(A).length&&(_.will.properties=A)}if(u=this._parseString(),u===null)return this._emitError(new Error("Cannot parse will topic"));if(_.will.topic=u,s("_parseConnect: packet.will.topic: %s",_.will.topic),c=this._parseBuffer(),c===null)return this._emitError(new Error("Cannot parse will payload"));_.will.payload=c,s("_parseConnect: packet.will.paylaod: %s",_.will.payload)}if(m.username){if(p=this._parseString(),p===null)return this._emitError(new Error("Cannot parse username"));_.username=p,s("_parseConnect: packet.username: %s",_.username)}if(m.password){if(d=this._parseBuffer(),d===null)return this._emitError(new Error("Cannot parse password"));_.password=d}return this.settings=_,s("_parseConnect: complete"),_}_parseConnack(){s("_parseConnack");let u=this.packet;if(this._list.length<1)return null;let c=this._list.readUInt8(this._pos++);if(c>1)return this._emitError(new Error("Invalid connack flags, bits 7-1 must be set to 0"));if(u.sessionPresent=!!(c&i.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?u.reasonCode=this._list.readUInt8(this._pos++):u.reasonCode=0;else{if(this._list.length<2)return null;u.returnCode=this._list.readUInt8(this._pos++)}if(u.returnCode===-1||u.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){let d=this._parseProperties();Object.getOwnPropertyNames(d).length&&(u.properties=d)}s("_parseConnack: complete")}_parsePublish(){s("_parsePublish");let u=this.packet;if(u.topic=this._parseString(),u.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(u.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}u.payload=this._list.slice(this._pos,u.length),s("_parsePublish: payload from buffer list: %o",u.payload)}}_parseSubscribe(){s("_parseSubscribe");let u=this.packet,c,d,p,m,_,b,T;if(u.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let k=this._parseProperties();Object.getOwnPropertyNames(k).length&&(u.properties=k)}if(u.length<=0)return this._emitError(new Error("Malformed subscribe, no payload specified"));for(;this._pos<u.length;){if(c=this._parseString(),c===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=u.length)return this._emitError(new Error("Malformed Subscribe Payload"));if(d=this._parseByte(),this.settings.protocolVersion===5){if(d&192)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-6 must be 0"))}else if(d&252)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-2 must be 0"));if(p=d&i.SUBSCRIBE_OPTIONS_QOS_MASK,p>2)return this._emitError(new Error("Invalid subscribe QoS, must be <= 2"));if(b=(d>>i.SUBSCRIBE_OPTIONS_NL_SHIFT&i.SUBSCRIBE_OPTIONS_NL_MASK)!==0,_=(d>>i.SUBSCRIBE_OPTIONS_RAP_SHIFT&i.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,m=d>>i.SUBSCRIBE_OPTIONS_RH_SHIFT&i.SUBSCRIBE_OPTIONS_RH_MASK,m>2)return this._emitError(new Error("Invalid retain handling, must be <= 2"));T={topic:c,qos:p},this.settings.protocolVersion===5?(T.nl=b,T.rap=_,T.rh=m):this.settings.bridgeMode&&(T.rh=0,T.rap=!0,T.nl=!0),s("_parseSubscribe: push subscription `%s` to subscription",T),u.subscriptions.push(T)}}}_parseSuback(){s("_parseSuback");let u=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed suback, no payload specified"));for(;this._pos<this.packet.length;){let c=this._list.readUInt8(this._pos++);if(this.settings.protocolVersion===5){if(!i.MQTT5_SUBACK_CODES[c])return this._emitError(new Error("Invalid suback code"))}else if(c>2&&c!==128)return this._emitError(new Error("Invalid suback QoS, must be 0, 1, 2 or 128"));this.packet.granted.push(c)}}}_parseUnsubscribe(){s("_parseUnsubscribe");let u=this.packet;if(u.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}if(u.length<=0)return this._emitError(new Error("Malformed unsubscribe, no payload specified"));for(;this._pos<u.length;){let c=this._parseString();if(c===null)return this._emitError(new Error("Cannot parse topic"));s("_parseUnsubscribe: push topic `%s` to unsubscriptions",c),u.unsubscriptions.push(c)}}}_parseUnsuback(){s("_parseUnsuback");let u=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if((this.settings.protocolVersion===3||this.settings.protocolVersion===4)&&u.length!==2)return this._emitError(new Error("Malformed unsuback, payload length must be 2"));if(u.length<=0)return this._emitError(new Error("Malformed unsuback, no payload specified"));if(this.settings.protocolVersion===5){let c=this._parseProperties();for(Object.getOwnPropertyNames(c).length&&(u.properties=c),u.granted=[];this._pos<this.packet.length;){let d=this._list.readUInt8(this._pos++);if(!i.MQTT5_UNSUBACK_CODES[d])return this._emitError(new Error("Invalid unsuback code"));this.packet.granted.push(d)}}}_parseConfirmation(){s("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);let u=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5){if(u.length>2){switch(u.reasonCode=this._parseByte(),this.packet.cmd){case"puback":case"pubrec":if(!i.MQTT5_PUBACK_PUBREC_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break;case"pubrel":case"pubcomp":if(!i.MQTT5_PUBREL_PUBCOMP_CODES[u.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break}s("_parseConfirmation: packet.reasonCode `%d`",u.reasonCode)}else u.reasonCode=0;if(u.length>3){let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}}return!0}_parseDisconnect(){let u=this.packet;if(s("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?(u.reasonCode=this._parseByte(),i.MQTT5_DISCONNECT_CODES[u.reasonCode]||this._emitError(new Error("Invalid disconnect reason code"))):u.reasonCode=0;let c=this._parseProperties();Object.getOwnPropertyNames(c).length&&(u.properties=c)}return s("_parseDisconnect result: true"),!0}_parseAuth(){s("_parseAuth");let u=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));if(u.reasonCode=this._parseByte(),!i.MQTT5_AUTH_CODES[u.reasonCode])return this._emitError(new Error("Invalid auth reason code"));let c=this._parseProperties();return Object.getOwnPropertyNames(c).length&&(u.properties=c),s("_parseAuth: result: true"),!0}_parseMessageId(){let u=this.packet;return u.messageId=this._parseNum(),u.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(s("_parseMessageId: packet.messageId %d",u.messageId),!0)}_parseString(u){let c=this._parseNum(),d=c+this._pos;if(c===-1||d>this._list.length||d>this.packet.length)return null;let p=this._list.toString("utf8",this._pos,d);return this._pos+=c,s("_parseString: result: %s",p),p}_parseStringPair(){return s("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){let u=this._parseNum(),c=u+this._pos;if(u===-1||c>this._list.length||c>this.packet.length)return null;let d=this._list.slice(this._pos,c);return this._pos+=u,s("_parseBuffer: result: %o",d),d}_parseNum(){if(this._list.length-this._pos<2)return-1;let u=this._list.readUInt16BE(this._pos);return this._pos+=2,s("_parseNum: result: %s",u),u}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;let u=this._list.readUInt32BE(this._pos);return this._pos+=4,s("_parse4ByteNum: result: %s",u),u}_parseVarByteNum(u){s("_parseVarByteNum");let c=4,d=0,p=1,m=0,_=!1,b,T=this._pos?this._pos:0;for(;d<c&&T+d<this._list.length;){if(b=this._list.readUInt8(T+d++),m+=p*(b&i.VARBYTEINT_MASK),p*=128,!(b&i.VARBYTEINT_FIN_MASK)){_=!0;break}if(this._list.length<=d)break}return!_&&d===c&&this._list.length>=d&&this._emitError(new Error("Invalid variable byte integer")),T&&(this._pos+=d),_?u?_={bytes:d,value:m}:_=m:_=!1,s("_parseVarByteNum: result: %o",_),_}_parseByte(){let u;return this._pos<this._list.length&&(u=this._list.readUInt8(this._pos),this._pos++),s("_parseByte: result: %o",u),u}_parseByType(u){switch(s("_parseByType: type: %s",u),u){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){s("_parseProperties");let u=this._parseVarByteNum(),c=this._pos+u,d={};for(;this._pos<c;){let p=this._parseByte();if(!p)return this._emitError(new Error("Cannot parse property code type")),!1;let m=i.propertiesCodes[p];if(!m)return this._emitError(new Error("Unknown property")),!1;if(m==="userProperties"){d[m]||(d[m]=Object.create(null));let _=this._parseByType(i.propertiesTypes[m]);if(d[m][_.name])if(Array.isArray(d[m][_.name]))d[m][_.name].push(_.value);else{let b=d[m][_.name];d[m][_.name]=[b],d[m][_.name].push(_.value)}else d[m][_.name]=_.value;continue}d[m]?Array.isArray(d[m])?d[m].push(this._parseByType(i.propertiesTypes[m])):(d[m]=[d[m]],d[m].push(this._parseByType(i.propertiesTypes[m]))):d[m]=this._parseByType(i.propertiesTypes[m])}return d}_newPacket(){return s("_newPacket"),this.packet&&(this._list.consume(this.packet.length),s("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),s("_newPacket: new packet"),this.packet=new o,this._pos=0,!0}_emitError(u){s("_emitError",u),this.error=u,this.emit("error",u)}};t.exports=a}),QO=Ae((e,t)=>{_e(),we(),be();var{Buffer:r}=(wt(),Ge(bt)),n=65536,o={},i=r.isBuffer(r.from([1,2]).subarray(0,1));function s(c){let d=r.allocUnsafe(2);return d.writeUInt8(c>>8,0),d.writeUInt8(c&255,1),d}function a(){for(let c=0;c<n;c++)o[c]=s(c)}function l(c){let d=0,p=0,m=r.allocUnsafe(4);do d=c%128|0,c=c/128|0,c>0&&(d=d|128),m.writeUInt8(d,p++);while(c>0&&p<4);return c>0&&(p=0),i?m.subarray(0,p):m.slice(0,p)}function u(c){let d=r.allocUnsafe(4);return d.writeUInt32BE(c,0),d}t.exports={cache:o,generateCache:a,generateNumber:s,genBufVariableByteInt:l,generate4ByteBuffer:u}}),XO=Ae((e,t)=>{_e(),we(),be(),typeof We>"u"||!We.version||We.version.indexOf("v0.")===0||We.version.indexOf("v1.")===0&&We.version.indexOf("v1.8.")!==0?t.exports={nextTick:r}:t.exports=We;function r(n,o,i,s){if(typeof n!="function")throw new TypeError('"callback" argument must be a function');var a=arguments.length,l,u;switch(a){case 0:case 1:return We.nextTick(n);case 2:return We.nextTick(function(){n.call(null,o)});case 3:return We.nextTick(function(){n.call(null,o,i)});case 4:return We.nextTick(function(){n.call(null,o,i,s)});default:for(l=new Array(a-1),u=0;u<l.length;)l[u++]=arguments[u];return We.nextTick(function(){n.apply(null,l)})}}}),xw=Ae((e,t)=>{_e(),we(),be();var r=Tw(),{Buffer:n}=(wt(),Ge(bt)),o=n.allocUnsafe(0),i=n.from([0]),s=QO(),a=XO().nextTick,l=pn()("mqtt-packet:writeToStream"),u=s.cache,c=s.generateNumber,d=s.generateCache,p=s.genBufVariableByteInt,m=s.generate4ByteBuffer,_=ae,b=!0;function T(V,F,Z){switch(l("generate called"),F.cork&&(F.cork(),a(k,F)),b&&(b=!1,d()),l("generate: packet.cmd: %s",V.cmd),V.cmd){case"connect":return C(V,F);case"connack":return A(V,F,Z);case"publish":return M(V,F,Z);case"puback":case"pubrec":case"pubrel":case"pubcomp":return $(V,F,Z);case"subscribe":return R(V,F,Z);case"suback":return D(V,F,Z);case"unsubscribe":return j(V,F,Z);case"unsuback":return z(V,F,Z);case"pingreq":case"pingresp":return se(V,F);case"disconnect":return re(V,F,Z);case"auth":return L(V,F,Z);default:return F.destroy(new Error("Unknown command")),!1}}Object.defineProperty(T,"cacheNumbers",{get(){return _===ae},set(V){V?((!u||Object.keys(u).length===0)&&(b=!0),_=ae):(b=!1,_=G)}});function k(V){V.uncork()}function C(V,F,Z){let he=V||{},fe=he.protocolId||"MQTT",ee=he.protocolVersion||4,v=he.will,S=he.clean,E=he.keepalive||0,N=he.clientId||"",P=he.username,J=he.password,te=he.properties;S===void 0&&(S=!0);let U=0;if(!fe||typeof fe!="string"&&!n.isBuffer(fe))return F.destroy(new Error("Invalid protocolId")),!1;if(U+=fe.length+2,ee!==3&&ee!==4&&ee!==5)return F.destroy(new Error("Invalid protocol version")),!1;if(U+=1,(typeof N=="string"||n.isBuffer(N))&&(N||ee>=4)&&(N||S))U+=n.byteLength(N)+2;else{if(ee<4)return F.destroy(new Error("clientId must be supplied before 3.1.1")),!1;if(S*1===0)return F.destroy(new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof E!="number"||E<0||E>65535||E%1!==0)return F.destroy(new Error("Invalid keepalive")),!1;U+=2,U+=1;let q,x;if(ee===5){if(q=ge(F,te),!q)return!1;U+=q.length}if(v){if(typeof v!="object")return F.destroy(new Error("Invalid will")),!1;if(!v.topic||typeof v.topic!="string")return F.destroy(new Error("Invalid will topic")),!1;if(U+=n.byteLength(v.topic)+2,U+=2,v.payload)if(v.payload.length>=0)typeof v.payload=="string"?U+=n.byteLength(v.payload):U+=v.payload.length;else return F.destroy(new Error("Invalid will payload")),!1;if(x={},ee===5){if(x=ge(F,v.properties),!x)return!1;U+=x.length}}let K=!1;if(P!=null)if(ye(P))K=!0,U+=n.byteLength(P)+2;else return F.destroy(new Error("Invalid username")),!1;if(J!=null){if(!K)return F.destroy(new Error("Username is required to use password")),!1;if(ye(J))U+=ve(J)+2;else return F.destroy(new Error("Invalid password")),!1}F.write(r.CONNECT_HEADER),oe(F,U),de(F,fe),he.bridgeMode&&(ee+=128),F.write(ee===131?r.VERSION131:ee===132?r.VERSION132:ee===4?r.VERSION4:ee===5?r.VERSION5:r.VERSION3);let Y=0;return Y|=P!=null?r.USERNAME_MASK:0,Y|=J!=null?r.PASSWORD_MASK:0,Y|=v&&v.retain?r.WILL_RETAIN_MASK:0,Y|=v&&v.qos?v.qos<<r.WILL_QOS_SHIFT:0,Y|=v?r.WILL_FLAG_MASK:0,Y|=S?r.CLEAN_SESSION_MASK:0,F.write(n.from([Y])),_(F,E),ee===5&&q.write(),de(F,N),v&&(ee===5&&x.write(),ne(F,v.topic),de(F,v.payload)),P!=null&&de(F,P),J!=null&&de(F,J),!0}function A(V,F,Z){let he=Z?Z.protocolVersion:4,fe=V||{},ee=he===5?fe.reasonCode:fe.returnCode,v=fe.properties,S=2;if(typeof ee!="number")return F.destroy(new Error("Invalid return code")),!1;let E=null;if(he===5){if(E=ge(F,v),!E)return!1;S+=E.length}return F.write(r.CONNACK_HEADER),oe(F,S),F.write(fe.sessionPresent?r.SESSIONPRESENT_HEADER:i),F.write(n.from([ee])),E==null||E.write(),!0}function M(V,F,Z){l("publish: packet: %o",V);let he=Z?Z.protocolVersion:4,fe=V||{},ee=fe.qos||0,v=fe.retain?r.RETAIN_MASK:0,S=fe.topic,E=fe.payload||o,N=fe.messageId,P=fe.properties,J=0;if(typeof S=="string")J+=n.byteLength(S)+2;else if(n.isBuffer(S))J+=S.length+2;else return F.destroy(new Error("Invalid topic")),!1;if(n.isBuffer(E)?J+=E.length:J+=n.byteLength(E),ee&&typeof N!="number")return F.destroy(new Error("Invalid messageId")),!1;ee&&(J+=2);let te=null;if(he===5){if(te=ge(F,P),!te)return!1;J+=te.length}return F.write(r.PUBLISH_HEADER[ee][fe.dup?1:0][v?1:0]),oe(F,J),_(F,ve(S)),F.write(S),ee>0&&_(F,N),te==null||te.write(),l("publish: payload: %o",E),F.write(E)}function $(V,F,Z){let he=Z?Z.protocolVersion:4,fe=V||{},ee=fe.cmd||"puback",v=fe.messageId,S=fe.dup&&ee==="pubrel"?r.DUP_MASK:0,E=0,N=fe.reasonCode,P=fe.properties,J=he===5?3:2;if(ee==="pubrel"&&(E=1),typeof v!="number")return F.destroy(new Error("Invalid messageId")),!1;let te=null;if(he===5&&typeof P=="object"){if(te=O(F,P,Z,J),!te)return!1;J+=te.length}return F.write(r.ACKS[ee][E][S][0]),J===3&&(J+=N!==0?1:-1),oe(F,J),_(F,v),he===5&&J!==2&&F.write(n.from([N])),te!==null?te.write():J===4&&F.write(n.from([0])),!0}function R(V,F,Z){l("subscribe: packet: ");let he=Z?Z.protocolVersion:4,fe=V||{},ee=fe.dup?r.DUP_MASK:0,v=fe.messageId,S=fe.subscriptions,E=fe.properties,N=0;if(typeof v!="number")return F.destroy(new Error("Invalid messageId")),!1;N+=2;let P=null;if(he===5){if(P=ge(F,E),!P)return!1;N+=P.length}if(typeof S=="object"&&S.length)for(let te=0;te<S.length;te+=1){let U=S[te].topic,q=S[te].qos;if(typeof U!="string")return F.destroy(new Error("Invalid subscriptions - invalid topic")),!1;if(typeof q!="number")return F.destroy(new Error("Invalid subscriptions - invalid qos")),!1;if(he===5){if(typeof(S[te].nl||!1)!="boolean")return F.destroy(new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(S[te].rap||!1)!="boolean")return F.destroy(new Error("Invalid subscriptions - invalid Retain as Published")),!1;let x=S[te].rh||0;if(typeof x!="number"||x>2)return F.destroy(new Error("Invalid subscriptions - invalid Retain Handling")),!1}N+=n.byteLength(U)+2+1}else return F.destroy(new Error("Invalid subscriptions")),!1;l("subscribe: writing to stream: %o",r.SUBSCRIBE_HEADER),F.write(r.SUBSCRIBE_HEADER[1][ee?1:0][0]),oe(F,N),_(F,v),P!==null&&P.write();let J=!0;for(let te of S){let U=te.topic,q=te.qos,x=+te.nl,K=+te.rap,Y=te.rh,le;ne(F,U),le=r.SUBSCRIBE_OPTIONS_QOS[q],he===5&&(le|=x?r.SUBSCRIBE_OPTIONS_NL:0,le|=K?r.SUBSCRIBE_OPTIONS_RAP:0,le|=Y?r.SUBSCRIBE_OPTIONS_RH[Y]:0),J=F.write(n.from([le]))}return J}function D(V,F,Z){let he=Z?Z.protocolVersion:4,fe=V||{},ee=fe.messageId,v=fe.granted,S=fe.properties,E=0;if(typeof ee!="number")return F.destroy(new Error("Invalid messageId")),!1;if(E+=2,typeof v=="object"&&v.length)for(let P=0;P<v.length;P+=1){if(typeof v[P]!="number")return F.destroy(new Error("Invalid qos vector")),!1;E+=1}else return F.destroy(new Error("Invalid qos vector")),!1;let N=null;if(he===5){if(N=O(F,S,Z,E),!N)return!1;E+=N.length}return F.write(r.SUBACK_HEADER),oe(F,E),_(F,ee),N!==null&&N.write(),F.write(n.from(v))}function j(V,F,Z){let he=Z?Z.protocolVersion:4,fe=V||{},ee=fe.messageId,v=fe.dup?r.DUP_MASK:0,S=fe.unsubscriptions,E=fe.properties,N=0;if(typeof ee!="number")return F.destroy(new Error("Invalid messageId")),!1;if(N+=2,typeof S=="object"&&S.length)for(let te=0;te<S.length;te+=1){if(typeof S[te]!="string")return F.destroy(new Error("Invalid unsubscriptions")),!1;N+=n.byteLength(S[te])+2}else return F.destroy(new Error("Invalid unsubscriptions")),!1;let P=null;if(he===5){if(P=ge(F,E),!P)return!1;N+=P.length}F.write(r.UNSUBSCRIBE_HEADER[1][v?1:0][0]),oe(F,N),_(F,ee),P!==null&&P.write();let J=!0;for(let te=0;te<S.length;te++)J=ne(F,S[te]);return J}function z(V,F,Z){let he=Z?Z.protocolVersion:4,fe=V||{},ee=fe.messageId,v=fe.dup?r.DUP_MASK:0,S=fe.granted,E=fe.properties,N=fe.cmd,P=0,J=2;if(typeof ee!="number")return F.destroy(new Error("Invalid messageId")),!1;if(he===5)if(typeof S=="object"&&S.length)for(let U=0;U<S.length;U+=1){if(typeof S[U]!="number")return F.destroy(new Error("Invalid qos vector")),!1;J+=1}else return F.destroy(new Error("Invalid qos vector")),!1;let te=null;if(he===5){if(te=O(F,E,Z,J),!te)return!1;J+=te.length}return F.write(r.ACKS[N][P][v][0]),oe(F,J),_(F,ee),te!==null&&te.write(),he===5&&F.write(n.from(S)),!0}function se(V,F,Z){return F.write(r.EMPTY[V.cmd])}function re(V,F,Z){let he=Z?Z.protocolVersion:4,fe=V||{},ee=fe.reasonCode,v=fe.properties,S=he===5?1:0,E=null;if(he===5){if(E=O(F,v,Z,S),!E)return!1;S+=E.length}return F.write(n.from([r.codes.disconnect<<4])),oe(F,S),he===5&&F.write(n.from([ee])),E!==null&&E.write(),!0}function L(V,F,Z){let he=Z?Z.protocolVersion:4,fe=V||{},ee=fe.reasonCode,v=fe.properties,S=he===5?1:0;he!==5&&F.destroy(new Error("Invalid mqtt version for auth packet"));let E=O(F,v,Z,S);return E?(S+=E.length,F.write(n.from([r.codes.auth<<4])),oe(F,S),F.write(n.from([ee])),E!==null&&E.write(),!0):!1}var B={};function oe(V,F){if(F>r.VARBYTEINT_MAX)return V.destroy(new Error(`Invalid variable byte integer: ${F}`)),!1;let Z=B[F];return Z||(Z=p(F),F<16384&&(B[F]=Z)),l("writeVarByteInt: writing to stream: %o",Z),V.write(Z)}function ne(V,F){let Z=n.byteLength(F);return _(V,Z),l("writeString: %s",F),V.write(F,"utf8")}function ue(V,F,Z){ne(V,F),ne(V,Z)}function ae(V,F){return l("writeNumberCached: number: %d",F),l("writeNumberCached: %o",u[F]),V.write(u[F])}function G(V,F){let Z=c(F);return l("writeNumberGenerated: %o",Z),V.write(Z)}function pe(V,F){let Z=m(F);return l("write4ByteNumber: %o",Z),V.write(Z)}function de(V,F){typeof F=="string"?ne(V,F):F?(_(V,F.length),V.write(F)):_(V,0)}function ge(V,F){if(typeof F!="object"||F.length!=null)return{length:1,write(){me(V,{},0)}};let Z=0;function he(fe,ee){let v=r.propertiesTypes[fe],S=0;switch(v){case"byte":{if(typeof ee!="boolean")return V.destroy(new Error(`Invalid ${fe}: ${ee}`)),!1;S+=2;break}case"int8":{if(typeof ee!="number"||ee<0||ee>255)return V.destroy(new Error(`Invalid ${fe}: ${ee}`)),!1;S+=2;break}case"binary":{if(ee&&ee===null)return V.destroy(new Error(`Invalid ${fe}: ${ee}`)),!1;S+=1+n.byteLength(ee)+2;break}case"int16":{if(typeof ee!="number"||ee<0||ee>65535)return V.destroy(new Error(`Invalid ${fe}: ${ee}`)),!1;S+=3;break}case"int32":{if(typeof ee!="number"||ee<0||ee>4294967295)return V.destroy(new Error(`Invalid ${fe}: ${ee}`)),!1;S+=5;break}case"var":{if(typeof ee!="number"||ee<0||ee>268435455)return V.destroy(new Error(`Invalid ${fe}: ${ee}`)),!1;S+=1+n.byteLength(p(ee));break}case"string":{if(typeof ee!="string")return V.destroy(new Error(`Invalid ${fe}: ${ee}`)),!1;S+=3+n.byteLength(ee.toString());break}case"pair":{if(typeof ee!="object")return V.destroy(new Error(`Invalid ${fe}: ${ee}`)),!1;S+=Object.getOwnPropertyNames(ee).reduce((E,N)=>{let P=ee[N];return Array.isArray(P)?E+=P.reduce((J,te)=>(J+=3+n.byteLength(N.toString())+2+n.byteLength(te.toString()),J),0):E+=3+n.byteLength(N.toString())+2+n.byteLength(ee[N].toString()),E},0);break}default:return V.destroy(new Error(`Invalid property ${fe}: ${ee}`)),!1}return S}if(F)for(let fe in F){let ee=0,v=0,S=F[fe];if(Array.isArray(S))for(let E=0;E<S.length;E++){if(v=he(fe,S[E]),!v)return!1;ee+=v}else{if(v=he(fe,S),!v)return!1;ee=v}if(!ee)return!1;Z+=ee}return{length:n.byteLength(p(Z))+Z,write(){me(V,F,Z)}}}function O(V,F,Z,he){let fe=["reasonString","userProperties"],ee=Z&&Z.properties&&Z.properties.maximumPacketSize?Z.properties.maximumPacketSize:0,v=ge(V,F);if(ee)for(;he+v.length>ee;){let S=fe.shift();if(S&&F[S])delete F[S],v=ge(V,F);else return!1}return v}function ie(V,F,Z){switch(r.propertiesTypes[F]){case"byte":{V.write(n.from([r.properties[F]])),V.write(n.from([+Z]));break}case"int8":{V.write(n.from([r.properties[F]])),V.write(n.from([Z]));break}case"binary":{V.write(n.from([r.properties[F]])),de(V,Z);break}case"int16":{V.write(n.from([r.properties[F]])),_(V,Z);break}case"int32":{V.write(n.from([r.properties[F]])),pe(V,Z);break}case"var":{V.write(n.from([r.properties[F]])),oe(V,Z);break}case"string":{V.write(n.from([r.properties[F]])),ne(V,Z);break}case"pair":{Object.getOwnPropertyNames(Z).forEach(he=>{let fe=Z[he];Array.isArray(fe)?fe.forEach(ee=>{V.write(n.from([r.properties[F]])),ue(V,he.toString(),ee.toString())}):(V.write(n.from([r.properties[F]])),ue(V,he.toString(),fe.toString()))});break}default:return V.destroy(new Error(`Invalid property ${F} value: ${Z}`)),!1}}function me(V,F,Z){oe(V,Z);for(let he in F)if(Object.prototype.hasOwnProperty.call(F,he)&&F[he]!==null){let fe=F[he];if(Array.isArray(fe))for(let ee=0;ee<fe.length;ee++)ie(V,he,fe[ee]);else ie(V,he,fe)}}function ve(V){return V?V instanceof n?V.length:n.byteLength(V):0}function ye(V){return typeof V=="string"||V instanceof n}t.exports=T}),JO=Ae((e,t)=>{_e(),we(),be();var r=xw(),{EventEmitter:n}=(Go(),Ge(Wi)),{Buffer:o}=(wt(),Ge(bt));function i(a,l){let u=new s;return r(a,u,l),u.concat()}var s=class extends n{constructor(){super(),this._array=new Array(20),this._i=0}write(a){return this._array[this._i++]=a,!0}concat(){let a=0,l=new Array(this._array.length),u=this._array,c=0,d;for(d=0;d<u.length&&u[d]!==void 0;d++)typeof u[d]!="string"?l[d]=u[d].length:l[d]=o.byteLength(u[d]),a+=l[d];let p=o.allocUnsafe(a);for(d=0;d<u.length&&u[d]!==void 0;d++)typeof u[d]!="string"?(u[d].copy(p,c),c+=l[d]):(p.write(u[d],c),c+=l[d]);return p}destroy(a){a&&this.emit("error",a)}};t.exports=i}),ZO=Ae(e=>{_e(),we(),be(),e.parser=GO().parser,e.generate=JO(),e.writeToStream=xw()}),Iw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=class{constructor(){this.nextId=Math.max(1,Math.floor(Math.random()*65535))}allocate(){let r=this.nextId++;return this.nextId===65536&&(this.nextId=1),r}getLastAllocated(){return this.nextId===1?65535:this.nextId-1}register(r){return!0}deallocate(r){}clear(){}};e.default=t}),ek=Ae((e,t)=>{_e(),we(),be(),t.exports=n;function r(i){return i instanceof ml?ml.from(i):new i.constructor(i.buffer.slice(),i.byteOffset,i.length)}function n(i){if(i=i||{},i.circles)return o(i);return i.proto?l:a;function s(u,c){for(var d=Object.keys(u),p=new Array(d.length),m=0;m<d.length;m++){var _=d[m],b=u[_];typeof b!="object"||b===null?p[_]=b:b instanceof Date?p[_]=new Date(b):ArrayBuffer.isView(b)?p[_]=r(b):p[_]=c(b)}return p}function a(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return s(u,a);if(u instanceof Map)return new Map(s(Array.from(u),a));if(u instanceof Set)return new Set(s(Array.from(u),a));var c={};for(var d in u)if(Object.hasOwnProperty.call(u,d)!==!1){var p=u[d];typeof p!="object"||p===null?c[d]=p:p instanceof Date?c[d]=new Date(p):p instanceof Map?c[d]=new Map(s(Array.from(p),a)):p instanceof Set?c[d]=new Set(s(Array.from(p),a)):ArrayBuffer.isView(p)?c[d]=r(p):c[d]=a(p)}return c}function l(u){if(typeof u!="object"||u===null)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return s(u,l);if(u instanceof Map)return new Map(s(Array.from(u),l));if(u instanceof Set)return new Set(s(Array.from(u),l));var c={};for(var d in u){var p=u[d];typeof p!="object"||p===null?c[d]=p:p instanceof Date?c[d]=new Date(p):p instanceof Map?c[d]=new Map(s(Array.from(p),l)):p instanceof Set?c[d]=new Set(s(Array.from(p),l)):ArrayBuffer.isView(p)?c[d]=r(p):c[d]=l(p)}return c}}function o(i){var s=[],a=[];return i.proto?c:u;function l(d,p){for(var m=Object.keys(d),_=new Array(m.length),b=0;b<m.length;b++){var T=m[b],k=d[T];if(typeof k!="object"||k===null)_[T]=k;else if(k instanceof Date)_[T]=new Date(k);else if(ArrayBuffer.isView(k))_[T]=r(k);else{var C=s.indexOf(k);C!==-1?_[T]=a[C]:_[T]=p(k)}}return _}function u(d){if(typeof d!="object"||d===null)return d;if(d instanceof Date)return new Date(d);if(Array.isArray(d))return l(d,u);if(d instanceof Map)return new Map(l(Array.from(d),u));if(d instanceof Set)return new Set(l(Array.from(d),u));var p={};s.push(d),a.push(p);for(var m in d)if(Object.hasOwnProperty.call(d,m)!==!1){var _=d[m];if(typeof _!="object"||_===null)p[m]=_;else if(_ instanceof Date)p[m]=new Date(_);else if(_ instanceof Map)p[m]=new Map(l(Array.from(_),u));else if(_ instanceof Set)p[m]=new Set(l(Array.from(_),u));else if(ArrayBuffer.isView(_))p[m]=r(_);else{var b=s.indexOf(_);b!==-1?p[m]=a[b]:p[m]=u(_)}}return s.pop(),a.pop(),p}function c(d){if(typeof d!="object"||d===null)return d;if(d instanceof Date)return new Date(d);if(Array.isArray(d))return l(d,c);if(d instanceof Map)return new Map(l(Array.from(d),c));if(d instanceof Set)return new Set(l(Array.from(d),c));var p={};s.push(d),a.push(p);for(var m in d){var _=d[m];if(typeof _!="object"||_===null)p[m]=_;else if(_ instanceof Date)p[m]=new Date(_);else if(_ instanceof Map)p[m]=new Map(l(Array.from(_),c));else if(_ instanceof Set)p[m]=new Set(l(Array.from(_),c));else if(ArrayBuffer.isView(_))p[m]=r(_);else{var b=s.indexOf(_);b!==-1?p[m]=a[b]:p[m]=c(_)}}return s.pop(),a.pop(),p}}}),tk=Ae((e,t)=>{_e(),we(),be(),t.exports=ek()()}),rk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.validateTopics=e.validateTopic=void 0;function t(n){let o=n.split("/");for(let i=0;i<o.length;i++)if(o[i]!=="+"){if(o[i]==="#")return i===o.length-1;if(o[i].indexOf("+")!==-1||o[i].indexOf("#")!==-1)return!1}return!0}e.validateTopic=t;function r(n){if(n.length===0)return"empty_topic_list";for(let o=0;o<n.length;o++)if(!t(n[o]))return n[o];return null}e.validateTopics=r}),Cw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=Hi(),r={objectMode:!0},n={clean:!0},o=class{constructor(i){this.options=i||{},this.options=Object.assign(Object.assign({},n),i),this._inflights=new Map}put(i,s){return this._inflights.set(i.messageId,i),s&&s(),this}createStream(){let i=new t.Readable(r),s=[],a=!1,l=0;return this._inflights.forEach((u,c)=>{s.push(u)}),i._read=()=>{!a&&l<s.length?i.push(s[l++]):i.push(null)},i.destroy=u=>{if(!a)return a=!0,setTimeout(()=>{i.emit("close")},0),i},i}del(i,s){let a=this._inflights.get(i.messageId);return a?(this._inflights.delete(i.messageId),s(null,a)):s&&s(new Error("missing packet")),this}get(i,s){let a=this._inflights.get(i.messageId);return a?s(null,a):s&&s(new Error("missing packet")),this}close(i){this.options.clean&&(this._inflights=null),i&&i()}};e.default=o}),nk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=[0,16,128,131,135,144,145,151,153],r=(n,o,i)=>{n.log("handlePublish: packet %o",o),i=typeof i<"u"?i:n.noop;let s=o.topic.toString(),a=o.payload,{qos:l}=o,{messageId:u}=o,{options:c}=n;if(n.options.protocolVersion===5){let d;if(o.properties&&(d=o.properties.topicAlias),typeof d<"u")if(s.length===0)if(d>0&&d<=65535){let p=n.topicAliasRecv.getTopicByAlias(d);if(p)s=p,n.log("handlePublish :: topic complemented by alias. topic: %s - alias: %d",s,d);else{n.log("handlePublish :: unregistered topic alias. alias: %d",d),n.emit("error",new Error("Received unregistered Topic Alias"));return}}else{n.log("handlePublish :: topic alias out of range. alias: %d",d),n.emit("error",new Error("Received Topic Alias is out of range"));return}else if(n.topicAliasRecv.put(s,d))n.log("handlePublish :: registered topic: %s - alias: %d",s,d);else{n.log("handlePublish :: topic alias out of range. alias: %d",d),n.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(n.log("handlePublish: qos %d",l),l){case 2:{c.customHandleAcks(s,a,o,(d,p)=>{if(typeof d=="number"&&(p=d,d=null),d)return n.emit("error",d);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for pubrec"));p?n._sendPacket({cmd:"pubrec",messageId:u,reasonCode:p},i):n.incomingStore.put(o,()=>{n._sendPacket({cmd:"pubrec",messageId:u},i)})});break}case 1:{c.customHandleAcks(s,a,o,(d,p)=>{if(typeof d=="number"&&(p=d,d=null),d)return n.emit("error",d);if(t.indexOf(p)===-1)return n.emit("error",new Error("Wrong reason code for puback"));p||n.emit("message",s,a,o),n.handleMessage(o,m=>{if(m)return i&&i(m);n._sendPacket({cmd:"puback",messageId:u,reasonCode:p},i)})});break}case 0:n.emit("message",s,a,o),n.handleMessage(o,i);break;default:n.log("handlePublish: unknown QoS. Doing nothing.");break}};e.default=r}),ik=Ae((e,t)=>{t.exports={version:"5.10.1"}}),Qo=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.MQTTJS_VERSION=e.nextTick=e.applyMixin=e.ErrorWithReasonCode=void 0;var t=class Rw extends Error{constructor(o,i){super(o),this.code=i,Object.setPrototypeOf(this,Rw.prototype),Object.getPrototypeOf(this).name="ErrorWithReasonCode"}};e.ErrorWithReasonCode=t;function r(n,o,i=!1){var s;let a=[o];for(;;){let l=a[0],u=Object.getPrototypeOf(l);if(u!=null&&u.prototype)a.unshift(u);else break}for(let l of a)for(let u of Object.getOwnPropertyNames(l.prototype))(i||u!=="constructor")&&Object.defineProperty(n.prototype,u,(s=Object.getOwnPropertyDescriptor(l.prototype,u))!==null&&s!==void 0?s:Object.create(null))}e.applyMixin=r,e.nextTick=typeof(We==null?void 0:We.nextTick)=="function"?We.nextTick:n=>{setTimeout(n,0)},e.MQTTJS_VERSION=ik().version}),lu=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=void 0;var t=Qo();e.ReasonCodes={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};var r=(n,o)=>{let{messageId:i}=o,s=o.cmd,a=null,l=n.outgoing[i]?n.outgoing[i].cb:null,u=null;if(!l){n.log("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(n.log("_handleAck :: packet type",s),s){case"pubcomp":case"puback":{let c=o.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{l(u,o)})):n._removeOutgoingAndStoreMessage(i,l);break}case"pubrec":{a={cmd:"pubrel",qos:2,messageId:i};let c=o.reasonCode;c&&c>0&&c!==16?(u=new t.ErrorWithReasonCode(`Publish error: ${e.ReasonCodes[c]}`,c),n._removeOutgoingAndStoreMessage(i,()=>{l(u,o)})):n._sendPacket(a);break}case"suback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i);let c=o.granted;for(let d=0;d<c.length;d++){let p=c[d];if(p&128){u=new Error(`Subscribe error: ${e.ReasonCodes[p]}`),u.code=p;let m=n.messageIdToTopic[i];m&&m.forEach(_=>{delete n._resubscribeTopics[_]})}}delete n.messageIdToTopic[i],n._invokeStoreProcessingQueue(),l(u,o);break}case"unsuback":{delete n.outgoing[i],n.messageIdProvider.deallocate(i),n._invokeStoreProcessingQueue(),l(null,o);break}default:n.emit("error",new Error("unrecognized packet type"))}n.disconnecting&&Object.keys(n.outgoing).length===0&&n.emit("outgoingEmpty")};e.default=r}),ok=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=Qo(),r=lu(),n=(o,i)=>{let{options:s}=o,a=s.protocolVersion,l=a===5?i.reasonCode:i.returnCode;if(a!==5){let u=new t.ErrorWithReasonCode(`Protocol error: Auth packets are only supported in MQTT 5. Your version:${a}`,l);o.emit("error",u);return}o.handleAuth(i,(u,c)=>{if(u){o.emit("error",u);return}if(l===24)o.reconnecting=!1,o._sendPacket(c);else{let d=new t.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[l]}`,l);o.emit("error",d)}})};e.default=n}),sk=Ae(e=>{var m,_,b,T,k,C,A,M,$,R,D,j,z,se,re,L,B,oe,ne,ue,ae,G,pe,de,ge,O,Ch,me,ve,ye,V,Ow,Z,he,fe,On,kn,Rh,Va,qa,et,Oh,_s,U;_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=void 0;var t=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,r=new Set,n=typeof We=="object"&&We?We:{},o=(q,x,K,Y)=>{typeof n.emitWarning=="function"?n.emitWarning(q,x,K,Y):console.error(`[${K}] ${x}: ${q}`)},i=globalThis.AbortController,s=globalThis.AbortSignal;if(typeof i>"u"){s=class{constructor(){nt(this,"onabort");nt(this,"_onabort",[]);nt(this,"reason");nt(this,"aborted",!1)}addEventListener(K,Y){this._onabort.push(Y)}},i=class{constructor(){nt(this,"signal",new s);x()}abort(K){var Y,le;if(!this.signal.aborted){this.signal.reason=K,this.signal.aborted=!0;for(let y of this.signal._onabort)y(K);(le=(Y=this.signal).onabort)==null||le.call(Y,K)}}};let q=((m=n.env)==null?void 0:m.LRU_CACHE_IGNORE_AC_WARNING)!=="1",x=()=>{q&&(q=!1,o("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",x))}}var a=q=>!r.has(q),l=q=>q&&q===Math.floor(q)&&q>0&&isFinite(q),u=q=>l(q)?q<=Math.pow(2,8)?Uint8Array:q<=Math.pow(2,16)?Uint16Array:q<=Math.pow(2,32)?Uint32Array:q<=Number.MAX_SAFE_INTEGER?c:null:null,c=class extends Array{constructor(q){super(q),this.fill(0)}},d=(_=class{constructor(x,K){nt(this,"heap");nt(this,"length");if(!X(_,b))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new K(x),this.length=0}static create(x){let K=u(x);if(!K)return[];Le(_,b,!0);let Y=new _(x,K);return Le(_,b,!1),Y}push(x){this.heap[this.length++]=x}pop(){return this.heap[--this.length]}},b=new WeakMap,Ue(_,b,!1),_),p=(U=class{constructor(x){Ue(this,O);Ue(this,T);Ue(this,k);Ue(this,C);Ue(this,A);Ue(this,M);nt(this,"ttl");nt(this,"ttlResolution");nt(this,"ttlAutopurge");nt(this,"updateAgeOnGet");nt(this,"updateAgeOnHas");nt(this,"allowStale");nt(this,"noDisposeOnSet");nt(this,"noUpdateTTL");nt(this,"maxEntrySize");nt(this,"sizeCalculation");nt(this,"noDeleteOnFetchRejection");nt(this,"noDeleteOnStaleGet");nt(this,"allowStaleOnFetchAbort");nt(this,"allowStaleOnFetchRejection");nt(this,"ignoreFetchAbort");Ue(this,$);Ue(this,R);Ue(this,D);Ue(this,j);Ue(this,z);Ue(this,se);Ue(this,re);Ue(this,L);Ue(this,B);Ue(this,oe);Ue(this,ne);Ue(this,ue);Ue(this,ae);Ue(this,G);Ue(this,pe);Ue(this,de);Ue(this,ge);Ue(this,me,()=>{});Ue(this,ve,()=>{});Ue(this,ye,()=>{});Ue(this,V,()=>!1);Ue(this,Z,x=>{});Ue(this,he,(x,K,Y)=>{});Ue(this,fe,(x,K,Y,le)=>{if(Y||le)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});let{max:K=0,ttl:Y,ttlResolution:le=1,ttlAutopurge:y,updateAgeOnGet:h,updateAgeOnHas:f,allowStale:g,dispose:w,disposeAfter:I,noDisposeOnSet:W,noUpdateTTL:ce,maxSize:xe=0,maxEntrySize:ke=0,sizeCalculation:Te,fetchMethod:Oe,noDeleteOnFetchRejection:Re,noDeleteOnStaleGet:Ve,allowStaleOnFetchRejection:ut,allowStaleOnFetchAbort:Ze,ignoreFetchAbort:at}=x;if(K!==0&&!l(K))throw new TypeError("max option must be a nonnegative integer");let mt=K?u(K):Array;if(!mt)throw new Error("invalid max value: "+K);if(Le(this,T,K),Le(this,k,xe),this.maxEntrySize=ke||X(this,k),this.sizeCalculation=Te,this.sizeCalculation){if(!X(this,k)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(Oe!==void 0&&typeof Oe!="function")throw new TypeError("fetchMethod must be a function if specified");if(Le(this,M,Oe),Le(this,de,!!Oe),Le(this,D,new Map),Le(this,j,new Array(K).fill(void 0)),Le(this,z,new Array(K).fill(void 0)),Le(this,se,new mt(K)),Le(this,re,new mt(K)),Le(this,L,0),Le(this,B,0),Le(this,oe,d.create(K)),Le(this,$,0),Le(this,R,0),typeof w=="function"&&Le(this,C,w),typeof I=="function"?(Le(this,A,I),Le(this,ne,[])):(Le(this,A,void 0),Le(this,ne,void 0)),Le(this,pe,!!X(this,C)),Le(this,ge,!!X(this,A)),this.noDisposeOnSet=!!W,this.noUpdateTTL=!!ce,this.noDeleteOnFetchRejection=!!Re,this.allowStaleOnFetchRejection=!!ut,this.allowStaleOnFetchAbort=!!Ze,this.ignoreFetchAbort=!!at,this.maxEntrySize!==0){if(X(this,k)!==0&&!l(X(this,k)))throw new TypeError("maxSize must be a positive integer if specified");if(!l(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Ne(this,O,Ow).call(this)}if(this.allowStale=!!g,this.noDeleteOnStaleGet=!!Ve,this.updateAgeOnGet=!!h,this.updateAgeOnHas=!!f,this.ttlResolution=l(le)||le===0?le:1,this.ttlAutopurge=!!y,this.ttl=Y||0,this.ttl){if(!l(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Ne(this,O,Ch).call(this)}if(X(this,T)===0&&this.ttl===0&&X(this,k)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!X(this,T)&&!X(this,k)){let ct="LRU_CACHE_UNBOUNDED";a(ct)&&(r.add(ct),o("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",ct,U))}}static unsafeExposeInternals(x){return{starts:X(x,ae),ttls:X(x,G),sizes:X(x,ue),keyMap:X(x,D),keyList:X(x,j),valList:X(x,z),next:X(x,se),prev:X(x,re),get head(){return X(x,L)},get tail(){return X(x,B)},free:X(x,oe),isBackgroundFetch:K=>{var Y;return Ne(Y=x,O,et).call(Y,K)},backgroundFetch:(K,Y,le,y)=>{var h;return Ne(h=x,O,qa).call(h,K,Y,le,y)},moveToTail:K=>{var Y;return Ne(Y=x,O,_s).call(Y,K)},indexes:K=>{var Y;return Ne(Y=x,O,On).call(Y,K)},rindexes:K=>{var Y;return Ne(Y=x,O,kn).call(Y,K)},isStale:K=>{var Y;return X(Y=x,V).call(Y,K)}}}get max(){return X(this,T)}get maxSize(){return X(this,k)}get calculatedSize(){return X(this,R)}get size(){return X(this,$)}get fetchMethod(){return X(this,M)}get dispose(){return X(this,C)}get disposeAfter(){return X(this,A)}getRemainingTTL(x){return X(this,D).has(x)?1/0:0}*entries(){for(let x of Ne(this,O,On).call(this))X(this,z)[x]!==void 0&&X(this,j)[x]!==void 0&&!Ne(this,O,et).call(this,X(this,z)[x])&&(yield[X(this,j)[x],X(this,z)[x]])}*rentries(){for(let x of Ne(this,O,kn).call(this))X(this,z)[x]!==void 0&&X(this,j)[x]!==void 0&&!Ne(this,O,et).call(this,X(this,z)[x])&&(yield[X(this,j)[x],X(this,z)[x]])}*keys(){for(let x of Ne(this,O,On).call(this)){let K=X(this,j)[x];K!==void 0&&!Ne(this,O,et).call(this,X(this,z)[x])&&(yield K)}}*rkeys(){for(let x of Ne(this,O,kn).call(this)){let K=X(this,j)[x];K!==void 0&&!Ne(this,O,et).call(this,X(this,z)[x])&&(yield K)}}*values(){for(let x of Ne(this,O,On).call(this))X(this,z)[x]!==void 0&&!Ne(this,O,et).call(this,X(this,z)[x])&&(yield X(this,z)[x])}*rvalues(){for(let x of Ne(this,O,kn).call(this))X(this,z)[x]!==void 0&&!Ne(this,O,et).call(this,X(this,z)[x])&&(yield X(this,z)[x])}[Symbol.iterator](){return this.entries()}find(x,K={}){for(let Y of Ne(this,O,On).call(this)){let le=X(this,z)[Y],y=Ne(this,O,et).call(this,le)?le.__staleWhileFetching:le;if(y!==void 0&&x(y,X(this,j)[Y],this))return this.get(X(this,j)[Y],K)}}forEach(x,K=this){for(let Y of Ne(this,O,On).call(this)){let le=X(this,z)[Y],y=Ne(this,O,et).call(this,le)?le.__staleWhileFetching:le;y!==void 0&&x.call(K,y,X(this,j)[Y],this)}}rforEach(x,K=this){for(let Y of Ne(this,O,kn).call(this)){let le=X(this,z)[Y],y=Ne(this,O,et).call(this,le)?le.__staleWhileFetching:le;y!==void 0&&x.call(K,y,X(this,j)[Y],this)}}purgeStale(){let x=!1;for(let K of Ne(this,O,kn).call(this,{allowStale:!0}))X(this,V).call(this,K)&&(this.delete(X(this,j)[K]),x=!0);return x}dump(){let x=[];for(let K of Ne(this,O,On).call(this,{allowStale:!0})){let Y=X(this,j)[K],le=X(this,z)[K],y=Ne(this,O,et).call(this,le)?le.__staleWhileFetching:le;if(y===void 0||Y===void 0)continue;let h={value:y};if(X(this,G)&&X(this,ae)){h.ttl=X(this,G)[K];let f=t.now()-X(this,ae)[K];h.start=Math.floor(Date.now()-f)}X(this,ue)&&(h.size=X(this,ue)[K]),x.unshift([Y,h])}return x}load(x){this.clear();for(let[K,Y]of x){if(Y.start){let le=Date.now()-Y.start;Y.start=t.now()-le}this.set(K,Y.value,Y)}}set(x,K,Y={}){var ce,xe,ke,Te,Oe;if(K===void 0)return this.delete(x),this;let{ttl:le=this.ttl,start:y,noDisposeOnSet:h=this.noDisposeOnSet,sizeCalculation:f=this.sizeCalculation,status:g}=Y,{noUpdateTTL:w=this.noUpdateTTL}=Y,I=X(this,fe).call(this,x,K,Y.size||0,f);if(this.maxEntrySize&&I>this.maxEntrySize)return g&&(g.set="miss",g.maxEntrySizeExceeded=!0),this.delete(x),this;let W=X(this,$)===0?void 0:X(this,D).get(x);if(W===void 0)W=X(this,$)===0?X(this,B):X(this,oe).length!==0?X(this,oe).pop():X(this,$)===X(this,T)?Ne(this,O,Va).call(this,!1):X(this,$),X(this,j)[W]=x,X(this,z)[W]=K,X(this,D).set(x,W),X(this,se)[X(this,B)]=W,X(this,re)[W]=X(this,B),Le(this,B,W),ia(this,$)._++,X(this,he).call(this,W,I,g),g&&(g.set="add"),w=!1;else{Ne(this,O,_s).call(this,W);let Re=X(this,z)[W];if(K!==Re){if(X(this,de)&&Ne(this,O,et).call(this,Re)){Re.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:Ve}=Re;Ve!==void 0&&!h&&(X(this,pe)&&((ce=X(this,C))==null||ce.call(this,Ve,x,"set")),X(this,ge)&&((xe=X(this,ne))==null||xe.push([Ve,x,"set"])))}else h||(X(this,pe)&&((ke=X(this,C))==null||ke.call(this,Re,x,"set")),X(this,ge)&&((Te=X(this,ne))==null||Te.push([Re,x,"set"])));if(X(this,Z).call(this,W),X(this,he).call(this,W,I,g),X(this,z)[W]=K,g){g.set="replace";let Ve=Re&&Ne(this,O,et).call(this,Re)?Re.__staleWhileFetching:Re;Ve!==void 0&&(g.oldValue=Ve)}}else g&&(g.set="update")}if(le!==0&&!X(this,G)&&Ne(this,O,Ch).call(this),X(this,G)&&(w||X(this,ye).call(this,W,le,y),g&&X(this,ve).call(this,g,W)),!h&&X(this,ge)&&X(this,ne)){let Re=X(this,ne),Ve;for(;Ve=Re==null?void 0:Re.shift();)(Oe=X(this,A))==null||Oe.call(this,...Ve)}return this}pop(){var x;try{for(;X(this,$);){let K=X(this,z)[X(this,L)];if(Ne(this,O,Va).call(this,!0),Ne(this,O,et).call(this,K)){if(K.__staleWhileFetching)return K.__staleWhileFetching}else if(K!==void 0)return K}}finally{if(X(this,ge)&&X(this,ne)){let K=X(this,ne),Y;for(;Y=K==null?void 0:K.shift();)(x=X(this,A))==null||x.call(this,...Y)}}}has(x,K={}){let{updateAgeOnHas:Y=this.updateAgeOnHas,status:le}=K,y=X(this,D).get(x);if(y!==void 0){let h=X(this,z)[y];if(Ne(this,O,et).call(this,h)&&h.__staleWhileFetching===void 0)return!1;if(X(this,V).call(this,y))le&&(le.has="stale",X(this,ve).call(this,le,y));else return Y&&X(this,me).call(this,y),le&&(le.has="hit",X(this,ve).call(this,le,y)),!0}else le&&(le.has="miss");return!1}peek(x,K={}){let{allowStale:Y=this.allowStale}=K,le=X(this,D).get(x);if(le!==void 0&&(Y||!X(this,V).call(this,le))){let y=X(this,z)[le];return Ne(this,O,et).call(this,y)?y.__staleWhileFetching:y}}async fetch(x,K={}){let{allowStale:Y=this.allowStale,updateAgeOnGet:le=this.updateAgeOnGet,noDeleteOnStaleGet:y=this.noDeleteOnStaleGet,ttl:h=this.ttl,noDisposeOnSet:f=this.noDisposeOnSet,size:g=0,sizeCalculation:w=this.sizeCalculation,noUpdateTTL:I=this.noUpdateTTL,noDeleteOnFetchRejection:W=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:ce=this.allowStaleOnFetchRejection,ignoreFetchAbort:xe=this.ignoreFetchAbort,allowStaleOnFetchAbort:ke=this.allowStaleOnFetchAbort,context:Te,forceRefresh:Oe=!1,status:Re,signal:Ve}=K;if(!X(this,de))return Re&&(Re.fetch="get"),this.get(x,{allowStale:Y,updateAgeOnGet:le,noDeleteOnStaleGet:y,status:Re});let ut={allowStale:Y,updateAgeOnGet:le,noDeleteOnStaleGet:y,ttl:h,noDisposeOnSet:f,size:g,sizeCalculation:w,noUpdateTTL:I,noDeleteOnFetchRejection:W,allowStaleOnFetchRejection:ce,allowStaleOnFetchAbort:ke,ignoreFetchAbort:xe,status:Re,signal:Ve},Ze=X(this,D).get(x);if(Ze===void 0){Re&&(Re.fetch="miss");let at=Ne(this,O,qa).call(this,x,Ze,ut,Te);return at.__returned=at}else{let at=X(this,z)[Ze];if(Ne(this,O,et).call(this,at)){let Zo=Y&&at.__staleWhileFetching!==void 0;return Re&&(Re.fetch="inflight",Zo&&(Re.returnedStale=!0)),Zo?at.__staleWhileFetching:at.__returned=at}let mt=X(this,V).call(this,Ze);if(!Oe&&!mt)return Re&&(Re.fetch="hit"),Ne(this,O,_s).call(this,Ze),le&&X(this,me).call(this,Ze),Re&&X(this,ve).call(this,Re,Ze),at;let ct=Ne(this,O,qa).call(this,x,Ze,ut,Te),Xi=ct.__staleWhileFetching!==void 0&&Y;return Re&&(Re.fetch=mt?"stale":"refresh",Xi&&mt&&(Re.returnedStale=!0)),Xi?ct.__staleWhileFetching:ct.__returned=ct}}get(x,K={}){let{allowStale:Y=this.allowStale,updateAgeOnGet:le=this.updateAgeOnGet,noDeleteOnStaleGet:y=this.noDeleteOnStaleGet,status:h}=K,f=X(this,D).get(x);if(f!==void 0){let g=X(this,z)[f],w=Ne(this,O,et).call(this,g);return h&&X(this,ve).call(this,h,f),X(this,V).call(this,f)?(h&&(h.get="stale"),w?(h&&Y&&g.__staleWhileFetching!==void 0&&(h.returnedStale=!0),Y?g.__staleWhileFetching:void 0):(y||this.delete(x),h&&Y&&(h.returnedStale=!0),Y?g:void 0)):(h&&(h.get="hit"),w?g.__staleWhileFetching:(Ne(this,O,_s).call(this,f),le&&X(this,me).call(this,f),g))}else h&&(h.get="miss")}delete(x){var Y,le,y,h;let K=!1;if(X(this,$)!==0){let f=X(this,D).get(x);if(f!==void 0)if(K=!0,X(this,$)===1)this.clear();else{X(this,Z).call(this,f);let g=X(this,z)[f];Ne(this,O,et).call(this,g)?g.__abortController.abort(new Error("deleted")):(X(this,pe)||X(this,ge))&&(X(this,pe)&&((Y=X(this,C))==null||Y.call(this,g,x,"delete")),X(this,ge)&&((le=X(this,ne))==null||le.push([g,x,"delete"]))),X(this,D).delete(x),X(this,j)[f]=void 0,X(this,z)[f]=void 0,f===X(this,B)?Le(this,B,X(this,re)[f]):f===X(this,L)?Le(this,L,X(this,se)[f]):(X(this,se)[X(this,re)[f]]=X(this,se)[f],X(this,re)[X(this,se)[f]]=X(this,re)[f]),ia(this,$)._--,X(this,oe).push(f)}}if(X(this,ge)&&((y=X(this,ne))!=null&&y.length)){let f=X(this,ne),g;for(;g=f==null?void 0:f.shift();)(h=X(this,A))==null||h.call(this,...g)}return K}clear(){var x,K,Y;for(let le of Ne(this,O,kn).call(this,{allowStale:!0})){let y=X(this,z)[le];if(Ne(this,O,et).call(this,y))y.__abortController.abort(new Error("deleted"));else{let h=X(this,j)[le];X(this,pe)&&((x=X(this,C))==null||x.call(this,y,h,"delete")),X(this,ge)&&((K=X(this,ne))==null||K.push([y,h,"delete"]))}}if(X(this,D).clear(),X(this,z).fill(void 0),X(this,j).fill(void 0),X(this,G)&&X(this,ae)&&(X(this,G).fill(0),X(this,ae).fill(0)),X(this,ue)&&X(this,ue).fill(0),Le(this,L,0),Le(this,B,0),X(this,oe).length=0,Le(this,R,0),Le(this,$,0),X(this,ge)&&X(this,ne)){let le=X(this,ne),y;for(;y=le==null?void 0:le.shift();)(Y=X(this,A))==null||Y.call(this,...y)}}},T=new WeakMap,k=new WeakMap,C=new WeakMap,A=new WeakMap,M=new WeakMap,$=new WeakMap,R=new WeakMap,D=new WeakMap,j=new WeakMap,z=new WeakMap,se=new WeakMap,re=new WeakMap,L=new WeakMap,B=new WeakMap,oe=new WeakMap,ne=new WeakMap,ue=new WeakMap,ae=new WeakMap,G=new WeakMap,pe=new WeakMap,de=new WeakMap,ge=new WeakMap,O=new WeakSet,Ch=function(){let x=new c(X(this,T)),K=new c(X(this,T));Le(this,G,x),Le(this,ae,K),Le(this,ye,(y,h,f=t.now())=>{if(K[y]=h!==0?f:0,x[y]=h,h!==0&&this.ttlAutopurge){let g=setTimeout(()=>{X(this,V).call(this,y)&&this.delete(X(this,j)[y])},h+1);g.unref&&g.unref()}}),Le(this,me,y=>{K[y]=x[y]!==0?t.now():0}),Le(this,ve,(y,h)=>{if(x[h]){let f=x[h],g=K[h];y.ttl=f,y.start=g,y.now=Y||le();let w=y.now-g;y.remainingTTL=f-w}});let Y=0,le=()=>{let y=t.now();if(this.ttlResolution>0){Y=y;let h=setTimeout(()=>Y=0,this.ttlResolution);h.unref&&h.unref()}return y};this.getRemainingTTL=y=>{let h=X(this,D).get(y);if(h===void 0)return 0;let f=x[h],g=K[h];if(f===0||g===0)return 1/0;let w=(Y||le())-g;return f-w},Le(this,V,y=>x[y]!==0&&K[y]!==0&&(Y||le())-K[y]>x[y])},me=new WeakMap,ve=new WeakMap,ye=new WeakMap,V=new WeakMap,Ow=function(){let x=new c(X(this,T));Le(this,R,0),Le(this,ue,x),Le(this,Z,K=>{Le(this,R,X(this,R)-x[K]),x[K]=0}),Le(this,fe,(K,Y,le,y)=>{if(Ne(this,O,et).call(this,Y))return 0;if(!l(le))if(y){if(typeof y!="function")throw new TypeError("sizeCalculation must be a function");if(le=y(Y,K),!l(le))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return le}),Le(this,he,(K,Y,le)=>{if(x[K]=Y,X(this,k)){let y=X(this,k)-x[K];for(;X(this,R)>y;)Ne(this,O,Va).call(this,!0)}Le(this,R,X(this,R)+x[K]),le&&(le.entrySize=Y,le.totalCalculatedSize=X(this,R))})},Z=new WeakMap,he=new WeakMap,fe=new WeakMap,On=function*({allowStale:x=this.allowStale}={}){if(X(this,$))for(let K=X(this,B);!(!Ne(this,O,Rh).call(this,K)||((x||!X(this,V).call(this,K))&&(yield K),K===X(this,L)));)K=X(this,re)[K]},kn=function*({allowStale:x=this.allowStale}={}){if(X(this,$))for(let K=X(this,L);!(!Ne(this,O,Rh).call(this,K)||((x||!X(this,V).call(this,K))&&(yield K),K===X(this,B)));)K=X(this,se)[K]},Rh=function(x){return x!==void 0&&X(this,D).get(X(this,j)[x])===x},Va=function(x){var y,h;let K=X(this,L),Y=X(this,j)[K],le=X(this,z)[K];return X(this,de)&&Ne(this,O,et).call(this,le)?le.__abortController.abort(new Error("evicted")):(X(this,pe)||X(this,ge))&&(X(this,pe)&&((y=X(this,C))==null||y.call(this,le,Y,"evict")),X(this,ge)&&((h=X(this,ne))==null||h.push([le,Y,"evict"]))),X(this,Z).call(this,K),x&&(X(this,j)[K]=void 0,X(this,z)[K]=void 0,X(this,oe).push(K)),X(this,$)===1?(Le(this,L,Le(this,B,0)),X(this,oe).length=0):Le(this,L,X(this,se)[K]),X(this,D).delete(Y),ia(this,$)._--,K},qa=function(x,K,Y,le){let y=K===void 0?void 0:X(this,z)[K];if(Ne(this,O,et).call(this,y))return y;let h=new i,{signal:f}=Y;f==null||f.addEventListener("abort",()=>h.abort(f.reason),{signal:h.signal});let g={signal:h.signal,options:Y,context:le},w=(Te,Oe=!1)=>{let{aborted:Re}=h.signal,Ve=Y.ignoreFetchAbort&&Te!==void 0;if(Y.status&&(Re&&!Oe?(Y.status.fetchAborted=!0,Y.status.fetchError=h.signal.reason,Ve&&(Y.status.fetchAbortIgnored=!0)):Y.status.fetchResolved=!0),Re&&!Ve&&!Oe)return W(h.signal.reason);let ut=xe;return X(this,z)[K]===xe&&(Te===void 0?ut.__staleWhileFetching?X(this,z)[K]=ut.__staleWhileFetching:this.delete(x):(Y.status&&(Y.status.fetchUpdated=!0),this.set(x,Te,g.options))),Te},I=Te=>(Y.status&&(Y.status.fetchRejected=!0,Y.status.fetchError=Te),W(Te)),W=Te=>{let{aborted:Oe}=h.signal,Re=Oe&&Y.allowStaleOnFetchAbort,Ve=Re||Y.allowStaleOnFetchRejection,ut=Ve||Y.noDeleteOnFetchRejection,Ze=xe;if(X(this,z)[K]===xe&&(!ut||Ze.__staleWhileFetching===void 0?this.delete(x):Re||(X(this,z)[K]=Ze.__staleWhileFetching)),Ve)return Y.status&&Ze.__staleWhileFetching!==void 0&&(Y.status.returnedStale=!0),Ze.__staleWhileFetching;if(Ze.__returned===Ze)throw Te},ce=(Te,Oe)=>{var Ve;let Re=(Ve=X(this,M))==null?void 0:Ve.call(this,x,y,g);Re&&Re instanceof Promise&&Re.then(ut=>Te(ut===void 0?void 0:ut),Oe),h.signal.addEventListener("abort",()=>{(!Y.ignoreFetchAbort||Y.allowStaleOnFetchAbort)&&(Te(void 0),Y.allowStaleOnFetchAbort&&(Te=ut=>w(ut,!0)))})};Y.status&&(Y.status.fetchDispatched=!0);let xe=new Promise(ce).then(w,I),ke=Object.assign(xe,{__abortController:h,__staleWhileFetching:y,__returned:void 0});return K===void 0?(this.set(x,ke,{...g.options,status:void 0}),K=X(this,D).get(x)):X(this,z)[K]=ke,ke},et=function(x){if(!X(this,de))return!1;let K=x;return!!K&&K instanceof Promise&&K.hasOwnProperty("__staleWhileFetching")&&K.__abortController instanceof i},Oh=function(x,K){X(this,re)[K]=x,X(this,se)[x]=K},_s=function(x){x!==X(this,B)&&(x===X(this,L)?Le(this,L,X(this,se)[x]):Ne(this,O,Oh).call(this,X(this,re)[x],X(this,se)[x]),Ne(this,O,Oh).call(this,X(this,B),x),Le(this,B,x))},U);e.LRUCache=p}),Sn=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.ContainerIterator=e.Container=e.Base=void 0;var t=class{constructor(o=0){this.iteratorType=o}equals(o){return this.o===o.o}};e.ContainerIterator=t;var r=class{constructor(){this.i=0}get length(){return this.i}size(){return this.i}empty(){return this.i===0}};e.Base=r;var n=class extends r{};e.Container=n}),ak=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Sn(),r=class extends t.Base{constructor(o=[]){super(),this.S=[];let i=this;o.forEach(function(s){i.push(s)})}clear(){this.i=0,this.S=[]}push(o){return this.S.push(o),this.i+=1,this.i}pop(){if(this.i!==0)return this.i-=1,this.S.pop()}top(){return this.S[this.i-1]}},n=r;e.default=n}),lk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Sn(),r=class extends t.Base{constructor(o=[]){super(),this.j=0,this.q=[];let i=this;o.forEach(function(s){i.push(s)})}clear(){this.q=[],this.i=this.j=0}push(o){let i=this.q.length;if(this.j/i>.5&&this.j+this.i>=i&&i>4096){let s=this.i;for(let a=0;a<s;++a)this.q[a]=this.q[this.j+a];this.j=0,this.q[this.i]=o}else this.q[this.j+this.i]=o;return++this.i}pop(){if(this.i===0)return;let o=this.q[this.j++];return this.i-=1,o}front(){if(this.i!==0)return this.q[this.j]}},n=r;e.default=n}),uk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Sn(),r=class extends t.Base{constructor(o=[],i=function(a,l){return a>l?-1:a<l?1:0},s=!0){if(super(),this.v=i,Array.isArray(o))this.C=s?[...o]:o;else{this.C=[];let l=this;o.forEach(function(u){l.C.push(u)})}this.i=this.C.length;let a=this.i>>1;for(let l=this.i-1>>1;l>=0;--l)this.k(l,a)}m(o){let i=this.C[o];for(;o>0;){let s=o-1>>1,a=this.C[s];if(this.v(a,i)<=0)break;this.C[o]=a,o=s}this.C[o]=i}k(o,i){let s=this.C[o];for(;o<i;){let a=o<<1|1,l=a+1,u=this.C[a];if(l<this.i&&this.v(u,this.C[l])>0&&(a=l,u=this.C[l]),this.v(u,s)>=0)break;this.C[o]=u,o=a}this.C[o]=s}clear(){this.i=0,this.C.length=0}push(o){this.C.push(o),this.m(this.i),this.i+=1}pop(){if(this.i===0)return;let o=this.C[0],i=this.C.pop();return this.i-=1,this.i&&(this.C[0]=i,this.k(0,this.i>>1)),o}top(){return this.C[0]}find(o){return this.C.indexOf(o)>=0}remove(o){let i=this.C.indexOf(o);return i<0?!1:(i===0?this.pop():i===this.i-1?(this.C.pop(),this.i-=1):(this.C.splice(i,1,this.C.pop()),this.i-=1,this.m(i),this.k(i,this.i>>1)),!0)}updateItem(o){let i=this.C.indexOf(o);return i<0?!1:(this.m(i),this.k(i,this.i>>1),!0)}toArray(){return[...this.C]}},n=r;e.default=n}),dp=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Sn(),r=class extends t.Container{},n=r;e.default=n}),An=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.throwIteratorAccessError=t;function t(){throw new RangeError("Iterator access denied!")}}),kw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.RandomIterator=void 0;var t=Sn(),r=An(),n=class extends t.ContainerIterator{constructor(o,i){super(i),this.o=o,this.iteratorType===0?(this.pre=function(){return this.o===0&&(0,r.throwIteratorAccessError)(),this.o-=1,this},this.next=function(){return this.o===this.container.size()&&(0,r.throwIteratorAccessError)(),this.o+=1,this}):(this.pre=function(){return this.o===this.container.size()-1&&(0,r.throwIteratorAccessError)(),this.o+=1,this},this.next=function(){return this.o===-1&&(0,r.throwIteratorAccessError)(),this.o-=1,this})}get pointer(){return this.container.getElementByPos(this.o)}set pointer(o){this.container.setElementByPos(this.o,o)}};e.RandomIterator=n}),ck=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(dp()),r=kw();function n(a){return a&&a.t?a:{default:a}}var o=class Mw extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new Mw(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(a=[],l=!0){if(super(),Array.isArray(a))this.J=l?[...a]:a,this.i=a.length;else{this.J=[];let u=this;a.forEach(function(c){u.pushBack(c)})}}clear(){this.i=0,this.J.length=0}begin(){return new o(0,this)}end(){return new o(this.i,this)}rBegin(){return new o(this.i-1,this,1)}rEnd(){return new o(-1,this,1)}front(){return this.J[0]}back(){return this.J[this.i-1]}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J[a]}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J.splice(a,1),this.i-=1,this.i}eraseElementByValue(a){let l=0;for(let u=0;u<this.i;++u)this.J[u]!==a&&(this.J[l++]=this.J[u]);return this.i=this.J.length=l,this.i}eraseElementByIterator(a){let l=a.o;return a=a.next(),this.eraseElementByPos(l),a}pushBack(a){return this.J.push(a),this.i+=1,this.i}popBack(){if(this.i!==0)return this.i-=1,this.J.pop()}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;this.J[a]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;return this.J.splice(a,0,...new Array(u).fill(l)),this.i+=u,this.i}find(a){for(let l=0;l<this.i;++l)if(this.J[l]===a)return new o(l,this);return this.end()}reverse(){this.J.reverse()}unique(){let a=1;for(let l=1;l<this.i;++l)this.J[l]!==this.J[l-1]&&(this.J[a++]=this.J[l]);return this.i=this.J.length=a,this.i}sort(a){this.J.sort(a)}forEach(a){for(let l=0;l<this.i;++l)a(this.J[l],l,this)}[Symbol.iterator](){return(function*(){yield*this.J}).bind(this)()}},s=i;e.default=s}),fk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(dp()),r=Sn(),n=An();function o(l){return l&&l.t?l:{default:l}}var i=class Nw extends r.ContainerIterator{constructor(u,c,d,p){super(p),this.o=u,this.h=c,this.container=d,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l}set pointer(u){this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.l=u}copy(){return new Nw(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[]){super(),this.h={},this.p=this._=this.h.L=this.h.B=this.h;let u=this;l.forEach(function(c){u.pushBack(c)})}V(l){let{L:u,B:c}=l;u.B=c,c.L=u,l===this.p&&(this.p=c),l===this._&&(this._=u),this.i-=1}G(l,u){let c=u.B,d={l,L:u,B:c};u.B=d,c.L=d,u===this.h&&(this.p=d),c===this.h&&(this._=d),this.i+=1}clear(){this.i=0,this.p=this._=this.h.L=this.h.B=this.h}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.p.l}back(){return this._.l}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return u.l}eraseElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return this.V(u),this.i}eraseElementByValue(l){let u=this.p;for(;u!==this.h;)u.l===l&&this.V(u),u=u.B;return this.i}eraseElementByIterator(l){let u=l.o;return u===this.h&&(0,n.throwIteratorAccessError)(),l=l.next(),this.V(u),l}pushBack(l){return this.G(l,this._),this.i}popBack(){if(this.i===0)return;let l=this._.l;return this.V(this._),l}pushFront(l){return this.G(l,this.h),this.i}popFront(){if(this.i===0)return;let l=this.p.l;return this.V(this.p),l}setElementByPos(l,u){if(l<0||l>this.i-1)throw new RangeError;let c=this.p;for(;l--;)c=c.B;c.l=u}insert(l,u,c=1){if(l<0||l>this.i)throw new RangeError;if(c<=0)return this.i;if(l===0)for(;c--;)this.pushFront(u);else if(l===this.i)for(;c--;)this.pushBack(u);else{let d=this.p;for(let m=1;m<l;++m)d=d.B;let p=d.B;for(this.i+=c;c--;)d.B={l:u,L:d},d.B.L=d,d=d.B;d.B=p,p.L=d}return this.i}find(l){let u=this.p;for(;u!==this.h;){if(u.l===l)return new i(u,this.h,this);u=u.B}return this.end()}reverse(){if(this.i<=1)return;let l=this.p,u=this._,c=0;for(;c<<1<this.i;){let d=l.l;l.l=u.l,u.l=d,l=l.B,u=u.L,c+=1}}unique(){if(this.i<=1)return this.i;let l=this.p;for(;l!==this.h;){let u=l;for(;u.B!==this.h&&u.l===u.B.l;)u=u.B,this.i-=1;l.B=u.B,l.B.L=l,l=l.B}return this.i}sort(l){if(this.i<=1)return;let u=[];this.forEach(function(d){u.push(d)}),u.sort(l);let c=this.p;u.forEach(function(d){c.l=d,c=c.B})}merge(l){let u=this;if(this.i===0)l.forEach(function(c){u.pushBack(c)});else{let c=this.p;l.forEach(function(d){for(;c!==u.h&&c.l<=d;)c=c.B;u.G(d,c.L)})}return this.i}forEach(l){let u=this.p,c=0;for(;u!==this.h;)l(u.l,c++,this),u=u.B}[Symbol.iterator](){return(function*(){if(this.i===0)return;let l=this.p;for(;l!==this.h;)yield l.l,l=l.B}).bind(this)()}},a=s;e.default=a}),hk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=n(dp()),r=kw();function n(a){return a&&a.t?a:{default:a}}var o=class Pw extends r.RandomIterator{constructor(l,u,c){super(l,c),this.container=u}copy(){return new Pw(this.o,this.container,this.iteratorType)}},i=class extends t.default{constructor(a=[],l=4096){super(),this.j=0,this.D=0,this.R=0,this.N=0,this.P=0,this.A=[];let u=(()=>{if(typeof a.length=="number")return a.length;if(typeof a.size=="number")return a.size;if(typeof a.size=="function")return a.size();throw new TypeError("Cannot get the length or size of the container")})();this.F=l,this.P=Math.max(Math.ceil(u/this.F),1);for(let p=0;p<this.P;++p)this.A.push(new Array(this.F));let c=Math.ceil(u/this.F);this.j=this.R=(this.P>>1)-(c>>1),this.D=this.N=this.F-u%this.F>>1;let d=this;a.forEach(function(p){d.pushBack(p)})}T(){let a=[],l=Math.max(this.P>>1,1);for(let u=0;u<l;++u)a[u]=new Array(this.F);for(let u=this.j;u<this.P;++u)a[a.length]=this.A[u];for(let u=0;u<this.R;++u)a[a.length]=this.A[u];a[a.length]=[...this.A[this.R]],this.j=l,this.R=a.length-1;for(let u=0;u<l;++u)a[a.length]=new Array(this.F);this.A=a,this.P=a.length}O(a){let l=this.D+a+1,u=l%this.F,c=u-1,d=this.j+(l-u)/this.F;return u===0&&(d-=1),d%=this.P,c<0&&(c+=this.F),{curNodeBucketIndex:d,curNodePointerIndex:c}}clear(){this.A=[new Array(this.F)],this.P=1,this.j=this.R=this.i=0,this.D=this.N=this.F>>1}begin(){return new o(0,this)}end(){return new o(this.i,this)}rBegin(){return new o(this.i-1,this,1)}rEnd(){return new o(-1,this,1)}front(){if(this.i!==0)return this.A[this.j][this.D]}back(){if(this.i!==0)return this.A[this.R][this.N]}pushBack(a){return this.i&&(this.N<this.F-1?this.N+=1:this.R<this.P-1?(this.R+=1,this.N=0):(this.R=0,this.N=0),this.R===this.j&&this.N===this.D&&this.T()),this.i+=1,this.A[this.R][this.N]=a,this.i}popBack(){if(this.i===0)return;let a=this.A[this.R][this.N];return this.i!==1&&(this.N>0?this.N-=1:this.R>0?(this.R-=1,this.N=this.F-1):(this.R=this.P-1,this.N=this.F-1)),this.i-=1,a}pushFront(a){return this.i&&(this.D>0?this.D-=1:this.j>0?(this.j-=1,this.D=this.F-1):(this.j=this.P-1,this.D=this.F-1),this.j===this.R&&this.D===this.N&&this.T()),this.i+=1,this.A[this.j][this.D]=a,this.i}popFront(){if(this.i===0)return;let a=this.A[this.j][this.D];return this.i!==1&&(this.D<this.F-1?this.D+=1:this.j<this.P-1?(this.j+=1,this.D=0):(this.j=0,this.D=0)),this.i-=1,a}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.A[l][u]}setElementByPos(a,l){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:u,curNodePointerIndex:c}=this.O(a);this.A[u][c]=l}insert(a,l,u=1){if(a<0||a>this.i)throw new RangeError;if(a===0)for(;u--;)this.pushFront(l);else if(a===this.i)for(;u--;)this.pushBack(l);else{let c=[];for(let d=a;d<this.i;++d)c.push(this.getElementByPos(d));this.cut(a-1);for(let d=0;d<u;++d)this.pushBack(l);for(let d=0;d<c.length;++d)this.pushBack(c[d])}return this.i}cut(a){if(a<0)return this.clear(),0;let{curNodeBucketIndex:l,curNodePointerIndex:u}=this.O(a);return this.R=l,this.N=u,this.i=a+1,this.i}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;if(a===0)this.popFront();else if(a===this.i-1)this.popBack();else{let l=[];for(let c=a+1;c<this.i;++c)l.push(this.getElementByPos(c));this.cut(a),this.popBack();let u=this;l.forEach(function(c){u.pushBack(c)})}return this.i}eraseElementByValue(a){if(this.i===0)return 0;let l=[];for(let c=0;c<this.i;++c){let d=this.getElementByPos(c);d!==a&&l.push(d)}let u=l.length;for(let c=0;c<u;++c)this.setElementByPos(c,l[c]);return this.cut(u-1)}eraseElementByIterator(a){let l=a.o;return this.eraseElementByPos(l),a=a.next(),a}find(a){for(let l=0;l<this.i;++l)if(this.getElementByPos(l)===a)return new o(l,this);return this.end()}reverse(){let a=0,l=this.i-1;for(;a<l;){let u=this.getElementByPos(a);this.setElementByPos(a,this.getElementByPos(l)),this.setElementByPos(l,u),a+=1,l-=1}}unique(){if(this.i<=1)return this.i;let a=1,l=this.getElementByPos(0);for(let u=1;u<this.i;++u){let c=this.getElementByPos(u);c!==l&&(l=c,this.setElementByPos(a++,c))}for(;this.i>a;)this.popBack();return this.i}sort(a){let l=[];for(let u=0;u<this.i;++u)l.push(this.getElementByPos(u));l.sort(a);for(let u=0;u<this.i;++u)this.setElementByPos(u,l[u])}shrinkToFit(){if(this.i===0)return;let a=[];this.forEach(function(l){a.push(l)}),this.P=Math.max(Math.ceil(this.i/this.F),1),this.i=this.j=this.R=this.D=this.N=0,this.A=[];for(let l=0;l<this.P;++l)this.A.push(new Array(this.F));for(let l=0;l<a.length;++l)this.pushBack(a[l])}forEach(a){for(let l=0;l<this.i;++l)a(this.getElementByPos(l),l,this)}[Symbol.iterator](){return(function*(){for(let a=0;a<this.i;++a)yield this.getElementByPos(a)}).bind(this)()}},s=i;e.default=s}),dk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.TreeNodeEnableIndex=e.TreeNode=void 0;var t=class{constructor(n,o){this.ee=1,this.u=void 0,this.l=void 0,this.U=void 0,this.W=void 0,this.tt=void 0,this.u=n,this.l=o}L(){let n=this;if(n.ee===1&&n.tt.tt===n)n=n.W;else if(n.U)for(n=n.U;n.W;)n=n.W;else{let o=n.tt;for(;o.U===n;)n=o,o=n.tt;n=o}return n}B(){let n=this;if(n.W){for(n=n.W;n.U;)n=n.U;return n}else{let o=n.tt;for(;o.W===n;)n=o,o=n.tt;return n.W!==o?o:n}}te(){let n=this.tt,o=this.W,i=o.U;return n.tt===this?n.tt=o:n.U===this?n.U=o:n.W=o,o.tt=n,o.U=this,this.tt=o,this.W=i,i&&(i.tt=this),o}se(){let n=this.tt,o=this.U,i=o.W;return n.tt===this?n.tt=o:n.U===this?n.U=o:n.W=o,o.tt=n,o.W=this,this.tt=o,this.U=i,i&&(i.tt=this),o}};e.TreeNode=t;var r=class extends t{constructor(){super(...arguments),this.rt=1}te(){let n=super.te();return this.ie(),n.ie(),n}se(){let n=super.se();return this.ie(),n.ie(),n}ie(){this.rt=1,this.U&&(this.rt+=this.U.rt),this.W&&(this.rt+=this.W.rt)}};e.TreeNodeEnableIndex=r}),Lw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=dk(),r=Sn(),n=An(),o=class extends r.Container{constructor(s=function(l,u){return l<u?-1:l>u?1:0},a=!1){super(),this.Y=void 0,this.v=s,a?(this.re=t.TreeNodeEnableIndex,this.M=function(l,u,c){let d=this.ne(l,u,c);if(d){let p=d.tt;for(;p!==this.h;)p.rt+=1,p=p.tt;let m=this.he(d);if(m){let{parentNode:_,grandParent:b,curNode:T}=m;_.ie(),b.ie(),T.ie()}}return this.i},this.V=function(l){let u=this.fe(l);for(;u!==this.h;)u.rt-=1,u=u.tt}):(this.re=t.TreeNode,this.M=function(l,u,c){let d=this.ne(l,u,c);return d&&this.he(d),this.i},this.V=this.fe),this.h=new this.re}X(s,a){let l=this.h;for(;s;){let u=this.v(s.u,a);if(u<0)s=s.W;else if(u>0)l=s,s=s.U;else return s}return l}Z(s,a){let l=this.h;for(;s;)this.v(s.u,a)<=0?s=s.W:(l=s,s=s.U);return l}$(s,a){let l=this.h;for(;s;){let u=this.v(s.u,a);if(u<0)l=s,s=s.W;else if(u>0)s=s.U;else return s}return l}rr(s,a){let l=this.h;for(;s;)this.v(s.u,a)<0?(l=s,s=s.W):s=s.U;return l}ue(s){for(;;){let a=s.tt;if(a===this.h)return;if(s.ee===1){s.ee=0;return}if(s===a.U){let l=a.W;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.te():a.te();else if(l.W&&l.W.ee===1){l.ee=a.ee,a.ee=0,l.W.ee=0,a===this.Y?this.Y=a.te():a.te();return}else l.U&&l.U.ee===1?(l.ee=1,l.U.ee=0,l.se()):(l.ee=1,s=a)}else{let l=a.U;if(l.ee===1)l.ee=0,a.ee=1,a===this.Y?this.Y=a.se():a.se();else if(l.U&&l.U.ee===1){l.ee=a.ee,a.ee=0,l.U.ee=0,a===this.Y?this.Y=a.se():a.se();return}else l.W&&l.W.ee===1?(l.ee=1,l.W.ee=0,l.te()):(l.ee=1,s=a)}}}fe(s){if(this.i===1)return this.clear(),this.h;let a=s;for(;a.U||a.W;){if(a.W)for(a=a.W;a.U;)a=a.U;else a=a.U;[s.u,a.u]=[a.u,s.u],[s.l,a.l]=[a.l,s.l],s=a}this.h.U===a?this.h.U=a.tt:this.h.W===a&&(this.h.W=a.tt),this.ue(a);let l=a.tt;return a===l.U?l.U=void 0:l.W=void 0,this.i-=1,this.Y.ee=0,l}oe(s,a){return s===void 0?!1:this.oe(s.U,a)||a(s)?!0:this.oe(s.W,a)}he(s){for(;;){let a=s.tt;if(a.ee===0)return;let l=a.tt;if(a===l.U){let u=l.W;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,s=l;continue}else if(s===a.W){if(s.ee=0,s.U&&(s.U.tt=a),s.W&&(s.W.tt=l),a.W=s.U,l.U=s.W,s.U=a,s.W=l,l===this.Y)this.Y=s,this.h.tt=s;else{let c=l.tt;c.U===l?c.U=s:c.W=s}return s.tt=l.tt,a.tt=s,l.tt=s,l.ee=1,{parentNode:a,grandParent:l,curNode:s}}else a.ee=0,l===this.Y?this.Y=l.se():l.se(),l.ee=1}else{let u=l.U;if(u&&u.ee===1){if(u.ee=a.ee=0,l===this.Y)return;l.ee=1,s=l;continue}else if(s===a.U){if(s.ee=0,s.U&&(s.U.tt=l),s.W&&(s.W.tt=a),l.W=s.U,a.U=s.W,s.U=l,s.W=a,l===this.Y)this.Y=s,this.h.tt=s;else{let c=l.tt;c.U===l?c.U=s:c.W=s}return s.tt=l.tt,a.tt=s,l.tt=s,l.ee=1,{parentNode:a,grandParent:l,curNode:s}}else a.ee=0,l===this.Y?this.Y=l.te():l.te(),l.ee=1}return}}ne(s,a,l){if(this.Y===void 0){this.i+=1,this.Y=new this.re(s,a),this.Y.ee=0,this.Y.tt=this.h,this.h.tt=this.Y,this.h.U=this.Y,this.h.W=this.Y;return}let u,c=this.h.U,d=this.v(c.u,s);if(d===0){c.l=a;return}else if(d>0)c.U=new this.re(s,a),c.U.tt=c,u=c.U,this.h.U=u;else{let p=this.h.W,m=this.v(p.u,s);if(m===0){p.l=a;return}else if(m<0)p.W=new this.re(s,a),p.W.tt=p,u=p.W,this.h.W=u;else{if(l!==void 0){let _=l.o;if(_!==this.h){let b=this.v(_.u,s);if(b===0){_.l=a;return}else if(b>0){let T=_.L(),k=this.v(T.u,s);if(k===0){T.l=a;return}else k<0&&(u=new this.re(s,a),T.W===void 0?(T.W=u,u.tt=T):(_.U=u,u.tt=_))}}}if(u===void 0)for(u=this.Y;;){let _=this.v(u.u,s);if(_>0){if(u.U===void 0){u.U=new this.re(s,a),u.U.tt=u,u=u.U;break}u=u.U}else if(_<0){if(u.W===void 0){u.W=new this.re(s,a),u.W.tt=u,u=u.W;break}u=u.W}else{u.l=a;return}}}}return this.i+=1,u}I(s,a){for(;s;){let l=this.v(s.u,a);if(l<0)s=s.W;else if(l>0)s=s.U;else return s}return s||this.h}clear(){this.i=0,this.Y=void 0,this.h.tt=void 0,this.h.U=this.h.W=void 0}updateKeyByIterator(s,a){let l=s.o;if(l===this.h&&(0,n.throwIteratorAccessError)(),this.i===1)return l.u=a,!0;if(l===this.h.U)return this.v(l.B().u,a)>0?(l.u=a,!0):!1;if(l===this.h.W)return this.v(l.L().u,a)<0?(l.u=a,!0):!1;let u=l.L().u;if(this.v(u,a)>=0)return!1;let c=l.B().u;return this.v(c,a)<=0?!1:(l.u=a,!0)}eraseElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a=0,l=this;return this.oe(this.Y,function(u){return s===a?(l.V(u),!0):(a+=1,!1)}),this.i}eraseElementByKey(s){if(this.i===0)return!1;let a=this.I(this.Y,s);return a===this.h?!1:(this.V(a),!0)}eraseElementByIterator(s){let a=s.o;a===this.h&&(0,n.throwIteratorAccessError)();let l=a.W===void 0;return s.iteratorType===0?l&&s.next():(!l||a.U===void 0)&&s.next(),this.V(a),s}forEach(s){let a=0;for(let l of this)s(l,a++,this)}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a,l=0;for(let u of this){if(l===s){a=u;break}l+=1}return a}getHeight(){if(this.i===0)return 0;let s=function(a){return a?Math.max(s(a.U),s(a.W))+1:0};return s(this.Y)}},i=o;e.default=i}),Dw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Sn(),r=An(),n=class extends t.ContainerIterator{constructor(i,s,a){super(a),this.o=i,this.h=s,this.iteratorType===0?(this.pre=function(){return this.o===this.h.U&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this}):(this.pre=function(){return this.o===this.h.W&&(0,r.throwIteratorAccessError)(),this.o=this.o.B(),this},this.next=function(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o=this.o.L(),this})}get index(){let i=this.o,s=this.h.tt;if(i===this.h)return s?s.rt-1:0;let a=0;for(i.U&&(a+=i.U.rt);i!==s;){let l=i.tt;i===l.W&&(a+=1,l.U&&(a+=l.U.rt)),i=l}return a}},o=n;e.default=o}),pk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(Lw()),r=o(Dw()),n=An();function o(l){return l&&l.t?l:{default:l}}var i=class Bw extends r.default{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o.u}copy(){return new Bw(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[],u,c){super(u,c);let d=this;l.forEach(function(p){d.insert(p)})}*K(l){l!==void 0&&(yield*this.K(l.U),yield l.u,yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){return this.h.U?this.h.U.u:void 0}back(){return this.h.W?this.h.W.u:void 0}insert(l,u){return this.M(l,void 0,u)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}union(l){let u=this;return l.forEach(function(c){u.insert(c)}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=s;e.default=a}),gk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=o(Lw()),r=o(Dw()),n=An();function o(l){return l&&l.t?l:{default:l}}var i=class $w extends r.default{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,d){if(d==="0")return u.o.u;if(d==="1")return u.o.l},set(c,d,p){if(d!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new $w(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.default{constructor(l=[],u,c){super(u,c);let d=this;l.forEach(function(p){d.setElement(p[0],p[1])})}*K(l){l!==void 0&&(yield*this.K(l.U),yield[l.u,l.l],yield*this.K(l.W))}begin(){return new i(this.h.U||this.h,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this.h.W||this.h,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i===0)return;let l=this.h.U;return[l.u,l.l]}back(){if(this.i===0)return;let l=this.h.W;return[l.u,l.l]}lowerBound(l){let u=this.X(this.Y,l);return new i(u,this.h,this)}upperBound(l){let u=this.Z(this.Y,l);return new i(u,this.h,this)}reverseLowerBound(l){let u=this.$(this.Y,l);return new i(u,this.h,this)}reverseUpperBound(l){let u=this.rr(this.Y,l);return new i(u,this.h,this)}setElement(l,u,c){return this.M(l,u,c)}find(l){let u=this.I(this.Y,l);return new i(u,this.h,this)}getElementByKey(l){return this.I(this.Y,l).l}union(l){let u=this;return l.forEach(function(c){u.setElement(c[0],c[1])}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=s;e.default=a}),Uw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=t;function t(r){let n=typeof r;return n==="object"&&r!==null||n==="function"}}),Fw=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.HashContainerIterator=e.HashContainer=void 0;var t=Sn(),r=o(Uw()),n=An();function o(a){return a&&a.t?a:{default:a}}var i=class extends t.ContainerIterator{constructor(a,l,u){super(u),this.o=a,this.h=l,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,n.throwIteratorAccessError)(),this.o=this.o.L,this})}};e.HashContainerIterator=i;var s=class extends t.Container{constructor(){super(),this.H=[],this.g={},this.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(this.g,null),this.h={},this.h.L=this.h.B=this.p=this._=this.h}V(a){let{L:l,B:u}=a;l.B=u,u.L=l,a===this.p&&(this.p=u),a===this._&&(this._=l),this.i-=1}M(a,l,u){u===void 0&&(u=(0,r.default)(a));let c;if(u){let d=a[this.HASH_TAG];if(d!==void 0)return this.H[d].l=l,this.i;Object.defineProperty(a,this.HASH_TAG,{value:this.H.length,configurable:!0}),c={u:a,l,L:this._,B:this.h},this.H.push(c)}else{let d=this.g[a];if(d)return d.l=l,this.i;c={u:a,l,L:this._,B:this.h},this.g[a]=c}return this.i===0?(this.p=c,this.h.B=c):this._.B=c,this._=c,this.h.L=c,++this.i}I(a,l){if(l===void 0&&(l=(0,r.default)(a)),l){let u=a[this.HASH_TAG];return u===void 0?this.h:this.H[u]}else return this.g[a]||this.h}clear(){let a=this.HASH_TAG;this.H.forEach(function(l){delete l.u[a]}),this.H=[],this.g={},Object.setPrototypeOf(this.g,null),this.i=0,this.p=this._=this.h.L=this.h.B=this.h}eraseElementByKey(a,l){let u;if(l===void 0&&(l=(0,r.default)(a)),l){let c=a[this.HASH_TAG];if(c===void 0)return!1;delete a[this.HASH_TAG],u=this.H[c],delete this.H[c]}else{if(u=this.g[a],u===void 0)return!1;delete this.g[a]}return this.V(u),!0}eraseElementByIterator(a){let l=a.o;return l===this.h&&(0,n.throwIteratorAccessError)(),this.V(l),a.next()}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let l=this.p;for(;a--;)l=l.B;return this.V(l),this.i}};e.HashContainer=s}),mk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Fw(),r=An(),n=class jw extends t.HashContainerIterator{constructor(a,l,u,c){super(a,l,c),this.container=u}get pointer(){return this.o===this.h&&(0,r.throwIteratorAccessError)(),this.o.u}copy(){return new jw(this.o,this.h,this.container,this.iteratorType)}},o=class extends t.HashContainer{constructor(s=[]){super();let a=this;s.forEach(function(l){a.insert(l)})}begin(){return new n(this.p,this.h,this)}end(){return new n(this.h,this.h,this)}rBegin(){return new n(this._,this.h,this,1)}rEnd(){return new n(this.h,this.h,this,1)}front(){return this.p.u}back(){return this._.u}insert(s,a){return this.M(s,void 0,a)}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let a=this.p;for(;s--;)a=a.B;return a.u}find(s,a){let l=this.I(s,a);return new n(l,this.h,this)}forEach(s){let a=0,l=this.p;for(;l!==this.h;)s(l.u,a++,this),l=l.B}[Symbol.iterator](){return(function*(){let s=this.p;for(;s!==this.h;)yield s.u,s=s.B}).bind(this)()}},i=o;e.default=i}),yk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),e.default=void 0;var t=Fw(),r=o(Uw()),n=An();function o(l){return l&&l.t?l:{default:l}}var i=class Ww extends t.HashContainerIterator{constructor(u,c,d,p){super(u,c,p),this.container=d}get pointer(){this.o===this.h&&(0,n.throwIteratorAccessError)();let u=this;return new Proxy([],{get(c,d){if(d==="0")return u.o.u;if(d==="1")return u.o.l},set(c,d,p){if(d!=="1")throw new TypeError("props must be 1");return u.o.l=p,!0}})}copy(){return new Ww(this.o,this.h,this.container,this.iteratorType)}},s=class extends t.HashContainer{constructor(l=[]){super();let u=this;l.forEach(function(c){u.setElement(c[0],c[1])})}begin(){return new i(this.p,this.h,this)}end(){return new i(this.h,this.h,this)}rBegin(){return new i(this._,this.h,this,1)}rEnd(){return new i(this.h,this.h,this,1)}front(){if(this.i!==0)return[this.p.u,this.p.l]}back(){if(this.i!==0)return[this._.u,this._.l]}setElement(l,u,c){return this.M(l,u,c)}getElementByKey(l,u){if(u===void 0&&(u=(0,r.default)(l)),u){let d=l[this.HASH_TAG];return d!==void 0?this.H[d].l:void 0}let c=this.g[l];return c?c.l:void 0}getElementByPos(l){if(l<0||l>this.i-1)throw new RangeError;let u=this.p;for(;l--;)u=u.B;return[u.u,u.l]}find(l,u){let c=this.I(l,u);return new i(c,this.h,this)}forEach(l){let u=0,c=this.p;for(;c!==this.h;)l([c.u,c.l],u++,this),c=c.B}[Symbol.iterator](){return(function*(){let l=this.p;for(;l!==this.h;)yield[l.u,l.l],l=l.B}).bind(this)()}},a=s;e.default=a}),_k=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"t",{value:!0}),Object.defineProperty(e,"Deque",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"HashMap",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"HashSet",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"LinkList",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"OrderedMap",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"OrderedSet",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"PriorityQueue",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"Queue",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"Stack",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"Vector",{enumerable:!0,get:function(){return o.default}});var t=d(ak()),r=d(lk()),n=d(uk()),o=d(ck()),i=d(fk()),s=d(hk()),a=d(pk()),l=d(gk()),u=d(mk()),c=d(yk());function d(p){return p&&p.t?p:{default:p}}}),bk=Ae((e,t)=>{_e(),we(),be();var r=_k().OrderedSet,n=pn()("number-allocator:trace"),o=pn()("number-allocator:error");function i(a,l){this.low=a,this.high=l}i.prototype.equals=function(a){return this.low===a.low&&this.high===a.high},i.prototype.compare=function(a){return this.low<a.low&&this.high<a.low?-1:a.low<this.low&&a.high<this.low?1:0};function s(a,l){if(!(this instanceof s))return new s(a,l);this.min=a,this.max=l,this.ss=new r([],(u,c)=>u.compare(c)),n("Create"),this.clear()}s.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low},s.prototype.alloc=function(){if(this.ss.size()===0)return n("alloc():empty"),null;let a=this.ss.begin(),l=a.pointer.low,u=a.pointer.high,c=l;return c+1<=u?this.ss.updateKeyByIterator(a,new i(l+1,u)):this.ss.eraseElementByPos(0),n("alloc():"+c),c},s.prototype.use=function(a){let l=new i(a,a),u=this.ss.lowerBound(l);if(!u.equals(this.ss.end())){let c=u.pointer.low,d=u.pointer.high;return u.pointer.equals(l)?(this.ss.eraseElementByIterator(u),n("use():"+a),!0):c>a?!1:c===a?(this.ss.updateKeyByIterator(u,new i(c+1,d)),n("use():"+a),!0):d===a?(this.ss.updateKeyByIterator(u,new i(c,d-1)),n("use():"+a),!0):(this.ss.updateKeyByIterator(u,new i(a+1,d)),this.ss.insert(new i(c,a-1)),n("use():"+a),!0)}return n("use():failed"),!1},s.prototype.free=function(a){if(a<this.min||a>this.max){o("free():"+a+" is out of range");return}let l=new i(a,a),u=this.ss.upperBound(l);if(u.equals(this.ss.end())){if(u.equals(this.ss.begin())){this.ss.insert(l);return}u.pre();let c=u.pointer.high;u.pointer.high+1===a?this.ss.updateKeyByIterator(u,new i(c,a)):this.ss.insert(l)}else if(u.equals(this.ss.begin()))if(a+1===u.pointer.low){let c=u.pointer.high;this.ss.updateKeyByIterator(u,new i(a,c))}else this.ss.insert(l);else{let c=u.pointer.low,d=u.pointer.high;u.pre();let p=u.pointer.low;u.pointer.high+1===a?a+1===c?(this.ss.eraseElementByIterator(u),this.ss.updateKeyByIterator(u,new i(p,d))):this.ss.updateKeyByIterator(u,new i(p,a)):a+1===c?(this.ss.eraseElementByIterator(u.next()),this.ss.insert(new i(a,d))):this.ss.insert(l)}n("free():"+a)},s.prototype.clear=function(){n("clear()"),this.ss.clear(),this.ss.insert(new i(this.min,this.max))},s.prototype.intervalCount=function(){return this.ss.size()},s.prototype.dump=function(){console.log("length:"+this.ss.size());for(let a of this.ss)console.log(a)},t.exports=s}),Hw=Ae((e,t)=>{_e(),we(),be();var r=bk();t.exports.NumberAllocator=r}),wk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=sk(),r=Hw(),n=class{constructor(o){o>0&&(this.aliasToTopic=new t.LRUCache({max:o}),this.topicToAlias={},this.numberAllocator=new r.NumberAllocator(1,o),this.max=o,this.length=0)}put(o,i){if(i===0||i>this.max)return!1;let s=this.aliasToTopic.get(i);return s&&delete this.topicToAlias[s],this.aliasToTopic.set(i,o),this.topicToAlias[o]=i,this.numberAllocator.use(i),this.length=this.aliasToTopic.size,!0}getTopicByAlias(o){return this.aliasToTopic.get(o)}getAliasByTopic(o){let i=this.topicToAlias[o];return typeof i<"u"&&this.aliasToTopic.get(i),i}clear(){this.aliasToTopic.clear(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0}getLruAlias(){return this.numberAllocator.firstVacant()||[...this.aliasToTopic.keys()][this.aliasToTopic.size-1]}};e.default=n}),vk=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(e,"__esModule",{value:!0});var r=lu(),n=t(wk()),o=Qo(),i=(s,a)=>{s.log("_handleConnack");let{options:l}=s,u=l.protocolVersion===5?a.reasonCode:a.returnCode;if(clearTimeout(s.connackTimer),delete s.topicAliasSend,a.properties){if(a.properties.topicAliasMaximum){if(a.properties.topicAliasMaximum>65535){s.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}a.properties.topicAliasMaximum>0&&(s.topicAliasSend=new n.default(a.properties.topicAliasMaximum))}a.properties.serverKeepAlive&&l.keepalive&&(l.keepalive=a.properties.serverKeepAlive),a.properties.maximumPacketSize&&(l.properties||(l.properties={}),l.properties.maximumPacketSize=a.properties.maximumPacketSize)}if(u===0)s.reconnecting=!1,s._onConnect(a);else if(u>0){let c=new o.ErrorWithReasonCode(`Connection refused: ${r.ReasonCodes[u]}`,u);s.emit("error",c)}};e.default=i}),Ek=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=(r,n,o)=>{r.log("handling pubrel packet");let i=typeof o<"u"?o:r.noop,{messageId:s}=n,a={cmd:"pubcomp",messageId:s};r.incomingStore.get(n,(l,u)=>{l?r._sendPacket(a,i):(r.emit("message",u.topic,u.payload,u),r.handleMessage(u,c=>{if(c)return i(c);r.incomingStore.del(u,r.noop),r._sendPacket(a,i)}))})};e.default=t}),Sk=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(nk()),n=t(ok()),o=t(vk()),i=t(lu()),s=t(Ek()),a=(l,u,c)=>{let{options:d}=l;if(d.protocolVersion===5&&d.properties&&d.properties.maximumPacketSize&&d.properties.maximumPacketSize<u.length)return l.emit("error",new Error(`exceeding packets size ${u.cmd}`)),l.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),l;switch(l.log("_handlePacket :: emitting packetreceive"),l.emit("packetreceive",u),u.cmd){case"publish":(0,r.default)(l,u,c);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":l.reschedulePing(),(0,i.default)(l,u),c();break;case"pubrel":l.reschedulePing(),(0,s.default)(l,u,c);break;case"connack":(0,o.default)(l,u),c();break;case"auth":l.reschedulePing(),(0,n.default)(l,u),c();break;case"pingresp":l.log("_handlePacket :: received pingresp"),l.reschedulePing(!0),c();break;case"disconnect":l.emit("disconnect",u),c();break;default:l.log("_handlePacket :: unknown command"),c();break}};e.default=a}),Ak=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(e,"__esModule",{value:!0}),e.TypedEventEmitter=void 0;var r=t((Go(),Ge(Wi))),n=Qo(),o=class{};e.TypedEventEmitter=o,(0,n.applyMixin)(o,r.default)}),uu=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.isReactNativeBrowser=e.isWebWorker=void 0;var t=()=>{var i;return typeof window<"u"?typeof navigator<"u"&&((i=navigator.userAgent)===null||i===void 0?void 0:i.toLowerCase().indexOf(" electron/"))>-1&&We!=null&&We.versions?!Object.prototype.hasOwnProperty.call(We.versions,"electron"):typeof window.document<"u":!1},r=()=>{var i,s;return!!(typeof self=="object"&&!((s=(i=self==null?void 0:self.constructor)===null||i===void 0?void 0:i.name)===null||s===void 0)&&s.includes("WorkerGlobalScope"))},n=()=>typeof navigator<"u"&&navigator.product==="ReactNative",o=t()||r()||n();e.isWebWorker=r(),e.isReactNativeBrowser=n(),e.default=o}),Tk=Ae((e,t)=>{_e(),we(),be(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.fastUniqueNumbers={}))}(e,function(r){var n=function(m){return function(_){var b=m(_);return _.add(b),b}},o=function(m){return function(_,b){return m.set(_,b),b}},i=Number.MAX_SAFE_INTEGER===void 0?9007199254740991:Number.MAX_SAFE_INTEGER,s=536870912,a=s*2,l=function(m,_){return function(b){var T=_.get(b),k=T===void 0?b.size:T<a?T+1:0;if(!b.has(k))return m(b,k);if(b.size<s){for(;b.has(k);)k=Math.floor(Math.random()*a);return m(b,k)}if(b.size>i)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;b.has(k);)k=Math.floor(Math.random()*i);return m(b,k)}},u=new WeakMap,c=o(u),d=l(c,u),p=n(d);r.addUniqueNumber=p,r.generateUniqueNumber=d})}),xk=Ae((e,t)=>{_e(),we(),be(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,Tk()):typeof define=="function"&&define.amd?define(["exports","fast-unique-numbers"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimersBroker={},r.fastUniqueNumbers))}(e,function(r,n){var o=function(a){return a.method!==void 0&&a.method==="call"},i=function(a){return a.error===null&&typeof a.id=="number"},s=function(a){var l=new Map([[0,function(){}]]),u=new Map([[0,function(){}]]),c=new Map,d=new Worker(a);d.addEventListener("message",function(T){var k=T.data;if(o(k)){var C=k.params,A=C.timerId,M=C.timerType;if(M==="interval"){var $=l.get(A);if(typeof $=="number"){var R=c.get($);if(R===void 0||R.timerId!==A||R.timerType!==M)throw new Error("The timer is in an undefined state.")}else if(typeof $<"u")$();else throw new Error("The timer is in an undefined state.")}else if(M==="timeout"){var D=u.get(A);if(typeof D=="number"){var j=c.get(D);if(j===void 0||j.timerId!==A||j.timerType!==M)throw new Error("The timer is in an undefined state.")}else if(typeof D<"u")D(),u.delete(A);else throw new Error("The timer is in an undefined state.")}}else if(i(k)){var z=k.id,se=c.get(z);if(se===void 0)throw new Error("The timer is in an undefined state.");var re=se.timerId,L=se.timerType;c.delete(z),L==="interval"?l.delete(re):u.delete(re)}else{var B=k.error.message;throw new Error(B)}});var p=function(T){var k=n.generateUniqueNumber(c);c.set(k,{timerId:T,timerType:"interval"}),l.set(T,k),d.postMessage({id:k,method:"clear",params:{timerId:T,timerType:"interval"}})},m=function(T){var k=n.generateUniqueNumber(c);c.set(k,{timerId:T,timerType:"timeout"}),u.set(T,k),d.postMessage({id:k,method:"clear",params:{timerId:T,timerType:"timeout"}})},_=function(T){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,C=n.generateUniqueNumber(l);return l.set(C,function(){T(),typeof l.get(C)=="function"&&d.postMessage({id:null,method:"set",params:{delay:k,now:performance.now(),timerId:C,timerType:"interval"}})}),d.postMessage({id:null,method:"set",params:{delay:k,now:performance.now(),timerId:C,timerType:"interval"}}),C},b=function(T){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,C=n.generateUniqueNumber(u);return u.set(C,T),d.postMessage({id:null,method:"set",params:{delay:k,now:performance.now(),timerId:C,timerType:"timeout"}}),C};return{clearInterval:p,clearTimeout:m,setInterval:_,setTimeout:b}};r.load=s})}),Ik=Ae((e,t)=>{_e(),we(),be(),function(r,n){typeof e=="object"&&typeof t<"u"?n(e,xk()):typeof define=="function"&&define.amd?define(["exports","worker-timers-broker"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.workerTimers={},r.workerTimersBroker))}(e,function(r,n){var o=function(d,p){var m=null;return function(){if(m!==null)return m;var _=new Blob([p],{type:"application/javascript; charset=utf-8"}),b=URL.createObjectURL(_);return m=d(b),setTimeout(function(){return URL.revokeObjectURL(b)}),m}},i=`(()=>{var e={472:(e,t,r)=>{var o,i;void 0===(i="function"==typeof(o=function(){"use strict";var e=new Map,t=new Map,r=function(t){var r=e.get(t);if(void 0===r)throw new Error('There is no interval scheduled with the given id "'.concat(t,'".'));clearTimeout(r),e.delete(t)},o=function(e){var r=t.get(e);if(void 0===r)throw new Error('There is no timeout scheduled with the given id "'.concat(e,'".'));clearTimeout(r),t.delete(e)},i=function(e,t){var r,o=performance.now();return{expected:o+(r=e-Math.max(0,o-t)),remainingDelay:r}},n=function e(t,r,o,i){var n=performance.now();n>o?postMessage({id:null,method:"call",params:{timerId:r,timerType:i}}):t.set(r,setTimeout(e,o-n,t,r,o,i))},a=function(t,r,o){var a=i(t,o),s=a.expected,d=a.remainingDelay;e.set(r,setTimeout(n,d,e,r,s,"interval"))},s=function(e,r,o){var a=i(e,o),s=a.expected,d=a.remainingDelay;t.set(r,setTimeout(n,d,t,r,s,"timeout"))};addEventListener("message",(function(e){var t=e.data;try{if("clear"===t.method){var i=t.id,n=t.params,d=n.timerId,c=n.timerType;if("interval"===c)r(d),postMessage({error:null,id:i});else{if("timeout"!==c)throw new Error('The given type "'.concat(c,'" is not supported'));o(d),postMessage({error:null,id:i})}}else{if("set"!==t.method)throw new Error('The given method "'.concat(t.method,'" is not supported'));var u=t.params,l=u.delay,p=u.now,m=u.timerId,v=u.timerType;if("interval"===v)a(l,m,p);else{if("timeout"!==v)throw new Error('The given type "'.concat(v,'" is not supported'));s(l,m,p)}}}catch(e){postMessage({error:{message:e.message},id:t.id,result:null})}}))})?o.call(t,r,t,e):o)||(e.exports=i)}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(472)})()})();`,s=o(n.load,i),a=function(d){return s().clearInterval(d)},l=function(d){return s().clearTimeout(d)},u=function(){var d;return(d=s()).setInterval.apply(d,arguments)},c=function(){var d;return(d=s()).setTimeout.apply(d,arguments)};r.clearInterval=a,r.clearTimeout=l,r.setInterval=u,r.setTimeout=c})}),Ck=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(u,c,d,p){p===void 0&&(p=d);var m=Object.getOwnPropertyDescriptor(c,d);(!m||("get"in m?!c.__esModule:m.writable||m.configurable))&&(m={enumerable:!0,get:function(){return c[d]}}),Object.defineProperty(u,p,m)}:function(u,c,d,p){p===void 0&&(p=d),u[p]=c[d]}),r=e&&e.__setModuleDefault||(Object.create?function(u,c){Object.defineProperty(u,"default",{enumerable:!0,value:c})}:function(u,c){u.default=c}),n=e&&e.__importStar||function(u){if(u&&u.__esModule)return u;var c={};if(u!=null)for(var d in u)d!=="default"&&Object.prototype.hasOwnProperty.call(u,d)&&t(c,u,d);return r(c,u),c};Object.defineProperty(e,"__esModule",{value:!0});var o=n(uu()),i=Ik(),s={set:i.setInterval,clear:i.clearInterval},a={set:(u,c)=>setInterval(u,c),clear:u=>clearInterval(u)},l=u=>{switch(u){case"native":return a;case"worker":return s;case"auto":default:return o.default&&!o.isWebWorker&&!o.isReactNativeBrowser?s:a}};e.default=l}),Vw=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(e,"__esModule",{value:!0});var r=t(Ck()),n=class{get keepaliveTimeoutTimestamp(){return this._keepaliveTimeoutTimestamp}get intervalEvery(){return this._intervalEvery}get keepalive(){return this._keepalive}constructor(o,i){this.destroyed=!1,this.client=o,this.timer=typeof i=="object"&&"set"in i&&"clear"in i?i:(0,r.default)(i),this.setKeepalive(o.options.keepalive)}clear(){this.timerId&&(this.timer.clear(this.timerId),this.timerId=null)}setKeepalive(o){if(o*=1e3,isNaN(o)||o<=0||o>2147483647)throw new Error(`Keepalive value must be an integer between 0 and 2147483647. Provided value is ${o}`);this._keepalive=o,this.reschedule(),this.client.log(`KeepaliveManager: set keepalive to ${o}ms`)}destroy(){this.clear(),this.destroyed=!0}reschedule(){if(this.destroyed)return;this.clear(),this.counter=0;let o=Math.ceil(this._keepalive*1.5);this._keepaliveTimeoutTimestamp=Date.now()+o,this._intervalEvery=Math.ceil(this._keepalive/2),this.timerId=this.timer.set(()=>{this.destroyed||(this.counter+=1,this.counter===2?this.client.sendPing():this.counter>2&&this.client.onKeepaliveTimeout())},this._intervalEvery)}};e.default=n}),kh=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function($,R,D,j){j===void 0&&(j=D);var z=Object.getOwnPropertyDescriptor(R,D);(!z||("get"in z?!R.__esModule:z.writable||z.configurable))&&(z={enumerable:!0,get:function(){return R[D]}}),Object.defineProperty($,j,z)}:function($,R,D,j){j===void 0&&(j=D),$[j]=R[D]}),r=e&&e.__setModuleDefault||(Object.create?function($,R){Object.defineProperty($,"default",{enumerable:!0,value:R})}:function($,R){$.default=R}),n=e&&e.__importStar||function($){if($&&$.__esModule)return $;var R={};if($!=null)for(var D in $)D!=="default"&&Object.prototype.hasOwnProperty.call($,D)&&t(R,$,D);return r(R,$),R},o=e&&e.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(e,"__esModule",{value:!0});var i=o(yO()),s=o(ZO()),a=o(Iw()),l=Hi(),u=o(tk()),c=n(rk()),d=o(pn()),p=o(Cw()),m=o(Sk()),_=Qo(),b=Ak(),T=o(Vw()),k=n(uu()),C=globalThis.setImmediate||((...$)=>{let R=$.shift();(0,_.nextTick)(()=>{R(...$)})}),A={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0,writeCache:!0,timerVariant:"auto"},M=class Mh extends b.TypedEventEmitter{static defaultId(){return`mqttjs_${Math.random().toString(16).substr(2,8)}`}constructor(R,D){super(),this.options=D||{};for(let j in A)typeof this.options[j]>"u"?this.options[j]=A[j]:this.options[j]=D[j];this.log=this.options.log||(0,d.default)("mqttjs:client"),this.noop=this._noop.bind(this),this.log("MqttClient :: version:",Mh.VERSION),k.isWebWorker?this.log("MqttClient :: environment","webworker"):this.log("MqttClient :: environment",k.default?"browser":"node"),this.log("MqttClient :: options.protocol",D.protocol),this.log("MqttClient :: options.protocolVersion",D.protocolVersion),this.log("MqttClient :: options.username",D.username),this.log("MqttClient :: options.keepalive",D.keepalive),this.log("MqttClient :: options.reconnectPeriod",D.reconnectPeriod),this.log("MqttClient :: options.rejectUnauthorized",D.rejectUnauthorized),this.log("MqttClient :: options.properties.topicAliasMaximum",D.properties?D.properties.topicAliasMaximum:void 0),this.options.clientId=typeof D.clientId=="string"?D.clientId:Mh.defaultId(),this.log("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=D.protocolVersion===5&&D.customHandleAcks?D.customHandleAcks:(...j)=>{j[3](null,0)},this.options.writeCache||(s.default.writeToStream.cacheNumbers=!1),this.streamBuilder=R,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new a.default:this.options.messageIdProvider,this.outgoingStore=D.outgoingStore||new p.default,this.incomingStore=D.incomingStore||new p.default,this.queueQoSZero=D.queueQoSZero===void 0?!0:D.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.keepaliveManager=null,this.connected=!1,this.disconnecting=!1,this.reconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,D.properties&&D.properties.topicAliasMaximum>0&&(D.properties.topicAliasMaximum>65535?this.log("MqttClient :: options.properties.topicAliasMaximum is out of range"):this.topicAliasRecv=new i.default(D.properties.topicAliasMaximum)),this.on("connect",()=>{let{queue:j}=this,z=()=>{let se=j.shift();this.log("deliver :: entry %o",se);let re=null;if(!se){this._resubscribe();return}re=se.packet,this.log("deliver :: call _sendPacket for %o",re);let L=!0;re.messageId&&re.messageId!==0&&(this.messageIdProvider.register(re.messageId)||(L=!1)),L?this._sendPacket(re,B=>{se.cb&&se.cb(B),z()}):(this.log("messageId: %d has already used. The message is skipped and removed.",re.messageId),z())};this.log("connect :: sending queued packets"),z()}),this.on("close",()=>{this.log("close :: connected set to `false`"),this.connected=!1,this.log("close :: clearing connackTimer"),clearTimeout(this.connackTimer),this._destroyKeepaliveManager(),this.topicAliasRecv&&this.topicAliasRecv.clear(),this.log("close :: calling _setupReconnect"),this._setupReconnect()}),this.options.manualConnect||(this.log("MqttClient :: setting up stream"),this.connect())}handleAuth(R,D){D()}handleMessage(R,D){D()}_nextId(){return this.messageIdProvider.allocate()}getLastMessageId(){return this.messageIdProvider.getLastAllocated()}connect(){var R;let D=new l.Writable,j=s.default.parser(this.options),z=null,se=[];this.log("connect :: calling method to clear reconnect"),this._clearReconnect(),this.disconnected&&!this.reconnecting&&(this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1),this.log("connect :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),j.on("packet",ne=>{this.log("parser :: on packet push to packets array."),se.push(ne)});let re=()=>{this.log("work :: getting next packet in queue");let ne=se.shift();if(ne)this.log("work :: packet pulled from queue"),(0,m.default)(this,ne,L);else{this.log("work :: no packets in queue");let ue=z;z=null,this.log("work :: done flag is %s",!!ue),ue&&ue()}},L=()=>{if(se.length)(0,_.nextTick)(re);else{let ne=z;z=null,ne()}};D._write=(ne,ue,ae)=>{z=ae,this.log("writable stream :: parsing buffer"),j.parse(ne),re()};let B=ne=>{this.log("streamErrorHandler :: error",ne.message),ne.code?(this.log("streamErrorHandler :: emitting error"),this.emit("error",ne)):this.noop(ne)};this.log("connect :: pipe stream to writable stream"),this.stream.pipe(D),this.stream.on("error",B),this.stream.on("close",()=>{this.log("(%s)stream :: on close",this.options.clientId),this._flushVolatile(),this.log("stream: emit close to MqttClient"),this.emit("close")}),this.log("connect: sending packet `connect`");let oe={cmd:"connect",protocolId:this.options.protocolId,protocolVersion:this.options.protocolVersion,clean:this.options.clean,clientId:this.options.clientId,keepalive:this.options.keepalive,username:this.options.username,password:this.options.password,properties:this.options.properties};if(this.options.will&&(oe.will=Object.assign(Object.assign({},this.options.will),{payload:(R=this.options.will)===null||R===void 0?void 0:R.payload})),this.topicAliasRecv&&(oe.properties||(oe.properties={}),this.topicAliasRecv&&(oe.properties.topicAliasMaximum=this.topicAliasRecv.max)),this._writePacket(oe),j.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return this.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){let ne=Object.assign({cmd:"auth",reasonCode:0},this.options.authPacket);this._writePacket(ne)}}return this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(()=>{this.log("!!connectTimeout hit!! Calling _cleanUp with force `true`"),this.emit("error",new Error("connack timeout")),this._cleanUp(!0)},this.options.connectTimeout),this}publish(R,D,j,z){this.log("publish :: message `%s` to topic `%s`",D,R);let{options:se}=this;typeof j=="function"&&(z=j,j=null),j=j||{},j=Object.assign(Object.assign({},{qos:0,retain:!1,dup:!1}),j);let{qos:re,retain:L,dup:B,properties:oe,cbStorePut:ne}=j;if(this._checkDisconnecting(z))return this;let ue=()=>{let ae=0;if((re===1||re===2)&&(ae=this._nextId(),ae===null))return this.log("No messageId left"),!1;let G={cmd:"publish",topic:R,payload:D,qos:re,retain:L,messageId:ae,dup:B};switch(se.protocolVersion===5&&(G.properties=oe),this.log("publish :: qos",re),re){case 1:case 2:this.outgoing[G.messageId]={volatile:!1,cb:z||this.noop},this.log("MqttClient:publish: packet cmd: %s",G.cmd),this._sendPacket(G,void 0,ne);break;default:this.log("MqttClient:publish: packet cmd: %s",G.cmd),this._sendPacket(G,z,ne);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!ue())&&this._storeProcessingQueue.push({invoke:ue,cbStorePut:j.cbStorePut,callback:z}),this}publishAsync(R,D,j){return new Promise((z,se)=>{this.publish(R,D,j,(re,L)=>{re?se(re):z(L)})})}subscribe(R,D,j){let z=this.options.protocolVersion;typeof D=="function"&&(j=D),j=j||this.noop;let se=!1,re=[];typeof R=="string"?(R=[R],re=R):Array.isArray(R)?re=R:typeof R=="object"&&(se=R.resubscribe,delete R.resubscribe,re=Object.keys(R));let L=c.validateTopics(re);if(L!==null)return C(j,new Error(`Invalid topic ${L}`)),this;if(this._checkDisconnecting(j))return this.log("subscribe: discconecting true"),this;let B={qos:0};z===5&&(B.nl=!1,B.rap=!1,B.rh=0),D=Object.assign(Object.assign({},B),D);let oe=D.properties,ne=[],ue=(G,pe)=>{if(pe=pe||D,!Object.prototype.hasOwnProperty.call(this._resubscribeTopics,G)||this._resubscribeTopics[G].qos<pe.qos||se){let de={topic:G,qos:pe.qos};z===5&&(de.nl=pe.nl,de.rap=pe.rap,de.rh=pe.rh,de.properties=oe),this.log("subscribe: pushing topic `%s` and qos `%s` to subs list",de.topic,de.qos),ne.push(de)}};if(Array.isArray(R)?R.forEach(G=>{this.log("subscribe: array topic %s",G),ue(G)}):Object.keys(R).forEach(G=>{this.log("subscribe: object topic %s, %o",G,R[G]),ue(G,R[G])}),!ne.length)return j(null,[]),this;let ae=()=>{let G=this._nextId();if(G===null)return this.log("No messageId left"),!1;let pe={cmd:"subscribe",subscriptions:ne,messageId:G};if(oe&&(pe.properties=oe),this.options.resubscribe){this.log("subscribe :: resubscribe true");let de=[];ne.forEach(ge=>{if(this.options.reconnectPeriod>0){let O={qos:ge.qos};z===5&&(O.nl=ge.nl||!1,O.rap=ge.rap||!1,O.rh=ge.rh||0,O.properties=ge.properties),this._resubscribeTopics[ge.topic]=O,de.push(ge.topic)}}),this.messageIdToTopic[pe.messageId]=de}return this.outgoing[pe.messageId]={volatile:!0,cb(de,ge){if(!de){let{granted:O}=ge;for(let ie=0;ie<O.length;ie+=1)ne[ie].qos=O[ie]}j(de,ne,ge)}},this.log("subscribe :: call _sendPacket"),this._sendPacket(pe),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!ae())&&this._storeProcessingQueue.push({invoke:ae,callback:j}),this}subscribeAsync(R,D){return new Promise((j,z)=>{this.subscribe(R,D,(se,re)=>{se?z(se):j(re)})})}unsubscribe(R,D,j){typeof R=="string"&&(R=[R]),typeof D=="function"&&(j=D),j=j||this.noop;let z=c.validateTopics(R);if(z!==null)return C(j,new Error(`Invalid topic ${z}`)),this;if(this._checkDisconnecting(j))return this;let se=()=>{let re=this._nextId();if(re===null)return this.log("No messageId left"),!1;let L={cmd:"unsubscribe",messageId:re,unsubscriptions:[]};return typeof R=="string"?L.unsubscriptions=[R]:Array.isArray(R)&&(L.unsubscriptions=R),this.options.resubscribe&&L.unsubscriptions.forEach(B=>{delete this._resubscribeTopics[B]}),typeof D=="object"&&D.properties&&(L.properties=D.properties),this.outgoing[L.messageId]={volatile:!0,cb:j},this.log("unsubscribe: call _sendPacket"),this._sendPacket(L),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!se())&&this._storeProcessingQueue.push({invoke:se,callback:j}),this}unsubscribeAsync(R,D){return new Promise((j,z)=>{this.unsubscribe(R,D,(se,re)=>{se?z(se):j(re)})})}end(R,D,j){this.log("end :: (%s)",this.options.clientId),(R==null||typeof R!="boolean")&&(j=j||D,D=R,R=!1),typeof D!="object"&&(j=j||D,D=null),this.log("end :: cb? %s",!!j),(!j||typeof j!="function")&&(j=this.noop);let z=()=>{this.log("end :: closeStores: closing incoming and outgoing stores"),this.disconnected=!0,this.incomingStore.close(re=>{this.outgoingStore.close(L=>{if(this.log("end :: closeStores: emitting end"),this.emit("end"),j){let B=re||L;this.log("end :: closeStores: invoking callback with args"),j(B)}})}),this._deferredReconnect?this._deferredReconnect():(this.options.reconnectPeriod===0||this.options.manualConnect)&&(this.disconnecting=!1)},se=()=>{this.log("end :: (%s) :: finish :: calling _cleanUp with force %s",this.options.clientId,R),this._cleanUp(R,()=>{this.log("end :: finish :: calling process.nextTick on closeStores"),(0,_.nextTick)(z)},D)};return this.disconnecting?(j(),this):(this._clearReconnect(),this.disconnecting=!0,!R&&Object.keys(this.outgoing).length>0?(this.log("end :: (%s) :: calling finish in 10ms once outgoing is empty",this.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,se,10))):(this.log("end :: (%s) :: immediately calling finish",this.options.clientId),se()),this)}endAsync(R,D){return new Promise((j,z)=>{this.end(R,D,se=>{se?z(se):j()})})}removeOutgoingMessage(R){if(this.outgoing[R]){let{cb:D}=this.outgoing[R];this._removeOutgoingAndStoreMessage(R,()=>{D(new Error("Message removed"))})}return this}reconnect(R){this.log("client reconnect");let D=()=>{R?(this.options.incomingStore=R.incomingStore,this.options.outgoingStore=R.outgoingStore):(this.options.incomingStore=null,this.options.outgoingStore=null),this.incomingStore=this.options.incomingStore||new p.default,this.outgoingStore=this.options.outgoingStore||new p.default,this.disconnecting=!1,this.disconnected=!1,this._deferredReconnect=null,this._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=D:D(),this}_flushVolatile(){this.outgoing&&(this.log("_flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(this.outgoing).forEach(R=>{this.outgoing[R].volatile&&typeof this.outgoing[R].cb=="function"&&(this.outgoing[R].cb(new Error("Connection closed")),delete this.outgoing[R])}))}_flush(){this.outgoing&&(this.log("_flush: queue exists? %b",!!this.outgoing),Object.keys(this.outgoing).forEach(R=>{typeof this.outgoing[R].cb=="function"&&(this.outgoing[R].cb(new Error("Connection closed")),delete this.outgoing[R])}))}_removeTopicAliasAndRecoverTopicName(R){let D;R.properties&&(D=R.properties.topicAlias);let j=R.topic.toString();if(this.log("_removeTopicAliasAndRecoverTopicName :: alias %d, topic %o",D,j),j.length===0){if(typeof D>"u")return new Error("Unregistered Topic Alias");if(j=this.topicAliasSend.getTopicByAlias(D),typeof j>"u")return new Error("Unregistered Topic Alias");R.topic=j}D&&delete R.properties.topicAlias}_checkDisconnecting(R){return this.disconnecting&&(R&&R!==this.noop?R(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting}_reconnect(){this.log("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this.connect()}),this.log("client already connected. disconnecting first.")):(this.log("_reconnect: calling connect"),this.connect())}_setupReconnect(){!this.disconnecting&&!this.reconnectTimer&&this.options.reconnectPeriod>0?(this.reconnecting||(this.log("_setupReconnect :: emit `offline` state"),this.emit("offline"),this.log("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),this.log("_setupReconnect :: setting reconnectTimer for %d ms",this.options.reconnectPeriod),this.reconnectTimer=setInterval(()=>{this.log("reconnectTimer :: reconnect triggered!"),this._reconnect()},this.options.reconnectPeriod)):this.log("_setupReconnect :: doing nothing...")}_clearReconnect(){this.log("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)}_cleanUp(R,D,j={}){if(D&&(this.log("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",D)),this.log("_cleanUp :: forced? %s",R),R)this.options.reconnectPeriod===0&&this.options.clean&&this._flush(),this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{let z=Object.assign({cmd:"disconnect"},j);this.log("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(z,()=>{this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),C(()=>{this.stream.end(()=>{this.log("_cleanUp :: (%s) :: stream destroyed",this.options.clientId)})})})}!this.disconnecting&&!this.reconnecting&&(this.log("_cleanUp :: client not disconnecting/reconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this._destroyKeepaliveManager(),D&&!this.connected&&(this.log("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",D),D())}_storeAndSend(R,D,j){this.log("storeAndSend :: store packet with cmd %s to outgoingStore",R.cmd);let z=R,se;if(z.cmd==="publish"&&(z=(0,u.default)(R),se=this._removeTopicAliasAndRecoverTopicName(z),se))return D&&D(se);this.outgoingStore.put(z,re=>{if(re)return D&&D(re);j(),this._writePacket(R,D)})}_applyTopicAlias(R){if(this.options.protocolVersion===5&&R.cmd==="publish"){let D;R.properties&&(D=R.properties.topicAlias);let j=R.topic.toString();if(this.topicAliasSend)if(D){if(j.length!==0&&(this.log("applyTopicAlias :: register topic: %s - alias: %d",j,D),!this.topicAliasSend.put(j,D)))return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",j,D),new Error("Sending Topic Alias out of range")}else j.length!==0&&(this.options.autoAssignTopicAlias?(D=this.topicAliasSend.getAliasByTopic(j),D?(R.topic="",R.properties=Object.assign(Object.assign({},R.properties),{topicAlias:D}),this.log("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",j,D)):(D=this.topicAliasSend.getLruAlias(),this.topicAliasSend.put(j,D),R.properties=Object.assign(Object.assign({},R.properties),{topicAlias:D}),this.log("applyTopicAlias :: auto assign topic: %s - alias: %d",j,D))):this.options.autoUseTopicAlias&&(D=this.topicAliasSend.getAliasByTopic(j),D&&(R.topic="",R.properties=Object.assign(Object.assign({},R.properties),{topicAlias:D}),this.log("applyTopicAlias :: auto use topic: %s - alias: %d",j,D))));else if(D)return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",j,D),new Error("Sending Topic Alias out of range")}}_noop(R){this.log("noop ::",R)}_writePacket(R,D){this.log("_writePacket :: packet: %O",R),this.log("_writePacket :: emitting `packetsend`"),this.emit("packetsend",R),this.log("_writePacket :: writing to stream");let j=s.default.writeToStream(R,this.stream,this.options);this.log("_writePacket :: writeToStream result %s",j),!j&&D&&D!==this.noop?(this.log("_writePacket :: handle events on `drain` once through callback."),this.stream.once("drain",D)):D&&(this.log("_writePacket :: invoking cb"),D())}_sendPacket(R,D,j,z){this.log("_sendPacket :: (%s) ::  start",this.options.clientId),j=j||this.noop,D=D||this.noop;let se=this._applyTopicAlias(R);if(se){D(se);return}if(!this.connected){if(R.cmd==="auth"){this._writePacket(R,D);return}this.log("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(R,D,j);return}if(z){this._writePacket(R,D);return}switch(R.cmd){case"publish":break;case"pubrel":this._storeAndSend(R,D,j);return;default:this._writePacket(R,D);return}switch(R.qos){case 2:case 1:this._storeAndSend(R,D,j);break;case 0:default:this._writePacket(R,D);break}this.log("_sendPacket :: (%s) ::  end",this.options.clientId)}_storePacket(R,D,j){this.log("_storePacket :: packet: %o",R),this.log("_storePacket :: cb? %s",!!D),j=j||this.noop;let z=R;if(z.cmd==="publish"){z=(0,u.default)(R);let re=this._removeTopicAliasAndRecoverTopicName(z);if(re)return D&&D(re)}let se=z.qos||0;se===0&&this.queueQoSZero||z.cmd!=="publish"?this.queue.push({packet:z,cb:D}):se>0?(D=this.outgoing[z.messageId]?this.outgoing[z.messageId].cb:null,this.outgoingStore.put(z,re=>{if(re)return D&&D(re);j()})):D&&D(new Error("No connection to broker"))}_setupKeepaliveManager(){this.log("_setupKeepaliveManager :: keepalive %d (seconds)",this.options.keepalive),!this.keepaliveManager&&this.options.keepalive&&(this.keepaliveManager=new T.default(this,this.options.timerVariant))}_destroyKeepaliveManager(){this.keepaliveManager&&(this.log("_destroyKeepaliveManager :: destroying keepalive manager"),this.keepaliveManager.destroy(),this.keepaliveManager=null)}reschedulePing(R=!1){this.keepaliveManager&&this.options.keepalive&&(R||this.options.reschedulePings)&&this._reschedulePing()}_reschedulePing(){this.log("_reschedulePing :: rescheduling ping"),this.keepaliveManager.reschedule()}sendPing(){this.log("_sendPing :: sending pingreq"),this._sendPacket({cmd:"pingreq"})}onKeepaliveTimeout(){this.emit("error",new Error("Keepalive timeout")),this.log("onKeepaliveTimeout :: calling _cleanUp with force true"),this._cleanUp(!0)}_resubscribe(){this.log("_resubscribe");let R=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion>=4&&!this.connackPacket.sessionPresent)&&R.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){this.log("_resubscribe: protocolVersion 5");for(let D=0;D<R.length;D++){let j={};j[R[D]]=this._resubscribeTopics[R[D]],j.resubscribe=!0,this.subscribe(j,{properties:j[R[D]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1}_onConnect(R){if(this.disconnected){this.emit("connect",R);return}this.connackPacket=R,this.messageIdProvider.clear(),this._setupKeepaliveManager(),this.connected=!0;let D=()=>{let j=this.outgoingStore.createStream(),z=()=>{j.destroy(),j=null,this._flushStoreProcessingQueue(),se()},se=()=>{this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={}};this.once("close",z),j.on("error",L=>{se(),this._flushStoreProcessingQueue(),this.removeListener("close",z),this.emit("error",L)});let re=()=>{if(!j)return;let L=j.read(1),B;if(!L){j.once("readable",re);return}if(this._storeProcessing=!0,this._packetIdsDuringStoreProcessing[L.messageId]){re();return}!this.disconnecting&&!this.reconnectTimer?(B=this.outgoing[L.messageId]?this.outgoing[L.messageId].cb:null,this.outgoing[L.messageId]={volatile:!1,cb(oe,ne){B&&B(oe,ne),re()}},this._packetIdsDuringStoreProcessing[L.messageId]=!0,this.messageIdProvider.register(L.messageId)?this._sendPacket(L,void 0,void 0,!0):this.log("messageId: %d has already used.",L.messageId)):j.destroy&&j.destroy()};j.on("end",()=>{let L=!0;for(let B in this._packetIdsDuringStoreProcessing)if(!this._packetIdsDuringStoreProcessing[B]){L=!1;break}this.removeListener("close",z),L?(se(),this._invokeAllStoreProcessingQueue(),this.emit("connect",R)):D()}),re()};D()}_invokeStoreProcessingQueue(){if(!this._storeProcessing&&this._storeProcessingQueue.length>0){let R=this._storeProcessingQueue[0];if(R&&R.invoke())return this._storeProcessingQueue.shift(),!0}return!1}_invokeAllStoreProcessingQueue(){for(;this._invokeStoreProcessingQueue(););}_flushStoreProcessingQueue(){for(let R of this._storeProcessingQueue)R.cbStorePut&&R.cbStorePut(new Error("Connection closed")),R.callback&&R.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)}_removeOutgoingAndStoreMessage(R,D){delete this.outgoing[R],this.outgoingStore.del({messageId:R},(j,z)=>{D(j,z),this.messageIdProvider.deallocate(R),this._invokeStoreProcessingQueue()})}};M.VERSION=_.MQTTJS_VERSION,e.default=M}),Rk=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=Hw(),r=class{constructor(){this.numberAllocator=new t.NumberAllocator(1,65535)}allocate(){return this.lastId=this.numberAllocator.alloc(),this.lastId}getLastAllocated(){return this.lastId}register(n){return this.numberAllocator.use(n)}deallocate(n){this.numberAllocator.free(n)}clear(){this.numberAllocator.clear()}};e.default=r});function oi(e){throw new RangeError(Kw[e])}function Nm(e,t){let r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]);let o=function(i,s){let a=[],l=i.length;for(;l--;)a[l]=s(i[l]);return a}((e=e.replace(qw,".")).split("."),t).join(".");return n+o}function Pm(e){let t=[],r=0,n=e.length;for(;r<n;){let o=e.charCodeAt(r++);if(o>=55296&&o<=56319&&r<n){let i=e.charCodeAt(r++);(64512&i)==56320?t.push(((1023&o)<<10)+(1023&i)+65536):(t.push(o),r--)}else t.push(o)}return t}var Lm,Dm,qw,Kw,fr,ba,pc,gc,mc,yc,Mn,Ok=_t(()=>{_e(),we(),be(),Lm=/^xn--/,Dm=/[^\0-\x7E]/,qw=/[\x2E\u3002\uFF0E\uFF61]/g,Kw={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},fr=Math.floor,ba=String.fromCharCode,pc=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},gc=function(e,t,r){let n=0;for(e=r?fr(e/700):e>>1,e+=fr(e/t);e>455;n+=36)e=fr(e/35);return fr(n+36*e/(e+38))},mc=function(e){let t=[],r=e.length,n=0,o=128,i=72,s=e.lastIndexOf("-");s<0&&(s=0);for(let l=0;l<s;++l)e.charCodeAt(l)>=128&&oi("not-basic"),t.push(e.charCodeAt(l));for(let l=s>0?s+1:0;l<r;){let u=n;for(let d=1,p=36;;p+=36){l>=r&&oi("invalid-input");let m=(a=e.charCodeAt(l++))-48<10?a-22:a-65<26?a-65:a-97<26?a-97:36;(m>=36||m>fr((2147483647-n)/d))&&oi("overflow"),n+=m*d;let _=p<=i?1:p>=i+26?26:p-i;if(m<_)break;let b=36-_;d>fr(2147483647/b)&&oi("overflow"),d*=b}let c=t.length+1;i=gc(n-u,c,u==0),fr(n/c)>2147483647-o&&oi("overflow"),o+=fr(n/c),n%=c,t.splice(n++,0,o)}var a;return String.fromCodePoint(...t)},yc=function(e){let t=[],r=(e=Pm(e)).length,n=128,o=0,i=72;for(let l of e)l<128&&t.push(ba(l));let s=t.length,a=s;for(s&&t.push("-");a<r;){let l=2147483647;for(let c of e)c>=n&&c<l&&(l=c);let u=a+1;l-n>fr((2147483647-o)/u)&&oi("overflow"),o+=(l-n)*u,n=l;for(let c of e)if(c<n&&++o>2147483647&&oi("overflow"),c==n){let d=o;for(let p=36;;p+=36){let m=p<=i?1:p>=i+26?26:p-i;if(d<m)break;let _=d-m,b=36-m;t.push(ba(pc(m+_%b,0))),d=fr(_/b)}t.push(ba(pc(d,0))),i=gc(o,u,a==s),o=0,++a}++o,++n}return t.join("")},Mn={version:"2.1.0",ucs2:{decode:Pm,encode:e=>String.fromCodePoint(...e)},decode:mc,encode:yc,toASCII:function(e){return Nm(e,function(t){return Dm.test(t)?"xn--"+yc(t):t})},toUnicode:function(e){return Nm(e,function(t){return Lm.test(t)?mc(t.slice(4).toLowerCase()):t})}},Mn.decode,Mn.encode,Mn.toASCII,Mn.toUnicode,Mn.ucs2,Mn.version});function kk(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Bm,to,$m,Tr,Mk=_t(()=>{_e(),we(),be(),Bm=function(e,t,r,n){t=t||"&",r=r||"=";var o={};if(typeof e!="string"||e.length===0)return o;var i=/\+/g;e=e.split(t);var s=1e3;n&&typeof n.maxKeys=="number"&&(s=n.maxKeys);var a=e.length;s>0&&a>s&&(a=s);for(var l=0;l<a;++l){var u,c,d,p,m=e[l].replace(i,"%20"),_=m.indexOf(r);_>=0?(u=m.substr(0,_),c=m.substr(_+1)):(u=m,c=""),d=decodeURIComponent(u),p=decodeURIComponent(c),kk(o,d)?Array.isArray(o[d])?o[d].push(p):o[d]=[o[d],p]:o[d]=p}return o},to=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},$m=function(e,t,r,n){return t=t||"&",r=r||"=",e===null&&(e=void 0),typeof e=="object"?Object.keys(e).map(function(o){var i=encodeURIComponent(to(o))+r;return Array.isArray(e[o])?e[o].map(function(s){return i+encodeURIComponent(to(s))}).join(t):i+encodeURIComponent(to(e[o]))}).join(t):n?encodeURIComponent(to(n))+r+encodeURIComponent(to(e)):""},Tr={},Tr.decode=Tr.parse=Bm,Tr.encode=Tr.stringify=$m,Tr.decode,Tr.encode,Tr.parse,Tr.stringify});function Nh(){throw new Error("setTimeout has not been defined")}function Ph(){throw new Error("clearTimeout has not been defined")}function Yw(e){if(Xr===setTimeout)return setTimeout(e,0);if((Xr===Nh||!Xr)&&setTimeout)return Xr=setTimeout,setTimeout(e,0);try{return Xr(e,0)}catch{try{return Xr.call(null,e,0)}catch{return Xr.call(this||Ti,e,0)}}}function Nk(){xi&&_i&&(xi=!1,_i.length?Mr=_i.concat(Mr):Os=-1,Mr.length&&zw())}function zw(){if(!xi){var e=Yw(Nk);xi=!0;for(var t=Mr.length;t;){for(_i=Mr,Mr=[];++Os<t;)_i&&_i[Os].run();Os=-1,t=Mr.length}_i=null,xi=!1,function(r){if(Jr===clearTimeout)return clearTimeout(r);if((Jr===Ph||!Jr)&&clearTimeout)return Jr=clearTimeout,clearTimeout(r);try{Jr(r)}catch{try{return Jr.call(null,r)}catch{return Jr.call(this||Ti,r)}}}(e)}}function Um(e,t){(this||Ti).fun=e,(this||Ti).array=t}function Kr(){}var Fm,Xr,Jr,Ti,ot,_i,Mr,xi,Os,it,Pk=_t(()=>{_e(),we(),be(),Ti=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Ri,ot=Fm={},function(){try{Xr=typeof setTimeout=="function"?setTimeout:Nh}catch{Xr=Nh}try{Jr=typeof clearTimeout=="function"?clearTimeout:Ph}catch{Jr=Ph}}(),Mr=[],xi=!1,Os=-1,ot.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Mr.push(new Um(e,t)),Mr.length!==1||xi||Yw(zw)},Um.prototype.run=function(){(this||Ti).fun.apply(null,(this||Ti).array)},ot.title="browser",ot.browser=!0,ot.env={},ot.argv=[],ot.version="",ot.versions={},ot.on=Kr,ot.addListener=Kr,ot.once=Kr,ot.off=Kr,ot.removeListener=Kr,ot.removeAllListeners=Kr,ot.emit=Kr,ot.prependListener=Kr,ot.prependOnceListener=Kr,ot.listeners=function(e){return[]},ot.binding=function(e){throw new Error("process.binding is not supported")},ot.cwd=function(){return"/"},ot.chdir=function(e){throw new Error("process.chdir is not supported")},ot.umask=function(){return 0},it=Fm,it.addListener,it.argv,it.binding,it.browser,it.chdir,it.cwd,it.emit,it.env,it.listeners,it.nextTick,it.off,it.on,it.once,it.prependListener,it.prependOnceListener,it.removeAllListeners,it.removeListener,it.title,it.umask,it.version,it.versions});function Lk(){if(Lh)return Ka;Lh=!0;var e=Ka={},t,r;function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?t=setTimeout:t=n}catch{t=n}try{typeof clearTimeout=="function"?r=clearTimeout:r=o}catch{r=o}})();function i(b){if(t===setTimeout)return setTimeout(b,0);if((t===n||!t)&&setTimeout)return t=setTimeout,setTimeout(b,0);try{return t(b,0)}catch{try{return t.call(null,b,0)}catch{return t.call(this||ci,b,0)}}}function s(b){if(r===clearTimeout)return clearTimeout(b);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(b);try{return r(b)}catch{try{return r.call(null,b)}catch{return r.call(this||ci,b)}}}var a=[],l=!1,u,c=-1;function d(){!l||!u||(l=!1,u.length?a=u.concat(a):c=-1,a.length&&p())}function p(){if(!l){var b=i(d);l=!0;for(var T=a.length;T;){for(u=a,a=[];++c<T;)u&&u[c].run();c=-1,T=a.length}u=null,l=!1,s(b)}}e.nextTick=function(b){var T=new Array(arguments.length-1);if(arguments.length>1)for(var k=1;k<arguments.length;k++)T[k-1]=arguments[k];a.push(new m(b,T)),a.length===1&&!l&&i(p)};function m(b,T){(this||ci).fun=b,(this||ci).array=T}m.prototype.run=function(){(this||ci).fun.apply(null,(this||ci).array)},e.title="browser",e.browser=!0,e.env={},e.argv=[],e.version="",e.versions={};function _(){}return e.on=_,e.addListener=_,e.once=_,e.off=_,e.removeListener=_,e.removeAllListeners=_,e.emit=_,e.prependListener=_,e.prependOnceListener=_,e.listeners=function(b){return[]},e.binding=function(b){throw new Error("process.binding is not supported")},e.cwd=function(){return"/"},e.chdir=function(b){throw new Error("process.chdir is not supported")},e.umask=function(){return 0},Ka}var Ka,Lh,ci,tt,Gw=_t(()=>{_e(),we(),be(),Ka={},Lh=!1,ci=typeof globalThis<"u"?globalThis:typeof self<"u"?self:Ri,tt=Lk(),tt.platform="browser",tt.addListener,tt.argv,tt.binding,tt.browser,tt.chdir,tt.cwd,tt.emit,tt.env,tt.listeners,tt.nextTick,tt.off,tt.on,tt.once,tt.prependListener,tt.prependOnceListener,tt.removeAllListeners,tt.removeListener,tt.title,tt.umask,tt.version,tt.versions});function Dk(){if(Dh)return Ya;Dh=!0;var e=tt;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,s){for(var a="",l=0,u=-1,c=0,d,p=0;p<=i.length;++p){if(p<i.length)d=i.charCodeAt(p);else{if(d===47)break;d=47}if(d===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var m=a.lastIndexOf("/");if(m!==a.length-1){m===-1?(a="",l=0):(a=a.slice(0,m),l=a.length-1-a.lastIndexOf("/")),u=p,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=p,c=0;continue}}s&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,p):a=i.slice(u+1,p),l=p-u-1;u=p,c=0}else d===46&&c!==-1?++c:c=-1}return a}function n(i,s){var a=s.dir||s.root,l=s.base||(s.name||"")+(s.ext||"");return a?a===s.root?a+l:a+i+l:l}var o={resolve:function(){for(var i="",s=!1,a,l=arguments.length-1;l>=-1&&!s;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=e.cwd()),u=a),t(u),u.length!==0&&(i=u+"/"+i,s=u.charCodeAt(0)===47)}return i=r(i,!s),s?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var s=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!s),i.length===0&&!s&&(i="."),i.length>0&&a&&(i+="/"),s?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,s=0;s<arguments.length;++s){var a=arguments[s];t(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":o.normalize(i)},relative:function(i,s){if(t(i),t(s),i===s||(i=o.resolve(i),s=o.resolve(s),i===s))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<s.length&&s.charCodeAt(c)===47;++c);for(var d=s.length,p=d-c,m=u<p?u:p,_=-1,b=0;b<=m;++b){if(b===m){if(p>m){if(s.charCodeAt(c+b)===47)return s.slice(c+b+1);if(b===0)return s.slice(c+b)}else u>m&&(i.charCodeAt(a+b)===47?_=b:b===0&&(_=0));break}var T=i.charCodeAt(a+b),k=s.charCodeAt(c+b);if(T!==k)break;T===47&&(_=b)}var C="";for(b=a+_+1;b<=l;++b)(b===l||i.charCodeAt(b)===47)&&(C.length===0?C+="..":C+="/..");return C.length>0?C+s.slice(c+_):(c+=_,s.charCodeAt(c)===47&&++c,s.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var s=i.charCodeAt(0),a=s===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(s=i.charCodeAt(c),s===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,s){if(s!==void 0&&typeof s!="string")throw new TypeError('"ext" argument must be a string');t(i);var a=0,l=-1,u=!0,c;if(s!==void 0&&s.length>0&&s.length<=i.length){if(s.length===i.length&&s===i)return"";var d=s.length-1,p=-1;for(c=i.length-1;c>=0;--c){var m=i.charCodeAt(c);if(m===47){if(!u){a=c+1;break}}else p===-1&&(u=!1,p=c+1),d>=0&&(m===s.charCodeAt(d)?--d===-1&&(l=c):(d=-1,l=p))}return a===l?l=p:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){t(i);for(var s=-1,a=0,l=-1,u=!0,c=0,d=i.length-1;d>=0;--d){var p=i.charCodeAt(d);if(p===47){if(!u){a=d+1;break}continue}l===-1&&(u=!1,l=d+1),p===46?s===-1?s=d:c!==1&&(c=1):s!==-1&&(c=-1)}return s===-1||l===-1||c===0||c===1&&s===l-1&&s===a+1?"":i.slice(s,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var s={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return s;var a=i.charCodeAt(0),l=a===47,u;l?(s.root="/",u=1):u=0;for(var c=-1,d=0,p=-1,m=!0,_=i.length-1,b=0;_>=u;--_){if(a=i.charCodeAt(_),a===47){if(!m){d=_+1;break}continue}p===-1&&(m=!1,p=_+1),a===46?c===-1?c=_:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===d+1?p!==-1&&(d===0&&l?s.base=s.name=i.slice(1,p):s.base=s.name=i.slice(d,p)):(d===0&&l?(s.name=i.slice(1,c),s.base=i.slice(1,p)):(s.name=i.slice(d,c),s.base=i.slice(d,p)),s.ext=i.slice(c,p)),d>0?s.dir=i.slice(0,d-1):l&&(s.dir="/"),s},sep:"/",delimiter:":",win32:null,posix:null};return o.posix=o,Ya=o,Ya}var Ya,Dh,Bh,Bk=_t(()=>{_e(),we(),be(),Gw(),Ya={},Dh=!1,Bh=Dk()}),Qw={};Fi(Qw,{URL:()=>pv,Url:()=>uv,default:()=>qe,fileURLToPath:()=>Xw,format:()=>cv,parse:()=>dv,pathToFileURL:()=>Jw,resolve:()=>fv,resolveObject:()=>hv});function tr(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function us(e,t,r){if(e&&dr.isObject(e)&&e instanceof tr)return e;var n=new tr;return n.parse(e,t,r),n}function $k(){if($h)return za;$h=!0;var e=it;function t(i){if(typeof i!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function r(i,s){for(var a="",l=0,u=-1,c=0,d,p=0;p<=i.length;++p){if(p<i.length)d=i.charCodeAt(p);else{if(d===47)break;d=47}if(d===47){if(!(u===p-1||c===1))if(u!==p-1&&c===2){if(a.length<2||l!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var m=a.lastIndexOf("/");if(m!==a.length-1){m===-1?(a="",l=0):(a=a.slice(0,m),l=a.length-1-a.lastIndexOf("/")),u=p,c=0;continue}}else if(a.length===2||a.length===1){a="",l=0,u=p,c=0;continue}}s&&(a.length>0?a+="/..":a="..",l=2)}else a.length>0?a+="/"+i.slice(u+1,p):a=i.slice(u+1,p),l=p-u-1;u=p,c=0}else d===46&&c!==-1?++c:c=-1}return a}function n(i,s){var a=s.dir||s.root,l=s.base||(s.name||"")+(s.ext||"");return a?a===s.root?a+l:a+i+l:l}var o={resolve:function(){for(var i="",s=!1,a,l=arguments.length-1;l>=-1&&!s;l--){var u;l>=0?u=arguments[l]:(a===void 0&&(a=e.cwd()),u=a),t(u),u.length!==0&&(i=u+"/"+i,s=u.charCodeAt(0)===47)}return i=r(i,!s),s?i.length>0?"/"+i:"/":i.length>0?i:"."},normalize:function(i){if(t(i),i.length===0)return".";var s=i.charCodeAt(0)===47,a=i.charCodeAt(i.length-1)===47;return i=r(i,!s),i.length===0&&!s&&(i="."),i.length>0&&a&&(i+="/"),s?"/"+i:i},isAbsolute:function(i){return t(i),i.length>0&&i.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var i,s=0;s<arguments.length;++s){var a=arguments[s];t(a),a.length>0&&(i===void 0?i=a:i+="/"+a)}return i===void 0?".":o.normalize(i)},relative:function(i,s){if(t(i),t(s),i===s||(i=o.resolve(i),s=o.resolve(s),i===s))return"";for(var a=1;a<i.length&&i.charCodeAt(a)===47;++a);for(var l=i.length,u=l-a,c=1;c<s.length&&s.charCodeAt(c)===47;++c);for(var d=s.length,p=d-c,m=u<p?u:p,_=-1,b=0;b<=m;++b){if(b===m){if(p>m){if(s.charCodeAt(c+b)===47)return s.slice(c+b+1);if(b===0)return s.slice(c+b)}else u>m&&(i.charCodeAt(a+b)===47?_=b:b===0&&(_=0));break}var T=i.charCodeAt(a+b),k=s.charCodeAt(c+b);if(T!==k)break;T===47&&(_=b)}var C="";for(b=a+_+1;b<=l;++b)(b===l||i.charCodeAt(b)===47)&&(C.length===0?C+="..":C+="/..");return C.length>0?C+s.slice(c+_):(c+=_,s.charCodeAt(c)===47&&++c,s.slice(c))},_makeLong:function(i){return i},dirname:function(i){if(t(i),i.length===0)return".";for(var s=i.charCodeAt(0),a=s===47,l=-1,u=!0,c=i.length-1;c>=1;--c)if(s=i.charCodeAt(c),s===47){if(!u){l=c;break}}else u=!1;return l===-1?a?"/":".":a&&l===1?"//":i.slice(0,l)},basename:function(i,s){if(s!==void 0&&typeof s!="string")throw new TypeError('"ext" argument must be a string');t(i);var a=0,l=-1,u=!0,c;if(s!==void 0&&s.length>0&&s.length<=i.length){if(s.length===i.length&&s===i)return"";var d=s.length-1,p=-1;for(c=i.length-1;c>=0;--c){var m=i.charCodeAt(c);if(m===47){if(!u){a=c+1;break}}else p===-1&&(u=!1,p=c+1),d>=0&&(m===s.charCodeAt(d)?--d===-1&&(l=c):(d=-1,l=p))}return a===l?l=p:l===-1&&(l=i.length),i.slice(a,l)}else{for(c=i.length-1;c>=0;--c)if(i.charCodeAt(c)===47){if(!u){a=c+1;break}}else l===-1&&(u=!1,l=c+1);return l===-1?"":i.slice(a,l)}},extname:function(i){t(i);for(var s=-1,a=0,l=-1,u=!0,c=0,d=i.length-1;d>=0;--d){var p=i.charCodeAt(d);if(p===47){if(!u){a=d+1;break}continue}l===-1&&(u=!1,l=d+1),p===46?s===-1?s=d:c!==1&&(c=1):s!==-1&&(c=-1)}return s===-1||l===-1||c===0||c===1&&s===l-1&&s===a+1?"":i.slice(s,l)},format:function(i){if(i===null||typeof i!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return n("/",i)},parse:function(i){t(i);var s={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return s;var a=i.charCodeAt(0),l=a===47,u;l?(s.root="/",u=1):u=0;for(var c=-1,d=0,p=-1,m=!0,_=i.length-1,b=0;_>=u;--_){if(a=i.charCodeAt(_),a===47){if(!m){d=_+1;break}continue}p===-1&&(m=!1,p=_+1),a===46?c===-1?c=_:b!==1&&(b=1):c!==-1&&(b=-1)}return c===-1||p===-1||b===0||b===1&&c===p-1&&c===d+1?p!==-1&&(d===0&&l?s.base=s.name=i.slice(1,p):s.base=s.name=i.slice(d,p)):(d===0&&l?(s.name=i.slice(1,c),s.base=i.slice(1,p)):(s.name=i.slice(d,c),s.base=i.slice(d,p)),s.ext=i.slice(c,p)),d>0?s.dir=i.slice(0,d-1):l&&(s.dir="/"),s},sep:"/",delimiter:":",win32:null,posix:null};return o.posix=o,za=o,za}function Uk(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return bl?Fk(e):jk(e)}function Fk(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let o=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&o===102||r[n+1]==="5"&&o===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(nv,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,o=r[2];if(n<tv||n>rv||o!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function jk(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function Wk(e){let t=Uh.resolve(e),r=e.charCodeAt(e.length-1);(r===ev||bl&&r===Zw)&&t[t.length-1]!==Uh.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace(iv,"%25")),!bl&&t.includes("\\")&&(t=t.replace(ov,"%5C")),t.includes(`
+`)&&(t=t.replace(sv,"%0A")),t.includes("\r")&&(t=t.replace(av,"%0D")),t.includes("	")&&(t=t.replace(lv,"%09")),n.pathname=t,n}function Xw(e){if(typeof e=="string")e=new URL(e);else if(!(e instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(e.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return wl?Hk(e):Vk(e)}function Hk(e){let t=e.hostname,r=e.pathname;for(let n=0;n<r.length;n++)if(r[n]==="%"){let o=r.codePointAt(n+2)||32;if(r[n+1]==="2"&&o===102||r[n+1]==="5"&&o===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(r=r.replace(bv,"\\"),r=decodeURIComponent(r),t!=="")return`\\\\${t}${r}`;{let n=r.codePointAt(1)|32,o=r[2];if(n<yv||n>_v||o!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return r.slice(1)}}function Vk(e){if(e.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let t=e.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let n=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&n===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(t)}function Jw(e){let t=Bh.resolve(e),r=e.charCodeAt(e.length-1);(r===mv||wl&&r===gv)&&t[t.length-1]!==Bh.sep&&(t+="/");let n=new URL("file://");return t.includes("%")&&(t=t.replace(wv,"%25")),!wl&&t.includes("\\")&&(t=t.replace(vv,"%5C")),t.includes(`
+`)&&(t=t.replace(Ev,"%0A")),t.includes("\r")&&(t=t.replace(Sv,"%0D")),t.includes("	")&&(t=t.replace(Av,"%09")),n.pathname=t,n}var qe,jm,dr,Wm,Hm,Vm,qm,wa,_c,bc,wc,Km,Ym,va,si,Ea,za,$h,Uh,zm,Zw,ev,tv,rv,bl,nv,iv,ov,sv,av,lv,Gm,uv,cv,fv,hv,dv,pv,gv,mv,yv,_v,wl,bv,wv,vv,Ev,Sv,Av,qk=_t(()=>{_e(),we(),be(),Ok(),Mk(),Pk(),Bk(),Gw(),qe={},jm=Mn,dr={isString:function(e){return typeof e=="string"},isObject:function(e){return typeof e=="object"&&e!==null},isNull:function(e){return e===null},isNullOrUndefined:function(e){return e==null}},qe.parse=us,qe.resolve=function(e,t){return us(e,!1,!0).resolve(t)},qe.resolveObject=function(e,t){return e?us(e,!1,!0).resolveObject(t):t},qe.format=function(e){return dr.isString(e)&&(e=us(e)),e instanceof tr?e.format():tr.prototype.format.call(e)},qe.Url=tr,Wm=/^([a-z0-9.+-]+:)/i,Hm=/:[0-9]*$/,Vm=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,qm=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r",`
+`,"	"]),wa=["'"].concat(qm),_c=["%","/","?",";","#"].concat(wa),bc=["/","?","#"],wc=/^[+a-z0-9A-Z_-]{0,63}$/,Km=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Ym={javascript:!0,"javascript:":!0},va={javascript:!0,"javascript:":!0},si={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},Ea=Tr,tr.prototype.parse=function(e,t,r){if(!dr.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e.indexOf("?"),o=n!==-1&&n<e.indexOf("#")?"?":"#",i=e.split(o);i[0]=i[0].replace(/\\/g,"/");var s=e=i.join(o);if(s=s.trim(),!r&&e.split("#").length===1){var a=Vm.exec(s);if(a)return this.path=s,this.href=s,this.pathname=a[1],a[2]?(this.search=a[2],this.query=t?Ea.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var l=Wm.exec(s);if(l){var u=(l=l[0]).toLowerCase();this.protocol=u,s=s.substr(l.length)}if(r||l||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var c=s.substr(0,2)==="//";!c||l&&va[l]||(s=s.substr(2),this.slashes=!0)}if(!va[l]&&(c||l&&!si[l])){for(var d,p,m=-1,_=0;_<bc.length;_++)(b=s.indexOf(bc[_]))!==-1&&(m===-1||b<m)&&(m=b);for((p=m===-1?s.lastIndexOf("@"):s.lastIndexOf("@",m))!==-1&&(d=s.slice(0,p),s=s.slice(p+1),this.auth=decodeURIComponent(d)),m=-1,_=0;_<_c.length;_++){var b;(b=s.indexOf(_c[_]))!==-1&&(m===-1||b<m)&&(m=b)}m===-1&&(m=s.length),this.host=s.slice(0,m),s=s.slice(m),this.parseHost(),this.hostname=this.hostname||"";var T=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!T)for(var k=this.hostname.split(/\./),C=(_=0,k.length);_<C;_++){var A=k[_];if(A&&!A.match(wc)){for(var M="",$=0,R=A.length;$<R;$++)A.charCodeAt($)>127?M+="x":M+=A[$];if(!M.match(wc)){var D=k.slice(0,_),j=k.slice(_+1),z=A.match(Km);z&&(D.push(z[1]),j.unshift(z[2])),j.length&&(s="/"+j.join(".")+s),this.hostname=D.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),T||(this.hostname=jm.toASCII(this.hostname));var se=this.port?":"+this.port:"",re=this.hostname||"";this.host=re+se,this.href+=this.host,T&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),s[0]!=="/"&&(s="/"+s))}if(!Ym[u])for(_=0,C=wa.length;_<C;_++){var L=wa[_];if(s.indexOf(L)!==-1){var B=encodeURIComponent(L);B===L&&(B=escape(L)),s=s.split(L).join(B)}}var oe=s.indexOf("#");oe!==-1&&(this.hash=s.substr(oe),s=s.slice(0,oe));var ne=s.indexOf("?");if(ne!==-1?(this.search=s.substr(ne),this.query=s.substr(ne+1),t&&(this.query=Ea.parse(this.query)),s=s.slice(0,ne)):t&&(this.search="",this.query={}),s&&(this.pathname=s),si[u]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){se=this.pathname||"";var ue=this.search||"";this.path=se+ue}return this.href=this.format(),this},tr.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",o=!1,i="";this.host?o=e+this.host:this.hostname&&(o=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&dr.isObject(this.query)&&Object.keys(this.query).length&&(i=Ea.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&t.substr(-1)!==":"&&(t+=":"),this.slashes||(!t||si[t])&&o!==!1?(o="//"+(o||""),r&&r.charAt(0)!=="/"&&(r="/"+r)):o||(o=""),n&&n.charAt(0)!=="#"&&(n="#"+n),s&&s.charAt(0)!=="?"&&(s="?"+s),t+o+(r=r.replace(/[?#]/g,function(a){return encodeURIComponent(a)}))+(s=s.replace("#","%23"))+n},tr.prototype.resolve=function(e){return this.resolveObject(us(e,!1,!0)).format()},tr.prototype.resolveObject=function(e){if(dr.isString(e)){var t=new tr;t.parse(e,!1,!0),e=t}for(var r=new tr,n=Object.keys(this),o=0;o<n.length;o++){var i=n[o];r[i]=this[i]}if(r.hash=e.hash,e.href==="")return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),a=0;a<s.length;a++){var l=s[a];l!=="protocol"&&(r[l]=e[l])}return si[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!si[e.protocol]){for(var u=Object.keys(e),c=0;c<u.length;c++){var d=u[c];r[d]=e[d]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||va[e.protocol])r.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),p[0]!==""&&p.unshift(""),p.length<2&&p.unshift(""),r.pathname=p.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",_=r.search||"";r.path=m+_}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var b=r.pathname&&r.pathname.charAt(0)==="/",T=e.host||e.pathname&&e.pathname.charAt(0)==="/",k=T||b||r.host&&e.pathname,C=k,A=r.pathname&&r.pathname.split("/")||[],M=(p=e.pathname&&e.pathname.split("/")||[],r.protocol&&!si[r.protocol]);if(M&&(r.hostname="",r.port=null,r.host&&(A[0]===""?A[0]=r.host:A.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(p[0]===""?p[0]=e.host:p.unshift(e.host)),e.host=null),k=k&&(p[0]===""||A[0]==="")),T)r.host=e.host||e.host===""?e.host:r.host,r.hostname=e.hostname||e.hostname===""?e.hostname:r.hostname,r.search=e.search,r.query=e.query,A=p;else if(p.length)A||(A=[]),A.pop(),A=A.concat(p),r.search=e.search,r.query=e.query;else if(!dr.isNullOrUndefined(e.search))return M&&(r.hostname=r.host=A.shift(),(z=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=z.shift(),r.host=r.hostname=z.shift())),r.search=e.search,r.query=e.query,dr.isNull(r.pathname)&&dr.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!A.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var $=A.slice(-1)[0],R=(r.host||e.host||A.length>1)&&($==="."||$==="..")||$==="",D=0,j=A.length;j>=0;j--)($=A[j])==="."?A.splice(j,1):$===".."?(A.splice(j,1),D++):D&&(A.splice(j,1),D--);if(!k&&!C)for(;D--;D)A.unshift("..");!k||A[0]===""||A[0]&&A[0].charAt(0)==="/"||A.unshift(""),R&&A.join("/").substr(-1)!=="/"&&A.push("");var z,se=A[0]===""||A[0]&&A[0].charAt(0)==="/";return M&&(r.hostname=r.host=se?"":A.length?A.shift():"",(z=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=z.shift(),r.host=r.hostname=z.shift())),(k=k||r.host&&A.length)&&!se&&A.unshift(""),A.length?r.pathname=A.join("/"):(r.pathname=null,r.path=null),dr.isNull(r.pathname)&&dr.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},tr.prototype.parseHost=function(){var e=this.host,t=Hm.exec(e);t&&((t=t[0])!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},qe.Url,qe.format,qe.resolve,qe.resolveObject,za={},$h=!1,Uh=$k(),zm=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=Wk,qe.fileURLToPath=Uk,qe.Url,qe.format,qe.resolve,qe.resolveObject,qe.URL,Zw=92,ev=47,tv=97,rv=122,bl=zm==="win32",nv=/\//g,iv=/%/g,ov=/\\/g,sv=/\n/g,av=/\r/g,lv=/\t/g,Gm=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,qe.URL=typeof URL<"u"?URL:null,qe.pathToFileURL=Jw,qe.fileURLToPath=Xw,uv=qe.Url,cv=qe.format,fv=qe.resolve,hv=qe.resolveObject,dv=qe.parse,pv=qe.URL,gv=92,mv=47,yv=97,_v=122,wl=Gm==="win32",bv=/\//g,wv=/%/g,vv=/\\/g,Ev=/\n/g,Sv=/\r/g,Av=/\t/g}),Kk=Ae((e,t)=>{_e(),we(),be(),t.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),pp=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0}),e.BufferedDuplex=e.writev=void 0;var t=Hi(),r=(wt(),Ge(bt));function n(i,s){let a=new Array(i.length);for(let l=0;l<i.length;l++)typeof i[l].chunk=="string"?a[l]=r.Buffer.from(i[l].chunk,"utf8"):a[l]=i[l].chunk;this._write(r.Buffer.concat(a),"binary",s)}e.writev=n;var o=class extends t.Duplex{constructor(i,s,a){super({objectMode:!0}),this.proxy=s,this.socket=a,this.writeQueue=[],i.objectMode||(this._writev=n.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",l=>{this.destroyed||this.push(l)})}_read(i){this.proxy.read(i)}_write(i,s,a){this.isSocketOpen?this.writeToProxy(i,s,a):this.writeQueue.push({chunk:i,encoding:s,cb:a})}_final(i){this.writeQueue=[],this.proxy.end(i)}_destroy(i,s){this.writeQueue=[],this.proxy.destroy(),s(i)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(i,s,a){this.proxy.write(i,s)===!1?this.proxy.once("drain",a):a()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:i,encoding:s,cb:a}=this.writeQueue.shift();this.writeToProxy(i,s,a)}}};e.BufferedDuplex=o}),Sa=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(k){return k&&k.__esModule?k:{default:k}};Object.defineProperty(e,"__esModule",{value:!0}),e.streamBuilder=e.browserStreamBuilder=void 0;var r=(wt(),Ge(bt)),n=t(Kk()),o=t(pn()),i=Hi(),s=t(uu()),a=pp(),l=(0,o.default)("mqttjs:ws"),u=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function c(k,C){let A=`${k.protocol}://${k.hostname}:${k.port}${k.path}`;return typeof k.transformWsUrl=="function"&&(A=k.transformWsUrl(A,k,C)),A}function d(k){let C=k;return k.port||(k.protocol==="wss"?C.port=443:C.port=80),k.path||(C.path="/"),k.wsOptions||(C.wsOptions={}),!s.default&&!k.forceNativeWebSocket&&k.protocol==="wss"&&u.forEach(A=>{Object.prototype.hasOwnProperty.call(k,A)&&!Object.prototype.hasOwnProperty.call(k.wsOptions,A)&&(C.wsOptions[A]=k[A])}),C}function p(k){let C=d(k);if(C.hostname||(C.hostname=C.host),!C.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let A=new URL(document.URL);C.hostname=A.hostname,C.port||(C.port=Number(A.port))}return C.objectMode===void 0&&(C.objectMode=!(C.binary===!0||C.binary===void 0)),C}function m(k,C,A){l("createWebSocket"),l(`protocol: ${A.protocolId} ${A.protocolVersion}`);let M=A.protocolId==="MQIsdp"&&A.protocolVersion===3?"mqttv3.1":"mqtt";l(`creating new Websocket for url: ${C} and protocol: ${M}`);let $;return A.createWebsocket?$=A.createWebsocket(C,[M],A):$=new n.default(C,[M],A.wsOptions),$}function _(k,C){let A=C.protocolId==="MQIsdp"&&C.protocolVersion===3?"mqttv3.1":"mqtt",M=c(C,k),$;return C.createWebsocket?$=C.createWebsocket(M,[A],C):$=new WebSocket(M,[A]),$.binaryType="arraybuffer",$}var b=(k,C)=>{l("streamBuilder");let A=d(C);A.hostname=A.hostname||A.host||"localhost";let M=c(A,k),$=m(k,M,A),R=n.default.createWebSocketStream($,A.wsOptions);return R.url=M,$.on("close",()=>{R.destroy()}),R};e.streamBuilder=b;var T=(k,C)=>{l("browserStreamBuilder");let A,M=p(C).browserBufferSize||1024*512,$=C.browserBufferTimeout||1e3,R=!C.objectMode,D=_(k,C),j=se(C,ne,ue);C.objectMode||(j._writev=a.writev.bind(j)),j.on("close",()=>{D.close()});let z=typeof D.addEventListener<"u";D.readyState===D.OPEN?(A=j,A.socket=D):(A=new a.BufferedDuplex(C,j,D),z?D.addEventListener("open",re):D.onopen=re),z?(D.addEventListener("close",L),D.addEventListener("error",B),D.addEventListener("message",oe)):(D.onclose=L,D.onerror=B,D.onmessage=oe);function se(ae,G,pe){let de=new i.Transform({objectMode:ae.objectMode});return de._write=G,de._flush=pe,de}function re(){l("WebSocket onOpen"),A instanceof a.BufferedDuplex&&A.socketReady()}function L(ae){l("WebSocket onClose",ae),A.end(),A.destroy()}function B(ae){l("WebSocket onError",ae);let G=new Error("WebSocket error");G.event=ae,A.destroy(G)}async function oe(ae){let{data:G}=ae;G instanceof ArrayBuffer?G=r.Buffer.from(G):G instanceof Blob?G=r.Buffer.from(await new Response(G).arrayBuffer()):G=r.Buffer.from(G,"utf8"),j&&!j.destroyed&&j.push(G)}function ne(ae,G,pe){if(D.bufferedAmount>M){setTimeout(ne,$,ae,G,pe);return}R&&typeof ae=="string"&&(ae=r.Buffer.from(ae,"utf8"));try{D.send(ae)}catch(de){return pe(de)}pe()}function ue(ae){D.close(),ae()}return A};e.browserStreamBuilder=T}),gp={};Fi(gp,{Server:()=>rt,Socket:()=>rt,Stream:()=>rt,_createServerHandle:()=>rt,_normalizeArgs:()=>rt,_setSimultaneousAccepts:()=>rt,connect:()=>rt,createConnection:()=>rt,createServer:()=>rt,default:()=>Tv,isIP:()=>rt,isIPv4:()=>rt,isIPv6:()=>rt});function rt(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var Tv,xv=_t(()=>{_e(),we(),be(),Tv={_createServerHandle:rt,_normalizeArgs:rt,_setSimultaneousAccepts:rt,connect:rt,createConnection:rt,createServer:rt,isIP:rt,isIPv4:rt,isIPv6:rt,Server:rt,Socket:rt,Stream:rt}}),Qm=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((xv(),Ge(gp))),n=t(pn()),o=(0,n.default)("mqttjs:tcp"),i=(s,a)=>{a.port=a.port||1883,a.hostname=a.hostname||a.host||"localhost";let{port:l,path:u}=a,c=a.hostname;return o("port %d and host %s",l,c),r.default.createConnection({port:l,host:c,path:u})};e.default=i}),Iv={};Fi(Iv,{default:()=>Cv});var Cv,Yk=_t(()=>{_e(),we(),be(),Cv={}}),Xm=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(e,"__esModule",{value:!0});var r=t((Yk(),Ge(Iv))),n=t((xv(),Ge(gp))),o=t(pn()),i=(0,o.default)("mqttjs:tls"),s=(a,l)=>{l.port=l.port||8883,l.host=l.hostname||l.host||"localhost",n.default.isIP(l.host)===0&&(l.servername=l.host),l.rejectUnauthorized=l.rejectUnauthorized!==!1,delete l.path,i("port %d host %s rejectUnauthorized %b",l.port,l.host,l.rejectUnauthorized);let u=r.default.connect(l);u.on("secureConnect",()=>{l.rejectUnauthorized&&!u.authorized?u.emit("error",new Error("TLS not authorized")):u.removeListener("error",c)});function c(d){l.rejectUnauthorized&&a.emit("error",d),u.end()}return u.on("error",c),u};e.default=s}),Jm=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=(wt(),Ge(bt)),r=Hi(),n=pp(),o,i,s;function a(){let p=new r.Transform;return p._write=(m,_,b)=>{o.send({data:m.buffer,success(){b()},fail(T){b(new Error(T))}})},p._flush=m=>{o.close({success(){m()}})},p}function l(p){p.hostname||(p.hostname="localhost"),p.path||(p.path="/"),p.wsOptions||(p.wsOptions={})}function u(p,m){let _=p.protocol==="wxs"?"wss":"ws",b=`${_}://${p.hostname}${p.path}`;return p.port&&p.port!==80&&p.port!==443&&(b=`${_}://${p.hostname}:${p.port}${p.path}`),typeof p.transformWsUrl=="function"&&(b=p.transformWsUrl(b,p,m)),b}function c(){o.onOpen(()=>{s.socketReady()}),o.onMessage(p=>{let{data:m}=p;m instanceof ArrayBuffer?m=t.Buffer.from(m):m=t.Buffer.from(m,"utf8"),i.push(m)}),o.onClose(()=>{s.emit("close"),s.end(),s.destroy()}),o.onError(p=>{let m=new Error(p.errMsg);s.destroy(m)})}var d=(p,m)=>{if(m.hostname=m.hostname||m.host,!m.hostname)throw new Error("Could not determine host. Specify host manually.");let _=m.protocolId==="MQIsdp"&&m.protocolVersion===3?"mqttv3.1":"mqtt";l(m);let b=u(m,p);o=wx.connectSocket({url:b,protocols:[_]}),i=a(),s=new n.BufferedDuplex(m,i,o),s._destroy=(k,C)=>{o.close({success(){C&&C(k)}})};let T=s.destroy;return s.destroy=(k,C)=>(s.destroy=T,setTimeout(()=>{o.close({fail(){s._destroy(k,C)}})},0),s),c(),s};e.default=d}),Zm=Ae(e=>{_e(),we(),be(),Object.defineProperty(e,"__esModule",{value:!0});var t=(wt(),Ge(bt)),r=Hi(),n=pp(),o,i,s,a=!1;function l(){let m=new r.Transform;return m._write=(_,b,T)=>{o.sendSocketMessage({data:_.buffer,success(){T()},fail(){T(new Error)}})},m._flush=_=>{o.closeSocket({success(){_()}})},m}function u(m){m.hostname||(m.hostname="localhost"),m.path||(m.path="/"),m.wsOptions||(m.wsOptions={})}function c(m,_){let b=m.protocol==="alis"?"wss":"ws",T=`${b}://${m.hostname}${m.path}`;return m.port&&m.port!==80&&m.port!==443&&(T=`${b}://${m.hostname}:${m.port}${m.path}`),typeof m.transformWsUrl=="function"&&(T=m.transformWsUrl(T,m,_)),T}function d(){a||(a=!0,o.onSocketOpen(()=>{s.socketReady()}),o.onSocketMessage(m=>{if(typeof m.data=="string"){let _=t.Buffer.from(m.data,"base64");i.push(_)}else{let _=new FileReader;_.addEventListener("load",()=>{let b=_.result;b instanceof ArrayBuffer?b=t.Buffer.from(b):b=t.Buffer.from(b,"utf8"),i.push(b)}),_.readAsArrayBuffer(m.data)}}),o.onSocketClose(()=>{s.end(),s.destroy()}),o.onSocketError(m=>{s.destroy(m)}))}var p=(m,_)=>{if(_.hostname=_.hostname||_.host,!_.hostname)throw new Error("Could not determine host. Specify host manually.");let b=_.protocolId==="MQIsdp"&&_.protocolVersion===3?"mqttv3.1":"mqtt";u(_);let T=c(_,m);return o=_.my,o.connectSocket({url:T,protocols:b}),i=l(),s=new n.BufferedDuplex(_,i,o),d(),s};e.default=p}),zk=Ae(e=>{_e(),we(),be();var t=e&&e.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(e,"__esModule",{value:!0}),e.connectAsync=void 0;var r=t(pn()),n=t((qk(),Ge(Qw))),o=t(kh()),i=t(uu());typeof(We==null?void 0:We.nextTick)!="function"&&(We.nextTick=setImmediate);var s=(0,r.default)("mqttjs"),a=null;function l(d){let p;d.auth&&(p=d.auth.match(/^(.+):(.+)$/),p?(d.username=p[1],d.password=p[2]):d.username=d.auth)}function u(d,p){var m,_,b,T;if(s("connecting to an MQTT broker..."),typeof d=="object"&&!p&&(p=d,d=""),p=p||{},d&&typeof d=="string"){let A=n.default.parse(d,!0),M={};if(A.port!=null&&(M.port=Number(A.port)),M.host=A.hostname,M.query=A.query,M.auth=A.auth,M.protocol=A.protocol,M.path=A.path,M.protocol=(m=M.protocol)===null||m===void 0?void 0:m.replace(/:$/,""),p=Object.assign(Object.assign({},M),p),!p.protocol)throw new Error("Missing protocol")}if(p.unixSocket=p.unixSocket||((_=p.protocol)===null||_===void 0?void 0:_.includes("+unix")),p.unixSocket?p.protocol=p.protocol.replace("+unix",""):!(!((b=p.protocol)===null||b===void 0)&&b.startsWith("ws"))&&!(!((T=p.protocol)===null||T===void 0)&&T.startsWith("wx"))&&delete p.path,l(p),p.query&&typeof p.query.clientId=="string"&&(p.clientId=p.query.clientId),p.cert&&p.key)if(p.protocol){if(["mqtts","wss","wxs","alis"].indexOf(p.protocol)===-1)switch(p.protocol){case"mqtt":p.protocol="mqtts";break;case"ws":p.protocol="wss";break;case"wx":p.protocol="wxs";break;case"ali":p.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${p.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(a||(a={},!i.default&&!p.forceNativeWebSocket?(a.ws=Sa().streamBuilder,a.wss=Sa().streamBuilder,a.mqtt=Qm().default,a.tcp=Qm().default,a.ssl=Xm().default,a.tls=a.ssl,a.mqtts=Xm().default):(a.ws=Sa().browserStreamBuilder,a.wss=Sa().browserStreamBuilder,a.wx=Jm().default,a.wxs=Jm().default,a.ali=Zm().default,a.alis=Zm().default)),!a[p.protocol]){let A=["mqtts","wss"].indexOf(p.protocol)!==-1;p.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((M,$)=>A&&$%2===0?!1:typeof a[M]=="function")[0]}if(p.clean===!1&&!p.clientId)throw new Error("Missing clientId for unclean clients");p.protocol&&(p.defaultProtocol=p.protocol);function k(A){return p.servers&&((!A._reconnectCount||A._reconnectCount===p.servers.length)&&(A._reconnectCount=0),p.host=p.servers[A._reconnectCount].host,p.port=p.servers[A._reconnectCount].port,p.protocol=p.servers[A._reconnectCount].protocol?p.servers[A._reconnectCount].protocol:p.defaultProtocol,p.hostname=p.host,A._reconnectCount++),s("calling streambuilder for",p.protocol),a[p.protocol](A,p)}let C=new o.default(k,p);return C.on("error",()=>{}),C}function c(d,p,m=!0){return new Promise((_,b)=>{let T=u(d,p),k={connect:A=>{C(),_(T)},end:()=>{C(),_(T)},error:A=>{C(),T.end(),b(A)}};m===!1&&(k.close=()=>{k.error(new Error("Couldn't connect to server"))});function C(){Object.keys(k).forEach(A=>{T.off(A,k[A])})}Object.keys(k).forEach(A=>{T.on(A,k[A])})})}e.connectAsync=c,e.default=u}),e0=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(m,_,b,T){T===void 0&&(T=b);var k=Object.getOwnPropertyDescriptor(_,b);(!k||("get"in k?!_.__esModule:k.writable||k.configurable))&&(k={enumerable:!0,get:function(){return _[b]}}),Object.defineProperty(m,T,k)}:function(m,_,b,T){T===void 0&&(T=b),m[T]=_[b]}),r=e&&e.__setModuleDefault||(Object.create?function(m,_){Object.defineProperty(m,"default",{enumerable:!0,value:_})}:function(m,_){m.default=_}),n=e&&e.__importStar||function(m){if(m&&m.__esModule)return m;var _={};if(m!=null)for(var b in m)b!=="default"&&Object.prototype.hasOwnProperty.call(m,b)&&t(_,m,b);return r(_,m),_},o=e&&e.__exportStar||function(m,_){for(var b in m)b!=="default"&&!Object.prototype.hasOwnProperty.call(_,b)&&t(_,m,b)},i=e&&e.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};Object.defineProperty(e,"__esModule",{value:!0}),e.ReasonCodes=e.KeepaliveManager=e.UniqueMessageIdProvider=e.DefaultMessageIdProvider=e.Store=e.MqttClient=e.connectAsync=e.connect=e.Client=void 0;var s=i(kh());e.MqttClient=s.default;var a=i(Iw());e.DefaultMessageIdProvider=a.default;var l=i(Rk());e.UniqueMessageIdProvider=l.default;var u=i(Cw());e.Store=u.default;var c=n(zk());e.connect=c.default,Object.defineProperty(e,"connectAsync",{enumerable:!0,get:function(){return c.connectAsync}});var d=i(Vw());e.KeepaliveManager=d.default,e.Client=s.default,o(kh(),e),o(Qo(),e);var p=lu();Object.defineProperty(e,"ReasonCodes",{enumerable:!0,get:function(){return p.ReasonCodes}})}),Gk=Ae(e=>{_e(),we(),be();var t=e&&e.__createBinding||(Object.create?function(s,a,l,u){u===void 0&&(u=l);var c=Object.getOwnPropertyDescriptor(a,l);(!c||("get"in c?!a.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return a[l]}}),Object.defineProperty(s,u,c)}:function(s,a,l,u){u===void 0&&(u=l),s[u]=a[l]}),r=e&&e.__setModuleDefault||(Object.create?function(s,a){Object.defineProperty(s,"default",{enumerable:!0,value:a})}:function(s,a){s.default=a}),n=e&&e.__importStar||function(s){if(s&&s.__esModule)return s;var a={};if(s!=null)for(var l in s)l!=="default"&&Object.prototype.hasOwnProperty.call(s,l)&&t(a,s,l);return r(a,s),a},o=e&&e.__exportStar||function(s,a){for(var l in s)l!=="default"&&!Object.prototype.hasOwnProperty.call(a,l)&&t(a,s,l)};Object.defineProperty(e,"__esModule",{value:!0});var i=n(e0());e.default=i,o(e0(),e)});const _3=Gk();/*! Bundled license information:
+
+@jspm/core/nodelibs/browser/buffer.js:
+  (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
+*/var mp={exports:{}},Rv={exports:{}},vc={exports:{}},Zt={},cu={};cu.byteLength=Jk;cu.toByteArray=eM;cu.fromByteArray=nM;var Or=[],rr=[],Qk=typeof Uint8Array<"u"?Uint8Array:Array,Ec="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var ro=0,Xk=Ec.length;ro<Xk;++ro)Or[ro]=Ec[ro],rr[Ec.charCodeAt(ro)]=ro;rr[45]=62;rr[95]=63;function Ov(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function Jk(e){var t=Ov(e),r=t[0],n=t[1];return(r+n)*3/4-n}function Zk(e,t,r){return(t+r)*3/4-r}function eM(e){var t,r=Ov(e),n=r[0],o=r[1],i=new Qk(Zk(e,n,o)),s=0,a=o>0?n-4:n,l;for(l=0;l<a;l+=4)t=rr[e.charCodeAt(l)]<<18|rr[e.charCodeAt(l+1)]<<12|rr[e.charCodeAt(l+2)]<<6|rr[e.charCodeAt(l+3)],i[s++]=t>>16&255,i[s++]=t>>8&255,i[s++]=t&255;return o===2&&(t=rr[e.charCodeAt(l)]<<2|rr[e.charCodeAt(l+1)]>>4,i[s++]=t&255),o===1&&(t=rr[e.charCodeAt(l)]<<10|rr[e.charCodeAt(l+1)]<<4|rr[e.charCodeAt(l+2)]>>2,i[s++]=t>>8&255,i[s++]=t&255),i}function tM(e){return Or[e>>18&63]+Or[e>>12&63]+Or[e>>6&63]+Or[e&63]}function rM(e,t,r){for(var n,o=[],i=t;i<r;i+=3)n=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(e[i+2]&255),o.push(tM(n));return o.join("")}function nM(e){for(var t,r=e.length,n=r%3,o=[],i=16383,s=0,a=r-n;s<a;s+=i)o.push(rM(e,s,s+i>a?a:s+i));return n===1?(t=e[r-1],o.push(Or[t>>2]+Or[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],o.push(Or[t>>10]+Or[t>>4&63]+Or[t<<2&63]+"=")),o.join("")}var yp={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */yp.read=function(e,t,r,n,o){var i,s,a=o*8-n-1,l=(1<<a)-1,u=l>>1,c=-7,d=r?o-1:0,p=r?-1:1,m=e[t+d];for(d+=p,i=m&(1<<-c)-1,m>>=-c,c+=a;c>0;i=i*256+e[t+d],d+=p,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=n;c>0;s=s*256+e[t+d],d+=p,c-=8);if(i===0)i=1-u;else{if(i===l)return s?NaN:(m?-1:1)*(1/0);s=s+Math.pow(2,n),i=i-u}return(m?-1:1)*s*Math.pow(2,i-n)};yp.write=function(e,t,r,n,o,i){var s,a,l,u=i*8-o-1,c=(1<<u)-1,d=c>>1,p=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,m=n?0:i-1,_=n?1:-1,b=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+d>=1?t+=p/l:t+=p*Math.pow(2,1-d),t*l>=2&&(s++,l/=2),s+d>=c?(a=0,s=c):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s=s+d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+m]=a&255,m+=_,a/=256,o-=8);for(s=s<<o|a,u+=o;u>0;e[r+m]=s&255,m+=_,s/=256,u-=8);e[r+m-_]|=b*128};/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <https://feross.org>
+ * @license  MIT
+ */(function(e){const t=cu,r=yp,n=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=C,e.INSPECT_MAX_BYTES=50;const o=2147483647;e.kMaxLength=o,a.TYPED_ARRAY_SUPPORT=i(),!a.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function i(){try{const h=new Uint8Array(1),f={foo:function(){return 42}};return Object.setPrototypeOf(f,Uint8Array.prototype),Object.setPrototypeOf(h,f),h.foo()===42}catch{return!1}}Object.defineProperty(a.prototype,"parent",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}});function s(h){if(h>o)throw new RangeError('The value "'+h+'" is invalid for option "size"');const f=new Uint8Array(h);return Object.setPrototypeOf(f,a.prototype),f}function a(h,f,g){if(typeof h=="number"){if(typeof f=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return d(h)}return l(h,f,g)}a.poolSize=8192;function l(h,f,g){if(typeof h=="string")return p(h,f);if(ArrayBuffer.isView(h))return _(h);if(h==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof h);if(x(h,ArrayBuffer)||h&&x(h.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(x(h,SharedArrayBuffer)||h&&x(h.buffer,SharedArrayBuffer)))return b(h,f,g);if(typeof h=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const w=h.valueOf&&h.valueOf();if(w!=null&&w!==h)return a.from(w,f,g);const I=T(h);if(I)return I;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof h[Symbol.toPrimitive]=="function")return a.from(h[Symbol.toPrimitive]("string"),f,g);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof h)}a.from=function(h,f,g){return l(h,f,g)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array);function u(h){if(typeof h!="number")throw new TypeError('"size" argument must be of type number');if(h<0)throw new RangeError('The value "'+h+'" is invalid for option "size"')}function c(h,f,g){return u(h),h<=0?s(h):f!==void 0?typeof g=="string"?s(h).fill(f,g):s(h).fill(f):s(h)}a.alloc=function(h,f,g){return c(h,f,g)};function d(h){return u(h),s(h<0?0:k(h)|0)}a.allocUnsafe=function(h){return d(h)},a.allocUnsafeSlow=function(h){return d(h)};function p(h,f){if((typeof f!="string"||f==="")&&(f="utf8"),!a.isEncoding(f))throw new TypeError("Unknown encoding: "+f);const g=A(h,f)|0;let w=s(g);const I=w.write(h,f);return I!==g&&(w=w.slice(0,I)),w}function m(h){const f=h.length<0?0:k(h.length)|0,g=s(f);for(let w=0;w<f;w+=1)g[w]=h[w]&255;return g}function _(h){if(x(h,Uint8Array)){const f=new Uint8Array(h);return b(f.buffer,f.byteOffset,f.byteLength)}return m(h)}function b(h,f,g){if(f<0||h.byteLength<f)throw new RangeError('"offset" is outside of buffer bounds');if(h.byteLength<f+(g||0))throw new RangeError('"length" is outside of buffer bounds');let w;return f===void 0&&g===void 0?w=new Uint8Array(h):g===void 0?w=new Uint8Array(h,f):w=new Uint8Array(h,f,g),Object.setPrototypeOf(w,a.prototype),w}function T(h){if(a.isBuffer(h)){const f=k(h.length)|0,g=s(f);return g.length===0||h.copy(g,0,0,f),g}if(h.length!==void 0)return typeof h.length!="number"||K(h.length)?s(0):m(h);if(h.type==="Buffer"&&Array.isArray(h.data))return m(h.data)}function k(h){if(h>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return h|0}function C(h){return+h!=h&&(h=0),a.alloc(+h)}a.isBuffer=function(f){return f!=null&&f._isBuffer===!0&&f!==a.prototype},a.compare=function(f,g){if(x(f,Uint8Array)&&(f=a.from(f,f.offset,f.byteLength)),x(g,Uint8Array)&&(g=a.from(g,g.offset,g.byteLength)),!a.isBuffer(f)||!a.isBuffer(g))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(f===g)return 0;let w=f.length,I=g.length;for(let W=0,ce=Math.min(w,I);W<ce;++W)if(f[W]!==g[W]){w=f[W],I=g[W];break}return w<I?-1:I<w?1:0},a.isEncoding=function(f){switch(String(f).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},a.concat=function(f,g){if(!Array.isArray(f))throw new TypeError('"list" argument must be an Array of Buffers');if(f.length===0)return a.alloc(0);let w;if(g===void 0)for(g=0,w=0;w<f.length;++w)g+=f[w].length;const I=a.allocUnsafe(g);let W=0;for(w=0;w<f.length;++w){let ce=f[w];if(x(ce,Uint8Array))W+ce.length>I.length?(a.isBuffer(ce)||(ce=a.from(ce)),ce.copy(I,W)):Uint8Array.prototype.set.call(I,ce,W);else if(a.isBuffer(ce))ce.copy(I,W);else throw new TypeError('"list" argument must be an Array of Buffers');W+=ce.length}return I};function A(h,f){if(a.isBuffer(h))return h.length;if(ArrayBuffer.isView(h)||x(h,ArrayBuffer))return h.byteLength;if(typeof h!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof h);const g=h.length,w=arguments.length>2&&arguments[2]===!0;if(!w&&g===0)return 0;let I=!1;for(;;)switch(f){case"ascii":case"latin1":case"binary":return g;case"utf8":case"utf-8":return P(h).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return g*2;case"hex":return g>>>1;case"base64":return U(h).length;default:if(I)return w?-1:P(h).length;f=(""+f).toLowerCase(),I=!0}}a.byteLength=A;function M(h,f,g){let w=!1;if((f===void 0||f<0)&&(f=0),f>this.length||((g===void 0||g>this.length)&&(g=this.length),g<=0)||(g>>>=0,f>>>=0,g<=f))return"";for(h||(h="utf8");;)switch(h){case"hex":return pe(this,f,g);case"utf8":case"utf-8":return oe(this,f,g);case"ascii":return ae(this,f,g);case"latin1":case"binary":return G(this,f,g);case"base64":return B(this,f,g);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return de(this,f,g);default:if(w)throw new TypeError("Unknown encoding: "+h);h=(h+"").toLowerCase(),w=!0}}a.prototype._isBuffer=!0;function $(h,f,g){const w=h[f];h[f]=h[g],h[g]=w}a.prototype.swap16=function(){const f=this.length;if(f%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let g=0;g<f;g+=2)$(this,g,g+1);return this},a.prototype.swap32=function(){const f=this.length;if(f%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let g=0;g<f;g+=4)$(this,g,g+3),$(this,g+1,g+2);return this},a.prototype.swap64=function(){const f=this.length;if(f%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let g=0;g<f;g+=8)$(this,g,g+7),$(this,g+1,g+6),$(this,g+2,g+5),$(this,g+3,g+4);return this},a.prototype.toString=function(){const f=this.length;return f===0?"":arguments.length===0?oe(this,0,f):M.apply(this,arguments)},a.prototype.toLocaleString=a.prototype.toString,a.prototype.equals=function(f){if(!a.isBuffer(f))throw new TypeError("Argument must be a Buffer");return this===f?!0:a.compare(this,f)===0},a.prototype.inspect=function(){let f="";const g=e.INSPECT_MAX_BYTES;return f=this.toString("hex",0,g).replace(/(.{2})/g,"$1 ").trim(),this.length>g&&(f+=" ... "),"<Buffer "+f+">"},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(f,g,w,I,W){if(x(f,Uint8Array)&&(f=a.from(f,f.offset,f.byteLength)),!a.isBuffer(f))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof f);if(g===void 0&&(g=0),w===void 0&&(w=f?f.length:0),I===void 0&&(I=0),W===void 0&&(W=this.length),g<0||w>f.length||I<0||W>this.length)throw new RangeError("out of range index");if(I>=W&&g>=w)return 0;if(I>=W)return-1;if(g>=w)return 1;if(g>>>=0,w>>>=0,I>>>=0,W>>>=0,this===f)return 0;let ce=W-I,xe=w-g;const ke=Math.min(ce,xe),Te=this.slice(I,W),Oe=f.slice(g,w);for(let Re=0;Re<ke;++Re)if(Te[Re]!==Oe[Re]){ce=Te[Re],xe=Oe[Re];break}return ce<xe?-1:xe<ce?1:0};function R(h,f,g,w,I){if(h.length===0)return-1;if(typeof g=="string"?(w=g,g=0):g>2147483647?g=2147483647:g<-2147483648&&(g=-2147483648),g=+g,K(g)&&(g=I?0:h.length-1),g<0&&(g=h.length+g),g>=h.length){if(I)return-1;g=h.length-1}else if(g<0)if(I)g=0;else return-1;if(typeof f=="string"&&(f=a.from(f,w)),a.isBuffer(f))return f.length===0?-1:D(h,f,g,w,I);if(typeof f=="number")return f=f&255,typeof Uint8Array.prototype.indexOf=="function"?I?Uint8Array.prototype.indexOf.call(h,f,g):Uint8Array.prototype.lastIndexOf.call(h,f,g):D(h,[f],g,w,I);throw new TypeError("val must be string, number or Buffer")}function D(h,f,g,w,I){let W=1,ce=h.length,xe=f.length;if(w!==void 0&&(w=String(w).toLowerCase(),w==="ucs2"||w==="ucs-2"||w==="utf16le"||w==="utf-16le")){if(h.length<2||f.length<2)return-1;W=2,ce/=2,xe/=2,g/=2}function ke(Oe,Re){return W===1?Oe[Re]:Oe.readUInt16BE(Re*W)}let Te;if(I){let Oe=-1;for(Te=g;Te<ce;Te++)if(ke(h,Te)===ke(f,Oe===-1?0:Te-Oe)){if(Oe===-1&&(Oe=Te),Te-Oe+1===xe)return Oe*W}else Oe!==-1&&(Te-=Te-Oe),Oe=-1}else for(g+xe>ce&&(g=ce-xe),Te=g;Te>=0;Te--){let Oe=!0;for(let Re=0;Re<xe;Re++)if(ke(h,Te+Re)!==ke(f,Re)){Oe=!1;break}if(Oe)return Te}return-1}a.prototype.includes=function(f,g,w){return this.indexOf(f,g,w)!==-1},a.prototype.indexOf=function(f,g,w){return R(this,f,g,w,!0)},a.prototype.lastIndexOf=function(f,g,w){return R(this,f,g,w,!1)};function j(h,f,g,w){g=Number(g)||0;const I=h.length-g;w?(w=Number(w),w>I&&(w=I)):w=I;const W=f.length;w>W/2&&(w=W/2);let ce;for(ce=0;ce<w;++ce){const xe=parseInt(f.substr(ce*2,2),16);if(K(xe))return ce;h[g+ce]=xe}return ce}function z(h,f,g,w){return q(P(f,h.length-g),h,g,w)}function se(h,f,g,w){return q(J(f),h,g,w)}function re(h,f,g,w){return q(U(f),h,g,w)}function L(h,f,g,w){return q(te(f,h.length-g),h,g,w)}a.prototype.write=function(f,g,w,I){if(g===void 0)I="utf8",w=this.length,g=0;else if(w===void 0&&typeof g=="string")I=g,w=this.length,g=0;else if(isFinite(g))g=g>>>0,isFinite(w)?(w=w>>>0,I===void 0&&(I="utf8")):(I=w,w=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const W=this.length-g;if((w===void 0||w>W)&&(w=W),f.length>0&&(w<0||g<0)||g>this.length)throw new RangeError("Attempt to write outside buffer bounds");I||(I="utf8");let ce=!1;for(;;)switch(I){case"hex":return j(this,f,g,w);case"utf8":case"utf-8":return z(this,f,g,w);case"ascii":case"latin1":case"binary":return se(this,f,g,w);case"base64":return re(this,f,g,w);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,f,g,w);default:if(ce)throw new TypeError("Unknown encoding: "+I);I=(""+I).toLowerCase(),ce=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function B(h,f,g){return f===0&&g===h.length?t.fromByteArray(h):t.fromByteArray(h.slice(f,g))}function oe(h,f,g){g=Math.min(h.length,g);const w=[];let I=f;for(;I<g;){const W=h[I];let ce=null,xe=W>239?4:W>223?3:W>191?2:1;if(I+xe<=g){let ke,Te,Oe,Re;switch(xe){case 1:W<128&&(ce=W);break;case 2:ke=h[I+1],(ke&192)===128&&(Re=(W&31)<<6|ke&63,Re>127&&(ce=Re));break;case 3:ke=h[I+1],Te=h[I+2],(ke&192)===128&&(Te&192)===128&&(Re=(W&15)<<12|(ke&63)<<6|Te&63,Re>2047&&(Re<55296||Re>57343)&&(ce=Re));break;case 4:ke=h[I+1],Te=h[I+2],Oe=h[I+3],(ke&192)===128&&(Te&192)===128&&(Oe&192)===128&&(Re=(W&15)<<18|(ke&63)<<12|(Te&63)<<6|Oe&63,Re>65535&&Re<1114112&&(ce=Re))}}ce===null?(ce=65533,xe=1):ce>65535&&(ce-=65536,w.push(ce>>>10&1023|55296),ce=56320|ce&1023),w.push(ce),I+=xe}return ue(w)}const ne=4096;function ue(h){const f=h.length;if(f<=ne)return String.fromCharCode.apply(String,h);let g="",w=0;for(;w<f;)g+=String.fromCharCode.apply(String,h.slice(w,w+=ne));return g}function ae(h,f,g){let w="";g=Math.min(h.length,g);for(let I=f;I<g;++I)w+=String.fromCharCode(h[I]&127);return w}function G(h,f,g){let w="";g=Math.min(h.length,g);for(let I=f;I<g;++I)w+=String.fromCharCode(h[I]);return w}function pe(h,f,g){const w=h.length;(!f||f<0)&&(f=0),(!g||g<0||g>w)&&(g=w);let I="";for(let W=f;W<g;++W)I+=Y[h[W]];return I}function de(h,f,g){const w=h.slice(f,g);let I="";for(let W=0;W<w.length-1;W+=2)I+=String.fromCharCode(w[W]+w[W+1]*256);return I}a.prototype.slice=function(f,g){const w=this.length;f=~~f,g=g===void 0?w:~~g,f<0?(f+=w,f<0&&(f=0)):f>w&&(f=w),g<0?(g+=w,g<0&&(g=0)):g>w&&(g=w),g<f&&(g=f);const I=this.subarray(f,g);return Object.setPrototypeOf(I,a.prototype),I};function ge(h,f,g){if(h%1!==0||h<0)throw new RangeError("offset is not uint");if(h+f>g)throw new RangeError("Trying to access beyond buffer length")}a.prototype.readUintLE=a.prototype.readUIntLE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let I=this[f],W=1,ce=0;for(;++ce<g&&(W*=256);)I+=this[f+ce]*W;return I},a.prototype.readUintBE=a.prototype.readUIntBE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let I=this[f+--g],W=1;for(;g>0&&(W*=256);)I+=this[f+--g]*W;return I},a.prototype.readUint8=a.prototype.readUInt8=function(f,g){return f=f>>>0,g||ge(f,1,this.length),this[f]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(f,g){return f=f>>>0,g||ge(f,2,this.length),this[f]|this[f+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(f,g){return f=f>>>0,g||ge(f,2,this.length),this[f]<<8|this[f+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),(this[f]|this[f+1]<<8|this[f+2]<<16)+this[f+3]*16777216},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),this[f]*16777216+(this[f+1]<<16|this[f+2]<<8|this[f+3])},a.prototype.readBigUInt64LE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&S(f,this.length-8);const I=g+this[++f]*2**8+this[++f]*2**16+this[++f]*2**24,W=this[++f]+this[++f]*2**8+this[++f]*2**16+w*2**24;return BigInt(I)+(BigInt(W)<<BigInt(32))}),a.prototype.readBigUInt64BE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&S(f,this.length-8);const I=g*2**24+this[++f]*2**16+this[++f]*2**8+this[++f],W=this[++f]*2**24+this[++f]*2**16+this[++f]*2**8+w;return(BigInt(I)<<BigInt(32))+BigInt(W)}),a.prototype.readIntLE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let I=this[f],W=1,ce=0;for(;++ce<g&&(W*=256);)I+=this[f+ce]*W;return W*=128,I>=W&&(I-=Math.pow(2,8*g)),I},a.prototype.readIntBE=function(f,g,w){f=f>>>0,g=g>>>0,w||ge(f,g,this.length);let I=g,W=1,ce=this[f+--I];for(;I>0&&(W*=256);)ce+=this[f+--I]*W;return W*=128,ce>=W&&(ce-=Math.pow(2,8*g)),ce},a.prototype.readInt8=function(f,g){return f=f>>>0,g||ge(f,1,this.length),this[f]&128?(255-this[f]+1)*-1:this[f]},a.prototype.readInt16LE=function(f,g){f=f>>>0,g||ge(f,2,this.length);const w=this[f]|this[f+1]<<8;return w&32768?w|4294901760:w},a.prototype.readInt16BE=function(f,g){f=f>>>0,g||ge(f,2,this.length);const w=this[f+1]|this[f]<<8;return w&32768?w|4294901760:w},a.prototype.readInt32LE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),this[f]|this[f+1]<<8|this[f+2]<<16|this[f+3]<<24},a.prototype.readInt32BE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),this[f]<<24|this[f+1]<<16|this[f+2]<<8|this[f+3]},a.prototype.readBigInt64LE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&S(f,this.length-8);const I=this[f+4]+this[f+5]*2**8+this[f+6]*2**16+(w<<24);return(BigInt(I)<<BigInt(32))+BigInt(g+this[++f]*2**8+this[++f]*2**16+this[++f]*2**24)}),a.prototype.readBigInt64BE=le(function(f){f=f>>>0,v(f,"offset");const g=this[f],w=this[f+7];(g===void 0||w===void 0)&&S(f,this.length-8);const I=(g<<24)+this[++f]*2**16+this[++f]*2**8+this[++f];return(BigInt(I)<<BigInt(32))+BigInt(this[++f]*2**24+this[++f]*2**16+this[++f]*2**8+w)}),a.prototype.readFloatLE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),r.read(this,f,!0,23,4)},a.prototype.readFloatBE=function(f,g){return f=f>>>0,g||ge(f,4,this.length),r.read(this,f,!1,23,4)},a.prototype.readDoubleLE=function(f,g){return f=f>>>0,g||ge(f,8,this.length),r.read(this,f,!0,52,8)},a.prototype.readDoubleBE=function(f,g){return f=f>>>0,g||ge(f,8,this.length),r.read(this,f,!1,52,8)};function O(h,f,g,w,I,W){if(!a.isBuffer(h))throw new TypeError('"buffer" argument must be a Buffer instance');if(f>I||f<W)throw new RangeError('"value" argument is out of bounds');if(g+w>h.length)throw new RangeError("Index out of range")}a.prototype.writeUintLE=a.prototype.writeUIntLE=function(f,g,w,I){if(f=+f,g=g>>>0,w=w>>>0,!I){const xe=Math.pow(2,8*w)-1;O(this,f,g,w,xe,0)}let W=1,ce=0;for(this[g]=f&255;++ce<w&&(W*=256);)this[g+ce]=f/W&255;return g+w},a.prototype.writeUintBE=a.prototype.writeUIntBE=function(f,g,w,I){if(f=+f,g=g>>>0,w=w>>>0,!I){const xe=Math.pow(2,8*w)-1;O(this,f,g,w,xe,0)}let W=w-1,ce=1;for(this[g+W]=f&255;--W>=0&&(ce*=256);)this[g+W]=f/ce&255;return g+w},a.prototype.writeUint8=a.prototype.writeUInt8=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,1,255,0),this[g]=f&255,g+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,65535,0),this[g]=f&255,this[g+1]=f>>>8,g+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,65535,0),this[g]=f>>>8,this[g+1]=f&255,g+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,4294967295,0),this[g+3]=f>>>24,this[g+2]=f>>>16,this[g+1]=f>>>8,this[g]=f&255,g+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,4294967295,0),this[g]=f>>>24,this[g+1]=f>>>16,this[g+2]=f>>>8,this[g+3]=f&255,g+4};function ie(h,f,g,w,I){ee(f,w,I,h,g,7);let W=Number(f&BigInt(4294967295));h[g++]=W,W=W>>8,h[g++]=W,W=W>>8,h[g++]=W,W=W>>8,h[g++]=W;let ce=Number(f>>BigInt(32)&BigInt(4294967295));return h[g++]=ce,ce=ce>>8,h[g++]=ce,ce=ce>>8,h[g++]=ce,ce=ce>>8,h[g++]=ce,g}function me(h,f,g,w,I){ee(f,w,I,h,g,7);let W=Number(f&BigInt(4294967295));h[g+7]=W,W=W>>8,h[g+6]=W,W=W>>8,h[g+5]=W,W=W>>8,h[g+4]=W;let ce=Number(f>>BigInt(32)&BigInt(4294967295));return h[g+3]=ce,ce=ce>>8,h[g+2]=ce,ce=ce>>8,h[g+1]=ce,ce=ce>>8,h[g]=ce,g+8}a.prototype.writeBigUInt64LE=le(function(f,g=0){return ie(this,f,g,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeBigUInt64BE=le(function(f,g=0){return me(this,f,g,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeIntLE=function(f,g,w,I){if(f=+f,g=g>>>0,!I){const ke=Math.pow(2,8*w-1);O(this,f,g,w,ke-1,-ke)}let W=0,ce=1,xe=0;for(this[g]=f&255;++W<w&&(ce*=256);)f<0&&xe===0&&this[g+W-1]!==0&&(xe=1),this[g+W]=(f/ce>>0)-xe&255;return g+w},a.prototype.writeIntBE=function(f,g,w,I){if(f=+f,g=g>>>0,!I){const ke=Math.pow(2,8*w-1);O(this,f,g,w,ke-1,-ke)}let W=w-1,ce=1,xe=0;for(this[g+W]=f&255;--W>=0&&(ce*=256);)f<0&&xe===0&&this[g+W+1]!==0&&(xe=1),this[g+W]=(f/ce>>0)-xe&255;return g+w},a.prototype.writeInt8=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,1,127,-128),f<0&&(f=255+f+1),this[g]=f&255,g+1},a.prototype.writeInt16LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,32767,-32768),this[g]=f&255,this[g+1]=f>>>8,g+2},a.prototype.writeInt16BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,2,32767,-32768),this[g]=f>>>8,this[g+1]=f&255,g+2},a.prototype.writeInt32LE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,2147483647,-2147483648),this[g]=f&255,this[g+1]=f>>>8,this[g+2]=f>>>16,this[g+3]=f>>>24,g+4},a.prototype.writeInt32BE=function(f,g,w){return f=+f,g=g>>>0,w||O(this,f,g,4,2147483647,-2147483648),f<0&&(f=4294967295+f+1),this[g]=f>>>24,this[g+1]=f>>>16,this[g+2]=f>>>8,this[g+3]=f&255,g+4},a.prototype.writeBigInt64LE=le(function(f,g=0){return ie(this,f,g,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),a.prototype.writeBigInt64BE=le(function(f,g=0){return me(this,f,g,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ve(h,f,g,w,I,W){if(g+w>h.length)throw new RangeError("Index out of range");if(g<0)throw new RangeError("Index out of range")}function ye(h,f,g,w,I){return f=+f,g=g>>>0,I||ve(h,f,g,4),r.write(h,f,g,w,23,4),g+4}a.prototype.writeFloatLE=function(f,g,w){return ye(this,f,g,!0,w)},a.prototype.writeFloatBE=function(f,g,w){return ye(this,f,g,!1,w)};function V(h,f,g,w,I){return f=+f,g=g>>>0,I||ve(h,f,g,8),r.write(h,f,g,w,52,8),g+8}a.prototype.writeDoubleLE=function(f,g,w){return V(this,f,g,!0,w)},a.prototype.writeDoubleBE=function(f,g,w){return V(this,f,g,!1,w)},a.prototype.copy=function(f,g,w,I){if(!a.isBuffer(f))throw new TypeError("argument should be a Buffer");if(w||(w=0),!I&&I!==0&&(I=this.length),g>=f.length&&(g=f.length),g||(g=0),I>0&&I<w&&(I=w),I===w||f.length===0||this.length===0)return 0;if(g<0)throw new RangeError("targetStart out of bounds");if(w<0||w>=this.length)throw new RangeError("Index out of range");if(I<0)throw new RangeError("sourceEnd out of bounds");I>this.length&&(I=this.length),f.length-g<I-w&&(I=f.length-g+w);const W=I-w;return this===f&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(g,w,I):Uint8Array.prototype.set.call(f,this.subarray(w,I),g),W},a.prototype.fill=function(f,g,w,I){if(typeof f=="string"){if(typeof g=="string"?(I=g,g=0,w=this.length):typeof w=="string"&&(I=w,w=this.length),I!==void 0&&typeof I!="string")throw new TypeError("encoding must be a string");if(typeof I=="string"&&!a.isEncoding(I))throw new TypeError("Unknown encoding: "+I);if(f.length===1){const ce=f.charCodeAt(0);(I==="utf8"&&ce<128||I==="latin1")&&(f=ce)}}else typeof f=="number"?f=f&255:typeof f=="boolean"&&(f=Number(f));if(g<0||this.length<g||this.length<w)throw new RangeError("Out of range index");if(w<=g)return this;g=g>>>0,w=w===void 0?this.length:w>>>0,f||(f=0);let W;if(typeof f=="number")for(W=g;W<w;++W)this[W]=f;else{const ce=a.isBuffer(f)?f:a.from(f,I),xe=ce.length;if(xe===0)throw new TypeError('The value "'+f+'" is invalid for argument "value"');for(W=0;W<w-g;++W)this[W+g]=ce[W%xe]}return this};const F={};function Z(h,f,g){F[h]=class extends g{constructor(){super(),Object.defineProperty(this,"message",{value:f.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${h}]`,this.stack,delete this.name}get code(){return h}set code(I){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:I,writable:!0})}toString(){return`${this.name} [${h}]: ${this.message}`}}}Z("ERR_BUFFER_OUT_OF_BOUNDS",function(h){return h?`${h} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Z("ERR_INVALID_ARG_TYPE",function(h,f){return`The "${h}" argument must be of type number. Received type ${typeof f}`},TypeError),Z("ERR_OUT_OF_RANGE",function(h,f,g){let w=`The value of "${h}" is out of range.`,I=g;return Number.isInteger(g)&&Math.abs(g)>2**32?I=he(String(g)):typeof g=="bigint"&&(I=String(g),(g>BigInt(2)**BigInt(32)||g<-(BigInt(2)**BigInt(32)))&&(I=he(I)),I+="n"),w+=` It must be ${f}. Received ${I}`,w},RangeError);function he(h){let f="",g=h.length;const w=h[0]==="-"?1:0;for(;g>=w+4;g-=3)f=`_${h.slice(g-3,g)}${f}`;return`${h.slice(0,g)}${f}`}function fe(h,f,g){v(f,"offset"),(h[f]===void 0||h[f+g]===void 0)&&S(f,h.length-(g+1))}function ee(h,f,g,w,I,W){if(h>g||h<f){const ce=typeof f=="bigint"?"n":"";let xe;throw f===0||f===BigInt(0)?xe=`>= 0${ce} and < 2${ce} ** ${(W+1)*8}${ce}`:xe=`>= -(2${ce} ** ${(W+1)*8-1}${ce}) and < 2 ** ${(W+1)*8-1}${ce}`,new F.ERR_OUT_OF_RANGE("value",xe,h)}fe(w,I,W)}function v(h,f){if(typeof h!="number")throw new F.ERR_INVALID_ARG_TYPE(f,"number",h)}function S(h,f,g){throw Math.floor(h)!==h?(v(h,g),new F.ERR_OUT_OF_RANGE("offset","an integer",h)):f<0?new F.ERR_BUFFER_OUT_OF_BOUNDS:new F.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${f}`,h)}const E=/[^+/0-9A-Za-z-_]/g;function N(h){if(h=h.split("=")[0],h=h.trim().replace(E,""),h.length<2)return"";for(;h.length%4!==0;)h=h+"=";return h}function P(h,f){f=f||1/0;let g;const w=h.length;let I=null;const W=[];for(let ce=0;ce<w;++ce){if(g=h.charCodeAt(ce),g>55295&&g<57344){if(!I){if(g>56319){(f-=3)>-1&&W.push(239,191,189);continue}else if(ce+1===w){(f-=3)>-1&&W.push(239,191,189);continue}I=g;continue}if(g<56320){(f-=3)>-1&&W.push(239,191,189),I=g;continue}g=(I-55296<<10|g-56320)+65536}else I&&(f-=3)>-1&&W.push(239,191,189);if(I=null,g<128){if((f-=1)<0)break;W.push(g)}else if(g<2048){if((f-=2)<0)break;W.push(g>>6|192,g&63|128)}else if(g<65536){if((f-=3)<0)break;W.push(g>>12|224,g>>6&63|128,g&63|128)}else if(g<1114112){if((f-=4)<0)break;W.push(g>>18|240,g>>12&63|128,g>>6&63|128,g&63|128)}else throw new Error("Invalid code point")}return W}function J(h){const f=[];for(let g=0;g<h.length;++g)f.push(h.charCodeAt(g)&255);return f}function te(h,f){let g,w,I;const W=[];for(let ce=0;ce<h.length&&!((f-=2)<0);++ce)g=h.charCodeAt(ce),w=g>>8,I=g%256,W.push(I),W.push(w);return W}function U(h){return t.toByteArray(N(h))}function q(h,f,g,w){let I;for(I=0;I<w&&!(I+g>=f.length||I>=h.length);++I)f[I+g]=h[I];return I}function x(h,f){return h instanceof f||h!=null&&h.constructor!=null&&h.constructor.name!=null&&h.constructor.name===f.name}function K(h){return h!==h}const Y=function(){const h="0123456789abcdef",f=new Array(256);for(let g=0;g<16;++g){const w=g*16;for(let I=0;I<16;++I)f[w+I]=h[g]+h[I]}return f}();function le(h){return typeof BigInt>"u"?y:h}function y(){throw new Error("BigInt not supported")}})(Zt);var st={ArrayIsArray(e){return Array.isArray(e)},ArrayPrototypeIncludes(e,t){return e.includes(t)},ArrayPrototypeIndexOf(e,t){return e.indexOf(t)},ArrayPrototypeJoin(e,t){return e.join(t)},ArrayPrototypeMap(e,t){return e.map(t)},ArrayPrototypePop(e,t){return e.pop(t)},ArrayPrototypePush(e,t){return e.push(t)},ArrayPrototypeSlice(e,t,r){return e.slice(t,r)},Error,FunctionPrototypeCall(e,t,...r){return e.call(t,...r)},FunctionPrototypeSymbolHasInstance(e,t){return Function.prototype[Symbol.hasInstance].call(e,t)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(e,t){return Object.defineProperties(e,t)},ObjectDefineProperty(e,t,r){return Object.defineProperty(e,t,r)},ObjectGetOwnPropertyDescriptor(e,t){return Object.getOwnPropertyDescriptor(e,t)},ObjectKeys(e){return Object.keys(e)},ObjectSetPrototypeOf(e,t){return Object.setPrototypeOf(e,t)},Promise,PromisePrototypeCatch(e,t){return e.catch(t)},PromisePrototypeThen(e,t,r){return e.then(t,r)},PromiseReject(e){return Promise.reject(e)},PromiseResolve(e){return Promise.resolve(e)},ReflectApply:Reflect.apply,RegExpPrototypeTest(e,t){return e.test(t)},SafeSet:Set,String,StringPrototypeSlice(e,t,r){return e.slice(t,r)},StringPrototypeToLowerCase(e){return e.toLowerCase()},StringPrototypeToUpperCase(e){return e.toUpperCase()},StringPrototypeTrim(e){return e.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol("Symbol.dispose"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol("Symbol.asyncDispose"),TypedArrayPrototypeSet(e,t,r){return e.set(t,r)},Boolean,Uint8Array},kv={exports:{}},cs={exports:{}},t0;function $s(){if(t0)return cs.exports;t0=1;const{AbortController:e,AbortSignal:t}=typeof self<"u"?self:typeof window<"u"?window:void 0;return cs.exports=e,cs.exports.AbortSignal=t,cs.exports.default=e,cs.exports}var _p={exports:{}},To=typeof Reflect=="object"?Reflect:null,r0=To&&typeof To.apply=="function"?To.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},Ga;To&&typeof To.ownKeys=="function"?Ga=To.ownKeys:Object.getOwnPropertySymbols?Ga=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Ga=function(t){return Object.getOwnPropertyNames(t)};function iM(e){console&&console.warn&&console.warn(e)}var Mv=Number.isNaN||function(t){return t!==t};function Ye(){Ye.init.call(this)}_p.exports=Ye;_p.exports.once=lM;Ye.EventEmitter=Ye;Ye.prototype._events=void 0;Ye.prototype._eventsCount=0;Ye.prototype._maxListeners=void 0;var n0=10;function fu(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Ye,"defaultMaxListeners",{enumerable:!0,get:function(){return n0},set:function(e){if(typeof e!="number"||e<0||Mv(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");n0=e}});Ye.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ye.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||Mv(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function Nv(e){return e._maxListeners===void 0?Ye.defaultMaxListeners:e._maxListeners}Ye.prototype.getMaxListeners=function(){return Nv(this)};Ye.prototype.emit=function(t){for(var r=[],n=1;n<arguments.length;n++)r.push(arguments[n]);var o=t==="error",i=this._events;if(i!==void 0)o=o&&i.error===void 0;else if(!o)return!1;if(o){var s;if(r.length>0&&(s=r[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var l=i[t];if(l===void 0)return!1;if(typeof l=="function")r0(l,this,r);else for(var u=l.length,c=$v(l,u),n=0;n<u;++n)r0(c[n],this,r);return!0};function Pv(e,t,r,n){var o,i,s;if(fu(r),i=e._events,i===void 0?(i=e._events=Object.create(null),e._eventsCount=0):(i.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),s=i[t]),s===void 0)s=i[t]=r,++e._eventsCount;else if(typeof s=="function"?s=i[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),o=Nv(e),o>0&&s.length>o&&!s.warned){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=e,a.type=t,a.count=s.length,iM(a)}return e}Ye.prototype.addListener=function(t,r){return Pv(this,t,r,!1)};Ye.prototype.on=Ye.prototype.addListener;Ye.prototype.prependListener=function(t,r){return Pv(this,t,r,!0)};function oM(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Lv(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=oM.bind(n);return o.listener=r,n.wrapFn=o,o}Ye.prototype.once=function(t,r){return fu(r),this.on(t,Lv(this,t,r)),this};Ye.prototype.prependOnceListener=function(t,r){return fu(r),this.prependListener(t,Lv(this,t,r)),this};Ye.prototype.removeListener=function(t,r){var n,o,i,s,a;if(fu(r),o=this._events,o===void 0)return this;if(n=o[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete o[t],o.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===r||n[s].listener===r){a=n[s].listener,i=s;break}if(i<0)return this;i===0?n.shift():sM(n,i),n.length===1&&(o[t]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",t,a||r)}return this};Ye.prototype.off=Ye.prototype.removeListener;Ye.prototype.removeAllListeners=function(t){var r,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var i=Object.keys(n),s;for(o=0;o<i.length;++o)s=i[o],s!=="removeListener"&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=n[t],typeof r=="function")this.removeListener(t,r);else if(r!==void 0)for(o=r.length-1;o>=0;o--)this.removeListener(t,r[o]);return this};function Dv(e,t,r){var n=e._events;if(n===void 0)return[];var o=n[t];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?aM(o):$v(o,o.length)}Ye.prototype.listeners=function(t){return Dv(this,t,!0)};Ye.prototype.rawListeners=function(t){return Dv(this,t,!1)};Ye.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):Bv.call(e,t)};Ye.prototype.listenerCount=Bv;function Bv(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Ye.prototype.eventNames=function(){return this._eventsCount>0?Ga(this._events):[]};function $v(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function sM(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}function aM(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}function lM(e,t){return new Promise(function(r,n){function o(s){e.removeListener(t,i),n(s)}function i(){typeof e.removeListener=="function"&&e.removeListener("error",o),r([].slice.call(arguments))}Uv(e,t,i,{once:!0}),t!=="error"&&uM(e,o,{once:!0})})}function uM(e,t,r){typeof e.on=="function"&&Uv(e,"error",t,r)}function Uv(e,t,r,n){if(typeof e.on=="function")n.once?e.once(t,r):e.on(t,r);else if(typeof e.addEventListener=="function")e.addEventListener(t,function o(i){n.once&&e.removeEventListener(t,o),r(i)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e)}var hu=_p.exports;(function(e){const t=Zt,{kResistStopPropagation:r,SymbolDispose:n}=st,o=globalThis.AbortSignal||$s().AbortSignal,i=globalThis.AbortController||$s().AbortController,s=Object.getPrototypeOf(async function(){}).constructor,a=globalThis.Blob||t.Blob,l=typeof a<"u"?function(m){return m instanceof a}:function(m){return!1},u=(p,m)=>{if(p!==void 0&&(p===null||typeof p!="object"||!("aborted"in p)))throw new ERR_INVALID_ARG_TYPE(m,"AbortSignal",p)},c=(p,m)=>{if(typeof p!="function")throw new ERR_INVALID_ARG_TYPE(m,"Function",p)};class d extends Error{constructor(m){if(!Array.isArray(m))throw new TypeError(`Expected input to be an Array, got ${typeof m}`);let _="";for(let b=0;b<m.length;b++)_+=`    ${m[b].stack}
+`;super(_),this.name="AggregateError",this.errors=m}}e.exports={AggregateError:d,kEmptyObject:Object.freeze({}),once(p){let m=!1;return function(..._){m||(m=!0,p.apply(this,_))}},createDeferredPromise:function(){let p,m;return{promise:new Promise((b,T)=>{p=b,m=T}),resolve:p,reject:m}},promisify(p){return new Promise((m,_)=>{p((b,...T)=>b?_(b):m(...T))})},debuglog(){return function(){}},format(p,...m){return p.replace(/%([sdifj])/g,function(...[_,b]){const T=m.shift();return b==="f"?T.toFixed(6):b==="j"?JSON.stringify(T):b==="s"&&typeof T=="object"?`${T.constructor!==Object?T.constructor.name:""} {}`.trim():T.toString()})},inspect(p){switch(typeof p){case"string":if(p.includes("'"))if(p.includes('"')){if(!p.includes("`")&&!p.includes("${"))return`\`${p}\``}else return`"${p}"`;return`'${p}'`;case"number":return isNaN(p)?"NaN":Object.is(p,-0)?String(p):p;case"bigint":return`${String(p)}n`;case"boolean":case"undefined":return String(p);case"object":return"{}"}},types:{isAsyncFunction(p){return p instanceof s},isArrayBufferView(p){return ArrayBuffer.isView(p)}},isBlob:l,deprecate(p,m){return p},addAbortListener:hu.addAbortListener||function(m,_){if(m===void 0)throw new ERR_INVALID_ARG_TYPE("signal","AbortSignal",m);u(m,"signal"),c(_,"listener");let b;return m.aborted?queueMicrotask(()=>_()):(m.addEventListener("abort",_,{__proto__:null,once:!0,[r]:!0}),b=()=>{m.removeEventListener("abort",_)}),{__proto__:null,[n](){var T;(T=b)===null||T===void 0||T()}}},AbortSignalAny:o.any||function(m){if(m.length===1)return m[0];const _=new i,b=()=>_.abort();return m.forEach(T=>{u(T,"signals"),T.addEventListener("abort",b,{once:!0})}),_.signal.addEventListener("abort",()=>{m.forEach(T=>T.removeEventListener("abort",b))},{once:!0}),_.signal}},e.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")})(kv);var Dt=kv.exports,bp={};const{format:cM,inspect:vl,AggregateError:fM}=Dt,hM=globalThis.AggregateError||fM,dM=Symbol("kIsNodeError"),pM=["string","function","number","object","Function","Object","boolean","bigint","symbol"],gM=/^([A-Z][a-z0-9]*)+$/,mM="__node_internal_",du={};function Ii(e,t){if(!e)throw new du.ERR_INTERNAL_ASSERTION(t)}function i0(e){let t="",r=e.length;const n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function yM(e,t,r){if(typeof t=="function")return Ii(t.length<=r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${t.length}).`),t(...r);const n=(t.match(/%[dfijoOs]/g)||[]).length;return Ii(n===r.length,`Code: ${e}; The provided arguments length (${r.length}) does not match the required ones (${n}).`),r.length===0?t:cM(t,...r)}function vt(e,t,r){r||(r=Error);class n extends r{constructor(...i){super(yM(e,t,i))}toString(){return`${this.name} [${e}]: ${this.message}`}}Object.defineProperties(n.prototype,{name:{value:r.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${e}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),n.prototype.code=e,n.prototype[dM]=!0,du[e]=n}function o0(e){const t=mM+e.name;return Object.defineProperty(e,"name",{value:t}),e}function _M(e,t){if(e&&t&&e!==t){if(Array.isArray(t.errors))return t.errors.push(e),t;const r=new hM([t,e],t.message);return r.code=t.code,r}return e||t}let bM=class extends Error{constructor(t="The operation was aborted",r=void 0){if(r!==void 0&&typeof r!="object")throw new du.ERR_INVALID_ARG_TYPE("options","Object",r);super(t,r),this.code="ABORT_ERR",this.name="AbortError"}};vt("ERR_ASSERTION","%s",Error);vt("ERR_INVALID_ARG_TYPE",(e,t,r)=>{Ii(typeof e=="string","'name' must be a string"),Array.isArray(t)||(t=[t]);let n="The ";e.endsWith(" argument")?n+=`${e} `:n+=`"${e}" ${e.includes(".")?"property":"argument"} `,n+="must be ";const o=[],i=[],s=[];for(const l of t)Ii(typeof l=="string","All expected entries have to be of type string"),pM.includes(l)?o.push(l.toLowerCase()):gM.test(l)?i.push(l):(Ii(l!=="object",'The value "object" should be written as "Object"'),s.push(l));if(i.length>0){const l=o.indexOf("object");l!==-1&&(o.splice(o,l,1),i.push("Object"))}if(o.length>0){switch(o.length){case 1:n+=`of type ${o[0]}`;break;case 2:n+=`one of type ${o[0]} or ${o[1]}`;break;default:{const l=o.pop();n+=`one of type ${o.join(", ")}, or ${l}`}}(i.length>0||s.length>0)&&(n+=" or ")}if(i.length>0){switch(i.length){case 1:n+=`an instance of ${i[0]}`;break;case 2:n+=`an instance of ${i[0]} or ${i[1]}`;break;default:{const l=i.pop();n+=`an instance of ${i.join(", ")}, or ${l}`}}s.length>0&&(n+=" or ")}switch(s.length){case 0:break;case 1:s[0].toLowerCase()!==s[0]&&(n+="an "),n+=`${s[0]}`;break;case 2:n+=`one of ${s[0]} or ${s[1]}`;break;default:{const l=s.pop();n+=`one of ${s.join(", ")}, or ${l}`}}if(r==null)n+=`. Received ${r}`;else if(typeof r=="function"&&r.name)n+=`. Received function ${r.name}`;else if(typeof r=="object"){var a;if((a=r.constructor)!==null&&a!==void 0&&a.name)n+=`. Received an instance of ${r.constructor.name}`;else{const l=vl(r,{depth:-1});n+=`. Received ${l}`}}else{let l=vl(r,{colors:!1});l.length>25&&(l=`${l.slice(0,25)}...`),n+=`. Received type ${typeof r} (${l})`}return n},TypeError);vt("ERR_INVALID_ARG_VALUE",(e,t,r="is invalid")=>{let n=vl(t);return n.length>128&&(n=n.slice(0,128)+"..."),`The ${e.includes(".")?"property":"argument"} '${e}' ${r}. Received ${n}`},TypeError);vt("ERR_INVALID_RETURN_VALUE",(e,t,r)=>{var n;const o=r!=null&&(n=r.constructor)!==null&&n!==void 0&&n.name?`instance of ${r.constructor.name}`:`type ${typeof r}`;return`Expected ${e} to be returned from the "${t}" function but got ${o}.`},TypeError);vt("ERR_MISSING_ARGS",(...e)=>{Ii(e.length>0,"At least one arg needs to be specified");let t;const r=e.length;switch(e=(Array.isArray(e)?e:[e]).map(n=>`"${n}"`).join(" or "),r){case 1:t+=`The ${e[0]} argument`;break;case 2:t+=`The ${e[0]} and ${e[1]} arguments`;break;default:{const n=e.pop();t+=`The ${e.join(", ")}, and ${n} arguments`}break}return`${t} must be specified`},TypeError);vt("ERR_OUT_OF_RANGE",(e,t,r)=>{Ii(t,'Missing "range" argument');let n;return Number.isInteger(r)&&Math.abs(r)>2**32?n=i0(String(r)):typeof r=="bigint"?(n=String(r),(r>2n**32n||r<-(2n**32n))&&(n=i0(n)),n+="n"):n=vl(r),`The value of "${e}" is out of range. It must be ${t}. Received ${n}`},RangeError);vt("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error);vt("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error);vt("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error);vt("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error);vt("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error);vt("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);vt("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error);vt("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error);vt("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error);vt("ERR_STREAM_WRITE_AFTER_END","write after end",Error);vt("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError);var Wt={AbortError:bM,aggregateTwoErrors:o0(_M),hideStackFrames:o0,codes:du};const{ArrayIsArray:wp,ArrayPrototypeIncludes:Fv,ArrayPrototypeJoin:jv,ArrayPrototypeMap:wM,NumberIsInteger:vp,NumberIsNaN:vM,NumberMAX_SAFE_INTEGER:EM,NumberMIN_SAFE_INTEGER:SM,NumberParseInt:AM,ObjectPrototypeHasOwnProperty:TM,RegExpPrototypeExec:Wv,String:xM,StringPrototypeToUpperCase:IM,StringPrototypeTrim:CM}=st,{hideStackFrames:cr,codes:{ERR_SOCKET_BAD_PORT:RM,ERR_INVALID_ARG_TYPE:Ot,ERR_INVALID_ARG_VALUE:Xo,ERR_OUT_OF_RANGE:Ni,ERR_UNKNOWN_SIGNAL:s0}}=Wt,{normalizeEncoding:OM}=Dt,{isAsyncFunction:kM,isArrayBufferView:MM}=Dt.types,a0={};function NM(e){return e===(e|0)}function PM(e){return e===e>>>0}const LM=/^[0-7]+$/,DM="must be a 32-bit unsigned integer or an octal string";function BM(e,t,r){if(typeof e>"u"&&(e=r),typeof e=="string"){if(Wv(LM,e)===null)throw new Xo(t,e,DM);e=AM(e,8)}return Hv(e,t),e}const $M=cr((e,t,r=SM,n=EM)=>{if(typeof e!="number")throw new Ot(t,"number",e);if(!vp(e))throw new Ni(t,"an integer",e);if(e<r||e>n)throw new Ni(t,`>= ${r} && <= ${n}`,e)}),UM=cr((e,t,r=-2147483648,n=2147483647)=>{if(typeof e!="number")throw new Ot(t,"number",e);if(!vp(e))throw new Ni(t,"an integer",e);if(e<r||e>n)throw new Ni(t,`>= ${r} && <= ${n}`,e)}),Hv=cr((e,t,r=!1)=>{if(typeof e!="number")throw new Ot(t,"number",e);if(!vp(e))throw new Ni(t,"an integer",e);const n=r?1:0,o=4294967295;if(e<n||e>o)throw new Ni(t,`>= ${n} && <= ${o}`,e)});function Ep(e,t){if(typeof e!="string")throw new Ot(t,"string",e)}function FM(e,t,r=void 0,n){if(typeof e!="number")throw new Ot(t,"number",e);if(r!=null&&e<r||n!=null&&e>n||(r!=null||n!=null)&&vM(e))throw new Ni(t,`${r!=null?`>= ${r}`:""}${r!=null&&n!=null?" && ":""}${n!=null?`<= ${n}`:""}`,e)}const jM=cr((e,t,r)=>{if(!Fv(r,e)){const o="must be one of: "+jv(wM(r,i=>typeof i=="string"?`'${i}'`:xM(i)),", ");throw new Xo(t,e,o)}});function Vv(e,t){if(typeof e!="boolean")throw new Ot(t,"boolean",e)}function Sc(e,t,r){return e==null||!TM(e,t)?r:e[t]}const WM=cr((e,t,r=null)=>{const n=Sc(r,"allowArray",!1),o=Sc(r,"allowFunction",!1);if(!Sc(r,"nullable",!1)&&e===null||!n&&wp(e)||typeof e!="object"&&(!o||typeof e!="function"))throw new Ot(t,"Object",e)}),HM=cr((e,t)=>{if(e!=null&&typeof e!="object"&&typeof e!="function")throw new Ot(t,"a dictionary",e)}),pu=cr((e,t,r=0)=>{if(!wp(e))throw new Ot(t,"Array",e);if(e.length<r){const n=`must be longer than ${r}`;throw new Xo(t,e,n)}});function VM(e,t){pu(e,t);for(let r=0;r<e.length;r++)Ep(e[r],`${t}[${r}]`)}function qM(e,t){pu(e,t);for(let r=0;r<e.length;r++)Vv(e[r],`${t}[${r}]`)}function KM(e,t){pu(e,t);for(let r=0;r<e.length;r++){const n=e[r],o=`${t}[${r}]`;if(n==null)throw new Ot(o,"AbortSignal",n);qv(n,o)}}function YM(e,t="signal"){if(Ep(e,t),a0[e]===void 0)throw a0[IM(e)]!==void 0?new s0(e+" (signals must use all capital letters)"):new s0(e)}const zM=cr((e,t="buffer")=>{if(!MM(e))throw new Ot(t,["Buffer","TypedArray","DataView"],e)});function GM(e,t){const r=OM(t),n=e.length;if(r==="hex"&&n%2!==0)throw new Xo("encoding",t,`is invalid for data of length ${n}`)}function QM(e,t="Port",r=!0){if(typeof e!="number"&&typeof e!="string"||typeof e=="string"&&CM(e).length===0||+e!==+e>>>0||e>65535||e===0&&!r)throw new RM(t,e,r);return e|0}const qv=cr((e,t)=>{if(e!==void 0&&(e===null||typeof e!="object"||!("aborted"in e)))throw new Ot(t,"AbortSignal",e)}),XM=cr((e,t)=>{if(typeof e!="function")throw new Ot(t,"Function",e)}),JM=cr((e,t)=>{if(typeof e!="function"||kM(e))throw new Ot(t,"Function",e)}),ZM=cr((e,t)=>{if(e!==void 0)throw new Ot(t,"undefined",e)});function eN(e,t,r){if(!Fv(r,e))throw new Ot(t,`('${jv(r,"|")}')`,e)}const tN=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function l0(e,t){if(typeof e>"u"||!Wv(tN,e))throw new Xo(t,e,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function rN(e){if(typeof e=="string")return l0(e,"hints"),e;if(wp(e)){const t=e.length;let r="";if(t===0)return r;for(let n=0;n<t;n++){const o=e[n];l0(o,"hints"),r+=o,n!==t-1&&(r+=", ")}return r}throw new Xo("hints",e,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}var Xs={isInt32:NM,isUint32:PM,parseFileMode:BM,validateArray:pu,validateStringArray:VM,validateBooleanArray:qM,validateAbortSignalArray:KM,validateBoolean:Vv,validateBuffer:zM,validateDictionary:HM,validateEncoding:GM,validateFunction:XM,validateInt32:UM,validateInteger:$M,validateNumber:FM,validateObject:WM,validateOneOf:jM,validatePlainFunction:JM,validatePort:QM,validateSignalName:YM,validateString:Ep,validateUint32:Hv,validateUndefined:ZM,validateUnion:eN,validateAbortSignal:qv,validateLinkHeaderValue:rN},Sp={exports:{}},Kv={exports:{}},lt=Kv.exports={},Ir,Cr;function Fh(){throw new Error("setTimeout has not been defined")}function jh(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?Ir=setTimeout:Ir=Fh}catch{Ir=Fh}try{typeof clearTimeout=="function"?Cr=clearTimeout:Cr=jh}catch{Cr=jh}})();function Yv(e){if(Ir===setTimeout)return setTimeout(e,0);if((Ir===Fh||!Ir)&&setTimeout)return Ir=setTimeout,setTimeout(e,0);try{return Ir(e,0)}catch{try{return Ir.call(null,e,0)}catch{return Ir.call(this,e,0)}}}function nN(e){if(Cr===clearTimeout)return clearTimeout(e);if((Cr===jh||!Cr)&&clearTimeout)return Cr=clearTimeout,clearTimeout(e);try{return Cr(e)}catch{try{return Cr.call(null,e)}catch{return Cr.call(this,e)}}}var nn=[],xo=!1,bi,Qa=-1;function iN(){!xo||!bi||(xo=!1,bi.length?nn=bi.concat(nn):Qa=-1,nn.length&&zv())}function zv(){if(!xo){var e=Yv(iN);xo=!0;for(var t=nn.length;t;){for(bi=nn,nn=[];++Qa<t;)bi&&bi[Qa].run();Qa=-1,t=nn.length}bi=null,xo=!1,nN(e)}}lt.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];nn.push(new Gv(e,t)),nn.length===1&&!xo&&Yv(zv)};function Gv(e,t){this.fun=e,this.array=t}Gv.prototype.run=function(){this.fun.apply(null,this.array)};lt.title="browser";lt.browser=!0;lt.env={};lt.argv=[];lt.version="";lt.versions={};function Tn(){}lt.on=Tn;lt.addListener=Tn;lt.once=Tn;lt.off=Tn;lt.removeListener=Tn;lt.removeAllListeners=Tn;lt.emit=Tn;lt.prependListener=Tn;lt.prependOnceListener=Tn;lt.listeners=function(e){return[]};lt.binding=function(e){throw new Error("process.binding is not supported")};lt.cwd=function(){return"/"};lt.chdir=function(e){throw new Error("process.chdir is not supported")};lt.umask=function(){return 0};var Vi=Kv.exports;const{SymbolAsyncIterator:u0,SymbolIterator:c0,SymbolFor:qi}=st,Qv=qi("nodejs.stream.destroyed"),Xv=qi("nodejs.stream.errored"),Wh=qi("nodejs.stream.readable"),Hh=qi("nodejs.stream.writable"),Jv=qi("nodejs.stream.disturbed"),oN=qi("nodejs.webstream.isClosedPromise"),sN=qi("nodejs.webstream.controllerErrorFunction");function gu(e,t=!1){var r;return!!(e&&typeof e.pipe=="function"&&typeof e.on=="function"&&(!t||typeof e.pause=="function"&&typeof e.resume=="function")&&(!e._writableState||((r=e._readableState)===null||r===void 0?void 0:r.readable)!==!1)&&(!e._writableState||e._readableState))}function mu(e){var t;return!!(e&&typeof e.write=="function"&&typeof e.on=="function"&&(!e._readableState||((t=e._writableState)===null||t===void 0?void 0:t.writable)!==!1))}function aN(e){return!!(e&&typeof e.pipe=="function"&&e._readableState&&typeof e.on=="function"&&typeof e.write=="function")}function Wr(e){return e&&(e._readableState||e._writableState||typeof e.write=="function"&&typeof e.on=="function"||typeof e.pipe=="function"&&typeof e.on=="function")}function Zv(e){return!!(e&&!Wr(e)&&typeof e.pipeThrough=="function"&&typeof e.getReader=="function"&&typeof e.cancel=="function")}function e1(e){return!!(e&&!Wr(e)&&typeof e.getWriter=="function"&&typeof e.abort=="function")}function t1(e){return!!(e&&!Wr(e)&&typeof e.readable=="object"&&typeof e.writable=="object")}function lN(e){return Zv(e)||e1(e)||t1(e)}function uN(e,t){return e==null?!1:t===!0?typeof e[u0]=="function":t===!1?typeof e[c0]=="function":typeof e[u0]=="function"||typeof e[c0]=="function"}function yu(e){if(!Wr(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!!(e.destroyed||e[Qv]||n!=null&&n.destroyed)}function r1(e){if(!mu(e))return null;if(e.writableEnded===!0)return!0;const t=e._writableState;return t!=null&&t.errored?!1:typeof(t==null?void 0:t.ended)!="boolean"?null:t.ended}function cN(e,t){if(!mu(e))return null;if(e.writableFinished===!0)return!0;const r=e._writableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.finished)!="boolean"?null:!!(r.finished||t===!1&&r.ended===!0&&r.length===0)}function fN(e){if(!gu(e))return null;if(e.readableEnded===!0)return!0;const t=e._readableState;return!t||t.errored?!1:typeof(t==null?void 0:t.ended)!="boolean"?null:t.ended}function n1(e,t){if(!gu(e))return null;const r=e._readableState;return r!=null&&r.errored?!1:typeof(r==null?void 0:r.endEmitted)!="boolean"?null:!!(r.endEmitted||t===!1&&r.ended===!0&&r.length===0)}function i1(e){return e&&e[Wh]!=null?e[Wh]:typeof(e==null?void 0:e.readable)!="boolean"?null:yu(e)?!1:gu(e)&&e.readable&&!n1(e)}function o1(e){return e&&e[Hh]!=null?e[Hh]:typeof(e==null?void 0:e.writable)!="boolean"?null:yu(e)?!1:mu(e)&&e.writable&&!r1(e)}function hN(e,t){return Wr(e)?yu(e)?!0:!((t==null?void 0:t.readable)!==!1&&i1(e)||(t==null?void 0:t.writable)!==!1&&o1(e)):null}function dN(e){var t,r;return Wr(e)?e.writableErrored?e.writableErrored:(t=(r=e._writableState)===null||r===void 0?void 0:r.errored)!==null&&t!==void 0?t:null:null}function pN(e){var t,r;return Wr(e)?e.readableErrored?e.readableErrored:(t=(r=e._readableState)===null||r===void 0?void 0:r.errored)!==null&&t!==void 0?t:null:null}function gN(e){if(!Wr(e))return null;if(typeof e.closed=="boolean")return e.closed;const t=e._writableState,r=e._readableState;return typeof(t==null?void 0:t.closed)=="boolean"||typeof(r==null?void 0:r.closed)=="boolean"?(t==null?void 0:t.closed)||(r==null?void 0:r.closed):typeof e._closed=="boolean"&&s1(e)?e._closed:null}function s1(e){return typeof e._closed=="boolean"&&typeof e._defaultKeepAlive=="boolean"&&typeof e._removedConnection=="boolean"&&typeof e._removedContLen=="boolean"}function a1(e){return typeof e._sent100=="boolean"&&s1(e)}function mN(e){var t;return typeof e._consuming=="boolean"&&typeof e._dumped=="boolean"&&((t=e.req)===null||t===void 0?void 0:t.upgradeOrConnect)===void 0}function yN(e){if(!Wr(e))return null;const t=e._writableState,r=e._readableState,n=t||r;return!n&&a1(e)||!!(n&&n.autoDestroy&&n.emitClose&&n.closed===!1)}function _N(e){var t;return!!(e&&((t=e[Jv])!==null&&t!==void 0?t:e.readableDidRead||e.readableAborted))}function bN(e){var t,r,n,o,i,s,a,l,u,c;return!!(e&&((t=(r=(n=(o=(i=(s=e[Xv])!==null&&s!==void 0?s:e.readableErrored)!==null&&i!==void 0?i:e.writableErrored)!==null&&o!==void 0?o:(a=e._readableState)===null||a===void 0?void 0:a.errorEmitted)!==null&&n!==void 0?n:(l=e._writableState)===null||l===void 0?void 0:l.errorEmitted)!==null&&r!==void 0?r:(u=e._readableState)===null||u===void 0?void 0:u.errored)!==null&&t!==void 0?t:!((c=e._writableState)===null||c===void 0)&&c.errored))}var xn={isDestroyed:yu,kIsDestroyed:Qv,isDisturbed:_N,kIsDisturbed:Jv,isErrored:bN,kIsErrored:Xv,isReadable:i1,kIsReadable:Wh,kIsClosedPromise:oN,kControllerErrorFunction:sN,kIsWritable:Hh,isClosed:gN,isDuplexNodeStream:aN,isFinished:hN,isIterable:uN,isReadableNodeStream:gu,isReadableStream:Zv,isReadableEnded:fN,isReadableFinished:n1,isReadableErrored:pN,isNodeStream:Wr,isWebStream:lN,isWritable:o1,isWritableNodeStream:mu,isWritableStream:e1,isWritableEnded:r1,isWritableFinished:cN,isWritableErrored:dN,isServerRequest:mN,isServerResponse:a1,willEmitClose:yN,isTransformStream:t1};const Bn=Vi,{AbortError:l1,codes:wN}=Wt,{ERR_INVALID_ARG_TYPE:vN,ERR_STREAM_PREMATURE_CLOSE:f0}=wN,{kEmptyObject:Vh,once:qh}=Dt,{validateAbortSignal:EN,validateFunction:SN,validateObject:AN,validateBoolean:TN}=Xs,{Promise:xN,PromisePrototypeThen:IN,SymbolDispose:u1}=st,{isClosed:CN,isReadable:h0,isReadableNodeStream:Ac,isReadableStream:RN,isReadableFinished:d0,isReadableErrored:p0,isWritable:g0,isWritableNodeStream:m0,isWritableStream:ON,isWritableFinished:y0,isWritableErrored:_0,isNodeStream:kN,willEmitClose:MN,kIsClosedPromise:NN}=xn;let Io;function PN(e){return e.setHeader&&typeof e.abort=="function"}const Kh=()=>{};function c1(e,t,r){var n,o;if(arguments.length===2?(r=t,t=Vh):t==null?t=Vh:AN(t,"options"),SN(r,"callback"),EN(t.signal,"options.signal"),r=qh(r),RN(e)||ON(e))return LN(e,t,r);if(!kN(e))throw new vN("stream",["ReadableStream","WritableStream","Stream"],e);const i=(n=t.readable)!==null&&n!==void 0?n:Ac(e),s=(o=t.writable)!==null&&o!==void 0?o:m0(e),a=e._writableState,l=e._readableState,u=()=>{e.writable||p()};let c=MN(e)&&Ac(e)===i&&m0(e)===s,d=y0(e,!1);const p=()=>{d=!0,e.destroyed&&(c=!1),!(c&&(!e.readable||i))&&(!i||m)&&r.call(e)};let m=d0(e,!1);const _=()=>{m=!0,e.destroyed&&(c=!1),!(c&&(!e.writable||s))&&(!s||d)&&r.call(e)},b=$=>{r.call(e,$)};let T=CN(e);const k=()=>{T=!0;const $=_0(e)||p0(e);if($&&typeof $!="boolean")return r.call(e,$);if(i&&!m&&Ac(e,!0)&&!d0(e,!1))return r.call(e,new f0);if(s&&!d&&!y0(e,!1))return r.call(e,new f0);r.call(e)},C=()=>{T=!0;const $=_0(e)||p0(e);if($&&typeof $!="boolean")return r.call(e,$);r.call(e)},A=()=>{e.req.on("finish",p)};PN(e)?(e.on("complete",p),c||e.on("abort",k),e.req?A():e.on("request",A)):s&&!a&&(e.on("end",u),e.on("close",u)),!c&&typeof e.aborted=="boolean"&&e.on("aborted",k),e.on("end",_),e.on("finish",p),t.error!==!1&&e.on("error",b),e.on("close",k),T?Bn.nextTick(k):a!=null&&a.errorEmitted||l!=null&&l.errorEmitted?c||Bn.nextTick(C):(!i&&(!c||h0(e))&&(d||g0(e)===!1)||!s&&(!c||g0(e))&&(m||h0(e)===!1)||l&&e.req&&e.aborted)&&Bn.nextTick(C);const M=()=>{r=Kh,e.removeListener("aborted",k),e.removeListener("complete",p),e.removeListener("abort",k),e.removeListener("request",A),e.req&&e.req.removeListener("finish",p),e.removeListener("end",u),e.removeListener("close",u),e.removeListener("finish",p),e.removeListener("end",_),e.removeListener("error",b),e.removeListener("close",k)};if(t.signal&&!T){const $=()=>{const R=r;M(),R.call(e,new l1(void 0,{cause:t.signal.reason}))};if(t.signal.aborted)Bn.nextTick($);else{Io=Io||Dt.addAbortListener;const R=Io(t.signal,$),D=r;r=qh((...j)=>{R[u1](),D.apply(e,j)})}}return M}function LN(e,t,r){let n=!1,o=Kh;if(t.signal)if(o=()=>{n=!0,r.call(e,new l1(void 0,{cause:t.signal.reason}))},t.signal.aborted)Bn.nextTick(o);else{Io=Io||Dt.addAbortListener;const s=Io(t.signal,o),a=r;r=qh((...l)=>{s[u1](),a.apply(e,l)})}const i=(...s)=>{n||Bn.nextTick(()=>r.apply(e,s))};return IN(e[NN].promise,i,i),Kh}function DN(e,t){var r;let n=!1;return t===null&&(t=Vh),(r=t)!==null&&r!==void 0&&r.cleanup&&(TN(t.cleanup,"cleanup"),n=t.cleanup),new xN((o,i)=>{const s=c1(e,t,a=>{n&&s(),a?i(a):o()})})}Sp.exports=c1;Sp.exports.finished=DN;var Qn=Sp.exports;const Dr=Vi,{aggregateTwoErrors:BN,codes:{ERR_MULTIPLE_CALLBACK:$N},AbortError:UN}=Wt,{Symbol:f1}=st,{kIsDestroyed:FN,isDestroyed:jN,isFinished:WN,isServerRequest:HN}=xn,h1=f1("kDestroy"),Yh=f1("kConstruct");function d1(e,t,r){e&&(e.stack,t&&!t.errored&&(t.errored=e),r&&!r.errored&&(r.errored=e))}function VN(e,t){const r=this._readableState,n=this._writableState,o=n||r;return n!=null&&n.destroyed||r!=null&&r.destroyed?(typeof t=="function"&&t(),this):(d1(e,n,r),n&&(n.destroyed=!0),r&&(r.destroyed=!0),o.constructed?b0(this,e,t):this.once(h1,function(i){b0(this,BN(i,e),t)}),this)}function b0(e,t,r){let n=!1;function o(i){if(n)return;n=!0;const s=e._readableState,a=e._writableState;d1(i,a,s),a&&(a.closed=!0),s&&(s.closed=!0),typeof r=="function"&&r(i),i?Dr.nextTick(qN,e,i):Dr.nextTick(p1,e)}try{e._destroy(t||null,o)}catch(i){o(i)}}function qN(e,t){zh(e,t),p1(e)}function p1(e){const t=e._readableState,r=e._writableState;r&&(r.closeEmitted=!0),t&&(t.closeEmitted=!0),(r!=null&&r.emitClose||t!=null&&t.emitClose)&&e.emit("close")}function zh(e,t){const r=e._readableState,n=e._writableState;n!=null&&n.errorEmitted||r!=null&&r.errorEmitted||(n&&(n.errorEmitted=!0),r&&(r.errorEmitted=!0),e.emit("error",t))}function KN(){const e=this._readableState,t=this._writableState;e&&(e.constructed=!0,e.closed=!1,e.closeEmitted=!1,e.destroyed=!1,e.errored=null,e.errorEmitted=!1,e.reading=!1,e.ended=e.readable===!1,e.endEmitted=e.readable===!1),t&&(t.constructed=!0,t.destroyed=!1,t.closed=!1,t.closeEmitted=!1,t.errored=null,t.errorEmitted=!1,t.finalCalled=!1,t.prefinished=!1,t.ended=t.writable===!1,t.ending=t.writable===!1,t.finished=t.writable===!1)}function Gh(e,t,r){const n=e._readableState,o=e._writableState;if(o!=null&&o.destroyed||n!=null&&n.destroyed)return this;n!=null&&n.autoDestroy||o!=null&&o.autoDestroy?e.destroy(t):t&&(t.stack,o&&!o.errored&&(o.errored=t),n&&!n.errored&&(n.errored=t),r?Dr.nextTick(zh,e,t):zh(e,t))}function YN(e,t){if(typeof e._construct!="function")return;const r=e._readableState,n=e._writableState;r&&(r.constructed=!1),n&&(n.constructed=!1),e.once(Yh,t),!(e.listenerCount(Yh)>1)&&Dr.nextTick(zN,e)}function zN(e){let t=!1;function r(n){if(t){Gh(e,n??new $N);return}t=!0;const o=e._readableState,i=e._writableState,s=i||o;o&&(o.constructed=!0),i&&(i.constructed=!0),s.destroyed?e.emit(h1,n):n?Gh(e,n,!0):Dr.nextTick(GN,e)}try{e._construct(n=>{Dr.nextTick(r,n)})}catch(n){Dr.nextTick(r,n)}}function GN(e){e.emit(Yh)}function w0(e){return(e==null?void 0:e.setHeader)&&typeof e.abort=="function"}function g1(e){e.emit("close")}function QN(e,t){e.emit("error",t),Dr.nextTick(g1,e)}function XN(e,t){!e||jN(e)||(!t&&!WN(e)&&(t=new UN),HN(e)?(e.socket=null,e.destroy(t)):w0(e)?e.abort():w0(e.req)?e.req.abort():typeof e.destroy=="function"?e.destroy(t):typeof e.close=="function"?e.close():t?Dr.nextTick(QN,e,t):Dr.nextTick(g1,e),e.destroyed||(e[FN]=!0))}var Jo={construct:YN,destroyer:XN,destroy:VN,undestroy:KN,errorOrDestroy:Gh};const{ArrayIsArray:JN,ObjectSetPrototypeOf:m1}=st,{EventEmitter:_u}=hu;function bu(e){_u.call(this,e)}m1(bu.prototype,_u.prototype);m1(bu,_u);bu.prototype.pipe=function(e,t){const r=this;function n(c){e.writable&&e.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function o(){r.readable&&r.resume&&r.resume()}e.on("drain",o),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",s),r.on("close",a));let i=!1;function s(){i||(i=!0,e.end())}function a(){i||(i=!0,typeof e.destroy=="function"&&e.destroy())}function l(c){u(),_u.listenerCount(this,"error")===0&&this.emit("error",c)}Qh(r,"error",l),Qh(e,"error",l);function u(){r.removeListener("data",n),e.removeListener("drain",o),r.removeListener("end",s),r.removeListener("close",a),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),e.removeListener("close",u)}return r.on("end",u),r.on("close",u),e.on("close",u),e.emit("pipe",r),e};function Qh(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):JN(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}var Ap={Stream:bu,prependListener:Qh},y1={exports:{}};(function(e){const{SymbolDispose:t}=st,{AbortError:r,codes:n}=Wt,{isNodeStream:o,isWebStream:i,kControllerErrorFunction:s}=xn,a=Qn,{ERR_INVALID_ARG_TYPE:l}=n;let u;const c=(d,p)=>{if(typeof d!="object"||!("aborted"in d))throw new l(p,"AbortSignal",d)};e.exports.addAbortSignal=function(p,m){if(c(p,"signal"),!o(m)&&!i(m))throw new l("stream",["ReadableStream","WritableStream","Stream"],m);return e.exports.addAbortSignalNoValidate(p,m)},e.exports.addAbortSignalNoValidate=function(d,p){if(typeof d!="object"||!("aborted"in d))return p;const m=o(p)?()=>{p.destroy(new r(void 0,{cause:d.reason}))}:()=>{p[s](new r(void 0,{cause:d.reason}))};if(d.aborted)m();else{u=u||Dt.addAbortListener;const _=u(d,m);a(p,_[t])}return p}})(y1);var wu=y1.exports;const{StringPrototypeSlice:v0,SymbolIterator:ZN,TypedArrayPrototypeSet:Aa,Uint8Array:e2}=st,{Buffer:Tc}=Zt,{inspect:t2}=Dt;var r2=class{constructor(){this.head=null,this.tail=null,this.length=0}push(t){const r={data:t,next:null};this.length>0?this.tail.next=r:this.head=r,this.tail=r,++this.length}unshift(t){const r={data:t,next:this.head};this.length===0&&(this.tail=r),this.head=r,++this.length}shift(){if(this.length===0)return;const t=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,t}clear(){this.head=this.tail=null,this.length=0}join(t){if(this.length===0)return"";let r=this.head,n=""+r.data;for(;(r=r.next)!==null;)n+=t+r.data;return n}concat(t){if(this.length===0)return Tc.alloc(0);const r=Tc.allocUnsafe(t>>>0);let n=this.head,o=0;for(;n;)Aa(r,n.data,o),o+=n.data.length,n=n.next;return r}consume(t,r){const n=this.head.data;if(t<n.length){const o=n.slice(0,t);return this.head.data=n.slice(t),o}return t===n.length?this.shift():r?this._getString(t):this._getBuffer(t)}first(){return this.head.data}*[ZN](){for(let t=this.head;t;t=t.next)yield t.data}_getString(t){let r="",n=this.head,o=0;do{const i=n.data;if(t>i.length)r+=i,t-=i.length;else{t===i.length?(r+=i,++o,n.next?this.head=n.next:this.head=this.tail=null):(r+=v0(i,0,t),this.head=n,n.data=v0(i,t));break}++o}while((n=n.next)!==null);return this.length-=o,r}_getBuffer(t){const r=Tc.allocUnsafe(t),n=t;let o=this.head,i=0;do{const s=o.data;if(t>s.length)Aa(r,s,n-t),t-=s.length;else{t===s.length?(Aa(r,s,n-t),++i,o.next?this.head=o.next:this.head=this.tail=null):(Aa(r,new e2(s.buffer,s.byteOffset,t),n-t),this.head=o,o.data=s.slice(t));break}++i}while((o=o.next)!==null);return this.length-=i,r}[Symbol.for("nodejs.util.inspect.custom")](t,r){return t2(this,{...r,depth:0,customInspect:!1})}};const{MathFloor:n2,NumberIsInteger:i2}=st,{validateInteger:o2}=Xs,{ERR_INVALID_ARG_VALUE:s2}=Wt.codes;let _1=16*1024,b1=16;function a2(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function w1(e){return e?b1:_1}function l2(e,t){o2(t,"value",0),e?b1=t:_1=t}function u2(e,t,r,n){const o=a2(t,n,r);if(o!=null){if(!i2(o)||o<0){const i=n?`options.${r}`:"options.highWaterMark";throw new s2(i,o)}return n2(o)}return w1(e.objectMode)}var vu={getHighWaterMark:u2,getDefaultHighWaterMark:w1,setDefaultHighWaterMark:l2},v1={},Xh={exports:{}};/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */(function(e,t){var r=Zt,n=r.Buffer;function o(s,a){for(var l in s)a[l]=s[l]}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(o(r,t),t.Buffer=i);function i(s,a,l){return n(s,a,l)}i.prototype=Object.create(n.prototype),o(n,i),i.from=function(s,a,l){if(typeof s=="number")throw new TypeError("Argument must not be a number");return n(s,a,l)},i.alloc=function(s,a,l){if(typeof s!="number")throw new TypeError("Argument must be a number");var u=n(s);return a!==void 0?typeof l=="string"?u.fill(a,l):u.fill(a):u.fill(0),u},i.allocUnsafe=function(s){if(typeof s!="number")throw new TypeError("Argument must be a number");return n(s)},i.allocUnsafeSlow=function(s){if(typeof s!="number")throw new TypeError("Argument must be a number");return r.SlowBuffer(s)}})(Xh,Xh.exports);var c2=Xh.exports,Tp=c2.Buffer,E0=Tp.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function f2(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function h2(e){var t=f2(e);if(typeof t!="string"&&(Tp.isEncoding===E0||!E0(e)))throw new Error("Unknown encoding: "+e);return t||e}v1.StringDecoder=Js;function Js(e){this.encoding=h2(e);var t;switch(this.encoding){case"utf16le":this.text=_2,this.end=b2,t=4;break;case"utf8":this.fillLast=g2,t=4;break;case"base64":this.text=w2,this.end=v2,t=3;break;default:this.write=E2,this.end=S2;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=Tp.allocUnsafe(t)}Js.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""};Js.prototype.end=y2;Js.prototype.text=m2;Js.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length};function xc(e){return e<=127?0:e>>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function d2(e,t,r){var n=t.length-1;if(n<r)return 0;var o=xc(t[n]);return o>=0?(o>0&&(e.lastNeed=o-1),o):--n<r||o===-2?0:(o=xc(t[n]),o>=0?(o>0&&(e.lastNeed=o-2),o):--n<r||o===-2?0:(o=xc(t[n]),o>=0?(o>0&&(o===2?o=0:e.lastNeed=o-3),o):0))}function p2(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"�"}}function g2(e){var t=this.lastTotal-this.lastNeed,r=p2(this,e);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function m2(e,t){var r=d2(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)}function y2(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t}function _2(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function b2(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function w2(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function v2(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function E2(e){return e.toString(this.encoding)}function S2(e){return e&&e.length?this.write(e):""}const S0=Vi,{PromisePrototypeThen:A2,SymbolAsyncIterator:A0,SymbolIterator:T0}=st,{Buffer:T2}=Zt,{ERR_INVALID_ARG_TYPE:x2,ERR_STREAM_NULL_VALUES:I2}=Wt.codes;function C2(e,t,r){let n;if(typeof t=="string"||t instanceof T2)return new e({objectMode:!0,...r,read(){this.push(t),this.push(null)}});let o;if(t&&t[A0])o=!0,n=t[A0]();else if(t&&t[T0])o=!1,n=t[T0]();else throw new x2("iterable",["Iterable"],t);const i=new e({objectMode:!0,highWaterMark:1,...r});let s=!1;i._read=function(){s||(s=!0,l())},i._destroy=function(u,c){A2(a(u),()=>S0.nextTick(c,u),d=>S0.nextTick(c,d||u))};async function a(u){const c=u!=null,d=typeof n.throw=="function";if(c&&d){const{value:p,done:m}=await n.throw(u);if(await p,m)return}if(typeof n.return=="function"){const{value:p}=await n.return();await p}}async function l(){for(;;){try{const{value:u,done:c}=o?await n.next():n.next();if(c)i.push(null);else{const d=u&&typeof u.then=="function"?await u:u;if(d===null)throw s=!1,new I2;if(i.push(d))continue;s=!1}}catch(u){i.destroy(u)}break}}return i}var E1=C2,Ic,x0;function Eu(){if(x0)return Ic;x0=1;const e=Vi,{ArrayPrototypeIndexOf:t,NumberIsInteger:r,NumberIsNaN:n,NumberParseInt:o,ObjectDefineProperties:i,ObjectKeys:s,ObjectSetPrototypeOf:a,Promise:l,SafeSet:u,SymbolAsyncDispose:c,SymbolAsyncIterator:d,Symbol:p}=st;Ic=x,x.ReadableState=q;const{EventEmitter:m}=hu,{Stream:_,prependListener:b}=Ap,{Buffer:T}=Zt,{addAbortSignal:k}=wu,C=Qn;let A=Dt.debuglog("stream",H=>{A=H});const M=r2,$=Jo,{getHighWaterMark:R,getDefaultHighWaterMark:D}=vu,{aggregateTwoErrors:j,codes:{ERR_INVALID_ARG_TYPE:z,ERR_METHOD_NOT_IMPLEMENTED:se,ERR_OUT_OF_RANGE:re,ERR_STREAM_PUSH_AFTER_EOF:L,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:B},AbortError:oe}=Wt,{validateObject:ne}=Xs,ue=p("kPaused"),{StringDecoder:ae}=v1,G=E1;a(x.prototype,_.prototype),a(x,_);const pe=()=>{},{errorOrDestroy:de}=$,ge=1,O=2,ie=4,me=8,ve=16,ye=32,V=64,F=128,Z=256,he=512,fe=1024,ee=2048,v=4096,S=8192,E=16384,N=32768,P=65536,J=1<<17,te=1<<18;function U(H){return{enumerable:!1,get(){return(this.state&H)!==0},set(Q){Q?this.state|=H:this.state&=~H}}}i(q.prototype,{objectMode:U(ge),ended:U(O),endEmitted:U(ie),reading:U(me),constructed:U(ve),sync:U(ye),needReadable:U(V),emittedReadable:U(F),readableListening:U(Z),resumeScheduled:U(he),errorEmitted:U(fe),emitClose:U(ee),autoDestroy:U(v),destroyed:U(S),closed:U(E),closeEmitted:U(N),multiAwaitDrain:U(P),readingMore:U(J),dataEmitted:U(te)});function q(H,Q,Ie){typeof Ie!="boolean"&&(Ie=Q instanceof gn()),this.state=ee|v|ve|ye,H&&H.objectMode&&(this.state|=ge),Ie&&H&&H.readableObjectMode&&(this.state|=ge),this.highWaterMark=H?R(this,H,"readableHighWaterMark",Ie):D(!1),this.buffer=new M,this.length=0,this.pipes=[],this.flowing=null,this[ue]=null,H&&H.emitClose===!1&&(this.state&=~ee),H&&H.autoDestroy===!1&&(this.state&=~v),this.errored=null,this.defaultEncoding=H&&H.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,H&&H.encoding&&(this.decoder=new ae(H.encoding),this.encoding=H.encoding)}function x(H){if(!(this instanceof x))return new x(H);const Q=this instanceof gn();this._readableState=new q(H,this,Q),H&&(typeof H.read=="function"&&(this._read=H.read),typeof H.destroy=="function"&&(this._destroy=H.destroy),typeof H.construct=="function"&&(this._construct=H.construct),H.signal&&!Q&&k(H.signal,this)),_.call(this,H),$.construct(this,()=>{this._readableState.needReadable&&I(this,this._readableState)})}x.prototype.destroy=$.destroy,x.prototype._undestroy=$.undestroy,x.prototype._destroy=function(H,Q){Q(H)},x.prototype[m.captureRejectionSymbol]=function(H){this.destroy(H)},x.prototype[c]=function(){let H;return this.destroyed||(H=this.readableEnded?null:new oe,this.destroy(H)),new l((Q,Ie)=>C(this,Ce=>Ce&&Ce!==H?Ie(Ce):Q(null)))},x.prototype.push=function(H,Q){return K(this,H,Q,!1)},x.prototype.unshift=function(H,Q){return K(this,H,Q,!0)};function K(H,Q,Ie,Ce){A("readableAddChunk",Q);const Me=H._readableState;let Et;if(Me.state&ge||(typeof Q=="string"?(Ie=Ie||Me.defaultEncoding,Me.encoding!==Ie&&(Ce&&Me.encoding?Q=T.from(Q,Ie).toString(Me.encoding):(Q=T.from(Q,Ie),Ie=""))):Q instanceof T?Ie="":_._isUint8Array(Q)?(Q=_._uint8ArrayToBuffer(Q),Ie=""):Q!=null&&(Et=new z("chunk",["string","Buffer","Uint8Array"],Q))),Et)de(H,Et);else if(Q===null)Me.state&=~me,f(H,Me);else if(Me.state&ge||Q&&Q.length>0)if(Ce)if(Me.state&ie)de(H,new B);else{if(Me.destroyed||Me.errored)return!1;Y(H,Me,Q,!0)}else if(Me.ended)de(H,new L);else{if(Me.destroyed||Me.errored)return!1;Me.state&=~me,Me.decoder&&!Ie?(Q=Me.decoder.write(Q),Me.objectMode||Q.length!==0?Y(H,Me,Q,!1):I(H,Me)):Y(H,Me,Q,!1)}else Ce||(Me.state&=~me,I(H,Me));return!Me.ended&&(Me.length<Me.highWaterMark||Me.length===0)}function Y(H,Q,Ie,Ce){Q.flowing&&Q.length===0&&!Q.sync&&H.listenerCount("data")>0?(Q.state&P?Q.awaitDrainWriters.clear():Q.awaitDrainWriters=null,Q.dataEmitted=!0,H.emit("data",Ie)):(Q.length+=Q.objectMode?1:Ie.length,Ce?Q.buffer.unshift(Ie):Q.buffer.push(Ie),Q.state&V&&g(H)),I(H,Q)}x.prototype.isPaused=function(){const H=this._readableState;return H[ue]===!0||H.flowing===!1},x.prototype.setEncoding=function(H){const Q=new ae(H);this._readableState.decoder=Q,this._readableState.encoding=this._readableState.decoder.encoding;const Ie=this._readableState.buffer;let Ce="";for(const Me of Ie)Ce+=Q.write(Me);return Ie.clear(),Ce!==""&&Ie.push(Ce),this._readableState.length=Ce.length,this};const le=1073741824;function y(H){if(H>le)throw new re("size","<= 1GiB",H);return H--,H|=H>>>1,H|=H>>>2,H|=H>>>4,H|=H>>>8,H|=H>>>16,H++,H}function h(H,Q){return H<=0||Q.length===0&&Q.ended?0:Q.state&ge?1:n(H)?Q.flowing&&Q.length?Q.buffer.first().length:Q.length:H<=Q.length?H:Q.ended?Q.length:0}x.prototype.read=function(H){A("read",H),H===void 0?H=NaN:r(H)||(H=o(H,10));const Q=this._readableState,Ie=H;if(H>Q.highWaterMark&&(Q.highWaterMark=y(H)),H!==0&&(Q.state&=~F),H===0&&Q.needReadable&&((Q.highWaterMark!==0?Q.length>=Q.highWaterMark:Q.length>0)||Q.ended))return A("read: emitReadable",Q.length,Q.ended),Q.length===0&&Q.ended?at(this):g(this),null;if(H=h(H,Q),H===0&&Q.ended)return Q.length===0&&at(this),null;let Ce=(Q.state&V)!==0;if(A("need readable",Ce),(Q.length===0||Q.length-H<Q.highWaterMark)&&(Ce=!0,A("length less than watermark",Ce)),Q.ended||Q.reading||Q.destroyed||Q.errored||!Q.constructed)Ce=!1,A("reading, ended or constructing",Ce);else if(Ce){A("do read"),Q.state|=me|ye,Q.length===0&&(Q.state|=V);try{this._read(Q.highWaterMark)}catch(Et){de(this,Et)}Q.state&=~ye,Q.reading||(H=h(Ie,Q))}let Me;return H>0?Me=Ze(H,Q):Me=null,Me===null?(Q.needReadable=Q.length<=Q.highWaterMark,H=0):(Q.length-=H,Q.multiAwaitDrain?Q.awaitDrainWriters.clear():Q.awaitDrainWriters=null),Q.length===0&&(Q.ended||(Q.needReadable=!0),Ie!==H&&Q.ended&&at(this)),Me!==null&&!Q.errorEmitted&&!Q.closeEmitted&&(Q.dataEmitted=!0,this.emit("data",Me)),Me};function f(H,Q){if(A("onEofChunk"),!Q.ended){if(Q.decoder){const Ie=Q.decoder.end();Ie&&Ie.length&&(Q.buffer.push(Ie),Q.length+=Q.objectMode?1:Ie.length)}Q.ended=!0,Q.sync?g(H):(Q.needReadable=!1,Q.emittedReadable=!0,w(H))}}function g(H){const Q=H._readableState;A("emitReadable",Q.needReadable,Q.emittedReadable),Q.needReadable=!1,Q.emittedReadable||(A("emitReadable",Q.flowing),Q.emittedReadable=!0,e.nextTick(w,H))}function w(H){const Q=H._readableState;A("emitReadable_",Q.destroyed,Q.length,Q.ended),!Q.destroyed&&!Q.errored&&(Q.length||Q.ended)&&(H.emit("readable"),Q.emittedReadable=!1),Q.needReadable=!Q.flowing&&!Q.ended&&Q.length<=Q.highWaterMark,Re(H)}function I(H,Q){!Q.readingMore&&Q.constructed&&(Q.readingMore=!0,e.nextTick(W,H,Q))}function W(H,Q){for(;!Q.reading&&!Q.ended&&(Q.length<Q.highWaterMark||Q.flowing&&Q.length===0);){const Ie=Q.length;if(A("maybeReadMore read 0"),H.read(0),Ie===Q.length)break}Q.readingMore=!1}x.prototype._read=function(H){throw new se("_read()")},x.prototype.pipe=function(H,Q){const Ie=this,Ce=this._readableState;Ce.pipes.length===1&&(Ce.multiAwaitDrain||(Ce.multiAwaitDrain=!0,Ce.awaitDrainWriters=new u(Ce.awaitDrainWriters?[Ce.awaitDrainWriters]:[]))),Ce.pipes.push(H),A("pipe count=%d opts=%j",Ce.pipes.length,Q);const Et=(!Q||Q.end!==!1)&&H!==e.stdout&&H!==e.stderr?zp:es;Ce.endEmitted?e.nextTick(Et):Ie.once("end",Et),H.on("unpipe",er);function er(Jn,Vr){A("onunpipe"),Jn===Ie&&Vr&&Vr.hasUnpiped===!1&&(Vr.hasUnpiped=!0,ME())}function zp(){A("onend"),H.end()}let Xn,Gp=!1;function ME(){A("cleanup"),H.removeListener("close",Mu),H.removeListener("finish",Nu),Xn&&H.removeListener("drain",Xn),H.removeListener("error",ku),H.removeListener("unpipe",er),Ie.removeListener("end",zp),Ie.removeListener("end",es),Ie.removeListener("data",Xp),Gp=!0,Xn&&Ce.awaitDrainWriters&&(!H._writableState||H._writableState.needDrain)&&Xn()}function Qp(){Gp||(Ce.pipes.length===1&&Ce.pipes[0]===H?(A("false write response, pause",0),Ce.awaitDrainWriters=H,Ce.multiAwaitDrain=!1):Ce.pipes.length>1&&Ce.pipes.includes(H)&&(A("false write response, pause",Ce.awaitDrainWriters.size),Ce.awaitDrainWriters.add(H)),Ie.pause()),Xn||(Xn=ce(Ie,H),H.on("drain",Xn))}Ie.on("data",Xp);function Xp(Jn){A("ondata");const Vr=H.write(Jn);A("dest.write",Vr),Vr===!1&&Qp()}function ku(Jn){if(A("onerror",Jn),es(),H.removeListener("error",ku),H.listenerCount("error")===0){const Vr=H._writableState||H._readableState;Vr&&!Vr.errorEmitted?de(H,Jn):H.emit("error",Jn)}}b(H,"error",ku);function Mu(){H.removeListener("finish",Nu),es()}H.once("close",Mu);function Nu(){A("onfinish"),H.removeListener("close",Mu),es()}H.once("finish",Nu);function es(){A("unpipe"),Ie.unpipe(H)}return H.emit("pipe",Ie),H.writableNeedDrain===!0?Qp():Ce.flowing||(A("pipe resume"),Ie.resume()),H};function ce(H,Q){return function(){const Ce=H._readableState;Ce.awaitDrainWriters===Q?(A("pipeOnDrain",1),Ce.awaitDrainWriters=null):Ce.multiAwaitDrain&&(A("pipeOnDrain",Ce.awaitDrainWriters.size),Ce.awaitDrainWriters.delete(Q)),(!Ce.awaitDrainWriters||Ce.awaitDrainWriters.size===0)&&H.listenerCount("data")&&H.resume()}}x.prototype.unpipe=function(H){const Q=this._readableState,Ie={hasUnpiped:!1};if(Q.pipes.length===0)return this;if(!H){const Me=Q.pipes;Q.pipes=[],this.pause();for(let Et=0;Et<Me.length;Et++)Me[Et].emit("unpipe",this,{hasUnpiped:!1});return this}const Ce=t(Q.pipes,H);return Ce===-1?this:(Q.pipes.splice(Ce,1),Q.pipes.length===0&&this.pause(),H.emit("unpipe",this,Ie),this)},x.prototype.on=function(H,Q){const Ie=_.prototype.on.call(this,H,Q),Ce=this._readableState;return H==="data"?(Ce.readableListening=this.listenerCount("readable")>0,Ce.flowing!==!1&&this.resume()):H==="readable"&&!Ce.endEmitted&&!Ce.readableListening&&(Ce.readableListening=Ce.needReadable=!0,Ce.flowing=!1,Ce.emittedReadable=!1,A("on readable",Ce.length,Ce.reading),Ce.length?g(this):Ce.reading||e.nextTick(ke,this)),Ie},x.prototype.addListener=x.prototype.on,x.prototype.removeListener=function(H,Q){const Ie=_.prototype.removeListener.call(this,H,Q);return H==="readable"&&e.nextTick(xe,this),Ie},x.prototype.off=x.prototype.removeListener,x.prototype.removeAllListeners=function(H){const Q=_.prototype.removeAllListeners.apply(this,arguments);return(H==="readable"||H===void 0)&&e.nextTick(xe,this),Q};function xe(H){const Q=H._readableState;Q.readableListening=H.listenerCount("readable")>0,Q.resumeScheduled&&Q[ue]===!1?Q.flowing=!0:H.listenerCount("data")>0?H.resume():Q.readableListening||(Q.flowing=null)}function ke(H){A("readable nexttick read 0"),H.read(0)}x.prototype.resume=function(){const H=this._readableState;return H.flowing||(A("resume"),H.flowing=!H.readableListening,Te(this,H)),H[ue]=!1,this};function Te(H,Q){Q.resumeScheduled||(Q.resumeScheduled=!0,e.nextTick(Oe,H,Q))}function Oe(H,Q){A("resume",Q.reading),Q.reading||H.read(0),Q.resumeScheduled=!1,H.emit("resume"),Re(H),Q.flowing&&!Q.reading&&H.read(0)}x.prototype.pause=function(){return A("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(A("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[ue]=!0,this};function Re(H){const Q=H._readableState;for(A("flow",Q.flowing);Q.flowing&&H.read()!==null;);}x.prototype.wrap=function(H){let Q=!1;H.on("data",Ce=>{!this.push(Ce)&&H.pause&&(Q=!0,H.pause())}),H.on("end",()=>{this.push(null)}),H.on("error",Ce=>{de(this,Ce)}),H.on("close",()=>{this.destroy()}),H.on("destroy",()=>{this.destroy()}),this._read=()=>{Q&&H.resume&&(Q=!1,H.resume())};const Ie=s(H);for(let Ce=1;Ce<Ie.length;Ce++){const Me=Ie[Ce];this[Me]===void 0&&typeof H[Me]=="function"&&(this[Me]=H[Me].bind(H))}return this},x.prototype[d]=function(){return Ve(this)},x.prototype.iterator=function(H){return H!==void 0&&ne(H,"options"),Ve(this,H)};function Ve(H,Q){typeof H.read!="function"&&(H=x.wrap(H,{objectMode:!0}));const Ie=ut(H,Q);return Ie.stream=H,Ie}async function*ut(H,Q){let Ie=pe;function Ce(er){this===H?(Ie(),Ie=pe):Ie=er}H.on("readable",Ce);let Me;const Et=C(H,{writable:!1},er=>{Me=er?j(Me,er):null,Ie(),Ie=pe});try{for(;;){const er=H.destroyed?null:H.read();if(er!==null)yield er;else{if(Me)throw Me;if(Me===null)return;await new l(Ce)}}}catch(er){throw Me=j(Me,er),Me}finally{(Me||(Q==null?void 0:Q.destroyOnReturn)!==!1)&&(Me===void 0||H._readableState.autoDestroy)?$.destroyer(H,null):(H.off("readable",Ce),Et())}}i(x.prototype,{readable:{__proto__:null,get(){const H=this._readableState;return!!H&&H.readable!==!1&&!H.destroyed&&!H.errorEmitted&&!H.endEmitted},set(H){this._readableState&&(this._readableState.readable=!!H)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(H){this._readableState&&(this._readableState.flowing=H)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(H){this._readableState&&(this._readableState.destroyed=H)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),i(q.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[ue]!==!1},set(H){this[ue]=!!H}}}),x._fromList=Ze;function Ze(H,Q){if(Q.length===0)return null;let Ie;return Q.objectMode?Ie=Q.buffer.shift():!H||H>=Q.length?(Q.decoder?Ie=Q.buffer.join(""):Q.buffer.length===1?Ie=Q.buffer.first():Ie=Q.buffer.concat(Q.length),Q.buffer.clear()):Ie=Q.buffer.consume(H,Q.decoder),Ie}function at(H){const Q=H._readableState;A("endReadable",Q.endEmitted),Q.endEmitted||(Q.ended=!0,e.nextTick(mt,Q,H))}function mt(H,Q){if(A("endReadableNT",H.endEmitted,H.length),!H.errored&&!H.closeEmitted&&!H.endEmitted&&H.length===0){if(H.endEmitted=!0,Q.emit("end"),Q.writable&&Q.allowHalfOpen===!1)e.nextTick(ct,Q);else if(H.autoDestroy){const Ie=Q._writableState;(!Ie||Ie.autoDestroy&&(Ie.finished||Ie.writable===!1))&&Q.destroy()}}}function ct(H){H.writable&&!H.writableEnded&&!H.destroyed&&H.end()}x.from=function(H,Q){return G(x,H,Q)};let Xi;function Zo(){return Xi===void 0&&(Xi={}),Xi}return x.fromWeb=function(H,Q){return Zo().newStreamReadableFromReadableStream(H,Q)},x.toWeb=function(H,Q){return Zo().newReadableStreamFromStreamReadable(H,Q)},x.wrap=function(H,Q){var Ie,Ce;return new x({objectMode:(Ie=(Ce=H.readableObjectMode)!==null&&Ce!==void 0?Ce:H.objectMode)!==null&&Ie!==void 0?Ie:!0,...Q,destroy(Me,Et){$.destroyer(H,Me),Et(Me)}}).wrap(H)},Ic}var Cc,I0;function xp(){if(I0)return Cc;I0=1;const e=Vi,{ArrayPrototypeSlice:t,Error:r,FunctionPrototypeSymbolHasInstance:n,ObjectDefineProperty:o,ObjectDefineProperties:i,ObjectSetPrototypeOf:s,StringPrototypeToLowerCase:a,Symbol:l,SymbolHasInstance:u}=st;Cc=ne,ne.WritableState=B;const{EventEmitter:c}=hu,d=Ap.Stream,{Buffer:p}=Zt,m=Jo,{addAbortSignal:_}=wu,{getHighWaterMark:b,getDefaultHighWaterMark:T}=vu,{ERR_INVALID_ARG_TYPE:k,ERR_METHOD_NOT_IMPLEMENTED:C,ERR_MULTIPLE_CALLBACK:A,ERR_STREAM_CANNOT_PIPE:M,ERR_STREAM_DESTROYED:$,ERR_STREAM_ALREADY_FINISHED:R,ERR_STREAM_NULL_VALUES:D,ERR_STREAM_WRITE_AFTER_END:j,ERR_UNKNOWN_ENCODING:z}=Wt.codes,{errorOrDestroy:se}=m;s(ne.prototype,d.prototype),s(ne,d);function re(){}const L=l("kOnFinished");function B(v,S,E){typeof E!="boolean"&&(E=S instanceof gn()),this.objectMode=!!(v&&v.objectMode),E&&(this.objectMode=this.objectMode||!!(v&&v.writableObjectMode)),this.highWaterMark=v?b(this,v,"writableHighWaterMark",E):T(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;const N=!!(v&&v.decodeStrings===!1);this.decodeStrings=!N,this.defaultEncoding=v&&v.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=de.bind(void 0,S),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,oe(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!v||v.emitClose!==!1,this.autoDestroy=!v||v.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[L]=[]}function oe(v){v.buffered=[],v.bufferedIndex=0,v.allBuffers=!0,v.allNoop=!0}B.prototype.getBuffer=function(){return t(this.buffered,this.bufferedIndex)},o(B.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function ne(v){const S=this instanceof gn();if(!S&&!n(ne,this))return new ne(v);this._writableState=new B(v,this,S),v&&(typeof v.write=="function"&&(this._write=v.write),typeof v.writev=="function"&&(this._writev=v.writev),typeof v.destroy=="function"&&(this._destroy=v.destroy),typeof v.final=="function"&&(this._final=v.final),typeof v.construct=="function"&&(this._construct=v.construct),v.signal&&_(v.signal,this)),d.call(this,v),m.construct(this,()=>{const E=this._writableState;E.writing||me(this,E),F(this,E)})}o(ne,u,{__proto__:null,value:function(v){return n(this,v)?!0:this!==ne?!1:v&&v._writableState instanceof B}}),ne.prototype.pipe=function(){se(this,new M)};function ue(v,S,E,N){const P=v._writableState;if(typeof E=="function")N=E,E=P.defaultEncoding;else{if(!E)E=P.defaultEncoding;else if(E!=="buffer"&&!p.isEncoding(E))throw new z(E);typeof N!="function"&&(N=re)}if(S===null)throw new D;if(!P.objectMode)if(typeof S=="string")P.decodeStrings!==!1&&(S=p.from(S,E),E="buffer");else if(S instanceof p)E="buffer";else if(d._isUint8Array(S))S=d._uint8ArrayToBuffer(S),E="buffer";else throw new k("chunk",["string","Buffer","Uint8Array"],S);let J;return P.ending?J=new j:P.destroyed&&(J=new $("write")),J?(e.nextTick(N,J),se(v,J,!0),J):(P.pendingcb++,ae(v,P,S,E,N))}ne.prototype.write=function(v,S,E){return ue(this,v,S,E)===!0},ne.prototype.cork=function(){this._writableState.corked++},ne.prototype.uncork=function(){const v=this._writableState;v.corked&&(v.corked--,v.writing||me(this,v))},ne.prototype.setDefaultEncoding=function(S){if(typeof S=="string"&&(S=a(S)),!p.isEncoding(S))throw new z(S);return this._writableState.defaultEncoding=S,this};function ae(v,S,E,N,P){const J=S.objectMode?1:E.length;S.length+=J;const te=S.length<S.highWaterMark;return te||(S.needDrain=!0),S.writing||S.corked||S.errored||!S.constructed?(S.buffered.push({chunk:E,encoding:N,callback:P}),S.allBuffers&&N!=="buffer"&&(S.allBuffers=!1),S.allNoop&&P!==re&&(S.allNoop=!1)):(S.writelen=J,S.writecb=P,S.writing=!0,S.sync=!0,v._write(E,N,S.onwrite),S.sync=!1),te&&!S.errored&&!S.destroyed}function G(v,S,E,N,P,J,te){S.writelen=N,S.writecb=te,S.writing=!0,S.sync=!0,S.destroyed?S.onwrite(new $("write")):E?v._writev(P,S.onwrite):v._write(P,J,S.onwrite),S.sync=!1}function pe(v,S,E,N){--S.pendingcb,N(E),ie(S),se(v,E)}function de(v,S){const E=v._writableState,N=E.sync,P=E.writecb;if(typeof P!="function"){se(v,new A);return}E.writing=!1,E.writecb=null,E.length-=E.writelen,E.writelen=0,S?(S.stack,E.errored||(E.errored=S),v._readableState&&!v._readableState.errored&&(v._readableState.errored=S),N?e.nextTick(pe,v,E,S,P):pe(v,E,S,P)):(E.buffered.length>E.bufferedIndex&&me(v,E),N?E.afterWriteTickInfo!==null&&E.afterWriteTickInfo.cb===P?E.afterWriteTickInfo.count++:(E.afterWriteTickInfo={count:1,cb:P,stream:v,state:E},e.nextTick(ge,E.afterWriteTickInfo)):O(v,E,1,P))}function ge({stream:v,state:S,count:E,cb:N}){return S.afterWriteTickInfo=null,O(v,S,E,N)}function O(v,S,E,N){for(!S.ending&&!v.destroyed&&S.length===0&&S.needDrain&&(S.needDrain=!1,v.emit("drain"));E-- >0;)S.pendingcb--,N();S.destroyed&&ie(S),F(v,S)}function ie(v){if(v.writing)return;for(let P=v.bufferedIndex;P<v.buffered.length;++P){var S;const{chunk:J,callback:te}=v.buffered[P],U=v.objectMode?1:J.length;v.length-=U,te((S=v.errored)!==null&&S!==void 0?S:new $("write"))}const E=v[L].splice(0);for(let P=0;P<E.length;P++){var N;E[P]((N=v.errored)!==null&&N!==void 0?N:new $("end"))}oe(v)}function me(v,S){if(S.corked||S.bufferProcessing||S.destroyed||!S.constructed)return;const{buffered:E,bufferedIndex:N,objectMode:P}=S,J=E.length-N;if(!J)return;let te=N;if(S.bufferProcessing=!0,J>1&&v._writev){S.pendingcb-=J-1;const U=S.allNoop?re:x=>{for(let K=te;K<E.length;++K)E[K].callback(x)},q=S.allNoop&&te===0?E:t(E,te);q.allBuffers=S.allBuffers,G(v,S,!0,S.length,q,"",U),oe(S)}else{do{const{chunk:U,encoding:q,callback:x}=E[te];E[te++]=null;const K=P?1:U.length;G(v,S,!1,K,U,q,x)}while(te<E.length&&!S.writing);te===E.length?oe(S):te>256?(E.splice(0,te),S.bufferedIndex=0):S.bufferedIndex=te}S.bufferProcessing=!1}ne.prototype._write=function(v,S,E){if(this._writev)this._writev([{chunk:v,encoding:S}],E);else throw new C("_write()")},ne.prototype._writev=null,ne.prototype.end=function(v,S,E){const N=this._writableState;typeof v=="function"?(E=v,v=null,S=null):typeof S=="function"&&(E=S,S=null);let P;if(v!=null){const J=ue(this,v,S);J instanceof r&&(P=J)}return N.corked&&(N.corked=1,this.uncork()),P||(!N.errored&&!N.ending?(N.ending=!0,F(this,N,!0),N.ended=!0):N.finished?P=new R("end"):N.destroyed&&(P=new $("end"))),typeof E=="function"&&(P||N.finished?e.nextTick(E,P):N[L].push(E)),this};function ve(v){return v.ending&&!v.destroyed&&v.constructed&&v.length===0&&!v.errored&&v.buffered.length===0&&!v.finished&&!v.writing&&!v.errorEmitted&&!v.closeEmitted}function ye(v,S){let E=!1;function N(P){if(E){se(v,P??A());return}if(E=!0,S.pendingcb--,P){const J=S[L].splice(0);for(let te=0;te<J.length;te++)J[te](P);se(v,P,S.sync)}else ve(S)&&(S.prefinished=!0,v.emit("prefinish"),S.pendingcb++,e.nextTick(Z,v,S))}S.sync=!0,S.pendingcb++;try{v._final(N)}catch(P){N(P)}S.sync=!1}function V(v,S){!S.prefinished&&!S.finalCalled&&(typeof v._final=="function"&&!S.destroyed?(S.finalCalled=!0,ye(v,S)):(S.prefinished=!0,v.emit("prefinish")))}function F(v,S,E){ve(S)&&(V(v,S),S.pendingcb===0&&(E?(S.pendingcb++,e.nextTick((N,P)=>{ve(P)?Z(N,P):P.pendingcb--},v,S)):ve(S)&&(S.pendingcb++,Z(v,S))))}function Z(v,S){S.pendingcb--,S.finished=!0;const E=S[L].splice(0);for(let N=0;N<E.length;N++)E[N]();if(v.emit("finish"),S.autoDestroy){const N=v._readableState;(!N||N.autoDestroy&&(N.endEmitted||N.readable===!1))&&v.destroy()}}i(ne.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(v){this._writableState&&(this._writableState.destroyed=v)}},writable:{__proto__:null,get(){const v=this._writableState;return!!v&&v.writable!==!1&&!v.destroyed&&!v.errored&&!v.ending&&!v.ended},set(v){this._writableState&&(this._writableState.writable=!!v)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){const v=this._writableState;return v?!v.destroyed&&!v.ending&&v.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});const he=m.destroy;ne.prototype.destroy=function(v,S){const E=this._writableState;return!E.destroyed&&(E.bufferedIndex<E.buffered.length||E[L].length)&&e.nextTick(ie,E),he.call(this,v,S),this},ne.prototype._undestroy=m.undestroy,ne.prototype._destroy=function(v,S){S(v)},ne.prototype[c.captureRejectionSymbol]=function(v){this.destroy(v)};let fe;function ee(){return fe===void 0&&(fe={}),fe}return ne.fromWeb=function(v,S){return ee().newStreamWritableFromWritableStream(v,S)},ne.toWeb=function(v){return ee().newWritableStreamFromStreamWritable(v)},Cc}var Rc,C0;function R2(){if(C0)return Rc;C0=1;const e=Vi,t=Zt,{isReadable:r,isWritable:n,isIterable:o,isNodeStream:i,isReadableNodeStream:s,isWritableNodeStream:a,isDuplexNodeStream:l,isReadableStream:u,isWritableStream:c}=xn,d=Qn,{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:m,ERR_INVALID_RETURN_VALUE:_}}=Wt,{destroyer:b}=Jo,T=gn(),k=Eu(),C=xp(),{createDeferredPromise:A}=Dt,M=E1,$=globalThis.Blob||t.Blob,R=typeof $<"u"?function(B){return B instanceof $}:function(B){return!1},D=globalThis.AbortController||$s().AbortController,{FunctionPrototypeCall:j}=st;class z extends T{constructor(B){super(B),(B==null?void 0:B.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(B==null?void 0:B.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}}Rc=function L(B,oe){if(l(B))return B;if(s(B))return re({readable:B});if(a(B))return re({writable:B});if(i(B))return re({writable:!1,readable:!1});if(u(B))return re({readable:k.fromWeb(B)});if(c(B))return re({writable:C.fromWeb(B)});if(typeof B=="function"){const{value:ue,write:ae,final:G,destroy:pe}=se(B);if(o(ue))return M(z,ue,{objectMode:!0,write:ae,final:G,destroy:pe});const de=ue==null?void 0:ue.then;if(typeof de=="function"){let ge;const O=j(de,ue,ie=>{if(ie!=null)throw new _("nully","body",ie)},ie=>{b(ge,ie)});return ge=new z({objectMode:!0,readable:!1,write:ae,final(ie){G(async()=>{try{await O,e.nextTick(ie,null)}catch(me){e.nextTick(ie,me)}})},destroy:pe})}throw new _("Iterable, AsyncIterable or AsyncFunction",oe,ue)}if(R(B))return L(B.arrayBuffer());if(o(B))return M(z,B,{objectMode:!0,writable:!1});if(u(B==null?void 0:B.readable)&&c(B==null?void 0:B.writable))return z.fromWeb(B);if(typeof(B==null?void 0:B.writable)=="object"||typeof(B==null?void 0:B.readable)=="object"){const ue=B!=null&&B.readable?s(B==null?void 0:B.readable)?B==null?void 0:B.readable:L(B.readable):void 0,ae=B!=null&&B.writable?a(B==null?void 0:B.writable)?B==null?void 0:B.writable:L(B.writable):void 0;return re({readable:ue,writable:ae})}const ne=B==null?void 0:B.then;if(typeof ne=="function"){let ue;return j(ne,B,ae=>{ae!=null&&ue.push(ae),ue.push(null)},ae=>{b(ue,ae)}),ue=new z({objectMode:!0,writable:!1,read(){}})}throw new m(oe,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],B)};function se(L){let{promise:B,resolve:oe}=A();const ne=new D,ue=ne.signal;return{value:L(async function*(){for(;;){const G=B;B=null;const{chunk:pe,done:de,cb:ge}=await G;if(e.nextTick(ge),de)return;if(ue.aborted)throw new p(void 0,{cause:ue.reason});({promise:B,resolve:oe}=A()),yield pe}}(),{signal:ue}),write(G,pe,de){const ge=oe;oe=null,ge({chunk:G,done:!1,cb:de})},final(G){const pe=oe;oe=null,pe({done:!0,cb:G})},destroy(G,pe){ne.abort(),pe(G)}}}function re(L){const B=L.readable&&typeof L.readable.read!="function"?k.wrap(L.readable):L.readable,oe=L.writable;let ne=!!r(B),ue=!!n(oe),ae,G,pe,de,ge;function O(ie){const me=de;de=null,me?me(ie):ie&&ge.destroy(ie)}return ge=new z({readableObjectMode:!!(B!=null&&B.readableObjectMode),writableObjectMode:!!(oe!=null&&oe.writableObjectMode),readable:ne,writable:ue}),ue&&(d(oe,ie=>{ue=!1,ie&&b(B,ie),O(ie)}),ge._write=function(ie,me,ve){oe.write(ie,me)?ve():ae=ve},ge._final=function(ie){oe.end(),G=ie},oe.on("drain",function(){if(ae){const ie=ae;ae=null,ie()}}),oe.on("finish",function(){if(G){const ie=G;G=null,ie()}})),ne&&(d(B,ie=>{ne=!1,ie&&b(B,ie),O(ie)}),B.on("readable",function(){if(pe){const ie=pe;pe=null,ie()}}),B.on("end",function(){ge.push(null)}),ge._read=function(){for(;;){const ie=B.read();if(ie===null){pe=ge._read;return}if(!ge.push(ie))return}}),ge._destroy=function(ie,me){!ie&&de!==null&&(ie=new p),pe=null,ae=null,G=null,de===null?me(ie):(de=me,b(oe,ie),b(B,ie))},ge}return Rc}var Oc,R0;function gn(){if(R0)return Oc;R0=1;const{ObjectDefineProperties:e,ObjectGetOwnPropertyDescriptor:t,ObjectKeys:r,ObjectSetPrototypeOf:n}=st;Oc=s;const o=Eu(),i=xp();n(s.prototype,o.prototype),n(s,o);{const c=r(i.prototype);for(let d=0;d<c.length;d++){const p=c[d];s.prototype[p]||(s.prototype[p]=i.prototype[p])}}function s(c){if(!(this instanceof s))return new s(c);o.call(this,c),i.call(this,c),c?(this.allowHalfOpen=c.allowHalfOpen!==!1,c.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),c.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}e(s.prototype,{writable:{__proto__:null,...t(i.prototype,"writable")},writableHighWaterMark:{__proto__:null,...t(i.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...t(i.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...t(i.prototype,"writableBuffer")},writableLength:{__proto__:null,...t(i.prototype,"writableLength")},writableFinished:{__proto__:null,...t(i.prototype,"writableFinished")},writableCorked:{__proto__:null,...t(i.prototype,"writableCorked")},writableEnded:{__proto__:null,...t(i.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...t(i.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(c){this._readableState&&this._writableState&&(this._readableState.destroyed=c,this._writableState.destroyed=c)}}});let a;function l(){return a===void 0&&(a={}),a}s.fromWeb=function(c,d){return l().newStreamDuplexFromReadableWritablePair(c,d)},s.toWeb=function(c){return l().newReadableWritablePairFromDuplex(c)};let u;return s.from=function(c){return u||(u=R2()),u(c,"body")},Oc}const{ObjectSetPrototypeOf:S1,Symbol:O2}=st;var A1=mn;const{ERR_METHOD_NOT_IMPLEMENTED:k2}=Wt.codes,Ip=gn(),{getHighWaterMark:M2}=vu;S1(mn.prototype,Ip.prototype);S1(mn,Ip);const ks=O2("kCallback");function mn(e){if(!(this instanceof mn))return new mn(e);const t=e?M2(this,e,"readableHighWaterMark",!0):null;t===0&&(e={...e,highWaterMark:null,readableHighWaterMark:t,writableHighWaterMark:e.writableHighWaterMark||0}),Ip.call(this,e),this._readableState.sync=!1,this[ks]=null,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",N2)}function Jh(e){typeof this._flush=="function"&&!this.destroyed?this._flush((t,r)=>{if(t){e?e(t):this.destroy(t);return}r!=null&&this.push(r),this.push(null),e&&e()}):(this.push(null),e&&e())}function N2(){this._final!==Jh&&Jh.call(this)}mn.prototype._final=Jh;mn.prototype._transform=function(e,t,r){throw new k2("_transform()")};mn.prototype._write=function(e,t,r){const n=this._readableState,o=this._writableState,i=n.length;this._transform(e,t,(s,a)=>{if(s){r(s);return}a!=null&&this.push(a),o.ended||i===n.length||n.length<n.highWaterMark?r():this[ks]=r})};mn.prototype._read=function(){if(this[ks]){const e=this[ks];this[ks]=null,e()}};const{ObjectSetPrototypeOf:T1}=st;var x1=$o;const Cp=A1;T1($o.prototype,Cp.prototype);T1($o,Cp);function $o(e){if(!(this instanceof $o))return new $o(e);Cp.call(this,e)}$o.prototype._transform=function(e,t,r){r(null,e)};const bs=Vi,{ArrayIsArray:P2,Promise:L2,SymbolAsyncIterator:D2,SymbolDispose:B2}=st,El=Qn,{once:$2}=Dt,U2=Jo,O0=gn(),{aggregateTwoErrors:F2,codes:{ERR_INVALID_ARG_TYPE:Zh,ERR_INVALID_RETURN_VALUE:kc,ERR_MISSING_ARGS:j2,ERR_STREAM_DESTROYED:W2,ERR_STREAM_PREMATURE_CLOSE:H2},AbortError:V2}=Wt,{validateFunction:q2,validateAbortSignal:K2}=Xs,{isIterable:fi,isReadable:Mc,isReadableNodeStream:Xa,isNodeStream:k0,isTransformStream:uo,isWebStream:Y2,isReadableStream:Nc,isReadableFinished:z2}=xn,G2=globalThis.AbortController||$s().AbortController;let Pc,Lc,Dc;function M0(e,t,r){let n=!1;e.on("close",()=>{n=!0});const o=El(e,{readable:t,writable:r},i=>{n=!i});return{destroy:i=>{n||(n=!0,U2.destroyer(e,i||new W2("pipe")))},cleanup:o}}function Q2(e){return q2(e[e.length-1],"streams[stream.length - 1]"),e.pop()}function Bc(e){if(fi(e))return e;if(Xa(e))return X2(e);throw new Zh("val",["Readable","Iterable","AsyncIterable"],e)}async function*X2(e){Lc||(Lc=Eu()),yield*Lc.prototype[D2].call(e)}async function Ta(e,t,r,{end:n}){let o,i=null;const s=u=>{if(u&&(o=u),i){const c=i;i=null,c()}},a=()=>new L2((u,c)=>{o?c(o):i=()=>{o?c(o):u()}});t.on("drain",s);const l=El(t,{readable:!1},s);try{t.writableNeedDrain&&await a();for await(const u of e)t.write(u)||await a();n&&(t.end(),await a()),r()}catch(u){r(o!==u?F2(o,u):u)}finally{l(),t.off("drain",s)}}async function $c(e,t,r,{end:n}){uo(t)&&(t=t.writable);const o=t.getWriter();try{for await(const i of e)await o.ready,o.write(i).catch(()=>{});await o.ready,n&&await o.close(),r()}catch(i){try{await o.abort(i),r(i)}catch(s){r(s)}}}function J2(...e){return I1(e,$2(Q2(e)))}function I1(e,t,r){if(e.length===1&&P2(e[0])&&(e=e[0]),e.length<2)throw new j2("streams");const n=new G2,o=n.signal,i=r==null?void 0:r.signal,s=[];K2(i,"options.signal");function a(){_(new V2)}Dc=Dc||Dt.addAbortListener;let l;i&&(l=Dc(i,a));let u,c;const d=[];let p=0;function m(C){_(C,--p===0)}function _(C,A){var M;if(C&&(!u||u.code==="ERR_STREAM_PREMATURE_CLOSE")&&(u=C),!(!u&&!A)){for(;d.length;)d.shift()(u);(M=l)===null||M===void 0||M[B2](),n.abort(),A&&(u||s.forEach($=>$()),bs.nextTick(t,u,c))}}let b;for(let C=0;C<e.length;C++){const A=e[C],M=C<e.length-1,$=C>0,R=M||(r==null?void 0:r.end)!==!1,D=C===e.length-1;if(k0(A)){let j=function(z){z&&z.name!=="AbortError"&&z.code!=="ERR_STREAM_PREMATURE_CLOSE"&&m(z)};if(R){const{destroy:z,cleanup:se}=M0(A,M,$);d.push(z),Mc(A)&&D&&s.push(se)}A.on("error",j),Mc(A)&&D&&s.push(()=>{A.removeListener("error",j)})}if(C===0)if(typeof A=="function"){if(b=A({signal:o}),!fi(b))throw new kc("Iterable, AsyncIterable or Stream","source",b)}else fi(A)||Xa(A)||uo(A)?b=A:b=O0.from(A);else if(typeof A=="function"){if(uo(b)){var T;b=Bc((T=b)===null||T===void 0?void 0:T.readable)}else b=Bc(b);if(b=A(b,{signal:o}),M){if(!fi(b,!0))throw new kc("AsyncIterable",`transform[${C-1}]`,b)}else{var k;Pc||(Pc=x1);const j=new Pc({objectMode:!0}),z=(k=b)===null||k===void 0?void 0:k.then;if(typeof z=="function")p++,z.call(b,L=>{c=L,L!=null&&j.write(L),R&&j.end(),bs.nextTick(m)},L=>{j.destroy(L),bs.nextTick(m,L)});else if(fi(b,!0))p++,Ta(b,j,m,{end:R});else if(Nc(b)||uo(b)){const L=b.readable||b;p++,Ta(L,j,m,{end:R})}else throw new kc("AsyncIterable or Promise","destination",b);b=j;const{destroy:se,cleanup:re}=M0(b,!1,!0);d.push(se),D&&s.push(re)}}else if(k0(A)){if(Xa(b)){p+=2;const j=Z2(b,A,m,{end:R});Mc(A)&&D&&s.push(j)}else if(uo(b)||Nc(b)){const j=b.readable||b;p++,Ta(j,A,m,{end:R})}else if(fi(b))p++,Ta(b,A,m,{end:R});else throw new Zh("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],b);b=A}else if(Y2(A)){if(Xa(b))p++,$c(Bc(b),A,m,{end:R});else if(Nc(b)||fi(b))p++,$c(b,A,m,{end:R});else if(uo(b))p++,$c(b.readable,A,m,{end:R});else throw new Zh("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],b);b=A}else b=O0.from(A)}return(o!=null&&o.aborted||i!=null&&i.aborted)&&bs.nextTick(a),b}function Z2(e,t,r,{end:n}){let o=!1;if(t.on("close",()=>{o||r(new H2)}),e.pipe(t,{end:!1}),n){let i=function(){o=!0,t.end()};z2(e)?bs.nextTick(i):e.once("end",i)}else r();return El(e,{readable:!0,writable:!1},i=>{const s=e._readableState;i&&i.code==="ERR_STREAM_PREMATURE_CLOSE"&&s&&s.ended&&!s.errored&&!s.errorEmitted?e.once("end",r).once("error",r):r(i)}),El(t,{readable:!1,writable:!0},r)}var Rp={pipelineImpl:I1,pipeline:J2};const{pipeline:eP}=Rp,xa=gn(),{destroyer:tP}=Jo,{isNodeStream:Ia,isReadable:N0,isWritable:P0,isWebStream:Uc,isTransformStream:ai,isWritableStream:L0,isReadableStream:D0}=xn,{AbortError:rP,codes:{ERR_INVALID_ARG_VALUE:B0,ERR_MISSING_ARGS:nP}}=Wt,iP=Qn;var C1=function(...t){if(t.length===0)throw new nP("streams");if(t.length===1)return xa.from(t[0]);const r=[...t];if(typeof t[0]=="function"&&(t[0]=xa.from(t[0])),typeof t[t.length-1]=="function"){const m=t.length-1;t[m]=xa.from(t[m])}for(let m=0;m<t.length;++m)if(!(!Ia(t[m])&&!Uc(t[m]))){if(m<t.length-1&&!(N0(t[m])||D0(t[m])||ai(t[m])))throw new B0(`streams[${m}]`,r[m],"must be readable");if(m>0&&!(P0(t[m])||L0(t[m])||ai(t[m])))throw new B0(`streams[${m}]`,r[m],"must be writable")}let n,o,i,s,a;function l(m){const _=s;s=null,_?_(m):m?a.destroy(m):!p&&!d&&a.destroy()}const u=t[0],c=eP(t,l),d=!!(P0(u)||L0(u)||ai(u)),p=!!(N0(c)||D0(c)||ai(c));if(a=new xa({writableObjectMode:!!(u!=null&&u.writableObjectMode),readableObjectMode:!!(c!=null&&c.readableObjectMode),writable:d,readable:p}),d){if(Ia(u))a._write=function(_,b,T){u.write(_,b)?T():n=T},a._final=function(_){u.end(),o=_},u.on("drain",function(){if(n){const _=n;n=null,_()}});else if(Uc(u)){const b=(ai(u)?u.writable:u).getWriter();a._write=async function(T,k,C){try{await b.ready,b.write(T).catch(()=>{}),C()}catch(A){C(A)}},a._final=async function(T){try{await b.ready,b.close().catch(()=>{}),o=T}catch(k){T(k)}}}const m=ai(c)?c.readable:c;iP(m,()=>{if(o){const _=o;o=null,_()}})}if(p){if(Ia(c))c.on("readable",function(){if(i){const m=i;i=null,m()}}),c.on("end",function(){a.push(null)}),a._read=function(){for(;;){const m=c.read();if(m===null){i=a._read;return}if(!a.push(m))return}};else if(Uc(c)){const _=(ai(c)?c.readable:c).getReader();a._read=async function(){for(;;)try{const{value:b,done:T}=await _.read();if(!a.push(b))return;if(T){a.push(null);return}}catch{return}}}}return a._destroy=function(m,_){!m&&s!==null&&(m=new rP),i=null,n=null,o=null,s===null?_(m):(s=_,Ia(c)&&tP(c,m))},a};const oP=globalThis.AbortController||$s().AbortController,{codes:{ERR_INVALID_ARG_VALUE:sP,ERR_INVALID_ARG_TYPE:Zs,ERR_MISSING_ARGS:aP,ERR_OUT_OF_RANGE:lP},AbortError:jr}=Wt,{validateAbortSignal:Ki,validateInteger:$0,validateObject:Yi}=Xs,uP=st.Symbol("kWeak"),cP=st.Symbol("kResistStopPropagation"),{finished:fP}=Qn,hP=C1,{addAbortSignalNoValidate:dP}=wu,{isWritable:pP,isNodeStream:gP}=xn,{deprecate:mP}=Dt,{ArrayPrototypePush:yP,Boolean:_P,MathFloor:U0,Number:bP,NumberIsNaN:wP,Promise:F0,PromiseReject:j0,PromiseResolve:vP,PromisePrototypeThen:W0,Symbol:R1}=st,Sl=R1("kEmpty"),H0=R1("kEof");function EP(e,t){if(t!=null&&Yi(t,"options"),(t==null?void 0:t.signal)!=null&&Ki(t.signal,"options.signal"),gP(e)&&!pP(e))throw new sP("stream",e,"must be writable");const r=hP(this,e);return t!=null&&t.signal&&dP(t.signal,r),r}function Su(e,t){if(typeof e!="function")throw new Zs("fn",["Function","AsyncFunction"],e);t!=null&&Yi(t,"options"),(t==null?void 0:t.signal)!=null&&Ki(t.signal,"options.signal");let r=1;(t==null?void 0:t.concurrency)!=null&&(r=U0(t.concurrency));let n=r-1;return(t==null?void 0:t.highWaterMark)!=null&&(n=U0(t.highWaterMark)),$0(r,"options.concurrency",1),$0(n,"options.highWaterMark",0),n+=r,(async function*(){const i=Dt.AbortSignalAny([t==null?void 0:t.signal].filter(_P)),s=this,a=[],l={signal:i};let u,c,d=!1,p=0;function m(){d=!0,_()}function _(){p-=1,b()}function b(){c&&!d&&p<r&&a.length<n&&(c(),c=null)}async function T(){try{for await(let k of s){if(d)return;if(i.aborted)throw new jr;try{if(k=e(k,l),k===Sl)continue;k=vP(k)}catch(C){k=j0(C)}p+=1,W0(k,_,m),a.push(k),u&&(u(),u=null),!d&&(a.length>=n||p>=r)&&await new F0(C=>{c=C})}a.push(H0)}catch(k){const C=j0(k);W0(C,_,m),a.push(C)}finally{d=!0,u&&(u(),u=null)}}T();try{for(;;){for(;a.length>0;){const k=await a[0];if(k===H0)return;if(i.aborted)throw new jr;k!==Sl&&(yield k),a.shift(),b()}await new F0(k=>{u=k})}}finally{d=!0,c&&(c(),c=null)}}).call(this)}function SP(e=void 0){return e!=null&&Yi(e,"options"),(e==null?void 0:e.signal)!=null&&Ki(e.signal,"options.signal"),(async function*(){let r=0;for await(const o of this){var n;if(e!=null&&(n=e.signal)!==null&&n!==void 0&&n.aborted)throw new jr({cause:e.signal.reason});yield[r++,o]}}).call(this)}async function O1(e,t=void 0){for await(const r of Op.call(this,e,t))return!0;return!1}async function AP(e,t=void 0){if(typeof e!="function")throw new Zs("fn",["Function","AsyncFunction"],e);return!await O1.call(this,async(...r)=>!await e(...r),t)}async function TP(e,t){for await(const r of Op.call(this,e,t))return r}async function xP(e,t){if(typeof e!="function")throw new Zs("fn",["Function","AsyncFunction"],e);async function r(n,o){return await e(n,o),Sl}for await(const n of Su.call(this,r,t));}function Op(e,t){if(typeof e!="function")throw new Zs("fn",["Function","AsyncFunction"],e);async function r(n,o){return await e(n,o)?n:Sl}return Su.call(this,r,t)}class IP extends aP{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}}async function CP(e,t,r){var n;if(typeof e!="function")throw new Zs("reducer",["Function","AsyncFunction"],e);r!=null&&Yi(r,"options"),(r==null?void 0:r.signal)!=null&&Ki(r.signal,"options.signal");let o=arguments.length>1;if(r!=null&&(n=r.signal)!==null&&n!==void 0&&n.aborted){const u=new jr(void 0,{cause:r.signal.reason});throw this.once("error",()=>{}),await fP(this.destroy(u)),u}const i=new oP,s=i.signal;if(r!=null&&r.signal){const u={once:!0,[uP]:this,[cP]:!0};r.signal.addEventListener("abort",()=>i.abort(),u)}let a=!1;try{for await(const u of this){var l;if(a=!0,r!=null&&(l=r.signal)!==null&&l!==void 0&&l.aborted)throw new jr;o?t=await e(t,u,{signal:s}):(t=u,o=!0)}if(!a&&!o)throw new IP}finally{i.abort()}return t}async function RP(e){e!=null&&Yi(e,"options"),(e==null?void 0:e.signal)!=null&&Ki(e.signal,"options.signal");const t=[];for await(const n of this){var r;if(e!=null&&(r=e.signal)!==null&&r!==void 0&&r.aborted)throw new jr(void 0,{cause:e.signal.reason});yP(t,n)}return t}function OP(e,t){const r=Su.call(this,e,t);return(async function*(){for await(const o of r)yield*o}).call(this)}function k1(e){if(e=bP(e),wP(e))return 0;if(e<0)throw new lP("number",">= 0",e);return e}function kP(e,t=void 0){return t!=null&&Yi(t,"options"),(t==null?void 0:t.signal)!=null&&Ki(t.signal,"options.signal"),e=k1(e),(async function*(){var n;if(t!=null&&(n=t.signal)!==null&&n!==void 0&&n.aborted)throw new jr;for await(const i of this){var o;if(t!=null&&(o=t.signal)!==null&&o!==void 0&&o.aborted)throw new jr;e--<=0&&(yield i)}}).call(this)}function MP(e,t=void 0){return t!=null&&Yi(t,"options"),(t==null?void 0:t.signal)!=null&&Ki(t.signal,"options.signal"),e=k1(e),(async function*(){var n;if(t!=null&&(n=t.signal)!==null&&n!==void 0&&n.aborted)throw new jr;for await(const i of this){var o;if(t!=null&&(o=t.signal)!==null&&o!==void 0&&o.aborted)throw new jr;if(e-- >0&&(yield i),e<=0)return}}).call(this)}bp.streamReturningOperators={asIndexedPairs:mP(SP,"readable.asIndexedPairs will be removed in a future version."),drop:kP,filter:Op,flatMap:OP,map:Su,take:MP,compose:EP};bp.promiseReturningOperators={every:AP,forEach:xP,reduce:CP,toArray:RP,some:O1,find:TP};var Fc,V0;function M1(){if(V0)return Fc;V0=1;const{ArrayPrototypePop:e,Promise:t}=st,{isIterable:r,isNodeStream:n,isWebStream:o}=xn,{pipelineImpl:i}=Rp,{finished:s}=Qn;N1();function a(...l){return new t((u,c)=>{let d,p;const m=l[l.length-1];if(m&&typeof m=="object"&&!n(m)&&!r(m)&&!o(m)){const _=e(l);d=_.signal,p=_.end}i(l,(_,b)=>{_?c(_):u(b)},{signal:d,end:p})})}return Fc={finished:s,pipeline:a},Fc}var q0;function N1(){if(q0)return vc.exports;q0=1;const{Buffer:e}=Zt,{ObjectDefineProperty:t,ObjectKeys:r,ReflectApply:n}=st,{promisify:{custom:o}}=Dt,{streamReturningOperators:i,promiseReturningOperators:s}=bp,{codes:{ERR_ILLEGAL_CONSTRUCTOR:a}}=Wt,l=C1,{setDefaultHighWaterMark:u,getDefaultHighWaterMark:c}=vu,{pipeline:d}=Rp,{destroyer:p}=Jo,m=Qn,_=M1(),b=xn,T=vc.exports=Ap.Stream;T.isDestroyed=b.isDestroyed,T.isDisturbed=b.isDisturbed,T.isErrored=b.isErrored,T.isReadable=b.isReadable,T.isWritable=b.isWritable,T.Readable=Eu();for(const C of r(i)){let M=function(...$){if(new.target)throw a();return T.Readable.from(n(A,this,$))};const A=i[C];t(M,"name",{__proto__:null,value:A.name}),t(M,"length",{__proto__:null,value:A.length}),t(T.Readable.prototype,C,{__proto__:null,value:M,enumerable:!1,configurable:!0,writable:!0})}for(const C of r(s)){let M=function(...$){if(new.target)throw a();return n(A,this,$)};const A=s[C];t(M,"name",{__proto__:null,value:A.name}),t(M,"length",{__proto__:null,value:A.length}),t(T.Readable.prototype,C,{__proto__:null,value:M,enumerable:!1,configurable:!0,writable:!0})}T.Writable=xp(),T.Duplex=gn(),T.Transform=A1,T.PassThrough=x1,T.pipeline=d;const{addAbortSignal:k}=wu;return T.addAbortSignal=k,T.finished=m,T.destroy=p,T.compose=l,T.setDefaultHighWaterMark=u,T.getDefaultHighWaterMark=c,t(T,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return _}}),t(d,o,{__proto__:null,enumerable:!0,get(){return _.pipeline}}),t(m,o,{__proto__:null,enumerable:!0,get(){return _.finished}}),T.Stream=T,T._isUint8Array=function(A){return A instanceof Uint8Array},T._uint8ArrayToBuffer=function(A){return e.from(A.buffer,A.byteOffset,A.byteLength)},vc.exports}(function(e){const t=N1(),r=M1(),n=t.Readable.destroy;e.exports=t.Readable,e.exports._uint8ArrayToBuffer=t._uint8ArrayToBuffer,e.exports._isUint8Array=t._isUint8Array,e.exports.isDisturbed=t.isDisturbed,e.exports.isErrored=t.isErrored,e.exports.isReadable=t.isReadable,e.exports.Readable=t.Readable,e.exports.Writable=t.Writable,e.exports.Duplex=t.Duplex,e.exports.Transform=t.Transform,e.exports.PassThrough=t.PassThrough,e.exports.addAbortSignal=t.addAbortSignal,e.exports.finished=t.finished,e.exports.destroy=t.destroy,e.exports.destroy=n,e.exports.pipeline=t.pipeline,e.exports.compose=t.compose,Object.defineProperty(t,"promises",{configurable:!0,enumerable:!0,get(){return r}}),e.exports.Stream=t.Stream,e.exports.default=e.exports})(Rv);var NP=Rv.exports,ed={exports:{}};typeof Object.create=="function"?ed.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:ed.exports=function(t,r){if(r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t}};var PP=ed.exports;const{Buffer:mr}=Zt,P1=Symbol.for("BufferList");function Xe(e){if(!(this instanceof Xe))return new Xe(e);Xe._init.call(this,e)}Xe._init=function(t){Object.defineProperty(this,P1,{value:!0}),this._bufs=[],this.length=0,t&&this.append(t)};Xe.prototype._new=function(t){return new Xe(t)};Xe.prototype._offset=function(t){if(t===0)return[0,0];let r=0;for(let n=0;n<this._bufs.length;n++){const o=r+this._bufs[n].length;if(t<o||n===this._bufs.length-1)return[n,t-r];r=o}};Xe.prototype._reverseOffset=function(e){const t=e[0];let r=e[1];for(let n=0;n<t;n++)r+=this._bufs[n].length;return r};Xe.prototype.get=function(t){if(t>this.length||t<0)return;const r=this._offset(t);return this._bufs[r[0]][r[1]]};Xe.prototype.slice=function(t,r){return typeof t=="number"&&t<0&&(t+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,t,r)};Xe.prototype.copy=function(t,r,n,o){if((typeof n!="number"||n<0)&&(n=0),(typeof o!="number"||o>this.length)&&(o=this.length),n>=this.length||o<=0)return t||mr.alloc(0);const i=!!t,s=this._offset(n),a=o-n;let l=a,u=i&&r||0,c=s[1];if(n===0&&o===this.length){if(!i)return this._bufs.length===1?this._bufs[0]:mr.concat(this._bufs,this.length);for(let d=0;d<this._bufs.length;d++)this._bufs[d].copy(t,u),u+=this._bufs[d].length;return t}if(l<=this._bufs[s[0]].length-c)return i?this._bufs[s[0]].copy(t,r,c,c+l):this._bufs[s[0]].slice(c,c+l);i||(t=mr.allocUnsafe(a));for(let d=s[0];d<this._bufs.length;d++){const p=this._bufs[d].length-c;if(l>p)this._bufs[d].copy(t,u,c),u+=p;else{this._bufs[d].copy(t,u,c,c+l),u+=p;break}l-=p,c&&(c=0)}return t.length>u?t.slice(0,u):t};Xe.prototype.shallowSlice=function(t,r){if(t=t||0,r=typeof r!="number"?this.length:r,t<0&&(t+=this.length),r<0&&(r+=this.length),t===r)return this._new();const n=this._offset(t),o=this._offset(r),i=this._bufs.slice(n[0],o[0]+1);return o[1]===0?i.pop():i[i.length-1]=i[i.length-1].slice(0,o[1]),n[1]!==0&&(i[0]=i[0].slice(n[1])),this._new(i)};Xe.prototype.toString=function(t,r,n){return this.slice(r,n).toString(t)};Xe.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};Xe.prototype.duplicate=function(){const t=this._new();for(let r=0;r<this._bufs.length;r++)t.append(this._bufs[r]);return t};Xe.prototype.append=function(t){if(t==null)return this;if(t.buffer)this._appendBuffer(mr.from(t.buffer,t.byteOffset,t.byteLength));else if(Array.isArray(t))for(let r=0;r<t.length;r++)this.append(t[r]);else if(this._isBufferList(t))for(let r=0;r<t._bufs.length;r++)this.append(t._bufs[r]);else typeof t=="number"&&(t=t.toString()),this._appendBuffer(mr.from(t));return this};Xe.prototype._appendBuffer=function(t){this._bufs.push(t),this.length+=t.length};Xe.prototype.indexOf=function(e,t,r){if(r===void 0&&typeof t=="string"&&(r=t,t=void 0),typeof e=="function"||Array.isArray(e))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof e=="number"?e=mr.from([e]):typeof e=="string"?e=mr.from(e,r):this._isBufferList(e)?e=e.slice():Array.isArray(e.buffer)?e=mr.from(e.buffer,e.byteOffset,e.byteLength):mr.isBuffer(e)||(e=mr.from(e)),t=Number(t||0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;const n=this._offset(t);let o=n[0],i=n[1];for(;o<this._bufs.length;o++){const s=this._bufs[o];for(;i<s.length;)if(s.length-i>=e.length){const l=s.indexOf(e,i);if(l!==-1)return this._reverseOffset([o,l]);i=s.length-e.length+1}else{const l=this._reverseOffset([o,i]);if(this._match(l,e))return l;i++}i=0}return-1};Xe.prototype._match=function(e,t){if(this.length-e<t.length)return!1;for(let r=0;r<t.length;r++)if(this.get(e+r)!==t[r])return!1;return!0};(function(){const e={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(const t in e)(function(r){e[r]===null?Xe.prototype[r]=function(n,o){return this.slice(n,n+o)[r](0,o)}:Xe.prototype[r]=function(n=0){return this.slice(n,n+e[r])[r](0)}})(t)})();Xe.prototype._isBufferList=function(t){return t instanceof Xe||Xe.isBufferList(t)};Xe.isBufferList=function(t){return t!=null&&t[P1]};var LP=Xe;const kp=NP.Duplex,DP=PP,ea=LP;function Ct(e){if(!(this instanceof Ct))return new Ct(e);if(typeof e=="function"){this._callback=e;const t=(function(n){this._callback&&(this._callback(n),this._callback=null)}).bind(this);this.on("pipe",function(n){n.on("error",t)}),this.on("unpipe",function(n){n.removeListener("error",t)}),e=null}ea._init.call(this,e),kp.call(this)}DP(Ct,kp);Object.assign(Ct.prototype,ea.prototype);Ct.prototype._new=function(t){return new Ct(t)};Ct.prototype._write=function(t,r,n){this._appendBuffer(t),typeof n=="function"&&n()};Ct.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};Ct.prototype.end=function(t){kp.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Ct.prototype._destroy=function(t,r){this._bufs.length=0,this.length=0,r(t)};Ct.prototype._isBufferList=function(t){return t instanceof Ct||t instanceof ea||Ct.isBufferList(t)};Ct.isBufferList=ea.isBufferList;mp.exports=Ct;mp.exports.BufferListStream=Ct;mp.exports.BufferList=ea;var BP={exports:{}};(function(e){const t=e.exports,{Buffer:r}=Zt;t.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},t.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},t.requiredHeaderFlagsErrors={};for(const o in t.requiredHeaderFlags){const i=t.requiredHeaderFlags[o];t.requiredHeaderFlagsErrors[o]="Invalid header flag bits, must be 0x"+i.toString(16)+" for "+t.types[o]+" packet"}t.codes={};for(const o in t.types){const i=t.types[o];t.codes[i]=o}t.CMD_SHIFT=4,t.CMD_MASK=240,t.DUP_MASK=8,t.QOS_MASK=3,t.QOS_SHIFT=1,t.RETAIN_MASK=1,t.VARBYTEINT_MASK=127,t.VARBYTEINT_FIN_MASK=128,t.VARBYTEINT_MAX=268435455,t.SESSIONPRESENT_MASK=1,t.SESSIONPRESENT_HEADER=r.from([t.SESSIONPRESENT_MASK]),t.CONNACK_HEADER=r.from([t.codes.connack<<t.CMD_SHIFT]),t.USERNAME_MASK=128,t.PASSWORD_MASK=64,t.WILL_RETAIN_MASK=32,t.WILL_QOS_MASK=24,t.WILL_QOS_SHIFT=3,t.WILL_FLAG_MASK=4,t.CLEAN_SESSION_MASK=2,t.CONNECT_HEADER=r.from([t.codes.connect<<t.CMD_SHIFT]),t.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},t.propertiesCodes={};for(const o in t.properties){const i=t.properties[o];t.propertiesCodes[i]=o}t.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function n(o){return[0,1,2].map(i=>[0,1].map(s=>[0,1].map(a=>{const l=r.alloc(1);return l.writeUInt8(t.codes[o]<<t.CMD_SHIFT|(s?t.DUP_MASK:0)|i<<t.QOS_SHIFT|a,0,!0),l})))}t.PUBLISH_HEADER=n("publish"),t.SUBSCRIBE_HEADER=n("subscribe"),t.SUBSCRIBE_OPTIONS_QOS_MASK=3,t.SUBSCRIBE_OPTIONS_NL_MASK=1,t.SUBSCRIBE_OPTIONS_NL_SHIFT=2,t.SUBSCRIBE_OPTIONS_RAP_MASK=1,t.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,t.SUBSCRIBE_OPTIONS_RH_MASK=3,t.SUBSCRIBE_OPTIONS_RH_SHIFT=4,t.SUBSCRIBE_OPTIONS_RH=[0,16,32],t.SUBSCRIBE_OPTIONS_NL=4,t.SUBSCRIBE_OPTIONS_RAP=8,t.SUBSCRIBE_OPTIONS_QOS=[0,1,2],t.UNSUBSCRIBE_HEADER=n("unsubscribe"),t.ACKS={unsuback:n("unsuback"),puback:n("puback"),pubcomp:n("pubcomp"),pubrel:n("pubrel"),pubrec:n("pubrec")},t.SUBACK_HEADER=r.from([t.codes.suback<<t.CMD_SHIFT]),t.VERSION3=r.from([3]),t.VERSION4=r.from([4]),t.VERSION5=r.from([5]),t.VERSION131=r.from([131]),t.VERSION132=r.from([132]),t.QOS=[0,1,2].map(o=>r.from([o])),t.EMPTY={pingreq:r.from([t.codes.pingreq<<4,0]),pingresp:r.from([t.codes.pingresp<<4,0]),disconnect:r.from([t.codes.disconnect<<4,0])},t.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},t.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},t.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},t.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},t.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},t.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}})(BP);function L1(){throw new Error("setTimeout has not been defined")}function D1(){throw new Error("clearTimeout has not been defined")}var Nn=L1,Pn=D1;typeof Ri.setTimeout=="function"&&(Nn=setTimeout);typeof Ri.clearTimeout=="function"&&(Pn=clearTimeout);function B1(e){if(Nn===setTimeout)return setTimeout(e,0);if((Nn===L1||!Nn)&&setTimeout)return Nn=setTimeout,setTimeout(e,0);try{return Nn(e,0)}catch{try{return Nn.call(null,e,0)}catch{return Nn.call(this,e,0)}}}function $P(e){if(Pn===clearTimeout)return clearTimeout(e);if((Pn===D1||!Pn)&&clearTimeout)return Pn=clearTimeout,clearTimeout(e);try{return Pn(e)}catch{try{return Pn.call(null,e)}catch{return Pn.call(this,e)}}}var on=[],Co=!1,wi,Ja=-1;function UP(){!Co||!wi||(Co=!1,wi.length?on=wi.concat(on):Ja=-1,on.length&&$1())}function $1(){if(!Co){var e=B1(UP);Co=!0;for(var t=on.length;t;){for(wi=on,on=[];++Ja<t;)wi&&wi[Ja].run();Ja=-1,t=on.length}wi=null,Co=!1,$P(e)}}function FP(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];on.push(new U1(e,t)),on.length===1&&!Co&&B1($1)}function U1(e,t){this.fun=e,this.array=t}U1.prototype.run=function(){this.fun.apply(null,this.array)};var jP="browser",WP="browser",HP=!0,VP={},qP=[],KP="",YP={},zP={},GP={};function zi(){}var QP=zi,XP=zi,JP=zi,ZP=zi,eL=zi,tL=zi,rL=zi;function nL(e){throw new Error("process.binding is not supported")}function iL(){return"/"}function oL(e){throw new Error("process.chdir is not supported")}function sL(){return 0}var co=Ri.performance||{},aL=co.now||co.mozNow||co.msNow||co.oNow||co.webkitNow||function(){return new Date().getTime()};function lL(e){var t=aL.call(co)*.001,r=Math.floor(t),n=Math.floor(t%1*1e9);return e&&(r=r-e[0],n=n-e[1],n<0&&(r--,n+=1e9)),[r,n]}var uL=new Date;function cL(){var e=new Date,t=e-uL;return t/1e3}var Yt={nextTick:FP,title:jP,browser:HP,env:VP,argv:qP,version:KP,versions:YP,on:QP,addListener:XP,once:JP,off:ZP,removeListener:eL,removeAllListeners:tL,emit:rL,binding:nL,cwd:iL,chdir:oL,umask:sL,hrtime:lL,platform:WP,release:zP,config:GP,uptime:cL},td={exports:{}},jc,K0;function fL(){if(K0)return jc;K0=1;var e=1e3,t=e*60,r=t*60,n=r*24,o=n*7,i=n*365.25;jc=function(c,d){d=d||{};var p=typeof c;if(p==="string"&&c.length>0)return s(c);if(p==="number"&&isFinite(c))return d.long?l(c):a(c);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(c))};function s(c){if(c=String(c),!(c.length>100)){var d=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(c);if(d){var p=parseFloat(d[1]),m=(d[2]||"ms").toLowerCase();switch(m){case"years":case"year":case"yrs":case"yr":case"y":return p*i;case"weeks":case"week":case"w":return p*o;case"days":case"day":case"d":return p*n;case"hours":case"hour":case"hrs":case"hr":case"h":return p*r;case"minutes":case"minute":case"mins":case"min":case"m":return p*t;case"seconds":case"second":case"secs":case"sec":case"s":return p*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return p;default:return}}}}function a(c){var d=Math.abs(c);return d>=n?Math.round(c/n)+"d":d>=r?Math.round(c/r)+"h":d>=t?Math.round(c/t)+"m":d>=e?Math.round(c/e)+"s":c+"ms"}function l(c){var d=Math.abs(c);return d>=n?u(c,d,n,"day"):d>=r?u(c,d,r,"hour"):d>=t?u(c,d,t,"minute"):d>=e?u(c,d,e,"second"):c+" ms"}function u(c,d,p,m){var _=d>=p*1.5;return Math.round(c/p)+" "+m+(_?"s":"")}return jc}function hL(e){r.debug=r,r.default=r,r.coerce=l,r.disable=i,r.enable=o,r.enabled=s,r.humanize=fL(),r.destroy=u,Object.keys(e).forEach(c=>{r[c]=e[c]}),r.names=[],r.skips=[],r.formatters={};function t(c){let d=0;for(let p=0;p<c.length;p++)d=(d<<5)-d+c.charCodeAt(p),d|=0;return r.colors[Math.abs(d)%r.colors.length]}r.selectColor=t;function r(c){let d,p=null,m,_;function b(...T){if(!b.enabled)return;const k=b,C=Number(new Date),A=C-(d||C);k.diff=A,k.prev=d,k.curr=C,d=C,T[0]=r.coerce(T[0]),typeof T[0]!="string"&&T.unshift("%O");let M=0;T[0]=T[0].replace(/%([a-zA-Z%])/g,(R,D)=>{if(R==="%%")return"%";M++;const j=r.formatters[D];if(typeof j=="function"){const z=T[M];R=j.call(k,z),T.splice(M,1),M--}return R}),r.formatArgs.call(k,T),(k.log||r.log).apply(k,T)}return b.namespace=c,b.useColors=r.useColors(),b.color=r.selectColor(c),b.extend=n,b.destroy=r.destroy,Object.defineProperty(b,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(m!==r.namespaces&&(m=r.namespaces,_=r.enabled(c)),_),set:T=>{p=T}}),typeof r.init=="function"&&r.init(b),b}function n(c,d){const p=r(this.namespace+(typeof d>"u"?":":d)+c);return p.log=this.log,p}function o(c){r.save(c),r.namespaces=c,r.names=[],r.skips=[];let d;const p=(typeof c=="string"?c:"").split(/[\s,]+/),m=p.length;for(d=0;d<m;d++)p[d]&&(c=p[d].replace(/\*/g,".*?"),c[0]==="-"?r.skips.push(new RegExp("^"+c.slice(1)+"$")):r.names.push(new RegExp("^"+c+"$")))}function i(){const c=[...r.names.map(a),...r.skips.map(a).map(d=>"-"+d)].join(",");return r.enable(""),c}function s(c){if(c[c.length-1]==="*")return!0;let d,p;for(d=0,p=r.skips.length;d<p;d++)if(r.skips[d].test(c))return!1;for(d=0,p=r.names.length;d<p;d++)if(r.names[d].test(c))return!0;return!1}function a(c){return c.toString().substring(2,c.toString().length-2).replace(/\.\*\?$/,"*")}function l(c){return c instanceof Error?c.stack||c.message:c}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}var dL=hL;(function(e,t){var r={};t.formatArgs=o,t.save=i,t.load=s,t.useColors=n,t.storage=a(),t.destroy=(()=>{let u=!1;return()=>{u||(u=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let u;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(u=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(u[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function o(u){if(u[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+u[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const c="color: "+this.color;u.splice(1,0,c,"color: inherit");let d=0,p=0;u[0].replace(/%[a-zA-Z%]/g,m=>{m!=="%%"&&(d++,m==="%c"&&(p=d))}),u.splice(p,0,c)}t.log=console.debug||console.log||(()=>{});function i(u){try{u?t.storage.setItem("debug",u):t.storage.removeItem("debug")}catch{}}function s(){let u;try{u=t.storage.getItem("debug")}catch{}return!u&&typeof Yt<"u"&&"env"in Yt&&(u=r.DEBUG),u}function a(){try{return localStorage}catch{}}e.exports=dL(t);const{formatters:l}=e.exports;l.j=function(u){try{return JSON.stringify(u)}catch(c){return"[UnexpectedJSONParseError]: "+c.message}}})(td,td.exports);var F1=td.exports;F1("mqtt-packet:parser");const{Buffer:Y0}=Zt;Y0.isBuffer(Y0.from([1,2]).subarray(0,1));var rd={exports:{}};typeof Yt>"u"||!Yt.version||Yt.version.indexOf("v0.")===0||Yt.version.indexOf("v1.")===0&&Yt.version.indexOf("v1.8.")!==0?rd.exports={nextTick:pL}:rd.exports=Yt;function pL(e,t,r,n){if(typeof e!="function")throw new TypeError('"callback" argument must be a function');var o=arguments.length,i,s;switch(o){case 0:case 1:return Yt.nextTick(e);case 2:return Yt.nextTick(function(){e.call(null,t)});case 3:return Yt.nextTick(function(){e.call(null,t,r)});case 4:return Yt.nextTick(function(){e.call(null,t,r,n)});default:for(i=new Array(o-1),s=0;s<i.length;)i[s++]=arguments[s];return Yt.nextTick(function(){e.apply(null,i)})}}var gL=rd.exports;const{Buffer:j1}=Zt;j1.allocUnsafe(0);j1.from([0]);gL.nextTick;F1("mqtt-packet:writeToStream");function Za(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function mL(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Mp(e){let t,r,n;e.length!==2?(t=Za,r=(a,l)=>Za(e(a),l),n=(a,l)=>e(a)-l):(t=e===Za||e===mL?e:yL,r=e,n=e);function o(a,l,u=0,c=a.length){if(u<c){if(t(l,l)!==0)return c;do{const d=u+c>>>1;r(a[d],l)<0?u=d+1:c=d}while(u<c)}return u}function i(a,l,u=0,c=a.length){if(u<c){if(t(l,l)!==0)return c;do{const d=u+c>>>1;r(a[d],l)<=0?u=d+1:c=d}while(u<c)}return u}function s(a,l,u=0,c=a.length){const d=o(a,l,u,c-1);return d>u&&n(a[d-1],l)>-n(a[d],l)?d-1:d}return{left:o,center:s,right:i}}function yL(){return 0}function _L(e){return e===null?NaN:+e}const bL=Mp(Za),wL=bL.right;Mp(_L).center;function E3(e,t){let r,n;if(t===void 0)for(const o of e)o!=null&&(r===void 0?o>=o&&(r=n=o):(r>o&&(r=o),n<o&&(n=o)));else{let o=-1;for(let i of e)(i=t(i,++o,e))!=null&&(r===void 0?i>=i&&(r=n=i):(r>i&&(r=i),n<i&&(n=i)))}return[r,n]}class z0 extends Map{constructor(t,r=SL){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(const[n,o]of t)this.set(n,o)}get(t){return super.get(G0(this,t))}has(t){return super.has(G0(this,t))}set(t,r){return super.set(vL(this,t),r)}delete(t){return super.delete(EL(this,t))}}function G0({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):r}function vL({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function EL({_intern:e,_key:t},r){const n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function SL(e){return e!==null&&typeof e=="object"?e.valueOf():e}const AL=Math.sqrt(50),TL=Math.sqrt(10),xL=Math.sqrt(2);function Al(e,t,r){const n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),s=i>=AL?10:i>=TL?5:i>=xL?2:1;let a,l,u;return o<0?(u=Math.pow(10,-o)/s,a=Math.round(e*u),l=Math.round(t*u),a/u<e&&++a,l/u>t&&--l,u=-u):(u=Math.pow(10,o)*s,a=Math.round(e/u),l=Math.round(t/u),a*u<e&&++a,l*u>t&&--l),l<a&&.5<=r&&r<2?Al(e,t,r*2):[a,l,u]}function IL(e,t,r){if(t=+t,e=+e,r=+r,!(r>0))return[];if(e===t)return[e];const n=t<e,[o,i,s]=n?Al(t,e,r):Al(e,t,r);if(!(i>=o))return[];const a=i-o+1,l=new Array(a);if(n)if(s<0)for(let u=0;u<a;++u)l[u]=(i-u)/-s;else for(let u=0;u<a;++u)l[u]=(i-u)*s;else if(s<0)for(let u=0;u<a;++u)l[u]=(o+u)/-s;else for(let u=0;u<a;++u)l[u]=(o+u)*s;return l}function nd(e,t,r){return t=+t,e=+e,r=+r,Al(e,t,r)[2]}function id(e,t,r){t=+t,e=+e,r=+r;const n=t<e,o=n?nd(t,e,r):nd(e,t,r);return(n?-1:1)*(o<0?1/-o:o)}function S3(e,t){let r;if(t===void 0)for(const n of e)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r<o||r===void 0&&o>=o)&&(r=o)}return r}function CL(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,i=new Array(o);++n<o;)i[n]=e+n*r;return i}function RL(e){return e}var el=1,tl=2,od=3,ws=4,Q0=1e-6;function OL(e){return"translate("+e+",0)"}function kL(e){return"translate(0,"+e+")"}function ML(e){return t=>+e(t)}function NL(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function PL(){return!this.__axis}function Au(e,t){var r=[],n=null,o=null,i=6,s=6,a=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=e===el||e===ws?-1:1,c=e===ws||e===tl?"x":"y",d=e===el||e===od?OL:kL;function p(m){var _=n??(t.ticks?t.ticks.apply(t,r):t.domain()),b=o??(t.tickFormat?t.tickFormat.apply(t,r):RL),T=Math.max(i,0)+a,k=t.range(),C=+k[0]+l,A=+k[k.length-1]+l,M=(t.bandwidth?NL:ML)(t.copy(),l),$=m.selection?m.selection():m,R=$.selectAll(".domain").data([null]),D=$.selectAll(".tick").data(_,t).order(),j=D.exit(),z=D.enter().append("g").attr("class","tick"),se=D.select("line"),re=D.select("text");R=R.merge(R.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),D=D.merge(z),se=se.merge(z.append("line").attr("stroke","currentColor").attr(c+"2",u*i)),re=re.merge(z.append("text").attr("fill","currentColor").attr(c,u*T).attr("dy",e===el?"0em":e===od?"0.71em":"0.32em")),m!==$&&(R=R.transition(m),D=D.transition(m),se=se.transition(m),re=re.transition(m),j=j.transition(m).attr("opacity",Q0).attr("transform",function(L){return isFinite(L=M(L))?d(L+l):this.getAttribute("transform")}),z.attr("opacity",Q0).attr("transform",function(L){var B=this.parentNode.__axis;return d((B&&isFinite(B=B(L))?B:M(L))+l)})),j.remove(),R.attr("d",e===ws||e===tl?s?"M"+u*s+","+C+"H"+l+"V"+A+"H"+u*s:"M"+l+","+C+"V"+A:s?"M"+C+","+u*s+"V"+l+"H"+A+"V"+u*s:"M"+C+","+l+"H"+A),D.attr("opacity",1).attr("transform",function(L){return d(M(L)+l)}),se.attr(c+"2",u*i),re.attr(c,u*T).text(b),$.filter(PL).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===tl?"start":e===ws?"end":"middle"),$.each(function(){this.__axis=M})}return p.scale=function(m){return arguments.length?(t=m,p):t},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(o=m,p):o},p.tickSize=function(m){return arguments.length?(i=s=+m,p):i},p.tickSizeInner=function(m){return arguments.length?(i=+m,p):i},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(a=+m,p):a},p.offset=function(m){return arguments.length?(l=+m,p):l},p}function A3(e){return Au(el,e)}function T3(e){return Au(tl,e)}function x3(e){return Au(od,e)}function I3(e){return Au(ws,e)}var LL={value:()=>{}};function W1(){for(var e=0,t=arguments.length,r={},n;e<t;++e){if(!(n=arguments[e]+"")||n in r||/[\s.]/.test(n))throw new Error("illegal type: "+n);r[n]=[]}return new rl(r)}function rl(e){this._=e}function DL(e,t){return e.trim().split(/^|\s+/).map(function(r){var n="",o=r.indexOf(".");if(o>=0&&(n=r.slice(o+1),r=r.slice(0,o)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}rl.prototype=W1.prototype={constructor:rl,on:function(e,t){var r=this._,n=DL(e+"",r),o,i=-1,s=n.length;if(arguments.length<2){for(;++i<s;)if((o=(e=n[i]).type)&&(o=BL(r[o],e.name)))return o;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++i<s;)if(o=(e=n[i]).type)r[o]=X0(r[o],e.name,t);else if(t==null)for(o in r)r[o]=X0(r[o],e.name,null);return this},copy:function(){var e={},t=this._;for(var r in t)e[r]=t[r].slice();return new rl(e)},call:function(e,t){if((o=arguments.length-2)>0)for(var r=new Array(o),n=0,o,i;n<o;++n)r[n]=arguments[n+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(i=this._[e],n=0,o=i.length;n<o;++n)i[n].value.apply(t,r)},apply:function(e,t,r){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var n=this._[e],o=0,i=n.length;o<i;++o)n[o].value.apply(t,r)}};function BL(e,t){for(var r=0,n=e.length,o;r<n;++r)if((o=e[r]).name===t)return o.value}function X0(e,t,r){for(var n=0,o=e.length;n<o;++n)if(e[n].name===t){e[n]=LL,e=e.slice(0,n).concat(e.slice(n+1));break}return r!=null&&e.push({name:t,value:r}),e}var sd="http://www.w3.org/1999/xhtml";const J0={svg:"http://www.w3.org/2000/svg",xhtml:sd,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Tu(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),J0.hasOwnProperty(t)?{space:J0[t],local:e}:e}function $L(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===sd&&t.documentElement.namespaceURI===sd?t.createElement(e):t.createElementNS(r,e)}}function UL(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function H1(e){var t=Tu(e);return(t.local?UL:$L)(t)}function FL(){}function Np(e){return e==null?FL:function(){return this.querySelector(e)}}function jL(e){typeof e!="function"&&(e=Np(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=new Array(s),l,u,c=0;c<s;++c)(l=i[c])&&(u=e.call(l,l.__data__,c,i))&&("__data__"in l&&(u.__data__=l.__data__),a[c]=u);return new Jt(n,this._parents)}function WL(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function HL(){return[]}function V1(e){return e==null?HL:function(){return this.querySelectorAll(e)}}function VL(e){return function(){return WL(e.apply(this,arguments))}}function qL(e){typeof e=="function"?e=VL(e):e=V1(e);for(var t=this._groups,r=t.length,n=[],o=[],i=0;i<r;++i)for(var s=t[i],a=s.length,l,u=0;u<a;++u)(l=s[u])&&(n.push(e.call(l,l.__data__,u,s)),o.push(l));return new Jt(n,o)}function q1(e){return function(){return this.matches(e)}}function K1(e){return function(t){return t.matches(e)}}var KL=Array.prototype.find;function YL(e){return function(){return KL.call(this.children,e)}}function zL(){return this.firstElementChild}function GL(e){return this.select(e==null?zL:YL(typeof e=="function"?e:K1(e)))}var QL=Array.prototype.filter;function XL(){return Array.from(this.children)}function JL(e){return function(){return QL.call(this.children,e)}}function ZL(e){return this.selectAll(e==null?XL:JL(typeof e=="function"?e:K1(e)))}function eD(e){typeof e!="function"&&(e=q1(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=[],l,u=0;u<s;++u)(l=i[u])&&e.call(l,l.__data__,u,i)&&a.push(l);return new Jt(n,this._parents)}function Y1(e){return new Array(e.length)}function tD(){return new Jt(this._enter||this._groups.map(Y1),this._parents)}function Tl(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}Tl.prototype={constructor:Tl,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function rD(e){return function(){return e}}function nD(e,t,r,n,o,i){for(var s=0,a,l=t.length,u=i.length;s<u;++s)(a=t[s])?(a.__data__=i[s],n[s]=a):r[s]=new Tl(e,i[s]);for(;s<l;++s)(a=t[s])&&(o[s]=a)}function iD(e,t,r,n,o,i,s){var a,l,u=new Map,c=t.length,d=i.length,p=new Array(c),m;for(a=0;a<c;++a)(l=t[a])&&(p[a]=m=s.call(l,l.__data__,a,t)+"",u.has(m)?o[a]=l:u.set(m,l));for(a=0;a<d;++a)m=s.call(e,i[a],a,i)+"",(l=u.get(m))?(n[a]=l,l.__data__=i[a],u.delete(m)):r[a]=new Tl(e,i[a]);for(a=0;a<c;++a)(l=t[a])&&u.get(p[a])===l&&(o[a]=l)}function oD(e){return e.__data__}function sD(e,t){if(!arguments.length)return Array.from(this,oD);var r=t?iD:nD,n=this._parents,o=this._groups;typeof e!="function"&&(e=rD(e));for(var i=o.length,s=new Array(i),a=new Array(i),l=new Array(i),u=0;u<i;++u){var c=n[u],d=o[u],p=d.length,m=aD(e.call(c,c&&c.__data__,u,n)),_=m.length,b=a[u]=new Array(_),T=s[u]=new Array(_),k=l[u]=new Array(p);r(c,d,b,T,k,m,t);for(var C=0,A=0,M,$;C<_;++C)if(M=b[C]){for(C>=A&&(A=C+1);!($=T[A])&&++A<_;);M._next=$||null}}return s=new Jt(s,n),s._enter=a,s._exit=l,s}function aD(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function lD(){return new Jt(this._exit||this._groups.map(Y1),this._parents)}function uD(e,t,r){var n=this.enter(),o=this,i=this.exit();return typeof e=="function"?(n=e(n),n&&(n=n.selection())):n=n.append(e+""),t!=null&&(o=t(o),o&&(o=o.selection())),r==null?i.remove():r(i),n&&o?n.merge(o).order():o}function cD(e){for(var t=e.selection?e.selection():e,r=this._groups,n=t._groups,o=r.length,i=n.length,s=Math.min(o,i),a=new Array(o),l=0;l<s;++l)for(var u=r[l],c=n[l],d=u.length,p=a[l]=new Array(d),m,_=0;_<d;++_)(m=u[_]||c[_])&&(p[_]=m);for(;l<o;++l)a[l]=r[l];return new Jt(a,this._parents)}function fD(){for(var e=this._groups,t=-1,r=e.length;++t<r;)for(var n=e[t],o=n.length-1,i=n[o],s;--o>=0;)(s=n[o])&&(i&&s.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(s,i),i=s);return this}function hD(e){e||(e=dD);function t(d,p){return d&&p?e(d.__data__,p.__data__):!d-!p}for(var r=this._groups,n=r.length,o=new Array(n),i=0;i<n;++i){for(var s=r[i],a=s.length,l=o[i]=new Array(a),u,c=0;c<a;++c)(u=s[c])&&(l[c]=u);l.sort(t)}return new Jt(o,this._parents).order()}function dD(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function pD(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function gD(){return Array.from(this)}function mD(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var n=e[t],o=0,i=n.length;o<i;++o){var s=n[o];if(s)return s}return null}function yD(){let e=0;for(const t of this)++e;return e}function _D(){return!this.node()}function bD(e){for(var t=this._groups,r=0,n=t.length;r<n;++r)for(var o=t[r],i=0,s=o.length,a;i<s;++i)(a=o[i])&&e.call(a,a.__data__,i,o);return this}function wD(e){return function(){this.removeAttribute(e)}}function vD(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ED(e,t){return function(){this.setAttribute(e,t)}}function SD(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function AD(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttribute(e):this.setAttribute(e,r)}}function TD(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function xD(e,t){var r=Tu(e);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((t==null?r.local?vD:wD:typeof t=="function"?r.local?TD:AD:r.local?SD:ED)(r,t))}function z1(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function ID(e){return function(){this.style.removeProperty(e)}}function CD(e,t,r){return function(){this.style.setProperty(e,t,r)}}function RD(e,t,r){return function(){var n=t.apply(this,arguments);n==null?this.style.removeProperty(e):this.style.setProperty(e,n,r)}}function OD(e,t,r){return arguments.length>1?this.each((t==null?ID:typeof t=="function"?RD:CD)(e,t,r??"")):Uo(this.node(),e)}function Uo(e,t){return e.style.getPropertyValue(t)||z1(e).getComputedStyle(e,null).getPropertyValue(t)}function kD(e){return function(){delete this[e]}}function MD(e,t){return function(){this[e]=t}}function ND(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function PD(e,t){return arguments.length>1?this.each((t==null?kD:typeof t=="function"?ND:MD)(e,t)):this.node()[e]}function G1(e){return e.trim().split(/^|\s+/)}function Pp(e){return e.classList||new Q1(e)}function Q1(e){this._node=e,this._names=G1(e.getAttribute("class")||"")}Q1.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function X1(e,t){for(var r=Pp(e),n=-1,o=t.length;++n<o;)r.add(t[n])}function J1(e,t){for(var r=Pp(e),n=-1,o=t.length;++n<o;)r.remove(t[n])}function LD(e){return function(){X1(this,e)}}function DD(e){return function(){J1(this,e)}}function BD(e,t){return function(){(t.apply(this,arguments)?X1:J1)(this,e)}}function $D(e,t){var r=G1(e+"");if(arguments.length<2){for(var n=Pp(this.node()),o=-1,i=r.length;++o<i;)if(!n.contains(r[o]))return!1;return!0}return this.each((typeof t=="function"?BD:t?LD:DD)(r,t))}function UD(){this.textContent=""}function FD(e){return function(){this.textContent=e}}function jD(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function WD(e){return arguments.length?this.each(e==null?UD:(typeof e=="function"?jD:FD)(e)):this.node().textContent}function HD(){this.innerHTML=""}function VD(e){return function(){this.innerHTML=e}}function qD(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function KD(e){return arguments.length?this.each(e==null?HD:(typeof e=="function"?qD:VD)(e)):this.node().innerHTML}function YD(){this.nextSibling&&this.parentNode.appendChild(this)}function zD(){return this.each(YD)}function GD(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function QD(){return this.each(GD)}function XD(e){var t=typeof e=="function"?e:H1(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function JD(){return null}function ZD(e,t){var r=typeof e=="function"?e:H1(e),n=t==null?JD:typeof t=="function"?t:Np(t);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}function eB(){var e=this.parentNode;e&&e.removeChild(this)}function tB(){return this.each(eB)}function rB(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function nB(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function iB(e){return this.select(e?nB:rB)}function oB(e){return arguments.length?this.property("__data__",e):this.node().__data__}function sB(e){return function(t){e.call(this,t,this.__data__)}}function aB(e){return e.trim().split(/^|\s+/).map(function(t){var r="",n=t.indexOf(".");return n>=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function lB(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,o=t.length,i;r<o;++r)i=t[r],(!e.type||i.type===e.type)&&i.name===e.name?this.removeEventListener(i.type,i.listener,i.options):t[++n]=i;++n?t.length=n:delete this.__on}}}function uB(e,t,r){return function(){var n=this.__on,o,i=sB(t);if(n){for(var s=0,a=n.length;s<a;++s)if((o=n[s]).type===e.type&&o.name===e.name){this.removeEventListener(o.type,o.listener,o.options),this.addEventListener(o.type,o.listener=i,o.options=r),o.value=t;return}}this.addEventListener(e.type,i,r),o={type:e.type,name:e.name,value:t,listener:i,options:r},n?n.push(o):this.__on=[o]}}function cB(e,t,r){var n=aB(e+""),o,i=n.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var l=0,u=a.length,c;l<u;++l)for(o=0,c=a[l];o<i;++o)if((s=n[o]).type===c.type&&s.name===c.name)return c.value}return}for(a=t?uB:lB,o=0;o<i;++o)this.each(a(n[o],t,r));return this}function Z1(e,t,r){var n=z1(e),o=n.CustomEvent;typeof o=="function"?o=new o(t,r):(o=n.document.createEvent("Event"),r?(o.initEvent(t,r.bubbles,r.cancelable),o.detail=r.detail):o.initEvent(t,!1,!1)),e.dispatchEvent(o)}function fB(e,t){return function(){return Z1(this,e,t)}}function hB(e,t){return function(){return Z1(this,e,t.apply(this,arguments))}}function dB(e,t){return this.each((typeof t=="function"?hB:fB)(e,t))}function*pB(){for(var e=this._groups,t=0,r=e.length;t<r;++t)for(var n=e[t],o=0,i=n.length,s;o<i;++o)(s=n[o])&&(yield s)}var eE=[null];function Jt(e,t){this._groups=e,this._parents=t}function ta(){return new Jt([[document.documentElement]],eE)}function gB(){return this}Jt.prototype=ta.prototype={constructor:Jt,select:jL,selectAll:qL,selectChild:GL,selectChildren:ZL,filter:eD,data:sD,enter:tD,exit:lD,join:uD,merge:cD,selection:gB,order:fD,sort:hD,call:pD,nodes:gD,node:mD,size:yD,empty:_D,each:bD,attr:xD,style:OD,property:PD,classed:$D,text:WD,html:KD,raise:zD,lower:QD,append:XD,insert:ZD,remove:tB,clone:iB,datum:oB,on:cB,dispatch:dB,[Symbol.iterator]:pB};function C3(e){return typeof e=="string"?new Jt([[document.querySelector(e)]],[document.documentElement]):new Jt([[e]],eE)}function Lp(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function tE(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}function ra(){}var Us=.7,xl=1/Us,Ro="\\s*([+-]?\\d+)\\s*",Fs="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Br="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",mB=/^#([0-9a-f]{3,8})$/,yB=new RegExp(`^rgb\\(${Ro},${Ro},${Ro}\\)$`),_B=new RegExp(`^rgb\\(${Br},${Br},${Br}\\)$`),bB=new RegExp(`^rgba\\(${Ro},${Ro},${Ro},${Fs}\\)$`),wB=new RegExp(`^rgba\\(${Br},${Br},${Br},${Fs}\\)$`),vB=new RegExp(`^hsl\\(${Fs},${Br},${Br}\\)$`),EB=new RegExp(`^hsla\\(${Fs},${Br},${Br},${Fs}\\)$`),Z0={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Lp(ra,Pi,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:ey,formatHex:ey,formatHex8:SB,formatHsl:AB,formatRgb:ty,toString:ty});function ey(){return this.rgb().formatHex()}function SB(){return this.rgb().formatHex8()}function AB(){return rE(this).formatHsl()}function ty(){return this.rgb().formatRgb()}function Pi(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=mB.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?ry(t):r===3?new Ft(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?Ca(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?Ca(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=yB.exec(e))?new Ft(t[1],t[2],t[3],1):(t=_B.exec(e))?new Ft(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=bB.exec(e))?Ca(t[1],t[2],t[3],t[4]):(t=wB.exec(e))?Ca(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=vB.exec(e))?oy(t[1],t[2]/100,t[3]/100,1):(t=EB.exec(e))?oy(t[1],t[2]/100,t[3]/100,t[4]):Z0.hasOwnProperty(e)?ry(Z0[e]):e==="transparent"?new Ft(NaN,NaN,NaN,0):null}function ry(e){return new Ft(e>>16&255,e>>8&255,e&255,1)}function Ca(e,t,r,n){return n<=0&&(e=t=r=NaN),new Ft(e,t,r,n)}function TB(e){return e instanceof ra||(e=Pi(e)),e?(e=e.rgb(),new Ft(e.r,e.g,e.b,e.opacity)):new Ft}function ad(e,t,r,n){return arguments.length===1?TB(e):new Ft(e,t,r,n??1)}function Ft(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}Lp(Ft,ad,tE(ra,{brighter(e){return e=e==null?xl:Math.pow(xl,e),new Ft(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Us:Math.pow(Us,e),new Ft(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ft(Ci(this.r),Ci(this.g),Ci(this.b),Il(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ny,formatHex:ny,formatHex8:xB,formatRgb:iy,toString:iy}));function ny(){return`#${vi(this.r)}${vi(this.g)}${vi(this.b)}`}function xB(){return`#${vi(this.r)}${vi(this.g)}${vi(this.b)}${vi((isNaN(this.opacity)?1:this.opacity)*255)}`}function iy(){const e=Il(this.opacity);return`${e===1?"rgb(":"rgba("}${Ci(this.r)}, ${Ci(this.g)}, ${Ci(this.b)}${e===1?")":`, ${e})`}`}function Il(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ci(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function vi(e){return e=Ci(e),(e<16?"0":"")+e.toString(16)}function oy(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new yr(e,t,r,n)}function rE(e){if(e instanceof yr)return new yr(e.h,e.s,e.l,e.opacity);if(e instanceof ra||(e=Pi(e)),!e)return new yr;if(e instanceof yr)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),i=Math.max(t,r,n),s=NaN,a=i-o,l=(i+o)/2;return a?(t===i?s=(r-n)/a+(r<n)*6:r===i?s=(n-t)/a+2:s=(t-r)/a+4,a/=l<.5?i+o:2-i-o,s*=60):a=l>0&&l<1?0:s,new yr(s,a,l,e.opacity)}function IB(e,t,r,n){return arguments.length===1?rE(e):new yr(e,t,r,n??1)}function yr(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}Lp(yr,IB,tE(ra,{brighter(e){return e=e==null?xl:Math.pow(xl,e),new yr(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Us:Math.pow(Us,e),new yr(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Ft(Wc(e>=240?e-240:e+120,o,n),Wc(e,o,n),Wc(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new yr(sy(this.h),Ra(this.s),Ra(this.l),Il(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Il(this.opacity);return`${e===1?"hsl(":"hsla("}${sy(this.h)}, ${Ra(this.s)*100}%, ${Ra(this.l)*100}%${e===1?")":`, ${e})`}`}}));function sy(e){return e=(e||0)%360,e<0?e+360:e}function Ra(e){return Math.max(0,Math.min(1,e||0))}function Wc(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}const Dp=e=>()=>e;function CB(e,t){return function(r){return e+r*t}}function RB(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function OB(e){return(e=+e)==1?nE:function(t,r){return r-t?RB(t,r,e):Dp(isNaN(t)?r:t)}}function nE(e,t){var r=t-e;return r?CB(e,r):Dp(isNaN(e)?t:e)}const Cl=function e(t){var r=OB(t);function n(o,i){var s=r((o=ad(o)).r,(i=ad(i)).r),a=r(o.g,i.g),l=r(o.b,i.b),u=nE(o.opacity,i.opacity);return function(c){return o.r=s(c),o.g=a(c),o.b=l(c),o.opacity=u(c),o+""}}return n.gamma=e,n}(1);function kB(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),o;return function(i){for(o=0;o<r;++o)n[o]=e[o]*(1-i)+t[o]*i;return n}}function MB(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function NB(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,o=new Array(n),i=new Array(r),s;for(s=0;s<n;++s)o[s]=Bp(e[s],t[s]);for(;s<r;++s)i[s]=t[s];return function(a){for(s=0;s<n;++s)i[s]=o[s](a);return i}}function PB(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}function gr(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}function LB(e,t){var r={},n={},o;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(o in t)o in e?r[o]=Bp(e[o],t[o]):n[o]=t[o];return function(i){for(o in r)n[o]=r[o](i);return n}}var ld=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Hc=new RegExp(ld.source,"g");function DB(e){return function(){return e}}function BB(e){return function(t){return e(t)+""}}function iE(e,t){var r=ld.lastIndex=Hc.lastIndex=0,n,o,i,s=-1,a=[],l=[];for(e=e+"",t=t+"";(n=ld.exec(e))&&(o=Hc.exec(t));)(i=o.index)>r&&(i=t.slice(r,i),a[s]?a[s]+=i:a[++s]=i),(n=n[0])===(o=o[0])?a[s]?a[s]+=o:a[++s]=o:(a[++s]=null,l.push({i:s,x:gr(n,o)})),r=Hc.lastIndex;return r<t.length&&(i=t.slice(r),a[s]?a[s]+=i:a[++s]=i),a.length<2?l[0]?BB(l[0].x):DB(t):(t=l.length,function(u){for(var c=0,d;c<t;++c)a[(d=l[c]).i]=d.x(u);return a.join("")})}function Bp(e,t){var r=typeof t,n;return t==null||r==="boolean"?Dp(t):(r==="number"?gr:r==="string"?(n=Pi(t))?(t=n,Cl):iE:t instanceof Pi?Cl:t instanceof Date?PB:MB(t)?kB:Array.isArray(t)?NB:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?LB:gr)(e,t)}function $B(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var ay=180/Math.PI,ud={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function oE(e,t,r,n,o,i){var s,a,l;return(s=Math.sqrt(e*e+t*t))&&(e/=s,t/=s),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(a=Math.sqrt(r*r+n*n))&&(r/=a,n/=a,l/=a),e*n<t*r&&(e=-e,t=-t,l=-l,s=-s),{translateX:o,translateY:i,rotate:Math.atan2(t,e)*ay,skewX:Math.atan(l)*ay,scaleX:s,scaleY:a}}var Oa;function UB(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?ud:oE(t.a,t.b,t.c,t.d,t.e,t.f)}function FB(e){return e==null||(Oa||(Oa=document.createElementNS("http://www.w3.org/2000/svg","g")),Oa.setAttribute("transform",e),!(e=Oa.transform.baseVal.consolidate()))?ud:(e=e.matrix,oE(e.a,e.b,e.c,e.d,e.e,e.f))}function sE(e,t,r,n){function o(u){return u.length?u.pop()+" ":""}function i(u,c,d,p,m,_){if(u!==d||c!==p){var b=m.push("translate(",null,t,null,r);_.push({i:b-4,x:gr(u,d)},{i:b-2,x:gr(c,p)})}else(d||p)&&m.push("translate("+d+t+p+r)}function s(u,c,d,p){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),p.push({i:d.push(o(d)+"rotate(",null,n)-2,x:gr(u,c)})):c&&d.push(o(d)+"rotate("+c+n)}function a(u,c,d,p){u!==c?p.push({i:d.push(o(d)+"skewX(",null,n)-2,x:gr(u,c)}):c&&d.push(o(d)+"skewX("+c+n)}function l(u,c,d,p,m,_){if(u!==d||c!==p){var b=m.push(o(m)+"scale(",null,",",null,")");_.push({i:b-4,x:gr(u,d)},{i:b-2,x:gr(c,p)})}else(d!==1||p!==1)&&m.push(o(m)+"scale("+d+","+p+")")}return function(u,c){var d=[],p=[];return u=e(u),c=e(c),i(u.translateX,u.translateY,c.translateX,c.translateY,d,p),s(u.rotate,c.rotate,d,p),a(u.skewX,c.skewX,d,p),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,d,p),u=c=null,function(m){for(var _=-1,b=p.length,T;++_<b;)d[(T=p[_]).i]=T.x(m);return d.join("")}}}var jB=sE(UB,"px, ","px)","deg)"),WB=sE(FB,", ",")",")"),Fo=0,vs=0,fs=0,aE=1e3,Rl,Es,Ol=0,Li=0,xu=0,js=typeof performance=="object"&&performance.now?performance:Date,lE=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function $p(){return Li||(lE(HB),Li=js.now()+xu)}function HB(){Li=0}function kl(){this._call=this._time=this._next=null}kl.prototype=uE.prototype={constructor:kl,restart:function(e,t,r){if(typeof e!="function")throw new TypeError("callback is not a function");r=(r==null?$p():+r)+(t==null?0:+t),!this._next&&Es!==this&&(Es?Es._next=this:Rl=this,Es=this),this._call=e,this._time=r,cd()},stop:function(){this._call&&(this._call=null,this._time=1/0,cd())}};function uE(e,t,r){var n=new kl;return n.restart(e,t,r),n}function VB(){$p(),++Fo;for(var e=Rl,t;e;)(t=Li-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Fo}function ly(){Li=(Ol=js.now())+xu,Fo=vs=0;try{VB()}finally{Fo=0,KB(),Li=0}}function qB(){var e=js.now(),t=e-Ol;t>aE&&(xu-=t,Ol=e)}function KB(){for(var e,t=Rl,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:Rl=r);Es=e,cd(n)}function cd(e){if(!Fo){vs&&(vs=clearTimeout(vs));var t=e-Li;t>24?(e<1/0&&(vs=setTimeout(ly,e-js.now()-xu)),fs&&(fs=clearInterval(fs))):(fs||(Ol=js.now(),fs=setInterval(qB,aE)),Fo=1,lE(ly))}}function uy(e,t,r){var n=new kl;return t=t==null?0:+t,n.restart(o=>{n.stop(),e(o+t)},t,r),n}var YB=W1("start","end","cancel","interrupt"),zB=[],cE=0,cy=1,fd=2,nl=3,fy=4,hd=5,il=6;function Iu(e,t,r,n,o,i){var s=e.__transition;if(!s)e.__transition={};else if(r in s)return;GB(e,r,{name:t,index:n,group:o,on:YB,tween:zB,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:cE})}function Up(e,t){var r=vr(e,t);if(r.state>cE)throw new Error("too late; already scheduled");return r}function Hr(e,t){var r=vr(e,t);if(r.state>nl)throw new Error("too late; already running");return r}function vr(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function GB(e,t,r){var n=e.__transition,o;n[t]=r,r.timer=uE(i,0,r.time);function i(u){r.state=cy,r.timer.restart(s,r.delay,r.time),r.delay<=u&&s(u-r.delay)}function s(u){var c,d,p,m;if(r.state!==cy)return l();for(c in n)if(m=n[c],m.name===r.name){if(m.state===nl)return uy(s);m.state===fy?(m.state=il,m.timer.stop(),m.on.call("interrupt",e,e.__data__,m.index,m.group),delete n[c]):+c<t&&(m.state=il,m.timer.stop(),m.on.call("cancel",e,e.__data__,m.index,m.group),delete n[c])}if(uy(function(){r.state===nl&&(r.state=fy,r.timer.restart(a,r.delay,r.time),a(u))}),r.state=fd,r.on.call("start",e,e.__data__,r.index,r.group),r.state===fd){for(r.state=nl,o=new Array(p=r.tween.length),c=0,d=-1;c<p;++c)(m=r.tween[c].value.call(e,e.__data__,r.index,r.group))&&(o[++d]=m);o.length=d+1}}function a(u){for(var c=u<r.duration?r.ease.call(null,u/r.duration):(r.timer.restart(l),r.state=hd,1),d=-1,p=o.length;++d<p;)o[d].call(e,c);r.state===hd&&(r.on.call("end",e,e.__data__,r.index,r.group),l())}function l(){r.state=il,r.timer.stop(),delete n[t];for(var u in n)return;delete e.__transition}}function QB(e,t){var r=e.__transition,n,o,i=!0,s;if(r){t=t==null?null:t+"";for(s in r){if((n=r[s]).name!==t){i=!1;continue}o=n.state>fd&&n.state<hd,n.state=il,n.timer.stop(),n.on.call(o?"interrupt":"cancel",e,e.__data__,n.index,n.group),delete r[s]}i&&delete e.__transition}}function XB(e){return this.each(function(){QB(this,e)})}function JB(e,t){var r,n;return function(){var o=Hr(this,e),i=o.tween;if(i!==r){n=r=i;for(var s=0,a=n.length;s<a;++s)if(n[s].name===t){n=n.slice(),n.splice(s,1);break}}o.tween=n}}function ZB(e,t,r){var n,o;if(typeof r!="function")throw new Error;return function(){var i=Hr(this,e),s=i.tween;if(s!==n){o=(n=s).slice();for(var a={name:t,value:r},l=0,u=o.length;l<u;++l)if(o[l].name===t){o[l]=a;break}l===u&&o.push(a)}i.tween=o}}function e$(e,t){var r=this._id;if(e+="",arguments.length<2){for(var n=vr(this.node(),r).tween,o=0,i=n.length,s;o<i;++o)if((s=n[o]).name===e)return s.value;return null}return this.each((t==null?JB:ZB)(r,e,t))}function Fp(e,t,r){var n=e._id;return e.each(function(){var o=Hr(this,n);(o.value||(o.value={}))[t]=r.apply(this,arguments)}),function(o){return vr(o,n).value[t]}}function fE(e,t){var r;return(typeof t=="number"?gr:t instanceof Pi?Cl:(r=Pi(t))?(t=r,Cl):iE)(e,t)}function t$(e){return function(){this.removeAttribute(e)}}function r$(e){return function(){this.removeAttributeNS(e.space,e.local)}}function n$(e,t,r){var n,o=r+"",i;return function(){var s=this.getAttribute(e);return s===o?null:s===n?i:i=t(n=s,r)}}function i$(e,t,r){var n,o=r+"",i;return function(){var s=this.getAttributeNS(e.space,e.local);return s===o?null:s===n?i:i=t(n=s,r)}}function o$(e,t,r){var n,o,i;return function(){var s,a=r(this),l;return a==null?void this.removeAttribute(e):(s=this.getAttribute(e),l=a+"",s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a)))}}function s$(e,t,r){var n,o,i;return function(){var s,a=r(this),l;return a==null?void this.removeAttributeNS(e.space,e.local):(s=this.getAttributeNS(e.space,e.local),l=a+"",s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a)))}}function a$(e,t){var r=Tu(e),n=r==="transform"?WB:fE;return this.attrTween(e,typeof t=="function"?(r.local?s$:o$)(r,n,Fp(this,"attr."+e,t)):t==null?(r.local?r$:t$)(r):(r.local?i$:n$)(r,n,t))}function l$(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}function u$(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}function c$(e,t){var r,n;function o(){var i=t.apply(this,arguments);return i!==n&&(r=(n=i)&&u$(e,i)),r}return o._value=t,o}function f$(e,t){var r,n;function o(){var i=t.apply(this,arguments);return i!==n&&(r=(n=i)&&l$(e,i)),r}return o._value=t,o}function h$(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;var n=Tu(e);return this.tween(r,(n.local?c$:f$)(n,t))}function d$(e,t){return function(){Up(this,e).delay=+t.apply(this,arguments)}}function p$(e,t){return t=+t,function(){Up(this,e).delay=t}}function g$(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?d$:p$)(t,e)):vr(this.node(),t).delay}function m$(e,t){return function(){Hr(this,e).duration=+t.apply(this,arguments)}}function y$(e,t){return t=+t,function(){Hr(this,e).duration=t}}function _$(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?m$:y$)(t,e)):vr(this.node(),t).duration}function b$(e,t){if(typeof t!="function")throw new Error;return function(){Hr(this,e).ease=t}}function w$(e){var t=this._id;return arguments.length?this.each(b$(t,e)):vr(this.node(),t).ease}function v$(e,t){return function(){var r=t.apply(this,arguments);if(typeof r!="function")throw new Error;Hr(this,e).ease=r}}function E$(e){if(typeof e!="function")throw new Error;return this.each(v$(this._id,e))}function S$(e){typeof e!="function"&&(e=q1(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o<r;++o)for(var i=t[o],s=i.length,a=n[o]=[],l,u=0;u<s;++u)(l=i[u])&&e.call(l,l.__data__,u,i)&&a.push(l);return new yn(n,this._parents,this._name,this._id)}function A$(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,n=t.length,o=r.length,i=Math.min(n,o),s=new Array(n),a=0;a<i;++a)for(var l=t[a],u=r[a],c=l.length,d=s[a]=new Array(c),p,m=0;m<c;++m)(p=l[m]||u[m])&&(d[m]=p);for(;a<n;++a)s[a]=t[a];return new yn(s,this._parents,this._name,this._id)}function T$(e){return(e+"").trim().split(/^|\s+/).every(function(t){var r=t.indexOf(".");return r>=0&&(t=t.slice(0,r)),!t||t==="start"})}function x$(e,t,r){var n,o,i=T$(t)?Up:Hr;return function(){var s=i(this,e),a=s.on;a!==n&&(o=(n=a).copy()).on(t,r),s.on=o}}function I$(e,t){var r=this._id;return arguments.length<2?vr(this.node(),r).on.on(e):this.each(x$(r,e,t))}function C$(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function R$(){return this.on("end.remove",C$(this._id))}function O$(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Np(e));for(var n=this._groups,o=n.length,i=new Array(o),s=0;s<o;++s)for(var a=n[s],l=a.length,u=i[s]=new Array(l),c,d,p=0;p<l;++p)(c=a[p])&&(d=e.call(c,c.__data__,p,a))&&("__data__"in c&&(d.__data__=c.__data__),u[p]=d,Iu(u[p],t,r,p,u,vr(c,r)));return new yn(i,this._parents,t,r)}function k$(e){var t=this._name,r=this._id;typeof e!="function"&&(e=V1(e));for(var n=this._groups,o=n.length,i=[],s=[],a=0;a<o;++a)for(var l=n[a],u=l.length,c,d=0;d<u;++d)if(c=l[d]){for(var p=e.call(c,c.__data__,d,l),m,_=vr(c,r),b=0,T=p.length;b<T;++b)(m=p[b])&&Iu(m,t,r,b,p,_);i.push(p),s.push(c)}return new yn(i,s,t,r)}var M$=ta.prototype.constructor;function N$(){return new M$(this._groups,this._parents)}function P$(e,t){var r,n,o;return function(){var i=Uo(this,e),s=(this.style.removeProperty(e),Uo(this,e));return i===s?null:i===r&&s===n?o:o=t(r=i,n=s)}}function hE(e){return function(){this.style.removeProperty(e)}}function L$(e,t,r){var n,o=r+"",i;return function(){var s=Uo(this,e);return s===o?null:s===n?i:i=t(n=s,r)}}function D$(e,t,r){var n,o,i;return function(){var s=Uo(this,e),a=r(this),l=a+"";return a==null&&(l=a=(this.style.removeProperty(e),Uo(this,e))),s===l?null:s===n&&l===o?i:(o=l,i=t(n=s,a))}}function B$(e,t){var r,n,o,i="style."+t,s="end."+i,a;return function(){var l=Hr(this,e),u=l.on,c=l.value[i]==null?a||(a=hE(t)):void 0;(u!==r||o!==c)&&(n=(r=u).copy()).on(s,o=c),l.on=n}}function $$(e,t,r){var n=(e+="")=="transform"?jB:fE;return t==null?this.styleTween(e,P$(e,n)).on("end.style."+e,hE(e)):typeof t=="function"?this.styleTween(e,D$(e,n,Fp(this,"style."+e,t))).each(B$(this._id,e)):this.styleTween(e,L$(e,n,t),r).on("end.style."+e,null)}function U$(e,t,r){return function(n){this.style.setProperty(e,t.call(this,n),r)}}function F$(e,t,r){var n,o;function i(){var s=t.apply(this,arguments);return s!==o&&(n=(o=s)&&U$(e,s,r)),n}return i._value=t,i}function j$(e,t,r){var n="style."+(e+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,F$(e,t,r??""))}function W$(e){return function(){this.textContent=e}}function H$(e){return function(){var t=e(this);this.textContent=t??""}}function V$(e){return this.tween("text",typeof e=="function"?H$(Fp(this,"text",e)):W$(e==null?"":e+""))}function q$(e){return function(t){this.textContent=e.call(this,t)}}function K$(e){var t,r;function n(){var o=e.apply(this,arguments);return o!==r&&(t=(r=o)&&q$(o)),t}return n._value=e,n}function Y$(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,K$(e))}function z$(){for(var e=this._name,t=this._id,r=dE(),n=this._groups,o=n.length,i=0;i<o;++i)for(var s=n[i],a=s.length,l,u=0;u<a;++u)if(l=s[u]){var c=vr(l,t);Iu(l,e,r,u,s,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new yn(n,this._parents,e,r)}function G$(){var e,t,r=this,n=r._id,o=r.size();return new Promise(function(i,s){var a={value:s},l={value:function(){--o===0&&i()}};r.each(function(){var u=Hr(this,n),c=u.on;c!==e&&(t=(e=c).copy(),t._.cancel.push(a),t._.interrupt.push(a),t._.end.push(l)),u.on=t}),o===0&&i()})}var Q$=0;function yn(e,t,r,n){this._groups=e,this._parents=t,this._name=r,this._id=n}function dE(){return++Q$}var Yr=ta.prototype;yn.prototype={constructor:yn,select:O$,selectAll:k$,selectChild:Yr.selectChild,selectChildren:Yr.selectChildren,filter:S$,merge:A$,selection:N$,transition:z$,call:Yr.call,nodes:Yr.nodes,node:Yr.node,size:Yr.size,empty:Yr.empty,each:Yr.each,on:I$,attr:a$,attrTween:h$,style:$$,styleTween:j$,text:V$,textTween:Y$,remove:R$,tween:e$,delay:g$,duration:_$,ease:w$,easeVarying:E$,end:G$,[Symbol.iterator]:Yr[Symbol.iterator]};const R3=e=>+e;function X$(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var J$={time:null,delay:0,duration:250,ease:X$};function Z$(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function eU(e){var t,r;e instanceof yn?(t=e._id,e=e._name):(t=dE(),(r=J$).time=$p(),e=e==null?null:e+"");for(var n=this._groups,o=n.length,i=0;i<o;++i)for(var s=n[i],a=s.length,l,u=0;u<a;++u)(l=s[u])&&Iu(l,e,t,u,s,r||Z$(l,t));return new yn(n,this._parents,e,t)}ta.prototype.interrupt=XB;ta.prototype.transition=eU;const dd=Math.PI,pd=2*dd,hi=1e-6,tU=pd-hi;function pE(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function rU(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return pE;const r=10**t;return function(n){this._+=n[0];for(let o=1,i=n.length;o<i;++o)this._+=Math.round(arguments[o]*r)/r+n[o]}}class nU{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?pE:rU(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,o){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+o}`}bezierCurveTo(t,r,n,o,i,s){this._append`C${+t},${+r},${+n},${+o},${this._x1=+i},${this._y1=+s}`}arcTo(t,r,n,o,i){if(t=+t,r=+r,n=+n,o=+o,i=+i,i<0)throw new Error(`negative radius: ${i}`);let s=this._x1,a=this._y1,l=n-t,u=o-r,c=s-t,d=a-r,p=c*c+d*d;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>hi)if(!(Math.abs(d*l-u*c)>hi)||!i)this._append`L${this._x1=t},${this._y1=r}`;else{let m=n-s,_=o-a,b=l*l+u*u,T=m*m+_*_,k=Math.sqrt(b),C=Math.sqrt(p),A=i*Math.tan((dd-Math.acos((b+p-T)/(2*k*C)))/2),M=A/C,$=A/k;Math.abs(M-1)>hi&&this._append`L${t+M*c},${r+M*d}`,this._append`A${i},${i},0,0,${+(d*m>c*_)},${this._x1=t+$*l},${this._y1=r+$*u}`}}arc(t,r,n,o,i,s){if(t=+t,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let a=n*Math.cos(o),l=n*Math.sin(o),u=t+a,c=r+l,d=1^s,p=s?o-i:i-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>hi||Math.abs(this._y1-c)>hi)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%pd+pd),p>tU?this._append`A${n},${n},0,1,${d},${t-a},${r-l}A${n},${n},0,1,${d},${this._x1=u},${this._y1=c}`:p>hi&&this._append`A${n},${n},0,${+(p>=dd)},${d},${this._x1=t+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}}function iU(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Ml(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function jo(e){return e=Ml(Math.abs(e)),e?e[1]:NaN}function oU(e,t){return function(r,n){for(var o=r.length,i=[],s=0,a=e[0],l=0;o>0&&a>0&&(l+a+1>n&&(a=Math.max(1,n-l)),i.push(r.substring(o-=a,o+a)),!((l+=a+1)>n));)a=e[s=(s+1)%e.length];return i.reverse().join(t)}}function sU(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var aU=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Nl(e){if(!(t=aU.exec(e)))throw new Error("invalid format: "+e);var t;return new jp({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Nl.prototype=jp.prototype;function jp(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}jp.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function lU(e){e:for(var t=e.length,r=1,n=-1,o;r<t;++r)switch(e[r]){case".":n=o=r;break;case"0":n===0&&(n=r),o=r;break;default:if(!+e[r])break e;n>0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var gE;function uU(e,t){var r=Ml(e,t);if(!r)return e+"";var n=r[0],o=r[1],i=o-(gE=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,s=n.length;return i===s?n:i>s?n+new Array(i-s+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+Ml(e,Math.max(0,t+i-1))[0]}function hy(e,t){var r=Ml(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}const dy={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:iU,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>hy(e*100,t),r:hy,s:uU,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function py(e){return e}var gy=Array.prototype.map,my=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function cU(e){var t=e.grouping===void 0||e.thousands===void 0?py:oU(gy.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?py:sU(gy.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",a=e.minus===void 0?"−":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function u(d){d=Nl(d);var p=d.fill,m=d.align,_=d.sign,b=d.symbol,T=d.zero,k=d.width,C=d.comma,A=d.precision,M=d.trim,$=d.type;$==="n"?(C=!0,$="g"):dy[$]||(A===void 0&&(A=12),M=!0,$="g"),(T||p==="0"&&m==="=")&&(T=!0,p="0",m="=");var R=b==="$"?r:b==="#"&&/[boxX]/.test($)?"0"+$.toLowerCase():"",D=b==="$"?n:/[%p]/.test($)?s:"",j=dy[$],z=/[defgprs%]/.test($);A=A===void 0?6:/[gprs]/.test($)?Math.max(1,Math.min(21,A)):Math.max(0,Math.min(20,A));function se(re){var L=R,B=D,oe,ne,ue;if($==="c")B=j(re)+B,re="";else{re=+re;var ae=re<0||1/re<0;if(re=isNaN(re)?l:j(Math.abs(re),A),M&&(re=lU(re)),ae&&+re==0&&_!=="+"&&(ae=!1),L=(ae?_==="("?_:a:_==="-"||_==="("?"":_)+L,B=($==="s"?my[8+gE/3]:"")+B+(ae&&_==="("?")":""),z){for(oe=-1,ne=re.length;++oe<ne;)if(ue=re.charCodeAt(oe),48>ue||ue>57){B=(ue===46?o+re.slice(oe+1):re.slice(oe))+B,re=re.slice(0,oe);break}}}C&&!T&&(re=t(re,1/0));var G=L.length+re.length+B.length,pe=G<k?new Array(k-G+1).join(p):"";switch(C&&T&&(re=t(pe+re,pe.length?k-B.length:1/0),pe=""),m){case"<":re=L+re+B+pe;break;case"=":re=L+pe+re+B;break;case"^":re=pe.slice(0,G=pe.length>>1)+L+re+B+pe.slice(G);break;default:re=pe+L+re+B;break}return i(re)}return se.toString=function(){return d+""},se}function c(d,p){var m=u((d=Nl(d),d.type="f",d)),_=Math.max(-8,Math.min(8,Math.floor(jo(p)/3)))*3,b=Math.pow(10,-_),T=my[8+_/3];return function(k){return m(b*k)+T}}return{format:u,formatPrefix:c}}var ka,mE,yE;fU({thousands:",",grouping:[3],currency:["$",""]});function fU(e){return ka=cU(e),mE=ka.format,yE=ka.formatPrefix,ka}function hU(e){return Math.max(0,-jo(Math.abs(e)))}function dU(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(jo(t)/3)))*3-jo(Math.abs(e)))}function pU(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,jo(t)-jo(e))+1}function Cu(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}const yy=Symbol("implicit");function _E(){var e=new z0,t=[],r=[],n=yy;function o(i){let s=e.get(i);if(s===void 0){if(n!==yy)return n;e.set(i,s=t.push(i)-1)}return r[s%r.length]}return o.domain=function(i){if(!arguments.length)return t.slice();t=[],e=new z0;for(const s of i)e.has(s)||e.set(s,t.push(s)-1);return o},o.range=function(i){return arguments.length?(r=Array.from(i),o):r.slice()},o.unknown=function(i){return arguments.length?(n=i,o):n},o.copy=function(){return _E(t,r).unknown(n)},Cu.apply(o,arguments),o}function gU(){var e=_E().unknown(void 0),t=e.domain,r=e.range,n=0,o=1,i,s,a=!1,l=0,u=0,c=.5;delete e.unknown;function d(){var p=t().length,m=o<n,_=m?o:n,b=m?n:o;i=(b-_)/Math.max(1,p-l+u*2),a&&(i=Math.floor(i)),_+=(b-_-i*(p-l))*c,s=i*(1-l),a&&(_=Math.round(_),s=Math.round(s));var T=CL(p).map(function(k){return _+i*k});return r(m?T.reverse():T)}return e.domain=function(p){return arguments.length?(t(p),d()):t()},e.range=function(p){return arguments.length?([n,o]=p,n=+n,o=+o,d()):[n,o]},e.rangeRound=function(p){return[n,o]=p,n=+n,o=+o,a=!0,d()},e.bandwidth=function(){return s},e.step=function(){return i},e.round=function(p){return arguments.length?(a=!!p,d()):a},e.padding=function(p){return arguments.length?(l=Math.min(1,u=+p),d()):l},e.paddingInner=function(p){return arguments.length?(l=Math.min(1,p),d()):l},e.paddingOuter=function(p){return arguments.length?(u=+p,d()):u},e.align=function(p){return arguments.length?(c=Math.max(0,Math.min(1,p)),d()):c},e.copy=function(){return gU(t(),[n,o]).round(a).paddingInner(l).paddingOuter(u).align(c)},Cu.apply(d(),arguments)}function mU(e){return function(){return e}}function yU(e){return+e}var _y=[0,1];function go(e){return e}function gd(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:mU(isNaN(t)?NaN:.5)}function _U(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function bU(e,t,r){var n=e[0],o=e[1],i=t[0],s=t[1];return o<n?(n=gd(o,n),i=r(s,i)):(n=gd(n,o),i=r(i,s)),function(a){return i(n(a))}}function wU(e,t,r){var n=Math.min(e.length,t.length)-1,o=new Array(n),i=new Array(n),s=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++s<n;)o[s]=gd(e[s],e[s+1]),i[s]=r(t[s],t[s+1]);return function(a){var l=wL(e,a,1,n)-1;return i[l](o[l](a))}}function bE(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function vU(){var e=_y,t=_y,r=Bp,n,o,i,s=go,a,l,u;function c(){var p=Math.min(e.length,t.length);return s!==go&&(s=_U(e[0],e[p-1])),a=p>2?wU:bU,l=u=null,d}function d(p){return p==null||isNaN(p=+p)?i:(l||(l=a(e.map(n),t,r)))(n(s(p)))}return d.invert=function(p){return s(o((u||(u=a(t,e.map(n),gr)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,yU),c()):e.slice()},d.range=function(p){return arguments.length?(t=Array.from(p),c()):t.slice()},d.rangeRound=function(p){return t=Array.from(p),r=$B,c()},d.clamp=function(p){return arguments.length?(s=p?!0:go,c()):s!==go},d.interpolate=function(p){return arguments.length?(r=p,c()):r},d.unknown=function(p){return arguments.length?(i=p,d):i},function(p,m){return n=p,o=m,c()}}function wE(){return vU()(go,go)}function EU(e,t,r,n){var o=id(e,t,r),i;switch(n=Nl(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(i=dU(o,s))&&(n.precision=i),yE(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=pU(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=hU(o))&&(n.precision=i-(n.type==="%")*2);break}}return mE(n)}function SU(e){var t=e.domain;return e.ticks=function(r){var n=t();return IL(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return EU(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,i=n.length-1,s=n[o],a=n[i],l,u,c=10;for(a<s&&(u=s,s=a,a=u,u=o,o=i,i=u);c-- >0;){if(u=nd(s,a,r),u===l)return n[o]=s,n[i]=a,t(n);if(u>0)s=Math.floor(s/u)*u,a=Math.ceil(a/u)*u;else if(u<0)s=Math.ceil(s*u)/u,a=Math.floor(a*u)/u;else break;l=u}return e},e}function AU(){var e=wE();return e.copy=function(){return bE(e,AU())},Cu.apply(e,arguments),SU(e)}function TU(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],i=e[n],s;return i<o&&(s=r,r=n,n=s,s=o,o=i,i=s),e[r]=t.floor(o),e[n]=t.ceil(i),e}const Vc=new Date,qc=new Date;function dt(e,t,r,n){function o(i){return e(i=arguments.length===0?new Date:new Date(+i)),i}return o.floor=i=>(e(i=new Date(+i)),i),o.ceil=i=>(e(i=new Date(i-1)),t(i,1),e(i),i),o.round=i=>{const s=o(i),a=o.ceil(i);return i-s<a-i?s:a},o.offset=(i,s)=>(t(i=new Date(+i),s==null?1:Math.floor(s)),i),o.range=(i,s,a)=>{const l=[];if(i=o.ceil(i),a=a==null?1:Math.floor(a),!(i<s)||!(a>0))return l;let u;do l.push(u=new Date(+i)),t(i,a),e(i);while(u<i&&i<s);return l},o.filter=i=>dt(s=>{if(s>=s)for(;e(s),!i(s);)s.setTime(s-1)},(s,a)=>{if(s>=s)if(a<0)for(;++a<=0;)for(;t(s,-1),!i(s););else for(;--a>=0;)for(;t(s,1),!i(s););}),r&&(o.count=(i,s)=>(Vc.setTime(+i),qc.setTime(+s),e(Vc),e(qc),Math.floor(r(Vc,qc))),o.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?o.filter(n?s=>n(s)%i===0:s=>o.count(0,s)%i===0):o)),o}const Pl=dt(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Pl.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?dt(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Pl);Pl.range;const sn=1e3,ir=sn*60,an=ir*60,_n=an*24,Wp=_n*7,by=_n*30,Kc=_n*365,mo=dt(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*sn)},(e,t)=>(t-e)/sn,e=>e.getUTCSeconds());mo.range;const Hp=dt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*sn)},(e,t)=>{e.setTime(+e+t*ir)},(e,t)=>(t-e)/ir,e=>e.getMinutes());Hp.range;const xU=dt(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*ir)},(e,t)=>(t-e)/ir,e=>e.getUTCMinutes());xU.range;const Vp=dt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*sn-e.getMinutes()*ir)},(e,t)=>{e.setTime(+e+t*an)},(e,t)=>(t-e)/an,e=>e.getHours());Vp.range;const IU=dt(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*an)},(e,t)=>(t-e)/an,e=>e.getUTCHours());IU.range;const na=dt(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*ir)/_n,e=>e.getDate()-1);na.range;const qp=dt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/_n,e=>e.getUTCDate()-1);qp.range;const CU=dt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/_n,e=>Math.floor(e/_n));CU.range;function Gi(e){return dt(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*ir)/Wp)}const Ru=Gi(0),Ll=Gi(1),RU=Gi(2),OU=Gi(3),Wo=Gi(4),kU=Gi(5),MU=Gi(6);Ru.range;Ll.range;RU.range;OU.range;Wo.range;kU.range;MU.range;function Qi(e){return dt(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/Wp)}const vE=Qi(0),Dl=Qi(1),NU=Qi(2),PU=Qi(3),Ho=Qi(4),LU=Qi(5),DU=Qi(6);vE.range;Dl.range;NU.range;PU.range;Ho.range;LU.range;DU.range;const Kp=dt(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Kp.range;const BU=dt(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());BU.range;const bn=dt(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());bn.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:dt(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});bn.range;const Di=dt(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Di.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:dt(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});Di.range;function $U(e,t,r,n,o,i){const s=[[mo,1,sn],[mo,5,5*sn],[mo,15,15*sn],[mo,30,30*sn],[i,1,ir],[i,5,5*ir],[i,15,15*ir],[i,30,30*ir],[o,1,an],[o,3,3*an],[o,6,6*an],[o,12,12*an],[n,1,_n],[n,2,2*_n],[r,1,Wp],[t,1,by],[t,3,3*by],[e,1,Kc]];function a(u,c,d){const p=c<u;p&&([u,c]=[c,u]);const m=d&&typeof d.range=="function"?d:l(u,c,d),_=m?m.range(u,+c+1):[];return p?_.reverse():_}function l(u,c,d){const p=Math.abs(c-u)/d,m=Mp(([,,T])=>T).right(s,p);if(m===s.length)return e.every(id(u/Kc,c/Kc,d));if(m===0)return Pl.every(Math.max(id(u,c,d),1));const[_,b]=s[p/s[m-1][2]<s[m][2]/p?m-1:m];return _.every(b)}return[a,l]}const[UU,FU]=$U(bn,Kp,Ru,na,Vp,Hp);function Yc(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function zc(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function hs(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function jU(e){var t=e.dateTime,r=e.date,n=e.time,o=e.periods,i=e.days,s=e.shortDays,a=e.months,l=e.shortMonths,u=ds(o),c=ps(o),d=ds(i),p=ps(i),m=ds(s),_=ps(s),b=ds(a),T=ps(a),k=ds(l),C=ps(l),A={a:ae,A:G,b:pe,B:de,c:null,d:Ty,e:Ty,f:cF,g:wF,G:EF,H:aF,I:lF,j:uF,L:EE,m:fF,M:hF,p:ge,q:O,Q:Cy,s:Ry,S:dF,u:pF,U:gF,V:mF,w:yF,W:_F,x:null,X:null,y:bF,Y:vF,Z:SF,"%":Iy},M={a:ie,A:me,b:ve,B:ye,c:null,d:xy,e:xy,f:IF,g:BF,G:UF,H:AF,I:TF,j:xF,L:AE,m:CF,M:RF,p:V,q:F,Q:Cy,s:Ry,S:OF,u:kF,U:MF,V:NF,w:PF,W:LF,x:null,X:null,y:DF,Y:$F,Z:FF,"%":Iy},$={a:se,A:re,b:L,B,c:oe,d:Sy,e:Sy,f:nF,g:Ey,G:vy,H:Ay,I:Ay,j:ZU,L:rF,m:JU,M:eF,p:z,q:XU,Q:oF,s:sF,S:tF,u:KU,U:YU,V:zU,w:qU,W:GU,x:ne,X:ue,y:Ey,Y:vy,Z:QU,"%":iF};A.x=R(r,A),A.X=R(n,A),A.c=R(t,A),M.x=R(r,M),M.X=R(n,M),M.c=R(t,M);function R(Z,he){return function(fe){var ee=[],v=-1,S=0,E=Z.length,N,P,J;for(fe instanceof Date||(fe=new Date(+fe));++v<E;)Z.charCodeAt(v)===37&&(ee.push(Z.slice(S,v)),(P=wy[N=Z.charAt(++v)])!=null?N=Z.charAt(++v):P=N==="e"?" ":"0",(J=he[N])&&(N=J(fe,P)),ee.push(N),S=v+1);return ee.push(Z.slice(S,v)),ee.join("")}}function D(Z,he){return function(fe){var ee=hs(1900,void 0,1),v=j(ee,Z,fe+="",0),S,E;if(v!=fe.length)return null;if("Q"in ee)return new Date(ee.Q);if("s"in ee)return new Date(ee.s*1e3+("L"in ee?ee.L:0));if(he&&!("Z"in ee)&&(ee.Z=0),"p"in ee&&(ee.H=ee.H%12+ee.p*12),ee.m===void 0&&(ee.m="q"in ee?ee.q:0),"V"in ee){if(ee.V<1||ee.V>53)return null;"w"in ee||(ee.w=1),"Z"in ee?(S=zc(hs(ee.y,0,1)),E=S.getUTCDay(),S=E>4||E===0?Dl.ceil(S):Dl(S),S=qp.offset(S,(ee.V-1)*7),ee.y=S.getUTCFullYear(),ee.m=S.getUTCMonth(),ee.d=S.getUTCDate()+(ee.w+6)%7):(S=Yc(hs(ee.y,0,1)),E=S.getDay(),S=E>4||E===0?Ll.ceil(S):Ll(S),S=na.offset(S,(ee.V-1)*7),ee.y=S.getFullYear(),ee.m=S.getMonth(),ee.d=S.getDate()+(ee.w+6)%7)}else("W"in ee||"U"in ee)&&("w"in ee||(ee.w="u"in ee?ee.u%7:"W"in ee?1:0),E="Z"in ee?zc(hs(ee.y,0,1)).getUTCDay():Yc(hs(ee.y,0,1)).getDay(),ee.m=0,ee.d="W"in ee?(ee.w+6)%7+ee.W*7-(E+5)%7:ee.w+ee.U*7-(E+6)%7);return"Z"in ee?(ee.H+=ee.Z/100|0,ee.M+=ee.Z%100,zc(ee)):Yc(ee)}}function j(Z,he,fe,ee){for(var v=0,S=he.length,E=fe.length,N,P;v<S;){if(ee>=E)return-1;if(N=he.charCodeAt(v++),N===37){if(N=he.charAt(v++),P=$[N in wy?he.charAt(v++):N],!P||(ee=P(Z,fe,ee))<0)return-1}else if(N!=fe.charCodeAt(ee++))return-1}return ee}function z(Z,he,fe){var ee=u.exec(he.slice(fe));return ee?(Z.p=c.get(ee[0].toLowerCase()),fe+ee[0].length):-1}function se(Z,he,fe){var ee=m.exec(he.slice(fe));return ee?(Z.w=_.get(ee[0].toLowerCase()),fe+ee[0].length):-1}function re(Z,he,fe){var ee=d.exec(he.slice(fe));return ee?(Z.w=p.get(ee[0].toLowerCase()),fe+ee[0].length):-1}function L(Z,he,fe){var ee=k.exec(he.slice(fe));return ee?(Z.m=C.get(ee[0].toLowerCase()),fe+ee[0].length):-1}function B(Z,he,fe){var ee=b.exec(he.slice(fe));return ee?(Z.m=T.get(ee[0].toLowerCase()),fe+ee[0].length):-1}function oe(Z,he,fe){return j(Z,t,he,fe)}function ne(Z,he,fe){return j(Z,r,he,fe)}function ue(Z,he,fe){return j(Z,n,he,fe)}function ae(Z){return s[Z.getDay()]}function G(Z){return i[Z.getDay()]}function pe(Z){return l[Z.getMonth()]}function de(Z){return a[Z.getMonth()]}function ge(Z){return o[+(Z.getHours()>=12)]}function O(Z){return 1+~~(Z.getMonth()/3)}function ie(Z){return s[Z.getUTCDay()]}function me(Z){return i[Z.getUTCDay()]}function ve(Z){return l[Z.getUTCMonth()]}function ye(Z){return a[Z.getUTCMonth()]}function V(Z){return o[+(Z.getUTCHours()>=12)]}function F(Z){return 1+~~(Z.getUTCMonth()/3)}return{format:function(Z){var he=R(Z+="",A);return he.toString=function(){return Z},he},parse:function(Z){var he=D(Z+="",!1);return he.toString=function(){return Z},he},utcFormat:function(Z){var he=R(Z+="",M);return he.toString=function(){return Z},he},utcParse:function(Z){var he=D(Z+="",!0);return he.toString=function(){return Z},he}}}var wy={"-":"",_:" ",0:"0"},gt=/^\s*\d+/,WU=/^%/,HU=/[\\^$*+?|[\]().{}]/g;function Fe(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",i=o.length;return n+(i<r?new Array(r-i+1).join(t)+o:o)}function VU(e){return e.replace(HU,"\\$&")}function ds(e){return new RegExp("^(?:"+e.map(VU).join("|")+")","i")}function ps(e){return new Map(e.map((t,r)=>[t.toLowerCase(),r]))}function qU(e,t,r){var n=gt.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function KU(e,t,r){var n=gt.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function YU(e,t,r){var n=gt.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function zU(e,t,r){var n=gt.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function GU(e,t,r){var n=gt.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function vy(e,t,r){var n=gt.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function Ey(e,t,r){var n=gt.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function QU(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function XU(e,t,r){var n=gt.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function JU(e,t,r){var n=gt.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function Sy(e,t,r){var n=gt.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function ZU(e,t,r){var n=gt.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function Ay(e,t,r){var n=gt.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function eF(e,t,r){var n=gt.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function tF(e,t,r){var n=gt.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function rF(e,t,r){var n=gt.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function nF(e,t,r){var n=gt.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function iF(e,t,r){var n=WU.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function oF(e,t,r){var n=gt.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function sF(e,t,r){var n=gt.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function Ty(e,t){return Fe(e.getDate(),t,2)}function aF(e,t){return Fe(e.getHours(),t,2)}function lF(e,t){return Fe(e.getHours()%12||12,t,2)}function uF(e,t){return Fe(1+na.count(bn(e),e),t,3)}function EE(e,t){return Fe(e.getMilliseconds(),t,3)}function cF(e,t){return EE(e,t)+"000"}function fF(e,t){return Fe(e.getMonth()+1,t,2)}function hF(e,t){return Fe(e.getMinutes(),t,2)}function dF(e,t){return Fe(e.getSeconds(),t,2)}function pF(e){var t=e.getDay();return t===0?7:t}function gF(e,t){return Fe(Ru.count(bn(e)-1,e),t,2)}function SE(e){var t=e.getDay();return t>=4||t===0?Wo(e):Wo.ceil(e)}function mF(e,t){return e=SE(e),Fe(Wo.count(bn(e),e)+(bn(e).getDay()===4),t,2)}function yF(e){return e.getDay()}function _F(e,t){return Fe(Ll.count(bn(e)-1,e),t,2)}function bF(e,t){return Fe(e.getFullYear()%100,t,2)}function wF(e,t){return e=SE(e),Fe(e.getFullYear()%100,t,2)}function vF(e,t){return Fe(e.getFullYear()%1e4,t,4)}function EF(e,t){var r=e.getDay();return e=r>=4||r===0?Wo(e):Wo.ceil(e),Fe(e.getFullYear()%1e4,t,4)}function SF(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Fe(t/60|0,"0",2)+Fe(t%60,"0",2)}function xy(e,t){return Fe(e.getUTCDate(),t,2)}function AF(e,t){return Fe(e.getUTCHours(),t,2)}function TF(e,t){return Fe(e.getUTCHours()%12||12,t,2)}function xF(e,t){return Fe(1+qp.count(Di(e),e),t,3)}function AE(e,t){return Fe(e.getUTCMilliseconds(),t,3)}function IF(e,t){return AE(e,t)+"000"}function CF(e,t){return Fe(e.getUTCMonth()+1,t,2)}function RF(e,t){return Fe(e.getUTCMinutes(),t,2)}function OF(e,t){return Fe(e.getUTCSeconds(),t,2)}function kF(e){var t=e.getUTCDay();return t===0?7:t}function MF(e,t){return Fe(vE.count(Di(e)-1,e),t,2)}function TE(e){var t=e.getUTCDay();return t>=4||t===0?Ho(e):Ho.ceil(e)}function NF(e,t){return e=TE(e),Fe(Ho.count(Di(e),e)+(Di(e).getUTCDay()===4),t,2)}function PF(e){return e.getUTCDay()}function LF(e,t){return Fe(Dl.count(Di(e)-1,e),t,2)}function DF(e,t){return Fe(e.getUTCFullYear()%100,t,2)}function BF(e,t){return e=TE(e),Fe(e.getUTCFullYear()%100,t,2)}function $F(e,t){return Fe(e.getUTCFullYear()%1e4,t,4)}function UF(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Ho(e):Ho.ceil(e),Fe(e.getUTCFullYear()%1e4,t,4)}function FF(){return"+0000"}function Iy(){return"%"}function Cy(e){return+e}function Ry(e){return Math.floor(+e/1e3)}var no,xE,jF;WF({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function WF(e){return no=jU(e),xE=no.format,jF=no.parse,no.utcFormat,no.utcParse,no}function HF(e){return new Date(e)}function VF(e){return e instanceof Date?+e:+new Date(+e)}function IE(e,t,r,n,o,i,s,a,l,u){var c=wE(),d=c.invert,p=c.domain,m=u(".%L"),_=u(":%S"),b=u("%I:%M"),T=u("%I %p"),k=u("%a %d"),C=u("%b %d"),A=u("%B"),M=u("%Y");function $(R){return(l(R)<R?m:a(R)<R?_:s(R)<R?b:i(R)<R?T:n(R)<R?o(R)<R?k:C:r(R)<R?A:M)(R)}return c.invert=function(R){return new Date(d(R))},c.domain=function(R){return arguments.length?p(Array.from(R,VF)):p().map(HF)},c.ticks=function(R){var D=p();return e(D[0],D[D.length-1],R??10)},c.tickFormat=function(R,D){return D==null?$:u(D)},c.nice=function(R){var D=p();return(!R||typeof R.range!="function")&&(R=t(D[0],D[D.length-1],R??10)),R?p(TU(D,R)):c},c.copy=function(){return bE(c,IE(e,t,r,n,o,i,s,a,l,u))},c}function O3(){return Cu.apply(IE(UU,FU,bn,Kp,Ru,na,Vp,Hp,mo,xE).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function $e(e){return function(){return e}}const Oy=Math.abs,At=Math.atan2,li=Math.cos,qF=Math.max,Gc=Math.min,Ar=Math.sin,yo=Math.sqrt,$t=1e-12,Ws=Math.PI,Bl=Ws/2,ol=2*Ws;function KF(e){return e>1?0:e<-1?Ws:Math.acos(e)}function ky(e){return e>=1?Bl:e<=-1?-Bl:Math.asin(e)}function Yp(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new nU(t)}function YF(e){return e.innerRadius}function zF(e){return e.outerRadius}function GF(e){return e.startAngle}function QF(e){return e.endAngle}function XF(e){return e&&e.padAngle}function JF(e,t,r,n,o,i,s,a){var l=r-e,u=n-t,c=s-o,d=a-i,p=d*l-c*u;if(!(p*p<$t))return p=(c*(t-i)-d*(e-o))/p,[e+p*l,t+p*u]}function Ma(e,t,r,n,o,i,s){var a=e-r,l=t-n,u=(s?i:-i)/yo(a*a+l*l),c=u*l,d=-u*a,p=e+c,m=t+d,_=r+c,b=n+d,T=(p+_)/2,k=(m+b)/2,C=_-p,A=b-m,M=C*C+A*A,$=o-i,R=p*b-_*m,D=(A<0?-1:1)*yo(qF(0,$*$*M-R*R)),j=(R*A-C*D)/M,z=(-R*C-A*D)/M,se=(R*A+C*D)/M,re=(-R*C+A*D)/M,L=j-T,B=z-k,oe=se-T,ne=re-k;return L*L+B*B>oe*oe+ne*ne&&(j=se,z=re),{cx:j,cy:z,x01:-c,y01:-d,x11:j*(o/$-1),y11:z*(o/$-1)}}function k3(){var e=YF,t=zF,r=$e(0),n=null,o=GF,i=QF,s=XF,a=null,l=Yp(u);function u(){var c,d,p=+e.apply(this,arguments),m=+t.apply(this,arguments),_=o.apply(this,arguments)-Bl,b=i.apply(this,arguments)-Bl,T=Oy(b-_),k=b>_;if(a||(a=c=l()),m<p&&(d=m,m=p,p=d),!(m>$t))a.moveTo(0,0);else if(T>ol-$t)a.moveTo(m*li(_),m*Ar(_)),a.arc(0,0,m,_,b,!k),p>$t&&(a.moveTo(p*li(b),p*Ar(b)),a.arc(0,0,p,b,_,k));else{var C=_,A=b,M=_,$=b,R=T,D=T,j=s.apply(this,arguments)/2,z=j>$t&&(n?+n.apply(this,arguments):yo(p*p+m*m)),se=Gc(Oy(m-p)/2,+r.apply(this,arguments)),re=se,L=se,B,oe;if(z>$t){var ne=ky(z/p*Ar(j)),ue=ky(z/m*Ar(j));(R-=ne*2)>$t?(ne*=k?1:-1,M+=ne,$-=ne):(R=0,M=$=(_+b)/2),(D-=ue*2)>$t?(ue*=k?1:-1,C+=ue,A-=ue):(D=0,C=A=(_+b)/2)}var ae=m*li(C),G=m*Ar(C),pe=p*li($),de=p*Ar($);if(se>$t){var ge=m*li(A),O=m*Ar(A),ie=p*li(M),me=p*Ar(M),ve;if(T<Ws)if(ve=JF(ae,G,ie,me,ge,O,pe,de)){var ye=ae-ve[0],V=G-ve[1],F=ge-ve[0],Z=O-ve[1],he=1/Ar(KF((ye*F+V*Z)/(yo(ye*ye+V*V)*yo(F*F+Z*Z)))/2),fe=yo(ve[0]*ve[0]+ve[1]*ve[1]);re=Gc(se,(p-fe)/(he-1)),L=Gc(se,(m-fe)/(he+1))}else re=L=0}D>$t?L>$t?(B=Ma(ie,me,ae,G,m,L,k),oe=Ma(ge,O,pe,de,m,L,k),a.moveTo(B.cx+B.x01,B.cy+B.y01),L<se?a.arc(B.cx,B.cy,L,At(B.y01,B.x01),At(oe.y01,oe.x01),!k):(a.arc(B.cx,B.cy,L,At(B.y01,B.x01),At(B.y11,B.x11),!k),a.arc(0,0,m,At(B.cy+B.y11,B.cx+B.x11),At(oe.cy+oe.y11,oe.cx+oe.x11),!k),a.arc(oe.cx,oe.cy,L,At(oe.y11,oe.x11),At(oe.y01,oe.x01),!k))):(a.moveTo(ae,G),a.arc(0,0,m,C,A,!k)):a.moveTo(ae,G),!(p>$t)||!(R>$t)?a.lineTo(pe,de):re>$t?(B=Ma(pe,de,ge,O,p,-re,k),oe=Ma(ae,G,ie,me,p,-re,k),a.lineTo(B.cx+B.x01,B.cy+B.y01),re<se?a.arc(B.cx,B.cy,re,At(B.y01,B.x01),At(oe.y01,oe.x01),!k):(a.arc(B.cx,B.cy,re,At(B.y01,B.x01),At(B.y11,B.x11),!k),a.arc(0,0,p,At(B.cy+B.y11,B.cx+B.x11),At(oe.cy+oe.y11,oe.cx+oe.x11),k),a.arc(oe.cx,oe.cy,re,At(oe.y11,oe.x11),At(oe.y01,oe.x01),!k))):a.arc(0,0,p,$,M,k)}if(a.closePath(),c)return a=null,c+""||null}return u.centroid=function(){var c=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,d=(+o.apply(this,arguments)+ +i.apply(this,arguments))/2-Ws/2;return[li(d)*c,Ar(d)*c]},u.innerRadius=function(c){return arguments.length?(e=typeof c=="function"?c:$e(+c),u):e},u.outerRadius=function(c){return arguments.length?(t=typeof c=="function"?c:$e(+c),u):t},u.cornerRadius=function(c){return arguments.length?(r=typeof c=="function"?c:$e(+c),u):r},u.padRadius=function(c){return arguments.length?(n=c==null?null:typeof c=="function"?c:$e(+c),u):n},u.startAngle=function(c){return arguments.length?(o=typeof c=="function"?c:$e(+c),u):o},u.endAngle=function(c){return arguments.length?(i=typeof c=="function"?c:$e(+c),u):i},u.padAngle=function(c){return arguments.length?(s=typeof c=="function"?c:$e(+c),u):s},u.context=function(c){return arguments.length?(a=c??null,u):a},u}function Ou(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function CE(e){this._context=e}CE.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function RE(e){return new CE(e)}function OE(e){return e[0]}function kE(e){return e[1]}function ZF(e,t){var r=$e(!0),n=null,o=RE,i=null,s=Yp(a);e=typeof e=="function"?e:e===void 0?OE:$e(e),t=typeof t=="function"?t:t===void 0?kE:$e(t);function a(l){var u,c=(l=Ou(l)).length,d,p=!1,m;for(n==null&&(i=o(m=s())),u=0;u<=c;++u)!(u<c&&r(d=l[u],u,l))===p&&((p=!p)?i.lineStart():i.lineEnd()),p&&i.point(+e(d,u,l),+t(d,u,l));if(m)return i=null,m+""||null}return a.x=function(l){return arguments.length?(e=typeof l=="function"?l:$e(+l),a):e},a.y=function(l){return arguments.length?(t=typeof l=="function"?l:$e(+l),a):t},a.defined=function(l){return arguments.length?(r=typeof l=="function"?l:$e(!!l),a):r},a.curve=function(l){return arguments.length?(o=l,n!=null&&(i=o(n)),a):o},a.context=function(l){return arguments.length?(l==null?n=i=null:i=o(n=l),a):n},a}function M3(e,t,r){var n=null,o=$e(!0),i=null,s=RE,a=null,l=Yp(u);e=typeof e=="function"?e:e===void 0?OE:$e(+e),t=typeof t=="function"?t:$e(t===void 0?0:+t),r=typeof r=="function"?r:r===void 0?kE:$e(+r);function u(d){var p,m,_,b=(d=Ou(d)).length,T,k=!1,C,A=new Array(b),M=new Array(b);for(i==null&&(a=s(C=l())),p=0;p<=b;++p){if(!(p<b&&o(T=d[p],p,d))===k)if(k=!k)m=p,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),_=p-1;_>=m;--_)a.point(A[_],M[_]);a.lineEnd(),a.areaEnd()}k&&(A[p]=+e(T,p,d),M[p]=+t(T,p,d),a.point(n?+n(T,p,d):A[p],r?+r(T,p,d):M[p]))}if(C)return a=null,C+""||null}function c(){return ZF().defined(o).curve(s).context(i)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:$e(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:$e(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:$e(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:$e(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:$e(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:$e(+d),u):r},u.lineX0=u.lineY0=function(){return c().x(e).y(t)},u.lineY1=function(){return c().x(e).y(r)},u.lineX1=function(){return c().x(n).y(t)},u.defined=function(d){return arguments.length?(o=typeof d=="function"?d:$e(!!d),u):o},u.curve=function(d){return arguments.length?(s=d,i!=null&&(a=s(i)),u):s},u.context=function(d){return arguments.length?(d==null?i=a=null:a=s(i=d),u):i},u}function e3(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}function t3(e){return e}function N3(){var e=t3,t=e3,r=null,n=$e(0),o=$e(ol),i=$e(0);function s(a){var l,u=(a=Ou(a)).length,c,d,p=0,m=new Array(u),_=new Array(u),b=+n.apply(this,arguments),T=Math.min(ol,Math.max(-ol,o.apply(this,arguments)-b)),k,C=Math.min(Math.abs(T)/u,i.apply(this,arguments)),A=C*(T<0?-1:1),M;for(l=0;l<u;++l)(M=_[m[l]=l]=+e(a[l],l,a))>0&&(p+=M);for(t!=null?m.sort(function($,R){return t(_[$],_[R])}):r!=null&&m.sort(function($,R){return r(a[$],a[R])}),l=0,d=p?(T-u*A)/p:0;l<u;++l,b=k)c=m[l],M=_[c],k=b+(M>0?M*d:0)+A,_[c]={data:a[c],index:l,value:M,startAngle:b,endAngle:k,padAngle:C};return _}return s.value=function(a){return arguments.length?(e=typeof a=="function"?a:$e(+a),s):e},s.sortValues=function(a){return arguments.length?(t=a,r=null,s):t},s.sort=function(a){return arguments.length?(r=a,t=null,s):r},s.startAngle=function(a){return arguments.length?(n=typeof a=="function"?a:$e(+a),s):n},s.endAngle=function(a){return arguments.length?(o=typeof a=="function"?a:$e(+a),s):o},s.padAngle=function(a){return arguments.length?(i=typeof a=="function"?a:$e(+a),s):i},s}function My(e,t){if((s=e.length)>1)for(var r=1,n,o,i=e[t[0]],s,a=i.length;r<s;++r)for(o=i,i=e[t[r]],n=0;n<a;++n)i[n][1]+=i[n][0]=isNaN(o[n][1])?o[n][0]:o[n][1]}function Ny(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}function r3(e,t){return e[t]}function n3(e){const t=[];return t.key=e,t}function P3(){var e=$e([]),t=Ny,r=My,n=r3;function o(i){var s=Array.from(e.apply(this,arguments),n3),a,l=s.length,u=-1,c;for(const d of i)for(a=0,++u;a<l;++a)(s[a][u]=[0,+n(d,s[a].key,u,i)]).data=d;for(a=0,c=Ou(t(s));a<l;++a)s[c[a]].index=a;return r(s,c),s}return o.keys=function(i){return arguments.length?(e=typeof i=="function"?i:$e(Array.from(i)),o):e},o.value=function(i){return arguments.length?(n=typeof i=="function"?i:$e(+i),o):n},o.order=function(i){return arguments.length?(t=i==null?Ny:typeof i=="function"?i:$e(Array.from(i)),o):t},o.offset=function(i){return arguments.length?(r=i??My,o):r},o}function Ss(e,t,r){this.k=e,this.x=t,this.y=r}Ss.prototype={constructor:Ss,scale:function(e){return e===1?this:new Ss(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Ss(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};Ss.prototype;export{gU as A,AU as B,P3 as C,I3 as D,M3 as E,nr as F,R3 as G,x3 as H,xE as I,A3 as J,O3 as K,ZF as L,Do as M,T3 as N,S3 as O,s3 as P,g3 as Q,m3 as R,h3 as S,FS as T,jF as U,Bo as V,p3 as W,y3 as X,o3 as a,d3 as b,f3 as c,a3 as d,P_ as e,u3 as f,wd as g,LA as h,$S as i,jS as j,br as k,lf as l,_3 as m,vd as n,af as o,TA as p,N3 as q,Cd as r,C3 as s,YE as t,vS as u,k3 as v,kS as w,c3 as x,l3 as y,E3 as z};
diff --git a/packages/modules/display_themes/colors/web/index.html b/packages/modules/display_themes/colors/web/index.html
index a7b402f66c..8870ddf49f 100644
--- a/packages/modules/display_themes/colors/web/index.html
+++ b/packages/modules/display_themes/colors/web/index.html
@@ -4,8 +4,8 @@
     <meta charset="UTF-8">
 		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>openWB Display</title>
-    <script type="module" crossorigin src="/openWB/web/display/themes/colors/assets/index-ScYbRoOj.js"></script>
-    <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/colors/assets/vendor-B1GimsSk.js">
+    <script type="module" crossorigin src="/openWB/web/display/themes/colors/assets/index-Cdwm3zKc.js"></script>
+    <link rel="modulepreload" crossorigin href="/openWB/web/display/themes/colors/assets/vendor-CxuALWWJ.js">
     <link rel="stylesheet" crossorigin href="/openWB/web/display/themes/colors/assets/index-C3_mlzOZ.css">
   </head>
   <body>

From c007797f6c94dee2c1928cf1586b3931e248caab Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Mon, 7 Oct 2024 11:20:11 +0200
Subject: [PATCH 106/205] Fix victron, log running threads in 10 sec handler
 (#1914)

* fix victron

* log running threads in 10 sec handler
---
 packages/main.py                                   | 1 +
 packages/modules/devices/victron/victron/device.py | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/packages/main.py b/packages/main.py
index b2ae3f1c22..8a0bc15694 100755
--- a/packages/main.py
+++ b/packages/main.py
@@ -74,6 +74,7 @@ def handler_with_control_interval():
                 else:
                     self.interval_counter = self.interval_counter + 1
             log.info("# ***Start*** ")
+            log.debug(f"Threads: {threading.enumerate()}")
             Pub().pub("openWB/set/system/time", timecheck.create_timestamp())
             handler_with_control_interval()
         except KeyboardInterrupt:
diff --git a/packages/modules/devices/victron/victron/device.py b/packages/modules/devices/victron/victron/device.py
index 4c91665ab8..c74fdda0f8 100644
--- a/packages/modules/devices/victron/victron/device.py
+++ b/packages/modules/devices/victron/victron/device.py
@@ -26,10 +26,10 @@ def create_inverter_component(component_config: VictronInverterSetup):
         return VictronInverter(device_config.id, component_config, client)
 
     def update_components(components: Iterable[Union[VictronBat, VictronCounter, VictronInverter]]):
-        with client as c:
+        with client:
             for component in components:
                 with SingleComponentUpdateContext(component.fault_state):
-                    component.update(c)
+                    component.update()
 
     try:
         client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)

From 0f78046d0f23fda6c3fbbe1ed78af52eb2ebb150 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Mon, 7 Oct 2024 11:21:34 +0200
Subject: [PATCH 107/205] fix feature device list (#1912)

* fix feature device list

* fix powerdog
---
 packages/modules/devices/byd/byd/device.py    |  91 ++-------
 .../carlo_gavazzi/carlo_gavazzi/device.py     | 100 +++------
 .../modules/devices/generic/mqtt/device.py    |  68 +++---
 .../huawei/huawei_smartlogger/device.py       | 122 +++--------
 .../modules/devices/janitza/janitza/device.py | 100 +++------
 .../devices/kostal/kostal_piko/device.py      | 139 ++-----------
 packages/modules/devices/lg/lg/device.py      | 193 ++++++------------
 packages/modules/devices/lg/lg/lg_test.py     |  21 +-
 .../devices/powerdog/powerdog/device.py       | 127 ++++--------
 .../devices/saxpower/saxpower/device.py       | 100 +++------
 .../modules/devices/siemens/siemens/device.py | 112 +++-------
 11 files changed, 306 insertions(+), 867 deletions(-)

diff --git a/packages/modules/devices/byd/byd/device.py b/packages/modules/devices/byd/byd/device.py
index 6ef87fd4d3..ac0adcc25c 100644
--- a/packages/modules/devices/byd/byd/device.py
+++ b/packages/modules/devices/byd/byd/device.py
@@ -1,90 +1,25 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Optional, List, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.devices.byd.byd.config import BYD, BYDBatSetup, BYDConfiguration
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
+from modules.devices.byd.byd.config import BYD, BYDBatSetup
 from modules.devices.byd.byd import bat
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.abstract_device import DeviceDescriptor
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.BYDBat
-    }
+def create_device(device_config: BYD):
+    def create_bat_component(component_config: BYDBatSetup):
+        return bat.BYDBat(component_config, device_config)
 
-    def __init__(self, device_config:  Union[Dict, BYD]) -> None:
-        self.components = {}  # type: Dict[str, bat.BYDBat]
-        try:
-            self.device_config = dataclass_from_dict(BYD, device_config)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, BYDBatSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                component_config,
-                self.device_config))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat
-}
-
-
-def read_legacy(component_type: str,
-                ip_address: str,
-                username: str,
-                password: str,
-                num: Optional[int] = None) -> None:
-    dev = Device(BYD(configuration=BYDConfiguration(user=username, password=password, ip_address=ip_address)))
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-
-    log.debug('byd IP-Adresse: ' + ip_address)
-    log.debug('byd Benutzer: ' + username)
-    log.debug('byd Passwort: ' + password)
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component
+        ),
+        component_updater=IndependentComponentUpdater(lambda component: component.update())
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=BYD)
diff --git a/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/device.py b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/device.py
index 618d75e710..4d6bf627cd 100644
--- a/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/device.py
+++ b/packages/modules/devices/carlo_gavazzi/carlo_gavazzi/device.py
@@ -1,89 +1,39 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Optional, List, Union
+from typing import Iterable
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.devices.carlo_gavazzi.carlo_gavazzi import counter
 from modules.devices.carlo_gavazzi.carlo_gavazzi.config import CarloGavazzi, CarloGavazziCounterSetup
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "counter": counter.CarloGavazziCounter,
-    }
-
-    def __init__(self, device_config: Union[Dict, CarloGavazzi]) -> None:
-        self.components = {}  # type: Dict[str, counter.CarloGavazziCounter]
-        try:
-            self.device_config = dataclass_from_dict(CarloGavazzi, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, CarloGavazziCounterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config, self.client,
-                self.device_config.configuration.modbus_id)
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "counter": counter
-}
-
-
-def read_legacy(component_type: str, ip_address: str, num: Optional[int] = None) -> None:
-    device_config = CarloGavazzi()
-    device_config.configuration.ip_address = ip_address
-    dev = Device(device_config)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-
-    log.debug('carlo gavazzi IP-Adresse: ' + str(ip_address))
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+def create_device(device_config: CarloGavazzi):
+    def create_counter_component(component_config: CarloGavazziCounterSetup):
+        return counter.CarloGavazziCounter(device_config.id, component_config, client,
+                                           device_config.configuration.modbus_id)
+
+    def update_components(components: Iterable[counter.CarloGavazziCounter]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
+
+    try:
+        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            counter=create_counter_component
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=CarloGavazzi)
diff --git a/packages/modules/devices/generic/mqtt/device.py b/packages/modules/devices/generic/mqtt/device.py
index a9c9045099..f3a70ddf38 100644
--- a/packages/modules/devices/generic/mqtt/device.py
+++ b/packages/modules/devices/generic/mqtt/device.py
@@ -1,55 +1,37 @@
 #!/usr/bin/env python3
-from typing import Dict, Union
+from typing import Iterable, Union
 import logging
 
-from dataclass_utils import dataclass_from_dict
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import MultiComponentUpdateContext
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.devices.generic.mqtt import bat, counter, inverter
 from modules.devices.generic.mqtt.config import Mqtt, MqttBatSetup, MqttCounterSetup, MqttInverterSetup
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.MqttBat,
-        "counter": counter.MqttCounter,
-        "inverter": inverter.MqttInverter
-    }
-    COMPONENT_TYPE_TO_MODULE = {
-        "bat": bat,
-        "counter": counter,
-        "inverter": inverter
-    }
-
-    def __init__(self, device_config: Union[Dict, Mqtt]) -> None:
-        self.components = {}
-        try:
-            self.device_config = dataclass_from_dict(Mqtt, device_config)
-        except Exception:
-            log.exception("Fehler im Modul " + self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, MqttBatSetup, MqttCounterSetup, MqttInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(self.COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)
-                            ] = (self.COMPONENT_TYPE_TO_CLASS[component_type](component_config))
-
-    def update(self) -> None:
-        if self.components:
-            with MultiComponentUpdateContext(self.components):
-                log.debug("MQTT-Module müssen nicht ausgelesen werden.")
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
+def create_device(device_config: Mqtt):
+    def create_bat_component(component_config: MqttBatSetup):
+        return bat.MqttBat(component_config)
+
+    def create_counter_component(component_config: MqttCounterSetup):
+        return counter.MqttCounter(component_config)
+
+    def create_inverter_component(component_config: MqttInverterSetup):
+        return inverter.MqttInverter(component_config)
+
+    def update_components(components: Iterable[Union[bat.MqttBat, counter.MqttCounter, inverter.MqttInverter]]):
+        log.debug("MQTT-Module müssen nicht ausgelesen werden.")
+
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Mqtt)
diff --git a/packages/modules/devices/huawei/huawei_smartlogger/device.py b/packages/modules/devices/huawei/huawei_smartlogger/device.py
index 75d0788231..cfb7333a7a 100644
--- a/packages/modules/devices/huawei/huawei_smartlogger/device.py
+++ b/packages/modules/devices/huawei/huawei_smartlogger/device.py
@@ -1,11 +1,11 @@
 #!/usr/bin/env python3
 import logging
-from typing import Optional, Union, List, Dict
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from typing import Iterable, Union
+
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.common import modbus
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.devices.huawei.huawei_smartlogger import counter
 from modules.devices.huawei.huawei_smartlogger import inverter
 from modules.devices.huawei.huawei_smartlogger import bat
@@ -22,91 +22,35 @@
                                              inverter.Huawei_SmartloggerInverter]
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.Huawei_SmartloggerBat,
-        "counter": counter.Huawei_SmartloggerCounter,
-        "inverter": inverter.Huawei_SmartloggerInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, Huawei_Smartlogger]) -> None:
-        self.components = {}  # type: Dict[str, huawei_smartlogger_component_classes]
-        try:
-            self.device_config = dataclass_from_dict(Huawei_Smartlogger, device_config)
-            ip_address = self.device_config.configuration.ip_address
-            self.port = self.device_config.configuration.port
-            self.client = modbus.ModbusTcpClient_(ip_address, self.device_config.configuration.port)
-            self.client.connect()
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict,
-                                                    Huawei_SmartloggerBatSetup,
-                                                    Huawei_SmartloggerCounterSetup,
-                                                    Huawei_SmartloggerInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (
-                self.COMPONENT_TYPE_TO_CLASS[component_type](self.device_config.id, component_config, self.client))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str,
-                ip_address: str,
-                modbus_id: Optional[int] = 1,
-                num: Optional[int] = None) -> None:
-
-    device_config = Huawei_Smartlogger()
-    device_config.configuration.ip_address = ip_address
-    dev = Device(device_config)
-
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    component_config.configuration.modbus_id = modbus_id
-    dev.add_component(component_config)
-
-    log.debug('Huawei Smartlogger IP-Adresse: ' + ip_address)
-    log.debug('Huawei Device Modbus-ID: ' + str(modbus_id))
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+def create_device(device_config: Huawei_Smartlogger):
+    def create_bat_component(component_config: Huawei_SmartloggerBatSetup):
+        return bat.Huawei_SmartloggerBat(device_config.id, component_config, client)
+
+    def create_counter_component(component_config: Huawei_SmartloggerCounterSetup):
+        return counter.Huawei_SmartloggerCounter(device_config.id, component_config, client)
+
+    def create_inverter_component(component_config: Huawei_SmartloggerInverterSetup):
+        return inverter.Huawei_SmartloggerInverter(device_config.id, component_config, client)
+
+    def update_components(components: Iterable[huawei_smartlogger_component_classes]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
+
+    try:
+        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Huawei_Smartlogger)
diff --git a/packages/modules/devices/janitza/janitza/device.py b/packages/modules/devices/janitza/janitza/device.py
index 442d13c9ba..f3b268be94 100644
--- a/packages/modules/devices/janitza/janitza/device.py
+++ b/packages/modules/devices/janitza/janitza/device.py
@@ -1,11 +1,10 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Optional, List, Union
+from typing import Iterable
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
 from modules.devices.janitza.janitza import counter
 from modules.devices.janitza.janitza.config import Janitza, JanitzaCounterSetup
@@ -13,77 +12,28 @@
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "counter": counter.JanitzaCounter
-    }
-
-    def __init__(self, device_config: Union[Dict, Janitza]) -> None:
-        self.components = {}  # type: Dict[str, counter.JanitzaCounter]
-        try:
-            self.device_config = dataclass_from_dict(Janitza, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, JanitzaCounterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config, self.client,
-                self.device_config.configuration.modbus_id))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "counter": counter
-}
-
-
-def read_legacy(component_type: str, ip_address: str, num: Optional[int] = None) -> None:
-    device_config = Janitza()
-    device_config.configuration.ip_address = ip_address
-    dev = Device(device_config)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-
-    log.debug('Janitza IP-Adresse: ' + ip_address)
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+def create_device(device_config: Janitza):
+    def create_counter_component(component_config: JanitzaCounterSetup):
+        return counter.JanitzaCounter(device_config.id, component_config, client,
+                                      device_config.configuration.modbus_id)
+
+    def update_components(components: Iterable[counter.JanitzaCounter]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
+
+    try:
+        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            counter=create_counter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Janitza)
diff --git a/packages/modules/devices/kostal/kostal_piko/device.py b/packages/modules/devices/kostal/kostal_piko/device.py
index 78cace700e..464dfcad02 100644
--- a/packages/modules/devices/kostal/kostal_piko/device.py
+++ b/packages/modules/devices/kostal/kostal_piko/device.py
@@ -1,137 +1,30 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Union, Optional, List
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
-from modules.devices.byd.byd.config import BYD, BYDBatSetup, BYDConfiguration
-from modules.devices.byd.byd.device import Device as BYDDevice
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import SingleComponentUpdateContext
-from modules.common.component_state import CounterState
-from modules.common.simcount import sim_count
-from modules.common.store import get_counter_value_store
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, IndependentComponentUpdater
+from modules.common.abstract_device import DeviceDescriptor
 from modules.devices.kostal.kostal_piko import counter
 from modules.devices.kostal.kostal_piko import inverter
-from modules.devices.kostal.kostal_piko.config import (KostalPiko,
-                                                       KostalPikoConfiguration,
-                                                       KostalPikoCounterSetup,
-                                                       KostalPikoInverterConfiguration,
-                                                       KostalPikoInverterSetup)
+from modules.devices.kostal.kostal_piko.config import KostalPiko, KostalPikoCounterSetup, KostalPikoInverterSetup
 
 log = logging.getLogger(__name__)
 
 
-kostal_piko_component_classes = Union[counter.KostalPikoCounter, inverter.KostalPikoInverter]
+def create_device(device_config: KostalPiko):
+    def create_counter_component(component_config: KostalPikoCounterSetup):
+        return counter.KostalPikoCounter(device_config.id, component_config, device_config.configuration.ip_address)
 
+    def create_inverter_component(component_config: KostalPikoInverterSetup):
+        return inverter.KostalPikoInverter(device_config.id, component_config, device_config.configuration.ip_address)
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "counter": counter.KostalPikoCounter,
-        "inverter": inverter.KostalPikoInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, KostalPiko]) -> None:
-        self.components = {}  # type: Dict[str, kostal_piko_component_classes]
-        try:
-            self.device_config = dataclass_from_dict(KostalPiko, device_config)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, KostalPikoCounterSetup, KostalPikoInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config, self.device_config.configuration.ip_address))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str,
-                address: str,
-                bat_module: str,
-                bat_ip: str,
-                bat_username: str,
-                bat_password: str,
-                num: Optional[int] = None) -> None:
-    dev = Device(KostalPiko(configuration=KostalPikoConfiguration(ip_address=address)))
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    if isinstance(component_config, KostalPikoInverterSetup) and bat_module != "none":
-        component_config.configuration.bat_configured = True
-    dev.add_component(component_config)
-
-    log.debug('KostalPiko IP-Adresse: ' + address)
-    log.debug('KostalPiko Speicher: ' + bat_module)
-
-    if isinstance(component_config, KostalPikoInverterSetup):
-        dev.update()
-    elif isinstance(component_config, KostalPikoCounterSetup):
-        with SingleComponentUpdateContext(dev.components["componentNone"].component_info):
-            home_consumption, powers = dev.components["componentNone"].get_values()
-            if bat_module == "speicher_bydhv":
-                bat_power = _get_byd_bat_power(bat_ip, bat_username, bat_password, 1)
-                home_consumption += bat_power
-
-            dev.add_component(KostalPikoInverterSetup(
-                id=1, configuration=KostalPikoInverterConfiguration(bat_configured=True)))
-            inverter_power, _ = dev.components["component"+str(1)].update()
-
-            power = home_consumption + inverter_power
-            imported, exported = sim_count(power, prefix="bezug")
-            counter_state = CounterState(
-                imported=imported,
-                exported=exported,
-                power=power,
-                powers=powers
-            )
-            get_counter_value_store(None).set(counter_state)
-
-
-def _get_byd_bat_power(bat_ip: str, bat_username: str, bat_password: str, num: int) -> float:
-    bat_dev = BYDDevice(BYD(configuration=BYDConfiguration(user=bat_username,
-                                                           password=bat_password,
-                                                           ip_address=bat_ip)))
-    bat_dev.add_component(BYDBatSetup(id=num))
-    bat_power, _ = bat_dev.components["component"+str(num)].get_values()
-    return bat_power
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=IndependentComponentUpdater(lambda component: component.update())
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=KostalPiko)
diff --git a/packages/modules/devices/lg/lg/device.py b/packages/modules/devices/lg/lg/device.py
index 715b8ba0a0..39b96c865a 100644
--- a/packages/modules/devices/lg/lg/device.py
+++ b/packages/modules/devices/lg/lg/device.py
@@ -1,146 +1,75 @@
 #!/usr/bin/env python3
 import json
 import logging
-import os
-from typing import Dict, Union, Optional, List
+from typing import Dict, Iterable, Union
 from requests import HTTPError, Session
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import req
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import MultiComponentUpdateContext
-from modules.devices.lg.lg.config import LG, LgBatSetup, LgConfiguration, LgCounterSetup, LgInverterSetup
-from modules.devices.lg.lg import bat, counter, inverter
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.devices.lg.lg.bat import LgBat
+from modules.devices.lg.lg.config import LG, LgBatSetup, LgCounterSetup, LgInverterSetup
+from modules.devices.lg.lg.counter import LgCounter
+from modules.devices.lg.lg.inverter import LgInverter
 
 log = logging.getLogger(__name__)
 
 
-lg_component_classes = Union[bat.LgBat, counter.LgCounter, inverter.LgInverter]
-
-
-class Device(AbstractDevice):
-    """Beispiel JSON-Objekte liegen im Ordner lgessv1/JSON-Beispiele.txt
-    lg_ess_url:  IP/URL des LG ESS V1.0
-    lg_ess_pass: Passwort, um sich in den LG ESS V1.0 einzuloggen.
-                 Das Passwort ist standardmäßig die Registrierungsnummer,
-                 die sich auf dem PCS (dem Hybridwechselrichter und
-                 Batteriemanagementsystem) befindet (Aufkleber!). Alter-
-                 nativ findet man die Registrierungsnummer in der App unter
-                 dem Menüpunkt "Systeminformationen".
-                 Mit der Registrierungsnummer kann man sich dann in der
-                 Rolle "installer" einloggen."""
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.LgBat,
-        "counter": counter.LgCounter,
-        "inverter": inverter.LgInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, LG]) -> None:
-        self.components = {}  # type: Dict[str, lg_component_classes]
-        self.session_key = " "
-        try:
-            self.device_config = dataclass_from_dict(LG, device_config)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, LgBatSetup, LgCounterSetup, LgInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id,
-                component_config))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            with MultiComponentUpdateContext(self.components):
-                session = req.get_http_session()
-                try:
-                    response = self._request_data(session)
-                except HTTPError:
-                    self._update_session_key(session)
-                    response = self._request_data(session)
-
-                for component in self.components:
-                    self.components[component].update(response)
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-    def _update_session_key(self, session: Session):
-        try:
-            headers = {'Content-Type': 'application/json', }
-            data = json.dumps({"password": self.device_config.configuration.password})
-            response = session.put("https://"+self.device_config.configuration.ip_address+'/v1/login', headers=headers,
-                                   data=data, verify=False, timeout=5).json()
-            self.session_key = response["auth_key"]
-        except (HTTPError, KeyError) as e:
-            e.args += ("login failed! check password!", )
-            raise e
-
-    def _request_data(self, session: Session) -> Dict:
+def _update_session_key(session: Session, ip_address: str, password: str) -> str:
+    try:
         headers = {'Content-Type': 'application/json', }
-        data = json.dumps({"auth_key": self.session_key})
-        return session.post("https://"+self.device_config.configuration.ip_address + "/v1/user/essinfo/home",
-                            headers=headers,
-                            data=data,
-                            verify=False,
-                            timeout=5).json()
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str, ip: str, password: str, num: Optional[int] = None) -> None:
-    dev = Device(LG(configuration=LgConfiguration(ip_address=ip, password=password)))
-
-    if os.path.isfile("/var/www/html/openWB/ramdisk/ess_session_key"):
-        with open("/var/www/html/openWB/ramdisk/ess_session_key", "r") as f:
-            # erste Zeile ohne Zeilenumbruch lesen
-            old_session_key = f.readline().strip()
-            dev.session_key = old_session_key
-    else:
-        old_session_key = dev.session_key
-
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    if component_type == "bat" or component_type == "counter":
-        num = None
-    component_config.id = num
-    dev.add_component(component_config)
-    log.debug('LG ESS V1.0 IP: ' + ip)
-    log.debug('LG ESS V1.0 password: ' + password)
-    dev.update()
-
-    if dev.session_key != old_session_key:
-        with open("/var/www/html/openWB/ramdisk/ess_session_key", "w") as f:
-            f.write(str(dev.session_key))
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+        data = json.dumps({"password": password})
+        response = session.put(f"https://{ip_address}/v1/login", headers=headers,
+                               data=data, verify=False, timeout=5).json()
+        return response["auth_key"]
+    except (HTTPError, KeyError) as e:
+        e.args += ("login failed! check password!", )
+        raise e
+
+
+def _request_data(session: Session, session_key: str, ip_address: str) -> Dict:
+    headers = {'Content-Type': 'application/json', }
+    data = json.dumps({"auth_key": session_key})
+    return session.post(f"https://{ip_address}/v1/user/essinfo/home",
+                        headers=headers,
+                        data=data,
+                        verify=False,
+                        timeout=5).json()
+
+
+def create_device(device_config: LG):
+    def create_bat_component(component_config: LgBatSetup):
+        return LgBat(device_config.id, component_config)
+
+    def create_counter_component(component_config: LgCounterSetup):
+        return LgCounter(device_config.id, component_config)
+
+    def create_inverter_component(component_config: LgInverterSetup):
+        return LgInverter(device_config.id, component_config)
+
+    def update_components(components: Iterable[Union[LgBat, LgCounter, LgInverter]]):
+        nonlocal session_key
+        session = req.get_http_session()
+        try:
+            response = _request_data(session, session_key, device_config.configuration.ip_address)
+        except HTTPError:
+            session_key = _update_session_key(
+                session, device_config.configuration.ip_address, device_config.configuration.password)
+            response = _request_data(session, session_key, device_config.configuration.ip_address)
+
+        for component in components:
+            component.update(response)
+
+    session_key = " "
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=LG)
diff --git a/packages/modules/devices/lg/lg/lg_test.py b/packages/modules/devices/lg/lg/lg_test.py
index 5dc67d2f01..91605ccfcc 100644
--- a/packages/modules/devices/lg/lg/lg_test.py
+++ b/packages/modules/devices/lg/lg/lg_test.py
@@ -3,7 +3,10 @@
 from unittest.mock import Mock
 
 from modules.common.component_state import BatState, CounterState, InverterState
-from modules.devices.lg.lg import bat, counter, device, inverter
+from modules.common.configurable_device import ConfigurableDevice
+from modules.devices.lg.lg import bat, counter, inverter
+from modules.devices.lg.lg import device
+from modules.devices.lg.lg.device import create_device
 from modules.devices.lg.lg.config import LG, LgConfiguration
 from test_utils.mock_ramdisk import MockRamdisk
 
@@ -14,9 +17,10 @@ def mock_ramdisk(monkeypatch):
 
 
 @pytest.fixture
-def dev() -> device.Device:
-    dev = device.Device(LG(configuration=LgConfiguration(ip_address=API_URL, password="some password")))
-    dev.session_key = "67567d76-0c83-11ea-8a59-d84fb802005a"
+def dev(monkeypatch) -> ConfigurableDevice:
+    dev = create_device(LG(configuration=LgConfiguration(ip_address=API_URL, password="some password")))
+    mock_session_key = Mock(return_value="67567d76-0c83-11ea-8a59-d84fb802005a")
+    monkeypatch.setattr(device, "_update_session_key", mock_session_key)
     return dev
 
 
@@ -38,7 +42,7 @@ def assert_inverter_state_correct(state: InverterState):
     assert state.exported == 200
 
 
-def test_valid_login(monkeypatch, dev: device.Device):
+def test_valid_login(monkeypatch, dev: ConfigurableDevice):
     # setup
     mock_bat_value_store = Mock()
     monkeypatch.setattr(bat, "get_bat_value_store", Mock(return_value=mock_bat_value_store))
@@ -46,7 +50,7 @@ def test_valid_login(monkeypatch, dev: device.Device):
     monkeypatch.setattr(counter, "get_counter_value_store", Mock(return_value=mock_counter_value_store))
     mock_inverter_value_store = Mock()
     monkeypatch.setattr(inverter, "get_inverter_value_store", Mock(return_value=mock_inverter_value_store))
-    monkeypatch.setattr(device.Device, "_request_data", Mock(return_value=sample_auth_key_valid))
+    monkeypatch.setattr(device, "_request_data", Mock(return_value=sample_auth_key_valid))
     component_config = bat.component_descriptor.configuration_factory()
     component_config.id = None
     dev.add_component(component_config)
@@ -66,7 +70,7 @@ def test_valid_login(monkeypatch, dev: device.Device):
     assert_inverter_state_correct(mock_inverter_value_store.set.call_args[0][0])
 
 
-def test_update_session_key(monkeypatch, dev: device.Device):
+def test_update_session_key(monkeypatch, dev: ConfigurableDevice):
     # setup
     mock_bat_value_store = Mock()
     monkeypatch.setattr(bat, "get_bat_value_store", Mock(return_value=mock_bat_value_store))
@@ -74,8 +78,7 @@ def test_update_session_key(monkeypatch, dev: device.Device):
     monkeypatch.setattr(counter, "get_counter_value_store", Mock(return_value=mock_counter_value_store))
     mock_inverter_value_store = Mock()
     monkeypatch.setattr(inverter, "get_inverter_value_store", Mock(return_value=mock_inverter_value_store))
-    monkeypatch.setattr(device.Device, "_update_session_key", Mock())
-    monkeypatch.setattr(device.Device, "_request_data", Mock(
+    monkeypatch.setattr(device, "_request_data", Mock(
         side_effect=[HTTPError, sample_auth_key_valid]))
     component_config = bat.component_descriptor.configuration_factory()
     component_config.id = None
diff --git a/packages/modules/devices/powerdog/powerdog/device.py b/packages/modules/devices/powerdog/powerdog/device.py
index 6461ff4c62..697320a827 100644
--- a/packages/modules/devices/powerdog/powerdog/device.py
+++ b/packages/modules/devices/powerdog/powerdog/device.py
@@ -1,113 +1,64 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Union, Optional, List
+from typing import Iterable, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import MultiComponentUpdateContext, SingleComponentUpdateContext
-from modules.devices.powerdog.powerdog import counter
-from modules.devices.powerdog.powerdog import inverter
-from modules.devices.powerdog.powerdog.config import (
-    Powerdog, PowerdogConfiguration, PowerdogCounterSetup, PowerdogInverterSetup)
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.devices.powerdog.powerdog.config import Powerdog, PowerdogCounterSetup, PowerdogInverterSetup
+from modules.devices.powerdog.powerdog.counter import PowerdogCounter
+from modules.devices.powerdog.powerdog.inverter import PowerdogInverter
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "counter": counter.PowerdogCounter,
-        "inverter": inverter.PowerdogInverter
-    }
+def create_device(device_config: Powerdog):
+    def create_counter_component(component_config: PowerdogCounterSetup):
+        return PowerdogCounter(device_config.id, component_config, client, device_config.configuration.modbus_id)
 
-    def __init__(self, device_config: Union[Dict, Powerdog]) -> None:
-        self.components = {}  # type: Dict[str, Union[counter.PowerdogCounter, inverter.PowerdogInverter]]
-        try:
-            self.device_config = dataclass_from_dict(Powerdog, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
+    def create_inverter_component(component_config: PowerdogInverterSetup):
+        return PowerdogInverter(device_config.id, component_config, client, device_config.configuration.modbus_id)
 
-    def add_component(self, component_config: Union[Dict, PowerdogCounterSetup, PowerdogInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (
-                self.COMPONENT_TYPE_TO_CLASS[component_type](
-                    self.device_config.id, component_config, self.client,
-                    self.device_config.configuration.modbus_id))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        with MultiComponentUpdateContext(self.components):
-            if len(self.components) == 1:
-                for component in self.components:
-                    if isinstance(self.components[component], inverter.PowerdogInverter):
-                        with SingleComponentUpdateContext(self.components[component].fault_state):
-                            self.components[component].update()
+    def update_components(components: Iterable[Union[PowerdogCounter, PowerdogInverter]]):
+        with client:
+            if len(components) == 1:
+                for component in components:
+                    if isinstance(component, PowerdogInverter):
+                        with SingleComponentUpdateContext(component.fault_state):
+                            component.update()
                     else:
                         raise Exception(
                             "Wenn ein EVU-Zähler konfiguriert wurde, muss immer auch ein WR konfiguriert sein.")
-            elif len(self.components) == 2:
-                for component in self.components:
-                    if isinstance(self.components[component], inverter.PowerdogInverter):
-                        inverter_power = self.components[component].update()
+            elif len(components) == 2:
+                for component in components:
+                    if isinstance(component, PowerdogInverter):
+                        inverter_power = component.update()
                         break
                 else:
                     inverter_power = 0
-                for component in self.components:
-                    if isinstance(self.components[component], counter.PowerdogCounter):
-                        self.components[component].update(inverter_power)
+                for component in components:
+                    if isinstance(component, PowerdogCounter):
+                        component.update(inverter_power)
             else:
                 log.warning(
-                    self.device_config.name +
+                    device_config.name +
                     ": Es konnten keine Werte gelesen werden, da noch keine oder zu viele Komponenten konfiguriert "
                     + "wurden."
                 )
 
-
-COMPONENT_TYPE_TO_MODULE = {
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str, ip_address: str, num: Optional[int] = None) -> None:
-    dev = Device(Powerdog(configuration=PowerdogConfiguration(ip_address=ip_address)))
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-
-    # Wenn der EVU-Zähler ausgelesen werden soll, wird auch noch der Inverter benötigt.
-    if component_type in COMPONENT_TYPE_TO_MODULE and component_type == "counter":
-        inverter_config = PowerdogInverterSetup()
-        inverter_config.id = 1
-        dev.add_component(inverter_config)
-
-    log.debug('Powerdog IP-Adresse: ' + ip_address)
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+    try:
+        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Powerdog)
diff --git a/packages/modules/devices/saxpower/saxpower/device.py b/packages/modules/devices/saxpower/saxpower/device.py
index 1735a4a474..5078f3c887 100644
--- a/packages/modules/devices/saxpower/saxpower/device.py
+++ b/packages/modules/devices/saxpower/saxpower/device.py
@@ -1,88 +1,38 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, List, Union
+from typing import Iterable
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.saxpower.saxpower import bat
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.devices.saxpower.saxpower.bat import SaxpowerBat
 from modules.devices.saxpower.saxpower.config import Saxpower, SaxpowerBatSetup
 
 log = logging.getLogger(__name__)
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.SaxpowerBat
-    }
-
-    def __init__(self, device_config: Union[Dict, Saxpower]) -> None:
-        self.components = {}  # type: Dict[str, bat.SaxpowerBat]
-        try:
-            self.device_config = dataclass_from_dict(Saxpower, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self, component_config: Union[Dict, SaxpowerBatSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config, self.client, self.device_config.configuration.modbus_id))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat
-}
-
-
-def read_legacy(component_type: str, ip_address: str) -> None:
-    device_config = Saxpower()
-    device_config.configuration.ip_address = ip_address
-    dev = Device(device_config)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = None
-    dev.add_component(component_config)
-
-    log.debug('Saxpower IP-Adresse: ' + ip_address)
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+def create_device(device_config: Saxpower):
+    def create_bat_component(component_config: SaxpowerBatSetup):
+        return SaxpowerBat(device_config.id, component_config, client, device_config.configuration.modbus_id)
+
+    def update_components(components: Iterable[SaxpowerBat]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
+
+    try:
+        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Saxpower)
diff --git a/packages/modules/devices/siemens/siemens/device.py b/packages/modules/devices/siemens/siemens/device.py
index d914e075c6..9689db1312 100644
--- a/packages/modules/devices/siemens/siemens/device.py
+++ b/packages/modules/devices/siemens/siemens/device.py
@@ -1,99 +1,51 @@
 #!/usr/bin/env python3
 import logging
-from typing import Dict, Union, Optional, List
+from typing import Iterable, Union
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
+from modules.common.abstract_device import DeviceDescriptor
 from modules.common.component_context import SingleComponentUpdateContext
-from modules.devices.siemens.siemens import bat, counter, inverter
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
+from modules.devices.siemens.siemens.bat import SiemensBat
 from modules.devices.siemens.siemens.config import Siemens, SiemensBatSetup, SiemensCounterSetup, SiemensInverterSetup
+from modules.devices.siemens.siemens.counter import SiemensCounter
+from modules.devices.siemens.siemens.inverter import SiemensInverter
 
 log = logging.getLogger(__name__)
 
 
-siemens_component_classes = Union[bat.SiemensBat, counter.SiemensCounter, inverter.SiemensInverter]
+siemens_component_classes = Union[SiemensBat, SiemensCounter, SiemensInverter]
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": bat.SiemensBat,
-        "counter": counter.SiemensCounter,
-        "inverter": inverter.SiemensInverter
-    }
+def create_device(device_config: Siemens):
+    def create_bat_component(component_config: SiemensBatSetup):
+        return SiemensBat(device_config.id, component_config, client, device_config.configuration.modbus_id)
 
-    def __init__(self, device_config: Union[Dict, Siemens]) -> None:
-        self.components = {}  # type: Dict[str, siemens_component_classes]
-        try:
-            self.device_config = dataclass_from_dict(Siemens, device_config)
-            self.client = modbus.ModbusTcpClient_(
-                self.device_config.configuration.ip_address, self.device_config.configuration.port)
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
+    def create_counter_component(component_config: SiemensCounterSetup):
+        return SiemensCounter(device_config.id, component_config, client, device_config.configuration.modbus_id)
 
-    def add_component(self, component_config: Union[Dict,
-                                                    SiemensBatSetup,
-                                                    SiemensCounterSetup,
-                                                    SiemensInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config, self.client,
-                self.device_config.configuration.modbus_id))
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
+    def create_inverter_component(component_config: SiemensInverterSetup):
+        return SiemensInverter(device_config.id, component_config, client, device_config.configuration.modbus_id)
 
-    def update(self) -> None:
-        log.debug("Start device reading" + str(self.components))
-        if self.components:
-            for component in self.components:
-                # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen werden.
-                with SingleComponentUpdateContext(self.components[component].fault_state):
-                    self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
+    def update_components(components: Iterable[siemens_component_classes]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
 
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "counter": counter,
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str, ip_address: str, num: Optional[int] = None) -> None:
-    device_config = Siemens()
-    device_config.configuration.ip_address = ip_address
-    dev = Device(device_config)
-    if component_type in COMPONENT_TYPE_TO_MODULE:
-        component_config = COMPONENT_TYPE_TO_MODULE[component_type].component_descriptor.configuration_factory()
-    else:
-        raise Exception(
-            "illegal component type " + component_type + ". Allowed values: " +
-            ','.join(COMPONENT_TYPE_TO_MODULE.keys())
-        )
-    component_config.id = num
-    dev.add_component(component_config)
-
-    log.debug('Siemens IP-Adresse: ' + ip_address)
-
-    dev.update()
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+    try:
+        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port)
+    except Exception:
+        log.exception("Fehler in create_device")
+    return ConfigurableDevice(
+        device_config=device_config,
+        component_factory=ComponentFactoryByType(
+            bat=create_bat_component,
+            counter=create_counter_component,
+            inverter=create_inverter_component,
+        ),
+        component_updater=MultiComponentUpdater(update_components)
+    )
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Siemens)

From 20fb3c02ac83b6770337c29bab61348f1489044c Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 8 Oct 2024 10:18:54 +0200
Subject: [PATCH 108/205] support Shelly MiniPM G3, fix error counter (#1918)

* support Shelly MiniPM G3

* fix error counter
---
 packages/helpermodules/utils/error_counter.py |  2 +-
 .../modules/devices/shelly/shelly/counter.py  | 32 +++++++---
 .../devices/shelly/shelly/shelly_test.py      | 58 +++++++++++++++++++
 3 files changed, 82 insertions(+), 10 deletions(-)
 create mode 100644 packages/modules/devices/shelly/shelly/shelly_test.py

diff --git a/packages/helpermodules/utils/error_counter.py b/packages/helpermodules/utils/error_counter.py
index c303ecc90b..033fdeb7e6 100644
--- a/packages/helpermodules/utils/error_counter.py
+++ b/packages/helpermodules/utils/error_counter.py
@@ -32,7 +32,7 @@ def __exit__(self, exception_type, exception, exception_traceback) -> bool:
         return True
 
     def error_counter_exceeded(self) -> bool:
-        if self.error_timestamp and timecheck.check_timestamp(self.error_timestamp, self.timeout):
+        if self.error_timestamp and timecheck.check_timestamp(self.error_timestamp, self.timeout) is False:
             log.error(self.__exceeded_msg)
             return True
         else:
diff --git a/packages/modules/devices/shelly/shelly/counter.py b/packages/modules/devices/shelly/shelly/counter.py
index b6e4f1d3df..709e6fa6b7 100644
--- a/packages/modules/devices/shelly/shelly/counter.py
+++ b/packages/modules/devices/shelly/shelly/counter.py
@@ -47,25 +47,39 @@ def update(self) -> None:
                 currents = [status['emeters'][i]['current'] for i in range(0, 3)]
                 powers = [status['emeters'][i]['power'] for i in range(0, 3)]
                 power_factors = [status['emeters'][i]['pf'] for i in range(0, 3)]
-                imported, exported = self.sim_counter.sim_count(power)
             else:
                 # shelly Pro3EM
-                voltages = [status['em:0'][f'{i}_voltage'] for i in 'abc']
-                currents = [status['em:0'][f'{i}_current'] for i in 'abc']
-                powers = [status['em:0'][f'{i}_act_power'] for i in 'abc']
-                power_factors = [status['em:0'][f'{i}_pf'] for i in 'abc']
-                power = status['em:0']['total_act_power'] * self.factor
-                imported, exported = self.sim_counter.sim_count(power)
+                if "em:0" in status:
+                    meter = status['em:0']
+                    voltages = [meter[f'{i}_voltage'] for i in 'abc']
+                    currents = [meter[f'{i}_current'] for i in 'abc']
+                    powers = [meter[f'{i}_act_power'] for i in 'abc']
+                    power_factors = [meter[f'{i}_pf'] for i in 'abc']
+                    power = meter['total_act_power'] * self.factor
+                # Shelly MiniPM G3
+                else:
+                    meter = status['pm1:0']
+                    log.debug("single phase shelly")
+                    voltages = [meter['voltage'], 0, 0]
+                    currents = [meter['current'], 0, 0]
+                    power = meter['apower']
+                    frequency = meter['freq']
+
+            imported, exported = self.sim_counter.sim_count(power)
 
             counter_state = CounterState(
                 voltages=voltages,
                 currents=currents,
-                powers=powers,
-                power_factors=power_factors,
                 imported=imported,
                 exported=exported,
                 power=power
             )
+            if 'frequency' in locals():
+                counter_state.frequency = frequency
+            if "power_factors" in locals():
+                counter_state.power_factors = power_factors
+            if "powers" in locals():
+                counter_state.powers = powers
             self.store.set(counter_state)
         except KeyError:
             log.exception("unsupported shelly device?")
diff --git a/packages/modules/devices/shelly/shelly/shelly_test.py b/packages/modules/devices/shelly/shelly/shelly_test.py
new file mode 100644
index 0000000000..8a07f69809
--- /dev/null
+++ b/packages/modules/devices/shelly/shelly/shelly_test.py
@@ -0,0 +1,58 @@
+from unittest.mock import Mock
+import requests_mock
+
+from modules.common.component_state import CounterState
+from modules.conftest import SAMPLE_IP
+from modules.devices.shelly.shelly.config import ShellyCounterSetup
+from modules.devices.shelly.shelly import counter
+
+
+# Shelly MiniPM G3 https://forum.openwb.de/viewtopic.php?p=117309#p117309
+DATA_MINPM_G3 = {
+    # [..]
+    "pm1:0": {
+        "id": 0,
+        "voltage": 230.9,
+        "current": 1,
+        "apower": 230,
+        "freq": 51,
+        "aenergy": {
+            "total": 3195.88,
+            "by_minute": [
+                0,
+                0,
+                0
+            ],
+            "minute_ts": 1727857620
+        },
+        "ret_aenergy": {
+            "total": 0,
+            "by_minute": [
+                0,
+                0,
+                0
+            ],
+            "minute_ts": 1727857620
+        }
+    },
+    # [..]
+}
+
+
+def test_counter_shelly_minipm_g3(monkeypatch, requests_mock: requests_mock.mock):
+    mock_counter_value_store = Mock()
+    monkeypatch.setattr(counter, "get_counter_value_store", Mock(return_value=mock_counter_value_store))
+    requests_mock.get(f"http://{SAMPLE_IP}/rpc/Shelly.GetStatus", json=DATA_MINPM_G3)
+    mock_counter_value_store = Mock()
+    monkeypatch.setattr(counter, "get_counter_value_store", Mock(return_value=mock_counter_value_store))
+    c = counter.ShellyCounter(0, ShellyCounterSetup(), SAMPLE_IP, 1, 2)
+
+    # execution
+    c.update()
+
+    # evaluation
+    assert vars(mock_counter_value_store.set.call_args[0][0]) == vars(SAMPLE_COUNTER_STATE)
+
+
+SAMPLE_COUNTER_STATE = CounterState(voltages=[230.9, 0, 0], power=230, currents=[
+                                    1, 0, 0], frequency=51, imported=100, exported=200)

From 00b3ffa0be5116fe500e8fed97b42eb26d79fa47 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 8 Oct 2024 10:34:26 +0200
Subject: [PATCH 109/205] create_device for SolarEdge (#1917)

* SE

* draft SE

* create_device for SolarEdge

* fix

* fix

* logging
---
 .../devices/solaredge/solaredge/device.py     | 353 +++++-------------
 .../solaredge/solaredge/device_test.py        |   8 +-
 2 files changed, 88 insertions(+), 273 deletions(-)

diff --git a/packages/modules/devices/solaredge/solaredge/device.py b/packages/modules/devices/solaredge/solaredge/device.py
index b3acd30cbd..305e7f352a 100644
--- a/packages/modules/devices/solaredge/solaredge/device.py
+++ b/packages/modules/devices/solaredge/solaredge/device.py
@@ -1,30 +1,17 @@
 #!/usr/bin/env python3
 import logging
-from operator import add
-from statistics import mean
-import time
-from typing import Dict, Iterable, Tuple, Union, Optional, List
-from urllib3.util import parse_url
+from typing import Iterable, Union, List
 
-from dataclass_utils import dataclass_from_dict
-from helpermodules.cli import run_using_positional_cli_args
 from modules.common import modbus
-from modules.common.abstract_device import AbstractDevice, DeviceDescriptor
-from modules.common.component_context import MultiComponentUpdateContext, SingleComponentUpdateContext
-from modules.common.component_state import BatState, InverterState
-from modules.common.fault_state import ComponentInfo
-from modules.common.store import get_inverter_value_store, get_bat_value_store
-from modules.devices.solaredge.solaredge import bat, counter, external_inverter, inverter
+from modules.common.abstract_device import DeviceDescriptor
+from modules.common.component_context import SingleComponentUpdateContext
+from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater
 from modules.devices.solaredge.solaredge.bat import SolaredgeBat
 from modules.devices.solaredge.solaredge.counter import SolaredgeCounter
 from modules.devices.solaredge.solaredge.external_inverter import SolaredgeExternalInverter
 from modules.devices.solaredge.solaredge.inverter import SolaredgeInverter
-from modules.devices.solaredge.solaredge.config import (Solaredge, SolaredgeBatConfiguration, SolaredgeBatSetup,
-                                                        SolaredgeConfiguration,
-                                                        SolaredgeCounterConfiguration, SolaredgeCounterSetup,
-                                                        SolaredgeExternalInverterConfiguration,
-                                                        SolaredgeExternalInverterSetup,
-                                                        SolaredgeInverterConfiguration, SolaredgeInverterSetup)
+from modules.devices.solaredge.solaredge.config import (Solaredge, SolaredgeBatSetup, SolaredgeCounterSetup,
+                                                        SolaredgeExternalInverterSetup, SolaredgeInverterSetup)
 from modules.devices.solaredge.solaredge.meter import SolaredgeMeterRegisters
 
 log = logging.getLogger(__name__)
@@ -36,257 +23,85 @@
 reconnect_delay = 1.2
 
 
-class Device(AbstractDevice):
-    COMPONENT_TYPE_TO_CLASS = {
-        "bat": SolaredgeBat,
-        "counter": SolaredgeCounter,
-        "inverter": SolaredgeInverter,
-        "external_inverter": SolaredgeExternalInverter
-    }
-
-    def __init__(self, device_config: Union[Dict, Solaredge]) -> None:
-        self.components = {}  # type: Dict[str, solaredge_component_classes]
-        try:
-            self.device_config = dataclass_from_dict(Solaredge, device_config)
-            self.client = modbus.ModbusTcpClient_(self.device_config.configuration.ip_address,
-                                                  self.device_config.configuration.port,
-                                                  reconnect_delay=reconnect_delay)
-            self.inverter_counter = 0
-        except Exception:
-            log.exception("Fehler im Modul "+self.device_config.name)
-
-    def add_component(self,
-                      component_config:  Union[dict,
-                                               SolaredgeBatSetup,
-                                               SolaredgeCounterSetup,
-                                               SolaredgeExternalInverterSetup,
-                                               SolaredgeInverterSetup]) -> None:
-        if isinstance(component_config, Dict):
-            component_type = component_config["type"]
-        else:
-            component_type = component_config.type
-        component_config = dataclass_from_dict(COMPONENT_TYPE_TO_MODULE[
-            component_type].component_descriptor.configuration_factory, component_config)
-        if component_type in self.COMPONENT_TYPE_TO_CLASS:
-            self.components["component"+str(component_config.id)] = (self.COMPONENT_TYPE_TO_CLASS[component_type](
-                self.device_config.id, component_config, self.client))
-            if component_type == "inverter" or component_type == "external_inverter":
-                self.inverter_counter += 1
-            # try:
-            #     # ToDo: convert to String
-            #     manufacturer = self.client.read_holding_registers(40004, [modbus.ModbusDataType.UINT_32]*8,
-            #                                                       unit=component_config.configuration.modbus_id)
-            #     # ToDo: convert to String
-            #     model = self.client.read_holding_registers(40020, [modbus.ModbusDataType.UINT_32]*8,
-            #                                                unit=component_config.configuration.modbus_id)
-            #     # ToDo: convert to String
-            #     version = self.client.read_holding_registers(40044, [modbus.ModbusDataType.UINT_16]*8,
-            #                                                  unit=component_config.configuration.modbus_id)
-            #     serial_number = self.client.read_holding_registers(40052, [modbus.ModbusDataType.UINT_32]*8,
-            #                                                        unit=component_config.configuration.modbus_id)
-            #     log.debug("Version: " + str(version))
-            # except Exception as e:
-            #     log.exception("Fehler beim Auslesen der Modbus-Register: " + str(e))
-            #     pass
-            if (self.client.read_holding_registers(40121, modbus.ModbusDataType.UINT_16,
-                                                   unit=component_config.configuration.modbus_id
-                                                   ) == synergy_unit_identifier and
-                    (component_type == "external_inverter" or component_type == "counter")):
-                # Snyergy-Units vom Haupt-WR des angeschlossenen Meters ermitteln. Es kann mehrere Haupt-WR mit
-                # # unterschiedlichen Modbus-IDs im Verbund geben.
-                log.debug("Synergy Units supported")
-                synergy_units = int(self.client.read_holding_registers(
-                    40129, modbus.ModbusDataType.UINT_16,
-                    unit=component_config.configuration.modbus_id)) or 1
-                log.debug("Synergy Units detected: %s", synergy_units)
-                self.set_component_registers(self.components.values(), synergy_units)
-        else:
-            raise Exception(
-                "illegal component type " + component_type + ". Allowed values: " +
-                ','.join(self.COMPONENT_TYPE_TO_CLASS.keys())
-            )
-
-    @staticmethod
-    def set_component_registers(components: Iterable[solaredge_component_classes], synergy_units: int) -> None:
-        meters = [None]*3  # type: List[Union[SolaredgeExternalInverter, SolaredgeCounter, None]]
-        for component in components:
-            if isinstance(component, (SolaredgeExternalInverter, SolaredgeCounter)):
-                meters[component.component_config.configuration.meter_id-1] = component
-
-        # https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note.pdf:
-        # Only enabled meters are readable, i.e. if meter 1 and 3 are enabled, they are readable as 1st meter and 2nd
-        # meter (and the 3rd meter isn't readable).
-        for meter_id, meter in enumerate(filter(None, meters), start=1):
+def set_component_registers(components: Iterable[solaredge_component_classes],
+                            synergy_units: int,
+                            modbus_id: int) -> None:
+    meters: List[Union[SolaredgeExternalInverter, SolaredgeCounter, None]] = [None]*3
+    for component in components:
+        if (isinstance(component, (SolaredgeExternalInverter, SolaredgeCounter)) and
+                component.component_config.configuration.modbus_id == modbus_id):
+            # Registerverschibung nur für Komponenten mit gleicher Modbus-ID, da diese am gleichen Haupt-WR hängen und
+            # die gleichen Synergy-Units haben.
+            meters[component.component_config.configuration.meter_id-1] = component
+
+    # https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note.pdf:
+    # Only enabled meters are readable, i.e. if meter 1 and 3 are enabled, they are readable as 1st meter and 2nd
+    # meter (and the 3rd meter isn't readable).
+    for meter_id, meter in enumerate(filter(None, meters), start=1):
+        log.debug(
+            "%s: internal meter id: %d, synergy units: %s", meter.component_config.name, meter_id, synergy_units
+        )
+        meter.registers = SolaredgeMeterRegisters(meter_id, synergy_units)
+
+
+def create_device(device_config: Solaredge):
+    def create_bat_component(component_config: SolaredgeBatSetup):
+        return SolaredgeBat(device_config.id, component_config, client)
+
+    def create_counter_component(component_config: SolaredgeCounterSetup):
+        nonlocal device
+        synergy_units = get_synergy_units(component_config)
+        set_component_registers(device.components.values(), synergy_units, component_config.configuration.modbus_id)
+        return SolaredgeCounter(device_config.id, component_config, client)
+
+    def create_inverter_component(component_config: SolaredgeInverterSetup):
+        return SolaredgeInverter(device_config.id, component_config, client)
+
+    def create_external_inverter_component(component_config: SolaredgeExternalInverterSetup):
+        nonlocal device
+        synergy_units = get_synergy_units(component_config)
+        set_component_registers(device.components.values(), synergy_units, component_config.configuration.modbus_id)
+        return SolaredgeExternalInverter(device_config.id, component_config, client)
+
+    def update_components(components: Iterable[Union[SolaredgeBat, SolaredgeCounter, SolaredgeInverter]]):
+        with client:
+            for component in components:
+                with SingleComponentUpdateContext(component.fault_state):
+                    component.update()
+
+    def get_synergy_units(component_config: Union[SolaredgeBatSetup,
+                                                  SolaredgeCounterSetup,
+                                                  SolaredgeInverterSetup,
+                                                  SolaredgeExternalInverterSetup]) -> None:
+        if client.read_holding_registers(40121, modbus.ModbusDataType.UINT_16,
+                                         unit=component_config.configuration.modbus_id
+                                         ) == synergy_unit_identifier:
+            # Snyergy-Units vom Haupt-WR des angeschlossenen Meters ermitteln. Es kann mehrere Haupt-WR mit
+            # unterschiedlichen Modbus-IDs im Verbund geben.
+            log.debug("Synergy Units supported")
+            synergy_units = int(client.read_holding_registers(
+                40129, modbus.ModbusDataType.UINT_16,
+                unit=component_config.configuration.modbus_id)) or 1
             log.debug(
-                "%s: internal meter id: %d, synergy units: %s", meter.component_config.name, meter_id, synergy_units
-            )
-            meter.registers = SolaredgeMeterRegisters(meter_id, synergy_units)
-
-    def update(self) -> None:
-        log.debug("Start device reading " + str(self.components))
-        if self.components:
-            with MultiComponentUpdateContext(self.components):
-                with self.client:
-                    for component in self.components:
-                        # Auch wenn bei einer Komponente ein Fehler auftritt, sollen alle anderen noch ausgelesen
-                        # werden.
-                        with SingleComponentUpdateContext(self.components[component].fault_state):
-                            self.components[component].update()
-        else:
-            log.warning(
-                self.device_config.name +
-                ": Es konnten keine Werte gelesen werden, da noch keine Komponenten konfiguriert wurden."
-            )
-
-
-COMPONENT_TYPE_TO_MODULE = {
-    "bat": bat,
-    "counter": counter,
-    "external_inverter": external_inverter,
-    "inverter": inverter
-}
-
-
-def read_legacy(component_type: str,
-                ip_address: str,
-                port: str,
-                slave_id0: str,
-                slave_id1: Optional[str] = None,
-                slave_id2: Optional[str] = None,
-                slave_id3: Optional[str] = None,
-                batwrsame: Optional[int] = None,
-                extprodakt: Optional[int] = None,
-                zweiterspeicher: Optional[int] = None,
-                subbat: Optional[int] = None,
-                ip2address: Optional[str] = None,
-                num: Optional[int] = None) -> None:
-    def get_bat_state() -> Tuple[List, BatState]:
-        def create_bat(modbus_id: int) -> bat.SolaredgeBat:
-            component_config = SolaredgeBatSetup(id=num,
-                                                 configuration=SolaredgeBatConfiguration(modbus_id=modbus_id))
-            return bat.SolaredgeBat(dev.device_config.id, component_config, dev.client)
-        bats = [create_bat(int(slave_id0))]
-        if zweiterspeicher == 1:
-            bats.append(create_bat(int(slave_id1)))
-        soc_bat, power_bat = [], []
-        for battery in bats:
-            power, soc = battery.get_values()
-            power_bat.append(power)
-            soc_bat.append(soc)
-        imported, exported = bats[0].get_imported_exported(sum(power_bat))
-        return power_bat, BatState(power=sum(power_bat), soc=mean(soc_bat), imported=imported, exported=exported)
-
-    def get_external_inverter_state(dev: Device, id: int) -> InverterState:
-        component_config = SolaredgeExternalInverterSetup(id=num,
-                                                          configuration=SolaredgeExternalInverterConfiguration(
-                                                              modbus_id=id))
-
-        ext_inverter = SolaredgeExternalInverter(
-            dev.device_config.id, component_config, dev.client)
-        return ext_inverter.read_state()
-
-    def create_inverter(modbus_id: int) -> SolaredgeInverter:
-        component_config = SolaredgeInverterSetup(id=num,
-                                                  configuration=SolaredgeInverterConfiguration(modbus_id=modbus_id))
-        return SolaredgeInverter(dev.device_config.id, component_config, dev.client)
-
-    log.debug("Solaredge IP: "+ip_address+":"+str(port))
-    log.debug("Solaredge Slave-IDs: ["+str(slave_id0)+", "+str(slave_id1)+", "+str(slave_id2)+", "+str(slave_id3)+"]")
-    log.debug("Solaredge Bat-WR-gleiche IP: "+str(batwrsame)+", Externer WR: "+str(extprodakt) +
-              ", 2. Speicher: "+str(zweiterspeicher)+", Speicherleistung subtrahieren: "+str(subbat)+" 2. IP: " +
-              str(ip2address)+", Num: "+str(num))
-
-    if port == "":
-        parsed_url = parse_url(ip_address)
-        ip_address = parsed_url.hostname
-        if parsed_url.port:
-            port = parsed_url.port
-        else:
-            port = 502
-    dev = Device(Solaredge(configuration=SolaredgeConfiguration(ip_address=ip_address, port=int(port))))
-    if component_type == "counter":
-        dev.add_component(SolaredgeCounterSetup(
-            id=num, configuration=SolaredgeCounterConfiguration(modbus_id=int(slave_id0))))
-        log.debug('Solaredge ModbusID: ' + str(slave_id0))
-        dev.update()
-    elif component_type == "inverter":
-        if ip2address == "none":
-            modbus_ids = list(map(int,
-                                  filter(lambda id: id.isnumeric(),
-                                         [slave_id0, slave_id1, slave_id2, slave_id3])))
-            inverters = [create_inverter(modbus_id) for modbus_id in modbus_ids]
-            with SingleComponentUpdateContext(inverters[0].component_info):
-                total_power = 0
-                total_energy = 0
-                total_currents = [0.0]*3
-                with dev.client:
-                    for inv in inverters:
-                        state = inv.read_state()
-                        if state.dc_power == 0:
-                            total_power += 0
-                        else:
-                            total_power += state.power
-                        total_energy += state.exported
-                        total_currents = list(map(add, total_currents, state.currents))
-
-                    if extprodakt:
-                        external_inv_power = get_external_inverter_state(dev, int(slave_id0)).power
-                        total_power += external_inv_power
-                    else:
-                        external_inv_power = 0
-
-                    if batwrsame == 1:
-                        bat_power, bat_state = get_bat_state()
-                        # WR-Leistung nur anpassen, wenn die Ladeleistung des Speichers PV-Leistung ist, dh am WR muss
-                        # DC-seitig Leistung anliegen. Der Speicher wird auch aus dem Netz geladen, um einen
-                        # Mindest-SoC zu halten.
-                        # Wenn ein weiterer WR über ein Smartmeter angeschlossen ist, kann der Speicher auch über
-                        # diesen geladen werden.
-                        if state.dc_power is None or state.dc_power <= 0 or external_inv_power < 0:
-                            if subbat == 1:
-                                total_power -= sum(min(p, 0) for p in bat_power)
-                            else:
-                                total_power -= sum(bat_power)
-                        total_energy = total_energy + bat_state.imported - bat_state.exported
-                if batwrsame == 1:
-                    get_bat_value_store(1).set(bat_state)
-                get_inverter_value_store(num).set(InverterState(exported=total_energy,
-                                                                power=min(0, total_power), currents=total_currents))
-        else:
-            inv = create_inverter(int(slave_id0))
-            with SingleComponentUpdateContext(inv.component_info):
-                with dev.client:
-                    state = inv.read_state()
-                    total_power = state.power
-                    total_energy = state.exported
-
-                    if batwrsame == 1:
-                        zweiterspeicher = 0
-                        bat_power, bat_state = get_bat_state()
-                        if state.dc_power is None or state.dc_power <= 0:
-                            total_power -= sum(bat_power)
-                        total_energy = total_energy + bat_state.imported - bat_state.exported
-                        get_bat_value_store(1).set(bat_state)
-                device_config = Solaredge(configuration=SolaredgeConfiguration(ip_address=ip2address))
-                dev = Device(device_config)
-                inv = create_inverter(int(slave_id0))
-                with dev.client:
-                    state = inv.read_state()
-                    total_power += state.power
-                    total_energy += state.exported
-                    if extprodakt:
-                        state = get_external_inverter_state(dev, int(slave_id0))
-                        total_power += state.power
-                get_inverter_value_store(num).set(InverterState(exported=total_energy, power=total_power))
-        time.sleep(reconnect_delay)
-
-    elif component_type == "bat":
-        with SingleComponentUpdateContext(ComponentInfo(0, "Solaredge Speicher", "bat")):
-            get_bat_value_store(1).set(get_bat_state()[1])
-
-
-def main(argv: List[str]):
-    run_using_positional_cli_args(read_legacy, argv)
+                f"Synergy Units detected for Modbus ID {component_config.configuration.modbus_id}: {synergy_units}")
+            return synergy_units
+    try:
+        client = modbus.ModbusTcpClient_(device_config.configuration.ip_address,
+                                         device_config.configuration.port,
+                                         reconnect_delay=reconnect_delay)
+        device = ConfigurableDevice(
+            device_config=device_config,
+            component_factory=ComponentFactoryByType(
+                bat=create_bat_component,
+                counter=create_counter_component,
+                external_inverter=create_external_inverter_component,
+                inverter=create_inverter_component,
+            ),
+            component_updater=MultiComponentUpdater(update_components)
+        )
+    except Exception:
+        log.exception("Fehler in create_device")
+    return device
 
 
 device_descriptor = DeviceDescriptor(configuration_factory=Solaredge)
diff --git a/packages/modules/devices/solaredge/solaredge/device_test.py b/packages/modules/devices/solaredge/solaredge/device_test.py
index cded2425d1..5547a1f598 100644
--- a/packages/modules/devices/solaredge/solaredge/device_test.py
+++ b/packages/modules/devices/solaredge/solaredge/device_test.py
@@ -33,12 +33,12 @@ def test_set_component_registers_assigns_effective_meter_ids(monkeypatch, params
         device, "SolaredgeMeterRegisters", Mock(side_effect=lambda internal_meter_id, _: internal_meter_id)
     )
     components_list = [
-        Mock(spec=SolaredgeCounter, component_config=Mock(configuration=Mock(meter_id=meter_id)))
+        Mock(spec=SolaredgeCounter, component_config=Mock(configuration=Mock(meter_id=meter_id, modbus_id=1)))
         for meter_id in params.configured_meter_ids
     ]
 
     # execution
-    device.Device.set_component_registers(components_list, synergy_units=1)
+    device.set_component_registers(components_list, synergy_units=1, modbus_id=1)
 
     # evaluation
     assert [component.registers for component in components_list] == params.effective_meter_ids
@@ -55,10 +55,10 @@ def test_set_component_registers_ignores_wrong_types(monkeypatch, type: Type, sh
     monkeypatch.setattr(
         device, "SolaredgeMeterRegisters", Mock(side_effect=lambda *args: True)
     )
-    components = [Mock(spec=type, component_config=Mock(configuration=Mock(meter_id=1)))
+    components = [Mock(spec=type, component_config=Mock(configuration=Mock(meter_id=1, modbus_id=1)))
                   ]
     # execution
-    device.Device.set_component_registers(components, synergy_units=1)
+    device.set_component_registers(components, synergy_units=1, modbus_id=1)
 
     # evaluation
     assert hasattr(components[0], "registers") == should_use

From b01c6e34ca5cc2a046f01dbad2e7f0ecfd00bda1 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 8 Oct 2024 15:16:06 +0200
Subject: [PATCH 110/205] fix pv  charging - submode instant charging for less
 charging evs (#1922)

---
 packages/control/algorithm/surplus_controlled.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py
index 1661947791..4897ad6c86 100644
--- a/packages/control/algorithm/surplus_controlled.py
+++ b/packages/control/algorithm/surplus_controlled.py
@@ -107,7 +107,9 @@ def _limit_adjust_current(self, chargepoint: Chargepoint, new_current: float) ->
                     current = max(chargepoint.data.get.currents) + MAX_CURRENT
                     msg = "Es darf um max 5A über den aktuell genutzten Strom geregelt werden."
             chargepoint.set_state_and_log(msg)
-            return max(current, chargepoint.data.control_parameter.min_current)
+            return max(current,
+                       chargepoint.data.control_parameter.min_current,
+                       chargepoint.data.set.target_current)
 
     def _fix_deviating_evse_current(self, limited_current, chargepoint: Chargepoint) -> float:
         """Wenn Autos nicht die volle Ladeleistung nutzen, wird unnötig eingespeist. Dann kann um den noch nicht

From 51dd536a039779b7a641559fbe3404b1b5d7ced5 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 8 Oct 2024 16:50:06 +0200
Subject: [PATCH 111/205] build UI (#1923)

---
 .../assets/{ChargeLog-a730dd70.js => ChargeLog-0789f309.js}     | 2 +-
 ...allation-8dff21bc.js => ChargePointInstallation-2f136eb7.js} | 2 +-
 web/settings/assets/{Chart-19a9b222.js => Chart-f906208b.js}    | 2 +-
 .../assets/{CloudConfig-595194ca.js => CloudConfig-b33b0184.js} | 2 +-
 .../{DataManagement-b9730b64.js => DataManagement-1fb1197d.js}  | 2 +-
 .../assets/{DebugConfig-d1261f2b.js => DebugConfig-6d0524fc.js} | 2 +-
 ...ChargeConfig-f6ca097b.js => GeneralChargeConfig-764e9a8c.js} | 2 +-
 .../{GeneralConfig-1c49e709.js => GeneralConfig-1687a15a.js}    | 2 +-
 ...nstallation-70f156e6.js => HardwareInstallation-d2c0f1d5.js} | 2 +-
 ...nstallAssistant-6d2c34f9.js => InstallAssistant-a3c80ad1.js} | 2 +-
 ...stantStep0-3ae5776e.js => InstallAssistantStep0-500a8cc5.js} | 2 +-
 ...stantStep1-f2cb69f1.js => InstallAssistantStep1-6470c726.js} | 2 +-
 ...antStep10-6a0bfe8b.js => InstallAssistantStep10-3d5ac094.js} | 2 +-
 ...stantStep2-116b498f.js => InstallAssistantStep2-12a3f7a8.js} | 2 +-
 ...stantStep3-b44c543e.js => InstallAssistantStep3-c7995cbc.js} | 2 +-
 ...stantStep4-ca57a396.js => InstallAssistantStep4-19fe0142.js} | 2 +-
 ...stantStep5-2a886f5d.js => InstallAssistantStep5-cd0d6d73.js} | 2 +-
 ...stantStep6-25f8b1a2.js => InstallAssistantStep6-63d131ad.js} | 2 +-
 ...stantStep7-be0e6887.js => InstallAssistantStep7-c6d28ec8.js} | 2 +-
 ...stantStep8-5bb0860d.js => InstallAssistantStep8-5cdd309f.js} | 2 +-
 ...stantStep9-af2ff378.js => InstallAssistantStep9-73a6b1e1.js} | 2 +-
 ...ate-3c026c08.js => InstallAssistantStepTemplate-cfe72ae0.js} | 2 +-
 ...ChargeConfig-61c4fd49.js => InstantChargeConfig-d5bb57b3.js} | 2 +-
 .../{LegalSettings-ddd5b296.js => LegalSettings-acbf6750.js}    | 2 +-
 web/settings/assets/LoadManagementConfig-269dec5d.js            | 1 +
 web/settings/assets/LoadManagementConfig-da717df7.js            | 1 -
 ...qttBridgeConfig-2e7d7922.js => MqttBridgeConfig-b791fa6d.js} | 2 +-
 ...nalComponents-36fd698f.js => OptionalComponents-4c7d75e4.js} | 2 +-
 .../{PVChargeConfig-13001890.js => PVChargeConfig-3a73cba8.js}  | 2 +-
 ...argeConfig-6a548cac.js => ScheduledChargeConfig-76a4970c.js} | 2 +-
 web/settings/assets/{Status-bc2c7d27.js => Status-f4fe35a1.js}  | 2 +-
 .../assets/{Support-a91e414e.js => Support-e285335a.js}         | 2 +-
 web/settings/assets/{System-aff61250.js => System-83bb0533.js}  | 2 +-
 .../{TestingStore-c3e1bdb5.js => TestingStore-935625ae.js}      | 2 +-
 ...imeChargeConfig-9d481afa.js => TimeChargeConfig-af2bcfdc.js} | 2 +-
 .../{VehicleConfig-e8ea05c9.js => VehicleConfig-9a14b719.js}    | 2 +-
 .../{backup_cloud-b3e9e685.js => backup_cloud-04652ce0.js}      | 2 +-
 .../{backup_cloud-5feeb3e2.js => backup_cloud-6fe765b0.js}      | 2 +-
 .../{backup_cloud-fd1d0158.js => backup_cloud-9329a99f.js}      | 2 +-
 .../{backup_cloud-13d4bee8.js => backup_cloud-a666a458.js}      | 2 +-
 web/settings/assets/{bat-bb33d730.js => bat-0bafcbc8.js}        | 2 +-
 web/settings/assets/{bat-99d6a6cb.js => bat-0bb8df4a.js}        | 2 +-
 web/settings/assets/{bat-12daed7b.js => bat-10d75798.js}        | 2 +-
 web/settings/assets/{bat-c64928d7.js => bat-15e6188c.js}        | 2 +-
 web/settings/assets/{bat-840118d9.js => bat-22c07366.js}        | 2 +-
 web/settings/assets/{bat-61eea3a5.js => bat-22feb1cd.js}        | 2 +-
 web/settings/assets/{bat-bdfaf1f4.js => bat-39076628.js}        | 2 +-
 web/settings/assets/{bat-baab6c7d.js => bat-59db0757.js}        | 2 +-
 web/settings/assets/{bat-426bdd63.js => bat-6d0ee218.js}        | 2 +-
 web/settings/assets/{bat-9d9a67fb.js => bat-7406ff4b.js}        | 2 +-
 web/settings/assets/{bat-ab8d4880.js => bat-8e9d3a0e.js}        | 2 +-
 web/settings/assets/{bat-f044ae56.js => bat-98bc85c9.js}        | 2 +-
 web/settings/assets/{bat-a28914e4.js => bat-9d704a63.js}        | 2 +-
 web/settings/assets/{bat-3b4b20a7.js => bat-aa42df8b.js}        | 2 +-
 web/settings/assets/{bat-328595a8.js => bat-cf017b63.js}        | 2 +-
 web/settings/assets/{bat-bae92296.js => bat-dfa51acd.js}        | 2 +-
 web/settings/assets/{bat-ba2e5e6b.js => bat-e0e00bd8.js}        | 2 +-
 web/settings/assets/{bat-a74943cb.js => bat-f3f3bffc.js}        | 2 +-
 web/settings/assets/{bat-9d6be7fa.js => bat-f5f1c5c9.js}        | 2 +-
 web/settings/assets/{bat-80f0d2f4.js => bat-fedfab16.js}        | 2 +-
 ...at_smart_energy-999a65de.js => bat_smart_energy-1b4c5bcf.js} | 2 +-
 .../assets/{chargePoint-a02180ae.js => chargePoint-068c7cfc.js} | 2 +-
 .../assets/{chargePoint-112ccae9.js => chargePoint-31a8d3d7.js} | 2 +-
 .../assets/{chargePoint-f1ada5d6.js => chargePoint-4fed3886.js} | 2 +-
 .../assets/{chargePoint-52b6ceee.js => chargePoint-7134b65e.js} | 2 +-
 .../assets/{chargePoint-7fec8739.js => chargePoint-ab593928.js} | 2 +-
 .../assets/{chargePoint-468fc8e7.js => chargePoint-d4764ca1.js} | 2 +-
 .../assets/{chargePoint-3babeeb9.js => chargePoint-db08669e.js} | 2 +-
 .../assets/{commands-62da4db2.js => commands-0379c262.js}       | 2 +-
 ...tion_counter-c6d1b3df.js => consumption_counter-fffff7c1.js} | 2 +-
 .../assets/{counter-7fca39df.js => counter-037dab68.js}         | 2 +-
 .../assets/{counter-dc002a5d.js => counter-05d801d4.js}         | 2 +-
 .../assets/{counter-ec9f9982.js => counter-070b14da.js}         | 2 +-
 .../assets/{counter-8af15294.js => counter-2e059c6b.js}         | 2 +-
 .../assets/{counter-321d3599.js => counter-2f4a0c2e.js}         | 2 +-
 .../assets/{counter-38172dbc.js => counter-34270a43.js}         | 2 +-
 .../assets/{counter-68a2bd86.js => counter-3806cc52.js}         | 2 +-
 .../assets/{counter-116a65cb.js => counter-39926bb3.js}         | 2 +-
 .../assets/{counter-cda681c6.js => counter-49efe9fc.js}         | 2 +-
 .../assets/{counter-f74d8989.js => counter-52e01218.js}         | 2 +-
 .../assets/{counter-3942ce7f.js => counter-58c72dcf.js}         | 2 +-
 .../assets/{counter-4498494c.js => counter-58ed9d65.js}         | 2 +-
 .../assets/{counter-4410dc4e.js => counter-6f3afe9b.js}         | 2 +-
 .../assets/{counter-02712182.js => counter-8a7db35e.js}         | 2 +-
 .../assets/{counter-7bf5aea7.js => counter-95f05d0c.js}         | 2 +-
 .../assets/{counter-9b6e8dff.js => counter-a116f5da.js}         | 2 +-
 .../assets/{counter-b0f78c7c.js => counter-a81ba2a4.js}         | 2 +-
 .../assets/{counter-50d0810f.js => counter-aa0a6d0b.js}         | 2 +-
 .../assets/{counter-b3f26d9d.js => counter-ad28ae65.js}         | 2 +-
 .../assets/{counter-55fd6368.js => counter-b3fc64c6.js}         | 2 +-
 .../assets/{counter-bc776e4a.js => counter-ba8a04c3.js}         | 2 +-
 .../assets/{counter-86f04938.js => counter-c0af0a6f.js}         | 2 +-
 .../assets/{counter-277eabf6.js => counter-c3082628.js}         | 2 +-
 .../assets/{counter-e6014599.js => counter-c51eaa64.js}         | 2 +-
 .../assets/{counter-bff0132e.js => counter-c6427879.js}         | 2 +-
 .../assets/{counter-9fcc4ae5.js => counter-c81118fb.js}         | 2 +-
 .../assets/{counter-865f9c61.js => counter-cc4b4212.js}         | 2 +-
 .../assets/{counter-8757edbf.js => counter-e25a696d.js}         | 2 +-
 .../assets/{counter-7a3ba47e.js => counter-e64707f3.js}         | 2 +-
 .../assets/{counter-46612257.js => counter-e6bce9f3.js}         | 2 +-
 .../assets/{counter-c8cb4ab4.js => counter-e88fdbc7.js}         | 2 +-
 .../assets/{counter-9ff0cd5b.js => counter-edc80b67.js}         | 2 +-
 .../assets/{counter_sm-46c91fda.js => counter_sm-187d65ee.js}   | 2 +-
 web/settings/assets/{device-1a463b8a.js => device-001cee36.js}  | 2 +-
 web/settings/assets/{device-70dec769.js => device-050e3366.js}  | 2 +-
 web/settings/assets/{device-a159510e.js => device-0ab7f57f.js}  | 2 +-
 web/settings/assets/{device-ac3617bf.js => device-0d76517c.js}  | 2 +-
 web/settings/assets/{device-2fe61a6a.js => device-1b2872e2.js}  | 2 +-
 web/settings/assets/{device-87e58e62.js => device-1b821174.js}  | 2 +-
 web/settings/assets/{device-e9766b50.js => device-1e1551ac.js}  | 2 +-
 web/settings/assets/{device-b14a6820.js => device-1e35dcd3.js}  | 2 +-
 web/settings/assets/{device-939b0ad1.js => device-1ffd2759.js}  | 2 +-
 web/settings/assets/{device-a018debc.js => device-29ca0508.js}  | 2 +-
 web/settings/assets/{device-51badd6c.js => device-336ae19f.js}  | 2 +-
 web/settings/assets/{device-8308249d.js => device-347eb6dc.js}  | 2 +-
 web/settings/assets/{device-c3ba2a50.js => device-39bf739d.js}  | 2 +-
 web/settings/assets/{device-2a6323de.js => device-3e6fa83c.js}  | 2 +-
 web/settings/assets/{device-5dc8caee.js => device-3f7e40af.js}  | 2 +-
 web/settings/assets/{device-2045e148.js => device-40022210.js}  | 2 +-
 web/settings/assets/{device-1eaab064.js => device-4a3195eb.js}  | 2 +-
 web/settings/assets/{device-b07f9cfe.js => device-4b1646f2.js}  | 2 +-
 web/settings/assets/{device-86c123c1.js => device-4edac0ac.js}  | 2 +-
 web/settings/assets/{device-f511f708.js => device-51c91be0.js}  | 2 +-
 web/settings/assets/{device-3ed84812.js => device-51fdec5d.js}  | 2 +-
 web/settings/assets/{device-53686a65.js => device-5286bf60.js}  | 2 +-
 web/settings/assets/{device-17812629.js => device-5431b4e2.js}  | 2 +-
 web/settings/assets/{device-fd700d8f.js => device-574dcaf4.js}  | 2 +-
 web/settings/assets/{device-d8584875.js => device-5762c828.js}  | 2 +-
 web/settings/assets/{device-2861d843.js => device-59c7355d.js}  | 2 +-
 web/settings/assets/{device-9f7025df.js => device-6aa72597.js}  | 2 +-
 web/settings/assets/{device-ee62c15a.js => device-6e3aa19a.js}  | 2 +-
 web/settings/assets/{device-7e1581b0.js => device-6f112981.js}  | 2 +-
 web/settings/assets/{device-d0fb85ca.js => device-6f239659.js}  | 2 +-
 web/settings/assets/{device-8d6c27df.js => device-713ce8f2.js}  | 2 +-
 web/settings/assets/{device-900bb2eb.js => device-7279ce38.js}  | 2 +-
 web/settings/assets/{device-44ac2d07.js => device-763ad7fc.js}  | 2 +-
 web/settings/assets/{device-823f72ad.js => device-79189826.js}  | 2 +-
 web/settings/assets/{device-d91bc952.js => device-7f1fc016.js}  | 2 +-
 web/settings/assets/{device-82e0acf7.js => device-80fee4ae.js}  | 2 +-
 web/settings/assets/{device-eed61bed.js => device-8432eab3.js}  | 2 +-
 web/settings/assets/{device-35c75ada.js => device-8548059a.js}  | 2 +-
 web/settings/assets/{device-ac5464c5.js => device-91630eed.js}  | 2 +-
 web/settings/assets/{device-436ab177.js => device-9653fe83.js}  | 2 +-
 web/settings/assets/{device-4992e86f.js => device-9b3e153b.js}  | 2 +-
 web/settings/assets/{device-37c8a5d7.js => device-9cbf003b.js}  | 2 +-
 web/settings/assets/{device-e7ac4171.js => device-a70f13a3.js}  | 2 +-
 web/settings/assets/{device-4cd875ee.js => device-afc129d5.js}  | 2 +-
 web/settings/assets/{device-44627252.js => device-b3c2779b.js}  | 2 +-
 web/settings/assets/{device-2812d314.js => device-b4913183.js}  | 2 +-
 web/settings/assets/{device-5860e973.js => device-bb1652e9.js}  | 2 +-
 web/settings/assets/{device-baaf93fc.js => device-bbbcf1a0.js}  | 2 +-
 web/settings/assets/{device-24fa8719.js => device-c47ac087.js}  | 2 +-
 web/settings/assets/{device-f8b42d98.js => device-cc94a449.js}  | 2 +-
 web/settings/assets/{device-7893f72c.js => device-d3b9bc22.js}  | 2 +-
 web/settings/assets/{device-cd05bdaa.js => device-d63e2264.js}  | 2 +-
 web/settings/assets/{device-a41c9f9a.js => device-d74903aa.js}  | 2 +-
 web/settings/assets/{device-b80563d5.js => device-d7bd2ff3.js}  | 2 +-
 web/settings/assets/{device-827098d6.js => device-df9c2f01.js}  | 2 +-
 web/settings/assets/{device-c3b4d8e4.js => device-e4ac8894.js}  | 2 +-
 web/settings/assets/{device-e77cad4b.js => device-f06b8715.js}  | 2 +-
 web/settings/assets/{device-752b4387.js => device-f0c7d4c8.js}  | 2 +-
 web/settings/assets/{device-282ac597.js => device-f655ceef.js}  | 2 +-
 web/settings/assets/{device-51cbfef1.js => device-f7f8ffe0.js}  | 2 +-
 web/settings/assets/{device-fe5fad52.js => device-fe891142.js}  | 2 +-
 web/settings/assets/{device-4696232a.js => device-ff6c0cb6.js}  | 2 +-
 .../{displayTheme-4083964b.js => displayTheme-bbed7095.js}      | 2 +-
 ...ricity_tariff-4bc01805.js => electricity_tariff-10566180.js} | 2 +-
 ...ricity_tariff-7b04b620.js => electricity_tariff-32db6a64.js} | 2 +-
 ...ricity_tariff-e23d6291.js => electricity_tariff-77492691.js} | 2 +-
 ...ricity_tariff-63a1e9ec.js => electricity_tariff-897c7196.js} | 2 +-
 ...ricity_tariff-5111f15f.js => electricity_tariff-eb995216.js} | 2 +-
 ...ernal_inverter-a76bfa79.js => external_inverter-04c9ce87.js} | 2 +-
 web/settings/assets/{index-f9fda857.js => index-c79666b6.js}    | 2 +-
 .../assets/{inverter-5f7aec52.js => inverter-098d4ce8.js}       | 2 +-
 .../assets/{inverter-287e8910.js => inverter-18c2474d.js}       | 2 +-
 .../assets/{inverter-fa1c29cd.js => inverter-323c3074.js}       | 2 +-
 .../assets/{inverter-e49c5d75.js => inverter-46c18816.js}       | 2 +-
 .../assets/{inverter-fa423cd0.js => inverter-475ea9be.js}       | 2 +-
 .../assets/{inverter-c38863be.js => inverter-4952d317.js}       | 2 +-
 .../assets/{inverter-3715b21d.js => inverter-4ae76a42.js}       | 2 +-
 .../assets/{inverter-1e6b58f6.js => inverter-4f43f74f.js}       | 2 +-
 .../assets/{inverter-70f78ef5.js => inverter-55ea35ce.js}       | 2 +-
 .../assets/{inverter-e10956ea.js => inverter-593f3daf.js}       | 2 +-
 .../assets/{inverter-bcc6d0d6.js => inverter-5ad18beb.js}       | 2 +-
 .../assets/{inverter-88d5ed46.js => inverter-5e9ec317.js}       | 2 +-
 .../assets/{inverter-b61011e2.js => inverter-5f9ef8bd.js}       | 2 +-
 .../assets/{inverter-48761201.js => inverter-6529a4df.js}       | 2 +-
 .../assets/{inverter-471fa6e9.js => inverter-6ea218d8.js}       | 2 +-
 .../assets/{inverter-57d15ff3.js => inverter-7d0a508c.js}       | 2 +-
 .../assets/{inverter-80f24f74.js => inverter-819b1a3e.js}       | 2 +-
 .../assets/{inverter-1529fe73.js => inverter-a17a2665.js}       | 2 +-
 .../assets/{inverter-eb5f339a.js => inverter-b4727f0c.js}       | 2 +-
 .../assets/{inverter-c29b676e.js => inverter-cda22a33.js}       | 2 +-
 .../assets/{inverter-36b2f4c7.js => inverter-cdd963f9.js}       | 2 +-
 .../assets/{inverter-6f84161c.js => inverter-ce0bf077.js}       | 2 +-
 .../assets/{inverter-da1db027.js => inverter-e0302839.js}       | 2 +-
 .../assets/{inverter-692fd261.js => inverter-e943d0ae.js}       | 2 +-
 .../assets/{inverter-2c898c0e.js => inverter-fb2c9952.js}       | 2 +-
 .../assets/{inverter-bdcf1a2f.js => inverter-fb3a6cad.js}       | 2 +-
 .../assets/{inverter-d29f4c1a.js => inverter-fd0dea3e.js}       | 2 +-
 ...ter_secondary-4a5d5bbc.js => inverter_secondary-8a48b565.js} | 2 +-
 ...receiver-432648b7.js => ripple_control_receiver-370883cc.js} | 2 +-
 ...receiver-8b00be72.js => ripple_control_receiver-7fecf9d6.js} | 2 +-
 .../assets/{vehicle-35b782fb.js => vehicle-02c16ede.js}         | 2 +-
 .../assets/{vehicle-caa88593.js => vehicle-04196ba5.js}         | 2 +-
 .../assets/{vehicle-a8092426.js => vehicle-227d6e52.js}         | 2 +-
 .../assets/{vehicle-635e6620.js => vehicle-2c8076de.js}         | 2 +-
 .../assets/{vehicle-ed5ef659.js => vehicle-2f0703d4.js}         | 2 +-
 .../assets/{vehicle-6dc5238d.js => vehicle-39d84738.js}         | 2 +-
 .../assets/{vehicle-4afffc4b.js => vehicle-5310b356.js}         | 2 +-
 .../assets/{vehicle-95222308.js => vehicle-5d3ddd96.js}         | 2 +-
 .../assets/{vehicle-cc94e01f.js => vehicle-66d2565b.js}         | 2 +-
 .../assets/{vehicle-4df6c138.js => vehicle-6bfa0331.js}         | 2 +-
 .../assets/{vehicle-ad06c8a7.js => vehicle-746a309e.js}         | 2 +-
 .../assets/{vehicle-81ee016b.js => vehicle-75a99dd5.js}         | 2 +-
 .../assets/{vehicle-022511d4.js => vehicle-79035ef3.js}         | 2 +-
 .../assets/{vehicle-693cb69a.js => vehicle-84631beb.js}         | 2 +-
 .../assets/{vehicle-317e6bfc.js => vehicle-98331362.js}         | 2 +-
 .../assets/{vehicle-38d89acf.js => vehicle-a7bdb9f9.js}         | 2 +-
 .../assets/{vehicle-cb0122fd.js => vehicle-b5d373a2.js}         | 2 +-
 .../assets/{vehicle-a9e07390.js => vehicle-e9771037.js}         | 2 +-
 web/settings/index.html                                         | 2 +-
 222 files changed, 221 insertions(+), 221 deletions(-)
 rename web/settings/assets/{ChargeLog-a730dd70.js => ChargeLog-0789f309.js} (99%)
 rename web/settings/assets/{ChargePointInstallation-8dff21bc.js => ChargePointInstallation-2f136eb7.js} (95%)
 rename web/settings/assets/{Chart-19a9b222.js => Chart-f906208b.js} (99%)
 rename web/settings/assets/{CloudConfig-595194ca.js => CloudConfig-b33b0184.js} (99%)
 rename web/settings/assets/{DataManagement-b9730b64.js => DataManagement-1fb1197d.js} (96%)
 rename web/settings/assets/{DebugConfig-d1261f2b.js => DebugConfig-6d0524fc.js} (98%)
 rename web/settings/assets/{GeneralChargeConfig-f6ca097b.js => GeneralChargeConfig-764e9a8c.js} (94%)
 rename web/settings/assets/{GeneralConfig-1c49e709.js => GeneralConfig-1687a15a.js} (98%)
 rename web/settings/assets/{HardwareInstallation-70f156e6.js => HardwareInstallation-d2c0f1d5.js} (69%)
 rename web/settings/assets/{InstallAssistant-6d2c34f9.js => InstallAssistant-a3c80ad1.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-3ae5776e.js => InstallAssistantStep0-500a8cc5.js} (95%)
 rename web/settings/assets/{InstallAssistantStep1-f2cb69f1.js => InstallAssistantStep1-6470c726.js} (89%)
 rename web/settings/assets/{InstallAssistantStep10-6a0bfe8b.js => InstallAssistantStep10-3d5ac094.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-116b498f.js => InstallAssistantStep2-12a3f7a8.js} (89%)
 rename web/settings/assets/{InstallAssistantStep3-b44c543e.js => InstallAssistantStep3-c7995cbc.js} (92%)
 rename web/settings/assets/{InstallAssistantStep4-ca57a396.js => InstallAssistantStep4-19fe0142.js} (92%)
 rename web/settings/assets/{InstallAssistantStep5-2a886f5d.js => InstallAssistantStep5-cd0d6d73.js} (93%)
 rename web/settings/assets/{InstallAssistantStep6-25f8b1a2.js => InstallAssistantStep6-63d131ad.js} (94%)
 rename web/settings/assets/{InstallAssistantStep7-be0e6887.js => InstallAssistantStep7-c6d28ec8.js} (93%)
 rename web/settings/assets/{InstallAssistantStep8-5bb0860d.js => InstallAssistantStep8-5cdd309f.js} (93%)
 rename web/settings/assets/{InstallAssistantStep9-af2ff378.js => InstallAssistantStep9-73a6b1e1.js} (91%)
 rename web/settings/assets/{InstallAssistantStepTemplate-3c026c08.js => InstallAssistantStepTemplate-cfe72ae0.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-61c4fd49.js => InstantChargeConfig-d5bb57b3.js} (96%)
 rename web/settings/assets/{LegalSettings-ddd5b296.js => LegalSettings-acbf6750.js} (97%)
 create mode 100644 web/settings/assets/LoadManagementConfig-269dec5d.js
 delete mode 100644 web/settings/assets/LoadManagementConfig-da717df7.js
 rename web/settings/assets/{MqttBridgeConfig-2e7d7922.js => MqttBridgeConfig-b791fa6d.js} (99%)
 rename web/settings/assets/{OptionalComponents-36fd698f.js => OptionalComponents-4c7d75e4.js} (98%)
 rename web/settings/assets/{PVChargeConfig-13001890.js => PVChargeConfig-3a73cba8.js} (99%)
 rename web/settings/assets/{ScheduledChargeConfig-6a548cac.js => ScheduledChargeConfig-76a4970c.js} (98%)
 rename web/settings/assets/{Status-bc2c7d27.js => Status-f4fe35a1.js} (99%)
 rename web/settings/assets/{Support-a91e414e.js => Support-e285335a.js} (99%)
 rename web/settings/assets/{System-aff61250.js => System-83bb0533.js} (98%)
 rename web/settings/assets/{TestingStore-c3e1bdb5.js => TestingStore-935625ae.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-9d481afa.js => TimeChargeConfig-af2bcfdc.js} (96%)
 rename web/settings/assets/{VehicleConfig-e8ea05c9.js => VehicleConfig-9a14b719.js} (95%)
 rename web/settings/assets/{backup_cloud-b3e9e685.js => backup_cloud-04652ce0.js} (92%)
 rename web/settings/assets/{backup_cloud-5feeb3e2.js => backup_cloud-6fe765b0.js} (96%)
 rename web/settings/assets/{backup_cloud-fd1d0158.js => backup_cloud-9329a99f.js} (86%)
 rename web/settings/assets/{backup_cloud-13d4bee8.js => backup_cloud-a666a458.js} (93%)
 rename web/settings/assets/{bat-bb33d730.js => bat-0bafcbc8.js} (81%)
 rename web/settings/assets/{bat-99d6a6cb.js => bat-0bb8df4a.js} (88%)
 rename web/settings/assets/{bat-12daed7b.js => bat-10d75798.js} (83%)
 rename web/settings/assets/{bat-c64928d7.js => bat-15e6188c.js} (90%)
 rename web/settings/assets/{bat-840118d9.js => bat-22c07366.js} (88%)
 rename web/settings/assets/{bat-61eea3a5.js => bat-22feb1cd.js} (94%)
 rename web/settings/assets/{bat-bdfaf1f4.js => bat-39076628.js} (87%)
 rename web/settings/assets/{bat-baab6c7d.js => bat-59db0757.js} (87%)
 rename web/settings/assets/{bat-426bdd63.js => bat-6d0ee218.js} (89%)
 rename web/settings/assets/{bat-9d9a67fb.js => bat-7406ff4b.js} (88%)
 rename web/settings/assets/{bat-ab8d4880.js => bat-8e9d3a0e.js} (87%)
 rename web/settings/assets/{bat-f044ae56.js => bat-98bc85c9.js} (89%)
 rename web/settings/assets/{bat-a28914e4.js => bat-9d704a63.js} (91%)
 rename web/settings/assets/{bat-3b4b20a7.js => bat-aa42df8b.js} (96%)
 rename web/settings/assets/{bat-328595a8.js => bat-cf017b63.js} (88%)
 rename web/settings/assets/{bat-bae92296.js => bat-dfa51acd.js} (87%)
 rename web/settings/assets/{bat-ba2e5e6b.js => bat-e0e00bd8.js} (88%)
 rename web/settings/assets/{bat-a74943cb.js => bat-f3f3bffc.js} (95%)
 rename web/settings/assets/{bat-9d6be7fa.js => bat-f5f1c5c9.js} (87%)
 rename web/settings/assets/{bat-80f0d2f4.js => bat-fedfab16.js} (83%)
 rename web/settings/assets/{bat_smart_energy-999a65de.js => bat_smart_energy-1b4c5bcf.js} (88%)
 rename web/settings/assets/{chargePoint-a02180ae.js => chargePoint-068c7cfc.js} (86%)
 rename web/settings/assets/{chargePoint-112ccae9.js => chargePoint-31a8d3d7.js} (90%)
 rename web/settings/assets/{chargePoint-f1ada5d6.js => chargePoint-4fed3886.js} (98%)
 rename web/settings/assets/{chargePoint-52b6ceee.js => chargePoint-7134b65e.js} (90%)
 rename web/settings/assets/{chargePoint-7fec8739.js => chargePoint-ab593928.js} (90%)
 rename web/settings/assets/{chargePoint-468fc8e7.js => chargePoint-d4764ca1.js} (86%)
 rename web/settings/assets/{chargePoint-3babeeb9.js => chargePoint-db08669e.js} (92%)
 rename web/settings/assets/{commands-62da4db2.js => commands-0379c262.js} (93%)
 rename web/settings/assets/{consumption_counter-c6d1b3df.js => consumption_counter-fffff7c1.js} (93%)
 rename web/settings/assets/{counter-7fca39df.js => counter-037dab68.js} (96%)
 rename web/settings/assets/{counter-dc002a5d.js => counter-05d801d4.js} (88%)
 rename web/settings/assets/{counter-ec9f9982.js => counter-070b14da.js} (87%)
 rename web/settings/assets/{counter-8af15294.js => counter-2e059c6b.js} (83%)
 rename web/settings/assets/{counter-321d3599.js => counter-2f4a0c2e.js} (87%)
 rename web/settings/assets/{counter-38172dbc.js => counter-34270a43.js} (92%)
 rename web/settings/assets/{counter-68a2bd86.js => counter-3806cc52.js} (92%)
 rename web/settings/assets/{counter-116a65cb.js => counter-39926bb3.js} (85%)
 rename web/settings/assets/{counter-cda681c6.js => counter-49efe9fc.js} (90%)
 rename web/settings/assets/{counter-f74d8989.js => counter-52e01218.js} (91%)
 rename web/settings/assets/{counter-3942ce7f.js => counter-58c72dcf.js} (85%)
 rename web/settings/assets/{counter-4498494c.js => counter-58ed9d65.js} (82%)
 rename web/settings/assets/{counter-4410dc4e.js => counter-6f3afe9b.js} (97%)
 rename web/settings/assets/{counter-02712182.js => counter-8a7db35e.js} (88%)
 rename web/settings/assets/{counter-7bf5aea7.js => counter-95f05d0c.js} (87%)
 rename web/settings/assets/{counter-9b6e8dff.js => counter-a116f5da.js} (89%)
 rename web/settings/assets/{counter-b0f78c7c.js => counter-a81ba2a4.js} (90%)
 rename web/settings/assets/{counter-50d0810f.js => counter-aa0a6d0b.js} (86%)
 rename web/settings/assets/{counter-b3f26d9d.js => counter-ad28ae65.js} (88%)
 rename web/settings/assets/{counter-55fd6368.js => counter-b3fc64c6.js} (87%)
 rename web/settings/assets/{counter-bc776e4a.js => counter-ba8a04c3.js} (89%)
 rename web/settings/assets/{counter-86f04938.js => counter-c0af0a6f.js} (85%)
 rename web/settings/assets/{counter-277eabf6.js => counter-c3082628.js} (92%)
 rename web/settings/assets/{counter-e6014599.js => counter-c51eaa64.js} (88%)
 rename web/settings/assets/{counter-bff0132e.js => counter-c6427879.js} (86%)
 rename web/settings/assets/{counter-9fcc4ae5.js => counter-c81118fb.js} (88%)
 rename web/settings/assets/{counter-865f9c61.js => counter-cc4b4212.js} (97%)
 rename web/settings/assets/{counter-8757edbf.js => counter-e25a696d.js} (90%)
 rename web/settings/assets/{counter-7a3ba47e.js => counter-e64707f3.js} (90%)
 rename web/settings/assets/{counter-46612257.js => counter-e6bce9f3.js} (89%)
 rename web/settings/assets/{counter-c8cb4ab4.js => counter-e88fdbc7.js} (82%)
 rename web/settings/assets/{counter-9ff0cd5b.js => counter-edc80b67.js} (85%)
 rename web/settings/assets/{counter_sm-46c91fda.js => counter_sm-187d65ee.js} (95%)
 rename web/settings/assets/{device-1a463b8a.js => device-001cee36.js} (87%)
 rename web/settings/assets/{device-70dec769.js => device-050e3366.js} (92%)
 rename web/settings/assets/{device-a159510e.js => device-0ab7f57f.js} (84%)
 rename web/settings/assets/{device-ac3617bf.js => device-0d76517c.js} (86%)
 rename web/settings/assets/{device-2fe61a6a.js => device-1b2872e2.js} (92%)
 rename web/settings/assets/{device-87e58e62.js => device-1b821174.js} (92%)
 rename web/settings/assets/{device-e9766b50.js => device-1e1551ac.js} (92%)
 rename web/settings/assets/{device-b14a6820.js => device-1e35dcd3.js} (89%)
 rename web/settings/assets/{device-939b0ad1.js => device-1ffd2759.js} (95%)
 rename web/settings/assets/{device-a018debc.js => device-29ca0508.js} (91%)
 rename web/settings/assets/{device-51badd6c.js => device-336ae19f.js} (89%)
 rename web/settings/assets/{device-8308249d.js => device-347eb6dc.js} (90%)
 rename web/settings/assets/{device-c3ba2a50.js => device-39bf739d.js} (89%)
 rename web/settings/assets/{device-2a6323de.js => device-3e6fa83c.js} (84%)
 rename web/settings/assets/{device-5dc8caee.js => device-3f7e40af.js} (93%)
 rename web/settings/assets/{device-2045e148.js => device-40022210.js} (84%)
 rename web/settings/assets/{device-1eaab064.js => device-4a3195eb.js} (89%)
 rename web/settings/assets/{device-b07f9cfe.js => device-4b1646f2.js} (93%)
 rename web/settings/assets/{device-86c123c1.js => device-4edac0ac.js} (86%)
 rename web/settings/assets/{device-f511f708.js => device-51c91be0.js} (91%)
 rename web/settings/assets/{device-3ed84812.js => device-51fdec5d.js} (86%)
 rename web/settings/assets/{device-53686a65.js => device-5286bf60.js} (87%)
 rename web/settings/assets/{device-17812629.js => device-5431b4e2.js} (87%)
 rename web/settings/assets/{device-fd700d8f.js => device-574dcaf4.js} (90%)
 rename web/settings/assets/{device-d8584875.js => device-5762c828.js} (91%)
 rename web/settings/assets/{device-2861d843.js => device-59c7355d.js} (84%)
 rename web/settings/assets/{device-9f7025df.js => device-6aa72597.js} (91%)
 rename web/settings/assets/{device-ee62c15a.js => device-6e3aa19a.js} (84%)
 rename web/settings/assets/{device-7e1581b0.js => device-6f112981.js} (89%)
 rename web/settings/assets/{device-d0fb85ca.js => device-6f239659.js} (91%)
 rename web/settings/assets/{device-8d6c27df.js => device-713ce8f2.js} (82%)
 rename web/settings/assets/{device-900bb2eb.js => device-7279ce38.js} (87%)
 rename web/settings/assets/{device-44ac2d07.js => device-763ad7fc.js} (87%)
 rename web/settings/assets/{device-823f72ad.js => device-79189826.js} (92%)
 rename web/settings/assets/{device-d91bc952.js => device-7f1fc016.js} (95%)
 rename web/settings/assets/{device-82e0acf7.js => device-80fee4ae.js} (89%)
 rename web/settings/assets/{device-eed61bed.js => device-8432eab3.js} (91%)
 rename web/settings/assets/{device-35c75ada.js => device-8548059a.js} (88%)
 rename web/settings/assets/{device-ac5464c5.js => device-91630eed.js} (94%)
 rename web/settings/assets/{device-436ab177.js => device-9653fe83.js} (89%)
 rename web/settings/assets/{device-4992e86f.js => device-9b3e153b.js} (91%)
 rename web/settings/assets/{device-37c8a5d7.js => device-9cbf003b.js} (89%)
 rename web/settings/assets/{device-e7ac4171.js => device-a70f13a3.js} (87%)
 rename web/settings/assets/{device-4cd875ee.js => device-afc129d5.js} (94%)
 rename web/settings/assets/{device-44627252.js => device-b3c2779b.js} (80%)
 rename web/settings/assets/{device-2812d314.js => device-b4913183.js} (81%)
 rename web/settings/assets/{device-5860e973.js => device-bb1652e9.js} (87%)
 rename web/settings/assets/{device-baaf93fc.js => device-bbbcf1a0.js} (92%)
 rename web/settings/assets/{device-24fa8719.js => device-c47ac087.js} (90%)
 rename web/settings/assets/{device-f8b42d98.js => device-cc94a449.js} (91%)
 rename web/settings/assets/{device-7893f72c.js => device-d3b9bc22.js} (96%)
 rename web/settings/assets/{device-cd05bdaa.js => device-d63e2264.js} (86%)
 rename web/settings/assets/{device-a41c9f9a.js => device-d74903aa.js} (92%)
 rename web/settings/assets/{device-b80563d5.js => device-d7bd2ff3.js} (91%)
 rename web/settings/assets/{device-827098d6.js => device-df9c2f01.js} (88%)
 rename web/settings/assets/{device-c3b4d8e4.js => device-e4ac8894.js} (91%)
 rename web/settings/assets/{device-e77cad4b.js => device-f06b8715.js} (86%)
 rename web/settings/assets/{device-752b4387.js => device-f0c7d4c8.js} (91%)
 rename web/settings/assets/{device-282ac597.js => device-f655ceef.js} (89%)
 rename web/settings/assets/{device-51cbfef1.js => device-f7f8ffe0.js} (81%)
 rename web/settings/assets/{device-fe5fad52.js => device-fe891142.js} (92%)
 rename web/settings/assets/{device-4696232a.js => device-ff6c0cb6.js} (91%)
 rename web/settings/assets/{displayTheme-4083964b.js => displayTheme-bbed7095.js} (97%)
 rename web/settings/assets/{electricity_tariff-4bc01805.js => electricity_tariff-10566180.js} (94%)
 rename web/settings/assets/{electricity_tariff-7b04b620.js => electricity_tariff-32db6a64.js} (91%)
 rename web/settings/assets/{electricity_tariff-e23d6291.js => electricity_tariff-77492691.js} (91%)
 rename web/settings/assets/{electricity_tariff-63a1e9ec.js => electricity_tariff-897c7196.js} (89%)
 rename web/settings/assets/{electricity_tariff-5111f15f.js => electricity_tariff-eb995216.js} (96%)
 rename web/settings/assets/{external_inverter-a76bfa79.js => external_inverter-04c9ce87.js} (94%)
 rename web/settings/assets/{index-f9fda857.js => index-c79666b6.js} (96%)
 rename web/settings/assets/{inverter-5f7aec52.js => inverter-098d4ce8.js} (81%)
 rename web/settings/assets/{inverter-287e8910.js => inverter-18c2474d.js} (87%)
 rename web/settings/assets/{inverter-fa1c29cd.js => inverter-323c3074.js} (94%)
 rename web/settings/assets/{inverter-e49c5d75.js => inverter-46c18816.js} (94%)
 rename web/settings/assets/{inverter-fa423cd0.js => inverter-475ea9be.js} (89%)
 rename web/settings/assets/{inverter-c38863be.js => inverter-4952d317.js} (89%)
 rename web/settings/assets/{inverter-3715b21d.js => inverter-4ae76a42.js} (88%)
 rename web/settings/assets/{inverter-1e6b58f6.js => inverter-4f43f74f.js} (82%)
 rename web/settings/assets/{inverter-70f78ef5.js => inverter-55ea35ce.js} (81%)
 rename web/settings/assets/{inverter-e10956ea.js => inverter-593f3daf.js} (89%)
 rename web/settings/assets/{inverter-bcc6d0d6.js => inverter-5ad18beb.js} (83%)
 rename web/settings/assets/{inverter-88d5ed46.js => inverter-5e9ec317.js} (81%)
 rename web/settings/assets/{inverter-b61011e2.js => inverter-5f9ef8bd.js} (83%)
 rename web/settings/assets/{inverter-48761201.js => inverter-6529a4df.js} (90%)
 rename web/settings/assets/{inverter-471fa6e9.js => inverter-6ea218d8.js} (88%)
 rename web/settings/assets/{inverter-57d15ff3.js => inverter-7d0a508c.js} (91%)
 rename web/settings/assets/{inverter-80f24f74.js => inverter-819b1a3e.js} (93%)
 rename web/settings/assets/{inverter-1529fe73.js => inverter-a17a2665.js} (82%)
 rename web/settings/assets/{inverter-eb5f339a.js => inverter-b4727f0c.js} (85%)
 rename web/settings/assets/{inverter-c29b676e.js => inverter-cda22a33.js} (89%)
 rename web/settings/assets/{inverter-36b2f4c7.js => inverter-cdd963f9.js} (91%)
 rename web/settings/assets/{inverter-6f84161c.js => inverter-ce0bf077.js} (91%)
 rename web/settings/assets/{inverter-da1db027.js => inverter-e0302839.js} (93%)
 rename web/settings/assets/{inverter-692fd261.js => inverter-e943d0ae.js} (87%)
 rename web/settings/assets/{inverter-2c898c0e.js => inverter-fb2c9952.js} (90%)
 rename web/settings/assets/{inverter-bdcf1a2f.js => inverter-fb3a6cad.js} (92%)
 rename web/settings/assets/{inverter-d29f4c1a.js => inverter-fd0dea3e.js} (88%)
 rename web/settings/assets/{inverter_secondary-4a5d5bbc.js => inverter_secondary-8a48b565.js} (92%)
 rename web/settings/assets/{ripple_control_receiver-432648b7.js => ripple_control_receiver-370883cc.js} (79%)
 rename web/settings/assets/{ripple_control_receiver-8b00be72.js => ripple_control_receiver-7fecf9d6.js} (88%)
 rename web/settings/assets/{vehicle-35b782fb.js => vehicle-02c16ede.js} (89%)
 rename web/settings/assets/{vehicle-caa88593.js => vehicle-04196ba5.js} (92%)
 rename web/settings/assets/{vehicle-a8092426.js => vehicle-227d6e52.js} (91%)
 rename web/settings/assets/{vehicle-635e6620.js => vehicle-2c8076de.js} (96%)
 rename web/settings/assets/{vehicle-ed5ef659.js => vehicle-2f0703d4.js} (95%)
 rename web/settings/assets/{vehicle-6dc5238d.js => vehicle-39d84738.js} (91%)
 rename web/settings/assets/{vehicle-4afffc4b.js => vehicle-5310b356.js} (97%)
 rename web/settings/assets/{vehicle-95222308.js => vehicle-5d3ddd96.js} (88%)
 rename web/settings/assets/{vehicle-cc94e01f.js => vehicle-66d2565b.js} (91%)
 rename web/settings/assets/{vehicle-4df6c138.js => vehicle-6bfa0331.js} (89%)
 rename web/settings/assets/{vehicle-ad06c8a7.js => vehicle-746a309e.js} (88%)
 rename web/settings/assets/{vehicle-81ee016b.js => vehicle-75a99dd5.js} (86%)
 rename web/settings/assets/{vehicle-022511d4.js => vehicle-79035ef3.js} (87%)
 rename web/settings/assets/{vehicle-693cb69a.js => vehicle-84631beb.js} (93%)
 rename web/settings/assets/{vehicle-317e6bfc.js => vehicle-98331362.js} (89%)
 rename web/settings/assets/{vehicle-38d89acf.js => vehicle-a7bdb9f9.js} (87%)
 rename web/settings/assets/{vehicle-cb0122fd.js => vehicle-b5d373a2.js} (82%)
 rename web/settings/assets/{vehicle-a9e07390.js => vehicle-e9771037.js} (94%)

diff --git a/web/settings/assets/ChargeLog-a730dd70.js b/web/settings/assets/ChargeLog-0789f309.js
similarity index 99%
rename from web/settings/assets/ChargeLog-a730dd70.js
rename to web/settings/assets/ChargeLog-0789f309.js
index 4ba1556c38..f64c15aeb6 100644
--- a/web/settings/assets/ChargeLog-a730dd70.js
+++ b/web/settings/assets/ChargeLog-0789f309.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,$ as S,u as g,k as h,l as u,x as i,D as d,N as s,A as V,B as I,y as c,z as n,M as _,q as w}from"./vendor-a21b3a62.js";import{C as W}from"./index-f9fda857.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";R.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:E},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,$ as S,u as g,k as h,l as u,x as i,D as d,N as s,A as V,B as I,y as c,z as n,M as _,q as w}from"./vendor-a21b3a62.js";import{C as W}from"./index-c79666b6.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";R.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:E},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}}},T={class:"chargeLog"},U={name:"chargeLogForm"},y=["href"],M={key:1},P={class:"td-end"},z={class:"td-end"},O=["title"],A=["aria-valuenow"],Z=["aria-valuenow"],j=["aria-valuenow"],K=["aria-valuenow"],J={key:1,class:"td-center"},G={class:"td-end"},H={class:"no-wrap"},Y={class:"no-wrap"},Q={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"td-end"},se={key:0},oe={class:"row justify-content-center"},ne={ref:"downloadChargeLogLink",class:"hide"},le={class:"td-end"},de={class:"td-end"},ce={class:"td-end"},ge={class:"td-end"};function he(t,e,o,p,l,r){const C=g("openwb-base-text-input"),f=g("font-awesome-icon"),D=g("openwb-base-button-group-input"),m=g("openwb-base-select-input"),q=g("openwb-base-array-input"),v=g("openwb-base-card"),b=g("openwb-base-alert"),L=g("vue3-table-lite"),N=g("openwb-base-click-button");return h(),u("div",T,[i("form",U,[d(v,{title:"Filter"},{default:s(()=>[d(C,{modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())],title:"Zeitraum",subtype:"month",min:"2018-01","show-quick-buttons":!0,max:l.currentMonth},null,8,["modelValue","max"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),e[13]||(e[13]=c(" Erweiterte Optionen "))]),default:s(()=>[d(D,{modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())],title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"]),d(m,{modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())],title:"Lademodus",multiple:"",options:r.chargeModeList},{help:s(()=>e[14]||(e[14]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(m,{modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())],title:"Ladepunkt",multiple:"",options:r.chargePointList},{help:s(()=>e[15]||(e[15]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(m,{modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())],title:"Fahrzeug",multiple:"",options:r.vehicleList},{help:s(()=>e[16]||(e[16]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(q,{modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())],title:"ID-Tags"},{help:s(()=>e[17]||(e[17]=[c(" Es können mehrere Tags als Filter verwendet werden. ")])),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[e[18]||(e[18]=c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,y)]),_:1}),r.chargeLogRead?(h(),u("div",M,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",P,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(h(),u("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:_({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,A),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:_({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,Z),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:_({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,j),i("div",{class:"progress-bar bg-success",role:"progressbar",style:_({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K)],8,O)):(h(),u("div",J," - "))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",G,[i("span",H,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",Y," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",Q,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",ee,[i("span",te,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",ae," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",re,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ie,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(h(),u("div",se,[i("div",oe,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[e[20]||(e[20]=c(" Als CSV exportieren ")),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ne,null,512)]),e[21]||(e[21]=i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",le,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",de,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ce,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",ge,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):I("",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>e[19]||(e[19]=[c(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const Le=B(F,[["render",he],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{Le as default};
diff --git a/web/settings/assets/ChargePointInstallation-8dff21bc.js b/web/settings/assets/ChargePointInstallation-2f136eb7.js
similarity index 95%
rename from web/settings/assets/ChargePointInstallation-8dff21bc.js
rename to web/settings/assets/ChargePointInstallation-2f136eb7.js
index 1e82001908..03aa77e523 100644
--- a/web/settings/assets/ChargePointInstallation-8dff21bc.js
+++ b/web/settings/assets/ChargePointInstallation-2f136eb7.js
@@ -1 +1 @@
-import{l as H,d as G,a0 as Q,A as X,a9 as Y,aa as K,K as ee,ab as te,F as ne,I as ae}from"./vendor-fortawesome-41164876.js";import{_ as V,C as oe}from"./index-f9fda857.js";import{_ as I}from"./dynamic-import-helper-be004503.js";import{_ as S,u as h,k as l,l as p,A as _,N as o,y as s,z as w,D as a,x as d,a0 as E,a1 as D,J as A,K as x,B as c,q as M,a2 as O,P as le}from"./vendor-a21b3a62.js";const ie={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=S(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[se]},ue={class:"charge-point-config-fallback"},de={key:1};function pe(t,e,m,y,g,u){const k=h("openwb-base-alert"),f=h("openwb-base-textarea");return l(),p("div",ue,[Object.keys(t.chargePoint.configuration).length==0?(l(),_(k,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),p("div",de,[a(k,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=L=>t.updateConfiguration(L,"configuration"))},{help:o(()=>e[1]||(e[1]=[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const me=S(re,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={props:{chargePoint:{type:Object,required:!0}}},he=S(ge,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),ce={name:"ChargePointCommandsFallback",mixins:[he]},be={class:"charge-point-commands-fallback"};function fe(t,e,m,y,g,u){const k=h("openwb-base-alert");return l(),p("div",be,[a(k,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const _e=S(ce,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),ve={name:"OpenwbChargePointProxy",props:{chargePoint:{required:!0,type:Object}},emits:["update:configuration"],computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),E({loader:()=>I(Object.assign({"./external_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-112ccae9.js"),["assets/chargePoint-112ccae9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-3babeeb9.js"),["assets/chargePoint-3babeeb9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>V(()=>import("./chargePoint-f1ada5d6.js"),["assets/chargePoint-f1ada5d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>V(()=>import("./chargePoint-a02180ae.js"),["assets/chargePoint-a02180ae.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>V(()=>import("./chargePoint-468fc8e7.js"),["assets/chargePoint-468fc8e7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>V(()=>import("./chargePoint-52b6ceee.js"),["assets/chargePoint-52b6ceee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>V(()=>import("./chargePoint-7fec8739.js"),["assets/chargePoint-7fec8739.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:me})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),E({loader:()=>I(Object.assign({"./openwb_pro/commands.vue":()=>V(()=>import("./commands-62da4db2.js"),["assets/commands-62da4db2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:_e})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function we(t,e,m,y,g,u){const k=h("openwb-base-heading");return l(),p(A,null,[a(k,null,{default:o(()=>[s(' Einstellungen für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointSettingsComponent),{"charge-point":m.chargePoint,"onUpdate:configuration":e[0]||(e[0]=f=>u.updateConfiguration(f))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[s(' Befehle für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointCommandsComponent),{"charge-point":m.chargePoint},null,8,["charge-point"]))],64)}const ke=S(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);H.add(G,Q,X,Y,K,ee,te);const Ce={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:ke},mixins:[oe],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[m,y]of Object.entries(t))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[m]=y);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let m=parseInt(e.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;t.push({value:m,text:y})}),t}}},methods:{addChargePoint(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&(console.debug("request removal of charge point '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}}))},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(t,e,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"' autolock plan '"+e+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}}))},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le={key:1},Be={key:0},We={class:"col-1"},Ae={key:0},Se={key:1},Ue={key:1},xe={key:0},Te={key:2},ze={key:4},qe=["onClick"],Ie={key:0},Ee={key:1},De={key:2},Me={key:2};function Oe(t,e,m,y,g,u){const k=h("openwb-base-modal-dialog"),f=h("font-awesome-icon"),L=h("openwb-base-avatar"),P=h("openwb-base-text-input"),T=h("openwb-base-select-input"),F=h("openwb-charge-point-proxy"),B=h("openwb-base-heading"),C=h("openwb-base-button-group-input"),U=h("openwb-base-card"),N=h("openwb-base-click-button"),$=h("font-awesome-layers"),z=h("openwb-base-alert"),j=h("openwb-base-array-input"),q=h("openwb-base-range-input"),R=h("openwb-base-number-input"),Z=h("openwb-base-submit-buttons");return l(),p(A,null,[a(k,{show:g.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=i=>u.removeChargePoint(g.modalChargePointIndex,i))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(g.modalChargePointIndex))+'" (ID: '+w(g.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:g.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=i=>u.removeChargePointTemplate(g.modalChargePointTemplateIndex,i))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(g.modalChargePointTemplateIndex))+'" (ID: '+w(g.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:g.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=i=>u.removeChargePointTemplateAutolockPlan(g.modalChargePointTemplateIndex,g.modalChargePointTemplateAutolockPlanIndex,i))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(g.modalChargePointTemplateIndex,g.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",ye,[d("form",Pe,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[a(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=s(" Ladepunkte "))]),default:o(()=>[(l(!0),p(A,null,x(u.installedChargePoints,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+i.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?c("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":n=>t.updateState(r,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[r].type},null,8,["model-value"]),i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),p("span",Ve,[a(T,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[r].template,"onUpdate:modelValue":n=>t.updateState(r,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("",!0),e[13]||(e[13]=d("hr",null,null,-1)),a(F,{"charge-point":i,"onUpdate:configuration":n=>u.updateConfiguration(r,n)},null,8,["charge-point","onUpdate:configuration"]),(i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&i.charging_type!=="DC"?(l(),p("div",Le,[e[12]||(e[12]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[8]||(e[8]=[s(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[9]||(e[9]=[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{default:o(()=>[...e[10]||(e[10]=[s(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.connected_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":i.phase_1,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_1")},{help:o(()=>[...e[11]||(e[11]=[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(l(),p("hr",Be)):c("",!0),a(T,{class:"mb-2",title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":g.chargePointToAdd,"onUpdate:modelValue":e[3]||(e[3]=i=>g.chargePointToAdd=i)},{append:o(()=>[d("span",We,[a(N,{class:M(g.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:g.chargePointToAdd===void 0,onButtonClicked:u.addChargePoint},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>e[14]||(e[14]=[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),d("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),d("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),e[37]||(e[37]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a($,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[15]||(e[15]=s(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),_(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),p("div",Ae,[a(z,{subtype:"info"},{default:o(()=>e[16]||(e[16]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),p("div",Se,[(l(!0),p(A,null,x(u.chargePointTemplates,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+u.getChargePointTemplateIndex(r)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},O({_:2},[r.endsWith("/0")?{name:"help",fn:o(()=>[e[17]||(e[17]=s(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(l(),_(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":i.charging_type,"onUpdate:modelValue":n=>t.updateState(r,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):c("",!0),e[34]||(e[34]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[18]||(e[18]=[s(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(r,n,"disable_after_unplug")},{help:o(()=>[...e[19]||(e[19]=[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(l(),p("div",Ue,[i.disable_after_unplug?(l(),_(j,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":i.valid_tags,"onUpdate:modelValue":n=>t.updateState(r,n,"valid_tags")},{help:o(()=>[...e[20]||(e[20]=[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):c("",!0)])):c("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[21]||(e[21]=[s(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(z,{subtype:"info"},{default:o(()=>[e[22]||(e[22]=s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[23]||(e[23]=d("br",null,null,-1)),e[24]||(e[24]=s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),i.charging_type==="AC"?(l(),p("span",xe," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):c("",!0),e[25]||(e[25]=d("br",null,null,-1)),e[26]||(e[26]=s(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[27]||(e[27]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[28]||(e[28]=s(" beschrieben. "))]),_:2},1024),i.charging_type==="AC"||u.dcChargingEnabled!==!0?(l(),p("div",Te,[a(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(l(),_(R,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),e[36]||(e[36]=d("hr",null,null,-1)),m.installAssistantActive?c("",!0):(l(),p("div",ze,[e[33]||(e[33]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[29]||(e[29]=[s(" Automatische Sperre ")])]),_:1}),a(C,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.active,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.active")},{help:o(()=>[...e[30]||(e[30]=[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[31]||(e[31]=[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{actions:o(()=>[a(L,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(r,n)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[32]||(e[32]=s(" Zeitpläne für die automatische Sperre "))]),_:2},1024)])),(l(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(r),(n,v)=>(l(),_(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(l(),p("span",{key:0,class:M(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:le(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(f,{"fixed-width":"",icon:["fas","clock"]}),s(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(l(),p("span",Ie,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):c("",!0),n.frequency.selected=="daily"?(l(),p("span",Ee,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("",!0),n.frequency.selected=="weekly"?(l(),p("span",De,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("",!0)],10,qe)):c("",!0),b.collapsed==!1?(l(),_(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(r,v,W)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("",!0)]),default:o(()=>[a(P,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(l(),_(P,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("",!0),n.frequency.selected=="once"?(l(),_(P,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("",!0),n.frequency.selected=="weekly"?(l(),p("div",Me,[(l(!0),p(A,null,x(t.weekdays,(b,W)=>(l(),_(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":J=>t.updateState(v,J,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?c("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(Z,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=i=>t.$emit("save")),onReset:e[5]||(e[5]=i=>t.$emit("reset")),onDefaults:e[6]||(e[6]=i=>t.$emit("defaults"))})])])],64)}const Fe=S(Ce,[["render",Oe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));export{se as C,he as a,Fe as b,Ze as c};
+import{l as H,d as G,a0 as Q,A as X,a9 as Y,aa as K,K as ee,ab as te,F as ne,I as ae}from"./vendor-fortawesome-41164876.js";import{_ as V,C as oe}from"./index-c79666b6.js";import{_ as I}from"./dynamic-import-helper-be004503.js";import{_ as S,u as h,k as l,l as p,A as _,N as o,y as s,z as w,D as a,x as d,a0 as E,a1 as D,J as A,K as x,B as c,q as M,a2 as O,P as le}from"./vendor-a21b3a62.js";const ie={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=S(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[se]},ue={class:"charge-point-config-fallback"},de={key:1};function pe(t,e,m,y,g,u){const k=h("openwb-base-alert"),f=h("openwb-base-textarea");return l(),p("div",ue,[Object.keys(t.chargePoint.configuration).length==0?(l(),_(k,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),p("div",de,[a(k,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=L=>t.updateConfiguration(L,"configuration"))},{help:o(()=>e[1]||(e[1]=[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const me=S(re,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={props:{chargePoint:{type:Object,required:!0}}},he=S(ge,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),ce={name:"ChargePointCommandsFallback",mixins:[he]},be={class:"charge-point-commands-fallback"};function fe(t,e,m,y,g,u){const k=h("openwb-base-alert");return l(),p("div",be,[a(k,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const _e=S(ce,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),ve={name:"OpenwbChargePointProxy",props:{chargePoint:{required:!0,type:Object}},emits:["update:configuration"],computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),E({loader:()=>I(Object.assign({"./external_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-31a8d3d7.js"),["assets/chargePoint-31a8d3d7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-db08669e.js"),["assets/chargePoint-db08669e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>V(()=>import("./chargePoint-4fed3886.js"),["assets/chargePoint-4fed3886.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>V(()=>import("./chargePoint-068c7cfc.js"),["assets/chargePoint-068c7cfc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>V(()=>import("./chargePoint-d4764ca1.js"),["assets/chargePoint-d4764ca1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>V(()=>import("./chargePoint-7134b65e.js"),["assets/chargePoint-7134b65e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>V(()=>import("./chargePoint-ab593928.js"),["assets/chargePoint-ab593928.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:me})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),E({loader:()=>I(Object.assign({"./openwb_pro/commands.vue":()=>V(()=>import("./commands-0379c262.js"),["assets/commands-0379c262.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:_e})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function we(t,e,m,y,g,u){const k=h("openwb-base-heading");return l(),p(A,null,[a(k,null,{default:o(()=>[s(' Einstellungen für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointSettingsComponent),{"charge-point":m.chargePoint,"onUpdate:configuration":e[0]||(e[0]=f=>u.updateConfiguration(f))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[s(' Befehle für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointCommandsComponent),{"charge-point":m.chargePoint},null,8,["charge-point"]))],64)}const ke=S(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);H.add(G,Q,X,Y,K,ee,te);const Ce={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:ke},mixins:[oe],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[m,y]of Object.entries(t))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[m]=y);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let m=parseInt(e.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;t.push({value:m,text:y})}),t}}},methods:{addChargePoint(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&(console.debug("request removal of charge point '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}}))},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(t,e,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"' autolock plan '"+e+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}}))},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le={key:1},Be={key:0},We={class:"col-1"},Ae={key:0},Se={key:1},Ue={key:1},xe={key:0},Te={key:2},ze={key:4},qe=["onClick"],Ie={key:0},Ee={key:1},De={key:2},Me={key:2};function Oe(t,e,m,y,g,u){const k=h("openwb-base-modal-dialog"),f=h("font-awesome-icon"),L=h("openwb-base-avatar"),P=h("openwb-base-text-input"),T=h("openwb-base-select-input"),F=h("openwb-charge-point-proxy"),B=h("openwb-base-heading"),C=h("openwb-base-button-group-input"),U=h("openwb-base-card"),N=h("openwb-base-click-button"),$=h("font-awesome-layers"),z=h("openwb-base-alert"),j=h("openwb-base-array-input"),q=h("openwb-base-range-input"),R=h("openwb-base-number-input"),Z=h("openwb-base-submit-buttons");return l(),p(A,null,[a(k,{show:g.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=i=>u.removeChargePoint(g.modalChargePointIndex,i))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(g.modalChargePointIndex))+'" (ID: '+w(g.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:g.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=i=>u.removeChargePointTemplate(g.modalChargePointTemplateIndex,i))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(g.modalChargePointTemplateIndex))+'" (ID: '+w(g.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:g.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=i=>u.removeChargePointTemplateAutolockPlan(g.modalChargePointTemplateIndex,g.modalChargePointTemplateAutolockPlanIndex,i))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(g.modalChargePointTemplateIndex,g.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",ye,[d("form",Pe,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[a(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=s(" Ladepunkte "))]),default:o(()=>[(l(!0),p(A,null,x(u.installedChargePoints,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+i.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?c("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":n=>t.updateState(r,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[r].type},null,8,["model-value"]),i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),p("span",Ve,[a(T,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[r].template,"onUpdate:modelValue":n=>t.updateState(r,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("",!0),e[13]||(e[13]=d("hr",null,null,-1)),a(F,{"charge-point":i,"onUpdate:configuration":n=>u.updateConfiguration(r,n)},null,8,["charge-point","onUpdate:configuration"]),(i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&i.charging_type!=="DC"?(l(),p("div",Le,[e[12]||(e[12]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[8]||(e[8]=[s(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[9]||(e[9]=[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{default:o(()=>[...e[10]||(e[10]=[s(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.connected_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":i.phase_1,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_1")},{help:o(()=>[...e[11]||(e[11]=[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(l(),p("hr",Be)):c("",!0),a(T,{class:"mb-2",title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":g.chargePointToAdd,"onUpdate:modelValue":e[3]||(e[3]=i=>g.chargePointToAdd=i)},{append:o(()=>[d("span",We,[a(N,{class:M(g.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:g.chargePointToAdd===void 0,onButtonClicked:u.addChargePoint},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>e[14]||(e[14]=[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),d("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),d("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),e[37]||(e[37]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a($,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[15]||(e[15]=s(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),_(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),p("div",Ae,[a(z,{subtype:"info"},{default:o(()=>e[16]||(e[16]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),p("div",Se,[(l(!0),p(A,null,x(u.chargePointTemplates,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+u.getChargePointTemplateIndex(r)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},O({_:2},[r.endsWith("/0")?{name:"help",fn:o(()=>[e[17]||(e[17]=s(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(l(),_(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":i.charging_type,"onUpdate:modelValue":n=>t.updateState(r,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):c("",!0),e[34]||(e[34]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[18]||(e[18]=[s(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(r,n,"disable_after_unplug")},{help:o(()=>[...e[19]||(e[19]=[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(l(),p("div",Ue,[i.disable_after_unplug?(l(),_(j,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":i.valid_tags,"onUpdate:modelValue":n=>t.updateState(r,n,"valid_tags")},{help:o(()=>[...e[20]||(e[20]=[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):c("",!0)])):c("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[21]||(e[21]=[s(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(z,{subtype:"info"},{default:o(()=>[e[22]||(e[22]=s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[23]||(e[23]=d("br",null,null,-1)),e[24]||(e[24]=s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),i.charging_type==="AC"?(l(),p("span",xe," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):c("",!0),e[25]||(e[25]=d("br",null,null,-1)),e[26]||(e[26]=s(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[27]||(e[27]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[28]||(e[28]=s(" beschrieben. "))]),_:2},1024),i.charging_type==="AC"||u.dcChargingEnabled!==!0?(l(),p("div",Te,[a(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(l(),_(R,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),e[36]||(e[36]=d("hr",null,null,-1)),m.installAssistantActive?c("",!0):(l(),p("div",ze,[e[33]||(e[33]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[29]||(e[29]=[s(" Automatische Sperre ")])]),_:1}),a(C,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.active,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.active")},{help:o(()=>[...e[30]||(e[30]=[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[31]||(e[31]=[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{actions:o(()=>[a(L,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(r,n)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[32]||(e[32]=s(" Zeitpläne für die automatische Sperre "))]),_:2},1024)])),(l(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(r),(n,v)=>(l(),_(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(l(),p("span",{key:0,class:M(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:le(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(f,{"fixed-width":"",icon:["fas","clock"]}),s(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(l(),p("span",Ie,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):c("",!0),n.frequency.selected=="daily"?(l(),p("span",Ee,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("",!0),n.frequency.selected=="weekly"?(l(),p("span",De,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("",!0)],10,qe)):c("",!0),b.collapsed==!1?(l(),_(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(r,v,W)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("",!0)]),default:o(()=>[a(P,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(l(),_(P,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("",!0),n.frequency.selected=="once"?(l(),_(P,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("",!0),n.frequency.selected=="weekly"?(l(),p("div",Me,[(l(!0),p(A,null,x(t.weekdays,(b,W)=>(l(),_(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":J=>t.updateState(v,J,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?c("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(Z,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=i=>t.$emit("save")),onReset:e[5]||(e[5]=i=>t.$emit("reset")),onDefaults:e[6]||(e[6]=i=>t.$emit("defaults"))})])])],64)}const Fe=S(Ce,[["render",Oe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));export{se as C,he as a,Fe as b,Ze as c};
diff --git a/web/settings/assets/Chart-19a9b222.js b/web/settings/assets/Chart-f906208b.js
similarity index 99%
rename from web/settings/assets/Chart-19a9b222.js
rename to web/settings/assets/Chart-f906208b.js
index ef3f358b1d..99dacce78a 100644
--- a/web/settings/assets/Chart-19a9b222.js
+++ b/web/settings/assets/Chart-f906208b.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as q,V as j,W as M,F as V}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-f9fda857.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-5fa56b74.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,q,j,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[4]||(t[4]=[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[3]||(t[3]=[f(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as q,V as j,W as M,F as V}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-c79666b6.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-5fa56b74.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,q,j,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[4]||(t[4]=[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[3]||(t[3]=[f(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-595194ca.js b/web/settings/assets/CloudConfig-b33b0184.js
similarity index 99%
rename from web/settings/assets/CloudConfig-595194ca.js
rename to web/settings/assets/CloudConfig-b33b0184.js
index 3d5ae81fda..7aac945716 100644
--- a/web/settings/assets/CloudConfig-595194ca.js
+++ b/web/settings/assets/CloudConfig-b33b0184.js
@@ -1 +1 @@
-import{l as q,$ as P,F as z}from"./vendor-fortawesome-41164876.js";import{C as Z}from"./index-f9fda857.js";import{_ as I,u as d,k as a,l as w,D as r,N as t,x as m,A as p,B as i,a2 as D,J as x,y as u,q as V}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";q.add(P);const M={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[Z],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,k]of Object.entries(o))k.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},h={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},A={class:"row justify-content-center"},N={key:2,name:"cloudConfigConnectForm"},R={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j={class:"row justify-content-center"};function G(o,e,k,T,s,l){const W=d("openwb-base-modal-dialog"),c=d("router-link"),g=d("openwb-base-alert"),b=d("openwb-base-text-input"),C=d("openwb-base-button-group-input"),f=d("font-awesome-icon"),B=d("openwb-base-array-input"),y=d("openwb-base-click-button"),v=d("openwb-base-card"),S=d("openwb-base-heading"),_=d("openwb-base-submit-buttons");return a(),w(x,null,[r(W,{show:s.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>l.removeCloud(n))},{default:t(()=>e[17]||(e[17]=[u(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",h,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(a(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[19]||(e[19]=u(" Sie müssen der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[18]||(e[18]=[u(" Datenschutzerklärung ")])),_:1}),e[20]||(e[20]=u(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(a(),w("div",K,[r(g,{subtype:"success"},{default:t(()=>[e[22]||(e[22]=u(" Sie haben der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[21]||(e[21]=[u(" Datenschutzerklärung ")])),_:1}),e[23]||(e[23]=u(" zugestimmt und können die openWB Cloud nutzen. "))]),_:1}),s.enableRemoveCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[24]||(e[24]=[u(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),l.cloudBridgeKey?i("",!0):(a(),w("form",U,[r(v,{title:"Neuen Zugang erstellen"},D({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[25]||(e[25]=[u(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),u(" . ")])),_:1}),r(b,{modelValue:s.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>s.newCloudData.username=n),title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",disabled:""},null,8,["modelValue"]),r(b,{modelValue:s.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>s.newCloudData.email=n),title:"E-Mail",required:"",subtype:"email",disabled:""},null,8,["modelValue"]),r(C,{modelValue:s.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>s.newCloudData.partner=n),disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[26]||(e[26]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.newCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[27]||(e[27]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",A,[r(y,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>e[28]||(e[28]=[u(" Zugang erstellen ")])),_:1})])]),key:"0"}:void 0]),1024),s.enableNewCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>e[29]||(e[29]=[u(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")])),_:1}))])),l.cloudBridgeKey?i("",!0):(a(),w("form",N,[r(v,{title:"Vorhandenen Zugang einrichten"},D({default:t(()=>[r(b,{modelValue:s.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>s.connectCloudData.username=n),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(b,{modelValue:s.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>s.connectCloudData.password=n),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(C,{modelValue:s.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>s.connectCloudData.partner=n),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[30]||(e[30]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.connectCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[31]||(e[31]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",R,[r(y,{class:V(["col-4",s.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!s.enableCloudConnectButton,onButtonClicked:l.connectCloud},{default:t(()=>e[32]||(e[32]=[u(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),l.cloudBridgeKey?(a(),w("form",F,[!s.enableCloudConnectButton||!s.enableNewCloudButton?(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[33]||(e[33]=[u(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(v,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",j,[r(y,{class:V(["col-4",s.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!s.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>l.removeCloudModal(n))},{default:t(()=>e[37]||(e[37]=[u(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(S,null,{default:t(()=>e[34]||(e[34]=[m("span",null,[u(" Mit diesen Zugangsdaten können Sie sich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),u(" anmelden. ")],-1)])),_:1}),r(b,{modelValue:l.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>l.cloudSettings.username=n),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(b,{modelValue:l.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>l.cloudSettings.password=n),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[38]||(e[38]=m("hr",null,null,-1)),r(C,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(l.cloudBridgeKey,n,"access.partner"))},{help:t(()=>e[35]||(e[35]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),l.cloudSettings.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[36]||(e[36]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),l.cloudBridgeKey?(a(),p(_,{key:4,"form-name":"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const Y=I(M,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{Y as default};
+import{l as q,$ as P,F as z}from"./vendor-fortawesome-41164876.js";import{C as Z}from"./index-c79666b6.js";import{_ as I,u as d,k as a,l as w,D as r,N as t,x as m,A as p,B as i,a2 as D,J as x,y as u,q as V}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";q.add(P);const M={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[Z],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,k]of Object.entries(o))k.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},h={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},A={class:"row justify-content-center"},N={key:2,name:"cloudConfigConnectForm"},R={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j={class:"row justify-content-center"};function G(o,e,k,T,s,l){const W=d("openwb-base-modal-dialog"),c=d("router-link"),g=d("openwb-base-alert"),b=d("openwb-base-text-input"),C=d("openwb-base-button-group-input"),f=d("font-awesome-icon"),B=d("openwb-base-array-input"),y=d("openwb-base-click-button"),v=d("openwb-base-card"),S=d("openwb-base-heading"),_=d("openwb-base-submit-buttons");return a(),w(x,null,[r(W,{show:s.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>l.removeCloud(n))},{default:t(()=>e[17]||(e[17]=[u(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",h,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(a(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[19]||(e[19]=u(" Sie müssen der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[18]||(e[18]=[u(" Datenschutzerklärung ")])),_:1}),e[20]||(e[20]=u(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(a(),w("div",K,[r(g,{subtype:"success"},{default:t(()=>[e[22]||(e[22]=u(" Sie haben der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[21]||(e[21]=[u(" Datenschutzerklärung ")])),_:1}),e[23]||(e[23]=u(" zugestimmt und können die openWB Cloud nutzen. "))]),_:1}),s.enableRemoveCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[24]||(e[24]=[u(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),l.cloudBridgeKey?i("",!0):(a(),w("form",U,[r(v,{title:"Neuen Zugang erstellen"},D({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[25]||(e[25]=[u(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),u(" . ")])),_:1}),r(b,{modelValue:s.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>s.newCloudData.username=n),title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",disabled:""},null,8,["modelValue"]),r(b,{modelValue:s.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>s.newCloudData.email=n),title:"E-Mail",required:"",subtype:"email",disabled:""},null,8,["modelValue"]),r(C,{modelValue:s.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>s.newCloudData.partner=n),disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[26]||(e[26]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.newCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[27]||(e[27]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",A,[r(y,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>e[28]||(e[28]=[u(" Zugang erstellen ")])),_:1})])]),key:"0"}:void 0]),1024),s.enableNewCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>e[29]||(e[29]=[u(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")])),_:1}))])),l.cloudBridgeKey?i("",!0):(a(),w("form",N,[r(v,{title:"Vorhandenen Zugang einrichten"},D({default:t(()=>[r(b,{modelValue:s.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>s.connectCloudData.username=n),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(b,{modelValue:s.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>s.connectCloudData.password=n),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(C,{modelValue:s.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>s.connectCloudData.partner=n),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[30]||(e[30]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.connectCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[31]||(e[31]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",R,[r(y,{class:V(["col-4",s.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!s.enableCloudConnectButton,onButtonClicked:l.connectCloud},{default:t(()=>e[32]||(e[32]=[u(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),l.cloudBridgeKey?(a(),w("form",F,[!s.enableCloudConnectButton||!s.enableNewCloudButton?(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[33]||(e[33]=[u(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(v,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",j,[r(y,{class:V(["col-4",s.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!s.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>l.removeCloudModal(n))},{default:t(()=>e[37]||(e[37]=[u(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(S,null,{default:t(()=>e[34]||(e[34]=[m("span",null,[u(" Mit diesen Zugangsdaten können Sie sich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),u(" anmelden. ")],-1)])),_:1}),r(b,{modelValue:l.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>l.cloudSettings.username=n),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(b,{modelValue:l.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>l.cloudSettings.password=n),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[38]||(e[38]=m("hr",null,null,-1)),r(C,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(l.cloudBridgeKey,n,"access.partner"))},{help:t(()=>e[35]||(e[35]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),l.cloudSettings.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[36]||(e[36]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),l.cloudBridgeKey?(a(),p(_,{key:4,"form-name":"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const Y=I(M,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{Y as default};
diff --git a/web/settings/assets/DataManagement-b9730b64.js b/web/settings/assets/DataManagement-1fb1197d.js
similarity index 96%
rename from web/settings/assets/DataManagement-b9730b64.js
rename to web/settings/assets/DataManagement-1fb1197d.js
index 15e0537a5d..9eaefe2e97 100644
--- a/web/settings/assets/DataManagement-b9730b64.js
+++ b/web/settings/assets/DataManagement-1fb1197d.js
@@ -1 +1 @@
-import{l as L,af as z,ag as V,ah as j,ai as H,aj as R,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,C as P}from"./index-f9fda857.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as S,u as m,k as r,l as f,A as w,N as l,y as i,z as y,D as o,x as n,a0 as N,a1 as q,J as W,B as _,q as D,K as F,a2 as I}from"./vendor-a21b3a62.js";const G={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},J=S(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),Z={name:"BackupCloudConfigFallback",mixins:[J]},K={class:"backup-cloud-fallback"},$={key:1};function Q(t,e,u,g,s,a){const b=m("openwb-base-alert"),p=m("openwb-base-textarea");return r(),f("div",K,[Object.keys(t.backupCloud.configuration).length==0?(r(),w(b,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+y(t.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),f("div",$,[o(b,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+y(t.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(p,{title:"Konfiguration",subtype:"json","model-value":t.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=v=>t.updateConfiguration(v,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),o(b,{subtype:"info"},{default:l(()=>[n("pre",null,y(JSON.stringify(t.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const X=S(Z,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),Y={name:"OpenwbBackupCloudProxy",props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),N({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-b3e9e685.js"),["assets/backup_cloud-b3e9e685.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-fd1d0158.js"),["assets/backup_cloud-fd1d0158.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-5feeb3e2.js"),["assets/backup_cloud-5feeb3e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-13d4bee8.js"),["assets/backup_cloud-13d4bee8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:X})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function ee(t,e,u,g,s,a){const b=m("openwb-base-heading");return r(),f(W,null,[o(b,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+y(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(a.myComponent),{"backup-cloud":u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=p=>a.updateConfiguration(p)),onSendCommand:e[1]||(e[1]=p=>a.sendCommand(p))},null,40,["backup-cloud"]))],64)}const te=S(Y,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(z,V,j,H,R);const ne={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:te},mixins:[P],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let s=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let s=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var b="Hochladen der Datei fehlgeschlagen!<br />"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),b+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),b+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(b,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},oe={class:"system"},ie={key:1},se={name:"backupForm"},ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue={key:0,name:"restoreForm"},de={class:"input-group"},re={class:"input-group-prepend"},pe={class:"input-group-text"},ce={class:"custom-file"},me={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},be={class:"input-group-append"},fe=["disabled"],ge={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:1,name:"cloudBackupForm"},ye={key:0},ve={name:"dataMigrationForm"},_e={class:"input-group"},we={class:"input-group-prepend"},Ce={class:"input-group-text"},Be={class:"custom-file"},De={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Se={class:"input-group-append"},Oe=["disabled"],We={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},Fe={key:1,name:"resetForm"},Ae={class:"row justify-content-center"},Te={class:"col-md-4 d-flex py-1 justify-content-center"};function xe(t,e,u,g,s,a){const b=m("openwb-base-button-group-input"),p=m("openwb-base-alert"),v=m("openwb-base-heading"),k=m("font-awesome-icon"),C=m("openwb-base-click-button"),M=m("openwb-base-select-input"),A=m("openwb-base-button-input"),T=m("openwb-backup-cloud-proxy"),x=m("openwb-base-submit-buttons"),O=m("openwb-base-card");return r(),f("div",oe,[u.installAssistantActive?_("",!0):(r(),w(p,{key:0,subtype:"danger"},{default:l(()=>[e[17]||(e[17]=n("h2",null,"Achtung!",-1)),e[18]||(e[18]=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),o(b,{modelValue:s.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=c=>s.warningAcknowledged=c),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),s.warningAcknowledged||u.installAssistantActive?(r(),f("div",ie,[o(O,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var c,h;return[n("form",se,[o(v,null,{default:l(()=>e[19]||(e[19]=[i("Sicherung")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[20]||(e[20]=[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[21]||(e[21]=[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),n("div",ae,[n("div",le,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[e[22]||(e[22]=i(" Sicherung erstellen ")),o(k,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),s.showRestoreSection?(r(),f("form",ue,[e[27]||(e[27]=n("hr",null,null,-1)),o(v,null,{default:l(()=>e[23]||(e[23]=[i("Wiederherstellung")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[24]||(e[24]=[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),n("br",null,null,-1),i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),n("div",de,[n("div",re,[n("div",pe,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ce,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>a.updateSelectedRestoreFile(d))},null,32),n("label",me,y(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",be,[n("button",{class:D(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>a.uploadRestoreFile())},[e[25]||(e[25]=i(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,fe)])]),n("div",ge,[n("div",he,[o(C,{class:D(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>a.restoreBackup())},{default:l(()=>[e[26]||(e[26]=i(" Wiederherstellung starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),u.showBackupCloudSection?(r(),f("form",ke,[e[31]||(e[31]=n("hr",null,null,-1)),o(v,null,{default:l(()=>e[28]||(e[28]=[i(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[29]||(e[29]=[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),n("br",null,null,-1),i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),n("br",null,null,-1),i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),i(" . ")])),_:1}),o(M,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(c=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:c.type,"onUpdate:modelValue":e[5]||(e[5]=d=>a.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(h=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&h.type?(r(),f("div",ye,[o(b,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>e[30]||(e[30]=[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),o(A,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>a.sendSystemCommand("createCloudBackup",{}))}),o(T,{"backup-cloud":t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>a.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>a.sendSystemCommand(d.command,d.args))},null,8,["backup-cloud"])])):_("",!0),o(x,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?_("",!0):(r(),w(O,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",ve,[o(p,{subtype:"info"},{default:l(()=>e[32]||(e[32]=[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[33]||(e[33]=[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),n("br",null,null,-1),i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),n("br",null,null,-1),i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),n("div",_e,[n("div",we,[n("div",Ce,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Be,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=c=>a.updateSelectedDataMigrationFile(c))},null,32),n("label",De,y(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Se,[n("button",{class:D(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=c=>a.uploadDataMigrationFile())},[e[34]||(e[34]=i(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,Oe)])]),o(v,null,{default:l(()=>e[35]||(e[35]=[i(" Zuordnung der Komponenten ")])),_:1}),(r(!0),f(W,null,F(s.dataMigrationConfig,c=>(r(),f("div",{key:c.sectionName},[o(v,null,{default:l(()=>[i(y(c.sectionName),1)]),_:2},1024),(r(!0),f(W,null,F(c.sectionComponents,h=>(r(),w(M,{key:h.key,modelValue:s.dataMigrationMapping[h.key],"onUpdate:modelValue":d=>s.dataMigrationMapping[h.key]=d,title:h.label,options:a.getMigrationOptions(h.validTypes)},I({_:2},[h.help?{name:"help",fn:l(()=>[i(y(h.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),n("div",We,[n("div",Me,[o(C,{class:D(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=c=>a.dataMigration())},{default:l(()=>[e[36]||(e[36]=i(" Datenübernahme starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?_("",!0):(r(),f("form",Fe,[o(O,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ae,[n("div",Te,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=c=>a.factoryReset())},{default:l(()=>[o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[38]||(e[38]=i(" Zurücksetzen ")),o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(p,{subtype:"danger"},{default:l(()=>e[37]||(e[37]=[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})]))])):_("",!0)])}const Le=S(ne,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Re=Object.freeze(Object.defineProperty({__proto__:null,default:Le},Symbol.toStringTag,{value:"Module"}));export{J as B,Le as D,Re as a};
+import{l as L,af as z,ag as V,ah as j,ai as H,aj as R,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,C as P}from"./index-c79666b6.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as S,u as m,k as r,l as f,A as w,N as l,y as i,z as y,D as o,x as n,a0 as N,a1 as q,J as W,B as _,q as D,K as F,a2 as I}from"./vendor-a21b3a62.js";const G={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},J=S(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),Z={name:"BackupCloudConfigFallback",mixins:[J]},K={class:"backup-cloud-fallback"},$={key:1};function Q(t,e,u,g,s,a){const b=m("openwb-base-alert"),p=m("openwb-base-textarea");return r(),f("div",K,[Object.keys(t.backupCloud.configuration).length==0?(r(),w(b,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+y(t.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),f("div",$,[o(b,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+y(t.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(p,{title:"Konfiguration",subtype:"json","model-value":t.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=v=>t.updateConfiguration(v,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),o(b,{subtype:"info"},{default:l(()=>[n("pre",null,y(JSON.stringify(t.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const X=S(Z,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),Y={name:"OpenwbBackupCloudProxy",props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),N({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-04652ce0.js"),["assets/backup_cloud-04652ce0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-9329a99f.js"),["assets/backup_cloud-9329a99f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-6fe765b0.js"),["assets/backup_cloud-6fe765b0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-a666a458.js"),["assets/backup_cloud-a666a458.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:X})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function ee(t,e,u,g,s,a){const b=m("openwb-base-heading");return r(),f(W,null,[o(b,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+y(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(a.myComponent),{"backup-cloud":u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=p=>a.updateConfiguration(p)),onSendCommand:e[1]||(e[1]=p=>a.sendCommand(p))},null,40,["backup-cloud"]))],64)}const te=S(Y,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(z,V,j,H,R);const ne={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:te},mixins:[P],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let s=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let s=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var b="Hochladen der Datei fehlgeschlagen!<br />"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),b+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),b+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(b,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},oe={class:"system"},ie={key:1},se={name:"backupForm"},ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue={key:0,name:"restoreForm"},de={class:"input-group"},re={class:"input-group-prepend"},pe={class:"input-group-text"},ce={class:"custom-file"},me={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},be={class:"input-group-append"},fe=["disabled"],ge={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:1,name:"cloudBackupForm"},ye={key:0},ve={name:"dataMigrationForm"},_e={class:"input-group"},we={class:"input-group-prepend"},Ce={class:"input-group-text"},Be={class:"custom-file"},De={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Se={class:"input-group-append"},Oe=["disabled"],We={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},Fe={key:1,name:"resetForm"},Ae={class:"row justify-content-center"},Te={class:"col-md-4 d-flex py-1 justify-content-center"};function xe(t,e,u,g,s,a){const b=m("openwb-base-button-group-input"),p=m("openwb-base-alert"),v=m("openwb-base-heading"),k=m("font-awesome-icon"),C=m("openwb-base-click-button"),M=m("openwb-base-select-input"),A=m("openwb-base-button-input"),T=m("openwb-backup-cloud-proxy"),x=m("openwb-base-submit-buttons"),O=m("openwb-base-card");return r(),f("div",oe,[u.installAssistantActive?_("",!0):(r(),w(p,{key:0,subtype:"danger"},{default:l(()=>[e[17]||(e[17]=n("h2",null,"Achtung!",-1)),e[18]||(e[18]=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),o(b,{modelValue:s.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=c=>s.warningAcknowledged=c),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),s.warningAcknowledged||u.installAssistantActive?(r(),f("div",ie,[o(O,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var c,h;return[n("form",se,[o(v,null,{default:l(()=>e[19]||(e[19]=[i("Sicherung")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[20]||(e[20]=[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[21]||(e[21]=[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),n("div",ae,[n("div",le,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[e[22]||(e[22]=i(" Sicherung erstellen ")),o(k,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),s.showRestoreSection?(r(),f("form",ue,[e[27]||(e[27]=n("hr",null,null,-1)),o(v,null,{default:l(()=>e[23]||(e[23]=[i("Wiederherstellung")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[24]||(e[24]=[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),n("br",null,null,-1),i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),n("div",de,[n("div",re,[n("div",pe,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ce,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>a.updateSelectedRestoreFile(d))},null,32),n("label",me,y(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",be,[n("button",{class:D(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>a.uploadRestoreFile())},[e[25]||(e[25]=i(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,fe)])]),n("div",ge,[n("div",he,[o(C,{class:D(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>a.restoreBackup())},{default:l(()=>[e[26]||(e[26]=i(" Wiederherstellung starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),u.showBackupCloudSection?(r(),f("form",ke,[e[31]||(e[31]=n("hr",null,null,-1)),o(v,null,{default:l(()=>e[28]||(e[28]=[i(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[29]||(e[29]=[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),n("br",null,null,-1),i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),n("br",null,null,-1),i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),i(" . ")])),_:1}),o(M,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(c=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:c.type,"onUpdate:modelValue":e[5]||(e[5]=d=>a.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(h=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&h.type?(r(),f("div",ye,[o(b,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>e[30]||(e[30]=[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),o(A,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>a.sendSystemCommand("createCloudBackup",{}))}),o(T,{"backup-cloud":t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>a.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>a.sendSystemCommand(d.command,d.args))},null,8,["backup-cloud"])])):_("",!0),o(x,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?_("",!0):(r(),w(O,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",ve,[o(p,{subtype:"info"},{default:l(()=>e[32]||(e[32]=[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[33]||(e[33]=[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),n("br",null,null,-1),i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),n("br",null,null,-1),i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),n("div",_e,[n("div",we,[n("div",Ce,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Be,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=c=>a.updateSelectedDataMigrationFile(c))},null,32),n("label",De,y(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Se,[n("button",{class:D(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=c=>a.uploadDataMigrationFile())},[e[34]||(e[34]=i(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,Oe)])]),o(v,null,{default:l(()=>e[35]||(e[35]=[i(" Zuordnung der Komponenten ")])),_:1}),(r(!0),f(W,null,F(s.dataMigrationConfig,c=>(r(),f("div",{key:c.sectionName},[o(v,null,{default:l(()=>[i(y(c.sectionName),1)]),_:2},1024),(r(!0),f(W,null,F(c.sectionComponents,h=>(r(),w(M,{key:h.key,modelValue:s.dataMigrationMapping[h.key],"onUpdate:modelValue":d=>s.dataMigrationMapping[h.key]=d,title:h.label,options:a.getMigrationOptions(h.validTypes)},I({_:2},[h.help?{name:"help",fn:l(()=>[i(y(h.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),n("div",We,[n("div",Me,[o(C,{class:D(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=c=>a.dataMigration())},{default:l(()=>[e[36]||(e[36]=i(" Datenübernahme starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?_("",!0):(r(),f("form",Fe,[o(O,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ae,[n("div",Te,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=c=>a.factoryReset())},{default:l(()=>[o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[38]||(e[38]=i(" Zurücksetzen ")),o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(p,{subtype:"danger"},{default:l(()=>e[37]||(e[37]=[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})]))])):_("",!0)])}const Le=S(ne,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Re=Object.freeze(Object.defineProperty({__proto__:null,default:Le},Symbol.toStringTag,{value:"Module"}));export{J as B,Le as D,Re as a};
diff --git a/web/settings/assets/DebugConfig-d1261f2b.js b/web/settings/assets/DebugConfig-6d0524fc.js
similarity index 98%
rename from web/settings/assets/DebugConfig-d1261f2b.js
rename to web/settings/assets/DebugConfig-6d0524fc.js
index 15fda99b3c..138ca49705 100644
--- a/web/settings/assets/DebugConfig-d1261f2b.js
+++ b/web/settings/assets/DebugConfig-6d0524fc.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-f9fda857.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-41164876.js";import{_,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as b,J as F,K as N,y as f}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-c79666b6.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-41164876.js";import{_,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as b,J as F,K as N,y as f}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),m=s("openwb-base-avatar"),p=s("openwb-base-card");return d(),w(p,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(m,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=_($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",components:{OpenwbLogCard:I},mixins:[k],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),m=s("openwb-base-alert"),p=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),b("div",z,[v("form",V,[i(p,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>e[4]||(e[4]=[f(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')])),_:1},8,["model-value"]),i(m,{subtype:"warning"},{default:l(()=>e[5]||(e[5]=[f(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')])),_:1})]),_:1}),i(c,{"form-name":"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),b(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=_(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-f6ca097b.js b/web/settings/assets/GeneralChargeConfig-764e9a8c.js
similarity index 94%
rename from web/settings/assets/GeneralChargeConfig-f6ca097b.js
rename to web/settings/assets/GeneralChargeConfig-764e9a8c.js
index 443b0208f0..14452bd935 100644
--- a/web/settings/assets/GeneralChargeConfig-f6ca097b.js
+++ b/web/settings/assets/GeneralChargeConfig-764e9a8c.js
@@ -1 +1 @@
-import{_ as m,C}from"./index-f9fda857.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as b,u as o,k as l,l as s,D as n,N as a,y as r,z as v,x as d,a0 as T,A as k,a1 as V,J as P,B as W}from"./vendor-a21b3a62.js";const L={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},q=b(L,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),M={name:"ElectricityTariffConfigFallback",mixins:[q]},O={class:"backup-cloud-fallback"};function A(t,e,f,h,y,p){const u=o("openwb-base-alert"),g=o("openwb-base-textarea");return l(),s("div",O,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+v(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=c=>t.updateConfiguration(c,"configuration"))},{help:a(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[d("pre",null,v(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const U=b(M,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),F={name:"OpenwbElectricityTariffProxy",props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),T({loader:()=>E(Object.assign({"./awattar/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-63a1e9ec.js"),["assets/electricity_tariff-63a1e9ec.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-4bc01805.js"),["assets/electricity_tariff-4bc01805.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-7b04b620.js"),["assets/electricity_tariff-7b04b620.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-5111f15f.js"),["assets/electricity_tariff-5111f15f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-e23d6291.js"),["assets/electricity_tariff-e23d6291.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:U})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function D(t,e,f,h,y,p){const u=o("openwb-base-heading");return l(),s(P,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+v(f.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{"electricity-tariff":f.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=g=>p.updateConfiguration(g))},null,40,["electricity-tariff"]))],64)}const N=b(F,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),I={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:N},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(f=>f.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},j={class:"generalChargeConfig"},R={name:"generalChargeConfigForm"},Z={key:0},G={key:1},x={key:1},J={key:2},K={key:0},H={key:1},Q={key:0};function X(t,e,f,h,y,p){const u=o("openwb-base-alert"),g=o("openwb-base-button-group-input"),c=o("openwb-base-range-input"),w=o("openwb-base-heading"),_=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),$=o("openwb-base-submit-buttons");return l(),s("div",j,[d("form",R,[n(B,{title:"Allgemein"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",Z,[n(u,{subtype:"info"},{default:a(()=>e[12]||(e[12]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",G,[n(g,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>e[13]||(e[13]=[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),d("br",null,null,-1),r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(c,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>e[14]||(e[14]=[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):W("",!0),n(g,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=i=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>e[15]||(e[15]=[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),d("br",null,null,-1),r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(c,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=i=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>e[16]||(e[16]=[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),d("br",null,null,-1),r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[20]||(e[20]=d("hr",null,null,-1)),n(w,null,{help:a(()=>e[17]||(e[17]=[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),d("br",null,null,-1),r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:a(()=>[e[18]||(e[18]=r(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",x,[n(u,{subtype:"info"},{default:a(()=>e[19]||(e[19]=[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")])),_:1})])):(l(),s("div",J,[n(_,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=i=>t.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(_,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=i=>t.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(_,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=i=>t.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",K,[n(u,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",H,[n(w,null,{default:a(()=>e[22]||(e[22]=[r(" Variable Stromtarife ")])),_:1}),n(u,{subtype:"info"},{default:a(()=>e[23]||(e[23]=[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),d("br",null,null,-1),r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",Q,[n(S,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricity-tariff"])])):W("",!0)]))]),_:1}),n($,{"form-name":"generalChargeConfigForm",onSave:e[9]||(e[9]=i=>t.$emit("save")),onReset:e[10]||(e[10]=i=>t.$emit("reset")),onDefaults:e[11]||(e[11]=i=>t.$emit("defaults"))})])])}const Y=b(I,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ie=Object.freeze(Object.defineProperty({__proto__:null,default:Y},Symbol.toStringTag,{value:"Module"}));export{q as E,ie as G};
+import{_ as m,C}from"./index-c79666b6.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as b,u as o,k as l,l as s,D as n,N as a,y as r,z as v,x as d,a0 as T,A as k,a1 as V,J as P,B as W}from"./vendor-a21b3a62.js";const L={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},q=b(L,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),M={name:"ElectricityTariffConfigFallback",mixins:[q]},O={class:"backup-cloud-fallback"};function A(t,e,f,h,y,p){const u=o("openwb-base-alert"),g=o("openwb-base-textarea");return l(),s("div",O,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+v(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=c=>t.updateConfiguration(c,"configuration"))},{help:a(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[d("pre",null,v(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const U=b(M,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),F={name:"OpenwbElectricityTariffProxy",props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),T({loader:()=>E(Object.assign({"./awattar/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-897c7196.js"),["assets/electricity_tariff-897c7196.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-10566180.js"),["assets/electricity_tariff-10566180.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-32db6a64.js"),["assets/electricity_tariff-32db6a64.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-eb995216.js"),["assets/electricity_tariff-eb995216.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-77492691.js"),["assets/electricity_tariff-77492691.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:U})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function D(t,e,f,h,y,p){const u=o("openwb-base-heading");return l(),s(P,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+v(f.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{"electricity-tariff":f.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=g=>p.updateConfiguration(g))},null,40,["electricity-tariff"]))],64)}const N=b(F,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),I={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:N},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(f=>f.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},j={class:"generalChargeConfig"},R={name:"generalChargeConfigForm"},Z={key:0},G={key:1},x={key:1},J={key:2},K={key:0},H={key:1},Q={key:0};function X(t,e,f,h,y,p){const u=o("openwb-base-alert"),g=o("openwb-base-button-group-input"),c=o("openwb-base-range-input"),w=o("openwb-base-heading"),_=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),$=o("openwb-base-submit-buttons");return l(),s("div",j,[d("form",R,[n(B,{title:"Allgemein"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",Z,[n(u,{subtype:"info"},{default:a(()=>e[12]||(e[12]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",G,[n(g,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>e[13]||(e[13]=[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),d("br",null,null,-1),r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(c,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>e[14]||(e[14]=[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):W("",!0),n(g,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=i=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>e[15]||(e[15]=[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),d("br",null,null,-1),r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(c,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=i=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>e[16]||(e[16]=[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),d("br",null,null,-1),r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[20]||(e[20]=d("hr",null,null,-1)),n(w,null,{help:a(()=>e[17]||(e[17]=[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),d("br",null,null,-1),r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:a(()=>[e[18]||(e[18]=r(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",x,[n(u,{subtype:"info"},{default:a(()=>e[19]||(e[19]=[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")])),_:1})])):(l(),s("div",J,[n(_,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=i=>t.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(_,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=i=>t.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(_,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=i=>t.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",K,[n(u,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",H,[n(w,null,{default:a(()=>e[22]||(e[22]=[r(" Variable Stromtarife ")])),_:1}),n(u,{subtype:"info"},{default:a(()=>e[23]||(e[23]=[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),d("br",null,null,-1),r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",Q,[n(S,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricity-tariff"])])):W("",!0)]))]),_:1}),n($,{"form-name":"generalChargeConfigForm",onSave:e[9]||(e[9]=i=>t.$emit("save")),onReset:e[10]||(e[10]=i=>t.$emit("reset")),onDefaults:e[11]||(e[11]=i=>t.$emit("defaults"))})])])}const Y=b(I,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ie=Object.freeze(Object.defineProperty({__proto__:null,default:Y},Symbol.toStringTag,{value:"Module"}));export{q as E,ie as G};
diff --git a/web/settings/assets/GeneralConfig-1c49e709.js b/web/settings/assets/GeneralConfig-1687a15a.js
similarity index 98%
rename from web/settings/assets/GeneralConfig-1c49e709.js
rename to web/settings/assets/GeneralConfig-1687a15a.js
index dc044fcb49..357e4ec97f 100644
--- a/web/settings/assets/GeneralConfig-1c49e709.js
+++ b/web/settings/assets/GeneralConfig-1687a15a.js
@@ -1 +1 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-41164876.js";import{_ as U,C as re}from"./index-f9fda857.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as h,u as b,k as l,l as d,A as v,N as o,y as a,z as c,D as n,x as s,a0 as M,a1 as I,J as G,B as _}from"./vendor-a21b3a62.js";const ie={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},le=h(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),se={name:"WebThemeFallback",mixins:[le]},ue={class:"web-theme-fallback"},de={key:1};function pe(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-textarea");return l(),d("div",ue,[Object.keys(t.webTheme.configuration).length==0?(l(),v(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+c(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",de,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+c(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,c(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const ge=h(se,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const me={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:F},props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),M({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:ge})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function be(t,e,p,B,y,m){const g=b("font-awesome-icon"),r=b("openwb-base-alert"),w=b("openwb-base-heading");return l(),d(G,null,[p.webTheme.official?(l(),v(r,{key:0,subtype:"success"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+c(p.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),v(r,{key:1,subtype:"info"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(w,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+c(p.webTheme.name)+'" ',1)]),_:1}),(l(),v(I(m.myComponent),{"web-theme":p.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>m.updateConfiguration(W))},null,40,["web-theme"]))],64)}const fe=h(me,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},_e=h(ce,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),ve={name:"RippleControlReceiverConfigFallback",mixins:[_e]},we={class:"ripple-control-receiver-fallback"},he={key:1};function We(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-textarea");return l(),d("div",we,[Object.keys(t.rippleControlReceiver.configuration).length==0?(l(),v(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+c(t.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",he,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+c(t.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":t.rippleControlReceiver.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,c(JSON.stringify(t.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const Be=h(ve,[["render",We],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ye={name:"OpenwbRippleControlReceiverProxy",props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),M({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-8b00be72.js"),["assets/ripple_control_receiver-8b00be72.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-432648b7.js"),["assets/ripple_control_receiver-432648b7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:Be})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Se(t,e,p,B,y,m){const g=b("openwb-base-heading");return l(),d(G,null,[n(g,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+c(p.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),v(I(m.myComponent),{"ripple-control-receiver":p.rippleControlReceiver,"onUpdate:configuration":e[0]||(e[0]=r=>m.updateConfiguration(r)),onSendCommand:e[1]||(e[1]=r=>m.sendCommand(r))},null,40,["ripple-control-receiver"]))],64)}const ke=h(ye,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const Ve={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:fe,OpenwbRippleControlReceiverProxy:ke,FontAwesomeIcon:F},mixins:[re],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(p=>p.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},getRippleControlReceiverDefaultConfiguration(t){const e=this.rippleControlReceiverList.find(p=>p.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedRippleControlReceiverModule(t){this.updateState("openWB/general/ripple_control_receiver/module",t,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(t))}}},Ce={class:"generalConfig"},Re={name:"generalConfigForm"},$e={key:0},Te={key:1},qe={key:1},ze={class:"border border-info w-100 p-1"},De={class:"border border-info w-100 p-1"},Oe={key:0},Ee={key:1},Ne={key:0},Ae={key:2},xe={key:0},Pe={key:0},Le={key:1},Ue={key:0},Je={key:0},Fe={key:1};function je(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-button-group-input"),w=b("openwb-base-copy-to-clipboard"),W=b("openwb-base-card"),S=b("openwb-base-heading"),k=b("openwb-base-select-input"),K=b("openwb-ripple-control-receiver-proxy"),H=b("openwb-web-theme-proxy"),f=b("font-awesome-icon"),Z=b("openwb-base-submit-buttons");return l(),d("div",Ce,[s("form",Re,[n(W,{title:"Steuerungsmodus"},{default:o(()=>[n(g,{subtype:"info"},{default:o(()=>e[29]||(e[29]=[s("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),s("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),s("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),s("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=u=>t.updateState("openWB/general/extern",u))},null,8,["model-value"]),p.installAssistantActive?_("",!0):(l(),d("div",$e,[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),v(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=u=>t.updateState("openWB/general/modbus_control",u))},{help:o(()=>e[30]||(e[30]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),s("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),d("div",Te,[n(g,{subtype:"info"},{default:o(()=>e[31]||(e[31]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):_("",!0)])),p.installAssistantActive?_("",!0):(l(),d("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=u=>t.updateState("openWB/general/http_api",u))},{help:o(()=>[e[38]||(e[38]=s("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1)),e[39]||(e[39]=s("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1)),s("ul",null,[s("li",null,[e[32]||(e[32]=a(" GET-Request:")),e[33]||(e[33]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+c(m.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),s("li",null,[e[34]||(e[34]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[35]||(e[35]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+c(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[40]||(e[40]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",ze,c(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),e[41]||(e[41]=s("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1)),e[42]||(e[42]=s("p",null,"Beispiel 2: integriertes Display abschalten",-1)),s("ul",null,[s("li",null,[e[36]||(e[36]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[37]||(e[37]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+c(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[43]||(e[43]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",De,c(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(W,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Oe,[n(g,{subtype:"info"},{default:o(()=>e[44]||(e[44]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):_("",!0),p.installAssistantActive?_("",!0):(l(),d("div",Ee,[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ne,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=u=>t.updateState("openWB/general/control_interval",u))},{help:o(()=>e[45]||(e[45]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),s("br",null,null,-1),s("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=u=>t.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>e[46]||(e[46]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),s("br",null,null,-1),s("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):_("",!0),e[47]||(e[47]=s("hr",null,null,-1))])),t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ae,[n(S,{class:"mt-0"},{default:o(()=>e[48]||(e[48]=[a(" Steuerbare Verbrauchseinrichtung ")])),_:1}),n(g,{sub_type:"info"},{default:o(()=>e[49]||(e[49]=[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')])),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:m.rippleControlReceiverList,"model-value":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":e[5]||(e[5]=u=>m.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),d("div",xe,[n(K,{"ripple-control-receiver":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":e[6]||(e[6]=u=>m.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["ripple-control-receiver"])])):_("",!0)])):_("",!0)]),_:1}),p.installAssistantActive?_("",!0):(l(),v(W,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Pe,[n(g,{subtype:"info"},{default:o(()=>e[50]||(e[50]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Le,[n(S,{class:"mt-0"},{default:o(()=>e[51]||(e[51]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),d("div",Ue,[n(k,{class:"mb-2",title:"Theme",groups:m.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[7]||(e[7]=u=>m.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(l(),v(H,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[8]||(e[8]=u=>m.updateConfiguration("openWB/general/web_theme",u))},null,8,["web-theme"])):_("",!0)])):_("",!0)]))]),_:1})),p.installAssistantActive?_("",!0):(l(),v(W,{key:1,title:"Lade-Log"},{default:o(()=>{var u,V,C,R,$,T,q,z,D,O,E,N,A,x,P,L;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Je,[n(g,{subtype:"info"},{default:o(()=>e[52]||(e[52]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Fe,[n(r,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[9]||(e[9]=i=>t.updateState("openWB/general/range_unit",i))},null,8,["model-value"]),n(S,null,{default:o(()=>e[53]||(e[53]=[a(" Auswahl der Datenfelder ")])),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":e[10]||(e[10]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","calendar"]}),e[54]||(e[54]=a(" Beginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":e[11]||(e[11]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","calendar"]}),e[55]||(e[55]=a(" Ende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":e[12]||(e[12]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","clock"]}),e[56]||(e[56]=a(" Dauer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":e[13]||(e[13]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","coins"]}),e[57]||(e[57]=a(" Kosten "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.data_power_source,"onUpdate:modelValue":e[14]||(e[14]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","pie-chart"]}),e[58]||(e[58]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.vehicle_name,"onUpdate:modelValue":e[15]||(e[15]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[59]||(e[59]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":e[16]||(e[16]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[60]||(e[60]=a(" Lademodus "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_prio,"onUpdate:modelValue":e[17]||(e[17]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[61]||(e[61]=a(" Priorität "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_rfid,"onUpdate:modelValue":e[18]||(e[18]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[62]||(e[62]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":e[19]||(e[19]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[63]||(e[63]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":e[20]||(e[20]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[64]||(e[64]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":e[21]||(e[21]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[65]||(e[65]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":e[22]||(e[22]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[66]||(e[66]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.data_imported_since_mode_switch,"onUpdate:modelValue":e[23]||(e[23]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[67]||(e[67]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_start,"onUpdate:modelValue":e[24]||(e[24]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[68]||(e[68]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_end,"onUpdate:modelValue":e[25]||(e[25]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[69]||(e[69]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{"form-name":"generalConfigForm",onSave:e[26]||(e[26]=u=>t.$emit("save")),onReset:e[27]||(e[27]=u=>t.$emit("reset")),onDefaults:e[28]||(e[28]=u=>t.$emit("defaults"))})])])}const Me=h(Ve,[["render",je],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Me},Symbol.toStringTag,{value:"Module"}));export{Me as G,_e as R,Ze as a};
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-41164876.js";import{_ as U,C as re}from"./index-c79666b6.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as h,u as b,k as l,l as d,A as v,N as o,y as a,z as c,D as n,x as s,a0 as M,a1 as I,J as G,B as _}from"./vendor-a21b3a62.js";const ie={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},le=h(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),se={name:"WebThemeFallback",mixins:[le]},ue={class:"web-theme-fallback"},de={key:1};function pe(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-textarea");return l(),d("div",ue,[Object.keys(t.webTheme.configuration).length==0?(l(),v(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+c(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",de,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+c(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,c(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const ge=h(se,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const me={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:F},props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),M({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:ge})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function be(t,e,p,B,y,m){const g=b("font-awesome-icon"),r=b("openwb-base-alert"),w=b("openwb-base-heading");return l(),d(G,null,[p.webTheme.official?(l(),v(r,{key:0,subtype:"success"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+c(p.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),v(r,{key:1,subtype:"info"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(w,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+c(p.webTheme.name)+'" ',1)]),_:1}),(l(),v(I(m.myComponent),{"web-theme":p.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>m.updateConfiguration(W))},null,40,["web-theme"]))],64)}const fe=h(me,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},_e=h(ce,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),ve={name:"RippleControlReceiverConfigFallback",mixins:[_e]},we={class:"ripple-control-receiver-fallback"},he={key:1};function We(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-textarea");return l(),d("div",we,[Object.keys(t.rippleControlReceiver.configuration).length==0?(l(),v(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+c(t.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",he,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+c(t.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":t.rippleControlReceiver.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,c(JSON.stringify(t.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const Be=h(ve,[["render",We],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ye={name:"OpenwbRippleControlReceiverProxy",props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),M({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7fecf9d6.js"),["assets/ripple_control_receiver-7fecf9d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-370883cc.js"),["assets/ripple_control_receiver-370883cc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:Be})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Se(t,e,p,B,y,m){const g=b("openwb-base-heading");return l(),d(G,null,[n(g,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+c(p.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),v(I(m.myComponent),{"ripple-control-receiver":p.rippleControlReceiver,"onUpdate:configuration":e[0]||(e[0]=r=>m.updateConfiguration(r)),onSendCommand:e[1]||(e[1]=r=>m.sendCommand(r))},null,40,["ripple-control-receiver"]))],64)}const ke=h(ye,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const Ve={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:fe,OpenwbRippleControlReceiverProxy:ke,FontAwesomeIcon:F},mixins:[re],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(p=>p.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},getRippleControlReceiverDefaultConfiguration(t){const e=this.rippleControlReceiverList.find(p=>p.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedRippleControlReceiverModule(t){this.updateState("openWB/general/ripple_control_receiver/module",t,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(t))}}},Ce={class:"generalConfig"},Re={name:"generalConfigForm"},$e={key:0},Te={key:1},qe={key:1},ze={class:"border border-info w-100 p-1"},De={class:"border border-info w-100 p-1"},Oe={key:0},Ee={key:1},Ne={key:0},Ae={key:2},xe={key:0},Pe={key:0},Le={key:1},Ue={key:0},Je={key:0},Fe={key:1};function je(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-button-group-input"),w=b("openwb-base-copy-to-clipboard"),W=b("openwb-base-card"),S=b("openwb-base-heading"),k=b("openwb-base-select-input"),K=b("openwb-ripple-control-receiver-proxy"),H=b("openwb-web-theme-proxy"),f=b("font-awesome-icon"),Z=b("openwb-base-submit-buttons");return l(),d("div",Ce,[s("form",Re,[n(W,{title:"Steuerungsmodus"},{default:o(()=>[n(g,{subtype:"info"},{default:o(()=>e[29]||(e[29]=[s("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),s("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),s("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),s("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=u=>t.updateState("openWB/general/extern",u))},null,8,["model-value"]),p.installAssistantActive?_("",!0):(l(),d("div",$e,[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),v(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=u=>t.updateState("openWB/general/modbus_control",u))},{help:o(()=>e[30]||(e[30]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),s("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),d("div",Te,[n(g,{subtype:"info"},{default:o(()=>e[31]||(e[31]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):_("",!0)])),p.installAssistantActive?_("",!0):(l(),d("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=u=>t.updateState("openWB/general/http_api",u))},{help:o(()=>[e[38]||(e[38]=s("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1)),e[39]||(e[39]=s("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1)),s("ul",null,[s("li",null,[e[32]||(e[32]=a(" GET-Request:")),e[33]||(e[33]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+c(m.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),s("li",null,[e[34]||(e[34]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[35]||(e[35]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+c(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[40]||(e[40]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",ze,c(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),e[41]||(e[41]=s("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1)),e[42]||(e[42]=s("p",null,"Beispiel 2: integriertes Display abschalten",-1)),s("ul",null,[s("li",null,[e[36]||(e[36]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[37]||(e[37]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+c(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[43]||(e[43]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",De,c(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(W,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Oe,[n(g,{subtype:"info"},{default:o(()=>e[44]||(e[44]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):_("",!0),p.installAssistantActive?_("",!0):(l(),d("div",Ee,[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ne,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=u=>t.updateState("openWB/general/control_interval",u))},{help:o(()=>e[45]||(e[45]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),s("br",null,null,-1),s("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=u=>t.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>e[46]||(e[46]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),s("br",null,null,-1),s("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):_("",!0),e[47]||(e[47]=s("hr",null,null,-1))])),t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ae,[n(S,{class:"mt-0"},{default:o(()=>e[48]||(e[48]=[a(" Steuerbare Verbrauchseinrichtung ")])),_:1}),n(g,{sub_type:"info"},{default:o(()=>e[49]||(e[49]=[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')])),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:m.rippleControlReceiverList,"model-value":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":e[5]||(e[5]=u=>m.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),d("div",xe,[n(K,{"ripple-control-receiver":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":e[6]||(e[6]=u=>m.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["ripple-control-receiver"])])):_("",!0)])):_("",!0)]),_:1}),p.installAssistantActive?_("",!0):(l(),v(W,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Pe,[n(g,{subtype:"info"},{default:o(()=>e[50]||(e[50]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Le,[n(S,{class:"mt-0"},{default:o(()=>e[51]||(e[51]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),d("div",Ue,[n(k,{class:"mb-2",title:"Theme",groups:m.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[7]||(e[7]=u=>m.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(l(),v(H,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[8]||(e[8]=u=>m.updateConfiguration("openWB/general/web_theme",u))},null,8,["web-theme"])):_("",!0)])):_("",!0)]))]),_:1})),p.installAssistantActive?_("",!0):(l(),v(W,{key:1,title:"Lade-Log"},{default:o(()=>{var u,V,C,R,$,T,q,z,D,O,E,N,A,x,P,L;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Je,[n(g,{subtype:"info"},{default:o(()=>e[52]||(e[52]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Fe,[n(r,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[9]||(e[9]=i=>t.updateState("openWB/general/range_unit",i))},null,8,["model-value"]),n(S,null,{default:o(()=>e[53]||(e[53]=[a(" Auswahl der Datenfelder ")])),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":e[10]||(e[10]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","calendar"]}),e[54]||(e[54]=a(" Beginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":e[11]||(e[11]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","calendar"]}),e[55]||(e[55]=a(" Ende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":e[12]||(e[12]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","clock"]}),e[56]||(e[56]=a(" Dauer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":e[13]||(e[13]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","coins"]}),e[57]||(e[57]=a(" Kosten "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.data_power_source,"onUpdate:modelValue":e[14]||(e[14]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","pie-chart"]}),e[58]||(e[58]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.vehicle_name,"onUpdate:modelValue":e[15]||(e[15]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[59]||(e[59]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":e[16]||(e[16]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[60]||(e[60]=a(" Lademodus "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_prio,"onUpdate:modelValue":e[17]||(e[17]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[61]||(e[61]=a(" Priorität "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_rfid,"onUpdate:modelValue":e[18]||(e[18]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[62]||(e[62]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":e[19]||(e[19]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[63]||(e[63]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":e[20]||(e[20]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[64]||(e[64]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":e[21]||(e[21]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[65]||(e[65]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":e[22]||(e[22]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[66]||(e[66]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.data_imported_since_mode_switch,"onUpdate:modelValue":e[23]||(e[23]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[67]||(e[67]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_start,"onUpdate:modelValue":e[24]||(e[24]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[68]||(e[68]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_end,"onUpdate:modelValue":e[25]||(e[25]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[69]||(e[69]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{"form-name":"generalConfigForm",onSave:e[26]||(e[26]=u=>t.$emit("save")),onReset:e[27]||(e[27]=u=>t.$emit("reset")),onDefaults:e[28]||(e[28]=u=>t.$emit("defaults"))})])])}const Me=h(Ve,[["render",je],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Me},Symbol.toStringTag,{value:"Module"}));export{Me as G,_e as R,Ze as a};
diff --git a/web/settings/assets/HardwareInstallation-70f156e6.js b/web/settings/assets/HardwareInstallation-d2c0f1d5.js
similarity index 69%
rename from web/settings/assets/HardwareInstallation-70f156e6.js
rename to web/settings/assets/HardwareInstallation-d2c0f1d5.js
index b90ad97485..106b48a11e 100644
--- a/web/settings/assets/HardwareInstallation-70f156e6.js
+++ b/web/settings/assets/HardwareInstallation-d2c0f1d5.js
@@ -1 +1 @@
-import{l as U,d as N,t as G,a7 as K,a0 as H,P as F,O as $,N as J,F as Z}from"./vendor-fortawesome-41164876.js";import{_ as e,C as Q}from"./index-f9fda857.js";import{_ as B}from"./dynamic-import-helper-be004503.js";import{_ as I,u as p,k as s,l as g,A as E,N as i,y as u,z as b,D as r,x as l,a0 as M,a1 as X,B as P,J as R,K as h,q as k}from"./vendor-a21b3a62.js";const Y={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,o=void 0){this.$emit("update:configuration",{value:t,object:o})}}},j=I(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),ee={name:"DeviceFallback",mixins:[j]},oe={class:"device-fallback"},te={key:1};function ie(t,o,_,m,a,d){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return s(),g("div",oe,[Object.keys(t.device.configuration).length==0?(s(),E(c,{key:0,subtype:"info"},{default:i(()=>[u(' Der Gerät-Typ "'+b(t.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",te,[r(c,{subtype:"warning"},{default:i(()=>[u(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+b(t.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.device.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:i(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:i(()=>[l("pre",null,b(JSON.stringify(t.device.configuration,void 0,2)),1)]),_:1})]))])}const _e=I(ee,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ne={mixins:[j],props:{component:{type:Object,required:!0}}},re=I(ne,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),de={name:"ComponentFallback",mixins:[re]},ue={class:"component-fallback"},se={key:1};function ae(t,o,_,m,a,d){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return s(),g("div",ue,[Object.keys(t.component.configuration).length==0?(s(),E(c,{key:0,subtype:"info"},{default:i(()=>[u(' Der Komponenten-Typ "'+b(t.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",se,[r(c,{subtype:"warning"},{default:i(()=>[u(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+b(t.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.component.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:i(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:i(()=>[l("pre",null,b(JSON.stringify(t.component.configuration,void 0,2)),1)]),_:1})]))])}const ve=I(de,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),me={name:"OpenwbConfigProxy",props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},emits:["update:configuration"],computed:{myComponent(){var t;return console.debug(`loading component: ${this.device.type} / ${(t=this.component)==null?void 0:t.type}`),this.component!==void 0?M({loader:()=>B(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-4cd875ee.js"),["assets/device-4cd875ee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-17812629.js"),["assets/device-17812629.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-44ac2d07.js"),["assets/device-44ac2d07.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-44627252.js"),["assets/device-44627252.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-4696232a.js"),["assets/device-4696232a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-116a65cb.js"),["assets/counter-116a65cb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-eed61bed.js"),["assets/device-eed61bed.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-bdfaf1f4.js"),["assets/bat-bdfaf1f4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-ec9f9982.js"),["assets/counter-ec9f9982.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-d0fb85ca.js"),["assets/device-d0fb85ca.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-287e8910.js"),["assets/inverter-287e8910.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-cda681c6.js"),["assets/counter-cda681c6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-51badd6c.js"),["assets/device-51badd6c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-2c898c0e.js"),["assets/inverter-2c898c0e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-cd05bdaa.js"),["assets/device-cd05bdaa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-c8cb4ab4.js"),["assets/counter-c8cb4ab4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-7893f72c.js"),["assets/device-7893f72c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-1529fe73.js"),["assets/inverter-1529fe73.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-840118d9.js"),["assets/bat-840118d9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-752b4387.js"),["assets/device-752b4387.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-ab8d4880.js"),["assets/bat-ab8d4880.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-55fd6368.js"),["assets/counter-55fd6368.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-2045e148.js"),["assets/device-2045e148.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-692fd261.js"),["assets/inverter-692fd261.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-9d6be7fa.js"),["assets/bat-9d6be7fa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-46c91fda.js"),["assets/counter_sm-46c91fda.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-823f72ad.js"),["assets/device-823f72ad.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-4a5d5bbc.js"),["assets/inverter_secondary-4a5d5bbc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-3b4b20a7.js"),["assets/bat-3b4b20a7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-865f9c61.js"),["assets/counter-865f9c61.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-1eaab064.js"),["assets/device-1eaab064.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-fa1c29cd.js"),["assets/inverter-fa1c29cd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-61eea3a5.js"),["assets/bat-61eea3a5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-7fca39df.js"),["assets/counter-7fca39df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-436ab177.js"),["assets/device-436ab177.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-80f24f74.js"),["assets/inverter-80f24f74.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-a74943cb.js"),["assets/bat-a74943cb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-4410dc4e.js"),["assets/counter-4410dc4e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f8b42d98.js"),["assets/device-f8b42d98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-da1db027.js"),["assets/inverter-da1db027.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-7a3ba47e.js"),["assets/counter-7a3ba47e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-d91bc952.js"),["assets/device-d91bc952.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-2fe61a6a.js"),["assets/device-2fe61a6a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-99d6a6cb.js"),["assets/bat-99d6a6cb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-b3f26d9d.js"),["assets/counter-b3f26d9d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-fd700d8f.js"),["assets/device-fd700d8f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-3715b21d.js"),["assets/inverter-3715b21d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-9ff0cd5b.js"),["assets/counter-9ff0cd5b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-ac3617bf.js"),["assets/device-ac3617bf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-9fcc4ae5.js"),["assets/counter-9fcc4ae5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-8308249d.js"),["assets/device-8308249d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-bcc6d0d6.js"),["assets/inverter-bcc6d0d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-70dec769.js"),["assets/device-70dec769.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-dc002a5d.js"),["assets/counter-dc002a5d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-a41c9f9a.js"),["assets/device-a41c9f9a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-bff0132e.js"),["assets/counter-bff0132e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-a018debc.js"),["assets/device-a018debc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-8d6c27df.js"),["assets/device-8d6c27df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-c29b676e.js"),["assets/inverter-c29b676e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-35c75ada.js"),["assets/device-35c75ada.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-a28914e4.js"),["assets/bat-a28914e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-02712182.js"),["assets/counter-02712182.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-82e0acf7.js"),["assets/device-82e0acf7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-d29f4c1a.js"),["assets/inverter-d29f4c1a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-5860e973.js"),["assets/device-5860e973.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-426bdd63.js"),["assets/bat-426bdd63.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-f044ae56.js"),["assets/bat-f044ae56.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-46612257.js"),["assets/counter-46612257.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-e10956ea.js"),["assets/inverter-e10956ea.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-c64928d7.js"),["assets/bat-c64928d7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-c6d1b3df.js"),["assets/consumption_counter-c6d1b3df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-38172dbc.js"),["assets/counter-38172dbc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-c3ba2a50.js"),["assets/device-c3ba2a50.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-36b2f4c7.js"),["assets/inverter-36b2f4c7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-c38863be.js"),["assets/inverter-c38863be.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-4498494c.js"),["assets/counter-4498494c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-b80563d5.js"),["assets/device-b80563d5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-68a2bd86.js"),["assets/counter-68a2bd86.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-282ac597.js"),["assets/device-282ac597.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-bdcf1a2f.js"),["assets/inverter-bdcf1a2f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-4992e86f.js"),["assets/device-4992e86f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-e7ac4171.js"),["assets/device-e7ac4171.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-e77cad4b.js"),["assets/device-e77cad4b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-9b6e8dff.js"),["assets/counter-9b6e8dff.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-e9766b50.js"),["assets/device-e9766b50.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-fe5fad52.js"),["assets/device-fe5fad52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-87e58e62.js"),["assets/device-87e58e62.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-80f0d2f4.js"),["assets/bat-80f0d2f4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-8af15294.js"),["assets/counter-8af15294.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-2a6323de.js"),["assets/device-2a6323de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-b61011e2.js"),["assets/inverter-b61011e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-bc776e4a.js"),["assets/counter-bc776e4a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-48761201.js"),["assets/inverter-48761201.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-328595a8.js"),["assets/bat-328595a8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-999a65de.js"),["assets/bat_smart_energy-999a65de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-e6014599.js"),["assets/counter-e6014599.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-f511f708.js"),["assets/device-f511f708.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-e49c5d75.js"),["assets/inverter-e49c5d75.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-ba2e5e6b.js"),["assets/bat-ba2e5e6b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-2861d843.js"),["assets/device-2861d843.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-1a463b8a.js"),["assets/device-1a463b8a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-7bf5aea7.js"),["assets/counter-7bf5aea7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-37c8a5d7.js"),["assets/device-37c8a5d7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-5f7aec52.js"),["assets/inverter-5f7aec52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-53686a65.js"),["assets/device-53686a65.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-86c123c1.js"),["assets/device-86c123c1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-8757edbf.js"),["assets/counter-8757edbf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-900bb2eb.js"),["assets/device-900bb2eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c3b4d8e4.js"),["assets/device-c3b4d8e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-fa423cd0.js"),["assets/inverter-fa423cd0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-9f7025df.js"),["assets/device-9f7025df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-51cbfef1.js"),["assets/device-51cbfef1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-9d9a67fb.js"),["assets/bat-9d9a67fb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-f74d8989.js"),["assets/counter-f74d8989.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-b07f9cfe.js"),["assets/device-b07f9cfe.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-a76bfa79.js"),["assets/external_inverter-a76bfa79.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-471fa6e9.js"),["assets/inverter-471fa6e9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-12daed7b.js"),["assets/bat-12daed7b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-b14a6820.js"),["assets/device-b14a6820.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-88d5ed46.js"),["assets/inverter-88d5ed46.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-5dc8caee.js"),["assets/device-5dc8caee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-bb33d730.js"),["assets/bat-bb33d730.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-321d3599.js"),["assets/counter-321d3599.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-baaf93fc.js"),["assets/device-baaf93fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-70f78ef5.js"),["assets/inverter-70f78ef5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-50d0810f.js"),["assets/counter-50d0810f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-939b0ad1.js"),["assets/device-939b0ad1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-baab6c7d.js"),["assets/bat-baab6c7d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-ee62c15a.js"),["assets/device-ee62c15a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-57d15ff3.js"),["assets/inverter-57d15ff3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-b0f78c7c.js"),["assets/counter-b0f78c7c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-ac5464c5.js"),["assets/device-ac5464c5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-7e1581b0.js"),["assets/device-7e1581b0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-24fa8719.js"),["assets/device-24fa8719.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-3942ce7f.js"),["assets/counter-3942ce7f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-d8584875.js"),["assets/device-d8584875.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-3ed84812.js"),["assets/device-3ed84812.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-bae92296.js"),["assets/bat-bae92296.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-86f04938.js"),["assets/counter-86f04938.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-a159510e.js"),["assets/device-a159510e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-eb5f339a.js"),["assets/inverter-eb5f339a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-277eabf6.js"),["assets/counter-277eabf6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-827098d6.js"),["assets/device-827098d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-6f84161c.js"),["assets/inverter-6f84161c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-2812d314.js"),["assets/device-2812d314.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-1e6b58f6.js"),["assets/inverter-1e6b58f6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ve}):M({loader:()=>B(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-4cd875ee.js"),["assets/device-4cd875ee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-17812629.js"),["assets/device-17812629.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-44ac2d07.js"),["assets/device-44ac2d07.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-44627252.js"),["assets/device-44627252.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-4696232a.js"),["assets/device-4696232a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-eed61bed.js"),["assets/device-eed61bed.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-d0fb85ca.js"),["assets/device-d0fb85ca.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-51badd6c.js"),["assets/device-51badd6c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-cd05bdaa.js"),["assets/device-cd05bdaa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-7893f72c.js"),["assets/device-7893f72c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-752b4387.js"),["assets/device-752b4387.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-2045e148.js"),["assets/device-2045e148.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-823f72ad.js"),["assets/device-823f72ad.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-1eaab064.js"),["assets/device-1eaab064.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-436ab177.js"),["assets/device-436ab177.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-f8b42d98.js"),["assets/device-f8b42d98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-d91bc952.js"),["assets/device-d91bc952.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-2fe61a6a.js"),["assets/device-2fe61a6a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-fd700d8f.js"),["assets/device-fd700d8f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-ac3617bf.js"),["assets/device-ac3617bf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-8308249d.js"),["assets/device-8308249d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-70dec769.js"),["assets/device-70dec769.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-a41c9f9a.js"),["assets/device-a41c9f9a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-a018debc.js"),["assets/device-a018debc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-8d6c27df.js"),["assets/device-8d6c27df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-35c75ada.js"),["assets/device-35c75ada.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-82e0acf7.js"),["assets/device-82e0acf7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-5860e973.js"),["assets/device-5860e973.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-c3ba2a50.js"),["assets/device-c3ba2a50.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-b80563d5.js"),["assets/device-b80563d5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-282ac597.js"),["assets/device-282ac597.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-4992e86f.js"),["assets/device-4992e86f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-e7ac4171.js"),["assets/device-e7ac4171.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-e77cad4b.js"),["assets/device-e77cad4b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-e9766b50.js"),["assets/device-e9766b50.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-fe5fad52.js"),["assets/device-fe5fad52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-87e58e62.js"),["assets/device-87e58e62.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-2a6323de.js"),["assets/device-2a6323de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-f511f708.js"),["assets/device-f511f708.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-2861d843.js"),["assets/device-2861d843.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-1a463b8a.js"),["assets/device-1a463b8a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-37c8a5d7.js"),["assets/device-37c8a5d7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-53686a65.js"),["assets/device-53686a65.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-86c123c1.js"),["assets/device-86c123c1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-900bb2eb.js"),["assets/device-900bb2eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-c3b4d8e4.js"),["assets/device-c3b4d8e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-9f7025df.js"),["assets/device-9f7025df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-51cbfef1.js"),["assets/device-51cbfef1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-b07f9cfe.js"),["assets/device-b07f9cfe.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-b14a6820.js"),["assets/device-b14a6820.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-5dc8caee.js"),["assets/device-5dc8caee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-baaf93fc.js"),["assets/device-baaf93fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-939b0ad1.js"),["assets/device-939b0ad1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-ee62c15a.js"),["assets/device-ee62c15a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-ac5464c5.js"),["assets/device-ac5464c5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-7e1581b0.js"),["assets/device-7e1581b0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-24fa8719.js"),["assets/device-24fa8719.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-d8584875.js"),["assets/device-d8584875.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-3ed84812.js"),["assets/device-3ed84812.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-a159510e.js"),["assets/device-a159510e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-827098d6.js"),["assets/device-827098d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-2812d314.js"),["assets/device-2812d314.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:_e})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function pe(t,o,_,m,a,d){return s(),E(X(d.myComponent),{device:_.device,component:_.component,configuration:_.component?_.component.configuration:_.device.configuration,"device-id":_.device.id,"device-type":_.device.type,"component-id":_.component?_.component.id:void 0,"component-type":_.component?_.component.type:void 0,"onUpdate:configuration":o[0]||(o[0]=c=>d.updateConfiguration(c))},null,40,["device","component","configuration","device-id","device-type","component-id","component-type"])}const le=I(me,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);U.add(N,G,K,H,F,$,J);const ce={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:Z,OpenwbConfigProxy:le},mixins:[Q],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([t,o])=>({label:o.group_name,options:Object.entries(o.vendors).map(([_,m])=>({value:[t,_],text:m.vendor_name})).sort((_,m)=>_.text.localeCompare(m.text))})).sort((t,o)=>-t.label.localeCompare(o.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[t,o]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][t].vendors[o].devices).map(([_,m])=>({value:[o,_],text:m.device_name})).sort((_,m)=>_.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(t){return t.match(/^(.+_)?counter(_.+)?$/)?"danger":t.match(/^(.+_)?inverter(_.+)?$/)?"success":t.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(t){return t.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:t.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:t.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(t){return this.getWildcardTopics("openWB/system/device/"+t+"/component/+/config")},deviceHasConfiguredComponents(t){return Object.keys(this.getMyInstalledComponents(t)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(t,o,_){_.stopPropagation(),this.modalDevice=t,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(t){this.showDeviceRemoveModal=!1,t=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(t,o,_,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:t,deviceType:_,deviceVendor:o,type:m}})},removeComponentModal(t,o,_,m,a){a.stopPropagation(),this.modalComponent={deviceId:t,id:o,type:_},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(t){this.showComponentRemoveModal=!1,t=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(t,o){if(t===void 0||o===void 0)return[];console.debug("finding components for",t,o);let _=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[t]!==void 0?(m.vendors[t].devices[o]!==void 0&&(_=Object.entries(m.vendors[t].devices[o].components).map(([d,c])=>({value:d,text:c.component_name}))),!1):!0),_},updateConfiguration(t,o){console.debug("updateConfiguration",t,o),this.updateState(t,o.value,o.object)}}},Ee={class:"hardwareInstallation"},ge={name:"hardwareInstallationForm"},fe={key:0},be={key:1},Ve={key:1},Oe={class:"col-1"},Te={key:0},Ie={class:"col-1"};function Ae(t,o,_,m,a,d){const c=p("openwb-base-modal-dialog"),A=p("router-link"),O=p("openwb-base-alert"),T=p("font-awesome-icon"),L=p("openwb-base-avatar"),D=p("openwb-base-text-input"),C=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),x=p("openwb-base-click-button"),y=p("openwb-base-select-input"),S=p("openwb-base-submit-buttons");return s(),g(R,null,[r(c,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeDevice},{default:i(()=>[u(' Wollen Sie das Gerät "'+b(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(c,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeComponent},{default:i(()=>[u(' Wollen Sie die Komponente "'+b(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",Ee,[l("form",ge,[_.installAssistantActive?P("",!0):(s(),E(O,{key:0,subtype:"info"},{default:i(()=>[o[6]||(o[6]=u(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),r(A,{to:"/LoadManagementConfiguration"},{default:i(()=>o[5]||(o[5]=[u(" Lastmanagement ")])),_:1}),o[7]||(o[7]=u(" zu prüfen! "))]),_:1})),r(w,{title:"Geräte und Komponenten"},{default:i(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),g("div",fe,[r(O,{subtype:"info"},{default:i(()=>o[8]||(o[8]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),g("div",be,[(s(!0),g(R,null,h(d.installedDevices,(n,z)=>(s(),E(w,{key:n.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[r(T,{"fixed-width":"",icon:["fas","network-wired"]}),u(" "+b(n.name),1)]),actions:i(v=>[v.collapsed?(s(),g("div",Ve,[(s(!0),g(R,null,h(d.getMyInstalledComponents(n.id),f=>(s(),E(L,{key:f.id,class:k("ml-1 bg-"+d.getComponentTypeClass(f.type))},{default:i(()=>[r(T,{"fixed-width":"",icon:d.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(s(),E(L,{key:0,class:"bg-danger clickable",onClick:f=>d.removeDeviceModal(n.id,n.name,f)},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":n.name,"onUpdate:modelValue":v=>t.updateState(z,v,"name")},null,8,["model-value","onUpdate:modelValue"]),o[16]||(o[16]=l("hr",null,null,-1)),r(C,{device:n,"onUpdate:configuration":v=>d.updateConfiguration(z,v)},null,8,["device","onUpdate:configuration"]),o[17]||(o[17]=l("hr",null,null,-1)),r(W,null,{default:i(()=>[...o[9]||(o[9]=[u("Komponenten")])]),_:1}),d.deviceHasConfiguredComponents(n.id)?P("",!0):(s(),E(O,{key:0,subtype:"warning"},{default:i(()=>[...o[10]||(o[10]=[u(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(s(!0),g(R,null,h(d.getMyInstalledComponents(n.id),(v,f)=>(s(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:d.getComponentTypeClass(v.type)},{header:i(()=>[r(T,{"fixed-width":"",icon:d.getComponentTypeIcon(v.type)},null,8,["icon"]),u(" "+b(v.name),1)]),actions:i(V=>[V.collapsed?P("",!0):(s(),E(L,{key:0,class:"bg-danger clickable",onClick:q=>d.removeComponentModal(n.id,v.id,v.type,v.name,q)},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":V=>t.updateState(f,V,"name")},null,8,["model-value","onUpdate:modelValue"]),r(D,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":V=>t.updateState(f,V,"info.manufacturer")},{help:i(()=>[...o[11]||(o[11]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),r(D,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":V=>t.updateState(f,V,"info.model")},{help:i(()=>[...o[12]||(o[12]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o[13]||(o[13]=l("hr",null,null,-1)),r(C,{device:n,component:v,"onUpdate:configuration":V=>d.updateConfiguration(f,V)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),o[18]||(o[18]=l("hr",null,null,-1)),d.getComponentList(n.vendor,n.type).length?(s(),E(y,{key:1,class:"mb-2",title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:d.getComponentList(n.vendor,n.type),"model-value":a.componentToAdd[n.id],"onUpdate:modelValue":v=>a.componentToAdd[n.id]=v},{append:i(()=>[l("span",Oe,[r(x,{class:k(a.componentToAdd[n.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[n.id]===void 0,onButtonClicked:v=>d.addComponent(n.id,n.vendor,n.type,a.componentToAdd[n.id])},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[...o[14]||(o[14]=[u(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(s(),E(O,{key:2,subtype:"info"},{default:i(()=>[...o[15]||(o[15]=[u(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(d.installedDevices).length>0?(s(),g("hr",Te)):P("",!0),r(y,{modelValue:a.selectedVendor,"onUpdate:modelValue":o[0]||(o[0]=n=>a.selectedVendor=n),title:"Hersteller","not-selected":"Bitte auswählen",groups:d.vendorList},null,8,["modelValue","groups"]),r(y,{modelValue:a.deviceToAdd,"onUpdate:modelValue":o[1]||(o[1]=n=>a.deviceToAdd=n),title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:a.selectedVendor===void 0,options:d.deviceList},{append:i(()=>[l("span",Ie,[r(x,{class:k(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:d.addDevice},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>o[19]||(o[19]=[l("p",null,[u(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),u(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),l("p",null,[u(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),u(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options"])]))]),_:1}),r(S,{"form-name":"hardwareInstallationForm",onSave:o[2]||(o[2]=n=>t.$emit("save")),onReset:o[3]||(o[3]=n=>t.$emit("reset")),onDefaults:o[4]||(o[4]=n=>t.$emit("defaults"))})])])],64)}const De=I(ce,[["render",Ae],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),ye=Object.freeze(Object.defineProperty({__proto__:null,default:De},Symbol.toStringTag,{value:"Module"}));export{re as C,j as D,De as H,ye as a};
+import{l as U,d as N,t as G,a7 as K,a0 as H,P as F,O as $,N as J,F as Z}from"./vendor-fortawesome-41164876.js";import{_ as e,C as Q}from"./index-c79666b6.js";import{_ as B}from"./dynamic-import-helper-be004503.js";import{_ as I,u as p,k as s,l as g,A as E,N as i,y as u,z as b,D as r,x as l,a0 as M,a1 as X,B as P,J as R,K as h,q as k}from"./vendor-a21b3a62.js";const Y={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,o=void 0){this.$emit("update:configuration",{value:t,object:o})}}},j=I(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),ee={name:"DeviceFallback",mixins:[j]},oe={class:"device-fallback"},te={key:1};function ie(t,o,_,m,a,d){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return s(),g("div",oe,[Object.keys(t.device.configuration).length==0?(s(),E(c,{key:0,subtype:"info"},{default:i(()=>[u(' Der Gerät-Typ "'+b(t.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",te,[r(c,{subtype:"warning"},{default:i(()=>[u(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+b(t.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.device.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:i(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:i(()=>[l("pre",null,b(JSON.stringify(t.device.configuration,void 0,2)),1)]),_:1})]))])}const _e=I(ee,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ne={mixins:[j],props:{component:{type:Object,required:!0}}},re=I(ne,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),de={name:"ComponentFallback",mixins:[re]},ue={class:"component-fallback"},se={key:1};function ae(t,o,_,m,a,d){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return s(),g("div",ue,[Object.keys(t.component.configuration).length==0?(s(),E(c,{key:0,subtype:"info"},{default:i(()=>[u(' Der Komponenten-Typ "'+b(t.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",se,[r(c,{subtype:"warning"},{default:i(()=>[u(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+b(t.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.component.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:i(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:i(()=>[l("pre",null,b(JSON.stringify(t.component.configuration,void 0,2)),1)]),_:1})]))])}const ve=I(de,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),me={name:"OpenwbConfigProxy",props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},emits:["update:configuration"],computed:{myComponent(){var t;return console.debug(`loading component: ${this.device.type} / ${(t=this.component)==null?void 0:t.type}`),this.component!==void 0?M({loader:()=>B(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-afc129d5.js"),["assets/device-afc129d5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-5431b4e2.js"),["assets/device-5431b4e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-763ad7fc.js"),["assets/device-763ad7fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-b3c2779b.js"),["assets/device-b3c2779b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-ff6c0cb6.js"),["assets/device-ff6c0cb6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-39926bb3.js"),["assets/counter-39926bb3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-8432eab3.js"),["assets/device-8432eab3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-39076628.js"),["assets/bat-39076628.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-070b14da.js"),["assets/counter-070b14da.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-6f239659.js"),["assets/device-6f239659.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-18c2474d.js"),["assets/inverter-18c2474d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-49efe9fc.js"),["assets/counter-49efe9fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-336ae19f.js"),["assets/device-336ae19f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-fb2c9952.js"),["assets/inverter-fb2c9952.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-d63e2264.js"),["assets/device-d63e2264.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-e88fdbc7.js"),["assets/counter-e88fdbc7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-d3b9bc22.js"),["assets/device-d3b9bc22.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-a17a2665.js"),["assets/inverter-a17a2665.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-22c07366.js"),["assets/bat-22c07366.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-f0c7d4c8.js"),["assets/device-f0c7d4c8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-8e9d3a0e.js"),["assets/bat-8e9d3a0e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-b3fc64c6.js"),["assets/counter-b3fc64c6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-40022210.js"),["assets/device-40022210.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-e943d0ae.js"),["assets/inverter-e943d0ae.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-f5f1c5c9.js"),["assets/bat-f5f1c5c9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-187d65ee.js"),["assets/counter_sm-187d65ee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-79189826.js"),["assets/device-79189826.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-8a48b565.js"),["assets/inverter_secondary-8a48b565.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-aa42df8b.js"),["assets/bat-aa42df8b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-cc4b4212.js"),["assets/counter-cc4b4212.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-4a3195eb.js"),["assets/device-4a3195eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-323c3074.js"),["assets/inverter-323c3074.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-22feb1cd.js"),["assets/bat-22feb1cd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-037dab68.js"),["assets/counter-037dab68.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-9653fe83.js"),["assets/device-9653fe83.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-819b1a3e.js"),["assets/inverter-819b1a3e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-f3f3bffc.js"),["assets/bat-f3f3bffc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-6f3afe9b.js"),["assets/counter-6f3afe9b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-cc94a449.js"),["assets/device-cc94a449.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-e0302839.js"),["assets/inverter-e0302839.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-e64707f3.js"),["assets/counter-e64707f3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-7f1fc016.js"),["assets/device-7f1fc016.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-1b2872e2.js"),["assets/device-1b2872e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-0bb8df4a.js"),["assets/bat-0bb8df4a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-ad28ae65.js"),["assets/counter-ad28ae65.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-574dcaf4.js"),["assets/device-574dcaf4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-4ae76a42.js"),["assets/inverter-4ae76a42.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-edc80b67.js"),["assets/counter-edc80b67.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-0d76517c.js"),["assets/device-0d76517c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-c81118fb.js"),["assets/counter-c81118fb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-347eb6dc.js"),["assets/device-347eb6dc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-5ad18beb.js"),["assets/inverter-5ad18beb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-050e3366.js"),["assets/device-050e3366.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-05d801d4.js"),["assets/counter-05d801d4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-d74903aa.js"),["assets/device-d74903aa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-c6427879.js"),["assets/counter-c6427879.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-29ca0508.js"),["assets/device-29ca0508.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-713ce8f2.js"),["assets/device-713ce8f2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-cda22a33.js"),["assets/inverter-cda22a33.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-8548059a.js"),["assets/device-8548059a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-9d704a63.js"),["assets/bat-9d704a63.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-8a7db35e.js"),["assets/counter-8a7db35e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-80fee4ae.js"),["assets/device-80fee4ae.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-fd0dea3e.js"),["assets/inverter-fd0dea3e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-bb1652e9.js"),["assets/device-bb1652e9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-6d0ee218.js"),["assets/bat-6d0ee218.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-98bc85c9.js"),["assets/bat-98bc85c9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-e6bce9f3.js"),["assets/counter-e6bce9f3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-593f3daf.js"),["assets/inverter-593f3daf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-15e6188c.js"),["assets/bat-15e6188c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-fffff7c1.js"),["assets/consumption_counter-fffff7c1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-34270a43.js"),["assets/counter-34270a43.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-39bf739d.js"),["assets/device-39bf739d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-cdd963f9.js"),["assets/inverter-cdd963f9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-4952d317.js"),["assets/inverter-4952d317.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-58ed9d65.js"),["assets/counter-58ed9d65.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-d7bd2ff3.js"),["assets/device-d7bd2ff3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-3806cc52.js"),["assets/counter-3806cc52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f655ceef.js"),["assets/device-f655ceef.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-fb3a6cad.js"),["assets/inverter-fb3a6cad.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-9b3e153b.js"),["assets/device-9b3e153b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-a70f13a3.js"),["assets/device-a70f13a3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-f06b8715.js"),["assets/device-f06b8715.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-a116f5da.js"),["assets/counter-a116f5da.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-1e1551ac.js"),["assets/device-1e1551ac.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-fe891142.js"),["assets/device-fe891142.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-1b821174.js"),["assets/device-1b821174.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-fedfab16.js"),["assets/bat-fedfab16.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-2e059c6b.js"),["assets/counter-2e059c6b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-3e6fa83c.js"),["assets/device-3e6fa83c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-5f9ef8bd.js"),["assets/inverter-5f9ef8bd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-ba8a04c3.js"),["assets/counter-ba8a04c3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-6529a4df.js"),["assets/inverter-6529a4df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cf017b63.js"),["assets/bat-cf017b63.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-1b4c5bcf.js"),["assets/bat_smart_energy-1b4c5bcf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-c51eaa64.js"),["assets/counter-c51eaa64.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-51c91be0.js"),["assets/device-51c91be0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-46c18816.js"),["assets/inverter-46c18816.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-e0e00bd8.js"),["assets/bat-e0e00bd8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-59c7355d.js"),["assets/device-59c7355d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-001cee36.js"),["assets/device-001cee36.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-95f05d0c.js"),["assets/counter-95f05d0c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-9cbf003b.js"),["assets/device-9cbf003b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-098d4ce8.js"),["assets/inverter-098d4ce8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-5286bf60.js"),["assets/device-5286bf60.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4edac0ac.js"),["assets/device-4edac0ac.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-e25a696d.js"),["assets/counter-e25a696d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-7279ce38.js"),["assets/device-7279ce38.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-e4ac8894.js"),["assets/device-e4ac8894.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-475ea9be.js"),["assets/inverter-475ea9be.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-6aa72597.js"),["assets/device-6aa72597.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-f7f8ffe0.js"),["assets/device-f7f8ffe0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-7406ff4b.js"),["assets/bat-7406ff4b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-52e01218.js"),["assets/counter-52e01218.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-4b1646f2.js"),["assets/device-4b1646f2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-04c9ce87.js"),["assets/external_inverter-04c9ce87.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-6ea218d8.js"),["assets/inverter-6ea218d8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-10d75798.js"),["assets/bat-10d75798.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-1e35dcd3.js"),["assets/device-1e35dcd3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-5e9ec317.js"),["assets/inverter-5e9ec317.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-3f7e40af.js"),["assets/device-3f7e40af.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-0bafcbc8.js"),["assets/bat-0bafcbc8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-2f4a0c2e.js"),["assets/counter-2f4a0c2e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-bbbcf1a0.js"),["assets/device-bbbcf1a0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-55ea35ce.js"),["assets/inverter-55ea35ce.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-aa0a6d0b.js"),["assets/counter-aa0a6d0b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-1ffd2759.js"),["assets/device-1ffd2759.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-59db0757.js"),["assets/bat-59db0757.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-6e3aa19a.js"),["assets/device-6e3aa19a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-7d0a508c.js"),["assets/inverter-7d0a508c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-a81ba2a4.js"),["assets/counter-a81ba2a4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-91630eed.js"),["assets/device-91630eed.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-6f112981.js"),["assets/device-6f112981.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-c47ac087.js"),["assets/device-c47ac087.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-58c72dcf.js"),["assets/counter-58c72dcf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5762c828.js"),["assets/device-5762c828.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-51fdec5d.js"),["assets/device-51fdec5d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-dfa51acd.js"),["assets/bat-dfa51acd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-c0af0a6f.js"),["assets/counter-c0af0a6f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-0ab7f57f.js"),["assets/device-0ab7f57f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-b4727f0c.js"),["assets/inverter-b4727f0c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-c3082628.js"),["assets/counter-c3082628.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-df9c2f01.js"),["assets/device-df9c2f01.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-ce0bf077.js"),["assets/inverter-ce0bf077.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-b4913183.js"),["assets/device-b4913183.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-4f43f74f.js"),["assets/inverter-4f43f74f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ve}):M({loader:()=>B(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-afc129d5.js"),["assets/device-afc129d5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-5431b4e2.js"),["assets/device-5431b4e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-763ad7fc.js"),["assets/device-763ad7fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-b3c2779b.js"),["assets/device-b3c2779b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-ff6c0cb6.js"),["assets/device-ff6c0cb6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-8432eab3.js"),["assets/device-8432eab3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-6f239659.js"),["assets/device-6f239659.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-336ae19f.js"),["assets/device-336ae19f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-d63e2264.js"),["assets/device-d63e2264.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-d3b9bc22.js"),["assets/device-d3b9bc22.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-f0c7d4c8.js"),["assets/device-f0c7d4c8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-40022210.js"),["assets/device-40022210.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-79189826.js"),["assets/device-79189826.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-4a3195eb.js"),["assets/device-4a3195eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-9653fe83.js"),["assets/device-9653fe83.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-cc94a449.js"),["assets/device-cc94a449.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-7f1fc016.js"),["assets/device-7f1fc016.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-1b2872e2.js"),["assets/device-1b2872e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-574dcaf4.js"),["assets/device-574dcaf4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-0d76517c.js"),["assets/device-0d76517c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-347eb6dc.js"),["assets/device-347eb6dc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-050e3366.js"),["assets/device-050e3366.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-d74903aa.js"),["assets/device-d74903aa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-29ca0508.js"),["assets/device-29ca0508.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-713ce8f2.js"),["assets/device-713ce8f2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-8548059a.js"),["assets/device-8548059a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-80fee4ae.js"),["assets/device-80fee4ae.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-bb1652e9.js"),["assets/device-bb1652e9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-39bf739d.js"),["assets/device-39bf739d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-d7bd2ff3.js"),["assets/device-d7bd2ff3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f655ceef.js"),["assets/device-f655ceef.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-9b3e153b.js"),["assets/device-9b3e153b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-a70f13a3.js"),["assets/device-a70f13a3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-f06b8715.js"),["assets/device-f06b8715.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-1e1551ac.js"),["assets/device-1e1551ac.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-fe891142.js"),["assets/device-fe891142.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-1b821174.js"),["assets/device-1b821174.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-3e6fa83c.js"),["assets/device-3e6fa83c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-51c91be0.js"),["assets/device-51c91be0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-59c7355d.js"),["assets/device-59c7355d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-001cee36.js"),["assets/device-001cee36.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-9cbf003b.js"),["assets/device-9cbf003b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-5286bf60.js"),["assets/device-5286bf60.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4edac0ac.js"),["assets/device-4edac0ac.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-7279ce38.js"),["assets/device-7279ce38.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-e4ac8894.js"),["assets/device-e4ac8894.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-6aa72597.js"),["assets/device-6aa72597.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-f7f8ffe0.js"),["assets/device-f7f8ffe0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-4b1646f2.js"),["assets/device-4b1646f2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-1e35dcd3.js"),["assets/device-1e35dcd3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-3f7e40af.js"),["assets/device-3f7e40af.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-bbbcf1a0.js"),["assets/device-bbbcf1a0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-1ffd2759.js"),["assets/device-1ffd2759.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-6e3aa19a.js"),["assets/device-6e3aa19a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-91630eed.js"),["assets/device-91630eed.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-6f112981.js"),["assets/device-6f112981.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-c47ac087.js"),["assets/device-c47ac087.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5762c828.js"),["assets/device-5762c828.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-51fdec5d.js"),["assets/device-51fdec5d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-0ab7f57f.js"),["assets/device-0ab7f57f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-df9c2f01.js"),["assets/device-df9c2f01.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-b4913183.js"),["assets/device-b4913183.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:_e})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function pe(t,o,_,m,a,d){return s(),E(X(d.myComponent),{device:_.device,component:_.component,configuration:_.component?_.component.configuration:_.device.configuration,"device-id":_.device.id,"device-type":_.device.type,"component-id":_.component?_.component.id:void 0,"component-type":_.component?_.component.type:void 0,"onUpdate:configuration":o[0]||(o[0]=c=>d.updateConfiguration(c))},null,40,["device","component","configuration","device-id","device-type","component-id","component-type"])}const le=I(me,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);U.add(N,G,K,H,F,$,J);const ce={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:Z,OpenwbConfigProxy:le},mixins:[Q],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([t,o])=>({label:o.group_name,options:Object.entries(o.vendors).map(([_,m])=>({value:[t,_],text:m.vendor_name})).sort((_,m)=>_.text.localeCompare(m.text))})).sort((t,o)=>-t.label.localeCompare(o.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[t,o]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][t].vendors[o].devices).map(([_,m])=>({value:[o,_],text:m.device_name})).sort((_,m)=>_.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(t){return t.match(/^(.+_)?counter(_.+)?$/)?"danger":t.match(/^(.+_)?inverter(_.+)?$/)?"success":t.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(t){return t.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:t.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:t.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(t){return this.getWildcardTopics("openWB/system/device/"+t+"/component/+/config")},deviceHasConfiguredComponents(t){return Object.keys(this.getMyInstalledComponents(t)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(t,o,_){_.stopPropagation(),this.modalDevice=t,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(t){this.showDeviceRemoveModal=!1,t=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(t,o,_,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:t,deviceType:_,deviceVendor:o,type:m}})},removeComponentModal(t,o,_,m,a){a.stopPropagation(),this.modalComponent={deviceId:t,id:o,type:_},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(t){this.showComponentRemoveModal=!1,t=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(t,o){if(t===void 0||o===void 0)return[];console.debug("finding components for",t,o);let _=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[t]!==void 0?(m.vendors[t].devices[o]!==void 0&&(_=Object.entries(m.vendors[t].devices[o].components).map(([d,c])=>({value:d,text:c.component_name}))),!1):!0),_},updateConfiguration(t,o){console.debug("updateConfiguration",t,o),this.updateState(t,o.value,o.object)}}},Ee={class:"hardwareInstallation"},ge={name:"hardwareInstallationForm"},fe={key:0},be={key:1},Ve={key:1},Oe={class:"col-1"},Te={key:0},Ie={class:"col-1"};function Ae(t,o,_,m,a,d){const c=p("openwb-base-modal-dialog"),A=p("router-link"),O=p("openwb-base-alert"),T=p("font-awesome-icon"),L=p("openwb-base-avatar"),D=p("openwb-base-text-input"),C=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),x=p("openwb-base-click-button"),y=p("openwb-base-select-input"),S=p("openwb-base-submit-buttons");return s(),g(R,null,[r(c,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeDevice},{default:i(()=>[u(' Wollen Sie das Gerät "'+b(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(c,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeComponent},{default:i(()=>[u(' Wollen Sie die Komponente "'+b(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",Ee,[l("form",ge,[_.installAssistantActive?P("",!0):(s(),E(O,{key:0,subtype:"info"},{default:i(()=>[o[6]||(o[6]=u(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),r(A,{to:"/LoadManagementConfiguration"},{default:i(()=>o[5]||(o[5]=[u(" Lastmanagement ")])),_:1}),o[7]||(o[7]=u(" zu prüfen! "))]),_:1})),r(w,{title:"Geräte und Komponenten"},{default:i(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),g("div",fe,[r(O,{subtype:"info"},{default:i(()=>o[8]||(o[8]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),g("div",be,[(s(!0),g(R,null,h(d.installedDevices,(n,z)=>(s(),E(w,{key:n.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[r(T,{"fixed-width":"",icon:["fas","network-wired"]}),u(" "+b(n.name),1)]),actions:i(v=>[v.collapsed?(s(),g("div",Ve,[(s(!0),g(R,null,h(d.getMyInstalledComponents(n.id),f=>(s(),E(L,{key:f.id,class:k("ml-1 bg-"+d.getComponentTypeClass(f.type))},{default:i(()=>[r(T,{"fixed-width":"",icon:d.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(s(),E(L,{key:0,class:"bg-danger clickable",onClick:f=>d.removeDeviceModal(n.id,n.name,f)},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":n.name,"onUpdate:modelValue":v=>t.updateState(z,v,"name")},null,8,["model-value","onUpdate:modelValue"]),o[16]||(o[16]=l("hr",null,null,-1)),r(C,{device:n,"onUpdate:configuration":v=>d.updateConfiguration(z,v)},null,8,["device","onUpdate:configuration"]),o[17]||(o[17]=l("hr",null,null,-1)),r(W,null,{default:i(()=>[...o[9]||(o[9]=[u("Komponenten")])]),_:1}),d.deviceHasConfiguredComponents(n.id)?P("",!0):(s(),E(O,{key:0,subtype:"warning"},{default:i(()=>[...o[10]||(o[10]=[u(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(s(!0),g(R,null,h(d.getMyInstalledComponents(n.id),(v,f)=>(s(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:d.getComponentTypeClass(v.type)},{header:i(()=>[r(T,{"fixed-width":"",icon:d.getComponentTypeIcon(v.type)},null,8,["icon"]),u(" "+b(v.name),1)]),actions:i(V=>[V.collapsed?P("",!0):(s(),E(L,{key:0,class:"bg-danger clickable",onClick:q=>d.removeComponentModal(n.id,v.id,v.type,v.name,q)},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":V=>t.updateState(f,V,"name")},null,8,["model-value","onUpdate:modelValue"]),r(D,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":V=>t.updateState(f,V,"info.manufacturer")},{help:i(()=>[...o[11]||(o[11]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),r(D,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":V=>t.updateState(f,V,"info.model")},{help:i(()=>[...o[12]||(o[12]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o[13]||(o[13]=l("hr",null,null,-1)),r(C,{device:n,component:v,"onUpdate:configuration":V=>d.updateConfiguration(f,V)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),o[18]||(o[18]=l("hr",null,null,-1)),d.getComponentList(n.vendor,n.type).length?(s(),E(y,{key:1,class:"mb-2",title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:d.getComponentList(n.vendor,n.type),"model-value":a.componentToAdd[n.id],"onUpdate:modelValue":v=>a.componentToAdd[n.id]=v},{append:i(()=>[l("span",Oe,[r(x,{class:k(a.componentToAdd[n.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[n.id]===void 0,onButtonClicked:v=>d.addComponent(n.id,n.vendor,n.type,a.componentToAdd[n.id])},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[...o[14]||(o[14]=[u(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(s(),E(O,{key:2,subtype:"info"},{default:i(()=>[...o[15]||(o[15]=[u(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(d.installedDevices).length>0?(s(),g("hr",Te)):P("",!0),r(y,{modelValue:a.selectedVendor,"onUpdate:modelValue":o[0]||(o[0]=n=>a.selectedVendor=n),title:"Hersteller","not-selected":"Bitte auswählen",groups:d.vendorList},null,8,["modelValue","groups"]),r(y,{modelValue:a.deviceToAdd,"onUpdate:modelValue":o[1]||(o[1]=n=>a.deviceToAdd=n),title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:a.selectedVendor===void 0,options:d.deviceList},{append:i(()=>[l("span",Ie,[r(x,{class:k(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:d.addDevice},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>o[19]||(o[19]=[l("p",null,[u(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),u(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),l("p",null,[u(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),u(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options"])]))]),_:1}),r(S,{"form-name":"hardwareInstallationForm",onSave:o[2]||(o[2]=n=>t.$emit("save")),onReset:o[3]||(o[3]=n=>t.$emit("reset")),onDefaults:o[4]||(o[4]=n=>t.$emit("defaults"))})])])],64)}const De=I(ce,[["render",Ae],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),ye=Object.freeze(Object.defineProperty({__proto__:null,default:De},Symbol.toStringTag,{value:"Module"}));export{re as C,j as D,De as H,ye as a};
diff --git a/web/settings/assets/InstallAssistant-6d2c34f9.js b/web/settings/assets/InstallAssistant-a3c80ad1.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-6d2c34f9.js
rename to web/settings/assets/InstallAssistant-a3c80ad1.js
index 7ab379ac0a..93cd414e2e 100644
--- a/web/settings/assets/InstallAssistant-6d2c34f9.js
+++ b/web/settings/assets/InstallAssistant-a3c80ad1.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-f9fda857.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a0 as p,u as d,k as i,l as u,D as A,N as v,A as E,a1 as I,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-3ae5776e.js"),["assets/InstallAssistantStep0-3ae5776e.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-f2cb69f1.js"),["assets/InstallAssistantStep1-f2cb69f1.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-b9730b64.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-6a0bfe8b.js"),["assets/InstallAssistantStep10-6a0bfe8b.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-116b498f.js"),["assets/InstallAssistantStep2-116b498f.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-aff61250.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-b44c543e.js"),["assets/InstallAssistantStep3-b44c543e.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-1c49e709.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-ca57a396.js"),["assets/InstallAssistantStep4-ca57a396.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-8dff21bc.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-2a886f5d.js"),["assets/InstallAssistantStep5-2a886f5d.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-70f156e6.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-25f8b1a2.js"),["assets/InstallAssistantStep6-25f8b1a2.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-8dff21bc.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-be0e6887.js"),["assets/InstallAssistantStep7-be0e6887.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-da717df7.js","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-5bb0860d.js"),["assets/InstallAssistantStep8-5bb0860d.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-e8ea05c9.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-af2ff378.js"),["assets/InstallAssistantStep9-af2ff378.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-3c026c08.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-b9730b64.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-3c026c08.js"),["assets/InstallAssistantStepTemplate-3c026c08.js","assets/index-f9fda857.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-c79666b6.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a0 as p,u as d,k as i,l as u,D as A,N as v,A as E,a1 as I,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-500a8cc5.js"),["assets/InstallAssistantStep0-500a8cc5.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-6470c726.js"),["assets/InstallAssistantStep1-6470c726.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-1fb1197d.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-3d5ac094.js"),["assets/InstallAssistantStep10-3d5ac094.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-12a3f7a8.js"),["assets/InstallAssistantStep2-12a3f7a8.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-83bb0533.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-c7995cbc.js"),["assets/InstallAssistantStep3-c7995cbc.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-1687a15a.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-19fe0142.js"),["assets/InstallAssistantStep4-19fe0142.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-2f136eb7.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-cd0d6d73.js"),["assets/InstallAssistantStep5-cd0d6d73.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-d2c0f1d5.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-63d131ad.js"),["assets/InstallAssistantStep6-63d131ad.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-2f136eb7.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-c6d28ec8.js"),["assets/InstallAssistantStep7-c6d28ec8.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-269dec5d.js","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-5cdd309f.js"),["assets/InstallAssistantStep8-5cdd309f.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-9a14b719.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-73a6b1e1.js"),["assets/InstallAssistantStep9-73a6b1e1.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-1fb1197d.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-cfe72ae0.js"),["assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-3ae5776e.js b/web/settings/assets/InstallAssistantStep0-500a8cc5.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-3ae5776e.js
rename to web/settings/assets/InstallAssistantStep0-500a8cc5.js
index 93ec8e8d5b..c14c24a34a 100644
--- a/web/settings/assets/InstallAssistantStep0-3ae5776e.js
+++ b/web/settings/assets/InstallAssistantStep0-500a8cc5.js
@@ -1 +1 @@
-import{C as u}from"./index-f9fda857.js";import d from"./InstallAssistantStepTemplate-3c026c08.js";import{_ as p,u as i,k as m,A as g,N as a,D as h,y as c,x as t}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function A(s,e,b,w,P,n){const l=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(l,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=o=>n.nextPage(o))},{default:a(()=>e[1]||(e[1]=[c(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung - Eine Sicherung erstellen"),t("li",null,"Aktualisierung des Systems"),t("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung - Eine Sicherung erstellen")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const z=p(f,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{z as default};
+import{C as u}from"./index-c79666b6.js";import d from"./InstallAssistantStepTemplate-cfe72ae0.js";import{_ as p,u as i,k as m,A as g,N as a,D as h,y as c,x as t}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function A(s,e,b,w,P,n){const l=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(l,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=o=>n.nextPage(o))},{default:a(()=>e[1]||(e[1]=[c(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung - Eine Sicherung erstellen"),t("li",null,"Aktualisierung des Systems"),t("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung - Eine Sicherung erstellen")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const z=p(f,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{z as default};
diff --git a/web/settings/assets/InstallAssistantStep1-f2cb69f1.js b/web/settings/assets/InstallAssistantStep1-6470c726.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep1-f2cb69f1.js
rename to web/settings/assets/InstallAssistantStep1-6470c726.js
index 4698f9daf0..ff07f65efb 100644
--- a/web/settings/assets/InstallAssistantStep1-f2cb69f1.js
+++ b/web/settings/assets/InstallAssistantStep1-6470c726.js
@@ -1 +1 @@
-import{C as m}from"./index-f9fda857.js";import p from"./InstallAssistantStepTemplate-3c026c08.js";import{D as l}from"./DataManagement-b9730b64.js";import{_ as d,u as a,k as u,A as g,N as i,x as f,D as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,P,S,w,n){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:i(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:i(()=>[v(o,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=d(A,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{T as default};
+import{C as m}from"./index-c79666b6.js";import p from"./InstallAssistantStepTemplate-cfe72ae0.js";import{D as l}from"./DataManagement-1fb1197d.js";import{_ as d,u as a,k as u,A as g,N as i,x as f,D as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,P,S,w,n){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:i(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:i(()=>[v(o,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=d(A,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep10-6a0bfe8b.js b/web/settings/assets/InstallAssistantStep10-3d5ac094.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-6a0bfe8b.js
rename to web/settings/assets/InstallAssistantStep10-3d5ac094.js
index 17855398c9..8120325297 100644
--- a/web/settings/assets/InstallAssistantStep10-6a0bfe8b.js
+++ b/web/settings/assets/InstallAssistantStep10-3d5ac094.js
@@ -1 +1 @@
-import{C as a}from"./index-f9fda857.js";import o from"./InstallAssistantStepTemplate-3c026c08.js";import{_ as r,u as l,k as d,A as m,N as p,x as n}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const g={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function u(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return d(),m(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:p(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const v=r(g,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{v as default};
+import{C as a}from"./index-c79666b6.js";import o from"./InstallAssistantStepTemplate-cfe72ae0.js";import{_ as r,u as l,k as d,A as m,N as p,x as n}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const g={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function u(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return d(),m(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:p(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const v=r(g,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{v as default};
diff --git a/web/settings/assets/InstallAssistantStep2-116b498f.js b/web/settings/assets/InstallAssistantStep2-12a3f7a8.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-116b498f.js
rename to web/settings/assets/InstallAssistantStep2-12a3f7a8.js
index bf5a46bef0..ced30508ff 100644
--- a/web/settings/assets/InstallAssistantStep2-116b498f.js
+++ b/web/settings/assets/InstallAssistantStep2-12a3f7a8.js
@@ -1 +1 @@
-import{C as p}from"./index-f9fda857.js";import d from"./InstallAssistantStepTemplate-3c026c08.js";import l from"./System-aff61250.js";import{_ as u,u as i,k as f,A as g,N as o,x as a,D as S}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const A={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:d,SystemView:l},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function v(e,t,P,w,$,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>t[4]||(t[4]=[a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1)])),content:o(()=>[S(r,{"install-assistant-active":!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(A,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{N as default};
+import{C as p}from"./index-c79666b6.js";import d from"./InstallAssistantStepTemplate-cfe72ae0.js";import l from"./System-83bb0533.js";import{_ as u,u as i,k as f,A as g,N as o,x as a,D as S}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const A={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:d,SystemView:l},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function v(e,t,P,w,$,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>t[4]||(t[4]=[a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1)])),content:o(()=>[S(r,{"install-assistant-active":!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(A,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep3-b44c543e.js b/web/settings/assets/InstallAssistantStep3-c7995cbc.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep3-b44c543e.js
rename to web/settings/assets/InstallAssistantStep3-c7995cbc.js
index c6d1f34a26..a729e237a1 100644
--- a/web/settings/assets/InstallAssistantStep3-b44c543e.js
+++ b/web/settings/assets/InstallAssistantStep3-c7995cbc.js
@@ -1 +1 @@
-import{C as p}from"./index-f9fda857.js";import d from"./InstallAssistantStepTemplate-3c026c08.js";import{G as m}from"./GeneralConfig-1c49e709.js";import{_ as u,u as i,k as g,A as f,N as r,x as s,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function k(n,e,B,S,A,a){const o=i("GeneralConfigView"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:a.nextPage,onPreviousPage:a.previousPage,onEndAssistant:a.endAssistant},{help:r(()=>e[4]||(e[4]=[s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=t=>n.$emit("sendCommand",t)),onSave:e[1]||(e[1]=t=>n.$emit("save")),onReset:e[2]||(e[2]=t=>n.$emit("reset")),onDefaults:e[3]||(e[3]=t=>n.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{I as default};
+import{C as p}from"./index-c79666b6.js";import d from"./InstallAssistantStepTemplate-cfe72ae0.js";import{G as m}from"./GeneralConfig-1687a15a.js";import{_ as u,u as i,k as g,A as f,N as r,x as s,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function k(n,e,B,S,A,a){const o=i("GeneralConfigView"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:a.nextPage,onPreviousPage:a.previousPage,onEndAssistant:a.endAssistant},{help:r(()=>e[4]||(e[4]=[s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=t=>n.$emit("sendCommand",t)),onSave:e[1]||(e[1]=t=>n.$emit("save")),onReset:e[2]||(e[2]=t=>n.$emit("reset")),onDefaults:e[3]||(e[3]=t=>n.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStep4-ca57a396.js b/web/settings/assets/InstallAssistantStep4-19fe0142.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep4-ca57a396.js
rename to web/settings/assets/InstallAssistantStep4-19fe0142.js
index 18ad5f3c10..35f632c967 100644
--- a/web/settings/assets/InstallAssistantStep4-ca57a396.js
+++ b/web/settings/assets/InstallAssistantStep4-19fe0142.js
@@ -1 +1 @@
-import{C as l}from"./index-f9fda857.js";import p from"./InstallAssistantStepTemplate-3c026c08.js";import{b as u}from"./ChargePointInstallation-8dff21bc.js";import{_ as m,u as a,k as g,A as f,N as o,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,B,h,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const L=m(k,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{L as default};
+import{C as l}from"./index-c79666b6.js";import p from"./InstallAssistantStepTemplate-cfe72ae0.js";import{b as u}from"./ChargePointInstallation-2f136eb7.js";import{_ as m,u as a,k as g,A as f,N as o,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,B,h,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const L=m(k,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep5-2a886f5d.js b/web/settings/assets/InstallAssistantStep5-cd0d6d73.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep5-2a886f5d.js
rename to web/settings/assets/InstallAssistantStep5-cd0d6d73.js
index 359ba74c72..28446e7a8c 100644
--- a/web/settings/assets/InstallAssistantStep5-2a886f5d.js
+++ b/web/settings/assets/InstallAssistantStep5-cd0d6d73.js
@@ -1 +1 @@
-import{C as l}from"./index-f9fda857.js";import m from"./InstallAssistantStepTemplate-3c026c08.js";import{H as u}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as r,k as g,A as f,N as a,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,b,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default};
+import{C as l}from"./index-c79666b6.js";import m from"./InstallAssistantStepTemplate-cfe72ae0.js";import{H as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as r,k as g,A as f,N as a,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,b,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default};
diff --git a/web/settings/assets/InstallAssistantStep6-25f8b1a2.js b/web/settings/assets/InstallAssistantStep6-63d131ad.js
similarity index 94%
rename from web/settings/assets/InstallAssistantStep6-25f8b1a2.js
rename to web/settings/assets/InstallAssistantStep6-63d131ad.js
index d44194c77a..8864f6d8b2 100644
--- a/web/settings/assets/InstallAssistantStep6-25f8b1a2.js
+++ b/web/settings/assets/InstallAssistantStep6-63d131ad.js
@@ -1 +1 @@
-import{C as d}from"./index-f9fda857.js";import u from"./InstallAssistantStepTemplate-3c026c08.js";import{b as p}from"./ChargePointInstallation-8dff21bc.js";import{_ as m,u as a,k as g,A as h,N as r,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default};
+import{C as d}from"./index-c79666b6.js";import u from"./InstallAssistantStepTemplate-cfe72ae0.js";import{b as p}from"./ChargePointInstallation-2f136eb7.js";import{_ as m,u as a,k as g,A as h,N as r,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default};
diff --git a/web/settings/assets/InstallAssistantStep7-be0e6887.js b/web/settings/assets/InstallAssistantStep7-c6d28ec8.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-be0e6887.js
rename to web/settings/assets/InstallAssistantStep7-c6d28ec8.js
index a87f6808ea..7accec342a 100644
--- a/web/settings/assets/InstallAssistantStep7-be0e6887.js
+++ b/web/settings/assets/InstallAssistantStep7-c6d28ec8.js
@@ -1 +1 @@
-import{C as l}from"./index-f9fda857.js";import m from"./InstallAssistantStepTemplate-3c026c08.js";import p from"./LoadManagementConfig-da717df7.js";import{_ as u,u as r,k as g,A as h,N as a,x as n,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./OpenwbSortableList-3ce7f991.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default};
+import{C as l}from"./index-c79666b6.js";import m from"./InstallAssistantStepTemplate-cfe72ae0.js";import p from"./LoadManagementConfig-269dec5d.js";import{_ as u,u as r,k as g,A as h,N as a,x as n,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./OpenwbSortableList-3ce7f991.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStep8-5bb0860d.js b/web/settings/assets/InstallAssistantStep8-5cdd309f.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep8-5bb0860d.js
rename to web/settings/assets/InstallAssistantStep8-5cdd309f.js
index 1373772c94..bb5baf498a 100644
--- a/web/settings/assets/InstallAssistantStep8-5bb0860d.js
+++ b/web/settings/assets/InstallAssistantStep8-5cdd309f.js
@@ -1 +1 @@
-import{C as l}from"./index-f9fda857.js";import u from"./InstallAssistantStepTemplate-3c026c08.js";import{a as m}from"./VehicleConfig-e8ea05c9.js";import{_ as g,u as a,k as h,A as p,N as r,x as n,D as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}};function z(t,e,P,w,v,i){const o=a("VehicleConfigView"),d=a("InstallAssistantStepTemplate");return h(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[f(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=g(c,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{x as default};
+import{C as l}from"./index-c79666b6.js";import u from"./InstallAssistantStepTemplate-cfe72ae0.js";import{a as m}from"./VehicleConfig-9a14b719.js";import{_ as g,u as a,k as h,A as p,N as r,x as n,D as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}};function z(t,e,P,w,v,i){const o=a("VehicleConfigView"),d=a("InstallAssistantStepTemplate");return h(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[f(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=g(c,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{x as default};
diff --git a/web/settings/assets/InstallAssistantStep9-af2ff378.js b/web/settings/assets/InstallAssistantStep9-73a6b1e1.js
similarity index 91%
rename from web/settings/assets/InstallAssistantStep9-af2ff378.js
rename to web/settings/assets/InstallAssistantStep9-73a6b1e1.js
index 69153fdb29..fd57c378d7 100644
--- a/web/settings/assets/InstallAssistantStep9-af2ff378.js
+++ b/web/settings/assets/InstallAssistantStep9-73a6b1e1.js
@@ -1 +1 @@
-import{C as l}from"./index-f9fda857.js";import p from"./InstallAssistantStepTemplate-3c026c08.js";import{D as u}from"./DataManagement-b9730b64.js";import{_ as d,u as i,k as g,A as f,N as r,x as a,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,S,A,P,n){const o=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),f(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:r(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:r(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const I=d(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{I as default};
+import{C as l}from"./index-c79666b6.js";import p from"./InstallAssistantStepTemplate-cfe72ae0.js";import{D as u}from"./DataManagement-1fb1197d.js";import{_ as d,u as i,k as g,A as f,N as r,x as a,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,S,A,P,n){const o=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),f(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:r(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:r(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const I=d(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-3c026c08.js b/web/settings/assets/InstallAssistantStepTemplate-cfe72ae0.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-3c026c08.js
rename to web/settings/assets/InstallAssistantStepTemplate-cfe72ae0.js
index 453ea50ba6..d12951de70 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-3c026c08.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-cfe72ae0.js
@@ -1 +1 @@
-import{C as g}from"./index-f9fda857.js";import{l as v,ak as y,al as w,F as x}from"./vendor-fortawesome-41164876.js";import{_ as k,u as r,k as i,l as a,D as t,N as s,x as n,y as c,B as p,m as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(y,w);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},S={class:"row justify-content-center"},T={class:"page-help-text col-md-3 py-2"},I={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",N,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",S,[n("div",T,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",I,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const Z=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{Z as default};
+import{C as g}from"./index-c79666b6.js";import{l as v,ak as y,al as w,F as x}from"./vendor-fortawesome-41164876.js";import{_ as k,u as r,k as i,l as a,D as t,N as s,x as n,y as c,B as p,m as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(y,w);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},S={class:"row justify-content-center"},T={class:"page-help-text col-md-3 py-2"},I={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",N,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",S,[n("div",T,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",I,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const Z=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{Z as default};
diff --git a/web/settings/assets/InstantChargeConfig-61c4fd49.js b/web/settings/assets/InstantChargeConfig-d5bb57b3.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-61c4fd49.js
rename to web/settings/assets/InstantChargeConfig-d5bb57b3.js
index 237d9854f2..7dfb78006c 100644
--- a/web/settings/assets/InstantChargeConfig-61c4fd49.js
+++ b/web/settings/assets/InstantChargeConfig-d5bb57b3.js
@@ -1 +1 @@
-import{C as l}from"./index-f9fda857.js";import{_ as b,u as o,k as a,l as i,x as _,D as s,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-c79666b6.js";import{_ as b,u as o,k as a,l as i,x as _,D as s,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-ddd5b296.js b/web/settings/assets/LegalSettings-acbf6750.js
similarity index 97%
rename from web/settings/assets/LegalSettings-ddd5b296.js
rename to web/settings/assets/LegalSettings-acbf6750.js
index 1855df7a3f..76bafbf297 100644
--- a/web/settings/assets/LegalSettings-ddd5b296.js
+++ b/web/settings/assets/LegalSettings-acbf6750.js
@@ -1 +1 @@
-import{l as _,a3 as k,F as y}from"./vendor-fortawesome-41164876.js";import{C as v}from"./index-f9fda857.js";import{_ as B,u as n,k as i,l as h,x as a,D as o,N as r,A as m,y as d,B as p}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";_.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:y},mixins:[v],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",$,[a("form",z,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const O=B(S,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{O as default};
+import{l as _,a3 as k,F as y}from"./vendor-fortawesome-41164876.js";import{C as v}from"./index-c79666b6.js";import{_ as B,u as n,k as i,l as h,x as a,D as o,N as r,A as m,y as d,B as p}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";_.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:y},mixins:[v],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",$,[a("form",z,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const O=B(S,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{O as default};
diff --git a/web/settings/assets/LoadManagementConfig-269dec5d.js b/web/settings/assets/LoadManagementConfig-269dec5d.js
new file mode 100644
index 0000000000..2f32974c01
--- /dev/null
+++ b/web/settings/assets/LoadManagementConfig-269dec5d.js
@@ -0,0 +1 @@
+import{l as z,O as C,N as L,F as x}from"./vendor-fortawesome-41164876.js";import{C as V}from"./index-c79666b6.js";import{S as $}from"./OpenwbSortableList-3ce7f991.js";import{_ as q,u as l,k as u,l as m,x as d,D as s,N as o,y as i,J as w,K as v,A as W,z as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";z.add(C,L);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:x},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_power_errorcase","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("counter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,r)=>e.text==r.text?0:e.text>r.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("inverter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let r=this.getChargePoint(t.id);r&&(e[t.id]=r.name)}else{let r=this.getComponent(t.id);r&&(e[t.id]=r.name)}return t.children.forEach(r=>{e={...e,...this.getElementTreeNames(r)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},isComponentType(t,e){return t.split("_").includes(e)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E={key:0},F={key:1};function O(t,e,r,P,H,g){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/counter/config/consider_less_charging",n))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:g.getHcSourceIdOptions.options,groups:g.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Wenn ein Zähler nicht auslesbar ist, wird weiterhin versucht, diesen auszulesen und nach 60s die angenommene Leistung im Fehlerfall verwendet, die unten für jeden Zähler eingestellt wird, um eine Überlast zu vermeiden. Die angenommene Leistung wird gleichmäßig auf die Phasen verteilt."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(w,null,v(g.counterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(n.name),1)]),default:o(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximale Leistung im Fehlerfall",min:0,step:1,unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_power_errorcase"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_power_errorcase",a*1e3)},{help:o(()=>[...e[15]||(e[15]=[i(" Angenommen Leistung für diesen (Zwischen-)Zähler, falls vom Zähler keine Werte abgefragt werden können. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[16]||(e[16]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(w,null,v(g.inverterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(n.name),1)]),default:o(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[17]||(e[17]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",E,[s(h,{subtype:"info"},{default:o(()=>e[18]||(e[18]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",F,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:g.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateState("openWB/counter/get/hierarchy",n))},{help:o(()=>e[19]||(e[19]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=n=>t.$emit("save")),onReset:e[4]||(e[4]=n=>t.$emit("reset")),onDefaults:e[5]||(e[5]=n=>t.$emit("defaults"))})])])}const Q=q(Z,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Q as default};
diff --git a/web/settings/assets/LoadManagementConfig-da717df7.js b/web/settings/assets/LoadManagementConfig-da717df7.js
deleted file mode 100644
index 0c9feaf6a4..0000000000
--- a/web/settings/assets/LoadManagementConfig-da717df7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as z,O as C,N as x,F as L}from"./vendor-fortawesome-41164876.js";import{C as V}from"./index-f9fda857.js";import{S as $}from"./OpenwbSortableList-3ce7f991.js";import{_ as q,u as l,k as u,l as m,x as d,D as s,N as o,y as i,J as v,K as w,A as W,z as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";z.add(C,x);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:L},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("counter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,r)=>e.text==r.text?0:e.text>r.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("inverter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let r=this.getChargePoint(t.id);r&&(e[t.id]=r.name)}else{let r=this.getComponent(t.id);r&&(e[t.id]=r.name)}return t.children.forEach(r=>{e={...e,...this.getElementTreeNames(r)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},isComponentType(t,e){return t.split("_").includes(e)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E={key:0},O={key:1};function F(t,e,r,H,P,p){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),g=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/counter/config/consider_less_charging",n))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:p.getHcSourceIdOptions.options,groups:p.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(v,null,w(p.counterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(n.name),1)]),default:o(()=>[s(g,{title:"Maximale Leistung",min:1,step:1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(g,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[15]||(e[15]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(v,null,w(p.inverterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(n.name),1)]),default:o(()=>[s(g,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[16]||(e[16]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",E,[s(h,{subtype:"info"},{default:o(()=>e[17]||(e[17]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",O,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:p.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateState("openWB/counter/get/hierarchy",n))},{help:o(()=>e[18]||(e[18]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=n=>t.$emit("save")),onReset:e[4]||(e[4]=n=>t.$emit("reset")),onDefaults:e[5]||(e[5]=n=>t.$emit("defaults"))})])])}const Q=q(Z,[["render",F],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Q as default};
diff --git a/web/settings/assets/MqttBridgeConfig-2e7d7922.js b/web/settings/assets/MqttBridgeConfig-b791fa6d.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-2e7d7922.js
rename to web/settings/assets/MqttBridgeConfig-b791fa6d.js
index 3e8ec055a4..0b03ec4471 100644
--- a/web/settings/assets/MqttBridgeConfig-2e7d7922.js
+++ b/web/settings/assets/MqttBridgeConfig-b791fa6d.js
@@ -1 +1 @@
-import{l as x,d as C,a0 as A,F as q}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-f9fda857.js";import{_ as D,u,k as m,l as b,D as o,N as a,x as f,J as k,y as s,z as y,A as M,B as T,K as W}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";x.add(C,A);const E={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&(console.info("request removal of mqtt bridge '"+t+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}}))},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},I={class:"mqttBridgeConfiguration"},P={key:0},Q={key:1},Z=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),_=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),w=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),V=u("openwb-base-card");return m(),b(k,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",I,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(V,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),M(_,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",P,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Q,[Object.keys(i.configuredMqttBridges).length===0?(m(),M(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(k,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(V,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(_,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,Z))),128))]))]),_:1})])],64)}const H=D(E,[["render",N],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{H as default};
+import{l as x,d as C,a0 as A,F as q}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-c79666b6.js";import{_ as D,u,k as m,l as b,D as o,N as a,x as f,J as k,y as s,z as y,A as M,B as T,K as W}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";x.add(C,A);const E={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&(console.info("request removal of mqtt bridge '"+t+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}}))},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},I={class:"mqttBridgeConfiguration"},P={key:0},Q={key:1},Z=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),_=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),w=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),V=u("openwb-base-card");return m(),b(k,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",I,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(V,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),M(_,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",P,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Q,[Object.keys(i.configuredMqttBridges).length===0?(m(),M(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(k,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(V,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(_,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,Z))),128))]))]),_:1})])],64)}const H=D(E,[["render",N],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{H as default};
diff --git a/web/settings/assets/OptionalComponents-36fd698f.js b/web/settings/assets/OptionalComponents-4c7d75e4.js
similarity index 98%
rename from web/settings/assets/OptionalComponents-36fd698f.js
rename to web/settings/assets/OptionalComponents-4c7d75e4.js
index 582a444161..3b80aeea2a 100644
--- a/web/settings/assets/OptionalComponents-36fd698f.js
+++ b/web/settings/assets/OptionalComponents-4c7d75e4.js
@@ -1,2 +1,2 @@
-import{_ as $,C}from"./index-f9fda857.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,X as z,Y as V,F as L}from"./vendor-fortawesome-41164876.js";import{_ as v,u as p,k as s,l as r,A as y,N as o,y as i,z as g,D as n,x as l,a0 as I,a1 as E,J as q,B as _}from"./vendor-a21b3a62.js";const F={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},M=v(F,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[M]},j={class:"display-theme-fallback"},x={key:1};function A(t,e,u,c,w,b){const d=p("openwb-base-alert"),m=p("openwb-base-textarea");return s(),r("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),y(d,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+g(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),r("div",x,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+g(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(m,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=f=>t.updateConfiguration(f,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[l("pre",null,g(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const P=v(N,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:L},props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-4083964b.js"),["assets/displayTheme-4083964b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:P})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function H(t,e,u,c,w,b){const d=p("font-awesome-icon"),m=p("openwb-base-alert"),f=p("openwb-base-heading");return s(),r(q,null,[u.displayTheme.official?(s(),y(m,{key:0,subtype:"success"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),y(m,{key:1,subtype:"info"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(f,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+g(u.displayTheme.name)+'" ',1)]),_:1}),(s(),y(E(b.myComponent),{"display-theme":u.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>b.updateConfiguration(h))},null,40,["display-theme"]))],64)}const R=v(U,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:R},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},X={key:1},Y={key:0},Q=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,u,c,w,b){const d=p("openwb-base-alert"),m=p("openwb-base-button-group-input"),f=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),r("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",Z,[n(d,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",X,[n(m,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[11]||(e[11]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),r("div",Y,[n(d,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Q)]),_:1}),n(f,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":b.idTagList.join(`
+import{_ as $,C}from"./index-c79666b6.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,X as z,Y as V,F as L}from"./vendor-fortawesome-41164876.js";import{_ as v,u as p,k as s,l as r,A as y,N as o,y as i,z as g,D as n,x as l,a0 as I,a1 as E,J as q,B as _}from"./vendor-a21b3a62.js";const F={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},M=v(F,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[M]},j={class:"display-theme-fallback"},x={key:1};function A(t,e,u,c,w,b){const d=p("openwb-base-alert"),m=p("openwb-base-textarea");return s(),r("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),y(d,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+g(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),r("div",x,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+g(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(m,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=f=>t.updateConfiguration(f,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[l("pre",null,g(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const P=v(N,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:L},props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-bbed7095.js"),["assets/displayTheme-bbed7095.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:P})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function H(t,e,u,c,w,b){const d=p("font-awesome-icon"),m=p("openwb-base-alert"),f=p("openwb-base-heading");return s(),r(q,null,[u.displayTheme.official?(s(),y(m,{key:0,subtype:"success"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),y(m,{key:1,subtype:"info"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(f,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+g(u.displayTheme.name)+'" ',1)]),_:1}),(s(),y(E(b.myComponent),{"display-theme":u.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>b.updateConfiguration(h))},null,40,["display-theme"]))],64)}const R=v(U,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:R},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},X={key:1},Y={key:0},Q=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,u,c,w,b){const d=p("openwb-base-alert"),m=p("openwb-base-button-group-input"),f=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),r("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",Z,[n(d,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",X,[n(m,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[11]||(e[11]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),r("div",Y,[n(d,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Q)]),_:1}),n(f,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":b.idTagList.join(`
 `)},{help:o(()=>e[16]||(e[16]=[i(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")])),_:1},8,["model-value"])])):_("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(m,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateState("openWB/optional/int_display/active",a))},{help:o(()=>e[17]||(e[17]=[i(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),r("div",ee,[n(m,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}],"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateState("openWB/optional/int_display/rotation",a))},{help:o(()=>e[18]||(e[18]=[i(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),l("br",null,null,-1),i(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")])),_:1},8,["model-value"]),e[21]||(e[21]=l("hr",null,null,-1)),n(T,null,{default:o(()=>e[19]||(e[19]=[i(" Display Standby ")])),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}],"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateState("openWB/optional/int_display/standby",a))},{help:o(()=>e[20]||(e[20]=[i(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")])),_:1},8,["model-value"])])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",te,[e[23]||(e[23]=l("hr",null,null,-1)),n(d,{subtype:"info"},{default:o(()=>e[22]||(e[22]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",ne,[e[26]||(e[26]=l("hr",null,null,-1)),n(m,{title:"Ladepunkte auf externen openWB","model-value":t.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=a=>t.updateState("openWB/optional/int_display/only_local_charge_points",a))},{help:o(()=>e[24]||(e[24]=[i(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")])),_:1},8,["model-value"]),e[27]||(e[27]=l("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),r("div",oe,[n(D,{class:"mb-2",title:"Theme des Displays",groups:b.displayThemeGroupList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":e[5]||(e[5]=a=>b.updateSelectedDisplayTheme(a))},{help:o(()=>e[25]||(e[25]=[i(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")])),_:1},8,["groups","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),y(W,{key:0,"display-theme":t.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":e[6]||(e[6]=a=>b.updateConfiguration("openWB/optional/int_display/theme",a))},null,8,["display-theme"])):_("",!0)])):_("",!0)]))]),_:1}),n(k,{"form-name":"optionalComponentsForm",onSave:e[7]||(e[7]=a=>t.$emit("save")),onReset:e[8]||(e[8]=a=>t.$emit("reset")),onDefaults:e[9]||(e[9]=a=>t.$emit("defaults"))})])])}const ae=v(J,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]),de=Object.freeze(Object.defineProperty({__proto__:null,default:ae},Symbol.toStringTag,{value:"Module"}));export{M as D,de as O};
diff --git a/web/settings/assets/PVChargeConfig-13001890.js b/web/settings/assets/PVChargeConfig-3a73cba8.js
similarity index 99%
rename from web/settings/assets/PVChargeConfig-13001890.js
rename to web/settings/assets/PVChargeConfig-3a73cba8.js
index 64ed4baeb7..325817788a 100644
--- a/web/settings/assets/PVChargeConfig-13001890.js
+++ b/web/settings/assets/PVChargeConfig-3a73cba8.js
@@ -1 +1 @@
-import{C as B}from"./index-f9fda857.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-41164876.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as _,B as v}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[B],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},q={class:"pvChargeConfig"},M={name:"pvChargeConfigForm"},L={key:0},A={key:1},P={key:0},R={key:1},$={key:0},U={key:1},F={key:0};function D(n,e,p,N,I,l){const b=g("openwb-base-alert"),h=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),c=g("openwb-base-card"),m=g("font-awesome-icon"),w=g("openwb-base-range-input"),f=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",q,[o("form",M,[i(c,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(b,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",A,[i(h,{modelValue:l.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>l.controlMode=t),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[22]||(e[22]=[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>e[23]||(e[23]=[r(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>e[24]||(e[24]=[r(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>e[25]||(e[25]=[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>e[26]||(e[26]=[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[31]||(e[31]=o("hr",null,null,-1)),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>e[27]||(e[27]=[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),o("br",null,null,-1),r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>e[28]||(e[28]=[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[32]||(e[32]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>e[29]||(e[29]=[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",P,[i(b,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",R,[i(h,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>e[34]||(e[34]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",$,[i(b,{subtype:"info"},{default:a(()=>e[35]||(e[35]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",U,[i(h,{modelValue:l.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>l.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[36]||(e[36]=r(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[37]||(e[37]=r(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[38]||(e[38]=r(" Mindest-SoC des Speichers "))]),help:a(()=>[e[45]||(e[45]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[39]||(e[39]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[40]||(e[40]=r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[41]||(e[41]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[42]||(e[42]=r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[43]||(e[43]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[44]||(e[44]=r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue","model-value"]),l.batMode==="min_soc_bat_mode"?(s(),u("div",F,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(f,null,{default:a(()=>e[46]||(e[46]=[r(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>e[47]||(e[47]=[r(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),_(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["model-value"])):v("",!0),i(f,null,{default:a(()=>e[48]||(e[48]=[r(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>e[49]||(e[49]=[r(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),_(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["model-value"])):v("",!0)])):v("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const K=E(C,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{K as default};
+import{C as B}from"./index-c79666b6.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-41164876.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as _,B as v}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[B],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},q={class:"pvChargeConfig"},M={name:"pvChargeConfigForm"},L={key:0},A={key:1},P={key:0},R={key:1},$={key:0},U={key:1},F={key:0};function D(n,e,p,N,I,l){const b=g("openwb-base-alert"),h=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),c=g("openwb-base-card"),m=g("font-awesome-icon"),w=g("openwb-base-range-input"),f=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",q,[o("form",M,[i(c,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(b,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",A,[i(h,{modelValue:l.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>l.controlMode=t),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[22]||(e[22]=[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>e[23]||(e[23]=[r(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>e[24]||(e[24]=[r(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>e[25]||(e[25]=[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>e[26]||(e[26]=[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[31]||(e[31]=o("hr",null,null,-1)),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>e[27]||(e[27]=[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),o("br",null,null,-1),r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>e[28]||(e[28]=[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[32]||(e[32]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>e[29]||(e[29]=[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",P,[i(b,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",R,[i(h,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>e[34]||(e[34]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",$,[i(b,{subtype:"info"},{default:a(()=>e[35]||(e[35]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",U,[i(h,{modelValue:l.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>l.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[36]||(e[36]=r(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[37]||(e[37]=r(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[38]||(e[38]=r(" Mindest-SoC des Speichers "))]),help:a(()=>[e[45]||(e[45]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[39]||(e[39]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[40]||(e[40]=r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[41]||(e[41]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[42]||(e[42]=r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[43]||(e[43]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[44]||(e[44]=r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue","model-value"]),l.batMode==="min_soc_bat_mode"?(s(),u("div",F,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(f,null,{default:a(()=>e[46]||(e[46]=[r(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>e[47]||(e[47]=[r(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),_(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["model-value"])):v("",!0),i(f,null,{default:a(()=>e[48]||(e[48]=[r(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>e[49]||(e[49]=[r(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),_(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["model-value"])):v("",!0)])):v("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const K=E(C,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{K as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-6a548cac.js b/web/settings/assets/ScheduledChargeConfig-76a4970c.js
similarity index 98%
rename from web/settings/assets/ScheduledChargeConfig-6a548cac.js
rename to web/settings/assets/ScheduledChargeConfig-76a4970c.js
index c715670e15..1bcef1a055 100644
--- a/web/settings/assets/ScheduledChargeConfig-6a548cac.js
+++ b/web/settings/assets/ScheduledChargeConfig-76a4970c.js
@@ -1 +1 @@
-import{C as h}from"./index-f9fda857.js";import{_ as b,u as o,k as i,l as u,x as l,D as s,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[h],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},c={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const g=o("openwb-base-alert"),d=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return i(),u("div",c,[l("form",f,[s(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[s(g,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[s(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"]),e[8]||(e[8]=l("hr",null,null,-1)),s(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(p,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const E=b(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default};
+import{C as h}from"./index-c79666b6.js";import{_ as b,u as o,k as i,l as u,x as l,D as s,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[h],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},c={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const g=o("openwb-base-alert"),d=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return i(),u("div",c,[l("form",f,[s(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[s(g,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[s(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"]),e[8]||(e[8]=l("hr",null,null,-1)),s(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(p,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const E=b(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default};
diff --git a/web/settings/assets/Status-bc2c7d27.js b/web/settings/assets/Status-f4fe35a1.js
similarity index 99%
rename from web/settings/assets/Status-bc2c7d27.js
rename to web/settings/assets/Status-f4fe35a1.js
index 9b2070c633..889f38fe99 100644
--- a/web/settings/assets/Status-bc2c7d27.js
+++ b/web/settings/assets/Status-f4fe35a1.js
@@ -1 +1 @@
-import{C as y}from"./index-f9fda857.js";import{l as w,K as S,F as x,L as k,M as C,c as q,N as z,O as $,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-41164876.js";import{_ as W,u as o,k as r,A as l,N as d,D as n,y as p,z as f,x as v,B as T,l as I,J as P,K as L}from"./vendor-a21b3a62.js";import{C as H,p as Z,a as K,L as F,b as J,P as G,c as Q,T as U,i as X,d as Y,e as ee}from"./vendor-chartjs-5fa56b74.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";w.add(S);const te={name:"ChargePointSumCard",components:{FontAwesomeIcon:x},mixins:[y]};function ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-text-input"),c=o("openwb-base-heading"),u=o("openwb-base-card");return r(),l(u,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),t[0]||(t[0]=p(" Alle Ladepunkte "))]),default:d(()=>[n(m,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[1]||(t[1]=[p("Historie")])),_:1}),n(m,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const oe=W(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,q,S);const ae={name:"ChargePointCard",components:{FontAwesomeIcon:x},mixins:[y],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}};function re(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-checkbox-input"),u=o("openwb-base-text-input"),_=o("openwb-base-heading"),B=o("openwb-base-card");return r(),l(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),p(" "+f(a.installedChargePoint.name)+" (ID: "+f(s.chargePointIndex)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(m,{subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/state_str"]),1)]),_:1}),n(c,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),n(c,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),n(u,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/current",2)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[4]||(t[4]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[5]||(t[5]=[p("Phasen")])),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),l(u,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+s.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(r(),l(u,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),n(u,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const se=W(ae,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,q,z);const le={name:"CounterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{counter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ie(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-card");return r(),l(_,{subtype:"danger",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","gauge-high"]}),p(" "+f(a.counter.name)+" (ID: "+f(a.counter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]!=null?(r(),l(m,{key:0,subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]),1)]),_:1})):T("",!0),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Zählerstände")])),_:1}),n(u,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/frequency",3)},null,8,["model-value"]),n(c,null,{default:d(()=>t[6]||(t[6]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const ue=W(le,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,q,$);const pe={name:"InverterSumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function de(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),t[0]||(t[0]=p(" Alle Wechselrichter "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[3]||(t[3]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ce=W(pe,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,q,$);const me={name:"InverterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{inverter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ge(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),p(" "+f(a.inverter.name)+" (ID: "+f(a.inverter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[2]||(t[2]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const fe=W(me,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,q,A);const be={name:"BatterySumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function _e(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),t[0]||(t[0]=p(" Alle Speicher "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Tageswerte")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const he=W(be,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,q,A);const ve={name:"BatteryCard",components:{FontAwesomeIcon:x},mixins:[y],props:{battery:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ye(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),p(" "+f(a.battery.name)+" (ID: "+f(a.battery.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Aktuelle Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/soc"]},null,8,["model-value"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const We=W(ve,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,q,E);const we={name:"RippleControlReceiverCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}};function xe(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(r(),l(u,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{icon:["fas","tower-broadcast"]}),t[0]||(t[0]=p(" Steuerbare Verbrauchseinrichtung (RSE) "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):T("",!0)}const Be=W(we,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,q,M);const ke={name:"VehicleCard",components:{FontAwesomeIcon:x},mixins:[y],props:{vehicle:{type:Object,required:!1,default:void 0},vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}};function Ce(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-number-input"),_=o("openwb-base-text-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car"]}),p(" "+f(a.vehicleName)+" (ID: "+f(s.vehicleIndex)+") ",1)]),default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]!==void 0?(r(),l(m,{key:0,subtype:g.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):T("",!0),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Fahrzeugdaten")])),_:1}),n(u,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/soc"]},null,8,["model-value"]),n(u,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":s.socRange},null,8,["model-value"]),n(_,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":s.socTimestamp},null,8,["model-value"])]),_:1})}const qe=W(ke,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,q,V);H.register(Z,K,F,J,G,Q,U,X,Y);const Te={name:"ElectricityTariffCard",components:{ChartjsLine:ee,FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],t=[];for(const[g,s]of Object.entries(e))t.push({timestamp:g*1e3,price:s*1e5});const b=t.slice(-1)[0];t.push({timestamp:b.timestamp+(60*60-1)*1e3,price:b.price})}const a=this.chartDatasets;return a.datasets[0].data=t,a}}},Ie={class:"openwb-chart"};function Ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("chartjs-line"),_=o("openwb-base-card");return s.electricityTariffConfigured?(r(),l(_,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","ranking-star"]}),t[0]||(t[0]=p(" Variabler Stromtarif "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ie,[s.chartDataRead?(r(),l(u,{key:0,ref:"myChart",data:s.chartDataObject,options:g.chartOptions},null,8,["data","options"])):T("",!0)])]),_:1})):T("",!0)}const Pe=W(Te,[["render",Ne],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Le={name:"OpenwbStatusView",components:{ChargePointSumCard:oe,ChargePointCard:se,CounterCard:ue,InverterSumCard:ce,InverterCard:fe,BatterySumCard:he,BatteryCard:We,RippleControlReceiverCard:Be,VehicleCard:qe,ElectricityTariffCard:Pe},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),t={};for(const[a,b]of Object.entries(e))(b.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(t[a]=b);return t}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,t){return Object.keys(e).filter(a=>e[a].type.includes(t)).reduce((a,b)=>({...a,[b]:e[b]}),{})}}},Se={class:"status"};function $e(e,t,a,b,g,s){const i=o("charge-point-sum-card"),m=o("charge-point-card"),c=o("counter-card"),u=o("inverter-sum-card"),_=o("inverter-card"),B=o("battery-sum-card"),O=o("battery-card"),j=o("vehicle-card"),D=o("electricity-tariff-card"),R=o("ripple-control-receiver-card");return r(),I("div",Se,[s.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(i,{key:0})):T("",!0),(r(!0),I(P,null,L(s.installedChargePoints,(h,N)=>(r(),l(m,{key:N,"installed-charge-point":h,"installed-charge-point-key":N},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(r(!0),I(P,null,L(s.counterConfigs,h=>(r(),l(c,{key:h.id,counter:h},null,8,["counter"]))),128)),s.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(u,{key:1})):T("",!0),(r(!0),I(P,null,L(s.inverterConfigs,h=>(r(),l(_,{key:h.id,inverter:h},null,8,["inverter"]))),128)),s.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(B,{key:2})):T("",!0),(r(!0),I(P,null,L(s.batteryConfigs,h=>(r(),l(O,{key:h.id,battery:h},null,8,["battery"]))),128)),(r(!0),I(P,null,L(s.vehicleNames,(h,N)=>(r(),l(j,{key:N,"vehicle-key":N,"vehicle-name":h},null,8,["vehicle-key","vehicle-name"]))),128)),n(D),n(R)])}const He=W(Le,[["render",$e],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{He as default};
+import{C as y}from"./index-c79666b6.js";import{l as w,K as S,F as x,L as k,M as C,c as q,N as z,O as $,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-41164876.js";import{_ as W,u as o,k as r,A as l,N as d,D as n,y as p,z as f,x as v,B as T,l as I,J as P,K as L}from"./vendor-a21b3a62.js";import{C as H,p as Z,a as K,L as F,b as J,P as G,c as Q,T as U,i as X,d as Y,e as ee}from"./vendor-chartjs-5fa56b74.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";w.add(S);const te={name:"ChargePointSumCard",components:{FontAwesomeIcon:x},mixins:[y]};function ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-text-input"),c=o("openwb-base-heading"),u=o("openwb-base-card");return r(),l(u,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),t[0]||(t[0]=p(" Alle Ladepunkte "))]),default:d(()=>[n(m,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[1]||(t[1]=[p("Historie")])),_:1}),n(m,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const oe=W(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,q,S);const ae={name:"ChargePointCard",components:{FontAwesomeIcon:x},mixins:[y],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}};function re(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-checkbox-input"),u=o("openwb-base-text-input"),_=o("openwb-base-heading"),B=o("openwb-base-card");return r(),l(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),p(" "+f(a.installedChargePoint.name)+" (ID: "+f(s.chargePointIndex)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(m,{subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/state_str"]),1)]),_:1}),n(c,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),n(c,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),n(u,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/current",2)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[4]||(t[4]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[5]||(t[5]=[p("Phasen")])),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),l(u,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+s.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(r(),l(u,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),n(u,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const se=W(ae,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,q,z);const le={name:"CounterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{counter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ie(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-card");return r(),l(_,{subtype:"danger",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","gauge-high"]}),p(" "+f(a.counter.name)+" (ID: "+f(a.counter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]!=null?(r(),l(m,{key:0,subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]),1)]),_:1})):T("",!0),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Zählerstände")])),_:1}),n(u,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/frequency",3)},null,8,["model-value"]),n(c,null,{default:d(()=>t[6]||(t[6]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const ue=W(le,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,q,$);const pe={name:"InverterSumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function de(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),t[0]||(t[0]=p(" Alle Wechselrichter "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[3]||(t[3]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ce=W(pe,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,q,$);const me={name:"InverterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{inverter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ge(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),p(" "+f(a.inverter.name)+" (ID: "+f(a.inverter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[2]||(t[2]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const fe=W(me,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,q,A);const be={name:"BatterySumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function _e(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),t[0]||(t[0]=p(" Alle Speicher "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Tageswerte")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const he=W(be,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,q,A);const ve={name:"BatteryCard",components:{FontAwesomeIcon:x},mixins:[y],props:{battery:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ye(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),p(" "+f(a.battery.name)+" (ID: "+f(a.battery.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Aktuelle Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/soc"]},null,8,["model-value"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const We=W(ve,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,q,E);const we={name:"RippleControlReceiverCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}};function xe(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(r(),l(u,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{icon:["fas","tower-broadcast"]}),t[0]||(t[0]=p(" Steuerbare Verbrauchseinrichtung (RSE) "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):T("",!0)}const Be=W(we,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,q,M);const ke={name:"VehicleCard",components:{FontAwesomeIcon:x},mixins:[y],props:{vehicle:{type:Object,required:!1,default:void 0},vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}};function Ce(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-number-input"),_=o("openwb-base-text-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car"]}),p(" "+f(a.vehicleName)+" (ID: "+f(s.vehicleIndex)+") ",1)]),default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]!==void 0?(r(),l(m,{key:0,subtype:g.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):T("",!0),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Fahrzeugdaten")])),_:1}),n(u,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/soc"]},null,8,["model-value"]),n(u,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":s.socRange},null,8,["model-value"]),n(_,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":s.socTimestamp},null,8,["model-value"])]),_:1})}const qe=W(ke,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,q,V);H.register(Z,K,F,J,G,Q,U,X,Y);const Te={name:"ElectricityTariffCard",components:{ChartjsLine:ee,FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],t=[];for(const[g,s]of Object.entries(e))t.push({timestamp:g*1e3,price:s*1e5});const b=t.slice(-1)[0];t.push({timestamp:b.timestamp+(60*60-1)*1e3,price:b.price})}const a=this.chartDatasets;return a.datasets[0].data=t,a}}},Ie={class:"openwb-chart"};function Ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("chartjs-line"),_=o("openwb-base-card");return s.electricityTariffConfigured?(r(),l(_,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","ranking-star"]}),t[0]||(t[0]=p(" Variabler Stromtarif "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ie,[s.chartDataRead?(r(),l(u,{key:0,ref:"myChart",data:s.chartDataObject,options:g.chartOptions},null,8,["data","options"])):T("",!0)])]),_:1})):T("",!0)}const Pe=W(Te,[["render",Ne],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Le={name:"OpenwbStatusView",components:{ChargePointSumCard:oe,ChargePointCard:se,CounterCard:ue,InverterSumCard:ce,InverterCard:fe,BatterySumCard:he,BatteryCard:We,RippleControlReceiverCard:Be,VehicleCard:qe,ElectricityTariffCard:Pe},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),t={};for(const[a,b]of Object.entries(e))(b.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(t[a]=b);return t}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,t){return Object.keys(e).filter(a=>e[a].type.includes(t)).reduce((a,b)=>({...a,[b]:e[b]}),{})}}},Se={class:"status"};function $e(e,t,a,b,g,s){const i=o("charge-point-sum-card"),m=o("charge-point-card"),c=o("counter-card"),u=o("inverter-sum-card"),_=o("inverter-card"),B=o("battery-sum-card"),O=o("battery-card"),j=o("vehicle-card"),D=o("electricity-tariff-card"),R=o("ripple-control-receiver-card");return r(),I("div",Se,[s.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(i,{key:0})):T("",!0),(r(!0),I(P,null,L(s.installedChargePoints,(h,N)=>(r(),l(m,{key:N,"installed-charge-point":h,"installed-charge-point-key":N},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(r(!0),I(P,null,L(s.counterConfigs,h=>(r(),l(c,{key:h.id,counter:h},null,8,["counter"]))),128)),s.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(u,{key:1})):T("",!0),(r(!0),I(P,null,L(s.inverterConfigs,h=>(r(),l(_,{key:h.id,inverter:h},null,8,["inverter"]))),128)),s.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(B,{key:2})):T("",!0),(r(!0),I(P,null,L(s.batteryConfigs,h=>(r(),l(O,{key:h.id,battery:h},null,8,["battery"]))),128)),(r(!0),I(P,null,L(s.vehicleNames,(h,N)=>(r(),l(j,{key:N,"vehicle-key":N,"vehicle-name":h},null,8,["vehicle-key","vehicle-name"]))),128)),n(D),n(R)])}const He=W(Le,[["render",$e],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{He as default};
diff --git a/web/settings/assets/Support-a91e414e.js b/web/settings/assets/Support-e285335a.js
similarity index 99%
rename from web/settings/assets/Support-a91e414e.js
rename to web/settings/assets/Support-e285335a.js
index 4cba49b5b5..393ce3a897 100644
--- a/web/settings/assets/Support-a91e414e.js
+++ b/web/settings/assets/Support-e285335a.js
@@ -1,3 +1,3 @@
-import{l as D,g as V,F as W}from"./vendor-fortawesome-41164876.js";import{C as A}from"./index-f9fda857.js";import{_ as C,u,k as f,l as c,x as r,A as k,N as s,D as o,a2 as F,B as w,y as n,q as z}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[A],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p}
+import{l as D,g as V,F as W}from"./vendor-fortawesome-41164876.js";import{C as A}from"./index-c79666b6.js";import{_ as C,u,k as f,l as c,x as r,A as k,N as s,D as o,a2 as F,B as w,y as n,q as z}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[A],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p}
 `}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const e=this.getWildcardTopics("openWB/vehicle/+/info");for(const[b,m]of Object.entries(e)){const t=parseInt(b.split("/")[2]);if(t!==0){const a=m.manufacturer||"N/A",d=m.model||"N/A";i+=`(${t}) Hersteller: ${a}, Modell: ${d}
 `}}return i.trim()}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},_={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T={class:"row justify-content-center"};function M(i,e,b,m,t,a){const d=u("router-link"),p=u("openwb-base-alert"),v=u("FontAwesomeIcon"),h=u("openwb-base-text-input"),g=u("openwb-base-textarea"),y=u("openwb-base-click-button"),B=u("openwb-base-card"),S=u("font-awesome-icon");return f(),c("div",_,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(f(),k(p,{key:0,subtype:"danger"},{default:s(()=>[e[6]||(e[6]=n(" Du musst der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[5]||(e[5]=[n(" Datenschutzerklärung ")])),_:1}),e[7]||(e[7]=n(" zustimmen, um einen Systembericht senden zu können. "))]),_:1})):(f(),c("div",I,[o(p,{subtype:"success"},{default:s(()=>[e[9]||(e[9]=n(" Du hast der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[8]||(e[8]=[n(" Datenschutzerklärung ")])),_:1}),e[10]||(e[10]=n(" zugestimmt und kannst Systemberichte senden. "))]),_:1}),o(B,{title:"Systembericht"},F({default:s(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(f(),c("div",N,[o(p,{subtype:"info"},{default:s(()=>[r("ul",null,[r("li",null,[e[11]||(e[11]=n(" Lies bitte den Hilfetext, der durch Klick auf das ")),o(v,{icon:["far","question-circle"]}),e[12]||(e[12]=n(" angezeigt wird. Nimm das Wiki zur Hilfe. "))]),e[13]||(e[13]=r("li",null,' Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist. ',-1)),e[14]||(e[14]=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1)),e[15]||(e[15]=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1)),e[16]||(e[16]=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1))])]),_:1}),o(h,{modelValue:t.email,"onUpdate:modelValue":e[0]||(e[0]=l=>t.email=l),title:"E-Mail",required:"",subtype:"email"},{help:s(()=>e[17]||(e[17]=[n(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")])),_:1},8,["modelValue"]),o(h,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:s(()=>e[18]||(e[18]=[n(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),r("br",null,null,-1),n(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")])),_:1},8,["model-value"]),o(g,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":a.installedComponents,"onUpdate:modelValue":e[2]||(e[2]=l=>t.components=l)},{help:s(()=>[e[20]||(e[20]=n(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind.")),e[21]||(e[21]=r("br",null,null,-1)),o(d,{to:"/HardwareInstallation"},{default:s(()=>e[19]||(e[19]=[n(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":a.vehicleInfo,"onUpdate:modelValue":e[3]||(e[3]=l=>t.vehicles=l)},{help:s(()=>[e[23]||(e[23]=n(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr).")),e[24]||(e[24]=r("br",null,null,-1)),o(d,{to:"/VehicleConfiguration"},{default:s(()=>e[22]||(e[22]=[n(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{modelValue:t.message,"onUpdate:modelValue":e[4]||(e[4]=l=>t.message=l),title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500"},null,8,["modelValue"])])):w("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[r("div",T,[o(y,{class:z(["col-4",t.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!t.enableSendDebugButton,onButtonClicked:a.sendDebugMessage},{default:s(()=>e[25]||(e[25]=[n(" Absenden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),t.enableSendDebugButton?w("",!0):(f(),k(p,{key:0,subtype:"success"},{default:s(()=>[e[26]||(e[26]=n(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. ")),o(S,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const G=C(x,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{G as default};
diff --git a/web/settings/assets/System-aff61250.js b/web/settings/assets/System-83bb0533.js
similarity index 98%
rename from web/settings/assets/System-aff61250.js
rename to web/settings/assets/System-83bb0533.js
index 6643fc74d8..c23fbeb857 100644
--- a/web/settings/assets/System-aff61250.js
+++ b/web/settings/assets/System-83bb0533.js
@@ -1 +1 @@
-import{l as W,ae as A,p as q,a3 as C,U as S,af as z,F as U}from"./vendor-fortawesome-41164876.js";import{C as x}from"./index-f9fda857.js";import{_ as E,u as b,k as c,l as h,A as _,N as a,B as w,x as r,D as t,y as i,q as B,J as $,K as F,z as j}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";W.add(A,q,C,S,z);const D={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[x],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getBranchGroups(){const n="Release",e="Beta",u="master",v=[n,e],p=(l,d)=>l.value==d.value?0:l.value==n?-1:d.value==n?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var m=0;for(const[l,d]of Object.entries(o))v.includes(l)?m=0:l==u?m=1:m=2,f[m].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(p),f[1].options.sort(p)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var n=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(n!==void 0)for(const[u,v]of Object.entries(n))e.unshift({value:u,text:v});return e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},T={class:"system"},L={key:1},N={name:"versionInfoForm"},R={class:"missing-commits"},Z={class:"row justify-content-center"},I={class:"col-md-4 d-flex py-1 justify-content-center"},O={class:"col-md-4 d-flex py-1 justify-content-center"},P={key:0,name:"powerForm"},G={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={key:1,name:"releaseChangeForm"},M={class:"row justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"};function X(n,e,u,v,p,o){const f=b("openwb-base-button-group-input"),m=b("openwb-base-alert"),l=b("openwb-base-text-input"),d=b("openwb-base-card"),g=b("font-awesome-icon"),y=b("openwb-base-click-button"),k=b("openwb-base-select-input");return c(),h("div",T,[u.installAssistantActive?w("",!0):(c(),_(m,{key:0,subtype:"danger"},{default:a(()=>[e[12]||(e[12]=r("h2",null,"Achtung!",-1)),e[13]||(e[13]=r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=s=>p.warningAcknowledged=s),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),h("div",L,[r("form",N,[t(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",Z,[r("div",I,[t(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=s=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[e[16]||(e[16]=i(" Informationen aktualisieren ")),t(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",O,[t(y,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=s=>o.systemUpdate())},{default:a(()=>[e[17]||(e[17]=i(" Update ")),t(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=s=>n.$store.state.mqtt["openWB/system/current_branch"]=s),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=s=>n.$store.state.mqtt["openWB/system/version"]=s),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=s=>n.$store.state.mqtt["openWB/system/current_commit"]=s),title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=s=>n.$store.state.mqtt["openWB/system/current_branch_commit"]=s),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),o.updateAvailable?(c(),_(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",R,[(c(!0),h($,null,F(n.$store.state.mqtt["openWB/system/current_missing_commits"],(s,V)=>(c(),h("li",{key:V},j(s),1))),128))])]),_:1})):w("",!0),t(m,{subtype:"danger"},{default:a(()=>e[14]||(e[14]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),n.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),_(m,{key:1,subtype:"danger"},{default:a(()=>e[15]||(e[15]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),r("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(c(),h("form",P,[t(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",G,[r("div",J,[t(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=s=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[e[19]||(e[19]=i(" Neustart ")),t(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",H,[t(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=s=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[e[20]||(e[20]=i(" Ausschalten ")),t(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[18]||(e[18]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(c(),h("form",K,[t(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",M,[r("div",Q,[t(y,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=s=>o.switchBranch())},{default:a(()=>[t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[23]||(e[23]=i(" Branch und Tag wechseln ")),t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[21]||(e[21]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),t(m,{subtype:"warning"},{default:a(()=>e[22]||(e[22]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),r("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),r("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),r("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),r("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),t(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=s=>n.updateState("openWB/system/current_branch",s))},null,8,["groups","model-value"]),t(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=s=>p.selectedTag=s),title:"Tag",options:o.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):w("",!0)])}const oe=E(D,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{oe as default};
+import{l as W,ae as A,p as q,a3 as C,U as S,af as z,F as U}from"./vendor-fortawesome-41164876.js";import{C as x}from"./index-c79666b6.js";import{_ as E,u as b,k as c,l as h,A as _,N as a,B as w,x as r,D as t,y as i,q as B,J as $,K as F,z as j}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";W.add(A,q,C,S,z);const D={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[x],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getBranchGroups(){const n="Release",e="Beta",u="master",v=[n,e],p=(l,d)=>l.value==d.value?0:l.value==n?-1:d.value==n?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var m=0;for(const[l,d]of Object.entries(o))v.includes(l)?m=0:l==u?m=1:m=2,f[m].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(p),f[1].options.sort(p)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var n=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(n!==void 0)for(const[u,v]of Object.entries(n))e.unshift({value:u,text:v});return e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},T={class:"system"},L={key:1},N={name:"versionInfoForm"},R={class:"missing-commits"},Z={class:"row justify-content-center"},I={class:"col-md-4 d-flex py-1 justify-content-center"},O={class:"col-md-4 d-flex py-1 justify-content-center"},P={key:0,name:"powerForm"},G={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={key:1,name:"releaseChangeForm"},M={class:"row justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"};function X(n,e,u,v,p,o){const f=b("openwb-base-button-group-input"),m=b("openwb-base-alert"),l=b("openwb-base-text-input"),d=b("openwb-base-card"),g=b("font-awesome-icon"),y=b("openwb-base-click-button"),k=b("openwb-base-select-input");return c(),h("div",T,[u.installAssistantActive?w("",!0):(c(),_(m,{key:0,subtype:"danger"},{default:a(()=>[e[12]||(e[12]=r("h2",null,"Achtung!",-1)),e[13]||(e[13]=r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=s=>p.warningAcknowledged=s),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),h("div",L,[r("form",N,[t(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",Z,[r("div",I,[t(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=s=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[e[16]||(e[16]=i(" Informationen aktualisieren ")),t(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",O,[t(y,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=s=>o.systemUpdate())},{default:a(()=>[e[17]||(e[17]=i(" Update ")),t(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=s=>n.$store.state.mqtt["openWB/system/current_branch"]=s),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=s=>n.$store.state.mqtt["openWB/system/version"]=s),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=s=>n.$store.state.mqtt["openWB/system/current_commit"]=s),title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=s=>n.$store.state.mqtt["openWB/system/current_branch_commit"]=s),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),o.updateAvailable?(c(),_(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",R,[(c(!0),h($,null,F(n.$store.state.mqtt["openWB/system/current_missing_commits"],(s,V)=>(c(),h("li",{key:V},j(s),1))),128))])]),_:1})):w("",!0),t(m,{subtype:"danger"},{default:a(()=>e[14]||(e[14]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),n.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),_(m,{key:1,subtype:"danger"},{default:a(()=>e[15]||(e[15]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),r("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(c(),h("form",P,[t(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",G,[r("div",J,[t(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=s=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[e[19]||(e[19]=i(" Neustart ")),t(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",H,[t(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=s=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[e[20]||(e[20]=i(" Ausschalten ")),t(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[18]||(e[18]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(c(),h("form",K,[t(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",M,[r("div",Q,[t(y,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=s=>o.switchBranch())},{default:a(()=>[t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[23]||(e[23]=i(" Branch und Tag wechseln ")),t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[21]||(e[21]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),t(m,{subtype:"warning"},{default:a(()=>e[22]||(e[22]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),r("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),r("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),r("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),r("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),t(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=s=>n.updateState("openWB/system/current_branch",s))},null,8,["groups","model-value"]),t(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=s=>p.selectedTag=s),title:"Tag",options:o.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):w("",!0)])}const oe=E(D,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{oe as default};
diff --git a/web/settings/assets/TestingStore-c3e1bdb5.js b/web/settings/assets/TestingStore-935625ae.js
similarity index 99%
rename from web/settings/assets/TestingStore-c3e1bdb5.js
rename to web/settings/assets/TestingStore-935625ae.js
index 7845b157b7..e3fed79890 100644
--- a/web/settings/assets/TestingStore-c3e1bdb5.js
+++ b/web/settings/assets/TestingStore-935625ae.js
@@ -1 +1 @@
-import{C as U}from"./index-f9fda857.js";import{S as y}from"./OpenwbSortableList-3ce7f991.js";import{_ as E,u as s,k,l as T,x as u,D as a,N as n,y as o,z as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const z={name:"OpenwbTestingStoreView",components:{SortableList:y},mixins:[U],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},N={class:"testingStore"},O={name:"testingStoreForm"};function Z(t,e,j,D,B,J){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),d=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),w=s("openwb-base-array-input"),x=s("openwb-base-heading"),r=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return k(),T("div",N,[u("form",O,[a(i,{title:"Einfache Eingabefelder"},{default:n(()=>[a(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("text1",l))},{help:n(()=>e[26]||(e[26]=[o(" Einfacher Text ")])),_:1},8,["model-value"]),a(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text2",l))},{help:n(()=>e[27]||(e[27]=[o(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),a(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text3",l))},{help:n(()=>e[28]||(e[28]=[o(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),a(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text4",l))},{help:n(()=>e[29]||(e[29]=[o(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),a(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text5",l))},{help:n(()=>e[30]||(e[30]=[o(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),a(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text6",l))},{help:n(()=>e[31]||(e[31]=[o(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),a(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text7",l))},{help:n(()=>e[32]||(e[32]=[o(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[38]||(e[38]=u("hr",null,null,-1)),a(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("number1",l))},{help:n(()=>e[33]||(e[33]=[o(" Zahl mit Einheit ")])),_:1},8,["model-value"]),a(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number2",l))},{help:n(()=>e[34]||(e[34]=[o(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),a(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[35]||(e[35]=[o(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),u("br",null,null,-1),o(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),u("br",null,null,-1),o(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),a(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("password1",l))},{help:n(()=>e[36]||(e[36]=[o(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[39]||(e[39]=u("hr",null,null,-1)),a(f,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("textarea1",l))},{help:n(()=>e[37]||(e[37]=[o(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"Spezielle Elemente"},{default:n(()=>[a(d,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("range1",l))},{help:n(()=>e[40]||(e[40]=[o(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),a(d,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range2",l))},{help:n(()=>e[41]||(e[41]=[o(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[46]||(e[46]=u("hr",null,null,-1)),a(b,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("select1",l))},{help:n(()=>e[42]||(e[42]=[o(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),a(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select2",l))},{help:n(()=>e[43]||(e[43]=[o(" Select mit Gruppen ")])),_:1},8,["model-value"]),e[47]||(e[47]=u("hr",null,null,-1)),a(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[44]||(e[44]=[o(" Hilfetext ")])),_:1},8,["model-value"]),e[48]||(e[48]=u("hr",null,null,-1)),a(S,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[17]||(e[17]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[45]||(e[45]=[o(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"JSON Gruppe"},{default:n(()=>[a(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("json1",l))},{help:n(()=>e[49]||(e[49]=[o(" JSON Objekt ")])),_:1},8,["model-value"]),a(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[50]||(e[50]=[o(" Text im JSON Objekt ")])),_:1},8,["model-value"]),a(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[51]||(e[51]=[o(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),a(w,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("tags",l))},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),a(i,{title:"Meldungen"},{header:n(()=>e[52]||(e[52]=[u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[o(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),o(" Slot ")],-1)])),default:n(()=>[a(x,null,{help:n(()=>e[53]||(e[53]=[o(" Es sind auch Hilfetexte im #help Slot möglich. ")])),default:n(()=>[e[54]||(e[54]=o(" Das ist eine Überschrift "))]),_:1}),a(r,null,{default:n(()=>e[55]||(e[55]=[o(" Meldung ohne speziellen Subtype. ")])),_:1}),a(r,{subtype:"info"},{default:n(()=>e[56]||(e[56]=[o(" Infomeldung ")])),_:1}),a(r,{subtype:"warning"},{default:n(()=>e[57]||(e[57]=[o(" Warnmeldung ")])),_:1}),a(r,{subtype:"danger"},{default:n(()=>e[58]||(e[58]=[o(" Fehlermeldung ")])),_:1})]),_:1}),a(i,{title:"Listen"},{default:n(()=>[a($,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[22]||(e[22]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),a(V,{"form-name":"testingStoreForm",onSave:e[23]||(e[23]=l=>t.$emit("save")),onReset:e[24]||(e[24]=l=>t.$emit("reset")),onDefaults:e[25]||(e[25]=l=>t.$emit("defaults"))})])])}const M=E(z,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{M as default};
+import{C as U}from"./index-c79666b6.js";import{S as y}from"./OpenwbSortableList-3ce7f991.js";import{_ as E,u as s,k,l as T,x as u,D as a,N as n,y as o,z as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const z={name:"OpenwbTestingStoreView",components:{SortableList:y},mixins:[U],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},N={class:"testingStore"},O={name:"testingStoreForm"};function Z(t,e,j,D,B,J){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),d=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),w=s("openwb-base-array-input"),x=s("openwb-base-heading"),r=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return k(),T("div",N,[u("form",O,[a(i,{title:"Einfache Eingabefelder"},{default:n(()=>[a(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("text1",l))},{help:n(()=>e[26]||(e[26]=[o(" Einfacher Text ")])),_:1},8,["model-value"]),a(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text2",l))},{help:n(()=>e[27]||(e[27]=[o(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),a(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text3",l))},{help:n(()=>e[28]||(e[28]=[o(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),a(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text4",l))},{help:n(()=>e[29]||(e[29]=[o(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),a(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text5",l))},{help:n(()=>e[30]||(e[30]=[o(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),a(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text6",l))},{help:n(()=>e[31]||(e[31]=[o(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),a(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text7",l))},{help:n(()=>e[32]||(e[32]=[o(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[38]||(e[38]=u("hr",null,null,-1)),a(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("number1",l))},{help:n(()=>e[33]||(e[33]=[o(" Zahl mit Einheit ")])),_:1},8,["model-value"]),a(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number2",l))},{help:n(()=>e[34]||(e[34]=[o(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),a(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[35]||(e[35]=[o(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),u("br",null,null,-1),o(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),u("br",null,null,-1),o(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),a(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("password1",l))},{help:n(()=>e[36]||(e[36]=[o(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[39]||(e[39]=u("hr",null,null,-1)),a(f,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("textarea1",l))},{help:n(()=>e[37]||(e[37]=[o(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"Spezielle Elemente"},{default:n(()=>[a(d,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("range1",l))},{help:n(()=>e[40]||(e[40]=[o(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),a(d,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range2",l))},{help:n(()=>e[41]||(e[41]=[o(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[46]||(e[46]=u("hr",null,null,-1)),a(b,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("select1",l))},{help:n(()=>e[42]||(e[42]=[o(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),a(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select2",l))},{help:n(()=>e[43]||(e[43]=[o(" Select mit Gruppen ")])),_:1},8,["model-value"]),e[47]||(e[47]=u("hr",null,null,-1)),a(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[44]||(e[44]=[o(" Hilfetext ")])),_:1},8,["model-value"]),e[48]||(e[48]=u("hr",null,null,-1)),a(S,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[17]||(e[17]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[45]||(e[45]=[o(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"JSON Gruppe"},{default:n(()=>[a(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("json1",l))},{help:n(()=>e[49]||(e[49]=[o(" JSON Objekt ")])),_:1},8,["model-value"]),a(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[50]||(e[50]=[o(" Text im JSON Objekt ")])),_:1},8,["model-value"]),a(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[51]||(e[51]=[o(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),a(w,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("tags",l))},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),a(i,{title:"Meldungen"},{header:n(()=>e[52]||(e[52]=[u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[o(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),o(" Slot ")],-1)])),default:n(()=>[a(x,null,{help:n(()=>e[53]||(e[53]=[o(" Es sind auch Hilfetexte im #help Slot möglich. ")])),default:n(()=>[e[54]||(e[54]=o(" Das ist eine Überschrift "))]),_:1}),a(r,null,{default:n(()=>e[55]||(e[55]=[o(" Meldung ohne speziellen Subtype. ")])),_:1}),a(r,{subtype:"info"},{default:n(()=>e[56]||(e[56]=[o(" Infomeldung ")])),_:1}),a(r,{subtype:"warning"},{default:n(()=>e[57]||(e[57]=[o(" Warnmeldung ")])),_:1}),a(r,{subtype:"danger"},{default:n(()=>e[58]||(e[58]=[o(" Fehlermeldung ")])),_:1})]),_:1}),a(i,{title:"Listen"},{default:n(()=>[a($,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[22]||(e[22]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),a(V,{"form-name":"testingStoreForm",onSave:e[23]||(e[23]=l=>t.$emit("save")),onReset:e[24]||(e[24]=l=>t.$emit("reset")),onDefaults:e[25]||(e[25]=l=>t.$emit("defaults"))})])])}const M=E(z,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{M as default};
diff --git a/web/settings/assets/TimeChargeConfig-9d481afa.js b/web/settings/assets/TimeChargeConfig-af2bcfdc.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-9d481afa.js
rename to web/settings/assets/TimeChargeConfig-af2bcfdc.js
index f942e4c9b5..c19e8767bd 100644
--- a/web/settings/assets/TimeChargeConfig-9d481afa.js
+++ b/web/settings/assets/TimeChargeConfig-af2bcfdc.js
@@ -1 +1 @@
-import{C as l}from"./index-f9fda857.js";import{_ as b,u as o,k as i,l as a,x as _,D as s,N as r,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-c79666b6.js";import{_ as b,u as o,k as i,l as a,x as _,D as s,N as r,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-e8ea05c9.js b/web/settings/assets/VehicleConfig-9a14b719.js
similarity index 95%
rename from web/settings/assets/VehicleConfig-e8ea05c9.js
rename to web/settings/assets/VehicleConfig-9a14b719.js
index 73400ba7b0..6eb85e2fd5 100644
--- a/web/settings/assets/VehicleConfig-e8ea05c9.js
+++ b/web/settings/assets/VehicleConfig-9a14b719.js
@@ -1 +1 @@
-import{l as $,d as H,a0 as j,A as J,a9 as G,aa as Q,z as X,P as Y,ac as K,R as ee,ab as te,ad as ne,F as ae,I as le}from"./vendor-fortawesome-41164876.js";import{_ as k,C as ie}from"./index-f9fda857.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as q,u as V,k as d,l as g,A as p,N as l,y as i,z as C,D as a,x as h,a0 as re,a1 as de,J as P,B as m,K as E,a2 as F,q as x,P as N}from"./vendor-a21b3a62.js";const ue={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=q(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[se]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,b,B,f,s){const W=V("openwb-base-alert"),v=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(v,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=q(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",props:{vehicleId:{type:Number,required:!0},vehicle:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>k(()=>import("./vehicle-a8092426.js"),["assets/vehicle-a8092426.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-a9e07390.js"),["assets/vehicle-a9e07390.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-635e6620.js"),["assets/vehicle-635e6620.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-4df6c138.js"),["assets/vehicle-4df6c138.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-022511d4.js"),["assets/vehicle-022511d4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-317e6bfc.js"),["assets/vehicle-317e6bfc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-cb0122fd.js"),["assets/vehicle-cb0122fd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-ed5ef659.js"),["assets/vehicle-ed5ef659.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-693cb69a.js"),["assets/vehicle-693cb69a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-ad06c8a7.js"),["assets/vehicle-ad06c8a7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-95222308.js"),["assets/vehicle-95222308.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-35b782fb.js"),["assets/vehicle-35b782fb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-38d89acf.js"),["assets/vehicle-38d89acf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarteq/vehicle.vue":()=>k(()=>import("./vehicle-6dc5238d.js"),["assets/vehicle-6dc5238d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-81ee016b.js"),["assets/vehicle-81ee016b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-4afffc4b.js"),["assets/vehicle-4afffc4b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-axios-0e6de98a.js","assets/index-f9fda857.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-caa88593.js"),["assets/vehicle-caa88593.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-cc94e01f.js"),["assets/vehicle-cc94e01f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-f9fda857.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,b,B,f,s){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(de(s.myComponent),{"vehicle-id":b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":e[0]||(e[0]=v=>s.updateConfiguration(v))},null,40,["vehicle-id","vehicle"]))],64)}const fe=q(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ne);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;t.push({value:b,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;t.push({value:b,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&(console.info("request removal of vehicle '"+t+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}}))},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(b=>b.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&(console.info("request removal of ev template '"+t+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}}))},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&(console.info("request removal of charge template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}}))},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation(),console.info("requesting new charge template schedule plan...");let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+t+"' schedule plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}}))},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation(),console.info("requesting new charge template time charging plan...");let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+t+"' time charging plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}}))}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},ye={key:0},Ae={key:0},Ee={key:3},Be={key:0},Fe={key:1},qe={key:0},Me={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Ie={key:3},Re={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:5};function et(t,e,b,B,f,s){const W=V("openwb-base-modal-dialog"),v=V("font-awesome-icon"),T=V("openwb-base-avatar"),A=V("openwb-base-alert"),z=V("openwb-base-text-input"),M=V("openwb-base-select-input"),O=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),y=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>s.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>s.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>s.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[4]||(e[4]=o=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zeitladen Zeitplan "'+C(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",we,[h("form",ke,[a(y,{subtype:"info",collapsible:!0,collapsed:t.$route.params.section!="vehicle"},{header:l(()=>[a(v,{"fixed-width":"",icon:["fas","car"]}),e[8]||(e[8]=i(" Fahrzeuge "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Ve,[a(A,{subtype:"info"},{default:l(()=>e[9]||(e[9]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Ce,[(d(!0),g(P,null,E(s.vehicleIndexes,o=>(d(),p(y,{key:o,title:s.getVehicleName(o),collapsible:!0,collapsed:!(t.$route.params.section=="vehicle"&&parseInt(t.$route.params.section_index)==o),subtype:"info"},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/name"],disabled:o===0,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/name",r)},F({_:2},[o===0?{name:"help",fn:l(()=>[e[10]||(e[10]=i(" Das Standard-Fahrzeug kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),o!==0?(d(),p(z,{key:0,title:"Fahrzeughersteller ","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].manufacturer,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"manufacturer")},{help:l(()=>[...e[11]||(e[11]=[i(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),o!==0?(d(),p(z,{key:1,title:"Fahrzeugmodell","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].model,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"model")},{help:l(()=>[...e[12]||(e[12]=[i(" Optional: zusätzliche Information für den Systembericht."),h("br",null,null,-1),i(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(A,{subtype:"info"},{default:l(()=>[...e[13]||(e[13]=[i(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])]),_:1}),a(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/ev_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/ev_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),a(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/charge_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/charge_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),e[24]||(e[24]=h("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!b.installAssistantActive?(d(),g("div",Se,[a(O,{title:"Zugeordnete ID-Tags","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/tag_id"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/tag_id",r)},null,8,["model-value","onUpdate:modelValue"]),a(A,{subtype:"info"},{default:l(()=>[e[14]||(e[14]=i(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung.")),e[15]||(e[15]=h("br",null,null,-1)),h("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,ze)]),_:1}),e[16]||(e[16]=h("hr",null,null,-1))])):m("",!0),a(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type,"onUpdate:modelValue":r=>s.updateSelectedSocModule(o,r)},{help:l(()=>[...e[17]||(e[17]=[i(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),h("br",null,null,-1),i(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),h("br",null,null,-1),i(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),h("br",null,null,-1),i(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type?(d(),g("div",Ue,[a(_,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"use_soc_from_cp")},{help:l(()=>[...e[18]||(e[18]=[i(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{help:l(()=>[...e[19]||(e[19]=[i(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")])]),default:l(()=>[e[20]||(e[20]=i(" Aktualisierung der Fahrzeugdaten "))]),_:1}),a(w,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_charging")},{help:l(()=>[...e[21]||(e[21]=[i(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_not_charging")},{help:l(()=>[...e[22]||(e[22]=[i(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"request_only_plugged")},{help:l(()=>[...e[23]||(e[23]=[i(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(I,{"vehicle-id":o,vehicle:t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"],"onUpdate:configuration":r=>s.updateConfiguration("openWB/vehicle/"+o+"/soc_module/config",r)},null,8,["vehicle-id","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[o!==0?{name:"actions",fn:l(r=>[r.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:n=>s.removeVehicleModal(o,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),e[81]||(e[81]=h("hr",{class:"border-secondary"},null,-1)),a(L,null,{default:l(()=>e[25]||(e[25]=[i("Profile")])),_:1}),a(y,{collapsible:!0,collapsed:!0},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),e[26]||(e[26]=i(" Fahrzeug-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Te,[a(A,{subtype:"info"},{default:l(()=>e[27]||(e[27]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",We,[a(A,{subtype:"info"},{default:l(()=>e[28]||(e[28]=[i(" Ein anderes Fahrzeug-Profil wird erst "),h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1),i(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])),_:1}),(d(!0),g(P,null,E(s.evTemplates,(o,r)=>(d(),p(y,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!0},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[29]||(e[29]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[30]||(e[30]=[i(" Angaben zur Batterie ")])]),_:1}),a(w,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":o.battery_capacity/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"battery_capacity")},{help:l(()=>[...e[31]||(e[31]=[i(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Le,[a(w,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":o.efficiency,"onUpdate:modelValue":n=>t.updateState(r,n,"efficiency")},{help:l(()=>[...e[32]||(e[32]=[i(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),h("br",null,null,-1),i(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),h("br",null,null,-1),i(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),h("br",null,null,-1),i(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),h("br",null,null,-1)])]),_:2},1032,["model-value","onUpdate:modelValue"])])),a(w,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":o.average_consump/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),g("div",Pe,[a(L,null,{default:l(()=>[...e[33]||(e[33]=[i(" Angaben zur Ladeleistung (DC) ")])]),_:1}),a(w,{title:"Mindestleistung",min:5,unit:"kW","model-value":t.ac_current2dc_power(o.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Maximalleistung",unit:"kW","model-value":t.ac_current2dc_power(o.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),a(L,null,{default:l(()=>[e[34]||(e[34]=i(" Angaben zum Ladestrom ")),s.dcChargingEnabled===!0?(d(),g("span",ye," (AC) ")):m("",!0)]),_:1}),a(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":o.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":o.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":o.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":o.nominal_difference,"onUpdate:modelValue":n=>t.updateState(r,n,"nominal_difference")},{help:l(()=>[...e[35]||(e[35]=[i(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:l(()=>[e[36]||(e[36]=i(" Angaben zur Handhabung von Phasen ")),s.dcChargingEnabled===!0?(d(),g("span",Ae," (AC) ")):m("",!0)]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":o.max_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_phases")},{help:l(()=>[...e[37]||(e[37]=[i(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.control_pilot_interruption,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption")},{help:l(()=>[...e[38]||(e[38]=[i(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o.control_pilot_interruption?(d(),p(w,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":o.control_pilot_interruption_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_phase_switch,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_phase_switch")},{help:l(()=>[...e[39]||(e[39]=[i(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_charge_stop,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_charge_stop")},{help:l(()=>[...e[40]||(e[40]=[i(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":o.phase_switch_pause,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Ee,[a(w,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":o.keep_charge_active_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"keep_charge_active_duration")},{help:l(()=>[...e[41]||(e[41]=[i(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[t.$store.state.mqtt["openWB/general/extern"]===!1&&!n.collapsed?(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeEvTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(y,{collapsible:!0,collapsed:t.$route.params.section!="charge_template"},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),e[42]||(e[42]=i(" Lade-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Be,[a(A,{subtype:"info"},{default:l(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Fe,[(d(!0),g(P,null,E(s.chargeTemplates,(o,r)=>(d(),p(y,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!(t.$route.params.section=="charge_template"&&parseInt(t.$route.params.section_index)==s.getChargeTemplateIndex(r))},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[44]||(e[44]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[45]||(e[45]=[i(" Allgemeine Optionen ")])]),_:1}),a(_,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":o.chargemode.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.selected")},{help:l(()=>[...e[46]||(e[46]=[i(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),h("br",null,null,-1),i(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),h("br",null,null,-1),h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",qe,[a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.prio,"onUpdate:modelValue":n=>t.updateState(r,n,"prio")},{help:l(()=>[...e[47]||(e[47]=[i(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.time_charging.active,"onUpdate:modelValue":n=>t.updateState(r,n,"time_charging.active")},{help:l(()=>[...e[48]||(e[48]=[i(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.load_default,"onUpdate:modelValue":n=>t.updateState(r,n,"load_default")},{help:l(()=>[...e[49]||(e[49]=[i(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.et.active,"onUpdate:modelValue":n=>t.updateState(r,n,"et.active")},null,8,["model-value","onUpdate:modelValue"]),o.et.active==!0?(d(),g("div",Me,[!t.$store.state.mqtt["openWB/optional/et/provider"]||!t.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),g("div",De,[a(A,{subtype:"danger"},{default:l(()=>[...e[50]||(e[50]=[i(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")])]),_:1})])):m("",!0),a(w,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":o.et.max_price*1e5,"onUpdate:modelValue":n=>t.updateState(r,parseFloat((n/1e5).toFixed(7)),"et.max_price")},{help:l(()=>[...e[51]||(e[51]=[i(" Für Zielladen werden die günstigsten Stunden ermittelt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),e[52]||(e[52]=h("hr",null,null,-1))])),a(L,null,{default:l(()=>[...e[53]||(e[53]=[i("Sofortladen")])]),_:1}),a(S,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.instant_charging.current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.instant_charging.dc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":o.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.selected")},{help:l(()=>[...e[54]||(e[54]=[i(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":o.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.soc")},{help:l(()=>[...e[55]||(e[55]=[i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":o.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"chargemode.instant_charging.limit.amount")},{help:l(()=>[...e[56]||(e[56]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[79]||(e[79]=h("hr",null,null,-1)),a(L,null,{default:l(()=>[...e[57]||(e[57]=[i("PV-Laden")])]),_:1}),a(S,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":o.chargemode.pv_charging.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_current")},{help:l(()=>[...e[58]||(e[58]=[i(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_current")},{help:l(()=>[...e[59]||(e[59]=[i(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":o.chargemode.pv_charging.max_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.max_soc")},{help:l(()=>[...e[60]||(e[60]=[i(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":o.chargemode.pv_charging.min_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc")},{help:l(()=>[...e[61]||(e[61]=[i(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc_current")},{help:l(()=>[...e[62]||(e[62]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_soc_current")},{help:l(()=>[...e[63]||(e[63]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.feed_in_limit")},{help:l(()=>[...e[64]||(e[64]=[i(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[80]||(e[80]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateSchedulePlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[65]||(e[65]=[i(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),h("br",null,null,-1),i(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),h("br",null,null,-1),i(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")])]),default:l(()=>[e[66]||(e[66]=i(" Zielladen "))]),_:2},1024),(d(!0),g(P,null,E(s.getChargeTemplateScheduledChargingPlans(r),(n,c)=>(d(),p(y,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",xe,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc_scheduled)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ne,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time)+" ",1),n.frequency.selected=="once"?(d(),g("span",Oe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once)),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Ie,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Re,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,Ze)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateSchedulePlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Ziel-Uhrzeit",subtype:"time","model-value":n.time,"onUpdate:modelValue":u=>t.updateState(c,u,"time")},{help:l(()=>[...e[67]||(e[67]=[i(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},{help:l(()=>[...e[68]||(e[68]=[i(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[69]||(e[69]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_scheduled,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_scheduled")},{help:l(()=>[...e[70]||(e[70]=[i(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="soc"?(d(),p(S,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_limit,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_limit")},{help:l(()=>[...e[71]||(e[71]=[i(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[72]||(e[72]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Datum",subtype:"date","model-value":n.frequency.once,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",$e,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),b.installAssistantActive?m("",!0):(d(),g("div",He,[e[75]||(e[75]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateTimeChargingPlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[73]||(e[73]=[i(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")])]),default:l(()=>[e[74]||(e[74]=i(" Laden nach Zeitplan "))]),_:2},1024)])),(d(!0),g(P,null,E(s.getChargeTemplateTimeChargingPlans(r),(n,c)=>(d(),p(y,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",Je,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ge,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time[0])+" - "+C(n.time[1])+" ",1),n.frequency.selected=="once"?(d(),g("span",Qe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Xe,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ye,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,je)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateTimeChargingPlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[76]||(e[76]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc")},{help:l(()=>[...e[77]||(e[77]=[i(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[78]||(e[78]=[i(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(z,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":u=>t.updateState(c,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":u=>t.updateState(c,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:3,title:"Gültig ab",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Gültig bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",Ke,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[n.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeChargeTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{"form-name":"vehicleConfigForm",onSave:e[5]||(e[5]=o=>t.$emit("save")),onReset:e[6]||(e[6]=o=>t.$emit("reset")),onDefaults:e[7]||(e[7]=o=>t.$emit("defaults"))})])])],64)}const tt=q(_e,[["render",et],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),ot=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{se as V,tt as a,ot as b};
+import{l as $,d as H,a0 as j,A as J,a9 as G,aa as Q,z as X,P as Y,ac as K,R as ee,ab as te,ad as ne,F as ae,I as le}from"./vendor-fortawesome-41164876.js";import{_ as k,C as ie}from"./index-c79666b6.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as q,u as V,k as d,l as g,A as p,N as l,y as i,z as C,D as a,x as h,a0 as re,a1 as de,J as P,B as m,K as E,a2 as F,q as x,P as N}from"./vendor-a21b3a62.js";const ue={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=q(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[se]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,b,B,f,s){const W=V("openwb-base-alert"),v=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(v,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=q(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",props:{vehicleId:{type:Number,required:!0},vehicle:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>k(()=>import("./vehicle-227d6e52.js"),["assets/vehicle-227d6e52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-e9771037.js"),["assets/vehicle-e9771037.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-2c8076de.js"),["assets/vehicle-2c8076de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-6bfa0331.js"),["assets/vehicle-6bfa0331.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-79035ef3.js"),["assets/vehicle-79035ef3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-98331362.js"),["assets/vehicle-98331362.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-b5d373a2.js"),["assets/vehicle-b5d373a2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-2f0703d4.js"),["assets/vehicle-2f0703d4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-84631beb.js"),["assets/vehicle-84631beb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-746a309e.js"),["assets/vehicle-746a309e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-5d3ddd96.js"),["assets/vehicle-5d3ddd96.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-02c16ede.js"),["assets/vehicle-02c16ede.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-a7bdb9f9.js"),["assets/vehicle-a7bdb9f9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarteq/vehicle.vue":()=>k(()=>import("./vehicle-39d84738.js"),["assets/vehicle-39d84738.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-75a99dd5.js"),["assets/vehicle-75a99dd5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-5310b356.js"),["assets/vehicle-5310b356.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-axios-0e6de98a.js","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-04196ba5.js"),["assets/vehicle-04196ba5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-66d2565b.js"),["assets/vehicle-66d2565b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,b,B,f,s){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(de(s.myComponent),{"vehicle-id":b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":e[0]||(e[0]=v=>s.updateConfiguration(v))},null,40,["vehicle-id","vehicle"]))],64)}const fe=q(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ne);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;t.push({value:b,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;t.push({value:b,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&(console.info("request removal of vehicle '"+t+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}}))},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(b=>b.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&(console.info("request removal of ev template '"+t+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}}))},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&(console.info("request removal of charge template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}}))},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation(),console.info("requesting new charge template schedule plan...");let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+t+"' schedule plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}}))},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation(),console.info("requesting new charge template time charging plan...");let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+t+"' time charging plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}}))}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},ye={key:0},Ae={key:0},Ee={key:3},Be={key:0},Fe={key:1},qe={key:0},Me={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Ie={key:3},Re={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:5};function et(t,e,b,B,f,s){const W=V("openwb-base-modal-dialog"),v=V("font-awesome-icon"),T=V("openwb-base-avatar"),A=V("openwb-base-alert"),z=V("openwb-base-text-input"),M=V("openwb-base-select-input"),O=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),y=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>s.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>s.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>s.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[4]||(e[4]=o=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zeitladen Zeitplan "'+C(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",we,[h("form",ke,[a(y,{subtype:"info",collapsible:!0,collapsed:t.$route.params.section!="vehicle"},{header:l(()=>[a(v,{"fixed-width":"",icon:["fas","car"]}),e[8]||(e[8]=i(" Fahrzeuge "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Ve,[a(A,{subtype:"info"},{default:l(()=>e[9]||(e[9]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Ce,[(d(!0),g(P,null,E(s.vehicleIndexes,o=>(d(),p(y,{key:o,title:s.getVehicleName(o),collapsible:!0,collapsed:!(t.$route.params.section=="vehicle"&&parseInt(t.$route.params.section_index)==o),subtype:"info"},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/name"],disabled:o===0,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/name",r)},F({_:2},[o===0?{name:"help",fn:l(()=>[e[10]||(e[10]=i(" Das Standard-Fahrzeug kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),o!==0?(d(),p(z,{key:0,title:"Fahrzeughersteller ","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].manufacturer,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"manufacturer")},{help:l(()=>[...e[11]||(e[11]=[i(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),o!==0?(d(),p(z,{key:1,title:"Fahrzeugmodell","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].model,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"model")},{help:l(()=>[...e[12]||(e[12]=[i(" Optional: zusätzliche Information für den Systembericht."),h("br",null,null,-1),i(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(A,{subtype:"info"},{default:l(()=>[...e[13]||(e[13]=[i(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])]),_:1}),a(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/ev_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/ev_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),a(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/charge_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/charge_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),e[24]||(e[24]=h("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!b.installAssistantActive?(d(),g("div",Se,[a(O,{title:"Zugeordnete ID-Tags","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/tag_id"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/tag_id",r)},null,8,["model-value","onUpdate:modelValue"]),a(A,{subtype:"info"},{default:l(()=>[e[14]||(e[14]=i(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung.")),e[15]||(e[15]=h("br",null,null,-1)),h("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,ze)]),_:1}),e[16]||(e[16]=h("hr",null,null,-1))])):m("",!0),a(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type,"onUpdate:modelValue":r=>s.updateSelectedSocModule(o,r)},{help:l(()=>[...e[17]||(e[17]=[i(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),h("br",null,null,-1),i(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),h("br",null,null,-1),i(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),h("br",null,null,-1),i(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type?(d(),g("div",Ue,[a(_,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"use_soc_from_cp")},{help:l(()=>[...e[18]||(e[18]=[i(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{help:l(()=>[...e[19]||(e[19]=[i(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")])]),default:l(()=>[e[20]||(e[20]=i(" Aktualisierung der Fahrzeugdaten "))]),_:1}),a(w,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_charging")},{help:l(()=>[...e[21]||(e[21]=[i(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_not_charging")},{help:l(()=>[...e[22]||(e[22]=[i(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"request_only_plugged")},{help:l(()=>[...e[23]||(e[23]=[i(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(I,{"vehicle-id":o,vehicle:t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"],"onUpdate:configuration":r=>s.updateConfiguration("openWB/vehicle/"+o+"/soc_module/config",r)},null,8,["vehicle-id","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[o!==0?{name:"actions",fn:l(r=>[r.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:n=>s.removeVehicleModal(o,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),e[81]||(e[81]=h("hr",{class:"border-secondary"},null,-1)),a(L,null,{default:l(()=>e[25]||(e[25]=[i("Profile")])),_:1}),a(y,{collapsible:!0,collapsed:!0},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),e[26]||(e[26]=i(" Fahrzeug-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Te,[a(A,{subtype:"info"},{default:l(()=>e[27]||(e[27]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",We,[a(A,{subtype:"info"},{default:l(()=>e[28]||(e[28]=[i(" Ein anderes Fahrzeug-Profil wird erst "),h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1),i(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])),_:1}),(d(!0),g(P,null,E(s.evTemplates,(o,r)=>(d(),p(y,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!0},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[29]||(e[29]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[30]||(e[30]=[i(" Angaben zur Batterie ")])]),_:1}),a(w,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":o.battery_capacity/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"battery_capacity")},{help:l(()=>[...e[31]||(e[31]=[i(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Le,[a(w,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":o.efficiency,"onUpdate:modelValue":n=>t.updateState(r,n,"efficiency")},{help:l(()=>[...e[32]||(e[32]=[i(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),h("br",null,null,-1),i(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),h("br",null,null,-1),i(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),h("br",null,null,-1),i(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),h("br",null,null,-1)])]),_:2},1032,["model-value","onUpdate:modelValue"])])),a(w,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":o.average_consump/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),g("div",Pe,[a(L,null,{default:l(()=>[...e[33]||(e[33]=[i(" Angaben zur Ladeleistung (DC) ")])]),_:1}),a(w,{title:"Mindestleistung",min:5,unit:"kW","model-value":t.ac_current2dc_power(o.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Maximalleistung",unit:"kW","model-value":t.ac_current2dc_power(o.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),a(L,null,{default:l(()=>[e[34]||(e[34]=i(" Angaben zum Ladestrom ")),s.dcChargingEnabled===!0?(d(),g("span",ye," (AC) ")):m("",!0)]),_:1}),a(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":o.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":o.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":o.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":o.nominal_difference,"onUpdate:modelValue":n=>t.updateState(r,n,"nominal_difference")},{help:l(()=>[...e[35]||(e[35]=[i(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:l(()=>[e[36]||(e[36]=i(" Angaben zur Handhabung von Phasen ")),s.dcChargingEnabled===!0?(d(),g("span",Ae," (AC) ")):m("",!0)]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":o.max_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_phases")},{help:l(()=>[...e[37]||(e[37]=[i(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.control_pilot_interruption,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption")},{help:l(()=>[...e[38]||(e[38]=[i(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o.control_pilot_interruption?(d(),p(w,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":o.control_pilot_interruption_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_phase_switch,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_phase_switch")},{help:l(()=>[...e[39]||(e[39]=[i(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_charge_stop,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_charge_stop")},{help:l(()=>[...e[40]||(e[40]=[i(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":o.phase_switch_pause,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Ee,[a(w,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":o.keep_charge_active_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"keep_charge_active_duration")},{help:l(()=>[...e[41]||(e[41]=[i(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[t.$store.state.mqtt["openWB/general/extern"]===!1&&!n.collapsed?(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeEvTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(y,{collapsible:!0,collapsed:t.$route.params.section!="charge_template"},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),e[42]||(e[42]=i(" Lade-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Be,[a(A,{subtype:"info"},{default:l(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Fe,[(d(!0),g(P,null,E(s.chargeTemplates,(o,r)=>(d(),p(y,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!(t.$route.params.section=="charge_template"&&parseInt(t.$route.params.section_index)==s.getChargeTemplateIndex(r))},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[44]||(e[44]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[45]||(e[45]=[i(" Allgemeine Optionen ")])]),_:1}),a(_,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":o.chargemode.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.selected")},{help:l(()=>[...e[46]||(e[46]=[i(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),h("br",null,null,-1),i(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),h("br",null,null,-1),h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",qe,[a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.prio,"onUpdate:modelValue":n=>t.updateState(r,n,"prio")},{help:l(()=>[...e[47]||(e[47]=[i(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.time_charging.active,"onUpdate:modelValue":n=>t.updateState(r,n,"time_charging.active")},{help:l(()=>[...e[48]||(e[48]=[i(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.load_default,"onUpdate:modelValue":n=>t.updateState(r,n,"load_default")},{help:l(()=>[...e[49]||(e[49]=[i(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.et.active,"onUpdate:modelValue":n=>t.updateState(r,n,"et.active")},null,8,["model-value","onUpdate:modelValue"]),o.et.active==!0?(d(),g("div",Me,[!t.$store.state.mqtt["openWB/optional/et/provider"]||!t.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),g("div",De,[a(A,{subtype:"danger"},{default:l(()=>[...e[50]||(e[50]=[i(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")])]),_:1})])):m("",!0),a(w,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":o.et.max_price*1e5,"onUpdate:modelValue":n=>t.updateState(r,parseFloat((n/1e5).toFixed(7)),"et.max_price")},{help:l(()=>[...e[51]||(e[51]=[i(" Für Zielladen werden die günstigsten Stunden ermittelt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),e[52]||(e[52]=h("hr",null,null,-1))])),a(L,null,{default:l(()=>[...e[53]||(e[53]=[i("Sofortladen")])]),_:1}),a(S,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.instant_charging.current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.instant_charging.dc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":o.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.selected")},{help:l(()=>[...e[54]||(e[54]=[i(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":o.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.soc")},{help:l(()=>[...e[55]||(e[55]=[i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":o.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"chargemode.instant_charging.limit.amount")},{help:l(()=>[...e[56]||(e[56]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[79]||(e[79]=h("hr",null,null,-1)),a(L,null,{default:l(()=>[...e[57]||(e[57]=[i("PV-Laden")])]),_:1}),a(S,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":o.chargemode.pv_charging.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_current")},{help:l(()=>[...e[58]||(e[58]=[i(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_current")},{help:l(()=>[...e[59]||(e[59]=[i(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":o.chargemode.pv_charging.max_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.max_soc")},{help:l(()=>[...e[60]||(e[60]=[i(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":o.chargemode.pv_charging.min_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc")},{help:l(()=>[...e[61]||(e[61]=[i(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc_current")},{help:l(()=>[...e[62]||(e[62]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_soc_current")},{help:l(()=>[...e[63]||(e[63]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.feed_in_limit")},{help:l(()=>[...e[64]||(e[64]=[i(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[80]||(e[80]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateSchedulePlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[65]||(e[65]=[i(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),h("br",null,null,-1),i(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),h("br",null,null,-1),i(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")])]),default:l(()=>[e[66]||(e[66]=i(" Zielladen "))]),_:2},1024),(d(!0),g(P,null,E(s.getChargeTemplateScheduledChargingPlans(r),(n,c)=>(d(),p(y,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",xe,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc_scheduled)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ne,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time)+" ",1),n.frequency.selected=="once"?(d(),g("span",Oe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once)),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Ie,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Re,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,Ze)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateSchedulePlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Ziel-Uhrzeit",subtype:"time","model-value":n.time,"onUpdate:modelValue":u=>t.updateState(c,u,"time")},{help:l(()=>[...e[67]||(e[67]=[i(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},{help:l(()=>[...e[68]||(e[68]=[i(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[69]||(e[69]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_scheduled,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_scheduled")},{help:l(()=>[...e[70]||(e[70]=[i(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="soc"?(d(),p(S,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_limit,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_limit")},{help:l(()=>[...e[71]||(e[71]=[i(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[72]||(e[72]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Datum",subtype:"date","model-value":n.frequency.once,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",$e,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),b.installAssistantActive?m("",!0):(d(),g("div",He,[e[75]||(e[75]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateTimeChargingPlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[73]||(e[73]=[i(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")])]),default:l(()=>[e[74]||(e[74]=i(" Laden nach Zeitplan "))]),_:2},1024)])),(d(!0),g(P,null,E(s.getChargeTemplateTimeChargingPlans(r),(n,c)=>(d(),p(y,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",Je,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ge,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time[0])+" - "+C(n.time[1])+" ",1),n.frequency.selected=="once"?(d(),g("span",Qe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Xe,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ye,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,je)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateTimeChargingPlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[76]||(e[76]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc")},{help:l(()=>[...e[77]||(e[77]=[i(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[78]||(e[78]=[i(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(z,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":u=>t.updateState(c,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":u=>t.updateState(c,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:3,title:"Gültig ab",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Gültig bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",Ke,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[n.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeChargeTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{"form-name":"vehicleConfigForm",onSave:e[5]||(e[5]=o=>t.$emit("save")),onReset:e[6]||(e[6]=o=>t.$emit("reset")),onDefaults:e[7]||(e[7]=o=>t.$emit("defaults"))})])])],64)}const tt=q(_e,[["render",et],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),ot=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{se as V,tt as a,ot as b};
diff --git a/web/settings/assets/backup_cloud-b3e9e685.js b/web/settings/assets/backup_cloud-04652ce0.js
similarity index 92%
rename from web/settings/assets/backup_cloud-b3e9e685.js
rename to web/settings/assets/backup_cloud-04652ce0.js
index 5149ab606b..8c5e07e4df 100644
--- a/web/settings/assets/backup_cloud-b3e9e685.js
+++ b/web/settings/assets/backup_cloud-04652ce0.js
@@ -1 +1 @@
-import{B as s}from"./DataManagement-b9730b64.js";import{_ as a,u as r,k as i,l,D as u,N as d,y as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[s]},c={class:"backup-cloud-next-cloud"};function f(o,e,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":o.backupCloud.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>e[3]||(e[3]=[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")])),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":o.backupCloud.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":o.backupCloud.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{$ as default};
+import{B as s}from"./DataManagement-1fb1197d.js";import{_ as a,u as r,k as i,l,D as u,N as d,y as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"BackupCloudNextCloud",mixins:[s]},c={class:"backup-cloud-next-cloud"};function f(o,e,b,k,C,g){const n=r("openwb-base-text-input");return i(),l("div",c,[u(n,{title:"Cloud-URL",subtype:"host",required:"","model-value":o.backupCloud.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},{help:d(()=>e[3]||(e[3]=[p(" Die Cloud-URL wird in der Form 'https://nextcloud-url' und Benutzername im Eingabefeld oder mit Zugangstoken erwartet. Die URL kann je nach NextCloud Installation so 'https://nextcloud-url/s/user_token' oder so 'https://nextcloud-url/index.php/s/user_token' aussehen. ")])),_:1},8,["model-value"]),u(n,{title:"Benutzername",subtype:"user","model-value":o.backupCloud.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),u(n,{title:"Passwort",subtype:"password","model-value":o.backupCloud.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nextcloud/backup_cloud.vue"]]);export{$ as default};
diff --git a/web/settings/assets/backup_cloud-5feeb3e2.js b/web/settings/assets/backup_cloud-6fe765b0.js
similarity index 96%
rename from web/settings/assets/backup_cloud-5feeb3e2.js
rename to web/settings/assets/backup_cloud-6fe765b0.js
index 0521aa2d14..e08ac314a3 100644
--- a/web/settings/assets/backup_cloud-5feeb3e2.js
+++ b/web/settings/assets/backup_cloud-6fe765b0.js
@@ -1 +1 @@
-import{B as c}from"./DataManagement-b9730b64.js";import{_ as m,u as a,k as b,l as f,D as t,N as r,y as n,x as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},v={class:"backup-cloud-one-drive"};function k(o,e,h,w,B,C){const d=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),l=a("openwb-base-button-input");return b(),f("div",v,[t(d,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[n(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),i("br",null,null,-1),n(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")])),_:1}),t(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":o.backupCloud.configuration.backuppath,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>e[4]||(e[4]=[n(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),i("br",null,null,-1),n(" Beispiel: /openWB/Backup/ ")])),_:1},8,["model-value"]),t(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":o.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(p,null,{default:r(()=>e[5]||(e[5]=[n(" Zugang zu OneDrive für diese openWB autorisieren ")])),_:1}),t(l,{title:"1. Anmeldeanforderung erstellen","button-text":"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:e[1]||(e[1]=s=>o.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>e[6]||(e[6]=[n(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),i("br",null,null,-1),n(" Weitere Infos:"),i("br",null,null,-1),i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1)])),_:1}),t(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":o.backupCloud.configuration.authcode},null,8,["model-value"]),t(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":o.backupCloud.configuration.authurl},{help:r(()=>e[7]||(e[7]=[n(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")])),_:1},8,["model-value"]),t(l,{title:"4. Token abrufen und speichern","button-text":"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:e[2]||(e[2]=s=>o.sendSystemCommand("retrieveMSALTokens",{}))},{help:r(()=>e[8]||(e[8]=[n(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")])),_:1})])}const L=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{L as default};
+import{B as c}from"./DataManagement-1fb1197d.js";import{_ as m,u as a,k as b,l as f,D as t,N as r,y as n,x as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"BackupCloudOneDrive",mixins:[c]},v={class:"backup-cloud-one-drive"};function k(o,e,h,w,B,C){const d=a("openwb-base-alert"),u=a("openwb-base-text-input"),p=a("openwb-base-heading"),l=a("openwb-base-button-input");return b(),f("div",v,[t(d,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[n(" Zum Abruf der Zugangsberechtigung bitte die Konfiguration speichern, dann die Schritte 1-4 durchführen und danach die Konfiguration erneut speichern. "),i("br",null,null,-1),n(" Auth Code und URL werden nur einmal benötigt werden nach erfolgreicher Autorisierung wieder gelöscht. ")])),_:1}),t(u,{title:"Backupverzeichnis in OneDrive",subtype:"text",required:"",pattern:"^/(.*/)*","model-value":o.backupCloud.configuration.backuppath,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.backuppath"))},{help:r(()=>e[4]||(e[4]=[n(" In diesem Verzeichnis werden die Backupdateien erstellt. Bitte den Pfad mit / beenden. "),i("br",null,null,-1),n(" Beispiel: /openWB/Backup/ ")])),_:1},8,["model-value"]),t(u,{title:"Anmeldedaten auf openWB gespeichert",readonly:"","model-value":o.backupCloud.configuration.persistent_tokencache?"Ja":"Nein"},null,8,["model-value"]),t(p,null,{default:r(()=>e[5]||(e[5]=[n(" Zugang zu OneDrive für diese openWB autorisieren ")])),_:1}),t(l,{title:"1. Anmeldeanforderung erstellen","button-text":"Autorisierungs-Code anfordern",subtype:"success",onButtonClicked:e[1]||(e[1]=s=>o.sendSystemCommand("requestMSALAuthCode",{}))},{help:r(()=>e[6]||(e[6]=[n(" Es werden Zugangstokens für OneDrive angefordert. Diese werden nur lokal auf dieser openWB gespeichert. Genutzt wird Device Flow mit public application."),i("br",null,null,-1),n(" Weitere Infos:"),i("br",null,null,-1),i("a",{href:"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",target:"_blank",rel:"noopener noreferrer"},"https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code",-1),i("a",{href:"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",target:"_blank",rel:"noopener noreferrer"},"https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-client-applications",-1)])),_:1}),t(u,{title:"2. Diesen Code kopieren",subtype:"text",readonly:"","model-value":o.backupCloud.configuration.authcode},null,8,["model-value"]),t(u,{title:"3. Anmelde-URL aufrufen",subtype:"url",readonly:"","model-value":o.backupCloud.configuration.authurl},{help:r(()=>e[7]||(e[7]=[n(" Diese URL im Browser öffnen und den Code eingeben. Dies erzeugt die notwendigen Zugangsberechtigung für diese openWB. ")])),_:1},8,["model-value"]),t(l,{title:"4. Token abrufen und speichern","button-text":"Autorisierungs-Token abrufen",subtype:"success",onButtonClicked:e[2]||(e[2]=s=>o.sendSystemCommand("retrieveMSALTokens",{}))},{help:r(()=>e[8]||(e[8]=[n(" Zugangstoken wird abgerufen und gespeichert, damit das Backup durchgeführt werden kann. Zugangstoken werden nur lokal auf dieser openWB gespeichert. ")])),_:1})])}const L=m(g,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/onedrive/backup_cloud.vue"]]);export{L as default};
diff --git a/web/settings/assets/backup_cloud-fd1d0158.js b/web/settings/assets/backup_cloud-9329a99f.js
similarity index 86%
rename from web/settings/assets/backup_cloud-fd1d0158.js
rename to web/settings/assets/backup_cloud-9329a99f.js
index 855a1af316..47cde87499 100644
--- a/web/settings/assets/backup_cloud-fd1d0158.js
+++ b/web/settings/assets/backup_cloud-9329a99f.js
@@ -1 +1 @@
-import{B as a}from"./DataManagement-b9730b64.js";import{_ as p,u as s,k as r,l as u,D as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"BackupCloudNfs",mixins:[a]},l={class:"backup-cloud-nfs"};function d(o,e,m,_,f,b){const t=s("openwb-base-text-input");return r(),u("div",l,[i(t,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":o.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.nfs_share"))},null,8,["model-value"])])}const N=p(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{N as default};
+import{B as a}from"./DataManagement-1fb1197d.js";import{_ as p,u as s,k as r,l as u,D as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"BackupCloudNfs",mixins:[a]},l={class:"backup-cloud-nfs"};function d(o,e,m,_,f,b){const t=s("openwb-base-text-input");return r(),u("div",l,[i(t,{title:"Pfad zum NFS Share",pattern:"^([^/: ]+):(\\/[^/: ]+)+$",required:"","model-value":o.backupCloud.configuration.nfs_share,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.nfs_share"))},null,8,["model-value"])])}const N=p(c,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/nfs/backup_cloud.vue"]]);export{N as default};
diff --git a/web/settings/assets/backup_cloud-13d4bee8.js b/web/settings/assets/backup_cloud-a666a458.js
similarity index 93%
rename from web/settings/assets/backup_cloud-13d4bee8.js
rename to web/settings/assets/backup_cloud-a666a458.js
index 288a29f2b6..b63f78481f 100644
--- a/web/settings/assets/backup_cloud-13d4bee8.js
+++ b/web/settings/assets/backup_cloud-a666a458.js
@@ -1 +1 @@
-import{B as r}from"./DataManagement-b9730b64.js";import{_ as i,u as s,k as p,l as d,D as t,N as m,y as a,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[r]},f={class:"backup-cloud-samba"};function g(o,e,v,C,k,c){const u=s("openwb-base-text-input");return p(),d("div",f,[t(u,{title:"Server",subtype:"host",required:"","model-value":o.backupCloud.configuration.smb_server,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),t(u,{title:"Freigabe",required:"","model-value":o.backupCloud.configuration.smb_share,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),t(u,{title:"Unterordner (optional)","model-value":o.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>e[5]||(e[5]=[a(" Jeder Unterordner muss mit / enden."),l("br",null,null,-1),a(' Die Zeichen \\:"|*?<> sind verboten!'),l("br",null,null,-1),a(" Beispiel 1: openwb/ "),l("br",null,null,-1),a(" Beispiel 2: openwb/lp2/ ")])),_:1},8,["model-value"]),t(u,{title:"Benutzer",subtype:"user","model-value":o.backupCloud.configuration.smb_user,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),t(u,{title:"Kennwort",subtype:"password","model-value":o.backupCloud.configuration.smb_password,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const D=i(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{D as default};
+import{B as r}from"./DataManagement-1fb1197d.js";import{_ as i,u as s,k as p,l as d,D as t,N as m,y as a,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"BackupCloudSamba",mixins:[r]},f={class:"backup-cloud-samba"};function g(o,e,v,C,k,c){const u=s("openwb-base-text-input");return p(),d("div",f,[t(u,{title:"Server",subtype:"host",required:"","model-value":o.backupCloud.configuration.smb_server,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.smb_server"))},null,8,["model-value"]),t(u,{title:"Freigabe",required:"","model-value":o.backupCloud.configuration.smb_share,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.smb_share"))},null,8,["model-value"]),t(u,{title:"Unterordner (optional)","model-value":o.backupCloud.configuration.smb_path,pattern:'(^\\/$)|(^([^\\\\:"\\|*?<>]+\\/)+$)',required:"","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.smb_path"))},{help:m(()=>e[5]||(e[5]=[a(" Jeder Unterordner muss mit / enden."),l("br",null,null,-1),a(' Die Zeichen \\:"|*?<> sind verboten!'),l("br",null,null,-1),a(" Beispiel 1: openwb/ "),l("br",null,null,-1),a(" Beispiel 2: openwb/lp2/ ")])),_:1},8,["model-value"]),t(u,{title:"Benutzer",subtype:"user","model-value":o.backupCloud.configuration.smb_user,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.smb_user"))},null,8,["model-value"]),t(u,{title:"Kennwort",subtype:"password","model-value":o.backupCloud.configuration.smb_password,"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.smb_password"))},null,8,["model-value"])])}const D=i(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/samba/backup_cloud.vue"]]);export{D as default};
diff --git a/web/settings/assets/bat-bb33d730.js b/web/settings/assets/bat-0bafcbc8.js
similarity index 81%
rename from web/settings/assets/bat-bb33d730.js
rename to web/settings/assets/bat-0bafcbc8.js
index 94b80d9ebc..07dab1a567 100644
--- a/web/settings/assets/bat-bb33d730.js
+++ b/web/settings/assets/bat-0bafcbc8.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{E as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisBat",mixins:[r]},_={class:"device-solis-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-99d6a6cb.js b/web/settings/assets/bat-0bb8df4a.js
similarity index 88%
rename from web/settings/assets/bat-99d6a6cb.js
rename to web/settings/assets/bat-0bb8df4a.js
index 27682d2f18..d6a2885623 100644
--- a/web/settings/assets/bat-99d6a6cb.js
+++ b/web/settings/assets/bat-0bb8df4a.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as p,l as u,D as n,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},c={class:"device-huawei-smart-logger-bat"};function b(o,e,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",c,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")])),_:1}),n(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{E as default};
+import{C as s}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as t,k as p,l as u,D as n,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceHuaweiSmartLoggerBat",mixins:[s]},c={class:"device-huawei-smart-logger-bat"};function b(o,e,g,f,w,v){const i=t("openwb-base-heading"),a=t("openwb-base-number-input");return p(),u("div",c,[n(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Batteriespeicher ")])),_:1}),n(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-12daed7b.js b/web/settings/assets/bat-10d75798.js
similarity index 83%
rename from web/settings/assets/bat-12daed7b.js
rename to web/settings/assets/bat-10d75798.js
index 56518477e3..017374a384 100644
--- a/web/settings/assets/bat-12daed7b.js
+++ b/web/settings/assets/bat-10d75798.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as p,l,D as n,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxBat",mixins:[r]},b={class:"device-solarmax-bat"};function _(o,e,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",b,[n(a,{subtype:"info"},{default:u(()=>e[1]||(e[1]=[d(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const T=m(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{T as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as t,k as p,l,D as n,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxBat",mixins:[r]},b={class:"device-solarmax-bat"};function _(o,e,f,x,v,g){const a=t("openwb-base-alert"),s=t("openwb-base-number-input");return p(),l("div",b,[n(a,{subtype:"info"},{default:u(()=>e[1]||(e[1]=[d(" Solarmax MAX.STORAGE / MAX.STORAGE Ultimate Batteriespeicher sind Teil eines Hybridsystems. Daher muss auch eine Komponente Wechselrichter angelegt werden. ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const T=m(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/bat.vue"]]);export{T as default};
diff --git a/web/settings/assets/bat-c64928d7.js b/web/settings/assets/bat-15e6188c.js
similarity index 90%
rename from web/settings/assets/bat-c64928d7.js
rename to web/settings/assets/bat-15e6188c.js
index 1053784fb4..82a221bd38 100644
--- a/web/settings/assets/bat-c64928d7.js
+++ b/web/settings/assets/bat-15e6188c.js
@@ -1 +1 @@
-import{C as l}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as t,k as u,l as m,D as i,N as d,y as b}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenwbFlexBat",mixins:[l]},f={class:"device-openwb-flex-bat"};function _(o,e,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",f,[i(a,null,{default:d(()=>e[2]||(e[2]=[b(" Einstellungen für openWB-Flex Batteriespeicher ")])),_:1}),i(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const h=r(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{h as default};
+import{C as l}from"./HardwareInstallation-d2c0f1d5.js";import{_ as r,u as t,k as u,l as m,D as i,N as d,y as b}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenwbFlexBat",mixins:[l]},f={class:"device-openwb-flex-bat"};function _(o,e,v,w,g,x){const a=t("openwb-base-heading"),p=t("openwb-base-select-input"),s=t("openwb-base-number-input");return u(),m("div",f,[i(a,null,{default:d(()=>e[2]||(e[2]=[b(" Einstellungen für openWB-Flex Batteriespeicher ")])),_:1}),i(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(s,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const h=r(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/bat.vue"]]);export{h as default};
diff --git a/web/settings/assets/bat-840118d9.js b/web/settings/assets/bat-22c07366.js
similarity index 88%
rename from web/settings/assets/bat-840118d9.js
rename to web/settings/assets/bat-22c07366.js
index ef2d8f12c1..1bed4ae0ee 100644
--- a/web/settings/assets/bat-840118d9.js
+++ b/web/settings/assets/bat-22c07366.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as o,k as m,l as u,D as t,N as l,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},f={class:"device-fems-bat"};function _(n,e,b,v,g,C){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return m(),u("div",f,[t(i,null,{default:l(()=>e[1]||(e[1]=[c(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")])),_:1}),t(s,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":n.component.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.num"))},null,8,["model-value"])])}const M=p(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{M as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as o,k as m,l as u,D as t,N as l,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceFemsBat",mixins:[r]},f={class:"device-fems-bat"};function _(n,e,b,v,g,C){const i=o("openwb-base-heading"),s=o("openwb-base-number-input");return m(),u("div",f,[t(i,null,{default:l(()=>e[1]||(e[1]=[c(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control Batteriespeicher ")])),_:1}),t(s,{title:"Anzahl der verbauten Speicher",required:"",min:1,max:2,"model-value":n.component.configuration.num,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.num"))},null,8,["model-value"])])}const M=p(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/bat.vue"]]);export{M as default};
diff --git a/web/settings/assets/bat-61eea3a5.js b/web/settings/assets/bat-22feb1cd.js
similarity index 94%
rename from web/settings/assets/bat-61eea3a5.js
rename to web/settings/assets/bat-22feb1cd.js
index 9e10212293..7d58a657a4 100644
--- a/web/settings/assets/bat-61eea3a5.js
+++ b/web/settings/assets/bat-22feb1cd.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as l,k as p,l as m,D as o,N as a,y as r,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"};function w(t,e,v,j,q,_){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>e[4]||(e[4]=[r(" Einstellungen für JSON Batteriespeicher ")])),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":t.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>e[5]||(e[5]=[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":t.component.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":t.component.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>e[6]||(e[6]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":t.component.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=n=>t.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>e[7]||(e[7]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const N=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{N as default};
+import{C as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as l,k as p,l as m,D as o,N as a,y as r,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceJsonBat",mixins:[d]},b={class:"device-json-bat"};function w(t,e,v,j,q,_){const s=l("openwb-base-heading"),i=l("openwb-base-text-input");return p(),m("div",b,[o(s,null,{default:a(()=>e[4]||(e[4]=[r(" Einstellungen für JSON Batteriespeicher ")])),_:1}),o(i,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":t.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.jq_power"))},{help:a(()=>e[5]||(e[5]=[r(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),r(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt (positiv Ladung, negativ Entladung) darstellt. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Ladestand",subtype:"text",required:"","model-value":t.component.configuration.jq_soc,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(n,"configuration.jq_soc"))},null,8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Ladung",subtype:"text","model-value":t.component.configuration.jq_imported,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateConfiguration(n,"configuration.jq_imported"))},{help:a(()=>e[6]||(e[6]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),o(i,{title:"Abfrage für Zählerstand Entladung",subtype:"text","model-value":t.component.configuration.jq_exported,"onUpdate:modelValue":e[3]||(e[3]=n=>t.updateConfiguration(n,"configuration.jq_exported"))},{help:a(()=>e[7]||(e[7]=[r(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const N=u(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-bdfaf1f4.js b/web/settings/assets/bat-39076628.js
similarity index 87%
rename from web/settings/assets/bat-bdfaf1f4.js
rename to web/settings/assets/bat-39076628.js
index e8b1df6102..f5e667d171 100644
--- a/web/settings/assets/bat-bdfaf1f4.js
+++ b/web/settings/assets/bat-39076628.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as d,D as t,N as u,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{h as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as n,k as m,l as d,D as t,N as u,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeBat",mixins:[r]},_={class:"device-deye-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/bat.vue"]]);export{h as default};
diff --git a/web/settings/assets/bat-baab6c7d.js b/web/settings/assets/bat-59db0757.js
similarity index 87%
rename from web/settings/assets/bat-baab6c7d.js
rename to web/settings/assets/bat-59db0757.js
index c3154730d7..48e0ecaf50 100644
--- a/web/settings/assets/bat-baab6c7d.js
+++ b/web/settings/assets/bat-59db0757.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as u,l as d,D as n,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(o,e,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return u(),d("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für Studer Batteriespeicher ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as t,k as u,l as d,D as n,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceStuderBat",mixins:[a]},_={class:"device-studer-bat"};function b(o,e,f,v,g,w){const i=t("openwb-base-heading"),s=t("openwb-base-number-input");return u(),d("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für Studer Batteriespeicher ")])),_:1}),n(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-426bdd63.js b/web/settings/assets/bat-6d0ee218.js
similarity index 89%
rename from web/settings/assets/bat-426bdd63.js
rename to web/settings/assets/bat-6d0ee218.js
index 18062f2b91..8aa88dc39b 100644
--- a/web/settings/assets/bat-426bdd63.js
+++ b/web/settings/assets/bat-6d0ee218.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as o,k as l,l as m,D as n,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(t,e,f,v,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),m("div",_,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const E=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{E as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as r,u as o,k as l,l as m,D as n,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbBatkitBat",mixins:[p]},_={class:"device-openwb-batkit-bat"};function b(t,e,f,v,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),m("div",_,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.version"))},null,8,["model-value"])])}const E=r(d,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_bat_kit/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-9d9a67fb.js b/web/settings/assets/bat-7406ff4b.js
similarity index 88%
rename from web/settings/assets/bat-9d9a67fb.js
rename to web/settings/assets/bat-7406ff4b.js
index 8dea9b389f..3212fac51f 100644
--- a/web/settings/assets/bat-9d9a67fb.js
+++ b/web/settings/assets/bat-7406ff4b.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(o,e,f,g,v,w){const i=n("openwb-base-heading"),a=n("openwb-base-number-input");return d(),m("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Batteriespeicher ")])),_:1}),t(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{V as default};
+import{C as s}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeBat",mixins:[s]},_={class:"device-solaredge-bat"};function b(o,e,f,g,v,w){const i=n("openwb-base-heading"),a=n("openwb-base-number-input");return d(),m("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Batteriespeicher ")])),_:1}),t(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-ab8d4880.js b/web/settings/assets/bat-8e9d3a0e.js
similarity index 87%
rename from web/settings/assets/bat-ab8d4880.js
rename to web/settings/assets/bat-8e9d3a0e.js
index eba5a3775a..cfcf95cfb1 100644
--- a/web/settings/assets/bat-ab8d4880.js
+++ b/web/settings/assets/bat-8e9d3a0e.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssBat",mixins:[r]},c={class:"device-fox_ess-bat"};function b(o,e,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{h as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssBat",mixins:[r]},c={class:"device-fox_ess-bat"};function b(o,e,f,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const h=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/bat.vue"]]);export{h as default};
diff --git a/web/settings/assets/bat-f044ae56.js b/web/settings/assets/bat-98bc85c9.js
similarity index 89%
rename from web/settings/assets/bat-f044ae56.js
rename to web/settings/assets/bat-98bc85c9.js
index 2a9f1f39ce..c933428270 100644
--- a/web/settings/assets/bat-f044ae56.js
+++ b/web/settings/assets/bat-98bc85c9.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as o,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[a]},_={class:"device-openwb-evukit-bat"};function v(t,e,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{$ as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as r,u as o,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitBat",mixins:[a]},_={class:"device-openwb-evukit-bat"};function v(t,e,b,f,w,g){const i=o("openwb-base-heading"),s=o("openwb-base-select-input");return l(),u("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Batteriespeicher ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"SDM120"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=r(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/bat.vue"]]);export{$ as default};
diff --git a/web/settings/assets/bat-a28914e4.js b/web/settings/assets/bat-9d704a63.js
similarity index 91%
rename from web/settings/assets/bat-a28914e4.js
rename to web/settings/assets/bat-9d704a63.js
index a874139ab3..89d97af260 100644
--- a/web/settings/assets/bat-a28914e4.js
+++ b/web/settings/assets/bat-9d704a63.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as t,k as d,l as c,D as i,N as a,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMTecBat",mixins:[m]},_={class:"device-mtec-bat"};function f(o,e,v,g,w,C){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",_,[i(p,null,{default:a(()=>e[2]||(e[2]=[s(" Einstellungen für M-Tec Batteriespeicher ")])),_:1}),i(r,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":o.component.configuration.generation,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>e[3]||(e[3]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const N=l(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{N as default};
+import{C as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as t,k as d,l as c,D as i,N as a,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMTecBat",mixins:[m]},_={class:"device-mtec-bat"};function f(o,e,v,g,w,C){const p=t("openwb-base-heading"),r=t("openwb-base-select-input"),u=t("openwb-base-number-input");return d(),c("div",_,[i(p,null,{default:a(()=>e[2]||(e[2]=[s(" Einstellungen für M-Tec Batteriespeicher ")])),_:1}),i(r,{title:"Generation","not-selected":"Bitte auswählen",options:[{value:2,text:"Gen 2"},{value:3,text:"Gen 3"}],"model-value":o.component.configuration.generation,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.generation"))},null,8,["model-value"]),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:a(()=>e[3]||(e[3]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const N=l(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat-3b4b20a7.js b/web/settings/assets/bat-aa42df8b.js
similarity index 96%
rename from web/settings/assets/bat-3b4b20a7.js
rename to web/settings/assets/bat-aa42df8b.js
index 1afbe8d515..86ba3eac99 100644
--- a/web/settings/assets/bat-3b4b20a7.js
+++ b/web/settings/assets/bat-aa42df8b.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as s,k as p,l as g,D as r,N as i,y as n,x as o}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpBat",mixins:[u]},b={class:"device-http-bat"};function f(t,e,v,w,c,k){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),g("div",b,[r(d,null,{default:i(()=>e[4]||(e[4]=[n(" Einstellungen für Http Batteriespeicher ")])),_:1}),r(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>e[5]||(e[5]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>e[6]||(e[6]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),o("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const A=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{A as default};
+import{C as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as s,k as p,l as g,D as r,N as i,y as n,x as o}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpBat",mixins:[u]},b={class:"device-http-bat"};function f(t,e,v,w,c,k){const d=s("openwb-base-heading"),l=s("openwb-base-text-input");return p(),g("div",b,[r(d,null,{default:i(()=>e[4]||(e[4]=[n(" Einstellungen für Http Batteriespeicher ")])),_:1}),r(l,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateConfiguration(a,"configuration.power_path"))},{help:i(()=>e[5]||(e[5]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Ladestand",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.soc_path,"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateConfiguration(a,"configuration.soc_path"))},{help:i(()=>e[6]||(e[6]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen Ladestand (SoC) in Prozent darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand laden",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateConfiguration(a,"configuration.imported_path"))},{help:i(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt. ")])),_:1},8,["model-value"]),r(l,{title:"Pfad für Zählerstand entladen",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateConfiguration(a,"configuration.exported_path"))},{help:i(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),o("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),o("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const A=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/bat.vue"]]);export{A as default};
diff --git a/web/settings/assets/bat-328595a8.js b/web/settings/assets/bat-cf017b63.js
similarity index 88%
rename from web/settings/assets/bat-328595a8.js
rename to web/settings/assets/bat-cf017b63.js
index ba759923d7..2234c9db47 100644
--- a/web/settings/assets/bat-328595a8.js
+++ b/web/settings/assets/bat-cf017b63.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},b={class:"device-sunnyboy-bat"};function c(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",b,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{S as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyBoyBat",mixins:[r]},b={class:"device-sunnyboy-bat"};function c(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",b,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Batteriespeicher ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat.vue"]]);export{S as default};
diff --git a/web/settings/assets/bat-bae92296.js b/web/settings/assets/bat-dfa51acd.js
similarity index 87%
rename from web/settings/assets/bat-bae92296.js
rename to web/settings/assets/bat-dfa51acd.js
index d37fbd2dc1..78671a3330 100644
--- a/web/settings/assets/bat-bae92296.js
+++ b/web/settings/assets/bat-dfa51acd.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[c(" Einstellungen für Victron Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceVictronBat",mixins:[a]},_={class:"device-victron-bat"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[c(" Einstellungen für Victron Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=p(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-ba2e5e6b.js b/web/settings/assets/bat-e0e00bd8.js
similarity index 88%
rename from web/settings/assets/bat-ba2e5e6b.js
rename to web/settings/assets/bat-e0e00bd8.js
index 56df2f6824..fd8cb5dd37 100644
--- a/web/settings/assets/bat-ba2e5e6b.js
+++ b/web/settings/assets/bat-e0e00bd8.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as o,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIslandBat",mixins:[r]},c={class:"device-sunnyisland-bat"};function b(n,e,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Sunny Island Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{V as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as o,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSunnyIslandBat",mixins:[r]},c={class:"device-sunnyisland-bat"};function b(n,e,f,v,g,w){const s=o("openwb-base-heading"),i=o("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Sunny Island Batteriespeicher ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const V=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/bat.vue"]]);export{V as default};
diff --git a/web/settings/assets/bat-a74943cb.js b/web/settings/assets/bat-f3f3bffc.js
similarity index 95%
rename from web/settings/assets/bat-a74943cb.js
rename to web/settings/assets/bat-f3f3bffc.js
index 95c2ba3a22..8ae2f865db 100644
--- a/web/settings/assets/bat-a74943cb.js
+++ b/web/settings/assets/bat-f3f3bffc.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as r,k as b,l as f,D as o,N as l,y as t,x as n,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttBat",mixins:[m]},k={class:"device-mqtt-bat"};function B(i,e,x,v,w,z){const u=r("openwb-base-heading"),s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return b(),f("div",k,[o(u,null,{default:l(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Batteriespeicher ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>[e[21]||(e[21]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung")),e[3]||(e[3]=n("br",null,null,-1)),e[4]||(e[4]=t(" Beispiel: ")),e[5]||(e[5]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/imported ",1)]),_:1}),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[8]||(e[8]=n("br",null,null,-1)),e[9]||(e[9]=t(" Beispiel: ")),e[10]||(e[10]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/exported ",1)]),_:1}),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[13]||(e[13]=n("br",null,null,-1)),e[14]||(e[14]=t(" Beispiel: ")),e[15]||(e[15]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/soc ",1)]),_:1}),e[16]||(e[16]=n("br",null,null,-1)),e[17]||(e[17]=t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100")),e[18]||(e[18]=n("br",null,null,-1)),e[19]||(e[19]=t(" Beispiel: ")),e[20]||(e[20]=n("span",{class:"text-info"},"95",-1))])])]),_:1})])}const P=d(g,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{P as default};
+import{C as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as r,k as b,l as f,D as o,N as l,y as t,x as n,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttBat",mixins:[m]},k={class:"device-mqtt-bat"};function B(i,e,x,v,w,z){const u=r("openwb-base-heading"),s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return b(),f("div",k,[o(u,null,{default:l(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Batteriespeicher ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>[e[21]||(e[21]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" Speicherleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Ladung, negativ Entladung")),e[3]||(e[3]=n("br",null,null,-1)),e[4]||(e[4]=t(" Beispiel: ")),e[5]||(e[5]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/imported ",1)]),_:1}),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Geladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[8]||(e[8]=n("br",null,null,-1)),e[9]||(e[9]=t(" Beispiel: ")),e[10]||(e[10]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/exported ",1)]),_:1}),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=t(" Entladene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[13]||(e[13]=n("br",null,null,-1)),e[14]||(e[14]=t(" Beispiel: ")),e[15]||(e[15]=n("span",{class:"text-info"},"123.45",-1))]),n("li",null,[o(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[t(" openWB/set/bat/"+p(i.component.id)+"/get/soc ",1)]),_:1}),e[16]||(e[16]=n("br",null,null,-1)),e[17]||(e[17]=t(" Ladestand des Speichers, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, gültige Werte 0 bis 100")),e[18]||(e[18]=n("br",null,null,-1)),e[19]||(e[19]=t(" Beispiel: ")),e[20]||(e[20]=n("span",{class:"text-info"},"95",-1))])])]),_:1})])}const P=d(g,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/bat.vue"]]);export{P as default};
diff --git a/web/settings/assets/bat-9d6be7fa.js b/web/settings/assets/bat-f5f1c5c9.js
similarity index 87%
rename from web/settings/assets/bat-9d6be7fa.js
rename to web/settings/assets/bat-f5f1c5c9.js
index 2e816f9f38..c41fabd2a0 100644
--- a/web/settings/assets/bat-9d6be7fa.js
+++ b/web/settings/assets/bat-f5f1c5c9.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(o,e,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Fronius Batteriespeicher ")])),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const E=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFroniusBat",mixins:[a]},_={class:"device-fronius-bat"};function f(o,e,b,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Fronius Batteriespeicher ")])),_:1}),t(r,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":o.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.meter_id"))},null,8,["model-value"])])}const E=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/bat.vue"]]);export{E as default};
diff --git a/web/settings/assets/bat-80f0d2f4.js b/web/settings/assets/bat-fedfab16.js
similarity index 83%
rename from web/settings/assets/bat-80f0d2f4.js
rename to web/settings/assets/bat-fedfab16.js
index 34ccf8739c..d62943e8a7 100644
--- a/web/settings/assets/bat-80f0d2f4.js
+++ b/web/settings/assets/bat-fedfab16.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as n,k as u,l,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyBat",mixins:[m]},b={class:"device-sigenergy-bat"};function _(o,e,c,f,v,y){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),l("div",b,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Sigenergy Batteriespeicher ")])),_:1}),t(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const N=d(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{N as default};
+import{C as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as n,k as u,l,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyBat",mixins:[m]},b={class:"device-sigenergy-bat"};function _(o,e,c,f,v,y){const r=n("openwb-base-heading"),a=n("openwb-base-number-input");return u(),l("div",b,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Sigenergy Batteriespeicher ")])),_:1}),t(a,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const N=d(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/bat.vue"]]);export{N as default};
diff --git a/web/settings/assets/bat_smart_energy-999a65de.js b/web/settings/assets/bat_smart_energy-1b4c5bcf.js
similarity index 88%
rename from web/settings/assets/bat_smart_energy-999a65de.js
rename to web/settings/assets/bat_smart_energy-1b4c5bcf.js
index 4603789f52..190b793145 100644
--- a/web/settings/assets/bat_smart_energy-999a65de.js
+++ b/web/settings/assets/bat_smart_energy-1b4c5bcf.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as o,k as p,l as u,D as t,N as d,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[a]},b={class:"device-sunnyboy-bat-smart-energy"};function c(n,e,f,y,g,v){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return p(),u("div",b,[t(s,null,{default:d(()=>e[1]||(e[1]=[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const M=m(l,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{M as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as o,k as p,l as u,D as t,N as d,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceSunnyBoyBatSmartEnergy",mixins:[a]},b={class:"device-sunnyboy-bat-smart-energy"};function c(n,e,f,y,g,v){const s=o("openwb-base-heading"),r=o("openwb-base-number-input");return p(),u("div",b,[t(s,null,{default:d(()=>e[1]||(e[1]=[_(" Einstellungen für SMA Sunny Boy Smart Energy Batteriespeicher ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.modbus_id"))},null,8,["model-value"])])}const M=m(l,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/bat_smart_energy.vue"]]);export{M as default};
diff --git a/web/settings/assets/chargePoint-a02180ae.js b/web/settings/assets/chargePoint-068c7cfc.js
similarity index 86%
rename from web/settings/assets/chargePoint-a02180ae.js
rename to web/settings/assets/chargePoint-068c7cfc.js
index 3c9e76a422..e39bd1033f 100644
--- a/web/settings/assets/chargePoint-a02180ae.js
+++ b/web/settings/assets/chargePoint-068c7cfc.js
@@ -1 +1 @@
-import{C as r}from"./ChargePointInstallation-8dff21bc.js";import{_ as i,u as a,k as p,l as s,D as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{B as default};
+import{C as r}from"./ChargePointInstallation-2f136eb7.js";import{_ as i,u as a,k as p,l as s,D as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbDcAdapter",mixins:[r]},m={class:"charge-point-openwb-dc-adapter"};function u(e,o,_,l,f,g){const t=a("openwb-base-text-input");return p(),s("div",m,[d(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":e.chargePoint.configuration.ip_address,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_dc_adapter/chargePoint.vue"]]);export{B as default};
diff --git a/web/settings/assets/chargePoint-112ccae9.js b/web/settings/assets/chargePoint-31a8d3d7.js
similarity index 90%
rename from web/settings/assets/chargePoint-112ccae9.js
rename to web/settings/assets/chargePoint-31a8d3d7.js
index 4e8374d1fc..298497f0c1 100644
--- a/web/settings/assets/chargePoint-112ccae9.js
+++ b/web/settings/assets/chargePoint-31a8d3d7.js
@@ -1 +1 @@
-import{C as p}from"./ChargePointInstallation-8dff21bc.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointExternalOpenwb",mixins:[p]},c={class:"charge-point-external-openwb"};function g(n,e,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const $=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{$ as default};
+import{C as p}from"./ChargePointInstallation-2f136eb7.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointExternalOpenwb",mixins:[p]},c={class:"charge-point-external-openwb"};function g(n,e,b,f,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const $=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/external_openwb/chargePoint.vue"]]);export{$ as default};
diff --git a/web/settings/assets/chargePoint-f1ada5d6.js b/web/settings/assets/chargePoint-4fed3886.js
similarity index 98%
rename from web/settings/assets/chargePoint-f1ada5d6.js
rename to web/settings/assets/chargePoint-4fed3886.js
index fb2cd37636..b04c936a61 100644
--- a/web/settings/assets/chargePoint-f1ada5d6.js
+++ b/web/settings/assets/chargePoint-4fed3886.js
@@ -1 +1 @@
-import{C as d}from"./ChargePointInstallation-8dff21bc.js";import{_ as g,u,k as a,l as f,D as e,N as i,y as t,x as l,z as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"ChargePointMqtt",mixins:[d]},b={class:"charge-point-mqtt"};function k(o,n,B,v,w,W){const p=u("openwb-base-alert"),s=u("openwb-base-copy-to-clipboard");return a(),f("div",b,[e(p,{subtype:"danger"},{default:i(()=>n[0]||(n[0]=[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")])),_:1}),e(p,{subtype:"info"},{default:i(()=>[n[72]||(n[72]=t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden.")),n[73]||(n[73]=l("br",null,null,-1)),n[74]||(n[74]=t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). ")),l("ol",null,[l("li",null,[n[11]||(n[11]=t(" von openWB gesendete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/current ",1)]),_:1}),n[1]||(n[1]=l("br",null,null,-1)),n[2]||(n[2]=t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[3]||(n[3]=l("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=l("span",{class:"text-info"},"12.34",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/phases_to_use ",1)]),_:1}),n[6]||(n[6]=l("br",null,null,-1)),n[7]||(n[7]=t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3")),n[8]||(n[8]=l("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=l("span",{class:"text-info"},"1",-1))])])]),l("li",null,[n[37]||(n[37]=t(" von openWB zwingend erwartete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/currents ",1)]),_:1}),n[12]||(n[12]=l("br",null,null,-1)),n[13]||(n[13]=t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[14]||(n[14]=l("br",null,null,-1)),n[15]||(n[15]=t(" Beispiel: ")),n[16]||(n[16]=l("span",{class:"text-info"},"[6.78,6.89,6.94]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power ",1)]),_:1}),n[17]||(n[17]=l("br",null,null,-1)),n[18]||(n[18]=t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[19]||(n[19]=l("br",null,null,-1)),n[20]||(n[20]=t(" Beispiel: ")),n[21]||(n[21]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/plug_state ",1)]),_:1}),n[22]||(n[22]=l("br",null,null,-1)),n[23]||(n[23]=t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool).")),n[24]||(n[24]=l("br",null,null,-1)),n[25]||(n[25]=t(" Beispiel: ")),n[26]||(n[26]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/charge_state ",1)]),_:1}),n[27]||(n[27]=l("br",null,null,-1)),n[28]||(n[28]=t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool).")),n[29]||(n[29]=l("br",null,null,-1)),n[30]||(n[30]=t(" Beispiel: ")),n[31]||(n[31]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/phases_in_use ",1)]),_:1}),n[32]||(n[32]=l("br",null,null,-1)),n[33]||(n[33]=t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3")),n[34]||(n[34]=l("br",null,null,-1)),n[35]||(n[35]=t(" Beispiel: ")),n[36]||(n[36]=l("span",{class:"text-info"},"3",-1))])])]),l("li",null,[n[71]||(n[71]=t(" optionale Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/imported ",1)]),_:1}),n[38]||(n[38]=l("br",null,null,-1)),n[39]||(n[39]=t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[40]||(n[40]=l("br",null,null,-1)),n[41]||(n[41]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[42]||(n[42]=l("br",null,null,-1)),n[43]||(n[43]=t(" Beispiel: ")),n[44]||(n[44]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/exported ",1)]),_:1}),n[45]||(n[45]=l("br",null,null,-1)),n[46]||(n[46]=t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[47]||(n[47]=l("br",null,null,-1)),n[48]||(n[48]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[49]||(n[49]=l("br",null,null,-1)),n[50]||(n[50]=t(" Beispiel: ")),n[51]||(n[51]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/voltages ",1)]),_:1}),n[52]||(n[52]=l("br",null,null,-1)),n[53]||(n[53]=t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv.")),n[54]||(n[54]=l("br",null,null,-1)),n[55]||(n[55]=t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[56]||(n[56]=l("br",null,null,-1)),n[57]||(n[57]=t(" Beispiel: ")),n[58]||(n[58]=l("span",{class:"text-info"},"[230.12,231.08,232.54]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power_factors ",1)]),_:1}),n[59]||(n[59]=l("br",null,null,-1)),n[60]||(n[60]=t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1.")),n[61]||(n[61]=l("br",null,null,-1)),n[62]||(n[62]=t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[63]||(n[63]=l("br",null,null,-1)),n[64]||(n[64]=t(" Beispiel: ")),n[65]||(n[65]=l("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/rfid_tag ",1)]),_:1}),n[66]||(n[66]=l("br",null,null,-1)),n[67]||(n[67]=t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert.")),n[68]||(n[68]=l("br",null,null,-1)),n[69]||(n[69]=t(" Beispiel: ")),n[70]||(n[70]=l("span",{class:"text-info"},'"123654"',-1))])])])])]),_:1})])}const D=g(m,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{D as default};
+import{C as d}from"./ChargePointInstallation-2f136eb7.js";import{_ as g,u,k as a,l as f,D as e,N as i,y as t,x as l,z as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"ChargePointMqtt",mixins:[d]},b={class:"charge-point-mqtt"};function k(o,n,B,v,w,W){const p=u("openwb-base-alert"),s=u("openwb-base-copy-to-clipboard");return a(),f("div",b,[e(p,{subtype:"danger"},{default:i(()=>n[0]||(n[0]=[t(" Dieser Ladepunkt-Typ darf nur in Kombination mit dem Simulator zur Fehleranalyse genutzt werden. Eine andere Verwendung ist laut den Nutzungsbedingungen untersagt. ")])),_:1}),e(p,{subtype:"info"},{default:i(()=>[n[72]||(n[72]=t(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten von speziellen Topics im Broker gelesen bzw. geschrieben werden.")),n[73]||(n[73]=l("br",null,null,-1)),n[74]||(n[74]=t(" Alle Daten werden als gültiges JSON gesendet und auch so erwartet! Zahlen mit Nachkommastellen (Float) verwenden einen Punkt als Dezimaltrenner (internationales Format). ")),l("ol",null,[l("li",null,[n[11]||(n[11]=t(" von openWB gesendete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/current ",1)]),_:1}),n[1]||(n[1]=l("br",null,null,-1)),n[2]||(n[2]=t(" Sollwert des Ladestroms, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[3]||(n[3]=l("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=l("span",{class:"text-info"},"12.34",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/chargepoint/"+r(o.chargePoint.id)+"/set/phases_to_use ",1)]),_:1}),n[6]||(n[6]=l("br",null,null,-1)),n[7]||(n[7]=t(" Sollwert für die Anzahl Phasen als Ganzzahl (Integer). Mögliche Werte: 1 oder 3")),n[8]||(n[8]=l("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=l("span",{class:"text-info"},"1",-1))])])]),l("li",null,[n[37]||(n[37]=t(" von openWB zwingend erwartete Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/currents ",1)]),_:1}),n[12]||(n[12]=l("br",null,null,-1)),n[13]||(n[13]=t(" Aktuelle Phasenströme des Ladepunktes, Array mit drei Zahlen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[14]||(n[14]=l("br",null,null,-1)),n[15]||(n[15]=t(" Beispiel: ")),n[16]||(n[16]=l("span",{class:"text-info"},"[6.78,6.89,6.94]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power ",1)]),_:1}),n[17]||(n[17]=l("br",null,null,-1)),n[18]||(n[18]=t(" Leistung in Watt, mit Nachkommastellen (Float), positiv (laden) oder negativ (entladen, falls vom Ladepunkt unterstützt).")),n[19]||(n[19]=l("br",null,null,-1)),n[20]||(n[20]=t(" Beispiel: ")),n[21]||(n[21]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/plug_state ",1)]),_:1}),n[22]||(n[22]=l("br",null,null,-1)),n[23]||(n[23]=t(" Zeigt an, ob aktuell ein Fahrzeug angesteckt ist, Wahrheitswert (Bool).")),n[24]||(n[24]=l("br",null,null,-1)),n[25]||(n[25]=t(" Beispiel: ")),n[26]||(n[26]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/charge_state ",1)]),_:1}),n[27]||(n[27]=l("br",null,null,-1)),n[28]||(n[28]=t(" Zeigt an, ob ein Ladevorgang aktiv ist, Wahrheitswert (Bool).")),n[29]||(n[29]=l("br",null,null,-1)),n[30]||(n[30]=t(" Beispiel: ")),n[31]||(n[31]=l("span",{class:"text-info"},"true",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/phases_in_use ",1)]),_:1}),n[32]||(n[32]=l("br",null,null,-1)),n[33]||(n[33]=t(" Anzahl der Phasen, mit denen geladen wird, Ganzzahl (Integer). Mögliche Werte: 0 bis 3")),n[34]||(n[34]=l("br",null,null,-1)),n[35]||(n[35]=t(" Beispiel: ")),n[36]||(n[36]=l("span",{class:"text-info"},"3",-1))])])]),l("li",null,[n[71]||(n[71]=t(" optionale Topics ")),l("ul",null,[l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/imported ",1)]),_:1}),n[38]||(n[38]=l("br",null,null,-1)),n[39]||(n[39]=t(" Geladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[40]||(n[40]=l("br",null,null,-1)),n[41]||(n[41]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[42]||(n[42]=l("br",null,null,-1)),n[43]||(n[43]=t(" Beispiel: ")),n[44]||(n[44]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/exported ",1)]),_:1}),n[45]||(n[45]=l("br",null,null,-1)),n[46]||(n[46]=t(" Entladene Energie in Wh, mit Nachkommastellen (Float), nur positiv")),n[47]||(n[47]=l("br",null,null,-1)),n[48]||(n[48]=t(" Wird dieses Topic nicht vom Ladepunkt gesendet, so wird intern ein Zählerstand anhand der Leistung simuliert.")),n[49]||(n[49]=l("br",null,null,-1)),n[50]||(n[50]=t(" Beispiel: ")),n[51]||(n[51]=l("span",{class:"text-info"},"123.45",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/voltages ",1)]),_:1}),n[52]||(n[52]=l("br",null,null,-1)),n[53]||(n[53]=t(" Aktuelle Phasenspannungen des Ladepunktes, Array mit drei Zahlen (Float), nur positiv.")),n[54]||(n[54]=l("br",null,null,-1)),n[55]||(n[55]=t(" Die Spannungen werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[56]||(n[56]=l("br",null,null,-1)),n[57]||(n[57]=t(" Beispiel: ")),n[58]||(n[58]=l("span",{class:"text-info"},"[230.12,231.08,232.54]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/power_factors ",1)]),_:1}),n[59]||(n[59]=l("br",null,null,-1)),n[60]||(n[60]=t(" Aktuelle Leistungsfaktoren des Ladepunktes, Array mit drei Zahlen (Float), Wertebereich von -1 bis 1.")),n[61]||(n[61]=l("br",null,null,-1)),n[62]||(n[62]=t(" Die Leistungsfaktoren werden nicht verarbeitet, sondern lediglich im Status angezeigt.")),n[63]||(n[63]=l("br",null,null,-1)),n[64]||(n[64]=t(" Beispiel: ")),n[65]||(n[65]=l("span",{class:"text-info"},"[-0.87,0.96,1.0]",-1))]),l("li",null,[e(s,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/chargepoint/"+r(o.chargePoint.id)+"/get/rfid_tag ",1)]),_:1}),n[66]||(n[66]=l("br",null,null,-1)),n[67]||(n[67]=t(" Eine Zeichenfolge, die einen eingelesenen Tag für openWB repräsentiert.")),n[68]||(n[68]=l("br",null,null,-1)),n[69]||(n[69]=t(" Beispiel: ")),n[70]||(n[70]=l("span",{class:"text-info"},'"123654"',-1))])])])])]),_:1})])}const D=g(m,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/mqtt/chargePoint.vue"]]);export{D as default};
diff --git a/web/settings/assets/chargePoint-52b6ceee.js b/web/settings/assets/chargePoint-7134b65e.js
similarity index 90%
rename from web/settings/assets/chargePoint-52b6ceee.js
rename to web/settings/assets/chargePoint-7134b65e.js
index 0619096b89..2bb5341ee5 100644
--- a/web/settings/assets/chargePoint-52b6ceee.js
+++ b/web/settings/assets/chargePoint-7134b65e.js
@@ -1 +1 @@
-import{C as p}from"./ChargePointInstallation-8dff21bc.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointSatellite",mixins:[p]},c={class:"charge-point-openwb-satellite"};function g(n,e,f,b,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const $=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{$ as default};
+import{C as p}from"./ChargePointInstallation-2f136eb7.js";import{_ as s,u as t,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointSatellite",mixins:[p]},c={class:"charge-point-openwb-satellite"};function g(n,e,f,b,h,w){const r=t("openwb-base-text-input"),a=t("openwb-base-number-input");return u(),m("div",c,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":n.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o-1,"configuration.duo_num"))},{help:d(()=>e[2]||(e[2]=[l(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])])}const $=s(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_series2_satellit/chargePoint.vue"]]);export{$ as default};
diff --git a/web/settings/assets/chargePoint-7fec8739.js b/web/settings/assets/chargePoint-ab593928.js
similarity index 90%
rename from web/settings/assets/chargePoint-7fec8739.js
rename to web/settings/assets/chargePoint-ab593928.js
index 63d804b712..c9f51af480 100644
--- a/web/settings/assets/chargePoint-7fec8739.js
+++ b/web/settings/assets/chargePoint-ab593928.js
@@ -1 +1 @@
-import{C as s}from"./ChargePointInstallation-8dff21bc.js";import{_ as p,u as n,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},b={class:"charge-point-smartwb"};function c(t,e,f,_,w,v){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",b,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":t.chargePoint.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>e[2]||(e[2]=[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")])),_:1},8,["model-value"])])}const W=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{W as default};
+import{C as s}from"./ChargePointInstallation-2f136eb7.js";import{_ as p,u as n,k as u,l as m,D as i,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointSmartwb",mixins:[s]},b={class:"charge-point-smartwb"};function c(t,e,f,_,w,v){const r=n("openwb-base-text-input"),a=n("openwb-base-number-input");return u(),m("div",b,[i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Wartezeit",required:"",min:2,max:10,unit:"s","model-value":t.chargePoint.configuration.timeout,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.timeout"))},{help:d(()=>e[2]||(e[2]=[l(" Zeitangabe in Sekunden, für die auf eine Antwort des Ladepunktes gewartet wird. Wird diese Zeit überschritten, so wird von einer Kommunikationsstörung ausgegangen. ")])),_:1},8,["model-value"])])}const W=p(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/smartwb/chargePoint.vue"]]);export{W as default};
diff --git a/web/settings/assets/chargePoint-468fc8e7.js b/web/settings/assets/chargePoint-d4764ca1.js
similarity index 86%
rename from web/settings/assets/chargePoint-468fc8e7.js
rename to web/settings/assets/chargePoint-d4764ca1.js
index 6bac400e8e..cf96446442 100644
--- a/web/settings/assets/chargePoint-468fc8e7.js
+++ b/web/settings/assets/chargePoint-d4764ca1.js
@@ -1 +1 @@
-import{C as r}from"./ChargePointInstallation-8dff21bc.js";import{_ as i,u as p,k as s,l as a,D as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{B as default};
+import{C as r}from"./ChargePointInstallation-2f136eb7.js";import{_ as i,u as p,k as s,l as a,D as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"ChargePointOpenwbPro",mixins:[r]},d={class:"charge-point-openwb-pro"};function u(o,e,_,l,f,g){const t=p("openwb-base-text-input");return s(),a("div",d,[m(t,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.chargePoint.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])])}const B=i(c,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/chargePoint.vue"]]);export{B as default};
diff --git a/web/settings/assets/chargePoint-3babeeb9.js b/web/settings/assets/chargePoint-db08669e.js
similarity index 92%
rename from web/settings/assets/chargePoint-3babeeb9.js
rename to web/settings/assets/chargePoint-db08669e.js
index 06f6cf0e31..d84c76e586 100644
--- a/web/settings/assets/chargePoint-3babeeb9.js
+++ b/web/settings/assets/chargePoint-db08669e.js
@@ -1 +1 @@
-import{C as u}from"./ChargePointInstallation-8dff21bc.js";import{_ as p,u as t,k as i,l as d,D as m,A as l,N as c,y as g,B as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){(e=="series"||e=="socket")&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},h={class:"charge-point-internal-openwb"};function b(e,n,B,w,k,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",h,[m(r,{title:"Bauart","not-selected":"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":n[0]||(n[0]=o=>a.updateMode(o))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:c(()=>n[2]||(n[2]=[g(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])):f("",!0)])}const M=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{M as default};
+import{C as u}from"./ChargePointInstallation-2f136eb7.js";import{_ as p,u as t,k as i,l as d,D as m,A as l,N as c,y as g,B as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"ChargePointInternalOpenwb",mixins:[u],methods:{updateMode(e){(e=="series"||e=="socket")&&this.updateConfiguration(0,"configuration.duo_num"),this.updateConfiguration(e,"configuration.mode")}}},h={class:"charge-point-internal-openwb"};function b(e,n,B,w,k,a){const r=t("openwb-base-select-input"),s=t("openwb-base-number-input");return i(),d("div",h,[m(r,{title:"Bauart","not-selected":"Bitte auswählen",required:"",options:[{value:"series",text:"openWB series1/2 in den Varianten custom, standard & standard+"},{value:"duo",text:"openWB series1/2 Duo"},{value:"socket",text:"openWB series1/2 Buchse"}],"model-value":e.chargePoint.configuration.mode,"onUpdate:modelValue":n[0]||(n[0]=o=>a.updateMode(o))},null,8,["model-value"]),e.chargePoint.configuration.mode=="duo"?(i(),l(s,{key:0,title:"Ladepunkt-Nummer",required:"",min:1,max:2,"model-value":e.chargePoint.configuration.duo_num+1,"onUpdate:modelValue":n[1]||(n[1]=o=>e.updateConfiguration(o-1,"configuration.duo_num"))},{help:c(()=>n[2]||(n[2]=[g(' Bei einfachen Ladepunkten ist hier immer eine "1" einzutragen. Lediglich bei einer openWB Duo kann mit "2" der zweite enthaltene Ladepunkt angesprochen werden. ')])),_:1},8,["model-value"])):f("",!0)])}const M=p(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/internal_openwb/chargePoint.vue"]]);export{M as default};
diff --git a/web/settings/assets/commands-62da4db2.js b/web/settings/assets/commands-0379c262.js
similarity index 93%
rename from web/settings/assets/commands-62da4db2.js
rename to web/settings/assets/commands-0379c262.js
index 0fa07e4c29..faa86bd17d 100644
--- a/web/settings/assets/commands-62da4db2.js
+++ b/web/settings/assets/commands-0379c262.js
@@ -1 +1 @@
-import{a as i}from"./ChargePointInstallation-8dff21bc.js";import{_ as r,u as p,k as d,l as c,D as u,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointCommandsOpenwbPro",mixins:[i],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!<br />";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})}}},h={class:"charge-point-commands-openwb-pro"};function _(t,o,e,s,f,n){const a=p("openwb-base-button-input");return d(),c("div",h,[u(a,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:m(()=>o[0]||(o[0]=[l(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["disabled","onButtonClicked"])])}const $=r(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{$ as default};
+import{a as i}from"./ChargePointInstallation-2f136eb7.js";import{_ as r,u as p,k as d,l as c,D as u,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ChargePointCommandsOpenwbPro",mixins:[i],methods:{async triggerUpdate(){let t=new FormData;t.append("command","update"),t.append("data",'{"ip_address":"'+this.chargePoint.configuration.ip_address+'"}');const o="Die Aktualisierung der openWB Pro wird gestartet...";this.$root.postClientMessage(o,"info"),console.debug(location),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/charge_points/openwb_pro/commands.php",t,{timeout:5e3}).then(()=>{const e="Die Aktualisierung der openWB Pro wurde erfolgreich gestartet.";this.$root.postClientMessage(e,"success")}).catch(e=>{var s="Aktualisierung fehlgeschlagen!<br />";e.response?(console.error(e.response.status,e.response.data),s+=e.response.status+": "+e.response.data):e.request?(console.error(e.request),s+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",e.message),s+="Es ist ein unbekannter Fehler aufgetreten."),this.$root.postClientMessage(s,"danger")})}}},h={class:"charge-point-commands-openwb-pro"};function _(t,o,e,s,f,n){const a=p("openwb-base-button-input");return d(),c("div",h,[u(a,{title:"Ladepunkt aktualisieren","button-text":"Update anfordern",subtype:"success",disabled:t.chargePoint.configuration.ip_address==null,onButtonClicked:n.triggerUpdate},{help:m(()=>o[0]||(o[0]=[l(" Mit diesem Befehl können Sie die Aktualisierung der openWB Pro anstoßen. Bitte beachten Sie, dass kein Fahrzeug angesteckt ist. ")])),_:1},8,["disabled","onButtonClicked"])])}const $=r(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/openwb_pro/commands.vue"]]);export{$ as default};
diff --git a/web/settings/assets/consumption_counter-c6d1b3df.js b/web/settings/assets/consumption_counter-fffff7c1.js
similarity index 93%
rename from web/settings/assets/consumption_counter-c6d1b3df.js
rename to web/settings/assets/consumption_counter-fffff7c1.js
index bc93adf1ba..b2f5476658 100644
--- a/web/settings/assets/consumption_counter-c6d1b3df.js
+++ b/web/settings/assets/consumption_counter-fffff7c1.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as o,k as b,l as c,D as t,N as s,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(n,e,w,v,x,B){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),p=o("openwb-base-select-input"),a=o("openwb-base-number-input");return b(),c("div",f,[t(l,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für openWB-Flex Verbrauchszähler ")])),_:1}),t(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{k as default};
+import{C as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as o,k as b,l as c,D as t,N as s,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceOpenwbFlexConsumptionCounter",mixins:[d]},f={class:"device-openwb-flex-consumption-counter"};function g(n,e,w,v,x,B){const l=o("openwb-base-heading"),u=o("openwb-base-alert"),p=o("openwb-base-select-input"),a=o("openwb-base-number-input");return b(),c("div",f,[t(l,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für openWB-Flex Verbrauchszähler ")])),_:1}),t(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" Bei saldierenden Zählern (B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (SDM120, SDM630, SDM72D-M), wird der Zählerstand für den Bezug aus dem Zähler ausgelesen. Eine Messung der Einspeisung ist nicht möglich. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:"sdm120",text:"SDM120"},{value:"sdm630",text:"SDM630/SDM72D-M"},{value:"b23",text:"B23"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/consumption_counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-7fca39df.js b/web/settings/assets/counter-037dab68.js
similarity index 96%
rename from web/settings/assets/counter-7fca39df.js
rename to web/settings/assets/counter-037dab68.js
index 995ac417fe..25dc4ec8ac 100644
--- a/web/settings/assets/counter-7fca39df.js
+++ b/web/settings/assets/counter-037dab68.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as p,u,k as m,l as f,D as t,N as a,y as l,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"};function v(n,e,j,q,P,C){const i=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-alert");return m(),f("div",w,[t(i,null,{default:a(()=>e[9]||(e[9]=[l(" Einstellungen für JSON Zähler ")])),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>e[10]||(e[10]=[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":n.component.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>e[11]||(e[11]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>e[12]||(e[12]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>e[13]||(e[13]=[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")])),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=o=>n.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const z=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{z as default};
+import{C as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u,k as m,l as f,D as t,N as a,y as l,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJsonCounter",mixins:[d]},w={class:"device-json-counter"};function v(n,e,j,q,P,C){const i=u("openwb-base-heading"),r=u("openwb-base-text-input"),s=u("openwb-base-alert");return m(),f("div",w,[t(i,null,{default:a(()=>e[9]||(e[9]=[l(" Einstellungen für JSON Zähler ")])),_:1}),t(r,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:a(()=>e[10]||(e[10]=[l(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),l(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Bezug",subtype:"text","model-value":n.component.configuration.jq_imported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_imported"))},{help:a(()=>e[11]||(e[11]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(r,{title:"Abfrage für Zählerstand Einspeisung",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:a(()=>e[12]||(e[12]=[l(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"]),t(s,{subtype:"info"},{default:a(()=>e[13]||(e[13]=[l(" Werden sowohl Leistung als auch Strom auf den Einzelphasen leer gelassen, erfolgt das Lastmanagement am EVU-Punkt nur anhand der Gesamtleistung am EVU-Punkt. Wird der Zähler als Zwischenzähler verwendet, wird in diesem Fall kein Lastmanagement durchgeführt. ")])),_:1}),t(r,{title:"Abfrage für Leistung auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_power_l1,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.jq_power_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_power_l2,"onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.jq_power_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Leistung auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_power_l3,"onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.jq_power_l3"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 1",subtype:"text","model-value":n.component.configuration.jq_current_l1,"onUpdate:modelValue":e[6]||(e[6]=o=>n.updateConfiguration(o,"configuration.jq_current_l1"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 2",subtype:"text","model-value":n.component.configuration.jq_current_l2,"onUpdate:modelValue":e[7]||(e[7]=o=>n.updateConfiguration(o,"configuration.jq_current_l2"))},null,8,["model-value"]),t(r,{title:"Abfrage für Strom auf Phase 3",subtype:"text","model-value":n.component.configuration.jq_current_l3,"onUpdate:modelValue":e[8]||(e[8]=o=>n.updateConfiguration(o,"configuration.jq_current_l3"))},null,8,["model-value"])])}const z=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/counter.vue"]]);export{z as default};
diff --git a/web/settings/assets/counter-dc002a5d.js b/web/settings/assets/counter-05d801d4.js
similarity index 88%
rename from web/settings/assets/counter-dc002a5d.js
rename to web/settings/assets/counter-05d801d4.js
index d3d18cb540..3ba8682a01 100644
--- a/web/settings/assets/counter-dc002a5d.js
+++ b/web/settings/assets/counter-05d801d4.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as n,u as s,k as i,l as a,D as c,N as p,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPlenticoreCounter",mixins:[r]},u={class:"device-kostal-plenticore-counter"};function _(d,e,f,b,h,v){const t=s("openwb-base-alert");return i(),a("div",u,[c(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),l("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const Z=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{Z as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as n,u as s,k as i,l as a,D as c,N as p,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalPlenticoreCounter",mixins:[r]},u={class:"device-kostal-plenticore-counter"};function _(d,e,f,b,h,v){const t=s("openwb-base-alert");return i(),a("div",u,[c(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),l("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const Z=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/counter.vue"]]);export{Z as default};
diff --git a/web/settings/assets/counter-ec9f9982.js b/web/settings/assets/counter-070b14da.js
similarity index 87%
rename from web/settings/assets/counter-ec9f9982.js
rename to web/settings/assets/counter-070b14da.js
index e628a7fe33..5909f67370 100644
--- a/web/settings/assets/counter-ec9f9982.js
+++ b/web/settings/assets/counter-070b14da.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeCounter",mixins:[p]},_={class:"device-deye-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const h=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{h as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeCounter",mixins:[p]},_={class:"device-deye-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const h=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/counter.vue"]]);export{h as default};
diff --git a/web/settings/assets/counter-8af15294.js b/web/settings/assets/counter-2e059c6b.js
similarity index 83%
rename from web/settings/assets/counter-8af15294.js
rename to web/settings/assets/counter-2e059c6b.js
index 7a24074140..ad10d9d267 100644
--- a/web/settings/assets/counter-8af15294.js
+++ b/web/settings/assets/counter-2e059c6b.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as d,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function c(o,e,b,f,v,y){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const N=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{N as default};
+import{C as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as n,k as d,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyCounter",mixins:[m]},_={class:"device-sigenergy-counter"};function c(o,e,b,f,v,y){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const N=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-321d3599.js b/web/settings/assets/counter-2f4a0c2e.js
similarity index 87%
rename from web/settings/assets/counter-321d3599.js
rename to web/settings/assets/counter-2f4a0c2e.js
index 0df57135ce..686456d3f7 100644
--- a/web/settings/assets/counter-321d3599.js
+++ b/web/settings/assets/counter-2f4a0c2e.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l as u,D as t,N as l,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisCounter",mixins:[p]},_={class:"device-solis-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{E as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as n,k as m,l as u,D as t,N as l,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisCounter",mixins:[p]},_={class:"device-solis-counter"};function b(o,e,f,v,g,C){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),u("div",_,[t(i,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-38172dbc.js b/web/settings/assets/counter-34270a43.js
similarity index 92%
rename from web/settings/assets/counter-38172dbc.js
rename to web/settings/assets/counter-34270a43.js
index 493644cd94..e799b540eb 100644
--- a/web/settings/assets/counter-38172dbc.js
+++ b/web/settings/assets/counter-34270a43.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as o,k as b,l as c,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceOpenwbFlexCounter",mixins:[d]},_={class:"device-openwb-flex-counter"};function v(n,e,w,g,M,x){const l=o("openwb-base-heading"),a=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return b(),c("div",_,[t(l,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für openWB-Flex Zähler ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{k as default};
+import{C as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as o,k as b,l as c,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceOpenwbFlexCounter",mixins:[d]},_={class:"device-openwb-flex-counter"};function v(n,e,w,g,M,x){const l=o("openwb-base-heading"),a=o("openwb-base-alert"),p=o("openwb-base-select-input"),u=o("openwb-base-number-input");return b(),c("div",_,[t(l,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für openWB-Flex Zähler ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(" Bei saldierenden Zählern (MPM3PM, B23) werden die Zählerstände für Einspeisung und Bezug aus dem Zähler ausgelesen. Bei Zählern, die nicht saldierend arbeiten (Lovato, SDM630, SDM72D-M), werden die Zählerstände von der openWB berechnet. ")])),_:1}),t(p,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.version"))},null,8,["model-value"]),t(u,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":n.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.id"))},null,8,["model-value"])])}const k=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/counter.vue"]]);export{k as default};
diff --git a/web/settings/assets/counter-68a2bd86.js b/web/settings/assets/counter-3806cc52.js
similarity index 92%
rename from web/settings/assets/counter-68a2bd86.js
rename to web/settings/assets/counter-3806cc52.js
index dbc58a0ab7..7f426c8372 100644
--- a/web/settings/assets/counter-68a2bd86.js
+++ b/web/settings/assets/counter-3806cc52.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as t,k as c,l as m,D as r,N as i,y as n,x as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[u]},b={class:"device-powerfox-counter"};function g(o,e,w,x,_,h){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return c(),m("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Zähler ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{V as default};
+import{C as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as t,k as c,l as m,D as r,N as i,y as n,x as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxCounter",mixins:[u]},b={class:"device-powerfox-counter"};function g(o,e,w,x,_,h){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return c(),m("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Zähler ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-116a65cb.js b/web/settings/assets/counter-39926bb3.js
similarity index 85%
rename from web/settings/assets/counter-116a65cb.js
rename to web/settings/assets/counter-39926bb3.js
index 739306faa8..b34c129e17 100644
--- a/web/settings/assets/counter-116a65cb.js
+++ b/web/settings/assets/counter-39926bb3.js
@@ -1 +1 @@
-import{C as t}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as s,k as n,l as a,D as i,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceCarloGavazziCounter",mixins:[t]},_={class:"device-carlo-gavazzi-counter"};function u(l,e,d,f,v,z){const o=s("openwb-base-alert");return n(),a("div",_,[i(o,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")])),_:1})])}const N=r(m,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{N as default};
+import{C as t}from"./HardwareInstallation-d2c0f1d5.js";import{_ as r,u as s,k as n,l as a,D as i,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceCarloGavazziCounter",mixins:[t]},_={class:"device-carlo-gavazzi-counter"};function u(l,e,d,f,v,z){const o=s("openwb-base-alert");return n(),a("div",_,[i(o,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" ModbusTCP muss aktiviert sein. Ausgelesen wird ID 1 auf Port 502. ")])),_:1})])}const N=r(m,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-cda681c6.js b/web/settings/assets/counter-49efe9fc.js
similarity index 90%
rename from web/settings/assets/counter-cda681c6.js
rename to web/settings/assets/counter-49efe9fc.js
index 918259c673..612feff399 100644
--- a/web/settings/assets/counter-cda681c6.js
+++ b/web/settings/assets/counter-49efe9fc.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as m,l as c,D as r,N as i,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDiscovergyCounter",mixins:[d]},g={class:"device-discovergy-counter"};function _(t,e,v,b,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return m(),c("div",g,[r(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Zähler ")])),_:1}),r(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const z=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{z as default};
+import{C as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as n,k as m,l as c,D as r,N as i,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDiscovergyCounter",mixins:[d]},g={class:"device-discovergy-counter"};function _(t,e,v,b,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return m(),c("div",g,[r(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Zähler ")])),_:1}),r(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const z=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/counter.vue"]]);export{z as default};
diff --git a/web/settings/assets/counter-f74d8989.js b/web/settings/assets/counter-52e01218.js
similarity index 91%
rename from web/settings/assets/counter-f74d8989.js
rename to web/settings/assets/counter-52e01218.js
index 0cc26f22df..4c0685ea61 100644
--- a/web/settings/assets/counter-f74d8989.js
+++ b/web/settings/assets/counter-52e01218.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as r,k as p,l as f,D as n,N as s,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolaredgeCounter",mixins:[d]},b={class:"device-solaredge-counter"};function c(o,e,_,v,w,C){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),f("div",b,[n(l,null,{default:s(()=>e[2]||(e[2]=[a(" Einstellungen für SolarEdge Zähler ")])),_:1}),n(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[a(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")])),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":o.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=m(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default};
+import{C as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as r,k as p,l as f,D as n,N as s,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolaredgeCounter",mixins:[d]},b={class:"device-solaredge-counter"};function c(o,e,_,v,w,C){const l=r("openwb-base-heading"),u=r("openwb-base-alert"),i=r("openwb-base-number-input");return p(),f("div",b,[n(l,null,{default:s(()=>e[2]||(e[2]=[a(" Einstellungen für SolarEdge Zähler ")])),_:1}),n(u,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[a(" Hierfür muss ein EVU-Zähler am SolarEdge Wechselrichter per Modbus angebunden sein. Der Zähler muss an erster Position im Wechselrichter konfiguriert sein. ")])),_:1}),n(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),n(i,{title:"SolarEdge-Meter-ID","model-value":o.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"])])}const M=m(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/counter.vue"]]);export{M as default};
diff --git a/web/settings/assets/counter-3942ce7f.js b/web/settings/assets/counter-58c72dcf.js
similarity index 85%
rename from web/settings/assets/counter-3942ce7f.js
rename to web/settings/assets/counter-58c72dcf.js
index 4beb6c1ea0..ac266ac192 100644
--- a/web/settings/assets/counter-3942ce7f.js
+++ b/web/settings/assets/counter-58c72dcf.js
@@ -1 +1 @@
-import{C as n}from"./HardwareInstallation-70f156e6.js";import{_ as o,u as s,k as r,l as a,D as i,N as m,y as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceTeslaCounter",mixins:[n]},l={class:"device-tesla-counter"};function _(d,e,u,f,v,x){const t=s("openwb-base-alert");return r(),a("div",l,[i(t,{subtype:"info"},{default:m(()=>e[0]||(e[0]=[p(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")])),_:1})])}const N=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{N as default};
+import{C as n}from"./HardwareInstallation-d2c0f1d5.js";import{_ as o,u as s,k as r,l as a,D as i,N as m,y as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceTeslaCounter",mixins:[n]},l={class:"device-tesla-counter"};function _(d,e,u,f,v,x){const t=s("openwb-base-alert");return r(),a("div",l,[i(t,{subtype:"info"},{default:m(()=>e[0]||(e[0]=[p(" Je nach Firmware-Version ist nur ein Lastmanagement anhand der Gesamtleistung möglich, da nicht alle Firmware-Versionen Phasenströme liefern. ")])),_:1})])}const N=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-4498494c.js b/web/settings/assets/counter-58ed9d65.js
similarity index 82%
rename from web/settings/assets/counter-4498494c.js
rename to web/settings/assets/counter-58ed9d65.js
index b73568742c..b7bd25c841 100644
--- a/web/settings/assets/counter-4498494c.js
+++ b/web/settings/assets/counter-58ed9d65.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as t,k as a,l,D as n,N as d,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(e,o,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),l("div",_,[n(i,null,{default:d(()=>o[1]||(o[1]=[m(" Einstellungen für Powerdog Zähler ")])),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":e.component.configuration.position_evu,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as t,k as a,l,D as n,N as d,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DevicePowerdogCounter",mixins:[p]},_={class:"device-powerdog-counter"};function b(e,o,f,g,v,w){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return a(),l("div",_,[n(i,null,{default:d(()=>o[1]||(o[1]=[m(" Einstellungen für Powerdog Zähler ")])),_:1}),n(r,{title:"Einbau-Position",buttons:[{buttonValue:!1,text:"Hausverbrauch"},{buttonValue:!0,text:"EVU-Punkt"}],"model-value":e.component.configuration.position_evu,"onUpdate:modelValue":o[0]||(o[0]=s=>e.updateConfiguration(s,"configuration.position_evu"))},null,8,["model-value"])])}const N=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-4410dc4e.js b/web/settings/assets/counter-6f3afe9b.js
similarity index 97%
rename from web/settings/assets/counter-4410dc4e.js
rename to web/settings/assets/counter-6f3afe9b.js
index 2d8e4e87d3..0952b59b43 100644
--- a/web/settings/assets/counter-4410dc4e.js
+++ b/web/settings/assets/counter-6f3afe9b.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as a,u,k as f,l as g,D as l,N as o,y as t,x as e,z as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMqttCounter",mixins:[d]},k={class:"device-mqtt-counter"};function B(i,n,z,x,v,w){const p=u("openwb-base-heading"),s=u("openwb-base-copy-to-clipboard"),m=u("openwb-base-alert");return f(),g("div",k,[l(p,null,{default:o(()=>n[0]||(n[0]=[t(" Einstellungen für MQTT Zähler ")])),_:1}),l(m,{subtype:"info"},{default:o(()=>[n[41]||(n[41]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power ",1)]),_:1}),n[1]||(n[1]=e("br",null,null,-1)),n[2]||(n[2]=t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung")),n[3]||(n[3]=e("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=e("span",{class:"text-info"},"-123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/imported ",1)]),_:1}),n[6]||(n[6]=e("br",null,null,-1)),n[7]||(n[7]=t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[8]||(n[8]=e("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=e("span",{class:"text-info"},"123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/exported ",1)]),_:1}),n[11]||(n[11]=e("br",null,null,-1)),n[12]||(n[12]=t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[13]||(n[13]=e("br",null,null,-1)),n[14]||(n[14]=t(" Beispiel: ")),n[15]||(n[15]=e("span",{class:"text-info"},"123.45",-1))])]),n[42]||(n[42]=t(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/currents ",1)]),_:1}),n[16]||(n[16]=e("br",null,null,-1)),n[17]||(n[17]=t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung")),n[18]||(n[18]=e("br",null,null,-1)),n[19]||(n[19]=t(" Beispiel: ")),n[20]||(n[20]=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1))])]),n[43]||(n[43]=t(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/frequency ",1)]),_:1}),n[21]||(n[21]=e("br",null,null,-1)),n[22]||(n[22]=t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen")),n[23]||(n[23]=e("br",null,null,-1)),n[24]||(n[24]=t(" Beispiel: ")),n[25]||(n[25]=e("span",{class:"text-info"},"50.12",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/voltages ",1)]),_:1}),n[26]||(n[26]=e("br",null,null,-1)),n[27]||(n[27]=t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)")),n[28]||(n[28]=e("br",null,null,-1)),n[29]||(n[29]=t(" Beispiel: ")),n[30]||(n[30]=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/powers ",1)]),_:1}),n[31]||(n[31]=e("br",null,null,-1)),n[32]||(n[32]=t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)")),n[33]||(n[33]=e("br",null,null,-1)),n[34]||(n[34]=t(" Beispiel: ")),n[35]||(n[35]=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power_factors ",1)]),_:1}),n[36]||(n[36]=e("br",null,null,-1)),n[37]||(n[37]=t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1")),n[38]||(n[38]=e("br",null,null,-1)),n[39]||(n[39]=t(" Beispiel: ")),n[40]||(n[40]=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1))])])]),_:1})])}const q=a(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{q as default};
+import{C as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u,k as f,l as g,D as l,N as o,y as t,x as e,z as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceMqttCounter",mixins:[d]},k={class:"device-mqtt-counter"};function B(i,n,z,x,v,w){const p=u("openwb-base-heading"),s=u("openwb-base-copy-to-clipboard"),m=u("openwb-base-alert");return f(),g("div",k,[l(p,null,{default:o(()=>n[0]||(n[0]=[t(" Einstellungen für MQTT Zähler ")])),_:1}),l(m,{subtype:"info"},{default:o(()=>[n[41]||(n[41]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power ",1)]),_:1}),n[1]||(n[1]=e("br",null,null,-1)),n[2]||(n[2]=t(" Bezugsleistung in Watt, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, positiv Bezug, negativ Einspeisung")),n[3]||(n[3]=e("br",null,null,-1)),n[4]||(n[4]=t(" Beispiel: ")),n[5]||(n[5]=e("span",{class:"text-info"},"-123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/imported ",1)]),_:1}),n[6]||(n[6]=e("br",null,null,-1)),n[7]||(n[7]=t(" Bezogene Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[8]||(n[8]=e("br",null,null,-1)),n[9]||(n[9]=t(" Beispiel: ")),n[10]||(n[10]=e("span",{class:"text-info"},"123.45",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/exported ",1)]),_:1}),n[11]||(n[11]=e("br",null,null,-1)),n[12]||(n[12]=t(" Eingespeiste Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),n[13]||(n[13]=e("br",null,null,-1)),n[14]||(n[14]=t(" Beispiel: ")),n[15]||(n[15]=e("span",{class:"text-info"},"123.45",-1))])]),n[42]||(n[42]=t(" Ströme je Phase sind für phasenbasiertes Lastmanagement unbedingt erforderlich, sonst erfolgt das Lastmanagement ausschließlich auf Basis der Gesamtleistung am EVU-Punkt: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/currents ",1)]),_:1}),n[16]||(n[16]=e("br",null,null,-1)),n[17]||(n[17]=t(" Array mit den Strömen je Phase in Ampere, mit Nachkommastellen (Float), positiv Bezug, negativ Einspeisung")),n[18]||(n[18]=e("br",null,null,-1)),n[19]||(n[19]=t(" Beispiel: ")),n[20]||(n[20]=e("span",{class:"text-info"},"[1.2,2.3,-2.1]",-1))])]),n[43]||(n[43]=t(" Die Netzfrequenz, Spannungen, Leistungen und Leistungsfaktoren jeder Phase werden ausschließlich zu Anzeigezwecken verwendet: ")),e("ul",null,[e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/frequency ",1)]),_:1}),n[21]||(n[21]=e("br",null,null,-1)),n[22]||(n[22]=t(" Netzfrequenz in Hz, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen")),n[23]||(n[23]=e("br",null,null,-1)),n[24]||(n[24]=t(" Beispiel: ")),n[25]||(n[25]=e("span",{class:"text-info"},"50.12",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/voltages ",1)]),_:1}),n[26]||(n[26]=e("br",null,null,-1)),n[27]||(n[27]=t(" Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)")),n[28]||(n[28]=e("br",null,null,-1)),n[29]||(n[29]=t(" Beispiel: ")),n[30]||(n[30]=e("span",{class:"text-info"},"[222.2,223.3,222.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/powers ",1)]),_:1}),n[31]||(n[31]=e("br",null,null,-1)),n[32]||(n[32]=t(" Array mit den Leistungen je Phase in Watt, mit Nachkommastellen (Float)")),n[33]||(n[33]=e("br",null,null,-1)),n[34]||(n[34]=t(" Beispiel: ")),n[35]||(n[35]=e("span",{class:"text-info"},"[12.3,23.4,-12.3]",-1))]),e("li",null,[l(s,{class:"text-info",tooltip:"Topic kopieren"},{default:o(()=>[t(" openWB/set/counter/"+r(i.component.id)+"/get/power_factors ",1)]),_:1}),n[36]||(n[36]=e("br",null,null,-1)),n[37]||(n[37]=t(" Array mit den Leistungsfaktoren je Phase, mit Nachkommastellen (Float), Wertebereich -1 bis 1")),n[38]||(n[38]=e("br",null,null,-1)),n[39]||(n[39]=t(" Beispiel: ")),n[40]||(n[40]=e("span",{class:"text-info"},"[0.95,0.96,-0.95]",-1))])])]),_:1})])}const q=a(b,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/counter.vue"]]);export{q as default};
diff --git a/web/settings/assets/counter-02712182.js b/web/settings/assets/counter-8a7db35e.js
similarity index 88%
rename from web/settings/assets/counter-02712182.js
rename to web/settings/assets/counter-8a7db35e.js
index c3150c738c..d601bb8783 100644
--- a/web/settings/assets/counter-02712182.js
+++ b/web/settings/assets/counter-8a7db35e.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as d,l as c,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[a]},_={class:"device-mtec-counter"};function b(o,e,f,v,g,C){const r=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),c("div",_,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für M-Tec Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const V=u(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{V as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as n,k as d,l as c,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecCounter",mixins:[a]},_={class:"device-mtec-counter"};function b(o,e,f,v,g,C){const r=n("openwb-base-heading"),p=n("openwb-base-number-input");return d(),c("div",_,[t(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für M-Tec Zähler ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[s(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const V=u(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-7bf5aea7.js b/web/settings/assets/counter-95f05d0c.js
similarity index 87%
rename from web/settings/assets/counter-7bf5aea7.js
rename to web/settings/assets/counter-95f05d0c.js
index 6daa97fc1d..564466b65a 100644
--- a/web/settings/assets/counter-7bf5aea7.js
+++ b/web/settings/assets/counter-95f05d0c.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as p,l as u,D as n,N as l,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(o,e,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),u("div",_,[n(r,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für smart-me Zähler ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as t,k as p,l as u,D as n,N as l,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeCounter",mixins:[a]},_={class:"device-smart-me-counter"};function f(o,e,b,v,g,x){const r=t("openwb-base-heading"),i=t("openwb-base-text-input");return p(),u("div",_,[n(r,null,{default:l(()=>e[1]||(e[1]=[d(" Einstellungen für smart-me Zähler ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-9b6e8dff.js b/web/settings/assets/counter-a116f5da.js
similarity index 89%
rename from web/settings/assets/counter-9b6e8dff.js
rename to web/settings/assets/counter-a116f5da.js
index 77e3095d40..1d0c3c22d5 100644
--- a/web/settings/assets/counter-9b6e8dff.js
+++ b/web/settings/assets/counter-a116f5da.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as c,u as t,k as m,l as u,D as o,N as s,y as l,x as n,z as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShellyCounter",mixins:[p]},f={class:"device-shelly-counter"},h={class:"small"};function b(r,e,y,g,x,v){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return m(),u("div",f,[o(i,null,{default:s(()=>[e[0]||(e[0]=l(" Einstellungen für Shelly Zähler ")),n("span",h,"(Modul: "+d(r.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shellys unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),n("br",null,null,-1),l(" Diese Komponente benötigt keine Einstellungen. ")])),_:1})])}const N=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{N as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as c,u as t,k as m,l as u,D as o,N as s,y as l,x as n,z as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShellyCounter",mixins:[p]},f={class:"device-shelly-counter"},h={class:"small"};function b(r,e,y,g,x,v){const i=t("openwb-base-heading"),a=t("openwb-base-alert");return m(),u("div",f,[o(i,null,{default:s(()=>[e[0]||(e[0]=l(" Einstellungen für Shelly Zähler ")),n("span",h,"(Modul: "+d(r.$options.name)+")",1)]),_:1}),o(a,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n("span",{class:"text-danger"}," Als EVU-Zähler werden nur dreiphasige Shellys unterstützt (z.B. Shelly 3EM, Shelly Pro 3EM)",-1),n("br",null,null,-1),l(" Diese Komponente benötigt keine Einstellungen. ")])),_:1})])}const N=c(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-b0f78c7c.js b/web/settings/assets/counter-a81ba2a4.js
similarity index 90%
rename from web/settings/assets/counter-b0f78c7c.js
rename to web/settings/assets/counter-a81ba2a4.js
index be35bae34f..d82d9787af 100644
--- a/web/settings/assets/counter-b0f78c7c.js
+++ b/web/settings/assets/counter-a81ba2a4.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as o,k as m,l as d,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSungrowCounter",mixins:[p]},g={class:"device-sungrow-counter"};function _(n,e,b,f,v,w){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return m(),d("div",g,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sungrow Zähler ")])),_:1}),t(u,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":n.component.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.version"))},{help:i(()=>e[2]||(e[2]=[r(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")])),_:1},8,["model-value"])])}const V=l(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/counter.vue"]]);export{V as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as o,k as m,l as d,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSungrowCounter",mixins:[p]},g={class:"device-sungrow-counter"};function _(n,e,b,f,v,w){const s=o("openwb-base-heading"),u=o("openwb-base-select-input");return m(),d("div",g,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sungrow Zähler ")])),_:1}),t(u,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) mit WiNet Dongle"}],"model-value":n.component.configuration.version,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.version"))},{help:i(()=>e[2]||(e[2]=[r(" Die Variante SH ist nur über die LAN-IP mit openWB nutzbar. Hierzu hinter dem WiNet-S Dongle den Lan Anschluss nutzen. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um ISolarCloud nutzen zu können. ")])),_:1},8,["model-value"])])}const V=l(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/counter.vue"]]);export{V as default};
diff --git a/web/settings/assets/counter-50d0810f.js b/web/settings/assets/counter-aa0a6d0b.js
similarity index 86%
rename from web/settings/assets/counter-50d0810f.js
rename to web/settings/assets/counter-aa0a6d0b.js
index f8b4d7d672..933c612336 100644
--- a/web/settings/assets/counter-50d0810f.js
+++ b/web/settings/assets/counter-aa0a6d0b.js
@@ -1 +1 @@
-import{C as t}from"./HardwareInstallation-70f156e6.js";import{_ as o,u as s,k as i,l as r,D as a,N as p,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSonnenbatterieCounter",mixins:[t]},d={class:"device-sonnenbatterie-counter"};function _(l,e,u,f,b,v){const n=s("openwb-base-alert");return i(),r("div",d,[a(n,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[m(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")])),_:1})])}const N=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{N as default};
+import{C as t}from"./HardwareInstallation-d2c0f1d5.js";import{_ as o,u as s,k as i,l as r,D as a,N as p,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSonnenbatterieCounter",mixins:[t]},d={class:"device-sonnenbatterie-counter"};function _(l,e,u,f,b,v){const n=s("openwb-base-alert");return i(),r("div",d,[a(n,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[m(" Mit diesem Modul ist kein phasenbasiertes Lastmanagement möglich, da keine Ströme der einzelnen Phasen gemessen werden. ")])),_:1})])}const N=o(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-b3f26d9d.js b/web/settings/assets/counter-ad28ae65.js
similarity index 88%
rename from web/settings/assets/counter-b3f26d9d.js
rename to web/settings/assets/counter-ad28ae65.js
index 71992d4d03..e4af02cde2 100644
--- a/web/settings/assets/counter-b3f26d9d.js
+++ b/web/settings/assets/counter-ad28ae65.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as m,l as p,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(o,e,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),p("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{E as default};
+import{C as s}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as n,k as m,l as p,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerCounter",mixins:[s]},_={class:"device-huawei-smart-logger-counter"};function g(o,e,b,f,w,v){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),p("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Zähler ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.modbus_id"))},null,8,["model-value"])])}const E=u(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-55fd6368.js b/web/settings/assets/counter-b3fc64c6.js
similarity index 87%
rename from web/settings/assets/counter-55fd6368.js
rename to web/settings/assets/counter-b3fc64c6.js
index b1229da0df..a7576ab88b 100644
--- a/web/settings/assets/counter-55fd6368.js
+++ b/web/settings/assets/counter-b3fc64c6.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[p]},c={class:"device-fox_ess-counter"};function f(o,e,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Zähler ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const h=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{h as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssCounter",mixins:[p]},c={class:"device-fox_ess-counter"};function f(o,e,b,x,v,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Zähler ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const h=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/counter.vue"]]);export{h as default};
diff --git a/web/settings/assets/counter-bc776e4a.js b/web/settings/assets/counter-ba8a04c3.js
similarity index 89%
rename from web/settings/assets/counter-bc776e4a.js
rename to web/settings/assets/counter-ba8a04c3.js
index a68571a12c..3d21119b9d 100644
--- a/web/settings/assets/counter-bc776e4a.js
+++ b/web/settings/assets/counter-ba8a04c3.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as t,k as l,l as d,D as r,N as i,y as n,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"};function b(o,e,g,v,M,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return l(),d("div",f,[r(s,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für SMA-HM/EM Zähler ")])),_:1}),r(a,{title:"Seriennummer","model-value":o.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.serials"))},{help:i(()=>e[2]||(e[2]=[n(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),c("br",null,null,-1),n(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")])),_:1},8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{$ as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as t,k as l,l as d,D as r,N as i,y as n,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmCounter",mixins:[p]},f={class:"device-smahm-counter"};function b(o,e,g,v,M,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return l(),d("div",f,[r(s,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für SMA-HM/EM Zähler ")])),_:1}),r(a,{title:"Seriennummer","model-value":o.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.serials"))},{help:i(()=>e[2]||(e[2]=[n(" Eine Seriennummer ist nur erforderlich, wenn mehrere SMA HomeManager in Betrieb sind."),c("br",null,null,-1),n(" Funktioniert auch mit Energy Meter anstatt Home Manager. ")])),_:1},8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-86f04938.js b/web/settings/assets/counter-c0af0a6f.js
similarity index 85%
rename from web/settings/assets/counter-86f04938.js
rename to web/settings/assets/counter-c0af0a6f.js
index 389045ff4e..1678d06fa5 100644
--- a/web/settings/assets/counter-86f04938.js
+++ b/web/settings/assets/counter-c0af0a6f.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronCounter",mixins:[p]},_={class:"device-victron-counter"};function f(o,e,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Zähler ")])),_:1}),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":o.component.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const N=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{N as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronCounter",mixins:[p]},_={class:"device-victron-counter"};function f(o,e,g,v,C,V){const r=t("openwb-base-heading"),u=t("openwb-base-number-input"),s=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Zähler ")])),_:1}),i(u,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(s,{title:"Messgerät",buttons:[{buttonValue:!1,text:"AC-In Victron GX"},{buttonValue:!0,text:"Energy Meter"}],"model-value":o.component.configuration.energy_meter,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.energy_meter"))},null,8,["model-value"])])}const N=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-277eabf6.js b/web/settings/assets/counter-c3082628.js
similarity index 92%
rename from web/settings/assets/counter-277eabf6.js
rename to web/settings/assets/counter-c3082628.js
index f67857c118..aa26f9c7ed 100644
--- a/web/settings/assets/counter-277eabf6.js
+++ b/web/settings/assets/counter-c3082628.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as r,k as m,l as g,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerCounter",mixins:[s]},_={class:"device-vzlogger-counter"};function c(n,e,b,v,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[t(a,null,{default:l(()=>e[3]||(e[3]=[u(" Einstellungen für VZLogger Zähler ")])),_:1}),t(p,{subtype:"info"},{default:l(()=>e[4]||(e[4]=[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":n.component.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const E=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{E as default};
+import{C as s}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as r,k as m,l as g,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerCounter",mixins:[s]},_={class:"device-vzlogger-counter"};function c(n,e,b,v,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[t(a,null,{default:l(()=>e[3]||(e[3]=[u(" Einstellungen für VZLogger Zähler ")])),_:1}),t(p,{subtype:"info"},{default:l(()=>e[4]||(e[4]=[u(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),t(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.line_power"))},null,8,["model-value"]),t(i,{title:"Zeile der Einspeisung",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.line_exported"))},null,8,["model-value"]),t(i,{title:"Zeile des Bezugs",min:0,"model-value":n.component.configuration.line_imported,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.line_imported"))},null,8,["model-value"])])}const E=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/counter.vue"]]);export{E as default};
diff --git a/web/settings/assets/counter-e6014599.js b/web/settings/assets/counter-c51eaa64.js
similarity index 88%
rename from web/settings/assets/counter-e6014599.js
rename to web/settings/assets/counter-c51eaa64.js
index 374ef1e0a9..a25d1c9be5 100644
--- a/web/settings/assets/counter-e6014599.js
+++ b/web/settings/assets/counter-c51eaa64.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as a,l as m,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyCounter",mixins:[p]},_={class:"device-sunnyboy-counter"};function b(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return a(),m("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const S=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{S as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as n,k as a,l as m,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoyCounter",mixins:[p]},_={class:"device-sunnyboy-counter"};function b(o,e,f,v,y,g){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return a(),m("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für SMA Sunny Boy/Tripower Zähler ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const S=u(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/counter.vue"]]);export{S as default};
diff --git a/web/settings/assets/counter-bff0132e.js b/web/settings/assets/counter-c6427879.js
similarity index 86%
rename from web/settings/assets/counter-bff0132e.js
rename to web/settings/assets/counter-c6427879.js
index 88334cf13d..d5ce2ed9d1 100644
--- a/web/settings/assets/counter-bff0132e.js
+++ b/web/settings/assets/counter-c6427879.js
@@ -1 +1 @@
-import{C as o}from"./HardwareInstallation-70f156e6.js";import{_ as s,u as n,k as r,l as i,D as a,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalSemCounter",mixins:[o]},l={class:"device-kostal-sem-counter"};function d(_,e,u,f,b,h){const t=n("openwb-base-alert");return r(),i("div",l,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")])),_:1})])}const D=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{D as default};
+import{C as o}from"./HardwareInstallation-d2c0f1d5.js";import{_ as s,u as n,k as r,l as i,D as a,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceKostalSemCounter",mixins:[o]},l={class:"device-kostal-sem-counter"};function d(_,e,u,f,b,h){const t=n("openwb-base-alert");return r(),i("div",l,[a(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(" Diese Komponente ist nur richtig, wenn der Zähler NICHT direkt am Wechselrichter (Kostal Plenticore) angeschlossen ist und daher separat abgefragt werden muss. ")])),_:1})])}const D=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter-9fcc4ae5.js b/web/settings/assets/counter-c81118fb.js
similarity index 88%
rename from web/settings/assets/counter-9fcc4ae5.js
rename to web/settings/assets/counter-c81118fb.js
index dcf436b2dc..376ed30a16 100644
--- a/web/settings/assets/counter-9fcc4ae5.js
+++ b/web/settings/assets/counter-c81118fb.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as s,u as n,k as i,l as a,D as p,N as c,y as o,x as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPikoCounter",mixins:[r]},u={class:"device-kostal-piko-counter"};function _(d,e,f,b,h,k){const t=n("openwb-base-alert");return i(),a("div",u,[p(t,{subtype:"info"},{default:c(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const Z=s(l,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{Z as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as s,u as n,k as i,l as a,D as p,N as c,y as o,x as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceKostalPikoCounter",mixins:[r]},u={class:"device-kostal-piko-counter"};function _(d,e,f,b,h,k){const t=n("openwb-base-alert");return i(),a("div",u,[p(t,{subtype:"info"},{default:c(()=>e[0]||(e[0]=[o(" Wenn der Zähler im Hausverbrauchs-Zweig installiert ist, muss die Hierarchie wie im "),m("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"},"Wiki für Hausverbrauchs-Zähler",-1),o(" beschrieben, angeordnet werden. ")])),_:1})])}const Z=s(l,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/counter.vue"]]);export{Z as default};
diff --git a/web/settings/assets/counter-865f9c61.js b/web/settings/assets/counter-cc4b4212.js
similarity index 97%
rename from web/settings/assets/counter-865f9c61.js
rename to web/settings/assets/counter-cc4b4212.js
index 4afa51eec5..c2d08151e0 100644
--- a/web/settings/assets/counter-865f9c61.js
+++ b/web/settings/assets/counter-cc4b4212.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as s,k as p,l as g,D as i,N as a,y as n,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpCounter",mixins:[u]},b={class:"device-http-counter"};function f(t,e,w,v,k,S){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),g("div",b,[i(d,null,{default:a(()=>e[6]||(e[6]=[n(" Einstellungen für Http Zähler ")])),_:1}),i(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>e[9]||(e[9]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l1_path,"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>e[10]||(e[10]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l2_path,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>e[11]||(e[11]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l3_path,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>e[12]||(e[12]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const F=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{F as default};
+import{C as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as s,k as p,l as g,D as i,N as a,y as n,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpCounter",mixins:[u]},b={class:"device-http-counter"};function f(t,e,w,v,k,S){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),g("div",b,[i(d,null,{default:a(()=>e[6]||(e[6]=[n(" Einstellungen für Http Zähler ")])),_:1}),i(o,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.power_path"))},{help:a(()=>e[7]||(e[7]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Bezug",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.imported_path,"onUpdate:modelValue":e[1]||(e[1]=r=>t.updateConfiguration(r,"configuration.imported_path"))},{help:a(()=>e[8]||(e[8]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Zählerstand Einspeisung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[2]||(e[2]=r=>t.updateConfiguration(r,"configuration.exported_path"))},{help:a(()=>e[9]||(e[9]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 1",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l1_path,"onUpdate:modelValue":e[3]||(e[3]=r=>t.updateConfiguration(r,"configuration.current_l1_path"))},{help:a(()=>e[10]||(e[10]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 1. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 2",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l2_path,"onUpdate:modelValue":e[4]||(e[4]=r=>t.updateConfiguration(r,"configuration.current_l2_path"))},{help:a(()=>e[11]||(e[11]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 2. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"]),i(o,{title:"Pfad für Strom Phase 3",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.current_l3_path,"onUpdate:modelValue":e[5]||(e[5]=r=>t.updateConfiguration(r,"configuration.current_l3_path"))},{help:a(()=>e[12]||(e[12]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),l("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Stromstärke der 3. Phase in Ampere darstellt."),l("br",null,null,-1),n(" Wird dieses Feld leer gelassen, werden keine Phasenströme ermittelt und es kann kein Lastmanagement berechnet werden! ")])),_:1},8,["model-value"])])}const F=m(h,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/counter.vue"]]);export{F as default};
diff --git a/web/settings/assets/counter-8757edbf.js b/web/settings/assets/counter-e25a696d.js
similarity index 90%
rename from web/settings/assets/counter-8757edbf.js
rename to web/settings/assets/counter-e25a696d.js
index 7fa085ac16..bc05cde8ee 100644
--- a/web/settings/assets/counter-8757edbf.js
+++ b/web/settings/assets/counter-e25a696d.js
@@ -1 +1 @@
-import{C as n}from"./HardwareInstallation-70f156e6.js";import{_ as s,u as a,k as i,l,D as p,N as c,x as e,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceSolarLogCounter",mixins:[n]},u={class:"device-solar_log-counter"};function d(_,o,g,h,f,b){const t=a("openwb-base-alert");return i(),l("div",u,[p(t,{subtype:"info"},{default:c(()=>o[0]||(o[0]=[e("span",{class:"text-danger"},[r(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),e("br")],-1),r(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),e("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1),r(". ")])),_:1})])}const N=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{N as default};
+import{C as n}from"./HardwareInstallation-d2c0f1d5.js";import{_ as s,u as a,k as i,l,D as p,N as c,x as e,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceSolarLogCounter",mixins:[n]},u={class:"device-solar_log-counter"};function d(_,o,g,h,f,b){const t=a("openwb-base-alert");return i(),l("div",u,[p(t,{subtype:"info"},{default:c(()=>o[0]||(o[0]=[e("span",{class:"text-danger"},[r(" Solar-Log Zähler geben keine Ströme aus, sodass nur ein Lastmanagement anhand der Gesamtleistung, aber nicht phasenbasiert möglich ist."),e("br")],-1),r(" Solar-Log Zähler sind Hausverbrauchs-Zähler. Um die Werte am EVU-Punkt zu ermitteln, muss ein virtueller Zähler konfiguriert werden. Eine Beispiel-Konfiguration mit Solar-Log Zähler findest Du im "),e("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"}," Wiki für Hausverbrauchs-Zähler ",-1),r(". ")])),_:1})])}const N=s(m,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-7a3ba47e.js b/web/settings/assets/counter-e64707f3.js
similarity index 90%
rename from web/settings/assets/counter-7a3ba47e.js
rename to web/settings/assets/counter-e64707f3.js
index 38f1b446ac..5e5ef5f035 100644
--- a/web/settings/assets/counter-7a3ba47e.js
+++ b/web/settings/assets/counter-e64707f3.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as t,k as m,l as d,D as o,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(n,e,b,g,v,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return m(),d("div",_,[o(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für virtuelle Zähler ")])),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":n.component.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>e[2]||(e[2]=[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")])),_:1},8,["model-value"])])}const N=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{N as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as t,k as m,l as d,D as o,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceVirtualCounter",mixins:[p]},_={class:"device-virtual-counter"};function f(n,e,b,g,v,h){const s=t("openwb-base-heading"),a=t("openwb-base-number-input");return m(),d("div",_,[o(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für virtuelle Zähler ")])),_:1}),o(a,{title:"Zusätzlicher Verbrauch",min:0,step:.05,unit:"kW",required:"","model-value":n.component.configuration.external_consumption/1e3,"onUpdate:modelValue":e[0]||(e[0]=u=>n.updateConfiguration(u*1e3,"configuration.external_consumption"))},{help:i(()=>e[2]||(e[2]=[r(" Die hier angegebene Leistung wird pauschal zu dem Leistungen der hinter dem Zähler liegenden Komponenten addiert. Damit lässt sich z. B. eine Reserve für nicht erfasste Verbraucher einstellen. ")])),_:1},8,["model-value"])])}const N=l(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/virtual/counter.vue"]]);export{N as default};
diff --git a/web/settings/assets/counter-46612257.js b/web/settings/assets/counter-e6bce9f3.js
similarity index 89%
rename from web/settings/assets/counter-46612257.js
rename to web/settings/assets/counter-e6bce9f3.js
index fe7f68c8f4..c84465afd5 100644
--- a/web/settings/assets/counter-46612257.js
+++ b/web/settings/assets/counter-e6bce9f3.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},v={class:"device-openwb-evukit-counter"};function _(o,e,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Zähler ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as t,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitCounter",mixins:[r]},v={class:"device-openwb-evukit-counter"};function _(o,e,f,b,w,x){const i=t("openwb-base-heading"),s=t("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Zähler ")])),_:1}),n(s,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:3,text:"B23"},{value:1,text:"Lovato"},{value:0,text:"MPM3PM"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/counter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/counter-c8cb4ab4.js b/web/settings/assets/counter-e88fdbc7.js
similarity index 82%
rename from web/settings/assets/counter-c8cb4ab4.js
rename to web/settings/assets/counter-e88fdbc7.js
index a4499b1b1d..3f192248ee 100644
--- a/web/settings/assets/counter-c8cb4ab4.js
+++ b/web/settings/assets/counter-e88fdbc7.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as o,k as d,l,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(n,e,b,v,g,w){const p=o("openwb-base-heading"),r=o("openwb-base-number-input");return d(),l("div",_,[t(p,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")])),_:1}),t(r,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[s(' EID für "net-consumption" ')])),_:1},8,["model-value"])])}const I=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{I as default};
+import{C as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as o,k as d,l,D as t,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseCounter",mixins:[m]},_={class:"device-enphase-counter"};function f(n,e,b,v,g,w){const p=o("openwb-base-heading"),r=o("openwb-base-number-input");return d(),l("div",_,[t(p,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für Enphase Envoy / IQ Gateway Zähler ")])),_:1}),t(r,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[s(' EID für "net-consumption" ')])),_:1},8,["model-value"])])}const I=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/counter.vue"]]);export{I as default};
diff --git a/web/settings/assets/counter-9ff0cd5b.js b/web/settings/assets/counter-edc80b67.js
similarity index 85%
rename from web/settings/assets/counter-9ff0cd5b.js
rename to web/settings/assets/counter-edc80b67.js
index c8fe8b36cc..427a07828d 100644
--- a/web/settings/assets/counter-9ff0cd5b.js
+++ b/web/settings/assets/counter-edc80b67.js
@@ -1 +1 @@
-import{C as o}from"./HardwareInstallation-70f156e6.js";import{_ as n,u as i,k as s,l as a,D as r,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceJanitzaBat",mixins:[o]},u={class:"device-janitza-counter"};function _(d,e,f,l,v,b){const t=i("openwb-base-alert");return s(),a("div",u,[r(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')])),_:1})])}const D=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{D as default};
+import{C as o}from"./HardwareInstallation-d2c0f1d5.js";import{_ as n,u as i,k as s,l as a,D as r,N as p,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"DeviceJanitzaBat",mixins:[o]},u={class:"device-janitza-counter"};function _(d,e,f,l,v,b){const t=i("openwb-base-alert");return s(),a("div",u,[r(t,{subtype:"info"},{default:p(()=>e[0]||(e[0]=[c(' ModbusTCP muss im Janitza auf Port 502 aktiv und die ID auf "1" eingestellt sein. ')])),_:1})])}const D=n(m,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/counter.vue"]]);export{D as default};
diff --git a/web/settings/assets/counter_sm-46c91fda.js b/web/settings/assets/counter_sm-187d65ee.js
similarity index 95%
rename from web/settings/assets/counter_sm-46c91fda.js
rename to web/settings/assets/counter_sm-187d65ee.js
index cfbf50b045..cdb8e700f8 100644
--- a/web/settings/assets/counter_sm-46c91fda.js
+++ b/web/settings/assets/counter_sm-187d65ee.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as f,u as i,k as g,l as c,D as o,N as a,y as t,x as l,z as b}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},v={class:"device-fronius-counter-sm"},w=["href"];function D(n,e,M,k,S,s){const d=i("openwb-base-heading"),m=i("openwb-base-select-input"),u=i("openwb-base-number-input");return g(),c("div",v,[o(d,null,{default:a(()=>e[2]||(e[2]=[t(" Einstellungen für Fronius SmartMeter ")])),_:1}),o(m,{title:"Kompatibilitätsmodus","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":n.component.configuration.variant,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.variant"))},{help:a(()=>e[3]||(e[3]=[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")])),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":n.component.configuration.meter_id,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[e[4]||(e[4]=t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. ")),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},b(s.meterRealtimeUrl),9,w),e[5]||(e[5]=l("br",null,null,-1)),e[6]||(e[6]=t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. '))]),_:1},8,["model-value"])])}const U=f(_,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{U as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as f,u as i,k as g,l as c,D as o,N as a,y as t,x as l,z as b}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFroniusCounterSM",mixins:[p],computed:{meterRealtimeUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System`}}}},v={class:"device-fronius-counter-sm"},w=["href"];function D(n,e,M,k,S,s){const d=i("openwb-base-heading"),m=i("openwb-base-select-input"),u=i("openwb-base-number-input");return g(),c("div",v,[o(d,null,{default:a(()=>e[2]||(e[2]=[t(" Einstellungen für Fronius SmartMeter ")])),_:1}),o(m,{title:"Kompatibilitätsmodus","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Aus"},{value:1,text:"Variante 1"},{value:2,text:"Variante 2"}],"model-value":n.component.configuration.variant,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.variant"))},{help:a(()=>e[3]||(e[3]=[t(" Gegebenenfalls auch für alte Modelle nach einem Softwareupdate erforderlich. Fronius hat derzeit keine Konsistente Schnittstelle. Speziell beim Gen24 kann Variante 1 oder 2 erforderlich sein. Nach speichern sollten nach etwa 10-20 Sekunden Daten angezeigt werden. Ist dies nicht der Fall die andere Variante ausprobieren. ")])),_:1},8,["model-value"]),o(u,{title:"Meter ID",required:"",min:"0",max:"65535","model-value":n.component.configuration.meter_id,"onUpdate:modelValue":e[1]||(e[1]=r=>n.updateConfiguration(r,"configuration.meter_id"))},{help:a(()=>[e[4]||(e[4]=t(" Die Meter ID des SmartMeters. Diese ist normalerweise 1. Bei mehreren SmartMetern im System kann es notwendig sein, die Meter ID zu ändern. Zur Ermittlung kann der folgende Link verwendet werden. Die Meter ID kann den zurückgegebenen JSON Daten entnommen werden. ")),l("a",{href:s.meterRealtimeUrl,target:"_blank",rel:"noopener noreferrer"},b(s.meterRealtimeUrl),9,w),e[5]||(e[5]=l("br",null,null,-1)),e[6]||(e[6]=t(' Im Abschnitt "Body" -> "Data" werden die installierten SmartMeter mit aktuellen Messwerten angezeigt. Die Meter ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Messwerten. '))]),_:1},8,["model-value"])])}const U=f(_,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/counter_sm.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-1a463b8a.js b/web/settings/assets/device-001cee36.js
similarity index 87%
rename from web/settings/assets/device-1a463b8a.js
rename to web/settings/assets/device-001cee36.js
index 38f822bcab..73eb477bcd 100644
--- a/web/settings/assets/device-1a463b8a.js
+++ b/web/settings/assets/device-001cee36.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as t,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(o,e,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SMA Webbox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=r(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{h as default};
+import{D as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as r,u as t,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmaWebbox",mixins:[p]},_={class:"device-sma-webbox"};function b(o,e,f,v,x,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SMA Webbox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=r(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_webbox/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-70dec769.js b/web/settings/assets/device-050e3366.js
similarity index 92%
rename from web/settings/assets/device-70dec769.js
rename to web/settings/assets/device-050e3366.js
index 42ab78a447..320692a9cb 100644
--- a/web/settings/assets/device-70dec769.js
+++ b/web/settings/assets/device-050e3366.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as r,k as d,l as m,D as i,N as s,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPikoOld",mixins:[u]},v={class:"device-kostal-piko-old"};function c(o,e,g,b,k,w){const a=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",v,[i(a,null,{default:s(()=>e[3]||(e[3]=[l(" Einstellungen für Kostal Piko (alte Generation) ")])),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.url"))},{help:s(()=>e[4]||(e[4]=[l(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')])),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=p(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{$ as default};
+import{D as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as r,k as d,l as m,D as i,N as s,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPikoOld",mixins:[u]},v={class:"device-kostal-piko-old"};function c(o,e,g,b,k,w){const a=r("openwb-base-heading"),n=r("openwb-base-text-input");return d(),m("div",v,[i(a,null,{default:s(()=>e[3]||(e[3]=[l(" Einstellungen für Kostal Piko (alte Generation) ")])),_:1}),i(n,{title:"URL",subtype:"url",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.url"))},{help:s(()=>e[4]||(e[4]=[l(' Es wird eine komplette URL inklusive Protokoll erwartet. Normalerweise ist der Wechselrichter über "http://IP" zu erreichen. ')])),_:1},8,["model-value"]),i(n,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const $=p(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko_old/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-a159510e.js b/web/settings/assets/device-0ab7f57f.js
similarity index 84%
rename from web/settings/assets/device-a159510e.js
rename to web/settings/assets/device-0ab7f57f.js
index 287a0a4fed..8977421870 100644
--- a/web/settings/assets/device-a159510e.js
+++ b/web/settings/assets/device-0ab7f57f.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[a]},v={class:"device-victron"};function f(o,e,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",v,[i(r,null,{default:m(()=>e[2]||(e[2]=[c(" Einstellungen für Victron ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{E as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceVictron",mixins:[a]},v={class:"device-victron"};function f(o,e,b,g,w,x){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",v,[i(r,null,{default:m(()=>e[2]||(e[2]=[c(" Einstellungen für Victron ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-ac3617bf.js b/web/settings/assets/device-0d76517c.js
similarity index 86%
rename from web/settings/assets/device-ac3617bf.js
rename to web/settings/assets/device-0d76517c.js
index af4b1cfaca..71772457a5 100644
--- a/web/settings/assets/device-ac3617bf.js
+++ b/web/settings/assets/device-0d76517c.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJanitza",mixins:[d]},v={class:"device-janitza"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Janitza ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{N as default};
+import{D as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceJanitza",mixins:[d]},v={class:"device-janitza"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Janitza ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/janitza/janitza/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-2fe61a6a.js b/web/settings/assets/device-1b2872e2.js
similarity index 92%
rename from web/settings/assets/device-2fe61a6a.js
rename to web/settings/assets/device-1b2872e2.js
index dfd9f5493e..389df84166 100644
--- a/web/settings/assets/device-2fe61a6a.js
+++ b/web/settings/assets/device-1b2872e2.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as m,l as b,D as i,N as s,y as r,x as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceHuawei",mixins:[l]},c={class:"device-huawei"};function g(n,e,_,w,D,h){const u=t("openwb-base-heading"),d=t("openwb-base-text-input"),a=t("openwb-base-number-input");return m(),b("div",c,[i(u,null,{default:s(()=>e[3]||(e[3]=[r(" Einstellungen für Huawei ")])),_:1}),i(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:s(()=>e[4]||(e[4]=[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),f("br",null,null,-1),r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")])),_:1},8,["model-value"])])}const q=p(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{q as default};
+import{D as l}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as t,k as m,l as b,D as i,N as s,y as r,x as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceHuawei",mixins:[l]},c={class:"device-huawei"};function g(n,e,_,w,D,h){const u=t("openwb-base-heading"),d=t("openwb-base-text-input"),a=t("openwb-base-number-input");return m(),b("div",c,[i(u,null,{default:s(()=>e[3]||(e[3]=[r(" Einstellungen für Huawei ")])),_:1}),i(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:s(()=>e[4]||(e[4]=[r(' Sind mehrere Huawei Wechselrichter als "Schwarm" verbunden, dann besitzt der Master vermutlich die ID "16". Über diese ID werden dann alle Daten in Summe zur Verfügung gestellt.'),f("br",null,null,-1),r(" Die IDs 1 bis 15 sind für einzelne Wechselrichter reserviert. ")])),_:1},8,["model-value"])])}const q=p(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-87e58e62.js b/web/settings/assets/device-1b821174.js
similarity index 92%
rename from web/settings/assets/device-87e58e62.js
rename to web/settings/assets/device-1b821174.js
index 800371d184..9b5f5dc09d 100644
--- a/web/settings/assets/device-87e58e62.js
+++ b/web/settings/assets/device-1b821174.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as i,k as b,l as f,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemensSentron",mixins:[m]},v={class:"device-siemens-sentron"};function c(n,e,g,w,C,D){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(u,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens Sentron ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const E=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{E as default};
+import{D as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as i,k as b,l as f,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemensSentron",mixins:[m]},v={class:"device-siemens-sentron"};function c(n,e,g,w,C,D){const u=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(u,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens Sentron ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(' Derzeit werden nur Messgeräte vom Typ "7KM PAC2200" mit Ethernet-Schnittstelle unterstützt. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"])])}const E=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens_sentron/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-e9766b50.js b/web/settings/assets/device-1e1551ac.js
similarity index 92%
rename from web/settings/assets/device-e9766b50.js
rename to web/settings/assets/device-1e1551ac.js
index 56e5d6fd98..bb3020bd9a 100644
--- a/web/settings/assets/device-e9766b50.js
+++ b/web/settings/assets/device-1e1551ac.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as n,k as c,l as f,D as o,N as l,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(t,e,g,h,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return c(),f("div",v,[o(r,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für Shelly ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shellys der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren","not-selected":"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":t.device.configuration.factor,required:"","onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.factor"))},{help:l(()=>e[4]||(e[4]=[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")])),_:1},8,["model-value"])])}const P=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{P as default};
+import{D as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as n,k as c,l as f,D as o,N as l,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceShelly",mixins:[u]},v={class:"device-shelly"};function b(t,e,g,h,w,y){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-select-input");return c(),f("div",v,[o(r,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für Shelly ")])),_:1}),o(a,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(" Unterstützt werden theoretisch alle ein- und dreiphasigen Shellys der Generation 1-3. Getestete Modelle sind Shelly 1pm, 1pm plus, Pro Pro 3EM, Plug S. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),o(d,{title:"Vorzeichen invertieren","not-selected":"Bitte auswählen",options:[{value:-1,text:"ja"},{value:1,text:"nein"}],"model-value":t.device.configuration.factor,required:"","onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.factor"))},{help:l(()=>e[4]||(e[4]=[s(" Einige Shelly Modelle liefern die Leistung mit umgedrehtem Vorzeichen. Falls dies der Fall sein sollte, das Vorzeichen invertieren. ")])),_:1},8,["model-value"])])}const P=m(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/shelly/shelly/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-b14a6820.js b/web/settings/assets/device-1e35dcd3.js
similarity index 89%
rename from web/settings/assets/device-b14a6820.js
rename to web/settings/assets/device-1e35dcd3.js
index c04d8ec543..f20d11e3bc 100644
--- a/web/settings/assets/device-b14a6820.js
+++ b/web/settings/assets/device-1e35dcd3.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as t,k as m,l as d,D as i,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(o,e,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return m(),d("div",f,[i(a,null,{default:u(()=>e[2]||(e[2]=[c(" Einstellungen für Solarmax ")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{E as default};
+import{D as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as t,k as m,l as d,D as i,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarmax",mixins:[p]},f={class:"device-solarmax"};function b(o,e,v,g,x,w){const a=t("openwb-base-heading"),r=t("openwb-base-text-input"),s=t("openwb-base-number-input");return m(),d("div",f,[i(a,null,{default:u(()=>e[2]||(e[2]=[c(" Einstellungen für Solarmax ")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=l(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-939b0ad1.js b/web/settings/assets/device-1ffd2759.js
similarity index 95%
rename from web/settings/assets/device-939b0ad1.js
rename to web/settings/assets/device-1ffd2759.js
index a683c91767..aa6c6615a1 100644
--- a/web/settings/assets/device-939b0ad1.js
+++ b/web/settings/assets/device-1ffd2759.js
@@ -1 +1 @@
-import{D as v}from"./HardwareInstallation-70f156e6.js";import{_ as g,u as o,k as m,l as _,D as s,N as u,y as i,x as n,z as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"DeviceSonnenbatterie",mixins:[v],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},k={class:"device-sonnenbatterie"},w={style:{display:"block"}},B=["href"],J=["href"],R=["href"],I=["href"];function P(r,e,x,h,z,t){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),f=o("openwb-base-text-input"),b=o("openwb-base-select-input");return m(),_("div",k,[s(d,null,{default:u(()=>e[2]||(e[2]=[i(" Einstellungen für SonnenBatterie ")])),_:1}),s(p,{subtype:"info"},{default:u(()=>e[3]||(e[3]=[i(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')])),_:1}),s(f,{title:"IP oder Hostname",subtype:"host",required:"","model-value":r.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>r.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),s(b,{title:"Datenverbindung",required:"","not-selected":"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":r.device.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=a=>r.updateConfiguration(a,"configuration.variant"))},{help:u(()=>[n("span",w,[e[4]||(e[4]=i(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:")),e[5]||(e[5]=n("br",null,null,-1)),e[6]||(e[6]=i(" Rest-API 1: ")),n("a",{href:t.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi1),9,B),e[7]||(e[7]=n("br",null,null,-1)),e[8]||(e[8]=i(" Rest-API 2: ")),n("a",{href:t.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi2),9,J),e[9]||(e[9]=n("br",null,null,-1)),e[10]||(e[10]=i(" JSON-API v1: ")),n("a",{href:t.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi1),9,R),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=i(" JSON-API v2: ")),n("a",{href:t.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi2),9,I)])]),_:1},8,["model-value"])])}const U=g(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{U as default};
+import{D as v}from"./HardwareInstallation-d2c0f1d5.js";import{_ as g,u as o,k as m,l as _,D as s,N as u,y as i,x as n,z as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"DeviceSonnenbatterie",mixins:[v],computed:{linkRestApi1(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery"},linkRestApi2(){return"http://"+this.device.configuration.ip_address+":7979/rest/devices/battery/M05"},linkJsonApi1(){return"http://"+this.device.configuration.ip_address+"/api/v1/status"},linkJsonApi2(){return"http://"+this.device.configuration.ip_address+"/api/v2/status"}}},k={class:"device-sonnenbatterie"},w={style:{display:"block"}},B=["href"],J=["href"],R=["href"],I=["href"];function P(r,e,x,h,z,t){const d=o("openwb-base-heading"),p=o("openwb-base-alert"),f=o("openwb-base-text-input"),b=o("openwb-base-select-input");return m(),_("div",k,[s(d,null,{default:u(()=>e[2]||(e[2]=[i(" Einstellungen für SonnenBatterie ")])),_:1}),s(p,{subtype:"info"},{default:u(()=>e[3]||(e[3]=[i(' Die Leistung steht nur in den Varianten "Rest-API 2" und "JSON-API" zur Verfügung. ')])),_:1}),s(f,{title:"IP oder Hostname",subtype:"host",required:"","model-value":r.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>r.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"]),s(b,{title:"Datenverbindung",required:"","not-selected":"Bitte auswählen",options:[{value:0,text:"Rest-API 1 (z.B. ECO 4)"},{value:2,text:"Rest-API 2 (z.B. ECO 6)"},{value:1,text:"JSON-API v1(z.B. ECO 8 oder 10)"},{value:3,text:"JSON-API v2(z.B. ECO 8 oder 10)"}],"model-value":r.device.configuration.variant,"onUpdate:modelValue":e[1]||(e[1]=a=>r.updateConfiguration(a,"configuration.variant"))},{help:u(()=>[n("span",w,[e[4]||(e[4]=i(" Je nach SonnenBatterie muss die richtige Datenverbindung ausgewählt werden. Folgende URLs werden zum Abruf der Daten genutzt und können auch manuell über einen Browser abgefragt werden, um die richtige Einstellung zu finden:")),e[5]||(e[5]=n("br",null,null,-1)),e[6]||(e[6]=i(" Rest-API 1: ")),n("a",{href:t.linkRestApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi1),9,B),e[7]||(e[7]=n("br",null,null,-1)),e[8]||(e[8]=i(" Rest-API 2: ")),n("a",{href:t.linkRestApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkRestApi2),9,J),e[9]||(e[9]=n("br",null,null,-1)),e[10]||(e[10]=i(" JSON-API v1: ")),n("a",{href:t.linkJsonApi1,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi1),9,R),e[11]||(e[11]=n("br",null,null,-1)),e[12]||(e[12]=i(" JSON-API v2: ")),n("a",{href:t.linkJsonApi2,target:"_blank",rel:"noopener noreferrer"},l(t.linkJsonApi2),9,I)])]),_:1},8,["model-value"])])}const U=g(A,[["render",P],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sonnen/sonnenbatterie/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-a018debc.js b/web/settings/assets/device-29ca0508.js
similarity index 91%
rename from web/settings/assets/device-a018debc.js
rename to web/settings/assets/device-29ca0508.js
index 92f6cf7e6e..a0250c80d8 100644
--- a/web/settings/assets/device-a018debc.js
+++ b/web/settings/assets/device-29ca0508.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as i,k as l,l as p,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalSEM",mixins:[d]},v={class:"device-kostal-sem"};function _(o,e,c,g,w,k){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",v,[t(s,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{B as default};
+import{D as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as i,k as l,l as p,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceKostalSEM",mixins:[d]},v={class:"device-kostal-sem"};function _(o,e,c,g,w,k){const s=i("openwb-base-heading"),r=i("openwb-base-text-input"),a=i("openwb-base-number-input");return l(),p("div",v,[t(s,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Kostal Smart Energy Meter oder TQ EM 410 ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const B=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_sem/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-51badd6c.js b/web/settings/assets/device-336ae19f.js
similarity index 89%
rename from web/settings/assets/device-51badd6c.js
rename to web/settings/assets/device-336ae19f.js
index f0b67e41bd..a372f25cc6 100644
--- a/web/settings/assets/device-51badd6c.js
+++ b/web/settings/assets/device-336ae19f.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as s,k as d,l as u,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(o,e,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Discovergy ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as s,k as d,l as u,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDiscovergy",mixins:[a]},v={class:"device-discovergy"};function f(o,e,g,_,b,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return d(),u("div",v,[n(r,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Discovergy ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-8308249d.js b/web/settings/assets/device-347eb6dc.js
similarity index 90%
rename from web/settings/assets/device-8308249d.js
rename to web/settings/assets/device-347eb6dc.js
index 7771053640..b189f4a57a 100644
--- a/web/settings/assets/device-8308249d.js
+++ b/web/settings/assets/device-347eb6dc.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as t,k as c,l as m,D as o,N as s,y as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalPiko",mixins:[d]},f={class:"device-kostal-piko"};function b(n,e,v,g,k,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input");return c(),m("div",f,[o(a,null,{default:s(()=>e[1]||(e[1]=[i(" Einstellungen für Kostal Piko ")])),_:1}),o(r,{subtype:"info"},{default:s(()=>e[2]||(e[2]=[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>n.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{$ as default};
+import{D as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as t,k as c,l as m,D as o,N as s,y as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceKostalPiko",mixins:[d]},f={class:"device-kostal-piko"};function b(n,e,v,g,k,h){const a=t("openwb-base-heading"),r=t("openwb-base-alert"),p=t("openwb-base-text-input");return c(),m("div",f,[o(a,null,{default:s(()=>e[1]||(e[1]=[i(" Einstellungen für Kostal Piko ")])),_:1}),o(r,{subtype:"info"},{default:s(()=>e[2]||(e[2]=[i(" Der Wechselrichter liefert Werte nur, solange er auch PV-Leistung liefert. Nachts geht er in den Standby. Die Hausanschlussüberwachung ist nur aktiv, wenn der Wechselrichter auch aktiv ist. ")])),_:1}),o(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=l=>n.updateConfiguration(l,"configuration.ip_address"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-c3ba2a50.js b/web/settings/assets/device-39bf739d.js
similarity index 89%
rename from web/settings/assets/device-c3ba2a50.js
rename to web/settings/assets/device-39bf739d.js
index 541f671fcb..332e557c40 100644
--- a/web/settings/assets/device-c3ba2a50.js
+++ b/web/settings/assets/device-39bf739d.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as l,l as u,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlex",mixins:[a]},c={class:"device-openwb-flex"};function f(o,e,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),r=t("openwb-base-number-input");return l(),u("div",c,[i(p,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für openWB-Flex ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{E as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as t,k as l,l as u,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceOpenwbFlex",mixins:[a]},c={class:"device-openwb-flex"};function f(o,e,v,w,g,x){const p=t("openwb-base-heading"),s=t("openwb-base-text-input"),r=t("openwb-base-number-input");return l(),u("div",c,[i(p,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für openWB-Flex ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-2a6323de.js b/web/settings/assets/device-3e6fa83c.js
similarity index 84%
rename from web/settings/assets/device-2a6323de.js
rename to web/settings/assets/device-3e6fa83c.js
index e4bc1430ca..3023fcee40 100644
--- a/web/settings/assets/device-2a6323de.js
+++ b/web/settings/assets/device-3e6fa83c.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSigenergy",mixins:[a]},_={class:"device-sigenergy"};function f(o,e,b,v,w,y){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",_,[i(r,null,{default:m(()=>e[2]||(e[2]=[g("Einstellungen für Sigenergy")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{E as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSigenergy",mixins:[a]},_={class:"device-sigenergy"};function f(o,e,b,v,w,y){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",_,[i(r,null,{default:m(()=>e[2]||(e[2]=[g("Einstellungen für Sigenergy")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const E=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-5dc8caee.js b/web/settings/assets/device-3f7e40af.js
similarity index 93%
rename from web/settings/assets/device-5dc8caee.js
rename to web/settings/assets/device-3f7e40af.js
index 2f363b5251..9390c607d7 100644
--- a/web/settings/assets/device-5dc8caee.js
+++ b/web/settings/assets/device-3f7e40af.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as i,k as m,l as g,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolax",mixins:[u]},f={class:"device-solax"};function v(o,e,c,_,x,w){const d=i("openwb-base-heading"),l=i("openwb-base-text-input"),a=i("openwb-base-number-input");return m(),g("div",f,[t(d,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für Solax ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",min:1,max:65535,placeholder:502,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},{help:r(()=>e[4]||(e[4]=[s(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")])),_:1},8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":o.device.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:r(()=>e[5]||(e[5]=[s(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")])),_:1},8,["model-value"])])}const h=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{h as default};
+import{D as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as i,k as m,l as g,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolax",mixins:[u]},f={class:"device-solax"};function v(o,e,c,_,x,w){const d=i("openwb-base-heading"),l=i("openwb-base-text-input"),a=i("openwb-base-number-input");return m(),g("div",f,[t(d,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für Solax ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",min:1,max:65535,placeholder:502,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},{help:r(()=>e[4]||(e[4]=[s(" Standardmäßig ist der Port 502. Dieser sollte nur geändert werden, wenn der Solax Wechselrichter auf einen anderen Port konfiguriert wurde. ")])),_:1},8,["model-value"]),t(a,{title:"Modbus-ID",required:"",min:0,max:255,"model-value":o.device.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},{help:r(()=>e[5]||(e[5]=[s(" Laut der Schnittstellenbeschreibung ist die ID bei Solax ab Werk auf 1 gesetzt. Entgegen der Beschreibung ist meist für Gen4 eine ID größer als 2 eingestellt. Bei Gen3 sogar (gegen jeglicher Modbus Standards) eine 0. ")])),_:1},8,["model-value"])])}const h=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solax/solax/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-2045e148.js b/web/settings/assets/device-40022210.js
similarity index 84%
rename from web/settings/assets/device-2045e148.js
rename to web/settings/assets/device-40022210.js
index cc48247b65..1029351bb5 100644
--- a/web/settings/assets/device-2045e148.js
+++ b/web/settings/assets/device-40022210.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[a]},f={class:"device-fox_ess"};function b(o,e,v,g,x,w){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_("Einstellungen für FoxEss")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{y as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceFoxEss",mixins:[a]},f={class:"device-fox_ess"};function b(o,e,v,g,x,w){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),p=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_("Einstellungen für FoxEss")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])])}const y=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-1eaab064.js b/web/settings/assets/device-4a3195eb.js
similarity index 89%
rename from web/settings/assets/device-1eaab064.js
rename to web/settings/assets/device-4a3195eb.js
index cffae14242..9ee983eec9 100644
--- a/web/settings/assets/device-1eaab064.js
+++ b/web/settings/assets/device-4a3195eb.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as o,k as u,l as m,D as i,N as r,y as t,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceHttp",mixins:[d]},v={class:"device-http"};function _(n,e,b,g,x,w){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return u(),m("div",v,[i(s,null,{default:r(()=>e[1]||(e[1]=[t(" Einstellungen für Http ")])),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.url"))},{help:r(()=>e[2]||(e[2]=[t(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),c("br",null,null,-1),t(" Beispiel: http://mein.server:8080 ")])),_:1},8,["model-value"])])}const y=l(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{y as default};
+import{D as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as o,k as u,l as m,D as i,N as r,y as t,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceHttp",mixins:[d]},v={class:"device-http"};function _(n,e,b,g,x,w){const s=o("openwb-base-heading"),p=o("openwb-base-text-input");return u(),m("div",v,[i(s,null,{default:r(()=>e[1]||(e[1]=[t(" Einstellungen für Http ")])),_:1}),i(p,{title:"Server-URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.url"))},{help:r(()=>e[2]||(e[2]=[t(" Hier sind die Verbindungsangaben für den Http-Server einzutragen. Der Pfad für die einzelnen Daten wird in der Komponente hinterlegt."),c("br",null,null,-1),t(" Beispiel: http://mein.server:8080 ")])),_:1},8,["model-value"])])}const y=l(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-b07f9cfe.js b/web/settings/assets/device-4b1646f2.js
similarity index 93%
rename from web/settings/assets/device-b07f9cfe.js
rename to web/settings/assets/device-4b1646f2.js
index 7247c86c83..26b3bb3bf2 100644
--- a/web/settings/assets/device-b07f9cfe.js
+++ b/web/settings/assets/device-4b1646f2.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as o,k as b,l as c,D as t,N as s,y as r,x as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolarEdge",mixins:[u]},_={class:"device-solaredge"};function v(n,e,w,h,B,k){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),p=o("openwb-base-text-input"),l=o("openwb-base-number-input");return b(),c("div",_,[t(a,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für SolarEdge ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),f("br",null,null,-1),r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren Smarthome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},{help:s(()=>e[4]||(e[4]=[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")])),_:1},8,["model-value"])])}const D=m(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{D as default};
+import{D as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as o,k as b,l as c,D as t,N as s,y as r,x as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSolarEdge",mixins:[u]},_={class:"device-solaredge"};function v(n,e,w,h,B,k){const a=o("openwb-base-heading"),d=o("openwb-base-alert"),p=o("openwb-base-text-input"),l=o("openwb-base-number-input");return b(),c("div",_,[t(a,null,{default:s(()=>e[2]||(e[2]=[r(" Einstellungen für SolarEdge ")])),_:1}),t(d,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[r(" ModbusTCP muss im Wechselrichter aktiviert werden und der Wechselrichter per LAN angebunden sein."),f("br",null,null,-1),r(" SolarEdge lässt nur eine ModbusTCP-Verbindung zu. Wenn Sie mit einem weiteren Smarthome-System, wie z.B. ioBroker oder openHAB, den SolarEdge-Wechselrichter abfragen, kann dies die Abfrage durch die openWB stören oder verhindern. ")])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.port"))},{help:s(()=>e[4]||(e[4]=[r(" Je nach Produktionsdatum und Softwareversion ist 502 oder 1502 ab Werk eingestellt. Bitte im Wechselrichter überprüfen. ")])),_:1},8,["model-value"])])}const D=m(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/device.vue"]]);export{D as default};
diff --git a/web/settings/assets/device-86c123c1.js b/web/settings/assets/device-4edac0ac.js
similarity index 86%
rename from web/settings/assets/device-86c123c1.js
rename to web/settings/assets/device-4edac0ac.js
index 9850854a6f..4526549e8b 100644
--- a/web/settings/assets/device-86c123c1.js
+++ b/web/settings/assets/device-4edac0ac.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSofar",mixins:[d]},v={class:"device-sofar"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f("Einstellungen für Sofar")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{y as default};
+import{D as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSofar",mixins:[d]},v={class:"device-sofar"};function _(o,e,c,g,w,C){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f("Einstellungen für Sofar")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sofar/sofar/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-f511f708.js b/web/settings/assets/device-51c91be0.js
similarity index 91%
rename from web/settings/assets/device-f511f708.js
rename to web/settings/assets/device-51c91be0.js
index d97255fe69..423a645619 100644
--- a/web/settings/assets/device-f511f708.js
+++ b/web/settings/assets/device-51c91be0.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as n,k as b,l as _,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(o,e,w,y,g,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return b(),_("div",f,[t(a,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für SMA Sunny Boy/Tripower ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{E as default};
+import{D as l}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as n,k as b,l as _,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyBoy",mixins:[l]},f={class:"device-sunnyboy"};function v(o,e,w,y,g,x){const a=n("openwb-base-heading"),p=n("openwb-base-alert"),d=n("openwb-base-text-input"),u=n("openwb-base-number-input");return b(),_("div",f,[t(a,null,{default:r(()=>e[2]||(e[2]=[s(" Einstellungen für SMA Sunny Boy/Tripower ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[3]||(e[3]=[s(' ModbusTCP muss entweder direkt am Wechselrichter, per Sunny Portal oder über das Tool "Sunny Explorer" aktiviert werden. Dies ist standardmäßig deaktiviert. ')])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(u,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=m(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-3ed84812.js b/web/settings/assets/device-51fdec5d.js
similarity index 86%
rename from web/settings/assets/device-3ed84812.js
rename to web/settings/assets/device-51fdec5d.js
index fbec935a80..9d561697ba 100644
--- a/web/settings/assets/device-3ed84812.js
+++ b/web/settings/assets/device-51fdec5d.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVarta",mixins:[d]},b={class:"device-varta"};function _(o,e,c,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Varta ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{y as default};
+import{D as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVarta",mixins:[d]},b={class:"device-varta"};function _(o,e,c,g,w,V){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return p(),l("div",b,[t(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Varta ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=u(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/varta/varta/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-53686a65.js b/web/settings/assets/device-5286bf60.js
similarity index 87%
rename from web/settings/assets/device-53686a65.js
rename to web/settings/assets/device-5286bf60.js
index f44dfc7e89..8cef005e22 100644
--- a/web/settings/assets/device-53686a65.js
+++ b/web/settings/assets/device-5286bf60.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartfox",mixins:[a]},f={class:"device-smartfox"};function _(o,e,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",f,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für Smartfox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{y as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as t,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartfox",mixins:[a]},f={class:"device-smartfox"};function _(o,e,v,x,b,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),m("div",f,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für Smartfox ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smartfox/smartfox/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-17812629.js b/web/settings/assets/device-5431b4e2.js
similarity index 87%
rename from web/settings/assets/device-17812629.js
rename to web/settings/assets/device-5431b4e2.js
index e3e5896264..2ea6f7533f 100644
--- a/web/settings/assets/device-17812629.js
+++ b/web/settings/assets/device-5431b4e2.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as i,k as p,l,D as t,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(o,e,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>e[3]||(e[3]=[_(" Einstellungen für Azzurro ZCS ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{U as default};
+import{D as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as i,k as p,l,D as t,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceZCS",mixins:[u]},f={class:"device-azzurro_zcs"};function b(o,e,v,g,z,w){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),l("div",f,[t(a,null,{default:m(()=>e[3]||(e[3]=[_(" Einstellungen für Azzurro ZCS ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/azzurro_zcs/azzurro_zcs/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-fd700d8f.js b/web/settings/assets/device-574dcaf4.js
similarity index 90%
rename from web/settings/assets/device-fd700d8f.js
rename to web/settings/assets/device-574dcaf4.js
index 5804ff4dae..b3825ee25b 100644
--- a/web/settings/assets/device-fd700d8f.js
+++ b/web/settings/assets/device-574dcaf4.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as d,l as m,D as i,N as l,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(o,e,b,v,w,x){const r=n("openwb-base-heading"),a=n("openwb-base-text-input"),s=n("openwb-base-number-input");return d(),m("div",g,[i(r,null,{default:l(()=>e[2]||(e[2]=[_(" Einstellungen für Huawei SmartLogger ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default};
+import{D as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as n,k as d,l as m,D as i,N as l,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLogger",mixins:[p]},g={class:"device-huawei-smart-logger"};function f(o,e,b,v,w,x){const r=n("openwb-base-heading"),a=n("openwb-base-text-input"),s=n("openwb-base-number-input");return d(),m("div",g,[i(r,null,{default:l(()=>e[2]||(e[2]=[_(" Einstellungen für Huawei SmartLogger ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=u(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-d8584875.js b/web/settings/assets/device-5762c828.js
similarity index 91%
rename from web/settings/assets/device-d8584875.js
rename to web/settings/assets/device-5762c828.js
index d33ec455f8..cddd325ef7 100644
--- a/web/settings/assets/device-d8584875.js
+++ b/web/settings/assets/device-5762c828.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as r,u as a,k as d,l as p,D as i,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceTesla",mixins:[l]},v={class:"device-tesla"};function c(o,e,g,b,_,w){const s=a("openwb-base-heading"),n=a("openwb-base-text-input");return d(),p("div",v,[i(s,null,{default:u(()=>e[3]||(e[3]=[m(" Einstellungen für Tesla ")])),_:1}),i(n,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(n,{title:"E-Mail",subtype:"email",required:"","model-value":o.device.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const E=r(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{E as default};
+import{D as l}from"./HardwareInstallation-d2c0f1d5.js";import{_ as r,u as a,k as d,l as p,D as i,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceTesla",mixins:[l]},v={class:"device-tesla"};function c(o,e,g,b,_,w){const s=a("openwb-base-heading"),n=a("openwb-base-text-input");return d(),p("div",v,[i(s,null,{default:u(()=>e[3]||(e[3]=[m(" Einstellungen für Tesla ")])),_:1}),i(n,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(n,{title:"E-Mail",subtype:"email",required:"","model-value":o.device.configuration.email,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.email"))},null,8,["model-value"]),i(n,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const E=r(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tesla/tesla/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-2861d843.js b/web/settings/assets/device-59c7355d.js
similarity index 84%
rename from web/settings/assets/device-2861d843.js
rename to web/settings/assets/device-59c7355d.js
index acb3fc6a8e..52c5d8879d 100644
--- a/web/settings/assets/device-2861d843.js
+++ b/web/settings/assets/device-59c7355d.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(n,e,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für Sunny Island ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default};
+import{D as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as t,k as u,l,D as i,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunnyIsland",mixins:[p]},f={class:"device-sunnyisland"};function b(n,e,v,g,w,x){const s=t("openwb-base-heading"),a=t("openwb-base-text-input"),r=t("openwb-base-number-input");return u(),l("div",f,[i(s,null,{default:m(()=>e[2]||(e[2]=[_(" Einstellungen für Sunny Island ")])),_:1}),i(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),i(r,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"])])}const q=d(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_island/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-9f7025df.js b/web/settings/assets/device-6aa72597.js
similarity index 91%
rename from web/settings/assets/device-9f7025df.js
rename to web/settings/assets/device-6aa72597.js
index 86850ea5d8..5816c6f64c 100644
--- a/web/settings/assets/device-9f7025df.js
+++ b/web/settings/assets/device-6aa72597.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as m,l as _,D as a,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarwatt",mixins:[p]},v={class:"device-solarwatt"};function c(t,e,w,b,g,x){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[a(s,null,{default:i(()=>e[2]||(e[2]=[r(" Einstellungen für Solarwatt/My Reserve ")])),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode","not-selected":"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":t.device.configuration.energy_manager,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>e[3]||(e[3]=[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")])),_:1},8,["model-value"])])}const E=u(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{E as default};
+import{D as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as n,k as m,l as _,D as a,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarwatt",mixins:[p]},v={class:"device-solarwatt"};function c(t,e,w,b,g,x){const s=n("openwb-base-heading"),l=n("openwb-base-text-input"),d=n("openwb-base-select-input");return m(),_("div",v,[a(s,null,{default:i(()=>e[2]||(e[2]=[r(" Einstellungen für Solarwatt/My Reserve ")])),_:1}),a(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(d,{title:"Abrufmethode","not-selected":"Bitte auswählen",options:[{value:0,text:"Gateway"},{value:1,text:"Energy Manager"}],"model-value":t.device.configuration.energy_manager,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.energy_manager"))},{help:i(()=>e[3]||(e[3]=[r(" Wenn beide Abrufmethoden verwendet werden sollen, muss für jede Methode ein Gerät erstellt werden. ")])),_:1},8,["model-value"])])}const E=u(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_watt/solar_watt/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-ee62c15a.js b/web/settings/assets/device-6e3aa19a.js
similarity index 84%
rename from web/settings/assets/device-ee62c15a.js
rename to web/settings/assets/device-6e3aa19a.js
index 3b05dd4587..b8f2438b56 100644
--- a/web/settings/assets/device-ee62c15a.js
+++ b/web/settings/assets/device-6e3aa19a.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as n,k as u,l,D as i,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[a]},f={class:"device-studer"};function b(o,e,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),l("div",f,[i(r,null,{default:m(()=>e[2]||(e[2]=[c(" Einstellungen für Studer ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const E=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{E as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as n,k as u,l,D as i,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuder",mixins:[a]},f={class:"device-studer"};function b(o,e,v,g,w,x){const r=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),l("div",f,[i(r,null,{default:m(()=>e[2]||(e[2]=[c(" Einstellungen für Studer ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const E=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-7e1581b0.js b/web/settings/assets/device-6f112981.js
similarity index 89%
rename from web/settings/assets/device-7e1581b0.js
rename to web/settings/assets/device-6f112981.js
index 9a354f4cb6..73e8adbecc 100644
--- a/web/settings/assets/device-7e1581b0.js
+++ b/web/settings/assets/device-6f112981.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as i,k as d,l as u,D as t,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function v(o,e,w,_,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Sunways ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{q as default};
+import{D as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as i,k as d,l as u,D as t,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSunways",mixins:[r]},f={class:"device-sunways"};function v(o,e,w,_,b,g){const a=i("openwb-base-heading"),s=i("openwb-base-text-input");return d(),u("div",f,[t(a,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Sunways ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sunways/sunways/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-d0fb85ca.js b/web/settings/assets/device-6f239659.js
similarity index 91%
rename from web/settings/assets/device-d0fb85ca.js
rename to web/settings/assets/device-6f239659.js
index cf15652778..ecb809956e 100644
--- a/web/settings/assets/device-d0fb85ca.js
+++ b/web/settings/assets/device-6f239659.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as n,k as m,l as b,D as t,N as s,y as c,x as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"};function g(o,e,w,y,x,D){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-number-input");return m(),b("div",v,[t(r,null,{default:s(()=>e[2]||(e[2]=[c("Einstellungen für Deye")])),_:1}),t(a,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[_("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1)])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{E as default};
+import{D as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as n,k as m,l as b,D as t,N as s,y as c,x as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceDeye",mixins:[u]},v={class:"device-deye"};function g(o,e,w,y,x,D){const r=n("openwb-base-heading"),a=n("openwb-base-alert"),p=n("openwb-base-text-input"),d=n("openwb-base-number-input");return m(),b("div",v,[t(r,null,{default:s(()=>e[2]||(e[2]=[c("Einstellungen für Deye")])),_:1}),t(a,{subtype:"info"},{default:s(()=>e[3]||(e[3]=[_("span",{class:"text-danger"}," Deye Wechselrichter verfügen über keine Modbus-TCP Schnittstelle. Für die Auslesung wird ein RS485/LAN-Adapter benötigt. ",-1)])),_:1}),t(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>o.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=i=>o.updateConfiguration(i,"configuration.port"))},null,8,["model-value"])])}const E=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-8d6c27df.js b/web/settings/assets/device-713ce8f2.js
similarity index 82%
rename from web/settings/assets/device-8d6c27df.js
rename to web/settings/assets/device-713ce8f2.js
index a1eb0a51c7..0a576be135 100644
--- a/web/settings/assets/device-8d6c27df.js
+++ b/web/settings/assets/device-713ce8f2.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as d,l,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(o,e,v,b,g,k){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[n(s,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")])),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{h as default};
+import{D as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as t,k as d,l,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceKostalSteca",mixins:[r]},_={class:"device-kostal-steca"};function f(o,e,v,b,g,k){const s=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[n(s,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept ")])),_:1}),n(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-900bb2eb.js b/web/settings/assets/device-7279ce38.js
similarity index 87%
rename from web/settings/assets/device-900bb2eb.js
rename to web/settings/assets/device-7279ce38.js
index b351d88a2f..e2738f0030 100644
--- a/web/settings/assets/device-900bb2eb.js
+++ b/web/settings/assets/device-7279ce38.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as l,l as d,D as n,N as m,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarLog",mixins:[a]},c={class:"device-solar_log"};function f(o,e,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für Solar-Log ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{y as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as t,k as l,l as d,D as n,N as m,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarLog",mixins:[a]},c={class:"device-solar_log"};function f(o,e,g,v,b,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return l(),d("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für Solar-Log ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_log/solar_log/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-44ac2d07.js b/web/settings/assets/device-763ad7fc.js
similarity index 87%
rename from web/settings/assets/device-44ac2d07.js
rename to web/settings/assets/device-763ad7fc.js
index bb1c9d350a..816a857c18 100644
--- a/web/settings/assets/device-44ac2d07.js
+++ b/web/settings/assets/device-763ad7fc.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as o,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBatterX",mixins:[a]},_={class:"device-batterx"};function f(t,e,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für BatterX ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{y as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as o,k as d,l as m,D as n,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBatterX",mixins:[a]},_={class:"device-batterx"};function f(t,e,b,v,x,g){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),m("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für BatterX ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const y=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/batterx/batterx/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-823f72ad.js b/web/settings/assets/device-79189826.js
similarity index 92%
rename from web/settings/assets/device-823f72ad.js
rename to web/settings/assets/device-79189826.js
index 6daafbeca9..d79ad13152 100644
--- a/web/settings/assets/device-823f72ad.js
+++ b/web/settings/assets/device-79189826.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as m,l as c,D as t,N as r,y as o,x as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"};function g(i,e,v,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),d=n("openwb-base-text-input");return m(),c("div",b,[t(s,null,{default:r(()=>e[1]||(e[1]=[o(" Einstellungen für Fronius ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[o(" Die Fronius API muss aktiviert sein."),_("br",null,null,-1),o(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const M=p(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{M as default};
+import{D as l}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as n,k as m,l as c,D as t,N as r,y as o,x as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFronius",mixins:[l]},b={class:"device-fronius"};function g(i,e,v,h,w,x){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),d=n("openwb-base-text-input");return m(),c("div",b,[t(s,null,{default:r(()=>e[1]||(e[1]=[o(" Einstellungen für Fronius ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[o(" Die Fronius API muss aktiviert sein."),_("br",null,null,-1),o(" Sind nur Symos in Nutzung, welche über Fronius Solar Net / DATCOM miteinander verbunden sind, muss nur ein Gerät mit einer Komponente Wechselrichter angelegt werden. Sind aber z.B. Symo und Symo Hybrid im Einsatz, muss für jeden Wechselrichter ein Gerät mit einer Komponente Wechselrichter angelegt werden. Die Zähler-Komponente für das Smart-Meter wird in dem Gerät angelegt, dass den Wechselrichter enthält, an den das SmartMeter angeschlossen ist. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":i.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=u=>i.updateConfiguration(u,"configuration.ip_address"))},null,8,["model-value"])])}const M=p(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/device.vue"]]);export{M as default};
diff --git a/web/settings/assets/device-d91bc952.js b/web/settings/assets/device-7f1fc016.js
similarity index 95%
rename from web/settings/assets/device-d91bc952.js
rename to web/settings/assets/device-7f1fc016.js
index 644c64d776..ff425b6355 100644
--- a/web/settings/assets/device-d91bc952.js
+++ b/web/settings/assets/device-7f1fc016.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as v,u as t,k as b,l as f,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},w={class:"device-goodwe"};function _(o,e,W,c,D,V){const l=t("openwb-base-heading"),a=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input"),u=t("openwb-base-select-input");return b(),f("div",w,[i(l,null,{default:r(()=>e[5]||(e[5]=[s("Einstellungen für GoodWe")])),_:1}),i(a,{subtype:"info"},{default:r(()=>e[6]||(e[6]=[s(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")])),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"API-Version","not-selected":"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.version"))},{help:r(()=>e[7]||(e[7]=[s(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"]),i(u,{title:"Firmware","not-selected":"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>e[8]||(e[8]=[s(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")])),_:1},8,["model-value"])])}const P=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{P as default};
+import{D as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as v,u as t,k as b,l as f,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceGoodWe",mixins:[m]},w={class:"device-goodwe"};function _(o,e,W,c,D,V){const l=t("openwb-base-heading"),a=t("openwb-base-alert"),p=t("openwb-base-text-input"),d=t("openwb-base-number-input"),u=t("openwb-base-select-input");return b(),f("div",w,[i(l,null,{default:r(()=>e[5]||(e[5]=[s("Einstellungen für GoodWe")])),_:1}),i(a,{subtype:"info"},{default:r(()=>e[6]||(e[6]=[s(" GoodWe-Wechselrichter verfügen über 3 Dongle: Den WiFi-Dongle, das Wifi-Lan-Kit und das Wifi-Lan-Kit 2.0. Die Einbindung über dieses Modul ist nur mit den Wifi-Lan-Kits möglich. Welches Kit benötigt wird ist vom Wechselrichter abhängig und kann bei GoodWe erfragt werden. ")])),_:1}),i(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"API-Version","not-selected":"Bitte auswählen",options:[{value:"v_1_7",text:"v1.7"},{value:"v_1_1",text:"v1.0/ v1.1"}],"model-value":o.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.version"))},{help:r(()=>e[7]||(e[7]=[s(" Die Wahl der API-Version beeinflusst die Auslesung der Speicherleistung und der Import/ Export Werte des Zählers. ")])),_:1},8,["model-value"]),i(u,{title:"Firmware","not-selected":"Bitte auswählen",options:[{value:8,text:"ARM < 9.0"},{value:9,text:"ARM ab 9.0"}],"model-value":o.device.configuration.firmware,required:"","onUpdate:modelValue":e[4]||(e[4]=n=>o.updateConfiguration(n,"configuration.firmware"))},{help:r(()=>e[8]||(e[8]=[s(" Die Auswahl der Firmware-Version beeinflusst die Auslesung der Wirkleistung und der Phasenströme des Zählers. ")])),_:1},8,["model-value"])])}const P=v(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/good_we/good_we/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-82e0acf7.js b/web/settings/assets/device-80fee4ae.js
similarity index 89%
rename from web/settings/assets/device-82e0acf7.js
rename to web/settings/assets/device-80fee4ae.js
index 5a5cb5a2e8..3564ce5c8c 100644
--- a/web/settings/assets/device-82e0acf7.js
+++ b/web/settings/assets/device-80fee4ae.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as n,k as u,l as m,D as i,N as l,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[a]},f={class:"device-mtec"};function b(o,e,v,g,w,x){const s=n("openwb-base-heading"),r=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[c("Einstellungen für M-Tec")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{q as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as n,k as u,l as m,D as i,N as l,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceMTec",mixins:[a]},f={class:"device-mtec"};function b(o,e,v,g,w,x){const s=n("openwb-base-heading"),r=n("openwb-base-text-input"),p=n("openwb-base-number-input");return u(),m("div",f,[i(s,null,{default:l(()=>e[2]||(e[2]=[c("Einstellungen für M-Tec")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),i(p,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.port"))},null,8,["model-value"])])}const q=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-eed61bed.js b/web/settings/assets/device-8432eab3.js
similarity index 91%
rename from web/settings/assets/device-eed61bed.js
rename to web/settings/assets/device-8432eab3.js
index 1742dc5803..8f9cf826d3 100644
--- a/web/settings/assets/device-eed61bed.js
+++ b/web/settings/assets/device-8432eab3.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as t,k as l,l as p,D as i,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceCarloGavazzi",mixins:[d]},f={class:"device-carlogavazzi"};function _(o,e,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",f,[i(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Carlo Gavazzi ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default};
+import{D as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as t,k as l,l as p,D as i,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceCarloGavazzi",mixins:[d]},f={class:"device-carlogavazzi"};function _(o,e,b,g,z,w){const r=t("openwb-base-heading"),s=t("openwb-base-text-input"),a=t("openwb-base-number-input");return l(),p("div",f,[i(r,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für Carlo Gavazzi ")])),_:1}),i(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(c,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/carlo_gavazzi/carlo_gavazzi/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-35c75ada.js b/web/settings/assets/device-8548059a.js
similarity index 88%
rename from web/settings/assets/device-35c75ada.js
rename to web/settings/assets/device-8548059a.js
index 50f75c404b..99ed7eb27e 100644
--- a/web/settings/assets/device-35c75ada.js
+++ b/web/settings/assets/device-8548059a.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as s,k as p,l,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceLG",mixins:[m]},f={class:"device-lg"};function c(n,e,v,b,_,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",f,[t(d,null,{default:r(()=>e[2]||(e[2]=[a(" Einstellungen für LG ESS V1.0 ")])),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.password"))},{help:r(()=>e[3]||(e[3]=[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')])),_:1},8,["model-value"])])}const B=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{B as default};
+import{D as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as s,k as p,l,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceLG",mixins:[m]},f={class:"device-lg"};function c(n,e,v,b,_,w){const d=s("openwb-base-heading"),o=s("openwb-base-text-input");return p(),l("div",f,[t(d,null,{default:r(()=>e[2]||(e[2]=[a(" Einstellungen für LG ESS V1.0 ")])),_:1}),t(o,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=i=>n.updateConfiguration(i,"configuration.ip_address"))},null,8,["model-value"]),t(o,{title:"Passwort",subtype:"password",required:"","model-value":n.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=i=>n.updateConfiguration(i,"configuration.password"))},{help:r(()=>e[3]||(e[3]=[a(' Passwort, um sich in den LG ESS V1.0 einzuloggen. Das Passwort ist standardmäßig die Registrierungsnummer, die sich auf einem Aufkleber auf dem PCS (dem Hybridwechselrichter und Batteriemanagementsystem) befindet. Alternativ findet man die Registrierungsnummer in der App unter dem Menüpunkt "Systeminformationen". Mit der Registrierungsnummer kann man sich dann in der Rolle "installer" einloggen. ')])),_:1},8,["model-value"])])}const B=u(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/lg/lg/device.vue"]]);export{B as default};
diff --git a/web/settings/assets/device-ac5464c5.js b/web/settings/assets/device-91630eed.js
similarity index 94%
rename from web/settings/assets/device-ac5464c5.js
rename to web/settings/assets/device-91630eed.js
index 720cbca7a3..b9b257e50d 100644
--- a/web/settings/assets/device-ac5464c5.js
+++ b/web/settings/assets/device-91630eed.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as b,u as i,k as g,l as v,D as t,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSungrow",mixins:[m]},w={class:"device-sungrow"};function _(n,e,c,S,D,W){const s=i("openwb-base-heading"),a=i("openwb-base-alert"),d=i("openwb-base-text-input"),l=i("openwb-base-number-input"),p=i("openwb-base-select-input");return g(),v("div",w,[t(s,null,{default:r(()=>e[4]||(e[4]=[u(" Einstellungen für Sungrow ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[5]||(e[5]=[u(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(p,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},{help:r(()=>e[6]||(e[6]=[u(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um iSolarCloud nutzen zu können. ")])),_:1},8,["model-value"])])}const q=b(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{q as default};
+import{D as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as b,u as i,k as g,l as v,D as t,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSungrow",mixins:[m]},w={class:"device-sungrow"};function _(n,e,c,S,D,W){const s=i("openwb-base-heading"),a=i("openwb-base-alert"),d=i("openwb-base-text-input"),l=i("openwb-base-number-input"),p=i("openwb-base-select-input");return g(),v("div",w,[t(s,null,{default:r(()=>e[4]||(e[4]=[u(" Einstellungen für Sungrow ")])),_:1}),t(a,{subtype:"info"},{default:r(()=>e[5]||(e[5]=[u(" Bitte zur Fehlervermeidung die Firmware des Sungrow Wechselrichters und WiNet-S Dongles aktuell halten. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),t(l,{title:"Port",required:"",min:1,max:65535,"model-value":n.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.port"))},null,8,["model-value"]),t(l,{title:"Modbus ID",required:"","model-value":n.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},null,8,["model-value"]),t(p,{title:"Version",options:[{value:0,text:"SH (Hybrid)"},{value:3,text:"SH (Hybrid) über WiNet-S Dongle"},{value:1,text:"SG (kein Hybrid)"},{value:2,text:"SG (kein Hybrid) über WiNet-S Dongle"}],"model-value":n.device.configuration.version,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.version"))},{help:r(()=>e[6]||(e[6]=[u(" Die Variante SH sollte möglichst über den internen LAN-Port genutzt werden (befindet sich am Wechselrichter hinter dem WiNet-S Dongle), da nur hier alle Werte vollständig ausgelesen werden können. Den WiNet-S Dongle zusätzlich ins Heimnetz (per Lan oder Wlan) einbinden, um iSolarCloud nutzen zu können. ")])),_:1},8,["model-value"])])}const q=b(f,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sungrow/sungrow/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-436ab177.js b/web/settings/assets/device-9653fe83.js
similarity index 89%
rename from web/settings/assets/device-436ab177.js
rename to web/settings/assets/device-9653fe83.js
index 177835d75e..2487e7e255 100644
--- a/web/settings/assets/device-436ab177.js
+++ b/web/settings/assets/device-9653fe83.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as m,l as u,D as i,N as s,y as o,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return m(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const E=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{E as default};
+import{D as l}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as t,k as m,l as u,D as i,N as s,y as o,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return m(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const E=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{E as default};
diff --git a/web/settings/assets/device-4992e86f.js b/web/settings/assets/device-9b3e153b.js
similarity index 91%
rename from web/settings/assets/device-4992e86f.js
rename to web/settings/assets/device-9b3e153b.js
index 777e3052a5..22b303cc90 100644
--- a/web/settings/assets/device-4992e86f.js
+++ b/web/settings/assets/device-9b3e153b.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as i,k as u,l as p,D as t,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},b={class:"device-qcells"};function v(o,e,_,g,w,C){const l=i("openwb-base-heading"),a=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",b,[t(l,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für QCells ESS ")])),_:1}),t(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{U as default};
+import{D as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as i,k as u,l as p,D as t,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceQCells",mixins:[r]},b={class:"device-qcells"};function v(o,e,_,g,w,C){const l=i("openwb-base-heading"),a=i("openwb-base-text-input"),s=i("openwb-base-number-input");return u(),p("div",b,[t(l,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für QCells ESS ")])),_:1}),t(a,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=d(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/qcells/qcells/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-37c8a5d7.js b/web/settings/assets/device-9cbf003b.js
similarity index 89%
rename from web/settings/assets/device-37c8a5d7.js
rename to web/settings/assets/device-9cbf003b.js
index 67b9707efe..5584fb50e3 100644
--- a/web/settings/assets/device-37c8a5d7.js
+++ b/web/settings/assets/device-9cbf003b.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as s,k as u,l as m,D as n,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function v(o,e,_,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),m("div",f,[n(r,null,{default:d(()=>e[2]||(e[2]=[l(" Einstellungen für smart-me ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{q as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as s,k as u,l as m,D as n,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMe",mixins:[a]},f={class:"device-smart-me"};function v(o,e,_,b,g,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),m("div",f,[n(r,null,{default:d(()=>e[2]||(e[2]=[l(" Einstellungen für smart-me ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const q=p(c,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-e7ac4171.js b/web/settings/assets/device-a70f13a3.js
similarity index 87%
rename from web/settings/assets/device-e7ac4171.js
rename to web/settings/assets/device-a70f13a3.js
index 3d805c2091..2afbc4642a 100644
--- a/web/settings/assets/device-e7ac4171.js
+++ b/web/settings/assets/device-a70f13a3.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as d,l as c,D as n,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[p]},_={class:"device-rct"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für RCT ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const h=a(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{h as default};
+import{D as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as t,k as d,l as c,D as n,N as m,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceRCT",mixins:[p]},_={class:"device-rct"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),c("div",_,[n(i,null,{default:m(()=>e[1]||(e[1]=[l(" Einstellungen für RCT ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const h=a(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/rct/rct/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-4cd875ee.js b/web/settings/assets/device-afc129d5.js
similarity index 94%
rename from web/settings/assets/device-4cd875ee.js
rename to web/settings/assets/device-afc129d5.js
index 46366ecb7c..d107bdfbbf 100644
--- a/web/settings/assets/device-4cd875ee.js
+++ b/web/settings/assets/device-afc129d5.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as v,u as t,k as i,l as f,D as a,N as c,y as b,A as u,B as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,k,B){const d=t("openwb-base-heading"),r=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),f("div",_,[a(d,null,{default:c(()=>o[5]||(o[5]=[b(" Einstellungen für Alpha ESS ")])),_:1}),a(r,{title:"Ausleseart","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):s("",!0),a(r,{title:"Firmware Version","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const $=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{$ as default};
+import{D as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as v,u as t,k as i,l as f,D as a,N as c,y as b,A as u,B as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceAlphaess",mixins:[m]},_={class:"device-alphaess"};function w(e,o,V,C,k,B){const d=t("openwb-base-heading"),r=t("openwb-base-select-input"),p=t("openwb-base-text-input"),l=t("openwb-base-number-input");return i(),f("div",_,[a(d,null,{default:c(()=>o[5]||(o[5]=[b(" Einstellungen für Alpha ESS ")])),_:1}),a(r,{title:"Ausleseart","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"Alpha ESS-Kit"},{value:1,text:"Hi 5/10"}],"model-value":e.device.configuration.source,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.source"))},null,8,["model-value"]),e.device.configuration.source==1?(i(),u(p,{key:0,title:"IP oder Hostname",subtype:"host",required:"","model-value":e.device.configuration.ip_address,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:1,title:"Port",subtype:"host",required:"",min:1,max:65535,"model-value":e.device.configuration.port,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.port"))},null,8,["model-value"])):s("",!0),e.device.configuration.source==1?(i(),u(l,{key:2,title:"Modbus ID",required:"","model-value":e.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":o[3]||(o[3]=n=>e.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])):s("",!0),a(r,{title:"Firmware Version","not-selected":"Bitte auswählen",required:"",options:[{value:0,text:"EMS älter als 1.23V"},{value:1,text:"EMS 1.23V oder neuer"}],"model-value":e.device.configuration.version,"onUpdate:modelValue":o[4]||(o[4]=n=>e.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const $=v(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/alpha_ess/alpha_ess/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-44627252.js b/web/settings/assets/device-b3c2779b.js
similarity index 80%
rename from web/settings/assets/device-44627252.js
rename to web/settings/assets/device-b3c2779b.js
index bdee5b93fe..407b620ae8 100644
--- a/web/settings/assets/device-44627252.js
+++ b/web/settings/assets/device-b3c2779b.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as o,k as d,l,D as t,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBenning",mixins:[p]},_={class:"device-benning"};function f(n,e,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[m("Einstellungen für Benning")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const y=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{y as default};
+import{D as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as o,k as d,l,D as t,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceBenning",mixins:[p]},_={class:"device-benning"};function f(n,e,b,g,v,x){const i=o("openwb-base-heading"),s=o("openwb-base-text-input");return d(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[m("Einstellungen für Benning")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=r=>n.updateConfiguration(r,"configuration.url"))},null,8,["model-value"])])}const y=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/benning/benning/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-2812d314.js b/web/settings/assets/device-b4913183.js
similarity index 81%
rename from web/settings/assets/device-2812d314.js
rename to web/settings/assets/device-b4913183.js
index c473bf91e6..2a39e4cba6 100644
--- a/web/settings/assets/device-2812d314.js
+++ b/web/settings/assets/device-b4913183.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as d,l,D as s,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceYouless",mixins:[r]},_={class:"device-youless"};function f(o,e,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>e[1]||(e[1]=[m(" Einstellungen für Youless ")])),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const h=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{h as default};
+import{D as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as t,k as d,l,D as s,N as u,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceYouless",mixins:[r]},_={class:"device-youless"};function f(o,e,v,b,g,x){const n=t("openwb-base-heading"),i=t("openwb-base-text-input");return d(),l("div",_,[s(n,null,{default:u(()=>e[1]||(e[1]=[m(" Einstellungen für Youless ")])),_:1}),s(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.ip_address"))},null,8,["model-value"])])}const h=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-5860e973.js b/web/settings/assets/device-bb1652e9.js
similarity index 87%
rename from web/settings/assets/device-5860e973.js
rename to web/settings/assets/device-bb1652e9.js
index 32d351b27f..1e0d331cdf 100644
--- a/web/settings/assets/device-5860e973.js
+++ b/web/settings/assets/device-bb1652e9.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as d,l as u,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[m("Einstellungen für OpenDTU")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const V=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{V as default};
+import{D as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as t,k as d,l as u,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceOpenDTU",mixins:[r]},_={class:"device-opendtu"};function f(o,e,v,b,g,x){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),u("div",_,[n(i,null,{default:l(()=>e[1]||(e[1]=[m("Einstellungen für OpenDTU")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>o.updateConfiguration(p,"configuration.url"))},null,8,["model-value"])])}const V=a(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/opendtu/opendtu/device.vue"]]);export{V as default};
diff --git a/web/settings/assets/device-baaf93fc.js b/web/settings/assets/device-bbbcf1a0.js
similarity index 92%
rename from web/settings/assets/device-baaf93fc.js
rename to web/settings/assets/device-bbbcf1a0.js
index 5422483516..5628f91c47 100644
--- a/web/settings/assets/device-baaf93fc.js
+++ b/web/settings/assets/device-bbbcf1a0.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as t,k as d,l as m,D as i,N as c,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(o,e,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>e[3]||(e[3]=[v("Einstellungen für Solis")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":o.device.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const N=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{N as default};
+import{D as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as t,k as d,l as m,D as i,N as c,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolis",mixins:[p]},_={class:"device-solis"};function f(o,e,g,w,h,x){const s=t("openwb-base-heading"),r=t("openwb-base-text-input"),a=t("openwb-base-number-input"),l=t("openwb-base-select-input");return d(),m("div",_,[i(s,null,{default:c(()=>e[3]||(e[3]=[v("Einstellungen für Solis")])),_:1}),i(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),i(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),i(l,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"inverter",text:"Wechselrichter ohne Speicheranbindung"},{value:"hybrid",text:"Hybridwechselrichter RHI/S Serie"}],"model-value":o.device.configuration.version,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"])])}const N=u(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-24fa8719.js b/web/settings/assets/device-c47ac087.js
similarity index 90%
rename from web/settings/assets/device-24fa8719.js
rename to web/settings/assets/device-c47ac087.js
index 16499fe087..917eb5c9aa 100644
--- a/web/settings/assets/device-24fa8719.js
+++ b/web/settings/assets/device-c47ac087.js
@@ -1 +1 @@
-import{D as r}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as n,k as u,l as d,D as a,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(t,e,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>e[2]||(e[2]=[c("Einstellungen für Tasmota")])),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase","not-selected":"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":t.device.configuration.phase,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default};
+import{D as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as n,k as u,l as d,D as a,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceTasmota",mixins:[r]},v={class:"device-tasmota"};function f(t,e,b,g,w,x){const i=n("openwb-base-heading"),s=n("openwb-base-text-input"),p=n("openwb-base-select-input");return u(),d("div",v,[a(i,null,{default:m(()=>e[2]||(e[2]=[c("Einstellungen für Tasmota")])),_:1}),a(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":t.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.ip_address"))},null,8,["model-value"]),a(p,{title:"Phase","not-selected":"Bitte auswählen",options:[{value:1,text:"1"},{value:2,text:"2"},{value:3,text:"3"}],"model-value":t.device.configuration.phase,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.phase"))},null,8,["model-value"])])}const q=l(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/tasmota/tasmota/device.vue"]]);export{q as default};
diff --git a/web/settings/assets/device-f8b42d98.js b/web/settings/assets/device-cc94a449.js
similarity index 91%
rename from web/settings/assets/device-f8b42d98.js
rename to web/settings/assets/device-cc94a449.js
index aee2d44422..9334534366 100644
--- a/web/settings/assets/device-f8b42d98.js
+++ b/web/settings/assets/device-cc94a449.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as t,k as l,l as m,D as i,N as s,y as n,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceMqtt",mixins:[a]},u={class:"device-mqtt"};function g(_,e,b,f,h,v){const r=t("openwb-base-heading"),o=t("openwb-base-alert");return l(),m("div",u,[i(r,null,{default:s(()=>e[0]||(e[0]=[n("Einstellungen für MQTT")])),_:1}),i(o,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),c("br",null,null,-1),n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")])),_:1})])}const y=d(p,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{y as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as t,k as l,l as m,D as i,N as s,y as n,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const p={name:"DeviceMqtt",mixins:[a]},u={class:"device-mqtt"};function g(_,e,b,f,h,v){const r=t("openwb-base-heading"),o=t("openwb-base-alert");return l(),m("div",u,[i(r,null,{default:s(()=>e[0]||(e[0]=[n("Einstellungen für MQTT")])),_:1}),i(o,{subtype:"info"},{default:s(()=>e[1]||(e[1]=[n(" Das MQTT Modul stellt keine aktive Verbindung her, sondern erwartet, dass die Daten an die angegebenen Topics im Broker gesendet werden. Da die Daten direkt an den Broker gesendet werden, erfolgt keine Verrechnung bei Hybrid-Systemen und auch keine Berechnung fehlender Werte, z.B. von Phasen-Leistung aus Spannung und Strömen. Beim Logging und im Lastmanagement, z.B. bei verschachtelten Zählern, werden die MQTT-Zähler wie gewohnt berücksichtigt."),c("br",null,null,-1),n(" Alle Daten sind als gültiges JSON zu senden! Zahlen mit Nachkommastellen (Float) müssen einen Punkt als Dezimaltrenner verwenden (internationales Format). ")])),_:1})])}const y=d(p,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-7893f72c.js b/web/settings/assets/device-d3b9bc22.js
similarity index 96%
rename from web/settings/assets/device-7893f72c.js
rename to web/settings/assets/device-d3b9bc22.js
index b0f46ca012..31e3c33c4d 100644
--- a/web/settings/assets/device-7893f72c.js
+++ b/web/settings/assets/device-d3b9bc22.js
@@ -1 +1 @@
-import{D as f}from"./HardwareInstallation-70f156e6.js";import{_ as g,u as d,k as t,l as b,D as l,N as a,y as i,A as s,B as u,x as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceEnphase",mixins:[f]},y={class:"device-enphase"};function k(n,e,V,c,E,h){const m=d("openwb-base-heading"),r=d("openwb-base-text-input"),v=d("openwb-base-select-input");return t(),b("div",y,[l(m,null,{default:a(()=>e[6]||(e[6]=[i(" Einstellungen für Enphase Envoy / IQ Gateway ")])),_:1}),l(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>e[7]||(e[7]=[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')])),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":n.device.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[8]||(e[8]=[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")])),_:1},8,["model-value"]),n.device.configuration.version>1?(t(),s(r,{key:0,title:"Benutzer",subtype:"user","model-value":n.device.configuration.user,required:"","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:1,title:"Kennwort",subtype:"password","model-value":n.device.configuration.password,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:2,title:"Envoy Seriennummer","model-value":n.device.configuration.serial,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:3,title:"Token",subtype:"password","model-value":n.device.configuration.token,required:"","onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.token"))},{help:a(()=>e[9]||(e[9]=[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),p("br",null,null,-1),i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1),i(" erledigen. ")])),_:1},8,["model-value"])):u("",!0)])}const T=g(w,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{T as default};
+import{D as f}from"./HardwareInstallation-d2c0f1d5.js";import{_ as g,u as d,k as t,l as b,D as l,N as a,y as i,A as s,B as u,x as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceEnphase",mixins:[f]},y={class:"device-enphase"};function k(n,e,V,c,E,h){const m=d("openwb-base-heading"),r=d("openwb-base-text-input"),v=d("openwb-base-select-input");return t(),b("div",y,[l(m,null,{default:a(()=>e[6]||(e[6]=[i(" Einstellungen für Enphase Envoy / IQ Gateway ")])),_:1}),l(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":n.device.configuration.hostname,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hostname"))},{help:a(()=>e[7]||(e[7]=[i(' Bitte geben Sie die IP-Adresse oder den Hostnamen des Enphase Envoy oder IQ Gateway an. Die Info finden Sie in Ihrem Router. Ab Werk ist der Hostname "envoy" oder "envoy.local". ')])),_:1},8,["model-value"]),l(v,{title:"Version",required:"",options:[{value:1,text:"Firmware < 7.0"},{value:2,text:"Firmware ab 7.0"}],"model-value":n.device.configuration.version,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},{help:a(()=>e[8]||(e[8]=[i(" Bitte wählen Sie die Version des Enphase Envoy oder IQ Gateway aus. Die Version 1 ist für Geräte mit einer Firmware-Version unter 7.0, die Version 2 für Geräte mit einer Firmware-Version ab 7.0. Ein angebundener Speicher wird nur bei Version 2 unterstützt. ")])),_:1},8,["model-value"]),n.device.configuration.version>1?(t(),s(r,{key:0,title:"Benutzer",subtype:"user","model-value":n.device.configuration.user,required:"","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.user"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:1,title:"Kennwort",subtype:"password","model-value":n.device.configuration.password,required:"","onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.password"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:2,title:"Envoy Seriennummer","model-value":n.device.configuration.serial,required:"","onUpdate:modelValue":e[4]||(e[4]=o=>n.updateConfiguration(o,"configuration.serial"))},null,8,["model-value"])):u("",!0),n.device.configuration.version>1?(t(),s(r,{key:3,title:"Token",subtype:"password","model-value":n.device.configuration.token,required:"","onUpdate:modelValue":e[5]||(e[5]=o=>n.updateConfiguration(o,"configuration.token"))},{help:a(()=>e[9]||(e[9]=[i(" Wenn Benutzer, Kennwort und Seriennummer des Envoys angegeben werden, wird das Token automatisch beim Speichern abgerufen. Ebenfalls wird ein abgelaufenes Token (derzeit nach einem Jahr) automatisch erneuert."),p("br",null,null,-1),i(" Wenn Sie ein Token manuell erstellen möchten, können Sie dies auf der "),p("a",{href:"https://developer.enphase.com/docs/quickstart.html",target:"_blank",rel:"noopener"}," Enphase-Webseite ",-1),i(" erledigen. ")])),_:1},8,["model-value"])):u("",!0)])}const T=g(w,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/device.vue"]]);export{T as default};
diff --git a/web/settings/assets/device-cd05bdaa.js b/web/settings/assets/device-d63e2264.js
similarity index 86%
rename from web/settings/assets/device-cd05bdaa.js
rename to web/settings/assets/device-d63e2264.js
index 4bbb8f12bf..efef79cde0 100644
--- a/web/settings/assets/device-cd05bdaa.js
+++ b/web/settings/assets/device-d63e2264.js
@@ -1 +1 @@
-import{D as s}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(o,e,_,g,w,C){const a=i("openwb-base-heading"),r=i("openwb-base-text-input"),d=i("openwb-base-number-input");return p(),l("div",b,[t(a,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für E3DC ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{U as default};
+import{D as s}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as i,k as p,l,D as t,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceE3dc",mixins:[s]},b={class:"device-e3dc"};function v(o,e,_,g,w,C){const a=i("openwb-base-heading"),r=i("openwb-base-text-input"),d=i("openwb-base-number-input");return p(),l("div",b,[t(a,null,{default:m(()=>e[3]||(e[3]=[c(" Einstellungen für E3DC ")])),_:1}),t(r,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.address"))},null,8,["model-value"]),t(d,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(d,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const U=u(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/e3dc/e3dc/device.vue"]]);export{U as default};
diff --git a/web/settings/assets/device-a41c9f9a.js b/web/settings/assets/device-d74903aa.js
similarity index 92%
rename from web/settings/assets/device-a41c9f9a.js
rename to web/settings/assets/device-d74903aa.js
index a6a3fc7591..009f0273a3 100644
--- a/web/settings/assets/device-a41c9f9a.js
+++ b/web/settings/assets/device-d74903aa.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as i,k as c,l as b,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPlenticore",mixins:[u]},_={class:"device-kostal-plenticore"};function v(o,e,g,w,k,C){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),b("div",_,[t(l,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Kostal Plenticore ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{$ as default};
+import{D as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as i,k as c,l as b,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceKostalPlenticore",mixins:[u]},_={class:"device-kostal-plenticore"};function v(o,e,g,w,k,C){const l=i("openwb-base-heading"),p=i("openwb-base-alert"),d=i("openwb-base-text-input"),s=i("openwb-base-number-input");return c(),b("div",_,[t(l,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Kostal Plenticore ")])),_:1}),t(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Wenn am Kostal Plenticore-Wechselrichter ein EM300 oder Kostal Energy Smart Meter (KSEM) angeschlossen ist, muss eine Zähler-und eine Wechselrichter-Komponente angelegt werden. ")])),_:1}),t(d,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const $=m(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_plenticore/device.vue"]]);export{$ as default};
diff --git a/web/settings/assets/device-b80563d5.js b/web/settings/assets/device-d7bd2ff3.js
similarity index 91%
rename from web/settings/assets/device-b80563d5.js
rename to web/settings/assets/device-d7bd2ff3.js
index b2c8d885dc..60396f8771 100644
--- a/web/settings/assets/device-b80563d5.js
+++ b/web/settings/assets/device-d7bd2ff3.js
@@ -1 +1 @@
-import{D as l}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as i,k as b,l as f,D as t,N as s,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DevicePowerdog",mixins:[l]},v={class:"device-powerdog"};function g(o,e,c,w,C,x){const a=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),r=i("openwb-base-number-input");return b(),f("div",v,[t(a,null,{default:s(()=>e[3]||(e[3]=[d(" Einstellungen für Powerdog ")])),_:1}),t(p,{subtype:"info"},{default:s(()=>e[4]||(e[4]=[d(" ModbusTCP muss aktiviert sein. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{N as default};
+import{D as l}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as i,k as b,l as f,D as t,N as s,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DevicePowerdog",mixins:[l]},v={class:"device-powerdog"};function g(o,e,c,w,C,x){const a=i("openwb-base-heading"),p=i("openwb-base-alert"),u=i("openwb-base-text-input"),r=i("openwb-base-number-input");return b(),f("div",v,[t(a,null,{default:s(()=>e[3]||(e[3]=[d(" Einstellungen für Powerdog ")])),_:1}),t(p,{subtype:"info"},{default:s(()=>e[4]||(e[4]=[d(" ModbusTCP muss aktiviert sein. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=m(_,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerdog/powerdog/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-827098d6.js b/web/settings/assets/device-df9c2f01.js
similarity index 88%
rename from web/settings/assets/device-827098d6.js
rename to web/settings/assets/device-df9c2f01.js
index 3a1b5bd93f..46e2ebec52 100644
--- a/web/settings/assets/device-827098d6.js
+++ b/web/settings/assets/device-df9c2f01.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as l,l as u,D as n,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceVZLogger",mixins:[d]},c={class:"device-vzlogger"};function _(o,e,v,f,b,w){const r=t("openwb-base-heading"),p=t("openwb-base-text-input");return l(),u("div",c,[n(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für VZLogger ")])),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},{help:i(()=>e[2]||(e[2]=[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")])),_:1},8,["model-value"])])}const N=m(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{N as default};
+import{D as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as t,k as l,l as u,D as n,N as i,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceVZLogger",mixins:[d]},c={class:"device-vzlogger"};function _(o,e,v,f,b,w){const r=t("openwb-base-heading"),p=t("openwb-base-text-input");return l(),u("div",c,[n(r,null,{default:i(()=>e[1]||(e[1]=[s(" Einstellungen für VZLogger ")])),_:1}),n(p,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=a=>o.updateConfiguration(a,"configuration.ip_address"))},{help:i(()=>e[2]||(e[2]=[s(" Bei Angabe des Ports muss auch das Schema mit angegeben werden: http://ip:port ")])),_:1},8,["model-value"])])}const N=m(g,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-c3b4d8e4.js b/web/settings/assets/device-e4ac8894.js
similarity index 91%
rename from web/settings/assets/device-c3b4d8e4.js
rename to web/settings/assets/device-e4ac8894.js
index 656576952d..0c18c1ff05 100644
--- a/web/settings/assets/device-c3b4d8e4.js
+++ b/web/settings/assets/device-e4ac8894.js
@@ -1 +1 @@
-import{D as u}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as i,k as p,l as d,D as t,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarView",mixins:[u]},_={class:"device-solar-view"};function c(o,e,b,g,w,V){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),d("div",_,[t(a,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für SolarView ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Timeout",required:"","model-value":o.device.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const y=l(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{y as default};
+import{D as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as i,k as p,l as d,D as t,N as m,y as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSolarView",mixins:[u]},_={class:"device-solar-view"};function c(o,e,b,g,w,V){const a=i("openwb-base-heading"),s=i("openwb-base-text-input"),r=i("openwb-base-number-input");return p(),d("div",_,[t(a,null,{default:m(()=>e[3]||(e[3]=[v(" Einstellungen für SolarView ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Timeout",required:"","model-value":o.device.configuration.timeout,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.timeout"))},null,8,["model-value"])])}const y=l(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-e77cad4b.js b/web/settings/assets/device-f06b8715.js
similarity index 86%
rename from web/settings/assets/device-e77cad4b.js
rename to web/settings/assets/device-f06b8715.js
index e4e4d2390b..4e751dedcd 100644
--- a/web/settings/assets/device-e77cad4b.js
+++ b/web/settings/assets/device-f06b8715.js
@@ -1 +1 @@
-import{D as p}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as i,k as u,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSaxpower",mixins:[p]},v={class:"device-saxpower"};function _(o,e,c,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Saxpower ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{y as default};
+import{D as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as i,k as u,l,D as t,N as m,y as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSaxpower",mixins:[p]},v={class:"device-saxpower"};function _(o,e,c,g,w,x){const r=i("openwb-base-heading"),s=i("openwb-base-text-input"),a=i("openwb-base-number-input");return u(),l("div",v,[t(r,null,{default:m(()=>e[3]||(e[3]=[f(" Einstellungen für Saxpower ")])),_:1}),t(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(a,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(a,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=d(b,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/saxpower/saxpower/device.vue"]]);export{y as default};
diff --git a/web/settings/assets/device-752b4387.js b/web/settings/assets/device-f0c7d4c8.js
similarity index 91%
rename from web/settings/assets/device-752b4387.js
rename to web/settings/assets/device-f0c7d4c8.js
index d64a748b96..bd62139520 100644
--- a/web/settings/assets/device-752b4387.js
+++ b/web/settings/assets/device-f0c7d4c8.js
@@ -1 +1 @@
-import{D as d}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as i,k as m,l as u,D as n,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFems",mixins:[d]},c={class:"device-fems"};function v(o,e,_,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return m(),u("div",c,[n(p,null,{default:a(()=>e[2]||(e[2]=[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>e[3]||(e[3]=[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")])),_:1},8,["model-value"])])}const P=l(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{P as default};
+import{D as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as i,k as m,l as u,D as n,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceFems",mixins:[d]},c={class:"device-fems"};function v(o,e,_,b,g,w){const p=i("openwb-base-heading"),s=i("openwb-base-text-input");return m(),u("div",c,[n(p,null,{default:a(()=>e[2]||(e[2]=[r(" Einstellungen für openEMS, Fenecon FEMS, CENTURIO 10, Kaco Hy-Control ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.ip_address"))},null,8,["model-value"]),n(s,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:a(()=>e[3]||(e[3]=[r(" Bei Nutzung von Fenecon FEMS ist das Passwort im Normalfall user, bei Kaco mit Hy-Control ist das Passwort meist admin. ")])),_:1},8,["model-value"])])}const P=l(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fems/fems/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-282ac597.js b/web/settings/assets/device-f655ceef.js
similarity index 89%
rename from web/settings/assets/device-282ac597.js
rename to web/settings/assets/device-f655ceef.js
index 3a4cede6aa..8515eae414 100644
--- a/web/settings/assets/device-282ac597.js
+++ b/web/settings/assets/device-f655ceef.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as r,k as u,l as d,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfox",mixins:[a]},c={class:"device-powerfox"};function v(o,e,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",c,[n(s,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Powerfox ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const P=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{P as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as r,k as u,l as d,D as n,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfox",mixins:[a]},c={class:"device-powerfox"};function v(o,e,w,_,b,g){const s=r("openwb-base-heading"),i=r("openwb-base-text-input");return u(),d("div",c,[n(s,null,{default:l(()=>e[2]||(e[2]=[m(" Einstellungen für Powerfox ")])),_:1}),n(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user"))},null,8,["model-value"]),n(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"])])}const P=p(f,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/device.vue"]]);export{P as default};
diff --git a/web/settings/assets/device-51cbfef1.js b/web/settings/assets/device-f7f8ffe0.js
similarity index 81%
rename from web/settings/assets/device-51cbfef1.js
rename to web/settings/assets/device-f7f8ffe0.js
index cfd926980e..7faba3b40d 100644
--- a/web/settings/assets/device-51cbfef1.js
+++ b/web/settings/assets/device-f7f8ffe0.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as d,l,D as n,N as m,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarWorld",mixins:[a]},c={class:"device-solar_world"};function f(o,e,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für SolarWorld ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{h as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as t,k as d,l,D as n,N as m,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSolarWorld",mixins:[a]},c={class:"device-solar_world"};function f(o,e,v,b,w,g){const i=t("openwb-base-heading"),s=t("openwb-base-text-input");return d(),l("div",c,[n(i,null,{default:m(()=>e[1]||(e[1]=[u(" Einstellungen für SolarWorld ")])),_:1}),n(s,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.ip_address"))},null,8,["model-value"])])}const h=p(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_world/solar_world/device.vue"]]);export{h as default};
diff --git a/web/settings/assets/device-fe5fad52.js b/web/settings/assets/device-fe891142.js
similarity index 92%
rename from web/settings/assets/device-fe5fad52.js
rename to web/settings/assets/device-fe891142.js
index 9869dd55a9..6306242df0 100644
--- a/web/settings/assets/device-fe5fad52.js
+++ b/web/settings/assets/device-fe891142.js
@@ -1 +1 @@
-import{D as m}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as i,k as b,l as f,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemens",mixins:[m]},v={class:"device-siemens"};function c(o,e,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(p,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens ")])),_:1}),t(d,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{N as default};
+import{D as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as i,k as b,l as f,D as t,N as r,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSiemens",mixins:[m]},v={class:"device-siemens"};function c(o,e,g,w,C,x){const p=i("openwb-base-heading"),d=i("openwb-base-alert"),u=i("openwb-base-text-input"),s=i("openwb-base-number-input");return b(),f("div",v,[t(p,null,{default:r(()=>e[3]||(e[3]=[a(" Einstellungen für Siemens ")])),_:1}),t(d,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[a(" Im Siemens-Speicher muss die Schnittstelle openWB gewählt werden. ")])),_:1}),t(u,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(s,{title:"Port",required:"",min:1,max:65535,"model-value":o.device.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(s,{title:"Modbus ID",required:"","model-value":o.device.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const N=l(_,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/siemens/siemens/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/device-4696232a.js b/web/settings/assets/device-ff6c0cb6.js
similarity index 91%
rename from web/settings/assets/device-4696232a.js
rename to web/settings/assets/device-ff6c0cb6.js
index b106b52c1f..1f47fdb7ed 100644
--- a/web/settings/assets/device-4696232a.js
+++ b/web/settings/assets/device-ff6c0cb6.js
@@ -1 +1 @@
-import{D as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as s,k as u,l as p,D as t,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[a]},v={class:"device-byd"};function b(o,e,c,g,_,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",v,[t(r,null,{default:l(()=>e[3]||(e[3]=[m(" Einstellungen für BYD ")])),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const N=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{N as default};
+import{D as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as s,k as u,l as p,D as t,N as l,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceBYD",mixins:[a]},v={class:"device-byd"};function b(o,e,c,g,_,w){const r=s("openwb-base-heading"),i=s("openwb-base-text-input");return u(),p("div",v,[t(r,null,{default:l(()=>e[3]||(e[3]=[m(" Einstellungen für BYD ")])),_:1}),t(i,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.device.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(i,{title:"Benutzername",subtype:"user",required:"","model-value":o.device.configuration.user,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.user"))},null,8,["model-value"]),t(i,{title:"Passwort",subtype:"password",required:"","model-value":o.device.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.password"))},null,8,["model-value"])])}const N=d(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/byd/byd/device.vue"]]);export{N as default};
diff --git a/web/settings/assets/displayTheme-4083964b.js b/web/settings/assets/displayTheme-bbed7095.js
similarity index 97%
rename from web/settings/assets/displayTheme-4083964b.js
rename to web/settings/assets/displayTheme-bbed7095.js
index 9ed091e488..3b09f7b47f 100644
--- a/web/settings/assets/displayTheme-4083964b.js
+++ b/web/settings/assets/displayTheme-bbed7095.js
@@ -1 +1 @@
-import{D as g}from"./OptionalComponents-36fd698f.js";import{_ as m,u as i,k as d,l as f,D as a,N as l,y as u,A as r,B as b}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeCards",mixins:[g]},c={class:"display-theme-cards"};function v(n,e,V,h,y,A){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),f("div",c,[a(s,null,{default:l(()=>e[13]||(e[13]=[u("Bediensperre")])),_:1}),a(o,{title:"Bedienung sperren","model-value":n.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.lock_changes"))},{help:l(()=>e[14]||(e[14]=[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),n.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>e[15]||(e[15]=[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>e[16]||(e[16]=[u("Ansichten")])),_:1}),a(o,{title:"Übersicht anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_view"))},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":n.displayTheme.configuration.enable_energy_flow_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.enable_energy_flow_view"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_charge_points_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.enable_charge_points_view"))},null,8,["model-value"]),n.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":n.displayTheme.configuration.simple_charge_point_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateConfiguration(t,"configuration.simple_charge_point_view"))},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":n.displayTheme.configuration.enable_status_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateConfiguration(t,"configuration.enable_status_view"))},null,8,["model-value"]),a(s,null,{help:l(()=>e[17]||(e[17]=[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')])),default:l(()=>[e[18]||(e[18]=u(" Datenauswahl "))]),_:1}),a(o,{title:"EVU anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_grid,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_grid"))},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_home_consumption,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption"))},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_inverter_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[9]||(e[9]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum"))},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_battery_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[10]||(e[10]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_charge_point_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum"))},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_vehicles,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[12]||(e[12]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles"))},null,8,["model-value"])])}const x=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{x as default};
+import{D as g}from"./OptionalComponents-4c7d75e4.js";import{_ as m,u as i,k as d,l as f,D as a,N as l,y as u,A as r,B as b}from"./vendor-a21b3a62.js";import"./index-c79666b6.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DisplayThemeCards",mixins:[g]},c={class:"display-theme-cards"};function v(n,e,V,h,y,A){const s=i("openwb-base-heading"),o=i("openwb-base-button-group-input"),p=i("openwb-base-text-input");return d(),f("div",c,[a(s,null,{default:l(()=>e[13]||(e[13]=[u("Bediensperre")])),_:1}),a(o,{title:"Bedienung sperren","model-value":n.displayTheme.configuration.lock_changes,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.lock_changes"))},{help:l(()=>e[14]||(e[14]=[u(' Die Bedienung wird automatisch nach der eingestellten Ausschaltzeit (siehe "Display Standby") wieder gesperrt. ')])),_:1},8,["model-value"]),n.displayTheme.configuration.lock_changes?(d(),r(p,{key:0,title:"PIN zur Freigabe",subtype:"password",required:"",pattern:"[0-9]{4,10}","model-value":n.displayTheme.configuration.lock_changes_code,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.lock_changes_code"))},{help:l(()=>e[15]||(e[15]=[u(" Der PIN muss aus 4 bis 10 Zahlen bestehen. ")])),_:1},8,["model-value"])):b("",!0),a(s,null,{default:l(()=>e[16]||(e[16]=[u("Ansichten")])),_:1}),a(o,{title:"Übersicht anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_view"))},null,8,["model-value"]),a(o,{title:"Energiefluss anzeigen","model-value":n.displayTheme.configuration.enable_energy_flow_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.enable_energy_flow_view"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_charge_points_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateConfiguration(t,"configuration.enable_charge_points_view"))},null,8,["model-value"]),n.displayTheme.configuration.enable_charge_points_view==!0?(d(),r(o,{key:1,title:"Einfache Ansicht der Ladepunkte","model-value":n.displayTheme.configuration.simple_charge_point_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateConfiguration(t,"configuration.simple_charge_point_view"))},null,8,["model-value"])):b("",!0),a(o,{title:"Status anzeigen","model-value":n.displayTheme.configuration.enable_status_view,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateConfiguration(t,"configuration.enable_status_view"))},null,8,["model-value"]),a(s,null,{help:l(()=>e[17]||(e[17]=[u(' Hier kann festgelegt werden, welche Daten in den Ansichten "Übersicht" und "Energiefluss" angezeigt werden. ')])),default:l(()=>[e[18]||(e[18]=u(" Datenauswahl "))]),_:1}),a(o,{title:"EVU anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_grid,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_grid"))},null,8,["model-value"]),a(o,{title:"Hausverbrauch anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_home_consumption,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_home_consumption"))},null,8,["model-value"]),a(o,{title:"PV anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_inverter_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[9]||(e[9]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_inverter_sum"))},null,8,["model-value"]),a(o,{title:"Batteriespeicher anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_battery_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[10]||(e[10]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_battery_sum"))},null,8,["model-value"]),a(o,{title:"Ladepunkte anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_charge_point_sum,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_charge_point_sum"))},null,8,["model-value"]),a(o,{title:"Fahrzeuge anzeigen","model-value":n.displayTheme.configuration.enable_dashboard_card_vehicles,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[12]||(e[12]=t=>n.updateConfiguration(t,"configuration.enable_dashboard_card_vehicles"))},null,8,["model-value"])])}const x=m(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/cards/displayTheme.vue"]]);export{x as default};
diff --git a/web/settings/assets/electricity_tariff-4bc01805.js b/web/settings/assets/electricity_tariff-10566180.js
similarity index 94%
rename from web/settings/assets/electricity_tariff-4bc01805.js
rename to web/settings/assets/electricity_tariff-10566180.js
index c6c3126f64..2f19f87963 100644
--- a/web/settings/assets/electricity_tariff-4bc01805.js
+++ b/web/settings/assets/electricity_tariff-10566180.js
@@ -1 +1 @@
-import{E as c}from"./GeneralChargeConfig-f6ca097b.js";import{_ as p,u as r,k as d,l as f,D as i,N as o,y as s,x as m}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energycharts"};function b(t,e,y,_,w,v){const a=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(a,{subtype:"info"},{default:o(()=>e[2]||(e[2]=[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),m("br",null,null,-1),s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")])),_:1}),i(l,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":t.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:o(()=>e[3]||(e[3]=[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")])),_:1},8,["model-value"])])}const V=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{V as default};
+import{E as c}from"./GeneralChargeConfig-764e9a8c.js";import{_ as p,u as r,k as d,l as f,D as i,N as o,y as s,x as m}from"./vendor-a21b3a62.js";import"./index-c79666b6.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"ElectricityTariffEnergyCharts",mixins:[c]},h={class:"electricity-tariff-energycharts"};function b(t,e,y,_,w,v){const a=r("openwb-base-alert"),l=r("openwb-base-select-input"),u=r("openwb-base-number-input");return d(),f("div",h,[i(a,{subtype:"info"},{default:o(()=>e[2]||(e[2]=[s(" Börsenstrompreise von Energy Charts (energy-charts.info)"),m("br",null,null,-1),s(" Die Rohdaten werden von Wissenschaftlern des Fraunhofer-Instituts für Solare Energiesysteme ISE aus zahlreichen Quellen stündlich oder täglich abgerufen und für die Darstellung aufbereitet. ")])),_:1}),i(l,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"DE-LU",text:"Deutschland"},{value:"AT",text:"Österreich"},{value:"CH",text:"Schweiz"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateConfiguration(n,"configuration.country"))},null,8,["model-value"]),i(u,{title:"Aufschlag zum Börsenstrompreis",min:0,step:.001,precision:3,required:"",unit:"ct/kWh","model-value":t.electricityTariff.configuration.surcharge,"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateConfiguration(parseFloat(n.toFixed(3)),"configuration.surcharge"))},{help:o(()=>e[3]||(e[3]=[s(" Die Auswahl (Energy-Charts) kann für alle Stromanbieter ausgewählt werden, die die Börsenstrompreise in einem variablen/dynamischen Tarif an die Kunden weitergeben. Das Modul soll es ermöglichen, dass zu tagesaktuellen Strompreisen unter Berücksichtigung eines Aufschlags zu günstigen Zeiten automatisch geladen werden kann und somit die Preisschwankungen an der Börse optimal ausgenutzt werden. ")])),_:1},8,["model-value"])])}const V=p(g,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/energycharts/electricity_tariff.vue"]]);export{V as default};
diff --git a/web/settings/assets/electricity_tariff-7b04b620.js b/web/settings/assets/electricity_tariff-32db6a64.js
similarity index 91%
rename from web/settings/assets/electricity_tariff-7b04b620.js
rename to web/settings/assets/electricity_tariff-32db6a64.js
index a1bfd731b5..8529222a7a 100644
--- a/web/settings/assets/electricity_tariff-7b04b620.js
+++ b/web/settings/assets/electricity_tariff-32db6a64.js
@@ -1 +1 @@
-import{E as s}from"./GeneralChargeConfig-f6ca097b.js";import{_ as l,u as r,k as c,l as p,D as n,N as u,y as f}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(t,e,b,y,g,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")])),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{I as default};
+import{E as s}from"./GeneralChargeConfig-764e9a8c.js";import{_ as l,u as r,k as c,l as p,D as n,N as u,y as f}from"./vendor-a21b3a62.js";import"./index-c79666b6.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffRabot",mixins:[s]},m={class:"electricity-tariff-rabot"};function _(t,e,b,y,g,v){const a=r("openwb-base-alert"),o=r("openwb-base-text-input");return c(),p("div",m,[n(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Rabot. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Rabot-Account abfragen lassen! ")])),_:1}),n(o,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),n(o,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const I=l(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/rabot/electricity_tariff.vue"]]);export{I as default};
diff --git a/web/settings/assets/electricity_tariff-e23d6291.js b/web/settings/assets/electricity_tariff-77492691.js
similarity index 91%
rename from web/settings/assets/electricity_tariff-e23d6291.js
rename to web/settings/assets/electricity_tariff-77492691.js
index 6978b9bb88..c54fafa5a9 100644
--- a/web/settings/assets/electricity_tariff-e23d6291.js
+++ b/web/settings/assets/electricity_tariff-77492691.js
@@ -1 +1 @@
-import{E as l}from"./GeneralChargeConfig-f6ca097b.js";import{_ as s,u as r,k as c,l as p,D as o,N as u,y as f}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(t,e,g,b,y,v){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")])),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const E=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{E as default};
+import{E as l}from"./GeneralChargeConfig-764e9a8c.js";import{_ as s,u as r,k as c,l as p,D as o,N as u,y as f}from"./vendor-a21b3a62.js";import"./index-c79666b6.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffVoltego",mixins:[l]},m={class:"electricity-tariff-voltego"};function _(t,e,g,b,y,v){const a=r("openwb-base-alert"),n=r("openwb-base-text-input");return c(),p("div",m,[o(a,{subtype:"info"},{default:u(()=>e[2]||(e[2]=[f(" Ihre persönlichen Zugangsdaten (Client-ID und Client-Secret) erhalten Sie direkt von Voltego. Behandeln Sie diese Daten wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Voltego-Account abfragen lassen! ")])),_:1}),o(n,{title:"Client-ID",subtype:"user",required:"","model-value":t.electricityTariff.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.client_id"))},null,8,["model-value"]),o(n,{title:"Client-Secret",subtype:"password",required:"","model-value":t.electricityTariff.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.client_secret"))},null,8,["model-value"])])}const E=s(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/voltego/electricity_tariff.vue"]]);export{E as default};
diff --git a/web/settings/assets/electricity_tariff-63a1e9ec.js b/web/settings/assets/electricity_tariff-897c7196.js
similarity index 89%
rename from web/settings/assets/electricity_tariff-63a1e9ec.js
rename to web/settings/assets/electricity_tariff-897c7196.js
index 9c836f49dd..3c1fb17b51 100644
--- a/web/settings/assets/electricity_tariff-63a1e9ec.js
+++ b/web/settings/assets/electricity_tariff-897c7196.js
@@ -1 +1 @@
-import{E as o}from"./GeneralChargeConfig-f6ca097b.js";import{_ as a,u as n,k as s,l as c,D as l,N as p,y as f}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(t,e,_,w,y,b){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.country"))},{help:p(()=>e[1]||(e[1]=[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")])),_:1},8,["model-value"])])}const $=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{$ as default};
+import{E as o}from"./GeneralChargeConfig-764e9a8c.js";import{_ as a,u as n,k as s,l as c,D as l,N as p,y as f}from"./vendor-a21b3a62.js";import"./index-c79666b6.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"ElectricityTariffAwattar",mixins:[o]},u={class:"electricity-tariff-awattar"};function m(t,e,_,w,y,b){const i=n("openwb-base-select-input");return s(),c("div",u,[l(i,{title:"Land","not-selected":"Bitte auswählen",options:[{value:"de",text:"Deutschland"},{value:"at",text:"Österreich"}],"model-value":t.electricityTariff.configuration.country,"onUpdate:modelValue":e[0]||(e[0]=r=>t.updateConfiguration(r,"configuration.country"))},{help:p(()=>e[1]||(e[1]=[f(" Es werden die abgefragten Börsenpreise verwendet, die aWATTar bereitstellt. aWATTar-Gebühren oder Steuern werden nicht berücksichtigt. ")])),_:1},8,["model-value"])])}const $=a(d,[["render",m],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/awattar/electricity_tariff.vue"]]);export{$ as default};
diff --git a/web/settings/assets/electricity_tariff-5111f15f.js b/web/settings/assets/electricity_tariff-eb995216.js
similarity index 96%
rename from web/settings/assets/electricity_tariff-5111f15f.js
rename to web/settings/assets/electricity_tariff-eb995216.js
index 2c9a5be6a1..cd381fd7ac 100644
--- a/web/settings/assets/electricity_tariff-5111f15f.js
+++ b/web/settings/assets/electricity_tariff-eb995216.js
@@ -1 +1 @@
-import{E as m}from"./GeneralChargeConfig-f6ca097b.js";import{_ as g,u as s,k as h,l as _,D as n,N as y,y as l,x as T}from"./vendor-a21b3a62.js";import"./index-f9fda857.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!<pre>"+e+"</pre>","danger")}}}},v={class:"electricity-tariff-tibber"};function w(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>e[3]||(e[3]=[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1),l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")])),_:1}),n(a,{ref:"tokenInput",title:"Token",required:"","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const E=g(k,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{E as default};
+import{E as m}from"./GeneralChargeConfig-764e9a8c.js";import{_ as g,u as s,k as h,l as _,D as n,N as y,y as l,x as T}from"./vendor-a21b3a62.js";import"./index-c79666b6.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"ElectricityTariffTibber",mixins:[m],data(){return{tibberAPI:"https://api.tibber.com/v1-beta/gql",tibberHomeList:[]}},methods:{async getTibberHomeList(){if(this.electricityTariff.configuration.token===null)return;const i='{ "query": "{viewer {homes{id address{address1 address2 address3 postalCode city country}}}}" }';try{const e=await this.axios.post(this.tibberAPI,i,{headers:{Authorization:"Bearer "+this.electricityTariff.configuration.token,"Content-Type":"application/json"}});this.tibberHomeList=e.data.data.viewer.homes.map(t=>{let r=t.address.address1;return t.address.address2&&(r=r+", "+t.address.address2),t.address.address3&&(r=r+", "+t.address.address3),r=r+`, ${t.address.postalCode} ${t.address.city}, ${t.address.country}`,{value:t.id,text:r}}),this.electricityTariff.configuration.home_id||this.updateConfiguration(this.tibberHomeList[0].value,"configuration.home_id"),this.$root.postClientMessage("Home IDs erfolgreich abgerufen.","success")}catch(e){console.error(e),this.$root.postClientMessage("Beim Abfragen der Tibber API ist ein Fehler aufgetreten!<pre>"+e+"</pre>","danger")}}}},v={class:"electricity-tariff-tibber"};function w(i,e,t,r,u,c){var d;const b=s("openwb-base-alert"),a=s("openwb-base-text-input"),p=s("openwb-base-button-input"),f=s("openwb-base-select-input");return h(),_("div",v,[n(b,{subtype:"info"},{default:y(()=>e[3]||(e[3]=[l(" Ihren persönlichen Tibber-Token erhalten Sie über die "),T("a",{href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"}," Tibber-Developer-Seite ",-1),l(" . Behandeln Sie Ihren Token wie ein Passwort, da sich darüber auch persönliche Daten aus Ihrem Tibber-Account abfragen lassen! Die Home-ID können Sie (wenn bekannt) in das Eingabefeld selbst eintragen oder nach Eingabe Ihres Token durch Klick auf den Button von der openWB ermitteln lassen. Unerlaubte Zeichen werden aus dem Token und der Home-ID automatisch gelöscht. ")])),_:1}),n(a,{ref:"tokenInput",title:"Token",required:"","model-value":i.electricityTariff.configuration.token,"onUpdate:modelValue":e[0]||(e[0]=o=>i.updateConfiguration(o,"configuration.token"))},null,8,["model-value"]),n(p,{title:"Home-IDs abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:!((d=i.electricityTariff.configuration.token)!=null&&d.length),onButtonClicked:c.getTibberHomeList},null,8,["disabled","onButtonClicked"]),n(f,{title:"Verfügbare Home-IDs",options:u.tibberHomeList,"model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[1]||(e[1]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["options","model-value"]),n(a,{title:"Home-ID",required:"","model-value":i.electricityTariff.configuration.home_id,"onUpdate:modelValue":e[2]||(e[2]=o=>i.updateConfiguration(o,"configuration.home_id"))},null,8,["model-value"])])}const E=g(k,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/tibber/electricity_tariff.vue"]]);export{E as default};
diff --git a/web/settings/assets/external_inverter-a76bfa79.js b/web/settings/assets/external_inverter-04c9ce87.js
similarity index 94%
rename from web/settings/assets/external_inverter-a76bfa79.js
rename to web/settings/assets/external_inverter-04c9ce87.js
index 21e9c38bfd..40ab8fe818 100644
--- a/web/settings/assets/external_inverter-a76bfa79.js
+++ b/web/settings/assets/external_inverter-04c9ce87.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as i,k as g,l as f,D as o,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolaredgeExternalInverter",mixins:[m]},c={class:"device-solaredge-external-inverter"};function v(n,e,_,w,x,C){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),a=i("openwb-base-number-input"),d=i("openwb-base-select-input");return g(),f("div",c,[o(l,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für SolarEdge externen Wechselrichter ")])),_:1}),o(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[s(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')])),_:1}),o(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(a,{title:"SolarEdge-Meter-ID","model-value":n.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren","not-selected":"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":n.component.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.factor"))},{help:r(()=>e[5]||(e[5]=[s(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")])),_:1},8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default};
+import{C as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as i,k as g,l as f,D as o,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceSolaredgeExternalInverter",mixins:[m]},c={class:"device-solaredge-external-inverter"};function v(n,e,_,w,x,C){const l=i("openwb-base-heading"),u=i("openwb-base-alert"),a=i("openwb-base-number-input"),d=i("openwb-base-select-input");return g(),f("div",c,[o(l,null,{default:r(()=>e[3]||(e[3]=[s(" Einstellungen für SolarEdge externen Wechselrichter ")])),_:1}),o(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[s(' Diese Komponente nur konfigurieren, wenn ein weiteres Solaredge SmartMeter verbaut ist, welches z.B. die Leistung einer vorhandenen Bestands-PV-Anlage erfasst. Dieses zusätzliche SmartMeter muss dann als "Zähler 2" / "Position 2" im Wechselrichter-Konfigurationsmenü konfiguriert sein. ')])),_:1}),o(a,{title:"SolarEdge-Geräte-ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.modbus_id"))},null,8,["model-value"]),o(a,{title:"SolarEdge-Meter-ID","model-value":n.component.configuration.meter_id,min:"1",max:"255",required:"","onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.meter_id"))},null,8,["model-value"]),o(d,{title:"Leistung invertieren","not-selected":"Bitte auswählen",options:[{value:1,text:"nein"},{value:-1,text:"ja"}],"model-value":n.component.configuration.factor,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.factor"))},{help:r(()=>e[5]||(e[5]=[s(" Einige externe SolarEdge Wechselrichter liefern die Leistung mit falschem Vorzeichen. In diesem Fall ist die Leistung zu invertieren. ")])),_:1},8,["model-value"])])}const L=p(b,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/external_inverter.vue"]]);export{L as default};
diff --git a/web/settings/assets/index-f9fda857.js b/web/settings/assets/index-c79666b6.js
similarity index 96%
rename from web/settings/assets/index-f9fda857.js
rename to web/settings/assets/index-c79666b6.js
index 76609327d1..f6ef6528cb 100644
--- a/web/settings/assets/index-f9fda857.js
+++ b/web/settings/assets/index-c79666b6.js
@@ -1 +1 @@
-import{_ as y,k as r,l as d,m as h,q as k,u as g,x as o,y as p,z as b,A as _,B as c,D as m,E as B,F as x,G as S,I as z,J as T,K as P,L as G,M as J,N as f,O as K,P as Q,T as R,Q as Y,R as j,S as Z,U as X,V as ee,W as te,X as se,Y as ne,Z as oe}from"./vendor-a21b3a62.js";import{l as C,f as I,a as V,b as ae,c as le,d as ie,e as re,F as O,g as D,h as de,i as ue,j as ce,k as pe,m as me,n as fe,o as ge,p as he,q as _e,r as be,s as ve,t as ye,u as we,v as ke,w as Se,x as Be,y as Ce,z as Oe,A as $e,B as xe,C as Te,D as Ie,E as Ve,G as Me,H as Ae,I as qe,J as Pe}from"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import{p as He,a as De}from"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-jquery-a5dbbab1.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))u(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&u(a)}).observe(document,{childList:!0,subtree:!0});function n(l){const s={};return l.integrity&&(s.integrity=l.integrity),l.referrerPolicy&&(s.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?s.credentials="include":l.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function u(l){if(l.ep)return;l.ep=!0;const s=n(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}}};function Le(t,e,n,u,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(t.$slots,"default")],2)}const je=y(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));C.add(I,V,ae,le,ie,re);const Re={name:"OpenwbArrayInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!0,default:"#TITLE#"},modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let t=this.value;t.push(this.newTag),t.sort(),this.value=t,this.newTag=""}this.$refs.tagInput.focus()},removeTag(t){let e=this.value;e.splice(t,1),this.value=e}}},Ne={class:"form-row mb-1"},Fe={class:"col-md-8"},Ue={class:"form-row"},ze={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Ne,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Fe,[o("div",Ue,[o("div",ze,[o("div",Ge,[o("div",Je,[h(t.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),B(o("input",S({ref:"tagInput","onUpdate:modelValue":e[1]||(e[1]=i=>l.newTag=i),type:"text",class:"form-control"},t.$attrs,{onKeyup:e[2]||(e[2]=z((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[x,l.newTag]]),o("div",Ke,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:e[3]||(e[3]=(...i)=>s.addTag&&s.addTag(...i))},[h(t.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):c("",!0),(r(!0),d(T,null,P(s.value,(i,v)=>(r(),d("span",{key:v,class:"tag"},[h(t.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(i)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const et=y(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},nt={class:"avatar"};function ot(t,e,n,u,l,s){return r(),d("div",nt,[h(t.$slots,"default",{},()=>[e[0]||(e[0]=p("?"))],!0)])}const at=y(st,[["render",ot],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),lt=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));C.add(I,V,D);const it={name:"OpenwbButtonGroupInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean],default:void 0},buttons:{type:Array,required:!0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ut={class:"form-row"},ct={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",rt,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[h(t.$slots,"default",{},()=>[p(b(n.title),1)]),t.$slots.help?(r(),_(a,{key:0,"fixed-width":"",icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",dt,[o("div",ut,[o("div",ct,[(r(!0),d(T,null,P(n.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=v=>s.value=v),type:"radio",value:i.buttonValue,ref_for:!0},t.$attrs),null,16,pt),[[G,s.value]]),h(t.$slots,"label-"+i.buttonValue,{},()=>[p(b(i.text),1)]),m(a,{icon:["fas","check"],style:J([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[h(t.$slots,"help")])):c("",!0)])])}const gt=y(it,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:gt},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const _t={name:"OpenwbButtonInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},buttonText:{type:String,required:!1,default:void 0},disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}},emits:["buttonClicked"],data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(t){this.$emit("buttonClicked",t)}}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},yt={class:"form-row"},wt={key:0,class:"form-row alert alert-info my-1 small"};function kt(t,e,n,u,l,s){const a=g("font-awesome-icon"),i=g("openwb-base-click-button");return r(),d("div",bt,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",vt,[o("div",yt,[m(i,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},t.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[h(t.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",wt,[h(t.$slots,"help")])):c("",!0)])])}const St=y(_t,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Bt=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));C.add(de,ue);const Ct={name:"OpenwbCard",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(t)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},xt={class:"col"},Tt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:1,class:"card-footer"};function Mt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:e[0]||(e[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[o("div",Ot,[o("div",$t,[o("div",xt,[h(t.$slots,"header",{collapsed:l.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Tt,[t.$slots.actions?(r(),d("span",It,[h(t.$slots,"actions",{collapsed:l.isCollapsed})])):c("",!0),n.collapsible?(r(),_(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):c("",!0)])],2),l.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},t.$attrs),[h(t.$slots,"default")],16)):c("",!0),t.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Vt,[h(t.$slots,"footer")])):c("",!0)],2)}const At=y(Ct,[["render",Mt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),qt=Object.freeze(Object.defineProperty({__proto__:null,default:At},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Pt={name:"OpenwbCheckboxInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Ht={class:"form-row mb-1"},Dt={class:"col-md-8"},Et={class:"form-row"},Lt={key:0,class:"form-row alert alert-info my-1 small"};function jt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Ht,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Dt,[o("div",Et,[B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"form-control",type:"checkbox"},t.$attrs),null,16),[[K,s.value]])]),l.showHelp?(r(),d("span",Lt,[h(t.$slots,"help")])):c("",!0)])])}const Wt=y(Pt,[["render",jt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Rt=Object.freeze(Object.defineProperty({__proto__:null,default:Wt},Symbol.toStringTag,{value:"Module"}));const Nt={name:"OpenwbClickButton",props:{title:{type:String,required:!1,default:""}},emits:["buttonClicked"],methods:{click(t){this.$emit("buttonClicked",t)}}};function Ft(t,e,n,u,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:e[0]||(e[0]=Q((...a)=>s.click&&s.click(...a),["prevent"]))},[h(t.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Ut=y(Nt,[["render",Ft],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),zt=Object.freeze(Object.defineProperty({__proto__:null,default:Ut},Symbol.toStringTag,{value:"Module"}));C.add(ce,pe);const Gt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const t=window.getSelection(),e=document.createRange();e.selectNodeContents(this.$refs["slot-wrapper"]),t.removeAllRanges(),t.addRange(e);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const t=document.body.createTextRange();t.moveToElementText(this.$refs["slot-wrapper"]),t.select()}else console.warn("could not select text, unsupported browser")}}}},Jt=["title"];function Kt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:e[0]||(e[0]=(...i)=>s.click&&s.click(...i))},[h(t.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Jt)}const Qt=y(Gt,[["render",Kt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));C.add(I,V,D);const Zt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},inheritAttrs:!1,data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Xt={key:0,class:"actions"},es={class:""},ts={key:0,class:"form-row alert alert-info small"};function ss(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d(T,null,[o("div",S({class:"card-text card-text-heading"},t.$attrs),[o("div",{class:"heading-text",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[h(t.$slots,"default",{},void 0,!0),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),t.$slots.actions?(r(),d("span",Xt,[h(t.$slots,"actions",{},void 0,!0)])):c("",!0)],16),o("div",es,[l.showHelp?(r(),d("span",ts,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])],64)}const ns=y(Zt,[["render",ss],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),os=Object.freeze(Object.defineProperty({__proto__:null,default:ns},Symbol.toStringTag,{value:"Module"})),as={name:"OpenwbModalDialog",props:{title:{type:String,required:!1,default:""},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(t){return["around","between","center","end","start"].indexOf(t)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},emits:["modal-result"],computed:{myButtons(){var t=[];return this.buttons!==void 0&&(t=this.buttons),this.preventClose||t.push({text:"Schließen",event:"close"}),t}},methods:{handleClick(t){t.stopPropagation();let e=t.target.getAttribute("data-event");e===null&&(e="close"),(e!="close"||!this.preventClose)&&this.$emit("modal-result",e)}}},ls={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},is={class:"modal-content"},rs={class:"modal-title"},ds={class:"modal-body"},us=["data-event"];function cs(t,e,n,u,l,s){return n.show?(r(),_(R,{key:0,to:"body"},[e[4]||(e[4]=o("div",{class:"modal-backdrop fade show"},null,-1)),o("div",{class:"modal fade d-block show",role:"dialog",onClick:e[2]||(e[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ls,[o("div",is,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",rs,b(n.title),1),n.preventClose?c("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:e[0]||(e[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",ds,[h(t.$slots,"default",{},()=>[e[3]||(e[3]=p("# Body #"))])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(T,null,P(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:e[1]||(e[1]=(...i)=>s.handleClick&&s.handleClick(...i))},b(a.text),11,us))),128))],2)):c("",!0)])])])])):c("",!0)}const ps=y(as,[["render",cs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),ms=Object.freeze(Object.defineProperty({__proto__:null,default:ps},Symbol.toStringTag,{value:"Module"}));C.add(I,V,me);const fs={name:"OpenwbNumberInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},precision:{type:Number,default:void 0},emptyValue:{type:[Number,null],required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(t){(isNaN(t)||typeof t!="number")&&(t=this.emptyValue),this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},gs={class:"form-row mb-1"},hs={class:"col-md-8"},_s={class:"form-row"},bs={class:"input-group"},vs={class:"input-group-prepend"},ys={class:"input-group-text"},ws={key:0,class:"input-group-append"},ks={class:"input-group-text"},Ss={key:0,class:"form-row alert alert-info my-1 small"};function Bs(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",gs,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",hs,[o("div",_s,[o("div",bs,[o("div",vs,[o("div",ys,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),type:"number",class:"form-control"},t.$attrs),null,16),[[x,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",ws,[o("div",ks,b(n.unit),1)])):c("",!0)])]),l.showHelp?(r(),d("span",Ss,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const Cs=y(fs,[["render",Bs],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Os=Object.freeze(Object.defineProperty({__proto__:null,default:Cs},Symbol.toStringTag,{value:"Module"}));C.add(I,V,fe,ge);const $s={name:"OpenwbRangeInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},min:{type:Number,required:!0,default:0},max:{type:Number,required:!0,default:100},step:{type:Number,required:!1,default:1},labels:{type:Array,required:!1,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var t;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?t=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):t=this.sliderValue,typeof t=="number"&&(t=t.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(t+=" "+this.unit)),t},precision(){if(!isFinite(this.step))return 0;for(var t=1,e=0;Math.round(this.step*t)/t!==this.step;)t*=10,e++;return e},sliderValue:{get(){if(this.labels){var t=void 0;for(let e=0;e<this.labels.length;e++)if(this.labels[e].value==this.modelValue){t=e;break}return t===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):t}return this.modelValue},set(t){if(this.labels){var e=this.labels[t].value;this.$emit("update:modelValue",e)}else this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var t=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(t*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var t=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(t*Math.pow(10,this.precision))/Math.pow(10,this.precision)}}},xs={class:"form-row mb-1"},Ts={class:"col-md-8"},Is={class:"form-row vaRow mb-1"},Vs={key:0,class:"col-2 col-form-label valueLabel"},Ms={class:"col"},As=["min","max","step"],qs={key:0,class:"form-row alert alert-info my-1 small"},Ps={class:"col"};function Hs(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",xs,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Ts,[o("div",Is,[s.label?(r(),d("label",Vs,b(s.label),1)):c("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[1]||(e[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),o("div",Ms,[B(o("input",S({"onUpdate:modelValue":e[2]||(e[2]=i=>s.sliderValue=i),type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step},t.$attrs),null,16,As),[[x,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[3]||(e[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[o("div",Ps,[h(t.$slots,"help",{},void 0,!0)])])):c("",!0)])])}const Ds=y($s,[["render",Hs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Es=Object.freeze(Object.defineProperty({__proto__:null,default:Ds},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Ls={name:"OpenwbSelectInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Array,null],required:!1,default:void 0},groups:{type:Array,required:!1,default:void 0},options:{type:Array,required:!1,default:void 0},notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},js={class:"form-row mb-1"},Ws={class:"col-md-8"},Rs={class:"form-row"},Ns={key:0,value:void 0,disabled:""},Fs=["value"],Us=["label"],zs=["value"],Gs={key:0,class:"form-row alert alert-info my-1 small"};function Js(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",js,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Ws,[o("div",Rs,[B(o("select",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"col form-control"},t.$attrs),[n.notSelected!==void 0?(r(),d("option",Ns," -- "+b(n.notSelected)+" -- ",1)):c("",!0),(r(!0),d(T,null,P(n.options,i=>(r(),d("option",{key:i.value,value:i.value},b(i.text),9,Fs))),128)),(r(!0),d(T,null,P(n.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(T,null,P(i.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,zs))),128))],8,Us))),128))],16),[[Y,s.value]]),h(t.$slots,"append")]),l.showHelp?(r(),d("span",Gs,[h(t.$slots,"help")])):c("",!0)])])}const Ks=y(Ls,[["render",Js],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Qs=Object.freeze(Object.defineProperty({__proto__:null,default:Ks},Symbol.toStringTag,{value:"Module"}));C.add(D,he,_e);const Ys={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},emits:["reset","defaults","save"],data(){return{showModalReset:!1,showModalDefaults:!1}},computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(t){this.showModalReset=!1,t=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(t){this.showModalDefaults=!1,t=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},Zs={class:"row justify-content-center mb-1"},Xs={class:"col-md-4 d-flex py-1 justify-content-center"},en={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},tn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function sn(t,e,n,u,l,s){const a=g("openwb-base-modal-dialog"),i=g("font-awesome-icon");return r(),d(T,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success","prevent-close":!0},{default:f(()=>e[3]||(e[3]=[p(" Einstellungen werden gespeichert... ")])),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>e[4]||(e[4]=[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")])),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>e[5]||(e[5]=[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")])),_:1},8,["show","onModalResult"]),o("div",Zs,[o("div",Xs,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:e[0]||(e[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[e[6]||(e[6]=p(" Speichern ")),m(i,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?c("",!0):(r(),d("div",en,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:e[1]||(e[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[e[7]||(e[7]=p(" Änderungen verwerfen ")),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?c("",!0):(r(),d("div",tn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:e[2]||(e[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[e[8]||(e[8]=p(" Werkseinstellungen ")),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const nn=y(Ys,[["render",sn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),on=Object.freeze(Object.defineProperty({__proto__:null,default:nn},Symbol.toStringTag,{value:"Module"}));C.add(I,V,be,ve,ye,we,ke,Se,Be,Ce,Oe,$e,xe,Te);const an={name:"OpenwbTextInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(t)!==-1},default:"text"},pattern:{type:String,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},emptyValue:{type:[String,Object,null],required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.error("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else t==""&&(t=this.emptyValue),this.$emit("update:modelValue",t)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(t){var e,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+t),e=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}e>this.inputRef.max||e<this.inputRef.min||(this.value=e)}}},ln={class:"form-row mb-1"},rn={class:"col-md-8"},dn={class:"form-row"},un={class:"input-group"},cn={class:"input-group-prepend"},pn={class:"input-group-text"},mn=["pattern"],fn=["pattern"],gn=["type","pattern"],hn=["type"],_n={key:9,class:"input-group-append"},bn={class:"input-group-text"},vn={class:"input-group-text"},yn={key:0,class:"form-row alert alert-info my-1 small"};function wn(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",ln,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",rn,[o("div",dn,[o("div",un,[o("div",cn,[o("div",pn,[n.subtype=="text"?(r(),_(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):c("",!0),n.subtype=="email"?(r(),_(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):c("",!0),n.subtype=="host"?(r(),_(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):c("",!0),n.subtype=="url"?(r(),_(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):c("",!0),n.subtype=="user"?(r(),_(a,{key:4,"fixed-width":"",icon:["fas","user"]})):c("",!0),n.subtype=="json"?(r(),_(a,{key:5,"fixed-width":"",icon:["fas","code"]})):c("",!0),n.subtype=="password"?(r(),_(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):c("",!0),n.subtype=="time"?(r(),_(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):c("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),_(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):c("",!0)])]),["text","user"].includes(n.subtype)?B((r(),d("input",S({key:0,ref:"textInput","onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),type:"text",class:["form-control",{invalid:l.inputInvalid}]},t.$attrs,{pattern:n.pattern}),null,16,mn)),[[x,s.value]]):c("",!0),n.subtype=="json"?B((r(),d("input",S({key:1,ref:"jsonInput","onUpdate:modelValue":e[2]||(e[2]=i=>s.value=i),type:"text",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,fn)),[[x,s.value]]):c("",!0),n.subtype=="password"?B((r(),d("input",S({key:2,ref:"passwordInput","onUpdate:modelValue":e[3]||(e[3]=i=>s.value=i),type:l.showPassword?"text":"password",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,gn)),[[j,s.value]]):c("",!0),n.subtype=="host"?B((r(),d("input",S({key:3,ref:"hostInput","onUpdate:modelValue":e[4]||(e[4]=i=>s.value=i),type:"text",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),["email","url"].includes(n.subtype)?B((r(),d("input",S({key:4,"onUpdate:modelValue":e[5]||(e[5]=i=>s.value=i),refs:"urlInput",type:n.subtype,class:"form-control"},t.$attrs),null,16,hn)),[[j,s.value]]):c("",!0),n.subtype=="time"?B((r(),d("input",S({key:5,ref:"timeInput","onUpdate:modelValue":e[6]||(e[6]=i=>s.value=i),type:"time",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="date"?B((r(),d("input",S({key:6,ref:"dateInput","onUpdate:modelValue":e[7]||(e[7]=i=>s.value=i),type:"date",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="month"?B((r(),d("input",S({key:7,ref:"monthInput","onUpdate:modelValue":e[8]||(e[8]=i=>s.value=i),type:"month",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="year"?B((r(),d("input",S({key:8,ref:"yearInput","onUpdate:modelValue":e[9]||(e[9]=i=>s.value=i),type:"number",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.unit?(r(),d("div",_n,[o("div",bn,b(n.unit),1)])):c("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:e[10]||(e[10]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[o("div",vn,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):c("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:e[11]||(e[11]=i=>s.modify(-1))},e[13]||(e[13]=[o("div",{class:"input-group-text"}," - ",-1)]))):c("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:e[12]||(e[12]=i=>s.modify(1))},e[14]||(e[14]=[o("div",{class:"input-group-text"}," + ",-1)]))):c("",!0)])]),l.showHelp?(r(),d("span",yn,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const kn=y(an,[["render",wn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Sn=Object.freeze(Object.defineProperty({__proto__:null,default:kn},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Bn={name:"OpenwbTextareaInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","json"].indexOf(t)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.warn("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else this.$emit("update:modelValue",t)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Cn={class:"form-row mb-1"},On={class:"col-md-8"},$n={class:"form-row"},xn={class:"input-group"},Tn={class:"input-group-prepend"},In={class:"input-group-text"},Vn={key:2,class:"input-group-append"},Mn={class:"input-group-text"},An={class:"form-text text-muted text-right"},qn={key:0,class:"form-row alert alert-info my-1 small"};function Pn(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Cn,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",On,[o("div",$n,[o("div",xn,[o("div",Tn,[o("div",In,[n.subtype=="text"?(r(),_(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):c("",!0),n.subtype=="json"?(r(),_(a,{key:1,"fixed-width":"",icon:["fas","code"]})):c("",!0)])]),n.subtype==="json"?B((r(),d("textarea",S({key:0,ref:"jsonInput","onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"form-control"},t.$attrs),null,16)),[[x,s.value,void 0,{lazy:!0}]]):B((r(),d("textarea",S({key:1,"onUpdate:modelValue":e[2]||(e[2]=i=>s.value=i),class:"form-control"},t.$attrs),null,16)),[[x,s.value]]),t.$attrs.maxlength?(r(),d("div",Vn,[o("div",Mn,[o("small",An,b(s.length)+" / "+b(t.$attrs.maxlength),1)])])):c("",!0)])]),l.showHelp?(r(),d("span",qn,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const Hn=y(Bn,[["render",Pn],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Dn=Object.freeze(Object.defineProperty({__proto__:null,default:Hn},Symbol.toStringTag,{value:"Module"}));const En={name:"OpenwbToast",props:{topic:{type:String,required:!0},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},source:{type:String,required:!0,validator:function(t){return["system","client","command"].indexOf(t)!==-1}},timestamp:{type:Number,required:!0}},emits:["dismiss","hide"],data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const t={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var e=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const u=new Date-this.timestamp*1e3;for(var l in t)if(Math.abs(u)>t[l]){this.relativeTime=e.format(Math.round(-u/t[l]),l);break}u>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}}},Ln={key:0,class:"time-diff"},jn={class:"toast-body"};function Wn(t,e,n,u,l,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[e[2]||(e[2]=o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),n.timestamp?(r(),d("small",Ln,b(l.relativeTime),1)):c("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:e[0]||(e[0]=(...a)=>s.dismiss&&s.dismiss(...a))},e[1]||(e[1]=[o("span",{"aria-hidden":"true"},"×",-1)]))],2),o("div",jn,[h(t.$slots,"default",{},void 0,!0)])],2)}const Rn=y(En,[["render",Wn],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Nn=Object.freeze(Object.defineProperty({__proto__:null,default:Rn},Symbol.toStringTag,{value:"Module"}));C.add(Ie);const Fn={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},Un={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},zn={ref:"navbarButton",class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar"},Gn={id:"collapsibleNavbar",ref:"collapsibleNavbar",class:"collapse navbar-collapse navbar-nav-scroll"},Jn={class:"navbar-nav"},Kn={class:"nav-item"},Qn={class:"nav-item dropdown nav-separator-after"},Yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Zn={class:"nav-item dropdown"},Xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},eo={class:"nav-item dropdown"},to={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},so={class:"nav-item dropdown"},no={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},oo={class:"nav-item dropdown"},ao={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},lo={class:"nav-item nav-separator-before"},io={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function ro(t,e,n,u,l,s){const a=g("router-link"),i=g("font-awesome-icon");return r(),d("nav",Un,[e[31]||(e[31]=o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),o("button",zn,e[0]||(e[0]=[o("span",{class:"navbar-toggler-icon"},null,-1)]),512),o("div",Gn,[o("ul",Jn,[o("li",Kn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>e[1]||(e[1]=[p(" Status ")])),_:1})]),o("li",Qn,[e[4]||(e[4]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),o("div",Yn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[2]||(e[2]=[p(" Ladeprotokoll ")])),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[3]||(e[3]=[p(" Diagramme ")])),_:1})])]),o("li",Zn,[e[7]||(e[7]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),o("div",Xn,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[5]||(e[5]=[p(" Allgemein ")])),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[6]||(e[6]=[p(" Optionale Hardware ")])),_:1})])]),o("li",eo,[e[13]||(e[13]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),o("div",to,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[8]||(e[8]=[p(" Übergreifendes ")])),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[9]||(e[9]=[p(" Sofortladen ")])),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[10]||(e[10]=[p(" PV-Laden ")])),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[11]||(e[11]=[p(" Zeitladen ")])),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[12]||(e[12]=[p(" Zielladen ")])),_:1})])]),o("li",so,[e[20]||(e[20]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),o("div",no,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[14]||(e[14]=[p(" Geräte und Komponenten ")])),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[15]||(e[15]=[p(" Lastmanagement ")])),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[16]||(e[16]=[p(" Ladepunkte ")])),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[17]||(e[17]=[p(" Fahrzeuge ")])),_:1}),e[18]||(e[18]=o("div",{class:"dropdown-divider"},null,-1)),e[19]||(e[19]=o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1))])]),o("li",oo,[e[29]||(e[29]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),o("div",ao,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[21]||(e[21]=[p(" Einrichtungsassistent ")])),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[22]||(e[22]=[p(" openWB Cloud ")])),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[23]||(e[23]=[p(" MQTT-Brücken ")])),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[24]||(e[24]=[p(" Fehlersuche ")])),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[25]||(e[25]=[p(" Support ")])),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[26]||(e[26]=[p(" Datenverwaltung ")])),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[27]||(e[27]=[p(" System ")])),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[28]||(e[28]=[p(" Rechtliches ")])),_:1})])]),o("li",lo,[o("a",io,[e[30]||(e[30]=p(" Wiki ")),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const uo=y(Fn,[["render",ro],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const co={name:"OpenwbPageFooter"},po={id:"footer",class:"footer bg-dark text-light font-small"},mo={class:"container text-center"};function fo(t,e,n,u,l,s){return r(),d("footer",po,[o("div",mo,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(t.$route.meta.heading),1)])])}const go=y(co,[["render",fo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);C.add(Ve);const ho={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},_o={class:"mt-3 alert alert-dark text-center"},bo={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},vo={type:"submit",class:"btn btn-primary"};function yo(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",_o,[e[3]||(e[3]=p(" Open Source made with love!")),e[4]||(e[4]=o("br",null,null,-1)),e[5]||(e[5]=p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben")),e[6]||(e[6]=o("br",null,null,-1)),o("form",bo,[e[1]||(e[1]=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1)),e[2]||(e[2]=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1)),o("button",vo,[e[0]||(e[0]=p(" Spenden ")),m(a,{icon:["fab","paypal"]})])])])}const wo=y(ho,[["render",yo],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),ko={name:"ComponentState",emits:["reset","defaults","save"],data(){return{mqttTopicsToSubscribe:[]}},computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)},methods:{updateState(t,e,n=void 0){console.debug("updateState:",t,e,n),this.$store.commit({type:"updateTopic",topic:t,objectPath:n,payload:e})},ac_current2dc_power(t){return parseFloat((t*3*230/1e3).toFixed(2))},dc_power2ac_current(t){return parseFloat((t*1e3/230/3).toFixed(2))},getWildcardIndexList(t,e=!1){let n=t;e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let u=Object.keys(this.$store.state.mqtt).filter(l=>l.match(n));return u.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),u},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(u=>u.match(n)).reduce((u,l)=>({...u,[l]:this.$store.state.mqtt[l]}),{})},formatDate(t,e={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(t).toLocaleDateString(void 0,e)},formatNumber(t,e=0,n=e,u=1){if(!(t==null||isNaN(t)))return(t*u).toLocaleString(void 0,{minimumFractionDigits:e,maximumFractionDigits:n})},formatNumberTopic(t,e=0,n=e,u=1){return this.$store.state.mqtt[t]?this.formatNumber(this.$store.state.mqtt[t],e,n,u):"-"},formatPhaseArrayNumberTopic(t,e=0,n=e,u=1){return this.$store.state.mqtt[t]?this.$store.state.mqtt[t].map(l=>this.formatNumber(l,e,n,u)).join(" / "):"- / - / -"},translateChargeMode(t){switch(t){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",t),t}}}},N=y(ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);C.add(Me,Ae);const So={name:"OpenwbPageMessages",components:{FontAwesomeIcon:O,FontAwesomeLayers:qe,FontAwesomeLayersText:Pe},mixins:[N],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((e,n)=>((e=="light"&&["info","success","warning","danger"].includes(n.type)||e=="info"&&["success","warning","danger"].includes(n.type)||e=="success"&&["warning","danger"].includes(n.type)||e=="warning"&&n.type=="danger")&&(e=n.type),e),"light")},messages(){const t=[];return this.systemMessages.forEach(e=>{t.push(e)}),this.clientMessages.forEach(e=>{t.push(e)}),t.sort(this.compareMessagesByTimestamp),t},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(t=>!this.hiddenMessages.includes(t.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let t=this.getWildcardTopics("openWB/system/messages/+");var e=[];for(const[n,u]of Object.entries(t))e.push({topic:n,...u});return e},clientMessages(){let t=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var e=[];for(const[n,u]of Object.entries(t))e.push({topic:n,...u});return e}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(t,e){return e.timestamp-t.timestamp},clearTopic(t){this.$root.doPublish(t,void 0)},dismissMessage(t){this.clearTopic(t.topic);var e=this.hiddenMessages.indexOf(t.topic);e>-1&&this.hiddenMessages.splice(e,1)},dismissAllMessages(){this.messages.forEach(t=>{this.clearTopic(t.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(t){this.hiddenMessages.includes(t.topic)||this.hiddenMessages.push(t.topic)}}},Bo=["innerHTML"];function Co(t,e,n,u,l,s){const a=g("font-awesome-icon"),i=g("font-awesome-layers-text"),v=g("font-awesome-layers"),$=g("openwb-base-alert"),M=g("openwb-base-click-button"),A=g("openwb-base-toast");return r(),d(T,null,[(r(),_(R,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",l.showAllMessages?"active":""]),onClick:e[0]||(e[0]=(...q)=>s.toggleAllMessages&&s.toggleAllMessages(...q))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:f(()=>[m(a,{"fixed-width":"",icon:l.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),_(i,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):c("",!0)]),_:1})],2)])),s.recentMessages.length>0||l.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",l.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),_($,{key:0,subtype:"info"},{default:f(()=>e[1]||(e[1]=[p(" Keine Nachrichten vorhanden. ")])),_:1})):l.showAllMessages?(r(),_(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:f(()=>e[2]||(e[2]=[p(" Alle Nachrichten löschen ")])),_:1},8,["onButtonClicked"])):c("",!0),(r(!0),d(T,null,P(s.recentMessages,q=>(r(),_(A,{key:q.topic,topic:q.topic,source:q.source,subtype:q.type,timestamp:q.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:f(()=>[o("span",{innerHTML:q.message},null,8,Bo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):c("",!0)],64)}const Oo=y(So,[["render",Co],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),$o={name:"OpenwbPageBlocker",mixins:[N],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(t){t=="reload"?location.reload():console.warn("unknown event",t)}}},xo={class:"openwb-blocker"},To={key:0},Io={key:1},Vo={key:2},Mo={key:3};function Ao(t,e,n,u,l,s){const a=g("openwb-base-modal-dialog");return r(),d("div",xo,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark","prevent-close":!0,buttons:s.myButtons,onModalResult:e[0]||(e[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",To," Der Systemstart ist noch nicht abgeschlossen. ")):c("",!0),s.updateInProgress?(r(),d("p",Io," Es wird eine Systemaktualisierung ausgeführt. ")):c("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",Vo," Bitte die Seite neu laden. ")):(r(),d("p",Mo," Bitte warten... "))]),_:1},8,["show","title","buttons"])])}const qo=y($o,[["render",Ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const Po={name:"OpenwbSettingsApp",components:{NavBar:uo,PageFooter:go,DonationBanner:wo,Messages:Oo,Blocker:qo},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch(t){console.error("mqttClientId error",t);return}},topicList(){return Object.keys(this.$store.state.mqtt)}},created(){this.createConnection()},methods:{async saveValues(t=void 0){function e(u){return new Promise(l=>setTimeout(l,u))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};t===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(t)?t.forEach(u=>{n[u]=this.$store.state.mqtt[u]}):console.error("expected array, got ",typeof t);for(const[u,l]of Object.entries(n)){let s=u.replace("openWB/","openWB/set/");console.debug("saving data:",s,l),this.doPublish(s,l),await e(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(t=this.topicList){console.debug("resetting values..."),console.debug("topics: ",t),this.doUnsubscribe(t),this.doSubscribe(t)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(t){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",t,!1)},createConnection(){const{protocol:t,host:e,port:n,endpoint:u,...l}=this.connection,s=`${t}://${e}:${n}${u}`;console.debug("connecting to broker:",s);try{this.client=Z.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let v;try{v=JSON.parse(i.toString())}catch($){console.debug("Json parsing failed, fallback to string: ",a,$),v=i.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(t){console.debug("doSubscribe",t),t.forEach(e=>{this.$store.commit("addSubscription",e),this.$store.getters.subscriptionCount(e)==1?(e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.$store.commit("addTopic",{topic:e,payload:void 0}),this.client.subscribe(e,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",e)})},doUnsubscribe(t){console.debug("doUnsubscribe",t),t.forEach(e=>{this.$store.commit("removeSubscription",e),this.$store.getters.subscriptionCount(e)==0?(this.client.unsubscribe(e,n=>{n&&console.error("Unsubscribe error",n)}),e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",e),this.$store.commit("removeTopic",e))):console.debug("Still subscribed to topic: ",e)})},doPublish(t,e,n=!0,u=2){let l={qos:u,retain:n};this.client.publish(t,JSON.stringify(e),l,s=>{s&&console.error("Publish error",s)})},postClientMessage(t,e="secondary"){console.debug("postMessage:",t,e);const n=Date.now(),u="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:u,payload:{message:t,type:e,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(u=>u.match(n)).reduce((u,l)=>({...u,[l]:this.$store.state.mqtt[l]}),{})}}},Ho={role:"main",class:"container"},Do={id:"content"};function Eo(t,e,n,u,l,s){const a=g("nav-bar"),i=g("router-view"),v=g("donation-banner"),$=g("page-footer"),M=g("messages"),A=g("blocker");return r(),d(T,null,[o("header",null,[m(a)]),o("div",Ho,[o("div",Do,[o("h1",null,b(t.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(A)],64)}const Lo=y(Po,[["render",Eo],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),jo="modulepreload",Wo=function(t){return"/openWB/web/settings/"+t},W={},w=function(e,n,u){if(!n||n.length===0)return e();const l=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=Wo(s),s in W)return;W[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!u)for(let M=l.length-1;M>=0;M--){const A=l[M];if(A.href===s&&(!a||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":jo,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,A)=>{$.addEventListener("load",M),$.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};F.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const H=X({state:F,mutations:{storeLocal(t,e){t.local[e.name]=e.value},addTopic(t,e){Object.keys(t.mqtt).includes(e.topic)?console.warn("topic already exists: ",e.topic):t.mqtt[e.topic]=e.payload},removeTopic(t,e){delete t.mqtt[e]},updateTopic(t,e){const n=(u,l,s)=>l.split(".").reduce((a,i,v)=>a[i]=l.split(".").length===++v?s:a[i]||{},u);e.topic in t.mqtt||!(e.topic in t.examples)?e.objectPath!=null?n(t.mqtt[e.topic],e.objectPath,e.payload):t.mqtt[e.topic]=e.payload:(console.debug("topic not found in state.mqtt: ",e.topic),e.topic in t.examples?e.objectPath!=null?n(t.examples[e.topic],e.objectPath,e.payload):t.examples[e.topic]=e.payload:console.warn("topic not found in state: ",e.topic," giving up"))},addSubscription(t,e){e in t.mqttSubscriptions?t.mqttSubscriptions[e]+=1:t.mqttSubscriptions[e]=1,console.debug("subscription count: ",e,t.mqttSubscriptions[e])},removeSubscription(t,e){e in t.mqttSubscriptions&&(t.mqttSubscriptions[e]-=1,t.mqttSubscriptions[e]<=0&&delete t.mqttSubscriptions[e])}},actions:{},modules:{},getters:{usageTermsAcknowledged(t){return new Promise(e=>{if(t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)e(t.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,u;n=setTimeout(()=>{clearInterval(u),e(!1)},5e3),u=setInterval(()=>{t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(u),e(t.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(t){return new Promise(e=>{if(t.mqtt["openWB/system/installAssistantDone"]!==void 0)e(t.mqtt["openWB/system/installAssistantDone"]);else{var n,u;n=setTimeout(()=>{clearInterval(u),e(!1)},5e3),u=setInterval(()=>{t.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(u),e(t.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:t=>e=>t.mqttSubscriptions[e]||0}}),U=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>w(()=>import("./Status-bc2c7d27.js"),["assets/Status-bc2c7d27.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-5fa56b74.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>w(()=>import("./ChargeLog-a730dd70.js"),["assets/ChargeLog-a730dd70.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>w(()=>import("./Chart-19a9b222.js"),["assets/Chart-19a9b222.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-5fa56b74.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>w(()=>import("./GeneralConfig-1c49e709.js").then(t=>t.a),["assets/GeneralConfig-1c49e709.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>w(()=>import("./OptionalComponents-36fd698f.js").then(t=>t.O),["assets/OptionalComponents-36fd698f.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>w(()=>import("./GeneralChargeConfig-f6ca097b.js").then(t=>t.G),["assets/GeneralChargeConfig-f6ca097b.js","assets/dynamic-import-helper-be004503.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>w(()=>import("./InstantChargeConfig-61c4fd49.js"),["assets/InstantChargeConfig-61c4fd49.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>w(()=>import("./PVChargeConfig-13001890.js"),["assets/PVChargeConfig-13001890.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>w(()=>import("./TimeChargeConfig-9d481afa.js"),["assets/TimeChargeConfig-9d481afa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>w(()=>import("./ScheduledChargeConfig-6a548cac.js"),["assets/ScheduledChargeConfig-6a548cac.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>w(()=>import("./HardwareInstallation-70f156e6.js").then(t=>t.a),["assets/HardwareInstallation-70f156e6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>w(()=>import("./LoadManagementConfig-da717df7.js"),["assets/LoadManagementConfig-da717df7.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>w(()=>import("./ChargePointInstallation-8dff21bc.js").then(t=>t.c),["assets/ChargePointInstallation-8dff21bc.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>w(()=>import("./VehicleConfig-e8ea05c9.js").then(t=>t.b),["assets/VehicleConfig-e8ea05c9.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>w(()=>import("./CloudConfig-595194ca.js"),["assets/CloudConfig-595194ca.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>w(()=>import("./MqttBridgeConfig-2e7d7922.js"),["assets/MqttBridgeConfig-2e7d7922.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>w(()=>import("./DebugConfig-d1261f2b.js"),["assets/DebugConfig-d1261f2b.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>w(()=>import("./Support-a91e414e.js"),["assets/Support-a91e414e.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>w(()=>import("./LegalSettings-ddd5b296.js"),["assets/LegalSettings-ddd5b296.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>w(()=>import("./System-aff61250.js"),["assets/System-aff61250.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>w(()=>import("./DataManagement-b9730b64.js").then(t=>t.a),["assets/DataManagement-b9730b64.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>w(()=>import("./InstallAssistant-6d2c34f9.js"),["assets/InstallAssistant-6d2c34f9.js","assets/dynamic-import-helper-be004503.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])}];U.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>w(()=>import("./TestingStore-c3e1bdb5.js"),["assets/TestingStore-c3e1bdb5.js","assets/OpenwbSortableList-3ce7f991.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])});const E=ee({history:te(),routes:U});E.beforeEach(async t=>{if(await H.getters.usageTermsAcknowledged){if(!await H.getters.installAssistantDone&&t.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(t.name!=="LegalSettings")return{name:"LegalSettings"}});E.afterEach(t=>{t.meta.heading?document.title="openWB | "+t.meta.heading:document.title="openWB"});const L=se(Lo);L.use(H).use(E).use(He,De);const Ro=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":lt,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Bt,"./components/OpenwbBaseCard.vue":qt,"./components/OpenwbBaseCheckboxInput.vue":Rt,"./components/OpenwbBaseClickButton.vue":zt,"./components/OpenwbBaseCopyToClipboard.vue":Yt,"./components/OpenwbBaseHeading.vue":os,"./components/OpenwbBaseModalDialog.vue":ms,"./components/OpenwbBaseNumberInput.vue":Os,"./components/OpenwbBaseRangeInput.vue":Es,"./components/OpenwbBaseSelectInput.vue":Qs,"./components/OpenwbBaseSubmitButtons.vue":on,"./components/OpenwbBaseTextInput.vue":Sn,"./components/OpenwbBaseTextarea.vue":Dn,"./components/OpenwbBaseToast.vue":Nn});Object.entries(Ro).forEach(([t,e])=>{const n=ne(oe(t.split("/").pop().replace(/\.\w+$/,"")));L.component(n,e.default)});L.mount("#app");export{N as C,w as _};
+import{_ as y,k as r,l as d,m as h,q as k,u as g,x as o,y as p,z as b,A as _,B as c,D as m,E as B,F as x,G as S,I as z,J as T,K as P,L as G,M as J,N as f,O as K,P as Q,T as R,Q as Y,R as j,S as Z,U as X,V as ee,W as te,X as se,Y as ne,Z as oe}from"./vendor-a21b3a62.js";import{l as C,f as I,a as V,b as ae,c as le,d as ie,e as re,F as O,g as D,h as de,i as ue,j as ce,k as pe,m as me,n as fe,o as ge,p as he,q as _e,r as be,s as ve,t as ye,u as we,v as ke,w as Se,x as Be,y as Ce,z as Oe,A as $e,B as xe,C as Te,D as Ie,E as Ve,G as Me,H as Ae,I as qe,J as Pe}from"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import{p as He,a as De}from"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-jquery-a5dbbab1.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))u(l);new MutationObserver(l=>{for(const s of l)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&u(a)}).observe(document,{childList:!0,subtree:!0});function n(l){const s={};return l.integrity&&(s.integrity=l.integrity),l.referrerPolicy&&(s.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?s.credentials="include":l.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function u(l){if(l.ep)return;l.ep=!0;const s=n(l);fetch(l.href,s)}})();const Ee={name:"OpenwbAlert",props:{subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}}};function Le(t,e,n,u,l,s){return r(),d("div",{class:k(["card-text alert","alert-"+n.subtype])},[h(t.$slots,"default")],2)}const je=y(Ee,[["render",Le],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAlert.vue"]]),We=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"}));C.add(I,V,ae,le,ie,re);const Re={name:"OpenwbArrayInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!0,default:"#TITLE#"},modelValue:{type:Array,default:()=>[]},noElementsMessage:{type:String,default:()=>"Keine Elemente zugeordnet."}},emits:["update:modelValue"],data(){return{newTag:"",showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},newTagValid:{get(){return this.newTag.length>0&&this.value.indexOf(this.newTag)==-1}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},addTag(){if(this.newTagValid){let t=this.value;t.push(this.newTag),t.sort(),this.value=t,this.newTag=""}this.$refs.tagInput.focus()},removeTag(t){let e=this.value;e.splice(t,1),this.value=e}}},Ne={class:"form-row mb-1"},Fe={class:"col-md-8"},Ue={class:"form-row"},ze={class:"input-group"},Ge={class:"input-group-prepend"},Je={class:"input-group-text"},Ke={class:"input-group-append"},Qe={class:"form-row tagList mt-1"},Ye={key:0,class:"noTag"},Ze={key:0,class:"form-row alert alert-info my-1 small"};function Xe(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Ne,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Fe,[o("div",Ue,[o("div",ze,[o("div",Ge,[o("div",Je,[h(t.$slots,"input-prefix",{},()=>[m(a,{"fixed-width":"",icon:["fas","tag"]})],!0)])]),B(o("input",S({ref:"tagInput","onUpdate:modelValue":e[1]||(e[1]=i=>l.newTag=i),type:"text",class:"form-control"},t.$attrs,{onKeyup:e[2]||(e[2]=z((...i)=>s.addTag&&s.addTag(...i),["enter"]))}),null,16),[[x,l.newTag]]),o("div",Ke,[o("div",{class:k(["input-group-text",s.newTagValid?"bg-success clickable":"notClickable"]),onClick:e[3]||(e[3]=(...i)=>s.addTag&&s.addTag(...i))},[h(t.$slots,"input-add",{},()=>[m(a,{"fixed-width":"",icon:["fas","plus"]})],!0)],2)])])]),o("div",Qe,[s.value.length==0?(r(),d("span",Ye,[m(a,{icon:["fas","info-circle"]}),p(" "+b(n.noElementsMessage),1)])):c("",!0),(r(!0),d(T,null,P(s.value,(i,v)=>(r(),d("span",{key:v,class:"tag"},[h(t.$slots,"element-prefix",{},()=>[m(a,{icon:["fas","tag"]})],!0),p(" "+b(i)+" ",1),m(a,{class:"clickable remove-element",icon:["fas","times-circle"],onClick:$=>s.removeTag(v)},null,8,["onClick"])]))),128))]),l.showHelp?(r(),d("span",Ze,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const et=y(Re,[["render",Xe],["__scopeId","data-v-9de93d37"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseArrayInput.vue"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));const st={name:"OpenwbAvatar"},nt={class:"avatar"};function ot(t,e,n,u,l,s){return r(),d("div",nt,[h(t.$slots,"default",{},()=>[e[0]||(e[0]=p("?"))],!0)])}const at=y(st,[["render",ot],["__scopeId","data-v-06082a1a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseAvatar.vue"]]),lt=Object.freeze(Object.defineProperty({__proto__:null,default:at},Symbol.toStringTag,{value:"Module"}));C.add(I,V,D);const it={name:"OpenwbButtonGroupInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Boolean],default:void 0},buttons:{type:Array,required:!0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},rt={class:"form-row mb-1"},dt={class:"col-md-8"},ut={class:"form-row"},ct={class:"btn-group btn-block btn-group-toggle"},pt=["value"],mt={key:0,class:"form-row alert alert-info my-1 small"};function ft(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",rt,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[h(t.$slots,"default",{},()=>[p(b(n.title),1)]),t.$slots.help?(r(),_(a,{key:0,"fixed-width":"",icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",dt,[o("div",ut,[o("div",ct,[(r(!0),d(T,null,P(n.buttons,i=>(r(),d("label",{key:i.value,class:k(["btn",[s.value==i.buttonValue?"active":"",i.class?i.class:"btn-outline-info"]])},[B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=v=>s.value=v),type:"radio",value:i.buttonValue,ref_for:!0},t.$attrs),null,16,pt),[[G,s.value]]),h(t.$slots,"label-"+i.buttonValue,{},()=>[p(b(i.text),1)]),m(a,{icon:["fas","check"],style:J([s.value==i.buttonValue?"visibility: visible":"visibility: hidden"])},null,8,["style"])],2))),128))])]),l.showHelp?(r(),d("span",mt,[h(t.$slots,"help")])):c("",!0)])])}const gt=y(it,[["render",ft],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonGroupInput.vue"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:gt},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const _t={name:"OpenwbButtonInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},buttonText:{type:String,required:!1,default:void 0},disabled:{type:Boolean,default:!1},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"}},emits:["buttonClicked"],data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},handleClick(t){this.$emit("buttonClicked",t)}}},bt={class:"form-row mb-1"},vt={class:"col-md-8"},yt={class:"form-row"},wt={key:0,class:"form-row alert alert-info my-1 small"};function kt(t,e,n,u,l,s){const a=g("font-awesome-icon"),i=g("openwb-base-click-button");return r(),d("div",bt,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...v)=>s.toggleHelp&&s.toggleHelp(...v))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",vt,[o("div",yt,[m(i,S({class:(n.disabled?"btn-outline-":"btn-")+n.subtype,disabled:n.disabled},t.$attrs,{onButtonClicked:s.handleClick}),{default:f(()=>[h(t.$slots,"default",{},()=>[p(b(n.buttonText),1)])]),_:3},16,["class","disabled","onButtonClicked"])]),l.showHelp?(r(),d("span",wt,[h(t.$slots,"help")])):c("",!0)])])}const St=y(_t,[["render",kt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseButtonInput.vue"]]),Bt=Object.freeze(Object.defineProperty({__proto__:null,default:St},Symbol.toStringTag,{value:"Module"}));C.add(de,ue);const Ct={name:"OpenwbCard",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,default:"# no title set #"},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark","pink"].indexOf(t)!==-1},default:"secondary"},collapsible:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1}},data(){return{isCollapsed:this.collapsible&&this.collapsed}},methods:{toggleBody(){this.collapsible===!0&&(this.isCollapsed=!this.isCollapsed)}}},Ot={class:"form-group mb-0"},$t={class:"form-row vaRow mb-0 py-2"},xt={class:"col"},Tt={class:"card-actions ml-4"},It={key:0,class:"card-actions mr-4"},Vt={key:1,class:"card-footer"};function Mt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",{class:k(["card","border-"+n.subtype])},[o("div",{class:k(["card-header py-1","bg-"+n.subtype]),onClick:e[0]||(e[0]=(...i)=>s.toggleBody&&s.toggleBody(...i))},[o("div",Ot,[o("div",$t,[o("div",xt,[h(t.$slots,"header",{collapsed:l.isCollapsed},()=>[p(b(n.title),1)])])])]),o("span",Tt,[t.$slots.actions?(r(),d("span",It,[h(t.$slots,"actions",{collapsed:l.isCollapsed})])):c("",!0),n.collapsible?(r(),_(a,{key:1,"fixed-width":"",icon:l.isCollapsed?["fas","chevron-right"]:["fas","chevron-down"]},null,8,["icon"])):c("",!0)])],2),l.isCollapsed===!1?(r(),d("div",S({key:0,class:"card-body"},t.$attrs),[h(t.$slots,"default")],16)):c("",!0),t.$slots.footer&&l.isCollapsed===!1?(r(),d("div",Vt,[h(t.$slots,"footer")])):c("",!0)],2)}const At=y(Ct,[["render",Mt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCard.vue"]]),qt=Object.freeze(Object.defineProperty({__proto__:null,default:At},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Pt={name:"OpenwbCheckboxInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Boolean}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Ht={class:"form-row mb-1"},Dt={class:"col-md-8"},Et={class:"form-row"},Lt={key:0,class:"form-row alert alert-info my-1 small"};function jt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Ht,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Dt,[o("div",Et,[B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"form-control",type:"checkbox"},t.$attrs),null,16),[[K,s.value]])]),l.showHelp?(r(),d("span",Lt,[h(t.$slots,"help")])):c("",!0)])])}const Wt=y(Pt,[["render",jt],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCheckboxInput.vue"]]),Rt=Object.freeze(Object.defineProperty({__proto__:null,default:Wt},Symbol.toStringTag,{value:"Module"}));const Nt={name:"OpenwbClickButton",props:{title:{type:String,required:!1,default:""}},emits:["buttonClicked"],methods:{click(t){this.$emit("buttonClicked",t)}}};function Ft(t,e,n,u,l,s){return r(),d("button",{type:"button",class:"btn btn-block",onClick:e[0]||(e[0]=Q((...a)=>s.click&&s.click(...a),["prevent"]))},[h(t.$slots,"default",{},()=>[p(b(n.title),1)],!0)])}const Ut=y(Nt,[["render",Ft],["__scopeId","data-v-2e9c095b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseClickButton.vue"]]),zt=Object.freeze(Object.defineProperty({__proto__:null,default:Ut},Symbol.toStringTag,{value:"Module"}));C.add(ce,pe);const Gt={name:"OpenwbCopyToClipboard",components:{FontAwesomeIcon:O},props:{tooltip:{type:String,default:"Wert kopieren"}},data(){return{clipboardApiAvailable:navigator.clipboard!=null,isCopied:!1}},methods:{click(){if(console.debug(this.$refs["slot-wrapper"].innerText),this.clipboardApiAvailable)navigator.clipboard.writeText(this.$refs["slot-wrapper"].innerText).then(()=>{this.isCopied=!0},()=>{console.error("copy to clipboard failed")});else{if(console.debug("clipboard api not supported/enabled, fallback to select"),window.getSelection){console.debug("using 'window.getSelection'");const t=window.getSelection(),e=document.createRange();e.selectNodeContents(this.$refs["slot-wrapper"]),t.removeAllRanges(),t.addRange(e);return}if(document.body.createTextRange){console.debug("using 'document.body.createTextRange'");const t=document.body.createTextRange();t.moveToElementText(this.$refs["slot-wrapper"]),t.select()}else console.warn("could not select text, unsupported browser")}}}},Jt=["title"];function Kt(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("span",{ref:"slot-wrapper",title:n.tooltip,class:"copy-me",onClick:e[0]||(e[0]=(...i)=>s.click&&s.click(...i))},[h(t.$slots,"default",{},void 0,!0),m(a,{"fixed-width":"",icon:l.isCopied?["fas","clipboard-check"]:["fas","clipboard"]},null,8,["icon"])],8,Jt)}const Qt=y(Gt,[["render",Kt],["__scopeId","data-v-81826ebe"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseCopyToClipboard.vue"]]),Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Qt},Symbol.toStringTag,{value:"Module"}));C.add(I,V,D);const Zt={name:"OpenwbHeading",components:{FontAwesomeIcon:O},inheritAttrs:!1,data(){return{showHelp:!1}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Xt={key:0,class:"actions"},es={class:""},ts={key:0,class:"form-row alert alert-info small"};function ss(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d(T,null,[o("div",S({class:"card-text card-text-heading"},t.$attrs),[o("div",{class:"heading-text",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[h(t.$slots,"default",{},void 0,!0),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),t.$slots.actions?(r(),d("span",Xt,[h(t.$slots,"actions",{},void 0,!0)])):c("",!0)],16),o("div",es,[l.showHelp?(r(),d("span",ts,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])],64)}const ns=y(Zt,[["render",ss],["__scopeId","data-v-cbe4e96e"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseHeading.vue"]]),os=Object.freeze(Object.defineProperty({__proto__:null,default:ns},Symbol.toStringTag,{value:"Module"})),as={name:"OpenwbModalDialog",props:{title:{type:String,required:!1,default:""},subtype:{type:String,validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},buttons:{type:Array,default:void 0},footerAlignment:{type:String,validator:function(t){return["around","between","center","end","start"].indexOf(t)!==-1},default:"end"},preventClose:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},emits:["modal-result"],computed:{myButtons(){var t=[];return this.buttons!==void 0&&(t=this.buttons),this.preventClose||t.push({text:"Schließen",event:"close"}),t}},methods:{handleClick(t){t.stopPropagation();let e=t.target.getAttribute("data-event");e===null&&(e="close"),(e!="close"||!this.preventClose)&&this.$emit("modal-result",e)}}},ls={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},is={class:"modal-content"},rs={class:"modal-title"},ds={class:"modal-body"},us=["data-event"];function cs(t,e,n,u,l,s){return n.show?(r(),_(R,{key:0,to:"body"},[e[4]||(e[4]=o("div",{class:"modal-backdrop fade show"},null,-1)),o("div",{class:"modal fade d-block show",role:"dialog",onClick:e[2]||(e[2]=(...a)=>s.handleClick&&s.handleClick(...a))},[o("div",ls,[o("div",is,[o("div",{class:k(["modal-header","bg-"+n.subtype])},[o("h4",rs,b(n.title),1),n.preventClose?c("",!0):(r(),d("button",{key:0,type:"button",class:"close",onClick:e[0]||(e[0]=(...a)=>s.handleClick&&s.handleClick(...a))}," × "))],2),o("div",ds,[h(t.$slots,"default",{},()=>[e[3]||(e[3]=p("# Body #"))])]),s.myButtons.length>0?(r(),d("div",{key:0,class:k(["modal-footer d-flex","justify-content-"+n.footerAlignment])},[(r(!0),d(T,null,P(s.myButtons,a=>(r(),d("button",{key:a.text,type:"button",class:k(["btn",a.subtype?"btn-"+a.subtype:"btn-secondary"]),"data-dismiss":"modal","data-event":a.event?a.event:"close",onClick:e[1]||(e[1]=(...i)=>s.handleClick&&s.handleClick(...i))},b(a.text),11,us))),128))],2)):c("",!0)])])])])):c("",!0)}const ps=y(as,[["render",cs],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseModalDialog.vue"]]),ms=Object.freeze(Object.defineProperty({__proto__:null,default:ps},Symbol.toStringTag,{value:"Module"}));C.add(I,V,me);const fs={name:"OpenwbNumberInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},precision:{type:Number,default:void 0},emptyValue:{type:[Number,null],required:!1,default:null}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.precision!==void 0?parseFloat(Math.round(this.modelValue*Math.pow(10,this.precision))/Math.pow(10,this.precision)):this.modelValue},set(t){(isNaN(t)||typeof t!="number")&&(t=this.emptyValue),this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},gs={class:"form-row mb-1"},hs={class:"col-md-8"},_s={class:"form-row"},bs={class:"input-group"},vs={class:"input-group-prepend"},ys={class:"input-group-text"},ws={key:0,class:"input-group-append"},ks={class:"input-group-text"},Ss={key:0,class:"form-row alert alert-info my-1 small"};function Bs(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",gs,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",hs,[o("div",_s,[o("div",bs,[o("div",vs,[o("div",ys,[m(a,{"fixed-width":"",icon:["fas","calculator"]})])]),B(o("input",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),type:"number",class:"form-control"},t.$attrs),null,16),[[x,s.value,void 0,{number:!0}]]),n.unit?(r(),d("div",ws,[o("div",ks,b(n.unit),1)])):c("",!0)])]),l.showHelp?(r(),d("span",Ss,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const Cs=y(fs,[["render",Bs],["__scopeId","data-v-c2fb7eef"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseNumberInput.vue"]]),Os=Object.freeze(Object.defineProperty({__proto__:null,default:Cs},Symbol.toStringTag,{value:"Module"}));C.add(I,V,fe,ge);const $s={name:"OpenwbRangeInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:Number,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},min:{type:Number,required:!0,default:0},max:{type:Number,required:!0,default:100},step:{type:Number,required:!1,default:1},labels:{type:Array,required:!1,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{label(){var t;return this.labels&&this.sliderValue!=null?this.sliderValue<this.labels.length?t=this.labels[this.sliderValue].label:console.error("index out of bounds: "+this.sliderValue):t=this.sliderValue,typeof t=="number"&&(t=t.toLocaleString(void 0,{minimumFractionDigits:this.precision,maximumFractionDigits:this.precision}),this.unit&&(t+=" "+this.unit)),t},precision(){if(!isFinite(this.step))return 0;for(var t=1,e=0;Math.round(this.step*t)/t!==this.step;)t*=10,e++;return e},sliderValue:{get(){if(this.labels){var t=void 0;for(let e=0;e<this.labels.length;e++)if(this.labels[e].value==this.modelValue){t=e;break}return t===void 0&&this.modelValue!==void 0?(console.warn("sliderValue: not found in values: ",this.modelValue,"using min as default: ",this.min),this.min):t}return this.modelValue},set(t){if(this.labels){var e=this.labels[t].value;this.$emit("update:modelValue",e)}else this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},increment(){var t=Math.min(this.sliderValue+this.step,this.max);this.sliderValue=Math.round(t*Math.pow(10,this.precision))/Math.pow(10,this.precision)},decrement(){var t=Math.max(this.sliderValue-this.step,this.min);this.sliderValue=Math.round(t*Math.pow(10,this.precision))/Math.pow(10,this.precision)}}},xs={class:"form-row mb-1"},Ts={class:"col-md-8"},Is={class:"form-row vaRow mb-1"},Vs={key:0,class:"col-2 col-form-label valueLabel"},Ms={class:"col"},As=["min","max","step"],qs={key:0,class:"form-row alert alert-info my-1 small"},Ps={class:"col"};function Hs(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",xs,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Ts,[o("div",Is,[s.label?(r(),d("label",Vs,b(s.label),1)):c("",!0),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[1]||(e[1]=(...i)=>s.decrement&&s.decrement(...i))},[m(a,{icon:["fas","step-backward"]})]),o("div",Ms,[B(o("input",S({"onUpdate:modelValue":e[2]||(e[2]=i=>s.sliderValue=i),type:"range",class:"form-control-range rangeInput",min:n.min,max:n.max,step:n.step},t.$attrs),null,16,As),[[x,s.sliderValue,void 0,{number:!0}]])]),o("button",{class:"col-1 btn btn-block btn-info",type:"button",onClick:e[3]||(e[3]=(...i)=>s.increment&&s.increment(...i))},[m(a,{icon:["fas","step-forward"]})])]),l.showHelp?(r(),d("div",qs,[o("div",Ps,[h(t.$slots,"help",{},void 0,!0)])])):c("",!0)])])}const Ds=y($s,[["render",Hs],["__scopeId","data-v-449fb0a5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseRangeInput.vue"]]),Es=Object.freeze(Object.defineProperty({__proto__:null,default:Ds},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Ls={name:"OpenwbSelectInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Number,Array,null],required:!1,default:void 0},groups:{type:Array,required:!1,default:void 0},options:{type:Array,required:!1,default:void 0},notSelected:{type:String,default:void 0}},emits:["update:modelValue"],data(){return{showHelp:!1}},computed:{value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},js={class:"form-row mb-1"},Ws={class:"col-md-8"},Rs={class:"form-row"},Ns={key:0,value:void 0,disabled:""},Fs=["value"],Us=["label"],zs=["value"],Gs={key:0,class:"form-row alert alert-info my-1 small"};function Js(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",js,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",Ws,[o("div",Rs,[B(o("select",S({"onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"col form-control"},t.$attrs),[n.notSelected!==void 0?(r(),d("option",Ns," -- "+b(n.notSelected)+" -- ",1)):c("",!0),(r(!0),d(T,null,P(n.options,i=>(r(),d("option",{key:i.value,value:i.value},b(i.text),9,Fs))),128)),(r(!0),d(T,null,P(n.groups,i=>(r(),d("optgroup",{key:i.label,label:i.label},[(r(!0),d(T,null,P(i.options,v=>(r(),d("option",{key:v.value,value:v.value},b(v.text),9,zs))),128))],8,Us))),128))],16),[[Y,s.value]]),h(t.$slots,"append")]),l.showHelp?(r(),d("span",Gs,[h(t.$slots,"help")])):c("",!0)])])}const Ks=y(Ls,[["render",Js],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSelectInput.vue"]]),Qs=Object.freeze(Object.defineProperty({__proto__:null,default:Ks},Symbol.toStringTag,{value:"Module"}));C.add(D,he,_e);const Ys={name:"OpenwbSubmitButtons",components:{FontAwesomeIcon:O},props:{formName:{type:String,default:void 0},hideReset:{type:Boolean,default:!1},hideDefaults:{type:Boolean,default:!0}},emits:["reset","defaults","save"],data(){return{showModalReset:!1,showModalDefaults:!1}},computed:{showModalSave(){return this.$store.state.local.savingData}},methods:{showResetModal(){this.showModalReset=!0},handleModalReset(t){this.showModalReset=!1,t=="confirm"&&this.$emit("reset")},showDefaultsModal(){this.showModalDefaults=!0},handleModalDefaults(t){this.showModalDefaults=!1,t=="confirm"&&this.$emit("defaults")},saveSettings(){if(this.formName){if(!document.forms[this.formName].reportValidity()){console.debug("form invalid");return}}else console.debug("no form to validate");this.$emit("save")}}},Zs={class:"row justify-content-center mb-1"},Xs={class:"col-md-4 d-flex py-1 justify-content-center"},en={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},tn={key:1,class:"col-md-4 d-flex py-1 justify-content-center"};function sn(t,e,n,u,l,s){const a=g("openwb-base-modal-dialog"),i=g("font-awesome-icon");return r(),d(T,null,[m(a,{show:s.showModalSave,title:"Speichern",subtype:"success","prevent-close":!0},{default:f(()=>e[3]||(e[3]=[p(" Einstellungen werden gespeichert... ")])),_:1},8,["show"]),m(a,{show:l.showModalReset,title:"Änderungen verwerfen",subtype:"warning",buttons:[{text:"Ok",event:"confirm",subtype:"warning"}],onModalResult:s.handleModalReset},{default:f(()=>e[4]||(e[4]=[p(" Wollen Sie die nicht gespeicherten Änderungen wirklich verwerfen? ")])),_:1},8,["show","onModalResult"]),m(a,{show:l.showModalDefaults,title:"Werkseinstellungen",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"danger"}],onModalResult:s.handleModalDefaults},{default:f(()=>e[5]||(e[5]=[p(" Wollen Sie wirklich alle Werte dieser Seite auf die Werkseinstellungen zurücksetzen? ")])),_:1},8,["show","onModalResult"]),o("div",Zs,[o("div",Xs,[o("button",{id:"saveSettingsBtn",type:"button",class:"btn btn-block btn-success",onClick:e[0]||(e[0]=(...v)=>s.saveSettings&&s.saveSettings(...v))},[e[6]||(e[6]=p(" Speichern ")),m(i,{"fixed-width":"",icon:["fas","check"]})])]),n.hideReset?c("",!0):(r(),d("div",en,[o("button",{id:"modalResetBtn",type:"button",class:"btn btn-block btn-warning",onClick:e[1]||(e[1]=(...v)=>s.showResetModal&&s.showResetModal(...v))},[e[7]||(e[7]=p(" Änderungen verwerfen ")),m(i,{"fixed-width":"",icon:["fas","undo"]})])])),n.hideDefaults?c("",!0):(r(),d("div",tn,[o("button",{id:"modalDefaultsBtn",type:"button",class:"btn btn-block btn-danger",onClick:e[2]||(e[2]=(...v)=>s.showDefaultsModal&&s.showDefaultsModal(...v))},[e[8]||(e[8]=p(" Werkseinstellungen ")),m(i,{"fixed-width":"",icon:["fas","times"]})])]))])],64)}const nn=y(Ys,[["render",sn],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseSubmitButtons.vue"]]),on=Object.freeze(Object.defineProperty({__proto__:null,default:nn},Symbol.toStringTag,{value:"Module"}));C.add(I,V,be,ve,ye,we,ke,Se,Be,Ce,Oe,$e,xe,Te);const an={name:"OpenwbTextInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","email","host","url","user","json","password","time","date","month","year"].indexOf(t)!==-1},default:"text"},pattern:{type:String,required:!1,default:void 0},unit:{type:String,required:!1,default:void 0},emptyValue:{type:[String,Object,null],required:!1,default:null},showQuickButtons:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{showHelp:!1,showPassword:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.warn("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.error("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else t==""&&(t=this.emptyValue),this.$emit("update:modelValue",t)}},inputRef(){switch(this.subtype){case"json":return this.$refs.jsonInput;case"password":return this.$refs.passwordInput;case"host":return this.$refs.hostInput;case"email":case"url":return this.$refs.urlInput;case"time":return this.$refs.timeInput;case"date":return this.$refs.dateInput;case"month":return this.$refs.monthInput;case"year":return this.$refs.yearInput}return this.$refs.textInput}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0},togglePassword(){this.showPassword=!this.showPassword},modify(t){var e,n=new Date(this.modelValue);switch(this.subtype){case"date":n.setDate(n.getDate()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0");break;case"month":n.setMonth(n.getMonth()+t),e=String(n.getFullYear())+"-"+String(n.getMonth()+1).padStart(2,"0");break;case"year":n.setYear(n.getFullYear()+t),e=String(n.getFullYear());break;default:console.warn(`cannot modify input of subtype '${this.subtype}'`);return}e>this.inputRef.max||e<this.inputRef.min||(this.value=e)}}},ln={class:"form-row mb-1"},rn={class:"col-md-8"},dn={class:"form-row"},un={class:"input-group"},cn={class:"input-group-prepend"},pn={class:"input-group-text"},mn=["pattern"],fn=["pattern"],gn=["type","pattern"],hn=["type"],_n={key:9,class:"input-group-append"},bn={class:"input-group-text"},vn={class:"input-group-text"},yn={key:0,class:"form-row alert alert-info my-1 small"};function wn(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",ln,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",rn,[o("div",dn,[o("div",un,[o("div",cn,[o("div",pn,[n.subtype=="text"?(r(),_(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):c("",!0),n.subtype=="email"?(r(),_(a,{key:1,"fixed-width":"",icon:["fas","envelope"]})):c("",!0),n.subtype=="host"?(r(),_(a,{key:2,"fixed-width":"",icon:["fas","network-wired"]})):c("",!0),n.subtype=="url"?(r(),_(a,{key:3,"fixed-width":"",icon:["fas","globe"]})):c("",!0),n.subtype=="user"?(r(),_(a,{key:4,"fixed-width":"",icon:["fas","user"]})):c("",!0),n.subtype=="json"?(r(),_(a,{key:5,"fixed-width":"",icon:["fas","code"]})):c("",!0),n.subtype=="password"?(r(),_(a,{key:6,"fixed-width":"",icon:l.showPassword?["fas","unlock"]:["fas","lock"]},null,8,["icon"])):c("",!0),n.subtype=="time"?(r(),_(a,{key:7,"fixed-width":"",icon:["fas","clock"]})):c("",!0),n.subtype=="date"||n.subtype=="month"||n.subtype=="year"?(r(),_(a,{key:8,"fixed-width":"",icon:["fas","calendar-day"]})):c("",!0)])]),["text","user"].includes(n.subtype)?B((r(),d("input",S({key:0,ref:"textInput","onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),type:"text",class:["form-control",{invalid:l.inputInvalid}]},t.$attrs,{pattern:n.pattern}),null,16,mn)),[[x,s.value]]):c("",!0),n.subtype=="json"?B((r(),d("input",S({key:1,ref:"jsonInput","onUpdate:modelValue":e[2]||(e[2]=i=>s.value=i),type:"text",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,fn)),[[x,s.value]]):c("",!0),n.subtype=="password"?B((r(),d("input",S({key:2,ref:"passwordInput","onUpdate:modelValue":e[3]||(e[3]=i=>s.value=i),type:l.showPassword?"text":"password",class:"form-control"},t.$attrs,{pattern:n.pattern}),null,16,gn)),[[j,s.value]]):c("",!0),n.subtype=="host"?B((r(),d("input",S({key:3,ref:"hostInput","onUpdate:modelValue":e[4]||(e[4]=i=>s.value=i),type:"text",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),["email","url"].includes(n.subtype)?B((r(),d("input",S({key:4,"onUpdate:modelValue":e[5]||(e[5]=i=>s.value=i),refs:"urlInput",type:n.subtype,class:"form-control"},t.$attrs),null,16,hn)),[[j,s.value]]):c("",!0),n.subtype=="time"?B((r(),d("input",S({key:5,ref:"timeInput","onUpdate:modelValue":e[6]||(e[6]=i=>s.value=i),type:"time",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="date"?B((r(),d("input",S({key:6,ref:"dateInput","onUpdate:modelValue":e[7]||(e[7]=i=>s.value=i),type:"date",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="month"?B((r(),d("input",S({key:7,ref:"monthInput","onUpdate:modelValue":e[8]||(e[8]=i=>s.value=i),type:"month",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.subtype=="year"?B((r(),d("input",S({key:8,ref:"yearInput","onUpdate:modelValue":e[9]||(e[9]=i=>s.value=i),type:"number",class:"form-control"},t.$attrs),null,16)),[[x,s.value]]):c("",!0),n.unit?(r(),d("div",_n,[o("div",bn,b(n.unit),1)])):c("",!0),n.subtype=="password"?(r(),d("div",{key:10,class:"input-group-append clickable",onClick:e[10]||(e[10]=(...i)=>s.togglePassword&&s.togglePassword(...i))},[o("div",vn,[m(a,{"fixed-width":"",icon:l.showPassword?["far","eye"]:["far","eye-slash"]},null,8,["icon"])])])):c("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:11,class:"input-group-append clickable",onClick:e[11]||(e[11]=i=>s.modify(-1))},e[13]||(e[13]=[o("div",{class:"input-group-text"}," - ",-1)]))):c("",!0),n.showQuickButtons&&(n.subtype=="date"||n.subtype=="month"||n.subtype=="year")?(r(),d("div",{key:12,class:"input-group-append clickable",onClick:e[12]||(e[12]=i=>s.modify(1))},e[14]||(e[14]=[o("div",{class:"input-group-text"}," + ",-1)]))):c("",!0)])]),l.showHelp?(r(),d("span",yn,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const kn=y(an,[["render",wn],["__scopeId","data-v-6927d479"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextInput.vue"]]),Sn=Object.freeze(Object.defineProperty({__proto__:null,default:kn},Symbol.toStringTag,{value:"Module"}));C.add(I,V);const Bn={name:"OpenwbTextareaInput",components:{FontAwesomeIcon:O},inheritAttrs:!1,props:{title:{type:String,required:!1,default:""},modelValue:{type:[String,Object],required:!1,default:void 0},subtype:{validator:function(t){return["text","json"].indexOf(t)!==-1},default:"text"}},emits:["update:modelValue"],data(){return{showHelp:!1,inputInvalid:!1,tempValue:this.modelValue}},computed:{value:{get(){return this.subtype=="json"?this.inputInvalid?(console.debug("returning invalid String"),this.tempValue):JSON.stringify(this.tempValue,void 0,2):this.modelValue},set(t){if(this.subtype=="json")try{let e=JSON.parse(t);this.inputInvalid=!1,this.$refs.jsonInput.setCustomValidity(""),this.tempValue=e,this.$emit("update:modelValue",e)}catch(e){console.warn("parsing JSON failed: "+t,e),this.inputInvalid=!0,this.$refs.jsonInput.setCustomValidity("Ungültiger JSON Ausdruck!"),this.tempValue=t}else this.$emit("update:modelValue",t)}},length:{get(){return this.value!==void 0?this.value.length:0}}},methods:{toggleHelp(){this.showHelp=!this.showHelp&&this.$slots.help!==void 0}}},Cn={class:"form-row mb-1"},On={class:"col-md-8"},$n={class:"form-row"},xn={class:"input-group"},Tn={class:"input-group-prepend"},In={class:"input-group-text"},Vn={key:2,class:"input-group-append"},Mn={class:"input-group-text"},An={class:"form-text text-muted text-right"},qn={key:0,class:"form-row alert alert-info my-1 small"};function Pn(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",Cn,[o("label",{class:"col-md-4 col-form-label",onClick:e[0]||(e[0]=(...i)=>s.toggleHelp&&s.toggleHelp(...i))},[p(b(n.title)+" ",1),t.$slots.help?(r(),_(a,{key:0,icon:l.showHelp?["fas","question-circle"]:["far","question-circle"],class:k(l.showHelp?"text-info":"")},null,8,["icon","class"])):c("",!0)]),o("div",On,[o("div",$n,[o("div",xn,[o("div",Tn,[o("div",In,[n.subtype=="text"?(r(),_(a,{key:0,"fixed-width":"",icon:["fas","keyboard"]})):c("",!0),n.subtype=="json"?(r(),_(a,{key:1,"fixed-width":"",icon:["fas","code"]})):c("",!0)])]),n.subtype==="json"?B((r(),d("textarea",S({key:0,ref:"jsonInput","onUpdate:modelValue":e[1]||(e[1]=i=>s.value=i),class:"form-control"},t.$attrs),null,16)),[[x,s.value,void 0,{lazy:!0}]]):B((r(),d("textarea",S({key:1,"onUpdate:modelValue":e[2]||(e[2]=i=>s.value=i),class:"form-control"},t.$attrs),null,16)),[[x,s.value]]),t.$attrs.maxlength?(r(),d("div",Vn,[o("div",Mn,[o("small",An,b(s.length)+" / "+b(t.$attrs.maxlength),1)])])):c("",!0)])]),l.showHelp?(r(),d("span",qn,[h(t.$slots,"help",{},void 0,!0)])):c("",!0)])])}const Hn=y(Bn,[["render",Pn],["__scopeId","data-v-3d93046b"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseTextarea.vue"]]),Dn=Object.freeze(Object.defineProperty({__proto__:null,default:Hn},Symbol.toStringTag,{value:"Module"}));const En={name:"OpenwbToast",props:{topic:{type:String,required:!0},subtype:{validator:function(t){return["info","success","warning","danger","primary","secondary","light","dark"].indexOf(t)!==-1},default:"secondary"},source:{type:String,required:!0,validator:function(t){return["system","client","command"].indexOf(t)!==-1}},timestamp:{type:Number,required:!0}},emits:["dismiss","hide"],data(){return{handle:void 0,relativeTime:void 0,hidden:!1}},mounted(){this.handle=window.setInterval(this.updateRelativeTime,1e3)},unmounted(){window.clearInterval(this.handle)},methods:{dismiss(){this.$emit("dismiss",{topic:this.topic})},updateRelativeTime(){const t={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3};var e=new Intl.RelativeTimeFormat("de",{numeric:"auto"});const u=new Date-this.timestamp*1e3;for(var l in t)if(Math.abs(u)>t[l]){this.relativeTime=e.format(Math.round(-u/t[l]),l);break}u>10*1e3&&!this.hidden&&(this.hidden=!0,this.$emit("hide",{topic:this.topic}))}}},Ln={key:0,class:"time-diff"},jn={class:"toast-body"};function Wn(t,e,n,u,l,s){return r(),d("div",{class:k(["toast","border-"+n.subtype]),role:"alert"},[o("div",{class:k(["toast-header","bg-"+n.subtype])},[e[2]||(e[2]=o("strong",{class:"pr-2 mr-auto"},"OpenWB",-1)),n.timestamp?(r(),d("small",Ln,b(l.relativeTime),1)):c("",!0),o("button",{type:"button",class:"ml-2 mb-1 close","data-dismiss":"toast","aria-label":"Close",onClick:e[0]||(e[0]=(...a)=>s.dismiss&&s.dismiss(...a))},e[1]||(e[1]=[o("span",{"aria-hidden":"true"},"×",-1)]))],2),o("div",jn,[h(t.$slots,"default",{},void 0,!0)])],2)}const Rn=y(En,[["render",Wn],["__scopeId","data-v-c51b5764"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbBaseToast.vue"]]),Nn=Object.freeze(Object.defineProperty({__proto__:null,default:Rn},Symbol.toStringTag,{value:"Module"}));C.add(Ie);const Fn={name:"OpenwbNavBar",components:{FontAwesomeIcon:O},computed:{nodeEnv(){return"development"}},watch:{$route(){this.$refs.collapsibleNavbar.classList.remove("show"),this.$refs.navbarButton.classList.add("collapsed"),this.$refs.navbarButton.setAttribute("aria-expanded",!1)}}},Un={class:"navbar navbar-expand-lg bg-dark navbar-dark fixed-top"},zn={ref:"navbarButton",class:"navbar-toggler mr-5",type:"button","data-toggle":"collapse","data-target":"#collapsibleNavbar"},Gn={id:"collapsibleNavbar",ref:"collapsibleNavbar",class:"collapse navbar-collapse navbar-nav-scroll"},Jn={class:"navbar-nav"},Kn={class:"nav-item"},Qn={class:"nav-item dropdown nav-separator-after"},Yn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},Zn={class:"nav-item dropdown"},Xn={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},eo={class:"nav-item dropdown"},to={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},so={class:"nav-item dropdown"},no={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},oo={class:"nav-item dropdown"},ao={class:"dropdown-menu","aria-labelledby":"navbarDropdown"},lo={class:"nav-item nav-separator-before"},io={class:"nav-link",href:"https://github.com/openWB/core/wiki",target:"_blank"};function ro(t,e,n,u,l,s){const a=g("router-link"),i=g("font-awesome-icon");return r(),d("nav",Un,[e[31]||(e[31]=o("a",{class:"navbar-brand",href:"/openWB/web/"},[o("span",null,"openWB")],-1)),o("button",zn,e[0]||(e[0]=[o("span",{class:"navbar-toggler-icon"},null,-1)]),512),o("div",Gn,[o("ul",Jn,[o("li",Kn,[m(a,{to:"/Status",class:"nav-link","active-class":"active disabled"},{default:f(()=>e[1]||(e[1]=[p(" Status ")])),_:1})]),o("li",Qn,[e[4]||(e[4]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Auswertungen ",-1)),o("div",Yn,[m(a,{to:"/Logging/ChargeLog",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[2]||(e[2]=[p(" Ladeprotokoll ")])),_:1}),m(a,{to:"/Logging/Chart",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[3]||(e[3]=[p(" Diagramme ")])),_:1})])]),o("li",Zn,[e[7]||(e[7]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Einstellungen ",-1)),o("div",Xn,[m(a,{to:"/GeneralConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[5]||(e[5]=[p(" Allgemein ")])),_:1}),m(a,{to:"/OptionalComponents",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[6]||(e[6]=[p(" Optionale Hardware ")])),_:1})])]),o("li",eo,[e[13]||(e[13]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Ladeeinstellungen ",-1)),o("div",to,[m(a,{to:"/GeneralChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[8]||(e[8]=[p(" Übergreifendes ")])),_:1}),m(a,{to:"/InstantChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[9]||(e[9]=[p(" Sofortladen ")])),_:1}),m(a,{to:"/PVChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[10]||(e[10]=[p(" PV-Laden ")])),_:1}),m(a,{to:"/TimeChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[11]||(e[11]=[p(" Zeitladen ")])),_:1}),m(a,{to:"/ScheduledChargeConfig",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[12]||(e[12]=[p(" Zielladen ")])),_:1})])]),o("li",so,[e[20]||(e[20]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," Konfiguration ",-1)),o("div",no,[m(a,{to:"/HardwareInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[14]||(e[14]=[p(" Geräte und Komponenten ")])),_:1}),m(a,{to:"/LoadManagementConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[15]||(e[15]=[p(" Lastmanagement ")])),_:1}),m(a,{to:"/ChargePointInstallation",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[16]||(e[16]=[p(" Ladepunkte ")])),_:1}),m(a,{to:"/VehicleConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[17]||(e[17]=[p(" Fahrzeuge ")])),_:1}),e[18]||(e[18]=o("div",{class:"dropdown-divider"},null,-1)),e[19]||(e[19]=o("a",{href:"modules/legacy_smart_home/smarthomeconfig.php",class:"dropdown-item",target:"_blank"}," SmartHome ",-1))])]),o("li",oo,[e[29]||(e[29]=o("a",{class:"nav-link dropdown-toggle",href:"#",role:"button","data-toggle":"dropdown","aria-expanded":"false"}," System ",-1)),o("div",ao,[m(a,{to:"/System/InstallAssistant",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[21]||(e[21]=[p(" Einrichtungsassistent ")])),_:1}),m(a,{to:"/System/CloudConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[22]||(e[22]=[p(" openWB Cloud ")])),_:1}),m(a,{to:"/System/MqttBridgeConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[23]||(e[23]=[p(" MQTT-Brücken ")])),_:1}),m(a,{to:"/System/DebugConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[24]||(e[24]=[p(" Fehlersuche ")])),_:1}),m(a,{to:"/System/Support",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[25]||(e[25]=[p(" Support ")])),_:1}),m(a,{to:"/System/DataManagement",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[26]||(e[26]=[p(" Datenverwaltung ")])),_:1}),m(a,{to:"/System/SystemConfiguration",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[27]||(e[27]=[p(" System ")])),_:1}),m(a,{to:"/System/LegalSettings",class:"dropdown-item","active-class":"active disabled"},{default:f(()=>e[28]||(e[28]=[p(" Rechtliches ")])),_:1})])]),o("li",lo,[o("a",io,[e[30]||(e[30]=p(" Wiki ")),m(i,{"fixed-width":"",icon:["fas","external-link-alt"]})])])])],512)])}const uo=y(Fn,[["render",ro],["__scopeId","data-v-e7a6d0c0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageNavbar.vue"]]);const co={name:"OpenwbPageFooter"},po={id:"footer",class:"footer bg-dark text-light font-small"},mo={class:"container text-center"};function fo(t,e,n,u,l,s){return r(),d("footer",po,[o("div",mo,[o("small",null," Sie befinden sich hier: Einstellungen / "+b(t.$route.meta.heading),1)])])}const go=y(co,[["render",fo],["__scopeId","data-v-3c9a239a"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageFooter.vue"]]);C.add(Ve);const ho={name:"OpenwbDonationBanner",components:{FontAwesomeIcon:O}},_o={class:"mt-3 alert alert-dark text-center"},bo={action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},vo={type:"submit",class:"btn btn-primary"};function yo(t,e,n,u,l,s){const a=g("font-awesome-icon");return r(),d("div",_o,[e[3]||(e[3]=p(" Open Source made with love!")),e[4]||(e[4]=o("br",null,null,-1)),e[5]||(e[5]=p(" Jede Spende hilft die Weiterentwicklung von openWB voranzutreiben")),e[6]||(e[6]=o("br",null,null,-1)),o("form",bo,[e[1]||(e[1]=o("input",{type:"hidden",name:"cmd",value:"_s-xclick"},null,-1)),e[2]||(e[2]=o("input",{type:"hidden",name:"hosted_button_id",value:"2K8C4Y2JTGH7U"},null,-1)),o("button",vo,[e[0]||(e[0]=p(" Spenden ")),m(a,{icon:["fab","paypal"]})])])])}const wo=y(ho,[["render",yo],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageDonationBanner.vue"]]),ko={name:"ComponentState",emits:["reset","defaults","save"],data(){return{mqttTopicsToSubscribe:[]}},computed:{weekdays(){return["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]},chargeModes(){return["instant_charging","pv_charging","scheduled_charging","time_charging","standby","stop"]}},mounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doSubscribe(this.mqttTopicsToSubscribe)},unmounted(){this.mqttTopicsToSubscribe.length>0&&this.$root.doUnsubscribe(this.mqttTopicsToSubscribe)},methods:{updateState(t,e,n=void 0){console.debug("updateState:",t,e,n),this.$store.commit({type:"updateTopic",topic:t,objectPath:n,payload:e})},ac_current2dc_power(t){return parseFloat((t*3*230/1e3).toFixed(2))},dc_power2ac_current(t){return parseFloat((t*1e3/230/3).toFixed(2))},getWildcardIndexList(t,e=!1){let n=t;e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$");let u=Object.keys(this.$store.state.mqtt).filter(l=>l.match(n));return u.forEach((l,s,a)=>{a[s]=parseInt(l.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,""))}),u},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(u=>u.match(n)).reduce((u,l)=>({...u,[l]:this.$store.state.mqtt[l]}),{})},formatDate(t,e={year:"numeric",month:"2-digit",day:"2-digit"}){return new Date(t).toLocaleDateString(void 0,e)},formatNumber(t,e=0,n=e,u=1){if(!(t==null||isNaN(t)))return(t*u).toLocaleString(void 0,{minimumFractionDigits:e,maximumFractionDigits:n})},formatNumberTopic(t,e=0,n=e,u=1){return this.$store.state.mqtt[t]?this.formatNumber(this.$store.state.mqtt[t],e,n,u):"-"},formatPhaseArrayNumberTopic(t,e=0,n=e,u=1){return this.$store.state.mqtt[t]?this.$store.state.mqtt[t].map(l=>this.formatNumber(l,e,n,u)).join(" / "):"- / - / -"},translateChargeMode(t){switch(t){case"instant_charging":return"Sofort";case"pv_charging":return"PV";case"scheduled_charging":return"Zielladen";case"time_charging":return"Zeitladen";case"standby":return"Standby";case"stop":return"Stop";default:return console.warn("unknown charge mode:",t),t}}}},N=y(ko,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/mixins/ComponentState.vue"]]);C.add(Me,Ae);const So={name:"OpenwbPageMessages",components:{FontAwesomeIcon:O,FontAwesomeLayers:qe,FontAwesomeLayersText:Pe},mixins:[N],data(){return{mqttTopicsToSubscribe:["openWB/system/messages/+","openWB/command/"+this.$root.mqttClientId+"/messages/+"],showAllMessages:!1,hiddenMessages:[]}},computed:{alertLevel(){return this.messages.reduce((e,n)=>((e=="light"&&["info","success","warning","danger"].includes(n.type)||e=="info"&&["success","warning","danger"].includes(n.type)||e=="success"&&["warning","danger"].includes(n.type)||e=="warning"&&n.type=="danger")&&(e=n.type),e),"light")},messages(){const t=[];return this.systemMessages.forEach(e=>{t.push(e)}),this.clientMessages.forEach(e=>{t.push(e)}),t.sort(this.compareMessagesByTimestamp),t},recentMessages(){return this.showAllMessages?this.messages:this.messages.filter(t=>!this.hiddenMessages.includes(t.topic))},messageIndicatorClass(){return"text-"+this.alertLevel},systemMessages(){let t=this.getWildcardTopics("openWB/system/messages/+");var e=[];for(const[n,u]of Object.entries(t))e.push({topic:n,...u});return e},clientMessages(){let t=this.getWildcardTopics("openWB/command/"+this.$root.mqttClientId+"/messages/+");var e=[];for(const[n,u]of Object.entries(t))e.push({topic:n,...u});return e}},methods:{toggleAllMessages(){this.showAllMessages=!this.showAllMessages},compareMessagesByTimestamp(t,e){return e.timestamp-t.timestamp},clearTopic(t){this.$root.doPublish(t,void 0)},dismissMessage(t){this.clearTopic(t.topic);var e=this.hiddenMessages.indexOf(t.topic);e>-1&&this.hiddenMessages.splice(e,1)},dismissAllMessages(){this.messages.forEach(t=>{this.clearTopic(t.topic)}),this.hiddenMessages=[],this.toggleAllMessages()},hideMessage(t){this.hiddenMessages.includes(t.topic)||this.hiddenMessages.push(t.topic)}}},Bo=["innerHTML"];function Co(t,e,n,u,l,s){const a=g("font-awesome-icon"),i=g("font-awesome-layers-text"),v=g("font-awesome-layers"),$=g("openwb-base-alert"),M=g("openwb-base-click-button"),A=g("openwb-base-toast");return r(),d(T,null,[(r(),_(R,{to:"body"},[o("div",{id:"message-indicator",class:k(["text-light mt-1 p-2 mr-1 clickable",l.showAllMessages?"active":""]),onClick:e[0]||(e[0]=(...q)=>s.toggleAllMessages&&s.toggleAllMessages(...q))},[m(v,{"full-width":"",style:{"font-size":"175%"}},{default:f(()=>[m(a,{"fixed-width":"",icon:l.showAllMessages?["fas","bell"]:["far","bell"],class:k(s.messageIndicatorClass)},null,8,["icon","class"]),s.messages.length>0?(r(),_(i,{key:0,counter:"",value:s.messages.length,position:"top-right",class:"message-counter bg-light text-dark"},null,8,["value"])):c("",!0)]),_:1})],2)])),s.recentMessages.length>0||l.showAllMessages?(r(),d("div",{key:0,class:k(["openwb-toast-container",l.showAllMessages?"full-height":""])},[s.recentMessages.length==0?(r(),_($,{key:0,subtype:"info"},{default:f(()=>e[1]||(e[1]=[p(" Keine Nachrichten vorhanden. ")])),_:1})):l.showAllMessages?(r(),_(M,{key:1,class:"btn-sm btn-secondary mb-1",onButtonClicked:s.dismissAllMessages},{default:f(()=>e[2]||(e[2]=[p(" Alle Nachrichten löschen ")])),_:1},8,["onButtonClicked"])):c("",!0),(r(!0),d(T,null,P(s.recentMessages,q=>(r(),_(A,{key:q.topic,topic:q.topic,source:q.source,subtype:q.type,timestamp:q.timestamp,onDismiss:s.dismissMessage,onHide:s.hideMessage},{default:f(()=>[o("span",{innerHTML:q.message},null,8,Bo)]),_:2},1032,["topic","source","subtype","timestamp","onDismiss","onHide"]))),128))],2)):c("",!0)],64)}const Oo=y(So,[["render",Co],["__scopeId","data-v-2c25f0d0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageMessages.vue"]]),$o={name:"OpenwbPageBlocker",mixins:[N],data(){return{mqttTopicsToSubscribe:["openWB/system/boot_done","openWB/system/update_in_progress"]}},computed:{title(){return this.bootInProgress||this.updateInProgress?"openWB ist noch nicht bereit":this.reloadRequired?"Neues Laden der Seite erforderlich":"???"},myButtons(){return!(this.bootInProgress||this.updateInProgress)&&this.reloadRequired?[{text:"Jetzt neu laden",subtype:"success",event:"reload"}]:[]},bootInProgress(){return this.$store.state.mqtt["openWB/system/boot_done"]==null?!0:!this.$store.state.mqtt["openWB/system/boot_done"]},updateInProgress(){return this.$store.state.mqtt["openWB/system/update_in_progress"]==null?!1:this.$store.state.mqtt["openWB/system/update_in_progress"]},reloadRequired(){return this.$store.state.local.reloadRequired},showModalBlocker(){return this.bootInProgress||this.updateInProgress||this.reloadRequired}},methods:{handleModalResult(t){t=="reload"?location.reload():console.warn("unknown event",t)}}},xo={class:"openwb-blocker"},To={key:0},Io={key:1},Vo={key:2},Mo={key:3};function Ao(t,e,n,u,l,s){const a=g("openwb-base-modal-dialog");return r(),d("div",xo,[m(a,{show:s.showModalBlocker,title:s.title,subtype:"dark","prevent-close":!0,buttons:s.myButtons,onModalResult:e[0]||(e[0]=i=>s.handleModalResult(i))},{default:f(()=>[s.bootInProgress?(r(),d("p",To," Der Systemstart ist noch nicht abgeschlossen. ")):c("",!0),s.updateInProgress?(r(),d("p",Io," Es wird eine Systemaktualisierung ausgeführt. ")):c("",!0),!(s.bootInProgress||s.updateInProgress)&&s.reloadRequired?(r(),d("p",Vo," Bitte die Seite neu laden. ")):(r(),d("p",Mo," Bitte warten... "))]),_:1},8,["show","title","buttons"])])}const qo=y($o,[["render",Ao],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/OpenwbPageBlocker.vue"]]);const Po={name:"OpenwbSettingsApp",components:{NavBar:uo,PageFooter:go,DonationBanner:wo,Messages:Oo,Blocker:qo},data(){return{client:{connected:!1},connection:{protocol:location.protocol=="https:"?"wss":"ws",host:location.hostname,port:parseInt(location.port)||(location.protocol=="https:"?443:80),endpoint:"/ws",connectTimeout:4e3,reconnectPeriod:4e3}}},computed:{mqttClientId(){try{return this.client.options.clientId}catch(t){console.error("mqttClientId error",t);return}},topicList(){return Object.keys(this.$store.state.mqtt)}},created(){this.createConnection()},methods:{async saveValues(t=void 0){function e(u){return new Promise(l=>setTimeout(l,u))}console.debug("saving values..."),this.$store.state.local.savingData=!0;let n={};t===void 0?(console.debug("no topics defined, so save everything we have in store"),n=this.$store.state.mqtt):Array.isArray(t)?t.forEach(u=>{n[u]=this.$store.state.mqtt[u]}):console.error("expected array, got ",typeof t);for(const[u,l]of Object.entries(n)){let s=u.replace("openWB/","openWB/set/");console.debug("saving data:",s,l),this.doPublish(s,l),await e(100)}console.debug("done saving data"),this.$store.state.local.savingData=!1},resetValues(t=this.topicList){console.debug("resetting values..."),console.debug("topics: ",t),this.doUnsubscribe(t),this.doSubscribe(t)},setDefaultValues(){console.debug("setting default values... (ToDo)")},sendCommand(t){this.doPublish("openWB/set/command/"+this.client.options.clientId+"/todo",t,!1)},createConnection(){const{protocol:t,host:e,port:n,endpoint:u,...l}=this.connection,s=`${t}://${e}:${n}${u}`;console.debug("connecting to broker:",s);try{this.client=Z.connect(s,l)}catch(a){console.error("mqtt.connect error",a)}this.client.on("connect",()=>{console.debug("Connection succeeded! ClientId: ",this.client.options.clientId),this.doSubscribe(["openWB/system/usage_terms_acknowledged"]),this.doSubscribe(["openWB/system/installAssistantDone"])}),this.client.on("error",a=>{console.error("Connection failed",a)}),this.client.on("message",(a,i)=>{if(i.toString().length>0){let v;try{v=JSON.parse(i.toString())}catch($){console.debug("Json parsing failed, fallback to string: ",a,$),v=i.toString()}this.$store.commit("updateTopic",{topic:a,payload:v})}else this.$store.commit("removeTopic",a)})},doSubscribe(t){console.debug("doSubscribe",t),t.forEach(e=>{this.$store.commit("addSubscription",e),this.$store.getters.subscriptionCount(e)==1?(e.includes("#")||e.includes("+")?console.debug("skipping init of wildcard topic:",e):this.$store.commit("addTopic",{topic:e,payload:void 0}),this.client.subscribe(e,{},n=>{if(n){console.error("Subscribe to topics error",n);return}})):console.debug("Already subscribed to topic: ",e)})},doUnsubscribe(t){console.debug("doUnsubscribe",t),t.forEach(e=>{this.$store.commit("removeSubscription",e),this.$store.getters.subscriptionCount(e)==0?(this.client.unsubscribe(e,n=>{n&&console.error("Unsubscribe error",n)}),e.includes("#")||e.includes("+")?(console.debug("expanding wildcard topic:",e),Object.keys(this.getWildcardTopics(e)).forEach(n=>{console.debug("removing wildcardTopic:",n),this.$store.commit("removeTopic",n)})):(console.debug("removing topic:",e),this.$store.commit("removeTopic",e))):console.debug("Still subscribed to topic: ",e)})},doPublish(t,e,n=!0,u=2){let l={qos:u,retain:n};this.client.publish(t,JSON.stringify(e),l,s=>{s&&console.error("Publish error",s)})},postClientMessage(t,e="secondary"){console.debug("postMessage:",t,e);const n=Date.now(),u="openWB/command/"+this.mqttClientId+"/messages/"+n;this.$store.commit({type:"addTopic",topic:u,payload:{message:t,type:e,source:"client",timestamp:Math.floor(n/1e3)}})},getWildcardTopics(t,e=!1){let n=t;return e||(n="^"+t.replaceAll("/","\\/").replaceAll("+","[^+/]+").replaceAll("#","[^#/]+")+"$"),Object.keys(this.$store.state.mqtt).filter(u=>u.match(n)).reduce((u,l)=>({...u,[l]:this.$store.state.mqtt[l]}),{})}}},Ho={role:"main",class:"container"},Do={id:"content"};function Eo(t,e,n,u,l,s){const a=g("nav-bar"),i=g("router-view"),v=g("donation-banner"),$=g("page-footer"),M=g("messages"),A=g("blocker");return r(),d(T,null,[o("header",null,[m(a)]),o("div",Ho,[o("div",Do,[o("h1",null,b(t.$route.meta.heading),1),m(i,{onSave:s.saveValues,onReset:s.resetValues,onDefaults:s.setDefaultValues,onSendCommand:s.sendCommand},null,8,["onSave","onReset","onDefaults","onSendCommand"])]),m(v)]),m($),m(M),m(A)],64)}const Lo=y(Po,[["render",Eo],["__file","/opt/openWB-dev/openwb-ui-settings/src/App.vue"]]),jo="modulepreload",Wo=function(t){return"/openWB/web/settings/"+t},W={},w=function(e,n,u){if(!n||n.length===0)return e();const l=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=Wo(s),s in W)return;W[s]=!0;const a=s.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!u)for(let M=l.length-1;M>=0;M--){const A=l[M];if(A.href===s&&(!a||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${i}`))return;const $=document.createElement("link");if($.rel=a?"stylesheet":jo,a||($.as="script",$.crossOrigin=""),$.href=s,document.head.appendChild($),a)return new Promise((M,A)=>{$.addEventListener("load",M),$.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};let F={mqtt:{},mqttSubscriptions:{},local:{reloadRequired:!1,savingData:!1},text:{rfidWiki:'Bitte auch hiervon abhängige Einstellungen beachten. Eine Übersicht gibt es im <a href="https://github.com/openWB/core/wiki/Ladung-nur-nach-Freischaltung" target="_blank" rel="noopener noreferrer">Wiki</a>.'}};F.examples={text1:"Text...",text2:"mail@domain.com",text3:"openwb.local",text4:"http://www.openwb.de",text5:"Benutzername",text6:"12:34",text7:"2021-10-31",number1:5,number2:10,number3:28e-5,password1:"GeHeiM!",textarea1:"Langer Text...",range1:6,range2:10,select1:1,select2:"three",buttonGroup1:1,checkbox1:!0,json1:{text:"Text",number:123},hierarchy1:[{id:0,type:"counter",children:[{id:3,type:"inverter",children:[]},{id:4,type:"bat",children:[]},{id:1,type:"cp",children:[]},{id:2,type:"cp",children:[]}]}],hierarchy1Labels:{0:"EVU",1:"Ladepunkt 1",2:"Ladepunkt 2",3:"Wechselrichter",4:"Batteriespeicher"},tags:["1234","2345","3456"]};const H=X({state:F,mutations:{storeLocal(t,e){t.local[e.name]=e.value},addTopic(t,e){Object.keys(t.mqtt).includes(e.topic)?console.warn("topic already exists: ",e.topic):t.mqtt[e.topic]=e.payload},removeTopic(t,e){delete t.mqtt[e]},updateTopic(t,e){const n=(u,l,s)=>l.split(".").reduce((a,i,v)=>a[i]=l.split(".").length===++v?s:a[i]||{},u);e.topic in t.mqtt||!(e.topic in t.examples)?e.objectPath!=null?n(t.mqtt[e.topic],e.objectPath,e.payload):t.mqtt[e.topic]=e.payload:(console.debug("topic not found in state.mqtt: ",e.topic),e.topic in t.examples?e.objectPath!=null?n(t.examples[e.topic],e.objectPath,e.payload):t.examples[e.topic]=e.payload:console.warn("topic not found in state: ",e.topic," giving up"))},addSubscription(t,e){e in t.mqttSubscriptions?t.mqttSubscriptions[e]+=1:t.mqttSubscriptions[e]=1,console.debug("subscription count: ",e,t.mqttSubscriptions[e])},removeSubscription(t,e){e in t.mqttSubscriptions&&(t.mqttSubscriptions[e]-=1,t.mqttSubscriptions[e]<=0&&delete t.mqttSubscriptions[e])}},actions:{},modules:{},getters:{usageTermsAcknowledged(t){return new Promise(e=>{if(t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0)e(t.mqtt["openWB/system/usage_terms_acknowledged"]);else{var n,u;n=setTimeout(()=>{clearInterval(u),e(!1)},5e3),u=setInterval(()=>{t.mqtt["openWB/system/usage_terms_acknowledged"]!==void 0&&(clearTimeout(n),clearInterval(u),e(t.mqtt["openWB/system/usage_terms_acknowledged"]))},100)}})},installAssistantDone(t){return new Promise(e=>{if(t.mqtt["openWB/system/installAssistantDone"]!==void 0)e(t.mqtt["openWB/system/installAssistantDone"]);else{var n,u;n=setTimeout(()=>{clearInterval(u),e(!1)},5e3),u=setInterval(()=>{t.mqtt["openWB/system/installAssistantDone"]!==void 0&&(clearTimeout(n),clearInterval(u),e(t.mqtt["openWB/system/installAssistantDone"]))},100)}})},subscriptionCount:t=>e=>t.mqttSubscriptions[e]||0}}),U=[{path:"/",redirect:"/GeneralConfig"},{path:"/Status",name:"Status",meta:{heading:"Status"},component:()=>w(()=>import("./Status-f4fe35a1.js"),["assets/Status-f4fe35a1.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-5fa56b74.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/Status-6557de7c.css"])},{path:"/Logging/ChargeLog",name:"ChargeLog",meta:{heading:"Auswertungen - Ladeprotokoll"},component:()=>w(()=>import("./ChargeLog-0789f309.js"),["assets/ChargeLog-0789f309.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/ChargeLog-1fb3fa68.css"])},{path:"/Logging/Chart/:chartRange?/:initialDate?",name:"DailyChart",meta:{heading:"Auswertungen - Diagramme"},component:()=>w(()=>import("./Chart-f906208b.js"),["assets/Chart-f906208b.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-chartjs-5fa56b74.js","assets/vendor-luxon-8ddd27a0.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/Chart-e20451b4.css"])},{path:"/GeneralConfig",name:"GeneralConfig",meta:{heading:"Einstellungen - Allgemein"},component:()=>w(()=>import("./GeneralConfig-1687a15a.js").then(t=>t.a),["assets/GeneralConfig-1687a15a.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/OptionalComponents",name:"OptionalComponents",meta:{heading:"Einstellungen - Optionale Hardware"},component:()=>w(()=>import("./OptionalComponents-4c7d75e4.js").then(t=>t.O),["assets/OptionalComponents-4c7d75e4.js","assets/dynamic-import-helper-be004503.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css"])},{path:"/GeneralChargeConfig",name:"GeneralChargeConfig",meta:{heading:"Ladeeinstellungen - Übergreifendes"},component:()=>w(()=>import("./GeneralChargeConfig-764e9a8c.js").then(t=>t.G),["assets/GeneralChargeConfig-764e9a8c.js","assets/dynamic-import-helper-be004503.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css"])},{path:"/InstantChargeConfig",name:"InstantChargeConfig",meta:{heading:"Ladeeinstellungen - Sofortladen"},component:()=>w(()=>import("./InstantChargeConfig-d5bb57b3.js"),["assets/InstantChargeConfig-d5bb57b3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/PVChargeConfig",name:"PVChargeConfig",meta:{heading:"Ladeeinstellungen - PV-Laden"},component:()=>w(()=>import("./PVChargeConfig-3a73cba8.js"),["assets/PVChargeConfig-3a73cba8.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/TimeChargeConfig",name:"TimeChargeConfig",meta:{heading:"Ladeeinstellungen - Zeitladen"},component:()=>w(()=>import("./TimeChargeConfig-af2bcfdc.js"),["assets/TimeChargeConfig-af2bcfdc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/ScheduledChargeConfig",name:"ScheduledChargeConfig",meta:{heading:"Ladeeinstellungen - Zielladen"},component:()=>w(()=>import("./ScheduledChargeConfig-76a4970c.js"),["assets/ScheduledChargeConfig-76a4970c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/HardwareInstallation",name:"HardwareInstallation",meta:{heading:"Konfiguration - Geräte und Komponenten"},component:()=>w(()=>import("./HardwareInstallation-d2c0f1d5.js").then(t=>t.a),["assets/HardwareInstallation-d2c0f1d5.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"])},{path:"/LoadManagementConfiguration",name:"LoadManagementConfiguration",meta:{heading:"Konfiguration - Lastmanagement"},component:()=>w(()=>import("./LoadManagementConfig-269dec5d.js"),["assets/LoadManagementConfig-269dec5d.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/ChargePointInstallation",name:"ChargePointInstallation",meta:{heading:"Konfiguration - Ladepunkte"},component:()=>w(()=>import("./ChargePointInstallation-2f136eb7.js").then(t=>t.c),["assets/ChargePointInstallation-2f136eb7.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"])},{path:"/VehicleConfiguration/:section?/:section_index?/:section_part?/:action?",name:"VehicleConfiguration",meta:{heading:"Konfiguration - Fahrzeuge"},component:()=>w(()=>import("./VehicleConfig-9a14b719.js").then(t=>t.b),["assets/VehicleConfig-9a14b719.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"])},{path:"/System/CloudConfiguration",name:"CloudConfig",meta:{heading:"System - openWB Cloud"},component:()=>w(()=>import("./CloudConfig-b33b0184.js"),["assets/CloudConfig-b33b0184.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/MqttBridgeConfiguration",name:"MqttBridgeConfig",meta:{heading:"System - MQTT-Brücken"},component:()=>w(()=>import("./MqttBridgeConfig-b791fa6d.js"),["assets/MqttBridgeConfig-b791fa6d.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/MqttBridgeConfig-3471079a.css"])},{path:"/System/DebugConfiguration",name:"Debugging",meta:{heading:"System - Fehlersuche"},component:()=>w(()=>import("./DebugConfig-6d0524fc.js"),["assets/DebugConfig-6d0524fc.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/DebugConfig-e21ab72c.css"])},{path:"/System/Support",name:"Support",meta:{heading:"System - Support"},component:()=>w(()=>import("./Support-e285335a.js"),["assets/Support-e285335a.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/LegalSettings",name:"LegalSettings",meta:{heading:"System - Rechtliches"},component:()=>w(()=>import("./LegalSettings-acbf6750.js"),["assets/LegalSettings-acbf6750.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])},{path:"/System/SystemConfiguration",name:"SystemConfig",meta:{heading:"System - System"},component:()=>w(()=>import("./System-83bb0533.js"),["assets/System-83bb0533.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/System-0f1d217b.css"])},{path:"/System/DataManagement",name:"DataManagement",meta:{heading:"System - Datenverwaltung"},component:()=>w(()=>import("./DataManagement-1fb1197d.js").then(t=>t.a),["assets/DataManagement-1fb1197d.js","assets/vendor-fortawesome-41164876.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/dynamic-import-helper-be004503.js"])},{path:"/System/InstallAssistant",name:"InstallAssistant",meta:{heading:"System - Einrichtungsassistent"},component:()=>w(()=>import("./InstallAssistant-a3c80ad1.js"),["assets/InstallAssistant-a3c80ad1.js","assets/dynamic-import-helper-be004503.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])}];U.push({path:"/TestingStore",name:"VUEX Store",meta:{heading:"Beispiele - VUEX Store"},component:()=>w(()=>import("./TestingStore-935625ae.js"),["assets/TestingStore-935625ae.js","assets/OpenwbSortableList-3ce7f991.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/OpenwbSortableList-7ba533e4.css","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js"])});const E=ee({history:te(),routes:U});E.beforeEach(async t=>{if(await H.getters.usageTermsAcknowledged){if(!await H.getters.installAssistantDone&&t.name!=="InstallAssistant")return{name:"InstallAssistant"}}else if(t.name!=="LegalSettings")return{name:"LegalSettings"}});E.afterEach(t=>{t.meta.heading?document.title="openWB | "+t.meta.heading:document.title="openWB"});const L=se(Lo);L.use(H).use(E).use(He,De);const Ro=Object.assign({"./components/OpenwbBaseAlert.vue":We,"./components/OpenwbBaseArrayInput.vue":tt,"./components/OpenwbBaseAvatar.vue":lt,"./components/OpenwbBaseButtonGroupInput.vue":ht,"./components/OpenwbBaseButtonInput.vue":Bt,"./components/OpenwbBaseCard.vue":qt,"./components/OpenwbBaseCheckboxInput.vue":Rt,"./components/OpenwbBaseClickButton.vue":zt,"./components/OpenwbBaseCopyToClipboard.vue":Yt,"./components/OpenwbBaseHeading.vue":os,"./components/OpenwbBaseModalDialog.vue":ms,"./components/OpenwbBaseNumberInput.vue":Os,"./components/OpenwbBaseRangeInput.vue":Es,"./components/OpenwbBaseSelectInput.vue":Qs,"./components/OpenwbBaseSubmitButtons.vue":on,"./components/OpenwbBaseTextInput.vue":Sn,"./components/OpenwbBaseTextarea.vue":Dn,"./components/OpenwbBaseToast.vue":Nn});Object.entries(Ro).forEach(([t,e])=>{const n=ne(oe(t.split("/").pop().replace(/\.\w+$/,"")));L.component(n,e.default)});L.mount("#app");export{N as C,w as _};
diff --git a/web/settings/assets/inverter-5f7aec52.js b/web/settings/assets/inverter-098d4ce8.js
similarity index 81%
rename from web/settings/assets/inverter-5f7aec52.js
rename to web/settings/assets/inverter-098d4ce8.js
index 3ab2599d66..3511bd3a8e 100644
--- a/web/settings/assets/inverter-5f7aec52.js
+++ b/web/settings/assets/inverter-098d4ce8.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as o,k as p,l,D as n,N as d,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(t,e,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),l("div",_,[n(r,null,{default:d(()=>e[1]||(e[1]=[u(" Einstellungen für smart-me Wechselrichter ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":t.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as o,k as p,l,D as n,N as d,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSmartMeInverter",mixins:[a]},_={class:"device-smart-me-inverter"};function f(t,e,v,b,g,x){const r=o("openwb-base-heading"),i=o("openwb-base-text-input");return p(),l("div",_,[n(r,null,{default:d(()=>e[1]||(e[1]=[u(" Einstellungen für smart-me Wechselrichter ")])),_:1}),n(i,{title:"Geräte-ID",required:"","model-value":t.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.id"))},null,8,["model-value"])])}const E=m(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/smart_me/smart_me/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-287e8910.js b/web/settings/assets/inverter-18c2474d.js
similarity index 87%
rename from web/settings/assets/inverter-287e8910.js
rename to web/settings/assets/inverter-18c2474d.js
index b40e158518..82be365503 100644
--- a/web/settings/assets/inverter-287e8910.js
+++ b/web/settings/assets/inverter-18c2474d.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l as d,D as t,N as u,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeInverter",mixins:[p]},_={class:"device-deye-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const V=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{V as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as n,k as m,l as d,D as t,N as u,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceDeyeInverter",mixins:[p]},_={class:"device-deye-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return m(),d("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[l(" Einstellungen für Deye Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const V=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/deye/deye/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-fa1c29cd.js b/web/settings/assets/inverter-323c3074.js
similarity index 94%
rename from web/settings/assets/inverter-fa1c29cd.js
rename to web/settings/assets/inverter-323c3074.js
index 7e631fae63..0578031670 100644
--- a/web/settings/assets/inverter-fa1c29cd.js
+++ b/web/settings/assets/inverter-323c3074.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as l,k as m,l as g,D as r,N as o,y as n,x as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},c={class:"device-http-inverter"};function b(t,e,v,f,w,_){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),g("div",c,[r(d,null,{default:o(()=>e[2]||(e[2]=[n(" Einstellungen für Http Wechselrichter ")])),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>e[3]||(e[3]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>e[4]||(e[4]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),a("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"])])}const S=u(h,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{S as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as l,k as m,l as g,D as r,N as o,y as n,x as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"DeviceHttpInverter",mixins:[p]},c={class:"device-http-inverter"};function b(t,e,v,f,w,_){const d=l("openwb-base-heading"),s=l("openwb-base-text-input");return m(),g("div",c,[r(d,null,{default:o(()=>e[2]||(e[2]=[n(" Einstellungen für Http Wechselrichter ")])),_:1}),r(s,{title:"Pfad für Leistung",subtype:"text",required:"",pattern:"^/[-a-zA-Z0-9@:%_\\+.~#?&/=]*","model-value":t.component.configuration.power_path,"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateConfiguration(i,"configuration.power_path"))},{help:o(()=>e[3]||(e[3]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Pfad für Zählerstand Erzeugung",subtype:"text",pattern:"^(/[-a-zA-Z0-9@:%_\\+.~#?&/=]*)","model-value":t.component.configuration.exported_path,"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateConfiguration(i,"configuration.exported_path"))},{help:o(()=>e[4]||(e[4]=[n(' Diese Angabe wird an die Server-URL angehängt und muss mit einem Schrägstrich "/" beginnen.'),a("br",null,null,-1),n(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche den aktuellen absoluten Zählerstand in Wh darstellt."),a("br",null,null,-1),n(" Wird dieses Feld leer gelassen, wird der Zählerstand intern simuliert. ")])),_:1},8,["model-value"])])}const S=u(h,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/http/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-e49c5d75.js b/web/settings/assets/inverter-46c18816.js
similarity index 94%
rename from web/settings/assets/inverter-e49c5d75.js
rename to web/settings/assets/inverter-46c18816.js
index 80db1bcd9d..26aaef90e6 100644
--- a/web/settings/assets/inverter-e49c5d75.js
+++ b/web/settings/assets/inverter-46c18816.js
@@ -1 +1 @@
-import{C as l}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as b,l as v,D as r,N as i,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSunnyBoyInverter",mixins:[l]},_={class:"device-sunnyboy-inverter"};function g(n,e,y,c,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),v("div",_,[r(s,null,{default:i(()=>e[3]||(e[3]=[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")])),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":n.component.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>e[4]||(e[4]=[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")])),_:1},8,["model-value"]),r(d,{title:"Version","not-selected":"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>e[5]||(e[5]=[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")])),_:1},8,["model-value"])])}const I=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default};
+import{C as l}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as t,k as b,l as v,D as r,N as i,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceSunnyBoyInverter",mixins:[l]},_={class:"device-sunnyboy-inverter"};function g(n,e,y,c,w,C){const s=t("openwb-base-heading"),u=t("openwb-base-button-group-input"),d=t("openwb-base-select-input"),p=t("openwb-base-number-input");return b(),v("div",_,[r(s,null,{default:i(()=>e[3]||(e[3]=[a(" Einstellungen für SMA Sunny Boy/Tripower Wechselrichter ")])),_:1}),r(u,{title:"Hybrid-System",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":n.component.configuration.hybrid,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.hybrid"))},{help:i(()=>e[4]||(e[4]=[a(" Diese Option aktivieren, wenn ein Tripower Smart Energy, Sunny Boy Smart Energy oder ein anderes Hybrid-System verbaut ist. ")])),_:1},8,["model-value"]),r(d,{title:"Version","not-selected":"Bitte auswählen",options:[{value:0,text:"Standard"},{value:1,text:"Core-2"},{value:2,text:"Data Manager/Cluster Controller"}],"model-value":n.component.configuration.version,required:"","onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.version"))},null,8,["model-value"]),r(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.modbus_id"))},{help:i(()=>e[5]||(e[5]=[a(" Für die Standardversion ist die Standardmodbus-ID 3, für Core-2 ist sie 1 und für Data Manager/Cluster Controller 2. Wurde eine abweichende Modbus ID konfiguriert, entsprechend anpassen. ")])),_:1},8,["model-value"])])}const I=m(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_sunny_boy/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-fa423cd0.js b/web/settings/assets/inverter-475ea9be.js
similarity index 89%
rename from web/settings/assets/inverter-fa423cd0.js
rename to web/settings/assets/inverter-475ea9be.js
index 0969dcacd8..16acb398d3 100644
--- a/web/settings/assets/inverter-fa423cd0.js
+++ b/web/settings/assets/inverter-475ea9be.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as n,k as d,l as c,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSolarViewInverter",mixins:[p]},_={class:"device-solar-view-inverter"};function f(o,e,v,g,w,b){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return d(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für SolarView Wechselrichter ")])),_:1}),t(a,{title:"Kommando für die Abfrage",required:"","model-value":o.component.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.command"))},{help:i(()=>e[2]||(e[2]=[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")])),_:1},8,["model-value"])])}const N=l(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{N as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as n,k as d,l as c,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const u={name:"DeviceSolarViewInverter",mixins:[p]},_={class:"device-solar-view-inverter"};function f(o,e,v,g,w,b){const s=n("openwb-base-heading"),a=n("openwb-base-text-input");return d(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für SolarView Wechselrichter ")])),_:1}),t(a,{title:"Kommando für die Abfrage",required:"","model-value":o.component.configuration.command,"onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.command"))},{help:i(()=>e[2]||(e[2]=[r(" Kommandos gemäß SolarView-Dokumentation, z.B.: 00* (gesamte Anlage), 01* (Wechselrichter 1), 02* (Wechselrichter 2) ")])),_:1},8,["model-value"])])}const N=l(u,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solar_view/solar_view/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-c38863be.js b/web/settings/assets/inverter-4952d317.js
similarity index 89%
rename from web/settings/assets/inverter-c38863be.js
rename to web/settings/assets/inverter-4952d317.js
index 1cc791a9ca..2c3dcc288e 100644
--- a/web/settings/assets/inverter-c38863be.js
+++ b/web/settings/assets/inverter-4952d317.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as o,k as l,l as m,D as n,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),m("div",v,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB PV-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as o,k as l,l as m,D as n,N as u,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbPvkitInverter",mixins:[p]},v={class:"device-openwb-pvkit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),m("div",v,[n(i,null,{default:u(()=>e[1]||(e[1]=[c(" Einstellungen für openWB PV-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_pv_kit/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-3715b21d.js b/web/settings/assets/inverter-4ae76a42.js
similarity index 88%
rename from web/settings/assets/inverter-3715b21d.js
rename to web/settings/assets/inverter-4ae76a42.js
index fad6f59f77..74a62a6ea0 100644
--- a/web/settings/assets/inverter-3715b21d.js
+++ b/web/settings/assets/inverter-4ae76a42.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as n,k as p,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[a]},_={class:"device-huawei-smart-logger-inverter"};function g(o,e,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as n,k as p,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceHuaweiSmartLoggerInverter",mixins:[a]},_={class:"device-huawei-smart-logger-inverter"};function g(o,e,b,f,v,w){const i=n("openwb-base-heading"),r=n("openwb-base-number-input");return p(),u("div",_,[t(i,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für Huawei SmartLogger Wechselrichter ")])),_:1}),t(r,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/huawei/huawei_smartlogger/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-1e6b58f6.js b/web/settings/assets/inverter-4f43f74f.js
similarity index 82%
rename from web/settings/assets/inverter-1e6b58f6.js
rename to web/settings/assets/inverter-4f43f74f.js
index 02eb83dac4..6d489949a9 100644
--- a/web/settings/assets/inverter-1e6b58f6.js
+++ b/web/settings/assets/inverter-4f43f74f.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as p,l,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[u]},d={class:"device-youless-inverter"};function f(o,e,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Youless LS120 Wechselrichter ")])),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":o.component.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default};
+import{C as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as t,k as p,l,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceYoulessInverter",mixins:[u]},d={class:"device-youless-inverter"};function f(o,e,b,v,g,x){const s=t("openwb-base-heading"),i=t("openwb-base-button-group-input");return p(),l("div",d,[n(s,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für Youless LS120 Wechselrichter ")])),_:1}),n(i,{title:"S0-Eingang auslesen",buttons:[{buttonValue:!1,text:"nein"},{buttonValue:!0,text:"ja"}],"model-value":o.component.configuration.source_s0,"onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.source_s0"))},null,8,["model-value"])])}const N=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/youless/youless/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter-70f78ef5.js b/web/settings/assets/inverter-55ea35ce.js
similarity index 81%
rename from web/settings/assets/inverter-70f78ef5.js
rename to web/settings/assets/inverter-55ea35ce.js
index 018531a352..4a56db6681 100644
--- a/web/settings/assets/inverter-70f78ef5.js
+++ b/web/settings/assets/inverter-55ea35ce.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[p]},_={class:"device-solis-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Wechselrichter ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{E as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as n,k as m,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolisInverter",mixins:[p]},_={class:"device-solis-inverter"};function b(o,e,f,v,g,w){const i=n("openwb-base-heading"),s=n("openwb-base-number-input");return m(),l("div",_,[t(i,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solis Wechselrichter ")])),_:1}),t(s,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const E=a(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solis/solis/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-e10956ea.js b/web/settings/assets/inverter-593f3daf.js
similarity index 89%
rename from web/settings/assets/inverter-e10956ea.js
rename to web/settings/assets/inverter-593f3daf.js
index fdc341f1ec..e4c3fef588 100644
--- a/web/settings/assets/inverter-e10956ea.js
+++ b/web/settings/assets/inverter-593f3daf.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as o,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as o,k as l,l as u,D as n,N as m,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceOpenwbEvukitInverter",mixins:[p]},v={class:"device-openwb-evukit-inverter"};function _(t,e,f,b,w,g){const i=o("openwb-base-heading"),r=o("openwb-base-select-input");return l(),u("div",v,[n(i,null,{default:m(()=>e[1]||(e[1]=[c(" Einstellungen für openWB EVU-Kit Wechselrichter ")])),_:1}),n(r,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"}],"model-value":t.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.version"))},null,8,["model-value"])])}const $=a(d,[["render",_],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_evu_kit/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-bcc6d0d6.js b/web/settings/assets/inverter-5ad18beb.js
similarity index 83%
rename from web/settings/assets/inverter-bcc6d0d6.js
rename to web/settings/assets/inverter-5ad18beb.js
index 67073650d6..c6deed3879 100644
--- a/web/settings/assets/inverter-bcc6d0d6.js
+++ b/web/settings/assets/inverter-5ad18beb.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as t,k as u,l,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[a]},_={class:"device-kostal-piko-inverter"};function f(o,e,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko Wechselrichter ")])),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":o.component.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.bat_configured"))},null,8,["model-value"])])}const E=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as t,k as u,l,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalPikoInverter",mixins:[a]},_={class:"device-kostal-piko-inverter"};function f(o,e,b,v,g,k){const i=t("openwb-base-heading"),r=t("openwb-base-button-group-input");return u(),l("div",_,[n(i,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko Wechselrichter ")])),_:1}),n(r,{title:"Speicher",buttons:[{buttonValue:!1,text:"nicht vorhanden"},{buttonValue:!0,text:"vorhanden"}],"model-value":o.component.configuration.bat_configured,"onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.bat_configured"))},null,8,["model-value"])])}const E=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_piko/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-88d5ed46.js b/web/settings/assets/inverter-5e9ec317.js
similarity index 81%
rename from web/settings/assets/inverter-88d5ed46.js
rename to web/settings/assets/inverter-5e9ec317.js
index 676ff31163..c58afd4b39 100644
--- a/web/settings/assets/inverter-88d5ed46.js
+++ b/web/settings/assets/inverter-5e9ec317.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as n,k as p,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[a]},_={class:"device-solarmax-inverter"};function b(o,e,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solarmax Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{E as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as n,k as p,l,D as t,N as u,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolarmaxInverter",mixins:[a]},_={class:"device-solarmax-inverter"};function b(o,e,f,v,x,g){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return p(),l("div",_,[t(r,null,{default:u(()=>e[1]||(e[1]=[d(" Einstellungen für Solarmax Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const E=m(c,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solarmax/solarmax/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-b61011e2.js b/web/settings/assets/inverter-5f9ef8bd.js
similarity index 83%
rename from web/settings/assets/inverter-b61011e2.js
rename to web/settings/assets/inverter-5f9ef8bd.js
index ca77e7f1b9..b7ea2227a9 100644
--- a/web/settings/assets/inverter-b61011e2.js
+++ b/web/settings/assets/inverter-5f9ef8bd.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as o,k as u,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function c(n,e,b,f,v,y){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{M as default};
+import{C as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as o,k as u,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceSigenergyInverter",mixins:[m]},_={class:"device-sigenergy-inverter"};function c(n,e,b,f,v,y){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Sigenergy Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":n.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von Sigenergy ist 247 ")])),_:1},8,["model-value"])])}const M=d(g,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sigenergy/sigenergy/inverter.vue"]]);export{M as default};
diff --git a/web/settings/assets/inverter-48761201.js b/web/settings/assets/inverter-6529a4df.js
similarity index 90%
rename from web/settings/assets/inverter-48761201.js
rename to web/settings/assets/inverter-6529a4df.js
index 398687449c..51dd62aab1 100644
--- a/web/settings/assets/inverter-48761201.js
+++ b/web/settings/assets/inverter-6529a4df.js
@@ -1 +1 @@
-import{C as l}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as n,k as d,l as c,D as o,N as r,y as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[l]},f={class:"device-smahm-inverter"};function b(t,e,v,g,h,w){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),m=n("openwb-base-number-input");return d(),c("div",f,[o(s,null,{default:r(()=>e[1]||(e[1]=[i(" Einstellungen für SMA-HM/EM Wechselrichter ")])),_:1}),o(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')])),_:1}),o(m,{title:"Seriennummer",required:"","model-value":t.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default};
+import{C as l}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as n,k as d,l as c,D as o,N as r,y as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceSmahmInverter",mixins:[l]},f={class:"device-smahm-inverter"};function b(t,e,v,g,h,w){const s=n("openwb-base-heading"),a=n("openwb-base-alert"),m=n("openwb-base-number-input");return d(),c("div",f,[o(s,null,{default:r(()=>e[1]||(e[1]=[i(" Einstellungen für SMA-HM/EM Wechselrichter ")])),_:1}),o(a,{subtype:"info"},{default:r(()=>e[2]||(e[2]=[i(' Dies ist nur die richtige Komponente, wenn ein extra EnergyMeter ausschließlich für die PV-Messung vorhanden ist. Wenn nur ein HomeManager vorhanden ist, muss ein Gerät "SMA Sunny Boy" mit der entsprechenden Wechselrichter-Komponente angelegt werden. ')])),_:1}),o(m,{title:"Seriennummer",required:"","model-value":t.component.configuration.serials,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.serials"))},null,8,["model-value"])])}const $=u(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/sma/sma_shm/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-471fa6e9.js b/web/settings/assets/inverter-6ea218d8.js
similarity index 88%
rename from web/settings/assets/inverter-471fa6e9.js
rename to web/settings/assets/inverter-6ea218d8.js
index 8867caa443..98134b2000 100644
--- a/web/settings/assets/inverter-471fa6e9.js
+++ b/web/settings/assets/inverter-6ea218d8.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(o,e,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return d(),m("div",_,[t(r,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Wechselrichter ")])),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{S as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as n,k as d,l as m,D as t,N as l,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceSolaredgeInverter",mixins:[a]},_={class:"device-solaredge-inverter"};function f(o,e,g,b,v,w){const r=n("openwb-base-heading"),i=n("openwb-base-number-input");return d(),m("div",_,[t(r,null,{default:l(()=>e[1]||(e[1]=[u(" Einstellungen für SolarEdge Wechselrichter ")])),_:1}),t(i,{title:"SolarEdge-Geräte-ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=s=>o.updateConfiguration(s,"configuration.modbus_id"))},null,8,["model-value"])])}const S=p(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/solaredge/solaredge/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-57d15ff3.js b/web/settings/assets/inverter-7d0a508c.js
similarity index 91%
rename from web/settings/assets/inverter-57d15ff3.js
rename to web/settings/assets/inverter-7d0a508c.js
index 771382c1ef..47acc5ab78 100644
--- a/web/settings/assets/inverter-57d15ff3.js
+++ b/web/settings/assets/inverter-7d0a508c.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as n,k as m,l as c,D as r,N as i,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(t,e,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>e[2]||(e[2]=[a(" Einstellungen für Studer Wechselrichter ")])),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":t.component.configuration.vc_type,required:"","onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":t.component.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>e[3]||(e[3]=[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")])),_:1},8,["model-value"])])}const B=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{B as default};
+import{C as s}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as n,k as m,l as c,D as r,N as i,y as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceStuderInverter",mixins:[s]},b={class:"device-studer-inverter"};function v(t,e,f,g,V,S){const u=n("openwb-base-heading"),p=n("openwb-base-button-group-input"),l=n("openwb-base-number-input");return m(),c("div",b,[r(u,null,{default:i(()=>e[2]||(e[2]=[a(" Einstellungen für Studer Wechselrichter ")])),_:1}),r(p,{title:"Typ der MPPT Solarladeregler",buttons:[{buttonValue:"VT",text:"Variotrack (VT-40/VT-65/VT-80)"},{buttonValue:"VS",text:"VarioString (VS-70/VS-120)"}],"model-value":t.component.configuration.vc_type,required:"","onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.vc_type"))},null,8,["model-value"]),r(l,{title:"Anzahl MPPT Solarladeregler",required:"",min:1,max:9,"model-value":t.component.configuration.vc_count,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.vc_count"))},{help:i(()=>e[3]||(e[3]=[a(" Anzahl (1-9) der Studer MPPT Solarladeregler im System (VS/VT) ")])),_:1},8,["model-value"])])}const B=d(_,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/studer/studer/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-80f24f74.js b/web/settings/assets/inverter-819b1a3e.js
similarity index 93%
rename from web/settings/assets/inverter-80f24f74.js
rename to web/settings/assets/inverter-819b1a3e.js
index 3808d4f9c1..3c6c68d079 100644
--- a/web/settings/assets/inverter-80f24f74.js
+++ b/web/settings/assets/inverter-819b1a3e.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as u,u as a,k as p,l as m,D as r,N as i,y as t,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceJsonInverter",mixins:[d]},f={class:"device-json-inverter"};function b(n,e,c,v,_,h){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",f,[r(l,null,{default:i(()=>e[2]||(e[2]=[t(" Einstellungen für JSON Wechselrichter ")])),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>e[3]||(e[3]=[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>e[4]||(e[4]=[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const B=u(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{B as default};
+import{C as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as u,u as a,k as p,l as m,D as r,N as i,y as t,x as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceJsonInverter",mixins:[d]},f={class:"device-json-inverter"};function b(n,e,c,v,_,h){const l=a("openwb-base-heading"),s=a("openwb-base-text-input");return p(),m("div",f,[r(l,null,{default:i(()=>e[2]||(e[2]=[t(" Einstellungen für JSON Wechselrichter ")])),_:1}),r(s,{title:"Abfrage für Leistung",subtype:"text",required:"","model-value":n.component.configuration.jq_power,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.jq_power"))},{help:i(()=>e[3]||(e[3]=[t(' Zur Analyse der Werte aus dem json-Objekt wird jq benutzt. Ist die Json Antwort z.B. {"PowerInstalledPeak":4655, "PowerProduced":132, "PowerOut":897.08172362555717, "PowerSelfSupplied":234.9182763744428} So muss hier .PowerOut eingetragen werden. '),g("br",null,null,-1),t(" Es wird vom Server eine Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen erwartet, welche die aktuelle Leistung in Watt darstellt. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) ")])),_:1},8,["model-value"]),r(s,{title:"Abfrage für Zählerstand",subtype:"text","model-value":n.component.configuration.jq_exported,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.jq_exported"))},{help:i(()=>e[4]||(e[4]=[t(" Wird dieses Feld leer gelassen, dann werden Zählerstände intern simuliert. ")])),_:1},8,["model-value"])])}const B=u(w,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-1529fe73.js b/web/settings/assets/inverter-a17a2665.js
similarity index 82%
rename from web/settings/assets/inverter-1529fe73.js
rename to web/settings/assets/inverter-a17a2665.js
index 2840006952..4472041d1d 100644
--- a/web/settings/assets/inverter-1529fe73.js
+++ b/web/settings/assets/inverter-a17a2665.js
@@ -1 +1 @@
-import{C as m}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as o,k as u,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(n,e,v,b,g,h){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")])),_:1}),t(p,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[r(' EID für "production" ')])),_:1},8,["model-value"])])}const B=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{B as default};
+import{C as m}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as o,k as u,l,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"DeviceEnphaseInverter",mixins:[m]},_={class:"device-enphase-inverter"};function f(n,e,v,b,g,h){const s=o("openwb-base-heading"),p=o("openwb-base-number-input");return u(),l("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für Enphase Envoy / IQ Gateway Wechselrichter ")])),_:1}),t(p,{title:"EID",required:"","model-value":n.component.configuration.eid,"onUpdate:modelValue":e[0]||(e[0]=a=>n.updateConfiguration(a,"configuration.eid"))},{help:i(()=>e[2]||(e[2]=[r(' EID für "production" ')])),_:1},8,["model-value"])])}const B=d(c,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/enphase/enphase/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-eb5f339a.js b/web/settings/assets/inverter-b4727f0c.js
similarity index 85%
rename from web/settings/assets/inverter-eb5f339a.js
rename to web/settings/assets/inverter-b4727f0c.js
index 73eae2c3d1..e837c7e949 100644
--- a/web/settings/assets/inverter-eb5f339a.js
+++ b/web/settings/assets/inverter-b4727f0c.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[s]},_={class:"device-victron-inverter"};function f(o,e,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Wechselrichter ")])),_:1}),i(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":o.component.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const I=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{I as default};
+import{C as s}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as t,k as m,l,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"DeviceVictronInverter",mixins:[s]},_={class:"device-victron-inverter"};function f(o,e,v,g,w,V){const r=t("openwb-base-heading"),p=t("openwb-base-number-input"),u=t("openwb-base-button-group-input");return m(),l("div",_,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für Victron Wechselrichter ")])),_:1}),i(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"]),i(u,{title:"MPPT",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":o.component.configuration.mppt,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.mppt"))},null,8,["model-value"])])}const I=a(b,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/victron/victron/inverter.vue"]]);export{I as default};
diff --git a/web/settings/assets/inverter-c29b676e.js b/web/settings/assets/inverter-cda22a33.js
similarity index 89%
rename from web/settings/assets/inverter-c29b676e.js
rename to web/settings/assets/inverter-cda22a33.js
index e454409e50..0d155a4014 100644
--- a/web/settings/assets/inverter-c29b676e.js
+++ b/web/settings/assets/inverter-cda22a33.js
@@ -1 +1 @@
-import{C as r}from"./HardwareInstallation-70f156e6.js";import{_ as p,u as o,k as l,l as u,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(t,e,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),u("div",_,[n(a,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")])),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":t.component.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const B=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{B as default};
+import{C as r}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as o,k as l,l as u,D as n,N as c,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"DeviceKostalStecaInverter",mixins:[r]},_={class:"device-kostal-steca-inverter"};function f(t,e,v,b,g,k){const a=o("openwb-base-heading"),i=o("openwb-base-button-group-input");return l(),u("div",_,[n(a,null,{default:c(()=>e[1]||(e[1]=[m(" Einstellungen für Kostal Piko MP oder Steca Grid Coolcept Wechselrichter ")])),_:1}),n(i,{title:"Variante",buttons:[{buttonValue:!1,text:"Kostal Piko MP (non-plus)"},{buttonValue:!0,text:"Kostal Piko MP oder Steca Grid Coolcept"}],"model-value":t.component.configuration.variant_steca,"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateConfiguration(s,"configuration.variant_steca"))},null,8,["model-value"])])}const B=p(d,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/kostal/kostal_steca/inverter.vue"]]);export{B as default};
diff --git a/web/settings/assets/inverter-36b2f4c7.js b/web/settings/assets/inverter-cdd963f9.js
similarity index 91%
rename from web/settings/assets/inverter-36b2f4c7.js
rename to web/settings/assets/inverter-cdd963f9.js
index 090f9aa90f..a725640877 100644
--- a/web/settings/assets/inverter-36b2f4c7.js
+++ b/web/settings/assets/inverter-cdd963f9.js
@@ -1 +1 @@
-import{C as s}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as t,k as u,l as m,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[s]},b={class:"device-openwb-flex-inverter"};function f(o,e,_,w,x,g){const r=t("openwb-base-heading"),l=t("openwb-base-select-input"),p=t("openwb-base-number-input");return u(),m("div",b,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für openWB-Flex Wechselrichter ")])),_:1}),i(l,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const S=a(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{S as default};
+import{C as s}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as t,k as u,l as m,D as i,N as d,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceOpenwbFlexInverter",mixins:[s]},b={class:"device-openwb-flex-inverter"};function f(o,e,_,w,x,g){const r=t("openwb-base-heading"),l=t("openwb-base-select-input"),p=t("openwb-base-number-input");return u(),m("div",b,[i(r,null,{default:d(()=>e[2]||(e[2]=[c(" Einstellungen für openWB-Flex Wechselrichter ")])),_:1}),i(l,{title:"Zählermodell","not-selected":"Bitte auswählen",options:[{value:0,text:"MPM3PM"},{value:1,text:"Lovato"},{value:2,text:"SDM630/SDM72D-M"},{value:3,text:"SDM120"}],"model-value":o.component.configuration.version,required:"","onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.version"))},null,8,["model-value"]),i(p,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.component.configuration.id,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.id"))},null,8,["model-value"])])}const S=a(v,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/openwb/openwb_flex/inverter.vue"]]);export{S as default};
diff --git a/web/settings/assets/inverter-6f84161c.js b/web/settings/assets/inverter-ce0bf077.js
similarity index 91%
rename from web/settings/assets/inverter-6f84161c.js
rename to web/settings/assets/inverter-ce0bf077.js
index 089ee969ad..e8e29d8bac 100644
--- a/web/settings/assets/inverter-6f84161c.js
+++ b/web/settings/assets/inverter-ce0bf077.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as r,k as m,l as g,D as o,N as l,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function c(n,e,v,b,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[o(a,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für VZLogger Wechselrichter ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const k=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{k as default};
+import{C as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as r,k as m,l as g,D as o,N as l,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DeviceVZLoggerInverter",mixins:[u]},_={class:"device-vzlogger-inverter"};function c(n,e,v,b,w,Z){const a=r("openwb-base-heading"),p=r("openwb-base-alert"),i=r("openwb-base-number-input");return m(),g("div",_,[o(a,null,{default:l(()=>e[2]||(e[2]=[s(" Einstellungen für VZLogger Wechselrichter ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[3]||(e[3]=[s(' Bitte auf der Shell ausführen: "curl -s IPdesVZLogger:Port | jq .|cat -n" Zählen, in welcher Zeile der gesuchte Wert steht. Bei der ersten Zeile mit 1 anfangen zu zählen. ')])),_:1}),o(i,{title:"Zeile der Leistung",required:"",min:0,"model-value":n.component.configuration.line_power,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.line_power"))},null,8,["model-value"]),o(i,{title:"Zeile der exportierten Energie (Ertrag)",min:0,"model-value":n.component.configuration.line_exported,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.line_exported"))},null,8,["model-value"])])}const k=d(f,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/vzlogger/vzlogger/inverter.vue"]]);export{k as default};
diff --git a/web/settings/assets/inverter-da1db027.js b/web/settings/assets/inverter-e0302839.js
similarity index 93%
rename from web/settings/assets/inverter-da1db027.js
rename to web/settings/assets/inverter-e0302839.js
index 4f9daa7848..7877d32ecf 100644
--- a/web/settings/assets/inverter-da1db027.js
+++ b/web/settings/assets/inverter-e0302839.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as s,k as b,l as f,D as o,N as i,y as t,x as n,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttInverter",mixins:[u]},v={class:"device-mqtt-inverter"};function w(r,e,c,x,z,B){const a=s("openwb-base-heading"),l=s("openwb-base-copy-to-clipboard"),m=s("openwb-base-alert");return b(),f("div",v,[o(a,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Wechselrichter ")])),_:1}),o(m,{subtype:"info"},{default:i(()=>[e[9]||(e[9]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: ")),e[3]||(e[3]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/exported ",1)]),_:1}),e[4]||(e[4]=n("br",null,null,-1)),e[5]||(e[5]=t(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Beispiel: ")),e[8]||(e[8]=n("span",{class:"text-info"},"123.45",-1))])])]),_:1})])}const E=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{E as default};
+import{C as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as s,k as b,l as f,D as o,N as i,y as t,x as n,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"DeviceMqttInverter",mixins:[u]},v={class:"device-mqtt-inverter"};function w(r,e,c,x,z,B){const a=s("openwb-base-heading"),l=s("openwb-base-copy-to-clipboard"),m=s("openwb-base-alert");return b(),f("div",v,[o(a,null,{default:i(()=>e[0]||(e[0]=[t(" Einstellungen für MQTT Wechselrichter ")])),_:1}),o(m,{subtype:"info"},{default:i(()=>[e[9]||(e[9]=t(" Die folgenden Topics sind für einen reibungslosen Betrieb unbedingt erforderlich: ")),n("ul",null,[n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/power ",1)]),_:1}),e[1]||(e[1]=n("br",null,null,-1)),e[2]||(e[2]=t(" PV-Leistung in Watt als Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen. Produzierte Leistung muss ein negatives Vorzeichen haben. (In bestimmten Konstellationen, z.B. wenn ein Hybridsystem über einen zweiten Wechselrichter geladen wird, hat die Leistung ein positives Vorzeichen.) Beispiel: ")),e[3]||(e[3]=n("span",{class:"text-info"},"-123",-1))]),n("li",null,[o(l,{class:"text-info",tooltip:"Topic kopieren"},{default:i(()=>[t(" openWB/set/pv/"+p(r.component.id)+"/get/exported ",1)]),_:1}),e[4]||(e[4]=n("br",null,null,-1)),e[5]||(e[5]=t(" Erzeugte Energie in Wh, Zahl mit oder ohne Nachkommastellen (Float, Integer) und einem Punkt als Dezimaltrennzeichen, nur positiv")),e[6]||(e[6]=n("br",null,null,-1)),e[7]||(e[7]=t(" Beispiel: ")),e[8]||(e[8]=n("span",{class:"text-info"},"123.45",-1))])])]),_:1})])}const E=d(g,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/mqtt/inverter.vue"]]);export{E as default};
diff --git a/web/settings/assets/inverter-692fd261.js b/web/settings/assets/inverter-e943d0ae.js
similarity index 87%
rename from web/settings/assets/inverter-692fd261.js
rename to web/settings/assets/inverter-e943d0ae.js
index 919997998a..3dfba5ed4d 100644
--- a/web/settings/assets/inverter-692fd261.js
+++ b/web/settings/assets/inverter-e943d0ae.js
@@ -1 +1 @@
-import{C as p}from"./HardwareInstallation-70f156e6.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[p]},c={class:"device-fox_ess-inverter"};function f(o,e,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{V as default};
+import{C as p}from"./HardwareInstallation-d2c0f1d5.js";import{_ as a,u as n,k as m,l as u,D as t,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceFoxEssInverter",mixins:[p]},c={class:"device-fox_ess-inverter"};function f(o,e,b,v,x,g){const s=n("openwb-base-heading"),i=n("openwb-base-number-input");return m(),u("div",c,[t(s,null,{default:d(()=>e[1]||(e[1]=[l(" Einstellungen für FoxEss Wechselrichter ")])),_:1}),t(i,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=r=>o.updateConfiguration(r,"configuration.modbus_id"))},null,8,["model-value"])])}const V=a(_,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fox_ess/fox_ess/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-2c898c0e.js b/web/settings/assets/inverter-fb2c9952.js
similarity index 90%
rename from web/settings/assets/inverter-2c898c0e.js
rename to web/settings/assets/inverter-fb2c9952.js
index 38040ec102..c41d33ef4d 100644
--- a/web/settings/assets/inverter-2c898c0e.js
+++ b/web/settings/assets/inverter-fb2c9952.js
@@ -1 +1 @@
-import{C as d}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as r,k as u,l as c,D as n,N as i,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceDiscovergyInverter",mixins:[d]},f={class:"device-discovergy-inverter"};function g(t,e,_,b,w,x){const s=r("openwb-base-heading"),a=r("openwb-base-text-input");return u(),c("div",f,[n(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Wechselrichter ")])),_:1}),n(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const $=m(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{$ as default};
+import{C as d}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as r,k as u,l as c,D as n,N as i,y as o,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"DeviceDiscovergyInverter",mixins:[d]},f={class:"device-discovergy-inverter"};function g(t,e,_,b,w,x){const s=r("openwb-base-heading"),a=r("openwb-base-text-input");return u(),c("div",f,[n(s,null,{default:i(()=>e[1]||(e[1]=[o(" Einstellungen für Discovergy Wechselrichter ")])),_:1}),n(a,{title:"Meter-ID",required:"","model-value":t.component.configuration.meter_id,"onUpdate:modelValue":e[0]||(e[0]=p=>t.updateConfiguration(p,"configuration.meter_id"))},{help:i(()=>e[2]||(e[2]=[o(" Um die ID herauszufinden mit dem Browser die Adresse "),l("a",{href:"https://api.discovergy.com/public/v1/meters",target:"_blank",rel:"noopener noreferrer"}," https://api.discovergy.com/public/v1/meters ",-1),o(" aufrufen und dort Benutzername und Passwort eingeben. Hier wird nun u.a. die ID des Zählers angezeigt. ")])),_:1},8,["model-value"])])}const $=m(v,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/discovergy/discovergy/inverter.vue"]]);export{$ as default};
diff --git a/web/settings/assets/inverter-bdcf1a2f.js b/web/settings/assets/inverter-fb3a6cad.js
similarity index 92%
rename from web/settings/assets/inverter-bdcf1a2f.js
rename to web/settings/assets/inverter-fb3a6cad.js
index 0ead69fcf8..50f6954630 100644
--- a/web/settings/assets/inverter-bdcf1a2f.js
+++ b/web/settings/assets/inverter-fb3a6cad.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as l,u as t,k as m,l as c,D as r,N as i,y as n,x as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[u]},b={class:"device-powerfox-inverter"};function g(o,e,v,w,x,_){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Wechselrichter ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{V as default};
+import{C as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as l,u as t,k as m,l as c,D as r,N as i,y as n,x as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"DevicePowerfoxInverter",mixins:[u]},b={class:"device-powerfox-inverter"};function g(o,e,v,w,x,_){const a=t("openwb-base-heading"),p=t("openwb-base-text-input");return m(),c("div",b,[r(a,null,{default:i(()=>e[1]||(e[1]=[n(" Einstellungen für Powerfox Wechselrichter ")])),_:1}),r(p,{title:"ID",required:"","model-value":o.component.configuration.id,"onUpdate:modelValue":e[0]||(e[0]=d=>o.updateConfiguration(d,"configuration.id"))},{help:i(()=>e[2]||(e[2]=[n(" Um die ID herauszufinden mit dem Browser die Adresse "),s("a",{href:"https://backend.powerfox.energy/api/2.0/my/all/devices",target:"_blank",rel:"noopener noreferrer"}," https://backend.powerfox.energy/api/2.0/my/all/devices ",-1),n(" aufrufen und dort Benutzername und Passwort eingeben. Die DeviceID ist exakt so einzutragen, wie in der Antwort des Servers. Das bedeutet insbesondere auch, die Groß-/Kleinschreibung ist zu beachten! In dem Feld ist nur die Zeichenfolge direkt hinter "),s("span",{class:"font-weight-bold text-monospace",style:{display:"contents"}},' "DeviceID" ',-1),n(" ohne den Doppelpunkt und Anführungszeichen einzutragen. ")])),_:1},8,["model-value"])])}const V=l(f,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/powerfox/powerfox/inverter.vue"]]);export{V as default};
diff --git a/web/settings/assets/inverter-d29f4c1a.js b/web/settings/assets/inverter-fd0dea3e.js
similarity index 88%
rename from web/settings/assets/inverter-d29f4c1a.js
rename to web/settings/assets/inverter-fd0dea3e.js
index a9ce7d5332..d997cdf338 100644
--- a/web/settings/assets/inverter-d29f4c1a.js
+++ b/web/settings/assets/inverter-fd0dea3e.js
@@ -1 +1 @@
-import{C as a}from"./HardwareInstallation-70f156e6.js";import{_ as d,u as n,k as u,l as c,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[a]},_={class:"device-mtec-inverter"};function b(o,e,f,v,g,w){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für M-Tec Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const N=d(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{N as default};
+import{C as a}from"./HardwareInstallation-d2c0f1d5.js";import{_ as d,u as n,k as u,l as c,D as t,N as i,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"DeviceMTecInverter",mixins:[a]},_={class:"device-mtec-inverter"};function b(o,e,f,v,g,w){const s=n("openwb-base-heading"),p=n("openwb-base-number-input");return u(),c("div",_,[t(s,null,{default:i(()=>e[1]||(e[1]=[r(" Einstellungen für M-Tec Wechselrichter ")])),_:1}),t(p,{title:"Modbus ID",required:"","model-value":o.component.configuration.modbus_id,min:"1",max:"255","onUpdate:modelValue":e[0]||(e[0]=m=>o.updateConfiguration(m,"configuration.modbus_id"))},{help:i(()=>e[2]||(e[2]=[r(" Die Standard-Modbus-ID von M-Tec ist 247 ")])),_:1},8,["model-value"])])}const N=d(l,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/mtec/mtec/inverter.vue"]]);export{N as default};
diff --git a/web/settings/assets/inverter_secondary-4a5d5bbc.js b/web/settings/assets/inverter_secondary-8a48b565.js
similarity index 92%
rename from web/settings/assets/inverter_secondary-4a5d5bbc.js
rename to web/settings/assets/inverter_secondary-8a48b565.js
index 4ae8295b6b..d2b3060d56 100644
--- a/web/settings/assets/inverter_secondary-4a5d5bbc.js
+++ b/web/settings/assets/inverter_secondary-8a48b565.js
@@ -1 +1 @@
-import{C as u}from"./HardwareInstallation-70f156e6.js";import{_ as m,u as t,k as f,l as c,D as i,N as s,y as n,x as a,z as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceFroniusInverterSecondary",mixins:[u],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},_={class:"device-fronius-inverter-secondary"},v=["href"];function D(r,e,b,k,h,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return f(),c("div",_,[i(d,null,{default:s(()=>e[1]||(e[1]=[n(" Einstellungen für einen sekundären Wechselrichter ")])),_:1}),i(l,{title:"ID","model-value":r.component.configuration.id,min:"0",required:"","onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e[2]||(e[2]=n(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. ")),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},g(o.powerFlowUrl),9,v),e[3]||(e[3]=a("br",null,null,-1)),e[4]||(e[4]=n(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. '))]),_:1},8,["model-value"])])}const U=m(w,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{U as default};
+import{C as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as m,u as t,k as f,l as c,D as i,N as s,y as n,x as a,z as g}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const w={name:"DeviceFroniusInverterSecondary",mixins:[u],computed:{powerFlowUrl:{get(){return`http://${this.device.configuration.ip_address}/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System`}}}},_={class:"device-fronius-inverter-secondary"},v=["href"];function D(r,e,b,k,h,o){const d=t("openwb-base-heading"),l=t("openwb-base-number-input");return f(),c("div",_,[i(d,null,{default:s(()=>e[1]||(e[1]=[n(" Einstellungen für einen sekundären Wechselrichter ")])),_:1}),i(l,{title:"ID","model-value":r.component.configuration.id,min:"0",required:"","onUpdate:modelValue":e[0]||(e[0]=p=>r.updateConfiguration(p,"configuration.id"))},{help:s(()=>[e[2]||(e[2]=n(" Die ID des sekundären Wechselrichters. Diese ist für jede Installation individuell und muss ermittelt werden. Dafür kann der folgende Link verwendet werden. Die ID kann den zurückgegebenen JSON entnommen werden. ")),a("a",{href:o.powerFlowUrl,target:"_blank",rel:"noopener noreferrer"},g(o.powerFlowUrl),9,v),e[3]||(e[3]=a("br",null,null,-1)),e[4]||(e[4]=n(' Im Abschnitt "Body" -> "Data" -> "SecondaryMeters" werden die installierten Zähler angezeigt. Die ID ist die Zahl vor dem Doppelpunkt und den zugehörigen Daten. '))]),_:1},8,["model-value"])])}const U=m(w,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/fronius/fronius/inverter_secondary.vue"]]);export{U as default};
diff --git a/web/settings/assets/ripple_control_receiver-432648b7.js b/web/settings/assets/ripple_control_receiver-370883cc.js
similarity index 79%
rename from web/settings/assets/ripple_control_receiver-432648b7.js
rename to web/settings/assets/ripple_control_receiver-370883cc.js
index 6d34fcbde1..edec991941 100644
--- a/web/settings/assets/ripple_control_receiver-432648b7.js
+++ b/web/settings/assets/ripple_control_receiver-370883cc.js
@@ -1 +1 @@
-import{R as t}from"./GeneralConfig-1c49e709.js";import{_ as r,u as n,k as i,l as p,D as s,N as a,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"RippleControlReceiverGpio",mixins:[t]},_={class:"ripple-control-receiver-gpio"};function d(m,e,f,u,v,g){const o=n("openwb-base-alert");return i(),p("div",_,[s(o,{subtype:"info"},{default:a(()=>e[0]||(e[0]=[c(" Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakte offen sind, darf geladen werden. ")])),_:1})])}const W=r(l,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/gpio/ripple_control_receiver.vue"]]);export{W as default};
+import{R as t}from"./GeneralConfig-1687a15a.js";import{_ as r,u as n,k as i,l as p,D as s,N as a,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const l={name:"RippleControlReceiverGpio",mixins:[t]},_={class:"ripple-control-receiver-gpio"};function d(m,e,f,u,v,g){const o=n("openwb-base-alert");return i(),p("div",_,[s(o,{subtype:"info"},{default:a(()=>e[0]||(e[0]=[c(" Wenn mindestens ein Kontakt geschlossen ist, wird die Ladung gesperrt. Wenn beide Kontakte offen sind, darf geladen werden. ")])),_:1})])}const W=r(l,[["render",d],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/gpio/ripple_control_receiver.vue"]]);export{W as default};
diff --git a/web/settings/assets/ripple_control_receiver-8b00be72.js b/web/settings/assets/ripple_control_receiver-7fecf9d6.js
similarity index 88%
rename from web/settings/assets/ripple_control_receiver-8b00be72.js
rename to web/settings/assets/ripple_control_receiver-7fecf9d6.js
index b8075f0aec..f3112f2a29 100644
--- a/web/settings/assets/ripple_control_receiver-8b00be72.js
+++ b/web/settings/assets/ripple_control_receiver-7fecf9d6.js
@@ -1 +1 @@
-import{R as s}from"./GeneralConfig-1c49e709.js";import{_ as a,u as i,k as d,l as u,D as t,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"RippleControlReceiverDimmKit",mixins:[s]},c={class:"ripple-control-receiver-dimm-kit"};function b(o,e,v,g,w,C){const p=i("openwb-base-alert"),l=i("openwb-base-text-input"),r=i("openwb-base-number-input");return d(),u("div",c,[t(p,{subtype:"info"},{default:m(()=>e[3]||(e[3]=[_(" In der aktuellen Implementierung werden Kontakt 1 und 2 des Dimm-Kits ausgewertet. Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte geschlossen sind, darf geladen werden. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.rippleControlReceiver.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"","model-value":o.rippleControlReceiver.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.rippleControlReceiver.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=a(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/dimm_kit/ripple_control_receiver.vue"]]);export{y as default};
+import{R as s}from"./GeneralConfig-1687a15a.js";import{_ as a,u as i,k as d,l as u,D as t,N as m,y as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"RippleControlReceiverDimmKit",mixins:[s]},c={class:"ripple-control-receiver-dimm-kit"};function b(o,e,v,g,w,C){const p=i("openwb-base-alert"),l=i("openwb-base-text-input"),r=i("openwb-base-number-input");return d(),u("div",c,[t(p,{subtype:"info"},{default:m(()=>e[3]||(e[3]=[_(" In der aktuellen Implementierung werden Kontakt 1 und 2 des Dimm-Kits ausgewertet. Wenn mindestens ein Kontakt offen ist, wird die Ladung gesperrt. Wenn beide Kontakte geschlossen sind, darf geladen werden. ")])),_:1}),t(l,{title:"IP oder Hostname",subtype:"host",required:"","model-value":o.rippleControlReceiver.configuration.ip_address,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.ip_address"))},null,8,["model-value"]),t(r,{title:"Port",required:"","model-value":o.rippleControlReceiver.configuration.port,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.port"))},null,8,["model-value"]),t(r,{title:"Modbus-ID",required:"",min:1,max:255,"model-value":o.rippleControlReceiver.configuration.modbus_id,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.modbus_id"))},null,8,["model-value"])])}const y=a(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/dimm_kit/ripple_control_receiver.vue"]]);export{y as default};
diff --git a/web/settings/assets/vehicle-35b782fb.js b/web/settings/assets/vehicle-02c16ede.js
similarity index 89%
rename from web/settings/assets/vehicle-35b782fb.js
rename to web/settings/assets/vehicle-02c16ede.js
index 7e5856618f..925333fc17 100644
--- a/web/settings/assets/vehicle-35b782fb.js
+++ b/web/settings/assets/vehicle-02c16ede.js
@@ -1 +1 @@
-import{V as u}from"./VehicleConfig-e8ea05c9.js";import{_ as a,u as s,k as d,l as p,D as i,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[u]},f={class:"vehicle-soc-renault"};function v(n,e,g,V,w,b){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":n.vehicle.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.country"))},{help:r(()=>e[6]||(e[6]=[l(" Land des Fahrzeugs, z.b. DE für Deutschland. ")])),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")])),_:1},8,["model-value"])])}const U=a(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{U as default};
+import{V as u}from"./VehicleConfig-9a14b719.js";import{_ as a,u as s,k as d,l as p,D as i,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocRenault",mixins:[u]},f={class:"vehicle-soc-renault"};function v(n,e,g,V,w,b){const t=s("openwb-base-text-input");return d(),p("div",f,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Renault-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Land",required:"","model-value":n.vehicle.configuration.country,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.country"))},{help:r(()=>e[6]||(e[6]=[l(" Land des Fahrzeugs, z.b. DE für Deutschland. ")])),_:1},8,["model-value"]),i(t,{title:"VIN","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs falls mehrere Fahrzeuge im Account vorhanden sind. ")])),_:1},8,["model-value"])])}const U=a(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/renault/vehicle.vue"]]);export{U as default};
diff --git a/web/settings/assets/vehicle-caa88593.js b/web/settings/assets/vehicle-04196ba5.js
similarity index 92%
rename from web/settings/assets/vehicle-caa88593.js
rename to web/settings/assets/vehicle-04196ba5.js
index 0f17a08c9f..aecfce7e0d 100644
--- a/web/settings/assets/vehicle-caa88593.js
+++ b/web/settings/assets/vehicle-04196ba5.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-e8ea05c9.js";import{_ as d,u,k as p,l as g,D as o,N as l,y as i,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[a]},f={class:"vehicle-soc-tronity"};function b(n,e,v,C,w,h){const r=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return p(),g("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>e[4]||(e[4]=[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":n.vehicle.configuration.client_id,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>e[5]||(e[5]=[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":n.vehicle.configuration.client_secret,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>e[6]||(e[6]=[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')])),_:1},8,["model-value"]),o(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>e[7]||(e[7]=[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),c("br",null,null,-1),i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"])])}const L=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{L as default};
+import{V as a}from"./VehicleConfig-9a14b719.js";import{_ as d,u,k as p,l as g,D as o,N as l,y as i,x as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocTronity",mixins:[a]},f={class:"vehicle-soc-tronity"};function b(n,e,v,C,w,h){const r=u("openwb-base-text-input"),s=u("openwb-base-button-group-input");return p(),g("div",f,[o(r,{title:"Vehicle ID",subtype:"text",required:"","model-value":n.vehicle.configuration.vehicle_id,"onUpdate:modelValue":e[0]||(e[0]=t=>n.updateConfiguration(t,"configuration.vehicle_id"))},{help:l(()=>e[4]||(e[4]=[i(' Vehicle ID aus Tronity angeben. Diese ist in den "Assigned Vehicles" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client ID",subtype:"text",required:"","model-value":n.vehicle.configuration.client_id,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateConfiguration(t,"configuration.client_id"))},{help:l(()=>e[5]||(e[5]=[i(' Client ID aus Tronity angeben. Diese ist in den "Application Settings" zu finden. ')])),_:1},8,["model-value"]),o(r,{title:"Client Secret",subtype:"password",required:"","model-value":n.vehicle.configuration.client_secret,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateConfiguration(t,"configuration.client_secret"))},{help:l(()=>e[6]||(e[6]=[i(' Client Secret aus Tronity angeben. Diese ist in den "Application Settings" zu finden. Das Client Secret kann nur einmalig abgerufen werden. Ggf. neu erzeugen, womit frühere Client Secrets ungültig werden. ')])),_:1},8,["model-value"]),o(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateConfiguration(t,"configuration.calculate_soc"))},{help:l(()=>e[7]||(e[7]=[i(" Berechnet den Ladestand (SoC) während der Ladung. Dies ist notwendig, wenn der SoC nicht über die Schnittstelle des Fahrzeugs abgerufen werden kann. Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),c("br",null,null,-1),i(" Derzeit notwendig für Peugeot, Opel, Citroen und DS. ")])),_:1},8,["model-value"])])}const L=d(m,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tronity/vehicle.vue"]]);export{L as default};
diff --git a/web/settings/assets/vehicle-a8092426.js b/web/settings/assets/vehicle-227d6e52.js
similarity index 91%
rename from web/settings/assets/vehicle-a8092426.js
rename to web/settings/assets/vehicle-227d6e52.js
index d3fa60cea4..daea7ed03c 100644
--- a/web/settings/assets/vehicle-a8092426.js
+++ b/web/settings/assets/vehicle-227d6e52.js
@@ -1 +1 @@
-import{V as l}from"./VehicleConfig-e8ea05c9.js";import{_ as a,u,k as p,l as d,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocBmw",mixins:[l]},v={class:"vehicle-soc-bmw"};function f(o,e,g,w,b,V){const i=u("openwb-base-text-input");return p(),d("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const q=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{q as default};
+import{V as l}from"./VehicleConfig-9a14b719.js";import{_ as a,u,k as p,l as d,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocBmw",mixins:[l]},v={class:"vehicle-soc-bmw"};function f(o,e,g,w,b,V){const i=u("openwb-base-text-input");return p(),d("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const q=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmw/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-635e6620.js b/web/settings/assets/vehicle-2c8076de.js
similarity index 96%
rename from web/settings/assets/vehicle-635e6620.js
rename to web/settings/assets/vehicle-2c8076de.js
index fa77f8ab82..03186b90a9 100644
--- a/web/settings/assets/vehicle-635e6620.js
+++ b/web/settings/assets/vehicle-2c8076de.js
@@ -1 +1 @@
-import{V as s}from"./VehicleConfig-e8ea05c9.js";import{_ as p,u,k as d,l as v,D as a,N as n,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},g={class:"vehicle-soc-evcc"};function x(t,e,f,V,w,b){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",g,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":t.vehicle.configuration.sponsor_token,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>e[5]||(e[5]=[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")])),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>e[6]||(e[6]=[l(" Benutzername beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.password"))},{help:n(()=>e[7]||(e[7]=[l(" Kennwort beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(r,{title:"Marke",required:"","not-selected":"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":t.vehicle.configuration.vehicle_type,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>e[8]||(e[8]=[l(" Marke aus des Fahrzeugs. ")])),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":t.vehicle.configuration.VIN,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>e[9]||(e[9]=[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const B=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{B as default};
+import{V as s}from"./VehicleConfig-9a14b719.js";import{_ as p,u,k as d,l as v,D as a,N as n,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEVCC",mixins:[s]},g={class:"vehicle-soc-evcc"};function x(t,e,f,V,w,b){const i=u("openwb-base-text-input"),r=u("openwb-base-select-input");return d(),v("div",g,[a(i,{title:"EVCC Sponsor Token",subtype:"password",required:"","model-value":t.vehicle.configuration.sponsor_token,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.sponsor_token"))},{help:n(()=>e[5]||(e[5]=[l(" EVCC Sponsor Token angeben, dies ist notwendig um SoC über EVCC abrufen zu können. https://sponsor.evcc.io/ ")])),_:1},8,["model-value"]),a(i,{title:"Benutzername",subtype:"text",required:"","model-value":t.vehicle.configuration.user_id,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.user_id"))},{help:n(()=>e[6]||(e[6]=[l(" Benutzername beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(i,{title:"Kennwort",subtype:"password",required:"","model-value":t.vehicle.configuration.password,"onUpdate:modelValue":e[2]||(e[2]=o=>t.updateConfiguration(o,"configuration.password"))},{help:n(()=>e[7]||(e[7]=[l(" Kennwort beim Fahrzeughersteller. ")])),_:1},8,["model-value"]),a(r,{title:"Marke",required:"","not-selected":"Bitte auswählen",options:[{value:"aiways",text:"Aiways"},{value:"audi",text:"Audi"},{value:"etron",text:"Audi e-tron"},{value:"bmw",text:"BMW"},{value:"dacia",text:"Dacia"},{value:"fiat",text:"Fiat"},{value:"ford",text:"Ford"},{value:"hyundai",text:"Hyundai"},{value:"jaguar",text:"Jaguar"},{value:"kia",text:"Kia"},{value:"landrover",text:"Landrover"},{value:"mg",text:"Mg"},{value:"mini",text:"Mini"},{value:"nissan",text:"Nissan"},{value:"carwings",text:"Nissan (Leaf pre 2019)"},{value:"ovms",text:"OVMS"},{value:"polestar",text:"Polestar"},{value:"porsche",text:"Porsche"},{value:"renault",text:"Renault"},{value:"seat",text:"Seat"},{value:"cupra",text:"Seat Cupra"},{value:"skoda",text:"Škoda"},{value:"enyaq",text:"Škoda Enyaq"},{value:"smart",text:"Smart"},{value:"smart-hello",text:"Smart-Hello"},{value:"template",text:"Template"},{value:"volvo",text:"Volvo"},{value:"volvo-connected",text:"Volvo-Connected"},{value:"vw",text:"VW"},{value:"id",text:"VW ID"}],"model-value":t.vehicle.configuration.vehicle_type,"onUpdate:modelValue":e[3]||(e[3]=o=>t.updateConfiguration(o,"configuration.vehicle_type"))},{help:n(()=>e[8]||(e[8]=[l(" Marke aus des Fahrzeugs. ")])),_:1},8,["model-value"]),a(i,{title:"VIN",subtype:"text","model-value":t.vehicle.configuration.VIN,"onUpdate:modelValue":e[4]||(e[4]=o=>t.updateConfiguration(o,"configuration.VIN"))},{help:n(()=>e[9]||(e[9]=[l(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const B=p(m,[["render",x],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evcc/vehicle.vue"]]);export{B as default};
diff --git a/web/settings/assets/vehicle-ed5ef659.js b/web/settings/assets/vehicle-2f0703d4.js
similarity index 95%
rename from web/settings/assets/vehicle-ed5ef659.js
rename to web/settings/assets/vehicle-2f0703d4.js
index e3ec81862d..c7568e52c9 100644
--- a/web/settings/assets/vehicle-ed5ef659.js
+++ b/web/settings/assets/vehicle-2f0703d4.js
@@ -1 +1 @@
-import{V as m}from"./VehicleConfig-e8ea05c9.js";import{_ as b,u as s,k as g,l as v,D as i,N as o,y as n,x as u,z as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocMercedesEq",mixins:[m],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var t=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");t.focus()}}},h={class:"vehicle-soc-mercedeseq"};function w(t,e,k,C,y,r){const a=s("openwb-base-text-input"),d=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert"),c=s("openwb-base-button-input");return g(),v("div",h,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":t.vehicle.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>e[3]||(e[3]=[n(" Die im Developer Portal angelegte Client-ID. ")])),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":t.vehicle.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>e[4]||(e[4]=[n(" Das im Developer Portal angelegte Client Secret. ")])),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateConfiguration(l,"configuration.vin"))},{help:o(()=>e[5]||(e[5]=[n(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(p,{subtype:"info"},{default:o(()=>[e[6]||(e[6]=n(" Vor dem Anmelden bitte die Angaben speichern.")),e[7]||(e[7]=u("br",null,null,-1)),e[8]||(e[8]=n(" Die Callback-URL für die Anmeldung lautet:")),e[9]||(e[9]=u("br",null,null,-1)),i(d,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[n(_(r.callback_url),1)]),_:1})]),_:1}),i(c,{title:"Anmelden","button-text":"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>e[10]||(e[10]=[n(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),u("br",null,null,-1)])),_:1},8,["disabled","onButtonClicked"])])}const S=b(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{S as default};
+import{V as m}from"./VehicleConfig-9a14b719.js";import{_ as b,u as s,k as g,l as v,D as i,N as o,y as n,x as u,z as _}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const f={name:"VehicleSocMercedesEq",mixins:[m],computed:{callback_url(){return`${location.origin}/openWB/web/settings/modules/vehicles/mercedeseq/callback_vehicle.php`},login_url(){return`https://ssoalpha.dvb.corpinter.net/v1/auth?response_type=code&state=${this.vehicleId}&client_id=${this.vehicle.configuration.client_id}&redirect_uri=${this.callback_url}&scope=mb:vehicle:mbdata:evstatus%20offline_access%20openid`},input_complete(){return this.vehicle.configuration.client_id&&this.vehicle.configuration.client_secret&&this.vehicle.configuration.vin}},methods:{login_window(){console.debug("callback url",this.callback_url),console.debug("login url",this.login_url);var t=window.open(this.login_url,"MercedesLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");t.focus()}}},h={class:"vehicle-soc-mercedeseq"};function w(t,e,k,C,y,r){const a=s("openwb-base-text-input"),d=s("openwb-base-copy-to-clipboard"),p=s("openwb-base-alert"),c=s("openwb-base-button-input");return g(),v("div",h,[i(a,{title:"Client-ID",required:"",subtype:"user","model-value":t.vehicle.configuration.client_id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateConfiguration(l,"configuration.client_id"))},{help:o(()=>e[3]||(e[3]=[n(" Die im Developer Portal angelegte Client-ID. ")])),_:1},8,["model-value"]),i(a,{title:"Client Secret",required:"",subtype:"password","model-value":t.vehicle.configuration.client_secret,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateConfiguration(l,"configuration.client_secret"))},{help:o(()=>e[4]||(e[4]=[n(" Das im Developer Portal angelegte Client Secret. ")])),_:1},8,["model-value"]),i(a,{title:"VIN",required:"","model-value":t.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateConfiguration(l,"configuration.vin"))},{help:o(()=>e[5]||(e[5]=[n(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(p,{subtype:"info"},{default:o(()=>[e[6]||(e[6]=n(" Vor dem Anmelden bitte die Angaben speichern.")),e[7]||(e[7]=u("br",null,null,-1)),e[8]||(e[8]=n(" Die Callback-URL für die Anmeldung lautet:")),e[9]||(e[9]=u("br",null,null,-1)),i(d,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[n(_(r.callback_url),1)]),_:1})]),_:1}),i(c,{title:"Anmelden","button-text":"Bei Mercedes Anmelden",subtype:"success",disabled:!r.input_complete,onButtonClicked:r.login_window},{help:o(()=>e[10]||(e[10]=[n(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Mercedes mit Ihren Zugangsdaten anmelden können."),u("br",null,null,-1)])),_:1},8,["disabled","onButtonClicked"])])}const S=b(f,[["render",w],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mercedeseq/vehicle.vue"]]);export{S as default};
diff --git a/web/settings/assets/vehicle-6dc5238d.js b/web/settings/assets/vehicle-39d84738.js
similarity index 91%
rename from web/settings/assets/vehicle-6dc5238d.js
rename to web/settings/assets/vehicle-39d84738.js
index ed5c12affa..382823e980 100644
--- a/web/settings/assets/vehicle-6dc5238d.js
+++ b/web/settings/assets/vehicle-39d84738.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-e8ea05c9.js";import{_ as l,u,k as p,l as d,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmarteq",mixins:[a]},v={class:"vehicle-soc-smarteq"};function f(o,e,g,w,V,b){const t=u("openwb-base-text-input");return p(),d("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{$ as default};
+import{V as a}from"./VehicleConfig-9a14b719.js";import{_ as l,u,k as p,l as d,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmarteq",mixins:[a]},v={class:"vehicle-soc-smarteq"};function f(o,e,g,w,V,b){const t=u("openwb-base-text-input");return p(),d("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarteq/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-4afffc4b.js b/web/settings/assets/vehicle-5310b356.js
similarity index 97%
rename from web/settings/assets/vehicle-4afffc4b.js
rename to web/settings/assets/vehicle-5310b356.js
index fadfee48a5..fcb5e7aa8d 100644
--- a/web/settings/assets/vehicle-4afffc4b.js
+++ b/web/settings/assets/vehicle-5310b356.js
@@ -1 +1 @@
-import{_ as h,a4 as c,a5 as _,a6 as f,u as r,k as b,l as k,D as i,N as a,y as s,x as v}from"./vendor-a21b3a62.js";import{a as w}from"./vendor-axios-0e6de98a.js";import{C as y}from"./index-f9fda857.js";import{V as C}from"./VehicleConfig-e8ea05c9.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",mixins:[y,C],data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=c.encode(_.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=_.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=c.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+o+"</pre>","danger")}}}},U={class:"vehicle-soc-tesla"};function B(e,n,o,z,l,p){const u=r("openwb-base-number-input"),m=r("openwb-base-heading"),g=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",U,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>n[6]||(n[6]=[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')])),_:1},8,["model-value"]),i(m,null,{default:a(()=>n[7]||(n[7]=[s("Token abrufen oder eingeben")])),_:1}),i(g,{title:"1. Anmelden","button-text":"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>n[8]||(n[8]=[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")])),_:1},8,["onButtonClicked"]),i(d,{modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t),title:"2. URL kopieren und einfügen",subtype:"url","empty-value":null},{help:a(()=>n[9]||(n[9]=[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')])),_:1},8,["modelValue"]),i(g,{title:"3. Token abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>n[10]||(n[10]=[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")])),_:1},8,["disabled","onButtonClicked"]),n[13]||(n[13]=v("hr",null,null,-1)),i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>n[11]||(n[11]=[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")])),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>n[12]||(n[12]=[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")])),_:1},8,["model-value"])])}const R=h(T,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{R as default};
+import{_ as h,a4 as c,a5 as _,a6 as f,u as r,k as b,l as k,D as i,N as a,y as s,x as v}from"./vendor-a21b3a62.js";import{a as w}from"./vendor-axios-0e6de98a.js";import{C as y}from"./index-c79666b6.js";import{V as C}from"./VehicleConfig-9a14b719.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./dynamic-import-helper-be004503.js";const T={name:"VehicleSocTesla",mixins:[y,C],data(){return{tesla_api_oauth2:"https://auth.tesla.com/oauth2/v3",tesla_api_redirect:"https://auth.tesla.com/void/callback",tesla_api_owners:"https://owner-api.teslamotors.com/oauth/token",user_agent:"Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",code_challenge:null,code_verifier:null,page_not_found_url:null}},methods:{tesla_login_window(){this.tesla_gen_challenge();var e=window.open(this.tesla_gen_url(),"TeslaLogin","width=800,height=600,status=yes,scrollbars=yes,resizable=yes");e.focus()},tesla_gen_challenge(){this.code_verifier=c.encode(_.randomBytes(86)).replace(/[^a-zA-Z0-9]/gi,"").substring(0,86);const e=_.createHash("sha256").update(this.code_verifier).digest();this.code_challenge=c.encode(e),console.debug(this.code_verifier,this.code_verifier.length,this.code_challenge,this.code_challenge.length)},tesla_gen_url(){const e=new URL(this.tesla_api_oauth2+"/authorize/");return e.searchParams.append("client_id","ownerapi"),e.searchParams.append("code_challenge",this.code_challenge),e.searchParams.append("code_challenge_method","S256"),e.searchParams.append("redirect_uri",this.tesla_api_redirect),e.searchParams.append("response_type","code"),e.searchParams.append("scope","openid email offline_access"),e.searchParams.append("state","myteslaapp"),e},async tesla_login(){const e=f.parse(this.page_not_found_url,!0).query;if(console.debug("queryObject",e),!e.code){console.error("Something is wrong... Code does not exist in URL"),this.$root.postClientMessage("Die eingegebene URL ist ungültig.","danger");return}const n={url:this.tesla_api_owners,user_agent:this.user_agent,data:{grant_type:"authorization_code",client_id:"ownerapi",code:e.code,code_verifier:this.code_verifier,redirect_uri:this.tesla_api_redirect}};try{const o=await w.post(location.protocol+"//"+location.host+"/openWB/web/settings/modules/vehicles/tesla/tesla.php",JSON.parse(JSON.stringify(n)),{headers:{"Content-Type":"application/json",Accept:"application/json"}});console.debug("response",o),this.updateConfiguration({access_token:o.data.access_token,refresh_token:o.data.refresh_token,created_at:o.data.created_at,expires_in:o.data.expires_in},"configuration.token"),this.$root.postClientMessage("Token erfolgreich abgerufen.","success")}catch(o){console.error(o),this.$root.postClientMessage("Beim Abruf der Token ist ein Fehler aufgetreten!<pre>"+o+"</pre>","danger")}}}},U={class:"vehicle-soc-tesla"};function B(e,n,o,z,l,p){const u=r("openwb-base-number-input"),m=r("openwb-base-heading"),g=r("openwb-base-button-input"),d=r("openwb-base-text-input");return b(),k("div",U,[i(u,{title:"Fahrzeug-ID",required:"",min:0,"model-value":e.vehicle.configuration.tesla_ev_num,"onUpdate:modelValue":n[0]||(n[0]=t=>e.updateConfiguration(t,"configuration.tesla_ev_num"))},{help:a(()=>n[6]||(n[6]=[s(' Die ID des Fahrzeugs bei Tesla. Normalerweise "0" bei nur einem Fahrzeug im Konto. ')])),_:1},8,["model-value"]),i(m,null,{default:a(()=>n[7]||(n[7]=[s("Token abrufen oder eingeben")])),_:1}),i(g,{title:"1. Anmelden","button-text":"Bei Tesla Anmelden",subtype:"success",onButtonClicked:p.tesla_login_window},{help:a(()=>n[8]||(n[8]=[s(" Es wird ein neues Browserfenster geöffnet, in dem Sie sich bei Tesla mit Ihren Zugangsdaten anmelden können. ")])),_:1},8,["onButtonClicked"]),i(d,{modelValue:l.page_not_found_url,"onUpdate:modelValue":n[1]||(n[1]=t=>l.page_not_found_url=t),title:"2. URL kopieren und einfügen",subtype:"url","empty-value":null},{help:a(()=>n[9]||(n[9]=[s(' Hier die komplette URL (Text in der Adresszeile) aus dem geöffneten Browserfenster einfügen, wenn dort "Page Not Found" angezeigt wird. ')])),_:1},8,["modelValue"]),i(g,{title:"3. Token abrufen","button-text":"Jetzt abrufen",subtype:"success",disabled:l.page_not_found_url===null,onButtonClicked:p.tesla_login},{help:a(()=>n[10]||(n[10]=[s(" Der in der eingegebenen URL enthaltene Code wird genutzt, um ein Anmeldetoken bei Tesla abzurufen. Ist dies erfolgreich, so werden die Daten des Token in den weiteren Feldern automatisch eingegeben. ")])),_:1},8,["disabled","onButtonClicked"]),n[13]||(n[13]=v("hr",null,null,-1)),i(d,{title:"Access Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.access_token:"","onUpdate:modelValue":n[2]||(n[2]=t=>e.updateConfiguration(t,"configuration.token.access_token"))},null,8,["model-value"]),i(d,{title:"Refresh Token",pattern:"^(ey).*",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.refresh_token:"","onUpdate:modelValue":n[3]||(n[3]=t=>e.updateConfiguration(t,"configuration.token.refresh_token"))},null,8,["model-value"]),i(u,{title:"Erstellt um",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.created_at:0,"onUpdate:modelValue":n[4]||(n[4]=t=>e.updateConfiguration(t,"configuration.token.created_at"))},{help:a(()=>n[11]||(n[11]=[s(" Unix Timestamp des Zeitpunktes, an dem das Token erzeugt wurde. ")])),_:1},8,["model-value"]),i(u,{title:"Ungültig in",unit:"s",required:"","model-value":e.vehicle.configuration.token?e.vehicle.configuration.token.expires_in:0,"onUpdate:modelValue":n[5]||(n[5]=t=>e.updateConfiguration(t,"configuration.token.expires_in"))},{help:a(()=>n[12]||(n[12]=[s(" Zeitspanne in Sekunden, nach der das Token ungültig wird. ")])),_:1},8,["model-value"])])}const R=h(T,[["render",B],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/tesla/vehicle.vue"]]);export{R as default};
diff --git a/web/settings/assets/vehicle-95222308.js b/web/settings/assets/vehicle-5d3ddd96.js
similarity index 88%
rename from web/settings/assets/vehicle-95222308.js
rename to web/settings/assets/vehicle-5d3ddd96.js
index f19281fad2..28d825e42d 100644
--- a/web/settings/assets/vehicle-95222308.js
+++ b/web/settings/assets/vehicle-5d3ddd96.js
@@ -1 +1 @@
-import{V as o}from"./VehicleConfig-e8ea05c9.js";import{_ as i,u as r,k as s,l as a,D as c,N as p,y as n,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocPSA",mixins:[o]},m={class:"vehicle-soc-psa"};function u(f,e,_,h,b,g){const t=r("openwb-base-alert");return s(),a("div",m,[c(t,{subtype:"danger"},{default:p(()=>e[0]||(e[0]=[n(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),l("br",null,null,-1),n(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")])),_:1})])}const N=i(d,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{N as default};
+import{V as o}from"./VehicleConfig-9a14b719.js";import{_ as i,u as r,k as s,l as a,D as c,N as p,y as n,x as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocPSA",mixins:[o]},m={class:"vehicle-soc-psa"};function u(f,e,_,h,b,g){const t=r("openwb-base-alert");return s(),a("div",m,[c(t,{subtype:"danger"},{default:p(()=>e[0]||(e[0]=[n(" Diese Modul ist seit Änderungen der Schnittstellen durch PSA nicht mehr funktionsfähig und wird in einer zukünftigen Version entfernt. Bitte auf einen anderen Anbieter wechseln, z.B. Tronity."),l("br",null,null,-1),n(" Bei vorhandener PSA-Integration in Heimautomation kann der SoC ggf. auch per MQTT übergeben werden. ")])),_:1})])}const N=i(d,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/psa/vehicle.vue"]]);export{N as default};
diff --git a/web/settings/assets/vehicle-cc94e01f.js b/web/settings/assets/vehicle-66d2565b.js
similarity index 91%
rename from web/settings/assets/vehicle-cc94e01f.js
rename to web/settings/assets/vehicle-66d2565b.js
index 08a964fb14..e0f65aa1dc 100644
--- a/web/settings/assets/vehicle-cc94e01f.js
+++ b/web/settings/assets/vehicle-66d2565b.js
@@ -1 +1 @@
-import{V as l}from"./VehicleConfig-e8ea05c9.js";import{_ as a,u,k as d,l as p,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[l]},v={class:"vehicle-soc-vwid"};function f(o,e,g,w,V,b){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const q=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default};
+import{V as l}from"./VehicleConfig-9a14b719.js";import{_ as a,u,k as d,l as p,D as t,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocVwid",mixins:[l]},v={class:"vehicle-soc-vwid"};function f(o,e,g,w,V,b){const i=u("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den VW-Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const q=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/vwid/vehicle.vue"]]);export{q as default};
diff --git a/web/settings/assets/vehicle-4df6c138.js b/web/settings/assets/vehicle-6bfa0331.js
similarity index 89%
rename from web/settings/assets/vehicle-4df6c138.js
rename to web/settings/assets/vehicle-6bfa0331.js
index 838489f82e..518a65c0b7 100644
--- a/web/settings/assets/vehicle-4df6c138.js
+++ b/web/settings/assets/vehicle-6bfa0331.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-e8ea05c9.js";import{_ as u,u as l,k as p,l as s,D as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default};
+import{V as a}from"./VehicleConfig-9a14b719.js";import{_ as u,u as l,k as p,l as s,D as i}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocEvnotify",mixins:[a]},d={class:"vehicle-soc-evnotify"};function f(e,o,c,v,b,g){const r=l("openwb-base-number-input"),t=l("openwb-base-text-input");return p(),s("div",d,[i(r,{title:"ID",required:"",min:0,"model-value":e.vehicle.configuration.id,"onUpdate:modelValue":o[0]||(o[0]=n=>e.updateConfiguration(n,"configuration.id"))},null,8,["model-value"]),i(t,{title:"AKey",required:"","model-value":e.vehicle.configuration.akey,"onUpdate:modelValue":o[1]||(o[1]=n=>e.updateConfiguration(n,"configuration.akey"))},null,8,["model-value"]),i(t,{title:"Token",required:"","model-value":e.vehicle.configuration.token,"onUpdate:modelValue":o[2]||(o[2]=n=>e.updateConfiguration(n,"configuration.token"))},null,8,["model-value"])])}const B=u(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/evnotify/vehicle.vue"]]);export{B as default};
diff --git a/web/settings/assets/vehicle-ad06c8a7.js b/web/settings/assets/vehicle-746a309e.js
similarity index 88%
rename from web/settings/assets/vehicle-ad06c8a7.js
rename to web/settings/assets/vehicle-746a309e.js
index 23d78b1185..3f40a30489 100644
--- a/web/settings/assets/vehicle-ad06c8a7.js
+++ b/web/settings/assets/vehicle-746a309e.js
@@ -1 +1 @@
-import{V as d}from"./VehicleConfig-e8ea05c9.js";import{_ as l,u as a,k as u,l as p,D as n,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocOVMS",mixins:[d]},v={class:"vehicle-soc-ovms"};function f(o,e,g,V,c,w){const i=a("openwb-base-text-input");return u(),p("div",v,[n(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")])),_:1},8,["model-value"]),n(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")])),_:1},8,["model-value"]),n(i,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.vehicleId"))},{help:r(()=>e[5]||(e[5]=[s(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")])),_:1},8,["model-value"])])}const D=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{D as default};
+import{V as d}from"./VehicleConfig-9a14b719.js";import{_ as l,u as a,k as u,l as p,D as n,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocOVMS",mixins:[d]},v={class:"vehicle-soc-ovms"};function f(o,e,g,V,c,w){const i=a("openwb-base-text-input");return u(),p("div",v,[n(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")])),_:1},8,["model-value"]),n(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung am OVMS-Server https://ovms.dexters-web.de/. ")])),_:1},8,["model-value"]),n(i,{title:"Vehicle Id",required:"","model-value":o.vehicle.configuration.vehicleId,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.vehicleId"))},{help:r(()=>e[5]||(e[5]=[s(" Die Id des Fahrzeugs im OVMS, auch Module Id genannt. ")])),_:1},8,["model-value"])])}const D=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/ovms/vehicle.vue"]]);export{D as default};
diff --git a/web/settings/assets/vehicle-81ee016b.js b/web/settings/assets/vehicle-75a99dd5.js
similarity index 86%
rename from web/settings/assets/vehicle-81ee016b.js
rename to web/settings/assets/vehicle-75a99dd5.js
index ecfb4fa180..a9a3d3634c 100644
--- a/web/settings/assets/vehicle-81ee016b.js
+++ b/web/settings/assets/vehicle-75a99dd5.js
@@ -1 +1 @@
-import{V as r}from"./VehicleConfig-e8ea05c9.js";import{_ as l,u as s,k as a,l as u,D as i,N as p,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},f={class:"vehicle-soc-smart-hello"};function v(o,e,c,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",f,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":o.vehicle.configuration.VIN,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>e[3]||(e[3]=[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{$ as default};
+import{V as r}from"./VehicleConfig-9a14b719.js";import{_ as l,u as s,k as a,l as u,D as i,N as p,y as d}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSmartHello",mixins:[r]},f={class:"vehicle-soc-smart-hello"};function v(o,e,c,g,h,V){const n=s("openwb-base-text-input");return a(),u("div",f,[i(n,{title:"Benutzername",subtype:"text",required:"","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=t=>o.updateConfiguration(t,"configuration.user_id"))},null,8,["model-value"]),i(n,{title:"Kennwort",subtype:"password",required:"","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=t=>o.updateConfiguration(t,"configuration.password"))},null,8,["model-value"]),i(n,{title:"VIN",subtype:"text","model-value":o.vehicle.configuration.VIN,"onUpdate:modelValue":e[2]||(e[2]=t=>o.updateConfiguration(t,"configuration.VIN"))},{help:p(()=>e[3]||(e[3]=[d(" Fahrgestellnummer (VIN) des Fahrzeugs. Notwendig falls mehrere Fahrzeuge im Account des Herstellers vorhanden sind. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/smarthello/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-022511d4.js b/web/settings/assets/vehicle-79035ef3.js
similarity index 87%
rename from web/settings/assets/vehicle-022511d4.js
rename to web/settings/assets/vehicle-79035ef3.js
index 099810f076..0ab95c7b53 100644
--- a/web/settings/assets/vehicle-022511d4.js
+++ b/web/settings/assets/vehicle-79035ef3.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-e8ea05c9.js";import{_ as s,u as p,k as u,l as m,D as n,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocHttp",mixins:[a]},c={class:"vehicle-soc-http"};function v(t,e,f,h,g,w){const i=p("openwb-base-text-input");return u(),m("div",c,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":t.vehicle.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>e[2]||(e[2]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")])),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":t.vehicle.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>e[3]||(e[3]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")])),_:1},8,["model-value"])])}const S=s(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{S as default};
+import{V as a}from"./VehicleConfig-9a14b719.js";import{_ as s,u as p,k as u,l as m,D as n,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const d={name:"VehicleSocHttp",mixins:[a]},c={class:"vehicle-soc-http"};function v(t,e,f,h,g,w){const i=p("openwb-base-text-input");return u(),m("div",c,[n(i,{title:"SoC URL",subtype:"url",required:"","model-value":t.vehicle.configuration.soc_url,"onUpdate:modelValue":e[0]||(e[0]=o=>t.updateConfiguration(o,"configuration.soc_url"))},{help:r(()=>e[2]||(e[2]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche den aktuellen Ladestand in Prozent (0 bis 100) zurückgibt. ")])),_:1},8,["model-value"]),n(i,{title:"Reichweiten URL",subtype:"url","model-value":t.vehicle.configuration.range_url,"onUpdate:modelValue":e[1]||(e[1]=o=>t.updateConfiguration(o,"configuration.range_url"))},{help:r(()=>e[3]||(e[3]=[l(" Es wird vom Server eine Zahl (Float mit Punkt als Dezimaltrennzeichen oder Integer) erwartet, welche die aktuelle Reichweite in Kilometern darstellt. Diese Angabe ist optional. ")])),_:1},8,["model-value"])])}const S=s(d,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/http/vehicle.vue"]]);export{S as default};
diff --git a/web/settings/assets/vehicle-693cb69a.js b/web/settings/assets/vehicle-84631beb.js
similarity index 93%
rename from web/settings/assets/vehicle-693cb69a.js
rename to web/settings/assets/vehicle-84631beb.js
index 952371f10d..06f83591dc 100644
--- a/web/settings/assets/vehicle-693cb69a.js
+++ b/web/settings/assets/vehicle-84631beb.js
@@ -1 +1 @@
-import{V as m}from"./VehicleConfig-e8ea05c9.js";import{_ as d,u as r,k as u,l as f,D as n,N as l,y as o,x as t,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocMqtt",mixins:[m]},v={class:"vehicle-soc-mqtt"};function g(i,e,w,k,x,B){const s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return u(),f("div",v,[n(a,{subtype:"info"},{default:l(()=>[e[12]||(e[12]=o(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. ")),t("ul",null,[t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/soc ",1)]),_:1}),e[0]||(e[0]=t("br",null,null,-1)),e[1]||(e[1]=o(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl")),e[2]||(e[2]=t("br",null,null,-1)),e[3]||(e[3]=o(" Beispiel: ")),e[4]||(e[4]=t("span",{class:"text-info"},"89.5",-1))]),t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/range ",1)]),_:1}),e[5]||(e[5]=t("br",null,null,-1)),e[6]||(e[6]=o(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl")),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Diese Info ist optional.")),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Beispiel: ")),e[11]||(e[11]=t("span",{class:"text-info"},"356.5",-1))])])]),_:1})])}const $=d(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{$ as default};
+import{V as m}from"./VehicleConfig-9a14b719.js";import{_ as d,u as r,k as u,l as f,D as n,N as l,y as o,x as t,z as p}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"VehicleSocMqtt",mixins:[m]},v={class:"vehicle-soc-mqtt"};function g(i,e,w,k,x,B){const s=r("openwb-base-copy-to-clipboard"),a=r("openwb-base-alert");return u(),f("div",v,[n(a,{subtype:"info"},{default:l(()=>[e[12]||(e[12]=o(" Die Daten werden immer dann aktualisiert, wenn das Topic veröffentlicht wird. Die Abfrageintervalle werden nicht berücksichtigt, da das Intervall vom sendenden Client festgelegt wird. ")),t("ul",null,[t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/soc ",1)]),_:1}),e[0]||(e[0]=t("br",null,null,-1)),e[1]||(e[1]=o(" Fahrzeug-SoC mit Nachkommastellen (Float) oder Ganzzahl")),e[2]||(e[2]=t("br",null,null,-1)),e[3]||(e[3]=o(" Beispiel: ")),e[4]||(e[4]=t("span",{class:"text-info"},"89.5",-1))]),t("li",null,[n(s,{class:"text-info",tooltip:"Topic kopieren"},{default:l(()=>[o(" openWB/set/vehicle/"+p(i.vehicleId)+"/get/range ",1)]),_:1}),e[5]||(e[5]=t("br",null,null,-1)),e[6]||(e[6]=o(" Reichweite des Fahrzeugs in km mit Nachkommastellen (Float) oder Ganzzahl")),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Diese Info ist optional.")),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Beispiel: ")),e[11]||(e[11]=t("span",{class:"text-info"},"356.5",-1))])])]),_:1})])}const $=d(b,[["render",g],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/mqtt/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-317e6bfc.js b/web/settings/assets/vehicle-98331362.js
similarity index 89%
rename from web/settings/assets/vehicle-317e6bfc.js
rename to web/settings/assets/vehicle-98331362.js
index 6e7a98ae90..4a9ef478fd 100644
--- a/web/settings/assets/vehicle-317e6bfc.js
+++ b/web/settings/assets/vehicle-98331362.js
@@ -1 +1 @@
-import{V as u}from"./VehicleConfig-e8ea05c9.js";import{_ as a,u as s,k as d,l as p,D as t,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[u]},v={class:"vehicle-soc-kia"};function f(o,e,g,w,V,b){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":o.vehicle.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.pin"))},{help:r(()=>e[6]||(e[6]=[l(" Die PIN für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{$ as default};
+import{V as u}from"./VehicleConfig-9a14b719.js";import{_ as a,u as s,k as d,l as p,D as t,N as r,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocKia",mixins:[u]},v={class:"vehicle-soc-kia"};function f(o,e,g,w,V,b){const i=s("openwb-base-text-input");return d(),p("div",v,[t(i,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[l(" Der Benutzername für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[l(" Das Passwort für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"PIN",required:"",subtype:"password","model-value":o.vehicle.configuration.pin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.pin"))},{help:r(()=>e[6]||(e[6]=[l(" Die PIN für die Anmeldung an den Servern. ")])),_:1},8,["model-value"]),t(i,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[3]||(e[3]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[7]||(e[7]=[l(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=a(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/kia/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-38d89acf.js b/web/settings/assets/vehicle-a7bdb9f9.js
similarity index 87%
rename from web/settings/assets/vehicle-38d89acf.js
rename to web/settings/assets/vehicle-a7bdb9f9.js
index 9feaff5718..9ad8b8da98 100644
--- a/web/settings/assets/vehicle-38d89acf.js
+++ b/web/settings/assets/vehicle-a7bdb9f9.js
@@ -1 +1 @@
-import{V as a}from"./VehicleConfig-e8ea05c9.js";import{_ as l,u as d,k as u,l as p,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[a]},v={class:"vehicle-soc-skodaconnect"};function f(o,e,c,g,w,V){const t=d("openwb-base-text-input");return u(),p("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{$ as default};
+import{V as a}from"./VehicleConfig-9a14b719.js";import{_ as l,u as d,k as u,l as p,D as i,N as r,y as s}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const m={name:"VehicleSocSkodaconnect",mixins:[a]},v={class:"vehicle-soc-skodaconnect"};function f(o,e,c,g,w,V){const t=d("openwb-base-text-input");return u(),p("div",v,[i(t,{title:"Benutzername",required:"",subtype:"user","model-value":o.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=n=>o.updateConfiguration(n,"configuration.user_id"))},{help:r(()=>e[3]||(e[3]=[s(" Der Benutzername für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"Kennwort",required:"",subtype:"password","model-value":o.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=n=>o.updateConfiguration(n,"configuration.password"))},{help:r(()=>e[4]||(e[4]=[s(" Das Passwort für die Anmeldung an den SkodaConnect-Servern. ")])),_:1},8,["model-value"]),i(t,{title:"VIN",required:"","model-value":o.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=n=>o.updateConfiguration(n,"configuration.vin"))},{help:r(()=>e[5]||(e[5]=[s(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"])])}const $=l(m,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/skodaconnect/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/assets/vehicle-cb0122fd.js b/web/settings/assets/vehicle-b5d373a2.js
similarity index 82%
rename from web/settings/assets/vehicle-cb0122fd.js
rename to web/settings/assets/vehicle-b5d373a2.js
index 9bd12bca3e..a0823f97c3 100644
--- a/web/settings/assets/vehicle-cb0122fd.js
+++ b/web/settings/assets/vehicle-b5d373a2.js
@@ -1 +1 @@
-import{V as n}from"./VehicleConfig-e8ea05c9.js";import{_ as s,u as i,k as o,l as r,D as a,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const p={name:"VehicleSocManual",mixins:[n]},c={class:"vehicle-soc-tesla"};function u(m,e,_,f,h,g){const t=i("openwb-base-alert");return o(),r("div",c,[a(t,{subtype:"info"},{default:d(()=>e[0]||(e[0]=[l(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')])),_:1})])}const z=s(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default};
+import{V as n}from"./VehicleConfig-9a14b719.js";import{_ as s,u as i,k as o,l as r,D as a,N as d,y as l}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const p={name:"VehicleSocManual",mixins:[n]},c={class:"vehicle-soc-tesla"};function u(m,e,_,f,h,g){const t=i("openwb-base-alert");return o(),r("div",c,[a(t,{subtype:"info"},{default:d(()=>e[0]||(e[0]=[l(' Beim Anstecken des Fahrzeugs muss der aktuelle SoC über die Hauptseite angegeben werden. Anhand des Zählers im Ladepunkt wird dann der aktuelle SoC errechnet. Ausschlaggebend für die Qualität dieses Moduls sind die beiden Einstellungen "Kapazität der Batterie" in dem Fahrzeug-Profil und "Wirkungsgrad der Ladeelektronik". ')])),_:1})])}const z=s(p,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/manual/vehicle.vue"]]);export{z as default};
diff --git a/web/settings/assets/vehicle-a9e07390.js b/web/settings/assets/vehicle-e9771037.js
similarity index 94%
rename from web/settings/assets/vehicle-a9e07390.js
rename to web/settings/assets/vehicle-e9771037.js
index 5710898159..22aea7bd70 100644
--- a/web/settings/assets/vehicle-a9e07390.js
+++ b/web/settings/assets/vehicle-e9771037.js
@@ -1 +1 @@
-import{V as d}from"./VehicleConfig-e8ea05c9.js";import{_ as p,u as l,k as m,l as b,D as i,N as r,y as t,x as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-f9fda857.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"VehicleSocBmwBimmerConnected",mixins:[d]},f={class:"vehicle-soc-bmwbc"};function v(n,e,c,w,V,B){const u=l("openwb-base-text-input"),s=l("openwb-base-button-group-input");return m(),b("div",f,[i(u,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"VIN",required:"","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[6]||(e[6]=[t(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.calculate_soc"))},{help:r(()=>e[7]||(e[7]=[t(" Berechnet den Ladestand (SoC) während der Ladung. "),a("br",null,null,-1),t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),a("br",null,null,-1)])),_:1},8,["model-value"])])}const $=p(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{$ as default};
+import{V as d}from"./VehicleConfig-9a14b719.js";import{_ as p,u as l,k as m,l as b,D as i,N as r,y as t,x as a}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./index-c79666b6.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const g={name:"VehicleSocBmwBimmerConnected",mixins:[d]},f={class:"vehicle-soc-bmwbc"};function v(n,e,c,w,V,B){const u=l("openwb-base-text-input"),s=l("openwb-base-button-group-input");return m(),b("div",f,[i(u,{title:"Benutzername",required:"",subtype:"user","model-value":n.vehicle.configuration.user_id,"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateConfiguration(o,"configuration.user_id"))},{help:r(()=>e[4]||(e[4]=[t(" Der Benutzername für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"Kennwort",required:"",subtype:"password","model-value":n.vehicle.configuration.password,"onUpdate:modelValue":e[1]||(e[1]=o=>n.updateConfiguration(o,"configuration.password"))},{help:r(()=>e[5]||(e[5]=[t(" Das Passwort für die Anmeldung an den BMW-Servern. ")])),_:1},8,["model-value"]),i(u,{title:"VIN",required:"","model-value":n.vehicle.configuration.vin,"onUpdate:modelValue":e[2]||(e[2]=o=>n.updateConfiguration(o,"configuration.vin"))},{help:r(()=>e[6]||(e[6]=[t(" Die Fahrgestellnummer des Fahrzeugs. ")])),_:1},8,["model-value"]),i(s,{title:"SoC während der Ladung berechnen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.vehicle.configuration.calculate_soc,"onUpdate:modelValue":e[3]||(e[3]=o=>n.updateConfiguration(o,"configuration.calculate_soc"))},{help:r(()=>e[7]||(e[7]=[t(" Berechnet den Ladestand (SoC) während der Ladung. "),a("br",null,null,-1),t(" Die Berechnung erfolgt über die Ladeleistung und die Ladedauer. "),a("br",null,null,-1)])),_:1},8,["model-value"])])}const $=p(g,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/bmwbc/vehicle.vue"]]);export{$ as default};
diff --git a/web/settings/index.html b/web/settings/index.html
index dabee19768..c1d1cb8868 100644
--- a/web/settings/index.html
+++ b/web/settings/index.html
@@ -7,7 +7,7 @@
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
   <link rel="icon" href="/openWB/web/settings/favicon.ico">
   <title>openWB</title>
-  <script type="module" crossorigin src="/openWB/web/settings/assets/index-f9fda857.js"></script>
+  <script type="module" crossorigin src="/openWB/web/settings/assets/index-c79666b6.js"></script>
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-sortablejs-3016fed8.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-a21b3a62.js">
   <link rel="modulepreload" crossorigin href="/openWB/web/settings/assets/vendor-fortawesome-41164876.js">

From c9bd14fe03d831e6c2060b044fe7dbd7864bea0e Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Tue, 8 Oct 2024 16:50:15 +0200
Subject: [PATCH 112/205] Evu error timer, use default power in case of error
 instead of charge stop (#1855)

* error timer

* text

* test
---
 packages/control/algorithm/min_current.py |   4 +-
 packages/control/counter.py               | 106 +++++++++++++---------
 packages/control/counter_test.py          |  29 +++---
 packages/helpermodules/setdata.py         |   7 +-
 packages/helpermodules/update_config.py   |  16 +++-
 5 files changed, 101 insertions(+), 61 deletions(-)

diff --git a/packages/control/algorithm/min_current.py b/packages/control/algorithm/min_current.py
index 2d1cd918b2..70d2d20240 100644
--- a/packages/control/algorithm/min_current.py
+++ b/packages/control/algorithm/min_current.py
@@ -3,6 +3,7 @@
 from control.algorithm import common
 from control.loadmanagement import Loadmanagement
 from control.algorithm.filter_chargepoints import get_chargepoints_by_mode_and_counter
+from modules.common.utils.component_parser import get_component_name_by_id
 
 log = logging.getLogger(__name__)
 
@@ -33,7 +34,8 @@ def set_min_current(self) -> None:
                             common.set_current_counterdiff(-(cp.data.set.current or 0), 0, cp)
                             if limit:
                                 cp.set_state_and_log(
-                                    f"Ladung kann nicht gestartet werden{limit.value.format(counter.num)}")
+                                    "Ladung kann nicht gestartet werden"
+                                    f"{limit.value.format(get_component_name_by_id(counter.num))}")
                         else:
                             common.set_current_counterdiff(
                                 cp.data.set.target_current,
diff --git a/packages/control/counter.py b/packages/control/counter.py
index a940d27292..ef819921b8 100644
--- a/packages/control/counter.py
+++ b/packages/control/counter.py
@@ -4,7 +4,7 @@
 from enum import Enum
 import logging
 import operator
-from typing import List, Tuple
+from typing import List, Optional, Tuple
 
 from control import data
 from control.chargemode import Chargemode
@@ -16,13 +16,16 @@
 from helpermodules.constants import NO_ERROR
 from helpermodules.phase_mapping import convert_cp_currents_to_evu_currents
 from modules.common.fault_state import FaultStateLevel
+from modules.common.utils.component_parser import get_component_name_by_id
 
 log = logging.getLogger(__name__)
 
 
 def get_counter_default_config():
-    return {"max_currents": [35]*3,
-            "max_total_power": 24000}
+    return {"max_power_errorcase": 7000,
+            "max_currents": [35]*3,
+            "max_total_power": 24000,
+            }
 
 
 class ControlRangeState(Enum):
@@ -33,6 +36,7 @@ class ControlRangeState(Enum):
 
 @dataclass
 class Config:
+    max_power_errorcase: float = field(default=7000, metadata={"topic": "get/max_power_errorcase"})
     max_currents: List[float] = field(default_factory=currents_list_factory, metadata={
                                       "topic": "get/max_currents"})
     max_total_power: float = field(default=0, metadata={"topic": "get/max_total_power"})
@@ -68,7 +72,7 @@ def get_factory() -> Get:
 
 @dataclass
 class Set:
-    error_counter: int = field(default=0, metadata={"topic": "set/error_counter"})
+    error_timer: Optional[float] = field(default=None, metadata={"topic": "set/error_timer"})
     reserved_surplus: float = field(default=0, metadata={"topic": "set/reserved_surplus"})
     released_surplus: float = field(default=0, metadata={"topic": "set/released_surplus"})
     raw_power_left: float = 0
@@ -88,7 +92,7 @@ class CounterData:
 
 
 class Counter:
-    MAX_EVU_ERRORS = 2
+    MAX_EVU_ERROR_DURATION = 60
 
     def __init__(self, index):
         try:
@@ -100,52 +104,62 @@ def __init__(self, index):
     def setup_counter(self):
         # Zählvariablen vor dem Start der Regelung zurücksetzen
         try:
-            self._set_loadmanagement_state()
-            self._set_current_left()
-            self._set_power_left()
-            if self.data.get.fault_state == FaultStateLevel.ERROR:
+            loadmanagement_available = self._get_loadmanagement_state()
+            self._set_current_left(loadmanagement_available)
+            self._set_power_left(loadmanagement_available)
+            if loadmanagement_available is False:
                 self.data.get.power = 0
                 return
         except Exception:
             log.exception("Fehler in der Zähler-Klasse von "+str(self.num))
 
     # tested
-    def _set_loadmanagement_state(self) -> None:
+    def _get_loadmanagement_state(self) -> None:
         # Wenn der Zähler keine Werte liefert, darf nicht geladen werden.
         connected_cps = data.data.counter_all_data.get_chargepoints_of_counter(f'counter{self.num}')
-        loadmanagement_available = True
         if self.data.get.fault_state == FaultStateLevel.ERROR:
-            self.data.set.error_counter += 1
-            if self.data.set.error_counter >= self.MAX_EVU_ERRORS:
-                loadmanagement_available = False
+            if self.data.set.error_timer is None:
+                self.data.set.error_timer = timecheck.create_timestamp()
+            if timecheck.check_timestamp(self.data.set.error_timer, self.MAX_EVU_ERROR_DURATION) is False:
+                for cp in connected_cps:
+                    if self.num == data.data.counter_all_data.get_id_evu_counter():
+                        data.data.cp_data[cp].set_state_and_log(
+                            f"Fehler beim Auslesen des Zählers {get_component_name_by_id(self.num)}. Es wird eine "
+                            f"maximale Leistung von {self.data.config.max_power_errorcase/1000} kW genutzt.")
+                    else:
+                        data.data.cp_data[cp].set_state_and_log(
+                            f"Fehler beim Auslesen des Zählers {get_component_name_by_id(self.num)}. Es werden"
+                            f" maximal Ströme von {[int(round(self.data.config.max_power_errorcase/230/3, 0))]*3} A"
+                            " genutzt.")
+                return False
         else:
-            self.data.set.error_counter = 0
-        for cp in connected_cps:
-            # Wird zu Beginn des Zyklus auf True gesetzt, wenn es einmal auf False gesetzt wird, darf es nicht wieder
-            # auf True gesetzt werden.
-            if loadmanagement_available is False:
-                data.data.cp_data[cp].data.set.loadmanagement_available = loadmanagement_available
+            self.data.set.error_timer = None
+            return True
 
     # tested
 
-    def _set_current_left(self) -> None:
-        currents_raw = self.data.get.currents
-        cp_keys = data.data.counter_all_data.get_chargepoints_of_counter(f"counter{self.num}")
-        for cp_key in cp_keys:
-            chargepoint = data.data.cp_data[cp_key]
-            try:
-                element_current = convert_cp_currents_to_evu_currents(
-                    chargepoint.data.config.phase_1,
-                    chargepoint.data.get.currents)
-            except KeyError:
-                element_current = [max(chargepoint.data.get.currents)]*3
-            currents_raw = list(map(operator.sub, currents_raw, element_current))
-        currents_raw = list(map(operator.sub, self.data.config.max_currents, currents_raw))
-        if min(currents_raw) < 0:
-            log.debug(f"Verbleibende Ströme: {currents_raw}, Überbelastung wird durch Hausverbrauch verursacht")
-            currents_raw = [max(currents_raw[i], 0) for i in range(0, 3)]
-        self.data.set.raw_currents_left = currents_raw
-        log.info(f'Verbleibende Ströme an Zähler {self.num}: {self.data.set.raw_currents_left}A')
+    def _set_current_left(self, loadmanagement_available: bool) -> None:
+        if loadmanagement_available:
+            currents_raw = self.data.get.currents
+            cp_keys = data.data.counter_all_data.get_chargepoints_of_counter(f"counter{self.num}")
+            for cp_key in cp_keys:
+                chargepoint = data.data.cp_data[cp_key]
+                try:
+                    element_current = convert_cp_currents_to_evu_currents(
+                        chargepoint.data.config.phase_1,
+                        chargepoint.data.get.currents)
+                except KeyError:
+                    element_current = [max(chargepoint.data.get.currents)]*3
+                currents_raw = list(map(operator.sub, currents_raw, element_current))
+            currents_raw = list(map(operator.sub, self.data.config.max_currents, currents_raw))
+            if min(currents_raw) < 0:
+                log.debug(f"Verbleibende Ströme: {currents_raw}, Überbelastung wird durch Hausverbrauch verursacht")
+                currents_raw = [max(currents_raw[i], 0) for i in range(0, 3)]
+            self.data.set.raw_currents_left = currents_raw
+            log.info(f'Verbleibende Ströme an Zähler {self.num}: {self.data.set.raw_currents_left}A')
+        else:
+            self.data.set.raw_currents_left = [self.data.config.max_power_errorcase/230/3]*3
+            log.info(f'Verbleibende Ströme an Zähler {self.num} (Fehlerfall): {self.data.set.raw_currents_left}A')
 
     # tested
     def get_unbalanced_load_exceeding(self, raw_currents_left: List[float]) -> List[float]:
@@ -162,13 +176,17 @@ def get_unbalanced_load_exceeding(self, raw_currents_left: List[float]) -> List[
                     unbalanced_load - data.data.general_data.data.chargemode_config.unbalanced_load_limit, 0)
         return max_exceeding
 
-    def _set_power_left(self) -> None:
+    def _set_power_left(self, loadmanagement_available: bool) -> None:
         if f'counter{self.num}' == data.data.counter_all_data.get_evu_counter_str():
-            power_raw = self.data.get.power
-            for cp in data.data.cp_data.values():
-                power_raw -= cp.data.get.power
-            self.data.set.raw_power_left = self.data.config.max_total_power - power_raw
-            log.info(f'Verbleibende Leistung an Zähler {self.num}: {self.data.set.raw_power_left}W')
+            if loadmanagement_available:
+                power_raw = self.data.get.power
+                for cp in data.data.cp_data.values():
+                    power_raw -= cp.data.get.power
+                self.data.set.raw_power_left = self.data.config.max_total_power - power_raw
+                log.info(f'Verbleibende Leistung an Zähler {self.num}: {self.data.set.raw_power_left}W')
+            else:
+                self.data.set.raw_power_left = self.data.config.max_power_errorcase
+                log.info(f'Verbleibende Leistung an Zähler {self.num} (Fehlerfall): {self.data.set.raw_power_left}W')
         else:
             self.data.set.raw_power_left = None
 
diff --git a/packages/control/counter_test.py b/packages/control/counter_test.py
index 8419014d20..aa05173172 100644
--- a/packages/control/counter_test.py
+++ b/packages/control/counter_test.py
@@ -3,6 +3,7 @@
 from unittest.mock import Mock
 import pytest
 
+from control import counter as counter_module
 from control import data
 from control.chargepoint.chargepoint import Chargepoint
 from control.counter import Counter, CounterData, Get
@@ -19,8 +20,8 @@ def general_data_fixture() -> None:
 
 
 @pytest.mark.parametrize("fault_state, expected_loadmanagement_available",
-                         [pytest.param(FaultStateLevel.ERROR, False),
-                          pytest.param(FaultStateLevel.NO_ERROR, True)])
+                         [pytest.param(FaultStateLevel.ERROR, 1652683252),
+                          pytest.param(FaultStateLevel.NO_ERROR, None)])
 def test_set_loadmanagement_state(fault_state: FaultStateLevel,
                                   expected_loadmanagement_available: bool,
                                   monkeypatch,
@@ -28,16 +29,18 @@ def test_set_loadmanagement_state(fault_state: FaultStateLevel,
     # setup
     connected_cps_mock = Mock(return_value=["cp3", "cp4"])
     monkeypatch.setattr(data.data.counter_all_data, "get_chargepoints_of_counter", connected_cps_mock)
+    id_mock = Mock(return_value=0)
+    monkeypatch.setattr(data.data.counter_all_data, "get_id_evu_counter", id_mock)
+    name_mock = Mock(return_value="Test")
+    monkeypatch.setattr(counter_module, "get_component_name_by_id", name_mock)
     counter = Counter(0)
     counter.data.get.fault_state = fault_state
-    counter.data.set.error_counter = 2
 
     # execution
-    counter._set_loadmanagement_state()
+    counter._get_loadmanagement_state()
 
     # evaluation
-    assert data.data.cp_data["cp3"].data.set.loadmanagement_available == expected_loadmanagement_available
-    assert data.data.cp_data["cp4"].data.set.loadmanagement_available == expected_loadmanagement_available
+    assert counter.data.set.error_timer == expected_loadmanagement_available
 
 
 @pytest.mark.parametrize("raw_currents_left, expected_max_exceeding",
@@ -65,10 +68,12 @@ def test_get_unbalanced_load_exceeding(raw_currents_left: List[float],
     assert max_exceeding == expected_max_exceeding
 
 
-@pytest.mark.parametrize("max_currents, expected_raw_currents_left",
-                         [pytest.param([40]*3, [40, 0, 10], id="Überbelastung"),
-                          ([60]*3, [60, 15, 30])])
-def test_set_current_left(max_currents: List[float],
+@pytest.mark.parametrize("loadmanagement_available, max_currents, expected_raw_currents_left",
+                         [pytest.param(True, [40]*3, [40, 0, 10], id="Überbelastung"),
+                          pytest.param(True, [60]*3, [60, 15, 30]),
+                          pytest.param(False, [40]*3, [10.1449275362318853]*3, id="Kein Lastmanagement")])
+def test_set_current_left(loadmanagement_available: bool,
+                          max_currents: List[float],
                           expected_raw_currents_left: List[float],
                           monkeypatch,
                           data_):
@@ -77,10 +82,12 @@ def test_set_current_left(max_currents: List[float],
     monkeypatch.setattr(data.data.counter_all_data, "get_chargepoints_of_counter", get_chargepoints_of_counter_mock)
     counter = Counter(0)
     counter.data.config.max_currents = max_currents
+    counter.data.config.max_total_power = sum(max_currents)*230
+    counter.data.config.max_power_errorcase = 7000
     counter.data.get.currents = [55]*3
 
     # execution
-    counter._set_current_left()
+    counter._set_current_left(loadmanagement_available)
 
     # evaluation
     assert counter.data.set.raw_currents_left == expected_raw_currents_left
diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py
index 1658400283..8bb60819bb 100644
--- a/packages/helpermodules/setdata.py
+++ b/packages/helpermodules/setdata.py
@@ -910,7 +910,8 @@ def process_counter_topic(self, msg: mqtt.MQTTMessage):
                 self._validate_value(msg, "json")
             elif "/config/max_currents" in msg.topic:
                 self._validate_value(msg, int, [(7, 1500)], collection=list)
-            elif "/config/max_total_power" in msg.topic:
+            elif ("/config/max_total_power" in msg.topic or
+                  "/config/max_power_errorcase" in msg.topic):
                 self._validate_value(msg, int, [(0,  float("inf"))])
             elif subdata.SubData.counter_data.get(f"counter{get_index(msg.topic)}"):
                 if ("/get/powers" in msg.topic or
@@ -933,8 +934,8 @@ def process_counter_topic(self, msg: mqtt.MQTTMessage):
                         msg, float, [(0, float("inf"))])
                 elif "/get/fault_state" in msg.topic:
                     self._validate_value(msg, int, [(0, 2)])
-                elif "/set/error_counter" in msg.topic:
-                    self._validate_value(msg, int, [(0, float("inf"))])
+                elif "/set/error_timer" in msg.topic:
+                    self._validate_value(msg, float, [(0, float("inf"))])
                 elif "/get/fault_str" in msg.topic:
                     self._validate_value(msg, str)
                 elif "/get/power" in msg.topic:
diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index 6251afc440..f5c46be2dd 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -10,6 +10,7 @@
 from paho.mqtt.client import Client as MqttClient, MQTTMessage
 from control.bat_all import BatConsiderationMode
 from control.chargepoint.charging_type import ChargingType
+from control.counter import get_counter_default_config
 from control.general import ChargemodeConfig
 import dataclass_utils
 
@@ -47,7 +48,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 61
+    DATASTORE_VERSION = 62
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -164,9 +165,10 @@ class UpdateConfig:
         "^openWB/counter/[0-9]+/get/imported$",
         "^openWB/counter/[0-9]+/get/exported$",
         "^openWB/counter/[0-9]+/set/consumption_left$",
-        "^openWB/counter/[0-9]+/set/error_counter$",
+        "^openWB/counter/[0-9]+/set/error_timer$",
         "^openWB/counter/[0-9]+/set/released_surplus$",
         "^openWB/counter/[0-9]+/set/reserved_surplus$",
+        "^openWB/counter/[0-9]+/config/max_power_errorcase$",
         "^openWB/counter/[0-9]+/config/max_currents$",
         "^openWB/counter/[0-9]+/config/max_total_power$",
 
@@ -1792,3 +1794,13 @@ def upgrade(topic: str, payload) -> None:
                 Pub().pub(topic, payload)
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 61)
+
+    def upgrade_datastore_61(self) -> None:
+        def upgrade(topic: str, payload) -> Optional[dict]:
+            if re.search("openWB/counter/[0-9]+/config/max_total_power", topic) is not None:
+                index = get_index(topic)
+                if f"openWB/counter/{index}/config/max_power_errorcase" not in self.all_received_topics.keys():
+                    max_power_errorcase = get_counter_default_config()["max_power_errorcase"]
+                    return {f"openWB/counter/{index}/config/max_power_errorcase": max_power_errorcase}
+        self._loop_all_received_topics(upgrade)
+        self.__update_topic("openWB/system/datastore_version", 62)

From a06a345c55f2324678efc2522000a889946b4769 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 9 Oct 2024 13:49:52 +0200
Subject: [PATCH 113/205] note on change of behavior if meter fails (#1924)

---
 packages/helpermodules/update_config.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index f5c46be2dd..ca9cd646c7 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -48,7 +48,7 @@
 
 
 class UpdateConfig:
-    DATASTORE_VERSION = 62
+    DATASTORE_VERSION = 63
     valid_topic = [
         "^openWB/bat/config/configured$",
         "^openWB/bat/set/charging_power_left$",
@@ -546,7 +546,7 @@ def update(self):
             self.__update_version()
         except Exception:
             log.exception("Fehler bei der Aktualisierung des Brokers.")
-            pub_system_message({}, "Fehler bei der Aktualisierung der Konfiguration im Brokers.", MessageType.ERROR)
+            pub_system_message({}, "Fehler bei der Aktualisierung der Konfiguration des Brokers.", MessageType.ERROR)
         finally:
             self.__update_topic("openWB/system/update_config_completed", True)
 
@@ -1804,3 +1804,10 @@ def upgrade(topic: str, payload) -> Optional[dict]:
                     return {f"openWB/counter/{index}/config/max_power_errorcase": max_power_errorcase}
         self._loop_all_received_topics(upgrade)
         self.__update_topic("openWB/system/datastore_version", 62)
+
+    def upgrade_datastore_62(self) -> None:
+        pub_system_message(
+            {}, "Bei einem Zählerausfall werden nun 7kW für diesen Zähler freigegeben. Bisher wurde im "
+            "Fehlerfall die Ladung gestoppt. Du kannst die maximale Leistung im Fehlerfall für jeden Zähler"
+            " unter Einstellungen -> Konfiguration -> Lastmanagement anpassen.", MessageType.WARNING)
+        self.__update_topic("openWB/system/datastore_version", 63)

From 72e06c4ead2f10f47f7f7c940c02df6320c54973 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 9 Oct 2024 14:21:40 +0200
Subject: [PATCH 114/205] fix max current step for surplus DC charging (#1925)

* fix max current step for surplus charging

* fix test

* fix test
---
 .../control/algorithm/surplus_controlled.py    | 18 +++++++++++++++---
 .../algorithm/surplus_controlled_test.py       |  3 +++
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py
index 4897ad6c86..e2a2f0aeda 100644
--- a/packages/control/algorithm/surplus_controlled.py
+++ b/packages/control/algorithm/surplus_controlled.py
@@ -3,6 +3,7 @@
 
 from control import data
 from control.algorithm import common
+from control.chargepoint.charging_type import ChargingType
 from control.loadmanagement import LimitingValue, Loadmanagement
 from control.counter import Counter
 from control.chargepoint.chargepoint import Chargepoint
@@ -87,7 +88,10 @@ def filter_by_feed_in_limit(self, chargepoints: List[Chargepoint]) -> Tuple[List
 
     # tested
     def _limit_adjust_current(self, chargepoint: Chargepoint, new_current: float) -> float:
-        MAX_CURRENT = 5
+        if chargepoint.template.data.charging_type == ChargingType.AC.value:
+            MAX_CURRENT = 5
+        else:
+            MAX_CURRENT = 30
         msg = None
         nominal_difference = chargepoint.data.set.charging_ev_data.ev_template.data.nominal_difference
         if chargepoint.data.set.charging_ev_data.chargemode_changed:
@@ -101,11 +105,11 @@ def _limit_adjust_current(self, chargepoint: Chargepoint, new_current: float) ->
             else:
                 if new_current < max(chargepoint.data.get.currents):
                     current = max(chargepoint.data.get.currents) - MAX_CURRENT
-                    msg = "Es darf um max 5A unter den aktuell genutzten Strom geregelt werden."
+                    msg = f"Es darf um max {MAX_CURRENT}A unter den aktuell genutzten Strom geregelt werden."
 
                 else:
                     current = max(chargepoint.data.get.currents) + MAX_CURRENT
-                    msg = "Es darf um max 5A über den aktuell genutzten Strom geregelt werden."
+                    msg = f"Es darf um max {MAX_CURRENT}A über den aktuell genutzten Strom geregelt werden."
             chargepoint.set_state_and_log(msg)
             return max(current,
                        chargepoint.data.control_parameter.min_current,
@@ -174,6 +178,14 @@ def set_required_current_to_max(self) -> None:
             else:
                 max_current = charging_ev_data.ev_template.data.max_current_multi_phases
 
+            if cp.template.data.charging_type == ChargingType.AC.value:
+                if control_parameter.phases == 1:
+                    max_current = charging_ev_data.ev_template.data.max_current_single_phase
+                else:
+                    max_current = charging_ev_data.ev_template.data.max_current_multi_phases
+            else:
+                max_current = charging_ev_data.ev_template.data.dc_max_current
+
             control_parameter.required_currents = [max_current if required_currents[i] != 0 else 0 for i in range(3)]
             control_parameter.required_current = max_current
 
diff --git a/packages/control/algorithm/surplus_controlled_test.py b/packages/control/algorithm/surplus_controlled_test.py
index 7eb5425ea0..cc794ee605 100644
--- a/packages/control/algorithm/surplus_controlled_test.py
+++ b/packages/control/algorithm/surplus_controlled_test.py
@@ -8,6 +8,7 @@
 from control.chargemode import Chargemode
 from control.chargepoint.chargepoint import Chargepoint, ChargepointData
 from control.chargepoint.chargepoint_data import Get, Set
+from control.chargepoint.chargepoint_template import CpTemplate
 from control.chargepoint.control_parameter import ControlParameter
 from control.ev import ChargeTemplate, Ev
 
@@ -62,6 +63,7 @@ def test_limit_adjust_current(new_current: float, expected_current: float, monke
     # setup
     cp = Chargepoint(0, None)
     cp.data = ChargepointData(get=Get(currents=[15]*3))
+    cp.template = CpTemplate()
     monkeypatch.setattr(Chargepoint, "set_state_and_log", Mock())
 
     # execution
@@ -85,6 +87,7 @@ def test_set_required_current_to_max(phases: int,
     mock_cp1.data = ChargepointData(set=Set(charging_ev_data=ev),
                                     control_parameter=ControlParameter(phases=phases,
                                                                        required_currents=required_currents))
+    mock_cp1.template = CpTemplate()
     mock_get_chargepoints_surplus_controlled = Mock(return_value=[mock_cp1])
     monkeypatch.setattr(surplus_controlled, "get_chargepoints_surplus_controlled",
                         mock_get_chargepoints_surplus_controlled)

From 910c72c2c1c3da410ab8269ede9d2f80e0d68182 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 9 Oct 2024 15:31:14 +0200
Subject: [PATCH 115/205] Fixed no current adjustment if the control range is
 maintained (#1926)

---
 .../control/algorithm/surplus_controlled.py     | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py
index e2a2f0aeda..fd003e2a4b 100644
--- a/packages/control/algorithm/surplus_controlled.py
+++ b/packages/control/algorithm/surplus_controlled.py
@@ -5,7 +5,7 @@
 from control.algorithm import common
 from control.chargepoint.charging_type import ChargingType
 from control.loadmanagement import LimitingValue, Loadmanagement
-from control.counter import Counter
+from control.counter import ControlRangeState, Counter
 from control.chargepoint.chargepoint import Chargepoint
 from control.algorithm.filter_chargepoints import (get_chargepoints_by_mode, get_chargepoints_by_mode_and_counter,
                                                    get_preferenced_chargepoint_charging)
@@ -53,7 +53,20 @@ def _set(self,
                                                                                         feed_in_yield)
             cp.data.control_parameter.limit = limit
             available_for_cp = common.available_current_for_cp(cp, counts, available_currents, missing_currents)
-            current = common.get_current_to_set(cp.data.set.current, available_for_cp, cp.data.set.target_current)
+            if counter.get_control_range_state(feed_in_yield) == ControlRangeState.MIDDLE:
+                pv_charging = data.data.general_data.data.chargemode_config.pv_charging
+                dif_to_old_current = available_for_cp + cp.data.set.target_current - cp.set_current_prev
+                # Wenn die Differenz zwischen altem und neuem Soll-Strom größer als der Regelbereich ist, trotzdem
+                # nachregeln, auch wenn der Regelbereich eingehalten wird. Sonst würde zB nicht berücksichtigt werden,
+                # wenn noch ein Fahrzeug dazu kommmt.
+                if (pv_charging.control_range[1] - pv_charging.control_range[0]) / 230 < dif_to_old_current:
+                    current = available_for_cp
+                else:
+                    current = cp.set_current_prev - cp.data.set.target_current
+            else:
+                current = available_for_cp
+
+            current = common.get_current_to_set(cp.data.set.current, current, cp.data.set.target_current)
             self._set_loadmangement_message(current, limit, cp, counter)
             limited_current = self._limit_adjust_current(cp, current)
             limited_current = self._fix_deviating_evse_current(limited_current, cp)

From 980a9fe7ddf9a76464161dd9b50e7fd357d19914 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Wed, 9 Oct 2024 15:56:24 +0200
Subject: [PATCH 116/205] Revert "Fixed no current adjustment if the control
 range is maintained (#1926)" (#1928)

This reverts commit 910c72c2c1c3da410ab8269ede9d2f80e0d68182.
---
 .../control/algorithm/surplus_controlled.py     | 17 ++---------------
 1 file changed, 2 insertions(+), 15 deletions(-)

diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py
index fd003e2a4b..e2a2f0aeda 100644
--- a/packages/control/algorithm/surplus_controlled.py
+++ b/packages/control/algorithm/surplus_controlled.py
@@ -5,7 +5,7 @@
 from control.algorithm import common
 from control.chargepoint.charging_type import ChargingType
 from control.loadmanagement import LimitingValue, Loadmanagement
-from control.counter import ControlRangeState, Counter
+from control.counter import Counter
 from control.chargepoint.chargepoint import Chargepoint
 from control.algorithm.filter_chargepoints import (get_chargepoints_by_mode, get_chargepoints_by_mode_and_counter,
                                                    get_preferenced_chargepoint_charging)
@@ -53,20 +53,7 @@ def _set(self,
                                                                                         feed_in_yield)
             cp.data.control_parameter.limit = limit
             available_for_cp = common.available_current_for_cp(cp, counts, available_currents, missing_currents)
-            if counter.get_control_range_state(feed_in_yield) == ControlRangeState.MIDDLE:
-                pv_charging = data.data.general_data.data.chargemode_config.pv_charging
-                dif_to_old_current = available_for_cp + cp.data.set.target_current - cp.set_current_prev
-                # Wenn die Differenz zwischen altem und neuem Soll-Strom größer als der Regelbereich ist, trotzdem
-                # nachregeln, auch wenn der Regelbereich eingehalten wird. Sonst würde zB nicht berücksichtigt werden,
-                # wenn noch ein Fahrzeug dazu kommmt.
-                if (pv_charging.control_range[1] - pv_charging.control_range[0]) / 230 < dif_to_old_current:
-                    current = available_for_cp
-                else:
-                    current = cp.set_current_prev - cp.data.set.target_current
-            else:
-                current = available_for_cp
-
-            current = common.get_current_to_set(cp.data.set.current, current, cp.data.set.target_current)
+            current = common.get_current_to_set(cp.data.set.current, available_for_cp, cp.data.set.target_current)
             self._set_loadmangement_message(current, limit, cp, counter)
             limited_current = self._limit_adjust_current(cp, current)
             limited_current = self._fix_deviating_evse_current(limited_current, cp)

From 003ccf50c76b819c03158ee7f7217e3532e777d6 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Thu, 10 Oct 2024 08:58:37 +0200
Subject: [PATCH 117/205] OCPP (#1893)

* OCPP

* fixes

* fix mac

* logging

* flake8

* fix test

* clean up imports

* typo, json config
---
 packages/control/chargepoint/chargepoint.py   |  20 +++
 .../control/chargepoint/chargepoint_data.py   |   2 +
 packages/control/ocpp.py                      | 126 ++++++++++++++++++
 packages/control/ocpp_test.py                 |  77 +++++++++++
 packages/control/optional.py                  |  96 +++++--------
 packages/control/optional_data.py             |  84 ++++++++++++
 packages/control/process.py                   |   3 +
 packages/helpermodules/logger.py              |   1 +
 packages/helpermodules/setdata.py             |   6 +-
 packages/helpermodules/subdata.py             |  17 ++-
 packages/helpermodules/update_config.py       |   5 +
 packages/main.py                              |  16 +--
 .../chargepoints/mqtt/chargepoint_module.py   |   3 +-
 requirements.txt                              |   7 +
 14 files changed, 374 insertions(+), 89 deletions(-)
 create mode 100644 packages/control/ocpp.py
 create mode 100644 packages/control/ocpp_test.py
 create mode 100644 packages/control/optional_data.py

diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py
index f4998fb97b..a657886f3e 100644
--- a/packages/control/chargepoint/chargepoint.py
+++ b/packages/control/chargepoint/chargepoint.py
@@ -206,6 +206,15 @@ def is_charging_possible(self) -> Tuple[bool, Optional[str]]:
     def _process_charge_stop(self) -> None:
         # Charging Ev ist noch das EV des vorherigen Zyklus, wenn das nicht -1 war und jetzt nicht mehr geladen
         # werden soll (-1), Daten zurücksetzen.
+        # Ocpp Stop Funktion aufrufen
+        if not self.data.get.plug_state and self.data.set.ocpp_transaction_id is not None:
+            data.data.optional_data.stop_transaction(
+                self.data.config.ocpp_chargebox_id,
+                self.chargepoint_module.fault_state,
+                self.data.get.imported,
+                self.data.set.ocpp_transaction_id,
+                self.data.set.rfid)
+            Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/ocpp_transaction_id", None)
         if self.data.set.charging_ev_prev != -1:
             # Daten zurücksetzen, wenn nicht geladen werden soll.
             self.reset_control_parameter_at_charge_stop()
@@ -712,6 +721,17 @@ def update(self, ev_list: Dict[str, Ev]) -> None:
                     self._pub_connected_vehicle(ev_list[f"ev{vehicle}"])
                 else:
                     self._pub_configured_ev(ev_list)
+            # OCPP Start Transaction nach Anstecken
+            if ((self.data.get.plug_state and self.data.set.plug_state_prev is False) or
+                    (self.data.set.ocpp_transaction_id is None and self.data.get.charge_state)):
+                self.data.set.ocpp_transaction_id = data.data.optional_data.start_transaction(
+                    self.data.config.ocpp_chargebox_id,
+                    self.chargepoint_module.fault_state,
+                    self.num,
+                    self.data.set.rfid or self.data.get.rfid or self.data.get.vehicle_id,
+                    self.data.get.imported)
+                Pub().pub("openWB/set/chargepoint/"+str(self.num) +
+                          "/set/ocpp_transaction_id", self.data.set.ocpp_transaction_id)
             # SoC nach Anstecken aktualisieren
             if ((self.data.get.plug_state and self.data.set.plug_state_prev is False) or
                     (self.data.get.plug_state is False and self.data.set.plug_state_prev)):
diff --git a/packages/control/chargepoint/chargepoint_data.py b/packages/control/chargepoint/chargepoint_data.py
index d7807f0eda..a42511116a 100644
--- a/packages/control/chargepoint/chargepoint_data.py
+++ b/packages/control/chargepoint/chargepoint_data.py
@@ -140,6 +140,7 @@ class Set:
     rfid: Optional[str] = None
     target_current: float = 0  # Soll-Strom aus fest vorgegebener Stromstärke
     charging_ev_data: Ev = field(default_factory=ev_factory)
+    ocpp_transaction_id: Optional[int] = None
 
 
 @dataclass
@@ -154,6 +155,7 @@ class Config:
     auto_phase_switch_hw: bool = False
     control_pilot_interruption_hw: bool = False
     id: int = 0
+    ocpp_chargebox_id: Optional[str] = None
 
     def __post_init__(self):
         self.event_update_state: threading.Event
diff --git a/packages/control/ocpp.py b/packages/control/ocpp.py
new file mode 100644
index 0000000000..64a565de98
--- /dev/null
+++ b/packages/control/ocpp.py
@@ -0,0 +1,126 @@
+from datetime import datetime
+import json
+import logging
+from ocpp.v16 import call, ChargePoint as OcppChargepoint
+import websockets
+import asyncio
+from typing import Callable, Optional
+
+from control import data
+from control.optional_data import OptionalProtocol
+from modules.common.fault_state import FaultState
+
+
+log = logging.getLogger(__name__)
+
+
+class OcppMixin:
+    def _get_formatted_time(self: OptionalProtocol) -> str:
+        return datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
+
+    def _process_call(self: OptionalProtocol,
+                      chargebox_id: str,
+                      fault_state: FaultState,
+                      func: Callable) -> Optional[websockets.WebSocketClientProtocol]:
+        async def make_call() -> websockets.WebSocketClientProtocol:
+            async with websockets.connect(self.data.ocpp.url+chargebox_id,
+                                          subprotocols=[self.data.ocpp.version]) as ws:
+                try:
+                    cp = OcppChargepoint(chargebox_id, ws, 2)
+                    await cp.call(func)
+                except asyncio.exceptions.TimeoutError:
+                    # log.exception("Erwarteter TimeOut StartTransaction")
+                    pass
+                return ws
+        try:
+            if self.data.ocpp.active and chargebox_id:
+                return asyncio.run(make_call())
+        except websockets.exceptions.InvalidStatusCode:
+            fault_state.warning(f"Chargebox ID {chargebox_id} konnte nicht im OCPP-Backend gefunden werden oder "
+                                "URL des Backends ist falsch.")
+        return None
+
+    def boot_notification(self: OptionalProtocol,
+                          chargebox_id: str,
+                          fault_state: FaultState,
+                          model: str,
+                          serial_number: str) -> Optional[int]:
+        try:
+            self._process_call(chargebox_id, fault_state, call.BootNotification(
+                charge_point_model=model,
+                charge_point_vendor="openWB",
+                firmware_version=data.data.system_data["system"].data["version"],
+                meter_serial_number=serial_number
+            ))
+        except Exception as e:
+            fault_state.from_exception(e)
+
+    def start_transaction(self: OptionalProtocol,
+                          chargebox_id: str,
+                          fault_state: FaultState,
+                          connector_id: int,
+                          id_tag: str,
+                          imported: int) -> Optional[int]:
+        try:
+            ws = self._process_call(chargebox_id, fault_state, call.StartTransaction(
+                connector_id=connector_id,
+                id_tag=id_tag if id_tag else "",
+                meter_start=int(imported),
+                timestamp=self._get_formatted_time()
+            ))
+            if ws:
+                tansaction_id = json.loads(ws.messages[0])[2]["transactionId"]
+                log.debug(f"Transaction ID: {tansaction_id} für Chargebox ID: {chargebox_id} mit Tag: {id_tag} und "
+                          f"Zählerstand: {imported} erhalten.")
+                return tansaction_id
+        except Exception as e:
+            fault_state.from_exception(e)
+        return None
+
+    def transfer_values(self: OptionalProtocol,
+                        chargebox_id: str,
+                        fault_state: FaultState,
+                        connector_id: int,
+                        imported: int) -> None:
+        try:
+            self._process_call(chargebox_id, fault_state, call.MeterValues(
+                connector_id=connector_id,
+                meter_value=[{"timestamp": self._get_formatted_time(),
+                              "sampledValue": [
+                                  {
+                                      "value": f'{int(imported)}',
+                                      "context": "Sample.Periodic",
+                                      "format": "Raw",
+                                      "measurand": "Energy.Active.Import.Register",
+                                      "unit": "Wh"
+                                  },
+                ]}],
+            ))
+            log.debug(f"Zählerstand {imported} an Chargebox ID: {chargebox_id} übermittelt.")
+        except Exception as e:
+            fault_state.from_exception(e)
+
+    def send_heart_beat(self: OptionalProtocol, chargebox_id: str, fault_state: FaultState) -> None:
+        try:
+            self._process_call(chargebox_id, fault_state, call.Heartbeat())
+            log.debug(f"Heartbeat an Chargebox ID: {chargebox_id} gesendet.")
+        except Exception as e:
+            fault_state.from_exception(e)
+
+    def stop_transaction(self: OptionalProtocol,
+                         chargebox_id: str,
+                         fault_state: FaultState,
+                         imported: int,
+                         transaction_id: int,
+                         id_tag: str) -> None:
+        try:
+            self._process_call(chargebox_id, fault_state, call.StopTransaction(meter_stop=int(imported),
+                                                                               timestamp=self._get_formatted_time(),
+                                                                               transaction_id=transaction_id,
+                                                                               reason="EVDisconnected",
+                                                                               id_tag=id_tag if id_tag else ""
+                                                                               ))
+            log.debug(f"Transaction mit ID: {transaction_id} für Chargebox ID: {chargebox_id} mit Tag: {id_tag} und "
+                      f"Zählerstand: {imported} beendet.")
+        except Exception as e:
+            fault_state.from_exception(e)
diff --git a/packages/control/ocpp_test.py b/packages/control/ocpp_test.py
new file mode 100644
index 0000000000..d9e3efa51f
--- /dev/null
+++ b/packages/control/ocpp_test.py
@@ -0,0 +1,77 @@
+from unittest.mock import Mock
+import pytest
+
+from control import data
+from control.chargepoint.chargepoint import Chargepoint
+from control.chargepoint.chargepoint_template import CpTemplate
+from control.counter import Counter
+from control.ev import Ev
+from modules.chargepoints.mqtt.chargepoint_module import ChargepointModule
+from modules.chargepoints.mqtt.config import Mqtt
+
+
+@pytest.fixture()
+def mock_data() -> None:
+    data.data_init(Mock())
+    data.data.optional_data.data.ocpp.active = True
+    data.data.optional_data.data.ocpp.url = "ws://localhost:9000/"
+
+
+def test_start_transaction(mock_data, monkeypatch):
+    cp = Chargepoint(1, None)
+    cp.data.config.ocpp_chargebox_id = "cp1"
+    cp.data.get.plug_state = True
+    cp.template = CpTemplate()
+    cp.chargepoint_module = ChargepointModule(Mqtt())
+
+    start_transaction_mock = Mock()
+    monkeypatch.setattr(data.data.optional_data, "start_transaction", start_transaction_mock)
+    _pub_configured_ev_mock = Mock()
+    monkeypatch.setattr(cp, "_pub_configured_ev", _pub_configured_ev_mock)
+
+    cp.update([])
+
+    assert start_transaction_mock.call_args == (("cp1", cp.chargepoint_module.fault_state, 1, None, 0),)
+
+
+def test_stop_transaction(mock_data, monkeypatch):
+    cp = Chargepoint(1, None)
+    cp.data.config.ocpp_chargebox_id = "cp1"
+    cp.data.get.plug_state = False
+    cp.data.set.ocpp_transaction_id = 124
+    cp.data.set.charging_ev_prev = 1
+    cp.chargepoint_module = ChargepointModule(Mqtt())
+    cp.template = CpTemplate()
+
+    stop_transaction_mock = Mock()
+    monkeypatch.setattr(data.data.optional_data, "stop_transaction", stop_transaction_mock)
+    get_evu_counter_mock = Mock(return_value=Mock(spec=Counter))
+    monkeypatch.setattr(data.data.counter_all_data, "get_evu_counter", get_evu_counter_mock)
+    data.data.ev_data["ev1"] = Ev(1)
+
+    cp._process_charge_stop()
+
+    assert stop_transaction_mock.call_args == (("cp1", cp.chargepoint_module.fault_state, 0, 124, None),)
+
+
+def test_send_ocpp_data(mock_data, monkeypatch):
+    data.data.cp_data["cp1"] = Chargepoint(1, None)
+    data.data.cp_data["cp1"].data.config.ocpp_chargebox_id = "cp1"
+    data.data.cp_data["cp1"].data.get.plug_state = True
+    data.data.cp_data["cp1"].chargepoint_module = ChargepointModule(Mqtt())
+    data.data.cp_data["cp1"].data.get.serial_number = "123456"
+    transfer_values_mock = Mock()
+    monkeypatch.setattr(data.data.optional_data, "transfer_values", transfer_values_mock)
+    boot_notification_mock = Mock()
+    monkeypatch.setattr(data.data.optional_data, "boot_notification", boot_notification_mock)
+    send_heart_beat_mock = Mock()
+    monkeypatch.setattr(data.data.optional_data, "send_heart_beat", send_heart_beat_mock)
+
+    data.data.optional_data.ocpp_boot_notification_sent = False
+
+    data.data.optional_data._transfer_meter_values()
+
+    boot_notification_mock.call_args == (("cp1", "mqtt", "123456"),)
+    send_heart_beat_mock.call_args == (("cp1",),)
+    transfer_values_mock.call_args == (("cp1", 1, 0),)
+    assert data.data.optional_data.ocpp_boot_notification_sent is True
diff --git a/packages/control/optional.py b/packages/control/optional.py
index a4007408d1..8a33678668 100644
--- a/packages/control/optional.py
+++ b/packages/control/optional.py
@@ -1,91 +1,31 @@
 """Optionale Module
 """
-from dataclasses import dataclass, field
 import logging
 from math import ceil  # Aufrunden
 import threading
-from typing import Dict, List
+from typing import List
 
-from dataclass_utils.factories import empty_dict_factory
+from control import data
+from control.ocpp import OcppMixin
+from control.optional_data import OptionalData
 from helpermodules import hardware_configuration
 from helpermodules.constants import NO_ERROR
 from helpermodules.pub import Pub
 from helpermodules.timecheck import create_unix_timestamp_current_full_hour
 from helpermodules.utils import thread_handler
 from modules.common.configurable_tariff import ConfigurableElectricityTariff
-from modules.display_themes.cards.config import CardsDisplayTheme
 
 log = logging.getLogger(__name__)
 
 
-@dataclass
-class EtGet:
-    fault_state: int = 0
-    fault_str: str = NO_ERROR
-    prices: Dict = field(default_factory=empty_dict_factory)
-
-
-def get_factory() -> EtGet:
-    return EtGet()
-
-
-@dataclass
-class Et:
-    get: EtGet = field(default_factory=get_factory)
-
-
-def et_factory() -> Et:
-    return Et()
-
-
-@dataclass
-class InternalDisplay:
-    active: bool = False
-    on_if_plugged_in: bool = True
-    pin_active: bool = False
-    pin_code: str = "0000"
-    standby: int = 60
-    theme: CardsDisplayTheme = CardsDisplayTheme()
-
-
-def int_display_factory() -> InternalDisplay:
-    return InternalDisplay()
-
-
-@dataclass
-class Led:
-    active: bool = False
-
-
-def led_factory() -> Led:
-    return Led()
-
-
-@dataclass
-class Rfid:
-    active: bool = False
-
-
-def rfid_factory() -> Rfid:
-    return Rfid()
-
-
-@dataclass
-class OptionalData:
-    et: Et = field(default_factory=et_factory)
-    int_display: InternalDisplay = field(default_factory=int_display_factory)
-    led: Led = field(default_factory=led_factory)
-    rfid: Rfid = field(default_factory=rfid_factory)
-    dc_charging: bool = False
-
-
-class Optional:
+class Optional(OcppMixin):
     def __init__(self):
         try:
             self.data = OptionalData()
             self.et_module: ConfigurableElectricityTariff = None
             self.data.dc_charging = hardware_configuration.get_hardware_configuration_setting("dc_charging")
             Pub().pub("openWB/optional/dc_charging", self.data.dc_charging)
+            self.ocpp_boot_notification_sent = False
         except Exception:
             log.exception("Fehler im Optional-Modul")
 
@@ -153,3 +93,27 @@ def et_get_prices(self):
                     Pub().pub("openWB/set/optional/et/get/fault_str", NO_ERROR)
         except Exception:
             log.exception("Fehler im Optional-Modul")
+
+    def ocpp_transfer_meter_values(self):
+        try:
+            if self.data.ocpp.active:
+                thread_handler(threading.Thread(target=self._transfer_meter_values, args=(), name="OCPP Client"))
+        except Exception:
+            log.exception("Fehler im OCPP-Optional-Modul")
+
+    def _transfer_meter_values(self):
+        for cp in data.data.cp_data.values():
+            try:
+                if self.ocpp_boot_notification_sent is False:
+                    # Boot-Notfification nicht in der init-Funktion aufrufen, da noch nicht alles initialisiert ist
+                    self.boot_notification(cp.data.config.ocpp_chargebox_id,
+                                           cp.chargepoint_module.fault_state,
+                                           cp.chargepoint_module.config.type,
+                                           cp.data.get.serial_number)
+                    self.ocpp_boot_notification_sent = True
+                if cp.data.set.ocpp_transaction_id is not None:
+                    self.send_heart_beat(cp.data.config.ocpp_chargebox_id, cp.chargepoint_module.fault_state)
+                    self.transfer_values(cp.data.config.ocpp_chargebox_id,
+                                         cp.chargepoint_module.fault_state, cp.num, int(cp.data.get.imported))
+            except Exception:
+                log.exception("Fehler im OCPP-Optional-Modul")
diff --git a/packages/control/optional_data.py b/packages/control/optional_data.py
new file mode 100644
index 0000000000..80f7ac4dd3
--- /dev/null
+++ b/packages/control/optional_data.py
@@ -0,0 +1,84 @@
+from dataclasses import dataclass, field
+from typing import Dict, Optional, Protocol
+
+from dataclass_utils.factories import empty_dict_factory
+from helpermodules.constants import NO_ERROR
+from modules.display_themes.cards.config import CardsDisplayTheme
+
+
+@dataclass
+class EtGet:
+    fault_state: int = 0
+    fault_str: str = NO_ERROR
+    prices: Dict = field(default_factory=empty_dict_factory)
+
+
+def get_factory() -> EtGet:
+    return EtGet()
+
+
+@dataclass
+class Et:
+    get: EtGet = field(default_factory=get_factory)
+
+
+def et_factory() -> Et:
+    return Et()
+
+
+@dataclass
+class InternalDisplay:
+    active: bool = False
+    on_if_plugged_in: bool = True
+    pin_active: bool = False
+    pin_code: str = "0000"
+    standby: int = 60
+    theme: CardsDisplayTheme = CardsDisplayTheme()
+
+
+def int_display_factory() -> InternalDisplay:
+    return InternalDisplay()
+
+
+@dataclass
+class Led:
+    active: bool = False
+
+
+def led_factory() -> Led:
+    return Led()
+
+
+@dataclass
+class Rfid:
+    active: bool = False
+
+
+def rfid_factory() -> Rfid:
+    return Rfid()
+
+
+@dataclass
+class Ocpp:
+    active: bool = False
+    url: Optional[str] = None
+    version: str = "ocpp1.6"
+
+
+def ocpp_factory() -> Ocpp:
+    return Ocpp()
+
+
+@dataclass
+class OptionalData:
+    et: Et = field(default_factory=et_factory)
+    int_display: InternalDisplay = field(default_factory=int_display_factory)
+    led: Led = field(default_factory=led_factory)
+    rfid: Rfid = field(default_factory=rfid_factory)
+    dc_charging: bool = False
+    ocpp: Ocpp = field(default_factory=ocpp_factory)
+
+
+class OptionalProtocol(Protocol):
+    @property
+    def data(self) -> OptionalData: ...
diff --git a/packages/control/process.py b/packages/control/process.py
index 5831b01c08..0a742fe277 100644
--- a/packages/control/process.py
+++ b/packages/control/process.py
@@ -10,6 +10,7 @@
 from control.chargepoint.chargepoint_state import ChargepointState
 from helpermodules.pub import Pub
 from helpermodules.utils._thread_handler import joined_thread_handler
+from modules.common.fault_state_level import FaultStateLevel
 
 log = logging.getLogger(__name__)
 
@@ -53,6 +54,8 @@ def process_algorithm_results(self) -> None:
                             f"openWB/set/chargepoint/{cp.num}/get/state_str",
                             "Ladevorgang wurde gestartet... (bei Problemen: Prüfe bitte zuerst in den Einstellungen"
                             " 'Ladeeinstellungen' und 'Konfiguration'.)")
+                    if cp.chargepoint_module.fault_state.fault_state != FaultStateLevel.NO_ERROR:
+                        cp.chargepoint_module.fault_state.store_error()
                     modules_threads.append(self._start_charging(cp))
                 except Exception:
                     log.exception("Fehler im Process-Modul für Ladepunkt "+str(cp))
diff --git a/packages/helpermodules/logger.py b/packages/helpermodules/logger.py
index 435088fa73..06bd3c6c6e 100644
--- a/packages/helpermodules/logger.py
+++ b/packages/helpermodules/logger.py
@@ -81,6 +81,7 @@ def mb_to_bytes(megabytes: int) -> int:
 
     logging.getLogger("pymodbus").setLevel(logging.WARNING)
     logging.getLogger("uModbus").setLevel(logging.WARNING)
+    logging.getLogger("websockets").setLevel(logging.WARNING)
 
     def threading_excepthook(args):
         logging.getLogger(__name__).error("Uncaught exception in threading.excepthook:", exc_info=(
diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py
index 8bb60819bb..61b524ef7c 100644
--- a/packages/helpermodules/setdata.py
+++ b/packages/helpermodules/setdata.py
@@ -541,6 +541,7 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                 elif ("/set/manual_lock" in msg.topic or
                         "/set/perform_control_pilot_interruption" in msg.topic or
                         "/set/perform_phase_switch" in msg.topic or
+                        "/set/ocpp_transaction_active" in msg.topic or
                         "/set/plug_state_prev" in msg.topic):
                     self._validate_value(msg, bool)
                 elif "/set/autolock_state" in msg.topic:
@@ -548,6 +549,8 @@ def process_chargepoint_topic(self, msg: mqtt.MQTTMessage):
                 elif ("/set/rfid" in msg.topic or
                         "/set/plug_time" in msg.topic):
                     self._validate_value(msg, float)
+                elif "/set/ocpp_transaction_id" in msg.topic:
+                    self._validate_value(msg, int)
                 elif "/set/log" in msg.topic:
                     self._validate_value(msg, "json")
                 elif "/config/ev" in msg.topic:
@@ -851,7 +854,8 @@ def process_optional_topic(self, msg: mqtt.MQTTMessage):
                 self._validate_value(msg, int, [(0, 2)])
             elif "openWB/set/optional/et/get/fault_str" in msg.topic:
                 self._validate_value(msg, str)
-            elif "openWB/set/optional/et/provider" in msg.topic:
+            elif ("openWB/set/optional/et/provider" in msg.topic or
+                  "openWB/set/optional/ocpp/config" in msg.topic):
                 self._validate_value(msg, "json")
             elif "openWB/set/optional/rfid/active" in msg.topic:
                 self._validate_value(msg, bool)
diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py
index a866fff1b5..82a99dfb7b 100644
--- a/packages/helpermodules/subdata.py
+++ b/packages/helpermodules/subdata.py
@@ -9,26 +9,20 @@
 import subprocess
 import paho.mqtt.client as mqtt
 
-from control import bat_all, bat, pv_all
+from control import bat_all, bat, counter, counter_all, ev, general, optional, pv, pv_all
 from control.chargepoint import chargepoint
-from control import counter
-from control import counter_all
-from control import ev
-from control import general
 from control.chargepoint.chargepoint_all import AllChargepoints
 from control.chargepoint.chargepoint_data import Log
 from control.chargepoint.chargepoint_state_update import ChargepointStateUpdate
 from control.chargepoint.chargepoint_template import CpTemplate, CpTemplateData
-from helpermodules import graph
+from control.optional_data import Ocpp
+from helpermodules import graph, system
 from helpermodules.abstract_plans import AutolockPlan
 from helpermodules.broker import InternalBrokerClient
 from helpermodules.messaging import MessageType, pub_system_message
 from helpermodules.utils.run_command import run_command
 from helpermodules.utils.topic_parser import decode_payload, get_index, get_second_index
-from control import optional
 from helpermodules.pub import Pub
-from helpermodules import system
-from control import pv
 from dataclass_utils import dataclass_from_dict
 from modules.common.abstract_vehicle import CalculatedSocState, GeneralVehicleConfig
 from modules.common.configurable_backup_cloud import ConfigurableBackupCloud
@@ -659,6 +653,8 @@ def process_optional_topic(self, var: optional.Optional, msg: mqtt.MQTTMessage):
                     self.set_json_payload_class(var.data.led, msg)
                 elif re.search("/optional/rfid/", msg.topic) is not None:
                     self.set_json_payload_class(var.data.rfid, msg)
+                elif re.search("/optional/ocpp/", msg.topic) is not None:
+                    self.set_json_payload_class(var.data.ocpp, msg)
                 elif re.search("/optional/int_display/", msg.topic) is not None:
                     self.set_json_payload_class(var.data.int_display, msg)
                     if re.search("/(standby|active|rotation)$", msg.topic) is not None:
@@ -683,6 +679,9 @@ def process_optional_topic(self, var: optional.Optional, msg: mqtt.MQTTMessage):
                             var.et_get_prices()
                     else:
                         self.set_json_payload_class(var.data.et, msg)
+                elif re.search("/optional/ocpp/", msg.topic) is not None:
+                    config_dict = decode_payload(msg.payload)
+                    var.data.ocpp = dataclass_from_dict(Ocpp, config_dict)
                 else:
                     self.set_json_payload_class(var.data, msg)
         except Exception:
diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py
index ca9cd646c7..19756641f8 100644
--- a/packages/helpermodules/update_config.py
+++ b/packages/helpermodules/update_config.py
@@ -12,6 +12,7 @@
 from control.chargepoint.charging_type import ChargingType
 from control.counter import get_counter_default_config
 from control.general import ChargemodeConfig
+from control.optional_data import Ocpp
 import dataclass_utils
 
 from control.chargepoint.chargepoint_template import get_chargepoint_template_default
@@ -129,6 +130,8 @@ class UpdateConfig:
         "^openWB/chargepoint/[0-9]+/set/log$",
         "^openWB/chargepoint/[0-9]+/set/phases_to_use$",
         "^openWB/chargepoint/[0-9]+/set/charging_ev_prev$",
+        "^openWB/chargepoint/[0-9]+/set/ocpp_transaction_id$",
+        "^openWB/chargepoint/[0-9]+/set/ocpp_transaction_active$",
 
         "^openWB/command/max_id/autolock_plan$",
         "^openWB/command/max_id/charge_template$",
@@ -254,6 +257,7 @@ class UpdateConfig:
         "^openWB/optional/int_display/only_local_charge_points",
         "^openWB/optional/led/active$",
         "^openWB/optional/rfid/active$",
+        "^openWB/optional/ocpp/config$",
 
         "^openWB/pv/config/configured$",
         "^openWB/pv/get/exported$",
@@ -501,6 +505,7 @@ class UpdateConfig:
         ("openWB/optional/int_display/theme", dataclass_utils.asdict(CardsDisplayTheme())),
         ("openWB/optional/int_display/only_local_charge_points", False),
         ("openWB/optional/led/active", False),
+        ("openWB/optional/ocpp/config", dataclass_utils.asdict(Ocpp())),
         ("openWB/optional/rfid/active", False),
         ("openWB/system/backup_cloud/config", NO_MODULE),
         ("openWB/system/backup_cloud/backup_before_update", True),
diff --git a/packages/main.py b/packages/main.py
index 8a0bc15694..e191d5674f 100755
--- a/packages/main.py
+++ b/packages/main.py
@@ -18,23 +18,16 @@
 from threading import Thread
 from control.chargelog.chargelog import calculate_charge_cost
 
+from control import data, prepare, process
+from control.algorithm import algorithm
+from helpermodules import command, setdata, subdata, timecheck, update_config
 from helpermodules.changed_values_handler import ChangedValuesContext
 from helpermodules.measurement_logging.update_yields import update_daily_yields, update_pv_monthly_yearly_yields
 from helpermodules.measurement_logging.write_log import LogType, save_log
-from modules import loadvars
-from modules import configuration
-from helpermodules import timecheck, update_config
-from helpermodules import subdata
-from helpermodules import setdata
-from helpermodules import command
 from helpermodules.modbusserver import start_modbus_server
 from helpermodules.pub import Pub
-from control import prepare
-from control import data
-from control import process
-from control.algorithm import algorithm
 from helpermodules.utils import exit_after
-from modules import update_soc
+from modules import configuration, loadvars, update_soc
 from modules.internal_chargepoint_handler.internal_chargepoint_handler import GeneralInternalChargepointHandler
 from modules.internal_chargepoint_handler.rfid import RfidReader
 from modules.utils import wait_for_module_update_completed
@@ -94,6 +87,7 @@ def handler5MinAlgorithm(self):
                 update_pv_monthly_yearly_yields()
                 data.data.general_data.grid_protection()
                 data.data.optional_data.et_get_prices()
+                data.data.optional_data.ocpp_transfer_meter_values()
                 data.data.counter_all_data.validate_hierarchy()
         except KeyboardInterrupt:
             log.critical("Ausführung durch exit_after gestoppt: "+traceback.format_exc())
diff --git a/packages/modules/chargepoints/mqtt/chargepoint_module.py b/packages/modules/chargepoints/mqtt/chargepoint_module.py
index 65c7af517b..769376a064 100644
--- a/packages/modules/chargepoints/mqtt/chargepoint_module.py
+++ b/packages/modules/chargepoints/mqtt/chargepoint_module.py
@@ -20,8 +20,7 @@ def __init__(self, config: Mqtt) -> None:
             f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True)
 
     def set_current(self, current: float) -> None:
-        with SingleComponentUpdateContext(self.fault_state):
-            log.debug("MQTT-Ladepunkte abonnieren die Soll-Stromstärke direkt vom Broker.")
+        log.debug("MQTT-Ladepunkte abonnieren die Soll-Stromstärke direkt vom Broker.")
 
     def get_values(self) -> None:
         with SingleComponentUpdateContext(self.fault_state):
diff --git a/requirements.txt b/requirements.txt
index 78cb018b81..1fe5751786 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -23,3 +23,10 @@ pytz==2023.3.post1
 grpcio==1.60.1
 protobuf==4.25.3
 bimmer_connected==0.16.1
+# ocpp
+jsonschema==4.22.0
+jsonschema-specifications==2023.12.1
+ocpp==1.0.0
+referencing==0.35.1
+rpds-py==0.18.1
+websockets==12.0

From 95904d889a362a0b92cb5db8e3d86d089c18ff94 Mon Sep 17 00:00:00 2001
From: LKuemmel <76958050+LKuemmel@users.noreply.github.com>
Date: Thu, 10 Oct 2024 09:00:12 +0200
Subject: [PATCH 118/205] build UI (#1931)

---
 .../assets/{ChargeLog-0789f309.js => ChargeLog-97816458.js}     | 2 +-
 web/settings/assets/ChargePointInstallation-2f136eb7.js         | 1 -
 web/settings/assets/ChargePointInstallation-d12c6dc4.js         | 1 +
 web/settings/assets/{Chart-f906208b.js => Chart-941d0c7c.js}    | 2 +-
 .../assets/{CloudConfig-b33b0184.js => CloudConfig-8f0baa42.js} | 2 +-
 .../{DataManagement-1fb1197d.js => DataManagement-f7ee6dfd.js}  | 2 +-
 .../assets/{DebugConfig-6d0524fc.js => DebugConfig-37cd830d.js} | 2 +-
 web/settings/assets/GeneralChargeConfig-764e9a8c.js             | 1 -
 web/settings/assets/GeneralChargeConfig-9f53f87a.js             | 1 +
 .../{GeneralConfig-1687a15a.js => GeneralConfig-7a50fc67.js}    | 2 +-
 ...nstallation-d2c0f1d5.js => HardwareInstallation-4f848d8b.js} | 2 +-
 ...nstallAssistant-a3c80ad1.js => InstallAssistant-677c2ffc.js} | 2 +-
 ...stantStep0-500a8cc5.js => InstallAssistantStep0-2077a8df.js} | 2 +-
 ...stantStep1-6470c726.js => InstallAssistantStep1-cef7887d.js} | 2 +-
 ...antStep10-3d5ac094.js => InstallAssistantStep10-c90437c2.js} | 2 +-
 ...stantStep2-12a3f7a8.js => InstallAssistantStep2-3e3aee9e.js} | 2 +-
 ...stantStep3-c7995cbc.js => InstallAssistantStep3-0af57804.js} | 2 +-
 ...stantStep4-19fe0142.js => InstallAssistantStep4-7e26f73a.js} | 2 +-
 ...stantStep5-cd0d6d73.js => InstallAssistantStep5-b2a202f7.js} | 2 +-
 ...stantStep6-63d131ad.js => InstallAssistantStep6-e43c3e7d.js} | 2 +-
 ...stantStep7-c6d28ec8.js => InstallAssistantStep7-b34ef3e8.js} | 2 +-
 ...stantStep8-5cdd309f.js => InstallAssistantStep8-b3e6cf23.js} | 2 +-
 ...stantStep9-73a6b1e1.js => InstallAssistantStep9-d4a98914.js} | 2 +-
 ...ate-cfe72ae0.js => InstallAssistantStepTemplate-94e6de56.js} | 2 +-
 ...ChargeConfig-d5bb57b3.js => InstantChargeConfig-e2112668.js} | 2 +-
 .../{LegalSettings-acbf6750.js => LegalSettings-5e742da6.js}    | 2 +-
 ...ementConfig-269dec5d.js => LoadManagementConfig-4beba7d6.js} | 2 +-
 ...qttBridgeConfig-b791fa6d.js => MqttBridgeConfig-767ede3a.js} | 2 +-
 ...nalComponents-4c7d75e4.js => OptionalComponents-2db027fc.js} | 2 +-
 .../{PVChargeConfig-3a73cba8.js => PVChargeConfig-3c28eb46.js}  | 2 +-
 ...argeConfig-76a4970c.js => ScheduledChargeConfig-57a6780f.js} | 2 +-
 web/settings/assets/{Status-f4fe35a1.js => Status-93a3f68a.js}  | 2 +-
 .../assets/{Support-e285335a.js => Support-72a8335a.js}         | 2 +-
 web/settings/assets/{System-83bb0533.js => System-f7b57fb1.js}  | 2 +-
 .../{TestingStore-935625ae.js => TestingStore-5054dca6.js}      | 2 +-
 ...imeChargeConfig-af2bcfdc.js => TimeChargeConfig-ab5615ad.js} | 2 +-
 .../{VehicleConfig-9a14b719.js => VehicleConfig-24e197dd.js}    | 2 +-
 .../{backup_cloud-9329a99f.js => backup_cloud-1b47923e.js}      | 2 +-
 .../{backup_cloud-04652ce0.js => backup_cloud-5874a24b.js}      | 2 +-
 .../{backup_cloud-6fe765b0.js => backup_cloud-883e9c6f.js}      | 2 +-
 .../{backup_cloud-a666a458.js => backup_cloud-daac1944.js}      | 2 +-
 web/settings/assets/{bat-0bb8df4a.js => bat-00e8bf10.js}        | 2 +-
 web/settings/assets/{bat-6d0ee218.js => bat-0c11442d.js}        | 2 +-
 web/settings/assets/{bat-cf017b63.js => bat-162c290a.js}        | 2 +-
 web/settings/assets/{bat-fedfab16.js => bat-2c1be71f.js}        | 2 +-
 web/settings/assets/{bat-22c07366.js => bat-335f86ce.js}        | 2 +-
 web/settings/assets/{bat-15e6188c.js => bat-4396fdbc.js}        | 2 +-
 web/settings/assets/{bat-22feb1cd.js => bat-4e873280.js}        | 2 +-
 web/settings/assets/{bat-7406ff4b.js => bat-507f5980.js}        | 2 +-
 web/settings/assets/{bat-9d704a63.js => bat-59f5bea4.js}        | 2 +-
 web/settings/assets/{bat-aa42df8b.js => bat-60d8181e.js}        | 2 +-
 web/settings/assets/{bat-8e9d3a0e.js => bat-6cc1a65d.js}        | 2 +-
 web/settings/assets/{bat-39076628.js => bat-92f05592.js}        | 2 +-
 web/settings/assets/{bat-f5f1c5c9.js => bat-969d0bb9.js}        | 2 +-
 web/settings/assets/{bat-f3f3bffc.js => bat-9dfb4288.js}        | 2 +-
 web/settings/assets/{bat-59db0757.js => bat-9fb8d430.js}        | 2 +-
 web/settings/assets/{bat-10d75798.js => bat-a49a4454.js}        | 2 +-
 web/settings/assets/{bat-e0e00bd8.js => bat-d12e7970.js}        | 2 +-
 web/settings/assets/{bat-98bc85c9.js => bat-e320f91a.js}        | 2 +-
 web/settings/assets/{bat-0bafcbc8.js => bat-ed840a1e.js}        | 2 +-
 web/settings/assets/{bat-dfa51acd.js => bat-fca7fa69.js}        | 2 +-
 ...at_smart_energy-1b4c5bcf.js => bat_smart_energy-ebb6685e.js} | 2 +-
 .../assets/{chargePoint-ab593928.js => chargePoint-644b57d6.js} | 2 +-
 .../assets/{chargePoint-7134b65e.js => chargePoint-7223868f.js} | 2 +-
 .../assets/{chargePoint-31a8d3d7.js => chargePoint-7936a5d2.js} | 2 +-
 .../assets/{chargePoint-4fed3886.js => chargePoint-91a305f0.js} | 2 +-
 .../assets/{chargePoint-068c7cfc.js => chargePoint-ac96b780.js} | 2 +-
 .../assets/{chargePoint-d4764ca1.js => chargePoint-d7f6fbee.js} | 2 +-
 .../assets/{chargePoint-db08669e.js => chargePoint-e31efd6a.js} | 2 +-
 .../assets/{commands-0379c262.js => commands-e466d316.js}       | 2 +-
 ...tion_counter-fffff7c1.js => consumption_counter-6e6020bd.js} | 2 +-
 .../assets/{counter-39926bb3.js => counter-0ee5dc28.js}         | 2 +-
 .../assets/{counter-edc80b67.js => counter-13bf5f9d.js}         | 2 +-
 .../assets/{counter-2e059c6b.js => counter-22e9869b.js}         | 2 +-
 .../assets/{counter-6f3afe9b.js => counter-24a2a585.js}         | 2 +-
 .../assets/{counter-2f4a0c2e.js => counter-29717c6e.js}         | 2 +-
 .../assets/{counter-070b14da.js => counter-2a4bfe4f.js}         | 2 +-
 .../assets/{counter-c0af0a6f.js => counter-2d8e2f67.js}         | 2 +-
 .../assets/{counter-e6bce9f3.js => counter-4b12cef6.js}         | 2 +-
 .../assets/{counter-8a7db35e.js => counter-4c0ab0fc.js}         | 2 +-
 .../assets/{counter-05d801d4.js => counter-4e37fd97.js}         | 2 +-
 .../assets/{counter-c81118fb.js => counter-4f663cd2.js}         | 2 +-
 .../assets/{counter-037dab68.js => counter-5aa7ad55.js}         | 2 +-
 .../assets/{counter-3806cc52.js => counter-5f57efff.js}         | 2 +-
 .../assets/{counter-b3fc64c6.js => counter-653350a5.js}         | 2 +-
 .../assets/{counter-aa0a6d0b.js => counter-736cb4f3.js}         | 2 +-
 .../assets/{counter-34270a43.js => counter-7465bf58.js}         | 2 +-
 .../assets/{counter-cc4b4212.js => counter-7e14a9b6.js}         | 2 +-
 .../assets/{counter-95f05d0c.js => counter-7f48c4f3.js}         | 2 +-
 .../assets/{counter-ba8a04c3.js => counter-7fb02e03.js}         | 2 +-
 .../assets/{counter-49efe9fc.js => counter-8dc351c2.js}         | 2 +-
 .../assets/{counter-e25a696d.js => counter-8e348c5e.js}         | 2 +-
 .../assets/{counter-58ed9d65.js => counter-93cffdb4.js}         | 2 +-
 .../assets/{counter-e88fdbc7.js => counter-97e1d836.js}         | 2 +-
 .../assets/{counter-c6427879.js => counter-a01dc07b.js}         | 2 +-
 .../assets/{counter-a116f5da.js => counter-a075f077.js}         | 2 +-
 .../assets/{counter-c51eaa64.js => counter-aa646c5e.js}         | 2 +-
 .../assets/{counter-a81ba2a4.js => counter-b02740c3.js}         | 2 +-
 .../assets/{counter-ad28ae65.js => counter-b531c194.js}         | 2 +-
 .../assets/{counter-e64707f3.js => counter-b818a0e4.js}         | 2 +-
 .../assets/{counter-52e01218.js => counter-cfd4ab7b.js}         | 2 +-
 .../assets/{counter-58c72dcf.js => counter-df3ba269.js}         | 2 +-
 .../assets/{counter-c3082628.js => counter-e93d2ded.js}         | 2 +-
 .../assets/{counter_sm-187d65ee.js => counter_sm-d444580b.js}   | 2 +-
 web/settings/assets/{device-f0c7d4c8.js => device-05c79e8f.js}  | 2 +-
 web/settings/assets/{device-5431b4e2.js => device-07bce76f.js}  | 2 +-
 web/settings/assets/{device-8432eab3.js => device-0dd9f712.js}  | 2 +-
 web/settings/assets/{device-fe891142.js => device-105029e4.js}  | 2 +-
 web/settings/assets/{device-ff6c0cb6.js => device-145b29f9.js}  | 2 +-
 web/settings/assets/{device-df9c2f01.js => device-153c0397.js}  | 2 +-
 web/settings/assets/{device-cc94a449.js => device-154407d9.js}  | 2 +-
 web/settings/assets/{device-5286bf60.js => device-1689c8b4.js}  | 2 +-
 web/settings/assets/{device-59c7355d.js => device-16c06238.js}  | 2 +-
 web/settings/assets/{device-574dcaf4.js => device-178b88af.js}  | 2 +-
 web/settings/assets/{device-1b2872e2.js => device-238b0312.js}  | 2 +-
 web/settings/assets/{device-001cee36.js => device-27d4f620.js}  | 2 +-
 web/settings/assets/{device-3e6fa83c.js => device-2fe8b1e8.js}  | 2 +-
 web/settings/assets/{device-713ce8f2.js => device-34634beb.js}  | 2 +-
 web/settings/assets/{device-347eb6dc.js => device-37c8b3a6.js}  | 2 +-
 web/settings/assets/{device-c47ac087.js => device-37d0a80e.js}  | 2 +-
 web/settings/assets/{device-6f112981.js => device-3916a921.js}  | 2 +-
 web/settings/assets/{device-8548059a.js => device-3c4137be.js}  | 2 +-
 web/settings/assets/{device-6f239659.js => device-3cfdf387.js}  | 2 +-
 web/settings/assets/{device-29ca0508.js => device-3d071c9d.js}  | 2 +-
 web/settings/assets/{device-d63e2264.js => device-45302db8.js}  | 2 +-
 web/settings/assets/{device-a70f13a3.js => device-479070eb.js}  | 2 +-
 web/settings/assets/{device-0ab7f57f.js => device-4893179e.js}  | 2 +-
 web/settings/assets/{device-f7f8ffe0.js => device-499140b7.js}  | 2 +-
 web/settings/assets/{device-7f1fc016.js => device-4a532364.js}  | 2 +-
 web/settings/assets/{device-f655ceef.js => device-4ec85d62.js}  | 2 +-
 web/settings/assets/{device-336ae19f.js => device-4f99ee45.js}  | 2 +-
 web/settings/assets/{device-b3c2779b.js => device-509f2f69.js}  | 2 +-
 web/settings/assets/{device-bb1652e9.js => device-5671d970.js}  | 2 +-
 web/settings/assets/{device-1ffd2759.js => device-5a5837b3.js}  | 2 +-
 web/settings/assets/{device-b4913183.js => device-672992d0.js}  | 2 +-
 web/settings/assets/{device-51fdec5d.js => device-69ec948d.js}  | 2 +-
 web/settings/assets/{device-4b1646f2.js => device-6c45f17a.js}  | 2 +-
 web/settings/assets/{device-9b3e153b.js => device-70244985.js}  | 2 +-
 web/settings/assets/{device-e4ac8894.js => device-749aa55b.js}  | 2 +-
 web/settings/assets/{device-40022210.js => device-758be2e4.js}  | 2 +-
 web/settings/assets/{device-0d76517c.js => device-7b6213f9.js}  | 2 +-
 web/settings/assets/{device-bbbcf1a0.js => device-7c155028.js}  | 2 +-
 web/settings/assets/{device-d7bd2ff3.js => device-7cce0a38.js}  | 2 +-
 web/settings/assets/{device-4edac0ac.js => device-86484564.js}  | 2 +-
 web/settings/assets/{device-51c91be0.js => device-8982492f.js}  | 2 +-
 web/settings/assets/{device-4a3195eb.js => device-915faea2.js}  | 2 +-
 web/settings/assets/{device-afc129d5.js => device-9b878950.js}  | 2 +-
 web/settings/assets/{device-9653fe83.js => device-9e1861cf.js}  | 2 +-
 web/settings/assets/{device-d74903aa.js => device-a31ee161.js}  | 2 +-
 web/settings/assets/{device-39bf739d.js => device-a736b02f.js}  | 2 +-
 web/settings/assets/{device-6aa72597.js => device-b17aedaa.js}  | 2 +-
 web/settings/assets/{device-763ad7fc.js => device-b3cb16e9.js}  | 2 +-
 web/settings/assets/{device-7279ce38.js => device-b7f7e745.js}  | 2 +-
 web/settings/assets/{device-80fee4ae.js => device-bc20ec7e.js}  | 2 +-
 web/settings/assets/{device-91630eed.js => device-be934e0d.js}  | 2 +-
 web/settings/assets/{device-3f7e40af.js => device-c78eeb89.js}  | 2 +-
 web/settings/assets/{device-d3b9bc22.js => device-c98adda4.js}  | 2 +-
 web/settings/assets/{device-1b821174.js => device-d267c639.js}  | 2 +-
 web/settings/assets/{device-f06b8715.js => device-d570ea1c.js}  | 2 +-
 web/settings/assets/{device-9cbf003b.js => device-d9bb5f54.js}  | 2 +-
 web/settings/assets/{device-6e3aa19a.js => device-daeba434.js}  | 2 +-
 web/settings/assets/{device-1e35dcd3.js => device-dd4bcdbe.js}  | 2 +-
 web/settings/assets/{device-050e3366.js => device-f4fde594.js}  | 2 +-
 web/settings/assets/{device-79189826.js => device-faf20ca1.js}  | 2 +-
 web/settings/assets/{device-1e1551ac.js => device-fecdf5a2.js}  | 2 +-
 web/settings/assets/{device-5762c828.js => device-ff3ecc78.js}  | 2 +-
 .../{displayTheme-bbed7095.js => displayTheme-17074edc.js}      | 2 +-
 ...ricity_tariff-897c7196.js => electricity_tariff-22a41d6f.js} | 2 +-
 ...ricity_tariff-77492691.js => electricity_tariff-322384b0.js} | 2 +-
 ...ricity_tariff-eb995216.js => electricity_tariff-55c8df75.js} | 2 +-
 ...ricity_tariff-10566180.js => electricity_tariff-9cd88804.js} | 2 +-
 ...ricity_tariff-32db6a64.js => electricity_tariff-d3251994.js} | 2 +-
 ...ernal_inverter-04c9ce87.js => external_inverter-e7f9ab8f.js} | 2 +-
 web/settings/assets/{index-c79666b6.js => index-7731ba98.js}    | 2 +-
 .../assets/{inverter-323c3074.js => inverter-01c5f16a.js}       | 2 +-
 .../assets/{inverter-fb3a6cad.js => inverter-04ce0f8e.js}       | 2 +-
 .../assets/{inverter-46c18816.js => inverter-0656f08c.js}       | 2 +-
 .../assets/{inverter-e0302839.js => inverter-10d93995.js}       | 2 +-
 .../assets/{inverter-18c2474d.js => inverter-1d764ce1.js}       | 2 +-
 .../assets/{inverter-819b1a3e.js => inverter-2ad50b9e.js}       | 2 +-
 .../assets/{inverter-6529a4df.js => inverter-2ad5bc0b.js}       | 2 +-
 .../assets/{inverter-098d4ce8.js => inverter-2b99372c.js}       | 2 +-
 .../assets/{inverter-55ea35ce.js => inverter-36add1ab.js}       | 2 +-
 .../assets/{inverter-5e9ec317.js => inverter-3fb07d9c.js}       | 2 +-
 .../assets/{inverter-6ea218d8.js => inverter-44d982c2.js}       | 2 +-
 .../assets/{inverter-593f3daf.js => inverter-4a9fb2e3.js}       | 2 +-
 .../assets/{inverter-e943d0ae.js => inverter-4d3ecca9.js}       | 2 +-
 .../assets/{inverter-4952d317.js => inverter-6ca6c4db.js}       | 2 +-
 .../assets/{inverter-475ea9be.js => inverter-6fc97f63.js}       | 2 +-
 .../assets/{inverter-7d0a508c.js => inverter-70ec316f.js}       | 2 +-
 .../assets/{inverter-5f9ef8bd.js => inverter-74015266.js}       | 2 +-
 .../assets/{inverter-a17a2665.js => inverter-841afc8e.js}       | 2 +-
 .../assets/{inverter-5ad18beb.js => inverter-921db5a5.js}       | 2 +-
 .../assets/{inverter-fd0dea3e.js => inverter-98558dd2.js}       | 2 +-
 .../assets/{inverter-4f43f74f.js => inverter-9a462865.js}       | 2 +-
 .../assets/{inverter-ce0bf077.js => inverter-9e67cae2.js}       | 2 +-
 .../assets/{inverter-4ae76a42.js => inverter-d05ed81f.js}       | 2 +-
 .../assets/{inverter-cdd963f9.js => inverter-eae9cb6a.js}       | 2 +-
 .../assets/{inverter-cda22a33.js => inverter-f798fcec.js}       | 2 +-
 .../assets/{inverter-fb2c9952.js => inverter-f84aeccd.js}       | 2 +-
 .../assets/{inverter-b4727f0c.js => inverter-f96e48c4.js}       | 2 +-
 ...ter_secondary-8a48b565.js => inverter_secondary-5bbd40e8.js} | 2 +-
 ...receiver-7fecf9d6.js => ripple_control_receiver-46e5ef94.js} | 2 +-
 ...receiver-370883cc.js => ripple_control_receiver-ece22602.js} | 2 +-
 .../assets/{vehicle-79035ef3.js => vehicle-0d6f89c9.js}         | 2 +-
 .../assets/{vehicle-5310b356.js => vehicle-1df80acb.js}         | 2 +-
 .../assets/{vehicle-a7bdb9f9.js => vehicle-22e7da9e.js}         | 2 +-
 .../assets/{vehicle-746a309e.js => vehicle-26433560.js}         | 2 +-
 .../assets/{vehicle-04196ba5.js => vehicle-5b6f9103.js}         | 2 +-
 .../assets/{vehicle-75a99dd5.js => vehicle-5db558eb.js}         | 2 +-
 .../assets/{vehicle-02c16ede.js => vehicle-6b3503e2.js}         | 2 +-
 .../assets/{vehicle-227d6e52.js => vehicle-7e597941.js}         | 2 +-
 .../assets/{vehicle-b5d373a2.js => vehicle-80a82187.js}         | 2 +-
 .../assets/{vehicle-66d2565b.js => vehicle-86ec0def.js}         | 2 +-
 .../assets/{vehicle-84631beb.js => vehicle-96729542.js}         | 2 +-
 .../assets/{vehicle-98331362.js => vehicle-a85dcf53.js}         | 2 +-
 .../assets/{vehicle-2f0703d4.js => vehicle-aa5faddc.js}         | 2 +-
 .../assets/{vehicle-5d3ddd96.js => vehicle-b6bb5ae5.js}         | 2 +-
 .../assets/{vehicle-6bfa0331.js => vehicle-bea8d3ab.js}         | 2 +-
 .../assets/{vehicle-39d84738.js => vehicle-d4731dba.js}         | 2 +-
 .../assets/{vehicle-e9771037.js => vehicle-da0e449c.js}         | 2 +-
 .../assets/{vehicle-2c8076de.js => vehicle-ef7baff9.js}         | 2 +-
 web/settings/index.html                                         | 2 +-
 223 files changed, 221 insertions(+), 221 deletions(-)
 rename web/settings/assets/{ChargeLog-0789f309.js => ChargeLog-97816458.js} (99%)
 delete mode 100644 web/settings/assets/ChargePointInstallation-2f136eb7.js
 create mode 100644 web/settings/assets/ChargePointInstallation-d12c6dc4.js
 rename web/settings/assets/{Chart-f906208b.js => Chart-941d0c7c.js} (99%)
 rename web/settings/assets/{CloudConfig-b33b0184.js => CloudConfig-8f0baa42.js} (99%)
 rename web/settings/assets/{DataManagement-1fb1197d.js => DataManagement-f7ee6dfd.js} (96%)
 rename web/settings/assets/{DebugConfig-6d0524fc.js => DebugConfig-37cd830d.js} (98%)
 delete mode 100644 web/settings/assets/GeneralChargeConfig-764e9a8c.js
 create mode 100644 web/settings/assets/GeneralChargeConfig-9f53f87a.js
 rename web/settings/assets/{GeneralConfig-1687a15a.js => GeneralConfig-7a50fc67.js} (98%)
 rename web/settings/assets/{HardwareInstallation-d2c0f1d5.js => HardwareInstallation-4f848d8b.js} (69%)
 rename web/settings/assets/{InstallAssistant-a3c80ad1.js => InstallAssistant-677c2ffc.js} (69%)
 rename web/settings/assets/{InstallAssistantStep0-500a8cc5.js => InstallAssistantStep0-2077a8df.js} (95%)
 rename web/settings/assets/{InstallAssistantStep1-6470c726.js => InstallAssistantStep1-cef7887d.js} (89%)
 rename web/settings/assets/{InstallAssistantStep10-3d5ac094.js => InstallAssistantStep10-c90437c2.js} (92%)
 rename web/settings/assets/{InstallAssistantStep2-12a3f7a8.js => InstallAssistantStep2-3e3aee9e.js} (89%)
 rename web/settings/assets/{InstallAssistantStep3-c7995cbc.js => InstallAssistantStep3-0af57804.js} (92%)
 rename web/settings/assets/{InstallAssistantStep4-19fe0142.js => InstallAssistantStep4-7e26f73a.js} (92%)
 rename web/settings/assets/{InstallAssistantStep5-cd0d6d73.js => InstallAssistantStep5-b2a202f7.js} (93%)
 rename web/settings/assets/{InstallAssistantStep6-63d131ad.js => InstallAssistantStep6-e43c3e7d.js} (94%)
 rename web/settings/assets/{InstallAssistantStep7-c6d28ec8.js => InstallAssistantStep7-b34ef3e8.js} (93%)
 rename web/settings/assets/{InstallAssistantStep8-5cdd309f.js => InstallAssistantStep8-b3e6cf23.js} (93%)
 rename web/settings/assets/{InstallAssistantStep9-73a6b1e1.js => InstallAssistantStep9-d4a98914.js} (91%)
 rename web/settings/assets/{InstallAssistantStepTemplate-cfe72ae0.js => InstallAssistantStepTemplate-94e6de56.js} (97%)
 rename web/settings/assets/{InstantChargeConfig-d5bb57b3.js => InstantChargeConfig-e2112668.js} (96%)
 rename web/settings/assets/{LegalSettings-acbf6750.js => LegalSettings-5e742da6.js} (97%)
 rename web/settings/assets/{LoadManagementConfig-269dec5d.js => LoadManagementConfig-4beba7d6.js} (99%)
 rename web/settings/assets/{MqttBridgeConfig-b791fa6d.js => MqttBridgeConfig-767ede3a.js} (99%)
 rename web/settings/assets/{OptionalComponents-4c7d75e4.js => OptionalComponents-2db027fc.js} (98%)
 rename web/settings/assets/{PVChargeConfig-3a73cba8.js => PVChargeConfig-3c28eb46.js} (99%)
 rename web/settings/assets/{ScheduledChargeConfig-76a4970c.js => ScheduledChargeConfig-57a6780f.js} (98%)
 rename web/settings/assets/{Status-f4fe35a1.js => Status-93a3f68a.js} (99%)
 rename web/settings/assets/{Support-e285335a.js => Support-72a8335a.js} (99%)
 rename web/settings/assets/{System-83bb0533.js => System-f7b57fb1.js} (98%)
 rename web/settings/assets/{TestingStore-935625ae.js => TestingStore-5054dca6.js} (99%)
 rename web/settings/assets/{TimeChargeConfig-af2bcfdc.js => TimeChargeConfig-ab5615ad.js} (96%)
 rename web/settings/assets/{VehicleConfig-9a14b719.js => VehicleConfig-24e197dd.js} (95%)
 rename web/settings/assets/{backup_cloud-9329a99f.js => backup_cloud-1b47923e.js} (86%)
 rename web/settings/assets/{backup_cloud-04652ce0.js => backup_cloud-5874a24b.js} (92%)
 rename web/settings/assets/{backup_cloud-6fe765b0.js => backup_cloud-883e9c6f.js} (96%)
 rename web/settings/assets/{backup_cloud-a666a458.js => backup_cloud-daac1944.js} (93%)
 rename web/settings/assets/{bat-0bb8df4a.js => bat-00e8bf10.js} (88%)
 rename web/settings/assets/{bat-6d0ee218.js => bat-0c11442d.js} (89%)
 rename web/settings/assets/{bat-cf017b63.js => bat-162c290a.js} (88%)
 rename web/settings/assets/{bat-fedfab16.js => bat-2c1be71f.js} (83%)
 rename web/settings/assets/{bat-22c07366.js => bat-335f86ce.js} (88%)
 rename web/settings/assets/{bat-15e6188c.js => bat-4396fdbc.js} (90%)
 rename web/settings/assets/{bat-22feb1cd.js => bat-4e873280.js} (94%)
 rename web/settings/assets/{bat-7406ff4b.js => bat-507f5980.js} (88%)
 rename web/settings/assets/{bat-9d704a63.js => bat-59f5bea4.js} (91%)
 rename web/settings/assets/{bat-aa42df8b.js => bat-60d8181e.js} (96%)
 rename web/settings/assets/{bat-8e9d3a0e.js => bat-6cc1a65d.js} (87%)
 rename web/settings/assets/{bat-39076628.js => bat-92f05592.js} (87%)
 rename web/settings/assets/{bat-f5f1c5c9.js => bat-969d0bb9.js} (87%)
 rename web/settings/assets/{bat-f3f3bffc.js => bat-9dfb4288.js} (95%)
 rename web/settings/assets/{bat-59db0757.js => bat-9fb8d430.js} (87%)
 rename web/settings/assets/{bat-10d75798.js => bat-a49a4454.js} (83%)
 rename web/settings/assets/{bat-e0e00bd8.js => bat-d12e7970.js} (88%)
 rename web/settings/assets/{bat-98bc85c9.js => bat-e320f91a.js} (89%)
 rename web/settings/assets/{bat-0bafcbc8.js => bat-ed840a1e.js} (81%)
 rename web/settings/assets/{bat-dfa51acd.js => bat-fca7fa69.js} (87%)
 rename web/settings/assets/{bat_smart_energy-1b4c5bcf.js => bat_smart_energy-ebb6685e.js} (88%)
 rename web/settings/assets/{chargePoint-ab593928.js => chargePoint-644b57d6.js} (90%)
 rename web/settings/assets/{chargePoint-7134b65e.js => chargePoint-7223868f.js} (90%)
 rename web/settings/assets/{chargePoint-31a8d3d7.js => chargePoint-7936a5d2.js} (90%)
 rename web/settings/assets/{chargePoint-4fed3886.js => chargePoint-91a305f0.js} (98%)
 rename web/settings/assets/{chargePoint-068c7cfc.js => chargePoint-ac96b780.js} (86%)
 rename web/settings/assets/{chargePoint-d4764ca1.js => chargePoint-d7f6fbee.js} (86%)
 rename web/settings/assets/{chargePoint-db08669e.js => chargePoint-e31efd6a.js} (92%)
 rename web/settings/assets/{commands-0379c262.js => commands-e466d316.js} (93%)
 rename web/settings/assets/{consumption_counter-fffff7c1.js => consumption_counter-6e6020bd.js} (93%)
 rename web/settings/assets/{counter-39926bb3.js => counter-0ee5dc28.js} (85%)
 rename web/settings/assets/{counter-edc80b67.js => counter-13bf5f9d.js} (85%)
 rename web/settings/assets/{counter-2e059c6b.js => counter-22e9869b.js} (83%)
 rename web/settings/assets/{counter-6f3afe9b.js => counter-24a2a585.js} (97%)
 rename web/settings/assets/{counter-2f4a0c2e.js => counter-29717c6e.js} (87%)
 rename web/settings/assets/{counter-070b14da.js => counter-2a4bfe4f.js} (87%)
 rename web/settings/assets/{counter-c0af0a6f.js => counter-2d8e2f67.js} (85%)
 rename web/settings/assets/{counter-e6bce9f3.js => counter-4b12cef6.js} (89%)
 rename web/settings/assets/{counter-8a7db35e.js => counter-4c0ab0fc.js} (88%)
 rename web/settings/assets/{counter-05d801d4.js => counter-4e37fd97.js} (88%)
 rename web/settings/assets/{counter-c81118fb.js => counter-4f663cd2.js} (88%)
 rename web/settings/assets/{counter-037dab68.js => counter-5aa7ad55.js} (96%)
 rename web/settings/assets/{counter-3806cc52.js => counter-5f57efff.js} (92%)
 rename web/settings/assets/{counter-b3fc64c6.js => counter-653350a5.js} (87%)
 rename web/settings/assets/{counter-aa0a6d0b.js => counter-736cb4f3.js} (86%)
 rename web/settings/assets/{counter-34270a43.js => counter-7465bf58.js} (92%)
 rename web/settings/assets/{counter-cc4b4212.js => counter-7e14a9b6.js} (97%)
 rename web/settings/assets/{counter-95f05d0c.js => counter-7f48c4f3.js} (87%)
 rename web/settings/assets/{counter-ba8a04c3.js => counter-7fb02e03.js} (89%)
 rename web/settings/assets/{counter-49efe9fc.js => counter-8dc351c2.js} (90%)
 rename web/settings/assets/{counter-e25a696d.js => counter-8e348c5e.js} (90%)
 rename web/settings/assets/{counter-58ed9d65.js => counter-93cffdb4.js} (82%)
 rename web/settings/assets/{counter-e88fdbc7.js => counter-97e1d836.js} (82%)
 rename web/settings/assets/{counter-c6427879.js => counter-a01dc07b.js} (86%)
 rename web/settings/assets/{counter-a116f5da.js => counter-a075f077.js} (89%)
 rename web/settings/assets/{counter-c51eaa64.js => counter-aa646c5e.js} (88%)
 rename web/settings/assets/{counter-a81ba2a4.js => counter-b02740c3.js} (90%)
 rename web/settings/assets/{counter-ad28ae65.js => counter-b531c194.js} (88%)
 rename web/settings/assets/{counter-e64707f3.js => counter-b818a0e4.js} (90%)
 rename web/settings/assets/{counter-52e01218.js => counter-cfd4ab7b.js} (91%)
 rename web/settings/assets/{counter-58c72dcf.js => counter-df3ba269.js} (85%)
 rename web/settings/assets/{counter-c3082628.js => counter-e93d2ded.js} (92%)
 rename web/settings/assets/{counter_sm-187d65ee.js => counter_sm-d444580b.js} (95%)
 rename web/settings/assets/{device-f0c7d4c8.js => device-05c79e8f.js} (91%)
 rename web/settings/assets/{device-5431b4e2.js => device-07bce76f.js} (87%)
 rename web/settings/assets/{device-8432eab3.js => device-0dd9f712.js} (91%)
 rename web/settings/assets/{device-fe891142.js => device-105029e4.js} (92%)
 rename web/settings/assets/{device-ff6c0cb6.js => device-145b29f9.js} (91%)
 rename web/settings/assets/{device-df9c2f01.js => device-153c0397.js} (88%)
 rename web/settings/assets/{device-cc94a449.js => device-154407d9.js} (91%)
 rename web/settings/assets/{device-5286bf60.js => device-1689c8b4.js} (87%)
 rename web/settings/assets/{device-59c7355d.js => device-16c06238.js} (84%)
 rename web/settings/assets/{device-574dcaf4.js => device-178b88af.js} (90%)
 rename web/settings/assets/{device-1b2872e2.js => device-238b0312.js} (92%)
 rename web/settings/assets/{device-001cee36.js => device-27d4f620.js} (87%)
 rename web/settings/assets/{device-3e6fa83c.js => device-2fe8b1e8.js} (84%)
 rename web/settings/assets/{device-713ce8f2.js => device-34634beb.js} (82%)
 rename web/settings/assets/{device-347eb6dc.js => device-37c8b3a6.js} (90%)
 rename web/settings/assets/{device-c47ac087.js => device-37d0a80e.js} (90%)
 rename web/settings/assets/{device-6f112981.js => device-3916a921.js} (89%)
 rename web/settings/assets/{device-8548059a.js => device-3c4137be.js} (88%)
 rename web/settings/assets/{device-6f239659.js => device-3cfdf387.js} (91%)
 rename web/settings/assets/{device-29ca0508.js => device-3d071c9d.js} (91%)
 rename web/settings/assets/{device-d63e2264.js => device-45302db8.js} (86%)
 rename web/settings/assets/{device-a70f13a3.js => device-479070eb.js} (87%)
 rename web/settings/assets/{device-0ab7f57f.js => device-4893179e.js} (84%)
 rename web/settings/assets/{device-f7f8ffe0.js => device-499140b7.js} (81%)
 rename web/settings/assets/{device-7f1fc016.js => device-4a532364.js} (95%)
 rename web/settings/assets/{device-f655ceef.js => device-4ec85d62.js} (89%)
 rename web/settings/assets/{device-336ae19f.js => device-4f99ee45.js} (89%)
 rename web/settings/assets/{device-b3c2779b.js => device-509f2f69.js} (80%)
 rename web/settings/assets/{device-bb1652e9.js => device-5671d970.js} (87%)
 rename web/settings/assets/{device-1ffd2759.js => device-5a5837b3.js} (95%)
 rename web/settings/assets/{device-b4913183.js => device-672992d0.js} (81%)
 rename web/settings/assets/{device-51fdec5d.js => device-69ec948d.js} (86%)
 rename web/settings/assets/{device-4b1646f2.js => device-6c45f17a.js} (93%)
 rename web/settings/assets/{device-9b3e153b.js => device-70244985.js} (91%)
 rename web/settings/assets/{device-e4ac8894.js => device-749aa55b.js} (91%)
 rename web/settings/assets/{device-40022210.js => device-758be2e4.js} (84%)
 rename web/settings/assets/{device-0d76517c.js => device-7b6213f9.js} (86%)
 rename web/settings/assets/{device-bbbcf1a0.js => device-7c155028.js} (92%)
 rename web/settings/assets/{device-d7bd2ff3.js => device-7cce0a38.js} (91%)
 rename web/settings/assets/{device-4edac0ac.js => device-86484564.js} (86%)
 rename web/settings/assets/{device-51c91be0.js => device-8982492f.js} (91%)
 rename web/settings/assets/{device-4a3195eb.js => device-915faea2.js} (89%)
 rename web/settings/assets/{device-afc129d5.js => device-9b878950.js} (94%)
 rename web/settings/assets/{device-9653fe83.js => device-9e1861cf.js} (89%)
 rename web/settings/assets/{device-d74903aa.js => device-a31ee161.js} (92%)
 rename web/settings/assets/{device-39bf739d.js => device-a736b02f.js} (89%)
 rename web/settings/assets/{device-6aa72597.js => device-b17aedaa.js} (91%)
 rename web/settings/assets/{device-763ad7fc.js => device-b3cb16e9.js} (87%)
 rename web/settings/assets/{device-7279ce38.js => device-b7f7e745.js} (87%)
 rename web/settings/assets/{device-80fee4ae.js => device-bc20ec7e.js} (89%)
 rename web/settings/assets/{device-91630eed.js => device-be934e0d.js} (94%)
 rename web/settings/assets/{device-3f7e40af.js => device-c78eeb89.js} (93%)
 rename web/settings/assets/{device-d3b9bc22.js => device-c98adda4.js} (96%)
 rename web/settings/assets/{device-1b821174.js => device-d267c639.js} (92%)
 rename web/settings/assets/{device-f06b8715.js => device-d570ea1c.js} (86%)
 rename web/settings/assets/{device-9cbf003b.js => device-d9bb5f54.js} (89%)
 rename web/settings/assets/{device-6e3aa19a.js => device-daeba434.js} (84%)
 rename web/settings/assets/{device-1e35dcd3.js => device-dd4bcdbe.js} (89%)
 rename web/settings/assets/{device-050e3366.js => device-f4fde594.js} (92%)
 rename web/settings/assets/{device-79189826.js => device-faf20ca1.js} (92%)
 rename web/settings/assets/{device-1e1551ac.js => device-fecdf5a2.js} (92%)
 rename web/settings/assets/{device-5762c828.js => device-ff3ecc78.js} (91%)
 rename web/settings/assets/{displayTheme-bbed7095.js => displayTheme-17074edc.js} (97%)
 rename web/settings/assets/{electricity_tariff-897c7196.js => electricity_tariff-22a41d6f.js} (89%)
 rename web/settings/assets/{electricity_tariff-77492691.js => electricity_tariff-322384b0.js} (91%)
 rename web/settings/assets/{electricity_tariff-eb995216.js => electricity_tariff-55c8df75.js} (96%)
 rename web/settings/assets/{electricity_tariff-10566180.js => electricity_tariff-9cd88804.js} (94%)
 rename web/settings/assets/{electricity_tariff-32db6a64.js => electricity_tariff-d3251994.js} (91%)
 rename web/settings/assets/{external_inverter-04c9ce87.js => external_inverter-e7f9ab8f.js} (94%)
 rename web/settings/assets/{index-c79666b6.js => index-7731ba98.js} (96%)
 rename web/settings/assets/{inverter-323c3074.js => inverter-01c5f16a.js} (94%)
 rename web/settings/assets/{inverter-fb3a6cad.js => inverter-04ce0f8e.js} (92%)
 rename web/settings/assets/{inverter-46c18816.js => inverter-0656f08c.js} (94%)
 rename web/settings/assets/{inverter-e0302839.js => inverter-10d93995.js} (93%)
 rename web/settings/assets/{inverter-18c2474d.js => inverter-1d764ce1.js} (87%)
 rename web/settings/assets/{inverter-819b1a3e.js => inverter-2ad50b9e.js} (93%)
 rename web/settings/assets/{inverter-6529a4df.js => inverter-2ad5bc0b.js} (90%)
 rename web/settings/assets/{inverter-098d4ce8.js => inverter-2b99372c.js} (81%)
 rename web/settings/assets/{inverter-55ea35ce.js => inverter-36add1ab.js} (81%)
 rename web/settings/assets/{inverter-5e9ec317.js => inverter-3fb07d9c.js} (81%)
 rename web/settings/assets/{inverter-6ea218d8.js => inverter-44d982c2.js} (88%)
 rename web/settings/assets/{inverter-593f3daf.js => inverter-4a9fb2e3.js} (89%)
 rename web/settings/assets/{inverter-e943d0ae.js => inverter-4d3ecca9.js} (87%)
 rename web/settings/assets/{inverter-4952d317.js => inverter-6ca6c4db.js} (89%)
 rename web/settings/assets/{inverter-475ea9be.js => inverter-6fc97f63.js} (89%)
 rename web/settings/assets/{inverter-7d0a508c.js => inverter-70ec316f.js} (91%)
 rename web/settings/assets/{inverter-5f9ef8bd.js => inverter-74015266.js} (83%)
 rename web/settings/assets/{inverter-a17a2665.js => inverter-841afc8e.js} (82%)
 rename web/settings/assets/{inverter-5ad18beb.js => inverter-921db5a5.js} (83%)
 rename web/settings/assets/{inverter-fd0dea3e.js => inverter-98558dd2.js} (88%)
 rename web/settings/assets/{inverter-4f43f74f.js => inverter-9a462865.js} (82%)
 rename web/settings/assets/{inverter-ce0bf077.js => inverter-9e67cae2.js} (91%)
 rename web/settings/assets/{inverter-4ae76a42.js => inverter-d05ed81f.js} (88%)
 rename web/settings/assets/{inverter-cdd963f9.js => inverter-eae9cb6a.js} (91%)
 rename web/settings/assets/{inverter-cda22a33.js => inverter-f798fcec.js} (89%)
 rename web/settings/assets/{inverter-fb2c9952.js => inverter-f84aeccd.js} (90%)
 rename web/settings/assets/{inverter-b4727f0c.js => inverter-f96e48c4.js} (85%)
 rename web/settings/assets/{inverter_secondary-8a48b565.js => inverter_secondary-5bbd40e8.js} (92%)
 rename web/settings/assets/{ripple_control_receiver-7fecf9d6.js => ripple_control_receiver-46e5ef94.js} (88%)
 rename web/settings/assets/{ripple_control_receiver-370883cc.js => ripple_control_receiver-ece22602.js} (79%)
 rename web/settings/assets/{vehicle-79035ef3.js => vehicle-0d6f89c9.js} (87%)
 rename web/settings/assets/{vehicle-5310b356.js => vehicle-1df80acb.js} (97%)
 rename web/settings/assets/{vehicle-a7bdb9f9.js => vehicle-22e7da9e.js} (87%)
 rename web/settings/assets/{vehicle-746a309e.js => vehicle-26433560.js} (88%)
 rename web/settings/assets/{vehicle-04196ba5.js => vehicle-5b6f9103.js} (92%)
 rename web/settings/assets/{vehicle-75a99dd5.js => vehicle-5db558eb.js} (86%)
 rename web/settings/assets/{vehicle-02c16ede.js => vehicle-6b3503e2.js} (89%)
 rename web/settings/assets/{vehicle-227d6e52.js => vehicle-7e597941.js} (91%)
 rename web/settings/assets/{vehicle-b5d373a2.js => vehicle-80a82187.js} (82%)
 rename web/settings/assets/{vehicle-66d2565b.js => vehicle-86ec0def.js} (91%)
 rename web/settings/assets/{vehicle-84631beb.js => vehicle-96729542.js} (93%)
 rename web/settings/assets/{vehicle-98331362.js => vehicle-a85dcf53.js} (89%)
 rename web/settings/assets/{vehicle-2f0703d4.js => vehicle-aa5faddc.js} (95%)
 rename web/settings/assets/{vehicle-5d3ddd96.js => vehicle-b6bb5ae5.js} (88%)
 rename web/settings/assets/{vehicle-6bfa0331.js => vehicle-bea8d3ab.js} (89%)
 rename web/settings/assets/{vehicle-39d84738.js => vehicle-d4731dba.js} (91%)
 rename web/settings/assets/{vehicle-e9771037.js => vehicle-da0e449c.js} (94%)
 rename web/settings/assets/{vehicle-2c8076de.js => vehicle-ef7baff9.js} (96%)

diff --git a/web/settings/assets/ChargeLog-0789f309.js b/web/settings/assets/ChargeLog-97816458.js
similarity index 99%
rename from web/settings/assets/ChargeLog-0789f309.js
rename to web/settings/assets/ChargeLog-97816458.js
index f64c15aeb6..756b9de94b 100644
--- a/web/settings/assets/ChargeLog-0789f309.js
+++ b/web/settings/assets/ChargeLog-97816458.js
@@ -1,3 +1,3 @@
-import{l as R,T as k,U as x,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,$ as S,u as g,k as h,l as u,x as i,D as d,N as s,A as V,B as I,y as c,z as n,M as _,q as w}from"./vendor-a21b3a62.js";import{C as W}from"./index-c79666b6.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";R.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:E},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
+import{l as R,T as k,U as x,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,$ as S,u as g,k as h,l as u,x as i,D as d,N as s,A as V,B as I,y as c,z as n,M as _,q as w}from"./vendor-a21b3a62.js";import{C as W}from"./index-7731ba98.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";R.add(k,x);const F={name:"OpenwbChargeLogView",components:{Vue3TableLite:S,FontAwesomeIcon:E},mixins:[W],emits:["sendCommand"],data(){return{dateTimeFormat:new Intl.DateTimeFormat("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/charge_log_data_config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentMonth:"",chargeLogRequestData:{month:"",year:"",filter:{chargepoint:{id:[]},vehicle:{id:[],rfid:[],chargemode:[],prio:void 0}}},downloadFile:null,table:{messages:{pagingInfo:"Einträge {0}-{1} von {2}",pageSizeChangeLabel:"Einträge:",gotoPageLabel:" Gehe zu:",noDataAvailable:"Keine Einträge gefunden."},pageOptions:[{value:5,text:"5"},{value:10,text:"10"},{value:25,text:"25"},{value:50,text:"50"},{value:100,text:"100"}],columns:[{label:"Beginn",field:"time_begin",sortable:!0},{label:"Ende",field:"time_end",sortable:!0},{label:"Dauer",field:"time_time_charged",sortable:!0},{label:"Kosten",field:"data_costs",sortable:!0},{label:"Energieaufteilung",field:"data_power_source",sortable:!1},{label:"Fahrzeug",field:"vehicle_name",sortable:!0},{label:"Lademodus",field:"vehicle_chargemode",sortable:!0},{label:"Priorität",field:"vehicle_prio",sortable:!0},{label:"ID-Tag",field:"vehicle_rfid",sortable:!0},{label:"SoC Beginn",field:"vehicle_soc_at_start",sortable:!0},{label:"SoC Ende",field:"vehicle_soc_at_end",sortable:!0},{label:"Ladepunkt",field:"chargepoint_name",sortable:!0},{label:"Seriennummer",field:"chargepoint_serial_number",sortable:!0},{label:"Energie",field:"data_imported_since_mode_switch",sortable:!0},{label:"Zähler Beginn",field:"chargepoint_imported_at_start",sortable:!0},{label:"Zähler Ende",field:"chargepoint_imported_at_end",sortable:!0}],sortable:{order:"timestamp_begin",sort:"asc"}},totals:{columns:[{label:"Dauer",field:"time_charged",sortable:!1},{label:"Energie",field:"imported_since_mode_switch",sortable:!1},{label:"Reichweite",field:"range_charged",sortable:!1},{label:"Kosten",field:"costs",sortable:!1}]}}},computed:{mqttClientId(){return this.$root.mqttClientId},downloadUrl(){const t=parseInt(location.port)||(location.protocol=="https:"?443:80);return`${location.protocol}//${location.hostname}:${t}/openWB/web/settings/downloadChargeLog.php`+`?year=${this.chargeLogRequestData.year}&month=${this.chargeLogRequestData.month}`},chargeLogDate:{get(){return this.chargeLogRequestData.year+"-"+this.chargeLogRequestData.month},set(t){let e=t.split("-");this.chargeLogRequestData.year=e[0],this.chargeLogRequestData.month=e[1]}},chargeLogTotals(){return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]?[this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].totals]:[]},chargeLogColumns(){return this.table.columns.map(t=>({...t,headerClasses:this.addClasses(t.field),columnClasses:this.addClasses(t.field)}))},chargeLogDataset:{get(){if(this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"]==null)return[];try{return this.$store.state.mqtt["openWB/log/"+this.mqttClientId+"/data"].entries.map(t=>{var e=Date.parse(t.time.begin),o=Date.parse(t.time.end);return{chargepoint_id:t.chargepoint.id,chargepoint_name:t.chargepoint.name,chargepoint_imported_at_start:t.chargepoint.imported_at_start,chargepoint_imported_at_end:t.chargepoint.imported_at_end,chargepoint_serial_number:t.chargepoint.serial_number,vehicle_id:t.vehicle.id,vehicle_name:t.vehicle.name,vehicle_chargemode:this.translateChargeMode(t.vehicle.chargemode),vehicle_rfid:t.vehicle.rfid,vehicle_prio:t.vehicle.prio,vehicle_soc_at_start:t.vehicle.soc_at_start,vehicle_soc_at_end:t.vehicle.soc_at_end,vehicle_range_at_start:t.vehicle.range_at_start,vehicle_range_at_end:t.vehicle.range_at_end,timestamp_begin:e/1e3,time_begin:isNaN(e)?null:this.dateTimeFormat.format(new Date(e)),timestamp_end:o/1e3,time_end:isNaN(o)?null:this.dateTimeFormat.format(new Date(o)),time_time_charged:t.time.time_charged,data_power_source:t.data.power_source?{pv:t.data.power_source.pv*100,grid:t.data.power_source.grid*100,bat:t.data.power_source.bat*100,cp:t.data.power_source.cp*100}:void 0,data_range_charged:t.data.range_charged,data_costs:t.data.costs,data_imported_since_plugged:t.data.imported_since_plugged,data_imported_since_mode_switch:t.data.imported_since_mode_switch}})}catch(t){return console.error(t),[]}}},chargeLogCsv:{get(){return[['"Beginn"','"Ende"','"Zeitstempel Beginn"','"Zeitstempel Ende"','"Dauer"','"Kosten"','"Energieanteil Netz"','"Energieanteil Ladepunkte"','"Energieanteil Speicher"','"Energieanteil PV"','"Fahrzeug"','"Fahrzeug-ID"','"Lademodus"','"Priorität"','"ID-Tag"','"SoC Beginn"','"SoC Ende"','"Reichweite Beginn"','"Reichweite Ende"','"Ladepunkt"','"Ladepunkt-ID"','"Zähler Seriennummer"','"Energie"','"Reichweite"','"Zählerstand Beginn"','"Zählerstand Ende"','"Energie seit Anstecken"'],...this.chargeLogDataset.map(e=>[e.time_begin==null?"":'"'+e.time_begin+'"',e.time_end==null?"":'"'+e.time_end+'"',e.timestamp_begin==null||isNaN(e.timestamp_begin)?"":e.timestamp_begin,e.timestamp_end==null||isNaN(e.timestamp_end)?"":e.timestamp_end,'"'+e.time_time_charged+'"',this.formatCosts(e.data_costs,!1),e.data_power_source==null?"":this.formatNumber(e.data_power_source.grid,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.cp,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.bat,2),e.data_power_source==null?"":this.formatNumber(e.data_power_source.pv,2),'"'+e.vehicle_name+'"',e.vehicle_id,'"'+e.vehicle_chargemode+'"','"'+this.formatBool(e.vehicle_prio)+'"',e.vehicle_rfid==null?"":'"'+e.vehicle_rfid+'"',e.vehicle_soc_at_start==null?"":this.formatNumber(e.vehicle_soc_at_start,0),e.vehicle_soc_at_end==null?"":this.formatNumber(e.vehicle_soc_at_end,0),e.vehicle_range_at_start==null?"":this.formatNumber(e.vehicle_range_at_start,0),e.vehicle_range_at_end==null?"":this.formatNumber(e.vehicle_range_at_end,0),'"'+e.chargepoint_name+'"',e.chargepoint_id,e.chargepoint_serial_number==null?"":'"'+e.chargepoint_serial_number+'"',this.formatNumber(e.data_imported_since_mode_switch/1e3,2),this.formatNumber(e.data_range_charged,0),this.formatNumber(e.chargepoint_imported_at_start/1e3,2),this.formatNumber(e.chargepoint_imported_at_end/1e3,2),this.formatNumber(e.data_imported_since_plugged/1e3,2)])].map(e=>e.join(";")).join(`
 `)+`
 `}},chargeLogRead:{get(){return this.chargeLogDataset!=null}},chargeLogHasEntries:{get(){return this.chargeLogDataset==null?!1:this.chargeLogDataset.length>0}},totalRecordCount(){return this.chargeLogDataset.length},chargeModeList(){let t=this.chargeModes.map(e=>({value:e,text:this.translateChargeMode(e)}));return t.unshift({value:void 0,text:"Alle"}),t},chargePointList(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[{value:void 0,text:"Alle"}];for(const[,o]of Object.entries(t))e.push({value:o.id,text:o.name});return e},vehicleList(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[{value:void 0,text:"Alle"}];for(const[o,p]of Object.entries(t)){let l=parseInt(o.match(/\/([0-9]+)\/name$/)[1]);e.push({value:l,text:p})}return e}},beforeMount(){this.mqttTopicsToSubscribe.push("openWB/log/"+this.mqttClientId+"/data")},mounted(){const t=new Date;this.currentMonth=this.chargeLogDate=t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0"),this.requestChargeLog()},methods:{cleanRequestData(){"id"in this.chargeLogRequestData.filter.chargepoint&&(this.chargeLogRequestData.filter.chargepoint.id=this.chargeLogRequestData.filter.chargepoint.id.filter(t=>t!=null)),"chargemode"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.chargemode=this.chargeLogRequestData.filter.vehicle.chargemode.filter(t=>t!=null)),"id"in this.chargeLogRequestData.filter.vehicle&&(this.chargeLogRequestData.filter.vehicle.id=this.chargeLogRequestData.filter.vehicle.id.filter(t=>t!=null))},requestChargeLog(){if(document.forms.chargeLogForm.reportValidity())this.cleanRequestData(),this.$emit("sendCommand",{command:"getChargeLog",data:this.chargeLogRequestData});else{console.warn("form invalid");return}},makeTextFile(t){var e=new Blob([t],{type:"text/csv"});return this.downloadFile!==null&&window.URL.revokeObjectURL(this.downloadFile),this.downloadFile=window.URL.createObjectURL(e),this.downloadFile},downloadChargeLog(){this.$refs.downloadChargeLogLink.setAttribute("download","Ladeprotokoll-"+this.chargeLogDate+".csv"),this.$refs.downloadChargeLogLink.href=this.makeTextFile(this.chargeLogCsv),this.$refs.downloadChargeLogLink.dispatchEvent(new MouseEvent("click"))},addClasses(t){return this.$store.state.mqtt["openWB/general/charge_log_data_config"]!==void 0&&Object.hasOwn(this.$store.state.mqtt["openWB/general/charge_log_data_config"],t)?this.$store.state.mqtt["openWB/general/charge_log_data_config"][t]?[]:["d-none"]:[]},getProgressTitle(t){return`Netz: ${this.formatNumber(t.grid,0,0)}%, Ladepunkte: ${this.formatNumber(t.cp,0,0)}%, Speicher: ${this.formatNumber(t.bat,0,0)}%, PV: ${this.formatNumber(t.pv,0,0)}%`},formatBool(t){return t?"Ja":"Nein"},formatW(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kW":o},formatWh(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t/1e3,2));return e?o+"kWh":o},formatRange(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"km":o},formatSoc(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,0));return e?o+"%":o},formatCosts(t,e=!0){let o=this.dashIfNotSet(this.formatNumber(t,2));return e?o+"€":o},dashIfNotSet(t){return t==null||t==""||t==null?"-":t},getChargeModeClass(t){switch(t){case"Sofort":return"bg-danger";case"PV":return"bg-success";case"Zielladen":return"bg-primary";case"Zeitladen":return"bg-warning";case"Standby":return"bg-secondary";case"Stop":return"bg-dark";default:return console.warn("unknown charge mode:",t),"bg-light"}}}},T={class:"chargeLog"},U={name:"chargeLogForm"},y=["href"],M={key:1},P={class:"td-end"},z={class:"td-end"},O=["title"],A=["aria-valuenow"],Z=["aria-valuenow"],j=["aria-valuenow"],K=["aria-valuenow"],J={key:1,class:"td-center"},G={class:"td-end"},H={class:"no-wrap"},Y={class:"no-wrap"},Q={class:"td-end"},X={class:"no-wrap"},$={class:"no-wrap"},ee={class:"td-end"},te={class:"no-wrap"},ae={class:"no-wrap"},re={class:"td-end"},ie={class:"td-end"},se={key:0},oe={class:"row justify-content-center"},ne={ref:"downloadChargeLogLink",class:"hide"},le={class:"td-end"},de={class:"td-end"},ce={class:"td-end"},ge={class:"td-end"};function he(t,e,o,p,l,r){const C=g("openwb-base-text-input"),f=g("font-awesome-icon"),D=g("openwb-base-button-group-input"),m=g("openwb-base-select-input"),q=g("openwb-base-array-input"),v=g("openwb-base-card"),b=g("openwb-base-alert"),L=g("vue3-table-lite"),N=g("openwb-base-click-button");return h(),u("div",T,[i("form",U,[d(v,{title:"Filter"},{default:s(()=>[d(C,{modelValue:r.chargeLogDate,"onUpdate:modelValue":[e[0]||(e[0]=a=>r.chargeLogDate=a),e[1]||(e[1]=a=>r.requestChargeLog())],title:"Zeitraum",subtype:"month",min:"2018-01","show-quick-buttons":!0,max:l.currentMonth},null,8,["modelValue","max"]),d(v,{title:"Erweiterte Optionen",collapsible:!0,collapsed:!0},{header:s(()=>[d(f,{"fixed-width":"",icon:["fas","filter"]}),e[13]||(e[13]=c(" Erweiterte Optionen "))]),default:s(()=>[d(D,{modelValue:l.chargeLogRequestData.filter.vehicle.prio,"onUpdate:modelValue":[e[2]||(e[2]=a=>l.chargeLogRequestData.filter.vehicle.prio=a),e[3]||(e[3]=a=>r.requestChargeLog())],title:"Priorität",buttons:[{buttonValue:void 0,text:"Alle"},{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"]),d(m,{modelValue:l.chargeLogRequestData.filter.vehicle.chargemode,"onUpdate:modelValue":[e[4]||(e[4]=a=>l.chargeLogRequestData.filter.vehicle.chargemode=a),e[5]||(e[5]=a=>r.requestChargeLog())],title:"Lademodus",multiple:"",options:r.chargeModeList},{help:s(()=>e[14]||(e[14]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(m,{modelValue:l.chargeLogRequestData.filter.chargepoint.id,"onUpdate:modelValue":[e[6]||(e[6]=a=>l.chargeLogRequestData.filter.chargepoint.id=a),e[7]||(e[7]=a=>r.requestChargeLog())],title:"Ladepunkt",multiple:"",options:r.chargePointList},{help:s(()=>e[15]||(e[15]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(m,{modelValue:l.chargeLogRequestData.filter.vehicle.id,"onUpdate:modelValue":[e[8]||(e[8]=a=>l.chargeLogRequestData.filter.vehicle.id=a),e[9]||(e[9]=a=>r.requestChargeLog())],title:"Fahrzeug",multiple:"",options:r.vehicleList},{help:s(()=>e[16]||(e[16]=[c(" Es können mehrere Elemente ausgewählt werden. ")])),_:1},8,["modelValue","options"]),d(q,{modelValue:l.chargeLogRequestData.filter.vehicle.tag,"onUpdate:modelValue":[e[10]||(e[10]=a=>l.chargeLogRequestData.filter.vehicle.tag=a),e[11]||(e[11]=a=>r.requestChargeLog())],title:"ID-Tags"},{help:s(()=>e[17]||(e[17]=[c(" Es können mehrere Tags als Filter verwendet werden. ")])),_:1},8,["modelValue"])]),_:1})]),_:1}),d(b,{subtype:"info"},{default:s(()=>[e[18]||(e[18]=c(" Das komplette Ladeprotokoll kann automatisiert über folgende URL abgerufen werden: ")),i("a",{href:r.downloadUrl},n(r.downloadUrl),9,y)]),_:1}),r.chargeLogRead?(h(),u("div",M,[d(L,{class:"charge-log-table","is-static-mode":!0,columns:r.chargeLogColumns,rows:r.chargeLogDataset,total:r.totalRecordCount,sortable:l.table.sortable,messages:l.table.messages,"page-options":l.table.pageOptions,limit:25,"is-slot-mode":!0},{time_begin:s(a=>[c(n(r.dashIfNotSet(a.value.time_begin)),1)]),time_end:s(a=>[c(n(r.dashIfNotSet(a.value.time_end)),1)]),time_time_charged:s(a=>[i("div",P,n(a.value.time_time_charged),1)]),data_costs:s(a=>[i("div",z,n(r.formatCosts(a.value.data_costs)),1)]),data_power_source:s(a=>[a.value.data_power_source?(h(),u("div",{key:0,class:"progress td-center",title:r.getProgressTitle(a.value.data_power_source)},[i("div",{class:"progress-bar bg-danger",role:"progressbar",style:_({width:a.value.data_power_source.grid+"%"}),"aria-valuenow":a.value.data_power_source.grid,"aria-valuemin":"0","aria-valuemax":"100"},null,12,A),i("div",{class:"progress-bar bg-primary",role:"progressbar",style:_({width:a.value.data_power_source.cp+"%"}),"aria-valuenow":a.value.data_power_source.cp,"aria-valuemin":"0","aria-valuemax":"100"},null,12,Z),i("div",{class:"progress-bar bg-warning",role:"progressbar",style:_({width:a.value.data_power_source.bat+"%"}),"aria-valuenow":a.value.data_power_source.bat,"aria-valuemin":"0","aria-valuemax":"100"},null,12,j),i("div",{class:"progress-bar bg-success",role:"progressbar",style:_({width:a.value.data_power_source.pv+"%"}),"aria-valuenow":a.value.data_power_source.pv,"aria-valuemin":"0","aria-valuemax":"100"},null,12,K)],8,O)):(h(),u("div",J," - "))]),vehicle_chargemode:s(a=>[i("div",{class:w(["td-center tag",r.getChargeModeClass(a.value.vehicle_chargemode)])},n(a.value.vehicle_chargemode),3)]),vehicle_prio:s(a=>[i("div",{class:w(["td-center tag",a.value.vehicle_prio?"bg-success":"bg-danger"])},n(r.formatBool(a.value.vehicle_prio)),3)]),vehicle_rfid:s(a=>[c(n(r.dashIfNotSet(a.value.vehicle_rfid)),1)]),vehicle_soc_at_start:s(a=>[i("div",G,[i("span",H,n(r.formatSoc(a.value.vehicle_soc_at_start)),1),i("span",Y," ("+n(r.formatRange(a.value.vehicle_range_at_start))+") ",1)])]),vehicle_soc_at_end:s(a=>[i("div",Q,[i("span",X,n(r.formatSoc(a.value.vehicle_soc_at_end)),1),i("span",$," ("+n(r.formatRange(a.value.vehicle_range_at_end))+") ",1)])]),chargepoint_name:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_name)),1)]),chargepoint_serial_number:s(a=>[c(n(r.dashIfNotSet(a.value.chargepoint_serial_number)),1)]),data_imported_since_mode_switch:s(a=>[i("div",ee,[i("span",te,n(r.formatWh(a.value.data_imported_since_mode_switch)),1),i("span",ae," ("+n(r.formatRange(a.value.data_range_charged))+") ",1)])]),chargepoint_imported_at_start:s(a=>[i("div",re,n(r.formatWh(a.value.chargepoint_imported_at_start)),1)]),chargepoint_imported_at_end:s(a=>[i("div",ie,n(r.formatWh(a.value.chargepoint_imported_at_end)),1)]),_:1},8,["columns","rows","total","sortable","messages","page-options"]),r.totalRecordCount>0?(h(),u("div",se,[i("div",oe,[d(N,{class:"col-4 btn-success",onButtonClicked:e[12]||(e[12]=a=>r.downloadChargeLog())},{default:s(()=>[e[20]||(e[20]=c(" Als CSV exportieren ")),d(f,{"fixed-width":"",icon:["fas","download"]})]),_:1}),i("a",ne,null,512)]),e[21]||(e[21]=i("div",{class:"row"},[i("div",{class:"col"},[i("h2",null,"Summe")])],-1)),d(L,{class:"charge-log-totals","is-static-mode":!0,"is-hide-paging":!0,columns:l.totals.columns,rows:r.chargeLogTotals,total:1,"is-slot-mode":!0},{time_charged:s(a=>[i("div",le,n(a.value.time_charged),1)]),imported_since_mode_switch:s(a=>[i("div",de,n(r.formatWh(a.value.imported_since_mode_switch)),1)]),range_charged:s(a=>[i("div",ce,n(r.formatRange(a.value.range_charged)),1)]),costs:s(a=>[i("div",ge,n(r.formatCosts(a.value.costs)),1)]),_:1},8,["columns","rows"])])):I("",!0)])):(h(),V(b,{key:0,subtype:"info"},{default:s(()=>e[19]||(e[19]=[c(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const Le=B(F,[["render",he],["__scopeId","data-v-8607e7e7"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargeLog.vue"]]);export{Le as default};
diff --git a/web/settings/assets/ChargePointInstallation-2f136eb7.js b/web/settings/assets/ChargePointInstallation-2f136eb7.js
deleted file mode 100644
index 03aa77e523..0000000000
--- a/web/settings/assets/ChargePointInstallation-2f136eb7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{l as H,d as G,a0 as Q,A as X,a9 as Y,aa as K,K as ee,ab as te,F as ne,I as ae}from"./vendor-fortawesome-41164876.js";import{_ as V,C as oe}from"./index-c79666b6.js";import{_ as I}from"./dynamic-import-helper-be004503.js";import{_ as S,u as h,k as l,l as p,A as _,N as o,y as s,z as w,D as a,x as d,a0 as E,a1 as D,J as A,K as x,B as c,q as M,a2 as O,P as le}from"./vendor-a21b3a62.js";const ie={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=S(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[se]},ue={class:"charge-point-config-fallback"},de={key:1};function pe(t,e,m,y,g,u){const k=h("openwb-base-alert"),f=h("openwb-base-textarea");return l(),p("div",ue,[Object.keys(t.chargePoint.configuration).length==0?(l(),_(k,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),p("div",de,[a(k,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=L=>t.updateConfiguration(L,"configuration"))},{help:o(()=>e[1]||(e[1]=[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const me=S(re,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={props:{chargePoint:{type:Object,required:!0}}},he=S(ge,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),ce={name:"ChargePointCommandsFallback",mixins:[he]},be={class:"charge-point-commands-fallback"};function fe(t,e,m,y,g,u){const k=h("openwb-base-alert");return l(),p("div",be,[a(k,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const _e=S(ce,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),ve={name:"OpenwbChargePointProxy",props:{chargePoint:{required:!0,type:Object}},emits:["update:configuration"],computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),E({loader:()=>I(Object.assign({"./external_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-31a8d3d7.js"),["assets/chargePoint-31a8d3d7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-db08669e.js"),["assets/chargePoint-db08669e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>V(()=>import("./chargePoint-4fed3886.js"),["assets/chargePoint-4fed3886.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>V(()=>import("./chargePoint-068c7cfc.js"),["assets/chargePoint-068c7cfc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>V(()=>import("./chargePoint-d4764ca1.js"),["assets/chargePoint-d4764ca1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>V(()=>import("./chargePoint-7134b65e.js"),["assets/chargePoint-7134b65e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>V(()=>import("./chargePoint-ab593928.js"),["assets/chargePoint-ab593928.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:me})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),E({loader:()=>I(Object.assign({"./openwb_pro/commands.vue":()=>V(()=>import("./commands-0379c262.js"),["assets/commands-0379c262.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:_e})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function we(t,e,m,y,g,u){const k=h("openwb-base-heading");return l(),p(A,null,[a(k,null,{default:o(()=>[s(' Einstellungen für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointSettingsComponent),{"charge-point":m.chargePoint,"onUpdate:configuration":e[0]||(e[0]=f=>u.updateConfiguration(f))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[s(' Befehle für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),_(D(u.myChargePointCommandsComponent),{"charge-point":m.chargePoint},null,8,["charge-point"]))],64)}const ke=S(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);H.add(G,Q,X,Y,K,ee,te);const Ce={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:ke},mixins:[oe],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[m,y]of Object.entries(t))(y.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[m]=y);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let m=parseInt(e.match(/([0-9]+)/g)[0]),y=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;t.push({value:m,text:y})}),t}}},methods:{addChargePoint(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&(console.debug("request removal of charge point '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}}))},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(t,e,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"' autolock plan '"+e+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}}))},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Le={key:1},Be={key:0},We={class:"col-1"},Ae={key:0},Se={key:1},Ue={key:1},xe={key:0},Te={key:2},ze={key:4},qe=["onClick"],Ie={key:0},Ee={key:1},De={key:2},Me={key:2};function Oe(t,e,m,y,g,u){const k=h("openwb-base-modal-dialog"),f=h("font-awesome-icon"),L=h("openwb-base-avatar"),P=h("openwb-base-text-input"),T=h("openwb-base-select-input"),F=h("openwb-charge-point-proxy"),B=h("openwb-base-heading"),C=h("openwb-base-button-group-input"),U=h("openwb-base-card"),N=h("openwb-base-click-button"),$=h("font-awesome-layers"),z=h("openwb-base-alert"),j=h("openwb-base-array-input"),q=h("openwb-base-range-input"),R=h("openwb-base-number-input"),Z=h("openwb-base-submit-buttons");return l(),p(A,null,[a(k,{show:g.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=i=>u.removeChargePoint(g.modalChargePointIndex,i))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(g.modalChargePointIndex))+'" (ID: '+w(g.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:g.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=i=>u.removeChargePointTemplate(g.modalChargePointTemplateIndex,i))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(g.modalChargePointTemplateIndex))+'" (ID: '+w(g.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:g.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=i=>u.removeChargePointTemplateAutolockPlan(g.modalChargePointTemplateIndex,g.modalChargePointTemplateAutolockPlanIndex,i))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(g.modalChargePointTemplateIndex,g.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",ye,[d("form",Pe,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[a(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=s(" Ladepunkte "))]),default:o(()=>[(l(!0),p(A,null,x(u.installedChargePoints,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+i.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?c("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":n=>t.updateState(r,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[r].type},null,8,["model-value"]),i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),p("span",Ve,[a(T,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[r].template,"onUpdate:modelValue":n=>t.updateState(r,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("",!0),e[13]||(e[13]=d("hr",null,null,-1)),a(F,{"charge-point":i,"onUpdate:configuration":n=>u.updateConfiguration(r,n)},null,8,["charge-point","onUpdate:configuration"]),(i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&i.charging_type!=="DC"?(l(),p("div",Le,[e[12]||(e[12]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[8]||(e[8]=[s(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[9]||(e[9]=[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{default:o(()=>[...e[10]||(e[10]=[s(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.connected_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":i.phase_1,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_1")},{help:o(()=>[...e[11]||(e[11]=[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(l(),p("hr",Be)):c("",!0),a(T,{class:"mb-2",title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":g.chargePointToAdd,"onUpdate:modelValue":e[3]||(e[3]=i=>g.chargePointToAdd=i)},{append:o(()=>[d("span",We,[a(N,{class:M(g.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:g.chargePointToAdd===void 0,onButtonClicked:u.addChargePoint},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>e[14]||(e[14]=[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),d("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),d("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),e[37]||(e[37]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a($,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[15]||(e[15]=s(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),_(L,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),p("div",Ae,[a(z,{subtype:"info"},{default:o(()=>e[16]||(e[16]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),p("div",Se,[(l(!0),p(A,null,x(u.chargePointTemplates,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+u.getChargePointTemplateIndex(r)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[a(P,{title:"Bezeichnung",subtype:"text","model-value":i.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},O({_:2},[r.endsWith("/0")?{name:"help",fn:o(()=>[e[17]||(e[17]=s(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(l(),_(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":i.charging_type,"onUpdate:modelValue":n=>t.updateState(r,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):c("",!0),e[34]||(e[34]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[18]||(e[18]=[s(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(r,n,"disable_after_unplug")},{help:o(()=>[...e[19]||(e[19]=[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(l(),p("div",Ue,[i.disable_after_unplug?(l(),_(j,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":i.valid_tags,"onUpdate:modelValue":n=>t.updateState(r,n,"valid_tags")},{help:o(()=>[...e[20]||(e[20]=[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):c("",!0)])):c("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[21]||(e[21]=[s(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(z,{subtype:"info"},{default:o(()=>[e[22]||(e[22]=s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[23]||(e[23]=d("br",null,null,-1)),e[24]||(e[24]=s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),i.charging_type==="AC"?(l(),p("span",xe," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):c("",!0),e[25]||(e[25]=d("br",null,null,-1)),e[26]||(e[26]=s(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[27]||(e[27]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[28]||(e[28]=s(" beschrieben. "))]),_:2},1024),i.charging_type==="AC"||u.dcChargingEnabled!==!0?(l(),p("div",Te,[a(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(l(),_(R,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),e[36]||(e[36]=d("hr",null,null,-1)),m.installAssistantActive?c("",!0):(l(),p("div",ze,[e[33]||(e[33]=d("hr",null,null,-1)),a(B,null,{default:o(()=>[...e[29]||(e[29]=[s(" Automatische Sperre ")])]),_:1}),a(C,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.active,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.active")},{help:o(()=>[...e[30]||(e[30]=[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[31]||(e[31]=[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(B,null,{actions:o(()=>[a(L,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(r,n)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[32]||(e[32]=s(" Zeitpläne für die automatische Sperre "))]),_:2},1024)])),(l(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(r),(n,v)=>(l(),_(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(l(),p("span",{key:0,class:M(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:le(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(f,{"fixed-width":"",icon:["fas","clock"]}),s(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(l(),p("span",Ie,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):c("",!0),n.frequency.selected=="daily"?(l(),p("span",Ee,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("",!0),n.frequency.selected=="weekly"?(l(),p("span",De,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("",!0)],10,qe)):c("",!0),b.collapsed==!1?(l(),_(L,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(r,v,W)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("",!0)]),default:o(()=>[a(P,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(P,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(l(),_(P,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("",!0),n.frequency.selected=="once"?(l(),_(P,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("",!0),n.frequency.selected=="weekly"?(l(),p("div",Me,[(l(!0),p(A,null,x(t.weekdays,(b,W)=>(l(),_(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":J=>t.updateState(v,J,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?c("",!0):(l(),_(L,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(Z,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=i=>t.$emit("save")),onReset:e[5]||(e[5]=i=>t.$emit("reset")),onDefaults:e[6]||(e[6]=i=>t.$emit("defaults"))})])])],64)}const Fe=S(Ce,[["render",Oe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));export{se as C,he as a,Fe as b,Ze as c};
diff --git a/web/settings/assets/ChargePointInstallation-d12c6dc4.js b/web/settings/assets/ChargePointInstallation-d12c6dc4.js
new file mode 100644
index 0000000000..892c44306f
--- /dev/null
+++ b/web/settings/assets/ChargePointInstallation-d12c6dc4.js
@@ -0,0 +1 @@
+import{l as H,d as G,a0 as Q,A as X,a9 as Y,aa as K,K as ee,ab as te,F as ne,I as ae}from"./vendor-fortawesome-41164876.js";import{_ as V,C as oe}from"./index-7731ba98.js";import{_ as z}from"./dynamic-import-helper-be004503.js";import{_ as S,u as h,k as l,l as p,A as _,N as o,y as s,z as w,D as a,x as d,a0 as D,a1 as E,J as A,K as x,B as c,q as M,a2 as O,P as le}from"./vendor-a21b3a62.js";const ie={props:{chargePoint:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=S(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointConfigMixin.vue"]]),re={name:"ChargePointConfigFallback",mixins:[se]},ue={class:"charge-point-config-fallback"},de={key:1};function pe(t,e,m,P,g,u){const k=h("openwb-base-alert"),f=h("openwb-base-textarea");return l(),p("div",ue,[Object.keys(t.chargePoint.configuration).length==0?(l(),_(k,{key:0,subtype:"info"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),p("div",de,[a(k,{subtype:"warning"},{default:o(()=>[s(' Es wurde keine Konfigurationsseite für den Ladepunkt-Typ "'+w(t.chargePoint.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(f,{title:"Konfiguration",subtype:"json","model-value":t.chargePoint.configuration,"onUpdate:modelValue":e[0]||(e[0]=B=>t.updateConfiguration(B,"configuration"))},{help:o(()=>e[1]||(e[1]=[s(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(k,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.chargePoint.configuration,void 0,2)),1)]),_:1})]))])}const me=S(re,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointConfigFallback.vue"]]),ge={props:{chargePoint:{type:Object,required:!0}}},ce=S(ge,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/ChargePointCommandsMixin.vue"]]),he={name:"ChargePointCommandsFallback",mixins:[ce]},be={class:"charge-point-commands-fallback"};function fe(t,e,m,P,g,u){const k=h("openwb-base-alert");return l(),p("div",be,[a(k,{subtype:"secondary"},{default:o(()=>[s(' Der Ladepunkt-Typ "'+w(t.chargePoint.type)+'" bietet keine Befehle an. ',1)]),_:1})])}const _e=S(he,[["render",fe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointCommandsFallback.vue"]]),ve={name:"OpenwbChargePointProxy",props:{chargePoint:{required:!0,type:Object}},emits:["update:configuration"],computed:{myChargePointSettingsComponent(){return console.debug(`loading charge point settings: ${this.chargePoint.type}`),D({loader:()=>z(Object.assign({"./external_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-7936a5d2.js"),["assets/chargePoint-7936a5d2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./internal_openwb/chargePoint.vue":()=>V(()=>import("./chargePoint-e31efd6a.js"),["assets/chargePoint-e31efd6a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/chargePoint.vue":()=>V(()=>import("./chargePoint-91a305f0.js"),["assets/chargePoint-91a305f0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_dc_adapter/chargePoint.vue":()=>V(()=>import("./chargePoint-ac96b780.js"),["assets/chargePoint-ac96b780.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_pro/chargePoint.vue":()=>V(()=>import("./chargePoint-d7f6fbee.js"),["assets/chargePoint-d7f6fbee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb_series2_satellit/chargePoint.vue":()=>V(()=>import("./chargePoint-7223868f.js"),["assets/chargePoint-7223868f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartwb/chargePoint.vue":()=>V(()=>import("./chargePoint-644b57d6.js"),["assets/chargePoint-644b57d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/chargePoint.vue`),errorComponent:me})},myChargePointCommandsComponent(){return console.debug(`loading charge point commands: ${this.chargePoint.type}`),D({loader:()=>z(Object.assign({"./openwb_pro/commands.vue":()=>V(()=>import("./commands-e466d316.js"),["assets/commands-e466d316.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.chargePoint.type}/commands.vue`),errorComponent:_e})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function we(t,e,m,P,g,u){const k=h("openwb-base-heading");return l(),p(A,null,[a(k,null,{default:o(()=>[s(' Einstellungen für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),_(E(u.myChargePointSettingsComponent),{"charge-point":m.chargePoint,"onUpdate:configuration":e[0]||(e[0]=f=>u.updateConfiguration(f))},null,40,["charge-point"])),e[1]||(e[1]=d("hr",null,null,-1)),a(k,null,{default:o(()=>[s(' Befehle für Ladepunkt Typ "'+w(m.chargePoint.type)+'" ',1)]),_:1}),(l(),_(E(u.myChargePointCommandsComponent),{"charge-point":m.chargePoint},null,8,["charge-point"]))],64)}const ke=S(ve,[["render",we],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/charge_points/OpenwbChargePointProxy.vue"]]);H.add(G,Q,X,Y,K,ee,te);const Ce={name:"OpenwbChargePointInstallationView",components:{FontAwesomeIcon:ne,FontAwesomeLayers:ae,OpenwbChargePointProxy:ke},mixins:[oe],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/ocpp/config","openWB/optional/rfid/active","openWB/chargepoint/+/config","openWB/chargepoint/template/+","openWB/chargepoint/template/+/autolock/+","openWB/system/configurable/chargepoints","openWB/system/configurable/chargepoints_internal"],chargePointToAdd:void 0,showChargePointModal:!1,modalChargePointIndex:void 0,showChargePointTemplateModal:!1,modalChargePointTemplateIndex:void 0,showChargePointTemplateAutolockPlanModal:!1,modalChargePointTemplateAutolockPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},installedChargePoints:{get(){let t=this.getWildcardTopics("openWB/chargepoint/+/config"),e={};for(const[m,P]of Object.entries(t))(P.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(e[m]=P);return e}},chargePointTemplates:{get(){return this.getWildcardTopics("openWB/chargepoint/template/+")}},chargePointTemplateList:{get(){let t=[];return Object.keys(this.chargePointTemplates).forEach(e=>{let m=parseInt(e.match(/([0-9]+)/g)[0]),P=this.$store.state.mqtt["openWB/chargepoint/template/"+m].name;t.push({value:m,text:P})}),t}}},methods:{addChargePoint(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepoint",data:{type:this.chargePointToAdd}})},removeChargePointModal(t,e){e.stopPropagation(),this.modalChargePointIndex=parseInt(t.match(/(?:\/)(\d+)(?=\/)/)[1]),this.showChargePointModal=!0},removeChargePoint(t,e){this.showChargePointModal=!1,e=="confirm"&&(console.debug("request removal of charge point '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepoint",data:{id:t}}))},getChargePointList(){return this.$store.state.mqtt["openWB/general/extern"]===!1?this.$store.state.mqtt["openWB/system/configurable/chargepoints"]:this.$store.state.mqtt["openWB/system/configurable/chargepoints_internal"]},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getChargePointTemplateName(t){return this.$store.state.mqtt["openWB/chargepoint/template/"+t]?this.$store.state.mqtt["openWB/chargepoint/template/"+t].name:"Profil "+t},addChargePointTemplate(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addChargepointTemplate",data:{}})},getChargePointTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargePointTemplateModal(t,e){e.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.showChargePointTemplateModal=!0},removeChargePointTemplate(t,e){this.showChargePointTemplateModal=!1,e=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargepointTemplate",data:{id:t}}))},addChargePointTemplateAutolockPlan(t,e){e.stopPropagation(),console.info("requesting new charge point template autolock plan...");let m=this.getChargePointTemplateIndex(t);this.$emit("sendCommand",{command:"addAutolockPlan",data:{template:m}})},removeChargePointTemplateAutolockPlanModal(t,e,m){m.stopPropagation(),this.modalChargePointTemplateIndex=this.getChargePointTemplateIndex(t),this.modalChargePointTemplateAutolockPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargePointTemplateAutolockPlanModal=!0},removeChargePointTemplateAutolockPlan(t,e,m){this.showChargePointTemplateAutolockPlanModal=!1,m=="confirm"&&(console.debug("request removal of chargePoint template '"+t+"' autolock plan '"+e+"'"),this.$emit("sendCommand",{command:"removeAutolockPlan",data:{template:t,plan:e}}))},getChargePointTemplateAutolockPlanName(t,e){return this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e]?this.$store.state.mqtt["openWB/chargepoint/template/"+t+"/autolock/"+e].name:"Autolock Zeitplan "+t+"/"+e},getChargePointTemplateAutolockPlans(t){let e=this.getChargePointTemplateIndex(t);return this.getWildcardTopics("openWB/chargepoint/template/"+e+"/autolock/+")},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},ye={class:"chargePointInstallation"},Pe={name:"chargePointInstallationForm"},Ve={key:0},Be={key:2},Le={key:0},We={class:"col-1"},Ae={key:0},Se={key:1},Ue={key:1},xe={key:0},Te={key:2},Ie={key:4},qe=["onClick"],ze={key:0},De={key:1},Ee={key:2},Me={key:2};function Oe(t,e,m,P,g,u){const k=h("openwb-base-modal-dialog"),f=h("font-awesome-icon"),B=h("openwb-base-avatar"),y=h("openwb-base-text-input"),T=h("openwb-base-select-input"),F=h("openwb-charge-point-proxy"),L=h("openwb-base-heading"),C=h("openwb-base-button-group-input"),U=h("openwb-base-card"),N=h("openwb-base-click-button"),$=h("font-awesome-layers"),I=h("openwb-base-alert"),j=h("openwb-base-array-input"),q=h("openwb-base-range-input"),R=h("openwb-base-number-input"),Z=h("openwb-base-submit-buttons");return l(),p(A,null,[a(k,{show:g.showChargePointModal,title:"Ladepunkt löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=i=>u.removeChargePoint(g.modalChargePointIndex,i))},{default:o(()=>[s(' Wollen Sie den Ladepunkt "'+w(u.getChargePointName(g.modalChargePointIndex))+'" (ID: '+w(g.modalChargePointIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:g.showChargePointTemplateModal,title:"Ladepunkt-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=i=>u.removeChargePointTemplate(g.modalChargePointTemplateIndex,i))},{default:o(()=>[s(' Wollen Sie das Ladepunkt-Profil "'+w(u.getChargePointTemplateName(g.modalChargePointTemplateIndex))+'" (ID: '+w(g.modalChargePointTemplateIndex)+") wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ",1)]),_:1},8,["show"]),a(k,{show:g.showChargePointTemplateAutolockPlanModal,title:"Autolock Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=i=>u.removeChargePointTemplateAutolockPlan(g.modalChargePointTemplateIndex,g.modalChargePointTemplateAutolockPlanIndex,i))},{default:o(()=>[s(' Wollen Sie den Autolock Zeitplan "'+w(u.getChargePointTemplateAutolockPlanName(g.modalChargePointTemplateIndex,g.modalChargePointTemplateAutolockPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),d("div",ye,[d("form",Pe,[a(U,{title:"Ladepunkte",subtype:"primary",collapsible:!0,collapsed:!m.installAssistantActive},{header:o(()=>[a(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[7]||(e[7]=s(" Ladepunkte "))]),default:o(()=>[(l(!0),p(A,null,x(u.installedChargePoints,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+i.id+")",collapsible:!0,collapsed:!0,subtype:"primary"},{actions:o(n=>[n.collapsed?c("",!0):(l(),_(B,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:o(()=>[a(y,{title:"Bezeichnung",subtype:"text","model-value":i.name,"onUpdate:modelValue":n=>t.updateState(r,n,"name")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Modul",subtype:"text",disabled:"",readonly:"","model-value":t.$store.state.mqtt[r].type},null,8,["model-value"]),i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),p("span",Ve,[a(T,{title:"Ladepunkt-Profil",options:u.chargePointTemplateList,"model-value":t.$store.state.mqtt[r].template,"onUpdate:modelValue":n=>t.updateState(r,n,"template")},null,8,["options","model-value","onUpdate:modelValue"])])):c("",!0),t.$store.state.mqtt["openWB/optional/ocpp/config"].active===!0?(l(),_(y,{key:1,title:"OCPP-Chargebox ID","model-value":i.ocpp_chargebox_id,"onUpdate:modelValue":n=>t.updateState(r,n,"ocpp_chargebox_id")},{help:o(()=>[...e[8]||(e[8]=[s(" Bitte geben Sie hier die Chargebox ID ein, die im OCPP_Backend für diesen Ladepunkt verwendet wird. Sollen die Daten dieses Ladepunktes nicht an ein OCPP-Backend übertragen werden, lasse dieses Feld leer. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):c("",!0),e[14]||(e[14]=d("hr",null,null,-1)),a(F,{"charge-point":i,"onUpdate:configuration":n=>u.updateConfiguration(r,n)},null,8,["charge-point","onUpdate:configuration"]),(i.type!=="internal_openwb"||t.$store.state.mqtt["openWB/general/extern"]===!1)&&i.charging_type!=="DC"?(l(),p("div",Be,[e[13]||(e[13]=d("hr",null,null,-1)),a(L,null,{default:o(()=>[...e[9]||(e[9]=[s(" Hardware-Optionen ")])]),_:1}),a(C,{title:"automatische Phasenumschaltung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.auto_phase_switch_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"auto_phase_switch_hw")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Control-Pilot-Unterbrechung vorhanden",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.control_pilot_interruption_hw,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_hw")},{help:o(()=>[...e[10]||(e[10]=[s(' Die Control-Pilot-Leitung ist im Ladekabel integriert und dient der Steuerung der Fahrzeugladung (An/Aus/Stromvorgaben). Bei einigen Fahrzeugen können durch die Regelung erzwungene, längere Ladestopps (z.B. beim PV-Laden) zu unerwünschten "Einschlaf"-Effekten des Fahrzeuges führen. Mit diesem feature, welches hardwareseitig verbaut sein muss, kann ein Abstecken des Ladesteckers simuliert werden, um ein Aufwecken des Fahrzeuges zu ermöglichen. Die Funktion hängt immer auch vom Fahrzeugtyp ab. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:o(()=>[...e[11]||(e[11]=[s(" Elektrischer Anschluss ")])]),_:1}),a(C,{title:"Anzahl angeschlossener Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":i.connected_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"connected_phases")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Phase 1 des Ladekabels",buttons:[{buttonValue:1,text:"EVU L1"},{buttonValue:2,text:"EVU L2"},{buttonValue:3,text:"EVU L3"}],"model-value":i.phase_1,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_1")},{help:o(()=>[...e[12]||(e[12]=[s(" Hier ist anzugeben, an welcher Phase des Hausanschlusses (EVU-Punkt) die Phase 1 dieses Ladepunktes angeschlossen ist. Diese Information wird für das Lastmanagement benötigt, um bei einer Schieflast gezielt einzelne Ladepunkte zu drosseln."),d("br",null,null,-1),s(' Bei mehreren Ladepunkten macht es Sinn, die Phasen der LP rotierend anzuschließen, damit mehrere "nicht-dreiphasig" ladende Fahrzeuge mit optimaler Leistung laden können, bevor das Lastmanagement eingreift.'),d("br",null,null,-1),s(" Es wird vorausgesetzt, dass das Drehfeld innerhalb der Installation gleich bleibt. Wenn z.B. L1 des Ladepunktes auf EVU-L2 liegt, muss L2 des Ladepunktes auf EVU-L3 aufgelegt sein (und L3 des Ladepunktes auf EVU-L1)."),d("br",null,null,-1),s(" Eine Möglichkeit, die zur Ladepunktphase L1 zugehörige EVU-Phase zu ermitteln, ist eine einphasige Ladung zu starten und die Phasenströme am EVU-Zähler zu beobachten. Mit einem zweiphasig ladenden Fahrzeug kann danach auch der Anschluss von L2 ermittelt und so das Drehfeld kontrolliert werden."),d("br",null,null,-1),s(" Im Zweifel bitte das Drehfeld von einer Fachkraft prüfen und korrigieren lassen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):c("",!0)]),_:2},1032,["title"]))),128)),Object.keys(u.installedChargePoints).length>0?(l(),p("hr",Le)):c("",!0),a(T,{class:"mb-2",title:"Verfügbare Ladepunkte","not-selected":"Bitte auswählen",options:u.getChargePointList(),"model-value":g.chargePointToAdd,"onUpdate:modelValue":e[3]||(e[3]=i=>g.chargePointToAdd=i)},{append:o(()=>[d("span",We,[a(N,{class:M(g.chargePointToAdd===void 0?"btn-outline-success":"btn-success"),disabled:g.chargePointToAdd===void 0,onButtonClicked:u.addChargePoint},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:o(()=>e[15]||(e[15]=[s(" Bitte einen Ladepunkt auswählen, der der openWB-Regelung hinzugefügt werden soll."),d("br",null,null,-1),d("ul",null,[d("li",null," Interne openWB - wenn diese openWB über einen verbauten Ladepunkt mit Regelcontroller verfügt (z.B. Standard(+), Custom, Duo, Buchse, NICHT Standalone); ansonsten immer anlegen, egal ob diese openWB steuert = primary oder ferngesteuert wird = secondary "),d("li",null," Externe openWB - wenn diese openWB (primary) die Fernsteuerung von externen openWB (secondary) übernimmt "),d("li",null," MQTT-Ladepunkt - nur zur Nutzung des openWB-Simulators zugelassen "),d("li",null," openWB Pro - wenn diese openWB (primary) die Fernsteuerung einer openWB Pro (secondary) übernimmt "),d("li",null," openWB series2 Satellit/Satellit Duo - wenn diese openWB (primary) die Fernsteuerung einer openWB series2 Satellit/Satellit Duo (secondary) übernimmt "),d("li",null," smartWB/EVSE-Wifi - wenn diese openWB (primary) die Fernsteuerung einer smartWB/EVSE-Wifi übernimmt ")],-1)])),_:1},8,["options","model-value"])]),_:1},8,["collapsed"]),e[38]||(e[38]=d("hr",{class:"border-secondary"},null,-1)),a(U,{title:"Ladepunkt-Profile",collapsible:!0,collapsed:!0},{header:o(()=>[a($,{"fixed-width":"",class:"fa-lg"},{default:o(()=>[a(f,{"fixed-width":"",icon:["far","file"]}),a(f,{"fixed-width":"",icon:["fas","charging-station"],transform:"shrink-8"})]),_:1}),e[16]||(e[16]=s(" Ladepunkt-Profile "))]),actions:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),_(B,{key:0,class:"bg-success clickable",onClick:u.addChargePointTemplate},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):c("",!0)]),default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),p("div",Ae,[a(I,{subtype:"info"},{default:o(()=>e[17]||(e[17]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),p("div",Se,[(l(!0),p(A,null,x(u.chargePointTemplates,(i,r)=>(l(),_(U,{key:r,title:i.name+" (ID: "+u.getChargePointTemplateIndex(r)+")",collapsible:!0,collapsed:!0},O({default:o(()=>[a(y,{title:"Bezeichnung",subtype:"text","model-value":i.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},O({_:2},[r.endsWith("/0")?{name:"help",fn:o(()=>[e[18]||(e[18]=s(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),u.dcChargingEnabled===!0?(l(),_(C,{key:0,title:"Typ des Ladeprofils",buttons:[{buttonValue:"AC",text:"AC"},{buttonValue:"DC",text:"DC"}],"model-value":i.charging_type,"onUpdate:modelValue":n=>t.updateState(r,n,"charging_type")},null,8,["model-value","onUpdate:modelValue"])):c("",!0),e[35]||(e[35]=d("hr",null,null,-1)),a(L,null,{default:o(()=>[...e[19]||(e[19]=[s(" Zugangskontrolle ")])]),_:1}),a(C,{title:"Sperre nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":i.disable_after_unplug,"onUpdate:modelValue":n=>t.updateState(r,n,"disable_after_unplug")},{help:o(()=>[...e[20]||(e[20]=[s(" Sperrt den Ladepunkt nach Abstecken eines Fahrzeuges ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!m.installAssistantActive?(l(),p("div",Ue,[i.disable_after_unplug?(l(),_(j,{key:0,title:"Zugeordnete ID-Tags","no-elements-message":"Keine ID-Tags zugeordnet.","model-value":i.valid_tags,"onUpdate:modelValue":n=>t.updateState(r,n,"valid_tags")},{help:o(()=>[...e[21]||(e[21]=[s(" Die hier eingetragenen ID-Tags dienen ausschließlich zum Entsperren des Ladepunktes. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):c("",!0)])):c("",!0),e[36]||(e[36]=d("hr",null,null,-1)),a(L,null,{default:o(()=>[...e[22]||(e[22]=[s(" Angaben zum konfigurierten Ladestrom der openWB ")])]),_:1}),a(I,{subtype:"info"},{default:o(()=>[e[23]||(e[23]=s(" Hier werden die maximalen Ladeströme entsprechend der in dem zugeordneten Ladepunkt genutzten Phasen eingestellt.")),e[24]||(e[24]=d("br",null,null,-1)),e[25]||(e[25]=s(" Generell gilt, dass diese Werte in Übereinstimmung mit der Ausführung des Ladepunktes und des elektrischen Anschlusses bzw. der Absicherung zu wählen sind. ")),i.charging_type==="AC"?(l(),p("span",xe," Bei einer openWB mit 22kW Maximalleistung sind hier jeweils 32A einzustellen. Ist die openWB beispielsweise auf 11kW begrenzt (KfW-Förderung oder die Zuleitung ist mit 16A abgesichert), dann sind hier jeweils 16A einzustellen. ")):c("",!0),e[26]||(e[26]=d("br",null,null,-1)),e[27]||(e[27]=s(" Komplexere Installationen mit mehreren Ladepunkten werden im ")),e[28]||(e[28]=d("a",{href:"https://github.com/openWB/core/wiki/Lastmanagement-und-kaskadierte-Z%C3%A4hler",target:"_blank",rel:"noopener noreferrer"},"Wiki zum Lastmanagement",-1)),e[29]||(e[29]=s(" beschrieben. "))]),_:2},1024),i.charging_type==="AC"||u.dcChargingEnabled!==!0?(l(),p("div",Te,[a(q,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":i.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(q,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":i.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"])])):(l(),_(R,{key:3,title:"Maximalleistung",min:75,max:300,step:75,unit:"kW",precision:5,"model-value":t.ac_current2dc_power(i.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])),e[37]||(e[37]=d("hr",null,null,-1)),m.installAssistantActive?c("",!0):(l(),p("div",Ie,[e[34]||(e[34]=d("hr",null,null,-1)),a(L,null,{default:o(()=>[...e[30]||(e[30]=[s(" Automatische Sperre ")])]),_:1}),a(C,{title:"Automatische Sperre aktiv",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.active,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.active")},{help:o(()=>[...e[31]||(e[31]=[s(" Wird die automatische Sperre aktiviert, können Fahrzeugladungen mittels Zeitplan auf gewünschte Zeitbereiche eingeschränkt werden. Dies kann z.B. bei Zugänglichkeiten zu Ladepunkten in öffentlichen oder halb-öffentlichen Bereichen sinnvoll sein. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(C,{title:"Erst nach Ladeende sperren",buttons:[{buttonValue:!1,text:"Nein"},{buttonValue:!0,text:"Ja"}],"model-value":i.autolock.wait_for_charging_end,"onUpdate:modelValue":n=>t.updateState(r,n,"autolock.wait_for_charging_end")},{help:o(()=>[...e[32]||(e[32]=[s(' Wenn ein Zeitplan die automatische Sperre aktiviert, werden alle Ladepunkte direkt gesperrt und laufende Ladevorgänge beendet. Wird hier "Ja" ausgewählt, dann werden laufende Ladevorgänge NICHT beendet und diese Ladepunkte erst nach abgeschlossener Ladung gesperrt. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{actions:o(()=>[a(B,{class:"bg-success clickable",onClick:n=>u.addChargePointTemplateAutolockPlan(r,n)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),default:o(()=>[e[33]||(e[33]=s(" Zeitpläne für die automatische Sperre "))]),_:2},1024)])),(l(!0),p(A,null,x(u.getChargePointTemplateAutolockPlans(r),(n,v)=>(l(),_(U,{key:v,title:n.name,collapsible:!0,collapsed:!0},{actions:o(b=>[b.collapsed==!0?(l(),p("span",{key:0,class:M(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:le(W=>t.updateState(v,!n.active,"active"),["stop"])},[a(f,{"fixed-width":"",icon:["fas","clock"]}),s(" "+w(n.time[0])+" - "+w(n.time[1])+" ",1),n.frequency.selected=="once"?(l(),p("span",ze,[a(f,{"fixed-width":"",icon:["fas","calendar-day"]}),s(" "+w(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):c("",!0),n.frequency.selected=="daily"?(l(),p("span",De,[a(f,{"fixed-width":"",icon:["fas","calendar-week"]})])):c("",!0),n.frequency.selected=="weekly"?(l(),p("span",Ee,[a(f,{"fixed-width":"",icon:["fas","calendar-alt"]})])):c("",!0)],10,qe)):c("",!0),b.collapsed==!1?(l(),_(B,{key:1,class:"bg-danger clickable",onClick:W=>u.removeChargePointTemplateAutolockPlanModal(r,v,W)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):c("",!0)]),default:o(()=>[a(y,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":b=>t.updateState(v,b,"name")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":b=>t.updateState(v,b,"active")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Sperren um",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":b=>t.updateState(v,b,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(y,{title:"Freigeben um",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":b=>t.updateState(v,b,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(C,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(l(),_(y,{key:0,title:"Sperren ab ...",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):c("",!0),n.frequency.selected=="once"?(l(),_(y,{key:1,title:"... bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":b=>t.updateState(v,b,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):c("",!0),n.frequency.selected=="weekly"?(l(),p("div",Me,[(l(!0),p(A,null,x(t.weekdays,(b,W)=>(l(),_(C,{key:W,title:b,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[W],"onUpdate:modelValue":J=>t.updateState(v,J,"frequency.weekly."+W)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):c("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:o(n=>[n.collapsed?c("",!0):(l(),_(B,{key:0,class:"bg-danger clickable",onClick:v=>u.removeChargePointTemplateModal(r,v)},{default:o(()=>[a(f,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(Z,{"form-name":"chargePointInstallationForm",onSave:e[4]||(e[4]=i=>t.$emit("save")),onReset:e[5]||(e[5]=i=>t.$emit("reset")),onDefaults:e[6]||(e[6]=i=>t.$emit("defaults"))})])])],64)}const Fe=S(Ce,[["render",Oe],["__scopeId","data-v-75fe5743"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ChargePointInstallation.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));export{se as C,ce as a,Fe as b,Ze as c};
diff --git a/web/settings/assets/Chart-f906208b.js b/web/settings/assets/Chart-941d0c7c.js
similarity index 99%
rename from web/settings/assets/Chart-f906208b.js
rename to web/settings/assets/Chart-941d0c7c.js
index 99dacce78a..fc414c3602 100644
--- a/web/settings/assets/Chart-f906208b.js
+++ b/web/settings/assets/Chart-941d0c7c.js
@@ -1 +1 @@
-import{l as L,K as T,P as H,O,N as q,V as j,W as M,F as V}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-c79666b6.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-5fa56b74.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,q,j,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[4]||(t[4]=[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[3]||(t[3]=[f(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
+import{l as L,K as T,P as H,O,N as q,V as j,W as M,F as V}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-7731ba98.js";import{C as P,p as E,a as B,L as K,b as N,B as F,f as J,P as $,c as X,T as Z,i as G,d as U,e as Y,g as Q}from"./vendor-chartjs-5fa56b74.js";import{_ as ee,u as p,k as o,l as s,x as A,D as l,N as c,A as m,y as f,J as k,K as x,z as C,B as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";L.add(T,H,O,q,j,M);P.register(E,B,K,N,F,J,$,X,Z,G,U);const te={name:"OpenwbChartView",components:{ChartjsLine:Y,FontAwesomeIcon:V},mixins:[z],props:{initialChartRange:{type:String,required:!1,validator:function(e){return["day","month","year"].indexOf(e)!==-1},default:"day"},initialDate:{type:String,required:!1,validator:function(e){return e.match(/^(([0-9]{4})(-[0-9]{2}(-[0-9]{2})?)?)?$/g)},default:""}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/log/daily/#","openWB/log/monthly/#","openWB/log/yearly/#","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name"],currentDate:"",chartRange:"day",blockChartInit:!1,chartRequestDate:{day:"",month:"",year:""},datasetTemplates:{"counter-power_average":{label:"Zähler",unit:"kW",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_imported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"counter-energy_exported":{label:"Zähler",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 255, 105, 0.7)",backgroundColor:"rgba(0, 255, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-power_exported":{label:"PV",unit:"kW",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"inverter-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"pv-energy_exported":{label:"PV",unit:"kWh",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(10, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"inverter-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-power_average":{label:"Speicher",unit:"kW",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"battery-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_imported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-energy_exported":{label:"Speicher",unit:"kWh",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"battery-exported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"bat-soc":{label:"Speicher SoC",unit:"%",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(200, 255, 13, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-power_average":{label:"Ladepunkt",unit:"kW",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",stack:"charge-point-power",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported":{label:"Ladepunkt",unit:"kWh",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",stack:"charge-point-imported",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_grid":{label:"Ladepunkt (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_pv":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"cp-energy_imported_bat":{label:"Ladepunkt (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"charge-point-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"ev-soc":{label:"Fahrzeug SoC",unit:"%",jsonKey:null,borderColor:"rgba(0, 0, 255, 0.7)",backgroundColor:"rgba(0, 0, 255, 0.3)",borderDash:[10,5],hidden:!0,fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",borderWidth:2,data:null,yAxisID:"y3",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-power_average":{label:"SmartHome",unit:"kW",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_imported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"sh-energy_exported":{label:"SmartHome",unit:"kWh",jsonKey:null,borderColor:"rgba(232, 62, 140, 0.7)",backgroundColor:"rgba(232, 72, 150, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-power_imported":{label:"Hausverbrauch",unit:"kW",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported":{label:"Hausverbrauch",unit:"kWh",jsonKey:null,borderColor:"rgba(120, 122, 124, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:1,data:null,yAxisID:"y2",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_grid":{label:"Hausverbrauch (Netzanteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_pv":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(40, 167, 69, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}},"hc-energy_imported_bat":{label:"Hausverbrauch (PV-Anteil)",unit:"kWh",type:"bar",jsonKey:null,borderColor:"rgba(253, 126, 20, 0.7)",backgroundColor:"rgba(120, 122, 124, 0.3)",fill:!0,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!0,borderWidth:3,data:null,yAxisID:"y2",stack:"hc-energy-imported-source",parsing:{xAxisKey:"timestamp",yAxisKey:null}}},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0,callbacks:{label:e=>`${e.dataset.label}: ${e.formattedValue} ${e.dataset.unit}`}},legend:{display:!0},zoom:{pan:{enabled:!0,mode:"x",threshold:5},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"",tooltipFormat:""},display:!0,title:{display:!0,text:""},ticks:{source:"timestamp",font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Leistung [kW]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y2:{position:"left",type:"linear",display:"auto",suggestedMin:0,suggestedMax:0,title:{font:{size:12},display:!0,text:"Energie [kWh]"},grid:{},ticks:{font:{size:12},stepSize:.2,maxTicksLimit:11}},y3:{position:"right",type:"linear",display:"auto",suggestedMin:0,suggestedMax:100,title:{font:{size:12},display:!0,text:"SoC [%]"},grid:{display:!1},ticks:{font:{size:12},stepSize:10,maxTicksLimit:11}}}},chartDatasets:{datasets:[]}}},computed:{dateInput(){var e={title:"Datum",type:"date",min:"2018-01-01"};switch(this.chartRange){case"month":e={title:"Monat",type:"month",min:"2018-01"};break;case"year":e={title:"Jahr",type:"year",min:"2018"};break}return e},chartDate:{get(){var e=this.chartRequestDate.year;return this.chartRange!="year"&&(e=e+"-"+this.chartRequestDate.month),this.chartRange=="day"&&(e=e+"-"+this.chartRequestDate.day),e},set(e){let t=e.split("-");this.chartRequestDate.year=t[0],t.length>1?this.chartRequestDate.month=t[1]:this.chartRequestDate.month="",t.length>2?this.chartRequestDate.day=t[2]:this.chartRequestDate.day=""}},chartScaleX(){var e={unit:"minute",tooltipFormat:"DD T",text:"Zeit",maxTicksLimit:24};switch(this.chartRange){case"month":e={unit:"day",tooltipFormat:"DD",text:"Tag",maxTicksLimit:31};break;case"year":e={unit:"month",tooltipFormat:"LLLL yyyy",text:"Monat",maxTicksLimit:12};break}return e},commandData(){var e={date:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day,day:this.chartRequestDate.year+this.chartRequestDate.month+this.chartRequestDate.day};switch(this.chartRange){case"month":e={date:this.chartRequestDate.year+this.chartRequestDate.month,month:this.chartRequestDate.year+this.chartRequestDate.month};break;case"year":e={date:this.chartRequestDate.year,year:this.chartRequestDate.year};break}return e},baseTopic(){var e="openWB/log/";switch(this.chartRange){case"day":e=e+"daily/";break;case"month":e=e+"monthly/";break;case"year":e=e+"yearly/";break}return e},chartDataRead(){return this.chartDataObject!=null},chartDataHasEntries(){return this.chartDataObject?this.chartDataObject.length>0:!1},chartTotals(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"totals")){var e=JSON.parse(JSON.stringify(this.$store.state.mqtt[this.baseTopic+this.commandData.date].totals));return delete e.energy_source,Object.keys(e.counter).forEach(t=>{Object.prototype.hasOwnProperty.call(e.counter[t],"grid")&&delete e.counter[t].grid}),Object.keys(e).forEach(t=>{Object.prototype.hasOwnProperty.call(e[t],"all")&&(Object.keys(e[t]).length<=2&&["bat","pv"].includes(t)?delete e[t].all:e[t]={all:e[t].all,...e[t]})}),e}},chartDataObject(){if(this.$store.state.mqtt[this.baseTopic+this.commandData.date]){var e=this.$store.state.mqtt[this.baseTopic+this.commandData.date];Object.prototype.hasOwnProperty.call(e,"entries")&&(e=e.entries);var t=JSON.parse(JSON.stringify(e)).map(r=>(r.timestamp=r.timestamp*1e3,r));return t}},chartData(){if(this.chartDataObject){var e=["pv","counter","bat","cp","sh","ev","hc"];const t=this.chartDataObject[this.chartDataObject.length-1];return t&&e.forEach(r=>{Object.prototype.hasOwnProperty.call(t,r)&&(Object.prototype.hasOwnProperty.call(t[r],"all")&&(["bat","pv"].includes(r)&&Object.keys(t[r]).length<=2?delete t[r].all:t[r]={all:t[r].all,...t[r]}),Object.entries(t[r]).forEach(([n,i])=>{Object.keys(i).forEach(a=>{this.initDataset(r,n,a)})}))}),this.chartDatasets}}},watch:{chartRange(){this.init()}},mounted(){this.init()},methods:{handleChartClick(e){if(this.chartRange=="day")return;const t=this.$refs.myChart.chart;if(!t)return;const r=Q(t,e);if(!r.length)return;const{datasetIndex:n,index:i}=r[0],a=this.chartData.datasets[n].data[i].date;var y="",h="";switch(this.chartRange){case"month":y=a.substring(0,4)+"-"+a.substring(4,6)+"-"+a.substring(6),h="day";break;case"year":y=a.substring(0,4)+"-"+a.substring(4,6),h="month";break}this.blockChartInit=!0,this.chartDate=y,this.chartRange=h},getCardSubtype(e){switch(e){case"bat":return"warning";case"counter":return"danger";case"cp":return"primary";case"pv":return"success";case"sh":return"pink";default:return"secondary"}},getCardIcon(e){switch(e){case"bat":return["fas","car-battery"];case"counter":return["fas","gauge-high"];case"cp":return["fas","charging-station"];case"pv":return["fas","solar-panel"];case"sh":return["fas","house-signal"];case"hc":return["fas","house"];default:return}},hideDataset(e,t,r){return!!(["bat","pv","cp"].includes(e)&&Object.prototype.hasOwnProperty.call(this.chartTotals[e],"all")&&t!="all"||["grid","bat","pv","cp"].includes(r.split("_").pop()))},getTotalsLabel(e,t=void 0,r=void 0){var n="*test*";if(!t&&!r){switch(e){case"bat":return"Speicher";case"counter":return"Zähler";case"pv":return"Wechselrichter";case"cp":return"Ladepunkte";case"sh":return"SmartHome-Geräte";case"hc":return"Hausverbrauch";default:console.warn("unknown group key:",e)}return"*"+e+"*"}if(t&&!r){if(t=="all")return"Summe";if(Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names"))return this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]}if(t&&r){switch(e){case"bat":case"cp":switch(r){case"imported":case"energy_imported":return"Ladung";case"exported":case"energy_exported":return"Entladung";case"energy_imported_grid":return"Ladung (Netz-Anteil)";case"energy_imported_pv":return"Ladung (PV-Anteil)";case"energy_imported_bat":return"Ladung (Speicher-Anteil)";case"energy_imported_cp":return"Ladung (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;case"counter":switch(r){case"imported":case"energy_imported":return"Bezug/Verbrauch";case"exported":case"energy_exported":return"Einspeisung/Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"pv":switch(r){case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"sh":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"exported":case"energy_exported":return"Erzeugung";default:console.warn("unknown measurement key:",e,r)}break;case"hc":switch(r){case"imported":case"energy_imported":return"Verbrauch";case"energy_imported_grid":return"Verbrauch (Netz-Anteil)";case"energy_imported_pv":return"Verbrauch (PV-Anteil)";case"energy_imported_bat":return"Verbrauch (Speicher-Anteil)";case"energy_imported_cp":return"Verbrauch (Ladepunkt-Anteil)";default:console.warn("unknown measurement key:",e,r)}break;default:console.warn("unknown group key:",e)}return"*"+e+"+"+t+"+"+r+"*"}return n},getDatasetLabel(e,t,r,n){var i=["*"+n],a=[];if(t=="all")switch(e!=="hc"&&a.push("Summe"),e){case"pv":i=["PV"];break;case"bat":switch(i=["Speicher"],r){case"soc":i.push("SoC");break}break;case"cp":i=["Ladepunkte"];break;case"hc":i=["Hausverbrauch"]}else Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date],"names")&&Object.prototype.hasOwnProperty.call(this.$store.state.mqtt[this.baseTopic+this.commandData.date].names,t)&&(i=[this.$store.state.mqtt[this.baseTopic+this.commandData.date].names[t]]);switch(e){case"bat":case"ev":case"cp":switch(r){case"soc":a.push("SoC");break;case"energy_imported":a.push("Ladung");break;case"energy_exported":a.push("Entladung");break;case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break;case"counter":switch(r){case"energy_imported":a.push("Bezug/Verbrauch");break;case"energy_exported":a.push("Einspeisung/Erzeugung");break}break;case"sh":switch(r){case"energy_imported":a.push("Verbrauch");break;case"energy_exported":a.push("Erzeugung");break}break;case"hc":switch(r){case"energy_imported_grid":a.push("Netz-Anteil");break;case"energy_imported_pv":a.push("PV-Anteil");break;case"energy_imported_bat":a.push("Speicher-Anteil");break;case"energy_imported_cp":a.push("Ladepunkt-Anteil");break}break}return`${i.join(" ")}${a.length?" ("+a.join(", ")+")":""}`},getDatasetIndex(e){let t=this.chartDatasets.datasets.findIndex(r=>r.jsonKey==e);if(t!=-1)return t},addDataset(e,t,r,n){if(!(Object.prototype.hasOwnProperty.call(this.chartTotals,e)&&!Object.prototype.hasOwnProperty.call(this.chartTotals[e],t))){var i=e+"-"+r;if(this.datasetTemplates[i]){var a=JSON.parse(JSON.stringify(this.datasetTemplates[i]));return a.parsing.yAxisKey=n,a.jsonKey=n,a.data=this.chartDataObject,a.label=this.getDatasetLabel(e,t,r,n),a.labelSuffix!=null&&(a.label=a.label+a.labelSuffix),a.hidden=this.hideDataset(e,t,r),t=="all"&&(["grid","pv","bat","cp"].includes(r.split("_").slice(-1)[0])||delete a.stack),this.chartDatasets.datasets.push(a)-1}else console.warn("no matching template found for: "+n+" with template: "+i)}},initDataset(e,t,r){var n=[];this.chartRange=="day"?n={counter:["power_average"],pv:["power_exported"],bat:["power_average","soc"],cp:["power_average"],sh:["power_average"],ev:["soc"],hc:["power_imported"]}:n={counter:["energy_imported","energy_exported"],pv:["energy_exported"],bat:["energy_imported","energy_exported"],cp:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"],sh:["energy_imported","energy_exported"],ev:[],hc:["energy_imported","energy_imported_grid","energy_imported_pv","energy_imported_bat"]};const i=e+"."+t+"."+r;if(n[e].includes(r)){var a=this.getDatasetIndex(i);a==null&&(a=this.addDataset(e,t,r,i))}else console.debug("skipping dataset:",i)},setupScaleX(){this.chartOptions.scales.x.time.unit=this.chartScaleX.unit,this.chartOptions.scales.x.time.tooltipFormat=this.chartScaleX.tooltipFormat,this.chartOptions.scales.x.title.text=this.chartScaleX.text,this.chartOptions.scales.x.ticks.maxTicksLimit=this.chartScaleX.maxTicksLimit},requestChart(){if(document.forms.chartForm.reportValidity()){this.setupScaleX(),this.chartDatasets.datasets=[];var t="";switch(this.chartRange){case"day":t="getDailyLog";break;case"month":t="getMonthlyLog";break;case"year":t="getYearlyLog";break}this.$emit("sendCommand",{command:t,data:this.commandData})}else{console.warn("form invalid");return}},clearChartData(){this.getWildcardIndexList(this.baseTopic+"+").forEach(e=>{this.$store.commit("removeTopic",`${this.baseTopic}${e}`)})},updateChart(){this.clearChartData(),this.requestChart()},init(){const e=new Date;this.currentDate=String(e.getFullYear()),this.chartRange!="year"&&(this.currentDate=this.currentDate+"-"+String(e.getMonth()+1).padStart(2,"0")),this.chartRange=="day"&&(this.currentDate=this.currentDate+"-"+String(e.getDate()).padStart(2,"0")),this.blockChartInit?this.blockChartInit=!1:this.initialDate==null||this.initialDate==""?this.chartDate=this.currentDate:this.chartDate=this.initialDate,this.updateChart()}}},ae={class:"chart"},re={name:"chartForm"},ie={key:1},ne={key:1},oe={class:"openwb-chart"},se={key:1};function le(e,t,r,n,i,a){const y=p("openwb-base-select-input"),h=p("openwb-base-text-input"),b=p("openwb-base-card"),v=p("openwb-base-alert"),R=p("chartjs-line"),w=p("font-awesome-icon"),S=p("openwb-base-heading");return o(),s("div",ae,[A("form",re,[l(b,{title:"Filter",collapsible:!0,collapsed:!1},{default:c(()=>[l(y,{modelValue:i.chartRange,"onUpdate:modelValue":t[0]||(t[0]=d=>i.chartRange=d),title:"Zeitraum",options:[{value:"day",text:"Tag"},{value:"month",text:"Monat"},{value:"year",text:"Jahr"}]},null,8,["modelValue"]),l(h,{modelValue:a.chartDate,"onUpdate:modelValue":[t[1]||(t[1]=d=>a.chartDate=d),t[2]||(t[2]=d=>a.updateChart())],title:a.dateInput.title,subtype:a.dateInput.type,min:a.dateInput.min,max:i.currentDate,"show-quick-buttons":!0},null,8,["modelValue","title","subtype","min","max"])]),_:1}),a.chartDataRead?(o(),s("div",ie,[a.chartDataHasEntries?(o(),s("div",ne,[l(b,{title:"Diagramm",collapsible:!0,collapsed:!1},{default:c(()=>[A("div",oe,[l(R,{ref:"myChart",data:a.chartData,options:i.chartOptions,onClick:a.handleChartClick},null,8,["data","options","onClick"])])]),_:1}),l(b,{title:"Summen",collapsible:!0,collapsed:!0},{default:c(()=>[(o(!0),s(k,null,x(a.chartTotals,(d,u)=>(o(),s("div",{key:u},[Object.keys(d).length>0?(o(),m(b,{key:0,collapsible:!0,collapsed:!0,subtype:a.getCardSubtype(u)},{header:c(()=>[l(w,{"fixed-width":"",icon:a.getCardIcon(u)},null,8,["icon"]),f(" "+C(a.getTotalsLabel(u)),1)]),default:c(()=>[(o(!0),s(k,null,x(d,(I,g)=>(o(),s("div",{key:g},[u!=="hc"?(o(),m(S,{key:0},{default:c(()=>[f(C(a.getTotalsLabel(u,g)),1)]),_:2},1024)):_("",!0),(o(!0),s(k,null,x(I,(W,D)=>(o(),s("div",{key:D},[l(h,{title:a.getTotalsLabel(u,g,D),readonly:"",class:"text-right",unit:"kWh","model-value":e.formatNumber(W/1e3,3)},null,8,["title","model-value"])]))),128)),g=="all"?(o(),s("hr",se)):_("",!0)]))),128))]),_:2},1032,["subtype"])):_("",!0)]))),128))]),_:1})])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[4]||(t[4]=[f(" Es konnten keine Daten für diesen Zeitraum gefunden werden. ")])),_:1}))])):(o(),m(v,{key:0,subtype:"info"},{default:c(()=>t[3]||(t[3]=[f(" Es wurden noch keine Daten abgerufen. ")])),_:1}))])])}const fe=ee(te,[["render",le],["__scopeId","data-v-e00a7cd5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Chart.vue"]]);export{fe as default};
diff --git a/web/settings/assets/CloudConfig-b33b0184.js b/web/settings/assets/CloudConfig-8f0baa42.js
similarity index 99%
rename from web/settings/assets/CloudConfig-b33b0184.js
rename to web/settings/assets/CloudConfig-8f0baa42.js
index 7aac945716..c5c8f81682 100644
--- a/web/settings/assets/CloudConfig-b33b0184.js
+++ b/web/settings/assets/CloudConfig-8f0baa42.js
@@ -1 +1 @@
-import{l as q,$ as P,F as z}from"./vendor-fortawesome-41164876.js";import{C as Z}from"./index-c79666b6.js";import{_ as I,u as d,k as a,l as w,D as r,N as t,x as m,A as p,B as i,a2 as D,J as x,y as u,q as V}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";q.add(P);const M={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[Z],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,k]of Object.entries(o))k.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},h={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},A={class:"row justify-content-center"},N={key:2,name:"cloudConfigConnectForm"},R={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j={class:"row justify-content-center"};function G(o,e,k,T,s,l){const W=d("openwb-base-modal-dialog"),c=d("router-link"),g=d("openwb-base-alert"),b=d("openwb-base-text-input"),C=d("openwb-base-button-group-input"),f=d("font-awesome-icon"),B=d("openwb-base-array-input"),y=d("openwb-base-click-button"),v=d("openwb-base-card"),S=d("openwb-base-heading"),_=d("openwb-base-submit-buttons");return a(),w(x,null,[r(W,{show:s.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>l.removeCloud(n))},{default:t(()=>e[17]||(e[17]=[u(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",h,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(a(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[19]||(e[19]=u(" Sie müssen der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[18]||(e[18]=[u(" Datenschutzerklärung ")])),_:1}),e[20]||(e[20]=u(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(a(),w("div",K,[r(g,{subtype:"success"},{default:t(()=>[e[22]||(e[22]=u(" Sie haben der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[21]||(e[21]=[u(" Datenschutzerklärung ")])),_:1}),e[23]||(e[23]=u(" zugestimmt und können die openWB Cloud nutzen. "))]),_:1}),s.enableRemoveCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[24]||(e[24]=[u(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),l.cloudBridgeKey?i("",!0):(a(),w("form",U,[r(v,{title:"Neuen Zugang erstellen"},D({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[25]||(e[25]=[u(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),u(" . ")])),_:1}),r(b,{modelValue:s.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>s.newCloudData.username=n),title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",disabled:""},null,8,["modelValue"]),r(b,{modelValue:s.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>s.newCloudData.email=n),title:"E-Mail",required:"",subtype:"email",disabled:""},null,8,["modelValue"]),r(C,{modelValue:s.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>s.newCloudData.partner=n),disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[26]||(e[26]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.newCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[27]||(e[27]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",A,[r(y,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>e[28]||(e[28]=[u(" Zugang erstellen ")])),_:1})])]),key:"0"}:void 0]),1024),s.enableNewCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>e[29]||(e[29]=[u(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")])),_:1}))])),l.cloudBridgeKey?i("",!0):(a(),w("form",N,[r(v,{title:"Vorhandenen Zugang einrichten"},D({default:t(()=>[r(b,{modelValue:s.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>s.connectCloudData.username=n),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(b,{modelValue:s.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>s.connectCloudData.password=n),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(C,{modelValue:s.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>s.connectCloudData.partner=n),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[30]||(e[30]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.connectCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[31]||(e[31]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",R,[r(y,{class:V(["col-4",s.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!s.enableCloudConnectButton,onButtonClicked:l.connectCloud},{default:t(()=>e[32]||(e[32]=[u(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),l.cloudBridgeKey?(a(),w("form",F,[!s.enableCloudConnectButton||!s.enableNewCloudButton?(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[33]||(e[33]=[u(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(v,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",j,[r(y,{class:V(["col-4",s.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!s.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>l.removeCloudModal(n))},{default:t(()=>e[37]||(e[37]=[u(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(S,null,{default:t(()=>e[34]||(e[34]=[m("span",null,[u(" Mit diesen Zugangsdaten können Sie sich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),u(" anmelden. ")],-1)])),_:1}),r(b,{modelValue:l.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>l.cloudSettings.username=n),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(b,{modelValue:l.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>l.cloudSettings.password=n),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[38]||(e[38]=m("hr",null,null,-1)),r(C,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(l.cloudBridgeKey,n,"access.partner"))},{help:t(()=>e[35]||(e[35]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),l.cloudSettings.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[36]||(e[36]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),l.cloudBridgeKey?(a(),p(_,{key:4,"form-name":"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const Y=I(M,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{Y as default};
+import{l as q,$ as P,F as z}from"./vendor-fortawesome-41164876.js";import{C as Z}from"./index-7731ba98.js";import{_ as I,u as d,k as a,l as w,D as r,N as t,x as m,A as p,B as i,a2 as D,J as x,y as u,q as V}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";q.add(P);const M={name:"OpenwbCloudConfigView",components:{FontAwesomeIcon:z},mixins:[Z],emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/mqtt/bridge/+","openWB/system/mqtt/valid_partner_ids"],enableNewCloudButton:!0,newCloudData:{email:"",username:"",partner:!1},enableCloudConnectButton:!0,connectCloudData:{username:"",password:"",partner:!1},enableRemoveCloudButton:!0,showCloudRemoveModal:!1}},computed:{cloudBridge:{get(){let o=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,k]of Object.entries(o))k.remote.is_openwb_cloud||delete o[e];return o}},cloudBridgeKey:{get(){for(const[o,e]of Object.entries(this.cloudBridge))if(e.remote.is_openwb_cloud)return o}},cloudSettings:{get(){return{username:this.cloudBridge[this.cloudBridgeKey].remote.username,password:this.cloudBridge[this.cloudBridgeKey].remote.password,partner:this.cloudBridge[this.cloudBridgeKey].access?this.cloudBridge[this.cloudBridgeKey].access.partner:!1}}}},methods:{getMqttBridgeIndex(o){return parseInt(o.match(/(?:\/)(\d+)$/)[1])},createCloud(){document.forms.cloudConfigCreateForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"initCloud",data:this.newCloudData}),this.enableNewCloudButton=!1)},connectCloud(){document.forms.cloudConfigConnectForm.reportValidity()&&(this.$emit("save"),this.$emit("sendCommand",{command:"connectCloud",data:this.connectCloudData}),this.enableCloudConnectButton=!1)},removeCloudModal(o){o.stopPropagation(),this.showCloudRemoveModal=!0},removeCloud(o){this.showCloudRemoveModal=!1,o=="confirm"&&(console.info("request removal of cloud"),this.updateState("openWB/system/mqtt/valid_partner_ids",[]),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:this.getMqttBridgeIndex(this.cloudBridgeKey)}}),this.enableCloudConnectButton=!0)}}},h={class:"cloud-config"},K={key:1},U={key:1,name:"cloudConfigCreateForm"},A={class:"row justify-content-center"},N={key:2,name:"cloudConfigConnectForm"},R={class:"row justify-content-center"},F={key:3,name:"cloudConfigured"},j={class:"row justify-content-center"};function G(o,e,k,T,s,l){const W=d("openwb-base-modal-dialog"),c=d("router-link"),g=d("openwb-base-alert"),b=d("openwb-base-text-input"),C=d("openwb-base-button-group-input"),f=d("font-awesome-icon"),B=d("openwb-base-array-input"),y=d("openwb-base-click-button"),v=d("openwb-base-card"),S=d("openwb-base-heading"),_=d("openwb-base-submit-buttons");return a(),w(x,null,[r(W,{show:s.showCloudRemoveModal,title:"Cloud Zugang löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=n=>l.removeCloud(n))},{default:t(()=>e[17]||(e[17]=[u(" Wollen Sie den vorhandenen Cloud Zugang wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ")])),_:1},8,["show"]),m("div",h,[o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(a(),p(g,{key:0,subtype:"danger"},{default:t(()=>[e[19]||(e[19]=u(" Sie müssen der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[18]||(e[18]=[u(" Datenschutzerklärung ")])),_:1}),e[20]||(e[20]=u(" zustimmen, um die openWB Cloud nutzen zu können. "))]),_:1})):(a(),w("div",K,[r(g,{subtype:"success"},{default:t(()=>[e[22]||(e[22]=u(" Sie haben der ")),r(c,{to:"/System/LegalSettings"},{default:t(()=>e[21]||(e[21]=[u(" Datenschutzerklärung ")])),_:1}),e[23]||(e[23]=u(" zugestimmt und können die openWB Cloud nutzen. "))]),_:1}),s.enableRemoveCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[24]||(e[24]=[u(" Der Zugang wurde entfernt. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})),l.cloudBridgeKey?i("",!0):(a(),w("form",U,[r(v,{title:"Neuen Zugang erstellen"},D({default:t(()=>[r(g,{subtype:"warning"},{default:t(()=>e[25]||(e[25]=[u(" Derzeit können keine neuen Zugänge für die openWB Cloud angelegt werden. Bitte nutzen Sie die in/an der openWB notierten Zugangsdaten im unteren Bereich dieser Seite. Wenn bei einer gekauften openWB keine Zugangsdaten vorhanden sind, schreiben Sie bitte eine Mail unter Angabe der Bestell- und/oder Seriennummer an "),m("a",{href:"mailto:support@openwb.de",subject:"Cloud Zugangsdaten"}," support@openwb.de ",-1),u(" . ")])),_:1}),r(b,{modelValue:s.newCloudData.username,"onUpdate:modelValue":e[1]||(e[1]=n=>s.newCloudData.username=n),title:"Benutzername",required:"",subtype:"user",pattern:"[a-zA-Z]+",disabled:""},null,8,["modelValue"]),r(b,{modelValue:s.newCloudData.email,"onUpdate:modelValue":e[2]||(e[2]=n=>s.newCloudData.email=n),title:"E-Mail",required:"",subtype:"email",disabled:""},null,8,["modelValue"]),r(C,{modelValue:s.newCloudData.partner,"onUpdate:modelValue":e[3]||(e[3]=n=>s.newCloudData.partner=n),disabled:"",title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[26]||(e[26]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.newCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[4]||(e[4]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[27]||(e[27]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",A,[r(y,{class:"col-4 btn-outline-success",disabled:""},{default:t(()=>e[28]||(e[28]=[u(" Zugang erstellen ")])),_:1})])]),key:"0"}:void 0]),1024),s.enableNewCloudButton?i("",!0):(a(),p(g,{key:0,subtype:"info",class:"mb-2"},{default:t(()=>e[29]||(e[29]=[u(" Der neue Zugang wird eingerichtet. Dieser Vorgang kann bis zu einer Minute dauern. Bitte warten. ")])),_:1}))])),l.cloudBridgeKey?i("",!0):(a(),w("form",N,[r(v,{title:"Vorhandenen Zugang einrichten"},D({default:t(()=>[r(b,{modelValue:s.connectCloudData.username,"onUpdate:modelValue":e[5]||(e[5]=n=>s.connectCloudData.username=n),title:"Benutzername",required:"",subtype:"user"},null,8,["modelValue"]),r(b,{modelValue:s.connectCloudData.password,"onUpdate:modelValue":e[6]||(e[6]=n=>s.connectCloudData.password=n),title:"Passwort",required:"",subtype:"password"},null,8,["modelValue"]),r(C,{modelValue:s.connectCloudData.partner,"onUpdate:modelValue":e[7]||(e[7]=n=>s.connectCloudData.partner=n),title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}]},{help:t(()=>e[30]||(e[30]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["modelValue"]),s.connectCloudData.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[8]||(e[8]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[31]||(e[31]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:2},[o.$store.state.mqtt["openWB/general/extern"]===!1&&o.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:t(()=>[m("div",R,[r(y,{class:V(["col-4",s.enableCloudConnectButton?"btn-success":"btn-outline-success"]),disabled:!s.enableCloudConnectButton,onButtonClicked:l.connectCloud},{default:t(()=>e[32]||(e[32]=[u(" Mit Cloud verbinden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024)])),l.cloudBridgeKey?(a(),w("form",F,[!s.enableCloudConnectButton||!s.enableNewCloudButton?(a(),p(g,{key:0,subtype:"warning"},{default:t(()=>e[33]||(e[33]=[u(" Der Zugang wurde eingerichtet. Bitte starten Sie die openWB neu, um die Änderungen anzuwenden! ")])),_:1})):i("",!0),r(v,{title:"Vorhandener Cloud Zugang"},{footer:t(()=>[m("div",j,[r(y,{class:V(["col-4",s.enableRemoveCloudButton?"btn-danger":"btn-outline-danger"]),disabled:!s.enableRemoveCloudButton,onButtonClicked:e[13]||(e[13]=n=>l.removeCloudModal(n))},{default:t(()=>e[37]||(e[37]=[u(" Zugang löschen ")])),_:1},8,["class","disabled"])])]),default:t(()=>[r(S,null,{default:t(()=>e[34]||(e[34]=[m("span",null,[u(" Mit diesen Zugangsdaten können Sie sich in der "),m("a",{href:"https://remote.openwb.de/",target:"_blank",rel:"noopener noreferrer"}," openWB Cloud "),u(" anmelden. ")],-1)])),_:1}),r(b,{modelValue:l.cloudSettings.username,"onUpdate:modelValue":e[9]||(e[9]=n=>l.cloudSettings.username=n),title:"Benutzername",required:"",subtype:"user",disabled:""},null,8,["modelValue"]),r(b,{modelValue:l.cloudSettings.password,"onUpdate:modelValue":e[10]||(e[10]=n=>l.cloudSettings.password=n),title:"Passwort",required:"",subtype:"password",disabled:""},null,8,["modelValue"]),e[38]||(e[38]=m("hr",null,null,-1)),r(C,{title:"Zugang für Partner",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":l.cloudSettings.partner,"onUpdate:modelValue":e[11]||(e[11]=n=>o.updateState(l.cloudBridgeKey,n,"access.partner"))},{help:t(()=>e[35]||(e[35]=[u(" Wenn diese openWB über einen Partner erworben wurde, kann hier ein Support-Zugang für diesen freigegeben werden. ")])),_:1},8,["model-value"]),l.cloudSettings.partner?(a(),p(B,{key:0,title:"Gültige Partner-IDs","no-elements-message":"Keine Partner-ID zugeordnet.","model-value":o.$store.state.mqtt["openWB/system/mqtt/valid_partner_ids"],"onUpdate:modelValue":e[12]||(e[12]=n=>o.updateState("openWB/system/mqtt/valid_partner_ids",n))},{"input-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),"element-prefix":t(()=>[r(f,{"fixed-width":"",icon:["fas","user-gear"]})]),help:t(()=>e[36]||(e[36]=[u(" Die Partner-ID erhältst Du von Deinem Installateur. Ist hier keine Partner-ID eingetragen, dann kann auch niemand - trotz aktiviertem Zugang für Partner - über das Partner-Portal auf diese openWB zugreifen! ")])),_:1},8,["model-value"])):i("",!0)]),_:1})])):i("",!0),l.cloudBridgeKey?(a(),p(_,{key:4,"form-name":"cloudConfigured",onSave:e[14]||(e[14]=n=>o.$emit("save")),onReset:e[15]||(e[15]=n=>o.$emit("reset")),onDefaults:e[16]||(e[16]=n=>o.$emit("defaults"))})):i("",!0)]))])],64)}const Y=I(M,[["render",G],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/CloudConfig.vue"]]);export{Y as default};
diff --git a/web/settings/assets/DataManagement-1fb1197d.js b/web/settings/assets/DataManagement-f7ee6dfd.js
similarity index 96%
rename from web/settings/assets/DataManagement-1fb1197d.js
rename to web/settings/assets/DataManagement-f7ee6dfd.js
index 9eaefe2e97..0375583307 100644
--- a/web/settings/assets/DataManagement-1fb1197d.js
+++ b/web/settings/assets/DataManagement-f7ee6dfd.js
@@ -1 +1 @@
-import{l as L,af as z,ag as V,ah as j,ai as H,aj as R,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,C as P}from"./index-c79666b6.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as S,u as m,k as r,l as f,A as w,N as l,y as i,z as y,D as o,x as n,a0 as N,a1 as q,J as W,B as _,q as D,K as F,a2 as I}from"./vendor-a21b3a62.js";const G={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},J=S(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),Z={name:"BackupCloudConfigFallback",mixins:[J]},K={class:"backup-cloud-fallback"},$={key:1};function Q(t,e,u,g,s,a){const b=m("openwb-base-alert"),p=m("openwb-base-textarea");return r(),f("div",K,[Object.keys(t.backupCloud.configuration).length==0?(r(),w(b,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+y(t.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),f("div",$,[o(b,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+y(t.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(p,{title:"Konfiguration",subtype:"json","model-value":t.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=v=>t.updateConfiguration(v,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),o(b,{subtype:"info"},{default:l(()=>[n("pre",null,y(JSON.stringify(t.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const X=S(Z,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),Y={name:"OpenwbBackupCloudProxy",props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),N({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-04652ce0.js"),["assets/backup_cloud-04652ce0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-9329a99f.js"),["assets/backup_cloud-9329a99f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-6fe765b0.js"),["assets/backup_cloud-6fe765b0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-a666a458.js"),["assets/backup_cloud-a666a458.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:X})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function ee(t,e,u,g,s,a){const b=m("openwb-base-heading");return r(),f(W,null,[o(b,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+y(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(a.myComponent),{"backup-cloud":u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=p=>a.updateConfiguration(p)),onSendCommand:e[1]||(e[1]=p=>a.sendCommand(p))},null,40,["backup-cloud"]))],64)}const te=S(Y,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(z,V,j,H,R);const ne={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:te},mixins:[P],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let s=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let s=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var b="Hochladen der Datei fehlgeschlagen!<br />"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),b+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),b+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(b,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},oe={class:"system"},ie={key:1},se={name:"backupForm"},ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue={key:0,name:"restoreForm"},de={class:"input-group"},re={class:"input-group-prepend"},pe={class:"input-group-text"},ce={class:"custom-file"},me={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},be={class:"input-group-append"},fe=["disabled"],ge={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:1,name:"cloudBackupForm"},ye={key:0},ve={name:"dataMigrationForm"},_e={class:"input-group"},we={class:"input-group-prepend"},Ce={class:"input-group-text"},Be={class:"custom-file"},De={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Se={class:"input-group-append"},Oe=["disabled"],We={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},Fe={key:1,name:"resetForm"},Ae={class:"row justify-content-center"},Te={class:"col-md-4 d-flex py-1 justify-content-center"};function xe(t,e,u,g,s,a){const b=m("openwb-base-button-group-input"),p=m("openwb-base-alert"),v=m("openwb-base-heading"),k=m("font-awesome-icon"),C=m("openwb-base-click-button"),M=m("openwb-base-select-input"),A=m("openwb-base-button-input"),T=m("openwb-backup-cloud-proxy"),x=m("openwb-base-submit-buttons"),O=m("openwb-base-card");return r(),f("div",oe,[u.installAssistantActive?_("",!0):(r(),w(p,{key:0,subtype:"danger"},{default:l(()=>[e[17]||(e[17]=n("h2",null,"Achtung!",-1)),e[18]||(e[18]=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),o(b,{modelValue:s.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=c=>s.warningAcknowledged=c),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),s.warningAcknowledged||u.installAssistantActive?(r(),f("div",ie,[o(O,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var c,h;return[n("form",se,[o(v,null,{default:l(()=>e[19]||(e[19]=[i("Sicherung")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[20]||(e[20]=[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[21]||(e[21]=[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),n("div",ae,[n("div",le,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[e[22]||(e[22]=i(" Sicherung erstellen ")),o(k,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),s.showRestoreSection?(r(),f("form",ue,[e[27]||(e[27]=n("hr",null,null,-1)),o(v,null,{default:l(()=>e[23]||(e[23]=[i("Wiederherstellung")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[24]||(e[24]=[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),n("br",null,null,-1),i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),n("div",de,[n("div",re,[n("div",pe,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ce,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>a.updateSelectedRestoreFile(d))},null,32),n("label",me,y(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",be,[n("button",{class:D(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>a.uploadRestoreFile())},[e[25]||(e[25]=i(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,fe)])]),n("div",ge,[n("div",he,[o(C,{class:D(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>a.restoreBackup())},{default:l(()=>[e[26]||(e[26]=i(" Wiederherstellung starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),u.showBackupCloudSection?(r(),f("form",ke,[e[31]||(e[31]=n("hr",null,null,-1)),o(v,null,{default:l(()=>e[28]||(e[28]=[i(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[29]||(e[29]=[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),n("br",null,null,-1),i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),n("br",null,null,-1),i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),i(" . ")])),_:1}),o(M,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(c=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:c.type,"onUpdate:modelValue":e[5]||(e[5]=d=>a.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(h=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&h.type?(r(),f("div",ye,[o(b,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>e[30]||(e[30]=[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),o(A,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>a.sendSystemCommand("createCloudBackup",{}))}),o(T,{"backup-cloud":t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>a.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>a.sendSystemCommand(d.command,d.args))},null,8,["backup-cloud"])])):_("",!0),o(x,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?_("",!0):(r(),w(O,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",ve,[o(p,{subtype:"info"},{default:l(()=>e[32]||(e[32]=[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[33]||(e[33]=[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),n("br",null,null,-1),i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),n("br",null,null,-1),i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),n("div",_e,[n("div",we,[n("div",Ce,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Be,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=c=>a.updateSelectedDataMigrationFile(c))},null,32),n("label",De,y(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Se,[n("button",{class:D(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=c=>a.uploadDataMigrationFile())},[e[34]||(e[34]=i(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,Oe)])]),o(v,null,{default:l(()=>e[35]||(e[35]=[i(" Zuordnung der Komponenten ")])),_:1}),(r(!0),f(W,null,F(s.dataMigrationConfig,c=>(r(),f("div",{key:c.sectionName},[o(v,null,{default:l(()=>[i(y(c.sectionName),1)]),_:2},1024),(r(!0),f(W,null,F(c.sectionComponents,h=>(r(),w(M,{key:h.key,modelValue:s.dataMigrationMapping[h.key],"onUpdate:modelValue":d=>s.dataMigrationMapping[h.key]=d,title:h.label,options:a.getMigrationOptions(h.validTypes)},I({_:2},[h.help?{name:"help",fn:l(()=>[i(y(h.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),n("div",We,[n("div",Me,[o(C,{class:D(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=c=>a.dataMigration())},{default:l(()=>[e[36]||(e[36]=i(" Datenübernahme starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?_("",!0):(r(),f("form",Fe,[o(O,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ae,[n("div",Te,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=c=>a.factoryReset())},{default:l(()=>[o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[38]||(e[38]=i(" Zurücksetzen ")),o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(p,{subtype:"danger"},{default:l(()=>e[37]||(e[37]=[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})]))])):_("",!0)])}const Le=S(ne,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Re=Object.freeze(Object.defineProperty({__proto__:null,default:Le},Symbol.toStringTag,{value:"Module"}));export{J as B,Le as D,Re as a};
+import{l as L,af as z,ag as V,ah as j,ai as H,aj as R,F as E}from"./vendor-fortawesome-41164876.js";import{_ as B,C as P}from"./index-7731ba98.js";import{_ as U}from"./dynamic-import-helper-be004503.js";import{_ as S,u as m,k as r,l as f,A as w,N as l,y as i,z as y,D as o,x as n,a0 as N,a1 as q,J as W,B as _,q as D,K as F,a2 as I}from"./vendor-a21b3a62.js";const G={props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},J=S(G,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/BackupCloudConfigMixin.vue"]]),Z={name:"BackupCloudConfigFallback",mixins:[J]},K={class:"backup-cloud-fallback"},$={key:1};function Q(t,e,u,g,s,a){const b=m("openwb-base-alert"),p=m("openwb-base-textarea");return r(),f("div",K,[Object.keys(t.backupCloud.configuration).length==0?(r(),w(b,{key:0,subtype:"info"},{default:l(()=>[i(' Die Backup-Cloud "'+y(t.backupCloud.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(r(),f("div",$,[o(b,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für die Backup-Cloud "'+y(t.backupCloud.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),o(p,{title:"Konfiguration",subtype:"json","model-value":t.backupCloud.configuration,"onUpdate:modelValue":e[0]||(e[0]=v=>t.updateConfiguration(v,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),o(b,{subtype:"info"},{default:l(()=>[n("pre",null,y(JSON.stringify(t.backupCloud.configuration,void 0,2)),1)]),_:1})]))])}const X=S(Z,[["render",Q],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudConfigFallback.vue"]]),Y={name:"OpenwbBackupCloudProxy",props:{backupCloud:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.backupCloud.type}`),N({loader:()=>U(Object.assign({"./nextcloud/backup_cloud.vue":()=>B(()=>import("./backup_cloud-5874a24b.js"),["assets/backup_cloud-5874a24b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./nfs/backup_cloud.vue":()=>B(()=>import("./backup_cloud-1b47923e.js"),["assets/backup_cloud-1b47923e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./onedrive/backup_cloud.vue":()=>B(()=>import("./backup_cloud-883e9c6f.js"),["assets/backup_cloud-883e9c6f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./samba/backup_cloud.vue":()=>B(()=>import("./backup_cloud-daac1944.js"),["assets/backup_cloud-daac1944.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.backupCloud.type}/backup_cloud.vue`),errorComponent:X})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function ee(t,e,u,g,s,a){const b=m("openwb-base-heading");return r(),f(W,null,[o(b,null,{default:l(()=>[i(' Einstellungen für Backup-Cloud Modul "'+y(u.backupCloud.name)+'" ',1)]),_:1}),(r(),w(q(a.myComponent),{"backup-cloud":u.backupCloud,"onUpdate:configuration":e[0]||(e[0]=p=>a.updateConfiguration(p)),onSendCommand:e[1]||(e[1]=p=>a.sendCommand(p))},null,40,["backup-cloud"]))],64)}const te=S(Y,[["render",ee],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/backup_clouds/OpenwbBackupCloudProxy.vue"]]);L.add(z,V,j,H,R);const ne={name:"OpenwbDataManagementView",components:{FontAwesomeIcon:E,OpenwbBackupCloudProxy:te},mixins:[P],props:{installAssistantActive:{type:Boolean,required:!1,default:!1},showBackupCloudSection:{type:Boolean,required:!1,default:!0}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/system/configurable/backup_clouds","openWB/system/backup_cloud/config","openWB/system/backup_cloud/backup_before_update","openWB/system/device/+/component/+/config","openWB/chargepoint/+/config","openWB/vehicle/+/name","openWB/LegacySmartHome/config/get/Devices/+/device_configured","openWB/LegacySmartHome/config/get/Devices/+/device_name"],warningAcknowledged:!1,showRestoreSection:!this.installAssistantActive,selectedRestoreFile:void 0,restoreUploadDone:!1,selectedDataMigrationFile:void 0,dataMigrationUploadDone:!1,dataMigrationConfig:[{sectionName:"Ladepunkte",sectionComponents:[{key:"cp1",label:"Ladepunkt 1",validTypes:["chargePoint"]},{key:"cp2",label:"Ladepunkt 2",validTypes:["chargePoint"]},{key:"cp3",label:"Ladepunkt 3",validTypes:["chargePoint"]},{key:"cp4",label:"Ladepunkt 4",validTypes:["chargePoint"]},{key:"cp5",label:"Ladepunkt 5",validTypes:["chargePoint"]},{key:"cp6",label:"Ladepunkt 6",validTypes:["chargePoint"]},{key:"cp7",label:"Ladepunkt 7",validTypes:["chargePoint"]},{key:"cp8",label:"Ladepunkt 8",validTypes:["chargePoint"]}]},{sectionName:"Zähler",sectionComponents:[{key:"evu",label:"EVU",validTypes:["counter"]},{key:"consumer1",label:"Verbraucher 1",validTypes:["counter"]},{key:"consumer2",label:"Verbraucher 2",validTypes:["counter"]},{key:"consumer3",label:"Verbraucher 3",validTypes:["counter"]}]},{sectionName:"Wechselrichter",sectionComponents:[{key:"pvAll",label:"Wechselrichter (Summe)",validTypes:["inverter"],help:"Die 1.9er Version von openWB speichert lediglich die Summen-Leistung aller Wechselrichter."}]},{sectionName:"Batteriespeicher",sectionComponents:[{key:"bat",label:"Speicher 1",validTypes:["battery"]}]},{sectionName:"Fahrzeuge",sectionComponents:[{key:"ev1",label:"Fahrzeug von Ladepunkt 1",validTypes:["vehicle"]},{key:"ev2",label:"Fahrzeug von Ladepunkt 2",validTypes:["vehicle"]}]},{sectionName:"SmartHome 2.0",sectionComponents:[{key:"sh1",label:"Gerät 1",validTypes:["smartHome"]},{key:"sh2",label:"Gerät 2",validTypes:["smartHome"]},{key:"sh3",label:"Gerät 3",validTypes:["smartHome"]},{key:"sh4",label:"Gerät 4",validTypes:["smartHome"]},{key:"sh5",label:"Gerät 5",validTypes:["smartHome"]},{key:"sh6",label:"Gerät 6",validTypes:["smartHome"]},{key:"sh7",label:"Gerät 7",validTypes:["smartHome"]},{key:"sh8",label:"Gerät 8",validTypes:["smartHome"]},{key:"sh9",label:"Gerät 9",validTypes:["smartHome"]},{key:"sh10",label:"Gerät 10",validTypes:["smartHome"]}]}],dataMigrationMapping:{cp1:void 0,cp2:void 0,cp3:void 0,cp4:void 0,cp5:void 0,cp6:void 0,cp7:void 0,cp8:void 0,evu:void 0,pvAll:void 0,bat:void 0,consumer1:void 0,consumer2:void 0,consumer3:void 0,sh1:void 0,sh2:void 0,sh3:void 0,sh4:void 0,sh5:void 0,sh6:void 0,sh7:void 0,sh8:void 0,sh9:void 0,sh10:void 0,ev1:void 0,ev2:void 0}}},computed:{backupCloudList(){return this.$store.state.mqtt["openWB/system/configurable/backup_clouds"]},componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},chargePointOptions(){let t=this.getWildcardTopics("openWB/chargepoint/+/config");var e=[];for(const u of Object.values(t))e.push({value:u.id,text:u.name});return e},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t},inverterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"inverter")&&t.push({value:e.id,text:e.name});return t},batteryOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"bat")&&t.push({value:e.id,text:e.name});return t},vehicleOptions(){let t=this.getWildcardTopics("openWB/vehicle/+/name");var e=[];for(const[u,g]of Object.entries(t)){let s=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:g})}return e},smartHomeOptions(){let t=this.getWildcardTopics("openWB/LegacySmartHome/config/get/Devices/+/device_configured");var e=[];for(const[u,g]of Object.entries(t))if(g==1){let s=parseInt(u.match(/\/(\d\d?)\//)[1]);e.push({value:s,text:this.$store.state.mqtt[`openWB/LegacySmartHome/config/get/Devices/${s}/device_name`]})}return e}},methods:{isComponentType(t,e){return t.split("_").includes(e)},getBackupCloudDefaultConfiguration(t){const e=this.backupCloudList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for backup cloud type!",t),{})},sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})},getMigrationOptions(t){var e=[{value:void 0,text:"-- nicht übernehmen --"}];return t.includes("chargePoint")&&e.push(...this.chargePointOptions),t.includes("counter")&&e.push(...this.counterOptions),t.includes("inverter")&&e.push(...this.inverterOptions),t.includes("battery")&&e.push(...this.batteryOptions),t.includes("vehicle")&&e.push(...this.vehicleOptions),t.includes("smartHome")&&e.push(...this.smartHomeOptions),e},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},updateSelectedBackupCloud(t){this.updateState("openWB/system/backup_cloud/config",t,"type"),this.updateState("openWB/system/backup_cloud/config",this.getBackupCloudDefaultConfiguration(t))},updateSelectedRestoreFile(t){this.selectedRestoreFile=t.target.files[0]},updateSelectedDataMigrationFile(t){this.selectedDataMigrationFile=t.target.files[0]},uploadFile(t,e,u){return new Promise(g=>{if(e!==void 0){this.$root.postClientMessage("Hochladen der Datei gestartet.","info");let s=new FormData;s.append("file",e),s.append("target",t),this.axios.post(location.protocol+"//"+location.host+"/openWB/web/settings/uploadFile.php",s,{headers:{"Content-Type":"multipart/form-data"}}).then(()=>{this.$root.postClientMessage(u,"success"),g(!0)}).catch(a=>{if(a.response){console.error(a.response.status,a.response.data);var b="Hochladen der Datei fehlgeschlagen!<br />"+a.response.status+": "+a.response.data}else a.request?(console.error(a.request),b+="Es wurde keine Antwort vom Server empfangen."):(console.error("Error",a.message),b+="Es ist ein unbekannter Fehler aufgetreten.");this.$root.postClientMessage(b,"danger"),g(!1)})}else console.error("no file selected for upload"),g(!1)})},async uploadRestoreFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können die Wiederherstellung jetzt starten.";this.restoreUploadDone=await this.uploadFile("restore",this.selectedRestoreFile,t)},async uploadDataMigrationFile(){const t="Die Sicherungsdatei wurde erfolgreich hochgeladen. Sie können den Import jetzt starten.";this.dataMigrationUploadDone=await this.uploadFile("migrate",this.selectedDataMigrationFile,t)},restoreBackup(){this.sendSystemCommand("restoreBackup"),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},dataMigration(){this.sendSystemCommand("dataMigration",this.dataMigrationMapping)},factoryReset(){this.sendSystemCommand("factoryReset",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},oe={class:"system"},ie={key:1},se={name:"backupForm"},ae={class:"row justify-content-center"},le={class:"col-md-4 d-flex py-1 justify-content-center"},ue={key:0,name:"restoreForm"},de={class:"input-group"},re={class:"input-group-prepend"},pe={class:"input-group-text"},ce={class:"custom-file"},me={id:"input-file-label",class:"custom-file-label",for:"input-file","data-browse":"Suchen"},be={class:"input-group-append"},fe=["disabled"],ge={class:"row justify-content-center"},he={class:"col-md-4 d-flex py-1 justify-content-center"},ke={key:1,name:"cloudBackupForm"},ye={key:0},ve={name:"dataMigrationForm"},_e={class:"input-group"},we={class:"input-group-prepend"},Ce={class:"input-group-text"},Be={class:"custom-file"},De={id:"data-migration-file-label",class:"custom-file-label",for:"data-migration-file","data-browse":"Suchen"},Se={class:"input-group-append"},Oe=["disabled"],We={class:"row justify-content-center"},Me={class:"col-md-4 d-flex py-1 justify-content-center"},Fe={key:1,name:"resetForm"},Ae={class:"row justify-content-center"},Te={class:"col-md-4 d-flex py-1 justify-content-center"};function xe(t,e,u,g,s,a){const b=m("openwb-base-button-group-input"),p=m("openwb-base-alert"),v=m("openwb-base-heading"),k=m("font-awesome-icon"),C=m("openwb-base-click-button"),M=m("openwb-base-select-input"),A=m("openwb-base-button-input"),T=m("openwb-backup-cloud-proxy"),x=m("openwb-base-submit-buttons"),O=m("openwb-base-card");return r(),f("div",oe,[u.installAssistantActive?_("",!0):(r(),w(p,{key:0,subtype:"danger"},{default:l(()=>[e[17]||(e[17]=n("h2",null,"Achtung!",-1)),e[18]||(e[18]=n("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),o(b,{modelValue:s.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=c=>s.warningAcknowledged=c),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),s.warningAcknowledged||u.installAssistantActive?(r(),f("div",ie,[o(O,{title:"Sicherung / Wiederherstellung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{default:l(()=>{var c,h;return[n("form",se,[o(v,null,{default:l(()=>e[19]||(e[19]=[i("Sicherung")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[20]||(e[20]=[i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[21]||(e[21]=[i(" Nachdem die Sicherung abgeschlossen ist, kann die erstellte Datei über den Link in der Benachrichtigung oder "),n("a",{href:"/openWB/data/backup/",target:"_blank"},"hier",-1),i(" heruntergeladen werden. Beim Herunterladen bitte darauf achten, dass die Datei mit der Endung .tar.gz gespeichert wird. Ggf das automatische Entpacken des Browsers deaktivieren. ")])),_:1}),n("div",ae,[n("div",le,[o(C,{class:"btn-success clickable",onButtonClicked:e[1]||(e[1]=d=>a.sendSystemCommand("createBackup",{use_extended_filename:!0}))},{default:l(()=>[e[22]||(e[22]=i(" Sicherung erstellen ")),o(k,{"fixed-width":"",icon:["fas","archive"]})]),_:1})])])]),s.showRestoreSection?(r(),f("form",ue,[e[27]||(e[27]=n("hr",null,null,-1)),o(v,null,{default:l(()=>e[23]||(e[23]=[i("Wiederherstellung")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[24]||(e[24]=[i(" Für die Wiederherstellung wird eine aktive Internetverbindung benötigt."),n("br",null,null,-1),i(' Aktuell können nur Sicherungen wiederhergestellt werden, die in den Entwicklungszweigen "master", "Beta" oder "Release" erstellt wurden! ')])),_:1}),n("div",de,[n("div",re,[n("div",pe,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",ce,[n("input",{id:"input-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[2]||(e[2]=d=>a.updateSelectedRestoreFile(d))},null,32),n("label",me,y(s.selectedRestoreFile?s.selectedRestoreFile.name:"Bitte eine Datei auswählen"),1)]),n("div",be,[n("button",{class:D(["btn",s.selectedRestoreFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedRestoreFile,type:"button",onClick:e[3]||(e[3]=d=>a.uploadRestoreFile())},[e[25]||(e[25]=i(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,fe)])]),n("div",ge,[n("div",he,[o(C,{class:D(s.restoreUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.restoreUploadDone,onButtonClicked:e[4]||(e[4]=d=>a.restoreBackup())},{default:l(()=>[e[26]||(e[26]=i(" Wiederherstellung starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])):_("",!0),u.showBackupCloudSection?(r(),f("form",ke,[e[31]||(e[31]=n("hr",null,null,-1)),o(v,null,{default:l(()=>e[28]||(e[28]=[i(" Automatische Sicherung in einen Cloud-Dienst ")])),_:1}),o(p,{subtype:"info"},{default:l(()=>e[29]||(e[29]=[i(" Ist die openWB als primary konfiguriert, wid zwischen Mitternacht und 5:00 Uhr automatisch eine Sicherung erstellt und in den angegebenen Cloud-Dienst (nicht openWB Cloud!) hochgeladen. Ist kein Cloud-Dienst konfiguriert, wird keine automatische Sicherung erstellt. Die automatische Sicherung kann unabhängig von der openWB Cloud genutzt werden."),n("br",null,null,-1),i(" Die manuelle Cloud-Sicherung und -falls aktiviert- die Sicherung vor einem Update werden sowohl von einer primary als auch von einer secondary durchgeführt."),n("br",null,null,-1),i(" Die Anleitung zur Konfiguration des Cloud-Dienstes findest Du "),n("a",{href:"https://github.com/openWB/core/wiki/Cloud-Sicherung",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),i(" . ")])),_:1}),o(M,{class:"mb-2",title:"Backup-Cloud",options:a.backupCloudList,"model-value":(c=t.$store.state.mqtt["openWB/system/backup_cloud/config"])==null?void 0:c.type,"onUpdate:modelValue":e[5]||(e[5]=d=>a.updateSelectedBackupCloud(d))},null,8,["options","model-value"]),(h=t.$store.state.mqtt["openWB/system/backup_cloud/config"])!=null&&h.type?(r(),f("div",ye,[o(b,{title:"Sicherung vor System Update",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/backup_cloud/backup_before_update"],"onUpdate:modelValue":e[6]||(e[6]=d=>t.updateState("openWB/system/backup_cloud/backup_before_update",d))},{help:l(()=>e[30]||(e[30]=[i(" Ist diese Option aktiviert, dann wird vor jedem System-Update automatisch eine Sicherung erstellt und diese in die Backup-Cloud hochgeladen. ")])),_:1},8,["model-value"]),o(A,{title:"Manuelle Cloud-Sicherung","button-text":"Sicherung erstellen und hochladen",subtype:"success",onButtonClicked:e[7]||(e[7]=d=>a.sendSystemCommand("createCloudBackup",{}))}),o(T,{"backup-cloud":t.$store.state.mqtt["openWB/system/backup_cloud/config"],"onUpdate:configuration":e[8]||(e[8]=d=>a.updateConfiguration("openWB/system/backup_cloud/config",d)),onSendCommand:e[9]||(e[9]=d=>a.sendSystemCommand(d.command,d.args))},null,8,["backup-cloud"])])):_("",!0),o(x,{"form-name":"cloudBackupForm","hide-reset":!0,"hide-defaults":!0,onSave:e[10]||(e[10]=d=>t.$emit("save")),onReset:e[11]||(e[11]=d=>t.$emit("reset")),onDefaults:e[12]||(e[12]=d=>t.$emit("defaults"))})])):_("",!0)]}),_:1},8,["collapsed"]),u.installAssistantActive?_("",!0):(r(),w(O,{key:0,title:"Datenübernahme",subtype:"success",collapsible:!0,collapsed:!0},{default:l(()=>[n("form",ve,[o(p,{subtype:"info"},{default:l(()=>e[32]||(e[32]=[i(" Hier kann die Sicherung einer älteren 1.9er Version hochgeladen werden, um vorhandene historische Daten (Diagramme und Ladeprotokolle) sowie Cloud-Daten und Seriennummer in diese Installation zu importieren. Die Zuordnung zwischen den alten und neuen Komponenten muss manuell durchgeführt werden. ")])),_:1}),o(p,{subtype:"danger"},{default:l(()=>e[33]||(e[33]=[i(" Die Portierung kann bei vielen historischen Daten von mehreren Jahren durchaus bis zu 30 Minuten dauern. Die openWB in dieser Zeit bitte nicht herunterfahren! Du erhältst eine Meldung, wenn die Datenübernahme abgeschlossen ist."),n("br",null,null,-1),i(" Vor der Datenübernahme unbedingt eine Sicherung erstellen."),n("br",null,null,-1),i(" Die Datenübernahme kann nur durch Einspielen einer Sicherung rückgängig gemacht werden! ")])),_:1}),n("div",_e,[n("div",we,[n("div",Ce,[o(k,{"fixed-width":"",icon:["fas","file-archive"]})])]),n("div",Be,[n("input",{id:"data-migration-file",type:"file",class:"custom-file-input",accept:".tar.gz,application/gzip,application/tar+gzip",onChange:e[13]||(e[13]=c=>a.updateSelectedDataMigrationFile(c))},null,32),n("label",De,y(s.selectedDataMigrationFile?s.selectedDataMigrationFile.name:"Bitte eine Datei auswählen"),1)]),n("div",Se,[n("button",{class:D(["btn",s.selectedDataMigrationFile?"btn-success clickable":"btn-outline-success"]),disabled:!s.selectedDataMigrationFile,type:"button",onClick:e[14]||(e[14]=c=>a.uploadDataMigrationFile())},[e[34]||(e[34]=i(" Hochladen ")),o(k,{"fixed-width":"",icon:["fas","upload"]})],10,Oe)])]),o(v,null,{default:l(()=>e[35]||(e[35]=[i(" Zuordnung der Komponenten ")])),_:1}),(r(!0),f(W,null,F(s.dataMigrationConfig,c=>(r(),f("div",{key:c.sectionName},[o(v,null,{default:l(()=>[i(y(c.sectionName),1)]),_:2},1024),(r(!0),f(W,null,F(c.sectionComponents,h=>(r(),w(M,{key:h.key,modelValue:s.dataMigrationMapping[h.key],"onUpdate:modelValue":d=>s.dataMigrationMapping[h.key]=d,title:h.label,options:a.getMigrationOptions(h.validTypes)},I({_:2},[h.help?{name:"help",fn:l(()=>[i(y(h.help),1)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","title","options"]))),128))]))),128)),n("div",We,[n("div",Me,[o(C,{class:D(s.dataMigrationUploadDone?"btn-success clickable":"btn-outline-success"),disabled:!s.dataMigrationUploadDone,onButtonClicked:e[15]||(e[15]=c=>a.dataMigration())},{default:l(()=>[e[36]||(e[36]=i(" Datenübernahme starten ")),o(k,{"fixed-width":"",icon:["fas","box-open"]})]),_:1},8,["class","disabled"])])])])]),_:1})),u.installAssistantActive?_("",!0):(r(),f("form",Fe,[o(O,{title:"Zurücksetzen",subtype:"danger",collapsible:!0,collapsed:!0},{footer:l(()=>[n("div",Ae,[n("div",Te,[o(C,{class:"btn-danger clickable",onButtonClicked:e[16]||(e[16]=c=>a.factoryReset())},{default:l(()=>[o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[38]||(e[38]=i(" Zurücksetzen ")),o(k,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1})])])]),default:l(()=>[o(p,{subtype:"danger"},{default:l(()=>e[37]||(e[37]=[i(" Alle Einstellungen, angelegte Geräte/Komponenten, Ladepunkte und Fahrzeuge, etc, Tages-, Monats- und Jahresauswertungen sowie das Ladeprotokoll werden unwiederbringlich gelöscht. Auch die Vorkonfiguration im Auslieferungszustand wird gelöscht. Die openWB muss danach komplett neu eingerichtet werden. Die openWB wird hierfür automatisch neu gestartet. Bitte erstelle vor dem Zurücksetzen eine Sicherung! ")])),_:1})]),_:1})]))])):_("",!0)])}const Le=S(ne,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DataManagement.vue"]]),Re=Object.freeze(Object.defineProperty({__proto__:null,default:Le},Symbol.toStringTag,{value:"Module"}));export{J as B,Le as D,Re as a};
diff --git a/web/settings/assets/DebugConfig-6d0524fc.js b/web/settings/assets/DebugConfig-37cd830d.js
similarity index 98%
rename from web/settings/assets/DebugConfig-6d0524fc.js
rename to web/settings/assets/DebugConfig-37cd830d.js
index 138ca49705..4676359afe 100644
--- a/web/settings/assets/DebugConfig-6d0524fc.js
+++ b/web/settings/assets/DebugConfig-37cd830d.js
@@ -1,2 +1,2 @@
-import{C as k}from"./index-c79666b6.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-41164876.js";import{_,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as b,J as F,K as N,y as f}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
+import{C as k}from"./index-7731ba98.js";import{l as B,a1 as D,a2 as L,F as W}from"./vendor-fortawesome-41164876.js";import{_,u as s,k as d,A as w,N as l,D as i,q as C,P as x,x as v,z as y,l as b,J as F,K as N,y as f}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";B.add(D,L);const $={name:"OpenwbLogCard",components:{FontAwesomeIcon:W},props:{title:{type:String,required:!0},logFile:{type:String,required:!0}},data(){return{logData:"-- noch nicht geladen --",loading:!1}},methods:{async getFilePromise(n,e=!1){return this.axios.get(location.protocol+"//"+location.host+n).then(t=>t.data).catch(t=>t.response?t.response.status==404&&e?"":`A 404 is expected if running node.js dev server!
 `+t.response.status+" "+t.response.statusText+": "+t.response.request.responseURL:t.request?t.request:t.message)},async loadLog(n){this.logData="wird aktualisiert...",this.loading=!0;var e="";for(let r=4;r>=1;r--){const a=await this.getFilePromise(n+"."+r,!0);e+=a}const t=await this.getFilePromise(n);e+=t,this.logData=e,this.loading=!1}}},S={class:"log-data mb-0"};function P(n,e,t,r,a,g){const u=s("font-awesome-icon"),m=s("openwb-base-avatar"),p=s("openwb-base-card");return d(),w(p,{title:t.title,class:"log-card mt-3",collapsible:!0,collapsed:!0},{actions:l(()=>[i(m,{class:"bg-success clickable",onClick:e[0]||(e[0]=x(c=>g.loadLog(t.logFile),["stop"]))},{default:l(()=>[i(u,{"fixed-width":"",class:C(a.loading?"fa-spin-pulse":""),icon:a.loading?["fas","spinner"]:["fas","file-download"]},null,8,["class","icon"])]),_:1})]),default:l(()=>[v("pre",S,y(a.logData),1)]),_:1},8,["title"])}const I=_($,[["render",P],["__scopeId","data-v-a320c3d6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/debug_config/LogCard.vue"]]),q={name:"OpenwbDebuggingView",components:{OpenwbLogCard:I},mixins:[k],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/debug_level"],logFiles:[{title:"Main-Log",fileName:"/openWB/ramdisk/main.log"},{title:"Log des internen Ladepunktes",fileName:"/openWB/ramdisk/internal_chargepoint.log"},{title:"MQTT-Log",fileName:"/openWB/ramdisk/mqtt.log"},{title:"SoC-Log",fileName:"/openWB/ramdisk/soc.log"},{title:"Protokoll des letzten Updates",fileName:"/openWB/data/log/update.log"},{title:"Protokoll des Remote-Dienstes",fileName:"/openWB/ramdisk/remote_support.log"},{title:"Protokoll des SmartHome Dienstes",fileName:"/openWB/ramdisk/smarthome.log"},{title:"Protokoll der Datenmigration",fileName:"/openWB/data/log/data_migration.log"}]}}},z={class:"debugging"},V={name:"debugConfigForm"};function T(n,e,t,r,a,g){const u=s("openwb-base-button-group-input"),m=s("openwb-base-alert"),p=s("openwb-base-card"),c=s("openwb-base-submit-buttons"),h=s("openwb-log-card");return d(),b("div",z,[v("form",V,[i(p,{title:"Protokollierung"},{default:l(()=>[i(u,{title:"Debug Level",buttons:[{buttonValue:30,text:"Warnungen und Fehler"},{buttonValue:20,text:"Info"},{buttonValue:10,text:"Details"}],"model-value":n.$store.state.mqtt["openWB/system/debug_level"],"onUpdate:modelValue":e[0]||(e[0]=o=>n.updateState("openWB/system/debug_level",o))},{help:l(()=>e[4]||(e[4]=[f(' Wenn der Debug Level auf "Info" oder "Details" gesetzt wird, werden mehr Informationen in die Logdateien geschrieben. Im normalen Betrieb sollte immer "Warnungen und Fehler" gewählt werden, um die Schreibvorgänge auf der SD-Karte zu reduzieren. ')])),_:1},8,["model-value"]),i(m,{subtype:"warning"},{default:l(()=>e[5]||(e[5]=[f(' Achtung! In den Einstellungen "Info" und "Details" können in den Logdateien sensible Daten wie Benutzernamen und Kennwörter enthalten sein. Diese sollten vor dem Veröffentlichen z.B. im Forum unkenntlich gemacht werden. Private IP-Adressen (z.B. 192.168.x.x) müssen nicht maskiert werden, da diese nicht über das Internet erreichbar sind. ')])),_:1})]),_:1}),i(c,{"form-name":"debugConfigForm",onSave:e[1]||(e[1]=o=>n.$emit("save")),onReset:e[2]||(e[2]=o=>n.$emit("reset")),onDefaults:e[3]||(e[3]=o=>n.$emit("defaults"))})]),(d(!0),b(F,null,N(a.logFiles,o=>(d(),w(h,{key:o.fileName,title:o.title,"log-file":o.fileName},null,8,["title","log-file"]))),128))])}const j=_(q,[["render",T],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/DebugConfig.vue"]]);export{j as default};
diff --git a/web/settings/assets/GeneralChargeConfig-764e9a8c.js b/web/settings/assets/GeneralChargeConfig-764e9a8c.js
deleted file mode 100644
index 14452bd935..0000000000
--- a/web/settings/assets/GeneralChargeConfig-764e9a8c.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as m,C}from"./index-c79666b6.js";import{_ as E}from"./dynamic-import-helper-be004503.js";import{_ as b,u as o,k as l,l as s,D as n,N as a,y as r,z as v,x as d,a0 as T,A as k,a1 as V,J as P,B as W}from"./vendor-a21b3a62.js";const L={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},q=b(L,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),M={name:"ElectricityTariffConfigFallback",mixins:[q]},O={class:"backup-cloud-fallback"};function A(t,e,f,h,y,p){const u=o("openwb-base-alert"),g=o("openwb-base-textarea");return l(),s("div",O,[n(u,{subtype:"warning"},{default:a(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+v(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(g,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=c=>t.updateConfiguration(c,"configuration"))},{help:a(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:a(()=>[d("pre",null,v(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const U=b(M,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),F={name:"OpenwbElectricityTariffProxy",props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),T({loader:()=>E(Object.assign({"./awattar/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-897c7196.js"),["assets/electricity_tariff-897c7196.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-10566180.js"),["assets/electricity_tariff-10566180.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-32db6a64.js"),["assets/electricity_tariff-32db6a64.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-eb995216.js"),["assets/electricity_tariff-eb995216.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>m(()=>import("./electricity_tariff-77492691.js"),["assets/electricity_tariff-77492691.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:U})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function D(t,e,f,h,y,p){const u=o("openwb-base-heading");return l(),s(P,null,[n(u,null,{default:a(()=>[r(' Einstellungen für Modul "'+v(f.electricityTariff.name)+'" ',1)]),_:1}),(l(),k(V(p.myComponent),{"electricity-tariff":f.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=g=>p.updateConfiguration(g))},null,40,["electricity-tariff"]))],64)}const N=b(F,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),I={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:N},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(f=>f.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},j={class:"generalChargeConfig"},R={name:"generalChargeConfigForm"},Z={key:0},G={key:1},x={key:1},J={key:2},K={key:0},H={key:1},Q={key:0};function X(t,e,f,h,y,p){const u=o("openwb-base-alert"),g=o("openwb-base-button-group-input"),c=o("openwb-base-range-input"),w=o("openwb-base-heading"),_=o("openwb-base-number-input"),B=o("openwb-base-card"),z=o("openwb-base-select-input"),S=o("openwb-electricity-tariff-proxy"),$=o("openwb-base-submit-buttons");return l(),s("div",j,[d("form",R,[n(B,{title:"Allgemein"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",Z,[n(u,{subtype:"info"},{default:a(()=>e[12]||(e[12]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",G,[n(g,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:a(()=>e[13]||(e[13]=[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),d("br",null,null,-1),r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),k(c,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:a(()=>e[14]||(e[14]=[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):W("",!0),n(g,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=i=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:a(()=>e[15]||(e[15]=[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),d("br",null,null,-1),r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(c,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=i=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:a(()=>e[16]||(e[16]=[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),d("br",null,null,-1),r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[20]||(e[20]=d("hr",null,null,-1)),n(w,null,{help:a(()=>e[17]||(e[17]=[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),d("br",null,null,-1),r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:a(()=>[e[18]||(e[18]=r(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",x,[n(u,{subtype:"info"},{default:a(()=>e[19]||(e[19]=[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")])),_:1})])):(l(),s("div",J,[n(_,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=i=>t.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(_,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=i=>t.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(_,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=i=>t.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(B,{title:"Optional"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",K,[n(u,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",H,[n(w,null,{default:a(()=>e[22]||(e[22]=[r(" Variable Stromtarife ")])),_:1}),n(u,{subtype:"info"},{default:a(()=>e[23]||(e[23]=[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),d("br",null,null,-1),r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(z,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",Q,[n(S,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricity-tariff"])])):W("",!0)]))]),_:1}),n($,{"form-name":"generalChargeConfigForm",onSave:e[9]||(e[9]=i=>t.$emit("save")),onReset:e[10]||(e[10]=i=>t.$emit("reset")),onDefaults:e[11]||(e[11]=i=>t.$emit("defaults"))})])])}const Y=b(I,[["render",X],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ie=Object.freeze(Object.defineProperty({__proto__:null,default:Y},Symbol.toStringTag,{value:"Module"}));export{q as E,ie as G};
diff --git a/web/settings/assets/GeneralChargeConfig-9f53f87a.js b/web/settings/assets/GeneralChargeConfig-9f53f87a.js
new file mode 100644
index 0000000000..fc58a1da61
--- /dev/null
+++ b/web/settings/assets/GeneralChargeConfig-9f53f87a.js
@@ -0,0 +1 @@
+import{_ as c,C as O}from"./index-7731ba98.js";import{_ as L}from"./dynamic-import-helper-be004503.js";import{_ as v,u as a,k as l,l as s,D as n,N as o,y as r,z as w,x as d,a0 as q,A as z,a1 as A,J as M,B as y}from"./vendor-a21b3a62.js";const U={props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},D=v(U,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/ElectricityTariffConfigMixin.vue"]]),F={name:"ElectricityTariffConfigFallback",mixins:[D]},N={class:"backup-cloud-fallback"};function I(t,e,g,B,W,p){const u=a("openwb-base-alert"),f=a("openwb-base-textarea");return l(),s("div",N,[n(u,{subtype:"warning"},{default:o(()=>[r(' Es wurde keine Konfigurationsseite für den Anbieter "'+w(t.electricityTariff.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(f,{title:"Konfiguration",subtype:"json","model-value":t.electricityTariff.configuration,"onUpdate:modelValue":e[0]||(e[0]=b=>t.updateConfiguration(b,"configuration"))},{help:o(()=>e[1]||(e[1]=[r(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(u,{subtype:"info"},{default:o(()=>[d("pre",null,w(JSON.stringify(t.electricityTariff.configuration,void 0,2)),1)]),_:1})])}const Z=v(F,[["render",I],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffConfigFallback.vue"]]),j={name:"OpenwbElectricityTariffProxy",props:{electricityTariff:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading electricity tariff cloud: ${this.electricityTariff.type}`),q({loader:()=>L(Object.assign({"./awattar/electricity_tariff.vue":()=>c(()=>import("./electricity_tariff-22a41d6f.js"),["assets/electricity_tariff-22a41d6f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-7731ba98.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./energycharts/electricity_tariff.vue":()=>c(()=>import("./electricity_tariff-9cd88804.js"),["assets/electricity_tariff-9cd88804.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-7731ba98.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rabot/electricity_tariff.vue":()=>c(()=>import("./electricity_tariff-d3251994.js"),["assets/electricity_tariff-d3251994.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-7731ba98.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tibber/electricity_tariff.vue":()=>c(()=>import("./electricity_tariff-55c8df75.js"),["assets/electricity_tariff-55c8df75.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-7731ba98.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./voltego/electricity_tariff.vue":()=>c(()=>import("./electricity_tariff-322384b0.js"),["assets/electricity_tariff-322384b0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-7731ba98.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.electricityTariff.type}/electricity_tariff.vue`),errorComponent:Z})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function R(t,e,g,B,W,p){const u=a("openwb-base-heading");return l(),s(M,null,[n(u,null,{default:o(()=>[r(' Einstellungen für Modul "'+w(g.electricityTariff.name)+'" ',1)]),_:1}),(l(),z(A(p.myComponent),{"electricity-tariff":g.electricityTariff,"onUpdate:configuration":e[0]||(e[0]=f=>p.updateConfiguration(f))},null,40,["electricity-tariff"]))],64)}const G=v(j,[["render",R],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/electricity_tariffs/OpenwbElectricityTariffProxy.vue"]]),J={name:"OpenwbGeneralChargeConfigView",components:{OpenwbElectricityTariffProxy:G},mixins:[O],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/phase_switch_delay","openWB/general/chargemode_config/retry_failed_phase_switches","openWB/general/chargemode_config/unbalanced_load","openWB/general/chargemode_config/unbalanced_load_limit","openWB/general/prices/bat","openWB/general/prices/grid","openWB/general/prices/pv","openWB/optional/et/provider","openWB/optional/ocpp/config","openWB/system/configurable/electricity_tariffs"]}},computed:{electricityTariffList(){return this.$store.state.mqtt["openWB/system/configurable/electricity_tariffs"]}},methods:{getElectricityTariffDefaultConfiguration(t){const e=this.electricityTariffList.find(g=>g.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedElectricityTariff(t){this.updateState("openWB/optional/et/provider",t,"type"),this.updateState("openWB/optional/et/provider",this.getElectricityTariffDefaultConfiguration(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},x={class:"generalChargeConfig"},H={name:"generalChargeConfigForm"},K={key:0},Q={key:1},X={key:1},Y={key:2},ee={key:0},te={key:1},ne={key:0},ie={key:0};function re(t,e,g,B,W,p){const u=a("openwb-base-alert"),f=a("openwb-base-button-group-input"),b=a("openwb-base-range-input"),k=a("openwb-base-heading"),_=a("openwb-base-number-input"),h=a("openwb-base-card"),C=a("openwb-base-select-input"),E=a("openwb-electricity-tariff-proxy"),V=a("openwb-base-text-input"),T=a("openwb-base-submit-buttons");return l(),s("div",x,[d("form",H,[n(h,{title:"Allgemein"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",K,[n(u,{subtype:"info"},{default:o(()=>e[15]||(e[15]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",Q,[n(f,{title:"Begrenzung der Schieflast",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"],"onUpdate:modelValue":e[0]||(e[0]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load",i))},{help:o(()=>e[16]||(e[16]=[r(" Wenn diese Option aktiviert ist, werden nicht-dreiphasige Ladevorgänge so geregelt, dass am Netzanschlusspunkt (EVU-Zähler) die eingestellte Grenze für die Schieflast nicht überschritten wird. Hierfür muss der EVU-Zähler einzelne Phasenströme bereitstellen!"),d("br",null,null,-1),r(' Weiterhin müssen bei den Ladepunkten sowie Fahrzeugen sämtliche Angaben zur Anzahl angeschlossener/unterstützter Phasen und der Phasenrotation hinterlegt werden, damit der Regelung bekannt ist, welcher Ladevorgang welche Phase am Netzanschluss beeinflusst. siehe "Konfiguration - Ladepunkte -> elektrischer Anschluss - Phase 1" und "Konfiguration - Fahrzeuge -> Fahrzeug-Profile" ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load"]?(l(),z(b,{key:0,title:"Erlaubte Schieflast",min:10,max:32,step:1,unit:"A","model-value":t.$store.state.mqtt["openWB/general/chargemode_config/unbalanced_load_limit"],"onUpdate:modelValue":e[1]||(e[1]=i=>t.updateState("openWB/general/chargemode_config/unbalanced_load_limit",i))},{help:o(()=>e[17]||(e[17]=[r(" Hiermit wird festgelegt, welche Schieflast am Netzanschlusspunkt erlaubt ist. Bei Überschreitung werden gezielt einzelne Ladevorgänge in der Leistung begrenzt. ")])),_:1},8,["model-value"])):y("",!0),n(f,{title:"Phasenumschaltung wiederholt anstoßen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/retry_failed_phase_switches"],"onUpdate:modelValue":e[2]||(e[2]=i=>t.updateState("openWB/general/chargemode_config/retry_failed_phase_switches",i))},{help:o(()=>e[18]||(e[18]=[r(" Wenn diese Option aktiviert ist, werden bis zu drei Umschaltversuche vorgenommen, wenn die vorgegebene und genutzte Phasenzahl nicht übereinstimmen. Wird die Option deaktiviert, wird nur eine Umschaltung durchgeführt."),d("br",null,null,-1),r(" Die gezählten Fehlversuche werden mit dem Abstecken zurückgesetzt. ")])),_:1},8,["model-value"]),n(b,{title:"Verzögerung automat. Phasenumschaltung",min:0,max:14,step:1,labels:[{label:"1⇑ 15⇓ Min.",value:1},{label:"2⇑ 14⇓ Min.",value:2},{label:"3⇑ 13⇓ Min.",value:3},{label:"4⇑ 12⇓ Min.",value:4},{label:"5⇑ 11⇓ Min.",value:5},{label:"6⇑ 10⇓ Min.",value:6},{label:"7⇑ 9⇓ Min.",value:7},{label:"8⇑ 8⇓ Min.",value:8},{label:"9⇑ 7⇓ Min.",value:9},{label:"10⇑ 6⇓ Min.",value:10},{label:"11⇑ 5⇓ Min.",value:11},{label:"12⇑ 4⇓ Min.",value:12},{label:"13⇑ 3⇓ Min.",value:13},{label:"14⇑ 2⇓ Min.",value:14},{label:"15⇑ 1⇓ Min.",value:15}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/phase_switch_delay"],"onUpdate:modelValue":e[3]||(e[3]=i=>t.updateState("openWB/general/chargemode_config/phase_switch_delay",i))},{help:o(()=>e[19]||(e[19]=[r(" Um zu viele Umschaltungen zu vermeiden, wird Anhand dieses Wertes definiert, wann die Umschaltung erfolgen soll. Ist für durchgehend x Minuten die Maximalstromstärke erreicht, wird auf mehrphasige Ladung ⇑ umgestellt. Ist die Ladung nur für ein Intervall unterhalb der Maximalstromstärke, beginnt das Intervall für die Umschaltung erneut. Ist die Ladung im mehrphasigen Modus für 16 - x Minuten auf der Minimalstromstärke, wird wieder auf einphasige Ladung ⇓ gewechselt."),d("br",null,null,-1),r(" Ist ausreichend Überschuss vorhanden, wird beim Ladestart die Umschaltverzögerung nicht abgewartet, sondern direkt mit mehrphasiger Ladung begonnen. ")])),_:1},8,["model-value"]),e[23]||(e[23]=d("hr",null,null,-1)),n(k,null,{help:o(()=>e[20]||(e[20]=[r(" Zur Berechnung der Ladekosten im Lade-Log werden stundenweise die Anteile der Stromquellen (Speicher, Netz, PV) berechnet und mit den hier angegebenen Preisen multipliziert."),d("br",null,null,-1),r(" Ist die Abrechnung über das Ladeprotokoll, z.B. mit dem Arbeitgeber, vereinbart, ist bei allen drei Feldern der vereinbarte Preis einzutragen. ")])),default:o(()=>[e[21]||(e[21]=r(" Berechnung der Ladekosten "))]),_:1}),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",X,[n(u,{subtype:"info"},{default:o(()=>e[22]||(e[22]=[r(" Für den Netzbezug wird der dynamische Strompreis des Anbieters für variable Stromtarife verwendet (stündliche Aktualisierung durch den Anbieter). ")])),_:1})])):(l(),s("div",Y,[n(_,{title:"Preis für Netzbezug",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/grid"]*1e5,"onUpdate:modelValue":e[4]||(e[4]=i=>t.updateState("openWB/general/prices/grid",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])])),n(_,{title:"Preis für Speicherentladung",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/bat"]*1e5,"onUpdate:modelValue":e[5]||(e[5]=i=>t.updateState("openWB/general/prices/bat",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"]),n(_,{title:"Preis für PV-Strom",step:.001,precision:3,unit:"ct/kWh",required:"","model-value":t.$store.state.mqtt["openWB/general/prices/pv"]*1e5,"onUpdate:modelValue":e[6]||(e[6]=i=>t.updateState("openWB/general/prices/pv",parseFloat((i/1e5).toFixed(7))))},null,8,["model-value"])]))]),_:1}),n(h,{title:"Optional"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),s("div",ee,[n(u,{subtype:"info"},{default:o(()=>e[24]||(e[24]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),s("div",te,[n(k,null,{default:o(()=>e[25]||(e[25]=[r(" Variable Stromtarife ")])),_:1}),n(u,{subtype:"info"},{default:o(()=>e[26]||(e[26]=[r(" Bei Sofort- und Zeitladen wird nur geladen, wenn der Strompreis unter dem maximalen angegeben Strompreis liegt. Für Zielladen wird die Ladedauer ermittelt und dann zu den günstigsten Stunden geladen."),d("br",null,null,-1),r(" Wenn keine Preise abgefragt werden können, wird bei Sofort- und Zeitladen immer geladen und bei Zielladen zunächst mit PV-Überschuss und zum Erreichen des Zieltermins mit Netzstrom. ")])),_:1}),n(C,{class:"mb-2",title:"Anbieter",options:p.electricityTariffList,"model-value":t.$store.state.mqtt["openWB/optional/et/provider"]?t.$store.state.mqtt["openWB/optional/et/provider"].type:"","onUpdate:modelValue":e[7]||(e[7]=i=>p.updateSelectedElectricityTariff(i))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/optional/et/provider"]&&t.$store.state.mqtt["openWB/optional/et/provider"].type?(l(),s("div",ne,[n(E,{"electricity-tariff":t.$store.state.mqtt["openWB/optional/et/provider"],"onUpdate:configuration":e[8]||(e[8]=i=>p.updateConfiguration("openWB/optional/et/provider",i))},null,8,["electricity-tariff"])])):y("",!0)]))]),_:1}),n(h,{title:"OCPP Anbindung"},{default:o(()=>{var i,P,S,$;return[n(f,{title:"OCPP aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(i=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:i.active,"onUpdate:modelValue":e[9]||(e[9]=m=>t.updateState("openWB/optional/ocpp/config",m,"active"))},null,8,["model-value"]),((P=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:P.active)===!0?(l(),s("div",ie,[n(u,{subtype:"info"},{default:o(()=>e[27]||(e[27]=[r(" Die Ladepunkte übermitteln den ID-Tag, Heartbeat und den Zählerstand zum Zeitpunkt des Ansteckens, Absteckens und alle 5 Minuten. Eine Steuerung per OCPP ist nicht möglich."),d("br",null,null,-1),r("Alle Ladepunkte, die ihre Daten an das OCPP-Backend übermitteln sollen, müssen zunächst im OCPP-Backend angelegt werden. Die dort eingetragene Chargebox ID muss in der openWB in den Einstellungen des Ladepunkts eingetragen werden. ")])),_:1}),n(V,{title:"URL des OCPP-Backends",subtype:"host","model-value":(S=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:S.url,"onUpdate:modelValue":e[10]||(e[10]=m=>t.updateState("openWB/optional/ocpp/config",m,"url"))},null,8,["model-value"]),n(C,{title:"Version","not-selected":"Bitte auswählen",options:[{value:"ocpp1.6",text:"OCPP 1.6"},{value:"ocpp2.0.1",text:"OCPP 2.0.1"}],"model-value":($=t.$store.state.mqtt["openWB/optional/ocpp/config"])==null?void 0:$.version,"onUpdate:modelValue":e[11]||(e[11]=m=>t.updateState("openWB/optional/ocpp/config",m,"version"))},null,8,["model-value"])])):y("",!0)]}),_:1}),n(T,{"form-name":"generalChargeConfigForm",onSave:e[12]||(e[12]=i=>t.$emit("save")),onReset:e[13]||(e[13]=i=>t.$emit("reset")),onDefaults:e[14]||(e[14]=i=>t.$emit("defaults"))})])])}const oe=v(J,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralChargeConfig.vue"]]),ue=Object.freeze(Object.defineProperty({__proto__:null,default:oe},Symbol.toStringTag,{value:"Module"}));export{D as E,ue as G};
diff --git a/web/settings/assets/GeneralConfig-1687a15a.js b/web/settings/assets/GeneralConfig-7a50fc67.js
similarity index 98%
rename from web/settings/assets/GeneralConfig-1687a15a.js
rename to web/settings/assets/GeneralConfig-7a50fc67.js
index 357e4ec97f..a90d8b496b 100644
--- a/web/settings/assets/GeneralConfig-1687a15a.js
+++ b/web/settings/assets/GeneralConfig-7a50fc67.js
@@ -1 +1 @@
-import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-41164876.js";import{_ as U,C as re}from"./index-c79666b6.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as h,u as b,k as l,l as d,A as v,N as o,y as a,z as c,D as n,x as s,a0 as M,a1 as I,J as G,B as _}from"./vendor-a21b3a62.js";const ie={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},le=h(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),se={name:"WebThemeFallback",mixins:[le]},ue={class:"web-theme-fallback"},de={key:1};function pe(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-textarea");return l(),d("div",ue,[Object.keys(t.webTheme.configuration).length==0?(l(),v(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+c(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",de,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+c(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,c(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const ge=h(se,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const me={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:F},props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),M({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:ge})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function be(t,e,p,B,y,m){const g=b("font-awesome-icon"),r=b("openwb-base-alert"),w=b("openwb-base-heading");return l(),d(G,null,[p.webTheme.official?(l(),v(r,{key:0,subtype:"success"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+c(p.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),v(r,{key:1,subtype:"info"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(w,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+c(p.webTheme.name)+'" ',1)]),_:1}),(l(),v(I(m.myComponent),{"web-theme":p.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>m.updateConfiguration(W))},null,40,["web-theme"]))],64)}const fe=h(me,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},_e=h(ce,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),ve={name:"RippleControlReceiverConfigFallback",mixins:[_e]},we={class:"ripple-control-receiver-fallback"},he={key:1};function We(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-textarea");return l(),d("div",we,[Object.keys(t.rippleControlReceiver.configuration).length==0?(l(),v(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+c(t.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",he,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+c(t.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":t.rippleControlReceiver.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,c(JSON.stringify(t.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const Be=h(ve,[["render",We],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ye={name:"OpenwbRippleControlReceiverProxy",props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),M({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-7fecf9d6.js"),["assets/ripple_control_receiver-7fecf9d6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-370883cc.js"),["assets/ripple_control_receiver-370883cc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:Be})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Se(t,e,p,B,y,m){const g=b("openwb-base-heading");return l(),d(G,null,[n(g,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+c(p.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),v(I(m.myComponent),{"ripple-control-receiver":p.rippleControlReceiver,"onUpdate:configuration":e[0]||(e[0]=r=>m.updateConfiguration(r)),onSendCommand:e[1]||(e[1]=r=>m.sendCommand(r))},null,40,["ripple-control-receiver"]))],64)}const ke=h(ye,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const Ve={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:fe,OpenwbRippleControlReceiverProxy:ke,FontAwesomeIcon:F},mixins:[re],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(p=>p.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},getRippleControlReceiverDefaultConfiguration(t){const e=this.rippleControlReceiverList.find(p=>p.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedRippleControlReceiverModule(t){this.updateState("openWB/general/ripple_control_receiver/module",t,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(t))}}},Ce={class:"generalConfig"},Re={name:"generalConfigForm"},$e={key:0},Te={key:1},qe={key:1},ze={class:"border border-info w-100 p-1"},De={class:"border border-info w-100 p-1"},Oe={key:0},Ee={key:1},Ne={key:0},Ae={key:2},xe={key:0},Pe={key:0},Le={key:1},Ue={key:0},Je={key:0},Fe={key:1};function je(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-button-group-input"),w=b("openwb-base-copy-to-clipboard"),W=b("openwb-base-card"),S=b("openwb-base-heading"),k=b("openwb-base-select-input"),K=b("openwb-ripple-control-receiver-proxy"),H=b("openwb-web-theme-proxy"),f=b("font-awesome-icon"),Z=b("openwb-base-submit-buttons");return l(),d("div",Ce,[s("form",Re,[n(W,{title:"Steuerungsmodus"},{default:o(()=>[n(g,{subtype:"info"},{default:o(()=>e[29]||(e[29]=[s("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),s("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),s("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),s("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=u=>t.updateState("openWB/general/extern",u))},null,8,["model-value"]),p.installAssistantActive?_("",!0):(l(),d("div",$e,[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),v(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=u=>t.updateState("openWB/general/modbus_control",u))},{help:o(()=>e[30]||(e[30]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),s("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),d("div",Te,[n(g,{subtype:"info"},{default:o(()=>e[31]||(e[31]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):_("",!0)])),p.installAssistantActive?_("",!0):(l(),d("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=u=>t.updateState("openWB/general/http_api",u))},{help:o(()=>[e[38]||(e[38]=s("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1)),e[39]||(e[39]=s("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1)),s("ul",null,[s("li",null,[e[32]||(e[32]=a(" GET-Request:")),e[33]||(e[33]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+c(m.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),s("li",null,[e[34]||(e[34]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[35]||(e[35]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+c(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[40]||(e[40]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",ze,c(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),e[41]||(e[41]=s("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1)),e[42]||(e[42]=s("p",null,"Beispiel 2: integriertes Display abschalten",-1)),s("ul",null,[s("li",null,[e[36]||(e[36]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[37]||(e[37]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+c(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[43]||(e[43]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",De,c(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(W,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Oe,[n(g,{subtype:"info"},{default:o(()=>e[44]||(e[44]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):_("",!0),p.installAssistantActive?_("",!0):(l(),d("div",Ee,[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ne,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=u=>t.updateState("openWB/general/control_interval",u))},{help:o(()=>e[45]||(e[45]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),s("br",null,null,-1),s("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=u=>t.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>e[46]||(e[46]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),s("br",null,null,-1),s("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):_("",!0),e[47]||(e[47]=s("hr",null,null,-1))])),t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ae,[n(S,{class:"mt-0"},{default:o(()=>e[48]||(e[48]=[a(" Steuerbare Verbrauchseinrichtung ")])),_:1}),n(g,{sub_type:"info"},{default:o(()=>e[49]||(e[49]=[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')])),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:m.rippleControlReceiverList,"model-value":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":e[5]||(e[5]=u=>m.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),d("div",xe,[n(K,{"ripple-control-receiver":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":e[6]||(e[6]=u=>m.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["ripple-control-receiver"])])):_("",!0)])):_("",!0)]),_:1}),p.installAssistantActive?_("",!0):(l(),v(W,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Pe,[n(g,{subtype:"info"},{default:o(()=>e[50]||(e[50]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Le,[n(S,{class:"mt-0"},{default:o(()=>e[51]||(e[51]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),d("div",Ue,[n(k,{class:"mb-2",title:"Theme",groups:m.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[7]||(e[7]=u=>m.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(l(),v(H,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[8]||(e[8]=u=>m.updateConfiguration("openWB/general/web_theme",u))},null,8,["web-theme"])):_("",!0)])):_("",!0)]))]),_:1})),p.installAssistantActive?_("",!0):(l(),v(W,{key:1,title:"Lade-Log"},{default:o(()=>{var u,V,C,R,$,T,q,z,D,O,E,N,A,x,P,L;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Je,[n(g,{subtype:"info"},{default:o(()=>e[52]||(e[52]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Fe,[n(r,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[9]||(e[9]=i=>t.updateState("openWB/general/range_unit",i))},null,8,["model-value"]),n(S,null,{default:o(()=>e[53]||(e[53]=[a(" Auswahl der Datenfelder ")])),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":e[10]||(e[10]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","calendar"]}),e[54]||(e[54]=a(" Beginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":e[11]||(e[11]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","calendar"]}),e[55]||(e[55]=a(" Ende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":e[12]||(e[12]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","clock"]}),e[56]||(e[56]=a(" Dauer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":e[13]||(e[13]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","coins"]}),e[57]||(e[57]=a(" Kosten "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.data_power_source,"onUpdate:modelValue":e[14]||(e[14]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","pie-chart"]}),e[58]||(e[58]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.vehicle_name,"onUpdate:modelValue":e[15]||(e[15]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[59]||(e[59]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":e[16]||(e[16]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[60]||(e[60]=a(" Lademodus "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_prio,"onUpdate:modelValue":e[17]||(e[17]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[61]||(e[61]=a(" Priorität "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_rfid,"onUpdate:modelValue":e[18]||(e[18]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[62]||(e[62]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":e[19]||(e[19]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[63]||(e[63]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":e[20]||(e[20]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[64]||(e[64]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":e[21]||(e[21]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[65]||(e[65]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":e[22]||(e[22]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[66]||(e[66]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.data_imported_since_mode_switch,"onUpdate:modelValue":e[23]||(e[23]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[67]||(e[67]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_start,"onUpdate:modelValue":e[24]||(e[24]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[68]||(e[68]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_end,"onUpdate:modelValue":e[25]||(e[25]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[69]||(e[69]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{"form-name":"generalConfigForm",onSave:e[26]||(e[26]=u=>t.$emit("save")),onReset:e[27]||(e[27]=u=>t.$emit("reset")),onDefaults:e[28]||(e[28]=u=>t.$emit("defaults"))})])])}const Me=h(Ve,[["render",je],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Me},Symbol.toStringTag,{value:"Module"}));export{Me as G,_e as R,Ze as a};
+import{l as J,X,Y as Q,F,R as Y,K as ee,z as te,a4 as ne,a5 as oe,a6 as ae}from"./vendor-fortawesome-41164876.js";import{_ as U,C as re}from"./index-7731ba98.js";import{_ as j}from"./dynamic-import-helper-be004503.js";import{_ as h,u as b,k as l,l as d,A as v,N as o,y as a,z as c,D as n,x as s,a0 as M,a1 as I,J as G,B as _}from"./vendor-a21b3a62.js";const ie={props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},le=h(ie,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/WebThemeConfigMixin.vue"]]),se={name:"WebThemeFallback",mixins:[le]},ue={class:"web-theme-fallback"},de={key:1};function pe(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-textarea");return l(),d("div",ue,[Object.keys(t.webTheme.configuration).length==0?(l(),v(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das Web Theme "'+c(t.webTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",de,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das Web Theme "'+c(t.webTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Theme Konfiguration",subtype:"json","model-value":t.webTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,c(JSON.stringify(t.webTheme.configuration,void 0,2)),1)]),_:1})]))])}const ge=h(se,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeFallback.vue"]]);J.add(X,Q);const me={name:"OpenwbWebThemeProxy",components:{FontAwesomeIcon:F},props:{webTheme:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading web theme: ${this.webTheme.name}`),M({loader:()=>j(Object.assign({}),`./${this.webTheme.type}/webTheme.vue`),errorComponent:ge})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function be(t,e,p,B,y,m){const g=b("font-awesome-icon"),r=b("openwb-base-alert"),w=b("openwb-base-heading");return l(),d(G,null,[p.webTheme.official?(l(),v(r,{key:0,subtype:"success"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","certificate"]}),a(' Das ausgewählte Web Theme "'+c(p.webTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(l(),v(r,{key:1,subtype:"info"},{default:o(()=>[n(g,{"fixed-width":"",icon:["fas","people-group"]}),e[1]||(e[1]=a(" Das ausgewählte Theme wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. "))]),_:1})),n(w,null,{default:o(()=>[a(' Einstellungen für Web Theme "'+c(p.webTheme.name)+'" ',1)]),_:1}),(l(),v(I(m.myComponent),{"web-theme":p.webTheme,"onUpdate:configuration":e[0]||(e[0]=W=>m.updateConfiguration(W))},null,40,["web-theme"]))],64)}const fe=h(me,[["render",be],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/web_themes/OpenwbWebThemeProxy.vue"]]),ce={props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},_e=h(ce,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/RippleControlReceiverConfigMixin.vue"]]),ve={name:"RippleControlReceiverConfigFallback",mixins:[_e]},we={class:"ripple-control-receiver-fallback"},he={key:1};function We(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-textarea");return l(),d("div",we,[Object.keys(t.rippleControlReceiver.configuration).length==0?(l(),v(g,{key:0,subtype:"info"},{default:o(()=>[a(' Das RSE-Modul "'+c(t.rippleControlReceiver.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(l(),d("div",he,[n(g,{subtype:"warning"},{default:o(()=>[a(' Es wurde keine Konfigurationsseite für das RSE-Modul "'+c(t.rippleControlReceiver.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(r,{title:"Konfiguration",subtype:"json","model-value":t.rippleControlReceiver.configuration,"onUpdate:modelValue":e[0]||(e[0]=w=>t.updateConfiguration(w,"configuration"))},{help:o(()=>e[1]||(e[1]=[a(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(g,{subtype:"info"},{default:o(()=>[s("pre",null,c(JSON.stringify(t.rippleControlReceiver.configuration,void 0,2)),1)]),_:1})]))])}const Be=h(ve,[["render",We],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverConfigFallback.vue"]]),ye={name:"OpenwbRippleControlReceiverProxy",props:{rippleControlReceiver:{type:Object,required:!0}},emits:["update:configuration","sendCommand"],computed:{myComponent(){return console.debug(`loading backup cloud: ${this.rippleControlReceiver.type}`),M({loader:()=>j(Object.assign({"./dimm_kit/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-46e5ef94.js"),["assets/ripple_control_receiver-46e5ef94.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./gpio/ripple_control_receiver.vue":()=>U(()=>import("./ripple_control_receiver-ece22602.js"),["assets/ripple_control_receiver-ece22602.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.rippleControlReceiver.type}/ripple_control_receiver.vue`),errorComponent:Be})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)},sendCommand(t){this.$emit("sendCommand",t)}}};function Se(t,e,p,B,y,m){const g=b("openwb-base-heading");return l(),d(G,null,[n(g,null,{default:o(()=>[a(' Einstellungen für RSE-Modul "'+c(p.rippleControlReceiver.name)+'" ',1)]),_:1}),(l(),v(I(m.myComponent),{"ripple-control-receiver":p.rippleControlReceiver,"onUpdate:configuration":e[0]||(e[0]=r=>m.updateConfiguration(r)),onSendCommand:e[1]||(e[1]=r=>m.sendCommand(r))},null,40,["ripple-control-receiver"]))],64)}const ke=h(ye,[["render",Se],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/ripple_control_receivers/OpenwbRippleControlReceiverProxy.vue"]]);J.add(Y,ee,te,ne,oe,ae);const Ve={name:"OpenwbGeneralConfigView",components:{OpenwbWebThemeProxy:fe,OpenwbRippleControlReceiverProxy:ke,FontAwesomeIcon:F},mixins:[re],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/charge_log_data_config","openWB/general/control_interval","openWB/general/extern","openWB/general/external_buttons_hw","openWB/general/grid_protection_configured","openWB/general/http_api","openWB/general/modbus_control","openWB/general/notifications/configuration","openWB/general/notifications/plug","openWB/general/notifications/selected","openWB/general/notifications/smart_home","openWB/general/notifications/start_charging","openWB/general/notifications/stop_charging","openWB/general/price_kwh","openWB/general/range_unit","openWB/general/ripple_control_receiver/module","openWB/general/web_theme","openWB/system/configurable/ripple_control_receivers","openWB/system/configurable/web_themes","openWB/system/ip_address"]}},computed:{webThemeList:{get(){return this.$store.state.mqtt["openWB/system/configurable/web_themes"]}},webThemeGroupList:{get(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.webThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},rippleControlReceiverList(){return this.$store.state.mqtt["openWB/system/configurable/ripple_control_receivers"]}},methods:{getIpAddress(){return this.$store.state.mqtt["openWB/system/ip_address"]},getWebThemeDefaults(t){const e=this.webThemeList.find(p=>p.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for web theme type!",t),{})},updateSelectedWebTheme(t){this.updateState("openWB/general/web_theme",this.getWebThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},getRippleControlReceiverDefaultConfiguration(t){const e=this.rippleControlReceiverList.find(p=>p.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...e.defaults}:(console.warn("no default configuration found for electricity tariff type!",t),{})},updateSelectedRippleControlReceiverModule(t){this.updateState("openWB/general/ripple_control_receiver/module",t,"type"),this.updateState("openWB/general/ripple_control_receiver/module",this.getRippleControlReceiverDefaultConfiguration(t))}}},Ce={class:"generalConfig"},Re={name:"generalConfigForm"},$e={key:0},Te={key:1},qe={key:1},ze={class:"border border-info w-100 p-1"},De={class:"border border-info w-100 p-1"},Oe={key:0},Ee={key:1},Ne={key:0},Ae={key:2},xe={key:0},Pe={key:0},Le={key:1},Ue={key:0},Je={key:0},Fe={key:1};function je(t,e,p,B,y,m){const g=b("openwb-base-alert"),r=b("openwb-base-button-group-input"),w=b("openwb-base-copy-to-clipboard"),W=b("openwb-base-card"),S=b("openwb-base-heading"),k=b("openwb-base-select-input"),K=b("openwb-ripple-control-receiver-proxy"),H=b("openwb-web-theme-proxy"),f=b("font-awesome-icon"),Z=b("openwb-base-submit-buttons");return l(),d("div",Ce,[s("form",Re,[n(W,{title:"Steuerungsmodus"},{default:o(()=>[n(g,{subtype:"info"},{default:o(()=>e[29]||(e[29]=[s("p",null,' Wird für den Steuerungsmodus "primary" gewählt, übernimmt diese openWB die alleinige Regelung und steuert ggf. vorhandene weitere openWB (z.B. externe openWB im Steuermodus secondary, openWB Pro, Satellit u.a.) fern. Sie werden in den Ladepunkt-Einstellungen der primary-openWB hinzugefügt. ',-1),s("p",null,[a(' Wird für den Steuerungsmodus "secondary" gewählt, übernimmt diese openWB keine Regelung und muss von einer anderen primary openWB ferngesteuert werden. Wichtig ist, dass in der secondary-openWB eine "interne openWB" mit der korrekten Bauart (= openWB-Hardwarevariante z.B. "Custom, Standard, Standard+, Duo, Buchse") konfiguriert ist. Bei einer Duo sind zwei "interne openWB" zu konfigurieren. Im "secondary"-Modus bleiben alle ausgeblendeten Einstellungen unbeachtet.'),s("br"),a(" Eine bebilderte Anleitung zur Konfiguration der Ladepunkte findest Du auf der "),s("a",{href:"https://openwb.de/main/?page_id=1025",target:"_blank",rel:"noopener noreferrer"}," Homepage "),a(". ")],-1)])),_:1}),n(r,{title:"Steuerungsmodus",buttons:[{buttonValue:!1,text:"primary",class:"btn-outline-danger"},{buttonValue:!0,text:"secondary",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/extern"],"onUpdate:modelValue":e[0]||(e[0]=u=>t.updateState("openWB/general/extern",u))},null,8,["model-value"]),p.installAssistantActive?_("",!0):(l(),d("div",$e,[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),v(r,{key:0,title:"Steuerung über Modbus als secondary",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/modbus_control"],"onUpdate:modelValue":e[1]||(e[1]=u=>t.updateState("openWB/general/modbus_control",u))},{help:o(()=>e[30]||(e[30]=[a(" Im secondary-Modus kann die openWB über die Modbus-Schnittstelle gesteuert werden. Die Register sind "),s("a",{href:"https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf",target:"_blank",rel:"noopener noreferrer"}," hier ",-1),a(" dokumentiert. Bei aktivierter Modbus-Schnittstelle darf die openWB nicht von einer primary-openWB gesteuert werden. ")])),_:1},8,["model-value"])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0&&t.$store.state.mqtt["openWB/general/modbus_control"]!==!0?(l(),d("div",Te,[n(g,{subtype:"info"},{default:o(()=>e[31]||(e[31]=[a(' Wenn die Steuerung über Modbus auf "Aus" geändert wird, muss danach ein Neustart durchgeführt werden! ')])),_:1})])):_("",!0)])),p.installAssistantActive?_("",!0):(l(),d("div",qe,[n(r,{title:"HTTP-API",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/http_api"],"onUpdate:modelValue":e[2]||(e[2]=u=>t.updateState("openWB/general/http_api",u))},{help:o(()=>[e[38]||(e[38]=s("p",null," Mit der HTTP-API kann man den Wert eines MQTT-Topics per HTTPs (Port 8443) abfragen oder neu setzen. Topics können über GET oder POST abgefragt, neue Werte nur mit POST gesetzt werden. ",-1)),e[39]||(e[39]=s("p",null," Beispiel 1: Abfrage des aktuellen Systemzeitstempels ",-1)),s("ul",null,[s("li",null,[e[32]||(e[32]=a(" GET-Request:")),e[33]||(e[33]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"URL kopieren"},{default:o(()=>[a(" https://"+c(m.getIpAddress())+":8443/v1/?topic=openWB/system/time ",1)]),_:1})]),s("li",null,[e[34]||(e[34]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[35]||(e[35]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic":"openWB/system/time"}' https://`+c(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[40]||(e[40]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",ze,c(JSON.stringify({status:"success",topic:"openWB/system/time",message:1721287000646975e-6},null,4)),1),e[41]||(e[41]=s("p",null,' Im Fehlerfall wird der Status auf "failed" gesetzt und eine Fehlermeldung zurückgegeben. ',-1)),e[42]||(e[42]=s("p",null,"Beispiel 2: integriertes Display abschalten",-1)),s("ul",null,[s("li",null,[e[36]||(e[36]=a(" POST-Request über 'curl' mit privatem SSL-Zertifikat und Verarbeitung durch 'jq':")),e[37]||(e[37]=s("br",null,null,-1)),n(w,{class:"text-info",tooltip:"Befehl kopieren"},{default:o(()=>[a(` curl -k -s -X POST --data '{"topic": "openWB/set/optional/int_display/active", "message": false}' https://`+c(m.getIpAddress())+":8443/v1/ | jq . ",1)]),_:1})])]),e[43]||(e[43]=s("p",null," Die zurückgegebenen Daten sind im JSON-Format. Der Inhalt ist nach folgendem Schema aufgebaut: ",-1)),s("pre",De,c(JSON.stringify({status:"success",topic:"openWB/set/optional/int_display/active",message:!1},null,4)),1)]),_:1},8,["model-value"])]))]),_:1}),n(W,{title:"Hardware"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Oe,[n(g,{subtype:"info"},{default:o(()=>e[44]||(e[44]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):_("",!0),p.installAssistantActive?_("",!0):(l(),d("div",Ee,[t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ne,[n(r,{title:"Geschwindigkeit Regelintervall",buttons:[{buttonValue:10,text:"Normal",class:"btn-outline-success"},{buttonValue:20,text:"Langsam",class:"btn-outline-warning"},{buttonValue:60,text:"Sehr Langsam",class:"btn-outline-danger"}],"model-value":t.$store.state.mqtt["openWB/general/control_interval"],"onUpdate:modelValue":e[3]||(e[3]=u=>t.updateState("openWB/general/control_interval",u))},{help:o(()=>e[45]||(e[45]=[a(' Sollten Probleme oder Fehlermeldungen auftauchen, stelle bitte zunächst das Regelintervall auf "Normal". Werden Module genutzt, welche z.B. eine Online-API zur Abfrage nutzen (höhere Latenzzeiten) oder möchte man weniger Regeleingriffe, so kann man das Regelintervall auf "Langsam" (20 Sekunden) herabsetzen. Die Einstellung „Sehr Langsam“ führt zu einer Regelzeit von 60 Sekunden.'),s("br",null,null,-1),s("span",{class:"text-danger"},' Nicht nur die Regelung der PV geführten Ladung, sondern auch die Ladestromänderung, beispielsweise “Stop“ etc., werden dann nur noch in diesem Intervall ausgeführt. Die Regelung wird insgesamt träger. Solange es keinen triftigen Grund gibt, sollte "Normal" gewählt werden. ',-1)])),_:1},8,["model-value"]),n(r,{title:"Netzschutz",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/general/grid_protection_configured"],"onUpdate:modelValue":e[4]||(e[4]=u=>t.updateState("openWB/general/grid_protection_configured",u))},{help:o(()=>e[46]||(e[46]=[a(' Diese Option ist standardmäßig aktiviert und sollte so belassen werden. Bei Unterschreitung einer kritischen Frequenz des Stromnetzes wird die Ladung nach einer zufälligen Zeit zwischen 1 und 90 Sekunden pausiert. Der Lademodus wechselt auf "Stop". Sobald die Frequenz wieder in einem normalen Bereich ist wird automatisch der zuletzt gewählte Lademodus wieder aktiviert. Ebenso wird die Ladung bei Überschreiten von 51,8 Hz unterbrochen. Dies ist dann der Fall, wenn der Energieversorger Wartungsarbeiten am (Teil-)Netz durchführt und auf einen vorübergehenden Generator-Betrieb umschaltet. Die Erhöhung der Frequenz wird durchgeführt, um die PV Anlagen abzuschalten.'),s("br",null,null,-1),s("span",{class:"text-danger"}," Die Option ist nur aktiv, wenn der EVU-Zähler die Frequenz übermittelt. ",-1)])),_:1},8,["model-value"])])):_("",!0),e[47]||(e[47]=s("hr",null,null,-1))])),t.$store.state.mqtt["openWB/general/extern"]===!1?(l(),d("div",Ae,[n(S,{class:"mt-0"},{default:o(()=>e[48]||(e[48]=[a(" Steuerbare Verbrauchseinrichtung ")])),_:1}),n(g,{sub_type:"info"},{default:o(()=>e[49]||(e[49]=[a(' Aktuell unterstützt openWB die eingehende Steuerung als "Steuerbare Verbrauchseinrichtung" nur über potentialfreie Kontakte (Rundsteuerempfänger, RSE). Ebenfalls können derzeit bei Auslösung des RSE nur alle Ladevorgänge komplett beendet werden. Die Unterstützung von "Dimmung" im Sinne von §14a EnWG wird umgesetzt, sobald wir weitere Informationen von den Netzbetreibern erhalten, wie die Ansteuerung technisch umgesetzt wird. ')])),_:1}),n(k,{class:"mb-2",title:"Anbindung RSE-Kontakt",options:m.rippleControlReceiverList,"model-value":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]?t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type:"","onUpdate:modelValue":e[5]||(e[5]=u=>m.updateSelectedRippleControlReceiverModule(u))},null,8,["options","model-value"]),t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(l(),d("div",xe,[n(K,{"ripple-control-receiver":t.$store.state.mqtt["openWB/general/ripple_control_receiver/module"],"onUpdate:configuration":e[6]||(e[6]=u=>m.updateConfiguration("openWB/general/ripple_control_receiver/module",u))},null,8,["ripple-control-receiver"])])):_("",!0)])):_("",!0)]),_:1}),p.installAssistantActive?_("",!0):(l(),v(W,{key:0,title:"Darstellung"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Pe,[n(g,{subtype:"info"},{default:o(()=>e[50]||(e[50]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Le,[n(S,{class:"mt-0"},{default:o(()=>e[51]||(e[51]=[a(" Hauptseite ")])),_:1}),t.$store.state.mqtt["openWB/general/web_theme"]!==void 0?(l(),d("div",Ue,[n(k,{class:"mb-2",title:"Theme",groups:m.webThemeGroupList,"model-value":t.$store.state.mqtt["openWB/general/web_theme"].type,"onUpdate:modelValue":e[7]||(e[7]=u=>m.updateSelectedWebTheme(u))},null,8,["groups","model-value"]),t.$store.state.mqtt["openWB/general/web_theme"].type?(l(),v(H,{key:0,"web-theme":t.$store.state.mqtt["openWB/general/web_theme"],"onUpdate:configuration":e[8]||(e[8]=u=>m.updateConfiguration("openWB/general/web_theme",u))},null,8,["web-theme"])):_("",!0)])):_("",!0)]))]),_:1})),p.installAssistantActive?_("",!0):(l(),v(W,{key:1,title:"Lade-Log"},{default:o(()=>{var u,V,C,R,$,T,q,z,D,O,E,N,A,x,P,L;return[t.$store.state.mqtt["openWB/general/extern"]===!0?(l(),d("div",Je,[n(g,{subtype:"info"},{default:o(()=>e[52]||(e[52]=[a(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(l(),d("div",Fe,[n(r,{title:"Einheit für Entfernungen","model-value":t.$store.state.mqtt["openWB/general/range_unit"],buttons:[{buttonValue:"km",text:"Kilometer"},{buttonValue:"mi",text:"Meilen"}],"onUpdate:modelValue":e[9]||(e[9]=i=>t.updateState("openWB/general/range_unit",i))},null,8,["model-value"]),n(S,null,{default:o(()=>e[53]||(e[53]=[a(" Auswahl der Datenfelder ")])),_:1}),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(u=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:u.time_begin,"onUpdate:modelValue":e[10]||(e[10]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_begin"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","calendar"]}),e[54]||(e[54]=a(" Beginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(V=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:V.time_end,"onUpdate:modelValue":e[11]||(e[11]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","calendar"]}),e[55]||(e[55]=a(" Ende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(C=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:C.time_time_charged,"onUpdate:modelValue":e[12]||(e[12]=i=>t.updateState("openWB/general/charge_log_data_config",i,"time_time_charged"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","clock"]}),e[56]||(e[56]=a(" Dauer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(R=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:R.data_costs,"onUpdate:modelValue":e[13]||(e[13]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_costs"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","coins"]}),e[57]||(e[57]=a(" Kosten "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":($=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:$.data_power_source,"onUpdate:modelValue":e[14]||(e[14]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_power_source"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","pie-chart"]}),e[58]||(e[58]=a(" Energieaufteilung "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(T=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:T.vehicle_name,"onUpdate:modelValue":e[15]||(e[15]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_name"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[59]||(e[59]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(q=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:q.vehicle_chargemode,"onUpdate:modelValue":e[16]||(e[16]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_chargemode"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[60]||(e[60]=a(" Lademodus "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(z=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:z.vehicle_prio,"onUpdate:modelValue":e[17]||(e[17]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_prio"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[61]||(e[61]=a(" Priorität "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(D=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:D.vehicle_rfid,"onUpdate:modelValue":e[18]||(e[18]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_rfid"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[62]||(e[62]=a(" ID-Tag "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(O=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:O.vehicle_soc_at_start,"onUpdate:modelValue":e[19]||(e[19]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_start"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[63]||(e[63]=a(" SoC bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(E=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:E.vehicle_soc_at_end,"onUpdate:modelValue":e[20]||(e[20]=i=>t.updateState("openWB/general/charge_log_data_config",i,"vehicle_soc_at_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","car"]}),e[64]||(e[64]=a(" SoC bei Ladende "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(N=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:N.chargepoint_name,"onUpdate:modelValue":e[21]||(e[21]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_name"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[65]||(e[65]=a(" Name "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(A=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:A.chargepoint_serial_number,"onUpdate:modelValue":e[22]||(e[22]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_serial_number"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[66]||(e[66]=a(" Seriennummer "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(x=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:x.data_imported_since_mode_switch,"onUpdate:modelValue":e[23]||(e[23]=i=>t.updateState("openWB/general/charge_log_data_config",i,"data_imported_since_mode_switch"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[67]||(e[67]=a(" Geladene Energie "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(P=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:P.chargepoint_imported_at_start,"onUpdate:modelValue":e[24]||(e[24]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_start"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[68]||(e[68]=a(" Zählerstand bei Ladebeginn "))]),_:1},8,["model-value"]),n(r,{buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":(L=t.$store.state.mqtt["openWB/general/charge_log_data_config"])==null?void 0:L.chargepoint_imported_at_end,"onUpdate:modelValue":e[25]||(e[25]=i=>t.updateState("openWB/general/charge_log_data_config",i,"chargepoint_imported_at_end"))},{default:o(()=>[n(f,{"fixed-width":"",icon:["fas","charging-station"]}),e[69]||(e[69]=a(" Zählerstand bei Ladeende "))]),_:1},8,["model-value"])]))]}),_:1})),n(Z,{"form-name":"generalConfigForm",onSave:e[26]||(e[26]=u=>t.$emit("save")),onReset:e[27]||(e[27]=u=>t.$emit("reset")),onDefaults:e[28]||(e[28]=u=>t.$emit("defaults"))})])])}const Me=h(Ve,[["render",je],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/GeneralConfig.vue"]]),Ze=Object.freeze(Object.defineProperty({__proto__:null,default:Me},Symbol.toStringTag,{value:"Module"}));export{Me as G,_e as R,Ze as a};
diff --git a/web/settings/assets/HardwareInstallation-d2c0f1d5.js b/web/settings/assets/HardwareInstallation-4f848d8b.js
similarity index 69%
rename from web/settings/assets/HardwareInstallation-d2c0f1d5.js
rename to web/settings/assets/HardwareInstallation-4f848d8b.js
index 106b48a11e..4c03d18700 100644
--- a/web/settings/assets/HardwareInstallation-d2c0f1d5.js
+++ b/web/settings/assets/HardwareInstallation-4f848d8b.js
@@ -1 +1 @@
-import{l as U,d as N,t as G,a7 as K,a0 as H,P as F,O as $,N as J,F as Z}from"./vendor-fortawesome-41164876.js";import{_ as e,C as Q}from"./index-c79666b6.js";import{_ as B}from"./dynamic-import-helper-be004503.js";import{_ as I,u as p,k as s,l as g,A as E,N as i,y as u,z as b,D as r,x as l,a0 as M,a1 as X,B as P,J as R,K as h,q as k}from"./vendor-a21b3a62.js";const Y={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,o=void 0){this.$emit("update:configuration",{value:t,object:o})}}},j=I(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),ee={name:"DeviceFallback",mixins:[j]},oe={class:"device-fallback"},te={key:1};function ie(t,o,_,m,a,d){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return s(),g("div",oe,[Object.keys(t.device.configuration).length==0?(s(),E(c,{key:0,subtype:"info"},{default:i(()=>[u(' Der Gerät-Typ "'+b(t.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",te,[r(c,{subtype:"warning"},{default:i(()=>[u(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+b(t.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.device.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:i(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:i(()=>[l("pre",null,b(JSON.stringify(t.device.configuration,void 0,2)),1)]),_:1})]))])}const _e=I(ee,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ne={mixins:[j],props:{component:{type:Object,required:!0}}},re=I(ne,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),de={name:"ComponentFallback",mixins:[re]},ue={class:"component-fallback"},se={key:1};function ae(t,o,_,m,a,d){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return s(),g("div",ue,[Object.keys(t.component.configuration).length==0?(s(),E(c,{key:0,subtype:"info"},{default:i(()=>[u(' Der Komponenten-Typ "'+b(t.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",se,[r(c,{subtype:"warning"},{default:i(()=>[u(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+b(t.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.component.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:i(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:i(()=>[l("pre",null,b(JSON.stringify(t.component.configuration,void 0,2)),1)]),_:1})]))])}const ve=I(de,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),me={name:"OpenwbConfigProxy",props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},emits:["update:configuration"],computed:{myComponent(){var t;return console.debug(`loading component: ${this.device.type} / ${(t=this.component)==null?void 0:t.type}`),this.component!==void 0?M({loader:()=>B(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-afc129d5.js"),["assets/device-afc129d5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-5431b4e2.js"),["assets/device-5431b4e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-763ad7fc.js"),["assets/device-763ad7fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-b3c2779b.js"),["assets/device-b3c2779b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-ff6c0cb6.js"),["assets/device-ff6c0cb6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-39926bb3.js"),["assets/counter-39926bb3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-8432eab3.js"),["assets/device-8432eab3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-39076628.js"),["assets/bat-39076628.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-070b14da.js"),["assets/counter-070b14da.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-6f239659.js"),["assets/device-6f239659.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-18c2474d.js"),["assets/inverter-18c2474d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-49efe9fc.js"),["assets/counter-49efe9fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-336ae19f.js"),["assets/device-336ae19f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-fb2c9952.js"),["assets/inverter-fb2c9952.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-d63e2264.js"),["assets/device-d63e2264.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-e88fdbc7.js"),["assets/counter-e88fdbc7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-d3b9bc22.js"),["assets/device-d3b9bc22.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-a17a2665.js"),["assets/inverter-a17a2665.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-22c07366.js"),["assets/bat-22c07366.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-f0c7d4c8.js"),["assets/device-f0c7d4c8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-8e9d3a0e.js"),["assets/bat-8e9d3a0e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-b3fc64c6.js"),["assets/counter-b3fc64c6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-40022210.js"),["assets/device-40022210.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-e943d0ae.js"),["assets/inverter-e943d0ae.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-f5f1c5c9.js"),["assets/bat-f5f1c5c9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-187d65ee.js"),["assets/counter_sm-187d65ee.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-79189826.js"),["assets/device-79189826.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-8a48b565.js"),["assets/inverter_secondary-8a48b565.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-aa42df8b.js"),["assets/bat-aa42df8b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-cc4b4212.js"),["assets/counter-cc4b4212.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-4a3195eb.js"),["assets/device-4a3195eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-323c3074.js"),["assets/inverter-323c3074.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-22feb1cd.js"),["assets/bat-22feb1cd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-037dab68.js"),["assets/counter-037dab68.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-9653fe83.js"),["assets/device-9653fe83.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-819b1a3e.js"),["assets/inverter-819b1a3e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-f3f3bffc.js"),["assets/bat-f3f3bffc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-6f3afe9b.js"),["assets/counter-6f3afe9b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-cc94a449.js"),["assets/device-cc94a449.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-e0302839.js"),["assets/inverter-e0302839.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-e64707f3.js"),["assets/counter-e64707f3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-7f1fc016.js"),["assets/device-7f1fc016.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-1b2872e2.js"),["assets/device-1b2872e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-0bb8df4a.js"),["assets/bat-0bb8df4a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-ad28ae65.js"),["assets/counter-ad28ae65.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-574dcaf4.js"),["assets/device-574dcaf4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-4ae76a42.js"),["assets/inverter-4ae76a42.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-edc80b67.js"),["assets/counter-edc80b67.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-0d76517c.js"),["assets/device-0d76517c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-c81118fb.js"),["assets/counter-c81118fb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-347eb6dc.js"),["assets/device-347eb6dc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-5ad18beb.js"),["assets/inverter-5ad18beb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-050e3366.js"),["assets/device-050e3366.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-05d801d4.js"),["assets/counter-05d801d4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-d74903aa.js"),["assets/device-d74903aa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-c6427879.js"),["assets/counter-c6427879.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-29ca0508.js"),["assets/device-29ca0508.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-713ce8f2.js"),["assets/device-713ce8f2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-cda22a33.js"),["assets/inverter-cda22a33.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-8548059a.js"),["assets/device-8548059a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-9d704a63.js"),["assets/bat-9d704a63.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-8a7db35e.js"),["assets/counter-8a7db35e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-80fee4ae.js"),["assets/device-80fee4ae.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-fd0dea3e.js"),["assets/inverter-fd0dea3e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-bb1652e9.js"),["assets/device-bb1652e9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-6d0ee218.js"),["assets/bat-6d0ee218.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-98bc85c9.js"),["assets/bat-98bc85c9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-e6bce9f3.js"),["assets/counter-e6bce9f3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-593f3daf.js"),["assets/inverter-593f3daf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-15e6188c.js"),["assets/bat-15e6188c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-fffff7c1.js"),["assets/consumption_counter-fffff7c1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-34270a43.js"),["assets/counter-34270a43.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-39bf739d.js"),["assets/device-39bf739d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-cdd963f9.js"),["assets/inverter-cdd963f9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-4952d317.js"),["assets/inverter-4952d317.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-58ed9d65.js"),["assets/counter-58ed9d65.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-d7bd2ff3.js"),["assets/device-d7bd2ff3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-3806cc52.js"),["assets/counter-3806cc52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f655ceef.js"),["assets/device-f655ceef.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-fb3a6cad.js"),["assets/inverter-fb3a6cad.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-9b3e153b.js"),["assets/device-9b3e153b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-a70f13a3.js"),["assets/device-a70f13a3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-f06b8715.js"),["assets/device-f06b8715.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-a116f5da.js"),["assets/counter-a116f5da.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-1e1551ac.js"),["assets/device-1e1551ac.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-fe891142.js"),["assets/device-fe891142.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-1b821174.js"),["assets/device-1b821174.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-fedfab16.js"),["assets/bat-fedfab16.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-2e059c6b.js"),["assets/counter-2e059c6b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-3e6fa83c.js"),["assets/device-3e6fa83c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-5f9ef8bd.js"),["assets/inverter-5f9ef8bd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-ba8a04c3.js"),["assets/counter-ba8a04c3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-6529a4df.js"),["assets/inverter-6529a4df.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-cf017b63.js"),["assets/bat-cf017b63.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-1b4c5bcf.js"),["assets/bat_smart_energy-1b4c5bcf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-c51eaa64.js"),["assets/counter-c51eaa64.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-51c91be0.js"),["assets/device-51c91be0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-46c18816.js"),["assets/inverter-46c18816.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-e0e00bd8.js"),["assets/bat-e0e00bd8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-59c7355d.js"),["assets/device-59c7355d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-001cee36.js"),["assets/device-001cee36.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-95f05d0c.js"),["assets/counter-95f05d0c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-9cbf003b.js"),["assets/device-9cbf003b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-098d4ce8.js"),["assets/inverter-098d4ce8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-5286bf60.js"),["assets/device-5286bf60.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4edac0ac.js"),["assets/device-4edac0ac.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-e25a696d.js"),["assets/counter-e25a696d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-7279ce38.js"),["assets/device-7279ce38.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-e4ac8894.js"),["assets/device-e4ac8894.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-475ea9be.js"),["assets/inverter-475ea9be.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-6aa72597.js"),["assets/device-6aa72597.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-f7f8ffe0.js"),["assets/device-f7f8ffe0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-7406ff4b.js"),["assets/bat-7406ff4b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-52e01218.js"),["assets/counter-52e01218.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-4b1646f2.js"),["assets/device-4b1646f2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-04c9ce87.js"),["assets/external_inverter-04c9ce87.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-6ea218d8.js"),["assets/inverter-6ea218d8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-10d75798.js"),["assets/bat-10d75798.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-1e35dcd3.js"),["assets/device-1e35dcd3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-5e9ec317.js"),["assets/inverter-5e9ec317.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-3f7e40af.js"),["assets/device-3f7e40af.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-0bafcbc8.js"),["assets/bat-0bafcbc8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-2f4a0c2e.js"),["assets/counter-2f4a0c2e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-bbbcf1a0.js"),["assets/device-bbbcf1a0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-55ea35ce.js"),["assets/inverter-55ea35ce.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-aa0a6d0b.js"),["assets/counter-aa0a6d0b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-1ffd2759.js"),["assets/device-1ffd2759.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-59db0757.js"),["assets/bat-59db0757.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-6e3aa19a.js"),["assets/device-6e3aa19a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-7d0a508c.js"),["assets/inverter-7d0a508c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-a81ba2a4.js"),["assets/counter-a81ba2a4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-91630eed.js"),["assets/device-91630eed.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-6f112981.js"),["assets/device-6f112981.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-c47ac087.js"),["assets/device-c47ac087.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-58c72dcf.js"),["assets/counter-58c72dcf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5762c828.js"),["assets/device-5762c828.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-51fdec5d.js"),["assets/device-51fdec5d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-dfa51acd.js"),["assets/bat-dfa51acd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-c0af0a6f.js"),["assets/counter-c0af0a6f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-0ab7f57f.js"),["assets/device-0ab7f57f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-b4727f0c.js"),["assets/inverter-b4727f0c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-c3082628.js"),["assets/counter-c3082628.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-df9c2f01.js"),["assets/device-df9c2f01.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-ce0bf077.js"),["assets/inverter-ce0bf077.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-b4913183.js"),["assets/device-b4913183.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-4f43f74f.js"),["assets/inverter-4f43f74f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ve}):M({loader:()=>B(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-afc129d5.js"),["assets/device-afc129d5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-5431b4e2.js"),["assets/device-5431b4e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-763ad7fc.js"),["assets/device-763ad7fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-b3c2779b.js"),["assets/device-b3c2779b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-ff6c0cb6.js"),["assets/device-ff6c0cb6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-8432eab3.js"),["assets/device-8432eab3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-6f239659.js"),["assets/device-6f239659.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-336ae19f.js"),["assets/device-336ae19f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-d63e2264.js"),["assets/device-d63e2264.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-d3b9bc22.js"),["assets/device-d3b9bc22.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-f0c7d4c8.js"),["assets/device-f0c7d4c8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-40022210.js"),["assets/device-40022210.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-79189826.js"),["assets/device-79189826.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-4a3195eb.js"),["assets/device-4a3195eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-9653fe83.js"),["assets/device-9653fe83.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-cc94a449.js"),["assets/device-cc94a449.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-7f1fc016.js"),["assets/device-7f1fc016.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-1b2872e2.js"),["assets/device-1b2872e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-574dcaf4.js"),["assets/device-574dcaf4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-0d76517c.js"),["assets/device-0d76517c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-347eb6dc.js"),["assets/device-347eb6dc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-050e3366.js"),["assets/device-050e3366.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-d74903aa.js"),["assets/device-d74903aa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-29ca0508.js"),["assets/device-29ca0508.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-713ce8f2.js"),["assets/device-713ce8f2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-8548059a.js"),["assets/device-8548059a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-80fee4ae.js"),["assets/device-80fee4ae.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-bb1652e9.js"),["assets/device-bb1652e9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-39bf739d.js"),["assets/device-39bf739d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-d7bd2ff3.js"),["assets/device-d7bd2ff3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-f655ceef.js"),["assets/device-f655ceef.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-9b3e153b.js"),["assets/device-9b3e153b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-a70f13a3.js"),["assets/device-a70f13a3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-f06b8715.js"),["assets/device-f06b8715.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-1e1551ac.js"),["assets/device-1e1551ac.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-fe891142.js"),["assets/device-fe891142.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-1b821174.js"),["assets/device-1b821174.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-3e6fa83c.js"),["assets/device-3e6fa83c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-51c91be0.js"),["assets/device-51c91be0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-59c7355d.js"),["assets/device-59c7355d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-001cee36.js"),["assets/device-001cee36.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-9cbf003b.js"),["assets/device-9cbf003b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-5286bf60.js"),["assets/device-5286bf60.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-4edac0ac.js"),["assets/device-4edac0ac.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-7279ce38.js"),["assets/device-7279ce38.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-e4ac8894.js"),["assets/device-e4ac8894.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-6aa72597.js"),["assets/device-6aa72597.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-f7f8ffe0.js"),["assets/device-f7f8ffe0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-4b1646f2.js"),["assets/device-4b1646f2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-1e35dcd3.js"),["assets/device-1e35dcd3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-3f7e40af.js"),["assets/device-3f7e40af.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-bbbcf1a0.js"),["assets/device-bbbcf1a0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-1ffd2759.js"),["assets/device-1ffd2759.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-6e3aa19a.js"),["assets/device-6e3aa19a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-91630eed.js"),["assets/device-91630eed.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-6f112981.js"),["assets/device-6f112981.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-c47ac087.js"),["assets/device-c47ac087.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-5762c828.js"),["assets/device-5762c828.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-51fdec5d.js"),["assets/device-51fdec5d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-0ab7f57f.js"),["assets/device-0ab7f57f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-df9c2f01.js"),["assets/device-df9c2f01.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-b4913183.js"),["assets/device-b4913183.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:_e})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function pe(t,o,_,m,a,d){return s(),E(X(d.myComponent),{device:_.device,component:_.component,configuration:_.component?_.component.configuration:_.device.configuration,"device-id":_.device.id,"device-type":_.device.type,"component-id":_.component?_.component.id:void 0,"component-type":_.component?_.component.type:void 0,"onUpdate:configuration":o[0]||(o[0]=c=>d.updateConfiguration(c))},null,40,["device","component","configuration","device-id","device-type","component-id","component-type"])}const le=I(me,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);U.add(N,G,K,H,F,$,J);const ce={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:Z,OpenwbConfigProxy:le},mixins:[Q],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([t,o])=>({label:o.group_name,options:Object.entries(o.vendors).map(([_,m])=>({value:[t,_],text:m.vendor_name})).sort((_,m)=>_.text.localeCompare(m.text))})).sort((t,o)=>-t.label.localeCompare(o.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[t,o]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][t].vendors[o].devices).map(([_,m])=>({value:[o,_],text:m.device_name})).sort((_,m)=>_.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(t){return t.match(/^(.+_)?counter(_.+)?$/)?"danger":t.match(/^(.+_)?inverter(_.+)?$/)?"success":t.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(t){return t.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:t.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:t.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(t){return this.getWildcardTopics("openWB/system/device/"+t+"/component/+/config")},deviceHasConfiguredComponents(t){return Object.keys(this.getMyInstalledComponents(t)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(t,o,_){_.stopPropagation(),this.modalDevice=t,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(t){this.showDeviceRemoveModal=!1,t=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(t,o,_,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:t,deviceType:_,deviceVendor:o,type:m}})},removeComponentModal(t,o,_,m,a){a.stopPropagation(),this.modalComponent={deviceId:t,id:o,type:_},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(t){this.showComponentRemoveModal=!1,t=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(t,o){if(t===void 0||o===void 0)return[];console.debug("finding components for",t,o);let _=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[t]!==void 0?(m.vendors[t].devices[o]!==void 0&&(_=Object.entries(m.vendors[t].devices[o].components).map(([d,c])=>({value:d,text:c.component_name}))),!1):!0),_},updateConfiguration(t,o){console.debug("updateConfiguration",t,o),this.updateState(t,o.value,o.object)}}},Ee={class:"hardwareInstallation"},ge={name:"hardwareInstallationForm"},fe={key:0},be={key:1},Ve={key:1},Oe={class:"col-1"},Te={key:0},Ie={class:"col-1"};function Ae(t,o,_,m,a,d){const c=p("openwb-base-modal-dialog"),A=p("router-link"),O=p("openwb-base-alert"),T=p("font-awesome-icon"),L=p("openwb-base-avatar"),D=p("openwb-base-text-input"),C=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),x=p("openwb-base-click-button"),y=p("openwb-base-select-input"),S=p("openwb-base-submit-buttons");return s(),g(R,null,[r(c,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeDevice},{default:i(()=>[u(' Wollen Sie das Gerät "'+b(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(c,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeComponent},{default:i(()=>[u(' Wollen Sie die Komponente "'+b(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",Ee,[l("form",ge,[_.installAssistantActive?P("",!0):(s(),E(O,{key:0,subtype:"info"},{default:i(()=>[o[6]||(o[6]=u(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),r(A,{to:"/LoadManagementConfiguration"},{default:i(()=>o[5]||(o[5]=[u(" Lastmanagement ")])),_:1}),o[7]||(o[7]=u(" zu prüfen! "))]),_:1})),r(w,{title:"Geräte und Komponenten"},{default:i(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),g("div",fe,[r(O,{subtype:"info"},{default:i(()=>o[8]||(o[8]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),g("div",be,[(s(!0),g(R,null,h(d.installedDevices,(n,z)=>(s(),E(w,{key:n.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[r(T,{"fixed-width":"",icon:["fas","network-wired"]}),u(" "+b(n.name),1)]),actions:i(v=>[v.collapsed?(s(),g("div",Ve,[(s(!0),g(R,null,h(d.getMyInstalledComponents(n.id),f=>(s(),E(L,{key:f.id,class:k("ml-1 bg-"+d.getComponentTypeClass(f.type))},{default:i(()=>[r(T,{"fixed-width":"",icon:d.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(s(),E(L,{key:0,class:"bg-danger clickable",onClick:f=>d.removeDeviceModal(n.id,n.name,f)},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":n.name,"onUpdate:modelValue":v=>t.updateState(z,v,"name")},null,8,["model-value","onUpdate:modelValue"]),o[16]||(o[16]=l("hr",null,null,-1)),r(C,{device:n,"onUpdate:configuration":v=>d.updateConfiguration(z,v)},null,8,["device","onUpdate:configuration"]),o[17]||(o[17]=l("hr",null,null,-1)),r(W,null,{default:i(()=>[...o[9]||(o[9]=[u("Komponenten")])]),_:1}),d.deviceHasConfiguredComponents(n.id)?P("",!0):(s(),E(O,{key:0,subtype:"warning"},{default:i(()=>[...o[10]||(o[10]=[u(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(s(!0),g(R,null,h(d.getMyInstalledComponents(n.id),(v,f)=>(s(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:d.getComponentTypeClass(v.type)},{header:i(()=>[r(T,{"fixed-width":"",icon:d.getComponentTypeIcon(v.type)},null,8,["icon"]),u(" "+b(v.name),1)]),actions:i(V=>[V.collapsed?P("",!0):(s(),E(L,{key:0,class:"bg-danger clickable",onClick:q=>d.removeComponentModal(n.id,v.id,v.type,v.name,q)},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":V=>t.updateState(f,V,"name")},null,8,["model-value","onUpdate:modelValue"]),r(D,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":V=>t.updateState(f,V,"info.manufacturer")},{help:i(()=>[...o[11]||(o[11]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),r(D,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":V=>t.updateState(f,V,"info.model")},{help:i(()=>[...o[12]||(o[12]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o[13]||(o[13]=l("hr",null,null,-1)),r(C,{device:n,component:v,"onUpdate:configuration":V=>d.updateConfiguration(f,V)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),o[18]||(o[18]=l("hr",null,null,-1)),d.getComponentList(n.vendor,n.type).length?(s(),E(y,{key:1,class:"mb-2",title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:d.getComponentList(n.vendor,n.type),"model-value":a.componentToAdd[n.id],"onUpdate:modelValue":v=>a.componentToAdd[n.id]=v},{append:i(()=>[l("span",Oe,[r(x,{class:k(a.componentToAdd[n.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[n.id]===void 0,onButtonClicked:v=>d.addComponent(n.id,n.vendor,n.type,a.componentToAdd[n.id])},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[...o[14]||(o[14]=[u(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(s(),E(O,{key:2,subtype:"info"},{default:i(()=>[...o[15]||(o[15]=[u(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(d.installedDevices).length>0?(s(),g("hr",Te)):P("",!0),r(y,{modelValue:a.selectedVendor,"onUpdate:modelValue":o[0]||(o[0]=n=>a.selectedVendor=n),title:"Hersteller","not-selected":"Bitte auswählen",groups:d.vendorList},null,8,["modelValue","groups"]),r(y,{modelValue:a.deviceToAdd,"onUpdate:modelValue":o[1]||(o[1]=n=>a.deviceToAdd=n),title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:a.selectedVendor===void 0,options:d.deviceList},{append:i(()=>[l("span",Ie,[r(x,{class:k(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:d.addDevice},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>o[19]||(o[19]=[l("p",null,[u(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),u(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),l("p",null,[u(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),u(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options"])]))]),_:1}),r(S,{"form-name":"hardwareInstallationForm",onSave:o[2]||(o[2]=n=>t.$emit("save")),onReset:o[3]||(o[3]=n=>t.$emit("reset")),onDefaults:o[4]||(o[4]=n=>t.$emit("defaults"))})])])],64)}const De=I(ce,[["render",Ae],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),ye=Object.freeze(Object.defineProperty({__proto__:null,default:De},Symbol.toStringTag,{value:"Module"}));export{re as C,j as D,De as H,ye as a};
+import{l as U,d as N,t as G,a7 as K,a0 as H,P as F,O as $,N as J,F as Z}from"./vendor-fortawesome-41164876.js";import{_ as e,C as Q}from"./index-7731ba98.js";import{_ as B}from"./dynamic-import-helper-be004503.js";import{_ as I,u as p,k as s,l as g,A as E,N as i,y as u,z as b,D as r,x as l,a0 as M,a1 as X,B as P,J as R,K as h,q as k}from"./vendor-a21b3a62.js";const Y={props:{device:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,o=void 0){this.$emit("update:configuration",{value:t,object:o})}}},j=I(Y,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/DeviceConfigMixin.vue"]]),ee={name:"DeviceFallback",mixins:[j]},oe={class:"device-fallback"},te={key:1};function ie(t,o,_,m,a,d){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return s(),g("div",oe,[Object.keys(t.device.configuration).length==0?(s(),E(c,{key:0,subtype:"info"},{default:i(()=>[u(' Der Gerät-Typ "'+b(t.device.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",te,[r(c,{subtype:"warning"},{default:i(()=>[u(' Es wurde keine Konfigurationsseite für den Geräte-Typ "'+b(t.device.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.device.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:i(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:i(()=>[l("pre",null,b(JSON.stringify(t.device.configuration,void 0,2)),1)]),_:1})]))])}const _e=I(ee,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbDeviceConfigFallback.vue"]]),ne={mixins:[j],props:{component:{type:Object,required:!0}}},re=I(ne,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/ComponentConfigMixin.vue"]]),de={name:"ComponentFallback",mixins:[re]},ue={class:"component-fallback"},se={key:1};function ae(t,o,_,m,a,d){const c=p("openwb-base-alert"),A=p("openwb-base-textarea");return s(),g("div",ue,[Object.keys(t.component.configuration).length==0?(s(),E(c,{key:0,subtype:"info"},{default:i(()=>[u(' Der Komponenten-Typ "'+b(t.component.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),g("div",se,[r(c,{subtype:"warning"},{default:i(()=>[u(' Es wurde keine Konfigurationsseite für den Komponenten-Typ "'+b(t.component.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),r(A,{title:"Konfiguration",subtype:"json","model-value":t.component.configuration,"onUpdate:modelValue":o[0]||(o[0]=O=>t.updateConfiguration(O,"configuration"))},{help:i(()=>o[1]||(o[1]=[u(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),r(c,{subtype:"info"},{default:i(()=>[l("pre",null,b(JSON.stringify(t.component.configuration,void 0,2)),1)]),_:1})]))])}const ve=I(de,[["render",ae],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbComponentConfigFallback.vue"]]),me={name:"OpenwbConfigProxy",props:{device:{type:Object,required:!0},component:{type:Object,required:!1,default:void 0}},emits:["update:configuration"],computed:{myComponent(){var t;return console.debug(`loading component: ${this.device.type} / ${(t=this.component)==null?void 0:t.type}`),this.component!==void 0?M({loader:()=>B(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-9b878950.js"),["assets/device-9b878950.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-07bce76f.js"),["assets/device-07bce76f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b3cb16e9.js"),["assets/device-b3cb16e9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-509f2f69.js"),["assets/device-509f2f69.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-145b29f9.js"),["assets/device-145b29f9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/counter.vue":()=>e(()=>import("./counter-0ee5dc28.js"),["assets/counter-0ee5dc28.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-0dd9f712.js"),["assets/device-0dd9f712.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/bat.vue":()=>e(()=>import("./bat-92f05592.js"),["assets/bat-92f05592.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/counter.vue":()=>e(()=>import("./counter-2a4bfe4f.js"),["assets/counter-2a4bfe4f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-3cfdf387.js"),["assets/device-3cfdf387.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/inverter.vue":()=>e(()=>import("./inverter-1d764ce1.js"),["assets/inverter-1d764ce1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/counter.vue":()=>e(()=>import("./counter-8dc351c2.js"),["assets/counter-8dc351c2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-4f99ee45.js"),["assets/device-4f99ee45.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/inverter.vue":()=>e(()=>import("./inverter-f84aeccd.js"),["assets/inverter-f84aeccd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-45302db8.js"),["assets/device-45302db8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/counter.vue":()=>e(()=>import("./counter-97e1d836.js"),["assets/counter-97e1d836.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-c98adda4.js"),["assets/device-c98adda4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/inverter.vue":()=>e(()=>import("./inverter-841afc8e.js"),["assets/inverter-841afc8e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/bat.vue":()=>e(()=>import("./bat-335f86ce.js"),["assets/bat-335f86ce.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-05c79e8f.js"),["assets/device-05c79e8f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/bat.vue":()=>e(()=>import("./bat-6cc1a65d.js"),["assets/bat-6cc1a65d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/counter.vue":()=>e(()=>import("./counter-653350a5.js"),["assets/counter-653350a5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-758be2e4.js"),["assets/device-758be2e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/inverter.vue":()=>e(()=>import("./inverter-4d3ecca9.js"),["assets/inverter-4d3ecca9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/bat.vue":()=>e(()=>import("./bat-969d0bb9.js"),["assets/bat-969d0bb9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/counter_sm.vue":()=>e(()=>import("./counter_sm-d444580b.js"),["assets/counter_sm-d444580b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-faf20ca1.js"),["assets/device-faf20ca1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/inverter_secondary.vue":()=>e(()=>import("./inverter_secondary-5bbd40e8.js"),["assets/inverter_secondary-5bbd40e8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/bat.vue":()=>e(()=>import("./bat-60d8181e.js"),["assets/bat-60d8181e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/counter.vue":()=>e(()=>import("./counter-7e14a9b6.js"),["assets/counter-7e14a9b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-915faea2.js"),["assets/device-915faea2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/inverter.vue":()=>e(()=>import("./inverter-01c5f16a.js"),["assets/inverter-01c5f16a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/bat.vue":()=>e(()=>import("./bat-4e873280.js"),["assets/bat-4e873280.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/counter.vue":()=>e(()=>import("./counter-5aa7ad55.js"),["assets/counter-5aa7ad55.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-9e1861cf.js"),["assets/device-9e1861cf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/inverter.vue":()=>e(()=>import("./inverter-2ad50b9e.js"),["assets/inverter-2ad50b9e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/bat.vue":()=>e(()=>import("./bat-9dfb4288.js"),["assets/bat-9dfb4288.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/counter.vue":()=>e(()=>import("./counter-24a2a585.js"),["assets/counter-24a2a585.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-154407d9.js"),["assets/device-154407d9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/inverter.vue":()=>e(()=>import("./inverter-10d93995.js"),["assets/inverter-10d93995.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/virtual/counter.vue":()=>e(()=>import("./counter-b818a0e4.js"),["assets/counter-b818a0e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-4a532364.js"),["assets/device-4a532364.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-238b0312.js"),["assets/device-238b0312.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/bat.vue":()=>e(()=>import("./bat-00e8bf10.js"),["assets/bat-00e8bf10.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/counter.vue":()=>e(()=>import("./counter-b531c194.js"),["assets/counter-b531c194.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-178b88af.js"),["assets/device-178b88af.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/inverter.vue":()=>e(()=>import("./inverter-d05ed81f.js"),["assets/inverter-d05ed81f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/counter.vue":()=>e(()=>import("./counter-13bf5f9d.js"),["assets/counter-13bf5f9d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-7b6213f9.js"),["assets/device-7b6213f9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/counter.vue":()=>e(()=>import("./counter-4f663cd2.js"),["assets/counter-4f663cd2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-37c8b3a6.js"),["assets/device-37c8b3a6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/inverter.vue":()=>e(()=>import("./inverter-921db5a5.js"),["assets/inverter-921db5a5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-f4fde594.js"),["assets/device-f4fde594.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/counter.vue":()=>e(()=>import("./counter-4e37fd97.js"),["assets/counter-4e37fd97.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-a31ee161.js"),["assets/device-a31ee161.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/counter.vue":()=>e(()=>import("./counter-a01dc07b.js"),["assets/counter-a01dc07b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-3d071c9d.js"),["assets/device-3d071c9d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-34634beb.js"),["assets/device-34634beb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/inverter.vue":()=>e(()=>import("./inverter-f798fcec.js"),["assets/inverter-f798fcec.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-3c4137be.js"),["assets/device-3c4137be.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/bat.vue":()=>e(()=>import("./bat-59f5bea4.js"),["assets/bat-59f5bea4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/counter.vue":()=>e(()=>import("./counter-4c0ab0fc.js"),["assets/counter-4c0ab0fc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-bc20ec7e.js"),["assets/device-bc20ec7e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/inverter.vue":()=>e(()=>import("./inverter-98558dd2.js"),["assets/inverter-98558dd2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-5671d970.js"),["assets/device-5671d970.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_bat_kit/bat.vue":()=>e(()=>import("./bat-0c11442d.js"),["assets/bat-0c11442d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/bat.vue":()=>e(()=>import("./bat-e320f91a.js"),["assets/bat-e320f91a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/counter.vue":()=>e(()=>import("./counter-4b12cef6.js"),["assets/counter-4b12cef6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_evu_kit/inverter.vue":()=>e(()=>import("./inverter-4a9fb2e3.js"),["assets/inverter-4a9fb2e3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/bat.vue":()=>e(()=>import("./bat-4396fdbc.js"),["assets/bat-4396fdbc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/consumption_counter.vue":()=>e(()=>import("./consumption_counter-6e6020bd.js"),["assets/consumption_counter-6e6020bd.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/counter.vue":()=>e(()=>import("./counter-7465bf58.js"),["assets/counter-7465bf58.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-a736b02f.js"),["assets/device-a736b02f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/inverter.vue":()=>e(()=>import("./inverter-eae9cb6a.js"),["assets/inverter-eae9cb6a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_pv_kit/inverter.vue":()=>e(()=>import("./inverter-6ca6c4db.js"),["assets/inverter-6ca6c4db.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/counter.vue":()=>e(()=>import("./counter-93cffdb4.js"),["assets/counter-93cffdb4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-7cce0a38.js"),["assets/device-7cce0a38.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/counter.vue":()=>e(()=>import("./counter-5f57efff.js"),["assets/counter-5f57efff.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-4ec85d62.js"),["assets/device-4ec85d62.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/inverter.vue":()=>e(()=>import("./inverter-04ce0f8e.js"),["assets/inverter-04ce0f8e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-70244985.js"),["assets/device-70244985.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-479070eb.js"),["assets/device-479070eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-d570ea1c.js"),["assets/device-d570ea1c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/counter.vue":()=>e(()=>import("./counter-a075f077.js"),["assets/counter-a075f077.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-fecdf5a2.js"),["assets/device-fecdf5a2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-105029e4.js"),["assets/device-105029e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-d267c639.js"),["assets/device-d267c639.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/bat.vue":()=>e(()=>import("./bat-2c1be71f.js"),["assets/bat-2c1be71f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/counter.vue":()=>e(()=>import("./counter-22e9869b.js"),["assets/counter-22e9869b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-2fe8b1e8.js"),["assets/device-2fe8b1e8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/inverter.vue":()=>e(()=>import("./inverter-74015266.js"),["assets/inverter-74015266.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/counter.vue":()=>e(()=>import("./counter-7fb02e03.js"),["assets/counter-7fb02e03.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_shm/inverter.vue":()=>e(()=>import("./inverter-2ad5bc0b.js"),["assets/inverter-2ad5bc0b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat.vue":()=>e(()=>import("./bat-162c290a.js"),["assets/bat-162c290a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/bat_smart_energy.vue":()=>e(()=>import("./bat_smart_energy-ebb6685e.js"),["assets/bat_smart_energy-ebb6685e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/counter.vue":()=>e(()=>import("./counter-aa646c5e.js"),["assets/counter-aa646c5e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-8982492f.js"),["assets/device-8982492f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/inverter.vue":()=>e(()=>import("./inverter-0656f08c.js"),["assets/inverter-0656f08c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/bat.vue":()=>e(()=>import("./bat-d12e7970.js"),["assets/bat-d12e7970.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-16c06238.js"),["assets/device-16c06238.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-27d4f620.js"),["assets/device-27d4f620.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/counter.vue":()=>e(()=>import("./counter-7f48c4f3.js"),["assets/counter-7f48c4f3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-d9bb5f54.js"),["assets/device-d9bb5f54.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/inverter.vue":()=>e(()=>import("./inverter-2b99372c.js"),["assets/inverter-2b99372c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-1689c8b4.js"),["assets/device-1689c8b4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-86484564.js"),["assets/device-86484564.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/counter.vue":()=>e(()=>import("./counter-8e348c5e.js"),["assets/counter-8e348c5e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-b7f7e745.js"),["assets/device-b7f7e745.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-749aa55b.js"),["assets/device-749aa55b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/inverter.vue":()=>e(()=>import("./inverter-6fc97f63.js"),["assets/inverter-6fc97f63.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-b17aedaa.js"),["assets/device-b17aedaa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-499140b7.js"),["assets/device-499140b7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/bat.vue":()=>e(()=>import("./bat-507f5980.js"),["assets/bat-507f5980.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/counter.vue":()=>e(()=>import("./counter-cfd4ab7b.js"),["assets/counter-cfd4ab7b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-6c45f17a.js"),["assets/device-6c45f17a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/external_inverter.vue":()=>e(()=>import("./external_inverter-e7f9ab8f.js"),["assets/external_inverter-e7f9ab8f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/inverter.vue":()=>e(()=>import("./inverter-44d982c2.js"),["assets/inverter-44d982c2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/bat.vue":()=>e(()=>import("./bat-a49a4454.js"),["assets/bat-a49a4454.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-dd4bcdbe.js"),["assets/device-dd4bcdbe.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/inverter.vue":()=>e(()=>import("./inverter-3fb07d9c.js"),["assets/inverter-3fb07d9c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-c78eeb89.js"),["assets/device-c78eeb89.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/bat.vue":()=>e(()=>import("./bat-ed840a1e.js"),["assets/bat-ed840a1e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/counter.vue":()=>e(()=>import("./counter-29717c6e.js"),["assets/counter-29717c6e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-7c155028.js"),["assets/device-7c155028.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/inverter.vue":()=>e(()=>import("./inverter-36add1ab.js"),["assets/inverter-36add1ab.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/counter.vue":()=>e(()=>import("./counter-736cb4f3.js"),["assets/counter-736cb4f3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-5a5837b3.js"),["assets/device-5a5837b3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/bat.vue":()=>e(()=>import("./bat-9fb8d430.js"),["assets/bat-9fb8d430.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-daeba434.js"),["assets/device-daeba434.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/inverter.vue":()=>e(()=>import("./inverter-70ec316f.js"),["assets/inverter-70ec316f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/counter.vue":()=>e(()=>import("./counter-b02740c3.js"),["assets/counter-b02740c3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-be934e0d.js"),["assets/device-be934e0d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-3916a921.js"),["assets/device-3916a921.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-37d0a80e.js"),["assets/device-37d0a80e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/counter.vue":()=>e(()=>import("./counter-df3ba269.js"),["assets/counter-df3ba269.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-ff3ecc78.js"),["assets/device-ff3ecc78.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-69ec948d.js"),["assets/device-69ec948d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/bat.vue":()=>e(()=>import("./bat-fca7fa69.js"),["assets/bat-fca7fa69.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/counter.vue":()=>e(()=>import("./counter-2d8e2f67.js"),["assets/counter-2d8e2f67.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-4893179e.js"),["assets/device-4893179e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/inverter.vue":()=>e(()=>import("./inverter-f96e48c4.js"),["assets/inverter-f96e48c4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/counter.vue":()=>e(()=>import("./counter-e93d2ded.js"),["assets/counter-e93d2ded.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-153c0397.js"),["assets/device-153c0397.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/inverter.vue":()=>e(()=>import("./inverter-9e67cae2.js"),["assets/inverter-9e67cae2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-672992d0.js"),["assets/device-672992d0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/inverter.vue":()=>e(()=>import("./inverter-9a462865.js"),["assets/inverter-9a462865.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/${this.component.type}.vue`),errorComponent:ve}):M({loader:()=>B(Object.assign({"./alpha_ess/alpha_ess/device.vue":()=>e(()=>import("./device-9b878950.js"),["assets/device-9b878950.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./azzurro_zcs/azzurro_zcs/device.vue":()=>e(()=>import("./device-07bce76f.js"),["assets/device-07bce76f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./batterx/batterx/device.vue":()=>e(()=>import("./device-b3cb16e9.js"),["assets/device-b3cb16e9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./benning/benning/device.vue":()=>e(()=>import("./device-509f2f69.js"),["assets/device-509f2f69.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./byd/byd/device.vue":()=>e(()=>import("./device-145b29f9.js"),["assets/device-145b29f9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./carlo_gavazzi/carlo_gavazzi/device.vue":()=>e(()=>import("./device-0dd9f712.js"),["assets/device-0dd9f712.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./deye/deye/device.vue":()=>e(()=>import("./device-3cfdf387.js"),["assets/device-3cfdf387.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./discovergy/discovergy/device.vue":()=>e(()=>import("./device-4f99ee45.js"),["assets/device-4f99ee45.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./e3dc/e3dc/device.vue":()=>e(()=>import("./device-45302db8.js"),["assets/device-45302db8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./enphase/enphase/device.vue":()=>e(()=>import("./device-c98adda4.js"),["assets/device-c98adda4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fems/fems/device.vue":()=>e(()=>import("./device-05c79e8f.js"),["assets/device-05c79e8f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fox_ess/fox_ess/device.vue":()=>e(()=>import("./device-758be2e4.js"),["assets/device-758be2e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./fronius/fronius/device.vue":()=>e(()=>import("./device-faf20ca1.js"),["assets/device-faf20ca1.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/http/device.vue":()=>e(()=>import("./device-915faea2.js"),["assets/device-915faea2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/json/device.vue":()=>e(()=>import("./device-9e1861cf.js"),["assets/device-9e1861cf.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./generic/mqtt/device.vue":()=>e(()=>import("./device-154407d9.js"),["assets/device-154407d9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./good_we/good_we/device.vue":()=>e(()=>import("./device-4a532364.js"),["assets/device-4a532364.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei/device.vue":()=>e(()=>import("./device-238b0312.js"),["assets/device-238b0312.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./huawei/huawei_smartlogger/device.vue":()=>e(()=>import("./device-178b88af.js"),["assets/device-178b88af.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./janitza/janitza/device.vue":()=>e(()=>import("./device-7b6213f9.js"),["assets/device-7b6213f9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko/device.vue":()=>e(()=>import("./device-37c8b3a6.js"),["assets/device-37c8b3a6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_piko_old/device.vue":()=>e(()=>import("./device-f4fde594.js"),["assets/device-f4fde594.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_plenticore/device.vue":()=>e(()=>import("./device-a31ee161.js"),["assets/device-a31ee161.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_sem/device.vue":()=>e(()=>import("./device-3d071c9d.js"),["assets/device-3d071c9d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kostal/kostal_steca/device.vue":()=>e(()=>import("./device-34634beb.js"),["assets/device-34634beb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./lg/lg/device.vue":()=>e(()=>import("./device-3c4137be.js"),["assets/device-3c4137be.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mtec/mtec/device.vue":()=>e(()=>import("./device-bc20ec7e.js"),["assets/device-bc20ec7e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./opendtu/opendtu/device.vue":()=>e(()=>import("./device-5671d970.js"),["assets/device-5671d970.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./openwb/openwb_flex/device.vue":()=>e(()=>import("./device-a736b02f.js"),["assets/device-a736b02f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerdog/powerdog/device.vue":()=>e(()=>import("./device-7cce0a38.js"),["assets/device-7cce0a38.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./powerfox/powerfox/device.vue":()=>e(()=>import("./device-4ec85d62.js"),["assets/device-4ec85d62.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./qcells/qcells/device.vue":()=>e(()=>import("./device-70244985.js"),["assets/device-70244985.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./rct/rct/device.vue":()=>e(()=>import("./device-479070eb.js"),["assets/device-479070eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./saxpower/saxpower/device.vue":()=>e(()=>import("./device-d570ea1c.js"),["assets/device-d570ea1c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./shelly/shelly/device.vue":()=>e(()=>import("./device-fecdf5a2.js"),["assets/device-fecdf5a2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens/device.vue":()=>e(()=>import("./device-105029e4.js"),["assets/device-105029e4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./siemens/siemens_sentron/device.vue":()=>e(()=>import("./device-d267c639.js"),["assets/device-d267c639.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sigenergy/sigenergy/device.vue":()=>e(()=>import("./device-2fe8b1e8.js"),["assets/device-2fe8b1e8.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_boy/device.vue":()=>e(()=>import("./device-8982492f.js"),["assets/device-8982492f.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_sunny_island/device.vue":()=>e(()=>import("./device-16c06238.js"),["assets/device-16c06238.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sma/sma_webbox/device.vue":()=>e(()=>import("./device-27d4f620.js"),["assets/device-27d4f620.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smart_me/smart_me/device.vue":()=>e(()=>import("./device-d9bb5f54.js"),["assets/device-d9bb5f54.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smartfox/smartfox/device.vue":()=>e(()=>import("./device-1689c8b4.js"),["assets/device-1689c8b4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sofar/sofar/device.vue":()=>e(()=>import("./device-86484564.js"),["assets/device-86484564.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_log/solar_log/device.vue":()=>e(()=>import("./device-b7f7e745.js"),["assets/device-b7f7e745.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_view/solar_view/device.vue":()=>e(()=>import("./device-749aa55b.js"),["assets/device-749aa55b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_watt/solar_watt/device.vue":()=>e(()=>import("./device-b17aedaa.js"),["assets/device-b17aedaa.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solar_world/solar_world/device.vue":()=>e(()=>import("./device-499140b7.js"),["assets/device-499140b7.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solaredge/solaredge/device.vue":()=>e(()=>import("./device-6c45f17a.js"),["assets/device-6c45f17a.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solarmax/solarmax/device.vue":()=>e(()=>import("./device-dd4bcdbe.js"),["assets/device-dd4bcdbe.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solax/solax/device.vue":()=>e(()=>import("./device-c78eeb89.js"),["assets/device-c78eeb89.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./solis/solis/device.vue":()=>e(()=>import("./device-7c155028.js"),["assets/device-7c155028.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sonnen/sonnenbatterie/device.vue":()=>e(()=>import("./device-5a5837b3.js"),["assets/device-5a5837b3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./studer/studer/device.vue":()=>e(()=>import("./device-daeba434.js"),["assets/device-daeba434.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sungrow/sungrow/device.vue":()=>e(()=>import("./device-be934e0d.js"),["assets/device-be934e0d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./sunways/sunways/device.vue":()=>e(()=>import("./device-3916a921.js"),["assets/device-3916a921.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tasmota/tasmota/device.vue":()=>e(()=>import("./device-37d0a80e.js"),["assets/device-37d0a80e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/tesla/device.vue":()=>e(()=>import("./device-ff3ecc78.js"),["assets/device-ff3ecc78.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./varta/varta/device.vue":()=>e(()=>import("./device-69ec948d.js"),["assets/device-69ec948d.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./victron/victron/device.vue":()=>e(()=>import("./device-4893179e.js"),["assets/device-4893179e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vzlogger/vzlogger/device.vue":()=>e(()=>import("./device-153c0397.js"),["assets/device-153c0397.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./youless/youless/device.vue":()=>e(()=>import("./device-672992d0.js"),["assets/device-672992d0.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.device.vendor}/${this.device.type}/device.vue`),errorComponent:_e})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function pe(t,o,_,m,a,d){return s(),E(X(d.myComponent),{device:_.device,component:_.component,configuration:_.component?_.component.configuration:_.device.configuration,"device-id":_.device.id,"device-type":_.device.type,"component-id":_.component?_.component.id:void 0,"component-type":_.component?_.component.type:void 0,"onUpdate:configuration":o[0]||(o[0]=c=>d.updateConfiguration(c))},null,40,["device","component","configuration","device-id","device-type","component-id","component-type"])}const le=I(me,[["render",pe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/OpenwbConfigProxy.vue"]]);U.add(N,G,K,H,F,$,J);const ce={name:"OpenwbHardwareInstallationView",components:{FontAwesomeIcon:Z,OpenwbConfigProxy:le},mixins:[Q],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/get/hierarchy","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/system/configurable/devices_components"],selectedVendor:void 0,deviceToAdd:void 0,showDeviceRemoveModal:!1,modalDevice:void 0,modalDeviceName:"",componentToAdd:[],showComponentRemoveModal:!1,modalComponent:void 0,modalComponentName:""}},computed:{installedDevices:{get(){return this.getWildcardTopics("openWB/system/device/+/config")}},installedComponents:{get(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")}},vendorList:{get(){return this.$store.state.mqtt["openWB/system/configurable/devices_components"]===void 0?[]:Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).map(([t,o])=>({label:o.group_name,options:Object.entries(o.vendors).map(([_,m])=>({value:[t,_],text:m.vendor_name})).sort((_,m)=>_.text.localeCompare(m.text))})).sort((t,o)=>-t.label.localeCompare(o.label))}},deviceList:{get(){if(this.selectedVendor===void 0)return[];let[t,o]=this.selectedVendor;return Object.entries(this.$store.state.mqtt["openWB/system/configurable/devices_components"][t].vendors[o].devices).map(([_,m])=>({value:[o,_],text:m.device_name})).sort((_,m)=>_.text.localeCompare(m.text))}}},methods:{getComponentTypeClass(t){return t.match(/^(.+_)?counter(_.+)?$/)?"danger":t.match(/^(.+_)?inverter(_.+)?$/)?"success":t.match(/^(.+_)?bat(_.+)?$/)?"warning":"dark"},getComponentTypeIcon(t){return t.match(/^(.+_)?counter(_.+)?$/)?["fas","fa-gauge-high"]:t.match(/^(.+_)?inverter(_.+)?$/)?["fas","fa-solar-panel"]:t.match(/^(.+_)?bat(_.+)?$/)?["fas","fa-car-battery"]:["fas","fa-microchip"]},getMyInstalledComponents(t){return this.getWildcardTopics("openWB/system/device/"+t+"/component/+/config")},deviceHasConfiguredComponents(t){return Object.keys(this.getMyInstalledComponents(t)).length>0},addDevice(){this.$emit("sendCommand",{command:"addDevice",data:{vendor:this.deviceToAdd[0],type:this.deviceToAdd[1]}})},removeDeviceModal(t,o,_){_.stopPropagation(),this.modalDevice=t,this.modalDeviceName=o,this.showDeviceRemoveModal=!0},removeDevice(t){this.showDeviceRemoveModal=!1,t=="confirm"&&(console.info("request removal of device '"+this.modalDevice+"'"),this.$emit("sendCommand",{command:"removeDevice",data:{id:this.modalDevice}}))},addComponent(t,o,_,m){this.$emit("sendCommand",{command:"addComponent",data:{deviceId:t,deviceType:_,deviceVendor:o,type:m}})},removeComponentModal(t,o,_,m,a){a.stopPropagation(),this.modalComponent={deviceId:t,id:o,type:_},this.modalComponentName=m,this.showComponentRemoveModal=!0},removeComponent(t){this.showComponentRemoveModal=!1,t=="confirm"&&(console.info("request removal of component '"+this.modalComponent.id+"' from device '"+this.modalComponent.deviceId+"' type '"+this.modalComponent.type+"'"),this.$emit("sendCommand",{command:"removeComponent",data:this.modalComponent}))},getComponentList(t,o){if(t===void 0||o===void 0)return[];console.debug("finding components for",t,o);let _=[];return Object.values(this.$store.state.mqtt["openWB/system/configurable/devices_components"]).every(m=>m.vendors[t]!==void 0?(m.vendors[t].devices[o]!==void 0&&(_=Object.entries(m.vendors[t].devices[o].components).map(([d,c])=>({value:d,text:c.component_name}))),!1):!0),_},updateConfiguration(t,o){console.debug("updateConfiguration",t,o),this.updateState(t,o.value,o.object)}}},Ee={class:"hardwareInstallation"},ge={name:"hardwareInstallationForm"},fe={key:0},be={key:1},Ve={key:1},Oe={class:"col-1"},Te={key:0},Ie={class:"col-1"};function Ae(t,o,_,m,a,d){const c=p("openwb-base-modal-dialog"),A=p("router-link"),O=p("openwb-base-alert"),T=p("font-awesome-icon"),L=p("openwb-base-avatar"),D=p("openwb-base-text-input"),C=p("openwb-config-proxy"),W=p("openwb-base-heading"),w=p("openwb-base-card"),x=p("openwb-base-click-button"),y=p("openwb-base-select-input"),S=p("openwb-base-submit-buttons");return s(),g(R,null,[r(c,{show:a.showDeviceRemoveModal,title:"Gerät löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeDevice},{default:i(()=>[u(' Wollen Sie das Gerät "'+b(a.modalDeviceName)+'" inklusive aller Komponenten wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),r(c,{show:a.showComponentRemoveModal,title:"Komponente löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:d.removeComponent},{default:i(()=>[u(' Wollen Sie die Komponente "'+b(a.modalComponentName)+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show","onModalResult"]),l("div",Ee,[l("form",ge,[_.installAssistantActive?P("",!0):(s(),E(O,{key:0,subtype:"info"},{default:i(()=>[o[6]||(o[6]=u(" Wenn neue Komponenten - insbesondere Zähler - konfiguriert wurden, ist auch das ")),r(A,{to:"/LoadManagementConfiguration"},{default:i(()=>o[5]||(o[5]=[u(" Lastmanagement ")])),_:1}),o[7]||(o[7]=u(" zu prüfen! "))]),_:1})),r(w,{title:"Geräte und Komponenten"},{default:i(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),g("div",fe,[r(O,{subtype:"info"},{default:i(()=>o[8]||(o[8]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),g("div",be,[(s(!0),g(R,null,h(d.installedDevices,(n,z)=>(s(),E(w,{key:n.id,collapsible:!0,collapsed:!0,subtype:"dark"},{header:i(()=>[r(T,{"fixed-width":"",icon:["fas","network-wired"]}),u(" "+b(n.name),1)]),actions:i(v=>[v.collapsed?(s(),g("div",Ve,[(s(!0),g(R,null,h(d.getMyInstalledComponents(n.id),f=>(s(),E(L,{key:f.id,class:k("ml-1 bg-"+d.getComponentTypeClass(f.type))},{default:i(()=>[r(T,{"fixed-width":"",icon:d.getComponentTypeIcon(f.type)},null,8,["icon"])]),_:2},1032,["class"]))),128))])):(s(),E(L,{key:0,class:"bg-danger clickable",onClick:f=>d.removeDeviceModal(n.id,n.name,f)},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":n.name,"onUpdate:modelValue":v=>t.updateState(z,v,"name")},null,8,["model-value","onUpdate:modelValue"]),o[16]||(o[16]=l("hr",null,null,-1)),r(C,{device:n,"onUpdate:configuration":v=>d.updateConfiguration(z,v)},null,8,["device","onUpdate:configuration"]),o[17]||(o[17]=l("hr",null,null,-1)),r(W,null,{default:i(()=>[...o[9]||(o[9]=[u("Komponenten")])]),_:1}),d.deviceHasConfiguredComponents(n.id)?P("",!0):(s(),E(O,{key:0,subtype:"warning"},{default:i(()=>[...o[10]||(o[10]=[u(" Es wurden noch keine Komponenten zu diesem Gerät angelegt. ")])]),_:1})),(s(!0),g(R,null,h(d.getMyInstalledComponents(n.id),(v,f)=>(s(),E(w,{key:v.id,collapsible:!0,collapsed:!0,subtype:d.getComponentTypeClass(v.type)},{header:i(()=>[r(T,{"fixed-width":"",icon:d.getComponentTypeIcon(v.type)},null,8,["icon"]),u(" "+b(v.name),1)]),actions:i(V=>[V.collapsed?P("",!0):(s(),E(L,{key:0,class:"bg-danger clickable",onClick:q=>d.removeComponentModal(n.id,v.id,v.type,v.name,q)},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),default:i(()=>[r(D,{title:"Bezeichnung",subtype:"text","model-value":v.name,"onUpdate:modelValue":V=>t.updateState(f,V,"name")},null,8,["model-value","onUpdate:modelValue"]),r(D,{title:"Hersteller",subtype:"text","model-value":v.info.manufacturer,"onUpdate:modelValue":V=>t.updateState(f,V,"info.manufacturer")},{help:i(()=>[...o[11]||(o[11]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),r(D,{title:"Modell",subtype:"text","model-value":v.info.model,"onUpdate:modelValue":V=>t.updateState(f,V,"info.model")},{help:i(()=>[...o[12]||(o[12]=[u(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o[13]||(o[13]=l("hr",null,null,-1)),r(C,{device:n,component:v,"onUpdate:configuration":V=>d.updateConfiguration(f,V)},null,8,["device","component","onUpdate:configuration"])]),_:2},1032,["subtype"]))),128)),o[18]||(o[18]=l("hr",null,null,-1)),d.getComponentList(n.vendor,n.type).length?(s(),E(y,{key:1,class:"mb-2",title:"Verfügbare Komponenten","not-selected":"Bitte auswählen",options:d.getComponentList(n.vendor,n.type),"model-value":a.componentToAdd[n.id],"onUpdate:modelValue":v=>a.componentToAdd[n.id]=v},{append:i(()=>[l("span",Oe,[r(x,{class:k(a.componentToAdd[n.id]===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.componentToAdd[n.id]===void 0,onButtonClicked:v=>d.addComponent(n.id,n.vendor,n.type,a.componentToAdd[n.id])},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["class","disabled","onButtonClicked"])])]),help:i(()=>[...o[14]||(o[14]=[u(" Bitte eine Komponente auswählen, die hinzugefügt werden soll. Für jeden Datensatz, z.B. Wechselrichter- und Batteriedaten, muss eine Wechselrichter- und eine Batteriekomponente hinzugefügt werden. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"])):(s(),E(O,{key:2,subtype:"info"},{default:i(()=>[...o[15]||(o[15]=[u(" Dieses System bietet keine Komponenten zur Installation an. ")])]),_:1}))]),_:2},1024))),128)),Object.keys(d.installedDevices).length>0?(s(),g("hr",Te)):P("",!0),r(y,{modelValue:a.selectedVendor,"onUpdate:modelValue":o[0]||(o[0]=n=>a.selectedVendor=n),title:"Hersteller","not-selected":"Bitte auswählen",groups:d.vendorList},null,8,["modelValue","groups"]),r(y,{modelValue:a.deviceToAdd,"onUpdate:modelValue":o[1]||(o[1]=n=>a.deviceToAdd=n),title:"Verfügbare Geräte","not-selected":"Bitte auswählen",disabled:a.selectedVendor===void 0,options:d.deviceList},{append:i(()=>[l("span",Ie,[r(x,{class:k(a.deviceToAdd===void 0?"btn-outline-success":"btn-success clickable"),disabled:a.deviceToAdd===void 0,onButtonClicked:d.addDevice},{default:i(()=>[r(T,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["class","disabled","onButtonClicked"])])]),help:i(()=>o[19]||(o[19]=[l("p",null,[u(' Die openWB-Regelung ist auf Werte von Messpunkten (Zähler, Energy Meter usw.) angewiesen. Hierfür werden "Geräte" und "Komponenten" verwendet.'),l("br"),u(' Ein "Gerät" wird hierbei durch seine Verbindungseinstellungen (z.B. IP-Adresse) spezifiziert (häufig durch manuelle Eingabe oder manchmal automatisch ermittelt) und kann über mehrere untergeordnete "Komponenten" verfügen, z.B. einen Messpunkt für PV-Erzeugung, einen Messpunkt für Netzeinspeisung/-bezug am EVU-Punkt usw.. Ein "Gerät" bedingt somit immer mindestens eine zugehörige "Komponente". ')],-1),l("p",null,[u(' Bsp: Werden die Werte von verschiedenen Messpunkten (z.B. PV und EVU) über die gleiche IP-Adresse abgefragt, wird dafür ein "Gerät" mit zwei "Komponenten" für PV- und EVU- Messpunkt angelegt.'),l("br"),u(' Verfügt dagegen jeder Messpunkt über eine eigene IP-Adresse, wird jeder Messpunkt als eigenes "Gerät" mit nur einer "Komponente" angelegt. ')],-1),l("p",null,' Das "Gerät" wird in der dropdown-Liste ausgewählt und mit "+" der Regelung hinzugefügt. Im Anschluss erfolgt die Konfiguration des "Gerätes" innerhalb des schwarzen "Geräte"-Reiters. ',-1)])),_:1},8,["modelValue","disabled","options"])]))]),_:1}),r(S,{"form-name":"hardwareInstallationForm",onSave:o[2]||(o[2]=n=>t.$emit("save")),onReset:o[3]||(o[3]=n=>t.$emit("reset")),onDefaults:o[4]||(o[4]=n=>t.$emit("defaults"))})])])],64)}const De=I(ce,[["render",Ae],["__scopeId","data-v-8595d6ae"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/HardwareInstallation.vue"]]),ye=Object.freeze(Object.defineProperty({__proto__:null,default:De},Symbol.toStringTag,{value:"Module"}));export{re as C,j as D,De as H,ye as a};
diff --git a/web/settings/assets/InstallAssistant-a3c80ad1.js b/web/settings/assets/InstallAssistant-677c2ffc.js
similarity index 69%
rename from web/settings/assets/InstallAssistant-a3c80ad1.js
rename to web/settings/assets/InstallAssistant-677c2ffc.js
index 93cd414e2e..5fa241d123 100644
--- a/web/settings/assets/InstallAssistant-a3c80ad1.js
+++ b/web/settings/assets/InstallAssistant-677c2ffc.js
@@ -1 +1 @@
-import{C as r,_ as t}from"./index-c79666b6.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a0 as p,u as d,k as i,l as u,D as A,N as v,A as E,a1 as I,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-500a8cc5.js"),["assets/InstallAssistantStep0-500a8cc5.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-6470c726.js"),["assets/InstallAssistantStep1-6470c726.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-1fb1197d.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-3d5ac094.js"),["assets/InstallAssistantStep10-3d5ac094.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-12a3f7a8.js"),["assets/InstallAssistantStep2-12a3f7a8.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-83bb0533.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-c7995cbc.js"),["assets/InstallAssistantStep3-c7995cbc.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-1687a15a.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-19fe0142.js"),["assets/InstallAssistantStep4-19fe0142.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-2f136eb7.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-cd0d6d73.js"),["assets/InstallAssistantStep5-cd0d6d73.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-d2c0f1d5.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-63d131ad.js"),["assets/InstallAssistantStep6-63d131ad.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-2f136eb7.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-c6d28ec8.js"),["assets/InstallAssistantStep7-c6d28ec8.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-269dec5d.js","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-5cdd309f.js"),["assets/InstallAssistantStep8-5cdd309f.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-9a14b719.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-73a6b1e1.js"),["assets/InstallAssistantStep9-73a6b1e1.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-1fb1197d.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-cfe72ae0.js"),["assets/InstallAssistantStepTemplate-cfe72ae0.js","assets/index-c79666b6.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
+import{C as r,_ as t}from"./index-7731ba98.js";import{_}from"./dynamic-import-helper-be004503.js";import{_ as m,a0 as p,u as d,k as i,l as u,D as A,N as v,A as E,a1 as I,y as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const P={name:"InstallAssistantView",mixins:[r],emits:["sendCommand","save","reset","defaults"],data(){return{currentPage:0,lastPage:10,showEndAssistantModal:!1}},computed:{myStepComponent(){return console.debug(`loading assistant page: ${this.currentPage}`),p({loader:()=>_(Object.assign({"../components/install_assistant/InstallAssistantStep0.vue":()=>t(()=>import("./InstallAssistantStep0-2077a8df.js"),["assets/InstallAssistantStep0-2077a8df.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep1.vue":()=>t(()=>import("./InstallAssistantStep1-cef7887d.js"),["assets/InstallAssistantStep1-cef7887d.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-f7ee6dfd.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep10.vue":()=>t(()=>import("./InstallAssistantStep10-c90437c2.js"),["assets/InstallAssistantStep10-c90437c2.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css"]),"../components/install_assistant/InstallAssistantStep2.vue":()=>t(()=>import("./InstallAssistantStep2-3e3aee9e.js"),["assets/InstallAssistantStep2-3e3aee9e.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/System-f7b57fb1.js","assets/System-0f1d217b.css"]),"../components/install_assistant/InstallAssistantStep3.vue":()=>t(()=>import("./InstallAssistantStep3-0af57804.js"),["assets/InstallAssistantStep3-0af57804.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/GeneralConfig-7a50fc67.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStep4.vue":()=>t(()=>import("./InstallAssistantStep4-7e26f73a.js"),["assets/InstallAssistantStep4-7e26f73a.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-d12c6dc4.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep5.vue":()=>t(()=>import("./InstallAssistantStep5-b2a202f7.js"),["assets/InstallAssistantStep5-b2a202f7.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/HardwareInstallation-4f848d8b.js","assets/dynamic-import-helper-be004503.js","assets/HardwareInstallation-1ee9693f.css"]),"../components/install_assistant/InstallAssistantStep6.vue":()=>t(()=>import("./InstallAssistantStep6-e43c3e7d.js"),["assets/InstallAssistantStep6-e43c3e7d.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/ChargePointInstallation-d12c6dc4.js","assets/dynamic-import-helper-be004503.js","assets/ChargePointInstallation-ed6a5c7e.css"]),"../components/install_assistant/InstallAssistantStep7.vue":()=>t(()=>import("./InstallAssistantStep7-b34ef3e8.js"),["assets/InstallAssistantStep7-b34ef3e8.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/LoadManagementConfig-4beba7d6.js","assets/OpenwbSortableList-3ce7f991.js","assets/OpenwbSortableList-7ba533e4.css"]),"../components/install_assistant/InstallAssistantStep8.vue":()=>t(()=>import("./InstallAssistantStep8-b3e6cf23.js"),["assets/InstallAssistantStep8-b3e6cf23.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/VehicleConfig-24e197dd.js","assets/dynamic-import-helper-be004503.js","assets/VehicleConfig-4aeda6ca.css"]),"../components/install_assistant/InstallAssistantStep9.vue":()=>t(()=>import("./InstallAssistantStep9-d4a98914.js"),["assets/InstallAssistantStep9-d4a98914.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-94e6de56.js","assets/InstallAssistantStepTemplate-ff479f80.css","assets/DataManagement-f7ee6dfd.js","assets/dynamic-import-helper-be004503.js"]),"../components/install_assistant/InstallAssistantStepTemplate.vue":()=>t(()=>import("./InstallAssistantStepTemplate-94e6de56.js"),["assets/InstallAssistantStepTemplate-94e6de56.js","assets/index-7731ba98.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/InstallAssistantStepTemplate-ff479f80.css"])}),`../components/install_assistant/InstallAssistantStep${this.currentPage}.vue`)})}},methods:{switchPage(s){s>=0&&s<=this.lastPage?this.currentPage=s:console.error(`invalid assistant page number: ${s}`)},endAssistantModal(){this.currentPage!=this.lastPage?this.showEndAssistantModal=!0:this.endAssistant("confirm")},endAssistant(s){this.showEndAssistantModal=!1,s=="confirm"&&(this.updateState("openWB/system/installAssistantDone",!0),this.$root.doPublish("openWB/set/system/installAssistantDone",!0),this.$router.push("/Status"))}}};function S(s,e,f,g,o,n){const l=d("openwb-base-modal-dialog");return i(),u("div",null,[A(l,{show:o.showEndAssistantModal,title:"Assistent beenden",subtype:"danger",buttons:[{text:"Beenden",event:"confirm",subtype:"danger"}],onModalResult:n.endAssistant},{default:v(()=>e[4]||(e[4]=[c(" Wollen Sie den Assistenten wirklich vorzeitig beenden? ")])),_:1},8,["show","onModalResult"]),(i(),E(I(n.myStepComponent),{onSendCommand:e[0]||(e[0]=a=>s.$emit("sendCommand",a)),onSave:e[1]||(e[1]=a=>s.$emit("save")),onReset:e[2]||(e[2]=a=>s.$emit("reset")),onDefaults:e[3]||(e[3]=a=>s.$emit("defaults")),onSwitchPage:n.switchPage,onEndAssistant:n.endAssistantModal},null,40,["onSwitchPage","onEndAssistant"]))])}const L=m(P,[["render",S],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstallAssistant.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep0-500a8cc5.js b/web/settings/assets/InstallAssistantStep0-2077a8df.js
similarity index 95%
rename from web/settings/assets/InstallAssistantStep0-500a8cc5.js
rename to web/settings/assets/InstallAssistantStep0-2077a8df.js
index c14c24a34a..4d26dbc1a7 100644
--- a/web/settings/assets/InstallAssistantStep0-500a8cc5.js
+++ b/web/settings/assets/InstallAssistantStep0-2077a8df.js
@@ -1 +1 @@
-import{C as u}from"./index-c79666b6.js";import d from"./InstallAssistantStepTemplate-cfe72ae0.js";import{_ as p,u as i,k as m,A as g,N as a,D as h,y as c,x as t}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function A(s,e,b,w,P,n){const l=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(l,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=o=>n.nextPage(o))},{default:a(()=>e[1]||(e[1]=[c(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung - Eine Sicherung erstellen"),t("li",null,"Aktualisierung des Systems"),t("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung - Eine Sicherung erstellen")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const z=p(f,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{z as default};
+import{C as u}from"./index-7731ba98.js";import d from"./InstallAssistantStepTemplate-94e6de56.js";import{_ as p,u as i,k as m,A as g,N as a,D as h,y as c,x as t}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"InstallAssistantStep0",components:{InstallAssistantStepTemplate:d},mixins:[u],emits:["switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[],showModalWarning:!1}),methods:{requestNextPage(){this.showModalWarning=!0},nextPage(s){this.showModalWarning=!1,s==="confirm"&&this.$emit("switchPage",1)},previousPage(){},endAssistant(){this.$emit("endAssistant")}}};function A(s,e,b,w,P,n){const l=i("openwb-base-modal-dialog"),r=i("InstallAssistantStepTemplate");return m(),g(r,{title:"Start","hide-previous":!0,onNextPage:n.requestNextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{content:a(()=>[h(l,{show:s.showModalWarning,title:"Achtung!",subtype:"danger",buttons:[{text:"Ok",event:"confirm",subtype:"success"}],onModalResult:e[0]||(e[0]=o=>n.nextPage(o))},{default:a(()=>e[1]||(e[1]=[c(" Bevor der Assistent gestartet wird ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ")])),_:1},8,["show"]),e[2]||(e[2]=t("h2",null,"Vielen Dank, dass Du Dich für openWB entschieden hast.",-1)),e[3]||(e[3]=t("p",null," Dieser Assistent führt Dich durch die Konfiguration der einzelnen Module: ",-1)),e[4]||(e[4]=t("ol",null,[t("li",null,"Datensicherung - Eine Sicherung erstellen"),t("li",null,"Aktualisierung des Systems"),t("li",null," Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary ")],-1)),e[5]||(e[5]=t("p",null," Wird diese openWB als secondary betrieben, dann werden nur noch die lokalen Ladepunkte eingerichtet. Im Betriebsmodus primary werden die folgenden zusätzlichen Schritte durchlaufen: ",-1)),e[6]||(e[6]=t("ol",{start:"4"},[t("li",null,"Energiesystem - Geräte und Komponenten einrichten"),t("li",null,"Einrichten der Ladepunkte (openWB als primary)"),t("li",null,"Konfiguration des Lastmanagements"),t("li",null,"Einrichten der Fahrzeuge"),t("li",null,"Datensicherung - Eine Sicherung erstellen")],-1)),e[7]||(e[7]=t("p",null,"Danach ist die Grundkonfiguration abgeschlossen.",-1))]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const z=p(f,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep0.vue"]]);export{z as default};
diff --git a/web/settings/assets/InstallAssistantStep1-6470c726.js b/web/settings/assets/InstallAssistantStep1-cef7887d.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep1-6470c726.js
rename to web/settings/assets/InstallAssistantStep1-cef7887d.js
index ff07f65efb..9875de2daa 100644
--- a/web/settings/assets/InstallAssistantStep1-6470c726.js
+++ b/web/settings/assets/InstallAssistantStep1-cef7887d.js
@@ -1 +1 @@
-import{C as m}from"./index-c79666b6.js";import p from"./InstallAssistantStepTemplate-cfe72ae0.js";import{D as l}from"./DataManagement-1fb1197d.js";import{_ as d,u as a,k as u,A as g,N as i,x as f,D as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,P,S,w,n){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:i(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:i(()=>[v(o,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=d(A,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{T as default};
+import{C as m}from"./index-7731ba98.js";import p from"./InstallAssistantStepTemplate-94e6de56.js";import{D as l}from"./DataManagement-f7ee6dfd.js";import{_ as d,u as a,k as u,A as g,N as i,x as f,D as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const A={name:"InstallAssistantStep1",components:{InstallAssistantStepTemplate:p,DataManagement:l},mixins:[m],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",2)},previousPage(){this.$emit("switchPage",0)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,P,S,w,n){const o=a("DataManagement"),r=a("InstallAssistantStepTemplate");return u(),g(r,{title:"1. Datensicherung - Eine Sicherung erstellen",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:i(()=>e[4]||(e[4]=[f("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen, auf welche später zurückgegriffen werden kann, insbesondere, wenn die openWB schon konfiguriert war und der Assistent nun erneut ausgeführt wird. ",-1)])),content:i(()=>[v(o,{"install-assistant-active":!0,"show-backup-cloud-section":!1,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const T=d(A,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep1.vue"]]);export{T as default};
diff --git a/web/settings/assets/InstallAssistantStep10-3d5ac094.js b/web/settings/assets/InstallAssistantStep10-c90437c2.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep10-3d5ac094.js
rename to web/settings/assets/InstallAssistantStep10-c90437c2.js
index 8120325297..ce2083edcd 100644
--- a/web/settings/assets/InstallAssistantStep10-3d5ac094.js
+++ b/web/settings/assets/InstallAssistantStep10-c90437c2.js
@@ -1 +1 @@
-import{C as a}from"./index-c79666b6.js";import o from"./InstallAssistantStepTemplate-cfe72ae0.js";import{_ as r,u as l,k as d,A as m,N as p,x as n}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const g={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function u(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return d(),m(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:p(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const v=r(g,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{v as default};
+import{C as a}from"./index-7731ba98.js";import o from"./InstallAssistantStepTemplate-94e6de56.js";import{_ as r,u as l,k as d,A as m,N as p,x as n}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const g={name:"InstallAssistantStep10",components:{InstallAssistantStepTemplate:o},mixins:[a],emits:["switchPage","endAssistant","sendCommand"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){},previousPage(){this.$emit("switchPage",9)},sendCommand(t){this.$emit("sendCommand",t)},endAssistant(){this.$emit("endAssistant")}}};function u(t,s,c,f,A,e){const i=l("InstallAssistantStepTemplate");return d(),m(i,{title:"Abgeschlossen","hide-next":!0,onNextPage:e.nextPage,onPreviousPage:e.previousPage,onEndAssistant:e.endAssistant},{content:p(()=>s[0]||(s[0]=[n("h2",null,"Die Grundkonfiguration ist abgeschlossen.",-1),n("p",null," Die grundlegende Konfiguration der openWB ist abgeschlossen. Du wirst mit Beendigung dieses Assistenten auf die Statusseite weitergeleitet. Bitte überprüfe die dargestellten Informationen und passe bei Unstimmigkeiten die Einstellungen an. Weitere Einstellungen sind für den Betrieb der openWB als secondary nicht notwendig. Detaillierte Einstellungsmöglichkeiten befinden sich in den jeweiligen Konfigurationsseiten. ",-1)])),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const v=r(g,[["render",u],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep10.vue"]]);export{v as default};
diff --git a/web/settings/assets/InstallAssistantStep2-12a3f7a8.js b/web/settings/assets/InstallAssistantStep2-3e3aee9e.js
similarity index 89%
rename from web/settings/assets/InstallAssistantStep2-12a3f7a8.js
rename to web/settings/assets/InstallAssistantStep2-3e3aee9e.js
index ced30508ff..14823a4446 100644
--- a/web/settings/assets/InstallAssistantStep2-12a3f7a8.js
+++ b/web/settings/assets/InstallAssistantStep2-3e3aee9e.js
@@ -1 +1 @@
-import{C as p}from"./index-c79666b6.js";import d from"./InstallAssistantStepTemplate-cfe72ae0.js";import l from"./System-83bb0533.js";import{_ as u,u as i,k as f,A as g,N as o,x as a,D as S}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const A={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:d,SystemView:l},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function v(e,t,P,w,$,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>t[4]||(t[4]=[a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1)])),content:o(()=>[S(r,{"install-assistant-active":!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(A,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{N as default};
+import{C as p}from"./index-7731ba98.js";import d from"./InstallAssistantStepTemplate-94e6de56.js";import l from"./System-f7b57fb1.js";import{_ as u,u as i,k as f,A as g,N as o,x as a,D as S}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const A={name:"InstallAssistantStep2",components:{InstallAssistantStepTemplate:d,SystemView:l},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",3)},previousPage(){this.$emit("switchPage",1)},endAssistant(){this.$emit("endAssistant")}}};function v(e,t,P,w,$,n){const r=i("SystemView"),m=i("InstallAssistantStepTemplate");return f(),g(m,{title:"2. Aktualisierung des Systems",onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:o(()=>t[4]||(t[4]=[a("p",null," Bitte ein System-Update durchführen, um die Software auf den neusten Stand zu bringen. ",-1),a("p",null," Das garantiert, dass die openWB mit den neuesten Features und Funktionen ausgestattet ist. ",-1),a("p",null," Auf Versions-Informationen / Aktualisierung gehen, Informationen aktualisieren und falls ein Update verfügbar ist, wird der Update button grün und kann gedrückt werden. ",-1)])),content:o(()=>[S(r,{"install-assistant-active":!0,onSendCommand:t[0]||(t[0]=s=>e.$emit("sendCommand",s)),onSave:t[1]||(t[1]=s=>e.$emit("save")),onReset:t[2]||(t[2]=s=>e.$emit("reset")),onDefaults:t[3]||(t[3]=s=>e.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const N=u(A,[["render",v],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep2.vue"]]);export{N as default};
diff --git a/web/settings/assets/InstallAssistantStep3-c7995cbc.js b/web/settings/assets/InstallAssistantStep3-0af57804.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep3-c7995cbc.js
rename to web/settings/assets/InstallAssistantStep3-0af57804.js
index a729e237a1..686f5fbcf2 100644
--- a/web/settings/assets/InstallAssistantStep3-c7995cbc.js
+++ b/web/settings/assets/InstallAssistantStep3-0af57804.js
@@ -1 +1 @@
-import{C as p}from"./index-c79666b6.js";import d from"./InstallAssistantStepTemplate-cfe72ae0.js";import{G as m}from"./GeneralConfig-1687a15a.js";import{_ as u,u as i,k as g,A as f,N as r,x as s,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function k(n,e,B,S,A,a){const o=i("GeneralConfigView"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:a.nextPage,onPreviousPage:a.previousPage,onEndAssistant:a.endAssistant},{help:r(()=>e[4]||(e[4]=[s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=t=>n.$emit("sendCommand",t)),onSave:e[1]||(e[1]=t=>n.$emit("save")),onReset:e[2]||(e[2]=t=>n.$emit("reset")),onDefaults:e[3]||(e[3]=t=>n.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{I as default};
+import{C as p}from"./index-7731ba98.js";import d from"./InstallAssistantStepTemplate-94e6de56.js";import{G as m}from"./GeneralConfig-7a50fc67.js";import{_ as u,u as i,k as g,A as f,N as r,x as s,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const b={name:"InstallAssistantStep3",components:{InstallAssistantStepTemplate:d,GeneralConfigView:m},mixins:[p],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),methods:{nextPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:5)},previousPage(){this.$emit("switchPage",2)},endAssistant(){this.$emit("endAssistant")}}};function k(n,e,B,S,A,a){const o=i("GeneralConfigView"),l=i("InstallAssistantStepTemplate");return g(),f(l,{title:"3. Allgemeine Einstellungen: Auswahl des Betriebsmodus primary / secondary",onNextPage:a.nextPage,onPreviousPage:a.previousPage,onEndAssistant:a.endAssistant},{help:r(()=>e[4]||(e[4]=[s("p",null," Hier wird abgefragt, ob ihr System mit mehreren openWBs oder nur mit einer openWB betrieben wird. Eine openWB kann andere openWBs steuern. ",-1),s("p",null,' Zuerst ist im Feld "Steuerungsmodus" festzulegen, ob die openWB als "steuernd" (primary) oder als ferngesteuert (secondary) arbeiten soll. Die Einstellung gilt für genau die WB, auf der aktuell konfiguriert wird (korrekte IP-Adresse beachten). ',-1),s("p",null," Eine openWB standalone hat keinen Ladepunkt und arbeitet nur als Steuerteil (primary). Eine openWB Standard(+), custom, Duo und Buchse können sowohl als steuernder primary oder als ferngesteuerte secondary betrieben werden (Duo mit 2 Ladepunkten). Eine openWB Pro und Satellit können nur als s.g. Ladepunkt genutzt werden und benötigen zwingend einen separaten primary als Steuerteil. ",-1),s("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=t=>n.$emit("sendCommand",t)),onSave:e[1]||(e[1]=t=>n.$emit("save")),onReset:e[2]||(e[2]=t=>n.$emit("reset")),onDefaults:e[3]||(e[3]=t=>n.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(b,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep3.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStep4-19fe0142.js b/web/settings/assets/InstallAssistantStep4-7e26f73a.js
similarity index 92%
rename from web/settings/assets/InstallAssistantStep4-19fe0142.js
rename to web/settings/assets/InstallAssistantStep4-7e26f73a.js
index 35f632c967..fae3cf5093 100644
--- a/web/settings/assets/InstallAssistantStep4-19fe0142.js
+++ b/web/settings/assets/InstallAssistantStep4-7e26f73a.js
@@ -1 +1 @@
-import{C as l}from"./index-c79666b6.js";import p from"./InstallAssistantStepTemplate-cfe72ae0.js";import{b as u}from"./ChargePointInstallation-2f136eb7.js";import{_ as m,u as a,k as g,A as f,N as o,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,B,h,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const L=m(k,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{L as default};
+import{C as l}from"./index-7731ba98.js";import p from"./InstallAssistantStepTemplate-94e6de56.js";import{b as u}from"./ChargePointInstallation-d12c6dc4.js";import{_ as m,u as a,k as g,A as f,N as o,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const k={name:"InstallAssistantStep4",components:{InstallAssistantStepTemplate:p,ChargePointInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,B,h,v,i){const r=a("ChargePointInstallationView"),d=a("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Einrichten der Ladepunkte (openWB als secondary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:o(()=>e[4]||(e[4]=[n("p",null,' Diese hier vorzukonfigurierende openWB wurde als "secondary" eingestellt und wird von einer anderen openWB oder standalone ferngesteuert. ',-1),n("p",null," Bei vorkonfigurierten openWBs ist ab Werk bereits ein (zwei bei einer DUO) interner Ladepunkt eingetragen, es müssen keine weiteren Ladepunkte hinzugefügt werden. ",-1),n("p",null,' Tragen Sie unter Ladepunkte bei verfügbare Ladepunkte "Interne openWB" ein und wählen Sie die Bauart der openWB (z.B. openWB series 1/2 custom, Standard (+) oder Buchse) aus. ',-1),n("p",null," Wenn eine openWB Duo gewählt wird, so sind zwei Ladepunkte mit Ladepunkt-Nummer 1 und 2 zu konfigurieren. Bei der openWB Pro und Satellit sind keine Einstellungen notwendig. ",-1),n("p",null," Weitere Einstellungen sind bei der Vorkonfiguration einer secondary nicht notwendig. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:o(()=>[w(r,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const L=m(k,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep4.vue"]]);export{L as default};
diff --git a/web/settings/assets/InstallAssistantStep5-cd0d6d73.js b/web/settings/assets/InstallAssistantStep5-b2a202f7.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep5-cd0d6d73.js
rename to web/settings/assets/InstallAssistantStep5-b2a202f7.js
index 28446e7a8c..23e4633511 100644
--- a/web/settings/assets/InstallAssistantStep5-cd0d6d73.js
+++ b/web/settings/assets/InstallAssistantStep5-b2a202f7.js
@@ -1 +1 @@
-import{C as l}from"./index-c79666b6.js";import m from"./InstallAssistantStepTemplate-cfe72ae0.js";import{H as u}from"./HardwareInstallation-d2c0f1d5.js";import{_ as p,u as r,k as g,A as f,N as a,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,b,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default};
+import{C as l}from"./index-7731ba98.js";import m from"./InstallAssistantStepTemplate-94e6de56.js";import{H as u}from"./HardwareInstallation-4f848d8b.js";import{_ as p,u as r,k as g,A as f,N as a,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const h={name:"InstallAssistantStep5",components:{InstallAssistantStepTemplate:m,HardwareInstallationView:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",6)},previousPage(){this.$emit("switchPage",3)},endAssistant(){this.$emit("endAssistant")}}};function c(t,e,v,S,b,i){const o=r("HardwareInstallationView"),d=r("InstallAssistantStepTemplate");return g(),f(d,{title:"4. Energiesystem - Geräte und Komponenten einrichten",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null,' Diese openWB wurde als "primary" konfiguriert und übernimmt die Steuerung anderer openWBs, falls vorhanden, sowie die alleinige Regelung des Systems. Dazu müssen im Folgenden die Geräte und Komponenten eingerichtet werden. ',-1),n("p",null," Sofern das System nicht zurückgesetzt wurde, ist im Auslieferungszustand für erste Ladetests nach der WB-Montage ein virtueller Zähler vorkonfiguriert. Dieser muss zuerst gelöscht werden, wenn das im Gebäude installierte Energiesystem bestehend aus EVU-Zähler, PV-Anlage und ggf. Speicher in openWB konfiguriert wird. ",-1),n("p",null," Jedes verfügbare Gerät wird durch eine eigene IP-Adresse definiert. Dieses Gerät ist über den Herstellernamen des Energiesystems im Auswahlmenü der verfügbaren Geräte auszuwählen. Unterhalb des Gerätes werden die zugehörigen Komponenten EVU-Zähler, WR und Speicher konfiguriert. Es können je nach Bedarf beliebig viele Geräte und Komponenten miteinander kombiniert werden. ",-1),n("p",null," Bitte lesen Sie auch die Hinweistexte, welche durch Klicken auf das Fragezeichensymbol erscheinen. Hier sind weiterführende Informationen zu den Eingabefeldern zu finden. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=p(h,[["render",c],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep5.vue"]]);export{x as default};
diff --git a/web/settings/assets/InstallAssistantStep6-63d131ad.js b/web/settings/assets/InstallAssistantStep6-e43c3e7d.js
similarity index 94%
rename from web/settings/assets/InstallAssistantStep6-63d131ad.js
rename to web/settings/assets/InstallAssistantStep6-e43c3e7d.js
index 8864f6d8b2..a95c710b29 100644
--- a/web/settings/assets/InstallAssistantStep6-63d131ad.js
+++ b/web/settings/assets/InstallAssistantStep6-e43c3e7d.js
@@ -1 +1 @@
-import{C as d}from"./index-c79666b6.js";import u from"./InstallAssistantStepTemplate-cfe72ae0.js";import{b as p}from"./ChargePointInstallation-2f136eb7.js";import{_ as m,u as a,k as g,A as h,N as r,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default};
+import{C as d}from"./index-7731ba98.js";import u from"./InstallAssistantStepTemplate-94e6de56.js";import{b as p}from"./ChargePointInstallation-d12c6dc4.js";import{_ as m,u as a,k as g,A as h,N as r,x as n,D as w}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const P={name:"InstallAssistantStep6",components:{InstallAssistantStepTemplate:u,ChargePointInstallationView:p},mixins:[d],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",7)},previousPage(){this.$emit("switchPage",5)},endAssistant(){this.$emit("endAssistant")}}};function f(t,e,c,b,k,i){const o=a("ChargePointInstallationView"),l=a("InstallAssistantStepTemplate");return g(),h(l,{title:"5. Einrichten der Ladepunkte (openWB als primary)",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null,' Enthält die steuernde openWB (primary) Ladetechnik, wird bei "Verfügbare Ladepunkte" Interne openWB ausgewählt. Weitere LP werden im primary als Externe openWB (als secondary konfigurierte openWB) oder andere WB-Typen wie Pro, Satellit eingebunden. ',-1),n("p",null," Bei openWBs ab Werk kann hier bereits ein Ladepunkt eingetragen sein. ",-1),n("p",null," Nachfolgend werden die Eigenschaften des Ladepunktes wie IP-Adresse und elektrischer Anschluss definiert. Die meisten openWB werden 3-phasig angeschlossen! Bei mehreren openWB's ist auf phasenrotierten Anschluss der openWB-Zuleitung zu achten! Abschließend wird die korrekte Zuordnung der Phase 1 des Ladekabels zur zugehörigen EVU-Zählerphase konfiguriert. Dies ist sehr wichtig, um optimales Lastmanagement sicherzustellen! ",-1),n("p",null," Tipp zur Zuordnung: Verwende ein nur 1-phasig ladendes Auto (z.B. Hybrid) oder stelle bei openWB mit 1p3p-Phasenumschaltung temporär unter Sofortladen (s. Einstellungen -> Ladeeinstellungen) auf einphasig, um eine 1-phasige Ladung zu erzwingen. Gehe unter Status und vergleiche die Leistungen bzw. Ströme der 3 Phasen am EVU-Zähler (rot) beim und nach dem Autoladen (Sofortladen mit 16A/ Stop). Diejenige EVU-Phase, die deutlich erhöhte Werte anzeigt, ist die auszuwählende EVU-Phase. ",-1),n("p",null," Im grauen Menü Ladepunkt-Profile können neben dem Standard-Ladepunkt-Profil auch weitere Ladepunkt-Profile, die andere WB-Typen abbilden, erstellt werden. Dort sind Eintragungen bzgl. des Ladepunkt-Maximalstroms bei einer Phase bzw. mehreren Phasen vorzunehmen. Die Profile werden abschließend im jeweiligen blauen Ladepunkt mittels Auswahlmenü zugeordnet. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[w(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const $=m(P,[["render",f],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep6.vue"]]);export{$ as default};
diff --git a/web/settings/assets/InstallAssistantStep7-c6d28ec8.js b/web/settings/assets/InstallAssistantStep7-b34ef3e8.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep7-c6d28ec8.js
rename to web/settings/assets/InstallAssistantStep7-b34ef3e8.js
index 7accec342a..e0b2c973a1 100644
--- a/web/settings/assets/InstallAssistantStep7-c6d28ec8.js
+++ b/web/settings/assets/InstallAssistantStep7-b34ef3e8.js
@@ -1 +1 @@
-import{C as l}from"./index-c79666b6.js";import m from"./InstallAssistantStepTemplate-cfe72ae0.js";import p from"./LoadManagementConfig-269dec5d.js";import{_ as u,u as r,k as g,A as h,N as a,x as n,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./OpenwbSortableList-3ce7f991.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default};
+import{C as l}from"./index-7731ba98.js";import m from"./InstallAssistantStepTemplate-94e6de56.js";import p from"./LoadManagementConfig-4beba7d6.js";import{_ as u,u as r,k as g,A as h,N as a,x as n,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./OpenwbSortableList-3ce7f991.js";const f={name:"InstallAssistantStep7",components:{InstallAssistantStepTemplate:m,LoadManagementConfigView:p},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",8)},previousPage(){this.$emit("switchPage",6)},endAssistant(){this.$emit("endAssistant")}}};function b(t,e,S,w,A,i){const o=r("LoadManagementConfigView"),d=r("InstallAssistantStepTemplate");return g(),h(d,{title:"6. Konfiguration des Lastmanagements",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:a(()=>e[4]||(e[4]=[n("p",null," Im Lastmanagement werden die maximale Leistung sowie die maximalen Ströme für jede Phase des Zählermoduls sowie bei Hybrid-Systemen (per DC-angebundener Speicher) die maximale Ausgangsleistung des Wechselrichters der PV Anlage eingetragen, falls eine solche vorhanden ist. ",-1),n("p",null,' Der erste Zähler ist in der Regel der Zähler am EVU-Punkt (Position des PV/Speicher-Smartmeters direkt hinter dem VNB-Zähler). In openWB ist hierzu auf die unterhalb der "Vorhandene Zählermodule" liegende (rote) EVU-Zähler-Komponente zu klicken, in welche die maximale EVU-Leistung sowie die Phasenströme eingetragen werden, für die der Hausanschluss abgesichert ist (Elektriker fragen, typisch f. EFH: 24kW/3x35A, 43kW/3x63A). ',-1),n("p",null," Ist ein Wechselrichter mit DC-angebundenem Speicher unter Geräte hinzugefügt worden, dann ist unter der (grünen) WR-Komponente noch die maximale Ausgangsleistung des WR einzutragen. ",-1),n("p",null," Der EVU-Zähler (rot) schließt alle weiteren Komponenten wie WR und Speicher unter sich ein. Bei AC-eingebundenen Speichern befinden sich WR und Speicher in derselben Ebene, bei DC-eingebundenen Speichern (Hybrid) der Speicher unterhalb des WR. Die Ladepunkte (z.B. Externe openWB) befinden sich auf derselben Ebene wie der WR und unterhalb des EVU-Zählers. Anpassungen der Anordnungen sind über die Pfeil-Bereiche der Komponenten durch einfaches Verschieben mit der Maus oder am Smartphone möglich. ",-1),n("p",null,null,-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:a(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const I=u(f,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep7.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStep8-5cdd309f.js b/web/settings/assets/InstallAssistantStep8-b3e6cf23.js
similarity index 93%
rename from web/settings/assets/InstallAssistantStep8-5cdd309f.js
rename to web/settings/assets/InstallAssistantStep8-b3e6cf23.js
index bb5baf498a..2b0a08d420 100644
--- a/web/settings/assets/InstallAssistantStep8-5cdd309f.js
+++ b/web/settings/assets/InstallAssistantStep8-b3e6cf23.js
@@ -1 +1 @@
-import{C as l}from"./index-c79666b6.js";import u from"./InstallAssistantStepTemplate-cfe72ae0.js";import{a as m}from"./VehicleConfig-9a14b719.js";import{_ as g,u as a,k as h,A as p,N as r,x as n,D as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}};function z(t,e,P,w,v,i){const o=a("VehicleConfigView"),d=a("InstallAssistantStepTemplate");return h(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[f(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=g(c,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{x as default};
+import{C as l}from"./index-7731ba98.js";import u from"./InstallAssistantStepTemplate-94e6de56.js";import{a as m}from"./VehicleConfig-24e197dd.js";import{_ as g,u as a,k as h,A as p,N as r,x as n,D as f}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const c={name:"InstallAssistantStep8",components:{InstallAssistantStepTemplate:u,VehicleConfigView:m},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:[]}),methods:{nextPage(){this.$emit("switchPage",9)},previousPage(){this.$emit("switchPage",7)},endAssistant(){this.$emit("endAssistant")}}};function z(t,e,P,w,v,i){const o=a("VehicleConfigView"),d=a("InstallAssistantStepTemplate");return h(),p(d,{title:"7. Einrichten der Fahrzeuge",onNextPage:i.nextPage,onPreviousPage:i.previousPage,onEndAssistant:i.endAssistant},{help:r(()=>e[4]||(e[4]=[n("p",null," Vor dem eigentlichen Fahrzeug werden zuerst die Fahrzeug- und Lade-Profile konfiguriert. ",-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Fahrzeug-Profil aus. Bei mehreren Fahrzeugtypen werden weitere Fahrzeug-Profile hinzugefügt. Im Anschluss werden die Fahrzeug-Profile mit den passenden Einstellungen des Fahrzeugtyps versehen (Mindeststromstärke, Maximalstromstärke bei einer/mehreren Phase/n sowie Angaben zur Batterie und Handhabung der Phasen entsprechend den Daten des Automobilherstellers. Im Zweifelsfall den Hersteller des Autos oder im openWB-Forum nachfragen). ",-1),n("p",{class:"font-weight-bold"},' Wichtig: Die "Angaben zur Handhabung von Phasen" des Fahrzeugs ist richtig einzutragen! ',-1),n("p",null," Bei nur einem Fahrzeug reicht das Standard-Lade-Profil aus. Bei mehreren Fahrzeugen können weitere Lade-Profile hinzugefügt werden. Dies erlaubt die Nutzung unterschiedlicher Lademodi je Fahrzeug (z.B. EV1 = Sofortladen, EV2 = PV-Laden). Im Anschluss werden die Voreinstellungen zu den verschiedenen Lademodi konfiguriert. ",-1),n("p",null," Nun wird das eigentliche Fahrzeug angelegt und mit dem gewünschten Fahrzeug-Profil / Lade-Profil versehen. Ist nur ein Fahrzeug vorhanden, reicht das Standard-Fahrzeug aus. ",-1),n("p",{class:"font-weight-bold"}," Änderungen werden nur bei klicken auf Speichern wirksam! ",-1)])),content:r(()=>[f(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["onNextPage","onPreviousPage","onEndAssistant"])}const x=g(c,[["render",z],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep8.vue"]]);export{x as default};
diff --git a/web/settings/assets/InstallAssistantStep9-73a6b1e1.js b/web/settings/assets/InstallAssistantStep9-d4a98914.js
similarity index 91%
rename from web/settings/assets/InstallAssistantStep9-73a6b1e1.js
rename to web/settings/assets/InstallAssistantStep9-d4a98914.js
index fd57c378d7..478e58a081 100644
--- a/web/settings/assets/InstallAssistantStep9-73a6b1e1.js
+++ b/web/settings/assets/InstallAssistantStep9-d4a98914.js
@@ -1 +1 @@
-import{C as l}from"./index-c79666b6.js";import p from"./InstallAssistantStepTemplate-cfe72ae0.js";import{D as u}from"./DataManagement-1fb1197d.js";import{_ as d,u as i,k as g,A as f,N as r,x as a,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,S,A,P,n){const o=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),f(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:r(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:r(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const I=d(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{I as default};
+import{C as l}from"./index-7731ba98.js";import p from"./InstallAssistantStepTemplate-94e6de56.js";import{D as u}from"./DataManagement-f7ee6dfd.js";import{_ as d,u as i,k as g,A as f,N as r,x as a,D as c}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./dynamic-import-helper-be004503.js";const v={name:"InstallAssistantStep9",components:{InstallAssistantStepTemplate:p,DataManagement:u},mixins:[l],emits:["save","reset","defaults","sendCommand","switchPage","endAssistant"],data:()=>({mqttTopicsToSubscribe:["openWB/general/extern"]}),computed:{stepNumber(){return this.$store.state.mqtt["openWB/general/extern"]?5:8}},methods:{nextPage(){this.$emit("switchPage",10)},previousPage(){this.$emit("switchPage",this.$store.state.mqtt["openWB/general/extern"]?4:8)},endAssistant(){this.$emit("endAssistant")}}};function h(t,e,S,A,P,n){const o=i("DataManagement"),m=i("InstallAssistantStepTemplate");return g(),f(m,{title:`${n.stepNumber}. Datensicherung - Eine Sicherung erstellen`,onNextPage:n.nextPage,onPreviousPage:n.previousPage,onEndAssistant:n.endAssistant},{help:r(()=>e[4]||(e[4]=[a("p",null," Wir empfehlen an dieser Stelle eine Sicherung der openWB zu erzeugen. ",-1),a("p",null," Dieser Vorgang sollte regelmäßig durchgeführt werden, um gegebenenfalls auf eine ältere Konfiguration zurückgreifen zu können. ",-1),a("p",null,' Die Sicherung kann automatisiert durch die openWB auf einem Cloud-Dienst gespeichert werden. Dazu bitte im unteren Bereich "Backup-Cloud" die entsprechenden Einstellungen vornehmen. ',-1)])),content:r(()=>[c(o,{"install-assistant-active":!0,onSendCommand:e[0]||(e[0]=s=>t.$emit("sendCommand",s)),onSave:e[1]||(e[1]=s=>t.$emit("save")),onReset:e[2]||(e[2]=s=>t.$emit("reset")),onDefaults:e[3]||(e[3]=s=>t.$emit("defaults"))})]),_:1},8,["title","onNextPage","onPreviousPage","onEndAssistant"])}const I=d(v,[["render",h],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStep9.vue"]]);export{I as default};
diff --git a/web/settings/assets/InstallAssistantStepTemplate-cfe72ae0.js b/web/settings/assets/InstallAssistantStepTemplate-94e6de56.js
similarity index 97%
rename from web/settings/assets/InstallAssistantStepTemplate-cfe72ae0.js
rename to web/settings/assets/InstallAssistantStepTemplate-94e6de56.js
index d12951de70..fca73e7306 100644
--- a/web/settings/assets/InstallAssistantStepTemplate-cfe72ae0.js
+++ b/web/settings/assets/InstallAssistantStepTemplate-94e6de56.js
@@ -1 +1 @@
-import{C as g}from"./index-c79666b6.js";import{l as v,ak as y,al as w,F as x}from"./vendor-fortawesome-41164876.js";import{_ as k,u as r,k as i,l as a,D as t,N as s,x as n,y as c,B as p,m as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(y,w);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},S={class:"row justify-content-center"},T={class:"page-help-text col-md-3 py-2"},I={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",N,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",S,[n("div",T,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",I,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const Z=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{Z as default};
+import{C as g}from"./index-7731ba98.js";import{l as v,ak as y,al as w,F as x}from"./vendor-fortawesome-41164876.js";import{_ as k,u as r,k as i,l as a,D as t,N as s,x as n,y as c,B as p,m as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const B="/openWB/web/settings/img/openWB_logo_light.png";v.add(y,w);const h={name:"InstallAssistantStepTemplate",components:{FontAwesomeIcon:x},mixins:[g],props:{title:{type:String,required:!0},hidePrevious:{type:Boolean,required:!1,default:!1},hideNext:{type:Boolean,required:!1,default:!1},hideEnd:{type:Boolean,required:!1,default:!1}},emits:["previousPage","nextPage","endAssistant"],methods:{nextPage(){window.scrollTo(0,0),this.$emit("nextPage")},previousPage(){window.scrollTo(0,0),this.$emit("previousPage")},endAssistant(){this.$emit("endAssistant")}}},A={class:"row justify-content-center mb-1"},C={key:0,class:"col-md-4 d-flex py-1 justify-content-center"},P={key:1,class:"col-md-4 d-flex py-1 justify-content-center"},N={key:2,class:"col-md-4 d-flex py-1 justify-content-center"},S={class:"row justify-content-center"},T={class:"page-help-text col-md-3 py-2"},I={class:"col py-2"};function $(u,e,o,j,W,l){const m=r("font-awesome-icon"),d=r("openwb-base-click-button"),b=r("openwb-base-card");return i(),a("div",null,[t(b,{title:o.title,class:"p-0 mx-3"},{footer:s(()=>[n("div",A,[o.hidePrevious?p("",!0):(i(),a("div",C,[t(d,{class:"btn-block btn-warning",onButtonClicked:e[0]||(e[0]=f=>l.previousPage())},{default:s(()=>[t(m,{"fixed-width":"",icon:["fas","caret-left"]}),e[3]||(e[3]=c(" Zurück "))]),_:1})])),o.hideNext?p("",!0):(i(),a("div",P,[t(d,{class:"btn-block btn-success",onButtonClicked:e[1]||(e[1]=f=>l.nextPage())},{default:s(()=>[e[4]||(e[4]=c(" Weiter ")),t(m,{"fixed-width":"",icon:["fas","caret-right"]})]),_:1})])),o.hideEnd?p("",!0):(i(),a("div",N,[t(d,{class:"btn-block btn-danger",onButtonClicked:e[2]||(e[2]=f=>l.endAssistant())},{default:s(()=>e[5]||(e[5]=[c(" Assistent beenden ")])),_:1})]))])]),default:s(()=>[n("div",S,[n("div",T,[_(u.$slots,"help",{},()=>[e[6]||(e[6]=n("img",{src:B,alt:"openWB Logo",class:"w-100"},null,-1))],!0)]),n("div",I,[_(u.$slots,"content",{},void 0,!0)])])]),_:3},8,["title"])])}const Z=k(h,[["render",$],["__scopeId","data-v-db9e78cb"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/install_assistant/InstallAssistantStepTemplate.vue"]]);export{Z as default};
diff --git a/web/settings/assets/InstantChargeConfig-d5bb57b3.js b/web/settings/assets/InstantChargeConfig-e2112668.js
similarity index 96%
rename from web/settings/assets/InstantChargeConfig-d5bb57b3.js
rename to web/settings/assets/InstantChargeConfig-e2112668.js
index 7dfb78006c..359e1e1f30 100644
--- a/web/settings/assets/InstantChargeConfig-d5bb57b3.js
+++ b/web/settings/assets/InstantChargeConfig-e2112668.js
@@ -1 +1 @@
-import{C as l}from"./index-c79666b6.js";import{_ as b,u as o,k as a,l as i,x as _,D as s,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
+import{C as l}from"./index-7731ba98.js";import{_ as b,u as o,k as a,l as i,x as _,D as s,N as r,y as u}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbInstantChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/instant_charging/phases_to_use"]}}},h={class:"instantChargeConfig"},c={name:"instantChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const p=o("openwb-base-alert"),m=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return a(),i("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(a(),i("div",v,[s(p,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[u(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(a(),i("div",w,[s(m,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/instant_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/instant_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[u(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Sofortladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"instantChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const D=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/InstantChargeConfig.vue"]]);export{D as default};
diff --git a/web/settings/assets/LegalSettings-acbf6750.js b/web/settings/assets/LegalSettings-5e742da6.js
similarity index 97%
rename from web/settings/assets/LegalSettings-acbf6750.js
rename to web/settings/assets/LegalSettings-5e742da6.js
index 76bafbf297..d8ce991930 100644
--- a/web/settings/assets/LegalSettings-acbf6750.js
+++ b/web/settings/assets/LegalSettings-5e742da6.js
@@ -1 +1 @@
-import{l as _,a3 as k,F as y}from"./vendor-fortawesome-41164876.js";import{C as v}from"./index-c79666b6.js";import{_ as B,u as n,k as i,l as h,x as a,D as o,N as r,A as m,y as d,B as p}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";_.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:y},mixins:[v],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",$,[a("form",z,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const O=B(S,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{O as default};
+import{l as _,a3 as k,F as y}from"./vendor-fortawesome-41164876.js";import{C as v}from"./index-7731ba98.js";import{_ as B,u as n,k as i,l as h,x as a,D as o,N as r,A as m,y as d,B as p}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";_.add(k);const S={name:"OpenwbDataProtectionView",components:{FontAwesomeIcon:y},mixins:[v],emits:["sendCommand","save"],data(){return{mqttTopicsToSubscribe:["openWB/system/dataprotection_acknowledged"]}},methods:{sendSystemCommand(t,e={}){this.$emit("sendCommand",{command:t,data:e})}}},$={class:"dataProtection"},z={name:"dataProtectionForm"},C={class:"row justify-content-center"},V={class:"col-md-4 d-flex justify-content-center"};function W(t,e,N,x,A,b){const u=n("openwb-base-button-group-input"),c=n("font-awesome-icon"),g=n("openwb-base-click-button"),l=n("openwb-base-alert"),w=n("openwb-base-submit-buttons"),f=n("openwb-base-card");return i(),h("div",$,[a("form",z,[o(f,{title:"Nutzungsbedingungen & Datenschutzerklärung"},{footer:r(()=>[o(w,{"form-name":"dataProtectionForm","hide-reset":!0,"hide-defaults":!0,onSave:e[3]||(e[3]=s=>t.$emit("save"))})]),default:r(()=>[e[7]||(e[7]=a("iframe",{src:"dataProtection-usageTerms.html",width:"100%",height:"400px",class:"bg-light"},null,-1)),e[8]||(e[8]=a("hr",null,null,-1)),o(u,{title:"Nutzungsbedingungen",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"],"onUpdate:modelValue":e[0]||(e[0]=s=>t.updateState("openWB/system/usage_terms_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/usage_terms_acknowledged"]?p("",!0):(i(),m(l,{key:0,subtype:"danger",class:"mb-1"},{default:r(()=>[e[5]||(e[5]=d(" Sie müssen die Nutzungsbedingungen akzeptieren, bevor openWB eingesetzt werden kann. ")),a("div",C,[a("div",V,[o(g,{class:"btn-danger",onButtonClicked:e[1]||(e[1]=s=>b.sendSystemCommand("systemShutdown"))},{default:r(()=>[e[4]||(e[4]=d(" Nicht akzeptieren und ausschalten ")),o(c,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),_:1})),o(u,{title:"Datenschutzerklärung",buttons:[{buttonValue:!1,text:"Ablehnen",class:"btn-outline-danger"},{buttonValue:!0,text:"Akzeptieren",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"],"onUpdate:modelValue":e[2]||(e[2]=s=>t.updateState("openWB/system/dataprotection_acknowledged",s))},null,8,["model-value"]),t.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]?p("",!0):(i(),m(l,{key:1,subtype:"warning"},{default:r(()=>e[6]||(e[6]=[d(" Wenn sie nicht einwilligen, wird eine ggf. konfigurierte Cloud Anbindung gelöscht. Die openWB arbeitet autark wie gewohnt weiter. Fernzugriff und Remote Support sind dann nicht mehr möglich! ")])),_:1}))]),_:1})])])}const O=B(S,[["render",W],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LegalSettings.vue"]]);export{O as default};
diff --git a/web/settings/assets/LoadManagementConfig-269dec5d.js b/web/settings/assets/LoadManagementConfig-4beba7d6.js
similarity index 99%
rename from web/settings/assets/LoadManagementConfig-269dec5d.js
rename to web/settings/assets/LoadManagementConfig-4beba7d6.js
index 2f32974c01..412eeb6e65 100644
--- a/web/settings/assets/LoadManagementConfig-269dec5d.js
+++ b/web/settings/assets/LoadManagementConfig-4beba7d6.js
@@ -1 +1 @@
-import{l as z,O as C,N as L,F as x}from"./vendor-fortawesome-41164876.js";import{C as V}from"./index-c79666b6.js";import{S as $}from"./OpenwbSortableList-3ce7f991.js";import{_ as q,u as l,k as u,l as m,x as d,D as s,N as o,y as i,J as w,K as v,A as W,z as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";z.add(C,L);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:x},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_power_errorcase","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("counter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,r)=>e.text==r.text?0:e.text>r.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("inverter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let r=this.getChargePoint(t.id);r&&(e[t.id]=r.name)}else{let r=this.getComponent(t.id);r&&(e[t.id]=r.name)}return t.children.forEach(r=>{e={...e,...this.getElementTreeNames(r)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},isComponentType(t,e){return t.split("_").includes(e)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E={key:0},F={key:1};function O(t,e,r,P,H,g){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/counter/config/consider_less_charging",n))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:g.getHcSourceIdOptions.options,groups:g.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Wenn ein Zähler nicht auslesbar ist, wird weiterhin versucht, diesen auszulesen und nach 60s die angenommene Leistung im Fehlerfall verwendet, die unten für jeden Zähler eingestellt wird, um eine Überlast zu vermeiden. Die angenommene Leistung wird gleichmäßig auf die Phasen verteilt."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(w,null,v(g.counterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(n.name),1)]),default:o(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximale Leistung im Fehlerfall",min:0,step:1,unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_power_errorcase"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_power_errorcase",a*1e3)},{help:o(()=>[...e[15]||(e[15]=[i(" Angenommen Leistung für diesen (Zwischen-)Zähler, falls vom Zähler keine Werte abgefragt werden können. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[16]||(e[16]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(w,null,v(g.inverterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(n.name),1)]),default:o(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[17]||(e[17]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",E,[s(h,{subtype:"info"},{default:o(()=>e[18]||(e[18]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",F,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:g.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateState("openWB/counter/get/hierarchy",n))},{help:o(()=>e[19]||(e[19]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=n=>t.$emit("save")),onReset:e[4]||(e[4]=n=>t.$emit("reset")),onDefaults:e[5]||(e[5]=n=>t.$emit("defaults"))})])])}const Q=q(Z,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Q as default};
+import{l as z,O as C,N as L,F as x}from"./vendor-fortawesome-41164876.js";import{C as V}from"./index-7731ba98.js";import{S as $}from"./OpenwbSortableList-3ce7f991.js";import{_ as q,u as l,k as u,l as m,x as d,D as s,N as o,y as i,J as w,K as v,A as W,z as _}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";z.add(C,L);const Z={name:"OpenwbLoadManagementConfigView",components:{SortableList:$,FontAwesomeIcon:x},mixins:[V],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/counter/config/home_consumption_source_id","openWB/counter/config/consider_less_charging","openWB/counter/get/hierarchy","openWB/system/device/+/component/+/config","openWB/counter/+/config/max_power_errorcase","openWB/counter/+/config/max_currents","openWB/counter/+/config/max_total_power","openWB/pv/+/config/max_ac_out","openWB/chargepoint/+/config"]}},computed:{componentConfigurations(){return this.getWildcardTopics("openWB/system/device/+/component/+/config")},counterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("counter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},counterOptions(){var t=[];for(const e of Object.values(this.componentConfigurations))this.isComponentType(e.type,"counter")&&t.push({value:e.id,text:e.name});return t.sort((e,r)=>e.text==r.text?0:e.text>r.text?1:-1)},inverterConfigs:{get(){let t=this.getWildcardTopics("openWB/system/device/+/component/+/config");return Object.keys(t).filter(e=>t[e].type.includes("inverter")).reduce((e,r)=>({...e,[r]:t[r]}),{})}},hierarchyLabels:{get(){let t={};for(const e of Object.values(this.$store.state.mqtt["openWB/counter/get/hierarchy"]))t={...t,...this.getElementTreeNames(e)};return t}},getHcSourceIdOptions(){let t=[{value:null,text:"von openWB berechnen"}],e=[{label:"Eingerichtete Zähler-Komponenten",options:[...this.counterOptions]}];return{options:t,groups:e}}},methods:{getElementTreeNames(t){let e={};if(t.type=="cp"){let r=this.getChargePoint(t.id);r&&(e[t.id]=r.name)}else{let r=this.getComponent(t.id);r&&(e[t.id]=r.name)}return t.children.forEach(r=>{e={...e,...this.getElementTreeNames(r)}}),e},getComponent(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/system/device/[0-9]+/component/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},getChargePoint(t){let e;return Object.keys(this.$store.state.mqtt).forEach(r=>{r.match("^openWB/chargepoint/"+t+"/config$")&&(e=this.$store.state.mqtt[r])}),e},isComponentType(t,e){return t.split("_").includes(e)}}},M={class:"loadManagementConfig"},A={name:"loadManagementConfigForm"},U={key:0},D={key:1},E={key:0},F={key:1};function O(t,e,r,P,H,g){const h=l("openwb-base-alert"),k=l("openwb-base-button-group-input"),B=l("openwb-base-select-input"),f=l("openwb-base-heading"),b=l("font-awesome-icon"),p=l("openwb-base-number-input"),c=l("openwb-base-card"),S=l("sortable-list"),y=l("openwb-base-submit-buttons");return u(),m("div",M,[d("form",A,[s(c,{title:"Einstellungen",collapsible:!0,collapsed:!1},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",U,[s(h,{subtype:"info"},{default:o(()=>e[6]||(e[6]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",D,[s(k,{title:"Fahrzeuge, die nicht mit Sollstrom laden",buttons:[{buttonValue:!1,text:"nicht berücksichtigen",class:"btn-outline-danger"},{buttonValue:!0,text:"berücksichtigen",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/counter/config/consider_less_charging"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/counter/config/consider_less_charging",n))},{help:o(()=>e[7]||(e[7]=[d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, im Lastmanagement berücksichtigt werden, wird für diese der Sollstrom reserviert. Dadurch können bei Eingreifen des Lastmanagements andere Fahrzeuge möglicherweise nur mit reduzierter Stromstärke laden und der reservierte Strom wird nicht genutzt. Wenn die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, nutzen sie den für sie reservierten Strom. ",-1),d("p",null," Wenn angesteckte Fahrzeuge, die nicht oder nicht mit der Sollstromstärke laden, nicht im Lastmanagement berücksichtigt werden, wird für diese auch kein Strom bei vorliegender Ladefreigabe reserviert bzw. es wird nur der tatsächlich genutzte Strom im Lastmanagement berücksichtigt. Andere Fahrzeuge können dadurch mit höherer Stromstärke laden. Wenn die maximalen Lastmanagement-Grenzen fast erreicht sind und die Fahrzeuge wieder Leistung beziehen, z.B. um vorzuklimatisieren, kann es zu einer kurzzeitigen Überschreitung der Lastmanagement-Grenzen kommen, bis im nächsten Zyklus die Stromstärken aller Ladepunkte an die neue Situation angepasst wurden. Das kurzzeitige Überschreiten der Maximal-Werte stellt für die Sicherungen in der Regel kein Problem dar. ",-1)])),_:1},8,["model-value"]),s(B,{title:"Hausverbrauch",options:g.getHcSourceIdOptions.options,groups:g.getHcSourceIdOptions.groups,"model-value":t.$store.state.mqtt["openWB/counter/config/home_consumption_source_id"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/counter/config/home_consumption_source_id",n))},{help:o(()=>e[8]||(e[8]=[i(" Meist ist der Zähler am EVU-Punkt installiert, dann muss hier 'von openWB berechnen' ausgewählt werden. Wenn der Zähler im Hausverbrauchszweig installiert ist, die Struktur wie im "),d("a",{href:"https://github.com/openWB/core/wiki/Hausverbrauchs-Zähler",target:"_blank",rel:"noopener noreferrer"}," Wiki ",-1),i(" beschrieben anordnen und hier den Hausverbrauchszähler auswählen. Dann wird dieser Wert abzüglich der Ladeleistung als Hausverbrauch erfasst. ")])),_:1},8,["options","groups","model-value"]),s(f,null,{default:o(()=>e[9]||(e[9]=[i(" Vorhandene Zählermodule ")])),_:1}),s(h,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(" Die maximale Leistung wird nur für den EVU-Zähler berücksichtigt. Bei Zwischenzählern begrenzt das Lastmanagement rein anhand der maximalen Phasenströme."),d("br",null,null,-1),i(" Wenn ein Zähler nicht auslesbar ist, wird weiterhin versucht, diesen auszulesen und nach 60s die angenommene Leistung im Fehlerfall verwendet, die unten für jeden Zähler eingestellt wird, um eine Überlast zu vermeiden. Die angenommene Leistung wird gleichmäßig auf die Phasen verteilt."),d("br",null,null,-1),i(" Überlicherweise sind Hausanschlüsse mit 24kW und 3*35A bzw. 43kW und 3*63A abgesichert. ")])),_:1}),(u(!0),m(w,null,v(g.counterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"danger"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","gauge-high"]}),i(" "+_(n.name),1)]),default:o(()=>[s(p,{title:"Maximale Leistung",min:1,step:1,required:"",unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_total_power"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_total_power",a*1e3)},{help:o(()=>[...e[11]||(e[11]=[i(" Maximal zulässige Leistung für diesen (Zwischen-)Zähler. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L1",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][0],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"0")},{help:o(()=>[...e[12]||(e[12]=[i(" Maximal zulässiger Strom für die Phase 1 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L2",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][1],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"1")},{help:o(()=>[...e[13]||(e[13]=[i(" Maximal zulässiger Strom für die Phase 2 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximaler Strom L3",min:16,step:1,unit:"A",required:"","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_currents"][2],"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_currents",a,"2")},{help:o(()=>[...e[14]||(e[14]=[i(" Maximal zulässiger Strom für die Phase 3 dieses (Zwischen-)Zählers. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),s(p,{title:"Maximale Leistung im Fehlerfall",min:0,step:1,unit:"kW","model-value":t.$store.state.mqtt["openWB/counter/"+n.id+"/config/max_power_errorcase"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/counter/"+n.id+"/config/max_power_errorcase",a*1e3)},{help:o(()=>[...e[15]||(e[15]=[i(" Angenommen Leistung für diesen (Zwischen-)Zähler, falls vom Zähler keine Werte abgefragt werden können. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128)),s(f,null,{default:o(()=>e[16]||(e[16]=[i(" Vorhandene Wechselrichtermodule ")])),_:1}),(u(!0),m(w,null,v(g.inverterConfigs,n=>(u(),W(c,{key:n.id,collapsible:!0,collapsed:!0,subtype:"success"},{header:o(()=>[s(b,{"fixed-width":"",icon:["fas","solar-panel"]}),i(" "+_(n.name),1)]),default:o(()=>[s(p,{title:"Maximale Ausgangsleistung des Wechselrichters",min:0,step:.1,unit:"kW",required:"","model-value":t.$store.state.mqtt["openWB/pv/"+n.id+"/config/max_ac_out"]/1e3,"onUpdate:modelValue":a=>t.updateState("openWB/pv/"+n.id+"/config/max_ac_out",a*1e3)},{help:o(()=>[...e[17]||(e[17]=[i(" Relevant bei Hybrid-Systemen mit DC-Speicher. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024))),128))]))]),_:1}),s(c,{title:"Struktur",collapsible:!0,collapsed:!0},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(u(),m("div",E,[s(h,{subtype:"info"},{default:o(()=>e[18]||(e[18]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(u(),m("div",F,[s(S,{title:"Anordnung der Komponenten","model-value":t.$store.state.mqtt["openWB/counter/get/hierarchy"],labels:g.hierarchyLabels,"onUpdate:modelValue":e[2]||(e[2]=n=>t.updateState("openWB/counter/get/hierarchy",n))},{help:o(()=>e[19]||(e[19]=[i(" Durch die Anordnung der Komponenten werden Abhängigkeiten abgebildet."),d("br",null,null,-1),i(" An erster Stelle muss eine Zählerkomponente stehen, die den Netzanschlusspunkt erfasst. Dafür kann auch ein virtueller Zähler genutzt werden."),d("br",null,null,-1),i(" Die weiteren Komponenten müssen hierarchisch so angeordnet werden, wie sie auch physisch im Stromnetz angeschlossen werden."),d("br",null,null,-1),i(" Bei DC-gekoppelten Speichern sind diese hinter dem zugehörigen Wechselrichter zu platzieren, damit die Abhängigkeit in der Regelung berücksichtigt werden kann. ")])),_:1},8,["model-value","labels"])]))]),_:1}),s(y,{"form-name":"loadManagementConfigForm",onSave:e[3]||(e[3]=n=>t.$emit("save")),onReset:e[4]||(e[4]=n=>t.$emit("reset")),onDefaults:e[5]||(e[5]=n=>t.$emit("defaults"))})])])}const Q=q(Z,[["render",O],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/LoadManagementConfig.vue"]]);export{Q as default};
diff --git a/web/settings/assets/MqttBridgeConfig-b791fa6d.js b/web/settings/assets/MqttBridgeConfig-767ede3a.js
similarity index 99%
rename from web/settings/assets/MqttBridgeConfig-b791fa6d.js
rename to web/settings/assets/MqttBridgeConfig-767ede3a.js
index 0b03ec4471..7f3d08a0d1 100644
--- a/web/settings/assets/MqttBridgeConfig-b791fa6d.js
+++ b/web/settings/assets/MqttBridgeConfig-767ede3a.js
@@ -1 +1 @@
-import{l as x,d as C,a0 as A,F as q}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-c79666b6.js";import{_ as D,u,k as m,l as b,D as o,N as a,x as f,J as k,y as s,z as y,A as M,B as T,K as W}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";x.add(C,A);const E={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&(console.info("request removal of mqtt bridge '"+t+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}}))},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},I={class:"mqttBridgeConfiguration"},P={key:0},Q={key:1},Z=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),_=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),w=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),V=u("openwb-base-card");return m(),b(k,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",I,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(V,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),M(_,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",P,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Q,[Object.keys(i.configuredMqttBridges).length===0?(m(),M(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(k,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(V,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(_,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,Z))),128))]))]),_:1})])],64)}const H=D(E,[["render",N],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{H as default};
+import{l as x,d as C,a0 as A,F as q}from"./vendor-fortawesome-41164876.js";import{C as z}from"./index-7731ba98.js";import{_ as D,u,k as m,l as b,D as o,N as a,x as f,J as k,y as s,z as y,A as M,B as T,K as W}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";x.add(C,A);const E={name:"OpenwbMqttBridgeConfigurationView",components:{FontAwesomeIcon:q},mixins:[z],emits:["sendCommand","save","reset"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/mqtt/bridge/+"],showMqttBridgeModal:!1,modalMqttBridgeIndex:void 0}},computed:{configuredMqttBridges:{get(){let t=this.getWildcardTopics("openWB/system/mqtt/bridge/+");for(const[e,v]of Object.entries(t))v.remote.is_openwb_cloud&&delete t[e];return t}}},methods:{addMqttBridge(t){t.stopPropagation(),this.$emit("sendCommand",{command:"addMqttBridge",data:{}})},getMqttBridgeIndex(t){return parseInt(t.match(/(?:\/)(\d+)$/)[1])},removeMqttBridgeModal(t,e){e.stopPropagation(),this.modalMqttBridgeIndex=this.getMqttBridgeIndex(t),this.showMqttBridgeModal=!0},removeMqttBridge(t,e){this.showMqttBridgeModal=!1,e=="confirm"&&(console.info("request removal of mqtt bridge '"+t+"'"),this.$emit("sendCommand",{command:"removeMqttBridge",data:{bridge:t}}))},getMqttBridgeName(t){return this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t]?this.$store.state.mqtt["openWB/system/mqtt/bridge/"+t].name:t}}},I={class:"mqttBridgeConfiguration"},P={key:0},Q={key:1},Z=["name"];function N(t,e,v,F,g,i){const U=u("openwb-base-modal-dialog"),c=u("openwb-base-alert"),h=u("font-awesome-icon"),_=u("openwb-base-avatar"),p=u("openwb-base-text-input"),d=u("openwb-base-button-group-input"),w=u("openwb-base-heading"),B=u("openwb-base-number-input"),S=u("openwb-base-submit-buttons"),V=u("openwb-base-card");return m(),b(k,null,[o(U,{show:g.showMqttBridgeModal,title:"MQTT-Brücke löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=r=>i.removeMqttBridge(g.modalMqttBridgeIndex,r))},{default:a(()=>[s(' Wollen Sie die MQTT-Brücke "'+y(i.getMqttBridgeName(g.modalMqttBridgeIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),f("div",I,[o(c,{subtype:"danger"},{default:a(()=>e[1]||(e[1]=[s(" ACHTUNG: Die Konfiguration einer MQTT-Brücke erlaubt allen Nutzern mit Zugang zum entfernten MQTT-Server alle weitergeleiteten Daten dieser openWB einzusehen!"),f("br",null,null,-1),s(' Es wird dringend empfohlen, dies nur für nicht-öffentliche MQTT-Server unter Verwendung starker Transport-Verschlüsselung (TLS) mit persönlichem Login und strenger Zugriffskontrolle (zumindest für die MQTT-Thema unterhalb von "Entfernter Präfix") zu aktivieren! ')])),_:1}),o(V,{title:"Konfigurierte MQTT-Brücken"},{actions:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(m(),M(_,{key:0,class:"bg-success clickable",onClick:i.addMqttBridge},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):T("",!0)]),default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(m(),b("div",P,[o(c,{subtype:"info"},{default:a(()=>e[2]||(e[2]=[s(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(m(),b("div",Q,[Object.keys(i.configuredMqttBridges).length===0?(m(),M(c,{key:0,subtype:"info"},{default:a(()=>e[3]||(e[3]=[s(" Es wurde noch keine MQTT Brücke konfiguriert. ")])),_:1})):T("",!0),(m(!0),b(k,null,W(i.configuredMqttBridges,(r,l)=>(m(),b("form",{key:l,name:"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l)},[o(V,{title:r.name,collapsible:!0,collapsed:!0,subtype:"primary"},{actions:a(()=>[o(_,{class:"bg-danger clickable",onClick:n=>i.removeMqttBridgeModal(l,n)},{default:a(()=>[o(h,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])]),footer:a(()=>[o(S,{"form-name":"mqttBridgeConfigurationForm"+i.getMqttBridgeIndex(l),"hide-defaults":!0,onSave:n=>t.$emit("save",[l]),onReset:n=>t.$emit("reset",[l])},null,8,["form-name","onSave","onReset"])]),default:a(()=>[o(p,{title:"Bezeichnung",subtype:"text",required:"",pattern:"[A-Za-z0-9]+","model-value":r.name,"onUpdate:modelValue":n=>t.updateState(l,n,"name")},{help:a(()=>[...e[4]||(e[4]=[s(" Die Bezeichnung darf nur aus Buchstaben ohne Umlaute und Zahlen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke aktivieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":r.active,"onUpdate:modelValue":n=>t.updateState(l,n,"active")},null,8,["model-value","onUpdate:modelValue"]),e[14]||(e[14]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[5]||(e[5]=[s(" Einstellungen zur Verbindung ")])]),_:1}),o(p,{title:"Entfernter Server",subtype:"host",required:"","model-value":r.remote.host,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.host")},null,8,["model-value","onUpdate:modelValue"]),o(B,{title:"Entfernter Port",required:"",min:1,max:65535,"model-value":r.remote.port,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.port")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Benutzername",subtype:"user",required:"",pattern:"[a-zA-Z0-9_\\-+.]+","model-value":r.remote.username,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.username")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Passwort",subtype:"password",required:"","model-value":r.remote.password,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.password")},null,8,["model-value","onUpdate:modelValue"]),o(p,{title:"Präfix",subtype:"text",pattern:"[A-Za-z0-9_\\-]+(\\/[A-Za-z0-9_\\-]+)?\\/","model-value":r.remote.prefix,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.prefix")},{help:a(()=>[...e[6]||(e[6]=[s(' Das Präfix darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. Optional kann mit einem Schrägstrich "/" eine Topic-Struktur abgebildet werden. Am Ende des Präfix muss ein Schrägstrich "/" stehen. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(p,{title:"Client ID",subtype:"text",required:"",pattern:"[A-Za-z0-9_\\-]+","model-value":r.remote.client_id,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.client_id")},{help:a(()=>[...e[7]||(e[7]=[s(" Die Client ID darf nur aus Buchstaben ohne Umlaute, Zahlen, Binde- und Unterstrichen bestehen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"MQTT Protokoll",required:"required",buttons:[{buttonValue:"mqttv31",text:"v3.1"},{buttonValue:"mqttv311",text:"v3.1.1"}],"model-value":r.remote.protocol,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.protocol")},null,8,["model-value","onUpdate:modelValue"]),o(d,{title:"TLS Version",buttons:[{buttonValue:"auto",text:"Automatisch",class:"btn-outline-success"},{buttonValue:"tlsv1.0",text:"v1.0",class:"btn-outline-warning"},{buttonValue:"tlsv1.1",text:"v1.1",class:"btn-outline-warning"},{buttonValue:"tlsv1.2",text:"v1.2"}],"model-value":r.remote.tls_version,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.tls_version")},{help:a(()=>[...e[8]||(e[8]=[s(' In der Einstellung "Automatisch" wird die Version zwischen Client und Server ausgehandelt. Wenn erforderlich, kann eine spezielle Version erzwungen werden. Versionen kleiner 1.2 gelten als veraltet und sollten nicht mehr verwendet werden. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Brücke signalisieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.remote.try_private,"onUpdate:modelValue":n=>t.updateState(l,n,"remote.try_private")},{help:a(()=>[...e[9]||(e[9]=[s(" Aktiviert eine proprietäre Protokoll-Erweiterung des Mosquitto Brokers, welche dem entfernten Broker signalisiert dass es sich um eine MQTT Brücke handelt. Ergibt bessere Leistung mit Mosquitto-Brokern, ist jedoch inkompatibel mit vielen anderen MQTT-Brokern. Daher bitte nur aktivieren, wenn der Ziel-Broker sicher ein Mosquitto-Broker ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[15]||(e[15]=f("hr",null,null,-1)),o(w,null,{default:a(()=>[...e[10]||(e[10]=[s(" Datenübertragung ")])]),_:1}),o(d,{title:"Alle Statusdaten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.status,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.status")},{help:a(()=>[...e[11]||(e[11]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Datenserien für Diagramme",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.graph,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.graph")},{help:a(()=>[...e[12]||(e[12]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),o(d,{title:"Fernkonfiguration ermöglichen",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":r.data_transfer.configuration,"onUpdate:modelValue":n=>t.updateState(l,n,"data_transfer.configuration")},{help:a(()=>[...e[13]||(e[13]=[s(" ToDo... ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1032,["title"])],8,Z))),128))]))]),_:1})])],64)}const H=D(E,[["render",N],["__scopeId","data-v-1ec2f2f5"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/MqttBridgeConfig.vue"]]);export{H as default};
diff --git a/web/settings/assets/OptionalComponents-4c7d75e4.js b/web/settings/assets/OptionalComponents-2db027fc.js
similarity index 98%
rename from web/settings/assets/OptionalComponents-4c7d75e4.js
rename to web/settings/assets/OptionalComponents-2db027fc.js
index 3b80aeea2a..3078ed9c71 100644
--- a/web/settings/assets/OptionalComponents-4c7d75e4.js
+++ b/web/settings/assets/OptionalComponents-2db027fc.js
@@ -1,2 +1,2 @@
-import{_ as $,C}from"./index-c79666b6.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,X as z,Y as V,F as L}from"./vendor-fortawesome-41164876.js";import{_ as v,u as p,k as s,l as r,A as y,N as o,y as i,z as g,D as n,x as l,a0 as I,a1 as E,J as q,B as _}from"./vendor-a21b3a62.js";const F={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},M=v(F,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[M]},j={class:"display-theme-fallback"},x={key:1};function A(t,e,u,c,w,b){const d=p("openwb-base-alert"),m=p("openwb-base-textarea");return s(),r("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),y(d,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+g(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),r("div",x,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+g(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(m,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=f=>t.updateConfiguration(f,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[l("pre",null,g(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const P=v(N,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:L},props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-bbed7095.js"),["assets/displayTheme-bbed7095.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:P})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function H(t,e,u,c,w,b){const d=p("font-awesome-icon"),m=p("openwb-base-alert"),f=p("openwb-base-heading");return s(),r(q,null,[u.displayTheme.official?(s(),y(m,{key:0,subtype:"success"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),y(m,{key:1,subtype:"info"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(f,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+g(u.displayTheme.name)+'" ',1)]),_:1}),(s(),y(E(b.myComponent),{"display-theme":u.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>b.updateConfiguration(h))},null,40,["display-theme"]))],64)}const R=v(U,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:R},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},X={key:1},Y={key:0},Q=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,u,c,w,b){const d=p("openwb-base-alert"),m=p("openwb-base-button-group-input"),f=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),r("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",Z,[n(d,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",X,[n(m,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[11]||(e[11]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),r("div",Y,[n(d,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Q)]),_:1}),n(f,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":b.idTagList.join(`
+import{_ as $,C}from"./index-7731ba98.js";import{_ as O}from"./dynamic-import-helper-be004503.js";import{l as S,X as z,Y as V,F as L}from"./vendor-fortawesome-41164876.js";import{_ as v,u as p,k as s,l as r,A as y,N as o,y as i,z as g,D as n,x as l,a0 as I,a1 as E,J as q,B as _}from"./vendor-a21b3a62.js";const F={props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},M=v(F,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/DisplayThemeConfigMixin.vue"]]),N={name:"DisplayThemeFallback",mixins:[M]},j={class:"display-theme-fallback"},x={key:1};function A(t,e,u,c,w,b){const d=p("openwb-base-alert"),m=p("openwb-base-textarea");return s(),r("div",j,[Object.keys(t.displayTheme.configuration).length==0?(s(),y(d,{key:0,subtype:"info"},{default:o(()=>[i(' Das Display-Theme "'+g(t.displayTheme.name)+'" bietet keine Einstellungen. ',1)]),_:1})):(s(),r("div",x,[n(d,{subtype:"warning"},{default:o(()=>[i(' Es wurde keine Konfigurationsseite für das Display-Theme "'+g(t.displayTheme.name)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),n(m,{title:"Konfiguration",subtype:"json","model-value":t.displayTheme.configuration,"onUpdate:modelValue":e[0]||(e[0]=f=>t.updateConfiguration(f,"configuration"))},{help:o(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),n(d,{subtype:"info"},{default:o(()=>[l("pre",null,g(JSON.stringify(t.displayTheme.configuration,void 0,2)),1)]),_:1})]))])}const P=v(N,[["render",A],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeFallback.vue"]]);S.add(z,V);const U={name:"OpenwbDisplayThemeProxy",components:{FontAwesomeIcon:L},props:{displayTheme:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading display theme: ${this.displayTheme.type}`),I({loader:()=>O(Object.assign({"./cards/displayTheme.vue":()=>$(()=>import("./displayTheme-17074edc.js"),["assets/displayTheme-17074edc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/index-7731ba98.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.displayTheme.type}/displayTheme.vue`),errorComponent:P})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function H(t,e,u,c,w,b){const d=p("font-awesome-icon"),m=p("openwb-base-alert"),f=p("openwb-base-heading");return s(),r(q,null,[u.displayTheme.official?(s(),y(m,{key:0,subtype:"success"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","certificate"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird von openWB gepflegt. ',1)]),_:1})):(s(),y(m,{key:1,subtype:"info"},{default:o(()=>[n(d,{"fixed-width":"",icon:["fas","people-group"]}),i(' Das ausgewählte Display Theme "'+g(u.displayTheme.name)+'" wird in unserer Community gepflegt. Rückfragen oder Probleme bitte im Forum diskutieren. ',1)]),_:1})),n(f,null,{default:o(()=>[i(' Einstellungen für Display Theme "'+g(u.displayTheme.name)+'" ',1)]),_:1}),(s(),y(E(b.myComponent),{"display-theme":u.displayTheme,"onUpdate:configuration":e[0]||(e[0]=h=>b.updateConfiguration(h))},null,40,["display-theme"]))],64)}const R=v(U,[["render",H],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/display_themes/OpenwbDisplayThemeProxy.vue"]]),J={name:"OpenwbOptionalComponentsView",components:{OpenwbDisplayThemeProxy:R},mixins:[C],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/+/config","openWB/chargepoint/+/get/rfid","openWB/chargepoint/+/get/rfid_timestamp","openWB/chargepoint/+/set/rfid","openWB/optional/rfid/active","openWB/optional/led/active","ToDo/optional/led/instant_blocked","ToDo/optional/led/pv_blocked","ToDo/optional/led/scheduled_blocked","ToDo/optional/led/standby_blocked","ToDo/optional/led/stop_blocked","ToDo/optional/led/instant","ToDo/optional/led/pv","ToDo/optional/led/scheduled","ToDo/optional/led/standby","ToDo/optional/led/stop","openWB/optional/int_display/active","openWB/optional/int_display/standby","openWB/optional/int_display/rotation","openWB/optional/int_display/on_if_plugged_in","openWB/optional/int_display/pin_active","openWB/optional/int_display/pin_code","openWB/optional/int_display/theme","openWB/optional/int_display/only_local_charge_points","openWB/system/configurable/display_themes","openWB/optional/et/active","openWB/optional/et/config/provider","openWB/optional/et/config/max_price"],tempIdTagList:{}}},computed:{idTagList(){return Object.values(this.updateIdTagList())},displayThemeList(){return this.$store.state.mqtt["openWB/system/configurable/display_themes"]},displayThemeGroupList(){let t=[{label:"openWB",options:[]},{label:"Community",options:[]}];return this.displayThemeList.forEach(e=>{e.official===!0?t[0].options.push(e):t[1].options.push(e)}),t}},methods:{getIdFromTopic(t){return t.match(/(?:\/)([0-9]+)(?=\/)*/g)[0].replace(/[^0-9]+/g,"")},updateIdTagList(){return Object.entries(this.getWildcardTopics("^openWB/chargepoint/[^+/]+/[gs]et/rfid$",!0)).forEach(t=>{t[1]!==null&&(this.tempIdTagList[t[1]]=`${t[1]} (${t[0].includes("/set/")?"zugewiesen":"erfasst"} an ${this.getChargePointName(this.getIdFromTopic(t[0]))})`)}),this.tempIdTagList},getChargePointName(t){return this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"]?this.$store.state.mqtt["openWB/chargepoint/"+t+"/config"].name:"Ladepunkt "+t},getDisplayThemeDefaults(t){const e=this.displayThemeList.find(u=>u.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for display theme type!",t),{})},updateSelectedDisplayTheme(t){this.updateState("openWB/optional/int_display/theme",this.getDisplayThemeDefaults(t))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)}}},G={class:"optionalComponents"},K={name:"optionalComponentsForm"},Z={key:0},X={key:1},Y={key:0},Q=["innerHTML"],ee={key:0},te={key:1},ne={key:2},oe={key:0};function ie(t,e,u,c,w,b){const d=p("openwb-base-alert"),m=p("openwb-base-button-group-input"),f=p("openwb-base-textarea"),h=p("openwb-base-card"),T=p("openwb-base-heading"),B=p("openwb-base-range-input"),D=p("openwb-base-select-input"),W=p("openwb-display-theme-proxy"),k=p("openwb-base-submit-buttons");return s(),r("div",G,[l("form",K,[n(h,{title:"Identifikation"},{default:o(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",Z,[n(d,{subtype:"info"},{default:o(()=>e[10]||(e[10]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",X,[n(m,{title:"Identifikation aktivieren","model-value":t.$store.state.mqtt["openWB/optional/rfid/active"],buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"onUpdate:modelValue":e[0]||(e[0]=a=>t.updateState("openWB/optional/rfid/active",a))},{help:o(()=>e[11]||(e[11]=[i(" Die Identifikation kann zum Entsperren von Ladepunkten und/oder zur Zuordnung von Fahrzeugen genutzt werden und kann auf mehreren Wegen erfolgen: "),l("ul",null,[l("li",null," Über einen in der openWB verbauten RFID-Reader (optional, z.B. anhand des Lieferscheins prüfen). "),l("li",null," Durch die automatische Erkennung an einer openWB Pro (muss in den Einstellungen aktiviert werden). "),l("li",null," Durch manuelle Eingabe einer ID am Display einer openWB. ")],-1)])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0?(s(),r("div",Y,[n(d,{subtype:"info",class:"mb-1"},{default:o(()=>[e[12]||(e[12]=i(" Die ID-Tags müssen in den Einstellungen der Fahrzeuge diesen zugeordnet werden.")),e[13]||(e[13]=l("br",null,null,-1)),e[14]||(e[14]=i(" Es kann zuerst das Fahrzeug angesteckt und dann der ID-Tag erfasst werden oder anders herum. Im letzten Fall muss innerhalb von 5 Minuten ein Fahrzeug angesteckt werden, sonst wird der ID-Tag verworfen.")),e[15]||(e[15]=l("br",null,null,-1)),l("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,Q)]),_:1}),n(f,{title:"Erkannte ID-Tags",readonly:"",disabled:"","model-value":b.idTagList.join(`
 `)},{help:o(()=>e[16]||(e[16]=[i(" Solange diese Seite geöffnet ist, werden alle erfassten ID-Tags in dieser Liste aufgeführt. ")])),_:1},8,["model-value"])])):_("",!0)]))]),_:1}),n(h,{title:"Display (intern oder extern)"},{default:o(()=>[n(m,{title:"Integriertes Display","model-value":t.$store.state.mqtt["openWB/optional/int_display/active"],buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"onUpdate:modelValue":e[1]||(e[1]=a=>t.updateState("openWB/optional/int_display/active",a))},{help:o(()=>e[17]||(e[17]=[i(' Je nach Bestellung kann die openWB mit oder ohne Display geliefert worden sein. Auch die Variante "Standalone" bietet beide Optionen. Bitte prüfe zuerst die Hardwareausstattung deiner openWB (z.B. Lieferschein). ')])),_:1},8,["model-value"]),t.$store.state.mqtt["openWB/optional/int_display/active"]==!0?(s(),r("div",ee,[n(m,{title:"Orientierung","model-value":t.$store.state.mqtt["openWB/optional/int_display/rotation"],buttons:[{buttonValue:0,text:"0°"},{buttonValue:90,text:"90°"},{buttonValue:180,text:"180°"},{buttonValue:270,text:"270°"}],"onUpdate:modelValue":e[2]||(e[2]=a=>t.updateState("openWB/optional/int_display/rotation",a))},{help:o(()=>e[18]||(e[18]=[i(" Mit dieser Einstellung kann das Display im Uhrzeigersinn gedreht werden, falls erforderlich. Nach einer Änderung ist ein Neustart erforderlich!"),l("br",null,null,-1),i(" Diese Einstellung erfordert ein Raspberry Pi Display. Für eine openWB series2 mit integriertem Display muss 0° ausgewählt werden, für eine Standalone mit Display 180°. Anzeigen, welche über HDMI angeschlossen sind, werden nicht unterstützt. ")])),_:1},8,["model-value"]),e[21]||(e[21]=l("hr",null,null,-1)),n(T,null,{default:o(()=>e[19]||(e[19]=[i(" Display Standby ")])),_:1}),n(B,{title:"Ausschaltzeit",min:0,max:12,step:1,"model-value":t.$store.state.mqtt["openWB/optional/int_display/standby"],unit:"Sek",labels:[{label:"Immer an",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:30,value:30},{label:45,value:45},{label:"1 Min",value:60},{label:"1,5 Min",value:90},{label:"2 Min",value:120},{label:"3 Min",value:180},{label:"4 Min",value:240},{label:"5 Min",value:300},{label:"10 Min",value:600}],"onUpdate:modelValue":e[3]||(e[3]=a=>t.updateState("openWB/optional/int_display/standby",a))},{help:o(()=>e[20]||(e[20]=[i(" Hier kann eine Zeitspanne angegeben werden, nach der das Display ausgeschaltet wird. ")])),_:1},8,["model-value"])])):_("",!0),t.$store.state.mqtt["openWB/general/extern"]===!0?(s(),r("div",te,[e[23]||(e[23]=l("hr",null,null,-1)),n(d,{subtype:"info"},{default:o(()=>e[22]||(e[22]=[i(' Weitere Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),r("div",ne,[e[26]||(e[26]=l("hr",null,null,-1)),n(m,{title:"Ladepunkte auf externen openWB","model-value":t.$store.state.mqtt["openWB/optional/int_display/only_local_charge_points"],buttons:[{buttonValue:!1,text:"Alle",class:"btn-outline-danger"},{buttonValue:!0,text:"Nur Lokale",class:"btn-outline-success"}],"onUpdate:modelValue":e[4]||(e[4]=a=>t.updateState("openWB/optional/int_display/only_local_charge_points",a))},{help:o(()=>e[24]||(e[24]=[i(" Hiermit kann festgelegt werden, ob an angebundenen externen openWB alle oder nur die jeweils lokalen Ladepunkte angezeigt werden sollen. ")])),_:1},8,["model-value"]),e[27]||(e[27]=l("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/int_display/theme"]!==void 0?(s(),r("div",oe,[n(D,{class:"mb-2",title:"Theme des Displays",groups:b.displayThemeGroupList,"model-value":t.$store.state.mqtt["openWB/optional/int_display/theme"].type,"onUpdate:modelValue":e[5]||(e[5]=a=>b.updateSelectedDisplayTheme(a))},{help:o(()=>e[25]||(e[25]=[i(" Hier können unterschiedliche Display-Anzeigen, s.g. Themes, ausgewählt werden. Die Anzahl der Themes wird sich mit zukünftigen Releases erhöhen. ")])),_:1},8,["groups","model-value"]),t.$store.state.mqtt["openWB/optional/int_display/theme"].type?(s(),y(W,{key:0,"display-theme":t.$store.state.mqtt["openWB/optional/int_display/theme"],"onUpdate:configuration":e[6]||(e[6]=a=>b.updateConfiguration("openWB/optional/int_display/theme",a))},null,8,["display-theme"])):_("",!0)])):_("",!0)]))]),_:1}),n(k,{"form-name":"optionalComponentsForm",onSave:e[7]||(e[7]=a=>t.$emit("save")),onReset:e[8]||(e[8]=a=>t.$emit("reset")),onDefaults:e[9]||(e[9]=a=>t.$emit("defaults"))})])])}const ae=v(J,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/OptionalComponents.vue"]]),de=Object.freeze(Object.defineProperty({__proto__:null,default:ae},Symbol.toStringTag,{value:"Module"}));export{M as D,de as O};
diff --git a/web/settings/assets/PVChargeConfig-3a73cba8.js b/web/settings/assets/PVChargeConfig-3c28eb46.js
similarity index 99%
rename from web/settings/assets/PVChargeConfig-3a73cba8.js
rename to web/settings/assets/PVChargeConfig-3c28eb46.js
index 325817788a..7886e7f553 100644
--- a/web/settings/assets/PVChargeConfig-3a73cba8.js
+++ b/web/settings/assets/PVChargeConfig-3c28eb46.js
@@ -1 +1 @@
-import{C as B}from"./index-c79666b6.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-41164876.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as _,B as v}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[B],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},q={class:"pvChargeConfig"},M={name:"pvChargeConfigForm"},L={key:0},A={key:1},P={key:0},R={key:1},$={key:0},U={key:1},F={key:0};function D(n,e,p,N,I,l){const b=g("openwb-base-alert"),h=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),c=g("openwb-base-card"),m=g("font-awesome-icon"),w=g("openwb-base-range-input"),f=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",q,[o("form",M,[i(c,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(b,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",A,[i(h,{modelValue:l.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>l.controlMode=t),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[22]||(e[22]=[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>e[23]||(e[23]=[r(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>e[24]||(e[24]=[r(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>e[25]||(e[25]=[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>e[26]||(e[26]=[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[31]||(e[31]=o("hr",null,null,-1)),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>e[27]||(e[27]=[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),o("br",null,null,-1),r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>e[28]||(e[28]=[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[32]||(e[32]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>e[29]||(e[29]=[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",P,[i(b,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",R,[i(h,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>e[34]||(e[34]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",$,[i(b,{subtype:"info"},{default:a(()=>e[35]||(e[35]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",U,[i(h,{modelValue:l.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>l.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[36]||(e[36]=r(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[37]||(e[37]=r(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[38]||(e[38]=r(" Mindest-SoC des Speichers "))]),help:a(()=>[e[45]||(e[45]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[39]||(e[39]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[40]||(e[40]=r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[41]||(e[41]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[42]||(e[42]=r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[43]||(e[43]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[44]||(e[44]=r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue","model-value"]),l.batMode==="min_soc_bat_mode"?(s(),u("div",F,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(f,null,{default:a(()=>e[46]||(e[46]=[r(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>e[47]||(e[47]=[r(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),_(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["model-value"])):v("",!0),i(f,null,{default:a(()=>e[48]||(e[48]=[r(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>e[49]||(e[49]=[r(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),_(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["model-value"])):v("",!0)])):v("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const K=E(C,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{K as default};
+import{C as B}from"./index-7731ba98.js";import{l as S,P as V,Z as k,_ as z,F as y}from"./vendor-fortawesome-41164876.js";import{_ as E,u as g,k as s,l as u,x as o,D as i,N as a,y as r,A as _,B as v}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";S.add(V,k,z);const C={name:"OpenwbPVChargeConfigView",components:{FontAwesomeIcon:y},mixins:[B],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/pv_charging/control_range","openWB/general/chargemode_config/pv_charging/feed_in_yield","openWB/general/chargemode_config/pv_charging/switch_on_threshold","openWB/general/chargemode_config/pv_charging/switch_on_delay","openWB/general/chargemode_config/pv_charging/switch_off_threshold","openWB/general/chargemode_config/pv_charging/switch_off_delay","openWB/general/chargemode_config/pv_charging/phases_to_use","openWB/general/chargemode_config/pv_charging/bat_mode","openWB/general/chargemode_config/pv_charging/bat_power_reserve","openWB/general/chargemode_config/pv_charging/bat_power_reserve_active","openWB/general/chargemode_config/pv_charging/bat_power_discharge","openWB/general/chargemode_config/pv_charging/bat_power_discharge_active","openWB/general/chargemode_config/pv_charging/min_bat_soc"],calculatedControlMode:void 0}},computed:{controlMode:{get(){if(this.calculatedControlMode!==void 0)return this.calculatedControlMode;const n="openWB/general/chargemode_config/pv_charging/control_range";let e=this.$store.state.mqtt[n];var p="individual";return typeof e<"u"&&(e[0]===-230&&e[1]===0?p="export":e[0]===0&&e[1]===230?p="import":e[0]===-115&&e[1]===115?p="balanced":p="individual"),p},set(n){const e="openWB/general/chargemode_config/pv_charging/control_range";switch(this.calculatedControlMode=n,n){case"export":this.updateState(e,[-230,0]);break;case"import":this.updateState(e,[0,230]);break;case"balanced":this.updateState(e,[-115,115]);break}}},batMode(){return this.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]}},watch:{controlMode(n){this.calculatedControlMode=n}}},q={class:"pvChargeConfig"},M={name:"pvChargeConfigForm"},L={key:0},A={key:1},P={key:0},R={key:1},$={key:0},U={key:1},F={key:0};function D(n,e,p,N,I,l){const b=g("openwb-base-alert"),h=g("openwb-base-button-group-input"),d=g("openwb-base-number-input"),c=g("openwb-base-card"),m=g("font-awesome-icon"),w=g("openwb-base-range-input"),f=g("openwb-base-heading"),W=g("openwb-base-submit-buttons");return s(),u("div",q,[o("form",M,[i(c,{title:"Regelparameter"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",L,[i(b,{subtype:"info"},{default:a(()=>e[21]||(e[21]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",A,[i(h,{modelValue:l.controlMode,"onUpdate:modelValue":e[0]||(e[0]=t=>l.controlMode=t),title:"Regelmodus",buttons:[{buttonValue:"export",text:"Einspeisung"},{buttonValue:"import",text:"Bezug"},{buttonValue:"balanced",text:"Ausgewogen"},{buttonValue:"individual",text:"Individuell"}]},{help:a(()=>e[22]||(e[22]=[r(" Die Ladeleistung kann nicht mit absoluter Genauigkeit eingestellt werden, sodass am EVU-Punkt nicht auf exakt 0W geregelt werden kann. Der Regelmodus legt fest, ob diese Differenz am EVU-Punkt (ca. 200-300W) zu geringem Netzbezug oder geringer Netzeinspeisung führen soll."),o("br",null,null,-1),r(" Bei Speichervorrang erzeugt die Regelung bei Bedarf unabhängig vom eingestellten Regelmodus Einspeisung, damit der Speicher seine Ladeleistung erhöht."),o("br",null,null,-1),r(" Achtung: bei unlogischen Einstellungen kann die Regelung gestört werden! Im Zweifel bitte unsere vordefinierten Modi verwenden. ")])),_:1},8,["modelValue"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Minimum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][0]/1e3:void 0,"onUpdate:modelValue":e[1]||(e[1]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"0"))},{help:a(()=>e[23]||(e[23]=[r(" Untere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),i(d,{disabled:l.controlMode!=="individual",readonly:l.controlMode!=="individual",title:"Maximum",step:.005,unit:"kW",required:"","model-value":Array.isArray(n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"])?n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/control_range"][1]/1e3:void 0,"onUpdate:modelValue":e[2]||(e[2]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/control_range",t*1e3,"1"))},{help:a(()=>e[24]||(e[24]=[r(" Obere Grenze des Regelbereichs. ")])),_:1},8,["disabled","readonly","model-value"]),e[30]||(e[30]=o("hr",null,null,-1)),i(d,{title:"Einschaltschwelle",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_threshold"]/1e3,"onUpdate:modelValue":e[3]||(e[3]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_threshold",t*1e3))},{help:a(()=>e[25]||(e[25]=[r(" Wird der Regelbereich in Richtung Einspeisung um diese Leistung überschritten, so wird der Ladevorgang gestartet."),o("br",null,null,-1),r(" Dieser Wert wird pro Phase genutzt und ist daher immer für eine Phase anzugeben. ")])),_:1},8,["model-value"]),i(d,{title:"Einschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_on_delay"],"onUpdate:modelValue":e[4]||(e[4]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_on_delay",t))},{help:a(()=>e[26]||(e[26]=[r(" Die Einschaltschwelle muss für die hier angegebene Zeit dauerhaft überschritten werden, bevor ein Ladevorgang gestartet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird weiter geladen, wenn die Abschaltschwelle nicht unterschritten wird. ")])),_:1},8,["model-value"]),e[31]||(e[31]=o("hr",null,null,-1)),i(d,{title:"Abschaltschwelle",step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_threshold"]/1e3,"onUpdate:modelValue":e[5]||(e[5]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_threshold",t*1e3))},{help:a(()=>e[27]||(e[27]=[r(" Wird der Regelbereich in Richtung Netzbezug um diese Leistung überschritten, so wird der Ladevorgang beendet. Wenn ein Speicher im System vorhanden ist, gilt die Abschaltschwelle auch für die Speicherentladung. Die Abschaltschwelle übersteuert den Mindest-SoC des Speichers (siehe Speicher-Beachtung unten)."),o("br",null,null,-1),r(" Dieser Wert ist unabhängig von der Anzahl genutzter Phasen. ")])),_:1},8,["model-value"]),i(d,{title:"Abschaltverzögerung",min:0,step:1,unit:"s",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/switch_off_delay"],"onUpdate:modelValue":e[6]||(e[6]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/switch_off_delay",t))},{help:a(()=>e[28]||(e[28]=[r(" Die Abschaltschwelle muss für die hier angegebene Zeit dauerhaft unterschritten werden, bevor ein Ladevorgang beendet wird."),o("br",null,null,-1),r(" Wenn ein Ladevorgang aktiv ist und auf PV-Laden umgeschaltet wird, wird die Ladung sofort beendet, wenn die Abschaltschwelle unterschritten wird. ")])),_:1},8,["model-value"]),e[32]||(e[32]=o("hr",null,null,-1)),i(d,{title:"Regelpunkt Einspeisegrenze",min:0,step:.05,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/feed_in_yield"]/1e3,"onUpdate:modelValue":e[7]||(e[7]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/feed_in_yield",t*1e3))},{help:a(()=>e[29]||(e[29]=[r(" Ein Wert größer 0kW bewirkt, dass weniger PV-Leistung zum Laden benutzt wird."),o("br",null,null,-1),r(" Die Nutzung dieser Option ergibt nur Sinn, wenn ein Wechselrichter mit separatem Smart-Meter am EVU-Punkt verbaut ist (nicht der originale Zähler des Versorgers!), welches eine dynamische Begrenzung der Einspeiseleistung am EVU-Punkt durch den PV-Wechselrichter bietet (bitte bei ev. Problemen immer vorab prüfen lassen)."),o("br",null,null,-1),r(' Ist eine Einspeiseleistungsreduzierung verbaut (in vielen älteren, privaten Einspeiseverträgen z.B. als 70% Regelung bekannt), wird mit Eingabe des Wertes "Regelpunkt Einspeisegrenze" ein eigenverbrauchsoptimiertes Fahrzeugladen mit PV-Überschussenergie möglich, die sonst abgeregelt werden würde (Nutzung der PV-Peaks).'),o("br",null,null,-1),r(' Wird in einem "Ladeprofil" die Option "Einspeisegrenze beachten" eingeschaltet, so wird der Regelpunkt auf diesen Wert verschoben und die Ladung startet erst, wenn der hinterlegte Wert "Regelpunkt Einspeisegrenze" überschritten wird.'),o("br",null,null,-1),r(" Zur optimalen Eigenverbrauchssteuerung sollte der Wert einige hundert Watt UNTER der im Wechselrichter hinterlegten EVU-Einspeiseleistungsgrenze liegen, damit openWB die Ladung freigibt, BEVOR der Wechselrichter begrenzt wird. ")])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Phasenumschaltung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",P,[i(b,{subtype:"info"},{default:a(()=>e[33]||(e[33]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",R,[i(h,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/phases_to_use"],"onUpdate:modelValue":e[8]||(e[8]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/phases_to_use",t))},{help:a(()=>e[34]||(e[34]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "PV-Laden" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um den verfügbaren Überschuss in die Fahrzeuge zu laden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen einer und mehreren Phasen (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),i(c,{title:"Speicher-Beachtung"},{default:a(()=>[n.$store.state.mqtt["openWB/general/extern"]===!0?(s(),u("div",$,[i(b,{subtype:"info"},{default:a(()=>e[35]||(e[35]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(s(),u("div",U,[i(h,{modelValue:l.batMode,"onUpdate:modelValue":[e[9]||(e[9]=t=>l.batMode=t),e[10]||(e[10]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_mode",t))],title:"Laden mit Überschuss",buttons:[{buttonValue:"ev_mode"},{buttonValue:"bat_mode"},{buttonValue:"min_soc_bat_mode"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_mode"]},{"label-ev_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[36]||(e[36]=r(" Fahrzeuge "))]),"label-bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[37]||(e[37]=r(" Speicher "))]),"label-min_soc_bat_mode":a(()=>[i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[38]||(e[38]=r(" Mindest-SoC des Speichers "))]),help:a(()=>[e[45]||(e[45]=o("p",null,' Sofern ein Hausstromspeicher (im Folgenden "Speicher" genannt) im Energiesystem verbaut ist, kann dieser beim Fahrzeugladen mit berücksichtigt werden. Dies erfolgt passiv über die Berücksichtigung der Speicherleistungswerte und des Speicher-SoC. Eine aktive Speichersteuerung durch openWB ist aktuell mangels Speicherschnittstelle nicht möglich. ',-1)),o("p",null,[e[39]||(e[39]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","car-side"]}),e[40]||(e[40]=r(' Fahrzeuge" wird der gesamte Überschuss in das EV geladen. Ist die maximale Ladeleistung der Fahrzeuge erreicht und es wird eingespeist, wird dieser Überschuss in den Speicher geladen. '))]),o("p",null,[e[41]||(e[41]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-car-battery"]}),e[42]||(e[42]=r(' Speicher" wird der gesamte Überschuss in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss unter Beachtung der Einschaltschwelle in die Fahrzeuge geladen. '))]),o("p",null,[e[43]||(e[43]=r(' Bei Auswahl " ')),i(m,{"fixed-width":"",icon:["fas","fa-battery-half"]}),e[44]||(e[44]=r(' Mindest-SoC des Speichers" wird der Überschuss bis zum Mindest-SoC in den Speicher geladen. Ist die maximale Ladeleistung des Speichers erreicht und es wird eingespeist, wird dieser Überschuss in die Fahrzeuge geladen. Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen. '))])]),_:1},8,["modelValue","model-value"]),l.batMode==="min_soc_bat_mode"?(s(),u("div",F,[i(w,{title:"Mindest-SoC des Speichers",min:0,max:100,step:1,unit:"%",required:n.required,"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/min_bat_soc"],"onUpdate:modelValue":e[11]||(e[11]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/min_bat_soc",t))},null,8,["required","model-value"]),i(f,null,{default:a(()=>e[46]||(e[46]=[r(" Speicher-SoC unterhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[12]||(e[12]=t=>n.batPowerReserveActive=t),e[13]||(e[13]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve_active",t))],title:"Ladeleistung für Speicher reservieren",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]},{help:a(()=>e[47]||(e[47]=[r(" ACHTUNG: Der hier eingestellte Wert darf die maximale Ladeleistung des Speichers nicht überschreiten."),o("br",null,null,-1),r(" Wird der Mindest-SoC des Speichers nicht erreicht, wird der Speicher mit der hier eingestellte Leistung geladen. Mit dem verbleibenden Überschuss werden die Fahrzeuge geladen. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve_active"]?(s(),_(d,{key:0,title:"Reserve Ladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_reserve"]/1e3,"onUpdate:modelValue":e[14]||(e[14]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_reserve",t*1e3))},null,8,["model-value"])):v("",!0),i(f,null,{default:a(()=>e[48]||(e[48]=[r(" Speicher-SoC oberhalb Mindest-SoC ")])),_:1}),i(h,{modelValue:n.batPowerReserveActive,"onUpdate:modelValue":[e[15]||(e[15]=t=>n.batPowerReserveActive=t),e[16]||(e[16]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge_active",t))],title:"Entladung des Speichers erlauben",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]},{help:a(()=>e[49]||(e[49]=[r(" Wird der Mindest-SoC überschritten, wird der Überschuss ins Fahrzeug geladen und der Speicher mit der hier eingestellten Leistung in die Fahrzeuge entladen. Die Entladeleistung des Speichers wird dem Überschuss zum Erreichen der Einschaltschwelle hinzugerechnet. ")])),_:1},8,["modelValue","model-value"]),n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge_active"]?(s(),_(d,{key:1,title:"Erlaubte Entladeleistung",min:.1,step:.1,unit:"kW",required:"","model-value":n.$store.state.mqtt["openWB/general/chargemode_config/pv_charging/bat_power_discharge"]/1e3,"onUpdate:modelValue":e[17]||(e[17]=t=>n.updateState("openWB/general/chargemode_config/pv_charging/bat_power_discharge",t*1e3))},null,8,["model-value"])):v("",!0)])):v("",!0)]))]),_:1}),i(W,{"form-name":"pvChargeConfigForm",onSave:e[18]||(e[18]=t=>n.$emit("save")),onReset:e[19]||(e[19]=t=>n.$emit("reset")),onDefaults:e[20]||(e[20]=t=>n.$emit("defaults"))})])])}const K=E(C,[["render",D],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/PVChargeConfig.vue"]]);export{K as default};
diff --git a/web/settings/assets/ScheduledChargeConfig-76a4970c.js b/web/settings/assets/ScheduledChargeConfig-57a6780f.js
similarity index 98%
rename from web/settings/assets/ScheduledChargeConfig-76a4970c.js
rename to web/settings/assets/ScheduledChargeConfig-57a6780f.js
index 1bcef1a055..d77ed32fd1 100644
--- a/web/settings/assets/ScheduledChargeConfig-76a4970c.js
+++ b/web/settings/assets/ScheduledChargeConfig-57a6780f.js
@@ -1 +1 @@
-import{C as h}from"./index-c79666b6.js";import{_ as b,u as o,k as i,l as u,x as l,D as s,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[h],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},c={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const g=o("openwb-base-alert"),d=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return i(),u("div",c,[l("form",f,[s(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[s(g,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[s(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"]),e[8]||(e[8]=l("hr",null,null,-1)),s(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(p,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const E=b(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default};
+import{C as h}from"./index-7731ba98.js";import{_ as b,u as o,k as i,l as u,x as l,D as s,N as a,y as r}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const _={name:"OpenwbScheduledChargeConfigView",mixins:[h],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/scheduled_charging/phases_to_use","openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"]}}},c={class:"scheduledChargeConfig"},f={name:"scheduledChargeConfigForm"},v={key:0},w={key:1};function k(t,e,C,V,B,$){const g=o("openwb-base-alert"),d=o("openwb-base-button-group-input"),m=o("openwb-base-card"),p=o("openwb-base-submit-buttons");return i(),u("div",c,[l("form",f,[s(m,{title:"Phasenumschaltung"},{default:a(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),u("div",v,[s(g,{subtype:"info"},{default:a(()=>e[5]||(e[5]=[r(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),u("div",w,[s(d,{title:"Anzahl Phasen Zielladen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use",n))},{help:a(()=>e[6]||(e[6]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"]),e[8]||(e[8]=l("hr",null,null,-1)),s(d,{title:"Anzahl Phasen bei PV-Überschuss",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"},{buttonValue:0,text:"Automatik"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv"],"onUpdate:modelValue":e[1]||(e[1]=n=>t.updateState("openWB/general/chargemode_config/scheduled_charging/phases_to_use_pv",n))},{help:a(()=>e[7]||(e[7]=[r(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zielladen" bei Laden mit PV-Überschuss mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Im Modus "Automatik" entscheidet die Regelung, welche Einstellung genutzt wird, um das Ziel zu erreichen. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(p,{"form-name":"scheduledChargeConfigForm",onSave:e[2]||(e[2]=n=>t.$emit("save")),onReset:e[3]||(e[3]=n=>t.$emit("reset")),onDefaults:e[4]||(e[4]=n=>t.$emit("defaults"))})])])}const E=b(_,[["render",k],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/ScheduledChargeConfig.vue"]]);export{E as default};
diff --git a/web/settings/assets/Status-f4fe35a1.js b/web/settings/assets/Status-93a3f68a.js
similarity index 99%
rename from web/settings/assets/Status-f4fe35a1.js
rename to web/settings/assets/Status-93a3f68a.js
index 889f38fe99..48a1cd00eb 100644
--- a/web/settings/assets/Status-f4fe35a1.js
+++ b/web/settings/assets/Status-93a3f68a.js
@@ -1 +1 @@
-import{C as y}from"./index-c79666b6.js";import{l as w,K as S,F as x,L as k,M as C,c as q,N as z,O as $,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-41164876.js";import{_ as W,u as o,k as r,A as l,N as d,D as n,y as p,z as f,x as v,B as T,l as I,J as P,K as L}from"./vendor-a21b3a62.js";import{C as H,p as Z,a as K,L as F,b as J,P as G,c as Q,T as U,i as X,d as Y,e as ee}from"./vendor-chartjs-5fa56b74.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";w.add(S);const te={name:"ChargePointSumCard",components:{FontAwesomeIcon:x},mixins:[y]};function ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-text-input"),c=o("openwb-base-heading"),u=o("openwb-base-card");return r(),l(u,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),t[0]||(t[0]=p(" Alle Ladepunkte "))]),default:d(()=>[n(m,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[1]||(t[1]=[p("Historie")])),_:1}),n(m,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const oe=W(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,q,S);const ae={name:"ChargePointCard",components:{FontAwesomeIcon:x},mixins:[y],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}};function re(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-checkbox-input"),u=o("openwb-base-text-input"),_=o("openwb-base-heading"),B=o("openwb-base-card");return r(),l(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),p(" "+f(a.installedChargePoint.name)+" (ID: "+f(s.chargePointIndex)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(m,{subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/state_str"]),1)]),_:1}),n(c,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),n(c,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),n(u,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/current",2)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[4]||(t[4]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[5]||(t[5]=[p("Phasen")])),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),l(u,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+s.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(r(),l(u,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),n(u,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const se=W(ae,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,q,z);const le={name:"CounterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{counter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ie(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-card");return r(),l(_,{subtype:"danger",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","gauge-high"]}),p(" "+f(a.counter.name)+" (ID: "+f(a.counter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]!=null?(r(),l(m,{key:0,subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]),1)]),_:1})):T("",!0),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Zählerstände")])),_:1}),n(u,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/frequency",3)},null,8,["model-value"]),n(c,null,{default:d(()=>t[6]||(t[6]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const ue=W(le,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,q,$);const pe={name:"InverterSumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function de(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),t[0]||(t[0]=p(" Alle Wechselrichter "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[3]||(t[3]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ce=W(pe,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,q,$);const me={name:"InverterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{inverter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ge(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),p(" "+f(a.inverter.name)+" (ID: "+f(a.inverter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[2]||(t[2]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const fe=W(me,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,q,A);const be={name:"BatterySumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function _e(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),t[0]||(t[0]=p(" Alle Speicher "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Tageswerte")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const he=W(be,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,q,A);const ve={name:"BatteryCard",components:{FontAwesomeIcon:x},mixins:[y],props:{battery:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ye(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),p(" "+f(a.battery.name)+" (ID: "+f(a.battery.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Aktuelle Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/soc"]},null,8,["model-value"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const We=W(ve,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,q,E);const we={name:"RippleControlReceiverCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}};function xe(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(r(),l(u,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{icon:["fas","tower-broadcast"]}),t[0]||(t[0]=p(" Steuerbare Verbrauchseinrichtung (RSE) "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):T("",!0)}const Be=W(we,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,q,M);const ke={name:"VehicleCard",components:{FontAwesomeIcon:x},mixins:[y],props:{vehicle:{type:Object,required:!1,default:void 0},vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}};function Ce(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-number-input"),_=o("openwb-base-text-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car"]}),p(" "+f(a.vehicleName)+" (ID: "+f(s.vehicleIndex)+") ",1)]),default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]!==void 0?(r(),l(m,{key:0,subtype:g.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):T("",!0),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Fahrzeugdaten")])),_:1}),n(u,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/soc"]},null,8,["model-value"]),n(u,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":s.socRange},null,8,["model-value"]),n(_,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":s.socTimestamp},null,8,["model-value"])]),_:1})}const qe=W(ke,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,q,V);H.register(Z,K,F,J,G,Q,U,X,Y);const Te={name:"ElectricityTariffCard",components:{ChartjsLine:ee,FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],t=[];for(const[g,s]of Object.entries(e))t.push({timestamp:g*1e3,price:s*1e5});const b=t.slice(-1)[0];t.push({timestamp:b.timestamp+(60*60-1)*1e3,price:b.price})}const a=this.chartDatasets;return a.datasets[0].data=t,a}}},Ie={class:"openwb-chart"};function Ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("chartjs-line"),_=o("openwb-base-card");return s.electricityTariffConfigured?(r(),l(_,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","ranking-star"]}),t[0]||(t[0]=p(" Variabler Stromtarif "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ie,[s.chartDataRead?(r(),l(u,{key:0,ref:"myChart",data:s.chartDataObject,options:g.chartOptions},null,8,["data","options"])):T("",!0)])]),_:1})):T("",!0)}const Pe=W(Te,[["render",Ne],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Le={name:"OpenwbStatusView",components:{ChargePointSumCard:oe,ChargePointCard:se,CounterCard:ue,InverterSumCard:ce,InverterCard:fe,BatterySumCard:he,BatteryCard:We,RippleControlReceiverCard:Be,VehicleCard:qe,ElectricityTariffCard:Pe},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),t={};for(const[a,b]of Object.entries(e))(b.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(t[a]=b);return t}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,t){return Object.keys(e).filter(a=>e[a].type.includes(t)).reduce((a,b)=>({...a,[b]:e[b]}),{})}}},Se={class:"status"};function $e(e,t,a,b,g,s){const i=o("charge-point-sum-card"),m=o("charge-point-card"),c=o("counter-card"),u=o("inverter-sum-card"),_=o("inverter-card"),B=o("battery-sum-card"),O=o("battery-card"),j=o("vehicle-card"),D=o("electricity-tariff-card"),R=o("ripple-control-receiver-card");return r(),I("div",Se,[s.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(i,{key:0})):T("",!0),(r(!0),I(P,null,L(s.installedChargePoints,(h,N)=>(r(),l(m,{key:N,"installed-charge-point":h,"installed-charge-point-key":N},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(r(!0),I(P,null,L(s.counterConfigs,h=>(r(),l(c,{key:h.id,counter:h},null,8,["counter"]))),128)),s.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(u,{key:1})):T("",!0),(r(!0),I(P,null,L(s.inverterConfigs,h=>(r(),l(_,{key:h.id,inverter:h},null,8,["inverter"]))),128)),s.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(B,{key:2})):T("",!0),(r(!0),I(P,null,L(s.batteryConfigs,h=>(r(),l(O,{key:h.id,battery:h},null,8,["battery"]))),128)),(r(!0),I(P,null,L(s.vehicleNames,(h,N)=>(r(),l(j,{key:N,"vehicle-key":N,"vehicle-name":h},null,8,["vehicle-key","vehicle-name"]))),128)),n(D),n(R)])}const He=W(Le,[["render",$e],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{He as default};
+import{C as y}from"./index-7731ba98.js";import{l as w,K as S,F as x,L as k,M as C,c as q,N as z,O as $,P as A,Q as E,R as M,S as V}from"./vendor-fortawesome-41164876.js";import{_ as W,u as o,k as r,A as l,N as d,D as n,y as p,z as f,x as v,B as T,l as I,J as P,K as L}from"./vendor-a21b3a62.js";import{C as H,p as Z,a as K,L as F,b as J,P as G,c as Q,T as U,i as X,d as Y,e as ee}from"./vendor-chartjs-5fa56b74.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";import"./vendor-luxon-8ddd27a0.js";w.add(S);const te={name:"ChargePointSumCard",components:{FontAwesomeIcon:x},mixins:[y]};function ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-text-input"),c=o("openwb-base-heading"),u=o("openwb-base-card");return r(),l(u,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),t[0]||(t[0]=p(" Alle Ladepunkte "))]),default:d(()=>[n(m,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/get/power",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[1]||(t[1]=[p("Historie")])),_:1}),n(m,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(m,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/get/daily_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const oe=W(te,[["render",ne],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointSumCard.vue"]]);w.add(k,C,q,S);const ae={name:"ChargePointCard",components:{FontAwesomeIcon:x},mixins:[y],props:{installedChargePointKey:{type:String,required:!0},installedChargePoint:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}},computed:{chargePointIndex:{get(){return parseInt(this.installedChargePointKey.match(/(?:\/)(\d+)(?=\/)/)[1])}}}};function re(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-checkbox-input"),u=o("openwb-base-text-input"),_=o("openwb-base-heading"),B=o("openwb-base-card");return r(),l(B,{subtype:"primary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","charging-station"]}),p(" "+f(a.installedChargePoint.name)+" (ID: "+f(s.chargePointIndex)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(m,{subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/state_str"]),1)]),_:1}),n(c,{title:"Fahrzeug angesteckt",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/plug_state"]==1},null,8,["model-value"]),n(c,{title:"Ladevorgang aktiv",disabled:"","model-value":e.$store.state.mqtt["openWB/chargepoint/"+s.chargePointIndex+"/get/charge_state"]==1},null,8,["model-value"]),n(u,{title:"Zählerstand laden",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Zählerstand entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute geladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Heute entladen",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Ladestromvorgabe",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"A","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/current",2)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.01",unit:"Hz","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/frequency",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[4]||(t[4]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/power_factors",2)},null,8,["model-value"]),n(_,null,{default:d(()=>t[5]||(t[5]=[p("Phasen")])),_:1}),e.$store.state.mqtt["openWB/general/extern"]===!0?(r(),l(u,{key:0,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/internal_chargepoint/"+s.chargePointIndex+"/data/phases_to_use")},null,8,["model-value"])):(r(),l(u,{key:1,title:"Vorgabe",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/set/phases_to_use")},null,8,["model-value"])),n(u,{title:"Aktuell",readonly:"",class:"text-right text-monospace","model-value":e.formatNumberTopic("openWB/chargepoint/"+s.chargePointIndex+"/get/phases_in_use")},null,8,["model-value"])]),_:1})}const se=W(ae,[["render",re],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ChargePointCard.vue"]]);w.add(k,C,q,z);const le={name:"CounterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{counter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ie(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-card");return r(),l(_,{subtype:"danger",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","gauge-high"]}),p(" "+f(a.counter.name)+" (ID: "+f(a.counter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]!=null?(r(),l(m,{key:0,subtype:"info"},{default:d(()=>[t[2]||(t[2]=p(" Statusmeldung:")),t[3]||(t[3]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/counter/"+a.counter.id+"/get/state_str"]),1)]),_:1})):T("",!0),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Zählerstände")])),_:1}),n(u,{title:"Export",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Import",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,{title:"Netzfrequenz",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"Hz","model-value":e.formatNumberTopic("openWB/counter/"+a.counter.id+"/get/frequency",3)},null,8,["model-value"]),n(c,null,{default:d(()=>t[6]||(t[6]=[p("Werte pro Phase")])),_:1}),n(u,{title:"Spannung",readonly:"",class:"text-right text-monospace",unit:"V","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/voltages",1)},null,8,["model-value"]),n(u,{title:"Strom",readonly:"",class:"text-right text-monospace",unit:"A","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/currents",2)},null,8,["model-value"]),n(u,{title:"Wirkleistung",readonly:"",class:"text-right text-monospace",unit:"kW","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/powers",3,3,.001)},null,8,["model-value"]),n(u,{title:"Leistungsfaktor",readonly:"",class:"text-right text-monospace","model-value":e.formatPhaseArrayNumberTopic("openWB/counter/"+a.counter.id+"/get/power_factors",2)},null,8,["model-value"])]),_:1})}const ue=W(le,[["render",ie],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/CounterCard.vue"]]);w.add(k,C,q,$);const pe={name:"InverterSumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function de(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),t[0]||(t[0]=p(" Alle Wechselrichter "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[3]||(t[3]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const ce=W(pe,[["render",de],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterSumCard.vue"]]);w.add(k,C,q,$);const me={name:"InverterCard",components:{FontAwesomeIcon:x},mixins:[y],props:{inverter:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ge(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-heading"),_=o("openwb-base-card");return r(),l(_,{subtype:"success",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","solar-panel"]}),p(" "+f(a.inverter.name)+" (ID: "+f(a.inverter.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/pv/"+a.inverter.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Zählerstand",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(u,null,{default:d(()=>t[2]||(t[2]=[p("Erträge")])),_:1}),n(c,{title:"Heute",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieser Monat",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/monthly_exported",3,3,.001)},null,8,["model-value"]),n(c,{title:"Dieses Jahr",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/pv/"+a.inverter.id+"/get/yearly_exported",3,3,.001)},null,8,["model-value"])]),_:1})}const fe=W(me,[["render",ge],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/InverterCard.vue"]]);w.add(k,C,q,A);const be={name:"BatterySumCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{statusLevel:["success","warning","danger"]}}};function _e(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),t[0]||(t[0]=p(" Alle Speicher "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[4]||(t[4]=[p("Tageswerte")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/get/daily_exported",3,3,.001)},null,8,["model-value"]),n(c,null,{default:d(()=>t[5]||(t[5]=[p("Saldierte Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/get/soc"]},null,8,["model-value"])]),_:1})}const he=W(be,[["render",_e],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatterySumCard.vue"]]);w.add(k,C,q,A);const ve={name:"BatteryCard",components:{FontAwesomeIcon:x},mixins:[y],props:{battery:{type:Object,required:!0}},data(){return{statusLevel:["success","warning","danger"]}}};function ye(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-text-input"),_=o("openwb-base-number-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"warning",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car-battery"]}),p(" "+f(a.battery.name)+" (ID: "+f(a.battery.id)+") ",1)]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Aktuelle Werte")])),_:1}),n(u,{title:"Leistung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kW","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/power",3,3,.001)},null,8,["model-value"]),n(_,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/bat/"+a.battery.id+"/get/soc"]},null,8,["model-value"]),n(c,null,{default:d(()=>t[3]||(t[3]=[p("Zählerstände")])),_:1}),n(u,{title:"Ladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/imported",3,3,.001)},null,8,["model-value"]),n(u,{title:"Entladung",readonly:"",class:"text-right text-monospace",step:"0.001",unit:"kWh","model-value":e.formatNumberTopic("openWB/bat/"+a.battery.id+"/get/exported",3,3,.001)},null,8,["model-value"])]),_:1})}const We=W(ve,[["render",ye],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/BatteryCard.vue"]]);w.add(k,C,q,E);const we={name:"RippleControlReceiverCard",components:{FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/ripple_control_receiver/get/fault_state","openWB/general/ripple_control_receiver/get/fault_str","openWB/general/ripple_control_receiver/get/override_value","openWB/general/ripple_control_receiver/module"],statusLevel:["success","warning","danger"]}}};function xe(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("openwb-base-card");return e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"]&&e.$store.state.mqtt["openWB/general/ripple_control_receiver/module"].type?(r(),l(u,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{icon:["fas","tower-broadcast"]}),t[0]||(t[0]=p(" Steuerbare Verbrauchseinrichtung (RSE) "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Status",readonly:"","model-value":e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]==0?"Laden gesperrt":"Laden erlaubt ("+e.$store.state.mqtt["openWB/general/ripple_control_receiver/get/override_value"]+"%)"},null,8,["model-value"])]),_:1})):T("",!0)}const Be=W(we,[["render",xe],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/RippleControlReceiver.vue"]]);w.add(k,C,q,M);const ke={name:"VehicleCard",components:{FontAwesomeIcon:x},mixins:[y],props:{vehicle:{type:Object,required:!1,default:void 0},vehicleKey:{type:String,required:!0},vehicleName:{type:String,default:""}},data(){return{statusLevel:["success","warning","danger"]}},computed:{vehicleIndex:{get(){return parseInt(this.vehicleKey.match(/(?:\/)(\d+)(?=\/)/)[1])}},socTimestamp:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]!==void 0?new Date(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/soc_timestamp"]*1e3).toLocaleString():"-"}},socRange:{get(){return this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]!==void 0?Math.round(this.$store.state.mqtt["openWB/vehicle/"+this.vehicleIndex+"/get/range"]):0}}}};function Ce(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-heading"),u=o("openwb-base-number-input"),_=o("openwb-base-text-input"),B=o("openwb-base-card");return r(),l(B,{subtype:"info",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","car"]}),p(" "+f(a.vehicleName)+" (ID: "+f(s.vehicleIndex)+") ",1)]),default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]!==void 0?(r(),l(m,{key:0,subtype:g.statusLevel[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[0]||(t[0]=p(" Modulmeldung:")),t[1]||(t[1]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/fault_str"]),1)]),_:1},8,["subtype"])):T("",!0),n(c,null,{default:d(()=>t[2]||(t[2]=[p("Fahrzeugdaten")])),_:1}),n(u,{title:"Ladestand",readonly:"",class:"text-right text-monospace",unit:"%","model-value":e.$store.state.mqtt["openWB/vehicle/"+s.vehicleIndex+"/get/soc"]},null,8,["model-value"]),n(u,{title:"Reichweite",readonly:"",class:"text-right text-monospace",unit:"km","model-value":s.socRange},null,8,["model-value"]),n(_,{title:"Letzter Zeitstempel",readonly:"",class:"text-right text-monospace","model-value":s.socTimestamp},null,8,["model-value"])]),_:1})}const qe=W(ke,[["render",Ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/VehicleCard.vue"]]);w.add(k,C,q,V);H.register(Z,K,F,J,G,Q,U,X,Y);const Te={name:"ElectricityTariffCard",components:{ChartjsLine:ee,FontAwesomeIcon:x},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/optional/et/provider","openWB/optional/et/get/fault_state","openWB/optional/et/get/fault_str","openWB/optional/et/get/prices"],statusLevel:["success","warning","danger"],chartDatasets:{datasets:[{label:"Stromtarif",unit:"ct/kWh",type:"line",stepped:!0,borderColor:"rgba(255, 0, 0, 0.7)",backgroundColor:"rgba(255, 10, 13, 0.3)",fill:!1,pointStyle:"circle",pointRadius:0,pointHoverRadius:4,cubicInterpolationMode:"monotone",hidden:!1,borderWidth:1,data:void 0,yAxisID:"y",parsing:{xAxisKey:"timestamp",yAxisKey:"price"}}]},chartOptions:{plugins:{title:{display:!1},tooltip:{enabled:!0},legend:{display:!1}},elements:{point:{radius:2}},responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{type:"time",time:{unit:"hour",text:"Zeit",maxTicksLimit:24},display:!0,title:{display:!0,text:"Uhrzeit"},ticks:{font:{size:12},maxTicksLimit:0},grid:{}},y:{position:"left",type:"linear",display:"auto",title:{font:{size:12},display:!0,text:"Preis [ct/kWh]"},grid:{},ticks:{font:{size:12},stepSize:.01,maxTicksLimit:11}}}}}},computed:{electricityTariffConfigured(){const e=this.$store.state.mqtt["openWB/optional/et/provider"];return e!==void 0?e.type!==null:!1},chartDataRead(){return this.chartDataObject.datasets[0].data!=null},chartDataObject(){if(this.$store.state.mqtt["openWB/optional/et/get/prices"]){var e=this.$store.state.mqtt["openWB/optional/et/get/prices"],t=[];for(const[g,s]of Object.entries(e))t.push({timestamp:g*1e3,price:s*1e5});const b=t.slice(-1)[0];t.push({timestamp:b.timestamp+(60*60-1)*1e3,price:b.price})}const a=this.chartDatasets;return a.datasets[0].data=t,a}}},Ie={class:"openwb-chart"};function Ne(e,t,a,b,g,s){const i=o("font-awesome-icon"),m=o("openwb-base-alert"),c=o("openwb-base-text-input"),u=o("chartjs-line"),_=o("openwb-base-card");return s.electricityTariffConfigured?(r(),l(_,{key:0,subtype:"secondary",collapsible:!0,collapsed:!0},{header:d(()=>[n(i,{"fixed-width":"",icon:["fas","ranking-star"]}),t[0]||(t[0]=p(" Variabler Stromtarif "))]),default:d(()=>[n(m,{subtype:g.statusLevel[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]]},{default:d(()=>[e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==1?(r(),l(i,{key:0,"fixed-width":"",icon:["fas","exclamation-triangle"]})):e.$store.state.mqtt["openWB/optional/et/get/fault_state"]==2?(r(),l(i,{key:1,"fixed-width":"",icon:["fas","times-circle"]})):(r(),l(i,{key:2,"fixed-width":"",icon:["fas","check-circle"]})),t[1]||(t[1]=p(" Modulmeldung:")),t[2]||(t[2]=v("br",null,null,-1)),p(" "+f(e.$store.state.mqtt["openWB/optional/et/get/fault_str"]),1)]),_:1},8,["subtype"]),n(c,{title:"Anbieter",readonly:"","model-value":e.$store.state.mqtt["openWB/optional/et/provider"].name},null,8,["model-value"]),v("div",Ie,[s.chartDataRead?(r(),l(u,{key:0,ref:"myChart",data:s.chartDataObject,options:g.chartOptions},null,8,["data","options"])):T("",!0)])]),_:1})):T("",!0)}const Pe=W(Te,[["render",Ne],["__scopeId","data-v-f4769d2f"],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/status/ElectricityTariffCard.vue"]]);const Le={name:"OpenwbStatusView",components:{ChargePointSumCard:oe,ChargePointCard:se,CounterCard:ue,InverterSumCard:ce,InverterCard:fe,BatterySumCard:he,BatteryCard:We,RippleControlReceiverCard:Be,VehicleCard:qe,ElectricityTariffCard:Pe},mixins:[y],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/chargepoint/get/power","openWB/chargepoint/get/imported","openWB/chargepoint/get/exported","openWB/chargepoint/get/daily_imported","openWB/chargepoint/get/daily_exported","openWB/chargepoint/+/config","openWB/chargepoint/+/get/+","openWB/chargepoint/+/get/connected_vehicle/info","openWB/chargepoint/+/set/+","openWB/internal_chargepoint/+/data/phases_to_use","openWB/system/device/+/component/+/config","openWB/counter/+/get/+","openWB/pv/get/+","openWB/pv/+/get/+","openWB/bat/get/+","openWB/bat/+/get/+","openWB/vehicle/+/name","openWB/vehicle/+/get/+"]}},computed:{installedChargePoints:{get(){let e=this.getWildcardTopics("openWB/chargepoint/+/config"),t={};for(const[a,b]of Object.entries(e))(b.type==="internal_openwb"||this.$store.state.mqtt["openWB/general/extern"]===!1)&&(t[a]=b);return t}},numChargePointsInstalled:{get(){return Object.keys(this.installedChargePoints).length}},counterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"counter")}},numInvertersInstalled:{get(){return Object.keys(this.inverterConfigs).length}},inverterConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"inverter")}},numBatteriesInstalled:{get(){return Object.keys(this.batteryConfigs).length}},batteryConfigs:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"),"bat")}},vehicleNames:{get(){return this.$store.state.mqtt["openWB/general/extern"]===!0?{}:this.getWildcardTopics("openWB/vehicle/+/name")}}},methods:{filterComponentsByType(e,t){return Object.keys(e).filter(a=>e[a].type.includes(t)).reduce((a,b)=>({...a,[b]:e[b]}),{})}}},Se={class:"status"};function $e(e,t,a,b,g,s){const i=o("charge-point-sum-card"),m=o("charge-point-card"),c=o("counter-card"),u=o("inverter-sum-card"),_=o("inverter-card"),B=o("battery-sum-card"),O=o("battery-card"),j=o("vehicle-card"),D=o("electricity-tariff-card"),R=o("ripple-control-receiver-card");return r(),I("div",Se,[s.numChargePointsInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(i,{key:0})):T("",!0),(r(!0),I(P,null,L(s.installedChargePoints,(h,N)=>(r(),l(m,{key:N,"installed-charge-point":h,"installed-charge-point-key":N},null,8,["installed-charge-point","installed-charge-point-key"]))),128)),(r(!0),I(P,null,L(s.counterConfigs,h=>(r(),l(c,{key:h.id,counter:h},null,8,["counter"]))),128)),s.numInvertersInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(u,{key:1})):T("",!0),(r(!0),I(P,null,L(s.inverterConfigs,h=>(r(),l(_,{key:h.id,inverter:h},null,8,["inverter"]))),128)),s.numBatteriesInstalled>1&&e.$store.state.mqtt["openWB/general/extern"]===!1?(r(),l(B,{key:2})):T("",!0),(r(!0),I(P,null,L(s.batteryConfigs,h=>(r(),l(O,{key:h.id,battery:h},null,8,["battery"]))),128)),(r(!0),I(P,null,L(s.vehicleNames,(h,N)=>(r(),l(j,{key:N,"vehicle-key":N,"vehicle-name":h},null,8,["vehicle-key","vehicle-name"]))),128)),n(D),n(R)])}const He=W(Le,[["render",$e],["__scopeId","data-v-051028a3"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Status.vue"]]);export{He as default};
diff --git a/web/settings/assets/Support-e285335a.js b/web/settings/assets/Support-72a8335a.js
similarity index 99%
rename from web/settings/assets/Support-e285335a.js
rename to web/settings/assets/Support-72a8335a.js
index 393ce3a897..4c94546ad3 100644
--- a/web/settings/assets/Support-e285335a.js
+++ b/web/settings/assets/Support-72a8335a.js
@@ -1,3 +1,3 @@
-import{l as D,g as V,F as W}from"./vendor-fortawesome-41164876.js";import{C as A}from"./index-c79666b6.js";import{_ as C,u,k as f,l as c,x as r,A as k,N as s,D as o,a2 as F,B as w,y as n,q as z}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[A],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p}
+import{l as D,g as V,F as W}from"./vendor-fortawesome-41164876.js";import{C as A}from"./index-7731ba98.js";import{_ as C,u,k as f,l as c,x as r,A as k,N as s,D as o,a2 as F,B as w,y as n,q as z}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";D.add(V);const x={name:"OpenwbSupportView",components:{FontAwesomeIcon:W},mixins:[A],emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/system/dataprotection_acknowledged","openWB/system/serial_number","openWB/system/device/+/config","openWB/system/device/+/component/+/config","openWB/vehicle/+/name","openWB/vehicle/+/info"],email:void 0,components:void 0,vehicles:void 0,message:void 0,enableSendDebugButton:!0}},computed:{debugData(){return{email:this.email,serialNumber:this.$store.state.mqtt["openWB/system/serial_number"],installedComponents:this.installedComponents,vehicles:this.vehicleInfo,message:this.message}},installedComponents(){var b,m;if(this.components!==void 0)return this.components;let i="";const e=this.getWildcardTopics("openWB/system/device/+/component/+/config");for(const t of Object.values(e)){const a=t.id,d=((b=t.info)==null?void 0:b.manufacturer)||"N/A",p=((m=t.info)==null?void 0:m.model)||"N/A";i+=`(${a}) Hersteller: ${d}, Modell: ${p}
 `}return i.trim()},vehicleInfo(){if(this.vehicles!==void 0)return this.vehicles;let i="";const e=this.getWildcardTopics("openWB/vehicle/+/info");for(const[b,m]of Object.entries(e)){const t=parseInt(b.split("/")[2]);if(t!==0){const a=m.manufacturer||"N/A",d=m.model||"N/A";i+=`(${t}) Hersteller: ${a}, Modell: ${d}
 `}}return i.trim()}},methods:{sendDebugMessage(){if(document.forms.supportForm.reportValidity())this.$emit("sendCommand",{command:"sendDebug",data:this.debugData}),this.enableSendDebugButton=!1;else{console.warn("form invalid");return}}}},_={class:"support"},q={name:"supportForm"},I={key:1},N={key:0},T={class:"row justify-content-center"};function M(i,e,b,m,t,a){const d=u("router-link"),p=u("openwb-base-alert"),v=u("FontAwesomeIcon"),h=u("openwb-base-text-input"),g=u("openwb-base-textarea"),y=u("openwb-base-click-button"),B=u("openwb-base-card"),S=u("font-awesome-icon");return f(),c("div",_,[r("form",q,[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]!==!0?(f(),k(p,{key:0,subtype:"danger"},{default:s(()=>[e[6]||(e[6]=n(" Du musst der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[5]||(e[5]=[n(" Datenschutzerklärung ")])),_:1}),e[7]||(e[7]=n(" zustimmen, um einen Systembericht senden zu können. "))]),_:1})):(f(),c("div",I,[o(p,{subtype:"success"},{default:s(()=>[e[9]||(e[9]=n(" Du hast der ")),o(d,{to:"/System/LegalSettings"},{default:s(()=>e[8]||(e[8]=[n(" Datenschutzerklärung ")])),_:1}),e[10]||(e[10]=n(" zugestimmt und kannst Systemberichte senden. "))]),_:1}),o(B,{title:"Systembericht"},F({default:s(()=>[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?(f(),c("div",N,[o(p,{subtype:"info"},{default:s(()=>[r("ul",null,[r("li",null,[e[11]||(e[11]=n(" Lies bitte den Hilfetext, der durch Klick auf das ")),o(v,{icon:["far","question-circle"]}),e[12]||(e[12]=n(" angezeigt wird. Nimm das Wiki zur Hilfe. "))]),e[13]||(e[13]=r("li",null,' Vergewissere Dich , dass mindestens die aktuelle "Release" Version installiert ist. ',-1)),e[14]||(e[14]=r("li",null," Stelle beim Absenden des Berichtes die Fehlerkonditionen her. Lädt ein Fahrzeug nicht, sollte es angeschlossen und nicht voll geladen sein. Ist PV laden betroffen, sollte die Sonne auch scheinen. Der Systembericht muss dann versendet werden, wenn der Fehler aktuell vorliegt. ",-1)),e[15]||(e[15]=r("li",null," Stelle sicher, dass der Lademodus gewählt ist und im Falle von nicht ladenden ladenden Fahrzeugen, dass der Ladepunkt auch entsperrt wurde. ",-1)),e[16]||(e[16]=r("li",null," Das Auslesen der Systemkonfiguration erfolgt direkt nach den Klick auf Absenden und kann einige Zeit in Anspruch nehmen. Du erhältst ca. 15 bis 30 Minuten nach Versand des Systemberichtes von uns automatisch eine E-Mail mit der Ticketnummer unter der die Anfrage bei uns registriert wurde. Wir melden uns bei Dir. Bitte kontrolliere daher immer auch den Spam Ordner auf eingehende Nachrichten. Erhältst Du trotzdem keine Ticketnummer, ist das Versenden des Systemberichtes vermutlich fehlgeschlagen. ",-1))])]),_:1}),o(h,{modelValue:t.email,"onUpdate:modelValue":e[0]||(e[0]=l=>t.email=l),title:"E-Mail",required:"",subtype:"email"},{help:s(()=>e[17]||(e[17]=[n(" Deine E-Mail-Adresse, an die der Support Dir antwortet. ")])),_:1},8,["modelValue"]),o(h,{title:"openWB Seriennummer",required:"","model-value":i.$store.state.mqtt["openWB/system/serial_number"],"onUpdate:modelValue":e[1]||(e[1]=l=>i.updateState("openWB/system/serial_number",l))},{help:s(()=>e[18]||(e[18]=[n(" Die Seriennummer der openWB findest Du außen am, bei älteren Installationen innen im Gehäuse. Du kannst uns aber auch eine Bestellnummer oder Rechnungsnummer übermitteln. Das Gehäuse muss nicht extra geöffnet werden!"),r("br",null,null,-1),n(" Bei einer gekauften openWB wird die Seriennummer automatisch ermittelt. ")])),_:1},8,["model-value"]),o(g,{title:"Verwendete Komponenten",required:"",minlength:"3",maxlength:"500","model-value":a.installedComponents,"onUpdate:modelValue":e[2]||(e[2]=l=>t.components=l)},{help:s(()=>[e[20]||(e[20]=n(" Gib hier möglichst detailliert an, welche Anlagenkomponenten (EVU, PV, Speicher) angebunden sind.")),e[21]||(e[21]=r("br",null,null,-1)),o(d,{to:"/HardwareInstallation"},{default:s(()=>e[19]||(e[19]=[n(" Die Angaben können auch direkt in der Konfiguration der Komponenten dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{title:"Fahrzeuge",required:"",minlength:"3",maxlength:"500","model-value":a.vehicleInfo,"onUpdate:modelValue":e[3]||(e[3]=l=>t.vehicles=l)},{help:s(()=>[e[23]||(e[23]=n(" Gib hier an, welche Fahrzeuge geladen (Hersteller, Modell, Baujahr).")),e[24]||(e[24]=r("br",null,null,-1)),o(d,{to:"/VehicleConfiguration"},{default:s(()=>e[22]||(e[22]=[n(" Die Angaben können auch direkt in der Konfiguration der Fahrzeuge dauerhaft gespeichert werden. ")])),_:1})]),_:1},8,["model-value"]),o(g,{modelValue:t.message,"onUpdate:modelValue":e[4]||(e[4]=l=>t.message=l),title:"Problembeschreibung",required:"",minlength:"20",maxlength:"500"},null,8,["modelValue"])])):w("",!0)]),_:2},[i.$store.state.mqtt["openWB/system/dataprotection_acknowledged"]===!0?{name:"footer",fn:s(()=>[r("div",T,[o(y,{class:z(["col-4",t.enableSendDebugButton?"btn-success":"btn-outline-success"]),disabled:!t.enableSendDebugButton,onButtonClicked:a.sendDebugMessage},{default:s(()=>e[25]||(e[25]=[n(" Absenden ")])),_:1},8,["class","disabled","onButtonClicked"])])]),key:"0"}:void 0]),1024),t.enableSendDebugButton?w("",!0):(f(),k(p,{key:0,subtype:"success"},{default:s(()=>[e[26]||(e[26]=n(" Die Daten für den Fehlerbericht werden im Hintergrund zusammengestellt. Du kannst diese Seite jetzt verlassen. ")),o(S,{"fixed-width":"",icon:["fas","check"]})]),_:1}))]))])])}const G=C(x,[["render",M],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/Support.vue"]]);export{G as default};
diff --git a/web/settings/assets/System-83bb0533.js b/web/settings/assets/System-f7b57fb1.js
similarity index 98%
rename from web/settings/assets/System-83bb0533.js
rename to web/settings/assets/System-f7b57fb1.js
index c23fbeb857..617339f996 100644
--- a/web/settings/assets/System-83bb0533.js
+++ b/web/settings/assets/System-f7b57fb1.js
@@ -1 +1 @@
-import{l as W,ae as A,p as q,a3 as C,U as S,af as z,F as U}from"./vendor-fortawesome-41164876.js";import{C as x}from"./index-c79666b6.js";import{_ as E,u as b,k as c,l as h,A as _,N as a,B as w,x as r,D as t,y as i,q as B,J as $,K as F,z as j}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";W.add(A,q,C,S,z);const D={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[x],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getBranchGroups(){const n="Release",e="Beta",u="master",v=[n,e],p=(l,d)=>l.value==d.value?0:l.value==n?-1:d.value==n?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var m=0;for(const[l,d]of Object.entries(o))v.includes(l)?m=0:l==u?m=1:m=2,f[m].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(p),f[1].options.sort(p)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var n=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(n!==void 0)for(const[u,v]of Object.entries(n))e.unshift({value:u,text:v});return e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},T={class:"system"},L={key:1},N={name:"versionInfoForm"},R={class:"missing-commits"},Z={class:"row justify-content-center"},I={class:"col-md-4 d-flex py-1 justify-content-center"},O={class:"col-md-4 d-flex py-1 justify-content-center"},P={key:0,name:"powerForm"},G={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={key:1,name:"releaseChangeForm"},M={class:"row justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"};function X(n,e,u,v,p,o){const f=b("openwb-base-button-group-input"),m=b("openwb-base-alert"),l=b("openwb-base-text-input"),d=b("openwb-base-card"),g=b("font-awesome-icon"),y=b("openwb-base-click-button"),k=b("openwb-base-select-input");return c(),h("div",T,[u.installAssistantActive?w("",!0):(c(),_(m,{key:0,subtype:"danger"},{default:a(()=>[e[12]||(e[12]=r("h2",null,"Achtung!",-1)),e[13]||(e[13]=r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=s=>p.warningAcknowledged=s),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),h("div",L,[r("form",N,[t(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",Z,[r("div",I,[t(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=s=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[e[16]||(e[16]=i(" Informationen aktualisieren ")),t(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",O,[t(y,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=s=>o.systemUpdate())},{default:a(()=>[e[17]||(e[17]=i(" Update ")),t(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=s=>n.$store.state.mqtt["openWB/system/current_branch"]=s),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=s=>n.$store.state.mqtt["openWB/system/version"]=s),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=s=>n.$store.state.mqtt["openWB/system/current_commit"]=s),title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=s=>n.$store.state.mqtt["openWB/system/current_branch_commit"]=s),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),o.updateAvailable?(c(),_(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",R,[(c(!0),h($,null,F(n.$store.state.mqtt["openWB/system/current_missing_commits"],(s,V)=>(c(),h("li",{key:V},j(s),1))),128))])]),_:1})):w("",!0),t(m,{subtype:"danger"},{default:a(()=>e[14]||(e[14]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),n.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),_(m,{key:1,subtype:"danger"},{default:a(()=>e[15]||(e[15]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),r("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(c(),h("form",P,[t(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",G,[r("div",J,[t(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=s=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[e[19]||(e[19]=i(" Neustart ")),t(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",H,[t(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=s=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[e[20]||(e[20]=i(" Ausschalten ")),t(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[18]||(e[18]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(c(),h("form",K,[t(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",M,[r("div",Q,[t(y,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=s=>o.switchBranch())},{default:a(()=>[t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[23]||(e[23]=i(" Branch und Tag wechseln ")),t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[21]||(e[21]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),t(m,{subtype:"warning"},{default:a(()=>e[22]||(e[22]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),r("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),r("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),r("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),r("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),t(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=s=>n.updateState("openWB/system/current_branch",s))},null,8,["groups","model-value"]),t(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=s=>p.selectedTag=s),title:"Tag",options:o.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):w("",!0)])}const oe=E(D,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{oe as default};
+import{l as W,ae as A,p as q,a3 as C,U as S,af as z,F as U}from"./vendor-fortawesome-41164876.js";import{C as x}from"./index-7731ba98.js";import{_ as E,u as b,k as c,l as h,A as _,N as a,B as w,x as r,D as t,y as i,q as B,J as $,K as F,z as j}from"./vendor-a21b3a62.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";W.add(A,q,C,S,z);const D={name:"OpenwbSystemView",components:{FontAwesomeIcon:U},mixins:[x],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand"],data(){return{mqttTopicsToSubscribe:["openWB/system/optionBackup","openWB/system/current_commit","openWB/system/current_branch_commit","openWB/system/current_missing_commits","openWB/system/available_branches","openWB/system/current_branch","openWB/system/version"],warningAcknowledged:!1,selectedTag:"*HEAD*"}},computed:{updateAvailable(){return this.$store.state.mqtt["openWB/system/current_branch_commit"]&&this.$store.state.mqtt["openWB/system/current_branch_commit"]!=this.$store.state.mqtt["openWB/system/current_commit"]},releaseChangeValid(){return this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]&&"tags"in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]]&&this.selectedTag in this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags}},methods:{sendSystemCommand(n,e={}){this.$emit("sendCommand",{command:n,data:e})},getBranchGroups(){const n="Release",e="Beta",u="master",v=[n,e],p=(l,d)=>l.value==d.value?0:l.value==n?-1:d.value==n?1:l.value==e?-1:d.value==e?1:l.value==u?-1:d.value==u||l.value>d.value?1:l.value<d.value?-1:0;var o=this.$store.state.mqtt["openWB/system/available_branches"],f=[{label:"Allgemein",options:[]},{label:"Alpha-Zweig",options:[]},{label:"Experimentell",options:[]}];if(o!==void 0){var m=0;for(const[l,d]of Object.entries(o))v.includes(l)?m=0:l==u?m=1:m=2,f[m].options.push({value:l,text:l+" ("+d.commit+")"});f[0].options.sort(p),f[1].options.sort(p)}return f},getBranchTagOptions(){if(!(this.$store.state.mqtt["openWB/system/current_branch"]in this.$store.state.mqtt["openWB/system/available_branches"]))return[];var n=this.$store.state.mqtt["openWB/system/available_branches"][this.$store.state.mqtt["openWB/system/current_branch"]].tags,e=[];if(n!==void 0)for(const[u,v]of Object.entries(n))e.unshift({value:u,text:v});return e},updateConfiguration(n,e){console.debug("updateConfiguration",n,e),this.updateState(n,e.value,e.object)},systemUpdate(){this.sendSystemCommand("systemUpdate",{}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})},switchBranch(){this.sendSystemCommand("systemUpdate",{branch:this.$store.state.mqtt["openWB/system/current_branch"],tag:this.selectedTag}),this.$store.commit("storeLocal",{name:"reloadRequired",value:!0})}}},T={class:"system"},L={key:1},N={name:"versionInfoForm"},R={class:"missing-commits"},Z={class:"row justify-content-center"},I={class:"col-md-4 d-flex py-1 justify-content-center"},O={class:"col-md-4 d-flex py-1 justify-content-center"},P={key:0,name:"powerForm"},G={class:"row justify-content-center"},J={class:"col-md-4 d-flex py-1 justify-content-center"},H={class:"col-md-4 d-flex py-1 justify-content-center"},K={key:1,name:"releaseChangeForm"},M={class:"row justify-content-center"},Q={class:"col-md-4 d-flex py-1 justify-content-center"};function X(n,e,u,v,p,o){const f=b("openwb-base-button-group-input"),m=b("openwb-base-alert"),l=b("openwb-base-text-input"),d=b("openwb-base-card"),g=b("font-awesome-icon"),y=b("openwb-base-click-button"),k=b("openwb-base-select-input");return c(),h("div",T,[u.installAssistantActive?w("",!0):(c(),_(m,{key:0,subtype:"danger"},{default:a(()=>[e[12]||(e[12]=r("h2",null,"Achtung!",-1)),e[13]||(e[13]=r("p",null," Vor allen Aktionen auf dieser Seite ist sicherzustellen, dass kein Ladevorgang aktiv ist! Zur Sicherheit bitte zusätzlich alle Fahrzeuge von der Ladestation / den Ladestationen abstecken! ",-1)),t(f,{modelValue:p.warningAcknowledged,"onUpdate:modelValue":e[0]||(e[0]=s=>p.warningAcknowledged=s),title:"Ich habe die Warnung verstanden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}]},null,8,["modelValue"])]),_:1})),p.warningAcknowledged||u.installAssistantActive?(c(),h("div",L,[r("form",N,[t(d,{title:"Versions-Informationen / Aktualisierung",subtype:"success",collapsible:!0,collapsed:!u.installAssistantActive},{footer:a(()=>[r("div",Z,[r("div",I,[t(y,{class:"btn-info",onButtonClicked:e[5]||(e[5]=s=>o.sendSystemCommand("systemFetchVersions"))},{default:a(()=>[e[16]||(e[16]=i(" Informationen aktualisieren ")),t(g,{"fixed-width":"",icon:["fas","download"]})]),_:1})]),r("div",O,[t(y,{class:B(o.updateAvailable?"btn-success clickable":"btn-outline-success"),disabled:!o.updateAvailable,onButtonClicked:e[6]||(e[6]=s=>o.systemUpdate())},{default:a(()=>[e[17]||(e[17]=i(" Update ")),t(g,{"fixed-width":"",icon:["fas","arrow-alt-circle-up"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[1]||(e[1]=s=>n.$store.state.mqtt["openWB/system/current_branch"]=s),title:"Entwicklungszweig",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/version"],"onUpdate:modelValue":e[2]||(e[2]=s=>n.$store.state.mqtt["openWB/system/version"]=s),title:"Bezeichnung",readonly:""},null,8,["modelValue"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_commit"],"onUpdate:modelValue":e[3]||(e[3]=s=>n.$store.state.mqtt["openWB/system/current_commit"]=s),title:"installierte Version",readonly:"",class:B(o.updateAvailable?"text-danger":"text-success")},null,8,["modelValue","class"]),t(l,{modelValue:n.$store.state.mqtt["openWB/system/current_branch_commit"],"onUpdate:modelValue":e[4]||(e[4]=s=>n.$store.state.mqtt["openWB/system/current_branch_commit"]=s),title:"aktuellste Version",readonly:""},null,8,["modelValue"]),o.updateAvailable?(c(),_(d,{key:0,title:"Änderungen",subtype:"info",collapsible:!0,collapsed:!0},{default:a(()=>[r("ul",R,[(c(!0),h($,null,F(n.$store.state.mqtt["openWB/system/current_missing_commits"],(s,V)=>(c(),h("li",{key:V},j(s),1))),128))])]),_:1})):w("",!0),t(m,{subtype:"danger"},{default:a(()=>e[14]||(e[14]=[i(" Nach einem Update wird die Ladestation direkt neu gestartet! Es werden alle eventuell vorhandenen lokalen Änderungen am Programmcode mit dem Update verworfen! ")])),_:1}),n.$store.state.mqtt["openWB/system/current_branch"]!="Release"?(c(),_(m,{key:1,subtype:"danger"},{default:a(()=>e[15]||(e[15]=[i(' Du bist nicht auf dem für den normalen Gebrauch empfohlenen Entwicklungszweig "Release". Wir empfehlen, auf diesen Zweig zu wechseln, sobald dort eine neue Version verfügbar ist.'),r("br",null,null,-1),i(" Bevor ein Update angestoßen wird, sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren. ")])),_:1})):w("",!0)]),_:1},8,["collapsed"])]),u.installAssistantActive?w("",!0):(c(),h("form",P,[t(d,{title:"Betrieb",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",G,[r("div",J,[t(y,{class:"btn-warning",onButtonClicked:e[7]||(e[7]=s=>o.sendSystemCommand("systemReboot"))},{default:a(()=>[e[19]||(e[19]=i(" Neustart ")),t(g,{"fixed-width":"",icon:["fas","undo"]})]),_:1})]),r("div",H,[t(y,{class:"btn-danger",onButtonClicked:e[8]||(e[8]=s=>o.sendSystemCommand("systemShutdown"))},{default:a(()=>[e[20]||(e[20]=i(" Ausschalten ")),t(g,{"fixed-width":"",icon:["fas","power-off"]})]),_:1})])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[18]||(e[18]=[i(" Wenn die Ladestation ausgeschaltet wird, muss sie komplett spannungsfrei geschaltet werden. Erst beim erneuten Zuschalten der Spannung fährt das System wieder hoch. ")])),_:1})]),_:1})])),u.installAssistantActive?w("",!0):(c(),h("form",K,[t(d,{title:"Entwicklungszweig",subtype:"danger",collapsible:!0,collapsed:!0},{footer:a(()=>[r("div",M,[r("div",Q,[t(y,{class:B(o.releaseChangeValid?"btn-danger clickable":"btn-outline-danger"),disabled:!o.releaseChangeValid,onButtonClicked:e[11]||(e[11]=s=>o.switchBranch())},{default:a(()=>[t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]}),e[23]||(e[23]=i(" Branch und Tag wechseln ")),t(g,{"fixed-width":"",icon:["fas","skull-crossbones"]})]),_:1},8,["class","disabled"])])])]),default:a(()=>[t(m,{subtype:"danger"},{default:a(()=>e[21]||(e[21]=[i(" Nach einem Wechsel wird die Ladestation direkt neu gestartet! Es werden alle lokalen Änderungen mit dem Wechsel verworfen! ")])),_:1}),t(m,{subtype:"warning"},{default:a(()=>e[22]||(e[22]=[i(" Bevor auf einen neuen Entwicklungszweig gewechselt wird sollte immer eine Sicherung erstellt werden! Es kann zwar wieder auf eine ältere Version gewechselt werden, jedoch ist nicht sichergestellt, dass es dabei keine Probleme gibt. Gerade wenn das Datenformat in der neuen Version angepasst wurde, wird eine ältere damit Fehler produzieren."),r("br",null,null,-1),i(' Für den normalen Betrieb wird der Zweig "Release" empfohlen. Der Softwarestand wurde ausgiebig getestet, sodass ein Fehlverhalten relativ unwahrscheinlich ist.'),r("br",null,null,-1),i(' Der "Beta" Zweig beinhaltet Vorabversionen, bei denen die Entwicklung soweit abgeschlossen ist. Die enthaltenen Anpassungen wurden rudimentär getestet, können aber durchaus noch Fehler enthalten.'),r("br",null,null,-1),i(' Die aktuelle Softwareentwicklung findet im Zweig "master" statt. Die enthaltenen Anpassungen sind teilweise noch nicht getestet und enthalten potentiell Fehler.'),r("br",null,null,-1),i(' Einträge, die mit "feature" beginnen, sind experimentelle Entwicklungszweige, die nicht für den allgemeinen Gebrauch gedacht sind. ')])),_:1}),t(k,{title:"Entwicklungszweig",groups:o.getBranchGroups(),"model-value":n.$store.state.mqtt["openWB/system/current_branch"],"onUpdate:modelValue":e[9]||(e[9]=s=>n.updateState("openWB/system/current_branch",s))},null,8,["groups","model-value"]),t(k,{modelValue:p.selectedTag,"onUpdate:modelValue":e[10]||(e[10]=s=>p.selectedTag=s),title:"Tag",options:o.getBranchTagOptions()},null,8,["modelValue","options"])]),_:1})]))])):w("",!0)])}const oe=E(D,[["render",X],["__scopeId","data-v-059847f6"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/System.vue"]]);export{oe as default};
diff --git a/web/settings/assets/TestingStore-935625ae.js b/web/settings/assets/TestingStore-5054dca6.js
similarity index 99%
rename from web/settings/assets/TestingStore-935625ae.js
rename to web/settings/assets/TestingStore-5054dca6.js
index e3fed79890..4afcc89431 100644
--- a/web/settings/assets/TestingStore-935625ae.js
+++ b/web/settings/assets/TestingStore-5054dca6.js
@@ -1 +1 @@
-import{C as U}from"./index-c79666b6.js";import{S as y}from"./OpenwbSortableList-3ce7f991.js";import{_ as E,u as s,k,l as T,x as u,D as a,N as n,y as o,z as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const z={name:"OpenwbTestingStoreView",components:{SortableList:y},mixins:[U],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},N={class:"testingStore"},O={name:"testingStoreForm"};function Z(t,e,j,D,B,J){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),d=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),w=s("openwb-base-array-input"),x=s("openwb-base-heading"),r=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return k(),T("div",N,[u("form",O,[a(i,{title:"Einfache Eingabefelder"},{default:n(()=>[a(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("text1",l))},{help:n(()=>e[26]||(e[26]=[o(" Einfacher Text ")])),_:1},8,["model-value"]),a(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text2",l))},{help:n(()=>e[27]||(e[27]=[o(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),a(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text3",l))},{help:n(()=>e[28]||(e[28]=[o(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),a(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text4",l))},{help:n(()=>e[29]||(e[29]=[o(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),a(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text5",l))},{help:n(()=>e[30]||(e[30]=[o(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),a(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text6",l))},{help:n(()=>e[31]||(e[31]=[o(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),a(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text7",l))},{help:n(()=>e[32]||(e[32]=[o(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[38]||(e[38]=u("hr",null,null,-1)),a(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("number1",l))},{help:n(()=>e[33]||(e[33]=[o(" Zahl mit Einheit ")])),_:1},8,["model-value"]),a(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number2",l))},{help:n(()=>e[34]||(e[34]=[o(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),a(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[35]||(e[35]=[o(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),u("br",null,null,-1),o(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),u("br",null,null,-1),o(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),a(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("password1",l))},{help:n(()=>e[36]||(e[36]=[o(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[39]||(e[39]=u("hr",null,null,-1)),a(f,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("textarea1",l))},{help:n(()=>e[37]||(e[37]=[o(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"Spezielle Elemente"},{default:n(()=>[a(d,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("range1",l))},{help:n(()=>e[40]||(e[40]=[o(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),a(d,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range2",l))},{help:n(()=>e[41]||(e[41]=[o(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[46]||(e[46]=u("hr",null,null,-1)),a(b,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("select1",l))},{help:n(()=>e[42]||(e[42]=[o(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),a(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select2",l))},{help:n(()=>e[43]||(e[43]=[o(" Select mit Gruppen ")])),_:1},8,["model-value"]),e[47]||(e[47]=u("hr",null,null,-1)),a(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[44]||(e[44]=[o(" Hilfetext ")])),_:1},8,["model-value"]),e[48]||(e[48]=u("hr",null,null,-1)),a(S,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[17]||(e[17]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[45]||(e[45]=[o(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"JSON Gruppe"},{default:n(()=>[a(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("json1",l))},{help:n(()=>e[49]||(e[49]=[o(" JSON Objekt ")])),_:1},8,["model-value"]),a(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[50]||(e[50]=[o(" Text im JSON Objekt ")])),_:1},8,["model-value"]),a(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[51]||(e[51]=[o(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),a(w,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("tags",l))},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),a(i,{title:"Meldungen"},{header:n(()=>e[52]||(e[52]=[u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[o(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),o(" Slot ")],-1)])),default:n(()=>[a(x,null,{help:n(()=>e[53]||(e[53]=[o(" Es sind auch Hilfetexte im #help Slot möglich. ")])),default:n(()=>[e[54]||(e[54]=o(" Das ist eine Überschrift "))]),_:1}),a(r,null,{default:n(()=>e[55]||(e[55]=[o(" Meldung ohne speziellen Subtype. ")])),_:1}),a(r,{subtype:"info"},{default:n(()=>e[56]||(e[56]=[o(" Infomeldung ")])),_:1}),a(r,{subtype:"warning"},{default:n(()=>e[57]||(e[57]=[o(" Warnmeldung ")])),_:1}),a(r,{subtype:"danger"},{default:n(()=>e[58]||(e[58]=[o(" Fehlermeldung ")])),_:1})]),_:1}),a(i,{title:"Listen"},{default:n(()=>[a($,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[22]||(e[22]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),a(V,{"form-name":"testingStoreForm",onSave:e[23]||(e[23]=l=>t.$emit("save")),onReset:e[24]||(e[24]=l=>t.$emit("reset")),onDefaults:e[25]||(e[25]=l=>t.$emit("defaults"))})])])}const M=E(z,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{M as default};
+import{C as U}from"./index-7731ba98.js";import{S as y}from"./OpenwbSortableList-3ce7f991.js";import{_ as E,u as s,k,l as T,x as u,D as a,N as n,y as o,z as v}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const z={name:"OpenwbTestingStoreView",components:{SortableList:y},mixins:[U],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:[]}}},N={class:"testingStore"},O={name:"testingStoreForm"};function Z(t,e,j,D,B,J){const p=s("openwb-base-text-input"),m=s("openwb-base-number-input"),f=s("openwb-base-textarea"),i=s("openwb-base-card"),d=s("openwb-base-range-input"),b=s("openwb-base-select-input"),g=s("openwb-base-button-group-input"),S=s("openwb-base-checkbox-input"),w=s("openwb-base-array-input"),x=s("openwb-base-heading"),r=s("openwb-base-alert"),$=s("sortable-list"),V=s("openwb-base-submit-buttons");return k(),T("div",N,[u("form",O,[a(i,{title:"Einfache Eingabefelder"},{default:n(()=>[a(p,{title:"1. Text","model-value":t.$store.state.examples.text1,"onUpdate:modelValue":e[0]||(e[0]=l=>t.updateState("text1",l))},{help:n(()=>e[26]||(e[26]=[o(" Einfacher Text ")])),_:1},8,["model-value"]),a(p,{title:"2. Text (E-Mail)",subtype:"email","model-value":t.$store.state.examples.text2,"onUpdate:modelValue":e[1]||(e[1]=l=>t.updateState("text2",l))},{help:n(()=>e[27]||(e[27]=[o(" Eingabefeld für E-Mailadressen ")])),_:1},8,["model-value"]),a(p,{title:"3. Text (Host)",subtype:"host","model-value":t.$store.state.examples.text3,"onUpdate:modelValue":e[2]||(e[2]=l=>t.updateState("text3",l))},{help:n(()=>e[28]||(e[28]=[o(" Eingabefeld für Hosts (IP oder Namen) ")])),_:1},8,["model-value"]),a(p,{title:"4. Text (URL)",subtype:"url","model-value":t.$store.state.examples.text4,"onUpdate:modelValue":e[3]||(e[3]=l=>t.updateState("text4",l))},{help:n(()=>e[29]||(e[29]=[o(" Eingabefeld für URLs ")])),_:1},8,["model-value"]),a(p,{title:"5. Text (User)",subtype:"user","model-value":t.$store.state.examples.text5,"onUpdate:modelValue":e[4]||(e[4]=l=>t.updateState("text5",l))},{help:n(()=>e[30]||(e[30]=[o(" Eingabefeld für Benutzernamen ")])),_:1},8,["model-value"]),a(p,{title:"6. Text (Time)",subtype:"time","model-value":t.$store.state.examples.text6,"onUpdate:modelValue":e[5]||(e[5]=l=>t.updateState("text6",l))},{help:n(()=>e[31]||(e[31]=[o(" Eingabefeld für Zeiten ")])),_:1},8,["model-value"]),a(p,{title:"7. Text (Date)",subtype:"date","model-value":t.$store.state.examples.text7,"onUpdate:modelValue":e[6]||(e[6]=l=>t.updateState("text7",l))},{help:n(()=>e[32]||(e[32]=[o(" Eingabefeld für ein Datum ")])),_:1},8,["model-value"]),e[38]||(e[38]=u("hr",null,null,-1)),a(m,{title:"1. Zahl",min:5,max:9,step:2,unit:"kW","model-value":t.$store.state.examples.number1,"onUpdate:modelValue":e[7]||(e[7]=l=>t.updateState("number1",l))},{help:n(()=>e[33]||(e[33]=[o(" Zahl mit Einheit ")])),_:1},8,["model-value"]),a(m,{title:"2. Zahl",min:10,max:32,step:2,"model-value":t.$store.state.examples.number2,"onUpdate:modelValue":e[8]||(e[8]=l=>t.updateState("number2",l))},{help:n(()=>e[34]||(e[34]=[o(" Eingabefeld für Zahlen ohne Einheit ")])),_:1},8,["model-value"]),a(m,{title:"3. Zahl",min:-30,max:30,step:.01,precision:2,unit:"ct/kWh","model-value":t.$store.state.examples.number3*1e5,"onUpdate:modelValue":e[9]||(e[9]=l=>t.updateState("number3",parseFloat((l/1e5).toFixed(7))))},{help:n(()=>e[35]||(e[35]=[o(" Eingabefeld für Zahlen mit Einheit und Nachkommastellen"),u("br",null,null,-1),o(' Zusätzlich zum optionalen Parameter "step" sollte immer auch "precision" gesetzt sein, um unvermeidbare Darstellungsfehler zu vermeiden.'),u("br",null,null,-1),o(" Wenn der dargestellte Wert eine andere Genauigkeit/Einheit als der Wert im Backend hat (z.B. €/Wh <-> ct/kWh), dann ist bei der Umrechnung darauf zu achten, dass es nicht erneut zu Ungenauigkeiten bei Dezimalzahlen kommt. ")])),_:1},8,["model-value"]),a(p,{title:"1. Passwort",subtype:"password","model-value":t.$store.state.examples.password1,"onUpdate:modelValue":e[10]||(e[10]=l=>t.updateState("password1",l))},{help:n(()=>e[36]||(e[36]=[o(" Das Passwort kann per Klick auf das Auge angezeigt werden. ")])),_:1},8,["model-value"]),e[39]||(e[39]=u("hr",null,null,-1)),a(f,{title:"1. Textarea",maxlength:"50","model-value":t.$store.state.examples.textarea1,"onUpdate:modelValue":e[11]||(e[11]=l=>t.updateState("textarea1",l))},{help:n(()=>e[37]||(e[37]=[o(" Textarea mit maximaler Länge von 50 Zeichen. ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"Spezielle Elemente"},{default:n(()=>[a(d,{title:"1. Range",min:6,max:32,step:1,unit:"A","model-value":t.$store.state.examples.range1,"onUpdate:modelValue":e[12]||(e[12]=l=>t.updateState("range1",l))},{help:n(()=>e[40]||(e[40]=[o(" Range ohne spezielle Labels ")])),_:1},8,["model-value"]),a(d,{title:"2. Range",min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":t.$store.state.examples.range2,"onUpdate:modelValue":e[13]||(e[13]=l=>t.updateState("range2",l))},{help:n(()=>e[41]||(e[41]=[o(" Range mit speziellen Labels ")])),_:1},8,["model-value"]),e[46]||(e[46]=u("hr",null,null,-1)),a(b,{title:"1. Select","not-selected":"Bitte auswählen",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}],"model-value":t.$store.state.examples.select1,"onUpdate:modelValue":e[14]||(e[14]=l=>t.updateState("select1",l))},{help:n(()=>e[42]||(e[42]=[o(" Select mit einfachen Optionen ")])),_:1},8,["model-value"]),a(b,{title:"2. Select",groups:[{label:"Gruppe 1 (Number)",options:[{value:1,text:"Eins"},{value:2,text:"Zwei"}]},{label:"Gruppe 2 (String)",options:[{value:"three",text:"Drei"},{value:"four",text:"Vier"}]}],"model-value":t.$store.state.examples.select2,"onUpdate:modelValue":e[15]||(e[15]=l=>t.updateState("select2",l))},{help:n(()=>e[43]||(e[43]=[o(" Select mit Gruppen ")])),_:1},8,["model-value"]),e[47]||(e[47]=u("hr",null,null,-1)),a(g,{title:"1. Button-Group",buttons:[{buttonValue:1,text:"Eins"},{buttonValue:2,text:"Zwei"}],"model-value":t.$store.state.examples.buttonGroup1,"onUpdate:modelValue":e[16]||(e[16]=l=>t.updateState("buttonGroup1",l))},{help:n(()=>e[44]||(e[44]=[o(" Hilfetext ")])),_:1},8,["model-value"]),e[48]||(e[48]=u("hr",null,null,-1)),a(S,{title:"1. Checkbox","model-value":t.$store.state.examples.checkbox1,"onUpdate:modelValue":e[17]||(e[17]=l=>t.updateState("checkbox1",l))},{help:n(()=>e[45]||(e[45]=[o(" Hilfetext ")])),_:1},8,["model-value"])]),_:1}),a(i,{title:"JSON Gruppe"},{default:n(()=>[a(p,{title:"JSON 1",subtype:"json","model-value":t.$store.state.examples.json1,"onUpdate:modelValue":e[18]||(e[18]=l=>t.updateState("json1",l))},{help:n(()=>e[49]||(e[49]=[o(" JSON Objekt ")])),_:1},8,["model-value"]),a(p,{title:"JSON 1 Text","model-value":t.$store.state.examples.json1.text,"onUpdate:modelValue":e[19]||(e[19]=l=>t.updateState("json1",l,"text"))},{help:n(()=>e[50]||(e[50]=[o(" Text im JSON Objekt ")])),_:1},8,["model-value"]),a(m,{title:"JSON 1 Zahl","model-value":t.$store.state.examples.json1.number,"onUpdate:modelValue":e[20]||(e[20]=l=>t.updateState("json1",l,"number"))},{help:n(()=>e[51]||(e[51]=[o(" Zahl im JSON Objekt ")])),_:1},8,["model-value"]),a(w,{title:"Tag Array","model-value":t.$store.state.examples.tags,"onUpdate:modelValue":e[21]||(e[21]=l=>t.updateState("tags",l))},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.tags,void 0,2)),1)]),_:1},8,["model-value"])]),_:1}),a(i,{title:"Meldungen"},{header:n(()=>e[52]||(e[52]=[u("span",{style:{"text-decoration":"underline","font-style":"italic"}},[o(" Styled "),u("span",{style:{"font-weight":"initial"}},"Header"),o(" Slot ")],-1)])),default:n(()=>[a(x,null,{help:n(()=>e[53]||(e[53]=[o(" Es sind auch Hilfetexte im #help Slot möglich. ")])),default:n(()=>[e[54]||(e[54]=o(" Das ist eine Überschrift "))]),_:1}),a(r,null,{default:n(()=>e[55]||(e[55]=[o(" Meldung ohne speziellen Subtype. ")])),_:1}),a(r,{subtype:"info"},{default:n(()=>e[56]||(e[56]=[o(" Infomeldung ")])),_:1}),a(r,{subtype:"warning"},{default:n(()=>e[57]||(e[57]=[o(" Warnmeldung ")])),_:1}),a(r,{subtype:"danger"},{default:n(()=>e[58]||(e[58]=[o(" Fehlermeldung ")])),_:1})]),_:1}),a(i,{title:"Listen"},{default:n(()=>[a($,{modelValue:t.$store.state.examples.hierarchy1,"onUpdate:modelValue":e[22]||(e[22]=l=>t.$store.state.examples.hierarchy1=l),title:"Liste 1",labels:t.$store.state.examples.hierarchy1Labels},{help:n(()=>[u("pre",null,v(JSON.stringify(t.$store.state.examples.hierarchy1,void 0,2)),1)]),_:1},8,["modelValue","labels"])]),_:1}),a(V,{"form-name":"testingStoreForm",onSave:e[23]||(e[23]=l=>t.$emit("save")),onReset:e[24]||(e[24]=l=>t.$emit("reset")),onDefaults:e[25]||(e[25]=l=>t.$emit("defaults"))})])])}const M=E(z,[["render",Z],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TestingStore.vue"]]);export{M as default};
diff --git a/web/settings/assets/TimeChargeConfig-af2bcfdc.js b/web/settings/assets/TimeChargeConfig-ab5615ad.js
similarity index 96%
rename from web/settings/assets/TimeChargeConfig-af2bcfdc.js
rename to web/settings/assets/TimeChargeConfig-ab5615ad.js
index c19e8767bd..fd944f9ef5 100644
--- a/web/settings/assets/TimeChargeConfig-af2bcfdc.js
+++ b/web/settings/assets/TimeChargeConfig-ab5615ad.js
@@ -1 +1 @@
-import{C as l}from"./index-c79666b6.js";import{_ as b,u as o,k as i,l as a,x as _,D as s,N as r,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
+import{C as l}from"./index-7731ba98.js";import{_ as b,u as o,k as i,l as a,x as _,D as s,N as r,y as m}from"./vendor-a21b3a62.js";import"./vendor-fortawesome-41164876.js";import"./vendor-bootstrap-d0c3645c.js";import"./vendor-jquery-a5dbbab1.js";import"./vendor-axios-0e6de98a.js";import"./vendor-sortablejs-3016fed8.js";const f={name:"OpenwbTimeChargeConfigView",mixins:[l],emits:["save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/general/chargemode_config/time_charging/phases_to_use"]}}},h={class:"timeChargeConfig"},c={name:"timeChargeConfigForm"},v={key:0},w={key:1};function C(t,e,$,B,k,V){const u=o("openwb-base-alert"),p=o("openwb-base-button-group-input"),g=o("openwb-base-card"),d=o("openwb-base-submit-buttons");return i(),a("div",h,[_("form",c,[s(g,{title:"Phasenumschaltung"},{default:r(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(i(),a("div",v,[s(u,{subtype:"info"},{default:r(()=>e[4]||(e[4]=[m(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(i(),a("div",w,[s(p,{title:"Anzahl Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:3,text:"Maximum"}],"model-value":t.$store.state.mqtt["openWB/general/chargemode_config/time_charging/phases_to_use"],"onUpdate:modelValue":e[0]||(e[0]=n=>t.updateState("openWB/general/chargemode_config/time_charging/phases_to_use",n))},{help:r(()=>e[5]||(e[5]=[m(' Hier kann eingestellt werden, ob Ladevorgänge im Modus "Zeitladen" mit nur einer Phase oder dem möglichen Maximum in Abhängigkeit der "Ladepunkt"- und "Fahrzeug"-Einstellungen durchgeführt werden. Voraussetzung ist die verbaute Umschaltmöglichkeit zwischen 1- und 3-phasig (s.g. 1p3p). ')])),_:1},8,["model-value"])]))]),_:1}),s(d,{"form-name":"timeChargeConfigForm",onSave:e[1]||(e[1]=n=>t.$emit("save")),onReset:e[2]||(e[2]=n=>t.$emit("reset")),onDefaults:e[3]||(e[3]=n=>t.$emit("defaults"))})])])}const q=b(f,[["render",C],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/TimeChargeConfig.vue"]]);export{q as default};
diff --git a/web/settings/assets/VehicleConfig-9a14b719.js b/web/settings/assets/VehicleConfig-24e197dd.js
similarity index 95%
rename from web/settings/assets/VehicleConfig-9a14b719.js
rename to web/settings/assets/VehicleConfig-24e197dd.js
index 6eb85e2fd5..c62f76eeb9 100644
--- a/web/settings/assets/VehicleConfig-9a14b719.js
+++ b/web/settings/assets/VehicleConfig-24e197dd.js
@@ -1 +1 @@
-import{l as $,d as H,a0 as j,A as J,a9 as G,aa as Q,z as X,P as Y,ac as K,R as ee,ab as te,ad as ne,F as ae,I as le}from"./vendor-fortawesome-41164876.js";import{_ as k,C as ie}from"./index-c79666b6.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as q,u as V,k as d,l as g,A as p,N as l,y as i,z as C,D as a,x as h,a0 as re,a1 as de,J as P,B as m,K as E,a2 as F,q as x,P as N}from"./vendor-a21b3a62.js";const ue={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=q(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[se]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,b,B,f,s){const W=V("openwb-base-alert"),v=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(v,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=q(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",props:{vehicleId:{type:Number,required:!0},vehicle:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>k(()=>import("./vehicle-227d6e52.js"),["assets/vehicle-227d6e52.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-e9771037.js"),["assets/vehicle-e9771037.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-2c8076de.js"),["assets/vehicle-2c8076de.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-6bfa0331.js"),["assets/vehicle-6bfa0331.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-79035ef3.js"),["assets/vehicle-79035ef3.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-98331362.js"),["assets/vehicle-98331362.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-b5d373a2.js"),["assets/vehicle-b5d373a2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-2f0703d4.js"),["assets/vehicle-2f0703d4.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-84631beb.js"),["assets/vehicle-84631beb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-746a309e.js"),["assets/vehicle-746a309e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-5d3ddd96.js"),["assets/vehicle-5d3ddd96.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-02c16ede.js"),["assets/vehicle-02c16ede.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-a7bdb9f9.js"),["assets/vehicle-a7bdb9f9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarteq/vehicle.vue":()=>k(()=>import("./vehicle-39d84738.js"),["assets/vehicle-39d84738.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-75a99dd5.js"),["assets/vehicle-75a99dd5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-5310b356.js"),["assets/vehicle-5310b356.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-axios-0e6de98a.js","assets/index-c79666b6.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-04196ba5.js"),["assets/vehicle-04196ba5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-66d2565b.js"),["assets/vehicle-66d2565b.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-c79666b6.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,b,B,f,s){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(de(s.myComponent),{"vehicle-id":b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":e[0]||(e[0]=v=>s.updateConfiguration(v))},null,40,["vehicle-id","vehicle"]))],64)}const fe=q(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ne);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;t.push({value:b,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;t.push({value:b,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&(console.info("request removal of vehicle '"+t+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}}))},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(b=>b.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&(console.info("request removal of ev template '"+t+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}}))},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&(console.info("request removal of charge template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}}))},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation(),console.info("requesting new charge template schedule plan...");let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+t+"' schedule plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}}))},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation(),console.info("requesting new charge template time charging plan...");let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+t+"' time charging plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}}))}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},ye={key:0},Ae={key:0},Ee={key:3},Be={key:0},Fe={key:1},qe={key:0},Me={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Ie={key:3},Re={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:5};function et(t,e,b,B,f,s){const W=V("openwb-base-modal-dialog"),v=V("font-awesome-icon"),T=V("openwb-base-avatar"),A=V("openwb-base-alert"),z=V("openwb-base-text-input"),M=V("openwb-base-select-input"),O=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),y=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>s.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>s.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>s.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[4]||(e[4]=o=>s.removeChargeTemplateTimeChargingPlan(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zeitladen Zeitplan "'+C(s.getChargeTemplateTimeChargingPlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateTimeChargingPlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),h("div",we,[h("form",ke,[a(y,{subtype:"info",collapsible:!0,collapsed:t.$route.params.section!="vehicle"},{header:l(()=>[a(v,{"fixed-width":"",icon:["fas","car"]}),e[8]||(e[8]=i(" Fahrzeuge "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addVehicle},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Ve,[a(A,{subtype:"info"},{default:l(()=>e[9]||(e[9]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Ce,[(d(!0),g(P,null,E(s.vehicleIndexes,o=>(d(),p(y,{key:o,title:s.getVehicleName(o),collapsible:!0,collapsed:!(t.$route.params.section=="vehicle"&&parseInt(t.$route.params.section_index)==o),subtype:"info"},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/name"],disabled:o===0,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/name",r)},F({_:2},[o===0?{name:"help",fn:l(()=>[e[10]||(e[10]=i(" Das Standard-Fahrzeug kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),o!==0?(d(),p(z,{key:0,title:"Fahrzeughersteller ","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].manufacturer,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"manufacturer")},{help:l(()=>[...e[11]||(e[11]=[i(" Optional: zusätzliche Information für den Systembericht. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),o!==0?(d(),p(z,{key:1,title:"Fahrzeugmodell","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/info"].model,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/info",r,"model")},{help:l(()=>[...e[12]||(e[12]=[i(" Optional: zusätzliche Information für den Systembericht."),h("br",null,null,-1),i(" Nach Möglichkeit auch Angabe des Baujahres, da es durchaus beim Verhalten des Fahrzeugs Unterschiede geben kann. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(A,{subtype:"info"},{default:l(()=>[...e[13]||(e[13]=[i(" Ein anderes Fahrzeug-Profil wird erst NACH dem Abstecken übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])]),_:1}),a(M,{title:"Fahrzeug-Profil",options:s.evTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/ev_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/ev_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),a(M,{title:"Lade-Profil",options:s.chargeTemplateList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/charge_template"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/charge_template",r)},null,8,["options","model-value","onUpdate:modelValue"]),e[24]||(e[24]=h("hr",null,null,-1)),t.$store.state.mqtt["openWB/optional/rfid/active"]===!0&&!b.installAssistantActive?(d(),g("div",Se,[a(O,{title:"Zugeordnete ID-Tags","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/tag_id"],"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/tag_id",r)},null,8,["model-value","onUpdate:modelValue"]),a(A,{subtype:"info"},{default:l(()=>[e[14]||(e[14]=i(" Die hier eingetragenen ID-Tags dienen ausschließlich der Fahrzeugzuordnung.")),e[15]||(e[15]=h("br",null,null,-1)),h("span",{innerHTML:t.$store.state.text.rfidWiki},null,8,ze)]),_:1}),e[16]||(e[16]=h("hr",null,null,-1))])):m("",!0),a(M,{class:"mb-2",title:"SoC-Modul des Fahrzeugs",options:s.socModuleList,"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type,"onUpdate:modelValue":r=>s.updateSelectedSocModule(o,r)},{help:l(()=>[...e[17]||(e[17]=[i(" Mit einem SoC-Modul kann der Ladestand des Fahrzeugs ermittelt und geregelt werden. Z.B. lassen sich unabhängig vom Fahrzeug bestimmte SoC-Werte einstellen, um den Fahrzeugakku zu schonen. Aktuell werden die SoC-Werte mittels der App-Zugangsdaten aus dem Herstellerserver des Fahrzeuges ausgelesen. Zukünftig soll auch eine direkte SoC-Auslesung aus dem Fahrzeug möglich werden (openWB Pro)."),h("br",null,null,-1),i(" Die SoC-Abfrage erfolgt automatisch beim Anstecken des Fahrzeuges und zusätzlich über einstellbare Abfrageintervalle während des Ladens und Nichtladens. Die Abfrage kann auch manuell durch Klick auf den Reload-Pfeil auf der Hauptseite ausgelöst werden."),h("br",null,null,-1),i(" Wenn eine Abfrage fehlschlägt, wird noch drei weitere Male im Abstand von 5 Minuten versucht, den SoC abzufragen. Wenn dies nicht erfolgreich ist, wird der SoC auf 0% gesetzt um zu vermeiden, dass ein Auto beim SoC-basierten Laden nicht geladen wird. Die Abfrage erfolgt dann wieder in den oben genannten Intervallen."),h("br",null,null,-1),i(" Da aktuell die SoC-Abfragen über Onlineserver der Fahrzeughersteller laufen, ist infolge möglicher Umstellungen/Wartungen keine 100%-ig sichere SoC-Abfrage garantiert. Auch kann es zu SoC-Abweichungen infolge von zeitlicher Verzögerungen kommen. Hilfestellung erfolgt primär im openWB-Forum. ")])]),_:2},1032,["options","model-value","onUpdate:modelValue"]),t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"].type?(d(),g("div",Ue,[a(_,{title:"SoC direkt aus Fahrzeug auslesen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].use_soc_from_cp,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"use_soc_from_cp")},{help:l(()=>[...e[18]||(e[18]=[i(" Wenn Ladepunkt und Fahrzeug das direkte Auslesen des SoCs über das Ladekabel unterstützen, wird der SoC nach dem Anstecken aus dem Fahrzeug ausgelesen und während der Ladung berechnet. Das direkte Auslesen des SoC aus dem Fahrzeug ist aktuell nur mit einer openWB Pro möglich. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{help:l(()=>[...e[19]||(e[19]=[i(" Einige Hersteller begrenzen die möglichen Abfragen. Sobald ein gewisses Limit in einem Zeitraum überschritten wird, werden weitere Anfragen blockiert. Die Zeitintervalle sollten daher nicht zu klein gewählt werden. ")])]),default:l(()=>[e[20]||(e[20]=i(" Aktualisierung der Fahrzeugdaten "))]),_:1}),a(w,{title:"Während der Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_charging")},{help:l(()=>[...e[21]||(e[21]=[i(" Der Ladestand des Fahrzeugs (SoC) wird bei einem laufenden Ladevorgang in dem hier eingestellten Intervall in Minuten abgefragt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Ohne laufende Ladung",unit:"Min.",min:1,required:"","model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_interval_not_charging/60,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r*60,"request_interval_not_charging")},{help:l(()=>[...e[22]||(e[22]=[i(" Der Ladestand des Fahrzeugs (SoC) wird in dem hier eingestellten Intervall in Minuten abgefragt, falls kein Ladevorgang aktiv ist. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Nur aktualisieren wenn angesteckt",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/general_config"].request_only_plugged,"onUpdate:modelValue":r=>t.updateState("openWB/vehicle/"+o+"/soc_module/general_config",r,"request_only_plugged")},{help:l(()=>[...e[23]||(e[23]=[i(' Wird hier "Ja" ausgewählt, dann wird der Ladestand des Fahrzeugs nur abgefragt, wenn das Ladekabel angesteckt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(I,{"vehicle-id":o,vehicle:t.$store.state.mqtt["openWB/vehicle/"+o+"/soc_module/config"],"onUpdate:configuration":r=>s.updateConfiguration("openWB/vehicle/"+o+"/soc_module/config",r)},null,8,["vehicle-id","vehicle","onUpdate:configuration"])])):m("",!0)]),_:2},[o!==0?{name:"actions",fn:l(r=>[r.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:n=>s.removeVehicleModal(o,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}:void 0]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),e[81]||(e[81]=h("hr",{class:"border-secondary"},null,-1)),a(L,null,{default:l(()=>e[25]||(e[25]=[i("Profile")])),_:1}),a(y,{collapsible:!0,collapsed:!0},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","car"],transform:"shrink-8"})]),_:1}),e[26]||(e[26]=i(" Fahrzeug-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addEvTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Te,[a(A,{subtype:"info"},{default:l(()=>e[27]||(e[27]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",We,[a(A,{subtype:"info"},{default:l(()=>e[28]||(e[28]=[i(" Ein anderes Fahrzeug-Profil wird erst "),h("span",{class:"text-uppercase font-weight-bold"}," nach dem Abstecken ",-1),i(" übernommen, da es sonst durch die Änderung bestimmter Einstellungen im laufenden Ladevorgang zu Widersprüchen kommen kann. ")])),_:1}),(d(!0),g(P,null,E(s.evTemplates,(o,r)=>(d(),p(y,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!0},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[29]||(e[29]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[30]||(e[30]=[i(" Angaben zur Batterie ")])]),_:1}),a(w,{title:"Kapazität der Batterie",unit:"kWh",min:1,step:1,required:"","model-value":o.battery_capacity/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"battery_capacity")},{help:l(()=>[...e[31]||(e[31]=[i(" Angabe der Netto-Kapazität der Fahrzeugbatterie. Dient zur Berechnung des manuellen SoC und der geladenen Reichweite. Die Netto-Kapazität unterscheidet sich meist von den Angaben der Fahrzeughersteller. So besitzt ein Tesla Model S 90 z. B. nur ca. 83kWh und nicht die durch die Typenbezeichnung suggerierten 90kWh. Andere Hersteller begrenzen die nutzbare Kapazität absichtlich, um eine höhere Lebensdauer der Akkus zu erreichen. Gängig sind eine Drosselung auf 90% der angegebenen Brutto-Kapazität. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Le,[a(w,{title:"Wirkungsgrad der Ladeelektronik",unit:"%",min:1,max:100,required:"","model-value":o.efficiency,"onUpdate:modelValue":n=>t.updateState(r,n,"efficiency")},{help:l(()=>[...e[32]||(e[32]=[i(" Durch Verluste in der Ladeelektronik (z. B. Umwandlung Wechselspannung in Gleichspannung) gelangt nicht die komplette Energie, welche durch den Zähler in der Wallbox gemessen wird, in den Akku des Fahrzeugs. Der anzugebende Wert liegt bei gängigen Fahrzeugen im Bereich 90-95%. Eine Ausnahme stellt der Zoe dar, dessen Chameleon-Lader je nach Modellversion und freigegebener Leistung der Wallbox teilweise nur auf ca. 50% kommt."),h("br",null,null,-1),i(" Liegen die Angaben der Wallbox und des Fahrzeugs nach der Ladung mehrere Prozent auseinander, dann kann mit dieser Einstellung eine Feinabstimmung erfolgen: "),h("br",null,null,-1),i(" SoC an der Wallbox zu hoch: Wirkungsgrad um ein paar Prozent reduzieren"),h("br",null,null,-1),i(" SoC an der Wallbox zu gering: Wirkungsgrad um ein paar Prozent erhöhen"),h("br",null,null,-1)])]),_:2},1032,["model-value","onUpdate:modelValue"])])),a(w,{title:"Durchschnittsverbrauch",unit:"kWh / 100km",min:1,step:.1,required:"","model-value":o.average_consump/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"average_consump")},null,8,["model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),g("div",Pe,[a(L,null,{default:l(()=>[...e[33]||(e[33]=[i(" Angaben zur Ladeleistung (DC) ")])]),_:1}),a(w,{title:"Mindestleistung",min:5,unit:"kW","model-value":t.ac_current2dc_power(o.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_min_current")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Maximalleistung",unit:"kW","model-value":t.ac_current2dc_power(o.dc_max_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"dc_max_current")},null,8,["model-value","onUpdate:modelValue"])])):m("",!0),a(L,null,{default:l(()=>[e[34]||(e[34]=i(" Angaben zum Ladestrom ")),s.dcChargingEnabled===!0?(d(),g("span",ye," (AC) ")):m("",!0)]),_:1}),a(S,{title:"Mindeststrom",min:6,max:16,step:1,unit:"A","model-value":o.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"min_current")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom bei einer Phase",min:6,max:32,step:1,unit:"A","model-value":o.max_current_single_phase,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_single_phase")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Maximalstrom mehrere Phasen",min:6,max:32,step:1,unit:"A","model-value":o.max_current_multi_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_current_multi_phases")},null,8,["model-value","onUpdate:modelValue"]),a(w,{title:"Erlaubte Stromabweichung",step:.1,unit:"A","model-value":o.nominal_difference,"onUpdate:modelValue":n=>t.updateState(r,n,"nominal_difference")},{help:l(()=>[...e[35]||(e[35]=[i(" In manchen Lademodi, z.B. bei der automatischen Phasenumschaltung, wird geprüft, ob das Fahrzeug mit der vorgegebenen Stromstärke lädt. Manche Fahrzeuge laden nicht exakt mit der vorgegebenen Stromstärke. Die erlaubte Abweichung kann hier eingestellt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(L,null,{default:l(()=>[e[36]||(e[36]=i(" Angaben zur Handhabung von Phasen ")),s.dcChargingEnabled===!0?(d(),g("span",Ae," (AC) ")):m("",!0)]),_:1}),a(_,{title:"Unterstützte Phasen",buttons:[{buttonValue:1,text:"1"},{buttonValue:2,text:"2"},{buttonValue:3,text:"3"}],"model-value":o.max_phases,"onUpdate:modelValue":n=>t.updateState(r,n,"max_phases")},{help:l(()=>[...e[37]||(e[37]=[i(" Anzahl der Phasen, die der Fahrzeuglader (s.g. OBC - OnboardCharger) bereitstellt. Plugin-Hybride haben meist nur eine Phase, reine E-Autos meist 2 bis 3 Phasen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"CP-Unterbrechung",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.control_pilot_interruption,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption")},{help:l(()=>[...e[38]||(e[38]=[i(' Erläuterung siehe "Konfiguration - Ladepunkte" -> Hardware-Optionen ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),o.control_pilot_interruption?(d(),p(w,{key:2,title:"Dauer der CP-Unterbrechung",min:4,step:1,unit:"s","model-value":o.control_pilot_interruption_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"control_pilot_interruption_duration")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Phasenumschaltung blockieren",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_phase_switch,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_phase_switch")},{help:l(()=>[...e[39]||(e[39]=[i(' Erläuterung zu 1p3p siehe "Ladeeinstellungen" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Ladung aktiv halten",buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":o.prevent_charge_stop,"onUpdate:modelValue":n=>t.updateState(r,n,"prevent_charge_stop")},{help:l(()=>[...e[40]||(e[40]=[i(" Der Ladevorgang wird in den Lademodi PV- und Zielladen nach Ladebeginn nicht unterbrochen, selbst wenn nicht mehr genug Überschuss vorhanden ist. Diese Einstellung sollte bei Fahrzeugen aktiviert werden, die nach einer Ladungsunterbrechung keine Ladung mehr starten. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Pause bei Phasenumschaltung",unit:"s",min:2,step:1,required:"","model-value":o.phase_switch_pause,"onUpdate:modelValue":n=>t.updateState(r,n,"phase_switch_pause")},null,8,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",Ee,[a(w,{title:"Mindestzeit zwischen Umschaltungen",unit:"s",min:2,step:1,required:"","model-value":o.keep_charge_active_duration,"onUpdate:modelValue":n=>t.updateState(r,n,"keep_charge_active_duration")},{help:l(()=>[...e[41]||(e[41]=[i(" Manche Fahrzeuge benötigen nach der Umschaltung einige Zeit, bis sie mit der vorgegebenen Phasenzahl laden. In dieser Zeit wird keine neue Phasenumschaltung angestoßen. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])]))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[t.$store.state.mqtt["openWB/general/extern"]===!1&&!n.collapsed?(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeEvTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),key:"0"}]),1032,["title"]))),128))]))]),_:1}),a(y,{collapsible:!0,collapsed:t.$route.params.section!="charge_template"},{header:l(()=>[a(Z,{"fixed-width":"",class:"fa-lg"},{default:l(()=>[a(v,{"fixed-width":"",icon:["far","file"]}),a(v,{"fixed-width":"",icon:["fas","plug"],transform:"shrink-8"})]),_:1}),e[42]||(e[42]=i(" Lade-Profile "))]),actions:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!1?(d(),p(T,{key:0,class:"bg-success clickable",onClick:s.addChargeTemplate},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:1},8,["onClick"])):m("",!0)]),default:l(()=>[t.$store.state.mqtt["openWB/general/extern"]===!0?(d(),g("div",Be,[a(A,{subtype:"info"},{default:l(()=>e[43]||(e[43]=[i(' Diese Einstellungen sind nicht verfügbar, solange sich diese openWB im Steuerungsmodus "secondary" befindet. ')])),_:1})])):(d(),g("div",Fe,[(d(!0),g(P,null,E(s.chargeTemplates,(o,r)=>(d(),p(y,{key:r,title:o.name?o.name:r,collapsible:!0,collapsed:!(t.$route.params.section=="charge_template"&&parseInt(t.$route.params.section_index)==s.getChargeTemplateIndex(r))},F({default:l(()=>[a(z,{title:"Bezeichnung","model-value":o.name,disabled:r.endsWith("/0"),"onUpdate:modelValue":n=>t.updateState(r,n,"name")},F({_:2},[r.endsWith("/0")?{name:"help",fn:l(()=>[e[44]||(e[44]=i(" Das Standard-Profil kann nicht umbenannt werden. "))]),key:"0"}:void 0]),1032,["model-value","disabled","onUpdate:modelValue"]),a(L,null,{default:l(()=>[...e[45]||(e[45]=[i(" Allgemeine Optionen ")])]),_:1}),a(_,{title:"Aktiver Lademodus",buttons:[{buttonValue:"instant_charging",text:"Sofortladen",class:"btn-outline-danger"},{buttonValue:"pv_charging",text:"PV",class:"btn-outline-success"},{buttonValue:"scheduled_charging",text:"Zielladen",class:"btn-outline-primary"},{buttonValue:"standby",text:"Standby",class:"btn-outline-secondary"},{buttonValue:"stop",text:"Stop",class:"btn-outline-dark"}],"model-value":o.chargemode.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.selected")},{help:l(()=>[...e[46]||(e[46]=[i(" Diese Einstellung entspricht dem gewählten Lademodus auf der Hauptseite und ist aktiv, wenn ein zugehöriges Fahrzeug angesteckt ist."),h("br",null,null,-1),i(" Die zur Verfügung stehende Leistung wird intern anhand folgender Prioritätenliste auf die Fahrzeuge bzw. Ladepunkte verteilt:"),h("br",null,null,-1),h("ol",null,[h("li",null," Zielladen (Sofortladen) mit Priorität "),h("li",null,"Zielladen (Sofortladen)"),h("li",null,"Zeitladen mit Priorität"),h("li",null,"Zeitladen"),h("li",null,"Sofortladen mit Priorität"),h("li",null,"Sofortladen"),h("li",null,"PV (Min-Anteil) mit Priorität"),h("li",null,"PV (Min-Anteil)"),h("li",null,"Zielladen (PV) mit Priorität"),h("li",null,"Zielladen (PV)"),h("li",null,"PV (PV-Anteil) mit Priorität"),h("li",null,"PV (PV-Anteil)")],-1)])]),_:2},1032,["model-value","onUpdate:modelValue"]),b.installAssistantActive?m("",!0):(d(),g("div",qe,[a(_,{title:"Priorität",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.prio,"onUpdate:modelValue":n=>t.updateState(r,n,"prio")},{help:l(()=>[...e[47]||(e[47]=[i(" Die Ladefreigabe mit dem jeweils eingestellten Mindeststrom erfolgt für alle Fahrzeuge, soweit die verfügbare Leistung ausreicht. Fahrzeuge mit Priorität werden bevorzugt mit mehr Leistung geladen, falls verfügbar. Erst wenn alle priorisierten Fahrzeuge die maximale Ladeleistung bekommen und noch zusätzlicher Überschuss vorhanden ist, wird auch für Fahrzeuge ohne Priorität mehr Leistung freigegeben. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitladen",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.time_charging.active,"onUpdate:modelValue":n=>t.updateState(r,n,"time_charging.active")},{help:l(()=>[...e[48]||(e[48]=[i(' Der Lademodus Zeitladen kann parallel zu einem der anderen Lademodi aktiviert werden. Die Auswahl des Lademodus, der in der Regelung genutzt wird, erfolgt anhand der Übersicht in der Hilfe bei "Aktiver Lademodus". Wenn kein Zeitplan aktiv ist oder das Limit des Zeitplans erreicht wurde, wird der Lademodus verwendet, der bei "Aktiver Lademodus" ausgewählt ist. ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Standard nach Abstecken",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.load_default,"onUpdate:modelValue":n=>t.updateState(r,n,"load_default")},{help:l(()=>[...e[49]||(e[49]=[i(" Falls diese Option aktiviert ist, wird der betroffene Ladepunkt nach dem Abstecken auf das Standard Fahrzeug zurückgesetzt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(_,{title:"Strompreisbasiert Laden",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.et.active,"onUpdate:modelValue":n=>t.updateState(r,n,"et.active")},null,8,["model-value","onUpdate:modelValue"]),o.et.active==!0?(d(),g("div",Me,[!t.$store.state.mqtt["openWB/optional/et/provider"]||!t.$store.state.mqtt["openWB/optional/et/provider"].type?(d(),g("div",De,[a(A,{subtype:"danger"},{default:l(()=>[...e[50]||(e[50]=[i(" Bitte in den übergreifenden Ladeeinstellungen einen Strompreis-Anbieter konfigurieren. ")])]),_:1})])):m("",!0),a(w,{title:"Preisgrenze für Zeit- & Sofortladen",min:"-80",max:"80",step:"0.01",precision:2,unit:"ct/kWh","model-value":o.et.max_price*1e5,"onUpdate:modelValue":n=>t.updateState(r,parseFloat((n/1e5).toFixed(7)),"et.max_price")},{help:l(()=>[...e[51]||(e[51]=[i(" Für Zielladen werden die günstigsten Stunden ermittelt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])])):m("",!0),e[52]||(e[52]=h("hr",null,null,-1))])),a(L,null,{default:l(()=>[...e[53]||(e[53]=[i("Sofortladen")])]),_:1}),a(S,{title:"Soll-Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.instant_charging.current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:1,title:"Soll-Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.instant_charging.dc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.instant_charging.dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Begrenzung",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":o.chargemode.instant_charging.limit.selected,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.selected")},{help:l(()=>[...e[54]||(e[54]=[i(" Sofortladen kann ohne Fahrzeug-SoC-Begrenzung (Aus), mit Begrenzung des Fahrzeug-SoC (SoC) bei konfiguriertem SoC-Auslesemodul oder mittels Vorgabe eine gewünschten Energiemenge in kWh (Energie) genutzt werden. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"SoC-Limit für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":o.chargemode.instant_charging.limit.soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.instant_charging.limit.soc")},{help:l(()=>[...e[55]||(e[55]=[i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(w,{title:"Energie-Limit",unit:"kWh",min:1,step:1,"model-value":o.chargemode.instant_charging.limit.amount/1e3,"onUpdate:modelValue":n=>t.updateState(r,n*1e3,"chargemode.instant_charging.limit.amount")},{help:l(()=>[...e[56]||(e[56]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus oder nach dem Anstecken, wenn Sofortladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[79]||(e[79]=h("hr",null,null,-1)),a(L,null,{default:l(()=>[...e[57]||(e[57]=[i("PV-Laden")])]),_:1}),a(S,{title:"Minimaler Dauerstrom"+(s.dcChargingEnabled?" (AC)":""),min:0,max:11,step:1,unit:"A",labels:[{label:"Aus",value:0},{label:6,value:6},{label:7,value:7},{label:8,value:8},{label:9,value:9},{label:10,value:10},{label:11,value:11},{label:12,value:12},{label:13,value:13},{label:14,value:14},{label:15,value:15},{label:16,value:16}],"model-value":o.chargemode.pv_charging.min_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_current")},{help:l(()=>[...e[58]||(e[58]=[i(' Hier kann eine Stromstärke eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Stromwert empfohlen wird. Diese Einstellung entspricht weitestgehend dem Lademodus "Min+PV" der Version 1.x. ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:2,title:"Minimale Dauerleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_current")},{help:l(()=>[...e[59]||(e[59]=[i(" Hier kann eine Leistung eingestellt werden, mit dem unabhängig vom vorhandenen Überschuss durchgeladen wird. Hierdurch wird z.B. an Tagen mit häufigem Sonne/Wolken-Wechsel oder mit nur wenig PV-Ertrag ein Laden ohne Unterbrechung ermöglicht. Folglich kann auch Netzbezug für das Fahrzeugladen entstehen, weshalb der niedrigste Leistungswert empfohlen wird. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(S,{title:"SoC-Limit für das Fahrzeug",min:0,max:20,step:1,unit:"%",labels:[{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95},{label:100,value:100},{label:"Aus",value:101}],"model-value":o.chargemode.pv_charging.max_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.max_soc")},{help:l(()=>[...e[60]||(e[60]=[i(' Bei der Einstellung "100%" wird die Ladung sofort mit Erreichen der 100% beendet. Dadurch erfolgt KEIN Balancing der Batteriezellen. Ist dies gewünscht (sollte ab und an durchgeführt werden), muss hier "Aus" gewählt werden (Schieberegler ganz nach rechts stellen), um die Ladung MIT Balancing bis zur Beendigung durch das Fahrzeug weiterlaufen zu lassen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC für das Fahrzeug",min:0,max:19,step:1,unit:"%",labels:[{label:"Aus",value:0},{label:5,value:5},{label:10,value:10},{label:15,value:15},{label:20,value:20},{label:25,value:25},{label:30,value:30},{label:35,value:35},{label:40,value:40},{label:45,value:45},{label:50,value:50},{label:55,value:55},{label:60,value:60},{label:65,value:65},{label:70,value:70},{label:75,value:75},{label:80,value:80},{label:85,value:85},{label:90,value:90},{label:95,value:95}],"model-value":o.chargemode.pv_charging.min_soc,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc")},{help:l(()=>[...e[61]||(e[61]=[i(' Liegt der Fahrzeug-Ladestand (SoC) unter dem hier eingestellten Wert, dann wird bis zum Erreichen dieses Wertes mit dem eingestellten "Mindest-SoC-Strom" geladen. Dies dient der Sicherstellung eines "Mindest-SoC" - z.B. für eine immer abzudeckende Fahrzeugreichweite - auch wenn kein oder zu wenig Überschuss verfügbar ist (=> Laden mit anteilig Netzstrom). Nach dem Erreichen des "Mindest-SoC" wird bei verfügbarem Überschuss geladen.'),h("br",null,null,-1),i(' Um die Fahrzeug-SoC-Begrenzung nutzen zu können, muss ein SoC-Modul für das jeweilige Fahrzeug eingerichtet sein (siehe "Konfiguration" -> "Fahrzeuge" -> "SoC-Modul"). ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Mindest-SoC-Strom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":o.chargemode.pv_charging.min_soc_current,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.min_soc_current")},{help:l(()=>[...e[62]||(e[62]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit dem hier festgelegten "Mindest-SoC-Strom" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:3,title:"Mindest-SoC-Leistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(o.chargemode.pv_charging.dc_min_soc_current),"onUpdate:modelValue":n=>t.updateState(r,t.dc_power2ac_current(n),"chargemode.pv_charging.dc_min_soc_current")},{help:l(()=>[...e[63]||(e[63]=[i(' Wird der oben eingestellte "Mindest-SoC" des Fahrzeuges unterschritten, dann wird unabhängig vom Überschuss ein Ladevorgang mit der hier festgelegten "Mindest-SoC-Leistung" initiiert (ggf. mit anteilig Netzbezug). ')])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Einspeisegrenze beachten",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":o.chargemode.pv_charging.feed_in_limit,"onUpdate:modelValue":n=>t.updateState(r,n,"chargemode.pv_charging.feed_in_limit")},{help:l(()=>[...e[64]||(e[64]=[i(' Erläuterung siehe "Ladeeinstellungen" -> "PV-Laden" -> "Regelparameter" -> "Regelpunkt Einspeisegrenze" ')])]),_:2},1032,["model-value","onUpdate:modelValue"]),e[80]||(e[80]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateSchedulePlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[65]||(e[65]=[i(' Im Lademodus "Zielladen" wird der Ladestrom so angepasst, dass das Fahrzeug zum angegebenen Zeitpunkt den eingestellten SoC bzw. die einzuladende Energiemenge erreicht. Anhand des vorgegebenen Ladestroms wird der Zeitpunkt berechnet, an dem die Ladung spätestens starten muss.'),h("br",null,null,-1),i(' Ist der berechnete Zeitpunkt des Ladestarts noch nicht erreicht, wird mit Überschuss geladen. Auch nach Erreichen des Ziel-SoCs wird mit Überschuss geladen, solange bis das "SoC-Limit für das Fahrzeug" erreicht wird.'),h("br",null,null,-1),i(" Kann der Ziel-SoC bzw. die Energiemenge NICHT erreicht werden, z.B. weil das Auto zu spät angesteckt wurde oder das Lastmanagement eingegriffen hat, wird bis 20 Minuten nach dem angegebenen Termin mit der Maximalstromstärke geladen. Danach wird der Termin verworfen und mit Überschuss geladen. ")])]),default:l(()=>[e[66]||(e[66]=i(" Zielladen "))]),_:2},1024),(d(!0),g(P,null,E(s.getChargeTemplateScheduledChargingPlans(r),(n,c)=>(d(),p(y,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",xe,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc_scheduled)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ne,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time)+" ",1),n.frequency.selected=="once"?(d(),g("span",Oe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once)),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Ie,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Re,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,Ze)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateSchedulePlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitpunkt aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Ziel-Uhrzeit",subtype:"time","model-value":n.time,"onUpdate:modelValue":u=>t.updateState(c,u,"time")},{help:l(()=>[...e[67]||(e[67]=[i(" Hier ist die gewünschte Uhrzeit einzustellen, zu welcher das Fahrzeug den gewünschten SoC bzw. die zu ladende Energiemenge BEREITS ERREICHT haben soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},{help:l(()=>[...e[68]||(e[68]=[i(" Mit dieser Stromstärke wird der Zeitpunkt berechnet, wann die Ladung mit Netzbezug gestartet werden muss. Wird der Ziel-SoC nicht zum angegebenen Termin erreicht, weil z.B. das Auto erst später angesteckt wurde, wird auch mit einer höheren Stromstärke geladen. Um etwas Puffer zu haben, empfiehlt es sich, etwas weniger als die Maximalstromstärke des Fahrzeugs zu wählen. ")])]),_:2},1032,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[69]||(e[69]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Fahrzeug-SoC zum Zielzeitpunkt",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_scheduled,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_scheduled")},{help:l(()=>[...e[70]||(e[70]=[i(" SoC, der zum angegebenen Zeitpunkt erreicht werden soll (Ziel-SoC). ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="soc"?(d(),p(S,{key:2,title:"Fahrzeug-SoC mit Überschuss",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc_limit,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc_limit")},{help:l(()=>[...e[71]||(e[71]=[i(" Nach Erreichen des Ziel-SoCs wird mit Überschuss weiter geladen, bis das SoC-Limit erreicht wird. Sobald das SoC-Limit erreicht wurde, findet keine Ladung mehr mit Überschuss statt! ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:3,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[72]||(e[72]=[i(" Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zielladen schon ausgewählt ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Datum",subtype:"date","model-value":n.frequency.once,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",$e,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128)),b.installAssistantActive?m("",!0):(d(),g("div",He,[e[75]||(e[75]=h("hr",null,null,-1)),a(L,null,{actions:l(()=>[a(T,{class:"bg-success clickable",onClick:n=>s.addChargeTemplateTimeChargingPlan(r,n)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","plus"]})]),_:2},1032,["onClick"])]),help:l(()=>[...e[73]||(e[73]=[i(" Mit einem Zeitplan kann ein klar abgegrenzter Zeitbereich zum Fahrzeugladen definiert werden. Dies wird häufig genutzt, um einem Fahrzeug kurz vor der Abfahrt Strom anzubieten, damit dessen Vorklimatisierung nicht aus dem Fahrzeugakku, sondern aus der openWB bezogen wird (Enteisung, Vorwärmung, Abkühlung). Nicht von der Vorklimatisierung benötigter Strom erhöht dabei den Fahrzeug-SoC. Um das Stromnetz am Morgen nicht unnötig zu strapazieren, sollte eine moderate Stromvorgabe und ein beschränkter Zeitbereich vorgegeben werden (z.B. max. 10A; 30min - in Übereinstimmung mit den Fahrzeug-App-Vorklimatisierungsvorgaben). ")])]),default:l(()=>[e[74]||(e[74]=i(" Laden nach Zeitplan "))]),_:2},1024)])),(d(!0),g(P,null,E(s.getChargeTemplateTimeChargingPlans(r),(n,c)=>(d(),p(y,{key:c,title:n.name,collapsible:!0,collapsed:!0},{actions:l(u=>[u.collapsed==!0?(d(),g("span",{key:0,class:x(["subheader pill clickable",n.active?"bg-success":"bg-danger"]),onClick:N(U=>t.updateState(c,!n.active,"active"),["stop"])},[n.limit.selected=="soc"?(d(),g("span",Je,[a(v,{"fixed-width":"",icon:["fas","car-battery"]}),i(" "+C(n.limit.soc)+"% ",1)])):m("",!0),n.limit.selected=="amount"?(d(),g("span",Ge,[a(v,{"fixed-width":"",icon:["fas","bolt"]}),i(" "+C(n.limit.amount/1e3)+"kWh ",1)])):m("",!0),a(v,{"fixed-width":"",icon:["fas","clock"]}),i(" "+C(n.time[0])+" - "+C(n.time[1])+" ",1),n.frequency.selected=="once"?(d(),g("span",Qe,[a(v,{"fixed-width":"",icon:["fas","calendar-day"]}),i(" "+C(t.formatDate(n.frequency.once[0])==t.formatDate(n.frequency.once[1])?t.formatDate(n.frequency.once[0]):t.formatDate(n.frequency.once[0])+" - "+t.formatDate(n.frequency.once[1])),1)])):m("",!0),n.frequency.selected=="daily"?(d(),g("span",Xe,[a(v,{"fixed-width":"",icon:["fas","calendar-week"]})])):m("",!0),n.frequency.selected=="weekly"?(d(),g("span",Ye,[a(v,{"fixed-width":"",icon:["fas","calendar-alt"]})])):m("",!0)],10,je)):m("",!0),u.collapsed==!1?(d(),p(T,{key:1,class:"bg-danger clickable",onClick:U=>s.removeChargeTemplateTimeChargingPlanModal(r,c,U)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"])):m("",!0)]),default:l(()=>[a(z,{title:"Bezeichnung","model-value":n.name,"onUpdate:modelValue":u=>t.updateState(c,u,"name")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Zeitplan aktiv",buttons:[{buttonValue:!1,text:"Nein",class:"btn-outline-danger"},{buttonValue:!0,text:"Ja",class:"btn-outline-success"}],"model-value":n.active,"onUpdate:modelValue":u=>t.updateState(c,u,"active")},null,8,["model-value","onUpdate:modelValue"]),a(S,{title:"Ladestrom"+(s.dcChargingEnabled?" (AC)":""),min:6,max:32,step:1,unit:"A","model-value":n.current,"onUpdate:modelValue":u=>t.updateState(c,u,"current")},null,8,["title","model-value","onUpdate:modelValue"]),s.dcChargingEnabled===!0?(d(),p(w,{key:0,title:"Ladeleistung (DC)",unit:"kW",min:0,"model-value":t.ac_current2dc_power(n.dc_current),"onUpdate:modelValue":u=>t.updateState(c,t.dc_power2ac_current(u),"dc_current")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),a(_,{title:"Ziel",buttons:[{buttonValue:"none",text:"Aus"},{buttonValue:"soc",text:"Fahrzeug-SoC"},{buttonValue:"amount",text:"Energie"}],"model-value":n.limit.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.selected")},{help:l(()=>[...e[76]||(e[76]=[i(" Bestimmt die Art der Grenze für den Ladevorgang. ")])]),_:2},1032,["model-value","onUpdate:modelValue"]),n.limit.selected=="soc"?(d(),p(S,{key:1,title:"Ziel-SoC für das Fahrzeug",min:5,max:100,step:5,unit:"%","model-value":n.limit.soc,"onUpdate:modelValue":u=>t.updateState(c,u,"limit.soc")},{help:l(()=>[...e[77]||(e[77]=[i(" Ladestand des Akku (State of Charge, SoC), bis zu welchem maximal geladen werden soll. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),n.limit.selected=="amount"?(d(),p(w,{key:2,title:"Ziel-Energie",unit:"kWh",min:1,step:.5,"model-value":n.limit.amount/1e3,"onUpdate:modelValue":u=>t.updateState(c,u*1e3,"limit.amount")},{help:l(()=>[...e[78]||(e[78]=[i(" Maximal zu ladende Energie innerhalb des Zeitfensters. Eignet sich immer dann wenn kein SoC zur Verfügung steht. Die geladene Energiemenge wird beim Wechsel des Lademodus, Wechsel des Plans oder nach dem Anstecken, wenn Zeitladen schon aktiv ist, neu gezählt. ")])]),_:2},1032,["model-value","onUpdate:modelValue"])):m("",!0),a(z,{title:"Zeitpunkt des Ladebeginns",subtype:"time","model-value":n.time[0],"onUpdate:modelValue":u=>t.updateState(c,u,"time.0")},null,8,["model-value","onUpdate:modelValue"]),a(z,{title:"Zeitpunkt des Ladeendes",subtype:"time","model-value":n.time[1],"onUpdate:modelValue":u=>t.updateState(c,u,"time.1")},null,8,["model-value","onUpdate:modelValue"]),a(_,{title:"Wiederholungen",buttons:[{buttonValue:"once",text:"Einmalig",class:"btn-outline-info"},{buttonValue:"daily",text:"Täglich",class:"btn-outline-info"},{buttonValue:"weekly",text:"Wöchentlich",class:"btn-outline-info"}],"model-value":n.frequency.selected,"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.selected")},null,8,["model-value","onUpdate:modelValue"]),n.frequency.selected=="once"?(d(),p(z,{key:3,title:"Gültig ab",subtype:"date","model-value":n.frequency.once[0],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.0")},null,8,["model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="once"?(d(),p(z,{key:4,title:"Gültig bis",subtype:"date",min:n.frequency.once[0],"model-value":n.frequency.once[1],"onUpdate:modelValue":u=>t.updateState(c,u,"frequency.once.1")},null,8,["min","model-value","onUpdate:modelValue"])):m("",!0),n.frequency.selected=="weekly"?(d(),g("div",Ke,[(d(!0),g(P,null,E(t.weekdays,(u,U)=>(d(),p(_,{key:U,title:u,buttons:[{buttonValue:!1,text:"Aus",class:"btn-outline-danger"},{buttonValue:!0,text:"An",class:"btn-outline-success"}],"model-value":n.frequency.weekly[U],"onUpdate:modelValue":D=>t.updateState(c,D,"frequency.weekly."+U)},null,8,["title","model-value","onUpdate:modelValue"]))),128))])):m("",!0)]),_:2},1032,["title"]))),128))]),_:2},[r.endsWith("/0")?void 0:{name:"actions",fn:l(n=>[n.collapsed?m("",!0):(d(),p(T,{key:0,class:"bg-danger clickable",onClick:c=>s.removeChargeTemplateModal(r,c)},{default:l(()=>[a(v,{"fixed-width":"",icon:["fas","trash"]})]),_:2},1032,["onClick"]))]),key:"0"}]),1032,["title","collapsed"]))),128))]))]),_:1},8,["collapsed"]),a(R,{"form-name":"vehicleConfigForm",onSave:e[5]||(e[5]=o=>t.$emit("save")),onReset:e[6]||(e[6]=o=>t.$emit("reset")),onDefaults:e[7]||(e[7]=o=>t.$emit("defaults"))})])])],64)}const tt=q(_e,[["render",et],["__scopeId","data-v-d7193cf0"],["__file","/opt/openWB-dev/openwb-ui-settings/src/views/VehicleConfig.vue"]]),ot=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{se as V,tt as a,ot as b};
+import{l as $,d as H,a0 as j,A as J,a9 as G,aa as Q,z as X,P as Y,ac as K,R as ee,ab as te,ad as ne,F as ae,I as le}from"./vendor-fortawesome-41164876.js";import{_ as k,C as ie}from"./index-7731ba98.js";import{_ as oe}from"./dynamic-import-helper-be004503.js";import{_ as q,u as V,k as d,l as g,A as p,N as l,y as i,z as C,D as a,x as h,a0 as re,a1 as de,J as P,B as m,K as E,a2 as F,q as x,P as N}from"./vendor-a21b3a62.js";const ue={props:{vehicleId:{required:!0,type:Number},vehicle:{required:!0,type:Object}},emits:["update:configuration"],methods:{updateConfiguration(t,e=void 0){this.$emit("update:configuration",{value:t,object:e})}}},se=q(ue,[["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/VehicleConfigMixin.vue"]]),me={name:"VehicleConfigFallback",mixins:[se]},ge={class:"vehicle-fallback"},he={key:1};function ce(t,e,b,B,f,s){const W=V("openwb-base-alert"),v=V("openwb-base-textarea");return d(),g("div",ge,[Object.keys(t.vehicle.configuration).length==0?(d(),p(W,{key:0,subtype:"info"},{default:l(()=>[i(' Der Fahrzeug-Typ "'+C(t.vehicle.type)+'" bietet keine Einstellungen. ',1)]),_:1})):(d(),g("div",he,[a(W,{subtype:"warning"},{default:l(()=>[i(' Es wurde keine Konfigurationsseite für den Fahrzeug-Typ "'+C(t.vehicle.type)+'" gefunden. Die Einstellungen können als JSON direkt bearbeitet werden. ',1)]),_:1}),a(v,{title:"Konfiguration",subtype:"json","model-value":t.vehicle.configuration,"onUpdate:modelValue":e[0]||(e[0]=T=>t.updateConfiguration(T,"configuration"))},{help:l(()=>e[1]||(e[1]=[i(" Bitte prüfen Sie, ob die Eingaben richtig interpretiert werden. ")])),_:1},8,["model-value"]),a(W,{subtype:"info"},{default:l(()=>[h("pre",null,C(JSON.stringify(t.vehicle.configuration,void 0,2)),1)]),_:1})]))])}const pe=q(me,[["render",ce],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleConfigFallback.vue"]]),be={name:"OpenwbVehicleProxy",props:{vehicleId:{type:Number,required:!0},vehicle:{type:Object,required:!0}},emits:["update:configuration"],computed:{myComponent(){return console.debug(`loading vehicle: ${this.vehicle.type}`),re({loader:()=>oe(Object.assign({"./bmw/vehicle.vue":()=>k(()=>import("./vehicle-7e597941.js"),["assets/vehicle-7e597941.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./bmwbc/vehicle.vue":()=>k(()=>import("./vehicle-da0e449c.js"),["assets/vehicle-da0e449c.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evcc/vehicle.vue":()=>k(()=>import("./vehicle-ef7baff9.js"),["assets/vehicle-ef7baff9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./evnotify/vehicle.vue":()=>k(()=>import("./vehicle-bea8d3ab.js"),["assets/vehicle-bea8d3ab.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./http/vehicle.vue":()=>k(()=>import("./vehicle-0d6f89c9.js"),["assets/vehicle-0d6f89c9.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./kia/vehicle.vue":()=>k(()=>import("./vehicle-a85dcf53.js"),["assets/vehicle-a85dcf53.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./manual/vehicle.vue":()=>k(()=>import("./vehicle-80a82187.js"),["assets/vehicle-80a82187.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mercedeseq/vehicle.vue":()=>k(()=>import("./vehicle-aa5faddc.js"),["assets/vehicle-aa5faddc.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./mqtt/vehicle.vue":()=>k(()=>import("./vehicle-96729542.js"),["assets/vehicle-96729542.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./ovms/vehicle.vue":()=>k(()=>import("./vehicle-26433560.js"),["assets/vehicle-26433560.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./psa/vehicle.vue":()=>k(()=>import("./vehicle-b6bb5ae5.js"),["assets/vehicle-b6bb5ae5.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./renault/vehicle.vue":()=>k(()=>import("./vehicle-6b3503e2.js"),["assets/vehicle-6b3503e2.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./skodaconnect/vehicle.vue":()=>k(()=>import("./vehicle-22e7da9e.js"),["assets/vehicle-22e7da9e.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarteq/vehicle.vue":()=>k(()=>import("./vehicle-d4731dba.js"),["assets/vehicle-d4731dba.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./smarthello/vehicle.vue":()=>k(()=>import("./vehicle-5db558eb.js"),["assets/vehicle-5db558eb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tesla/vehicle.vue":()=>k(()=>import("./vehicle-1df80acb.js"),["assets/vehicle-1df80acb.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-axios-0e6de98a.js","assets/index-7731ba98.js","assets/vendor-fortawesome-41164876.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./tronity/vehicle.vue":()=>k(()=>import("./vehicle-5b6f9103.js"),["assets/vehicle-5b6f9103.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"]),"./vwid/vehicle.vue":()=>k(()=>import("./vehicle-86ec0def.js"),["assets/vehicle-86ec0def.js","assets/vendor-a21b3a62.js","assets/vendor-sortablejs-3016fed8.js","assets/vendor-aab9f734.css","assets/vendor-fortawesome-41164876.js","assets/index-7731ba98.js","assets/vendor-bootstrap-d0c3645c.js","assets/vendor-jquery-a5dbbab1.js","assets/vendor-bootstrap-c4951098.css","assets/vendor-axios-0e6de98a.js","assets/index-b3227821.css","assets/dynamic-import-helper-be004503.js"])}),`./${this.vehicle.type}/vehicle.vue`),errorComponent:pe})}},methods:{updateConfiguration(t){this.$emit("update:configuration",t)}}};function ve(t,e,b,B,f,s){const W=V("openwb-base-heading");return d(),g(P,null,[a(W,null,{default:l(()=>[i(' Einstellungen für SoC-Modul "'+C(b.vehicle.name)+'" ',1)]),_:1}),(d(),p(de(s.myComponent),{"vehicle-id":b.vehicleId,vehicle:b.vehicle,"onUpdate:configuration":e[0]||(e[0]=v=>s.updateConfiguration(v))},null,40,["vehicle-id","vehicle"]))],64)}const fe=q(be,[["render",ve],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/vehicles/OpenwbVehicleProxy.vue"]]);$.add(H,j,J,G,Q,X,Y,K,ee,te,ne);const _e={name:"OpenwbVehicleConfigView",components:{FontAwesomeIcon:ae,FontAwesomeLayers:le,OpenwbVehicleProxy:fe},mixins:[ie],props:{installAssistantActive:{type:Boolean,required:!1,default:!1}},emits:["sendCommand","save","reset","defaults"],data(){return{mqttTopicsToSubscribe:["openWB/general/extern","openWB/optional/dc_charging","openWB/optional/et/provider","openWB/optional/rfid/active","openWB/vehicle/template/ev_template/+","openWB/vehicle/template/charge_template/+","openWB/vehicle/template/charge_template/+/chargemode/scheduled_charging/plans/+","openWB/vehicle/template/charge_template/+/time_charging/plans/+","openWB/vehicle/+/name","openWB/vehicle/+/info","openWB/vehicle/+/charge_template","openWB/vehicle/+/ev_template","openWB/vehicle/+/tag_id","openWB/system/configurable/soc_modules","openWB/vehicle/+/soc_module/general_config","openWB/vehicle/+/soc_module/config"],showVehicleModal:!1,modalVehicleIndex:void 0,showEvTemplateModal:!1,modalEvTemplateIndex:void 0,showChargeTemplateModal:!1,modalChargeTemplateIndex:void 0,showChargeTemplateSchedulePlanModal:!1,modalChargeTemplateSchedulePlanIndex:void 0,showChargeTemplateTimeChargingPlanModal:!1,modalChargeTemplateTimeChargingPlanIndex:void 0}},computed:{dcChargingEnabled:{get(){return this.$store.state.mqtt["openWB/optional/dc_charging"]}},vehicleIndexes:{get(){return this.getWildcardIndexList("openWB/vehicle/+/name")}},evTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/ev_template/+")}},evTemplateList:{get(){let t=[];return Object.keys(this.evTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+b].name;t.push({value:b,text:B})}),t}},chargeTemplates:{get(){return this.getWildcardTopics("openWB/vehicle/template/charge_template/+")}},chargeTemplateList:{get(){let t=[];return Object.keys(this.chargeTemplates).forEach(e=>{let b=parseInt(e.match(/([0-9]+)$/g)[0]),B=this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+b].name;t.push({value:b,text:B})}),t}},socModuleList:{get(){return this.$store.state.mqtt["openWB/system/configurable/soc_modules"]}}},methods:{getChargeTemplateScheduledChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/chargemode/scheduled_charging/plans/+")},getChargeTemplateTimeChargingPlans(t){let e=t.match(/([^/]+)$/)[0];return this.getWildcardTopics("openWB/vehicle/template/charge_template/"+e+"/time_charging/plans/+")},addVehicle(t){t.stopPropagation(),console.info("requesting new vehicle..."),this.$emit("sendCommand",{command:"addVehicle",data:{}})},removeVehicleModal(t,e){e.stopPropagation(),this.modalVehicleIndex=t,this.showVehicleModal=!0},removeVehicle(t,e){this.showVehicleModal=!1,e=="confirm"&&(console.info("request removal of vehicle '"+t+"'"),this.$emit("sendCommand",{command:"removeVehicle",data:{id:t}}))},getVehicleName(t){return this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]?this.$store.state.mqtt["openWB/vehicle/"+t+"/name"]:"Fahrzeug "+t},getSocDefaultConfiguration(t){const e=this.socModuleList.find(b=>b.value==t);return Object.prototype.hasOwnProperty.call(e,"defaults")?{...JSON.parse(JSON.stringify(e.defaults))}:(console.warn("no default configuration found for soc type!",t),{})},updateSelectedSocModule(t,e){this.updateState("openWB/vehicle/"+t+"/soc_module/config",e,"type"),this.updateState("openWB/vehicle/"+t+"/soc_module/config",this.getSocDefaultConfiguration(e))},updateConfiguration(t,e){console.debug("updateConfiguration",t,e),this.updateState(t,e.value,e.object)},addEvTemplate(t){t.stopPropagation(),console.info("requesting new ev template..."),this.$emit("sendCommand",{command:"addEvTemplate",data:{}})},removeEvTemplateModal(t,e){e.stopPropagation(),this.modalEvTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.showEvTemplateModal=!0},removeEvTemplate(t,e){this.showEvTemplateModal=!1,e=="confirm"&&(console.info("request removal of ev template '"+t+"'"),this.$emit("sendCommand",{command:"removeEvTemplate",data:{id:t}}))},getEvTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/ev_template/"+t].name:"Fahrzeug-Profil "+t},addChargeTemplate(t){t.stopPropagation(),console.info("requesting new charge template..."),this.$emit("sendCommand",{command:"addChargeTemplate",data:{}})},getChargeTemplateIndex(t){return parseInt(t.match(/([^/]+)$/)[0])},removeChargeTemplateModal(t,e){e.stopPropagation(),this.modalChargeTemplateIndex=this.getChargeTemplateIndex(t),this.showChargeTemplateModal=!0},removeChargeTemplate(t,e){this.showChargeTemplateModal=!1,e=="confirm"&&(console.info("request removal of charge template '"+t+"'"),this.$emit("sendCommand",{command:"removeChargeTemplate",data:{id:t}}))},getChargeTemplateName(t){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t].name:"Lade-Profil "+t},getChargeTemplateSchedulePlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/chargemode/scheduled_charging/plans/"+e].name:"Zielladen Zeitplan "+t+"/"+e},addChargeTemplateSchedulePlan(t,e){e.stopPropagation(),console.info("requesting new charge template schedule plan...");let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateSchedulePlan",data:{template:b}})},removeChargeTemplateSchedulePlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateSchedulePlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateSchedulePlanModal=!0},removeChargeTemplateSchedulePlan(t,e,b){this.showChargeTemplateSchedulePlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+t+"' schedule plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateSchedulePlan",data:{template:t,plan:e}}))},getChargeTemplateTimeChargingPlanName(t,e){return this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e]?this.$store.state.mqtt["openWB/vehicle/template/charge_template/"+t+"/time_charging/plans/"+e].name:"Zeitladen Zeitplan "+t+"/"+e},addChargeTemplateTimeChargingPlan(t,e){e.stopPropagation(),console.info("requesting new charge template time charging plan...");let b=parseInt(t.match(/([^/]+)$/)[0]);this.$emit("sendCommand",{command:"addChargeTemplateTimeChargingPlan",data:{template:b}})},removeChargeTemplateTimeChargingPlanModal(t,e,b){b.stopPropagation(),this.modalChargeTemplateIndex=parseInt(t.match(/([^/]+)$/)[0]),this.modalChargeTemplateTimeChargingPlanIndex=parseInt(e.match(/([^/]+)$/)[0]),this.showChargeTemplateTimeChargingPlanModal=!0},removeChargeTemplateTimeChargingPlan(t,e,b){this.showChargeTemplateTimeChargingPlanModal=!1,b=="confirm"&&(console.info("request removal of charge template '"+t+"' time charging plan '"+e+"'"),this.$emit("sendCommand",{command:"removeChargeTemplateTimeChargingPlan",data:{template:t,plan:e}}))}}},we={class:"vehicleConfig"},ke={name:"vehicleConfigForm"},Ve={key:0},Ce={key:1},Se={key:2},ze=["innerHTML"],Ue={key:3},Te={key:0},We={key:1},Le={key:0},Pe={key:1},ye={key:0},Ae={key:0},Ee={key:3},Be={key:0},Fe={key:1},qe={key:0},Me={key:0},De={key:0},Ze=["onClick"],xe={key:0},Ne={key:1},Oe={key:2},Ie={key:3},Re={key:4},$e={key:5},He={key:4},je=["onClick"],Je={key:0},Ge={key:1},Qe={key:2},Xe={key:3},Ye={key:4},Ke={key:5};function et(t,e,b,B,f,s){const W=V("openwb-base-modal-dialog"),v=V("font-awesome-icon"),T=V("openwb-base-avatar"),A=V("openwb-base-alert"),z=V("openwb-base-text-input"),M=V("openwb-base-select-input"),O=V("openwb-base-array-input"),_=V("openwb-base-button-group-input"),L=V("openwb-base-heading"),w=V("openwb-base-number-input"),I=V("openwb-vehicle-proxy"),y=V("openwb-base-card"),Z=V("font-awesome-layers"),S=V("openwb-base-range-input"),R=V("openwb-base-submit-buttons");return d(),g(P,null,[a(W,{show:f.showVehicleModal,title:"Fahrzeug löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[0]||(e[0]=o=>s.removeVehicle(f.modalVehicleIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug "'+C(s.getVehicleName(f.modalVehicleIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showEvTemplateModal,title:"Fahrzeug-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[1]||(e[1]=o=>s.removeEvTemplate(f.modalEvTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Fahrzeug-Profil "'+C(s.getEvTemplateName(f.modalEvTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateModal,title:"Lade-Profil löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[2]||(e[2]=o=>s.removeChargeTemplate(f.modalChargeTemplateIndex,o))},{default:l(()=>[i(' Wollen Sie das Lade-Profil "'+C(s.getChargeTemplateName(f.modalChargeTemplateIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateSchedulePlanModal,title:"Zielladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confirm",subtype:"danger"}],onModalResult:e[3]||(e[3]=o=>s.removeChargeTemplateSchedulePlan(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex,o))},{default:l(()=>[i(' Wollen Sie den Zielladen Zeitplan "'+C(s.getChargeTemplateSchedulePlanName(f.modalChargeTemplateIndex,f.modalChargeTemplateSchedulePlanIndex))+'" wirklich entfernen? Dieser Vorgang kann nicht rückgängig gemacht werden! ',1)]),_:1},8,["show"]),a(W,{show:f.showChargeTemplateTimeChargingPlanModal,title:"Zeitladen Zeitplan löschen",subtype:"danger",buttons:[{text:"Löschen",event:"confi